1、第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4章章 流水线计算机设计技术流水线计算机设计技术 4.1 重叠解释方式和相关处理重叠解释方式和相关处理 4.2 流水线的工作原理流水线的工作原理 4.3 流水线的特点流水线的特点 4.4 流水线的分类流水线的分类 4.5 线性流水线性能分析线性流水线性能分析 4.6 线性流水线性能分析举例线性流水线性能分析举例 4.7 非线性流水线的基本概念非线性流水线的基本概念第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.8 相关处理和控制机构相关处理和控制机构 4.9 先进的流水技术先进的流水技术动态调度动态调度4.10 超标量
2、处理机和超标量处理机和VLIW体系结构体系结构4.11 超流水处理机超流水处理机 4.12 超标量超流水处理机超标量超流水处理机 习题习题4 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.1 重叠解释方式和相关处理重叠解释方式和相关处理 4.1.1 重叠解释方式的提出 解释一条机器指令的那些微操作可分解成取指令、分析指令与执行指令,从时间上看如图4.1所示。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 取指令指的是按指令计数器的内容访问主存,取出该指令送到指令寄存器。指令的分析指的是对指令的操作码进行译码,按
3、寻址方式和地址字段形成操作数的有效地址,并用此有效地址去取操作数(可能访主存,也可能访寄存器),还要为准备取下一条指令提前形成下一条指令的地址等。指令的执行则指的是对操作数进行运算、处理,或存储运算结果(可能要访主存)。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 指令的解释方式可以有顺序解释方式和重叠解释方式。指令的顺序解释方式是指各条机器指令之间顺序串行地执行,执行完一条指令后才取出下一条指令来执行,而且每条机器指令内部的各条微指令也是顺序串行地执行,如图4.2所示。顺序执行的优点是控制简单。由于下一条指令的地址是在指令解释过程的末尾形成的,因此无论是由指令计数器加1,还是由转
4、移指令把转移地址送到指令地址计数器,形成下一条指令的地址,由本条指令转入下一条指令的时间关系都是一样的。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 但由于是顺序执行的,上一步操作未完成,下一步操作就不能开始。因此,带来的主要缺点是速度慢,机器各部件的利用率很低。例如,在取指令和取操作数期间,主存储器是忙碌的,但是运算器处于空闲状态。在对操作数执行运算期间,运算器是忙碌的,而主存却是空闲的。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 指令的另一种解释方式是重叠解释方式,在解释第k条指令的操作完成之前,就可开始解
5、释第k+1条指令。显然,重叠解释并不能加快一条指令的实现,但能加快相邻两条以至一段程序的解释。图4.3给出了指令的重叠解释的方式。至于中央处理机、存储器和输入输出设备之间的重叠操作,也是一种重叠方式,是实现I/O指令与其它指令的重叠。在一般的机器上,操作数和指令是混合存贮于同一主存内的,而且主存同时只能访问一个存贮单元。从图4.3可以看出,重叠解释方式需要“取指k+1”与“分析k”在时间上重叠,显然,对于一般机器,取指需要访问主存,分析中取操作数也可能访问主存。如果不在硬件上花费一定的代价解决好访主存的冲突,就无法实现“取指k+1”与“分析k”的重叠。第第4 4章章 流水线计算机设计技术流水线
6、计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 为实现“取指k+1”与“分析k”的重叠对计算机组成有如下要求:(1)让操作数和指令分别存放于两个独立编址且可同时访问的存储器中;这还有利于实现指令的保护,但这增加了主存总线控制的复杂性及软件设计的麻烦。(2)仍然维持指令和操作数混存,但采用多体交叉主存结构;只要第k条指令的操作数与第k+1条指令不在同一个存储体内,仍可在一个主存周期(或稍许多一些时间)内取得这两者,从而实现“分析k”与“取指k+1”重叠。当然,若这两者正好共存于一个体时就无法重叠。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (3)增设指令缓
7、冲寄存器。设置指令缓冲寄存器就可以乘主存有空时,预先把下一条或下几条指令取出来存放在指令缓冲寄存器中。最多可预取多少条指令取决于指令缓冲寄存器的容量。这样,“分析k”就能与“取指k+1”重叠,因为只是前者需访主存取操作数,而后者是从指缓取第k+1条指令。只要每次取指都可从指缓中得到,则“取指k+1”的时间很短,完全可以把这个微操作合并到“分析k+1”内,从而由原来的取指、分析、执行重叠演变成只需“执行k”与“分析k+1”的一次重叠,如图4.4所示。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.2 流水线的工作原理流水线的
8、工作原理 如果CPU用一次重叠方式解释指令仍达不到所要求的速度性能时,可以考虑同时解释多条指令。其中最常用的是流水方式,它是通过并行硬件来改善性能的最普通的手段。在60年代,硬件的价格相对较高,流水线计算机都是巨型机。IBM的STRETCH和CDC的6600就是60年代早期大量应用流水线的两种机器,它们对后来巨型机的结构产生了深刻的影响。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 计算机的流水技术是如何工作的呢?流水技术的基本思想在冯诺依曼的第一台存储程序计算机中已经提出。流水技术早已应用于社会生产与活动的各个方面,并不是计算机所特有的。其主要特点是在一个任务完成以前就可以开始一
9、个新的任务。先看一次重叠的情况,“执行k”与“分析k+1”的一次重叠是把一条指令的解释过程分解成“分析”与“执行”两个子过程,分别在独立的分析部件和执行部件上进行。因此,不必等一条指令的“分析”、“执行”子过程都完成才送入下条指令,而是分析部件在完成一条指令的“分析”子过程时,就可开始下一条指令的“分析”子过程。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 若“分析”与“执行”子过程都需要t的时间,如图4.15所示,就一条指令的解释来看,需要2t才能完成,但从机器的输出来看,每隔t就能完成一条指令的解释。也就意味着,一次重叠
10、解释比起指令的串行解释,可使机器的最大吞吐率提高一倍。这里的最大吞吐率是指当流水线正常满负荷工作时,单位时间内机器所能处理的最多指令条数或机器能输出的最多结果数。若将指令的分析和执行部分进一步细分成一些子过程,并改进相应硬件的结构,使得子过程分别由独立的子部件实现,形成流水处理的方式,其最大吞吐率可进一步提高,如图4.16的流水处理过程和相应的时-空图。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 如图4.16(a)所示,把“分析”子过程再细分成“取指令”、“指令译码”和“取操作数”3个子过程,并改进运算器的结构以加快其“执行”子过程,这4个子过程分别由独立的子部件实现,让经过各子
11、部件的时间都相同,用t1表示,则指令解释的时间-空间关系如图4.16(b)所示。一条指令从进入流水线到结果流出需经历“取指令”、“指令译码”、“取操作数”和“执行”4个子过程,每个子过程需要t1的时间,一条指令的解释需要4t1的时间完成。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 当第1条指令完成“取指令”子过程时,就可以开始第2条指令的“取指令”子过程;当第1条指令完成“指令译码”子过程而进入“取操作数”子过程时,可以开始第2条指令的“指令译码”子过程,同时,第2条指令的“取指令”子过程结束,可以开始第3条指令的“取指令
12、”子过程;依此类推,当第1条指令进入“执行”子过程时,第2条指令可进入“取操作数”子过程,第3条指令可进入“指令译码”子过程,第4条指令可进入“取指令”子过程。显然,图4.16(b)中的流水线可同时解释4条指令。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 如果完成一条指令的时间为T,则对于分解为“分析”和“执行”两个子过程的,其T=2t,而对于分解为“取指令”、“指令译码”、“取操作数”和“执行”4个子过程的,其T=4t1。这样,虽然完成一条指令所需时间仍是T,对于顺序解释方式,每隔T由处理机“流出”一个结果;但对图4.15的重叠方式是每隔T/2(即每隔t)就可由处理机“流出”一
13、个结果,吞吐率提高了一倍;而对图4.16的流水方式是每隔T/4(即每隔t1)“流出”一个结果,即吞吐率比顺序方式提高了三倍。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 “流水”在概念上与“重叠”没有什么差别,可以看成是“重叠”的进一步引伸。两者的差别只在于“一次重叠”只是把一条指令的解释分解为两个子过程,而“流水”则是分解成更多个子过程。前者同时解释两条指令,后者可同时解释多条指令。例如图4.16的流水处理过程可同时解释4条指令。如果能把一条指令的解释分解成时间相等的N个子过程,则每隔t=T/N就可以处理一条指令。如图4.17所示,这意味着,流水线的最大吞吐率是取决于子过程所经过
14、的时间t,t越小,流水线的最大吞吐率就越高。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 如果流入流水线的指令数为6,则从第1条指令流入,到第6条指令的结果流出,所需要的时间为(Nt+5t)。如果流入流水线的指令数是X,则从第1个指令流入,到第X条指令的结果流出,所需要的时间为 (Nt+(X-1)t)。设流水线对一条指令的解释可以细分为n个子过程,每个子过程处理的时间均为t,若有m条指令进入该流水线,则从第1条指令流入,到第m条指令的结果流出所需要的时间定义为Tm,则有:tmntmtnTm)1()1(第第4 4章章 流水线计
15、算机设计技术流水线计算机设计技术 从第1条指令流入流水线开始,到最后一个结果流出的这一段时间内,每隔t流出一个结果。应该注意的是,只有当流水线正常满负荷流动时,才会每隔t流出一个结果。流水线从开始启动工作到流出第一个结果,需要经过一段流水线的建立时间,在这段时间里流水线并没流出任何结果。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 在计算机实际的流水线中,各子部件经过的时间会有差异。为解决这些子部件处理速度的差异,一般在子部件之间需设置高速接口锁存器。所有锁存器都受同一时钟信号控制来实现各子部件信息流的同步推进。时钟信号周期不得低于速度最慢子部件的经过时间与锁存器的存取时间之和,还
16、要考虑时钟信号到各锁存器可能存在时延差。所以,子过程的细分,会因锁存器数增多而增大指令或指令流过流水线的时间,这在一定程度上会抵消子过程细分而使流水线吞吐率得到提高的好处。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.3 流水线的特点流水线的特点 在流水技术中,一般有如下特点:一条流水线通常由多个流水段组成;各个流水段分别承担不同的工作,也可以把这些流水段看作功能部件。在实际机器中,一条流水线的功能部件按完成的任务及采用的设计思想不同,其数目也各不相同。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 例如,80486、Pentium的流水线设计为5段,Pentium
17、III的流水线设计为10段,Pentium IV的流水线达到了20段;DEC的Alpha 21064处理机共有三条指令流水线,整数操作流水线和访问存储器流水线分为7个流水段,而浮点操作流水线分为10个流水段。每个流水段有专门的功能部件对指令进行某种加工;例如,80486的流水线分为5段,分别为“取指令”、“译码段1”、“译码段2”、“执行”和“写回”。在译码段1完成所有的操作码和寻址方式的译码工作。而在译码段2则将每个操作码扩展成对ALU的控制信号。在执行段则要完成ALU运算、Cache访问和寄存器修改。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 流水线工作阶段可分为建立、满载和
18、排空三个阶段。从第一个任务进入流水线到流水线所有的部件都处于工作状态的这一个时期,称为流水线的建立阶段。当所有部件都处于工作状态时,称为流水线的满载阶段。从最后一条指令流入流水线到结果流出,称为流水线的排空阶段。在理想情况下,当流水线充满后,每隔t时间将会有一个结果流出流水线。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.4 流水线的分类流水线的分类 从不同的角度,可对流水线进行不同的分类。4.4.1 根据向下扩展和向上扩展的思想分类 依据向下扩展和向上扩展的思想,可分类出在计算机系统不同等级上使用的流水线。向下扩展是指把子过程进一步向下细分,让每个子过程经过的时间都同等程度地
19、减少,吞吐率就会进一步提高。如把图4.15中的“分析”子过程细分为“取指令”、“指令译码”和“取操作数”3个子过程。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 在机器中“执行”子过程会因指令不同,执行时间不同,而使细分的情形不同。如浮点加法可进一步细分成为“求阶差”、“对阶”、“尾数相加”和“规格化”4个子过程,如图4.18所示。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 子过程的进一步细分是以增加设备为代价的。例如,“求阶差”和“尾数相加”都要用到加法器,为此需要分别设置阶码加法器和尾数加法器。“对阶”和“
20、规格化”都要用到移位也就需要分别设置两套移位器。设备的增加不仅会使成本增加,也使控制变得复杂。但它比起完全靠重复设置多套分析部件和执行部件来提高指令并行性,其设备量的增加毕竟要少得多。子过程细分并不是无止境的,因为级间缓冲器数的增多,使成本提高,辅助延时增大,控制复杂,电路设计和实现困难等,抵消了子过程细分带来的好处。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 Pentium III的流水线设计为10段,AMD Athlon的流水线有11段,Pentium IV的流水线达到了20段,Pentium IV的Willamette版本在运行一些测试程序时,其性能比相同时钟频率Penti
21、um III及AMD Athlon要低10%20%。但是子过程的细分可以在相同设计条件和生产工艺下提高芯片的时钟频率,Pentium III处理器拥有10级的流水线设计,其频率很难超过1GHz;而Pentium IV处理器采用了20级的流水线,其频率已经突破3GHz。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 向上扩展向上扩展可理解为在多个处理机之间进行流水。如图4.19所示。多个处理机串行地对数据集进行处理,某个处理机专门完成其中的一个任务。因为各个处理机都在同时工作,所以能对多个不同的数据集流水地处理,使计算机系统处理能力有较大的提高。第第4 4章章 流水线计算机设计技术流水
22、线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 综上所述,按流水处理的级别不同,可以把流水线分为部件级、处理机级和系统级的流水。部件级流水是指构成部件内的各个子部件之间的流水,如运算器内浮点加法流水线及Cache和多体交叉主存的流水。处理机级流水是指构成处理机的各个部件的流水,如“取指”、“分析”、“执行”间的流水。系统级流水是指构成计算机系统的多个处理机之间的流水,也称为宏流水。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.8 相关处理和控制机构相关处理和控制机构 流水线只有连续不断地流动,即不出现“断流”,才能获得高效率。造成流水线“断流”的原因
23、很多,有编译程序形成的目标程序不能发挥流水结构的作用,存储系统供不上为连续流动所需的指令和操作数,转移(无条件转移、条件转移)指令的使用,相关(指令相关、主存操作数相关和通用/变址寄存器组操作数相关)和中断的出现等。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 指令相关、主存操作数相关和通用/变址寄存器组操作数相关由于只影响相关的二条或几条指令,而至多影响流水线某些段的推后工作,并不会改动指令缓冲器中预取到的指令内容,影响是局部的,所以被称之为局部性相关。转移指令和其后的指令之间存在关联,使之不能同时解释,其造成的对流水机器的吞吐率和效率下降的影响要比指令相关、主存操作数相关和通用
24、/变址寄存器操作数相关严重得多,它可能会造成流水线中很多已被解释的指令作废,重新预取指令进入指令缓冲寄存器,它将影响整个程序的执行顺序,所以称之为全局性相关。局部相关与全局相关局部相关与全局相关第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.8.1 局部性相关的处理 局部性相关包括指令相关、访存操作数相关和通用/变址寄存器组操作数相关等,都是由于在机器同时解释的多条指令之间出现了对同一个单元(包括主存单元和通用寄存器)的“先写后读”要求。处理这些局部性相关时有两种办法:一种办法是推后对相关单元的读,直至写入完成;另一种办法是设置相关专用通路,使得不必先把运算结果写入相关存储单元,
25、再由它读出后才能使用,而是经相关专用通路直接使用运算结果,这样,就可省去“写入”和“读出”两个访问周期。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 顺序流动方式是指流水线输出端的任务(指令)流出顺序和输入端的流入顺序一样。如图4.34所示,有一个8段的流水线,其中第2段为读段,第7段为写段。有一串指令h、i、j、k、l、m、依次流入,当指令j的源操作数地址与指令h的目的操作数地址相同时,h和j就发生了先写后读的操作数相关。顺序流动方式时,就要求j流到读段时必须停下来等待,直到h到达写段并完成写入后,才能继续向前流动,否则j将会因读出的不是h写入后的内容而造成错误。对流水的流动顺序
26、的安排和控制可以有两种方式:顺序流动方式和异步流动方式顺序流动方式和异步流动方式。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 这是一种推后对相关单元读的办法,由于j停下来,j之后的指令也被迫停下来。顺序流动方式的优点是控制比较简单。例如TI-ASC机就采用了这种方式。其缺点是一旦相关后,在空间和时间上都会有损失,使得流水线的吞吐率和功能部件的利用率降低。空间上会有功能段空闲出来,使部件利用率(效率)降低,时间上推后流出,会使流水线吞吐率降低。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 异步流动方式是指流水线输
27、出端的任务(指令)流出顺序和输入端的流入顺序可以不一样。异步流动方式的优点是流水线的吞吐率和功能部件的利用率都不会下降。如图4.34的“可以不顺序流动的”那行所示的指令在流水线内的流动顺序,如果让j之后的那些指令,如k、l、m、n等,只要与j没有相关,就越过j继续向前流动。但采用异步流动方式带来了新的问题,采用异步流动的控制复杂,而且会发生在顺序流动中不会出现的其它相关。由于异步流动要改变指令的执行顺序,同时流水线的异步流动还会使相关情况复杂化,出现除“先写后读”相关外的“写-写”相关、“先读后写”相关等。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 例如,若指令i、k都有写操作,
28、而且是写入同一单元,那该单元的最后内容本应是指令k的写入结果。但是,由于指令i执行时间很长或有“先写后读”相关,就会出现指令k先于指令i到达“写段”,从而使得该单元的最后内容错为指令i的写入结果。我们称这种对同一单元,要求在先的指令先写入,在后的指令后写入的关联为“写-写”相关。采用异步流动时,应在控制机构上保证当发生“写-写”相关后写入的先后顺序不变。另外,若指令i的读操作和指令k的写操作是对应于同一单元,指令i读出的本应是该单元的原存内容。但若指令k越过指令i向前流,且其写操作在指令i的读操作开始前完成,那指令i就会错误地读出了指令k的写入结果。我们称这种对同一单元,要求在先的指令先读出,
29、在后的指令才写入的关联为“先读后写”相关。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 显然,“写-写”相关和“先读后写”相关都只有在异步流动时才有可能发生,顺序流动时是不可能发生的。所以,在设计采用异步流动方式工作时,控制机构应能处理好这3种关系。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.8.2 全局性相关的处理 全局性相关指的是已进入流水线的转移指令(尤其是条件转移指令)和其后面的指令之间的相关。下面介绍一些常用的处理方法。1.分支预测技术 若指令i是条件转移指令,它有两个分支,如图4.35所示。一个分支是i+1、i+2、i+3、,按原来的顺序继续执行下去,
30、称转移不成功分支,另一个分支是转向p,然后继续执行p+1、p+2、,称为转移成功分支。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 流水方式是同时解释多条指令,因此,当指令i 进入流水线,后面进i+1还是进p,只有等条件码建立才能知道,而这一般要等该条件转移指令快流出流水线时才行。如果在此期间让i之后的指令等着,流水线就会“断流”,性能将会急剧下降。为了在遇到条件转移指令后,流水线仍能继续向前流动,不使吞吐率和效率下降,绝大多数机器都采用所谓的“猜测法”,即分支预测技术。猜取第i+1条指令和第p条指令所在分支中的一个继续向前流动。第第4 4章章 流水线计算机设计技术流水线计算机设计
31、技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 分支预测技术可以分为静态分支预测和动态分支预测,这里我们讨论静态分支预测技术,可以有两种实现方法。一种是分析程序结构本身的特点或使用该程序以前运行时收集的模拟信息。不少条件转移两个分支的出现概率是能够预估的,只要程序设计者或编译程序把出现概率高的分支安排为猜选分支,就能显著减少由于处理条件转移所带来的流水线吞吐率和效率的损失。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 另一种是按照分支的方向来预测分支是否转移成功,当两者概率差不多时,一般选取不成功转移分支。因为这些指令一般已预取进指令缓冲器,可以很快从指令缓冲器取出
32、,进入流入线而不必等待。如果猜选成功转移分支,指令p很可能不在指令缓冲器中,需花较长时间去访存取得,使流水线实际上断流。例如IBM360/91就采用转移不成功分支。但这两种方法猜错的概率都不会低于30%。要提高预测的准确度,可以采用动态预测的方法,在硬件上建立分支预测缓冲站及分支目标缓冲站,根据执行过程中转移的历史记录来动态的预测转移选择,其预测准确度可以提高到90%左右。这种方法在POWER PC 620的分支预测中得到了采用。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 显然,采用猜测法的控制机构应能保证在猜错时可返回到分支点之前,并能把沿猜测分支流水时的指令的已有解释全部作废
33、,并恢复分支点处的原有现场。恢复已经开始解释的那些指令的原有现场有如下三种方法:一是对猜测指令的解释只完成译码和准备好操作数,在转移条件码出现前不执行运算;二是对猜测指令的解释可完成到运算完毕,但不送回运算结果;然而早期所用的这两种办法不方便,因为若猜对后还要让这些指令继续完成余留的操作。随着器件技术的发展,已经可以让它们和正常情况一样,不加区别地全部解释完。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 三是对在流水线中的猜测指令不加区别地全部解释完,但需把可能被破坏的原始状态都用后援寄存器保存起来,一旦猜错就取出后援寄存器的内容来恢复分支点的现场。一般猜对的概率要高,猜对后既不用
34、恢复,也不用再花时间去完成余留的操作。因此,采用后援寄存器法比前两种方法的实现效率会更高一些。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 2.加快和提前形成条件码 尽快、尽早获得条件码以便提前知道流向哪个分支,是会有利于流水机器简化对条件转移的处理的。这可以从两方面采取措施:(1)加快单条指令内部条件码的形成,这特别适合于转移条件码是由上一条运算型指令产生的情形。由于一条运算型指令在其执行完毕之前,就能形成反映运算结果的部分条件码,如零标志、符号标志等,因此可以在取得操作数之后、开始运算之前形成条件码。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (2)在一段程序内提
35、前形成条件码,这特别适合于循环程序在判断循环是否结束时的转移情况。如下8088汇编语言程序段中指令“JNE L”要判断的条件(通过指令“DEC CX”指令生成的)可提前形成。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 LEA SI,A LEA SI,A LEA DI,B LEA DI,B MOV CX,10 MOV CX,10 L:MOV AX,SI L:DEC CX MOV DI,AX MOV AX,SI INC SI MOV DI,AX INC SI INC SI INC DI INC SI INC DI INC DI DEC CX INC DI JNE L JNE L第第4
36、 4章章 流水线计算机设计技术流水线计算机设计技术 3.加快短循环程序的处理 由于程序中广泛采用循环结构,流水机器多数采取特殊措施以加快循环程序的处理,具体有以下两种:(1)首尾联接;由于返回到循环程序本身的概率要比转到另一个程序的概率高得多,因此对循环程序出口端的条件转移指令,若按通常方法处理,那么就会出现如前所述的断流现象。采用首尾联接就是为了尽可能使指令缓冲器或指令堆栈内的这种循环程序连接流动,连续解释。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (2)“向后8条”检查。将整个循环程序放入指令缓冲器,以减少执行循环程序的访存次数。对于成功转移的条件转移指令,若转向的目标地址
37、与条件转移指令地址之间相隔8条指令或更少,那就认为是遇到了短循环程序,就要把从转向的目标地址到条件转移指令地址间的这段程序全部搬入指令缓冲器内。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.8.3 流水机器的中断处理 中断会引起流水线断流。然而,其出现概率比条件转移的概率要低得多,且又是随机发生的。所以,流水机器处理中断主要是如何处理好断点现场的保存和恢复,而不是如何缩短流水线的断流时间。流水机器的中断会产生2个问题:(1)引起流水线断流;由于中断的出现一般是不能预知的,因此无法消除中断时引起流水线的断流现象。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (2)如何
38、保护现场和恢复现场。这是流水机器的中断处理中的关键问题。现场包括两个方面:一是提供给中断服务子程序的准确的断点现场;准确的断点现场是指若在执行完第i条指令时响应中断请求,送给中断处理程序的就是对应于第i条指令的中断现场,如第i条指令的程序状态字等。二是在中断处理完后恢复到断点处指令流水线的指令现场。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 流水机器的中断处理有两种方法:(1)不精确断点法;不论第i条指令在流水线的哪一段发出中断申请,都不再允许那时还未进入流水线的后续指令再进入,但已在流水线的所有指令却可仍然流动到执行完毕,然后才转入中断处理程序。采用这种中断处理方法,只有当第i
39、条指令是在第1段发的中断申请时,断点才是正确的。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (2)精确断点法。不论第i条指令是在流水线中哪一段发的中断申请,给中断处理程序的现场全都是对应第i条的,在第i条之后进入流水线的指令的原有现场都能恢复。精确断点法需要采用很多的后援寄存器(分别保存各条指令在流水线中执行时的状态,其内容随流水线的流动而变化),以保证流水线内各条指令的原有状态都能保存和恢复。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.10 超标量处理机和超标量处理机和VLIW体系结构体系结构 4.10.1 超标量处理机 超标量(superscalar)机器最
40、早在1987年提出,它是为改善标量指令执行性能而设计的机器。超标量方法是高性能通用处理器发展的一个方向,其本质是在不同的流水线中执行不相关指令的能力,在当前的大多数处理器的设计中,都引入了超标量设计技术。超标量处理机中,使用了多指令流水线。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 这意味着每个周期要发射多条指令并产生多个结果。设计超标量处理机时,要考虑使它能对用户程序开发更多的指令级并行性。但是,只有不相关的指令才能并行执行而不相互等待。指令级并行性的变化是很大的,这与执行代码的类型有很大的关系。对于一般的流水机器,在一个周期内只能发射一条指令,每个周期只能流出一个结果。若其指
41、令的流程为:“取指”“译码”“分析”“执行”,则单发射基准流水线的流水操作如图4.39所示。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 取指 译码 分析 执行0 1 2 3 4 5 6 7 时间图4.39 单发射基准流水线的流水操作第第4 4章章 流水线计算机设计技术流水线计算机设计技术 经统计发现,对于没有循环展开(loop nurolling)的指令代码,指令级并行性的平均值大约是2。因此,这些代码没有从每个周期发射超过3条指令的机器中得到更多的好处。在超标量处理机中,指令发射度(instruction-issue degree)实际上被限制在2到5。第第4 4章章 流水线计
42、算机设计技术流水线计算机设计技术 每拍启动3条指令要求并行度=30 1 2 3 4 5 6 7 时间图4.40 3发射超标量流水线 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 超标量流水线是指在每个机器周期内要同时发射多条指令并产生多个结果的流水线。超标量方法的实现依赖系统并行执行多条指令的能力,即指令并行执行的程度。这主要看硬件技术与编译器结合所能够达到最大程度的指令级并行性。超标量处理器主要是借助对硬件资源重复来实现空间的并行操作。图4.40给出了并行度为3的超标量流水线的流水操作过程。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 与一般的流水机器相比,超标量处理
43、器的特点主要表现在:(1)配置有多个性能不同的处理部件,采用多条流水线并行处理;(2)能同时对若干条指令进行译码,将可并行执行的指令送往不同的执行部件,从而达到在每个周期启动多条指令的目的;(3)在程序运行期间由硬件(通常是状态记录部件和调度部件)完成指令调度。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 典型的超标量处理机有IBM RS6000、PowerPC 601、PowerPC 620等,Intel公司的i860、i960、Pentium系列处理机,SUN公司的UltraSPARC 系列处理机,Motorola公司的MC88110。1995年发布的PowerPC 620是P
44、owerPC结构的第一个64位实现方案,它包括6个独立执行单元,允许处理器同时派遣4条指令到3个整数单元和1个浮点单元,时钟频率150MHz。1998年问世的Intel Pentium II处理器,拥有11段流水线,能并行执行3条Pentium指令,生产工艺早期型号采用0.35微米,后期采用0.25微米,最高时钟频率为450 MHz。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.10.2 VLIW体系结构 80年代早期在Multiflow计算机中所设计的很长指令字可以是256位或1024位。Multiflow VLIW处理器是用微程序控制实现的。256位的Multiflow模型
45、允许最多有7条指令并发地执行。在那时,时钟速率不能做得很高,因为要对微程序控制的控制存储器进行频繁的访问。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 如图4.41所说明的那样,VLIW处理器并发地使用多个功能部件,所有功能部件共享一个普通的大型寄存器堆。功能部件同时执行的操作由硬件进行同步。VLIW概念是对水平微代码编码的扩展。一条长指令中的不同字段含有不同的操作码,它们被分派到不同的功能部件。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 在VLIW结构中,指令并行性和数据传送完全是在编译时确定的,运行时的资源调度和同步则被完全排除。可以将VLIW处理器看成是超标量处
46、理器的一个极端,在VLIW中所有独立或不相关的操作在编译时间已打包在一起。用普通RISC指令字(每个为32位)书写的程序必须压缩以形成一条VLIW指令。代码压缩工作必须由有这种能力的编译器来完成,即能跟踪程序流并利用跟踪信息预测转移方向。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 第第4 4章章 流水线计算机设计技术流水线计算机设计技术 Multiflow机器的失败主要是因为无法得到真正强有力的编译器,它能把短的用户代码高效地压缩成VLIW指令。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 1.VLIW处理机的流水线工作方式 理想VLIW处理机执行指令的过程如图4.4
47、2所示,每条指令指定多个操作。在这个特定的例子中,有效的CPI为0.33。VLIW机的工作很象超标量机,但有三点区别:第一,VLIW指令译码比超标量指令更容易。第二,当超标量机可用的指令级并行性比由VLIW机可开发的相应值小时,超标量机的代码密度更为紧凑。第三,超标量机可做到和很多非并行机系列的目标代码兼容。相反,VLIW机开发不同数量的并行性时总是需要不同的指令系统。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 0 1 2 3 4 5 6 7 时间每拍启动一条长指令,执行3个操作,相当于3条指令,要求并行度=3图4.42 超长指令字(VLIW)的流水执行第第4 4章章 流水线计算
48、机设计技术流水线计算机设计技术 2.VLIW处理器的优点 图4.42中示出了理想VLIW处理器的指令执行,每条指令指明了多个操作。在每个长字中有n路并行性情形下,有效的CPI可减至1/n。VLIW机对超标量机在以下几个方面作了改进:(1)VLIW指令中并行操作的同步全在编译时间完成,这可使它比超标量处理器有更高的处理器效率。(2)当短格式用户代码中有高的可用ILP时,VLIW程序的代码长度要短得多。这就意味着经编译的VLIW程序有短得多的执行时间。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (3)大大简化了运行时的资源调度,因为VLIW体系结构中的指令并行性和数据移动完全是在编译
49、时间说明的。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 3.VLIW的缺陷 (1)需要智能编译器的支持;在VLIW体系结构中,开发的是标量操作中的随机并行性,而不是在向量超级计算机中开发的规则并行性或在SIMD计算机中的锁步并行性。没有智能编译器的有效代码转换,就不能使用VLIW处理机。(2)软件兼容性差;由于这个原因,联合HP/Intel科研项目必须处理软件向后兼容性问题。基于VLIW体系结构的成功与否主要取决于是否能有一个高效的编译器以承担硬件的调度功能。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 (3)软件的可移植性差。为一台VLIW机器编译的软件可能必须重新
50、编译以供另一台VLIW机器使用。换言之,当不同代之间VLIW机器的ILP增加时,必须开发新的编译器。所有这些困难使得VLIW在过去无法获得商业上的成功。表4.2示出了VLIW在硬件支持、并行性开发时间、代码密度、平均CPI、兼容性和可移植性方面与超标量体系结构的区别。第第4 4章章 流水线计算机设计技术流水线计算机设计技术 表4.2 VLIW与超标量体系结构性能的比较性能体系结构硬件支持并行性开发时间代码密度平均CPI兼容性可移植性VLIW简单编译时差低无无超标量复杂运行时好高有有第第4 4章章 流水线计算机设计技术流水线计算机设计技术 4.11 超流水处理机超流水处理机 处理机实现更高性能的