日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

深入理解CPU緩存一致性協議MESI(建議收藏)

來源: 責編: 時間:2023-11-20 08:57:36 248觀看
導讀今天,我們就深入聊聊關于CPU緩存一致性協議MESI的有關知識,希望能夠為小伙伴們帶來實質性的幫助。好了,不多說了,進入今天的正題。CPU高速緩存CPU為何要有高速緩存CPU在摩爾定律的指導下以每18個月翻一番的速度在發展,然而

今天,我們就深入聊聊關于CPU緩存一致性協議MESI的有關知識,希望能夠為小伙伴們帶來實質性的幫助。好了,不多說了,進入今天的正題。Tju28資訊網——每日最新資訊28at.com

CPU高速緩存

CPU為何要有高速緩存

CPU在摩爾定律的指導下以每18個月翻一番的速度在發展,然而內存和硬盤的發展速度遠遠不及CPU。這就造成了高性能能的內存和硬盤價格及其昂貴。然而CPU的高度運算需要高速的數據。為了解決這個問題,CPU廠商在CPU中內置了少量的高速緩存以解決I/O速度和CPU運算速度之間的不匹配問題。Tju28資訊網——每日最新資訊28at.com

在CPU訪問存儲設備時,無論是存取數據抑或存取指令,都趨于聚集在一片連續的區域中,這就被稱為局部性原理。Tju28資訊網——每日最新資訊28at.com

時間局部性(Temporal Locality):如果一個信息項正在被訪問,那么在近期它很可能還會被再次訪問。Tju28資訊網——每日最新資訊28at.com

比如循環、遞歸、方法的反復調用等。Tju28資訊網——每日最新資訊28at.com

空間局部性(Spatial Locality):如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。Tju28資訊網——每日最新資訊28at.com

比如順序執行的代碼、連續創建的兩個對象、數組等。Tju28資訊網——每日最新資訊28at.com

帶有高速緩存的CPU執行計算的流程

  1. 程序以及數據被加載到主內存
  2. 指令和數據被加載到CPU的高速緩存
  3. CPU執行指令,把結果寫到高速緩存
  4. 高速緩存中的數據寫回主內存

圖片圖片Tju28資訊網——每日最新資訊28at.com

目前流行的多級緩存結構

由于CPU的運算速度超越了1級緩存的數據I/O能力,CPU廠商又引入了多級的緩存結構。Tju28資訊網——每日最新資訊28at.com

多級緩存結構

圖片圖片Tju28資訊網——每日最新資訊28at.com

多核CPU多級緩存一致性協議MESI

多核CPU的情況下有多個一級緩存,如何保證緩存內部數據的一致,不讓系統數據混亂。這里就引出了一個一致性的協議MESI。Tju28資訊網——每日最新資訊28at.com

MESI協議緩存狀態

MESI 是指4中狀態的首字母。每個Cache line有4個狀態,可用2個bit表示,它們分別是:Tju28資訊網——每日最新資訊28at.com

緩存行(Cache line):緩存存儲數據的單元。Tju28資訊網——每日最新資訊28at.com

狀態
Tju28資訊網——每日最新資訊28at.com

描述
Tju28資訊網——每日最新資訊28at.com

監聽任務
Tju28資訊網——每日最新資訊28at.com

M 修改 (Modified)
Tju28資訊網——每日最新資訊28at.com

該Cache line有效,數據被修改了,和內存中的數據不一致,數據只存在于本Cache中。
Tju28資訊網——每日最新資訊28at.com

緩存行必須時刻監聽所有試圖讀該緩存行相對就主存的操作,這種操作必須在緩存將該緩存行寫回主存并將狀態變成S(共享)狀態之前被延遲執行。
Tju28資訊網——每日最新資訊28at.com

E 獨享、互斥 (Exclusive)
Tju28資訊網——每日最新資訊28at.com

該Cache line有效,數據和內存中的數據一致,數據只存在于本Cache中。
Tju28資訊網——每日最新資訊28at.com

緩存行也必須監聽其它緩存讀主存中該緩存行的操作,一旦有這種操作,該緩存行需要變成S(共享)狀態。
Tju28資訊網——每日最新資訊28at.com

S 共享 (Shared)
Tju28資訊網——每日最新資訊28at.com

該Cache line有效,數據和內存中的數據一致,數據存在于很多Cache中。
Tju28資訊網——每日最新資訊28at.com

