誰有張晨曦《計算機系統結構》第四章習題答案?請發一份

時間 2021-07-03 15:02:17

1樓:匿名使用者

4.3 根據需要下面的迴圈並進行指令排程,直到沒有任何延遲。指令的延遲如表4.4。

loop: l.d f0,0(r1)

mul.d f0,f0,f2

l.d f4,0(r2)

add.d f0,f0,f4

s.d f0,0(r2)

dsubi r1,r1,#8

dsubi r2,r2,#8

bnez r1,loop

解:將迴圈兩次,進行指令排程,即可以消除延遲,**如下:

loop: l.d f0,0(r1)

l.d f10,-8(r1)

mul.d f0,f0,f2

mul.d f10,f10,f2

l.d f4,0(r2)

l.d f14,-8(r2)

add.d f0,f0,f4

add.d f10,f10,f14

dsubi r1,r1,16

s.d 0(r2),f0

dsubi r2,r2,16

bnez r1,loop

s.d 8(r2),f10

4.4 假設有一條長流水線,僅僅對條件轉移指令使用分支目標緩衝。假設分支**錯誤的開銷為4個時鐘週期,緩衝不命中的開銷為3個時鐘週期。

假設:命中率為90%,**精度為90%,分支頻率為15%,沒有分支的基本cpi為1。

(1) 求程式執行的cpi。

(2) 相對於採用固定的2個時鐘週期延遲的分支處理,哪種方法程式執行速度更快?

解:(1)程式執行的cpi = 沒有分支的基本cpi(1) + 分支帶來的額外開銷

分支帶來的額外開銷是指在分支指令中,緩衝命中但**錯誤帶來的開銷與緩衝沒有命中帶來的開銷之和。

分支帶來的額外開銷= 15% * (90%命中×10%**錯誤×4 + 10%沒命中×3)= 0.099

所以,程式執行的cpi = 1 + 0.099 = 1.099

(2)採用固定的2 個時鐘週期延遲的分支處理cpi = 1 + 15%×2 = 1.3

由(1)(2)可知分支目標緩衝方法執行速度快。

4.5 假設分支目標緩衝的命中率為90%,程式中無條件轉移指令的比例為5%,沒有無條件轉移指令的程式cpi值為1。假設分支目標緩衝中包含分支目標指令,允許無條件轉移指令進入分支目標緩衝,則程式的cpi值為多少?

解:設每條無條件轉移指令的延遲為x,則有:

1+5%×x=1.1

x=2當分支目標緩衝命中時,無條件轉移指令的延遲為0。

所以 程式的cpi = 1 + 2 × 5% ×(1 -90%) =1.01

4.6 下面的一段mips彙編程式是計算高斯消去法中的關鍵一步,用於完成下面公式的計算:

y = a  x + y

其浮點指令延遲如表4.3所示,整數指令均為1個時鐘週期完成,浮點和整數部件均採用流水。整數操作之間以及與其它所有浮點操作之間的延遲為0,轉移指令的延遲為0。

x中的最後一個元素存放在儲存器中的地址為done。

foo: l.d f2,0(r1)

mut.d f4,f2,f0

l.d f6,0(r2)

add.d f6,f4,f6

s.d f6,0[r2]

daddiu r1,r1,#8

daddiu r2,r2,#8

dsubiu r3,r1,#done

bnez r3, foo

(1) 對於標準的mips單流水線,上述迴圈計算一個y值需要多少時間?其中有多少空轉週期?

(2) 對於標準的mips單流水線,將上述迴圈順序4次,不進行任何指令排程,計算一個y值平均需要多少時間?加速比是多少?其加速是如何獲得的?

(3) 對於標準的mips單流水線,將上述迴圈順序4次,優化和排程指令,使迴圈處理時間達到最優,計算一個y值平均需要多少時間?加速比是多少?

(1) 對於採用如圖4.8前瞻執行機制的mips處理器(只有一個整數部件)。當迴圈第二次執行到

bnez r3,foo

時,寫出前面所有指令的狀態,包括指令使用的保留站、指令起始節拍、執行節拍和寫結果節拍,並寫出處理器當前的狀態。

(2) 對於2路超標量的mips流水線,設有兩個指令流出部件,可以流出任意組合的指令,系統中的功能部件數量不受限制。將上述迴圈4次,優化和排程指令,使迴圈處理時間達到最優。計算一個y值平均需要多少時間?

加速比是多少?

(3) 對於如圖4.13結構的超長指令字mips處理器,將上述迴圈4次,優化和排程指令,使迴圈處理時間達到最優。計算一個y值平均需要多少時間?加速比是多少?

解:(1)

l.d f2, 0(r1) 1

stall

mut.d f4, f2, f0 2

l.d f6, 0(r2) 3

stall

stall

add.d f6, f4, f6 4

stall

stall

s.d f6, 0[r2] 5

daddiu r1, r1, #8 6

daddiu r2, r2, #8 7

dsubiu r3, r1, #done 8

bnez r3, foo 9

所以,共有14 個時鐘週期,其中有5 個空轉週期。

(2)迴圈順序4 次,不進行任何指令排程,則指令1~5 及其間的stall 都是必要的,只是指令6~9 只需執行一次,因此,共有 10 × 4 + 4 = 44 個時鐘週期,計算出4 個y 值,所以計算一個y 值需要11 個時鐘週期,加速比為:14/11 = 1.27 。

加速主要是來自減少控制開銷,即減少對r1、r2 的整數操作以及比較、分支指令而來的。

(3)迴圈順序4 次,優化和排程指令,如下:

l.d f2, 0(r1)

l.d f8, 8(r1)

l.d f14, 16(r1)

