5.1 CPU 的功能和基本结构
基本结构
- 运算器
- 算数逻辑运算
- 暂存寄存器
- 累加寄存器
- 通用寄存器组
- 程序状态寄存器
- 移位器
- 计数器
- 控制器
- 程序计数器
- 指令寄存器
- 指令译码器
- 存储器地址寄存器
- 存储器数据寄存器
- 时序系统
- 微操作信号发生器
5.2 指令执行过程
指令周期
- 取址周期
- 间址周期
- 取操作数有效地址并存至 MDR
- 执行周期
- 中断周期
指令周期数据流
指令执行方案
- 单指令周期
- 多指令周期
- 流水线方案
5.3 数据通路的功能和基本结构
数据通路的功能
- 数据在功能部件间传送的路径
数据通路的基本结构
- CPU 内部单总线方式
- CPU 内部三总线方式
- 专用数据通路方式
5.4 控制器的功能和工作原理
控制器的结构和功能
硬布线控制器
- 又称组合逻辑控制器
- 硬布线控制器时序系统
- 时钟周期
- 节拍发生器
- 机器周期
- 一般以存取周期作为基准时间
- 指令周期
- 时钟周期
- 微操作命令
- CPU 的控制方式
- 同步控制方式
- 控制电路简单但运行速度慢
- 异步控制方式
- 各部件按自身固有速度工作,通过应答方式联络
- 联合控制方式
- 大部分采取同步控制,小部分采取异步控制
- 同步控制方式
微程序控制器
- 将机器指令编写成一个微程序。将微操作信号代码化。
- 基本术语
- 微命令与微操作
- 相容性互斥性
- 微指令与微周期
- 主存储器与控制存储器
- 程序与微程序
- 微地址寄存器(CMAR)
- 微指令寄存器(CMDR)
- 微命令与微操作
- 控制器的组成
- 控制存储器(CM or CS)
- 存放微程序
- 微指令寄存器
- 微地址形成部件
- 微地址寄存器
- 控制存储器(CM or CS)
- 微程序控制器工作过程
- 取微指令公共操作
- 将机器指令确定操作码对应的微程序入口送入 CMAR
- 从 CM 中逐条取出微指令并执行
- 执行完成后回到取址微程序的入口地址,重新进行1。
- 微指令编码方式
- 目标
- 保证速度
- 尽可能短
- 直接编码方式
- 无需移码
- 优点快,无需译码,方便并行,缺点是字过长
- 无需移码
- 字段直接编码方式
- 将微命令字段分成若干小字段,互斥的放在一个子段,相容的分开,每个子段单独编码
- 可以缩短指令字长,但需要译码,所以稍慢
- 分段原则
- 互斥在一起,相容分开
- 每个小段信息不能过多避免译码时间过长
- 每个小段需要一个状态表示不发出微命令,通常000
- 字段间接编码方式
- 由其他子段某些微命令解释
- 字短,速度慢,不易并行,仅用于辅助
- 目标
- 微指令的地址形成方式
- 断定方式
- 根据机器操作码
- 增量计数器法 (CMAR) + 1 -> CMAR
- 根据各种标志决定转移地址
- 通过网络测试形成
- 硬件直接产生
- 微指令格式
- 水平型微指令
- 指令中的一位对应一个控制信号
- 优点快,缺点长
- 垂直型微指令
- 微操作码编译法
- 混合型微操作
- 水平型微指令
- 微程序控制单元设计
- 动态微程序设计
- 根据要求可改变微程序,通常需要 EPROM
- 毫微程序设计
- 进一步用耳机控制存储器中的豪微程序来解释
微程序控制器与硬布线控制器对比
微程序控制器 | 硬布线控制器 | |
执行速度 | 慢 | 快 |
规整性 | 较规整 | 繁琐、不规整 |
应用场合 | CISC CPU | RISC CPU |
易扩充性 | 易扩充和修改 | 困难 |
5.5 指令流水线
流水线方式
- 依靠多个部件并行工作来缩短执行时间
- 每个功能段部件需要一个缓冲寄存器(锁存器)
- 流水线个阶段时间需要尽量相等
- 同一种任务时效率较高
- 需要装入时间和排空时间
流水线的分类
- 按级别
- 部件功能级
- 将复杂的逻辑运算组成流水线工作方式
- 处理机级
- 将一条指令的解释过程分为多个子过程
- 处理机间级
- 宏流水?
- 部件功能级
- 按功能
- 单功能流水线
- 多功能流水线
- 按动态静态
- 静态
- 按单一连接方式
- 动态
- 能提高效率,但控制比较复杂
- 静态
- 按是否线性
- 线性
- 不存在反馈回路
- 非线形
- 存在反馈回路,一些功能可以多次通过流水线
- 线性
影响流水线的因素
- 数据冲突(数据冒险)
- 处理方式
- 硬件阻塞(空泡)
- 设置专用通路
- 编译器进行优化
- 处理方式
- 控制冲突(控制冒险)
- 处理方式
- 简单(静态)预测
- 动态预测
- 两个分支都预取
- 提前形成条件码
- 处理方式
流水线性能指标
- 流水线吞吐率 $TP = n / T_k$,其中 $TP$ 为吞吐率,$n$ 是任务数,$T_k$ 是处理 $n$ 个任务所需时间
- 流水线加速比 $S = T_0/T_k$,其中$T_0$ 为不使用流水线的时间,$T_k$ 表示使用流水线的时间
- 流水线的效率 E = n 个任务实际占用的时空有效面积/时空总面积
超标量流水线
- 超标量流水线技术
- 每个时钟周期内并发多条独立指令
- 超流水线技术
- 对每个时钟周期再分段
- 超长指令字