处理器装置和复合条件处理方法

文档序号:6608406阅读:237来源:国知局
专利名称:处理器装置和复合条件处理方法
技术领域
本发明涉及将指令取出、解码并运行该指令的处理器装置,特别涉及复合条件分支处理的方法和装置。
背景技术
作为此种复合条件处理方式,例如在专利文献1中,作为并列处理多个指令的构成,公开一种构成,该构成具有标记寄存器单元,可按照多个比较指令的运行结果的真伪值,独立且并列地对比特进行置位/复位;逻辑积单元,取该标记寄存器单元的保持内容和由条件分支指令指定的掩码值的每比特的逻辑积;和指令取出地址选择单元,按照逻辑积单元的输出值是否为零,相应地选择上述条件分支指令指定的分支对象地址或该指令的下一个指令地址作为下一个应运行的指令地址,将被掩码值指定的标记寄存器的各比特位置的比特状态作为复合条件,决定是否运行分支。
在专利文献1所述的并列处理装置中,通过带有多个比较指令解码器,同时地运行多个比较指令,并将运行结果寄存在标记寄存器中,按照标记寄存器的状态进行条件分支。
首先,就专利文献1所述的复合条件处理方式进行概述。作为程序,以和基于C语言的程序if(X>1 && X<10 && X!=5){复合条件成立时的处理}相对应的汇编程序指令(汇编结果)为例进行说明。另外,C语言的上述程序,可如此进行分支当三个条件X>1、X<10和X!=5全部成立时(&&表示AND运算),就运行下一个指令,即{复合条件成立时的处理},当三个条件之中只要有一个不成立时,就不运行{复合条件成立时的处理}。根据专利文献1,C语言的上述程序的汇编结果为如下所述。
SLE X,1,0 SGE X,10,1 SEQ X,5,2BNZ 7,$1(复合条件成立时的处理)$1(分支对象的处理)在第一个比较指令SLE X,1,0,…中,进行复合条件的比较运算。SLE比较指令为“SLE A,B,C”形式,是对A和B进行比较,当A<=B时,将标记寄存器的比特C(0~3比特的任何一个)置位为“1”,反之则置位为“0”。SGE比较指令为“SGE A,B,C”形式,是对A和B进行比较,当A>=B时,将标记寄存器的比特C(0~3比特的任何一个)置位为“1”,反之则置位为“0”。SEQ比较指令为“SEQ A,B,C”形式,是对A和B进行比较,当A=B时,将标记寄存器的比特C(0~3比特的任何一个)置位为“1”,反之则置位为“0”。
在第二个条件分支指令BNZ 7,$1中,进行复合条件的比较运算结果和分支条件值(掩码值)“7”的比特运算,如果条件不成立,就跳转到地址$1。BNZ条件分支指令为“BNZ M,L”形式,取M(4比特掩码值)和标记寄存器的对应比特的逻辑积,零判定电路判定逻辑积结果是否全部为“0”,当全部为“0”时,输出“1”,反之则输出“0”,并将零判定电路的输出信号(零/非零判定结果)作为分支成立/分支不成立信号输出,分支成立时,向L指定的地址分支。另外,在BNZ 7,$1中,掩码值为“0111”,进行和标记寄存器的比特0~3之中比特0~2的值相应的条件分支。
如此,使用了比较指令SLE X,1,0,…和条件分支指令BNZ的两个指令。
在该程序例中表示了如下情况与值X(相当于寄存器)相对的三个比较条件(X>1、X<10、X!=5)之中只要有一个不成立时,即,根据汇编程序码,当三个比较条件(X<=1、X>10、X=5)之中只要有任何一个成立时,就向$1跳转。但是也能够通过进行比较结果的反演,使之全部成为OR条件。
专利文献1特开平5-274143号公报专利文献1所述的复合条件处理方式,在只运算一次复合条件时,不会产生特别的问题。但是,要想用于重复运行相同条件的循环处理时,有如下所述的问题点。
第一个问题点是,因为需要将复合条件的比较指令和条件分支指令配套运行,所以每次条件分支处理需要两个步骤的运行周期。下面就这一点进行说明。
在专利文献1所述的复合条件处理方式中,如图10(a)所示,需要两个指令的周期数。在图10(a)的例中,一次需要比较指令(SLE X,1,0,…)和条件分支指令(BNZ)的两个指令的6个周期[F(指令取出)、D(解码)、EX(运行)、F、D、EX](参照图10的10-1和10-2)。在复合条件的比较指令(SLE X,1,0,…)中,并列运行和复合条件的各条件相对应的比较运算,并将比较运算结果设定为标记寄存器的指定比特,在条件分支指令(BNZ)中,根据标记寄存器的值和掩码值的逻辑运算结果进行分支判定。如此,在专利文献1所述的复合条件处理方式中,因为指令分成了比较指令和条件分支指令两个,所以指令取出和指令解码的周期至少需要两次,周期数增加,循环处理中的周期数的增加变得突出,成为限制速度的原因。
第二个问题点是,在专利文献1所述的复合条件处理方式中,比较指令形成为将复合条件全部用一个指令并列运行的构成,为了表示多个条件,指令长度变长。
例如,在比较指令SLE X,1,0 SGE X,10,1 SEQ X,5,2中,如果·指令码为8比特(假定为具有到256种指令的处理器);·因为比较器的种类为6种,所以比较器的种类的选择有3比特;·如果操作数X为从16个寄存器中选择一个,那么寄存器选择用有4比特;·设操作数的条件值(例如“SLE X,1,0”的1,和比较条件X<=1中的右边的1相对应)为从0~15可指定的值,有4比特;·设操作数在标记寄存器内的比特位置指定(比特0~3的任何一个)为2比特,则合计需要8+4+(3+4+2)×3=39比特(参照表1)。
表1

