浙江工商大學計算機體系結構第2章指令級并行及其開發(fā)ppt課件_第1頁
浙江工商大學計算機體系結構第2章指令級并行及其開發(fā)ppt課件_第2頁
浙江工商大學計算機體系結構第2章指令級并行及其開發(fā)ppt課件_第3頁
浙江工商大學計算機體系結構第2章指令級并行及其開發(fā)ppt課件_第4頁
浙江工商大學計算機體系結構第2章指令級并行及其開發(fā)ppt課件_第5頁
已閱讀5頁,還剩57頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第2章 指令級并行及其開發(fā)o 指令級并行概念o 支持指令級并行的根本編譯技術 o 預測技術o 動態(tài)調度o 基于硬件的推測o 多發(fā)射技術o 指令傳送和推測高級技術o 2.1 指令級并行概念o 指令級并行ILP,instruction-level parallelismo 產生于80年代中期,處置器采用流水線方式使指令的執(zhí)行可以重疊進展,可以將指令間的關系看做是并行的,指令間潛在的重疊稱為o 指令級并行方法分為兩類:一種依賴于硬件,動態(tài)地發(fā)現和開發(fā)指令級并行;另一種依賴于軟件技術,在編譯階段靜態(tài)地發(fā)現并行。前一種占主導位置,后一種局限于科學或特定領域。2.1 指令級并行概念o 循環(huán)級并行o 為了提

2、高指令級并行,最常用的方法是將一個循環(huán)中的各次迭代并行執(zhí)行,通常將這類并行稱為循環(huán)級并行。o o 在循環(huán)中,每個迭代可以與其他任何一次迭代重疊執(zhí)行,在每次迭代內部沒有重疊。2.1 指令級并行概念o 數據相關和冒險o 要判別一段程序蘊含多少并行度,判別指令的相關性是一個關鍵問題,特別是在開發(fā)指令級并行時必需明確哪些指令是可以并行執(zhí)行的。o 兩條指令是并行的是指流水線有充足資源的情況下,這兩條指令可以在恣意深度的流水線上并行執(zhí)行而不會產生停頓。o 兩條指令是相關的,是指它們只能以順序的方式執(zhí)行,雖然它們之間只存在部分重疊。2.1 指令級并行概念o 數據相關o 相關有三種不同的類型:數據相關、名字相

3、關和控制相關o o 數據相關,也稱為真數據相關,比如有兩條指令j和i,指令j能夠會援用指令i的結果或指令j數據相關于指令K,而指令k數據相關于指令i,那么稱指令j數據相關于指令i2.1 指令級并行概念o 數據相關o 數據相關的兩條指令是不能同時執(zhí)行或完全重疊的,相關意味著在兩條指令之間能夠能夠存在一條由一個或多個數據冒險組成的相關鏈見附錄A;同時執(zhí)行數據相關的指令會使內部互鎖流水線的處置器檢測到冒險,呵斥停頓,從而減小甚至消除指令間的重疊度o 數據相關傳送三方面的信息:1數據相關闡明存在冒險的能夠,2數據相關決議了必需遵照的執(zhí)行順序,3數據相關決議了可以到達并行度的上限2.1 指令級并行概念o

4、 名字相關o 名字相關發(fā)生在運用一樣存儲器或存儲單元稱為名字的兩條指令之間,但名字相關的指令間不存在數據流,名字相關有兩種類型假設指令i位于指令j之前:o 1、反相關o 指令 i 讀一個存放器或存儲單元,而指令j寫該存放器或存儲單元,必需維護原始的指令執(zhí)行順序。o 2、輸出相關o 指令i和指令j寫一樣的存放器時,為了保證該存放器的值最后是由指令j寫入的,必需維護指令的執(zhí)行順序。2.1 指令級并行概念o 控制相關o 控制相關決議了于轉移指令有關的指令的執(zhí)行順序,從而使與轉移有關的指令只在該當被執(zhí)行時按程序順序執(zhí)行,最簡單的控制相關例子:o if p1 o S1;o o if p2 o S2;o

