諸城聚信工貿(mào)有限公司
主營產(chǎn)品: 腸類真空包裝機,多層烘干線,包裝袋巴氏殺菌流水線,魚豆腐生產(chǎn)流水線 ,多層烘干機 |
公司信息
流水線技術(shù)
2016-12-6 閱讀(972)
流水線(pipeline)技術(shù)是指在程序執(zhí)行時多條指令重疊進行操作的一種準并行處理實現(xiàn)技術(shù)。流水線是In在486芯片中開始使用的。流水線的工作方式就像工業(yè)生產(chǎn)上的裝配流水線。在CPU中由5—6個不同功能的電路單元組成一條指令處理流水線,然后將一條X86指令分成5—6步后再由這些電路單元分別執(zhí)行,這樣就能實現(xiàn)在一個CPU時鐘周期完成一條指令,因此提高CPU的運算速度。經(jīng)典奔騰每條整數(shù)流水線都分為四級流水,即取指令、譯碼、執(zhí)行、寫回結(jié)果,浮點流水又分為八級流水。
產(chǎn)生背景
編輯
借鑒了工業(yè)流水線制造的思想,現(xiàn)代CPU也采用了流水線設(shè)計。在工業(yè)制造中采用流水線可以提高單位時間的生產(chǎn)量;同樣在CPU中采用流水線設(shè)計也有助于提高CPU的頻率。先以汽車裝
流水線技術(shù)
配為例來解釋流水線的工作方式。假設(shè)裝配一輛汽車需要4個步驟:1.沖壓:制作車身外殼和底盤等部件,2.焊接:將沖壓成形后的各部件焊接成車身,3.涂裝:將車身等主要部件清洗、化學處理、打磨、噴漆和烘干,4.總裝:將各部件(包括發(fā)動機和向外采購的零部件)組裝成車;同時對應地需要沖壓、焊接、涂裝和總裝四個工人。采用流水線的制造方式,同一時刻四輛汽車在裝配。如果不采用流水線,那么*輛汽車依次經(jīng)過上述四個步驟裝配完成之后,下一輛汽車才開始進行裝配,較早期的工業(yè)制造就是采用的這種原始的方式。未采用流水線的原始制造方式,同一時刻只有一輛汽車在裝配。
不久之后就發(fā)現(xiàn),某個時段中一輛汽車在進行裝配時,其它三個工人處于閑置狀態(tài),顯然這是對資源的極大浪費!于是開始思考能有效利用資源的方法:在*輛汽車經(jīng)過沖壓進入焊接
工序的時候,立刻開始進行第二輛汽車的沖壓,而不是等到*輛汽車經(jīng)過全部四個工序后才開始。之后的每一輛汽車都是在前一輛沖壓完畢后立刻進入沖壓工序,這樣在后續(xù)生產(chǎn)中就能夠保證四個工人一直處于運行狀態(tài),不會造成人員的閑置。這樣的生產(chǎn)方式就好似流水川流不息,因此被稱為流水線。
CPU的工作也可以大致分為指令的獲取、解碼、運算和結(jié)果的寫入四個步驟,采用流水線設(shè)計之后,指令(好比待裝配的汽車)就可以連續(xù)不斷地進行處理。在同一個較長的時間段內(nèi),顯然擁有流水線設(shè)計的CPU能夠處理更多的指令。
具體分類
編輯
流水線功能繁多,種類也非常多;如果按照處理級別來分類,流水線可以有操作部件級、指令級和處理機級;如果按照流水線可以完成的動作的數(shù)量來分類,又可以分為單功能和
多功能流水線;如果按照流水線內(nèi)部的功能部件的連接方式來分類,則有線性流水線和非線性流水線;按照可處理對象來分類,還可以有標量流水線和向量流水線。流水線的分類:
1、按處理級別分:
功能部件級:在實現(xiàn)較為復雜的運算時采用
指令級:將一條指令執(zhí)行過程分為多個階段
處理器間級:每個處理器完成其專門的任務。
2、按完成的功能分類:
單功能流水線:只完成一種如乘法或浮點運算等,多用于數(shù)字信號處理器(DSP),各處理器可并行完成各自的功能,加快整機處理速度。
多功能流水線:在不同情況下可完成不同功能
3、按連接的方式分類:
靜態(tài)流水線:同一時間內(nèi),多功能結(jié)構(gòu)只能按一種功能的連接方式工作。
動態(tài)流水線:同一時間內(nèi),可以有多種功能的連接方式同時工作。
4、按處理的數(shù)據(jù)類型分類:
標量流水線:一般數(shù)據(jù)
向量流水線:矢量數(shù)據(jù)。X+Y=Z每一個代表一維數(shù)據(jù)。
5、流水線結(jié)構(gòu)上分類:
線性流水線:指各功能模塊順序串行連接,無反饋回路,如前面介紹的。
非線性流水線:帶有反饋回路的流水線。
性能指標
編輯
衡量一種流水線處理方式的性能高低的書面數(shù)據(jù)主要由吞吐率、效率和加速比這三個參數(shù)來決定。
指的是計算機中的流水線在特定的時間內(nèi)可以處理的任務或輸出數(shù)據(jù)的結(jié)果的數(shù)量。流水線的吞吐率可以進一步分為較大吞吐率和實際吞吐率。它們主要和流水段的處理時間、緩存寄
存器的延遲時間有關(guān),流水段的處理時間越長,緩存寄存器的延遲時間越大,那么,這條流水線的吞吐量就越小。因為,在線性流水線中,較大吞吐率Tpmax=流水線時鐘周期△T/1=max(T1,...Ti,..Tm)+T1/1,而其中,m是流水線的段數(shù),i是特定過程段執(zhí)行時間。如果,一條流水線的段數(shù)越多,過程執(zhí)行時間越長,那么,這條流水線的理論吞吐率就越小。
由此,要對于流水線的瓶頸部分的處理主要在于減少流水段的處理時間。實現(xiàn)的方法一般有兩種:
1、把瓶頸部分的流水線分拆,以便任務可以充分流水處理。流水段的處理時間過長,一般是由于任務堵塞造成的,而任務的堵塞會導致流水線不能在同一個時鐘周期內(nèi)啟動另一個操作,可以把流水段劃分,在各小流水段中間設(shè)置緩存寄存器,緩沖上一個流水段的任務,使流水線充分流水。假如X流水段的處理時間為3T,可以把X流水段再細分成3小段,這樣,每小段的功能相同,但是處理時間已經(jīng)變成3T/3=T了。
2、在瓶頸部分設(shè)置多條相同流水段,并行處理。對付流水段的處理時間過長,還有另外一種方法,那就是把瓶頸流水段用多個相同的并聯(lián)流水段代替,在前面設(shè)一個分派單元來對各條流水段的任務進行分派。仍然假設(shè)瓶頸流水段的處理時間是△3T,那么經(jīng)過3條并聯(lián)流水段的同時處理,實際需要的時間只是△T。這樣,就達到了縮短流水段處理時間,但這種方法比較少以采用,因為要3段相同的流水段并聯(lián),成本較高,而且,分派單元會比較麻煩處理。
加速比
是指某*水線如果采用串行模式之后所用的時間T0和采用流水線模式后所用時間T的比值,數(shù)值越大,說明這條流水線的工作安排方式越好。
效率
使用效率:指流水線中,各個部件的利用率。由于流水線在開始工作時存在建立時間;在結(jié)束時存在排空時間,各個部件不可能一直在工作,總有某個部件在某一個時間處于閑置狀態(tài)。用處于工作狀態(tài)的部件和總部件的比值來說明這條流水線的工作效率。
影響因素
編輯
流水線處理方式是一種時間重疊并行處理的處理技術(shù),具體地說,就是流水線可以在同一個時間啟動2個或以上的操作,借此來提高性能。為了實現(xiàn)這一點,流水線必須要時
時保存暢通,讓任務充分流水,但在實際中,會出現(xiàn)2種情況使流水線停頓下來或不能啟動:
1、多個任務在同一時間周期內(nèi)爭用同一個流水段。例如,假如在指令流水線中,如果數(shù)據(jù)和指令是放在同一個儲存器中,并且訪問接口也只有一個,那么,兩條指令就會爭用儲存器;在一些算數(shù)流水線中,有些運算會同時訪問一個運算部件。
2、數(shù)據(jù)依賴。比如,A運算必須得到B運算的結(jié)果,但是,B運算還沒有開始,A運算動作就必須等待,直到B運算完成,兩次運算不能同時執(zhí)行。
解決方案:
*種情況,增加運算部件的數(shù)量來使他們不必爭用同一個部件;
第二種情況,用指令調(diào)度的方法重新安排指令或運算的順序。
技術(shù)規(guī)范
編輯
超級流水線
超級流水線(SuperPipeline)又叫做深度流水線,它是提高cpu速度通常采取的一種技術(shù)。CPU處理指令是通過Clock來驅(qū)動的,每個clock完成一級流水線操作。每個周期所做的操作越少,需要的時間就越短,時間越短,頻率就可以提得越高。超級流水線就是將cpu處理指令是得操作進一步細分,增加流水線級數(shù)來提高頻率。頻率高了,當流水線開足馬力運行時平均每個周期完成一條指令(單發(fā)射情況下),這樣cpu處理得速度就提高了。當然,這是理想情況下,一般是流水線級數(shù)越多,重疊執(zhí)行的執(zhí)行就越多,那么發(fā)生競爭沖突得可能性就越大,對流水線性能有一定影響現(xiàn)在很多cpu都是將超標量和超級一起使用,例如pentiumIV,流水線達到20級,頻率較快已經(jīng)超過3GHZ。教科書上用于教學的經(jīng)典MIPS只有5級流水。
超標量
將一條指令分成若干個周期處理以達到多條指令重疊處理,從而提高cpu部件利用率的技術(shù)叫做標量流水技術(shù)。超級標量是指cpu內(nèi)一般能有多條流水線,這些流水線能夠并行處理。在單流
水線結(jié)構(gòu)中,指令雖然能夠重疊執(zhí)行,但仍然是順序的,每個周期只能發(fā)射(issue)或退休(retire)一條指令。超級標量結(jié)構(gòu)的cpu支持指令級并行,每個周期可以發(fā)射多條指令(2-4條居多)??梢允沟胏pu的IPC(InstructionPerClock)>,從而提高cpu處理速度。超級標量機能同時對若干條指令進行譯碼,將可以并行執(zhí)行的指令送往不同的執(zhí)行部件,在程序運行期間,由硬件(通常是狀態(tài)記錄部件和調(diào)度部件)來完成指令調(diào)度。超級標量機主要是借助硬件資源重復(例如有兩套譯碼器和ALU等)來實現(xiàn)空間的并行操作。熟知的pentium系列(可能是p-II開始),還有SUNSPARC系列的較型號,以及MIPS若干型號等都采用了超級標量技術(shù)。
超長指令字
超長指令字(VLIW:VeryLongInstructionWord)是由美國Yale大學教授Fisher提出的。它有點類似于超級標量,是一條指令來實現(xiàn)多個操作的并行執(zhí)行,之所以放到一條指令是為了減少內(nèi)存訪問。通常一條指令多達上百位,有若干操作數(shù),每條指令可以做不同的幾種運算。那些指令可以并行執(zhí)行是由編譯器來選擇的。通常VLIW機只有一個控制器,每個周期啟動一條長指令,長指令被分為幾個字段,每個字段控制相應的部件。由于編譯器需要考慮數(shù)據(jù)相關(guān)性,避免沖突,并且盡可能利用并行,完成指令調(diào)度,所以硬件結(jié)構(gòu)較簡單。
VLIW機器較少,可能不太容易實現(xiàn),業(yè)界比較有名的VLIW公司之一是Transmeta,在加州硅谷SantaClara(硅谷圣地之一,還有SanJose,PaloAlto)。它做的機器采用X86指令集,VLIW實現(xiàn),具體資料可以去訪問公司的。
向量機
平時接觸的計算機都是標量機,向量機都是大型計算機,一般用于軍事工業(yè),氣象預報,以及其他大型科學計算領(lǐng)域,這也說明了向量機都很貴。國產(chǎn)的銀河計算機就是向量機普通的計算機所做的計算,例如加減乘除,只能對一組數(shù)據(jù)進行操作,被稱為標量運算。向量運算一般是若干同類型標量運算的循環(huán)。向量運算通常是對多組數(shù)據(jù)成批進行同樣運算,所得結(jié)果也是一組數(shù)據(jù)。很多做科學計算的大(巨)型機都是向量機。
SIMD技術(shù)
單指令多數(shù)據(jù)(SingleInstructionMultipleData)簡稱SIMD。SIMD結(jié)構(gòu)的CPU有多個執(zhí)行部件,但都在同一個指令部件的控制下。SIMD在性能優(yōu)勢呢:以加法指令為例,單指令單數(shù)據(jù)(SISD)的CPU對加法指令譯碼后,執(zhí)行部件先訪問內(nèi)存,取得*個操作數(shù);之后再一次訪問內(nèi)存,取得第二個操作數(shù);隨后才能進行求和運算。而在SIMD型CPU中,指令譯碼后幾個執(zhí)行部件同時訪問內(nèi)存,一次性獲得所有操作數(shù)進行運算。這個特點使得SIMD特別適合于多媒體應用等數(shù)據(jù)密集型運算。AMD公司的3DNOW!技術(shù)其實質(zhì)就是SIMD,這使K6-2處理器在音頻解碼、視頻回放、3D游戲等應用中顯示出優(yōu)異性能。