CPU 和流水线
- CPU 组成
- 数据通路
- 指令执行过程中,数据经过的所有部件。
- 属于 CPU 的执行部件,包括运算器、寄存器等。
- 控制器
- 对指令译码,生成控制信号,控制数据通路的动作。
- 具体组成部分:
- 指令部件
- 时序部件
- 微操作信号发生器
- 组合逻辑型
- 存储逻辑型:常用方式
- 组合逻辑和存储逻辑结合型
- 中断控制逻辑
- 数据通路
- 时序系统
- 周期
- 指令周期
- 一条指令完成取指、译码、执行等各个步骤的完整时间。
- 不同的指令功能不同,指令周期也不同。
- 机器周期/CPU 周期
- 完成一条指令处理的其中一个步骤需要的时间,指令周期包括若干机器周期。
- 机器周期的长度可能相同,可能不同,取决于节拍的实现。
- 节拍
- 完成一个机器周期中的微操作需要的时间,机器周期包括若干节拍。
- 节拍一般长度相同,机器周期包括的节拍数量可能不同。
- 节拍的分类:
- 统一节拍法:按照最复杂的机器周期为基准,所有机器周期都用相同数量的节拍。有节拍浪费。
- 分散节拍法:各种机器周期按需分配节拍,完全没有浪费。
- 延长节拍法:设定基本节拍数量,大部分机器周期固定使用基本节拍,其他机器周期额外使用更多节拍。基本节拍的浪费比最长的要少。
- 工作脉冲
- 一个节拍尾部产生的若干脉冲,给一些触发器等部件提供同步信号。
- 基本上被时钟周期代替,时钟周期的上升沿和下降沿也可以起到同步作用。
- 时钟周期
- 时钟产生的基本周期,时序的最基本单位。一个节拍包括时钟周期。
- 时钟周期基本上可以代替节拍,作用上基本相同。
- 指令周期
- 控制方式
- 同步控制方式
- 异步控制方式
- 联合控制方式
- 周期
- 执行过程
- 取指
(PC) -> MARM(MAR) -> MDR -> IR(PC) + 1 -> PC
- 取数
- 这里指从主存取数。对于寄存器取数,则无需这么复杂。
(R0) -> MAR,其中R0为主存地址。M(MAR) -> MDR -> Y
- 执行
- 运算指令
(R1) + Y -> Z(Z) -> MDR -> M(MAR)
- 转移指令
(PC) + A -> Z- 如果满足条件
(Z) -> PC
- 运算指令
- 取指
- 微程序
- 定义
- 微指令:多个微指令组成指令,指令即微程序。
- 指令由硬件解释器执行,转换为顺序执行一系列为指令。
- 微命令:多个微命令组成微指令。微命令对应一个微操作。
- 微命令一般是对特定部件作用的,所以不同微命令可能可以并行执行。
- 一条微指令的微操作码编码一次同时执行的所有的微命令,多个部分操作组成整体操作。
- 微指令:多个微指令组成指令,指令即微程序。
- 微操作码编码
- 直接控制法
- 所有的微命令都对应一个二进制位,微指令可以任意选择微命令集合。
- 优点:执行速度快,并行性强。
- 缺点:微指令太长,可以编码互斥的微命令集合。
- 最短编码法
- 一个微指令只执行一个微命令,编码直接设计为微命令编号。
- 优点:微指令长度短,控制字段只需要 位。
- 字段编码法
- 把微命令按照互斥关系分组,互斥的微命令用一个字段译码选择,不互斥的微命令用不同字段表示。
- 一个 位的字段,用其中一个表示不操作,剩下 表示各个互斥的微命令。
- 直接控制法
- 定义
- 流水线
- 分类
- 线性/非线性:
- 线性流水线:每个段恰好流过一次,从前往后连接。
- 非线性流水线:可以有前馈回路和反馈回路。
- 图中的反馈回路默认回流一次,此后不回流。
- 其他。
- 线性/非线性:
- 指标
- 吞吐率
- 最大吞吐量:理论上无限运行情况下的吞吐率,取决于流水段的瓶颈。
- 实际吞吐率:处理给定有限数量的任务的吞吐率。
- 提高吞吐量的方法:
- 细分瓶颈段为更多更小的段。
- 重复设置瓶颈段,轮流使用不同的段。
- 最大吞吐量:理论上无限运行情况下的吞吐率,取决于流水段的瓶颈。
- 加速比
- 效率
- 效率为一段时间内各流水段的使用时间占比的平均值。
- 对于一段时间 ,效率为流水线时空图上 段与 的矩形面积,和段实际覆盖面积的比值。
- 吞吐率
- 非线性流水线调度和预约表
- 预约表表示一个部件的各个段的占用情况:
- 横轴是时间段,一列表示当前时间段内的流水段占用。
- 纵轴时流水段,一行表示此段在不同时间的占用。
- 禁止向量 :表示会导致冲突的调度时间间隔。
- 考虑每一行所有占用的位置,如果 时间段被占用,则 间隔会导致冲突。
- 把每一行的所有冲突情况合并得到集合 ,即禁止向量。
- 初始冲突向量 :如果 ,则禁止向量 中从低位开始第 位为 ,最低位为 。
- 冲突向量状态转移:设当前状态为 , 的第 位为 ,则可以以 为时间间隔调度下一个任务。
- 将 逻辑右移 位得到向量 ,即 时间间隔后、未调度新任务前的冲突情况。
- 将 与 按位或得到 ,即 时间间隔后、调度新任务后的冲突情况,是一个状态向量。
- 所有的状态向量连接为状态图,边为间隔时间:
- 平均启动距离:状态图上的路径的间隔时间平均值。
- 最小启动循环:状态转移为从初始冲突向量开始的环,且平均启动距离最小。
- 预约表表示一个部件的各个段的占用情况:
- 分类