0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

談一談CPU緩存和緩存一致性

汽車玩家 ? 來源:簡書 ? 作者:habit_learning ? 2020-05-03 17:51 ? 次閱讀

左圖為最簡單的高速緩存的配置,數(shù)據(jù)的讀取和存儲都經(jīng)過高速緩存,CPU核心與高速緩存有一條特殊的快速通道;主存與高速緩存都連在系統(tǒng)總線上(BUS)這條總線還用于其他組件的通信

在高速緩存出現(xiàn)后不久,系統(tǒng)變得越來越復(fù)雜,高速緩存與主存之間的速度差異被拉大,直到加入了另一級緩存,新加入的這級緩存比第一緩存更大,并且更慢,而且經(jīng)濟上不合適,所以有了二級緩存,甚至是三級緩存

談一談CPU緩存和緩存一致性

1.為什么需要CPU cache?

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

2.CPU cache 存在的原理?

局部性原理:CPU 訪問存儲器時,無論是存取指令還是存取數(shù)據(jù),所訪問的存取單元都趨于聚集在一個較小的連續(xù)區(qū)域中。

時間局部性:如果某個數(shù)據(jù)被訪問,那么在不久的將來他很可能被再次訪問。

空間局部性:如果某個數(shù)據(jù)被訪問,那么與他相鄰的數(shù)據(jù)很快也可能被訪問。

3.緩存一致性(MESI)

MESI協(xié)議中cache line數(shù)據(jù)狀態(tài)有4種,引起數(shù)據(jù)狀態(tài)轉(zhuǎn)換的CPU cache操作也有4種,因此要理解MESI協(xié)議,就要將這16種狀態(tài)轉(zhuǎn)換的情況討論清楚。

談一談CPU緩存和緩存一致性

