计算机体系结构
绪论
一、课程基本信息
1. 课程定位与目标
- 面向对象:高年级本科生或研究生,特别是计划从事计算机体系结构研究的学生
- 教学目标:
- 了解计算机体系结构基础和当代主流计算机系统
- 掌握存储顺序性、Cache一致性、流水线和片上网络等内容
- 掌握高性能处理器设计与分析方法
- 了解异构计算和领域专用体系结构
2. 课程内容结构
八大章节:
- 绪论
- 基准评测集
- 高性能计算机体系结构
- 高性能处理器并行计算技术
- 高性能计算机存储层次
- 高性能计算机互连网络
- 异构计算体系结构
- 领域专用体系结构
二、量化设计与分析基础
重点内容:
- 计算机技术发展的关键转折点
- 丹纳德缩放定律(Dennard Scaling)及其终结
- 摩尔定律及其面临的挑战
- 单处理器性能发展历程
难点:
- 理解处理器性能增长放缓的深层原因
- 掌握能耗墙、内存墙等技术瓶颈的本质
关键概念:
摩尔定律:
- 定义:晶体管数量每18-24个月翻倍,成本减半
- 现状:增长开始放缓
- 面临挑战:物理极限、成本效益、散热问题
丹纳德缩放定律:
- 核心内容:功率密度随面积保持不变
- 终结时间:2004年
- 影响:推动了多核处理器的发展
三、高性能计算机发展史
重点内容:
- 高性能计算机四个发展阶段
- 中国超级计算机发展历程
- 超级计算机应用领域
实例分析:
重要里程碑机器:
- CDC 6600 (1964):第一台真正的超级计算机
- Cray-1 (1976):首次使用向量处理器架构
- 天河一号(2009):中国首台千万亿次超级计算机
- 神威·太湖之光(2016):首个使用国产芯片的世界最快超算
超级计算机应用领域:
- 科学计算:气候环境、天文物理、材料化工
- 工程应用:航空航天、石油勘探、工程设计
- 新兴领域:智慧城市、人工智能、精准医疗
重要图表位置标注:
- 超级计算机性能发展曲线:P139
- CPU性能发展趋势图:P140
- 超算应用领域分布图:P145
关键结论:
- “并行”是实现超级计算的唯一途径
- 未来发展趋势:
- E级向Z级计算发展
- 与AI、大数据融合
- 探索非冯·诺依曼架构
基准评测集
一、计算机性能基础
1. 性能指标
重点:CPU性能评估方法
- CPU时间计算公式:
CPU Time = Instructions × CPI × Clock Cycle Time
- 主要影响因素:
- 指令数(Instructions)
- 每指令周期数(CPI)
- 时钟周期时间(Clock Cycle Time)
性能度量标准:
MIPS (每秒百万指令数)
MIPS = Instructions Number/(Execution Time × 10^6)
FLOPS (每秒浮点运算次数)
MFLOPS = Float Instructions Number/(Execution Time × 10^6)
2. 并行系统性能评估
重点概念:
- 加速比(Speedup):其中:
S = Ts/Tp
- Ts:串行执行时间
- Tp:并行执行时间
- 效率(Efficiency):其中p为处理器数量
E = S/p
难点:Amdahl定律
- 核心公式:其中:
S = 1/(f + (1-f)/p)
- f:串行部分比例
- p:处理器数量
- 关键结论:
- 加速比存在上限:1/f
- 串行部分成为性能瓶颈
Gustafson定律
- 公式:
S' = p - f(p-1)
- 特点:
- 考虑问题规模随处理器数量增长
- 突破了Amdahl定律的限制
二、基准测试程序
主要类型:
- 商用基准测试(TPC系列):
- TPC-C:在线事务处理
- TPC-H:决策支持系统
- TPC-E:证券交易系统
- SPEC测试程序:
- SPECint:整数运算
- SPECfp:浮点运算
- 特点:标准化、可比性强
- HPC特定测试:
- Linpack:稠密矩阵运算
- HPCG:稀疏矩阵求解
- Graph500:图算法性能
实例分析:
以龙芯3A5000处理器为例:
SPEC CPU2006测试结果: |
性能分析表明:
- 定点性能接近同代x86处理器
- 浮点性能仍有提升空间
三、性能提升方法
主要策略:
- 利用并行性
- 遵循局部性原理
- 关注常见情况优化
并行算法设计步骤:
- 任务划分
- 通信分析
- 任务组合
- 处理器映射
重要图表位置:
- CPU性能影响因素表:P12
- 处理器性能方程:P9-10
- 性能评测指标汇总:P16
高性能计算机的体系结构
一、超级计算机硬件组成
1. 五大核心子系统
- 计算阵列:
- 处理器节点的集合
- 例子:天河一号(7168个节点)、天河二号(17920个节点)
- 每个节点通常包含CPU和加速器(如GPU、Intel Xeon Phi)
- 存储阵列:
- 采用层次式混合共享存储架构
- 特点:大容量、高带宽、低延迟
- 实例数据:
- 天河一号:262TB内存,2PB磁盘
- 天河二号:1.408PB内存,12.4PB外存
- 服务阵列:
- 基于商用服务器
- 属于大容量胖节点
- 物理组织:多个机架组成
- 天河一号:140个机架
- 天河二号:125个机柜,500个机架
- 互连通信子系统:
- 是大规模并行系统的核心
- 典型拓扑:胖树结构
- 支持硬件实现的集体操作(如多播、广播)
- 监控诊断子系统:
- 功能:实时监控、控制、诊断系统状态
- 监控对象:健康状态、功耗、温度等
二、计算机体系结构分类
1. Flynn分类法
重点概念:
- 指令流(I):执行的指令序列
- 数据流(D):被处理的数据序列
- 多倍性(M):同时处理的指令/数据数量
四种基本类型:
- SISD(单指令流单数据流):
- 传统串行计算机
- 代表:早期PC机、8086处理器
- SIMD(单指令流多数据流):
- 特点:对多个数据并行执行相同操作
- 两个主要分支:
- 阵列计算机(如ILLIAC IV)
- 向量计算机(如Cray-1)
- MISD(多指令流单数据流):
- 存在争议
- 可能的例子:流水线结构
- MIMD(多指令流多数据流):
- 最广泛使用的并行架构
- 两种主要实现:
- 共享内存系统
- 分布式内存系统
实例分析
Cray-1向量计算机结构:
- 向量寄存器组(V0-V7):每个可存64个元素
- 标量寄存器(S0-S7)
- 后援寄存器(T0-T63)
2. MIMD细分类型
A. 共享内存系统
- 集中共享内存(CSM/SMP/UMA):
- 特点:所有处理器访问延迟相同
- 优点:编程简单
- 缺点:扩展性有限
- 分布式共享内存(DSM/NUMA):
- 特点:本地访问快,远程访问慢
- 两种类型:
- NC-NUMA:无缓存
- CC-NUMA:带缓存一致性
B. 分布式内存系统
- MPP(大规模并行处理器):
- 特点:专用高速互连网络
- 应用:科学计算
- 节点特征:共享磁盘系统
- COW(工作站集群):
- 特点:商用网络连接
- 应用:云计算数据中心
- 每节点独立完整
三、非冯诺依曼体系结构
1. 主要类型:
- 归约机
- 数据流计算机
- 量子计算机
- 光子计算机
2. 数据流计算机特点:
- 数据就绪驱动执行
- 打破串行执行限制
- 现代应用:云计算、大数据分析系统
重要图表位置标注:
- Flynn分类法示意图:P29
- 共享内存系统架构图:P64-65
- 分布式内存系统架构图:P74
- 冯诺依曼架构图:P83
高性能处理器的并行计算技术-指令级并行
一、指令级并行基础
1. 并行性类型
- 数据级并行(DLP)
- 同时对多个数据项进行操作
- 任务级并行(TLP)
- 多个独立任务并行执行
2. 硬件利用并行性的四种方式:
A. 指令级并行(ILP):
- 通过流水线和投机执行等方式利用DLP
- 主要特征:深度流水线、多功能部件、多发射
B. 向量架构和GPU:
- 单指令操作多个数据集合
C. 线程级并行:
- 利用多线程执行
D. 请求级并行:
- 处理独立的程序请求
二、指令级并行的挑战
1. 三种基本冒险:
A. 结构冒险:
- 原因:多条指令竞争同一硬件资源
- 示例:内存端口争用
- 解决方案:资源复制(如分离的数据Cache和指令Cache)
B. 数据冒险:
RAW(Read After Write):
I1: add r1,r2,r3
I2: sub r4,r1,r3 // 等待r1WAR(Write After Read):
I1: sub r4,r1,r3
I2: add r1,r2,r3 // 必须等I1读完r1WAW(Write After Write):
I1: sub r1,r4,r3
I2: add r1,r2,r3 // 写入次序不能颠倒
C. 控制冒险:
- 由分支指令引起
- 影响严重:每3-6条指令就有一个分支
- 解决方案:分支预测
2. 解决数据冒险的基本方法:
A. 转发(Forward):
- 将计算结果直接转发给需要的功能部件
- 优点:减少等待时间
- 局限:不能解决所有RAW冒险
三、循环展开优化
重点概念:
- 循环展开目的:
- 减少循环控制开销
- 增加指令级并行机会
- 基本步骤:
- 确认循环迭代间独立性
- 使用不同寄存器避免名字相关
- 去除多余分支指令
- 调整循环终止条件
- 分析存储地址相关性
- 进行指令调度
实例分析:
原始循环: |
展开优化后:
Loop: fld f0,0(x1) |
优化效果:
- 未优化:每循环10个时钟周期
- 优化后:每原始循环3.5个时钟周期
- 加速比:2.86倍
四、分支预测
1. 基本概念与重要性
重点:
- 分支指令频率:每3-6条指令就有一个分支
- 影响程序性能:10%-30%的性能损失
- 对ILP的影响:指令级并行度越高,分支预测的重要性越大
2. 分支预测技术分类
A. 静态预测:
- 基于编译时信息
- 典型方法:
- 总是预测分支不跳转
- 总是预测分支跳转
- 延迟分支(Delayed Branch)
B. 动态预测:
- 简单的1位预测器:
- 记录最近一次分支结果
- 2位预测器:
- 使用饱和计数器
- 需要连续两次预测错误才改变预测方向
- 相关预测器(两级预测器):
- (m,n)预测器:
- m位历史记录
- n位预测器
- 实例:(2,2)预测器
- 全局历史:2位
- 每个分支2位预测器
- 竞赛预测器(Tournament Predictor):
- 结合局部预测和全局预测
- 动态选择更准确的预测器
3. 分支目标缓存(BTB)
重要组成:
- 基本结构:
- 分支指令PC
- 预测标志
- 目标地址
工作流程:
if (PC in BTB) {
next_PC = predicted_target;
} else {
next_PC = PC + 4;
}失效代价:
BTB失效类型 预测 实际 惩罚周期
命中 跳转 跳转 0
命中 跳转 不跳转 2
未命中 - 跳转 2
未命中 - 不跳转 0
五、推测执行
1. 重排序缓冲区(ROB)
重点概念:
- ROB的基本功能:
- 按序发射
- 乱序执行
- 按序提交
- ROB条目构成:
- 指令类型
- 目标寄存器
- 值
- 就绪标志
重要机制:
- 指令发射:
- 分配ROB和保留站
- 读取可用操作数
- 指令执行:
- 操作数就绪即可执行
- 结果暂存ROB
- 写回结果:
- 通过CDB广播结果
- 更新等待该结果的条目
- 提交过程:
- 按程序顺序提交
- 确保精确中断
- 处理预测错误
2. 实例分析
示例代码:
L.D F6,34(R2) |
执行过程:
- Load指令:
- 立即发射
- 等待内存访问
- 按序提交
- 计算指令:
- 等待操作数就绪
- 乱序执行
- 按序提交
- 分支预测错误处理:
- 清除ROB中错误路径指令
- 恢复正确的程序状态
【重要图表位置】
- 两级预测器结构图:P25
- BTB结构图:P37
- ROB组织结构图:P47
六、超标量(Superscalar)处理器
1. 基本原理
- 核心特征:
- 每个时钟周期发射多条指令
- 动态检测指令间依赖
- 硬件负责调度
- 关键组件:
- 多个功能部件
- 复杂的发射逻辑
- 动态依赖检测
2. 主要挑战
A. 结构复杂度:
- 检测W条待发射指令与L组执行指令间的依赖
- 复杂度:O(W * (W*L))
B. 性能瓶颈:
- 指令发射带宽限制
- 功能部件数量限制
- 转发(Forward)复杂度增加
3. 实例分析
双发射MIPS处理器示例:
Loop: L.D F0,0(R1) |
执行效率:
- IPC(Instructions Per Clock):1.67
- 每3个时钟完成一次循环迭代
二、超长指令字(VLIW)
1. 基本特征:
- 编译时调度:
- 编译器负责发现并行性
- 将多条独立指令打包
- 指令包格式:
- 长度:112-168位
- 典型组成:
- 2个整数运算
- 2个浮点运算
- 2个访存操作
- 1个分支指令
2. 优缺点分析
优点:
- 硬件简单
- 执行效率高
- 功耗低
缺点:
- 代码膨胀
- 可移植性差
- Lock-step限制
解决方案:
- 代码压缩
- 动态调度
- 目标代码转换
七、同时多线程(SMT)
1. 基本概念:
- 多个线程共享处理器资源
- 每个线程有独立的上下文
- 支持快速线程切换
2. 实现方式:
A. 细粒度多线程:
- 每个时钟切换线程
- 优点:资源利用率高
- 缺点:单线程延迟增加
B. 粗粒度多线程:
- 长延迟事件触发切换
- 优点:单线程性能好
- 缺点:资源利用率较低
C. 同时多线程(SMT):
- 多个线程同时执行
- 结合超标量技术
- 需要更多硬件资源
八、ILP限制因素
1. 理想处理器假设:
- 无限虚拟寄存器
- 完美分支预测
- 完美值预测
- 无限缓存
2. 实际限制:
A. 指令窗口大小:
- 实际窗口大小:数百条指令
- 影响IPC显著
B. 分支预测:
- 完美预测vs实际预测
- 预测错误代价高
C. 寄存器数量:
- 256个寄存器基本足够
- 更多寄存器收益递减
重要图表位置:
- 窗口大小影响:P60-61
- 分支预测影响:P64-65
- 寄存器数量影响:P67-68