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修改了該緩存行)。


2.JMM
CPU多級(jí)緩存1.jpg
CPU與JMM1.jpg
CPU與JMM2.jpg
JMM.jpg
JMM同步操作.jpg
JMM與線程.jpg





