計(jì)算機(jī)畢業(yè)論文-CPU中指令流水線技術(shù)研究_第1頁(yè)
計(jì)算機(jī)畢業(yè)論文-CPU中指令流水線技術(shù)研究_第2頁(yè)
計(jì)算機(jī)畢業(yè)論文-CPU中指令流水線技術(shù)研究_第3頁(yè)
計(jì)算機(jī)畢業(yè)論文-CPU中指令流水線技術(shù)研究_第4頁(yè)
計(jì)算機(jī)畢業(yè)論文-CPU中指令流水線技術(shù)研究_第5頁(yè)
已閱讀5頁(yè),還剩38頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目錄 TOC o 1-3 h z u HYPERLINK l _Toc200373211 第一章緒論 PAGEREF _Toc200373211 h 3 HYPERLINK l _Toc200373212 1.1現(xiàn)代RISC中的流水線技術(shù) PAGEREF _Toc200373212 h 3 HYPERLINK l _Toc200373213 超流水線技術(shù) PAGEREF _Toc200373213 h 3 HYPERLINK l _Toc200373214 超標(biāo)量技術(shù)4 HYPERLINK l _Toc200373215 流水技術(shù)在Pentium系列微處理器中的實(shí)現(xiàn) PAGEREF _Toc2

2、00373215 h 4 HYPERLINK l _Toc200373216 第二章流水線根底 PAGEREF _Toc200373216 h 7 HYPERLINK l _Toc200373217 2.1流水線概念 PAGEREF _Toc200373217 h 7 HYPERLINK l _Toc200373218 指令重疊 PAGEREF _Toc200373218 h 7 HYPERLINK l _Toc200373219 流水線 PAGEREF _Toc200373219 h 8 HYPERLINK l _Toc200373220 流水線的特點(diǎn) PAGEREF _Toc2003732

3、20 h 9 HYPERLINK l _Toc200373221 流水線的分類 PAGEREF _Toc200373221 h 10 HYPERLINK l _Toc200373222 2.2流水線的主要性能 PAGEREF _Toc200373222 h 11 HYPERLINK l _Toc200373223 吞吐率 PAGEREF _Toc200373223 h 12 HYPERLINK l _Toc200373224 加速比和效率 PAGEREF _Toc200373224 h 12 HYPERLINK l _Toc200373225 第三章指令流水線設(shè)計(jì) PAGEREF _Toc20

4、0373225 h 15 HYPERLINK l _Toc200373226 3.1流水線理想假設(shè) PAGEREF _Toc200373226 h 15 HYPERLINK l _Toc200373227 一致的運(yùn)算分量 PAGEREF _Toc200373227 h 15 HYPERLINK l _Toc200373228 重復(fù)的運(yùn)算 PAGEREF _Toc200373228 h 16 HYPERLINK l _Toc200373229 獨(dú)立的運(yùn)算 PAGEREF _Toc200373229 h 17 HYPERLINK l _Toc200373230 3.2指令流水線 PAGEREF _

5、Toc200373230 h 18 HYPERLINK l _Toc200373231 指令流水線設(shè)計(jì) PAGEREF _Toc200373231 h 18 HYPERLINK l _Toc200373232 指令集體系結(jié)構(gòu)的影響 PAGEREF _Toc200373232 h 19 HYPERLINK l _Toc200373233 流水線分級(jí)的考慮20 HYPERLINK l _Toc200373234 3.3流水線處理器設(shè)計(jì) PAGEREF _Toc200373234 h 21 HYPERLINK l _Toc200373235 保持流水段均衡 PAGEREF _Toc200373235

6、 h 21 HYPERLINK l _Toc200373236 統(tǒng)一指令類型 PAGEREF _Toc200373236 h 22 HYPERLINK l _Toc200373237 減少流水線停頓 PAGEREF _Toc200373237 h 26 HYPERLINK l _Toc200373238 第四章流水線中各種相關(guān)及中斷處理 PAGEREF _Toc200373238 h 27 HYPERLINK l _Toc200373239 4.1流水線中相關(guān) PAGEREF _Toc200373239 h 27 HYPERLINK l _Toc200373240 4.2資源相關(guān) PAGERE

7、F _Toc200373240 h 27 HYPERLINK l _Toc200373241 4.3數(shù)據(jù)相關(guān) PAGEREF _Toc200373241 h 28 HYPERLINK l _Toc200373242 指令相關(guān) PAGEREF _Toc200373242 h 28 HYPERLINK l _Toc200373243 主存空間操作數(shù)相關(guān) PAGEREF _Toc200373243 h 29 HYPERLINK l _Toc200373244 通用存放器組相關(guān) PAGEREF _Toc200373244 h 29 HYPERLINK l _Toc200373245 4.4控制相關(guān)31

8、 HYPERLINK l _Toc200373246 猜想法 PAGEREF _Toc200373246 h 31 HYPERLINK l _Toc200373247 加快和提前形成條件碼 PAGEREF _Toc200373247 h 32 HYPERLINK l _Toc200373248 采取轉(zhuǎn)移延遲 PAGEREF _Toc200373248 h 32 HYPERLINK l _Toc200373249 加快短循環(huán)程序的處理 PAGEREF _Toc200373249 h 32 HYPERLINK l _Toc200373250 第五章中斷處理與流水線調(diào)度 PAGEREF _Toc20

9、0373250 h 35 HYPERLINK l _Toc200373251 5.1中斷處理 PAGEREF _Toc200373251 h 35 HYPERLINK l _Toc200373252 5.2流水線調(diào)度 PAGEREF _Toc200373252 h 35 HYPERLINK l _Toc200373253 第六章總結(jié)與展望 PAGEREF _Toc200373253 h 39 HYPERLINK l _Toc200373254 致謝41 HYPERLINK l _Toc200373255 參考文獻(xiàn) PAGEREF _Toc200373255 h 42 緒論流水線技術(shù)是提高系統(tǒng)吞

10、吐率的一項(xiàng)強(qiáng)大的實(shí)現(xiàn)技術(shù),并且不需要大量重復(fù)設(shè)置硬件。20世界60年代早期的一些高端機(jī)器中第一次采用了流水線技術(shù)。第一個(gè)采用指令流水線的機(jī)器是IBM7030又稱作Stretch計(jì)算機(jī)。后來(lái)的CDC 6600同時(shí)采用了流水線和多功能部件。到了20世紀(jì)80年代,流水線技術(shù)成為RISC處理器設(shè)計(jì)方法中最根本的技術(shù)之一。RISC設(shè)計(jì)方法的大局部技術(shù)都直接或者間接以提高流水線性能為目標(biāo)。從此以后,流水線技術(shù)也被有效地應(yīng)用到CISC處理器的設(shè)計(jì)中。Intel i486是IA32體系結(jié)構(gòu)中的第一個(gè)流水線實(shí)現(xiàn)。Digital的VAX和Motorola的M68K的流水線版本在商業(yè)上也取得了成功。流水線技術(shù)是當(dāng)前

11、指令集處理器設(shè)計(jì)中廣泛采用的技術(shù)。在這里我們將重點(diǎn)放在標(biāo)量流水線處理器的設(shè)計(jì)。流水線處理器設(shè)計(jì)中的許多方法和技術(shù),例如用于檢測(cè)和化解相關(guān)的流水線互鎖機(jī)制,都是標(biāo)量處理器設(shè)計(jì)的根本方法。當(dāng)前的趨勢(shì)是朝著超深度流水線的方向開(kāi)展。流水線的深度已經(jīng)從不到10開(kāi)展到超過(guò)20.深度流水是獲得高速始終頻率的必要條件,這是提高處理器性能的一個(gè)非常有效的方法。有跡象說(shuō)明。這種趨勢(shì)還將持續(xù)下去。 現(xiàn)代RISC中的流水線技術(shù) 超流水線技術(shù)超流水線Super Pipeline技術(shù)是RISC采用的一種并行處理技術(shù)。他通過(guò)細(xì)化流水,增加級(jí)數(shù)和提高主頻,使得在每個(gè)機(jī)器周期內(nèi)能完成一個(gè)甚至兩個(gè)浮點(diǎn)操作。其實(shí)質(zhì)就是以時(shí)間換取空

