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

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

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

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

安芯教育科技 ? 來源:老秦談芯 ? 作者:老秦談芯 ? 2023-02-14 09:19 ? 次閱讀

前面我們分享了中斷及ARM體系中對(duì)中斷的處理、GIC-600以及redistributor的相關(guān)知識(shí),本篇將介紹ARM存儲(chǔ)一致性模型的相關(guān)知識(shí)。

按照慣例,先講基礎(chǔ)原理,再說ARM的相關(guān)部分。

今天要說的這個(gè)是存儲(chǔ)一致性(memory consistency),不要跟前面講過緩存一致性(cache coherence)混淆了。緩存一致性協(xié)議解決的是對(duì)單個(gè)存儲(chǔ)器地址的訪問之間如何排序的問題,而對(duì)于不同地址的訪問并不是緩存一致性協(xié)議所要考慮的問題。存儲(chǔ)一致性問題在任何具有或不具有高速緩存的系統(tǒng)中都存在,雖然高速緩存的存在有可能進(jìn)一步加劇存儲(chǔ)一致性問題。

存儲(chǔ)器模型(memory model)又稱為存儲(chǔ)一致性模型。用于定義系統(tǒng)中對(duì)存儲(chǔ)器訪問需要遵守的原則,只要軟件和硬件都遵循該原則,就能保證多核程序能運(yùn)行得到確切的結(jié)果。 對(duì)于程序員來說,通常直覺上會(huì)隱式地假定存儲(chǔ)器操作是按一定次序的。來看下面的例子,假定有兩個(gè)線程P0和P1。

3ba4e80a-abc9-11ed-bfe3-dac502259ad0.png

在線程P0中,執(zhí)行S1,賦值data為5;執(zhí)行S2,賦值dataIsReady為1。在線程P1中,等待dataIsReady這個(gè)變量變?yōu)?,然后把data賦值給其它變量。在我們直觀看來,S1先于S2執(zhí)行,通過dataIsReady來阻塞P1的S3執(zhí)行,那么執(zhí)行S4的時(shí)候,拿到的data一定是5。

實(shí)際上,未必是這樣,可能S2的結(jié)果早于S1傳播到P1,S4拿到的data就有可能是舊值,而不是5! 在我們的直觀感覺里,對(duì)于變量的寫操作會(huì)即時(shí)傳播,或者說是原子性的,即P0的寫操作必須以不能分割的步驟傳播到P1。我們把關(guān)于存儲(chǔ)器訪問次序的隱式期望表示為:來自一個(gè)處理器的存儲(chǔ)器訪問應(yīng)該以程序的次序執(zhí)行,并且每個(gè)訪問的執(zhí)行必須是原子性的。

這樣一種期望被正式定義為順序一致性(SC)模型。順序一致性模型雖然能嚴(yán)格的解決存儲(chǔ)訪問次序問題,但是由于過于嚴(yán)厲,會(huì)產(chǎn)生巨大的性能開銷。因?yàn)楫?dāng)某一個(gè)寫入操作未執(zhí)行完,其它的操作可能會(huì)全部暫停下來。所以現(xiàn)在大部分處理器都不會(huì)實(shí)現(xiàn)順序一致性,而是實(shí)現(xiàn)一些較為松弛的一致性模型。

下面將根據(jù)從強(qiáng)到弱的限制程度排序,列舉幾種典型的存儲(chǔ)器模型:

1. 順序一致性模型(sequential consistency,SC)

也稱為強(qiáng)定序模型,從施加的限制來看,該模型下load/store是順序的訪問存儲(chǔ)器。每個(gè)處理器都按照程序順序來執(zhí)行程序,即便訪問的是不同存儲(chǔ)器地址,也不能改變?cè)L問順序。從全局看,每個(gè)存儲(chǔ)器寫操作都需要能被系統(tǒng)中所有的處理器同時(shí)觀測(cè)到,同一時(shí)刻只有一個(gè)處理器和存儲(chǔ)系統(tǒng)相連,因此對(duì)memory的訪問時(shí)原子化的,串行化的。順序一致性模型簡(jiǎn)單直觀,但限制了CPU硬件和編譯器的優(yōu)化,影響了整個(gè)系統(tǒng)的性能。

2. 完全存儲(chǔ)定序模型(Total Store Order,TSO)

由于處理器主頻和存儲(chǔ)器頻率相差較大,系統(tǒng)設(shè)計(jì)人員通常會(huì)在CPU中增加存儲(chǔ)緩沖區(qū)(store buffer),它的作用是為store指令提供緩沖,使得處理器不用等待存儲(chǔ)器的響應(yīng)。但是由于存儲(chǔ)緩沖的存在,一些在store之后的load指令可能會(huì)越過該指令提前執(zhí)行,那一個(gè)core的store-load操作通常會(huì)被其他core看成亂序執(zhí)行了,變成load-store了。因此在在該模型下,訪存操作的四種組合store-store,store-load,load-store,load-load中,只有store-load存在亂序。store操作在store_buffer中順序執(zhí)行。load同樣按順序執(zhí)行,但可穿插到多個(gè)store執(zhí)行過程中

