精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

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

開發 架構
執行失效也不是一個簡單的操作,它需要處理器去處理。另外,存儲緩存(Store Buffers)并不是無窮大的,所以處理器有時需要等待失效確認的返回。這兩個操作都會使得性能大幅降低。為了應付這種情況,引入了失效隊列。

今天,我們就深入聊聊關于CPU緩存一致性協議MESI的有關知識,希望能夠為小伙伴們帶來實質性的幫助。好了,不多說了,進入今天的正題。

CPU高速緩存

CPU為何要有高速緩存

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

在CPU訪問存儲設備時,無論是存取數據抑或存取指令,都趨于聚集在一片連續的區域中,這就被稱為局部性原理。

時間局部性(Temporal Locality):如果一個信息項正在被訪問,那么在近期它很可能還會被再次訪問。

比如循環、遞歸、方法的反復調用等。

空間局部性(Spatial Locality):如果一個存儲器的位置被引用,那么將來他附近的位置也會被引用。

比如順序執行的代碼、連續創建的兩個對象、數組等。

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

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

圖片圖片

目前流行的多級緩存結構

由于CPU的運算速度超越了1級緩存的數據I\O能力,CPU廠商又引入了多級的緩存結構。

多級緩存結構

圖片圖片

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

多核CPU的情況下有多個一級緩存,如何保證緩存內部數據的一致,不讓系統數據混亂。這里就引出了一個一致性的協議MESI。

MESI協議緩存狀態

MESI 是指4中狀態的首字母。每個Cache line有4個狀態,可用2個bit表示,它們分別是:

緩存行(Cache line):緩存存儲數據的單元。

狀態

描述

監聽任務

M 修改 (Modified)

該Cache line有效,數據被修改了,和內存中的數據不一致,數據只存在于本Cache中。

緩存行必須時刻監聽所有試圖讀該緩存行相對就主存的操作,這種操作必須在緩存將該緩存行寫回主存并將狀態變成S(共享)狀態之前被延遲執行。

E 獨享、互斥 (Exclusive)

該Cache line有效,數據和內存中的數據一致,數據只存在于本Cache中。

緩存行也必須監聽其它緩存讀主存中該緩存行的操作,一旦有這種操作,該緩存行需要變成S(共享)狀態。

S 共享 (Shared)

該Cache line有效,數據和內存中的數據一致,數據存在于很多Cache中。

緩存行也必須監聽其它緩存使該緩存行無效或者獨享該緩存行的請求,并將該緩存行變成無效(Invalid)。

I 無效 (Invalid)

該Cache line無效。


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

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

MESI狀態轉換

圖片

理解該圖的前置說明:1.觸發事件

觸發事件

描述

本地讀取(Local read)

本地cache讀取本地cache數據

本地寫入(Local write)

本地cache寫入本地cache數據

遠端讀取(Remote read)

其他cache讀取本地cache數據

遠端寫入(Remote write)

其他cache寫入本地cache數據

2.cache分類:前提:所有的cache共同緩存了主內存中的某一條數據。

本地cache:指當前cpu的cache。觸發cache:觸發讀寫事件的cache。其他cache:指既除了以上兩種之外的cache。注意:本地的事件觸發 本地cache和觸發cache為相同。

上圖的切換解釋(點擊看大圖):

圖片圖片

下圖示意了,當一個cache line的調整的狀態的時候,另外一個cache line 需要調整的狀態。


M

E

S

I

M

×

×

×


E

×

×

×


S

×

×



I





舉個栗子來說:

假設cache 1 中有一個變量x = 0的cache line 處于S狀態(共享)。那么其他擁有x變量的cache 2、cache 3等x的cache line調整為S狀態(共享)或者調整為 I 狀態(無效)。

多核緩存協同操作

假設有三個CPU A、B、C,對應三個緩存分別是cache a、b、 c。在主內存中定義了x的引用值為0。

圖片圖片

單核讀取

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

圖片圖片

雙核讀取

那么執行流程是: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狀態(共享)。

圖片圖片

修改數據

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

圖片圖片

同步數據

那么執行流程是:

CPU B 發出了要讀取x的指令。CPU B 通知CPU A,CPU A將修改后的數據同步到主內存時cache a 修改為E(獨享) CPU A同步CPU B的x,將cache a和同步后cache b中的x設置為S狀態(共享)。

圖片圖片

MESI優化和他們引入的問題

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

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

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

Store Bufferes

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

Store Bufferes的風險

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

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。

即isFinsh的賦值在value賦值之前。

這種在可識別的行為中發生的變化稱為重排序(reordings)。注意,這不意味著你的指令的位置被惡意(或者好意)地更改。

它只是意味著其他的CPU會讀到跟程序中寫入的順序不一樣的結果。

順便提一下NIO的設計和Store Bufferes的設計是非常相像的。