5、o 2.1 指令級并行概念o 控制相關o 控制相關會帶來兩類限制:o 1、與某一轉移相關的指令不能被挪動到該轉移之前,這樣的挪動會使指令的執(zhí)行不再受控于該轉移,比如不能將if語句的then 部分中的指令挪動到if語句之前o o 2、與某一轉移相關的指令不能被挪動到該轉移之后,這樣的挪動會使指令的執(zhí)行遭到該轉移的控制,不能將if語句之前的指令挪動到受控于該if語句的then 部分中o 2.1 指令級并行概念o 數據冒險o 根據指令讀寫順序,數據冒險可以分為三類,寫后讀、寫后寫、讀后寫。o 寫后讀o J試圖在i寫一個數據之前讀取它,這時j將錯誤地讀出舊值,是最常見的冒險類型,它對應于真實的數據相關

6、o 寫后寫WAWo J試圖在i寫一個數據之前寫該數據,這時,假設執(zhí)行順序錯誤,那么當寫操作終了時,留下的值將是i寫的結果,而程序的本意是留下j寫的值2.1 指令級并行概念o 數據冒險o 讀后寫WA Ro J試圖在i讀一個數據之前寫該數據,這時,i將錯誤地讀出新值,這類冒險是由反相關引起的。 WA R不會發(fā)生在靜態(tài)流水線中,由于在靜態(tài)流水線中,所以的讀操作發(fā)生的早,寫操作發(fā)生的晚見附錄A。只需在指令流水過程中一些指令的寫操作提早完成、或者其他指令的讀操作滯后完成、或者指令順序被改動的情況下,才會發(fā)生WA R冒險o 讀后讀RAR不產生冒險2.2 支持指令級并行的根本編譯技術o 根本流水線調度o 為

7、了防止流水線停頓,要去發(fā)現可以流水重疊的不相關的指令序列,將指令代碼中相關的指令加以分別,使其相隔的時鐘周期能正好等于原來指令在流水執(zhí)行時的時延。編譯器進展這類調度的才干既依賴于程序的指令級并行度,也依賴于流水線中功能單元的時延。2.2 支持指令級并行的根本編譯技術o 循環(huán)展開o 循環(huán)展開可以添加有效操作對轉移和開銷指令的比重,展開可以經過多次復制循環(huán)體和調整循環(huán)中止代碼來實現。o 循環(huán)展開也可以用來改良調度的效果,由于它消除了轉移,因此來自不同迭代的指令可以被一同調度,可以在迭代內參與不相關的指令來消除數據相關引起的停頓。2.2 支持指令級并行的根本編譯技術o 循環(huán)展開和調度小結o 1、假設

8、迭代之間是互不相關的,那么可以斷定循環(huán)展開是有意義的;o 2、為不同的計算運用一樣的存放器會引起額外的限制,需求運用不同的存放器來防止這類限制;o 3、消除額外的測試和轉移指令,調整循環(huán)終止和迭代代碼;o 4、假設來自不同循環(huán)體的load和store是互不相關的,那么可以在循環(huán)展開中將兩者交換o 5、調度代碼,堅持相關性,確保與原始代碼結果一樣o 2.2 支持指令級并行的根本編譯技術o 循環(huán)展開和調度小結o 循環(huán)展開的效果受制于三要素:展開使額外開銷降低、代碼量的大小和編譯器的限制。o 循環(huán)展開次數越多,那么額外開銷的時鐘周期越??;代碼量的增長,特別是在規(guī)模較大的循環(huán)中,當代碼量的增長使指令C