12、間。超流水機(jī)器的特征就是在所有的功能單元都才用流水,并有更高的時(shí)鐘頻率和更深的流水深度。 超標(biāo)量技術(shù)超標(biāo)量Super Scalar技術(shù)是RISC采用的有一種處理技術(shù)。它通過(guò)內(nèi)裝多條流水線來(lái)同時(shí)執(zhí)行多個(gè)處理。其實(shí)質(zhì)就是以空間換取時(shí)間。流水線實(shí)現(xiàn)中的問(wèn)題及解決:流水線實(shí)現(xiàn)的一個(gè)問(wèn)題是使流水線連續(xù)不斷地流動(dòng),即不出現(xiàn)流斷,才能獲得高效率。斷流的原因很多,除了編譯生成的目標(biāo)程序不能發(fā)揮流水結(jié)構(gòu)的作用,或者存儲(chǔ)系統(tǒng)不能及時(shí)供給連續(xù)流動(dòng)所需的指令和操作數(shù)外,主要還與出現(xiàn)了相關(guān)、轉(zhuǎn)移以及中斷指令有關(guān)。解決局部性相關(guān)有兩種方法:退后法和通路法;解決全局性相關(guān)有三種方法:猜想轉(zhuǎn)移分支、加快和提前形成條件碼、加快

13、短循環(huán)程序處理。 流水技術(shù)在Pentium系列微處理器中的實(shí)現(xiàn)流水線技術(shù)早在Intel的X86芯片中均得到了實(shí)現(xiàn)。而Pentium系列CPU產(chǎn)品更是一個(gè)高級(jí)的超標(biāo)量處理器。它是建筑在兩個(gè)通用的整型流水線和一個(gè)可流水作業(yè)的浮點(diǎn)單元上的,這使處理器能夠同時(shí)執(zhí)行兩條整型指令。一個(gè)對(duì)軟件透明的動(dòng)態(tài)分支預(yù)測(cè)機(jī)制能夠使分支的流水線阻塞到達(dá)最小化。奔騰處理器可以在一個(gè)時(shí)鐘周期內(nèi)完成兩條指令,一個(gè)流水線完成一條指令。第一個(gè)邏輯管道稱之為“U管道,第二個(gè)稱之為“V管道。在任何一條給定的指令譯碼期間,它安排的后面兩條指令將被檢查。并且,如果有可能,第一條指令被安排到“U管道執(zhí)行,第二條指令被安排到“V管道執(zhí)行。如

14、果不能,那么第一條指令被安排到“U管道執(zhí)行,“V管道中不安排指令運(yùn)行。指令在兩個(gè)管道中運(yùn)行與它們順序執(zhí)行所產(chǎn)生的效果是完全一樣的。當(dāng)發(fā)生管道阻塞時(shí),后繼的指令無(wú)法通過(guò)被阻塞的指令所在的任一管道中。具有MMX?技術(shù)的奔騰處理器為整型流水線增加了一個(gè)額外的處理階段。指令從代碼的高速緩沖區(qū)中預(yù)取出來(lái),被送入到“預(yù)取(PF)階段,并且在“提取(F)階段中進(jìn)行指令的語(yǔ)法分析。 另外, 全部的前綴譯碼都在F階段中進(jìn)行。 指令在先進(jìn)先出(FIFO)的指令緩沖區(qū)中將語(yǔ)法分析與指令譯碼分開(kāi), 這個(gè)緩沖區(qū)位于F階段與譯碼1(D1)階段之間。FIFO緩沖區(qū)的空間能夠?qū)⒈惶幚淼闹噶钌仙剿臈l指令。FIFO緩沖區(qū)是透明

15、的,當(dāng)它為空時(shí),不增加額外的遲延。在每個(gè)時(shí)鐘周期內(nèi),可將兩條指令壓到指令的FIFO緩沖區(qū)中(根據(jù)有效的代碼字節(jié),以及其它因素,如前綴)。然后,再將成對(duì)的指令從FIFO緩沖區(qū)中彈出來(lái),送到D1階段中。由于指令的平均執(zhí)行效率為每個(gè)時(shí)鐘周期內(nèi)不超過(guò)兩條指令,所以FIFO通常是滿的。只要FIFO是滿的,就可以防止在指令提取和進(jìn)行語(yǔ)法分析時(shí)產(chǎn)生的阻塞。如果發(fā)生了這樣的阻塞,F(xiàn)IFO也可以使阻塞不在管道的執(zhí)行階段上發(fā)生。但如果FIFO空,由于流水線中無(wú)指令運(yùn)行,那么可能會(huì)導(dǎo)致一個(gè)執(zhí)行阻塞。較長(zhǎng)的指令或前綴可能會(huì)在FIFO入口處產(chǎn)生阻塞。超流水線(Super Pipeline)在本質(zhì)上仍為一種流水線技術(shù),但

16、它做了以下的改良:流水線條數(shù)從奔騰的兩條增至三條,還有十一個(gè)獨(dú)立的執(zhí)行單元并行支持。在執(zhí)行中采取了無(wú)序執(zhí)行(outoforder processing)技術(shù)。即當(dāng)某條指令需要一些數(shù)據(jù)而未能立即執(zhí)行完畢時(shí),它將被剔出流水線并等待數(shù)據(jù),CPU那么馬上執(zhí)行下條指令,就好比在裝配線上發(fā)現(xiàn)某件產(chǎn)品不太合格,而被淘汰,等待返工一個(gè)道理。這樣,可以防止一條指令不能執(zhí)行而影響了整個(gè)流水線的效率。在P6中將指令劃分成了更細(xì)的階段,從而使邏輯設(shè)計(jì)、工序等等更為簡(jiǎn)化,提高了速度。在486芯片中,一條指令一般被劃分為五個(gè)標(biāo)準(zhǔn)的局部,奔騰亦是如此。而在P6中,由于采用了近似于RISC的技術(shù),一條指令被劃分成了創(chuàng)紀(jì)錄的十

17、四個(gè)階段。這極大地提高了流水線的速度。P6系列處理器使用動(dòng)態(tài)執(zhí)行結(jié)構(gòu)。該結(jié)構(gòu)通過(guò)硬件存放器重命名和分支預(yù)測(cè)的方法,將亂序執(zhí)行和推測(cè)執(zhí)行合成在一起。這些處理器有一個(gè)有序進(jìn)入的流水線,它將Intel 386的宏指令支解成簡(jiǎn)單的微操作(或UOP)和一個(gè)可以處理這些微操作的亂序的超標(biāo)量處理器內(nèi)核。這個(gè)亂序的處理器內(nèi)核包含了幾條流水線,連接了整型、跳轉(zhuǎn)、浮點(diǎn)和內(nèi)存執(zhí)行單元。幾種不同的執(zhí)行單元可以集成在同一條流水線上。例如:一個(gè)整型地址邏輯單元和浮點(diǎn)執(zhí)行單元(加法器、乘法器和除法器)同享一個(gè)流水線。數(shù)據(jù)高速緩沖區(qū)由一個(gè)專用的讀取端口和其它的存儲(chǔ)端口交錯(cuò)而成。大多數(shù)簡(jiǎn)單操作(整型ALU,浮點(diǎn)加法,甚至浮點(diǎn)乘

18、法)可以按每時(shí)鐘周期完成一至兩個(gè)操作的吞吐量進(jìn)行流水作業(yè)。浮點(diǎn)除法不可以進(jìn)入流水線,長(zhǎng)遲延操作可以和短遲延操作并行處理。P6系列的流水線由三局部構(gòu)成:有序組織的前端(In-Order Issue Front-end)單元,亂序內(nèi)核Out-of-order Core單元和有序的退出In-Order Retirement單元。Intel新近推出的奔騰處理器使用了P6中的動(dòng)態(tài)執(zhí)行技術(shù),包括多分枝預(yù)測(cè)、數(shù)據(jù)流分析、投機(jī)執(zhí)行。同時(shí)奔騰處理器具有一個(gè)流水線式的浮點(diǎn)運(yùn)算單元(FPU),可支持32位、64位和80位的浮點(diǎn)運(yùn)算。最近Intel又發(fā)表奔騰4,奔騰4根本的指令流水線長(zhǎng)度到達(dá)了20級(jí),是 P6架構(gòu)的2

