1
(1)
关键路径:
PC -> InstMem -> decoder -> (rf read = 0) -> MUX -> alu -> RDMUX -> rf_write
time=30+250+50+25+200+25+20=600ps
(2)
PC -> InstMem -> decoder -> sext(imm) -> MUX -> alu -> DataMem -> RDMUX -> rf_write
time =30+250+50+50+25+200+250+25+20=900ps
(3)
PC -> InstMem -> decoder -> sext(imm) -> MUX -> alu -> DataMem
time =30+250+50+50+25+200+250=855
(4)
PC -> InstMem -> decoder -> (rf read = 0) -> MUX -> alu -> PCMUX -> PC
time =30+250+50+25+200+25+20=600ps
(5)
PC -> InstMem -> decoder -> sext(imm) -> MUX -> alu -> RDMUX -> rf_write
time =30+250+50+50+25+200+25+20=650
(6)
可见 load 指令延迟最大,为 900ps.
故周期为 900ps.
2
- RAW
-
add x1, x2, x3 sub x4, x1, x5 - 读取后再传递给 ALU 需要经过 Data Mem 和 ALU 两大高延迟组件,会显著降低运行频率,故需要插入气泡。
3
(1) init = 0; TFTFTFTFTFTFTFTFTFTFTFTFTFTFTF\ldots
(2)
int x10=12;
while(x10!=0){//12F1T
int x11=12;
while(x11!=0){//(12F1T)*12
//x12+=1;
x11-=1;
}//12T*12
x10-=1;
}//12T
错误数量:1+12+2+2=17
正确率 0.948
初值为1 错误数量:1+12+1+1=15
2: 2+13+0+0=15
3: 3+14+0+0=17
故应该设置为 1 或 2
发表回复