專利名稱::用于多核處理器中非一致性高速緩存的系統(tǒng)和方法
技術(shù)領域:
:本發(fā)明總體上涉及微處理器,更具體而言,涉及可以包括多個處理器內(nèi)核的微處理器。
背景技術(shù):
:現(xiàn)代微處理器可以在單個半導體器件上包括兩個或多個處理器內(nèi)核。這種微處理器可以被稱為多核處理器。與使用單內(nèi)核相比,使用多個內(nèi)核可以改進性能。但是,傳統(tǒng)的共享高速緩存架構(gòu)可能并不特別適合于支持多核處理器的設計。這里,“共享”可以指每個內(nèi)核都可以訪問該高速緩存中的高速緩存行(cacheline)。傳統(tǒng)架構(gòu)的共享高速緩存可以使用一個公共結(jié)構(gòu)來存儲高速緩存行。由于布局約束和其它因素,從這種高速緩存到一個內(nèi)核的訪問等待時間可能不同于到另一個內(nèi)核的訪問等待時間。通常,通過為對不同內(nèi)核的訪問等待時間采用“最壞情況”設計規(guī)則來補償這種情況。這種策略可能會增大對所有內(nèi)核的平均訪問等待時間。可以對該高速緩存進行分區(qū),并將各個分區(qū)布置在包含多個處理器內(nèi)核的整個半導體器件中。但是,這本身不會顯著地減小所有內(nèi)核的平均訪問等待時間。對于物理位置靠近某個特定內(nèi)核的高速緩存分區(qū)來說,該發(fā)出請求的內(nèi)核可以具有改進的訪問等待時間。但是,該發(fā)出請求的內(nèi)核還會訪問半導體器件上物理位置與其相距較遠的分區(qū)中包含的高速緩存行。對這些高速緩存行的訪問等待時間會顯著大于對物理位置靠近該發(fā)出請求的內(nèi)核的高速緩存分區(qū)中的高速緩存行的訪問等待時間。結(jié)合附圖以示例性而非限制性的方式說明本公開,圖中相似的標號代表類似的元件,其中圖1是根據(jù)本公開的一個實施例的環(huán)形互連上的高速緩存單元(cachemolecule)的示意圖;圖2是根據(jù)本公開的一個實施例的高速緩存單元的示意圖;圖3是根據(jù)本公開的一個實施例的高速緩存鏈(cachechain)中的高速緩存片(cachetile)的示意圖;圖4是根據(jù)本公開的一個實施例的用于搜索高速緩存行的示意圖;圖5是根據(jù)本公開的另一個實施例的非一致性高速緩存(non-uniformcache)架構(gòu)集合服務的示意圖;圖6A是根據(jù)本公開的另一個實施例的查找狀態(tài)保持寄存器的示意圖;圖6B是根據(jù)本公開的另一個實施例的查找狀態(tài)保持寄存器條目的示意圖;圖7是根據(jù)本公開的另一個實施例的用于搜索高速緩存行的方法的流程圖;圖8是根據(jù)本公開的另一個實施例的具有細目表(breadcrumbtable)的高速緩存單元的示意圖;圖9A是根據(jù)本公開的一個實施例的、包括具有多個內(nèi)核和高速緩存單元的處理器的系統(tǒng)的示意圖;圖9B是根據(jù)本公開的另一個實施例的、包括具有多個內(nèi)核和高速緩存單元的處理器的系統(tǒng)的示意圖。具體實施例方式下面的描述包括設計和操作多核處理器中的非一致性共享高速緩存的技術(shù)。在下面的描述中,為了提供對本發(fā)明的更徹底的理解,列出了很多具體細節(jié),諸如邏輯實現(xiàn)、軟件模塊分配、總線和其它接口信號傳輸技術(shù)、以及操作細節(jié)。但是,本領域技術(shù)人員將會理解,可以在沒有這些具體細節(jié)的情況下實施本發(fā)明。在其它實例中,為了不混淆本發(fā)明,沒有詳細示出控制結(jié)構(gòu)、門級電路和完整的軟件指令序列。本領域的那些普通技術(shù)人員根據(jù)這里的描述,將能夠?qū)崿F(xiàn)正確的功能而無需過度的實驗。在某些實施例中,在安騰處理器家族兼容的處理器(諸如由英特爾公司制造的那些處理器)、相關聯(lián)的系統(tǒng)和處理器固件的環(huán)境中公開了本發(fā)明。但是,也可以利用其它類型的處理器系統(tǒng)來實現(xiàn)本發(fā)明,諸如利用奔騰兼容處理器系統(tǒng)(諸如由英特爾公司制造的那些處理器系統(tǒng))、X-Scale家族兼容處理器、或其他廠商或設計商的任何處理器架構(gòu)的任何各種不同的通用處理器。另外,一些實施例可以包括或可以是專用處理器,諸如圖形、網(wǎng)絡、圖像、通信、或者任何其它已知或可獲得的類型的處理器連同其固件?,F(xiàn)在參見圖1,根據(jù)本公開的一個實施例,示出了環(huán)形互連上的高速緩存單元的示意圖。處理器100可以包括幾個處理器內(nèi)核102-116和高速緩存單元120-134。在不同的實施例中,處理器內(nèi)核102-116可以是公共內(nèi)核設計的相似復制,或者它們的處理能力可以有實質(zhì)的不同。高速緩存單元120-134整體上在功能上等價于傳統(tǒng)的單一高速緩存。在一個實施例中,他們可以形成二級(L2)高速緩存,而一級(L1)高速緩存位于內(nèi)核102-116內(nèi)。在其它實施例中,高速緩存單元可以位于整個高速緩存層次體系中的不同級。如圖所示,用包括順時針(CW)環(huán)140和逆時針(CCW)環(huán)142的冗余雙環(huán)互連來連接內(nèi)核102-116和高速緩存單元120-134。環(huán)的每個部分都可以在所示模塊之間傳送任何數(shù)據(jù)。如圖所示,內(nèi)核102-116中的每個內(nèi)核都與高速緩存單元120-134的一個高速緩存單元配對。該配對是為了將一個內(nèi)核與就低訪問等待時間而言“最靠近”的高速緩存單元在邏輯上相關聯(lián)。例如,內(nèi)核104當訪問高速緩存單元122中的高速緩存行時,可以具有最低的訪問等待時間,而當訪問其它高速緩存單元時,將具有增大的訪問等待時間。在其它實施例中,兩個或多個內(nèi)核能夠共享單個高速緩存單元,或者可以有兩個或多個高速緩存單元與一個特定的內(nèi)核相關聯(lián)??梢允褂靡环N度量“距離”來描述高速緩存單元相對于一個特定內(nèi)核的等待時間次序。在一些實施例中,該距離可以與內(nèi)核和高速緩存單元在該互連上的物理距離相關聯(lián)。例如,高速緩存單元122和內(nèi)核104之間的距離可以小于高速緩存單元126和內(nèi)核104之間的距離,而后者又可以小于高速緩存單元128和內(nèi)核104之間的距離。在其它實施例中,可以使用其它形式的互連,諸如單環(huán)互連、線性互連或網(wǎng)格互連。在每種情況下,都可以定義距離度量來描述高速緩存單元相對于特定內(nèi)核的等待時間次序?,F(xiàn)在參見圖2,根據(jù)本發(fā)明的一個實施例,示出了一個高速緩存單元的示意圖。在一個實施例中,該高速緩存單元可以是圖1中的高速緩存單元120。高速緩存單元120可以包括L2控制器210和一個或多個高速緩存鏈。L2控制器210可以具有用于與所述互連進行連接的一個或多個連線260、262。在圖2的實施例中,示出了四個高速緩存鏈220、230、240、250,但是在高速緩存單元中可以具有多于或少于四個高速緩存鏈。在一個實施例中,可以將存儲器中的任何特定高速緩存行映射到這四個高速緩存鏈中的單獨一個。當訪問高速緩存單元120中的一個特定高速緩存行時,只需要搜索和訪問相應的高速緩存鏈。因此,可以將多個高速緩存鏈類推到傳統(tǒng)的組相聯(lián)高速緩存中的多個組;但是,由于本公開的高速緩存中所具有的互連數(shù)目,與類似高速緩存大小的傳統(tǒng)組相聯(lián)高速緩存中的組相比,通常具有較少的高速緩存鏈。在其它實施例中,存儲器中的任何特定高速緩存行都可以映射到高速緩存單元中的兩個或多個高速緩存鏈。每個高速緩存鏈可以包括一個或多個高速緩存片。例如,如圖所示,高速緩存鏈220具有高速緩存片222-228。在其它實施例中,在一個高速緩存鏈中可以有多于或少于四個高速緩存片。在一個實施例中,一個高速緩存鏈中的高速緩存片不是按地址劃分的,例如,載入到一個高速緩存鏈的高速緩存行可以被置于該高速緩存鏈的任何高速緩存片中。由于沿高速緩存鏈的互連長度不同,沿著單個高速緩存鏈,這些高速緩存片的訪問等待時間可能不同。例如,從高速緩存片222的訪問等待時間可能小于從高速緩存片228的訪問等待時間。這樣,可以使用沿高速緩存鏈的“距離”度量來描述相對于特定高速緩存鏈的高速緩存片的等待時間次序。在一個實施例中,可以并行地搜索特定高速緩存鏈中的每個高速緩存片與該高速緩存鏈中的其它高速緩存片。當一個內(nèi)核請求一個特定高速緩存行并且確定所請求的高速緩存行沒有駐留在高速緩存中(“高速緩存缺失”)時,可以從在高速緩存層次體系中與存儲器較近的高速緩存或從存儲器中將該高速緩存行提取到前述高速緩存中。在一個實施例中,有可能最初就將那個新高速緩存行布置在發(fā)出請求的內(nèi)核附近。但是,在一些實施例中,最初將那個新高速緩存行布置在距發(fā)出請求的內(nèi)核一定距離處,稍后當該高速緩存行被重復訪問時,移動該高速緩存行使其更靠近發(fā)出請求的內(nèi)核,這樣可能是有優(yōu)勢的。在一個實施例中,可以簡單地將新高速緩存行放置在距發(fā)出請求的處理器內(nèi)核最遠的高速緩存片中。但是,在另一個實施例中,每個高速緩存片可以返回一個分數(shù),該分數(shù)可以指明容量、適合程度、或其它對于分配一個位置來接收高速緩存缺失后的新高速緩存行的意愿性度量。這種分數(shù)可以反映這樣的信息,諸如,該高速緩存片的物理位置以及潛在犧牲高速緩存行最近是何時被訪問的。當一個高速緩存單元報告對于被請求的高速緩存行的缺失時,它可以返回由其中的高速緩存片所報告的最大分數(shù)。一旦確定對于整個高速緩存的缺失,該高速緩存可以比較這些單元最大分數(shù),并選擇具有整體最大分數(shù)的單元來接收新高速緩存行。在另一個實施例中,高速緩存可以確定哪個高速緩存行是最近最少使用的(LRU),并選擇收回該高速緩存行來支持一次缺失之后的新高速緩存行。由于LRU的確定實施起來很復雜,在另一個實施例中,可以使用一種偽LRU替代方法。可以將LRU計數(shù)器與整個高速緩存中每個高速緩存片中的每個位置相關聯(lián)。當高速緩存命中時,可以訪問每個高速緩存片中可能包含被請求的高速緩存行而并沒有包含的每個位置,并且使該位置的LRU計數(shù)器加一。當隨后在特定的高速緩存片中特定的位置中發(fā)現(xiàn)另一被請求的高速緩存行時,可以復位該位置的LRU計數(shù)器。以這種方式,這些位置的LRU計數(shù)器可以包含與每個高速緩存片中那個位置的高速緩存行被訪問的頻率相關的值。在這個實施例中,高速緩存可以確定每個高速緩存片中的最高LRU計數(shù)值,然后選擇具有總體最高LRU計數(shù)值的高速緩存片來接收新高速緩存行。對任何這些替換方法的增強可以包括對存儲器中的高速緩存行使用關鍵程度提示。當一個高速緩存行包含由具有關鍵程度提示的指令載入的數(shù)據(jù)時,在某個釋放事件(例如轉(zhuǎn)送處理的需求)發(fā)生之前,不會選擇收回該高速緩存行。一旦特定的高速緩存行位于整個高速緩存之內(nèi),將它移動到更靠近頻繁請求它的內(nèi)核,這樣可能是有優(yōu)勢的。在一些實施例中,支持兩種高速緩存行移動。第一種移動是單元間移動,其中高速緩存行可以沿互連在高速緩存單元之間移動。第二中移動是單元內(nèi)移動,其中高速緩存行可以沿高速緩存鏈在高速緩存片之間移動。首先來討論單元間移動。在一個實施例中,每當發(fā)出請求的內(nèi)核訪問高速緩存行時,可以將這些高速緩存行移動到靠近該發(fā)出請求的內(nèi)核處。但是,在另一個實施例中,延遲任何移動,直到該高速緩存行已經(jīng)被特定的發(fā)出請求的內(nèi)核訪問多次為止,這樣可能是有優(yōu)勢的。在一個這樣的實施例中,每個高速緩存片的每個高速緩存行都可以具有相關聯(lián)的飽和計數(shù)器,其在預定計數(shù)值之后飽和。每個高速緩存行還可以具有附加比特和相關聯(lián)的邏輯,來確定新近發(fā)出請求的內(nèi)核位于沿互連哪個方向。在其它實施例中,可以使用其它形式的邏輯來確定請求的數(shù)量或頻率以及發(fā)出請求的內(nèi)核的位置或標識。在互連不是雙環(huán)互連,而是單環(huán)互連、線性互連或網(wǎng)格互連的實施例中,特別可以使用這些其它形式的特定邏輯。再次參見圖1,作為一個例子,令內(nèi)核110作為發(fā)出請求的內(nèi)核,令被請求的高速緩存行最初被放置在高速緩存單元134中。通過與高速緩存單元134中被請求的高速緩存行相關聯(lián)的附加比特和邏輯,來自內(nèi)核110的訪問請求被標注為來自逆時針方向。在導致被請求的高速緩存行的飽和計數(shù)器在其預定值飽和所需的訪問次數(shù)出現(xiàn)之后,可以在逆時針方向上將該被請求的高速緩存行朝著內(nèi)核110移動。在一個實施例中,可以將其移動一個高速緩存單元,到達高速緩存單元132。在其它實施例中,可以一次移動多于一個單元。一旦在高速緩存單元132中,可以將該被請求的高速緩存行與復位到零的新飽和值相關聯(lián)。如果內(nèi)核110繼續(xù)訪問那個被請求的高速緩存行,可以將其在內(nèi)核110的方向上再次移動。另一方面,如果它開始被另一個內(nèi)核重復訪問,假設內(nèi)核104,則可以在順時針方向上將它向回移動,以便更靠近內(nèi)核104?,F(xiàn)在參見圖3,根據(jù)本公開的一個實施例,示出了高速緩存鏈中的高速緩存片的示意圖。在一個實施例中,高速緩存片222-228可以是圖2的高速緩存單元120的高速緩存片,該高速緩存單元120被示為是相應的與圖1的內(nèi)核102最靠近的高速緩存單元?,F(xiàn)在來討論單元內(nèi)移動。在一個實施例中,特定的高速緩存單元中的單元內(nèi)移動可以是僅響應于來自相應的“最靠近的”內(nèi)核(例如,與所述單元具有最小距離度量的內(nèi)核)的請求而做出的。在其它實施例中,可以響應于來自其它更遠的內(nèi)核的請求,來允許單元內(nèi)移動。作為一個例子,令相應的最靠近的內(nèi)核102重復請求訪問最初在高速緩存片228的位置238處的高速緩存行。在這個例子中,位置238的相關聯(lián)比特和邏輯可以指示這些請求來自最靠近的內(nèi)核110,而不是來自從順時針或逆時針方向的內(nèi)核。當導致位置238處的被訪問的高速緩存行的飽和計數(shù)器在其預定值飽和所需的訪問次數(shù)出現(xiàn)之后,可以將被訪問的高速緩存行向著內(nèi)核110的方向移動。在一個實施例中,可以將它更靠近地移動一個高速緩存片,到達高速緩存片226中的位置236。在其它實施例中,可以將它一次更靠近地移動多于一個高速緩存片。一旦在高速緩存片226中,就將位置236中的該被請求的高速緩存行與復位到零的新飽和計數(shù)器相關聯(lián)。在單元間移動的情況下或單元內(nèi)移動的情況下,分別需要選擇和準備目標高速緩存單元或目標高速緩存片中的目的地位置,來接收被移動的高速緩存行。在一些實施例中,可以使用傳統(tǒng)的高速緩存犧牲方法,通過使一個“氣泡”一個高速緩存片一個高速緩存片地傳播或一個高速緩存單元一個高速緩存單元地傳播,或者通過將該高速緩存行與目的地結(jié)構(gòu)(單元或片)中另一個高速緩存行進行交換,來選擇和準備目的地位置。在一個實施例中,可以檢查目的地結(jié)構(gòu)中的高速緩存行的飽和計數(shù)器以及相關聯(lián)比特和邏輯,來確定是否存在交換候選高速緩存行,其正要作出在期望移動的該高速緩存行的相反方向上的移動決定。如果是的話,那么可以交換這兩個高速緩存行,并且它們都可以有利地向著它們各自的發(fā)出請求的內(nèi)核移動。在另一個實施例中,可以檢查偽LRU計數(shù)器,來幫助確定目的地位置?,F(xiàn)在參見圖4,根據(jù)本公開的一個實施例,示出了搜索一個高速緩存行的示意圖。在諸如圖1所示的L2高速緩存這樣的分布式高速緩存中搜索高速緩存行,可能首先需要確定在該高速緩存中被請求的高速緩存行是存在(“命中”)還是不存在(“缺失”)。在一個實施例中,一個內(nèi)核對相應的“最靠近的”高速緩存單元發(fā)出查找請求。如果發(fā)現(xiàn)命中,則該處理過程結(jié)束。但是,如果在那個高速緩存單元中發(fā)現(xiàn)缺失,那么將查找請求發(fā)送到其它高速緩存單元。每個其它高速緩存單元然后可以確定它們是否具有被請求的高速緩存行,并向回報告命中或缺失。這個兩部分查找可以由方框410代表。如果在一個或多個高速緩存單元中確定有命中,則該處理過程在方框412結(jié)束。在其它實施例中,可以通過搜索與發(fā)出請求的處理器內(nèi)核最靠近的一個或多個高速緩存單元或高速緩存片,來開始搜索一個高速緩存行。如果沒有發(fā)現(xiàn)該高速緩存行,那么可以繼續(xù)該搜索,按照距發(fā)出請求的處理器內(nèi)核的距離的次序、或并行地搜索其它高速緩存單元或高速緩存片。但是,如果在方框414所有高速緩存單元都報告缺失,該處理過程不一定結(jié)束。由于如上討論的移動高速緩存行的技術(shù),有可能是該被請求的高速緩存行移出第一高速緩存單元(其隨后報告缺失),并移入第二高速緩存單元(其之前報告缺失)。這種情況下,所有高速緩存單元都會報告對于被請求的高速緩存行的缺失,而該被請求的高速緩存行實際上還存在于該高速緩存中。這種情況下,高速緩存行的狀態(tài)可以被稱為“存在但未發(fā)現(xiàn)”(PNF)。在方框414中,進行進一步確定,以發(fā)現(xiàn)被高速緩存單元報告的缺失是真正的缺失(在方框416處理過程結(jié)束)、還是PNF。在方框418中確定為PNF的情況下,在一些實施例中需要重復該處理過程直到在移動之間發(fā)現(xiàn)該被請求的高速緩存行為止?,F(xiàn)在參見圖5,根據(jù)本公開的一個實施例,示出了非一致性高速緩存架構(gòu)集合服務的示意圖。在一個實施例中,多個高速緩存單元510-518和處理器內(nèi)核520-528可以通過具有順時針環(huán)552和逆時針環(huán)550的雙環(huán)互連來相互連接。在其它實施例中,可以使用高速緩存單元和內(nèi)核的其它分布,也可以使用其它互連。為了搜索高速緩存以及支持確定被報告的缺失是真正的缺失還是PNF,在一個實施例中,可以使用非一致性高速緩存集合服務(NCS)530。該NCS530可以包括回寫(write-back)緩沖器532以支持從高速緩存的收回,還可以具有缺失狀態(tài)保持寄存器(MSHR)534以支持對于被宣布為缺失的同一高速緩存行的多個請求。在一個實施例中,回寫緩沖器532和MSHR534可以是傳統(tǒng)設計。在一個實施例中,可以使用查找狀態(tài)保持寄存器(LSHR)536來跟蹤未決存儲器請求的狀態(tài)。該LSHR536可以對響應于對高速緩存行的訪問請求而來自各高速緩存單元的命中或缺失報告進行接收和制表。在LSHR536已經(jīng)從所有高速緩存單元接收到缺失報告的情況下,可能并不清楚是發(fā)生了真正的缺失還是PNF。因此,在一個實施例中,NCS530還可以包括電話簿538,來區(qū)分真正缺失的情況和PNF的情況。在其它實施例中,可以使用其它邏輯和方法來進行這種區(qū)分。電話簿538可以針對整個高速緩存中存在的每個高速緩存行而包括一個條目。當一個高速緩存行被提取到該高速緩存中時,將一個相應條目輸入該電話簿538。當從該高速緩存中移除該高速緩存行時,可以使相應的電話簿條目無效或解除分配。在一個實施例中,該條目可以是該高速緩存行的高速緩存標簽,而在其它實施例中,可以使用該高速緩存行的其它形式的標識符。NCS530可以包括支持針對任何被請求的高速緩存行來搜索電話簿538的邏輯。在一個實施例中,電話簿538可以是內(nèi)容可尋址存儲器(CAM)?,F(xiàn)在參見圖6A,根據(jù)本公開的一個實施例,示出了查找狀態(tài)保持寄存器(LSHR)的示意圖。在一個實施例中,該LSHR可以是圖5的LSHR536。LSHR536可以包括許多條目610-632,每個條目可以表示對一個高速緩存行的未決請求。在不同的實施例中,這些條目610-632可以包括用來描述被請求的高速緩存行和從各高速緩存單元接收的命中或缺失報告的字段。當LSHR536從任何高速緩存單元接收到命中報告時,NCS530然后可以對LSHR536中的相應條目解除分配。當LSHR536已經(jīng)從所有高速緩存單元接收到針對特定的被請求的高速緩存行的缺失報告時,NCS530然后可以調(diào)用邏輯來確定是發(fā)生真正的缺失、還是PNF的情況?,F(xiàn)在參見圖6B,根據(jù)本公開的一個實施例,示出了查找狀態(tài)保持寄存器條目的示意圖。在一個實施例中,該條目可以包括對最初的較低級高速緩存請求(這里,來自一級L1高速緩存,“初始L1請求”)的指示640;缺失狀態(tài)比特642,其可以開始時設定為“缺失”,但是當任何高速緩存單元報告對該高速緩存行的命中時,切換為“命中”;表示未決應答數(shù)目的倒計數(shù)字段644。在一個實施例中,初始L1請求可以包括被請求的高速緩存行的高速緩存標簽。未決應答數(shù)目644字段可以最初被設定為高速緩存單元的總數(shù)。當接收到針對初始L1請求640中的被請求的高速緩存行的每個報告時,可以將未決應答數(shù)目644減一。當未決應答數(shù)目644達到零時,NCS530然后可以檢查缺失狀態(tài)比特642。如果缺失狀態(tài)比特642保持為缺失,那么NCS530可以檢查電話簿,以確定這是真正的缺失還是PNF?,F(xiàn)在參見圖7,根據(jù)本公開的一個實施例,示出了用于搜索高速緩存行的方法的流程圖。在其它實施例中,圖7中的各個方框所示的處理過程的各個部分可以在時間上重新分配和重新安排,而仍執(zhí)行該處理過程。在一個實施例中,可以通過圖5的NCS530來執(zhí)行圖7的方法。在判定框712開始,從一個高速緩存單元接收到命中或缺失報告。如果該報告是命中,那么該處理過程沿“否”路徑繼續(xù),并且搜索在方框714終止。如果報告是缺失并且還有未決報告,那么該處理過程沿“未決”路徑繼續(xù),并再次進入判定框712。但是,如果報告是缺失并且不再有未決報告,那么該處理過程沿“是”路徑繼續(xù)。然后,在判定框718中,可以確定該缺失高速緩存行是否在回寫緩沖器中具有條目。如果是,那么該處理過程沿“是”路徑繼續(xù),并且在方框720中,作為高速緩存一致性操作的一部分,該高速緩存行請求可以由該回寫緩沖器中的該條目滿足。然后可以在方框722中終止該搜索。但是,如果該缺失高速緩存行在回寫緩沖器中沒有條目,那么該處理過程沿“否”路徑繼續(xù)。在判定框726中,可以搜索電話簿,其包含高速緩存中存在的所有高速緩存行的標簽。如果在電話簿中發(fā)現(xiàn)匹配,那么該處理過程沿“是”路徑繼續(xù),并且在方框728,可以宣布該存在但未發(fā)現(xiàn)的情形。但是,如果沒有發(fā)現(xiàn)匹配,該處理過程沿“否”路徑繼續(xù)。然后在判定框730,可以確定是否存在針對同一高速緩存行的另一個未決請求。這可以通過檢查諸如圖5的缺失狀態(tài)保持寄存器(MSHR)534這樣的MSHR來執(zhí)行。如果是,那么該處理過程沿“是”分支繼續(xù),并且在方框734,將該搜索與已有的搜索結(jié)合在一起。如果沒有預先存在的請求并且有資源限制,諸如MSHR或回寫緩沖器臨時是滿的,那么該處理過程將該請求置于緩沖器732中,并可以重新進入判定框730。但是,如果沒有預先存在的請求并且沒有資源限制,那么該處理過程可以進入判定框740。在判定框740,可以確定如何最好地在高速緩存中分配一個位置來接收被請求的高速緩存行。如果因為任何原因目前沒有作出分配,該處理過程可以將該請求置于緩沖器742中,并且稍后重試。如果可以在不強迫收回的情況下作出分配,諸如分配包含處于無效狀態(tài)的高速緩存行的位置,那么該處理過程繼續(xù)并進入方框744,在此處可以執(zhí)行對存儲器的請求。如果可以通過強迫收回來作出分配,諸如分配包含已經(jīng)很少被訪問的處于有效狀態(tài)的高速緩存行的位置,那么該處理過程繼續(xù)并進入判定框750。在判定框750,可以確定是否需要回寫被犧牲的高速緩存行的內(nèi)容。如果不,那么在方框744中啟動對存儲器的請求之前,可以在方框752中將回寫緩沖器中留給該犧牲者的條目解除分配。如果是,那么在方框744中對存儲器的請求也可以包括相應的回寫操作。在任何一種情況下,方框744中的存儲器操作以方框746中的任何標簽缺失的清除來結(jié)束?,F(xiàn)在參見圖8,根據(jù)本公開的一個實施例,示出了具有細目表的高速緩存單元的示意圖。高速緩存單元800的L2控制器810添加有一個細目表812。在一個實施例中,每次L2控制器810接收到對一個高速緩存行的請求時,該L2控制器可以將那個高速緩存行的標簽(或其它標識符)插入到該細目表812的一個條目814中。可以保留該細目表中的該條目,直到像對該被請求的高速緩存行的未決搜索完成那樣的時間為止。然后可以解除分配該條目。當另一個高速緩存單元希望將一個高速緩存行移入高速緩存單元800時,該L2控制器810可以首先檢查該移動候選高速緩存行的標簽是否在于細目表812中。例如,如果該移動候選高速緩存行是在條目814中有標簽的該被請求的高速緩存行,那么L2控制器810可以拒絕接受該移動候選高速緩存行。該拒絕可以持續(xù)直到針對該被請求的高速緩存行的未決搜索完成為止。只有當所有的高速緩存單元提交了它們各自的命中或缺失報告后,該搜索才完成。這意味著,進行轉(zhuǎn)送的高速緩存單元在提交了它的命中或缺失報告后的某一時間之前,必須保留該被請求的高速緩存行。在這種情況下,來自該進行轉(zhuǎn)送的高速緩存單元的命中或缺失報告將指示命中而不是缺失。通過這種方式,使用細目表812可以禁止出現(xiàn)存在但未發(fā)現(xiàn)的高速緩存行。當與包含細目表的高速緩存單元一起使用時,圖5的NCS530可以被修改為刪除電話簿。那么,當LSHR536從高速緩存單元接收到所有的缺失報告時,NCS530能夠宣布真正的缺失,并且可以認為搜索完成?,F(xiàn)在參見圖9A和9B,根據(jù)本發(fā)明的兩個實施例,示出了具有包括多個內(nèi)核和高速緩存單元的處理器的系統(tǒng)的示意圖。圖9A的系統(tǒng)總體上示出了通過系統(tǒng)總線將處理器、存儲器和輸入/輸出設備互相連接的系統(tǒng),而圖9B的系統(tǒng)總體上示出了通過多個點對點接口將處理器、存儲器和輸入/輸出設備互相連接的系統(tǒng)。圖9A的系統(tǒng)可以包括一個或幾個處理器,為了清楚,這里只示出了兩個處理器40、60。處理器40、60可以包括二級高速緩存42、62,其中,每個處理器40、60可以包括多個內(nèi)核,每個高速緩存42、62可以包括多個高速緩存單元。圖9A的系統(tǒng)可以具有經(jīng)由總線接口44、64、12、8與系統(tǒng)總線6連接的幾個功能單元。在一個實施例中,系統(tǒng)總線6可以是與英特爾公司制造的奔騰系列微處理器一起使用的前端總線(FSB)。在其它實施例中,可以使用其它總線。在一些實施例中,可以將存儲器控制器34和總線橋32合稱為芯片組。在一些實施例中,可以將一個芯片組的多個功能單元劃分到多個物理芯片中,與圖9A的實施例中所示的不同。存儲器控制器34可以允許處理器40、60從系統(tǒng)存儲器10和從基本輸入/輸出系統(tǒng)(BIOS)可擦除可編程只讀存儲器(EPROM)36進行讀和寫。在一些實施例中,BIOSEPROM36可以使用閃存,并可以包括其它基本運算固件而非BIOS。存儲器控制器34可以包括總線接口8,以允許向和從系統(tǒng)總線6上的總線代理搬運存儲器讀和寫數(shù)據(jù)。存儲器控制器34還可以經(jīng)過高性能圖形接口39連接到高性能圖形電路38。在某些實施例中,高性能圖形接口39可以是高級圖形端口AGP接口。存儲器控制器34可以將數(shù)據(jù)從系統(tǒng)存儲器10經(jīng)由高性能圖形接口39導向高性能圖形電路38。圖9B的系統(tǒng)也可以包括一個或幾個處理器,為了清楚,這里只示出了兩個處理器70、80。處理器70、80可以包括二級高速緩存56、58,其中,每個處理器70、80可以包括多個內(nèi)核,每個高速緩存56、58可以包括多個高速緩存單元。處理器70、80分別可以包括本地存儲器控制器集線器(MCH)72、82,用于連接存儲器2、4。處理器70、80可以使用點對點接口電路78、88經(jīng)由點對點接口50交換數(shù)據(jù)。處理器70、80分別可以使用點對點接口電路76、94、86、98經(jīng)由各個點對點接口52、54與芯片組90交換數(shù)據(jù)。在其它實施例中,可以將芯片組功能單元實現(xiàn)在處理器70、80中。芯片組90還可以經(jīng)由高性能圖形接口92與高性能圖形電路38交換數(shù)據(jù)。在圖9A的系統(tǒng)中,總線橋32可以允許系統(tǒng)總線6和總線16之間的數(shù)據(jù)交換,在一些實施例中,總線16可以是工業(yè)標準結(jié)構(gòu)(ISA)總線或外圍組件互連(PCI)總線。在圖9B的系統(tǒng)中,芯片組90可以經(jīng)由總線接口96與總線16交換數(shù)據(jù)。在任一個系統(tǒng)中,總線16上可以具有各種輸入/輸出I/O設備14,在一些實施例中包括低性能圖形控制器、視頻控制器和網(wǎng)絡控制器。在一些實施例中,可以使用另一個總線橋18來允許總線16和總線20之間的數(shù)據(jù)交換。在一些實施例中,總線20可以是小型計算機系統(tǒng)接口(SCSI)總線、集成設備電路(IDE)總線、或通用串行總線(USB)總線??梢詫⑵渌麵/O設備連接到總線20。它們可以包括鍵盤和光標控制設備22(包括鼠標)、音頻I/O24、通信設備26(包括調(diào)制解調(diào)器和網(wǎng)絡接口)、以及數(shù)據(jù)存儲設備28。軟件代碼30可以存儲在數(shù)據(jù)存儲設備28中。在一些實施例中,數(shù)據(jù)存儲設備28可以是固定磁盤、軟盤驅(qū)動器、光盤驅(qū)動器、磁光盤驅(qū)動器、磁帶、或非易失性存儲器(包括閃存)。在上述說明書中,已經(jīng)結(jié)合本發(fā)明的具體示例性實施例描述了本發(fā)明。但是,顯然可以對這些具體實施例進行各種修改和變化,而不偏離所附權(quán)利要求中表述的本發(fā)明的更寬的實質(zhì)和范圍。因此,上述說明書和附圖應該理解為是說明性的而不是限制性的。權(quán)利要求1.一種處理器,包括經(jīng)由接口耦合的一組處理器內(nèi)核;以及可以被并行搜索的一組高速緩存片,其中,所述一組中的第一高速緩存片和第二高速緩存片用于接收第一高速緩存行,并且其中,從所述一組處理器內(nèi)核中的第一內(nèi)核到所述第一高速緩存片和到所述第二高速緩存片的距離不同。2.如權(quán)利要求1所述的處理器,其中,所述接口是環(huán)。3.如權(quán)利要求2所述的處理器,其中,所述環(huán)包括順時針環(huán)和逆時針環(huán)。4.如權(quán)利要求1所述的處理器,其中,所述接口是網(wǎng)格。5.如權(quán)利要求1所述的處理器,其中,所述一組高速緩存片的第一子組中的每個高速緩存片都耦合到所述一組處理器內(nèi)核中的一個處理器內(nèi)核并且與所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的第一高速緩存鏈相關聯(lián),并且所述一組高速緩存片的第二子組中的每個高速緩存片都耦合到所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核并且與所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的第二高速緩存鏈相關聯(lián)。6.如權(quán)利要求5所述的處理器,其中,所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的所述第一高速緩存鏈中的每個高速緩存片和所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的所述第二高速緩存鏈中的每個高速緩存片都與所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的一個高速緩存單元相關聯(lián)。7.如權(quán)利要求6所述的處理器,其中,由所述一組處理器內(nèi)核中的第一處理器內(nèi)核請求的第一高速緩存行將被放置于沒有與所述第一處理器內(nèi)核耦合的第一高速緩存單元中的第一高速緩存片中。8.如權(quán)利要求7所述的處理器,其中,每個高速緩存片都指示用于放置新高速緩存行的分數(shù),并且每個高速緩存單元都指示從所述高速緩存片的所述分數(shù)中選擇的單元最大分數(shù)。9.如權(quán)利要求8所述的處理器,其中,響應于所述單元最大分數(shù)中的整體最大分數(shù),來放置所述第一高速緩存行。10.如權(quán)利要求7所述的處理器,其中,響應于軟件關鍵程度提示,來放置所述第一高速緩存行。11.如權(quán)利要求7所述的處理器,其中,當?shù)谝桓咚倬彺骀湹乃龅谝桓咚倬彺嫫械乃龅谝桓咚倬彺嫘斜辉L問多次時,所述第一高速緩存行將被移動到所述第一高速緩存鏈的第二高速緩存片。12.如權(quán)利要求11所述的處理器,其中,所述第一高速緩存行將被移動到一個被收回的高速緩存行的位置。13.如權(quán)利要求11所述的處理器,其中,所述第一高速緩存行將被與所述第二高速緩存片的第二高速緩存行進行交換。14.如權(quán)利要求7所述的處理器,其中,當所述第一高速緩存單元中的所述第一高速緩存行被訪問多次時,所述第一高速緩存行將被移動到第二高速緩存單元。15.如權(quán)利要求14所述的處理器,其中,所述第一高速緩存行將被移動到一個被收回的高速緩存行的位置。16.如權(quán)利要求14所述的處理器,其中,所述第一高速緩存行將被與所述第二高速緩存單元中的第二高速緩存行進行交換。17.如權(quán)利要求7所述的處理器,其中,對所述第一高速緩存單元中的所述第一高速緩存行的查找請求將被并行地發(fā)送到所述第一高速緩存鏈中的所有高速緩存片。18.如權(quán)利要求7所述的處理器,其中,對所述第一高速緩存行的查找請求將被并行地發(fā)送到所述多個高速緩存單元。19.如權(quán)利要求18所述的處理器,其中,所述多個高速緩存單元中的每個高速緩存單元向第一表返回命中或缺失消息。20.如權(quán)利要求19所述的處理器,其中,當所述第一表確定所有的所述命中或缺失消息都指示缺失時,對存在的高速緩存行的標簽的第二表進行搜索。21.如權(quán)利要求20所述的處理器,其中,當在所述第二表中發(fā)現(xiàn)所述第一高速緩存行的第一標簽時,確定所述第一高速緩存行為存在但未發(fā)現(xiàn)。22.如權(quán)利要求18所述的處理器,其中,所述高速緩存單元中的第一高速緩存單元在接收到所述查找請求之后拒絕接受所述第一高速緩存行的轉(zhuǎn)移。23.一種方法,包括在與第一處理器內(nèi)核相關聯(lián)的高速緩存片中搜索第一高速緩存行;如果在與所述第一處理器內(nèi)核相關聯(lián)的所述高速緩存片中沒有發(fā)現(xiàn)所述第一高速緩存行,那么向與除了所述第一處理器內(nèi)核之外的處理器內(nèi)核相關聯(lián)的多組高速緩存片發(fā)送對所述第一高速緩存行的請求;以及使用寄存器跟蹤來自所述多組高速緩存片的響應。24.如權(quán)利要求23所述的方法,其中,所述跟蹤包括對所述響應的期望數(shù)目進行倒計數(shù)。25.如權(quán)利要求24所述的方法,其中,所述第一高速緩存行可以從第一高速緩存片移動到第二高速緩存片。26.如權(quán)利要求25所述的方法,還包括在接收到所有的所述響應之后,宣布在所述高速緩存片中沒有發(fā)現(xiàn)所述第一高速緩存行。27.如權(quán)利要求26所述的方法,還包括當在所述高速緩存片中沒有發(fā)現(xiàn)所述第一高速緩存行時,搜索存在的高速緩存行的目錄,以確定所述第一高速緩存行是否是存在但未發(fā)現(xiàn)。28.如權(quán)利要求23所述的方法,還包括在已經(jīng)從所述第二高速緩存片發(fā)出響應后,通過檢查一個標記,阻止將所述第一高速緩存行移動到所述第二高速緩存片中。29.一種方法,包括將第一高速緩存行放置在第一高速緩存片中,以及將所述第一高速緩存行移動到與發(fā)出請求的處理器內(nèi)核更靠近的第二高速緩存片。30.如權(quán)利要求29所述的方法,還包括在所述移動之前,對從所述發(fā)出請求的處理器內(nèi)核發(fā)出的對所述第一高速緩存行的請求的數(shù)目進行計數(shù)。31.如權(quán)利要求29所述的方法,還包括跟蹤從所述發(fā)出請求的處理器內(nèi)核發(fā)出的對所述第一高速緩存行的請求的方向,以允許在所述方向上移動。32.如權(quán)利要求29所述的方法,其中,所述移動包括在擁有所述第一高速緩存片的第一高速緩存單元和擁有所述第二高速緩存片的第二高速緩存單元之間移動。33.如權(quán)利要求29所述的方法,其中,所述移動包括在耦合到所述發(fā)出請求的處理器內(nèi)核的、擁有所述第一高速緩存片和所述第二高速緩存片的第一高速緩存單元內(nèi)移動。34.如權(quán)利要求29所述的方法,其中,所述移動包括收回所述第二高速緩存片中的第二高速緩存行。35.如權(quán)利要求29所述的方法,其中,所述移動包括將所述第一高速緩存片中的所述第一高速緩存行與所述第二高速緩存片中的第二高速緩存行進行交換。36.一種系統(tǒng),包括處理器,其包括經(jīng)由接口耦合的一組處理器內(nèi)核以及可以被并行搜索的一組高速緩存片,其中,所述一組高速緩存片中的第一高速緩存片和第二高速緩存片用于接收第一高速緩存行,并且其中,從所述一組處理器內(nèi)核中的第一內(nèi)核到所述第一高速緩存片和到所述第二高速緩存片的距離不同;系統(tǒng)接口,用于將所述處理器耦合到輸入/輸出設備;以及網(wǎng)絡控制器,用于從所述處理器接收信號。37.如權(quán)利要求36所述的系統(tǒng),其中,所述一組高速緩存片的第一子組中的每個高速緩存片都耦合到所述一組處理器內(nèi)核中的一個處理器內(nèi)核并且與所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的第一高速緩存鏈相關聯(lián),并且所述一組高速緩存片的第二子組中的每個高速緩存片都耦合到所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核并且與所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的第二高速緩存鏈相關聯(lián)。38.如權(quán)利要求37所述的系統(tǒng),其中,所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的所述第一高速緩存鏈中的每個高速緩存片和所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的所述第二高速緩存鏈中的每個高速緩存片都與所述一組處理器內(nèi)核中的所述一個處理器內(nèi)核的一個高速緩存單元相關聯(lián)。39.如權(quán)利要求38所述的系統(tǒng),其中,由所述一組處理器內(nèi)核中的第一處理器內(nèi)核請求的第一高速緩存行將被放置于沒有與所述第一處理器內(nèi)核耦合的第一高速緩存單元中的第一高速緩存片中。40.如權(quán)利要求39所述的系統(tǒng),其中,當?shù)谝桓咚倬彺骀湹牡谝桓咚倬彺嫫械牡谝桓咚倬彺嫘斜辉L問多次時,所述第一高速緩存行將被移動到所述第一高速緩存鏈的第二高速緩存片中。41.如權(quán)利要求39所述的系統(tǒng),其中,所述第一高速緩存行將被移動到一個被收回的高速緩存行的位置。42.如權(quán)利要求39所述的系統(tǒng),其中,所述第一高速緩存行將被與所述第二高速緩存片中的第二高速緩存行進行交換。43.如權(quán)利要求39所述的系統(tǒng),其中,當所述第一高速緩存單元中的所述第一高速緩存行被訪問多次時,所述第一高速緩存行將被移動到第二高速緩存單元中。44.如權(quán)利要求39所述的系統(tǒng),其中,對所述第一高速緩存單元中的所述第一高速緩存行的查找請求將被并行地發(fā)送到所述第一高速緩存鏈中的所有高速緩存片。45.如權(quán)利要求39所述的系統(tǒng),其中,對所述第一高速緩存行的查找請求被并行地發(fā)送到所述多個高速緩存單元。46.一種設備,包括用于在與第一處理器內(nèi)核相關聯(lián)的高速緩存片中搜索第一高速緩存行的裝置;用于如果在與所述第一處理器內(nèi)核相關聯(lián)的所述高速緩存片中沒有發(fā)現(xiàn)所述第一高速緩存行,那么向一組處理器內(nèi)核發(fā)送針對所述第一高速緩存行的請求的裝置;以及用于使用寄存器跟蹤來自所述一組處理器內(nèi)核的響應的裝置。47.如權(quán)利要求46所述的設備,其中,所述用于跟蹤的裝置包括用于對所述響應的期望數(shù)目進行倒計數(shù)的裝置。48.如權(quán)利要求47所述的設備,其中,所述第一高速緩存行可以從第一高速緩存片移動到第二高速緩存片。49.如權(quán)利要求48所述的設備,還包括用于在接收到所有的所述響應之后,宣布在所述高速緩存片中沒有發(fā)現(xiàn)所述第一高速緩存行的裝置。50.如權(quán)利要求49所述的設備,還包括用于當在所述高速緩存片中沒有發(fā)現(xiàn)所述第一高速緩存行時,搜索存在的高速緩存行的目錄,以確定所述第一高速緩存行是否是存在但未發(fā)現(xiàn)的裝置。51.如權(quán)利要求48所述的設備,還包括用于在已經(jīng)從所述第二高速緩存片發(fā)出響應后,通過檢查一個標記,阻止將所述第一高速緩存行移動到所述第二高速緩存片中的裝置。52.一種設備,包括用于將第一高速緩存行放置在第一高速緩存片中的裝置;以及用于將所述第一高速緩存行移動到與發(fā)出請求的處理器內(nèi)核更靠近的第二高速緩存片的裝置。53.如權(quán)利要求52所述的設備,還包括用于在所述移動之前,對從所述發(fā)出請求的處理器內(nèi)核發(fā)出的對所述第一高速緩存行的請求的數(shù)目進行計數(shù)的裝置。54.如權(quán)利要求52所述的設備,還包括用于跟蹤從所述發(fā)出請求的處理器內(nèi)核發(fā)出的對所述第一高速緩存行的請求的方向以允許在所述方向上移動的裝置。55.如權(quán)利要求52所述的設備,其中,所述用于移動的裝置包括用于在擁有所述第一高速緩存片的第一高速緩存單元和擁有所述第二高速緩存片的第二高速緩存單元之間移動的裝置。56.如權(quán)利要求52所述的設備,其中,所述用于移動的裝置包括用于在耦合到所述發(fā)出請求的處理器內(nèi)核的、擁有所述第一高速緩存片和所述第二高速緩存片的第一高速緩存單元內(nèi)移動的裝置。57.如權(quán)利要求56所述的設備,其中,所述用于移動的裝置包括用于收回所述第二高速緩存片中的第二高速緩存行的裝置。58.如權(quán)利要求56所述的設備,其中,所述用于移動的裝置包括用于將所述第一高速緩存片中的所述第一高速緩存行與所述第二高速緩存片中的第二高速緩存行進行交換的裝置。全文摘要公開了用于設計和操作在多核處理器中的分布式共享高速緩存的系統(tǒng)和方法。在一個實施例中,共享高速緩存可以分布在多個高速緩存單元中。就訪問等待時間而言,每個高速緩存單元可以最靠近其中一個處理器內(nèi)核。在一個實施例中,從存儲器提取的高速緩存行可以最初被放置在不是與發(fā)出請求的處理器內(nèi)核最靠近的高速緩存單元中。當發(fā)出請求的處理器內(nèi)核對那個高速緩存行重復訪問時,可以將它在高速緩存單元之間移動或在一個高速緩存單元內(nèi)移動。由于在高速緩存內(nèi)移動高速緩存行的能力,在各種實施例中,可以使用具體的搜索方法來定位特定高速緩存行。文檔編號G06F12/08GK101088075SQ200580044884公開日2007年12月12日申請日期2005年12月27日優(yōu)先權(quán)日2004年12月27日發(fā)明者C·休斯,J·塔克三世,V·李,Y·陳申請人:英特爾公司