91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

多種內(nèi)存一致性模型的特性分析

454398 ? 來(lái)源:蝸窩科技 ? 作者:passerby ? 2020-09-21 13:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

早期的CPU是通過(guò)提高主頻來(lái)提升CPU的性能,但是隨著頻率“紅利”越來(lái)越困難的情況下,廠商開始用多核來(lái)提高CPU的計(jì)算能力。多核是指一個(gè)CPU里有多個(gè)核心,在同一時(shí)間一個(gè)CPU能夠同時(shí)運(yùn)行多個(gè)線程,通過(guò)這樣提高CPU的并發(fā)能力。

內(nèi)存一致性模型(memory consistency model)就是用來(lái)描述多線程對(duì)共享存儲(chǔ)器的訪問(wèn)行為,在不同的內(nèi)存一致性模型里,多線程對(duì)共享存儲(chǔ)器的訪問(wèn)行為有非常大的差別。這些差別會(huì)嚴(yán)重影響程序的執(zhí)行邏輯,甚至?xí)斐绍浖壿媶?wèn)題。在后面的介紹中,我們將分析不同的一致性模型里,多線程的內(nèi)存訪問(wèn)亂序問(wèn)題。
目前有多種內(nèi)存一致性模型:
順序存儲(chǔ)模型(sequential consistency model)
完全存儲(chǔ)定序(total store order)
部分存儲(chǔ)定序(part store order)
寬松存儲(chǔ)模型(relax memory order)

在后面我們會(huì)分析這幾個(gè)一致性模型的特性

在分析之前,我們先定義一個(gè)基本的內(nèi)存模型,以這個(gè)內(nèi)存模型為基礎(chǔ)進(jìn)行分析


上圖是現(xiàn)代CPU的基本內(nèi)存模型,CPU內(nèi)部有多級(jí)緩存來(lái)提高CPU的load/store訪問(wèn)速度(因?yàn)閷?duì)于CPU而言,主存的訪問(wèn)速度太慢了,上百個(gè)時(shí)鐘周期的內(nèi)存訪問(wèn)延遲會(huì)極大的降低CPU的使用效率,所以CPU內(nèi)部往往使用多級(jí)緩存來(lái)提升內(nèi)存訪問(wèn)效率。)

C1與C2是CPU的2個(gè)核心,這兩個(gè)核心有私有緩存L1,以及共享緩存L2。最后一級(jí)存儲(chǔ)器才是主存。后面的順序一致性模型(SC)中,我們會(huì)以這個(gè)為基礎(chǔ)進(jìn)行描述(在完全存儲(chǔ)定序、部分存儲(chǔ)定序和寬松內(nèi)存模型里會(huì)有所區(qū)別,后面會(huì)描述相關(guān)的部分)

為了簡(jiǎn)化描述的復(fù)雜性,在下面的內(nèi)存一致性模型描述里,會(huì)先將緩存一致性(cache coherence)簡(jiǎn)單化,認(rèn)為緩存一致性是完美的(假設(shè)多核cache間的數(shù)據(jù)同步與單核cache一樣,沒(méi)有cache引起的數(shù)據(jù)一致性問(wèn)題),以減少描述的復(fù)雜性。


順序存儲(chǔ)模型是最簡(jiǎn)單的存儲(chǔ)模型,也稱為強(qiáng)定序模型。CPU會(huì)按照代碼來(lái)執(zhí)行所有的load與store動(dòng)作,即按照它們?cè)诔绦虻捻樞蛄髦谐霈F(xiàn)的次序來(lái)執(zhí)行。從主存儲(chǔ)器和CPU的角度來(lái)看,load和store是順序地對(duì)主存儲(chǔ)器進(jìn)行訪問(wèn)。

下面分析這段代碼的執(zhí)行結(jié)果


在順序存儲(chǔ)器模型里,MP(多核)會(huì)嚴(yán)格嚴(yán)格按照代碼指令流來(lái)執(zhí)行代碼
所以上面代碼在主存里的訪問(wèn)順序是:

