跳转至

1691588657

计算机系统 Ⅲ

IS 专业基础

课程学习内容

这是系统贯通系列的第三门课程,也是最后一门课程。主要包括计算机组成、计算机体系结构、操作系统三个部分。课程开始是计算机体系结构的基本内容,首先介绍几个基本的公式,例如摩尔定律、CPU 效率等,接下来介绍静态调度和动态调度流水线,还有一些其他的硬件优化技术介绍等;然后是计组、体系的内存部分,计组是高速缓存的基本内容介绍,体系部分是一次 cache 进一步优化的展示,软件部分覆盖操作系统的内存(虚拟内存部分)、文件系统、I/O 等。2021-2022 学年时间充足,软件部分讲解了部分关于虚拟机的内容,硬件最后讲解了数据级并行的内容。

任课教师

硬件部分由系统贯通课程的“总设计师”常瑞老师教授,软件部分为周亚金老师。同样这门课的助教也很重要。

分数构成

作业(10%)+ 实验(60%)+ 期末考试(30%)

2020 级硬件部分常瑞老师只有一次书面作业且其中只有一个大题两小问,还有一次关于 cache 优化的课堂展示也包含在此 10 分中,题目可以按常瑞老师给的进行,也可以自定主题。软件部分布置了两次书面作业,内容还是比较丰富的。2021 级只有硬件部分有一个乱序调度算法的作业以及 cache pre,软件部分并没有作业。

实验部分仍然是重头,2020 级因时间安排等实验较少,第一个实验是延续系统二的流水线中断实验,接下来是一个流水线 cache 实验,接下来是三个软件实验,包括虚拟内存、用户态以及 page fault fork 的实现等。最后是 X part,可以根据给定的题目(2020 给定两个,一个是软硬件协同实现 MMU 的,另一个是纯软件实现 shell 的,都具有一定难度),也可以自选(20 级有参加龙芯杯和操作系统大赛等),可以根据难度 2-3 人一组,当然也可以 solo。实验部分总体而言软件部分和一般的 OS 班级相差不大,硬件部分一般的体系结构班级会多多周期和动态调度实验,但是一般体系结构班级是代码填空,而我们从单周期开始都是由自己设计的,因此有附加难度。

2021 级实验的设计改进了,硬件实验增加了动态分支预测的实验。X part 也不再是自选课题,而是要完成真正的软硬件协同,即将软件部分实验的 OS 编译出来直接放在 CPU 上跑,所以要完整实现 RV64I 指令集、MMU 以及 S 态中断处理的功能,并且有一系列可选部分作为 bonus(比如附加动态分支预测或者 Cache,实现用户态等)。总体来说相比 20 级难度提升了,但时间也延长了,而且也是一个很好的将三门课软硬件结合起来的收尾实验。以及 X part 不再是正常实验一样验收并提交实验报告,而是最后进行一个 5 分钟的展示(系统三门课的老师和助教都会到场)并提交 PPT,最后由老师来打分(其实实现了对应任务就能给到对应分数)。

期末半开卷,2020 级难度超出系统一、二,因此考试情况较为一般,因此成绩也相对有下降。OS 部分和一般 OS 班级差不多,体系实际上已经简单很多,我们考察的内容只能略超正常体系结构班级的一半,并且最难的动态调度大题来源于唯一的一次作业。因此理论部分还是需要重视,体系部分如果希望了解更多可以看姜晓红老师的录播回放,也推荐阅读一部分教材。

参考书目

  • 《计算机组成与设计:硬件 / 软件接口》Computer Organization and Design: The Hardware/Software Interface, RISC-V Edition
    主要是 cache 部分的基础按照此教材讲解。这本书较为啰嗦,但是如果一些问题希望了解细节还是需要参考。

  • 《计算机体系结构:量化研究方法》Computer Architecture A Quantitative Approach (6th Edition)
    体系结构的经典之作,作者与计组一致,是两位图灵奖得主 John L. Hennessy 与 David A. Patterson,作品风格仍然有些啰嗦且部分内容逻辑不清晰,但部分内容仍然值得参考,特别是动态调度部分,基本的思路等教材有完整的阐述。当然对体系结构有兴趣也可以看后面的 DLP、TLP、GPU 等内容。

  • Operating System Concepts, 10th Edition
    软件部分的教材,浙大 OS 都基于本教材(译者郑扣根老师是浙江大学教授,现在主要讲授计算机网络与研究生计算理论课程),20 级作业来源于此。

  • Operating Systems: Three Easy Pieces
    即 OSTEP,老师和各学长都强烈推荐的一本操作系统书,是完全免费的,网站是 https://pages.cs.wisc.edu/~remzi/OSTEP/

  • 《深入理解计算机系统》Computer System: A Programmer’s Perspective
    这本书的介绍链接的部分较为细致,可以参考了解,甚至可以对软件安全有一定理解上的帮助。

参考资料