微处理器的制作方法

文档序号:6479586阅读:121来源:国知局
专利名称:微处理器的制作方法
技术领域
本发明涉及具有指令予取功能的微处理器,特别是涉及这样的微处理器使其能免除在存储予取指令的队列缓冲器中的转移指令执行时的刷新。
就是说,将事先由主存储器或高速缓存所予取出的指令存储到可高速访问的小容量的指令予取缓冲器(队列缓冲器)中,由此就能够真正削减由取指令时的内存访问所产生的执行的迟延。
在现有的技术中,一旦执行转移指令,则不论转移目的地地址如何都中止予取和后续指令的执行,刷新(清除)队列缓冲器,这样使到此时之前所存储的指令变为无效,要等到从转移目的地地址重新予取并将转移指令存储到队列缓冲器后,再度开始指令的执行。
这样,在现有技术中,由于在转移指令执行时要刷新队列缓冲器,所以予取的次数增加,造成流水线处理混乱,妨碍高速化。
于是,在特开平7-73034号公报中,将转移指令执行时的转移目的地地址和存在于队列缓冲器内的指令的相应地址范围进行比较,转移目的地地址处于相应地址范围内时,不刷新队列缓冲器而使用队列缓冲器内的指令,从而减少转移后的予取次数。
在此现有技术中,的确能减少转移后的予取次数,但是,由于是将转移指令作为通常的无条件转移指令来处理,所以,用于指令译码后的转移的地址生成处理变得复杂,因此存在电路也变得复杂且大规模化的问题。
本发明是针对上述问题而,目的是要获得这样的微处理器使其在内部无须设置复杂的结构而能免除在无条件转移时的不必要的队列缓冲器的刷新。
根据本发明,不是作为通常的转移指令而动作、而是将与通常的传送指令、运算指令等同样动作的新的转移指令(如BJMP)追加到微处理器。根据这个转移指令,队列缓冲器内的指令数成为可变的。即,在指令译码器中,一旦识别出从队列缓冲器输入的指令是预先设定的所定的转移指令,则将到这个转移指令(BJMP)所指定的转移目的地之前的指令为止作为相应转移指令(BJMP)的操作数处理,由此就使队列缓冲器内的指令数成为可变的。而后,将包含该操作数部分的相应转移指令的指令字长输出到程序计数器并更新程序计数器的地址。另外,指令译码器,在此转移指令(BJMP)时不进行队列缓冲器的刷新。
下面的发明相关的微处理器,其特征在于在上述发明中,在上述转移目的地的指定中,使用标号。
根据本发明,将标号(Label)附加到转移指令(BJMP)的操作数部分,到标号(Label)所指定的转移目的地之前的指令为止作为相应转移指令(BJMP)的操作数处理。
下面的发明相关的微处理器,其特征在于在上述发明中,在上述转移目的地的指定中,指定相应转移指令和转移目的地的相对地址。
根据本发明,将相对地址附加到转移指令(BJMP)的操作数部分,到相对地址所指定的转移目的地之前的指令为止作为相应转移指令(BJMP)的操作数处理。
下面的发明相关的微处理器,其特征在于在上述发明中,上述队列控制器单元,为了保留从当前所执行的指令到预先设定的所定个数的相对地址数的之前的多个指令而进行上述队列缓冲器的输入输出控制,作为上述相对地址可以指定负的相对地址。
根据本发明,队列控制器单元,为了保留从当前所执行的指令到预先设定的所定个数的相对地址数的之前的多个指令而进行上述队列缓冲器的输入输出控制,由此在队列缓冲器中,至少保留有上述所定的个数的当前所执行的指令之前的地址中存储的指令。因此,如果将负的相对地址附加到转移指令的操作数部分,则能向负地址侧进行转移。
下面的发明相关的微处理器,其特征在于具有主存储器;队列缓冲器,存储从这个主存储器予取的指令;程序计数器,生成存储着主存储器上的下条要执行的指令的地址;指令译码器,解读从上述队列缓冲器输出的指令;队列控制器单元,采用上述程序计数器的输出进行对上述队列缓冲器的指令的输入输出控制,其中,上述指令译码器,一旦识别出从上述队列缓冲器输入的指令是所定的转移指令,则将到这个转移指令所指定的转移目的地之前的指令为止作为NOP指令处理,将相应转移指令及上述NOP指令部分的指令字长输出到上述程序计数器,并且在更新程序计数器的地址的同时,不进行上述队列缓冲器的刷新。
根据本发明,指令译码器一旦识别出从上述队列缓冲器输入的指令是所定的转移指令,则将到这个转移指令所指定的转移目的地之前的指令为止作为NOP指令处理,将相应转移指令(BJMP)的指令字长和上述NOP指令部分的指令字长输出到程序计数器,并更新程序计数器的地址。另外,在此转移指令(BJMP)时,不进行队列缓冲器的刷新。
图2是表示用于说明本发明实施方式1的指令序列图。
图3是表示用于说明本发明实施方式2的指令序列图。
图4是表示用于说明本发明实施方式3的指令序列图。
图5是表示用于说明本发明实施方式4的指令序列图。符号说明1主存储装置,2队列缓冲器(指令队列),3输入指针,4输出指针,5队列控制器,6译码器,7执行单元,8程序计数器,BJMP转移指令。