硬件內存模型

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

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

即便是這樣處理器已然不知道什么時候優化是允許的,而什么時候并不允許。干脆處理器將這個任務丟給了寫代碼的人。這就是內存屏障(Memory Barriers)。

寫屏障

寫屏障 Store Memory Barrier(a.k.a. ST, SMB, smp_wmb)是一條告訴處理器在執行這之后的指令之前,應用所有已經在存儲緩存(store buffer)中的保存的指令。

讀屏障

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

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

現在確實安全了。完美無暇!

責任編輯:武曉燕 來源: 冰河技術
相關推薦

2020-11-12 10:53:36

volatile

2022-12-14 08:23:30

2023-08-14 08:10:33

CPU緩存RFO

2021-06-30 21:13:49

CPUCache數據

2020-05-12 10:43:22

Redis緩存數據庫

2020-10-26 19:25:23

CPU緩存Cache

2020-06-01 22:09:48

緩存緩存同步緩存誤用

2023-10-27 07:47:37

計算機內存模型

2024-11-14 07:10:00

2020-03-16 11:55:28

PaxosRaft協議

2017-07-25 14:38:56

數據庫一致性非鎖定讀一致性鎖定讀

2019-10-16 00:06:08

CPU內存存儲

2024-12-26 15:01:29

2019-03-27 13:56:39

緩存雪崩穿透

2025-08-08 07:09:58

2016-02-15 10:46:40

JavaHash算法

2019-10-24 10:42:00

CPU內存存儲器

2021-06-11 09:21:58

緩存數據庫Redis

2022-05-05 08:32:29

NacosAP架構

2021-02-05 08:00:48

哈希算法?機器
點贊
收藏

51CTO技術棧公眾號

