技术简介:
本发明针对中央处理器中微码转移速度单一和灵活性不足的问题,提出了一种能以两种不同速度进行微转移的硬件,并具有选择性禁止后续指令进入流水线的能力。在检测结果未达成前采用试探性转移通道,在时钟暂停期间如检测错误则导向正确目标。还设计了独立装入与下推功能的返回堆栈,允许微码用文字或数值向量化地转移到指定行并返回。
关键词:快速慢速微转移,选择禁止流水线,试探性转移校正
专利名称:增强的中央处理器(cpu)微转移结构的制作方法
本发明涉及的是各种数据处理系统的中央处理器。更具体地讲,本发明涉及的是在数据处理系统的中央处理器中所用到的各微指令组的微转移和执行微转移的硬件。
微转移的概念,即在数据处理系统的中央处理器中微指令的微码级范围的转移,这个概念在先有
技术领域:
中是众所周知的。人们知道在数据处理系统的中央处理器中,可以根据选定检测条件下选择的结果来执行微转移。在使用流水线结构的数据处理系统中,实现微转移可以根据检测的结果来进行,而这些检测结果是在执行微指令中不同级别的微码字段的过程中得到的。某些先有技术中,系统只有做“快”转移的能力,即转移所根据的检测结果是在执行给定的微指令中第一级微码字段时读出的。其他系统则仅有做“慢”转移的能力,即是根据执行微指令中第二级微码产生的检测条件的结果。在先有技术中,如能够执行微转移的系统还具有当一条微码行发生转移后,禁止其他微码行进入流水线的功能。禁止后面微码行执行的必备条件取决于该微码所执行的功能以及它是否与该转移一致,而此转移则是由CPU根据该微码检测条件的结果实现的。
这些作为先有技术的微转移结构方案不仅为系统的设计人员提供了灵活性,并且还可能设计出这样一种系统,它能够作出更多的判定,从而能够在分离的更高级别上工作。尽管如此,系统硬件的设计以及其工作过程仍可作出改进。
例如,不能既可执行快转移又可执行慢转移的系统,就不如两种转移均可执行的系统灵活。这样的系统一般不能在任意特定的时间内进行一个以上的检测,甚至不能在执行任意一个微指令时进行一个以上的检测。在这样的系统中,有些系统仅能做快微转移,有些系统仅能做慢微转移。只能做快微转移的系统不能根据现行微指令执行第二级时所产生的条件完成转移。造成这一缺点的明显原因是请求执行转移的判定条件,是在转移部件检测之后的晚一个时间周期上发生的。
另一方面,仅能执行慢转移的系统则必须多等一个时钟周期,以便得到第二级微码指令产生的转移条件,这样在执行转移目标的微码之前,便失去了一个时钟周期。
执行慢微码转移的先有技术的另一缺点是系统缺乏在做出转移判定之前有选择地禁止附加的一行或两行微码行进入流水线的灵活性。同样,那些能完成快速微转移的先有技术系统,则缺乏在做出转移判定之前有选择地禁止现行行或下行微码的一行或两行进入流水线的灵活性。
进一步讲,如果一个先有技术系统在根据已经得到的检测条件做出微转移的判定之后,还能允许执行附加的数行微码,那么这种系统一般均不能调用一条子程序然后再返回到任一其它微码行上,而仅能回到产生转移的微码行后的那条微码行上。
目前所使用的微转移部件的又一个缺点是先有技术中为执行快速和慢速微转移用到的硬件,一般都不能相互校验,除非使用附加的校验部件。
再之,不论执行哪一种微转移的系统,普遍要采用一个返回地址堆栈。系统将该堆栈作为一个向量为处理器指出一个返回地址,以便使转移发生前正在执行的微码继续运行。本发明的发明人了解到在先有技术中返回地址的结构,都具有共同的特点,即装入返回地址不是用旋转的方法从堆栈中分离出来的。这就导致灵活性的减小和中央处理器硬件费用的增加。
因此,本发明的一个目的就是为既能做快转移又能做慢转移的中央处理器提供一种结构。
本发明的另一目的是提供一种微转移结构,该结构在执行任一条微指令时,可以进行一个以上的检测。
本发明的又一目的是提供一种微转移结构;该结构能够在做微码慢速转移时禁止附加行的任一行或两行进入流水线。
本发明的再一目的是提供一种微转移结构;该结构能够在做快速微转移时禁止现行或下行微码行的任一行或两行进入流水线。
本发明的进一目的是提供一种微转移结构;该结构既可以执行流水线中的附加行,又可以调用一条子程序,并且在从子程序返回时,仍可执行控制存储器中任意行的微码。
本发明的另一目的是提供一种微转移结构;该结构能够执行快速和慢速两种微码转移,并且有对快速和慢速两种微码转移硬件的操作进行相互校验的功能。
本发明的还一目的是提供一个在执行微转移时所用的返回地址堆栈,其返回地址的装入可以从堆栈的旋转中分离出来。
对于本发明的所有这些目的,本领域中具有一般技术水平的人只要研究一下本发明的说明书、附图及权项便会明瞭。
本发明所公开的是在一个CPU中为执行微转移所使用的一种结构。该结构可以有选择地执行在控制存储器中的下一行微码,或是执行一行由某向量所指出的微码,且该向量是在执行现行微指令的第一级微码时产生了正的检测结果而出现的,该向量也可根据现行微指令的第二级微码的执行结果而出现。当两个检测条件都得到了满足,且执行第一级微码和执行第二级微码时所完成的检测均证明是正确的,则执行第二级微码的结果所指出的转移地址要优先于另一个地址而被选定。
如果选中了某一微转移,则对那些在引起微转移的并已进入流水线的指令可以全部予以禁止或禁止其中任一条,或均不被禁止。
另外,一个硬件逻辑附加块可以使系统继续工作,即假定判定结果是不做微转移,而是继续装入流水线;但如果该假设不正确,系统可纠正错误,并在稍后的时间内,在该微转移的地址上设置另一个向量。在该地址被取出和装入期间,暂停电路将停止系统的其它时钟。
当判定是微码调用时,就将返回地址放在返回地址堆栈上。该返回地址不一定就是产生微转移时挂起的那一地址,也可能是控制存储器中的任一地址。返回地址装入堆栈是从堆栈的旋转中分离出来的。
图1是本发明较佳实施方案中一个双速微转移硬件的框图。
图2是在微转移已发生后,能够随意禁止流水线中操作的硬件运行的框图和逻辑图。
图3是执行微转移的错误假设做出后,重新引回至正确地址的硬件逻辑图,其中包括在引回进行时用于暂停各系统时钟的硬件。
图4是根据本发明设计的一个返回地址堆栈的较佳实施方案框图。
图5是执行微转移判定的硬件框图,该判定可从若干个检测条件中进行选择。
微转移是一种机器执行微码的功能。该功能指可禁止执行下行微码,而去执行另一系列指令,该指令的地址是根据某种检测条件结果产生的向量指定的。本发明与未决专利申请中所描述的中央处理器硬件连用时将显得特别有用,这里特别说明一下正未决专利申请,其序列号为537886;537429;和537038,申请日为1983年9月29日。
微指令一般是从控制存储器中读取的,只要将所要求的微指令地址放在控制存储地址总线上就可将其取出。首先参见图1,在本发明中,微码行的地址是呈现在控制存储总线10上,该总线的宽度可以根据需要而定,但要与系统中地址位的数目相适应。控制存储总线10是由控制存储地址总线4∶1多路转换器(4∶1MUX)12驱动。多路转换器12从三种数据源中进行选择经连线16从控制存储地址寄存器(CSAD)14;经连接20从快速微转移寄存器(FAST)18;和经连线24从慢速微转移寄存器(SLOW)22中获得数据。
在进行连续微指令操作时,即当未发生微转移时,控制存储总线10经连线26返馈,并在递增电路28中加1,且在该系统的下一个时钟之后送回到控制存储地址寄存器14中。这样在正常工作时,控制存储器的地址寄存器14中,并经连线16与多路转换器12相接。
但是,在要求微转移时,多路转换器12就从快速微转移寄存器18或慢速微转移寄存器22中选择一个向量地址。这种选择是根据慢满足检测(SMET)触发器30和快满足检测(FMET)触发器32的状态来定的,这两种触发器经连线34和36分别驱动多路转换器12的选择输入口A和B。如图1所示,控制存储地址寄存器14,快速微转移寄存器18,慢速微转移寄存器22,SMET触发器30和FMET触发器32均是由该系统的时钟经连线38所驱动的。
SMET触发器30和FMET触发器32都是由多项检测条件40之一的结果所驱动的,而这些检测条件经多路连线42加到慢速检测选择器44上,再由慢速检测选择器经连线46驱动SMET触发器30,另外还加到快速检测选择器48上,再由快速检测选择器经连线50驱动FMET触发器32。这方面的有关内容将结合图5给以进一步解释。慢速检测选择器44和快速检测选择器48均根据予先编好的微码字段的内容,从多路连线42上的各检测条件40中进行选择。慢速检测选择器44使用该微码第二级的微码字段,从各检测条件40中选出它所要做的条件。快速检测选择器48则使用第一级微码中的微码字段从各检测条件40中,选出它要执行的检测条件。
使用这一特定要求的硬件,可以根据慢速或快速检测的结果做出推测,即根据执行第一级微码字段时所做的检测,或是在第二级微码字段期间所做的检测来做出推测。这样,微转移的初步判定便可在得到检测的实际结果之前做出。虽然这种硬件功能明显地加快了系统的运行,但这种推测很可能是错误的,如果做出了一项错误的推测,该系统的时钟则可以暂停,同时将一个正确的向量加到控制存储地址总线10上。这一功能是由暂停逻辑块56来完成的。暂停逻辑块56经连线58接至慢速检测选择器44;或通过连线60接至快速检测选择器48上,这样可将推测所做的判定给予最终判定。加在连线62上的一个附加信号禁止了各选中寄存器的时钟,直至产生了正确的向量。暂停逻辑块56的操作将结合图3给以进一步解释。
用于快速微转移寄存器18和慢速微转移寄存器22的向量选择是由多路转换器完成的。具体地讲,多路转换器(MUX)64经连线66给快速微转移寄存器18加了一个向量,而多路转换器(MUX)68经连线70给慢速微转移寄存器22加了一个向量。多路转换器64和68具有几种信息源。多路转换器64和68可经连线74从返回地址堆栈(RAS)72中得到一个向量。多路转换器64还可以从第一级微码字段的某一部分中得到一个向量,这是经连线78从行控制存储器(HCS)76的输出端得到的。由此可见,加到快速微转移寄存器18上的向量是由第一级微码的某一部分给出的,而该级微码的另一部分则给出了可能造成这个向量被选中的检测条件。
多路转换器68可经连线82从第二级寄存器(R2REG)80的输出端得到一个来自第二级微码某一部分的向量。这样,第二级微码字段的一部分可给出该系统转移的向量,而此转移是根据某一特定的检测结果,且这一检测结果是由该第二级微码的另一部分给出的。
在执行慢速转移指令和转移目标行期间,将有两行微码可能进入流水线,使用本发明的硬件,可以作出判定禁止这两行微码的进入或禁止其中一行,或两行均不禁止。同样,在进行某一快速微码转移时,也可以做出判定来禁止现行代码行的操作,或者下行代码的操作,或者是两者均不禁止。负责完成这种功能的硬件是空操作指令发生器(NoPGEN)84,它可经连线86和88分别产生NoP1和NoP2两种信号。NoP发生器84所做出的判定是根据慢满足检测触发器30和快满足检测触发器32的输出条件,以及经连线90来自第二级寄存器(R2REG)80的第二级微码的一位字段,和经连线94来自第三级寄存器(R3REG)92的第三级微码的一位字段。
确定哪一个向量要由多路转换器64和68来选择,是分别靠第一级和第二级微码的字段来控制的。
如图1所示,在连线38上的时钟脉冲,通过多路转换器12将快速微转移寄存器18或慢速微转移寄存器22的内容,或是控制存储地址寄存器14中的内容送至控制存储总线10上。很显然控制存储地址总线10的内容将随着下一个时钟脉冲被记录到第一级地址寄存器(RIADR)96中。寄存由这一信号所取出的控制存储器的内容所用到的时钟脉冲与上相同。这样,在任一给定的时刻上,RIADR96的内容也是一个向量,用以标定微码转移执行后的返回地址。
RIADR96的内容是经多路转换器(MUX)98而到达返回地址推栈(RAS)72的。由于该返回地址堆栈72的输入是经多路转换器98,因此就有一个与原来放在R1地址寄存器96中不同的向量置入该返回地址堆栈中。所示出的多路转换器98还有另一输入端,是来自SK总线100,该SK总线100在未决专利申请的图1中示出,其序号为537877,申请日为1983年9月29日。
实现本发明的增强微转移能力的方法之一是使用某种方法,根据所要执行的微指令,使微码向量化。为此目的,存取慢速微转移寄存器22数据的多路转换器68也可由入口表提供数据,该表可以对可能要执行的微指令存放一个向量。因此,本发明的转移能力具有根据这一指令使微码向量化的能力。
在转移指令进入流水线和做出要转移判定期间内,将会有代码进入流水线。本发明的硬件较佳实施方案能够有选择地禁止这些代码进入流水线。由于这些流水线并非总是要求禁止,所以其选择能以微码的形式编为代码。
现参见图2,这是为有选择地禁止各行代码所用到的硬件方框图,且对这种禁止结构给予了说明。在执行转移微码中的两位字段,即前不操作位字段(ENoP)102和后不操作位字段(LNoP)104,均能被选用来禁止各行微码。如果出现了一个快速转移,ENoP字段102会禁止现行行的第二级微码操作;如果是一个慢速转移,ENoP102则禁止下一行代码的第二级操作。如果是一个快速微转移,LNoP字段会禁止在流水线中的下一行微码,而如果是一个慢速转移,LNoP字段则会禁止在流水线中更前一级微码行的第二级操作。
102和104微码位,随其它微码字段一起,根据依次时钟周期,通过第二级寄存器(R2REG)80和第三级寄存器(R3REG)92。当这两位微码处于流水线中的第二级时,它们与快满足检测触发器(FMETF/F)32一起,来决定哪些微码行需要予以禁止。当这两位微码位于流水线的第三级时,它们就与慢满足检测触发器(SMETF/F)30一起,来决定哪些微码行需要予以禁止。
在图2示出的较佳实施方案中,由于做出判定的硬件是以与门为基础的,所以很明显如果快满足检测触发器32和慢满足检测触发器30均未置位(即没有保持逻辑1),没有转移被选中,那么所有的微码行都不会被禁止。但是如果这两个触发器中的任意一个或两个都被置位了,那么禁止微码行的判定完全以该微码的ENoP102和LNoP104部分起作用。如果此两位码均不是逻辑1,则没有微码行要予以禁止。但是如果这两行中有一行或二行均是逻辑1,禁止部件的运行情况如下。
做快速转移的情况是,假设快满足检测触发器32已经置位。这样在106和108两个与门输入端之一上将出现一个“1”。如果LNoP位104已经置位则与门106的输出端出现一个“1”,这是表示禁止下一行微码的信号。如果ENoP位102已经置位,则与门108的输出端出现一个“1”,这是要禁止现行微码行的信号。无论SMET触发器30的状态如何,与门106输出端一个逻辑“1”的出现将导致或门110输出端出现一个逻辑“1”,这样NoP1信号112也成为逻辑“1”。NoP1信号112是用来禁止根据第一级微码选择的某一结果而进行的操作。或门110的输出要送至触发器114的D端输入端。触发器114经过一个时钟周期延迟后,将或门110输出端的逻辑1送至或门116输入端,再至NoP2输入端118。NoP2输入端118是用来禁止微码的所有第二级操作。
当慢满足检测触发器30的输出端已出现一个逻辑“1”时,该逻辑“1”就被送到与门120和122。在第三级寄存器中的ENoP位102处出现的一个“1”将使与门122工作。与门122的输出是禁止下条微指令的信号,它要被送到118产生NoP2的或门116处。如果位于第三级寄存器中的LNoP位104已被置位,它将通过与门120在或门110的输出端置入一个“1”,以维持112的NoP1输出。在一个时钟脉冲之后这位“1”被装入到触发器114并经或门116至NoP2的输出端。
本发明较佳实施方案中,对于尚未得出的检测结果可先做推测;根据这些推测的结果可以做出微转移判定。既然是推测,难免有做出的推测最终发现却是错误的情况。本发明的硬件通过图1中的暂停逻辑块56将正确的值分别放在SMET触发器30和FMET触发器32中,它又将正确的地址通过4∶1多路转换器12置于控制存储地址总线上,并将NoP1和NoP2的正确数值置于连线86和88中。
参见图3,现所描述的是在暂停期间用于指向正确地址的部件。
以一个可能做出的错误推测为例,引用一个用于存放指令或数据的高速缓冲器。在任一高速缓冲器中,如果所要求的数据或代码并未出现,会产生一个信号指出高速缓冲器“失常”。
高速缓冲器和高速缓冲器“失常”的硬件在本
技术领域:
中是众所周知的,同时也不在本发明的范围内。为达到公开本发明的目的,可以假设高速缓冲器失常的信号是出现在连线200上的一个逻辑“1”。该逻辑“1”只有当微码字段指出要进行推测时才通过与门202。用以指出该推测是用于慢速还是快速方式的此微码字段,要予以译码以产生分别出现于连线204和206上的信号。在此两条连线中出现一个逻辑“1”就表示做出过一个推测。无论出现哪个逻辑“1”,均能经或门208使与门202的第二个输入端打开。与门202的输出驱动触发器210和D输入端及与门212和214。当连线204和206上出现一个“1”,且和与门202的输出端成与的关系时,就表示曾做出过某一推测。这种情况下会产生一个信号以指出当时在运行中的快速还是慢速检测操作应当予以废除,以便校正FMET32或SMET30触发器当前的值。与门212和214用此信号来决定是SMET30还是FMET32需要进行修正。
暂见图1,这些具有最终判定权的信号分别送入连线58和60。图3中的触发器210的作用是在时钟暂停之前,使当前正在执行中的时钟周期予以完成,以避免将此CPU闭锁。当然,在推测是错误的情况下,在一个时钟周期内会有一个错误的向量出现在控制存储器地址总线10上。而其正确的选择将通过多路转换器12加到控制存储器地址总线10上。除SMET30,FMET32,和触发器210之外,所有寄存器的时钟均停了一个周期。如图3所示,这是通过将反相器216的信号接至与门218,而产生禁止信号所造成的。
现参见图4,所示出的是返回地址堆栈的一个较佳实施方案。该返回地址堆栈可由若干多路转换器和寄存器所组成。多路转换器的作用是将寄存器连接成一个通道、闭环回路或返馈的方式。虽然在本领域中的熟练技术人员均知道,这种电路排列可有任意级,但图4所示的本实施方案是具有N级这种电路排列。
先参见多路转换器MUXo220,可以看出此MUXo220可经连线224将来自MUX98的信号装入返回地址堆栈RASo222,或经连线228接收返回地址堆栈寄存器RASN226的内容,或经连线230将其所属的RASo222的内容循环,也可经连线234接收RAS1232的内容。同样,MUX1236既可经连线238将来自MUX98的信号装入RAS1232上,也可经连线240接收RASo222的内容,或经连线242循环RAS1232的内容,还可经连线246接收RAS2244的内容。
仅有MUXo220和MUX1236这两个多路转换器才可接收来自MUX98的信号。此系统中所有其它的多路转换器则仅能接受上一个寄存器的内容,或循环它自己的寄存器的内容,或接收下一个寄存器的内容。按此种方法,各种数据就可下推进栈或上推出栈,或留于堆栈之中。
多路转换器的控制是通过一个选择逻辑器270在连线272上置入一个信号实现的。该信号控制了在返回地址堆栈中的所有多路转换器,并决定了各寄存器的流动方式。选择逻辑器270是由NoP1和NoP2的信号(该信号的产生方法已结合图2予以叙述)和SMET30及FMET32触发器(见图1)的输出所驱动的。另外,来自微码第二级部分的一个字段可经连线274送至选择逻辑器270处。
堆栈的操作过程如下。一般选择逻辑器270使各堆栈寄存器形成自身循环,在某个子程序被调用时,一个返回地址就被送入此堆栈的RASO或RAS1中,这取决于出现的是快速还是慢速调用。选择逻辑器270给堆栈的各多路转换器一定的条件使其将堆栈各寄存器的内容向前推进。微码决定了是RIADR寄存器96还是SK总线100的内容要送入堆栈。
如果出现的是慢速子程序调用,则当此调用指令处于执行的第二级时,微码字段274就使MUXo装入RASo。如果SMET触发器已经置位,则在下一个时钟脉冲时,堆栈才被下推。
与此相似,如已出现的是快速调用,则当此调用的指令是位于执行的第二级时,MUX1便会被驱动并装入到RAS1。但与慢速调用不同的是,除非FMET触发器32已经置位否则装入和下推均不会发生。
从图4可以看出,装入或下推操作是相互分开的。通过使用该种堆栈,便可不必使用此种硬件,即通常应该提供一个返回地址附本直至该转移判定已经完成的硬件。
堆栈的上托,或从子程序调用返回的操作如下。
在慢速返回中,微码字段274与SMET触发器30一起,通过选择逻辑器270使堆栈的各多路转换器将寄存器中的内容上推出栈(也称为上托)。这一动作的发生是在该返回地址的指令处于执行的第三级时且SMET触发器已经置位的时候。RAS1232的输出在堆栈上托前的一个时钟脉冲时加于多路转换器64中。
与此相似,在快返回时当该返回指令处于执行的第二级且FMET已经置位时,便将堆栈上托。应该注意的是,由于是流水线作业,下推和上托之间会发生冲突。在这种冲突情况下,两者均不会出现,但装入却可进行。
如果在快速、或慢速调用或返回的第二级执行期间,在选择逻辑器270的输出端出现了NoP2的信号,这时无论是装入、下推或上托均不会发生。
这种堆栈的另一种设计方案,是使用了双端口寄存器组件,它可将数据存入堆栈且从堆栈中读出数据时将所用的地址指针分开。
现参见图5,这是一个用于快速和慢速检测选择的检测选择逻辑框图。这些模块的操作过程如下。如图5所示,图中40处大量的检测条件被送入多路转换器(MUX)302的输入端。选择哪一个输入使其通过多路转换器302是由图示304处该微码第一级中的一个微码字段完成的。多路转换器302的输出经连线306被送入2∶1最优多路转换器(2∶1MUX)308的一个输入端。2∶1多路转换器308的另一输入源则来自微码的一个字段,它决定满足该检测条件的是正的为“真”还是负的为“真”。多路转换器308由有最终判定权的输入端58或60来驱动,这取决于该部件所代表的是慢速选择器还是快速选择器。多路转换器308的输出是满足检测线46或50,这取决于正在讨论的是哪一个模块。至此,本领域中的熟练技术人员可以看出,大量检测条件中的任一个均可分别用于将SMET30或FMET32触发器置位,其条件的选择完全靠该微码来控制。某一最优条件的出现,是上一行微码对检测条件选择的结果。
权利要求在数据处理系统的中央处理器中,用于执行微转移的硬件包括可保存一个第一地址的装置用于要执行的下邻连续微指令;可保存一个第二地址的装置用于执行快速微转移;可保存一个第三地址的装置用于执行慢速微转移;选择装置用于选择上述第一、第二和第三地址之一,并可将其送入一条控制存储器地址总线上;控制上述选择装置的部件以响应用微码选择的检测条件。
专利摘要一种中央处理器中执行微码转移的硬件能以两种不同速度进行微码转移,并在转移中具有有选择地禁止进入流水线的附加行的灵活性。对于尚未达到的检测结果可使用一条试探性的转移通道,而且在时钟暂停期间,如果检测结果是错误的,该试探性通道可通向正确的转移目标。有一个返回堆栈,其装入和下推是相分离的以适应转移的两种速度。微码可以用文字或寄存的数值装入到返回地址堆栈,并在一个延迟调用之后允许在指定行上进行向量化的转移和返回。
文档编号G06F9/26GK85101313SQ85101313
公开日1987年1月10日 申请日期1985年4月1日
发明者罗伯特·惠廷·霍斯特, 理查德·李·哈里斯 申请人:坦德姆计算机有限公司