專利名稱:用于緩存的網(wǎng)絡(luò)的廣播協(xié)議的制作方法
用于緩存的網(wǎng)絡(luò)的廣播協(xié)議
背景技術(shù):
在計算中,緩存一致性是指存儲在共享資源的本地緩存中的數(shù)據(jù)的一致性。當系統(tǒng)中的客戶端維護公用存儲器資源的緩存時,可能會出現(xiàn)非一致數(shù)據(jù)的問題。對多處理系統(tǒng)中的CPU尤其是這樣的。緩存一致性旨在在緩存之間和在緩存和存儲器之間維護一致性,以便緩存的存在對系統(tǒng)程序員而言基本上是不可見的,它們對性能的影響除外。一致性協(xié)議是在分布式共享存儲器的系統(tǒng)中的所有緩存之間維護一致性的協(xié)議。對于給定存儲器模型
發(fā)明內(nèi)容
一般而言,一方面,本發(fā)明涉及用于管理緩存的方法。該方法包括通過操作地連接到第一緩存的第一緩存代理并使用第一物理網(wǎng)絡(luò),廣播對存儲器地址的第一對等(P2P)請求;通過操作地連接到第二緩存的第二緩存代理并使用第二物理網(wǎng)絡(luò),基于所述第一P2P請求的類型以及對應(yīng)于所述存儲器地址的所述第二緩存中的緩存行的狀態(tài),發(fā)出對所述第一 P2P請求的第一響應(yīng);通過操作地連接到第三緩存的第三緩存代理,發(fā)出對所述第一 P2P請求的第二響應(yīng);以及,通過所述第一緩存代理并基于所述第一響應(yīng)和所述第二響應(yīng),升級對應(yīng)于所述存儲器地址的所述第一緩存中的緩存行的狀態(tài)。一般而言,一方面,本發(fā)明涉及用于管理緩存的方法。該方法包括通過操作地連接到第一緩存的第一緩存代理并使用第一物理網(wǎng)絡(luò),廣播對存儲器地址的對等(P2P)回寫請求;通過操作地連接到第二緩存的第二緩存代理并響應(yīng)于所述P2P回寫請求,標識所述第二緩存中的對應(yīng)于所述存儲器地址的緩存行的共享狀態(tài);通過所述第二緩存代理并響應(yīng)于標識所述共享狀態(tài),使用第二物理網(wǎng)絡(luò),向所述第一緩存代理發(fā)出回寫肯定確認(WBAck);通過操作地連接到第三緩存的第三緩存代理并響應(yīng)于所述P2P回寫請求,標識所述第三緩存中的對應(yīng)于所述存儲器地址的緩存行的無效狀態(tài);通過所述第三緩存代理并響應(yīng)于標識所述無效狀態(tài),向所述第一緩存代理發(fā)出回寫拉(WBPull)請求;通過所述第一緩存代理,將所述第一緩存中的對應(yīng)于所述存儲器地址的緩存行的狀態(tài)傳輸?shù)綇陌ㄋ龅诙彺婧退龅谌彺娴慕M中選擇的所選緩存;以及,將所述第一緩存中的所述緩存行降級?!愣?一方面,本發(fā)明涉及用于管理緩存的系統(tǒng)。該系統(tǒng)包括包括第一核、第二核,以及第三核的第一處理器;位于所述第一處理器上的并與所述第一核相關(guān)聯(lián)的第一緩存;位于所述第一處理器上的并與所述第二核相關(guān)聯(lián)的第二緩存;位于所述第一處理器上的并與所述第三核相關(guān)聯(lián)的第三緩存;第一緩存代理,操作地連接到第一緩存并被配置成使用所述處理器上的第一物理網(wǎng)絡(luò)廣播對存儲器地址的對等(P2P)請求;第二緩存代理,操作地連接到所述第二緩存并被配置成使用所述處理器上的第二物理網(wǎng)絡(luò),基于所述P2P請求的類型和所述第二緩存中的對應(yīng)于所述存儲器地址的緩存行的狀態(tài),發(fā)出對該P2P請求的第一響應(yīng);第三緩存代理,操作地連接到第三緩存并被配置成使用所述第二物理網(wǎng)絡(luò)發(fā)出對所述P2P請求的第二響應(yīng),其中,第一緩存代理進一步被配置成基于第一響應(yīng)和第二響應(yīng)修改第一緩存中的對應(yīng)于該存儲器地址的緩存行的狀態(tài)。通過下面的描述和所附權(quán)利要求書,本發(fā)明的其他方面將變得顯而易見。
圖I示出了描繪了根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)的框圖。圖2示出了根據(jù)本發(fā)明的一個或多個實施例的關(guān)于緩存行(cacheline)狀態(tài)的表。圖3示出了根據(jù)本發(fā)明的一個或多個實施例的關(guān)于對等(P2P)請求類型的表。圖4示出了根據(jù)本發(fā)明的一個或多個實施例的請求和響應(yīng)分組。
圖5示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖6示出了關(guān)于對P2P請求的響應(yīng)的表。圖I示出了關(guān)于響應(yīng)于P2P請求而對緩存行狀態(tài)的更改的表。圖8示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖9示出了關(guān)于對于多個P2P請求類型準許的初始緩存行狀態(tài)的表。圖10示出了關(guān)于根據(jù)接收到的對P2P請求的響應(yīng)而對緩存行狀態(tài)的更改的表。圖11A、11B,以及IlC示出了根據(jù)本發(fā)明的一個或多個實施例的示例。圖12示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖13示出了關(guān)于根據(jù)接收到的響應(yīng)和現(xiàn)有緩存行狀態(tài)的數(shù)據(jù)包類型和新緩存行狀態(tài)的表。圖14示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖15A、15B,以及15C示出了根據(jù)本發(fā)明的一個或多個實施例的示例。圖16示出了根據(jù)本發(fā)明的一個或多個實施例的計算機系統(tǒng)。
具體實施例方式現(xiàn)在將參考附圖詳細描述本發(fā)明的具體實施例。為確保一致性,各種圖形中的相同元件通過相同引用編號來表示。在下面的對本發(fā)明的各實施例的詳細描述中,闡明了眾多具體細節(jié)以提供對本發(fā)明的更加全面的理解。然而,對本領(lǐng)域的技術(shù)人員顯而易見的是,本發(fā)明也可以在沒有這些具體細節(jié)的情況下實施,在其他情況下,沒有對已知的特征進行詳細描述,以避免不必要地使描述復雜化。一般而言,本發(fā)明的各實施例提供用于在多核處理器上的多個緩存之間維護緩存一致性的系統(tǒng)和方法。具體而言,每一緩存都與緩存代理和多核處理器的至少一個核相關(guān)聯(lián)。此外,每一緩存都將多個緩存行保持在各種狀態(tài)。為解決緩存未中和/或?qū)σ粋€緩存行的控制轉(zhuǎn)移到另一個緩存,緩存代理廣播對等(P2P)請求。緩存代理還處理對P2P請求的響應(yīng)(例如,來自其他緩存代理)。圖I示出了根據(jù)本發(fā)明的一個或多個實施例的系統(tǒng)(100)。如圖I所示,系統(tǒng)
(100)包括具有可操作地連接到多個緩存(例如,緩存I (110)、緩存X (120))的多個處理器核(例如,核Yl (114)、核Y2 (116)、核Xl (124)、核X2 (126))的處理器(199)。處理器(199)還包括可操作地連接到一個或多個外部(即,處理器之外)的設(shè)備的直接存儲器訪問(DMA)緩存(130);用于與處理器之外的主存儲器進行通信的一個或多個存儲器控制單元(MCU)(例如,MCU A (144),MCU B (146));以及,對于給定存儲器地址,與用于在處理器(199)及其他處理器之間維護緩存一致性的處理器之間的一致性協(xié)議進行交互的一個或多個網(wǎng)關(guān)(例如,網(wǎng)關(guān)(152))。為了成功地執(zhí)行指令,處理器核(114、116、124、126)和/或外部設(shè)備必須頻繁地訪問(例如,讀寫)主存儲器中的一個或多個存儲器地址。為了加快這些指令的執(zhí)行,某些存儲器地址的內(nèi)容可以本地存儲在緩存(110,120,130)中,這比主存儲器具有更快的訪問時間。如果緩存(110,120,130)未存儲所需的存儲器地址的內(nèi)容,或者如果緩存(110,120,130)未在所需的狀態(tài)存儲存儲器地址的內(nèi)容(下面所討論的),則發(fā)生緩存未中。緩存(110,120,130)將對應(yīng)于一個或多個存儲器地址的緩存行存儲在主存儲器中。例如,緩存I (110)存儲緩存行E (111)、緩存行F (112),以及緩存行G (113)。每一緩存行(111,112,113 )對應(yīng)于主存儲器中的一個或多個存儲器地址。此外,每一緩存行(111, 112,113)還可以被系統(tǒng)(100)中的另一個緩存(例如,120,130)保存。如果一緩存行在任何緩存(110,120,130)中有效,則唯一緩存(110,120,130)被指定為該緩存行的“供給者”。供給者供應(yīng)緩存行以服務(wù)另一個緩存中的緩存未中。在本發(fā)明的一個或多個實施例中,在填充或升級緩存行之后,請求者變?yōu)楣┙o者。作為替代地,供給者仍然為供給者。緩存I (110)以各種狀態(tài)(118)中的一個存儲每一緩存行(111,112,113)。圖2示出了描述了可以保持緩存行的各種狀態(tài)的表(200)。如果系統(tǒng)(100)中的單個緩存(110,120,130)保持一緩存行,則它處于供給者狀態(tài);如果多個緩存(110,120,130)保持一緩存行,則一個緩存處于供給者狀態(tài),其他緩存處于狀態(tài)S。如果緩存(110,120,130)在狀態(tài)M或狀態(tài)E中保持緩存行,則它具有對緩存行的寫權(quán)限。然而,如果處理器(199)內(nèi)的多個緩存共享一緩存行,則處理器(199)可以訪問該緩存行,即使每一單個緩存沒有這樣的訪問權(quán)。表(200)還示出在供給者緩存的狀態(tài)中編碼的處理器訪問權(quán)限(S卩,處理器之間的狀態(tài))。圖2還包括帶有各種處理器之間狀態(tài)的描述的表(205)。在本發(fā)明的一個或多個實施例中,網(wǎng)關(guān)(152)為緩存(110,120,130)中存在的每個緩存行維護處理器之間狀態(tài)的副本。仍參考圖I,在本發(fā)明的一個或多個實施例中,處理器(199)包括可操作地連接到緩存(110,120,130)的多個緩存代理(例如,緩存代理I (102),緩存代理X (122),緩存代理Y (132))。緩存代理(102,122,132)被配置成,響應(yīng)于緩存未中或為了轉(zhuǎn)移對緩存行的控制,將各種類型的P2P請求廣播到其他緩存代理(102,122,132),并處理對P2P請求的響應(yīng)(來自其他緩存代理)。類似地,緩存代理(102,122,132)還被配置成監(jiān)聽(S卩,接收)各種類型的廣播的P2P請求,并發(fā)出對P2P請求的響應(yīng)。圖3示出了列出多個P2P請求類型,對P2P請求類型的描述,以及P2P請求類型的觸發(fā)的表(300)。圖3還示出了列出多種響應(yīng)類型(S卩,對P2P請求的)以及對響應(yīng)類型的描述的表(350)。圖4示出了根據(jù)本發(fā)明的一個或多個實施例的P2P請求數(shù)據(jù)包(401)和響應(yīng)數(shù)據(jù)包(415)。P2P請求數(shù)據(jù)包(401)可以被緩存代理(102,122,132)用來廣播對應(yīng)于存儲器地址的P2P請求(S卩,圖3的表(300)中所描述的P2P請求中的一個)。類似地,響應(yīng)數(shù)據(jù)包(415)可以由緩存代理(102,122,132)響應(yīng)于對應(yīng)于存儲器地址的P2P請求而發(fā)出。如圖4所示,P2P請求數(shù)據(jù)包(401)具有多個字段,包括類型字段(403)、事務(wù)標識(TID)字段(405)、設(shè)置字段(407),以及標記字段(409)。也如圖4所示,響應(yīng)數(shù)據(jù)包(415)具有多個字段,包括類型字段(417)、TID字段(419)、分配者TID字段(421),以及數(shù)據(jù)字段(423)。所屬領(lǐng)域的技術(shù)人員,在閱讀此詳細描述之后,將理解P2P請求數(shù)據(jù)包(401)和/或響應(yīng)數(shù)據(jù)包(415)可以具有未示出的額外的字段。此外,并非所有的數(shù)據(jù)包都攜帶全部字段。在本發(fā)明的一個或多個實施例中,類型字段(403)標識對于緩存行和對應(yīng)的存儲器地址的P2P請求的類型(例如,上文在圖3的表(300)中所討論的PRTS、PRTO、PRTU、PWB);TID字段(405)是正在廣播的緩存代理的ID和由正在廣播的緩存代理指派給P2P請求的ID的串聯(lián);設(shè)置字段(407)標識存儲器地址的L3索引(即,存儲器地址的比特[19:6]);以及,標記字段(409)標識存儲器地址的L3標記(即,存儲器地址的比特[49:20])。在本發(fā)明的一個或多個實施例中,類型字段(417)標識發(fā)出的響應(yīng)的類型(例如,圖3的表(350)中的響應(yīng)類型中的一個);TID字段(419)等于觸發(fā)P2P請求的TID字段(405 );分配者TID字段(421)是由作出響應(yīng)的緩存代理為標識該響應(yīng)所創(chuàng)建的ID ;以及,數(shù)據(jù)字段(423)存儲緩存行的數(shù)據(jù)值。在本發(fā)明在一個或多個實施例中,當響應(yīng)是WBAck時, 分配者TID字段(421)中的值被稱為WBAckID。在本發(fā)明在一個或多個實施例中,當響應(yīng)是WBPull時,分配者TID字段(421)中的值被稱為WBPul I ID?;仡^參考圖1,在本發(fā)明的一個或多個實施例中,緩存代理(102,122,132)包括請求表。例如,緩存代理I (102)包括請求表(104)。請求表(104)中的每一條目都對應(yīng)于由緩存代理I (102)廣播的P2P請求。此外,請求表(104)中的每一條目都包括P2P請求的狀態(tài)(例如,空閑、活動、失敗等等)、與P2P請求相關(guān)聯(lián)的存儲器地址、由緩存代理I (102)響應(yīng)于P2P請求而接收到的任何響應(yīng)、以及P2P請求的TID (上文參考圖4所討論的)。此外,請求表(104)中的條目通過P2P請求的TID來索引。在本發(fā)明的一個或多個實施例中,緩存代理(102,122,132)包括回寫表。例如,緩存代理I (102)包括回寫表(106)?;貙懕?106)將傳入的回寫記錄(S卩,寫日志)到緩存I(110)。具體而言,回寫請求表(106)中的每一條目都包括回寫的狀態(tài)(即,活動或不活動)以及對應(yīng)于回寫的存儲器地址。仍參考圖1,在本發(fā)明的一個或多個實施例中,緩存代理(102,122,132)、網(wǎng)關(guān)(152),MCU代理(142)使用環(huán)形網(wǎng)絡(luò)(180)可操作地連接。因此,環(huán)形網(wǎng)絡(luò)(180)可以用于廣播和接收P2P請求。環(huán)形網(wǎng)絡(luò)(180)可以是物理單向或物理雙向網(wǎng)絡(luò)。另外,系統(tǒng)(100)包括用于傳輸對P2P請求的響應(yīng)和與某些響應(yīng)相關(guān)聯(lián)的數(shù)據(jù)(即,緩存行)的一個或多個物理數(shù)據(jù)和響應(yīng)網(wǎng)絡(luò)(160)。在本發(fā)明的一個或多個實施例中,數(shù)據(jù)和響應(yīng)網(wǎng)絡(luò)(160)中的至少一個網(wǎng)絡(luò)是對于點對點響應(yīng)的單驅(qū)動每軌道自由運行(single-driver-per-trackfree-running)管道網(wǎng)絡(luò)。圖5示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖5所示出的過程可以,例如,由從屬緩存代理響應(yīng)于來自請求者緩存代理的傳入的非回寫P2P請求(S卩,PRTS、PRT0,以及PRTU請求)而執(zhí)行。圖5所示出的步驟的序列在本發(fā)明的各實施例之間可不同,步驟中的一個或多個可以并行地執(zhí)行和/或可以是可選的。一開始,對應(yīng)于存儲器地址的P2P請求由從屬緩存代理接收(步驟502)。P2P請求可以由請求者緩存代理在物理網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò)(180),上文參考圖I所討論的)上廣播。此外,P2P請求可以對應(yīng)于標識P2P請求的類型、與P2P請求相關(guān)聯(lián)的TID,以及用于標識緩存行以及與P2P請求相關(guān)聯(lián)的對應(yīng)的存儲器地址的設(shè)置和標記字段的數(shù)據(jù)包(例如,上文參考圖4所討論的P2P請求數(shù)據(jù)包(401))。在步驟504中,確定非回寫P2P請求(S卩,PRTS、PRTO、PRTU)、WBPull或WBAck(下面所討論的)是否對于該存儲器地址已經(jīng)是未決的。在本發(fā)明的一個或多個實施例中,通過基于存儲器地址來搜索從屬緩存代理的請求表(例如,上文參考圖I所討論的請求表(104)),來確定未決的非回寫P2P請求的存在。在本發(fā)明的一個或多個實施例中,通過基于存儲器地址來搜索從屬緩存代理的回寫表(例如,上文參考圖I所討論的回寫表(106)),來確定未決的WBPull或WBAck (下面所討論的)的存在。當確定對于存儲器地址存在未決的非回寫P2P請求、WBPu11或WBAck時,進程前進到步驟510。然而,當確定沒有未決的非回寫P2P請求、WBPull或WBAck時,進程前進到步驟506。在步驟506中,基于P2P請求的類型和對應(yīng)于存儲器地址的從屬緩存行的狀態(tài),由 從屬緩存代理發(fā)出響應(yīng)。發(fā)出的響應(yīng)可以對應(yīng)于標識響應(yīng)的類型以及與接收到的P2P請求相關(guān)聯(lián)的TID的響應(yīng)數(shù)據(jù)包(例如,響應(yīng)數(shù)據(jù)包(415))。響應(yīng)的類型基于P2P請求的類型和從屬緩存中的從屬緩存行的狀態(tài)。圖6示出了標識根據(jù)P2P請求類型和從屬緩存中的緩存行的狀態(tài)的響應(yīng)類型的表(600)。例如,如圖6所示,當傳入的P2P請求是PRTO請求,從屬緩存中的緩存行的狀態(tài)是E或X時,發(fā)出類型DataE的響應(yīng)。類似地,當傳入的P2P請求是PRTU,從屬緩存中的緩存行的狀態(tài)是S時,發(fā)出類型Ack的響應(yīng)。在本發(fā)明的一個或多個實施例中,響應(yīng)是在不同于在其上面接收到P2P請求的物理網(wǎng)絡(luò)的物理網(wǎng)絡(luò)(例如,數(shù)據(jù)和響應(yīng)網(wǎng)絡(luò)(160))上發(fā)出的。此外,與傳入的P2P請求不同,發(fā)出的響應(yīng)不是廣播消息。相反,發(fā)出的響應(yīng)是點對點消息。發(fā)出的響應(yīng)的意圖的目的地(即,請求者緩存代理)可以根據(jù)響應(yīng)數(shù)據(jù)包中的TID來標識。仍參考圖5,在步驟508中,從屬緩存中的緩存行的狀態(tài)被修改。例如,響應(yīng)于接收到P2P請求并發(fā)出響應(yīng),從屬緩存可能失去其作為緩存行的供給者的狀態(tài)。圖7示出了描述了根據(jù)傳入的P2P請求類型和初始緩存行狀態(tài)對從屬緩存中的緩存行的狀態(tài)的修改的表(700)。例如,如圖7所示,當傳入的P2P請求是PRTS請求并且從屬緩存中的緩存行的狀態(tài)是D (即,從屬緩存是緩存行的供給者)時,緩存行的狀態(tài)被設(shè)置(即,修改)為狀態(tài)S。如表(700)所示,如果從屬緩存在任何供給者狀態(tài)(即,M,D,0,E,X,Q)保持緩存行并且接收到PRTS,則從屬緩存將狀態(tài)更改(S卩,修改)為非供給者共享的狀態(tài)S。作為替代地,從屬緩存可以繼續(xù)在供給者狀態(tài)保持緩存行(未示出),盡管接收到PRTS。這對應(yīng)于供給者(S卩,從屬緩存)保持是供給者的各實施例。如上文所討論的,當存在對于該地址的未決的非回寫P2P請求、WBPull或WBAck時,進程到達步驟510。在步驟510中,發(fā)出類型否定確認(NAck)的響應(yīng)。該響應(yīng)包括傳入的P2P請求的TID。然后,進程結(jié)束。圖8示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖8所示出的進程可以例如由請求者緩存代理在廣播非回寫P2P請求(S卩,PRTS、PRT0,以及PRTU請求)時執(zhí)行。圖8所示出的步驟的序列在本發(fā)明的各實施例之間可不同,步驟中的一個或多個可以并行地執(zhí)行和/或可以是可選的。—開始,標識P2P請求的觸發(fā)(步驟802)。觸發(fā)可以對應(yīng)于緩存未中。換言之,該緩存沒有相關(guān)聯(lián)的處理核所需的緩存行,或者該緩存未將緩存行保持在處理核所需的狀態(tài)。在圖3的表(300)中討論了對于P2P請求的觸發(fā)。
在步驟804中,確定P2P請求是否已經(jīng)對于對應(yīng)于該緩存行的存儲器地址是未決的。在本發(fā)明的一個或多個實施例中,可以通過基于存儲器地址來搜索請求者緩存代理的請求表,來標識對該存儲器地址的現(xiàn)有的P2P請求。當確定沒有對于該存儲器地址的未決P2P請求時,進程前進到步驟806。否則,進程結(jié)束。在步驟806中,確定緩存是否在對于P2P請求準許的狀態(tài)下保持緩存行。圖9示出了帶有根據(jù)P2P請求類型的被許可的初始緩存行狀態(tài)的表(900)。例如,如圖9所示,類型PRTS或PRTO的P2P請求只有當在狀態(tài)I中保持緩存行時才準許類型PRTS或PRTO的P2P請求。類似地,如 圖9所示,只有當在狀態(tài)D、0、X、Q或S中的一個保持緩存行時,才準許類型PRTU的P2P請求。當確定緩存行被保持在準許的狀態(tài)時,進程前進到步驟808。否貝U,進程結(jié)束。在步驟808中,生成并廣播對應(yīng)于存儲器地址的P2P請求。在本發(fā)明的一個或多個實施例中,生成P2P請求包括生成標識P2P請求的TID。P2P請求可以對應(yīng)于包括TID、P2P請求的類型,以及用于標識存儲器地址的設(shè)置和標記字段的數(shù)據(jù)包(例如,上文參考圖4所討論的P2P請求數(shù)據(jù)包(401))。此外,P2P請求可以在可操作地連接多個緩存代理的物理網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò)(180))上廣播。在步驟810中,P2P請求被記錄(S卩,寫日志)在請求者緩存的請求表(例如,請求表(104))中。具體而言,通過TID索引的請求表中的條目被填充以P2P請求的狀態(tài)(例如,空閑、活動、失敗等等)、與P2P請求相關(guān)聯(lián)的存儲器地址、由緩存代理響應(yīng)于P2P請求(下面討論)接收到的任何響應(yīng)、以及P2P請求的TID。在步驟812中,由請求者緩存代理接收對P2P請求的響應(yīng)。響應(yīng)可以對應(yīng)于標識響應(yīng)的類型、P2P請求的TID,以及在某些情況下,數(shù)據(jù)(即,緩存行)的數(shù)據(jù)包(例如,上文參考圖4所討論的響應(yīng)數(shù)據(jù)包(415))。響應(yīng)可以被記錄(即,寫日志)在通過TID索引的請求者表的條目中。在步驟814中,確定接收到的響應(yīng)是否是帶有處理器之間的狀態(tài)(例如,AckM,AckO, AckE, AckS)的肯定確認,或帶有處理器之間的狀態(tài)(例如,DataM, DataO, DataE,DataS)的數(shù)據(jù)。當確定接收到的響應(yīng)是肯定確認或帶有處理器之間的狀態(tài)的數(shù)據(jù)時,進程前進到步驟816。否則,進程前進到步驟820。在步驟816中,對應(yīng)于存儲器地址的緩存行被利用接收到的響應(yīng)中的數(shù)據(jù)來填充/更新。所屬領(lǐng)域的技術(shù)人員,在閱讀此詳細描述之后,將理解只有當接收到的響應(yīng)是帶有處理器之間的狀態(tài)的數(shù)據(jù)時才執(zhí)行步驟816。在步驟818中,請求者緩存中的緩存行的狀態(tài)被修改。圖10示出了帶有根據(jù)接收到的響應(yīng)類型的下一緩存行狀態(tài)的表(1005)。例如,如圖10所示,如果響應(yīng)類型是DataE或AckE,則緩存行的狀態(tài)被設(shè)置為X。類似地,如果響應(yīng)類型是DataM或AckM,則緩存行的狀態(tài)被設(shè)置為D。在本發(fā)明的一個或多個實施例中,由請求者緩存代理來設(shè)置緩存行的狀態(tài)。在本發(fā)明的一個或多個實施例中,如果請求者響應(yīng)于PRTS接收到數(shù)據(jù)(例如,DataM、DataO、DataE、DataS),則緩存行的狀態(tài)被設(shè)置為S。這對應(yīng)于其中供給者(即,從屬緩存)保持是供給者的各實施例。仍參考圖8,在步驟820中,確定是否已接收到全部響應(yīng)。當確定已經(jīng)接收到全部響應(yīng)時,進程前進到步驟822。否則,進程返回到步驟812。在步驟822中,如果P2P請求是PRTO或PRTU,并且沒有接收到Nack響應(yīng),則緩存行的狀態(tài)基于其當前狀態(tài)(即,在步驟818中設(shè)置的狀態(tài))被設(shè)置為最終狀態(tài)。圖10示出了帶有根據(jù)緩存行的當前狀態(tài)和P2P請求類型的緩存行的最終狀態(tài)的表(1010)。例如,如果P2P請求是PRTO請求,并且當前緩存行狀態(tài)是X,則緩存行被設(shè)置為最終狀態(tài)E。類似地,如果P2P請求是PRTO請求,并且當前緩存行狀態(tài)是Q,則最后的緩存行狀態(tài)也是Q (即,無變化)。 所屬領(lǐng)域的技術(shù)人員,在閱讀此詳細描述之后,將理解如果最后的緩存行狀態(tài)是M或E,P2P請求對于PRTO或PRTU請求是成功的。所屬領(lǐng)域的技術(shù)人員,在閱讀此詳細描述之后,也將理解如果最后的緩存行狀態(tài)是D、0、X或Q,則P2P請求對于PRTS請求是成功的。在步驟824中,現(xiàn)在完成P2P請求,對應(yīng)于P2P請求的請求表中的條目可以被復位(即,狀態(tài)被設(shè)置為完成,等等)。圖IlA示出了根據(jù)本發(fā)明的一個或多個實施例的示例。具體而言,圖IlA對應(yīng)于成功的PRTS請求。附接到緩存0 (1100 )的緩存代理發(fā)出請求,緩存I (1101)、緩存2 (1102 ),以及緩存3 (1103)是從屬緩存。緩存2 (1102)處于狀態(tài)Q ;其他從屬緩存處于狀態(tài)I或S。緩存2 (1102)提供DataS數(shù)據(jù)包(指出處理器之間的狀態(tài)是S),并被降級到狀態(tài)S ;當緩存0 (1100)接收到DataS數(shù)據(jù)包時,數(shù)據(jù)被在狀態(tài)Q安裝。在此示例中,網(wǎng)關(guān)(1104)沒有用于服務(wù)任何請求失敗的資源,如此,網(wǎng)關(guān)返回Nack。由于PRTS請求是成功的,因此,隨后不需要網(wǎng)關(guān)執(zhí)行任何動作(1104 )。圖IlB示出了根據(jù)本發(fā)明的一個或多個實施例的示例。具體而言,圖IlB對應(yīng)于不成功的PRTS請求。附接到緩存0 (1100)的緩存代理發(fā)出請求,緩存I (1101)、緩存2(1102),以及緩存3 (1103)是從屬緩存。緩存2 (1102)返回否定確認,因為它具有其自己的未決PRTS,該未決的PRTS已從緩存I (1101)獲取緩存行,使緩存I (1101)中的緩存行保持在狀態(tài)S。緩存0(1100)的PRTS在它不再是緩存行的供給者之后到達緩存I (1101)。緩存0 (1100)的PRTS在DataS數(shù)據(jù)包到達之前到達緩存2 (1102)。來自不同的緩存代理的對同一個緩存行的請求之間的這樣的競爭是不可避免的,因為沒有對于同一個緩存行的請求的序列化點。盡管缺乏這種序列化,對等協(xié)議在緩存之間保持一致性,即使它不保證向前進展。圖IlC示出了根據(jù)本發(fā)明的一個或多個實施例的示例。圖IlC基本上是對應(yīng)于圖IlB的時間線。與在代理之間傳遞的消息一起,示出了每一代理(即,緩存0 (1100)、緩存I (1101)、緩存2 (1102)、緩存3 (1103),以及網(wǎng)關(guān)(1104)的時間線??梢钥闯觯彺?(1102)贏得與供給者緩存I (1101)的競爭。當請求正在未決時(用中斷的時間線表示)接收到的PRTS請求也可以看出導致否定確認。圖12示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖12所示出的過程可以,例如,由請求者緩存代理在廣播P2P回寫(PWB)請求時執(zhí)行。圖12所示出的步驟的序列在本發(fā)明的各實施例之間可不同,步驟中的一個或多個可以并行地執(zhí)行和/或可以是可選的。一開始,標識PWB請求的觸發(fā)(步驟1202)。PffB請求是將緩存行的所有權(quán)轉(zhuǎn)移到從屬緩存的請求。因此,觸發(fā)可以是由與請求者緩存代理相關(guān)聯(lián)的處理器核所發(fā)出的指令。在圖3的表(300)中討論了對于P2P請求的觸發(fā)。在步驟1204中,確定P2P請求是否已經(jīng)對于對應(yīng)于緩存行的存儲器地址是未決的。在本發(fā)明的一個或多個實施例中,可以通過基于存儲器地址來搜索請求者緩存代理的請求表,標識對存儲器地址的現(xiàn)有的P2P請求。當確定沒有對于存儲器地址的P2P請求是未決的時,進程前進到步驟1206。否則,進程結(jié)束。在步驟1206中,確定緩存是否對于PWB請求在準許的狀態(tài)保持緩存行。在本發(fā)明的一個或多個實施例中,緩存必須在狀態(tài)M、D、O、E、X,或Q保持緩存行,以發(fā)出PWB請求。當確定在準許的狀態(tài)保持緩存行時,進程前進到步驟1208。否則,進程結(jié)束。在步驟1208中,生成并廣播對應(yīng)于存儲器地址的PWB請求。在本發(fā)明的一個或多個實施例中,生成PWB請求包括為PWB請求生成TID。PffB請求可以對應(yīng)于包括TID、P2P請求的類型,以及用于標識存儲器地址的設(shè)置和標記字段的數(shù)據(jù)包(例如,上文參考圖4所討論的P2P請求數(shù)據(jù)包(401))。此外,P2P請求可以在操作地連接多個緩存代理的物理網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò)(180))上廣播。在步驟1210中,PWB請求被記錄(即,寫日志)在請求者緩存的請`求表(例如,請求表(104))中。具體而言,通過TID索引的請求表中的條目被利用PWB請求的狀態(tài)(例如,空閑、活動、失敗等等)、與PWB請求相關(guān)聯(lián)的存儲器地址、由緩存代理響應(yīng)于PWB請求(下面所討論的)接收到的任何響應(yīng),以及PWB請求的TID來填充。在步驟1212中,由請求者緩存代理接收對來自從屬緩存代理的P2P請求的響應(yīng)。響應(yīng)可以對應(yīng)于標識該響應(yīng)的類型、PWB請求的TID、由作出響應(yīng)的從屬緩存代理所創(chuàng)建的并標識作出響應(yīng)的從屬緩存代理的分配者TID字段的數(shù)據(jù)包(例如,上文參考圖4所討論的響應(yīng)數(shù)據(jù)包(415 ))。在本發(fā)明的一個或多個實施例中,當響應(yīng)是WBAck時,分配者TID字段的值被稱為WBAckID。在本發(fā)明的一個或多個實施例中,當響應(yīng)是WBPull時,分配者TID字段的值被稱為WBPullID。響應(yīng)可以被記錄(即,寫日志)在通過TID索引的請求者表的條目中。在步驟1214中,確定接收到的響應(yīng)是否是WBAck或WBPull。當確定接收到的響應(yīng)是WBAck或WBPull時,進程前進到步驟1216。否則,進程前進到步驟1220。在步驟1216中,基于請求者緩存中的緩存行的狀態(tài),數(shù)據(jù)包被直接發(fā)送(即,不是廣播)到從屬緩存,然后,使請求者緩存中的緩存行降級。圖13示出了帶有根據(jù)接收到的響應(yīng)(即,步驟1212)和請求者緩存中的緩存行的現(xiàn)有狀態(tài)發(fā)送的數(shù)據(jù)包的類型的表(1300)。如圖13所示,如果響應(yīng)是WBAck,請求者緩存中的緩存行的現(xiàn)有狀態(tài)是Q,則帶有AckS的數(shù)據(jù)包被發(fā)送到從屬緩存。類似地,如果響應(yīng)是WBPull,請求者緩存中的緩存行的現(xiàn)有狀態(tài)是E或X,則帶有DataE的數(shù)據(jù)包被發(fā)送到從屬緩存。任何發(fā)送的數(shù)據(jù)包都攜帶在接收到的響應(yīng)中發(fā)現(xiàn)的分配者TID (S卩,步驟1212)。此外,如圖13所示,請求者緩存中的緩存行被降級到狀態(tài)I。在本發(fā)明的一個或多個實施例中,為避免死鎖,從緩存代理發(fā)送對WBPull/WBAck的響應(yīng)不能等待從其他緩存代理接收到對于PWB的響應(yīng)?;仡^參考圖12,在步驟1220中,確定是否已接收到全部響應(yīng)。當確定已經(jīng)接收到全部響應(yīng)時,進程前進到步驟1224。否則,進程返回到步驟1212。在步驟1224中,現(xiàn)在完成PWB請求,對應(yīng)于PWB請求的請求表中的條目可以被復位(即,狀態(tài)被設(shè)置為完成,等等)。圖14示出了根據(jù)本發(fā)明的一個或多個實施例的流程圖。圖14所示出的過程可以,例如,由從屬緩存代理響應(yīng)于來自請求者緩存代理的傳入的PWB請求來執(zhí)行。圖14所示出的步驟的序列在本發(fā)明的各實施例之間可不同,步驟中的一個或多個可以并行地執(zhí)行和/或可以是可選的。一開始,對應(yīng)于存儲器地址的PWB請求由從屬緩存代理接收(步驟1402)。PffB請求可以由請求者緩存代理在物理網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò)(180),上文參考圖I所討論的)上廣播。此外,PWB請求可以對應(yīng)于標識請求的類型、與PWB請求相關(guān)聯(lián)的TID,以及用于標識緩存行以及與PWB請求相關(guān)聯(lián)的對應(yīng)的存儲器地址的設(shè)置和標記字段的數(shù)據(jù)包(例如,上文參考圖4所討論的P2P請求數(shù)據(jù)包(401))。在步驟1404中,確定P2P請求是否已經(jīng)對于存儲器地址是未決的。在本發(fā)明的一個或多個實施例中,通過基于存儲器地址來搜索從屬緩存代理的請求表(例如,上文參考圖I所討論的請求表(104)),來確定未決的P2P請求的存在。當確定對于存儲器地址存在未決的P2P請求時,進程前進到步驟1406。然而,當確定沒有對于存儲器地址的未決的P2P 請求時,進程前進到步驟1408。在步驟1408中,確定從屬緩存是否緩存行保持在供給者狀態(tài)。當確定從屬緩存在供給者狀態(tài)保持緩存行時,進程前進到步驟1406。當確定從屬緩存在共享或無效狀態(tài)(即,不是供給者狀態(tài))保持緩存行時,進程前進到步驟1410。在步驟1410中,激活對應(yīng)于PWB請求的從屬緩存代理的回寫表(例如,上文參考圖I所討論的回寫表(106))中的空閑條目。該條目記錄(即,寫日志)來自請求者緩存的PWB請求。該條目包括回寫以及對應(yīng)于回寫的存儲器地址的狀態(tài)(即,活動或不活動)。在步驟1412中,確定從屬緩存是否在共享狀態(tài)保持緩存行。當確定從屬緩存在供給者狀態(tài)保持緩存行時,進程前進到步驟1414。然而,當確定從屬緩存將緩存行保持在無效狀態(tài)時,進程前進到步驟1420。在步驟1414中,作為對PWB請求的響應(yīng),向請求者緩存代理發(fā)出回寫肯定確認(WBAck)0發(fā)出的響應(yīng)可以對應(yīng)于標識響應(yīng)的類型以及與接收到的PWB請求相關(guān)聯(lián)的TID的響應(yīng)數(shù)據(jù)包(例如,響應(yīng)數(shù)據(jù)包(415 ))。在本發(fā)明的一個或多個實施例中,發(fā)出的響應(yīng)還包括由從屬緩存代理響應(yīng)于從屬緩存在共享狀態(tài)保持緩存行所生成的WBAck標識(ID)。WBAckID標識從屬緩存/代理。在步驟1416中,從請求者緩存代理接收數(shù)據(jù)包。在本發(fā)明的一個或多個實施例中,數(shù)據(jù)包是帶有處理器之間的狀態(tài)(例如,AckM、AckO, AckE、AckS)的肯定確認。數(shù)據(jù)包包括前面由從屬緩存代理所生成的WBAckID。在本發(fā)明的一個或多個實施例中,數(shù)據(jù)包是NAck (未示出)。在這樣的實施例中,進程結(jié)束,而不訪問步驟1418。在步驟1418中,基于接收到的數(shù)據(jù)包,設(shè)置緩存行的狀態(tài)。具體而言,緩存行的狀態(tài)被設(shè)置為接收到的數(shù)據(jù)包中所標識的處理器之間的狀態(tài)。如上文所討論的,當確定從屬緩存在無效狀態(tài)保持緩存行時,進程到達步驟1420。在步驟1420中,作為對PWB請求的響應(yīng),向請求者緩存代理發(fā)出回寫拉請求(WBPull)。發(fā)出的響應(yīng)可以對應(yīng)于標識響應(yīng)的類型以及與接收到的PWB請求相關(guān)聯(lián)的TID的響應(yīng)數(shù)據(jù)包(例如,響應(yīng)數(shù)據(jù)包(415 ))。在本發(fā)明的一個或多個實施例中,發(fā)出的響應(yīng)還包括由從屬緩存代理響應(yīng)于從屬緩存在無效狀態(tài)保持緩存行所生成的WBPull標識(ID)。WBPullID標識從屬緩存/代理。
在步驟1422中,從請求者緩存代理接收數(shù)據(jù)包。在本發(fā)明的一個或多個實施例中,數(shù)據(jù)包包括帶有處理器之間的狀態(tài)(例如,DataM、DataO、DataE、DataS)的數(shù)據(jù)(S卩,來自請求者緩存的緩存行)。數(shù)據(jù)包包括前面由從屬緩存代理所生成的WBPullID。在步驟1424中,緩存行用從數(shù)據(jù)包提取的數(shù)據(jù)填充。在本發(fā)明的一個或多個實施例中,數(shù)據(jù)包是NAck(未示出)。在這樣的實施例中,進程結(jié)束,而不訪問步驟1424或步驟1418。如上文所討論的,當存在對地址的未決的P2P請求時,進程到達步驟1406。在步驟1406中,發(fā)出類型“否定確認”(NAck)的響應(yīng)。響應(yīng)包括傳入的PWB請求的TID。然后,進程結(jié)束。圖15A示出了根據(jù)本發(fā)明的一個或多個實施例的示例。具體而言,圖15A對應(yīng)于成功的PWB請求。附接到緩存0 (1500)的緩存代理發(fā)出請求,緩存I (1501)、緩存2 (1502),以及緩存3 (1503)是從屬緩存。由于緩存I (1501)在狀態(tài)S保持緩存行,它以WBAck應(yīng)答,并以在狀態(tài)0接受緩存行結(jié)束。不需要傳輸數(shù)據(jù),因為緩存行數(shù)據(jù)已經(jīng)存在。緩存2·(1502)不保留緩存行,但是可以接受它,如此,它以WBPull應(yīng)答。然而,緩存0 (1500)否定地確認WBPull,因為它選擇緩存I (1501)以接受回寫。緩存3 (1503)不保留緩存行,并且不能接受它,如此,它否定地確認PWB。網(wǎng)關(guān)(1504)處理不需要到處理器上的其他緩存的進一步廣播。圖15B示出了根據(jù)本發(fā)明的一個或多個實施例的示例。圖15B基本上與圖15A相同,只是緩存0 (1500)選擇緩存2 (1502)接受數(shù)據(jù)。由于緩存2 (1502)不保留緩存行的副本,因此,必須傳輸數(shù)據(jù)以完成回寫。圖15C示出了根據(jù)本發(fā)明的一個或多個實施例的示例。具體而言,圖15C示出了由于另一個緩存代理的請求而使PWB成功的示例。在緩存0 (1500)發(fā)送PWB之后,但是在從網(wǎng)關(guān)接收到WBPull之前,緩存0 (1500)接收PRTS請求。它將數(shù)據(jù)提供到緩存2 (1502),如此丟失其供給者狀態(tài);緩存0 (1500)立即悄悄地使其本身降級到狀態(tài)I。它向網(wǎng)關(guān)發(fā)送指出不需要網(wǎng)關(guān)服務(wù)回寫的否定確認。本發(fā)明的各實施例具有下列優(yōu)點中的一個或多個同一個處理器上緩存之間的快速緩存到緩存的傳輸;維護一致性的緩存之間的低延遲P2P廣播事務(wù),盡管在發(fā)生事務(wù)之間沖突時不保證轉(zhuǎn)發(fā)的進度;以及,對處理器之間的一致性協(xié)議顯得統(tǒng)一的緩存。本發(fā)明的各實施例可以在幾乎任何類型的計算機上實現(xiàn),不管所使用的平臺如何。例如,如圖16所示,計算機系統(tǒng)(1600)包括一個或多個硬件處理器(1602)、相關(guān)聯(lián)的存儲器(1604)(例如,隨機存取存儲器(RAM)、高速緩沖存儲器、閃存等等)、存儲設(shè)備(1606)(例如,硬盤、諸如光盤驅(qū)動器或數(shù)字視盤(DVD)驅(qū)動器之類的光驅(qū)動器,閃存棒等等),以及當今的計算機典型的很多其他元件以及功能(未示出)。計算機系統(tǒng)(1600)還可以包括諸如鍵盤(1608)、鼠標(1610),或麥克風(未示出)之類的輸入裝置。此外,計算機系統(tǒng)(1600)可以包括諸如監(jiān)視器(1612)(例如,液晶顯示器(IXD)、等離子顯示器,或陰極射線管(CRT)監(jiān)視器)之類的輸出裝置。計算機系統(tǒng)(1600)可以通過網(wǎng)絡(luò)接口連接(未示出)連接到網(wǎng)絡(luò)(1614)(例如,局域網(wǎng)(LAN)、諸如因特網(wǎng)之類的廣域網(wǎng)(WAN),或任何其他類型的網(wǎng)絡(luò))。在本發(fā)明的一個或多個實施例中,存在許多不同類型的計算機系統(tǒng),并且如前所述的輸入和輸出裝置可以呈現(xiàn)其他形式。一般而言,計算機系統(tǒng)(1600)包括實施本發(fā)明的各實施例所需的至少最小的處理、輸入,和/或輸出裝置。
此外,在本發(fā)明的一個或多個實施例中,如前所述的計算機系統(tǒng)(1600)的一個或多個元件可以位于遠程位置,并通過網(wǎng)絡(luò)連接到其他元件。此外,本發(fā)明的各實施例可以在具有多個節(jié)點的分布式系統(tǒng)上實現(xiàn),其中,本發(fā)明的每一部分(例如,數(shù)據(jù)結(jié)構(gòu)、轉(zhuǎn)換器模塊、布局引擎)都可以位于分布式系統(tǒng)內(nèi)的不同的節(jié)點中。在本發(fā)明的一個實施例中,節(jié)點對應(yīng)于計算機系統(tǒng)。作為替代地,節(jié)點可以對應(yīng)于帶有相關(guān)聯(lián)的物理存儲器的處理器。節(jié)點可以作為替代地對應(yīng)于帶有共享存儲器和/或資源的處理器或處理器的微核。此外,執(zhí)行本發(fā)明的各實施例的計算機可讀取的程序代碼形式的軟件指令可以臨時或永久地存儲在諸如壓縮盤(CD)、磁盤、穿孔卡、磁帶,存儲器之類的非瞬時的計算機可讀存儲介質(zhì)上,或任何其他計算機可讀取的存儲設(shè)備中。盡管是參考數(shù)量有限的實施例來描述本發(fā)明的,但是,那些本領(lǐng)域技術(shù)人員在了解本發(fā)明的優(yōu)點之后,將理解,也可以設(shè)計出不偏離如此處所公開的本發(fā)明的范圍的其他 實施例。相應(yīng)地,本發(fā)明的范圍只能由所附的權(quán)利要求來加以限制。
權(quán)利要求
1.一種用于管理緩存的方法,包括通過操作地連接到第一緩存的第一緩存代理并使用第一物理網(wǎng)絡(luò),廣播對存儲器地址 的第一對等P2P請求;通過操作地連接到第二緩存的第二緩存代理并使用第二物理網(wǎng)絡(luò),基于所述第一 P2P 請求的類型以及對應(yīng)于所述存儲器地址的所述第二緩存中的緩存行的狀態(tài),發(fā)出對所述第 一 P2P請求的第一響應(yīng);通過操作地連接到第三緩存的第三緩存代理,發(fā)出對所述第一 P2P請求的第二響應(yīng);以及通過所述第一緩存代理并基于所述第一響應(yīng)和所述第二響應(yīng),升級對應(yīng)于所述存儲器 地址的所述第一緩存中的緩存行的狀態(tài)。
2.如權(quán)利要求1所述的方法,還包括通過所述第一緩存代理并在廣播所述第一 P2P請求之前,對于所述第一 P2P請求的類 型,比較所述緩存行的狀態(tài)和多個準許的狀態(tài);通過所述第一緩存代理,生成標識所述第一緩存代理和所述第一 P2P請求的事務(wù)標識TID ;通過所述第一緩存代理,在由所述TID索引的請求表的條目中記錄所述存儲器地址和 所述第一 P2P廣播的類型,其中,所述第一 P2P請求包括所述TID ;以及通過所述第二緩存代理并基于所述P2P請求的類型,修改對應(yīng)于所述存儲器地址的所 述第二緩存中的所述緩存行的狀態(tài)。
3.如權(quán)利要求2所述的方法,還包括通過所述第一緩存代理,從所述第一響應(yīng)提取數(shù)據(jù)項;以及通過所述第一緩存代理,利用所述數(shù)據(jù)項填充所述第一緩存中的所述緩存行的一部分,其中,所述第二響應(yīng)是包括所述TID的肯定確認。
4.如權(quán)利要求2所述的方法,其中,所述第一響應(yīng)是包括處理器之間狀態(tài)和所述TID的 肯定確認Ack,其中,所述第一 P2P請求的類型是升級請求。
5.如權(quán)利要求2所述的方法,其中,所述第三緩存包括在無效狀態(tài)的對應(yīng)于所述存儲 器地址的緩存行,其中,所述第二響應(yīng)是包括所述TID的肯定確認Ack。
6.如權(quán)利要求2所述的方法,還包括通過所述第三緩存代理并在所述第一 P2P請求由所述第三緩存代理接收到之前,使用 所述第一物理網(wǎng)絡(luò)廣播對所述存儲器地址的第二對等P2P請求;通過所述第三緩存代理并響應(yīng)于所述第一 P2P請求,標識所述第三緩存代理的請求表 中的所述第二 P2P請求的未決狀態(tài),其中,所述第二響應(yīng)是響應(yīng)于標識所述未決狀態(tài)的包括所述TID的否定確認NAck,以及其中,所述第三緩存包括在供給者狀態(tài)的對應(yīng)于所述存儲器地址的緩存行。
7.如權(quán)利要求1所述的方法,其中,所述第一緩存代理、所述第二緩存代理、所述第三 緩存代理、所述第一物理網(wǎng)絡(luò),以及所述第二物理網(wǎng)絡(luò)位于處理器上。
8.一種用于管理緩存的方法,包括通過操作地連接到第一緩存的第一緩存代理并使用第一物理網(wǎng)絡(luò),廣播對存儲器地址 的對等P2P回與請求;通過操作地連接到第二緩存的第二緩存代理并響應(yīng)于所述P2P回寫請求,標識所述第 二緩存中的對應(yīng)于所述存儲器地址的緩存行的共享狀態(tài);通過所述第二緩存代理并響應(yīng)于標識所述共享狀態(tài),使用第二物理網(wǎng)絡(luò)向所述第一緩 存代理發(fā)出回寫肯定確認WBAck ;通過操作地連接到第三緩存的第三緩存代理并響應(yīng)于所述P2P回寫請求,標識所述第 三緩存中的對應(yīng)于所述存儲器地址的緩存行的無效狀態(tài);通過所述第三緩存代理并響應(yīng)于標識所述無效狀態(tài),向所述第一緩存代理發(fā)出回寫拉 WBPull 請求;通過所述第一緩存代理,將所述第一緩存中的對應(yīng)于所述存儲器地址的緩存行的狀態(tài) 傳輸?shù)綇陌ㄋ龅诙彺婧退龅谌彺娴慕M中選擇的所選緩存;以及 將所述第一緩存中的所述緩存行降級。
9.如權(quán)利要求8所述的方法,進一步包括通過所述第一緩存代理生成標識所述第一緩存代理和所述P2P回寫請求的事務(wù)標識 TID,其中,所述P2P回寫請求包括所述TID ;通過所述第二緩存代理并響應(yīng)于標識所述共享狀態(tài),生成標識所述第二緩存代理并對 應(yīng)于所述WBAck的WBAck標識WBAckID ;以及通過所述第二緩存代理在通過所述WBAckID索引的回寫表的條目中記錄所述存儲器 地址,其中,所述WBAck包括所述TID和所述WBAckID。
10.如權(quán)利要求9所述的方法,其中,傳輸所述緩存行的所述狀態(tài)包括通過所述第一緩存代理并向所述第二緩存代理發(fā)送包括處理器之間的狀態(tài)和所述 WBAckID的肯定確認Ack,其中,所述所選緩存是所述第二緩存;通過所述第二緩存代理并響應(yīng)于所述Ack,升級所述第二緩存中的對應(yīng)于所述存儲器 地址的緩存行的狀態(tài);以及通過所述第一緩存代理并向所述第三緩存代理發(fā)送否定確認NAck,其中,所述WBPul 1請求是在傳輸所述緩存行的所述狀態(tài)之后接收到的。
11.如權(quán)利要求8所述的方法,進一步包括通過所述第一緩存代理,生成標識所述第一緩存代理和所述P2P回寫請求的事務(wù)標識 TID,其中,所述P2P回寫請求包括所述TID ;通過所述第三緩存代理并響應(yīng)于標識所述無效狀態(tài),生成標識所述第三緩存代理并對 應(yīng)于所述WBPull請求的WBPull標識WBPull ID ;以及通過所述第三緩存代理,在由所述WBPullID索引的回寫表的條目中記錄所述存儲器 地址,其中,所述WBPull請求包括所述TID和所述WBPullID。
12.如權(quán)利要求11所述的方法,其中,傳輸所述緩存行的所述狀態(tài)包括通過所述第一緩存代理并向所述第三緩存代理發(fā)送所述第一緩存中的所述緩存行的 值、處理器之間的狀態(tài)、以及所述WBPullID,其中,所述所選緩存是所述第三緩存;通過所述第三緩存代理,存儲所述第三緩存中對應(yīng)于所述存儲器地址的所述緩存行中的值;通過所述第三緩存代理升級所述第三緩存中的所述緩存行的狀態(tài);以及 通過所述第一緩存代理并向所述第二緩存代理發(fā)送否定確認NAck,其中,所述WBAck是在傳輸所述緩存行的所述狀態(tài)之后接收到的,并且 其中,所述所選緩存是所述第三緩存。
13.一種用于管理緩存的系統(tǒng),包括包括第一核、第二核,以及第三核的第一處理器;位于所述第一處理器上的并與所述第一核相關(guān)聯(lián)的第一緩存;位于所述第一處理器上的并與所述第二核相關(guān)聯(lián)的第二緩存;位于所述第一處理器上的并與所述第三核相關(guān)聯(lián)的第三緩存;第一緩存代理,操作地連接到所述第一緩存并被配置成使用所述處理器上的第一物理 網(wǎng)絡(luò)廣播對存儲器地址的對等P2P請求;第二緩存代理,操作地連接到所述第二緩存并被配置成使用所述處理器上的第二物理 網(wǎng)絡(luò),基于所述P2P請求的類型和所述第二緩存中的對應(yīng)于所述存儲器地址的緩存行的狀 態(tài),發(fā)出對所述P2P請求的第一響應(yīng);第三緩存代理,操作地連接到所述第三緩存并被配置成使用所述第二物理網(wǎng)絡(luò)發(fā)出對 所述P2P請求的第二響應(yīng),其中,所述第一緩存代理進一步被配置成基于所述第一響應(yīng)和所述第二響應(yīng)修改所述 第一緩存中的對應(yīng)于所述存儲器地址的緩存行的狀態(tài)。
14.如權(quán)利要求13所述的系統(tǒng),還包括位于所述第一處理器上的多個網(wǎng)關(guān),其中,所述多個網(wǎng)關(guān)中的至少一個被配置成響應(yīng)于所述P2P請求而聯(lián)絡(luò)第二處理器, 其中,所述第一物理網(wǎng)絡(luò)是操作地連接所述第一緩存代理、所述第二緩存代理、所述第 三緩存代理、以及所述多個網(wǎng)關(guān)的環(huán)形網(wǎng)絡(luò)。
15.如權(quán)利要求13所述的系統(tǒng),其中,所述第一緩存代理包括請求表,具有記錄所述P2P請求的類型和所述存儲器地址、并通過事務(wù)標識TID索引的 條目,其中,所述P2P請求包括所述TID,以及 其中,所述第一響應(yīng)包括所述TID。
16.如權(quán)利要求15所述的系統(tǒng),其中,所述第一響應(yīng)是回寫拉WBPull請求,其中,所述 第二緩存代理包括回寫表,具有記錄所述存儲器地址并通過WBPull標識WBPul IID索引的條目,其中,所述第一響應(yīng)還包括所述WBPullID,以及其中,所述第一緩存代理進一步被配置成向所述第二緩存代理發(fā)送所述第一緩存中的 所述緩存行的值、處理器之間的狀態(tài)、以及所述WBPullID。
17.如權(quán)利要求15所述的系統(tǒng),其中,所述第二響應(yīng)是回寫肯定確認WBAck,其中,所述 第三緩存代理包括回寫表,具有記錄所述存儲器地址并通過WBAck標識WBAckID索引的條目,其中,所述第二響應(yīng)包括所述WBAckID,并且其中,所述第一緩存代理進一步被配置成向所述第三緩存代理發(fā)送包括處理器之間的 狀態(tài)和所述WBAckID的肯定確認Ack。
18.如權(quán)利要求15所述的系統(tǒng),其中,所述第一緩存代理進一步被配置成從所述第一 響應(yīng)提取數(shù)據(jù)項,并利用所述數(shù)據(jù)項填充所述第一緩存中的所述緩存行的一部分。
19.如權(quán)利要求15所述的系統(tǒng),其中,所述第一響應(yīng)是包括處理器之間的狀態(tài)和所述 TID的肯定確認Ack,其中,所述P2P請求的類型是升級請求。
20.如權(quán)利要求15所述的系統(tǒng),其中,所述第三緩存包括在無效狀態(tài)的對應(yīng)于所述存 儲器地址的緩存行,并且其中,所述第二響應(yīng)是包括所述TID的肯定確認Ack。
全文摘要
一種用于管理緩存的方法,包括通過操作地連接到第一緩存的第一緩存代理并使用第一物理網(wǎng)絡(luò),廣播對存儲器地址的第一對等P2P請求;通過操作地連接到第二緩存的第二緩存代理并使用第二物理網(wǎng)絡(luò),基于所述第一P2P請求的類型以及對應(yīng)于所述存儲器地址的所述第二緩存中的緩存行的狀態(tài),發(fā)出對所述第一P2P請求的第一響應(yīng);通過操作地連接到第三緩存的第三緩存代理,發(fā)出對所述第一P2P請求的第二響應(yīng);以及,通過所述第一緩存代理并基于所述第一響應(yīng)和所述第二響應(yīng),升級對應(yīng)于所述存儲器地址的所述第一緩存中的緩存行的狀態(tài)。
文檔編號G06F12/00GK102959529SQ201280001778
公開日2013年3月6日 申請日期2012年2月7日 優(yōu)先權(quán)日2011年2月17日
發(fā)明者P·N·洛文斯坦 申請人:甲骨文國際公司