專利名稱:用于維持共享高速緩存一致性的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本公開(kāi)內(nèi)容涉及處理系統(tǒng)及其相關(guān)聯(lián)的高速緩存裝置的領(lǐng)域。
背景技術(shù):
改善計(jì)算機(jī)或其他處理系統(tǒng)的性能,通常是改善整體吞吐量和/或提供更好的用戶體驗(yàn)。用于改善在系統(tǒng)中處理的指令總量的一種技術(shù)是增加系統(tǒng)中處理器的數(shù)量。然而,實(shí)現(xiàn)多處理(MP)系統(tǒng)通常不僅僅是要求將處理器并行互連。而是例如,需要將任務(wù)或程序分開(kāi),以便它們能夠跨越并行處理資源而執(zhí)行,也需要存儲(chǔ)器一致性系統(tǒng)等。
隨著邏輯元件因制造技術(shù)的進(jìn)步而縮小,將多個(gè)處理器集成在單個(gè)組件上變得更加切實(shí)可行,并且事實(shí)上,許多當(dāng)前的設(shè)計(jì)已經(jīng)在單個(gè)組件上實(shí)現(xiàn)了多個(gè)處理器(“多核心處理器”)。除了集成與每個(gè)處理器核心(processor core)緊密相關(guān)聯(lián)的任意高速緩存器外,多核心處理器還通常集成某個(gè)附加的高速緩沖存儲(chǔ)器,并且使用多種技術(shù)來(lái)維持跨越多核心處理器設(shè)備內(nèi)的層級(jí)的一致性。
例如,在一個(gè)作為現(xiàn)有技術(shù)的處理器中,與每個(gè)處理器核心相關(guān)聯(lián)的一級(jí)(L1)高速緩存器作為寫直通(write through)高速緩存器來(lái)實(shí)現(xiàn),如此使得共享二級(jí)(L2)高速緩存器通過(guò)每個(gè)L1來(lái)接收所有的修改。從每個(gè)L1的寫操作被記入到L2高速緩存器的隊(duì)列中。當(dāng)結(jié)構(gòu)操作命中有效的L2目錄條目時(shí),指定探聽(tīng)處理器僅使用L2內(nèi)容(包括潛在的任意排隊(duì)的條目)來(lái)響應(yīng)探聽(tīng)。雖然使用寫直通協(xié)議是已知的,與使用回寫協(xié)議和/或眾所周知的4狀態(tài)MESI(修改(Modified)、獨(dú)占(Exclusive)、共享(Shared)、無(wú)效(Invalid))協(xié)議相比,在某些環(huán)境下在性能上處于劣勢(shì),但是使用寫直通協(xié)議可消除對(duì)作為現(xiàn)有技術(shù)的多核心處理器中的L1高速緩存器的交叉詢問(wèn)的需要。在沒(méi)有L1高速緩存器間的交叉詢問(wèn)的情況下,在L1高速緩存器間可不提供探聽(tīng)總線,并且不會(huì)出現(xiàn)L1到L1的傳遞。
作為現(xiàn)有技術(shù)的處理器也為其L2高速緩存器而執(zhí)行修改的MESI協(xié)議,所述修改的MESI協(xié)議具有三個(gè)“修改”狀態(tài),以及兩個(gè)“共享”狀態(tài)和新的“標(biāo)記”狀態(tài)。修改后的狀態(tài)M、Me和Mu對(duì)應(yīng)于修改狀態(tài),修改后的獨(dú)占狀態(tài)和修改后的非請(qǐng)求(unsolicited)狀態(tài)。修改后的獨(dú)占和非請(qǐng)求狀態(tài)兩者都表明數(shù)據(jù)有效。此外,修改后的獨(dú)占和非請(qǐng)求狀態(tài)兩者都由處理器經(jīng)由專門的指令來(lái)請(qǐng)求保留數(shù)據(jù)而產(chǎn)生。
在另一種作為現(xiàn)有技術(shù)的多核心處理器中,兩個(gè)L1高速緩存器也由L2高速緩存器分離。在所述現(xiàn)有技術(shù)的處理器中,核心邏輯與L2高速緩存器控制邏輯直接鏈接,并且與專用L1直接鏈接。由此,L1和L2中的一致性查找可同時(shí)開(kāi)始;然而,L2控制邏輯將與第一核心相關(guān)聯(lián)的L1和與第二核心相關(guān)聯(lián)的L1相分離。因此,每個(gè)處理器專用的并且相關(guān)聯(lián)的L1高速緩存器不再互相鏈接。由此,在L1高速緩存器之間不存在直接的交叉詢問(wèn),并且沒(méi)有直接的L1到L1的數(shù)據(jù)傳送。
通過(guò)舉例的方式來(lái)舉例說(shuō)明本發(fā)明,但是本發(fā)明不由附圖中的圖中的實(shí)現(xiàn)方式來(lái)限定。
圖1舉例說(shuō)明包括有探聽(tīng)總線的處理系統(tǒng)的一個(gè)實(shí)施例,所述探聽(tīng)總線使核心高速緩存器彼此耦合并且使核心高速緩存器耦合到共享高速緩存器。
圖2舉例說(shuō)明包括有芯片多處理器的系統(tǒng)的一個(gè)實(shí)施例,所述芯片多處理器具有探聽(tīng)總線并且執(zhí)行共享高速緩存一致性協(xié)議。
圖3a-3f舉例說(shuō)明了依照一個(gè)實(shí)施例的共享和專用高速緩存器的各種狀態(tài)轉(zhuǎn)變。
圖4舉例說(shuō)明包括有芯片多處理器的系統(tǒng)的另一個(gè)實(shí)施例,所述芯片多處理器以多狀態(tài)協(xié)議執(zhí)行多個(gè)專用高速緩存器,并且以多狀態(tài)共享高速緩存協(xié)議來(lái)執(zhí)行共享高速緩存器。
圖5舉例說(shuō)明包括清除線共享邏輯的一個(gè)實(shí)施例。
具體實(shí)施例方式
隨后的描述將說(shuō)明用于芯片多處理器或多處理器系統(tǒng)的共享高速緩存一致性的方法和設(shè)備的實(shí)施例。在隨后的描述中,眾多的具體細(xì)節(jié)是為了提供對(duì)本發(fā)明的更徹底的理解而提出的。然而,本領(lǐng)域技術(shù)人員將理解的是,在沒(méi)有這些具體細(xì)節(jié)的情況下也可實(shí)施本發(fā)明。
所公開(kāi)的某些實(shí)施例使用了專用的并且在某些例子中的內(nèi)部探聽(tīng)接口,以便允許在多個(gè)內(nèi)部專用高速緩存器和共享高速緩存器之間的探聽(tīng)操作以及數(shù)據(jù)交換。某些實(shí)施例執(zhí)行具有兩個(gè)不同修改狀態(tài)的高速緩存協(xié)議。這些和其他實(shí)施例可用于具有多個(gè)處理器核心和相關(guān)聯(lián)的專用高速緩存器、連同共享高速緩存器的芯片多處理器中。某些實(shí)施例提供了數(shù)據(jù)不一致的快速解決方案,減少了從共享高速緩存器讀取數(shù)據(jù)到核心的等待時(shí)間,和/或減少了在專用高速緩存器到專用高速緩存器的傳遞情況中存儲(chǔ)器訪問(wèn)的等待時(shí)間。
圖1舉例說(shuō)明包括探聽(tīng)總線130的處理系統(tǒng)的一個(gè)實(shí)施例。在某些實(shí)施例中,圖1中的處理系統(tǒng)可以是芯片多處理器。芯片多處理器是包含多個(gè)處理核心的單個(gè)集成電路或單個(gè)模塊。每個(gè)處理核心是能夠執(zhí)行指令的處理器。圖1的實(shí)施例包括N個(gè)處理核心,即核心100-1至100 N。每個(gè)處理核心100-1至100-N都分別包括與之相關(guān)聯(lián)并耦合到其上的專用高速緩存器,即核心高速緩存器110-1至110-N。
“專用”高速緩存器是與一個(gè)或多個(gè)處理器核心相關(guān)聯(lián)的高速緩存器,其中處理器核心通常將可高速緩存的存儲(chǔ)器的存儲(chǔ)器事務(wù)提供給專用高速緩存器,并且不只是在探聽(tīng)或詢問(wèn)周期的環(huán)境下,然而其他非相關(guān)聯(lián)的處理器或處理器核心通常將周期作為詢問(wèn)或監(jiān)聽(tīng)周期提供給專用高速緩存器。通常,如圖1所示的實(shí)施例中的情況那樣,單個(gè)專用高速緩存器可與單個(gè)核心相關(guān)聯(lián)。然而,在某些實(shí)施例中,高速緩存器可被多個(gè)核心聽(tīng)專用。
如圖1所示,核心高速緩存器可以是M級(jí)高速緩存器,這意味著這些高速緩存器無(wú)需是一級(jí)高速緩存器,而更可以是一級(jí)高速緩存器或是在高速緩存器層級(jí)中更高級(jí)別的高速緩存器,諸如二級(jí)高速緩存器、三級(jí)高速緩存器等。此外,核心高速緩存器可以是使指令高速緩存器和數(shù)據(jù)高速緩存器一致的高速緩存器,或者可使指令高速緩存器或數(shù)據(jù)高速緩存器一致的高速緩存器。另外,兩個(gè)分離的高速緩存器(例如,指令和數(shù)據(jù)高速緩存器)能夠被相同地處理。由此,術(shù)語(yǔ)數(shù)據(jù)、數(shù)據(jù)元件、信息或信息元件可互換地使用以用來(lái)表示指令或數(shù)據(jù)。
每個(gè)高速緩存器110-1至110-N都耦合到探聽(tīng)總線130上。此外,共享高速緩存器120(M+1級(jí)高速緩存器)耦合到探聽(tīng)總線130上。共享高速緩存器120還耦合到互連(interconnect)140上?;ミB140可以是多點(diǎn)總線或者可以是點(diǎn)到點(diǎn)接口,以便與其他處理器、存儲(chǔ)器、存儲(chǔ)器接口或其他代理相連接。同樣地,點(diǎn)到點(diǎn)互連或多點(diǎn)總線類型互連可在不同的實(shí)施例中用于探聽(tīng)總線130。
在一個(gè)實(shí)施例中,高速緩存器110-1至110-N以及共享高速緩存器120執(zhí)行交叉詢問(wèn)或探聽(tīng)操作,以便在探聽(tīng)總線130上維持?jǐn)?shù)據(jù)一致。這種用于探聽(tīng)的專用總線或接口可減輕在互連140上的信息擁塞。在一個(gè)實(shí)施例中,探聽(tīng)總線130是制作在芯片多處理器所在芯片上的總線(on-die bus)。因此,交叉詢問(wèn)可以以高頻執(zhí)行,所述頻率在某些情況下可以和核心操作頻率一樣高。此外,外部訪問(wèn)可限于在所述芯片上的多個(gè)核心和所述共享高速緩存器間的無(wú)法滿足的請(qǐng)求。在一個(gè)實(shí)施例中,高速緩存器可利用傳統(tǒng)的MESI(修改、獨(dú)占、共享、無(wú)效)協(xié)議或其他已知的或其他可用的協(xié)議。在其他實(shí)施例中,如下文進(jìn)一步討論的那樣,不同的多狀態(tài)協(xié)議可用于共享高速緩存器。
圖2舉例說(shuō)明包括芯片多處理器的系統(tǒng)的實(shí)施例,所述芯片多處理器具有探聽(tīng)總線,并執(zhí)行共享高速緩存一致性協(xié)議。在圖2所示的實(shí)施例中,處理器200通過(guò)接口邏輯230與存儲(chǔ)器控制器240耦合。存儲(chǔ)器控制器240與存儲(chǔ)器250耦合。存儲(chǔ)器250能夠存儲(chǔ)將由處理器200使用的數(shù)據(jù)以及將其緩存到不同高速緩存器中。
處理器200包括接口邏輯230,以便將信息傳送到存儲(chǔ)器控制器240(或某個(gè)其他總線代理)。多種已知的或其他可用類型的接口邏輯和互連都可用于將不同的組件耦合到一起。處理器200進(jìn)一步包括第一核心205-1以及第二核心205-2。第一核心具有相關(guān)聯(lián)的核心高速緩存器210-1,且第二核心具有相關(guān)聯(lián)的核心高速緩存器210-2。在本實(shí)施例中,核心高速緩存器依照MESI協(xié)議進(jìn)行操作,不過(guò)在其他實(shí)施例中,可以使用其他協(xié)議來(lái)操作。核心高速緩存器210-1和210-2分別具有控制邏輯215-1和215-2,以便維持一致性并且處理常規(guī)的高速緩存器控制和通信任務(wù)。高速緩存器210-1和210-2兩者都耦合到共享高速緩存器220,所述共享高速緩存器220還包括其自身的控制邏輯225。高速緩存器210-1、210-2和220都耦合到探聽(tīng)總線227,以便如根據(jù)圖1在前描述的那樣執(zhí)行交叉詢問(wèn)和數(shù)據(jù)交換。
在本實(shí)施例中,共享高速緩存器220根據(jù)共享高速緩存協(xié)議來(lái)操作。根據(jù)共享高速緩存協(xié)議,可使用兩個(gè)修改狀態(tài)來(lái)描述高速緩存線(cache line)。可使用修改過(guò)時(shí)(modified stale MStale)狀態(tài)來(lái)表示當(dāng)共享高速緩存器220具有高速緩存線的過(guò)時(shí)拷貝時(shí)的情況。當(dāng)處理器高速緩存器210-1或210-2中的一個(gè)修改高速緩存線時(shí),共享高速緩存器常會(huì)有修改的線的過(guò)時(shí)拷貝??墒褂眯薷淖罱截?modified most recent copy,MMRC)狀態(tài)來(lái)表示當(dāng)共享高速緩存器包含修改的線的最近拷貝時(shí)的情況。可使用共享狀態(tài)來(lái)表明當(dāng)多個(gè)高速緩存器具有在它們的任何一個(gè)中都沒(méi)有被修改的數(shù)據(jù)時(shí)的情況,而無(wú)效狀態(tài)僅表明數(shù)據(jù)不是有效的。由此,與傳統(tǒng)的MESI協(xié)議相比,在本實(shí)施例中已經(jīng)消除了獨(dú)占(E)狀態(tài),并且已經(jīng)將M狀態(tài)分成了兩個(gè)不同的M狀態(tài)。
表1共享高速緩存協(xié)議狀態(tài)
將能夠理解的是,可將高速緩存線以不同的方式維持或標(biāo)記為特定的狀態(tài)。例如,可以使用標(biāo)記位來(lái)表示不同的狀態(tài)。這種標(biāo)記或狀態(tài)位可與每個(gè)高速緩存線一道被存儲(chǔ)。所述狀態(tài)位還可被單獨(dú)存儲(chǔ)在單獨(dú)的存儲(chǔ)器陣列中。此外,協(xié)議狀態(tài)位可與關(guān)于高速緩存線的其他信息組合在一起,并且以編碼或其他形式被存儲(chǔ)。高速緩存線的最終處理還可受到其他位或設(shè)置的影響,所述其他位或設(shè)置諸如存儲(chǔ)器鍵入寄存器(memory typing register)等等。
圖3a舉例說(shuō)明了依照一個(gè)實(shí)施例在共享和專用高速緩存器的第一組條件下第一組狀態(tài)的轉(zhuǎn)變。在圖3a中描述的情形中,在第一種情況中,L1高速緩存器中的高速緩存線以無(wú)效狀態(tài)開(kāi)始,并且在L2高速緩存器中對(duì)應(yīng)于同一存儲(chǔ)單元的高速緩存線以修改最近拷貝狀態(tài)開(kāi)始,如框300所示。在第二種情況中,L1中的高速緩存線以無(wú)效或修改狀態(tài)開(kāi)始,且L2中的對(duì)應(yīng)于同一存儲(chǔ)單元的高速緩存線以修改過(guò)時(shí)狀態(tài)開(kāi)始,如框301所示。如框302中所示,在這兩種情況下,核心都對(duì)高速緩存線進(jìn)行寫操作。
如框305所示,在第一種情況中,在L1中發(fā)生未命中,并且在一個(gè)實(shí)施例中使用了寫分配政策,從而使得L1獲得高速緩存線(來(lái)自于L2)并且將該高速緩存線維持在修改狀態(tài)中。由于在該情況下,所述高速緩存線以修改最近拷貝狀態(tài)被存儲(chǔ)在L2中,故而L2發(fā)生命中,并且L2中的線的狀態(tài)被改變?yōu)樾薷倪^(guò)時(shí)狀態(tài)。例如,對(duì)L2的所有權(quán)周期的讀操作可以向L1提供數(shù)據(jù),并在L2中觸發(fā)從修改最近拷貝狀態(tài)到修改過(guò)時(shí)狀態(tài)的轉(zhuǎn)變。如框322所示,該情形導(dǎo)致L1高速緩存器使其高速緩存線一直處于修改狀態(tài),且L2高速緩存器使其高速緩存線一直處于修改過(guò)時(shí)狀態(tài),這是由于L1具有最近修改過(guò)的數(shù)據(jù)。根據(jù)由L1遵守的回寫協(xié)議,L1可不向L2或其余存儲(chǔ)器層級(jí)傳送已修改的數(shù)據(jù),直到其被逐出(evict)或探聽(tīng)命中該高速緩存線為止。
在第二種情況下,在框302中核心對(duì)L1執(zhí)行寫操作將導(dǎo)致L1如框310中所示那樣修改數(shù)據(jù),而L2將高速緩存線維持在修改過(guò)時(shí)狀態(tài)。如果L1中的高速緩存線處于無(wú)效狀態(tài),那么它轉(zhuǎn)變到修改狀態(tài),而如果L1中的高速緩存線處于修改狀態(tài),那么它維持在修改狀態(tài),如框310中所示。在某些實(shí)施例中,可不通知L2在L1中發(fā)生了對(duì)高速緩存線的寫操作,并因此L2完全不作任何處理,結(jié)果導(dǎo)致了高速緩存線維持在修改過(guò)時(shí)狀態(tài)。由此,L1和L2的作為結(jié)果的高速緩存線的狀態(tài)分別為修改狀態(tài)和修改過(guò)時(shí)狀態(tài),如框322所示。
圖3b依照一個(gè)實(shí)施例舉例說(shuō)明了在第二組條件下的第二組狀態(tài)的轉(zhuǎn)變。如框330所示,L1高速緩存器中的高速緩存線以修改(臟,dirty)狀態(tài)開(kāi)始,并且在L2高速緩存器中對(duì)應(yīng)于同一存儲(chǔ)單元的高速緩存線以修改過(guò)時(shí)狀態(tài)開(kāi)始。在本實(shí)施例中,當(dāng)L1逐出(框332)時(shí),將發(fā)生L2命中(框334),并且最后的高速緩存器狀態(tài)將如框336中所示。特別的是,該情形是由L1高速緩存線逐出以及L2從L1獲得最近拷貝而產(chǎn)生的。由此,將L1中的高速緩存線設(shè)置為無(wú)效狀態(tài),而L2中的高速緩存線轉(zhuǎn)變到修改最近拷貝狀態(tài)。
圖3c依照一個(gè)實(shí)施例舉例說(shuō)明了在第三組條件下的第三組狀態(tài)的轉(zhuǎn)變。如框340所示,在L1高速緩存器的一個(gè)高速緩存器中的高速緩存線以修改狀態(tài)開(kāi)始,而所有其他L1高速緩存器中的高速緩存線以無(wú)效狀態(tài)開(kāi)始,并且在L2高速緩存器中對(duì)應(yīng)于同一存儲(chǔ)單元的高速緩存線以修改過(guò)時(shí)狀態(tài)開(kāi)始。接下來(lái),如框342所示,發(fā)生L2替換。L2替換導(dǎo)致了來(lái)自于L2的數(shù)據(jù)的逐出并導(dǎo)致將該數(shù)據(jù)回寫到存儲(chǔ)器250。作為這一回寫的結(jié)果,L2高速緩存器條目被無(wú)效。當(dāng)然,如果所述條目正在被逐出以便為新線騰出空位,則所述新線可稍后變?yōu)橛行?。如?40中所示,由于L2的數(shù)據(jù)處于修改過(guò)時(shí)狀態(tài),因而斷定根據(jù)L1 MESI協(xié)議,其中一個(gè)L1高速緩存器包含處于修改狀態(tài)的高速緩存線。因此,如框344中所示,執(zhí)行L1高速緩存器的探聽(tīng)以便提取修改的數(shù)據(jù),并且如果所述修改的數(shù)據(jù)存在于任一L1高速緩存器中,則無(wú)效所述高速緩存線。曾經(jīng)具有處于修改狀態(tài)的高速緩存線的L1中的所述高速緩存線被無(wú)效。由此,如框344所示,在L1和L2高速緩存器兩者中的高速緩存線的狀態(tài)都變?yōu)闊o(wú)效,并且通過(guò)L1高速緩存器的探聽(tīng)而接收到的數(shù)據(jù)可進(jìn)行被回寫,如框345所示。
圖3d舉例說(shuō)明了與圖3c相似的情形,除了L2高速緩存器中的高速緩存線的狀態(tài)最初是修改最近拷貝狀態(tài),如框346中所示(由于L2具有最近拷貝狀態(tài)故而L1高速緩存器中的狀態(tài)是無(wú)效的)。如參考圖3c中框342所論述的那樣,如框348中所示,發(fā)生L2替換。作為在框348中L2替換的結(jié)果,再次如框349中所示,L1和L2高速緩存器兩者中的高速緩存線的狀態(tài)都變?yōu)闊o(wú)效。然而,在該情況下,由于L2高速緩存器中的高速緩存線的狀態(tài)最初是修改最近拷貝狀態(tài),因而L2包含最近拷貝,并且不必對(duì)L1高速緩存器做任何詢問(wèn)。由此,如框349所示,不執(zhí)行對(duì)L1高速緩存器的探聽(tīng),并且如框350所示,將來(lái)自L2的數(shù)據(jù)回寫到存儲(chǔ)器。
在圖3c所示的情況中,因?yàn)樵谄渲幸粋€(gè)L1高速緩存器中出現(xiàn)修改的線,故而執(zhí)行了探聽(tīng)。在圖3d中所示的情況中,因?yàn)楣蚕鞮2高速緩存器包含了數(shù)據(jù)的最近拷貝,故而沒(méi)有執(zhí)行對(duì)L1高速緩存器的探聽(tīng)。在某些實(shí)施例中,在圖3d所示的環(huán)境(即L1狀態(tài)為無(wú)效,L2狀態(tài)為修改最近拷貝)下,人們可能希望對(duì)與除了提出請(qǐng)求的處理器以外的處理器相關(guān)聯(lián)的L1高速緩存器運(yùn)行無(wú)效周期。例如,如果處理器核心能夠執(zhí)行推測(cè)性(speculative)裝入并維持裝入緩沖區(qū),那么可將數(shù)據(jù)以修改的形成保存在裝入緩沖區(qū)中。此外,該數(shù)據(jù)可以是從L1高速緩存器逐出的數(shù)據(jù)。接下來(lái),如果不同的處理器試圖寫高速緩存線,那么它會(huì)經(jīng)歷未命中(L1中的線是無(wú)效的,L2的狀態(tài)是修改最近拷貝狀態(tài)),并且試圖獲得高速緩存線的所有權(quán)以執(zhí)行所請(qǐng)求的寫操作。盡管具有L2高速緩存器包含了處于修改最近狀態(tài)的數(shù)據(jù)這樣的事實(shí),也不能夠確保所述數(shù)據(jù)不再出現(xiàn)在推測(cè)性裝入緩沖區(qū)或其他緩沖結(jié)構(gòu)中。因此,在某些實(shí)施例中,為其他L1高速緩存器生成無(wú)效探聽(tīng)周期可能是十分有益的。
圖3e依照一個(gè)實(shí)施例舉例說(shuō)明了L2包含處于修改過(guò)時(shí)狀態(tài)的隱含高速緩存線的情況時(shí),對(duì)外部無(wú)效探聽(tīng)的處理。在某些實(shí)施例中,其他探聽(tīng)操作可相似地被處理,而無(wú)效探聽(tīng)的例子是作為狀態(tài)改變探聽(tīng)操作的廣泛分類的代表而給出的。外部無(wú)效探聽(tīng)可通過(guò)接口邏輯240來(lái)接收,并且可來(lái)源于其他總線代理(未示出),諸如其他處理器、輸入/輸出(I/O)代理、直接存儲(chǔ)器存取代理等。外部無(wú)效探聽(tīng)指示地址,且該探聽(tīng)的隱含的線是對(duì)應(yīng)于該地址的線。如框351中所示,在L1高速緩存器中,高速緩存線的狀態(tài)在一個(gè)L1高速緩存器中是修改狀態(tài)而在其他L1高速緩存器中是無(wú)效狀態(tài),且L2高速緩存線的狀態(tài)是修改過(guò)時(shí)狀態(tài)。在框352中,外部無(wú)效探聽(tīng)由L2接收。作為外部無(wú)效探聽(tīng)的結(jié)果,將L1和L2高速緩存器中的高速緩存線的狀態(tài)都設(shè)置為無(wú)效狀態(tài),如框354中所示。由于L2僅包含過(guò)時(shí)數(shù)據(jù),故而依照L1高速緩存器的MESI協(xié)議,其中一個(gè)L1高速緩存器包含修改的數(shù)據(jù)。因此,還如框354所示,執(zhí)行對(duì)L1高速緩存器的探聽(tīng)周期。如框356所示,修改的數(shù)據(jù)由其中一個(gè)L1高速緩存器提供以滿足外部探聽(tīng)。
對(duì)于其他類型的探聽(tīng)操作來(lái)說(shuō),作為探聽(tīng)的結(jié)果,可將高速緩存線的狀態(tài)設(shè)置為其他狀態(tài)。例如,探聽(tīng)操作可指示高速緩存器將高速緩存線的狀態(tài)改變?yōu)楣蚕?S)狀態(tài),有效地發(fā)送命令到該高速緩存器以便將所述線中的數(shù)據(jù)維持在共享狀態(tài)。如框354中所示,響應(yīng)強(qiáng)制轉(zhuǎn)變到共享狀態(tài)的探聽(tīng),發(fā)生這種到共享狀態(tài)的轉(zhuǎn)變而不是發(fā)生到無(wú)效狀態(tài)的轉(zhuǎn)變。
此外,其他的實(shí)施例可實(shí)現(xiàn)集中的高速緩存器目錄,以減少對(duì)探聽(tīng)個(gè)別L1高速緩存器的需要。例如,用于共享高速緩存器的高速緩存器目錄還可跟蹤在其他L1高速緩存器中的高速緩存線的狀態(tài)。在其他實(shí)施例中,高速緩存器目錄可為不同的L1高速緩存器而被維持。使用這種高速緩存器目錄將消除對(duì)所有L1高速緩存器發(fā)送單個(gè)探聽(tīng)周期的需要。代替地,高速緩存器目錄將表明哪些L1高速緩存器應(yīng)該接收該無(wú)效探聽(tīng)。
圖3f舉例說(shuō)明了與圖3e相似的情況的外部無(wú)效探聽(tīng)的處理,除了L2包含處于修改最近拷貝狀態(tài)的隱含高速緩存線。如框360中所示,在L1高速緩存器中的高速緩存線的狀態(tài)是無(wú)效,且L2高速緩存器中的高速緩存線的狀態(tài)是修改最近拷貝狀態(tài)。在框362中,外部無(wú)效探聽(tīng)由L2接收。作為外部無(wú)效探聽(tīng)的結(jié)果,將L1和L2高速緩存器中的高速緩存線的狀態(tài)設(shè)置為無(wú)效,如框364中所示。由于L2包含最近數(shù)據(jù),故而響應(yīng)內(nèi)部無(wú)效探聽(tīng)請(qǐng)求,通過(guò)從L2高速緩存器返回最近和修改的數(shù)據(jù)來(lái)滿足外部探聽(tīng),如框366所示。因此,在返回?cái)?shù)據(jù)以滿足外部探聽(tīng)周期之前,提供給L1高速緩存器的探聽(tīng)周期是不需要的。此外,其他類型的探聽(tīng)(除無(wú)效探聽(tīng)之外)可如上述那樣相似地處理。
表2M-狀態(tài)概述
圖4舉例說(shuō)明了包括芯片多處理器的系統(tǒng)的另一個(gè)實(shí)施例,所述芯片多處理器依照多狀態(tài)協(xié)議來(lái)執(zhí)行多個(gè)專用高速緩存器,并且依照多狀態(tài)共享高速緩存協(xié)議執(zhí)行共享高速緩存器。圖4的實(shí)施例舉例說(shuō)明了處理器400-1在某些實(shí)施例中可以不包括內(nèi)部探聽(tīng)總線。此外,圖4的實(shí)施例還舉例說(shuō)明了多個(gè)芯片多處理器400-1至400-4可耦合到一起以形成多芯片多處理器系統(tǒng)。在一個(gè)實(shí)施例中,4個(gè)處理器400-1至400-4可以是相同的。4個(gè)處理器400-1至400-4如由多點(diǎn)總線401耦合那樣來(lái)示出;然而,點(diǎn)到點(diǎn)或其他互連技術(shù)也可使用。此外,諸如存儲(chǔ)器和I/O設(shè)備的附加組件通常也出現(xiàn)在系統(tǒng)中。
處理器400-1包括接口邏輯430,以便經(jīng)由所提供的互連(在示例性的實(shí)施例中如多點(diǎn)總線401)進(jìn)行通信。處理器400-1包括N個(gè)核心405-1至405-N,所述N個(gè)核心的每一個(gè)都具有它們自己的專用高速緩存器,分別為410-1至410-N,所述專用高速緩存器與接口邏輯430相耦合。還提供了更高級(jí)的共享高速緩存器420,并且該共享高速緩存器420與接口邏輯430耦合。各種高速緩存器都可支持如前述的高速緩存協(xié)議。在本實(shí)施例中,處理器間的接口邏輯和互連參與一致性檢查,要多于采用內(nèi)部探聽(tīng)總線的實(shí)施例。在本實(shí)施例中,高速緩存器間的所有探聽(tīng)循環(huán)都經(jīng)過(guò)接口邏輯430來(lái)加以處理,并且返回到多點(diǎn)總線401或其他適合的(例如,點(diǎn)到點(diǎn))互連。
圖5舉例說(shuō)明在某些實(shí)施例中使用的一個(gè)附加特征。在圖5所示的實(shí)施例中,芯片多處理器的核心500-N可包括清除線共享邏輯517。如圖示的那樣,核心500-N可包括高速緩存器510(例如,如前述的MESI協(xié)議的高速緩存器)。高速緩存器510包括控制邏輯515,所述控制邏輯515的一部分是清除線共享邏輯517。高速緩存器510可通過(guò)探聽(tīng)互連522與其他高速緩存器和更高級(jí)的共享高速緩存器相耦合。此外,所述高速緩存器可通過(guò)第二互連524與外部接口耦合。
清除線共享邏輯517可通過(guò)將正確的信息發(fā)送到其他高速緩存器來(lái)提供性能改善??蓪iT用來(lái)處理探聽(tīng)通信量和數(shù)據(jù)交換的內(nèi)部探聽(tīng)互連522的存在,為這種高速緩存器到高速緩存器的傳遞提供了更多帶寬,所述高速緩存器到高速緩存器的傳遞會(huì)可能會(huì)不是很理想地占用系統(tǒng)帶寬,所述系統(tǒng)為兩個(gè)探聽(tīng)目的使用一條總線或互連,以便從存儲(chǔ)器層級(jí)中的更高級(jí)別中檢索數(shù)據(jù)。清除線共享邏輯517引起控制邏輯515在不同于只是逐出的情況下將來(lái)自L1高速緩存器的高速緩存線寫回到其他高速緩存器。也就是說(shuō),清除線共享邏輯517將提供高速緩存線到其他高速緩存器中,其中所述高速緩存線隨后至少被臨時(shí)維持在共享高速緩存器內(nèi)(而不是剛被逐出的線)。
在一個(gè)實(shí)施例中,清除線共享邏輯517提供數(shù)據(jù)以滿足在探聽(tīng)互連522上的探聽(tīng)周期。也就是說(shuō),如果高速緩存器檢測(cè)一探聽(tīng)周期,其中能夠給所述探聽(tīng)周期提供有效數(shù)據(jù),那么該高速緩存器響應(yīng)所述探聽(tīng)周期以提供該數(shù)據(jù)(與等待存儲(chǔ)器層級(jí)中更高的級(jí)別來(lái)提供該數(shù)據(jù)相對(duì))。在另外的實(shí)施例中,L1高速緩存器僅作為寫直通高速緩存器來(lái)操作。在另一個(gè)的實(shí)施例中,當(dāng)帶寬允許時(shí),清除線共享邏輯517有機(jī)會(huì)將數(shù)據(jù)回寫到其他高速緩存器。在又一個(gè)實(shí)施例中,在各種條件下和/或響應(yīng)探聽(tīng)總線擁塞,清除線共享邏輯可被配置以用于將線回寫到其他高速緩存器和/或存儲(chǔ)器的各種組合。在一個(gè)實(shí)施例中,每個(gè)專用高速緩存器都包括清除線共享邏輯517。
數(shù)據(jù)在核心間的主動(dòng)傳遞在某些情況下有益于減少存儲(chǔ)器訪問(wèn)的等待時(shí)間以及帶寬的消耗。例如,一個(gè)核心試圖訪問(wèn)它的專用高速緩存器和共享L2高速緩存器并且在兩種情況下都未命中將是可能的,而不管不同核心包含所需要的數(shù)據(jù)這樣的事實(shí)。人們所希望的是,在核心間傳遞數(shù)據(jù),以避免必須通過(guò)給外部接口生成周期或者通過(guò)訪問(wèn)L2高速緩存器來(lái)提供數(shù)據(jù)。
各種傳統(tǒng)的讀和寫策略可以在各種實(shí)施例中使用。例如,在某些例子中可使用在寫策略上的分配,以便當(dāng)發(fā)生對(duì)線的寫操作時(shí),將高速緩存線寫入高速緩存器。此外,從低級(jí)高速緩存器的讀取操作可以或不會(huì)引起更高級(jí)的高速緩存器被填充(即,在某些實(shí)施例中可以或可以不包含更高級(jí)的高速緩存器)。
此外,設(shè)計(jì)可經(jīng)歷各種階段,從創(chuàng)建到仿真到制造。表示設(shè)計(jì)過(guò)程的數(shù)據(jù)可以以多種方式來(lái)表示所述設(shè)計(jì)過(guò)程。首先,由于在仿真中十分有用,硬件可以使用硬件描述語(yǔ)言或其他功能描述語(yǔ)言來(lái)表示。此外,具有邏輯和/或晶體管門電路的電路級(jí)模塊,可在設(shè)計(jì)過(guò)程的某些階段產(chǎn)生。此外,多數(shù)設(shè)計(jì)在某些階段達(dá)到了表示在硬件模塊中各種設(shè)備的物理設(shè)置的數(shù)據(jù)級(jí)別。在使用常規(guī)的半導(dǎo)體制造工藝的情況中,表示硬件模塊的數(shù)據(jù)可以是指定在不同掩模層上的各個(gè)特征的出現(xiàn)或缺乏的數(shù)據(jù),所述掩模層是用于制造集成電路的掩模的掩模層。在設(shè)計(jì)過(guò)程的任意表示中,數(shù)據(jù)可存儲(chǔ)在任意形式的機(jī)器可讀介質(zhì)中。被調(diào)制或另外生成的用于發(fā)送這種信息的光波或電波,存儲(chǔ)器或者諸如磁盤的磁或光的存儲(chǔ)器,都是機(jī)器可讀介質(zhì)。這些介質(zhì)中的任意一種都可“攜帶”所述設(shè)計(jì)信息。
由此,已經(jīng)公開(kāi)了用于芯片多處理器或多處理器系統(tǒng)的共享高速緩存一致性的方法和設(shè)備的技術(shù)。雖然已經(jīng)描述并且在附圖中示出了特定的示例性實(shí)施例,但是應(yīng)該理解的是,這種實(shí)施例僅僅是對(duì)具有廣泛范圍的本發(fā)明的舉例說(shuō)明,而非對(duì)本發(fā)明的限制,并且此發(fā)明不限于所示出的以及所描述的具體結(jié)構(gòu)和布置,這是由于本領(lǐng)域技術(shù)人員在學(xué)習(xí)了此公開(kāi)內(nèi)容的基礎(chǔ)上,能夠作出各種其他的修改。
權(quán)利要求
1.一種設(shè)備,包括多個(gè)處理器核心,每個(gè)處理器核心包含專用高速緩存器;一共享高速緩存器;與每個(gè)專用高速緩存器和所述共享高速緩存器相耦合的內(nèi)部探聽(tīng)總線,用于將數(shù)據(jù)從每個(gè)專用高速緩存器傳送到其他專用高速緩存器和所述共享高速緩存器。
2.如權(quán)利要求1所述的設(shè)備,其特征在于每個(gè)專用高速緩存器執(zhí)行多狀態(tài)高速緩存協(xié)議,所述多狀態(tài)高速緩存協(xié)議允許修改的數(shù)據(jù)被保留在專用高速緩存器內(nèi),直到探聽(tīng)周期命中與所述修改的數(shù)據(jù)相關(guān)聯(lián)的地址為止。
3.如權(quán)利要求2所述的設(shè)備,其特征在于所述共享高速緩存器能夠執(zhí)行與所述多狀態(tài)高速緩存協(xié)議不同的共享高速緩存器多狀態(tài)高速緩存協(xié)議,所述共享高速緩存器多狀態(tài)高速緩存協(xié)議執(zhí)行多個(gè)狀態(tài),所述多個(gè)狀態(tài)包括第一修改狀態(tài),在該狀態(tài)下,高速緩存器具有修改的線的過(guò)時(shí)拷貝;第二修改狀態(tài),在該狀態(tài)下,高速緩存器具有修改的線的最近拷貝。
4.如權(quán)利要求3所述的設(shè)備,其特征在于所述多個(gè)狀態(tài)進(jìn)一步包括共享狀態(tài),在該狀態(tài)下,所述高速緩存器存儲(chǔ)也由其他高速緩存器存儲(chǔ)的線;無(wú)效狀態(tài),其中,每個(gè)高速緩存線是在第一修改狀態(tài)、第二修改狀態(tài)、共享狀態(tài)或無(wú)效狀態(tài)中的一個(gè)狀態(tài)下被存儲(chǔ)的。
5.如權(quán)利要求3所述的設(shè)備,其特征在于由所述多個(gè)處理器核心的第一處理器向?qū)?yīng)于第一地址的高速緩存線進(jìn)行的寫操作,能夠在與所述第一處理器相關(guān)聯(lián)的第一專用高速緩存器中將所述高速緩存線設(shè)置為修改狀態(tài),并且能夠?qū)?duì)應(yīng)于所述第一地址的共享高速緩存線設(shè)置為所述共享高速緩存器多狀態(tài)高速緩存協(xié)議的第一修改狀態(tài)。
6.如權(quán)利要求3所述的設(shè)備,其特征在于由所述多個(gè)處理器核心的第一處理器對(duì)與第一地址相對(duì)應(yīng)于的高速緩存線的逐出,能夠?qū)⑺龈咚倬彺婢€回寫到所述共享高速緩存器,能夠?qū)⑺龈咚倬彺婢€設(shè)置為無(wú)效狀態(tài),并且能夠?qū)?duì)應(yīng)于第一地址的共享高速緩存線設(shè)置為共享高速緩存器多狀態(tài)高速緩存協(xié)議的第二修改狀態(tài)。
7.如權(quán)利要求4所述的設(shè)備,其特征在于所述多狀態(tài)高速緩存協(xié)議是MESI協(xié)議,并且其中所述多個(gè)狀態(tài)由第一修改狀態(tài)、第二修改狀態(tài)、共享狀態(tài)和無(wú)效狀態(tài)組成。
8.如權(quán)利要求3所述的設(shè)備,其特征在于每個(gè)專用高速緩存器進(jìn)一步包括清除線共享邏輯,用于響應(yīng)探聽(tīng)周期將高速緩存線提供給其他的專用高速緩存器。
9.如權(quán)利要求1所述的設(shè)備,其特征在于所述設(shè)備包括在機(jī)器可讀介質(zhì)上攜帶的機(jī)器可讀數(shù)據(jù)。
10.一種設(shè)備,包括多個(gè)處理器核心;多個(gè)高速緩存器,所述多個(gè)高速緩存器中的第一高速緩存器用于將多個(gè)高速緩存線維持在多個(gè)狀態(tài)中一個(gè)狀態(tài)中,所述多個(gè)狀態(tài)包括第一修改狀態(tài),用于表明修改的線的最近拷貝;第二修改狀態(tài),用于表明修改的線的過(guò)時(shí)拷貝。
11.如權(quán)利要求10所述的設(shè)備,其特征在于所述多個(gè)狀態(tài)進(jìn)一步包括共享狀態(tài)和無(wú)效狀態(tài),其中每個(gè)高速緩存線具有相關(guān)聯(lián)的高速緩存器狀態(tài)條目,所述高速緩存器狀態(tài)條目用于表明第一修改狀態(tài)、第二修改狀態(tài)、共享狀態(tài)或無(wú)效狀態(tài)中的一個(gè)狀態(tài)。
12.如權(quán)利要求10所述的設(shè)備,進(jìn)一步包括內(nèi)部一致性總線,它與所述多個(gè)高速緩存器中的每個(gè)高速緩存器相耦合,用于在所述多個(gè)高速緩存器之間進(jìn)行通信。
13.如權(quán)利要求11所述的設(shè)備,其特征在于所述多個(gè)高速緩存器的其他高速緩存器依照第二協(xié)議來(lái)維持高速緩存線,所述第二種協(xié)議包括第二多個(gè)狀態(tài)。
14.如權(quán)利要求13所述的設(shè)備,其特征在于所述多個(gè)高速緩存器的其他高速緩存器是多個(gè)專用N級(jí)高速緩存器,并且其中所述多個(gè)高速緩存器中的第一高速緩存器是共享N+1級(jí)高速緩存器。
15.如權(quán)利要求14所述的設(shè)備,其特征在于所述第二協(xié)議包括MESI協(xié)議。
16.一種方法,包括在內(nèi)部探聽(tīng)總線上驅(qū)動(dòng)對(duì)多個(gè)內(nèi)部專用高速緩存器和共享高速緩存器的探聽(tīng)周期;經(jīng)由外部總線驅(qū)動(dòng)對(duì)存儲(chǔ)器的高速緩存器未命中周期。
17.如權(quán)利要求16所述的方法,進(jìn)一步包括為所述的共享高速緩存器維持四個(gè)狀態(tài)的第一高速緩存協(xié)議,其中所述四個(gè)狀態(tài)的第一高速緩存協(xié)議包括修改最近拷貝狀態(tài)、修改過(guò)時(shí)狀態(tài)、共享狀態(tài)以及無(wú)效狀態(tài)。
18.如權(quán)利要求17所述的方法,進(jìn)一步包括為所述多個(gè)內(nèi)部專用高速緩存器維持四個(gè)狀態(tài)的第二高速緩存協(xié)議,其中所述四個(gè)狀態(tài)的第二高速緩存協(xié)議包括修改狀態(tài)、獨(dú)占狀態(tài)、共享狀態(tài)和無(wú)效狀態(tài)。
19.如權(quán)利要求16所述的方法,進(jìn)一步包括將第一高速緩存線轉(zhuǎn)變到第一修改狀態(tài),在該狀態(tài)下,第一高速緩存線包含高速緩存線的過(guò)時(shí)拷貝,而另一個(gè)高速緩存器包含與所述第一高速緩存線相關(guān)聯(lián)的信息的修改拷貝。
20.如權(quán)利要求19所述的方法,進(jìn)一步包括將第二高速緩存線轉(zhuǎn)變到第二修改狀態(tài),在該狀態(tài)下,所述第二高速緩存線包含與所述高速緩存線相關(guān)聯(lián)的信息的最近拷貝。
21.如權(quán)利要求16所述的方法,進(jìn)一步包括在所述多個(gè)內(nèi)部專用高速緩存器之間的共享線。
22.一種系統(tǒng),包括多核心處理器,所述多核心處理器包括多個(gè)處理器;多個(gè)相關(guān)聯(lián)高速緩存器;共享高速緩存器;一致性邏輯,用于將多個(gè)高速緩存線維持在多個(gè)狀態(tài)中的一個(gè)狀態(tài)中,所述多個(gè)狀態(tài)包括最近拷貝修改狀態(tài)以及過(guò)時(shí)修改狀態(tài),所述一致性邏輯用于將具有對(duì)應(yīng)于第一地址的第一數(shù)據(jù)條目維持在所述過(guò)時(shí)修改狀態(tài)中,并且將具有對(duì)應(yīng)于第二地址的第二數(shù)據(jù)條目維持在所述最近拷貝修改狀態(tài)中;與多核心處理器相耦合的存儲(chǔ)器,所述存儲(chǔ)器用于存儲(chǔ)所述第一地址處的第三數(shù)據(jù)條目和第二地址處的第四數(shù)據(jù)條目,所述存儲(chǔ)器可選擇地進(jìn)行更新以便將所述第一數(shù)據(jù)條目復(fù)制到所述第一地址。
23.如權(quán)利要求22所述的系統(tǒng),其特征在于所述多核心處理器進(jìn)一步包括與所述多個(gè)高速緩存器相耦合的內(nèi)部探聽(tīng)總線,以允許響應(yīng)在內(nèi)部探聽(tīng)總線上的探聽(tīng)周期而進(jìn)行所述多個(gè)高速緩存器間的數(shù)據(jù)傳送。
24.如權(quán)利要求22所述的系統(tǒng),其特征在于所述系統(tǒng)是服務(wù)器計(jì)算機(jī)系統(tǒng)。
25.如權(quán)利要求23所述的系統(tǒng),進(jìn)一步包括用于響應(yīng)內(nèi)部探聽(tīng)總線上的探聽(tīng)周期而共享所述多個(gè)相關(guān)聯(lián)高速緩存器間的線的邏輯。
全文摘要
用于芯片多處理器或多處理器系統(tǒng)的共享高速緩存一致性的方法和設(shè)備。在一個(gè)實(shí)施例中,多核心處理器包括多個(gè)處理器核心,每個(gè)核心都具有專用高速緩存器和共享高速緩存器。將內(nèi)部探聽(tīng)總線耦合到每個(gè)專用高速緩存器和共享高速緩存器,以便將數(shù)據(jù)從每個(gè)專用高速緩存器傳送到其他專用高速緩存器和所述共享高速緩存器。在另一個(gè)的實(shí)施例中,設(shè)備包括多個(gè)處理器核心和多個(gè)高速緩存器。多個(gè)高速緩存器之一將高速緩存線維持在兩個(gè)不同的修改狀態(tài)中。第一修改狀態(tài)表明修改的高速緩存線的最近拷貝,而第二修改狀態(tài)表明修改的高速緩存線的過(guò)時(shí)拷貝。
文檔編號(hào)G06F12/08GK1609823SQ20031011983
公開(kāi)日2005年4月27日 申請(qǐng)日期2003年10月23日 優(yōu)先權(quán)日2003年10月23日
發(fā)明者V·彭特科夫斯基, V·加格, N·S·伊耶爾, J·克沙瓦 申請(qǐng)人:英特爾公司