计算机体系结构概述
什么是计算机体系结构
计算机体系结构研究的是计算机系统的组织方式——CPU 怎么执行指令、内存怎么存取数据、各个部件怎么协同工作。它回答的核心问题是:计算机是怎么运行你写的程序的?
为什么要学计算机体系结构
知道程序为什么快或者慢。 同样的算法,用数组实现比链表快得多——原因是缓存局部性。不理解体系结构,你只能靠经验猜;理解了,你就能做出有依据的优化决策。
理解"抽象泄漏"。 编程语言提供了很多抽象,但这些抽象不总是可靠的。整数溢出、浮点精度、并发竞争——这些问题的根源都在硬件层面。
为嵌入式和系统编程打基础。 如果你将来做嵌入式开发、驱动程序、编译器、性能优化,体系结构是绕不开的必修课。
面试和考研的重点。 指令流水线、Cache 原理、总线仲裁——这些是 408 考研的核心考点。
核心知识模块
数据表示
- 二进制、十六进制
- 整数表示:原码、反码、补码
- 浮点数表示:IEEE 754 标准
- 字符编码:ASCII、UTF-8
指令系统
- 指令集架构(ISA):CISC vs RISC
- 常见指令类型:算术、逻辑、控制流、访存
- 汇编语言基础:x86 或 RISC-V
CPU 设计
- 数据通路(Datapath):ALU、寄存器、总线
- 控制单元:怎么从指令到控制信号
- 指令流水线:取指、译码、执行、访存、写回
- 流水线冒险:数据冒险、控制冒险、结构冒险
存储层次
- 缓存(Cache):L1/L2/L3 缓存的工作原理、映射方式、替换策略
- 主存(DRAM):内存组织、带宽、延迟
- 虚拟内存:地址转换、TLB、页面置换
- 存储局部性:时间局部性和空间局部性
总线与 I/O
- 总线类型:数据总线、地址总线、控制总线
- I/O 方式:程序查询、中断、DMA
并行处理
- 指令级并行(ILP):超标量、乱序执行
- 数据级并行:SIMD、GPU
- 线程级并行:多核处理器、共享内存
怎么学
从 C 语言和汇编入手。 写一些简单的 C 程序,用 gcc -S 看生成的汇编代码,建立从高级语言到硬件的直觉。
做模拟实验。 用 Ripes 或 Venus 模拟 RISC-V 处理器的运行过程,观察每一步的数据流动。
画数据通路图。 CPU 的数据通路是体系结构的核心。画出指令执行过程中数据在各个部件之间的流动。
本模块资源
| 资源 | 类型 | 说明 |
|---|---|---|
| Berkeley CS61C | 课程 | Berkeley 体系结构课程,RISC-V 实验 |
| Nand2Tetris | 课程 | 从与非门到操作系统的完整实践 |
| CS:APP | 教材 | 深入理解计算机系统,实践性极强 |
| 计算机体系结构:量化研究 | 教材 | 体系结构经典教材 |