專利名稱:使用所存儲的經(jīng)編碼關(guān)鍵字的高速內(nèi)容可尋址存儲器查找的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體來說涉及電子電路領(lǐng)域且更特定來說涉及一種使用經(jīng)編碼的關(guān)鍵字 字段及所存儲的經(jīng)編碼關(guān)鍵字來高速存取內(nèi)容可尋址存儲器的方法。
微處理器在各種各樣的應(yīng)用中執(zhí)行計算任務(wù),所述應(yīng)用包括嵌入式應(yīng)用,例如便 攜式電子裝置。所述裝置的不斷擴展的特征集及增強的功能性需要計算功能甚至更強 大的處理器。因此,需要提高執(zhí)行速度的處理器改善。
大多數(shù)現(xiàn)代處理器通過將最近執(zhí)行的指令及最近存取的數(shù)據(jù)存儲在一個或一個 以上高速緩沖存儲器中供指令執(zhí)行管線的就緒存取來利用大多數(shù)程序的空間及時間局
部性性質(zhì)。高速緩存器是包含隨機存取存儲器(RAM)及對應(yīng)的內(nèi)容可尋址存儲器 (CAM)的高速、(通常)芯片上存儲器結(jié)構(gòu)。所述指令或數(shù)據(jù)駐存于存儲在所述 RAM中的高速緩沖存儲"線"中。為確定特定的資料是否駐存于所述RAM中,將其 地址的一部分應(yīng)用到所述CAM。 CAM是特定的存儲器結(jié)構(gòu),其中將所應(yīng)用的比較輸 入(本文中是指關(guān)鍵字或搜索關(guān)鍵字)同時與存儲在每一CAM條目(本文中是指關(guān) 鍵字字段)中的數(shù)據(jù)相比較,且所述CAM的輸出是關(guān)鍵字字段匹配所述關(guān)鍵字(如 果存在)的指示。在高速緩存器中,所述關(guān)鍵字及關(guān)鍵字字段是地址的部分(虛擬的 或物理的),且如果匹配發(fā)生(即,存取在所述高速緩存器中"命中"),那么所述 匹配的位置給RAM加索引,且存取對應(yīng)的高速緩沖存儲線。
圖1描繪CAM結(jié)構(gòu)的一個關(guān)鍵字字段的一部分的功能性方塊圖,其大體由數(shù)字 100指示。所述CAM關(guān)鍵字字段j'包括跨越第J個關(guān)鍵字字段IIO的所有位位置的匹 配線102。匹配線102由接通將匹配線102連接到電源的通過晶體管104的柵極的預(yù) 充電(PRECHARGE)信號拉高。在所述第j'個CAM條目的每一位處,將通過晶體管 106插入匹配線102與接地之間。放電晶體管106的柵極是關(guān)鍵字112位及對應(yīng)的關(guān) 鍵字字段110位的邏輯"異或"運算108。在每一第!'個位位置處,如果關(guān)鍵字112 位與關(guān)鍵字字段110位匹配,那么"異或"運算柵極108的輸出為低且通過晶體管106 不將電荷從匹配線102引導(dǎo)到接地。如果關(guān)鍵字112位與關(guān)鍵字字段110位錯配,那 么"異或"運算柵極108的輸出為高,從而接通通過晶體管106并將匹配線102拉低。
以此方式,如果關(guān)鍵字112的任何位與關(guān)鍵字字段110的任何對應(yīng)的位錯配,那 么匹配線102被拉低。相反,僅當(dāng)關(guān)鍵字112的每一位與關(guān)鍵字字段110匹配,才不
會建立到接地的路徑,且匹配線102保持為高。讀出電路114在最糟情況匹配線102 放電時間所確定的時間檢測第j'個匹配線102的電平。如果每一關(guān)鍵字字段110是唯 一的,也就是在正常的高速緩沖存儲操作的情況下,那么僅一個關(guān)鍵字字段IIO應(yīng)與 關(guān)鍵字112匹配。在所述情況下,CAM內(nèi)的僅一個匹配線102將保持為高。為確保情 況如此,每一匹配線讀出電路114的輸出去往沖突檢測電路116,其檢測多個匹配且 如果匹配出現(xiàn)則產(chǎn)生錯誤。在CAM應(yīng)用而非高速緩沖存儲器中,可能出現(xiàn)多個匹配, 且優(yōu)先權(quán)編碼器(未顯示)可從與所應(yīng)用的關(guān)鍵字112匹配的兩個或更多個關(guān)鍵字字 段110中選擇。
代表性CAM的關(guān)鍵字字段110可以是20到30個位寬,且所述CAM可包括256 個條目。因此,所述CAM可包括5000到超過7000個匹配線放電晶體管106。為將如 此大的數(shù)量的晶體管106實施于小的芯片面積中要求每一晶體管106較小。由于小的 晶體管106具有較低的電流攜載容量,因此在數(shù)據(jù)誤比較的情況下其需要較長的持續(xù) 時間來將匹配線102放電。最糟的情況是關(guān)鍵字112與關(guān)鍵字字段110之間的單個位 的誤比較,其中僅接通一個晶體管106,且其必須攜載用以驅(qū)散匹配線102上的所有 電荷的電流。如果是兩個或更多個位的誤比較,那么兩個或更多個晶體管106并行工 作以更快地將匹配線102放電。因此,所述CAM的操作的整體速度由單4M立的誤比 較的定時決定。
因此,可通過確保每一錯配關(guān)鍵字字段110的至少兩個位將誤比較來獲得更快的 CAM操作。所屬技術(shù)領(lǐng)域中已知將關(guān)鍵字字段110 (且對應(yīng)地,關(guān)鍵字112)編碼以 增加其海明距離,海明距離是任何兩個數(shù)字值之間誤比較的位的數(shù)量。舉例來說,二 的海明距離(還稱作單個位校驗)確保對于相差一個位的關(guān)鍵字112與關(guān)鍵字字段110 來說,兩個位將在關(guān)鍵字112的經(jīng)編碼的版本與關(guān)鍵字字段110的經(jīng)編碼的版本之間 誤比較。特定來說,所述經(jīng)編碼的版本中的兩個誤比較位是在未經(jīng)編碼的數(shù)據(jù)中相差 的位及所述校驗位。因此,通過單個位校驗來將關(guān)鍵字112及關(guān)鍵字字段110編碼確 保至少兩個位將在其中關(guān)鍵字112與關(guān)鍵字字段110之間存在至少一個位的差異的每 一匹配線102上誤比較。此確保至少兩個晶體管106將并行將匹配線102拉低,從而 導(dǎo)致更快的CAM操作。
當(dāng)高速緩沖存儲線在高速緩沖存儲未命中之后的處理中被取代時,可容易地在將 關(guān)鍵字字段112寫入所述CAM之前將其編碼。然而,對于經(jīng)物理標(biāo)記的高速緩存器 來說,關(guān)鍵字110的部分(頁地址)被從執(zhí)行虛擬-物理地址轉(zhuǎn)換的轉(zhuǎn)換后備緩沖器 (TLB)檢索,且剩余部分(頁偏移)包含管線中所產(chǎn)生的虛擬地址的較低階位。在 經(jīng)虛擬標(biāo)記的高速緩存器的情況下,整個關(guān)鍵字112在所述管線中產(chǎn)生。在任一情況 下,檢索/產(chǎn)生所述地址及存取所述CAM是在臨界定時路徑上,且存在充足的時間在 將關(guān)鍵字112的所有或大部分對照經(jīng)編碼的關(guān)鍵字字段IIO進行比較之前將其編碼, 而不增加機器循環(huán)時間。
發(fā)明內(nèi)容
在一個或一個以上實施例中,在存儲到TLB中之前,將物理地址(其是CAM查 找的搜索關(guān)鍵字)的頁地址部分編碼。然后,從從事于地址轉(zhuǎn)換的TLB中檢索^f述經(jīng) 編碼的頁地址,且將其作為經(jīng)編碼的搜索關(guān)鍵字應(yīng)用到所述CAM,以在所述CAM中 對照經(jīng)編碼的關(guān)鍵字字段進行搜索。所述編碼確保至少二的海明距離,從而《呆^E至少 兩個晶體管針對所述CAM中的每一非匹配關(guān)鍵字字段并行將匹配線放電??蓪⑽锢?地址的頁偏移位(其不存儲在所述TLB中)與TLB存取并行編碼,且在存取所述CAM 之前將所述兩個經(jīng)編碼的物理地址部分連接。在其中存儲在所述TLB中的頁地址尋址 大的存儲器頁大小的一個實施例中,可將所述頁地址分為多個子頁地址,每一子頁地 址尋址較小的頁大小??稍趯⑦@些子頁地址存儲在微型TLB中之前將其編碼。
一個實施例涉及存取具有多個經(jīng)編碼的關(guān)鍵字字段的內(nèi)容可尋址存儲器(CAM) 的方法。將搜索關(guān)鍵字編碼并存儲。使用所述所存儲、經(jīng)編碼的搜索關(guān)鍵字來存取所 述CAM。
另一實施例涉及匹配內(nèi)容可尋址存儲器(CAM)中的地址的方法。將所述地址的 經(jīng)編碼版本作為關(guān)鍵字字段存儲在所述CAM中。將所述地址的至少第一部分的經(jīng)編 碼版本存儲在轉(zhuǎn)換后備緩沖器(TLB)中。將所述來自所述TLB的經(jīng)編碼地址對照所 述CAM中的多個經(jīng)編碼的關(guān)鍵字字段進行比較以檢測是否匹配。
另一實施例涉及處理器。所述處理器包括包含內(nèi)容可尋址存儲器(CAM)及隨機 存取存儲器(RAM)的高速緩沖存儲器。當(dāng)搜索關(guān)鍵字與存儲在所述CAM中的對應(yīng) 的關(guān)鍵字字段匹配時,所述高速緩存器操作以向或從RAM條目存儲或供應(yīng)數(shù)據(jù)。所 述關(guān)鍵字字段由至少二的海明距離編碼。所述處理器還包括操作以將物理地址作為所 述CAM的搜索關(guān)鍵字存儲且輸出的轉(zhuǎn)換后備緩沖器(TLB)。通過與所述CAM關(guān)鍵 字字段相同的算法將所述物理地址編碼。
圖1是CAM結(jié)構(gòu)中的代表性匹配線的部分的功能性方塊圖。
圖2是處理器的功能性方塊圖。
圖3是編碼及存儲頁地址的流程圖。
圖4是檢索經(jīng)編碼的頁地址、編碼頁偏移及將所述經(jīng)編碼的物理地址應(yīng)用到CAM 的流程圖。
具體實施例方式
圖2描繪代表性處理器10的功能性方塊圖。處理器10根據(jù)控制邏輯14在指令 執(zhí)行管線12中執(zhí)行指令。所述管線包括各種寄存器或鎖存器16 (其組織于管線級中)
及一個或一個以上算術(shù)邏輯單元(ALU) 18。通用寄存器(GPR)堆20提供包含存儲 器層級的頂部的寄存器。
所述管線從指令高速緩存器(I-高速緩存器)21提取指令,所述高速緩存器包括 CAM 22及RAM 23。指令存儲器尋址及準(zhǔn)許由指令側(cè)轉(zhuǎn)換后備緩沖器(ITLB) 24管 理。從包括CAM 26及RAM 27的髙速緩存器25存取數(shù)據(jù)。數(shù)據(jù)存儲器尋址及準(zhǔn)許由 主TLB28管理。在各個實施例中,ITLB24可包含TLB28的部分的拷貝。另一選擇 為,可將ITLB 24與TLB 28整合在一起。
另外,處理器IO可包括微型TLB 29。微型TLB 29是小的高速電路,其通常保 存最近從主TLB 28存取的物理地址。處理器10可首先將虛擬地址應(yīng)用到微型TLB29, 且僅當(dāng)在微型TLB 29中無法找到對應(yīng)的頁地址及屬性時存取主TLB 28。在一個實施 例中,微型TLB29條目可尋址比對應(yīng)的TLB28條目小的頁大小,如本文所述。
在處理器10的各個實施例中,可整合或聯(lián)合I高速緩存器22與D高速緩存器26。 在存儲器接口 30的控制下,I高速緩存器22及域D高速緩存器26中的未命中導(dǎo)致 對主(芯片外)存儲器32的存取。處理器10可包括輸入/輸出(I/O)接口 34,從而 控制對各個外圍裝置36的存取。所屬技術(shù)領(lǐng)域的技術(shù)人員將認(rèn)識到處理器10的多種 變化形式是可行的。舉例來說,處理器10可包括用于I及D高速緩存器21、 25中的 任一者或兩者的第二階(L2)高速緩存器。此外,可在特定實施例中省略描繪于處理 器10中的功能性塊中的一者或一者以上。
如在所屬技術(shù)領(lǐng)域中所熟知,大多數(shù)程序就像其對整個處理器可尋址存儲器(例 如,32個地址位)具有排他性的使用一樣來執(zhí)行。此被認(rèn)作虛擬地址,且是在所述管 線中所利用的尋址模式。當(dāng)存取實際的存儲器時,所述虛擬地址由TLB28 (或針對指 令的ITLB 24)轉(zhuǎn)換為物理地址。所述操作系統(tǒng)將每一程序的虛擬地址映射到存儲器 的具體區(qū)域(稱作存儲器頁)。通常,虛擬地址的上或最高有效位被映射到頁地址(TLB 28所提供的部分)。所述虛擬地址的下或最低有效位(稱作頁偏移)將所述存儲器頁 內(nèi)的數(shù)據(jù)加索引;不轉(zhuǎn)換所述頁偏移。為簡明及清楚起見,在從D高速緩存器25的 數(shù)據(jù)存取的上下文中提供以下論述,將從TLB 28獲得的地址與CAM 26相比較。然 而,相同的揭示內(nèi)容適用于從I高速緩存器21、 ITLB 24及I高速緩存器CAM 22的 指令存取。
在一個或一個以上實施例中,當(dāng)存取經(jīng)物理標(biāo)記的高速緩存器25時,通過在將 所述頁地址存儲到TLB 28中之前執(zhí)行大多數(shù)關(guān)鍵字112 (其是物理地址)的編碼來將 將要應(yīng)用于CAM26的所述編碼從臨界定時路徑移除。當(dāng)程序被初始化時,頁表格由 操作系統(tǒng)軟件在TLB 28中設(shè)立??稍谒鰰r間將所述頁地址編碼而不影響處理器性 能。隨后,在對高速緩存器25的存取之后,來自所述管線的虛擬地址由TLB28轉(zhuǎn)換 以獲得經(jīng)編碼的頁地址??膳c所述TLB 28查找并行將必要的頁偏移位編碼,因為所 述地址的此部分比所述頁地址短得多,可在可用的時間中完成所述編碼操作。然后, 可將所述經(jīng)編碼的頁偏移連接到TLB 28所提供的經(jīng)編碼頁地址,且可將每一編碼操
作所產(chǎn)生的校驗位執(zhí)行"異或"運算以獲得最終的校驗位。然后,將所述經(jīng)編碼的物
理地址作為關(guān)鍵字112應(yīng)用到CAM 26,用于對照經(jīng)編碼的關(guān)鍵字字段110進行比較。 此使CAM 26能夠通過使用經(jīng)編碼的關(guān)鍵字字段110及經(jīng)編碼的關(guān)鍵字112而使用較 短的比較時間來操作以確保至少兩個誤比較且因此至少接通兩個放電晶體管106來在 單個位的錯配的最糟情況下將匹配線102放電。
存儲在TLB 28中的頁地址的大小根據(jù)其尋址的存儲器頁的大小相反地變化。對 于較大的頁大小,更少的位被轉(zhuǎn)換及存儲在TLB 28中,且虛擬地址的更多的位用于 所述偏移。在具有非常大的存儲器頁的應(yīng)用中,大量的頁偏移位可排除與TLB 28存 取并行地在"運行中"將這些位編碼。在此情況下,可將所述頁地址分為兩個或更多 個子頁地址,每一子頁地址尋址較小的存儲器頁大小。舉例來說,可將尋址64K的存 儲器頁的頁地址劃分為四個子頁地址,每一子頁地址尋址4K的存儲器頁??蓮?fù)制所 述64K頁的TLB 28屬性且可使其與所述子頁地址中的每一者相關(guān)聯(lián)。
可不將所述4K的子頁地址存儲在TLB 28中,因為當(dāng)執(zhí)行轉(zhuǎn)換操作時其將與所述 64K的頁地址沖突。在一個實施例中,將所述子頁地址編碼并存儲在微型TLB29中。 此是對微型TLB29的低效率使用,因為(例如)需要四個條目來轉(zhuǎn)換在主TLB28中 僅需要一個條目的相同虛擬地址范圍。然而,存儲在微型TLB 29中的經(jīng)編碼子頁地 址各包含比對應(yīng)的頁地址多的位,從而剩下在存取CAM 26之前必須在"運行中"轉(zhuǎn) 換的更少的位。
在圖3及4中以流程圖描繪根據(jù)各個實施例的編碼及存儲關(guān)鍵字112以及存取所 存儲的經(jīng)編碼關(guān)鍵字112及將其應(yīng)用到CAM 26的過程。圖3描繪當(dāng)操作系統(tǒng)軟件設(shè) 立TLB 28時所采取的動作;圖4描繪在程序執(zhí)行(即,在臨界定時路徑上)期間存 取CAM 26的步驟。
參照圖3,操作系統(tǒng)軟件在TLB 28中設(shè)立頁表格(塊40)。取決于所述存儲器 頁的大小(塊42),所述編碼可通過不同的過程繼續(xù)前進。如果所述頁相對較小(塊 42),意指所述頁地址長而所述頁偏移短,那么所述頁地址由至少二的海明距離編碼 (塊44)。然后,將所述經(jīng)編碼的頁地址存儲在TLB28中(塊46)。
另一方面,如果所述存儲器頁較大(塊42),意指所述頁地址較短而所述頁偏移 較長,那么可能不存在充足的時間來在地址轉(zhuǎn)換期間在"運行中"將所述頁偏移的必 要部分編碼。在此情況下,可產(chǎn)生兩個或更多個子頁地址,每一子頁地址尋址比對應(yīng) 的頁地址小的存儲器頁(塊48)。此增加所述子頁地址的長度而減小所述對應(yīng)的頁偏 移的長度,從而允許將所述偏移運行中編碼而不影響機器循環(huán)時間。每一子頁地址由 至少二的海明距離編碼(塊50),且將所述經(jīng)編碼的子頁條目存儲在微型TLB29中。
注意,標(biāo)簽"大"及"小"指示從決策塊42的退出路徑是相對的。如本文所使 用,小的存儲器頁大小是產(chǎn)生小到足以由至少二的海明距離與TLB 28存取并行運行 中編碼的頁偏移的存儲器頁大小。相反,大的存儲器頁大小是產(chǎn)生大到足以與對TLB 28的存取并行運行中編碼的頁偏移的存儲器頁大小。其證明為大或小的實際存儲器頁大小可隨每一實施方案而變化,此取決于許多因素,例如半導(dǎo)體技術(shù),時鐘速度、操
作電壓等。在圖3的流程圖的結(jié)尾,將足夠長的經(jīng)編碼(子)頁地址存儲在TLB 28 或微型TLB 29中。
在隨后的程序執(zhí)行期間,存儲器存取指令在所述執(zhí)行管線中產(chǎn)生虛擬地址(塊 54),且將所述虛擬地址提供到TLB 28及/或微型TLB 29以供轉(zhuǎn)換。TLB 28或微型 TLB29轉(zhuǎn)換所述虛擬地址,且提供經(jīng)編碼的(子)頁地址(塊56)。與TLB 28或微 型TLB29查找并行,所述頁偏移的必要部分由至少二的海明距離編碼(塊58)。在 一個實施例中,然后,將所述經(jīng)編碼的(子)頁地址與經(jīng)編碼的頁偏移連接,且將所 述兩個校驗位執(zhí)行"異或"運算,從而產(chǎn)生具有單個校驗位的經(jīng)編碼物理地址(塊60)。 然后,將此物理地址作為搜索關(guān)鍵字112提供到CAM 26以對照多個經(jīng)編碼的關(guān)鍵字 字段110進行比較(塊62)。
在另一實施例中,將所述頁地址及頁偏移作為每一CAM條目100的單獨關(guān)鍵字 字段110存儲。即,每一CAM條目100包括兩個匹配線102段,且任一段的放電將 示意錯配。在一個實施例中,每一匹配線102段包括匹配線讀出電路114,且在應(yīng)用 到?jīng)_突檢測邏輯116之前將匹配線讀出電路114的輸出AND在一起。在此情況下, 將來自TLB 28的經(jīng)編碼頁地址及來自微型TLB 29的子頁地址應(yīng)用到CAM 26的對應(yīng) 頁地址部分。與TLB 28或微型TLB 29存取并行,所述頁偏移由至少二的海明距離編 碼。然后,與所述(子)頁地址并行將所述經(jīng)編碼的頁偏移應(yīng)用到CAM 26。所述經(jīng)
編碼的(子)頁地址及經(jīng)編碼的頁偏移中的每一者包括校驗位。
在其它實施例中,可出于速度、扇出數(shù)、功率消耗或其它設(shè)計考慮而視需要進一 步將CAM26的匹配線102 (且對應(yīng)地,關(guān)鍵字110)分段。段的數(shù)量及每一段的位長 度可由實施方案的技術(shù)、布局、將要比較的位的數(shù)量、所需要的循環(huán)速度等決定。此 外,可以每一CAM條目IOO僅需要一個匹配線讀出電路114的各種方式來配置及布 置所述段。舉例來說,在一個實施例中,可將匹配線102段級聯(lián)在一起或形成波紋, 使得任一段中的有源放電電路106將整個匹配線102放電。在另一實施例中,匹配線 102可采用層級結(jié)構(gòu),其中每一段連接到全局匹配線102,其在所述所附裝的段中的任 一者放電時放電。所屬技術(shù)領(lǐng)域的技術(shù)人員將認(rèn)識到有利地將匹配線102分割的各種 各樣的方式。
如所屬技術(shù)領(lǐng)域的技術(shù)人員將了解,隨著時間通過高速緩沖存儲未命中處理操作 將經(jīng)編碼的關(guān)鍵字字段110載入CAM26中。在高速緩沖存儲未命中之后,存儲器存 取指令從主存儲器提取所需要的數(shù)據(jù),且將其放入RAM27中,從而取代現(xiàn)有的信息。 對應(yīng)的CAM 26條目由未被命中的經(jīng)編碼物理地址取代。
通過使用至少二的海明距離來將CAM 26的關(guān)鍵字112及關(guān)鍵字字段110編碼, 由于與關(guān)鍵字112相差至少一個位的每一關(guān)鍵字字段110,至少兩個放電晶體管106 將匹配線102放電到接地。可有利地將整個CAM 26定時設(shè)定為兩個晶體管106將匹 配線102放電所需要的時間,而不是一個晶體管106將匹配線102放電所需要的時間,
從而改善CAM 26的操作速度。
所有固態(tài)存儲器傾于出現(xiàn)軟錯誤,所述錯誤是由帶電粒子或輻射導(dǎo)致的所存儲的 數(shù)據(jù)中的錯誤。阿爾法粒子可導(dǎo)致軟錯誤,或宇宙射線可導(dǎo)致電擾。輻射的兩種形式 是隨機的,且軟錯誤可導(dǎo)致關(guān)鍵字字段110中的單個位錯誤。此增加關(guān)鍵字112與關(guān) 鍵字字段110之間出現(xiàn)單個位錯配的可能性??紤]若干種可能性。
首先,如果關(guān)鍵字112與關(guān)鍵字字段110匹配,且所述匹配的關(guān)鍵字字段110接 收單個位的軟錯誤,那么可以或可不將對應(yīng)的CAM26條目檢測為命中。因為使用每 一匹配線102的兩個誤比較的最糟情形情景來設(shè)定整個CAM 26定時,因此單個位的 誤比較可具有充足的時間來在讀出電路114做出評價之間將對應(yīng)的匹配線102完全放 電。在此情況下,將檢測到匹配線102處于高的狀態(tài),其指示匹配。由于關(guān)鍵字112 應(yīng)與此關(guān)鍵字字段110匹配,且由于軟錯誤而僅處于被視為錯配的危險中,那么檢測 到匹配產(chǎn)生高速緩存器26的正確操作,且所述軟錯誤無關(guān)緊要。
在第二種情況中,因軟錯誤而產(chǎn)生的單個位誤比較可足夠快地將匹配線102拉低 以便相關(guān)聯(lián)的讀出電路114將CAM 26條目視為錯配。由于關(guān)鍵字112應(yīng)另外與每一 其它CAM 26條目錯配,因此此導(dǎo)致地址在應(yīng)命中時反而錯誤地在所述高速緩存器中 未命中。處理器10將檢測到高速緩沖存儲未命中,且執(zhí)行對主存儲器32的存取,從 而取代高速緩存器25中的對應(yīng)的線并用所述未命中、經(jīng)編碼的地址更新CAM26,從 而更正所述軟錯誤(以所述主存儲器存取的延遲為代價)。
另一種可能性是關(guān)鍵字112與第一關(guān)鍵字字段110匹配,且與第二關(guān)鍵字字段110 相差單個位。由于用二或更多的海明距離將關(guān)鍵字112及關(guān)鍵字字段110編碼,因此 第二 (錯配)關(guān)鍵字字段110將通過至少兩個放電晶體管106正常放電。如果所述錯 配位或所述校驗位是被軟錯誤破壞的位,那么對應(yīng)的匹配線102將僅通過一個晶體管 106放電,此需要如此長的時間以至于對應(yīng)的讀出電路114將匹配線102檢測為高, 其指示匹配。關(guān)鍵字112另外與第一關(guān)鍵字字段110匹配;因此,關(guān)鍵字112看似已 匹配或命中多于一個CAM26條目。在此情況下,監(jiān)視所有匹配線讀出電路114的輸 出的沖突檢測電路116將檢測到所述明顯的雙重匹配并導(dǎo)致錯誤。
又一種可能性是關(guān)鍵字112與關(guān)鍵字字段IIO相差兩個位。通過二的海明距離將 關(guān)鍵字112及關(guān)鍵字字段110編碼意指其將具有相同的校驗位。舉例來說,包含所有 0的關(guān)鍵字字段110在偶校驗的情況下將具有0校驗位。關(guān)鍵字112包含兩個1,且所 有其它位是0;此關(guān)鍵字112也將具有0校驗位。如果軟錯誤在對應(yīng)于關(guān)鍵字112中 的1位中的一者的位置中將關(guān)鍵字字段110的O位中的一者破壞為1,那么關(guān)鍵字112 與關(guān)鍵字字段UO僅相差一個位(關(guān)鍵字112中的另一1位)。如果將CAM26定時 設(shè)定為每一誤比較兩個放電電路106的最糟情形,那么匹配線102可在此情形中保持 為高,且CAM26將檢測到錯誤匹配,從而在高速緩存器21、 25中產(chǎn)生錯誤的命中。
一種避免此種可能性的方式是通過三或更多的海明距離將關(guān)鍵字112及關(guān)鍵字字 段110編碼。此在計算上更加復(fù)雜,且對于CAM26中的每一條目IIO以及對于TLB
28或微型TLB 29中的每一 (子)頁地址需要多于一個的校驗位。另一方面,三的海 明距離將提高CAM26的速度(針對同一種技術(shù)),因為至少三個放電106將將每一 誤比較的匹配線102放電(至少在不存在軟錯誤的情況下)。給定本揭示內(nèi)容的教示, 更高階的海明距離當(dāng)然是可能的且將是所屬技術(shù)領(lǐng)域的技術(shù)人員明了的實施方案。然 而,在CAM26加速中存在回報遞減,以通過增加更多的冗余存儲元件IIO ("異或" 運算柵極108及放電晶體管106)來增加CAM26的大小及其功率消耗為代價。
作為增加海明距離的替代方案,可在所述(錯誤的)高速緩沖存儲命中之后通過 所述高速緩存器控制器來檢測上述錯誤狀況,且如果檢測到所述狀況,那么錯誤產(chǎn)生。 在高速緩沖存儲命中之后,所述高速緩存器控制器讀出關(guān)鍵字字段110。撇開所述校 驗位,且重新產(chǎn)生剩余關(guān)鍵字字段110的校驗且將其與從CAM 26讀取的校驗相比較。 如果所述校驗位不匹配,那么所述高速緩存器控制器使條目IOO失效并產(chǎn)生例外。在 將機器狀態(tài)恢復(fù)到所述高速緩存器存取之前的狀態(tài)之后,所述處理器將再次存取高速 緩存器21、 25,從而產(chǎn)生高速緩沖存儲未命中。然后,將正確的、經(jīng)編碼的關(guān)鍵字字 段110作為所述高速緩沖存儲未命中處理操作的部分寫入到CAM 26。由于所述高速 緩存器控制器在將所述高速緩沖存儲線傳遞到處理器管線12之后讀取并校驗-檢查字 段關(guān)鍵字110,因此此操作不會不利地影響高速緩存器性能。
雖然在本文中在作為高速緩沖存儲器25的部分的CAM 26的上下文中闡述本發(fā) 明,但所屬技術(shù)領(lǐng)域中的技術(shù)人員將容易地認(rèn)識到本發(fā)明并不限于所述應(yīng)用。內(nèi)容可 尋址存儲器用于各種電路及系統(tǒng),包括其中"窺探"地址以支持高速緩存器一致性方 案的數(shù)據(jù)緩沖器、其中對照CAM搜索IP地址的包路由器及類似物。在許多此類應(yīng)用 中,可通過將所述關(guān)鍵字字段編碼而導(dǎo)致兩個或更多個放電電路在錯配時啟用來改善 CAM速度,通過存儲將要對照所述CAM應(yīng)用的經(jīng)編碼關(guān)鍵字而不影響整體循環(huán)時間。
雖然本文已就本發(fā)明的特定特征、方面及實施例闡述了本發(fā)明,但應(yīng)了解,在本 發(fā)明的廣泛范圍內(nèi)的許多變化形式、修改及其它實施例是可行的,且因此應(yīng)認(rèn)為所有 變化形式、修改及實施例歸屬于本發(fā)明的范圍內(nèi)。因此,應(yīng)在所有方面中將本發(fā)明實 施例視為說明性的而并非限制性,且歸屬于隨附權(quán)利要求書的意義和等效范圍內(nèi)的所 有變化既定涵蓋于其中。
權(quán)利要求
1、一種存取具有多個經(jīng)編碼的關(guān)鍵字字段的內(nèi)容可尋址存儲器(CAM)的方法,其包含對搜索關(guān)鍵字進行編碼;存儲所述經(jīng)編碼的搜索關(guān)鍵字;及使用所述存儲的、經(jīng)編碼的搜索關(guān)鍵字來存取所述CAM。
2、 如權(quán)利要求1所述的方法,其中對搜索關(guān)鍵字進行編碼包含用為二的海明距 離對所述搜索關(guān)鍵字進行編碼。
3、 如權(quán)利要求1所述的方法,其中對搜索關(guān)鍵字進行編碼包含用為三的海明距 離對所述搜索關(guān)鍵字進行編碼。
4、 如權(quán)利要求1所述的方法,其中盡管在一個或一個以上經(jīng)編碼的關(guān)鍵字字段 中有單個位錯誤,使用所述存儲的、經(jīng)編碼的搜索關(guān)鍵字存取所述CAM產(chǎn)生正確的 結(jié)果。
5、 如權(quán)利要求1所述的方法,其中對搜索關(guān)鍵字進行編碼包含對所述搜索關(guān)鍵 字的第一部分進行編碼,且其中存儲所述經(jīng)編碼的搜索關(guān)鍵字包含存儲所述搜索關(guān)鍵 字的所述經(jīng)編碼的第一部分。
6、 如權(quán)利要求5所述的方法,其進一步包含對所述搜索關(guān)鍵字的第二部分進行 編碼,且其中使用所述存儲的、經(jīng)編碼的搜索關(guān)鍵字來存取所述CAM包含使用所述 搜索關(guān)鍵字的與所述搜索關(guān)鍵字的所述經(jīng)編碼的第二部分連接的所述經(jīng)編碼的第一部 分。
7、 如權(quán)利要求l所述的方法,其中所述搜索關(guān)鍵字包含物理地址。
8、 如權(quán)利要求7所述的方法,其中存儲所述經(jīng)編碼的搜索關(guān)鍵字包含將所述物 理地址的經(jīng)編碼頁地址部分存儲在轉(zhuǎn)換后備緩沖器(TLB)中。
9、 如權(quán)利要求8所述的方法,其進一步包含從所述頁地址產(chǎn)生兩個或更多個子頁地址,每一子頁地址尋址一比所述頁地址小的存儲器頁大??;對至少一個子頁地址進行編碼;及將所述經(jīng)編碼的子頁地址存儲在微型TLB中;其中使用所述存儲的、經(jīng)編碼的搜索關(guān)鍵字存取所述CAM包含使用所述微型 TLB中的所述經(jīng)編碼的子頁地址中的一者存取所述CAM。
10、 如權(quán)利要求l所述的方法,其中用為二的海明距離對每一經(jīng)編碼的關(guān)鍵字字 段進行編碼且所述每一經(jīng)編碼的關(guān)鍵字字段包括校驗位,且如果在所述經(jīng)編碼的搜索 關(guān)鍵字與經(jīng)編碼的關(guān)鍵字字段之間檢測到匹配,那么所述方法進一步包含從所述CAM讀取所述經(jīng)編碼的關(guān)鍵字字段,包括所述存儲的校驗位;為所述經(jīng)編碼的關(guān)鍵字字段重新產(chǎn)生校驗位; 將所述重新產(chǎn)生的校驗位與所述存儲的校驗位相比較;及 如果所述校驗位誤比較,那么產(chǎn)生錯誤。
11、 一種在內(nèi)容可尋址存儲器(CAM)中匹配地址的方法,其包含 將所述地址處的經(jīng)編碼版本作為關(guān)鍵字字段存儲在所述CAM中; 將所述地址的頁地址部分的經(jīng)編碼版本存儲在轉(zhuǎn)換后備緩沖器(TLB)中;及 將來自所述TLB的所述經(jīng)編碼地址與所述CAM中的多個經(jīng)編碼關(guān)鍵字字段進行比較以檢測匹配。
12、 如權(quán)利要求11所述的方法,其中所述地址的所述經(jīng)編碼版本是用為二的海 明距離進行編碼的地址。
13、 如權(quán)利要求11所述的方法,其中所述地址的所述經(jīng)編碼版本是用為三的海 明距離進行編碼的地址。
14、 如權(quán)利要求11所述的方法,其中盡管在一個或一個以上經(jīng)編碼關(guān)鍵字字段 中有單個位錯誤,將來自所述TLB的所述經(jīng)編碼地址與所述CAM中的多個經(jīng)編碼關(guān) 鍵字字段進行比較正確地檢測到匹配。
15、 如權(quán)利要求11所述的方法,其進一步包含對所述地址的頁偏移部分進行編 碼,其中將來自所述TLB的所述經(jīng)編碼地址與所述CAM中的多個經(jīng)編碼關(guān)鍵字字段 進行比較包含將來自所述TLB的與所述經(jīng)編碼的頁偏移連接的所述經(jīng)編碼頁地址與 所述CAM中的多個經(jīng)編碼關(guān)鍵字字段進行比較。
16、 如權(quán)利要求ll所述的方法,其進一步包含從所述頁地址產(chǎn)生兩個或更多個子頁地址,每一子頁地址尋址一比所述頁地址小的存儲器頁大??;對至少一個子頁地址進行編碼;及將所述經(jīng)編碼的子頁地址存儲在微型TLB中;其中將來自所述TLB的所述經(jīng)編碼地址與所述CAM中的多個經(jīng)編碼關(guān)鍵字字段 進行比較包含將來自所述TLB的經(jīng)編碼子頁地址與所述CAM中的多個經(jīng)編碼關(guān)鍵字 字段進行比較。
17、 如權(quán)利要求11所述的方法,其中用為二的海明距離對所述CAM中的每一經(jīng) 編碼關(guān)鍵字字段進行編碼且所述每一經(jīng)編碼關(guān)鍵字字段包括校驗位,且如果在來自所 述TLB的所述經(jīng)編碼的地址與所述CAM中的經(jīng)編碼關(guān)鍵字字段之間檢測到匹配,那么所述方法進一步包含從所述CAM讀取所述經(jīng)編碼的關(guān)鍵字字段,包括所述存儲的校驗位; 為所述經(jīng)編碼的關(guān)鍵字字段重新產(chǎn)生校驗位; 將所述重新產(chǎn)生的校驗位與所述存儲的校驗位相比較;及 如果所述校驗位誤比較,那么產(chǎn)生錯誤。
18、 一種處理器,其包含高速緩沖存儲器,其包含內(nèi)容可尋址存儲器(CAM)及隨機存取存儲器(RAM), 當(dāng)搜索關(guān)鍵字與存儲在所述CAM中的對應(yīng)關(guān)鍵字字段匹配時,所述高速緩存器操作 以向RAM條目存儲數(shù)據(jù)或從RAM條目供應(yīng)數(shù)據(jù),所述關(guān)鍵字字段通過至少為二的海 明距離進行編碼;及轉(zhuǎn)換后備緩沖器(TLB),其操作以將頁地址作為所述CAM的搜索關(guān)鍵字存儲 及輸出,所述頁地址通過與所述CAM關(guān)鍵字字段相同的算法進行編碼。
19、 如權(quán)利要求18所述的處理器,其中所述CAM關(guān)鍵字字段及所述TLB物理 地址通過為三的海明距離進行編碼。
20、 如權(quán)利要求18所述的處理器,其進一步包含微型TLB,所述微型TLB操作 以存儲對應(yīng)于所述TLB中的一個頁地址的兩個或更多個子頁地址,所述子頁地址尋址 小于所述TLB頁地址的存儲器頁大小,所述微型TLB操作以將所述子頁地址中的一 者作為所述CAM的搜索關(guān)鍵字來供應(yīng)。
21、 如權(quán)利要求18所述的處理器,其中每一CAM條目包含預(yù)充電到高狀態(tài)且通 過所述搜索關(guān)鍵字的每一位的放電晶體管放電的匹配線,所述搜索關(guān)鍵字的所述每一 位與存儲在所述條目中的所述關(guān)鍵字字段的對應(yīng)位錯配,且其中與校驗位相關(guān)f^的所 述放電晶體管操作以比所述CAM條目中的其它放電晶體管放出更多的電流。
22、 如權(quán)利要求18所述的處理器,其中,如果搜索關(guān)鍵字與關(guān)鍵字字段匹配, 那么所述高速緩存器進一步操作以讀出所述關(guān)鍵字字段及所存儲的關(guān)鍵字字段校驗 位,為所述關(guān)鍵字字段重新產(chǎn)生校驗位,將所述重新產(chǎn)生的校驗位與所述所存儲的校 驗位相比較,且如果所述校驗位錯配,那么產(chǎn)生錯誤。
全文摘要
用至少為二的海明距離對高速緩存器中的CAM的搜索關(guān)鍵字及關(guān)鍵字字段進行編碼以通過確保每一錯配的匹配線被至少兩個并聯(lián)的晶體管放電來提高所述CAM的速度。在所述高速緩存器經(jīng)物理標(biāo)記的地方,所述搜索關(guān)鍵字是物理地址。在存儲在TLB中之前對所述物理地址的頁地址部分進行編碼。將頁偏移位與所述TLB存取并行編碼,且將所述頁偏移位與經(jīng)編碼的TLB條目連接。如果頁地址尋址大的存儲器頁大小,那么可產(chǎn)生多個對應(yīng)的子頁地址,每一子頁地址尋址一較小的頁大小。可將這些子頁地址編碼并存儲在微型TLB中。所述經(jīng)編碼的關(guān)鍵字及關(guān)鍵字字段容許單個位的軟錯誤。
文檔編號G11C15/04GK101341547SQ200680048345
公開日2009年1月7日 申請日期2006年10月30日 優(yōu)先權(quán)日2005年10月28日
發(fā)明者杰弗里·赫伯特·費希爾, 蔡賈名, 詹姆斯·諾里斯·迪芬德爾費爾, 邁克爾·泰坦·潘 申請人:高通股份有限公司