19、倍,也超過(guò)了AMD的Athlon。更長(zhǎng)的流水線可以使處理器運(yùn)行在更高的主頻下,從而提高處理器的性能,但有可能帶來(lái)一些指令執(zhí)行上的延遲。 流水線根底加快機(jī)器語(yǔ)言的解釋過(guò)程提高機(jī)器的運(yùn)算速度是設(shè)計(jì)計(jì)算機(jī)的根本任務(wù)之一。這可以通過(guò)兩個(gè)途徑來(lái)實(shí)現(xiàn)。一個(gè)途徑是提高器件的速度,采用更好的算法,增加指令內(nèi)各微操作的并行程度,減少解釋過(guò)程所需要的拍數(shù)等多項(xiàng)措施來(lái)加快機(jī)器指令的解釋。另一個(gè)途徑那么是采用重疊和流水方法,同時(shí)解釋兩條、多條以至整段程序,從而加快整個(gè)機(jī)器語(yǔ)言程序的解釋。流水線技術(shù)是目前廣泛應(yīng)用于微處理芯片中的一項(xiàng)關(guān)鍵技術(shù),Intel公司更是這項(xiàng)技術(shù)在微處理器中應(yīng)用的首先實(shí)現(xiàn)者。 流水線概念指令的三種

20、控制方法:順序方法、重疊方式、流水方式。順序方法是指各條機(jī)器指令之間順序串行地執(zhí)行,而且每條機(jī)器指令內(nèi)部的各個(gè)微指令也是串行執(zhí)行。這種方法雖然控制簡(jiǎn)單但速度上不去,機(jī)器各部件的利用率低。重疊方式是指在解釋第K條指令的操作完成之前就開(kāi)始解釋第K+1條指令。通常都是采用一次重疊,即在任何時(shí)候,指令分析部件和指令執(zhí)行部件都只有相鄰兩條指令在重疊解釋。這種方式使指令的解釋速度有所提高,控制也不太復(fù)雜但會(huì)出現(xiàn)沖突、轉(zhuǎn)移、相關(guān)等問(wèn)題,這些都需要在設(shè)計(jì)時(shí)想方法解決。流水方式就是把并行性或并發(fā)性鑲嵌到計(jì)算機(jī)系統(tǒng)里的一中形式。它是把重疊的順序處理過(guò)程分解為假設(shè)干過(guò)程,每個(gè)過(guò)程能在專用的獨(dú)立模塊上有效地并發(fā)工作的

21、技術(shù)。在概念上“流水可以看成“重疊的延伸。不同的是“一次重疊只是把一條指令的解釋分解成兩個(gè)子過(guò)程,而“流水那么是分解為更多的子過(guò)程。 指令重疊一條指令的執(zhí)行過(guò)程可分為取指令、分型與執(zhí)行三個(gè)過(guò)程如圖2.1。取指令,取出該指令送到指令存放器。指令的分析指的是對(duì)指令的操作碼進(jìn)行譯碼,按尋址方式合地址字段形成操作數(shù)真地址,并用此真地址去取操作數(shù),還要為準(zhǔn)備取下一條指令提前形成下一條指令的地址等。指令的執(zhí)行那么是指對(duì)操作數(shù)進(jìn)行運(yùn)算、處理,或存儲(chǔ)運(yùn)算結(jié)果。指令的重疊解釋方式指的是,在解釋第k條指令的操作完成之前,就開(kāi)始解釋第k+1條指令。假設(shè)這三個(gè)過(guò)程分別在3個(gè)不同的硬件指令控制器、分析器和執(zhí)行部件上進(jìn)行

22、,那么當(dāng)?shù)趉條指令處于分析階段的時(shí)候,控制器就處于空閑狀態(tài),這個(gè)時(shí)候可以對(duì)第k+1條指令進(jìn)行取指令操作,當(dāng)?shù)趉條指令處于執(zhí)行狀態(tài)時(shí),分析器就處于空閑狀態(tài),這時(shí)可以進(jìn)行對(duì)第k+1條指令的分析圖2.2。很顯然,重疊解釋的方式并不能加快一條指令的實(shí)現(xiàn),但是可以加快兩條相鄰指令以至一段程序的解釋。圖2.1 機(jī)器指令的順序執(zhí)行方式圖2.2 指令的重疊解釋方式 流水線流水其實(shí)就是重疊的引申,上面談到的重疊模型實(shí)際上就是一個(gè)簡(jiǎn)單的3級(jí)流水模型。如果將分析與執(zhí)行階段再細(xì)分為指令解碼、取操作數(shù)、執(zhí)行運(yùn)算和存儲(chǔ)結(jié)果,當(dāng)?shù)趉+1條指令在第k條指令執(zhí)行去操作數(shù)的時(shí)候就可以開(kāi)始解碼,而不必等到分析k完全結(jié)束。這樣子在一

23、個(gè)指令周期內(nèi)就可以同時(shí)執(zhí)行5條指令。流水線工作方式是把一個(gè)重復(fù)的過(guò)程分解為假設(shè)干個(gè)子過(guò)程,每個(gè)子過(guò)程可以與其他子過(guò)程同時(shí)進(jìn)行。由于這種工作方式與工程中的生產(chǎn)流水線十分相似,因此,把他成為流水線工作方式。在處理機(jī)的各個(gè)局部幾乎都可以采用流水線工作方式。指令的執(zhí)行過(guò)程可以采用流水線,成為指令流水線。運(yùn)算中的操作部件,如浮點(diǎn)加法器,浮點(diǎn)乘法器等可以采用流水線,成為操作部件流水線。訪問(wèn)主存儲(chǔ)器部件也可以采用流水線。甚至在處理機(jī)之間,機(jī)器之間也可以采用流水線。圖2.3 指令流水線 流水線的特點(diǎn)從上面的分析中可以看到,在處理機(jī)中采用流水線方式與采用傳統(tǒng)的串行方式相比,具有一下特點(diǎn):在流水線中處理的必須是連

24、續(xù)任務(wù),只有連續(xù)不斷的提供任務(wù)才能充分發(fā)揮流水線的效率。例如。要是浮點(diǎn)加法器充分發(fā)揮作用,需要連續(xù)提供浮點(diǎn)加法運(yùn)算。然而,由于程序本身的原因和程序設(shè)計(jì)過(guò)程中人為造成的一些原因,入數(shù)據(jù)相關(guān)等,不可能為浮點(diǎn)加法器連續(xù)的提供同一種操作。因此,在采用流水線工作方式的處理器中,特別是當(dāng)流水線的級(jí)數(shù)較多時(shí),要在軟件和硬件等多方面為流水線提供連續(xù)的任務(wù),以提高流水線的效率。把一個(gè)任務(wù)分解成幾個(gè)有聯(lián)系的子任務(wù),每個(gè)任務(wù)由一個(gè)專門的功能部件來(lái)實(shí)現(xiàn)。因此,流水線實(shí)際上是把一個(gè)大的功能部件分解為多個(gè)獨(dú)立的功能部件,并依靠多個(gè)功能部件并行工作來(lái)縮短程序的執(zhí)行時(shí)間。在流水線中,一個(gè)子任務(wù)通常稱為一個(gè)子過(guò)程,或者一個(gè)功能

25、段。在流水線每一個(gè)功能部件后面都要有一個(gè)緩沖存放器,或稱為鎖存器等,用于保存本段執(zhí)行的結(jié)果。這是因?yàn)榱魉€中每一段的延遲一般都不可能相等,因此,在段與段之間傳遞子任務(wù)時(shí),必須要通過(guò)緩沖存放器。當(dāng)某一個(gè)功能段的時(shí)間變化范圍比擬大的時(shí)候,要設(shè)置多個(gè)緩沖存放器。流水線中各個(gè)段要盡量勻稱,即時(shí)間要求盡量相等,否那么將容易引起“阻塞、“斷流等問(wèn)題。執(zhí)行時(shí)間最長(zhǎng)的段將成為整個(gè)流水線的“瓶頸,這時(shí),流水線中各段將受到限制而不能充分發(fā)揮作用。只有當(dāng)整個(gè)流水線完全充滿時(shí),整個(gè)流水線的效率才能得到充分的發(fā)揮。為了設(shè)計(jì)出高效率的流水線,要充分注意上述問(wèn)題。 流水線的分類從不同的角度,按照不同的觀點(diǎn),可以把流水線分成

