精确断点与不精确断点.ppt
《精确断点与不精确断点.ppt》由会员分享,可在线阅读,更多相关《精确断点与不精确断点.ppt(65页珍藏版)》请在三一文库上搜索。
1、5.3.7 精确断点与不精确断点,对于输入输出设备的中断服务,实际上不需要有精确断点。 比较简单的处理方法是:让已经进入流水线的所有指令都执行完成,断点就是最后进入流水线的那条指令的地址。 对于程序性错误和机器故障等引起的中断,它们出现的概率很低,处理原则:不在于缩短时间,关键是要正确保存现场和正确恢复断点。,不精确断点(Imprecise),流水线可以不断流 需要的硬件比较少,控制逻辑比较简单 中断响应时间加长 采用不精确断点法可能会发生如下两个问题: (1)程序的调试困难 调试程序时要设置断点,程序员通过查看断点处的中间执行结果判断程序是否正确。但由于不精确断点,程序不能准确中断,因此,难
2、于调试。 早期的流水线处理机,多采用不精确断点法 近期的流水线处理机一般都采用精确断点法,(2)程序执行的结果可能出错,例如: i:FADD R1, R2 ;(R1)(R2)R1 i+1:FMUL R3, R1 ;(R3)(R1)R3 当第i条指令执行到S6段时发现浮点加法结果溢出,于是发出中断服务申请。由于采用不精确断点法,已经进入流水线的第i+1条指令将执行完成;因为第i+1条指令使用了不正确的R1,所以浮点乘法的执行结果是不正确的。 采用精确断(Precise)点法,要设置一定数量的后援寄存器,把整个流水线中所有指令的执行结果和现场都保存下来。,5.4 动态调度技术,5.4.1 顺序流动
3、与乱序流动 5.4.2 乱序流动中的数据相关 5.4.3 数据重定向方法 5.4.4 Tomasulo动态调度算法,实现方法: 由硬件动态调整指令执行顺序,以减少数据相关造成的影响。 主要优点: 能够处理在编译时无法确定的相关,并简化编译器设计 在其他流水线机器上编译的目标代码也能够高效运行 用静态调度法生成的代码也能在动态调度法的机器中运行 主要缺点:指令级并行度低,因为只能在比较小的范围内寻找并行性,5.4.1 顺序流动与乱序流动,1.顺序流动方式:任务按顺序流入流水线,也按顺序流出流水线 把如下一段程序输入到这条流水线中: k: R0(R1) k+1: k+2: R2(R0)(R3) k
4、+3: k+4: k+5: ,指令k+2无法继续执行,要在功能段S2中等待。 后续的指令k+4、k+5、等也不能进入流水线。 功能段S3、S4、S5将逐渐空闲。 缺点:吞吐率和效率降低 优点:流水线的控制逻辑比较简单,流水线“断流”,有些功能段“空闲”,2.乱序(Out of order)流动方式:指令流出流水线的顺序与流入流水线的顺序不同。又称为错序流动方式、无序流动方式、异步流动方式等。,5.4.2 乱序流动中的数据相关,在乱序流动方式中,可能发生三种数据相关 写写相关 k: LOAD F1, A ;F1(A) 写读相关 k+1:FADD F2, F1 ;F2(F2)+(F1) k+2:F
5、MUL F1, F3 ;F1(F1)(F3) k+3:STORE F1, B ;B(F1)读写相关 (1)写读相关:指令k与指令k+1之间关于F1的相关,又称为数据相关、先写后读相关、流相关、WR相关、RAW相关等。,(2)读写相关:指令k+1与指令k+2之间关于F1的相关,变量名相关、先读后写相关、反相关、RW相关、WAR相关等。 (3)写写相关:指令k与指令k+2左边的F1之间的相关关系称为:输出相关、写写相关、WW相关、WAW相关或写后再写相关等。 有时把相关称为“冒险”(hazard)、“竟争” (competition)等。 在程序执行过程中,只有避免相关,执行结果才是正确的。,三种
6、数据相关可以用下列关系式来表示: 对于写读相关 D(i) S(j) 对于读写相关 S(i) D(j) 对于写写相关 D(i) D(j) ,5.4.3 数据重定向方法,1.三种数据相关的重定向 重定向之前,j只能在i之后执行。 重定向之后,可以做到: (1)写读相关,j与i可以同时执行 即专用数据通路 (2)写写相关,先后顺序无关 (3)读写相关,先后顺序无关 后两种情况又称为“变量换名技术”,2.变量换名技术 用来自动消除读写数据相关和写写数据相关 规则:一个变量只允许定值一次 在三种数据相关中,实际上只有写读数据相关必须依靠硬件、或采用软硬件结合的方法来解决 解决方法:推后处理或专用数据通路
7、 在上面的数据重定向图中,把B换成了B,并在以后的都引用B读写数据相关和写写数据相关就不存在了。 一个实际例子:,Loop: LD F0, 0(R1) ADD F0, F2 SD 0(R1), F0 LD F0, -8(R1) ADD F0, F2 SD -8(R1), F0 LD F0, -16(R1) ADD F0, F2 SD -16(R1), F0 LD F0, -24(R1) ADD F0, F2 SD -24(R1), F0 SUBI R1, R1, #32 BNEZ R1, Loop,Loop: LD F0, 0(R1) LD F4, -8(R1) LD F6, -16(R1)
8、LD F8, -24(R1) ADD F0,F2 ADD F4,F2 ADD F6,F2 ADD F8,F2 SD 0(R1), F0 SD -8(R1), F4 SUBI R1, R1, #32 SD -16(R1), F6 BNEZ R1, Loop SD -24(R1), F8,3.一个简单的程序: k: LOAD F1, A k+1: FADD F1, F2 k+2: FMUL F1, F3 k+3: STORE F1, B,专门设置:AFADD、FMULB、FADDFMUL三条专用路径。 撤消:F1FADD、F1FMUL、FADDF1 、AF1的路径。,5.4.4 Tomasulo动
9、态调度算法P310,实用的动态调度算法主要有两种: (1)集中控制:CDC计分牌(scorebord)算法, 最先在CDC 6600大型机中采用。 (2)分散控制:Tomasulo算法, 公共数据总线法,令牌法等。最早在大型机IBM 360/91的浮点处理部件中被采用。 以上面的一段程序为例说明Tomasulo算法 k: LOAD F1, A k+1: FADD F1, F2 k+2: FMUL F1, F3 k+3: STORE F1, B,5.5 超标量处理机,5.5.1 基本结构 5.5.2 单发射与多发射 5.5.3 多流水线调度 5.5.4 资源冲突 5.5.5 超标量处理机性能,三
10、种主流处理机: 超标量处理机 超流水线处理机 超标量超流水线处理机,5.5.1 基本结构,普通标量流水线处理机: 一条指令流水线,一个多功能操作部件, 每个时钟周期平均执行指令的条数小于1。 多操作部件标量处理机: 一条指令流水线,多个独立的操作部件, 指令级并行度小于1。 超标量处理机典型结构: 多条并行工作的指令流水线,多个独立的操作部件, 指令级并行度(ILP)大于1。,Motorola公司的MC88110 有10个操作部件 两个寄存器堆: 整数部件通用寄存器堆,32个32位寄存器 浮点部件扩展寄存器堆,32个80位寄存器 缓冲深度为4的先行读数栈 缓冲深度为3的后行写数栈 两个独立的高
11、速Cache中,各为8KB,采用两路组相联方式 转移目标指令Cache,用于存放另一条分支上的指令,5.5.2 单发射与多发射,1.单发射处理机: 每个周期只取一条指令、只译码一条指令,只执行一条指令,只写回一个运算结果。 取指令部件和指令译码部件各设置一套; 只设置一个多功能操作部件或设置多个独立的操作部件; 操作部件中可以采用流水线结构,也可以不采用流水线结构。 目标是每个时钟周期平均执行一条指令,ILP的期望值为1。,2.多发射处理机: 每个周期同时取多条指令、同时译码多条指令,同时执行多条指令,同时写回多个运算结果。 多个取指令部件,多个指令译码部件和多个写结果部件。 设置多个指令执行
12、部件,有些指令执行部件采用流水线结构。 目标是每个时钟周期平均执行多条指令,ILP的期望值大于1。,3.超标量处理机: 有两条或两条以上能同时工作的指令流水线 先行指令窗口:能够从指令Cache中预取多条指令,能够对窗口内的指令进行数据相关性分析和功能部件冲突检测。 例如:Intel公司的i860、i960、Pentium,Motolora公司的MC88110,IBM公司的Power 6000,TI公司生产SuperSPARC等 操作部件的个数一般多于每个周期发射的指令条数。通常为4 个至16个操作部件。 超标量处理机的指令级并行度:1ILPm,5.5.3 多流水线调度,顺序发射(in-ord
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精确 断点 不精确
链接地址:https://www.31doc.com/p-2574168.html