JUC并發(fā)編程-2.CPU多級(jí)緩存與JMM

1.CPU多級(jí)緩存

1.1 為什么需要CPU cache

CPU的頻率太快了,快到主存跟不上,這樣在處理器時(shí)鐘周期內(nèi),CPU常常需要等待主存,浪費(fèi)資源。所以cache的出現(xiàn),是為了緩解CPU和內(nèi)存之間速度的不匹配問題(結(jié)構(gòu):cpu >> cache >> memory).

1.2 CPU cache有什么意義

1.時(shí)間局部性:如果某個(gè)數(shù)據(jù)被訪問,那么在不久的將來它很可能被再次訪問
2.空間局部性:如果某個(gè)數(shù)據(jù)被訪問,那么與它響鈴的數(shù)據(jù)很快也可能被訪問

1.3 CPU緩存一致性協(xié)議 MESI

  • M: 被修改(Modified)

該緩存行只被緩存在該CPU的緩存中,并且是被修改過的(dirty),即與主存中的數(shù)據(jù)不一致,該緩存行中的內(nèi)存需要在未來的某個(gè)時(shí)間點(diǎn)(允許其它CPU讀取請(qǐng)主存中相應(yīng)內(nèi)存之前)寫回(write back)主存。
.
當(dāng)被寫回主存之后,該緩存行的狀態(tài)會(huì)變成獨(dú)享(exclusive)狀態(tài)。

  • E: 獨(dú)享的(Exclusive)

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

  • S:共享的(Shared)

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

  • I: 無效的(Invalid)

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

MESI狀態(tài)轉(zhuǎn)換圖.png
MESI轉(zhuǎn)移表.png

2.JMM

CPU多級(jí)緩存1.jpg
CPU與JMM1.jpg
CPU與JMM2.jpg
JMM.jpg
JMM同步操作.jpg
JMM與線程.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容