5.中央处理器
(★★★)指令的执行过程
指令周期
- 一个指令周期包括四个部分,从前到后分别是
- 取指周期:取指令
- 间址周期(可无):取操作数的有效地址
- 执行周期:执行指令
- 中断周期(可无):处理中断请求
指令周期的数据流及对应微操作
取指周期
- 数据流
序号 | 数据流 | 解释说明 |
---|---|---|
1 | PC \(\rightarrow\) MAR \(\rightarrow\) 地址总线 \(\rightarrow\) 主存 | PC 中的地址送入主存 |
2 | CU发出控制信号 \(\rightarrow\) 控制总线 \(\rightarrow\) 主存 | CU 向主存发出控制信号 |
3 | 主存 \(\rightarrow\) 数据总线 \(\rightarrow\) MDR \(\rightarrow\) IR | 主存将指定地址的指令送入 IR 寄存器 |
4 | CU发出读命令 \(\rightarrow\) PC 内容加 1 | PC 自增 |
- 微操作
序号 | 微操作 | 说明 |
---|---|---|
1 | PC \(\rightarrow\) MAR | 将现行指令地址送入 MAR |
2 | 1 \(\rightarrow\) R | 命令存储器读 |
3 | M( MAR ) \(\rightarrow\) MDR | 现行指令从存储器中读至 MDR |
4 | MDR \(\rightarrow\) IR | 现行指令送入 IR |
5 | OP( IR ) \(\rightarrow\) CU | 指令操作码送入 CU 译码 |
6 | ( PC ) + 1 \(\rightarrow\) PC | 形成下一条指令的地址 |
(★)小总结:主存 和 CPU 的数据交互总是经过总线和相应的寄存器
间址周期
- 数据流
序号 | 数据流 | 解释说明 |
---|---|---|
1 | Ad( IR ) \(\rightarrow\) MAR \(\rightarrow\) 地址总线 \(\rightarrow\) 主存 | IR 中指令的地址码部分送入主存 |
2 | CU发出读命令 \(\rightarrow\) 控制总线 \(\rightarrow\) 主存 | CU 向主存发出控制信号 |
3 | 主存 \(\rightarrow\) 数据总线 \(\rightarrow\) MDR | 主存将指定地址的有效地址送入 MDR 寄存器 |
- 微操作
序号 | 微操作 | 说明 |
---|---|---|
1 | Ad( IR ) \(\rightarrow\) MAR | 将指令字的地址码(形式地址)部分送入 MAR |
2 | 1 \(\rightarrow\) R | 命令存储器读 |
3 | M( MAR ) \(\rightarrow\) MDR | 将有效地址从存储器中读至 MDR |
执行周期
数据流(具体指令具体分析)
微操作(具体指令具体分析)
中断周期
- 数据流
序号 | 数据流 | 解释说明 |
---|---|---|
1 | CU 控制将 SP 减 1 \(\rightarrow\) MAR \(\rightarrow\) 地址总线 \(\rightarrow\) 主存 | 将栈顶指针送入主存 |
2 | CU发出写命令 \(\rightarrow\) 控制总线 \(\rightarrow\) 主存 | CU 向主存发出控制信号 |
3 | PC \(\rightarrow\) MDR \(\rightarrow\) 数据总线 \(\rightarrow\) 主存 | 保存断点到主存 |
4 | CU ( 中断服务程序的入口地址 )\(\rightarrow\) PC | 将中断服务程序的入口地址送入 PC |
(★★)数据通路及控制器
(详见教材)
(★★)异常与中断
(详见教材)
解题技巧及重要结论
- 几个概念的关系
- 指令与微程序一一对应
- 微程序由多条微指令
- 每条微指令中又有多条微操作
- 若指令系统中,具有 n 种机器指令,则控制存储器中的微程序数量至少为 n + 2 ( 2 的含义:1 条公共取指,1 条处理中断)
- 指令流水线中的计算
- 吞吐率
- 基本公式
- \(TP=\frac{n}{T_k}\) ,
- \(n\) 为任务数,\(T_k\) 是完成 \(n\) 个任务所花费的时间
- \(TP=\frac{n}{T_k}\) ,
- 当流水线各段处理时间相等时,进一步有
- \(TP=\frac{n}{(k+n-1)\Delta t}\)
- k 级流水线,\(\Delta t\) 为时钟周期
- \(TP=\frac{n}{(k+n-1)\Delta t}\)
- 基本公式
- 加速比
- 基本公式
- \(S=\frac{T_0}{T_k}\)
- 当流水线各段处理时间相等时,进一步有
- \(S=\frac{kn\Delta t}{(k+n-1)\Delta t}=\frac{kn}{k+n-1}\)
- 基本公式
- 流水线效率
- \(E=\frac{T_0}{kT_k}\)
- \(T_0\) 为顺序执行 \(n\) 个任务所用的总时间
- \(E=\frac{T_0}{kT_k}\)
- 吞吐率
- 依据各段指令的时间,确定时钟周期:选各段指令的时间最大的
- 超标量流水线的含义:指的是 CPU 中存在一条以上的流水线,在每个时钟周期内可以完成一条以上的指令(空间换时间)
- 单流水线处理机(度为 1 )和超标量流水线(度为
d)的多条指令连续执行的时间计算问题
- 利用公式 \(T_k=(k+n-1)\Delta t\) ,其中 k 级流水线,n 为指令条数, \(\Delta t\) 为时钟周期
- 注意:超标量中指令条数要除以度数,再带入公式计算
- 影响流水线的因素
- 结构相关(资源冲突)
- 多条指令同一时间竞争统一资源
- 解决方案
- 前一条使用时,后一条等待一个时钟周期
- 设置更多的相关资源
- 数据相关(数据冲突)
- 后一条指令需要前一条指令执行完毕才能执行(比如说后一条指令需要前一条指令计算的结果)
- 解决方案
- 后一条指令中插入 NOP 操作,等待前一条指令执行完成
- 设置数据旁路
- 编译优化,调整指令顺序
- 控制相关(控制冲突)
- 指令跳转时,导致流水线断流
- 解决方案
- 分支预测
- 等
- 结构相关(资源冲突)
参考资料
- 计算机组成与系统结构.袁春风等
- 2020年计算机组成原理考研复习指导.王道论坛