[并發(fā)編程] MESI--CPU緩存一致性協(xié)議

概念

MESIModified Exclusive Shared Or Invalid)(也稱為伊利諾斯協(xié)議,是因為該協(xié)議由伊利諾斯州立大學(xué)提出)是一種廣泛使用的支持寫回策略的緩存一致性協(xié)議神凑。

MESI協(xié)議中的狀態(tài)

CPU中每個緩存行(caceh line)使用4種狀態(tài)進行標(biāo)記(使用額外的兩位(bit)表示):

M: 被修改(Modified)

該緩存行只被緩存在該CPU的緩存中贿讹,并且是被修改過的(dirty),即與主存中的數(shù)據(jù)不一致蛹含,該緩存行中的內(nèi)存需要在未來的某個時間點(允許其它CPU讀取請主存中相應(yīng)內(nèi)存之前)寫回(write back)主存旱捧。

當(dāng)被寫回主存之后耘子,該緩存行的狀態(tài)會變成獨享(exclusive)狀態(tài)脏里。

E: 獨享的(Exclusive)

該緩存行只被緩存在該CPU的緩存中她我,它是未被修改過的(clean),與主存中數(shù)據(jù)一致。該狀態(tài)可以在任何時刻當(dāng)有其它CPU讀取該內(nèi)存時變成共享狀態(tài)(shared)番舆。

同樣地酝碳,當(dāng)CPU修改該緩存行中內(nèi)容時,該狀態(tài)可以變成Modified狀態(tài)恨狈。

S: 共享的(Shared)

該狀態(tài)意味著該緩存行可能被多個CPU緩存疏哗,并且各個緩存中的數(shù)據(jù)與主存數(shù)據(jù)一致(clean),當(dāng)有一個CPU修改該緩存行中禾怠,其它CPU中該緩存行可以被作廢(變成無效狀態(tài)(Invalid))返奉。

I: 無效的(Invalid)

該緩存是無效的(可能有其它CPU修改了該緩存行)。

MESI狀態(tài)轉(zhuǎn)換圖

轉(zhuǎn)換

狀態(tài)之間的相互轉(zhuǎn)換關(guān)系也可以使用下表進行表示吗氏。

操作

在一個典型系統(tǒng)中芽偏,可能會有幾個緩存(在多核系統(tǒng)中,每個核心都會有自己的緩存)共享主存總線牲证,每個相應(yīng)的CPU會發(fā)出讀寫請求哮针,而緩存的目的是為了減少CPU讀寫共享主存的次數(shù)。

一個緩存除在Invalid狀態(tài)外都可以滿足cpu的讀請求坦袍,一個Invalid的緩存行必須從主存中讀仁帷(變成S或者 E狀態(tài))來滿足該CPU的讀請求。

一個寫請求只有在該緩存行是M或者E狀態(tài)時才能被執(zhí)行捂齐,如果緩存行處于S狀態(tài)蛮放,必須先將其它緩存中該緩存行變成Invalid狀態(tài)(也既是不允許不同CPU同時修改同一緩存行,即使修改該緩存行中不同位置的數(shù)據(jù)也不允許)奠宜。該操作經(jīng)常作用廣播的方式來完成包颁,例如:RequestFor Ownership (RFO)

緩存可以隨時將一個非M狀態(tài)的緩存行作廢压真,或者變成Invalid狀態(tài)娩嚼,而一個M狀態(tài)的緩存行必須先被寫回主存。

一個處于M狀態(tài)的緩存行必須時刻監(jiān)聽所有試圖讀該緩存行相對就主存的操作滴肿,這種操作必須在緩存將該緩存行寫回主存并將狀態(tài)變成S狀態(tài)之前被延遲執(zhí)行岳悟。

一個處于S狀態(tài)的緩存行也必須監(jiān)聽其它緩存使該緩存行無效或者獨享該緩存行的請求,并將該緩存行變成無效(Invalid)泼差。

一個處于E狀態(tài)的緩存行也必須監(jiān)聽其它緩存讀主存中該緩存行的操作贵少,一旦有這種操作,該緩存行需要變成S狀態(tài)堆缘。

對于ME狀態(tài)而言總是精確的滔灶,他們在和該緩存行的真正狀態(tài)是一致的。而S狀態(tài)可能是非一致的吼肥,如果一個緩存將處于S狀態(tài)的緩存行作廢了录平,而另一個緩存實際上可能已經(jīng)

獨享了該緩存行麻车,但是該緩存卻不會將該緩存行升遷為E狀態(tài),這是因為其它緩存不會廣播他們作廢掉該緩存行的通知萄涯,同樣由于緩存并沒有保存該緩存行的copy的數(shù)量绪氛,因此(即使有這種通知)也沒有辦法確定自己是否已經(jīng)獨享了該緩存行。

從上面的意義看來E狀態(tài)是一種投機性的優(yōu)化:如果一個CPU想修改一個處于S狀態(tài)的緩存行涝影,總線事務(wù)需要將所有該緩存行的copy變成Invalid狀態(tài),而修改E狀態(tài)的緩存不需要使用總線事務(wù)争占。

原文鏈接

參考資料
計算機體系結(jié)構(gòu)(第五版)-復(fù)習(xí)-MESI&MOESI協(xié)議

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末燃逻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子臂痕,更是在濱河造成了極大的恐慌伯襟,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件握童,死亡現(xiàn)場離奇詭異姆怪,居然都是意外死亡,警方通過查閱死者的電腦和手機澡绩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門稽揭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人肥卡,你說我怎么就攤上這事溪掀。” “怎么了步鉴?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵揪胃,是天一觀的道長。 經(jīng)常有香客問我氛琢,道長喊递,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任阳似,我火速辦了婚禮骚勘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘障般。我一直安慰自己调鲸,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布挽荡。 她就那樣靜靜地躺著藐石,像睡著了一般。 火紅的嫁衣襯著肌膚如雪定拟。 梳的紋絲不亂的頭發(fā)上于微,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天逗嫡,我揣著相機與錄音,去河邊找鬼株依。 笑死驱证,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的恋腕。 我是一名探鬼主播抹锄,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荠藤!你這毒婦竟也來了伙单?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哈肖,失蹤者是張志新(化名)和其女友劉穎吻育,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體淤井,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡布疼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了币狠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片游两。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖总寻,靈堂內(nèi)的尸體忽然破棺而出器罐,到底是詐尸還是另有隱情,我是刑警寧澤渐行,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布轰坊,位于F島的核電站,受9級特大地震影響祟印,放射性物質(zhì)發(fā)生泄漏肴沫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一蕴忆、第九天 我趴在偏房一處隱蔽的房頂上張望颤芬。 院中可真熱鬧,春花似錦套鹅、人聲如沸站蝠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽菱魔。三九已至,卻和暖如春吟孙,著一層夾襖步出監(jiān)牢的瞬間澜倦,已是汗流浹背聚蝶。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留藻治,地道東北人碘勉。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像桩卵,于是被迫代替她去往敵國和親验靡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355