cod-hw2
郭高旭 ggx21@mails.tsinghua.edu.cn 2021010803
-
C
-
A
-
是的,在相同的cpu频率下,CPI 越低,每条指令的平均执行时间就越短,吞吐量较高,cpu响应速度也越快,整体执行效率越高。但是,单纯追求低 CPI 并不总是最终目标,因为在一些情况下,需要权衡执行效率、能效、成本以及时钟频率等因素。
-
不一定,如果后面的指令需要数据但此时数据还没有产生,那么数据旁路也不能解决这种数据冲突。比如load类指令在mem段将数据存入寄存器,如果下一条指令id段要读取这个寄存器,那么数据旁路不能解决。
-
不支持。 对于RISC-V架构而言,进入异常之后,mstatus寄存器中的MIE域将会被硬件自动更新成0(意味着中断全局被关闭,从而无法响应新的中断)
-
题
- FEC7 96E3
- 当前pc的前4096到后4094(偶数,如果要求合法,则应该对齐为四的倍数)
- 89
- 如果使用数据旁路,12 lw 和 14.中的a3否则会发生数据冲突的行号有(1.,2.)(11.,12.,14.)(14.,15.)(16.17)
-
题
-
DM@MEM/WB->DM
-
交换最后两行
-
a) IF: nop
ID: sw t1, (a0)
EXE: bne t3, x0, count
MEM: add t1, t1, t0
WB: add t3, t3, -1 -
DM@MEM/WB->DM
-
方案一不满足精确异常的定义。精确异常要求在产生异常时,不会对指令流水线中的指令状态造成任何影响,即异常应该在异常指令执行之前进行处理。而方案一中,异常信号被存入ID/EXE流水寄存器,会在下一个周期由EXE段的异常处理模块处理,这就导致了异常信号的处理不是在异常指令执行之前完成的。
-
RV.X // 引发异常的指令 ADDI a0,1 // 普通指令 SUBI a0,1 // 普通指令
-
这里第一条指令
RV.X
是会引发异常的指令。在方案一中,异常信号会被存入ID/EXE流水寄存器,并在下一个周期被EXE段的异常处理模块处理。但问题在于,由于流水线中已经有了 ADD 和 SUB 两条指令,它们在当前周期内会继续执行。
-