如此指令长度变长,在专利文献1的并列处理装置中,是因为复合条件全部用一个指令来指定。

发明内容
本申请所公开的发明,为了解决上述课题,大致形成为以下的构成。
本发明的一种方式(侧面)所涉及的装置,作为指令组,包含按照条件成立的有无,向分支对象进行分支/非分支的条件分支指令;和设定上述条件的条件设定指令,并具有在运行上述条件设定指令时设定由上述条件设定指令指定的条件的电路,上述电路不进行和上述条件相对应的比较运算,还具有如下电路在运行上述条件分支指令时,进行和由上述条件设定指令预先设定的上述条件相对应的比较运算,并根据上述比较运算结果,判定是否向分支对象进行分支。在本发明中,上述条件分支指令,由复合分支条件指令构成来用于分支判定,上述复合条件分支指令包含由多个条件构成的复合条件,通过运行多个上述条件设定指令,进行上述复合条件的各条件的设定,在运行上述复合条件分支指令时,并列地运行和由上述条件分支指令预先设定的多个条件分别相对应的比较运算,并根据多个上述比较运算的结果,进行分支判定,可用一个复合条件分支指令运行基于上述复合条件的条件分支处理。
本发明的另外的方式(侧面)所涉及的装置,作为指令组,包含复合条件分支指令,进行和一个或多个的条件分别相对应的比较运算,并根据在上述比较运算的结果和指定了的分支条件值之间的比较运算,向指定的分支对象进行分支;和设定一个上述条件的条件设定指令,上述装置具有多个条件设定比较部,通过上述条件设定指令的运行而被选择,由上述条件设定指令指定的条件得到设定,在运行上述复合条件分支指令时,分别运行和由上述条件设定指令设定的条件相对应的比较运算;和复合条件分支判定部,在运行上述复合条件分支指令时,利用对在多个上述条件设定比较部中分别进行的比较运算结果和由上述复合条件分支指令指定的上述分支条件值进行了比较的结果,判定是否向上述分支对象进行分支。
在本发明中,上述条件设定指令,在操作数中包含上述条件设定比较部的指定、比较运算的类别、和比较运算对象的运算用寄存器的寄存器、或上述运算用寄存器的寄存器和立即数据。
在本发明中,上述复合条件分支指令,在操作码中包含比较运算的类别,在操作数中包含上述分支条件值和上述分支对象。
在本发明中,上述条件设定比较部具有存储比较对象的两个运算用寄存器的地址信息的第一和第二地址寄存器;存储立即数据的立即值寄存器;存储比较运算的类别的比较器选择寄存器;比较器;和对上述第一和第二地址寄存器的地址进行解码的第一和第二解码器,通过上述条件设定指令的运行,设定上述第一和第二地址寄存器、或上述第一地址寄存器及上述立即值寄存器、和上述比较器选择寄存器的各寄存器的值,通过上述复合条件分支指令的运行,读出由上述第一和第二地址寄存器、或上述第一地址寄存器指定的上述运算用寄存器,在上述比较器中对通过上述第一和第二地址寄存器的指定而读出的两个上述运算用寄存器的值进行比较,或对通过上述第一地址寄存器的指定而读出的上述运算用寄存器的值和上述立即数据进行比较。
在本发明中,具有分别保存上述多个条件设定比较部的比较运算结果的多个寄存器。
在本发明中,上述复合条件分支判定部具有接受来自对上述复合条件分支指令进行解码的指令解码器的输出,存储由上述复合条件分支指令指定的上述分支条件值的第一寄存器、和存储比较运算的种类的第二寄存器;以及比较器,就分别保存上述多个条件设定比较部的比较运算结果的上述多个寄存器的输出、和由上述第一寄存器指定的分支条件值,进行由上述第二寄存器指定的比较运算,并输出比较结果。
在本发明中,具有选择器,该选择器根据指令解码器进行的上述条件设定指令的解码结果,选择由上述条件设定指令指定的上述条件设定比较部。
还具有跳转对象地址寄存器,存储由在上述指令解码器中进行了解码的复合条件分支指令指定的跳转对象地址;和选择器,接受从上述复合条件分支判定部输出的结果的真伪值,在为真时选择上述跳转对象地址,在为伪时选择程序计数器的值+1的地址,在程序计数器中进行设定。
本发明的另外的方式所涉及的方法,是处理器中的条件分支的处理方法,在指令组中,包含按照条件成立的有无,向分支对象进行分支/非分支的条件分支指令;和设定上述条件的条件设定指令,该方法具有以下各步骤(a)在运行上述条件设定指令时,设定由上述条件设定指令指定的条件,不进行和上述条件相对应的比较运算,(b)在运行上述条件分支指令时,进行和由上述条件设定指令预先设定的上述条件相对应的比较运算,并根据上述比较运算结果,判定是否向分支对象进行分支。
在本发明所涉及的方法中,上述条件分支指令,由复合分支条件指令构成来用于分支判定,上述复合条件分支指令包含由多个条件构成的复合条件,通过运行多个上述条件设定指令,进行上述复合条件的各条件的设定,在运行上述复合条件分支指令时,并列地运行和由上述条件分支指令预先设定的多个条件分别相对应的比较运算,并根据多个上述比较运算的结果,进行分支判定,可用一个复合条件分支指令运行基于上述复合条件的条件分支处理。
根据本发明,通过使在现有的复合条件处理方式中以比较指令和条件分支指令两个指令的组合来运行的条件分支处理能够用一个复合条件分支指令来运行,从而在适用于重复运行同一条件的处理的循环处理等中时,在循环处理之前,可预先设定好复合条件,在循环处理内,能够用一个复合条件分支指令进行条件分支。因此,根据本发明,和现有的复合条件处理方式所示的用两个指令进行条件分支时相比,能够实现快速化。
根据本发明,重复运行同一条件的处理的次数越多,处理性能提高的效果越大。
而且,根据本发明,条件设定指令因为是相对于一个指令只设定一个条件,所以和同时设定多个条件时相比,能够缩短指令长度。


