多指令流出技術(shù)課件_第1頁
多指令流出技術(shù)課件_第2頁
多指令流出技術(shù)課件_第3頁
多指令流出技術(shù)課件_第4頁
多指令流出技術(shù)課件_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、4.4 多指令流出技術(shù) 一個時鐘周期內(nèi)流出多條指令, CPI1。 多指令流出處理器有三種基本結(jié)構(gòu): 超標量(Superscalar) 每個時鐘周期流出的指令數(shù)不定,它既可 以通過編譯器靜態(tài)調(diào)度,也可以通過記分牌或 Tomasulo算法動態(tài)調(diào)度, 超流水(Super Pipeline) 將每個功能部件進一步流水化,特別是取 指令或指令流出被分解為多個段,使得一個功 能部件在一拍中可以處理多條指令。第四章 指令級并行 超長指令字VLIW(Very Long Instruction Word,簡記為VLIW) 每個時鐘周期流出的指令數(shù)是固定的,它 們構(gòu)成一條長指令,或說是一個混合指令包, 這種處理器

2、目前只能通過編譯靜態(tài)調(diào)度。 4.4 多指令流出技術(shù) 采用前面假設(shè)的流水線延遲,并且采用相同的代 碼,即將1個標量和數(shù)組相加: Loop:LDF0,0(R1);F0=數(shù)組元素 ADDDF4,F0,F2;加上在F2中的標量 SD0(R1),F4;存結(jié)果 SUBIR1,R1,#8 ;將指針減少8(每個DW) BNEZR1,Loop;R1不等于0,轉(zhuǎn)移4.4 多指令流出技術(shù)4.4.1 靜態(tài)超標量技術(shù) 在典型的超標量處理器中,每個時鐘周期可 流出1到8條指令。 流出的指令必須不相關(guān)且滿足某些限制條件。 超標量處理器的指令序列可以采用靜態(tài)調(diào)度 或動態(tài)調(diào)度。 DLX處理器是怎樣實現(xiàn)超標量的呢? 假設(shè):每個時

3、鐘周期流出兩條指令: 取(load)指令、存(store)指 令、分支指令或整數(shù)運算操作, 任意的浮點操作。 4.4 多指令流出技術(shù)指令整數(shù)指令浮點指令整數(shù)指令浮點指令整數(shù)指令浮點指令整數(shù)指令浮點指令I(lǐng)FIFIDIDIFIFEXEXIDIDIFIFMEMMEMEXEXIDIDIFIFWBWBMEMMEMEXEXIDIDWBWBMEMMEMEXEXWBWBMEMMEMWBWB流水線工作情況 圖4.16 兩路超標量指令執(zhí)行示意圖 4.4 多指令流出技術(shù)3.通過對指令流出部件采用流水技術(shù),可以很大地 提高指令流出的速率,但同時必須采用流水化的 功能部件或多個獨立的功能部件。4.并行流出一條整數(shù)指令和

4、一條浮點指令,除了一 般的沖突監(jiān)測機制,只要增加少量的硬件。5.指令相關(guān)情況 浮點數(shù)據(jù)訪存指令將使用整數(shù)部件,會增 加訪存的結(jié)構(gòu)沖突。監(jiān)測是否存在結(jié)構(gòu)相 關(guān)只需檢查兩條指令的操作碼。 浮點寄存器端口的訪問沖突: 4.4 多指令流出技術(shù)取操作指令的結(jié)果不能在本周期或下一個周期使用,所以后續(xù)三條指令不能使用其結(jié)果。分支延遲也變?yōu)槿龡l指令,因為分支指令肯定是指令組合的第一條指令。 例4.9 下面是前面我們使用的循環(huán)程序段,在超標 量DLX流水線上將如何調(diào)度? Loop: LD F0,0(R1) ;F0=數(shù)組元素 ADDDF4,F0,F2 ;加上在F2中的標量 SD0(R1),F4 ;存結(jié)果 SUBI

5、R1,R1,#8 ;將指針減少8(每個DW) BNEZR1,Loop ;R1不等于0,轉(zhuǎn)移 4.4 多指令流出技術(shù)解:展開并經(jīng)過調(diào)度的指令序列如圖4.17所示。 Loop: LDLDLDLDLDSDSDSDSDSUBIBNEZSDF0(R1)F6,-8(R1)F10,-16(R1)F14,-24(R1)F18,-32(R1)0(R1),F4-8(R1),F8-16(R1),F12-24(R1),F16 R1,R1,#40R1,Loop8(R1),F20ADDDADDDADDDADDDADDDF4,F0,F2F8,F6,F2F12,F10,F2F16,F14,F2F20,F18,F2123456

6、789101112 整數(shù)指令 浮點指令 時鐘周期 超標量流水線上展開的代碼每次循環(huán)需12個時鐘周期,即每個迭代是2.4個時鐘周期。而在普通的DLX流水線上,沒有調(diào)度的迭代1次為9個時鐘周期,性能提高了3.75倍;調(diào)度后為6個時鐘周期,性能提高了2.5倍;展開4次并調(diào)度后每個迭代為3.5個時鐘周期,性能提高了1.4倍。 4.4 多指令流出技術(shù)6.超標量處理器與超長指令字處理器相比有兩個 優(yōu)點: (1)超標量結(jié)構(gòu)對程序員是透明的,因為處理 器能自己檢測下一條指令能否流出,從而 不需要排列指令來滿足指令流出; (2)即使是沒有經(jīng)過編譯器對超標量結(jié)構(gòu)進行 調(diào)度優(yōu)化的代碼或是舊的編譯器生成的代 碼也可以

