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