流水線中的相關(guān)培訓(xùn)教程[3]
流水線中的相關(guān)培訓(xùn)教程[3]
(1) 寫(xiě)后讀相關(guān)(RAW:Read After Write) (命名規(guī)則) :j 的執(zhí)行要用到 i 的計(jì)算結(jié)果,當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),j 可能在 i 寫(xiě)入其計(jì)算結(jié)果之前就先行對(duì)保存該結(jié)果的寄存器進(jìn)行讀操作,從而得到錯(cuò)誤的值。這是最常見(jiàn)的一種數(shù)據(jù)相關(guān),圖3.3.6和圖3.3.7中采用定向技術(shù)消除的數(shù)據(jù)相關(guān)就屬于這種類型。
??? (2) 寫(xiě)后寫(xiě)相關(guān)(WAW:Write After Write ):j 和 i 的目的寄存器相同,當(dāng)它們?cè)诹魉€中重疊執(zhí)行時(shí),j 可能在 i 寫(xiě)入其計(jì)算結(jié)果之前就先行對(duì)該結(jié)果寄存器進(jìn)行寫(xiě)操作,從而導(dǎo)致寫(xiě)入順序錯(cuò)誤,在目的寄存器中留下的是 i 寫(xiě)入的值,而不是 j 寫(xiě)入的值。
??? 如果在流水線中不只一個(gè)段可以進(jìn)行寫(xiě)操作,或者當(dāng)流水線暫停某條指令時(shí),允許該指令之后的指令繼續(xù)前進(jìn),就可能會(huì)產(chǎn)生這種類型的數(shù)據(jù)相關(guān)。由于 DLX 流水線只在 WB 段寫(xiě)寄存器,所以在 DLX 流水線中執(zhí)行的指令不會(huì)發(fā)生這種類型的數(shù)據(jù)相關(guān)。如果我們對(duì)DLX流水線作如下改變,在DLX流水線中執(zhí)行的指令就有可能發(fā)生WAW相關(guān)。首先,將 ALU 運(yùn)算結(jié)果的寫(xiě)回操作移到 MEM 段進(jìn)行,因?yàn)檫@時(shí)計(jì)算結(jié)果已經(jīng)有效;其次,假設(shè)訪問(wèn)數(shù)據(jù)存儲(chǔ)器占兩個(gè)流水段。下面是兩條指令在修改后的 DLX 流水線中執(zhí)行的情況:
??? 可以看出,在修改后的 DLX 流水線中執(zhí)行上述指令序列后,寄存器 R1 中的內(nèi)容是第一條指令(LW)的寫(xiě)入結(jié)果,而不是 ADD 指令的寫(xiě)入結(jié)果。這就是由于 WAW 相關(guān)所帶來(lái)的錯(cuò)誤執(zhí)行結(jié)果。
??? (3) 讀后寫(xiě)相關(guān)(WAR:Write After Read ):j 可能在 i 讀取某個(gè)源寄存器的內(nèi)容之前就先對(duì)該寄存器進(jìn)行寫(xiě)操作,導(dǎo)致 i 后來(lái)讀取到的值是錯(cuò)誤的。
??? 由于 DLX 流水線在 ID 段完成所有的讀操作,在 WB 段完成所有的寫(xiě)操作。所以,在 DLX 流水線中不會(huì)產(chǎn)生這種類型的數(shù)據(jù)相關(guān)?;谏厦嫘薷暮蟮?DLX 流水線,考察下面兩條指令的執(zhí)行情況:
??? 如果 SW 指令在 MEM2 段的后半部分讀取寄存器 R2 的值,ADD 指令在 WB 段的前半部分將計(jì)算結(jié)果寫(xiě)回寄存器 R2,則 SW 將讀取錯(cuò)誤的值,將 ADD 指令的計(jì)算結(jié)果寫(xiě)入存儲(chǔ)器中。值得注意的是,在讀后讀(RAR: Read After Read)的情況下,不存在數(shù)據(jù)相關(guān)問(wèn)題。
4. 需要暫停的數(shù)據(jù)相關(guān)
??? 前面我們討論了如何利用定向技術(shù)消除由于數(shù)據(jù)相關(guān)帶來(lái)的暫停。但是,并不是所有數(shù)據(jù)相關(guān)帶來(lái)的暫停都可以通過(guò)定向技術(shù)消除。
??? 為了保證流水線正確執(zhí)行上述指令序列,可以設(shè)置一個(gè)稱為流水線互鎖(pipeline interlock)的功能部件。一旦流水線互鎖檢測(cè)到上述數(shù)據(jù)相關(guān),流水線暫停執(zhí)行LW指令之后的所有指令,直到能夠通過(guò)定向解決該數(shù)據(jù)相關(guān)為止。
圖3.3.12為流水線互鎖插入暫停后流水線數(shù)據(jù)通路;
??? 圖3.3.13是 加入暫停前后的流水線時(shí)空?qǐng)D。
?
非常好我支持^.^
(2) 100%
不好我反對(duì)
(0) 0%
相關(guān)閱讀:
- [電子說(shuō)] 多周期cpu的設(shè)計(jì)思想是什么?怎樣實(shí)現(xiàn)cpu多流水線? 2023-10-19
- [電子說(shuō)] 單周期cpu和多周期cpu的區(qū)別 多周期cpu和流水線的區(qū)別 2023-10-19
- [電子說(shuō)] 大模型時(shí)代,如何搭建數(shù)據(jù)的“智能化流水線”? 2023-10-16
- [電子說(shuō)] ARMv7-A架構(gòu)學(xué)習(xí)筆記:通用寄存器與流水線 2023-10-16
- [PCB設(shè)計(jì)] 簡(jiǎn)單平行式結(jié)構(gòu)貼片機(jī) 2023-09-26
- [模擬技術(shù)] 流水線ADC結(jié)構(gòu)解析 流水線ADC和其它ADC的比較 2023-09-26
- [電子說(shuō)] 流水線ADC的內(nèi)部結(jié)構(gòu)和工作原理是什么 2023-09-26
- [電子說(shuō)] 流水線Andon安燈呼叫系統(tǒng)解決方案及應(yīng)用背景 2023-09-25
( 發(fā)表人:admin )