图1是表示本发明的一实施例的构成的图。
图2是表示本发明的一实施例的条件设定比较部和其相关部位的图。
图3是表示本发明的一实施例的条件设定比较部和其相关部位的图。
图4是表示本发明的一实施例的条件设定比较部和其相关部位的图。
图5是表示本发明的一实施例的复合条件分支判定部和其相关部位的图。
图6是将本发明的一实施例中的条件设定指令和复合条件分支指令用汇编程序语言进行了例示的图。
图7是表示本发明的一实施例中的条件设定指令的操作的时序图。
图8是表示本发明的一实施例中的复合条件分支指令的操作的时序图。
图9(a)、(b)是用于说明本发明的一实施例的图,是表示了复合条件的比较运算结果和分支条件的比特的对应的图。
图10是表示在专利文献1的复合条件处理方式中适用了循环处理时的复合条件处理的操作的时序图。
具体实施例方式
为了就上述的本发明更加详细地进行说明,下面参照附图进行说明。
本发明适用于逐次运行型计算机,通过设置用于设定分支判定所使用的比较条件的条件设定指令,并将该条件设定指令先于复合条件分支指令运行,来事先设定好构成复合条件的多个比较条件。本发明具有如下单元在运行复合条件分支指令时,进行和该设定了的复合条件的各条件相对应的比较运算,并利用对比较运算的结果和用指令码指定的分支条件值进行了比较的结果,判定是否进行分支。
更详细地说,本发明优选方式的处理装置,作为指令组,包含设定用于分支判定的比较条件的条件设定指令(操作码SETCMP);和复合条件分支指令(操作码XBEQ、XBNE、XBL、XBLE、XBG、XBGE),该复合条件分支指令运行和被上述条件设定指令设定了的比较条件相对应的比较运算,并根据在上述比较运算的结果和指定了的分支条件值之间的比较运算,判定是否向指定的分支对象进行分支。本发明具有多个条件设定比较部(参照图1的2、3、4),通过上述条件设定指令的运行而被选择,设定由上述条件设定指令指定的比较条件(比较运算的类别、比较对象的寄存器,或寄存器和立即数据),在运行上述复合条件分支指令时,分别运行和由上述条件设定指令设定的比较条件相对应的比较运算;和复合条件分支判定部(图1的7),在运行上述复合条件分支指令时,利用对在多个上述条件设定比较部中的比较运算结果和由上述复合条件分支指令指定的上述分支条件值进行了比较的结果,判定是否向上述分支对象进行分支。
在本发明中,条件设定指令(SETCMP)在操作数中包含上述条件设定比较部的指定、比较运算的类别、和比较对象的运算用寄存器的两个寄存器或上述运算用寄存器的一个寄存器和立即数据。
在本发明中,上述复合条件分支指令,在操作码中包含比较运算的类别,在操作数中包含上述分支条件值和上述分支对象。
在本发明中,参照图2,各条件设定比较部具有分别存储运算用寄存器(6)的两个寄存器的地址信息的第一和第二地址寄存器(2c、2d);分别对第一和第二地址寄存器(2c、2d)的地址进行解码的第一和第二解码器(2a、2b);存储立即数据的立即值寄存器(2e);存储比较运算的类别的比较器选择寄存器(2f);和比较器(2h),上述各条件设定比较部,经条件设定指令(SETCMP)的运行,设定第一和第二地址寄存器(2c、2d)、立即值寄存器(2e)、和比较器选择寄存器(2f)的各寄存器的值,经复合条件分支指令的运行,读出由分别对第一和第二地址寄存器(2c、2d)的地址进行解码的第一和第二解码器(2a、2b)选择的运算用寄存器(6)的两个寄存器,对读出的该两个寄存器的值在比较器(2h)进行比较,或者,读出例如由对第一地址寄存器(2c)的地址进行解码的第一解码器(2a)选择的运算用寄存器(6)的一个寄存器,对读出的该一个寄存器的值和立即数据在比较器(2h)进行比较。
在本发明中,具有分别保存多个条件设定比较部(图1的2、3、4)的比较运算结果的多个寄存器(图1的5a、5b、5c)。
在本发明中,参照图5,复合条件分支判定部(图1的7)具有接受来自对复合条件分支指令进行解码的指令解码器(11)的输出,存储由上述复合条件分支指令指定的上述分支条件值的第一寄存器(7a);存储比较运算的种类的第二寄存器(7b);和比较器(7c),就分别保存多个条件设定比较部(2、3、4)的比较运算结果的多个寄存器(5a、5b、5c)的输出、和由第一寄存器(7a)指定的分支条件值,进行由第二寄存器(7b)指定的比较运算,并输出比较结果。
在本发明中,具有选择器(图1的1),该选择器(1)根据基于指令解码器(图1的11)的上述条件设定指令的解码结果,选择由上述条件设定指令指定的条件设定比较部。在本发明中,具有跳转对象地址寄存器(图1的8),存储由在上述指令解码器中解码的复合条件分支指令指定的跳转对象地址;和选择器(图1的9),接受从上述复合条件分支判定部(图1的7)输出来的比较结果,在比较结果为真时,选择跳转对象地址,在为伪时,选择复合条件分支指令的下一个指令的地址,即当前的程序计数器的值+1的地址,并在程序计数器(图1的10)中设定。
本发明形成为可用一个复合条件分支指令运行在上述专利文献1所述的现有的复合条件处理方式中,用比较指令和条件分支指令两个指令的组合来运行的条件分支处理。因此,在适用于重复运行同一条件处理的处理时,在循环处理之前设定好复合条件,在循环处理内能够用一个复合条件分支指令进行条件分支。即,根据本发明,能够实现比现有的复合条件处理方式所示的用两个指令进行条件分支时更快速的处理。
根据本发明,重复运行同一条件的处理的次数越多,处理性能提高的效果越大。
而且,根据本发明,条件设定指令因为是对一个指令只设定一个条件,所以和现有的复合条件处理方式所示的同时设定多个条件时相比,能够缩短指令长度。因此,其特征在于,在指令存储器的总线宽度较窄的系统中,适用起来也很容易。
下面,就本发明和专利文献1等现有的复合条件处理方式进行比较说明。在以往的方式中,一次需要6个周期,与之相对,根据本发明,由于能够用一个指令进行条件分支,所以只需要4个周期。重复次数为2~3次时,在本发明中,因具有预先条件设定指令的运行步骤,相应地运行周期数增加,但是如果是如现有的复合条件处理方式所示,能够用一个指令同时运行多个条件设定的并列系统,也能够用一个指令来实现,此时,即使没有重复运行,也能够形成为和现有的复合条件处理方式相同的步骤数。
另外,在本发明中,对每一个一个的条件,能够分别指定特定的寄存器和立即数据。如果将此功能适用于现有的复合条件处理方式,指定寄存器的比特数就会增加2个的量,如果设寄存器的指定为4比特,则合计为39+4×2=47比特(参照表2)。
表2

