為緩存一致性處理緩存回寫(xiě)和緩存淘汰的制作方法
【專利說(shuō)明】為緩存一致性處理緩存回寫(xiě)和緩存淘汰
[0001]相關(guān)申請(qǐng)案交叉申請(qǐng)
[0002]本發(fā)明要求2013年5月22日由Iulin Lih等人遞交的發(fā)明名稱為“為緩存一致性處理緩存回寫(xiě)和緩存淘汰(Handling Cache Write-back and Cache Evict1n for CacheCoherence) ”的第13/900187號(hào)美國(guó)非臨時(shí)專利申請(qǐng)案的在先申請(qǐng)優(yōu)先權(quán),該在先申請(qǐng)案要求2012年7月31日由Iulin Lih等人遞交的發(fā)明名稱為“為緩存一致性處理緩存回寫(xiě)和緩存淘汰(Handling Cache Write-back and Cache Evict1n for Cache Coherence),,的第61/677905號(hào)美國(guó)臨時(shí)專利申請(qǐng)案以及2013年3月13日由Iulin Lih等人遞交的發(fā)明名稱為“為緩存一致性處理緩存回寫(xiě)和緩存淘汰(Handling Cache Write-back and CacheEvict1n for Cache Coherence) ”的第61/780494號(hào)美國(guó)臨時(shí)專利申請(qǐng)案的在先申請(qǐng)優(yōu)先權(quán),這些在先申請(qǐng)的內(nèi)容以引用的方式并入本文本中,如全文再現(xiàn)一般。
[0003]關(guān)于由聯(lián)邦政府贊助
[0004]研宄或開(kāi)發(fā)的聲明
[0005]不適用。
[0006]參考縮微膠片附錄
[0007]不適用。
【背景技術(shù)】
[0008]隨著處理器的時(shí)鐘速度提高以及主存儲(chǔ)器變得更大,當(dāng)處理器訪問(wèn)主存儲(chǔ)器時(shí)可能出現(xiàn)較長(zhǎng)的時(shí)延周期??蓪?shí)施緩存等級(jí)(例如,不同緩存級(jí)別)以降低由頻繁訪問(wèn)主存儲(chǔ)器引起的時(shí)延和性能瓶頸。緩存可能是一個(gè)或多個(gè)小型高速相聯(lián)存儲(chǔ)器,其降低了訪問(wèn)主存儲(chǔ)器的平均時(shí)間。為了降低訪問(wèn)主存儲(chǔ)器的平均時(shí)間,緩存提供了經(jīng)常引用的主存儲(chǔ)器位置的副本。當(dāng)處理器在主存儲(chǔ)器中讀取或?qū)懭胛恢脮r(shí),處理器首先檢查緩存存儲(chǔ)器中是否存在數(shù)據(jù)副本。如果存在,處理器指向緩存存儲(chǔ)器而不是速度較慢的主存儲(chǔ)器。若想緩存有效,處理器需要不斷地訪問(wèn)緩存而不是主存儲(chǔ)器。遺憾的是,緩存的大小通常較小并限于存儲(chǔ)主存儲(chǔ)器內(nèi)數(shù)據(jù)的較小的子集。大小限制本質(zhì)上可限制緩存內(nèi)的“命中”率。當(dāng)緩存保存由處理器請(qǐng)求的數(shù)據(jù)的有效副本時(shí),發(fā)生“命中”,而當(dāng)緩存無(wú)法保存被請(qǐng)求數(shù)據(jù)的有效副本時(shí),發(fā)生“缺失”。當(dāng)緩存內(nèi)發(fā)生“缺失”時(shí),處理器可隨后訪問(wèn)速度較慢的主存儲(chǔ)器。
[0009]具體而言,在多處理器計(jì)算機(jī)系統(tǒng)中可能存在所有處理器共享的主存儲(chǔ)器以及用于每個(gè)處理器或處理核的單獨(dú)緩存存儲(chǔ)器。因此,任何一個(gè)指令或數(shù)據(jù)都可能具有多個(gè)副本:主存儲(chǔ)器中有一個(gè)副本,每個(gè)緩存存儲(chǔ)器中有一個(gè)副本。在這種情況下,當(dāng)數(shù)據(jù)或指令的一個(gè)副本被更改時(shí),還應(yīng)該更改其它副本以維持一致性。緩存一致性協(xié)議可幫助確保及時(shí)地在整個(gè)系統(tǒng)傳播共享數(shù)據(jù)或指令中的更改。例如,當(dāng)計(jì)算機(jī)系統(tǒng)將數(shù)據(jù)塊寫(xiě)入緩存時(shí),計(jì)算機(jī)系統(tǒng)需要在某個(gè)點(diǎn)將該數(shù)據(jù)塊回寫(xiě)至主存儲(chǔ)器。該寫(xiě)時(shí)間受寫(xiě)策略控制,寫(xiě)策略可以是寫(xiě)通策略或回寫(xiě)策略。
[0010]當(dāng)緩存中的緩存線狀態(tài)被緩存代理(CA)更改(例如,緩存線中的數(shù)據(jù)需要被淘汰或被替換為新數(shù)據(jù))時(shí),更新后的數(shù)據(jù)可能需要被歸屬代理(HA)回寫(xiě)至主存儲(chǔ)器。CA和HA之間可能需要多輪消息交換以完成一致性事務(wù),其中一些消息交換并非總是必要的。例如,傳統(tǒng)回寫(xiě)事務(wù)可包括含完成和確認(rèn)消息的握手過(guò)程。由于握手在回寫(xiě)完成后實(shí)施,因此握手過(guò)程可能會(huì)向系統(tǒng)增加不必要的流量開(kāi)銷。此外,不論某些消息(例如,緩存線請(qǐng)求和回寫(xiě)或淘汰消息)的不同屬性,傳統(tǒng)事務(wù)都可通過(guò)相同的請(qǐng)求信道發(fā)送這些消息,這可能導(dǎo)致潛在死鎖問(wèn)題和HA過(guò)載。因此,需要簡(jiǎn)化緩存一致性事務(wù)以減少系統(tǒng)流量,從而提升系統(tǒng)性能。
【發(fā)明內(nèi)容】
[0011]在一項(xiàng)實(shí)施例中,本發(fā)明包括一種由計(jì)算機(jī)系統(tǒng)實(shí)施的方法,所述計(jì)算機(jī)系統(tǒng)包括第一存儲(chǔ)器代理和耦合到所述第一存儲(chǔ)器代理的第二存儲(chǔ)器代理,其中所述第二存儲(chǔ)器代理能夠訪問(wèn)包括緩存線的緩存,所述方法包括所述第二存儲(chǔ)器代理更改所述緩存線的狀態(tài),以及將非偵聽(tīng)消息通過(guò)指派給偵聽(tīng)響應(yīng)的通信信道從所述第二存儲(chǔ)器代理發(fā)送到所述第一存儲(chǔ)器代理,其中所述非偵聽(tīng)消息告知所述第一存儲(chǔ)器代理所述緩存線的所述狀態(tài)更改。
[0012]在另一項(xiàng)實(shí)施例中,本發(fā)明包括一種裝置,所述裝置包括第一存儲(chǔ)器代理和耦合到所述第一存儲(chǔ)器代理的第二存儲(chǔ)器代理,所述第二存儲(chǔ)器代理用于更改能夠訪問(wèn)所述第二存儲(chǔ)器代理的緩存線的狀態(tài),以及將非偵聽(tīng)消息通過(guò)指派給偵聽(tīng)響應(yīng)的通信信道發(fā)送到所述第一存儲(chǔ)器代理,其中所述非偵聽(tīng)消息告知所述第一存儲(chǔ)器代理所述緩存線的所述狀態(tài)更改。
[0013]在又一項(xiàng)實(shí)施例中,本發(fā)明包括一種由計(jì)算機(jī)系統(tǒng)實(shí)施的方法,所述計(jì)算機(jī)系統(tǒng)包括HA和至少一個(gè)CA,其中所述至少一個(gè)CA包括能夠訪問(wèn)含有緩存線的緩存的CA,所述方法包括所述CA更改所述緩存線的狀態(tài),以及將含有存儲(chǔ)在所述緩存線中的數(shù)據(jù)的回寫(xiě)消息或淘汰消息從所述CA發(fā)送到所述HA,其中在包括所述狀態(tài)更改和發(fā)送所述回寫(xiě)或淘汰消息的事務(wù)中,不在所述回寫(xiě)或淘汰消息之后執(zhí)行所述HA和所述CA之間的握手。
[0014]結(jié)合附圖和權(quán)利要求書(shū),可從以下的詳細(xì)描述中更清楚地理解這些和其它特征。
【附圖說(shuō)明】
[0015]為了更完整地理解本發(fā)明,現(xiàn)在參考以下結(jié)合附圖和詳細(xì)描述進(jìn)行的簡(jiǎn)要描述,其中相同參考標(biāo)號(hào)表不相同部分。
[0016]圖1示出了存儲(chǔ)器系統(tǒng)的實(shí)施例。
[0017]圖2示出了一致性域?qū)嵤┓绞降膶?shí)施例。
[0018]圖3A示出了緩存一致寫(xiě)事務(wù)的實(shí)施例。
[0019]圖3B示出了緩存一致讀事務(wù)的實(shí)施例。
[0020]圖4A示出了緩存一致回寫(xiě)事務(wù)的實(shí)施例。
[0021]圖4B示出了緩存一致淘汰事務(wù)的實(shí)施例。
[0022]圖5示出了緩存一致消息處理方法的實(shí)施例。
[0023]圖6示出了計(jì)算機(jī)系統(tǒng)的實(shí)施例。
【具體實(shí)施方式】
[0024]最初應(yīng)理解,盡管下文提供一個(gè)或多個(gè)實(shí)施例的說(shuō)明性實(shí)施方案,但可使用任意數(shù)目的當(dāng)前已知或現(xiàn)有的技術(shù)來(lái)實(shí)施所公開(kāi)的系統(tǒng)和/或方法。本發(fā)明決不應(yīng)限于下文所說(shuō)明的所述說(shuō)明性實(shí)施方案、圖式和技術(shù),包含本文所說(shuō)明并描述的示范性設(shè)計(jì)和實(shí)施方案,而是可以在所附權(quán)利要求書(shū)的范圍以及其均等物的完整范圍內(nèi)修改。
[0025]緩存存儲(chǔ)器(簡(jiǎn)稱為緩存)通常可包括多個(gè)緩存線,這些緩存線用作包含讀寫(xiě)訪問(wèn)的數(shù)據(jù)訪問(wèn)的基本單元或塊。緩存線可包括數(shù)據(jù)以及狀態(tài)。例如,每個(gè)緩存線或緩存行條目可能存在兩個(gè)標(biāo)記位:有效位和臟位。有效位指示緩存線是否有效,臟位指示自從最后一次從主存儲(chǔ)器讀取緩存線以后該緩存線是否被更改。如果自從最后一次從主存儲(chǔ)器讀取緩存線以后該緩存線被更改,則緩存線為“干凈”;否則,如果存儲(chǔ)器已經(jīng)向緩存線寫(xiě)入新數(shù)據(jù),且新數(shù)據(jù)仍未到達(dá)主存儲(chǔ)器,則緩存線為“臟”。
[0026]根據(jù)該協(xié)議,可使用多種術(shù)語(yǔ)描述緩存線的狀態(tài)。例如,MESI協(xié)議定義了修改(Modified)JlfeijEi (Exclusive)、共享(Shared)和無(wú)效(Invalid)狀態(tài)。根據(jù) MESI 協(xié)議,當(dāng)緩存線僅在當(dāng)前緩存中存在且為臟(即,已經(jīng)修改了主存儲(chǔ)器中的緩存線的值)時(shí),該緩存線處于修改(M)狀態(tài)。未來(lái)某個(gè)時(shí)候,在緩存允許對(duì)主存儲(chǔ)器(現(xiàn)無(wú)效)中對(duì)應(yīng)地址的任意其它讀取之前,緩存可能需要將數(shù)據(jù)回寫(xiě)至主存儲(chǔ)器?;貙?xiě)可將緩存線狀態(tài)更改為獨(dú)占狀態(tài)。當(dāng)緩存線僅在當(dāng)前緩存中存在且為干凈(即,緩存中的數(shù)據(jù)與主存儲(chǔ)器匹配)時(shí),緩存線處于獨(dú)占(E)狀態(tài)。任何時(shí)候都可以將緩存線的狀態(tài)更改為S狀態(tài)以響應(yīng)讀請(qǐng)求?;蛘?,當(dāng)緩存線正在被寫(xiě)入時(shí)其狀態(tài)可被更改為M狀態(tài)。當(dāng)緩存線存儲(chǔ)在存儲(chǔ)器系統(tǒng)的其它緩存或多個(gè)緩存中且為干凈(即,緩存中的數(shù)據(jù)與主存儲(chǔ)器匹配)時(shí),緩存線處于共享(S)狀態(tài)。在任何時(shí)候,可通過(guò)將緩存線狀態(tài)更改為I狀態(tài)來(lái)丟棄緩存線。無(wú)效(I)狀態(tài)指示緩存線無(wú)效或未使用。盡管使用MESI作為示例,但應(yīng)理解在本發(fā)明的范圍內(nèi)可以使用任意狀態(tài)協(xié)議。
[0027]緩存請(qǐng)求可指由于內(nèi)部事件引起的從CA到另一存儲(chǔ)器代理(HA或CA)的消息。例如,緩存線請(qǐng)求可以是從CA到其它存儲(chǔ)器代理的讀請(qǐng)求或?qū)懻?qǐng)求,響應(yīng)于CA的緩存中的讀或?qū)懭笔?,以?qǐng)求緩存線數(shù)據(jù)和/或讀或?qū)懙臋?quán)限?;貙?xiě)消息(有時(shí)簡(jiǎn)稱為回寫(xiě))可指例如由于內(nèi)部事件引起的從緩存代理(CA)到歸屬代理(HA)的消息以(例如,當(dāng)CA將緩存狀態(tài)從修改更改為干凈或無(wú)效時(shí))更新包括數(shù)據(jù)和緩存線狀態(tài)的緩存線。淘汰消息(有時(shí)簡(jiǎn)稱為淘汰)可指當(dāng)例如由于內(nèi)部事件引