9、ache的缺失率添加時,這類問題就更加明顯;假設將展開和大規(guī)模調度相結合,存放器缺乏是一個亟待處理的問題,特別是在多發(fā)射處置器中,由于要重疊執(zhí)行更多的獨立指令序列,存放器缺乏帶來的挑戰(zhàn)更為嚴峻o 循環(huán)展開對簡單流水線、超標量多發(fā)射構造、VLIW均適用2.3 采用預測技術減小轉移開銷o 可以經過轉移預測技術來減小轉移引起的性能損耗,轉移預測既可以在編譯階段靜態(tài)完成,也可以由硬件在執(zhí)行階段動態(tài)完成,有些處置器,轉移行為在編譯階段是高度可預測的,靜態(tài)轉移預測既可以運用于此類處置器,也可以用來輔助動態(tài)轉移預測2.3 采用預測技術減小轉移開銷o 靜態(tài)轉移預測o 為了重組轉移周圍的代碼以獲得更高的性能,需

10、求在程序編譯階段靜態(tài)預測轉移行為,最簡單的方法是預測轉移總是被選中,這種方法的錯誤率等于轉移不被選中的比率;另一種技術是經過分析轉移的歷史表現來進展轉移預測,這種技術擁有更高的準確率,它的根據在于轉移的表現通常遵照雙峰分布,圖2.3闡明經過這種戰(zhàn)略進展轉移預測是勝利的。2.3 采用預測技術減小轉移開銷o 動態(tài)轉移預測o 動態(tài)預測最簡單的方法是轉移預測緩存,它是一小塊由轉移指令低位地址索引的存儲單元,用來記錄轉移指令在最近的一次執(zhí)行中能否被選中,這種方法是緩存中最簡單的一種,沒有標志位,而且只需當轉移延遲高于計算目的所花的時間時才起作用。2.3 采用預測技術減小轉移開銷o 動態(tài)轉移預測o 1bi

11、t預測在性能上有缺乏之處,假設一個轉移幾乎總是被選中,而當他偶爾未被選中時,錯誤預測會使預測位空翻,從而使預測錯誤兩次而不是一次。o 通常運用2bit預測法來彌補這個缺陷,在這種預測法中,僅當錯誤兩次時才改動預測方向,圖2.4為2bit預測法的有限形狀機。2.3 采用預測技術減小轉移開銷o 動態(tài)轉移預測o 轉移預測緩存可以作為一個在IF流水階段經過指令地址訪問的公用Cache來實現,也可以附屬于指令Cache中的每一塊隨指令一同讀取。假設經過譯碼后發(fā)現指令為轉移指令,并且預測轉移將被選中,那么應立刻從預測方向上開場取指令,否那么繼續(xù)按順序取指令和執(zhí)行,如圖2.4所示,預測錯誤時改動預測位。n

12、bit 計數器當計數器值大于或等于2n-1的一半時,預測轉移被選中,反之不被選中。2.3 采用預測技術減小轉移開銷o Tournament預測器o 又稱整體部分自順應預測器,為理處理規(guī)范2bit預測只思索部分信息而引起的在一些重要轉移上預測失敗的問題而產生的,該預測器運用多個預測器,一個基于全局信息,另一個基于部分信息,經過一個選擇器將二者結合。o Tournament預測器以中等大小8K-32K的預測位獲得更高的準確率,同時可以有效地利用大量預測位。2.4 采用動態(tài)調度抑制數據冒險o 動態(tài)調度o 動態(tài)調度是經過硬件對指令執(zhí)行順序進展重組,在堅持數據流和異常行為的同時減少停頓。o 動態(tài)調度優(yōu)勢

13、:o 可以處置一些在編譯階段無法預見的相關情況,如存儲器援用等,同時它簡化了編譯器的設計。更重要的是,它可以在等待時執(zhí)行一些其他的代碼,允許在別的流水線機器上編譯的指令在不同的流水線上有效地運轉,但動態(tài)調度會使硬件復雜度顯著添加。2.4 采用動態(tài)調度抑制數據冒險o 動態(tài)調度o 動態(tài)調度雖然不能改動數據流,但它會在相關性出現時盡力防止停頓,而由編譯器執(zhí)行的靜態(tài)流水線調度那么是將相關指令分別,使它們不再引起冒險,從而將停頓減至最小。o 簡單流水線技術的主要限制是按序發(fā)射和執(zhí)行指令,指令以程序順序發(fā)射,一旦指令在流水線中停頓,后續(xù)指令就無法再執(zhí)行,比如當指令i的執(zhí)行時間很長,那么在指令i完成、指令j

