国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

CPU 緩存一致性問題深度解析

系統
本文將從最基本的總線嗅探技術入手,逐步深入探討幾種主流的緩存一致性協議,特別是 MESI 協議。

在現代多核處理器系統中,數據的一致性和訪問效率是確保高性能計算的關鍵因素之一。隨著技術的發展和應用需求的增長,傳統的單核處理架構已經無法滿足日益復雜的計算任務要求。因此,多核乃至多處理器系統的出現成為必然趨勢。然而,在這樣的并行計算環境中,如何保證各個核心之間的數據同步與一致成為了新的挑戰。

緩存一致性問題是多核系統中最為核心的問題之一。當多個處理器核心共享同一塊內存區域時,每個核心都可能擁有該內存區域的副本。如果一個核心修改了其緩存中的數據,其他核心必須能夠及時感知這一變化,以保持數據的一致性。為了解決這個問題,各種緩存一致性協議應運而生。

本文將從最基本的總線嗅探技術入手,逐步深入探討幾種主流的緩存一致性協議,特別是MESI協議。我們將詳細介紹這些協議的工作原理、優缺點以及對系統性能的影響。希望通過本文的講解,讀者能夠對緩存一致性問題有一個全面的理解,并掌握解決這一問題的有效方法。

一、詳解CPU體系結構和數據讀寫機制

1.CPU Cache Line是什么

每個CPU都會有自己的二級緩存,其中一級緩存分為數據緩存和指令緩存,這些緩存的數據都是從內存中讀取的,而且每次都會加載一個cache line,而CPU Cache Line的物理結構大體如下圖所示:

關于cache line的大小可以使用命令鍵入如下指令進行查看:

cat /sys/devices/system/cpu/cpu0/cache/index0/coherency_line_size

以筆者的服務器為例,可以看到對應的輸出結果為64:

同時對應的我們給出CPU緩存與內存的體系結構圖,其中按照數值減小訪問速度越快,不同CPU核心都有獨立的二級緩存,而三級緩存則是共享緩沖區,與物理內存空間直接打交道:

如果開發者能夠很好的使用緩存技術,那么程序的性能就會很高,具體可以參照筆者之前寫的這篇文章

計算機組成原理-基于計組CPU的基礎知識進行代碼調優:https://blog.csdn.net/shark_chili3007/article/details/123038653

2.CPU Cache和內存同步技術

(1) 寫直達(Write Through)技術

寫直達技術解決cache和內存同步問題的方式很簡單,例如CPU1要操作變量i,先看看cache中有沒有變量i,若有則直接操作cache中的值,然后立刻寫回內存。 若變量i不在cache中,那么CPU就回去內存中加載這個變量到cache中進行操作,然后立刻寫回內存中。 這樣做的好處就是實現簡單,缺點也很明顯,因為每次都要將修改的數據立刻寫回內存,這其中的寫入開銷對于需要高速運轉的CPU是一種災難:

(2) 回寫技術(Write Back)

Write Back即一種延遲寫技術,為了避免上一種操作頻繁寫入內存的資源開銷而提出的一種方案,它的工作原理是將數據加載到CPU cache并修改但并不寫入內存,僅僅是將數據標記為dirty,由此減少寫入內存的次數,如果沒有發生緩存置換,這些數據就不會被寫入內存中。

舉個例子,CPU cache加載data1到緩存中,并進行數次修改操作,隨后cpu cache發生data10不在緩存中需要從內存中加載,又因為cpu cache空間不足,此時觸發緩存置換算法便將最近最少使用且是dirty的數據寫到內存中,并將data10加載到cpu cache里:

可以看出這種寫法如果出現在毫秒級的斷電場景可能存在數據丟失問題,又因為延遲寫的原因,對應的數據加載在讀未命中的情況下存在兩次操作:

  • 將需要置換的數據寫入內存。
  • 將需要加載的數據拉到cpu cache。

