(57)【要約】【課題】ソフトウェアの互換性に関して不都合を生ずることなく、命令処理時間を短縮して高速動作可能なデータ処理装置を提供する【解決手段】命令が予備フィールドを持つ場合に、命令をメモリ（１０６）から命令キャッシュメモリ（１０１）にストアする際、その命令の命令コードをプリデコード・演算器（１００）でプリデコードして生成した情報を命令キャッシュメモリの予備フィールド対応領域に格納する。その命令が命令キャッシュメモリからフェッチされるとき、命令キャッシュメモリの予備フィールド対応領域に保存されていた情報を利用する。これにより、命令キャッシュメモリからフェッチした命令のデコード完了を待つことなく、プリデコードされた情報に基づいて処理を進めることが可能になる。【選択図】　　　　図１
2004110248.tif 000002
【特許請求の範囲】
【請求項１】
命令キャッシュメモリを有し、前記命令キャッシュメモリから読み出した命令をデコードして実行可能なデータ処理装置であって、
前記命令は予備フィールドを有し、
前記命令キャッシュメモリは命令の予備フィールドに応ずる領域に命令のプリデコードに基づいて生成された情報を保持することを特徴とするデータ処理装置。
【請求項２】
前記命令キャッシュメモリから読み出した命令を実行するとき、当該命令の前記予備フィールドに応ずる領域の情報に基づいて命令実行手順を制御可能な制御手段を有することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記命令キャッシュメモリに命令をストアするとき前記プリデコードを行なうプリデコーダを有することを特徴とする請求項２記載のデータ処理装置。
【請求項４】
前記プリデコーダは命令の第１フィールドに含まれるオペレーションコードをデコードすることを特徴とする請求項３記載のデータ処理装置。
【請求項５】
プリデコーダによるデコード結果から得られる命令種別の情報を命令の予備フィールドに応ずる前記領域に保持することを特徴とする請求項４記載のデータ処理装置。
【請求項６】
前記命令の種別は分岐命令か否かを示す情報であることを特徴とする請求項５記載のデータ処理装置。
【請求項７】
前記制御手段は、命令キャッシュメモリから読み出した命令の前記所定のフィールドに応ずる領域の情報によって当該命令が分岐命令であることを判別したとき、分岐先命令をフェッチする処理を指示することが可能なことを特徴とする請求項６記載のデータ処理装置。
【請求項８】
前記命令キャッシュメモリから読み出された命令を一時的に保持するキューイングバッファを有し、
一つの分岐動作を分割して処理可能な分岐前処理命令と分岐処理命令とを命令セットに有し、
前記分岐前処理命令は分岐先アドレス計算と分岐先命令のフェッチを指示し、分岐処理命令は分岐条件判定と分岐処理を指示し、
前記分岐前処理命令の実行によって得られた分岐先アドレスと分岐先命令を一時的に保持するターゲットバッファを有し、
前記制御手段は、前記キューイングバッファに保持されている命令の前記所定のフィールドに応ずる領域の情報によって当該命令が前記分岐処理命令であることを判別したときは、前記ターゲットバッファから分岐先命令とそれに続く分岐先アドレスを読み出す処理を指示することが可能なことを特徴とする請求項７記載のデータ処理装置。
【請求項９】
前記命令キャッシュメモリに命令をストアするとき、当該命令の第２フィールドに含まれる情報を用いた演算を行なう演算器を有することを特徴とする請求項３記載のデータ処理装置。
【請求項１０】
前記命令キャッシュメモリは、前記プリデコーダのデコード結果に基づいて、前記演算器による演算結果を命令の第２フィールドに応ずる命令キャッシュメモリの領域に保持することを特徴とする請求項９記載のデータ処理装置。
【請求項１１】
ｎビットのディスプレースメント付きプログラムカウンタ相対分岐命令に対し、前記演算器は前記第２フィールドのディスプレースメントにプログラムカウンタのｎビットのアドレス下位情報を加算し、ｎビットの加算結果を当該ディスプレースメント付きプログラムカウンタ相対分岐命令の第２フィールドに応ずる命令キャッシュメモリの領域に保持し、加算によるキャリ情報を当該ディスプレースメント付きプログラムカウンタ相対分岐命令の予備フィールドに応ずる前記領域に保持することを特徴とする請求項９記載のデータ処理装置。
【請求項１２】
命令キャッシュメモリを有し、前記命令キャッシュメモリから読み出した命令をデコードして実行可能なデータ処理装置であって、
前記命令キャッシュメモリに命令をストアするときプリデコードを行なうプリデコーダを有し、
前記命令キャッシュメモリは命令のプリデコードに基づいて生成された情報を命令と一対一対応で保持する領域を有することを特徴とするデータ処理装置。
【請求項１３】
前記命令キャッシュメモリから読み出した命令を実行するとき、当該命令の前記予備フィールドに応ずる領域の情報に基づいて命令実行手順を制御可能な制御手段を有することを特徴とする請求項１２記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令を実行するデータ処理装置に関し、例えば命令セットの将来的な拡張等のために命令に予備フィールドが残されている命令セットを持つデータプロセッサに適用して有効な技術に関する。
【０００２】
【従来の技術】
特許文献１には命令の予備フィールド中の予約ビットを用いてアドレスの拡張を行なう技術が記載される。また特許文献２，３にはオペレーションコードの拡張部分を設けて命令フォーマットを拡張する技術が記載される。
【０００３】
【特許文献１】
特開２００１−１４２６９４号公報
【特許文献２】
特開２０００−０２９６８４号公報
【特許文献３】
特開２０００−０２９６８５号公報
【０００４】
【発明が解決しようとする課題】
近年の高速プロセッサにおいては、動作周波数向上のために、一般的にパイプラインステージを細かく分割して、１ステージあたりの論理段数を減少させ、周波数を向上させている。パーソナルコンピュータ向けマイクロプロセッサでは、１ギガヘルツ（ＧＨｚ）を超える周波数を実現するために、十数段にもおよぶパイプラインステージをもつマイクロアーキテクチャ（スーパーパイプライン方式）を規定している例もある。しかしながら、パイプライン段数が増加すると、分岐時に分岐予測ミスが発生する場合には、非常に大きなペナルティを伴うことになる。
【０００５】
本発明者はそのようなペナルティを低減することについて検討した。そのようなペナルティの低減には分岐命令などの命令の解読及び実行を高速化できるようにすればよい。そのために、新たな命令を追加したり、命令セットを刷新して対処することも可能であるが、問題がある。ハードウェアが進化しても既存のソフトウェアをそのまま使用したいというニーズが強く、上位互換性が要求されるからである。
【０００６】
しかしながら、特許文献１の技術は即値で与えられるアドレスの拡張に限定されるから、それ以外の機能拡張によって命令の解読及び実行を高速化することはできない。また、特許文献１に記載の技術では、ハードウェア的に予備フィールドへの情報の保存方法が何ら限定されていないため、コンパイラやアセンブラを変更して、ソフトウェア的に予備フィールドを拡張した命令セットを確立することが必要になる。この点は特許文献２，３についても同じである。
【０００７】
本発明の目的は、ソフトウェアの互換性に関して不都合を生ずることなく、命令処理時間を短縮して高速動作可能なデータ処理装置を提供することにある。
【０００８】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【０００９】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１０】
〔１〕命令が予備フィールドを持つ場合に、命令をメモリから命令キャッシュメモリにストアする際、その命令の命令コードをプリデコードして生成した情報を命令キャッシュメモリの予備フィールド対応領域（命令の予備フィールドに応ずる領域）に格納する。その命令が命令キャッシュメモリからフェッチされるとき、命令キャッシュメモリの予備フィールド対応領域に保存されていた情報を利用する。これにより、命令キャッシュメモリからフェッチした命令のデコード完了を待つことなく、プリデコードされた情報に基づいて処理を進めることが可能になる。命令の解読・実行を高速化することができる。
【００１１】
本発明の一つの具体的な態様として、前記予備フィールド対応領域に保存されていた情報を利用する手段は、例えば、前記命令キャッシュメモリから読み出した命令を実行するとき、当該命令の前記予備フィールドに応ずる領域の情報に基づいて命令実行手順を制御可能な制御手段である。
【００１２】
本発明の一つの具体的な態様として、前記命令キャッシュメモリに命令をストアするとき前記プリデコードを行なうプリデコーダを有する。
【００１３】
前記プリデコーダは命令の第１フィールドに含まれるオペレーションコードをデコードする。
【００１４】
オペレーションコードのデコード結果として例えば予備フィールド対応領域に命令種別の情報を保持する。前記命令の種別は例えば分岐命令か否かを示す情報である。
【００１５】
このとき、前記制御手段は、命令キャッシュメモリから読み出した命令の前記所定のフィールドに応ずる領域の情報によって当該命令が分岐命令であることを判別したとき、例えば分岐先命令をフェッチする処理を指示する。
【００１６】
また、そのとき制御手段は分割分岐方式に対処する。即ち、分割分岐方式では、前記命令キャッシュメモリから読み出された命令を一時的に保持するキューイングバッファを有し、一つの分岐動作を分割して処理可能な分岐前処理命令と分岐処理命令とを命令セットに有し、前記分岐前処理命令は分岐先アドレス計算と分岐先命令のフェッチを指示し、分岐処理命令は分岐条件判定と分岐処理を指示し、前記分岐前処理命令の実行によって得られた分岐先アドレスと分岐先命令を一時的に保持するターゲットバッファを有する。このとき、前記制御手段は、前記キューイングバッファに保持されている命令の前記所定のフィールドに応ずる領域の情報によって当該命令が前記分岐処理命令であることを判別したときは、前記ターゲットバッファから分岐先命令とそれに続く分岐先アドレスを読み出す処理を指示する。
【００１７】
本発明の別の具体的な態様として、前記命令キャッシュメモリに命令をストアするとき、当該命令の第２フィールドに含まれる情報を用いた演算を行なう演算器を有する。このとき、前記命令キャッシュメモリは、前記プリデコーダのデコード結果に基づいて、前記演算器による演算結果を命令の第２フィールドに応ずる命令キャッシュメモリの領域に保持する。
【００１８】
例えば、ｎビットのディスプレースメント付きプログラムカウンタ相対分岐命令に対し、前記演算器は前記第２フィールドのディスプレースメントにプログラムカウンタのｎビットのアドレス下位情報を加算し、ｎビットの加算結果を当該ディスプレースメント付きプログラムカウンタ相対分岐命令の第２フィールドに応ずるキャッシュメモリの領域に保持し、加算によるキャリ情報を当該ディスプレースメント付きプログラムカウンタ相対分岐命令の予備フィールドに応ずる前記領域に保持する。
【００１９】
〔２〕命令が予備フィールドを持たない場合にも、前記命令キャッシュメモリは命令のプリデコードに基づいて生成された情報を命令と一対一対応で保持する領域を有して対処することができる。この場合も、命令キャッシュメモリからフェッチした命令のデコード完了を待つことなく、プリデコードされた情報に基づいて処理を進めることが可能になる。命令の解読・実行を高速化することができる。
【００２０】
【発明の実施の形態】
《データプロセッサ》
図１には本発明の一例に係るデータプロセッサが示される。データプロセッサ１は、外部メモリや周辺回路とのデータ入出力を行うバスインターフェースユニット（ＢＩＵ）１０２、命令キャッシュメモリ（ＩＣＵ）１０１、命令用アドレス変換バッファ（ＩＴＬＢ）１１３、データキャッシュメモリ（ＤＣＵ）１１２、データ用アドレス変換バッファ（ＤＴＬＢ）１１５、命令のフェッチ・デコード・実行スケジュール等の処理を行う命令フローユニット（ＩＦＵ）１０３、実行ユニット（ＥＵ）１１０、浮動小数点演算ユニット（ＦＰＵ）１１４、ロード・ストアユニット（ＬＳＵ）１１１、及びプリデコード・演算器（ＰＤ）１００を有する。データプロセッサ１はパイプライン方式で命令を実行し、例えば命令フェッチ、デコード、実行、及びライトバックなどのパイプラインステージを単位として処理を進める。そのパイプラインステージの実行スケジューリングは前記命令フローユニット１０３が制御する。
【００２１】
前記命令キャッシュメモリ１０１、命令用アドレス変換バッファ１１３、データキャッシュメモリ１１２、及びデータ用アドレス変換バッファ１１５は、特に制限されないが、それぞれセット・アソシアティブ形式の連装メモリによって構成される。前記命令キャッシュメモリ１０１及びデータキャッシュメモリ１１２は、特に制限されないが、論理キャッシュとされる。キャッシュエントリのリプレースに必要な物理アドレスへの変換は命令用アドレス変換バッファ１１３及びデータ用アドレス変換バッファ１１５が保有する論理アドレスと物理アドレスの変換対を利用して行なわれる。
【００２２】
前記実行ユニット１１０は、汎用レジスタ、プログラムカウンタ（ＰＣ）、及び算術論理演算器（ＡＬＵ）などを持ち、命令フローユニットで生成される制御信号などに基づいて各種演算を行う。
【００２３】
バスインターフェースユニット１０２は外部バス１０５に接続される。外部バス１０５には代表的に示された外部メモリ１０６が接続される。ここでは前記外部メモリ１０６はメインメモリとされ、プログラムメモリ及びワーク領域等として利用される。特に図示はしないが、データプロセッサ１は、バスインターフェースユニット１０２に接続された周辺回路を有する。
【００２４】
前記プリデコード・演算器１００は、バスインタフェース回路１０２と命令キャッシュメモリ１０１との間に配置され、命令キャッシュメモリ１０１に外部メモリ１０６からの命令がロードされるとき、バスインタフェース回路１０２から供給される命令をプリデコードし、また所定の演算例えば分岐先アドレス演算等を行なう。命令キャッシュメモリ１０１は、その命令のプリデコードに基づいて生成された情報、例えば前記プリデコードによる命令種別やアドレス演算結果を、当該命令の所定フィールド、例えば予備フィールドやアドレス演算用のディスプレースメントフィールドに応ずる領域に保持する。
【００２５】
命令フローユニット１０３は、前記命令キャッシュメモリ１０１から読み出した命令を実行するとき、当該命令の前記予備フィールドやアドレス演算用のディスプレースメントフィールドに応ずる領域の情報に基づいて命令実行手順を制御することが可能とされる。これにより、命令フローユニット１０３は、命令キャッシュメモリ１０１からフェッチした命令のデコード完了を待つことなく、前記プリデコードされた情報に基づいて処理を進めることが可能になり、命令の解読・実行を高速化することができる。前記プリデコードに基づいて生成され命令キャッシュメモリ１０１に格納される情報は、デコードステージ以降において有用となるため、命令判定の高速化や、実行時の計算量を減らす必要がある機能に結びつくものに適用すればよい。
【００２６】
《機能拡張の第１形態》
図２には上記命令のプリデコードによる機能拡張の第１形態が例示される。ここに示される命令は例えばＰＣ相対分岐命令であり、代表的に示されたディスプレースメントフィールドと予備フィールドを有し、ディスプレースメントにＰＣの下位側情報を加算し、その加算結果をディスプレースメントフィールドに、キャリを予備フィールドに対応させて、命令キャッシュメモリ上の当該命令の記憶領域に格納する。デコード段においては、最初から分岐アドレスの演算を行なわずに済む。
【００２７】
《機能拡張の第２形態》
図３には上記命令のプリデコードによる機能拡張の第２形態が例示される。ここに示される命令は例えば分岐命令であり、代表的に示されたオペレーションコードフィールドと予備フィールドを有し、オペレーションコードをプリデコードし、その命令種別に応ずる情報、例えば分岐命令か否かを示す情報を、予備フィールドに対応させて、命令キャッシュメモリ上の当該命令の記憶領域に格納する。デコード段においては、予備フィールド対応領域の情報を判定し、分岐命令のときは分岐先アドレスからの命令フェッチを指示し、分岐命令でなければ命令デコーダによるオペレーションコードなどのデコードを指示する。オペレーションコードのデコード完了を待たずに分岐先命令フェッチの指示を開始することができる。
【００２８】
《プリデコードに基づく機能拡張情報の生成》
以下、プリデコードによる機能拡張の第１及び第２形態の詳細について説明する。ここでは、図４、図５のようなフィールドをもつ分岐命令を一例として説明する。同図に示される命令は３２ビット長のＲＩＳＣプロセッサ用命令セットであり、図４ではオペレーションコード（ｏｐ）フィールド１２１を６ビット、サブオペレーションコード（ｅｘｔ）フィールド１２３が４ビット、レジスタ番号（Ｒｍ）フィールド１２２が６ビット、レジスタ番号（Ｒｎ）フィールド１２４が６ビット、分岐予測ビット（ｌ）１２５が１ビット、分岐バッファ（ｃ）１２６が３ビット、予備フィールド（ｒｓｖ）１２７を４ビット有する分岐命令である。図５の命令はディスプレースメント付きＰＣ相対分岐命令であり、ビット１０〜ビット２５の１６ビットはディスプレースメント（ｓ）フィールド１２８とされる。
【００２９】
図６にはプリデコード・演算器１００の一例が示される。プリデコード・演算器１００はプリデコーダ１３０と算術論理演算器（ＡＬＵ）１３１から成る。プリデコーダ１３０はオペレーションコード（ｏｐ）を解読し、その結果を予備フィールド（ｒｓｖ［１］）に対応させて命令キャッシュメモリ１０１に供給する。算術演算器１３１はＰＣの下位側１６ビットとディスプレースメントフィールドの値を加算し、加算結果をディスプレースメントフィールドに対応させて命令キャッシュメモリ１０１に供給し、キャリを予備フィールド（ｒｓｖ［０］）に対応させて命令キャッシュメモリ１０１に供給する。この例に従えば、命令キャッシュメモリ１０１は、プリデコーダ１３０によるデコード結果がＰＣ相対分岐命令等の所定の命令である場合に算術論理演算器１３１から出力される加算結果によるディスプレースメントの書き換えを行なう。
【００３０】
前記機能拡張の第２形態に応ずるプリデコード・演算器１００の動作を説明する。外部メモリ１０６から読み込まれた分岐命令は、ＢＩＵ１０２からプリデコード・演算器１００へ供給される。プリデコード・演算器１００内では、オペレーションコードｏｐ１２１をプリデコーダ１３０でデコードして、この命令が分岐命令か、そうでないかのみ判定する。その判定の結果、分岐命令だと判別できたら、プリデコーダ１３０の出力ｒｓｖ［１］に“１”を立てて、この命令が分岐命令だと区別できるようにする。そして、前記出力ｒｓｖ［１］＝“１”が、命令キャッシュ１０１内で、当該命令の予備フィールド１２７に対応するフィールドに格納される。ここでは一例として、分岐命令のみを選択したが、それに限定されることはなく、設計者の任意の命令を選択できる。
【００３１】
前記機能拡張の第１形態に応ずるプリデコード・演算器１００の動作を説明する。図５に例示するディスプレースメント付きＰＣ相対分岐命令の場合、前記ＡＬＵ１３１は前記フィールドのディスプレースメントｓ［２５：１０］にプログラムカウンタのｎビットのアドレス下位情報（ＰＣ［１６：２］）を加算し、ｎビットの加算結果（ｓ’［２４：１０］）を当該ディスプレースメント付きプログラムカウンタ相対分岐命令のフィールド１２８に応ずる命令キャッシュメモリの領域に保持し、加算によるキャリ情報を当該ディスプレースメント付きプログラムカウンタ相対分岐命令の予備フィールド（ｒｓｖ［０］）に応ずる前記領域に保持する。尚、ここでのＰＣ相対分岐は命令キャッシュメモリへのプリフェッチ時におけるＰＣの値を基準として考えられている分岐命令である。そして、そのプリフェッチはバスが空いている任意のタイミングで行なわれるものではなく、プログラムで指定されたタイミングで行なわれるようになっている。
【００３２】
図４及び図５の例では命令コードの予備フィールドｒｓｖは４ビットあるため、分岐命令のみの選別や、分岐先アドレス計算後の桁上げ信号の保存情報を同時に載せるなど、複数の情報を予備フィールドｒｓｖ１２７に対応するキャッシュ領域に保存しておくことが可能である。
【００３３】
《第２形態に係る機能拡張情報の利用形態》
図１に従えば前記命令フローユニット１０３は、命令フェッチと分岐を制御するフェッチ・ブランチユニット（ＦＢＵ）１０４と命令デコードとパイプライン制御を行なうデコード・パイプラインコントローラ（ＤＰＣ）１０７から成る。命令フェッチ動作は、命令フローユニット１０３内に存在するフェッチブランチユニット１０４から命令キャッシュ１０１へフェッチ要求ＦＲＥＱ（図７参照）を出すことによって、開始される。
【００３４】
図７にはフェッチ・ブランチユニット１０４の詳細な一例が示される。フェッチ・ブランチユニット１０４はキューイングバッファとしての命令キュー（ＩＱ）１４０、早期命令判別回路（ＥＤ）１４１、及びターゲットバッファ１４２から構成される。命令キュー１４０は命令フェッチの要求に応答して命令キャッシュメモリ１０１から読み出された命令を一時的に保持する。命令キュー１４０に保持された命令はデコード・パイプラインコントローラ１０７に供給されてデコードされる。デコードの順番、即ち命令キュー１４０からの読み出し順はデコード・パイプラインコントローラ１０７によるパイプライン制御に従って制御される。
【００３５】
早期命令判別回路１４１は命令キュー１４０に保持された命令の前記予備フィールドの内容を判定し、デコード・パイプラインコントローラ１０７による命令デコード前に、必要な処理を先に指示する。即ち、命令キャッシュメモリからフェッチした命令の実行処理において、前記第２形態に係る機能拡張に応ずる処理を実現する。例えば分岐命令であることを判定したときは分岐先命令のフェッチを命令キャッシュメモリ１０１に要求する。また、早期命令判別回路１４１は分割分岐方式に対処するようになっている。即ち、分割分岐方式では、一つの分岐動作を分岐前処理命令と分岐処理命令とに分割して処理可能とする。前記分岐前処理命令は分岐先アドレス計算と分岐先命令のフェッチを指示し、分岐処理命令は分岐条件判定と分岐処理を指示する。前記分岐前処理命令の実行によって得られた分岐先アドレスと分岐先命令はターゲットバッファ（ＴＢ）１４２が一時的に保持する。このとき、前記早期命令判定回路１４１は、前記命令キュー１４０に保持されている命令の前記予備フィールドの情報によって当該命令が前記分岐処理命令であることを判別したときは、前記ターゲットバッファ１４２から分岐先命令とそれに続く分岐先アドレスを読み出す処理を指示する。換言すれば、前記ターゲットバッファ１４２に予め格納されている分岐先命令をデコード・パイプラインコントローラ１０７に供給すると共に、分岐先でその次に実行すべき命令のアドレスＴＡＤＲをターゲットバッファ１４２から命令キャッシュメモリ１０１に与えて、分岐処理を可能にする。
【００３６】
図８には命令キューの詳細な一例が示される。命令キュー１４０は例えば４個の記憶段１４４を有し、４個の記憶段１４４の中からセレクタ１４５で選択された記憶段の命令が後段の命令フローユニット１０３に供給される。命令フローユニット１０３には入力ラッチ１４６と命令デコーダ１４７が代表的に示される。前記記憶段１４４の共通の入力段には早期命令判別回路１４１のための記憶段１５０、１５１が形成される。記憶段１５０は入力された３２ビットの命令の全体を保持する３２ビットのフリップフロップで構成される。記憶段１５１は入力された命令のうち前記予備フィールドに対応する１ビットの情報ｒｓｖ［１］を保持するフリップフロップで構成される。記憶段１５０の各ビットはゲート１５２を介して早期命令判定回路１４１に選択的に供給可能にされる。前記ゲート１５２は記憶段１５０の各出力ビットに２入力アンドゲートを有し、それぞれの２入力アンドゲートの一方の入力には記憶段１５０の対応する出力が供給され、それぞれの２入力アンドゲートの他方の入力には記憶段１５１の出力が共通に供給される。ここでは、命令が分岐処理命令のとき、前記プリデコード・演算器１００による処理にて予備フィールドの情報ｒｓｖ［１］は論理値“１”にされる。したがって、その分岐処理命令は、ゲート１５２を通して早期命令判別回路１４１へ送られて処理され、デコードステージで命令デコーダ１４７によりその命令がデコードされるのを待つことなく、前述のように優先的に処理される。
【００３７】
図９には早期命令判別回路１４１が分割分岐方式に対処するときの動作タイミングが例示される。前述のターゲットバッファ１４２は分岐先命令を保存するバッファＩＡＲＴと、分岐先でその次に実行する分岐先次命令アドレスを保存するバッファＩＡＲＩＡとを持っている。図９のタイミングチャートは、ｎサイクル目、ｎ＋１サイクル目、ｎ＋２サイクル目と、３サイクル分の動作タイミングを示している。早期命令判定回路１４１が採用されていない場合は、命令キャッシュメモリからのフェッチ動作（Ｓ１）がｎサイクル目で終わる時、次のサイクルにおいて、命令のデコード処理（Ｓ２）を行って命令の判別を行う。図のようにデコード処理に１サイクルかかる場合、さらに次のサイクルｎ＋２サイクル目で、バッファＩＡＲＴ、ＩＡＲＩＡの読み出し処理（Ｓ３，Ｓ４）を行うことになる。
【００３８】
これに対し、早期命令判定回路１４１が採用されている場合は、フェッチされた命令が分岐関連の命令である場合、予備フィールド中に分岐命令の情報が保存されているため、フェッチ処理Ｓ１の後、次のサイクルの最初ですぐに命令の判別処理Ｓ５を行なうことができる。命令デコーダによる命令デコード処理を待つことなく、その判別処理Ｓ５の結果にしたがって即座にバッファＩＡＲＴ，ＩＡＲＩＡの読み出し処理Ｓ３，Ｓ４に移行することが可能である。
【００３９】
《第１形態に係る機能拡張情報の利用形態》
前記命令デコーダ１４７は、命令キャッシュメモリからフェッチした命令の実行処理において、ｒｓｖ［０］＝１のとき、ｓ’［２４：１０］のディスプレースメント（イミディエイト値）は分岐先アドレスの下位１６ビットについて既に演算されたものとして、分岐先アドレスの演算を行なう。要するに、前記第１形態に係る機能拡張に応ずる処理を実現する。例えば、分岐先アドレスを演算するとき、下位アドレスはｓ’［２４：１０］のディスプレースメントで既に計算されているので、そのまま使用できる。したがって計算が必要なのは、上位の１５ビットのみである。キャリと符号が保存されているので、キャリと符号が共に０、もしくはキャリが１、符号が−１であれば、ＰＣ［３１：１７］の値が、そのまま有効アドレスになる。またキャリの値が０、符号が−１であれば、ＰＣ［３１：１７］の値を１だけデクリメント、キャリが１、符号が０の時は、ＰＣ［３１：１７］の値を１だけインクリメントすればよい。このように３２ビット＋３２ビットのアドレス計算が必要であったところが、１ビットのインクリメント、もしくはデクリメントの計算で済むようになり、分岐先アドレス計算を高速化することができる。
【００４０】
《予備フィールドが無い命令への対応》
図１０には予備フィールドが無い命令への対応を考慮した命令キャッシュメモリが例示される。同図に示される命令キャッシュメモリは、４ウェイセットアソシアティブ形式とされ４個のウェイ１６１〜１６４を有する。各ウェイはアドレスアレイ１７０とデータアレイ１７１から成り、アドレスアレイ１７０にはそのキャッシュラインのタグアドレス（Ｔａｇ）とバリッドビット（Ｖ）が格納される。データアレイ１７１にはインデックスアドレス共通の８命令が格納される。更に各命令の記憶領域の後ろには前記プリデコードに基づいて生成された情報の保存領域１６５が付加されている。保存領域１６５には、例えば分岐命令のデコードの結果を保存することによって、フェッチ時には命令と共にその保存領域１６５の情報も読み出されて、命令デコードの完了を待つこと無く分岐命令であることを判別することができる。したがって、予備フィールドを使った場合と同じ効果をあげることができる。
【００４１】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００４２】
例えば、予備フィールドを有する命令コードの例を図４、図５に示したが、これに限定されず適宜変更可能である。命令長も３２ビットに限定されず、６４ビット等であってよい。予備フィールドは、予約フィールド或は空きフィールドと同義と考えて差し支えない。プリデコーダは分岐命令の判別に限定されず、例えば、命令群を分類するためだけに使っても良く、さらに、他の命令の判別に利用してもよい。
【００４３】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００４４】
すなわち、予備フィールド等を用いることによって、そのフィールド中に様々な情報を一時的に保存でき、その情報を基に、任意の特定の命令を高速に解読・実行させることができる。このため、例えば分岐処理は、早い段階での実行が可能となって性能を向上できる。したがって、ソフトウェアの互換性に関して不都合を生ずることなく、命令処理時間を短縮して高速動作可能なデータ処理装置を実現することができる。
【図面の簡単な説明】
【図１】本発明の一例に係るデータプロセッサを示すブロック図である。
【図２】命令のプリデコードによる機能拡張の第１形態を原理的に示す説明図である。
【図３】命令のプリデコードによる機能拡張の第２形態を原理的に示す説明図である。
【図４】予備フィールドを持つ命令の一例を示す命令フォーマット図である。
【図５】予備フィールドとディスプレースメントフィールドを持つ命令の一例を示す命令フォーマット図である。
【図６】プリデコード・演算器の一例を示すブロック図である。
【図７】フェッチ・ブランチユニットの詳細を例示するブロック図である。
【図８】命令キューの詳細を例示するブロック図である。
【図９】早期命令判別回路が分割分岐方式に対処するときの動作タイミングを例示するタイミングチャートである。
【図１０】予備フィールドが無い命令への対応を考慮した命令キャッシュメモリを例示するブロック図である。
【符号の説明】
１００　プリデコーダ
１０１　命令キャッシュユニット
１０２　バスインターフェースユニット
１０３　命令フローユニット
１０４　フェッチ・ブランチユニット
１０５　外部バス
１０６　外部メモリ
１０７　デコード・パイプラインコントローラ
１１０　実行ユニット
２００　命令キュー
２０１　早期命令判別回路
２０２　分岐先命令やアドレスを保存しておくターゲットバッファ
１２１　オペレーションコード（ｏｐ）フィールド
１２７　予備フィールド
４０２　ディスプレースメントフィールド
１３０　プリデコーダ
１３１　ＡＬＵ
１４０　命令キュー
１４１　早期命令判定回路
１４２　ターゲットバッファ
１４４　記憶段
１４５　セレクタ
１５０，１５１　記憶段
１５２　ゲート
１６５　保存領域
【図１】
2004110248.tif 000003
【図２】
2004110248.tif 000004
【図３】
2004110248.tif 000005
【図４】
2004110248.tif 000006
【図５】
2004110248.tif 000007
【図６】
2004110248.tif 000008
【図７】
2004110248.tif 000009
【図８】
2004110248.tif 000010
【図９】
2004110248.tif 000011
【図１０】
2004110248.tif 000012