14、可以執(zhí)行之前,指令j之后的指令都必需暫停。2.4 采用動態(tài)調度抑制數據冒險o 動態(tài)調度o 亂序執(zhí)行:指令的發(fā)射仍采用按序的方式,但指令在它的操作數可用時馬上開場執(zhí)行,流水線采用亂序執(zhí)行使得指令的終了也是亂序的,亂序執(zhí)行會產生WAR和WAW冒險。o 指令的亂序完成會使異常處置變得復雜,異常行為必需維護,以確保除嚴厲按照程序順序執(zhí)行時出現的異常之外,不會出現新的異常。o 即使異常行為被維護,動態(tài)調度也會產生一些不準確的異常。2.4 采用動態(tài)調度抑制數據冒險o 動態(tài)調度o 不準確異常:是指當產生異常時,處置器的形狀與嚴厲按照程序順序執(zhí)行時的處置器形狀不同,不準確異常的發(fā)生有下面兩種能夠:o 1、異常

15、指令執(zhí)行之前,流水線提早完成了后面的指令o 2、異常指令完成之前,流水線還沒有完成前面的指令2.4 采用動態(tài)調度抑制數據冒險o 動態(tài)調度o 為了實現亂序執(zhí)行,需求將五級流水線的ID流水階段分割為以下兩個部分:o 1、發(fā)射 譯碼指令,檢測構造冒險o 2、讀操作數 等到不存在數據冒險時讀操作數o 在動態(tài)調度流水線中,一切的指令在發(fā)射階段都是按序發(fā)射,但在讀操作數階段,那么能夠產生停頓,即進入亂序執(zhí)行。o 重點討論Tomasulo算法2.4 采用動態(tài)調度抑制數據冒險o 用Tomasulo方法進展動態(tài)調度o 算法由Robert Tomasulo 提出,經過對操作數何時可用進展跟蹤以減少RAW冒險,經過

16、引入存放器重命名減少WAW和WAR冒險。該方法的改良版本的共同特點是經過跟蹤指令的相關性使指令在操作數可用時立刻開場執(zhí)行,經過存放器重命名減少數據冒險。o 存放器重命名是指經過重命名一切的目的存放器,包括指令序列中位置靠前的指令將要讀和寫的存放器。o 2.4 采用動態(tài)調度抑制數據冒險o 保管站:保管站: 在在Tomasulo算法中,存放器重命算法中,存放器重命名是經過保管站實現的,保管站為等待發(fā)射的名是經過保管站實現的,保管站為等待發(fā)射的指令保管操作數。根本思想是:指令保管操作數。根本思想是:o 1、當操作數可用時,保管站馬上取操作數、當操作數可用時,保管站馬上取操作數并將其緩存,從而防止從存

17、放器中讀操作數;并將其緩存,從而防止從存放器中讀操作數;o 2、即將執(zhí)行的指令指定保管站為其提供數、即將執(zhí)行的指令指定保管站為其提供數據輸入;據輸入;o 3、當對存放器的后續(xù)寫操作在執(zhí)行過程中、當對存放器的后續(xù)寫操作在執(zhí)行過程中發(fā)生重疊時,只允許最后一個實踐更新存放器發(fā)生重疊時,只允許最后一個實踐更新存放器。o 在指令被發(fā)射后,它所需求的操作數所對應在指令被發(fā)射后,它所需求的操作數所對應的存放器被重命名為保管站的名字的存放器被重命名為保管站的名字o 2.4 采用動態(tài)調度抑制數據冒險o 保管站保管站o 保管站與存放器堆相比有兩個重要特保管站與存放器堆相比有兩個重要特點,首先,冒險檢測和執(zhí)行控制是

