失速控制的制作方法

文档序号:6568845阅读:304来源:国知局
专利名称:失速控制的制作方法
技术领域
本发明涉及处理机和操作处理机的方法。本发明在并行流水线处理机,如非常长的指令字(VLIW)处理机中有特殊的应用。
高性能处理机用称为流水线式的技术增加处理指令的速率。流水线是通过在若干个阶段中执行一个指令,在单个流水线级中执行每个阶段进行工作的。指令通过连续的流水线级流动,所有部分地完成的指令在每个处理机的时钟周期上向前移动一级。当诸指令到达流水线的终端时完成对它们的执行。
诸处理机试图使诸流水线在所有的时间中都是满的,这样来保证指令完成的高速率。然而,由于某种原因一个指令可能在单个时钟周期中不能通过一条流水线的诸级中的一级,例如,因为它需要接入慢存储器或许者计算一个多周期工作。我们将这种情况称为失速(stall)。当一条流水线的级i失速时,就会阻止在级i-1的指令向前行进,即便在级i-1的指令本身并不失速。反过来这又使级i-2失速,如此一直到级0(第1级)。当在级i有失速时,一个信号流动到在流水线中的所有的从0到i-1的级,使它们在流水线时钟信号的下一个有效边沿前失速。
一些处理机结构提供两条或更多条并行流水线,用于同时处理不同的指令(或一个指令的不同部分)。在这种情形中,必须将失速信号分布到所有的流水线,以便保证并行地发出的诸指令也能并行地完成。然而,传播这样一个全局的失速信号的延迟可能限制处理机的工作时钟频率。而且,这样一个信号必须经过的距离随着加入更多的流水线而增加。所以一个具有较多流水线的处理机需要一个较慢时钟频率,于是使进一步增加流水线实现高的总处理能力的努力受到挫折。
本发明就是要力图克服上述的诸缺点。
根据本发明的第1方面,我们提供包括下列装置的处理机多条流水线,每条流水线都具有多个流水线级用于在连续的时钟周期上执行指令;和失速装置,用于响应在任何一条流水线中产生的失速信号在所有的流水线中使指令的执行失速。
其中用失速装置使在一条不产生失速信号的流水线中的一个指令的执行在一条产生失速信号的流水线中的一个指令的执行后面至少一个时钟周期上失速,并在这条不产生失速信号的流水线中在这条产生失速信号的流水线中的失速后面至少一个时钟周期上解除失速。
在不同的时钟周期在不同的流水线中使指令执行失速可以得到附加的时间,利用该时间使失速信号从这条产生失速信号的流水线分布到其它的流水线。这样可以使处理机以比其它情况更高的速度运行。通过比在流水线中产生失速信号的失速晚至少一个时钟周期释放在流水线中不产生失速信号的失速,在不同的流水线中的各指令在一个或多个时钟周期的不同步之后可以回到对准状态。优先地,从失速释放的相应的流水线之间的时钟周期的数目与被失速的相应的流水线之间的时钟周期的数目相等。
本发明可以用于一个处理机流水线的全部或任何一部分。作为例子,每条流水线可以包括一个或多个地址计算级,一个指令提取级,一个指令解码级,一个指令执行级,和/或其它的级或子级。
如果两个或更多的流水线同时产生一个失速信号,不必响应于另一流水线产生的失速信号对每一流水线进行失速。这是因为每一流水线可以实现适当的失速。如果每一条流水线也响应于由另一流水线产生的失速信号被失速,可能发生多于需要的失速。于是,失速装置可以被安排成使得当在第一流水线的一个流水线级从第二流水线接收到一个失速信号时,如果该流水线级响应于由第一流水线产生的失速信号在前一周期中失速,在第一流水线中的该流水线级中的指令的执行不被失速。
失速装置可以被安排成使得当一条流水线在级i产生一个失速信号时,使包括那条流水线的级i在内的所有的级都失速。在这种方式中,使在一条流水线中的诸较前面的诸级失速以便防止在一条流水线中的诸指令相互复盖。不需要使较后面的诸级失速,从而较后面的诸级中的诸指令可以如通常那样地继续通过流水线前进,虽然,如果需要的话,也可以使所有的或一些较后面的级失速。
可以如此安排失速装置,使得当一条流水线在级i产生失速信号时,在一个给定的时钟周期上使直到和包括那条流水线的级i的所有的级都失速,在所述给定的时钟循后面的m个时钟周期上使直到和包括一条不产生失速信号的流水线的级i+m的所有的级都失速,其中m是大于或等于1的整数。假定在一条不产生失速信号的流水线中后面的m个时钟周期上使直到级i+m的所有的级都失速,则使在那条流水线中的与在产生失速信号的流水线中的诸失速的指令相对应的诸指令失速。
处理机可以包括多个流水线群集,每个群集包括多条流水线。在这种情形中,可以安排失速装置使在同一个时钟周期中在一个群集内的诸流水线中的指令执行失速。
优先地,在工作中,并行地(也就是说在一个特定的时间周期中)进入各条流水线中的诸指令并行地离开诸流水线。可以在不同流水线中执行不同的指令。例如,处理机可以是一个VLIW处理机,其中将来自一个VLIW指令包的诸指令并行地发送给诸流水线。
每条流水线可以包括至少一个执行级,在该执行级中一个指令至少可以被部分地执行。可以使诸流水线响应失速信号不被清洗那样地安排处理机。
优先地将失速控装置分布在两个或更多个流水线级之间。这能够允许每个流水线级对它自己的失速进行控制。这样一种安排能够容易地使失速机构按比例放大以便根据需要包括更多的流水线或流水线级。
于是,两个或多个流水线级的每个都可以与用于控制那个流水线级的失速的失速控制电路结合起来。可以安排在每个流水线级中的失速控制电路产生一个用于使另一条流水线失速的全局失速信号,并接收来自另一条流水线的一个全局失速信号用于使与失速控制电路结合的流水线级失速。可以这样安排失速控制电路,如果结合的流水线级受到来自在另一条流水线中的同一个级或后面的级的全局失速,则不产生全局失速信号。这能够有助于保证在不同流水线中的诸指令在两条或多条流水线同时产生诸失速信号的情形中正确地对准。优先地在两条或多条流水线中的每一条中的失速控制电路基本上是相同的。
可以这样安排处理机使得如果在一个流水线级中存在一个泡则不使那个流水线级失速。甚至当在其它情况下使诸指令失速时,这也能够允许诸指令向前移动进入一个泡。
根据本发明的第2方面,我们提供一个包括多条流水线的处理机,每条流水线都具有多个流水线级用于对通过诸流水线的信息执行一系列工作,两个或多个流水线级每个都有相结合的失速控制电路用于控制那个流水线级的失速,该控制电路包括用于产生一个保持信号的装置,该保持信号或者响应由那个流水线级产生的一个局域失速信号或者响应由另一条流水线产生的一个全局失速信号使结合的流水线级失速;用于产生全局失速信号的装置,该全局失速信号响应所述的局域失速信号使另一条流水线失速;和用于延迟全局失速信号的装置,使得在认定保持信号后面的一个给定数目的时钟周期上认定全局失速信号,而且在解除保持信号后面的相同数目的时钟周期上解除全局失速信号。
第1方面的任何特点都可以加到第2方面中。
我们也提供相应的诸方法,这样在本发明的第3方面提供了一个操作处理机的方法,该处理机包括多条流水线,每条流水线都有多个用于在诸连续时钟周期上执行诸指令的流水线级,每条流水线都能够产生一个失速信号,该方法包括在一条流水线中产生一个失速信号;在产生失速信号的流水线中使一个指令的执行失速;在不产生失速信号的流水线中在后面的至少一个时钟周期上使一个指令的执行失速;解除在产生失速信号的流水线中的失速;和在后面的至少一个时钟周期上解除在不产生失速信号的流水线中的失速。
处理机的任何特点都可以作为方法的特点并且反之亦然。
根据本发明的第4方面,我们提供一个处理机,它包括多条流水线,每条流水线都具有多个流水线级用于在诸连续的时钟周期上执行指令;和失速控制电路,它对诸流水线中的诸指令的失速进行控制;其中用失速控制电路在一条产生失速信号的流水线中的一个指令的执行后面至少一个时钟周期上使在一条不产生失速信号的流水线中的一个指令的执行失速,和在这条产生失速信号的流水线中的失速后面至少一个时钟周期上解除在这条不产生失速信号的流水线中的失速。
根据本发明的第5方面,我们提供一个处理机,它包括多条流水线,每条流水线都具有多个流水线级,这些流水线级对通过诸流水线的信息进行一系列工作,两个或多个流水线级每个都有相结合的失速控制电路,该电路控制那个流水线级的失速,该控制电路包括一个产生保持信号的电路部分,该保持信号或者响应由那个流水线级产生的一个局域失速信号或者响应由另一条流水线产生的一个全局失速信号使结合的流水线级失速;一个产生一个全局失速信号的电路部分,该全局失速信号响应所述的局域失速信号使另一条流水线失速;和一个延迟全局失速信号的电路部分,使得在认定保持信号后面的给定数目的时钟周期上认定全局失速信号,而且在解除保持信号后面的相同数目的时钟周期上解除全局失速信号。
现在我们将参照所附诸图单纯用例子描述本发明的诸优先的特点,其中

