專利名稱:用于檢測cam陣列中的多次命中的設(shè)備和方法
技術(shù)領(lǐng)域:
一般來說,本發(fā)明涉及數(shù)據(jù)處理系統(tǒng)的改進(jìn)的存儲器,具體來說,但不僅限于,涉及用于檢測內(nèi)容可尋址存儲器(CAM)陣列中的多次命中的設(shè)備和方法。
背景技術(shù):
CAM或關(guān)聯(lián)的存儲器是通常用于高速搜索應(yīng)用中的特殊類型的存儲設(shè)備。每一個CAM設(shè)備都包括比較邏輯,以便可以在設(shè)備內(nèi)比較位位置的內(nèi)容。在標(biāo)準(zhǔn)的計算機(jī)存儲設(shè)備(例如,DRAM、SRAM、等等)中,它們的位是通過存儲器位置來尋址的,它們的位的內(nèi)容被傳送到存儲設(shè)備外面的算術(shù)邏輯單元(ALU),以便進(jìn)行比較。
數(shù)據(jù)字可以輸入到CAM設(shè)備中,CAM設(shè)備可以對其整個存儲器進(jìn)行搜索,以查找輸入字。如果CAM設(shè)備在其存儲器中查找到字,則該設(shè)備返回一個列表,其中具有查找到字的存儲器位置的存儲地址。如此,CAM設(shè)備可以在一次操作中對其整個存儲器進(jìn)行這樣的搜索。因此,對于大多數(shù)搜索應(yīng)用,CAM設(shè)備比RAM設(shè)備快得多。
向CAM設(shè)備輸入的所有字(例如,項目)都可以與設(shè)備中存儲的字進(jìn)行比較。然而,設(shè)備中至多只有一個存儲的字應(yīng)該匹配該項目。盡管如此,現(xiàn)有的CAM設(shè)備所存在的一個嚴(yán)重問題是,電路故障或CAM設(shè)備外部的軟件錯誤可能會導(dǎo)致所謂的“多次命中”的發(fā)生。如果存在多次命中的狀況,則在CAM設(shè)備中啟用多個字線,并返回錯誤的輸出。在這樣的情況下,在可能返回這樣的錯誤輸出之前檢測CAM設(shè)備中的多次命中的狀況十分重要。然而,現(xiàn)有的用于檢測CAM設(shè)備中的多次命中狀況的技術(shù)在空間方面產(chǎn)生大量的損失,因為需要許多門才能接通設(shè)備中的所有的字線,以便判斷是否啟用或打開了一個以上的字線。
因此,應(yīng)該具有一種用于檢測CAM設(shè)備中的多次命中狀況的設(shè)備和方法,它們至少應(yīng)該不會在空間方面招致大量的損失。
發(fā)明內(nèi)容
根據(jù)本發(fā)明的優(yōu)選實施例,為到CAM陣列的每一個項目都存儲了真地址和補(bǔ)碼地址值。每一個項目的存儲的真地址和補(bǔ)碼地址位置值用于判斷是否存在多次命中的狀況??梢宰x出地址位置的真值和補(bǔ)充值,并對其進(jìn)行“異或”運(yùn)算。如果對于該地址位置存在單次命中,那么,可以輸出匹配的項目的地址位置。然而,如果有多次命中的狀況(例如,匹配了一個以上的地址位置),則構(gòu)成二進(jìn)制地址值和補(bǔ)充地址值的所有位不是彼此的補(bǔ)碼。因此,可以通過用該地址位置值的補(bǔ)碼對輸出地址位置值的每一個位進(jìn)行“異或”運(yùn)算來檢測多次命中的狀況。關(guān)于這一點(diǎn),如果被“異或”的位等于“1”,那么,發(fā)生了單次命中。否則,如果被“異或”的位不等于“1”,那么,發(fā)生了多次命中(例如,匹配一個以上的地址)。
在所附的權(quán)利要求中闡述了本發(fā)明的新穎的特征。然而,本發(fā)明本身,以及優(yōu)選的使用模式,進(jìn)一步的目標(biāo)和優(yōu)點(diǎn),通過參考對說明性的實施例的詳細(xì)描述并參考附圖,將得到最好的理解,其中圖1是VLSI微處理器的負(fù)載/存儲單元(LSU)的子部分的圖形表示;圖2是描述了根據(jù)本發(fā)明的優(yōu)選實施例的典型的CAM的圖表;以及圖3是描述了根據(jù)本發(fā)明的優(yōu)選實施例的典型的CAM地址單元的圖表。
具體實施例方式
圖1顯示了VLSI微處理器的負(fù)載/存儲單元(LSU)的子部分。LSU100負(fù)責(zé)將舊數(shù)據(jù)從存儲器中加載到處理器中,并將新計算出的數(shù)據(jù)存儲回存儲器中。圖1中描述的相關(guān)子部分包括用于計算存儲器的“有效地址”的加法器102。此地址被提供給有效地址到實地址轉(zhuǎn)換單元(ERAT)104,該單元包括內(nèi)容可尋址存儲器(CAM)106和RAM108。有效地址被提供給CAM106,同時搜索所有項目,以查找匹配在其輸入中提供的有效地址的項目。如果發(fā)現(xiàn)單次匹配(一次命中),則將作為“命中地址”輸出匹配項目的字地址,并將同一個字地址立即轉(zhuǎn)換為ERAT104內(nèi)的RAM108的字線地址。此字線用于訪問ERAT104內(nèi)的RAM108。RAM108中存儲的字是然后用于訪問存儲器的“實地址”。如果在CAM106中有效地址丟失(沒有命中),則隨后將一對新的有效和實地址寫入ERAT104中。
如果匹配了一個以上的項目,則這表示很少發(fā)生軟件錯誤,必須啟動恢復(fù)機(jī)制,因為“實地址”將會由于多個字線在RAM108中活動而被損壞。要啟動此恢復(fù)過程,需要“多次命中”檢測機(jī)制。
現(xiàn)在請參看圖2,該圖描述了顯示根據(jù)本發(fā)明的優(yōu)選實施例的典型的CAM結(jié)構(gòu)的圖表。對于此說明性示例,CAM200被構(gòu)造為陣列。然而,圖2中描述的結(jié)構(gòu)類型不作為對本發(fā)明的體系結(jié)構(gòu)的限制,本發(fā)明的范圍可以包括任何合適的存儲器結(jié)構(gòu)。如此,CAM200包括多個地址單元(例如,位)202a-202n,204a-204n和206a-206n,優(yōu)選情況下,被排列為陣列。例如,單元202a-202n可以構(gòu)成陣列的第一列,單元204a-204n可以構(gòu)成陣列的第二列,單元206a-206n可以構(gòu)成陣列的第三列。如此,對于此示例,單元202a、204a和206a可以構(gòu)成陣列中的第一行,于是,單元202n、204n和206n可以構(gòu)成陣列中的第n行。如此,CAM200是為了進(jìn)行說明而顯示的,地址單元具有三列和八行。然而,應(yīng)該理解,本發(fā)明不是如此局限,并可以包括具有比圖2的示例結(jié)構(gòu)中所顯示的單元更多或更少列和/或更多或更少行的CAM。
對于此典型的實施例,CAM200中的每一個項目0-7都存儲了其地址位置的真值和補(bǔ)充值。地址的每一個位都在物理上與所有其他項目(例如,由垂直方向的點(diǎn)代表)進(jìn)行“或”運(yùn)算。圖2中的CAM200說明了具有8個項目的陣列的這樣的特點(diǎn),其中,三個單元用于存儲真地址值和補(bǔ)碼地址值。換句話說,每一個項目0-7都代表了包含三個位的字線(例如,項目0包括單元202a、204a、206a),每一個項目0-7都具有唯一地址(例如,項目0可以具有地址“000”,項目1可以具有地址“001”,依此類推,項目7都具有地址“007”)。
此外,CAM200中的每一個地址單元都連接到關(guān)聯(lián)的位線對。例如,每一個單元202a-202n都連接到bit-line<0>203a和bit-linebar<0>203b。如此,bit-line<0>203a代表單元202a-202n的(被“或”運(yùn)算的)真地址值,而bit-line bar<0>203b代表那些相同單元的(被“或”運(yùn)算的)補(bǔ)碼地址值。如此,由此可見,bit-line<1>205a代表單元204a-204n的真地址值,而bit-line bar<1>205b代表那些相同單元的補(bǔ)碼地址值。同樣,bit-line<2>207a代表單元206a-206n的真地址值,而bit-line bar<2>207b代表那些相同單元的補(bǔ)碼地址值。
本質(zhì)上,根據(jù)本發(fā)明的優(yōu)選實施例,為到CAM陣列的每一個項目都存儲了真地址和補(bǔ)碼地址值。每一個項目的存儲的真地址和補(bǔ)碼地址位置值用于判斷是否發(fā)生了多次命中的狀況。例如,項目2(例如,在圖2中)可以存儲地址位置“2”的二進(jìn)制值,而項目7可以存儲地址位置“7”的二進(jìn)制值。根據(jù)本發(fā)明,可以讀出地址位置的真值和補(bǔ)充值,并對其進(jìn)行“異或”運(yùn)算。如果對于該地址位置存在單次命中,那么,可以輸出匹配的項目的地址位置(即,可以輸出該位置的真地址值和補(bǔ)碼地址值)。然而,如果有多次命中的狀況(例如,匹配了一個以上的地址位置),則構(gòu)成二進(jìn)制地址值和補(bǔ)充地址值的所有位不是彼此的補(bǔ)碼。因此,可以通過用地址位置值的補(bǔ)碼對輸出地址位置值的每一個位進(jìn)行“異或”運(yùn)算來檢測多次命中的狀況。在這方面,如果被“異或”的所有位都等于“1”,那么,發(fā)生了單次命中。否則,如果被“異或”的所有位都不等于“1”,那么,發(fā)生了多次命中(例如,匹配一個以上的地址)。
現(xiàn)在請參看圖3,該圖描述了顯示根據(jù)本發(fā)明的優(yōu)選實施例的典型的CAM地址單元結(jié)構(gòu)的圖表。例如,圖3所示的單元300可以用來實現(xiàn)圖2中的任何地址單元202a-202n、204a-204n、和/或206a-206n。此外,對于此典型的實施例,單元300是作為RAM類型的單元來描述的,但是本發(fā)明不是如此局限,并可以包括其他類型的非永久存儲器,如ROM等等。
本質(zhì)上,如上文參考圖2所進(jìn)行描述的,所有項目0-7的位線優(yōu)選情況下被“或”在一起。因此,對于此典型的實施例,單元300被配置為單端的下拉單元。如此,位線302(例如,表示為blrt)表示為真值,而位線304(例如,表示為blrc)代表相應(yīng)的真值的補(bǔ)碼。
對于此示例,單元300包括兩個晶體管306和308。對于許多CAM應(yīng)用,可以使用MOS晶體管來作為晶體管306和308。此外,依據(jù)應(yīng)用和所希望的電源的極性,單元300可以用n型溝道MOS(NMOS)或p型溝道MOS(PMOS)晶體管來實現(xiàn)。如圖所示,字線322通過針腳310(bits_0)連接到晶體管306的柵極,雖然字線322也可以通過針腳312(bits_1)連接到晶體管308的柵極。字線322可以根據(jù)需要連接到針腳310或312,以提供適當(dāng)?shù)牡刂分岛脱a(bǔ)碼地址值。
在所描述的示例中,真值位線(blrt)302連接到晶體管306的漏極,補(bǔ)充值位線(blrc)304連接到晶體管308的漏極。如此,對于在字線(wl)322處輸入的項目,晶體管306被打開,被通過晶體管306的電流存儲了一個位,并被放置在真位線(blrt)302中。該位的補(bǔ)碼被通過晶體管308的電流存儲并被放置在補(bǔ)充位線(blrc)304中。因此,如果在真位線(blrt)302中存在“1”值,那么,在補(bǔ)充位線(blrc)304存在“0”值,當(dāng)顛倒門連接時,情況相反。例如,要在單元300中存儲“1”值,則將bits_0連接到地線,將bits_1連接到字線(wl)322。真值在真位線(blrt)302上輸出,該位的補(bǔ)碼存儲并被放置在補(bǔ)充位線(blrc)304中?;蛘?,要在單元300中存儲“0”值,則將bits_0連接到字線(wl)322,將bits_1連接到地線。值得注意的是,為實現(xiàn)本發(fā)明,不需要連接到地線的晶體管門。然而,為了方便起見,使用此特定的實現(xiàn)方式也允許使用相同的單元。
也是根據(jù)本發(fā)明,如果每一個真地址位(例如,blrt 302)都與其相應(yīng)的補(bǔ)碼地址位(例如,blrc 304)進(jìn)行“異或”運(yùn)算,則對于單次命中,結(jié)果等于“1”。然而,如果命中了多個項目,對于與它們相應(yīng)的補(bǔ)碼地址位進(jìn)行“異或”的某些真地址位,它們的結(jié)果不等于“1”。如此,可以以此方式檢測多次命中的狀況。
值得注意的是,盡管是在完全運(yùn)轉(zhuǎn)的數(shù)據(jù)處理系統(tǒng)的上下文中描述本發(fā)明的,那些精通本技術(shù)的普通人員將認(rèn)識到,本發(fā)明的進(jìn)程能夠以存儲了指令的計算機(jī)可讀的介質(zhì)的形式和各種各樣的形式進(jìn)行分發(fā),本發(fā)明同樣適用,不管實際用于進(jìn)行分發(fā)的承載信號的介質(zhì)的特定類型是什么。計算機(jī)可讀的介質(zhì)的示例包括可記錄類型的介質(zhì),如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、DVD-ROM、傳輸類型的介質(zhì),例如使用諸如射頻和光波傳輸?shù)膫鬏斝问降臄?shù)字和模擬通信鏈路、有線或無線通信鏈路。計算機(jī)可讀的介質(zhì)可以采取編碼格式的形式,這些編碼在特定數(shù)據(jù)處理系統(tǒng)中實際使用時被解碼。
本發(fā)明的說明書只作說明,而不是詳盡的說明或限于所說明的形式。那些精通本技術(shù)的普通人員將認(rèn)識到,可以進(jìn)行許多修改。所選擇的實施例只是為了最好地說明本發(fā)明的原理,實際應(yīng)用,并使精通本技術(shù)的其他人懂得,帶有各種修改的各種實施例也是可以接受的。
權(quán)利要求
1.一種用于檢測內(nèi)容可尋址存儲器中的多次命中狀況的方法,包括下列步驟將第一項目的第一地址位置值和所述第一地址位置值的補(bǔ)碼存儲到內(nèi)容可尋址存儲器;將第n項目的第n地址位置值和所述第n地址位置值的補(bǔ)碼存儲到內(nèi)容可尋址存儲器;對于所述第一地址位置值和所述第n地址位置值執(zhí)行第一“或”運(yùn)算;對于所述第一地址位置值的所述補(bǔ)碼和所述第n地址位置值的所述補(bǔ)碼執(zhí)行第二“或”運(yùn)算;以及對所述第一“或”運(yùn)算的結(jié)果和所述第二“或”運(yùn)算的結(jié)果執(zhí)行“異或”運(yùn)算。
2.根據(jù)權(quán)利要求1所述的方法,其中,“異或”運(yùn)算包括檢測多次命中狀況的步驟。
3.根據(jù)權(quán)利要求2所述的方法,其中,檢測多次命中狀況的步驟包括判斷所述“異或”運(yùn)算的結(jié)果是否是等于“0”的值的步驟。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述第一項目包括項目“0”,所述第n項目包括項目“7”。
5.根據(jù)權(quán)利要求1所述的方法,其中,在所述內(nèi)容可尋址存儲器的第一位線中存在所述第一地址位置值,在所述內(nèi)容可尋址存儲器的第二位線中存在所述第一地址位置值的所述補(bǔ)碼。
6.根據(jù)權(quán)利要求1所述的方法,其中,在所述內(nèi)容可尋址存儲器的第三位線中存在所述第n地址位置值,在所述內(nèi)容可尋址存儲器的第四位線中存在所述第n地址位置值的所述補(bǔ)碼。
7.根據(jù)權(quán)利要求1所述的方法,其中,所述內(nèi)容可尋址存儲器包括陣列。
8.一種內(nèi)容可尋址存儲器,包括用于將第一項目的第一地址位置值和所述第一地址位置值的補(bǔ)碼存儲到內(nèi)容可尋址存儲器的裝置;用于將第n項目的第n地址位置值和所述第n地址位置值的補(bǔ)碼存儲到內(nèi)容可尋址存儲器的裝置;用于對于所述第一地址位置值和所述第n地址位置值執(zhí)行第一“或”運(yùn)算的裝置;用于對于所述第一地址位置值的所述補(bǔ)碼和所述第n地址位置值的所述補(bǔ)碼執(zhí)行第二“或”運(yùn)算的裝置;以及用于對所述第一“或”運(yùn)算的結(jié)果和所述第二“或”運(yùn)算的結(jié)果執(zhí)行“異或”運(yùn)算的裝置。
9.根據(jù)權(quán)利要求8所述的內(nèi)容可尋址存儲器,其中,所述用于執(zhí)行“異或”運(yùn)算的裝置包括用于檢測多次命中狀況的裝置。
10.根據(jù)權(quán)利要求9所述的內(nèi)容可尋址存儲器,其中,所述用于檢測多次命中狀況的裝置包括用于判斷所述“異或”運(yùn)算的結(jié)果是否是等于“0”的值的裝置。
11.根據(jù)權(quán)利要求8所述的內(nèi)容可尋址存儲器,其中,所述第一項目包括項目“0”,所述第n項目包括項目“7”。
12.根據(jù)權(quán)利要求8所述的內(nèi)容可尋址存儲器,其中,在所述內(nèi)容可尋址存儲器的第一位線中存在所述第一地址位置值,在所述內(nèi)容可尋址存儲器的第二位線中存在所述第一地址位置值的所述補(bǔ)碼。
13.根據(jù)權(quán)利要求8所述的內(nèi)容可尋址存儲器,其中,在所述內(nèi)容可尋址存儲器的第三位線中存在所述第n地址位置值,在所述內(nèi)容可尋址存儲器的第四位線中存在所述第n地址位置值的所述補(bǔ)碼。
14.根據(jù)權(quán)利要求8所述的內(nèi)容可尋址存儲器,進(jìn)一步包括陣列。
15.一種內(nèi)容可尋址存儲器,包括多個地址單元,所述多個地址單元排列為M×N的陣列,其中,M代表所述陣列的多個行,N代表所述陣列的多個列,所述陣列包括用于將每一個單元的地址位置值和所述地址位置值的補(bǔ)碼存儲在所述陣列中的裝置;用于對所述陣列的列N中的所有單元執(zhí)行“或”運(yùn)算的裝置;以及用于對所述“或”運(yùn)算的結(jié)果執(zhí)行“異或”運(yùn)算的裝置。
16.計算機(jī)可讀的介質(zhì)中的用于檢測內(nèi)容可尋址存儲器中的多次命中狀況的計算機(jī)程序產(chǎn)品,該計算機(jī)程序產(chǎn)品包括用于將第一項目的第一地址位置值和所述第一地址位置值的補(bǔ)碼存儲到內(nèi)容可尋址存儲器的第一指令;用于將第n項目的第n地址位置值和所述第n地址位置值的補(bǔ)碼存儲到內(nèi)容可尋址存儲器的第二指令;用于對于所述第一地址位置值和所述第n地址位置值執(zhí)行第一“或”運(yùn)算的第三指令;用于對于所述第一地址位置值的所述補(bǔ)碼和所述第n地址位置值的所述補(bǔ)碼執(zhí)行第二“或”運(yùn)算的第四指令;以及用于對所述第一“或”運(yùn)算的結(jié)果和所述第二“或”運(yùn)算的結(jié)果執(zhí)行“異或”運(yùn)算的第五指令。
17.根據(jù)權(quán)利要求16所述的計算機(jī)程序產(chǎn)品,其中,第五指令包括用于檢測多次命中狀況的指令。
18.根據(jù)權(quán)利要求17所述的計算機(jī)程序產(chǎn)品,其中,用于檢測多次命中狀況的第五指令包括用于判斷所述“異或”運(yùn)算的結(jié)果是否是等于“0”的值的指令。
19.根據(jù)權(quán)利要求16所述的計算機(jī)程序產(chǎn)品,其中,所述內(nèi)容可尋址存儲器包括陣列。
20.一種內(nèi)容可尋址存儲器,包括多個地址單元,所述多個地址單元排列為M×N的陣列,其中,M代表所述陣列的多個行,N代表所述陣列的多個列,所述陣列包括包括所述陣列中的每一個單元的地址位置值和所述地址位置值的補(bǔ)碼的存儲設(shè)備;用于對所述陣列的列N中的所有單元執(zhí)行“或”運(yùn)算的邏輯器件;以及用于對所述“或”運(yùn)算的結(jié)果執(zhí)行“異或”運(yùn)算的邏輯器件。
全文摘要
說明了用于檢測CAM陣列中的多次命中的設(shè)備和方法。為CAM陣列的每一個項目都存儲了二進(jìn)制地址值,并輸出該值,以標(biāo)識單次命中的匹配項目。然而,為進(jìn)行多次命中檢測,存儲了此地址的真值和補(bǔ)充值,并將它們輸出,以判斷是否發(fā)生多次命中。如果發(fā)生多次命中的狀況(例如,匹配了一個以上的地址位置),則構(gòu)成二進(jìn)制地址值和補(bǔ)充地址值的所有位不是彼此的補(bǔ)碼,因此,可以通過用該地址位置值的補(bǔ)碼對地址位置值的每一個位進(jìn)行“異或”運(yùn)算來檢測多次命中的狀況。如果被“異或”的位等于“1”,那么,發(fā)生了單次命中。否則,發(fā)生了多次命中。
文檔編號G11C29/00GK1716449SQ200510059169
公開日2006年1月4日 申請日期2005年3月24日 優(yōu)先權(quán)日2004年6月30日
發(fā)明者邁克爾·李宙赫, 希爾頓·B·萊文斯坦, 艾德爾馬·希旺 申請人:國際商業(yè)機(jī)器公司