(57)【要約】  【課題】ＲＩＳＣプロセッサへのＣＩＳＣ命令の容易な実装，高速性と高機能性を両立するマイクロプロセッサ。【解決手段】複数のステージを備えるパイプライン１２と、処理のための回路リソースを管理するリソース管理ユニット１３と、パイプライン１２に対して処理コマンドを発行し、リソース管理ユニット１３からパイプライン１２へのコマンド投入の停止を要求するビジー信号ＢＳを受信してパイプライン１２へのコマンド投入を停止する命令フェッチユニット１１と、命令フェッチユニット１１からの処理コマンド及びパイプライン１２の最終ステージＺからパイプライン１２の最初のステージＡへの再投入パス１２４を介してパイプライン１２自ら再投入するコマンドを受信し、リソース管理ユニット１３からの制御信号ＳＣＳによってパイプライン１２に投入する命令を選択する命令セレクタ１５とを備える。【選択図】図１
2007026392.tif 000002
【特許請求の範囲】
【請求項１】
複数のステージを備えるパイプラインと、
該パイプラインに接続され，処理のための回路リソースを管理するリソース管理ユニットと、
前記パイプラインに対して処理コマンドを発行し、前記リソース管理ユニットから前記パイプラインへのコマンド投入の停止を要求するビジー信号を受信して前記パイプラインへのコマンド投入を停止する命令フェッチユニットと、
前記命令フェッチユニットからの前記処理コマンド及び前記パイプラインの最終ステージから前記パイプラインの最初のステージへ再投入パスを介して前記パイプライン自ら再投入するコマンドを受信し、前記リソース管理ユニットからの制御信号によって前記パイプラインに投入する命令を選択する命令セレクタ
とを備えることを特徴とするマイクロプロセッサ。
【請求項２】
前記パイプラインは、投入された命令のステージの進行を管理するためのステージ管理キューを有することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記ステージ管理キューは、ステージごとに該当ステージの処理を再実行が必要か否かの命令コードを保持する命令保持部と再実行フラグを格納するステージコントローラを備えることを特徴とする請求項２記載のマイクロプロセッサ。
【請求項４】
前記パイプラインは、前記パイプラインを占有して実行するＣＩＳＣプロセッサ命令を実行することを特徴とする請求項３記載のマイクロプロセッサ。
【請求項５】
前記複数のステージは、それぞれ再実行フラグを格納するパイプラインレジスタを備え、前記リソース管理ユニットは、前記最初のステージから受信した実行可能か否かの判断要求の結果を複数サイクル後のステージで返却し、実行可否判断要求をした命令より上流のステージすべての前記パイプラインレジスタに前記再実行フラグを格納することを特徴とする請求項１記載のマイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マイクロプロセッサに関し、特に、高速性と高機能性を両立するマイクロプロセッサに関する。
【背景技術】
【０００２】
近年、マイクロプロセッサの命令は、小規模で単純な回路で実現できるものに限定して実装され、処理の進行を互いに依存のないステージに分割し、処理をステージごとに並列に行うことでプログラムの処理時間の短縮化を図ってきた。 演算命令やロード・ストア命令などはこの様な実装が比較的簡単に行える一方で、マイクロプロセッサの制御命令の内の幾つかはマイクロプロセッサ全体をロックして行うことが必要であり、処理が複雑で処理のステージ分割とパイプラインのステージへの割り当てが困難なものが存在する。 
従来はこのような命令を実装するために、敢えて大規模な回路と複雑な制御により、機能を分割してパイプラインのステージに割り当てるか、パイプラインから分離するなどの方法を採用してきた。機能を分割してパイプラインのステージに割り当てる場合、回路の複雑さから消費電力の増大や不良回路の混入が問題となる。又、機能を分割してパイプラインから分離する場合、マイクロプロセッサの命令間の連係不十分によるマイクロプロセッサの性能の劣化が起こっていた。
【０００３】
また、従来のマイクロプロセッサでは、パイプラインに投入した命令が、その時のパイプラインの状況やマイクロプロセッサ全体の状態で実行できるか否かの判断をする際、その結果を得るためには、そのステージの動作を判断を開始したステージと同一にする必要があった。これは、仮に実行が不可能であると判別された際に、そのステージの動作をその命令が実行可能になるまで凍結し、その後に実行を再開する必要があるからである。
【０００４】
このような実装方法では、実行可能か否かを判断するステージの開始から判断結果がでるまでの時間が、他のステージの実行時間より長くなると、その実行可否判断回路の処理時間が、マイクロプロセッサ全体の動作周波数を規定してしまっていた。
【０００５】
近年、複数のマイクロプロセッサをワンチップに集積する要求が高まっており、その場合、実行可否判断回路はより複雑化、低速化する傾向にあり、問題となっている。
【０００６】
特許文献１は、例えばアウト・オブ・オーダ（Out-of-order）に命令を発行するマイクロプロセッサにおいて、特に、命令スケジュールユニットに使用される命令発行装置及び命令発行方法を開示している。即ち、ロード命令において、キャッシュミスが発生した際、このロード命令と多段の依存関係を有する命令を高速に検出することが可能な命令発行装置及び命令発行方法を開示している（特許文献１。）。
【特許文献１】特許第３５７７０５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明の目的は、ＲＩＳＣ（Reduced Instruction Set Computer）プロセッサの命令体系へのＣＩＳＣ（Complex Instruction Set Computer）プロセッサ命令処理の容易な実装を実現し、ＲＩＳＣプロセッサのパイプライン処理の高速化，命令密度の向上によるメモリ容量の削減と低消費電力化によりコストの抑制等、高速性と高機能性を両立するマイクロプロセッサを提供することにある。
【課題を解決するための手段】
【０００８】
本発明の一態様によれば、（イ）処理のステージが複数に分割されたパイプラインと、（ロ）パイプラインに接続され，処理のための回路リソースを管理するリソース管理ユニットと、（ハ）パイプラインに対して処理コマンドを発行し、リソース管理ユニットからパイプラインへのコマンド投入の停止を要求するビジー信号を受信してパイプラインへのコマンド投入を停止する命令フェッチユニットと、（ニ）命令フェッチユニットからの処理コマンド及びパイプラインの最終ステージからパイプラインの最初のステージへの再投入パスを介してパイプライン自ら再投入するコマンドを受信し、リソース管理ユニットからの制御信号によってパイプラインに投入する命令を選択する命令セレクタとを備えるマイクロプロセッサが提供される。
【発明の効果】
【０００９】
本発明のマイクロプロセッサによれば、ＲＩＳＣ（Reduced Instruction Set Computer）プロセッサの命令体系へのＣＩＳＣ（Complex Instruction Set Computer）プロセッサ命令処理の容易な実装を実現し、ＲＩＳＣプロセッサのパイプライン処理の高速化，命令密度の向上によるメモリ容量の削減と低消費電力化によりコストの抑制等、高速性と高機能性を両立することができる。
【発明を実施するための最良の形態】
【００１０】
次に、図面を参照して、本発明の実施の形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであり、各ブロック，各パイプライン，各命令フォーマットの形式及び平面寸法等は現実のものとは異なることに留意すべきである。又、図面相互間においても互いの寸法の関係や比率が異なる部分が含まれていることはもちろんである。
【００１１】
また、以下に示す実施の形態は、この発明の技術的思想を具体化するための装置や方法を例示するものであって、この発明の技術的思想は、各ブロックの構成部品の配置等を下記のものに特定するものでない。この発明の技術的思想は、特許請求の範囲において、種々の変更を加えることができる。
【００１２】
処理のパイプラインが幾つかのステージに分割されているマイクロプロセッサにおいて、 処理パイプラインへのコマンド投入の停止を要求する機構, パイプライン中の命令の実行を無効化するフラグ, パイプラインの最終の段からパイプラインの最初の段パイプライン自らコマンドを再投入する再投入パス等の機構を付加することで、 少ない追加回路（再投入パス及び命令セレクタ等）でＲＩＳＣプロセッサ命令体系中にＣＩＳＣプロセッサ命令の様な高機能な命令を混在させることが可能になり、命令密度の向上によるメモリ容量の削減と低消費電力化により、マイクロプロセッサのコストの抑制ができる。
【００１３】
また、ＲＩＳＣプロセッサのパイプライン制御において、ある命令が実行可能であるか否かが判別できる前に、投機的に次の命令の実行を開始することが可能になり、マイクロプロセッサの動作の高速化を達成することができる。
【００１４】
並列実行が可能であるが単純な命令しか実装できないＲＩＳＣプロセッサに、小規模の回路を付加することで、 高機能でＲＩＳＣプロセッサのパイプラインステージの構造に影響されない命令を実装することができる。 この結果、マイクロプロセッサが持てる命令の命令規模の範囲が広がり、命令効率の向上ができ、マイクロプロセッサの消費電力の抑制やコストの抑制が可能になる。
【００１５】
再実行フラグと命令の再投入機能により、マイクロプロセッサの命令実行中、その命令処理パイプラインの上流ステージで行われる実行可否判断の結果を同一ステージで受け取らず、そのパイプラインの下流のステージで受けることが可能になり、複雑な実行可否判断が行われてもマイクロプロセッサの処理速度が低下させないことが可能になる。
【００１６】
[第１の実施の形態]
本発明の第１の実施の形態に係るマイクロプロセッサは、ＲＩＳＣプロセッサにおいて、ＣＩＳＣプロセッサ命令を容易に実装することができる方法を開示する。
【００１７】
本発明の第１の実施の形態に係るマイクロプロセッサにおいて、パイプライン１２を含む処理ユニット１は、図１に示すように、複数のステージを備えるパイプライン１２と、パイプライン１２に接続され，処理のための回路リソースを管理するリソース管理ユニット（ＲＭＵ：Resource Management Unit）１３と、パイプライン１２に対して処理コマンドを発行し、リソース管理ユニット１３からパイプライン１２へのコマンド投入の停止を要求するビジー信号ＢＳを受信してパイプライン１２へのコマンド投入を停止する命令フェッチユニット（ＩＦＵ：Instruction Fetch Unit）１１と、命令フェッチユニット１１及びパイプライン１２に接続され，動作タイミングを規定するクロックジェネレータ１４と、命令フェッチユニット１１からの処理コマンド及びパイプライン１２の最終ステージＺ（Stage-Z）からパイプライン１２の最初のステージＡ(Stage-A)への再投入パス（RedoLoop）１２４を介してパイプライン１２自ら再投入するコマンドを受信し、リソース管理ユニット１３からの制御信号ＳＣＳによってパイプライン１２に投入する命令を選択する命令セレクタ１５とを備える。
【００１８】
或いは又、本発明の第１の実施の形態に係るマイクロプロセッサにおいて、パイプライン１２は、投入された命令のステージの進行を管理するためのステージ管理キュー１２２１を備えていても良い。
【００１９】
或いは又、本発明の第１の実施の形態に係るマイクロプロセッサにおいて、ステージ管理キュー１２２１は、ステージごとに該当ステージの処理を再実行が必要か否かの命令コードを保持する命令保持部１２２２と再実行フラグ（ＲＤＦ）１２２３を格納するステージコントローラ１２２を備えていても良い。
【００２０】
或いは又、本発明の第１の実施の形態に係るマイクロプロセッサにおいて、命令セレクタ１５は、パイプライン１２の最終ステージＺにおいて再実行が必要か否かの命令コードを再投入パス１２４を介して受信し、パイプライン１２の最初のステージＡにその命令コードを再投入しても良い。
【００２１】
或いは又、本発明の第１の実施の形態に係るマイクロプロセッサにおいて、パイプライン１２は、パイプライン１２を占有して実行するＣＩＳＣプロセッサ命令を実行しても良い。
【００２２】
命令フェッチユニット１１は、処理ユニット１への投入命令列を命令メモリ１１１に持ち、 クロックに同期してパイプライン１２に命令を投入する。
【００２３】
リソース管理ユニット１３は、パイプライン１２からパイプライン情報信号ＰＬＩを受信し、パイプライン１２の各ステージの動作状況と処理命令を監視する。又、パイプライン１２に投入された命令が現在のパイプライン１２のステージ状況から実行可能かどうか判断し、 結果をＤＯ/ＲＤ信号として、パイプライン１２に返却する。また、 処理不能であれば命令フェッチユニット１１に対してビジー信号ＢＳを使用して、命令投入停止を要求する。
【００２４】
パイプライン１２は、投入された命令を処理するために、ステージＡ, ステージＢ,…，ステージＺからなる分割ステージ１２１に分割されている。 ステージ分割されたパイプライン１２は接続されたクロックジェネレータ１４に同期して、バケツリレー的に処理を進める。つまり、命令フェッチユニット１１が先頭のステージＡに投入した命令は、次のクロックでは ステージＢ、次のクロックでは、ステージＣと進行する。各ステージはステージコントローラ１２２でコントロールされている。
【００２５】
最初のステージＡには、命令セレクタ１５から命令信号ＩＳが投入される命令投入パスが存在する。また、パイプライン１２は、最終のステージＺで処理が終了するが、処理を終了しない場合に、最初のステージＡに命令を再投入する再投入パス１２４を有する。
【００２６】
命令セレクタ１５は、命令フェッチユニット１１からの命令とパイプラインの最終のステージＺからの命令をリソース管理ユニット１３の制御信号により選択し、パイプライン１２の最初のステージＡに投入する。
【００２７】
パイプライン１２は、図２に示すように、投入された命令のステージの進行を管理するためのステージ管理キュー１２２１を有する。ステージ管理キュー１２２１は、ステージごとの命令コードを保持する命令保持部１２２２と、再実行フラグ１２２３を備える。 
本発明の第１の実施の形態に係るマイクロプロセッサは、ＲＩＳＣプロセッサ命令，ＣＩＳＣプロセッサ命令として、順に以下の２種類の命令を実行することを想定している。 
（ｉ）処理パイプラインのステージ分割がステージ間で互いに独立しているＲＩＳＣプロセッサ命令。
【００２８】
（ｉｉ）処理パイプラインのステージ分割がステージ間で互いに独立していないＣＩＳＣプロセッサ命令。
【００２９】
処理パイプラインのステージ分割がステージ間で互いに独立しているＲＩＳＣプロセッサ命令と、処理パイプラインのステージ分割がステージ間で互いに独立していないＣＩＳＣプロセッサ命令を概念的に示すと、図３及び図４に示すように表される。
【００３０】
図３（ａ）は、 ＲＩＳＣ命令１８を処理する際の処理キューを、図 ３（ｂ）は、各ステージを処理するマイクロプロセッサのチップ上の回路の領域を概念的に示している。それぞれのステージの処理に回路的に重複する部分が無いため、動作クロックごとにステージが進行すれば、クロックごとに最初のステージに命令を投入することができる。つまり、一つのパイプライン１２でステージ数分の命令を並列に実行することができる。 
図４（ａ）は、ＣＩＳＣ命令２０を処理する際の処理キューを、図４（ｂ）は、各ステージを処理するマイクロプロセッサのチップ上の回路の領域を概念的に示している。一つの命令を処理するマイクロプロセッサの回路リソースがステージごとに分離されていないため、パイプラインではステージ分割しても並列処理することができず、処理中はパイプラインを占有する。
【００３１】
（Ａ）ＲＩＳＣプロセッサ命令が連続投入された時のパイプラインステージの進行を図５乃至図９に示す。
【００３２】
（Ａ−１）パイプライン上に何も実行中の命令が存在しないときには、図５に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-１が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、ステージ上にＩｎｓｔ-１の実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。
【００３３】
（Ａ−２）次のサイクルでは、図６に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-２が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、先行する命令Ｉｎｓｔ-１は、命令Ｉｎｓｔ―２の実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。
【００３４】
（Ａ−３）次のサイクルでは、図７に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-３が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、先行する命令Ｉｎｓｔ-１，Ｉｎｓｔ-２は、命令Ｉｎｓｔ-３の実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。
【００３５】
（Ａ−４）次のサイクルでは、図８に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-４が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、先行する命令Ｉｎｓｔ-１，Ｉｎｓｔ-２，Ｉｎｓｔ-３は、命令Ｉｎｓｔ-４の実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。
【００３６】
…
（Ａ−Ｎ）第Ｎ番目のサイクルでは、図９に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-Ｎが投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、先行する命令Ｉｎｓｔ-１，Ｉｎｓｔ-２，Ｉｎｓｔ-３，…，Ｉｎｓｔ-Ｎ−１は、命令Ｉｎｓｔ-Ｎの実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。
【００３７】
以上説明したように、ＲＩＳＣプロセッサ命令が連続投入された時のパイプラインステージでは、次々とＩＦＵ１１から命令がステージＡに投入され、すべて実行可能と判断される。それぞれのステージの処理に回路的に重複する部分が無いため、動作クロックごとにステージが進行すれば、クロックごとに最初のステージに命令を投入でき、一つのパイプライン１２でステージ数分の命令を並列に実行することができる。
【００３８】
（Ｂ）ＣＩＳＣプロセッサ命令が連続投入された時のパイプラインステージの進行を図１０乃至図１８に示す。
【００３９】
（Ｂ−１）パイプライン上に何も実行中の命令が存在しないときには、図１０に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-１が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、ステージ上にＩｎｓｔ-１の実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。Ｉｎｓｔ-１はＣＩＳＣ命令であり、一つのパイプライン１２上で他の命令との同時実行を許していない。
【００４０】
（Ｂ−２）次のサイクルでは、図１１に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-２が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、先行する命令Ｉｎｓｔ-１が存在するので、命令Ｉｎｓｔ-２の実行は不可能と判断される（ＯＫ！）。そのため、図１１に示すように、ステージＡには再実行を必要とする意味の再実行フラグＲ（ＲＤＦをＲとして省略して記載）が立つ。ＲＭＵ１３は同時にＩＦＵ１１にパイプライン１２への命令投入停止を要求するビジー信号ＢＳを出し、更に命令セレクタ１５を操作し、ステージＡへの命令投入をパイプライン１２の最終ステージＺに切り替える。この時、命令Ｉｎｓｔ-２が ＲＩＳＣ命令であっても、或いはＣＩＳＣ命令であっても、ＲＭＵ１３は同様の動作をする。図１１に示す例では、命令Ｉｎｓｔ-２がＣＩＳＣ命令であるとして以降の動作を説明する。
【００４１】
（Ｂ−３）次のサイクルでは、図１２に示すように、ＩＦＵ１１は、ＲＭＵ１３からの命令投入停止を要求するビジー信号ＢＳを受信し、動作を停止する。パイプライン１２は動作クロックに従い、一段ずつ進む。命令Ｉｎｓｔ-１は、正常に動作をするが、命令Ｉｎｓｔ-２は再実行フラグＲを持つので実行されない。
【００４２】
（Ｂ−４）次のサイクルでは、図１３に示すように、ＩＦＵ１１は、ＲＭＵ１３からの命令投入停止を要求するビジー信号ＢＳを受信し、動作を停止する。パイプライン１２は動作クロックに従い、一段ずつ進む。命令Ｉｎｓｔ-１は、正常に動作をするが、命令Ｉｎｓｔ-２は再実行フラグＲを持つので実行されない。
【００４３】
（Ｂ−５）第Ｎ番目のサイクルでは、図１４に示すように、命令Ｉｎｓｔ-１が最終ステージＺに到達する。命令Ｉｎｓｔ-１はここで実行を終了する。
【００４４】
（Ｂ−６）次のサイクルでは、図１５に示すように、再実行フラグＲのある命令Ｉｎｓｔ-２が最終ステージＺに到達する。
【００４５】
（Ｂ−７）次のサイクルでは、図１６に示すように、命令Ｉｎｓｔ-２が再投入パス１２４を使用してステージＡに再投入される。同時に再実行フラグＲが落ちる。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、ステージ上に命令Ｉｎｓｔ-２の実行を妨げる原因がなく、実行可能と判断される（ＯＫ！）。命令Ｉｎｓｔ-２は、ＣＩＳＣ命令であり、パイプライン１２上に他の命令との同時実行を許していない。ＲＭＵ１３はパイプライン１２上に再実行フラグＲを持つ命令がないため、命令セレクタ１５をＩＦＵ１１からの命令に切り替え、ＩＦＵ１１に出していた命令投入停止を要求するビジー信号ＢＳを取り下げる。
【００４６】
（Ｂ−８）次のサイクルでは、図１７に示すように、ステージＡに命令Ｉｎｓｔ-３が投入される。ＲＭＵ１３に動作の可否判断を要求（ＯＫ？）し、先行する命令Ｉｎｓｔ-２の存在で命令Ｉｎｓｔ-３の実行は不可能と判断される（ＯＫ！）。そのため、ステージＡには再実行を必要とする意味の再実行フラグＲが立つ。ＲＭＵ１３は同時にＩＦＵ１１にパイプライン１２への命令投入停止を要求するビジー信号ＢＳを出し、更に命令セレクタ１５を操作し、ステージＡへの命令投入をパイプライン１２の最終ステージＺに切り替える。この時、命令Ｉｎｓｔ-３が ＲＩＳＣ命令であっても、或いはＣＩＳＣ命令であっても、ＲＭＵ１３は同様の動作をする。図１７に示す例では、命令Ｉｎｓｔ-３は、ＣＩＳＣ命令である。
【００４７】
（Ｂ−９）次のサイクルでは、図１８に示すように、ＩＦＵ１１は、ＲＭＵ１３からの命令投入停止を要求するビジー信号ＢＳを受信し、動作を停止する。パイプライン１２は動作クロックに従い、一段ずつ進む。命令Ｉｎｓｔ-２は、正常に動作をするが、命令Ｉｎｓｔ-３は再実行フラグＲを持つので実行されない。
【００４８】
本発明の第１の実施の形態に係るマイクロプロセッサによれば、並列実行が可能であるが単純な命令しか実装できないＲＩＳＣプロセッサに、小規模の回路を付加することで、 高機能でＲＩＳＣプロセッサのパイプラインステージの構造に影響されない命令を実装することができる。 この結果、マイクロプロセッサが持てる命令の命令規模の範囲が広がり、命令効率の向上ができ、マイクロプロセッサの消費電力の抑制やコストの抑制が可能になる。
【００４９】
本発明の第１の実施の形態に係るマイクロプロセッサによれば、ＲＩＳＣプロセッサにおいて、ＣＩＳＣプロセッサ命令を容易に実装することもできる。
【００５０】
[第２の実施の形態]
本発明の第２の実施の形態に係るマイクロプロセッサは、ＲＩＳＣプロセッサのパイプライン処理の高速化について開示する。
【００５１】
本発明の第２の実施の形態に係るマイクロプロセッサにおいて、パイプライン１２を含む処理ユニット１は、図１９に示すように、複数のステージを備えるパイプライン１２と、パイプライン１２に接続され，処理のための回路リソースを管理するリソース管理ユニット１３と、パイプライン１２に対して処理コマンドを発行し、リソース管理ユニット１３からパイプライン１２へのコマンド投入の停止を要求するビジー信号ＢＳを受信してパイプライン１２へのコマンド投入を停止する命令フェッチユニット１１と、命令フェッチユニット１１及びパイプライン１２に接続され，動作タイミングを規定するクロックジェネレータ１４（図示省略）と、命令フェッチユニット１１からの処理コマンド及びパイプライン１２の最終ステージＺ（Stage-Z）からパイプライン１２の最初のステージＡ(Stage-A)への再投入パス１２４を介してパイプライン１２自ら再投入するコマンドを受信し、リソース管理ユニット１３からの制御信号ＳＣＳによってパイプライン１２に投入する命令を選択する命令セレクタ１５とを備える。
【００５２】
或いは又、本発明の第２の実施の形態に係るマイクロプロセッサにおいて、複数のステージは、それぞれ再実行フラグＲＤＦを格納するパイプラインレジスタ２４を備え、リソース管理ユニット１３は、パイプライン１２の最初のステージＡから受信した実行可能か否かの判断要求の結果を複数サイクル後のステージで返却し、実行可否判断要求をした命令より上流のステージすべてのパイプラインレジスタ２４に再実行フラグＲＤＦを格納する構成を備える。
【００５３】
命令フェッチユニット１１は、処理ユニット１への投入命令列を命令メモリ１１１に持ち、 クロックに同期してパイプライン１２に命令を投入する。
【００５４】
リソース管理ユニット１３は、パイプライン１２からパイプライン情報信号ＰＬＩを受信し、パイプライン１２の各ステージの動作状況と処理命令を監視する。又、パイプライン１２に投入された命令が現在のパイプライン１２のステージ状況から実行可能かどうか判断し、 結果を数サイクル後、無効化信号ＮＧとして、パイプライン１２に返却する。また、 処理不能であれば命令フェッチユニット１１に対してビジー信号ＢＳを使用して、命令投入停止を要求する。
【００５５】
パイプライン１２は、投入された命令を処理するために、ステージＡ, ステージＢ,…，ステージＺからなる分割ステージ１２１に分割されている。 ステージ分割されたパイプライン１２は接続されたクロックジェネレータ１４に同期して、バケツリレー的に処理を進める。つまり、命令フェッチユニット１１が先頭のステージＡに投入した命令は、次のクロックでは ステージＢ、次のクロックでは、ステージＣと進行する。
【００５６】
最初のステージＡには、命令セレクタ１５から命令信号ＩＳが投入される命令投入パスが存在する。また、パイプライン１２は、最終のステージＺで処理が終了するが、処理を終了しない場合に、最初のステージＡに命令を再投入する再投入パス１２４を有する。
【００５７】
命令セレクタ１５は、命令フェッチユニット１１からの命令とパイプラインの最終のステージＺからの命令をリソース管理ユニット１３の制御信号により選択し、パイプライン１２の最初のステージＡに投入する。
【００５８】
本発明の第２の実施の形態に係るマイクロプロセッサにおいて、パイプライン１２がステージＡからステージＺの分割ステージ１２１に処理が分割されている点は、第１の実施の形態と同様である。
【００５９】
本発明の第２の実施の形態に係るマイクロプロセッサにおいては、図１９に示すように、ステージＢからステージＺの各ステージ内には、再投入フラグ（ＲＤＦ）を格納するパイプラインレジスタ２４と、ＯＲゲート２２を備える。
【００６０】
ステージＢ内のパイプラインレジスタ２４は、リソース管理ユニット１３からの無効化信号ＮＧを受信する。ステージＢ内のパイプラインレジスタ２４の出力は、ステージＢ内のＯＲゲート２２に入力される。ステージＢ内のＯＲゲート２２には、同時にリソース管理ユニット１３からの無効化信号ＮＧが入力される。ステージＢ内のＯＲゲート２２の出力は、ステージＣ内のパイプラインレジスタ２４に入力される。
【００６１】
ステージＣ内のパイプラインレジスタ２４の出力は、ステージＣ内のＯＲゲート２２に入力される。ステージＣ内のＯＲゲート２２には、同時にリソース管理ユニット１３からの無効化信号ＮＧが入力される。ステージＣ内ＯＲゲート２２の出力は、ステージＤ内のパイプラインレジスタ２４に入力される。
【００６２】
ステージＤ内のパイプラインレジスタ２４の出力は、ステージＤ内のＯＲゲート２２に入力される。ステージＤ内のＯＲゲート２２には、同時にリソース管理ユニット１３からの無効化信号ＮＧが入力される。ステージＤ内のＯＲゲート２２の出力は、ステージＥ内のパイプラインレジスタ２４に入力される。
【００６３】
ステージＥ内のパイプラインレジスタ２４の出力は、ステージＥ内のＯＲゲート２２に入力される。ステージＥ内のＯＲゲート２２には、同時にリソース管理ユニット１３からの無効化信号ＮＧが入力される。
【００６４】
第２の実施の形態では、ステージＡでリソース管理ユニット１３に対する実行可能か否かの判断要求の結果が４サイクル後のステージＥで返却されるところが異なる。この場合、リソース管理ユニット１３から実行可否判断結果が出るまでに、パイプライン１２には後続の４命令が投入されている。リソース管理ユニット１３は、実行可否判断要求をした命令より上流のステージすべてに再実行フラグＲを立てる。尚、後続の４命令の最初に実行可否判断要求を出した命令と同様に、ステージＡにあるときに実行可否判断要求（ＯＫ？）を出している。これらの命令は、同時に再実行フラグＲが立つため、すべて動作が無効になる。従って、リソース管理ユニット１３は、これらの命令が出した実行可否判断要求を自ら無効化する。
【００６５】
尚、図１９においては、ステージＡでリソース管理ユニット１３に対する実行可能か否かの判断要求の結果は、４サイクル後のステージＥで返却される例について示されているが、４サイクルに限らず、複数サイクル後のステージで返却されても良いことは勿論である。その際においても、リソース管理ユニット１３は、実行可否判断要求をした命令より上流のステージすべてに再実行フラグＲを立てる点は同様である。
【００６６】
（Ｃ）本発明の第２の実施の形態に係るマイクロプロセッサにおいて、パイプライン１２にＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を図２０乃至図３０に示す。
【００６７】
（Ｃ−１）パイプライン上に何も実行中の命令が存在しないときには、図２０に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ-１が投入される。命令Ｉｎｓｔ-１は、ＲＭＵ１３に命令実行可否判断要求を出す。そのステージでは判断結果の返却は無い。
【００６８】
（Ｃ−２）次のサイクルでは、図２１に示すように、ステージＡに命令フェッチユニットから命令Ｉｎｓｔ―２が投入される。Ｉｎｓｔ―２はＲＭＵ１３に命令実行可否判断要求を出す。そのステージでは判断結果の返却は無い。
【００６９】
（Ｃ−３）次のサイクルでは、図２２に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ―３が投入される。命令Ｉｎｓｔ―３はＲＭＵ１３に命令実行可否判断要求を出す。そのステージでは判断結果の返却は無い。
【００７０】
（Ｃ−４）次のサイクルでは、図２３に示すように、ステージＡにＩＦＵ１１から命令Ｉｎｓｔ―４が投入される。命令Ｉｎｓｔ―４はＲＭＵ１３に命令実行可否判断要求を出す。そのステージでは判断結果の返却は無い。
【００７１】
（Ｃ−５）次のサイクルでは、図２４に示すように、命令Ｉｎｓｔ-１の命令実行可否判断が４クロック費やして出る。命令Ｉｎｓｔ-１は、ステージＥでその結果を受け取る。この例では、命令Ｉｎｓｔ-１はなんらかの理由で実行不可と判断されたため、命令Ｉｎｓｔ-１から上流のステージに再実行要求のための再実行フラグＲが出される。ＲＭＵ１３は、このとき、ＩＦＵ１１に命令投入停止要求を出し、更に命令セレクタ１５を切り替えて、ステージＡへの命令投入を、パイプライン１２の最終ステージＺからに切り替える。
【００７２】
（Ｃ−６）次のサイクルでは、図２５に示すように、ステージＥは、命令Ｉｎｓｔ-２の命令実行可否判断が出されるステージであるが、すでに再実行要求のための再実行フラグＲがあり、ＲＭＵ１３から新たな再実行要求は出ない。
【００７３】
（Ｃ−７）第Ｎ番目のサイクルでは、図２６に示すように、命令Ｉｎｓｔ-１がパイプライン１２の最終ステージＺに到達する。
【００７４】
（Ｃ−８）次のサイクルでは、図２７に示すように、命令Ｉｎｓｔ-１がパイプライン１２の最初のステージＡに投入され、同時に再実行フラグＲが落ちる。命令Ｉｎｓｔ-１はＲＭＵ１３に実行可否判断要求を出す。このステージＡでは判断結果の返却は無い。
【００７５】
（Ｃ−９）次のサイクルでは、図２８に示すように、命令Ｉｎｓｔ-２がパイプライン１２の最初のステージＡに投入され、同時に再実行フラグＲが落ちる。命令Ｉｎｓｔ-２はＲＭＵ１３に実行可否判断要求を出す。このステージＡでは判断結果の返却は無い。
【００７６】
（Ｃ−１０）次に、図２９に示すサイクルでは、命令Ｉｎｓｔ-５がパイプライン１２の最初のステージＡに投入され、同時に再実行フラグＲが落ちる。再実行フラグＲを持つ命令がパイプライン１２に無くなり、ＲＭＵ１３は命令セレクタ１５をＩＦＵ１１からに切り替え、ＩＦＵ１１に出していた命令投入停止を要求するビジー信号ＢＳを停止する。命令Ｉｎｓｔ-５は、ＲＭＵ１３に実行可否判断要求を出す。その結果、命令Ｉｎｓｔ-１の実行可否判断結果がＲＭＵ１３からステージＥに出る。今回は実行可能（ＯＫ）の判断であった。
【００７７】
（Ｃ−１１）次のサイクルでは、図３０に示すように、ＩＦＵ１１から命令Ｉｎｓｔ-６が投入され、実行可否判断要求をＲＭＵ１３に出す。命令Ｉｎｓｔ-２の実行可否判断結果がＲＭＵ１３からステージＥに出る。今回は実行可能（ＯＫ）の判断であった。
【００７８】
本発明の第２の実施の形態に係るマイクロプロセッサによれば、再実行フラグと命令の再投入機能により、マイクロプロセッサの命令実行中、その命令処理パイプラインの上流ステージで行われる実行可否判断の結果を同一ステージで受け取らず、そのパイプラインの下流のステージで受けることが可能になり、複雑な実行可否判断が行われてもマイクロプロセッサの処理速度が低下させないことが可能になる。
【００７９】
[その他の実施の形態]
上記のように、本発明は第１乃至第２の実施の形態によって記載したが、この開示の一部をなす論述及び図面はこの発明を限定するものであると理解すべきではない。この開示から当業者には様々な代替実施の形態、実施例及び運用技術が明らかとなろう。
【００８０】
このように、本発明はここでは記載していない様々な実施の形態等を含むことは勿論である。したがって、本発明の技術的範囲は上記の説明から妥当な特許請求の範囲に係る発明特定事項によってのみ定められるものである。
【図面の簡単な説明】
【００８１】
【図１】本発明の第１の実施の形態に係るマイクロプロセッサの処理ユニットの模式的ブロック構成図。
【図２】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインステージコントローラ内のステージ管理キューの模式的ブロック構成図。
【図３】ＲＩＳＣプロセッサ命令を実現する回路リソースの特徴を示す図。
【図４】ＣＩＳＣプロセッサ命令を実現する回路リソースの特徴を示す図。
【図５】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図６】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図７】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図８】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図９】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１０】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１１】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１２】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１３】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１４】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１５】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１６】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１７】本発明の第１の実施の形態に係るマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１８】本発明の第１の実施の形態が適用されたマイクロプロセッサのパイプラインにＣＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図１９】本発明の第２の実施の形態に係るマイクロプロセッサの処理ユニットの模式的ブロック構成図。
【図２０】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２１】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２２】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２３】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２４】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２５】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２６】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２７】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２８】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図２９】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【図３０】本発明の第２の実施の形態に係るマイクロプロセッサのパイプラインにＲＩＳＣプロセッサ命令が投入された時のパイプラインステージの進行を示す図。
【符号の説明】
【００８２】
１…処理ユニット
１１…命令フェッチユニット（ＩＦＵ）
１２…パイプライン
１３…リソース管理ユニット（ＲＭＵ）
１４…クロックジェネレータ
１５…命令セレクタ
１１１…命令メモリ
１２１…分割ステージ
１２２…ステージコントローラ
１２４…再投入パス（RedoLoop）
１６，１７…回路リソース
１８…ＲＩＳＣ命令
２０…ＣＩＳＣ命令
２２…ＯＲゲート
２４…パイプラインレジスタ
１２２１…ステージ管理キュー
１２２２…命令保持部
１２２３…再実行フラグ
ＩＳ…命令信号
ＢＳ…ビジー（Busy）信号
ＳＣＳ…制御信号
【図１】
2007026392.tif 000003
【図２】
2007026392.tif 000004
【図３】
2007026392.tif 000005
【図４】
2007026392.tif 000006
【図５】
2007026392.tif 000007
【図６】
2007026392.tif 000008
【図７】
2007026392.tif 000009
【図８】
2007026392.tif 000010
【図９】
2007026392.tif 000011
【図１０】
2007026392.tif 000012
【図１１】
2007026392.tif 000013
【図１２】
2007026392.tif 000014
【図１３】
2007026392.tif 000015
【図１４】
2007026392.tif 000016
【図１５】
2007026392.tif 000017
【図１６】
2007026392.tif 000018
【図１７】
2007026392.tif 000019
【図１８】
2007026392.tif 000020
【図１９】
2007026392.tif 000021
【図２０】
2007026392.tif 000022
【図２１】
2007026392.tif 000023
【図２２】
2007026392.tif 000024
【図２３】
2007026392.tif 000025
【図２４】
2007026392.tif 000026
【図２５】
2007026392.tif 000027
【図２６】
2007026392.tif 000028
【図２７】
2007026392.tif 000029
【図２８】
2007026392.tif 000030
【図２９】
2007026392.tif 000031
【図３０】
2007026392.tif 000032