26、多種不同的類型。平時(shí)所說(shuō)的某種流水線,往往是按照某種觀點(diǎn),或者從某一個(gè)特定的角度對(duì)流水線進(jìn)行分類的結(jié)果。因此,從名稱上只能反響出這種流水線在某一個(gè)方面的特點(diǎn)或者功能。按照流水線的各功能段之間是否有反響信號(hào),可以把流水線分為線性流水線合非線性流水線。線性流水線是將流水線各個(gè)功能段逐個(gè)串聯(lián)起來(lái),輸入數(shù)據(jù)從流水線的一段進(jìn)入,從另外一段流出。數(shù)據(jù)在流水線中經(jīng)過(guò)時(shí),沒(méi)一個(gè)功能段都流過(guò)一次,且僅僅流過(guò)一次。一條線性流水線通常只完成固定的一種功能,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,線性流水線已經(jīng)被廣泛的應(yīng)用于指令執(zhí)行過(guò)程、各種算術(shù)運(yùn)算操作、存儲(chǔ)器訪問(wèn)操作等。圖2.4 非線性流水線非線性流水線經(jīng)常用于遞歸調(diào)用,或者構(gòu)成多功

27、能流水線。按照流水線使用的不同級(jí)別,可以把流水線分為功能部件級(jí)、處理器級(jí)以及處理機(jī)之間等多種類型。處理機(jī)級(jí)流水線即指令流水線,他把一條指令執(zhí)行過(guò)程分解為多個(gè)子過(guò)程,每一個(gè)子過(guò)程在一個(gè)獨(dú)立的功能部件中完成。功能部件級(jí)流水線也稱為運(yùn)算操作流水線,如浮點(diǎn)加法器流水線、浮點(diǎn)乘法器流水線等。處理機(jī)間流水線又稱為宏流水線,一般是兩臺(tái)以上處理機(jī)通過(guò)存儲(chǔ)器串行連接起來(lái),每一個(gè)處理機(jī)對(duì)一個(gè)數(shù)據(jù)流的不同局部分別進(jìn)行處理。 圖2.6 指令流水線流水線又可分為單功能流水線和多功能流水線。顧名思義,單功能流水線只能完成固定的單一功能,多流水線通過(guò)各個(gè)段間進(jìn)行不同的連接,在不同的時(shí)間內(nèi)或者統(tǒng)一時(shí)間內(nèi)通過(guò)不同的連接方式完成

28、不同的功能。在多功能流水線中,根據(jù)同一時(shí)間內(nèi)是否可以連接成多種方式,同時(shí)執(zhí)行多種任務(wù),可以把多功能流水線分為靜態(tài)流水線合動(dòng)態(tài)流水線。所謂靜態(tài)流水線指的是在同一時(shí)間段內(nèi),多功能流水線各段只能按照一定固定的方式連接,實(shí)現(xiàn)一種固定的功能。只有當(dāng)按照這種連接方式工作的所有任務(wù)都流出流水線之后,才能重新進(jìn)行連接,完成其他功能。動(dòng)態(tài)流水線那么在同一時(shí)間段內(nèi),可以按照不同的連接方式,完成多種不同的功能。這個(gè)時(shí)候要求流水線中個(gè)功能部件之間不能發(fā)生沖突。除了以上幾種分類方法外,還可以根據(jù)其他標(biāo)準(zhǔn),從不同角度對(duì)流水線進(jìn)行分類。 流水線的主要性能衡量流水線主要性能的指標(biāo)主要有吞吐率,加速比和效率。 吞吐率吞吐率是指

29、在單位時(shí)間內(nèi)流水線所完成的任務(wù)數(shù)量或者輸出的結(jié)果數(shù)量。即: 式(2.1)中,n為任務(wù)數(shù),是處理完成n個(gè)任務(wù)做用的時(shí)間。本式為計(jì)算吞吐率最根本的公式。有的時(shí)候我們還需要求一條流水線的最大吞吐率: 式(2.2)中為第k個(gè)子過(guò)程所花費(fèi)的時(shí)間。最大吞吐率受限于流水線中最慢子過(guò)程即瓶頸子過(guò)程所需要的時(shí)間。為了提高流水線的最大吞吐率,首先要找出瓶頸,然后設(shè)法消除此瓶頸。消除瓶頸有兩種方法,一是將瓶頸子過(guò)程再細(xì)分,另一種方法是通過(guò)重復(fù)設(shè)置多套瓶頸段并聯(lián),讓他們交叉進(jìn)行。后一種方法需要解決好在各并行子過(guò)程之間的任務(wù)分配合同步控制,比起瓶頸子過(guò)程再細(xì)分控制要復(fù)雜、設(shè)備量要多一些。 加速比和效率完成一批任務(wù),不使

30、用流水線所花的時(shí)間與使用流水線所用時(shí)間直比即為流水線的加速比。如果不使用流水線,即順序執(zhí)行所用時(shí)間為,使用流水線的執(zhí)行時(shí)間為,那么流水線的加速比為: 這是計(jì)算流水線加速比的根本公式。流水線的效率是指流水線的設(shè)備利用率。在時(shí)空?qǐng)D上,流水線的效率定義為n個(gè)任務(wù)所占的時(shí)空區(qū)域與k個(gè)功能區(qū)域所占時(shí)空區(qū)域之比。因此,流水線的效率包含有時(shí)間和空間兩方面的因素。實(shí)際上,n個(gè)任務(wù)所占的時(shí)空區(qū)域就是順序執(zhí)行n個(gè)任務(wù)所用的總的時(shí)間。而一條k段流水線完成n個(gè)任務(wù)總的時(shí)空區(qū)域?yàn)閗,其中是流水線完成n個(gè)任務(wù)所用的總時(shí)間。那么一條k段流水線的效率可表示為: 此式是計(jì)算流水線效率的一般公式。如果流水線各段執(zhí)行時(shí)間均相等,且

31、輸入的n個(gè)任務(wù)是連續(xù)的,那么一條k段流水線的效率為: 從流水線的時(shí)空?qǐng)D上來(lái)看,上式分母局部是完成n個(gè)任務(wù)所用時(shí)間與k個(gè)功能段所圍成的總面積,而分子局部那么是k個(gè)功能段實(shí)際所占有的面積。因此,利用時(shí)空?qǐng)D來(lái)計(jì)算流水線的效率十分方便。 指令流水線設(shè)計(jì)我們做任何事情,都希望能夠到達(dá)理想狀態(tài),但這往往是不現(xiàn)實(shí)的,我們研究理想狀態(tài)的意義就在于給出一個(gè)衡量的標(biāo)準(zhǔn),并且努力向這個(gè)標(biāo)準(zhǔn)靠近,這在指令流水線的設(shè)計(jì)過(guò)程中也不例外。 流水線理想假設(shè)對(duì)于指令流水線的目的,我們是希望能最大限度的提高系統(tǒng)的性能。然而在實(shí)際中卻往往做不到,因?yàn)橹挥性诶硐霠顟B(tài)下,k級(jí)流水線的設(shè)計(jì)才能將提高k倍的吞吐率,理想狀況主要基于3條假設(shè)

32、,我們稱之為“流水線理想假設(shè),他是正確評(píng)估流水線設(shè)計(jì)的關(guān)鍵。設(shè)計(jì)各種方案解決實(shí)際流水線與流水線理想假設(shè)之間的矛盾,這就組成了流水線設(shè)計(jì)的主要技術(shù)。流水線理想假設(shè)包括:一致的運(yùn)算分量:要完成的整個(gè)運(yùn)算量可以均勻的分成延遲一只的假設(shè)干分量。重復(fù)的運(yùn)算:輸入數(shù)據(jù)有大量相同的、重復(fù)的運(yùn)算。獨(dú)立的運(yùn)算:所有相同的重復(fù)運(yùn)算之間沒(méi)有相關(guān)性。 一致的運(yùn)算分量第一條流水線的理想假設(shè)說(shuō)明,將要進(jìn)行流水化的運(yùn)算分量均勻的分成k個(gè)延遲相同的分量。這意味著以前的設(shè)計(jì)可以均勻的分成k個(gè)均衡的流水段。如果以前總的運(yùn)算延遲,也就是非流水設(shè)計(jì)的式中周期為T,那么k級(jí)流水線的設(shè)計(jì)式中周期就是T/k,也就是流水段中每一段的延遲?;?/p>

