欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何保證緩存一致性

SDNLAB ? 來(lái)源:IT奶爸 ? 2023-10-19 17:42 ? 次閱讀

“ 本文的參考文章是2022年HOT 34上Intel Rob Blakenship關(guān)于CXL緩存一致性的一篇介紹?!?/p>

馮諾依曼說(shuō),數(shù)據(jù)應(yīng)該存在這里,這里變成了存儲(chǔ)器;

馮諾依曼說(shuō),數(shù)據(jù)應(yīng)該在這里被計(jì)算,這里變成了CPU

馮諾依曼沒(méi)有說(shuō),CPU太快而存儲(chǔ)太慢。CPU沒(méi)有辦法只能把一部分?jǐn)?shù)據(jù)留在身邊,慢慢地就成了各級(jí)緩存。每個(gè)CPU都留了一部分?jǐn)?shù)據(jù)在身邊,就得維護(hù)這些數(shù)據(jù)和內(nèi)存的一致性。

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

1緩存/caching

緩存就是臨時(shí)把數(shù)據(jù)存在靠近數(shù)據(jù)要消費(fèi)的地方。

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

預(yù)取就是在數(shù)據(jù)真正需求之前把數(shù)據(jù)取回來(lái)。既然可以預(yù)取就說(shuō)明數(shù)據(jù)具有兩個(gè)性質(zhì):

空間局部性:一般來(lái)說(shuō)需求的數(shù)據(jù)在之前的數(shù)據(jù)附近

時(shí)間局部性:一般來(lái)說(shuō)需求的數(shù)據(jù)總是之前用過(guò)的

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

現(xiàn)代CPU一般都會(huì)有多級(jí)的緩存,并且他們都可以保持緩存一致。

L1:空間最小,延時(shí)最低,帶寬最高

L3:空間更大,延時(shí)更高,帶寬較低,并且支持多個(gè)數(shù)據(jù)需求來(lái)源

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

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

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

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

CXL和CPU的緩存一致性協(xié)議相同,都是基于以下幾個(gè)狀態(tài):

Modified:該數(shù)據(jù)只被緩存到一個(gè)cache中,可讀可寫,但是還沒(méi)有更新到內(nèi)存中;

Exclusive:該數(shù)據(jù)只被緩存到一個(gè)cache中,可讀可寫,數(shù)據(jù)與內(nèi)存同步;

Shared:該數(shù)據(jù)被緩存到多個(gè)cache中,可讀,數(shù)據(jù)與內(nèi)存同步;

Invalid:該數(shù)據(jù)沒(méi)有被緩存;

2緩存的家 Home

內(nèi)存以64Byte為單位分好,這一份就是一個(gè)cacheline。

系統(tǒng)通過(guò)物理地址把這些單位都安排好,然后交給Home Agent來(lái)管理,有且僅有一個(gè)。

也就是說(shuō)一個(gè)cacheline,只有一個(gè)家,例如在兩路系統(tǒng)中,要么是CPU0,要么是CPU1。

比如說(shuō),你要讀一個(gè)cacheline,你會(huì)首先在本地的cache里找,如果沒(méi)有的話,你就會(huì)去找它的家。也就是Home Agent會(huì)去問(wèn)其他的CPU是不是有這個(gè)緩存。

如果你要寫一個(gè)cacheline,你也需要找它的家,獲取寫權(quán)限,然后讓Home Agent告訴其他的CPU放棄該cacheline,當(dāng)然在放棄之前,需要把最新的數(shù)據(jù)回寫給Home Agent。

Home Agent怎么問(wèn)其他CPU,或者修改cacheline的狀態(tài)呢?這個(gè)就是Snoop消息。

3CXL 緩存協(xié)議

為支持設(shè)備訪問(wèn)系統(tǒng)主存,cxl.cache有15個(gè)讀寫操作指令。

CXL3.0開(kāi)始,每一個(gè)端口可以最多支持16個(gè)緩存設(shè)備,而在此之前,只能支持一個(gè)。

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

顧名思義,host和device 的兩個(gè)方向。而每個(gè)方向分成三個(gè)通道/channel,分別為請(qǐng)求,響應(yīng)和數(shù)據(jù)通道。

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

4舉個(gè)栗子

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

看看就好,不能動(dòng)手。

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

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

CXL的鄰居設(shè)備;

本CPU中的cache;

遠(yuǎn)端CPU中的cache;

而這里的內(nèi)存控制器也可以是各種內(nèi)存:

本CPU的傳統(tǒng)DDR;

遠(yuǎn)端CPU的傳統(tǒng)DDR;

鄰居CXL設(shè)備上的CXL.mem;

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

CXL的15個(gè)request,就不再一一解釋,露個(gè)臉:

Reads: RdShared, RdCurr, RdOwn, RdAny

Read-0: RdownNoData, CLFlush, CacheFlushed

Writes: DirtyEvict, CleanEvict, CleanEvictNoData

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

5內(nèi)存池化和共享

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

CXL3增加了多個(gè)host共享內(nèi)存的支持,利用HDM-DB。

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

