流水線技術

流水線技術

流水線(pipeline)技術是指在程式執行時多條指令重疊進行操作的一種準並行處理實現技術。流水線是Intel首次在486晶片中開始使用的。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然後將一條指令分成5—6步後再由這些電路單元分別執行,這樣就能實現在一個CPU時鐘周期完成一條指令,因此提高CPU的運算速度。經典奔騰每條整數流水線都分為四級流水,即取指令、解碼、執行、寫回結果,浮點流水又分為八級流水。

基本信息

產生背景

借鑑了工業流水線製造的思想,現代CPU也採用了流水線設計。在工業製造中採用流水線可以提高單位時間的生產量;同樣在CPU中採用流水線設計也有助於提高CPU的頻率。

流水線技術 流水線技術

先以汽車裝配為例來解釋流水線的工作方式。假設裝配一輛汽車需要4個步驟:

1.衝壓:製作車身外殼和底盤等部件;

2.焊接:將衝壓成形後的各部件焊接成車身;

3.塗裝:將車身等主要部件清洗、化學處理、打磨、噴漆和烘乾;

4.總裝:將各部件(包括發動機和向外採購的零部件)組裝成車;

同時對應地需要衝壓、焊接、塗裝和總裝四個工人。採用流水線的製造方式,同一時刻四輛汽車在裝配。如果不採用流水線,那么第一輛汽車依次經過上述四個步驟裝配完成之後,下一輛汽車才開始進行裝配,最早期的工業製造就是採用的這種原始的方式。未採用流水線的原始製造方式,同一時刻只有一輛汽車在裝配。

流水線技術 流水線技術

不久之後就發現,某個時段中一輛汽車在進行裝配時,其它三個工人處於閒置狀態,顯然這是對資源的極大浪費。於是開始思考能有效利用資源的方法:在第一輛汽車經過衝壓進入焊接工序的時候,立刻開始進行第二輛汽車的衝壓,而不是等到第一輛汽車經過全部四個工序後才開始。之後的每一輛汽車都是在前一輛衝壓完畢後立刻進入衝壓工序,這樣在後續生產中就能夠保證四個工人一直處於運行狀態,不會造成人員的閒置。這樣的生產方式就好似流水川流不息,因此被稱為流水線。

CPU的工作也可以大致分為指令的獲取、解碼、運算和結果的寫入四個步驟,採用流水線設計之後,指令(好比待裝配的汽車)就可以連續不斷地進行處理。在同一個較長的時間段內,顯然擁有流水線設計的CPU能夠處理更多的指令。

具體分類

流水線技術 流水線技術

流水線功能繁雜,種類也非常多;如果按照處理級別來分類,流水線可以有操作部件級、指令級和處理機級;如果按照流水線可以完成的動作的數量來分類,又可以分為單功能和多功能流水線;如果按照流水線內部的功能部件的連線方式來分類,則有線性流水線和非線性流水線;按照可處理對象來分類,還可以有標量流水線和向量流水線。

按處理級別

功能部件級:在實現較為複雜的運算時採用

指令級:將一條指令執行過程分為多個階段

處理器間級:每個處理器完成其專門的任務。

按完成的功能

單功能流水線:只完成一種如乘法或浮點運算等,多用於數位訊號處理器(DSP),各處理器可並行完成各自的功能,加快整機處理速度。

流水線技術 流水線技術

多功能流水線:在不同情況下可完成不同功能3、按連線的方式分類:

靜態流水線:同一時間內,多功能結構只能按一種功能的連線方式工作。

動態流水線:同一時間內,可以有多種功能的連線方式同時工作。

按處理的數據類型

標量流水線:一般數據

向量流水線:矢量數據。X+Y=Z每一個代表一維數據。

按流水線結構:

線性流水線:指各功能模組順序串列連線,無反饋迴路,如前面介紹的。

非線性流水線:帶有反饋迴路的流水線。

性能指標