33、于這個(gè)理想假設(shè),時(shí)鐘頻率能夠提高k倍,并且吞吐率也提高了k倍。在實(shí)際的流水線設(shè)計(jì)中,這個(gè)理想假設(shè)可能并不成立。將總的運(yùn)算分量完全均勻的分成假設(shè)干分量是不可能的。在一個(gè)具有3級(jí)流水線的浮點(diǎn)加法器的例子中,設(shè)總的延遲為500ns,流水線分3段,每一段的延遲分別為200ns,100ns,200ns.顯然,總的延遲并沒(méi)有均勻的分布到流水線的三段當(dāng)中。由于流水線的時(shí)鐘周期決定于延遲最長(zhǎng)的那一段,因此延遲較短的段會(huì)有一些無(wú)效或者失效的時(shí)間。比方浮點(diǎn)加法器的第二段,它就有100ns的無(wú)效時(shí)間,我們可以把它稱之為“內(nèi)部碎片。由于內(nèi)部碎片的存在,完成同樣的運(yùn)算的延遲將會(huì)增加。還有一個(gè)內(nèi)在的假設(shè),即流水段之間引入

34、的緩沖不會(huì)帶來(lái)額外的延遲,并且流水線的時(shí)鐘信號(hào)也不會(huì)引入額外的延遲。同樣,這一假設(shè)在實(shí)際當(dāng)中也是不能成立的。在相應(yīng)的例子中,為了保證信號(hào)的時(shí)鐘信號(hào)的準(zhǔn)確建立,設(shè)置了暫存器,因此總的時(shí)鐘周期又延長(zhǎng)了,從而導(dǎo)致了實(shí)際性能不可能提高3倍。第一條流水線理想假設(shè)主要包含了以下兩種觀點(diǎn):在將以前的運(yùn)算分量分成假設(shè)干分量是時(shí),沒(méi)有引入無(wú)效時(shí)間;段間緩沖的引入及時(shí)鐘沒(méi)有帶來(lái)額外的延遲。在芯片級(jí)的設(shè)計(jì)中,可以采用一些鎖存器,比方Earle鎖存器可以使流水線時(shí)鐘產(chǎn)生的延遲盡可能地小。因此如何將總的運(yùn)算量均勻的分到各流水段中構(gòu)成了流水線設(shè)計(jì)的第一個(gè)挑戰(zhàn)。我們的目標(biāo)是,盡可能使各個(gè)流水段保持均衡,以減少內(nèi)部碎片。由于

35、各個(gè)流水段不能完全均衡內(nèi)部碎片是不滿足第一條流水線理想假設(shè)的主要原因,這將成為一種開(kāi)銷,并導(dǎo)致k級(jí)流水線設(shè)計(jì)的吞吐率提高達(dá)不到理想的k倍。 重復(fù)的運(yùn)算第二條流水線理想假設(shè)說(shuō)明,流水線不斷地重復(fù)執(zhí)行相同的運(yùn)算。這意味著在多組輸入數(shù)據(jù)中,有些運(yùn)算是相同的并且這些運(yùn)算要反復(fù)執(zhí)行。每次執(zhí)行時(shí),流水線提供的分量執(zhí)行順序都是一樣的。對(duì)于浮點(diǎn)加法器的例子,將包含大量的浮點(diǎn)數(shù)對(duì)要進(jìn)行相加,每一對(duì)操作數(shù)都要通過(guò)相同的3級(jí)流水線。這以一設(shè)說(shuō)明,每一次的重復(fù)運(yùn)算都會(huì) 使用流水線中的所有段。對(duì)于我們的例子這顯然是成立的。浮點(diǎn)加法器滿足這條假設(shè),是因?yàn)樵摿魉€只完成了一個(gè)功能,即浮點(diǎn)加法運(yùn)算。如果你要設(shè)計(jì)的流水線要完成

36、多個(gè)功能,這一假設(shè)就不滿足了。例如,設(shè)計(jì)一條既可以計(jì)算加法又可以計(jì)算乘法的算術(shù)流水線。在多功能流水線中,單獨(dú)一項(xiàng)功能可能并不需要所有的流水段,而可能由流水段的不同子集來(lái)完成不同功能。由于輸入數(shù)據(jù)以同步方式通過(guò)流水線,有些數(shù)據(jù)可能不需要某些流水段,當(dāng)他們通過(guò)這些段的時(shí)候,將什么也不執(zhí)行。這種沒(méi)有使用或者空閑的流水段帶來(lái)了另一種形式的流水線失效,可以稱之為“外部碎片。與內(nèi)部碎片相似,外部碎片也是一種流水線開(kāi)銷,應(yīng)該盡量減小。第二條流水線理想假設(shè)認(rèn)為所有的流水段總是被充分利用。除了說(shuō)明不存在外部碎片之外,這條假設(shè)還說(shuō)明要處理的數(shù)據(jù)是大量的。第一個(gè)數(shù)據(jù)到達(dá)流水線的最后一個(gè)段需要k個(gè)周期,這k個(gè)周期稱為

37、流水線的“填充時(shí)間。最后一個(gè)數(shù)據(jù)進(jìn)入流水線的第一個(gè)段后,還需要k個(gè)周期排空流水線。在填充合排空過(guò)程中,不是所有的流水段都處于工作狀態(tài)。如果有大量的輸入數(shù)據(jù)要進(jìn)行處理,可以使流水線的填充和排空時(shí)間只占總時(shí)間的很小一局部。因此,多有流水段都可以認(rèn)為總是處于工作狀態(tài)的。 獨(dú)立的運(yùn)算第三條流水線假設(shè)說(shuō)明,流水線要處理的運(yùn)算是彼此獨(dú)立的。這意味著,所有同時(shí)間駐留在流水線中的運(yùn)算是不相關(guān)的,也就是說(shuō),任何兩個(gè)運(yùn)算之間不存在數(shù)據(jù)或者是控制相關(guān)。這一假設(shè)保證流水線處于“流動(dòng)的工作方式,即后面的運(yùn)算不會(huì)因?yàn)榇嬖谙嚓P(guān)性而等待前面運(yùn)算的完成。對(duì)于浮點(diǎn)加法器的例子中,這一假設(shè)是成立的。如果有多對(duì)操作數(shù)要進(jìn)行相加,一對(duì)

38、操作數(shù)的相加不會(huì)以來(lái)另一個(gè)加法的結(jié)果。這些操作數(shù)可以按照“流動(dòng)的方式進(jìn)行處理。這一條假設(shè)對(duì)于一些流水線可能不成立。后面的運(yùn)算可能需要前面的結(jié)果,而這兩條運(yùn)算可能同時(shí)駐留流水線中。如果后面的運(yùn)算已經(jīng)進(jìn)入到需要結(jié)果的流水段,而這時(shí)候前面的運(yùn)算還沒(méi)有到達(dá)產(chǎn)生結(jié)果的流水段,哪么后面的運(yùn)算必須在那一段等待。這種等待稱為“流水線停頓。如果某一運(yùn)算停頓在流水線的某一段,所有后續(xù)的運(yùn)算可能都要被迫停頓。流水線停頓不可防止地導(dǎo)致某些段處于空閑狀態(tài),這可以看作是一種動(dòng)態(tài)的外部碎片,因此會(huì)導(dǎo)致流水線吞吐率降低。如果相關(guān)是不可防止的,那么再設(shè)計(jì)流水線的時(shí)候,就要盡量減少流水線的停頓次數(shù)。 指令流水線前面三條流水線是流

39、水線的理想假設(shè)。在大多數(shù)情況下,算術(shù)流水線的實(shí)際情況與理想假設(shè)相差不是太大。然而,對(duì)于指令流水線,實(shí)際情況與理想假設(shè)之間的差距就要大一些。而連接這一差距的橋梁正式指令流水線設(shè)計(jì)的趣味性合挑戰(zhàn)性所在。在設(shè)計(jì)流水線處理器時(shí),這三條假設(shè)成為三個(gè)主要的挑戰(zhàn)。這三大挑戰(zhàn)同時(shí)也提供了一條探索流水線處理器設(shè)計(jì)技術(shù)的思路。 指令流水線設(shè)計(jì)在設(shè)計(jì)指令流水線時(shí),三條流水線假設(shè)成為設(shè)計(jì)的目標(biāo)。一條指令的處理過(guò)程就是要流水化的運(yùn)算,它必須被劃分成多個(gè)盡量一只的子運(yùn)算,以獲得盡量均衡的流水線。處理一條指令的時(shí)間延遲成為“指令周期,每一段的時(shí)間延遲決定了“機(jī)器周期。指令周期是一個(gè)邏輯概念,它是指指令的執(zhí)行周期。一個(gè)程序包