18、分布點,首先,冒險檢測和執(zhí)行控制是分布的,一個單元中的指令何時可以開場執(zhí)的,一個單元中的指令何時可以開場執(zhí)行是由該單元保管站所掌握的信息決議行是由該單元保管站所掌握的信息決議的;其次,結果將從緩存它們的保管站的;其次,結果將從緩存它們的保管站中直接傳送給功能單元,而不是經過存中直接傳送給功能單元,而不是經過存放器傳送,這是經過一條公共結果總線放器傳送,這是經過一條公共結果總線/公共數據總線實現的,它使得等待操作公共數據總線實現的,它使得等待操作數的一切單元可以同時取到操作數。數的一切單元可以同時取到操作數。2.4 采用動態(tài)調度抑制數據冒險o Tomasulo算法處置器構造o 該處置器根本構造見

19、圖2.9,包括浮點單元和load-store單元。每個保管站保管一條曾經被發(fā)射并等待執(zhí)行的指令,假設指令所需求的操作數曾經被計算出來,那么保管站需求保管該操作數,否那么要保管將要提供該操作數的保管站的名字。o load-store緩存保管從存儲器中讀出或即將要保管到存儲器中去的數據或數據地址。 o 浮點存放器經過一對總線和功能單元相連,經過一條單獨的總線和store緩存相連。從功能單元和存儲器中得到的結果被送往公共數據總線。o 保管站均設置標簽域,用于流水線控制。2.4 采用動態(tài)調度抑制數據冒險o 指令運轉的三個階段o 1、發(fā)射:從指令隊列中取到下一條指令,指令隊列按FIFO順序維護,以保證正

20、確的數據流。假設有匹配的空閑保管站,并且指令的操作數的值也保管在存放器中,那么將指令和操作數的值一同發(fā)射到該保管站中。假設沒有空閑的保管站,那么闡明發(fā)生構造冒險,指令會被停頓,直至出現可用的保管站或緩存。假設操作數不在存放器中,那么需求跟蹤將要產生該操作數的功能單元,存放器重命名在這一步進展。2.4 采用動態(tài)調度抑制數據冒險o 指令運轉的三個階段o 2、執(zhí)行:假設有一個或多個操作數處于不可用形狀,那么監(jiān)視公共數據總線,等待這些操作數被計算出來。當一個操作數可用時,該操作數將被放入等待它的保管站中。當指令所需的一切操作數都已就緒時,該指令將在相應的功能單元中執(zhí)行。經過在操作數可用之前延遲指令的執(zhí)

21、行,防止了RAW冒險。假設多條指令在同一個時鐘周期內就緒,那么功能單元將被迫在就緒指令間做出選擇。2.4 采用動態(tài)調度抑制數據冒險o 指令運轉的三個階段o 2、執(zhí)行:為了維護異常行為,在程序順序中的一切前序轉移完成之前,任何指令都不能開場執(zhí)行。這個約束可以確保在執(zhí)行過程中引起異常的指令會被執(zhí)行。o 3、寫結果:當結果就緒時,將其寫到公共數據總線上,并由此送往等待它的存放器和保管站。o 當指令曾經被發(fā)射且正在等待源操作數時,標簽字段將指向包含將產生源操作數指令的保管站號,比如0那么闡明操作數曾經在存放器中就緒。2.4 采用動態(tài)調度抑制數據冒險o Tomasulo算法o Tomasulo方法采用總

22、線廣播結果的方式,由保管站監(jiān)聽,這種方法實現了靜態(tài)流水線調度中直接通路和旁路技術的功能,而在動態(tài)調度方法中,為了到達同樣的目的,需求在源和結果之間添加一個時鐘周期的時延,與功能單元產生結果相比,動態(tài)調度流水線中消費指令和消費指令之間的有效時延至少要多花一個時鐘周期。o 每個保管站有七個字段,見P66.2.6 基于硬件的推測 當我們試圖進一步開發(fā)指令級并行時,維護控制相關性便成為一個嚴重的負擔。轉移預測技術減少了直接由轉移引起的停頓,但是要想使處置器在一個時鐘周期內執(zhí)行多條指令,僅靠轉移預測恐怕無法使我們獲得期望的指令級并行度。為了堅持最高性能,一個寬發(fā)射處置器能夠需求每個時鐘周期都執(zhí)行一條轉移

