第4章 指令級并行_第1頁
第4章 指令級并行_第2頁
第4章 指令級并行_第3頁
第4章 指令級并行_第4頁
第4章 指令級并行_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、LOGO 顧一禾 制作 2013 第5版 2021-7-1 第第4章章 指令級并行指令級并行 主講:主講: 顧一禾顧一禾 2021-7-12 本章學習內容 u指令級并行的基本概念指令級并行的基本概念 u指令的動態(tài)調度指令的動態(tài)調度 u動態(tài)分支預測技術動態(tài)分支預測技術 u多指令流出技術多指令流出技術 2021-7-13 4.1 指令級并行指令級并行 u指令之間存在的潛在并行性稱為指令之間存在的潛在并行性稱為指令級指令級 并行并行。(。(ILP:Instruction-Level Parallelism) u只有將硬件技術和軟件技術互相配合,只有將硬件技術和軟件技術互相配合, 才能夠最大限度地挖掘

2、出程序中存在的才能夠最大限度地挖掘出程序中存在的 指令級并行。指令級并行。 2021-7-14 1. 流水線處理機的實際流水線處理機的實際CPI u流水線處理機的實際流水線處理機的實際CPI就是理想流水線就是理想流水線 的的CPI加上各類停頓的時鐘周期數(shù):加上各類停頓的時鐘周期數(shù): CPI流水線 流水線 = CPI理想理想 + 停頓 停頓結構沖突 結構沖突 + 停頓停頓數(shù)據沖突 數(shù)據沖突+ 停頓 停頓控制沖突 控制沖突 uCPI理想 理想即理想 即理想CPI,是衡量流水線最高性,是衡量流水線最高性 能的指標之一。能的指標之一。 2021-7-15 IPC(Instructions Per Cy

3、cle ) uIPC:每個時鐘周期內完成的指令條數(shù)。:每個時鐘周期內完成的指令條數(shù)。 uIPC是是CPI的倒數(shù)。的倒數(shù)。 u提高提高IPC的途徑之一是減少的途徑之一是減少CPI流水線 流水線 。 。 2021-7-16 2. 基本程序塊基本程序塊 u基本程序塊基本程序塊:一段除了入口和出口以外不:一段除了入口和出口以外不 包含其他分支的一個線性代碼段。包含其他分支的一個線性代碼段。 u因為程序往往平均每因為程序往往平均每57條指令就會有一條指令就會有一 個分支,而且指令之間還可能存在相關,個分支,而且指令之間還可能存在相關, 所以在基本程序塊中能開發(fā)的并行性是很所以在基本程序塊中能開發(fā)的并行性

4、是很 有限的,很可能比基本塊的大小要小很多。有限的,很可能比基本塊的大小要小很多。 u為了明顯地提高性能,必須跨越多個基本為了明顯地提高性能,必須跨越多個基本 塊開發(fā)指令的并行性。塊開發(fā)指令的并行性。 2021-7-17 3. 開發(fā)指令級并行常用的方法開發(fā)指令級并行常用的方法 u(1)開發(fā)循環(huán)級并行)開發(fā)循環(huán)級并行 u循環(huán)級并行(循環(huán)級并行(Looplevel parallelism): 循環(huán)程序不同迭代之間存在的并行性。循環(huán)程序不同迭代之間存在的并行性。 u例:例: for (i=1; i500; i=i1) ai=ais; n在每一次循環(huán)的內部,沒有任何的并行性。在每一次循環(huán)的內部,沒有任

5、何的并行性。 n每一次循環(huán)都可以與其他的循環(huán)重疊并行執(zhí)每一次循環(huán)都可以與其他的循環(huán)重疊并行執(zhí) 行。行。 u開發(fā)循環(huán)級并行性是增加指令之間并行性的最開發(fā)循環(huán)級并行性是增加指令之間并行性的最 簡單和最常用的方法。簡單和最常用的方法。 2021-7-18 開發(fā)循環(huán)級并行的基本技術開發(fā)循環(huán)級并行的基本技術 u采用循環(huán)展開技術采用循環(huán)展開技術 u采用向量指令和向量數(shù)據表示采用向量指令和向量數(shù)據表示 2021-7-19 (2 2)解決相關與流水線沖突問題)解決相關與流水線沖突問題 u相關相關是程序固有的一種屬性,它反映了程序中是程序固有的一種屬性,它反映了程序中 指令之間的相互依賴關系。指令之間的相互依賴

6、關系。 u相關的三種類型:數(shù)據相關、名相關、控制相相關的三種類型:數(shù)據相關、名相關、控制相 關。關。 u如果兩條指令相關,它們就不能并行執(zhí)行,或如果兩條指令相關,它們就不能并行執(zhí)行,或 只能部分重疊執(zhí)行。只能部分重疊執(zhí)行。 u由于相關的存在,使得指令流中的下一條指令由于相關的存在,使得指令流中的下一條指令 不能在指定時鐘周期執(zhí)行,就是發(fā)生了不能在指定時鐘周期執(zhí)行,就是發(fā)生了流水線流水線 沖突沖突。 u相關的存在限制了指令級并行(相關的存在限制了指令級并行(ILP)的開發(fā)。)的開發(fā)。 2021-7-110 u流水線沖突的三種類型:結構沖突、數(shù)據沖突、流水線沖突的三種類型:結構沖突、數(shù)據沖突、 控

7、制沖突??刂茮_突。 n結構沖突:由硬件資源沖突造成。結構沖突:由硬件資源沖突造成。 n數(shù)據沖突:由數(shù)據相關和名相關造成。數(shù)據沖突:由數(shù)據相關和名相關造成。 n控制沖突:由控制相關造成??刂茮_突:由控制相關造成。 u具體的一次相關是否會導致具體的一次相關是否會導致實際沖突實際沖突的發(fā)生以的發(fā)生以 及該沖突會帶來多長的停頓,根據流水線的屬及該沖突會帶來多長的停頓,根據流水線的屬 性而定。性而定。 2021-7-111 解決相關與沖突的方法解決相關與沖突的方法 u 保持相關,但保持相關,但避免發(fā)生沖突避免發(fā)生沖突。 n方法:指令調度,包括靜態(tài)調度和動態(tài)調度。方法:指令調度,包括靜態(tài)調度和動態(tài)調度。