指令存储器的总线宽度在为例如32比特时,如表3所示,因为一个指令横跨两个指令存储器的地址,所以如图10(b)的10b-1所示,需要两次指令取出,指令取出周期增加,复合条件比较指令的运行速度相应地下降。
表3

与此相对,根据本发明,条件设定指令和复合条件分支指令两者和以往的方式相比,都能够以短的指令长度来实现。具体地说,如下所述。
在本发明中,在新导入到指令组中的条件设定指令
SETCMP c0,r1,L,r11中,条件设定比较部的选择为2比特,两个寄存器为8比特,比较器的种类为3比特,合计为8+2+4+4+3=21比特(参照表4)。
表4

而且,如果SETCMP c1,r2,GE,10也设立即值为4比特,就成为21比特(参照表5)。
表5

另外,在本发明中,在新导入到指令组中的复合条件分支指令XBNE 0111b,L1中,指令码为8比特,比较器的种类为3比特,分支条件值如果能够选择0~7,为3比特,跳转对象地址L1如果是指令存储器的地址值,为64K字码地址空间,则为16比特,合计为8+3+3+16=30比特,指令存储器的总线宽度在32比特以下也能够收容,指令取出周期不增加(参照表6)。
表6

而且,在使跳转对象地址为12比特的相对地址时,有32-8-3-12=9比特的富余。在下面的实施例中,用3比特表示了分支条件值,但是也可以增加更多的比特数,指定更多的复合条件。此时,条件设定比较部也需要相应该比特数的个数。下面结合具体的实施例进行说明。
实施例图1是表示本发明的一实施例的处理器的要部构成的图。参照图1,本实施例的处理器具有选择器1;多个条件设定比较部2、3、4;寄存器5;运算用寄存器6;复合条件分支判定部7;跳转对象地址寄存器8;选择器9;程序计数器10;和指令解码器11。作为多个条件设定比较部表示了三个的构成,但是在本发明中,条件设定比较部不限于三个。
选择器1具有接受指令解码器11中的条件设定指令SETCMP的解码结果的寄存器1a(存储和条件设定指令SETCMP的条件设定比较部的指定信息对应的2比特);和根据寄存器1a的值,选择条件设定比较部2、3、4的选择器1b。
条件设定比较部2、3、4由选择器1进行选择(激活),分别设定由条件设定指令SETCMP指定的一个条件,并进行和该条件相对应的比较运算。另外,在条件设定比较部2、3、4,在运行条件设定指令SETCMP时,只进行条件的设定(比较器的类别、比较对象的寄存器的指定等),条件设定比较部2、3、4中的比较运算在运行复合条件分支指令时运行。所述构成形成了本发明的主要特征之一。
寄存器5具有分别保存条件设定比较部2、3、4的比较运算结果的寄存器5a、5b、5c。
运算用寄存器6是处理器为了运算而使用的N个寄存器(寄存器文件)r1~rN。
复合条件分支判定部7具有寄存器7a(参照图5),接受来自对复合条件分支指令进行解码的指令解码器11的输出,存储由该复合条件分支指令指定的比较用的分支条件值;存储比较器的种类的寄存器7b(参照图5);和进行比较运算的比较器7c(参照图5)。
跳转对象地址寄存器8,存储由在指令解码器11中进行了解码的复合条件分支指令指定的跳转对象地址。
程序计数器(PC)10表示处理器的指令运行位置。
选择器9,以跳转对象地址寄存器8的地址和复合条件分支指令的下一个指令的地址[程序计数器的值(PC)+1]为输入,接受从复合条件分支判定部7输出的结果的真伪值(T/F)作为选择控制信号,当从复合条件分支判定部7输出来的结果为真时,选择跳转对象地址寄存器8的地址,为伪时,选择复合条件分支指令的下一个指令的地址[程序计数器的值(PC)+1]。来自选择器9的输出,被设定在程序计数器(PC)10中。
如此,在本实施例中,在指令组中重新准备以下两个指令·条件设定指令(SETCMP);·复合条件分支指令(XBNE、XBEQ等)。
条件设定指令是设定在复合条件分支指令中所使用的复合判定的各条件的指令。复合条件分支指令是进行和由条件设定指令设定的各条件相对应的比较运算,进行比较运算结果和用指令码指定的分支条件值的比较运算,并根据比较运算结果进行分支的指令。
首先,从条件设定指令进行说明。在本实施例中,如果用汇编程序的记忆码(mnemonic)表示,可表示如下SETCMP c0,r1,L,r11“SETCMP”表示条件设定指令的名称(操作码)。
第一个操作数的“c0”,意味着第一个条件设定,表示条件设定比较部2。
第二、四个操作数的“r1”和“r11”指定了运算用寄存器6内的寄存器地址1和11的寄存器。
第三个操作数的“L”表示对r1和r11的值进行比较时使用的比较运算器的种类。将比较运算器的种类与含意、C语言表记、和选择值一起在表7中一览表示。
表7

