双向转移的预测和优化的制作方法

文档序号:99694阅读:378来源:国知局
专利名称:双向转移的预测和优化的制作方法
对条件转移作出决定的能力是任何计算机系统为完成有效工作的基本要求。转移或不转移的决定可以基于一个或一个以上的事件。这些事件,通常称作条件,包括正数、负数或零,最后一次算术运算的上溢、下溢或进位,偶函数或奇函数,以及很多其它事件。在数字计算机中条件转移是由条件转移指令来完成的。条件转移指令可以用来构成高级程序结构,如LOOP和IF-THEN-ELSE等语句。由于LOOP和IF-THEN-ELSE这种程序结构使用得非常普遍,因此有必要使实现转移的条件转移指令执行得尽可能效率高。
执行一条计算机指令要由一个或一个以上的步来完成。通常,步是首先要提取程序计数器所指的指令,其次是译码并完成指令所标誌的运算,最后是保存结果。一个简单的转移指令更改着程序计数器的内容,使程序的执行“跳”到程序中的其它步。为了加速计算机指令的执行,开发了一种叫作流水线作业技术,可以同时执行一条以上的指令。譬如,流水线作业可以使中央处理器CPU提取一条指令同时执行另一条指令,并保存第三条指令的结果。在流水线计算机结构中,转移是昂贵的作业,因为转移指令能使流水线上的其它指令保持暂挂以等待转移指令的结果。当在条件为真情况下执行一个条件转移指令时,它使CPU在属于目标地址的新地址,继续执行。由于在流水线计算机中指令的提取是与指令的译码和执行同时进行的,计算机已经提取程序中跟在转移指令后面的指令。这是一个与位于目标地址处的指令所不同的指令。因此,CPU必须随着转移指令来保持指令流水线直到得出转移指令的结果和适当的指令被提取。为了达到计算机的最大能力,计算机设计者试图使设计的计算机必须保持指令流水线减到最小以达到最大的能力。
现有技术中使用过几种方案,使得在条件转移时避免保持指令流水线。第一种,一些高性能处理器使用了多种转移预测方案来猜测会不会发生条件转移。这种方法要求大量的硬件,由于所要求的硬件太昂贵,因此除了最高性能的计算机以外,对所有的计算机都是不能采纳的。第二种,另一些结构既提取程序中跟在转移指令后面的指令,同时又提取转移目标地址处的指令。这个方法也是不能采纳的,因为它也要求昂贵的硬件以及额外的访问内存,以便始终提取二条指令。第三种,一些结构在指令中有一个比特用来表示计算机更可能要执行的是跟在转移后面的指令还是在转移目标地址处的指令。然后计算机提取更为可能的指令,并且只是在猜测错误时才保持流水线。这种方法要求昂贵的硬件,并且如果猜测是错误的,要化费额外的时间恢复流水线并提取合适的指令。第四种,另一些结构允许用二个比特来指示CPU,是始终执行转移指令后面的指令还是永不执行,这由是否发生转移而定。这种结构使用了指令中太多的比特,因而减小了转移指令的最大范围。最后,还有另一些结构在转移进行与否之前始终执行程序中跟在转移指令后面的指令。
执行程序中跟在转移指令后面的指令的技术称为延时转移。延时转移是需要的,因为流水线中的指令是始终被执行的,并且流水线不处于保持状态。这是因为在流水线执行指令时延时转移,给计算机以时间来执行转移指令并计算下一个指令的地址。虽然这种技术避免了保持指令流水线,它就要求在转移指令之后设一无操作指令,这样不可能改善性能,因为额外的访问内存否定了任何改善。
一种利用延时转移的优点的软件技术是合併。这里所述的合併概念在于循环转移指令处于循环套的终点。合併利用了延时转移的优点,它复制了循环套的第一条指令,跟在循环转移指令的后面,而把转移目标地址作为循环套的第二条指令。合併的一个潜在问题是,在走出循环套的时候,程序不一定要再次执行跟在转移指令后面的合併指令。对于始终使用延时转移的结构,这是一个问题。
在许多现有技术的计算机系统确定转移即将执行的时候,这些计算机系统使指令流水线保持或联锁。流水线的联锁包括使计算机停止提取下一个指令和防止流水线向前执行流水线中的任何指令。联锁降低了由于流水线所获得的性能上的提高,因此是要避免的。
所需要的是一种条件转移的方法,它能使硬件的数量和性能的降低减至最小。这种方法应该尽量少使用指令中的比特,因为一个比特使转移指令的最大范围实际上减少一半。
按照本发明的优选实施方案,在数字计算机内为条件转移提供一种方法和设备。本发明的优选实施方案提供一条转移指令,它根据转移的位移来静态地预测是否要转移。这种方法在可能的地方采用了延时转移,但是在延时槽指令不能有效利用的地方还可以使跟在转移指令后的延时槽指令舍弃。
本发明在几方面优于现有技术。第一,本发明的优选实施方案可以根据转移位移上存在的符号位来预测条件转移指令是频繁转移还是难得转移,而不要求在指令中有任何其它的比特。第二,本发明的优选实施方案最优地使用了紧跟在条件转移后面的指令,从而减少了使指令流水线保持和引起性能降低的可能性。第三,本发明的优选实施方案仅在指令不能采用的场合才使跟在转移后面的指令舍弃。最后,本发明的优选实施方案提供了一种更灵活和有效的舍弃方案,它依据的是转移的方向而不是始终执行或永不执行跟在转移后面的指令。
图1是按照本发明的优选实施方案编写的一条转移指令。
图2表示本发明优选实施方案中的一种转移方法。
图3是这种转移方法的流程图。
图4是按照本发明优选实施方案所作的设备的功能框图。
图5是图4中设备的时间状态图。
图1是按照本发明优选实施方案编写的一条转移指令。转移指令501由计算机用来执行指令的32比特信息所组成。这条指令把转移功能与对二个操作数作比较的运算结合在一起,虽然本发明本来只用转移的指令就可以实现。指令501包含一个6位的运算码组502,一个5位的第一源寄存器地址组503,一个5位的第二源寄存器地址组504,一个3位的条件码组505,一个11位的转移位置组506,1位的位置组符号位508,和一个舍弃位507。运算码组502识别这条指令为比较及转移指令。第一和第二源寄存器地址组503和504识别要对其内容进行比较的寄存器。转移位移可以为正或负,这由组508和506决定。这个位移用来计算转移的目标地址。按照本发明优选实施方案通过设定舍弃位507可以使指令流水线中的下一个指令舍弃。
在本发明优选实施方案中,当前指令的执行可以被舍弃。舍弃的目的是使指令显得在流水线中从未存在过那样,即使该指令已经被提取,它的运算也已完成。舍弃的执行在于防止该指令改变CPU的任何状态。为了防止改变计算机的状态,舍弃过程必须防止把被舍弃的指令的任何结果写入任何寄存器或内存位置并防止发生任何副作用,例如,由舍弃的指令引起的中断产生。这一点在优选实施方案中是这样完成的,即用前一条指令中生成的舍弃信号来检定任何写入信号,从而防止指令把任何计算的任何结果储存起来,或者改变计算机系统的状态。一个检定当前指令写入信号的简单方法是把写入信号和前一指令中生成的舍弃信号的保留副本“与”在一起。例如,一条指令所生成的舍弃信号可以保存在处理器的状态字中用于下一条指令。舍弃是一个很有用的技术,因为它允许一条指令被取到流水线中,而不管流水线中另一条指令所作出的决定是否会使该指令不被执行。指令简单地在流水线中进展直到需要储存其结果的时候,然后该指令可能在最后时刻被舍弃,其效果如同该指令在流水线中从未存在过一样。
在流水线计算机系统中,对于下一条要执行的指令,有二个截然不同的概念。第一个概念是时间上的后继指令,它是指在指令流水线中当前指令后的下一条指令。这条指令将在当前指令后执行,除非被舍弃,其运算结果将被储存起来。第二个概念是指空间上的后继指令,这是在程序中紧跟当前指令之后的指令。一般来说,当前指令在空间上的后继指令将是时间上的后继指令。这种规则的例外情况发生在接受转移指令时,时间上的后继指令是在目标地址处的指令,它一般不是转移指令在空间上的后继指令。
延时槽指令是转移指令在时间上的后继指令。一般来说,延时槽指令将是转移指令在空间上的后继指令。这种规则的例外情况是一个转移跟在另一个转移指令之后。对于这种情况,第二个转移指令的延时槽指令将是第一个转移指令的目标地址,而不是第二个转移指令在空间上的后继指令。
在本发明的优选实施方案中,无条件转移清楚地表示出舍弃概念和延时槽指令。当舍弃位为无时,无条件转移指令的延时槽指令总是执行的。当舍弃位为有时,无条件转移指令的延时槽指令总是被舍弃的。这相当于永不执行延时槽指令。
图2表示按照本发明优选实施方案中的一种条件转移方法。采用图2方法的计算机有一程序101,由指令100组成,包括条件转移指令102。转移指令102在空间上的后继指令是103。对于具有负的转移位移的条件转移指令102,指令104处于目标地址。对于具有正的转移位移的条件转移指令102,指令105处于目标地址。程序的执行由图表110,111,112,113和114表示。在正常执行期间,程序执行当前指令,然后执行当前指令在空间上的后继指令。
图表110,111和113表示舍弃位为无时转移指令的操作。这相应于“永不舍弃”或“始终执行”的情况。跟在转移指令后面的延时槽指令是始终执行的,无论是否转移,也无论转移的位移是正还是负。当转移条件为假时,继续执行在空间上的后继指令103,如图表110所示。当转移条件为真时,执行延时槽指令,然后执行在目标地址处的指令,图表111表示负的转移位移,图表113表示正的转移位移。
图表110,111,112和114表示舍弃位为有时转移指令的操作。这相当于下面阐述的“有时舍弃”的情况。当舍弃位为有时,延时槽指令可能被舍弃,这取决于转移的方向以及决定是否转移的条件是真是假。图表110和114表示当触发转移的条件为假从而不要转移时转移指令的操作。如果转移位移为正,延时槽指令的执行如图表110所示。如果转移位移为负,延时槽指令被舍弃,如图表114所示。图表112和114中的虚线指出延时槽指令虽然已提取,将被舍弃,就象在指令流水线中从未存在过一样。
图表111和112表示舍弃位为有,而触发转移的条件为真从而要转移时转移指令的操作。如果转移位移为正,延时槽指令被舍弃,如图表112所示,并且程序由目标地址处继续执行。如果转移位移为负,延时槽指令将在转移到目标地址处继续执行之前被执行,如图表111所示。
图3是转移方法的流程图。参照流程图可以更清楚地理解图表111至114。第一步要确定是否有舍弃位。如果舍弃位为无,则该转移指令的延时槽指令是始终被执行的。无论是否转移,这一点都会发生。如果舍弃位为有,则跟在转移后面的延时槽指令是不执行的,除非要转移而且转移位移为负,或者不要转移且转移位移为正。
本发明优选实施方案的操作体现了非常简单而有效的静态转移预测方法,它预测会不会转移,并根据转移位移的正负预测要提取那条指令。它的效率取决于用条件转移指令实现某种较高水平的程序控制结构时跟在一组软件约定后面的计算机软件。例如,循环结构是由向后的条件转移来实现的,所以将频繁地执行负位移的转移指令。事实上,对执行N次的循环,将从N次中取N-1次。另一个设想的软件约定的实例是,对难得发生的部分,用向前转移来实现IF-THEN-ELSE结构,使非转移路径中的更频繁执行的部分紧跟在转移指令之后。例如,向前转移可能转到出错处理程序段,它在正常的程序中是难得要执行的。另外,本发明优选实施方案有一个舍弃位,连同上述静态转移预测技术,它使延时槽指令的使用通用化和优化。当舍弃位为有时,被静态转移预测技术预测为频繁任务的“发生向后条件转移”或“不发生向前条件转移”使延时槽指令被执行。因此,在频繁路径中一些有用的指令可能作为延时槽指令被执行,例如,在上述合併技术中所阐述的那样。当舍弃位为有时,预测为稀有任务的“不发生向后条件转移”或“发生向前条件转移”使延时槽指令被舍弃。因此,仅仅在难得的场合才发生使性能降低的舍弃。
当舍弃位为无时,延时槽指令是始终被执行的。它所对应的情况是,对发生转移和不发生转移这二条路径都共同的指令可以被指定为延时槽指令。
图4是依照本发明优选实施方案的设备功能框图。设备包括六个功能元件指令存储器301,可选用的虚拟地址转换单元302,指令单元303,执行单元304,可选用的浮点单元305和可选用的寄存器文件306。这些功能元件通过五条总线连接在一起结果总线310,第一运算数总线311,下一个指令总线312,第二运算数总线313和地址总线314。只有执行单元304和指令单元303参与完成本发明优选实施方案的操作。执行单元生成和/或储存的条件决定是否转移。指令单元通过生成下一条指令的地址来完成转移,并提供装置把地址存入程序计数器,这下一条指令是从内存中提取的。在本发明优选实施方案中,存储单元是高速缓冲存储器,其速度与执行单元中所用的逻辑的数量级相同。
图5是图4中设备的时间状态图。时间图表示执行指令401,402,403和404所包含的4个阶段。时间线460按时间向右推进划分段。每条指令的四个时间段是指令地址生成段410,指令提取段411,执行段412,和写入段413。指令的执行可按需要的流水线作业程度,本发明优选实施方案包含四阶段流水线作业。如图5所示,在任一时刻有四条指令在执行。在时间450,指令401的写段与指令402的执行段,指令403的指令提取段、指令404的指令地址生成段重合。对于转移指令来说,这意味着当转移指令在执行段时,下一条指令已经被提取。在指令地址生成段期间,下一条指令地址从程序计数器中计算出来,程序计数器包含下一个要执行指令的地址,并位于指令单元303中。在指令提取段期间,从指令存储器301中提取下一条指令。为了完成这一点,要把指令地址生成段计算出来的地址内容加到地址总线314上,并把该地址的内容转给下一个指令总线312,由指令单元译码。转移指令可以与其它运算结合在一起,例如在执行单元304中的一个比较运算,它要在同一时刻译码和完成运行。
在执行段412完成转移指令。在执行段412期间同时生成转移指令的目标地址和转移指令在空间上的后继指令的地址。此时如果指令结合着另一个运算,该运算也被完成。在执行阶段的终点,二个地址中的一个被转到程序计数器中。哪个地址转给程序计数器取决于在执行单元304中生成或储存的条件。在写入段413期间没有运算,除非需要把结合指令的结果储存起来。由于所有把任何结果写入存储器和寄存器的操作以及任何副作用(如由于指令引起的中断)的产生均不早于412和413段,因此本方法能更简单地实现指令舍弃的概念,该指令是始终在流水线中的。
权利要求
1.在具有内存的流水线计算机中在转移指令程序执行后一个确定从内存中提取第一条或者第二条指令的方法,第一条指令在内存中紧跟在转移指令之后,第二条指令与转移指令相隔一个正的或负的位移,该方法包括确定位移的符号,如果转移位移为正就提取第一条指令,以及如果转移位移为负就提取第二条指令。
2.在具有流水线并由执行转移指令来运行程序的计算机中一个完成条件延时转移的方法,根据具有真假状态的预定条件的发生情况,在执行转移指令后继续执行位于第一地址的指令,该指令与转移指令相隔一个正的或负的位移,或者继续执行位于第二地址的指令,该指令地址在程序中位于紧跟转移指令的指令之后,并且根据条件状态,执行流水线中跟在转移指令后面的指令,该方法包括确定第一地址的位移是正还是负,确定预定条件的状态,如果条件为真并且转移位移为负或者条件为假而转移位移为正,就执行流水线中跟在转移指令后面的指令,以及如果条件为真则从在第一地址的程序继续执行,如果条件为假则从在第二地址的程序继续执行。
3.一个指令舍弃的方法,该指令进行运算并能具有内存的流水线的计算机系统中作生成结果、错误、俘获和中断,该方法包括把内存中的指令提取到指令流水线中,完成指令所指定的运算并且防止由于提取或完成指令所指定的运算而生成的任何结果、错误、俘获或中断被存入计算机系统或影响计算机系统的运算。
4.在具有流水线和由执行转移指令来运行程序的计算机中一个完成条件延时转移的方法,根据具有真假状态的预定条件的发生情况,转移指令具有真或假的舍弃信号,在执行转移指令后继续执行位于第一地址的指令,该指令与转移指令有一个正的或负的位移,或者继续执行位于第二地址的指令,该指令地址在程序中位于紧跟转移指令的指令之后,或者根据条件状态执行流水线中跟在转移指令后面的指令,该方法包括确定转移位移对第一地址是正还是负,确定预定条件的状态,如果舍弃信号为假,或者舍弃信号为真并且条件为真或转移位移为负,或舍弃信号为真且条件为假或转移位移为正,则执行流水线中跟在转移指令后面的指令,以及如果条件为真则从在第一地址的程序继续执行,如果条件为假则从在第二地址的程序继续执行。
5.一种在计算机系统中允许第一指令舍弃第二指令的设备,第一指令具有其状态为真和假的舍弃信号,第二指令用写信号把第二指令的结果存入计算机或生成计算机系统中的错误、俘获和中断,设备包括在执行第一指令以后保留舍弃信号状态的装置,以及用保留的舍弃信号状态来认可第二指令的写信号的装置,以便防止指令执行的结果存入计算机系统或任何错误,俘获或中断影响计算机系统的运算。
专利摘要
在具有重叠的提取和执行循环的中央处理器中进行有效转移的一种方法和设备,使指令的有效提取优化。
文档编号G06F9/38GK86103708SQ86103708
公开日1986年12月24日 申请日期1986年6月2日
发明者李佩露, 艾伦·J·鲍姆 申请人:惠普公司导出引文BiBTeX, EndNote, RefMan
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1