1705847815
计算机体系结构 ¶
课程学习内容 ¶
这门课主要包括如下内容:
- 体系结构的发展历史和量化等常识内容
- 各种 cache 策略 + 各种分支预测策略
- 多发射 CPU + 多核 CPU + 线程调度方法
- 乱序的几种策略,如纯 stall、scoreboard、register renaming、tomasulo、reorder buffer 等
- 内存一致性协议
- SIMD 体系结构 + GPU 简单介绍等
先修要求 ¶
- 计算机组成
直接承接计组的内容,基础部分的内容就是计组的高级部分,如果计组学得很好,这门课的难度将大大降低。
实验要求 ¶
- lab1(6%):forwarding + predict not taken 的流水线
- lab2(4%):带异常处理的流水线
- lab3(3%):二路组关联 + alloc + write back 策略的 cache
- lab4(4%):cache 加入流水线
- lab5(7% + 2 人组队):简单乱序流水线
- lab6(8% + 2 人组队)
- scoreboard 乱序流水线
- register renaming 乱序流水线(bonus)
- tomasulo 乱序流水线(bonus)
- 有兴趣可以做分支预测和 reorder buffer(没有 bonus)
- lab6 的 bonus 给的好像挺多,好像有 30%
- lab1(8%):Forward+Pipeline
- lab2(8%):Interrupt Exception
- lab3(8%):Branch Prediction
- lab4(10%):Cache Design
- lab5(14%):Out-of-Order Execution
- lab6:Tomasulo(bonus)
任课教师 ¶
姜老师的专业知识能力和讲课水平还是不错的,重要的知识点能讲的比较清楚。但是因为这门课她一年只上一次,部分地方(比如 GPU)会出现 PPT 不熟悉开始现场回忆或者口胡的情况,这个时候如果遇到不懂的内容可以下课去问她,她回忆起来了就可以讲的很清楚。不是很会使用学在浙大的小测功能,容易花 20min 研究小测怎么打开。如果平时分太高,可能会调分数比例压分,但是基本影响不大;期末考批卷比较捞,能不扣分就不扣分,但是批完以后是不会再捞人的。期末成绩会提前几天公示,可以及时的去争取分数。
需要注意的是,姜老师对验收比较严格,每个实验只有两次验收机会,第一次不通过会扣除 10% 的分数。
常老师的讲课水平不错,思路清晰。老师的讲课会着重于讲解知识的背后逻辑,而对于 PPT 上陈列的点会较快地带过。同时老师不会提前发 PPT,因此如果不习惯这种讲课风格的可能会比较难受。常老师人很好,体恤学生,教书十多年没有点过名(但仍然建议到课)。
何老师讲课较快,PPT 基于姜老师的那版,自己增加了一些内容。经常提前一节课下课。时常让助教讲课,助教讲的也还行。21 级作业和实验给分略严格,验收困难程度取决于助教。
何老师的验收也只有两次机会,且第一次不过会扣分。但从 21 级后续同学情况来看,这条标准较为宽松,不会严格执行。
21 级新开体系结构的老师,讲课较枯燥,分数组成和 PPT 完全沿袭姜老师的体系。21 级情况是实验可以不用验收,也没有小测,且最后给分相当慷慨。
课程教材 ¶
《计算机体系结构量化研究方法》第六版
其中分支预测的部分只有课上 PPT 才有。可以买第五版的书,但是现在普遍用 RISC-V 指令集了,第五版还是 MIPS,PPT 没有更新用的也还是 MIPS。
这本书是体系结构领域非常经典的书籍,值得一读,但是每章后面的练习题难以恭维。
分数构成 ¶
所有老师的期末考试占比都是 40%,下面仅列举老师的平时分数构成。
20、21 级的各部分比例如下
- homework 4 次(16%)
- quiz 2 次(12%)
- lab 6 次(32%)
21 级的各部分比例如下
- homework 2 次(8%)
- 出勤 + 展示(三人小组,主题是 cache 性能的优化)(6%)
- lab(48%)
21 级的各部分比例如下
- homework(20%)
- lab(40%)
- 何老师的前 5 个 lab 可能有附带的 bonus,要求是做一些额外的功能。
21 级的各部分比例如下
- lab(60%)
- bonus: quiz, question, discussion(<=10%)
学习建议 ¶
体系结构的任务还是比较轻的,课程内容虽然设计的量比较大,包括 Cache、分支预测、SIMD、多发射、乱序、多核等一系列内容,但是都不是非常深入,大多数重在了解,其中乱序的算法、内存一致性协议达到了定量的程度,其他主要还是定性的程度。lab 比计组的简单很多,不同于计组的纯手搓,体系的 lab 都给了代码,只需要做适当的填空即可,很多时候一个下午就可以了,甚至 lab1、lab3、lab4 其实计组很多人都做过,可以直接用计组的代码来验收
体系结构这门课为人诟病的一点在于,不同老师讲的内容出入可能会非常大,而且由于期末考试是不同老师出题之后组卷,有可能出现考没有讲过的内容。建议复习时参考多个老师的 PPT、复习课,以及 98 的回忆卷。Cache、乱序(Scoreboard、Tomasulo)、Cache 一致性(MESI、Directory)这部分内容相当重要,时常会在大题里出现。