




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、指令流水線技術(shù)研究 摘要:流水線技術(shù)是當(dāng)前指令集處理器設(shè)計(jì)中廣泛采用的技術(shù)。首先介紹了有關(guān)流水線的基礎(chǔ)知識,包括概念、特點(diǎn)、分類及其主要性能指標(biāo)。然后提出了三條流水線理想假設(shè),并由此得出了指令流水線設(shè)計(jì)的三大挑戰(zhàn),從而指出了在指令流水線設(shè)計(jì)時應(yīng)重點(diǎn)解決的三大問題和設(shè)計(jì)方法。最后是對該技術(shù)的總結(jié)與展望。關(guān)鍵字:指令流水線;概念;性能指標(biāo);理想假設(shè);處理器設(shè)計(jì);前言流水線技術(shù)是提高系統(tǒng)吞吐率的一項(xiàng)強(qiáng)大的實(shí)現(xiàn)技術(shù),并且不需要大量重復(fù)設(shè)置硬件。20世界60年代早期的一些高端機(jī)器中第一次采用了流水線技術(shù)。第一個采用指令流水線的機(jī)器是IBM7030(又稱作Stretch計(jì)算機(jī))。后來的CDC 6600同時
2、采用了流水線和多功能部件。到了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)中的第一個流水線實(shí)現(xiàn)。Digital的VAX和Motorola的M68K的流水線版本在商業(yè)上也取得了成功。流水線技術(shù)是當(dāng)前指令集處理器設(shè)計(jì)中廣泛采用的技術(shù)。在這里我們將重點(diǎn)放在(標(biāo)量)流水線處理器的設(shè)計(jì)。流水線處理器設(shè)計(jì)中的許多方法和技術(shù),例如用于檢測和化解相關(guān)的流水線互鎖機(jī)制,都是標(biāo)量處理器設(shè)計(jì)的基本方法。1 流水線基礎(chǔ)加快機(jī)器
3、語言的解釋過程提高機(jī)器的運(yùn)算速度是設(shè)計(jì)計(jì)算機(jī)的基本任務(wù)之一。這可以通過兩個途徑來實(shí)現(xiàn)。一個途徑是提高器件的速度,采用更好的算法,增加指令內(nèi)各微操作的并行程度,減少解釋過程所需要的拍數(shù)等多項(xiàng)措施來加快機(jī)器指令的解釋。另一個途徑則是采用重疊和流水方法,同時解釋兩條、多條以至整段程序,從而加快整個機(jī)器語言程序的解釋。流水線技術(shù)是目前廣泛應(yīng)用于微處理芯片中的一項(xiàng)關(guān)鍵技術(shù),Intel公司更是這項(xiàng)技術(shù)在微處理器中應(yīng)用的首先實(shí)現(xiàn)者。1.1 流水線概念指令的三種控制方法:順序方法、重疊方式、流水方式。順序方法是指各條機(jī)器指令之間順序串行地執(zhí)行,而且每條機(jī)器指令內(nèi)部的各個微指令也是串行執(zhí)行。這種方法雖然控制簡單
4、但速度上不去,機(jī)器各部件的利用率低。重疊方式是指在解釋第K條指令的操作完成之前就開始解釋第K+1條指令。通常都是采用一次重疊,即在任何時候,指令分析部件和指令執(zhí)行部件都只有相鄰兩條指令在重疊解釋。這種方式使指令的解釋速度有所提高,控制也不太復(fù)雜但會出現(xiàn)沖突、轉(zhuǎn)移、相關(guān)等問題,這些都需要在設(shè)計(jì)時想辦法解決。流水方式就是把并行性或并發(fā)性鑲嵌到計(jì)算機(jī)系統(tǒng)里的一中形式。它是把重疊的順序處理過程分解為若干過程,每個過程能在專用的獨(dú)立模塊上有效地并發(fā)工作的技術(shù)。在概念上“流水”可以看成“重疊”的延伸。不同的是“一次重疊”只是把一條指令的解釋分解成兩個子過程,而“流水”則是分解為更多的子過程。1.1.1指令
5、重疊一條指令的執(zhí)行過程可分為取指令、分析與執(zhí)行三個過程(如圖1.1)。取指令,取出該指令送到指令寄存器。指令的分析指的是對指令的操作碼進(jìn)行譯碼,按尋址方式合地址字段形成操作數(shù)真地址,并用此真地址去取操作數(shù),還要為準(zhǔn)備取下一條指令提前形成下一條指令的地址等。指令的執(zhí)行則是指對操作數(shù)進(jìn)行運(yùn)算、處理,或存儲運(yùn)算結(jié)果。指令的重疊解釋方式指的是,在解釋第k條指令的操作完成之前,就開始解釋第k+1條指令。假設(shè)這三個過程分別在3個不同的硬件(指令控制器、分析器和執(zhí)行部件)上進(jìn)行,則當(dāng)?shù)趉條指令處于分析階段的時候,控制器就處于空閑狀態(tài),這個時候可以對第k+1條指令進(jìn)行取指令操作,當(dāng)?shù)趉條指令處于執(zhí)行狀態(tài)時,分
6、析器就處于空閑狀態(tài),這時可以進(jìn)行對第k+1條指令的分析(圖1.2)。很顯然,重疊解釋的方式并不能加快一條指令的實(shí)現(xiàn),但是可以加快兩條相鄰指令以至一段程序的解釋。圖1.1 機(jī)器指令的順序執(zhí)行方式圖1.2 指令的重疊解釋方式1.1.2 流水線流水其實(shí)就是重疊的引申,上面談到的重疊模型實(shí)際上就是一個簡單的3級流水模型。如果將分析與執(zhí)行階段再細(xì)分為指令解碼、取操作數(shù)、執(zhí)行運(yùn)算和存儲結(jié)果,當(dāng)?shù)趉+1條指令在第k條指令執(zhí)行去操作數(shù)的時候就可以開始解碼,而不必等到分析k完全結(jié)束。這樣子在一個指令周期內(nèi)就可以同時執(zhí)行5條指令。流水線工作方式是把一個重復(fù)的過程分解為若干個子過程,每個子過程可以與其他子過程同時進(jìn)
7、行。由于這種工作方式與工程中的生產(chǎn)流水線十分相似,因此,把他成為流水線工作方式。在處理機(jī)的各個部分幾乎都可以采用流水線工作方式。指令的執(zhí)行過程可以采用流水線,稱為指令流水線。運(yùn)算中的操作部件,如浮點(diǎn)加法器,浮點(diǎn)乘法器等可以采用流水線,成為操作部件流水線。訪問主存儲器部件也可以采用流水線。甚至在處理機(jī)之間,機(jī)器之間也可以采用流水線。圖1.3指令流水線1.1.3 流水線的特點(diǎn)從上面的分析中可以看到,在處理機(jī)中采用流水線方式與采用傳統(tǒng)的串行方式相比,具有一下特點(diǎn):1. 在流水線中處理的必須是連續(xù)任務(wù),只有連續(xù)不斷的提供任務(wù)才能充分發(fā)揮流水線的效率。例如。要是浮點(diǎn)加法器充分發(fā)揮作用,需要連續(xù)提供浮點(diǎn)加
8、法運(yùn)算。然而,由于程序本身的原因和程序設(shè)計(jì)過程中人為造成的一些原因,入數(shù)據(jù)相關(guān)等,不可能為浮點(diǎn)加法器連續(xù)的提供同一種操作。因此,在采用流水線工作方式的處理器中,特別是當(dāng)流水線的級數(shù)較多時,要在軟件和硬件等多方面為流水線提供連續(xù)的任務(wù),以提高流水線的效率。2. 把一個任務(wù)分解成幾個有聯(lián)系的子任務(wù),每個任務(wù)由一個專門的功能部件來實(shí)現(xiàn)。因此,流水線實(shí)際上是把一個大的功能部件分解為多個獨(dú)立的功能部件,并依靠多個功能部件并行工作來縮短程序的執(zhí)行時間。在流水線中,一個子任務(wù)通常稱為一個子過程,或者一個功能段。3. 在流水線每一個功能部件后面都要有一個緩沖寄存器,或稱為鎖存器等,用于保存本段執(zhí)行的結(jié)果。這是
9、因?yàn)榱魉€中每一段的延遲一般都不可能相等,因此,在段與段之間傳遞子任務(wù)時,必須要通過緩沖寄存器。當(dāng)某一個功能段的時間變化范圍比較大的時候,要設(shè)置多個緩沖寄存器。4. 流水線中各個段要盡量勻稱,即時間要求盡量相等,否則將容易引起“阻塞”、“斷流”等問題。執(zhí)行時間最長的段將成為整個流水線的“瓶頸”,這時,流水線中各段將受到限制而不能充分發(fā)揮作用。只有當(dāng)整個流水線完全充滿時,整個流水線的效率才能得到充分的發(fā)揮。為了設(shè)計(jì)出高效率的流水線,要充分注意上述問題。1.1.4 流水線的分類從不同的角度,按照不同的觀點(diǎn),可以把流水線分成多種不同的類型。平時所說的某種流水線,往往是按照某種觀點(diǎn),或者從某一個特定的
10、角度對流水線進(jìn)行分類的結(jié)果。因此,從名稱上只能反應(yīng)出這種流水線在某一個方面的特點(diǎn)或者功能。按照流水線的各功能段之間是否有反饋信號,可以把流水線分為線性流水線和非線性流水線。線性流水線是將流水線各個功能段逐個串聯(lián)起來,輸入數(shù)據(jù)從流水線的一段進(jìn)入,從另外一段流出。數(shù)據(jù)在流水線中經(jīng)過時,沒一個功能段都流過一次,且僅僅流過一次。一條線性流水線通常只完成固定的一種功能,在現(xiàn)代計(jì)算機(jī)系統(tǒng)中,線性流水線已經(jīng)被廣泛的應(yīng)用于指令執(zhí)行過程、各種算術(shù)運(yùn)算操作、存儲器訪問操作等。圖1.4 非線性流水線非線性流水線經(jīng)常用于遞歸調(diào)用,或者構(gòu)成多功能流水線。按照流水線使用的不同級別,可以把流水線分為功能部件級、處理器級以及
11、處理機(jī)之間等多種類型。處理機(jī)級流水線即指令流水線,他把一條指令執(zhí)行過程分解為多個子過程,每一個子過程在一個獨(dú)立的功能部件中完成。功能部件級流水線也稱為運(yùn)算操作流水線,如浮點(diǎn)加法器流水線、浮點(diǎn)乘法器流水線等。處理機(jī)間流水線又稱為宏流水線,一般是兩臺以上處理機(jī)通過存儲器串行連接起來,每一個處理機(jī)對一個數(shù)據(jù)流的不同部分分別進(jìn)行處理。 圖1.5 指令流水線流水線又可分為單功能流水線和多功能流水線。顧名思義,單功能流水線只能完成固定的單一功能,多流水線通過各個段間進(jìn)行不同的連接,在不同的時間內(nèi)或者統(tǒng)一時間內(nèi)通過不同的連接方式完成不同的功能。在多功能流水線中,根據(jù)同一時間內(nèi)是否可以連接成多種方式,同時執(zhí)行
12、多種任務(wù),可以把多功能流水線分為靜態(tài)流水線合動態(tài)流水線。所謂靜態(tài)流水線指的是在同一時間段內(nèi),多功能流水線各段只能按照一定固定的方式連接,實(shí)現(xiàn)一種固定的功能。只有當(dāng)按照這種連接方式工作的所有任務(wù)都流出流水線之后,才能重新進(jìn)行連接,完成其他功能。動態(tài)流水線則在同一時間段內(nèi),可以按照不同的連接方式,完成多種不同的功能。這個時候要求流水線中個功能部件之間不能發(fā)生沖突。除了以上幾種分類方法外,還可以根據(jù)其他標(biāo)準(zhǔn),從不同角度對流水線進(jìn)行分類。1.2 流水線的主要性能衡量流水線主要性能的指標(biāo)主要有吞吐率,加速比和效率。1.2.1 吞吐率吞吐率是指在單位時間內(nèi)流水線所完成的任務(wù)數(shù)量或者輸出的結(jié)果數(shù)量。即: 式
13、(2.1)中,n為任務(wù)數(shù),是處理完成n個任務(wù)做用的時間。本式為計(jì)算吞吐率最基本的公式。有的時候我們還需要求一條流水線的最大吞吐率: 式(2.2)中為第k個子過程所花費(fèi)的時間。最大吞吐率受限于流水線中最慢子過程即瓶頸子過程所需要的時間。為了提高流水線的最大吞吐率,首先要找出瓶頸,然后設(shè)法消除此瓶頸。消除瓶頸有兩種辦法,一是將瓶頸子過程再細(xì)分,另一種辦法是通過重復(fù)設(shè)置多套瓶頸段并聯(lián),讓他們交叉進(jìn)行。后一種方法需要解決好在各并行子過程之間的任務(wù)分配合同步控制,比起瓶頸子過程再細(xì)分控制要復(fù)雜、設(shè)備量要多一些。1.2.2 加速比和效率完成一批任務(wù),不使用流水線所花的時間與使用流水線所用時間直比即為流水線
14、的加速比。如果不使用流水線,即順序執(zhí)行所用時間為,使用流水線的執(zhí)行時間為,則流水線的加速比為: 這是計(jì)算流水線加速比的基本公式。流水線的效率是指流水線的設(shè)備利用率。在時空圖上,流水線的效率定義為n個任務(wù)所占的時空區(qū)域與k個功能區(qū)域所占時空區(qū)域之比。因此,流水線的效率包含有時間和空間兩方面的因素。實(shí)際上,n個任務(wù)所占的時空區(qū)域就是順序執(zhí)行n個任務(wù)所用的總的時間。而一條k段流水線完成n個任務(wù)總的時空區(qū)域?yàn)閗,其中是流水線完成n個任務(wù)所用的總時間。則一條k段流水線的效率可表示為: 此式是計(jì)算流水線效率的一般公式。如果流水線各段執(zhí)行時間均相等,且輸入的n個任務(wù)是連續(xù)的,則一條k段流水線的效率為: 從流
15、水線的時空圖上來看,上式分母部分是完成n個任務(wù)所用時間與k個功能段所圍成的總面積,而分子部分則是k個功能段實(shí)際所占有的面積。因此,利用時空圖來計(jì)算流水線的效率十分方便。2 指令流水線設(shè)計(jì)我們做任何事情,都希望能夠達(dá)到理想狀態(tài),但這往往是不現(xiàn)實(shí)的,我們研究理想狀態(tài)的意義就在于給出一個衡量的標(biāo)準(zhǔn),并且努力向這個標(biāo)準(zhǔn)靠近,這在指令流水線的設(shè)計(jì)過程中也不例外。2.1流水線理想假設(shè)對于指令流水線的目的,我們是希望能最大限度的提高系統(tǒng)的性能。然而在實(shí)際中卻往往做不到,因?yàn)橹挥性诶硐霠顟B(tài)下,k級流水線的設(shè)計(jì)才能將提高k倍的吞吐率,理想狀況主要基于3條假設(shè),我們稱之為“流水線理想假設(shè)”,他是正確評估流水線設(shè)計(jì)
16、的關(guān)鍵。設(shè)計(jì)各種方案解決實(shí)際流水線與流水線理想假設(shè)之間的矛盾,這就組成了流水線設(shè)計(jì)的主要技術(shù)。流水線理想假設(shè)包括:1. 一致的運(yùn)算分量:要完成的整個運(yùn)算量可以均勻的分成延遲一只的若干分量。2. 重復(fù)的運(yùn)算:輸入數(shù)據(jù)有大量相同的、重復(fù)的運(yùn)算。3. 獨(dú)立的運(yùn)算:所有相同的重復(fù)運(yùn)算之間沒有相關(guān)性。2.1.1 一致的運(yùn)算分量第一條流水線的理想假設(shè)說明,將要進(jìn)行流水化的運(yùn)算分量均勻的分成k個延遲相同的分量。這意味著以前的設(shè)計(jì)可以均勻的分成k個均衡的流水段。如果以前總的運(yùn)算延遲,也就是非流水設(shè)計(jì)的式中周期為T,那么k級流水線的設(shè)計(jì)式中周期就是T/k,也就是流水段中每一段的延遲?;谶@個理想假設(shè),時鐘頻率能
17、夠提高k倍,并且吞吐率也提高了k倍。在實(shí)際的流水線設(shè)計(jì)中,這個理想假設(shè)可能并不成立。將總的運(yùn)算分量完全均勻的分成若干分量是不可能的。在一個具有3級流水線的浮點(diǎn)加法器的例子中,設(shè)總的延遲為500ns,流水線分3段,每一段的延遲分別為200ns,100ns,200ns.顯然,總的延遲并沒有均勻的分布到流水線的三段當(dāng)中。由于流水線的時鐘周期決定于延遲最長的那一段,因此延遲較短的段會有一些無效或者失效的時間。比如浮點(diǎn)加法器的第二段,它就有100ns的無效時間,我們可以把它稱之為“內(nèi)部碎片”。由于內(nèi)部碎片的存在,完成同樣的運(yùn)算的延遲將會增加。還有一個內(nèi)在的假設(shè),即流水段之間引入的緩沖不會帶來額外的延遲,
18、并且流水線的時鐘信號也不會引入額外的延遲。同樣,這一假設(shè)在實(shí)際當(dāng)中也是不能成立的。在相應(yīng)的例子中,為了保證信號的時鐘信號的準(zhǔn)確建立,設(shè)置了暫存器,因此總的時鐘周期又延長了,從而導(dǎo)致了實(shí)際性能不可能提高3倍。第一條流水線理想假設(shè)主要包含了以下兩種觀點(diǎn):在將以前的運(yùn)算分量分成若干分量是時,沒有引入無效時間;段間緩沖的引入及時鐘沒有帶來額外的延遲。在芯片級的設(shè)計(jì)中,可以采用一些鎖存器,比如Earle鎖存器可以使流水線時鐘產(chǎn)生的延遲盡可能地小。因此如何將總的運(yùn)算量均勻的分到各流水段中構(gòu)成了流水線設(shè)計(jì)的第一個挑戰(zhàn)。我們的目標(biāo)是,盡可能使各個流水段保持均衡,以減少內(nèi)部碎片。由于各個流水段不能完全均衡內(nèi)部碎
19、片是不滿足第一條流水線理想假設(shè)的主要原因,這將成為一種開銷,并導(dǎo)致k級流水線設(shè)計(jì)的吞吐率提高達(dá)不到理想的k倍。2.1.2 重復(fù)的運(yùn)算第二條流水線理想假設(shè)說明,流水線不斷地重復(fù)執(zhí)行相同的運(yùn)算。這意味著在多組輸入數(shù)據(jù)中,有些運(yùn)算是相同的并且這些運(yùn)算要反復(fù)執(zhí)行。每次執(zhí)行時,流水線提供的分量執(zhí)行順序都是一樣的。對于浮點(diǎn)加法器的例子,將包含大量的浮點(diǎn)數(shù)對要進(jìn)行相加,每一對操作數(shù)都要通過相同的3級流水線。這以一設(shè)說明,每一次的重復(fù)運(yùn)算都會 使用流水線中的所有段。對于我們的例子這顯然是成立的。浮點(diǎn)加法器滿足這條假設(shè),是因?yàn)樵摿魉€只完成了一個功能,即浮點(diǎn)加法運(yùn)算。如果你要設(shè)計(jì)的流水線要完成多個功能,這一假設(shè)
20、就不滿足了。例如,設(shè)計(jì)一條既可以計(jì)算加法又可以計(jì)算乘法的算術(shù)流水線。在多功能流水線中,單獨(dú)一項(xiàng)功能可能并不需要所有的流水段,而可能由流水段的不同子集來完成不同功能。由于輸入數(shù)據(jù)以同步方式通過流水線,有些數(shù)據(jù)可能不需要某些流水段,當(dāng)他們通過這些段的時候,將什么也不執(zhí)行。這種沒有使用或者空閑的流水段帶來了另一種形式的流水線失效,可以稱之為“外部碎片”。與內(nèi)部碎片相似,外部碎片也是一種流水線開銷,應(yīng)該盡量減小。第二條流水線理想假設(shè)認(rèn)為所有的流水段總是被充分利用。除了說明不存在外部碎片之外,這條假設(shè)還說明要處理的數(shù)據(jù)是大量的。第一個數(shù)據(jù)達(dá)到流水線的最后一個段需要k個周期,這k個周期稱為流水線的“填充時
21、間”。最后一個數(shù)據(jù)進(jìn)入流水線的第一個段后,還需要k個周期排空流水線。在填充合排空過程中,不是所有的流水段都處于工作狀態(tài)。如果有大量的輸入數(shù)據(jù)要進(jìn)行處理,可以使流水線的填充和排空時間只占總時間的很小一部分。因此,多有流水段都可以認(rèn)為總是處于工作狀態(tài)的。2.1.3 獨(dú)立的運(yùn)算第三條流水線假設(shè)說明,流水線要處理的運(yùn)算是彼此獨(dú)立的。這意味著,所有同時間駐留在流水線中的運(yùn)算是不相關(guān)的,也就是說,任何兩個運(yùn)算之間不存在數(shù)據(jù)或者是控制相關(guān)。這一假設(shè)保證流水線處于“流動”的工作方式,即后面的運(yùn)算不會因?yàn)榇嬖谙嚓P(guān)性而等待前面運(yùn)算的完成。對于浮點(diǎn)加法器的例子中,這一假設(shè)是成立的。如果有多對操作數(shù)要進(jìn)行相加,一對操
22、作數(shù)的相加不會以來另一個加法的結(jié)果。這些操作數(shù)可以按照“流動”的方式進(jìn)行處理。這一條假設(shè)對于一些流水線可能不成立。后面的運(yùn)算可能需要前面的結(jié)果,而這兩條運(yùn)算可能同時駐留流水線中。如果后面的運(yùn)算已經(jīng)進(jìn)入到需要結(jié)果的流水段,而這時候前面的運(yùn)算還沒有到達(dá)產(chǎn)生結(jié)果的流水段,哪么后面的運(yùn)算必須在那一段等待。這種等待稱為“流水線停頓”。如果某一運(yùn)算停頓在流水線的某一段,所有后續(xù)的運(yùn)算可能都要被迫停頓。流水線停頓不可避免地導(dǎo)致某些段處于空閑狀態(tài),這可以看作是一種動態(tài)的外部碎片,因此會導(dǎo)致流水線吞吐率降低。如果相關(guān)是不可避免的,那么再設(shè)計(jì)流水線的時候,就要盡量減少流水線的停頓次數(shù)。3 指令流水線前面三條流水線
23、是流水線的理想假設(shè)。在大多數(shù)情況下,算術(shù)流水線的實(shí)際情況與理想假設(shè)相差不是太大。然而,對于指令流水線,實(shí)際情況與理想假設(shè)之間的差距就要大一些。而連接這一差距的橋梁正式指令流水線設(shè)計(jì)的趣味性合挑戰(zhàn)性所在。在設(shè)計(jì)流水線處理器時,這三條假設(shè)成為三個主要的挑戰(zhàn)。這三大挑戰(zhàn)同時也提供了一條探索流水線處理器設(shè)計(jì)技術(shù)的思路。3.1指令流水線設(shè)計(jì)在設(shè)計(jì)指令流水線時,三條流水線假設(shè)成為設(shè)計(jì)的目標(biāo)。一條指令的處理過程就是要流水化的運(yùn)算,它必須被劃分成多個盡量一致的子運(yùn)算,以獲得盡量均衡的流水線。處理一條指令的時間延遲成為“指令周期”,每一段的時間延遲決定了“機(jī)器周期”。指令周期是一個邏輯概念,它是指指令的執(zhí)行周期
24、。一個程序包含多條指令,程序的執(zhí)行相當(dāng)于相應(yīng)運(yùn)算的反復(fù)執(zhí)行。機(jī)器周期是一個物理的概念,它包含數(shù)字邏輯電路中存儲單元的時鐘等,同時它也是流水線的時鐘周期。指令流水線設(shè)計(jì)的主要任務(wù)可以看作是將邏輯指令周期映射到物理機(jī)器周期。換句話說,就是將指令周期所對應(yīng)的運(yùn)算分成一個子運(yùn)算的序列,由流水線的各段運(yùn)行。要有效的進(jìn)行這種分割或者映射,必須考慮三條流水線的理想假設(shè)。一致的運(yùn)算分量 我們將指令周期分解成多個機(jī)器周期的過程稱為“量化流水段”。在進(jìn)行量化流水段時,要盡量減少內(nèi)部碎片。如果在量化流水段時考慮不充分,就會引入內(nèi)部碎片,從而影響流水線的利用率。第一條流水線理想假設(shè)帶來了指令流水線設(shè)計(jì)的第一個挑戰(zhàn),稱
25、之為流水線的均衡。流水線越均衡,內(nèi)部碎片越少。重復(fù)的運(yùn)算 與單一功能的算術(shù)流水線不一樣的是,指令流水線天生就是多功能流水線,即它必須能處理多種不同的指令類型。不同的指令類型需要子運(yùn)算序列稍微不同,所對應(yīng)的硬件資源也有所不同。指令流水線設(shè)計(jì)的第二個挑戰(zhàn)就是,連接或者整合不同指令類型對不同資源的需求。流水線應(yīng)能夠支持所有的指令類型;同時應(yīng)該盡量減少每種指令類型的無效或者空閑的機(jī)器周期,也就是減少外部碎片。獨(dú)立的運(yùn)算 算術(shù)流水線處理的是數(shù)組數(shù)據(jù),他們一般都不相關(guān)。與算術(shù)流水線不同的是,指令流水線所處理的指令彼此不是完全獨(dú)立的。因此,指令流水線必須要有一套內(nèi)部機(jī)制,用來檢測指令間發(fā)生的相關(guān)并保證指令相
26、關(guān)不會導(dǎo)致錯誤。指令相關(guān)可能會導(dǎo)致流水線停頓,從而引起失效。前面提到過,流水線停頓是是一種動態(tài)的外部碎片,它會降低流水線的吞吐率。因此,指令流水線設(shè)計(jì)的第三個挑戰(zhàn)就是盡量減少流水線停頓。3.2 指令集體系結(jié)構(gòu)的影響在正式討論指令流水線設(shè)計(jì)的三個主要挑戰(zhàn)之前,簡單的考慮一下指令集體系結(jié)構(gòu)對于指令流水線的影響,將很有啟發(fā)意義。下面將一次考慮三條流水線理想假設(shè)。一致的運(yùn)算分量 使流水段保持均衡的第一個挑戰(zhàn)說明,必須保證分量的延遲是一致的??疾煲粭l指令處理過程中的所有運(yùn)算分量,其中一定有一個分量的延遲最長,并且這個分量不容易再分解成細(xì)的運(yùn)算分量。在流水線處理器設(shè)計(jì)中,這樣的關(guān)鍵分量是對存儲器的訪問。由
27、于處理器和存儲器的速度差異,存儲器訪問將成為關(guān)鍵的運(yùn)算分量。為了盡量使指令流水線效率更高,應(yīng)該對尋址模式進(jìn)行優(yōu)化,并且應(yīng)該采用能夠跟上處理器速度的快速cache。重復(fù)的運(yùn)算 第一個挑戰(zhàn)是將不同的指令類型對資源的要求統(tǒng)一起來,這是RISC體系結(jié)構(gòu)的主要目的之一。降低指令類型的復(fù)雜性和多樣性可以降低整合不同指令類型任務(wù)的難度。復(fù)雜的尋址模式不僅需要額外的訪存,而且增加了資源需求的多樣性。將所有這些資源需求整合到一條指令流水線當(dāng)中是一件相當(dāng)困難的事情,并且所得到的流水線對于很多指令其效率很低。這些指令將會產(chǎn)生外部碎片,從而降低了流水線的利用率。對于一個RISC體系結(jié)構(gòu)的流水線而言,資源整合要簡單一些
28、并且得到的流水線效率更高,外部碎片更少。獨(dú)立的運(yùn)算 第三個挑戰(zhàn)是盡量減少由于指令的相關(guān)而引起的流水線停頓,這可能是流水線處理器設(shè)計(jì)中最吸引人的地方。要正確地完成操作,指令流水線必須檢測并化解指令相關(guān)。復(fù)雜尋址模式,尤其是與存儲器訪問有關(guān)的模式,會因?yàn)榇鎯ζ鞯刂窐?biāo)識符的問題而導(dǎo)致相關(guān)檢測非常困難。一般來說,寄存器相關(guān)比較容易檢測,因?yàn)榧拇嫫髟谥噶钪惺敲鞔_指出來的。簡單而且堆成的指令合適便于進(jìn)行譯碼和相關(guān)檢測。相關(guān)的檢測和化解可以由編譯器靜態(tài)完成,也可以在運(yùn)行時由硬件動態(tài)完成。在編譯和運(yùn)行時分別進(jìn)行怎樣的處理決定于動態(tài)靜態(tài)界面(DSI)的定義。DSI的定義將導(dǎo)致許多有趣而微妙的權(quán)衡。在進(jìn)行權(quán)衡時,
29、必須將編譯器、(微)體系結(jié)構(gòu)和微處理器設(shè)計(jì)緊密結(jié)合起來。3.3 流水線分級的考慮理想流水化設(shè)計(jì)所獲得的性能與流水線的深度(即流水線的段數(shù))是成正比的,因此似乎最好的設(shè)計(jì)就是盡量增加流水線的段數(shù)。但是,由于時鐘的限制,流水線劃分的段數(shù)總是有一個物理局限的。流水線的每一個段可以看作一個組合邏輯F加上一個鎖存器L,信號通過F之后在L出鎖存。定義為通過F的最大傳輸延遲,即通過最長信號路徑的延遲;為通過F的最小傳輸延遲,即通過最短信號路徑的延遲;為正確建立時鐘信號所需要的額外時間,包括必要的建立和保持時間,以保證正確的鎖存,同時還包括可能的時鐘扭曲,即達(dá)到不同鎖存器的時鐘沿的最大時間差。假設(shè)第一組信號在
30、時刻作用在某一級的輸入端,那么F的輸出最遲將在時刻有效。當(dāng)?shù)诙M信號在時刻作用的F的輸入端時,最快只要時刻就能傳到鎖存器L。要保證第二組信號不覆蓋第一組信號,必須滿足: 該公式說明,信號可能到達(dá)的最早時刻不能早于信號正確鎖存的時刻。該不等式可以重寫為:其中就是最短時鐘周期T。因此,時鐘周期T必須比大,而最大時鐘頻率不能超過1/T。由此我們可以看到,時鐘限制最終決定了流水線的深度,除了這一限制外,如果考慮價格,即流水線的費(fèi)用開銷,最佳設(shè)計(jì)通常也不會采用最大的流水線深度。在流水線系統(tǒng)的硬件設(shè)計(jì)中,必須考慮價格和性能的權(quán)衡。一般來說,流水線的價格相對于流水線的深度成線性增長。流水線深度一直是影響處理
31、器效率的重要因素,流水線深度的增加可以讓處理器時鐘頻率進(jìn)一步提高,但隨著流水線深度的增長帶來的處理器的單周期執(zhí)行效率降低、發(fā)熱量上升,同時容易產(chǎn)生分支預(yù)測等問題反面影響也會加劇,因此流水線長度的尺度把握一直是處理器設(shè)計(jì)中的一個重要核心問題。在設(shè)計(jì)流水線,要綜合各方面的因素,根據(jù)最佳性價比的要求來選擇流水線的最佳段數(shù)。3.4 流水線處理器設(shè)計(jì)流水線處理器設(shè)計(jì)中的主要問題就是縮小實(shí)際情況與理想假設(shè)之間的差異。所有關(guān)于流水線處理器的設(shè)計(jì)技術(shù),都可以看作是為解決這三個挑戰(zhàn)而進(jìn)行的努力。3.4.1 保持流水段均衡要流水化的運(yùn)算就是每個指令周期所要進(jìn)行的工作。一個典型的指令周期可以根據(jù)功能劃分成以下5個基
32、本分量:1. 取指(IF,Instruction fetch)2. 譯碼(ID,Instruction decode)3. 取操作數(shù)(OF,Operand(ds) fetch)4. 執(zhí)行(EX,Instruction execution)5. 存儲(OS,Operand store)典型的指令周期從指令的取指開始,然后進(jìn)行譯碼,以決定這條指令完成什么操作。一條指令通常帶有一個或者多個操作數(shù),這些操作數(shù)存放在寄存器或者存儲器中,這取決于所使用的尋址方式。一旦所需要的操作數(shù)已準(zhǔn)備好,就可以執(zhí)行這條指令所規(guī)定的操作。將執(zhí)行所產(chǎn)生的結(jié)果存儲起來之后,指令周期就算結(jié)束了。分割指令周期的一種很自然的方法就
33、是按照5個基本運(yùn)算分量來劃分,即將每一個運(yùn)算分量對應(yīng)到一個流水段,從而得到一個5級指令流水線,我們稱這條流水線為基本指令流水線,簡稱GNR流水線。在GNR流水線中,邏輯指令周期將映射到5個物理機(jī)器周期中。機(jī)器周期與指令周期之比為5,這個值反應(yīng)了流水化的程度以及流水段的粒度。量化流水段的目的是將指令周期分割到均衡的流水段中,以盡量減少內(nèi)部碎片的數(shù)目。量化流水段可以從自然的功能劃分開始。例如5個基本運(yùn)算分量。多個延遲較小的分量可以合并到一個新的分量,以獲得更均衡化的流水線。另外一種均衡流水線的方法則相反,不是將具有較短延遲的分量合并起來,而是將一個延遲比較長的運(yùn)算分量分割成多個延遲較短的分量。該方
34、法以延遲較短的分量為參考,將長延遲的運(yùn)算分量分割成更小的分量,使得各個分量的延遲與參考分量的延遲差不多。這將導(dǎo)致機(jī)器周期的粒度更細(xì),流水化的程度更高。在具體進(jìn)行指令流水線設(shè)計(jì)的時候,這兩種方法可以結(jié)合起來使用。不管在什么情況下,量化流水段的目標(biāo)都是盡量減小內(nèi)部碎片的開銷。3.4.2 統(tǒng)一指令類型第二條流水線理想假設(shè)則要求流水線要盡量反復(fù)進(jìn)行同樣的運(yùn)算。對于大多數(shù)指令流水線, 重復(fù)完成相同運(yùn)算的理想假設(shè)并不成立。指令流水線重復(fù)處理的指令具有不同的指令類型。雖然指令周期不斷重復(fù),但每次可能處理的是不同類型的指令。不同的指令類型有不同的資源需求,并且各個運(yùn)算分量的順序也可能不一樣。指令流水線要求能滿
35、足不同的需求,必須提供所有指令類型所需要的所有運(yùn)算分量的超集。單獨(dú)一種指令類型可能不需要流水線中的所有流水段。對于單獨(dú)一種指令類型,不需要的流水段成為某種形式的失效或者開銷,即外部碎片。統(tǒng)一指令類型的目的,就是盡量減少所有指令類型的外部碎片。要完成一次運(yùn)算,計(jì)算機(jī)必須完成一下三個基本任務(wù):1. 算術(shù)操作2. 數(shù)據(jù)移動3. 指令定序算術(shù)操作包括對指定的操作數(shù)執(zhí)行算術(shù)合邏輯運(yùn)算,這是整個運(yùn)算中最突出的部分,所以經(jīng)常和整個運(yùn)算等同起來。一個處理器能夠支持大量的算術(shù)操作類型。數(shù)據(jù)移動負(fù)責(zé)將操作數(shù)和結(jié)果在存儲地址之間進(jìn)行移動。通常存儲器地址是分層次的并有專門的指令來進(jìn)行數(shù)據(jù)移動。指令定序負(fù)責(zé)指令順序的確
36、定。通常一個程序中的運(yùn)算包含很多條指令,通過執(zhí)行一個指令序列來完成所需要的運(yùn)算。這個指令序列,或者叫程序流,可以由指令自身來確定。如何將這三個基本任務(wù)分派給ISA中的各種指令,是指令集實(shí)際中的關(guā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傾向于采用定長指令、正交的指令格式、load/store型體系結(jié)構(gòu)和簡單的尋址模式。這些體系結(jié)構(gòu)中的大多數(shù)都能與指令流
37、水線很好的協(xié)調(diào)起來。在一個典型的現(xiàn)代RISC體系結(jié)構(gòu)中,指令集采用一種專門的指令類型來完成三個基本任務(wù)中的一個,也就是說,每一種指令類型只完成三個基本任務(wù)中的一個。根據(jù)三個基本任務(wù),可以將指令分成三種類型:1. ALU指令 完成算術(shù)和邏輯運(yùn)算2. Load/store指令 完成數(shù)據(jù)在寄存器及存儲器間的移動3. 分支指令 控制執(zhí)行指令的順序ALU指令所執(zhí)行的算術(shù)邏輯操作嚴(yán)格地針對寄存器操作數(shù)進(jìn)行,只有l(wèi)oad和store指令能訪問數(shù)據(jù)存儲器。Load/store指令和分支指令都采用比較簡單的尋址模式,通常只支持帶偏移量的寄存器間接尋址模式。對于分支指令,還支持PC相對尋址。在下面列出關(guān)于前兩種指
38、令類型的詳細(xì)規(guī)范,其中假設(shè)使用了指令cache(I-cache)和數(shù)據(jù)cache(D-cache)。比較表3.1與表3.2中的兩種主要指令類型規(guī)范,我們可以看到,兩種指令類型的初始化分量比較類似,然而后面的分量有些差異。這些語意上的差異將導(dǎo)致不同的資源需求?;具\(yùn)算分量 ALU指令類型 IF -取指令(訪問I-cache) ID -解碼指令 OF -訪問寄存器文件 EX -執(zhí)行ALU操作 OS -回寫寄存器文件表3.1 ALU指令類型規(guī)范基本運(yùn)算分量Load指令store指令 IF-取指令(訪問I-cache)-取指令(訪問I-cache) ID-解碼指令-解碼指令 OF-訪問寄存器文件(基地
39、址)-生成有效地址(基地址+偏移量)-訪問(讀)內(nèi)存(訪問D-cache)-訪問FP寄存器文件(寄存器操作數(shù)及基地址) EX- OS-回寫寄存器文件-生成有效地址(基地址+偏移量)-訪問(寫)內(nèi)存(訪問D-cache)表3.2 Load/store指令類型規(guī)范統(tǒng)一不同指令類型主要是將不同資源需求有效的整合到一條指令流水線中去,使得這條流水線適合于所有的指令類型。整合的目標(biāo)是,盡量減少流水線所需要的資源總數(shù),同時盡量提高流水線中所有資源的利用率。通常,資源的整合過程包含以下三個步驟。1. 分析每種指令類型的運(yùn)算分量序列,確定相應(yīng)的資源需求。2. 找出指令類型之間的共性,合并相同的運(yùn)算分量,以使用
40、相同的流水段。3. 如果在不違背指令語意的情況下存在一定的靈活性,可以改變或者重新排列分量的順序,以便進(jìn)一步的整合??梢詫⑦@一過程應(yīng)用到表3.1和表3.2中。ALU,load,store指令類型的規(guī)范總結(jié)如圖3.3所示?,F(xiàn)在我們由上至下實(shí)施統(tǒng)一的過程,檢查3個分量的序列合要求提供支持的硬件資源。這個過程產(chǎn)生了指令流水線各段的定義。 ALU LOAD STORE 取指令 取指令 取指令 更新PC 更新PC 更新PC IF 解碼 解碼 解碼 ID 讀寄存器 讀寄存器 讀寄存器 RD ALU.Op 生成地址 生成地址 ALU 讀內(nèi)存 寫內(nèi)存 MEM 寫寄存器 寫寄存器 WB圖3.3 ALU,load
41、,store指令類型的規(guī)范總結(jié)所有3種指令類型都有相同的IF和ID分量,因此,這兩個運(yùn)算分量可以很容易的合并起來,并用來定義流水線的前兩個段,即IF和ID段,從而完成取指和譯碼工作。所有3種指令類型的OF分量都要讀寄存器文件。ALU指令訪問兩個寄存器并且獲得寄存器操作數(shù);load指令訪問一個寄存器并獲得地址;store指令訪問一個寄存器并且獲得操作數(shù),訪問另外一個寄存器以獲得基地址。在3中情況下都要訪問一個或者兩個寄存器,這些相似的分量可以合并到流水線的第三段,成RD段并從寄存器文件讀取最多兩個寄存器操作數(shù)。因此寄存器文件在每個時鐘周期內(nèi)必須支持兩個獨(dú)立的并行操作數(shù)。ALU指令要求有一個ALU功能單元來完成必要的算術(shù)邏輯運(yùn)算。雖然load,store指令不需要執(zhí)行這樣的操作,但是他們需要生成有效的地址來訪存??梢钥闯觯刂飞煽梢杂葾LU功能單元來完成。因此,這些分量可以合并到流水線第4段,成為ALU段并包含一個ALU功能單元,完成算術(shù)邏輯運(yùn)算或者有效地址的生成。ALU和load指令都需要想寄存器寫回結(jié)果,這是他們的最后一個運(yùn)算分量。ALU指令將寄存器操作的結(jié)果寫回寄存器,load將訪存的數(shù)據(jù)寫入到目標(biāo)寄存器。ALU指令不需要訪存
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年商務(wù)印書館文津文化招聘筆試真題
- 2024年寧德市周寧縣人民法院招聘筆試真題
- 2024年成都中醫(yī)藥大學(xué)選調(diào)工作人員筆試真題
- 山東省德州市武城縣2025屆八下數(shù)學(xué)期末學(xué)業(yè)質(zhì)量監(jiān)測試題含解析
- 廣東省深圳市福田區(qū)八校2025屆八下數(shù)學(xué)期末質(zhì)量跟蹤監(jiān)視試題含解析
- 2025年市場機(jī)會與戰(zhàn)略應(yīng)對試題及答案
- 數(shù)據(jù)通訊安全技術(shù)考題及答案
- 2025年法學(xué)概論必考試題及答案分享
- 2025年變化中的客戶需求對公司戰(zhàn)略的影響及試題及答案
- 數(shù)據(jù)可視化技術(shù)考試試題及答案
- 房地產(chǎn)交易律師見證書范文
- 2025年高考作文備考訓(xùn)練:歌曲《世界贈予我的》
- 消費(fèi)心理學(xué)-理論、案例與實(shí)踐-綜合練習(xí)題及答案
- 《深度解析張旭課程》課件
- 【重慶】2024年度重慶房地產(chǎn)市場研究報告正式版
- 測繪設(shè)備投入計(jì)劃
- 2025年復(fù)旦大學(xué)自主招生個人陳述范文分享
- 2025年度新能源充電樁建設(shè)運(yùn)營合同意見書
- 中華人民共和國工會法課件
- 漁業(yè)船員安全培訓(xùn)課件
- 2024年北京東城中小學(xué)教師招聘真題
評論
0/150
提交評論