这页补大学计算机系统主干里最靠近硬件的一组课:数字逻辑、计算机组成原理、计算机体系结构和基础硬件接口。它回答课程视角的问题:一段程序最终怎样落到位、门电路、寄存器、指令、流水线、Cache、内存层级和多核机器上,为什么同样的算法在真实硬件上会表现出完全不同的速度、功耗和并发边界。
组成原理不是“背 CPU 五大部件”,体系结构也不是“知道 Cache 这个名词”。它们共同解释程序和真实机器之间的转换层。
| 课程 / 模块 | 主问题 | 关键对象 | 继续下钻 |
|---|---|---|---|
| 数字逻辑与电路基础 | 计算怎样由物理开关和逻辑门承载 | 布尔代数、门电路、组合逻辑、触发器、时钟、寄存器 | 数字电路 / 硬件物理底座 |
| 机器表示 | 数据和指令怎样变成位模式 | 补码、浮点数、字符编码、地址、对齐、大小端、指令编码 | 计算机系统底座 |
| 计算机组成原理 | 机器怎样执行一条指令 | ALU、寄存器堆、数据通路、控制器、存储器、总线、异常 | 计算机体系结构底座 |
| 计算机体系结构 | 真实 CPU 为什么快慢不同 | 流水线、冒险、分支预测、Cache、TLB、内存层级、预取 | 体系结构机制 |
| 并行硬件与多核基础 | 多核机器怎样共享计算和内存 | 多核、缓存一致性、内存模型、原子操作、NUMA、SIMD、GPU 入门 | 性能工程专题 |
| 硬件接口与系统连接 | CPU 怎样连接内存、设备和操作系统 | 中断、DMA、MMIO、总线、PCIe、设备寄存器、性能计数器 | 操作系统课群 |
先理解二进制、补码、浮点、布尔逻辑、组合电路和时序电路。这里不是为了变成硬件工程师,而是建立“计算有物理载体”的直觉。
把 ISA、寄存器、ALU、数据通路、控制器和存储器连起来。能画出取指、译码、执行、访存、写回的路径,组成原理就有骨架了。
流水线不是为了背阶段名,Cache 也不是一个“更快的内存”。它们真正解释的是局部性、冒险、预测、等待、吞吐和延迟之间的取舍。
虚拟内存、系统调用、线程调度、锁、GC、网络 IO 和数据库索引都会被 CPU、Cache、TLB、内存带宽和设备接口约束。
| 现象 | 优先回到哪门课 | 为什么 | 不要只看 |
|---|---|---|---|
| 两个整数相加结果溢出,浮点结果不稳定 | 机器表示 | 补码、舍入、精度、NaN、无穷和类型转换决定了很多“看似数学”的错误 | 只看语言语法 |
| 同样 O(n) 的代码速度差很多 | 体系结构 + 数据结构 | 连续内存、对象布局、Cache locality、分支预测和预取会放大差距 | 只比较复杂度 |
| 多线程加了锁以后吞吐下降 | 多核与内存模型 | 锁竞争、原子操作、缓存一致性、伪共享和内存屏障都会让并行变慢 | 继续加线程数 |
| 服务 CPU 利用率不低,但 p99 抖动很大 | 体系结构 + OS | 调度、Cache miss、TLB miss、NUMA、GC safepoint 和 IO 中断可能叠在一起 | 只看平均耗时 |
| 数据库索引建了但查询仍然慢 | 存储层 + Cache / IO | B+Tree、页访问、随机 IO、Buffer Pool、CPU cache 和查询执行计划共同决定代价 | 只看 SQL 文本 |
| 端侧或嵌入式程序能跑但功耗高 | 数字硬件 + 体系结构 | 频率、电压、内存访问、外设唤醒、算子支持和数据搬运都会影响功耗 | 只压缩代码体积 |
| 页面 | 负责什么 | 什么时候看 |
|---|---|---|
| 本页:组成原理、体系结构与数字硬件课群 | 负责把数字逻辑、机器表示、组成原理、体系结构、多核和硬件接口按课程顺序接起来 | 你要补系统课的硬件地基,或解释真实性能为什么和抽象模型不同 |
| 操作系统课群 | 负责把硬件资源抽象成进程、内存、文件、IO 和权限边界 | 你想知道硬件结构怎样被 OS 管理时 |
| 编译原理、运行时与语言实现课群 | 负责源代码怎样变成机器码、字节码、运行时行为和性能差异 | 你想知道语言实现怎样利用或受限于硬件结构时 |
| 操作系统课群 | 负责进程线程、调度、虚拟内存、文件系统、IO、Socket、epoll 和容器资源 | 你已经理解硬件执行,想看 OS 如何抽象和调度资源时 |
| 编译原理课群 | 负责源代码怎样变成 IR、机器码、字节码、JIT、GC 和运行时行为 | 你想知道语言实现怎样利用或受限于硬件结构时 |
| 计算机体系结构底座 | 负责 CPU、Cache、流水线、多核、内存层级等机制层下钻 | 课程关系已经清楚,想继续看机制细节时 |