這里我們也補充一下幾種比較常見的緩存置換算法:

  • Belady異常(Belady’s Anomaly)
  • 最近最少使用(Least Recently Used Algorithm)
  • 先進先出(FIFO)
  • 后進先出(LIFO)

二、詳解CPU緩存一致性問題

1.多核心緩存修改問題

當一臺計算機由多核CPU構成的時候,每個CPU都從內存里加載相同的變量i(初值為0)進行累加操作,我們試想這種情況:

  • CPU-0加載內存變量i值為0。
  • CPU-0自增為1準備寫回內存。
  • CPU-1加載內存變量i值為0。
  • CPU-1自增為1準備寫回內存。 兩次自增得到結果1,這就是經典的緩存一致性問題:

而解決這個問題我們只要攻破以下兩點問題即可:

  • 寫傳播問題:即當前Cache中修改的值要讓其他CPU知道
  • 事務串行化:例如CPU1先將變量i改為100,CPU2再將基于當前變量i的值乘2。我們必須保證變量i先加100,再乘2。

2.總線嗅探(Bus Snooping)

總線嗅探是解決寫傳播的解決方案,舉個例子,當CPU1更新Cache中變量i的值時,就會通知其他核心變量i已被修改,當其他CPU發現自己Cache中也有這個值的時候就會將CPU1中cache的結果更新到自己的cache中。 這種方式缺點很明顯,CPU必須無時不刻監聽變化,而且出現變化的數據自己還不一定有,這樣的作法增加了總線的壓力:

而且也不能保證事務串行化,如下圖,CPU-0加載了變量修改了值通知其他CPU這個值有變化了。 而CPU-1也改了i的值,按照正常的邏輯CPU-2、CPU-3的值應該是先變為100在變為200。 但是CPU-3先收到CPU-2的通知先改為200再收到CPU-0的通知變為100,這就導致的數據不一致的問題,即事務串行化失敗:

3.MESI協議如何解決上述問題

MESI是總線嗅探的改良版,他很好的解決了總線的帶寬壓力,以及很好的解決了數據一致性問題。 在介紹MESI之前,我們必須了解以下MESI是什么。

  • M(Modified,已修改),MESI第一個字母M,代表著CPU當前L1 cache中某個變量i的狀態被修改了,而且這個數據在其他核心中都沒有。
  • E(Exclusive,獨占),說白了就是CPUA將數據加載自己的L1 cache時,其他核心的cache中并沒有這個數據,所以CPUA將這個數據加載到自己的cache時標記為E。
  • (S:Shared,共享):說明CPUA在加載這個數據時,其他CPU已經加載過這個數據了,這時CPUA就會從其他CPU中拿到這個數據并加載到L1 cache中,并且所有擁有這個值的CPU都會將cache中的這個值標記為S。
  • (I:Invalidated,已失效):當CPUA修改了L1 cache中的變量i時,發現這個值是S即共享的數據,那么就需要通知其他核心這個數據被改了,其他CPU都需要將cache中的這個值標為I,后面要操作的時,必須拿到最新的數據在進行操作。

好了介紹完這幾個狀態之后,我們不妨用一個例子過一下這個流程:

  • CPU-0要加載變量i,發現變量i不在cache中,于是去內存中加載數據,此時通過總線發個消息給其他核心,其他核心的cache中并沒有這條數據,所以這個變量的cache中的狀態為E(獨占)。
  • CPU-1也加載這個數據了,在總線上發了個消息,發現CPU-0有這個數據且并沒有修改或者失效的標志,于是他們一起將這個變量i狀態設置為S(共享)
  • CPU-0要改變量i值了,發消息給其他核心,其他核心收到消息將自己的變量i設置為I(無效),CPU-0改完后將數據設置為M(已修改)
  • CPU-0又要改變量i的值了,而且看到變量i的狀態為M(已修改),說明這個值是最新的數據,所以不發消息給其他核心了,直接更新即可。
  • CPU-1要加載變量i,發現狀態為I,于是CPU-0將值寫回內存,此時狀態為E,然后CPU-1讀取這個值,大家狀態都變為S共享。
  • CPU-0要加載新的變量i了,而且變量x要使用的cache空間正是變量i的,所以CPU-0將值寫回內存中,這時候內存和最新數據同步了。

