前言
这是新开的课程,故历年考题有限。2024年期末考试的情况像大默写。期末试卷回忆在这里:
计算机体系结构-2024期末考试-CSDN博客
不知道结果怎么样,希望别太对不起付出吧。
资源推荐
本着不重复造轮子的原则,这里推荐学长以及同年级的同学写的优质博客。我不再重发作业以及复习。
所有复习相关的资源都放在这里:
A橙大佬总结的复习材料,复习必看:
A橙:笔记
A橙:期末复习
同年级大佬写的,关于两次作业(重要)的完整总结,很精品,复习必看。
蟑螂恶霸:2023期中试题
蟑螂恶霸:2024作业2
复习提纲
【注意】每年的侧重内容不尽相同,故不宜照搬,应该结合实际情况具体决定。
补充
自己在复习的时候,另外总结了一些要点
附录A
1.9
附录C
附录B
Scoreboard 与 Tomasulo 算法
Scoreboard总结(课堂跟老师走一遍,记录的过程)
(我这里可能有点乱,因为是课上记录的,我大概简单说一下要关注的点)
这两个算法主要关注的两点:什么时候可以推进到下一步(条件),以及推进到下一步需要做什么(操作)。下面分别总结。
条件:
- 发射:①没有结构冲突(即部件够用)②没有写后写冲突(即目的寄存器不能被占用)
- 发射->读取:Rj==Rk==Yes
- 读取->执行:无条件,紧接着就可以做
- 执行->写回:没有读后写冲突(检查部件表中的所有指令,没有正在读取我要写的寄存器的部件)
操作:
- 发射:①写入部件表,②检查寄存器表,若我的源寄存器在寄存器表上有标记占用(即我要读取的寄存器正被别的指令A占用写回,该指令A是使用的部件B),标记Qj/Qk为那个部件B,同时Rj/Rk置为No,否则置为Yes,③更新寄存器表,我要写回的寄存器标记为我这条指令占用
- 读取:Rj==Rk的Yes改为√(或者改为No,这个看你学的方法)
- 执行:不做操作
- 写回:清空(擦除部件表上的我指令这行,并把其它行Qj或Qk上有我的部件标记的占用解除,还要把值更新回去)
总体:顺序发射(单周期只能发射一条指令),乱序执行,乱序完成。
Tomasulo总结
例题:
完整每一步的流程可以看HNU_CA_作业5-总复习作业 2-CSDN博客