S1 S2 L1 L2

通過(guò)上面的訪問(wèn)順序我們可以看出來(lái),雖然C1與C2的指令雖然在不同的CORE上運(yùn)行,但是C1發(fā)出來(lái)的訪問(wèn)指令是順序的,同時(shí)C2的指令也是順序的。雖然這兩個(gè)線程跑在不同的CPU上,但是在順序存儲(chǔ)模型上,其訪問(wèn)行為與UP(單核)上是一致的。
我們最終看到r2的數(shù)據(jù)會(huì)是NEW,與期望的執(zhí)行情況是一致的,所以在順序存儲(chǔ)模型上是不會(huì)出現(xiàn)內(nèi)存訪問(wèn)亂序的情況

3完全存儲(chǔ)定序

為了提高CPU的性能,芯片設(shè)計(jì)人員在CPU中包含了一個(gè)存儲(chǔ)緩存區(qū)(store buffer),它的作用是為store指令提供緩沖,使得CPU不用等待存儲(chǔ)器的響應(yīng)。所以對(duì)于寫而言,只要store buffer里還有空間,寫就只需要1個(gè)時(shí)鐘周期(哪怕是ARM-A76的L1 cache,訪問(wèn)一次也需要3個(gè)cycles,所以store buffer的存在可以很好的減少寫開銷),但這也引入了一個(gè)訪問(wèn)亂序的問(wèn)題。

首先我們需要對(duì)上面的基礎(chǔ)內(nèi)存模型做一些修改,表示這種新的內(nèi)存模型

相比于以前的內(nèi)存模型而言,store的時(shí)候數(shù)據(jù)會(huì)先被放到store buffer里面,然后再被寫到L1 cache里。


首先我們思考單核上的兩條指令:
S1:store flag= set
S2:load r1=data
S3:store b=set

如果在順序存儲(chǔ)模型中,S1肯定會(huì)比S2先執(zhí)行。但是如果在加入了store buffer之后,S1將指令放到了store buffer后會(huì)立刻返回,這個(gè)時(shí)候會(huì)立刻執(zhí)行S2。S2是read指令,CPU必須等到數(shù)據(jù)讀取到r1后才會(huì)繼續(xù)執(zhí)行。這樣很可能S1的store flag=set指令還在store buffer上,而S2的load指令可能已經(jīng)執(zhí)行完(特別是data在cache上存在,而flag沒(méi)在cache中的時(shí)候。這個(gè)時(shí)候CPU往往會(huì)先執(zhí)行S2,這樣可以減少等待時(shí)間)
這里就可以看出再加入了store buffer之后,內(nèi)存一致性模型就發(fā)生了改變。

如果我們定義store buffer必須嚴(yán)格按照FIFO的次序?qū)?shù)據(jù)發(fā)送到主存(所謂的FIFO表示先進(jìn)入store buffer的指令數(shù)據(jù)必須先于后面的指令數(shù)據(jù)寫到存儲(chǔ)器中),這樣S3必須要在S1之后執(zhí)行,CPU能夠保證store指令的存儲(chǔ)順序,這種內(nèi)存模型就叫做完全存儲(chǔ)定序(TSO)。

我們繼續(xù)看下面的一段代碼



在SC模型里,C1與C2是嚴(yán)格按照順序執(zhí)行的
代碼可能的執(zhí)行順序如下:
S1 S2 L1 L2
S1 L1 S2 L2
S1 L1 L2 S2
L1 L2 S1 S2
L1 S1 S2 L2
L1 S1 L2 S2

由于SC會(huì)嚴(yán)格按照順序進(jìn)行,最終我們看到的結(jié)果是至少有一個(gè)CORE的r1值為NEW,或者都為NEW。

在TSO模型里,由于store buffer的存在,L1和S1的store指令會(huì)被先放到store buffer里面,然后CPU會(huì)繼續(xù)執(zhí)行后面的load指令。Store buffer中的數(shù)據(jù)可能還沒(méi)有來(lái)得及往存儲(chǔ)器中寫,這個(gè)時(shí)候我們可能看到C1和C2的r1都為0的情況。

