4400
备注:
|
← 于2008-02-23 15:34:11修订的的版本36 ⇥
9350
converted to 1.6 markup
|
删除的内容标记成这样。 | 加入的内容标记成这样。 |
行号 1: | 行号 1: |
基本原理 | <<TableOfContents>> = 基本原理 = |
行号 5: | 行号 6: |
集成电路成本 | 集成电路成本 = (晶片成本 + 晶片测试成本 + 封装和最终测试成本 ) / 通过最终测试的产品数量 晶片产量 = 晶片成品率 * (1 + 单位面积缺陷 * 晶片面积 / alpha ) ^ -alpha |
行号 28: | 行号 32: |
指令集原理 指令集系统结构分类 堆栈系统结构 累加器系统结构 通用寄存器系统结构 寄存器-寄存器结构:简单、定长的指令编码,简单的代码生成模式,每条指令运行所需的时钟周期相近。一个程序的指令数量比可以直接访问存储器的系统结构多;指令多、指令密度低使程序变大 寄存器-存储器结构:数据不需要专门的载入指令就可以直接访问;指令格式更易于程序员编码;代码密度高。操作数位置不同使每条指令的执行时钟周期不同;同一条指令内对内存地址和寄存器编码,限制了寄存器的数量;源操作数在二元操作中被破坏,操作数不是等价的。 存储器存储器结构:最紧凑;不浪费寄存器来做临时交换空间。指令长短各不相同;每条指令的操作各不相同;内存访问带来存储器瓶颈。 |
= 指令集原理 = == 指令集系统结构分类 == * 堆栈系统结构 * 累加器系统结构 * 通用寄存器系统结构 * 寄存器-寄存器结构:简单、定长的指令编码,简单的代码生成模式,每条指令运行所需的时钟周期相近。一个程序的指令数量比可以直接访问存储器的系统结构多;指令多、指令密度低使程序变大 * 寄存器-存储器结构:数据不需要专门的载入指令就可以直接访问;指令格式更易于程序员编码;代码密度高。操作数位置不同使每条指令的执行时钟周期不同;同一条指令内对内存地址和寄存器编码,限制了寄存器的数量;源操作数在二元操作中被破坏,操作数不是等价的。 * 存储器存储器结构:最紧凑;不浪费寄存器来做临时交换空间。指令长短各不相同;每条指令的操作各不相同;内存访问带来存储器瓶颈。 |
行号 42: | 行号 42: |
内存寻址 | == 内存寻址 == |
行号 44: | 行号 44: |
Little Endian:二进制地址形如"x...x00",位于32位字中最低位置的字节。 Big Endian:二进制地址形式如"x...x00",位于32字中的最高位置的字节。 |
* Little Endian:二进制地址形如"x...x00",位于32位字中最低位置的字节。 * Big Endian:二进制地址形式如"x...x00",位于32字中的最高位置的字节。 |
行号 60: | 行号 59: |
行号 64: | 行号 64: |
操作数的大小与类型 | == 操作数的大小与类型 == |
行号 68: | 行号 68: |
行号 69: | 行号 70: |
* 字符(单字节) * 半字(16位) * 字(32位) * 单精度浮点(一个字) * 双精度浮点(两个字) |
* 字符(单字节) * 半字(16位) * 字(32位) * 单精度浮点(一个字) * 双精度浮点(两个字) |
行号 84: | 行号 86: |
指令集的操作 控制流指令 指令集编码 MIPS系统结构 Trimedia TM32结构 谬误和易犯的错误 指令级并行 反相关(Antidependence):由名字重复使用造成的相关,它与先读后写(WAR)冲突对应。 * 记分板调度 * 寄存器重命名 * Tomasulo调度 软件方法 |
== 指令集的操作 == * 算数与逻辑运算 * 数据传输 * 控制 * 系统 * 浮点 * 十进制 * 字符串 * 图像 多媒体指令 * 单指令流多数据流(SIMD)或称为向量指令 * 饱和算法 * 多种舍入方式 * 乘加指令(MAC) == 控制流指令 == * 条件转移 * 无条件跳转 * 过程调用 * 过程返回 指定地址的方式 * 直接地址 * PC相对寻址 * 寄存器间接跳转 条件转移方案 * 条件码 * 条件寄存器 * 比较并分支 过程调用方案 * 调用者保存 * 被调用者保存 == 指令集编码 == * 边长编码 * 定长编码 * 混合编码 == 编译器相关问题 == == MIPS系统结构 == == Trimedia TM32结构 == == 谬误和易犯的错误 == = 指令级并行 = == 流水线基本原理 == RISC指令集基础 RISC指令集的简单实现 * IF 取指令周期 * ID 指令译码/读寄存器周期 * EX 执行/有效地址周期 * MEM访问存储器 * WB 写回 5段流水线 流水线基本性能 {{{ 流水线加速比 = 非流水线指令平均执行时间 / 流水线指令平均执行时间 = 1 / (1+每条指令流水线停顿周期数) * 非流水线时钟周期 / 流水线时钟周期 = 1 / (1+每条指令流水线停顿周期数) * 流水线深度 }}} 流水线冲突 * 资源冲突 * 数据冲突 * 使用旁路 * 控制冲突 * 保持或者更新流水线 * 预测分支未选中 * 预测分支选中 * 分支延迟 流水线实现 实现流水线的困难 处理异常 扩展MIPS流水线处理多周期操作 == 指令级并行 == 指令相关性 * 数据相关(真数据相关) * 名字相关 * 反相关(Antidependence):由名字重复使用造成的相关,它与先读后写(WAR)冲突对应。 * 输出相关 * 数据冲突 * 写读冲突(RAW):对应真数据相关 * 写写冲突(WAW):对应输出相关 * 读写冲突(WAR):对应反相关 * 控制相关 动态调度流水线 * 记分板调度 * Tomasulo算法(寄存器重命名,直接通路) 动态分支预测 * 动态预测缓冲器(分支历史表) * 1位预测 * 2位预测 * 相关分支预测 * Tournament预测器 高性能指令传送 * 分支目标缓冲器 * 集成指令预取部件 * 返回地址预测器 每周期发射多条指令 * 静态调度的超标量 * 动态调度的超标量 = 软件方法 = |
行号 110: | 行号 201: |
* 静态分支预测 * VLIW静态多发射 |
|
行号 113: | 行号 206: |
存储器层次结构设计 |
硬件支持 * 条件执行指令 * 带硬件支持的编译器猜测 = 存储器层次结构设计 = 存储器性能 Cache设计 块的放置策略 * 直接映射 * 全相联映射 * 组相联映射 如何查找块 块替换策略 * 随机 * LRU最近最少使用 * FIFO先进先出 写策略 * 写直达Write Through * 写回法Write Back * 写分配 * 不按写分配 Cache的性能 降低Cache的缺失代价 * 多级Cache * 关键字优先和提前重启动 * 确定读缺失对写的优先级 * 合并写缓冲区 * 牺牲Cache cache缺失分类 * 强制缺失(冷启动缺失或者首次访问缺失) * 容量缺失 * 冲突缺失 |
行号 116: | 行号 245: |
增加块大小 增加cache容量 增加相联度 路预测和伪相联cache 编译优化 多处理器和线程级并行 存储系统 互联网络和集群 |
* 增加块大小 * 增加cache容量 * 增加相联度 * 路预测和伪相联cache * 编译优化 通过并行降低缺失率和缺失代价 * 非阻塞Cache * 指令和数据硬件预取 * 编译控制预取 减少命中时间 * 小而简单的cache * 索引过程中避免地址转换 * 流水化cache访问 * 跟踪cache 提高内存性能 * 增大字长 * 多体交叉存储器 * 独立存储体? 存储器技术 * 快速页模式 * SDRAM * DDR * RAMBUS 虚拟存储器 * 快速地址转换TLB * 页大小 = 多处理器和线程级并行 = 并行结构分类 * SISD * SIMD * MISD * MIMD * 集中式共享存储结构,或者对称多处理器系统,或者均匀存储器访问(UMA) * 分布式存储器 * 共享地址空间 * 多机系统,或者消息传递多处理器系统 、 并行处理的性能 多处理器cache一致性 * 监听协议 * 基于目录的cache一致性协议 同步 存储器一致性 线程级并行 = 存储系统 = 可靠性,有效性 * 故障率 * 平均无故障时间 RAID IO性能评测 * 吞吐率与相应时间 Little排队理论 IO系统设计 = 互联网络和集群 = |
行号 141: | 行号 320: |
参考资料 | = 参考资料 = |
目录
基本原理
- 体系结构的发展 成本、价格
- 集成电路成本 = (晶片成本 + 晶片测试成本 + 封装和最终测试成本 ) / 通过最终测试的产品数量 晶片产量 = 晶片成品率 * (1 + 单位面积缺陷 * 晶片面积 / alpha ) ^ -alpha
- 加快经常性事件的速度 Amdahl定律: 总加速比 = 原来执行时间/新的执行时间 = 1/( (1-增强部分比例)+增强部分比例/增强部分加速比 ) CPU性能公式
- CPI:每条指令执行所需要的时钟周期数。CPI = 一个程序的CPU时钟周期数 / 该程序的指令数IC CPU时间 = 一个程序的CPU时钟周期数 * 时钟周期长度 = 指令数IC * 每指令时钟周期数CPI * 时钟周期的长度 MIPS = 指令数 / (指令的执行时间 * 1M) = 时钟频率 / (CPI * 1M)
- 程序经常会重复使用它最近使用过的指令和数据。经验规律指出程序有90%的执行时间执行的是其10%的代码。
指令集原理
1. 指令集系统结构分类
- 堆栈系统结构
- 累加器系统结构
- 通用寄存器系统结构
- 寄存器-寄存器结构:简单、定长的指令编码,简单的代码生成模式,每条指令运行所需的时钟周期相近。一个程序的指令数量比可以直接访问存储器的系统结构多;指令多、指令密度低使程序变大
- 寄存器-存储器结构:数据不需要专门的载入指令就可以直接访问;指令格式更易于程序员编码;代码密度高。操作数位置不同使每条指令的执行时钟周期不同;同一条指令内对内存地址和寄存器编码,限制了寄存器的数量;源操作数在二元操作中被破坏,操作数不是等价的。
- 存储器存储器结构:最紧凑;不浪费寄存器来做临时交换空间。指令长短各不相同;每条指令的操作各不相同;内存访问带来存储器瓶颈。
2. 内存寻址
- 字节顺序
Little Endian:二进制地址形如"x...x00",位于32位字中最低位置的字节。
Big Endian:二进制地址形式如"x...x00",位于32字中的最高位置的字节。
- 寄存器寻址
- 立即数寻址
- 位移量寻址
- 寄存器间接寻址
- 间接寻址
- 直接寻址
- 存储器间接寻址
- 自动递增寻址
- 自动递减寻址
- 比例寻址
- 循环递增(递减)寻址
- 位反转寻址
3. 操作数的大小与类型
- 指定操作数类型的方式
- 通过操作码编码
- 通过在数据上附带类型标记
- 字符(单字节)
- 半字(16位)
- 字(32位)
- 单精度浮点(一个字)
- 双精度浮点(两个字) 绝大多数情况下,整数使用补码,浮点数使用IEEE754 有些系统有字符串类型,操作很有限 有些计算机提供十进制数字格式,称作压缩十进制或者二进制编码十进制:用4个二进制位对一位十进制进行编码。数值字符串有时称为非压缩十进制。在压缩和非压缩编码之间转换成为压缩和解压缩。
- 顶点
- 像素
- 定点数
4. 指令集的操作
- 算数与逻辑运算
- 数据传输
- 控制
- 系统
- 浮点
- 十进制
- 字符串
- 图像 多媒体指令
- 单指令流多数据流(SIMD)或称为向量指令
- 饱和算法
- 多种舍入方式
- 乘加指令(MAC)
5. 控制流指令
- 条件转移
- 无条件跳转
- 过程调用
- 过程返回 指定地址的方式
- 直接地址
- PC相对寻址
- 寄存器间接跳转 条件转移方案
- 条件码
- 条件寄存器
- 比较并分支 过程调用方案
- 调用者保存
- 被调用者保存
6. 指令集编码
- 边长编码
- 定长编码
- 混合编码
7. 编译器相关问题
8. MIPS系统结构
9. Trimedia TM32结构
10. 谬误和易犯的错误
指令级并行
1. 流水线基本原理
- RISC指令集基础 RISC指令集的简单实现
- IF 取指令周期
- ID 指令译码/读寄存器周期
- EX 执行/有效地址周期
- MEM访问存储器
- WB 写回
流水线加速比 = 非流水线指令平均执行时间 / 流水线指令平均执行时间 = 1 / (1+每条指令流水线停顿周期数) * 非流水线时钟周期 / 流水线时钟周期 = 1 / (1+每条指令流水线停顿周期数) * 流水线深度
- 流水线冲突
- 资源冲突
- 数据冲突
- 使用旁路
- 控制冲突
- 保持或者更新流水线
- 预测分支未选中
- 预测分支选中
- 分支延迟
- 处理异常
2. 指令级并行
- 指令相关性
- 数据相关(真数据相关)
- 名字相关
- 反相关(Antidependence):由名字重复使用造成的相关,它与先读后写(WAR)冲突对应。
- 输出相关
- 数据冲突
- 写读冲突(RAW):对应真数据相关
- 写写冲突(WAW):对应输出相关
- 读写冲突(WAR):对应反相关
- 控制相关
- 记分板调度
- Tomasulo算法(寄存器重命名,直接通路)
- 动态预测缓冲器(分支历史表)
- 1位预测
- 2位预测
- 相关分支预测
- Tournament预测器
- 分支目标缓冲器
- 集成指令预取部件
- 返回地址预测器
- 静态调度的超标量
- 动态调度的超标量
软件方法
- 循环展开
- 静态分支预测
- VLIW静态多发射
- 软件流水
- 路径调度
- 超级块调度
硬件支持
- 条件执行指令
- 带硬件支持的编译器猜测
存储器层次结构设计
- 存储器性能 Cache设计
- 块的放置策略
- 直接映射
- 全相联映射
- 组相联映射
- 随机
- LRU最近最少使用
- FIFO先进先出
- 写直达Write Through
- 写回法Write Back
- 写分配
- 不按写分配
- 多级Cache
- 关键字优先和提前重启动
- 确定读缺失对写的优先级
- 合并写缓冲区
- 牺牲Cache
- 强制缺失(冷启动缺失或者首次访问缺失)
- 容量缺失
- 冲突缺失
- 增加块大小
- 增加cache容量
- 增加相联度
- 路预测和伪相联cache
- 编译优化
- 非阻塞Cache
- 指令和数据硬件预取
- 编译控制预取
- 小而简单的cache
- 索引过程中避免地址转换
- 流水化cache访问
- 跟踪cache
- 增大字长
- 多体交叉存储器
- 独立存储体?
- 快速页模式
- SDRAM
- DDR
- RAMBUS
- 快速地址转换TLB
- 页大小
- 块的放置策略
多处理器和线程级并行
- 并行结构分类
- SISD
- SIMD
- MISD
- MIMD
- 集中式共享存储结构,或者对称多处理器系统,或者均匀存储器访问(UMA)
- 分布式存储器
- 共享地址空间
- 多机系统,或者消息传递多处理器系统 、
- 监听协议
- 基于目录的cache一致性协议
存储系统
可靠性,有效性
- 故障率
- 平均无故障时间
RAID
IO性能评测
- 吞吐率与相应时间
Little排队理论
IO系统设计
互联网络和集群
- 集群
- 缺点 优势
- 可靠性和可扩展性
- 缺点 优势
参考资料
- John Hennessy, David Patterson, Computer Architecture: A Quantitative Approach (3rd Edition)