前面我們分享了中斷及ARM體系中對(duì)中斷的處理、GIC-600以及redistributor的相關(guān)知識(shí),本篇將介紹ARM存儲(chǔ)一致性模型的相關(guān)知識(shí)。
按照慣例,先講基礎(chǔ)原理,再說(shuō)ARM的相關(guān)部分。
今天要說(shuō)的這個(gè)是存儲(chǔ)一致性(memory consistency),不要跟前面講過(guò)緩存一致性(cache coherence)混淆了。緩存一致性協(xié)議解決的是對(duì)單個(gè)存儲(chǔ)器地址的訪問(wèn)之間如何排序的問(wèn)題,而對(duì)于不同地址的訪問(wèn)并不是緩存一致性協(xié)議所要考慮的問(wèn)題。存儲(chǔ)一致性問(wèn)題在任何具有或不具有高速緩存的系統(tǒng)中都存在,雖然高速緩存的存在有可能進(jìn)一步加劇存儲(chǔ)一致性問(wèn)題。
存儲(chǔ)器模型(memory model)又稱(chēng)為存儲(chǔ)一致性模型。用于定義系統(tǒng)中對(duì)存儲(chǔ)器訪問(wèn)需要遵守的原則,只要軟件和硬件都遵循該原則,就能保證多核程序能運(yùn)行得到確切的結(jié)果。 對(duì)于程序員來(lái)說(shuō),通常直覺(jué)上會(huì)隱式地假定存儲(chǔ)器操作是按一定次序的。來(lái)看下面的例子,假定有兩個(gè)線程P0和P1。
在線程P0中,執(zhí)行S1,賦值data為5;執(zhí)行S2,賦值dataIsReady為1。在線程P1中,等待dataIsReady這個(gè)變量變?yōu)?,然后把data賦值給其它變量。在我們直觀看來(lái),S1先于S2執(zhí)行,通過(guò)dataIsReady來(lái)阻塞P1的S3執(zhí)行,那么執(zhí)行S4的時(shí)候,拿到的data一定是5。
實(shí)際上,未必是這樣,可能S2的結(jié)果早于S1傳播到P1,S4拿到的data就有可能是舊值,而不是5! 在我們的直觀感覺(jué)里,對(duì)于變量的寫(xiě)操作會(huì)即時(shí)傳播,或者說(shuō)是原子性的,即P0的寫(xiě)操作必須以不能分割的步驟傳播到P1。我們把關(guān)于存儲(chǔ)器訪問(wèn)次序的隱式期望表示為:來(lái)自一個(gè)處理器的存儲(chǔ)器訪問(wèn)應(yīng)該以程序的次序執(zhí)行,并且每個(gè)訪問(wèn)的執(zhí)行必須是原子性的。
這樣一種期望被正式定義為順序一致性(SC)模型。順序一致性模型雖然能?chē)?yán)格的解決存儲(chǔ)訪問(wèn)次序問(wèn)題,但是由于過(guò)于嚴(yán)厲,會(huì)產(chǎn)生巨大的性能開(kāi)銷(xiāo)。因?yàn)楫?dāng)某一個(gè)寫(xiě)入操作未執(zhí)行完,其它的操作可能會(huì)全部暫停下來(lái)。所以現(xiàn)在大部分處理器都不會(huì)實(shí)現(xiàn)順序一致性,而是實(shí)現(xiàn)一些較為松弛的一致性模型。
下面將根據(jù)從強(qiáng)到弱的限制程度排序,列舉幾種典型的存儲(chǔ)器模型:
1. 順序一致性模型(sequential consistency,SC)
也稱(chēng)為強(qiáng)定序模型,從施加的限制來(lái)看,該模型下load/store是順序的訪問(wèn)存儲(chǔ)器。每個(gè)處理器都按照程序順序來(lái)執(zhí)行程序,即便訪問(wèn)的是不同存儲(chǔ)器地址,也不能改變?cè)L問(wèn)順序。從全局看,每個(gè)存儲(chǔ)器寫(xiě)操作都需要能被系統(tǒng)中所有的處理器同時(shí)觀測(cè)到,同一時(shí)刻只有一個(gè)處理器和存儲(chǔ)系統(tǒng)相連,因此對(duì)memory的訪問(wèn)時(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ì)越過(guò)該指令提前執(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í)行過(guò)程中
3. 部分存儲(chǔ)定序模型(Part Store Order,PSO)
系統(tǒng)設(shè)計(jì)人員并不滿(mǎn)足TSO模型帶來(lái)的性能提升,于是繼續(xù)在TSO的基礎(chǔ)上放松訪問(wèn)內(nèi)存訪問(wèn)限制,允許處理器以非FIFO來(lái)處理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指令可以在寫(xiě)緩沖區(qū)排隊(duì)并在稍晚執(zhí)行,同時(shí),load指令不需要等待較早的store指令結(jié)束就可以訪問(wèn)高速緩存,所以降低了load指令的時(shí)延。
5. 弱序一致性模型(Weak Order Consistency,WO)
該模型的主要思想是把同步操作和普通訪存操作區(qū)分開(kāi)來(lái),兩個(gè)同步操作之間的訪存操作的順序不受影響,依然遵循指令程序順序。WO模型利用了兩個(gè)假設(shè):程序是適當(dāng)同步的;程序員正確的向硬件表示哪些load和store是起到同步訪問(wèn)作用的。
程序員必須用硬件可識(shí)別的同步操作把對(duì)可寫(xiě)共享單元的訪問(wèn)保護(hù)起來(lái),以保證多個(gè)處理器對(duì)該共享單元的訪問(wèn)是互斥的。該模型增加了程序員的負(fù)擔(dān),但能有效提高性能。目前,很多的商業(yè)化處理器實(shí)現(xiàn)的就是WO,比如ARM。
6. 釋放一致性模型(Release Consistency,RC)
該模型是對(duì)弱一致性模型的改進(jìn),它把同步操作進(jìn)一步分成獲取操作(acquire)和釋放操作(release)。acquire用于獲取對(duì)某些共享存儲(chǔ)單元的獨(dú)占性訪問(wèn)權(quán);release用于釋放該訪問(wèn)權(quán)。執(zhí)行的順序?yàn)椋篴cquire-> load/store ->release。
與WO類(lèi)似,RC允許編譯器自由改變load指令和store指令的次序,但是不允許它們?cè)竭^(guò)一個(gè)獲取同步向前移動(dòng),也不允許它們?cè)竭^(guò)一個(gè)釋放同步向后移動(dòng)。與WO不同的是,單靠指令的操作碼不容易表示同步訪問(wèn)。 通常來(lái)說(shuō),存儲(chǔ)一致性模型對(duì)訪存事件次序施加的限制越弱,越有利于提高性能,但增加了編程難度。
且限制越強(qiáng)的存儲(chǔ)器模型程序可以在限制較弱的存儲(chǔ)器模型上運(yùn)行,很少會(huì)導(dǎo)致錯(cuò)誤。 關(guān)于存儲(chǔ)器一致性模型,有很多的學(xué)術(shù)文章和書(shū)籍,我所了解的也就是一點(diǎn)皮毛。其實(shí),今天講的這些,都是基礎(chǔ)知識(shí)。
審核編輯:劉清
-
處理器
+關(guān)注
關(guān)注
68文章
19103瀏覽量
228826 -
ARM
+關(guān)注
關(guān)注
134文章
9029瀏覽量
366499 -
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7435瀏覽量
163525 -
fifo
+關(guān)注
關(guān)注
3文章
386瀏覽量
43496 -
編譯器
+關(guān)注
關(guān)注
1文章
1617瀏覽量
49017
原文標(biāo)題:技術(shù)分享 | ARM系列 - - 存儲(chǔ)模型(一)
文章出處:【微信號(hào):Ithingedu,微信公眾號(hào):安芯教育科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論