一、计算机体系结构的知识体系
1.1 课程在计算机系统中的位置
1
2
3
4
5
6
7
8
9
高层应用
↓
操作系统(OS)
↓
计算机组成与体系结构
↓
RTL 寄存器传输级
↓
数字逻辑
与其他课程的关系:
- 操作系统:理解 memory、虚拟化、多核并行
- 编译器:理解指令集并行、优化
- 数据库:理解存储层次、缓存机制
二、计算机发展的三大”墙”
2.1 存储墙(Memory Wall)
核心矛盾:CPU 速度与存储器速度的差距越来越大。
Memory 的约束:
- 容量不够大:永远不够用
- 带宽不够高:数据传输速度跟不上
- 局部性不足:频繁访问不同区域
解决方案:
- Cache 层次结构
- 虚拟存储
- 优化算法的 memory 访问模式
优化 memory 访问模式往往比简单提升 CPU 频率更能提升性能。
2.2 功耗墙(Power Wall)
- 单核性能提升遇到功耗瓶颈
- 转向多核架构
2.3 带宽墙(Bandwidth Wall)
- GPU 使用 HBM 内存(高带宽内存)
- 互联网络的设计变得关键
- 多 GPU 服务器的连接拓扑成为瓶颈
三、核心知识点回顾
3.1 指令集(ISA)
RISC-V 指令集:
- 简洁、开放
- 适合教学和研究
- 未来有可能被大量采用
指令集设计的考虑:
- 指令集扩展的合理性
- 针对特定应用场景的优化
3.2 运算方法和部件
浮点数
实际应用价值:
- 大模型参数量非常大,压缩是关键
- 浮点数精度的权衡
在深度学习模型中,浮点数精度(如 FP32、FP16、BF16)的选择直接影响模型大小和推理速度。
运算单元
- 乘法单元:追求速度
- 除法单元:追求速度
3.3 中央处理器(CPU)
流水线设计
流水线的关键问题:
- 单周期、多周期、流水线的权衡
- 数据冲突、控制冲突的处理
Timing 分析
流水线的 timing 分析是理解处理器性能的关键。
3.4 存储器结构
Memory 层次
核心原则:
- Cache(高速缓存)
- 虚拟存储
- 局部性原理
Memory 是计算机系统中绕不过去的瓶颈,一定不够大。
虚拟地址
复杂性:
- 虚拟地址到物理地址的转换
- TLB(Translation Lookaside Buffer)
- 多级页表
实际影响:
一次看似简单的 memory 访问,实际可能涉及:
- 先查 TLB
- TLB 未命中则访问页表
- 多级页表可能需要多次 memory 访问
- 最后才真正访问数据
3.5 线程级并行
Tomasulo 算法
- 动态调度
- 乱序执行
Tomasulo 算法是实现指令级并行的经典方法,通过保留站(Reservation Station)和公共数据总线(CDB)实现动态调度。
3.6 多处理器系统
共享存储架构
两种形式:
- 集中式共享存储(UMA):CPU 内部常用
- 分布式共享存储(NUMA):可以封装更多核
多核并非越多越好,核数增加带来的一致性维护开销也会增加。
Cache 一致性协议
广播方式(Snooping):
- 每个 CPU 广播自己的访问
- 适合小规模系统(2-4 个核)
在小规模系统中,每个 CPU 监听总线上的所有事务。但核数增加后,总线成为瓶颈。
协议演进:
- MSI:Modified, Shared, Invalid
- MESI:加入 Exclusive 状态
- MOESI:继续优化
每个状态的加入都有充分的理由,但会增加硬件复杂度。
False Sharing(假共享)
问题场景:
- Cache line 中多个数据被不同核访问
- 本地调试(单核双线程)运行良好
- 切换到多核后性能骤降
原因:
不同核访问同一 Cache line 中的不同数据,即使逻辑上没有共享,也会触发一致性协议,导致频繁的 Cache line 失效。
目录协议(Directory Protocol)
- 分布式系统的一致性维护
- 目录存放在主存中
- 记录每个 Cache line 的共享状态
3.7 内存一致性(Memory Consistency)
Sequential Consistency
最严格的模型:
- 所有处理器看到的内存访问顺序一致
- 每个处理器内部的顺序保持不变
案例:两个核执行简单代码可能产生多种结果(在某些一致性模型下)。
Relaxed Consistency
性能考虑:
- Sequential Consistency 太慢
- 需要放松(relax)一致性要求
fence 指令:
- 用于保证顺序
- 在关键位置插入 fence
- 权衡性能与正确性
四、互联网络
4.1 实际应用场景
场景:公司购买了 64 台 GPU(H200 或 4090),如何连接?
需要考虑的因素:
- 业务流向:数据如何流动
- 网络拓扑:选择合适的拓扑结构
- 扩展性:未来是否还会扩展
4.2 网络拓扑参数
关键参数
- 网络规模(Network Size):总节点数
- 节点度(Node Degree):每个节点的连接数
- 距离(Distance):任意两节点间的最小跳数
- 网络直径(Network Diameter):最大距离
实际考虑
节点度的限制:
- 服务器有多少个网口?4 个、8 个?
- 万兆网口、千兆网口
- 加网卡增加网口数
拓扑选择:
- 线性(Linear):简单但距离远
- 环形(Ring):节点度为 2,但距离可能很远
- 全连接(Fully Connected):距离近但成本高
4.3 静态 vs 动态路由
- 静态路由:固定路径
- 动态路由:根据网络状态调整
环形网络曾经流行,因为每个节点的度只有 2,布线简单。
五、摩尔定律与技术瓶颈
5.1 摩尔定律的放缓
现状:
- 近 15 年发展越来越平坦
- 单核性能提升遇到瓶颈
机遇:
- 技术放缓为后来者提供追赶机会
- 创新变得必要:传统方法遇到瓶颈,需要全新架构
5.2 指令集的选择
RISC vs CISC
Intel 的历史包袱:
- x86 指令集背负大量历史包袱
- AMD 在 x86 领域一直追赶 Intel
- Intel 尝试更换指令集但失败
未来的不确定性:
- 技术发展方向难以预测
- 不确定性为创新提供空间
六、体系结构的黄金时代
6.1 三大优势
- 半导体技术瓶颈:大家站到同一起跑线
- 体系结构人才充足:每年向社会输送大量人才
- 强烈的应用需求:巨大的市场需求驱动创新
6.2 David Patterson 讲座要点
背景:
- 时间:2019 年
- 主题:计算机架构发展和新黄金时代
- 讲者:David Patterson(RISC 之父,图灵奖得主)
核心观点:
历史回顾的价值
回顾历史预测时,应思考:
- 哪些预测实现了?
- 哪些没有实现?
- 为什么会有偏差?
RISC-V 的推广
- 开放架构,不受制于人
- 架构是否流行取决于多种因素
- RISC-V 出货量已经很大,在小型设备中应用广泛
开源 vs 专利
- 开源促进了技术传播
- 专利保护了创新动力
- 两者都对技术进步有贡献
七、知识体系总结
计算机体系结构是一个系统性的学科,涉及:
- 指令集架构:定义软硬件接口
- 运算部件:实现高效计算
- 流水线:提升指令吞吐率
- 存储层次:解决存储墙问题
- 并行处理:利用多核资源
- 互联网络:连接多处理器
这些知识点相互关联,共同构成了现代计算机系统的基础。理解这些概念有助于:
- 知道系统中可能存在的性能瓶颈
- 理解优化的切入点
- 在设计系统时做出合理的权衡决策