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