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