8、u通過代碼變換,消除相關。通過代碼變換,消除相關。 2021-7-112 解決相關與沖突時需注意的問題解決相關與沖突時需注意的問題 u由于相關的存在,在開發(fā)指令級并行時,如果由于相關的存在,在開發(fā)指令級并行時,如果 可能影響到程序的正確性,就必須可能影響到程序的正確性,就必須注意保持程注意保持程 序順序。序順序。 n程序順序程序順序:由源程序確定的在完全串行方式:由源程序確定的在完全串行方式 下指令的執(zhí)行順序。下指令的執(zhí)行順序。 u控制相關并不是一個必須嚴格保持的關鍵屬性??刂葡嚓P并不是一個必須嚴格保持的關鍵屬性。 n當存在控制相關時,在對程序的正確性沒有當存在控制相關時,在對程序的正確性沒有

9、 影響的前提下,可以不遵守控制相關的依賴影響的前提下,可以不遵守控制相關的依賴 關系,執(zhí)行本來不該執(zhí)行的指令。關系,執(zhí)行本來不該執(zhí)行的指令。 2021-7-113 必須保持的最關鍵的兩個屬性必須保持的最關鍵的兩個屬性 u要正確地執(zhí)行程序,必須保持的最關鍵的兩個要正確地執(zhí)行程序,必須保持的最關鍵的兩個 屬性是:屬性是:數(shù)據流數(shù)據流和和異常行為。異常行為。 u保持異常行為:保持異常行為:無論怎么改變指令的執(zhí)行順序,無論怎么改變指令的執(zhí)行順序, 都不能改變程序中異常的發(fā)生情況。都不能改變程序中異常的發(fā)生情況。 n原來程序中是怎么發(fā)生的,改變執(zhí)行順序后原來程序中是怎么發(fā)生的,改變執(zhí)行順序后 還是怎么發(fā)

10、生。還是怎么發(fā)生。 n可弱化為:指令執(zhí)行順序的改變不能導致程可弱化為:指令執(zhí)行順序的改變不能導致程 序中發(fā)生新的異常。序中發(fā)生新的異常。 u如果能做到如果能做到保持保持程序的數(shù)據相關和控制相關,程序的數(shù)據相關和控制相關, 就能保持程序的數(shù)據流和異常行為。就能保持程序的數(shù)據流和異常行為。 2021-7-114 u例:例: DADDU R2,R3,R4 BEQZ R2,L1 LW R1,0(R2) L1 : u如果不保持關于如果不保持關于R2的數(shù)據相關,程序的執(zhí)行結果的數(shù)據相關,程序的執(zhí)行結果 就會改變。就會改變。 u如果不保持控制相關,把如果不保持控制相關,把LW指令移到指令移到BEQZ之前,之

11、前, 就有可能產生一個新的就有可能產生一個新的“訪存保護訪存保護”異常(如果異常(如果 R20)。)。 2021-7-115 u數(shù)據流數(shù)據流:指數(shù)據值從其產生者指令到其消費者:指數(shù)據值從其產生者指令到其消費者 指令的實際流動。指令的實際流動。 n分支指令使得數(shù)據流具有分支指令使得數(shù)據流具有動態(tài)性動態(tài)性,因為它使,因為它使 得給定指令的數(shù)據可以有多個來源。得給定指令的數(shù)據可以有多個來源。 n僅僅保持數(shù)據相關性是不夠的僅僅保持數(shù)據相關性是不夠的,一條指令可,一條指令可 能與多條先前的指令數(shù)據相關,程序順序決能與多條先前的指令數(shù)據相關,程序順序決 定了哪條指令真正是所需數(shù)據的產生者。定了哪條指令真正

12、是所需數(shù)據的產生者。 u只有再加上保持控制順序,才能夠保持程序順只有再加上保持控制順序,才能夠保持程序順 序。序。 2021-7-116 u例:例: DADDU R1,R2,R3 BEQZ R4,L1 DSUBU R1,R5,R6 L1 : OR R7,R1,R8 uOR指令中使用的指令中使用的R1值取決于值取決于BEQZ指令分支的指令分支的 是否成功。即是否成功。即OR與與DADDU或或DSUBU指令相關。指令相關。 u必須通過保持控制相關,避免對數(shù)據流的修改,必須通過保持控制相關,避免對數(shù)據流的修改, 以保證數(shù)據流的正確。以保證數(shù)據流的正確。 uDSUBU不能被移到不能被移到BEQZ之前。

13、之前。 2021-7-117 u有時,不遵守控制相關既不影響異常行為,有時,不遵守控制相關既不影響異常行為, 也不改變數(shù)據流。在這種情況下,可以大膽也不改變數(shù)據流。在這種情況下,可以大膽 地進行指令調度,把失敗分支中的指令調度地進行指令調度,把失敗分支中的指令調度 到分支指令之前。到分支指令之前。 2021-7-118 u例:例: DADDU R1,R2,R3 BEQZR12,Skipnext DSUBUR4,R5,R6 DADDUR5,R4,R9 Skipnext: OR R7,R8,R9 u如果已知如果已知R4在在Skipnext后不再被使用,而且后不再被使用,而且 DSUBU指令不會產生

14、異常,那么就可以把指令不會產生異常,那么就可以把 DSUBU指令移到指令移到BEQZ之前。之前。 u因為這個移動不會改變數(shù)據流。因為這個移動不會改變數(shù)據流。 2021-7-119 開發(fā)指令的并行性的方法開發(fā)指令的并行性的方法 u硬件方法:指令的動態(tài)調度、動態(tài)分支預測、硬件方法:指令的動態(tài)調度、動態(tài)分支預測、 多指令流出技術。多指令流出技術。 u軟件方法:指令的靜態(tài)調度、循環(huán)展開技術。軟件方法:指令的靜態(tài)調度、循環(huán)展開技術。 u軟硬件結合方法:顯式并行指令計算軟硬件結合方法:顯式并行指令計算EPIC。 2021-7-120 4.5 循環(huán)展開和指令調度循環(huán)展開和指令調度 u4.5.1 循環(huán)展開和指

15、令調度的基本方法循環(huán)展開和指令調度的基本方法 u為了充分發(fā)揮流水線的作用,必須設法讓它滿為了充分發(fā)揮流水線的作用,必須設法讓它滿 負荷工作。因此要充分開發(fā)指令之間存在的并負荷工作。因此要充分開發(fā)指令之間存在的并 行性,找出不相關的指令序列,讓它們在流水行性,找出不相關的指令序列,讓它們在流水 線上重疊并行執(zhí)行。線上重疊并行執(zhí)行。 u增加指令間并行性最簡單和最常用的方法增加指令間并行性最簡單和最常用的方法 n開發(fā)循環(huán)級并行性開發(fā)循環(huán)級并行性循環(huán)的不同迭代之間存循環(huán)的不同迭代之間存 在的并行性。在的并行性。 n在把循環(huán)展開后,通過重命名和指令調度來在把循環(huán)展開后,通過重命名和指令調度來 開發(fā)更多的