三、小結

自此,我們從多核CPU體系結構所引發緩存一致性問題為入手,再從總線嗅探到MESI協議深度講解了緩存一致性問題的解決方案,希望對你有幫助。

責任編輯:趙寧寧 來源: 寫代碼的SharkChili
相關推薦

2024-04-11 13:45:14

Redis數據庫緩存

2022-09-06 15:30:20

緩存一致性

2020-09-04 06:32:08

緩存數據庫接口

2019-02-13 11:04:42

系統緩存軟件

2023-04-13 08:15:47

Redis緩存一致性

2016-11-29 09:00:19

分布式數據一致性CAS

2022-08-11 07:55:05

數據庫Mysql

2021-09-08 11:03:13

緩存數據庫性能

2025-06-16 02:11:00

2022-12-14 08:23:30

2024-11-07 22:57:30

2023-08-14 08:10:33

CPU緩存RFO

2019-03-27 13:56:39

緩存雪崩穿透

2022-09-16 09:46:42

緩存數據庫

2020-10-26 19:25:23

CPU緩存Cache

2025-03-24 10:17:01

2012-09-24 09:35:42

分布式系統

2021-06-30 21:13:49

CPUCache數據

2020-05-12 10:43:22

Redis緩存數據庫

2020-06-01 22:09:48

緩存緩存同步緩存誤用
點贊
收藏

51CTO技術棧公眾號

