流水線
開放分類: 計(jì)算機(jī)技術(shù)、自動化、工業(yè)自動化、輸送機(jī)、輸送設(shè)備
流水線技術(shù)的由來
從前在英格蘭北部的一個小鎮(zhèn)里,有一個名叫艾薇的人開的魚和油煎土豆片商店。在店里面,每位顧客需要排隊(duì)才能點(diǎn)他(她)要的食物(比如油炸鱈魚,油煎土豆片,豌豆糊,和一杯茶)。然后每個顧客等著盤子裝滿后坐下來進(jìn)餐。
艾薇店里的油煎土豆片是小鎮(zhèn)中最好的,在每個集市日中午的時候,長長的隊(duì)伍都會排出商店。所以當(dāng)隔壁的木器店關(guān)門的時候,艾薇就把它租了下來并加了一倍的桌椅。但是這仍然不能容納下所有的顧客。外面排著的隊(duì)伍永遠(yuǎn)那么長,忙碌的小鎮(zhèn)居民都沒有時間坐下來等他們的茶變涼。
他們沒辦法再另外增加服務(wù)臺了;艾薇的鱈魚和伯特的油煎土豆片是店里面的主要賣點(diǎn)。但是后來他們想出了一個聰明的辦法。他們把柜臺加長,艾薇,伯特,狄俄尼索斯和瑪麗站成一排。顧客進(jìn)來的時候,艾薇先給他們一個盛著魚的盤子,然后伯特給加上油煎土豆片,狄俄尼索斯再給盛上豌豆糊,最后瑪麗倒茶并收錢。顧客們不停的走動;當(dāng)一個顧客拿到豌豆糊的同時,他后面的已經(jīng)拿到了油煎土豆片,再后面的一個已經(jīng)拿到了魚。一些窮苦的村民不吃豌豆糊-但這沒關(guān)系,這些顧客也能從狄俄尼索斯那里得個笑臉。
這樣一來隊(duì)伍變短了,不久以后,他們買下了對面的商店又增加了更多的餐位。這就是流水線。將那些具有重復(fù)性的工作分割成幾個串行部分,使得工作能在工人們中間移動,每個熟練工人只需要依次的將他的那部分工作做好就可以了。雖然每個顧客等待服務(wù)的總時間沒變,但是卻有四個顧客能同時接受服務(wù),這樣在集市日的午餐時段里能夠照顧過來的顧客數(shù)增加了三倍。
計(jì)算機(jī)流水線
計(jì)算機(jī)流水線是Intel首次在486芯片中開始使用的。流水線的工作方式就象工業(yè)生產(chǎn)上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然后將一條X86指令分成5—6步后再由這些電路單元分別執(zhí)行,這樣就能實(shí)現(xiàn)在一個CPU時鐘周期完成一條指令,因此提高CPU的運(yùn)算速度。經(jīng)典奔騰每條整數(shù)流水線都分為四級流水,即指令預(yù)取、譯碼、執(zhí)行、寫回結(jié)果,浮點(diǎn)流水又分為八級流水。
計(jì)算機(jī)流水線(Pipeline)技術(shù)是目前廣泛應(yīng)用于微處理芯片(CPU)中的一項(xiàng)關(guān)鍵技術(shù),計(jì)算機(jī)流水線技術(shù)指的是對CPU內(nèi)部的各條指令的執(zhí)行方式的一種形容,要了解它,就必須先了解指令及其執(zhí)行過程。
一、計(jì)算機(jī)指令及其執(zhí)行過程
計(jì)算機(jī)指令,就是告訴CPU要做什么事的一組特定的二進(jìn)制集合。如果我們將CPU比喻成一個加工廠,那么,一條指令就好比一張訂單,它引發(fā)了CPU_加工廠的一系列動作,最后分別得到了運(yùn)算結(jié)果和產(chǎn)品。那么,它們到底是怎樣工作的呢?首先,要有一個接收訂單的部門——CPU的取指令機(jī)構(gòu);其次,還要有完成訂單的車間——CPU的執(zhí)行指令機(jī)構(gòu)。在工廠中,一張訂單上的產(chǎn)品被分成了許多道工序,而指令亦在CPU中轉(zhuǎn)換成了許多條對應(yīng)的微操作,依次完成它們,就執(zhí)行完了整條指令。
二、執(zhí)行指令的方式及流水線技術(shù)
在低檔的CPU中,指令的執(zhí)行是串行的,簡單地說,就是執(zhí)行完了一條指令后、再執(zhí)行下一條指令,好比我們上面提到的那個加工廠在創(chuàng)業(yè)之初,只有一間小車間及孤軍奮戰(zhàn)的老板,那么,當(dāng)他接到一張訂單之后,他必然忙于完成第1張訂單,而沒有能力去接第2張訂單。這樣接訂單→完成訂單→接訂單→……取指令→執(zhí)行指令→取指令→……是一個串行的過程。后來,老板發(fā)現(xiàn)接受訂單不費(fèi)太多時間,而且他還有了一個幫工,他們可以相互獨(dú)立地工作,這樣,老板就在完成上張訂單產(chǎn)品的同時,接受下一張訂單的訂貨。這表現(xiàn)在CPU上就是取指令機(jī)構(gòu)與執(zhí)行指令機(jī)構(gòu)的分開,這樣從CPU整體來看,CPU在執(zhí)行上條指令的同時,又在并行地取下條指令。這在CPU技術(shù)上是一個質(zhì)的飛躍,它使得CPU從串行工作變?yōu)椴⑿泄ぷ鳎瑥亩哂辛肆魉€的雛型。
CPU在完成了上面這一步之后,剩下的就是如何提高并行處理能力的問題了,CPU的設(shè)計(jì)者們從加工廠的裝配線得到啟發(fā),將一條指令的執(zhí)行分解成了許多各不相同的多個工序_微指令,從而極大地簡化了指令的復(fù)雜度,簡化了邏輯設(shè)計(jì),提高了速度。在具有流水線技術(shù)的CPU中,上條指令剛執(zhí)行完第一道“工序”,馬上第二條指令就加人了流水線中,開始執(zhí)行。很明顯,這種流水線技術(shù)要求有多個執(zhí)行單元,這在X86芯片中均得到了實(shí)現(xiàn)。
通過上面的介紹,我們已經(jīng)了解到什么是流水線技術(shù),這雖不是一種創(chuàng)新,但在技術(shù)的實(shí)現(xiàn)上則是一大難關(guān),是CPU設(shè)計(jì)者對計(jì)算機(jī)發(fā)展的一大貢獻(xiàn)。
那么,P6芯片的超流水線又是怎么回事呢?
三、P6的超流水線簡介
超流水線(Super Pipeline)在本質(zhì)上仍為一種流水線技術(shù),但它做了以下的改進(jìn)。
1.流水線條數(shù)從奔騰的兩條增至三條,還有十一個獨(dú)立的執(zhí)行單元并行支持。
2.在執(zhí)行中采取了無序執(zhí)行(out-of-orderprocessing)技術(shù)。即當(dāng)某條指令需要一些數(shù)據(jù)而未能立即執(zhí)行完畢時,它將被剔出流水線并等待數(shù)據(jù),CPU則馬上執(zhí)行下條指令,就好比在裝配線上發(fā)現(xiàn)某件產(chǎn)品不太合格,而被淘汰,等待返工一個道理。這樣,可以防止一條指令不能執(zhí)行而影響了整個流水線的效率。
3.在P6中將指令劃分成了更細(xì)的階段,從而使邏輯設(shè)計(jì)、工序等等更為簡化,提高了速度。在486芯片中,一條指令一般被劃分為五個標(biāo)準(zhǔn)的部分,奔騰亦是如此。而在P6中,由于采用了近似于RISC的技術(shù),一條指令被劃分成了創(chuàng)紀(jì)錄的十四個階段。這極大地提高了流水線的速度。
那么,P6的超流水線技術(shù)是否將流水線工藝發(fā)揮到了極限呢?還遠(yuǎn)遠(yuǎn)未到,在P7中也許我們將看到全新的設(shè)計(jì)。