16、并行性。開發(fā)更多的并行性。 2021-7-121 編譯器指令調度能力的限制編譯器指令調度能力的限制 u編譯器完成指令調度的能力受限于兩個特性:編譯器完成指令調度的能力受限于兩個特性: n程序固有的指令級并行性;程序固有的指令級并行性; n流水線功能部件的執(zhí)行延遲。流水線功能部件的執(zhí)行延遲。 2021-7-122 浮點流水線延遲浮點流水線延遲 uLoad指令的結果可以通過定向路徑及時送給指令的結果可以通過定向路徑及時送給store指指 令,所以延遲為令,所以延遲為0,不用插入停頓。,不用插入停頓。 產生結果的指令產生結果的指令 使用結果的指令使用結果的指令 延遲(時鐘周期數(shù))延遲(時鐘周期數(shù))

17、浮點計算浮點計算 另一個浮點計算另一個浮點計算 3 浮點計算浮點計算 浮點浮點store(S.D) 2 浮點浮點load(L.D) 浮點計算浮點計算 1 浮點浮點load(L.D) 浮點浮點store(S.D) 0 2021-7-123 u例例4.6 對于下面的源代碼,轉換成對于下面的源代碼,轉換成MIPS匯編語言,匯編語言, 在不進行指令調度和進行指令調度兩種情況下,在不進行指令調度和進行指令調度兩種情況下, 分析其代碼一次循環(huán)所需的執(zhí)行時間。分析其代碼一次循環(huán)所需的執(zhí)行時間。 nfor (i=1; i=1000; i+) nxi = xi + s; u解:解: u該循環(huán)的不同迭代之間不存在

18、相關,所以多次迭該循環(huán)的不同迭代之間不存在相關,所以多次迭 代可以并行執(zhí)行。代可以并行執(zhí)行。 2021-7-124 uMIPS匯編語言代碼:匯編語言代碼: u假設假設R1的初值指向第一個元素,的初值指向第一個元素,8(R2)指向最)指向最 后一個元素。后一個元素。 Loop:L.D F0,0(R1) /取一個向量元素放入取一個向量元素放入F0 ADD.D F4,F0,F2 /加上在加上在F2中的標量中的標量 S.D F4, 0(R1) /存結果存結果 DADDIU R1,R1, #8 /將指針減將指針減8(每個數(shù)據占(每個數(shù)據占8個字節(jié))個字節(jié)) BNE R1,R2,Loop /若若R1不等于

19、不等于R2,表示尚未結束,表示尚未結束, /轉移到轉移到Loop繼續(xù)執(zhí)行繼續(xù)執(zhí)行 其中:其中: 整數(shù)寄存器整數(shù)寄存器R1:指向向量中的當前元素。:指向向量中的當前元素。 (初值為向量中最高端元素的地址)(初值為向量中最高端元素的地址) 浮點寄存器浮點寄存器F2:用于保存常數(shù):用于保存常數(shù)s。 2021-7-125 不進行指令調度的情況下,程序的實際執(zhí)行情況不進行指令調度的情況下,程序的實際執(zhí)行情況 Loop: L.D F0,0(R1) 1 (空轉)(空轉) 2 ADD.D F4,F0,F2 3 (空轉)(空轉) 4 (空轉)(空轉) 5 S.D F4, 0(R1) 6 DADDIU R1,R1

20、,#8 7 (空轉)(空轉) 8 BNE R1,R2,Loop 9 (空轉)(空轉) 10 u每個元素的操作需要每個元素的操作需要10個時鐘周期,其中個時鐘周期,其中5個是空個是空 轉周期。轉周期。 2021-7-126 指令調度以后,程序的執(zhí)行情況指令調度以后,程序的執(zhí)行情況 Loop: L.D F0,0(R1) (空轉)(空轉) ADD.D F4,F0,F2 (空轉)(空轉) (空轉)(空轉) S.D F4, 0(R1) DADDIU R1,R1,#8 (空轉)(空轉) BNE R1,R2,Loop (空轉)(空轉) Loop: L.D F0,0(R1) DADDIU R1,R1,#8 A

21、DD.D F4,F0,F2 (空轉)(空轉) BNE R1,R2,Loop S.D F4, 8(R1) 因為修改指針因為修改指針R1的減的減8操作操作 提前了,所以提前了,所以S.D指令中變指令中變 址指針的偏移量要從址指針的偏移量要從0改為改為 8. 2021-7-127 指令流出時鐘指令流出時鐘 Loop: L.D F0, 0(R1) 1 DADDIU R1, R1, #-8 2 ADD.D F4, F0, F2 3 (空轉)(空轉) 4 BNE R1, Loop 5 S.D F4,8(R1) 6 u一個元素的操作時間從一個元素的操作時間從10個時鐘周期個時鐘周期減少到減少到6 個個,其中

22、其中5個周期是有指令執(zhí)行個周期是有指令執(zhí)行的,的,1個為空轉周個為空轉周 期期。 2021-7-128 例子中的問題及解決方案例子中的問題及解決方案 u只有只有L.D、ADD.D和和S.D這這3條指令是有效條指令是有效 操作,占用操作,占用3個時鐘周期。而個時鐘周期。而DADDIU、 空轉空轉和和BEN這這3個時鐘周期都是附加的循個時鐘周期都是附加的循 環(huán)控制開銷。有效操作比例不高。環(huán)控制開銷。有效操作比例不高。 u循環(huán)展開技術循環(huán)展開技術 n把循環(huán)體的代碼復制多次并按順序排把循環(huán)體的代碼復制多次并按順序排 列,然后相應調整循環(huán)的結束條件。列,然后相應調整循環(huán)的結束條件。 2021-7-129