图1是在本发明的第1实施例中一个处理机的诸部分的方框图;图2是一条7级流水线的示意图;图3表示在本发明的第1实施例中失速控制电路的诸部分;图4是在本发明的第2实施例中一个处理机的诸部分的方框图;图5表示在第2实施例中失速控制电路的诸部分;图6是表示图5的流水线级的部分工作的状态变迁的图7到10表示第2实施例的工作的一个例子;图11到14表示第2实施例的工作的另一个例子;图15表示在本发明的第3实施例中失速控制电路的诸部分;和图16到41表示第3实施例的工作的诸例子。
第1实施例图1是根据本发明的第1实施例一个处理机的诸部分的方框图。在这个实施例中,处理机是一个非常长的指令字(VLIW)处理机,它被设计得能够执行可以分成诸较短的指令的长指令。
参照图1,处理机1包括指令发出装置10,调度存储装置12,第1和第2执行装置14,16以及第1和第2寄存器队列18,20。指令发出装置10具有两个发出槽IS1,IS2分别与执行装置14,16连接。第1执行装置14与第1寄存器队列18连接,第2执行装置16与第2寄存器队列20连接。寄存器队列18,20通过一条总线22相互连接。作为通过一条总线连接的两个寄存器队列的一个替换物,可以提供单个寄存器队列。每个执行装置14,16也通过总线26与一个外部存储器24连接。在这个例子中,外部存储器24是随机存取存储器(RAM),虽然它也可以是任何其它类型的存储器。
在工作中,将一个为了执行的指令包从调度存储装置12传送到指令发出装置10。指令发出装置10将指令包分成它的诸构成指令,并分别通过发出槽IS1,IS2将两个指令发送到执行装置14,16。然后执行装置14,16同时执行不同的指令。在这种方式中,并行地处理一个长指令的不同部分。
每个执行装置14,16用一种流水线技术使处理指令的速率达到最大。通过完成指令执行的多个阶段中的每一个,流水线就像单个流水线级一样地进行工作。诸指令以一种生产线的方式,通过诸连续的流水线级流动,所有部分完成的指令在每个处理机时钟周期上向前移动一级。当它们达到流水线的终端时完成诸指令的执行。
图2是一条7级流水线的示意图。在这个示意图中,每级的内容是已经到达流水线的那一级的指令的序号。诸流水线级可以包括,例如,诸指令读取级,诸指令解码级,和诸指令执行级。在流水线中的诸指令从左向右,从级0到6流动。
希望流水线在所有的时间中都是满的,这样来保证指令完成的高速率。然而,由于某种原因一个指令可能在单个时钟周期中不能通过一条流水线的诸级中的一个级,例如,因为它需要接入慢存储器或者计算一个多周期工作。我们将这种情况称为失速。当级i失速时,就会阻止在级i-1的指令向前行进,即便在i-1级的指令本身并不失速。反过来这又使级i-2失速,如此一直到级0(第1级)。如果级0到i在时间T失速,则在时间T+1,没有指令通过级i+1。如果在另一个周期中失速继续存在,则在时间T+2,没有指令通过级i+1和i+2。这些空的流水线级称为泡(bubble)。在图2中,在级和4中显示出2周期的泡。
这样设计VLIW处理机,使得并行地发送给不同流水线的诸指令也并行地完成它们的执行。如果放松这个规则,则已经证明很难清楚地停止一个运行过程和在某个以后的时间中再开始。于是,如果在一条流水线中存在一个失速,则每条其它的流水线必须也失速,以便保证不同指令并行地离开诸流水线。例如,如果在图1中的执行装置14中在流水线中存在一个失速,则在执行装置16中的流水线也必须失速。
当在一条流水线的级i上存在一个失速时,那个级就产生一个失速信号。这个失速信号被分布到在流水线中的从0到i-1的所有级中,使它们在流水线时钟信号的下一个有效边沿前失速。
一个可能的用于使图1的处理机中的其它流水线失速的方案是取来自两条流水线的每一级的失速信号的逻辑或(“或”),并将结果分配给两条流水线。然而,这需要在流水线时钟信号的下一个有效边沿前将一个全局失速信号发射给所有的流水线级。对于高速处理机,在传播这样一个全局失速信号中的延迟可能限制处理机的工作时钟频率。而且,如果为了增大处理速率而加入更多的流水线,则全局失速信号必须经过的物理距离将增加,从而甚至进一步限制了工作时钟频率。
根据第1实施例,通过各条流水线的诸指令可能相互不同步地到达一个级,这样就为一个从一条流水线到另一条流水线的失速信号提供一个满的时钟周期。
现在参照图3描述第1实施例的工作。图3表示第1流水线(流水线1)的两个级,级i和级i+1,和第2流水线(流水线2)的诸对应的级。流水线1的级i包括流水线寄存器40,处理电路42,或门44,寄存器45,46,与(“与”)门47和或门48;流水线1的级i+1包括流水线寄存器50,处理电路52,或门54,寄存器55,56,与门57和或门58;流水线2的级i包括流水线寄存器60,处理电路62,或门64,寄存器65,66,与门67和或门68;流水线2的级i+1包括流水线寄存器70,处理电路72,或门74,寄存器75,76,与门77和或门78。在这个例子中,寄存器45,55,65,75和46,56,66,76是由多个D型触发器作成的。由一个共同的时钟信号馈送所有的时钟输出。流水线1的级i和i+1是图1中的执行装置14的一部分,流水线2的级i和i+1是图1中的执行装置16的一部分。
在正常的工作中,每个处理电路42,52,62,72执行一个保持在对应的寄存器40,50,60,70中的指令的一个阶段。级i的处理电路42和62并行地执行两个属于一个VLIW指令包的指令的阶段i,级i+1的处理电路52和72同时执行两个属于另一个VLIW指令包的指令的阶段i+1。在每个时钟周期上,将保持在诸寄存器中的诸指令传送到诸流水线中的下一个寄存器以便进一步处理。在这种方式中,诸指令通过诸流水线流动而所有的部分完成的指令在每个时钟周期上向前移动一级。
如果需要使它正在执行的指令的前进失速,则每个处理电路42,52,62,72都能够认定一个失速信号。分别将来自处理电路42,52,62,72的诸失速信号馈送到或(或)门44,54,64,74。分别将或门44,54,64,74的诸输出信号馈送到或门48,58,68,78。或门48,58,68,78分别将诸保持信号输出到处理电路42,52,62,72。这样,如果诸处理电路中的一个认定一个失速信号,则通过诸对应的或门认定那个处理电路的保持信号。如果设置了输入到一个处理电路的保持信号,则那个处理电路将失速。
也将每个或门44,54,64,74的输出作为一个波纹(ripple)信号馈送到在同一条流水线的前一级中的相应的或门。于是诸波纹信号波纹地通过诸流水线,使得如果一个处理电路认定一个失速信号,则也认定输入到同一条流水线中的所有前面的处理电路的诸保持信号。
也将每个或门44,54,64,74的输出作为一个全局信号馈送到其它流水线的下一级。每个寄存器46,56,66,76从其它流水线的前一级接收这样一个全局信号。例如,将或门44的输出馈送到寄存器76和将或门64的输出馈送到寄存器56。
每个寄存器46,56,66,76在它的输入端延迟信号直到下一个时钟周期。于是,每个寄存器46,56,66,76的输出是来自其它流水线的前一级的全局信号,被延迟到下一个时钟周期。通过各个与门47,57,67,77将每个寄存器46,56,66,76的输出馈送到各个或门48,58,68,78,各个或门48,58,68,78分别将诸保持信号输出到处理电路42,52,62,72。于是,假定设置了到与门47,57,67,77的诸其它输出,如果一个处理电路认定一个失速信号,则将在下一个时钟周期认定输入到其它流水线的下一个处理电路的保持信号。
分别也将处理电路42,52,62,72的诸失速信号馈送到寄存器45,55,65,75。分别将寄存器45,55,65,75的倒相输出馈送到与门47,57,67,77。于是,如果相应的处理电路在前一个时钟周期中认定一个失速信号,则使每个与门47,57,67,77的输出复位而与寄存器46,56,66,76的状态无关。如果对应的流水线级由于一个局域产生的失速信号在前一个时钟周期中失速,则这防止寄存器46,56,66,76产生一个失速信号。在这种方式中,如果两条流水线在同一个时钟周期中产生一个失速信号,则只完成一个失速。
作为一个例子,如果处理电路42在一个给定的时钟周期中设置失速信号,则或门44和48保证那个级的保持信号被设置。一个波纹信号通过那些级的诸相应的或门流到所有的级i-1到0,使那些级中的每一个都设置保持信号。于是,在流水线时钟信号的下一个有效边沿前在第1流水线的所有的级0到i上设置一个保持信号,使那些级失速。然而,因为或门44的输出被寄存器76延迟,所以不设置输入到处理电路72的保持信号直到流水线时钟信号信号的下下个有效边沿为止。类似地,由于寄存器66,输入到处理电路62的保持信号被延迟一个时钟周期,如此等等直到第2流水线的级1。这样,第2流水线的级0到i+1在第1流水线的级0到i后面的一个时钟周期失速。因为当使第1流水线中的诸指令失速时在那条流水线中的诸指令将前进一级,所以需要使第2流水线的级0到i+1失速。当一条流水线的级1失速时,安排那条流水线的级0失速。
当维持对来自处理电路42的失速信号被设置时,到第1流水线的级0到i的保持信号和到第2流水线的级0到i+1的保持信号维持被设置,使那些级保持失速。当解除失速信号时,也解除到第1流水线的级0到i的保持信号,使得在那条流水线中进行通常的工作。然而,由于寄存器66,76(和在前面的诸流水线级中的诸相应的寄存器)的工作,到第2流水线的级0到i+1的诸保持信号只在下一个时钟周期上被解除。于是,在第2流水线中在下一个时钟周期上进行通常的工作。这个在解除失速中的一个周期延迟允许两条流水线回到相互同步的状态。
这样,我们看到在两条流水线内的各个指令可以变得不同步到一个周期,从而为在诸流水线之间传播的失速信号提供一个满的时钟周期。
第1实施例具有下列主要特点1.无论哪条流水线都能够在任何本身不是失速主体的周期中认定一个失速信号。
2.在同一条流水线中的失速级前的诸级将在与失速级相同的周期中失速,但是将使在其它流水线中的诸级在一个周期后失速。
3.当解除失速时,在那条流水线中的所有的失速级立即向前行进,但是在一个周期后才解除在其它流水线中的诸失速级。它的纯效应是诸失速工作在当失速时不同步到一个级后回到对准的状态。
4.用于控制每级失速的逻辑值对于那个级来说是局域的。可以用一个满的时钟周期将全局失速信号分布到其它流水线中。
我们将看到因为一条流水线的最后一级不能及时地使其它流水线失速以便防止在最后一级中的指令离开流水线,所以流水线的最后一级不能认定一个失速信号。这个问题可以或者通过使一条流水线的最后一级永远不需要认定一个失速信号那样地安排处理机和指令集,或者通过将一个最后的伪级加到每条流水线上来解决。
如希望的话,通过安排寄存器45,55,65,75和46,56,66,76在它们的输入端使诸信号延迟两个或多个时钟周期,可以为在诸流水线之间传播诸失速信号引入两个或多个时钟周期。例如,可以用两个或多个串联连接的D型触发器代替图3中的每个触发器45,46,55,56,65,66,75,76。在这种情形中,处理机可以保证流水线的最后m级不认定一个失速信号,其中m是时钟周期延迟数,或是可以加入的m个伪级数,或者可以用这两个方法的组合。第2实施例图4表示根据第2实施例的一个处理机的诸部分。参照图4,处理机100包括一个指令发出装置102,一个调度存储装置104,第1到第8执行装置(E.U.)106,108,110,112,114,116,118,120和第1到第4寄存器队列122,124,126,128。指令发出装置102具有8个分别与执行装置106到120连接的发出槽IS1到IS8。第1到第2执行装置106,108与第1寄存器队列122连接,第3到第4执行装置110,112与第2寄存器队列124连接,第5和第6执行装置114,116与第3寄存器队列126连接,第7和第8执行装置118,120与第4寄存器队列128连接。每个执行装置通过总线134也与一个外部存储器132,如一个RAM器件连接。
在工作中,将一个为了执行的指令包(VLIW指令包)从调度存储装置104发送到指令发出装置102。指令发出装置102将指令包分成它的诸结构指令,并通过发出槽IS1到IS8将诸指令发送到执行装置106到120。然后执行装置106到120同时执行属于该指令包的不同的指令。
将执行装置106到120分成4组,每组都有它自己的寄存器队列。这样做是为了减少到任何一个寄存器队列的接入槽(slot)的数目。如果提供单个寄存器队列,则寄存器队列可能有太多的接入槽,这将增加到寄存器队列的接入时间。可以将每组有一个共同寄存器队列的执行装置称为一个群集。在图4中,由执行装置106,108和寄存器队列122形成第1群集,由执行装置110,112和寄存器队列124形成第2群集,由执行装置114,116和寄存器队列126形成第3群集,由执行装置118,120和寄存器队列128形成第4群集。如果在一个群集中需要保持在另一个群集中的一个值,则通过总线130在诸群集之间传送该值。虽然在图4中画出4个群集,但是按照需要可以提供或多或少的群集。每个群集可以有一个,两个或更多个执行装置。
如在第1实施例中那样,每个执行装置106到120都用流水线增加它处理指令的速率。在一个群集内的诸流水线保持相互同步,而允许在不同群集内的流水线相互有一个或多个周期的不同步。
图5是表示在两个流水线群集内第i级的结构的方框图。群集的级i包括在群集内的第1流水线(流水线0)的级i,在群集内的第2流水线(流水线1)的级i,和用于控制这两个流水线级的共同控制电路。流水线0的级i包括流水线寄存器140和处理电路142,流水线1的级i包括流水线寄存器144和处理电路146。控制电路是由失速控制逻辑电路148,寄存器150,152,154和或门156形成的。
在工作中,群集的级i可以或者是有效的,或者被在同一个群集中的级j失速,其中j≥i,或者被在另一个群集中的级l失速,其中l≥i-1。所以,群集的级i有一个状态可变的CurrentState(当前状态)i,该状态指示级是活性的(A),局域失速的(L)还是全局失速的(G)。
将可变的CurrentState i的值保持在寄存器150中。寄存器150的输入是信号的NextState(下一个状态)i,该状态确定级在下一个时钟周期中处于哪个状态。
失速控制逻辑电路148的工作受到一组状态变迁的控制,如表1所示。在表1中,每一行表示能够实现的一个可能的变迁,并清楚地说明了变迁能够发生的条件。每个变迁都是从当前状态到下一个状态,如果讨论中的级对于一个给定变迁是在当前状态中,则发生变迁,并且诸布尔变量local(局域)和global in(全局内)的诸值如在对于那个变迁的表列值指出的那样。当存在一个局域失速时设置局域变量,即起源于局域群集的局域变量。当当前级有一个未决失速时或如果在当前级后面的任何级将在下一个周期处于局域失速状态,则该变量等于true(真)。如果任何其它的群集在前一个周期中认定它的局域信号,则设置global_in变量。
表1
一个对于每个流水线级的行为的状态变迁图如图6所示。在图6中,变迁数与表1的第1列中的数字对应。对于熟练的技术人员来说显然可以从状态变迁图和/或表例行地导出适当的逻辑电路,因此在这里不特别对其进行描述。
在工作中,流水线寄存器140保持为了用处理电路142执行的诸指令和数据,流水线寄存器144保持为了用处理电路146执行的诸指令和数据。如果由图5中的处理电路142,146中的一个在时钟周期T执行的一个指令的阶段为了执行需要多于一个的周期,则那个处理电路认定一个失速信号。将来自两条流水线的级i的诸失速信号馈送到或门156。或门156的输出是一个信号stall(失速)i,它指示在那个群集中一条或多条流水线的级i是否已经认定一个失速信号。将信号stall i馈送到失速控制逻辑电路148。
根据失速i信号,失速控制逻辑电路148产生一个如下的局域信号ilocal i=(stall i或ripple i+1)当群集的级i的下一级将是L(即局域失速)时设置信号ripple(波纹)i。所以ripple i=(NextState i=L)信号ripple i+1是由群集的级i+1产生的相应信号。
如果当周期T时认定ripple i,则在同一个周期中认定ripple i-1,i-2,……,i-k,作为在级i中局域失速的结果。局域化的失速信号的波纹将在流水线最左边的终端结束,或者如果在周期T+1(即NextState i-k=L)中某个级将不在L级中,则将较早结束。这能够由在周期T-1中的级i-k-1上在另一个群集中的一个局域化失速产生,并在周期T中被认定的级i-k上产生global_in信号。
根据local i信号,CurrentState i信号和global_in i信号产生NextStatei信号,如表1的最后一列所示。在时钟信号的下一个有效(active)边沿上,将信号NextState i寄存在寄存器150中,使得在周期T+1中的信号CurrentState i等于在周期T中的信号NextState i。
如果在任何时钟周期中的NextState i的值或为L或为G(与局域地或全局地失速相对应),则认定hold(保持)i信号。对应地,在寄存器142和144中的诸指令和数据在下一个时钟周期中保持相同。
不同的群集通过ripple和global_in信号相互通报它们的失速状态。对于群集C的next_global_in(下一个全局内)i信号是来自所有群集除了C的诸ripple i-1信号的逻辑或。在每个时钟周期结束时将next_global_in i信号寄存在寄存器154中,给出信号global_in i。对于所有群集的级0的诸global_in信号总是false(假)。在每条流水线中,当那条流水线的级1失速时,安排级0失速。
例如,如果在另一个群集的级h(h≥i-1)中由处理电路在时钟周期T中执行的指令的阶段需要多于一个的周期,则在周期T中认定它的local h信号。这使在所有其它的群集中的所有级1到h+1的诸next_global_in信号在周期T结束前被认定。这反过来使失速控制逻辑电路148的global_in i信号在周期T+1中被认定。
用valid(有效)i信号指示在群集的级i中存在一个泡。例如,如果使级i-1失速,则将信号valid_out(无效)i-1设置在false,指示在级i-1中存在一个泡。在下一个时钟周期上,将信号valid_out i-1寄存在寄存器152中,给出信号valid i。如果将valid i设置成false,则处理电路142,146不管在寄存器140,144中的指令。
这样我们能够看到第2实施例提供一个分布的失速方案,其中每个级局域地确定它是否需要在程序执行的每个周期上使处理机失速,并且如果在级i需要一个失速则认定失速i。如果对于级i失速逻辑值确定失速的三个原因中的任何一个需要在当前周期中使级i失速,则它认定保持信号i。对应地,级i将指令和数据保存在它的输入寄存器中。
第2实施例具有下列主要特点1.在任何群集中的任何流水线级都能够认定在任何本身不是失速主体的周期中的一个失速信号。
2.在同一个群集中的一个失速级前的诸级将在与该失速级相同的周期中失速,但是将使在诸其它流水线中的诸级在一个周期后失速。
3.当解除失速时,在那条流水线中的所有的失速级立即向前行进,但是在一个周期后才解除在诸其它流水线中的诸失速级。
4.用于控制每级失速的逻辑值对于那个级来说是局域的。在全局地(从一个群集到另一个)进行失速信号通信的地方,可以用一个满的时钟周期计算全局失速条件并将它分布到所有的群集中。
现在我们参照图7到10描述第2实施例工作的一个例子。图7表示在时间T=1在群集1中在指示包103上在级3中发生一个失速的情形。这时,立即从级3到级0,群集1失速,而其它的群集不失速。
图8表示在T=2一个周期后的情形。因为通知应该在级3失速的诸其它级的一个周期延迟,直到诸其它群集被失速的这个时间都不是这样。在指令包103已经移动到级4的那个时间前,在那些群集中从级4开始必须失速。在这个时钟周期中,解除在群集1中的失速,所以在群集1中的诸指令可以自由地在下一个时钟周期中向前行进。
图9说明在时间T=3一个周期后的情形。在群集1中,指令包103到106已经向前移动和已经插入指令包107,而由于在解除全局失速中的延迟在群集0,2和3中的诸指令还没有移动。于是在这个时钟周期中再次使在所有的群集中的诸指令对准。如图10所示,在时间T=4后的一个周期上,在所有群集中的诸指令如通常那样地自由地向前行进。
现在我们参照图11到14描述第2实施例工作的另一个例子,其中由两个不同的群集产生一个失速信号。在这个例子中,在时间T=1由在群集1中的级3和在群集2中的级1两者产生一个局域失速信号。
参照图11,在T=1,的情形。群集1的级3到级0和群集2的级1和级0使局域信号被设置和使global_in信号被再设置,所以,参照图1(变迁4),这些级的下一个状态将被局域地失速(L)。
在时间T=2后的一个周期(图12),群集1的级3到0和群集2的级1和0处于局域地失速状态,而诸其它的级都处于活性状态(A)。于是在群集1的级4中和群集2的级2中形成诸泡。由于在前一个周期中在群集1和2中发生失速,所以也在时间T=2,在群集0,2和3的级4到0和在群集1的级2到0使它们的诸global_in信号被设置。在这个例子中失速只持续一个周期。于是,参照表1,群集0和3的级4到0和群集2的级4和3将被全局地失速(G),而群集1中的级3到0和群集2中的级1到0将是活性的(A)。
在时间T=3(图13),群集0和3的级4到0和群集2的级4和3处于全局地失速状态。群集2的级1到0处于活性状态,所以在这些级中的诸指令向前移动一级,以便充填在时间T=2在群集2的级2中发生的泡。因为群集2的级3和4处于全局失速状态,在群集2的级5中形成一个新泡。由于级4到0处于全局失速状态,所以也在群集0和3的级5中形成诸泡。因为整个群集1都处于活性状态,所以在群集1的级4中的泡向前移动到群集1的级5。于是,在这个时钟周期中,在所有流水线中的诸指令被再次对准。又在这个时钟周期中,解除在群集0,2和3中余下的诸失速(即,下一个状态是活性的)。图14表示在T=14在所有的群集中如通常那样地向前行进的情形。
我们从上面所述的看到如果在同一个时钟周期中在两个不同的群集中产生一个失速信号,则这只是导致在诸流水线中发生一个泡。这是因为如果一个级有它的局域失速的当前状态(L),而没有设置局域信号,则那个级的下一个状态是活性的(A),而与是否设置了global_in信号无关。这由表1和图6中的变迁5表示出来。
在上述的诸例子中,我们假定在失速开始后的一个时钟周期解除失速,使形成一个级的诸泡。然而,失速可以在一个不确定的时间周期内持续,于是与失速持续的时钟周期数有关地可以形成两级或多级的诸泡。
如在第1实施例中那样,第2实施例的延迟失速方案不允许在最后一级中产生失速。这个问题可以或者通过使一条流水线的最后一级永远不需要认定一个失速信号那样地安排处理机和指令集,或者通过将一个最后的伪级加到每条流水线上,或者通过上述两者来解决。
如在第1实施例中那样,在诸群集之间分布一个全局失速信号中的延迟可以是一个或多个时钟周期。第3实施例图15表示在本发明的第3实施例中失速控制电路的诸部分。图15所示的电路200用于在一个群集p中的一个流水线级i;将类似的电路提供给在诸其它的群集中的诸其它的流水线级。电路200接收来自群集p中的流水线级i的一个信号stall(i),该信号在那个级中的指令已经认定一个失速,并产生一个指示群集p中的流水线级i要失速的信号hold(保持)(i)。在对每个群集提供两条或多条流水线的地方,通常将信号hold(i)发送到在群集中所有流水线的级i,并从来自群集中所有流水线的级i的诸失速信号的逻辑或形成stall(i)。
参照图15,失速控制逻辑电路200包括有一个倒相输入和一个非倒相输入的与门202,或门204,有一个倒相输入和一个非倒相输入的与门206,局域保持指示器208,泡指示器210,有一个倒相输入和一个非倒相输入的与门212,寄存器214,或门216,或门218和有一个倒相输入和一个非倒相输入的与门220。
为了方便起见,将图15所示的诸信号简单地描述如下·b(i)是一个指示流水线级i是否包含一个泡的信号。这个信号与在第2实施例中的信号valid i的倒相对应。
·lh(i)是一个指示流水线级i是否被局域地保持,即响应在前一个周期中一个局域产生的失速信号被失速的信号。
·gs(i)是一个当存在来自在另一个群集中的流水线级i-1的全局失速时被认定的信号。
·stall(i)是一个指示是否在流水线级i中内部认定一个失速的信号。
·hold(i)是一个指示是否流水线级i被失速的信号。也将hold(i)馈送到流水线级i-1,提供一个机构,通过该机构将失速要求传播回到较前面的流水线级。
·gp(i)是一个用于指示一个来自另一个群集的全局失速要求正在传播回到流水线级i-1的信号。
·gr(i)是一个全局失速要求信号,将它发送回到诸其它地群集的级i-1,指示它们应该在下一个周期中失速。
·gd(i)是一个延迟的全局失速要求信号,它被延迟一个时钟周期以便得到信号在诸群集之间传播的时间。
在工作中,如果流水线级i不包含一个泡和下列条件中的一个是ture(真),则信号hold(i)被认定,它指示在下一个时钟周期上流水线级i被失速·在流水线级i内局域地认定一个失速
·在同一个群集中的流水线级i+1被失速·在另一个群集中的流水线级(i-1)在前一个周期中被失速和当前的流水线级已经没有被局域地保持。
这可以通过与门202,或门204,与门206,局域地保持指示器208和泡指示器210来实现。
泡指示器210输出一个信号b(i),如果级i包含一个泡则b(i)为true。泡指示器210的状态变迁表如下列的表2所示。表2
我们可以看到如果使级i-1失速而不使级i不失速,则设置下一个b(i)(它指示级i将在下一个时钟周期中有一个泡)。如果使级i和级i-1都不失速,则将b(i)的值传送到下一个流水线级。这由下一个b(i)等于在表2的行1和5中的b(i-1)指示出来。
局域保持指示器208输出一个信号lh(i),如果流水线级i被局域地保持,则lh(i)为ture。如果使级i响应在前一个周期中它自己局域产生的失速信号而失速,则我们说级i被局域地保持。局域保持指示器208的状态变迁表如下列的表3所示。
表3
可以看到如果当存在一个局域产生的失速,设置下一个lh(i)(即在下一个时钟周期中lh(i)取的值),除了如果存在一个全局失速和现在使lh(i)复位外。在这种情形中,因为已经存在一个全局失速所以不需要产生一个局域失速。
在第3实施例中,如果下列两个条件都是ture,则将一个全局失速要求gr(i)传送到所有其它的群集,使那些群集从流水线级i+1开始在后面一个周期中失速·在流水线级i局域地认定一个失速·没有一个全局失速从流水线级k,其中k>i,正在传播出来。
这样,如果在那个流水线级中局域地认定一个失速,则流水线级i产生一个全局失速要求gr(i),那个流水线级不受到一个也对一个或多个后面的级起作用的全局失速。这可以通过与门212来实现。
信号gr(i)在寄存器214中被延迟一个时钟周期,产生延迟失速要求信号gd(i)。流水线级i收集来自在诸其它群集中的前一个流水线级的诸延迟的失速要求信号,并在或门216中将它们组合起来,产生全局失速信号gs(i)。
如上面提到的,如果一个来自另一个群集的全局失速正在从诸后面的流水线级沿流水线向下传播,则流水线级i不产生一个全局失速要求。这防止在那些已经受到来自另一个群集的全局失速的级中产生第2个全局失速。这允许当一个局域失速被解除时在一个已经受到那个局域失速的(和产生了最初的全局失速的)群集中的诸指令向前行进。然后这些指令能够向前进入当最初认定局域失速时形成的诸泡中,从而使不同的群集回到对准的状态。
为了确定是否一个全局失速正在从一个后面的级传播过来,将信号gp(i)从级i发送到级i-1。当流水线级i不包含一个泡和下列两个条件中至少一个是ture时设置信号gp(i)·将一个来自另一个群集的全局失速加到这个流水线级并且不局域地保持这个流水线级。
·从级i+1将一个来自另一个群集的全局失速传播到这个流水线级。
这可以通过图15中的或门218和与门220来实现。
现在我们用不同的失速条件的各种不同的例子说明第3实施例的工作。图16到20表示如何处理两个周期失速。图16表示在这个时间T=1的情形。在这个时间,群集1的级3认定它的失速信号。群集1立即从级3到级0失速,如由图中的阴影线表示的那样。然而,因为在分布全局失速信号中有一个周期的延迟,所以在这个时间其它的群集不失速。第3实施例的工作的诸例子。
图17表示在T=2一个时钟周期后的情形。现在由于延迟的全局失速信号从级4开始使群集0,2和3失速。因为当指令级0,1,2和3失速时在这个群集的级4,5和6中的诸指令已经向上移动一级,所以已经在群集1的级4中形成一个泡。我们假定在这个时钟周期中仍然认定群集1的级3中的失速信号。
图18表示在T=3在下一个时钟周期中的情形。仍然从级3开始保持群集1,所以在那个群集的级3中已经进一步出现一个泡。从级4开始保持群集0,2和3,在那些群集的级5中出现诸泡。我们假定在这个时钟周期中解除失速。所以从群集1移去失速,使在那个群集中的诸指令在下一个时钟周期中自由地向前行进。然而,由于在全局失速信号中有一个周期的延迟,所以群集0,2和3保持从级4开始的失速。
图19表示在T=4的情形。因为在前一个周期中从群集1移去失速,所以在群集1中的诸指令都向前移动一级。然而,因为群集0,2和3从级4开始失速,所以在那些群集的级0到4中的指令不移动,在级5中进一步出现一个泡。这使不同的群集回到对准的状态。图20表示在T=5的情形并且在锁定步骤中的所有指令如通常那样地进行。
图21到24说明失速控制逻辑值如何对应多个失速要求,这些失速要求是由在不同的群集中的诸相同的流水线级同时认定的。我们假定群集1和3两者在同一个时间认定在级3中的一个两周期失速信号。图21表示当失速被认定时在时间T=1的情形。群集1和3两者立即从级3开始失速。图22表示在时间T=2的情形。保持在群集1和3中的失速,群集0和2两者从级4开始失速。图23表示在时间T=3的情形。从群集1和3中移去失速,但是不从群集0和2移去失速。图24表示在时间T=4的情形。现在在群集1和3中的诸指令已经向前移动,使它们再次与在群集0和2中的诸指令对准。已经从群集0和3移去失速,使得所有群集中的诸指令能在下一个时钟周期上如通常那样地自由地向前行进。
图25和26说明如果不同的群集在不同的时间解除它们的失速要求则如何处理多个失速要求。我们假定群集1和3两者在时间T=1在级3中认定一个失速信号如图21所示,和群集0和2在后面一个周期中失速如图22所示。图25表示在时间T=3的情形。在这个周期中群集1解除它的失速,所以不再是一个局域失速的主体。然而,群集3保持它的失速,所以也保持了分布到诸其它群集的全局失速信号。因为群集1不再局域失速,所以群集1的级0到3中的诸指令需要前进一级使它们与群集0和2中的诸指令对准。这使得当解除群集3中的失速时所有的群集将对准。所以,在这个时钟周期中群集1不失速。如上面参照图15所作的描述那样,这可以通过安排只有一个群集的级i被一个来自另一个群集的级i-1的全局失速所失速如果那个级不被局域地保持来实现。
图26表示在时间T=4的情形。已经允许群集1中的诸指令前进一级,使它们现在与群集0和2中的诸指令对准。在这个周期中,在群集1中的信号lh(被局域地保持)不再是ture,所以现在将来自群集3的全局失速加到群集1以及群集0和2。然后当在将来某个时间解除群集3中的失速时,不同的群集再次以通常的方式达到对准。
图27到30说明当从不同群集的不同级同时认定多个失速要求时失速控制逻辑值的工作。我们假定在群集0的级4和群集2的级2中同时认定失速要求。这两个群集同时在时间T=1失速如图27所示。
图28表示在时间T=2的情形。由于在群集0的级4中的失速,从级5开始使群集1,2和3失速。由于这个失速在群集0的级5中已经形成一个泡。因为在这个群集中在级2中的内部失速不使在指令包102和103中的指令停止前进,所以也在群集2的级3中形成一个泡。
图29表示在一个较后面的时间,T=6,当我们假定在群集0和2中的诸失速都被同时解除时的情形。在群集0的所有的级中立即解除失速。然而,在群集2中,只从级2开始解除失速,而级4和5保持失速。这是因为群集2的级0,1和2被局域地保持,而级4和5不是。如上面参照图15所作的描述那样,如果一个流水线级不被局域地保持,则这个流水线级只在响应一个全局失速信号时失速。
图30表示在时间T=7的情形。在群集2中以前在级0到2中诸指令已经前进到级1到3,从而移去以前在级3中的泡。类似地,在群集0中以前在级0到4中的诸指令前进到级1到5,使所有的群集现在再次对准。已经移去所有的失速,使得所有群集中的指令能如通常那样地在下一个时钟周期上自由地向前行进。
图31和32表示如果在同一个时间不解除诸失速要求则如何处理诸失速要求。图18表示在T=6的情形,其中我们假定只解除了在群集2中的内部失速。结果,在这个群集中从级3开始解除失速,而级4和5保持失速。图32表示在时间T=7的情形。因为在级2和较早的级中的诸指令向前移动,所以消除了在群集2的级3中的泡。现在响应来自群集0的级4的失速信号使群集1,2和3都失速。然后当在将来某个时间解除群集0中的失速时,不同的群集再次以通常的方式达到对准。
图33和34表示如果在群集2中的失速前解除在群集0中的失速则上述情况将如何发生改变。我们假定在T=6解除在群集0中的失速,如图33所示。结果,在这个周期中,群集0不失速,而群集1,2和3从级5开始失速。没有它的内部失速,必须使群集0与群集1和3再次对准,使得当群集2解除它的失速时,所有的群集将对准。
图34表示在时间T=7的情形。在群集0中的诸指令已经向前移动一级,使得群集0现在与群集1和3再次对准。响应来自群集2的级2的失速信号从级3开始使群集0,1和3失速。然后当在将来某个时间解除群集2中的失速时,不同的群集再次以通常的方式达到对准。
图35到41表示两个进一步的序列,在这些序列中产生交错的失速要求。
图35表示当在群集1中的级3上认定一个失速时在时间T=1的情形。图36表示当所有其它的群集都被来自群集1的所得到的延迟失速所失速时在T=2的情形。在这个时间,群集3中的级4也认定一个失速。当任何其它的群集已经失速时,这个来自群集3的新的失速要求不需要与那些群集进行通信。如上面参照图15所作的描述那样,如果在那个流水线级局域地认定一个失速,和那个流水线级不受到来自在另一个群集中的相同的级或较后面的级的一个全局失速,一个流水线级产生一个全局失速要求。于是,只要认定了来自群集1的全局失速,群集3响应在级4中的局域失速不产生一个全局失速要求。实际上,如果在群集1中的失速前解除在群集3中的失速,则整个处理机就像一个失速已经在时间T=1只从群集1产生那样地进行工作。
图37表示在T=3的情形。在这个时间,同时解除在群集1和3中的内部失速要求。结果,立即解除群集0中的失速。然而,因为来自群集1的延迟的全局失速仍然是有效的,所以群集3保持失速。图38表示在T=4的情形。现在群集1已经与所有其它的群集再次对准,并且解除了在所有群集中的诸失速。于是在所有群集中的诸指令能如通常那样地在下一个时钟周期中向前行进。
图39和41表示如果在群集3中的失速前解除在群集1中的失速则上述情况将如何发生改变。图39表示在T=3的情形。在这个时间,解除在群集1中的内部失速,但是不解除在群集3中的内部失速。因为群集3不产生一个全局失速,所以现在群集1不受到任何失速。
图40表示在T=4的情形。在群集1中的诸指令已经向前移动,使得群集1现在与其它的诸群集再次对准。来源于群集1的全局失速现在已经从群集0和2移去。然而,群集3由于它自己的内部失速而保持失速。在这个时间,因为群集3仍然受到一个局域失速,但不是一个全局失速,所以群集3产生一个全局失速要求。这个全局失速要求被延迟一个时钟周期(被图15中的寄存器214延迟)使得它在后面的一个时钟周期上对诸其它群集产生作用。
图41表示在T=5一个时钟周期后的情形。在群集0,1和2中的诸指令已经向前移动了一级,现在将来自群集3的全局失速加到从级5开始的群集0,1和2上。从这点向前,当在将来某个时间解除群集3中的失速时,不同的群集再次以通常的方式达到对准。
虽然上述描述作为例子涉及一个VLIW处理机,但是我们认识到本发明可应用于不同于VLIW处理机的诸处理机。可以将一个体现本发明的处理机作为一个处理机“芯”包括在一个高度集成的“在一块芯片上的系统”(SOC)中以便用于多媒体应用,网络路由器,视频移动电话,智能汽车,数字电视,声音识别,3D游戏等中。
我们将懂得上面已经单纯通过例子对本发明进行了描述,并能够在本发明的范围内作出细节上的修改。
我们能够独立地或以任何适当的组合提供在上述描述中揭示的每个特点,(其中适当的)权利要求书和所附诸图。
权利要求
1.一个处理机,它包括多条流水线,每条流水线都具有多个流水线级用于在诸连续的时钟周期上执行一个指令;和失速装置,用于响应在任何一条流水线中产生的一个失速信号在所有的流水线中使诸指令的执行失速。其中用失速装置,在一条产生失速信号的流水线中的一个指令的执行后面至少一个时钟周期上,使在一条不产生失速信号的流水线中的一个指令的执行失速,并在这条产生失速信号的流水线中的失速后面至少一个时钟周期上,解除在这条不产生失速信号的流水线中的失速。
2.一个根据权利要求1的处理机,其中可以如此安排失速装置,使得当在第1条流水线中的一个流水线级从第2条流水线接收一个失速信号时,如果那个流水线级响应由第1条流水线产生的一个失速信号在前一个周期中失速,则不使在第1条流水线的流水线级中的诸指令的执行失速。
3.一个根据权利要求1或2的处理机,其中可以如此安排失速装置,使得当一条流水线在一个级i产生一个失速信号时,使直到和包括那条流水线的级i在内的所有的级都失速。
4.一个根据上述诸权利要求中任何一项的处理机,其中当一条流水线在一个级i产生一个失速信号时,使直到和包括那条流水线的级i在内的所有的级都在一个给定的时钟周期上失速,并使直到和包括一条不产生一个失速信号的流水线的级i+m在内的所有的级都在所述的给定的时钟周期后面的m个时钟周期上失速。
5.一个根据上述诸权利要求中任何一项的处理机,其中该处理机包括多个流水线群集,每个群集包括多条流水线。
6.一个根据权利要求5的处理机,其中可以如此安排失速装置,使在诸流水线中的诸指令的执行在一个群集内在同一个时钟周期中失速。
7.一个根据权利要求5或6的处理机,其中可以如此安排失速装置,使在诸流水线中在一个不产生失速信号的群集中的诸指令的执行在诸流水线中在一个产生失速信号的群集中的诸指令的执行后面至少一个时钟周期上失速。
8.一个根据上述诸权利要求中任何一项的处理机,其中在工作中,并行地进入各条流水线的诸指令并行地离开诸流水线。
9.一个根据上述诸权利要求中任何一项的处理机,其中在工作中,在不同的流水线中执行不同的指令。
10.一个根据上述诸权利要求中任何一项的处理机,它是一个VLIW处理机,在该处理机中将来自一个VLIW指令包的诸指令并行地发送给诸流水线。
11.一个根据上述诸权利要求中任何一项的处理机,其中每条流水线至少包括一个执行级,在该执行级中至少部分地执行一个指令。
12.一个根据上述诸权利要求中任何一项的处理机,其中响应失速信号不清洗诸流水线。
13.一个根据上述诸权利要求中任何一项的处理机,其中将诸失速装置分布在两个或多个流水线级之间。
14.一个根据上述诸权利要求中任何一项的处理机,其中两个或多个流水线级每个都有相结合的失速控制电路用于控制那个流水线级的失速。
15.一个根据权利要求14的处理机,其中如此安排在每个流水线级中的失速控制电路,使它产生一个用于使另一条流水线失速的全局失速信号,并接收一个来自另一条流水线全局失速信号用于使与失速控制电路结合的流水线级失速。
16.一个根据权利要求15的处理机,其中如果相结合的流水线级不受到来自在另一条流水线中的相同的级或较后面的级的一个全局失速,则失速控制电路不产生一个全局失速信号。
17.一个根据权利要求14到16中任何一项的处理机,其中在两条或多条流水线的每一条中的失速控制电路基本上是相同的。
18.一个根据上述诸权利要求中任何一项的处理机,其中如果在一个流水线级中存在一个泡则不使那个流水线级失速。
19.一个处理机,它包括多条流水线,每条流水线都具有多个流水线级用于对经过诸流水线的信息执行一系列的工作,两个或多个流水线级每个都有相结合的失速控制电路用于控制那个流水线级的失速,失速控制电路包括用于产生一个保持信号的装置,该保持信号或者响应由那个流水线级产生的一个局域失速信号或者响应由另一条流水线产生的一个全局失速信号使结合的流水线级失速;用于产生一个全局失速信号的装置,该全局失速信号响应所述的局域失速信号使另一条流水线失速;和用于延迟全局失速信号的装置,使得在认定保持信号后的给定数目的时钟周期上认定全局失速信号,而且在解除保持信号后的相同数目的时钟周期上解除全局失速信号。
20.一个操作一个处理机的方法,该处理机包括多条流水线,每条流水线都具有多个流水线级用于在诸连续的时钟周期上执行诸指令,每条流水线都能够产生一个失速信号,该方法包括在诸流水线中的一条中产生一个失速信号;在产生失速信号的流水线中使一个指令的执行失速;在一条不产生失速信号的流水线中在至少一个时钟周期后面使一个指令的执行失速;解除在产生失速信号的流水线中的失速;和至少一个时钟周期后面解除在不产生失速信号的流水线中的失速。
全文摘要
本发明揭示了包括多条流水线的诸处理机,每条流水线都具有多个流水线级(142,146)用于在诸连续的时钟周期上执行一个指令。诸处理机包括分布的失速控制电路(148,150,152,154),它们允许在一条流水线中的一个指令变得暂时地与在另一条流水线中的一个指令不同步。这可以得到用于分布一个全局信号,如一个全局失速信号的时间。
文档编号G06F9/30GK1353357SQ0113782
公开日2002年6月12日 申请日期2001年11月8日 优先权日2000年11月8日
发明者卡尔-里克·卡西姆·翁, 尼格尔·皮特·托法姆 申请人:斯罗扬有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1