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