(57)【要約】【課題】分岐予測回路を使用せずに遅延スロットを有効に活用して処理性能を向上させるマイクロプロセッサを得る。【解決手段】ソフトウェアによって書き換え可能なレジスタ５が、遅延スロットに投入する命令を条件成立時の後続命令にするか条件不成立時の後続命令にするかを決定する信号Ａを出力し、条件分岐命令実行時に、デコード回路６が信号Ａの値に基づいてコードインタフェース回路２にＣＰＵ１に供給する次命令を条件成立時の後続命令にするか条件不成立時の後続命令にするか指定する信号Ｂを出力する。【選択図】　　　　図１
2004062427.tif 000002
【特許請求の範囲】
【請求項１】
実行命令供給部から演算部に対して条件分岐命令が供給された時に、条件成立時の後続命令と条件不成立時の後続命令のうち少なくともいずれか一方を遅延スロットに投入するマイクロプロセッサにおいて、
プログラムにより書き換えられ、遅延スロットに投入する命令を条件成立時の後続命令にするか条件不成立時の後続命令にするかを決定する第１の信号を出力するレジスタと、
上記実行命令供給部から上記演算部に対して条件分岐命令が供給された時に、上記第１の信号の値に基づき上記演算部へ条件成立時の後続命令と条件不成立時の後続命令のどちらを供給するかを指定する第２の信号を上記実行命令供給部に出力する制御部とを備えたマイクロプロセッサ。
【請求項２】
制御部は、レジスタの代わりにマイクロプロセッサ外部のハードウェアによって出力される第１の信号に基づいて、演算部へ条件成立時の後続命令と条件不成立時の後続命令のどちらを供給するかを指定する第２の信号を実行命令供給部に対して出力することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
第１の信号が条件成立時の後続命令投入を示す値に設定されている時は、条件成立時の後続命令と条件不成立時の後続命令の両方を遅延スロットに投入することを特徴とする請求項１または請求項２記載のマイクロプロセッサ。
【請求項４】
実行命令供給部から演算部に対して条件分岐命令が供給された時に、条件成立時の後続命令と条件不成立時の後続命令のうち少なくともいずれか一方を遅延スロットに投入するマイクロプロセッサにおいて、
条件分岐命令に対し、遅延スロットに条件成立時の後続命令を投入する条件分岐成立予測命令と条件不成立時の後続命令を投入する条件分岐不成立予測命令とを命令セットとして備え、
プログラム作成時に条件分岐命令に対してどちらかの命令を設定することにより、上記実行命令供給部から上記演算部に対して条件分岐命令が供給された時に、設定された上記命令に基づいて上記演算部へどちらの後続命令を供給するかを指定する第２の信号を上記実行命令供給部に出力する制御部とを備えたマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、遅延分岐方式を採用するマイクロプロセッサに関するものである。
【０００２】
【従来の技術】
図１２は、従来のマイクロプロセッサによるパイプライン処理方式を説明する図である。図に示すように、マイクロプロセッサは命令フェッチ（Ｆ）、命令デコード（Ｄ）、演算実行（Ｅ）の３段階のステージからなる命令をパイプライン的に実行し、条件フラグを書き換える演算命令（ＣＭＰ）の直後に条件分岐命令（ＣＢＲ）処理を行う。この場合、条件分岐命令は、演算命令や転送命令等の実行結果が反映された条件フラグ等に従って分岐するか否かが決定される。図に示すように、パイプライン処理ではＣＭＰ演算実行後にＣＢＲの条件判定を行ってから分岐先の次命令がフェッチされるため、２サイクル分の空きスロットが生じることになる。この空きスロットのことを遅延スロットという。
【０００３】
この無駄な遅延スロットを除去するために、パイプライン処理方式においては従来から遅延分岐と呼ばれる方式が用いられてきた。遅延分岐とは、条件分岐命令の次の番地にある命令を遅延スロットに投入することによって無駄な空きスロットを除去する方式であり、この方式を用いることによってマイクロプロセッサの性能向上が見込まれる。
【０００４】
遅延スロットに投入する次命令については、条件分岐命令ＣＢＲの結果が不成立の場合はＣＢＲの次命令を投入し、一方、条件が成立する場合にはＣＢＲの分岐先の命令を投入することが出来れば性能向上は最大となる。そのため、従来では分岐予測回路を内蔵することによりＣＢＲをデコードした時点で分岐条件の判定の予測を行い、分岐条件不成立が予測された場合には遅延スロットにＣＢＲの次命令を投入し、分岐条件成立が予測された場合には遅延スロットにＣＢＲの分岐先の命令を投入するようにしていた。
【０００５】
【発明が解決しようとする課題】
従来のマイクロプロセッサは以上のように構成されているため、分岐予測回路の使用に伴う以下のような課題があった。
まず、分岐予測回路の予測のヒット率を９０〜９５％程度にするためには一般に４Ｋビット程度の予測テーブルが必要である。その結果として、チップ面積を増大させるという問題があった。
また、リアルタイム性が要求される機器制御への組み込み用途等においては、最悪性能が重要視されることがある。その場合、プログラムの実行履歴による分岐予測に依存したのでは処理性能が充分ではないという問題があった。
【０００６】
この発明は上記のような課題を解決するためになされたもので、分岐予測回路を使用せずに遅延スロットを有効に活用して処理性能を向上させるマイクロプロセッサを得ることを目的とする。
【０００７】
【課題を解決するための手段】
この発明に係るマイクロプロセッサは、プログラムにより書き換えられ、遅延スロットに投入する命令を条件成立時の後続命令にするか条件不成立時の後続命令にするかを決定する第１の信号を出力するレジスタと、実行命令供給部から演算部に対して条件分岐命令が供給された時に、第１の信号の値に基づき演算部へ条件成立時の後続命令と条件不成立時の後続命令のどちらを供給するかを指定する第２の信号を実行命令供給部に出力する制御部とを備えたものである。
【０００８】
この発明に係るマイクロプロセッサは、制御部は、レジスタの代わりにマイクロプロセッサ外部のハードウェアによって出力される第１の信号に基づいて、演算部へ条件成立時の後続命令と条件不成立時の後続命令のどちらを供給するかを指定する第２の信号を実行命令供給部に対して出力するものである。
【０００９】
この発明に係るマイクロプロセッサは、第１の信号が条件成立時の後続命令投入を示す値に設定されている時は、条件成立時の後続命令と条件不成立時の後続命令の両方を遅延スロットに投入するものである。
【００１０】
この発明に係るマイクロプロセッサは、実行命令供給部から演算部に対して条件分岐命令が供給された時に、条件成立時の後続命令と条件不成立時の後続命令のうち少なくともいずれか一方を遅延スロットに投入するマイクロプロセッサにおいて、条件分岐命令に対し、遅延スロットに条件成立時の後続命令を投入する条件分岐成立予測命令と条件不成立時の後続命令を投入する条件分岐不成立予測命令とを命令セットとして備え、プログラム作成時に条件分岐命令に対してどちらかの命令を設定することにより、実行命令供給部から演算部に対して条件分岐命令が供給された時に、設定された命令に基づいて演算部へどちらの後続命令を供給するかを指定する第２の信号を実行命令供給部に出力する制御部とを備えたものである。
【００１１】
【発明の実施の形態】
以下、この発明の実施の一形態を説明する。
実施の形態１．
図１はこの発明の実施の形態１によるマイクロプロセッサの構成を示すブロック図である。図において１は中央処理装置（演算部；以下ＣＰＵと略す。）、２はコードインタフェース回路（実行命令供給部；以下コードインタフェース回路と略す。）、３はデータインタフェース回路（以下データインタフェース回路と略す。）、４はコードメモリ、５はレジスタ、６はデコード回路（制御部）、８はオペコードバス、９はアドレスバス、１０はコードバス、１１はアドレスバス／データバスである。ここではバスインタフェースユニットをコードインタフェース回路２とデータインタフェース回路３に分離したハーバードアーキテクチャの構成になっているがこれ以外の構成であってもよい。
コードインタフェース回路２は、オペコードバス８を介してＣＰＵ１にオペコードを出力する。
コードインタフェース回路２はアドレスバス９、コードバス１０を介してコードメモリ４に接続される。レジスタ５はソフトウェアによって書き換え可能なレジスタであって、信号Ａ（第１の信号）をデコード回路６に出力する。ＣＰＵ１はデータインタフェース回路３を介してレジスタ５の値を書き込みおよび読み出しすることが出来る。
【００１２】
次に、動作について説明する。
レジスタ５から出力される信号Ａの値が「１」の時、条件分岐命令を実行すると、遅延スロットに投入される命令は分岐条件成立時の分岐先命令になる。また、信号Ａの値が「０」の時、条件分岐命令を実行すると遅延スロットに投入される命令は分岐条件不成立時の次命令になる。
信号Ａの働きについて具体的に説明する。デコード回路６には、信号Ａとともにオペコードバス８を介してコードインタフェース回路２からＣＰＵ１に対して出力されるオペコードが入力される。ここで信号Ａの値が「１」で且つオペコードバス８に条件分岐命令がのせられていれば、デコード回路６はコードインタフェース回路２に信号Ｂ（第２の信号）として「１」を出力する。その他の場合には信号Ｂとして「０」を出力する。
【００１３】
信号Ｂを受け取ったコードインタフェース回路２は、信号Ｂの値が「１」である時に限りオペコードバス８に条件分岐命令をのせた次のサイクルでオペコードバス８に条件分岐命令の分岐条件成立時の分岐先命令を出力する。信号Ｂの値が「０」である時はオペコードバス８に条件分岐命令をのせた次のサイクルでオペコードバス８に条件分岐命令の条件不成立時の次命令を出力する。
【００１４】
図２は、条件フラグを書き換える演算命令（以下ｃｍｐと略す。）の直後に条件分岐命令（以下ｃｂｒと略す。）があるアセンブラ言語レベルのプログラムの一例を示したものである。アドレス１００にはｃｍｐが、アドレス１０１にはｃｂｒ２００が記述されている。ここでｃｂｒ２００は条件が成立した時にアドレス２００に分岐する条件分岐命令である。アドレス１０２には命令ａ、アドレス１０３には命令ｂ、アドレス１０４には命令ｃ、アドレス１０５には命令ｄ、アドレス２００には命令ｐ、アドレス２０１には命令ｑ、アドレス２０２には命令ｒ、アドレス２０３には命令ｓが記述されている。
【００１５】
図３は、図２に示したプログラムを実行した時の、実際の命令実行順序を分類した表である。信号Ａの値とｃｂｒ２００の分岐条件の成立／不成立によってシーケンス１からシーケンス４の４つのパターンが考えられる。図中実行順序の中で四角に囲まれた命令は、遅延スロットに投入される命令を示している。
【００１６】
各パターンでの動作について説明する。
図４はシーケンス１のパターンのパイプライン処理の動作を説明する図である。まず、コードインタフェース回路２が命令ｃｍｐをオペコードバス８に出力すると、ＣＰＵ１は命令ｃｍｐをＦステージに投入する。次サイクルでコードインタフェース回路２が命令ｃｂｒ２００をオペコードバス８に供給するとｃｂｒ２００がＦステージに投入される。この時、デコード回路６は信号Ａの値が「１」でかつオペコードバスに条件分岐命令がのっているので、信号Ｂの値を「１」にする。コードインタフェース回路２は信号Ｂの値が「１」であることを受けて次サイクルでオペコードバス８に条件成立時の分岐先命令ｐを出力し、さらに次サイクルではオペコードバス８に命令ｑを出力する。これにより遅延スロットには命令ｐと命令ｑが投入されることになる。次にｃｂｒ２００のＥステージでＣＰＵ１により分岐条件成立と判定されると、分岐条件判定結果１０１がコードインタフェース回路２に返され、それを受けてコードインタフェース回路２は次サイクル以降でオペコードバス８に命令ｒ、命令ｓを出力する。
以上のことから、信号Ａの値があらかじめプログラムによって「１」に設定されている状態でｃｂｒ２００が実行されると、遅延スロットには条件成立時の分岐先命令ｐとｑが順に投入される。その後ｃｂｒ２００のステージＥで条件成立と判定され、命令ｒ，ｓが順に実行される。このように信号Ａの値が　「１」の時分岐条件が成立すると遅延スロットを分岐先の命令で埋めていることからＣＰＵ性能が向上する。
【００１７】
図５はシーケンス２のパターンのパイプライン処理の動作を説明する図である。シーケンス２でも信号Ａの値が「１」であるため、コードインタフェース回路２がｃｂｒ２００をオペコードバス８に供給した時信号Ｂの値は「１」となり、コードインタフェース回路２はｃｂｒ２００をオペコードバス８に出力した次のサイクルで命令ｐ、続いて命令ｑを出力する。これにより遅延スロットには命令ｐと命令ｑが投入されることになる。次にｃｂｒ２００のＥステージでＣＰＵ１により分岐条件不成立と判定されると、分岐条件判定結果１０１がコードインタフェース回路２に返され、それを受けてコードインタフェース回路２は次サイクル以降でオペコードバス８に命令ａ、命令ｂを出力する。また、ＣＰＵ１では分岐条件不成立のため不要となった命令ｐ、命令ｑの実行はキャンセルされる。
以上のことから、信号Ａの値が「１」に設定されている時にｃｂｒ２００の条件が不成立と判定されると、遅延スロットに投入した命令ｐ、命令ｑはキャンセルされる。また、次命令である命令ａ、命令ｂはｃｂｒ２００の条件判定後にＣＰＵ１へ出力されることになる。このように信号Ａの値が「１」の時に分岐条件が不成立になると遅延スロットを有効な命令で埋めることが出来ず、ＣＰＵ性能は向上しない。
【００１８】
図６はシーケンス３のパターンのパイプライン処理の動作を説明する図である。まず、コードインタフェース回路２が命令ｃｍｐをオペコードバス８に出力すると、ＣＰＵ１は命令ｃｍｐをＦステージに投入する。次サイクルでコードインタフェース回路２が命令ｃｂｒ２００をオペコードバス８に供給するとｃｂｒ２００がＦステージに投入される。この時、デコード回路６は信号Ａの値が「０」なので、信号Ｂの値を「０」にする。コードインタフェース回路２は信号Ｂの値が「０」であることを受けて次サイクルでオペコードバス８にｃｂｒ２００の次命令ａを出力し、さらに次サイクルではオペコードバス８に命令ｂを出力する。これにより遅延スロットには命令ａと命令ｂが投入されることになる。次にｃｂｒ２００のＥステージでＣＰＵ１により分岐条件成立と判定されると、分岐条件判定結果１０１がコードインタフェース回路２に返され、それを受けてコードインタフェース回路２は次サイクル以降でオペコードバス８に命令ｐ、命令ｑを出力する。また、ＣＰＵ１では分岐条件成立のため不要となった命令ａ、命令ｂの実行はキャンセルされる。
以上のことから、信号Ａの値があらかじめプログラムによって「０」に設定されている状態でｃｂｒ２００が実行されると、遅延スロットには次命令ａとｂが順に投入される。その後ｃｂｒ２００のステージＥで条件成立と判定されると、遅延スロットに投入した命令ａ、命令ｂはキャンセルされる。また、条件成立時の分岐先命令である命令ｐ、命令ｑはｃｂｒ２００の条件判定後にＣＰＵ１へ出力され順に実行される。このように信号Ａの値が　「０」の時分岐条件が成立すると遅延スロットを有効な命令で埋めることが出来ず、ＣＰＵ性能は向上しない。
【００１９】
図７はシーケンス４のパターンのパイプライン処理の動作を説明する図である。シーケンス４でも信号Ａの値が「０」であるため信号Ｂの値は「０」となり、コードインタフェース回路２はｃｂｒ２００をオペコードバス８に出力した次のサイクルで命令ａ、続いて命令ｂを出力する。これにより遅延スロットには命令ａと命令ｂが投入されることになる。次にｃｂｒ２００のＥステージでＣＰＵ１により分岐条件不成立と判定されると分岐条件判定結果１０１がコードインタフェース回路２に返され、それを受けてコードインタフェース回路２は次サイクル以降でオペコードバス８に命令ｃ、命令ｄを出力する。
以上のことから、信号Ａの値が「０」に設定されている時にｃｂｒ２００が実行されると、遅延スロットには条件成立時の分岐先命令ａとｂが順に投入される。その後ｃｂｒ２００のステージＥで条件不成立と判定され、命令ｃ，ｄが順に実行される。このように信号Ａの値が　「０」の時分岐条件が不成立になると遅延スロットを有効な次命令で埋められるのでＣＰＵ性能が向上する。
【００２０】
以上のことから、シーケンス１およびシーケンス４のパターンが実現した場合には、条件分岐命令実行時のＣＰＵの性能を向上させることが出来る。よって、プログラム上の条件分岐命令で分岐条件が成立する頻度が高い部分に対してはレジスタ５の信号Ａを「１」に設定するようにし、逆に分岐条件が成立する頻度が低い部分に対してはレジスタ５の信号Ａを「０」に設定するようにプログラミングすればプログラム全体の実行時間を短縮することが出来る。
また、反応応答性が要求される機器への組み込み用途において、分岐条件成立時にサブルーチンを実行するような条件分岐命令では、分岐条件成立時のみＣＰＵ性能を要求され分岐条件不成立時にはＣＰＵ性能は要求されない場合がある。このような条件分岐命令に対しては、実行前にレジスタ５の信号Ａの値を「１」に設定しておけばよい。
【００２１】
ここで、図４および図５において、ｃｂｒ２００がＣＰＵ１に投入された直後に条件分岐先命令ｐおよびｑが投入されている点について説明する。
通常の回路ではｃｂｒ２００がＣＰＵ１のステージＤでデコードされた後、そのデコード情報を用いて分岐先の命令ｐのアドレスが計算され、計算された分岐先アドレスがＣＰＵ１からコードインタフェース回路２に渡される。その時点で初めてコードインタフェース回路２は命令ｐの先取りを開始する。つまり、通常の回路ではｃｂｒ２００がＣＰＵ１に投入された直後に分岐先命令ｐがコードインタフェース回路２からＣＰＵ１に投入されることは時間的に不可能である。
【００２２】
そこで、実施の形態１のコードインタフェース回路２は以下のような構成になっている。
図１に示すようにコードインタフェース回路２は、ＱＵＥ１、ＱＵＥ２の２系統の命令先取りバッファを持つ。ここで、ＱＵＥ１を現在使用中の命令バッファ、すなわち命令ｃｍｐ、ｃｂｒ２００、ａ、ｂが先取りされていくバッファとする。コードインタフェース回路２はＱＵＥ１に保持している命令ｃｂｒ２００をＣＰＵ１に渡す前にｃｂｒ２００をデコードし、そのデコード情報とＣＰＵ１から得るプログラムカウンタの値を用いてｃｂｒ２００の分岐先アドレスを独自に計算し、命令ｐ、命令ｑ、命令ｒのフェッチを行って命令バッファＱＵＥ２に格納しておく。
このように、命令バッファＱＵＥ１に条件分岐命令が含まれていたら、予めその分岐先命令を先取りしてバッファＱＵＥ２に格納しておくことにより、図４、図５に示すようにｃｂｒ２００がＣＰＵ１に投入された直後に分岐先命令ｐをＣＰＵ１に投入することが可能となる。
【００２３】
また、コードインタフェース回路２は従来のような構成であってもよい。その場合には、上述したようにコードインタフェース回路２はＣＰＵ１からｃｂｒ２００の分岐先アドレスを受けとらなければ命令ｐの先取りが出来ないため、信号Ａの値が「１」の場合には遅延スロットを命令ｐ，ｑで埋めることが出来ない。逆に信号Ａの値が「０」の場合には遅延スロットを命令ａ，ｂで埋めることが出来る。つまり、図３のシーケンス４の場合のみ遅延スロットを有効に利用することが出来るが、信号Ａの値によってコードインタフェース回路２による命令の先取りも効率化されるためこの場合にもＣＰＵ性能の向上に効果がある。
【００２４】
以上のように、この実施の形態１によれば、ソフトウェアによって書き換え可能なレジスタ５が出力する信号Ａに基づいて遅延スロットに投入する命令を決定できるようにしたので、プログラム上の命令の用途等に合わせて信号Ａの値を設定することにより分岐予測回路を使用せずに遅延スロットを有効に活用して処理性能を向上させられるという効果が得られる。
【００２５】
実施の形態２．
図８は、実施の形態２において図２に示したプログラムを実行した時の、実際の命令実行順序を分類した表である。図中実行順序の中で四角に囲まれた命令は、遅延スロットに投入される命令を示している。信号Ａの値とｃｂｒ２００の分岐条件の成立／不成立によってシーケンス５、シーケンス６、シーケンス３、シーケンス４の４つのパターンが考えられる。信号Ａの値が「０」の時の動作（シーケンス３、シーケンス４）は実施の形態１と同様である。
【００２６】
実施の形態２では、信号Ａの値が「１」の時、遅延スロットへ投入する命令を分岐先命令ｐ，ｑではなく条件不成立時の次命令ａと分岐先命令ｐにしている。シーケンス５では、ｃｂｒ２００の分岐条件成立がＣＰＵ１で判定されると、遅延スロットへ投入していた命令ａのみがキャンセルされ、オペコードバス８を介して命令ｑが供給される。
【００２７】
シーケンス６では、ｃｂｒ２００の分岐条件不成立が判定されると、遅延スロットへ投入していた命令ｐのみがキャンセルされ、次にオペコードバス８を介して命令ｂがＣＰＵ１へ供給される。
【００２８】
このように、シーケンス５およびシーケンス６では遅延スロットに有効な命令が１個埋められることになる。
すなわち、実施の形態２によれば、プログラム上で条件分岐命令の分岐条件が成立する場合と不成立の場合が起こる頻度が不明確な場合に、信号Ａの値を「１」に設定するようにプログラミングすれば、プログラム全体の実行時間を短縮することが出来る。
【００２９】
実施の形態３．
図９は、この発明の実施の形態３によるマイクロプロセッサを内蔵したシステムＬＳＩの構成を示すブロック図である。図１と同一の符号は同一の構成要素を表している。図において２０はマイクロプロセッサ、２１はマイクロプロセッサ２０外部のハードウェアである。
【００３０】
実施の形態３においては、信号Ａをソフトウェアで書き換え可能なレジスタではなくハードウェア２１から出力する。命令実行の動作は実施の形態１と同様である。
機器への組み込み用途で用いる場合には、条件分岐命令の分岐条件の成立／不成立を決定する信号がハードウェア上に存在する場合がある。この信号を信号Ａとしてデコード回路６に入力するように構成すれば、レジスタを利用せずにＣＰＵの性能を向上させることが出来る。
【００３１】
実施の形態４．
図１０は、この発明の実施の形態４によるマイクロプロセッサの構成を示すブロック図である。図１と同一の符号は同一の構成要素を表している。
実施の形態４は条件分岐命令について条件分岐成立予測命令と条件分岐不成立予測命令の２つの命令を命令セットとして持つマイクロプロセッサである。
例えば、図２に示したプログラムの命令ｃｂｒ２００に対しては、条件分岐成立予測命令ｃｂｒ＿Ａ２００と条件分岐不成立予測命令ｃｂｒ＿Ｂ２００を持つとする。
【００３２】
動作について説明する。
デコード回路６はオペコードバス８に条件分岐命令ｃｂｒ＿Ａ２００が出力された時のみ信号Ｂの値を「１」にする。以降の命令実行動作は実施の形態１と同様である。
【００３３】
図１１は、実施の形態４において図２に示したプログラムを実行した時の実際の命令実行順序を分類した表である。オペコードバス８に出力される条件分岐予測命令の種類と分岐条件の成立／不成立によってシーケンス７、シーケンス８、シーケンス９、シーケンス１０の４つのパターンが考えられる。ｃｂｒ＿Ａが実行されると遅延スロットには分岐条件成立時の分岐先命令が投入され（シーケンス７、シーケンス８）、一方、ｃｂｒ＿Ｂが実行されると遅延スロットには分岐不成立時の次命令が投入される（シーケンス９、シーケンス１０）。
図より、条件分岐成立予測命令ｃｂｒ＿Ａ２００が実行された時に分岐条件が成立する場合（シーケンス７）と条件分岐不成立予測命令ｃｂｒ＿Ｂ２００が実行された時に分岐条件が不成立になる場合（シーケンス１０）にＣＰＵ性能を向上させることが出来る。
【００３４】
以上のように、プログラム上で分岐条件が成立する頻度が高い条件分岐命令に対しては、条件分岐成立予測命令ｃｂｒ＿Ａ２００を用い、分岐条件が成立する頻度が低い条件分岐命令については、条件分岐不成立予測命令ｃｂｒ＿Ｂ２００を用いるようにプログラミングすれば、プログラム全体の実行時間を短縮することができる。
また、反応応答性が要求される機器への組み込み用途において、分岐条件成立時にサブルーチンを実行するような条件分岐命令では、分岐条件成立時のみＣＰＵ性能を要求され分岐条件不成立時にはＣＰＵ性能は要求されない場合がある。このような条件分岐命令に対しては、条件分岐成立予測命令を設定しておくことにより、ＣＰＵ性能を向上させることが出来る。
【００３５】
以上のように、この実施の形態４によれば、条件分岐成立予測命令と条件分岐不成立予測命令をプログラム上の命令の用途等に合わせて用いることにより、ソフトウェアによって書き換え可能なレジスタを持たなくても実施の形態１と同様の効果が得られる。
【００３６】
また、プログラム上で信号Ａを書き換える必要がなくなるので、その分コードメモリを縮小することが出来るという効果が得られる。
【００３７】
【発明の効果】
以上のように、この発明によれば、分岐予測回路を使用せずに遅延スロットを有効に活用して処理性能を向上させるマイクロプロセッサを得られるという効果がある。
【００３８】
この発明によれば、ソフトウェア設計時に遅延スロットに投入する命令を予め選択出来るという効果がある。
【図面の簡単な説明】
【図１】この発明の実施の形態１によるマイクロプロセッサの構成を示すブロック図である。
【図２】条件フラグを書き換える演算命令（ｃｍｐ）の直後に条件分岐命令（ｃｂｒ）があるアセンブラ言語レベルのプログラムの一例を示したものである。
【図３】図２に示したプログラムを実行した時の、実際の命令実行順序を分類した表である。
【図４】図３に示すシーケンス１のパターンのパイプライン処理の動作を説明する図である。
【図５】図３に示すシーケンス２のパターンのパイプライン処理の動作を説明する図である。
【図６】図３に示すシーケンス３のパターンのパイプライン処理の動作を説明する図である。
【図７】図３に示すシーケンス４のパターンのパイプライン処理の動作を説明する図である。
【図８】この発明の実施の形態２において図２に示したプログラムを実行した時の、実際の命令実行順序を分類した表である。
【図９】この発明の実施の形態３によるマイクロプロセッサを内蔵したシステムＬＳＩの構成を示すブロック図である。
【図１０】この発明の実施の形態４によるマイクロプロセッサの構成を示すブロック図である。
【図１１】この発明の実施の形態４において図２に示したプログラムを実行した時の実際の命令実行順序を分類した表である。
【図１２】従来のマイクロプロセッサによるパイプライン処理方式を説明する図である。
【符号の説明】
１　中央処理装置（演算部；ＣＰＵ）、２　コードインタフェース回路（実行命令供給部）、３　データインタフェース回路、４　コードメモリ、５　レジスタ、６　デコード回路（制御部）、８　オペコードバス、９　アドレスバス、１０　コードバス、１１　アドレスバス／データバス、２０　マイクロプロセッサ、２１　ハードウェア。
【図１】
2004062427.tif 000003
【図２】
2004062427.tif 000004
【図３】
2004062427.tif 000005
【図４】
2004062427.tif 000006
【図５】
2004062427.tif 000007
【図６】
2004062427.tif 000008
【図７】
2004062427.tif 000009
【図８】
2004062427.tif 000010
【図９】
2004062427.tif 000011
【図１０】
2004062427.tif 000012
【図１１】
2004062427.tif 000013
【図１２】
2004062427.tif 000014