23、 u例例4.7 將例將例4.6中的循環(huán)展開中的循環(huán)展開3次得到次得到4個循環(huán)體,個循環(huán)體, 然后對展開后的指令序列在不調度和調度兩種然后對展開后的指令序列在不調度和調度兩種 情況下,分析代碼的性能。情況下,分析代碼的性能。 u設設R1的初值為的初值為32的倍數(shù),即循環(huán)次數(shù)為的倍數(shù),即循環(huán)次數(shù)為4的倍的倍 數(shù)。因此不需要在循環(huán)體后面增加補償代碼。數(shù)。因此不需要在循環(huán)體后面增加補償代碼。 u方法:消除冗余的指令,并且不重復使用寄存方法:消除冗余的指令,并且不重復使用寄存 器。器。 2021-7-130 分配寄存器(不重復使用寄存器分配寄存器(不重復使用寄存器 ) uF0、F4:用于展開后的第:用于

24、展開后的第1個循環(huán)體個循環(huán)體 uF2:用于保存常數(shù):用于保存常數(shù) uF6、F8:用于展開后的第:用于展開后的第2個循環(huán)體個循環(huán)體 uF10、F12:用于展開后的第:用于展開后的第3個循環(huán)體個循環(huán)體 uF14、F16:用于展開后的第:用于展開后的第4個循環(huán)體個循環(huán)體 2021-7-131 展開后沒有調度的代碼展開后沒有調度的代碼 指令流出時鐘指令流出時鐘 Loop:L.DF0,0(R1)1 (空轉)(空轉)2 ADD.D F4,F0,F23 (空轉)(空轉)4 (空轉)(空轉)5 S.DF4, 0(R1)6 L.DF6,-8(R1)7 (空轉)(空轉)8 ADD.D F8,F6,F29 (空轉)

25、(空轉)10 (空轉)(空轉)11 S.DF8, -8(R1)12 L.DF10,-16(R1)13 (空轉)(空轉)14 指令流出時鐘指令流出時鐘 ADD.D F12,F10,F215 (空轉)(空轉)16 (空轉)(空轉)17 S.DF12,-16(R1)18 L.DF14,-24(R1)19 (空轉)(空轉)20 ADD.D F16,F14,F221 (空轉)(空轉)22 (空轉)(空轉)23 S.DF16,-24(R1)24 DADDIUR1,R1,#-3225 (空轉)(空轉)26 BNER1,R2,Loop27 (空轉)(空轉)28 2021-7-132 結果分析結果分析 u這個循

26、環(huán)每遍共使用了這個循環(huán)每遍共使用了28個時鐘周期。個時鐘周期。 u有有4個循環(huán)體,完成個循環(huán)體,完成4個元素的操作。個元素的操作。 平均每個元素使用平均每個元素使用28/4=7個時鐘周期個時鐘周期 u原始循環(huán)的每個元素需要原始循環(huán)的每個元素需要10個時鐘周期。個時鐘周期。 u節(jié)省的時間:從減少循環(huán)控制的開銷中獲得的。節(jié)省的時間:從減少循環(huán)控制的開銷中獲得的。 u在整個展開后的循環(huán)中,實際指令只有在整個展開后的循環(huán)中,實際指令只有14條,其條,其 他他14個周期都是空轉。個周期都是空轉。 u結論:效率并不高結論:效率并不高 2021-7-133 對指令序列進行優(yōu)化調度對指令序列進行優(yōu)化調度 指令

27、流出時鐘指令流出時鐘 Loop: L.DF0,0(R1) 1 L.DF6,-8(R1) 2 L.DF10,-16(R1) 3 L.DF14,-24(R1) 4 ADD.DF4,F0,F2 5 ADD.DF8,F6,F2 6 ADD.DF12,F10,F2 7 ADD.DF16,F14,F2 8 S.DF4,0(R1) 9 S.DF8,-8(R1) 10 DADDIUR1,R1,#-32 12 S.DF12,16(R1) 11 BNER1,R2,Loop 13 S.DF16,8(R1) 14 2021-7-134 結果分析結果分析 u沒有數(shù)據相關引起的空轉等待。沒有數(shù)據相關引起的空轉等待。 整個

28、循環(huán)僅僅使用了整個循環(huán)僅僅使用了14個時鐘周期。個時鐘周期。 平均每個元素的操作使用平均每個元素的操作使用14/4=3.5個時鐘周期。個時鐘周期。 u通過循環(huán)展開、寄存器重命名和指令調度,可以通過循環(huán)展開、寄存器重命名和指令調度,可以 有效地開發(fā)出指令級并行。有效地開發(fā)出指令級并行。 2021-7-135 循環(huán)展開和指令調度時要注意的問題循環(huán)展開和指令調度時要注意的問題 u保證正確性。保證正確性。 在循環(huán)展開和調度過程中尤其要注意在循環(huán)展開和調度過程中尤其要注意兩個地方兩個地方 的正確性:的正確性:循環(huán)控制,操作數(shù)偏移量的修改。循環(huán)控制,操作數(shù)偏移量的修改。 u注意有效性。注意有效性。 只有能

29、夠找到不同循環(huán)體之間的無關性,才能只有能夠找到不同循環(huán)體之間的無關性,才能 有效地使用循環(huán)展開。有效地使用循環(huán)展開。 u使用不同的寄存器。使用不同的寄存器。 (否則可能導致新的沖突)(否則可能導致新的沖突) u刪除多余的測試指令和分支指令,并對循環(huán)結刪除多余的測試指令和分支指令,并對循環(huán)結 束代碼和新的循環(huán)體代碼進行相應的修正。束代碼和新的循環(huán)體代碼進行相應的修正。 2021-7-136 u注意對存儲器數(shù)據的相關性分析注意對存儲器數(shù)據的相關性分析 例如對于例如對于load指令和指令和store指令,如果它們在指令,如果它們在 不同的循環(huán)迭代中訪問的存儲器地址是不同不同的循環(huán)迭代中訪問的存儲器地

30、址是不同 的,它們就是相互獨立的,可以相互對調。的,它們就是相互獨立的,可以相互對調。 u注意新的相關性注意新的相關性 由于原循環(huán)不同次的迭代在展開后都到了由于原循環(huán)不同次的迭代在展開后都到了 同一次循環(huán)體中,因此可能帶來新的相關性。同一次循環(huán)體中,因此可能帶來新的相關性。 2021-7-137 u靜態(tài)調度靜態(tài)調度 n依靠編譯器對代碼進行靜態(tài)調度,以減少相關依靠編譯器對代碼進行靜態(tài)調度,以減少相關 和沖突。和沖突。 n不是在程序執(zhí)行的過程中、而是在編譯期間進不是在程序執(zhí)行的過程中、而是在編譯期間進 行代碼調度和優(yōu)化。行代碼調度和優(yōu)化。 n通過把相關的指令拉開距離來減少可能產生的通過把相關的指令

31、拉開距離來減少可能產生的 停頓。停頓。 u動態(tài)調度動態(tài)調度 n在程序的執(zhí)行過程中,依靠專門硬件對代碼進在程序的執(zhí)行過程中,依靠專門硬件對代碼進 行調度,減少數(shù)據相關導致的停頓。行調度,減少數(shù)據相關導致的停頓。 4.2 指令的動態(tài)調度指令的動態(tài)調度 2021-7-138 指令的動態(tài)調度的指令的動態(tài)調度的特點特點 u能夠處理一些在編譯時情況不明的相關(比如涉能夠處理一些在編譯時情況不明的相關(比如涉 及到存儲器訪問的相關),并簡化了編譯器。及到存儲器訪問的相關),并簡化了編譯器。 u能夠使本來是面向某一流水線優(yōu)化編譯的代碼在能夠使本來是面向某一流水線優(yōu)化編譯的代碼在 其他的流水線(動態(tài)調度)上也能

32、高效地執(zhí)行。其他的流水線(動態(tài)調度)上也能高效地執(zhí)行。 u以硬件復雜性的顯著增加為代價以硬件復雜性的顯著增加為代價 2021-7-139 4.2.1 動態(tài)調度的基本思想動態(tài)調度的基本思想 u到目前為止我們所使用流水線的最大的到目前為止我們所使用流水線的最大的局局 限性:限性:指令必須按序流出和執(zhí)行指令必須按序流出和執(zhí)行 u考慮下面一段代碼:考慮下面一段代碼: DIV.D F4,F(xiàn)0,F(xiàn)2 SUB.D F10,F(xiàn)4,F(xiàn)6 ADD.D F12,F(xiàn)6,F(xiàn)14 uSUB.D指令與指令與DIV.D指令關于指令關于F4相關,導致相關,導致 流水線停頓。流水線停頓。 uADD.D指令與流水線中的任何指令都沒

33、有指令與流水線中的任何指令都沒有 關系,但也因此受阻。關系,但也因此受阻。 2021-7-140 在前面的基本流水線中譯碼功能段的工作在前面的基本流水線中譯碼功能段的工作 ID 檢測檢測結構結構沖突沖突 檢測檢測數(shù)據數(shù)據沖突沖突 一旦一條指令受阻,其后的指令都將停頓。一旦一條指令受阻,其后的指令都將停頓。 解決辦法:解決辦法:允許亂序執(zhí)行允許亂序執(zhí)行 2021-7-141 u為了允許亂序執(zhí)行,將為了允許亂序執(zhí)行,將5段流水線的譯碼階段段流水線的譯碼階段 再分為兩個階段:再分為兩個階段: u流出流出(Issue,IS):指令譯碼,檢查是否存在):指令譯碼,檢查是否存在 結構沖突。結構沖突。 u讀

