CC408 · 全科导学

计算机组成原理导学:一行程序,怎样被机器执行?

从一段程序出发,看懂数据、指令、存储与 CPU。

当你写下 a = b + c,计算机并不是“直接理解了这句话”。数值需要用位表示,程序需要转换为机器能够执行的指令,CPU 需要从存储系统取得指令和数据,再通过运算部件、寄存器与控制逻辑完成操作。组成原理研究的就是这些部件怎样工作、怎样连接,以及整体性能受到什么限制。

这门课的核心不是认全硬件名词,而是形成整机视角:**数据怎样表示,指令怎样描述操作,CPU 怎样执行,数据怎样在不同存储层次之间流动。**在 408 中,你需要把这种理解用于计算和分析,甚至联系 C 语言程序讨论软硬件协作。

本科目分值为 45 分,占 30%;常见题型是 11 道选择题、2 道综合应用题。不能把某一类 Cache、流水线或指令题当作未来试卷的固定题目。

学之前,先准备什么?

建议熟悉二进制、十六进制、位运算、数量级与单位换算,能读懂简单 C 程序,区分值、地址、变量类型。不了解门电路时,可以先补布尔运算和最基本的组合逻辑,不必把整门数字电路学完才开始。

特别需要建立“写前提”的习惯:机器字长是多少?按字节还是按字编址?题中的容量单位怎样约定?地址是虚拟地址还是物理地址?带宽说的是总线传输能力,还是设备实际吞吐?没有这些前提,公式即使背对,也可能代错。

知识地图:围绕指令与数据流动组织

大纲模块内容骨架学完要能完成的任务本站章节
计算机系统概述系统层次、存储程序、程序转换与执行;主频、CPI、执行时间等画出系统层次,比较性能指标,说明一个指标为什么不能代表全部性能计算机系统概述
数据的表示和运算数制与编码、整数、ALU、补码与标志位、乘除、IEEE 754 浮点在给定位宽下计算数值范围、结果和标志;区分数值与位模式数据的表示和运算
存储器层次结构SRAM、DRAM、Flash、主存、外存、Cache、虚拟存储器、TLB划分地址字段,追踪命中与缺失,计算题目模型中的访问代价存储器层次结构
指令系统指令格式、寻址、对齐与大小端、CISC/RISC、C 与机器级表示求有效地址;理解分支、循环、调用与指令的关系指令系统
中央处理器指令执行、数据通路、控制器、异常中断、流水线与多处理器概念跟踪一条指令的数据流;画流水线时序并处理题设冒险中央处理器
总线和输入输出系统总线组成与事务;接口、端口;查询、中断、DMA区分参与部件与传输过程,分析 CPU 参与程度和性能开销总线和输入输出系统

考试大纲将“总线和输入输出系统”合为一个一级模块,知识点目录分成两章;本页只做对应说明。

怎样学:把每一道题变成一张机器运行图

建议采用“画系统 → 标条件 → 写关系 → 代数值 → 检查单位”的顺序。

学习存储时,先画寄存器、Cache、主存和外存分别在哪里,再把访问路径放到图上。学习指令时,先确定操作数在哪里、地址怎样得到,再看执行中哪些部件工作。学习流水线时,先画时空图,说明题设是否允许转发、何时判定分支和怎样处理冲突。

计算题不要只留下一个结果。至少写出使用关系的含义,例如:CPU 时间与指令条数、平均 CPI、时钟周期之间如何联系;Cache 平均访问时间的公式中,缺失代价是否已经包含首次查询耗时。采用哪个模型,取决于题目约定。

强化时可阅读 CS:APP 的数据表示、机器级程序、存储层次、异常控制流等相关章节,理解“程序与系统”的联系。

与操作系统最容易混淆的连接点

**Cache 与虚拟内存关注的映射不同。**前者涉及主存数据在高速缓冲中的存放,后者涉及进程地址空间及地址转换。题目有时把两者放在一起,需要逐层画出地址与访问过程,而不是看到“存储”就套同一张表。

**TLB 未命中不等于缺页。**TLB 是地址转换信息的缓存;其中没有相应信息,还可能通过页表找到已驻留主存的页面。是否缺页要继续看页表等相关条件。

**中断、异常与系统调用要联系执行过程。**组成原理侧重硬件检测、响应与控制;操作系统侧重处理程序、资源管理和上下文。两门课从不同层次解释同一台机器。

分阶段训练

基础阶段不要用超大计算掩盖概念。用较小字长和简单地址先算清楚,再扩展到题目参数;每章保留一张概念图和一张单位表。

强化阶段把内容按“数据表示—指令—执行—访存—I/O”串起来,做跨章节分析。错题分成位宽错误、地址错误、时间单位错误、性能模型错误和机制理解错误,比按题号抄解析更有用。

真题阶段训练完整书面步骤。遇到不会的长题,先写已知条件、画结构并完成可独立处理的小问;不要因一个中间结果不确定就跳过整题,也不要把猜测写成没有条件的结论。

入门自测与答案

**问题 1:**采用 32 位字节编址地址、块大小 64 字节、直接映射 Cache 有 256 行时,块内偏移和行索引各需要多少位?

参考思路:偏移 6 位,行索引 8 位;在此题给定模型下,标记为剩余 18 位。先说明编址单位,再取以 2 为底的位数。

**问题 2:**两台计算机中,主频更高的一台是否一定执行某个程序更快?

参考思路:不一定,还要考虑程序实际执行的指令数量、平均 CPI 等因素;比较应针对同一任务和可比条件。

**问题 3:**发生 TLB 未命中,是否必须从磁盘把页面读入内存?

参考思路:不一定。需要继续查看页面是否已经在内存中,不能把地址转换缓存未命中直接等同于缺页。

完成本科目的最低验收

建议至少能够:解释一条指令的取指与执行;准确进行位宽、单位和地址计算;区分 Cache、TLB、页表和页面;分析指令与寻址;画出基本流水线时序;比较查询、中断、DMA 的工作过程;用图和公式说明结果来源。

继续学习:组成原理知识点 · 操作系统导学 · 章节练习

参考资料

《深入理解计算机系统》(Randal E. Bryant、David R. O'Hallaron)作者网站,可选读数据表示、机器级程序、存储层次与异常控制流相关章节。