專利名稱:高速緩存相干協(xié)議的推測分布式?jīng)_突解決的制作方法
相關(guān)申請本美國專利申請涉及以下同時提交的美國專利申請(1)申請?zhí)?0/XXXXXX(備案號P13983),2002年提交,標題為“用于多節(jié)點系統(tǒng)中的高速緩存相干的轉(zhuǎn)發(fā)狀態(tài)”;(2)申請?zhí)?0/XXXXXX(備案號P13984),2002年提交,標題為“用于多處理器系統(tǒng)中高速緩存相干的分級目錄”;(3)申請?zhí)?0/XXXXXX(備案號P13985),2002年提交,標題為“多處理器系統(tǒng)中高速緩存分級結(jié)構(gòu)的分級虛擬模型”;(4)申請?zhí)?0/XXXXXX(備案號P13986),2002年提交,標題為“用于高速緩存相干協(xié)議的非推測分布式?jīng)_突解決”。
領域本發(fā)明涉及高速緩沖存儲器。更具體來說,本發(fā)明涉及多高速緩存多處理器系統(tǒng)中的分布式?jīng)_突解決。
背景當電子系統(tǒng)包括多個高速緩沖存儲器時,必須保持可供使用的數(shù)據(jù)的有效性。這通常通過根據(jù)高速緩存相干協(xié)議處理數(shù)據(jù)來實現(xiàn)。隨著高速緩存和/或處理器數(shù)量的增加,保持高速緩存相干性的復雜度也增加。
當多個組件(例如高速緩沖存儲器、處理器)請求相同數(shù)據(jù)塊時,多個組件之間的沖突必須以保持數(shù)據(jù)有效性的方式來解決。當前的高速緩存相干協(xié)議通常具有負責沖突解決的單個組件。但是,隨著系統(tǒng)的復雜度增加,對用于沖突解決的單一組件的依賴性會降低整體系統(tǒng)性能。
圖1a到1e提供多節(jié)點系統(tǒng)中的沖突狀況的概念說明。節(jié)點110、120和130是對等節(jié)點,它們可在高速緩沖存儲器中存儲所請求數(shù)據(jù)(例如高速緩存行)的副本。歸屬節(jié)點140為所請求數(shù)據(jù)的歸屬(H)節(jié)點。在圖1a到1e的實例中,對等節(jié)點110和120存儲所請求數(shù)據(jù)的無效副本或者沒有存儲副本,對等節(jié)點130存儲沒有回寫到存儲器的所請求數(shù)據(jù)的已修改副本。歸屬節(jié)點在存儲器中存儲數(shù)據(jù)的原始副本或者在修改回寫到存儲器時存儲數(shù)據(jù)的已修改版本。
如圖1a所示,對等節(jié)點120發(fā)送“數(shù)據(jù)請求”消息以請求數(shù)據(jù)塊、例如高速緩存行的副本。“數(shù)據(jù)請求”消息被發(fā)送到對等節(jié)點110和對等節(jié)點130。但是,送往對等節(jié)點130的“數(shù)據(jù)請求”消息被延遲。延遲可能例如由于缺乏可用帶寬、緩沖考慮等而引起。
對等節(jié)點110以“無有效副本”消息來響應來自對等節(jié)點120的“數(shù)據(jù)請求”消息,它向?qū)Φ裙?jié)點120表明,對等節(jié)點110沒有所請求數(shù)據(jù)的有效副本。在對等節(jié)點120發(fā)送“數(shù)據(jù)請求”消息之后的某個時間,對等節(jié)點110向?qū)Φ裙?jié)點120和130發(fā)送“數(shù)據(jù)請求”消息,如圖1c所示,請求與對等節(jié)點120所請求的數(shù)據(jù)相同的數(shù)據(jù)。
對等節(jié)點120響應“數(shù)據(jù)請求”消息而向?qū)Φ裙?jié)點110提供“無有效副本”消息。對等節(jié)點130向?qū)Φ裙?jié)點110提供所請求數(shù)據(jù)。由對等節(jié)點130保持的數(shù)據(jù)副本(如果有的話)被標記為無效,以及由對等節(jié)點110存儲的數(shù)據(jù)副本被標記為“已修改”。
在對等節(jié)點130已經(jīng)響應來自對等節(jié)點110的“數(shù)據(jù)請求”并使數(shù)據(jù)副本無效之后的某個時間,對等節(jié)點130接收來自對等節(jié)點120的延遲“數(shù)據(jù)請求”消息,如圖1c所示。響應“數(shù)據(jù)請求”消息,對等節(jié)點130向?qū)Φ裙?jié)點120提供“無有效副本”消息。注意,由對等節(jié)點130存儲的數(shù)據(jù)的狀態(tài)從原始“數(shù)據(jù)請求”消息的時間改變?yōu)閷Φ裙?jié)點130響應“數(shù)據(jù)請求”消息的時間。
由于對等節(jié)點110和130以“無有效副本”消息響應來自對等節(jié)點120的“數(shù)據(jù)請求”消息,因此對等節(jié)點120在發(fā)現(xiàn)沒有所請求數(shù)據(jù)的有效高速緩存副本時向歸屬節(jié)點140請求數(shù)據(jù)副本。這樣,如圖1d所示,對等節(jié)點向歸屬節(jié)點140發(fā)送“讀取”消息。歸屬節(jié)點140從存儲器檢索所請求數(shù)據(jù),并向?qū)Φ裙?jié)點120提供該數(shù)據(jù)。對等節(jié)點120則以“獨占”狀態(tài)存儲所請求數(shù)據(jù)。
如圖1e所示,圖1a到1e所示的消息序列得到數(shù)據(jù)行的兩個不兼容副本。在所提供的實例中,對等節(jié)點110以“已修改”狀態(tài)存儲數(shù)據(jù)副本,對等節(jié)點120以“獨占”狀態(tài)存儲數(shù)據(jù)副本。但是,由對等節(jié)點120存儲的副本不是對等節(jié)點120專有的。這樣,多節(jié)點系統(tǒng)在某些情況下可能產(chǎn)生數(shù)據(jù)的不兼容副本,除非提供一種機制來解決高速緩存沖突。
附圖概述在附圖中通過舉例而不是限制的方式對本發(fā)明進行說明,附圖中,同樣的參考標號表示類似的元件。
圖1a到1e提供多節(jié)點系統(tǒng)中的沖突狀況的概念說明。
圖2a到2d提供共享行沖突的概念說明。
圖3a到3d提供由接近同時發(fā)出的請求所引起的共享行沖突的概念說明。
圖4a到4d提供由多個請求中一個的延遲所引起的共享行沖突的概念說明。
圖5a到5d提供無效行沖突的概念說明。
圖6a到6d提供由多個請求中一個的延遲所引起的無效行沖突的概念說明。
圖7是節(jié)點的一個實施例的框圖。
圖8是多處理器系統(tǒng)的一個實施例。
詳細說明描述多節(jié)點系統(tǒng)中分布式高速緩存相干性沖突解決的技術(shù)。為了便于說明,以下說明中提出了大量具體細節(jié),以便透徹地理解本發(fā)明。然而,本領域的技術(shù)人員十分清楚,即使沒有這些具體細節(jié),也可以實施本發(fā)明。另一方面,結(jié)構(gòu)和裝置以框圖形式來表示,以免使本發(fā)明含糊不清。
請求消息以下消息是來自請求節(jié)點的對數(shù)據(jù)/動作的請求。這些消息對系統(tǒng)的所有節(jié)點廣播。
“端口讀取行”(PRL)這是對數(shù)據(jù)段、例如高速緩存行的副本的請求。
“端口讀取無效行”(PRIL)這是在提供方節(jié)點的數(shù)據(jù)副本無效的情況下對數(shù)據(jù)段的副本的請求。這個消息也可稱作“對所有權(quán)的請求”。
“端口寫入行”(PWL)這個消息使數(shù)據(jù)(例如已修改高速緩存行)被寫入存儲器。這個消息也可稱作“臟驅(qū)逐”。
“端口無效行”(PIL)這個消息使指定數(shù)據(jù)的狀態(tài)從“共享”改變?yōu)椤蔼氄肌薄?br>
“端口寫入無效行”(PWIL)這個消息使數(shù)據(jù)被寫入存儲器,以及使數(shù)據(jù)的目標副本無效。
響應消息以下消息是響應上述請求而從對等(即非歸屬)節(jié)點發(fā)送到請求節(jié)點的消息。
“無效狀態(tài)確認”(IACK)這個消息是當發(fā)送響應的節(jié)點具有所請求數(shù)據(jù)的無效副本或者沒有所請求數(shù)據(jù)的副本時對請求(PRL、PRIL、PWL、PIL、PWIL)的響應。
“共享狀態(tài)確認”(SACK)這個消息是當發(fā)送響應的節(jié)點具有處于“共享”狀態(tài)的所請求數(shù)據(jù)的副本時對請求的響應。
“所接收數(shù)據(jù)的確認”(DACK)這個消息由請求節(jié)點發(fā)送到請求節(jié)點從其接收了數(shù)據(jù)的節(jié)點。它是在請求節(jié)點已經(jīng)向歸屬節(jié)點發(fā)送READ或CNCL消息并接收到來自歸屬節(jié)點的XFR/XFRI消息或ACK消息之后發(fā)送的。
“沖突”這個消息表明對于所請求的高速緩存行存在共同未決的請求。
到歸屬節(jié)點的消息這些消息由對等節(jié)點發(fā)送到歸屬節(jié)點。
“讀取(沖突)”這個消息向歸屬節(jié)點請求數(shù)據(jù)并列出沖突(如果有的話)。在所有響應由對等節(jié)點接收到之后,如果沒有所接收消息是DATA(數(shù)據(jù))消息,則發(fā)送這個消息。
“CNCL(沖突)”這個消息響應對等節(jié)點中的命中而發(fā)送到歸屬節(jié)點并列出沖突(如果有的話)。這個消息取消歸屬節(jié)點的預取操作。在所有響應由對等節(jié)點接收到并且其中之一為DATA消息之后,發(fā)送這個消息。
“數(shù)據(jù)”這個消息用來回寫PWL和PWIL請求的數(shù)據(jù)。
來自歸屬節(jié)點的消息這些消息從歸屬節(jié)點發(fā)送到對等和/或請求節(jié)點。
“數(shù)據(jù)”這個消息包括所請求數(shù)據(jù),并且可表明要由請求節(jié)點使用的數(shù)據(jù)的狀態(tài)(M/E/F/S)。
“傳輸”(XFR)這個消息使接收節(jié)點向消息中指明的節(jié)點傳輸數(shù)據(jù)。當通知歸屬節(jié)點關(guān)于要求數(shù)據(jù)的當前擁有者將該數(shù)據(jù)傳輸給目標節(jié)點的沖突狀況時,歸屬節(jié)點把這個消息發(fā)送給所請求數(shù)據(jù)的當前擁有者。如果歸屬節(jié)點確定未解決沖突請求是PRIL消息,則發(fā)送XFRI消息以取代XFR消息,這意味著當前擁有者必須在發(fā)起數(shù)據(jù)傳輸時使該行無效。在一個實施例中,在某個時期發(fā)送CNCL消息的第一節(jié)點是當前擁有者。時期是數(shù)據(jù)的第一請求與該數(shù)據(jù)的所有請求的解決之間的時段。如果歸屬節(jié)點從存儲器向節(jié)點發(fā)送數(shù)據(jù),則那個節(jié)點是當前擁有者。發(fā)送XFR/XFRI消息使目標節(jié)點變?yōu)楫斍皳碛姓?。在一個實施例中,目標節(jié)點從在READ或CNCL消息中提供給歸屬節(jié)點的沖突列表中選取。
“確認”(ACK)這個消息表明所請求數(shù)據(jù)已經(jīng)發(fā)送到請求節(jié)點。當歸屬節(jié)點發(fā)送ACK消息時,當前時期終止。
“等待”這個消息使接收節(jié)點在發(fā)送其它消息之前暫停。
MESIF協(xié)議概述有兩種基本方案用于提供高速緩存相干性,即窺探(現(xiàn)在常常稱作對稱多處理SMP)和目錄(常常稱作分布式共享存儲器DSM)?;静町惐仨毺幚韺υ畔?、即關(guān)于存儲高速緩存行副本的位置的信息的安置和存取。
為了窺探高速緩存,該信息與高速緩存副本本身一起分布,即,高速緩存行的每個有效副本由每當任何節(jié)點以新方式請求存取高速緩存行的許可時必須認識到其責任的單元來保存。在某處--通常在固定位置--是信息庫,數(shù)據(jù)在沒有被高速緩存時被存儲在其中。即使當行被高速緩存時,這個位置也可包含有效副本。但是,這個節(jié)點的位置一般是請求節(jié)點未知的--請求節(jié)點只廣播被請求高速緩存行的地址以及所需的許可,可能具有副本的所有節(jié)點必須響應以確保一致性被保持,其中在沒有其它(對等)節(jié)點響應時,包含未高速緩存副本的節(jié)點響應。
對于基于目錄的方案,除了存儲未高速緩存數(shù)據(jù)的固定位置之外,還有固定位置、目錄,表明高速緩存副本所在的位置。為了以新的方式存取高速緩存行,節(jié)點必須與包含目錄的、通常是包含未緩存數(shù)據(jù)信息庫的同一節(jié)點的節(jié)點進行通信,從而允許響應節(jié)點在主存儲副本有效時提供數(shù)據(jù)。這樣一種節(jié)點稱作歸屬節(jié)點。
目錄可以兩種方式分布。第一,主存儲數(shù)據(jù)(未高速緩存信息庫)常常在節(jié)點之間分布,而目錄以同樣方式分布。第二,元信息本身可以是分布式的,在歸屬節(jié)點保存如行是否被高速緩存以及若被高速緩存、則單一副本所在位置等的極少信息。例如,SCI采用這種方案,其中包含高速緩存副本的各節(jié)點保持到其它具有高速緩存副本的節(jié)點的鏈接,從而共同保持完整的目錄。
窺探方案依靠廣播,因為沒有保存元信息的單一位置,因此每個查詢必須通知所有節(jié)點,每個節(jié)點負責自己的任務以確保相干性被保持。這包括干預消息,通知歸屬節(jié)點在另一個節(jié)點提供數(shù)據(jù)時不進行響應。
窺探方案的優(yōu)點在于,響應可以是直接迅速的,但沒有很好地縮放,因為要求所有節(jié)點觀察所有查詢。目錄方案固有地是更為可縮放的,但要求更復雜的響應,常常涉及三個節(jié)點的點到點通信。
本文所述的基本MESIF協(xié)議提供一種沒有單一串行化總線的限制的窺探協(xié)議。與窺探高速緩存協(xié)議相似,MESIF依靠具有數(shù)據(jù)的高速緩存副本的節(jié)點來保持相干性。點到點鏈路而不是同步集中廣播的使用引入時間異常的問題--事件從不同節(jié)點的角度看來好像以不同順序出現(xiàn)的事實。MESIF協(xié)議正確地處理時間異常,識別可能的錯誤何時可能產(chǎn)生,并保證它們被正確處理。歸屬節(jié)點的概念主要是確定未高速緩存副本所在位置,但歸屬節(jié)點參與每個事務處理--而沒有在關(guān)鍵路徑上-以便解決沖突和時間異常問題。由于該方案的同時廣播性質(zhì),MESIF實現(xiàn)與窺探協(xié)議關(guān)聯(lián)的低等待時間,在大部分情況下,以最小可能的等待時間單個往返請求-響應,獲取數(shù)據(jù)的可高速緩存副本。
基本MESIF協(xié)議包含向所有對等節(jié)點以及歸屬節(jié)點廣播初始請求。如果副本以狀態(tài)E、F或M被高速緩存,則它包含在響應中。然后,第二消息被發(fā)送給歸屬節(jié)點,通知它滿足該請求。如果所請求行未高速緩存,或者如果只存在S狀態(tài)副本,則發(fā)送到歸屬節(jié)點的第二請求用來確認這時歸屬節(jié)點可能已經(jīng)從其存儲器中取出的前一個請求。在任一情況下,為了同步和沖突解決,歸屬節(jié)點必須響應第二請求(以及響應第一請求,但它們有時可以結(jié)合)。注意,歸屬節(jié)點可具有一個或多個高速緩存,因此它可響應初始請求,就象其它任何節(jié)點那樣。
沖突以分布方式來處理。時間異常問題使得難以檢測沖突,因為各個請求可能被延遲任意長的時間。但是,如果每個節(jié)點在進行請求之后監(jiān)測沖突,則會檢測到?jīng)_突。兩個節(jié)點可以或可以不檢測沖突,但至少一個會檢測。由于所有節(jié)點必須通過提供數(shù)據(jù)或表明它們沒有副本(或者在某些情況下不提供它們所具有的副本)來響應廣播請求,因此響應可包含沖突的指示,所以沖突節(jié)點將檢測該沖突。
復雜化起因于允許節(jié)點在數(shù)據(jù)到達時立即使用該數(shù)據(jù)而不是等待所有響應。因此,接收數(shù)據(jù)副本的節(jié)點被允許在接收時立即內(nèi)部使用該數(shù)據(jù),但在節(jié)點接收到來自歸屬的確認之前,不得讓使用該數(shù)據(jù)的效果為系統(tǒng)的其余部分可見。確認也可包含節(jié)點必須將其副本轉(zhuǎn)發(fā)給另一個節(jié)點的指令,也許將該節(jié)點驅(qū)逐出其自身的高速緩存。
最后,當節(jié)點通過提供高速緩存數(shù)據(jù)響應來自另一個節(jié)點的請求時,節(jié)點必須推遲它接收的對于相同高速緩存行的其它所有請求,直到節(jié)點接收到來自歸屬節(jié)點的響應,確認節(jié)點轉(zhuǎn)發(fā)了該數(shù)據(jù)的事實,從而確保所有節(jié)點觀察到(可能可寫的)高速緩存行的傳輸?shù)南嗤樞颉?br>
歸屬節(jié)點是未高速緩存數(shù)據(jù)的信息庫,但歸屬節(jié)點也可具有產(chǎn)生請求的處理器,并包括一個或多個高速緩存。與其它任何節(jié)點相似,當歸屬節(jié)點處理器失效時,歸屬節(jié)點必須向所有其它(對等)節(jié)點廣播請求,以及歸屬節(jié)點必須內(nèi)部處理該請求,好像對到達歸屬節(jié)點的其它任何請求那樣。注意,這是一種特例,因為歸屬節(jié)點沒有明確地向其本身(歸屬節(jié)點)發(fā)送消息。另外,當對于本地高速緩存的數(shù)據(jù)的外部請求到達時,歸屬節(jié)點必須以某種方式進行響應,以便確保來自歸屬節(jié)點的隨后響應不會產(chǎn)生歧義。也就是說,歸屬節(jié)點可通過提供數(shù)據(jù)來響應初始請求,但歸屬節(jié)點還必須作為歸屬節(jié)點響應第二請求。
對于如本文所述的適合使用的MESIF協(xié)議的各種實施例的更詳細的基于偽代碼的描述作為附錄A加入本文。
推測分布式?jīng)_突解決的概述一般來說,高速緩存相干協(xié)議要求沖突解決,以便按順序提供各種高速緩存行或其它數(shù)據(jù)塊的狀態(tài)改變。本文所述的沖突解決技術(shù)提供連續(xù)一致性,這意味著在任何時候只有高速緩存行的單個可修改副本可以存在,以及沒有高速緩存行的副本可在其它副本為可讀時被修改。因此,修改高速緩存行的副本的沖突請求必須被解決,以便保持連續(xù)一致性。
在一個實施例中,沖突采用時間屬性來解決。也就是說,不考慮延遲,兩個節(jié)點都無法在另一個之前請求高速緩存行。因此,如果每個節(jié)點在那個節(jié)點已經(jīng)進行其自身的請求之后監(jiān)測所有請求,則沖突可被沖突請求方中至少一個檢測到。
在一個實施例中,如果行處于“獨占”(E)、“已修改”(M)或“轉(zhuǎn)發(fā)”(F)狀態(tài),則沖突在保存唯一副本的節(jié)點上解決。沖突解決的勝方以及可能還有敗方向歸屬節(jié)點報告沖突,歸屬節(jié)點使沖突報告成對,并發(fā)出轉(zhuǎn)發(fā)指令,以便確保所有請求節(jié)點最終接收到所請求數(shù)據(jù)。在一個實施例中,如果被請求高速緩存行是未高速緩存的或者僅存在于“共享”(S)狀態(tài)中,則所請求高速緩存行的歸屬節(jié)點提供所請求數(shù)據(jù)的副本并解決沖突。
在一個實施例中,本文所述的分布式?jīng)_突解決是稱作MESIF協(xié)議的高速緩存協(xié)議的組成部分,其中,五種狀態(tài)之一與高速緩存行的高速緩存副本關(guān)聯(lián)(已修改、獨占、共享、無效、轉(zhuǎn)發(fā))。在一個實施例中,在已經(jīng)從歸屬節(jié)點接收到確認消息之前的請求的所有響應之后的封鎖期間允許所有沖突節(jié)點認識到這些節(jié)點所涉及的沖突。封鎖期間不限制高速緩存中的數(shù)據(jù)的使用,但卻防止數(shù)據(jù)被傳播到其它高速緩存。
以下論述依照多節(jié)點系統(tǒng)中的節(jié)點來提供。在一個實施例中,節(jié)點包括具有內(nèi)部高速緩沖存儲器的處理器、外部高速緩沖存儲器和/或外部存儲器。在一個備選實施例中,節(jié)點是與其它電子系統(tǒng)互連的電子系統(tǒng)(例如計算機系統(tǒng)、移動裝置)。也可使用其它類型的節(jié)點配置。在以下實例中,虛線表示先前發(fā)送的消息,以及實線表示正被描述的消息。為了使附圖更為清楚,當一組消息(例如PRIL和相應IACK)被解決時,表示消息的線條不再包含在附圖中。
圖2a到2d提供共享行沖突的概念說明。在圖2a到2d的實例中,對等節(jié)點210和220都請求某個數(shù)據(jù)塊(例如高速緩存行)的副本。對等節(jié)點230以M狀態(tài)存儲所請求數(shù)據(jù)塊的可用副本。如果對等節(jié)點230以S狀態(tài)或F狀態(tài)存儲所請求數(shù)據(jù),則所述處理也適用。
為了提供沖突的一個實例,與圖2a到2d的各種消息關(guān)聯(lián)的編號(例如1.PRIL、7.IACK)提供近似排序。不需要圖2a到2d中所示的準確定時關(guān)系以及所提供的其它實例(即圖3a-3d、4a-4d、5a-5d、6a-6d)。
如圖2a所示,對等節(jié)點210通過向?qū)Φ裙?jié)點220和230以及向歸屬節(jié)點240發(fā)送PRIL消息來請求數(shù)據(jù)塊。對等節(jié)點210還可利用PRL消息來請求同樣的數(shù)據(jù)塊,在這種情況下,對等節(jié)點230不會響應請求消息而使其副本無效。對等節(jié)點220以IACK消息響應PRIL消息,表明對等節(jié)點220沒有存儲所請求數(shù)據(jù)塊的有效副本。
歸屬節(jié)點240用作要被請求的數(shù)據(jù)的歸屬節(jié)點,這意味著,節(jié)點240與非高速緩沖存儲器(例如主存儲器)關(guān)聯(lián),其中,要被請求的數(shù)據(jù)在沒有被高速緩存時被存儲。例如,歸屬節(jié)點240可以是處理器、高速緩沖存儲器和隨機存取存儲器(RAM),其中,RAM提供數(shù)據(jù)的非高速緩沖存儲位置。
圖2b說明向?qū)Φ裙?jié)點210和230以及向歸屬節(jié)點240發(fā)送PRIL消息來請求先前由對等節(jié)點210所請求的數(shù)據(jù)塊的對等節(jié)點220。如上所述,也可采用PRL消息來請求數(shù)據(jù)。雖然圖2a到2d的沖突采用PRIL消息來說明,但不一致結(jié)果可能在其中出現(xiàn)的請求消息的任何組合導致沖突。
與對等節(jié)點220發(fā)送PRIL消息大致同時,對等節(jié)點230通過向?qū)Φ裙?jié)點210發(fā)送“DataM”消息來響應來自對等節(jié)點210的PRIL消息。DataM消息向?qū)Φ裙?jié)點210提供所請求數(shù)據(jù)的副本,并使對等節(jié)點210以“已修改”(M)狀態(tài)來存儲該數(shù)據(jù)。其它狀態(tài)可以被指定,例如轉(zhuǎn)發(fā)(F)狀態(tài)。由對等節(jié)點230存儲的所請求數(shù)據(jù)的副本的狀態(tài)從M狀態(tài)改變?yōu)椤盁o效”(I)狀態(tài)。
如圖2c所示,響應從對等節(jié)點230接收到DataM消息,對等節(jié)點210向歸屬節(jié)點240發(fā)送CNCL()消息。如果檢索已經(jīng)開始,則CNCL()消息取消從存儲器中的所請求數(shù)據(jù)塊的檢索。歸屬節(jié)點240以ACK消息響應對等節(jié)點210,確認接收到CNCL()消息,它表明來自對等節(jié)點210的PRIL消息的處理的完成。
響應接收到來自歸屬節(jié)點240的ACK消息,對等節(jié)點210向?qū)Φ裙?jié)點230發(fā)送DACK消息,確認接收到來自對等節(jié)點230的所請求數(shù)據(jù)。從對等節(jié)點230的數(shù)據(jù)接收與向?qū)Φ裙?jié)點230的DACK消息發(fā)送之間的周期為封鎖周期,在此期間數(shù)據(jù)塊沒有被發(fā)送到另一個節(jié)點。在封鎖周期中,對等節(jié)點210不響應來自對等節(jié)點220的PRIL消息。同樣,對等節(jié)點230在封鎖周期中不響應來自對等節(jié)點220的PRIL消息。
如圖2d所示,對等節(jié)點210向?qū)Φ裙?jié)點220發(fā)送DataM消息,以便向?qū)Φ裙?jié)點220提供所請求數(shù)據(jù)的副本,以及使對等節(jié)點220以M狀態(tài)存儲數(shù)據(jù)副本。其它類型的消息(例如DataF、DataS)可用于向?qū)Φ裙?jié)點220提供所請求數(shù)據(jù)。對等節(jié)點210還把所保留的數(shù)據(jù)副本(如果有的話)標記為處于I狀態(tài),因為DataM消息響應PRIL消息。所保留的請求數(shù)據(jù)的副本不會由于例如PRL消息而無效。對等節(jié)點220還向歸屬節(jié)點240發(fā)送CNCL()消息,以便取消從非高速緩沖存儲器中對所請求數(shù)據(jù)的任何檢索。歸屬節(jié)點240以WAIT消息進行響應,它使對等節(jié)點220在發(fā)送其它消息之前暫停。
在所述過程中的某個時間,對等節(jié)點230和代理290響應請求這時沒有由對等節(jié)點230存儲或者沒有以I狀態(tài)存儲的數(shù)據(jù)塊的PRIL消息而向?qū)Φ裙?jié)點220發(fā)送IACK消息。對等節(jié)點220通過向?qū)Φ裙?jié)點210發(fā)送DACK消息響應來自對等節(jié)點210的DataM消息。DACK消息斷定來自對等節(jié)點210和220的沖突PRIL消息的解決。
圖3a到3d提供由接近同時發(fā)出的請求(平局狀況)所引起的共享行沖突的概念說明。如圖3a所示,對等節(jié)點210向?qū)Φ裙?jié)點220和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求數(shù)據(jù)塊。某個短時段之后,或者甚至同時,對等節(jié)點220向?qū)Φ裙?jié)點210和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求相同的數(shù)據(jù)塊。
響應在接收所請求數(shù)據(jù)之前接收到來自另一個對等節(jié)點的PRIL消息,對等節(jié)點210向作為沖突PRIL消息的源的對等節(jié)點220發(fā)送CONFLICT消息。CONFLICT消息把請求沖突的存在從標識沖突的對等節(jié)點傳遞到?jīng)_突中涉及的一個或多個其它對等節(jié)點。同樣,對等節(jié)點220響應在接收所請求數(shù)據(jù)之前接收PRIL消息而向?qū)Φ裙?jié)點210發(fā)送CONFLICT消息。圖3b說明對等節(jié)點210與220之間的CONFLICT消息的傳送。
如圖3c所示,對等節(jié)點230以DataM消息向?qū)Φ裙?jié)點210提供所請求數(shù)據(jù),并把所保留的數(shù)據(jù)副本(如果有的話)標記為I狀態(tài)。對等節(jié)點210接收所請求數(shù)據(jù),并將它以M狀態(tài)存儲。對等節(jié)點210則向歸屬節(jié)點240發(fā)送CNCL(220)消息。CNCL(220)消息使歸屬節(jié)點240取消從存儲器對所請求數(shù)據(jù)的檢索,并向歸屬節(jié)點240表明,在發(fā)送節(jié)點(即對等節(jié)點210)與對等節(jié)點220之間存在沖突。
響應CNCL(220)消息,歸屬節(jié)點240向?qū)Φ裙?jié)點210發(fā)送XFER(220)消息。XFER(220)消息使對等節(jié)點210向?qū)Φ裙?jié)點220轉(zhuǎn)發(fā)該數(shù)據(jù)的副本。在一個實施例中,對等節(jié)點210在向?qū)Φ裙?jié)點220發(fā)送數(shù)據(jù)副本之前使用和/或修改所請求數(shù)據(jù)塊。在一個備選實施例中,對等節(jié)點210立即向?qū)Φ裙?jié)點220發(fā)送數(shù)據(jù)副本。響應接收到來自歸屬節(jié)點240的XFER(220)消息,對等節(jié)點210向?qū)Φ裙?jié)點230發(fā)送DACK消息,確認對所請求數(shù)據(jù)的接收。
如圖3d所示,響應接收到來自對等節(jié)點210的DACK消息,對等節(jié)點230向?qū)Φ裙?jié)點220發(fā)送IACK消息,表明對等節(jié)點230沒有存儲所請求數(shù)據(jù)的有效副本。對等節(jié)點230不響應第二PRIL消息(即來自對等節(jié)點220的PRIL消息),直到第一PRIL消息(即來自對等節(jié)點210的PRIL消息)被解決。響應來自歸屬節(jié)點240的XFER(220)消息,對等節(jié)點210以DataM消息向?qū)Φ裙?jié)點220發(fā)送所請求數(shù)據(jù)的副本。對等節(jié)點210把保留數(shù)據(jù)的任何副本標記為I狀態(tài),以及對等節(jié)點220以M狀態(tài)存儲所接收數(shù)據(jù)的副本。
對等節(jié)點220向歸屬節(jié)點240發(fā)送READ(210)消息,以便停止從存儲器對所請求數(shù)據(jù)的檢索,以及表明對等節(jié)點220已經(jīng)檢測到與對等節(jié)點210的沖突。歸屬節(jié)點240以發(fā)送給對等節(jié)點220的WAIT消息響應READ(210)消息。WAIT消息使對等節(jié)點220在傳送任何后續(xù)消息之前暫停預定時段。對等節(jié)點220向?qū)Φ裙?jié)點210發(fā)送DACK消息,以表明對所請求數(shù)據(jù)的接收。
圖4a到4d提供由多個請求中一個的延遲所引起的共享行沖突的概念說明。如圖4a所示,對等節(jié)點220向?qū)Φ裙?jié)點210和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求數(shù)據(jù)塊。送往對等節(jié)點230的PRIL消息被延遲。延遲可能是因為例如系統(tǒng)等待時間、信息包損壞或其它任何原因。對等節(jié)點210以IACK消息響應PRIL消息,表明對等節(jié)點210沒有存儲所請求數(shù)據(jù)的有效副本。
如圖4b所示,對等節(jié)點210向?qū)Φ裙?jié)點220和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求相同的數(shù)據(jù)塊。來自對等節(jié)點220的延遲PRIL消息由對等節(jié)點230在來自對等節(jié)點210的PRIL消息的同時或之后接收。對等節(jié)點230以DataM消息響應來自對等節(jié)點210的PRIL消息,它向?qū)Φ裙?jié)點210提供所請求數(shù)據(jù)的副本,并使對等節(jié)點210以M狀態(tài)來存儲該數(shù)據(jù)。對等節(jié)點230把所請求數(shù)據(jù)的保留副本(如果有的話)標記為I狀態(tài)。對等節(jié)點220以CONFLICT消息響應來自對等節(jié)點210的PRIL消息,向?qū)Φ裙?jié)點210表明,對等節(jié)點220已經(jīng)檢測到兩個節(jié)點的請求之間的沖突。
如圖4c所示,對等節(jié)點210向歸屬節(jié)點240發(fā)送CNCL(220)消息,以便取消從存儲器對所請求數(shù)據(jù)的檢索。CNCL(220)消息還向歸屬節(jié)點240表明,在對等節(jié)點210與對等節(jié)點220之間存在沖突。歸屬節(jié)點240以XFER(220)消息來響應CNCL(220)消息,它使對等節(jié)點210向?qū)Φ裙?jié)點220發(fā)送所請求數(shù)據(jù)的副本。在一個實施例中,對等節(jié)點210在向?qū)Φ裙?jié)點220發(fā)送數(shù)據(jù)副本之前使用和/或修改所請求數(shù)據(jù)塊。在一個備選實施例中,對等節(jié)點210立即向?qū)Φ裙?jié)點220發(fā)送數(shù)據(jù)副本。
對等節(jié)點210向?qū)Φ裙?jié)點230發(fā)送DACK消息,以確認對所請求數(shù)據(jù)的接收。對等節(jié)點210還向?qū)Φ裙?jié)點220發(fā)送DataM消息,以便提供所請求數(shù)據(jù)的副本。對等節(jié)點220以M狀態(tài)存儲所請求數(shù)據(jù),而對等節(jié)點210則把所請求數(shù)據(jù)的任何剩余副本標記為I狀態(tài)。
如圖4d所示,對等節(jié)點230響應接收到來自對等節(jié)點210的DACK消息,向?qū)Φ裙?jié)點220發(fā)送IACK消息。IACK消息表明對等節(jié)點230沒有存儲所請求數(shù)據(jù)的有效副本。對等節(jié)點220向歸屬節(jié)點240發(fā)送READ(210)消息。READ(210)消息取消從存儲器對所請求數(shù)據(jù)的檢索,并向歸屬節(jié)點240表明,對等節(jié)點220與對等節(jié)點210有沖突。
歸屬節(jié)點240以WAIT消息來響應READ(210)消息,它使對等節(jié)點220在發(fā)送任何后續(xù)消息之前暫停預定時段。對等節(jié)點220以DACK消息響應來自對等節(jié)點210的DataM消息,它確認對于來自對等節(jié)點210的所請求數(shù)據(jù)的接收。
圖5a到5d提供無效行沖突的概念說明。如圖5a所示,對等節(jié)點210向?qū)Φ裙?jié)點220和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求數(shù)據(jù)塊。如圖5b所示,在來自對等節(jié)點210的PRIL消息的同時或稍后,對等節(jié)點220向?qū)Φ裙?jié)點210和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求相同的數(shù)據(jù)。
如圖5c所示,對等節(jié)點230以IACK消息響應來自對等節(jié)點210的PRIL消息,表明對等節(jié)點230沒有存儲所請求數(shù)據(jù)的有效副本。同樣,對等節(jié)點230以IACK消息響應來自對等節(jié)點220的PRIL消息。對等節(jié)點220以CONFLICT消息響應來自對等節(jié)點210的PRIL消息,以便傳遞對等節(jié)點210與220之間的沖突的標識。同樣,對等節(jié)點210以CONFLICT消息響應來自對等節(jié)點220的PRIL消息。
如圖5d所示,對等節(jié)點210向歸屬節(jié)點240發(fā)送READ(220)消息。READ(220)消息讀取來自已經(jīng)從存儲器檢索了所請求數(shù)據(jù)的歸屬節(jié)點240的先前所請求數(shù)據(jù)。歸屬節(jié)點240以Data,XFER(220)消息向?qū)Φ裙?jié)點210提供所請求數(shù)據(jù)。在一個實施例中,歸屬節(jié)點240把來自兩種消息(即Data和XFER)的信息包含到單個消息包中。這種“搭載”技術(shù)可降低解決沖突所需的帶寬。
“Data,XFER(220)”消息向?qū)Φ裙?jié)點210提供所請求數(shù)據(jù),并且還使對等節(jié)點210把所請求數(shù)據(jù)傳送給對等節(jié)點220。當對等節(jié)點210接收到所請求數(shù)據(jù)時,所請求數(shù)據(jù)以M狀態(tài)被存儲。
在接收所請求數(shù)據(jù)之后,對等節(jié)點210以DataM消息向?qū)Φ裙?jié)點220發(fā)送所請求數(shù)據(jù)的副本。對等節(jié)點210所保留的所請求數(shù)據(jù)的任何副本被標記為I狀態(tài)。對等節(jié)點220以M狀態(tài)存儲所請求數(shù)據(jù),并以DACK消息向?qū)Φ裙?jié)點210確認對所請求數(shù)據(jù)的接收。
圖6a到6d提供由多個請求中一個的延遲所引起的無效行沖突的概念說明。如圖6a所示,對等節(jié)點220向?qū)Φ裙?jié)點210和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求數(shù)據(jù)塊。送往對等節(jié)點230的PRIL消息被延遲。延遲可能是因為例如系統(tǒng)等待時間、信息包損壞或其它任何原因。對等節(jié)點210以IACK消息響應PRIL消息,表明對等節(jié)點210沒有存儲所請求數(shù)據(jù)的有效副本。
如圖6b所示,對等節(jié)點210向?qū)Φ裙?jié)點220和230以及向歸屬節(jié)點240發(fā)送PRIL消息,請求相同的數(shù)據(jù)塊。來自對等節(jié)點220的延遲PRIL消息由對等節(jié)點230在來自對等節(jié)點210的PRIL消息的同時或之后接收。對等節(jié)點220以CONFLICT消息響應來自對等節(jié)點210的PRIL消息,向?qū)Φ裙?jié)點210表明,對等節(jié)點220已經(jīng)檢測到兩個節(jié)點的請求之間的沖突。
如圖6c所示,對等節(jié)點230以IACK消息響應來自對等節(jié)點210的PRIL消息,表明對等節(jié)點230沒有存儲對等節(jié)點210所請求的數(shù)據(jù)的有效副本。同樣,對等節(jié)點230以IACK消息響應來自對等節(jié)點220的PRIL消息,表明對等節(jié)點230沒有存儲對等節(jié)點220所請求的數(shù)據(jù)的有效副本。
如圖6d所示,對等節(jié)點210向歸屬節(jié)點240發(fā)送READ(220)消息。READ(220)消息讀取來自已經(jīng)從存儲器檢索所請求數(shù)據(jù)的歸屬節(jié)點240的先前所請求數(shù)據(jù)。歸屬節(jié)點240以Data,XFER(220)消息向?qū)Φ裙?jié)點210提供所請求數(shù)據(jù)。
在接收所請求數(shù)據(jù)之后,對等節(jié)點210以DataM消息向?qū)Φ裙?jié)點220發(fā)送所請求數(shù)據(jù)的副本。對等節(jié)點210所保留的所請求數(shù)據(jù)的任何副本被標記為I狀態(tài)。對等節(jié)點220以M狀態(tài)存儲所請求數(shù)據(jù),并以DACK消息向?qū)Φ裙?jié)點210確認所請求數(shù)據(jù)的接收。
支持推測分布式?jīng)_突解決的示例系統(tǒng)圖7是節(jié)點的一個實施例的框圖。節(jié)點700表示為具有單處理器、高速緩沖存儲器、存儲控制器以及存儲器;但是,這些組件的任一個的任何數(shù)量均可包含在一個節(jié)點中。此外,附加和/或不同組件(例如總線橋)也可包含在節(jié)點中。
處理器710可以是本領域已知的任何類型的處理器。在一個實施例中,處理器710包括高速緩沖存儲器720。在備選實施例中,高速緩沖存儲器720是處理器710外部的,或者可包括處理器710內(nèi)部或外部的附加高速緩沖存儲器。
存儲控制器730與高速緩沖存儲器720和存儲器740耦合。存儲控制器730用作高速緩沖存儲器720與存儲器740之間的接口。在一個實施例中,存儲控制器730根據(jù)本文所述的高速緩存相干協(xié)議來保持高速緩存相關(guān)性。存儲控制器730經(jīng)由節(jié)點鏈路750與其它節(jié)點交互。在一個備選實施例中,處理器710與存儲控制器730交互,以便保持高速緩存相干性,如本文所述,以及處理器710經(jīng)由備選節(jié)點鏈路755與其它節(jié)點交互。
在一個實施例中,節(jié)點鏈路750包括節(jié)點700與其交互的各節(jié)點的專用接口。在一個備選實施例中,節(jié)點鏈路750包括多個接口,其數(shù)量不同于節(jié)點700與其交互的節(jié)點的數(shù)量。在一個實施例中,節(jié)點700與表示多個節(jié)點的一個或多個代理交互。
圖8是多處理器系統(tǒng)的一個實施例。多處理器系統(tǒng)800用于表示具有多個處理器的一系列系統(tǒng),例如計算機系統(tǒng)、實時監(jiān)測系統(tǒng)等。其它多處理器系統(tǒng)可包括更多、更少和/或不同的組件。在某些情況下,本文所述的高速緩存管理技術(shù)可應用于單處理器和多處理器系統(tǒng)。多處理器系統(tǒng)800可配置成作為多節(jié)點系統(tǒng)來工作。
多處理器系統(tǒng)800包括總線系統(tǒng)810或傳遞信息的其它通信裝置??偩€系統(tǒng)810可包括任何數(shù)量的總線及相關(guān)互連電路、例如總線橋。處理器820與總線系統(tǒng)810耦合以處理信息。處理器820可包括例如零級(L0)高速緩沖存儲器等高速緩沖存儲器822和高速緩存控制器824。在一個實施例中,處理器820還與可以是任何類型的高速緩沖存儲器的高速緩存825耦合。在一個備選實施例中,高速緩存825可與總線系統(tǒng)810耦合。也可使用其它類型的處理器-高速緩存配置。
在一個實施例中,高速緩存控制器824經(jīng)由可以是例如處理器820內(nèi)部的總線的高速緩沖存儲器接口828與高速緩沖存儲器822耦合。高速緩存控制器經(jīng)由提供處理器820與外部高速緩沖存儲器之間接口的高速緩存接口826與高速緩沖存儲器825耦合。
多處理器系統(tǒng)800還包括具有高速緩沖存儲器832和高速緩存控制器834的處理器830。高速緩存控制器834經(jīng)由高速緩存接口838與高速緩沖存儲器832耦合。同樣,高速緩存控制器834經(jīng)由高速緩存接口836與高速緩沖存儲器835耦合。在一個實施例中,高速緩沖存儲器835與處理器830耦合。
雖然多處理器系統(tǒng)800表示為具有兩個處理器,但多處理器系統(tǒng)800可包括任何數(shù)量的處理器和/或協(xié)處理器。多處理器系統(tǒng)800還包括與總線系統(tǒng)810耦合的存儲系統(tǒng)840。存儲系統(tǒng)840可包括動態(tài)(例如隨機存取存儲器)和靜態(tài)(例如只讀存儲器、CD-ROM、盤存儲裝置、閃存)存儲裝置的任何組合及適當?shù)南嚓P(guān)驅(qū)動器。存儲系統(tǒng)840的存儲裝置用來存儲由多處理器系統(tǒng)800的處理器執(zhí)行的信息和指令。存儲系統(tǒng)840還可用于在處理器執(zhí)行指令的過程中存儲臨時變量或其它中間信息。
指令可從諸如磁盤、只讀存儲器(ROM)集成電路、CD-ROM、DVD等靜態(tài)或遠程存儲裝置經(jīng)由有線或無線遠程連接等提供給存儲系統(tǒng)840。在備選實施例中,硬布線電路可用來代替軟件指令或與其結(jié)合。因此,指令序列的執(zhí)行不限于硬件電路和軟件指令的任何特定組合。
多處理器系統(tǒng)800還包括網(wǎng)絡接口850,以便提供對網(wǎng)絡、如局域網(wǎng)和/或因特網(wǎng)的接入。網(wǎng)絡接口850可提供無線和/或有線網(wǎng)絡接口,它可包括與遠程電可存取媒體之間的指令傳遞。電可存取媒體包括以電子裝置(例如計算機、個人數(shù)字助理、蜂窩電話)可讀形式提供(即存儲和/或傳送)內(nèi)容(例如計算機可執(zhí)行指令)的任何機構(gòu)。
例如,機器可存取媒體包括只讀存儲器(ROM);隨機存取存儲器(RAM);磁盤存儲媒體;光存儲媒體;閃存裝置;電、光、聲或其它形式的傳播信號(例如載波、紅外信號、數(shù)字信號)。
多處理器系統(tǒng)800還可包括顯示裝置860、如陰極射線管(CRT)或液晶顯示器(LCD),以便顯示信息。包括例如具有字母數(shù)字鍵及其它鍵的鍵盤在內(nèi)的輸入裝置870通常耦合到總線810,以便向處理器820和/或830傳遞信息和命令選擇。另一種用戶輸入裝置是光標控制裝置,如鼠標、軌跡球或光標方向鍵,以便向處理器820和830傳遞方向信息和命令選擇,以及控制顯示裝置860上的光標運動。
說明中提到“一個實施例”或“實施例”表示結(jié)合這些實施例所述的特定特征、結(jié)構(gòu)或特性包含在本發(fā)明的至少一個實施例中。詞組“在一個實施例中”在本說明的各個位置中的出現(xiàn)不一定都表示同一個實施例。
在以上說明中,參照特定實施例對本發(fā)明進行了說明。但是,顯然可對其進行各種修改及變更,而沒有背離本發(fā)明的廣義精神和范圍。因此,說明書和附圖應看作是說明性的而不是限制性的。
附錄A以下是以偽代碼格式對MESIF算法的示例描述。描述是基于信息包的;即,每個例程響應入局或出局信息包而執(zhí)行?;蛘?,算法可描述為對于因信息包被接收或產(chǎn)生而引起的狀態(tài)改變的反應。
為了簡化描述,進行下列假設1.每個對等/請求節(jié)點具有單個高速緩存代理;2.歸屬節(jié)點沒有高速緩存代理;以及3.歸屬節(jié)點中存儲器請求所用的算法可能比所表示的更為復雜,并處理MESIF引起的所有角落情況(不止一次讀取、多個時期、寫入轉(zhuǎn)發(fā)等)。
具有高速緩存代理的歸屬節(jié)點的情況(在部分實施例中可能出現(xiàn))由給定算法得出,即通過以下方式進行通過使涉及由本地高速緩存代理(或代理人)進行的與歸屬節(jié)點之間的傳輸?shù)睦虄?nèi)在化,來結(jié)合所接收信息包的例程。
在一個實施例中,高速緩存服從以下約束1.高速緩存只在行處于I狀態(tài)時才產(chǎn)生PRL。
2.高速緩存只在行處于I或S狀態(tài)時才產(chǎn)生PRIL。
3.高速緩存只在行處于M狀態(tài)時才產(chǎn)生PWL。
4.高速緩存可隨意從S、F和E狀態(tài)轉(zhuǎn)變到I狀態(tài)。
5.高速緩存可隨意從E狀態(tài)轉(zhuǎn)變到M狀態(tài)(假定發(fā)生寫入)。
6.高速緩存也可僅在它所發(fā)出的請求完成時或者在接收到來自對等體的請求時才轉(zhuǎn)變。
以下描述的基本協(xié)議僅包含PRL、PRIL和PWL請求,并使用涉及與傳輸數(shù)據(jù)共同傳遞的沖突列表的沖突解決方法。在以下部分包含對這個基本協(xié)議的擴充和選項。
基本MESIF協(xié)議請求生成調(diào)用
高速緩存產(chǎn)生對(不活動)地址的新請求算法把地址標記為活動的If請求為PRL或PRIL向所有其它對等節(jié)點以及向歸屬節(jié)點發(fā)送請求If請求為PWL向歸屬節(jié)點發(fā)送請求由歸屬節(jié)點進行的請求接收調(diào)用在歸屬節(jié)點接收的請求算法If請求為PWL發(fā)起對存儲器的寫入(處理轉(zhuǎn)發(fā)、取消未完成的讀取等)向請求方發(fā)回ACKIf請求為PRL或PRIL發(fā)起從存儲器的讀取(如果讀取在接收到READ之前完成,則緩沖數(shù)據(jù),等等)由對等節(jié)點進行的請求接收調(diào)用在對等節(jié)點接收的請求(PRL或PRIL)算法If地址正被轉(zhuǎn)發(fā)緩沖入局請求Else if地址不是活動的窺探高速緩存Else if地址是活動的If活動請求為PWL
緩沖入局請求--End IfIf入局請求處于活動請求的沖突列表中If活動請求為PRL以CNFL響應Else(活動請求為PRIL)以CNFLI響應Else if活動請求處于“數(shù)據(jù)階段”(參見下面的“收集響應”)緩沖入局請求Else把請求方添加到(活動請求的)沖突列表If入局請求為PRIL把沖突列表中的請求方標記為PRIL沖突方If活動請求為PRL以CNFL響應Else(活動請求為PRIL)以CNFLI響應窺探響應調(diào)用(作為窺探)提交給高速緩存用于適當響應產(chǎn)生的請求算法根據(jù)當前高速緩存狀態(tài)和入局請求類型查找下表中的響應和下一個狀態(tài)(S/I的下一個狀態(tài)表示高速緩存可把行移動到任一狀態(tài);注意即使讓本地副本無效,仍然對PRL發(fā)送DATA_F--參見以下的PRL DATA E/M響應選項)
IfPRL窺探命中處于M狀態(tài)的高速緩存行發(fā)起PWL請求緩沖窺探(推遲發(fā)送DATA_F,直到回寫完成)ElseIf窺探命中高速緩存行(處于M、E或F狀態(tài))把地址標記為正轉(zhuǎn)發(fā)把高速緩存行改變?yōu)橄乱粋€狀態(tài)向請求方發(fā)送響應收集響應調(diào)用PRL/PRIL請求接收到來自對等節(jié)點的響應算法If響應為SACK(僅PRL)記錄系統(tǒng)中共享副本的存在Else if響應為DATA記錄對來自響應節(jié)點的轉(zhuǎn)發(fā)數(shù)據(jù)的接收向高速緩存發(fā)送高速緩存行和新狀態(tài)(注意行仍然不是全局可觀察的!)Else if響應為CNFL把響應節(jié)點添加到?jīng)_突列表Else if響應為CNFLI把響應節(jié)點添加到?jīng)_突列表把響應節(jié)點標記為PRIL沖突方--End If
If所有對等節(jié)點已經(jīng)響應把請求標為處于“數(shù)據(jù)階段”If接收到數(shù)據(jù)響應向轉(zhuǎn)發(fā)節(jié)點發(fā)送CNCL以及向歸屬節(jié)點發(fā)送沖突列表Else向歸屬節(jié)點發(fā)送READ和沖突列表在歸屬節(jié)點取消調(diào)用歸屬節(jié)點接收到CNCL(包含轉(zhuǎn)發(fā)節(jié)點和沖突列表)算法取消未完成的讀取(如果有的話)把請求節(jié)點標記為這個地址的“當前擁有者”向轉(zhuǎn)發(fā)節(jié)點發(fā)送DACKIf沒有沖突向請求節(jié)點發(fā)送ACK--無沖突高速緩存時期完成Else結(jié)合沖突列表作為這個地址的“未完成請求”--等待對XFR數(shù)據(jù)的READ在歸屬節(jié)點的讀取請求調(diào)用歸屬節(jié)點接收到READ(包含沖突列表)算法If沒有當前擁有者If數(shù)據(jù)不可用等待完成讀取向請求節(jié)點發(fā)送DATA_EIf沖突列表為空向請求節(jié)點發(fā)送ACK--無沖突未高速緩存時期完成Else結(jié)合沖突列表作為這個地址的“未完成節(jié)點”Else把未完成沖突添加到這個地址的“未完成節(jié)點”從“未完成節(jié)點”刪除請求節(jié)點If沒有(剩余)未完成節(jié)點向“當前擁有者”發(fā)送XFR(目標請求節(jié)點)向請求節(jié)點發(fā)送ACK--時期完成ElseIf一個或多個未完成節(jié)點(包括請求方)為PRIL向“當前擁有者”發(fā)送XFRI(目標請求節(jié)點)Else向“當前擁有者”發(fā)送XFR(目標請求節(jié)點)把請求節(jié)點標記為“當前擁有者”傳輸接收調(diào)用請求方接收到XFR或XFRI(包含目標節(jié)點)算法在仍未接收到時等待數(shù)據(jù)If接收到XFRI向高速緩存發(fā)送PRIL窺探Else向高速緩存發(fā)送PRL窺探把沖突列表(無接收節(jié)點)添加到DATA包把DATA包發(fā)送到目標節(jié)點傳輸數(shù)據(jù)接收調(diào)用請求方作為XFR的結(jié)果接收到DATA(包含沖突列表)算法向處理器發(fā)送數(shù)據(jù)把沖突列表結(jié)合到當前沖突列表If緩沖請求匹配沖突列表中的條目以CNFL響應每個匹配請求轉(zhuǎn)發(fā)DACK調(diào)用轉(zhuǎn)發(fā)節(jié)點接收到DACK算法取消地址標為正轉(zhuǎn)發(fā)的標記服務緩沖用于接收對等請求的每個算法的請求請求ACK調(diào)用請求方接收到來自歸屬節(jié)點的ACK算法If活動請求為PWL把高速緩存行轉(zhuǎn)換到預期的下一個狀態(tài)(E或I)If緩沖窺探(PRL命中M狀態(tài)的行)向請求方發(fā)送DATA_F把高速緩存行改變?yōu)橄乱粋€狀態(tài)(S)或I狀態(tài)Else(請求為PRL或PRIL)釋放緩沖請求(即把它們當作好像剛到達該節(jié)點來處理)在仍未接收到時等待數(shù)據(jù)向處理器發(fā)送ACK<<<===基本協(xié)議結(jié)束===>>>
PIL請求在以上協(xié)議算法中,節(jié)點把高速緩存行從F狀態(tài)移動到E狀態(tài)的唯一方式是使該行無效(把行改變?yōu)镮狀態(tài)),然后再請求PRIL。這涉及DATA傳輸。
為了支持直接F->E轉(zhuǎn)變,可使用PIL請求。這個請求發(fā)送到所有對等節(jié)點和歸屬節(jié)點,并使其它高速緩存使它們的行共享副本無效。為了防止正在傳送中的PRIL和/或PRL干擾這種轉(zhuǎn)變,PIL可被給予更高優(yōu)先級。
對基本協(xié)議的改變請求生成調(diào)用高速緩存產(chǎn)生對(不活動)地址的新請求算法把地址標記為活動If請求為PRL或PRIL向所有其它對等節(jié)點以及向歸屬節(jié)點發(fā)送請求>>If請求為PIL>>向所有其它對等節(jié)點發(fā)送請求If請求為PWL向歸屬節(jié)點發(fā)送請求由對等節(jié)點進行的請求接收調(diào)用在對等節(jié)點接收的請求(PRL或PRIL)如果存在活動PIL請求,則對算法的唯一改變是緩沖請求,如對于活動PWL進行的那樣。
由對等節(jié)點進行的PIL請求接收調(diào)用在對等節(jié)點接收的PIL請求算法向高速緩存發(fā)送PIL窺探窺探響應對于新的響應/下一個狀態(tài)表使用的相同算法(沒有具有PIL的F、E和M的條目,因為F和F、E和M中的請求方是相互排他的)
收集響應調(diào)用PIL請求接收到來自對等節(jié)點的響應算法If所有對等節(jié)點已經(jīng)響應通知高速緩存把行移動到E狀態(tài)釋放任何緩沖的請求--PIL請求完成M->SPWL和立即響應PRL命中M狀態(tài)的行存在的性能問題是需要在轉(zhuǎn)發(fā)數(shù)據(jù)之前進行回寫(發(fā)出PWL)。通過某些細微變化,數(shù)據(jù)可能同時被轉(zhuǎn)發(fā)和回寫。歸屬節(jié)點不發(fā)送DACK,直到它已經(jīng)接收到來自請求方/勝方的PWL請求和CNCL。
對基本協(xié)議的改變由歸屬節(jié)點進行的請求接收調(diào)用
在歸屬節(jié)點接收的請求算法If請求為PWL發(fā)起對存儲器的寫入(處理轉(zhuǎn)發(fā)、取消未完成的讀取等)>>IfPWL是用于PRL命中M>>If接收到CNCL>>向CNCL中表明的轉(zhuǎn)發(fā)節(jié)點發(fā)送DACK>>Else>>把地址標記為被回寫>>Else>>向請求方發(fā)回ACKIf請求為PRL或PRIL發(fā)起從存儲器的讀取(如果讀取在接收到READ之前完成,則緩沖數(shù)據(jù),等等)窺探響應調(diào)用(作為窺探)提交給高速緩存用于適當響應產(chǎn)生的請求算法進行如基本協(xié)議中的響應/下一個狀態(tài)查找If窺探命中高速緩存行(處于M、E或F狀態(tài))把地址標記為正被轉(zhuǎn)發(fā)把高速緩存行改變?yōu)橄乱粋€狀態(tài)IfPRL窺探命中M狀態(tài)的高速緩存行發(fā)起標記為PRL命中M回寫的PWL向請求方發(fā)送DATA_F,標記為PRL命中MElse向請求方發(fā)送響應收集響應算法差別是在記錄PRL命中M數(shù)據(jù)以及當發(fā)送CNCL時通知歸屬節(jié)點特殊轉(zhuǎn)發(fā)Else if響應為DATA記錄對來自響應節(jié)點的轉(zhuǎn)發(fā)數(shù)據(jù)的接收IfPRL請求并命中M(經(jīng)由DATA表明)把轉(zhuǎn)發(fā)節(jié)點標記為PRL命中M向高速緩存發(fā)送高速緩存行和新狀態(tài)(注意行仍然不是全局可觀察的!)If所有對等節(jié)點已經(jīng)響應If接收到數(shù)據(jù)響應向轉(zhuǎn)發(fā)節(jié)點發(fā)送CNCL(如果它是,則標記為PRL命中M),以及向歸屬節(jié)點發(fā)送沖突列表在歸屬節(jié)點取消調(diào)用歸屬節(jié)點接收到CNCL(包含轉(zhuǎn)發(fā)節(jié)點和沖突列表)算法唯一的差別是在確定是否發(fā)送DACK方面If轉(zhuǎn)發(fā)節(jié)點進行了PRL命中M回寫If已經(jīng)接收到PWL向轉(zhuǎn)發(fā)節(jié)點發(fā)送DACKElse把地址標記為需要回寫Else向轉(zhuǎn)發(fā)節(jié)點發(fā)送DACK轉(zhuǎn)發(fā)DACK沒有差別。所發(fā)出的PWL作為一次性信息包(或者由DACK完成的請求)處理FM狀態(tài)PRL命中M狀態(tài)的行的另一個備選方案是把FM狀態(tài)引入MESIF。這個狀態(tài)表明已修改行的共享副本。如同M狀態(tài)一樣,數(shù)據(jù)在被驅(qū)逐出高速緩存時必須回寫(PWL)。如同F(xiàn)狀態(tài)一樣,數(shù)據(jù)無法被改變,以及節(jié)點對于對行的讀取請求以命中來響應。
當具有M狀態(tài)的行的節(jié)點接收PRL時,它以DATA_FM進行響應,而不是發(fā)出PWL并以DATA_F進行響應。
除經(jīng)由PIL之外,不允許從FM到M的轉(zhuǎn)變。不允許從FM直接改變到E。
對基本協(xié)議的改變窺探響應調(diào)用(作為窺探)提交給高速緩存用于適當響應產(chǎn)生的請求算法根據(jù)當前高速緩存狀態(tài)和入局請求類型查找下表中的響應和下一個狀態(tài)(S/I的下一個狀態(tài)表示高速緩存可把行移動到任一狀態(tài);注意即使讓本地副本無效,仍然對PRL發(fā)送DATA_F(M)--參見以下的PRL DATA E/M響應選項)
If窺探命中高速緩存行(處于M、E或F狀態(tài))
把地址標記為正被轉(zhuǎn)發(fā)把高速緩存行改變?yōu)橄乱粋€狀態(tài)向請求方發(fā)送響應無沖突數(shù)據(jù)與傳輸數(shù)據(jù)一起發(fā)送沖突列表對于硬件是有問題的。如果在傳輸鏈中間的請求知道它們處于中間并被允許在接收傳輸數(shù)據(jù)之后(以IACK/SACK)響應所緩沖的請求,則有可能避免這個沖突列表。這允許其它所有沖突節(jié)點取得進一步進展,從而讓其余READ到達歸屬節(jié)點。
通過這個選項,請求(PRL和PRIL,即讀取請求)經(jīng)過四個階段1)發(fā)送階段-發(fā)送請求2)收集階段-收集響應(隨后再發(fā)送READ或CNCL)3)數(shù)據(jù)階段-等待數(shù)據(jù)4)保持階段-在沖突鏈中間,保持數(shù)據(jù),直到XFR,對緩沖和入局請求發(fā)送IACK/SACK在這個實施例中,如果在所傳輸DATA上沒有搭載ACK,則請求將知道它處于鏈的中間。只有這個保持階段不同于基本協(xié)議。實際上,基本協(xié)議的數(shù)據(jù)階段或者保持相同(對于無沖突請求或者在時期/沖突鏈結(jié)束時的請求),或者分為兩個階段,第一個仍然是數(shù)據(jù)階段,第二個這時是當接收到XFR時保持階段結(jié)束。
對基本協(xié)議的改變由對等節(jié)點進行的請求接收對算法的唯一改變是檢查在其保持階段是否存在活動請求If地址被轉(zhuǎn)發(fā)[同上]Else if地址不是活動的[同上]Else if地址是活動的
If活動請求為PWL[同上]If入局請求處于活動請求的沖突列表中[同上]Else if活動請求處于“保持階段”If入局請求為PRL以SACK(或者在前一個PRIL得到IACK時以IACK)進行響應Else--入局請求為PRIL把活動請求標記為需要被無效以IACK響應Else if活動請求處于“數(shù)據(jù)階段”[同上]Else[同上]收集響應對此算法的唯一改變在于,請求在它發(fā)送CNCL以及其沖突列表為空時完成。換言之,系統(tǒng)進行了高速緩存到高速緩存?zhèn)鬏?,并且沒有沖突;唯一要做的是通知歸屬節(jié)點,這不需要被ACK。
注意正進行CNCL請求(具有沖突)保持在數(shù)據(jù)階段,等待XFR,即,它不進入保持階段。
在歸屬節(jié)點取消調(diào)用歸屬節(jié)點接收到CNCL(包含轉(zhuǎn)發(fā)節(jié)點和沖突列表)算法取消未完成的讀取(如果有的話)把請求節(jié)點標記為這個地址的“當前擁有者”向轉(zhuǎn)發(fā)節(jié)點發(fā)送DACKIf沒有沖突
--無沖突高速緩存時期完成Else結(jié)合沖突列表作為這個地址的“未完成請求”--等待對XFR數(shù)據(jù)的READ在歸屬節(jié)點的讀取請求調(diào)用歸屬節(jié)點接收到READ(包含沖突列表)算法If沒有當前擁有者If數(shù)據(jù)不可用必要時發(fā)起讀取等待完成讀取向請求節(jié)點發(fā)送DATA_EIf沖突列表為空--無沖突未高速緩存時期完成Else結(jié)合沖突列表作為這個地址的“未完成節(jié)點”--等待對XFR數(shù)據(jù)的讀取Else把未完成沖突添加到這個地址的“未完成節(jié)點”從“未完成結(jié)點”刪除請求節(jié)點If沒有(剩余)未完成節(jié)點向“當前擁有者”發(fā)送XFR+ACK(目標請求節(jié)點)--時期完成ElseIf一個或多個未完成節(jié)點(包括請求方)為PRIL向“當前擁有者”發(fā)送XFRI(目標請求節(jié)點)Else
向“當前擁有者”發(fā)送XFR(目標請求節(jié)點)把請求節(jié)點標記為“當前擁有者”傳輸接收這里的改變(除了處理XFR+ACK之外)是確定在保持階段中對于PRIL是否欺騙IACK響應。如果是,則采用窺探使行無效。
調(diào)用請求方接收到XFR、XFR+ACK或XFRI(包含目標節(jié)點)算法在仍未接收到時等待數(shù)據(jù)If所接收XFRI或請求被標記為需要被無效向高速緩存發(fā)送PRIL窺探Else向高速緩存發(fā)送PRL窺探--End IfIf接收到XFR+ACK把DATA+ACK包發(fā)送到目標節(jié)點Else把DATA包發(fā)送到目標節(jié)點傳輸數(shù)據(jù)接收調(diào)用請求方作為XFR的結(jié)果接收到DATA或DATA+ACK(請求方處于數(shù)據(jù)階段,因此它知道這是經(jīng)由XFR的)算法向處理器發(fā)送數(shù)據(jù)If接收到DATA包把請求移動到保持階段For各個所緩沖的請求If所緩沖的請求為PRL
以SACK(或者在前一個PRIL得到IACK時以IACK)進行響應Else--所緩沖的請求為PRIL把本地請求標記為需要被無效以IACK響應Else--接收到DATA+ACK--請求完成,以及時期完成PRL DATA E/M響應當PRL窺探命中高速緩存行時,它必須以DATA_F進行響應,以便保持正確性,而與高速緩存是否把行轉(zhuǎn)變到S或I無關(guān)。有可能在轉(zhuǎn)變到I時支持發(fā)送DATA_E,但它要求與高速緩存的附加通信,以便讓它知道它所接收的E狀態(tài)需要降級到F。算法基本上在于,如果節(jié)點已經(jīng)接收到DATA_E然后再接收SACK,則它必須把高速緩存狀態(tài)從E改變到F。
權(quán)利要求
1.一種方法,包括從第一對等節(jié)點向多節(jié)點系統(tǒng)中的多個節(jié)點發(fā)送對數(shù)據(jù)塊副本的請求;通過所述第一對等節(jié)點從第二對等節(jié)點接收對數(shù)據(jù)塊副本的請求;確定所接收的請求是否與所發(fā)送的請求有沖突;以及如果所接收的請求與所發(fā)送的請求有沖突,則向歸屬節(jié)點發(fā)送關(guān)于所述數(shù)據(jù)塊的消息,指明存在沖突。
2.如權(quán)利要求1所述的方法,其特征在于,確定所接收的請求是否與所發(fā)送的請求有沖突包括確定所接收的請求和所發(fā)送的請求是否請求相同的數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于還包括如果所接收的請求與所發(fā)送的請求有沖突,則向第三對等節(jié)點發(fā)送關(guān)于所述數(shù)據(jù)塊的消息,指明存在沖突。
4.如權(quán)利要求1所述的方法,其特征在于,送到所述歸屬節(jié)點的所述消息使所述歸屬節(jié)點向第三對等節(jié)點發(fā)送消息,使所述第三對等節(jié)點向所述第一對等節(jié)點發(fā)送所請求的數(shù)據(jù)。
5.如權(quán)利要求1所述的方法,其特征在于,所述第一對等節(jié)點經(jīng)由代表多個對等節(jié)點的對等代理與所述第二對等節(jié)點通信。
6.如權(quán)利要求1所述的方法,其特征在于,所述第一對等節(jié)點經(jīng)由代表多個節(jié)點的歸屬代理與所述歸屬節(jié)點通信。
7.一種裝置,包括要與具有多個對等實體和歸屬實體的系統(tǒng)中的多個系統(tǒng)實體耦合的接口;以及控制電路,與所述接口耦合,以便向一個或多個所述對等實體發(fā)送對數(shù)據(jù)塊副本的請求,所述控制電路檢測從其它對等實體接收的沖突請求消息,其中響應沖突請求消息,所述控制電路向?qū)谒鰯?shù)據(jù)塊的歸屬節(jié)點發(fā)送指明沖突的消息。
8.如權(quán)利要求7所述的裝置,其特征在于,所述對等實體包括一個或多個對等節(jié)點以及代表多個對等節(jié)點的一個或多個對等代理。
9.如權(quán)利要求7所述的裝置,其特征在于,所述歸屬實體包括歸屬節(jié)點。
10.如權(quán)利要求7所述的裝置,其特征在于,所述歸屬實體包括代表多個節(jié)點的歸屬代理。
11.如權(quán)利要求7所述的裝置,其特征在于還包括與所述接口耦合的處理器。
12.如權(quán)利要求11所述的裝置,其特征在于,所述控制電路包含在所述處理器中。
13.如權(quán)利要求7所述的裝置,其特征在于,如果所述請求與所述控制電路進行的請求沒有沖突,則所述控制電路向請求對等節(jié)點提供所請求數(shù)據(jù)的副本。
14.一種方法,包括通過第一對等節(jié)點向至少一個對等節(jié)點以及對應于所請求數(shù)據(jù)塊的歸屬節(jié)點發(fā)送第一請求消息以請求數(shù)據(jù)塊的副本;通過第二對等節(jié)點向至少所述第一對等節(jié)點和所述歸屬節(jié)點以及向第三對等節(jié)點發(fā)送第二請求消息以請求所述數(shù)據(jù)塊的副本;從所述第三對等節(jié)點向所述第一對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本;從所述第一對等節(jié)點向所述歸屬節(jié)點發(fā)送指明接收到來自所述第三對等節(jié)點的所述數(shù)據(jù)塊的消息;從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本;以及從所述第二對等節(jié)點向所述歸屬節(jié)點發(fā)送指明接收到來自所述第二對等節(jié)點的所述數(shù)據(jù)塊的消息。
15.如權(quán)利要求14所述的方法,其特征在于,所述數(shù)據(jù)塊包括高速緩存行。
16.如權(quán)利要求14所述的方法,其特征在于,所述第一請求消息被發(fā)送給代表多個節(jié)點的代理。
17.如權(quán)利要求14所述的方法,其特征在于,所述第二請求消息發(fā)送給代表多個節(jié)點的代理。
18.如權(quán)利要求14所述的方法,其特征在于,從所述第三對等節(jié)點向所述第一對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本包括改變所述第三對等節(jié)點所保留的任何所述數(shù)據(jù)塊的狀態(tài)。
19.如權(quán)利要求14所述的方法,其特征在于,從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本包括改變所述第一對等節(jié)點所保留的任何所述數(shù)據(jù)塊的狀態(tài)。
20.一種方法,包括從第一對等節(jié)點向至少第二對等節(jié)點、第三對等節(jié)點以及對應于數(shù)據(jù)塊的歸屬節(jié)點發(fā)送第一請求消息以請求所述數(shù)據(jù)塊的副本;從所述第二對等節(jié)點向所述第一對等節(jié)點、所述第三對等節(jié)點以及所述歸屬節(jié)點發(fā)送對于所述數(shù)據(jù)塊副本的第二請求,其中所述第二請求消息在所述第二節(jié)點接收所述第一請求消息之前被發(fā)送;從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送指明所述第一請求消息與所述第二請求消息之間沖突的消息;從所述第三對等節(jié)點向所述第一對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本;從所述第一節(jié)點向所述歸屬節(jié)點發(fā)送指明所述第一請求消息與所述第二請求消息之間沖突的消息;以及從所述歸屬節(jié)點向所述第一對等節(jié)點發(fā)送消息,使所述第一對等節(jié)點向所述第二節(jié)點發(fā)送所述數(shù)據(jù)塊的副本。
21.如權(quán)利要求20所述的方法,其特征在于還包括從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本。
22.如權(quán)利要求21所述的方法,其特征在于還包括從所述第二對等節(jié)點向所述第一對等節(jié)點發(fā)送指明所述第二請求消息與所述第一請求消息之間沖突的消息。
23.如權(quán)利要求21所述的方法,其特征在于,從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊副本包括改變所述第一對等節(jié)點所保留的任何所述數(shù)據(jù)塊的狀態(tài)。
24.如權(quán)利要求20所述的方法,其特征在于,所述數(shù)據(jù)塊包括高速緩存行。
25.如權(quán)利要求20所述的方法,其特征在于,所述第一請求消息發(fā)送給代表多個節(jié)點的代理。
26.如權(quán)利要求20所述的方法,其特征在于,所述第二請求消息發(fā)送給代表多個節(jié)點的代理。
27.一種方法,包括從第一對等節(jié)點向第二對等節(jié)點、第三對等節(jié)點以及對應于數(shù)據(jù)塊的歸屬節(jié)點發(fā)送第一請求消息以請求所述數(shù)據(jù)塊的副本,其中發(fā)往所述第三對等節(jié)點的所述消息被延遲;從所述第二對等節(jié)點向所述第一對等節(jié)點、第三對等節(jié)點以及所述歸屬節(jié)點發(fā)送第二請求消息以請求所述數(shù)據(jù)塊的副本,其中,在所述第三對等節(jié)點接收到所述延遲的第一消息之前,所述第二對等節(jié)點發(fā)送所述第二請求消息;從所述第二對等節(jié)點向所述第一對等節(jié)點發(fā)送指明所述第一消息與所述第二消息之間沖突的消息;從所述第三對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本;從所述第二對等節(jié)點向所述歸屬節(jié)點發(fā)送指明所述第一請求消息與所述第二請求消息之間沖突的消息;以及從所述歸屬節(jié)點向所述第二對等節(jié)點發(fā)送消息,使所述第二對等節(jié)點向所述第一對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本。
28.如權(quán)利要求27所述的方法,其特征在于還包括從所述第二對等節(jié)點向所述第一對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本。
29.如權(quán)利要求27所述的方法,其特征在于,所述數(shù)據(jù)塊包括高速緩存行。
30.如權(quán)利要求27所述的方法,其特征在于,所述第一節(jié)點把所述第一請求消息發(fā)送給代表多個節(jié)點的代理。
31.如權(quán)利要求27所述的方法,其特征在于,所述第二節(jié)點把所述第二請求消息發(fā)送給代表多個節(jié)點的代理。
32.如權(quán)利要求27所述的方法,其特征在于,從所述第三對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊副本包括改變所述第一對等節(jié)點所保留的任何所述數(shù)據(jù)塊的狀態(tài)。
33.一種方法,包括從第一對等節(jié)點向第二對等節(jié)點以及向歸屬節(jié)點發(fā)送第一消息以請求數(shù)據(jù)塊副本;從第二對等節(jié)點向所述第一對等節(jié)點以及向所述歸屬節(jié)點發(fā)送對于所述數(shù)據(jù)塊副本的第二請求;從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送指明所述第一消息與所述第二消息之間沖突的消息;從所述第二節(jié)點向所述第一節(jié)點發(fā)送指明所述第二節(jié)點沒有所述數(shù)據(jù)塊的有效副本的消息;從所述歸屬節(jié)點向所述第一對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本;以及從所述歸屬節(jié)點向所述第一對等節(jié)點發(fā)送消息,使所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本。
34.如權(quán)利要求33所述的方法,其特征在于還包括從所述第二對等節(jié)點向所述第一對等節(jié)點發(fā)送指明所述第二消息與所述第一消息之間沖突的消息。
35.如權(quán)利要求33所述的方法,其特征在于還包括從所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送指明所述第一對等節(jié)點沒有所述數(shù)據(jù)塊的有效副本的消息。
36.如權(quán)利要求35所述的方法,其特征在于還包括從所述第二對等節(jié)點向所述歸屬節(jié)點發(fā)送指明所述第一請求與所述第二請求之間沖突的消息。
37.如權(quán)利要求33所述的方法,其特征在于,所述數(shù)據(jù)塊包括高速緩存行。
38.如權(quán)利要求33所述的方法,其特征在于,所述歸屬節(jié)點以單個消息來發(fā)送所述數(shù)據(jù)塊的副本以及所述消息,使所述第一對等節(jié)點向所述第二對等節(jié)點發(fā)送所述數(shù)據(jù)塊的副本。
39.如權(quán)利要求33所述的方法,其特征在于,所述第一消息被發(fā)送給代表多個節(jié)點的代理。
40.如權(quán)利要求39所述的方法,其特征在于,所述第二消息被發(fā)送給代表多個節(jié)點的所述代理。
全文摘要
沖突解決技術(shù)提供一致性,使得如果每個節(jié)點在該節(jié)點已發(fā)出其自身請求之后監(jiān)測所有請求,則所有沖突可被沖突請求方中至少一個檢測到。如果行處于“獨占”、“已修改”或“轉(zhuǎn)發(fā)”狀態(tài),則沖突在保存唯一副本的節(jié)點上解決。沖突解決的勝方以及可能還有敗方向歸屬節(jié)點報告沖突,其中歸屬節(jié)點使沖突報告成對,并發(fā)出轉(zhuǎn)發(fā)指令以確保所有請求節(jié)點最終接收到所請求數(shù)據(jù)。如果被請求高速緩存行是未高速緩存的或者僅存在于“共享”狀態(tài)中,則歸屬節(jié)點提供高速緩存節(jié)點的副本并解決沖突。在一個實施例中,在接收到確認消息之前的所有響應之后的封鎖期間允許所有沖突節(jié)點認識到它們涉及的沖突。
文檔編號G06F15/16GK1849592SQ200380106550
公開日2006年10月18日 申請日期2003年11月26日 優(yōu)先權(quán)日2002年12月19日
發(fā)明者H·胡姆, J·古德曼, R·比爾斯, G·拉尼斯 申請人:英特爾公司