專(zhuān)利名稱(chēng):轉(zhuǎn)發(fā)裝置與方法以及微處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明有關(guān)于一種微處理器,特別是有關(guān)于將數(shù)據(jù)由先前 的儲(chǔ)存指令轉(zhuǎn)發(fā)至之后的載入指令。
背景技術(shù):
計(jì)算機(jī)程序經(jīng)常使用儲(chǔ)存指令(store instruction)與載入 指令(load instruction )。儲(chǔ)存指令將數(shù)據(jù)由處理器的暫存器移 動(dòng)至存儲(chǔ)器,而載入指令將數(shù)據(jù)由存儲(chǔ)器移動(dòng)至處理器的暫存 器。微處理器頻繁地執(zhí)行指令流,其中, 一或多個(gè)儲(chǔ)存指令處 于一個(gè)載入指令之前,該載入指令的數(shù)據(jù)所處的存儲(chǔ)器位置與 該一或多個(gè)在前的儲(chǔ)存指令相同。在此情況下,為了正確地執(zhí) 行程序,微處理器必須確保載入指令能接收由在前且最近的儲(chǔ) 存指令(the newest preceding store instruction)所產(chǎn)生的"f諸存 數(shù)據(jù)。完成正確程序執(zhí)行的一個(gè)方法是載入指令暫停(stall), 直到儲(chǔ)存指令已將數(shù)據(jù)寫(xiě)入至存儲(chǔ)器(例如系統(tǒng)存儲(chǔ)器或快取 存儲(chǔ)器)。然而,這種解決方法并不具有非常高的效率。因此, 在近代的微處理器中, 一旦儲(chǔ)存數(shù)據(jù)有效(available),并且載入 指令準(zhǔn)備好接收此儲(chǔ)存數(shù)據(jù)時(shí),微處理器將儲(chǔ)存數(shù)據(jù)由儲(chǔ)存指 令所歸屬(reside )的管線階級(jí)(pipeline stage )轉(zhuǎn)移(transfer) 至載入指令所歸屬的管線階級(jí)。這 一 般稱(chēng)為儲(chǔ)存轉(zhuǎn)發(fā)操作(s t o r e forward operation)、 儲(chǔ)存轉(zhuǎn)發(fā)(store forwarding)、 或者是儲(chǔ)存至 載入轉(zhuǎn)發(fā)(store-to-load forwarding)。
為了偵測(cè)是否需要將儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至載入指令,微處理器 必須比較載入存儲(chǔ)器地址與儲(chǔ)存存儲(chǔ)器地址,以察看他們是否 相符。最后,微處理器需要比較載入的實(shí)體地址與儲(chǔ)存的實(shí)體地址。然而,為了避免串行化(serialize)此過(guò)程且避免增加管 線階級(jí),近代的樣t處理器使用虛擬的地址以并行的(in parallel) 執(zhí)行此比較操作,并同時(shí)將虛擬地址轉(zhuǎn)變?yōu)閷?shí)體地址。微處理 器接著執(zhí)行實(shí)體地址的比較操作,以證明儲(chǔ)存轉(zhuǎn)發(fā)為正確的, 或者判斷此轉(zhuǎn)發(fā)為不正確的并校正此錯(cuò)誤。
此外,由于完整的(full)虛擬地址的比較操作會(huì)消耗大量時(shí) 間(也消耗功率與芯片面積)且可能影響微處理器操作時(shí)的最 大時(shí)脈頻率,因此,近代的微處理器傾向只比較一部分的虛擬 地址,而不是比4交完整的虛擬地址。
執(zhí)行儲(chǔ)存轉(zhuǎn)發(fā)的微處理器范例為Intel Pentium 4處理器。根 據(jù)Intel Pentium 4處理器比較載入地址與4交先前4諸存的^f諸存地 址,且同時(shí)由載入操作來(lái)存取L1數(shù)據(jù)快取存儲(chǔ)器。Intel說(shuō)明此 轉(zhuǎn)發(fā)機(jī)制在速度方面最佳化,使得其具有與快取存儲(chǔ)器查表相 同的延遲,且為了符合延遲需求,處理器僅以部分的載入地址 與儲(chǔ)存地址來(lái)執(zhí)行比較操作,而不是比較完整的地址。參閱 "The Microarchitecture of the Intel Pentium 4 Processor on 90nm Technology", Intel Technology Journal, Vol. 8, Issue 1, February 18, 2004, ISSN 1535-864X, pp. 4-5。 Intel另說(shuō)明"假使 對(duì) 一 地址進(jìn)行儲(chǔ)存操作之后跟隨對(duì)相同地址的載入操作時(shí),此 載入操作將不會(huì)繼續(xù)進(jìn)行,直到儲(chǔ)存數(shù)據(jù)為有效的。假使儲(chǔ)存 操作之后跟隨著載入操作且他們的地址以4Kbyte的倍數(shù)彼此相 異時(shí),則暫停載入操作,直到儲(chǔ)存操作完成"。參閱"Aliasing Cases in the Pentium M, Intel Core Solo, Intel Core Duo and Intel Core 2 Duo Processor", Intel 64 and IA-32 Architectures Optimization Reference Manual, November 2007, Order Number: 248966-016, pp. 3-62 to 3-63。 Intel提供編碼規(guī)則給語(yǔ)言組合者、 編譯者、以及使用編碼程序設(shè)計(jì)者使用,以避免此地址失真情況下影響效能。因此,可推論P(yáng)entium 4在部分的地址比較操作 下,只使用低于且包括地址位ll的地址位。
只比較特定較低地址位的結(jié)果具有 一 個(gè)值得注意的地方, 那就是微處理器(例如Pentium4)可能會(huì)把轉(zhuǎn)發(fā)的非正確數(shù)據(jù) 儲(chǔ)存至載入指令,且其增加了微處理器必須校正此錯(cuò)誤的可能 性,而這造成了負(fù)面的效能影響。因此,微處理器需要一種方 法來(lái)更精確的預(yù)測(cè)其是否應(yīng)儲(chǔ)存轉(zhuǎn)發(fā)數(shù)據(jù)。
發(fā)明內(nèi)容
本發(fā)明提供一種轉(zhuǎn)發(fā)裝置,用以減少在微處理器內(nèi)非正確 地將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令的可能性,且儲(chǔ)存指令較 先前于載入指令。此轉(zhuǎn)發(fā)裝置包括雜湊產(chǎn)生器,用以對(duì)J個(gè)地址 位執(zhí)行雜湊函數(shù),以產(chǎn)生K個(gè)雜湊位。J個(gè)地址位是由載入指令 或儲(chǔ)存指令所指定的存儲(chǔ)器位置的地址的多個(gè)位,其中,J為大
于1的整數(shù),K為大于0的整數(shù)。此轉(zhuǎn)發(fā)裝置還包括比較器。當(dāng) 由載入指令所指定的L個(gè)地址位匹配于由儲(chǔ)存指令所指定的對(duì) 應(yīng)的L個(gè)地址位,且載入指令的K個(gè)雜湊位匹配于儲(chǔ)存指令的對(duì) 應(yīng)的K個(gè)雜湊位時(shí),比較器輸出第一預(yù)設(shè)布爾數(shù)值,否則,比 較器輸出一第二預(yù)設(shè)布爾數(shù)值,其中L為大于O的整數(shù)。此轉(zhuǎn)發(fā) 裝置也包括轉(zhuǎn)發(fā)邏輯單元,耦接比較器。當(dāng)比較器輸出第一預(yù) 設(shè)布爾數(shù)值時(shí),轉(zhuǎn)發(fā)邏輯單元將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指 令,且當(dāng)比較器輸出第二預(yù)設(shè)布爾數(shù)值時(shí),轉(zhuǎn)發(fā)邏輯單元不將 數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令。
在另一樣態(tài)中,本發(fā)明提供一種轉(zhuǎn)發(fā)方法,用以減少在微 處理器內(nèi)非正確地將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令的可能 性,且儲(chǔ)存指令較先前于載入指令。此轉(zhuǎn)發(fā)方法包括通過(guò)執(zhí)行 雜湊函數(shù)的雜湊產(chǎn)生器,來(lái)對(duì)J個(gè)地址位進(jìn)行雜湊以產(chǎn)生K個(gè)雜湊位。J個(gè)地址位是由載入指令或儲(chǔ)存指令所指定的存儲(chǔ)器位置
的地址的多個(gè)位,其中,J為大于l的整數(shù),K為大于0的整數(shù)。 此轉(zhuǎn)發(fā)方法也包括當(dāng)由載入指令所指定的L個(gè)地址位匹配于由 儲(chǔ)存指令所指定的對(duì)應(yīng)的L個(gè)地址位,且載入指令的K個(gè)雜湊位 匹配于儲(chǔ)存指令的對(duì)應(yīng)的K個(gè)雜湊位時(shí),通過(guò)比較器輸出第一 預(yù)設(shè)布爾數(shù)值,否則,輸出第二預(yù)設(shè)布爾數(shù)值,其中,L為大 于0的整數(shù)。此轉(zhuǎn)發(fā)方法更包括當(dāng)比較器輸出第 一 預(yù)設(shè)布爾數(shù)值 時(shí),通過(guò)耦接比較器的轉(zhuǎn)發(fā)邏輯單元來(lái)將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā) 至載入指令,且當(dāng)比較器輸出第二預(yù)設(shè)布爾數(shù)值時(shí),不將數(shù)據(jù) 由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令。
在另一樣態(tài)中,本發(fā)明提供一種微處理器,其包括一第一 雜湊位產(chǎn)生器、 一第二雜湊位產(chǎn)生器、 一擴(kuò)增地址比較器以及 一數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單元。第一雜湊位產(chǎn)生器用以自 一儲(chǔ)存指令的 一儲(chǔ)存虛擬地址的一第二地址欄位產(chǎn)生多個(gè)第一雜湊位,其中, 每一該第一雜湊位由一布爾邏輯電路來(lái)產(chǎn)生,所述第一雜湊位 中至少 一位非相同于該第二地址欄位中 一位,其中該儲(chǔ)存指令 包括該儲(chǔ)存虛擬地址與 一 儲(chǔ)存數(shù)據(jù),該儲(chǔ)存虛擬地址包括 一 第 一地址欄位與該第二地址欄位,所述第一地址欄位與第二地址 欄位包括多個(gè)二進(jìn)位地址位,且所述第 一地址欄位與第二地址 欄位為彼此互斥(mutually exclusive)。第二雜湊位產(chǎn)生器用以自 一載入指令的一載入虛擬地址的一第四地址欄位產(chǎn)生多個(gè)第二 雜湊位,其中,每一該第二雜湊位由一布爾邏輯電路來(lái)產(chǎn)生, 所述第二雜湊位中至少一位非相同于該第四地址欄位中 一位, 其中該載入指令包括該載入虛擬地址,該載入虛擬地址包4舌一 第三地址欄位與該第四地址欄位,所述第三地址欄位與第四地 址欄位包4舌多個(gè)二進(jìn)位地址位,且所述第三地址欄位與第四地 址欄位彼此互斥。擴(kuò)增地址比較器耦接上述第一雜湊位產(chǎn)生器與第二雜湊位產(chǎn)生器。當(dāng)一擴(kuò)增儲(chǔ)存地址相同于一擴(kuò)增載入地 址時(shí),用以產(chǎn)生一匹配信號(hào)的真值,其中,該擴(kuò)增儲(chǔ)存地址為
該第 一 地址欄位與所述第 一 雜湊位的串接(concatenation),且該 擴(kuò)增載入地址為該第三地址欄位與所述第二雜湊位的串接。數(shù) 據(jù)轉(zhuǎn)發(fā)邏輯單元耦接該擴(kuò)增地址比較器。當(dāng)該數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單 元接收來(lái)自該擴(kuò)增地址比較器的該匹配信號(hào)的真值時(shí),該數(shù)據(jù) 轉(zhuǎn)發(fā)邏輯單元將該儲(chǔ)存數(shù)據(jù)由該儲(chǔ)存指令轉(zhuǎn)發(fā)至該載入指令。 上述微處理器用以減少非正確地將一數(shù)據(jù)由一儲(chǔ)存指令轉(zhuǎn)發(fā)至 一載入指令的可能性,其中,上述儲(chǔ)存指令較先前于上述載入 指令。
本發(fā)明的優(yōu)點(diǎn)在于可能減少微處理器所執(zhí)行的非正確或錯(cuò) 誤的傳送轉(zhuǎn)發(fā)數(shù)量。 一個(gè)錯(cuò)誤或非正確的儲(chǔ)存轉(zhuǎn)發(fā)是指儲(chǔ)存數(shù) 據(jù)非正確地由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令的情況。由于部分地址 比較操作指示出地址是匹配的,但是隨后的實(shí)體地址比較操作 指示出實(shí)體儲(chǔ)存地址不匹配于實(shí)體載入地址,因此儲(chǔ)存轉(zhuǎn)發(fā)為 非正確。由于必須重新發(fā)布載入指令且相依于載入指令的指令 必須自指令管線上清除,因此非正確的儲(chǔ)存轉(zhuǎn)發(fā)降低了微處理 器的效能。通過(guò)減少在指令管線上的指令生產(chǎn)量(throughput)來(lái) 校正上述錯(cuò)誤的轉(zhuǎn)發(fā)操作則會(huì)降低微處理器的效能。
圖l表示根據(jù)本發(fā)明實(shí)施例的微處理器;
圖2表示根據(jù)本發(fā)明實(shí)施例,圖l的微處理器通過(guò)擴(kuò)增地址 比較操作來(lái)將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令的操作流程圖; 以及
圖3表示根據(jù)本發(fā)明實(shí)施例,選擇關(guān)于圖l中的雜湊產(chǎn)生器 與擴(kuò)增地址比較器的設(shè)計(jì)的流程圖。附圖中符號(hào)的簡(jiǎn)單說(shuō)明如下
100:微處理器;101:載入單元管線;102:儲(chǔ)存單元管線; 104:載入指令;108:轉(zhuǎn)譯查詢(xún)緩沖器(TLB ); 114:雜湊產(chǎn) 生器;122:栽入虛擬地址;124:載入實(shí)體地址;130:擴(kuò)增地 址比較器;132:已選擇載入地址位;134:雜湊載入位;136: 擴(kuò)增載入地址;138:非雜湊載入地址位;140:轉(zhuǎn)發(fā)邏輯單元; 142:雜湊儲(chǔ)存位;146:擴(kuò)增儲(chǔ)存地址;148:非雜湊儲(chǔ)存地址 位;152:擴(kuò)增地址匹配導(dǎo)線;154'.儲(chǔ)存數(shù)據(jù);156:轉(zhuǎn)發(fā)儲(chǔ)存 數(shù)據(jù);158:儲(chǔ)存實(shí)體地址;160:實(shí)體地址比4交器;162:實(shí)體 地址匹配導(dǎo)線;164:重新發(fā)布信號(hào)線;170:校正邏輯單元; 202、 204、 206、 208、 212、 214、 216、 218、 222、 224、 226、 228、 232、 234:流程步驟;302、 304、 306:流程步驟。
具體實(shí)施例方式
為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文 特舉一4交佳實(shí)施例,并配合所附圖式,作詳細(xì)"i兌明如下。
參閱圖1,其表示根據(jù)本發(fā)明實(shí)施例的孩i處理器100的步驟 圖。微處理器100具有載入單元管線(load unit pipeline)101,其 用來(lái)接收、執(zhí)行且撤回(retire)載入指令104。載入指令104擷取 來(lái)自存儲(chǔ)器的數(shù)據(jù),且將此數(shù)據(jù)儲(chǔ)存在微處理器100的暫存器。 微處理器100也具有儲(chǔ)存單元管線(store unit pipeline)102與儲(chǔ) 存緩沖器(未顯示)。儲(chǔ)存單元管線102接收、執(zhí)行且撤回儲(chǔ)存 指令。儲(chǔ)存指令將數(shù)據(jù)由微處理器100的暫存器轉(zhuǎn)移至存儲(chǔ)器。 在將數(shù)據(jù)寫(xiě)入至微處理器10 0的數(shù)據(jù)快取存儲(chǔ)器的位置之前,儲(chǔ) 存緩沖器提供臨時(shí)儲(chǔ)存區(qū)儲(chǔ)存來(lái)自?xún)?chǔ)存指令的儲(chǔ)存數(shù)據(jù)與儲(chǔ)存 地址。圖l的多條虛線表示由虛線上方的較早管線階級(jí)至虛線下 方的較后管線階級(jí)的轉(zhuǎn)變。在圖l中,其顯示四個(gè)管線階級(jí)。載入指令104具有載入虛擬地址122,其在x86相容微處理器 中是x86虛擬地址。在一實(shí)施例中,載入虛擬地址122中具有48 個(gè)位。多個(gè)虛擬地址由微處理器100的存儲(chǔ)器管理單元來(lái)映射至 相同的實(shí)體地址。當(dāng)載入虛擬地址122最初(initially)進(jìn)入到微處 理器100中的載入單元管線101時(shí),其同時(shí)被提供至三處。首先, 假使載入指令104的數(shù)據(jù)處于微處理器100的快取存儲(chǔ)器(未顯 示),載入虛擬地址122則被提供至快取存儲(chǔ)器,以取得數(shù)據(jù)給 載入指令104。第二,載入虛擬地址122被提供至微處理器100 的轉(zhuǎn)譯查詢(xún)纟爰沖器(Translation Lookaside Buffer, TLB) 108, 以獲得在第二管線階級(jí)的載入實(shí)體地址124 ,將于之后詳細(xì)說(shuō) 明。第三,載入虛擬地址122被提供至在第一管線階級(jí)的雜湊 (hash)產(chǎn)生器114,以產(chǎn)生雜湊載入位134,其中,雜湊載入 位134與 一 部分的載入虛擬地址122串4妾(concatenate)以建立擴(kuò) 增載入地址136,如下所述。
在微處理器100的載入單元管線101的第一階級(jí),載入虛擬 地址122一皮分為已選4奪載入地址位132與非雜湊載入地址位138。 非雜湊載入地址位138與已選才奪載入地址位132彼此互斥 (mutually exclusive)。已選才奪載入地址位132為載入虛擬地址122 中一或多個(gè)較高地址位,且如圖l所示,在圖1中具有J個(gè)已選擇 載入地址位132,且上述J個(gè)地址位為多個(gè)虛擬存4*器地址位。 已選擇載入地址位132輸入至雜湊產(chǎn)生器114,其將J個(gè)已選擇載 入地址位132轉(zhuǎn)換成K個(gè)雜湊載入位134,其中,J為大于l的整 數(shù),且K為大于0的整數(shù),J的數(shù)目大于K。上述J個(gè)已選擇載入 地址位132是由載入指令104所指定的一存卩諸器位置的一地址的 多個(gè)位。因此,J個(gè)已選擇載入地址位132的數(shù)量多于K個(gè)雜湊 載入位134的凄t量。然而,在另 一如下所述的實(shí)施例中,J可能 等于K。在圖1中,具有L個(gè)非雜湊載入地址位138,且上述L個(gè)地址位為多個(gè)非雜湊存儲(chǔ)器地址位。在一實(shí)施例中,L個(gè)非雜 湊載入地址位138為載入虛擬地址122中多個(gè)連續(xù)的較低地址 位。在一實(shí)施例中,已選擇載入地址位132是選才奪自載入虛擬地 址122的位[47: 12],而非雜湊載入地址位138是選4奪自載入虛 擬地址122的位[11: 0]。在具有4KB存儲(chǔ)器的虛擬存儲(chǔ)器系統(tǒng) 中,載入虛擬地址122的位[47: 12]為虛擬存4諸器地址位,其由 TLB 108轉(zhuǎn)i奪為實(shí)體存^f諸器地址位,而載入虛擬地址122的位 [11: O]為存儲(chǔ)器索引位,其不需要由TLB 108來(lái)轉(zhuǎn)譯。
湊載入位134。雜湊產(chǎn)生器114對(duì)已選擇載入地址位132執(zhí)行一或 多個(gè)布爾組合函數(shù)(雜湊函數(shù)),包括反向(INVERT)、布爾與 (AND)函數(shù)、布爾或(OR)函數(shù)、布爾異或(XOR)函數(shù)、布爾與 非(NAND)函數(shù)、布爾或非(NOR)函數(shù)以及布爾異或非(XNOR) 函數(shù),以上為舉例說(shuō)明,并不以此為限制。在一實(shí)施例中,上 述雜湊函數(shù)包括上述J個(gè)地址位中至少兩位的一布爾函數(shù),以產(chǎn) 生上述K個(gè)雜湊位中的一位。K個(gè)雜湊載入位134與L個(gè)非雜湊載 入地址位13 8串4妻以形成擴(kuò)增載入地址13 6 。
雖然圖l沒(méi)有顯示,但是儲(chǔ)存單元管線102也包括一雜湊產(chǎn) 生器,其產(chǎn)生雜湊儲(chǔ)存位142給進(jìn)入至儲(chǔ)存單元管線102的每一 儲(chǔ)存指令。儲(chǔ)存單元管線102的此雜湊產(chǎn)生器接收儲(chǔ)存虛擬地址 的J個(gè)已選4奪儲(chǔ)存地址位,其對(duì)應(yīng)J個(gè)已選l奪載入地址位132,且 此雜湊產(chǎn)生器使用與載入單元管線101的雜湊產(chǎn)生器114相同的 雜湊函,并產(chǎn)生對(duì)應(yīng)K個(gè)雜湊載入位13 4的K個(gè)雜湊儲(chǔ)存位 142。上述J個(gè)已選擇儲(chǔ)存地址位是由儲(chǔ)存指令所指定的一存儲(chǔ) 器位置的一地址的多個(gè)位。儲(chǔ)存單元管線102串接K個(gè)雜湊儲(chǔ)存 位142與L個(gè)非雜湊J諸存地址位148以形成對(duì)應(yīng)擴(kuò)增載入地址 136的擴(kuò)增儲(chǔ)存地址146,上述L個(gè)非雜湊儲(chǔ)存地址位148對(duì)應(yīng)于L個(gè)非雜湊載入地址位138。
在第二管線階級(jí)中,擴(kuò)增地址比較器130接收擴(kuò)增載入地址 136,并比較擴(kuò)增載入地址136與在微處理器100中的未指定 (uncommitted)儲(chǔ)存指令的擴(kuò)增儲(chǔ)存地址146,其中,未指定儲(chǔ)存 指令較先前于載入指令。未指定儲(chǔ)存指令是指在載入指令存取 快取存儲(chǔ)器時(shí),未將其數(shù)據(jù)寫(xiě)入至快取存儲(chǔ)器的儲(chǔ)存指令。圖l 說(shuō)明擴(kuò)增地址比4交器130比較擴(kuò)增載入地址136與N個(gè)擴(kuò)增儲(chǔ)存 地址146。對(duì)于N個(gè)較先前的未指定儲(chǔ)存指令中的每一個(gè),擴(kuò)增 儲(chǔ)存地址146是在先前的時(shí)脈周期中產(chǎn)生,其中, 一些擴(kuò)增儲(chǔ)存 地址146歸屬于儲(chǔ)存緩沖器。在儲(chǔ)存單元管線102中提供臨時(shí)儲(chǔ) 存區(qū)給N個(gè)擴(kuò)增4諸存地址146的每一 個(gè)。當(dāng)N個(gè)擴(kuò)增4諸存地址146 中的一個(gè)等同于擴(kuò)增載入地址136,擴(kuò)增地址比較器130在一對(duì) 應(yīng)的擴(kuò)增地址匹配導(dǎo)線"2上產(chǎn)生一個(gè)真值(true value)(第一 預(yù)設(shè)布爾數(shù)值,例如為二進(jìn)位的l)。當(dāng)N個(gè)擴(kuò)增儲(chǔ)存地址146中 的 一 個(gè)并未與擴(kuò)增載入地址13 6匹配(match),擴(kuò)增地址比較器 130在一對(duì)應(yīng)的擴(kuò)增地址匹配導(dǎo)線152上產(chǎn)生一個(gè)假值(false value)(第二預(yù)設(shè)布爾數(shù)值,例如為二進(jìn)位的O)。
在第二管線階級(jí)的轉(zhuǎn)發(fā)邏輯單元140接收來(lái)自N個(gè)較先前 的未指定儲(chǔ)存指令中每一個(gè)的儲(chǔ)存數(shù)據(jù)154。轉(zhuǎn)發(fā)邏輯單元140 也接收N個(gè)擴(kuò)增地址匹配導(dǎo)線152上的信號(hào)。轉(zhuǎn)發(fā)邏輯單元140 也回應(yīng)地選4奪對(duì)應(yīng)具有 一 真值的擴(kuò)增地址匹配導(dǎo)線15 2的々者存 數(shù)據(jù)154,且轉(zhuǎn)發(fā)邏輯單元140將被選擇的儲(chǔ)存數(shù)據(jù)154(如圖1 的轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)156)轉(zhuǎn)發(fā)至載入指令104。轉(zhuǎn)發(fā)邏輯單元140也 產(chǎn)生轉(zhuǎn)發(fā)數(shù)據(jù)指標(biāo)166給校正邏輯單元170,(若有的情況下)以 指示出轉(zhuǎn)發(fā)邏輯單元140將哪一儲(chǔ)存指令的儲(chǔ)存數(shù)據(jù)156轉(zhuǎn)發(fā)至 載入指令104。
使用的已選擇載入地址位132的數(shù)量、使用已選擇載入地址位132中的哪些位、所產(chǎn)生的雜湊載入位134的數(shù)量、以及由雜 湊產(chǎn)生器114所執(zhí)行的雜湊函數(shù)都是設(shè)計(jì)選擇,其可通過(guò)程序串 (program streams)的經(jīng)驗(yàn)測(cè)試來(lái)決定。這些設(shè)計(jì)選4奪也許會(huì)受到 各種因素所影響,例如期望最佳化的特定程序以及其特性,包 括參照的方位性(locality of reference)、載入與儲(chǔ)存指令的頻率 與大小(size),以及由載入指令與儲(chǔ)存指令所存取的數(shù)據(jù)結(jié)構(gòu)的 構(gòu)成(organization)。這些選擇也會(huì)受到孩i處理器100的特定樣i處 理器架構(gòu)所影響,例如,管線階級(jí)的數(shù)量、微處理器100所支援 的未決(pending)指令的數(shù)量、以及微處理器100的各種指令緩沖 器的大小。例如,已選擇載入地址位132包括相鄰位以及/或非 相鄰位。然而,影響這些選擇的一個(gè)重要因素是微處理器100 的目標(biāo)時(shí)脈周期(target clock cycle)。在一實(shí)施例中,選擇擴(kuò)增 載入地址13 6與擴(kuò)增儲(chǔ)存地址14 6的大小,并在必要的情況下, 使得微處理器100的 一單 一 時(shí)脈周期上,擴(kuò)增地址比較器130執(zhí) 行比較操作且轉(zhuǎn)發(fā)邏輯單元140轉(zhuǎn)發(fā)數(shù)據(jù)。另 一設(shè)計(jì)考量是需要 一用來(lái)儲(chǔ)存雜湊載入位134與雜湊儲(chǔ)存位142的額外儲(chǔ)存器。
在一實(shí)施例中,雜湊產(chǎn)生器114在J個(gè)已選擇載入地址位132 上執(zhí)行恒等函數(shù)(identity function),以產(chǎn)生K個(gè)雜湊載入位134。 即雜湊產(chǎn)生器114僅傳送J個(gè)已選擇載入地址位13 2,以作為K個(gè) 雜湊載入位134。因此,不^象上述的其他實(shí)施例,在此實(shí)施例中, J與K相等,且J與K都為大于0的整數(shù)。在這種實(shí)施例中,J個(gè)已 選擇載入地址位132包括載入虛擬地址122的虛擬存儲(chǔ)器地址位 [47: 12]中至少一位。
在與擴(kuò)增地址比一交器130比一交擴(kuò)增載入地址136和N個(gè)擴(kuò)增 儲(chǔ)存地址146的相同管線階級(jí)中,TLB 108將載入虛擬地址122 轉(zhuǎn)換為載入實(shí)體地址124。將N個(gè)儲(chǔ)存虛擬地址轉(zhuǎn)換為N個(gè)儲(chǔ)存 實(shí)體地址158由TLB 108所^U亍,圖1中未顯示。在儲(chǔ)存單元管線102的第三管線階級(jí)中,實(shí)體地址比較器 160比較載入實(shí)體地址124與N個(gè)儲(chǔ)存實(shí)體地址158。對(duì)于N個(gè)儲(chǔ) 存實(shí)體地址158中的一個(gè)等同于載入實(shí)體地址124,實(shí)體地址比 較器160在一對(duì)應(yīng)的實(shí)體地址匹配導(dǎo)線162上產(chǎn)生一個(gè)真值。實(shí) 體地址必須被比較以確保轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)15 6為正確數(shù)據(jù),這就是 說(shuō),轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)156是轉(zhuǎn)發(fā)自最新儲(chǔ)存指令,且此最新儲(chǔ)存指
156由第三管線階級(jí)的載入指令104所接收。
實(shí)體地址比較器160輸出信號(hào)給實(shí)體地址匹配導(dǎo)線162,并 傳輸該信號(hào)至校正邏輯單元170。校正邏輯單元170也接收來(lái)自 轉(zhuǎn)發(fā)邏輯單元140的轉(zhuǎn)發(fā)數(shù)據(jù)指標(biāo)166。根據(jù)實(shí)體地址匹配導(dǎo)線 162上的信號(hào)與轉(zhuǎn)發(fā)數(shù)據(jù)指標(biāo)166,校正邏輯單元170判斷轉(zhuǎn)發(fā)邏 輯單元140是否已將非正確儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至載入指令104,亦即 非正確或錯(cuò)誤的儲(chǔ)存轉(zhuǎn)發(fā)操作,或者判斷當(dāng)轉(zhuǎn)發(fā)邏輯單元14 0 應(yīng)將儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至載入指令104時(shí),其是否沒(méi)有將儲(chǔ)存數(shù)據(jù)轉(zhuǎn) 發(fā)至載入指令104,亦即遺漏(miss)儲(chǔ)存轉(zhuǎn)發(fā)操作。假使是的話, 校正邏輯單元170在重新發(fā)布(replay)信號(hào)線164上產(chǎn)生一個(gè) 真值,將根據(jù)圖2于下文詳細(xì)說(shuō)明。
在一實(shí)施例中,應(yīng)用上述架構(gòu)的一微處理器包括一第一雜 湊位產(chǎn)生器、 一第二雜湊位產(chǎn)生器、 一擴(kuò)增地址比較器以及一 數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單元。第一雜湊位產(chǎn)生器用以自 一儲(chǔ)存指令的一 儲(chǔ)存虛擬地址的 一第二地址欄位(存放J個(gè)已選擇儲(chǔ)存地址位) 產(chǎn)生多個(gè)第一雜湊位(K個(gè)雜湊儲(chǔ)存位),其中,每一該第一雜湊 位由 一布爾邏輯電路來(lái)產(chǎn)生,所述第 一 雜湊位中至少 一位非相 同于該第二地址欄位中 一位,其中該儲(chǔ)存指令包括該儲(chǔ)存虛擬 地址與 一儲(chǔ)存數(shù)據(jù),該儲(chǔ)存虛擬地址包括一第 一地址欄位與該 第二地址欄位,所述第一地址欄位與第二地址欄位包括多個(gè)二進(jìn)位地址位,且所述第 一地址欄位與第二地址欄位為4皮此互斥。 第二雜湊位產(chǎn)生器用以自 一載入指令的一載入虛擬地址的一第 四地址欄位(存》文J個(gè)已選擇載入地址位)產(chǎn)生多個(gè)第二雜湊位
(K個(gè)雜湊載入位),其中,每一該第二雜湊位由一布爾邏輯電路
來(lái)產(chǎn)生,所述第二雜湊位中至少 一 位非相同于該第四地址欄位 中一位,其中該載入指令包括該載入虛擬地址,該載入虛擬地 址包括一第三地址欄位與該第四地址欄位,所述第三地址欄位 與第四地址欄位包括多個(gè)二進(jìn)位地址位,且所述第三地址欄位 與第四地址欄位彼此互斥。擴(kuò)增地址比較器耦接上述第一雜湊 位產(chǎn)生器與第二雜湊位產(chǎn)生器。當(dāng)一擴(kuò)增儲(chǔ)存地址相同于一擴(kuò) 增載入地址時(shí),用以產(chǎn)生一匹配信號(hào)的真值,其中,該擴(kuò)增儲(chǔ)
存地址為該第 一 地址欄位(存放L個(gè)非雜湊儲(chǔ)存地址位)與所述 第一雜湊位的串接,且該擴(kuò)增載入地址為該第三地址欄位(存放 L個(gè)非雜湊載入地址位)與所述第二雜湊位的串接。數(shù)據(jù)轉(zhuǎn)發(fā)邏 輯單元耦接該擴(kuò)增地址比較器。當(dāng)該數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單元接收來(lái) 自該擴(kuò)增地址比較器的該匹配信號(hào)的真值時(shí),該數(shù)據(jù)轉(zhuǎn)發(fā)邏輯 單元將該儲(chǔ)存數(shù)據(jù)由該儲(chǔ)存指令轉(zhuǎn)發(fā)至該載入指令。上述微處 理器用以減少非正確地將 一 數(shù)據(jù)由 一 儲(chǔ)存指令轉(zhuǎn)發(fā)至 一 載入指 令的可能性,其中,上述儲(chǔ)存指令較先前于上述載入指令。
參閱圖2,其表示圖1的微處理器100通過(guò)擴(kuò)增地址比較操作 來(lái)將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令的操作流程圖。流程開(kāi)始 于步驟202。
在步驟202中,農(nóng)£處理器100的指令發(fā)送器(instruction dispatcher)(未顯示)發(fā)布載入指令1(M至一載入單元管線101 。 流程繼續(xù)進(jìn)行至步驟2 04 。
在步驟204中,載入單元管線101將載入指令104的載入虛擬 地址122的J個(gè)已選一奪載入地址位132雜湊后與L個(gè)非雜湊載入地址位138串4妻以形成一擴(kuò)增載入地址136。在圖l中,于載入單元 管線101中,雜湊產(chǎn)生器114根據(jù)J個(gè)已選擇載入地址位132來(lái)產(chǎn) 生K個(gè)雜湊載入位134。 K個(gè)雜湊載入位134與L個(gè)非雜湊載入地 址位138串接以形成圖l的擴(kuò)增載入地址136。流程繼續(xù)由步驟 204進(jìn)行至步驟206與步驟208。
在步驟206中,圖1的TLB 108接收載入虛擬地址122且產(chǎn)生 圖l的載入實(shí)體地址124。流程繼續(xù)由步驟206進(jìn)行至步驟218與 步驟228。
在步驟208中,擴(kuò)增地址比較器130比較擴(kuò)增載入地址136 與圖1的N個(gè)擴(kuò)增儲(chǔ)存地址146,以產(chǎn)生圖1的N個(gè)擴(kuò)增地址匹配 導(dǎo)線152上的信號(hào),其中,N個(gè)擴(kuò)增儲(chǔ)存地址146由一儲(chǔ)存單元 管線102事先產(chǎn)生。流程繼續(xù)進(jìn)行至判斷步驟212。
在判斷步驟212中,轉(zhuǎn)發(fā)邏輯單元140檢查步驟208中所產(chǎn)生 的擴(kuò)增地址匹配導(dǎo)線152上的信號(hào),(若有的話)以判斷N個(gè)擴(kuò) 增儲(chǔ)存地址146中哪一個(gè)匹配于擴(kuò)增載入地址136。假-使至少一 個(gè)匹配,流程則繼續(xù)進(jìn)行至步驟214,否則流程繼續(xù)進(jìn)行至步驟 226。
在步驟214中,圖1的轉(zhuǎn)發(fā)邏輯單元140將最新的未指定儲(chǔ)存 指令的儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至載入指令104,其中,此最新的未指定儲(chǔ) 存指令較先前于載入指令,且其對(duì)應(yīng)的擴(kuò)增地址匹配導(dǎo)線152 上的信號(hào)為真(true)。流程繼續(xù)進(jìn)行至步驟216。
在步驟216中,載入單元管線101使用步驟214中所轉(zhuǎn)發(fā)的轉(zhuǎn) 發(fā)儲(chǔ)存數(shù)據(jù)156來(lái)執(zhí)行載入指令104。流程繼續(xù)進(jìn)行至步驟218。
在步驟218中,圖l的實(shí)體地址比較器160比較載入實(shí)體地址 124與來(lái)自?xún)?chǔ)存單元管線102與儲(chǔ)存緩沖器的N個(gè)儲(chǔ)存實(shí)體地址 158,以產(chǎn)生圖l的實(shí)體地址匹配導(dǎo)線162上的信號(hào)。流程繼續(xù)進(jìn) 行至判斷步驟222。在判斷步驟222中,由于轉(zhuǎn)發(fā)數(shù)據(jù)指標(biāo)166指示出在步驟214 中轉(zhuǎn)發(fā)邏輯單元140已將轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)156轉(zhuǎn)發(fā)至載入指令104, 圖1的校正邏輯單元170則檢查步驟218所產(chǎn)生的實(shí)體地址匹配 導(dǎo)線162上的信號(hào),以判斷載入實(shí)體地址124是否匹配儲(chǔ)存指令 的儲(chǔ)存實(shí)體地址158,而此儲(chǔ)存指令的轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)156已于步 驟214中轉(zhuǎn)發(fā)至載入指令104,此外更判斷此儲(chǔ)存指令是否是其
使是,正確數(shù)據(jù)則被轉(zhuǎn)發(fā)至載入指令104且由載入指令104來(lái)使 用,接著流程繼續(xù)進(jìn)行至步驟224;否則,非正確數(shù)據(jù)被轉(zhuǎn)發(fā)至 載入指令104且由載入指令104來(lái)使用接著流程繼續(xù)進(jìn)行至步驟 234。
在步驟224中,載入單元管線101執(zhí)行載入指令104,且載入 指令104被撤回,以完成載入指令。
在步驟226中,由于在判斷步驟212中擴(kuò)增地址比較操作沒(méi) 有產(chǎn)生匹配結(jié)果,因此載入單元管線101執(zhí)行載入指令104而不 轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)。反而是,載入指令104自微處理器100的快取存 儲(chǔ)器或系統(tǒng)存儲(chǔ)器取得數(shù)據(jù)。流程繼續(xù)進(jìn)行至步驟2 2 8 。
在步驟228中,圖l的實(shí)體地址比較器160比較載入實(shí)體地址 124與來(lái)自?xún)?chǔ)存單元管線102與儲(chǔ)存緩沖器的N個(gè)儲(chǔ)存實(shí)體地址 158,以產(chǎn)生圖l的實(shí)體地址匹配導(dǎo)線162上的信號(hào)。流程繼續(xù)進(jìn) 行至判斷步驟232。
在判斷步驟232中,由于轉(zhuǎn)發(fā)數(shù)據(jù)指標(biāo)166指示出轉(zhuǎn)發(fā)邏輯 單元140沒(méi)有將轉(zhuǎn)發(fā)儲(chǔ)存數(shù)據(jù)156轉(zhuǎn)發(fā)至載入指令104,圖l的校 正邏輯單元170才企查在步驟228中產(chǎn)生的實(shí)體地址匹配導(dǎo)線162 上的信號(hào),以判斷載入實(shí)體地址124是否匹配N(xiāo)個(gè)儲(chǔ)存實(shí)體地址 158中的任一個(gè)。假使是,則發(fā)生遺漏儲(chǔ)存轉(zhuǎn)發(fā)。也就是說(shuō),載 入指令104使用來(lái)自存儲(chǔ)器的舊數(shù)據(jù),而不是應(yīng)已由N個(gè)儲(chǔ)存指令中的一個(gè)所轉(zhuǎn)發(fā)的數(shù)據(jù),且流程繼續(xù)進(jìn)行至步驟234。然而, 假使沒(méi)有發(fā)生遺漏儲(chǔ)存轉(zhuǎn)發(fā),正確數(shù)據(jù)自存儲(chǔ)器中獲得且由載 入指令104來(lái)使用,接著,流程繼續(xù)進(jìn)行至步驟224以完成載入 指令。
在步驟234中,由于載入指令104使用非正確數(shù)據(jù),校正邏 輯單元170在重新發(fā)布信號(hào)線164上產(chǎn)生一個(gè)真值,其指示一指 令發(fā)送器重新發(fā)送載入指令104且清除較新于載入指令104的所 有指令。流程結(jié)束于步驟234。
如圖l與圖2的說(shuō)明,比較擴(kuò)增載入地址136與擴(kuò)增儲(chǔ)存地址
將可能減少必須由微處理器10 0校正的非正確儲(chǔ)存轉(zhuǎn)發(fā)的數(shù)量, 其中,由微處理器100校正的非正確儲(chǔ)存轉(zhuǎn)發(fā)操作會(huì)降低微處理 器效能并降低儲(chǔ)存轉(zhuǎn)發(fā)操作的價(jià)值(value)。然而,注意到,通 過(guò)在儲(chǔ)存轉(zhuǎn)發(fā)比較判斷的 一 些實(shí)施例中使用虛擬存儲(chǔ)器地址位 (盡管被雜湊),這些實(shí)施例可能導(dǎo)致較低的正確性,這是因?yàn)?br>
其引發(fā)了虛擬失真的可能性。即是,在一虛擬存儲(chǔ)器系統(tǒng)中, 可能發(fā)生多個(gè)虛擬地址映射至相同實(shí)體地址。因此,校正邏輯 單元17 0可偵測(cè)遺漏儲(chǔ)存轉(zhuǎn)發(fā)狀態(tài),在此遺漏儲(chǔ)存轉(zhuǎn)發(fā)狀態(tài)下, 即使于步驟232中載入實(shí)體地址匹配于儲(chǔ)存實(shí)體地址,但于步驟 212中擴(kuò)增載入地址不會(huì)匹配于擴(kuò)增儲(chǔ)存地址。然而,在一些情 況下,可選擇產(chǎn)生的雜湊載入位134的數(shù)量、使用來(lái)產(chǎn)生雜湊載 入位134的已選擇載入地址位132的哪些位與凄t量、以及由雜湊 產(chǎn)生器114所執(zhí)行用來(lái)產(chǎn)生雜湊載入位134的雜湊函數(shù),使得非 正確儲(chǔ)存轉(zhuǎn)發(fā)的數(shù)量減少的好處超過(guò)遺漏儲(chǔ)存轉(zhuǎn)發(fā)的數(shù)量增加 的結(jié)果。
參閱圖3,其表示根據(jù)本發(fā)明實(shí)施例,選擇關(guān)于圖l中雜湊 產(chǎn)生器114與擴(kuò)增地址比較器130的設(shè)計(jì)的流程圖。圖3的步驟由微處理器ioo設(shè)計(jì)以及/或制程階段中由微處理器ioo的制程者
所執(zhí)行。在一實(shí)施例中,在微處理器100的操作期間,通過(guò)由特 i午禾呈序才旨令(privileged program instructions )來(lái)牙呈序4匕的樣丈處 理器100的配置模式暫存器,哪些地址位去雜湊與形成(串接成) 擴(kuò)增地址的選擇也是可配置的。流程開(kāi)始于步驟3 0 2 。
在步驟302中,微處理器100的設(shè)計(jì)者決定圖l中雜湊載入位 134的數(shù)量,以及決定哪些雜湊載入位134去擴(kuò)增非雜湊載入地 址位138以在儲(chǔ)存轉(zhuǎn)發(fā)地址比較中使用。流程繼續(xù)進(jìn)行至步驟 304。
在步驟304中,對(duì)于每一雜湊載入位134,《敖處理器100的設(shè) 計(jì)者決定圖l中載入虛擬地址122中 一或多個(gè)4交高地址位被雜湊 產(chǎn)生器114雜湊,以產(chǎn)生各自雜湊載入位134。流程繼續(xù)進(jìn)行至 步驟306。
在步驟306中,對(duì)于每一雜湊載入位134,微處理器100的設(shè) 計(jì)者決定雜湊產(chǎn)生器114對(duì)已選擇地址位122執(zhí)行的雜湊函數(shù), 以產(chǎn)生各自雜湊載入位134。在一實(shí)施例中,可執(zhí)行不同的雜湊 函數(shù)以產(chǎn)生不同的雜湊載入位134。流程結(jié)束于步驟306。
如上所述,選擇產(chǎn)生的雜湊載入位134的數(shù)量、使用來(lái)產(chǎn)生 雜湊載入位134的已選擇載入地址位132的哪些位與數(shù)量、以及 由雜湊產(chǎn)生器114所執(zhí)行用來(lái)產(chǎn)生雜湊載入位134的雜湊函數(shù), 都是設(shè)計(jì)選擇,其可通過(guò)程序串的經(jīng)驗(yàn)測(cè)試來(lái)決定,這些設(shè)計(jì) 選擇也許會(huì)受到各種因素所影響。
本發(fā)明雖以較佳實(shí)施例揭露如上,然其并非用以限定本發(fā) 明的范圍。對(duì)于相關(guān)計(jì)算機(jī)領(lǐng)域中的技術(shù)人員而言,在不脫離 本發(fā)明的精神下可執(zhí)行在型態(tài)與細(xì)節(jié)上的各種變化。例如,除 了使用硬件(例如在中央處理單元(CPU)內(nèi)或耦接CPU、微
處理器、微控制器、數(shù)字信號(hào)處理器、處理器核心、芯片上系統(tǒng)(soc)、或任何其他裝置),這些實(shí)施也可實(shí)現(xiàn)于配置在用
來(lái)儲(chǔ)存軟件的計(jì)算機(jī)可使用(例如可讀取)介質(zhì)中的軟件(例 如計(jì)算機(jī)可讀取編碼、程序編碼以及任何型態(tài)配置的指令,例 如源語(yǔ)言、目的語(yǔ)言、機(jī)械語(yǔ)言)。此軟件可致能此處所敘述裝
置與方法的功能、組建(fabrication),塑造(modeling)、模擬、 描繪(description)以及/或測(cè)試。例如,可通過(guò)一般程序語(yǔ)言(C、 C++)、石更件描述語(yǔ)言(Hardware Description Languages, HDL)
(包括Verilog HDL、 VHDL等)、或其他可利用的語(yǔ)言來(lái)完成。 此軟件可配置在任何已知的計(jì)算機(jī)可4吏用介質(zhì),例如半導(dǎo)體、 》茲盤(pán)或光盤(pán)(例如CD-ROM、 DVD-ROM等)。本發(fā)明的實(shí)施例 包括通過(guò)提供描述微處理器設(shè)計(jì)的軟件以及接著通過(guò)通訊網(wǎng)絡(luò)
(包括網(wǎng)際網(wǎng)絡(luò)與內(nèi)部網(wǎng)絡(luò))來(lái)傳送軟件以做為計(jì)算機(jī)數(shù)據(jù)信 號(hào),來(lái)提供此述微處理器的方法??衫斫獾酱耸龅难b置與方法 可被包括于半導(dǎo)體知識(shí)產(chǎn)權(quán)核心,例如微處理器核心(以HDL 來(lái)實(shí)現(xiàn)),且轉(zhuǎn)換成集成電路產(chǎn)品的硬件。此外,此述的裝置與 方法可實(shí)現(xiàn)作為硬件與軟件的結(jié)合。因此,本發(fā)明不被此述的 范例實(shí)施例所限制,而是依權(quán)利要求書(shū)與其等同者所界定。本 發(fā)明是實(shí)施在用于一般目的計(jì)算機(jī)中的微處理器裝置內(nèi)。
以上所述僅為本發(fā)明較佳實(shí)施例,然其并非用以限定本發(fā) 明的范圍,任何熟悉本項(xiàng)技術(shù)的人員,在不脫離本發(fā)明的精神 和范圍內(nèi),可在此基礎(chǔ)上做進(jìn)一步的改進(jìn)和變化,因此本發(fā)明 的保護(hù)范圍當(dāng)以本申請(qǐng)的權(quán)利要求書(shū)所界定的范圍為準(zhǔn)。
權(quán)利要求
1.一種轉(zhuǎn)發(fā)裝置,其特征在于,用以減少在一微處理器內(nèi)非正確地將一數(shù)據(jù)由一儲(chǔ)存指令轉(zhuǎn)發(fā)至一載入指令的可能性,該儲(chǔ)存指令較先前于該載入指令,該轉(zhuǎn)發(fā)裝置包括一雜湊產(chǎn)生器,用以對(duì)J個(gè)地址位執(zhí)行一雜湊函數(shù),以產(chǎn)生K個(gè)雜湊位,其中,所述J個(gè)地址位是由該載入指令或該儲(chǔ)存指令所指定的一存儲(chǔ)器位置的一地址的多個(gè)位,J為大于1的整數(shù),K為大于0的整數(shù);一比較器,其中,假使由該載入指令所指定的L個(gè)地址位匹配于由該儲(chǔ)存指令所指定的對(duì)應(yīng)的L個(gè)地址位,且該載入指令的K個(gè)雜湊位匹配于該儲(chǔ)存指令的對(duì)應(yīng)的K個(gè)雜湊位,該比較器輸出一第一預(yù)設(shè)布爾數(shù)值,否則,該比較器輸出一第二預(yù)設(shè)布爾數(shù)值,且L為大于0的整數(shù);以及一轉(zhuǎn)發(fā)邏輯單元,耦接該比較器,其中,當(dāng)該比較器輸出該第一預(yù)設(shè)布爾數(shù)值時(shí),該轉(zhuǎn)發(fā)邏輯單元將該數(shù)據(jù)由該儲(chǔ)存指令轉(zhuǎn)發(fā)至該載入指令,且當(dāng)該比較器輸出該第二預(yù)設(shè)布爾數(shù)值時(shí),該轉(zhuǎn)發(fā)邏輯單元不將該數(shù)據(jù)由該儲(chǔ)存指令轉(zhuǎn)發(fā)至該載入指令。
2. 根據(jù)權(quán)利要求l所述的轉(zhuǎn)發(fā)裝置,其特征在于,所述J 個(gè)地址位為多個(gè)虛擬存儲(chǔ)器地址位,所述L個(gè)地址位為多個(gè)非 雜湊存儲(chǔ)器地址位。
3. 根據(jù)權(quán)利要求l所述的轉(zhuǎn)發(fā)裝置,其特征在于,J等于K, 該雜湊函數(shù)為 一 恒等函數(shù),使得該雜湊產(chǎn)生器傳送所述J個(gè)地址 位以作為對(duì)應(yīng)的所述K個(gè)雜湊位。
4. 根據(jù)權(quán)利要求l所述的轉(zhuǎn)發(fā)裝置,其特征在于,J大于K, 該雜湊函數(shù)包括所述J個(gè)地址位中至少兩位的一布爾函數(shù),以產(chǎn) 生所述K個(gè)雜湊位中的一位。
5. 根據(jù)權(quán)利要求l所述的轉(zhuǎn)發(fā)裝置,其特征在于,所述L個(gè)地址位與所述J個(gè)地址位彼此互斥。
6. 根據(jù)權(quán)利要求l所述的轉(zhuǎn)發(fā)裝置,其特征在于,更包括 一第二比較器,用以比較由該載入指令所指定的該存儲(chǔ)器位置的一實(shí)體存儲(chǔ)器地址與由該儲(chǔ)存指令所指定的該存儲(chǔ)器位 置的一實(shí)體存^f諸器地址;以及一校正邏輯單元,耦接該第二比較器,用以判斷該轉(zhuǎn)發(fā)邏 輯單元是否已將非正確儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至該載入指令,其中,當(dāng)該非正確儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至該載入指令時(shí),該校正邏輯單元指示 一指令發(fā)送器重新發(fā)送該載入指令且清除較新于該載入指令的 所有指令。
7. —種轉(zhuǎn)發(fā)方法,其特征在于,用以減少在一微處理器內(nèi) 非正確地將一數(shù)據(jù)由一儲(chǔ)存指令轉(zhuǎn)發(fā)至一載入指令的可能性, 該儲(chǔ)存指令較先前于該載入指令,該轉(zhuǎn)發(fā)方法包括通過(guò)執(zhí)行 一 雜湊函數(shù)的 一 雜湊產(chǎn)生器,來(lái)對(duì)J個(gè)地址位進(jìn)行 雜湊以產(chǎn)生K個(gè)雜湊位,其中,所述J個(gè)地址位是由該載入指令 或該儲(chǔ)存指令所指定的一存儲(chǔ)器位置的一地址的多個(gè)位,J為大 于1的整數(shù),K為大于0的整數(shù);且假使由該載入指令所指定的L個(gè)地址位匹配于由該儲(chǔ)存指 令所指定的對(duì)應(yīng)的L個(gè)地址位,且該載入指令的K個(gè)雜湊位匹配 于該儲(chǔ)存指令的對(duì)應(yīng)的K個(gè)雜湊位,通過(guò)一比較器輸出 一第一 預(yù)設(shè)布爾數(shù)值,否則,輸出一第二預(yù)設(shè)布爾數(shù)值,且L為大于0 的整數(shù);以及當(dāng)該比較器輸出該第 一 預(yù)設(shè)布爾數(shù)值時(shí),通過(guò)耦接該比較 器的一轉(zhuǎn)發(fā)邏輯單元來(lái)將該數(shù)據(jù)由該儲(chǔ)存指令轉(zhuǎn)發(fā)至該載入指 令,且當(dāng)該比較器輸出該第二預(yù)設(shè)布爾數(shù)值時(shí),不將該數(shù)據(jù)由 該儲(chǔ)存指令轉(zhuǎn)發(fā)至該載入指令。
8. 根據(jù)權(quán)利要求7所述的轉(zhuǎn)發(fā)方法,其特征在于,所述J個(gè)地址位為多個(gè)虛擬存儲(chǔ)器地址位,所述L個(gè)地址位為多個(gè)非 雜湊存儲(chǔ)器地址位。
9. 根據(jù)權(quán)利要求7所述的轉(zhuǎn)發(fā)方法,其特征在于,J等于K, 該雜湊函數(shù)為一恒等函數(shù),使得該雜湊產(chǎn)生器傳送所述J個(gè)地址 位以作為對(duì)應(yīng)的所述K個(gè)雜湊位。
10. 根據(jù)權(quán)利要求7所述的轉(zhuǎn)發(fā)方法,其特征在于,J大于 K,該雜湊函凄丈包"^舌所述J個(gè)地址位中至少兩位的一布爾函#:, 以產(chǎn)生所述K個(gè)雜湊位中的一位。
11. 根據(jù)權(quán)利要求7所述的轉(zhuǎn)發(fā)方法,其特征在于,所述L 個(gè)地址位與所述J個(gè)地址位彼此互斥。
12. 根據(jù)權(quán)利要求7所述的轉(zhuǎn)發(fā)方法,其特征在于,更包括 比較由該載入指令所指定的該存儲(chǔ)器位置的一實(shí)體存儲(chǔ)器地址與由該儲(chǔ)存指令所指定的該存儲(chǔ)器位置的一實(shí)體存儲(chǔ)器地 址;以及判斷是否已將非正確儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至該載入指令,且當(dāng)該 非正確儲(chǔ)存數(shù)據(jù)轉(zhuǎn)發(fā)至該載入指令時(shí),指示一指令發(fā)送器重新 發(fā)送該載入指令且清除較新于該載入指令的所有指令。
13. —種微處理器,其特征在于,包括 一第一雜湊位產(chǎn)生器,用以自 一儲(chǔ)存指令的一儲(chǔ)存虛擬地址的一第二地址欄位產(chǎn)生多個(gè)第一雜湊位,其中,每一該第一 雜湊位由一布爾邏輯電路來(lái)產(chǎn)生,所述第一雜湊位中至少 一位 非相同于該第二地址欄位中一位,其中該儲(chǔ)存指令包括該儲(chǔ)存 虛擬地址與 一儲(chǔ)存數(shù)據(jù),該儲(chǔ)存虛擬地址包括一第 一地址欄位 與該第二地址欄位,所述第一地址欄位與所述第二地址欄位包 括多個(gè)二進(jìn)位地址位,且所述第一地址欄位與所述第二地址欄位為4皮此互斥;一第二雜湊位產(chǎn)生器,用以自 一載入指令的一載入虛擬地址的一第四地址欄位產(chǎn)生多個(gè)第二雜湊位,其中,每一該第二 雜湊位由一布爾邏輯電路來(lái)產(chǎn)生,所述第二雜湊位中至少 一位 非相同于該第四地址欄位中 一 位,其中該載入指令包括該載入虛擬地址,該載入虛擬地址包括 一 第三地址欄位與該第四地址 欄位,所述第三地址欄位與所述第四地址欄位包括多個(gè)二進(jìn)位地址位,且所述第三地址欄位與所述第四地址欄位彼此互斥;一擴(kuò)增地址比較器,耦接所述第 一 雜湊位產(chǎn)生器與所述第 二雜湊位產(chǎn)生器,當(dāng) 一擴(kuò)增儲(chǔ)存地址相同于一擴(kuò)增載入地址時(shí), 用以產(chǎn)生一匹配信號(hào)的真值,其中,該擴(kuò)增儲(chǔ)存地址為該第一 地址欄位與所述第一雜湊位的串接,且該擴(kuò)增載入地址為該第 三地址欄位與所述第二雜湊位的串接;一數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單元,耦接該擴(kuò)增地址比較器,其中,當(dāng) 該數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單元接收來(lái)自該擴(kuò)增地址比較器的該匹配信號(hào) 的真值時(shí),該數(shù)據(jù)轉(zhuǎn)發(fā)邏輯單元將該儲(chǔ)存數(shù)據(jù)由該儲(chǔ)存指令轉(zhuǎn) 發(fā)至該載入指令。
全文摘要
一種轉(zhuǎn)發(fā)裝置與方法以及微處理器,其中該轉(zhuǎn)發(fā)裝置包括雜湊產(chǎn)生器、比較器及轉(zhuǎn)發(fā)邏輯單元。雜湊產(chǎn)生器雜湊J個(gè)地址位以產(chǎn)生K個(gè)雜湊位。J個(gè)地址位是載入指令或儲(chǔ)存指令所指定的存儲(chǔ)器地址的多個(gè)位,K為大于0的整數(shù)且J為大于K的整數(shù)。當(dāng)載入指令指定的L個(gè)地址位匹配于儲(chǔ)存指令指定的L個(gè)地址位且載入指令的K個(gè)雜湊位匹配于儲(chǔ)存指令的K個(gè)雜湊位時(shí),比較器輸出第一預(yù)設(shè)布爾數(shù)值,否則輸出第二預(yù)設(shè)布爾數(shù)值,L為大于0的整數(shù)。當(dāng)比較器輸出第一預(yù)設(shè)布爾數(shù)值時(shí),轉(zhuǎn)發(fā)邏輯單元將數(shù)據(jù)由儲(chǔ)存指令轉(zhuǎn)發(fā)至載入指令,而當(dāng)比較器輸出第二預(yù)設(shè)布爾數(shù)值時(shí),不轉(zhuǎn)發(fā)數(shù)據(jù)。本發(fā)明可能減少微處理器所執(zhí)行的非正確或錯(cuò)誤的傳送轉(zhuǎn)發(fā)數(shù)量。
文檔編號(hào)G06F9/312GK101593098SQ20091015910
公開(kāi)日2009年12月2日 申請(qǐng)日期2009年7月6日 優(yōu)先權(quán)日2008年8月25日
發(fā)明者柯林艾迪, E·虎克 羅德尼 申請(qǐng)人:威盛電子股份有限公司