34、操作數(shù)讀操作數(shù)(Read Operands,RO):等待數(shù)據):等待數(shù)據 沖突消失,然后讀操作數(shù)。沖突消失,然后讀操作數(shù)。 IS RO 檢測檢測結構結構沖突沖突檢測檢測數(shù)據數(shù)據沖突沖突 2021-7-142 u在前述在前述5段流水線中,順序執(zhí)行時是不會發(fā)生段流水線中,順序執(zhí)行時是不會發(fā)生 WAR沖突和沖突和WAW沖突的。但亂序執(zhí)行有可能沖突的。但亂序執(zhí)行有可能 發(fā)生。發(fā)生。 u例:例: DIV.D F10, F0, F2 SUB.D F10, F4, F6 ADD.D F6, F8, F14 存在反相關存在反相關 存在輸出相關存在輸出相關 可以通過使用寄存器重命名技術來消除相關??梢酝ㄟ^使用寄

35、存器重命名技術來消除相關。 2021-7-143 u動態(tài)調度的流水線支持多條指令同時處于執(zhí)行當動態(tài)調度的流水線支持多條指令同時處于執(zhí)行當 中。中。 n要求:要求:具有多個功能部件、或者流水功能部件、或者具有多個功能部件、或者流水功能部件、或者 兼而有之。兼而有之。 n假設具有假設具有多個功能部件。多個功能部件。 u指令亂序完成帶來的指令亂序完成帶來的最大問題:最大問題: n異常處理比較復雜異常處理比較復雜 n動態(tài)調度要保持正確的異常行為:只有那些在程序嚴動態(tài)調度要保持正確的異常行為:只有那些在程序嚴 格按程序順序執(zhí)行時會發(fā)生的異常,才能真正發(fā)生。格按程序順序執(zhí)行時會發(fā)生的異常,才能真正發(fā)生。

36、2021-7-144 u保持正確的異常行為:保持正確的異常行為:對于一條會產生異常對于一條會產生異常 的指令來說,只有當處理機確切地知道該指的指令來說,只有當處理機確切地知道該指 令將被執(zhí)行后,才允許它產生異常。令將被執(zhí)行后,才允許它產生異常。 u即使保持了正確的異常行為,動態(tài)調度處理即使保持了正確的異常行為,動態(tài)調度處理 機仍可能發(fā)生不精確異常。機仍可能發(fā)生不精確異常。 2021-7-145 精確異常與不精確異常精確異常與不精確異常 u精確異常:精確異常:發(fā)生異常時,處理機的現(xiàn)場跟嚴格按發(fā)生異常時,處理機的現(xiàn)場跟嚴格按 程序順序執(zhí)行時指令程序順序執(zhí)行時指令i的現(xiàn)場相同。的現(xiàn)場相同。 u不精確

37、異常:不精確異常:當執(zhí)行指令當執(zhí)行指令i i導致發(fā)生異常時,處導致發(fā)生異常時,處 理機的現(xiàn)場(狀態(tài))與嚴格按程序順序執(zhí)行時指理機的現(xiàn)場(狀態(tài))與嚴格按程序順序執(zhí)行時指 令令i i的現(xiàn)場不同。的現(xiàn)場不同。 u發(fā)生不精確異常的發(fā)生不精確異常的原因:原因: n當發(fā)生異常(設為指令當發(fā)生異常(設為指令i)時,流水線可能已經執(zhí)行完)時,流水線可能已經執(zhí)行完 按程序順序是位于指令按程序順序是位于指令i i之后的指令;之后的指令; n流水線可能還沒完成按程序順序是指令流水線可能還沒完成按程序順序是指令i i之前的指令。之前的指令。 u不精確異常使得在異常處理后難以接著繼續(xù)執(zhí)行不精確異常使得在異常處理后難以接