衡量一種流水線處理方式的性能高低的書面數據主要由吞吐率、效率和加速比這三個參數來決定。

吞吐率

流水線技術 流水線技術

指的是計算機中的流水線在特定的時間內可以處理的任務或輸出數據的結果的數量。流水線的吞吐率可以進一步分為最大吞吐率和實際吞吐率。它們主要和流水段的處理時間、快取暫存器的延遲時間有關,流水段的處理時間越長,快取暫存器的延遲時間越大,那么,這條流水線的吞吐量就越小。因為,線上性流水線中,最大吞吐率T=流水線時鐘周期△T/1=max(T,...T,..T)+T/1,而其中,m是流水線的段數,i是特定過程段執行時間。如果,一條流水線的段數越多,過程執行時間越長,那么,這條流水線的理論吞吐率就越小。

由此,要對於流水線的瓶頸部分的處理主要在於減少流水段的處理時間。實現的方法一般有兩種:

1、把瓶頸部分的流水線分拆,以便任務可以充分流水處理。流水段的處理時間過長,一般是由於任務堵塞造成的,而任務的堵塞會導致流水線不能在同一個時鐘周期內啟動另一個操作,可以把流水段劃分,在各小流水段中間設定快取暫存器,緩衝上一個流水段的任務,使流水線充分流水。假如X流水段的處理時間為3T,可以把X流水段再細分成3小段,這樣,每小段的功能相同,但是處理時間已經變成3T/3=T了。

流水線技術 流水線技術

2、在瓶頸部分設定多條相同流水段,並行處理。對付流水段的處理時間過長,還有另外一種方法,那就是把瓶頸流水段用多個相同的並聯流水段代替,在前面設一個分派單元來對各條流水段的任務進行分派。仍然假設瓶頸流水段的處理時間是△3T,那么經過3條並聯流水段的同時處理,實際需要的時間只是△T。這樣,就達到了縮短流水段處理時間,但這種方法比較少以採用,因為要3段相同的流水段並聯,成本較高,而且,分派單元會比較麻煩處理。

加速比

是指某一流水線如果採用串列模式之後所用的時間T0和採用流水線模式後所用時間T的比值,數值越大,說明這條流水線的工作安排方式越好。

效率

使用效率:指流水線中,各個部件的利用率。由於流水線在開始工作時存在建立時間;在結束時存在排空時間,各個部件不可能一直在工作,總有某個部件在某一個時間處於閒置狀態。用處於工作狀態的部件和總部件的比值來說明這條流水線的工作效率。

影響因素

流水線技術 流水線技術

流水線處理方式是一種時間重疊並行處理的處理技術,具體地說,就是流水線可以在同一個時間啟動2個或以上的操作,藉此來提高性能。為了實現這一點,流水線必須要時時保存暢通,讓任務充分流水,但在實際中,會出現2種情況使流水線停頓下來或不能啟動:

1、多個任務在同一時間周期內爭用同一個流水段。例如,假如在指令流水線中,如果數據和指令是放在同一個儲存器中,並且訪問接口也只有一個,那么,兩條指令就會爭用儲存器;在一些算數流水線中,有些運算會同時訪問一個運算部件。

2、數據依賴。比如,A運算必須得到B運算的結果,但是,B運算還沒有開始,A運算動作就必須等待,直到B運算完成,兩次運算不能同時執行。

解決方案:

第一種情況,增加運算部件的數量來使他們不必爭用同一個部件;

第二種情況,用指令調度的方法重新安排指令或運算的順序。

技術規範

超級流水線