图1是表示本发明相关的微处理器的内部结构例子的方框图。在图1中,1是主存储器;2是队列缓冲器(指令队列);3是输入指针;4是输出指针;5是队列控制器;6是译码器;7是执行单元;8是程序计数器。包括队列控制器5、输入指针3和输出指针4、构成了权力要求中所说的队列控制器单元。
主存储装置1中,存储着要执行的程序的指令序列。队列缓冲器2例如是可以存储32个指令的缓冲器,存储从主存储装置1予取出的指令。指令译码器6对从队列缓冲器2读出的指令的指令代码进行译码(解读)。这个指令译码器6的动作是本发明的主要部分,所以,后面要详细叙述。
指令译码器6的译码结果和指令的操作数部分输入到执行单元7中。执行单元7用所输入的译码结果和操作数部分,进行数据转送、四则运算、逻辑运算、大小比较、移位运算等处理来执行指令。
程序计数器8是存储着在主存储装置1上的下条指令的执行地址的寄存器,它进行动作是将从指令译码器6给出的指令字的长度与当前的程序计数器的计数值(寄存器值)相加。
队列控制器5根据程序计数器8或指令译码器6的输出控制输入指针3和输出指针4,由此来执行对队列缓冲器2的指令的输入输出控制。输入指针3是由来自队列控制器5的写控制信号而增加(或减少),由此来执行对从主存储装置1予取的指令的队列缓冲器2的写入控制。输出指针4是由来自队列控制器5的读控制信号增加(或减少),由此来执行对存储在队列缓冲器2的指令的指令译码器6的读出控制。
下面,图1之外采用图2对本发明的实施方式1进行说明。
在这个实施方式1中,对于图1的微处理器,追加新的转移指令(BJMP)(参照图2)。这个转移指令(BJMP)虽然进行与通常的转移指令不同的处理,但是结果还是进行与通常的转移指令相同的转移处理。只是在这个转移指令(BJMP)中,指令执行时,不刷新队列缓冲器2。图2是表示存储在队列缓冲器2中的指令序列的概念图。
在这个实施方式1中,在表示转移指令(BJMP)的转移目的地的操作数部分,指定标号(label)。
在图1的指令译码器6中,解读从队列缓冲器2输入的指令,一旦识别出所输入的指令是上述转移指令(BJMP)时,就将到由这个转移指令(BJMP)的操作数部分的标号(label)所指定的相对地址之前为止存在的指令(该场合增加指令INX和INY)作为转移指令(BJMP)的操作数来处理。
即,指令译码器6对队列控制器5发送用于更新输出指针4的控制信号。用这个控制信号,队列控制器5更新输出指针4。此结果,从队列缓冲器2向指令译码器6输入下条指令(该场合为INX)。解读这个输入的指令,判断这个指令是否是标号(label)。这种场合,指令(INX)不是标号,所以指令译码器6对队列控制器5再送出控制信号并更新输出指针4。这样,直到指令译码器6检测出标号(label),将控制信号送给队列控制器并读入到由标号(label)所指定的相对地址之前为止所存在的指令。这样,指令译码器6检测作为操作数必须处理的指令部分(该场合为INX和INY)的指令数和作为操作数处理的指令部分的指令字长。
而后,指令译码器6将上述作为操作数处理的指令部分(该场合为INX和INY)的指令字长与转移指令(BJMP)的指令字长相加,并将这个相加结果作为该转移指令(BJMP)的指令字长输出到程序计数器8。再者,指令译码器6将用于禁止刷新的所定的控制信号输出到队列控制器5。
程序计数器8将从指令译码器6输入的转移指令(BJMP)的指令字长与当前的地址值相加后,更新地址值。另外,队列控制器5不用来自指令译码器6的上述控制信号的输入进行队列缓冲器2的刷新。
因而,此后通过在指令译码器6从队列缓冲器2读出由标号(label)所指定的相对地址的下条指令(这个场合为取指令LDA)并进行解读处理,结果是进行与通常的转移指令同样的处理。
这样,在这个实施方式1中,由于将到由转移指令(BJMP)的标号(label)所指定的转移目的地为止的指令代码作为转移指令(BJMP)的操作数部分处理,所以到转移目的地为止的指令代码作为转移指令(BJMP)的1条指令处理,结果所处理的指令数就成为可变的。就是说由于指令数作成可变,所以能获得与无条件转移同样的转移动作。
在实施方式1中,转移指令(BJMP)不作为通常的转移指令动作、而是使其与其它的数据传送指令、运算指令等同样地动作,且不作为通常的转移指令对待、不让其发生队列缓冲器2的刷新,所以转移时的地址运算变得比现在简单,由此就无须在内部设置复杂的电路结构、可以去掉转移时的不必要的队列缓冲器的刷新。因此,可以用简便的结构来减少转移时的重取,从而可以提高处理速度。
再者,图2的场合,表示的是到标号(label)所指定的相对目的地之前存在的指令为2条指令的场合,当然这个指令数也可以是1或3条以上。另外,成为转移指令(BJMP)的操作数的对象的指令,当然也不限于图2所示的增加指令INX、INY。
下面,用图1和图3对本发明的实施方式2进行说明。
在这个实施方式2中,如图3所示,用相对地址来指定转移指令(BJMP)的转移目的地。在图3中,在转移指令(BJMP)的操作数部分作为相对地址指定“3”。
在指令译码器6中,解读从队列缓冲器2输入的指令,一旦识别出所输入的指令是上述转移指令(BJMP),则将到由这个转移指令(BJMP)的操作数部分的相对地址(该场合为3)所指定的相对地址之前为止存在的指令(该场合是增加指令INX和INY)作为转移指令(BJMP)的操作数来处理。
即,指令译码器6对队列控制器5,根据转移指令(BJMP)的操作数部分的相对地址(该场合为3)来识别应作为操作数处理的指令部分(该场合为INX和INY)的指令数(该场合为2)和指令字长。
而后,指令译码器6将上述作为操作数处理了的指令部分(该场合为INX和INY)的指令字长与转移指令(BJMP)的指令字长相加,并将这个相加结果作为该转移指令(BJMP)的指令字长输出到程序计数器8。另外,指令译码器6将向队列控制器5输出用于禁止刷新的所定的控制信号。
程序计数器8将从指令译码器6输入的转移指令(BJMP)的指令字长(包含INX和INY的指令字长)与当前的地址值相加后,更新地址值。另外,在队列控制器5不由来自指令译码器6的上述控制信号的输入来进行队列缓冲器2的刷新。
因而,此后,通过在指令译码器6从队列缓冲器2读出由转移指令(BJMP)的操作数部分所指定的相对地址的指令(这个场合为取指令LDA)并进行译码处理,结果是进行与通常的转移指令同样的处理。
这样,在这个实施方式2中,由于将在转移指令(BJMP)的操作数部分作为相对地址所指定的转移目的地为止的指令代码作为转移指令(BJMP)的操作数来处理,所以通过作为转移指令(BJMP)的1条指令来对待到转移目的地为止的指令代码,结果是所处理的指令数成为可变的。就是说通过与先前的实施方式1一样设指令数为可变,由此能获得与无条件转移同样的转移动作。
在实施方式2中,由于将转移指令(BJMP)的结果的操作数长作为对应由转移指令(BJMP)的本来的操作数部分所指定的相对地址的长度,由此进行相当于通常的转移指令的动作,所以转移时的地址运算变得比现在更简单,由此无须在内部设置复杂的结构、可以去掉转移时的不必要的队列缓冲器的刷新。因此,可以用简便的结构来减少转移时的重取,可以提高处理速度。
再者,图3的场合,表示的是到由标号(label)所指定的转移目的地为止存在的指令为2条指令的场合,当然这个指令数也可以是1或3条以上。另外,成为转移指令(BJMP)的操作数对象的指令,也不限于图3所示的增加指令INX、INY。
下面,用图1和图4对本发明的实施方式3进行说明。
在这个实施方式3中,如图4所示,用相对地址(这个场合为“-3”)来指定转移指令(BJMP)的转移目的地。只是,这个场合与先前的实施方式2不同,使向负地址侧的转移成为可能。
在这个实施方式3中,队列控制器5,为保留从当前执行着的指令预先设定的所定个数(例如5个)的相对地址数之前的多个指令而进行上述队列缓冲器的输入输出控制。就是说对输入指针3和输出指针4总是至少空开5个地址数的差来进行各指针3、4的输出。
在指令译码器6中,解读从队列缓冲器2输入的指令,一旦识另出所输入的指令是上述转移指令(BJMP),则将到由这个转移指令(BJMP)的操作数部分的相对地址(该场合为-3)所指定的相对地址之前存在的指令(该场合是增加指令INX和INY)作为转移指令(BJMP)的操作数来处理。
即,指令译码器6对于队列控制器5,根据转移指令(BJMP)的操作数部分的相对地址(该场合为-3),识别应作为操作数来处理的指令部分(该场合为INX和INY)的指令数和指令字长。
而后,指令译码器6将上述作为操作数处理的指令部分(该场合为INX和INY)的指令字长与转移指令(BJMP)的指令字长相加,并将这个相加结果附加上负号、作为相应转移指令(BJMP)的指令字长输出到程序计数器8。另外,指令译码器6将用于禁止刷新的所定的控制信号输出到队列控制器5。
程序计数器8将从指令译码器6输入的转移指令(BJMP)的指令字长与当前的地址值相加后,更新地址值。另外,在队列控制器5不用来自指令译码器6的上述控制信号的输入来进行队列缓冲器2的刷新。
因而,此后,在指令译码器6从队列缓冲器2读出由转移指令(BJMP)的操作数部分所指定的相对地址(-3)的指令(这个场合为取指令LDA)并进行解读处理,结果,进行与通常的向负地址的转移指令同样的处理。
这样,在这个实施方式3中,由于是将到由转移指令(BJMP)的操作数部分的相对地址所指定的向负地址的转移目的地为止的指令代码作为转移指令(BJMP)的操作数处理,所以也可以作为转移指令(BJMP)的1条指令来对待到转移目的地为止的指令代码,结果,所处理的指令数就成为可变的。
在此实施方式3中,由于将转移指令(BJMP)的结果的操作数长作为对应由转移指令(BJMP)的本来的操作数部分所指定的相对地址的长度,由此进行相当于向负地址的转移指令的动作,所以转移时的地址运算变得比现在要简单,由此就无须在内部设置复杂的结构、而能去掉转移时的不必要的队列缓冲器的刷新。因此,可以用简便的结构来减少转移时的重取,从而可以提高处理速度。
再者,图4的场合,表示的是由标号(label)所指定的到相对地址为止存在的指令为2条的场合,当然,这个指令数也可以是1或3以上。只是,这个上限是由队列缓冲器2中保留的指令个数来规定的。另外,成为转移指令(BJMP)的操作数对象的指令,也不限于图4所示的增加指令INX、INY。
下面,依据图1和图5对本发明的实施方式4进行说明。
在先前的实施方式1~3中,是将到转移目的地为止存在的指令作为转移指令(BJMP)的操作数来处理的,但是这些操作数处理了的指令实际上是不执行任何指令,所以即使将它们换成空操作指令(NOP)也没有问题。
例如,在提供CISC(Complex Instruction Set Computer复杂指令集计算机)那样的汇编程序级的高级指令集的处理器中,用一条指令的汇编代码能进行非常高级的处理。其时,如果将操作数中某些实际上不执行而仅仅记述的指令置换成NOP、并使其能够执行,那么不变更指令数就能执行与先前的实施方式同样的转移动作。
在这个实施方式4中,如图5所示,在表示转移指令(BJMP)的转移目的地的操作数部分指定标号(label)。
这种场合,在图1的指令译码器6中,解读从队列缓冲器2输入的指令,一旦识别出所输入的指令是转移指令(BJMP)时,就将到由这个转移指令(BJMP)的操作数部分的标号(label)所指定的相对地址为止存在的指令(该场合为增加指令INX和INY)都作为NOP来处理。
即,指令译码器6,对队列控制器5发送用于更新输出指针4的控制信号。用这个控制信号,队列控制器5更新输出指针4。此结果,由队列缓冲器2将下条指令(该场合为INX)输入到指令译码器6。将这个输入的指令INX作为NOP处理。指令译码器6,还对队列控制器5发送控制信号并更新输出指针4。队列控制器5用这个控制信号更新输出指针4。结果,从队列缓冲器2输入下条指令(该场合为INY)到指令译码器6。将这个输入的指令INY作为NOP处理。
这样,直到指令译码器6检测出标号(label)为止,将控制信号送给队列控制器5并读入到由标号(label)所指定的相对地址为止存在的指令,并将全部这些作为NOP处理。另外,这个场合,指令译码器6每次从队列缓冲器2输入指令时,都将对应各个指令的指令字长发送给程序计数器8。指令译码器6,还将用于禁止刷新的所定的控制信号输出到队列控制器5。
程序计数器8,每次从指令译码器6送来指令字长(该场合为通常的一条指令的字长)时,就将这个指令字长与当前的地址值相加,更新地址值。另外,队列控制器5不用来自指令译码器6的上述控制信号的输入进行队列缓冲器2的刷新。
因而,此后,在指令译码器6从队列缓冲器2读出由标号(label)所指定的相对地址的指令(这个场合为取指令LDA)并进行解读处理,结果,进行与不改变指令数的通常的转移指令同样的处理。
这样,在这个实施方式4中,由于将到由转移指令(BJMP)的标号(label)所指定的转移目的地为止的指令代码作为NOP处理,所以不改变指令数就能与无条件转移同样获得转移动作。因此,转移时的地址运算变得简单,由此就无须在内部设置复杂的结构而获得去掉转移时的不必要的队列缓冲器的刷新。因此,可以用简便的结构来减少转移时的重取,从而可以提高处理速度。
再者,图5的场合,表示的是到由标号(label)所指定的转移目的地为止存在的指令为2条的场合,当然这个指令数也可以是1或3条以上。另外,成为NOP处理对象的指令,也不限于图5所示的增加指令INX、INY。
然而,在上述各个实施方式中,指令译码器6在输入了转移指令(BJMP)时,对队列控制器5输出用于禁止刷新的所定的控制信号,但特别要指出的是,不用对队列控制器5输出控制信号而禁止在队列缓冲器2的刷新也是可以的。这种场合,队列控制器5在输入了控制信号时要进行刷新。
如上所述,根据本发明,追加新的转移指令(BJMP)、将到由这个转移指令(BJMP)所指定的转移目的地之前的指令为止作为相应转移指令(BJMP)的操作数处理,由此使队列缓冲器内的指令数成为可变,将包含该操作数部分的相应转移指令的指令字长输出到程序计数器并更新程序计数器的地址,同时在此转移指令(BJMP)时不进行队列缓冲器的刷新,所以转移时的地址运算变得简单,由此就无须在内部设置复杂的结构而可以去掉转移时的不必要的队列缓冲器的刷新。因此可以用简便的结构来减少转移时的重取,可以提高处理速度。
下面的发明相关的微处理器,在转移目的地的指定中能采用标号,所以不必指定到转移目的地为止的相对地址就可以进行转移。另外,可以用简便的结构来减少转移时的重取,可以提高处理速度。
下面的发明相关的微处理器,在转移目的地的指定中,能指定相应转移指令与转移目的地的相对地址,可以用简便的结构来减少转移时的重取,可以提高处理速度。
下面的发明相关的微处理器,进行上述队列缓冲器的输入输出控制以便保留从当前所执行的指令预先设定的所定的相对地址数之前的多个指令,同时可以指定负的相对地址,所以可以向负地址侧进行转移。而且,可以用简便的结构来减少转移时的重取,进而提高处理速度。
下面发明相关的微处理器,追加新的转移指令(BJMP),将到由这个转移指令(BJMP)所指定的转移目的地之前的指令为止作为NOP指令处理,将相应转移指令和NOP指令的指令字长输出到上述程序计数器并更新程序计数器的地址,同时在此转移指令(BJMP)时,不进行队列缓冲器的刷新,所以转移时的地址运算变得简单,而且,转移时也没有变更指令数。由此就无须在内部设置复杂的结构而可以去掉转移时的不必要的队列缓冲器的刷新。因此,可以用简便的结构来减少转移时的重取,进而提高处理速度。
权利要求
1.一种微处理器,其特征在于包括主存储器;队列缓冲器,存储从这个主存储器予取的指令;程序计数器,生成存储着主存储器上的下条要执行的指令的地址;指令译码器,解读从上述队列缓冲器输出的指令;队列控制器单元,采用上述程序计数器的输出进行对上述队列缓冲器的指令的输入输出控制,其中,上述指令译码器,一旦识别出从上述队列缓冲器输入的指令是所定的转移指令,则将到由这个转移指令所指定的转移目的地之前的指令为止作为相应转移指令的操作数来处理,将包含该操作数部分的相应转移指令的指令字长输出到上述程序计数器,并且在更新程序计数器的地址的同时,不进行上述队列缓冲器的刷新。
2.权利要求1记载的微处理器,其特征在于在上述转移目的地的指定中,使用标号。
3.权利要求1记载的微处理器,其特征在于在上述转移目的地的指定中,指定相应转移指令和转移目的地之间的相对地址。
4.权利要求3记载的微处理器,其特征在于上述队列控制器单元为了保留从当前所执行的指令到预先设定的所定个数的相对地址数的之前的多个指令而进行上述队列缓冲器的输入输出控制,作为上述相对地址可以指定负的相对地址。
5.一种微处理器,其特征在于包括主存储器;队列缓冲器,存储从这个主存储器予取的指令;程序计数器,生成存储着主存储器上的下条要执行的指令的地址;指令译码器,解读从上述队列缓冲器输出的指令;队列控制器单元,采用上述程序计数器的输出进行对上述队列缓冲器的指令的输入输出控制,其中,上述指令译码器,一旦识别出从上述队列缓冲器输入的指令是所定的转移指令,则将到由这个转移指令所指定的转移目的地的之前的指令为止作为NOP指令处理,将相应转移指令和上述NOP指令部分的指令字长输出到上述程序计数器,并且在更新程序计数器的地址的同时,不进行上述队列缓冲器的刷新。
全文摘要
获得用简便的结构便可以减少转移时的重取并使处理速度提高的微处理器。通过追加新的转移指令(BJMP)、将到由此转移指令(BJMP)所指定的转移目的地之前的指令为止作为相应转移指令(BJMP)的操作数来处理,使指令数成为可变。将包含作为上述操作数处理过的指令的相应转移指令的指令字长输出到程序计数器8,并且在更新程序计数器8的地址的同时,此转移指令(BJMP)时不进行队列缓冲器2的刷新。
文档编号G06F9/32GK1385782SQ0210187
公开日2002年12月18日 申请日期2002年1月16日 优先权日2001年5月11日
发明者原口喜行 申请人:三菱电机株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1