38、著繼續(xù)執(zhí)行 程序。程序。 2021-7-146 4.2.2 Tomasulo算法算法 u核心思想核心思想 n記錄和檢測指令相關,操作數(shù)一旦就緒就立即執(zhí)記錄和檢測指令相關,操作數(shù)一旦就緒就立即執(zhí) 行,把發(fā)生行,把發(fā)生RAW沖突沖突的可能性減少到最??;的可能性減少到最小; n通過寄存器換名來消除通過寄存器換名來消除WAR沖突沖突和和WAW沖突沖突。 u。 u原因:原因: 2021-7-147 IBM 360/91首先采用了首先采用了Tomasulo算法算法 u(1)IBM 360/91的設計目標是基于整個的設計目標是基于整個360 系列的統(tǒng)一指令集和編譯器來實現(xiàn)高性能,系列的統(tǒng)一指令集和編譯器來實

39、現(xiàn)高性能, 而不是設計和利用專用的編譯器來提高性能,而不是設計和利用專用的編譯器來提高性能, 因此需要更多地依賴硬件。因此需要更多地依賴硬件。 uIBM 360體系結構只有體系結構只有4個雙精度浮點寄存器,個雙精度浮點寄存器, 限制了編譯器調度的有效性。限制了編譯器調度的有效性。 u360/91的訪存時間和浮點計算時間都很長。的訪存時間和浮點計算時間都很長。 (也是(也是Tomasulo算法要解決的問題)算法要解決的問題) 1.寄存器換名寄存器換名可以消除可以消除WAR沖突和沖突和WAW沖突。沖突。 2021-7-148 n考慮以下代碼:考慮以下代碼: DIV.DF0,F(xiàn)2,F(xiàn)4 ADD.DF

