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