超級流水線(SuperPipeline)又叫做深度流水線,它是提高cpu速度通常採取的一種技術。CPU處理指令是通過Clock來驅動的,每個clock完成一級流水線操作。每個周期所做的操作越少,需要的時間就越短,時間越短,頻率就可以提得越高。超級流水線就是將cpu處理指令是得操作進一步細分,增加流水線級數來提高頻率。頻率高了,當流水線開足馬力運行時平均每個周期完成一條指令(單發射情況下),這樣cpu處理得速度就提高了。當然,這是理想情況下,一般是流水線級數越多,重疊執行的執行就越多,那么發生競爭衝突得可能性就越大,對流水線性能有一定影響現在很多cpu都是將超標量和超級流水線技術一起使用,例如pentiumIV,流水線達到20級,頻率最快已經超過3GHZ。教科書上用於教學的經典MIPS只有5級流水。

超標量

流水線技術 流水線技術

將一條指令分成若干個周期處理以達到多條指令重疊處理,從而提高cpu部件利用率的技術叫做標量流水技術。超級標量是指cpu內一般能有多條流水線,這些流水線能夠並行處理。在單流水線結構中,指令雖然能夠重疊執行,但仍然是順序的,每個周期只能發射(issue)或退休(retire)一條指令。超級標量結構的cpu支持指令級並行,每個周期可以發射多條指令(2-4條居多)。可以使得cpu的IPC(InstructionPerClock)>,從而提高cpu處理速度。超級標量機能同時對若干條指令進行解碼,將可以並行執行的指令送往不同的執行部件,在程式運行期間,由硬體(通常是狀態記錄部件和調度部件)來完成指令調度。超級標量機主要是藉助硬體資源重複(例如有兩套解碼器和ALU等)來實現空間的並行操作。熟知的pentium系列(可能是p-II開始),還有SUNSPARC系列的較高級型號,以及MIPS若干型號等都採用了超級標量技術。

超長指令字

超長指令字(VLIW:VeryLongInstructionWord)是由美國Yale大學教授Fisher提出的。它有點類似於超級標量,是一條指令來實現多個操作的並行執行,之所以放到一條指令是為了減少記憶體訪問。通常一條指令多達上百位,有若干運算元,每條指令可以做不同的幾種運算。那些指令可以並行執行是由編譯器來選擇的。通常VLIW機只有一個控制器,每個周期啟動一條長指令,長指令被分為幾個欄位,每個欄位控制相應的部件。由於編譯器需要考慮數據相關性,避免衝突,並且儘可能利用並行,完成指令調度,所以硬體結構較簡單。

VLIW機器較少,可能不太容易實現,業界比較有名的VLIW公司之一是Transmeta,在加州矽谷SantaClara(矽谷聖地之一,還有SanJose,PaloAlto)。它做的機器採用X86指令集,VLIW實現,具體資料可以去訪問公司的網站。

向量機

平時接觸的計算機都是標量機,向量機都是大型計算機,一般用於軍事工業,氣象預報,以及其他大型科學計算領域,這也說明了向量機都很貴。國產的銀河計算機就是向量機普通的計算機所做的計算,例如加減乘除,只能對一組數據進行操作,被稱為標量運算。向量運算一般是若干同類型標量運算的循環。向量運算通常是對多組數據成批進行同樣運算,所得結果也是一組數據。很多做科學計算的大(巨)型機都是向量機。

SIMD技術

單指令多數據(SingleInstructionMultipleData)簡稱SIMD。SIMD結構的CPU有多個執行部件,但都在同一個指令部件的控制下。SIMD在性能優勢呢:以加法指令為例,單指令單數據(SISD)的CPU對加法指令解碼後,執行部件先訪問記憶體,取得第一個運算元;之後再一次訪問記憶體,取得第二個運算元;隨後才能進行求和運算。而在SIMD型CPU中,指令解碼後幾個執行部件同時訪問記憶體,一次性獲得所有運算元進行運算。這個特點使得SIMD特別適合於多媒體套用等數據密集型運算。AMD公司的3DNOW!技術其實質就是SIMD,這使K6-2處理器在音頻解碼、視頻回放、3D遊戲等套用中顯示出優異性能。

相關詞條

相關搜尋

熱門詞條

聯絡我們