初始場景:在最初的時候,所有的CPU中都沒有數(shù)據(jù),其中一個CPU發(fā)生讀操作,此時發(fā)生RR(數(shù)據(jù)從主內(nèi)存中讀取到當(dāng)前CPU的cache),狀態(tài)為E(獨占,只有當(dāng)前CPU有數(shù)據(jù),并且和主存一致)。此時,如果有其他CPU也讀取主存數(shù)據(jù),則狀態(tài)修改為S(共享,多個CPU之間擁有相同數(shù)據(jù),并且和主存保持一致),如果其中一個CPU發(fā)生數(shù)據(jù)修改,那么該CPU中數(shù)據(jù)狀態(tài)修改為M(擁有最新數(shù)據(jù),和主存不一致,但是以當(dāng)前CPU中的數(shù)據(jù)為準(zhǔn)),并通知其他擁有該數(shù)據(jù)的CPU數(shù)據(jù)失效,其他CPU中的cache line狀態(tài)修改為I(失效,和主存中的數(shù)據(jù)被認(rèn)為不一致,數(shù)據(jù)不可用應(yīng)該重新獲?。?/p>

modify

場景:當(dāng)前CPU中數(shù)據(jù)狀態(tài)是modify,表示當(dāng)前CPU中擁有最新數(shù)據(jù),雖然主存中的數(shù)據(jù)和當(dāng)前CPU中的數(shù)據(jù)不一致,但是以當(dāng)前CPU中的數(shù)據(jù)為準(zhǔn);

LR:此時如果發(fā)生local read,即當(dāng)前CPU讀數(shù)據(jù),直接從cache中獲取數(shù)據(jù),擁有最新數(shù)據(jù),因此狀態(tài)不變;

LW:直接修改本地cache數(shù)據(jù),修改后也是當(dāng)前CPU擁有最新數(shù)據(jù),因此狀態(tài)不變;

RR:因為本地內(nèi)存中有最新數(shù)據(jù),因此當(dāng)前CPU不會發(fā)生RR和RW,當(dāng)本地cache控制器監(jiān)聽到總線上有RR發(fā)生的時,必然是其他CPU發(fā)生了讀主存的操作,此時為了保證一致性, 當(dāng)前CPU應(yīng)該將數(shù)據(jù)寫回主存,而隨后的RR將會使得其他CPU和當(dāng)前CPU擁有共同的數(shù)據(jù),因此狀態(tài)修改為S;

RW(將當(dāng)前CPU緩存中的數(shù)據(jù)寫入到主內(nèi)存里面):同RR,當(dāng)cache控制器監(jiān)聽到總線發(fā)生RW,當(dāng)前CPU會將數(shù)據(jù)寫回主存,因為隨后的RW將會導(dǎo)致主存的數(shù)據(jù)修改,因此狀態(tài)修改成I;

exclusive

場景:當(dāng)前CPU中的數(shù)據(jù)狀態(tài)是exclusive,表示當(dāng)前CPU獨占數(shù)據(jù)(其他CPU沒有數(shù)據(jù)),并且和主存的數(shù)據(jù)一致;

LR:從本地cache中直接獲取數(shù)據(jù),狀態(tài)不變;

LW:修改本地cache中的數(shù)據(jù),狀態(tài)修改成M(因為其他CPU中并沒有該數(shù)據(jù),因此不存在共享問題,不需要通知其他CPU修改cache line的狀態(tài)為I);

RR:因為本地cache中有最新數(shù)據(jù),因此當(dāng)前CPU cache操作不會發(fā)生RR和RW,當(dāng)cache控制器監(jiān)聽到總線上發(fā)生RR的時候,必然是其他CPU發(fā)生了讀取主存的操作,而RR操作不會導(dǎo)致數(shù)據(jù)修改,因此兩個CPU中的數(shù)據(jù)和主存中的數(shù)據(jù)一致,此時cache line狀態(tài)修改為S;

RW:同RR,當(dāng)cache控制器監(jiān)聽到總線發(fā)生RW,發(fā)生其他CPU將最新數(shù)據(jù)寫回到主存,此時為了保證緩存一致性,當(dāng)前CPU的數(shù)據(jù)狀態(tài)修改為I;

shared

場景:當(dāng)前CPU中的數(shù)據(jù)狀態(tài)是shared,表示當(dāng)前CPU和其他CPU共享數(shù)據(jù),且數(shù)據(jù)在多個CPU之間一致、多個CPU之間的數(shù)據(jù)和主存一致;

LR:直接從cache中讀取數(shù)據(jù),狀態(tài)不變;

LW:發(fā)生本地寫,并不會將數(shù)據(jù)立即寫回主存,而是在稍后的一個時間再寫回主存,因此為了保證緩存一致性,當(dāng)前CPU的cache line狀態(tài)修改為M,并通知其他擁有該數(shù)據(jù)的CPU該數(shù)據(jù)失效,其他CPU將cache line狀態(tài)修改為I;

RR:狀態(tài)不變,因為多個CPU中的數(shù)據(jù)和主存一致;

RW:當(dāng)監(jiān)聽到總線發(fā)生了RW,意味著其他CPU發(fā)生了寫主存操作,此時本地cache中的數(shù)據(jù)既不是最新數(shù)據(jù),和主存也不再一致,因此當(dāng)前CPU的cache line狀態(tài)修改為I;

invalid

場景:當(dāng)前CPU中的數(shù)據(jù)狀態(tài)是invalid,表示當(dāng)前CPU中是臟數(shù)據(jù),不可用,其他CPU可能有數(shù)據(jù)、也可能沒有數(shù)據(jù);

LR:因為當(dāng)前CPU的cache line數(shù)據(jù)不可用,因此會發(fā)生RR操作,此時的情形如下。

A. 如果其他CPU中無數(shù)據(jù)則狀態(tài)修改為E;

B. 如果其他CPU中有數(shù)據(jù)且狀態(tài)為S或E則狀態(tài)修改為S;

C. 如果其他CPU中有數(shù)據(jù)且狀態(tài)為M,那么其他CPU首先發(fā)生RW將M狀態(tài)的數(shù)據(jù)寫回主存并修改狀態(tài)為S,隨后當(dāng)前CPU讀取主存數(shù)據(jù),也將狀態(tài)修改為S;

LW:因為當(dāng)前CPU的cache line數(shù)據(jù)無效,因此發(fā)生LW會直接操作本地cache,此時的情形如下。

A. 如果其他CPU中無數(shù)據(jù),則將本地cache line的狀態(tài)修改為M;

B. 如果其他CPU中有數(shù)據(jù)且狀態(tài)為S或E,則修改本地cache,通知其他CPU將數(shù)據(jù)修改為I,當(dāng)前CPU中的cache line狀態(tài)修改為M;

C. 如果其他CPU中有數(shù)據(jù)且狀態(tài)為M,則其他CPU首先將數(shù)據(jù)寫回主存,并將狀態(tài)修改為I,當(dāng)前CPU中的cache line狀態(tài)修改為M;

RR:監(jiān)聽到總線發(fā)生RR操作,表示有其他CPU讀取內(nèi)存,和本地cache無關(guān),狀態(tài)不變;

RW:監(jiān)聽到總線發(fā)生RW操作,表示有其他CPU寫主存,和本地cache無關(guān),狀態(tài)不變;

總結(jié)

MESI協(xié)議為了保證多個CPU cache中共享數(shù)據(jù)的一致性,定義了cache line的四種狀態(tài),而CPU對cache的4種操作可能會產(chǎn)生不一致狀態(tài),因此cache控制器監(jiān)聽到本地操作和遠(yuǎn)程操作的時候, 需要對地址一致的cache line狀態(tài)做出一定的修改,從而保證數(shù)據(jù)在多個cache之間流轉(zhuǎn)的一致性。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10863

    瀏覽量

    211763
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    240

    瀏覽量

    26678
收藏 人收藏

    評論

    相關(guān)推薦

    一致性測試系統(tǒng)的技術(shù)原理和也應(yīng)用場景

    一致性測試系統(tǒng)是用來檢測零部件或系統(tǒng)實現(xiàn)是否符合相關(guān)標(biāo)準(zhǔn)或規(guī)范的測試流程,其技術(shù)原理和應(yīng)用場景具體如下:技術(shù)原理 基本框架:協(xié)議一致性測試的理論已經(jīng)相對成熟,主要代表是ISO制定的國際標(biāo)準(zhǔn)ISO
    發(fā)表于 11-01 15:35

    異構(gòu)計算下緩存一致性的重要

    在眾多回復(fù)中,李博杰同學(xué)的回答被認(rèn)為質(zhì)量最高。他首先將緩存一致性分為兩個主要場景:是主機內(nèi)CPU與設(shè)備間的一致性;二是跨主機的
    的頭像 發(fā)表于 10-24 17:00 ?546次閱讀
    異構(gòu)計算下<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>的重要<b class='flag-5'>性</b>

    級聯(lián)一致性和移相器校準(zhǔn)應(yīng)用手冊

    電子發(fā)燒友網(wǎng)站提供《級聯(lián)一致性和移相器校準(zhǔn)應(yīng)用手冊.pdf》資料免費下載
    發(fā)表于 08-29 10:48 ?0次下載
    級聯(lián)<b class='flag-5'>一致性</b>和移相器校準(zhǔn)應(yīng)用手冊

    什么是CPU緩存?它有哪些作用?

    CPU緩存(Cache Memory)是計算機系統(tǒng)中個至關(guān)重要的組成部分,它位于CPU與內(nèi)存之間,作為兩者之間的臨時存儲器。CPU
    的頭像 發(fā)表于 08-22 14:54 ?3097次閱讀

    電感值和直流電阻的一致性如何提高?

    提高電感值和直流電阻的一致性,可以從以下幾個方面入手: 、提高電感值的一致性 優(yōu)化磁芯選擇 : 磁芯是電感器的關(guān)鍵組成部分,其材料特性和尺寸直接影響電感值。選擇具有高磁導(dǎo)率、低磁阻和穩(wěn)定性能的材料
    的頭像 發(fā)表于 08-19 15:27 ?321次閱讀

    LIN一致性測試規(guī)范2.1

    電子發(fā)燒友網(wǎng)站提供《LIN一致性測試規(guī)范2.1.pdf》資料免費下載
    發(fā)表于 08-15 17:14 ?3次下載

    新品發(fā)布 | 同星智能正式推出CAN總線一致性測試系統(tǒng)

    CAN總線一致性測試系統(tǒng)CANFD/CAN總線一致性測試系統(tǒng),在硬件系統(tǒng)上基于同星自主研發(fā)的總線分析工具,干擾儀,一致性測試機箱,并搭配程控電源,示波器,數(shù)字萬用表等標(biāo)準(zhǔn)外圍儀器設(shè)備;在軟件上
    的頭像 發(fā)表于 07-06 08:21 ?523次閱讀
    新品發(fā)布 | 同星智能正式推出CAN總線<b class='flag-5'>一致性</b>測試系統(tǒng)

    銅線鍵合焊接一致性:如何突破技術(shù)瓶頸?

    在微電子封裝領(lǐng)域,銅線鍵合技術(shù)以其低成本、高效率和良好的電氣性能等優(yōu)勢,逐漸成為芯片與基板連接的主流方式。然而,銅線鍵合過程中的焊接一致性問題是制約其進(jìn)步發(fā)展和應(yīng)用的關(guān)鍵難題。焊接一致性不僅
    的頭像 發(fā)表于 07-04 10:12 ?1779次閱讀
    銅線鍵合焊接<b class='flag-5'>一致性</b>:如何突破技術(shù)瓶頸?

    為什么主機廠愈來愈重視CAN一致性測試?

    新能源汽車迅猛發(fā)展下整車CAN網(wǎng)絡(luò)架構(gòu)日益復(fù)雜,總線故障等潛在問題時刻影響著運行安全。整車零部件通過CAN一致性測試必將是安全保障的第道門檻。CAN一致性測試,就是要求整車CAN網(wǎng)絡(luò)中的節(jié)點都滿足
    的頭像 發(fā)表于 05-29 08:24 ?1184次閱讀
    為什么主機廠愈來愈重視CAN<b class='flag-5'>一致性</b>測試?

     QSFP一致性測試的專業(yè)測試設(shè)備

    QSFP一致性測試是確保QSFP光模塊性能穩(wěn)定、可靠的關(guān)鍵環(huán)節(jié),對于保障通信系統(tǒng)的正常運行具有重要意義。QSFP(Quad Small Form-factor Pluggable)光模塊是種高密度
    的頭像 發(fā)表于 03-14 10:40 ?597次閱讀
     QSFP<b class='flag-5'>一致性</b>測試的專業(yè)測試設(shè)備

    銅線鍵合焊接一致性:微電子封裝的新挑戰(zhàn)

    在微電子封裝領(lǐng)域,銅線鍵合技術(shù)以其低成本、高效率和良好的電氣性能等優(yōu)勢,逐漸成為芯片與基板連接的主流方式。然而,銅線鍵合過程中的焊接一致性問題是制約其進(jìn)步發(fā)展和應(yīng)用的關(guān)鍵難題。焊接一致性不僅
    的頭像 發(fā)表于 03-13 10:10 ?1313次閱讀
    銅線鍵合焊接<b class='flag-5'>一致性</b>:微電子封裝的新挑戰(zhàn)

    企業(yè)數(shù)據(jù)備份體系化方法論的七大原則:深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別

    在數(shù)字化時代,數(shù)據(jù)備份成為了企業(yè)信息安全的核心環(huán)節(jié)。但在備份過程中,兩個關(guān)鍵概念——應(yīng)用一致性和崩潰一致性,常常被誤解或混淆。本文旨在闡明這兩個概念的差異,并分析它們在數(shù)據(jù)備份中的重要,以便讀者
    的頭像 發(fā)表于 03-11 14:05 ?472次閱讀
    企業(yè)數(shù)據(jù)備份體系化方法論的七大原則:深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用<b class='flag-5'>一致性</b>與崩潰<b class='flag-5'>一致性</b>的區(qū)別

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別 在數(shù)字化時代,數(shù)據(jù)備份成為了企業(yè)信息安全的核心環(huán)節(jié)。但在備份過程中,兩個關(guān)鍵概念——應(yīng)用一致性和崩潰一致性,常常被誤解或混淆。
    的頭像 發(fā)表于 03-11 11:29 ?922次閱讀
    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用<b class='flag-5'>一致性</b>與崩潰<b class='flag-5'>一致性</b>的區(qū)別

    DDR一致性測試的操作步驟

    DDR一致性測試的操作步驟? DDR(雙數(shù)據(jù)率)一致性測試是對DDR內(nèi)存模塊進(jìn)行測試以確保其性能和可靠。在進(jìn)行DDR一致性測試時,需要遵循
    的頭像 發(fā)表于 02-01 16:24 ?1538次閱讀

    文了解CPU高速緩存

    CPU的核心功能包括數(shù)據(jù)運算和指令控制。CPU運算的數(shù)據(jù)和執(zhí)行的指令全部存儲在CPU的寄存器中,這些數(shù)據(jù)和指令又都來自于CPU高速緩存。
    的頭像 發(fā)表于 01-02 16:01 ?1571次閱讀
    <b class='flag-5'>一</b>文了解<b class='flag-5'>CPU</b>高速<b class='flag-5'>緩存</b>