40、6,F(xiàn)0,F(xiàn)8 S.DF6,0(R1) SUB.DF8,F(xiàn)10,F(xiàn)14 MUL.DF6, F10,F(xiàn)8 輸出相關(輸出相關(F6) 導致導致WAW沖突沖突 反相關(反相關(F8) 導致導致WAR沖突沖突 2021-7-149 u消除名相關消除名相關 n引入兩個臨時寄存器引入兩個臨時寄存器S和和T n把這段代碼改寫為:把這段代碼改寫為: DIV.DF0,F(xiàn)2,F(xiàn)4 ADD.DS,F(xiàn)0,F(xiàn)8 S.DS,0(R1) SUB.DT,F(xiàn)10,F(xiàn)14 MUL.DF6,F(xiàn)10,T 兩個兩個F6都換名為都換名為S 兩個兩個F8都都 換名為換名為T 2021-7-150 基于基于Tomasulo算法的算法的MI

41、PS處理器浮點部件的基本結構處理器浮點部件的基本結構 從從指指令令部部件件來來 浮浮點點寄寄存存器器FP store緩緩沖沖器器 load緩緩沖沖器器 地地址址部部件件 load/store操操作作 浮浮點點操操作作 操操作作數(shù)數(shù)總總線線 操操作作總總線線 數(shù)數(shù)據據 1 1 存存儲儲部部件件 浮浮點點加加法法器器 浮浮點點乘乘法法器器 指指令令隊隊列列 地地址址 2 3 2 3 4 5 6 公公共共數(shù)數(shù)據據總總線線(CDB) 1 2 保保留留站站 標標識識 標標識識 2021-7-151 保留站(保留站(reservation station) u每個保留站中保存一條已經流出并等待到本功能部件

42、每個保留站中保存一條已經流出并等待到本功能部件 執(zhí)行的指令(相關信息)。執(zhí)行的指令(相關信息)。 包括:操作碼、操作數(shù)以及用于檢測和解決沖突的信包括:操作碼、操作數(shù)以及用于檢測和解決沖突的信 息。息。 u在一條指令流出到保留站的時候,如果該指令的源操在一條指令流出到保留站的時候,如果該指令的源操 作數(shù)已經在寄存器中就緒,則將之取到該保留站中。作數(shù)已經在寄存器中就緒,則將之取到該保留站中。 u如果操作數(shù)還沒有計算出來,則在該保留站中記錄將如果操作數(shù)還沒有計算出來,則在該保留站中記錄將 產生這個操作數(shù)的保留站的標識。產生這個操作數(shù)的保留站的標識。 u浮點加法器有浮點加法器有三三個保留站:個保留站:

43、ADD1,ADD2,ADD3 u浮點乘法器有浮點乘法器有兩兩個保留站:個保留站:MULT1,MULT2 u每個保留站都有一個每個保留站都有一個標識字段標識字段,唯一地標識了該保留,唯一地標識了該保留 站。站。 2021-7-152 公共數(shù)據總線公共數(shù)據總線CDB uCDB是是一條重要的數(shù)據通路一條重要的數(shù)據通路 n所有功能部件的計算結果都是送到所有功能部件的計算結果都是送到CDB上,由它把上,由它把 這些結果直接送到(播送到)各個需要該結果的地這些結果直接送到(播送到)各個需要該結果的地 方。方。 n在具有多個執(zhí)行部件且采用多流出(即每個時鐘周在具有多個執(zhí)行部件且采用多流出(即每個時鐘周 期流

44、出多條指令)的流水線中,需要采用多條期流出多條指令)的流水線中,需要采用多條CDB。 2021-7-153 load緩沖器和緩沖器和store緩沖器緩沖器 u用于存放讀用于存放讀/寫存儲器的數(shù)據或地址寫存儲器的數(shù)據或地址 uload緩沖器緩沖器的作用:的作用: n存放用于計算有效地址的分量;存放用于計算有效地址的分量; n記錄正在進行的記錄正在進行的load訪存,等待存儲器的響應;訪存,等待存儲器的響應; n保存已經完成了的保存已經完成了的load的結果(即從存儲器取來的的結果(即從存儲器取來的 數(shù)據),等待數(shù)據),等待CDB傳輸。傳輸。 ustore緩沖器緩沖器的作用:的作用: n存放用于計

45、算有效地址的分量;存放用于計算有效地址的分量; n保存正在進行的保存正在進行的store訪存的目標地址,該訪存的目標地址,該store正在正在 等待存儲數(shù)據的到達;等待存儲數(shù)據的到達; n保存該保存該store的地址和數(shù)據,直到存儲部件接收。的地址和數(shù)據,直到存儲部件接收。 2021-7-154 u浮點寄存器浮點寄存器FP n共有共有16個浮點寄存器:個浮點寄存器:F0,F(xiàn)2,F(xiàn)4,F(xiàn)30。 n它們通過一對總線連接到功能部件,并通過它們通過一對總線連接到功能部件,并通過CDB 連接到連接到store緩沖器。緩沖器。 u指令隊列指令隊列 n指令部件送來的指令放入指令隊列指令部件送來的指令放入指令

46、隊列 n指令隊列中的指令按先進先出的順序流出指令隊列中的指令按先進先出的順序流出 u運算部件運算部件 n浮點加法器完成加法和減法操作浮點加法器完成加法和減法操作 n浮點乘法器完成乘法和除法操作浮點乘法器完成乘法和除法操作 2021-7-155 u在在Tomasulo算法中,寄存器換名是通過保留站算法中,寄存器換名是通過保留站 和流出邏輯來共同完成的。和流出邏輯來共同完成的。 n當指令流出時,如果其操作數(shù)還沒有計算出來,當指令流出時,如果其操作數(shù)還沒有計算出來, 則將該指令中相應的寄存器號換名為將產生這個則將該指令中相應的寄存器號換名為將產生這個 操作數(shù)的保留站的標識。操作數(shù)的保留站的標識。 n

47、指令流出到保留站后,其操作數(shù)寄存器號或者換指令流出到保留站后,其操作數(shù)寄存器號或者換 成了數(shù)據本身(如果該數(shù)據已經就緒),或者換成了數(shù)據本身(如果該數(shù)據已經就緒),或者換 成了保留站的標識,不再與寄存器有關系。成了保留站的標識,不再與寄存器有關系。 2021-7-156 Tomasulo算法的特點算法的特點 u沖突檢測和指令執(zhí)行控制是分布的。沖突檢測和指令執(zhí)行控制是分布的。 u每個功能部件的保留站中的信息決定了什么時候每個功能部件的保留站中的信息決定了什么時候 指令可以在該功能部件開始執(zhí)行。指令可以在該功能部件開始執(zhí)行。 u計算結果通過計算結果通過CDB直接從產生它的保留站傳送到直接從產生它的

48、保留站傳送到 所有需要它的功能部件,而不用經過寄存器。所有需要它的功能部件,而不用經過寄存器。 2021-7-157 指令執(zhí)行的步驟指令執(zhí)行的步驟 u使用使用Tomasulo算法的流水線需算法的流水線需3段段: u流出流出:從指令隊列的頭部取一條指令。:從指令隊列的頭部取一條指令。 n如果該指令的操作所要求的保留站有空閑的,就把該如果該指令的操作所要求的保留站有空閑的,就把該 指令送到該保留站(設為指令送到該保留站(設為r)。)。 n如果其操作數(shù)在寄存器中已經就緒,就將這些操作數(shù)如果其操作數(shù)在寄存器中已經就緒,就將這些操作數(shù) 送入保留站送入保留站r。 n如果其操作數(shù)還沒有就緒,就把將產生該操作

49、數(shù)的保如果其操作數(shù)還沒有就緒,就把將產生該操作數(shù)的保 留站的標識送入保留站留站的標識送入保留站r。 n一旦被記錄的保留站完成計算,它將直接把數(shù)據送給一旦被記錄的保留站完成計算,它將直接把數(shù)據送給 保留站保留站r。(寄存器換名和對操作數(shù)進行緩沖,消除。(寄存器換名和對操作數(shù)進行緩沖,消除 WAR沖突)沖突) n完成對目標寄存器的預約工作完成對目標寄存器的預約工作 (消除了(消除了WAW沖突)沖突) n如果沒有空閑的保留站,指令就不能流出。如果沒有空閑的保留站,指令就不能流出。 (發(fā)生了(發(fā)生了 結構沖突)結構沖突) 2021-7-158 u執(zhí)行執(zhí)行 n當兩個操作數(shù)都就緒后,本保留站就用相應的功當

50、兩個操作數(shù)都就緒后,本保留站就用相應的功 能部件開始執(zhí)行指令規(guī)定的操作。能部件開始執(zhí)行指令規(guī)定的操作。 nload和和store指令的執(zhí)行需要兩個步驟:指令的執(zhí)行需要兩個步驟: n計算有效地址(要等到基地址寄存器就緒)計算有效地址(要等到基地址寄存器就緒) n把有效地址放入把有效地址放入load或或store緩沖器緩沖器 u寫結果寫結果 n功能部件計算完畢后,就將計算結果放到功能部件計算完畢后,就將計算結果放到CDB上,上, 所有等待該計算結果的寄存器和保留站(包括所有等待該計算結果的寄存器和保留站(包括 store緩沖器)都同時從緩沖器)都同時從CDB上獲得所需要的數(shù)據。上獲得所需要的數(shù)據。

51、 2021-7-159 u每個保留站有以下每個保留站有以下6個字段:個字段: nOp:要對源操作數(shù)進行的操作。:要對源操作數(shù)進行的操作。 nQj,Qk:將產生源操作數(shù)的保留站號。:將產生源操作數(shù)的保留站號。 n等于等于0表示操作數(shù)已經就緒且在表示操作數(shù)已經就緒且在Vj或或Vk中,中, 或者不需要操作數(shù)?;蛘卟恍枰僮鲾?shù)。 nVj,Vk:源操作數(shù)的值。:源操作數(shù)的值。 n對于每一個操作數(shù)來說,對于每一個操作數(shù)來說,V或或Q字段只有一字段只有一 個有效。個有效。 n對于對于load來說,來說,Vk字段用于保存偏移量。字段用于保存偏移量。 nBusy:為:為“yes”表示本保留站或緩沖單元表示本保留

52、站或緩沖單元“忙忙”。 nA:僅:僅load和和store緩沖器有該字段。開始是存放緩沖器有該字段。開始是存放 指令中的立即數(shù)字段,地址計算后存放有效地址。指令中的立即數(shù)字段,地址計算后存放有效地址。 2021-7-160 uQi:寄存器狀態(tài)表。寄存器狀態(tài)表。 n每個寄存器在該表中有對應的一項,用于存放將每個寄存器在該表中有對應的一項,用于存放將 把結果寫入該寄存器的保留站的站號。把結果寫入該寄存器的保留站的站號。 n為為0表示當前沒有正在執(zhí)行的指令要寫入該寄存表示當前沒有正在執(zhí)行的指令要寫入該寄存 器,也即該寄存器中的內容就緒。器,也即該寄存器中的內容就緒。 2021-7-161 u設有指令

53、:設有指令: MUL F0,F2,F4 ADD F2,F0,F6 2021-7-162 2021-7-163 2021-7-164 2021-7-165 例例4.1 對于下述指令序列,給出當?shù)谝粭l指令完成對于下述指令序列,給出當?shù)谝粭l指令完成 并寫入結果時,并寫入結果時,Tomasulo算法所用的各信息表算法所用的各信息表 中的內容。中的內容。 L.D F6,34(R2) L.D F2,45(R3) MUL.D F0,F(xiàn)2,F(xiàn)4 SUB.D F8,F(xiàn)2,F(xiàn)6 DIV.D F10,F(xiàn)0,F(xiàn)6 ADD.D F6,F(xiàn)8,F(xiàn)2 2021-7-166 當采用當采用Tomasulo算法時,在上述給定的時刻

