專利名稱:用于隨機(jī)化緩存條目替換的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息網(wǎng)絡(luò)領(lǐng)域,更具體地說(shuō)涉及用于維護(hù)與網(wǎng)絡(luò)上的路由有關(guān)的信息的協(xié)議。
背景技術(shù):
一般地,網(wǎng)絡(luò)中的路由器使用路由表來(lái)查找目的地地址,以計(jì)算網(wǎng)絡(luò)路由和轉(zhuǎn)發(fā)進(jìn)入分組。路由表一般存儲(chǔ)數(shù)以百萬(wàn)計(jì)的網(wǎng)絡(luò)主機(jī)目的地地址。周期性地更新路由表以反映網(wǎng)絡(luò)中的主機(jī)的活動(dòng)狀態(tài)。當(dāng)分組到達(dá)路由器時(shí),路由器從分組頭部抽取目的地信息,并搜索路由表以獲得目的地路由。由于路由表基于傳統(tǒng)的存儲(chǔ)器技術(shù),并包含大量路由信息,因此對(duì)目的地路由的搜索可能會(huì)花費(fèi)大量時(shí)間,在一些情形下,由于某些超時(shí)限制而可能會(huì)使路由器丟棄進(jìn)入分組。
解決路由查找延遲的一種方法是實(shí)現(xiàn)路由緩存。一般地,路由緩存是基于軟件的搜索表。路由緩存是相對(duì)較小的查找表,其存儲(chǔ)了某些所選擇的目的地(例如最頻繁訪問(wèn)的目的地、最近訪問(wèn)的目的地等等)的地址。當(dāng)路由器接收分組時(shí),路由器首先搜索路由緩存以獲得路由信息,如果在路由緩存中發(fā)現(xiàn)了路由信息,則路由器將分組轉(zhuǎn)發(fā)到合適的目的地。由于路由緩存較小,因此搜索時(shí)間顯著小于對(duì)較大查找表的搜索時(shí)間。路由緩存的填充基于網(wǎng)絡(luò)中每個(gè)路由器所執(zhí)行的統(tǒng)計(jì)和數(shù)據(jù)流量分析?;谲浖穆酚删彺娴囊粋€(gè)問(wèn)題在于路由器一直向路由緩存添加目的地地址,直到路由緩存的長(zhǎng)度達(dá)到某個(gè)最大極限,并且搜索效率開(kāi)始降低路由器的性能。然后路由器沖刷(flush)路由緩存(清空緩存中的所有條目),并重新填充路由緩存。路由緩存的沖刷和重新填充引起了分組路由的額外延遲。這一額外延遲嚴(yán)重影響了路由器性能,并限制了路由器的最大可允許吞吐率。
對(duì)這一情形的一種解決方案是使用基于硬件的路由緩存。通過(guò)將最頻繁使用的路由信息存儲(chǔ)在硬件中,可以顯著加速對(duì)這一信息的訪問(wèn)。然而,在這一情形中,與任何緩存情形相同,必須選擇將基于軟件的路由表中的哪些條目加載到基于硬件的緩存中。如所公知的那樣,對(duì)于頁(yè)替換問(wèn)題,最近最少使用(LRU)技術(shù)可提供好的性能以及相對(duì)簡(jiǎn)單的實(shí)現(xiàn)。當(dāng)然,如果預(yù)先知道所有的頁(yè)請(qǐng)求,則最佳策略是清除其下次請(qǐng)求在將來(lái)最遠(yuǎn)處才會(huì)發(fā)生的項(xiàng)目。這一策略公知為MIN算法。一般地,不可能知道將來(lái)的請(qǐng)求。假設(shè)不知道將來(lái)的請(qǐng)求,并將其決策建立在過(guò)往請(qǐng)求的基礎(chǔ)上的技術(shù)稱為在線算法,LRU技術(shù)是其中之一。LRU的工作方式是替換緩存中其最近請(qǐng)求發(fā)生在過(guò)去最久的頁(yè)面,稱為最舊頁(yè)面。推斷地,LRU的策略依賴于這一假設(shè),即,給定頁(yè)面將來(lái)被訪問(wèn)的概率與該頁(yè)面過(guò)去最后一次被訪問(wèn)時(shí)有多近成正比。
因此需要這樣一種方法和裝置,其可通過(guò)使用硬件緩存來(lái)允許使用大路由表,并不會(huì)產(chǎn)生與基于軟件的路由緩存相關(guān)聯(lián)的延遲,也無(wú)需與這種基于軟件的路由緩存相關(guān)聯(lián)的軟件控制。
發(fā)明內(nèi)容
在一個(gè)實(shí)施例中,公開(kāi)了一種緩存控制器。該緩存控制器包括潛在替換列表、多個(gè)有效位和多個(gè)計(jì)數(shù)器。潛在替換列表包括多個(gè)條目。每個(gè)有效位對(duì)應(yīng)于所述條目之一。每個(gè)計(jì)數(shù)器也對(duì)應(yīng)于所述條目之一。
在另一個(gè)實(shí)施例中,公開(kāi)了一種用于替換緩存中的緩存條目的方法。該方法包括產(chǎn)生隨機(jī)緩存指針值,將所述隨機(jī)緩存指針值存儲(chǔ)在潛在替換列表的條目中,表明所述條目是有效的,以及重新啟動(dòng)與該條目相關(guān)聯(lián)的計(jì)數(shù)器。
前述描述是一個(gè)概括,因此有必要包含細(xì)節(jié)的簡(jiǎn)化、一般化、和省略;因此,本領(lǐng)域內(nèi)的普通技術(shù)人員將會(huì)認(rèn)識(shí)到所述概括僅僅是說(shuō)明性的,而非限制性的。本發(fā)明的其他方面、創(chuàng)造性特征和優(yōu)點(diǎn)只由權(quán)利要求所限制,并在下面給出的非限制性描述中變得更加清楚。
通過(guò)參考附圖可更好地理解本發(fā)明,并且各種目的、特征和優(yōu)點(diǎn)對(duì)于本領(lǐng)域內(nèi)的普通技術(shù)人員來(lái)說(shuō)將會(huì)很清楚。
圖1的流程圖根據(jù)本發(fā)明的實(shí)施例,一般性地示出了用于緩存替換的隨機(jī)化硬件方案。
圖2的流程圖一般性地示出了當(dāng)需要新緩存條目以向緩存寫(xiě)數(shù)據(jù)時(shí)執(zhí)行的處理。
圖3是根據(jù)本發(fā)明實(shí)施例的緩存控制器的方框圖。
圖4示出了一個(gè)狀態(tài)機(jī),其描述了根據(jù)本發(fā)明實(shí)施例而實(shí)現(xiàn)的狀態(tài)和轉(zhuǎn)換。
圖5的一般化流程圖示出了圖3所示的硬件所執(zhí)行的主要?jiǎng)幼鳌?br>
圖6A、6B和6C提供了維護(hù)潛在替換列表的進(jìn)一步細(xì)節(jié)。
圖7是示例性聯(lián)網(wǎng)系統(tǒng)的示例的方框圖,該系統(tǒng)被配置來(lái)支持根據(jù)本發(fā)明實(shí)施例的緩存條目替換技術(shù)。
在不同附圖中使用相同的標(biāo)號(hào)來(lái)表示相似或相同的項(xiàng)目。
具體實(shí)施例方式
下面的描述意在提供對(duì)本發(fā)明的示例的詳細(xì)描述,不應(yīng)被理解為是對(duì)本發(fā)明本身的限制。相反,任意多種的變體都落入在本發(fā)明如所附權(quán)利要求所定義的范圍之內(nèi)。
引論根據(jù)本發(fā)明實(shí)施例的系統(tǒng)和方法提供了用于緩存條目替換的隨機(jī)化硬件方案。這些系統(tǒng)和方法采用了潛在替換列表,其存儲(chǔ)可能被替換的緩存條目的緩存指針值,以無(wú)效近來(lái)被訪問(wèn)的條目,維護(hù)關(guān)于潛在替換列表中每個(gè)條目的年齡的信息,并用隨機(jī)緩存指針值來(lái)替換被無(wú)效的條目。藉此,這些系統(tǒng)和方法能夠提供最近最少使用的緩存指針值,該值可用于替換關(guān)聯(lián)緩存中的條目。這些系統(tǒng)和方法中使用的結(jié)構(gòu)所提供的方案提高了緩存的性能,而不會(huì)消耗相對(duì)大量的芯片面積,并且不會(huì)降低與緩存相關(guān)聯(lián)的處理器的性能。
基于硬件的路由緩存示例圖1的流程圖根據(jù)本發(fā)明的實(shí)施例,一般性地示出了用于緩存替換的隨機(jī)化硬件方案。圖1所示的處理開(kāi)始于產(chǎn)生隨機(jī)緩存指針值,并將之存儲(chǔ)在潛在替換列表(PRL)條目中(步驟100)。實(shí)際中,隨機(jī)緩存指針值被存儲(chǔ)到其中的PRL條目是當(dāng)前PRL條目,它是在所述處理初始化PRL的條目時(shí)從PRL條目中選擇的。然后,確定是否已初始化所有的PRL條目(步驟110)。如果還有剩余的PRL條目需要初始化,則處理前進(jìn)到這些PRL條目中的下一個(gè),并繼續(xù)初始化處理(步驟115)。
所有PRL條目都被初始化后(步驟110),開(kāi)始老化計(jì)數(shù)器的遞增(步驟120)。存儲(chǔ)在每個(gè)PRL條目中的緩存指針值的年齡被維護(hù)來(lái)由圖1所示的處理的主要部分所使用,直到一個(gè)設(shè)定的極限(例如直到最大年齡極限(max_age))(步驟120)。
在維護(hù)每個(gè)PRL條目中存儲(chǔ)的值的年齡期間,決定是否已發(fā)生緩存訪問(wèn)(步驟130)。沒(méi)有發(fā)生緩存訪問(wèn)期間,處理等待這種事件。在此期間以及甚至在緩存訪問(wèn)期間,仍維護(hù)每個(gè)PRL條目中存儲(chǔ)的緩存指針值的年齡。在緩存訪問(wèn)期間(步驟130),將緩存指針值(表明正在訪問(wèn)哪個(gè)緩存條目)與存儲(chǔ)在每個(gè)PRL條目中的緩存指針值進(jìn)行比較(步驟140)。如果存儲(chǔ)在PRL中的所有緩存指針值都不與緩存訪問(wèn)的緩存指針值匹配(步驟150),則處理循環(huán)回來(lái),等待后續(xù)緩存訪問(wèn)。
然而,如果緩存訪問(wèn)的緩存指針值與PRL條目之一的緩存指針值匹配(步驟150),則采取多個(gè)動(dòng)作。這些動(dòng)作包括產(chǎn)生隨機(jī)緩存指針值(步驟160),在存儲(chǔ)了與緩存訪問(wèn)的緩存指針值相匹配的緩存指針值的PRL條目中存儲(chǔ)所述隨機(jī)緩存指針值(步驟170),以及重新啟動(dòng)對(duì)應(yīng)于該P(yáng)RL條目的計(jì)數(shù)器(步驟180)。本領(lǐng)域內(nèi)的普通技術(shù)人員將會(huì)理解到,圖1處理的緩存訪問(wèn)是在其中正從緩存讀信息的緩存訪問(wèn)。
如上所述,圖1的流程圖示出了根據(jù)本發(fā)明實(shí)施例的處理??梢哉J(rèn)識(shí)到,這里討論的操作可由計(jì)算機(jī)系統(tǒng)用戶或者由專用硬件模塊所執(zhí)行的步驟直接輸入的命令組成,但是該優(yōu)選實(shí)施例包括軟件模塊執(zhí)行的步驟。這里所指的步驟的功能可對(duì)應(yīng)于多個(gè)模塊或模塊的多個(gè)部分的功能。
這里所指的操作可以是模塊(例如軟件、固件或硬件模塊)或模塊的多個(gè)部分。例如,雖然所描述的實(shí)施例包括軟件模塊和/或包括手工輸入的用戶命令,但是所述各種示例模塊可以是專用硬件模塊。這里所討論的軟件模塊可包括腳本、批處理或其他可執(zhí)行文件,或這些文件的組合和/或部分。軟件模塊可包括編碼在計(jì)算機(jī)可讀介質(zhì)上的計(jì)算機(jī)程序或其子例程。
另外,本領(lǐng)域內(nèi)的普通技術(shù)人員將會(huì)認(rèn)識(shí)到模塊之間的邊界僅僅是說(shuō)明性的,其他實(shí)施例可合并模塊或重新劃分模塊的功能。例如,這里所討論的模塊可被分解為將作為多個(gè)計(jì)算機(jī)進(jìn)程執(zhí)行的子模塊,并且可選地,可在多個(gè)計(jì)算機(jī)上執(zhí)行。而且,其他實(shí)施例可組合特定模塊或子模塊的多個(gè)實(shí)例。而且,本領(lǐng)域內(nèi)的普通技術(shù)人員將會(huì)認(rèn)識(shí)到在示例性實(shí)施例中描述的操作僅用于說(shuō)明。根據(jù)本發(fā)明,可對(duì)操作進(jìn)行組合,或者可將操作的功能分布在另外的操作中。
或者,這些動(dòng)作可包含在實(shí)現(xiàn)了這種功能的電路結(jié)構(gòu)中,例如復(fù)雜指令集計(jì)算機(jī)(CISC)的微碼、被編程為可編程或可擦除/可編程設(shè)備的固件、現(xiàn)場(chǎng)可編程門陣列(FPGA)的配置、門陣列或全定制專用集成電路(ASIC)的設(shè)計(jì)等等。
所述流程圖的每個(gè)方框可由一個(gè)模塊(例如軟件模塊)執(zhí)行,或由模塊的一部分執(zhí)行,或由計(jì)算機(jī)系統(tǒng)用戶例如使用計(jì)算機(jī)系統(tǒng)(例如后面描述的計(jì)算機(jī)系統(tǒng)800)來(lái)執(zhí)行。因此,上述方法及其操作和模塊可在計(jì)算機(jī)系統(tǒng)上執(zhí)行,所述系統(tǒng)被配置來(lái)執(zhí)行所述方法的操作,并且/或者所述方法及其操作和模塊可從計(jì)算機(jī)可讀介質(zhì)上執(zhí)行。所述方法可被包含在機(jī)器可讀和/或計(jì)算機(jī)可讀介質(zhì)中,以配置計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行所述方法。因此,所述軟件模塊可存儲(chǔ)在計(jì)算機(jī)系統(tǒng)存儲(chǔ)器內(nèi),和/或被發(fā)送到該存儲(chǔ)器,以配置計(jì)算機(jī)系統(tǒng)來(lái)執(zhí)行所述模塊的功能。
這種計(jì)算機(jī)系統(tǒng)通常根據(jù)程序(內(nèi)部存儲(chǔ)的指令列表,例如特定應(yīng)用程序和/或操作系統(tǒng))來(lái)處理信息,并通過(guò)I/O設(shè)備來(lái)產(chǎn)生結(jié)果性輸出信息。計(jì)算機(jī)進(jìn)程通常包括程序或程序的一部分的執(zhí)行(運(yùn)行)、當(dāng)前程序值和狀態(tài)信息、以及操作系統(tǒng)用來(lái)管理所述進(jìn)程的執(zhí)行的資源。父進(jìn)程可派生其他子進(jìn)程來(lái)幫助執(zhí)行父進(jìn)程的整體功能。由于父進(jìn)程專門地派生子進(jìn)程來(lái)執(zhí)行父進(jìn)程的整體功能的一部分,因此子進(jìn)程(以及孫子進(jìn)程等等)執(zhí)行的功能有時(shí)可被描述為正在被父進(jìn)程執(zhí)行。
這種計(jì)算機(jī)系統(tǒng)一般包括多個(gè)“并發(fā)”執(zhí)行的計(jì)算機(jī)進(jìn)程。通常,計(jì)算機(jī)系統(tǒng)包括單個(gè)處理單元,其能夠支持許多輪流活動(dòng)的進(jìn)程。雖然多個(gè)進(jìn)程可能看起來(lái)像是并發(fā)執(zhí)行,當(dāng)在任何給定時(shí)間點(diǎn)只有一個(gè)進(jìn)程實(shí)際被所述單個(gè)處理單元執(zhí)行。通過(guò)快速改變執(zhí)行的進(jìn)程,計(jì)算機(jī)系統(tǒng)看起來(lái)好像在并發(fā)執(zhí)行進(jìn)程。計(jì)算機(jī)系統(tǒng)在不同的執(zhí)行階段,在多個(gè)進(jìn)程之間復(fù)用該計(jì)算機(jī)系統(tǒng)的資源的能力稱為多任務(wù)操作。具有多個(gè)處理單元的系統(tǒng)在定義上可以支持真的并發(fā)處理,稱為多處理系統(tǒng)?;顒?dòng)進(jìn)程在多任務(wù)操作中和/或多處理環(huán)境中執(zhí)行時(shí)通常被稱為并發(fā)執(zhí)行。
這里描述的軟件模塊可被這種計(jì)算機(jī)系統(tǒng)例如從計(jì)算機(jī)可讀介質(zhì)處接收。計(jì)算機(jī)可讀介質(zhì)可永久性地、可拆卸地或遠(yuǎn)程地耦合到該計(jì)算機(jī)系統(tǒng)。計(jì)算機(jī)可讀介質(zhì)非排他性地可包括下述中的任一多種包括盤片和磁帶存儲(chǔ)介質(zhì)在內(nèi)的磁存儲(chǔ)介質(zhì);光存儲(chǔ)介質(zhì)例如壓縮光盤媒體(例如CD-ROM、CD-R等等)和數(shù)字視頻盤存儲(chǔ)介質(zhì);包括基于半導(dǎo)體的存儲(chǔ)單元例如閃存、EEPROM、EPROM、ROM或?qū)S眉呻娐吩趦?nèi)的非易失性存儲(chǔ)器;包括寄存器、緩沖器或緩存、主存儲(chǔ)器、RAM等等在內(nèi)的易失性存儲(chǔ)介質(zhì);以及數(shù)據(jù)傳輸介質(zhì),包括計(jì)算機(jī)網(wǎng)絡(luò)、點(diǎn)到點(diǎn)通信和載波傳輸介質(zhì)。在基于UNIX的實(shí)施例中,所述軟件模塊可包含在文件中,所述文件可以是設(shè)備、終端、本地或遠(yuǎn)程文件、套接口、網(wǎng)絡(luò)連接、信號(hào)或其他通信或狀態(tài)改變的便捷方式??墒褂闷渌碌母鞣N類型的計(jì)算機(jī)可讀介質(zhì)來(lái)存儲(chǔ)和/或傳輸這里所討論的軟件模塊。
圖2的流程圖一般性地示出了當(dāng)需要新緩存條目以向緩存寫(xiě)數(shù)據(jù)時(shí)執(zhí)行的處理。該處理等待發(fā)生緩存寫(xiě),緩存寫(xiě)表明需要將信息存儲(chǔ)到緩存條目之一中(步驟200)。在沒(méi)有新信息需要存儲(chǔ)在緩存期間,處理僅進(jìn)行循環(huán),等待緩存寫(xiě)(步驟200)。發(fā)生緩存寫(xiě)時(shí),通過(guò)檢查PRL條目中哪個(gè)條目是最近最少使用的,來(lái)確定將使用哪個(gè)PRL條目的緩存指針值(以及緩存位置)(步驟210)。當(dāng)(在存儲(chǔ)在PRL的條目中)識(shí)別出包含最近最少使用的緩存指針值的PRL條目后,將信息加載到所選擇的PRL條目中的緩存指針值所指向的緩存中(步驟220)。既然已使用了所選擇的PRL條目的緩存指針值,因此無(wú)效該P(yáng)RL條目(步驟230)。這一無(wú)效使得向現(xiàn)在已失效的所述PRL條目加載隨機(jī)緩存指針值,以在將來(lái)的后續(xù)緩存寫(xiě)中使用。
圖3是緩存控制器300的方框圖。緩存控制器300控制緩存302,并包括地址注冊(cè)表304,其被配置來(lái)存儲(chǔ)緩存指針值306并將緩存指針值306提供給緩存302和緩存條目替換單元(CERU)310,以實(shí)現(xiàn)根據(jù)本發(fā)明的技術(shù)。CERU310被配置來(lái)接收時(shí)鐘信號(hào)312,并受控于處理器315。CERU310的中心是潛在替換列表(PRL)320,而PRL320由多個(gè)PRL條目(圖3示出為PRL條目325(1)-(N))組成。有效位330(1)-(N)之一和計(jì)數(shù)器335(1)-(N)之一與PRL條目325(1)-(N)中的每一個(gè)關(guān)聯(lián)。有效位330(1)-(N)使得可確定存儲(chǔ)在PRL條目325(1)-(N)中對(duì)應(yīng)的一個(gè)條目中的緩存指針值的有效性。計(jì)數(shù)器335(1)-(N)使得可確定存儲(chǔ)在PRL條目325(1)-(N)中對(duì)應(yīng)的一個(gè)條目中的緩存指針值的年齡。每個(gè)計(jì)數(shù)器335(1)-(N)耦合到可編程時(shí)鐘除法器340,可編程時(shí)鐘除法器340接收時(shí)鐘信號(hào)312并受控于處理器315。
通過(guò)時(shí)鐘除法器340來(lái)控制計(jì)數(shù)器335(1)-(N),這使得可(例如通過(guò)軟件)控制遞增計(jì)數(shù)器335(1)-(N)的速度。PRL320以及有效位330(1)-(N)和計(jì)數(shù)器335(1)-(N)還可由處理器315通過(guò)PRL接口345訪問(wèn)。除了所示出的CERU310所固有的靈活性之外,這些特征還可產(chǎn)生很高的靈活性。例如,在能夠調(diào)整計(jì)數(shù)器335(1)-(N)飽和的速度(因此以及所表示的可替換緩存條目的數(shù)量)之外,處理器315還可以將值預(yù)加載到計(jì)數(shù)器335(1)-(N),基于其他標(biāo)準(zhǔn)使PRL條目325(1)-(N)中的某些條目有效或無(wú)效,以及執(zhí)行與CERU310的控制和操作相關(guān)的其他任務(wù)。應(yīng)注意,替換緩存條目時(shí),CERU310的硬件能夠更新PRL320,處理器315也能夠這樣做,并且可以或者作為優(yōu)選的方法,或者作為CERU310的硬件的備份來(lái)更新PRL320。因此,通過(guò)使處理器315可訪問(wèn)和控制CERU310,可以對(duì)緩存條目替換處理進(jìn)行大量分析和大范圍的控制。
通過(guò)狀態(tài)機(jī)350,PRL接口345也支持對(duì)PRL320、有效位330(1)-(N)和計(jì)數(shù)器335(1)-(N)的訪問(wèn)。狀態(tài)機(jī)350規(guī)定了潛在替換列表320和關(guān)聯(lián)結(jié)構(gòu)的初始化,并提供了在PRL320中存儲(chǔ)隨機(jī)緩存指針值,清空和設(shè)置有效位330(1)-(N),以及重置計(jì)數(shù)器335(1)-(N)。對(duì)于隨機(jī)緩存指針值的存儲(chǔ),狀態(tài)機(jī)350部分地通過(guò)耦合到隨機(jī)值產(chǎn)生器360來(lái)支持這些操作。隨機(jī)值產(chǎn)生器360如它的名稱所暗示的那樣產(chǎn)生隨機(jī)緩存指針值以存儲(chǔ)在PRL320中。CERU310還支持通過(guò)使用比較器370來(lái)將緩存指針值306與PRL條目325(1)-(N)中的每個(gè)進(jìn)行比較,從而無(wú)效PRL條目325(1)-(N)中的一個(gè)或多個(gè)。
在結(jié)合圖1討論的方式中,CERU310操作來(lái)維護(hù)用于替換緩存條目的緩存指針值。狀態(tài)機(jī)350可以多種方式來(lái)設(shè)計(jì)和操作,但是一種(由于其簡(jiǎn)單性而)有優(yōu)勢(shì)的方式是簡(jiǎn)單地通過(guò)檢查每個(gè)PRL條目的關(guān)聯(lián)有效位來(lái)使得350替換被無(wú)效的PRL條目,如果有效位表明PRL條目無(wú)效,則用隨機(jī)值產(chǎn)生器360產(chǎn)生的隨機(jī)緩存指針值來(lái)替換存儲(chǔ)在該P(yáng)RL條目中的緩存指針值,重新啟動(dòng)與該P(yáng)RL條目相關(guān)聯(lián)的計(jì)數(shù)器(即從某個(gè)初始值(例如0)重新啟動(dòng)計(jì)數(shù),并設(shè)置有效位來(lái)表明存儲(chǔ)在該P(yáng)RL條目中的緩存指針值是有效的。如果發(fā)生的緩存讀與存儲(chǔ)在PRL條目之一中的緩存指針值匹配,則該條目被無(wú)效,并且狀態(tài)機(jī)350一旦到達(dá)被無(wú)效的PRL條目,就進(jìn)行前述處理。當(dāng)發(fā)生緩存寫(xiě)時(shí),CERU310基于存儲(chǔ)在PRL條目325(1)-(N)中的哪一個(gè)緩存指針值是最近最少使用的(以及其他可能的標(biāo)準(zhǔn)),(或者通過(guò)其中的硬件結(jié)構(gòu),或者通過(guò)在處理器315上執(zhí)行軟件)選擇PRL條目325(1)-(N)之一。此后,所選擇的PRL條目被無(wú)效,并執(zhí)行前述使該P(yáng)RL條目有效的處理。這里的焦點(diǎn)在于給定的緩存指針值一直有效的時(shí)間。
這還使得CERU310可動(dòng)態(tài)對(duì)流量流中的改變作出反應(yīng)。例如,當(dāng)流量模式改變時(shí),存儲(chǔ)在緩存302中的目的地地址可能會(huì)改變。這通過(guò)替換PRL320中的緩存指針值來(lái)反映出來(lái)。而且,由于計(jì)數(shù)器的速率受控于處理器315,因此CERU310可動(dòng)態(tài)地對(duì)這些改變作出反應(yīng)。這里將此稱為動(dòng)態(tài)替換刷新,其允許對(duì)檢查PRL條目的無(wú)效性的周期性、PRL條目老化的速率等等進(jìn)行控制。應(yīng)注意,在確定應(yīng)替換哪些緩存指針值時(shí)可使用“已使用位”而非計(jì)數(shù)器。然而,這一替換方案的缺點(diǎn)在于不能在有效條目之間進(jìn)行區(qū)分,缺乏與最好替換哪些有效條目有關(guān)的信息。
圖4示出了一個(gè)狀態(tài)機(jī)400,其描述了狀態(tài)機(jī)350實(shí)現(xiàn)的狀態(tài)和轉(zhuǎn)換。初始化后,狀態(tài)機(jī)400前進(jìn)到狀態(tài)410,其中將所有的有效位330(1)-(N)設(shè)置為無(wú)效。這使得可簡(jiǎn)化該狀態(tài)機(jī),因?yàn)闋顟B(tài)機(jī)400可以被簡(jiǎn)單地設(shè)計(jì)為對(duì)PRL條目325(1)-(N)中在有效位330(1)-(N)中對(duì)應(yīng)的有效位表示無(wú)效條目的那些條目進(jìn)行尋址,而不是具有單獨(dú)的一組狀態(tài)來(lái)初始化PRL條目325(1)-(N)。因此,在狀態(tài)機(jī)400對(duì)整個(gè)PRL320的第一趟操作期間,由于PRL條目325(1)-(N)的對(duì)應(yīng)有效位表明存儲(chǔ)在其中的無(wú)效緩存指針值,因此如是來(lái)初始化PRL條目325(1)-(N)。狀態(tài)機(jī)400因此前進(jìn)到在狀態(tài)420(在此狀態(tài)中一般會(huì)讀下一個(gè)PRL條目)讀PRL條目325(1)-(N)之一。如果對(duì)應(yīng)于該P(yáng)RL條目的有效位表示該P(yáng)RL條目有效,則狀態(tài)機(jī)400簡(jiǎn)單地循環(huán)回到狀態(tài)420,讀下一個(gè)PRL條目。如果對(duì)應(yīng)于該P(yáng)RL條目的有效位表明該P(yáng)RL條目無(wú)效(例如PRL條目的緩存指針值指向最近被訪問(wèn)過(guò)的緩存位置或PRL條目需要初始化),則狀態(tài)機(jī)400前進(jìn)到狀態(tài)430。
在狀態(tài)430,隨機(jī)值產(chǎn)生器(例如隨機(jī)值產(chǎn)生器360)產(chǎn)生隨機(jī)緩存指針值,并(例如由狀態(tài)機(jī)350通過(guò)PRL接口345)將之加載到所述PRL條目中。然后,狀態(tài)機(jī)400前進(jìn)到狀態(tài)440,在此清空與所述PRL條目相關(guān)聯(lián)的計(jì)數(shù)器。對(duì)本領(lǐng)域內(nèi)的普通技術(shù)人員來(lái)說(shuō),很清楚可以多種方式來(lái)設(shè)計(jì)與PRL條目325(1)-(N)相關(guān)聯(lián)的計(jì)數(shù)器,包括遞增計(jì)數(shù)器、遞減計(jì)數(shù)器和其他這類設(shè)計(jì)。狀態(tài)機(jī)400然后前進(jìn)到狀態(tài)450,其中將與所述PRL條目相關(guān)聯(lián)的有效位設(shè)置成表示已在其中存儲(chǔ)了有效緩存指針值。
應(yīng)注意,雖然以硬件來(lái)實(shí)現(xiàn)狀態(tài)機(jī)400通常是優(yōu)選的,但是并不必須如此。實(shí)際中,狀態(tài)機(jī)(以及其關(guān)聯(lián)的隨機(jī)值產(chǎn)生器)可以(例如由處理器如處理器315執(zhí)行的)軟件實(shí)現(xiàn)。在此情形下,處理器315提供狀態(tài)機(jī)350和隨機(jī)值產(chǎn)生器360的功能,并通過(guò)PRL接口345以類似的方式與PRL320、有效位330(1)-(N)和計(jì)數(shù)器335(1)-(N)相接口。然而,由于對(duì)無(wú)效緩存條目的替換只能被相對(duì)來(lái)說(shuō)不頻繁地執(zhí)行,因此完全以軟件實(shí)現(xiàn)CERU310會(huì)降低其性能,因而影響本發(fā)明提供的方案的動(dòng)態(tài)性。通過(guò)以硬件實(shí)現(xiàn)隨機(jī)化緩存條目替換,可以實(shí)現(xiàn)緩存條目替換操作的動(dòng)態(tài)行為,對(duì)于分組處理應(yīng)用來(lái)說(shuō),這不能僅通過(guò)軟件來(lái)完成。
圖5的一般化流程圖示出了圖3所示的硬件所執(zhí)行的主要?jiǎng)幼?。所述處理由兩個(gè)主動(dòng)作組成。這些動(dòng)作中的第一個(gè)是初始化PRL(例如PRL320)(步驟500)。初始化后,關(guān)聯(lián)處理器(例如處理器315)、關(guān)聯(lián)狀態(tài)機(jī)(例如狀態(tài)機(jī)350)以及關(guān)聯(lián)支持電路(例如CERU310的關(guān)聯(lián)電路)的動(dòng)作根據(jù)本發(fā)明的實(shí)施例來(lái)維護(hù)所述PRL(步驟510)。
圖6A、6B和6C提供了維護(hù)PRL的進(jìn)一步細(xì)節(jié)。應(yīng)注意,圖6A、6B和6C所示的處理并不是彼此排斥的,相反在實(shí)際中一般彼此并行地執(zhí)行。圖6A是根據(jù)本發(fā)明的狀態(tài)機(jī)(例如圖4的狀態(tài)機(jī)400)執(zhí)行的動(dòng)作的高級(jí)表示。如在圖4的討論中所描述的,狀態(tài)機(jī)400簡(jiǎn)單地對(duì)所有PRL條目進(jìn)行循環(huán),將隨機(jī)緩存指針值加載到任何已被無(wú)效的PRL條目(步驟600)。
圖6B的流程圖示出了計(jì)數(shù)器例如計(jì)數(shù)器335(1)-(N)之一的操作。計(jì)數(shù)器335(1)-(N)中的每一個(gè)都接收來(lái)自劃分時(shí)鐘信號(hào)312的可編程時(shí)鐘除法器340的計(jì)數(shù)信號(hào)??删幊虝r(shí)鐘除法器340受控于處理器315,處理器315向可編程時(shí)鐘除法器340加載一個(gè)值,該值表明時(shí)鐘信號(hào)應(yīng)被除的數(shù)量。計(jì)數(shù)器335(1)-(N)因此以這個(gè)速率計(jì)數(shù)(步驟610)。只要給定計(jì)數(shù)器尚未飽和(即達(dá)到某個(gè)最大值),該計(jì)數(shù)器保持的計(jì)數(shù)就繼續(xù)以可編程時(shí)鐘除法器340的輸出所定義的速率被更新(例如增加)(步驟620)。然而,達(dá)到該最大值后,該給定計(jì)數(shù)器飽和并停止進(jìn)一步計(jì)數(shù)(步驟620)。理想地,處理器315將可編程時(shí)鐘除法器340設(shè)置成時(shí)鐘信號(hào)被除的數(shù)量使得計(jì)數(shù)器335(1)-(N)中最少數(shù)量的計(jì)數(shù)器飽和。因此應(yīng)注意,隨著加載到可編程時(shí)鐘除法器340中的除數(shù)的增加(以及因此計(jì)數(shù)器335(1)-(N)遞增的速率的減慢),計(jì)數(shù)器335(1)-(N)中更少數(shù)量的計(jì)數(shù)器會(huì)飽和。相反,加載到可編程時(shí)鐘除法器340中的除數(shù)越小(以及因此計(jì)數(shù)器335(1)-(N)遞增得更快),計(jì)數(shù)器335(1)-(N)中更多數(shù)量的計(jì)數(shù)器會(huì)飽和。這一效果使得可將除數(shù)選擇成可以選擇適當(dāng)?shù)腜RL條目。例如,可將除數(shù)選擇為使得計(jì)數(shù)器很少會(huì)飽和,因此選擇具有最高計(jì)數(shù)的PRL條目。或者,可將除數(shù)選擇為使得若干計(jì)數(shù)器飽和,使得可使用一些選擇標(biāo)準(zhǔn)(例如最早發(fā)現(xiàn)、最晚發(fā)現(xiàn)、隨機(jī)選擇等等)來(lái)在這些計(jì)數(shù)器之間進(jìn)行選擇。也可使用其他這種范式。因此,可以進(jìn)行分析以獲知系統(tǒng)如何對(duì)某些情形(例如某些流量模式)進(jìn)行反應(yīng)。
圖6C的流程圖示出了等待和處理對(duì)緩存302的訪問(wèn)時(shí)CERU310執(zhí)行的處理。所述處理開(kāi)始于CERU310等待緩存訪問(wèn)(步驟630)。緩存302被訪問(wèn)時(shí)(步驟630),在地址注冊(cè)表304提供的緩存指針值和PRL320中存儲(chǔ)的緩存指針值之間進(jìn)行比較(例如通過(guò)比較器370)(步驟640)。比較器370將提供給緩存302的緩存指針值與PRL條目325(1)-(N)中的每一個(gè)進(jìn)行比較。該比較可以多種方式完成。
如圖6C所示,比較器370循環(huán)通過(guò)PRL條目325(1)-(N)中的每一個(gè),將提供給緩存302的緩存指針值與每個(gè)PRL條目進(jìn)行比較(步驟640),確定提供給緩存302的緩存指針值是否與存儲(chǔ)在給定PRL條目中的緩存指針值匹配(步驟650)?;蛘撸赏ㄟ^(guò)將PRL320組織為內(nèi)容可訪問(wèn)存儲(chǔ)器(CAM)來(lái)執(zhí)行所述操作。在此情形下,提供給緩存302的緩存指針值將會(huì)提供給PRL320,并且在PRL320的CAM產(chǎn)生的匹配緩存指針值(如果有的話)的位置處提供指示。雖然這是被選擇來(lái)識(shí)別匹配PRL條目的方法,但是如此匹配后,就可以無(wú)效該P(yáng)RL條目(例如通過(guò)清空其關(guān)聯(lián)有效位),如前所述(步驟660)。
圖7是示例性聯(lián)網(wǎng)系統(tǒng)的示例的方框圖,該系統(tǒng)被配置來(lái)支持根據(jù)本發(fā)明實(shí)施例的緩存條目替換技術(shù)。網(wǎng)絡(luò)節(jié)點(diǎn)700被示出為包括處理器710和網(wǎng)絡(luò)處理器720。本領(lǐng)域內(nèi)的普通技術(shù)人員將會(huì)很清楚,網(wǎng)絡(luò)節(jié)點(diǎn)700可以是路由器或其他能夠采用本發(fā)明實(shí)施例的網(wǎng)絡(luò)設(shè)備。沿著這些線路,網(wǎng)絡(luò)節(jié)點(diǎn)700可以是全定制集成電路(IC)、其他專用IC(ASIC)的門陣列、已編程的現(xiàn)場(chǎng)可編程門陣列(FPGA)、離散組件或任何其他形式的硬件。如圖7所示,處理器710可訪問(wèn)軟件表730,軟件表730例如可包含進(jìn)入分組的目的地地址。軟件表730可以多種方式存儲(chǔ),包括存儲(chǔ)在主存儲(chǔ)器中、盤存儲(chǔ)器上或以某種其他方式存儲(chǔ)。還可在圖7中看到,網(wǎng)絡(luò)處理器720包括路由處理單元740,其耦合到硬件表750。硬件表750一般地將保持軟件表730中所保持的條目(例如目的地地址)的某個(gè)子集。路由器處理單元740以及硬件表750可被看作為構(gòu)成并包含圖3所示的實(shí)現(xiàn)本發(fā)明的操作的結(jié)構(gòu)。網(wǎng)絡(luò)處理器720接收進(jìn)入數(shù)據(jù)流760,并(使用路由處理單元740和硬件表750)處理該數(shù)據(jù)流以產(chǎn)生外發(fā)數(shù)據(jù)流770。
對(duì)本發(fā)明來(lái)說(shuō),很清楚圖7所示的情形在許多方面相應(yīng)于緩存。在聯(lián)網(wǎng)的情形下,軟件表730一般具有一百萬(wàn)量級(jí)或更多的條目,而硬件表750具有一百萬(wàn)的四分之一左右的量級(jí)的條目,并如前所述地保持軟件表730中保持的條目(例如目的地地址)的子集。因此,由于硬件表750不能保持所有可能的條目,因此希望在硬件表750中只保持(例如轉(zhuǎn)發(fā)分組到后續(xù)網(wǎng)絡(luò)節(jié)點(diǎn)和/或到其最終目的地時(shí))那些最可能被使用的條目。而且,存儲(chǔ)在硬件表750中的(目的地)信息是動(dòng)態(tài)的,因?yàn)榱髁苛?以及因此目的地)是動(dòng)態(tài)的,因而需要存儲(chǔ)在硬件表750中的信息隨時(shí)間而改變。按照這種方式,硬件表750在某種意義上用作為存儲(chǔ)在軟件表730中的信息的緩存,因此可期望會(huì)受益于這里描述的方法和裝置。
應(yīng)注意,在實(shí)際中,可以簡(jiǎn)單地將軟件表730片上轉(zhuǎn)移到網(wǎng)絡(luò)處理器720。然而,這是一種極其昂貴的方案,至少就這種大型表所消耗的芯片面積以及這種表的可擴(kuò)展性的限制來(lái)講是如此。或者,所述表可被保持在片外硬件中,當(dāng)這會(huì)極大地增加網(wǎng)絡(luò)處理器720的復(fù)雜度,這是因?yàn)樾枰~外的(高速)接口,并增加額外的板載組件(這使得成本增加,消耗了PCB面積,等等)。完全依賴于軟件表730由于更慢的性能、處理器710上增加的計(jì)算負(fù)荷等等也是不可取的。
這種方法的成功取決于在大多數(shù)情形下,基于一個(gè)或多個(gè)條目具有最接近給定極限的計(jì)數(shù)值,能夠提供至少一個(gè)飽和條目,或至少能夠確定哪個(gè)條目最近最少使用。發(fā)明人的分析顯示出即使對(duì)于最少數(shù)量的PRL條目(例如32)也是如此。
本領(lǐng)域內(nèi)的普通技術(shù)人員將很清楚,這種系統(tǒng)的性能取決于緩存訪問(wèn)模式。下面的假設(shè)的作出是為了簡(jiǎn)化分析無(wú)論分布狀況如何,總是有方法來(lái)設(shè)計(jì)一種度量,以使得每個(gè)條目可被分類為“可替換”或“不可替換”,并且從相對(duì)較長(zhǎng)的時(shí)間窗口來(lái)看,可以計(jì)算簡(jiǎn)單的概率值(稱為p)來(lái)隨機(jī)挑選“可替換”條目。
例如,初始化時(shí),如果隨機(jī)選擇32個(gè)緩存指針值,則它們都不是“可替換”條目的概率是y=(1-p)32由于上述等式的指數(shù)性,y可能是很小的數(shù)。如果p=0.2,則y=0.0008,如果p=0.5,則y=2.3×10-10。而且,由于根據(jù)本發(fā)明的處理是動(dòng)態(tài)的,并且在發(fā)現(xiàn)“不可替換”條目時(shí)盡可能快地進(jìn)行了清除和替換,因此,上述公式僅代表y的實(shí)際值的保守上限。唯一的要求在于要仔細(xì)選擇計(jì)數(shù)器周期,以使得“不可替換”條目最大可能地被清除,這在實(shí)踐中已被證明為可相對(duì)簡(jiǎn)單地實(shí)現(xiàn)。因此,由于僅需要相對(duì)小的PRL就可實(shí)現(xiàn)可接受的性能,這一方案消耗的芯片面積相對(duì)來(lái)說(shuō)就很小(尤其是當(dāng)與對(duì)軟件表的大小進(jìn)行緩存相比時(shí))。因此,根據(jù)本發(fā)明的PRL緩存條目替換策略提供了低成本、基于硬件的方案,其尤其適用于具有大量條目的軟件表。
而且,雖然已按照路由表和目的地來(lái)討論了本發(fā)明的應(yīng)用(這是本發(fā)明的重要應(yīng)用),但是在聯(lián)網(wǎng)環(huán)境中,本發(fā)明可以擴(kuò)展到具有處理分組時(shí)可能需要的任何其他類信息的表。例如,本發(fā)明可與源信息表(例如用于檢測(cè)黑客發(fā)送的虛假分組時(shí)使用的那些表)一起使用。
雖然已經(jīng)示出并描述了本發(fā)明的特定實(shí)施例,但是很明顯,基于這里的教導(dǎo),本領(lǐng)域內(nèi)的普通技術(shù)人員可以作出多種改變和修正,而不會(huì)偏離本發(fā)明及其更寬的范圍,因此,所附權(quán)利要求應(yīng)將所有這些改變和修正包括在它們的范圍內(nèi),因?yàn)樗鼈兲幱诒景l(fā)明的真正精神和范圍內(nèi)。而且,雖然已參考這些具體實(shí)施例來(lái)具體示出并描述了本發(fā)明,但是本領(lǐng)域內(nèi)的普通技術(shù)人員將會(huì)理解到,可在其中作出前面的改變以及在形式和細(xì)節(jié)上的其他改變,而不會(huì)偏離本發(fā)明的精神和范圍。
權(quán)利要求
1.一種緩存控制器,包括包括多個(gè)條目的潛在替換列表;多個(gè)有效位,其中所述多個(gè)有效位中的每個(gè)有效位都對(duì)應(yīng)于所述多個(gè)條目中的一個(gè)條目;以及多個(gè)計(jì)數(shù)器,其中所述多個(gè)計(jì)數(shù)器中的每個(gè)計(jì)數(shù)器都對(duì)應(yīng)于所述多個(gè)條目中的所述一個(gè)條目。
2.如權(quán)利要求1所述的緩存控制器,其中所述多個(gè)條目中的每個(gè)條目都被配置來(lái)至少存儲(chǔ)緩存指針值。
3.如權(quán)利要求1所述的緩存控制器,還包括比較器,其中所述比較器耦合到所述多個(gè)條目,并且所述比較器被配置來(lái)接收緩存指針值。
4.如權(quán)利要求3所述的緩存控制器,其中所述比較器被配置來(lái)將所述緩存指針值與存儲(chǔ)在所述多個(gè)條目中的每個(gè)條目中的隨機(jī)緩存指針值進(jìn)行比較,并且所述比較器被配置為,如果所述緩存指針值與所述存儲(chǔ)在所述多個(gè)條目中的至少一個(gè)條目中的緩存指針值匹配,則無(wú)效所述多個(gè)條目中的所述至少一個(gè)條目。
5.如權(quán)利要求4所述的緩存控制器,其中所述比較器被配置為通過(guò)清空所述多個(gè)有效位中對(duì)應(yīng)于所述多個(gè)條目中的所述至少一個(gè)條目的至少一個(gè)有效位,從而無(wú)效所述多個(gè)條目中的所述至少一個(gè)條目。
6.如權(quán)利要求3所述的緩存控制器,還包括被配置來(lái)產(chǎn)生隨機(jī)緩存指針值的隨機(jī)數(shù)產(chǎn)生器;以及狀態(tài)機(jī),其耦合到所述隨機(jī)數(shù)產(chǎn)生器和所述潛在替換列表,其中所述狀態(tài)機(jī)被配置為用所述隨機(jī)緩存指針值來(lái)替換存儲(chǔ)在所述多個(gè)條目中被無(wú)效的一個(gè)條目中的緩存指針值。
7.如權(quán)利要求6所述的緩存控制器,其中所述狀態(tài)機(jī)通過(guò)被配置為執(zhí)行下述操作而用所述隨機(jī)緩存指針值來(lái)替換存儲(chǔ)在所述多個(gè)條目中被無(wú)效的一個(gè)條目中的所述緩存指針值讀所述多個(gè)條目中的一個(gè)條目,并且如果所述多個(gè)條目中的所述一個(gè)條目被無(wú)效了,則將所述隨機(jī)緩存指針值加載到所述多個(gè)條目中的所述一個(gè)條目中,清空所述多個(gè)計(jì)數(shù)器中與所述多個(gè)條目中的所述一個(gè)條目相關(guān)聯(lián)的一個(gè)計(jì)數(shù)器,并設(shè)置所述多個(gè)有效位中與所述多個(gè)條目中的所述一個(gè)條目相關(guān)聯(lián)的一個(gè)有效位。
8.如權(quán)利要求1所述的緩存控制器,還包括可編程時(shí)鐘除法器,其耦合到所述計(jì)數(shù)器和時(shí)鐘信號(hào),其中所述可編程時(shí)鐘除法器被配置來(lái)控制所述多個(gè)計(jì)數(shù)器計(jì)數(shù)的計(jì)數(shù)速率。
9.如權(quán)利要求1所述的緩存控制器,其中所述多個(gè)計(jì)數(shù)器中的每個(gè)計(jì)數(shù)器都是飽和計(jì)數(shù)器。
10.如權(quán)利要求9所述的緩存控制器,其中所述計(jì)數(shù)速率控制所述多個(gè)計(jì)數(shù)器飽和的速率。
11.如權(quán)利要求1所述的緩存控制器,還包括可編程時(shí)鐘除法器,其耦合到所述多個(gè)計(jì)數(shù)器和時(shí)鐘信號(hào),其中所述多個(gè)計(jì)數(shù)器中的每個(gè)計(jì)數(shù)器都是飽和計(jì)數(shù)器,并且所述可編程時(shí)鐘除法器被配置來(lái)控制所述多個(gè)計(jì)數(shù)器計(jì)數(shù)的計(jì)數(shù)速率;以及處理器,其耦合到所述潛在替換列表和所述可編程時(shí)鐘除法器,其中所述處理器被配置來(lái)配置所述可編程時(shí)鐘除法器,以控制所述多個(gè)計(jì)數(shù)器的飽和速率。
12.如權(quán)利要求11所述的緩存控制器,還包括比較器,其中所述比較器耦合到所述多個(gè)條目,所述比較器被配置來(lái)接收緩存指針值,并將所述緩存指針值與存儲(chǔ)在所述多個(gè)條目中的每個(gè)條目中的隨機(jī)緩存指針值進(jìn)行比較,并且所述比較器被配置為,如果所述緩存指針值與所述存儲(chǔ)在所述多個(gè)條目中的至少一個(gè)條目中的緩存指針值匹配,則無(wú)效所述多個(gè)條目中的所述至少一個(gè)條目;被配置來(lái)產(chǎn)生隨機(jī)緩存指針值的隨機(jī)數(shù)產(chǎn)生器;以及狀態(tài)機(jī),其耦合到所述隨機(jī)數(shù)產(chǎn)生器和所述潛在替換列表,其中所述狀態(tài)機(jī)被配置為用所述隨機(jī)緩存指針值來(lái)替換存儲(chǔ)在所述多個(gè)條目中被無(wú)效的一個(gè)條目中的緩存指針值,并且所述處理器包括所述狀態(tài)機(jī)和所述隨機(jī)數(shù)產(chǎn)生器。
13.一種用于替換緩存中的緩存條目的方法,包括產(chǎn)生隨機(jī)緩存指針值;將所述隨機(jī)緩存指針值存儲(chǔ)在潛在替換列表的條目中;表明所述條目是有效的;以及重新啟動(dòng)與所述條目相關(guān)聯(lián)的計(jì)數(shù)器。
14.如權(quán)利要求13所述的方法,還包括將緩存指針值與所述隨機(jī)緩存指針值進(jìn)行比較;以及如果所述緩存指針值與所述隨機(jī)緩存指針值匹配,則無(wú)效所述條目。
15.如權(quán)利要求14所述的方法,還包括通過(guò)清空與所述條目相關(guān)聯(lián)的有效位,無(wú)效所述條目。
16.如權(quán)利要求14所述的方法,還包括如果所述條目已被無(wú)效,則產(chǎn)生隨機(jī)緩存指針值,將所述隨機(jī)緩存指針值存儲(chǔ)在所述條目中,表明所述條目是有效的,并且重新啟動(dòng)所述計(jì)數(shù)器。
17.如權(quán)利要求13所述的方法,其中所述條目是多個(gè)條目中的一個(gè),并且有效位和計(jì)數(shù)器與所述多個(gè)條目中的每個(gè)條目相關(guān)聯(lián)。
18.如權(quán)利要求17所述的方法,還包括檢查多個(gè)所述計(jì)數(shù)器,以識(shí)別所述多個(gè)條目中包含最近最少使用的緩存指針值的一個(gè)關(guān)聯(lián)條目。
19.如權(quán)利要求18所述的方法,其中當(dāng)所述緩存被寫(xiě)時(shí)執(zhí)行所述檢查。
20.如權(quán)利要求18所述的方法,還包括通過(guò)清空與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的有效位,無(wú)效所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目。
21.如權(quán)利要求18所述的方法,還包括產(chǎn)生另一個(gè)隨機(jī)緩存指針值;將所述另一個(gè)緩存指針值存儲(chǔ)在所述多個(gè)條目中的所述一個(gè)關(guān)聯(lián)條目中;通過(guò)設(shè)置所述多個(gè)有效位中與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的一個(gè)有效位,表明所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目是有效的;以及重新啟動(dòng)與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的計(jì)數(shù)器。
22.如權(quán)利要求17所述的方法,還包括檢查所述多個(gè)有效位中的每個(gè)有效位;以及如果所述多個(gè)有效位中的所述每個(gè)有效位表明所述多個(gè)條目中一個(gè)關(guān)聯(lián)條目是無(wú)效的,則產(chǎn)生另一個(gè)隨機(jī)緩存指針值;將所述另一個(gè)緩存指針值存儲(chǔ)在所述多個(gè)條目中的所述一個(gè)關(guān)聯(lián)條目中;設(shè)置所述多個(gè)有效位中的所述每個(gè)有效位,以表明所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目是有效的;并且重新啟動(dòng)與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的計(jì)數(shù)器。
23.一種網(wǎng)絡(luò)元件,包括處理器;耦合到所述處理器的緩存;耦合到所述處理器的計(jì)算機(jī)可讀介質(zhì);以及編碼在所述計(jì)算機(jī)可讀介質(zhì)中的計(jì)算機(jī)代碼,用于替換所述緩存中的緩存條目,并被配置為使得所述處理器產(chǎn)生隨機(jī)緩存指針值;將所述隨機(jī)緩存指針值存儲(chǔ)在潛在替換列表的條目中;表明所述條目是有效的;并且重新啟動(dòng)與所述條目相關(guān)聯(lián)的計(jì)數(shù)器。
24.如權(quán)利要求23所述的網(wǎng)絡(luò)元件,其中所述計(jì)算機(jī)代碼還被配置來(lái)使得所述處理器將緩存指針值與所述隨機(jī)緩存指針值進(jìn)行比較;并且如果所述緩存指針值與所述隨機(jī)緩存指針值匹配,則無(wú)效所述條目。
25.如權(quán)利要求24所述的網(wǎng)絡(luò)元件,其中所述計(jì)算機(jī)代碼還被配置來(lái)使得所述處理器通過(guò)清空與所述條目相關(guān)聯(lián)的有效位,無(wú)效所述條目。
26.如權(quán)利要求24所述的網(wǎng)絡(luò)元件,其中所述計(jì)算機(jī)代碼還被配置來(lái)使得所述處理器如果所述條目已被無(wú)效,則產(chǎn)生隨機(jī)緩存指針值,將所述隨機(jī)緩存指針值存儲(chǔ)在所述條目中,表明所述條目是有效的,并且重新啟動(dòng)所述計(jì)數(shù)器。
27.如權(quán)利要求23所述的網(wǎng)絡(luò)元件,其中所述條目是多個(gè)條目中的一個(gè),并且有效位和計(jì)數(shù)器與所述多個(gè)條目中的每個(gè)條目相關(guān)聯(lián)。
28.如權(quán)利要求27所述的網(wǎng)絡(luò)元件,其中所述計(jì)算機(jī)代碼還被配置來(lái)使得所述處理器檢查所述多個(gè)計(jì)數(shù)器,以識(shí)別所述多個(gè)條目中包含最近最少使用的緩存指針值的一個(gè)關(guān)聯(lián)條目。
29.如權(quán)利要求28所述的網(wǎng)絡(luò)元件,其中所述計(jì)算機(jī)代碼還被配置來(lái)使得所述處理器產(chǎn)生另一個(gè)隨機(jī)緩存指針值;將所述另一個(gè)緩存指針值存儲(chǔ)在所述多個(gè)條目中的所述一個(gè)關(guān)聯(lián)條目中;通過(guò)設(shè)置所述多個(gè)有效位中與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的一個(gè)有效位,表明所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目是有效的;并且重新啟動(dòng)與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的計(jì)數(shù)器。
30.如權(quán)利要求27所述的網(wǎng)絡(luò)元件,其中所述計(jì)算機(jī)代碼還被配置來(lái)使得所述處理器檢查所述多個(gè)有效位中的每個(gè)有效位;以及如果所述多個(gè)有效位中的所述每個(gè)有效位表明所述多個(gè)條目中一個(gè)關(guān)聯(lián)條目是無(wú)效的,則產(chǎn)生另一個(gè)隨機(jī)緩存指針值;將所述另一個(gè)緩存指針值存儲(chǔ)在所述多個(gè)條目中的所述一個(gè)關(guān)聯(lián)條目中;設(shè)置所述多個(gè)有效位中的所述每個(gè)有效位,以表明所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目是有效的;并且重新啟動(dòng)與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的計(jì)數(shù)器。
31.一種計(jì)算機(jī)程序產(chǎn)品,包括可在計(jì)算機(jī)系統(tǒng)上執(zhí)行的第一指令集,其被配置來(lái)產(chǎn)生隨機(jī)緩存指針值;可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第二指令集,其被配置來(lái)將所述隨機(jī)緩存指針值存儲(chǔ)在潛在替換列表的條目中;可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第三指令集,其被配置來(lái)表明所述條目是有效的;可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第四指令集,其被配置來(lái)重新啟動(dòng)與所述條目相關(guān)聯(lián)的計(jì)數(shù)器;以及計(jì)算機(jī)可讀介質(zhì),其中所述計(jì)算機(jī)程序產(chǎn)品編碼在所述計(jì)算機(jī)可讀介質(zhì)中。
32.如權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,還包括可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第五指令集,其被配置來(lái)將緩存指針值與所述隨機(jī)緩存指針值進(jìn)行比較;以及可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第六指令集,其被配置為,如果所述緩存指針值與所述隨機(jī)緩存指針值匹配,則無(wú)效所述條目。
33.如權(quán)利要求32所述的計(jì)算機(jī)程序產(chǎn)品,還包括可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第七指令集,其被配置來(lái)通過(guò)清空與所述條目相關(guān)聯(lián)的有效位,無(wú)效所述條目。
34.如權(quán)利要求32所述的計(jì)算機(jī)程序產(chǎn)品,還包括可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第八指令集,其被配置為,如果所述條目已被無(wú)效,則產(chǎn)生隨機(jī)緩存指針值,將所述隨機(jī)緩存指針值存儲(chǔ)在所述條目中,表明所述條目是有效的,并且重新啟動(dòng)所述計(jì)數(shù)器。
35.如權(quán)利要求31所述的計(jì)算機(jī)程序產(chǎn)品,其中所述條目是多個(gè)條目中的一個(gè),并且有效位和計(jì)數(shù)器與所述多個(gè)條目中的每個(gè)條目相關(guān)聯(lián)。
36.如權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,還包括可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第五指令集,其被配置來(lái)檢查多個(gè)所述計(jì)數(shù)器,以識(shí)別所述多個(gè)條目中包含最近最少使用的緩存指針值的一個(gè)關(guān)聯(lián)條目。
37.如權(quán)利要求36所述的計(jì)算機(jī)程序產(chǎn)品,還包括可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第六指令集,其被配置來(lái)產(chǎn)生另一個(gè)隨機(jī)緩存指針值;可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第七指令集,其被配置來(lái)將所述另一個(gè)緩存指針值存儲(chǔ)在所述多個(gè)條目中的所述一個(gè)關(guān)聯(lián)條目中;可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第八指令集,其被配置來(lái)通過(guò)設(shè)置所述多個(gè)有效位中與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的一個(gè)有效位,表明所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目是有效的;以及可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第九指令集,其被配置來(lái)重新啟動(dòng)與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的計(jì)數(shù)器。
38.如權(quán)利要求35所述的計(jì)算機(jī)程序產(chǎn)品,還包括可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第五指令集,其被配置來(lái)檢查所述多個(gè)有效位中的每個(gè)有效位;以及可在所述計(jì)算機(jī)系統(tǒng)上執(zhí)行的第六指令集,其被配置為如果所述多個(gè)有效位中的所述每個(gè)有效位表明所述多個(gè)條目中一個(gè)關(guān)聯(lián)條目是無(wú)效的,則產(chǎn)生另一個(gè)隨機(jī)緩存指針值;將所述另一個(gè)緩存指針值存儲(chǔ)在所述多個(gè)條目中的所述一個(gè)關(guān)聯(lián)條目中;設(shè)置所述多個(gè)有效位中的所述每個(gè)有效位,以表明所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目是有效的;并且重新啟動(dòng)與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的計(jì)數(shù)器。
39.一種用于替換緩存中的緩存條目的裝置,包括用于產(chǎn)生隨機(jī)緩存指針值的裝置;用于將所述隨機(jī)緩存指針值存儲(chǔ)在潛在替換列表的條目中的裝置;用于表明所述條目有效的裝置;以及用于重新啟動(dòng)與所述條目相關(guān)聯(lián)的計(jì)數(shù)器的裝置。
40.如權(quán)利要求39所述的裝置,還包括用于將緩存指針值與所述隨機(jī)緩存指針值進(jìn)行比較的裝置;以及用于如果所述緩存指針值與所述隨機(jī)緩存指針值匹配,則無(wú)效所述條目的裝置。
41.如權(quán)利要求40所述的裝置,還包括用于通過(guò)清空與所述條目相關(guān)聯(lián)的有效位,無(wú)效所述條目的裝置。
42.如權(quán)利要求39所述的裝置,其中所述條目是多個(gè)條目中的一個(gè),并且有效位和計(jì)數(shù)器與所述多個(gè)條目中的每個(gè)條目相關(guān)聯(lián)。
43.如權(quán)利要求42所述的裝置,還包括用于檢查多個(gè)所述計(jì)數(shù)器,以識(shí)別所述多個(gè)條目中包含最近最少使用的緩存指針值的一個(gè)關(guān)聯(lián)條目的裝置。
44.如權(quán)利要求43所述的裝置,還包括用于通過(guò)清空與所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目相關(guān)聯(lián)的有效位,無(wú)效所述多個(gè)條目中所述一個(gè)關(guān)聯(lián)條目的裝置。
全文摘要
緩存控制器(300)包括潛在替換列表(320),該列表的每個(gè)條目包括表明緩存(302)中可能被替換的條目的老化計(jì)數(shù)器(335)和指針(325)。當(dāng)列表發(fā)生命中時(shí),從列表取出所述指針,并替換以來(lái)自隨機(jī)值產(chǎn)生器(360)的新隨機(jī)指針。緩存缺失時(shí),按照相同的方式,使用由老化計(jì)數(shù)器(335)確定的最近最少使用指針(325)來(lái)替換緩存(302)中的條目,并將該指針本身替換以隨機(jī)值。
文檔編號(hào)G06F12/12GK1672136SQ03818292
公開(kāi)日2005年9月21日 申請(qǐng)日期2003年7月31日 優(yōu)先權(quán)日2002年7月31日
發(fā)明者拉詹·夏爾馬 申請(qǐng)人:思科技術(shù)公司