23、指令,因此,要想進一步開發(fā)并行度,就必需抑制控制相關帶來的問題。可以經過推測轉移的結果,并按照推測正確的情況執(zhí)行指令,以到達抑制控制相關的目的。 2.6 基于硬件的推測o 基于硬件的推測綜合以下三種思想o 經過動態(tài)轉移預測選擇要執(zhí)行的指令,經過推測技術允許指令在控制相關消除之前開場執(zhí)行可以消除錯誤推測序列的影響,經過動態(tài)調度處置幾個不同的根本塊之間的調度作為比較,沒有推測的動態(tài)調度只能在根本塊之間實現部分重疊2.6 基于硬件的推測o 基于硬件的推測o 為了擴展Tomasulo算法并使其支持推測技術,必需將指令結果的旁路操作推測執(zhí)行指令需求指令結果的旁路操作從實踐的指令完成中分別出來。經過這種分

24、別,可以允許指令將它的執(zhí)行結果旁路給其他指令,而在確定而不是推測指令的執(zhí)行之前,不允許做任何更新。2.6 基于硬件的推測o 基于硬件的推測o 實現推測技術的關鍵思想是允許指令亂序執(zhí)行,但是要求指令必需按序提交,并且在指令提交之前阻止一切不可恢復的動作比如更新形狀或產生異常。當運用推測技術擴展動態(tài)調度時,必需將指令的完成與指令提交區(qū)分開來,由于指令能夠在提交之前曾經完成。在指令執(zhí)行過程中需求一組硬件緩存的支持,運用這些緩存保管曾經執(zhí)行完但還沒有提交的指令執(zhí)行結果,這些硬件緩存稱為重排序緩存。2.6 基于硬件的推測o 重排序緩存ROBo 重排序緩存提供了附加的存放器,這種方法與Tomasulo算法

25、經過保管站擴展存放器集類似。在指令運算完成到提交這段時間內,重排序緩存為指令保管結果。即在這段時間內, ROB是指令的操作數源,但ROB與保管站的重要區(qū)別是:在Tomasulo算法中,當指令完成寫結果的操作后,一切的后繼指令都將從存放器文件中讀取結果;而在推測技術中,只需在指令提交之后存放器文件才會被更新。2.6 基于硬件的推測o 重排序緩存ROBo 重排序緩存每一個入口都包含4個字段:指令類型、目的字段、值字段和就緒字段。o 指令類型字段闡明指令是轉移運算、store操作還是存放器運算。o 目的字段提供存放器序號或存儲器地址,指令將把結果寫向目的字段指向的存放器或存儲器o 值字段用來在指令提

26、交之前,保管指令執(zhí)行結果的值,就緒字段闡明指令曾經完成它的執(zhí)行,其結果曾經可用。2.6 基于硬件的推測o 處置器硬件構造o 見圖2.14。雖然ROB替代了保管站的重命名功能,但是在指令發(fā)射到指令開場執(zhí)行這段時間內,依然需求一個空間來緩存操作及操作數。這個功能依然由保管站來提供。由于一切指令在提交之前都在ROB中占有一個位置,因此,用ROB入口的序號作為結果的標簽,而不是運用保管站的序號。這要求分配給指令的ROB序號必需可以記錄在保管站中。這里實現時為重命名運用額外的存放器,而ROB僅用于記錄指令提交的時間。2.6 基于硬件的推測o 指令的執(zhí)行過程o 指令的執(zhí)行包括發(fā)射、執(zhí)行、寫結果和提交4個步

