计算机系统结构第四章.ppt
《计算机系统结构第四章.ppt》由会员分享,可在线阅读,更多相关《计算机系统结构第四章.ppt(63页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 指令级并行指令级并行4.1指令级并行的概念指令级并行的概念4.2指令的动态调度指令的动态调度4.3动态分支预测技术动态分支预测技术4.4多指令流出技术多指令流出技术4.5循环展开和指令调度循环展开和指令调度4.1 指令级并行的概念指令级并行的概念n几乎所有的处理机都利用流水线来使指令重几乎所有的处理机都利用流水线来使指令重叠并行执行,以达到提高性能的目的。这种叠并行执行,以达到提高性能的目的。这种指令之间存在的潜在并行性称为指令之间存在的潜在并行性称为指令级并行。指令级并行。(ILPILP:Instruction-Level ParallelismInstruction-Leve
2、l Parallelism)n本章研究:本章研究:如何通过各种可能的技术,获得如何通过各种可能的技术,获得更多的指令级并行性。更多的指令级并行性。硬件软件技术硬件软件技术 必须要硬件技术和软件技术互相配合,才必须要硬件技术和软件技术互相配合,才能够最大限度地挖掘出程序中存在的指令能够最大限度地挖掘出程序中存在的指令级并行。级并行。4.1 指令级并行的概念指令级并行的概念n流水线处理机的实际流水线处理机的实际CPICPI理想流水线的理想流水线的CPICPI加上各类停顿的时钟周期加上各类停顿的时钟周期数:数:CPICPI流水线流水线=CPI=CPI理想理想+停顿停顿结构冲突结构冲突+停顿停顿数据冲
3、突数据冲突 +停顿停顿控制冲突控制冲突理想理想CPICPI是衡量流水线最高性能的一个指标。是衡量流水线最高性能的一个指标。通过减少右边各项,就能减小总的通过减少右边各项,就能减小总的CPICPI,从,从而提高而提高IPC。IPCIPC:Instructions Per CycleInstructions Per Cycle (每个时钟周期完成的指令条数)(每个时钟周期完成的指令条数)4.1 指令级并行的概念指令级并行的概念1.循环级并行:循环级并行:n使一个循环中的不同循环体并行执行。使一个循环中的不同循环体并行执行。n开发循环体中存在的并行性是指令级并行研开发循环体中存在的并行性是指令级并行
4、研究的重点之一究的重点之一n最基本的开发循环级并行的技术最基本的开发循环级并行的技术循环展开(循环展开(loop unrollingloop unrolling)技术)技术采用向量指令和向量数据表示采用向量指令和向量数据表示2.相关与流水线冲突相关与流水线冲突n静态指令调度静态指令调度n动态指令调度动态指令调度4.1 指令级并行的概念指令级并行的概念3.对于正确地执行程序来说,必须保持的最关键对于正确地执行程序来说,必须保持的最关键的两个属性是:的两个属性是:数据流数据流和和异常行为异常行为。n数据流数据流:指数据值从其产生者指令到其消:指数据值从其产生者指令到其消费者指令的实际流动。费者指令
5、的实际流动。n保持异常行为保持异常行为是指:无论怎么改变指令的是指:无论怎么改变指令的执行顺序,都不能改变程序中异常的发生执行顺序,都不能改变程序中异常的发生情况。情况。即原来程序中是怎么发生的,改变执行即原来程序中是怎么发生的,改变执行顺序后还是怎么发生。顺序后还是怎么发生。弱化为:指令执行顺序的改变不能导致弱化为:指令执行顺序的改变不能导致程序中发生新的异常。程序中发生新的异常。4.2 指令的动态调度指令的动态调度内容回顾:内容回顾:1.相关相关2.相关是指两条指令之间存在某种依赖关系,是程序相关是指两条指令之间存在某种依赖关系,是程序固有的一种属性。固有的一种属性。3.相关包括:名相关,
6、数据相关,控制相关。相关包括:名相关,数据相关,控制相关。2.冲突(冲突(HAZARDS,也称为冒险),也称为冒险)3.冲突是指由于相关的存在,使得指令流中的下一条冲突是指由于相关的存在,使得指令流中的下一条指令不能在指定的时钟周期执行。指令不能在指定的时钟周期执行。4.4.具体一次相关是否会导致实际冲突的发生以及该冲具体一次相关是否会导致实际冲突的发生以及该冲突会带来多长的停顿,则是流水线的属性。突会带来多长的停顿,则是流水线的属性。5.流水线冲突包括:流水线冲突包括:结构冲突,数据冲突,控制冲突结构冲突,数据冲突,控制冲突。4.2 指令的动态调度指令的动态调度3.冲突的解决冲突的解决1 1
7、)结构冲突:)结构冲突:停顿(流水线气泡)停顿(流水线气泡)2 2)数据冲突:)数据冲突:定向传送技术定向传送技术定向传送与停顿相结合定向传送与停顿相结合指令调度(依靠编译器):指令调度(依靠编译器):前提:在乱序流动的流水线中。前提:在乱序流动的流水线中。不足:可能会产生新的不足:可能会产生新的WAR或或WAW冲突。冲突。3 3)控制冲突)控制冲突:预测分支失败预测分支失败预测分支成功预测分支成功延迟转移技术延迟转移技术都是通过编译器来实现都是通过编译器来实现静态调度静态调度4.2 指令的动态调度指令的动态调度n静态调度静态调度依靠编译器对代码进行静态调度,以减依靠编译器对代码进行静态调度,
8、以减少相关和冲突。少相关和冲突。它不是在程序执行的过程中,而是在编它不是在程序执行的过程中,而是在编译期间进行代码调度和优化。译期间进行代码调度和优化。通过把相关的指令拉开距离来减少可能通过把相关的指令拉开距离来减少可能产生的停顿。产生的停顿。n动态调度动态调度在程序的执行过程中,依靠专门硬件对在程序的执行过程中,依靠专门硬件对代码进行调度,减少数据相关导致的停代码进行调度,减少数据相关导致的停顿。顿。4.2 指令的动态调度指令的动态调度一、动态调度的基本思想一、动态调度的基本思想考虑下面一段代码:考虑下面一段代码:DIV.DDIV.DF4F4,F0F0,F2F2SUB.DSUB.DF10F1
9、0,F4F4,F6 F6 ADD.DADD.DF12F12,F6F6,F14F14SUB.DSUB.D指令与指令与DIV.DDIV.D指令关于指令关于F4F4相关,导致流相关,导致流水线停顿。水线停顿。ADD.DADD.D指令与流水线中的任何指令都没有关系,指令与流水线中的任何指令都没有关系,但也因此受阻但也因此受阻。4.2 指令的动态调度指令的动态调度n在前面的基本流水线中:在前面的基本流水线中:ID检测结构冲突检测数据冲突 一旦一条指令受阻,其后的指令都将停顿。一旦一条指令受阻,其后的指令都将停顿。解决办法:解决办法:允许乱序执行允许乱序执行4.2 指令的动态调度指令的动态调度n为了允许乱
10、序执行,我们将为了允许乱序执行,我们将5 5段流水线的译码段流水线的译码阶段再分为两个阶段:阶段再分为两个阶段:流出流出(IssueIssue,ISIS):指令译码,检查是否):指令译码,检查是否存在结构冲突。存在结构冲突。(in-order issuein-order issue)读操作数读操作数(Read OperandsRead Operands,RORO):等待数):等待数据冲突消失,然后读操作数。据冲突消失,然后读操作数。(out of order executionout of order execution)ISRO检测结构冲突检测数据冲突4.2 指令的动态调度指令的动态调度n有
11、的代码在采用乱序执行后可能会发生有的代码在采用乱序执行后可能会发生WARWAR冲突冲突和和WAWWAW冲突。冲突。n例如,考虑下面的代码例如,考虑下面的代码 DIV.D DIV.D F4F4,F0,F2,F0,F2 SUB.D SUB.D F10F10,F4F4,F6F6 ADD.D ADD.D F6F6,F8,F14 F8,F14 DIV.D DIV.D F10F10,F1,F3,F1,F3存在反相关存在反相关存在输出相关存在输出相关存在数据相关存在数据相关SUB.D SUB.D F10F10,F4F4,F6F6WARWAR冲突冲突WAWWAW冲突冲突TomasuloTomasulo算法算法
12、可以通过使用寄存器重命名来消除。可以通过使用寄存器重命名来消除。4.2 指令的动态调度指令的动态调度二、二、Tomasulo算法算法1.1.基本思想基本思想n核心思想:核心思想:记录和检测指令相关,操作数一旦就绪就记录和检测指令相关,操作数一旦就绪就立即执行,把发生立即执行,把发生RAWRAW冲突冲突的可能性减少到的可能性减少到最小;最小;通过寄存器换名来消除通过寄存器换名来消除WARWAR冲突冲突和和WAWWAW冲突冲突。4.2 指令的动态调度指令的动态调度nIBM 360/91IBM 360/91首先采用了首先采用了TomasuloTomasulo算法。算法。IBM 360/91IBM 3
13、60/91的设计目标是基于整个的设计目标是基于整个360360系列系列的统一指令集和编译器来实现高性能,而的统一指令集和编译器来实现高性能,而不是设计和利用专用的编译器来提高性能。不是设计和利用专用的编译器来提高性能。需要更多地依赖于硬件。需要更多地依赖于硬件。IBM 360IBM 360体系结构只有体系结构只有4 4个双精度浮点寄存个双精度浮点寄存器,限制了编译器调度的有效性。器,限制了编译器调度的有效性。360/91360/91的访存时间和浮点计算时间都很长。的访存时间和浮点计算时间都很长。(也是(也是TomasuloTomasulo算法要解决的问题)算法要解决的问题)4.2 指令的动态调
14、度指令的动态调度n寄存器换名寄存器换名可以消除可以消除WARWAR冲突和冲突和WAWWAW冲突。冲突。考虑之前的代码:考虑之前的代码:DIV.D DIV.D F4F4,F0,F2,F0,F2 SUB.D SUB.D F10F10,F4F4,F6F6 ADD.D ADD.D F6F6,F8,F14 F8,F14 DIV.D DIV.D F10F10,F1,F3,F1,F3存在反相关存在反相关F6F6存在输出相关存在输出相关F10F10存在数据相关存在数据相关F4F4消除名相关:消除名相关:引入两个临时寄存器引入两个临时寄存器S和和T,分别,分别将第一个将第一个F10换成换成S,将后一个,将后一个
15、F6换成换成T。S,T,n基于基于TomasuloTomasulo算法的算法的MIPSMIPS处理器浮点部件的处理器浮点部件的基本结构基本结构1 1)保留站(保留站(reservation stationreservation station)每个保留站中保存一条已经流出并等待到本每个保留站中保存一条已经流出并等待到本功能部件执行的指令(相关信息)。功能部件执行的指令(相关信息)。包括:包括:操作码、操作数以及用于检测和解决操作码、操作数以及用于检测和解决冲突的信息。冲突的信息。在一条指令流出到保留站的时候,如果该在一条指令流出到保留站的时候,如果该指令的源操作数已经在寄存器中就绪,则将指令的
16、源操作数已经在寄存器中就绪,则将之取到该保留站中。之取到该保留站中。如果操作数还没有计算出来,则在该保留如果操作数还没有计算出来,则在该保留站中记录将产生这个操作数的保留站的标识。站中记录将产生这个操作数的保留站的标识。浮点加法器有浮点加法器有3 3个保留站:个保留站:ADD1ADD1,ADD2ADD2,ADD3ADD3浮点乘法器有浮点乘法器有两两个保留站:个保留站:MULT1MULT1,MULT2MULT2 每个保留站都有一个标识字段,唯一地标每个保留站都有一个标识字段,唯一地标识了该保留站。识了该保留站。2 2)公共数据总线公共数据总线CDB CDB 所有功能部件的计算结果都是送到所有功能
17、部件的计算结果都是送到CDBCDB上,由它把这些上,由它把这些结果直接送到(播送到)各个需要该结果的地方。结果直接送到(播送到)各个需要该结果的地方。3 3)loadload缓冲器和缓冲器和storestore缓冲器缓冲器 存放读存放读/写存储器的数据或地址写存储器的数据或地址 4 4)浮点寄存器)浮点寄存器FPFP共有共有1616个浮点寄存器:个浮点寄存器:F0F0,F2F2,F4F4,F30F30。它们通过一对总线连接到功能部件,并通过它们通过一对总线连接到功能部件,并通过CDBCDB连连接到接到storestore缓冲器缓冲器。5)指令队列)指令队列指令部件送来的指令放入指令队列指令部件
18、送来的指令放入指令队列指令队列中的指令按先进先出的顺序流出指令队列中的指令按先进先出的顺序流出6)运算部件)运算部件浮点加法器完成加法和减法操作浮点加法器完成加法和减法操作浮点乘法器完成乘法和除法操作浮点乘法器完成乘法和除法操作4.2 指令的动态调度指令的动态调度n在在TomasuloTomasulo算法中,寄存器换名是通过保留算法中,寄存器换名是通过保留站和流出逻辑来共同完成的。站和流出逻辑来共同完成的。当指令流出时,如果其操作数还没有计算当指令流出时,如果其操作数还没有计算出来,则将该指令中相应的寄存器号出来,则将该指令中相应的寄存器号换名换名为将产生这个操作数的保留站的标识为将产生这个操
19、作数的保留站的标识。指令流出到保留站后,其操作数寄存器号指令流出到保留站后,其操作数寄存器号或者换成了数据本身(如果该数据已经就或者换成了数据本身(如果该数据已经就绪),或者换成了保留站的标识,绪),或者换成了保留站的标识,不再与不再与寄存器有关系。寄存器有关系。MUL MUL FOFO,F2,F4,F2,F4ADD F2,ADD F2,F0F0,F6F6SUB SUB F6F6,F8,F4,F8,F4F8F8F6F6F4F4F2F2C CB BA AADD1ADD1MUL1MUL1MUL2MUL2ADD2ADD2ADD3ADD3ADD F2,ADD F2,F0F0,F6,F6MUL MUL
20、FOFO,F2,F4,F2,F4QiF0F0D DSUB SUB F6,F8,F4F6,F8,F4MUL MUL FOFO,F2,F4,F2,F4ADD F2,ADD F2,F0F0,F6F6SUB SUB F6F6,F8,F4,F8,F4MUL A,BMUL A,BADD F2,F0,F6ADD F2,F0,F6F8F8F6F6F4F4F2F2D DC CB BADD1ADD1MUL1MUL1MUL2MUL2ADD2ADD2ADD3ADD3QiSUB SUB F6,F8,F4F6,F8,F4F0F0A AMUL1MUL1MUL MUL FOFO,F2,F4,F2,F4ADD F2,ADD F
21、2,F0F0,F6F6SUB SUB F6F6,F8,F4,F8,F4MUL A,BMUL A,BADD MUL1,CADD MUL1,CF8F8F6F6F4F4F2F2D DC CB BADD1ADD1MUL1MUL1MUL2MUL2ADD2ADD2ADD3ADD3MUL1MUL1ADD1ADD1QiF0F0A ASUB D,BSUB D,BADD2ADD2SUB SUB F6,F8,F4F6,F8,F4MUL MUL FOFO,F2,F4,F2,F4ADD F2,ADD F2,F0F0,F6F6SUB SUB F6F6,F8,F4,F8,F4MUL A,BMUL A,BADD MUL1,C
22、ADD MUL1,CF8F8F6F6F4F4F2F2D DC CB BADD1ADD1MUL1MUL1MUL2MUL2ADD2ADD2ADD3ADD3MUL1MUL1ADD1ADD1QiF0F0A ASUB D,BSUB D,BADD2ADD2E EADD E,CADD E,C4.2 指令的动态调度指令的动态调度nTomasuloTomasulo算法具有以下算法具有以下两个特点:两个特点:1 1)冲突检测和指令执行控制是分布的。)冲突检测和指令执行控制是分布的。每个功能部件的保留站中的信息决定了每个功能部件的保留站中的信息决定了什么时候指令可以在该功能部件开始执什么时候指令可以在该功能部件开始
23、执行行。2 2)计算结果通过计算结果通过CDBCDB直接从产生它的保留站直接从产生它的保留站传送到所有需要它的功能部件,而不用经传送到所有需要它的功能部件,而不用经过寄存器。过寄存器。4.2 指令的动态调度指令的动态调度2.2.指令执行的步骤指令执行的步骤使用使用TomasuloTomasulo算法的流水线需算法的流水线需3 3段:段:1 1)流出:从指令队列的头部取一条指令。流出:从指令队列的头部取一条指令。如果没有空闲的保留站,指令就不能流出。如果没有空闲的保留站,指令就不能流出。(发生了结构冲突)(发生了结构冲突)如果该指令的操作所要求的保留站有空闲的,如果该指令的操作所要求的保留站有空
24、闲的,就把该指令送到该保留站。就把该指令送到该保留站。(寄存器换名和对操作数进行缓冲,消除(寄存器换名和对操作数进行缓冲,消除WARWAR冲突)冲突)完成对目标寄存器的预约工作完成对目标寄存器的预约工作(消除了(消除了WAWWAW冲突)冲突)4.2 指令的动态调度指令的动态调度2)执行)执行 当两个操作数都就绪后,本保留站就当两个操作数都就绪后,本保留站就用相应的功能部件开始执行指令规定用相应的功能部件开始执行指令规定的操作。的操作。(消除了(消除了R RAWAW冲突)冲突)3)写结果)写结果 功能部件计算完毕后,就将计算结果功能部件计算完毕后,就将计算结果放到放到CDBCDB上,所有等待该计
25、算结果的上,所有等待该计算结果的寄存器和保留站(包括寄存器和保留站(包括storestore缓冲器)缓冲器)都同时从都同时从CDBCDB上获得所需要的数据。上获得所需要的数据。3.Tomasulo3.Tomasulo算法举例算法举例 每个保留站有以下每个保留站有以下6 6个字段:(个字段:(P121 P121 图图4.24.2)BusyBusy:为为“yesyes”表示本保留站或缓冲单元表示本保留站或缓冲单元“忙忙”。OpOp:要对源操作数进行的操作。要对源操作数进行的操作。VjVj,VkVk:源操作数的值。源操作数的值。QjQj,QkQk:将产生源操作数的保留站号。将产生源操作数的保留站号。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机系统 结构 第四
限制150内