计算机组成原理

这门课的讲法我调整过几次,最后定下来的是一句话:从程序员视角看硬件。每个硬件概念都落回同一个问题,你写的 C 代码、你遇到的程序行为,在硬件上是怎么发生的。为什么 0.1 + 0.2 不等于 0.3(第 2 章),为什么按行遍历二维数组比按列快好几倍(第 7 章),为什么同一个循环处理有序数组能快数倍(第 6 章)。这些问题在语言层查不到答案,得往下走一层。

十讲按「数字怎么表示 → 指令怎么长 → CPU 怎么执行 → 数据放哪 → 程序怎么跑起来」推进:

先修:会写基本的 C(指针与栈帧在 C 指针课程里展开,本课第 10 章会接上)。缺页与页置换想看 OS 侧的分工,读操作系统的内存管理章节。教材配合:CS:APP 第 1~5 章,《编码:隐匿在计算机软硬件背后的语言》。