54、,保算法時,在上述給定的時刻,保 留站、留站、load緩沖器以及寄存器狀態(tài)表中的內容緩沖器以及寄存器狀態(tài)表中的內容。 指指 令令 指令狀態(tài)表指令狀態(tài)表 流出流出 執(zhí)行執(zhí)行 寫結果寫結果 L.D F6 , 34(R2) L.D F2 , 45(R3) MUL.DF0 , F2 , F4 SUB.D F8 , F6 , F2 DIV.DF10 , F0 , F6 ADD.D F6 , F8 , F2 2021-7-167 Vk Mem34+RegsR2 RegF4 Mem34+RegsR2 名稱名稱 保留站保留站 Load1 Load2 Add1 Add2 Add3 Mult1 Mult2 Bus

55、y no yes yes yes no yes yes Op LD SUB ADD MUL DIV Vj Qj Load2 Add1 Load2 Mult1 Qk Load2 A 45+RegsR3 寄存器狀態(tài)表寄存器狀態(tài)表 F0 F2 F4 F6 F8 F10 F30 Qi Mult1 Load2 Add2 Add1 Mult2 2021-7-168 Tomasulo算法的主要優(yōu)點:算法的主要優(yōu)點: u沖突檢測邏輯是分布的沖突檢測邏輯是分布的 (通過保留站和(通過保留站和CDB實現(xiàn))實現(xiàn)) n如果有多條指令已經獲得了一個操作數(shù),如果有多條指令已經獲得了一個操作數(shù), 并同時在等待同一運算結果,

56、那么這個結并同時在等待同一運算結果,那么這個結 果一產生,就可以通過果一產生,就可以通過CDB同時播送給所同時播送給所 有這些指令,使它們可以同時執(zhí)行。有這些指令,使它們可以同時執(zhí)行。 n消除了消除了WAW沖突和沖突和WAR沖突導致的停頓沖突導致的停頓 n使用保留站進行寄存器換名,并且操作數(shù)使用保留站進行寄存器換名,并且操作數(shù) 一旦就緒就將之放入保留站。一旦就緒就將之放入保留站。 2021-7-169 4.4 多指令流出技術多指令流出技術 u如果每次只能流出一條指令(單流出),則如果每次只能流出一條指令(單流出),則 CPI不可能小于不可能小于1。 u要想進一步提高性能,使要想進一步提高性能,

57、使CPI1,就必須采用,就必須采用 多流出技術。多流出技術。 2021-7-170 單流出和多流出處理機執(zhí)行指令的時空圖單流出和多流出處理機執(zhí)行指令的時空圖 IF 1 2 3 4 5 6 7 時時鐘鐘周周期期 指指令令 I1 I2 I3 ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 1 2 3 4 5 6 7 時時鐘鐘周周期期 指指令令 I1 I2 I3 IF ID EX MEM WB IF IF ID ID EX EX MEM MEM WB WB IF ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB IF

58、ID EX MEM WB IF ID EX MEM WB IF ID EX MEM WB 單單流流出出時時空空圖圖 多多流流出出時時空空圖圖 2021-7-171 提高流水并行處理的方法提高流水并行處理的方法 u增加流水部件套數(shù)增加流水部件套數(shù) 超標量超標量 u合并多條指令操作碼合并多條指令操作碼 超長指令字超長指令字 u細化流水部件段數(shù)細化流水部件段數(shù) 超流水超流水 2021-7-172 4.4.1 超標量方法(超標量方法(Superscalar) u在處理機內設置多個可并行操作的功能部在處理機內設置多個可并行操作的功能部 件和多條流水線,在一個時鐘周期內啟動件和多條流水線,在一個時鐘周期內

59、啟動 (發(fā)射)多條指令進行并行處理,使得(發(fā)射)多條指令進行并行處理,使得 CPI1。 u超標量方法是超標量方法是采用采用資源重復資源重復的策略開發(fā)并的策略開發(fā)并 行性。行性。 u超級標量機主要是借助對硬件資源重復來超級標量機主要是借助對硬件資源重復來 實現(xiàn)空間的并行操作。實現(xiàn)空間的并行操作。 2021-7-173 u采用超標量技術時采用超標量技術時在每個時鐘周期流出在每個時鐘周期流出 的指令條數(shù)的指令條數(shù)不固定不固定,依代碼的具體情況,依代碼的具體情況 而定(有上限)。而定(有上限)。 u設這個上限為設這個上限為n,就稱該處理機為,就稱該處理機為n流出。流出。 u可以通過編譯器進行指令的靜態(tài)

60、調度,可以通過編譯器進行指令的靜態(tài)調度, 也可以基于也可以基于Tomasulo算法進行動態(tài)調度,算法進行動態(tài)調度, 以實現(xiàn)超標量技術。以實現(xiàn)超標量技術。 2021-7-174 理想的理想的RISC機中指令流水的執(zhí)行情況機中指令流水的執(zhí)行情況 理想的理想的RISC機機 取指取指譯碼譯碼 執(zhí)行執(zhí)行 寫回寫回 0123456T7 2021-7-175 在超標量機中每個時鐘周期可同時啟動在超標量機中每個時鐘周期可同時啟動 三條指令的情況三條指令的情況 0123456T 取指取指譯碼譯碼 執(zhí)行執(zhí)行 寫回寫回 每拍啟動每拍啟動3 3條指令條指令 要求并行度要求并行度=3=3 (b b)超級標量機)超級標量

溫馨提示

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

評論

0/150

提交評論