40、含多條指令,程序的執(zhí)行相當(dāng)于相應(yīng)運(yùn)算的反復(fù)執(zhí)行。機(jī)器周期是一個(gè)物理的概念,它包含數(shù)字邏輯電路中存儲(chǔ)單元的時(shí)鐘等,同時(shí)它也是流水線的時(shí)鐘周期。指令流水線設(shè)計(jì)的主要任務(wù)可以看作是將邏輯指令周期映射到物理機(jī)器周期。換句話說(shuō),就是將指令周期所對(duì)應(yīng)的運(yùn)算分成一個(gè)子運(yùn)算的序列,由流水線的各段運(yùn)行。要有效的進(jìn)行這種分割或者映射,必須考慮三條流水線的理想假設(shè)。一致的運(yùn)算分量 我們將指令周期分解成多個(gè)機(jī)器周期的過(guò)程稱為“量化流水段。在進(jìn)行量化流水段時(shí),要盡量減少內(nèi)部碎片。如果在量化流水段時(shí)考慮不充分,就會(huì)引入內(nèi)部碎片,從而影響流水線的利用率。第一條流水線理想假設(shè)帶來(lái)了指令流水線設(shè)計(jì)的第一個(gè)挑戰(zhàn),稱之為流水線的均

41、衡。流水線越均衡,內(nèi)部碎片越少。重復(fù)的運(yùn)算 與單一功能的算術(shù)流水線不一樣的是,指令流水線天生就是多功能流水線,即它必須能處理多種不同的指令類型。不同的指令類型需要子運(yùn)算序列稍微不同,所對(duì)應(yīng)的硬件資源也有所不同。指令流水線設(shè)計(jì)的第二個(gè)挑戰(zhàn)就是,連接或者整合不同指令類型對(duì)不同資源的需求。流水線應(yīng)能夠支持所有的指令類型;同時(shí)應(yīng)該盡量減少每種指令類型的無(wú)效或者空閑的機(jī)器周期,也就是減少外部碎片。獨(dú)立的運(yùn)算 算術(shù)流水線處理的是數(shù)組數(shù)據(jù),他們一般都不相關(guān)。與算術(shù)流水線不同的是,指令流水線所處理的指令彼此不是完全獨(dú)立的。因此,指令流水線必須要有一套內(nèi)部機(jī)制,用來(lái)檢測(cè)指令間發(fā)生的相關(guān)并保證指令相關(guān)不會(huì)導(dǎo)致錯(cuò)誤

42、。指令相關(guān)可能會(huì)導(dǎo)致流水線停頓,從而引起失效。前面提到過(guò),流水線停頓是是一種動(dòng)態(tài)的外部碎片,它會(huì)降低流水線的吞吐率。因此,指令流水線設(shè)計(jì)的第三個(gè)挑戰(zhàn)就是盡量減少流水線停頓。 指令集體系結(jié)構(gòu)的影響在正式討論指令流水線設(shè)計(jì)的三個(gè)主要挑戰(zhàn)之前,簡(jiǎn)單的考慮一下指令集體系結(jié)構(gòu)對(duì)于指令流水線的影響,將很有啟發(fā)意義。下面將一次考慮三條流水線理想假設(shè)。一致的運(yùn)算分量 使流水段保持均衡的第一個(gè)挑戰(zhàn)說(shuō)明,必須保證分量的延遲是一致的??疾煲粭l指令處理過(guò)程中的所有運(yùn)算分量,其中一定有一個(gè)分量的延遲最長(zhǎng),并且這個(gè)分量不容易再分解成細(xì)的運(yùn)算分量。在流水線處理器設(shè)計(jì)中,這樣的關(guān)鍵分量是對(duì)存儲(chǔ)器的訪問(wèn)。由于處理器和存儲(chǔ)器的速

43、度差異,存儲(chǔ)器訪問(wèn)將成為關(guān)鍵的運(yùn)算分量。為了近況使指令流水線效率更高,應(yīng)該對(duì)尋址模式進(jìn)行優(yōu)化,并且應(yīng)該采用能夠跟上處理器速度的快速cache。重復(fù)的運(yùn)算 第一個(gè)挑戰(zhàn)是將不同的指令類型對(duì)資源的要求統(tǒng)一起來(lái),這是RISC體系結(jié)構(gòu)的主要目的之一。降低指令類型的復(fù)雜性和多樣性可以降低整合不同指令類型任務(wù)的難度。復(fù)雜的尋址模式不僅需要額外的訪存,而且增加了資源需求的多樣性。將所有這些資源需求整合到一條指令流水線當(dāng)中是意見(jiàn)相當(dāng)困難的事情,并且所得到的流水線對(duì)于很多指令其效率很低。這些指令將會(huì)產(chǎn)生外部碎片,從而降低了流水線的利用率。對(duì)于一個(gè)RISC體系結(jié)構(gòu)的流水線而言,資源整合要簡(jiǎn)單一些并且得到的流水線效率

44、更高,外部碎片更少。獨(dú)立的運(yùn)算 第三個(gè)挑戰(zhàn)是盡量減少由于指令的相關(guān)而引起的流水線停頓,這可能是流水線處理器設(shè)計(jì)中最吸引人的地方。要正確地完成操作,指令流水線必須檢測(cè)并化解指令相關(guān)。復(fù)雜尋址模式,尤其是與存儲(chǔ)器訪問(wèn)有關(guān)的模式,會(huì)因?yàn)榇鎯?chǔ)器地址標(biāo)識(shí)符的問(wèn)題而導(dǎo)致相關(guān)檢測(cè)非常困難。一般來(lái)說(shuō),存放器相關(guān)比擬容易檢測(cè),因?yàn)榇娣牌髟谥噶钪惺敲鞔_指出來(lái)的。簡(jiǎn)單而且堆成的指令適宜便于進(jìn)行譯碼和相關(guān)檢測(cè)。相關(guān)的檢測(cè)和化解可以由編譯器靜態(tài)完成,也可以在運(yùn)行時(shí)由硬件動(dòng)態(tài)完成。在編譯和運(yùn)行時(shí)分別進(jìn)行怎樣的處理決定于動(dòng)態(tài)靜態(tài)界面DSI的定義。DSI的定義將導(dǎo)致許多有趣而微妙的權(quán)衡。在進(jìn)行權(quán)衡時(shí),必須將編譯器、微體系結(jié)構(gòu)

45、和微處理器設(shè)計(jì)緊密結(jié)合起來(lái)。 流水線分級(jí)的考慮理想流水化設(shè)計(jì)所獲得的性能與流水線的深度即流水線的段數(shù)是成正比的,因此似乎最好的設(shè)計(jì)就是盡量增加流水線的段數(shù)。但是,由于時(shí)鐘的限制,流水線劃分的段數(shù)總是有一個(gè)物理局限的。流水線的每一個(gè)段可以看作一個(gè)組合邏輯F加上一個(gè)鎖存器L,信號(hào)通過(guò)F之后在L出鎖存。定義為通過(guò)F的最大傳輸延遲,即通過(guò)最長(zhǎng)信號(hào)路徑的延遲;為通過(guò)F的最小傳輸延遲,即通過(guò)最短信號(hào)路徑的延遲;為正確建立時(shí)鐘信號(hào)所需要的額外時(shí)間,包括必要的建立和保持時(shí)間,以保證正確的鎖存,同時(shí)還包括可能的時(shí)鐘扭曲,即到達(dá)不同鎖存器的時(shí)鐘沿的最大時(shí)間差。假設(shè)第一組信號(hào)在時(shí)刻作用在某一級(jí)的輸入端,那么F的輸出

