• 1.63 MB
  • 2023-01-01 08:30:21 发布

第3章 流水技术与流水处理机

  • 149页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
计算机系统结构(第二版)\n目录第3章流水技术与流水处理机3.1指令重叠与先行控制3.2流水线的分类与时空图3.3线性流水线的性能计算3.4非线性流水线的调度与性能计算3.5流水线的相关问题与相关处理方法3.6多发射处理机及其性能3.7向量流水处理机及其性能\n第3章流水技术与流水处理机\n3.1指令重叠与先行控制提高处理机性能的一个途径是缩短指令序列执行的时间,提高指令平均执行速度。提高指令执行速度有以下3种途径:提高处理机的工作主频。目前,处理机的工作主频已达GHz的水平以上,以提高主频来提高指令执行速度的趋势已经明显减缓。采用RISC技术减少指令执行的平均周期数。采用指令级并行技术,使多条指令并行执行。\n3.1指令重叠与先行控制3.1.1指令的顺序执行方式与重叠执行方式指令顺序执行方式:是指指令之间顺序串行,且指令内的各个阶段之间也是顺序串行的方式。指令重叠执行方式:如果处理机在结构上能使执行指令各阶段功能的部件或段(segment)相互独立,而且各段完成相应功能所需时间尽可能相等,那么,就可以把一个指令序列中的多条指令在时间上重叠起来执行。\n3.1.2先行控制技术为使指令序列能够重叠执行,处理机在结构上必须解决以下两个问题。首先,需要有独立的取指令部件、指令分析部件和指令执行部件,才能实现取指令、分析和执行的同时进行。其次,要解决访问主存的冲突问题。通常,有以下3种方法来解决这个问题。\n1.采用两个独立编址的存储器组成主存把主存分成两个独立编址的存储器,一个是专门存放指令的指令存储器,简称指存;另一个是专门存放数据的数据存储器,简称数存。两个存储器可同时独立访问,这就解决了取指令和读操作数的冲突。\n2.主存采用并行存储器主存采用多体低位交叉编址的并行存储器,从而可使得在一个存储周期中访问多个存储单元。3.采用先行控制技术先行控制技术的关键是缓冲技术和预处理技术。缓冲技术是在工作速度不固定的两个功能部件之间设置缓冲栈,用以平滑它们的工作速度的差异。预处理技术是把进入运算器的指令都处理成寄存器—寄存器型(RR型)指令,它与缓冲技术相结合,为进入运算器的指令准备好所需要的全部操作数。\n采用先行控制技术的处理机结构\n3.2流水线的分类与时空图流水处理方式是把一个需要反复进行的过程分离为若干独立的子过程,每个子过程与其他子过程同时处理不同的对象。流水处理方式是利用时间重叠的并行技术来开发计算机系统的并行性。\n3.2.1流水线的分类(1)部件级流水线、处理机级流水线和系统级流水线部件级流水线:是指由部件内各子部件组成的流水线。处理机级流水线:是指处理机内的各部件之间的流水线。系统级流水线:是指处理机之间的流水线,它又称为宏流水线。\n(2)线性流水线与非线性流水线线性流水线:是指流水线的各个段之间串行连接,处理对象顺序流经流水线各段最多一次的流水线。S1S2S3输入输出\n(2)线性流水线与非线性流水线非线性流水线:是指流水线的各段之间除有串行连接之外,还有反馈回路,从而使处理对象流经某个段或某几个段多次的流水线。S1S2S3输入反馈回路输出\n(3)单功能流水线与多功能流水线单功能流水线:是指流水线的各段之间的连接固定不变,因此只能完成一种固定功能的流水线。多功能流水线:是指流水线的各段之间可以实现不同的连接,流水线能通过不同的连接实现不同的处理功能。\n(4)静态流水线与动态流水线静态流水线:是指在同一段时间内,多功能流水线只能实现一种连接,从而只能执行一种功能,且只有在按照这种连接已流入的所有处理对象都流出流水线后,才能重新连接以实现另一种功能。\n(4)静态流水线与动态流水线动态流水线:是指在同一段时间内,多功能流水线的各段可以实现多种连接,从而同时执行多种功能。当然,流水线中的任何一个功能段只能参加到一种连接中。\n\n(5)标量流水处理机与向量流水处理机标量流水处理机:只有流水线,没有向量数据表示和相应的向量指令,处理向量时,采用流水执行方式对向量各元素(标量数据)按标量指令的要求进行处理。向量流水处理机:是向量数据表示与向量指令流水线的结合,一个向量指令序列可以在向量流水处理机上流水地执行。\n3.2.2流水线时空图时空图:是描述流水线工作过程的一种较好的工具。时空图用横轴表示时间,当流水线中各功能部件的执行时间都相等时,横轴被分割成相等长度的时间段。时空图的纵轴表示流水线的各功能部件,每个功能部件通常称为一个功能段。\n浮点加法器流水线:\n浮点加法器流水线的时空图:空间规格化尾数加对阶求阶差求阶差5求阶差4求阶差3求阶差2求阶差1对阶5对阶4对阶3对阶2对阶1尾数加5尾数加4尾数加3尾数加2尾数加1规格化5规格化4规格化3规格化2规格化10t1t2t3t4t5t6t7t8时间\n3.3线性流水线的性能计算3.3.1吞吐率流水线的吞吐率是指流水线单位时间输出结果的数量。(1)各段执行时间相等的吞吐率若一条k段线性流水线,各段执行时间相等,均为,当有n个处理对象连续流入流水线时,流水线的工作过程可用时空图表示为:\nnn-1……321S1nn-1……321S2nn-1……321S3nn-1……321S4时间空间各段执行时间均相等的流水线时空图:k\n流水线的实际吞吐率为:最大吞吐率为:\n最大吞吐率与实际吞叶率的关系是:只有当n>>k时,即连续输入流水线的处理对象数n远大于流水线的段数k时,实际吞吐率TP才接近于最大吞吐率TPmax。\n例3.1一个4段线性流水线,各段执行时间不等。求流水线最大吞吐率和连续输入n个任务的实际吞吐率。(2)各段执行时间不等的吞吐率\n(2)各段执行时间不等的吞吐率若一条k段线性流水线,各段执行时间,,…,不相等,那么,除第一个对象外,其余(n-1)个对象必须按瓶颈时间间隔max(,,…,)连续流入流水线。......\n消除流水线的瓶颈段,以提高流水线吞吐率的方法有两种:①分离瓶颈段:把流水线中的瓶颈功能段分离成为几个独立的子功能段,消除各段执行时间的“瓶颈”。S2(3△t)瓶颈段分离后流水线的最大吞吐率为:TPmax=1/Δt\n②重复设置瓶颈段:如果瓶颈功能段由于实现技术等方面的原因难以分离成几个独立的子功能段,那么,可以采用重复设置瓶颈段,让多个瓶颈段并行工作来消除瓶颈段原执行时间的“瓶颈”。这两种方法只要完全消除了“瓶颈”,提高吞吐率的程度是相同的。\n3.3.2加速比流水线的加速比:是指使用顺序处理方式处理一批对象所用的时间与流水线使用流水处理方式处理同一批对象所用的时间之比。(1)各段执行时间相等的加速比一条各段执行时间均为的k段线性流水线,若有n个对象连续流入,那么,流水线流水处理这n个对象所用的时间为。若顺序处理这n个对象,则所用时间为。\n实际加速比为:最大加速比为:\n(2)各段执行时间不等的加速比当流水线各功能段的执行时间不相等时,一条k段线性流水线完成n个连续输入的对象的实际加速比为...\n3.3.3效率流水线的效率:是指流水线的设备利用率。它是流水线各段的有效工作时间之和与流水线各段被占用时间(从第一个对象流入至最后一个对象流出)之和的比值。可以由时空图直观地计算出流水线的效率为\n(1)各段执行时间相等的效率各段执行时间相等的流水线效率为:最大效率为:\n(2)各段执行时间不等的效率各段执行时间不等的k段线性流水线连续输入n个对象的流水线效率为:\n【例3.2】现有一条3段流水线,各段执行时间依次为、和。(1)分别计算连续输入3条指令和连续输入30条指令时的实际吞吐率和效率。(2)将瓶颈段细分为3个独立子段,各子段执行时间均为,分别计算改进后的流水线连续输入3条指令和连续输入30条指令时的实际吞吐率和效率。(3)比较(1)问和(2)问的结果,能得出什么有用的结论?\n解(1)各段执行时间不等的连续流动可以用公式直接计算吞吐率和效率。已知,,,瓶颈段执行时间为,则①k=3,n=3\n②k=3,n=30\n(2)瓶颈段细分后,完全消除了瓶颈,指令可每隔一个连续流入。可直接使用各段执行时间相等的连续流动的公式计算吞吐率和效率。①k=5,n=3\n②k=5,n=30\n(3)将(1)问和(2)问的数据进行比较,可以得出下述有关结论:①有可见,连续流入的处理对象越多(n越大),实际吞吐率越大,效率越高。②有可见,改造瓶颈段能有效地提高吞吐率。实际上,改造瓶颈段就是针对提高吞吐率采取的技术措施。③可见,改造瓶颈段并不能保证提高效率。实际上,由于改造瓶颈段需要增加硬件资源,所以,一般来说,会使效率下降。\n【例3.3】有一个4段流水线如图所示。其中,段S1和S3的执行时间均为200ns,段S2和S4的执行时间均为100ns。(1)分别使用公式和时空图求连续流入4条指令的实际吞吐率和效率。(2)若瓶颈段S1可采用细分方法改造,瓶颈段S3只能采用瓶颈段并联方法改造,对改造后的流水线,分别使用公式和时空图求连续流入4条指令的实际吞吐率和效率。\n解(1)首先使用公式计算,已知流水线段数k=4,连续流入指令条数n=4,各段执行时间不等,且瓶颈段执行时间\n\n流水线处理4条指令的时空图如图:44332211S14321S244332211S34321S4)ns100(=Dtt\n由时空图可得:\n(2)首先使用公式计算,改造后的流水线段数k=6,连续流入指令条数n=4,各段执行时间相等,且都为=100ns\n流水线处理4条指令的时空图如图:4321S114321S124321S23311S314422S324321S4\n由时空图可得可见,由公式直接计算和通过时空图计算,2种方法得出的结果是一致的。\n3.4非线性流水线的调度与性能计算在线性流水线中,每一个对象流经每个功能段最多一次,因此,线性流水线的调度很简单,只需控制输入的对象按瓶颈段执行时间的时间间隔流入流水线即可。但是,在非线性流水线中,由于一个对象会通过反馈回路再次使用某个功能段,从而发生与后续对象争用这个功能段的冲突,那么,将导致流水线阻塞。\n3.4.1非线性流水线的最优调度方法与性能计算非线性流水线最优调度要解决的问题是:如何确定处理对象流入流水线的时间间隔,使得既不发生流入流水线的对象之间争用功能段的冲突,又能使流水线有较高的吞吐率和效率。这是一个最优调度问题,可以通过构造相应的状态有向图来寻找最优调度策略。\n1.单功能非线性流水线的最优调度方法及其性能计算最优调度方法获得最优调度策略的步骤是:①根据处理对象对流水线各段的使用要求建立一个预约表。②由预约表得出禁止表,禁止表是禁止后续对象流入流水线的时间间隔的集合。③由禁止表得出初始冲突向量,其中,为流水线各段的同步时钟周期。冲突向量的位数n为禁止表中的最大值。......\n④由初始冲突向量得出状态有向图。后继状态的冲突向量用下式计算其中,当前状态为Ci,是Ci的一个允许时间间隔(即Ci有ck=0);SHR(k)(Ci)表示将Ci右移k位,高位补“0”;后续状态Cj由向量SHR(k)(Ci)和初始冲突向量C0的“或”运算得出。⑤由状态有向图得出最优调度策略。有向图的任何一条环路都是一个可循环执行的无冲突调度策略,从中选择一个平均时间间隔最小的调度策略就是最优调度策略。\n【例3.4】有一个5段单功能非线性流水线,每一个功能段的执行时间均为。处理对象在流水线中的处理过程由表3.1给出的预约表描述。预约表中的记号“”表示处理对象在指定的时间(单位为)需要由相应的段进行处理。求流水线的最优调度策略。若按此最优调度策略连续输入8个对象,计算流水线的实际吞吐率、加速比和效率。\n表3.15段单功能非线性流水线的一种预约表S5S4S3S2S1987654321时间段\n解按下述步骤先求出最优调度策略,然后求实际吞吐率、加速比和效率。①由预约表得出禁止表F,禁止表是后续对象禁止流入流水线的时间间隔的集合。由表3.1给出的预约表可见,一个对象在1t使用段S1后,在9t将再次使用段S1。为避免后续对象同该对象发生争用段S1的冲突,后续对象禁止流入的时间间隔为9t-1t=8t。同样,为避免争用段S2的禁止时间间隔为3t-2t=1t;为避免争用段S3的禁止时间间隔为7t-4t=3t、8t-4t=4t、8t-7t=1t;为避免争用S4的禁止时间间隔为5t-4t=1t;为避免争用S5的禁止时间间隔为7t-6t=1t。由此,可得出禁止表F={8,4,3,1}。②由禁止表得出初始冲突向量C0=(10001101)。\n③由初始冲突向量得出状态有向图。初始状态为C0=(10001101),C0有4个后继状态:C1=SHR(2)(C0)∨C0=(00100011)∨(10001101)=(10101111)C2=SHR(5)(C0)∨C0=(00000100)∨(10001101)=(10001101)=C0C3=SHR(6)(C0)∨C0=(00000010)∨(10001101)=(10001111)C4=SHR(7)(C0)∨C0=(00000001)∨(10001101)=(10001101)=C0\nC1=(10101111)有2个后继状态:C5=SHR(5)(C1)∨C0=(10001101)=C0C6=SHR(7)(C1)∨C0=(10001101)=C0C3=(10001111)有3个后继状态:C7=SHR(5)(C3)∨C0=(10001101)=C0C8=SHR(6)(C3)∨C0=(10001111)=C3C9=SHR(7)(C3)∨C0=(10001101)=C0\n(10001101)(10101111)(10001111)257756657C0C1C3\n④表3.2图状态有向图的调度策略(2+5)/2=3.55(7)(6)(6,7)(6,5)(5)(2,7)(2,5)平均时间间隔调度策略(2+7)/2=4.5(6+5)/2=5.5(6+7)/2=6.567\n92525\n⑤计算最优调度策略的流水线吞吐率、加速比和效率。最优调度策略(2,5)的平均时间间隔为3.5,可得出最优调度策略的流水线最大吞吐率为:TPmax=1/3.5=0.286/按最优调度策略流水处理8个对象所需时间为由于每一个对象的处理过程所需时间为9,所以,若按顺序处理方式处理8个对象,所需时间为\n可得出按最优调度策略流水处理n=8个对象时,流水线的实际吞吐率、加速比和效率分别为\n2.多功能非线性流水线的最优调度方法及其性能计算因为有A、B两类对象在流水线中并发地被处理,需要用两个预约表分别反映两类对象对流水线各段的使用要求,由此可得出A类对象的初始冲突向量CAA和B类对象的初始冲突向量CBB,CAA表示流入一个A类对象对后续A类对象流入的时间间隔约束,CBB表示流入一个B类对象对后续B类对象流入的时间间隔约束。流入一个A类对象对后续B类对象流入的时间间隔约束的初始冲突向量CAB和流入一个B类对象对后续A类对象流入的时间间隔约束的初始冲突向量CBA,CAB和CBA可由两个预约表的综合表得出。双功能非线性流水线最优调度方法:\n若首先流入一个A类对象,则初始冲突矩阵为;若首先流入一个B类对象,则初始冲突矩阵为。它们分别为:后续状态的冲突矩阵由下式计算:其中,表示一个p类对象按当前状态Mi的一个允许时间间隔k流入,则将当前状态矩阵Mi的各行向量都右移k位,高位补“0”,然后,同这个p类对象的初始冲突矩阵进行“或”运算。\n3.4.2非线性流水线的时空图时空图可以直观地表示各类流水线的处理过程,也同样可以直观地表示出非线性流水线的处理对象序列在最优调度策略的控制下,按预约表的要求占用流水线各段的处理过程。\n【例3.6】有一个5段单功能非线性流水线,每一个功能段的执行时间均为,处理对象在流水线中的处理过程由例3.4中的表3.1给出的预约表描述。(1)求流水线的最优调度策略和最大吞吐率。(2)若按最优调度策略连续流入6个对象,计算流水线的实际吞吐率、加速比和效率。(3)画出按最优调度策略连续流入6个对象的时空图,并由时空图计算流水线的实际吞吐率、加速比和效率。\n解(1)因为处理对象的预约表相同,所以,流水线的最优调度策略即例3.4中求得的最优调度策略(2,5)。流水线的最大吞吐率就是最优调度策略的最大吞吐率,有TPmax=1/3.5。(2)按最优调度策略连续流入6个对象,流水线的实际吞吐率和加速比分别为:\n由表3.1给出的预约表可见,一个处理对象在流水线中被流水线5个段实际处理的时间之和为(2+2+3+2+2)=11,所以,流水线5个段处理6个对象的实际处理时间之和为6×11=66。流水线5个段共被占用的时间之和为5×25=125。因此,流水线的效率为\n654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S52Δt5Δt2Δt5Δt2Δt9Δtt(Δt)例3.6的时空图654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5654635241321S1665544332211S2665565443343221121S3665544332211S4665544332211S5\n由时空图得出流水线的实际吞吐率、加速比和效率分别为:\n3.4.3非线性流水线的动态调度的实现单功能非线性流水线控制器主要由一个初始冲突向量寄存器和一个移位寄存器组成,寄存器的位数为对象经流水线处理所需的的个数。每一个将使移位寄存器中的当前冲突向量Ci右移一位,高位补“0”。\n控制器的工作原理和操作过程如下:①把初始冲突向量C0由初始冲突向量寄存器装入移位寄存器。②如果在某个从移位寄存器移出的是“0”,且同时有一个对象请求进入流水线,则允许该对象进入流水线;如果从移位寄存器移出的是“1”,则禁止对象进入流水线,待下一个到来时,重新提出请求。③如果允许进入,就在现行结束时修改移位寄存器中的内容Ci,它的新内容Cj是Ci移位后的值与初始冲突向量寄存器中的C0进行“或”运算的结果。如果禁止进入,移位寄存器的内容仅右移一位,高位补“0”。\n10001101初始向量寄存器010001100010001101010111001010110001010110001101101010111100001010111100000101010001101\n3.5流水线的相关问题与相关处理流水线的相关问题分为局部相关和全局相关两类。局部相关对程序执行过程的影响较小,它仅涉及到相关指令前后的一条或几条指令的执行。全局相关是指影响整个程序执行方向的相关,主要是转移类指令和中断引起的相关。\n3.5.1局部相关及处理方法1.顺序流动的“先写后读”相关及处理顺序流动是指对象从流水线流出的次序同它们流入流水线的次序一样。如果指令h写入结果的目的地址同指令j读取操作数的源地址是同一个存储单元或寄存器,那么,称这两条指令有“先写后读”的要求。如果当指令j到达读段时,指令h还没有到达写段完成写入操作,那么,指令j读出的数据就是错误的,这就是“先写后读”相关。解决顺序流动的“先写后读”相关的方法是:延迟、异步流动和建立相关通路。\n图3.16顺序流动和异步流动\n2.异步流动及其局部相关异步流动是指对象从流水线流出的次序同它们流入流水线的次序不一样。若指令序列中的指令j和指令k都有写操作,且写入的目的地址是同一存储单元或同一寄存器,则顺序执行的结果是指令j先写入而指令k后写入。但是,若采用异步流动方式,则可能出现指令k先于指令j到达写段,那么该存储单元或寄存器的内容最后是由指令j写入的,而不是按指令序列的顺序要求由指令k写入的,这就是“写—写”相关。\n若指令序列中的指令j的读操作和指令k的写操作是同一存储单元或同一寄存器,则这两条指令有“先读后写”的要求。若采用异步流动方式,则可能出现指令k的写操作先于指令j的读操作被执行,那么,指令j读取的数据就是指令k写入的数据,这是违反这两条指令“先读后写”要求的一个错误的数据,这就是“先读后写”相关。异步流动解决相关的方法同样可以采用延迟方法。\n3.建立相关专用通路在流水线的读段与写段之间增加一条专用的数据通路。指令j的读操作不是从存储单元去读,而是通过专用通路读取指令h刚送入写段的数据,\n3.5.2全局相关及处理方法由条件转移或程序中断引起的相关称为全局相关。1.条件转移的处理在遇到条件转移指令时,为了使流水线不“断流”,通常采用“猜测法”,即在条件转移指令之后,选择一个分支方向,让后续指令进入流水线执行。\ni-1ii+1i+2i+3i+4i+5i+6形成条件码的指令条件转移指令PP+1P+2P+3转移成功的分支转移不成功的分支\n假设在一般程序中条件转移指令所占比例为p,转移成功的概率为q,那么,对于一个由n条指令组成的程序在执行过程中,由于条件转移需要额外增加的执行时间就是pqn(k-1)。包括条件转移指令在内的n条指令的总的执行时间是可得出有条件转移影响的流水线的吞吐率为\n当时,有条件转移影响的流水线的最大吞吐率为由于条件转移指令的影响,流水线吞吐率下降百分比为\n由于条件转移指令对流水线的性能影响很大,必须采取措施来减小这种影响。可以采取的措施主要有以下4种。(1)延迟转移技术依靠编译器把转移指令之前的一条或几条没有数据相关和控制相关的指令调整到转移指令的后面。(2)静态转移预测技术转移猜测方向.\n(3)动态转移预测技术根据近期转移是否成功的历史记录来预测下一次转移的方向。动态转移预测的关键有两点,一是如何记录转移历史信息,二是如何根据记录的转移历史信息预测转移的方向。(4)提前形成条件码由编译器调整指令序列,把产生条件码的运算型指令与使用这个条件码的条件转移指令分离开来,提前执行这个运算型指令,尽早产生条件码。\n2.中断处理在顺序处理方式中,CPU任何时间都只执行一条指令,当中断发生时,被中断执行的那一条指令即是断点指令,被中断的指令的现场即是要保护的中断现场。在指令流水线中,同时有多条指令被执行,每一条指令在流水地执行过程中都不断地改变着现场。对此,有两种处理方法。\n(1)不精确断点方法不精确断点方法对中断的处理是:凡是已经进入流水线的指令序列的指令都执行完成,断点指令就是该指令序列中最后进入流水线的那条指令。实际上,提出中断请求的指令可能并不是最后那条指令,所以称其为不精确断点法。这个方法只确定最后一条指令为断点指令,只保存这一条指令的现场。\n(2)精确断点方法精确断点方法对中断的处理是:对于在流水线中同时执行的多条指令,由哪一条指令的程序性错误或故障发出的中断申请,断点指令就是这条指令。为了实现精确断点法,需要把断点指令之前尚在流水线中已完全执行和部分执行的指令的执行结果都作为现场保存起来,为此,要设置一定数量的后援寄存器。\n3.5.3相关对流水线性能的影响流水线处理对象之间的相关将导致流水线的性能下降。对于有相关问题的处理对象序列,可以用时空图来表示流水处理过程和分析相关对流水线性能的影响。\n【例3.8】一条线性静态多功能流水线由6个功能段组成,加法操作使用其中的1、2、3、6功能段,乘法操作使用其中的1、4、5、6功能段,每个功能段的执行时间均为,流水线的输出端与输入端之间有直接数据通路,且设置有足够的缓冲寄存器。试用尽可能短的时间计算,画出流水线时空图,并计算流水线的实际吞吐率、加速比和效率。\n解为了减少流水线中发生先写后读相关的次数,使流水线完成计算的时间尽可能短,采用下述算法计算F:按先乘后加、先括号内后括号外的优先次序,上述计算F的过程需要先做6次乘法,用1~6表示;再做3个括号内的3次加法,用7~9表示;最后做括号外的2次加法,用10~11表示。流水线时空图如图3.19所示。\nS61234567891011S5123456S4123456S37891011S27891011S11234567891011t(Δt)图3.19例3.8的时空图\n由时空图可得实际吞吐率、加速比和效率分别为\n3.6多发射处理机及其性能单发射是指处理机在一个时钟周期()只从存储器取出一条指令(IF)、只对一条指令译码(ID)、只执行一条指令(EX)和只写回一个运算结果(WR),因此,平均一个时钟周期只解释一条指令。单发射处理机的指令级并行度ILP<1。多发射是指处理机在一个时钟周期可发射多条指令。多发射处理机的指令级并行度ILP≥2。属于多发射处理机范畴的处理机有:超标量处理机、超流水处理机、超标量超流水处理机和超长指令字处理机。\n3.6.1超标量处理机及其性能计算超标量处理机是在单发射处理机的基础上,采用资源重复的途径来发展指令流水线的并行性,通过重复设置硬件资源来提高处理机的指令级并行度。1.超标量处理机指令流水线的结构\n取指令指令译码执行指令写回结果FA1FA2FA3MD1MD2MD3IFIDALWRLS定点算术逻辑部件乘除法部件来自指令Cache浮点加法部件通用寄存器或后行写数栈取数存数部件(a)单发射处理机指令流水线\n取指令指令译码执行指令写回结果FA1FA2FA3MD1MD2MD3IF1ALWR1LS定点算术逻辑部件乘除法部件来自指令Cache浮点加法部件通用寄存器或后行写数栈取数存数部件IF2ID2来自指令CacheIF3先行指令窗口WR2通用寄存器或后行写数栈ID3ID1(b)超标量处理机指令流水线FA:浮点加减法运算MD:乘除法运算AL:定点算术逻辑运算LS:取数存数\n多发射是指处理机在一个时钟周期同时发射多条指令。上图是一个同时发射3条指令的多发射处理机的指令执行时空图。\n先行指令窗口的大小对超标量处理机的性能影响很大,窗口太小,调度的效果不好;窗口太大,调度所需的硬件太复杂。目前,多数超标量处理机的先行指令窗口大小为2~8条指令。对大量程序的统计分析表明,每个时钟周期发射2~4条指令比较合理。例如,Intel公司的i860、i960、Pentium处理器,Motolora公司的MC88110处理器,IBM公司的Power6000处理器等都是每个时钟周期发射两条指令。如果一台超标量处理机每个时钟周期发射m条指令,则它的指令级并行度ILP的期望值就为m。但是,由于相关和资源冲突等原因,实际的ILP为:1