1989年推出的i486處理器引入了五級(jí)流水線。這時(shí),在CPU中不再僅運(yùn)行一條指令,每一級(jí)流水線在同一時(shí)刻都運(yùn)行著不同的指令。這個(gè)設(shè)計(jì)使得i486比同頻率的386處理器性能提升了不止一倍。五級(jí)流水線中的取指階段將指令從指令緩存中取出(i486中的指令緩存為8KB);第二級(jí)為譯碼階段,將取出的指令翻譯為具體的功能操作;第三級(jí)為轉(zhuǎn)址階段,用來將內(nèi)存地址和偏移進(jìn)行轉(zhuǎn)換;第四級(jí)為執(zhí)行階段,指令在該階段真正執(zhí)行運(yùn)算;第五級(jí)為退出階段,運(yùn)算的結(jié)果被寫回寄存器或者內(nèi)存。由于處理器同時(shí)運(yùn)行了多條指令,大大提升了程序運(yùn)行的性能。
處理器一般由如下功能單元組成:
取指單元
譯碼單元
執(zhí)行單元
Load/store單元(load用于從內(nèi)存中取數(shù)據(jù),而STORE用于存數(shù)據(jù)到內(nèi)存)
例外/中斷單元
電源管理單元
流水線通常由取指、譯碼、執(zhí)行及Load/Store等單元組成。各單元按圖所示的幾個(gè)步驟循環(huán)重復(fù)自身工作。
流水線的含義:
與工廠生產(chǎn)線類似,將一件工作分成若干個(gè)固定的工序進(jìn)行。
cpu流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實(shí)現(xiàn)幾條指令并行處理,以加速程序運(yùn)行過程的技術(shù)。指令的每步有各自獨(dú)立的電路來處理,每完成一步,就進(jìn)到下一步,而前一步則處理后續(xù)指令。(原理和生產(chǎn)流水線一樣)
CPU指令流水線
根據(jù)之前描述的基礎(chǔ),指令進(jìn)入流水線,通過流水線處理,從流水線出來的過程,對(duì)于我們程序員來說,是比較直觀的。
I486擁有五級(jí)流水線。分別是:取指(Fetch),譯碼(D1, main decode),轉(zhuǎn)址(D2, translate),執(zhí)行(EX, execute),寫回(WB)。某個(gè)指令可以在流水線的任何一級(jí)。
但是這樣的流水線有一個(gè)明顯的缺陷。對(duì)于下面的指令代碼,它們的功能是將兩個(gè)變量的內(nèi)容進(jìn)行交換。
1 XOR a, b
2 XOR b, a
3 XOR a, b
從8086直到386處理器都沒有流水線。處理器一次只能執(zhí)行一條指令。再這樣的架構(gòu)下,上面的代碼執(zhí)行并不會(huì)存在問題。
但是i486處理器是首個(gè)擁有流水線的x86處理器,它執(zhí)行上面的代碼會(huì)發(fā)生什么呢?當(dāng)你一下去觀察很多指令在流水線中運(yùn)行,你會(huì)覺得混亂,所以你需要回頭參考上面的圖。
1、第一步是第一條指令進(jìn)入取指階段;
2、然后在第二步第一條指令進(jìn)入譯碼階段,同時(shí)第二條指令進(jìn)入取指階段;
3、第三步第一條指令進(jìn)入轉(zhuǎn)址階段,第二條指令進(jìn)入譯碼階段,第三條指令進(jìn)入取指階段。
4、但是在第四步會(huì)出現(xiàn)問題,第一條指令會(huì)進(jìn)入執(zhí)行階段,而其他指令卻不能繼續(xù)向前移動(dòng)。
5、第二條xor指令需要第一條xor指令計(jì)算的結(jié)果a,但是直到第一條指令執(zhí)行完成才會(huì)寫回。
所以流水線的其他指令就會(huì)在當(dāng)前流水級(jí)等待直到第一條指令的執(zhí)行和寫回階段完成。第二條指令會(huì)等待第一條指令完成才能進(jìn)入流水線下一級(jí),同樣第三條指令也要等待第二條指令完成。
這個(gè)現(xiàn)象被稱為流水線阻塞或者流水線氣泡。
常用概念:
1、流水線級(jí)數(shù):流水線的節(jié)拍數(shù)。
2、吞吐率:單位時(shí)間內(nèi)流水線能處理的任務(wù)數(shù)量。
3、最大吞吐率:流水線達(dá)到不間斷流水的穩(wěn)定狀態(tài)后可獲得的吞吐率。
4、加速比:流水方式的工作速度與等效的順序工作方式時(shí)間的比值。
流水線指標(biāo):
1、流水技術(shù)無助于減少單個(gè)任務(wù)的處理延遲(latency),但有助于提高整體工作負(fù)載的吞吐率
2、多個(gè)不同任務(wù)同時(shí)操作, 使用不同資源
3、潛在加速比= 流水線級(jí)數(shù)
4、流水線的速率受限于最慢的流水段
5、流水段的執(zhí)行時(shí)間如果不均衡,那么加速比就會(huì)降低
6、開始填充流水線的時(shí)間和最后排放流水線的時(shí)間降低加速比
低功耗嵌入式領(lǐng)域的ARM7就是采用3級(jí)流水線結(jié)構(gòu)。
評(píng)論
查看更多