跳转至

1705847815

计算机体系结构

CS 专业必修

课程学习内容

这门课主要包括如下内容:

  • 体系结构的发展历史和量化等常识内容
  • 各种 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 指令集了,第五版还是 MIPSPPT 没有更新用的也还是 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 其实计组很多人都做过,可以直接用计组的代码来验收(姜老师班)如果要做 bonus 那需要自己写代码,没有框架可以用,所以这门课任务量还是比较少的,不会太占时间。期末考可以带 1 张手写 A4 纸,拿来抄各种策略、协议和算法还是不错的。

体系结构这门课为人诟病的一点在于,不同老师讲的内容出入可能会非常大,而且由于期末考试是不同老师出题之后组卷,有可能出现考没有讲过的内容。建议复习时参考多个老师的 PPT、复习课,以及 98 的回忆卷。Cache、乱序(Scoreboard、Tomasulo)、Cache 一致性(MESI、Directory)这部分内容相当重要,时常会在大题里出现。