專利名稱:利用目錄信息擴(kuò)展高速緩存一致性監(jiān)聽廣播協(xié)議的制作方法
利用目錄信息擴(kuò)展高速緩存一致性監(jiān)聽廣播協(xié)議直量現(xiàn)代計(jì)算機(jī)系統(tǒng)通常由許多組件形成,這些組件耦合在一起以在中央處理器(一般被稱為中央處理單元,CPU)的控制下交互操作和執(zhí)行多種處理功能。除了作為系統(tǒng)存儲器來提供對處理單元所使用的信息的存儲的附加半導(dǎo)體設(shè)備之外,大多數(shù)系統(tǒng)通常包括半導(dǎo)體設(shè)備的集合,這些半導(dǎo)體設(shè)備包括處理器、外圍設(shè)備、專用處理單元等。在許多系統(tǒng)中,存在多個(gè)存儲器,每個(gè)存儲器可與給定處理器關(guān)聯(lián),從而用作相應(yīng)處理器的本地存儲器。然而,位于與第一處理器相關(guān)聯(lián)的存儲器中的數(shù)據(jù)可能需要由另一處理器訪問。為了維持跨系統(tǒng)的數(shù)據(jù)一致性,可在系統(tǒng)內(nèi)實(shí)現(xiàn)高速緩存一致性協(xié)議,諸如基于目錄的協(xié)議或基于監(jiān)聽廣播的協(xié)議。在基于目錄的高速緩存一致性協(xié)議中,保護(hù)存儲器的代理(通常稱為歸屬代理,HA)共同地維護(hù)目錄,該目錄跟蹤在系統(tǒng)中每個(gè)高速緩存線在何地以及在何種狀態(tài)下被高速緩存。尋求獲得高速緩存線的高速緩存代理(CA)發(fā)送請求至HA,HA查找目錄并僅僅向被目錄指示為可具有線的高速緩存副本的那些CA發(fā)送消息(一般被稱為監(jiān)聽)。然而,該查找會增加等待時(shí)間,因?yàn)闅w屬代理直至目錄查找結(jié)束時(shí)才會發(fā)起監(jiān)聽。替代地,在廣播協(xié)議中,通常不存在目錄,并且CA或HA向所有對等高速緩存代理廣播監(jiān)聽。在高速緩存代理之一具有所請求數(shù)據(jù)的最新副本的情況下,這類協(xié)議可改進(jìn)等待時(shí)間。然而,如果監(jiān)聽等待時(shí)間長于存儲器讀取等待時(shí)間,那么當(dāng)從存儲器獲取數(shù)據(jù)時(shí)等待時(shí)間可能更長,因?yàn)樵谶@種情況下數(shù)據(jù)被保持直至所有監(jiān)聽響應(yīng)已被接收且已由HA處理。即,來自存儲器的數(shù)據(jù)返回被保持直至接收到來自所有代理的監(jiān)聽響應(yīng)。附圖簡沭
圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的處理器的框圖。圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)的框圖。圖3是根據(jù)本發(fā)明實(shí)施例的群集系統(tǒng)的框圖。圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的流程圖。圖5是根據(jù)本發(fā)明實(shí)施例執(zhí)行的操作的流程圖。圖6是根據(jù)本發(fā)明另一實(shí)施例的目錄的一部分的框圖。圖7是根據(jù)本發(fā)明另一實(shí)施例的處理器的框圖。詳細(xì)描沭在多個(gè)實(shí)施例中,可實(shí)現(xiàn)進(jìn)一步包括目錄以使等待時(shí)間減少的基于監(jiān)聽廣播協(xié)議的系統(tǒng),特別是在數(shù)據(jù)相對于請求方存在于本地的情況。即,在多個(gè)實(shí)施例中,除了目錄信息之外,可實(shí)現(xiàn)監(jiān)聽廣播協(xié)議,使得當(dāng)基于目錄信息可確定所請求的數(shù)據(jù)不存在于遠(yuǎn)程節(jié)點(diǎn)中時(shí),可提供與監(jiān)聽相關(guān)聯(lián)的存儲器請求(例如,讀取請求)的服務(wù)并且在監(jiān)聽處理結(jié)束之前返回所請求的數(shù)據(jù)。一般地,對于監(jiān)聽廣播協(xié)議,響應(yīng)于存儲器請求,利用與存儲器請求并行進(jìn)行的監(jiān)聽請求探測可具有線副本的所有對等高速緩存代理。一般地,在對等高速緩存代理具有線的最新副本的情況下,這種協(xié)議可提供更快響應(yīng)(例如,更低等待時(shí)間)。如以下將要進(jìn)一步討論的,監(jiān)聽廣播可由高速緩存代理發(fā)送(源監(jiān)聽請求),或者由歸屬代理響應(yīng)于從高速緩存代理接收到讀取請求而發(fā)送。一般地,源監(jiān)聽協(xié)議可改進(jìn)高速緩存到高速緩存轉(zhuǎn)移的等待時(shí)間,而源于歸屬代理的監(jiān)聽協(xié)議可允許將監(jiān)聽廣播和其它歸屬代理事務(wù)配對。然而,在大的系統(tǒng)中,一致性處理所花的時(shí)間可能比從存儲器取出所請求的數(shù)據(jù)的等待時(shí)間要長。因此從存儲器取出的信息可被保持直至所有響應(yīng)被收集,如此存儲器等待時(shí)間可由遠(yuǎn)程監(jiān)聽響應(yīng)延遲周期選通,這尤其會影響本地存儲器請求。替代地,在實(shí)現(xiàn)基于目錄和非監(jiān)聽廣播的流程的系統(tǒng)中,存儲器請求被發(fā)送至歸屬代理,歸屬代理查找目錄以確定所請求的高速緩存線是否存在于對等代理中。如果是,那么經(jīng)由監(jiān)聽請求來探測對等代理。如果替代地目錄信息指示沒有對等高速緩存代理包括所請求數(shù)據(jù)的副本,那么不需要發(fā)送監(jiān)聽請求。這樣可減小互連帶寬。根據(jù)多個(gè)實(shí)施例,可實(shí)現(xiàn)這兩個(gè)系統(tǒng)的混合。即,可實(shí)現(xiàn)進(jìn)一歩利用存在于目錄中的信息的基于監(jiān)聽廣播的協(xié)議。盡管本發(fā)明的范圍在這方面不受限制,但是目錄信息可對應(yīng)于最少量的信息,例如存儲在與所請求的數(shù)據(jù)相對應(yīng)的存儲器條目的糾錯(cuò)編碼(ECC)位中的信息。該系統(tǒng)可被稱為目錄輔助監(jiān)聽(DAS)廣播協(xié)議。因此基于存在于目錄條目中的最少信息,當(dāng)可確定沒有遠(yuǎn)程代理保持所請求數(shù)據(jù)的副本吋,歸屬代理可減小與存儲器請求相關(guān)聯(lián)的等待時(shí)間?,F(xiàn)在參見圖1,所示為根據(jù)本發(fā)明的一個(gè)實(shí)施例的處理器的框圖。如圖1所示,處理器100包括至少ー個(gè)高速緩存代理邏輯110 (—般被稱為“高速緩存代理”)以及ー個(gè)歸屬邏輯120 (—般被稱為“歸屬代理”)。注意術(shù)語“設(shè)備”或“代理”是通用的且可用于描述耦合到鏈路的任何電氣組件。“鏈路”或“互連”一般被定義為建立用于消息(即置于預(yù)定格式的信息)的通信路徑的信息承載介質(zhì)。鏈路或互連可以是有線物理介質(zhì)(例如,總線、一條或多條電線、跡線、電纜等)或無線介質(zhì)(例如,結(jié)合無線信令技術(shù)的空中)。根據(jù)ー個(gè)實(shí)施例,術(shù)語“歸屬代理”用于指示表示系統(tǒng)存儲器的一部分的代理,并且可被寬泛地定義為提供資源用于高速緩存代理訪問存儲器、以及基于來自高速緩存代理的請求解決沖突、維持排序等的設(shè)備。如此,歸屬代理可以是存儲器的一部分的指定擁有方并且充當(dāng)關(guān)聯(lián)存儲器的一致性處理和請求的最終仲裁方。歸屬代理包括跟蹤器122和用于如下所述的每個(gè)高速緩存代理的數(shù)據(jù)緩沖器?!案櫰鳌笔强删彌_與各種代理相關(guān)聯(lián)的請求的存儲。如以下進(jìn)ー步討論的,歸屬代理還可包括一個(gè)或多個(gè)計(jì)數(shù)器或者可與其相關(guān)聯(lián)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,“高速緩存代理” 一般表示可請求和高速緩存存儲器數(shù)據(jù)副本(以及修改該數(shù)據(jù))的高速緩存邏輯。這種高速緩存代理可涵蓋適于將存儲器請求路由至歸屬代理的高速緩存控制器。在一個(gè)實(shí)施例中,歸屬代理120可支持多達(dá)三個(gè)高速緩存代理,一個(gè)高速緩存代理用于多個(gè)核130中的每ー個(gè),并且ー個(gè)高速緩存代理用于輸入/輸出中樞(IOH)寫高速緩存(未在圖1中示出)。核130可使用管芯上互連并且經(jīng)由高速緩存控制器125連接至末級高速緩存(LLC)140o包括LLC和核高速緩存的高速緩存域由高速緩存代理邏輯110和高速緩存控制器125封裝。該邏輯將底層高速緩存域?qū)崿F(xiàn)為針對高速緩存一致性系統(tǒng)的單個(gè)高速緩存代理。保護(hù)與本地存儲器控制器155連接的存儲器的歸屬代理邏輯在歸屬邏輯120中實(shí)現(xiàn)。使用切換邏輯155將高速緩存代理邏輯110和歸屬代理邏輯120連接至鏈路邏輯160。鏈路邏輯160可支持一條或多條點(diǎn)對點(diǎn)(PtP)鏈路175。鏈路邏輯160可例如根據(jù)源監(jiān)聽廣播協(xié)議或基于歸屬代理的廣播監(jiān)聽協(xié)議發(fā)送基于廣播的監(jiān)聽至其它處理器。各實(shí)施例可在許多不同的系統(tǒng)類型中使用。在某些實(shí)現(xiàn)中,除了目錄信息之外還包括廣播監(jiān)聽的基于廣播的監(jiān)聽協(xié)議的混合處理可能尤其適于具有非均勻存儲器體系結(jié)構(gòu)(NUMA)的系統(tǒng)。現(xiàn)在參見圖2,所示為根據(jù)本發(fā)明一個(gè)實(shí)施例的系統(tǒng)的框圖。如圖2中所示的,系統(tǒng)200包括多個(gè)插槽21(^-21(^每個(gè)插槽可包括諸如以上關(guān)于圖1所述的處理器,但是其它實(shí)現(xiàn)的確也是可能的。每個(gè)插槽可通過PtP鏈路耦合至其它插槽。在一個(gè)實(shí)施例中,PtP鏈路可提供根據(jù)丨fuel 快速路徑互連(QPI)協(xié)議的通信。QPI協(xié)議是包括多層——包括物理層、鏈路層以及協(xié)議層——的高速緩存一致性協(xié)議。通過使用該協(xié)議,一致性通信可在包括多個(gè)高速緩存代理的系統(tǒng)中進(jìn)行。該協(xié)議提供了多個(gè)通道和虛擬網(wǎng)絡(luò)上沿低等待時(shí)間鏈路的各種通信,從而提供了經(jīng)由PtP鏈路耦合在一起的設(shè)備之間的通信。當(dāng)然,本發(fā)明的范圍在這方面不受限制,并且在其它實(shí)施例中,PtP鏈路可遵循另一通信協(xié)議。此外,每個(gè)插槽可耦合至系統(tǒng)存儲器的本地部分(例如,由可包括動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)的多個(gè)雙列直插式存儲器模塊(DIMM)構(gòu)成)。特別地,如圖2中所示的,每個(gè)插槽210可耦合至關(guān)聯(lián)的存儲器控制器2200 - 2203,存儲器控制器2200 - 2203又可耦合至系統(tǒng)存儲器230.0 - 2303的相應(yīng)本地部分。每個(gè)插槽可具有被配置成本地存儲器的系統(tǒng)存儲器的一部分。通過使用本發(fā)明的各實(shí)施例,當(dāng)基于目錄信息(例如,存儲在系統(tǒng)存儲器的相應(yīng)本地部分中)可確定遠(yuǎn)程節(jié)點(diǎn)(例如,其它插槽或其它系統(tǒng)組件中的一個(gè)或多個(gè))中不存在請求的數(shù)據(jù)的副本時(shí),可直接履行待決請求(例如,讀取請求)而不等待監(jiān)聽處理完成。注意,根據(jù)本發(fā)明的實(shí)施例的基于DAS監(jiān)聽的一致性處理可基于應(yīng)用利用來控制。即,在一些系統(tǒng)中,當(dāng)NUMA類應(yīng)用正在執(zhí)行使得大多數(shù)存儲器請求去往本地存儲器時(shí),可將該混合方法用于廣播和目錄協(xié)議系統(tǒng)。替代地,在基于應(yīng)用利用可確定許多存儲器請求以遠(yuǎn)程節(jié)點(diǎn)為目標(biāo)的情況下,可作出判定以替代地根據(jù)例如純監(jiān)聽廣播協(xié)議執(zhí)行一致性處理。然而,注意即使當(dāng)沒有目錄輔助的該純監(jiān)聽廣播流程發(fā)生時(shí),如果目錄輔助的處理將稍后發(fā)生,那么目錄可經(jīng)由對目錄的更新消息來維持一致。在一些實(shí)施例中,計(jì)數(shù)器可與本地存儲器請求以及遠(yuǎn)程存儲器請求相關(guān)聯(lián),并且當(dāng)遠(yuǎn)程存儲器請求的數(shù)量超過特定閾值時(shí)(例如,依據(jù)總存儲器請求的預(yù)定百分比),一致性處理可從DAS監(jiān)聽廣播協(xié)議切換至純監(jiān)聽廣播協(xié)議或純目錄協(xié)議。往回參見圖1,每個(gè)歸屬代理可包括計(jì)數(shù)器,該計(jì)數(shù)器用于其相應(yīng)本地存儲器部分來存儲針對該部分的存儲器請求的計(jì)數(shù)?;谶@些計(jì)數(shù)器的數(shù)值,其中這些數(shù)值可指示應(yīng)用的請求模式是否針側(cè)重本地或遠(yuǎn)程存儲器請求,歸屬代理可根據(jù)目錄輔助的監(jiān)聽廣播協(xié)議和非目錄輔助的監(jiān)聽廣播協(xié)議中所選的一個(gè)來執(zhí)行一致性處理。在一個(gè)實(shí)施例中,存儲器23(^可以是主存儲器,而存儲器2303可以是例如用于存儲鏡像數(shù)據(jù)的輔存儲器。盡管在圖2的實(shí)施例中示為獨(dú)立的存儲器控制器組件,但是在某些實(shí)現(xiàn)中存儲器控制器可被集成在插槽內(nèi),諸如在圖1的處理器插槽中作為示例示出的那些。諸如圖2中所示的實(shí)現(xiàn)由此可用于可實(shí)現(xiàn)鏡像的插槽無膠配置。利用存儲器控制器220(和存儲器23(^)分配的數(shù)據(jù)可通過PtP鏈路被鏡像至存儲器控制器2303 (和存儲器2303)。然而,注意鏡像與目錄輔助的監(jiān)聽協(xié)議不相關(guān),其也可在非鏡像系統(tǒng)中實(shí)現(xiàn)。其中可使用各實(shí)施例的另一實(shí)現(xiàn)在圖3中示出。在圖3的實(shí)施例中,提供了群集系統(tǒng)。特別地,系統(tǒng)300包括多個(gè)群集SlOc1- 3103。每個(gè)群集可包括相應(yīng)的處理器、存儲器控制器和存儲器。進(jìn)而,每個(gè)群集可耦合至節(jié)點(diǎn)控制器(NC)320。因此,兩個(gè)插槽群集經(jīng)由節(jié)點(diǎn)控制器來連接。作為示例,數(shù)據(jù)可從群集SlOci (群集0-CPU0)被鏡像到群集3103 (群集 1-CPUl)。在圖3所示的實(shí)現(xiàn)中,當(dāng)使存儲器請求成為本地的(例如位于群集內(nèi))時(shí),可減少等待時(shí)間。這樣,當(dāng)本地請求方尋求訪問本地存儲器時(shí),所請求的信息可在監(jiān)聽處理完成之前被直接提供給請求方。該存儲器等待時(shí)間也可存在于作出遠(yuǎn)程讀取請求的情形中,并且可基于目錄信息確定沒有遠(yuǎn)程節(jié)點(diǎn)包括所請求數(shù)據(jù)的副本。現(xiàn)在參照圖4,示出的是根據(jù)本發(fā)明ー個(gè)實(shí)施例的方法的流程圖。如圖4所示,可例如通過使用歸屬代理邏輯來實(shí)現(xiàn)方法300,歸屬代理邏輯用于檢測傳入的對于本地存儲器的請求并且確定在監(jiān)聽處理完成之前是否可能取出所請求的數(shù)據(jù)并將其提供給請求方。如圖4所示,方法300可通過從請求方接收讀取請求開始(框310)。注意,該讀取請求可在系統(tǒng)的多個(gè)代理中接收并且轉(zhuǎn)發(fā)給與要讀取的存儲器位置相關(guān)聯(lián)的歸屬代理。該讀取請求可與請求方自己根據(jù)源監(jiān)聽廣播協(xié)議所發(fā)送的監(jiān)聽廣播相關(guān)聯(lián)。否則,歸屬代理可響應(yīng)于接收到讀取請求而生成監(jiān)聽廣播請求并將其發(fā)送至多個(gè)系統(tǒng)代理。在任一事件中,由此發(fā)送與讀取請求相關(guān)聯(lián)的監(jiān)聽廣播。如圖4所進(jìn)ー步示出的,在框320歸屬代理可訪問與監(jiān)聽請求的存儲器位置相關(guān)聯(lián)的目錄條目。盡管在一些實(shí)施例中歸屬代理可包括存儲最近或頻繁訪問的目錄條目的小高速緩存存儲器或者可與其相關(guān)聯(lián),但是在許多實(shí)現(xiàn)中該目錄條目可對應(yīng)于存儲在例如ECC或存儲器位置的其它可用位的存儲器內(nèi)信息。注意,這種對目錄條目的訪問可與對本地代理的監(jiān)聽請求和取回?cái)?shù)據(jù)自身兩者并行,因?yàn)槟夸洍l目可以是存儲器位置自身的一部分。注意,盡管在圖4的實(shí)現(xiàn)中,對本地代理的本地監(jiān)聽請求可并行發(fā)生,但是這不是必須的。替代地,可在針對NUMA類系統(tǒng)優(yōu)化的實(shí)現(xiàn)中執(zhí)行這種本地監(jiān)聽請求,其中大多數(shù)存儲器請求將針對本地存儲器。這樣,如以下將進(jìn)ー步討論的,可避免將信息存儲在對給定節(jié)點(diǎn)而言是本地的代理的有限目錄條目中的需要。這不僅減小了目錄條目的大小,而且減小了存儲器互連帶寬。仍然參見圖4,可基于所接收的信息(例如,目錄條目和任何本地監(jiān)聽響應(yīng))來確定所請求的存儲器位置是否沒有存在于遠(yuǎn)程節(jié)點(diǎn)(菱形框330)。即,在許多實(shí)施例中,目錄信息可用于指示與目錄條目相關(guān)聯(lián)的數(shù)據(jù)是否存在于系統(tǒng)的遠(yuǎn)程節(jié)點(diǎn)中。如以上所討論的,在特定優(yōu)化中,目錄條目可能無法指示數(shù)據(jù)是否存在于本地代理中。然而對于本地監(jiān)聽響應(yīng),存在最小等待時(shí)間,因此這類優(yōu)化可能是適當(dāng)?shù)模绕涫菍τ诨贜UMA的應(yīng)用。如果確定位置的副本不存在于遠(yuǎn)程節(jié)點(diǎn)中,那么控制傳遞至框340。在框340,所請求的數(shù)據(jù)可被轉(zhuǎn)發(fā)到請求方。在該數(shù)據(jù)轉(zhuǎn)移之后的某時(shí)間,監(jiān)聽處理可以完成(框350)。即,在數(shù)據(jù)已被發(fā)送至請求方之后,可執(zhí)行和完成用于處理來自不同代理的傳入監(jiān)聽響應(yīng)的多種監(jiān)聽處理。最后在框360,可將完成消息發(fā)送至請求方。注意,該完成消息不具有數(shù)據(jù),因?yàn)閿?shù)據(jù)先前已被發(fā)送。因此,在框340發(fā)送數(shù)據(jù)和在框360發(fā)送該完成消息之間的時(shí)間可對應(yīng)于用于處理該存儲器請求的減小的等待時(shí)間。注意,請求方在接收到完成消息之后可執(zhí)行多種操作,例如從請求隊(duì)列等清除該請求。仍參見圖4,如果替代地在菱形框330確定所請求信息的副本存在于遠(yuǎn)程節(jié)點(diǎn)中,那么控制替代地傳遞至框370,其中監(jiān)聽處理可以完成。最后在框380,可將帶有數(shù)據(jù)的完成消息發(fā)送至請求方。因此,去往請求方的帶有數(shù)據(jù)的該完成可發(fā)生在比以上所討論的在框340中執(zhí)行的更晚的時(shí)間。盡管在圖4的實(shí)施例中示出了該特定實(shí)現(xiàn),但應(yīng)理解本發(fā)明的范圍在這方面不受限制?,F(xiàn)在參見圖5,所示為根據(jù)本發(fā)明實(shí)施例示出在處理讀取請求中執(zhí)行的操作的示圖。如圖5所示,存在多個(gè)代理,即多個(gè)高速緩存代理CAl和CA2、節(jié)點(diǎn)控制器(NC)、歸屬代理(HA)以及存儲器(MEM)。如所示,事務(wù)流可通過高速緩存代理I發(fā)出讀取請求來開始。注意,與該讀取請求并行,高速緩存代理還發(fā)送監(jiān)聽請求,由此圖5所示視圖用于源監(jiān)聽廣播協(xié)議。如所示,監(jiān)聽請求可涉及系統(tǒng)的其它高速緩存代理,即CA2和NC,而讀取請求可涉及歸屬代理。響應(yīng)于該讀取請求,歸屬代理可執(zhí)行存儲器讀取(MemRd)。注意,除了從存儲器位置讀取所請求的數(shù)據(jù)之外,還可訪問相應(yīng)的目錄條目,該目錄條目可以是與所請求的數(shù)據(jù)相關(guān)聯(lián)且指示遠(yuǎn)程節(jié)點(diǎn)中存在數(shù)據(jù)副本的一個(gè)或多個(gè)位。如所示,發(fā)生存儲器取出的返回,使得歸屬代理接收數(shù)據(jù)(MemData)和指示,該指示通過目錄條目的一個(gè)或多個(gè)位來指示數(shù)據(jù)是干凈的(Clean_Dir),其在該實(shí)施例中意味著數(shù)據(jù)副本不存在于遠(yuǎn)程節(jié)點(diǎn)中。盡管圖5中未示出,應(yīng)當(dāng)理解除了執(zhí)行這種存儲器讀取和目錄讀取之外,歸屬代理還可并行地監(jiān)聽本地節(jié)點(diǎn)中的數(shù)據(jù)副本。因此由于目錄信息指示數(shù)據(jù)是干凈的,歸屬代理可在響應(yīng)數(shù)據(jù)返回(Data)中將數(shù)據(jù)直接發(fā)送至請求方。在該時(shí)刻之后進(jìn)一步看到,歸屬代理可從CA2和NC接收監(jiān)聽響應(yīng)(Rsp)0在處理指示這些代理不具有所請求數(shù)據(jù)的副本的這些響應(yīng)之后,歸屬代理可發(fā)送完成消息(Cmp)至請求方。如所示,第一高速緩存代理對數(shù)據(jù)的接收與對完成消息的稍后接收之間的時(shí)間可對應(yīng)于根據(jù)本發(fā)明實(shí)施例的等待時(shí)間減少。注意,盡管在圖5的實(shí)施例中示出了該特定實(shí)現(xiàn),但本發(fā)明的范圍在這方面不受限制。例如,假設(shè)來自對等高速緩存代理的響應(yīng)之一指示高速緩存代理包括所請求數(shù)據(jù)的副本(例如,處于排他狀態(tài)或修改狀態(tài))。在這種情況下,在目錄信息和監(jiān)聽響應(yīng)信息之間存在不一致。因此,可能會產(chǎn)生故障并且使處理機(jī)來處理這種一致不一致性,這可能是對錯(cuò)誤的指示,例如關(guān)于在有問題的存儲器位置之一處的單個(gè)位錯(cuò)誤?,F(xiàn)在參見圖6,所示出的是可利用具有對目錄的最少目錄寫入的實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例來執(zhí)行的多個(gè)事務(wù)的視圖。如所示,示出了多個(gè)事務(wù)410-450。對于每個(gè)事務(wù),具有在事務(wù)開始處的當(dāng)前目錄狀態(tài),請求方的節(jié)點(diǎn)類型(例如,本地(L)或遠(yuǎn)程(R)),以及請求類型(其中請求類型GO指示數(shù)據(jù)請求不具有對唯一擁有的請求,例如對于共享數(shù)據(jù)副本的只讀請求,以及Gl請求指示對寫入線或以其它方式修改線的擁有(例如RF0)請求)。此外,每個(gè)事務(wù)示出目錄寫入操作是否要發(fā)生,還示出確實(shí)發(fā)生此類寫入操作的目錄的新狀態(tài)。通過減少目錄寫入操作的數(shù)量,可減少存儲器互連帶寬。如所示,對于本地請求方發(fā)起的第一事務(wù)410,其具有的當(dāng)前目錄狀態(tài)是空閑,這意味著數(shù)據(jù)副本不存在于任何遠(yuǎn)程節(jié)點(diǎn),無論請求類型如何,目錄條目的狀態(tài)都不改變并且因而不會發(fā)生目錄寫入。對于由遠(yuǎn)程請求方發(fā)起的請求420,無論請求類型如何,目錄寫入都會發(fā)生,并且新的目錄狀態(tài)是現(xiàn)在遠(yuǎn)程擁有(R-Own)以指示數(shù)據(jù)副本存在于遠(yuǎn)程節(jié)點(diǎn)中。對于下一本地事務(wù)430,其中當(dāng)前目錄狀態(tài)是R-Owned,當(dāng)請求類型是GO (指示數(shù)據(jù)請求不具有對于唯一擁有的請求)時(shí),沒有目錄寫入發(fā)生。在事務(wù)440處,接收到其中當(dāng)前目錄狀態(tài)是R-Owned的本地請求,但是在這里請求是尋求擁有的Gl類型請求。因此,發(fā)生目錄寫入,并且新的目錄狀態(tài)返回到空閑,從而指示沒有數(shù)據(jù)的遠(yuǎn)程副本。最后在由遠(yuǎn)程請求方發(fā)起的事務(wù)450中,其中當(dāng)前目錄狀態(tài)是R-Own,無論請求類型如何,都沒有發(fā)生目錄寫入并且目錄條目的狀態(tài)被維持。注意,關(guān)于所有這些事務(wù),當(dāng)目錄處于空閑狀態(tài)時(shí)可實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的等待時(shí)間改善?;蛘?,在副本存在于共享狀態(tài)下的情況下,本地或遠(yuǎn)程讀取請求還可受益于等待時(shí)間改善。如上所述,特別是在服務(wù)器環(huán)境中,實(shí)施例可能特別適于基于NUMA的應(yīng)用,其中ー些應(yīng)用變成主要負(fù)荷?,F(xiàn)在參見圖7,所示為根據(jù)本發(fā)明的另ー個(gè)實(shí)施例的處理器的框圖。具體地,圖7示出處理器500,其是多核處理器并且可能特別適于基于服務(wù)器的應(yīng)用。如所示,處理器500包括多個(gè)核51(^-51(^盡管在圖7的實(shí)施例中示出具有特定數(shù)量的核,但是應(yīng)理解本發(fā)明的范圍在這方面不受限制。每個(gè)核可與私有存儲(例如,ー級或多級高速緩存存儲器)相關(guān)聯(lián)。另外,每個(gè)核被示為與一片共享的高速緩存存儲器相耦合,例如由多個(gè)片52(^ - 5209形成的末級高速緩存(LLC)。如所示,可經(jīng)由基于環(huán)的互連發(fā)生經(jīng)由不同核和高速緩存的通信,所述基于環(huán)的互連可以是雙向可伸縮環(huán)互連560。為了提供芯片外通信,可存在多個(gè)不同的端口和代理。具體地如所示,除了其它輸入輸出(I/O)端ロ575。- 575!之外,可存在多個(gè)PtP端ロ 570。- 5703。此外,為了提供尤其是用于NUMA應(yīng)用的改善的存儲器等待時(shí)間,實(shí)施例可提供利用多種處理器代理的高速緩存一致性協(xié)議。具體地如所示,路由器530耦合至ー對高速緩存代理535。- 535:。這些可表示管芯上核種類的高速緩存代理可耦合至相應(yīng)的歸屬代理540。- 540:,并且又可與相應(yīng)的存儲器控制器54 - 545:通信。進(jìn)而,這些存儲器控制器可例如經(jīng)由芯片外存儲器互連耦合至系統(tǒng)存儲器的本地部分,例如與處理器相耦合的ー個(gè)或多個(gè)DRAM。注意,芯片外存儲器 可包括根據(jù)本發(fā)明實(shí)施例的目錄條目,如圖6所示。在ー些實(shí)施例中,每個(gè)歸屬代理還可包括小的存儲部分,例如用于存儲特別熱的目錄信息的高速緩存,這些目錄信息用于被頻繁訪問或較近訪問的少量目錄條目。盡管在圖7的實(shí)施例中示出了該特定實(shí)現(xiàn),但應(yīng)理解本發(fā)明的范圍在這方面不受限制。各實(shí)施例可以用代碼實(shí)現(xiàn),并可存儲在其上存儲有指令的存儲介質(zhì)上,這些指令可用來對系統(tǒng)編程以執(zhí)行這些指令。存儲介質(zhì)可包括但不限于諸如盤之類的任何類型非瞬態(tài)存儲介質(zhì),盤包括軟盤、光盤、光碟、固態(tài)驅(qū)動(dòng)器(SSD)、緊湊盤只讀存儲器(CD-ROM)、可重寫緊湊盤(CD-RW)和磁光盤、諸如只讀存儲器(ROM)的半導(dǎo)體器件、諸如動(dòng)態(tài)隨機(jī)存取存儲器(DRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)之類的隨機(jī)存取存儲器(RAM)、可擦除可編程只讀存儲器(EPR0M)、閃存、電可擦除可編程只讀存儲器(EEPR0M)、磁卡或者光學(xué)卡、或適于存儲電子指令的任意其它類型的介質(zhì)。盡管本發(fā)明已針對有限數(shù)量的實(shí)施例作了描述,然而本領(lǐng)域技術(shù)人員將會從其中領(lǐng)會到許多修改和變型。所附權(quán)利要求g在覆蓋所有這樣的修改和變型,只要其落在本發(fā)明的真實(shí)精神和范圍內(nèi)。
權(quán)利要求
1.一種方法,包括: 在具有監(jiān)聽廣播協(xié)議的系統(tǒng)的歸屬代理中接收來自第一高速緩存代理的讀取請求,所述讀取請求針對存儲在與所述歸屬代理相關(guān)聯(lián)的存儲器位置處的信息; 確定與所述存儲器位置相關(guān)聯(lián)的目錄條目是否指示所述信息不存在于所述系統(tǒng)的遠(yuǎn)程高速緩存代理中;以及 如果是,則在關(guān)于所述讀取請求的監(jiān)聽處理完成之前將來自所述存儲器位置的所述信息發(fā)送至所述第一高速緩存代理。
2.如權(quán)利要求1所述的方法,其特征在于,還包括如果確定所述目錄條目指示所述信息存在于所述系統(tǒng)的遠(yuǎn)程高速緩存代理中,則在所述監(jiān)聽處理完成之前防止來自所述存儲器位置的信息發(fā)送至所述第一高速緩存代理。
3.如權(quán)利要求1所述的方法,其特征在于,還包括與向所述歸屬代理的所述讀取請求并行地將來自所述第一高速緩存代理的監(jiān)聽廣播請求發(fā)送至所述系統(tǒng)的多個(gè)高速緩存代理。
4.如權(quán)利要求3所述的方法,其特征在于,還包括在所述歸屬代理中接收對于所述監(jiān)聽廣播請求的多個(gè)監(jiān)聽響應(yīng),并且響應(yīng)于所述多個(gè)監(jiān)聽響應(yīng)完成所述監(jiān)聽處理。
5.如權(quán)利要求4所述的方法,其特征在于,還包括在完成所述監(jiān)聽處理之后將完成消息發(fā)送至所述第一高速緩存代理,使得所述讀取請求可被解除分配。
6.如權(quán)利要求1所述的方法,其特征在于,還包括在所述歸屬代理中接收來自第二高速緩存代理的針對與來自所述第一高速緩存代理的所述讀取請求所針對信息相同的信息的第二讀取請求,其中所述第二高速緩存代理屬于遠(yuǎn)程節(jié)點(diǎn),以及更新與所述存儲器位置相關(guān)聯(lián)的目錄條目以指示所述第二高速緩存代理包括所述信息的副本。
7.如權(quán)利要求1所述的方法,其特征在于,還包括響應(yīng)于所述讀取請求,將來自所述歸屬代理的本地監(jiān)聽請求發(fā)送到至少一個(gè)本地高速緩存代理,其中所述目錄條目不包括關(guān)于所述本地高速緩存代理的狀態(tài)信息。
8.一種系統(tǒng),包括: 第一處理器,包括第一高速緩存代理和用于保護(hù)存儲器的第一本地部分的第一歸屬代理; 第二處理器,所述第二處理器經(jīng)由具有監(jiān)聽廣播協(xié)議的互連耦合至所述第一處理器,所述第二處理器包括第二高速緩存代理和用于保護(hù)所述存儲器的第二本地區(qū)域的第二歸屬代理,其中所述第二歸屬代理用于從所述第一處理器接收讀取請求,所述讀取請求針對存儲在所述存儲器的所述第二本地區(qū)域中的數(shù)據(jù),并且如果與所述數(shù)據(jù)相關(guān)聯(lián)的目錄條目指示所述數(shù)據(jù)的副本不存在于所述系統(tǒng)的遠(yuǎn)程高速緩存代理中則在關(guān)于所述讀取請求的監(jiān)聽處理結(jié)束之前將所述數(shù)據(jù)發(fā)送至所述第一處理器;以及 所述存儲器耦合至第一處理器和所述第二處理器,其中所述存儲器用于存儲所述目錄條目。
9.如權(quán)利要求8所述的系統(tǒng),其特征在于,如果所述目錄條目指示所述數(shù)據(jù)不存在于遠(yuǎn)程高速緩存代理中,則所述第二歸屬代理更新與所述數(shù)據(jù)相關(guān)聯(lián)的目錄條目。
10.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述第二歸屬代理用于響應(yīng)于所述讀取請求產(chǎn)生廣播監(jiān)聽并且無需等待對所述目錄條目的訪問。
11.如權(quán)利要求8所述的系統(tǒng),其特征在于,如果確定所述目錄條目指示所述數(shù)據(jù)存在于遠(yuǎn)程高速緩存代理中,則所述第二歸屬代理在所述監(jiān)聽處理完成之前防止所述數(shù)據(jù)發(fā)送至所述第一高速緩存代理。
12.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述第一處理器用干與所述讀取請求并行地發(fā)送監(jiān)聽廣播請求至所述系統(tǒng)的多個(gè)高速緩存代理。
13.如權(quán)利要求12所述的系統(tǒng),其特征在于,所述第二歸屬代理用于接收對于所述監(jiān)聽廣播請求的多個(gè)監(jiān)聽響應(yīng),并且響應(yīng)于所述多個(gè)監(jiān)聽響應(yīng)完成所述監(jiān)聽處理。
14.如權(quán)利要求13所述的系統(tǒng),其特征在于,所述第二歸屬代理用于在將所述數(shù)據(jù)發(fā)送到所述第一處理 器之后且響應(yīng)于完成所述監(jiān)聽處理,將不具有所述數(shù)據(jù)的完成消息發(fā)送到所述第一處理器。
15.如權(quán)利要求8所述的系統(tǒng),其特征在干,還包括第一計(jì)數(shù)器和第二計(jì)數(shù)器,所述第ー計(jì)數(shù)器用于存儲與所述第一本地部分相關(guān)聯(lián)的存儲器請求的計(jì)數(shù),并且所述第二計(jì)數(shù)器用于存儲與所述第二本地部分相關(guān)聯(lián)的存儲器請求的計(jì)數(shù),并且其中如果所述第一計(jì)數(shù)器大于閾值水平則所述第二歸屬代理用于將一致性處理協(xié)議從目錄輔助的監(jiān)聽廣播協(xié)議切換到純監(jiān)聽廣播協(xié)議。
16.如權(quán)利要求8所述的系統(tǒng),其特征在于,所述第二歸屬代理響應(yīng)于所述讀取請求將本地監(jiān)聽請求從所述第二歸屬代理發(fā)送到所述第二高速緩存代理,其中所述目錄條目不包括關(guān)于所述第二高速緩存代理的狀態(tài)信息,所述目錄條目被存儲在所述第二本地部分中。
17.—種多核處理器,包括: 多個(gè)核,每個(gè)核與第一高速緩存代理或第二高速緩存代理相關(guān)聯(lián); 第一歸屬代理,用于保護(hù)存儲器的第一本地部分;以及 第二歸屬代理,用于保護(hù)所述存儲器的第二本地部分,其中如果應(yīng)用的請求模式側(cè)重于本地存儲器請求則所述第二歸屬代理用于根據(jù)目錄輔助的監(jiān)聽廣播協(xié)議執(zhí)行所述存儲器的所述第二本地 部分的一致性處理,否則根據(jù)非目錄輔助的監(jiān)聽廣播協(xié)議執(zhí)行一致性處理。
18.如權(quán)利要求17所述的多核處理器,其特征在于,根據(jù)所述目錄輔助的監(jiān)聽廣播協(xié)議,所述第二歸屬代理用于確定與存儲器請求相關(guān)聯(lián)的目錄條目是否指示所述存儲器請求的數(shù)據(jù)不存在于遠(yuǎn)程高速緩存代理中,并且如果是,則在關(guān)于所述讀取請求的監(jiān)聽處理完成之前將所述數(shù)據(jù)發(fā)送至請求方。
19.如權(quán)利要求18所述的多核處理器,其特征在于,如果所述目錄條目指示所述數(shù)據(jù)不存在于遠(yuǎn)程高速緩存代理中,則所述第二歸屬代理更新所述目錄條目,并且所述請求方是遠(yuǎn)程高速緩存代理。
20.如權(quán)利要求17所述的多核處理器,其特征在干,所述第二歸屬代理與第一計(jì)數(shù)器相關(guān)聯(lián)以存儲與所述第二本地部分相關(guān)聯(lián)的存儲器請求的計(jì)數(shù),以及與第二計(jì)數(shù)器相關(guān)聯(lián)以存儲與所述存儲器的其它本地部分相關(guān)聯(lián)的存儲器請求的計(jì)數(shù),并且基于所述第一計(jì)數(shù)器與所述第二計(jì)數(shù)器之間的比較從目錄輔助的監(jiān)聽廣播協(xié)議切換至非目錄輔助的監(jiān)聽廣播協(xié)議。
全文摘要
在一個(gè)實(shí)施例中,一種方法包括從第一高速緩存代理接收讀取請求,確定與存儲器位置相關(guān)聯(lián)的目錄條目是否指示信息不存在于遠(yuǎn)程高速緩存代理中,并且如果是,則在關(guān)于讀取請求的監(jiān)聽處理完成之前將來自存儲器位置的信息發(fā)送到第一高速緩存代理。描述并要求保護(hù)其他的實(shí)施例。
文檔編號G06F13/14GK103119568SQ201180045186
公開日2013年5月22日 申請日期2011年8月3日 優(yōu)先權(quán)日2010年8月20日
發(fā)明者S·科塔帕里, H·G·尼弗斯, R·帕爾, M·K·阿羅拉, D·納加拉 申請人:英特爾公司