2017第4章指令级并行及限制.pptxVIP

  • 2
  • 0
  • 约1.63千字
  • 约 92页
  • 2021-12-08 发布于北京
  • 举报
第四章 指令级并行及限制;4.1 指令级并行的限制因素;3;4;5;指令i与指令j之间的关系除了数据冒险之外,还可能有以下两种: (1)读后写:指令i先执行,指令j写的名是指令i读的名。反相关指令间的顺序是必须保证的。 (2)写后写:指令j和指令i写相同的名。输出相关指令的执行顺序是不能颠倒的。。; 与数据相关比较,名相关的指令间没有数据交换。如果一条指令中的名改变了,并不影响另外一条指令的执行。因此,可以通过改变指令中操作数的名字来消除名相关,这就是换名技术。 对??存器操作数进行换名称为寄存器换名。这个过程可以用编译器静态完成,也可以用硬件动态完成。;8;9;10;11;12;产生结果指令;14;15;产生结果指令;17;18;19;20;21;产生结果指令;23;24;25; 第四章 指令级并行及限制; 在第三章的模型机中,如果流水线的指令在ID级检测到没有相关,或者与前面指令有数据相关但可以通过相关专用通路消除相关(相关隐藏),则指令就可以正常流出。如果相关不能消除,则暂停流水线,直到相关消除,这时流水线就会出现停顿或空转。 为了减少或消除空转,首先需要编译器确定程序中存在的相关指令,然后进行指令调度和优化,这个过程称为静态调度。(静态调度在20世纪60年代有并行机时出现,在其后的阵列机、向量机、RISC早期深入研究和广泛应用,后面讨论的VLIW处理器中几乎完全依靠静态调度提高指令级并行) ;静态调度 依靠编译器对代码进行静态调度,以减少相关和冲突。 它不是在程序执行的过程中、而是在编译期间进行代码调度和优化。 通过把相关的指令拉开距离来减少可能产生的停顿。 动态调度 在程序的执行过程中,依靠专门硬件重新安排指令的执行顺序,来调整相关指令实际执行时的关系,减少数据相关导致的停顿。可以处理编译时未发现的相关如存储器数据相关。 ;29;30;31;32;33;34;35;36;37;38;39;40;41;42;43;44;45;46;47;48;49;50;51;52;53;54;55; 记分牌技术允许在资源充足时乱序执行。对于数据相关、名相关,通过检测后延迟相关指令的执行解决相关。由于乱序执行引起的名相关会增多,因此写后写与先读后写导致的阻塞也会更严重。那有没有更好的算法?或者如果说记分牌技术有不足,那么不足在哪里,应该如何改进?;57;58;59;60;61;62;63;64;65;66; 指 令;对比记分牌算法:;名 称; 域;71; 指 令;73;名 称; 域; ;假定循环程序已经发射了两个循环体的指令,只是还没有Load、Store或其他操作已经执行完成。系统达到这个状态之后,就可以保持CPI接近于1.0的速率,始终有2个循环体在流水线中运行。 ; 除了寄存器换名, Tomasulo算法与记分牌在结构上有2处明显不同:;79;80;81;82;83;84;85;86;87;88;A. 一条指令流出(进入Issue阶段)后,它目的寄存器的Qi域置保留站/缓冲号。如果操作数就绪,就存入保留站对应的V域,否则在Q域存产生该操作数的保留站号。 B. 指令在保留站一直等到二个操作数就绪即Q域为0,就进入执行段。 C. 执行后且获CDB使用权,进入写结果段。 所有保留站、缓冲、寄存器的Qj或Qk与该指令保留站号相同的指令,都从CDB读取数据并将其Q域置0,如果这些指令的二个操作数就绪,在下一个周期就全部开始执行。 ; 总之,动态调度的硬件代价较大,对于浮点运算其执行时间较长,采用动态调度可以有效提高程序执行的效率。但是如果处理器主要是执行简单的短周期指令,则采用静态调度性价比更高。;作业:;92

文档评论(0)

1亿VIP精品文档

相关文档