計算機組成原理一書中指出流水線中有三種資料相關:寫后讀(RAW)相關、讀后寫(WAR)相關、寫后寫(WAW)相關,
那么這里該怎么理解這個A(after)呢?比如說第一條指令中讀取了X,第二條指令中要寫X,本來應該先讀再寫,但是由于流水線的存在,發生了第二條指令寫完后第一條才讀的情形,也就是發生了先寫后讀,稱之為讀后寫(WAR)相關,
這里的重點是:前后有兩條指令,分為三種情況:
- 第一條指令是讀操作,第二條指令是寫操作,那么只可能發生讀后寫(WAR)相關
- 第一條指令是寫操作,第二條指令是讀操作,那么只可能發生寫后讀(RAW)相關
- 第一條指令是寫操作,第二條指令也是寫操作,那么只可能發生寫后寫(WAW)相關
舉三個例子:
- LDA R1, A ???;M(A)->R1,M(A)是存盤單元
ADD R2, R1???;(R2)+(R1)->R2
分析:第一條指令向R1中寫入了新值,第二條指令讀取了R1中的值,先寫后讀,寫后讀(RAW)相關, - ADD R3, R4 ???;(R3)+(R4)->R3
MUL R4, R5 ???;(R4)*(R5)->R4
分析:第一條指令讀取了R4中的內容,第二條指令向R4中寫入了新值,先讀后寫,讀后寫(WAR)相關, - LDA R6, B ???;M(B)->R6,M(B)是存盤單元
MUL R6, R7 ???;(R6)*(R7)->R6
分析:第一條指令向R6中寫入了新值,第二條指令也向R6中寫入了新值,先寫后寫,寫后寫(WAW)相關,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/240845.html
標籤:其他
