流水线
1、流水线的特点
计算机的流水线把一个重复的过程分解为若干个子过程,每个子过程与其他的子过程并行执行,由于采用了流水线技术,只需要增加少量的硬件就可以吧计算的运行速度提高好几倍,因此,在计算机中普遍采用这个技术。
2、指令的分段
指令一般分为以下几个阶段:
1、取值:根据PC的内容访问主存,取出的指令放入IR(指令寄存器)中,
2、分析(译码):对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并且从有效地址EA中取出操作数。
3、执行:根据操作码字段,完成指令规定的功能
4、写回:把运算结果写到通用寄存器或者主存中
3、影响流水线的因素
1、结构相关(资源冲突):
由于多条指令在同一时刻争夺相同的资源而形成的冲突称为结构相关,有以下两种解决方法:
1. 前一条指令访存时时候一个指令暂停一个时钟周期。
2. 单独设计数据存储器和指令存储器,使亮相不同的操作各自在不同的存储器中进行,这属于资源的重复配置。
2、数据相关(数据冲突):
数据相关是指在一个程序中,存在必须等待前一条指令执行完才能执行后一条指令的情况,此时这两条指令即为数据相关,当多条指令重叠处理时就会发生数据冲突,解决的方法有以下几种:
1. 把遇到的指令相关的指令及其后续指令都暂停一个至多个时钟周期,直到数据相关性冲突消失后再执行。可分为硬件阻塞和软件插入NOP两种方法。
2. 设置相关的专用通路,即不等前一条指令把计算结果写回寄存器组中,后一条指令也不读寄存器组,而是直接把前一条指令的计算结果作为自己的输入数据开始计算过程,是本来需要暂停的操作变得可以继续执行,也称为数据旁路技术。
3. 通过编译器对数据旁路进行优化,调整指令执行的顺序。
3、控制相关(控制冲突)
当流水线遇到转移指令和其它改变PC值的指令而造成断流的时候,会引起控制冲突,解决方法有以下几种:
- 对转移指令进行分支预测,尽早生成转移目标地址。
-
预测转移成功和转移不成功两个控制流方向上的目标指令。
注意,cache缺失也会形成流水线阻塞。
本章小结
1、CPU分为哪几个部分?分别实现什么功能?
CPU分为运算器和控制器,其中运算器负责数据的加工,也就是对数据进行算术和逻辑运算。控制器是整个计算机系统的指挥中心,对整个计算机系统进行有效的控制,包括指令控制、操作控制、时间控制和中断处理。
2、指令和数据都存放在内存中,计算机如何区分指令和数据?
从时间上讲,取指事件发生在取指周期,取数据事件发生在执行周期。从空间上来看,从内存中取出的指令流向指令寄存器(IR),从内存中取出的数据流向寄存器。