【正文】
F – 取指( Fetch) D – 解碼( Decode) E – 執(zhí)行( Execute) I – 互鎖( Interlock) M – 存儲(chǔ)器( Memory ) W –寫回( Writeback) M D 29 TM 29 周期 操作 ADD R1, R1, R2 SUB R3, R4, R1 ORR R8, R3, R4 AND R6, R3, R1 EOR R3, R1, R2 1 2 3 4 5 6 7 8 LDR R4, [R7] 9 F D E F D E W F D E W F D E W F D W E F D E W F – 取指( Fetch) D – 解碼( Decode) E – 執(zhí)行( Execute) I – 互鎖( Interlock) M – 存儲(chǔ)器( Memory ) W –寫回( Writeback) I LDR互鎖 ? 本例中,用了 7個(gè)機(jī)器周期執(zhí)行 6條指令, CPI = 機(jī)器周期 。 ? LDR指令之后立即跟一條數(shù)據(jù)操作指令,由于使用了相同的寄存器,將會(huì)導(dǎo)致互鎖 。 W I M 互鎖: 當(dāng)前指令的執(zhí)行可能需要前面指令的執(zhí)行結(jié)果,但這時(shí)前面的指令還沒有執(zhí)行完畢,從而會(huì)導(dǎo)致當(dāng)前指令的執(zhí)行無法獲得合法的操作數(shù),這時(shí)會(huì)引起流水線的等待,這種現(xiàn)象稱為 互鎖 。 30 TM 30 LDM互鎖 (1) ? 本例中,用了 8個(gè)機(jī)器周期執(zhí)行 5條指令, CPI = ? 在 LDM期間,有并行的存儲(chǔ)器訪問和回寫周期 周期 操作 LDMIA R13!, {R0R3} SUB R9, R7, R8 ORR R8, R4, R3 AND R6, R3, R1 1 2 3 4 5 6 7 8 STR R4, [R9] 9 F – 取指( Fetch) D – 解碼( Decode) E – 執(zhí)行( Execute) MW存儲(chǔ)器和回寫同時(shí)執(zhí)行 I – 互鎖( Interlock) M – 存儲(chǔ)器( Memory ) W –寫回( Writeback) F D E W F D E W D E F D E W F M D W E I I I I I I M F MW MW MW 31 TM 31 LDM 互鎖 (2) ? 本例中,用了 9個(gè)機(jī)器周期執(zhí)行 5條指令, CPI = ? 此處 SUB 使用了 R3, 增加了一個(gè)額外的互鎖周期來完成該寄存器數(shù)據(jù)的獲取 ? 這種情況對(duì)任何 LDM 指令,像帶 IA, DB, FD,等,都會(huì)發(fā)生 。 周期 操作 LDMIA R13!, {R0R3} SUB R9, R7, R3 ORR R8, R4, R3 AND R6, R3, R1 1 2 3 4 5 6 7 8 STR R4, [R9] 9 F – 取指( Fetch) D – 解碼( Decode) E – 執(zhí)行( Execute) I – 互鎖( Interlock) M – 存儲(chǔ)器( Memory ) W –寫回( Writeback) F D E W F D E W D E F D E W F M D W E MW MW MW I I I I I I M I I F 32 TM The End 33 TM 演講完畢,謝謝觀看!