• 正文
    • 1、前言
    • 2、Pipeline依賴(lài)
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

RISC-V筆記——Pipeline依賴(lài)

2024/10/21
1885
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

1、前言

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

2、Pipeline依賴(lài)

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

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

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

這兩點(diǎn)幾乎在所有真實(shí)處理器pipeline上都存在的。

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

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

關(guān)于第二點(diǎn):它與第一點(diǎn)規(guī)則有著類(lèi)似的觀察:在可能訪問(wèn)同一地址的所有older load被執(zhí)行之前,store不能在memory中確定執(zhí)行。因?yàn)閟tore如果提前執(zhí)行的話(huà),那么舊的值被覆蓋了,那么older的load就無(wú)法讀取到了。同樣的,除非知道前面的指令不會(huì)由于地址解析失敗而導(dǎo)致異常,都則通常不能執(zhí)行store操作,從這個(gè)意義上說(shuō),這個(gè)一點(diǎn)是之前語(yǔ)法依賴(lài)?yán)锏目刂埔蕾?lài)的某種特殊情況。如下圖所示。

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

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶(hù)資源
  • 寫(xiě)文章/發(fā)需求
立即登錄