所以,我們可以看到,在store buffer被引入之后,內(nèi)存一致性模型已經(jīng)發(fā)生了變化(從SC模型變?yōu)榱薚SO模型),會(huì)出現(xiàn)store-load亂序的情況,這就造成了代碼執(zhí)行邏輯與我們預(yù)先設(shè)想不相同的情況。而且隨著內(nèi)存一致性模型越寬松(通過(guò)允許更多形式的亂序讀寫訪問(wèn)),這種情況會(huì)越劇烈,會(huì)給多線程編程帶來(lái)很大的挑戰(zhàn)。

4部分存儲(chǔ)定序

芯片設(shè)計(jì)人員并不滿足TSO帶來(lái)的性能提升,于是他們?cè)赥SO模型的基礎(chǔ)上繼續(xù)放寬內(nèi)存訪問(wèn)限制,允許CPU以非FIFO來(lái)處理store buffer緩沖區(qū)中的指令。CPU只保證地址相關(guān)指令在store buffer中才會(huì)以FIFO的形式進(jìn)行處理,而其他的則可以亂序處理,所以這被稱為部分存儲(chǔ)定序(PSO)。

那我們繼續(xù)分析下面的代碼


S1與S2是地址無(wú)關(guān)的store指令,cpu執(zhí)行的時(shí)候都會(huì)將其推到store buffer中。如果這個(gè)時(shí)候flag在C1的cahe中存在,那么CPU會(huì)優(yōu)先將S2的store執(zhí)行完,然后等data緩存到C1的cache之后,再執(zhí)行store data=NEW指令。
這個(gè)時(shí)候可能的執(zhí)行順序:
S2 L1 L2 S1

這樣在C1將data設(shè)置為NEW之前,C2已經(jīng)執(zhí)行完,r2最終的結(jié)果會(huì)為0,而不是我們期望的NEW,這樣PSO帶來(lái)的store-store亂序?qū)?huì)對(duì)我們的代碼邏輯造成致命影響。

從這里可以看到,store-store亂序的時(shí)候就會(huì)將我們的多線程代碼完全擊潰。所以在PSO內(nèi)存模型的架構(gòu)上編程的時(shí)候,要特別注意這些問(wèn)題。

5寬松內(nèi)存模型

喪心病狂的芯片研發(fā)人員為了榨取更多的性能,在PSO的模型的基礎(chǔ)上,更進(jìn)一步的放寬了內(nèi)存一致性模型,不僅允許store-load,store-store亂序。還進(jìn)一步允許load-load,load-store亂序, 只要是地址無(wú)關(guān)的指令,在讀寫訪問(wèn)的時(shí)候都可以打亂所有l(wèi)oad/store的順序,這就是寬松內(nèi)存模型(RMO)。

我們?cè)倏纯瓷厦娣治鲞^(guò)的代碼


在PSO模型里,由于S2可能會(huì)比S1先執(zhí)行,從而會(huì)導(dǎo)致C2的r2寄存器獲取到的data值為0。在RMO模型里,不僅會(huì)出現(xiàn)PSO的store-store亂序,C2本身執(zhí)行指令的時(shí)候,由于L1與L2是地址無(wú)關(guān)的,所以L2可能先比L1執(zhí)行,這樣即使C1沒(méi)有出現(xiàn)store-store亂序,C2本身的load-load亂序也會(huì)導(dǎo)致我們看到的r2為0。從上面的分析可以看出,RMO內(nèi)存模型里亂序出現(xiàn)的可能性會(huì)非常大,這是一種亂序隨可見(jiàn)的內(nèi)存一致性模型。

6內(nèi)存屏障