緩存行也必須監聽其它緩存使該緩存行無效或者獨享該緩存行的請求,并將該緩存行變成無效(Invalid)。
Tju28資訊網——每日最新資訊28at.com

I 無效 (Invalid)
Tju28資訊網——每日最新資訊28at.com

該Cache line無效。
Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com

注意:對于M和E狀態而言總是精確的,他們在和該緩存行的真正狀態是一致的,而S狀態可能是非一致的。如果一個緩存將處于S狀態的緩存行作廢了,而另一個緩存實際上可能已經獨享了該緩存行,但是該緩存卻不會將該緩存行升遷為E狀態,這是因為其它緩存不會廣播他們作廢掉該緩存行的通知,同樣由于緩存并沒有保存該緩存行的copy的數量,因此(即使有這種通知)也沒有辦法確定自己是否已經獨享了該緩存行。Tju28資訊網——每日最新資訊28at.com

從上面的意義看來E狀態是一種投機性的優化:如果一個CPU想修改一個處于S狀態的緩存行,總線事務需要將所有該緩存行的copy變成invalid狀態,而修改E狀態的緩存不需要使用總線事務。Tju28資訊網——每日最新資訊28at.com

MESI狀態轉換

圖片Tju28資訊網——每日最新資訊28at.com

理解該圖的前置說明:1.觸發事件Tju28資訊網——每日最新資訊28at.com

觸發事件
Tju28資訊網——每日最新資訊28at.com

描述
Tju28資訊網——每日最新資訊28at.com

本地讀取(Local read)
Tju28資訊網——每日最新資訊28at.com

本地cache讀取本地cache數據
Tju28資訊網——每日最新資訊28at.com

本地寫入(Local write)Tju28資訊網——每日最新資訊28at.com

本地cache寫入本地cache數據
Tju28資訊網——每日最新資訊28at.com

遠端讀取(Remote read)
Tju28資訊網——每日最新資訊28at.com

其他cache讀取本地cache數據
Tju28資訊網——每日最新資訊28at.com

遠端寫入(Remote write)
Tju28資訊網——每日最新資訊28at.com

其他cache寫入本地cache數據
Tju28資訊網——每日最新資訊28at.com

2.cache分類:前提:所有的cache共同緩存了主內存中的某一條數據。Tju28資訊網——每日最新資訊28at.com

本地cache:指當前cpu的cache。觸發cache:觸發讀寫事件的cache。其他cache:指既除了以上兩種之外的cache。注意:本地的事件觸發 本地cache和觸發cache為相同。Tju28資訊網——每日最新資訊28at.com

上圖的切換解釋(點擊看大圖):Tju28資訊網——每日最新資訊28at.com

圖片圖片Tju28資訊網——每日最新資訊28at.com

下圖示意了,當一個cache line的調整的狀態的時候,另外一個cache line 需要調整的狀態。Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com

M
Tju28資訊網——每日最新資訊28at.com

E
Tju28資訊網——每日最新資訊28at.com

S
Tju28資訊網——每日最新資訊28at.com

ITju28資訊網——每日最新資訊28at.com

MTju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com

ETju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com

STju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com

×
Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com

ITju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com


Tju28資訊網——每日最新資訊28at.com

舉個栗子來說:Tju28資訊網——每日最新資訊28at.com

假設cache 1 中有一個變量x = 0的cache line 處于S狀態(共享)。那么其他擁有x變量的cache 2、cache 3等x的cache line調整為S狀態(共享)或者調整為 I 狀態(無效)。Tju28資訊網——每日最新資訊28at.com

多核緩存協同操作

假設有三個CPU A、B、C,對應三個緩存分別是cache a、b、 c。在主內存中定義了x的引用值為0。Tju28資訊網——每日最新資訊28at.com

圖片圖片Tju28資訊網——每日最新資訊28at.com

單核讀取

那么執行流程是:CPU A發出了一條指令,從主內存中讀取x。從主內存通過bus讀取到緩存中(遠端讀取Remote read),這是該Cache line修改為E狀態(獨享).Tju28資訊網——每日最新資訊28at.com

圖片圖片Tju28資訊網——每日最新資訊28at.com

雙核讀取

那么執行流程是:CPU A發出了一條指令,從主內存中讀取x。CPU A從主內存通過bus讀取到 cache a中并將該cache line 設置為E狀態。CPU B發出了一條指令,從主內存中讀取x。CPU B試圖從主內存中讀取x時,CPU A檢測到了地址沖突。這時CPU A對相關數據做出響應。此時x 存儲于cache a和cache b中,x在chche a和cache b中都被設置為S狀態(共享)。Tju28資訊網——每日最新資訊28at.com