46、最遲將在時(shí)刻有效。當(dāng)?shù)诙M信號(hào)在時(shí)刻作用的F的輸入端時(shí),最快只要時(shí)刻就能傳到鎖存器L。要保證第二組信號(hào)不覆蓋第一組信號(hào),必須滿足: 該公式說(shuō)明,信號(hào)可能到達(dá)的最早時(shí)刻不能早于信號(hào)正確鎖存的時(shí)刻。該不等式可以重寫為:其中就是最短時(shí)鐘周期T。因此,時(shí)鐘周期T必須比大,而最大時(shí)鐘頻率不能超過(guò)1/T。由此我們可以看到,時(shí)鐘限制最終決定了流水線的深度,除了這一限制外,如果考慮價(jià)格,即流水線的費(fèi)用開(kāi)銷,最正確設(shè)計(jì)通常也不會(huì)采用最大的流水線深度。在流水線系統(tǒng)的硬件設(shè)計(jì)中,必須考慮價(jià)格和性能的權(quán)衡。一般來(lái)說(shuō),流水線的價(jià)格相對(duì)于流水線的深度成線性增長(zhǎng)。流水線深度一直是影響處理器效率的重要因素,流水線深度的增加可

47、以讓處理器時(shí)鐘頻率進(jìn)一步提高,但隨著流水線深度的增長(zhǎng)帶來(lái)的處理器的單周期執(zhí)行效率降低、發(fā)熱量上升,同時(shí)容易產(chǎn)生分支預(yù)測(cè)等問(wèn)題反面影響也會(huì)加劇,因此流水線長(zhǎng)度的尺度把握一直是處理器設(shè)計(jì)中的一個(gè)重要核心問(wèn)題。在設(shè)計(jì)流水線,要綜合各方面的因素,根據(jù)最正確性價(jià)比的要求來(lái)選擇流水線的最正確段數(shù)。 流水線處理器設(shè)計(jì)流水線處理器設(shè)計(jì)中的主要問(wèn)題就是縮小實(shí)際情況與理想假設(shè)之間的差異。所有關(guān)于流水線處理器的設(shè)計(jì)技術(shù),都可以看作是為解決這三個(gè)挑戰(zhàn)而進(jìn)行的努力。 保持流水段均衡要流水化的運(yùn)算就是每個(gè)指令周期所要進(jìn)行的工作。一個(gè)典型的指令周期可以根據(jù)功能劃分成以下5個(gè)根本分量:取指IF,Instruction fet

48、ch譯碼ID,Instruction decode取操作數(shù)OF,Operand(ds) fetch執(zhí)行EX,Instruction execution存儲(chǔ)OS,Operand store典型的指令周期從指令的取指開(kāi)始,然后進(jìn)行譯碼,以決定這條指令完成什么操作。一條指令通常帶有一個(gè)或者多個(gè)操作數(shù),這些操作數(shù)存放在存放器或者存儲(chǔ)器中,這取決于所使用的尋址方式。一旦所需要的錯(cuò)作數(shù)已準(zhǔn)備好,就可以執(zhí)行這條指令所規(guī)定的操作。將執(zhí)行所產(chǎn)生的結(jié)果存儲(chǔ)起來(lái)之后,指令周期就算結(jié)束了。分割指令周期的一種很自然的方法就是按照5個(gè)根本運(yùn)算分量來(lái)劃分,即將每一個(gè)運(yùn)算分量對(duì)應(yīng)到一個(gè)流水段,從而得到一個(gè)5級(jí)指令流水線,我們

49、稱這條流水線為根本指令流水線,簡(jiǎn)稱GNR流水線。在GNR流水線中,邏輯指令周期將映射到5個(gè)物理機(jī)器周期中。機(jī)器周期與指令周期之比為5,這個(gè)值反響了流水化的程度以及流水段的粒度。量化流水段的目的是將指令周期分割到均衡的流水段中,以盡量減少內(nèi)部碎片的數(shù)目。量化流水段可以從自然的功能劃分開(kāi)始。例如5個(gè)根本運(yùn)算分量。多個(gè)延遲較小的分量可以合并到一個(gè)新的分量,以獲得更均衡化的流水線。另外一種均衡流水線的方法那么相反,不是將具有較短延遲的分量合并起來(lái),而是將一個(gè)延遲比擬長(zhǎng)的運(yùn)算分量分割成多個(gè)延遲較短的分量。該方法以延遲較短的分量為參考,將長(zhǎng)延遲的運(yùn)算分量分割成更小的分量,使得各個(gè)分量的延遲與參考分量的延遲

50、差不多。這將導(dǎo)致機(jī)器周期的粒度更細(xì),流水化的程度更高。在具體進(jìn)行指令流水線設(shè)計(jì)的時(shí)候,這兩種方法可以結(jié)合起來(lái)使用。不管在什么情況下,量化流水段的目標(biāo)都是盡量減小內(nèi)部碎片的開(kāi)銷。 統(tǒng)一指令類型第二條流水線理想假設(shè)那么要求流水線要盡量反復(fù)進(jìn)行同樣的運(yùn)算。對(duì)于大多數(shù)指令流水線, 重復(fù)完成相同運(yùn)算的理想假設(shè)并不成立。指令流水線重復(fù)處理的指令具有不同的指令類型。雖然指令周期不斷重復(fù),但每次可能處理的是不同類型的指令。不同的指令類型有不同的資源需求,并且各個(gè)運(yùn)算分量的順序也可能不一樣。指令流水線要求能滿足不同的需求,必須提供所有指令類型所需要的所有運(yùn)算分量的超集。單獨(dú)一種指令類型可能不需要流水線中的所有流

51、水段。對(duì)于單獨(dú)一種指令類型,不需要的流水段成為某種形式的失效或者開(kāi)銷,即外部碎片。統(tǒng)一指令類型的目的,就是盡量減少所有指令類型的外部碎片。要完成一次運(yùn)算,計(jì)算機(jī)必須完成一下三個(gè)根本任務(wù):算術(shù)操作數(shù)據(jù)移動(dòng)指令定序算術(shù)操作包括對(duì)指定的操作數(shù)執(zhí)行算術(shù)合邏輯運(yùn)算,這是整個(gè)運(yùn)算中最突出的局部,所以經(jīng)常和整個(gè)運(yùn)算等同起來(lái)。一個(gè)處理器能夠支持大量的算術(shù)操作類型。數(shù)據(jù)移動(dòng)負(fù)責(zé)將操作數(shù)和結(jié)果在存儲(chǔ)地址之間進(jìn)行移動(dòng)。通常存儲(chǔ)器地址是分層次的并有專門的指令來(lái)進(jìn)行數(shù)據(jù)移動(dòng)。指令定序負(fù)責(zé)指令順序確實(shí)定。通常一個(gè)程序中的運(yùn)算包含很多條指令,通過(guò)執(zhí)行一個(gè)指令序列來(lái)完成所需要的運(yùn)算。這個(gè)指令序列,或者叫程序流,可以由指令自身

52、來(lái)確定。如何將這三個(gè)根本任務(wù)分派給ISA中的各種指令,是指令集實(shí)際中的關(guān)鍵問(wèn)題。受RISC體系結(jié)果的影響,現(xiàn)在的大多數(shù)指令集體系結(jié)構(gòu)都有一些共同的特征。這些體系結(jié)果包括Hewlett-Packard的Precision體系結(jié)構(gòu),IBM的Power體系結(jié)構(gòu),IBM/Motorola的PowerPC體系結(jié)構(gòu),還有Digital的Alpha體系結(jié)構(gòu)。這些現(xiàn)代ISA傾向于采用定長(zhǎng)指令、正交的指令格式、load/store型體系結(jié)構(gòu)和簡(jiǎn)單的尋址模式。這些體系結(jié)構(gòu)中的大多數(shù)都能與指令流水線很好的協(xié)調(diào)起來(lái)。在一個(gè)典型的現(xiàn)代RISC體系結(jié)構(gòu)中,指令集采用一種專門的指令類型來(lái)完成三個(gè)根本任務(wù)中的一個(gè),也就是說(shuō),

