91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

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

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

3天內不再提示

如何保證緩存一致性

SDNLAB ? 來源:IT奶爸 ? 2023-10-19 17:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

“ 本文的參考文章是2022年HOT 34上Intel Rob Blakenship關于CXL緩存一致性的一篇介紹。”

馮諾依曼說,數據應該存在這里,這里變成了存儲器;

馮諾依曼說,數據應該在這里被計算,這里變成了CPU

馮諾依曼沒有說,CPU太快而存儲太慢。CPU沒有辦法只能把一部分數據留在身邊,慢慢地就成了各級緩存。每個CPU都留了一部分數據在身邊,就得維護這些數據和內存的一致性。

(有時間可以再聊聊拜占庭將軍問題和共識機制,又要分布式的好,還有集中式的一致性,有點類似。)

1緩存/caching

緩存就是臨時把數據存在靠近數據要消費的地方。

放數據的地方有不同的級別,不同級別的延時和帶寬都不一樣,因此就會有預取。更詳細的硬件預取器的文章可以參考以下幾篇拙作。

預取就是在數據真正需求之前把數據取回來。既然可以預取就說明數據具有兩個性質:

空間局部性:一般來說需求的數據在之前的數據附近

時間局部性:一般來說需求的數據總是之前用過的

636609d8-60f4-11ee-939d-92fbcf53809c.png

現代CPU一般都會有多級的緩存,并且他們都可以保持緩存一致。

L1:空間最小,延時最低,帶寬最高

L3:空間更大,延時更高,帶寬較低,并且支持多個數據需求來源

637e295a-60f4-11ee-939d-92fbcf53809c.png

那么如何保證緩存一致性呢?

首先需要在更新緩存之前,確保使得其他人擁有的該緩存無效。

這可以通過軟件的手段,也可以通過硬件的手段。CXL使用硬件一致性。

CXL和CPU的緩存一致性協議相同,都是基于以下幾個狀態:

Modified:該數據只被緩存到一個cache中,可讀可寫,但是還沒有更新到內存中;

Exclusive:該數據只被緩存到一個cache中,可讀可寫,數據與內存同步;

Shared:該數據被緩存到多個cache中,可讀,數據與內存同步;

Invalid:該數據沒有被緩存;

2緩存的家 Home

內存以64Byte為單位分好,這一份就是一個cacheline。

系統通過物理地址把這些單位都安排好,然后交給Home Agent來管理,有且僅有一個。

也就是說一個cacheline,只有一個家,例如在兩路系統中,要么是CPU0,要么是CPU1。

比如說,你要讀一個cacheline,你會首先在本地的cache里找,如果沒有的話,你就會去找它的家。也就是Home Agent會去問其他的CPU是不是有這個緩存。

如果你要寫一個cacheline,你也需要找它的家,獲取寫權限,然后讓Home Agent告訴其他的CPU放棄該cacheline,當然在放棄之前,需要把最新的數據回寫給Home Agent。

Home Agent怎么問其他CPU,或者修改cacheline的狀態呢?這個就是Snoop消息。

3CXL 緩存協議

為支持設備訪問系統主存,cxl.cache有15個讀寫操作指令。

CXL3.0開始,每一個端口可以最多支持16個緩存設備,而在此之前,只能支持一個。

在CPU和CXL設備之間,有兩個通訊方向,一個是H2D,一個是D2H。

顧名思義,host和device 的兩個方向。而每個方向分成三個通道/channel,分別為請求,響應和數據通道。

63ac2328-60f4-11ee-939d-92fbcf53809c.png

4舉個栗子

Device首先發一個RdShared:Read Cacheline Share State。設備獲取了某個cacheline并且獲得S-state,然后host返回Go-S。表示Home Agent同意了這個請求,并且該設備的cacheline變成了Shared state。

看看就好,不能動手。

63d0e0f0-60f4-11ee-939d-92fbcf53809c.png

這里的peer cache可以是各種鄰居:

CXL的鄰居設備;

本CPU中的cache;

遠端CPU中的cache;

而這里的內存控制器也可以是各種內存:

本CPU的傳統DDR

遠端CPU的傳統DDR;

鄰居CXL設備上的CXL.mem;

63f0fc0a-60f4-11ee-939d-92fbcf53809c.png

CXL的15個request,就不再一一解釋,露個臉:

Reads: RdShared, RdCurr, RdOwn, RdAny

Read-0: RdownNoData, CLFlush, CacheFlushed

Writes: DirtyEvict, CleanEvict, CleanEvictNoData

Streaming Writes: ItoMWr, WrCur, WOWrInv, WrInv(F)

5內存池化和共享

池化內存和CXL switch是CXL增加的內容,這使得從host到內存的專屬分配成為共享內存的一種方式。

CXL3增加了多個host共享內存的支持,利用HDM-DB。

6416081a-60f4-11ee-939d-92fbcf53809c.png

先寫到這里,緩存一致性的具體流程不再詳細解釋,細心一點的朋友可以多找幾個例子,按照圖示和步驟對照一下。

審核編輯:湯梓紅

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

    關注

    38

    文章

    7653

    瀏覽量

    167478
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11083

    瀏覽量

    217183
  • 內存
    +關注

    關注

    8

    文章

    3125

    瀏覽量

    75295
  • 緩存
    +關注

    關注

    1

    文章

    246

    瀏覽量

    27205

原文標題:感謝CXL同志為維護緩存一致性做出的努力