3. 部分存儲(chǔ)定序模型(Part Store Order,PSO)

系統(tǒng)設(shè)計(jì)人員并不滿足TSO模型帶來的性能提升,于是繼續(xù)在TSO的基礎(chǔ)上放松訪問內(nèi)存訪問限制,允許處理器以非FIFO來處理store buffer緩沖區(qū)的指令,處理器只保證地址相關(guān)指令在store buffer中以FIFO的形式進(jìn)行處理,而其它的則可以亂序處理。

4. 處理器一致性模型(Processor Consistency,PC)

該模型比順序一致性弱。在SC中,要維持每一條load/store指令與后續(xù)load/store指令的次序。在處理器一致性模型中,則放松了較早的store指令和較晚的load指令之間的次序。當(dāng)一條store指令還未被執(zhí)行時(shí),允許一條較晚的load指令像高速緩存發(fā)出請(qǐng)求甚至結(jié)束。這一點(diǎn)的重要性在于,store指令可以在寫緩沖區(qū)排隊(duì)并在稍晚執(zhí)行,同時(shí),load指令不需要等待較早的store指令結(jié)束就可以訪問高速緩存,所以降低了load指令的時(shí)延。

5. 弱序一致性模型(Weak Order Consistency,WO)

該模型的主要思想是把同步操作和普通訪存操作區(qū)分開來,兩個(gè)同步操作之間的訪存操作的順序不受影響,依然遵循指令程序順序。WO模型利用了兩個(gè)假設(shè):程序是適當(dāng)同步的;程序員正確的向硬件表示哪些load和store是起到同步訪問作用的。

程序員必須用硬件可識(shí)別的同步操作把對(duì)可寫共享單元的訪問保護(hù)起來,以保證多個(gè)處理器對(duì)該共享單元的訪問是互斥的。該模型增加了程序員的負(fù)擔(dān),但能有效提高性能。目前,很多的商業(yè)化處理器實(shí)現(xiàn)的就是WO,比如ARM。

6. 釋放一致性模型(Release Consistency,RC)

該模型是對(duì)弱一致性模型的改進(jìn),它把同步操作進(jìn)一步分成獲取操作(acquire)和釋放操作(release)。acquire用于獲取對(duì)某些共享存儲(chǔ)單元的獨(dú)占性訪問權(quán);release用于釋放該訪問權(quán)。執(zhí)行的順序?yàn)椋篴cquire-> load/store ->release。

與WO類似,RC允許編譯器自由改變load指令和store指令的次序,但是不允許它們?cè)竭^一個(gè)獲取同步向前移動(dòng),也不允許它們?cè)竭^一個(gè)釋放同步向后移動(dòng)。與WO不同的是,單靠指令的操作碼不容易表示同步訪問。 通常來說,存儲(chǔ)一致性模型對(duì)訪存事件次序施加的限制越弱,越有利于提高性能,但增加了編程難度。

且限制越強(qiáng)的存儲(chǔ)器模型程序可以在限制較弱的存儲(chǔ)器模型上運(yùn)行,很少會(huì)導(dǎo)致錯(cuò)誤。 關(guān)于存儲(chǔ)器一致性模型,有很多的學(xué)術(shù)文章和書籍,我所了解的也就是一點(diǎn)皮毛。其實(shí),今天講的這些,都是基礎(chǔ)知識(shí)。

審核編輯:劉清

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

    關(guān)注

    68

    文章

    19034

    瀏覽量

    228450
  • ARM
    ARM
    +關(guān)注

    關(guān)注

    134

    文章

    9006

    瀏覽量

    366035
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7402

    瀏覽量

    163393
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    384

    瀏覽量

    43461
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1607

    瀏覽量

    48977