芯片設(shè)計(jì)人員為了盡可能的榨取CPU的性能,引入了亂序的內(nèi)存一致性模型,這些內(nèi)存模型在多線程的情況下很可能引起軟件邏輯問(wèn)題。為了解決在有些一致性模型上可能出現(xiàn)的內(nèi)存訪問(wèn)亂序問(wèn)題,芯片設(shè)計(jì)人員提供給了內(nèi)存屏障指令,用來(lái)解決這些問(wèn)題。

內(nèi)存屏障的最根本的作用就是提供一個(gè)機(jī)制,要求CPU在這個(gè)時(shí)候必須以順序存儲(chǔ)一致性模型的方式來(lái)處理load與store指令,這樣才不會(huì)出現(xiàn)內(nèi)存訪問(wèn)不一致的情況。

對(duì)于TSO和PSO模型,內(nèi)存屏障只需要在store-load/store-store時(shí)需要(寫內(nèi)存屏障),最簡(jiǎn)單的一種方式就是內(nèi)存屏障指令必須保證store buffer數(shù)據(jù)全部被清空的時(shí)候才繼續(xù)往后面執(zhí)行,這樣就能保證其與SC模型的執(zhí)行順序一致。
而對(duì)于RMO,在PSO的基礎(chǔ)上又引入了load-load與load-store亂序。RMO的讀內(nèi)存屏障就要保證前面的load指令必須先于后面的load/store指令先執(zhí)行,不允許將其訪問(wèn)提前執(zhí)行。

我們繼續(xù)看下面的例子:


例如C1執(zhí)行S1與S2的時(shí)候,我們?cè)赟1與S2之間加上寫屏障指令,要求C1按照順序存儲(chǔ)模型來(lái)進(jìn)行store的執(zhí)行,而在C2端的L1與L2之間加入讀內(nèi)存屏障,要求C2也按照順序存儲(chǔ)模型來(lái)進(jìn)行l(wèi)oad操作,這樣就能夠?qū)崿F(xiàn)內(nèi)存數(shù)據(jù)的一致性,從而解決亂序的問(wèn)題。

ARM的很多微架構(gòu)就是使用RMO模型,所以我們可以看到ARM提供的dmb內(nèi)存指令有多個(gè)選項(xiàng):

LD load-load/load-store
ST store-store/store-load
SY any-any

這些選項(xiàng)就是用來(lái)應(yīng)對(duì)不同情況下的亂序,讓其回歸到順序一致性模型的執(zhí)行順序上去

