加入星計劃,您可以享受以下權(quán)益:

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

RISC-V筆記——Pipeline依賴

10/21 08:40
139
閱讀需 3 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

1、前言

RISC-V的RVWMO模型主要包含了preserved program order、load value axiom、atomicity axiom、progress axiom和I/O Ordering。今天主要記錄下preserved program order(保留程序順序)中的Pipeline Dependencies(Pipeline依賴)。

2、Pipeline依賴

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

b是load,在a和b程序順序之間存在一個store m,m的地址或數(shù)據(jù)依賴于a,b返回的值是m寫的值。

b是store,在a和b程序順序之間存在一些指令m,m的地址依賴于a。

這兩點幾乎在所有真實處理器pipeline上都存在的。

關(guān)于第一點:是想表明如果old的store的地址或數(shù)據(jù)還未知的話,load是不能從store轉(zhuǎn)發(fā)數(shù)據(jù)的。也就是必須等a確定執(zhí)行完之后,得到了m的地址或數(shù)據(jù)了,才會執(zhí)行b,所以a和b的全局順序肯定是保證的。如下圖所示。

(f)在(e)的數(shù)據(jù)確定之前是不能被執(zhí)行的,因為(f)必須返回(e)寫的值,并且在(d)有機會執(zhí)行之前,舊的值不能被(e)的回寫所破壞,因此,(f)將不會在(d)之前執(zhí)行,也就是它們倆的順序是固定的。

關(guān)于第二點:它與第一點規(guī)則有著類似的觀察:在可能訪問同一地址的所有older load被執(zhí)行之前,store不能在memory中確定執(zhí)行。因為store如果提前執(zhí)行的話,那么舊的值被覆蓋了,那么older的load就無法讀取到了。同樣的,除非知道前面的指令不會由于地址解析失敗而導致異常,都則通常不能執(zhí)行store操作,從這個意義上說,這個一點是之前語法依賴里的控制依賴的某種特殊情況。如下圖所示。

在(e)的地址被解析完之前,(f)不能執(zhí)行,因為結(jié)果可能是地址匹配,也就是a1等于0。因此,在(d)被執(zhí)行并確認(e)地址是否確實重疊之前,(f)不能被發(fā)到內(nèi)存去執(zhí)行的,也就是(d)和(f)的順序是固定的。

相關(guān)推薦

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

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

微信公眾號