原文標(biāo)題:技術(shù)分享 | ARM系列 - - 存儲(chǔ)模型(一)

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

    這樣提高CPU的并發(fā)能力。 內(nèi)存一致性模型(memory consistency model)就是用來描述多線程對(duì)共享存儲(chǔ)器的訪問行為,在不同的內(nèi)存一致性
    的頭像 發(fā)表于 09-21 13:57 ?3050次閱讀
    多種內(nèi)存<b class='flag-5'>一致性</b><b class='flag-5'>模型</b>的特性分析

    ARM系列 - - 存儲(chǔ)模型

    的問題,而對(duì)于不同地址的訪問并不是緩存一致性協(xié)議所要考慮的問題。存儲(chǔ)一致性問題在任何具有或不具有高速緩存的系統(tǒng)中都存在,雖然高速緩存的存在有可能進(jìn)步加劇
    發(fā)表于 04-11 15:42

    順序一致性和TSO一致性分別是什么?SC和TSO到底哪個(gè)好?

    更為常用,而在TSO內(nèi)存一致性模型中很少用,因?yàn)閮H僅store-load的亂序在大多數(shù)情況下都是沒有問題的。到這里,我們已經(jīng)介紹了順序一致性和TSO
    發(fā)表于 07-19 14:54

    一致性規(guī)劃研究

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

    CMP中Cache一致性協(xié)議的驗(yàn)證

    CMP是處理器體系結(jié)構(gòu)發(fā)展的個(gè)重要方向,其中Cache一致性問題的驗(yàn)證是CMP設(shè)計(jì)中的項(xiàng)重要課題?;贛ESI一致性協(xié)議,本文建立了CMP的Cache
    發(fā)表于 07-20 14:18 ?38次下載

    TTCN在TD-SCDMA終端RRM一致性測(cè)試系統(tǒng)中的應(yīng)用

    TD-SCDMA終端一致性測(cè)試的個(gè)重要內(nèi)容就是進(jìn)行RRM一致性測(cè)試,這對(duì)終端研發(fā)和認(rèn)證有著重要的意義。本文首先介紹了TTCN(樹表結(jié)合表示法)一致
    發(fā)表于 09-15 17:12 ?24次下載

    加速器一致性接口

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

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

    現(xiàn)代晶體管技術(shù)在單芯片上集成多個(gè)處理器已經(jīng)成為現(xiàn)實(shí).近年來,隨著多核處理器集成核數(shù)的不斷增加,高速緩存的一致性問題凸顯出來,已成為多核處理器的性能瓶頸之,亟待解決.介紹了片上多核處理器一致性
    發(fā)表于 12-30 15:04 ?0次下載
    Cache<b class='flag-5'>一致性</b>協(xié)議優(yōu)化研究

    優(yōu)化模型的乘偏好關(guān)系一致性改進(jìn)

    針對(duì)乘偏好信息下的決策問題,引入乘偏好關(guān)系的有序一致性、滿意一致性以及一致性指數(shù)等概念,建立以偏差變量最小化為目標(biāo)函數(shù)的優(yōu)化
    發(fā)表于 03-20 17:28 ?0次下載

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

    的創(chuàng)新片上網(wǎng)絡(luò)(NoC)互連知識(shí)產(chǎn)權(quán)(IP)產(chǎn)品的全球領(lǐng)先供應(yīng)商,宣布,MobileEye已購(gòu)買Arteris IP 的NCore緩存一致性互連產(chǎn)品、flexNOC互連產(chǎn)品以及NCore和flexNOC Resilience軟
    的頭像 發(fā)表于 05-09 17:13 ?3147次閱讀

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

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

    如何保證緩存一致性

    “ 本文的參考文章是2022年HOT 34上Intel Rob Blakenship關(guān)于CXL緩存一致性介紹?!?/div>
    的頭像 發(fā)表于 10-19 17:42 ?956次閱讀
    如何保證緩存<b class='flag-5'>一致性</b>

    分布式系統(tǒng)中常見的一致性模型

    什么是一致性模型? 在分布式系統(tǒng)中,C(一致性) 和 A(可用)始終存在矛盾。若想保證可用,就必須通過復(fù)制、分片等方式冗余
    的頭像 發(fā)表于 11-10 11:33 ?781次閱讀
    分布式系統(tǒng)中常見的<b class='flag-5'>一致性</b><b class='flag-5'>模型</b>

    DDR一致性測(cè)試的操作步驟

    介紹DDR一致性的操作步驟。 1. 準(zhǔn)備測(cè)試環(huán)境:首先,需要準(zhǔn)備好測(cè)試環(huán)境。這包括臺(tái)DDR一致性測(cè)試設(shè)備,該設(shè)備通常是專門為DDR測(cè)試設(shè)計(jì)的高性能工具。還需要
    的頭像 發(fā)表于 02-01 16:24 ?1204次閱讀

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別

    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用一致性與崩潰一致性的區(qū)別 在數(shù)字化時(shí)代,數(shù)據(jù)備份成為了企業(yè)信息安全的核心環(huán)節(jié)。但在備份過程中,兩個(gè)關(guān)鍵概念——應(yīng)用一致性和崩潰一致性,常常被誤解或混淆。
    的頭像 發(fā)表于 03-11 11:29 ?747次閱讀
    深入理解數(shù)據(jù)備份的關(guān)鍵原則:應(yīng)用<b class='flag-5'>一致性</b>與崩潰<b class='flag-5'>一致性</b>的區(qū)別