當前位置:首頁 > 公眾號精選 > 全棧芯片工程師
[導(dǎo)讀]RISC-V 把原子指令劃分成單獨的指令擴展,命名為 'A'。該擴展中主要包含兩部分,一個 LR/SC 指令,即Load-Reserved/Store-Conditional,另外一個是 AMO 指令,RV32A 有兩種類型的原子操作:

RISC-V 把原子指令劃分成單獨的指令擴展,命名為 'A'。該擴展中主要包含兩部分,一個 LR/SC 指令,即Load-Reserved/Store-Conditional,另外一個是 AMO 指令,RV32A 有兩種類型的原子操作:

  • 內(nèi)存原子操作(AMO)

  • 加載保留/條件存儲(load reserved / store conditional)



內(nèi)存原子操作(AMO)


AMO是強大的“讀改寫”指令,該操作加載rs1指向的存儲器位置的內(nèi)容,并將其存儲在寄存器 rd 中,然后與rs2中的值進行二進制運算,并將結(jié)果保存回rd中,然后再寫到rs1指向的存儲器位置。

為什么要amo指令?

AMO指令要求整個讀出,計算,寫回必須為原子性質(zhì),就是讀出和寫回之間,該存儲器地址不能被其它進程訪問,通??偩€會鎖定,這樣就支持多核SoC系統(tǒng)。雖然 RISC-V B位操作擴展支持一系列復(fù)雜的位控制指令,但Atomic擴展并不只是針對多處理器系統(tǒng),它還有助于那些必要的位操作需求比較簡單的嵌入式系統(tǒng),從而精簡軟件指令代碼。

AMO自旋鎖的示例如下:


  • 先在寄存器t0中放入1(li t0, 1)。

  • load加載a0地址中的內(nèi)容到t1中,a0為鎖的地址。

  • 比較t1和0(bnez),t1不等于0則跳轉(zhuǎn)到again,t1不等于0說明鎖已經(jīng)被持有。

  • 把t0(1)放到a0表示的地址中,含義為上鎖,把a0處的原值放到t1中。

  • 比較t1和0(bnez),t1不等于0則跳轉(zhuǎn)到again,t1不等于0說明鎖已經(jīng)被持有。

  • 執(zhí)行關(guān)鍵區(qū)Critical section代碼。

  • 解鎖,把x0(0)的值賦給(a0),把(a0)的值交給x0(丟棄)。注意,RISC-V架構(gòu)規(guī)定x0固定為0值。


再次申明,AMO指令要求整個讀出,計算,寫回必須為原子性質(zhì),就是讀出和寫回之間,該存儲器地址不能被其它進程訪問,通??偩€會鎖定。AMO指令也可以支持釋放一致性模型,可以通過指令中的aq/rl位,來設(shè)置獲取或釋放屬性。

外還提供 AMO 指令的原因是,它們在多處理器系統(tǒng)中擁有比加載保留/條件存儲更好的可擴展性,例如可以用它們來實現(xiàn)高效的歸約。AMO 指令在于 I/O 設(shè)備通信時也很有用,可以實現(xiàn)總線事務(wù)的原子讀寫。這種原子性可以簡化設(shè)備驅(qū)動,并提高 I/O 性能。


LR/SC指令

雖然原子操作能解決多線程的競爭問題,但由于會將總線鎖住,導(dǎo)致其他核無法訪問總線,在核數(shù)眾多且頻發(fā)搶鎖的情況下,會造成總線長期被鎖的情況,因此引入一種新的互斥類型的存儲器訪問指令,即LR(load reserved)/SC(store conditional)指令。LR指令是Load Reserved的縮寫,讀取保留;SC指令是Store Conditional 的縮寫,條件存儲,即load reserved/store conditional。


LR指令是從內(nèi)存地址rs1中加載內(nèi)容到rd寄存器。然后在rs1對應(yīng)地址上設(shè)置保留標記(reservation set)。

SC指令在把rs2值寫到rs1地址之前,會先判斷rs1內(nèi)存地址是否有設(shè)置保留標記,如果設(shè)置了,則把rs2值正常寫入到rs1內(nèi)存地址里,并把rd寄存器設(shè)置成 0,表示保存成功。如果rs1內(nèi)存地址沒有設(shè)置保留標記,則不保存,并把rd寄存器設(shè)置成1表示保存失敗。不管成功還是失敗,SC指令都會把當前hart 保留的所有保留標記全部清除。一個例子如下:

  • 加載舊的值

  • 比較舊的值與 a1 是否相等

  • 相等則存入新的值

  • 如果存入失敗,重新嘗試

  • …比較-交換成功之后的代碼…

  • 比較-交換不成功

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