计算机体系结构

返回旧版首页

基本原理

  • 体系结构的发展

  • 成本、价格

    • 集成电路成本 = (晶片成本 + 晶片测试成本 + 封装和最终测试成本 ) / 通过最终测试的产品数量

    • 晶片产量 = 晶片成品率 * (1 + 单位面积缺陷 * 晶片面积 / alpha ) ^ -alpha

  • 评价性能

  • 量化准则

    • 加快经常性事件的速度

    • Amdahl定律: 总加速比 = 原来执行时间/新的执行时间 = 1/( (1-增强部分比例)+增强部分比例/增强部分加速比 )

    • CPU性能公式

      • CPI:每条指令执行所需要的时钟周期数。CPI = 一个程序的CPU时钟周期数 / 该程序的指令数IC

      • CPU时间 = 一个程序的CPU时钟周期数 * 时钟周期长度 = 指令数IC * 每指令时钟周期数CPI * 时钟周期的长度

      • MIPS = 指令数 / (指令的执行时间 * 1M) = 时钟频率 / (CPI * 1M)

    • 局部性原理

      • 程序经常会重复使用它最近使用过的指令和数据。经验规律指出程序有90%的执行时间执行的是其10%的代码。
    • 利用并行性

  • 性价比

  • 功耗与效率

  • 谬误和易犯错误

指令集原理

指令集系统结构分类

  • 堆栈系统结构
  • 累加器系统结构
  • 通用寄存器系统结构
    • 寄存器-寄存器结构:简单、定长的指令编码,简单的代码生成模式,每条指令运行所需的时钟周期相近。一个程序的指令数量比可以直接访问存储器的系统结构多;指令多、指令密度低使程序变大
    • 寄存器-存储器结构:数据不需要专门的载入指令就可以直接访问;指令格式更易于程序员编码;代码密度高。操作数位置不同使每条指令的执行时钟周期不同;同一条指令内对内存地址和寄存器编码,限制了寄存器的数量;源操作数在二元操作中被破坏,操作数不是等价的。
    • 存储器存储器结构:最紧凑;不浪费寄存器来做临时交换空间。指令长短各不相同;每条指令的操作各不相同;内存访问带来存储器瓶颈。

内存寻址

  • 字节顺序

    • Little Endian:二进制地址形如”x…x00”,位于32位字中最低位置的字节。
    • Big Endian:二进制地址形式如”x…x00”,位于32字中的最高位置的字节。
  • 对齐

  • 寻址模式

    • 寄存器寻址
    • 立即数寻址
    • 位移量寻址
    • 寄存器间接寻址
    • 间接寻址
    • 直接寻址
    • 存储器间接寻址
    • 自动递增寻址
    • 自动递减寻址
    • 比例寻址
  • DSP特有寻址模式

    • 循环递增(递减)寻址
    • 位反转寻址

操作数的大小与类型

  • 指定操作数类型的方式
    • 通过操作码编码
    • 通过在数据上附带类型标记
  • 操作数类型
    • 字符(单字节)

    • 半字(16位)

    • 字(32位)

    • 单精度浮点(一个字)

    • 双精度浮点(两个字)

    • 绝大多数情况下,整数使用补码,浮点数使用IEEE754

    • 有些系统有字符串类型,操作很有限

    • 有些计算机提供十进制数字格式,称作压缩十进制或者二进制编码十进制:用4个二进制位对一位十进制进行编码。数值字符串有时称为非压缩十进制。在压缩和非压缩编码之间转换成为压缩和解压缩。

  • 媒体处理器和DSP特有操作数
    • 顶点
    • 像素
    • 定点数

指令集的操作

  • 算数与逻辑运算

  • 数据传输

  • 控制

  • 系统

  • 浮点

  • 十进制

  • 字符串

  • 图像

  • 多媒体指令

  • 单指令流多数据流(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预测器
  • 高性能指令传送
    • 分支目标缓冲器
    • 集成指令预取部件
    • 返回地址预测器
  • 每周期发射多条指令
    • 静态调度的超标量
    • 动态调度的超标量

软件方法

  • 循环展开
  • 静态分支预测
  • VLIW静态多发射
  • 软件流水
  • 路径调度
  • 超级块调度

硬件支持

  • 条件执行指令
  • 带硬件支持的编译器猜测

存储器层次结构设计

  • 存储器性能

  • Cache设计

    • 块的放置策略

      • 直接映射
      • 全相联映射
      • 组相联映射
    • 如何查找块

    • 块替换策略

      • 随机
      • LRU最近最少使用
      • FIFO先进先出
    • 写策略

      • 写直达Write Through
      • 写回法Write Back
      • 写分配
      • 不按写分配
  • Cache的性能

  • 降低Cache的缺失代价

    • 多级Cache
    • 关键字优先和提前重启动
    • 确定读缺失对写的优先级
    • 合并写缓冲区
    • 牺牲Cache
  • cache缺失分类

    • 强制缺失(冷启动缺失或者首次访问缺失)
    • 容量缺失
    • 冲突缺失
  • 降低cache缺失率

    • 增加块大小
    • 增加cache容量
    • 增加相联度
    • 路预测和伪相联cache
    • 编译优化
  • 通过并行降低缺失率和缺失代价

    • 非阻塞Cache
    • 指令和数据硬件预取
    • 编译控制预取
  • 减少命中时间

    • 小而简单的cache
    • 索引过程中避免地址转换
    • 流水化cache访问
    • 跟踪cache
  • 提高内存性能

    • 增大字长
    • 多体交叉存储器
    • 独立存储体?
  • 存储器技术

    • 快速页模式
    • SDRAM
    • DDR
    • RAMBUS
  • 虚拟存储器

    • 快速地址转换TLB
    • 页大小

多处理器和线程级并行

  • 并行结构分类

    • SISD
    • SIMD
    • MISD
    • MIMD
      • 集中式共享存储结构,或者对称多处理器系统,或者均匀存储器访问(UMA)
      • 分布式存储器
        • 共享地址空间
        • 多机系统,或者消息传递多处理器系统 、
  • 并行处理的性能

  • 多处理器cache一致性

    • 监听协议
    • 基于目录的cache一致性协议
  • 同步

  • 存储器一致性

  • 线程级并行

存储系统

可靠性,有效性

  • 故障率
  • 平均无故障时间

RAID

IO性能评测

  • 吞吐率与相应时间

Little排队理论

IO系统设计

互联网络和集群

  • 集群
    • 缺点

    • 优势

      • 可靠性和可扩展性
    • 价格

  • google集群实例

参考资料

  • John Hennessy, David Patterson, Computer Architecture: A Quantitative Approach (3rd Edition)