精品视频高清无人区区二区三区| 欧美成人黑人xx视频免费观看| 女性女同性aⅴ免费观女性恋| 香蕉视频网站在线| 日本成人超碰在线观看| 久久精品在线视频| 日韩aaaaa| 美女色狠狠久久| 一区二区三区小说| 视频在线一区二区三区| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 老牛嫩草一区二区三区日本| 美女黄色丝袜一区| 无码人妻aⅴ一区二区三区| 日日狠狠久久| 欧美日韩一区免费| 国产小视频免费| 国产天堂在线| 成人免费观看av| 国产综合视频在线观看| 制服.丝袜.亚洲.中文.综合懂色| 久久久久蜜桃| 亚洲色图欧美制服丝袜另类第一页 | www.久久久久久| 久久久青草婷婷精品综合日韩| www.亚洲免费视频| 美女久久久久久久久久| 97青娱国产盛宴精品视频| 欧美日韩精品欧美日韩精品一综合| 蜜臀av无码一区二区三区| 成人影院在线观看| 国产精品视频九色porn| 欧美一区二区三区精美影视| 风流少妇一区二区三区91| 久久99精品网久久| 国产国产精品人在线视| 国产午夜视频在线播放| 中文字幕免费精品| 日韩在线视频国产| 美女100%露胸无遮挡| 日韩高清影视在线观看| 亚洲成人中文字幕| 国产精品果冻传媒| 综合中文字幕| 日韩欧美在线123| 激情图片中文字幕| av一级久久| 欧美乱妇15p| 欧美黑人又粗又大又爽免费| 精精国产xxxx视频在线野外| 午夜影视日本亚洲欧洲精品| 国产精品无码电影在线观看| 尤物在线网址| 亚洲自拍偷拍九九九| 成人国产在线看| 丁香高清在线观看完整电影视频| 亚洲另类色综合网站| 中国黄色录像片| 成人在线免费看黄| 亚洲主播在线观看| 国产美女网站在线观看| 日本在线啊啊| 欧美性色视频在线| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 在线观看不卡的av| 精品一区二区在线视频| 国产欧美在线观看| 国产精品无码天天爽视频| 国内精品久久久久影院一蜜桃| 成人啪啪免费看| 99久久免费国产精精品| 丰满放荡岳乱妇91ww| 国产日韩一区二区| 亚洲区小说区图片区| 久久尤物电影视频在线观看| 欧洲亚洲一区二区| 拍真实国产伦偷精品| 亚洲综合无码一区二区| 日本一道本久久| 激情亚洲小说| 日韩情涩欧美日韩视频| 亚洲の无码国产の无码步美| 综合亚洲自拍| 日韩综合中文字幕| 欧美一级高潮片| 天堂成人国产精品一区| 成人国产精品日本在线| 男人天堂综合网| 国产欧美在线观看一区| www.黄色网址.com| 男女羞羞在线观看| 欧美日韩久久久| 国产一级免费片| av永久不卡| 色综合导航网站| 无码人妻丰满熟妇区五十路| 国产一区二区免费在线| 欧美性色黄大片人与善| 国产精品久久麻豆| 狠狠久久五月精品中文字幕| 五月天激情播播| 色婷婷久久久| 久久久国产精品免费| 一区二区三区福利视频| 韩国成人精品a∨在线观看| 国产在线精品一区| 国产一二区在线| 色噜噜狠狠一区二区三区果冻| 天天做天天干天天操| 蜜臀av免费一区二区三区| 欧美大尺度激情区在线播放| 波多野结衣一区二区在线| 成人一道本在线| 国产奶头好大揉着好爽视频| 国产精品一区二区av影院萌芽| 欧美一区二区精品| 2019男人天堂| 亚洲免费在线| 国产成人亚洲欧美| 黄色在线论坛| 色婷婷综合久久久中文字幕| 中文字幕无人区二| 久久久久久久久丰满| 国产va免费精品高清在线| jizz国产视频| 椎名由奈av一区二区三区| 热久久精品国产| 久久夜色精品国产噜噜av小说| 美女黄色丝袜一区| 97人妻精品一区二区三区视频| 久久久亚洲精品一区二区三区| 91精品国产91久久久久麻豆 主演| 成人影院网站ww555久久精品| 一区二区三区动漫| 亚洲GV成人无码久久精品| 成人av免费网站| a级黄色片免费| 日本在线一区二区三区| 久久久极品av| 国产精品自拍电影| 最新中文字幕一区二区三区| 久久午夜夜伦鲁鲁一区二区| 亚洲人成精品久久久 | 中文字幕欧美在线观看| 2欧美一区二区三区在线观看视频| 欧妇女乱妇女乱视频| 日本精品在线观看| 久久99国产精品久久久久久久久| 中文字幕一区2区3区| 欧美国产精品久久| 久久久久久久久久久久91| 不卡在线一区二区| 国产精品专区第二| 免费av在线网站| 日韩一区国产二区欧美三区| 免费一级全黄少妇性色生活片| 国产成人精品www牛牛影视| 日产精品久久久久久久蜜臀| 国产日韩三级| 欧洲精品在线视频| 激情小视频在线观看| 色婷婷av一区二区三区大白胸| 韩国三级hd中文字幕| 免费在线视频一区| aaa免费在线观看| 清纯唯美激情亚洲| 欧美激情亚洲精品| 色综合久久网女同蕾丝边| 色噜噜狠狠成人网p站| 日本一道本视频| 国产麻豆视频一区| 成人一对一视频| 欧美日韩国产传媒| 91九色单男在线观看| 毛片网站在线看| 亚洲视频在线观看| 国产情侣一区二区| 亚洲观看高清完整版在线观看 | 97公开免费视频| 国产精品久久久久一区二区三区厕所| 91免费的视频在线播放| 毛片在线导航| 中文字幕精品久久| 国产高潮流白浆喷水视频| 午夜精品一区二区三区三上悠亚| 熟女高潮一区二区三区| 国产呦萝稀缺另类资源| 久久亚洲中文字幕无码| 久久神马影院| 国产欧美一区二区三区另类精品| 欧洲亚洲两性| 色综合久久中文字幕综合网小说| 爽爽视频在线观看| 91精品国产欧美日韩| 中文字幕超碰在线| 亚洲视频网在线直播| 成年人在线观看av| 国内精品伊人久久久久影院对白| 精品丝袜在线| 一区二区三区在线免费观看| 在线精品一区二区三区| 日本美女视频一区二区| 久久久99精品视频| 狠狠色狠狠色综合婷婷tag| 97人人模人人爽人人喊38tv| 韩日精品一区| 91福利视频在线观看| 麻豆av在线免费看| 亚洲久久久久久久久久久| 99这里有精品视频| 欧美在线免费观看视频| 男人的天堂一区| 亚洲男人的天堂网| 三上悠亚ssⅰn939无码播放| 国产在线不卡一卡二卡三卡四卡| 男人亚洲天堂网| 亚洲无线视频| 五月天男人天堂| 国产亚洲一区| 欧美福利精品| 美女呻吟一区| 国产精品久久久久久久久久直播| 国产亚洲久久| 国产裸体写真av一区二区 | 精品亚洲综合| 日韩av影视在线| 亚洲欧美高清视频| 日韩视频一区二区三区在线播放| 911美女片黄在线观看游戏| 色哟哟精品一区| 日本熟女毛茸茸| 岛国视频午夜一区免费在线观看| 九九视频在线观看| 亚洲精品久久嫩草网站秘色| 国精品人伦一区二区三区蜜桃| 国产婷婷一区二区| 夜夜春很很躁夜夜躁| 久久久不卡影院| 白丝女仆被免费网站| 久久综合久久综合九色| 深爱五月激情网| 91毛片在线观看| 国产精品无码一区二区三区免费| proumb性欧美在线观看| 欧美大喷水吹潮合集在线观看| 成人综合在线视频| 在线免费观看a级片| 99视频精品全部免费在线| av无码一区二区三区| 99久久久无码国产精品| 国产传媒第一页| 久久精品一区二区三区不卡牛牛 | 亚洲视频免费观看| 手机av在线看| 亚洲在线观看免费| 国产精品第9页| 一本色道久久综合亚洲91| 日韩黄色片网站| 欧美日韩在线观看一区二区 | 一区二区三区视频在线| 69久久精品| 久久精品中文字幕电影| 日韩影视在线| 97超级碰碰碰| 亚洲精品在线影院| 91久久国产精品| 国产精品乱战久久久| 久热国产精品视频一区二区三区| 国产一区三区在线播放| 国产高清精品软男同| 国产精品a久久久久| 欧美成人一区二区在线观看| 免费亚洲网站| 欧洲美女亚洲激情| caoporn国产精品| 蜜桃久久精品成人无码av| 综合久久一区二区三区| 国产在线一二区| 91国在线观看| 国产黄色免费大片| 日韩av在线免费播放| 天堂地址在线www| 欧美疯狂做受xxxx高潮| 成人一区福利| 96精品久久久久中文字幕| 激情亚洲另类图片区小说区| 欧美三级网色| 中文字幕免费精品| 女人另类性混交zo| 国产激情偷乱视频一区二区三区| 国产亚洲色婷婷久久99精品91| 中文字幕欧美日韩一区| 精品无码黑人又粗又大又长| 色哟哟在线观看一区二区三区| 国产熟女一区二区三区五月婷| 亚洲精品久久久久久久久久久久久 | 日韩欧美国产二区| 狠狠综合久久| 自拍偷拍21p| 91视频在线观看免费| 国产探花视频在线| 福利视频导航一区| av男人天堂av| 中文亚洲视频在线| 涩涩涩在线视频| 99视频日韩| 羞羞答答成人影院www| 日本福利视频在线| 国产精品2024| 亚洲一区二区三区蜜桃| 亚洲观看高清完整版在线观看| 在线观看免费中文字幕| 日韩精品视频在线| 欧美videossex| 成人性生交xxxxx网站| 精品视频亚洲| 国产午夜福利视频在线观看| 成人一区在线观看| 青青操视频在线播放| 欧美日本在线看| 成人亚洲综合天堂| 欧美在线视频观看| 极品一区美女高清| 日韩精品在线观看av| 国产精品18久久久| 日韩黄色免费观看| 91精品国产综合久久香蕉的特点 | 久久97久久97精品免视看秋霞| 黄色一级片网址| 蜜桃久久久久久| 91成人精品一区二区| 在线亚洲+欧美+日本专区| 亚洲色图 校园春色| 久久理论片午夜琪琪电影网| 日韩精品成人| 99久re热视频精品98| 狠狠色狠狠色综合系列| 免费看的黄色录像| 在线视频观看一区| 国产黄在线看| 国产精品久久久久福利| 欧美日韩一区二区综合 | 国产一区二区三区免费在线观看| 精品一区二区6| 欧美日韩一区二区在线观看视频| 高清在线观看av| 国产欧美日韩精品在线观看| 日韩激情一区| av免费一区二区| 亚洲日本在线天堂| 99精品免费观看| 欧美激情2020午夜免费观看| 97精品久久| 日韩精品 欧美| 久久精品一区蜜桃臀影院| 中文字幕乱码一区二区| 久久精品中文字幕电影| 国产一区二区视频在线看 | 日韩电影在线免费观看| 少妇av片在线观看| 欧美日韩1区2区| 三级网站视频在在线播放| 国产伦精品一区| 性伦欧美刺激片在线观看| 日本性高潮视频| 7777精品伊人久久久大香线蕉的| 国产色在线观看| 国产一区二区三区免费不卡| 一区二区久久| 少妇一级黄色片| 日韩一区二区在线看| 麻豆国产在线| 亚洲成人一区二区三区| 国产一区二区在线观看视频| www.天天色| 在线播放日韩欧美| 亚洲三级av| 精品www久久久久奶水| 中文字幕一区二区三区不卡| 国模私拍视频在线| 欧洲亚洲妇女av| 国产精品久久久久久影院8一贰佰| 中文字幕18页| 欧洲av在线精品| 三级网站视频在在线播放| 欧美一级片免费观看| 国模一区二区三区白浆| 五月婷婷中文字幕| 日韩视频免费在线| 久久悠悠精品综合网| 久久久久久蜜桃一区二区| 亚洲国产精品精华液网站| eeuss影院在线播放| 国产伦精品一区二区三区高清 | 国产精品羞羞答答| 在线播放精品| 亚洲一二三在线观看| 亚洲欧美日韩图片| 北条麻妃一区二区三区在线观看| 中文字幕网av|