27、驟,其中前3個步驟與Tomasulo算法類似,只添加了提交最后一個階段。o 提交階段是完成指令的最后一個階段,這之后只需指令的結果被保管。o 當指令提交后,指令在ROB中的入口將被收回,存放器或存儲器將被更新,無須再占用ROB的入口。假設ROB已被填滿,那么只需求停頓指令的發(fā)射,直到有可用的入口出現為止。2.7多發(fā)射技術 采用前面幾節(jié)中引見的技術可以消除數據相關和控制相關引起的停頓,從而獲得理想的CPI理想CPI為多少?。為了進一步提高性能,需求將CPI減小到1以下,但在每個時鐘周期發(fā)射一條指令的前提下,無法實現這個目的。 采用多發(fā)射技術可以處理此問題,多發(fā)射處置器的目的是允許在一個時鐘周期內

28、發(fā)射多條指令,重點引見VLIW方法。2.7多發(fā)射技術o VLIW方法o VLIW超長指令字處置器每時鐘周期發(fā)射固定數目的指令,這些指令被組織成一條長指令或一個固定的指令包,指令間的并行度由指令顯式地表示出來。 VLIW處置器采用編譯器靜態(tài)調度的方式。o VLIW采用多個獨立的功能單元, 將多個運算打包成一條長指令,或者要求發(fā)射包中的指令滿足一樣的約束,兩種方法本質上一樣。2.7多發(fā)射技術o VLIW方法o 對于寬發(fā)射情況,VLIW的優(yōu)勢更加明顯。為了使功能單元一直處于任務形狀,代碼序列必需含有足夠的并行度,以填滿功能單元的可用運算槽。代碼序列中的并行度可用經過將循環(huán)展開,在每個單獨的、更大的循

29、環(huán)體中進展代碼調度而實現。假設并行度要求跨轉移調度代碼,那么需求運用更復雜的全局調度算法,附錄G中,討論了一種專門為VLIW設計的全局調度技術,我們重點討論無轉移代碼調度情況。2.7多發(fā)射技術o VLIW方法o 為了抑制代碼快速增長帶來的影響,可采用智能譯碼方法,比如讓一切的功能單元運用一個立刻數字段;也可以在主存中緊縮指令,當指令被讀入Cache或被譯碼時再將它們解緊縮。o 早期VLIW是鎖步的,并且沒有檢測冒險的硬件,由于一切的功能單元必需堅持同步,因此恣意一個功能單元的停頓都將引起整個處置器的停頓。雖然編譯器可以對確定的功能單元進展調度以阻止停頓,但是要預測停頓是困難的。在最近的處置器中

30、,功能單元的操作越來越獨立,指令發(fā)射后,由硬件擔任檢測指令異步執(zhí)行。2.7多發(fā)射技術o VLIW方法-開發(fā)指令級并行首選方法o 開發(fā)指令級并行度是一切多發(fā)射處置器所面臨的一個共同挑戰(zhàn)。某些情況下,向量處置器可以高效地執(zhí)行浮點程序中的一些簡單循環(huán),而多發(fā)射處置器需求將循環(huán)展開才可以獲得足夠的并行度。對于這類運用,很難確定多發(fā)射處置器能否真的優(yōu)于向量處置器;當代價一樣時,向量處置器能夠會更快。然而多發(fā)射處置器的優(yōu)勢在于他們可以從構造化較差的代碼中開發(fā)并行度,而且有才干緩存一切格式的數據,這些緣由使得多發(fā)射處置器成為開發(fā)指令級并行度的首選方法,而向量處置器只是作為多發(fā)射處置器的擴展和補充。2.9指令

31、傳送和推測的高級技術o 提高取指令帶寬o 在高性能流水線特別是多發(fā)射流水線中,僅靠準確地預測轉移是不夠的,還需求傳送高帶寬的指令流。比如現代多發(fā)射處置器每時鐘周期要傳送4-8條指令。o 多發(fā)射處置器要求每時鐘周期取到的平均指令數目不低于平均吞吐量,這要求通向指令Cache的途徑足夠寬,帶最困難的還是轉移的處置。2.9指令傳送和推測的高級技術o 轉移目的緩存o 為了減小流水線的轉移代價,必需確定當前正在譯碼的指令能否是轉移指令,假設是,那么下一條指令的地址是什么,假設是轉移指令且知道下一條指令的地址,那么就可以將轉移代價降為0。把為轉移的后繼指令保管預測地址的轉移預測Cache稱為轉移目的緩存或

