精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

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

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

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

1.為什么需要CPU cache?

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

2.CPU cache 存在的原理?

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

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

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

3.緩存一致性(MESI)

MESI協議中cache line數據狀態有4種,引起數據狀態轉換的CPU cache操作也有4種,因此要理解MESI協議,就要將這16種狀態轉換的情況討論清楚。

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

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

modify

場景:當前CPU中數據狀態是modify,表示當前CPU中擁有最新數據,雖然主存中的數據和當前CPU中的數據不一致,但是以當前CPU中的數據為準;

LR:此時如果發生local read,即當前CPU讀數據,直接從cache中獲取數據,擁有最新數據,因此狀態不變;

LW:直接修改本地cache數據,修改后也是當前CPU擁有最新數據,因此狀態不變;

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

RW(將當前CPU緩存中的數據寫入到主內存里面):同RR,當cache控制器監聽到總線發生RW,當前CPU會將數據寫回主存,因為隨后的RW將會導致主存的數據修改,因此狀態修改成I;

exclusive

場景:當前CPU中的數據狀態是exclusive,表示當前CPU獨占數據(其他CPU沒有數據),并且和主存的數據一致;

LR:從本地cache中直接獲取數據,狀態不變;

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

RR:因為本地cache中有最新數據,因此當前CPU cache操作不會發生RR和RW,當cache控制器監聽到總線上發生RR的時候,必然是其他CPU發生了讀取主存的操作,而RR操作不會導致數據修改,因此兩個CPU中的數據和主存中的數據一致,此時cache line狀態修改為S;

RW:同RR,當cache控制器監聽到總線發生RW,發生其他CPU將最新數據寫回到主存,此時為了保證緩存一致性,當前CPU的數據狀態修改為I;

shared

場景:當前CPU中的數據狀態是shared,表示當前CPU和其他CPU共享數據,且數據在多個CPU之間一致、多個CPU之間的數據和主存一致;

LR:直接從cache中讀取數據,狀態不變;

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

RR:狀態不變,因為多個CPU中的數據和主存一致;

RW:當監聽到總線發生了RW,意味著其他CPU發生了寫主存操作,此時本地cache中的數據既不是最新數據,和主存也不再一致,因此當前CPU的cache line狀態修改為I;

invalid

場景:當前CPU中的數據狀態是invalid,表示當前CPU中是臟數據,不可用,其他CPU可能有數據、也可能沒有數據;

LR:因為當前CPU的cache line數據不可用,因此會發生RR操作,此時的情形如下。

A. 如果其他CPU中無數據則狀態修改為E;

B. 如果其他CPU中有數據且狀態為S或E則狀態修改為S;

C. 如果其他CPU中有數據且狀態為M,那么其他CPU首先發生RW將M狀態的數據寫回主存并修改狀態為S,隨后當前CPU讀取主存數據,也將狀態修改為S;

LW:因為當前CPU的cache line數據無效,因此發生LW會直接操作本地cache,此時的情形如下。

A. 如果其他CPU中無數據,則將本地cache line的狀態修改為M;

B. 如果其他CPU中有數據且狀態為S或E,則修改本地cache,通知其他CPU將數據修改為I,當前CPU中的cache line狀態修改為M;

C. 如果其他CPU中有數據且狀態為M,則其他CPU首先將數據寫回主存,并將狀態修改為I,當前CPU中的cache line狀態修改為M;

RR:監聽到總線發生RR操作,表示有其他CPU讀取內存,和本地cache無關,狀態不變;

RW:監聽到總線發生RW操作,表示有其他CPU寫主存,和本地cache無關,狀態不變;

總結

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    10825

    瀏覽量

    211155
  • 緩存
    +關注

    關注

    1

    文章

    233

    瀏覽量

    26649
收藏 人收藏

    評論

    相關推薦

    一致性測試系統的技術原理和也應用場景

    一致性測試系統是用來檢測零部件或系統實現是否符合相關標準或規范的測試流程,其技術原理和應用場景具體如下:技術原理 基本框架:協議一致性測試的理論已經相對成熟,主要代表是ISO制定的國際標準ISO
    發表于 11-01 15:35

    異構計算下緩存一致性的重要

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

    級聯一致性和移相器校準應用手冊

    電子發燒友網站提供《級聯一致性和移相器校準應用手冊.pdf》資料免費下載
    發表于 08-29 10:48 ?0次下載
    級聯<b class='flag-5'>一致性</b>和移相器校準應用手冊

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

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

    LIN一致性測試規范2.1

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

    新品發布 | 同星智能正式推出CAN總線一致性測試系統

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

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

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

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

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

     QSFP一致性測試的專業測試設備

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

    銅線鍵合焊接一致性:微電子封裝的新挑戰

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

    企業數據備份體系化方法論的七大原則:深入理解數據備份的關鍵原則:應用一致性與崩潰一致性的區別

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

    深入理解數據備份的關鍵原則:應用一致性與崩潰一致性的區別

    深入理解數據備份的關鍵原則:應用一致性與崩潰一致性的區別 在數字化時代,數據備份成為了企業信息安全的核心環節。但在備份過程中,兩個關鍵概念——應用一致性和崩潰一致性,常常被誤解或混淆。
    的頭像 發表于 03-11 11:29 ?847次閱讀
    深入理解數據備份的關鍵原則:應用<b class='flag-5'>一致性</b>與崩潰<b class='flag-5'>一致性</b>的區別

    DDR一致性測試的操作步驟

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

    CPU Cache是如何保證緩存一致性的?

    我們介紹`CPU Cache`的組織架構及其進行**讀操作**時的尋址方式,但是緩存不僅僅只有讀操作,還有 **寫操作** ,這會帶來個新的問題
    的頭像 發表于 12-04 15:05 ?1341次閱讀
    <b class='flag-5'>CPU</b> Cache是如何保證<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>的?

    Redis緩存與Mysql如何保證一致性

    基本流程就是客戶端A請求,先去刪除緩存,然后將數據寫入數據庫,此時客戶端B查詢先去查詢緩存緩存沒有返回,去查數據庫,此時還沒有完成主從同步,拿到是從庫的舊數據,然后將舊數據進行緩存
    的頭像 發表于 12-02 14:23 ?891次閱讀
    Redis<b class='flag-5'>緩存</b>與Mysql如何保證<b class='flag-5'>一致性</b>?