1. 指令周期
指令周期是指_
CPU从主存取出一条指令, 分析指令,加上执行这条指令的时间。
1.1指令周期
指令周期: 是指cpu,从内存中取出指令,并且执行一条指令所需要的全部时间。
比如 从内存单元中,取出操作数,使用操作码add, 与acc寄存器中的值相加,结果保存在acc寄存器中。
取指周期:要访问一次内存, 将指令从内存中取出,送入到cpu。
执行周期: 也访问一次内存,将操作数
从内存中取出,送入到cpu中, 执行加法操作。
1.2 每条指令的指令周期不同
取指周期,要访问一次内存, 将指令从内存中取出,送入到cpu。
执行周期: 也访问一次内存,将操作数
从内存中取出,执行对应的运算,将结果保存在寄存器中。
1.3 具有间接寻址的指令周期
取指周期,要访问一次内存, 将指令从内存中取出,送入到cpu。
间址周期:访问一次内存,将操作数的地址
从内存中取出。
执行周期: 也访问一次内存,将操作数
从内存中取出,执行对应的运算,将结果保存在寄存器中。
1.4 带有中断周期的指令周期
中断周期:保护断点, 形成中断服务程序的入口地址, 关中断。
1.5 指令周期流程
根据CPU访存的性质不同,可将CPU的工作周期分为取指周期、间址周期、执行周期和中断周期。
1.6 CPU 工作周期的标志
控制器在指令周期的阶段,
要发出不同的控制命令,
控制器也需要知道当前处于指令周期的何种阶段。
CPU 访存有四种性质
具体操作 | 周期阶段 |
---|---|
取指令 | 取指周期 |
取地址 | 间址周期 |
存取操作数或结果 | 执行周期 |
存程序断点 | 中断周期 |
使用D触发器,对指令周期中不同的阶段进行标识
2. 指令周期的数据流
2.1取指周期数据流
MAR: 要访问存储器的地址,保存在MAR中。
MDR: 从存储器中取出的数据(或者指令),放在MDR当中。
IR:取值周期中,取回的是指令,保存在IR当中,IR寄存器专门用于保存指令。
CU:所有部件的运行通过CU控制;
具体来讲,
CU向存储器发出读信号。
cu 控制,准备下一条指令的地址, 将pc+1 的值保存在pc总;
2.2 间址周期数据流
一旦取指周期结束,CU便检查IR中的内容,以确定其是否有间址操作。
要取出的操作数,所在存储器当中的地址保存在MDR 当中;
将MDR中存储的地址输入到MAR当中。
2.3 执行周期数据流
不同指令的执行周期数据流不同
2.4 中断周期数据流
1. 保存断点;CU控制,将程序断点保存在内存单元中的哪个地址当中,将cu中的地址存放在MAR当中, MAR将数据存放在地址总线当中, 这里要保存的断点,是中断之后,需要返回程序的位置,代表了中断恢复之后,需要执行下一条指令的地址,该地址保存在pc当中,pc将该值保存在MDR当中。
2.形成中断服务程序的入口地址, 该地址同样也是由cu给出,并且写入到pc当中。
3.硬件,关中断;
3. 指令流水
3.1如何提高机器速度
-
- 提高访存速度
高速芯片, Cache, 多体并行
- 提高访存速度
多体并行:cpu在一个主存周期当中,对多个存储器进行交叉访问, 多个存储体对cpu提供数据。
-
- 提高 I/O 和主机之间的传送速度
中断, DMA, 通道, I/O 处理机, 多总线
- 提高 I/O 和主机之间的传送速度
-
- 提高运算器速度
高速芯片 改进算法 快速进位链
- 提高运算器速度
为了提高运算速度,可以采用高速芯片和快速进位链,以及改进算法等措施
• 提高整机处理能力
高速器件 改进系统结构 ,开发系统的并行性
3.2 系统的并行性
- 并行包含同时性和并发性两个方面:
同时:是指两个或多个事件在同一时刻
发生,
并发: 是指两个或多个事件在同一时间段
发生。
- 并行性的等级
过程级(程序、进程), 粗粒度, 软件实现
指令级(指令之间), 指令内部, 细粒度, 硬件实现
3.3指令流水原理
- 指令的串行执行
取指令 取指令部件 完成 总有一个部件 空闲
执行指令 执行指令部件 完成
- 指令的二级流水
若 取指 和 执行 阶段时间上 完全重叠
指令周期 减半 速度提高 1 倍
3.4 影响指令流水效率加倍的因素
- 执行时间 > 取指时间:
条件转移指令
:
是影响指令流水效率加倍的一个因素,当遇到条件转移指令时,下一条指令是不可知的,因为必须等到执行阶段结束后,才能获知条件是否成立,从而决定下条指令的地址,造成时间损失。
3.5 指令的六级流水
指令 | 作用 |
---|---|
FI | 取指令 |
DI | 指令译码 |
CO | 形成操作数地址 |
FO | 取操作数 |
EI | 执行操作 |
WO | 结果写回 |
结果写回, 是指将运行结果写回到给定寄存器当中, 或者写回到给定的内存单元当中。
4. 影响指令流水线性能的因素
4.1结构相关
不同指令争用同一功能部件产生资源冲突.
解决办法:
• 停顿
• 指令存储器和数据存储器分开
• 指令预取技术 (适用于访存周期短的情况)
4.2数据相关
不同指令因重叠操作,可能改变操作数的 读/写 访问顺序
解决办法
- 采用
- 旁路技术
4.3控制相关
由转移指令引起
5. 流水线性能
5.1 吞吐率
吞吐率: 单位时间内 流水线所完成指令 或 输出结果 的 数量;
设 m 段的流水线各段时间为Δt
• 最大吞吐率:
T p m a x = 1 Δ t T_{pmax} = \frac{1}{Δt} Tpmax=Δt1
• 实际吞吐率
连续处理 n 条指令的吞吐率为
T
p
=
n
m
⋅
Δ
t
+
(
n
−
1
)
⋅
Δ
t
T_{p}= \frac{n} {m ·Δt + (n-1) ·Δ t}
Tp=m⋅Δt+(n−1)⋅Δtn
5.2 加速比
m 段的 流水线的速度 与等功能的 非流水线的速度 之比
设流水线各段时间为 Δ t;
完成 n 条指令在 m 段流水线上共需:
T
=
m
⋅
Δ
t
+
(
n
−
1
)
⋅
Δ
t
T= {m ·Δt + (n-1) ·Δ t}
T=m⋅Δt+(n−1)⋅Δt
完成 n 条指令在等效的非流水线上共需:
T
p
=
n
m
⋅
Δ
t
T_{p}= {nm ·Δt }
Tp=nm⋅Δt
S p = n m ⋅ Δ t m ⋅ Δ t + ( n − 1 ) ⋅ Δ t S_{p}= \frac{nm ·Δt } {m ·Δt + (n-1) ·Δ t} Sp=m⋅Δt+(n−1)⋅Δtnm⋅Δt
= n m m + n − 1 = \frac{nm}{ m+ n-1} =m+n−1nm
5.3效率
流水线中各功能段的 利用率
由于流水线有 建立时间 和 排空时间
因此各功能段的 设备不可能 一直 处于 工作 状态
流水线中各功能段的 利用率