專利名稱:一種內(nèi)容可尋址存儲器及其檢索數(shù)據(jù)的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及存儲器結(jié)構(gòu),更具體地,涉及一種內(nèi)容可尋址存儲器及其檢索數(shù)據(jù)的方法。
背景技術(shù):
內(nèi)容可尋址存儲器CAM (Content-Addressable Memory)是一種硬件模塊,可以作為一個(gè)單獨(dú)的集成電路模塊,也可以嵌入到其它集成電路,例如CPU中,主要用于檢索強(qiáng)度很高的領(lǐng)域,例如,網(wǎng)絡(luò)應(yīng)用中的MAC地址表,路由表,高速緩存器中搜索數(shù)據(jù)等等。CAM是以內(nèi)容進(jìn)行尋址的存儲器,它的主要工作機(jī)制就是將一個(gè)輸入數(shù)據(jù)項(xiàng)與存儲在CAM中的所有數(shù)據(jù)項(xiàng)自動(dòng)同時(shí)進(jìn)行比較,判別該輸入數(shù)據(jù)項(xiàng)與CAM中存儲的數(shù)據(jù)項(xiàng)是否相同,如果存在相同的數(shù)據(jù)項(xiàng),CAM返回由一個(gè)或者多個(gè)地址組成的列表,這些地址中都存儲著這個(gè)輸入數(shù)據(jù)項(xiàng)。在CAM中,輸入數(shù)據(jù)項(xiàng)的位與存儲各個(gè)數(shù)據(jù)項(xiàng)的位的比較有各自單獨(dú)的比較電路,比較的速度非常快,但是由于各個(gè)數(shù)據(jù)項(xiàng)與CAM的連線為數(shù)據(jù)項(xiàng)的位數(shù),例如,如果數(shù)據(jù)項(xiàng)為64位(bit),如果輸入一個(gè)數(shù)據(jù)項(xiàng),并且在CAM存儲著7個(gè)數(shù)據(jù)項(xiàng),則與CAM的連線為8X64根,但是這樣的設(shè)計(jì)電路面積會(huì)比較大。并且,諸多的比較電路造成的另一個(gè)缺點(diǎn)是功耗比較大。整個(gè)CAM的成本較高。大部分集成電路設(shè)計(jì)工具都提供使用上述原理設(shè)計(jì)的傳統(tǒng)的CAM模塊,設(shè)計(jì)人員只要輸入數(shù)據(jù)項(xiàng)位數(shù)以及數(shù)據(jù)項(xiàng)個(gè)數(shù),設(shè)計(jì)工具就可以給出要求的CAM模塊。為了達(dá)到速度、電路面積、功耗以及成本的平衡,研究人員提出了一些改進(jìn)方案。改進(jìn)方案中,常常使用標(biāo)準(zhǔn)的樹搜索或者硬件哈西(Hash)索引。圖I示意性地示出了一種改進(jìn)的 CAM 設(shè)計(jì)結(jié)構(gòu),被稱為 CA-RAM(Sangyeun Cho et. Al, CA-RAM AHigh-PerformanceMemory Substrate for Serach-Intensive Applications,2007 IEEE InternationalSymposium on Performance Analysis of Systems and Software),在該設(shè)計(jì)中,RAM 以規(guī)整化存儲結(jié)構(gòu)(即陣列)的方式存儲將要與輸入數(shù)據(jù)項(xiàng)比對的RAM數(shù)據(jù)項(xiàng),通過硬件哈西索引生成裝置從N位的輸入數(shù)據(jù)項(xiàng)生成R位的索引數(shù)據(jù)項(xiàng),哈西索引后可以快速查找,并定位RAM中與輸入數(shù)據(jù)項(xiàng)相近的第一行,定位到該行后,多個(gè)比較器將輸入數(shù)據(jù)項(xiàng)與RAM中的該行的多個(gè)數(shù)據(jù)據(jù)項(xiàng)進(jìn)行比較,相應(yīng)的比較器就輸出比較結(jié)果,然后通過圖I中未示出的處理器合并比較結(jié)果,獲得相應(yīng)的地址項(xiàng),并通過輸出裝置輸出地址項(xiàng)結(jié)果。索引數(shù)據(jù)項(xiàng)與RAM中規(guī)整化存儲結(jié)構(gòu)中的RAM數(shù)據(jù)項(xiàng)首先是按照索引比對的,這樣可以快速定位RAM中與輸入數(shù)據(jù)項(xiàng)可能相同的第一 RAM數(shù)據(jù)行,然后再將該行的RAM數(shù)據(jù)項(xiàng)與輸入數(shù)據(jù)項(xiàng)比對,以減少比對的工作量。雖然,RAM中可能某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引是與輸入數(shù)據(jù)項(xiàng)的哈西索引相同的,但是該數(shù)據(jù)行中并不存在該輸入數(shù)據(jù)項(xiàng),本領(lǐng)域技術(shù)人員稱之為沖突。上述改進(jìn)的現(xiàn)有技術(shù)中解決沖突的方法是擴(kuò)展RAM中一個(gè)RAM數(shù)據(jù)行的存儲結(jié)構(gòu),在每一 RAM數(shù)據(jù)行的最后加入一個(gè)標(biāo)志位,標(biāo)志位指向RAM中規(guī)整化存儲結(jié)構(gòu)的按照索引需要檢索的下一 RAM數(shù)據(jù)行,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引,與該某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引,是相同的,這樣,如果發(fā)生沖突,就繼續(xù)比較標(biāo)志位指向的下一 RAM數(shù)據(jù)行,直到找到輸入數(shù)據(jù)項(xiàng),或者RAM數(shù)據(jù)行的標(biāo)志位為空,即已經(jīng)到達(dá)該索引的結(jié)束,也沒有找到輸入數(shù)據(jù)項(xiàng),就輸出未找到結(jié)果。上述改進(jìn)方案中,沖突仍然廣泛存在,因此,也使得CAM的檢索速度降低。
發(fā)明內(nèi)容
因此,需要一種內(nèi)容可尋址存儲器(CAM)及其檢索數(shù)據(jù)的方法,能夠減少CAM檢索數(shù)據(jù)過程中的沖突,提高檢索數(shù)據(jù)的速度。根據(jù)本發(fā)明的一個(gè)方面,提供了一種內(nèi)容可尋址存儲器中檢索數(shù)據(jù)的方法,其中,所述內(nèi)容可尋址存儲器包括RAM和高速緩存器,所述RAM中使用陣列存儲多個(gè)RAM數(shù)據(jù)項(xiàng),所述陣列的每一 RAM數(shù)據(jù)行包括一個(gè)行標(biāo)記,所述高速緩存器中存儲檢索到的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系,該方法包括 將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng);在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記;響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);以及響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種內(nèi)容可尋址存儲器,包括RAM,被配置為使用陣列存儲多個(gè)RAM數(shù)據(jù)項(xiàng),所述陣列的每一 RAM數(shù)據(jù)行包括一個(gè)行標(biāo)記;高速緩存器,被配置為存儲過去檢索到的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系;哈西索引生成裝置,被配置為將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng);控制器,被配置為控制在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,該控制器包括檢索裝置,被配置為響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);輸出裝置,被配置為響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。
通過對附圖中本發(fā)明示例實(shí)施例方式的更詳細(xì)描述,本發(fā)明的上述、以及其它目的、特征和優(yōu)勢將變得更加明顯,其中,相同的參考標(biāo)號通常代表本發(fā)明示例實(shí)施例方式中的相同部件。圖I示意性地示出了一種改進(jìn)的內(nèi)容可尋址存儲器的設(shè)計(jì)結(jié)構(gòu);圖2示意性地示出了一種改進(jìn)的內(nèi)容可尋址存儲器的結(jié)構(gòu);圖3示意性地示出了采用例子中數(shù)據(jù)的Cache的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例;圖4示出RAM中的對應(yīng)RAM數(shù)據(jù)項(xiàng)的例子; 圖5示出了假設(shè)圖3中Cache存儲的對應(yīng)關(guān)系不變,圖4中RAM中的數(shù)據(jù)項(xiàng)改變的一個(gè)例子;以及圖6示意性地示出了一種內(nèi)容可尋址存儲器中檢索數(shù)據(jù)的方法的流程。
具體實(shí)施例方式將參照附圖更加詳細(xì)地描述本發(fā)明的優(yōu)選實(shí)施方式,在附圖中顯示了本發(fā)明的優(yōu)選實(shí)施例。然而,本發(fā)明可以以各種形式實(shí)現(xiàn)而不應(yīng)該理解為被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了使本發(fā)明更加透徹和完整,并且,完全將本發(fā)明的范圍傳達(dá)給本領(lǐng)域的技術(shù)人員。為了減少CAM中檢索數(shù)據(jù)中的沖突,現(xiàn)有技術(shù)已經(jīng)提供了一定的解決方法,但是,沖突仍然廣泛存在??紤]到CAM要檢索的輸入數(shù)據(jù)項(xiàng)經(jīng)常被重復(fù),可以考慮將以前檢索到的結(jié)果采用高速緩存器(Cache)存儲,也就是在CAM中加入一個(gè)Cache,將過去的檢索結(jié)果存儲,在接收到一個(gè)新的輸入數(shù)據(jù)項(xiàng)檢索請求時(shí),首先到Cache中檢索,沒有檢索到結(jié)果時(shí),才到RAM中檢索。因此,本發(fā)明公開以一種改進(jìn)的內(nèi)容可尋址存儲器(CAM),圖2示意性地示出了一種改進(jìn)的內(nèi)容可尋址存儲器的結(jié)構(gòu),如圖2所示,這種內(nèi)容可尋址存儲器包括RAM,被配置為使用陣列存儲多個(gè)RAM數(shù)據(jù)項(xiàng),所述陣列的每一 RAM數(shù)據(jù)行包括一個(gè)行標(biāo)記;高速緩存器,被配置為存儲過去檢索到的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系;哈西索引生成裝置,被配置為將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng);控制器,被配置為控制在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,控制器的這種查找通常是通過硬件比較器比較得到結(jié)果的,當(dāng)然,也可以采用其它檢索方式,此外該控制器還包括檢索裝置(圖2中未示出),被配置為響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);輸出裝置,被配置為響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。
在上述的實(shí)施方式中,RAM數(shù)據(jù)項(xiàng)的數(shù)據(jù)行被擴(kuò)充,包含了一個(gè)行標(biāo)記,這樣,原來數(shù)據(jù)行中的下一 RAM數(shù)據(jù)行標(biāo)記位就可以指向該下一 RAM數(shù)據(jù)行的行標(biāo)記。另外,如果RAM的存儲容量足夠大,例如使用eDRAM,也可以將RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)直接存儲在RAM中,可以快速輸出RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù);如果RAM容量有限,可以采用另外的結(jié)構(gòu)存儲RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù),通過輸出裝置獲得。本發(fā)明中全篇貫穿一個(gè)具體的例子,使得本領(lǐng)域技術(shù)人員更容易理解本發(fā)明的各種實(shí)施方式。在該例子中,假設(shè)輸入數(shù)據(jù)項(xiàng)為11223344,假設(shè)經(jīng)過哈西索引生成裝置生成的哈西索引數(shù)據(jù)項(xiàng)為134。后續(xù)實(shí)施方式中都會(huì)采用該例子描述實(shí)施方式的結(jié)果。實(shí)踐中,Cache中的數(shù)據(jù)結(jié)構(gòu)可以比較靈活,設(shè)計(jì)人員可以根據(jù)需要設(shè)計(jì)如何存儲檢索到的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系。在一種實(shí)施方式中,可以僅僅采用數(shù)據(jù)表存儲,其中表的一列為檢索到的哈西索引數(shù)據(jù)項(xiàng),另一列為對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記;也可以采用鏈表,數(shù)組等各種數(shù)據(jù)結(jié)構(gòu)。在一種實(shí)施方式中,為了加快Cache的搜索速度,還可以在存儲的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系進(jìn)一步建 立索引,例如Cache中以陣列的方式存儲數(shù)據(jù)行,數(shù)據(jù)行以哈西索引數(shù)據(jù)項(xiàng)的一部分作為Cache數(shù)據(jù)行索引,每一數(shù)據(jù)行至少包括一個(gè)哈西索引數(shù)據(jù)項(xiàng),以及該哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記;然后利用哈西索引數(shù)據(jù)項(xiàng)的一部分作為Cache數(shù)據(jù)行的索引,在Cache中快速查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的高速緩存器數(shù)據(jù)行,如果存在,稱為Cache命中,輸出該哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記;否則,輸出高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記。在上述的例子中,Cache假設(shè)有100行,圖3示意性地示出了采用例子中數(shù)據(jù)的Cache的數(shù)據(jù)結(jié)構(gòu)的一個(gè)示例,哈西索引數(shù)據(jù)項(xiàng)為3位數(shù)據(jù),選擇后兩位為Cache索弓丨,因此34和36為各自行的索引。假設(shè)在Cache中檢索哈西索引數(shù)據(jù)項(xiàng)134,可以直接定位到Cache中該行,得到RAM數(shù)據(jù)行的行標(biāo)記為256。實(shí)際上,控制器被配置為控制優(yōu)先在Cache中尋找輸入數(shù)據(jù)項(xiàng)以前在RAM中的檢索緩存結(jié)果,如果Cache命中,控制器的檢索裝置就可以根據(jù)Cache中對應(yīng)的行標(biāo)記,找到RAM中的對應(yīng)RAM數(shù)據(jù)行,從而找到與輸入數(shù)據(jù)項(xiàng)相同的數(shù)據(jù)項(xiàng),進(jìn)而找到對應(yīng)數(shù)據(jù)。圖4示出RAM中的對應(yīng)RAM數(shù)據(jù)項(xiàng)的例子,如圖4所示,哈西索引數(shù)據(jù)項(xiàng)為134的RAM數(shù)據(jù)項(xiàng)在RAM的256-258行,哈西索引數(shù)據(jù)項(xiàng)為136的RAM數(shù)據(jù)項(xiàng)在RAM的259行開始,根據(jù)Cache中找到的RAM數(shù)據(jù)行行標(biāo)記256,到RAM的行標(biāo)記為256行的數(shù)據(jù)行中找到輸入數(shù)據(jù)項(xiàng)11223344,然后將其對應(yīng)的數(shù)據(jù)輸出。但是,有時(shí)RAM中的RAM數(shù)據(jù)項(xiàng)已經(jīng)更新,Cache未命中,這種情況下,控制器就會(huì)響應(yīng)于根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),從所述高速緩存器中刪除所述哈西索引數(shù)據(jù)項(xiàng)與對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系;然后再輸出指示所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的結(jié)果。這樣,控制器的檢索裝置可以進(jìn)一步響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。例如,圖5示出了假設(shè)圖3中Cache存儲的對應(yīng)關(guān)系不變,圖4中RAM中的數(shù)據(jù)項(xiàng)改變的一個(gè)例子,如圖5所示,則就需要采用該實(shí)施方式,刪除Cache中錯(cuò)誤的對應(yīng)關(guān)系。重新在RAM中搜索對應(yīng)關(guān)系以及輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)??刂破鞯臋z索裝置可以采用多種方式檢索RAM陣列中的RAM數(shù)據(jù)項(xiàng),具體檢索方式和RAM數(shù)據(jù)行的內(nèi)容也是相關(guān)的。RAM數(shù)據(jù)行至少包括行標(biāo)記,多個(gè)RAM數(shù)據(jù)項(xiàng),以及下一 RAM數(shù)據(jù)行標(biāo)志位,如果有足夠空間,還可以存儲RAM對應(yīng)的數(shù)據(jù)以及其它的擴(kuò)展項(xiàng)??刂破鞯臋z索裝置如果利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),就說明Cache的檢索過程失敗了,這時(shí)Cache中相關(guān)的對應(yīng)關(guān)系已經(jīng)被刪除,在RAM中檢索是一個(gè)疊代的尋找過程,檢索裝置首先利用所述哈西索引數(shù)據(jù)項(xiàng)定位RAM中的第一 RAM數(shù)據(jù)行,該第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與所述哈西索引數(shù)據(jù)項(xiàng)相同,哈西索引可以快速定位與所述輸入數(shù)據(jù)項(xiàng)的哈西索引相同的RAM數(shù)據(jù)行;對于圖4的RAM數(shù)據(jù)項(xiàng)示例,如果該第一 RAM數(shù)據(jù)行(行標(biāo)記為256)的RAM數(shù)據(jù)項(xiàng)包括輸入數(shù)據(jù)項(xiàng)(11223344),在Cache中就加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系(如圖3的對應(yīng)關(guān)系),就重新在Cache中保留了新的哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。如果所述RAM中某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)不包括所述輸入數(shù)據(jù)項(xiàng),其中該某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引等于所述哈西索 引數(shù)據(jù)項(xiàng),就搜索該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針,其中,該下一 RAM數(shù)據(jù)行指針指向所述RAM中下一 RAM數(shù)據(jù)行的行標(biāo)記,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與該哈西索引數(shù)據(jù)項(xiàng)相同;如果所述該下一RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包含該輸入數(shù)據(jù)項(xiàng),這時(shí)就在RAM中找到了輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。這時(shí)仍然需要在Cache中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第該下一數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。例如對于圖5的RAM中的數(shù)據(jù)項(xiàng),就會(huì)首先定位在行標(biāo)記為256的數(shù)據(jù)行,檢索發(fā)現(xiàn)沒有輸入數(shù)據(jù)項(xiàng),確定下一 RAM數(shù)據(jù)行標(biāo)記位指向行標(biāo)記為257的數(shù)據(jù)行,繼續(xù)尋找輸入數(shù)據(jù)項(xiàng),仍然沒有找到,這時(shí)確定下一 RAM數(shù)據(jù)行標(biāo)記位指向行標(biāo)記為258的RAM數(shù)據(jù)行,繼續(xù)尋找輸入數(shù)據(jù)項(xiàng),終于找到該數(shù)據(jù)項(xiàng)。這時(shí),可以在Cache中加入134與258的對應(yīng)關(guān)系。在另外一種實(shí)施方式中,可以在所述RAM中將包含該輸入數(shù)據(jù)項(xiàng)的某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)與所述第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)交換,然后在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一RAM數(shù)據(jù)行的行標(biāo)記對應(yīng)關(guān)系。這樣可以總是將將包含該輸入數(shù)據(jù)項(xiàng)的某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)放在眾多哈西索引相同的RAM數(shù)據(jù)項(xiàng)的最前面。對于上述的例子,就是將行標(biāo)記為256的RAM數(shù)據(jù)項(xiàng)與行標(biāo)記為258的RAM數(shù)據(jù)項(xiàng)交換,這時(shí)在Cache中加入的對應(yīng)關(guān)系仍然是134與256。如果該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針為空,說明已經(jīng)檢索到所有哈西索引為所述索引數(shù)據(jù)項(xiàng)的RAM數(shù)據(jù)項(xiàng)了,就輸出在RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。對于上述例子,如果檢索到行標(biāo)記為258的數(shù)據(jù)行,仍然沒有檢索到輸入數(shù)據(jù)項(xiàng)11223344,就確定在RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。在上述的實(shí)施方式中,如果Cache足夠大,就可以無需更新,一直將檢索到的對應(yīng)關(guān)系放到Cache中。但是顯然,Cache的容量一般是有限的,這時(shí)需要考慮Cache中內(nèi)容的更新。圖6中的步驟S612就是指cache的更新。在Cache中加入對應(yīng)關(guān)系時(shí),如果Cache未滿,可以直接在所述高速緩存器中加入檢索到的哈西索引數(shù)據(jù)項(xiàng)與所述RAM中的RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系;如果Cache已滿,就要先刪除所述高速緩存器中包含的最少使用的哈西索引數(shù)據(jù)項(xiàng)與RAM中RAM數(shù)據(jù)行的行標(biāo)記對應(yīng)關(guān)系后,再加入新的對應(yīng)關(guān)系。在RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)可以采用當(dāng)前常用的Cache更新方法,這里不再贅述。在同一個(gè)發(fā)明構(gòu)思下,本發(fā)明還公開了一種內(nèi)容可尋址存儲器中檢索數(shù)據(jù)的方法,其中,所述內(nèi)容可尋址存儲器包括RAM和高速緩存器,所述RAM中使用陣列存儲多個(gè)RAM數(shù)據(jù)項(xiàng),所述陣列的每一 RAM數(shù)據(jù)行包括一個(gè)行標(biāo)記,所述高速緩存器中存儲檢索到的哈西索引數(shù)據(jù)項(xiàng)與R AM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系,該方法的步驟如圖6所示,根據(jù)圖6,在步驟S601,將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng);在步驟S602,在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,即判斷Cache是否命中;在步驟S604,響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,即Cache命中,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);在步驟S603,響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,即Cache未命中,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);最后,在步驟S611,響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。無論是在步驟S603還是在步驟S604,都需要進(jìn)入到RAM中找到對應(yīng)的RAM數(shù)據(jù)項(xiàng),在步驟S604,由于Cache中已經(jīng)獲得對應(yīng)RAM數(shù)據(jù)項(xiàng)所在的RAM數(shù)據(jù)行,但是該數(shù)據(jù)行可能是不準(zhǔn)確的,因此,圖6還進(jìn)一步顯示了一些優(yōu)選的實(shí)施方式,在步驟S605判斷Cache中對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),如果不存在,在步驟S606從所述高速緩存器中刪除所述哈西索引數(shù)據(jù)項(xiàng)與對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系;然后可以直接返回步驟S603,或者通過輸出指示所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的結(jié)果,來返回步驟S602,從而進(jìn)入步驟S603。步驟S603可以采用現(xiàn)有技術(shù)來實(shí)現(xiàn),本發(fā)明中還提供了一些改進(jìn)現(xiàn)有技術(shù)的優(yōu)選實(shí)施方式。首先,在步驟S607,可以利用所述哈西索引數(shù)據(jù)項(xiàng)定位RAM中的第一 RAM數(shù)據(jù)行,該第一RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與所述哈西索引數(shù)據(jù)項(xiàng)相同;并且如果該第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包括所述輸入數(shù)據(jù)項(xiàng),在步驟S611,輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù),優(yōu)選地,還在在步驟S612更新Cache時(shí)在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。由于第一 RAM數(shù)據(jù)行可能不包含輸入數(shù)據(jù)項(xiàng),可以在步驟S608,判斷該某一數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針是否為空,如果非空,進(jìn)入步驟S609,到第一 RAM數(shù)據(jù)行末尾標(biāo)志位指向的下一 RAM數(shù)據(jù)行,循環(huán)判斷,相應(yīng)地,在圖6中可以認(rèn)為在步驟S607,確定所述RAM中某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)不包括所述輸入數(shù)據(jù)項(xiàng),其中該某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引等于所述哈西索引數(shù)據(jù)項(xiàng),在步驟S608,搜索該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針,其中,該下一 RAM數(shù)據(jù)行指針指向所述RAM中下一 RAM數(shù)據(jù)行的行標(biāo)記,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與該哈西索引數(shù)據(jù)項(xiàng)相同;如果檢索到所述該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包含該輸入數(shù)據(jù)項(xiàng),在步驟S611,輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù),并在步驟S612的Cache更新中,優(yōu)選地在所述RAM中將包含該輸入數(shù)據(jù)項(xiàng)的某一數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)與所述第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)交換。如果在步驟S608判斷該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針為空,則在步驟S610輸出在RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。上述的實(shí)施方式中已經(jīng)包含了一些Cache中數(shù)據(jù)行的更新策略,進(jìn)一步的更新策略還包括響應(yīng)于所述高速緩存器未滿,直接在所述高速緩存器中加入哈西索引數(shù)據(jù)項(xiàng)與RAM中的RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系;以及響應(yīng)于高速緩存器已滿,刪除所述高速緩存器中包含的最少使用的哈西索引數(shù)據(jù)項(xiàng)與所述RAM中某一數(shù)據(jù)行的行標(biāo)記對應(yīng)關(guān)系后,在所述聞速緩存器中加入新的對應(yīng)關(guān)系。另外在步驟S602的判斷過程中,可以采用說明書前面敘述的方法,具體來說,可以在Cache中的數(shù)據(jù)行上建立索引,一種實(shí)施方式為獲得所述哈西索引數(shù)據(jù)項(xiàng)的一部分,其中所述高速緩存器中以陣列的方式存儲數(shù)據(jù)行,數(shù)據(jù)行以所述哈西索引數(shù)據(jù)項(xiàng)的一部分作為高速緩存器數(shù)據(jù)行索引,每一數(shù)據(jù)行至少包括一個(gè)哈西索引數(shù)據(jù)項(xiàng),以及該哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記;然后在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的高速緩存器數(shù)據(jù)行,如果存在,輸出該哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行 的行標(biāo)記;否則,輸出高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行
I■■己 O雖然這里參照附圖描述了本發(fā)明的示例性實(shí)施例,但是應(yīng)該理解本發(fā)明不限于這些精確的實(shí)施例,并且在不背離本發(fā)明的范圍和宗旨的情況下,本領(lǐng)域普通技術(shù)人員能對實(shí)施例進(jìn)行各種變化的修改。所有這些變化和修改意欲包含在所附權(quán)利要求中限定的本發(fā)明的范圍中。
權(quán)利要求
1.一種內(nèi)容可尋址存儲器中檢索數(shù)據(jù)的方法,所述內(nèi)容可尋址存儲器包括RAM和高速緩存器,所述RAM中使用陣列存儲多個(gè)RAM數(shù)據(jù)項(xiàng),所述陣列的每一 RAM數(shù)據(jù)行包括一個(gè)行標(biāo)記,所述高速緩存器中存儲檢索到的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系,該方法包括 將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng); 在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記; 響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng); 響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);以及 響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的方法,其中所述響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)包括 響應(yīng)于根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng) 從所述高速緩存器中刪除所述哈西索引數(shù)據(jù)項(xiàng)與對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系; 輸出指示所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的結(jié)果。
3.根據(jù)權(quán)利要求I或2所述的方法,其中所述響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)包括 利用所述哈西索引數(shù)據(jù)項(xiàng)定位RAM中的第一 RAM數(shù)據(jù)行,該第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與所述哈西索引數(shù)據(jù)項(xiàng)相同; 響應(yīng)于該第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包括所述輸入數(shù)據(jù)項(xiàng),在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。
4.根據(jù)權(quán)利要求I或2所述的方法,所述響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)還包括 響應(yīng)于所述RAM中某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)不包括所述輸入數(shù)據(jù)項(xiàng),該某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引等于所述哈西索引數(shù)據(jù)項(xiàng),搜索該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針,該下一 RAM數(shù)據(jù)行指針指向所述RAM中下一 RAM數(shù)據(jù)行的行標(biāo)記,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與該哈西索引數(shù)據(jù)項(xiàng)相同; 響應(yīng)于所述該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包括所述該輸入數(shù)據(jù)項(xiàng),在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的該下一 RAM數(shù)據(jù)數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。
5.根據(jù)權(quán)利要求I或2所述的方法,所述響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)還包括 響應(yīng)于所述RAM中某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)不包括所述輸入數(shù)據(jù)項(xiàng),其中該某一RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引等于所述哈西索引數(shù)據(jù)項(xiàng),搜索該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針,其中,該下一 RAM數(shù)據(jù)行指針指向所述RAM中下一 RAM數(shù)據(jù)行的行標(biāo)記,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與該哈西索引數(shù)據(jù)項(xiàng)相同; 響應(yīng)于所述該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包含該輸入數(shù)據(jù)項(xiàng),在所述RAM中將包含該輸入數(shù)據(jù)項(xiàng)的某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)與所述第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)交換,并在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。
6.根據(jù)權(quán)利要求5所述的方法,該方法還包括 響應(yīng)于該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針為空,輸出在RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。
7.一種內(nèi)容可尋址存儲器,包括 RAM,被配置為使用陣列存儲多個(gè)RAM數(shù)據(jù)項(xiàng),所述陣列的每一 RAM數(shù)據(jù)行包括一個(gè)行標(biāo)記; 高速緩存器,被配置為存儲過去檢索到的哈西索引數(shù)據(jù)項(xiàng)與RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系; 哈西索引生成裝置,被配置為將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng); 控制器,被配置為控制在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,該控制器包括 檢索裝置,被配置為響應(yīng)于所述高速緩存器中存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng); 輸出裝置,被配置為響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的內(nèi)容可尋址存儲器,其中所述控制器被進(jìn)一步配置為 響應(yīng)于根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),從所述高速緩存器中刪除所述哈西索引數(shù)據(jù)項(xiàng)與對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的對應(yīng)關(guān)系,并輸出指示所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記的結(jié)果。
9.根據(jù)權(quán)利要求7或8所述的內(nèi)容可尋址存儲器,其中所述檢索裝置響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)被進(jìn)一步配置為利用所述哈西索引數(shù)據(jù)項(xiàng)定位RAM中的第一 RAM數(shù)據(jù)行,該第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與所述哈西索引數(shù)據(jù)項(xiàng)相同;以及響應(yīng)于該第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包括所述輸入數(shù)據(jù)項(xiàng),在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。
10.根據(jù)權(quán)利要求7或8所述的內(nèi)容可尋址存儲器,所述檢索裝置響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)被進(jìn)一步配置為響應(yīng)于所述RAM中某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)不包括所述輸入數(shù)據(jù)項(xiàng),其中該某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引等于所述哈西索引數(shù)據(jù)項(xiàng),搜索該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針,其中,該下一 RAM數(shù)據(jù)行指針指向所述RAM中下一 RAM數(shù)據(jù)行的行標(biāo)記,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與該哈西索引數(shù)據(jù)項(xiàng)相同;以及響應(yīng)于所述該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包含該輸入數(shù)據(jù)項(xiàng),在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的該下一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。
11.根據(jù)權(quán)利要求7或8所述的內(nèi)容可尋址存儲器,所述檢索裝置響應(yīng)于所述高速緩存器中不存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)被進(jìn)一步配置為響應(yīng)于所述RAM中某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)不包括所述輸入數(shù)據(jù)項(xiàng),其中該某一 RAM數(shù)據(jù)行的RAM數(shù) 據(jù)項(xiàng)的哈西索引等于所述哈西索引數(shù)據(jù)項(xiàng),搜索該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針,其中,該下一 RAM數(shù)據(jù)行指針指向所述RAM中下一 RAM數(shù)據(jù)行的行標(biāo)記,該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)的哈西索引與該哈西索引數(shù)據(jù)項(xiàng)相同;響應(yīng)于所述該下一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)包含該輸入數(shù)據(jù)項(xiàng),在所述RAM中將包含該輸入數(shù)據(jù)項(xiàng)的某一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)與所述第一 RAM數(shù)據(jù)行的RAM數(shù)據(jù)項(xiàng)交換,并在所述高速緩存器中加入所述哈西索引數(shù)據(jù)項(xiàng)與所述RAM的第一 RAM數(shù)據(jù)行行標(biāo)記的對應(yīng)關(guān)系。
12.根據(jù)權(quán)利要求11所述的內(nèi)容可尋址存儲器,所述控制器還被配置為響應(yīng)于該某一 RAM數(shù)據(jù)行末尾的下一 RAM數(shù)據(jù)行指針為空,輸出在RAM中沒有找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng)。
全文摘要
本發(fā)明公開了一種內(nèi)容可尋址存儲器及其檢索數(shù)據(jù)的方法,該方法包括將接收的輸入數(shù)據(jù)項(xiàng)生成哈西索引數(shù)據(jù)項(xiàng);在所述高速緩存器中查找是否存在與所述哈西索引數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記;如果存在,根據(jù)對應(yīng)的RAM數(shù)據(jù)行的行標(biāo)記從所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);如果不存在,利用所述哈西索引數(shù)據(jù)項(xiàng)在所述RAM中查找與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng);以及響應(yīng)于在所述RAM中找到與所述輸入數(shù)據(jù)項(xiàng)對應(yīng)的RAM數(shù)據(jù)項(xiàng),輸出該RAM數(shù)據(jù)項(xiàng)所對應(yīng)的數(shù)據(jù)。該方法能提高CAM的檢索數(shù)據(jù)的速度。
文檔編號G06F17/30GK102736986SQ20111008105
公開日2012年10月17日 申請日期2011年3月31日 優(yōu)先權(quán)日2011年3月31日
發(fā)明者李宇飛, 潘永鋒, 范博, 陳亮 申請人:國際商業(yè)機(jī)器公司