日韩三级在线观看| 国产午夜精品一区二区| 日本中文字幕网址| 国产日韩亚洲欧美综合| 蜜臀av.com| 亚洲精选在线| 成人黄色影片在线| 午夜日韩电影| 国产精品免费一区二区三区四区 | 亚洲激情网址| 日韩视频在线免费观看| 番号在线播放| 一区二区三区精品视频| 免费在线毛片| 国产精品一区免费视频| 3dmax动漫人物在线看| 精品动漫一区二区三区在线观看| 欧美韩日亚洲| 欧美成人精品三级在线观看| 国产精品一区在线| 国产精品视频二| 综合综合综合综合综合网| 亚洲视频国产视频| 色综合一本到久久亚洲91| 午夜激情一区二区三区| 免费羞羞视频网站| 91精品婷婷国产综合久久性色 | 91免费网站视频| 久久天天久久| 国产国语videosex另类| 久久99蜜桃精品| 成人免费网站在线看| 国产传媒在线观看| 欧美本精品男人aⅴ天堂| 中文字字幕在线中文乱码电影| 日韩精品久久久久久| 欧美日产国产成人免费图片| 天堂中文а√在线| 久久久久国产一区二区三区四区| 成人福利网站在线观看| а天堂中文最新一区二区三区| 亚洲午夜影视影院在线观看| 综合久久国产| 99av国产精品欲麻豆| 成人在线小视频| 日本精品黄色| 5566日本婷婷色中文字幕97| 久久天堂影院| 久久综合五月天| 久久男人天堂| 日韩中文在线中文网三级| 欧美性生交xxxxxdddd| 色姑娘综合网| 久久精品国产精品亚洲毛片| 中文字幕中文字幕一区二区| 一路向西2在线观看| 精品久久久久久久久久久久久久久久久 | 国产精品欧美久久久久无广告| 男人天堂成人网| 精久久久久久久久久久| 国产有色视频色综合| 欧美日韩国产综合网| 91免费欧美精品| 中文字幕精品影院| 成人做爽爽免费视频| 99精品综合| 欧美亚洲免费在线| 国产亚洲精品资源在线26u| 青青青国产在线视频| 日韩美女精品在线| 欧美日韩在线看片| 粗暴蹂躏中文一区二区三区| 日韩亚洲国产免费| 97成人精品区在线播放| 欧美aaa免费| 一色屋精品亚洲香蕉网站| 欧美视频在线观看视频| 久久亚洲综合av| 91精品麻豆| 免费国产在线视频| xx欧美视频| 欧洲一区二区视频| 麻豆91在线看| 校园春色影音先锋| 亚洲欧美日韩在线高清直播| 亚洲成aⅴ人片久久青草影院| 欧美激情视频一区二区三区在线播放| 国产在线精品一区二区| 久草香蕉在线| 日韩视频一区二区三区在线播放| 一区二区电影免费观看| 国产情侣第一页| 精品免费国产一区二区三区四区| 成人高清网站| 色综合五月天导航| 国产精品亚洲欧美| 日本18视频网站| 亚洲欧美综合精品久久成人| 久久久久国产| 久久精品香蕉视频| 日韩午夜三级在线| 欧洲grand老妇人| 国产精品视频yy9099| 国产亚洲aⅴaaaaaa毛片| 欧美一级播放| 91天堂在线观看| 亚洲国产精品精华液ab| freexxx性亚洲精品| 亚洲在线免费视频| 亚洲精品伦理在线| 亚洲国产中文在线二区三区免| 亚洲毛片aa| 欧美色网一区二区| 色88久久久久高潮综合影院| 一区二区三区韩国| 在线观看视频亚洲| 久久99国产精品久久99| 老司机免费在线视频| 99在线看视频| 欧美日韩亚洲视频| 小小影院久久| 欧美日韩国产综合视频| 国产精品久久久久久久电影| 久久久.com| 中文字幕一区图| 亚洲色欲综合一区二区三区| 尤物精品国产第一福利三区| 免费成人av在线播放| 免费看电影在线| 亚洲精品高清视频| 精品网站999www| 成人性生交大片免费看中文| 3d欧美精品动漫xxxx无尽| a级片一区二区| 最新国产精品拍自在线播放| 97se亚洲国产综合在线| 久久gogo国模啪啪裸体| 国产嫩草在线观看| 97欧美精品一区二区三区| 亚洲丝袜制服诱惑| 欧美一区二区三区激情视频| 美女网站在线观看| 国产成人免费观看| 欧美一级理论性理论a| 免费看欧美女人艹b| 亚洲女同av| 十八禁视频网站在线观看| 97久久精品人人澡人人爽缅北| 亚洲三级小视频| 色天天久久综合婷婷女18| 黄色av网址在线免费观看| 久久久久综合一区二区三区| 日韩一区二区高清| 成人动漫一区二区在线| 成人激情自拍| 色网址在线观看| 日韩精品av一区二区三区| 精品视频在线播放| 国产亚洲综合在线| 国产国产精品| 久久一卡二卡| 国产麻花豆剧传媒精品mv在线| 国产精欧美一区二区三区| 在线视频一区二区三区| 国产精品社区| 国外成人福利视频| 骚视频在线观看| 奇米影视首页 狠狠色丁香婷婷久久综合| 精品亚洲精品福利线在观看| 国产精品素人一区二区| 亚洲无中文字幕| 波多野结衣久久精品| 污版网站在线观看| 欧美日韩和欧美的一区二区| 国产片一区二区| 欧美日韩一区小说| 欧美日韩在线影院| 国产精品久久久久久久久免费桃花| 美腿丝袜亚洲色图| 免费一级欧美片在线观看| 国产精品麻豆久久| 91精品蜜臀一区二区三区在线| 蜜桃精品wwwmitaows| 97在线免费视频观看| 国产91丝袜在线播放九色| 九色精品91| 69xxx在线| 日日噜噜噜噜久久久精品毛片| 91欧美日韩一区| 亚洲欧美色图片| 婷婷丁香久久五月婷婷| 国产精品综合网| 久久在线视频| 亚洲电影二区| av影片在线看| 青青在线免费观看视频| 免费在线成人av| 国产国产精品人在线视| 亚洲图片欧美日产| 欧美日韩高清一区|