l.d f20, 24(r1)

mut.d f4, f2, f0

mut.d f10, f8, f0

mut.d f16, f14, f0

mut.d f22, f20, f0

l.d f6, 0(r2)

l.d f12, 8(r2)

l.d f18, 16(r2)

l.d f24, 24(r2)

add.d f6, f4, f6

add.d f12, f10, f12

add.d f18, f16, f18

add.d f24, f22, f24

s.d f6, 0[r2]

s.d f12, 8[r2]

s.d f18, 16[r2]

s.d f24, 24[r2]

daddiu r1, r1, #32

daddiu r2, r2, #32

dsubiu r3, r1, #done

bnez r3, foo

共用了24 個時鐘週期,則計算一個y 值平均需要 24/4 = 6 個時鐘週期,

加速比:14/6 = 2.33

(4)指令 指令執行時鐘

流出 執行 寫結果 確認

l.d f2, 0(r1) 1 2 3 4

mul.d f4, f2, f0 2 4 5 6

l.d f6, 0(r2) 3 4 6 7

add.d f6, f4, f6 4 8 9 10

s.d f6, 0(r2) 5 11 12 13

daddiu r1, r1, #8 6 7 8

daddiu r2, r2, #8 7 8 9

dsubiu r3,r1,#done 8 9 10

bnez r3, foo 9 10

l.d f2, 0(r1) 10 11 13 14

mul.d f4, f2, f0 11 13 14 15

l.d f6, 0(r2) 12 13 15 16

add.d f6, f4, f6 13 17 18 19

s.d f6, 0(r2) 14 20 21 22

daddiu r1, r1, #8 15 16 17

daddiu r2, r2, #8 16 17 18

dsubiu r3,r1,#done 17 18 19

bnez r3, foo 18

名稱 保留站

busy op vj vk qj qk dest a

add1 yes add.d regs[f4] regs[f6 ]

add2 no

add3 no

mult1 yes

mult2 no

項號 rob

busy 指令 狀態 目的 value

1 yes add.d f6, f4, f6 執行 f6 regs[f4]+regs[f6]

2 yes s.d f6, 0(r2) 流出 mem[0+regs[r2]] #2

欄位 浮點暫存器狀態

f0 f2 f4 f6 f8 f10 … f30

rob項編號 1

busy yes …

(5)整數指令 浮點指令 時鐘週期數

l.d f2, 0(r1) 1

l.d f8, 8(r1) 2

l.d f14, 16(r1) mut.d f4, f2, f0 3

l.d f20, 24(r1) mut.d f10, f8, f0 4

l.d f6, 0(r2) mut.d f16, f14, f0 5

l.d f12, 8(r2) mut.d f22, f20, f0 6

l.d f18, 16(r2) add.d f6, f4, f6 7

l.d f24, 24(r2) add.d f12, f10, f12 8

daddiu r1, r1, #32 add.d f18, f16, f18 9

s.d f6, 0(r2) add.d f24, f22, f24 10

s.d f12, 8(r2) 11

s.d f18,16(r2) 12

s.d f24, 24(r2) 13

daddiu r2, r2, #32 14

dsubiu r3, r1, #done 15

bnez r3, foo 16

計算一個y值需要 16/4 = 4 個時鐘週期,加速比 = 14/4 = 3.5

(6)訪存1 訪存2 浮點指令1 浮點指令2 整數指令 時鐘

週期l.df2, 0(r1) l.d f8, 8(r1) 1

l.df14, 16(r1) l.df20, 24(r1)

l.df6, 0(r2) l.df12, 8(r2) mut.df4, f2, f0 mut.df10, f8, f0 3

l.df18, 16(r2) l.df24, 24(r2) mut.df16, f14, f0 mut.df22, f20, f0 4

add.df6, f4, f6 add.df12, f10, f12 5

add.df18, f16, f18 add.df24, f22, f24 daddiu r1, r1, #32 6

daddiu r2, r2, #32 7

dsubiur3, r1, #done 8

bnez r3, foo 9

s.df6, -32(r2) s.df12, -24(r2) 10

s.df18,-16(r2) s.df24, -8(r2) 11

計算一個y值需要 11/4 個時鐘週期,加速比 = 14/(11/4) = 56/11

計算機系統結構 計算機軟體與理論 計算機應用技術的不同

系統結構一般安排大三才學的,可見它的分量。其餘兩門其實可以考慮安排在大一下半年進行學習。都是抽象的東西,很難三言兩語說清楚,即使在你把它們全部都學完以後。很多理論的東西,它們相互參插,相互聯絡,互為支撐。還是那句老話,只可意會,不可言全。希望對你有一定的幫助吧 計算機系統結構 計算機軟體與理論 計算...

怎麼安裝計算機系統,怎麼安裝計算機系統

設定光碟機啟動,然後從啟,光碟放在光碟機裡。如果裝98就要在dos裡先進入c盤,建立windos資料夾,在進光碟把檔案copy過去,然後在安裝,後面步驟和xp什麼的一樣,安裝時候根據提示選擇安裝,然後輸入序列號,買盤的時候帶的,然後一直到裝完從起就好了 品牌電腦自帶的都有系統恢復盤。設定光碟機啟動。...

計算機系統

大約玩的起,fps 進入正題,如何提高自己在遊戲中的fps呢 nb配置的電腦除外 下面幾個簡單有效的方法大家可以試試,能有效的提高自己遊戲中的fps 第一 將桌面的背景 桌布 取消掉,因為他會很大程度的影響影象重新整理率。第二 將電腦的解析度適當調小些,具體電腦顯示器具體分析,配置比較低的電腦甚至可...