我必須創建一個執行以下MIPS代碼的管線圖。這是一個5階段管道。 mul
和div
指令都使用4條執行指令。報價爲MUL指令分配試圖瞭解創建MIPS管線圖
這意味着乘法指令通過流水線運行過程如下:
F-D-X0-X1-X2-X3-M-W
,並且一次也許在飛行多達四個乘法指令。所有其他指令類型在執行階段被阻止,而任何乘法階段正在使用。
和DIV
這意味着除法指令通過流水線運行過程如下:
F-D-X0-X0-X0-X0-M-W
。所有其他指令都在執行階段被阻止。
這是MIPS代碼。
xor $r0, $r0, $r0
addiu $r1, $r0, 10
j L1
loop:
lw $r3, 0($r2)
mul $r4, $r3, $r3
mul $r3, $r3, $r1
addiu $r0, $r0, 1
div $r3, $r4, $r3
sw $r3, 0($r2)
addiu $r2, $r2, 4
L1:
bne $r0, $r1, -8
全問題我來回答此是:
問:通過循環的第一次迭代繪製表示MIPS代碼的執行的流水線圖(表),沒有繞過。 假設數據危害和結構危害 只使用拖延解決。假定處理器假定分支不被採用,直到它們被解決。 整個計劃的CPI是多少?
這裏是我的了:
我最大的障礙來自於試圖理解做什麼,當它來到跳轉指令。正如你所看到的,我只是像往常一樣去做生意,但我知道這很可能是完全錯誤的。我相當有信心,我正確處理了mul
和div
之後的說明,這只是j L1
指令,我對此沒有信心,因爲我沒有示例可以參考。雖然我假設我只是把總週期除以指令的數量,但CPI是一個後來的想法?所以在這種情況下,它會是(32 cycles)/(11 instructions)
那麼CPI = 2.91
?
謝謝你的時間。
我會回答這個問題,因爲我認爲這個問題很好。但我認爲你的MIPS代碼是錯誤的。它跳轉到「L1」,然後在退回「-8」的'bne'線無限循環。 –
@Konrad這只是給出的例子,代碼直接從作業中複製。瞭解它的第一次迭代就夠了。除非另有說明,否則如果存在任何循環,我們所有的分配一直基於第一次迭代。感謝您的幫助。 – user5496677
沒錯。但第一次迭代顯然不符合你的想法。 'mul'指令永遠不會運行。 –