加入星計劃,您可以享受以下權益:

  • 創(chuàng)作內容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
    • 1、前言
  • 相關推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

RISC-V筆記——重疊地址排序

10/17 09:06
1282
閱讀需 4 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1、前言

RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要記錄下preserved program order(保留程序順序)中的Overlapping-Address Orderings(重疊地址排序)

2、重疊地址排序

a操作在程序順序中先于b操作,a和b都訪問常規(guī)主存,不包含I/O區(qū)域,如果存在以下任何一個條件,那么a操作和b操作在全局內存順序中的順序也不會變。

b是store,且a和b訪問重疊的內存地址。

a和b是load,x是a和b同時讀取的字節(jié),且在a和b程序順序之間沒有store操作訪問x,a和b放回x的值由不同的內存操作寫入。

a是由AMO或SC指令生成的,b是一個load,b返回由a寫入的值。

關于第一點,load或store操作永遠不能與后面訪問重疊內存位置的store操作進行重排序。從微體系架構的角度來看,一般來說,如果投機是無效的,則很難或不可能撤回投機重排序的store操作,因此模型直接不允許這種行為。不過另一方面,store可以forward數(shù)據(jù)給后面的load操作,這種情況通常發(fā)生在store的數(shù)據(jù)暫時存放在store buffer里,之后load命中store buffer,就直接load數(shù)據(jù)走了。

關于第二點,其實就是要求同一個hart中,younger的load返回的值不能比同地址older load返回的值更老。這通常被稱為“CoRR”(Coherence for Read-Read pairs),或者SC模型(sequential consistency)的要求一部分, RVWMO需要強制執(zhí)行CoRR排序。如下代碼所示,不管程序如何執(zhí)行,(f)返回的值肯定比(d)的新。

關于第三點,其實就是AMO或成功的SC必須要全局可見后,才能將值返回給后續(xù)的load操作。

這三個原則也適用于內存訪問之間只有部分重疊的情況,而且基地址也不一定相同的。例如,當使用不同大小的操作訪問同一個地址區(qū)間時,就可以發(fā)生這種情況。當使用非對齊的內存訪問時,重疊地址的規(guī)則可以獨立地應用于每個地址的內存訪問。

相關推薦

電子產(chǎn)業(yè)圖譜

分享Arm architecture, AMBA, 芯片驗證, 腳本, EDA, Linux等知識。

微信公眾號