(57)【特許請求の範囲】
【請求項１】
パイプライン制御を行う情報処理装置であって、
複数の命令コードをフェッチ可能な命令キューと、
前記命令キューに命令コードをフェッチするためのフェッチアドレスを演算するフェッチアドレス演算回路と、
前記フェッチアドレスに基づき読み出された命令コードを命令キューにフェッチするフェッチ回路と、
分岐設定命令は、当該分岐設定命令からｘ命令後の分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐発生アドレス及び分岐先アドレスを特定する情報を明示的に又は暗黙に含み、
前記分岐設定命令をデコードした場合、分岐発生アドレスを分岐発生アドレス保持レジスタに格納し、分岐先アドレスを分岐先アドレス保持レジスタに格納する分岐情報設定回路とを含み、
前記フェッチアドレス演算回路は、
前回フェッチアドレス又はフェッチ予定アドレスのいずれかと分岐発生アドレス保持レジスタに格納にされている値とを比較して比較結果に基づき分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力する回路を含むことを特徴とする情報処理装置。
【請求項２】
パイプライン制御を行う情報処理装置であって、
複数の命令コードをフェッチ可能な命令キューと、
前記命令キューに命令コードをフェッチするためのフェッチアドレスを演算するフェッチアドレス演算回路と、
前記フェッチアドレスに基づき読み出された命令コードを命令キューにフェッチするフェッチ回路と、
分岐設定命令は、当該分岐設定命令からｘ命令後の分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐発生アドレス及び分岐先アドレスを特定する情報を明示的に又は暗黙に含み、
前記分岐設定命令をデコードした場合、分岐発生アドレスを分岐発生アドレス保持レジスタに格納し、分岐先アドレスを分岐先アドレス保持レジスタに格納する分岐情報設定回路とを含み、
前記フェッチアドレス演算回路は、
フェッチ用プログラムカウンタに保持されている値を命令長でインクリメントして得られた今回フェッチ予定のフェッチ予定アドレスと分岐発生アドレス保持レジスタに格納にされている値とを比較して一致している場合には、分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力し、一致していない場合にはフェッチ用プログラムカウンタの値を１命令分インクリメントした値を次のフェッチアドレスとして出力する回路を含むことを特徴とする情報処理装置。
【請求項３】
請求項１乃至２のいずれかにおいて、
前記所定の分岐設定命令は、ループ回数を指定可能なループ命令を含み、
前記ループ命令は、ループ回数に達するまで当該ループ命令からｘ命令後の分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐発生アドレス及び分岐先アドレスを特定する情報を明示的に又は暗黙に含み、
前記分岐情報設定回路は、
ループ命令をデコードした場合、ループ命令で指定されたループ回数を取り出し、
前記フェッチアドレス演算回路は、
前記分岐先アドレスに分岐した回数がループ回数に達するまで、前記比較結果に基づき分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力する回路を含むことを特徴とする情報処理装置。
【請求項４】
請求項１乃至３のいずれかにおいて、
前記所定の分岐設定命令は、ループ回数を指定可能なループ命令を含み、
前記ループ命令は、ループ回数に達するまで当該ループ命令からｘ命令後の分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐発生アドレス及び分岐先アドレスを特定する情報を明示的に又は暗黙に含み、
前記分岐情報設定回路は、
ループ命令をデコードした場合、ループ命令で指定されたループ回数をループカウンタに設定し、
前記フェッチアドレス演算回路は、
分岐先アドレスへの分岐が発生するたびに前記ループカウンタに設定した値をディクリメントし、ループカウンタの値が０に達したら、分岐発生アドレスを命令コード長分インクリメントした値を次のフェッチアドレスとして出力する回路を含むことを特徴とする情報処理装置。
【請求項５】
請求項３乃至４のいずれかにおいて、
前記ループ命令は、分岐先アドレスがループ命令に対して相対的に固定されており、分岐先アドレス情報がオペランドに指定不要な命令として構成され、
前記分岐情報設定回路は、
ループ命令に対して相対的に固定された値を演算して、分岐先アドレス保持レジスタに格納する回路を含むことを特徴とする情報処理装置。
【請求項６】
請求項１乃至５のいずれかに記載の情報処理装置と、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置及び電子機器に関する。
【０００２】
【背景技術及び発明が解決しようとする課題】
パイプラインアーキテクチャでは、分岐命令やループ命令が発生すると、分岐先の命令について再びフェッチからやり直さなければならない。従って例えば、「フェッチ」「デコード」「実行」「書き込み」からなるパイプラインアーキテクチャでは、分岐（ループによる分岐も含む）が発生するたびに、３クロック分がロスすることになる。
【０００３】
かかるロスを防ぐためにマイクロコンピュータに分岐予測回路を持たせることも行われている。しかし分岐予測回路を実現するためには何万ゲートも必要になり、回路規模の増大及びコストの増大を招くという問題点があった。
【０００４】
本発明は以上のような問題点に鑑みてなされたものであり、パイプラインアーキテクチャを採用する情報処理装置において回路規模の増大を招くことなく分岐発生による時間的ロスを削減することが可能可能なコストパフォーマンスのよい情報処理装置及び電子機器の提供を目的とする。
【０００５】
【課題を解決するための手段】
（１）本発明は、パイプライン制御を行う情報処理装置であって、
複数の命令コードをフェッチ可能な命令キューと、
前記命令キューに命令コードをフェッチするためのフェッチアドレスを演算するフェッチアドレス演算回路と、
前記フェッチアドレスに基づき読み出された命令コードを命令キューにフェッチするフェッチ回路と、
分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐設定命令をデコードし、分岐発生アドレスを分岐発生アドレス保持レジスタに格納し、分岐先アドレスを分岐先アドレス保持レジスタに格納する分岐情報設定回路とを含み、
前記フェッチアドレス演算回路は、
前回フェッチアドレス又はフェッチ予定アドレスのいずれかと分岐発生アドレス保持レジスタに格納にされている値とを比較して比較結果に基づき分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力する回路を含むことを特徴とする。
【０００６】
分岐設定命令は例えばそのオペランドに分岐発生アドレス特定情報、分岐先アドレス特定情報を明示的に、又は暗黙に含む。
【０００７】
分岐発生アドレス特定情報は、分岐の発生箇所を特定出来る値であればよく、例えば分岐が発生する命令のアドレスでもよい。また分岐設定命令から分岐発生アドレスへの相対アドレスでもよいし、分岐設定命令と分岐発生アドレス間の命令数（分岐発生アドレスは分岐設定命令から何命令先か）でもよい。また上記いずれかが格納された汎用レジスタの値でもよい。
【０００８】
同様に分岐先アドレス特定情報は、分岐先を特定出来る値であればよく、例えば分岐先の命令のアドレスでもよい。また分岐設定命令から分岐先アドレスへの相対アドレスでもよいし、分岐設定命令と分岐先アドレス間の命令数（分岐先は分岐設定命令から何命令先か）でもよい。また上記いずれかが格納された汎用レジスタの値でもよい。
【０００９】
前回フェッチアドレスは、例えばフェッチ用プログラムカウンタに保持されている前回のフェッチアドレスであり、フェッチ予定アドレスは前回のフェッチアドレスに基づき演算された今回のフェッチアドレスである。これらのいずれかの値と分岐発生アドレス保持レジスタに格納にされている値とを比較して一致している場合には、分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力し、一致していない場合にはフェッチ用プログラムカウンタの値を１命令分インクリメントした値を次のフェッチアドレスとして出力するようにしてもよい。
【００１０】
ここで、フェッチ用プログラムカウンタに保持されている前回のフェッチアドレス又は前回のフェッチアドレスに基づき演算された今回のフェッチアドレスのいずれかの値と分岐発生アドレス保持レジスタに格納にされている値とを比較して一致するタイミングより前に、分岐設定命令で指定された分岐発生アドレスが分岐発生アドレス保持レジスタに設定されるように、分岐発生アドレスを指定すると、パイプライン制御において、分岐発生時にロスを生じさせることなく分岐先の命令をフェッチしておくことが出来る。
【００１１】
本発明によれば、フェッチアドレス演算回路及び分岐情報設定回路を追加するだけで分岐設定命令を命令セットに含むアーキテクチャを実現し、パイプラインアーキテクチャを採用する情報処理装置において回路規模の増大を招くことなく分岐発生による時間的ロスを削減することが可能可能なコストパフォーマンスのよい情報処理装置を提供することが出来る。
（２）本発明は、パイプライン制御を行う情報処理装置であって、
複数の命令コードをフェッチ可能な命令キューと、
前記命令キューに命令コードをフェッチするためのフェッチアドレスを演算するフェッチアドレス演算回路と、
前記フェッチアドレスに基づき読み出された命令コードを命令キューにフェッチするフェッチ回路と、
分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐設定命令をデコードし、分岐発生アドレスを分岐発生アドレス保持レジスタに格納し、分岐先アドレスを分岐先アドレス保持レジスタに格納する分岐情報設定回路とを含み、
前記フェッチアドレス演算回路は、
フェッチ用プログラムカウンタに保持されている値を命令長でインクリメントして得られた今回フェッチ予定のフェッチ予定アドレスと分岐発生アドレス保持レジスタに格納にされている値とを比較して一致している場合には、分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力し、一致していない場合にはフェッチ用プログラムカウンタの値を１命令分インクリメントした値を次のフェッチアドレスとして出力する回路を含むことを特徴とする。
【００１２】
分岐設定命令は例えばそのオペランドに分岐発生アドレス特定情報、分岐先アドレス特定情報を明示的に、又は暗黙に含む。
【００１３】
分岐発生アドレス特定情報は、分岐の発生箇所を特定出来る値であればよく、例えば分岐が発生する命令のアドレスでもよい。また分岐設定命令から分岐発生アドレスへの相対アドレスでもよいし、分岐設定命令と分岐発生アドレス間の命令数（分岐発生アドレスは分岐設定命令から何命令先か）でもよい。また上記いずれかが格納された汎用レジスタの値でもよい。
【００１４】
同様に分岐先アドレス特定情報は、分岐先を特定出来る値であればよく、例えば分岐先の命令のアドレスでもよい。また分岐設定命令から分岐先アドレスへの相対アドレスでもよいし、分岐設定命令と分岐先アドレス間の命令数（分岐先は分岐設定命令から何命令先か）でもよい。また上記いずれかが格納された汎用レジスタの値でもよい。
【００１５】
ここで、フェッチ用プログラムカウンタに保持されている値を命令長でインクリメントして得られた今回フェッチ予定のフェッチ予定アドレスと分岐発生アドレス保持レジスタに格納にされている値とを比較して一致するタイミングより前に、分岐設定命令で指定された分岐発生アドレスが分岐発生アドレス保持レジスタに設定されるように、分岐発生アドレスを指定すると、パイプライン制御において、分岐発生時にロスを生じさせることなく分岐先の命令をフェッチしておくことが出来る。
【００１６】
本発明によれば、フェッチアドレス演算回路及び分岐情報設定回路を追加するだけで分岐設定命令を命令セットに含むアーキテクチャを実現し、パイプラインアーキテクチャを採用する情報処理装置において回路規模の増大を招くことなく分岐発生による時間的ロスを削減することが可能可能なコストパフォーマンスのよい情報処理装置を提供することが出来る。
（３）本発明の情報処理装置は、
前記所定の分岐設定命令は、ループ回数を指定可能なループ命令を含み、
前記分岐情報設定回路は、
ループ回数に達するまで分岐発生アドレスに達したら分岐先アドレスに分岐させるためのループ命令をデコードし、ループ命令で指定されたループ回数を取り出し、
前記フェッチアドレス演算回路は、
前記分岐先アドレスに分岐した回数がループ回数に達するまで、前記比較結果に基づき分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力する回路を含むことを特徴とする。
【００１７】
例えばループ命令に基づき設定されたループ回数をループカウンタに設定し、分岐先アドレスに分岐するたびにループカウンタをディクリメントするようにしてもよい。そしてループカウンタの値が０になったら分岐先アドレスへの分岐を終了するようにしてもよい。
【００１８】
本発明によればループ命令実行以降はフェッチアドレスとして分岐先アドレスを出力可能なので、パイプライン制御において、ループ処理による分岐発生時にロスを生じさせることなく分岐先の命令をフェッチしておくことが出来る。
【００１９】
さらに当該ループ命令を使用しないでループ処理を実現する際に必要になるループカウンタディクリメント用のＳＵＢ命令も不要となるため、その分実行速度を向上させることが出来る。
【００２０】
本発明によれば、フェッチアドレス演算回路及び分岐情報設定回路を追加するだけでループ命令を命令セットに含むアーキテクチャを実現し、パイプラインアーキテクチャを採用する情報処理装置において回路規模の増大を招くことなくループ発生による時間的ロスを削減することが可能可能なコストパフォーマンスのよい情報処理装置を提供することが出来る。
（４）本発明の情報処理装置は、
前記所定の分岐設定命令は、ループ回数を指定可能なループ命令を含み、
前記分岐情報設定回路は、
ループ回数に達するまで分岐発生アドレスに達したら分岐先アドレスに分岐させるためのループ命令をデコードし、ループ命令で指定されたループ回数をループカウンタに設定し、
前記フェッチアドレス演算回路は、
分岐先アドレスへの分岐が発生するたびに前記ループカウンタに設定した値をディクリメントし、ループカウンタの値が０に達したら、分岐発生アドレスを命令コード長分インクリメントした値を次のフェッチアドレスとして出力する回路を含むことを特徴とする。
【００２１】
本発明によればループ命令実行以降はフェッチアドレスとして分岐先アドレスを出力可能なので、パイプライン制御において、ループ処理による分岐発生時にロスを生じさせることなく分岐先の命令をフェッチしておくことが出来る。
【００２２】
さらに当該ループ命令を使用しないでループ処理を実現する際に必要になるループカウンタディクリメント用のＳＵＢ命令も不要となるため、その分実行速度を向上させることが出来る。
【００２３】
本発明によれば、フェッチアドレス演算回路及び分岐情報設定回路を追加するだけでループ命令を命令セットに含むアーキテクチャを実現し、パイプラインアーキテクチャを採用する情報処理装置において回路規模の増大を招くことなくループ発生による時間的ロスを削減することが可能可能なコストパフォーマンスのよい情報処理装置を提供することが出来る。
（５）本発明の情報処理装置は、
前記ループ命令は、分岐先アドレスがループ命令に対して相対的に固定されており、分岐先アドレス情報がオペランドに指定不要な命令として構成され、
前記分岐情報設定回路は、
ループ命令に対して相対的に固定された値を演算して、分岐先アドレス保持レジスタに格納する回路を含むことを特徴とする。
【００２４】
ループ命令に対して相対的に固定するとは、ループ命令からの相対的距離が一義的に決定可能であることを意味する。
【００２５】
例えば分岐先アドレスをループ命令の次の命令に相対的に固定するようにしてもよい。
【００２６】
本発明によればループ命令のオペランドの指定を減らすことが出来るため、短い命令コード長でループ命令を記述しなければならない場合に効果的である。
（６）本発明は、上記のいずれかに記載の情報処理装置と、
入力情報を受け付ける手段と、
入力情報に基づき前記情報処理装置により処理された結果を出力するため手段と、
を含むことを特徴とする電子機器である。
【００２７】
本発明によれば、ローコストで高速実行可能な情報処理装置を内蔵しているため、安価で高機能な電子機器を提供することが出来る。
【００２８】
【発明の実施の形態】
以下、本発明の好適な実施形態について図面を用いて詳細に説明する。
【００２９】
１．情報処理装置
（１）情報処理装置の構成
図１（Ａ）（Ｂ）は、パイプライン制御マイクロコンピュータ（広義には情報処理装置）におけいて分岐が発生した場合の従来例について説明するための図である。
【００３０】
図１（Ａ）は分岐が発生する命令リストの一例を表している。
図１（Ｂ）は、Fetch（Ｆ）、Decode（Ｄ）、Execute（Ｅ）、Access（Ａ）、Write（Ｗ）の５段のパイプライン制御を行うマイクロコンピュータにおいて、▲１▼〜▲３▼の命令が処理されるタイムテーブルを表している。
【００３１】
一般にパイプライン制御のFetch（Ｆ）段階におけるフェッチアドレスは、「今回のフェッチアドレス＝前回のフェッチアドレス＋前回フェッチした命令のサイズ」で与えられる。従って分岐命令が発生した場合には、フェッチキューには分岐先の命令はフェッチされていない。
【００３２】
ここで図１（Ｂ）の▲２▼ｂｒｎｅは分岐命令であり、▲３▼は分岐先命令である。このように分岐命令が実行された後は、分岐先の命令を再びフェッチしなければならないので２１０に示すように２クロック分の遅れが生じてしまう。
【００３３】
また例えば分岐命令を用いてループ処理を行う場合は、カウント用の▲１▼ｓｕｂ命令が必要となるので、それに１クロック分に必要となってくる。
【００３４】
図２は、本実施の形態のマイクロコンピュータ（広義には情報処理装置）の構成について説明するための機能ブロック図である。
【００３５】
本実施の形態のマイクロコンピュータ１００は、ＣＰＵ（広義には、処理回路）１０と、ＢＣＵ（バスコントロールユニット）１００とを含む。なおマイクロコンピュータ１００は、これ以外にもＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ＭＭＵ（Memory Management Unit）、ＤＭＡＣ（Direct Access Memory Controller）、ＬＣＤ（Liquid Crystal Display）ドライバ或いはＳＩＯ（Serial Input Output）等の各種周辺回路を含むことができる。
【００３６】
ＣＰＵ１０は、ＲＯＭやＲＡＭに記憶されたプログラムに従って、命令のフェッチ、命令のデコード、演算処理、レジスタへの書き込み等をパイプライン制御で行う。ＣＰＵ１０は３２ビット幅のデータを扱うが１６ビットの命令コードを処理するよう構成されている。
【００３７】
ＢＣＵ（バスコントロールユニット）１００は、図示しない３２ビットの命令データバスや、命令データアクセスのための命令アドレスバスや、３２ビットのデータバスや、データアクセスのためのデータアドレスバスや、コントロール信号のためのコントロールバス等の各種バスのバスコントロール処理を行う。
【００３８】
そしてこのＣＰＵ１０は、前記各種バスを介して外部と信号のやり取りを行う。
【００３９】
またＣＰＵ１０は、フェッチ回路２０、プリフィックス命令専用デコード回路４０、デコード回路６０、実行回路７０、レジスタファイル８０（汎用レジスタ８２，特殊レジスタ８４）、命令アドレスジェネレータ９０等を含んで構成される。
【００４０】
フェッチ回路２０は、複数の命令の命令コードを命令キュー（例えばプリフェッチキュー）３０−０、３０−１・・にプリフェッチする。
【００４１】
フェッチアドレス演算回路４０は、命令キューに命令コードをフェッチするためのフェッチアドレスを演算する回路である。分岐発生アドレス保持レジスタ４２、分岐先アドレス保持レジスタ４４とを含み、前回フェッチアドレス又はフェッチ予定アドレスのいずれかと分岐発生アドレス保持レジスタに格納にされている値とを比較して比較結果に基づき分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力するように構成してもよい。
【００４２】
またフェッチ用プログラムカウンタに保持されている値を命令長でインクリメントして得られた今回フェッチ予定のフェッチ予定アドレスと分岐発生アドレス保持レジスタに格納にされている値とを比較して一致している場合には、分岐先アドレス保持レジスタに格納されている値を次のフェッチアドレスとして出力し、一致していない場合にはフェッチ用プログラムカウンタの値を１命令分インクリメントした値を次のフェッチアドレスとして出力するように構成してもよい。
【００４３】
また前記分岐先アドレスに分岐した回数がループ回数に達するまで、前記比較結果に基づき分岐先アドレス保持レジスタ４２に格納されている値を次のフェッチアドレスとして出力するようにしてもよい。
【００４４】
例えばループ命令に設定されたループ回数を図示しないループカウンタに設定し、分岐先アドレスに分岐するたびにループカウンタをディクリメントするループカウンタ回路４６を設けるようにしてもよい。
【００４５】
デコード回路６０は命令キューに信号線を介して接続され命令キューにフェッチされている命令コードを入力しデコードする処理をおこなう回路であり、分岐情報設定回路６２を含む。
【００４６】
また前記分岐情報設定回路６２は、分岐発生アドレス保持レジスタ４２、分岐先アドレス保持レジスタ４４に信号線を介して接続され、分岐発生アドレスに達したら分岐先アドレスに分岐させるための分岐設定命令をデコードし、分岐発生アドレスを分岐発生アドレス保持レジスタに格納し、分岐先アドレスを分岐先アドレス保持レジスタに格納する。
【００４７】
また前記分岐情報設定回路６２は、ループカウンタ回路４６に設けられた図示しないループ回数設定レジスタに信号線を介して接続され、ループ回数に達するまで分岐発生アドレスに達したら分岐先アドレスに分岐させるためのループ命令をデコードし、ループ命令に設定されたループ回数を取り出しループ回数設定レジスタに設定するようにしてもよい。
【００４８】
実行回路７０は、前記デコード回路６０がデコードした命令のオペレーション内容に基づき該命令の実行をおこなう。実行回路７０は、データの演算を行うデータ演算回路７２と、アドレスの演算を行うアドレス演算回路７４を含み、必要に応じて汎用レジスタ８４やメモリ（ＲＡＭ等）にアクセスしてデコード回路６０でデコードされた命令の機能を実行する。
【００４９】
レジスタファイル９０は、汎用レジスタＲ０〜Ｒ１５の１６本の汎用レジスタ、プログラムカウンタ（ＰＣ）、プロセッサーステータスレジスタ（ＰＳＲ）、スタックポインタ（ＳＰ）、算術ローレジスタ（ＡＬＲ）、算術ハイレジスタ（ＡＨＲ）等のＣＰＵで使用するレジスタを有している。
（２）分岐設定命令
図３（Ａ）（Ｂ）（Ｃ）は、本実施の形態の分岐設定命令の一例について説明するための図である。
【００５０】
図３（Ａ）は、分岐設定命令の命令コードの一例を示しており、図３（Ｂ）は分岐設定命令の命令コードのビットフィールドを示した図である。分岐設定命令の命令コード３１０は、ビット１５からビット８の８ビットのオペコード指定領域３１２と、ビット７からビット４に４ビットの分岐発生アドレス指定領域３１４と、ビット３からビット０の４ビットの分岐先アドレス指定領域３１６を有している。
【００５１】
オペコード指定領域３１２は、分岐設定命令であることを示すオペコードが格納されている。
【００５２】
分岐発生アドレス指定領域３１４及び分岐先アドレス指定領域３１６には、分岐設定命令から何命令離れているかの値を指定するようにしてもよい。例えば分岐設定命令から何命令離れているかの値が即値「ｉｍｍ４」で指定されている場合には、分岐先アドレスは「ＰＣ（プログラムカウンタ）＋命令長＋ｉｍｍ４×命令長」で与えられる。また分岐設定命令からの相対アドレスとして指定するようにしてもよいし、絶対アドレスで指定するようにしてもよい。またこれらの値が格納されている汎用レジスタの値が指定されていてもよい。
【００５３】
図３（Ｃ）は、分岐設定命令を含むプログラムリストである。３２０に分岐設定命令「jppr  x,y」がおかれると当該命令からｘ命令後（３３０参照）のＰ１（分岐発生アドレス）で分岐が発生し、分岐設定命令からｙ命令後（３４０参照）のＰ２（分岐先アドレス）に分岐する。
【００５４】
図４はフェッチアドレス演算回路の構成の一例について説明するための図である。
【００５５】
フェッチアドレス演算回路４０は、フェッチプログラムカウンタ（ＦＰＣ）４１、分岐発生アドレスレジスタ４２，分岐先アドレスレジスタ４４等を含む。フェッチプログラムカウンタ（ＦＰＣ）４１は、フェッチする命令アドレスが格納されるプログラムカウンタであり、フェッチするたびに次のフェッチアドレスに更新される。
【００５６】
分岐発生アドレスレジスタ４２には、分岐設定命令で指定された分岐発生アドレスが保持されている。
【００５７】
分岐先アドレスレジスタ４４には、分岐設定命令で指定された分岐先アドレスが保持されている。
【００５８】
フェッチプログラムカウンタ（ＦＰＣ）４１に現在保持されている、フェッチアドレスに基づきフェッチキューに命令コードがフェッチされると、アドレス演算器４３は、当該フェッチアドレス５３及び命令コード長５４に基づきフェッチアドレスカウンタのインクリメント値信号５５をマルチプレクサ４７及び比較器４５に向け出力する。
【００５９】
また比較器４５は、フェッチアドレスカウンタのインクリメント値５５及び分岐発生アドレスレジスタ４２に格納されている分岐発生アドレスを入力し、これらが一致している場合にはマルチプレクサ４７に向け出力する分岐発生信号４６をＯＮにする（例えば’Ｈ’レベルにする）。
【００６０】
分岐先アドレスレジスタ４４は、マルチプレクサ４７に向け分岐先アドレス信号５６を出力する。
【００６１】
またＡＬＵ４８は、例えば通常の分岐命令（本実施の形態の分岐設定命令は除く）等により発生した分岐先アドレスを演算し、通常分岐アドレス信号５７をマルチプレクサ４７に向け出力する。通常分岐発生信号４９は通常の分岐命令（本実施の形態の分岐設定命令は除く）等が発生したことを通知する信号である。
【００６２】
マルチプレクサ４７は、分岐発生信号４６がＯＮである場合（例えば’Ｈ’レベルである）には分岐先アドレス信号５６を選択して、次のフェッチアドレス信号５２としてフェッチプログラムカウンタ（ＦＰＣ）４１に向け出力する。また通常分岐発生信号４９がＯＮである場合（例えば’Ｈ’レベルである）には通常分岐アドレス信号５７を選択して、次のフェッチアドレス信号５２としてフェッチプログラムカウンタ（ＦＰＣ）４１に向け出力する。また分岐発生信号４６も通常分岐発生信号４９もいずれもＯＦＦである場合（例えば’Ｌ’レベルである）にはフェッチアドレスカウンタのインクリメント値信号５５を選択して、次のフェッチアドレス信号５２としてフェッチプログラムカウンタ（ＦＰＣ）４１に向け出力する。
（３）ループ命令
図５（Ａ）（Ｂ）（Ｃ）は、本実施の形態のループ命令の一例について説明するための図である。
【００６３】
図５（Ａ）は、ループ命令の命令コードの一例を示しており、図５（Ｂ）はループ命令の命令コードのビットフィールドを示した図である。ループ命令の命令コード４１０は、ビット１５からビット９の７ビットのオペコード指定領域４１２と、ビット８からビット６に３ビットの分岐発生アドレス指定領域４１４と、ビット５からビット３の３ビットの分岐先アドレス指定領域４１６と、ビット２からビット０の３ビットのループ回数指定領域４１８とを有している。
【００６４】
オペコード指定領域４１２は、ループ命令であることを示すオペコードが格納されている。
【００６５】
分岐発生アドレス指定領域４１４及び分岐先アドレス指定領域４１６には、分岐設定命令から何命令離れているかの値を指定するようにしてもよい。例えば分岐設定命令から何命令離れているかの値が即値「ｉｍｍ３」で指定されている場合には、分岐先アドレスは「ＰＣ（プログラムカウンタ）＋命令長＋ｉｍｍ３×命令長」で与えられる。また分岐設定命令からの相対アドレスとして指定するようにしてもよいし、絶対アドレスで指定するようにしてもよい。またこれらの値が格納されている汎用レジスタの値が指定されていてもよい。
【００６６】
またループ回数指定領域４１８には、ループ回数が即値で指定されていてもよいし、ループ回数が設定されている汎用レジスタの値が指定されていてもよい。
【００６７】
図５（Ｃ）は、ループ命令を含むプログラムリストである。４２０にループ命令「loop  x,y,z」がおかれると当該命令からｘ命令後（４３０参照）のＰ１（分岐発生アドレス）で分岐が発生し、ループ命令からｙ命令後（４４０参照）のＰ２（分岐先アドレス）に分岐する処理をループ回数ｚ回だけ繰り返す。そしてｚ回だけ分岐した後は、分岐発生アドレスの次の命令４７０を実行する。
【００６８】
図６はループ命令に対応したフェッチアドレス演算回路の構成の一例について説明するための図である。
【００６９】
図６のフェッチアドレス演算回路４０’は、図４のフェッチアドレス演算回路４０の構成に加えて、ループカウンタ回路６０をさらに含む。
【００７０】
ループカウンタ回路６０は、ループカウンタ６２、演算器６４、比較器６６を含む。ループカウンタ６２は、最初にループ命令で指定されたループ回数が保持される。
【００７１】
演算器６４は、ループカウンタに保持されている値及び比較器４５から出力される分岐発生信号４６を入力し、分岐発生信号４６が分岐の発生を示している場合（ＯＮの場合、例えば’Ｈ’レベルの場合）に、ループカウンタのディクリメント（ループカウンタの値を’１’だけ減じる処理）を行い、ディクリメント値信号６５をループカウンタ６２及び比較器６６に向け出力する。これをうけてループカウンタ６２の値はディクリメントされる。
【００７２】
また比較器６６はディクリメント値信号６５が’０’になった場合には指定されたループ回数だけ分岐が発生したとして、ループ終了信号６８を’ＯＮ’にしてマルチプレクサ４７に向け出力する。ループ終了信号６８はループ命令で指定された回数のループが終了したことを通知する信号であり、例えば’Ｈ’レベルの信号が出力された場合、ループ終了信号６８が’ＯＮ’であるとしてもよい。
【００７３】
マルチプレクサ４７は、ループ終了信号６８が’ＯＮ’でない場合には図４で説明した動作を行い、ループ終了信号６８が’ＯＮ’である場合には、分岐発生信号４６がＯＮであっても、分岐先アドレス信号５６ではなくフェッチアドレスカウンタのインクリメント値信号５５を選択して、次のフェッチアドレス信号５２としてフェッチプログラムカウンタ（ＦＰＣ）４１に向け出力する。
【００７４】
図７（Ａ）（Ｂ）（Ｃ）は、本実施の形態の他のループ命令について説明するための図である。他のループ命令は、分岐先アドレスがループ命令の次の命令であるタイプのループ命令である。
【００７５】
図７（Ａ）は、他のループ命令（ループ命令２）の命令コードの一例を示しており、図７（Ｂ）はループ命令２の命令コードのビットフィールドを示した図である。ループ命令２の命令コード５１０は、ビット１５からビット８の８ビットのオペコード指定領域５１２と、ビット７からビット４に４ビットの分岐発生アドレス指定領域５１４と、ビット３からビット０の４ビットのループ回数指定領域５１８とを有している。ループ命令２は分岐先が固定されているので、分岐先アドレスをオペランドで指定する必要はない。
【００７６】
オペコード指定領域５１２は、分岐先アドレスがループ命令の次の命令であるタイプのループ命令であることを示すオペコードが格納されている。
【００７７】
分岐発生アドレス指定領域５１４には、分岐設定命令から何命令離れているかの値を指定するようにしてもよい。例えば分岐設定命令から何命令離れているかの値が即値「ｉｍｍ４」で指定されている場合には、分岐先アドレスは「ＰＣ（プログラムカウンタ）＋命令長＋ｉｍｍ４×命令長」で与えられる。また分岐設定命令からの相対アドレスとして指定するようにしてもよいし、絶対アドレスで指定するようにしてもよい。またこれらの値が格納されている汎用レジスタの値が指定されていてもよい。
【００７８】
またループ回数指定領域５１８には、ループ回数が即値で指定されていてもよいし、ループ回数が設定されている汎用レジスタの値が指定されていてもよい。
【００７９】
図７（Ｃ）は、ループ命令を含むプログラムリストである。５２０にループ命令２「loop  x,z」がおかれると当該命令からｘ命令後（５３０参照）のＰ１（分岐発生アドレス）で分岐が発生し、ループ命令２の次の命令の先頭Ｐ２（分岐先アドレス）に分岐する処理をループ回数ｚ回だけ繰り返す。そしてｚ回だけ分岐した後は、分岐発生アドレスの次の命令５７０を実行する。
【００８０】
このように分岐先が固定されている場合には、図６において分岐先アドレスレジスタ４４に固定されている分岐先アドレスを設定するようにすればよい。
【００８１】
なおここでは分岐先がループ命令の次の命令に固定されている場合を例にとり説明したがそれに限られない。分岐先が他の位置に固定されている場合でもよい。
【００８２】
２．電子機器
次に、上述した情報処理回路（例えばマイクロコンピュータ）を含む電子機器について説明する。
例えば図８（Ａ）に、電子機器の１つであるカーナビゲーションシステムの内部ブロック図を示し、図９（Ａ）に、その外観図を示す。カーナビゲーションシステムの操作はリモコン７１０を用いて行われ、ＧＰＳやジャイロからの情報に基づいて位置検出部７２０が車の位置を検出する。地図などの情報はＣＤＲＯＭ７３０（情報記憶媒体）に格納されている。メモリ７４０は画像処理や音声処理の際の作業領域になるメモリであり、生成された画像は画像出力部７５０を用いて運転者に表示される。また、生成されたカーナビゲーション用のガイド音声は、音出力部７３５を用いて運転者に出力される。マイクロコンピュータ７００は、リモコン７１０、位置検出部７２０、ＣＤＲＯＭ７３０などの情報入力源から情報を入力し、種々の処理を行い、処理後の情報を、画像出力部７５０、音出力部７３５などの出力装置を用いて出力する。
【００８３】
図８（Ｂ）に、電子機器の１つであるゲーム装置の内部ブロック図を示し、図９（Ｂ）に、その外観図を示す。このゲーム装置では、ゲームコントローラ７６０からのプレーヤの操作情報、ＣＤＲＯＭ７７０からのゲームプログラム、ＩＣカード７８０からのプレーヤ情報等に基づいて、メモリ７９０を作業領域としてゲーム画像やゲーム音を生成し、画像出力部８１０、音出力部８００を用いて出力する。
【００８４】
図８（Ｃ）に電子機器の１つであるプリンタの内部ブロック図を示し、図９（Ｃ）にその外観図を示す。このプリンタでは、操作パネル８２０からの操作情報、コードメモリ８３０及びフォントメモリ８４０から文字情報に基づいて、ビットマップメモリ８５０を作業領域として、印刷画像を生成し、プリント出力部８６０を用いて出力する。またプリンタの状態やモードを表示パネル８７０を用いてユーザに伝える。
【００８５】
なおマイクロコンピュータを適用できる電子機器としては、上記以外にも例えば、携帯電話（セルラーフォン）、ＰＨＳ、ページャ、携帯型情報端末、デジタルカメラ、ハードディスク装置、光ディスク（ＣＤ、ＤＶＤ）装置、光磁気ディスク（ＭＯ）装置、オーディオ機器、電子手帳、電子卓上計算機、ＰＯＳ端末、タッチパネルを備えた装置、プロジェクタ、ワードプロセッサ、パーソナルコンピュータ、テレビ、ビューファインダ型、又はモニタ直視型のビデオテープレコーダなど種々のものを考えることができる。
【００８６】
なお、本発明は本実施形態に限定されず、本発明の要旨の範囲内で種々の変形実施が可能である。
【００８７】
また、本発明の電子機器の構成も、図８（Ａ）〜（Ｃ）、図９（Ａ）〜（Ｃ）で説明したものに限定されるものでなく、種々の変形実施が可能である
【図面の簡単な説明】
【図１】図１（Ａ）（Ｂ）は、パイプライン制御マイクロコンピュータ（広義には情報処理装置）におけいて分岐が発生した場合の従来例について説明するための図である。
【図２】本実施の形態のマイクロコンピュータ（広義には情報処理装置）の構成について説明するための機能ブロック図である。
【図３】図３（Ａ）（Ｂ）（Ｃ）は、本実施の形態の分岐設定命令の一例について説明するための図である。
【図４】図４はフェッチアドレス演算回路の構成の一例について説明するための図である。
【図５】図５（Ａ）（Ｂ）（Ｃ）は、本実施の形態のループ命令の一例について説明するための図である。
【図６】本実施の形態のループ命令に対応したフェッチアドレス演算回路の構成の一例について説明するための図である。
【図７】図７（Ａ）（Ｂ）（Ｃ）は、本実施の形態の他のループ命令について説明するための図である。他のループ命令は、分岐先アドレスがループ命令の次の命令であるタイプのループ命令である。
【図８】図８（Ａ）（Ｂ）（Ｃ）は、マイクロコンピュータを含む電子機器のブロック図の一例を示す。
【図９】図９（Ａ）（Ｂ）（Ｃ）は、種々の電子機器の外観図の例である。
【符号の説明】
１０    ＣＰＵ（広義には、処理回路）
２０    フェッチ回路
３０    命令キュー
４０    フェッチアドレス演算回路
４２    分岐発生アドレス保持レジスタ
４４    分岐先アドレス保持レジスタ
４６    ループカウンタ回路
６０    デコード回路
６２    分岐情報設定回路
７０    実行回路
７２    データ演算回路
７４    アドレス演算回路
８０    レジスタファイル
８２    汎用レジスタ
８４    特殊レジスタ
９０    命令アドレスジェネレータ
１００  ＢＣＵ（バスコントロールユニット））
７００  マイクロコンピュータ
７１０  リモコン
７２０  位置検出部
７３５、８００  音出力部
７４０  メモリ
７５０、８１０  画像出力部
７７０  ＣＤＲＯＭ
７８０  カード
７９０  ＩＣメモリ
８００  音出力部
８２０  操作パネル
８３０  コードメモリ
８４０  フォントメモリ
８５０  ビットマップメモリ
８６０  プリント出力部
８７０  表示パネル
【図１】
0003698123.tif 000002
【図２】
0003698123.tif 000003
【図３】
0003698123.tif 000004
【図４】
0003698123.tif 000005
【図５】
0003698123.tif 000006
【図６】
0003698123.tif 000007
【図７】
0003698123.tif 000008
【図８】
0003698123.tif 000009
【図９】
0003698123.tif 000010