聲明:本文內(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)注

    39

    文章

    7739

    瀏覽量

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

    關(guān)注

    68

    文章

    11281

    瀏覽量

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

    關(guān)注

    9

    文章

    3211

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    是德科技推出全新GDDR7發(fā)射端一致性測(cè)試解決方案

    是德科技(NYSE: KEYS )宣布推出全新GDDR7發(fā)射端一致性解決方案,該方案可加速圖形與人工智能(AI)應(yīng)用領(lǐng)域遵循JEDEC標(biāo)準(zhǔn)的驗(yàn)證進(jìn)程。
    的頭像 發(fā)表于 03-02 11:05 ?282次閱讀
    是德科技推出全新GDDR7發(fā)射端<b class='flag-5'>一致性</b>測(cè)試解決方案

    比斯特通用分選機(jī)四線制測(cè)試技術(shù)保障電芯性能一致性

    電芯的性能一致性直接決定了終端產(chǎn)品的安全、續(xù)航能力與使用壽命,然而,受制于原材料差異、制造工藝波動(dòng)等因素,即使是同批次生產(chǎn)的電芯,其電壓、內(nèi)阻等關(guān)鍵參數(shù)仍存在微小偏差。深圳比斯特自動(dòng)化設(shè)備
    的頭像 發(fā)表于 01-29 16:20 ?165次閱讀
    比斯特通用分選機(jī)四線制測(cè)試技術(shù)保障電芯性能<b class='flag-5'>一致性</b>

    以太網(wǎng)一致性測(cè)試全解析:保障高性能網(wǎng)絡(luò)的關(guān)鍵技術(shù)

    在高速網(wǎng)絡(luò)設(shè)備的設(shè)計(jì)與制造中,以太網(wǎng)一致性測(cè)試是確保產(chǎn)品性能穩(wěn)定、符合行業(yè)標(biāo)準(zhǔn)的關(guān)鍵環(huán)節(jié)。我們能夠?yàn)榭蛻籼峁臏y(cè)試標(biāo)準(zhǔn)解讀到實(shí)際問(wèn)題排查的全方位支持。本文將以100Base-TX和1000Base-T為例,系統(tǒng)介紹以太網(wǎng)一致性測(cè)試的核心內(nèi)容與標(biāo)準(zhǔn)依據(jù),幫助客戶理解測(cè)試的重
    的頭像 發(fā)表于 01-20 17:42 ?1132次閱讀
    以太網(wǎng)<b class='flag-5'>一致性</b>測(cè)試全解析:保障高性能網(wǎng)絡(luò)的關(guān)鍵技術(shù)

    儲(chǔ)能電池一致性,已成核心競(jìng)爭(zhēng)力

    電子發(fā)燒友網(wǎng)報(bào)道(文/黃山明)隨著新型儲(chǔ)能以及長(zhǎng)時(shí)儲(chǔ)能在儲(chǔ)能中占比越來(lái)越多,儲(chǔ)能電池的一致性問(wèn)題開始凸顯。而所謂的一致性,是指同規(guī)格型號(hào)的電池在容量、內(nèi)阻、電壓、自放電率、溫度特性
    的頭像 發(fā)表于 01-08 16:37 ?2518次閱讀

    比斯特1810B自動(dòng)分選機(jī)實(shí)現(xiàn)電池性能一致性的保障設(shè)備

    在動(dòng)力電池和儲(chǔ)能系統(tǒng)快速發(fā)展的當(dāng)下,電池性能一致性已成為衡量產(chǎn)品質(zhì)量的關(guān)鍵指標(biāo)。一致性將直接影響電池組的整體性能發(fā)揮,更關(guān)乎產(chǎn)品的安全可靠和使用壽命。深圳比斯特自動(dòng)化設(shè)備有限公司推出的1810B
    的頭像 發(fā)表于 01-06 17:06 ?528次閱讀
    比斯特1810B自動(dòng)分選機(jī)實(shí)現(xiàn)電池性能<b class='flag-5'>一致性</b>的保障設(shè)備

    有關(guān)100M、1000M以太網(wǎng)一致性測(cè)試問(wèn)題探討交流

    100M、1000M以太網(wǎng)一致性測(cè)試
    的頭像 發(fā)表于 12-14 10:42 ?523次閱讀
    有關(guān)100M、1000M以太網(wǎng)<b class='flag-5'>一致性</b>測(cè)試問(wèn)題探討交流

    SMD 貼片式車規(guī)鋁電解電容 自動(dòng)化生產(chǎn) 高一致性

    SMD貼片式車規(guī)鋁電解電容通過(guò)封裝革新、全流程自動(dòng)化工藝及智能化檢測(cè)技術(shù),實(shí)現(xiàn)了高一致性生產(chǎn),完全適配新能源汽車自動(dòng)化產(chǎn)線需求 。具體分析如下: 、封裝革新:適配自動(dòng)化生產(chǎn)的核心優(yōu)勢(shì) 貼片式
    的頭像 發(fā)表于 12-03 14:47 ?671次閱讀

    電纜組件相位一致性的意義

    、技術(shù)本質(zhì):定義與量化指標(biāo) 相位一致性描述的是多通道電纜組件在相同頻率與輸入信號(hào)下,各通道輸出信號(hào)相位差的穩(wěn)定程度。核心衡量指標(biāo)包括: 相位偏差 :?jiǎn)瓮ǖ老辔坏牟▌?dòng)范圍 通道間相位差 :多通道之間
    的頭像 發(fā)表于 11-27 13:41 ?327次閱讀
    電纜組件相位<b class='flag-5'>一致性</b>的意義

    請(qǐng)教大家下DP一致性測(cè)試問(wèn)題

    請(qǐng)教大家下,DP的Vbios中已經(jīng)固定了預(yù)加重和Swing的值,DP的TX信號(hào)一致性測(cè)試項(xiàng)中Non Pre-Emphasis Level Test(Swing2/Swing0)-PLTPAT,這個(gè)測(cè)試項(xiàng)意思是Swing2與Swing0偏差嗎?已經(jīng)固定了Swing中,這
    發(fā)表于 11-12 15:57

    解決鋰電池一致性難題!景鋰新能源電池均衡儀為儲(chǔ)能安全/電動(dòng)車?yán)m(xù)航保駕護(hù)航

    解決鋰電池一致性難題!景鋰新能源電池均衡儀為儲(chǔ)能/電動(dòng)車電池續(xù)航保駕護(hù)航
    的頭像 發(fā)表于 11-06 11:00 ?674次閱讀

    直播回顧 | 深度解讀CAN總線一致性測(cè)試的四大層級(jí)與實(shí)戰(zhàn)方法,虹科技術(shù)直播助您破解汽車通信穩(wěn)定性的關(guān)鍵

    ?直播主題CAN總線一致性測(cè)試“一致性測(cè)試是保障總線系統(tǒng)穩(wěn)定、兼容、可靠運(yùn)行的核心環(huán)節(jié)?!彪S著整車電子電氣架構(gòu)日益復(fù)雜,ECU數(shù)量增多、通信負(fù)載加大,CAN節(jié)點(diǎn)之間若存在電氣特性不匹配、時(shí)序偏差
    的頭像 發(fā)表于 10-30 17:34 ?2337次閱讀
    直播回顧 |  深度解讀CAN總線<b class='flag-5'>一致性</b>測(cè)試的四大層級(jí)與實(shí)戰(zhàn)方法,虹科技術(shù)直播助您破解汽車通信穩(wěn)定性的關(guān)鍵

    鏡頭不一致的問(wèn)題原因分析

    在機(jī)器視覺(jué)系統(tǒng)的視界,鏡頭一致性猶如維系整個(gè)生態(tài)的隱形生命線,貫穿于光學(xué)成像、圖像處理到智能決策的全鏈路,其細(xì)微波動(dòng)足以顛覆整個(gè)檢測(cè)系統(tǒng)的可靠。當(dāng)工業(yè)界熱衷于討論算法精度與算力突破時(shí),鏡頭這基礎(chǔ)光學(xué)元件的
    的頭像 發(fā)表于 09-11 09:45 ?1225次閱讀

    車用鋰離子電池機(jī)理建模與并聯(lián)模組不一致性研究

    車用鋰離子電池機(jī)理建模與并聯(lián)模組不一致性研究
    發(fā)表于 05-16 21:02

    堆焊熔池輪廓實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)工藝穩(wěn)定性與焊縫一致性

    及稀釋程度等關(guān)鍵參數(shù)對(duì)焊層質(zhì)量有直接影響,實(shí)時(shí)監(jiān)控熔池輪廓和溫度分布可及時(shí)預(yù)警缺陷并指導(dǎo)參數(shù)優(yōu)化,以保證焊層一致性與工藝穩(wěn)定性。今天起了解堆焊熔池輪廓實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)工藝穩(wěn)定性與焊縫一致性。 堆焊簡(jiǎn)介 堆焊,又
    的頭像 發(fā)表于 04-24 17:15 ?674次閱讀
    堆焊熔池輪廓實(shí)時(shí)監(jiān)控,實(shí)現(xiàn)工藝穩(wěn)定性與焊縫<b class='flag-5'>一致性</b>

    一致性校正與邊緣融合拼接

    電子發(fā)燒友網(wǎng)站提供《差一致性校正與邊緣融合拼接.pdf》資料免費(fèi)下載
    發(fā)表于 04-10 18:02 ?0次下載