圖片圖片Tju28資訊網——每日最新資訊28at.com

修改數據

那么執行流程是:CPU A 計算完成后發指令需要修改x. CPU A 將x設置為M狀態(修改)并通知緩存了x的CPU B, CPU B將本地cache  b中的x設置為I狀態(無效) CPU A 對x進行賦值。Tju28資訊網——每日最新資訊28at.com

圖片圖片Tju28資訊網——每日最新資訊28at.com

同步數據

那么執行流程是:Tju28資訊網——每日最新資訊28at.com

CPU B 發出了要讀取x的指令。CPU B 通知CPU A,CPU A將修改后的數據同步到主內存時cache a 修改為E(獨享) CPU A同步CPU B的x,將cache a和同步后cache b中的x設置為S狀態(共享)。Tju28資訊網——每日最新資訊28at.com

圖片圖片Tju28資訊網——每日最新資訊28at.com

MESI優化和他們引入的問題

緩存的一致性消息傳遞是要時間的,這就使其切換時會產生延遲。當一個緩存被切換狀態時其他緩存收到消息完成各自的切換并且發出回應消息這么一長串的時間中CPU都會等待所有緩存響應完成。可能出現的阻塞都會導致各種各樣的性能問題和穩定性問題。Tju28資訊網——每日最新資訊28at.com

CPU切換狀態阻塞解決-存儲緩存(Store Bufferes)

比如你需要修改本地緩存中的一條信息,那么你必須將I(無效)狀態通知到其他擁有該緩存數據的CPU緩存中,并且等待確認。等待確認的過程會阻塞處理器,這會降低處理器的性能。應為這個等待遠遠比一個指令的執行時間長的多。Tju28資訊網——每日最新資訊28at.com

Store Bufferes

為了避免這種CPU運算能力的浪費,Store Bufferes被引入使用。處理器把它想要寫入到主存的值寫到緩存,然后繼續去處理其他事情。當所有失效確認(Invalidate Acknowledge)都接收到時,數據才會最終被提交。這么做有兩個風險Tju28資訊網——每日最新資訊28at.com

Store Bufferes的風險

第一、就是處理器會嘗試從存儲緩存(Store buffer)中讀取值,但它還沒有進行提交。這個的解決方案稱為Store Forwarding,它使得加載的時候,如果存儲緩存中存在,則進行返回。第二、保存什么時候會完成,這個并沒有任何保證。Tju28資訊網——每日最新資訊28at.com

