循環(huán)展開及指令調(diào)度_第1頁
循環(huán)展開及指令調(diào)度_第2頁
循環(huán)展開及指令調(diào)度_第3頁
循環(huán)展開及指令調(diào)度_第4頁
循環(huán)展開及指令調(diào)度_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、循環(huán)展開及指令調(diào)度實(shí)驗項目名稱實(shí)驗?zāi)康募耙髮?shí)驗內(nèi)容循環(huán)展開及指令調(diào)度加深對循環(huán)級并行性、指令調(diào)度技術(shù)、循環(huán)展開技術(shù)以及寄存器換名技術(shù)的理解;熟悉用指令調(diào)度技術(shù)來解決流水線中的數(shù)據(jù)相關(guān)的方法;了解循環(huán)展開、指令調(diào)度等技術(shù)對 CPU性能的改進(jìn)。1用指令調(diào)度技術(shù)解決流水線中的結(jié)構(gòu)相關(guān)與數(shù)據(jù)相關(guān)1) 用 MIPS 匯編語言編寫代碼文件 *.s,程序中應(yīng)包括數(shù)據(jù)相關(guān)與結(jié)構(gòu)相關(guān) (假設(shè):加法乘法除法部件各有 2 個,延遲時間都是 3 個時鐘周期)2) 通過 Configuration 菜單中的“Floating point stages” 選項,把加法乘法除法部件的個數(shù)設(shè)置為 2 個,把延遲都設(shè)置為 3

2、 個時鐘周期;3) 用 winMIPS64 運(yùn)行程序。記錄程序執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)、發(fā)生相關(guān)的指令組合,以及程序執(zhí)行的總時鐘周期數(shù);4) 采用指令調(diào)度技術(shù)對程序進(jìn)行指令調(diào)度,消除相關(guān);5) 用 winMIPS64 運(yùn)行調(diào)度后的程序, 觀察程序在流水線中的執(zhí)行情況,記錄程序執(zhí)行的總時鐘周期數(shù);6) 根據(jù)記錄結(jié)果,比較調(diào)度前和調(diào)度后的性能。論述指令調(diào)度對于提高 CPU 性能的意義。用循環(huán)展開、寄存器換名以及指令調(diào)度提高性能1) 用 MIPS 匯編語言編寫代碼文件 *.s,程序中包含一個循環(huán)次數(shù)為 4 的整數(shù)倍的簡單循環(huán);2) 用 winMIPS64 運(yùn)行該程序。記錄執(zhí)行過程中各種相關(guān)發(fā)生的

3、次數(shù)以及程序執(zhí)行的總時鐘周期數(shù);3) 將循環(huán)展開 3 次,將 4 個循環(huán)體組成的代碼代替原來的循環(huán)體,并對程序做相應(yīng)的修改。然后對新的循環(huán)體進(jìn)行寄存器換名和指令調(diào)度;4) 用 winMIPS64 運(yùn)行修改后的程序, 記錄執(zhí)行過程中各種相關(guān)發(fā)生的次數(shù)以及程序執(zhí)行的總時鐘周期數(shù);5) 根據(jù)記錄結(jié)果,比較循環(huán)展開、指令調(diào)度前后的性能。1用指令調(diào)度技術(shù)解決流水線中的結(jié)構(gòu)相關(guān)與數(shù)據(jù)相關(guān)代 碼:divff2,f5,f6divff1,f2,f6實(shí)驗步divff3,f1,f5驟divff0,f4,f7addff14,f0,f6addff15,f5,f7multff20,f4,f6multff21,f5,f72

4、)設(shè)置運(yùn)算部件個數(shù)以及運(yùn)算時鐘周期數(shù)圖 1圖2.Pipeline 圖以下為出現(xiàn)的數(shù)據(jù)相關(guān)圖 3先寫后讀相關(guān)圖 4由于只有兩個除法部件,所以出現(xiàn)了功能部件的沖突。 總的執(zhí)行周期是 38 指令調(diào)度后代碼:將無關(guān)指令放在一起執(zhí)行,相關(guān)指令分開盡量避免數(shù)據(jù)相關(guān)divf f2,f5,f6multf f20,f4,f6multf f21,f5,f7divf f1,f2,f6addf f15,f5,f7divf f3,f1,f5divf f0,f4,f7addf f14,f0,f6圖 5.Pipeline 圖圖 6.Statistics 圖總執(zhí)行時鐘周期為 35 個。6)指令調(diào)度后,數(shù)據(jù)相關(guān)減少了,總時鐘周

5、期數(shù)減少了,效能提高了。調(diào)度前的時鐘周期數(shù)為 38,調(diào)度后的時鐘周期數(shù)減少為 35,加速比 = 38/35= 1.08用循環(huán)展開、寄存器換名以及指令調(diào)度提高性能帶循環(huán)指令代碼:求四個1 相加的和,結(jié)果存在r2 中.text.global mainmain:addi r1,r0,#4addi r2,r0,#0Loop: sgt r3,r1,r0bnez r3,Sub1trap 0 Sub1:addi r2,r2,#1subi r1,r1,#1j Loop結(jié)果:總時鐘周期是 42 個, 5 raw stalls, 循環(huán)了 4 次,結(jié)果 r2 =4圖 7循環(huán)展開:代碼:.text.global ma

