專利名稱:不同高速緩存級上具有關(guān)聯(lián)集重疊同余組的多級高速緩存的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字?jǐn)?shù)據(jù)處理硬件,特別涉及數(shù)字?jǐn)?shù)據(jù)處理設(shè)備的處理單元的高速緩沖存儲器及支持硬件的設(shè)計和操作。
背景技術(shù):
在20世紀(jì)后期,出現(xiàn)了稱為信息革命的現(xiàn)象。雖然信息革命是一種歷史的發(fā)展,其所波及的范圍比任何事件或任何機(jī)器都廣,但是沒有任何設(shè)備能比電子數(shù)字計算機(jī)更能代表信息革命。計算機(jī)系統(tǒng)的發(fā)展的確是一場革命。每年,計算機(jī)系統(tǒng)都迅速地發(fā)展,存儲更多的數(shù)據(jù),并為它們的用戶提供更多的應(yīng)用程序。
現(xiàn)代計算機(jī)系統(tǒng)一般包括中央處理單元(CPU)和存儲、檢索及傳送信息所必要的支持硬件,例如通信總線和存儲器。它還包括與外界通信所必要的硬件,例如輸入/輸出控制器或存儲器控制器,以及附加于其上的設(shè)備,例如鍵盤、顯示器、磁帶驅(qū)動器、磁盤驅(qū)動器、耦合到網(wǎng)絡(luò)的通信線路等。CPU是系統(tǒng)的心臟。它執(zhí)行包括計算機(jī)程序的指令,并且控制其它系統(tǒng)組件的操作。
從計算機(jī)硬件的立場來看,大多數(shù)系統(tǒng)以基本相同的方式操作。處理器能夠執(zhí)行一組有限的非常簡單的操作,例如算術(shù)、邏輯比較和將數(shù)據(jù)從一個位置移動到另一個位置。但是,每個操作都執(zhí)行得非常快??刂朴嬎銠C(jī)執(zhí)行大量這些簡單操作的程序給人們一種幻覺,仿佛計算機(jī)在做著一些復(fù)雜的事情。用戶所感知到的計算機(jī)系統(tǒng)的新的或改進(jìn)的性能,是通過使計算機(jī)實(shí)質(zhì)上執(zhí)行相同的一組非常簡單的操作、但卻執(zhí)行得更快來實(shí)現(xiàn)的。因此,對計算機(jī)系統(tǒng)的繼續(xù)改進(jìn),需要使這些系統(tǒng)運(yùn)行得比以前更快。
計算機(jī)系統(tǒng)的總速度(也被稱為“吞吐量”)可用每單位時間執(zhí)行的操作的數(shù)量來大致測量。在概念上,對系統(tǒng)速度的所有可能改進(jìn)中最簡單的,就是增加各種組件的時鐘速度,特別是處理器的時鐘速度。例如,如果所有的事情都以兩倍速度運(yùn)行,但都以完全相同的方式工作,則系統(tǒng)將以一半的時間執(zhí)行給定的任務(wù)。早期的計算機(jī)處理器由很多離散的組件構(gòu)成,通過縮小并且組合組件可以得到顯著的時鐘速度改進(jìn),并且最終將整個處理器封裝成單個芯片上的集成電路,所以通過進(jìn)一步的尺寸縮小和其它改進(jìn)來獲得增加的時鐘速度始終是一個目標(biāo)。除了提高時鐘速度之外,通過增加每時鐘周期執(zhí)行的操作的平均數(shù)量,有可能增加單個CPU的吞吐量。
典型的計算機(jī)系統(tǒng)能夠存儲大量數(shù)據(jù),并且可以請求處理器以使用數(shù)據(jù)的任何部分。一般用于存儲海量數(shù)據(jù)的設(shè)備(例如旋轉(zhuǎn)硬磁盤驅(qū)動器存儲單元)需要較長的延遲時間來訪問其上存儲的數(shù)據(jù)。如果處理器在它每次執(zhí)行一個操作時,都要直接從這種大容量存儲設(shè)備中訪問數(shù)據(jù),則它將會花費(fèi)幾乎全部的時間來等待存儲設(shè)備返回數(shù)據(jù),而其吞吐量將會非常低。因此,計算機(jī)系統(tǒng)將數(shù)據(jù)存儲在存儲器或存儲設(shè)備的分級體系中,每個后繼的級具有更快的速度,但是存儲更少的數(shù)據(jù)。大容量存儲單元處于最低級,它能夠在相對慢的存儲區(qū)中存儲所有數(shù)據(jù)。沿分級體系向上是主存儲器,它通常是半導(dǎo)體存儲器。主存儲器的數(shù)據(jù)容量比存儲單元的要小得多,但訪問速度要快得多。再向上是高速緩存,它可以是該分級體系中的一級或多級(級別1是最高級)。高速緩存也是半導(dǎo)體存儲器,但是比主存儲器快,并且同樣具有較小的數(shù)據(jù)容量。人們甚至還可以考慮將外部存儲的數(shù)據(jù),例如可通過網(wǎng)絡(luò)連接訪問的數(shù)據(jù),也作為該分級體系的一個低于計算機(jī)系統(tǒng)自身的大容量存儲單元的級別,因?yàn)橥ㄟ^網(wǎng)絡(luò)連接(例如因特網(wǎng))潛在可用的數(shù)據(jù)量更大,而訪問時間更長。
當(dāng)處理器產(chǎn)生存儲器基準(zhǔn)地址時,它首先在高速緩存中尋找所需的數(shù)據(jù)(這可能需要搜索多個高速緩存級)。如果數(shù)據(jù)不在那里(稱為“高速緩存未中(cachemiss)”),處理器就從主存儲器獲取數(shù)據(jù),或者如果有必要,從大容量存儲單元獲取數(shù)據(jù)。存儲器訪問需要相對大量的處理器周期,而在這期間處理器通常是空閑的。理想地,在與處理器最近的高速緩存級中存儲處理器當(dāng)前所需要的數(shù)據(jù),以便當(dāng)處理器產(chǎn)生存儲器引用時,不必等待較長的延遲時間來完成數(shù)據(jù)訪問。然而,由于任何高速緩存級的容量都僅僅是主存儲器容量的一小部分,而主存儲器自身的容量又僅僅是大容量存儲單元容量的一小部分,因此不可能將所有數(shù)據(jù)簡單地裝載到高速緩存中。必須利用一些技術(shù)來選擇將要被存儲到高速緩存中的數(shù)據(jù),以便當(dāng)處理器需要特定數(shù)據(jù)項(xiàng)時,該數(shù)據(jù)項(xiàng)很可能在那里。
高速緩存一般被劃分為稱為行(line)的多個數(shù)據(jù)單元,一行是能夠被獨(dú)立地裝載到高速緩存中或從高速緩存中清除的最小數(shù)據(jù)單元。為了支持任何類型的高速緩存技術(shù),通常使用高速緩存行的關(guān)聯(lián)集(associative set)來對高速緩存尋址。一個關(guān)聯(lián)集是一個高速緩存行的集合,所有這些高速緩存行共享一個公共高速緩存索引號。高速緩存索引號通常是從引用的地址的高位得出的,盡管其還可能包含其它位。由于高速緩存比主存儲器小得多,一個關(guān)聯(lián)集僅包含與該高速緩存索引號相對應(yīng)的一小部分主存儲器地址。由于每個關(guān)聯(lián)集通常包含多個高速緩存行,可以根據(jù)各種技術(shù),可從主存儲器中有選擇地選出關(guān)聯(lián)集的內(nèi)容。
通常,當(dāng)發(fā)生高速緩存未中時,數(shù)據(jù)被裝載到一高級的高速緩存中。選擇將要存儲在高速緩存中的數(shù)據(jù)的傳統(tǒng)技術(shù)還包含各種預(yù)取技術(shù),這類技術(shù)試圖在實(shí)際存儲器引用高速緩存行之前,預(yù)測所需要的該特定高速緩存行中的數(shù)據(jù),并且相應(yīng)地將該數(shù)據(jù)裝載到高速緩存中以待將來的需要。由于高速緩存的容量有限,當(dāng)發(fā)生高速緩存未中時或者通過預(yù)取來裝載數(shù)據(jù),必然意味著高速緩存中當(dāng)前的一些數(shù)據(jù)將被從高速緩存中清除或者拋棄。此外,存在用于確定在這種情況下將拋棄哪些數(shù)據(jù)的各種傳統(tǒng)技術(shù)。
盡管用于選擇高速緩存內(nèi)容的傳統(tǒng)技術(shù)已經(jīng)獲得了有限的成就,但是人們已經(jīng)注意到,在很多環(huán)境下,當(dāng)發(fā)生高速緩存未中時處理器仍然花費(fèi)大塊時間處于空閑。解決這類問題的典型途徑是增加高速緩存的大小和/或結(jié)合性,這兩種途徑都涉及到重要的附加硬件。所以,需要對設(shè)計和運(yùn)行高速緩存的改進(jìn)技術(shù)。
發(fā)明內(nèi)容
計算機(jī)系統(tǒng)包含主存儲器、至少一個處理器和至少具有兩級的高速緩沖存儲器。較高級的高速緩存包含多個關(guān)聯(lián)集(associativity set),每個關(guān)聯(lián)集都包含在相應(yīng)的同余組(congruence group)中,每個同余組都具有多個該較高級高速緩存的關(guān)聯(lián)集。較低級的高速緩存類似地也包含多個關(guān)聯(lián)集,每個關(guān)聯(lián)集都包含在相應(yīng)的同余組中,每個同余組都具有多個該較低級高速緩存的關(guān)聯(lián)集。較高級高速緩存中關(guān)聯(lián)集的高速緩存行地址,分布在較低級高速緩存中相同同余組內(nèi)的多個關(guān)聯(lián)集中。
在優(yōu)選實(shí)施例的一個方面,較低級高速緩存是較高級高速緩存的受害高速緩存(victim cache),即當(dāng)數(shù)據(jù)被從較高級高速緩存中拋棄時,就被裝載到較低級的高速緩存中。數(shù)據(jù)在較高和較低高速緩存中最好不重復(fù)。當(dāng)發(fā)生高速緩存未中時,從較低級高速緩存或者從其它源將高速緩存行裝載到較高級高速緩存中,從而越過較低級高速緩存。當(dāng)從較高級高速緩存中選擇出要拋棄的高速緩存行時,它被自動裝載到較低級的高速緩存中,從而使在較低級高速緩存中選擇出要拋棄的行。
在優(yōu)選實(shí)施例中,同余組包含較高級高速緩存中的一對關(guān)聯(lián)集和較低級高速緩存中的三個關(guān)聯(lián)集,它們共享特定的索引地址位。地址散列函數(shù),例如模3,將較高級關(guān)聯(lián)集中的一些非共享地址位變換成用于選擇較低級的關(guān)聯(lián)集的索引。
盡管這里使用了術(shù)語“較高級高速緩存”和“較低級高速緩存”,但是它們只用于指定相對的高速緩存級關(guān)系,而不表示系統(tǒng)只包含兩級高速緩存。正如這里所使用的那樣,“較高級”指距離處理器核心較近的級。在優(yōu)選實(shí)施例中,在“較高級高速緩存”之上至少存在一個級的高速緩存,其根據(jù)各種傳統(tǒng)原理操作。
盡管通常假設(shè)用于在高速緩存中為關(guān)聯(lián)集建立索引的地址散列技術(shù),會產(chǎn)生對關(guān)聯(lián)集的存儲器引用的隨機(jī)分布,但申請人確定對于數(shù)據(jù)在其中具有較長的高速緩存生命周期的第二、第三或更低級的高速緩存來說,情況常常并非如此。通常,某些關(guān)聯(lián)集會變得比其它的關(guān)聯(lián)集明顯更“熱”。根據(jù)本發(fā)明的優(yōu)選實(shí)施例,通過在較高級的多個關(guān)聯(lián)集中有效地共享下一個最低高速緩存級中的關(guān)聯(lián)集,有可能根據(jù)較高級高速緩存中的“熱”關(guān)聯(lián)集,來增加要拋棄的較低級高速緩存的可用關(guān)聯(lián)性。結(jié)果,提高了由較低級高速緩存來滿足較高級高速緩存中高速緩存未中的機(jī)會,從而降低了處理器在高速緩存未中時空閑等待的平均時間。
參照附圖能夠更好地理解本發(fā)明的結(jié)構(gòu)和操作的細(xì)節(jié),其中相同的附圖標(biāo)記表示相同的部件,其中圖1是根據(jù)本發(fā)明優(yōu)選實(shí)施例的計算機(jī)系統(tǒng)的主要硬件部件的高層方框圖,該計算機(jī)系統(tǒng)利用不同高速緩存級中的重疊關(guān)聯(lián)集的同余組;圖2是優(yōu)選實(shí)施例的計算機(jī)系統(tǒng)中CPU核心的主要部件的高層方框圖;圖3更詳細(xì)地示出了根據(jù)優(yōu)選實(shí)施例的用于存儲和尋址數(shù)據(jù)的各種高速緩存及相關(guān)結(jié)構(gòu)的層次結(jié)構(gòu);圖4是根據(jù)優(yōu)選實(shí)施例的在上下高速緩存級中關(guān)聯(lián)集的同余組的概念表示;
圖5示出根據(jù)優(yōu)選實(shí)施例的包含關(guān)聯(lián)訪問機(jī)制的L2高速緩存的結(jié)構(gòu);和圖6示出根據(jù)優(yōu)選實(shí)施例的包含關(guān)聯(lián)訪問機(jī)制的L3高速緩存的結(jié)構(gòu)。
具體實(shí)施例方式
參照附圖,其中在附圖中相同的標(biāo)號表示相同的部件。圖1是根據(jù)本發(fā)明優(yōu)選實(shí)施例的計算機(jī)系統(tǒng)100的主要硬件部件的高層表示,該計算機(jī)系統(tǒng)利用不同高速緩存級中的重疊關(guān)聯(lián)集的同余組。計算機(jī)系統(tǒng)100的主要組成部分包含一個或多個中央處理單元(CPU)101A-101D、主存儲器102、高速緩沖存儲器106、終端接口111、存儲器接口112、I/O設(shè)備接口113和通信/網(wǎng)絡(luò)接口114,所有這些部件經(jīng)由總線103、104及總線接口105耦合以便進(jìn)行部件間通信。
系統(tǒng)100包含一個或多個通用可編程中央處理單元(CPU)101A-101D,這里統(tǒng)稱為特征101。在優(yōu)選實(shí)施例中,系統(tǒng)100通常作為較大系統(tǒng)包含多個處理器;然而,系統(tǒng)100也可以是單CPU系統(tǒng)。每個處理器101執(zhí)行存儲在存儲器102中的指令。指令和數(shù)據(jù)被從主存儲器102裝載到高速緩沖存儲器106中以用于處理。主存儲器102是用于存儲數(shù)據(jù)和程序的隨機(jī)存取半導(dǎo)體存儲器。盡管在圖1中概念性地將主存儲器102和高速緩存106表示成單獨(dú)的實(shí)體,但是可以理解實(shí)際上它們更加復(fù)雜,尤其是高速緩沖存儲器存在于多個不同的級上,正如本文所詳細(xì)描述的。
存儲器總線103為在CPU101與高速緩存106、主存儲器102和I/O總線接口單元105之間傳輸數(shù)據(jù)提供數(shù)據(jù)通信路徑。I/O總線接口105還耦合到系統(tǒng)I/O總線104,用于向和從各種I/O單元傳送數(shù)據(jù)。I/O總線接口105通過系統(tǒng)I/O總線104與多個I/O接口單元111-114通信,這些I/O接口單元也被稱為I/O處理器(IOP)或I/O適配器(IOA)。系統(tǒng)I/O總線可以是例如工業(yè)標(biāo)準(zhǔn)PCI總線或者任何其它適當(dāng)?shù)目偩€技術(shù)。I/O接口單元支持與各種存儲器和I/O設(shè)備的通信。例如,終端接口單元111支持附加一個或多個用戶終端121-124。存儲器接口單元112支持附加一個或多個直接存取存儲設(shè)備(DASD)125-127(它們通常是旋轉(zhuǎn)磁盤驅(qū)動存儲設(shè)備,盡管它們還可替換地是其它設(shè)備,包括配置成對主機(jī)表現(xiàn)為單個大容量存儲設(shè)備的磁盤驅(qū)動器陣列)。I/O和其它設(shè)備接口113提供對于任何各種其它輸入/輸出設(shè)備或其它類型設(shè)備的接口。圖1的示例性實(shí)施例中示出了兩個這種設(shè)備,即打印機(jī)128和傳真機(jī)129,應(yīng)該理解還可有很多這種其它設(shè)備,它們可以是不同類型的。網(wǎng)絡(luò)接口114提供從系統(tǒng)100到其它數(shù)字設(shè)備及計算機(jī)系統(tǒng)的一個或多個通信路徑;這種路徑可以包括例如因特網(wǎng)、局域網(wǎng)或其它網(wǎng)絡(luò)等的一個或多個網(wǎng)絡(luò)130,或者還可以包括遠(yuǎn)程設(shè)備通信線、無線連接等等。
應(yīng)該理解,圖1用于在高層次上描述系統(tǒng)100的主要代表性部件,各個部件可以具有比圖1所示的部件更大的復(fù)雜性,除圖1所示的那些部件之外的部件可以是現(xiàn)有的,而這樣的部件的數(shù)量、類型及配置可以不同。本文揭示了這種附加復(fù)雜性或附加變化的若干示例,應(yīng)該理解這些僅是通過示例進(jìn)行說明,而不限于僅僅這樣的變化。
盡管在圖1中示出的主存儲器102為單獨(dú)的單片電路實(shí)體,但存儲器還可以分布到并與不同的CPU或CPU組相關(guān)聯(lián),如眾所周知的各種所謂的非統(tǒng)一內(nèi)存訪問(NUMA)計算機(jī)體系結(jié)構(gòu)中的任何一種。盡管在圖1中存儲器總線103被表示得相對簡單的單總線結(jié)構(gòu),用于在高速緩存106、主存儲器102和I/O總線接口105之間提供直接通信路徑,但實(shí)際上存儲器總線103可以包括多種不同的總線或通信路徑,它們可以用各種形式來安排,例如在分層結(jié)構(gòu)、星形或萬維網(wǎng)結(jié)構(gòu)中的點(diǎn)對點(diǎn)鏈路、多級總線、并行和冗余路徑等。此外,雖然I/O總線接口105和I/O總線104被分別表示為單個單元,系統(tǒng)100實(shí)際上還可以包含多個I/O總線接口單元105和/或多個I/O總線104。雖然示出了多個I/O接口單元,它們將系統(tǒng)I/O總線104與到各種I/O設(shè)備的各種通信路徑分離開來,但是還可以替代地將一些或全部I/O設(shè)備直接連接到一個或多個系統(tǒng)I/O總線。
圖1所示的計算機(jī)系統(tǒng)100具有多個附加的終端121-124,例如可以是典型的多用戶“大型機(jī)”計算機(jī)系統(tǒng)。典型地,在這種情況下,附加設(shè)備的實(shí)際數(shù)量大于圖1所示設(shè)備的數(shù)量,而本發(fā)明不限于任何特定規(guī)模的系統(tǒng)。可替換地,計算機(jī)系統(tǒng)100還可以是單用戶系統(tǒng),這類系統(tǒng)典型地只包含一個單用戶顯示器和鍵盤輸入,或者可以是服務(wù)器或類似設(shè)備,這類設(shè)備具有較少的或沒有直接的用戶接口,而是接收來自其它計算機(jī)系統(tǒng)(客戶機(jī))的請求。
雖然已經(jīng)在高層次上描述并示出了各種系統(tǒng)部件,應(yīng)該理解典型的計算機(jī)系統(tǒng)包含很多沒有示出的其它部件,而這些部件對于理解本發(fā)明來說無關(guān)緊要。
圖2是根據(jù)優(yōu)選實(shí)施例的具有特定的關(guān)聯(lián)高速緩存結(jié)構(gòu)的CPU101的主要部件的高層方框圖。其比圖1更詳細(xì)地示出了CPU101。在本實(shí)施例中,兩個CPU與特定的高速緩存結(jié)構(gòu)一起被封裝在單個半導(dǎo)體芯片中,因此CPU101有時也被稱為“處理器核心”或“CPU核心”,以便將其與包含一對CPU的芯片區(qū)分開來。CPU101包含指令單元部分201、執(zhí)行單元部分201、級1指令高速緩存(L1 I-高速緩存)205、級1數(shù)據(jù)高速緩存(L1 D-高速緩存)206和地址翻譯硬件207。圖2所示的級2高速緩存(L2高速緩存)208實(shí)際上由單個芯片內(nèi)的兩個CPU核心共享,并且因此不被認(rèn)為是CPU101的一部分。通常,指令單元201從L1 I-高速緩存205獲取指令,解碼指令以確定要執(zhí)行的操作,并且決定分支條件以控制程序流。執(zhí)行單元211對寄存器中的數(shù)據(jù)執(zhí)行算術(shù)和邏輯運(yùn)算,并且裝載或存儲來自L1 D-高速緩存的數(shù)據(jù)。L2高速緩存208是級2高速緩存,通常大于L1 I-高速緩存或L1 D-高速緩存,為L1 I-高速緩存205和L1 D-高速緩存206提供數(shù)據(jù)。L2高速緩存208通過外部接口從較低級高速緩存或主存儲器獲取數(shù)據(jù)。
指令單元201包括分支單元211、指令解碼/調(diào)度單元203以及指令寄存器和緩沖器204。在執(zhí)行之前,來自L1 I-高速緩存205的指令被裝載到緩沖器204。取決于CPU設(shè)計,可以有多個緩沖器(例如一個用于指令的串行序列,其它用于分支位置),每個緩沖器中可以包含多條指令。解碼/調(diào)度單元203從緩沖器之一中接收將要執(zhí)行的當(dāng)前指令,并且解碼該指令以確定要執(zhí)行的操作或分支條件。分支單元202通過評估分支條件來控制程序流,并由L1 I-高速緩存205再裝滿緩沖器。
執(zhí)行單元211包括一組用于存儲數(shù)據(jù)的通用寄存器212和整數(shù)算術(shù)邏輯單元(ALU)213,整數(shù)ALU 213響應(yīng)于由指令單元201解碼的指令而對通用寄存器212中的數(shù)據(jù)執(zhí)行算術(shù)和邏輯運(yùn)算。執(zhí)行單元還包括復(fù)雜運(yùn)算子單元214,用于執(zhí)行數(shù)學(xué)密集的運(yùn)算,例如浮點(diǎn)運(yùn)算。子單元214可以包含其自身的專用寄存器(未示出)。整數(shù)ALU 213和復(fù)雜運(yùn)算子單元214通常被實(shí)施為多級流水線。除圖2所示的組件之外,執(zhí)行單元還可以包含附加的專用寄存器和計數(shù)器、用于從高速緩存或存儲器獲取數(shù)據(jù)或者將數(shù)據(jù)存儲到高速緩存或存儲器中的裝載及存儲硬件、控制硬件等。特別是,除整數(shù)ALU 213和復(fù)雜運(yùn)算子單元214之外,執(zhí)行單元211可以包含流水線(未示出)。附加流水線,例如取指令及解碼流水線,可以存在于處理器101之內(nèi)。
地址翻譯硬件207將由指令單元201或執(zhí)行單元211產(chǎn)生的有效地址翻譯成存儲器中相應(yīng)的實(shí)際地址。在優(yōu)選實(shí)施例中,處理器產(chǎn)生與每個執(zhí)行過程相對應(yīng)的有效地址空間中的“有效地址”。有效地址被翻譯成在更大的通用虛擬地址空間中的“虛擬地址”,這是由所有過程共享的一個虛擬地址空間。虛擬地址再被翻譯成“實(shí)際地址”,該地址與數(shù)據(jù)所位于的實(shí)際存儲器位置相對應(yīng)。然而,應(yīng)該理解,各種計算機(jī)體系結(jié)構(gòu)采用不同的尋址結(jié)構(gòu),而本發(fā)明不限于任何特定方式的尋址。
最好使用實(shí)際地址對高速緩存尋址,因此由處理器產(chǎn)生的有效地址首先被地址翻譯硬件207翻譯成實(shí)際地址,以便訪問高速緩存中的數(shù)據(jù)。在圖2中,地址翻譯硬件207被示為單個的概念實(shí)體,并且可以包含任何現(xiàn)有技術(shù)中已知的各種翻譯機(jī)制,例如翻譯后備緩沖器、段后備緩沖器、有效到實(shí)際地址翻譯表或其它機(jī)制,還包含在任何這些結(jié)構(gòu)中與訪問和翻譯數(shù)據(jù)相關(guān)的硬件??商鎿Q地,正如在一些計算機(jī)系統(tǒng)設(shè)計中已知的,還可以使用由處理器產(chǎn)生的有效地址,訪問一些或所有高速緩存級。
L1 I-高速緩存205和L1 D-高速緩存206是向指令及執(zhí)行單元提供數(shù)據(jù)的分立指令和數(shù)據(jù)高速緩存。L2高速緩存是包含指令和非指令數(shù)據(jù)兩者的無區(qū)分的高速緩存。通常,由指令或執(zhí)行單元從L1高速緩存讀取數(shù)據(jù)或?qū)?shù)據(jù)存儲到L1高速緩存中,并且如果在L1高速緩存中沒有可用數(shù)據(jù),則將數(shù)據(jù)從L2高速緩存208中裝載到L1高速緩存中,L2高速緩存208又從外部位置獲取該數(shù)據(jù),并且接著將其從L1高速緩存?zhèn)魉偷较鄳?yīng)的單元。依據(jù)處理器的設(shè)計,可以越過L1高速緩存,而將數(shù)據(jù)從L2高速緩存208裝載到執(zhí)行或指令寄存器中。
在優(yōu)選實(shí)施例中,CPU101支持多線程(最好是兩個)的并發(fā)執(zhí)行。對于每個線程,都存在一組單獨(dú)的通用寄存器212(未示出)以及其它特定結(jié)構(gòu)。然而,所支持的線程的數(shù)量可以不同,并且本發(fā)明也可以用于僅支持執(zhí)行一個單線程的處理器中。
雖然已經(jīng)在高層次上描述和示出了各種CPU部件,應(yīng)該理解,優(yōu)選實(shí)施例的CPU包含很多未示出的其它部件,這些部件對于理解本發(fā)明來說不是必要的。例如,在典型設(shè)計中將需要各種附加的專用寄存器。而且,應(yīng)該理解,圖2的CPU僅僅是CPU體系結(jié)構(gòu)的一個示例,并且在CPU101內(nèi)部件的數(shù)量、類型及安排上存在很多變化,除所示部件之外還存在未示出的部件,而且并不是所有示出的部件都要出現(xiàn)在CPU設(shè)計中。例如,緩沖器和高速緩存的數(shù)量和配置可以改變;執(zhí)行單元流水線的數(shù)量和功能可以改變;可以用不同的陣列和組來配置寄存器;專用浮點(diǎn)硬件可有可無,等等。而且,CPU101可以具有簡單的或者復(fù)雜的指令集,該指令集隨著每個處理器周期支持對單操作或多操作的調(diào)度。
在圖2中,L1高速緩存205和206被示為CPU101的一部分,因?yàn)槊總€CPU都具有其各自的L1高速緩存。在結(jié)構(gòu)上,高速緩沖存儲器可以被看作存儲器102的一部分,或者被看作為CPU的一部分,或者可以被看作完全獨(dú)立的實(shí)體。圖2的表示是典型的,并且不用于將本發(fā)明限制在任何特定的物理高速緩存的實(shí)現(xiàn)。處理器芯片或芯片組可以包含比圖2所示更多的或更少的高速緩存。
圖3更詳細(xì)地說明了根據(jù)優(yōu)選實(shí)施例的用于存儲和尋址數(shù)據(jù)的各種高速緩存及相關(guān)結(jié)構(gòu)的層次結(jié)構(gòu)。在本實(shí)施例中,除主存儲器之外,有三級高速緩存。處理器101被封裝在集成電路處理器芯片301A、301B(這里統(tǒng)稱為特征301)上,每個處理器芯片包含一對處理器101(處理器核心)、由芯片上的兩個處理器共享的單個L2高速緩存208A,208B(這里統(tǒng)稱為特征208)、由芯片上的兩個處理器共享的單個L3高速緩存目錄302A、302B(這里統(tǒng)稱為特征302),以及外部數(shù)據(jù)接口304A、304B(這里統(tǒng)稱為特征304)。與每個L3高速緩存目錄302相關(guān)的L3高速緩存303A、303B(這里統(tǒng)稱為特征303)與處理器芯片分離,位于物理上距離處理器比主存儲器102更近的位置。例如,L3高速緩存303可以被封裝在單獨(dú)的集成電路芯片上、與相應(yīng)的處理器芯片301一起安裝在公共的印制電路卡上。外部數(shù)據(jù)接口304處理數(shù)據(jù)越過處理器芯片邊界經(jīng)由存儲器總線103的傳輸,它可以位于在處理器芯片與主存儲器102之間,或者位于處理器芯片與L3高速緩存303之間,或者是一些其它結(jié)構(gòu)。
級3高速緩存充當(dāng)級2高速緩存的受害高速緩存。來自主存儲器的數(shù)據(jù)越過L3高速緩存303,首先被裝載到L2高速緩存208中。當(dāng)數(shù)據(jù)被從L2高速緩存中拋棄時,它被裝載到L3中,它可以從L3再裝載到L2中,或者最終被拋棄到主存儲器中。數(shù)據(jù)被從L2高速緩存中裝載到L1 I-高速緩存205或L1 D-高速緩存206。依據(jù)設(shè)計,當(dāng)裝載數(shù)據(jù)時還有可能越過其它的高速緩存級,例如將數(shù)據(jù)從L3高速緩存直接裝載到L1高速緩存中。
最好是,在L2和L3高速緩存中數(shù)據(jù)不重復(fù)。即,在任何給定的時間,數(shù)據(jù)的高速緩存行可以在兩個高速緩存的任何一個中,但不是在兩個中。
在優(yōu)選實(shí)施例中,在L2高速緩存和L3高速緩存之間存在一一對應(yīng)關(guān)系,盡管這不是必需的,而且對于每個L3高速緩存可以存在多個L2高速緩存。最好是,L2/L3高速緩存對由單個芯片301上的一對處理器(處理器核心)共享。
高速緩存在更高級(距離處理器更近)上,變得更快,并且存儲更少的數(shù)據(jù)。在本文所述的示例性實(shí)施例中,在大型計算機(jī)系統(tǒng)的典型情況下,每個L2高速緩存208具有128字節(jié)的高速緩存行大小和48M字節(jié)的總存儲容量。L2高速緩存是8路關(guān)聯(lián)的(8-way associative),并且被劃分成16K關(guān)聯(lián)集(即每個關(guān)聯(lián)集包含8個數(shù)據(jù)高速緩存線或1K字節(jié))。L3高速緩存是16路關(guān)聯(lián)的(16-wayassociative),并且被劃分成24K關(guān)聯(lián)集(即每個關(guān)聯(lián)集包含16個數(shù)據(jù)高速緩存行或2K字節(jié))。到L2高速緩存的訪問時間大約是20個處理器周期,而到L3高速緩存的訪問時間大約是100個處理器周期。為了進(jìn)行比較,到主存儲器的訪問時間大約為1000處理器周期,所以如果利用L3高速緩存中的數(shù)據(jù)能夠解決L2或更高級的高速緩存未中,相對于訪問主存儲器就能夠?qū)崿F(xiàn)實(shí)質(zhì)的性能效益。L1高速緩存通常較小,并且具有較快的訪問速度。然而,應(yīng)該理解,這些參數(shù)僅僅代表使用當(dāng)前技術(shù)的大型系統(tǒng)中的典型高速緩存。這些典型的參數(shù)將隨著技術(shù)的進(jìn)步而改變。較小的計算機(jī)系統(tǒng)通常相應(yīng)地具有較小的高速緩存,并可能具有較少的高速緩存級。本發(fā)明不限于任何特定的高速緩存大小、訪問時間、高速緩存行大小、高速緩存級的數(shù)量、特定級的高速緩存是否由多個處理器共享或?qū)S糜趩蝹€處理器、或者類似的設(shè)計參數(shù)。
正如現(xiàn)有技術(shù)中已知的,通過從選擇的地址位(或者在某些情況下為附加位,例如線程標(biāo)識符位)中解碼關(guān)聯(lián)集的標(biāo)識,并且比較關(guān)聯(lián)集中高速緩存行的地址與所需的數(shù)據(jù)地址,來訪問高速緩存。例如,在高速緩存中有1K關(guān)聯(lián)集的情況下,需要1K中的10位來規(guī)定特定關(guān)聯(lián)集。理想情況下,確定這10位,以使每個關(guān)聯(lián)集具有相同的被訪問的概率。
傳統(tǒng)地,計算機(jī)系統(tǒng)的設(shè)計者通常使用低位實(shí)際地址位來確定關(guān)聯(lián)集,假設(shè)這些低位位對應(yīng)于存儲器訪問的隨機(jī)分布,并且作為結(jié)果以相同的頻率來訪問每個關(guān)聯(lián)集。然而,鑒于不必完全理解的各種原因,在很多情況下,在典型的L2或L3高速緩存級上,存儲器訪問不是隨機(jī)分布在低位地址片(slice)中的。這種現(xiàn)象似乎至少部分地是由很多數(shù)據(jù)庫及其它軟件數(shù)據(jù)結(jié)構(gòu)的設(shè)計而引起的,盡管其它因素也可以導(dǎo)致這種現(xiàn)象。這些數(shù)據(jù)結(jié)構(gòu)常常在特定的尋址邊界上對齊,從而引起在某些低級地址位上的數(shù)據(jù)被更加頻繁地訪問。這種現(xiàn)象通常在L1高速緩存級上是無關(guān)緊要的,因?yàn)長1高速緩存級具有較少數(shù)量的關(guān)聯(lián)集以及在高速緩存中較短的數(shù)據(jù)平均壽命。但是,在L2或L3高速緩存級上,就有可能檢測到不同的關(guān)聯(lián)集中訪問頻率的顯著偏差,在具有較低訪問頻率的其它關(guān)聯(lián)集中產(chǎn)生某些“熱”集。
根據(jù)本發(fā)明的優(yōu)選實(shí)施例,在L2或L3高速緩存級上建立關(guān)聯(lián)集的同余組,每個同余組包含L2級上的多個關(guān)聯(lián)集和L3級上的多個關(guān)聯(lián)集。具體地說,在優(yōu)選實(shí)施例中,每個組包含L2級上的兩個關(guān)聯(lián)集和L3級上的三個關(guān)聯(lián)集。在一個同余組內(nèi)的L2級上的每個關(guān)聯(lián)集,共享相同同余組內(nèi)的L3級上的所有關(guān)聯(lián)集。因此,如果L2級上的一個關(guān)聯(lián)集熱而其它關(guān)聯(lián)集不熱,則可以使用在相同同余組內(nèi)的L3高速緩存的關(guān)聯(lián)集,主要用于存儲與L2高速緩存的熱關(guān)聯(lián)集相對應(yīng)的數(shù)據(jù),從而從L2高速緩存的熱關(guān)聯(lián)集的角度,有效地增加了L3高速緩存的關(guān)聯(lián)性。
圖4是根據(jù)優(yōu)選實(shí)施例的L2和L3高速緩存中關(guān)聯(lián)集的同余組的概念表示。如圖4所示,同余組401包括L2高速緩存208內(nèi)的兩個關(guān)聯(lián)集402,403和L3高速緩存303內(nèi)的三個關(guān)聯(lián)集404-406。同余組401中的每個L2關(guān)聯(lián)集(即關(guān)聯(lián)集402和403)對應(yīng)于該同余組中的三個L3關(guān)聯(lián)集。即,被映射到L2關(guān)聯(lián)集例如關(guān)聯(lián)集402的數(shù)據(jù)地址,以分布方式被映射到三個L3關(guān)聯(lián)集404-406。理想情況下,這些地址分布在三個L3關(guān)聯(lián)集中,以使對所有三個關(guān)聯(lián)集的數(shù)據(jù)訪問頻率相同。
由于在L2高速緩存中有16K關(guān)聯(lián)集,每個同余組包含兩個這樣的關(guān)聯(lián)集,并且在L3高速緩存中有24K關(guān)聯(lián)集,每個同余組包含三個這種關(guān)聯(lián)集,因此對于L2/L3高速緩存對來說,總共有8K同余組。一個系統(tǒng)可以具有超過一個的L2/L3高速緩存對,在這種情況下,每個這種高速緩存對具有8K同余組。
如圖4所示,將被訪問的數(shù)據(jù)的實(shí)際地址411用于選擇L2和L3高速緩存的關(guān)聯(lián)集。在該表示中,實(shí)際地址411包括52位,編號為12到63,其中位63是最低位。7個最低地址位、即位57-63,構(gòu)成地址的偏移量部分,中間范圍的位(位43-56)是索引部分,而最高位位(位12-42)有時被稱為標(biāo)簽。偏移量位確定128-位高速緩存行內(nèi)的數(shù)據(jù)地址。由于在L2高速緩存208中有16K關(guān)聯(lián)集,需要14位來規(guī)定L2高速緩存208的16K關(guān)聯(lián)集中的一個關(guān)聯(lián)集。在優(yōu)選實(shí)施例中,索引位(實(shí)際地址位43-56)是緊隨偏移量的最低位實(shí)際地址,它用于在L2高速緩存中選擇關(guān)聯(lián)集。不加改變地使用這些實(shí)際地址位,在高級高速緩存中選擇關(guān)聯(lián)集。在本實(shí)施例中,同余組401中的兩個L2關(guān)聯(lián)集402,403共享相同的位43-55(13位),以便在有效位43-55中確定同余組,而位56用于選擇該同余組的兩個關(guān)聯(lián)集之一。
使用未改變的實(shí)際地址位的組合和散列函數(shù),來選擇L3高速緩存中的關(guān)聯(lián)集。具體地說,使用實(shí)際地址索引位43-55(13位)來規(guī)定同余組,這些位是與用于規(guī)定L2高速緩存中的同余組相同的位。散列函數(shù)用于在該同余組內(nèi)選擇三個關(guān)聯(lián)集404-406之一。
散列函數(shù)可以是任何如下函數(shù),即這種函數(shù)對于任何給定的數(shù)據(jù)地址是可重復(fù)的,并且在同余組的三個關(guān)聯(lián)集間產(chǎn)生數(shù)據(jù)訪問的大致均等的分布。在優(yōu)選實(shí)施例中,散列函數(shù)是實(shí)際地址的一部分的模3函數(shù)。有可能得到實(shí)際地址的所有標(biāo)簽位(即實(shí)際地址位12-42,是高于7位偏移量和14位索引的位)的模3函數(shù),但是由于附加位帶來附加的延遲和/或電路需求,并且在高位上提供日益減少的益處,因此最好只使用這些位中的一部分。例如,可以從實(shí)際地址位35-42得到模3函數(shù)。然而,也可以使用其它位組合或其它散列函數(shù),這些散列函數(shù)可以使用其它實(shí)際地址位??梢杂^察到,不可能從為2的冪(power)范圍中獲得對于三個關(guān)聯(lián)集的數(shù)據(jù)地址的精確的均等分配,但是如果在散列函數(shù)中使用足夠多數(shù)量的地址位,這種差異就無關(guān)緊要了。
散列函數(shù)最好分散在較低級高速緩存中的地址分配。即,如果考慮高于索引位的地址位(實(shí)際地址位12-42),那么該范圍內(nèi)的順序地址通常被分配給較低級高速緩存中不同的關(guān)聯(lián)集。在模3的情況下,通?;谳喲瓉矸峙湓摲秶鷥?nèi)的地址。但是,盡管通常應(yīng)當(dāng)大致均等地并且以小粒度(最好是一個高速緩存行的粒度)地分布地址,散列函數(shù)也能夠執(zhí)行不嚴(yán)格輪循的分配。
圖5說明根據(jù)優(yōu)選實(shí)施例的包含關(guān)聯(lián)訪問機(jī)制的L2高速緩存208的結(jié)構(gòu)。參照圖5,L2高速緩存包括高速緩存數(shù)據(jù)表505和索引504。數(shù)據(jù)表505包含多個數(shù)據(jù)高速緩存行501,高速緩存行501被分組在關(guān)聯(lián)集402中。在優(yōu)選實(shí)施例中,每個高速緩存行501包含128字節(jié),并且每個關(guān)聯(lián)集402包含8個高速緩存行。索引504包含索引項(xiàng)502的行503,每個行503與關(guān)聯(lián)集402相對應(yīng),并且包含8個索引項(xiàng)。每個索引項(xiàng)502至少包含相應(yīng)高速緩存行501的實(shí)際地址511的一部分以及特定控制位512??刂莆豢梢园幌抻谛薷奈?dirty bit);用于選擇將要拋棄的高速緩存行的一位或多位,例如最近最少使用(LRU)位,用作維持高速緩存一致性的信號量、鎖或類似機(jī)制的一個或多個位;等等,如現(xiàn)有技術(shù)中已知的。
通過使用選擇器邏輯506,選擇與所需數(shù)據(jù)的實(shí)際地址411的一部分相對應(yīng)的索引504的行503,來引用高速緩存行。在優(yōu)選實(shí)施例中,處于43-56位位置上的14位實(shí)際地址被輸入到選擇器邏輯506中。接著,由比較器邏輯508對所選擇的行503的每個相應(yīng)的索引項(xiàng)502中的實(shí)際地址511與引用數(shù)據(jù)的實(shí)際地址411進(jìn)行比較。實(shí)際上,由于位43-56根據(jù)行選擇自然進(jìn)行比較,而且偏移量位57-63對于確定高速緩存行不是必要的,因此只需要比較實(shí)際地址的高位位部分(即12-42位)。如果匹配,比較器邏輯508就輸出與8個索引項(xiàng)中的匹配項(xiàng)相對應(yīng)的選擇信號。選擇器邏輯507使用與選擇器506所使用的相同的實(shí)際地址位,來選擇高速緩存行501的關(guān)聯(lián)集402,并且比較器508的輸出在所選擇的關(guān)聯(lián)集內(nèi)選擇8個高速緩存行501中的一個。
盡管在圖5中選擇器506和507被示為分離的實(shí)體,可以看出,它們執(zhí)行相同的功能。依據(jù)芯片的設(shè)計,它們實(shí)際上可以是一個選擇器,具有同時選擇索引504中的索引行503和高速緩存數(shù)據(jù)表505中的關(guān)聯(lián)集402的輸出。
L3高速緩存與之類似,但是除未改變的實(shí)際地址位之外,采用散列函數(shù)來選擇高速緩存行的關(guān)聯(lián)集。圖6示出根據(jù)優(yōu)選實(shí)施例的L3高速緩存303的結(jié)構(gòu)、L3高速緩存目錄302和關(guān)聯(lián)的訪問機(jī)制。
參照圖6,L3高速緩存包括高速緩存數(shù)據(jù)表605和索引604。數(shù)據(jù)表605包含多個數(shù)據(jù)高速緩存行601,高速緩存行601被分組為關(guān)聯(lián)集404。在優(yōu)選實(shí)施例中,每個高速緩存行601包含128字節(jié),并且每個關(guān)聯(lián)集404包含16個高速緩存行。索引604包含索引項(xiàng)602的行,每個行與關(guān)聯(lián)集404相對應(yīng),并且包含16個索引項(xiàng)。每個索引項(xiàng)至少包含相應(yīng)的高速緩存行601的實(shí)際地址611的一部分以及特定控制位612??刂莆豢梢园幌抻谛薷奈?;用于選擇要拋棄的高速緩存行的一個或多個位,例如最近最少使用(LRU)位,用作維持高速緩存一致性的信號量、鎖或類似機(jī)制等的一個或多個位;等等,如現(xiàn)有技術(shù)中已知的。
通過使用選擇器邏輯606,選擇與所需數(shù)據(jù)的實(shí)際地址411的一部分相對應(yīng)的索引604的一組三個行603,來引用高速緩存行。該三行組對應(yīng)于同余組401。在優(yōu)選實(shí)施例中,處于位位置43-55上的13位實(shí)際地址被輸入到選擇器邏輯606中,以選擇該同余組。接著,使用散列函數(shù)生成器609的輸出,從選擇器606所選擇的三個行的組中,選擇行603中的一個。如上所述,盡管可以替換地使用其它散列函數(shù),散列函數(shù)最好是部分實(shí)際地址的模3函數(shù)。然后,由比較器邏輯608對所選擇的行603的每個相應(yīng)的索引項(xiàng)602中的實(shí)際地址部分611與引用數(shù)據(jù)的實(shí)際地址部分411進(jìn)行比較。如果匹配,比較器邏輯608就輸出與16個索引項(xiàng)中的匹配項(xiàng)相對應(yīng)的選擇信號。選擇器邏輯607使用與選擇器606所使用的相同的實(shí)際地址位來選擇高速緩存行601的一組三個關(guān)聯(lián)集(即同余組)。使用散列函數(shù)生成器609的輸出,從三個關(guān)聯(lián)集中選擇同余組內(nèi)的一個關(guān)聯(lián)集404。比較器608的輸出在所選擇的關(guān)聯(lián)集404內(nèi)選擇16個高速緩存行601中的一個。
有時將圖6所示的整個結(jié)構(gòu)稱為L3高速緩存,或者可替換地,將高速緩存數(shù)據(jù)表605和特定關(guān)聯(lián)結(jié)構(gòu)稱為L3高速緩存。在優(yōu)選實(shí)施例中,在處理器芯片301中物理地實(shí)現(xiàn)L3高速緩存目錄302,L3高速緩存目錄302通常包括索引表604、選擇器邏輯606、散列函數(shù)生成器609和比較器608,而高速緩存數(shù)據(jù)表605和選擇器邏輯607物理地在芯片之外實(shí)現(xiàn)??梢栽贚3高速緩存的不在芯片上的部分中重復(fù)設(shè)置散列函數(shù)生成器609,在圖3中將L3高速緩存一般地表示為特征303。
在操作中,如果可能的話,由L1高速緩存來解決存儲器引用。在L1高速緩存未中的情況下,使用選擇的實(shí)際地址位來同時訪問L2和L3高速緩存索引(目錄),以便確定所需數(shù)據(jù)是在兩個高速緩存的哪個之中。如果數(shù)據(jù)在L2中,則通常將其從L2高速緩存裝載到L1高速緩存中,而在L2中保持不變。(因?yàn)長2高速緩存是共享的,可能存在這種情形,其中數(shù)據(jù)在另一個處理器的L1高速緩存中而暫時不可用。)如果數(shù)據(jù)在L3中(即不在L2中),則將其從L3并發(fā)地裝載到L2和L1中。在這種情況下,使用各種傳統(tǒng)選擇技術(shù),例如最近最少使用,來選擇L2的高速緩存行,以將其拋棄到L3中。由于L3正在將它的一行裝載到L2中,被裝載到L2中的行為將自L2中拋棄行騰出空間,而不必拋棄L3中的線。為了在L1高速緩存中騰出空間,將選擇現(xiàn)有行之一來拋棄;然而,由于L1高速緩存項(xiàng)是在L2中重復(fù)的,該拋棄行必然已經(jīng)在L2中,所以不必為其騰出空間。
如果數(shù)據(jù)既不在L2中也不在L3中,就將數(shù)據(jù)從主存儲器中讀取到L2和L1中。在這種情況下,使用任何常規(guī)技術(shù)選擇L2中的高速緩存行以便拋棄到L3中。為了在L3中騰出空間,仍使用任何常規(guī)技術(shù),必須選擇L3中的另一高速緩存行,以便將其拋棄到主存儲器中。
在如上所述的優(yōu)選實(shí)施例中,只在需要時才裝載L2高速緩存(即當(dāng)產(chǎn)生引用數(shù)據(jù)時出現(xiàn)高速緩存未中的情況下),L3高速緩存是L2的受害高速緩存,并且數(shù)據(jù)在L2和L3高速緩存中不重復(fù)。然而,有可能使用任何現(xiàn)在已知的或以后開發(fā)出的不同的選擇策略,來操作這些高速緩存中的一個或兩個。例如,在實(shí)際數(shù)據(jù)引用和高速緩存未中發(fā)生之前,可以采用一些預(yù)取技術(shù)預(yù)先將數(shù)據(jù)裝載到L2高速緩存或L3高速緩存中。
在優(yōu)選實(shí)施例中,一個同余組包含高速緩存較高級上的兩個關(guān)聯(lián)集和較低級上的三個關(guān)聯(lián)集。然而,應(yīng)該理解這些數(shù)字只代表一種實(shí)施方式,而同余組可以包含不同數(shù)量的關(guān)聯(lián)集。在同余組中關(guān)聯(lián)集的數(shù)量與訪問復(fù)雜性之間要進(jìn)行一些設(shè)計權(quán)衡。一般地,每個同余組中較大數(shù)量的關(guān)聯(lián)集通常將改進(jìn)隨機(jī)性,也將增加實(shí)現(xiàn)的復(fù)雜性。
最好是,為了避免在較低級關(guān)聯(lián)集中出現(xiàn)無法預(yù)見的熱行為,選擇同余組中關(guān)聯(lián)集的數(shù)量和散列函數(shù),以便使地址在相同的冪2邊界(power-of-twoboundary)上被分布在較低級高速緩存的不同關(guān)聯(lián)集中。為此目的,使用不具有公因數(shù)的數(shù)對是有利的,例如2和3,正如在優(yōu)選實(shí)施例中那樣。例如,在較低級高速緩存在每個同余組中包含三個關(guān)聯(lián)集的情況下,模3散列函數(shù)將地址分散在任何冪2邊界上。然而,只使用適當(dāng)?shù)纳⒘泻瘮?shù)也可以實(shí)現(xiàn)相同的效果。例如,在較高級高速緩存中有兩個關(guān)聯(lián)集,在較低級高速緩存中有四個關(guān)聯(lián)集,這時使用分散地址定位的散列函數(shù),來選擇同余組內(nèi)的較低級高速緩存關(guān)聯(lián)集。
盡管最好是如上所述在較低級高速緩存中將地址定位分散在冪2邊界上,但這不是嚴(yán)格需要的,并且可以用其它方式或者不分散地址定位來實(shí)現(xiàn)本發(fā)明的特定效益。例如,可替換地,可以在較高級高速緩存中分散地址定位(例如,使用每個同余組中的三個較高級關(guān)聯(lián)集)。
在優(yōu)選實(shí)施例中,使用實(shí)際地址的高位位的模3散列函數(shù),將較高級的關(guān)聯(lián)集中的地址分布在較低級的三個關(guān)聯(lián)集中。不同的散列函數(shù)或其它函數(shù)可以用于將較高級的關(guān)聯(lián)集中的地址分布在較低級的多個關(guān)聯(lián)集中。最好是以小粒度或粒度為1來分布較高級的地址,這意味著對于在實(shí)際地址索引之上用于確定較高級高速緩存中的關(guān)聯(lián)集的每個順序的實(shí)際地址部分,通常在較低級高速緩存中選擇不同的關(guān)聯(lián)集。然而,可替換地,還可以分配實(shí)際地址索引之上的實(shí)際地址部分的相鄰塊。
在優(yōu)選實(shí)施例中,計算機(jī)系統(tǒng)使用三級地址機(jī)制,其中當(dāng)訪問高速緩存或存儲器時,將有效地址翻譯成虛擬地址,而虛擬地址又被翻譯成實(shí)際地址。然而,本發(fā)明不限于任何特定的尋址方案,而且可應(yīng)用于具有少于三級尋址或者多于三級尋址的系統(tǒng)。
雖然已經(jīng)公開了本發(fā)明的具體實(shí)施例以及特定的替換方案,本領(lǐng)域技術(shù)人員應(yīng)該意識到,在本發(fā)明所限定的范圍內(nèi),可以進(jìn)行形式和細(xì)節(jié)上的各種附加改變。
權(quán)利要求
1.一種數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,包括至少一個處理器;存儲器;第一高速緩存,用于臨時保存所述存儲器的部分內(nèi)容,所述第一高速緩存包含多個可尋址的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;和第二高速緩存,用于臨時保存所述存儲器的部分內(nèi)容,所述第二高速緩存包含多個可尋址的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;其中,所述第一高速緩存的關(guān)聯(lián)集和所述第二高速緩存的關(guān)聯(lián)集與多個同余組相對應(yīng),每個同余組包含所述第一高速緩存的相應(yīng)多個關(guān)聯(lián)集和所述第二高速緩存的相應(yīng)多個關(guān)聯(lián)集;其中,與所述第一高速緩存的每個相應(yīng)關(guān)聯(lián)集相對應(yīng)的地址,被分配在與該第一高速緩存的相應(yīng)關(guān)聯(lián)集在相同同余組內(nèi)的所述第二高速緩存的多個關(guān)聯(lián)集中。
2.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,使用與用于確定相應(yīng)的關(guān)聯(lián)集的地址位不同的至少部分地址位的散列函數(shù),在相同同余組內(nèi)的所述第二高速緩存的多個關(guān)聯(lián)集中,分配與所述第一高速緩存的每個相應(yīng)的關(guān)聯(lián)集相對應(yīng)的地址。
3.如權(quán)利要求2所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述散列函數(shù)是模N函數(shù),其中N是所述同余組內(nèi)所述第二高速緩存的關(guān)聯(lián)集的數(shù)量。
4.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,每個所述同余組包含所述第一高速緩存的M個關(guān)聯(lián)集和所述第二高速緩存的N個關(guān)聯(lián)集,其中M和N的最大公因數(shù)是1。
5.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,數(shù)據(jù)在所述第一高速緩存和所述第二高速緩存中不重復(fù)。
6.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述第一高速緩存位于比所述第二高速緩存高的級上。
7.如權(quán)利要求6所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述第二高速緩存是所述第一高速緩存的受害高速緩存。
8.如權(quán)利要求6所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述數(shù)字?jǐn)?shù)據(jù)處理設(shè)備包括第三高速緩存,所述第三高速緩存位于比所述第一高速緩存和所述第二高速緩存高的級上。
9.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述第一高速緩存和所述第二高速緩存是可使用實(shí)際存儲器地址尋址的。
10.如權(quán)利要求1所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述第一高速緩存中的每個所述關(guān)聯(lián)集包含相應(yīng)的多個高速緩存行,并且所述第二高速緩存中每個所述關(guān)聯(lián)集包含相應(yīng)的多個高速緩存行。
11.一種用于數(shù)字?jǐn)?shù)據(jù)處理的集成電路芯片,包括至少一個處理器核心;第一高速緩存訪問邏輯部件,用于訪問第一高速緩存,所述第一高速緩存用于臨時保存存儲器的部分內(nèi)容,所述第一高速緩存訪問邏輯部件從所述第一高速緩存的多個關(guān)聯(lián)集中,確定與由所述處理器核心產(chǎn)生的輸入地址相對應(yīng)的所述第一高速緩存的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;和第二高速緩存訪問邏輯部件,用于訪問第二高速緩存,所述第二高速緩存用于臨時保存存儲器的部分內(nèi)容,所述第二高速緩存訪問邏輯部件從所述第二高速緩存的多個關(guān)聯(lián)集中,確定與由所述處理器核心產(chǎn)生的所述輸入地址相對應(yīng)的所述第二高速緩存的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;和其中,所述第一高速緩存的所述關(guān)聯(lián)集和所述第二高速緩存的所述關(guān)聯(lián)集與多個同余組相對應(yīng),每個同余組包含所述第一高速緩存的相應(yīng)多個關(guān)聯(lián)集和所述第二高速緩存的相應(yīng)多個關(guān)聯(lián)集;其中,與所述第一高速緩存的每個相應(yīng)關(guān)聯(lián)集相對應(yīng)的地址,被分配在與該第一高速緩存的相應(yīng)關(guān)聯(lián)集在相同同余組內(nèi)的所述第二高速緩存的多個關(guān)聯(lián)集中。
12.如權(quán)利要求11所述的集成電路芯片,其中,使用與用于確定相應(yīng)的關(guān)聯(lián)集的地址位不同的至少部分地址位的散列函數(shù),在相同同余組內(nèi)的所述第二高速緩存的多個關(guān)聯(lián)集中,分配與所述第一高速緩存的每個相應(yīng)的關(guān)聯(lián)集相對應(yīng)的地址。
13.如權(quán)利要求12所述的集成電路芯片,其中,所述散列函數(shù)是模N函數(shù),其中N是所述同余組內(nèi)的所述第二高速緩存的關(guān)聯(lián)集的數(shù)量。
14.如權(quán)利要求11所述的集成電路芯片,其中,每個所述同余組包含所述第一高速緩存的M個關(guān)聯(lián)集和所述第二高速緩存的N個關(guān)聯(lián)集,其中M和N的最大公因數(shù)是1。
15.如權(quán)利要求11所述的集成電路芯片,其中,數(shù)據(jù)在所述第一高速緩存和所述第二高速緩存中不重復(fù)。
16.如權(quán)利要求11所述的集成電路芯片,其中,所述第一高速緩存位于比所述第二高速緩存高的級上。
17.如權(quán)利要求16所述的集成電路芯片,其中,所述第二高速緩存是所述第一高速緩存的受害高速緩存。
18.如權(quán)利要求11所述的集成電路芯片,其中,所述第一高速緩存和所述第二高速緩存是可使用實(shí)際存儲器地址尋址的。
19.如權(quán)利要求11所述的集成電路芯片,其中,所述第一高速緩存中的每個所述關(guān)聯(lián)集包含相應(yīng)的多個高速緩存行,并且所述第二高速緩存中每個所述關(guān)聯(lián)集包含相應(yīng)的多個高速緩存行。
20.如權(quán)利要求11所述的集成電路芯片,其中,所述芯片包含所述第一高速緩存和所述第二高速緩存中的至少一個。
21.如權(quán)利要求11所述的集成電路芯片,其中,所述芯片包含多個處理器核心,并且所述多個處理器核心共享所述第一高速緩存和所述第二高速緩存。
22.一種操作數(shù)字?jǐn)?shù)據(jù)處理設(shè)備中的高速緩沖存儲器的方法,包括如下步驟響應(yīng)于輸入地址,從第一高速緩存的多個關(guān)聯(lián)集中確定出與所述輸入地址相對應(yīng)的該第一高速緩存的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;響應(yīng)于所述確定第一高速緩存關(guān)聯(lián)集的步驟,確定由所述確定第一高速緩存關(guān)聯(lián)集的步驟所確定的關(guān)聯(lián)集中是否包含與所述輸入地址相對應(yīng)的數(shù)據(jù);響應(yīng)于所述輸入地址,從第二高速緩存的多個關(guān)聯(lián)集中確定與所述輸入地址相對應(yīng)的該第二高速緩存的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;響應(yīng)于所述確定第二高速緩存關(guān)聯(lián)集的步驟,確定由所述確定第二高速緩存關(guān)聯(lián)集的步驟所確定的關(guān)聯(lián)集中是否包含與所述輸入地址相對應(yīng)的數(shù)據(jù);其中,所述第一高速緩存的關(guān)聯(lián)集和所述第二高速緩存的關(guān)聯(lián)集與多個同余組相對應(yīng),每個同余組包含所述第一高速緩存的相應(yīng)多個關(guān)聯(lián)集和所述第二高速緩存的相應(yīng)多個關(guān)聯(lián)集;其中,與所述第一高速緩存的每個相應(yīng)關(guān)聯(lián)集相對應(yīng)的地址,被分配在與該第一高速緩存的相應(yīng)關(guān)聯(lián)集在相同同余組內(nèi)的所述第二高速緩存的多個關(guān)聯(lián)集中。
23.如權(quán)利要求22所述的方法,其中,使用與用于確定相應(yīng)的關(guān)聯(lián)集的地址位不同的至少部分地址位的散列函數(shù),在相同同余組內(nèi)的所述第二高速緩存的多個關(guān)聯(lián)集中,分配與所述第一高速緩存的每個相應(yīng)的關(guān)聯(lián)集相對應(yīng)的地址。
24.如權(quán)利要求23所述的方法,其中,所述散列函數(shù)是模N函數(shù),其中N是所述同余組內(nèi)的所述第二高速緩存的關(guān)聯(lián)集的數(shù)量。
25.如權(quán)利要求22所述的方法,其中,每個所述同余組包含所述第一高速緩存的M個關(guān)聯(lián)集和所述第二高速緩存的N個關(guān)聯(lián)集,其中M和N的最大公因數(shù)是1。
26.如權(quán)利要求22所述的方法,其中,數(shù)據(jù)在所述第一高速緩存和所述第二高速緩存中不重復(fù)。
27.如權(quán)利要求22所述的方法,其中,所述第一高速緩存位于比所述第二高速緩存高的級上。
28.如權(quán)利要求27所述的方法,其中,所述第二高速緩存是所述第一高速緩存的受害高速緩存。
29.如權(quán)利要求22所述的方法,其中,所述第一高速緩存和所述第二高速緩存是可使用實(shí)際存儲器地址尋址的。
30.如權(quán)利要求22所述的方法,其中,所述第一高速緩存中的每個所述關(guān)聯(lián)集包含相應(yīng)的多個高速緩存行,并且所述第二高速緩存中每個所述關(guān)聯(lián)集包含相應(yīng)的多個高速緩存行。
31.一種數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,包括至少一個處理器;存儲器;第一高速緩存,用于臨時保存所述存儲器的部分內(nèi)容,所述第一高速緩存包含多個可尋址的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;和第二高速緩存,用于臨時保存所述存儲器的部分內(nèi)容,所述第二高速緩存包含多個可尋址的關(guān)聯(lián)集,每個關(guān)聯(lián)集包含一個或多個相應(yīng)的高速緩存行;其中,所述第一高速緩存的每個所述關(guān)聯(lián)集與相應(yīng)的多個可存儲在所述第一高速緩存的關(guān)聯(lián)集中的數(shù)據(jù)的地址相對應(yīng),并且所述第二高速緩存的每個所述關(guān)聯(lián)集與相應(yīng)的多個可存儲在所述第二高速緩存的關(guān)聯(lián)集中的數(shù)據(jù)的地址相對應(yīng);其中,與所述第一高速緩存的每個相應(yīng)關(guān)聯(lián)集相對應(yīng)的地址,被分配在所述第二高速緩存的相應(yīng)多個關(guān)聯(lián)集中;其中,與所述第二高速緩存的每個相應(yīng)關(guān)聯(lián)集相對應(yīng)的地址,被分配在所述第一高速緩存的相應(yīng)多個關(guān)聯(lián)集中。
32.如權(quán)利要求31所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,使用與用于確定所述第一高速緩存的相應(yīng)關(guān)聯(lián)集的地址位不同的至少部分地址位的散列函數(shù),在第二高速緩存的多個關(guān)聯(lián)集中,分配與所述第一高速緩存的每個相應(yīng)關(guān)聯(lián)集相對應(yīng)的地址。
33.如權(quán)利要求32所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述散列函數(shù)是模N函數(shù),其中N是所述第一高速緩存的關(guān)聯(lián)集中的地址被分配到的所述第二高速緩存的關(guān)聯(lián)集的數(shù)量。
34.如權(quán)利要求31所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,數(shù)據(jù)在所述第一高速緩存和所述第二高速緩存中不重復(fù)。
35.如權(quán)利要求31所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述第一高速緩存位于比所述第二高速緩存高的級上。
36.如權(quán)利要求35所述的數(shù)字?jǐn)?shù)據(jù)處理設(shè)備,其中,所述第二高速緩存是所述第一高速緩存的受害高速緩存。
全文摘要
本發(fā)明涉及一種具有至少兩級的計算機(jī)高速緩沖存儲器,其包含分配到同余組中的關(guān)聯(lián)集。每個同余組具有較高級高速緩存中的多個關(guān)聯(lián)集(最好是兩個)和較低級高速緩存中的多個關(guān)聯(lián)集(最好是三個)。較高級高速緩存中關(guān)聯(lián)集的地址范圍被分布在相同同余組內(nèi)的較低級高速緩存中的所有關(guān)聯(lián)集中,從而使這些較低級關(guān)聯(lián)集被相同同余組內(nèi)的較高級上的所有關(guān)聯(lián)集有效地共享。最好,較低級高速緩存是較高級高速緩存的受害高速緩存。這種由較高級上的不同關(guān)聯(lián)集對較低級關(guān)聯(lián)集的共享,有效地增加了較低級保存較高級上的熱關(guān)聯(lián)集的拋棄數(shù)據(jù)的關(guān)聯(lián)性。
文檔編號G06F12/00GK1652092SQ200410092640
公開日2005年8月10日 申請日期2004年11月16日 優(yōu)先權(quán)日2003年12月9日
發(fā)明者阿倫·C·索迪 申請人:國際商業(yè)機(jī)器公司