32、轉移目的Cache。2.9指令傳送和推測的高級技術o 轉移目的緩存o 由于轉移目的緩存要預測下一條指令的地址,并且在指令譯碼終了前將預測地址發(fā)送出去,因此必需確定取到的指令能否是一條被預測為將被選中的轉移指令。假設地址匹配,那么相應的預測指令地址將作為下一條指令的地址。轉移預測緩存的硬件構造本質上與Cache的硬件構造一致圖2.22。2.9指令傳送和推測的高級技術o 轉移目的緩存o 假設在轉移目的緩存中發(fā)現了一個匹配的入口,那么取指令立刻從預測指令地址開場。由于在確定指令能否轉移之前將預測地址發(fā)送出去,因此轉移目的緩存的預測入口必需與指令完全匹配,假設處置器不對這種匹配進展核實,那么在當前指令

33、不是轉移的情況下,發(fā)送出去的預測地址就是錯誤的,這會降低處置器的速度。在轉移目的緩存中,只保管那些預測為被選中的轉移。2.9指令傳送和推測的高級技術o 轉移目的緩存o 運用轉移目的緩存的詳細步驟參考圖2.23.o o 在緩存中存在匹配的轉移入口且預測正確的情況下,是不存在轉移延遲的;否那么,將至少付出2個時鐘周期的轉移代價。處置緩存缺失和預測錯誤是一個艱巨的挑戰(zhàn),由于必需在重寫緩存入口的同時停頓取指令的操作。2.9指令傳送和推測的高級技術o 轉移目的緩存o 轉移目的緩存的另外一種方式是在緩存中保管一條或多條目的指令,以此作為預測目的地址的替代或補充。這種方式有兩個潛在優(yōu)勢,首先,這種方法允許轉

34、移目的緩存的訪問時間超越兩個相繼取指令操作的時間間隔,也能夠允許更大的轉移目的緩存;其次,經過緩存實踐的指令可以實現優(yōu)化,稱之為轉移隱含,運用轉移隱含,可以將無條件轉移代價降為0時鐘周期。2.9指令傳送和推測的高級技術o 前往地址預測器o 當要提高推測的準確性時,將面臨間接轉移帶來的挑戰(zhàn),間接轉移目的地址是在運轉時確定的。高級編程言語會為間接程序調用、case選擇語句以及goto語句生成這類轉移,但間接轉移大部分還是來自過程前往,而在面向對象的言語中,比如c+或Java,過程前往更加頻繁。o 過程前往可運用堆棧作為前往地址緩存,該構造用來緩存最近的幾個前往地址,當調用發(fā)生時將前往地址壓入堆棧,

35、調用前往時再將其彈出。假設Cache足夠大的話,它將出色地預測前往地址。2.9指令傳送和推測的高級技術o 集成的取指令單元o 為了滿足多發(fā)射處置器的要求,可選擇集成取指令單元的方法,將取指令作為一個獨立自主的單元來實現,由該單元為流水線的其他部分提供指令,當然,這會添加多發(fā)射的復雜性,不再將取指令視為一個單獨的流水段。在最新設計中,集成取指令單元包含以下功能:集成的轉移預測、指令預取、指令存儲器訪問和緩存。2.9指令傳送和推測的高級技術o 集成的取指令單元o 1、集成的轉移預測o 轉移預測成為取指令的一部分,并且繼續(xù)對轉移進 行預測,以驅動流水線的取指令操作。o 2、指令預取o 為實現一個時鐘周期內傳送多條指令,取指令單元自主管理指令的預取,并將它

溫馨提示

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

評論

0/150

提交評論