6、inmain:addi r1,r0,#4addi r2,r0,#0addi r2,r2,#1subi r1,r1,#1addi r2,r2,#1subi r1,r1,#1addi r2,r2,#1subi r1,r1,#1addi r2,r2,#1subi r1,r1,#1trap 0結(jié)果:總時鐘周期是 15 個,0 raw stalls, 執(zhí)行了 4 次,結(jié)果 r2 = 4圖8原因的對比:是因為 LOOP 指令執(zhí)行完后會有一個 nop 指令的延遲。圖 9多 Cache 一致性:實(shí)驗?zāi)康?、加深對多 CACHE 一致性的理解。2、進(jìn)一步掌握解決多CACHE 一致性的目錄協(xié)議和監(jiān)聽協(xié)議的基本思想

7、。3、掌握在各種情況下,目錄協(xié)議和監(jiān)聽協(xié)議是如何工作的。給出進(jìn)行操作的類型以及 CACHE 塊狀態(tài)的變化情況模擬器使用方法簡介(目錄式)該模擬器模擬 4 個 CPU(A 、B、C、D)訪存的工作過程。每個 CPU 中都有一個 Cache,該 Cache 包含有 4 個塊,其塊地址為 0-3。分布式存儲器中有 32 個塊,其塊地址為 0-31。每個塊狀態(tài)用色塊表示,其中灰色為“無效”狀態(tài),淡青色為“共享”狀態(tài),橘紅色為“獨(dú)占” 。主存中塊的狀態(tài)由其右邊的目錄項的顏色來表示,未緩沖狀態(tài)由黃色來表示,其他兩種狀態(tài)同 Cache 塊。對于每一個 CPU 都可以指定所要進(jìn)行的訪問是讀還是寫(從列表中選)

8、 ,并在輸入框中輸入所要訪問的主存塊號,然后用鼠標(biāo)單擊在其右邊的標(biāo)有“”的按鈕,模擬器就將開始演示該訪問的工作過程。圖 10模擬器簡介(監(jiān)聽協(xié)議)該模擬器模擬 4 個 CPU(A 、B、C、D)訪存的工作過程。每個 CPU 中都有一個 Cache,該 Cache 包含有 4 個塊,其塊地址為 0-3。集中共享存儲器中有 32 個塊,其塊地址為 0-31。每個塊狀態(tài)用色塊表示,其中灰色為“無效”狀態(tài),淡青色為“共享”狀態(tài),橘紅色為“獨(dú)占” 。對于每一個 CPU 都可以指定所要進(jìn)行的訪問是讀還是寫(從列表中選) ,并在輸入框中輸入所要訪問的主存塊號,然后用鼠標(biāo)單擊在其右邊的標(biāo)有“”的按鈕,模擬器就

9、將開始演示該訪問的工作過程。圖 11實(shí)驗步驟(目錄協(xié)議)對于以下訪問序列,寫出目錄協(xié)議所進(jìn)行的操作。所進(jìn)行目錄協(xié)議所進(jìn)行的操作CPUA 1讀 ;2.不命中 ;3 本地 :向宿主結(jié)點(diǎn)讀第 6 塊 發(fā)讀不命中 (A ,6)消息; 4.宿主:把數(shù)據(jù)塊送給本地結(jié)點(diǎn); 5.共享集 CPU B 1 讀;2.不命中;3. 本地 :向宿主讀第 6塊結(jié)點(diǎn)發(fā)讀不命中 (B,6)消息;CPUD 1讀; 2.不命中; 3. 本地 :向宿主讀第 6塊 結(jié)點(diǎn)發(fā)讀不命中 (D,6)消息;CPUB 1寫; 2.命中; 3. 本地 :向宿主結(jié)寫第 6塊 點(diǎn)發(fā)寫命中 (,6)消息,宿主:向遠(yuǎn)程結(jié)點(diǎn) A 發(fā)CPUC1 讀;2.不命

10、中; 3. 本地 :向宿主結(jié)讀第 6塊點(diǎn)發(fā)讀不命中 (C ,6)消息;CPUD1寫; 2.不命中; 3. 本地 :向宿主寫第 20結(jié)點(diǎn)發(fā)寫不命中 (D,20)消息;4宿CPUA1寫; 2.不命中; 3. 本地 :向宿主寫第 20結(jié)點(diǎn)發(fā)寫不命中 (A ,20)消息;4宿CPUD1寫; 2.不命中; 3. 本地 :向宿主寫第 6塊結(jié)點(diǎn)發(fā)寫不命中 (D, 6)消息; 4.宿CPUA1寫; 2.不命中; 3.本地:向被替讀第 12換塊的宿主結(jié)點(diǎn)發(fā)寫回并修改共實(shí)驗步驟(監(jiān)聽協(xié)議)對于以下訪問序列,寫出監(jiān)聽協(xié)議所進(jìn)行的操作。所進(jìn)行是否是否發(fā)的訪問發(fā)生生寫回CPUA 否否CPUB 否否CPUC 否否CPUB 否發(fā)生CPUD 發(fā)生否CPUB 發(fā)生發(fā)生CPUA 否發(fā)生CPUC 發(fā)生發(fā)生寫第 23否否CPUBCPUB替換發(fā)生寫第 5塊監(jiān)聽協(xié)議所進(jìn)行的操作讀;不命中 ;讀不命讀;不命中 ;讀不命讀;不命中 ;讀不命寫,命中 ;作廢 A,C 讀;不命中 ;讀不命寫;不命中 ;寫不命寫;不命中 ;寫不命寫;不命中 ;寫不命中;替換 ;寫回 ;數(shù)讀;不命中 ;讀不命寫;不命中

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論