value = 3;void exeToCPUA(){  value = 10;  isFinsh = true;}void exeToCPUB(){  if(isFinsh){    //value一定等于10?!    assert value == 10;  }}

試想一下開始執行時,CPU  A保存著finished在E(獨享)狀態,而value并沒有保存在它的緩存中。(例如,Invalid)。在這種情況下,value會比finished更遲地拋棄存儲緩存。完全有可能CPU B讀取finished的值為true,而value的值不等于10。Tju28資訊網——每日最新資訊28at.com

即isFinsh的賦值在value賦值之前。Tju28資訊網——每日最新資訊28at.com

這種在可識別的行為中發生的變化稱為重排序(reordings)。注意,這不意味著你的指令的位置被惡意(或者好意)地更改。Tju28資訊網——每日最新資訊28at.com

它只是意味著其他的CPU會讀到跟程序中寫入的順序不一樣的結果。Tju28資訊網——每日最新資訊28at.com

順便提一下NIO的設計和Store Bufferes的設計是非常相像的。Tju28資訊網——每日最新資訊28at.com

硬件內存模型

執行失效也不是一個簡單的操作,它需要處理器去處理。另外,存儲緩存(Store Buffers)并不是無窮大的,所以處理器有時需要等待失效確認的返回。這兩個操作都會使得性能大幅降低。為了應付這種情況,引入了失效隊列。它們的約定如下:Tju28資訊網——每日最新資訊28at.com

  • 對于所有的收到的Invalidate請求,Invalidate Acknowlege消息必須立刻發送
  • Invalidate并不真正執行,而是被放在一個特殊的隊列中,在方便的時候才會去執行。
  • 處理器不會發送任何消息給所處理的緩存條目,直到它處理Invalidate。

即便是這樣處理器已然不知道什么時候優化是允許的,而什么時候并不允許。干脆處理器將這個任務丟給了寫代碼的人。這就是內存屏障(Memory Barriers)。Tju28資訊網——每日最新資訊28at.com

寫屏障

寫屏障 Store Memory Barrier(a.k.a. ST, SMB, smp_wmb)是一條告訴處理器在執行這之后的指令之前,應用所有已經在存儲緩存(store buffer)中的保存的指令。Tju28資訊網——每日最新資訊28at.com

讀屏障

讀屏障Load Memory Barrier (a.k.a. LD, RMB, smp_rmb)是一條告訴處理器在執行任何的加載前,先應用所有已經在失效隊列中的失效操作的指令。Tju28資訊網——每日最新資訊28at.com

void executedOnCpu0() {    value = 10;    //在更新數據之前必須將所有存儲緩存(store buffer)中的指令執行完畢。    storeMemoryBarrier();    finished = true;}void executedOnCpu1() {    while(!finished);    //在讀取之前將所有失效隊列中關于該數據的指令執行完畢。    loadMemoryBarrier();    assert value == 10;}

現在確實安全了。完美無暇!Tju28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-31000-0.html深入理解CPU緩存一致性協議MESI(建議收藏)

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 微前端架構初探以及我的前端技術盤點

下一篇: 升級到 Pulsar3.0 后深入了解 JWT 鑒權

標簽:
  • 熱門焦點
  • 俄羅斯:將審查iPhone等外國公司設備 保數據安全

    iPhone和特斯拉都屬于在各自領域領頭羊的品牌,推出的產品也也都是數一數二的,但對于一些國家而言,它們的產品可靠性和安全性還是在限制范圍內。近日,俄羅斯聯邦通信、信息技術
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 5月iOS設備好評榜:iPhone 14僅排第43?

    來到新的一月,安兔兔的各個榜單又重新匯總了數據,像安卓陣營的榜單都有著比較大的變動,不過iOS由于設備的更新換代并沒有那么快,所以相對來說變化并不大,特別是iOS好評榜,老款設
  • 把LangChain跑起來的三個方法

    使用LangChain開發LLM應用時,需要機器進行GLM部署,好多同學第一步就被勸退了,那么如何繞過這個步驟先學習LLM模型的應用,對Langchain進行快速上手?本片講解3個把LangChain跑起來
  • 分享六款相見恨晚的PPT模版網站, 祝你做出精美的PPT!

    1、OfficePLUSOfficePLUS網站旨在為全球Office用戶提供豐富的高品質原創PPT模板、實用文檔、數據圖表及個性化定制服務。優點:OfficePLUS是微軟官方網站,囊括PPT模板、Word模
  • 一個注解實現接口冪等,這樣才優雅!

    場景碼猿慢病云管理系統中其實高并發的場景不是很多,沒有必要每個接口都去考慮并發高的場景,比如添加住院患者的這個接口,具體的業務代碼就不貼了,業務偽代碼如下:圖片上述代碼有
  • 騰訊VS網易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財經無忌7月16日晚,上海1862時尚藝術中心。伴隨著幻象的精準命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰隊以絕對的優勢戰勝了BLG戰隊,拿下了總決
  • 小米汽車電池信息疑似曝光:容量101kWh,支持800V高壓快充

    7月14日消息,今日一名博主在社交媒體發布了一張疑似小米汽車電池信息的照片,顯示該電池包正是寧德時代麒麟電池,容量為101kWh,電壓為726.7V,可以預測小
  • SN570 NVMe SSD固態硬盤 價格與性能兼具

    SN570 NVMe SSD固態硬盤是西部數據發布的最新一代WD Blue系列的固態硬盤,不僅閃存技術更為精進,性能也得到了進一步的躍升。WD Blue SN570 NVMe SSD的包裝外
Top 主站蜘蛛池模板: 民权县| 竹溪县| 江永县| 山东省| 宜兰市| 新巴尔虎右旗| 青田县| 澄城县| 湖南省| 电白县| 博乐市| 宁国市| 石林| 正安县| 平湖市| 仪陇县| 吐鲁番市| 新邵县| 扶余县| 高青县| 鹿邑县| 龙门县| 达州市| 琼结县| 永昌县| 永平县| 文山县| 吉隆县| 开平市| 远安县| 启东市| 玛曲县| 台前县| 乌鲁木齐县| 图片| 桃江县| 桓仁| 彭山县| 特克斯县| 牡丹江市| 监利县|