1989年推出的i486處理器引入了五級流水線。這時,在CPU中不再僅運行一條指令,每一級流水線在同一時刻都運行著不同的指令。這個設(shè)計使得i486比同頻率的386處理器性能提升了不止一倍。五級流水線中的取指階段將指令從指令緩存中取出(i486中的指令緩存為8KB);第二級為譯碼階段,將取出的指令翻譯為具體的功能操作;第三級為轉(zhuǎn)址階段,用來將內(nèi)存地址和偏移進行轉(zhuǎn)換;第四級為執(zhí)行階段,指令在該階段真正執(zhí)行運算;第五級為退出階段,運算的結(jié)果被寫回寄存器或者內(nèi)存。由于處理器同時運行了多條指令,大大提升了程序運行的性能。
處理器一般由如下功能單元組成:
取指單元
譯碼單元
執(zhí)行單元
Load/store單元(load用于從內(nèi)存中取數(shù)據(jù),而STORE用于存數(shù)據(jù)到內(nèi)存)
例外/中斷單元
電源管理單元
流水線通常由取指、譯碼、執(zhí)行及Load/Store等單元組成。各單元按圖所示的幾個步驟循環(huán)重復(fù)自身工作。
流水線的含義:
與工廠生產(chǎn)線類似,將一件工作分成若干個固定的工序進行。
cpu流水線技術(shù)是一種將指令分解為多步,并讓不同指令的各步操作重疊,從而實現(xiàn)幾條指令并行處理,以加速程序運行過程的技術(shù)。指令的每步有各自獨立的電路來處理,每完成一步,就進到下一步,而前一步則處理后續(xù)指令。(原理和生產(chǎn)流水線一樣)
CPU指令流水線
根據(jù)之前描述的基礎(chǔ),指令進入流水線,通過流水線處理,從流水線出來的過程,對于我們程序員來說,是比較直觀的。
I486擁有五級流水線。分別是:取指(Fetch),譯碼(D1, main decode),轉(zhuǎn)址(D2, translate),執(zhí)行(EX, execute),寫回(WB)。某個指令可以在流水線的任何一級。
但是這樣的流水線有一個明顯的缺陷。對于下面的指令代碼,它們的功能是將兩個變量的內(nèi)容進行交換。
1 2 3 |
XOR a, b XOR b, a XOR a, b |
從8086直到386處理器都沒有流水線。處理器一次只能執(zhí)行一條指令。再這樣的架構(gòu)下,上面的代碼執(zhí)行并不會存在問題。
但是i486處理器是首個擁有流水線的x86處理器,它執(zhí)行上面的代碼會發(fā)生什么呢?當你一下去觀察很多指令在流水線中運行,你會覺得混亂,所以你需要回頭參考上面的圖。
1、第一步是第一條指令進入取指階段;
2、然后在第二步第一條指令進入譯碼階段,同時第二條指令進入取指階段;
3、第三步第一條指令進入轉(zhuǎn)址階段,第二條指令進入譯碼階段,第三條指令進入取指階段。
4、但是在第四步會出現(xiàn)問題,第一條指令會進入執(zhí)行階段,而其他指令卻不能繼續(xù)向前移動。
5、第二條xor指令需要第一條xor指令計算的結(jié)果a,但是直到第一條指令執(zhí)行完成才會寫回。
所以流水線的其他指令就會在當前流水級等待直到第一條指令的執(zhí)行和寫回階段完成。第二條指令會等待第一條指令完成才能進入流水線下一級,同樣第三條指令也要等待第二條指令完成。
這個現(xiàn)象被稱為流水線阻塞或者流水線氣泡。
常用概念:
1、流水線級數(shù):流水線的節(jié)拍數(shù)。
2、吞吐率:單位時間內(nèi)流水線能處理的任務(wù)數(shù)量。
3、最大吞吐率:流水線達到不間斷流水的穩(wěn)定狀態(tài)后可獲得的吞吐率。
4、加速比:流水方式的工作速度與等效的順序工作方式時間的比值。
流水線指標:
1、流水技術(shù)無助于減少單個任務(wù)的處理延遲(latency),但有助于提高整體工作負載的吞吐率
2、多個不同任務(wù)同時操作, 使用不同資源
3、潛在加速比= 流水線級數(shù)
4、流水線的速率受限于最慢的流水段
5、流水段的執(zhí)行時間如果不均衡,那么加速比就會降低
6、開始填充流水線的時間和最后排放流水線的時間降低加速比
低功耗嵌入式領(lǐng)域的ARM7就是采用3級流水線結(jié)構(gòu)。
超流水
超流水線技術(shù)是通過細化的流水,提高主頻。使得機器在一個周期內(nèi)完成一個甚至多個操作,其實質(zhì)是用空間換取時間。
超流水處理器是相對于基準處理器而言的,一般cpu的流水線是基本的指令預(yù)取,譯碼,執(zhí)行和寫回結(jié)果四級。超流水線(superpiplined)是指某型CPU內(nèi)部的流水線超過通常的5~6步以上,例如Pentium pro的流水線就長達14步。將流水線設(shè)計的步(級)數(shù)越多,其完成一條指令的速度越快,因此才能適應(yīng)工作主頻更高的CPU。這一點我們可以用日常事例來說明,比如有5個人接力傳送木頭(對應(yīng)一個5級的流水線),超流水是說細化該流水過程,即由10個人接力(此時為10級流水),顯然完成全部任務(wù)的速度會快。相當于***的一句話:人多力量大(效率高)。
超標量
超標量是指在CPU中有一條以上的流水線,并且每時鐘周期內(nèi)可以完成一條以上的指令,這種設(shè)計就叫超標量技術(shù)。 其實質(zhì)是以空間換取時間。
CPU架構(gòu)是指在一顆處理器內(nèi)核中實行了指令級并行的一類并行運算。這種技術(shù)能夠在相同的CPU主頻下實現(xiàn)更高的CPU吞吐率(throughput)。
-
處理器
+關(guān)注
關(guān)注
68文章
19817瀏覽量
233666 -
cpu
+關(guān)注
關(guān)注
68文章
11044瀏覽量
216089 -
流水線
+關(guān)注
關(guān)注
0文章
124瀏覽量
26506
原文標題:CPU的流水線
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
FPGA中的流水線設(shè)計
ARM架構(gòu)系列中的流水線設(shè)計
現(xiàn)代RISC中的流水線技術(shù)
流水線操作,應(yīng)用處理器,應(yīng)用處理器的結(jié)構(gòu)和原理是什么?
CPU流水線的定義
DSP設(shè)計中的流水線數(shù)據(jù)相關(guān)問題解析

處理器系列之CPU流水線科普

一文讀懂處理器流水線

評論