文章出處:【微信號:SDNLAB,微信公眾號:SDNLAB】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    介紹ARM存儲一致性模型的相關知識

    今天要說的這個是存儲一致性(memory consistency),不要跟前面講過緩存一致性(cache coherence)混淆了。
    的頭像 發表于 02-14 09:19 ?2332次閱讀

    如何解決數據庫與緩存一致性

    緩存一致性 每次逢年過節的時候搶票非常艱難,放票的時候那么多人同時去搶票,如果所有人查詢、購票等都去訪問數據庫,那數據庫的壓力得有多大,這時候很多都會引入緩存, 把車票信息放入緩存,這
    的頭像 發表于 09-25 15:25 ?1417次閱讀
    如何解決數據庫與<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>

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

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

    i.MX8M可以調用哪些刷新/無效緩存函數來保證緩存一致性

    的是,我們現在在較小的傳輸中遇到緩存問題。有時,當緩沖區被復制到用戶空間時,64 字節的數據沒有被正確的數據 buf 填充為 0xff。我們在次傳輸中傳輸了大約 1.1 MBytes,有時
    發表于 04-27 08:30

    一致性規劃研究

    針對一致性規劃的高度求解復雜度,分析主流一致性規劃器的求解策略,給出影響一致性規劃器性能的主要因素:啟發信息的有效,信念狀態表示方法的緊湊
    發表于 04-06 08:43 ?12次下載

    加速器一致性接口

    提供異步緩存一致性直接訪問PS的入口。處理器可以標記ACP上的傳輸為一致性或非一致性。PL端的AXI主機通過ARUSERS[1:0]指示是否為一致性
    發表于 11-17 15:04 ?4039次閱讀

    Cache一致性協議優化研究

    問題的由來.總結了多核時代高速緩存一致性協議設計的關鍵問題,綜述了近年來學術界對一致性的研究.從程序訪存行為模式、目錄組織結構、一致性粒度、一致性
    發表于 12-30 15:04 ?0次下載
    Cache<b class='flag-5'>一致性</b>協議優化研究

    你了解過Linux內核中的內存屏障?

    之前直認為linux中很多東西是用來保證緩存一致性的,其實不是。緩存一致性絕大部分是靠硬件機制
    發表于 05-10 14:20 ?636次閱讀

    自主駕駛系統將使用緩存一致性互連IP和非一致性互連IP

    代ASIL B(D)自主駕駛系統將使用符合ISO 26262標準的緩存一致性互連IP和非一致性互連IP來實現。 美國加利福尼亞州坎貝爾2019年4月26日消息—Arteris IP
    的頭像 發表于 05-09 17:13 ?3475次閱讀

    管理基于Cortex?-M7的MCU的高速緩存一致性

    本文檔概述了不同場景下的高速緩存一致性問題,并就如何管理或避免高速緩存一致性問題提供了些方法建議。
    發表于 04-01 10:12 ?5次下載
    管理基于Cortex?-M7的MCU的高速<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>

    Redis緩存更新一致性的方式

    當執行寫操作后,需要保證緩存讀取到的數據與數據庫中持久化的數據是一致的,因此需要對緩存進行更新。
    的頭像 發表于 11-21 10:40 ?1015次閱讀

    介紹下cpu緩存一致性(MESI協議)

    之前介紹了java并發包的cas原理和java內存模型,這篇我們介紹下cpu緩存一致性原理,可以幫助我們更好的理解cas的底層原理。
    的頭像 發表于 06-09 16:01 ?5369次閱讀
    介紹下cpu<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>(MESI協議)

    管理基于Cortex-M7的MCU的高速緩存一致性

    電子發燒友網站提供《管理基于Cortex-M7的MCU的高速緩存一致性.pdf》資料免費下載
    發表于 09-25 10:11 ?0次下載
    管理基于Cortex-M7的MCU的高速<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>

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

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

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

    在眾多回復中,李博杰同學的回答被認為質量最高。他首先將緩存一致性分為兩個主要場景:是主機內CPU與設備間的一致性;二是跨主機的一致性
    的頭像 發表于 10-24 17:00 ?1731次閱讀
    異構計算下<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>的重要<b class='flag-5'>性</b>
    主站蜘蛛池模板: 去毛片| 全免费一级午夜毛片 | 四虎影院久久久 | 女人色网 | 深夜视频在线免费观看 | 国产视频一区二 | 性欧美成人免费观看视 | 亚洲国产精品久久久久婷婷软件 | 国产精品一区二区三区免费视频 | 亚色中文字幕 | 日本三级免费看 | 国产午夜毛片一区二区三区 | 成年人的毛片 | 一级片高清 | 视频在线你懂的 | 扒开末成年粉嫩的流白浆视频 | 老司机成人精品视频lsj | 亚洲人成电影院在线观看 | 一级特黄aa大片一又好看 | 18黄无遮挡免费视频 | 婷婷综合久久中文字幕 | 久久久国产高清 | 五月婷丁香| 久久人视频 | 岛国毛片一级一级特级毛片 | 看黄网站在线 | 中文字幕av一区二区三区 | 手机看高清特黄a大片 | 最近观看免费高清视频 | 来啊mm影院亚洲mm影院 | 日韩一级在线视频 | 久久新视频| 五月婷婷丁香综合 | 天天操狠狠操 | 2021年最热新版天堂资源中文 | 日本黄网站高清色大全 | 国产美女视频免费 | 国产成人精品免费视频大全可播放的 | 春宵福利网站 | 三级黄色a | 国产亚洲欧洲人人网 |