先寫到這里,緩存一致性的具體流程不再詳細(xì)解釋,細(xì)心一點(diǎn)的朋友可以多找?guī)讉€(gè)例子,按照?qǐng)D示和步驟對(duì)照一下。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7528

    瀏覽量

    164312
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10901

    瀏覽量

    212903
  • 內(nèi)存
    +關(guān)注

    關(guān)注

    8

    文章

    3052

    瀏覽量

    74280
  • 緩存
    +關(guān)注

    關(guān)注

    1

    文章

    241

    瀏覽量

    26740

原文標(biāo)題:感謝CXL同志為維護(hù)緩存一致性做出的努力

文章出處:【微信號(hào):SDNLAB,微信公眾號(hào):SDNLAB】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    介紹ARM存儲(chǔ)一致性模型的相關(guān)知識(shí)

    今天要說(shuō)的這個(gè)是存儲(chǔ)一致性(memory consistency),不要跟前面講過(guò)緩存一致性(cache coherence)混淆了。
    的頭像 發(fā)表于 02-14 09:19 ?1961次閱讀

    如何解決數(shù)據(jù)庫(kù)與緩存一致性

    緩存一致性 每次逢年過(guò)節(jié)的時(shí)候搶票非常艱難,放票的時(shí)候那么多人同時(shí)去搶票,如果所有人查詢、購(gòu)票等都去訪問(wèn)數(shù)據(jù)庫(kù),那數(shù)據(jù)庫(kù)的壓力得有多大,這時(shí)候很多都會(huì)引入緩存, 把車票信息放入緩存,這
    的頭像 發(fā)表于 09-25 15:25 ?1156次閱讀
    如何解決數(shù)據(jù)庫(kù)與<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>

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

    我們介紹`CPU Cache`的組織架構(gòu)及其進(jìn)行**讀操作**時(shí)的尋址方式,但是緩存不僅僅只有讀操作,還有 **寫操作** ,這會(huì)帶來(lái)個(gè)新的問(wèn)題
    的頭像 發(fā)表于 12-04 15:05 ?1715次閱讀
    CPU Cache是如何<b class='flag-5'>保證</b><b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>的?

    i.MX8M可以調(diào)用哪些刷新/無(wú)效緩存函數(shù)來(lái)保證緩存一致性?

    的是,我們現(xiàn)在在較小的傳輸中遇到緩存問(wèn)題。有時(shí),當(dāng)緩沖區(qū)被復(fù)制到用戶空間時(shí),64 字節(jié)的數(shù)據(jù)沒(méi)有被正確的數(shù)據(jù) buf 填充為 0xff。我們?cè)?b class='flag-5'>一次傳輸中傳輸了大約 1.1 MBytes,有時(shí)
    發(fā)表于 04-27 08:30

    一致性規(guī)劃研究

    針對(duì)一致性規(guī)劃的高度求解復(fù)雜度,分析主流一致性規(guī)劃器的求解策略,給出影響一致性規(guī)劃器性能的主要因素:?jiǎn)l(fā)信息的有效,信念狀態(tài)表示方法的緊湊
    發(fā)表于 04-06 08:43 ?12次下載

    加速器一致性接口

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

    Cache一致性協(xié)議優(yōu)化研究

    問(wèn)題的由來(lái).總結(jié)了多核時(shí)代高速緩存一致性協(xié)議設(shè)計(jì)的關(guān)鍵問(wèn)題,綜述了近年來(lái)學(xué)術(shù)界對(duì)一致性的研究.從程序訪存行為模式、目錄組織結(jié)構(gòu)、一致性粒度、一致性
    發(fā)表于 12-30 15:04 ?0次下載
    Cache<b class='flag-5'>一致性</b>協(xié)議優(yōu)化研究

    你了解過(guò)Linux內(nèi)核中的內(nèi)存屏障?

    之前直認(rèn)為linux中很多東西是用來(lái)保證緩存一致性的,其實(shí)不是。緩存一致性絕大部分是靠硬件機(jī)制
    發(fā)表于 05-10 14:20 ?543次閱讀

    自主駕駛系統(tǒng)將使用緩存一致性互連IP和非一致性互連IP

    代ASIL B(D)自主駕駛系統(tǒng)將使用符合ISO 26262標(biāo)準(zhǔn)的緩存一致性互連IP和非一致性互連IP來(lái)實(shí)現(xiàn)。 美國(guó)加利福尼亞州坎貝爾2019年4月26日消息—Arteris IP
    的頭像 發(fā)表于 05-09 17:13 ?3265次閱讀

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

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

    Redis緩存更新一致性的方式

    當(dāng)執(zhí)行寫操作后,需要保證緩存讀取到的數(shù)據(jù)與數(shù)據(jù)庫(kù)中持久化的數(shù)據(jù)是一致的,因此需要對(duì)緩存進(jìn)行更新。
    的頭像 發(fā)表于 11-21 10:40 ?797次閱讀

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

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

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

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

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

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

    異構(gòu)計(jì)算下緩存一致性的重要

    在眾多回復(fù)中,李博杰同學(xué)的回答被認(rèn)為質(zhì)量最高。他首先將緩存一致性分為兩個(gè)主要場(chǎng)景:是主機(jī)內(nèi)CPU與設(shè)備間的一致性;二是跨主機(jī)的一致性。
    的頭像 發(fā)表于 10-24 17:00 ?764次閱讀
    異構(gòu)計(jì)算下<b class='flag-5'>緩存</b><b class='flag-5'>一致性</b>的重要<b class='flag-5'>性</b>