您好,歡迎來(lái)電子發(fā)燒友網(wǎng)! ,新用戶?[免費(fèi)注冊(cè)]

您的位置:電子發(fā)燒友網(wǎng)>電子百科>電腦硬件>臺(tái)式機(jī)>

流水線中的相關(guān)培訓(xùn)教程[3]

2010年04月13日 16:02 srfitnesspt.com 作者:佚名 用戶評(píng)論(0
關(guān)鍵字:流水線(23603)

流水線中的相關(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%

( 發(fā)表人:admin )

      發(fā)表評(píng)論

      用戶評(píng)論
      評(píng)價(jià):好評(píng)中評(píng)差評(píng)

      發(fā)表評(píng)論,獲取積分! 請(qǐng)遵守相關(guān)規(guī)定!

      ?