




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、14.1指令級并行的概念 4.2指令的動態(tài)調(diào)度 4.3轉(zhuǎn)移預測技術(shù) 4.4多發(fā)射技術(shù) 4.5指令級并行的支持與限制4.6 Intel Pentium 4 實例分析 24.3 4.3 轉(zhuǎn)移預測技術(shù)(轉(zhuǎn)移預測技術(shù)(針對條件轉(zhuǎn)移針對條件轉(zhuǎn)移) 前面討論基本塊時,知道程序中平均5-7條指令就會遇到轉(zhuǎn)移指令,因此控制相關(guān)也是造成流水線停頓的一種主要原因。 條件轉(zhuǎn)移指令產(chǎn)生的停頓:等待判斷條件計算產(chǎn)生停頓 計算轉(zhuǎn)移地址產(chǎn)生停頓模型機的條件轉(zhuǎn)移指令時序圖3 例如:下面的指令序列中,轉(zhuǎn)移條件由浮點除法指令產(chǎn)生 DIVD F0,F(xiàn)2,F(xiàn)4 BG F0,F(xiàn)6,L1 ;如果F0F6,轉(zhuǎn)移到L1 浮點除法運算時間長,
2、轉(zhuǎn)移指令需要等待較長時間得到轉(zhuǎn)移條件。 如果采用轉(zhuǎn)移預測,對以上BG指令譯碼時,就猜測轉(zhuǎn)移方向,讓流水線按猜測走向連續(xù)執(zhí)行指令,只要猜測正確,就可以消除或減少等待條件產(chǎn)生造成的流水線停頓。(猜測錯誤,就需要重新按另一個走向執(zhí)行指令,猜測的準確性很重要)4靜態(tài)預測方法:無論是采用編譯器還是硬件預測,其預測方向是固定不變的。* 最簡單的方法是預測轉(zhuǎn)移總是發(fā)生(或者不發(fā)生)。對于SPEC程序錯誤率平均34% 。如模型機的假設(shè)轉(zhuǎn)移不發(fā)生* 另一種稍好的方法是根據(jù)轉(zhuǎn)移的前后方向來預測轉(zhuǎn)移。據(jù)測試程序統(tǒng)計,程序中向后轉(zhuǎn)移的概率高于向前轉(zhuǎn)移,因此,可以預測向后的轉(zhuǎn)移總是發(fā)生。 其錯誤率很難低于30%。* 一
3、個更精確的技術(shù)是基于以前運行時得到的配置文件信息。錯誤率約14% 左右?;ㄙM時間代價。4.3.1 4.3.1 靜態(tài)轉(zhuǎn)移預測靜態(tài)轉(zhuǎn)移預測總的來說,靜態(tài)轉(zhuǎn)移預測的準確率不夠高。5圖圖144 模型機的猜測不轉(zhuǎn)移模型機的猜測不轉(zhuǎn)移轉(zhuǎn)移沒有發(fā)生轉(zhuǎn)移沒有發(fā)生 為提高轉(zhuǎn)移預測的準確率,則需要采用動態(tài)轉(zhuǎn)移預測技術(shù)。64.3.24.3.2動態(tài)轉(zhuǎn)移預測動態(tài)轉(zhuǎn)移預測 動態(tài)分支預測技術(shù):通過硬件技術(shù),在程序執(zhí)行時根據(jù)每一條轉(zhuǎn)移指令過去的轉(zhuǎn)移歷史記錄來預測下一次轉(zhuǎn)移的方向。通過提前預測分支方向,減少或消除控制相關(guān)導致的流水線停頓。特征: 根據(jù)程序的執(zhí)行過程動態(tài)地改變轉(zhuǎn)移的預測方向。程序每次執(zhí)行時,可能預測的分支方向與前
4、次相同或不同。從簡單到復雜的動態(tài)轉(zhuǎn)移預測技術(shù)如下: 1. 轉(zhuǎn)移預測緩存轉(zhuǎn)移預測緩存 2. 分支目標緩沖分支目標緩沖3. 基于硬件的前瞻執(zhí)行基于硬件的前瞻執(zhí)行以上預測機制的性能隨著復雜性與硬件的增加而有效地提高。7 最簡單的是最簡單的是轉(zhuǎn)移預測緩存轉(zhuǎn)移預測緩存區(qū)(branch prediction buffer,BPB),也稱為轉(zhuǎn)移歷史表??梢允侵噶頒ache的一個字段集合,也可以是一個小存儲器。 這個緩存有若干記錄表項,最簡單的是每個表項1位,記錄轉(zhuǎn)移指令最近一次的分支歷史,用轉(zhuǎn)移指令地址低位來索引??赡苡袔讞l轉(zhuǎn)移指令都映射到了同一個預測緩存表項。 1. 轉(zhuǎn)移(分支)預測緩存轉(zhuǎn)移(分支)預測緩
5、存 (branch prediction buffer,BPB)8從Cache取指令時,同時獲得預測位, 如果是轉(zhuǎn)移指令: * 根據(jù)該位內(nèi)容預測是否轉(zhuǎn)移; * 根據(jù)實際的轉(zhuǎn)移情況對預測位進行修改。例如:DEC Alpha 21064的1位轉(zhuǎn)移預測緩存與指令Cache在一起9 帶有箭頭的線表示狀態(tài)轉(zhuǎn)換的方向,線旁邊的T表示指令實際執(zhí)行結(jié)果為轉(zhuǎn)移成功,而N表示指令實際執(zhí)行結(jié)果為轉(zhuǎn)移不成功。預測成功率一般為77-79%。 只記錄一次歷史轉(zhuǎn)移信息狀態(tài)轉(zhuǎn)化圖 當BPB表項項為一位預測位時,記錄該指令最近一次分支是否成功,其狀態(tài)圖如下:10例子:設(shè)一條轉(zhuǎn)移指令在每次執(zhí)行過程中的實際轉(zhuǎn)移序列如下: T, T
6、, T, N, T, T, N, T, N, N, T, N, N采用1位動態(tài)預測時:N TT TT TN T T N T NNT T T N T T N T N N T N NY Y Y Y Y Y事件序列預測器狀態(tài)準確性成功率為:6/13=46% 。 分析影響預測成功的因素:兩次執(zhí)行的實際轉(zhuǎn)移方向不同,常常引起預測失敗。 因此,考慮記錄兩次轉(zhuǎn)移歷史,如果兩次轉(zhuǎn)移方向不同再改變狀態(tài),這樣可能會提高分支預測的準確率,下面是采用2位預測位的BPB。11記錄兩次歷史轉(zhuǎn)移信息狀態(tài)轉(zhuǎn)化圖 一般預測成功率為78-89% 思考題:用2位轉(zhuǎn)移預測器計算前例的預測成功率。12 BPB在預測正確時能消除等待轉(zhuǎn)移
7、條件判斷情況的流水線停頓。而對轉(zhuǎn)移地址計算產(chǎn)生的停頓則用處不大。例如,R4000中即使預測轉(zhuǎn)移發(fā)生,計算轉(zhuǎn)移地址仍然會引起流水線停頓。R4000流水線的基本分支延遲(計算轉(zhuǎn)移地址)為3個時鐘周期13指令序列指令序列時鐘周期時鐘周期1 12 23 34 45 56 67 78 89 9分支指令分支指令I(lǐng)FIFISISRFRFEXEXDFDFDSDSTCTCWBWB延遲槽延遲槽IFIFISISRFRFEXEXDFDFDSDSTCTCWBWB暫停暫停stallstallstallstallstallstallstallstallstallstallstallstallstallstall暫停暫停st
8、allstallstallstallstallstallstallstallStallStallstallstall分支目標分支目標IFIFISISRFRFEXEXDFDF基于單周期延遲分支方法,R4000流水線處理分支指令的時空圖,即使有延遲槽,仍然有2個時鐘周期的停頓 下面討論的轉(zhuǎn)移目標緩沖技術(shù),當命中緩沖區(qū)時可以從緩沖區(qū)直接得到目標地址,而不必等到計算出轉(zhuǎn)移地址。142. 轉(zhuǎn)移(分支)目標緩沖轉(zhuǎn)移(分支)目標緩沖 (Branch Target Buffer,BTB) 為了進一步減少轉(zhuǎn)移指令計算轉(zhuǎn)移地址引起的停頓,可以將轉(zhuǎn)移成功的轉(zhuǎn)移指令地址和它的目標地址都放到一個緩沖區(qū)中,在轉(zhuǎn)移指令取指
9、階段就得到目標地址,轉(zhuǎn)移成功時,可以將延遲降為0。 這個緩沖區(qū)就是分支目標緩沖區(qū)(Branch-Target Buffer,BTB,或者Branch-Target Cache,BTC)。 15BTB的結(jié)構(gòu)如圖所示 用專門的硬件實現(xiàn)的一張表格。表格中的每一項至少有2個字段:(1)執(zhí)行過的轉(zhuǎn)移成功的轉(zhuǎn)移指令的地址;(2)預測的轉(zhuǎn)移目標地址。(3)可選的字段:轉(zhuǎn)移 預測位預測的轉(zhuǎn)移目標地址匹配:預測的轉(zhuǎn)移目標地址送匹配:預測的轉(zhuǎn)移目標地址送PC16 由于BTB中存儲的是執(zhí)行過的成功分支指令的地址,所以如果當前指令的地址與BTB中的第一個字段匹配,那么就將該匹配項中第二個字段中的地址送給PC寄存器,從
10、分支目標處開始取指令。 如果預測正確,則不會有任何分支延遲。如果轉(zhuǎn)移指令預測錯誤或者在BTB中沒有匹配的項,則會有至少兩個時鐘周期的開銷,這是因為這時需要更新BTB中的項。 17 假定在基本流水線的各個階段,采用BTB時所進行的處理步驟如圖。在轉(zhuǎn)移指令取指階段就得到目標地址。將轉(zhuǎn)移指令地址和將轉(zhuǎn)移指令地址和轉(zhuǎn)移目標地址輸入轉(zhuǎn)移目標地址輸入轉(zhuǎn)移目標緩存轉(zhuǎn)移目標緩存預測轉(zhuǎn)移目標地址預測轉(zhuǎn)移目標地址 PCPC18采用BTB技術(shù)時指令在各種情況下的延遲 指令地址在指令地址在BTB中中? 預測結(jié)果預測結(jié)果 實際的動作實際的動作 延遲周期延遲周期 是是 成功成功 成功成功 0 是是 成功成功 不成功不成功
11、 2 不是不是 成功成功 2 不是不是 不成功不成功 0例如:采用BTB的Pentium CPU(P5) 內(nèi)部功能結(jié)構(gòu)如下圖所示。問題:實際機器判轉(zhuǎn)移預測是否成功的延遲,取決于機器實際執(zhí)行轉(zhuǎn)移指令所花費的時鐘周期數(shù)。19P5結(jié)構(gòu)結(jié)構(gòu)20 BTB的另一種形式: 在分支目標緩沖器中存儲分支目標處的指令。 有的實現(xiàn)方案還保留了分支目標地址,有的則將之去掉了。 目的是進一步加快分支指令執(zhí)行。213. 基于硬件的前瞻執(zhí)行(猜測執(zhí)行、推測執(zhí)行)基于硬件的前瞻執(zhí)行(猜測執(zhí)行、推測執(zhí)行) 為了得到更高的并行性,可以將動態(tài)轉(zhuǎn)移預測技術(shù)與Tomasulo結(jié)合,設(shè)計出了前瞻執(zhí)行方法:處理器按轉(zhuǎn)移預測方向,亂序執(zhí)行推
12、測的指令序列,如果預測正確,就能夠消除控制相關(guān)的延遲。也解決了數(shù)據(jù)相關(guān)和消除名相關(guān)。如果預測錯誤,則廢棄已經(jīng)執(zhí)行的指令序列,從另一個分支處重新開始執(zhí)行。 基于硬件的前瞻執(zhí)行結(jié)合了以下3種思想:(1)采用動態(tài)的分支預測技術(shù)來選擇后續(xù)執(zhí)行語句(2)在控制相關(guān)消除之前指令前瞻執(zhí)行。(3)跨基本塊進行動態(tài)調(diào)度。22實現(xiàn)前瞻的關(guān)鍵思想是: 允許指令亂序執(zhí)行,但必須順序確認。只有確認以后的結(jié)果才是最終的結(jié)果,從而避免不可恢復的行為,如更新機器狀態(tài)或執(zhí)行過程發(fā)生異常。 將Tomasulo算法加以擴展就可實現(xiàn)支持指令前瞻執(zhí)行。 前瞻執(zhí)行的結(jié)果不是實際完成的結(jié)果,需要緩存在ROB; 要將前瞻執(zhí)行的結(jié)果供給其他指
13、令使用,使用這些結(jié)果的任何指令也是在前瞻執(zhí)行。 前瞻執(zhí)行的結(jié)果要一直到指令處于非前瞻執(zhí)行狀態(tài)時(確認階段),才能確定為最終結(jié)果,才允許最終寫到寄存器或存儲器中。 因此,前瞻執(zhí)行階段以后,需要增加一個指令確認階段(Instruction commit)。 23再定序緩沖(再定序緩沖(ReOrder Buffer,ROB):): 在指令確認前需要在指令確認前需要一套額外的硬件緩沖,來保存那些已經(jīng)一套額外的硬件緩沖,來保存那些已經(jīng)發(fā)射、執(zhí)行、寫結(jié)發(fā)射、執(zhí)行、寫結(jié)果果但未經(jīng)確認但未經(jīng)確認的指令及其結(jié)果。它同時還用來的指令及其結(jié)果。它同時還用來在前瞻執(zhí)行在前瞻執(zhí)行的指令之間傳送結(jié)果。的指令之間傳送結(jié)果。
14、 為了簡便,這里將存緩沖的功能集成到再定序緩沖。因為結(jié)果在寫入寄存器之前由ROB保存。 不過, 在實際機器中,存/取緩沖可以獨立出來。24采用Tomasulo算法并支持前瞻執(zhí)行的擴展浮點部件的結(jié)構(gòu)25使用使用再定序再定序技術(shù),浮點指令的執(zhí)行包含以下技術(shù),浮點指令的執(zhí)行包含以下4步步: (1)流出流出:指令隊列取一條指令,如果:指令隊列取一條指令,如果有空保留站和有空保留站和ROB項項就流出指令,并分配保留站和就流出指令,并分配保留站和ROB項。項。 如果如果所需操作數(shù)所需操作數(shù)在寄存器或在寄存器或ROB中,則將它送入保留站中,則將它送入保留站中。中。分配給本指令的分配給本指令的ROB編號也要送
15、入保留站編號也要送入保留站,當本指令執(zhí),當本指令執(zhí)行的結(jié)果放到行的結(jié)果放到CDB上時用它來標示。上時用它來標示。 如果保留站或如果保留站或ROB全滿,則是結(jié)構(gòu)相關(guān)(阻塞),停止全滿,則是結(jié)構(gòu)相關(guān)(阻塞),停止流出指令,直到兩者均有空項。流出指令,直到兩者均有空項。(2)執(zhí)行執(zhí)行:如果有如果有1個或個或2個操作數(shù)無效,就等待并不斷檢測個操作數(shù)無效,就等待并不斷檢測CDB。這一步檢測。這一步檢測先寫后讀相關(guān)先寫后讀相關(guān)。當保留站中的兩個操作數(shù)。當保留站中的兩個操作數(shù)全有效后就可以執(zhí)行這個操作。全有效后就可以執(zhí)行這個操作。26(3)寫結(jié)果寫結(jié)果:結(jié)果有效后將其送到結(jié)果有效后將其送到CDB上,上,結(jié)果
16、附帶結(jié)果附帶ROB項號項號,然后從,然后從CDB寫到寫到ROB以及等待此結(jié)果的以及等待此結(jié)果的保留站保留站。這一段完成后,就可以。這一段完成后,就可以釋放釋放保留保留站。站。(4)確認:確認:寄存器指令寄存器指令(運算(運算/load指令)指令)到達到達ROB的出口的出口且且結(jié)果有效結(jié)果有效時,時,將結(jié)果回寫到目的寄存器。如果是將結(jié)果回寫到目的寄存器。如果是存操作,則將結(jié)果寫入存儲器存操作,則將結(jié)果寫入存儲器。指令的。指令的前瞻執(zhí)行過程結(jié)束,然后前瞻執(zhí)行過程結(jié)束,然后將指令從將指令從ROB中清除中清除。 如果如果轉(zhuǎn)移指令轉(zhuǎn)移指令到達到達ROB出口,轉(zhuǎn)移預測正確則此分支執(zhí)行完畢。一些出口,轉(zhuǎn)移預
17、測正確則此分支執(zhí)行完畢。一些機器稱這個過程為完成。(機器稱這個過程為完成。(Completion或或Graduation)。)。 當預測錯誤的轉(zhuǎn)移指令到達當預測錯誤的轉(zhuǎn)移指令到達ROB的出口時,將指出前瞻執(zhí)行錯誤;的出口時,將指出前瞻執(zhí)行錯誤;清清空轉(zhuǎn)移指令之后的空轉(zhuǎn)移指令之后的ROB項項,刷新刷新ROB并從分支的正確入口重新開始執(zhí)行。并從分支的正確入口重新開始執(zhí)行。 因此因此,分支預測的準確性是很重要的,分支預測的準確性是很重要的,不正確的預測會導不正確的預測會導致已經(jīng)前瞻執(zhí)行的指令全部作廢,降低致已經(jīng)前瞻執(zhí)行的指令全部作廢,降低CPU性能。性能。27采用Tomasulo算法并支持前瞻執(zhí)行的
18、擴展浮點部件的結(jié)構(gòu)28ROB的每個項主要包含4個域:(1)指令的類型:轉(zhuǎn)移(尚無結(jié)果)、存操作(目的地址為存儲器)、寄存器操作(ALU操作或目的地址是寄存器的取操作)。(2)目的地址:該域給出結(jié)果應寫入的目的寄存器號(對于取操作和ALU指令)或存儲器的地址(存操作)。(3)值:該域用來保存指令前瞻執(zhí)行的結(jié)果,直到指令得到確認。 (4)狀態(tài):給出該指令處于什么階段。29LD F6 , 34(R2)LD F2 , 45(R3)MULTD F0 , F2 , F4SUBD F8 , F2 , F6DIVD F10 , F0 , F6ADDD F6 , F8 , F2例: 假設(shè)浮點流水線中執(zhí)行的延遲如
19、下: 加法需2個時鐘周期 乘法需6個時鐘周期 除法需12個時鐘周期給出下面代碼段當指令MULTD要寫結(jié)果、確認時的狀態(tài)。下表中,Qj、Qk中存的是產(chǎn)生操作數(shù)的ROB編號。30執(zhí)行到MULTD要寫結(jié)果時指令的狀態(tài)指指 令令 指令狀態(tài)表指令狀態(tài)表 發(fā)射發(fā)射 執(zhí)行執(zhí)行 寫結(jié)果寫結(jié)果 確認確認 LD F6 , 34(R2) LD F2 , 45(R3) MULTDF0 , F2 , F4 SUBDF8 , F6 , F2 DIVDF10 , F0 , F6 ADDDF6 , F8 , F2 31yes執(zhí)行 流出32執(zhí)行到MULTD要確認時指令的狀態(tài)指指 令令 指令狀態(tài)表指令狀態(tài)表 發(fā)射發(fā)射 執(zhí)行執(zhí)行
20、寫結(jié)果寫結(jié)果 確認確認 LD F6 , 34(R2) LD F2 , 45(R3) MULTDF0 , F2 , F4 SUBDF8 , F6 , F2 DIVDF10 , F0 , F6 ADDDF6 , F8 , F2 33#2 RegsF434采用Tomasulo算法并支持前瞻執(zhí)行的擴展浮點部件的結(jié)構(gòu)35l 前瞻執(zhí)行,允許亂序執(zhí)行,前瞻執(zhí)行,允許亂序執(zhí)行,必須順序確認必須順序確認,如上,如上表的表的SUBD指令已執(zhí)行完但必須等指令已執(zhí)行完但必須等MULD確認后才能確認后才能確認。確認。l 前瞻執(zhí)行可以做到前瞻執(zhí)行可以做到精確異常處理。精確異常處理。如,上例如,上例MULTD引起異常,可以
21、等到它到達引起異常,可以等到它到達ROB出口,再進出口,再進行異常處理,而將其后等待確認的指令清除掉。行異常處理,而將其后等待確認的指令清除掉。 基于硬件的前瞻和動態(tài)調(diào)度相結(jié)合,最重要的是解決了轉(zhuǎn)移預測出錯后,不影響處理機的狀態(tài)。主要缺點是,所需的硬件太復雜。 前瞻執(zhí)行在很多機器中得到應用,如Power PC多種型號、MIPS多種型號、Intel P6以后的32位處理器等。 36 例:討論例:討論P II采用的轉(zhuǎn)移預測技術(shù)。采用的轉(zhuǎn)移預測技術(shù)。采用采用前瞻執(zhí)行前瞻執(zhí)行的的P II內(nèi)部功能結(jié)構(gòu)如下圖。內(nèi)部功能結(jié)構(gòu)如下圖。 P在體系結(jié)構(gòu)上較其以前的處理器有很大變化,在體系結(jié)構(gòu)上較其以前的處理器有很
22、大變化,一個最明顯的技術(shù)特征就是其核心完全采用一個最明顯的技術(shù)特征就是其核心完全采用RISC微結(jié)微結(jié)構(gòu),為了保持與構(gòu),為了保持與80 x86其他處理器兼容,仍繼續(xù)采用其他處理器兼容,仍繼續(xù)采用CISC指令集,因此內(nèi)部增加了指令集,因此內(nèi)部增加了RISC與與CISC之間的轉(zhuǎn)之間的轉(zhuǎn)換硬件。換硬件。 37PII結(jié)構(gòu)38P的流水線結(jié)構(gòu) 撤退步驟相當于前述的確認階段,將有效指令結(jié)果按順序?qū)懭隝A寄存器或存儲器,并將完成的微操作從ROB撤出。 如果轉(zhuǎn)移預測錯誤,則要廢棄若干條在ROB中的指令序列。39下面討論下面討論P II采用的轉(zhuǎn)移預測技術(shù)。采用的轉(zhuǎn)移預測技術(shù)。1、靜態(tài)分支預測、靜態(tài)分支預測 當一條條
23、件轉(zhuǎn)移指令在當一條條件轉(zhuǎn)移指令在BTB中未找到過去的記錄時,表示中未找到過去的記錄時,表示此此分支指令第一次執(zhí)行,只能使用靜態(tài)分支預測,分支指令第一次執(zhí)行,只能使用靜態(tài)分支預測,方法為:方法為: * 對于轉(zhuǎn)移地址對于轉(zhuǎn)移地址不是不是相對尋址:如果是返回指令的轉(zhuǎn)移,相對尋址:如果是返回指令的轉(zhuǎn)移,則預測轉(zhuǎn)移發(fā)生;如果是向前的轉(zhuǎn)移(地址增大),則預測則預測轉(zhuǎn)移發(fā)生;如果是向前的轉(zhuǎn)移(地址增大),則預測轉(zhuǎn)移不發(fā)生。轉(zhuǎn)移不發(fā)生。 * 對于轉(zhuǎn)移地址是相對尋址,如果是向后的轉(zhuǎn)移(地址減對于轉(zhuǎn)移地址是相對尋址,如果是向后的轉(zhuǎn)移(地址減小)則預測轉(zhuǎn)移發(fā)生;如果是向前的轉(zhuǎn)移(地址增大),則?。﹦t預測轉(zhuǎn)移發(fā)生;如
24、果是向前的轉(zhuǎn)移(地址增大),則預測轉(zhuǎn)移不發(fā)生。預測轉(zhuǎn)移不發(fā)生。40 2、動態(tài)分支預測、動態(tài)分支預測 BTB有有256個單元(項),可以保存?zhèn)€單元(項),可以保存256個個已執(zhí)行過的轉(zhuǎn)移指令地址已執(zhí)行過的轉(zhuǎn)移指令地址和和轉(zhuǎn)移轉(zhuǎn)移目標地址目標地址,預測狀態(tài)有,預測狀態(tài)有4位二進制位。如果轉(zhuǎn)移指令在位二進制位。如果轉(zhuǎn)移指令在BTB命中,則按其預測命中,則按其預測算法預測該指令是否發(fā)生轉(zhuǎn)移。算法預測該指令是否發(fā)生轉(zhuǎn)移。 如果算法如果算法預測轉(zhuǎn)移指令不發(fā)生轉(zhuǎn)移預測轉(zhuǎn)移指令不發(fā)生轉(zhuǎn)移,則指令預取按照順序進行。預測是,則指令預取按照順序進行。預測是否正確要等到此指令執(zhí)行完畢后才能確定。如預測正確,系統(tǒng)繼續(xù)運
25、行。如否正確要等到此指令執(zhí)行完畢后才能確定。如預測正確,系統(tǒng)繼續(xù)運行。如果預測錯誤,則位于轉(zhuǎn)移指令后各流水線部件中的指令要全部作廢,系統(tǒng)從果預測錯誤,則位于轉(zhuǎn)移指令后各流水線部件中的指令要全部作廢,系統(tǒng)從分支指令的轉(zhuǎn)移目標地址處重新啟動流水線。分支指令的轉(zhuǎn)移目標地址處重新啟動流水線。 如果算法預測分支指令發(fā)生轉(zhuǎn)移,此時的情況如何?如果算法預測分支指令發(fā)生轉(zhuǎn)移,此時的情況如何? 避免分支指令對流水線運行速度產(chǎn)生損失的有效方法,就是避免分支指令對流水線運行速度產(chǎn)生損失的有效方法,就是提高預測的提高預測的準確度準確度。因此,高性能微處理器在分支預測上投入了相當?shù)馁Y源。因此,高性能微處理器在分支預測上
26、投入了相當?shù)馁Y源。P II采用靜采用靜態(tài)與動態(tài)預測結(jié)合的方式,使預測的準確率達到態(tài)與動態(tài)預測結(jié)合的方式,使預測的準確率達到9095%。414.4 4.4 多發(fā)射(多流出)技術(shù)多發(fā)射(多流出)技術(shù) 要提高處理器的性能,希望CPI能夠小于1。如果指令流水線每個時鐘周期只能發(fā)射一條指令,則CPI就不可能小于1。只有處理器能夠在一個時鐘周期發(fā)射多條指令時,才有可能使CPI小于1。 目前多指令發(fā)射處理器有3種基本結(jié)構(gòu):超標量、超流水線和超長指令字。424.4.1 4.4.1 超標量技術(shù)超標量技術(shù)l 標量是相對于向量而言的,一個只有大小的量稱為標量,而將既有大小又有方向的量稱為向量。當然,向量中的某一個分
27、量也是標量。l 如果處理機每條指令的處理對象是一個或一對(如兩個標量相加)標量,這種處理機稱為標量處理機。l 如果標量處理機內(nèi)部存在2條以上指令流水線,則稱為超標量處理機。431 1單發(fā)射與多發(fā)射單發(fā)射與多發(fā)射從指令存儲單元(或指令分配單元)取出指令的過程稱為從指令存儲單元(或指令分配單元)取出指令的過程稱為“發(fā)射發(fā)射”。如果一個處理機在單個時鐘周期發(fā)射一條指令,就稱為如果一個處理機在單個時鐘周期發(fā)射一條指令,就稱為單發(fā)射處理機單發(fā)射處理機。如果在一個時鐘周期內(nèi)可以如果在一個時鐘周期內(nèi)可以同時發(fā)射多條指令同時發(fā)射多條指令的處理機可以稱為的處理機可以稱為多發(fā)射處理機多發(fā)射處理機。多發(fā)射處理機發(fā)出
28、的多條指令不能相關(guān)。多發(fā)射處理機發(fā)出的多條指令不能相關(guān)。時鐘周期指令I(lǐng)1I2I351234IFIDEXWRIFIDEXWRIFIDEXWR時鐘周期指令I(lǐng)6I1I2I3I4I512345EXWRIFIDIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWRIFIDEXWR(a) 單發(fā)射 (b)多發(fā)射 單發(fā)射與多發(fā)射工作方式比較44指令存儲器指令存儲器寄存器寄存器取指令取指令指令譯碼指令譯碼指令執(zhí)行指令執(zhí)行寫回結(jié)果寫回結(jié)果存取數(shù)部件存取數(shù)部件浮點加法流水線浮點加法流水線乘除法流水線乘除法流水線定點算邏部件定點算邏部件WRIDIFFA1FA2FA3MD1MD2MD3ALLS(a)單發(fā)射指令
29、流水線)單發(fā)射指令流水線45ID1IF1存取數(shù)部件存取數(shù)部件FA1FA2FA3MD1MD2MD3浮點加法流水線浮點加法流水線乘除法流水線乘除法流水線定點算邏部件定點算邏部件WR1WR2ID2IF2指令存儲器指令存儲器取指令取指令指令譯碼指令譯碼指令執(zhí)行指令執(zhí)行寫回結(jié)果寫回結(jié)果寄存器寄存器寄存器寄存器ALLS(b)多發(fā)射指令流水線)多發(fā)射指令流水線46 在超標量處理機中由于需要同時調(diào)度更多的不相關(guān)指令,面臨的功能部件沖突、數(shù)據(jù)相關(guān)和控制相關(guān)問題會更嚴重。指令調(diào)度是關(guān)鍵問題:(1)靜態(tài)調(diào)度(2) 采用Tomasulo算法動態(tài)調(diào)度,再加上推測執(zhí)行技術(shù)474.4.2多發(fā)射的動態(tài)調(diào)度多發(fā)射的動態(tài)調(diào)度1.
30、多流水線調(diào)度多流水線調(diào)度2.資源沖突資源沖突 在超標量處理機中,有多條指令流水線在同時工作,設(shè)置有多個能獨立工作的操作部件,因此,必須解決多流水線的調(diào)度問題和操作部件的資源沖突問題。 3.典型處理機結(jié)構(gòu)典型處理機結(jié)構(gòu)481.多流水線調(diào)度多流水線調(diào)度 在有多條流水線同時工作時,指令的發(fā)射順序和完成順序?qū)μ岣叱瑯肆刻幚頇C的性能非常重要。 如果指令的發(fā)射順序是按照程序中的指令排列順序進行的,稱為順序發(fā)射(in-order issue),否則,稱為亂序發(fā)射(outorder issue)。 如果指令的完成順序必須按照程序中的指令排列順序進行,稱為順序完成(in-order completion),否則
31、,稱為亂序完成(outorder completion)。49 通過一個具體的程序例子來介紹這三種方法。 設(shè)有一個浮點加法部件FADD和一個浮點乘法部件FMUL,部件是流水線結(jié)構(gòu)。 可以同時發(fā)射13條指令。50(1)順序發(fā)射順序完成51(2)順序發(fā)射亂序完成順序發(fā)射亂序完成52 亂序完成方式在指令執(zhí)行時間長短不一時性能較高。 亂序完成調(diào)度方法可以最大限度地利用各個執(zhí)行功能部件,只有當按序輸入的指令中存在結(jié)構(gòu)相關(guān)、數(shù)據(jù)相關(guān)時才需要加入延遲。但是,出現(xiàn)異常時處理復雜。53(3)亂序發(fā)射亂序完成亂序發(fā)射亂序完成542.資源沖突資源沖突下面是一個由4條指令組成的程序:FAD.D R0 , R1FMUL
32、 R2 , R3FAD.D R4 , R5FMUL R6 , R7 如果在一臺每個時鐘周期發(fā)射兩條指令的雙流水線超標量處理機上執(zhí)行,有一個獨立的浮點加法部件FADD和一個獨立的浮點乘法部件FMUL。 假設(shè)完成一次浮點加法需要3個時鐘周期,完成一次浮點乘法需要4個時鐘周期。 55 若浮點加法器和浮點乘法器這兩個操作部件都不采用流水線結(jié)構(gòu),則要發(fā)生資源沖突。 流水線的時空圖如圖4-22所示。圖4-22雙流水線超標量處理機,操作部件不采用流水線的時空圖56 如果浮點加法器和浮點乘法器都采用流水線結(jié)構(gòu),每一個功能段的時間長度都相等。浮點加法器采用3段流水線,浮點乘法器需要4段流水線。在一臺雙流水線超標
33、量處理機上,4條指令執(zhí)行的時空圖如圖4-23所示。圖4-23雙流水線超標量處理機,操作部件采用流水線時空圖 57 比較圖4-22和圖4-23可以發(fā)現(xiàn),在一臺每個時鐘周期發(fā)射m條指令的超標量處理機中,對于一個延遲時間為k個時鐘周期的操作部件,如果它不采用流水線結(jié)構(gòu),則使用同一個操作部件的兩條指令的序號應該至少相差mk,否則可能發(fā)生資源沖突。 如果操作部件采用是一個功能段的流水線結(jié)構(gòu),則使用同一個操作部件的兩條指令的序號只需要相差m或m以上,就不會發(fā)生資源沖突。 583. 典型處理機結(jié)構(gòu)典型處理機結(jié)構(gòu)DEC公司的公司的Alpha 21064處理器是超標量超流水線結(jié)構(gòu)。處理器是超標量超流水線結(jié)構(gòu)。四
34、個部件和兩個四個部件和兩個Cache: 中央執(zhí)行部件中央執(zhí)行部件IBOX:同時從指令同時從指令Cache取兩條指令、譯碼,并取兩條指令、譯碼,并進行資源沖突檢測、相關(guān)性分析,如果沒有沖突,就把進行資源沖突檢測、相關(guān)性分析,如果沒有沖突,就把2條指令條指令同時發(fā)射給同時發(fā)射給EBOX、ABOX、FBOX執(zhí)行部件中的兩個。執(zhí)行部件中的兩個。 采用采用順序發(fā)射亂序完成順序發(fā)射亂序完成,如果第,如果第1條指令不能發(fā)射,即使第條指令不能發(fā)射,即使第2條條指令可以發(fā)射,指令可以發(fā)射,IBOX也不能發(fā)射必須暫停流水線等到第也不能發(fā)射必須暫停流水線等到第1條指令條指令可以發(fā)射,才能啟動流水線。可以發(fā)射,才能啟動流水線。 指令指令Cache中有一個轉(zhuǎn)移歷史表,它與中有一個轉(zhuǎn)移歷史表,它與IBOX的轉(zhuǎn)移預測邏輯一的轉(zhuǎn)移預測邏輯一起實現(xiàn)起實現(xiàn)條件轉(zhuǎn)移動態(tài)預測條件轉(zhuǎn)移動態(tài)預測。每個數(shù)據(jù)塊有一個歷史字段每個數(shù)據(jù)塊有一個歷史字段。對于一。對于一條條件轉(zhuǎn)移指令第條條件轉(zhuǎn)移指令第1次執(zhí)行,無記錄,則按照指令的偏移量符號次執(zhí)行,無記錄,則按照指令的偏移量符號判斷,為負預測轉(zhuǎn)移發(fā)生(基于循環(huán))。判斷,為負預測轉(zhuǎn)移發(fā)生(基于循環(huán))。59整數(shù)執(zhí)行部件整數(shù)執(zhí)行部件EBOX:32個個64位寄存器組,有位寄存器組,有4個讀出端口和兩個讀出端口和兩個寫入端口,可以將兩個操作數(shù)或結(jié)果
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年演出經(jīng)紀人之演出市場政策與法律法規(guī)模擬考試試卷B卷及答案【名師系列】
- 2025年O2O零售模式報告:線上線下融合下的消費體驗升級
- 物理●福建卷丨2024年福建省普通高中學業(yè)水平選擇性考試物理試卷及答案
- 企業(yè)質(zhì)量管理精要
- 2025屆高考物理大一輪復習課件 第一章 第3課時 自由落體運動和豎直上拋運動 多過程問題
- 政治●安徽卷丨2024年安徽省普通高中學業(yè)水平選擇性考試政治試卷及答案
- 江西省吉安市陽明中學2025屆高考英語保溫卷(一)(原卷版)
- 消防規(guī)范試題及答案
- 西部計劃試題及答案青海
- 安徽省宣城市2025年中考三模道德與法治試卷(含答案)
- MOOC 大學公共體育-華南理工大學 中國大學慕課答案
- 財政一體化業(yè)務系統(tǒng)
- 北美連續(xù)油管技術(shù)的新進展及發(fā)展趨勢李宗田
- 行政單位會計實習報告(共36頁)
- 110千伏變電站工程檢測試驗項目計劃
- 《鐵路貨物運價規(guī)則》
- YD_T 3956-2021 電信網(wǎng)和互聯(lián)網(wǎng)數(shù)據(jù)安全評估規(guī)范_(高清版)
- (完整版)數(shù)學常用英文詞匯
- 小學三年級下冊音樂《春天舉行音樂會》人音版(簡譜2014秋)(18張)(1)ppt課件
- 《口腔粘接材料》PPT課件.ppt
- 最新《消費者行為學》綜合練習
評論
0/150
提交評論