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