專利名稱:高速緩存系統(tǒng)與管理高速緩存的方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及計算機(jī)存儲器,尤其涉及用于存儲頻繁被訪問的高速緩存線(line)的計算機(jī)高速緩存。
背景技術(shù):
高速緩存是指計算機(jī)中使用的一種高級存儲器,當(dāng)選擇存儲器系統(tǒng)時,設(shè)計者通常必須權(quán)衡其性能、速度的代價和其它限制。為了創(chuàng)造最高效的機(jī)器,人們實(shí)現(xiàn)了多種類型的存儲器。
在大多數(shù)計算機(jī)系統(tǒng)中,處理器更可能請求剛剛訪問過的信息。高速緩存與主存儲器相比更快更小,用于存儲處理器用過的指令,使得當(dāng)存儲在高速緩存中的高速緩存線被請求訪問時,高速緩存能夠?qū)⑿畔⑻峁┙o處理器,這比從主存儲器訪問快得多,因此,高速緩存提高了性能。
高速緩存的性能在計算機(jī)系統(tǒng)中變得越來越重要。當(dāng)被請求的高速緩存線存儲在高速緩存中而無需從主存儲器讀取時發(fā)生的高速緩存命中節(jié)省了計算機(jī)系統(tǒng)的時間和資源,因此,為了盡可能提高一致高速緩存命中的可能性并減少命中失誤,人們開發(fā)出多種類型的高速緩存。
有些類型的高速緩存已應(yīng)用于現(xiàn)有技術(shù)的系統(tǒng)中。指令高速緩存(I-cache)采用存儲的時間和空間局部性,以允許在不經(jīng)受從主存儲器訪問指令的相關(guān)延時的情況下執(zhí)行指令獲取。然而,根據(jù)高速緩存的關(guān)聯(lián)性(associativity)和大小,頻繁使用但在空間和時間上分離的高速緩存線仍然可能從高速緩存中清出。在發(fā)生高速緩存命中失誤時,處理器付出從主存儲器獲取該高速緩存線內(nèi)容的代價,從而降低了整體性能。
因此,期望提供一種基于其使用頻率來繼續(xù)高速緩存這些高速緩存線、能夠潛在地增加高速緩存的總體命中率的方法和裝置。
發(fā)明內(nèi)容
在優(yōu)選實(shí)施例的例子中,提供了一種用于計算機(jī)系統(tǒng)的高速緩存系統(tǒng),該高速緩存系統(tǒng)具有一級高速緩存和二級高速緩存,一級高速緩存用于存儲多個第一指令,二級緩存用來存儲多個第二指令,其中,一級高速緩存中的每個指令都有一個相關(guān)的計數(shù)器,當(dāng)該指令被存取時,該相關(guān)計數(shù)器就遞增。在該實(shí)施例中,當(dāng)計數(shù)器達(dá)到一個門限時,相關(guān)指令被從一級高速緩存復(fù)制到二級高速緩存中,其中與其在一級高速緩存中存儲的時間比較,該高速緩存線在二級高速緩存中會保持更長的時間,不會被覆蓋掉。
作為本發(fā)明特征的新穎特性將在所附權(quán)利要求書中闡述。但是,通過參考如下典型實(shí)施例和附圖的詳細(xì)說明,可以更好地理解發(fā)明本身,其優(yōu)選應(yīng)用模式和進(jìn)一步的目的與優(yōu)點(diǎn)。
圖1示出了適合實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的計算機(jī)系統(tǒng)的框圖。
圖2示出了適合實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的示例性計算機(jī)系統(tǒng)的部件圖。
圖3示出了根據(jù)本發(fā)明優(yōu)選實(shí)施例的高速緩存系統(tǒng)。
圖4示出了適合實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的處理步驟的流圖。
圖5示出了適合實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的處理步驟的流圖。
圖6示出了適合實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的硬件計數(shù)器堆棧。
圖7示出了適合實(shí)現(xiàn)本發(fā)明優(yōu)選實(shí)施例的硬件計數(shù)器堆棧。
具體實(shí)施例方式
現(xiàn)在參考附圖,尤其是圖1,其中根據(jù)本發(fā)明的一個優(yōu)選實(shí)施例描述了其中可實(shí)現(xiàn)本發(fā)明的數(shù)據(jù)處理系統(tǒng)的圖形化表示。所示計算機(jī)100包括系統(tǒng)單元110,視頻顯示終端102,鍵盤104,存儲設(shè)備108(可包括軟驅(qū)和其它的永久和可移動存儲介質(zhì)),和鼠標(biāo)106。個人計算機(jī)100還可包括附加輸入設(shè)備,例如,操縱桿、觸墊、觸摸屏、軌跡球、麥克風(fēng)等等。計算機(jī)100能用任何合適的計算機(jī)實(shí)現(xiàn),例如IBMRS/6000計算機(jī)或IntelliStation計算機(jī),它們是位于紐約阿蒙克的國際商業(yè)機(jī)器公司的產(chǎn)品。盡管圖示給出了一個計算機(jī),然而本發(fā)明的其它實(shí)施例還可以通過其它類型的數(shù)據(jù)處理系統(tǒng)來實(shí)現(xiàn),例如網(wǎng)絡(luò)計算機(jī)。計算機(jī)100最好也包括圖形用戶接口,該接口可通過系統(tǒng)軟件來實(shí)現(xiàn),該系統(tǒng)軟件存儲在計算機(jī)可讀介質(zhì)上,在計算機(jī)100內(nèi)運(yùn)行。
參考圖2,它給出一個數(shù)據(jù)處理系統(tǒng)的框圖,該系統(tǒng)可實(shí)現(xiàn)本發(fā)明。數(shù)據(jù)處理系統(tǒng)200是一個計算機(jī)的實(shí)例,如圖1中的計算機(jī)100,用于實(shí)現(xiàn)本發(fā)明處理的代碼或指令可位于其中。數(shù)據(jù)處理系統(tǒng)200使用外設(shè)部件互連(PCI)局部總線結(jié)構(gòu)。盡管所述例子使用PCI總線,但是其它的總線結(jié)構(gòu)也可以使用,如加速圖形端口(AGP)和工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)。處理器202和主存儲器204通過PCI橋208連接到局部總線206。PCI橋208也可以包括一個集成存儲器控制器和高速緩存,用于處理器202。可通過直接部件互連或插件板建立到PCI局部總線206的附加連接。在所述例子中,局域網(wǎng)(LAN)適配器210,小型計算機(jī)系統(tǒng)接口SCSI主機(jī)總線適配器212和擴(kuò)展總線接口214都通過直接部件連接連接到PCI局部總線206。相反,音頻適配器216,圖形適配器218,和音頻/視頻適配器219通過插入擴(kuò)展插槽的插件板連接到PCI局部總線206。擴(kuò)展總線接口214提供針對鍵盤和鼠標(biāo)適配器214、調(diào)制解調(diào)器222、以及附加存儲器224的連接。SCSI主機(jī)總線適配器212提供針對硬盤驅(qū)動器226、磁帶驅(qū)動器228和CD-ROM驅(qū)動器230的連接。典型的PCI局部總線實(shí)現(xiàn)會支持三或四個PCI擴(kuò)展插槽或插件連接器。
操作系統(tǒng)在處理器202上運(yùn)行,并且用來協(xié)調(diào)并控制圖2數(shù)據(jù)處理系統(tǒng)200中的各種部件。該操作系統(tǒng)可以是市場上可得到的操作系統(tǒng),如Windows 2000,可從微軟公司獲得。面向?qū)ο缶幊滔到y(tǒng)如JAVA可與該系統(tǒng)協(xié)同工作,并提供從數(shù)據(jù)處理系統(tǒng)200上運(yùn)行的JAVA程序或應(yīng)用程序到操作系統(tǒng)的調(diào)用?!癑AVA”是Sun微系統(tǒng)公司的商標(biāo)。操作系統(tǒng)、面向?qū)ο缶幊滔到y(tǒng)、應(yīng)用軟件或程序的指令都存儲在存儲設(shè)備,如硬盤驅(qū)動器226上,并且可加載到主存儲器204上由處理器202執(zhí)行。本領(lǐng)域普通技術(shù)人員知道,圖2中的硬件會根據(jù)實(shí)現(xiàn)而變化。其它的內(nèi)部硬件或外部設(shè)備,如快擦寫ROM(或等效的非易失存儲器)或光盤驅(qū)動器等等可以補(bǔ)充或代替圖2所述的硬件。而且,本發(fā)明的處理可適用于多處理器數(shù)據(jù)處理系統(tǒng)。
舉個例子,數(shù)據(jù)處理系統(tǒng)200(如果可選地配置成網(wǎng)絡(luò)計算機(jī))可以不包括SCSI主機(jī)總線適配器212、硬盤驅(qū)動器226、磁帶驅(qū)動器228和CD-ROM 230,如圖2中表示可選包含的虛線232所示。在這種情況下,計算機(jī)(更準(zhǔn)確地說是客戶端計算機(jī))必須包括某種類型的網(wǎng)絡(luò)通信接口,如局域網(wǎng)適配器210,調(diào)制解調(diào)器222等等。作為另外一個例子,無論數(shù)據(jù)處理系統(tǒng)200是否包括某類型的網(wǎng)絡(luò)通信接口,其都可以是獨(dú)立系統(tǒng),配置為可自啟動而無需依靠某類型的網(wǎng)絡(luò)通信接口。作為更進(jìn)一步的例子,數(shù)字處理系統(tǒng)200可以是個人數(shù)字助理(PDA),其配有ROM或/和快擦寫ROM,以提供用來儲存操作系統(tǒng)文件和/或用戶生成數(shù)據(jù)的非易失存儲器。
圖2中描述的例子和上面描述的例子并不暗示系統(tǒng)結(jié)構(gòu)限制。例如,除可采取PDA的形式之外,數(shù)字處理系統(tǒng)200也可以是筆記本電腦或手持電腦。數(shù)據(jù)處理系統(tǒng)200也可以是信息亭或Web設(shè)備。
本發(fā)明的處理通過使用計算機(jī)實(shí)現(xiàn)的指令由處理器202來執(zhí)行,這些指令可位于存儲器,如主存儲器204,存儲器224中,或位于一個或多個外設(shè)226-230中。
本發(fā)明教導(dǎo)了用于計算機(jī)系統(tǒng),例如圖1和2中所示的系統(tǒng)的新穎高速緩存系統(tǒng)。在優(yōu)選實(shí)施例中,本發(fā)明的高速緩存被實(shí)現(xiàn)為例如主存儲器204或其它高速緩存的一部分。
在一個優(yōu)選實(shí)施例的實(shí)例中,動態(tài)頻繁指令高速緩存(DFI-cache)用一個主高速緩存,例如一個指令高速緩存(I-cache)來實(shí)現(xiàn)。兩個高速緩存被同時查詢,使得如果一個高速緩存線保持在這兩個高速緩存中的任何一個中,則該查詢會導(dǎo)致命中。
在一個實(shí)施例中,主高速緩存中的每個高速緩存線都配有一個相關(guān)計數(shù)器,每當(dāng)該高速緩存線被訪問時,該計數(shù)器都遞增。當(dāng)計數(shù)器達(dá)到一個確定的數(shù)目時,該高速緩存線被移出高速緩存,并且放入DFI-cache中。DFI-cache從而以比主高速緩存更長的時間保存更頻繁訪問的高速緩存線。
在另一個實(shí)施例中,為主高速緩存補(bǔ)充一個硬件計數(shù)器,這個計數(shù)器對存取最頻繁的高速緩存線進(jìn)行計數(shù)。當(dāng)要從主高速緩存中移除一項(xiàng)時,最大計數(shù)器值決定要移除的高速緩存線。移除的高速緩存線最好被移入DFI-cache,使得更頻繁訪問的高速緩存線在高速緩存中保持的時間更長。
圖3給出一個計算機(jī)系統(tǒng)的高速緩存結(jié)構(gòu),其與本發(fā)明的一個優(yōu)選實(shí)施例一致。在這個示例中,描述了兩個高速緩存,即第一高速緩存302(如一個指令高速緩存或I-cache)和動態(tài)頻繁指令(DFI)高速緩存(DFI-cache)300。例中的第一高速緩存302包括用于計數(shù)器308A-C的空間,這些計數(shù)器和指令高速緩存302中的每條高速緩存線306A-C對應(yīng)。每條高速緩存線306A-C都配置計數(shù)器308A-C中的一個,并且當(dāng)一條高速緩存線,如高速緩存線306A被存取時,其計數(shù)器308A增加。應(yīng)該注意到,盡管這個示例用I-cache作為第一高速緩存,然而其它類型的高速緩存也可以替代實(shí)現(xiàn),如N.P.Jouppi在“Improving Direct-Mapped Cache Performance by the Addition of aSmall Fully-Associative Cache and Prefetch Buffers”,IEEE出版,CH2887-8/9/90中所描述的受害高速緩存(victim cache),這里加以引用作為參考。
當(dāng)計數(shù)器達(dá)到一個預(yù)定門限(或可變門限,取決于實(shí)現(xiàn))時,該高速緩存線從I-cache 302移出并放入DFI-cache 300中,如高速緩存線304A。在此例中,DFI-cache是完全相關(guān)的,并遵循最近最少使用(LRU)策略,該策略用于當(dāng)要加入新的高速緩存線時,決定哪一個高速緩存線被覆蓋。
DFI-cache是一個附加高速緩存,用來存儲已確定為頻繁使用的高速緩存線(例如根據(jù)其相關(guān)計數(shù)器達(dá)到一個門限來決定)。在上述例子中,I-cache和DFI-cache最好同時查詢。如果所尋找的指令在DFI-cache或I-cache中,則高速緩存命中。當(dāng)一條指令被認(rèn)為是頻繁使用時,DFI將進(jìn)行更新。
盡管本發(fā)明通過相關(guān)計數(shù)器達(dá)到門限描述了“頻繁使用”的指令高速緩存線,然而也可以在本發(fā)明的范圍內(nèi)實(shí)現(xiàn)其它指定指令為“頻繁使用”的方法。
DFI-cache與普通指令高速緩存相比,將頻繁使用的高速緩存線保持更長的時間,使得普通指令高速緩存可使高速緩存線無效,包括似乎為頻繁使用高速緩存線的高速緩存線。當(dāng)這樣的指令再次被請求時,其在DFI-cache中被找到,并且產(chǎn)生命中。因此,通過本發(fā)明的機(jī)制,一些高速緩存命中失誤變?yōu)楦咚倬彺婷?。?dāng)一條高速緩存線僅在DFI-cache中找到時,這條指令可以只保留在DFI-cache中,或可以從DFI-cache中刪除并復(fù)制到主高速緩存中,或可以保持在DFI-cache中并且復(fù)制到主高速緩存中。在優(yōu)選實(shí)施例中,DFI-cache中高速緩存線訪問的頻率也用一個計數(shù)器來測量。例如,可以使用一個算法,該算法跟蹤最近“X”次存取,其中“X”是一個預(yù)定數(shù)。也可以在本發(fā)明的范圍內(nèi)實(shí)現(xiàn)其它跟蹤DFI-cache中高速緩存線訪問頻率的方法。
DFI高速緩存可組織成直接映射或設(shè)置的關(guān)聯(lián)高速緩存,并且最好選擇其尺寸以提供空間和性能之間的所需折衷。
在另一個說明性實(shí)施例中,不僅僅是一個計數(shù)器,例如與I-cache302的頻繁使用的高速緩存線306A相關(guān)的計數(shù)器308A在高速緩存線306A被訪問時遞增,而且與I-cache 302中其它高速緩存線相關(guān)的計數(shù)器被遞減。當(dāng)要替代I-cache 302中的一個高速緩存線時,選擇計數(shù)器數(shù)值最小的高速緩存線進(jìn)行替換。
此處理允許DFI高速緩存300保持那些有較高計數(shù)器值、更頻繁訪問、保持時間更長的高速緩存線。
圖4給出一個流程圖,用來實(shí)現(xiàn)本發(fā)明的一個優(yōu)選實(shí)施例。在此示例性處理中,當(dāng)主高速緩存,如高速緩存302中發(fā)生命中時,計數(shù)器遞增。如果主高速緩存302中一條高速緩存線的計數(shù)器超過一個門限,則這條高速緩存線被認(rèn)為是頻繁使用的,并且此高速緩存線被移入輔助高速緩存中。該例中,通過此方式從主高速緩存移入輔助高速緩存300的數(shù)據(jù)可從輔助高速緩存訪問。
該示例性處理描述了一個主高速緩存和一個輔助高速緩存,分別對應(yīng)于圖3中的高速緩存302和DFI-cache 300。該處理在開始時進(jìn)行檢查以確定存儲器地址是否在主高速緩存中找到(步驟402)。如果找到存儲器地址,則與該高速緩存線相關(guān)的計數(shù)器遞增(步驟404)。如果計數(shù)器值超過門限(步驟406),則檢查輔助高速緩存以確定其是否滿(步驟408)。如果計數(shù)器值沒有超過門限,則簡單地從主高速緩存訪問數(shù)據(jù)(步驟416),并且處理結(jié)束。
如果計數(shù)器數(shù)值確實(shí)超過門限,并且輔助高速緩存滿,則選擇輔助高速緩存中的一項(xiàng)進(jìn)行替換(步驟410)。如果輔助高速緩存不滿,或在選擇輔助高速緩存中的一項(xiàng)進(jìn)行替換之后,將高速緩存線從主高速緩存移入輔助高速緩存中(步驟412)。注意,這包括將高速緩存線從主存儲器中移除。接著,從輔助高速緩存訪問數(shù)據(jù)(步驟414),并且處理結(jié)束。
如果在步驟402中尋找的存儲器地址未在主存儲器中找到,則在輔助高速緩存中檢查該存儲地址(步驟418),如果找到該地址,則處理轉(zhuǎn)移到步驟414,并且從輔助高速緩存中訪問數(shù)據(jù)(步驟414)。如果存儲地址不在輔助高速緩存中,則檢查主高速緩存以確定其是否已滿(步驟420)。如果主高速緩存已滿,則選擇主高速緩存中的一項(xiàng)進(jìn)行替換(步驟422),并且數(shù)據(jù)從計算機(jī)的主存儲器移入主高速緩存(步驟424),并且處理結(jié)束。如果主高速緩存未滿,則數(shù)據(jù)從主存儲器移入主高速緩存(步驟424),并且處理結(jié)束。
圖5給出另一個處理流程,用來實(shí)現(xiàn)本發(fā)明的一個優(yōu)選實(shí)施例。此例中,當(dāng)在高速緩存中找到選定高速緩存線時,遞增針對高速緩存302的選定高速緩存線306A的計數(shù)器308A,同時遞減針對所有其它高速緩存線306B、306C的計數(shù)器308B、308C。當(dāng)需要替換高速緩存中的一條高速緩存線時,具有最低計數(shù)器值的高速緩存線(即最近最少使用的高速緩存線)被替換。
該處理始于在高速緩存中接收一個存儲器請求(步驟502)。此例中,所述高速緩存與圖3中的高速緩存302對應(yīng)。此高速緩存最好配有與高速緩存的每個高速緩存線或存儲器地址相關(guān)的計數(shù)器。如果期望地址在高速緩存中(步驟504),則遞增針對該高速緩存線的相關(guān)計數(shù)器(步驟506)。所有其它計數(shù)器也相應(yīng)遞減(步驟508),并且處理結(jié)束。
如果期望地址不在高速緩存中(步驟504),則選擇高速緩存中計數(shù)器值最低的高速緩存線進(jìn)行替換(步驟512)。被選中的高速緩存線被新的數(shù)據(jù)替代(步驟514),并且處理結(jié)束。
圖6和7給出了本發(fā)明的另一種實(shí)現(xiàn)。在該例子中,硬件計數(shù)器堆棧600示出了與各個高速緩存線,包括“地址8”604和“地址3”602相關(guān)的計數(shù)器。
在本實(shí)施例中,除了有一個對最多訪問的高速緩存線進(jìn)行計數(shù)的硬件計數(shù)器600之外,主高速緩存與圖3中描述的一樣。當(dāng)取出一個地址線時,它被放在位于堆棧底部的硬件計數(shù)器中。當(dāng)該地址再次被存取時,其相關(guān)計數(shù)器遞增,并且該地址線在堆棧中上移,使得堆棧中較高的項(xiàng)被訪問的次數(shù)比較低的項(xiàng)更多。當(dāng)硬件中充滿針對地址線的計數(shù)器時,并且當(dāng)新的地址線被訪問時,選擇堆棧的底部地址線進(jìn)行替換。
圖6給出一個例子,其中在堆棧中地址3 602在地址8 604下面。在這種情況下,地址3 602的計數(shù)器值比地址8 604的計數(shù)器值小。隨著地址3 602的訪問次數(shù)的增加,它的計數(shù)器值也增加,最終會超過地址8 604的計數(shù)器值。圖7給出在地址3 602的計數(shù)器值比地址8 604的計數(shù)器值大時它們的相對位置。在圖7中,堆棧600內(nèi)地址3 602的位置比地址8 604的位置高。此例中,如果一個新的地址被訪問,則如下所述,選擇與一個地址相關(guān)的計數(shù)器來進(jìn)行替換。
本發(fā)明的這種硬件計數(shù)器例如用來確定主存儲器中的哪個地址應(yīng)當(dāng)移入輔助高速緩存中,或確定當(dāng)高速緩存已滿時輔助高速緩存中的哪個高速緩存線將被移除。例如,在一個實(shí)施例中,主高速緩存是I-cache,輔助高速緩存是DFI-cache。I-cache中的每一個地址都在硬件計數(shù)器600中有一個位置。當(dāng)I-cache已滿并且必須加入另一條高速緩存線時,必須從I-cache中除去一個地址線以騰出空間。參考硬件計數(shù)器600確定除去(最好是寫入DFI-cache)I-cache中的哪條地址線。在優(yōu)選實(shí)施例中,把最頻繁訪問的高速緩存線從I-cache中移除,即硬件計數(shù)器堆棧600中出現(xiàn)在最高位置的高速緩存線。在此例中,如果要加入新地址,應(yīng)該將它加到堆棧的底部,而地址1應(yīng)完全從I-cache中移除并放入DFI-cache中。當(dāng)有一項(xiàng)從I-cache中移除時,它也應(yīng)該從計數(shù)器600中移除。
在另一個實(shí)施例中,DFI-cache中的每個高速緩存線都有一個計數(shù)器與之相關(guān)。當(dāng)DFI-cache中的一個高速緩存線命中時,與DFI-cache中其它高速緩存線相關(guān)的計數(shù)器的值被遞減。因此,DFI-cache中更頻繁使用的高速緩存線比不太頻繁使用的高速緩存線具有更高的計數(shù)器值。當(dāng)要替換DFI-cache中的一條高速緩存線時,替換計數(shù)器值最低的高速緩存線。在這種方法中,與I-cache相比,DFI-cache將頻繁使用的高速緩存線保持更長的時間。
當(dāng)從DFI-cache中移除高速緩存線時,可用其它方法確定哪條高速緩存線要被移除。在一些情況下,移除命中最少的高速緩存線可能是不期望的或低效的。眾所周知的頁面置換算法能在本發(fā)明的上下文中實(shí)現(xiàn),如工作集置換算法。該算法利用一個時域移動窗,并且在指定時間沒有被訪問的頁面或高速緩存線被移出工作集或高速緩存。
值得注意的是,本發(fā)明是在全功能數(shù)據(jù)處理系統(tǒng)的環(huán)境中進(jìn)行描述的,本領(lǐng)域普通技術(shù)人員將會理解,本發(fā)明的處理能以計算機(jī)可讀指令介質(zhì)的形式和各種形式進(jìn)行分布,并且不管實(shí)際用來執(zhí)行分布的信號承載介質(zhì)的具體類型如何,本發(fā)明一樣適用。計算機(jī)可讀介質(zhì)的例子包括可記錄型介質(zhì),如軟盤、硬盤驅(qū)動器、RAM、CD-ROM、DVD-ROM;和傳輸型介質(zhì),如數(shù)字和模擬通信鏈路、使用例如射頻和光波傳輸?shù)膫鬏斝问降挠芯€或無線通信鏈路。計算機(jī)可讀介質(zhì)可采取編碼的形式,這種編碼形式在具體數(shù)據(jù)處理系統(tǒng)中被解碼以便實(shí)際使用。
這里給出本發(fā)明的描述是為了對其進(jìn)行說明和闡釋,不是為了窮舉或?qū)⒈景l(fā)明局限于所公布的形式。對本領(lǐng)域普通技術(shù)人員來說許多修改和變化是顯而易見的。選擇和描述實(shí)施例不僅是為了更好地解釋本發(fā)明的原理及其實(shí)際應(yīng)用,也是為了使本領(lǐng)域普通技術(shù)人員能夠針對具有適合所考慮的特定使用的各種修改的各種實(shí)施例理解本發(fā)明。
權(quán)利要求
1.一種用于計算機(jī)系統(tǒng)的高速緩存系統(tǒng),包括第一高速緩存,用于存儲多個第一指令;和第二高速緩存,用于存儲多個第二指令,其中,多個第一指令中的每個指令均具有第一相關(guān)計數(shù)器,并且當(dāng)多個第一指令中的第一個指令被訪問時,第一相關(guān)計數(shù)器遞增;并且當(dāng)?shù)谝幌嚓P(guān)計數(shù)器達(dá)到一個門限時,多個第一指令中的該第一個指令被復(fù)制到第二高速緩存中。
2.根據(jù)權(quán)利要求1的高速緩存系統(tǒng),其中多個第二指令中的每個指令均具有相關(guān)計數(shù)器,并且當(dāng)多個第二指令中一個指令被訪問時,多個第二指令的所有其它計數(shù)器遞減。
3.根據(jù)權(quán)利要求1的高速緩存系統(tǒng),其中從第二高速緩存中訪問多個第一指令中的該第一個指令。
4.根據(jù)權(quán)利要求1的高速緩存系統(tǒng),其中相關(guān)計數(shù)器包括硬件計數(shù)器,其中當(dāng)一個指令被獲取時,該指令被放入硬件計數(shù)器堆棧的底部的硬件計數(shù)器中;當(dāng)該指令再次被訪問時,該指令在堆棧中上移;并且當(dāng)堆棧已滿并且需要在堆棧中存儲新的指令時,該新指令替換硬件計數(shù)器中的最底部地址。
5.根據(jù)權(quán)利要求1的高速緩存系統(tǒng),其中第一高速緩存是指令高速緩存,第二高速緩存是全關(guān)聯(lián)的,并且遵循最近最少使用策略。
6.一種計算機(jī)系統(tǒng)中管理高速緩存的方法,包括步驟在第一高速緩存中檢查第一指令,其中第一高速緩存中的每個指令均具有相關(guān)計數(shù)器;如果在第一高速緩存中找到該第一指令,則遞增第一相關(guān)計數(shù)器;將第一相關(guān)計數(shù)器與一個門限相比較;如果該第一相關(guān)計數(shù)器超出所述門限,則將該第一指令從第一高速緩存移入第二高速緩存。
7.根據(jù)權(quán)利要求6的方法,還包括步驟從第二高速緩存中訪問該第一指令。
8.根據(jù)權(quán)利要求6的方法,其中第二高速緩存的每個指令均具有相關(guān)計數(shù)器,并且當(dāng)?shù)诙咚倬彺娴囊粋€指令被訪問時,第二高速緩存的所有其它計數(shù)器遞減。
9.根據(jù)權(quán)利要求6的方法,其中相關(guān)計數(shù)器包括硬件計數(shù)器,其中當(dāng)一個指令被獲取時,該指令被放入硬件計數(shù)器堆棧的底部的硬件計數(shù)器中;當(dāng)該指令再次被訪問時,該指令在堆棧中上移;并且當(dāng)堆棧已滿并且需要在堆棧中存儲新的指令時,該新指令替換硬件計數(shù)器中的最底部地址。
10.根據(jù)權(quán)利要求6的方法,其中第一高速緩存是指令高速緩存,第二高速緩存是全關(guān)聯(lián)的,并且遵循最近最少使用策略。
11.一種計算機(jī)可讀介質(zhì)中的計算機(jī)程序產(chǎn)品,包括第一指令,用于在第一高速緩存中檢查第一線數(shù)據(jù),其中第一高速緩存中的每線數(shù)據(jù)均具有相關(guān)計數(shù)器;第二指令,用于當(dāng)在第一高速緩存中找到該第一線數(shù)據(jù)的情況下,遞增第一相關(guān)計數(shù)器;第三指令,用于將第一相關(guān)計數(shù)器的值與一個門限相比較;和第四指令,用于在該第一相關(guān)計數(shù)器超出所述門限的情況下,將該第一線數(shù)據(jù)從第一高速緩存移入第二高速緩存。
12.根據(jù)權(quán)利要求11的計算機(jī)程序產(chǎn)品,還包括步驟從第二高速緩存中訪問該第一指令。
13.根據(jù)權(quán)利要求11的計算機(jī)程序產(chǎn)品,其中第二高速緩存的每個指令均具有相關(guān)計數(shù)器,并且當(dāng)?shù)诙咚倬彺娴囊粋€指令被訪問時,第二高速緩存的所有其它計數(shù)器遞減。
14.根據(jù)權(quán)利要求11的計算機(jī)程序產(chǎn)品,其中相關(guān)計數(shù)器包括硬件計數(shù)器,其中當(dāng)一個指令被獲取時,該指令被放入硬件計數(shù)器堆棧的底部的硬件計數(shù)器中;當(dāng)該指令再次被訪問時,該指令在堆棧中上移;并且當(dāng)堆棧已滿并且需要在堆棧中存儲新的指令時,該新指令替換硬件計數(shù)器中的最底部地址。
15.根據(jù)權(quán)利要求11的計算機(jī)程序產(chǎn)品,其中第一高速緩存是指令高速緩存,第二高速緩存是全關(guān)聯(lián)的,并且遵循最近最少使用策略。
全文摘要
用于計算機(jī)的高速緩存系統(tǒng)。在優(yōu)選實(shí)施例中,DFI-cache(動態(tài)頻繁指令高速緩存)與主高速緩存同時查詢,并且請求的地址在任一高速緩存中,則產(chǎn)生命中。DFI-cache保留頻繁使用指令的時間長于主高速緩存,使得主高速緩存能夠在仍然得到下次訪問該高速緩存線時的高速緩存命中收益的同時,使高速緩存線無效。
文檔編號G06F12/12GK1617095SQ20041009225
公開日2005年5月18日 申請日期2004年11月5日 優(yōu)先權(quán)日2003年11月13日
發(fā)明者萊恩·托馬斯·霍勒維, 納迪姆·馬利克 申請人:國際商業(yè)機(jī)器公司