7、運行,當然運行的效果不會很好。 要想達到很好的效果,方法之一: 使用動態(tài)超標量調(diào)度技術(shù)。4.4 多指令流出技術(shù)4.4.2 動態(tài)多指令流出技術(shù) 擴展Tomasulo算法:支持兩路超標量。 即每個時鐘周期流出兩條指令。 (一條是整數(shù)指令,另一條是浮點指令) 1.要求 指令按順序流向保留站,否則信息記錄機制 會太復(fù)雜。 將整數(shù)寄存器和浮點寄存器分開,只要不使 用相同的寄存器就可同時將一條整數(shù)指令和 一條浮點指令送到它們的保留站中去。 限制相關(guān)指令的并行執(zhí)行。 4.4 多指令流出技術(shù)2.有兩種方式可以實現(xiàn)兩路超標量。 (1) 將指令流出段進一步流水化,使指令流出的 速度是基本機器周期的兩倍。 (2)

8、對流出的指令組合進行限制.只有浮點的取 操作指令或是從整數(shù)寄存器將數(shù)據(jù)送入浮點寄 存器的傳送操作,才會產(chǎn)生相關(guān)而導致兩條指 令不能同時執(zhí)行。如果對流出的指令組合限制 減少,指令組合的復(fù)雜度增加,可能出現(xiàn)的相 關(guān)情況會更多,對硬件相關(guān)檢測的要求就會大 提高。4.4 多指令流出技術(shù)例4.10 下面的代碼運行于采用Tomasulo算法的兩路動態(tài)超標量DLX流水線上。現(xiàn)做以下假設(shè):(1)無論是否相關(guān),每個時鐘周期能流出一條整 數(shù)指令和一條浮點指令;(2)有1個整數(shù)部件,用于整數(shù)運算和地址計算; 有1個獨立的浮點功能部件;(3)指令流出和寫結(jié)果各占用1個時鐘周期;(4)有1個具有獨立分支預(yù)測能力的分支預(yù)

9、測部件, 分支指令只能單獨流出,沒有分支延遲;(5)因為寫結(jié)果占用1個周期,所以產(chǎn)生結(jié)果的延 遲為:整數(shù)運算1個周期,存儲器取數(shù)操作2 個周期,浮點運算3個周期; 4.4 多指令流出技術(shù) 列表表示出循環(huán)前面三遍循環(huán)各個指令的流出、開始執(zhí)行、訪存和將結(jié)果寫到CDB的時間。需要分析的源代碼為: Loop:LDF0,0(R1);F0=數(shù)組元素 ADDDF4,F0,F2;加上在F2中的標量 SD0(R1),F4;存結(jié)果 SUBIR1,R1,#8 ;將指針減少8(每個DW) BNEZR1,Loop;R1不等于0,轉(zhuǎn)移解 運行結(jié)果如圖4.18所示。 4.4 多指令流出技術(shù) 從圖中可以看出: 程序基本可以達

10、到3拍流出5條指令, IPC=5/3=1.67條/拍 雖然指令的流出率比較高,但是執(zhí)行效率并不是很高,16拍共執(zhí)行15條指令,平均指令執(zhí)行速度為15/16=0.94條/拍。 4.4 多指令流出技術(shù)4.4.3 超長指令字技術(shù) 采用多個獨立的功能部件,將多條指令的操作 組裝成固定格式的指令包,形成一條非常長的 指令。 超長指令字的格式固定,處理過程簡單,采用 超長指令字的處理器所需硬件量比超標量要少。 下面討論流出通道較寬的超長指令字處理器。 4.4 多指令流出技術(shù)1.超長指令字處理器的指令包括: 兩個整數(shù)操作、兩個浮點操作、兩個訪存操作和一個分支操作, 每個操作可能占用16到24位,從而指令長度

11、達到112到168位。2.指令中每一個操作字段稱為操作槽。3.超長指令字處理器中功能部件的數(shù)量和指令中包含的操作數(shù)量是對應(yīng)的。4.假設(shè)有一種技術(shù)可以產(chǎn)生滿足超長指令字要求的代碼段,這個代碼段用來構(gòu)建超長指令字。 5.下面看一個最基本的超長指令字處理器的操作過程。 4.4 多指令流出技術(shù)例4.11 假設(shè)超長指令字每個時鐘周期可同時流出兩 條訪存指令、兩條浮點指令和一條整數(shù)指令 或分支指令。給出在此處理器上數(shù)組元素循 環(huán)加一個標量的展開后的代碼序列。盡可能 展開循環(huán)以消除空操作,忽略分支指令的延 遲槽。 解 代碼序列入圖4.19所示,展開5遍循環(huán)可以 消除空操作。 4.4 多指令流出技術(shù)LDLDL

12、DSDSDSDF0,0(R1)F10,-16(R1)F18,-32(R1)0(R1),F4-16(R1),F128(R1),F20LDLDSDSDF6,-8(R1)F14,-24(R1)-8(R1),F824(R1),F16ADDDADDDADDDF4,F0,F2F12,F10,F2F20,F18,F2ADDDADDDF8,F6,F2F16,F14,F2SUBIBNEZR1,R1,#40R1,Loop訪存指令1 訪存指令2 浮點指令1 浮點指令2 整數(shù)/轉(zhuǎn)移指令 這段程序的運行時間為8個時鐘周期,每遍循環(huán)平均1.6個時鐘周期。8個時鐘周期內(nèi)流出了17條指令,每個時鐘周期2.1條。8個時鐘周期共有操作槽85=40個,有效槽的比例為42.5%。 功能部件使用效率不高是超長指

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論