用于對等緩存轉(zhuǎn)發(fā)的方法
【專利摘要】一種使用緩存一致性協(xié)議選擇源節(jié)點(diǎn)的主節(jié)點(diǎn),包括耦合到目錄的邏輯單元集群,其中所述邏輯單元集群用于從請求緩存節(jié)點(diǎn)接收對數(shù)據(jù)的請求,使用所述目錄確定保存所述被請求數(shù)據(jù)的副本的多個節(jié)點(diǎn),使用一個或多個選擇參數(shù)選擇其中一個所述節(jié)點(diǎn)作為所述源節(jié)點(diǎn),以及向所述源節(jié)點(diǎn)發(fā)送消息以確定所述源節(jié)點(diǎn)是否存儲所述被請求數(shù)據(jù)的副本;其中當(dāng)在所述源節(jié)點(diǎn)中找到所述被請求數(shù)據(jù)時(shí),所述源節(jié)點(diǎn)將所述被請求數(shù)據(jù)轉(zhuǎn)發(fā)給所述請求緩存節(jié)點(diǎn);以及一些所述節(jié)點(diǎn)被標(biāo)記為對應(yīng)于所述緩存一致性協(xié)議的共享狀態(tài)。
【專利說明】用于對等緩存轉(zhuǎn)發(fā)的方法
[0001]相關(guān)申請案交叉申請
[0002]本發(fā)明要求2012年7月30日由Iulin Lih等人遞交的發(fā)明名稱為“用于對等緩存轉(zhuǎn)發(fā)的方法(Method for Peer to Peer Cache Forwarding) ”的第 61/677289 號美國臨時(shí)專利申請案,以及2013年6月17日由Iulin Lih等人遞交的發(fā)明名稱為“用于對等緩存轉(zhuǎn)發(fā)的方法(Method for Peer to Peer Cache Forwarding) ”的第 13/919223 號美國專利申請案的在先申請優(yōu)先權(quán),這些在先申請的內(nèi)容以引用的方式并入本文本中,如全文再現(xiàn)一般。
[0003]關(guān)于聯(lián)邦贊助的研宄或開發(fā)的聲明
[0004]不適用。
[0005]參考縮微膠片附錄
[0006]不適用。
【背景技術(shù)】
[0007]多核(例如多處理器)系統(tǒng)可以包括多個緩存節(jié)點(diǎn),這些緩存節(jié)點(diǎn)用于存儲諸如處理指令以及主存儲器位置和/或其它緩存級別中頻繁引用的數(shù)據(jù)之類的數(shù)據(jù)。引用特定主存儲器位置的一個或多個數(shù)據(jù)副本(例如緩存線)可以存儲在多核系統(tǒng)中的不同位置內(nèi)。例如,與主存儲器地址“0”相關(guān)聯(lián)的數(shù)據(jù)值“0”可以存儲在多核系統(tǒng)內(nèi)的每個緩存節(jié)點(diǎn)中。當(dāng)其中一個節(jié)點(diǎn)中的一個數(shù)據(jù)副本被修改時(shí),緩存一致性機(jī)制可以修改位于其它緩存節(jié)點(diǎn)中的其它副本。緩存一致性機(jī)制可通過在多核系統(tǒng)中傳播數(shù)據(jù)變更來保持許多不同緩存節(jié)點(diǎn)內(nèi)存儲的數(shù)據(jù)的一致性。
[0008]可在多核系統(tǒng)內(nèi)使用的兩種類型的緩存一致性機(jī)制是基于偵聽的一致性和基于目錄的一致性。在基于偵聽的一致性中,每個緩存節(jié)點(diǎn)都可廣播修改數(shù)據(jù)(例如寫指令)的請求。其它緩存節(jié)點(diǎn)可監(jiān)控發(fā)出的請求并確定接收到的請求是否對應(yīng)于它們自身的緩存存儲器內(nèi)存儲的數(shù)據(jù)。盡管基于偵聽的一致性可能具有短的延遲周期,但是實(shí)施基于偵聽的一致性的系統(tǒng)可能會遇到由于連續(xù)性廣播數(shù)據(jù)所造成的帶寬和可擴(kuò)展性問題。或者,在基于目錄的一致性中,在一個或多個緩存節(jié)點(diǎn)之間共享的數(shù)據(jù)可以存儲在主節(jié)點(diǎn)中。主節(jié)點(diǎn)可通過目錄保持多核系統(tǒng)內(nèi)緩存節(jié)點(diǎn)之間的一致性。當(dāng)一個緩存節(jié)點(diǎn)中的數(shù)據(jù)變更時(shí),主節(jié)點(diǎn)可更新或無效化存儲數(shù)據(jù)的其它緩存節(jié)點(diǎn)中的條目。緩存節(jié)點(diǎn)還可在從主存儲器中加載數(shù)據(jù)之前向主節(jié)點(diǎn)發(fā)送權(quán)限請求。因此,與基于偵聽的一致性相比,基于目錄的一致性改善了可擴(kuò)展性和帶寬問題,但是產(chǎn)生了由于主節(jié)點(diǎn)不斷訪問所造成的較長延遲。
[0009]為了減少基于目錄的一致性內(nèi)的延遲,可使用修改、自有、排除、共享、無效(M0ESI)協(xié)議或修改、排除、共享、無效、轉(zhuǎn)發(fā)(MESIF)協(xié)議等緩存一致性協(xié)議來實(shí)施對等緩存轉(zhuǎn)發(fā)。對等緩存轉(zhuǎn)發(fā)發(fā)生在其中一個節(jié)點(diǎn)用于將被請求數(shù)據(jù)轉(zhuǎn)發(fā)給另一緩存節(jié)點(diǎn)的時(shí)候。指定的緩存節(jié)點(diǎn)直接響應(yīng)該請求,而不是主節(jié)點(diǎn)從指定的緩存節(jié)點(diǎn)接收被請求數(shù)據(jù)并隨后響應(yīng)該請求。在M0ESI協(xié)議中,指定用于保存數(shù)據(jù)并響應(yīng)對數(shù)據(jù)的請求的緩存節(jié)點(diǎn)可指定有“自有”狀態(tài),而MESIF協(xié)議可使用“轉(zhuǎn)發(fā)”狀態(tài)來指定緩存節(jié)點(diǎn)。在M0ESI和MESIF兩個協(xié)議中,指定的緩存節(jié)點(diǎn)負(fù)責(zé)響應(yīng)來自其它緩存節(jié)點(diǎn)的對特定數(shù)據(jù)(例如緩存線)的請求。
[0010]但是,MOESI和MESIF協(xié)議在選擇指定用于響應(yīng)來自其它緩存節(jié)點(diǎn)的請求方面缺乏靈活性。例如,MESIF協(xié)議指定請求最新數(shù)據(jù)的緩存節(jié)點(diǎn)帶有“轉(zhuǎn)發(fā)”狀態(tài)。對于MOESI協(xié)議,“自有”狀態(tài)被指定給存儲最新的、正確的數(shù)據(jù)副本的緩存節(jié)點(diǎn)。因此,MOESI和MESIF兩個協(xié)議不能基于請求緩存節(jié)點(diǎn)的位置以及指定的緩存節(jié)點(diǎn)處正在處理的當(dāng)前工作量等性能因素而動態(tài)選擇緩存節(jié)點(diǎn)。因此,在某些實(shí)例中,指定的緩存節(jié)點(diǎn)可能會變?yōu)橐粋€處理瓶頸并導(dǎo)致多核系統(tǒng)內(nèi)的性能下降。因此,需要一種解決方案來動態(tài)地選擇緩存節(jié)點(diǎn)以滿足多核系統(tǒng)內(nèi)的請求。
【發(fā)明內(nèi)容】
[0011]在一項(xiàng)實(shí)施例中,本發(fā)明包括一種主節(jié)點(diǎn),用于使用緩存一致性協(xié)議選擇源節(jié)點(diǎn),包括耦合到目錄的邏輯單元集群,其中所述邏輯單元集群用于從請求緩存節(jié)點(diǎn)接收對數(shù)據(jù)的請求,使用所述目錄確定保存所述被請求數(shù)據(jù)的副本的多個節(jié)點(diǎn),使用一個或多個選擇參數(shù)選擇其中一個所述節(jié)點(diǎn)作為所述源節(jié)點(diǎn),以及向所述源節(jié)點(diǎn)發(fā)送消息以確定所述源節(jié)點(diǎn)是否存儲所述被請求數(shù)據(jù)的副本;其中當(dāng)在所述源節(jié)點(diǎn)內(nèi)找到所述被請求數(shù)據(jù)時(shí),所述源節(jié)點(diǎn)將所述被請求數(shù)據(jù)轉(zhuǎn)發(fā)給所述請求緩存節(jié)點(diǎn);以及一些所述節(jié)點(diǎn)被標(biāo)記為對應(yīng)于所述緩存一致性協(xié)議的共享狀態(tài)。
[0012]在另一項(xiàng)實(shí)施例中,本發(fā)明包括一種緩存節(jié)點(diǎn),用于使用緩存一致性協(xié)議執(zhí)行對等緩存轉(zhuǎn)發(fā),包括耦合到本地存儲器的邏輯單元集群,其中所述邏輯單元集群用于從主節(jié)點(diǎn)接收偵聽轉(zhuǎn)發(fā)消息;使用所述偵聽轉(zhuǎn)發(fā)消息中的信息確定被請求數(shù)據(jù)是否存儲在所述本地存儲器內(nèi);當(dāng)所述被請求數(shù)據(jù)存儲在所述本地存儲器內(nèi)時(shí),將所述被請求數(shù)據(jù)轉(zhuǎn)發(fā)給請求緩存節(jié)點(diǎn);以及當(dāng)所述被請求數(shù)據(jù)未存儲在所述本地存儲器時(shí),向所述主節(jié)點(diǎn)發(fā)送消息,其中所述緩存節(jié)點(diǎn)分配有所述緩存一致性協(xié)議的共享狀態(tài)。
[0013]在又一項(xiàng)實(shí)施例中,本發(fā)明包括一種用于使用緩存一致性協(xié)議選擇源節(jié)點(diǎn)的方法,其中所述方法包括維護(hù)將多個條目標(biāo)記為所述緩存一致性協(xié)議內(nèi)的共享狀態(tài)的目錄,從其中一個所述緩存節(jié)點(diǎn)接收數(shù)據(jù)請求;確定所述被請求數(shù)據(jù)是否映射到所述目錄內(nèi)的其中一個所述條目;當(dāng)在所述目錄內(nèi)的其中一個所述條目中未找到所述被請求數(shù)據(jù)時(shí),向存儲器的下一級別發(fā)送所述數(shù)據(jù)請求;當(dāng)在所述其中一個條目中找到所述被請求數(shù)據(jù)時(shí),使用一個或多個選擇參數(shù)從對應(yīng)于所述其中一個條目的多個緩存節(jié)點(diǎn)中選擇源節(jié)點(diǎn);向所述源節(jié)點(diǎn)發(fā)送轉(zhuǎn)發(fā)偵聽消息以確定所述源節(jié)點(diǎn)是否存儲所述被請求數(shù)據(jù)的副本,其中所述選擇參數(shù)按優(yōu)先次序排列選擇作為所述源節(jié)點(diǎn)的緩存節(jié)點(diǎn),以及所述源節(jié)點(diǎn)在所述緩存節(jié)點(diǎn)之間具有最尚優(yōu)先級。
[0014]結(jié)合附圖和權(quán)利要求書,可從以下的詳細(xì)描述中更清楚地理解這些和其它特征。。
【專利附圖】
【附圖說明】
[0015]為了更完整地理解本發(fā)明,現(xiàn)在參考以下結(jié)合附圖和詳細(xì)描述進(jìn)行的簡要描述,其中相同參考標(biāo)號表不相同部分。
[0016]圖1為具有存儲器的分形結(jié)構(gòu)的多核系統(tǒng)的實(shí)施例的示意圖。
[0017]圖2為具有存儲器的分形結(jié)構(gòu)的多核系統(tǒng)的另一實(shí)施例的示意圖。
[0018]圖3為節(jié)點(diǎn)的示意圖,所述節(jié)點(diǎn)適用于實(shí)施多核系統(tǒng)內(nèi)揭示的節(jié)點(diǎn)的一個或多個實(shí)施例。
[0019]圖4為實(shí)施到端緩存轉(zhuǎn)發(fā)的多核系統(tǒng)的消息序列圖。
[0020]圖5為基于一個或多個選擇參數(shù)動態(tài)選擇源節(jié)點(diǎn)的方法的實(shí)施例的流程圖。
【具體實(shí)施方式】
[0021]最初應(yīng)理解,盡管下文提供一個或多個實(shí)施例的說明性實(shí)施方案,但可使用任意數(shù)目的當(dāng)前已知或現(xiàn)有的技術(shù)來實(shí)施所公開的系統(tǒng)和/或方法。本發(fā)明決不應(yīng)限于下文所說明的所述示例性實(shí)現(xiàn)方式、圖式和技術(shù),包含本文所說明并描述的示范性設(shè)計(jì)和實(shí)施方案,而是可以在所附權(quán)利要求書的范圍以及其均等物的完整范圍內(nèi)修改。
[0022]本文公開的是至少一種動態(tài)選擇源節(jié)點(diǎn)的方法、裝置和系統(tǒng)以滿足請求緩存節(jié)點(diǎn)對多核系統(tǒng)的請求。主節(jié)點(diǎn)可基于源節(jié)點(diǎn)的條件狀態(tài)以及多核系統(tǒng)的拓?fù)鋭討B(tài)地指定源節(jié)點(diǎn)(例如,緩存節(jié)點(diǎn)和/或主節(jié)點(diǎn))來為請求緩存節(jié)點(diǎn)轉(zhuǎn)發(fā)數(shù)據(jù)。主節(jié)點(diǎn)無需使用分別在MOESI和MESIF協(xié)議中發(fā)現(xiàn)的“自有”狀態(tài)和/或“轉(zhuǎn)發(fā)”狀態(tài)就可以選擇源節(jié)點(diǎn)。當(dāng)請求緩存節(jié)點(diǎn)無法定位其本地緩存存儲器內(nèi)的特定數(shù)據(jù)(例如,緩存缺失)時(shí),請求緩存節(jié)點(diǎn)可以向主節(jié)點(diǎn)發(fā)送請求以獲得該特定數(shù)據(jù)。一旦主節(jié)點(diǎn)接收到來自請求緩存節(jié)點(diǎn)的數(shù)據(jù),主節(jié)點(diǎn)就可以基于各種選擇因素動態(tài)地選擇與其它緩存節(jié)點(diǎn)(例如,在“共享”狀態(tài)下)共享被請求數(shù)據(jù)的源節(jié)點(diǎn)以滿足請求,這些選擇因素包括源節(jié)點(diǎn)的當(dāng)前條件狀態(tài)、多核系統(tǒng)的拓?fù)浜?或選擇偏好。主節(jié)點(diǎn)可將消息(例如,偵聽轉(zhuǎn)發(fā)消息)轉(zhuǎn)發(fā)給源節(jié)點(diǎn),從而指示源節(jié)點(diǎn)將數(shù)據(jù)轉(zhuǎn)發(fā)給請求緩存節(jié)點(diǎn)。如果數(shù)據(jù)位于源節(jié)點(diǎn)內(nèi),則源節(jié)點(diǎn)在從主節(jié)點(diǎn)接收指示之后可將該數(shù)據(jù)轉(zhuǎn)發(fā)給請求緩存節(jié)點(diǎn)。
[0023]圖1為具有存儲器的分形結(jié)構(gòu)的多核系統(tǒng)100的實(shí)施例的示意圖。多核系統(tǒng)100可包括形成存儲器層次結(jié)構(gòu)的多級別存儲器。如圖1所示,多核系統(tǒng)100可包括主節(jié)點(diǎn)102、互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106和一個或多個緩存節(jié)點(diǎn)104。主節(jié)點(diǎn)102可物理上和/或邏輯上集中在多核系統(tǒng)100內(nèi)以管理緩存節(jié)點(diǎn)104之間的緩存一致性。在一項(xiàng)實(shí)施例中,主節(jié)點(diǎn)102可位于多核系統(tǒng)100的存儲器層次結(jié)構(gòu)的N級處,而緩存節(jié)點(diǎn)C0-C3 104可位于存儲器層次結(jié)構(gòu)中的主節(jié)點(diǎn)102的下一級(例如,N-1級)。例如,緩存節(jié)點(diǎn)C0-C3 104可以是2級緩存(例如,存儲器層次結(jié)構(gòu)的2級),而主節(jié)點(diǎn)102可以是3級緩存(例如,存儲器層次結(jié)構(gòu)的3級)。主節(jié)點(diǎn)102可通過互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106與緩存節(jié)點(diǎn)C0-C3 104通信,互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106可與主節(jié)點(diǎn)102位于存儲器層次結(jié)構(gòu)的同一級別(例如,N級)處。此外,主節(jié)點(diǎn)102可通過(N+1)級結(jié)構(gòu)108與存儲器層次結(jié)構(gòu)的較高級別通信。多核系統(tǒng)100的其它實(shí)施例可使主節(jié)點(diǎn)102跟蹤緩存節(jié)點(diǎn)104,緩存節(jié)點(diǎn)104位于存儲器層次結(jié)構(gòu)中的主節(jié)點(diǎn)102以下的多個級別(例如,N-2級)處。在一個示例中,主節(jié)點(diǎn)102可以是5級緩存,而緩存節(jié)點(diǎn)C0-C3 104可以是3級或更低級緩存。當(dāng)緩存節(jié)點(diǎn)104位于主節(jié)點(diǎn)102以下的多個存儲器級別處時(shí),主節(jié)點(diǎn)102可能需要更多的資源(例如,存儲空間)來管理存儲器的其它級另IJ,因此增加了實(shí)施主節(jié)點(diǎn)102的成本。
[0024]在一項(xiàng)實(shí)施例中,主節(jié)點(diǎn)102可與多核系統(tǒng)100的存儲器層次結(jié)構(gòu)的主存儲器級別相關(guān)聯(lián)。主節(jié)點(diǎn)102可包括動態(tài)隨機(jī)存取存儲器(DRAM)等主存儲器以存儲數(shù)據(jù)的副本。換言之,主節(jié)點(diǎn)102可用于存儲數(shù)據(jù)的未緩存副本。主節(jié)點(diǎn)102還可包括一個或多個緩存存儲器,它們可用于將其中一個緩存級別處的數(shù)據(jù)副本存儲在主節(jié)點(diǎn)102內(nèi)。如上所述,主節(jié)點(diǎn)102的其它實(shí)施例可以在多核系統(tǒng)100的存儲器層次結(jié)構(gòu)的較低級別處(例如,在3級緩存處)實(shí)施。
[0025]主節(jié)點(diǎn)102可以是用于保持緩存節(jié)點(diǎn)C0-C3 104之間的緩存一致性的任意節(jié)點(diǎn)。主節(jié)點(diǎn)102可通過監(jiān)控緩存線中的緩存節(jié)點(diǎn)C0-C3 104的狀態(tài)來保持緩存一致性,這些緩存線位于每個緩存節(jié)點(diǎn)C0-C3 104內(nèi)。主節(jié)點(diǎn)102可包括一個目錄,用于為緩存線中存儲的數(shù)據(jù)監(jiān)控緩存節(jié)點(diǎn)104的狀態(tài)。該目錄可以跟蹤存儲節(jié)點(diǎn)中存儲的緩存線并且將緩存線與緩存狀態(tài)關(guān)聯(lián)。例如,該目錄可將緩存節(jié)點(diǎn)C0 104內(nèi)的一條緩存線與“共享”緩存狀態(tài)關(guān)聯(lián),而緩存節(jié)點(diǎn)C0 104內(nèi)的另一緩存線可具有“無效”緩存狀態(tài)。該目錄可使用編碼的目錄項(xiàng)跟蹤緩存節(jié)點(diǎn)C0-C3 104的狀態(tài),這些目錄項(xiàng)使用各種協(xié)議,包括但不限于位向量協(xié)議和粗向量協(xié)議進(jìn)行編碼。目錄內(nèi)的每個目錄項(xiàng)可包括狀態(tài)位,用來表示不同緩存狀態(tài),例如,緩存線是否臟(例如,“修改”狀態(tài))。在一項(xiàng)實(shí)施例中,目錄可以存儲在主節(jié)點(diǎn)102的主存儲器內(nèi)。緩存節(jié)點(diǎn)104的緩存狀態(tài)將在下文進(jìn)行更詳細(xì)地論述。
[0026]緩存節(jié)點(diǎn)C0-C3 104均可包括用于將數(shù)據(jù)存儲在緩存線內(nèi)的緩存存儲器。所有緩存節(jié)點(diǎn)C0-C3 104內(nèi)的緩存線根據(jù)緩存一致性協(xié)議可以分配有不同的狀態(tài)。在一項(xiàng)實(shí)施例中,多核系統(tǒng)100可用于實(shí)施修改、排除、共享、無效(MESI)協(xié)議以保持緩存一致性。對于MESI協(xié)議,緩存節(jié)點(diǎn)104內(nèi)的每個緩存線均可被標(biāo)記為“修改”狀態(tài)、“排除”狀態(tài)、“共享”狀態(tài),或“無效”狀態(tài)。標(biāo)記有“修改”狀態(tài)的緩存線可指示緩存線為“臟”,因?yàn)閿?shù)據(jù)只存在于緩存線內(nèi)。緩存線的數(shù)據(jù)值可能已經(jīng)被修改并且與主節(jié)點(diǎn)102和/或主存儲器內(nèi)存儲的值不同?!芭懦睜顟B(tài)可指示緩存節(jié)點(diǎn)104內(nèi)的緩存線保存或存儲最新的數(shù)據(jù)并存在于緩存節(jié)點(diǎn)104而不是其它緩存節(jié)點(diǎn)104中?!芭懦睜顟B(tài)還可指示緩存線為“干凈”,這表示緩存線內(nèi)存儲的數(shù)據(jù)匹配主節(jié)點(diǎn)102和/或主存儲器內(nèi)存儲的數(shù)據(jù)?!肮蚕怼睜顟B(tài)指示緩存線可存儲在其它緩存節(jié)點(diǎn)104中。在一項(xiàng)實(shí)施例中,“共享”狀態(tài)可指示緩存線為“干凈”?!盁o效”狀態(tài)指示緩存線為無效并且不能將數(shù)據(jù)的有效副本保存在緩存線內(nèi)。緩存線可以是未使用的并且可用于存儲新數(shù)據(jù)。數(shù)據(jù)的有效副本可以存儲在主節(jié)點(diǎn)102、其它緩存節(jié)點(diǎn)104和/或存儲器層次結(jié)構(gòu)的其它存儲器級別(例如主存儲器)中。
[0027]主節(jié)點(diǎn)102內(nèi)的目錄可在每個目錄項(xiàng)內(nèi)對兩個位進(jìn)行編碼以表示修改、排除、共享、有效MESI協(xié)議中的不同狀態(tài)。例如,“00”可被編碼以表示“修改”狀態(tài);“01”可被編碼以表示“排除”狀態(tài);“10”可被編碼以表示“共享”狀態(tài);以及“11”可被編碼以表示“無效”狀態(tài)。與MESI協(xié)議相比,MOESI和MESIF協(xié)議均可使用三個位對緩存線的不同狀態(tài)進(jìn)行編碼。附加位可分別用來表示MOESI和MESIF協(xié)議中的“自有”狀態(tài)和“轉(zhuǎn)發(fā)”狀態(tài)。然而,MOESI和MESIF協(xié)議中的附加位會增加管理多核系統(tǒng)100內(nèi)的緩存一致性的成本。因此,通過使用MESI協(xié)議,目錄不需要第三位對不同狀態(tài)進(jìn)行編碼,因?yàn)橹鞴?jié)點(diǎn)102無需使用MOESI和MESIF協(xié)議中分別要求的“自有”狀態(tài)和/或“轉(zhuǎn)發(fā)”狀態(tài)就可以選擇源節(jié)點(diǎn)。多核系統(tǒng)100的其它實(shí)施例可實(shí)施少于四種狀態(tài)的緩存一致性協(xié)議,例如修改、共享、無效(MSI)協(xié)議。
[0028]主節(jié)點(diǎn)102還可用于動態(tài)選擇源節(jié)點(diǎn)以滿足緩存節(jié)點(diǎn)C0-C3104之一的請求,因此與可預(yù)指定源節(jié)點(diǎn)的MOESI和MESIF協(xié)議不同。通常,MOESI協(xié)議指定源節(jié)點(diǎn)具有“自有”狀態(tài),意味著源節(jié)點(diǎn)存儲最新的、正確的數(shù)據(jù)副本。MESIF協(xié)議通常指定源節(jié)點(diǎn)具有“轉(zhuǎn)發(fā)”狀態(tài),意味著源節(jié)點(diǎn)是最近請求數(shù)據(jù)的緩存節(jié)點(diǎn)。然而,MOESI和MESIF協(xié)議都沒有考慮效率因素,例如,源節(jié)點(diǎn)到請求緩存節(jié)點(diǎn)的距離和源節(jié)點(diǎn)的當(dāng)前工作量。
[0029]為了提高靈活性和性能,主節(jié)點(diǎn)102可基于各種選擇參數(shù),包括但不限于多核系統(tǒng)100的拓?fù)?、緩存?jié)點(diǎn)104和主節(jié)點(diǎn)102的當(dāng)前條件狀態(tài),和/或選擇過程的偏好,動態(tài)地選擇源節(jié)點(diǎn)。選擇參數(shù)可將被選為源節(jié)點(diǎn)的緩存節(jié)點(diǎn)104和/或主節(jié)點(diǎn)102按優(yōu)選次序排列和/或按順序列出。選擇參數(shù)可存儲在主存儲器和/或目錄內(nèi)?!巴?fù)溥x擇參數(shù)”可包括關(guān)于多核系統(tǒng)100的布局(例如,所有緩存節(jié)點(diǎn)C0-C3 104與主節(jié)點(diǎn)102之間的距離)和多核系統(tǒng)100的拓?fù)洳季值膮?shù)以選擇源節(jié)點(diǎn)?!爱?dāng)前條件狀態(tài)”選擇參數(shù)可關(guān)于與緩存節(jié)點(diǎn)C0-C3 104相關(guān)聯(lián)的不同條件,例如緩存線內(nèi)存儲的數(shù)據(jù)的年齡、緩存節(jié)點(diǎn)C0-C3 104的當(dāng)前工作量和業(yè)務(wù)負(fù)載以及緩存節(jié)點(diǎn)C0-C3104的可用帶寬和/或容量。“偏好選擇參數(shù)”可表示選擇源節(jié)點(diǎn)的預(yù)定義方法,例如,在選擇源節(jié)點(diǎn)中使用隨機(jī)或輪詢調(diào)度方法。選擇參數(shù)將在圖4中進(jìn)行更詳細(xì)地論述??梢圆皇褂脿顟B(tài)指定(例如,“自有”或“轉(zhuǎn)發(fā)”)來確定源節(jié)點(diǎn)。
[0030]互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106可以為任意類型的數(shù)據(jù)路徑,用于在所有緩存節(jié)點(diǎn)C0-C3 104與主節(jié)點(diǎn)102之間路由數(shù)據(jù)。例如,緩存節(jié)點(diǎn)C0 104可通過互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106發(fā)送對數(shù)據(jù)的請求以到達(dá)主節(jié)點(diǎn)102。此外,在對等緩存轉(zhuǎn)發(fā)中,緩存節(jié)點(diǎn)C1 104可通過互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106將由緩存節(jié)點(diǎn)C0 104請求的數(shù)據(jù)轉(zhuǎn)發(fā)給緩存節(jié)點(diǎn)C0 104。在一項(xiàng)實(shí)施例中,互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106可以是在線性拓?fù)渲袑⒕彺婀?jié)點(diǎn)C0-C3 104和主節(jié)點(diǎn)102互聯(lián)的共享總線。互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106的其它實(shí)施例可在各種其它拓?fù)渲袑⒕彺婀?jié)點(diǎn)C0-C3 104互聯(lián),例如環(huán)形網(wǎng)拓?fù)浠蚓W(wǎng)狀拓?fù)洹?N+1)級結(jié)構(gòu)108可基本上類似于互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106,除了(N+1)級結(jié)構(gòu)108可用于將主節(jié)點(diǎn)102互聯(lián)到位于存儲器層次結(jié)構(gòu)的下一級別的其它節(jié)點(diǎn)。
[0031]圖2為具有存儲器的分形結(jié)構(gòu)的多核系統(tǒng)200的另一實(shí)施例的示意圖。圖2示出了主節(jié)點(diǎn)0-3 202可分布在多核系統(tǒng)200中。分布式主節(jié)點(diǎn)0-3 202可在多核系統(tǒng)200非常大且復(fù)雜時(shí)使用。緩存節(jié)點(diǎn)C0-C3 102均可關(guān)聯(lián)于其中一個主節(jié)點(diǎn)0-3 202。主節(jié)點(diǎn)0-3 202都可維護(hù)位于存儲器層次結(jié)構(gòu)的N級處的存儲器的一部分。主節(jié)點(diǎn)0-3 202內(nèi)的存儲器可引用N級存儲器的不同地址范圍。例如,N級可以是多核系統(tǒng)200的5級存儲器(例如主存儲器),5級存儲器的總存儲容量約為32千兆字節(jié)。32千兆字節(jié)的存儲器可在主節(jié)點(diǎn)0-3 202之間劃分,使得主節(jié)點(diǎn)0-3 202的存儲容量均約為8千兆字節(jié)。主節(jié)點(diǎn)0202可擁有5級存儲器的第一個八千兆字節(jié)的地址范圍;主節(jié)點(diǎn)1 202可擁有5級存儲器的第二個八千兆字節(jié)的地址范圍;主節(jié)點(diǎn)2 202可擁有5級存儲器的第三個八千兆字節(jié)的地址范圍;以及主節(jié)點(diǎn)3 202可擁有5級存儲器的第四個八千兆字節(jié)的地址范圍。緩存節(jié)點(diǎn)C0-C3 102可用于將5級存儲器的32千兆字節(jié)范圍內(nèi)存儲的任意數(shù)據(jù)包含在它們的4級存儲器(例如4級緩存)內(nèi)。
[0032]圖3為節(jié)點(diǎn)300的示意圖,節(jié)點(diǎn)300適用于實(shí)施多核系統(tǒng)內(nèi)公開的節(jié)點(diǎn)(例如,圖1和2中示出的緩存節(jié)點(diǎn)104和主節(jié)點(diǎn)102)的一個或多個實(shí)施例。節(jié)點(diǎn)300可包括一個或多個入端口或網(wǎng)絡(luò)接口 310以及一個或多個出端口或網(wǎng)絡(luò)接口 312。入端口或網(wǎng)絡(luò)接口 310以及出端口或網(wǎng)絡(luò)接口 312可以是物理和/或邏輯端口,用于連接到如圖1所示的互聯(lián)網(wǎng)絡(luò)結(jié)構(gòu)106和/或(N+1)級結(jié)構(gòu)108。入接口或網(wǎng)絡(luò)接口 310可內(nèi)部耦合到接收器(Rx) 306用于從其它節(jié)點(diǎn)接收數(shù)據(jù),而出端口或網(wǎng)絡(luò)接口 312可耦合到發(fā)射器(Tx)308用于向其它節(jié)點(diǎn)發(fā)送數(shù)據(jù)。
[0033]節(jié)點(diǎn)300還可包括耦合到Rx306和Tx308的邏輯單元集群302,其中邏輯單元集群302可用于實(shí)施進(jìn)行如下操作的指令:請求來自其它節(jié)點(diǎn)的數(shù)據(jù)、使用選擇參數(shù)確定源節(jié)點(diǎn),和/或?qū)?shù)據(jù)轉(zhuǎn)發(fā)給請求節(jié)點(diǎn)。邏輯單元集群302還可用于實(shí)施方法500,方法500將在后面進(jìn)行更詳細(xì)地論述。邏輯單元集群302可包括一個或多個中央處理器(CPU)芯片、現(xiàn)場可編程門陣列(FPGA)、專用集成電路(ASIC)、數(shù)字信號處理器(DSP),并且/或者可以是一個或多個ASIC和/或多核處理器集群的一部分。邏輯單元集群302可用于將數(shù)據(jù)寫入緩存存儲器304和存儲器316和/或從緩存存儲器304和存儲器316中讀取數(shù)據(jù),以及當(dāng)數(shù)據(jù)不在緩存存儲器304和存儲器316中時(shí),向?qū)Φ裙?jié)點(diǎn)生成請求以獲取數(shù)據(jù)。
[0034]圖3示出了邏輯單元集群302可物理上和/或邏輯上耦合到緩存存儲器304。緩存存儲器304可以為易失性和/或非易失性存儲器以及可以使用隨機(jī)存取存儲器(RAM)、閃存、磁盤驅(qū)動器和/或任意其它合適類型的存儲器來實(shí)施。緩存存儲器304可用于為邏輯單元集群302存儲易失性數(shù)據(jù)和指令和/或?qū)㈩l繁訪問的存儲器位置中的數(shù)據(jù)副本存儲在存儲器316內(nèi)。在一項(xiàng)實(shí)施例中,緩存存儲器304可包括多個緩存級別。例如,緩存存儲器304可包括1級緩存、2級緩存和3級緩存。緩存存儲器304內(nèi)的一個或多個緩存級別可以嵌入到邏輯單元集群302內(nèi)的一個或多個處理器中,而緩存存儲器304內(nèi)的其它緩存級別可位于邏輯單元集群302的外部。緩存存儲器304的其它實(shí)施例可具有緩存存儲器304內(nèi)的嵌入到邏輯單元集群302內(nèi)的所有緩存級別或具有緩存存儲器304內(nèi)的位于邏輯單元集群302外部的所有緩存級別。
[0035]緩存存儲器304還可耦合到內(nèi)存控制器314,其管理存儲器316的傳入和傳出數(shù)據(jù)流。在一項(xiàng)實(shí)施例中,內(nèi)存控制器314可在邏輯單元集群302的外部,而其它實(shí)施例可具有嵌入邏輯單元集群302內(nèi)的內(nèi)存控制器314。內(nèi)存控制器314還可用于保持存儲器316和緩存存儲器304之間的緩存一致性。一般而言,存儲器316可使用易失性存儲器,例如RAM存儲器(例如DRAM)來實(shí)施。存儲器316的另一項(xiàng)實(shí)施例可包括非易失性存儲器,例如一個或多個磁盤、磁帶驅(qū)動器、光盤驅(qū)動器或固態(tài)驅(qū)動器,非易失性存儲器可用于數(shù)據(jù)的非易失性存儲以及用作溢流數(shù)據(jù)存儲部件。當(dāng)選擇程序用于執(zhí)行時(shí),存儲器316可存儲這些程序并可存儲指令以及程序執(zhí)行期間讀取的數(shù)據(jù)。通常,存儲器316能夠存儲的數(shù)據(jù)比緩存存儲器304的多而且存取的速度比緩存存儲器304的慢。緩存存儲器304和存儲器316可表示節(jié)點(diǎn)300內(nèi)的本地存儲器。節(jié)點(diǎn)300的一些實(shí)施例可能不包括存儲器316和/或內(nèi)存控制器314。
[0036]圖4為實(shí)施對等緩存轉(zhuǎn)發(fā)的多核系統(tǒng)400的消息序列圖。多核系統(tǒng)400可包括緩存節(jié)點(diǎn)C0-C3 104、主節(jié)點(diǎn)102以及存儲器402。存儲器402可以是多核系統(tǒng)400的主存儲器。主節(jié)點(diǎn)102還可用于執(zhí)行如圖3所述的內(nèi)存控制器功能。主節(jié)點(diǎn)102和存儲器402可位于存儲器層次結(jié)構(gòu)的N級處,而緩存節(jié)點(diǎn)104可位于存儲器層次結(jié)構(gòu)的N-1級處。如圖4所示,緩存節(jié)點(diǎn)C3 104可通過向主節(jié)點(diǎn)102發(fā)送請求數(shù)據(jù)消息404用作請求節(jié)點(diǎn)。請求消息404可以是位于存儲器402的特定地址內(nèi)的數(shù)據(jù)的讀取或?qū)懭胝埱?。?dāng)本地缺失發(fā)生在緩存節(jié)點(diǎn)C3 104的本地存儲器內(nèi)時(shí),請求消息404可在緩存節(jié)點(diǎn)C3 104內(nèi)生成。換言之,請求消息404可指示緩存節(jié)點(diǎn)C3 104想要從源節(jié)點(diǎn)獲取被請求數(shù)據(jù),該源節(jié)點(diǎn)可以是緩存節(jié)點(diǎn)C0-C2 104之一和/或存儲器402,因?yàn)榫彺婀?jié)點(diǎn)C3 104無法在其本地存儲器內(nèi)找到被請求數(shù)據(jù)。回想上文,圖3內(nèi)的邏輯單元集群302可包括可生成數(shù)據(jù)請求的處理器。
[0037]當(dāng)主節(jié)點(diǎn)102從請求節(jié)點(diǎn)(例如緩存節(jié)點(diǎn)C3 104)接收請求消息404時(shí),主節(jié)點(diǎn)102可將被請求數(shù)據(jù)映射到目錄內(nèi)的其中一個目錄項(xiàng)。目錄內(nèi)的信息可用于確定哪些緩存節(jié)點(diǎn)C0-C2 104可能已經(jīng)存儲被請求數(shù)據(jù)以及存儲被請求數(shù)據(jù)的緩存線的狀態(tài)。在圖4中,主節(jié)點(diǎn)102內(nèi)的目錄指示緩存節(jié)點(diǎn)C0-C2 104標(biāo)記有對應(yīng)于被請求數(shù)據(jù)的緩存線的“共享”狀態(tài)。本領(lǐng)域的普通技術(shù)人員都知道緩存節(jié)點(diǎn)C0-C2 104根據(jù)緩存節(jié)點(diǎn)C3 104請求的數(shù)據(jù)可具有不同的緩存狀態(tài)。例如,緩存節(jié)點(diǎn)C3 104可向主節(jié)點(diǎn)102發(fā)送請求數(shù)據(jù)消息404以請求存儲器402的地址“0”中的數(shù)據(jù)。針對該請求,緩存節(jié)點(diǎn)C0-C2 104可具有與對應(yīng)于地址“0”的緩存線相關(guān)聯(lián)的“共享”狀態(tài)。緩存節(jié)點(diǎn)C3 104可向主節(jié)點(diǎn)102發(fā)送后續(xù)請求數(shù)據(jù)消息404以請求存儲器402的地址“1”中的數(shù)據(jù)。在該示例中,緩存節(jié)點(diǎn)C0-C1 104可具有“共享”狀態(tài),而緩存節(jié)點(diǎn)C2 104可具有“無效”狀態(tài)用于被請求數(shù)據(jù)。
[0038]在確定哪些緩存節(jié)點(diǎn)C0-C2 104標(biāo)記有“共享”狀態(tài)之后,主節(jié)點(diǎn)102可動態(tài)選擇其中一個被標(biāo)記為“共享”狀態(tài)的緩存節(jié)點(diǎn)C0-C2 104為源節(jié)點(diǎn)。在一項(xiàng)實(shí)施例中,主節(jié)點(diǎn)102還可選擇它自己而不是其中一個被標(biāo)記有“共享”狀態(tài)的緩存節(jié)點(diǎn)C0-C2 104作為源節(jié)點(diǎn)。主節(jié)點(diǎn)102可基于一個或多個選擇參數(shù)為每個接收到的請求消息404選擇源節(jié)點(diǎn)。選擇參數(shù)可按優(yōu)選次序排列和/或確定選為源節(jié)點(diǎn)的緩存節(jié)點(diǎn)104和/或主節(jié)點(diǎn)102的順序(例如優(yōu)先級列表)。例如,緩存節(jié)點(diǎn)C2 104可具有最高優(yōu)先級或被列為列表中的第一,以作為選為源節(jié)點(diǎn)的第一節(jié)點(diǎn)。緩存節(jié)點(diǎn)C1 104可具有第二最高優(yōu)先級或被列為第二,而緩存節(jié)點(diǎn)C0 104的優(yōu)先級低于緩存節(jié)點(diǎn)C1 104,被列為第三。主節(jié)點(diǎn)102被指定具有最低優(yōu)先級并被列為優(yōu)先級列表的第四。通過按優(yōu)先次序排列選為源節(jié)點(diǎn)的緩存節(jié)點(diǎn)104,選擇參數(shù)可減少整體的處理時(shí)間以滿足緩存節(jié)點(diǎn)C3 104的請求。盡管圖4示出了所選擇的源節(jié)點(diǎn)可處于“共享”狀態(tài),但是其它實(shí)施例可具有處于“修改”狀態(tài)和/或“排除”狀態(tài)中的所選源節(jié)點(diǎn)(例如緩存節(jié)點(diǎn)C2 104)。換言之,對等緩存轉(zhuǎn)發(fā)還可發(fā)生在所選的源節(jié)點(diǎn)處于“修改”狀態(tài)和/或“排除”狀態(tài)中的時(shí)候。
[0039]如上所述,選擇參數(shù)可包括基于多核系統(tǒng)400的拓?fù)?、多核系統(tǒng)400內(nèi)緩存節(jié)點(diǎn)104和主節(jié)點(diǎn)102的當(dāng)前條件狀態(tài),以及選擇過程的偏好的參數(shù)??山M合一個或多個不同的選擇參數(shù)以優(yōu)化選擇源節(jié)點(diǎn)的選擇過程。例如,主節(jié)點(diǎn)102可基于其中一個“拓?fù)溥x擇參數(shù)”和其中一個“當(dāng)前條件狀態(tài)”選擇參數(shù)來選擇源節(jié)點(diǎn)。選擇參數(shù)可存儲在主存儲器和/或目錄內(nèi)。每當(dāng)主節(jié)點(diǎn)102從請求緩存節(jié)點(diǎn)104接收請求時(shí),主節(jié)點(diǎn)102可動態(tài)選擇緩存節(jié)點(diǎn)104和/或它自己作為源節(jié)點(diǎn)。源節(jié)點(diǎn)的選擇不由緩存一致性協(xié)議預(yù)定義和/或預(yù)定。
[0040]“拓?fù)溥x擇參數(shù)”可包括關(guān)于多核系統(tǒng)400拓?fù)涞膮?shù)?!巴?fù)溥x擇參數(shù)”在多核系統(tǒng)400拓?fù)浞矫娲嬖诩?xì)節(jié)粒度上的不同。例如,主節(jié)點(diǎn)102可存儲廣義的“拓?fù)溥x擇參數(shù)”和/或籠統(tǒng)的拓?fù)湫畔ⅲ?,緩存?jié)點(diǎn)104與相對于發(fā)送請求數(shù)據(jù)消息404的緩存節(jié)點(diǎn)104的主節(jié)點(diǎn)102之間的距離值?;诰嚯x信息,主節(jié)點(diǎn)102可選擇與發(fā)送請求數(shù)據(jù)消息404的緩存節(jié)點(diǎn)104最近的緩存節(jié)點(diǎn)104。以圖4為例,主節(jié)點(diǎn)102可選擇緩存節(jié)點(diǎn)C2104作為源節(jié)點(diǎn),因?yàn)榫彺婀?jié)點(diǎn)C2 104可能是與緩存節(jié)點(diǎn)C3 104位置最接近的緩存節(jié)點(diǎn)104。在另一項(xiàng)實(shí)施例中,主節(jié)點(diǎn)102可使用多核系統(tǒng)400的拓?fù)洳季?例如網(wǎng)狀拓?fù)?來選擇源節(jié)點(diǎn)。例如,多核系統(tǒng)400可使用提供成本信息的成本圖通過多核系統(tǒng)400內(nèi)的不同路徑將數(shù)據(jù)從一個緩存節(jié)點(diǎn)104轉(zhuǎn)發(fā)給另一緩存節(jié)點(diǎn)104。
[0041]“當(dāng)前條件狀態(tài)”選擇參數(shù)可關(guān)于與緩存節(jié)點(diǎn)C0-C2 104相關(guān)聯(lián)的不同條件,例如緩存線內(nèi)存儲的數(shù)據(jù)的年齡。主節(jié)點(diǎn)102可使用緩存節(jié)點(diǎn)C0-C2 104中存儲的數(shù)據(jù)年齡。數(shù)據(jù)年齡可表示將數(shù)據(jù)副本存儲在緩存節(jié)點(diǎn)104內(nèi)以及通知主節(jié)點(diǎn)102后已經(jīng)消逝的時(shí)間間隔。在某些實(shí)例中,盡管目錄項(xiàng)可具有標(biāo)記為“共享”狀態(tài)的緩存節(jié)點(diǎn)C0-C2 104中的緩存線,但是緩存節(jié)點(diǎn)C0-C2 104內(nèi)的實(shí)際緩存線可能已經(jīng)在沒有通知主節(jié)點(diǎn)102的情況下被新數(shù)據(jù)覆蓋。選擇最近將被請求數(shù)據(jù)存儲在緩存線的緩存節(jié)點(diǎn)104增加了緩存節(jié)點(diǎn)104仍然保存正確數(shù)據(jù)的可能性。以圖4為例,緩存節(jié)點(diǎn)C0 104可能已經(jīng)將被請求數(shù)據(jù)保存了最長時(shí)間周期(例如,數(shù)據(jù)年齡是緩存節(jié)點(diǎn)C0-C2 104中最老的),而緩存節(jié)點(diǎn)C2 104可能已經(jīng)將被請求數(shù)據(jù)保存了最短時(shí)間周期。在某些實(shí)例中,緩存節(jié)點(diǎn)C0 104可能已經(jīng)丟棄被請求數(shù)據(jù)并且使用新數(shù)據(jù)覆蓋緩存線。如果主節(jié)點(diǎn)102選擇緩存節(jié)點(diǎn)C0 104作為源節(jié)點(diǎn),那么緩存節(jié)點(diǎn)C0 104將無法執(zhí)行對等緩存轉(zhuǎn)發(fā)。因此,主節(jié)點(diǎn)102可選擇具有被請求數(shù)據(jù)的最近副本的緩存節(jié)點(diǎn)104?!爱?dāng)前條件狀態(tài)”選擇參數(shù)還可包括所有緩存節(jié)點(diǎn)104和主節(jié)點(diǎn)102的當(dāng)前工作量、可用帶寬和容量等參數(shù)。主節(jié)點(diǎn)102可監(jiān)控所有緩存節(jié)點(diǎn)104和它自己的當(dāng)前工作量、可用帶寬和處理容量。主節(jié)點(diǎn)102可動態(tài)選擇具有最多帶寬和/或最少當(dāng)前工作量的緩存節(jié)點(diǎn)104和/或主節(jié)點(diǎn)102作為源節(jié)點(diǎn)。
[0042]主節(jié)點(diǎn)102可用于通過“偏好選擇參數(shù)”選擇源節(jié)點(diǎn)。“偏好選擇參數(shù)”可表示選擇源節(jié)點(diǎn)的預(yù)定義方法。例如,主節(jié)點(diǎn)102可用于隨機(jī)或以輪詢調(diào)度方式選擇源節(jié)點(diǎn)。當(dāng)多核系統(tǒng)400內(nèi)存在充足的資源和處理容量時(shí),可隨機(jī)選擇源節(jié)點(diǎn)。隨機(jī)和/或輪詢調(diào)度選擇參數(shù)的實(shí)施通常不復(fù)雜,因此減少了主節(jié)點(diǎn)102選擇源節(jié)點(diǎn)所需的處理時(shí)間。
[0043]選擇源節(jié)點(diǎn)之后,主節(jié)點(diǎn)102接著向源節(jié)點(diǎn)發(fā)送偵聽轉(zhuǎn)發(fā)消息406。偵聽轉(zhuǎn)發(fā)消息406可用于確定源節(jié)點(diǎn)是否具有在請求數(shù)據(jù)消息404中請求的數(shù)據(jù)并且指示源節(jié)點(diǎn)將被請求數(shù)據(jù)轉(zhuǎn)發(fā)給請求緩存節(jié)點(diǎn)104。接收請求之后,源節(jié)點(diǎn)可使用請求數(shù)據(jù)消息404中引用的地址執(zhí)行查找。當(dāng)源節(jié)點(diǎn)在該地址處具有被請求數(shù)據(jù)時(shí),那么源節(jié)點(diǎn)可將被請求數(shù)據(jù)轉(zhuǎn)發(fā)給請求緩存節(jié)點(diǎn)104。如圖4所示,作為源節(jié)點(diǎn),緩存節(jié)點(diǎn)C2 104將轉(zhuǎn)發(fā)數(shù)據(jù)消息408轉(zhuǎn)發(fā)給緩存節(jié)點(diǎn)C3 104。在一項(xiàng)實(shí)施例中,如果主節(jié)點(diǎn)102使用的選擇參數(shù)選擇主節(jié)點(diǎn)102作為源節(jié)點(diǎn),則主節(jié)點(diǎn)102還能夠選擇它自己將數(shù)據(jù)轉(zhuǎn)發(fā)給緩存節(jié)點(diǎn)C3 104。當(dāng)主節(jié)點(diǎn)102指定它自己作為源節(jié)點(diǎn)時(shí),主節(jié)點(diǎn)102不需要發(fā)送偵聽轉(zhuǎn)發(fā)消息406。相反,主節(jié)點(diǎn)102無需首先發(fā)送偵聽轉(zhuǎn)發(fā)消息406就可以直接向緩存節(jié)點(diǎn)C3 104發(fā)送轉(zhuǎn)發(fā)數(shù)據(jù)消息408。
[0044]或者,如果所選擇的源節(jié)點(diǎn)(例如緩存節(jié)點(diǎn)C2 104)未存儲在請求數(shù)據(jù)消息404中請求的數(shù)據(jù),那么所選擇的源節(jié)點(diǎn)可通過向主節(jié)點(diǎn)102發(fā)送消息來響應(yīng)偵聽轉(zhuǎn)發(fā)消息406,其未在圖4中示出,指示沒有找到被請求數(shù)據(jù)。在主節(jié)點(diǎn)102內(nèi)的目錄指示所選擇的源節(jié)點(diǎn)處于“修改”和/或“排除”狀態(tài)中的實(shí)例中,主節(jié)點(diǎn)所選擇的源節(jié)點(diǎn)還可在回復(fù)消息內(nèi)提供回寫指令是否正發(fā)往主節(jié)點(diǎn)102的指示。包含回寫指示可避免潛在的死鎖問題以及不必要的流量開銷,這在2013年5月22日由Iulin Lih等人遞交的發(fā)明名稱為“為緩存一致性處理緩存回寫和緩存淘汰(Handling Cache Write-back and Cache Evict1n forCache Coherence) ”的第13/900187號美國專利申請案中進(jìn)行了更詳細(xì)地論述,該申請的內(nèi)容以全文引用的方式并入本文中。主節(jié)點(diǎn)102隨后可在向緩存節(jié)點(diǎn)C3 104(例如請求節(jié)點(diǎn))發(fā)送轉(zhuǎn)發(fā)數(shù)據(jù)消息408之前等待回寫。
[0045]圖5為基于一個或多個選擇參數(shù)動態(tài)選擇源節(jié)點(diǎn)的方法500的實(shí)施例的流程圖。方法500可由主節(jié)點(diǎn)102執(zhí)行以及可在被請求數(shù)據(jù)為“干凈”數(shù)據(jù)(例如,已經(jīng)在主存儲器中存儲的數(shù)據(jù))時(shí)使用。如上所述,選擇參數(shù)可存儲在主節(jié)點(diǎn)102的存儲器和/或目錄內(nèi)。方法500開始于方框502并從請求緩存節(jié)點(diǎn)接收數(shù)據(jù)請求。請求緩存節(jié)點(diǎn)可能無法獲取本地位于請求緩存節(jié)點(diǎn)內(nèi)的數(shù)據(jù)并且隨后發(fā)送詢問主節(jié)點(diǎn)在哪獲取被請求數(shù)據(jù)的數(shù)據(jù)請求主節(jié)點(diǎn)。
[0046]接收請求后,方法500可前進(jìn)到方框504并確定是否在主節(jié)點(diǎn)處的目錄內(nèi)找到了數(shù)據(jù)。如果目錄沒有信息,則方法可前進(jìn)到方框514以將數(shù)據(jù)請求轉(zhuǎn)發(fā)給存儲器層次結(jié)構(gòu)的下一層。如圖1和2所示,數(shù)據(jù)請求可通過位于存儲器層次結(jié)構(gòu)的下一級別處的網(wǎng)絡(luò)結(jié)構(gòu)轉(zhuǎn)發(fā)數(shù)據(jù)請求。之后,完成方框514,則方法500結(jié)束。返回方框504,如果方法500在目錄內(nèi)找到被請求數(shù)據(jù),那么方法500前進(jìn)到方框506。
[0047]在方框506,方法500可基于上述一個或多個選擇參數(shù)選擇源節(jié)點(diǎn)。源節(jié)點(diǎn)可以是請求數(shù)據(jù)的緩存節(jié)點(diǎn)之外的緩存節(jié)點(diǎn)之一和/或主節(jié)點(diǎn)。源節(jié)點(diǎn)的選擇不由緩存一致性協(xié)議來預(yù)定義和/或預(yù)定,例如使用“自有”狀態(tài)和/或“轉(zhuǎn)發(fā)”狀態(tài)來標(biāo)記源節(jié)點(diǎn)。在方法500選擇源節(jié)點(diǎn)之后,方法500可前進(jìn)到方框508并向源節(jié)點(diǎn)發(fā)送偵聽轉(zhuǎn)發(fā)消息。之后,方法500移動到方框510并確定源節(jié)點(diǎn)是否回復(fù)一條指示未找到數(shù)據(jù)的消息。如果方法500隨后接收到一條指示未找到數(shù)據(jù)的消息,那么方法500繼續(xù)到方框512并選擇新的源節(jié)點(diǎn)。方框512之后,方法500環(huán)回到方框508。返回方框510,如果方法500未接收到來自源節(jié)點(diǎn)的指示未找到被請求數(shù)據(jù)的消息,那么方法500結(jié)束。
[0048]應(yīng)理解,通過將可執(zhí)行指令編程和/或加載至節(jié)點(diǎn)300,邏輯單元集群302、緩存存儲器304、存儲控制器314和存儲器316中的至少之一被改變,從而將節(jié)點(diǎn)300的一部分轉(zhuǎn)換成本發(fā)明宣揚(yáng)的擁有新穎功能的特定機(jī)器或裝置,例如節(jié)點(diǎn)。加載可執(zhí)行軟件至計(jì)算機(jī)所實(shí)現(xiàn)的功能可以通過公知設(shè)計(jì)規(guī)則轉(zhuǎn)換成硬件實(shí)施,這在電力工程和軟件工程領(lǐng)域是很基礎(chǔ)的。決定使用軟件還是硬件來實(shí)施一個概念通常取決于對設(shè)計(jì)穩(wěn)定性及待生產(chǎn)的單元數(shù)量的考慮,而不是從軟件領(lǐng)域轉(zhuǎn)換至硬件領(lǐng)域中所涉及的任何問題。一般來說,經(jīng)常變動的設(shè)計(jì)更適于在軟件中實(shí)施,因?yàn)橹匦戮帉懹布?shí)施比重新編寫軟件設(shè)計(jì)更為昂貴。通常,穩(wěn)定及大規(guī)模生產(chǎn)的設(shè)計(jì)更適于在如ASIC這樣的硬件中實(shí)施,因?yàn)檫\(yùn)行硬件實(shí)施的大規(guī)模生產(chǎn)比軟件實(shí)施更為便宜。設(shè)計(jì)通??梢砸攒浖问竭M(jìn)行開發(fā)和測試,之后通過公知設(shè)計(jì)規(guī)則轉(zhuǎn)變成專用集成電路中等同的硬件實(shí)施,該集成電路硬線軟件指令。由新ASIC控制的機(jī)器是一特定的機(jī)器或裝置,同樣地,編程和/或加載有可執(zhí)行指令的電腦可視為特定的機(jī)器或裝置。
[0049]本發(fā)明公開至少一項(xiàng)實(shí)施例,且所屬領(lǐng)域的普通技術(shù)人員對所述實(shí)施例和/或所述實(shí)施例的特征作出的變化、組合和/或修改均在本發(fā)明公開的范圍內(nèi)。因組合、合并和/或省略所述實(shí)施例的特征而得到的替代性實(shí)施例也在本發(fā)明的范圍內(nèi)。應(yīng)當(dāng)理解的是,本發(fā)明已明確闡明了數(shù)值范圍或限制,此類明確的范圍或限制應(yīng)包括涵蓋在上述范圍或限制(如從大約1至大約10的范圍包括2、3、4等;大于0.10的范圍包括0.11,0.12,0.13等)內(nèi)的類似數(shù)量級的迭代范圍或限制。例如,每當(dāng)公開具有下限札和上限Ru的數(shù)值范圍時(shí),具體是公開落入所述范圍內(nèi)的任何數(shù)字。具體而言,特別公開所述范圍內(nèi)的以下數(shù)字:R =尺1+1^0^-1?1),其中1^為從1%到100%范圍內(nèi)以1%遞增的變量,即,k為1%、2%、3%、4%,7%......70%,71%,72%......97%、96%、97%、98%、99%或 100%。此外,還特此公開了,上文定義的兩個R值所定義的任何數(shù)值范圍。除非另有說明,否則使用術(shù)語約是指隨后數(shù)字的±10%。相對于權(quán)利要求的某一要素,術(shù)語“可選地”的使用表示該要素可以是需要的,或者也可以是不需要的,二者均在所述權(quán)利要求的范圍內(nèi)。使用如包括、包含和具有摂?shù)容^廣術(shù)語應(yīng)被理解為提供對如由……組成、基本上由……組成,以及大體上由……組成等較窄術(shù)語的支持。因此,保護(hù)范圍不受上文所述的限制,而是由所附權(quán)利要求書定義,所述范圍包含所附權(quán)利要求書的標(biāo)的物的所有等效物。每項(xiàng)和每條權(quán)利要求作為進(jìn)一步公開的內(nèi)容并入說明書中,且權(quán)利要求書是本發(fā)明的實(shí)施例。所述揭示內(nèi)容中的參考的論述并不是承認(rèn)其為現(xiàn)有技術(shù),尤其是具有在本申請案的在先申請 優(yōu)先權(quán)日:期之后的
【公開日】期的任何參考。本發(fā)明中所引用的所有專利、專利申請案和公開案的揭示內(nèi)容特此以引用的方式并入本文本中,其提供補(bǔ)充本發(fā)明的示例性、程序性或其它細(xì)節(jié)。
[0050]雖然本發(fā)明中已提供若干實(shí)施例,但應(yīng)理解,在不脫離本發(fā)明的精神或范圍的情況下,本發(fā)明所公開的系統(tǒng)和方法可以以許多其它特定形式來體現(xiàn)。本發(fā)明的實(shí)例應(yīng)被視為說明性而非限制性的,且本發(fā)明并不限于本文本所給出的細(xì)節(jié)。例如,各種元件或部件可以在另一系統(tǒng)中組合或合并,或者某些特征可以省略或不實(shí)施。
[0051]此外,在不脫離本發(fā)明的范圍的情況下,各種實(shí)施例中描述和說明為離散或單獨(dú)的技術(shù)、系統(tǒng)、子系統(tǒng)和方法可以與其它系統(tǒng)、模塊、技術(shù)或方法進(jìn)行組合或合并。展示或論述為彼此耦合或直接耦合或通信的其它項(xiàng)也可以采用電方式、機(jī)械方式或其它方式通過某一接口、設(shè)備或中間部件間接地耦合或通信。其它變化、替代和改變的示例可以由本領(lǐng)域的技術(shù)人員在不脫離本文精神和所公開的范圍的情況下確定。
【權(quán)利要求】
1.一種使用緩存一致性協(xié)議選擇源節(jié)點(diǎn)的主節(jié)點(diǎn),其特征在于,包括: 耦合到目錄的邏輯單元集群,其中所述邏輯單元集群用于: 從請求緩存節(jié)點(diǎn)接收對數(shù)據(jù)的請求; 使用所述目錄確定保存所述被請求數(shù)據(jù)的副本的多個節(jié)點(diǎn); 使用一個或多個選擇參數(shù)選擇其中一個節(jié)點(diǎn)作為所述源節(jié)點(diǎn);以及 向所述源節(jié)點(diǎn)發(fā)送消息以確定所述源節(jié)點(diǎn)是否存儲所述被請求數(shù)據(jù)的副本, 其中當(dāng)在所述源節(jié)點(diǎn)內(nèi)找到所述被請求數(shù)據(jù)時(shí),所述源節(jié)點(diǎn)將所述被請求數(shù)據(jù)轉(zhuǎn)發(fā)給所述請求緩存節(jié)點(diǎn),以及 一些所述節(jié)點(diǎn)被標(biāo)記為對應(yīng)于所述緩存一致性協(xié)議的共享狀態(tài)。
2.根據(jù)權(quán)利要求1所述的主節(jié)點(diǎn),其特征在于,所述邏輯單元集群進(jìn)一步用于,當(dāng)在所述源節(jié)點(diǎn)內(nèi)未找到所述被請求數(shù)據(jù)時(shí),從所述源節(jié)點(diǎn)接收第二消息。
3.根據(jù)權(quán)利要求2所述的主節(jié)點(diǎn),其特征在于,所述邏輯單元集群進(jìn)一步用于,當(dāng)接收所述第二消息時(shí),使用一個或多個選擇參數(shù)選擇第二源節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求1所述的主節(jié)點(diǎn),其特征在于,所述目錄包括多個狀態(tài)信息,其對應(yīng)于位于至少一些所述節(jié)點(diǎn)內(nèi)的多個緩存線的緩存一致性協(xié)議。
5.根據(jù)權(quán)利要求2所述的主節(jié)點(diǎn),其特征在于,所述緩存一致性協(xié)議是修改、排除、共享、無效(MESI)緩存一致性協(xié)議。
6.根據(jù)權(quán)利要求1所述的主節(jié)點(diǎn),其特征在于,所述選擇參數(shù)包括至少一個以下參數(shù):拓?fù)溥x擇參數(shù)、當(dāng)前條件狀態(tài)選擇參數(shù)以及偏好選擇參數(shù)。
7.根據(jù)權(quán)利要求6所述的主節(jié)點(diǎn),其特征在于,所述拓?fù)溥x擇參數(shù)表示所述請求緩存節(jié)點(diǎn)和所述節(jié)點(diǎn)之間的距離。
8.根據(jù)權(quán)利要求6所述的主節(jié)點(diǎn),其特征在于,所述當(dāng)前條件狀態(tài)選擇參數(shù)表示存儲在所述節(jié)點(diǎn)中的所述被請求數(shù)據(jù)的多個年齡。
9.根據(jù)權(quán)利要求6所述的主節(jié)點(diǎn),其特征在于,所述偏好選擇參數(shù)表示選擇所述源節(jié)點(diǎn)的隨機(jī)選擇過程。
10.根據(jù)權(quán)利要求1所述的主節(jié)點(diǎn),其特征在于,其中一個所述節(jié)點(diǎn)是所述主節(jié)點(diǎn),以及所述主節(jié)點(diǎn)的存儲器級別比其它節(jié)點(diǎn)的高。
11.根據(jù)權(quán)利要求1所述的主節(jié)點(diǎn),其特征在于,所述邏輯單元集群進(jìn)一步用于從所述請求緩存節(jié)點(diǎn)接收第二請求和選擇第二源節(jié)點(diǎn)以將所述第二請求數(shù)據(jù)轉(zhuǎn)發(fā)給所述請求緩存節(jié)點(diǎn),以及所述源節(jié)點(diǎn)和第二源節(jié)點(diǎn)是不同的節(jié)點(diǎn)。
12.一種使用緩存一致性協(xié)議執(zhí)行對等緩存轉(zhuǎn)發(fā)的緩存節(jié)點(diǎn),其特征在于,包括: 耦合到本地存儲器的邏輯單元集群,其中所述邏輯單元集群用于: 從主節(jié)點(diǎn)接收偵聽轉(zhuǎn)發(fā)消息; 使用所述偵聽轉(zhuǎn)發(fā)消息中的信息確定被請求數(shù)據(jù)是否存儲在所述本地存儲器內(nèi); 當(dāng)所述被請求數(shù)據(jù)存儲在所述本地存儲器內(nèi)時(shí),將所述被請求數(shù)據(jù)轉(zhuǎn)發(fā)給請求緩存節(jié)點(diǎn);以及 當(dāng)所述被請求數(shù)據(jù)未存儲在所述本地存儲器內(nèi)時(shí),向所述主節(jié)點(diǎn)發(fā)送消息, 其中所述緩存節(jié)點(diǎn)分配有所述緩存一致性協(xié)議的共享狀態(tài)。
13.根據(jù)權(quán)利要求12所述的緩存節(jié)點(diǎn),其特征在于,所述被請求數(shù)據(jù)的副本存儲在所述主節(jié)點(diǎn)中。
14.根據(jù)權(quán)利要求12所述的緩存節(jié)點(diǎn),其特征在于,所述緩存節(jié)點(diǎn)耦合到多個節(jié)點(diǎn),以及所述緩存節(jié)點(diǎn)的業(yè)務(wù)工作量比所述多個節(jié)點(diǎn)的少。
15.根據(jù)權(quán)利要求12所述的緩存節(jié)點(diǎn),其特征在于,所述緩存一致性協(xié)議使用兩個位表示所述緩存節(jié)點(diǎn)的共享狀態(tài)。
16.根據(jù)權(quán)利要求12所述的緩存節(jié)點(diǎn),其特征在于,所述緩存一致性協(xié)議是修改、共享、無效(MSI)緩存一致性協(xié)議。
17.一種使用緩存一致性協(xié)議選擇源節(jié)點(diǎn)的方法,其特征在于,所述方法包括: 維護(hù)將多個條目標(biāo)記為所述緩存一致性協(xié)議內(nèi)的共享狀態(tài)的目錄; 從其中一個所述緩存節(jié)點(diǎn)接收數(shù)據(jù)請求; 確定所述被請求的數(shù)據(jù)是否映射到所述目錄內(nèi)的其中一個條目; 當(dāng)在所述目錄內(nèi)的其中一個項(xiàng)目中未找到所述被請求的數(shù)據(jù)時(shí),向存儲器的下一級別發(fā)送所述數(shù)據(jù)請求; 當(dāng)在所述其中一個條目中找到所述被請求的數(shù)據(jù)時(shí),使用一個或多個選擇參數(shù)從對應(yīng)于所述其中一個項(xiàng)目的多個緩存節(jié)點(diǎn)中選擇源節(jié)點(diǎn);以及 向所述源節(jié)點(diǎn)發(fā)送轉(zhuǎn)發(fā)偵聽消息以確定所述源節(jié)點(diǎn)是否存儲所述被請求數(shù)據(jù)的副本, 其中所述選擇參數(shù)按優(yōu)先次序排列選為所述源節(jié)點(diǎn)的緩存節(jié)點(diǎn),以及 所述源節(jié)點(diǎn)在所述緩存節(jié)點(diǎn)之間具有最高優(yōu)先級。
18.根據(jù)權(quán)利要求17所述的方法,其特征在于,進(jìn)一步包括接收指示所述源節(jié)點(diǎn)未保存所述被請求數(shù)據(jù)的消息以及選擇在所述緩存節(jié)點(diǎn)之間具有第二最高優(yōu)先級的第二源節(jié)點(diǎn)。
19.根據(jù)權(quán)利要求17所述的方法,其特征在于,所述選擇參數(shù)使用所述緩存節(jié)點(diǎn)和主節(jié)點(diǎn)之間的拓?fù)洳季忠园磧?yōu)先次序排列所述源節(jié)點(diǎn)的所述選擇。
20.根據(jù)權(quán)利要求17所述的方法,其特征在于,所述主節(jié)點(diǎn)和緩存節(jié)點(diǎn)位于存儲器的不同級別內(nèi)。
【文檔編號】G06F12/08GK104508637SQ201380039835
【公開日】2015年4月8日 申請日期:2013年7月30日 優(yōu)先權(quán)日:2012年7月30日
【發(fā)明者】林奕林, 賀成洪, 史洪波, 張納新 申請人:華為技術(shù)有限公司