53、每一種指令類型只完成三個(gè)根本任務(wù)中的一個(gè)。根據(jù)三個(gè)根本任務(wù),可以將指令分成三種類型:ALU指令 完成算術(shù)和邏輯運(yùn)算Load/store指令 完成數(shù)據(jù)在存放器及存儲(chǔ)器間的移動(dòng)分支指令 控制執(zhí)行指令的順序ALU指令所執(zhí)行的算術(shù)邏輯操作嚴(yán)格地針對(duì)存放器操作數(shù)進(jìn)行,只有l(wèi)oad和store指令能訪問(wèn)數(shù)據(jù)存儲(chǔ)器。Load/store指令和分支指令都采用比擬簡(jiǎn)單的尋址模式,通常只支持帶偏移量的存放器間接尋址模式。對(duì)于分支指令,還支持PC相對(duì)尋址。在下面列出關(guān)于前兩種指令類型的詳細(xì)標(biāo)準(zhǔn),其中假設(shè)使用了指令cache(I-cache)和數(shù)據(jù)cache(D-cache)。比擬表3.1與表3.1中的兩種主要指令類

54、型標(biāo)準(zhǔn),我們可以看到,兩種指令類型的初始化分量比擬類似,然而后面的分量有些差異。這些語(yǔ)意上的差異將導(dǎo)致不同的資源需求。根本運(yùn)算分量 ALU指令類型 IF -取指令訪問(wèn)I-cache ID -解碼指令 OF -訪問(wèn)存放器文件 EX -執(zhí)行ALU操作 OS -回寫存放器文件表3.1 ALU指令類型標(biāo)準(zhǔn)根本運(yùn)算分量Load指令store指令 IF-取指令訪問(wèn)I-cache-取指令訪問(wèn)I-cache ID-解碼指令-解碼指令 OF-訪問(wèn)存放器文件基地址-生成有效地址基地址+偏移量-訪問(wèn)讀內(nèi)存訪問(wèn)D-cache-訪問(wèn)FP存放器文件存放器操作數(shù)及基地址 EX- OS-回寫存放器文件-生成有效地址基地址+偏

55、移量-訪問(wèn)寫內(nèi)存訪問(wèn)D-cache表3.2 Load/store指令類型標(biāo)準(zhǔn)統(tǒng)一不同指令類型主要是將不同資源需求有效的整合到一條指令流水線中去,使得這條流水線適合于所有的指令類型。整合的目標(biāo)是,盡量減少流水線所需要的資源總數(shù),同時(shí)盡量提高流水線中所有資源的利用率。通常,資源的整合過(guò)程包含以下三個(gè)步驟。分析每種指令類型的運(yùn)算分量序列,確定相應(yīng)的資源需求。找出指令類型之間的共性,合并相同的運(yùn)算分量,已使用相同的流水段。如果在不違背指令語(yǔ)意的情況下存在一定的靈活性,可以改變或者重新排列分量的順序,以便進(jìn)一步的整合??梢詫⑦@一過(guò)程應(yīng)用到表3.1和表3.2中。ALU,load,store指令類型的標(biāo)準(zhǔn)總

56、結(jié)如圖3.3所示?,F(xiàn)在我們由上至下實(shí)施統(tǒng)一的過(guò)程,檢查3個(gè)分量的序列合要求提供支持的硬件資源。這個(gè)過(guò)程產(chǎn)生了指令流水線各段的定義。 ALU LOAD STORE 取指令 取指令 取指令 更新PC 更新PC 更新PC IF 解碼 解碼 解碼 ID 讀存放器 讀存放器 讀存放器 RD ALU.Op 生成地址 生成地址 ALU 讀內(nèi)存 寫內(nèi)存 MEM 寫存放器 寫存放器 WB圖3.3 ALU,load,store指令類型的標(biāo)準(zhǔn)總結(jié)所有3種指令類型都有相同的IF和ID分量,因此,這兩個(gè)運(yùn)算分量可以很容易的合并起來(lái),并用來(lái)定義流水線的前兩個(gè)段,即IF和ID段,從而完成取指和譯碼工作。所有3種指令類型的O

57、F分量都要讀存放器文件。ALU指令訪問(wèn)兩個(gè)存放器并且獲得存放器操作數(shù);load指令訪問(wèn)一個(gè)存放器并獲得地址;store指令訪問(wèn)一個(gè)存放器并且獲得操作數(shù),訪問(wèn)另外一個(gè)存放器以獲得基地址。在3中情況下都要訪問(wèn)一個(gè)或者兩個(gè)存放器,這些相似的分量可以合并到流水線的第三段,成RD段并從存放器文件讀取最多兩個(gè)存放器操作數(shù)。因此存放器文件在每個(gè)時(shí)鐘周期內(nèi)必須支持兩個(gè)獨(dú)立的并行操作數(shù)。ALU指令要求有一個(gè)ALU功能單元來(lái)完成必要的算術(shù)邏輯運(yùn)算。雖然load,store指令不需要執(zhí)行這樣的操作,但是他們需要生成有效的地址來(lái)訪存。可以看出,地址生成可以由ALU功能單元來(lái)完成。因此,這些分量可以合并到流水線第4段,

58、成為ALU段并包含一個(gè)ALU功能單元,完成算術(shù)邏輯運(yùn)算或者有效地址的生成。ALU和load指令都需要想存放器寫回結(jié)果,這是他們的最后一個(gè)運(yùn)算分量。ALU指令將存放器操作的結(jié)果寫回存放器,load將訪存的數(shù)據(jù)寫入到目標(biāo)存放器。ALU指令不需要訪存,因此,理論上向目標(biāo)存放器回寫這一過(guò)程可以在ALU段之后立即進(jìn)行。然而為了load指令回寫分量統(tǒng)一起來(lái),ALU指令的存放器回寫分量向后推遲了一段,在流水線的第6段進(jìn)行,成為WB段。這將導(dǎo)致ALU指令在MEM段產(chǎn)生一個(gè)空閑周期。這是一種外部碎片并將給流水線帶來(lái)一些效率損失。通過(guò)對(duì)不同指令類型的整合,可以得到一條6級(jí)流水線,如圖3.3右側(cè)所示。 減少流水線停

59、頓第三條流水線理想假設(shè)那么認(rèn)為流水線執(zhí)行的運(yùn)算是相互獨(dú)立的。在一個(gè)k級(jí)流水線中,可能有k個(gè)不同運(yùn)算同時(shí)進(jìn)行處理。對(duì)于指令流水線,最多可能有k條不同指令同時(shí)存在于流水線中。這些指令可能不是彼此獨(dú)立的。實(shí)際上,這些指令之間通常都存在著相關(guān)。如果流水線中的指令不相關(guān),將有助于流水線的流動(dòng),或者說(shuō),指令流過(guò)流水線而不會(huì)產(chǎn)生任何流水線停頓。如果指令間存在相關(guān),那么必須檢測(cè)并化解相關(guān)。相關(guān)的化解可能要求流水線停頓。設(shè)計(jì)的挑戰(zhàn)和目標(biāo)就是減少流盡量減少流水線停頓,防止吞吐率下降。關(guān)于具體怎樣判斷各種相關(guān)并且將其化解,將在下一章中進(jìn)行討論。 流水線中各種相關(guān)及其處理我們知道級(jí)數(shù)為n的流水線,在理想情況下可以提高

60、處理性能n倍。但是,在實(shí)際中,有一些情況會(huì)阻止指令流中的下一條指令在預(yù)定的時(shí)鐘周期內(nèi)執(zhí)行,這些情況就稱為“相關(guān)冒險(xiǎn)或者“相關(guān)。這一章,我們?cè)敿?xì)的討論流水線中各種相關(guān)產(chǎn)生的原因及其處理方法。流水線中相關(guān)流水線相關(guān)阻止了流水線以理想的加速比改良處理器的性能。在流水線設(shè)計(jì)中,我們需要考慮以下三種相關(guān):資源相關(guān):當(dāng)硬件不能支持所有可能出現(xiàn)的、同時(shí)重疊執(zhí)行的指令組合時(shí),就會(huì)出現(xiàn)資源沖突,從而導(dǎo)致資源相關(guān),又稱為“結(jié)構(gòu)相關(guān)。數(shù)據(jù)相關(guān):在流水線中重疊執(zhí)行的指令中,如果一條指令依賴于前面另一條指令的執(zhí)行結(jié)果,從而導(dǎo)致流水線停頓,此時(shí)即發(fā)生數(shù)據(jù)相關(guān)。控制相關(guān):這種相關(guān)主要是由于轉(zhuǎn)移指令和其他能夠改變PC內(nèi)容的指

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論