作为本实施例的具体操作,用图6说明图6的三个条件设定指令得到运行时的操作。在图6的各行的文字列中,“//”以后(右侧)的文字列是注解。图6的三个条件设定指令(SETCMP),分别进行r1<r11、r2>=10、r3==r13的比较条件的设定。另外,在图6中,在紧接着三个条件设定指令的标签L1以下,进行运算,r1~r3、r11、r13的各寄存器得到更新(指令码未图示),在下一个复合条件分支指令XBNE运行时,当条件C0~C2全部不成立时,向标签L1分支。从标签L1到复合条件分支指令XBNE构成循环处理,复合条件分支指令XBNE进行循环处理退出判定。
运行第一个条件设定指令SETCMP c0,r1,L,r11时,在图7的7-1中,在指令取出周期F,指令码从指令存储器(未图示)被读入到指令解码器11。
在下一个指令解码周期D,被读入的指令码如图2所示,在图2的指令译码器11中得到解析。在图2中,示意性地表示了相对于条件设定指令SETCMP c0,r1,L,r11,说明图1的指令解码器11的操作、和条件设定比较部2的操作的构成。
参照图2,条件设定比较部2具有存储运算用寄存器6的寄存器地址的寄存器(也称“地址寄存器”)2c、2d;解码器2a、2b,接受来自寄存器2c、2d的寄存器地址,进行解码,选择运算用寄存器6的寄存器;存储立即数据的立即值寄存器2e;比较器选择寄存器2f;选择器2g,选择立即值寄存器2e的输出和解码器2b的输出(被选择的运算用寄存器6的读出值)的一个进行输出;和比较器2h,输入解码器2a的输出(被选择的运算用寄存器6的读出值)和选择器2g的输出,进行由比较器选择寄存器2f选择的比较运算。另外,图1的条件设定比较部3、4也和条件设定比较部2形成为同一构成。
在指令解码器11中,条件设定指令SETCMP c0,r1,L,r11中的“c0”被解码成“00b”(2进位数);“r1”被解码成“0001b”;“L”被解码成“010b”;“r11”被解码成“1011b”。
同时,表示条件设定“c0”的值“00b”从指令解码器11被存储到选择器1的寄存器1a中。
而且,在下一个指令运行周期EX,选择器1的寄存器1a的值“c0”作用于选择器1的选择器1b,条件设定比较部2得到选择(图2的选择器1内的Sa被激活),“0001b”、“1011b”和“010b”分别从指令解码器11被存储到条件设定比较部2的寄存器2c、2d和2f。
另外,寄存器2c~2f的值,在条件设定指令SETCMP c0,r1,L,r11的指令运行后也被保持不变。即,在直到下一个作用于条件设定比较部2的条件设定指令被运行的期间,条件设定比较部2内的各寄存器的值不被改写。
图2表示运行了到该时刻为止的操作的状态。
分别在条件设定比较部2的寄存器2c中存储表示运算用寄存器r1的寄存器地址“1”(“0001b”);在条件设定比较部2的寄存器2d中存储表示运算用寄存器r11的寄存器地址“11”(“1011b”);在条件设定比较部2的寄存器2f中存储表示比较器的种类“L”的值[在表7中用“2”(“010b”)表示,在图2(a)中用“<”表示]。
在第二个条件设定指令SETCMP c1,r2,GE,10中,在第四个参数(第四个操作数),是立即值(immediate value)“10”被指定,而不是运算用寄存器。
如图7的7-2所示,在操作上,除了将立即值“10”存储到条件设定比较部3的寄存器3e(参照图3)中以外,和第一个条件设定指令时同样地进行处理。
作为结果,在条件设定比较部3,如图3所示,分别在寄存器3c中存储表示运算用寄存器r2的寄存器地址“2”(“0010b”);在寄存器3e中存储表示立即值“10”的值“10”(“1010b”);在寄存器3f中存储表示比较器的种类“GE”的值[在表7中用“5”(“101b”)表示,在图2(b)中用“≥”表示]。
在第三个条件设定指令SETCMP c2,r3,EQ,r13中,也是通过条件设定“c2”,选择条件设定比较部4,和第一个指令SETCMP c0,r1,L,r11同样地进行处理,成为如图7的7-3所示的操作。
作为结果,在条件设定比较部4,如图4所示,分别在寄存器4c中存储表示运算用寄存器r3的寄存器地址“3”(“0011b”);在寄存器4d中存储表示运算用寄存器r13的寄存器地址“13”(“1101b”);在寄存器4f中存储表示比较器的种类“EQ”的值[在表7中用“0”(“000b”)表示,在图2(c)中用“==”表示]。
如此在本实施例中,在运行复合条件分支指令前,先用条件设定指令设定好构成复合条件的多个条件。
另外,条件设定指令只是设定条件,不进行实际的比较运算。原因是在该时刻,成为比较运算的对象的运算用寄存器6中,还没有值被存储。比较运算靠复合条件分支指令的运行来进行。
在本实施例中,在指令组中导入的另一个追加指令复合条件分支指令,是进行和用条件设定指令设定了的各条件相对应的比较运算,并进行该结果和分支条件值的比较运算的指令,在汇编程序的记忆码中,对于图6所示的例,可表示如下XBNE 0111b,L1“XBNE”是指令的名称,“NE”的部分表示比较运算器的种类(参照图7)。除了“NE”以外,也可以是“EQ”、“L”、“LE”、“G”、“GE”的比较。
“0111b”是分支条件值,将进行和在各条件下的比较运算结果的比较(比特比较)的值用2进位数表示。
“L1”表示在复合条件的分支的判定结果为真时进行分支的程序的跳转对象地址。
说明本实施例中的复合条件分支指令的操作。
在图8的8-1中的第一次复合条件分支指令XBNE 0111b,L1
中,在指令取出周期F,指令码从指令存储器(未图示)被读入指令解码器11。
在下一个指令解码周期D,被读入的指令码如图5所示,在图5的指令解码器11中得到解析。另外,复合条件分支判定部7具有寄存器7a、7b和比较器7c。
在指令解码器11中,XBNE的“NE”被解码成“001b”;“0111b”直接被解码成“0111b”;“L1”被解码成“XXXXXXXXb”(表示跳转对象地址L1的值)。
同时,从指令解码器11,将“0111b”置位到复合条件分支判定部7的寄存器7a中;将表示比较“NE”的值“001b”(在表7中用“1”表示,在图5中用“!=”表示“NE”)存储到复合条件分支判断部7的寄存器7b中。
另外,跳转对象地址“L1”从指令解码器11被存储到跳转对象地址寄存器8中。各寄存器的值,在图8中,在下一个周期8-A(XBNE的指令运行周期EX)得到反映。
与此同时,在条件设定比较部2(参照图2)中,用指定运算用寄存器6的寄存器的寄存器2c、2d,解码器2a、2b从运算用寄存器6之中读出相应的运算用寄存器6(此时,为r1、r11)的值。被读出的r1、r11的值被供给到比较器2h。
在条件设定比较部3和条件设定比较部4也同样地进行处理。参照图3,由解码器3a指定的运算用寄存器6的值被读出。在条件设定比较部3,由寄存器3c选择的运算用寄存器6的寄存器r2被读出,寄存器r2的值和由选择器3g选择的立即值寄存器3e的值10被供给到比较器3h。
参照图4,在条件设定比较部4,用指定运算用寄存器6的寄存器的地址寄存器4c、4d,解码器4a、4b从运算用寄存器6之中读出相应的运算用寄存器6(此时,为r3、r13)的值。被读出的运算用寄存器6的r3、r13的值被供给到比较器4h。
在XBNE的指令运行周期EX(图8的8-A),在条件设定比较部2(参照图2),用被解码器2a、2b读出的两个运算用寄存器的值,比较器2h在比较器选择寄存器2f显示的比较器中运行比较运算,并将结果存储到寄存器5a(参照图5)。
在此,如条件设定比较部3所示,当比较运算的一边的值为立即值时,在选择器3g(图3)选择立即值寄存器3e(图3)的值,将其交接给比较器3h,进行比较运算。在条件设定比较部4也进行同样的处理。
将条件设定比较部2的比较器2h、条件设定比较部3的比较器3h、和条件设定比较部4的比较器4h的各自的运算结果,存储到寄存器5a~5c。
而且,在下一个指令运行周期EX(图8的8-B),参照图5,在比较器7c运行存储有比较运算结果的寄存器5a~5c和从指令码得到的分支条件值(寄存器7a的值)的比较运算。另外,复合条件分支指令紧接着指令取出F、解码D,包含两个指令运行周期EX(第一个指令运行周期EX是在条件设定比较部2、3、4的比较运算的运行和对寄存器5的设定,第二个指令运行周期EX是基于由比较器7c进行的寄存器5的值和分支条件值的比较的分支判定)。
在此使用的比较器的种类,为由寄存器7b选择的值“NE”[在表7中用“1”(“001b”)表示,在图3中用“!=”表示]。
在此,寄存器5a、5b、5c如图9(a)所示,分别和寄存器7a的分支条件值的各个比特0、1、2相对应。另外,当寄存器7a的分支条件值的值为“0011b”时,变成如图9(b)所示。
在XBNE的下一个指令运行周期EX(图8的8-B)值,比较器7c的运算结果输出T/F为“T”,即表示复合条件的各条件全部不成立时,跳转对象地址寄存器8的地址被选择器9选择,并被代入程序计数器10。
此时,在指令存储器总线,跳转对象地址寄存器8的地址值被输出,在下一个指令取出周期,“L1”地址的指令从指令存储器被读入(图8的8-C)。
之后,在再次运行复合条件分支指令XBNE 0111b,L1时(图8的8-2),进行和上述同样的处理,但是,因为此次是如图8的8-D(XBNE的指令运行周期EX)所示,全部的条件都成立了,所以比较器7c(参照图3)的运算结果输出T/F成为“F”,下一个指令的地址(n+1)被选择器9选择,并被代入程序计数器10。
此时,在指令存储器总线,下一个指令的地址被输出,在下一个指令取出周期,复合条件分支指令XBNE 0111b,L1的下一个指令从未图示的指令存储器被读入(图8的8-F)。
如上所述,通过预先用条件设定指令设定好多个条件,用复合条件分支指令进行多个条件的比较运算,进而根据该结果和指定了的分支条件值的比较,判定有无分支,从而能够用一个指令进行多个条件的条件分支。
下面,就本实施例的作用效果,结合和专利文献1所述的以往的方式的比较对比进行说明。
相对于在前面所述的以往方式中,必须将比较指令和条件分支指令两个指令组合来进行条件分支,在本实施例中,通过预先进行好条件分支所使用的条件的设定,能够用一个条件分支指令运行条件分支处理。因此,能够对应进一步的快速化。特别是通过适用于重复运行相同条件的处理中,而具有和以往相比增加快速性的效果。另外,在复合条件分支指令中,因为和多个条件相对应的比较处理得到并列运行,因此可以实现高速化。
另外,如以往方式所示,用一个指令表现所有的复合条件时,操作数部分增加,指令长度变长。在指令存储器的总线宽度较窄的系统中,指令取出需要追加周期。
与此相对,在本实施例中,通过形成为可在条件分支指令之外用另外的条件设定指令来设定条件,从而条件设定指令和条件分支指令能够以与通常的比较指令和条件分支指令没有多大变化的指令长度来实现。从而,即使在指令存储器宽度较窄的系统中,没有指令取出的追加周期也可以的情况增加。这是因为它具有可预先设定好多个条件的条件设定指令;和进行被设定了的复合条件的运算与分支条件的比较,并判定是否进行分支的复合条件分支指令。
因为在本实施例中,条件分支处理只是一个复合条件分支指令被运行,用一个指令的运行周期就可以,所以比以往的用两个指令进行条件分支能够更快速地进行条件分支。
而且,在本实施例中,形成为具有用于一个一个进行条件设定的选择器1、用于存储复合条件的寄存器2c~2f、用于从运算用寄存器6取得值的解码器2a和2b,通过所述的构成,能够在复合条件分支指令之中运行复合条件的比较运算。
从而,起到如下所述的作用效果(优点)。
在以往方式中,因为形成为复合条件比较指令和条件分支指令两个指令的组合,所以需要两次的指令取出和指令解码的周期。
与此相对,在本实施例中,因为可用条件分支指令一个指令得到相同的结果,用一次的指令取出和指令解码就可以,所以相应地指令周期数减少,更加快速。不过,因为是预先分别用条件设定指令设置多个条件,所以如果包含该部分,在仅一次的条件分支处理中,是以往的方式显得更快速。但是,在适用于多次重复相同复合条件的处理时,重复次数越多,本发明越能快速地处理。
以往方式的复合条件比较的指令因为是全部用一个指令来指定多个条件,所以指令的操作数部分变长。因此,如果指令存储器的总线宽度窄于该指令长度,就需要有追加的指令取出周期,相应地指令运行周期数增加。
另一方面,在本实施例中,因为基本上是用一个指令指定一个条件,所以能够形成为和另外的通常的运算指令等同等程度的指令长度。因此,也可以不需要追加的指令取出周期的可能性很高,所以运行周期数也不增加。
另外,在本实施例中,作为条件分支指令的条件(condition),以比较数值大小的两项比较运算为例进行了说明,但是,本发明不限于所述的两项比较运算,另外,除了大小比较以外,对于基于处理器的标记(零标记、进位标记)等的判定的条件分支也可以适用。另外,作为条件的比较运算,也可以形成为使用逻辑运算。
以上结合上述实施例说明了本发明,但是,本发明不只限于上述实施例的构成,还包含在本发明的范围内可由本领域技术人员进行的各种变形和修改。
权利要求
1.一种处理器装置,其特征在于,作为指令组,包含按照条件成立的有无,向分支对象进行分支/非分支的条件分支指令;和设定上述条件的条件设定指令,并具有在运行上述条件设定指令时设定由上述条件设定指令指定的条件的电路,上述电路不进行和上述条件相对应的比较运算,具有如下电路在运行上述条件分支指令时,进行和由上述条件设定指令预先设定的上述条件相对应的比较运算,并根据上述比较运算结果,判定是否向分支对象进行分支。
2.根据权利要求1所述的处理器装置,其特征在于,上述条件分支指令,由复合分支条件指令构成,用于分支判定,上述复合条件分支指令包含由多个条件构成的复合条件,通过运行多个上述条件设定指令,进行上述复合条件的各条件的设定,在运行上述复合条件分支指令时,并列地运行和由上述条件分支指令预先设定的多个条件分别相对应的比较运算,并根据多个上述比较运算的结果,进行分支判定,可用一个复合条件分支指令运行基于上述复合条件的条件分支处理。
3.一种处理器装置,其特征在于,作为指令组,包含复合条件分支指令,进行和一个或多个的条件分别相对应的比较运算,并根据在上述比较运算的结果和指定了的分支条件值之间的比较运算,向指定的分支对象进行分支;和设定一个上述条件的条件设定指令,上述处理器装置具有多个条件设定比较部,通过上述条件设定指令的运行而被选择,由上述条件设定指令指定的条件得到设定,在运行上述复合条件分支指令时,分别运行和由上述条件设定指令设定的条件相对应的比较运算;和复合条件分支判定部,在运行上述复合条件分支指令时,利用对在多个上述条件设定比较部中分别进行的比较运算结果和由上述复合条件分支指令指定的上述分支条件值进行了比较的结果,判定是否向上述分支对象进行分支。
4.根据权利要求3所述的处理器装置,其特征在于,上述条件设定指令,在操作数中包含上述条件设定比较部的指定、比较运算的类别、和比较运算对象的运算用寄存器的寄存器、或上述运算用寄存器的寄存器和立即数据。
5.根据权利要求3所述的处理器装置,其特征在于,上述复合条件分支指令,在操作码中包含比较运算的类别,在操作数中包含上述分支条件值和上述分支对象。
6.根据权利要求3所述的处理器装置,其特征在于,在上述条件设定比较部中,通过上述条件设定指令的运行而被设定的条件,在直到如下情况为止的期间被保持在上述条件设定指令之后运行另外的条件设定指令,通过上述另外的条件设定指令而再次选择上述条件设定比较部,被改写成另外的条件。
7.根据权利要求3所述的处理器装置,其特征在于,上述条件设定比较部具有存储比较对象的两个运算用寄存器的地址信息的第一和第二地址寄存器;存储立即数据的立即值寄存器;存储比较运算的类别的比较器选择寄存器;比较器;和对上述第一和第二地址寄存器的地址进行解码的第一和第二解码器,通过上述条件设定指令的运行,设定上述第一和第二地址寄存器、或上述第一地址寄存器及上述立即值寄存器、和上述比较器选择寄存器的各寄存器的值,通过上述复合条件分支指令的运行,读出由上述第一和第二地址寄存器、或上述第一地址寄存器指定的上述运算用寄存器,在上述比较器中对通过上述第一和第二地址寄存器的指定而读出的两个上述运算用寄存器的值进行比较,或对通过上述第一地址寄存器的指定而读出的上述运算用寄存器的值和上述立即数据进行比较。
8.根据权利要求3所述的处理器装置,其特征在于,具有分别保存上述多个条件设定比较部的比较运算结果的多个寄存器。
9.根据权利要求8所述的处理器装置,其特征在于,上述复合条件分支判定部具有接受来自对上述复合条件分支指令进行解码的指令解码器的输出,存储由上述复合条件分支指令指定的上述分支条件值的第一寄存器、和存储比较运算的种类的第二寄存器;以及比较器,就分别保存上述多个条件设定比较部的比较运算结果的上述多个寄存器的输出、和由上述第一寄存器指定的分支条件值,进行由上述第二寄存器指定的比较运算,并输出比较结果。
10.根据权利要求3所述的处理器装置,其特征在于,具有选择器,该选择器根据指令解码器进行的上述条件设定指令的解码结果,选择由上述条件设定指令指定的上述条件设定比较部。
11.根据权利要求10所述的处理器装置,其特征在于,还具有跳转对象地址寄存器,存储由在上述指令解码器中进行了解码的复合条件分支指令指定的跳转对象地址;和选择器,接受从上述复合条件分支判定部输出的结果的真伪值,在为真时选择上述跳转对象地址,在为伪时选择程序计数器的值+1的地址,在程序计数器中进行设定。
12.一种处理器中的条件分支处理方法,其特征在于,在指令组中,包含按照条件成立的有无,向分支对象进行分支/非分支的条件分支指令;和设定上述条件的条件设定指令,在运行上述条件设定指令时,设定由上述条件设定指令指定的条件,不进行和上述条件相对应的比较运算,在运行上述条件分支指令时,进行和由上述条件设定指令预先设定的上述条件相对应的比较运算,并根据上述比较运算结果,判定是否向分支对象进行分支。
13.根据权利要求12所述的条件分支处理方法,其特征在于,上述条件分支指令,由复合分支条件指令构成,用于分支判定,上述复合条件分支指令包含由多个条件构成的复合条件,通过运行多个上述条件设定指令,进行上述复合条件的各条件的设定,在运行上述复合条件分支指令时,并列地运行和由上述条件分支指令预先设定的多个条件分别相对应的比较运算,并根据多个上述比较运算的结果,进行分支判定,可用一个复合条件分支指令运行基于上述复合条件的条件分支处理。
全文摘要
本发明提供一种抑制周期数的增加和指令长度的增大,使条件分支处理快速化的处理装置。作为指令组包含复合条件分支指令,进行和一个或多个条件分别对应的比较运算,根据比较运算结果和指定分支条件值间的比较运算,向指定的分支对象进行分支;和设定一个条件的条件设定指令,处理器装置具有多个条件设定比较部,通过条件设定指令的运行而被选择,设定由条件设定指令指定的条件,在运行复合条件分支指令时,分别运行和由条件设定指令设定的条件对应的比较运算;和复合条件分支判定部,在运行复合条件分支指令时,利用对在多个条件设定比较部的比较运算结果和由复合条件分支指令指定的分支条件值进行了比较的结果,判定是否向分支对象进行分支。
文档编号G06F9/38GK101046741SQ20071009195
公开日2007年10月3日 申请日期2007年3月30日 优先权日2006年3月30日
发明者寺岛卓 申请人:恩益禧电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1