- 局部相关
- 概念:由于程序中往往会出现数据相关,而这类数据对应的指令一般相隔不超过基本快,对程序执行影响小
表现:共享资源访问冲突
概念:后一条指令需要使用的数据与前一条指令发送冲突或者相邻指令使用了相同的寄存器
表现:
指令相关
访存操作数相关
通用寄存器相关
解决方法
后推法
概念:如果遇到数据相关则暂停后续指令的执行,直到前面指令产生结果
具体做法:每一次取数时,都要把取数的地址和前面指令中正在执行的数据地址相比较,如果有相同,则推迟执行读数据操作
缺点:有较长的等待时间
定向技术
概念:又称为旁路技术或者专用通路技术
具体做法:在流水线的读数和写数部件之间设置直接传送数据通道,当存数的同时向需要读改数据的其它部件直接送值,如果有多个则多次送值
- 全局相关
概念:指的是转移指令或中断指令处理,对程序执行影响大
表现:
转移指令:
无条件转移指令
在指令译码时发现
具体做法:如果发现无条件转移指令,则清空指令缓冲区中之前放入的指令,则按转移地址读取新的指令序列放到指令缓冲区中
条件转移指令
在指令译码时发现
具体做法:
确定转移的方向需要根据上一个指令执行完成后末端产生的条件码而定,这个时候要停下来等待条件码的产生
如果转移成功则执行新的指令流
如果转移不成功则按原来预存的指令从头开始,会出现停顿一段时间的现象
解决停顿的措施
猜测法
条件码产生前:在发现转移指令到产生条件码这段时间内,指令部件继续按原方向取指令
条件码产生后
原方向与条件转移方向一致则新取的指令有效,可以继续使用,流水线停顿等待时间较短
原方向与条件转移方向不一致则新取的指令无效,则清空新指令,重新按相反方向读取指令,重新开始分析,流水线等待时间较长
预取转移目标
发现条件转移指令后同时向写两个方向取指令,最后根据条件码指定的方向取其中一个分支执行
加快和提前形成条件码
条件码的形成不需要等待运算结果,而是直接根据数据特征生成
举例:乘法指令结果的正负直接根据两个操作数的正负就定了,不需要等待乘法结果
推迟转移
将条件转移指令的位置往后移,将与该条件无关的指令先执行,前提是不能影响执行结果,这样执行效率较快
加快短循环程序的处理
短循环:指的是循环段的指令数少于或者等于指令缓冲器中可存放的指令数数量
优点:短循环可以使指令全部放入指令缓冲器,让指令部件停顿取新指令,只重复执行这段程度,减少对主存的访问,提高处理机效率
要求:在处理机中设置相应的硬件
中断处理
不精确断点法
原理:当有中断请求时,不允许指令部件取新流水号,原缓冲区中的指令继续执行完毕,完成后转入中断处理程序
优点:实现控制简单
缺点:中断时间较长,程序执行结果可能出错,调试困难
精确断点法
原理:当有中断请求时,立即转入中断处理程序
优点:缩短了中断响应时间
缺点:需要较多的后援寄存器用于保存指令的现场和恢复,增加了处理机的硬件复杂度