(57)【要約】【課題】レジスタ競合に対する判定処理及び命令デコード処理を効率化する。【解決手段】データ処理装置は、命令セットにｎビットの命令と２ｎビットの命令を含み、命令のレジスタ指定フィールド（ＲＥＧ１，ＲＥＧ２）で指定されるレジスタについての命令間での競合を判定可能な命令制御部を有する。レジスタ指定フィールドを有する２ｎビットの命令は、その前半ｎビットにレジスタ指定フィールドを有し、その前半ｎビット上でのレジスタ指定フィールドの配置が、ｎビットの命令におけるレジスタ指定フィールドの配置と揃えられている。２ｎビットの命令でもｎビットの命令であっても、命令からレジスタ指定フィールドを切出すために必要なシフト動作を２ｎビット命令とｎビット命令のレジスタフィールドを揃えることにより、単純化もしくは削除することができ、レジスタ競合判定処理を高速化できる。【選択図】        図１
2004152049.tif 000002
【特許請求の範囲】
【請求項１】
命令セットにｎビットの命令と２ｎビットの命令を含み、命令のレジスタ指定フィールドで指定されるレジスタについての命令間での競合を判定可能な命令制御部を有し、
レジスタ指定フィールドを有する２ｎビットの命令は、その前半ｎビットにレジスタ指定フィールドを有し、その前半ｎビット上でのレジスタ指定フィールドの配置が、ｎビットの命令におけるレジスタ指定フィールドの配置と揃えられている、ことを特徴とするデータ処理装置。
【請求項２】
命令セットにｎビットの命令と２ｎビットの命令を含み、命令のレジスタ指定フィールドで指定されるレジスタについての命令間での競合を判定可能な命令制御部を有し、
レジスタ指定フィールドを有する２ｎビットの命令は、その前半ｎビット又は後半ｎビットの何れか一方にレジスタ指定フィールドを有し、その前半ｎビット又は後半ｎビット上でのレジスタ指定フィールドの配置が、ｎビットの命令におけるレジスタ指定フィールドの配置と揃えられている、ことを特徴とするデータ処理装置。
【請求項３】
前記命令セットに、前記２ｎビットの命令の前半ｎビットに前記ｎビットの命令におけるレジスタ指定フィールドと揃えられてレジスタ指定フィールドが配置された命令と、２ｎビットの命令の後半ｎビットに前記ｎビットの命令におけるレジスタ指定フィールドと揃えられてレジスタ指定フィールドが配置された命令とが混在されることを特徴とする請求項２記載のデータ処理装置。
【請求項４】
ｎビットは１６ビット、２ｎビットは３２ビットであることを特徴とする請求項１乃至３の何れか１項記載のデータ処理装置。
【請求項５】
前記命令制御部は、レジスタ競合に対してパイプラインステージに対すストール又は汎用レジスタに対す演算データ書き込みのフォワーディングを制御可能であることを特徴とする請求項１乃至４の何れか１項記載のデータ処理装置。
【請求項６】
シングルスカラで命令を実行可能であることを特徴する請求項１記載のデータ処理装置。
【請求項７】
スーパスカラで命令を実行可能であることを特徴する請求項１乃至３の何れか１項記載のデータ処理装置。
【請求項８】
命令セットに、夫々レジスタ指定フィールドを有するｎビットの第１命令と２ｎビットの第２命令を含み、
前記第２命令は前記第１命令に対してイミディエイト値又はディスプレースメント値が拡張された命令であって、前記第２命令は、その前半ｎビットにレジスタ指定フィールドを有し、その前半ｎビット上でのレジスタ指定フィールドの配置が、前記第１命令上でのレジスタ指定フィールドの配置と同じ配置を有することを特徴とするデータ処理装置。
【請求項９】
命令セットに、夫々レジスタ指定フィールドを有するｎビットの第１命令と２ｎビットの第２命令を含み、
前記第２命令は、その前半ｎビット又は後半ｎビットの何れか一方にレジスタ指定フィールドを有し、その前半ｎビット又は後半ｎビット上でのレジスタ指定フィールドの配置が、前記第１命令上でのレジスタ指定フィールドの配置と同じ配置を有する、ことを特徴とするデータ処理装置。
【請求項１０】
レジスタ指定フィールドを有するｎビットの第３命令を有し、第３命令と前記第２命令はレジスタ指定フィールドで指定可能なオペランド数が相違され、第３命令のレジスタ指定フィールドと第２命令のレジスタ指定フィールドは第１命令の命令先頭に対するレジスタ指定フィールド先頭の配置が揃えられていることを特徴とする請求項８又は９記載のデータ処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、命令セット若しくは命令フォーマットの観点よりレジスタ競合に対する判定処理の効率化を考慮したデータ処理装置に関する。
【０００２】
【従来の技術】
マイクロプロセッサなどのデータ処理装置による演算処理の高速化手法の一つであるパイプライン処理では、前の命令のサイクルが終わる前に次の命令を処理し始めるので、前の命令の実行結果が返されるディスティネーションレジスタが、後の命令でソースレジスタとして用いられる場合がある。このとき、前の命令による実行結果がディスティネーションレジスタに返されるまで、次の命令はそのディスティネーションレジスタの内容をソースデータとして用いることはできない。レジスタ間のこのような関係が汎用レジスタの競合（単にレジスタ競合とも記す）である。レジスタ競合を生ずる場合、競合するレジスタに前の命令による実行結果が返されるまで、パイプラインをストールしたり、或は、前の命令による実行結果をテンポラリレジスタから直接、或は汎用レジスタの迂回径路を通って直接、次の命令の演算実行ステージに与えるというフォワーディング制御を行ったりする。
【０００３】
レジスタ競合の判定は、前後してフェッチされる複数の命令に対し、命令中のレジスタ指定フィールドで指定される汎用レジスタに対して競合可能性が判定される。
【０００４】
レジスタの競合判定に関し、特許文献１には、短い命令に対しては競合検出回路でレジスタ競合を検出し、長い命令に対してはソフトウェアでレジスタ競合を検出するようにした計算機が例示される。特許文献２には４個の命令デコーダに対し、一つのレジスタ競合検出回路を設けた並列演算装置が示される、特許文献３には複数の命令バッファに対し、一つのレジスタ競合判定部を設けた情報処理装置が示される。
【０００５】
【特許文献１】
特開平５−２５７６８７号公報
【特許文献２】
特開平７−５６７３５号公報
【特許文献３】
特開平６−１４９５６９号公報
【０００６】
【発明が解決しようとする課題】
本発明者は１６ビットと３２ビットというような命令語長の異なる命令のレジスタ競合判定について検討した。これによれば、命令語長の長い命令には特別にオペランド数を増やして高機能化する目的で特殊なレジスタフィールドを採用すると、命令デコーダやレジスタの競合判定論理が複雑になり、高速動作には不向きであることが明らかにされた。また、１６ビット命令と３２ビット命令との間でレジスタ指定フィールドの配置に全く相関が無い場合も事情は同じである。前記特許文献１乃至３はその点について考慮されていない。
【０００７】
本発明の目的は、レジスタ競合に対する判定処理を効率化することができるデータ処理装置を提供することにある。
【０００８】
本発明の目的は、レジスタ競合に対する判定処理及び命令デコードに要する論理回路の規模の縮小に寄与することができるデータ処理装置を提供することにある。
【０００９】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１０】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１１】
〔１〕データ処理装置は、命令セットにｎビットの命令と２ｎビットの命令を含み、命令のレジスタ指定フィールドで指定されるレジスタについての命令間での競合を判定可能な命令制御部を有する。レジスタ指定フィールドを有する２ｎビットの命令は、その前半ｎビットにレジスタ指定フィールドを有し、その前半ｎビット上でのレジスタ指定フィールドの配置が、ｎビットの命令におけるレジスタ指定フィールドの配置と揃えられている。
【００１２】
前記命令制御部は、例えば、レジスタ競合に対してパイプラインステージに対すストール制御又は汎用レジスタに対す演算データ書き込みのフォワーディング制御を行う。命令制御部による命令実行制御は、シングルスカラであっても、スーパスカラであってもよい。
【００１３】
上記より、２ｎビットの命令でもｎビットの命令であっても、命令からレジスタ指定フィールドを切出すために必要なシフト動作を、２ｎビット命令とｎビット命令のレジスタフィールドを揃えることにより、単純化もしくは削除することができる。したがって、２ｎビットの命令とｎビットの命令が混在されていても、命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００１４】
レジスタ指定フィールドのビット数は指定可能なオペランド数に応じて相違される。オペレーションコードの種類に応じて指定可能なオペランド数が相違されても、２ｎビットの命令とｎビットの命令は共にレジスタ指定フィールドの配置が揃えられる。このような場合を想定しても、命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００１５】
２ｎビットの命令における後半部分である下位側にレジスタ指定フィールドが設けられないことにより、ｎビット固定長命令セットに対して、命令を２ｎビットに拡張するのが比較的容易になる。
【００１６】
シングルスカラプロセッサはもとより、スーパスカラプロセッサにも容易に適用でき、データ処理性能を向上させることができる。
【００１７】
命令デコーダやレジスタ競合判定論理を単純化できるため、高速動作が必要な１６ビット（ｎビット）命令、３２ビット（２ｎビット）命令混在のＲＩＳＣ型マイクロプロセッサに好適である。
【００１８】
〔２〕別の形態のデータ処理装置は、命令セットにｎビットの命令と２ｎビットの命令を含み、命令のレジスタ指定フィールドで指定されるレジスタについての命令間での競合を判定可能な命令制御部を有し、レジスタ指定フィールドを有する２ｎビットの命令は、その前半ｎビット又は後半ｎビットの何れか一方にレジスタ指定フィールドを有し、その前半ｎビット又は後半ｎビット上でのレジスタ指定フィールドの配置が、ｎビットの命令におけるレジスタ指定フィールドの配置と揃えられている。
【００１９】
レジスタ指定フィールドを２ｎビットの命令の後半に揃えても、上記前半に揃える場合と同じ作用効果を得る。但し、ｎビット固定長命令セットに対して、命令を２ｎビットに拡張するときの容易性は多少犠牲になると考えられる。
【００２０】
更に、前記命令セットに、前記２ｎビットの命令の前半ｎビットに前記ｎビットの命令におけるレジスタ指定フィールドと揃えられてレジスタ指定フィールドが配置された命令と、２ｎビットの命令の後半ｎビットに前記ｎビットの命令におけるレジスタ指定フィールドと揃えられてレジスタ指定フィールドが配置された命令とを混在させてもよい。命令をｎビットずつ並列に解読して並列実行可能にするスーパースカラで命令実行を行うアーキテクチャにおいて、その様な命令の混在は何らスループット低下の原因にはならない。ｎビットづつ命令を解読して実行するシングルスカラ形式のアーキテクチャの場合にはレジスタ指定フィールドが前半に有るか後半に有るかによって命令デコード結果に対する認識を変えなければならないから、デコード論理の規模は多少増大すると考えられる。
【００２１】
〔３〕別の観点によるデータ処理装置は、命令セットに、夫々レジスタ指定フィールドを有するｎビットの第１命令と２ｎビットの第２命令を含む。前記第２命令は、その前半ｎビット又は後半ｎビットの何れか一方にレジスタ指定フィールドを有し、その前半ｎビット又は後半ｎビット上でのレジスタ指定フィールドの配置が、前記第１命令上でのレジスタ指定フィールドの配置と同じ配置を有する。更に、レジスタ指定フィールドを有するｎビットの第３命令を有し、第３命令と前記第２命令はレジスタ指定フィールドで指定可能なオペランド数が相違され、第３命令のレジスタ指定フィールドと第２命令のレジスタ指定フィールドは命令先頭に対するレジスタ指定フィールド先頭の配置が揃えられている。
【００２２】
【発明の実施の形態】
《データプロセッサ》
図２には本発明の一例に係るデータプロセッサが示される。データプロセッサ１は、外部メモリや周辺回路とのデータ入出力を行うバスインタフェースユニット（ＢＩＵ）２、命令キャッシュメモリ（ＩＣＵ）３、データキャッシュメモリ（ＤＣＵ）４、命令のフェッチ・デコード・実行スケジュール等の処理を行う命令フローユニット（ＩＦＵ）５、実行ユニット（ＥＵ）６、浮動小数点演算ユニット（ＦＰＵ）７、及びロード・ストアユニット（ＬＳＵ）８を有する。データプロセッサ１はパイプライン方式で命令を実行し、例えば命令フェッチ、デコード、実行、及びライトバックなどのパイプラインステージを単位として処理を進める。そのパイプラインステージの実行スケジューリングは前記命令フローユニット５が制御する。データプロセッサ１において、命令フローユニット５と実行ユニット６が中央処理装置（ＣＰＵ）を構成し、命令フローユニット５が命令制御部、実行ユニット６が実行部として位置付けられる。
【００２３】
命令フローユニット５は、前記命令キャッシュメモリ３から読み出した命令を解読し、レジスタ競合を判定し、それらの結果にしたがって、パイプライン制御、フェッチ・ブランチ制御、等の命令実行手順を制御すると共に、実行部等に対する演算制御等を行う。演算制御においてメモリアクセスを要するときはロード・ストアユニット８を介してデータキャッシュメモリ４をアクセスし、必要な場合にはバスインタフェースユニット２を介して外部メモリ１１をアクセスさせる。命令フェッチを行うとき、命令フローユニット５はそのフェッチ・ブランチ制御に基づいて命令キャッシュメモリ３へフェッチ要求を出して命令キャッシュメモリ３をアクセスし、必要な場合にはバスインタフェースユニット２を介して外部メモリ１１をアクセスさせる。
【００２４】
前記実行ユニット６は、汎用レジスタ（ＧＲ０〜ＧＲｉ）、テンポラリレジスタ（ＴＲ）、プログラムカウンタ（ＰＣ）、及び算術論理演算器（ＡＬＵ）などを持ち、命令フローユニット５で生成される制御信号などに基づいて各種演算を行う。
【００２５】
バスインタフェースユニット２は外部バス１０に接続される。外部バス１０には代表的に示された外部メモリ１１が接続される。ここでは前記外部メモリ１１はメインメモリとされ、プログラムメモリ及びワーク領域等として利用される。特に図示はしないが、データプロセッサ１は、バスインタフェースユニット２に接続された周辺回路、例えばタイマカウンタやシリアル入出力回路等を有する。
【００２６】
《レジスタ指定フィールドの第１例》
図１にはデータプロセッサ１の命令セットに含まれる命令の一部が例示される。２０〜２２は代表的に示された１６ビット命令、２３は代表的に示された３２ビット命令である。ＯＰ１、ＯＰ２はオペレーションコードフィールド、ＲＥＧ１，ＲＥＧ２はレジスタ指定フィールド、ｉｍｍはイミディエイト値指定フィールド、ｄｉｓｐはディスプレースメントフィールドである。図に示されるように、データプロセッサの命令セットには１６ビット命令と３２ビット命令が混在される。フィールドＲＥＧ１，ＲＥＧ２には夫々レジスタ番号が指定される。レジスタ番号で指定されるレジスタオペランドは１個、又は２個とされる。レジスタ指定フィールドＲＥＧ１，ＲＥＧ２を有する３２ビットの命令２３は、その前半１６ビットにレジスタ指定フィールドを有し、その前半１６ビット上でのレジスタ指定フィールドの配置は、１６ビットの命令２１，２２におけるレジスタ指定フィールドＲＥＧ１，ＲＥＧ２の配置と揃えられている。即ち、３２ビットの命令（第２命令）２３は、その前半１６ビットにレジスタ指定フィールドＲＥＧ１，ＲＥＧ２を有し、その前半１６ビット上でのレジスタ指定フィールドの配置が、１６ビット命令２２（第１命令）上でのレジスタ指定フィールドＲＥＧ１，ＲＥＧ２の配置と同じ配置を有する。そして、前記１６ビット命令（第３命令）２１と前記３２ビット命令（第２命令）２３はレジスタ指定フィールドで指定可能なオペランド数が相違され、前記１６ビット命令（第３命令）２１のレジスタ指定フィールドＲＥＧ１と前記３２ビット命令（第２命令）２３のレジスタ指定フィールドＲＥＧ１，ＲＥＧ２は、命令先頭に対するレジスタ指定フィールドＲＥＧ１の先頭の配置が揃えられている。要するに、レジスタ指定フィールドは、各種命令に対し一定のフィールド２４に収まるようにされる。このフィールド２４から外れたフィールドではレジスタ指定が行なわれないようにされる。
【００２７】
オペレーションコードフィールドＯＰ１，ＯＰ２で指定されるオペレーションコードは命令デコードされる。レジスタ指定フィールドＲＥＧ１，ＲＥＧ２で指定されるレジスタ番号はレジスタ競合判定に供される。
【００２８】
図３には図１の命令フォーマットに対応する命令等の具体例として各種データ転送命令（ＭＯＶ命令）が示される。ｎｎｎｎはＲＥＧ１に設定されたレジスタ番号、ｍｍｍｍはＲＥＧ２に設定されたレジスタ番号、ｉｉｉｉ…はイミディエイト値、ｄｄｄｄ…はディスプレースメントを意味する。
【００２９】
命令３０は、レジスタＲｍの値を、アドレシングモード＠（ｄｉｓｐ４，Ｒｎ）で指定されるメモリアドレスに転送する命令である。アドレシングモード＠（ｄｉｓｐ４，Ｒｎ）は、ディスプレースメント付きレジスタ間接アドレシングモードであり、レジスタＲｎに４ビットディスプレースメントを加算した値をアクセスアドレスとする。これは前記命令２２に対応される。
【００３０】
命令３１は８ビットのイミディエイト値＃ｉｍｍ８をレジスタＲｎにロードする転送命令である。前記命令２１に対応される。
【００３１】
命令３２は、レジスタＲｍの値を、アドレシングモード＠（ｄｉｓｐ１２，Ｒｎ）で指定されるメモリアドレスに転送する命令である。この命令３２は、命令３０のディスプレースメントのビット数が拡張された３２ビット命令であり、前記命令２３に対応される。
【００３２】
命令３３は、２０ビットのイミディエイト値＃ｉｍｍ２０をレジスタＲｎにロードする転送命令である。この命令３３は前記命令３１のイミディエイト値のビット数が拡張された３２ビット命令である。
【００３３】
命令３４は、イミディエイト値＃ｉｍｍ３を、アドレシングモード＠（ｄｉｓｐ１２，Ｒｎ）で指定されるメモリアドレスに転送する命令である。
【００３４】
図３の例においても、レジスタ指定フィールドは、各種命令に対し一定のフィールド２４に収まるようにされる。このフィールド２４から外れたフィールドではレジスタ指定が行なわれないようにされる。尚、図３において“新規”命令３２，３３，３４とは、１６ビット固定長命令セットの１６ビット命令（“既存”命令）に対して３２ビット拡張命令を追加することを想定した場合の新規命令を意味する。
【００３５】
《シングルスカラにおけるレジスタ競合判定》
図４には命令フローユニット５における命令デコード、レジスタ競合判定、及びパイプライン制御を行うための論理構成が例示される。ここに示される論理はシングルスカラのパイプライン制御に対応するものであり、１本のパイプラインで命令の実行を制御する。
【００３６】
命令フローユニット５は、夫々１６ビットの命令レジスタ４０、４１、セレクタ４２、命令デコーダ４３、レジスタ競合判定回路４４、パイプライン制御回路４５、及びフォワーディング制御回路４６を有する。
【００３７】
命令フェッチ制御により３２ビット単位で命令レジスタ４０、４１に命令が命令キャッシュメモリＩＣＵ３からフェッチされる。命令レジスタ４０，４１にフェッチされた命令は交互にセレクタ４２で選択され、１６ビット毎に命令デコーダ４３でデコードされる。セレクタ４２の出力をＩ０〜Ｉ１５とすると、セレクタ４２で選択される１６ビットＩ０〜Ｉ１５のうち、前記レジスタ指定フィールドに対応するフィールド２４のコードＩ４〜Ｉ１１はレジスタ競合判定回４４に供給される。レジスタ競合判定回路４４は順次入力されるコードＩ４〜Ｉ１１を解読して、レジスタ競合の可能性を判定する。判定結果は制御情報４８としてフォワーディング制御回路４６及びパイプライン制御回路４５に与えられる。命令デコーダ４３はレジスタ競合判定に並行して命令コードのデコードを行い、デコード結果は制御情報４９としてパイプライン制御回路４５及びフォワーディング制御回路４６に与えられる。命令中のイミディエイト値及びディスプレースメントはデータ情報５０として切出されて出力される。前記データ情報、パイプライン制御回路４５から出力される制御情報、フォワーディング制御回路４６から出力される制御情報は、パイプラインステージ毎にＥＵ６、ＦＰＵ７に出力され、それらの動作を制御する。
【００３８】
レジスタ競合判定に基づく制御を詳述する。レジスタ競合判定回路４４はコードＩ４〜Ｉ１１を入力してレジスタ競合の可能性を判定する。即ち、前の命令で指定されたディスティネーションレジスタが、後の命令で指定されたソースレジスタに一致する可能性が判定される。そのレジスタ競合判定結果に対してフォワーディングが可能か否かを示す制御情報４８Ａがフォワーディング制御回路４６に与えられる。また、そのレジスタ競合判定結果に対してパイプラインストールが必要か否かを示す制御情報４８Ｂがパイプライン制御回路４５に与えられる。ここでは、命令デコードに並行してコードＩ４〜Ｉ１１によるレジスタ競合判定を行っているので、命令の種別によってはコードＩ４〜Ｉ１１にレジスタ指定フィールドを含まず、実際にはイミディエイト値であったり、ディスプレースメントであったりする場合がある。命令のビット数やレジスタオペランド数は命令デコーダ４３によって解読されるので、その状態はオペレーションコードのデコードにより明らかになり、命令の種別より前後幾つかの命令間でレジスタ競合を生ずる可能が無い場合には、命令デコーダ４３はフォワーディング制御回路４６に、競合判定結果に対するフォワーディング無効（若しくはフォワーディングキャンセル）を示す制御情報４９Ａを与え、パイプライン制御回路４５にはパイプラインストールのキャンセルを示す制御情報４９Ｂを与える。
【００３９】
前記レジスタ指定フィールドの第１例によれば、３２ビットの命令と１６ビットの命令は共にレジスタ指定フィールドＲＥＧ１，ＲＥＧ２の配置がフィールド２４内に揃えられているから、３２ビットの命令でも１６ビットの命令であっても、命令からレジスタ指定フィールドを切出すために必要なシフト動作を、単純化もしくは削除することができる。単にＩ４〜Ｉ１１をレジスタ競合判定回路４４に供給すればよい。したがって、３２ビットの命令と１６ビットの命令が混在されていても、命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００４０】
レジスタ指定フィールドのビット数は指定可能なオペランド数に応じて相違され、オペレーションコードの種類に応じて指定可能なオペランド数が相違されても、３２ビットの命令と１６ビットの命令は共にレジスタ指定フィールドの配置がフィールド２４内に揃えられる。したがって、レジスタオペランド数が相違する場合でも、命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００４１】
３２ビットの命令における後半部分にはレジスタ指定フィールドが設けられないことにより、１６ビット固定長命令セットに対して、命令を３２ビットに拡張するのが比較的容易になる。要するに、３２ビット命令であっても、レジスタ指定フィールドがその前半だけに配置されることになれば、３２ビット命令の前半をデコードするだけで、レジスタ競合に関し、フォワーディングキャンセル、パイプラインストール解除の指示を与えることができ、１６ビット命令の場合と同じ制御シーケンスになる。
【００４２】
尚、前記命令レジスタ４０，４１に対する命令フェッチの態様は、１６ビット命令と１６ビット命令、１６ビット命令と３２ビット命令の前半１６ビット、３２ビット命令の後半１６ビットと１６ビット命令、３２ビット命令の前半１６ビットと後半１６ビットという態様とされる。何れの場合も命令レジスタ４０、４１の順番で１６ビット毎に命令デコード及びレジスタ競合判定が行われる。上記態様より明らかなように、レジスタ競合判定において判定対象がレジスタ指定フィールドの情報でない場合があるが、それによる不所望な判定結果は、並列される命令デコード処理によって形成される制御情報４９Ａ，４９Ｂで修正される。
【００４３】
《フォワーディング動作》
図５及び図６にはフォワーディング動作の一例が示される。図５には実行ユニット６の詳細な一例が示される。ＡＬＵは算術論理演算器、ＬＡＴは入力ラッチ、ＦＷＤはフォワーディングユニット、ＧＲ０〜ＧＲｉは汎用レジスタ、ＳＥＬはセレクタである。内部バスはＡｂｕｓ，Ｂｂｕｓ，Ｃｂｕｓ，Ｄｂｕｓに多重化され、算術論理演算器ＡＬＵの出力はバスＨｂｕｓ，Ｉｂｕｓを介して汎用レジスタＧＲ０〜ＧＲｉに供給可能にされる。フォワーディングユニットＦＷＤは選択的にバスＨｂｕｓ，Ｉｂｕｓの値をバスＡｂｕｓ，Ｂｂｕｓ，Ｃｂｕｓ，Ｄｂｕｓに供給可能にするための迂回径路を構成する。
【００４４】
図６に示される命令１（加算命令ＡＤＤ）におけるディスティネーションレジスタＲ１が、命令２（減算命令ＳＵＢ）におけるソースレジスタＲ１とされる。それぞれの命令実行はフェッチステージ（ＩＦ）、デコードステージ（ＩＤ）、演算ステージ（ＥＸ）及びレジスタライトステージ（ＷＢ）の４段パイプラインで行なわれる。命令２のデコードステージにおいてレジスタＲ１には未だ命令１の演算結果がライトバックされていない。そこで、命令１の演算ステージ（ＥＸ）で演算された演算結果をバスＨｂｕｓからフォワーディングユニットＦＷＤを介してバスＡｂｕｓに供給する。レジスタＲ２の値は例えばバスＢｂｕｓに供給され、これによって、命令２の演算ステージ（ＥＸ）では、算術論理演算器ＡＬＵにより、バスＡｂｕｓに供給された命令１の演算結果からレジスタＲ２の値を減算する演算処理が可能にされる。したがって、命令２の実行ステージ（ＥＸ）でパイプラインが１ステージストールされることを防止することができる。
【００４５】
《スーパスカラにおけるレジスタ競合判定》
データプロセッサ１に、複数のパイプラインで並列に命令を処理できるスーパースカラ機能を採用した場合について説明する。ここでは２ウェイスーパースカラプロセッサとしてデータプロセッサ１を構成する場合において、命令フローユニット５における命令デコード、レジスタ競合判定、及びパイプライン制御を行うための論理構成が図７に例示される。図７の例では、命令フローユニット５は、夫々１６ビットの命令レジスタ４０、４１、命令デコーダ４３、４３、レジスタ競合判定回路５２、パイプライン制御回路５３、及びフォワーディング制御回路５４を有する。
【００４６】
前記１６ビットの命令デコーダ４３が夫々の命令レジスタ４０，４１に対応して設けられ、１６ビット単位の命令デコードを並行して行うことができる。レジスタ競合判定回路５２は各命令レジスタ４０，４１の１６ビットにおけるＩ４〜Ｉ１１を入力して、レジスタ競合判定回路４４と同様に、前後の命令で利用される汎用レジスタの競合可能性を判定する。レジスタ競合の判定結果は制御情報５６としてフォワーディング制御回路５４及びパイプライン制御回路５３に与えられる。命令デコーダ４３はレジスタ競合判定に並行して命令コードのデコードを行い、デコード結果は制御情報５７，５８としてパイプライン制御回路５３及びフォワーディング制御回路５４に与えられる。命令中のイミディエイト値及びディスプレースメントはデータ情報６０，６１として切出されて出力される。前記データ情報、パイプライン制御回路５３から出力される制御情報、フォワーディング制御回路５４から出力される制御情報は、パイプラインステージ毎にＥＵ６、ＦＰＵ７に出力され、それらの動作を制御する。
【００４７】
レジスタ競合判定に基づく制御を詳述する。レジスタ競合判定回路５２は双方の命令レジスタ４０，４１から順次コードＩ４〜Ｉ１１を入力してレジスタ競合の可能性を判定する。即ち、前の命令で指定されたディスティネーションレジスタが、後の命令で指定されたソースレジスタに一致する可能性が判定される。そのレジスタ競合判定結果に対してフォワーディングが可能か否かを示す制御情報５６Ａがフォワーディング制御回路５４に与えられる。また、そのレジスタ競合判定結果に対してパイプラインストールが必要か否かを示す制御情報５６Ｂがパイプライン制御回路５３に与えられる。ここでは、命令デコードに並行してコードＩ４〜Ｉ１１によるレジスタ競合判定を行っているので、命令の種別によってはコードＩ４〜Ｉ１１にレジスタ指定フィールドを含まず、実際にはイミディエイト値であったり、ディスプレースメントであったりする場合がある。命令のビット数やレジスタオペランド数は命令デコーダ４３、４３によって解読されるので、その状態はオペレーションコードのデコードにより明らかになり、命令の種別より前後幾つかの命令間でレジスタ競合を生ずる可能が無い場合には、命令デコーダ４３，４３はフォワーディング制御回路５４に、競合判定結果に対するフォワーディング無効（若しくはフォワーディングキャンセル）を示す制御情報５７Ａ，５８Ａを与え、パイプライン制御回路５３にはパイプラインストールのキャンセルを示す制御情報５７Ｂ，５８Ｂを与える。
【００４８】
前記レジスタフィールドの第１例によれば、スーパスカラの場合もシングルスカラと同様に命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００４９】
《レジスタ指定フィールドの第２例》
レジスタ指定フィールドの第２例を説明する。この例はレジスタ指定フィールドの配置に対する自由度を増した例であり、ＩＦＵ５が図７のスーパスカラ対応である場合には、シングルスカラと同様の作用効果を得ることを保証するレジスタ指定フィールドのフォーマットとされる。
【００５０】
図８にはレジスタ指定フィールドの第２例が示される。スーパスカラ対応のＩＦＵ５は１６ビット単位で並列にデコード動作可能な２個の命令デコーダ４３を備えるから、１６ビット命令を２命令並列にデコードする動作と、３２ビット命令を２個の命令デコーダ４３でデコードする動作において、レジスタ指定フィールドの扱いが等価的に同じになれば、第１の例の如くレジスタ指定フィールドが３２ビット命令の前半に配置するという規則に拘束されることを要しない。即ち、図８において“１６ビット命令２命令同時実行”の欄にあるように、前記１６ビット命令２０，２１，２２が連続してフェッチされて、別々で並列にデコードされる様子が示されるが、これは、３２ビット命令の前半１６ビットにレジスタ指定フィールドがある場合と、３２ビット命令の後半１６ビットにレジスタ指定フィールドがある場合の双方を包含することになる。したがって、スーパスカラ対応の場合には、前半１６ビットにおける領域２４、又は後半１６ビットにおける領域２６の何れか一方にレジスタ指定フィールドが含まれるような命令フォーマットを採用しても、第１例の場合と同じ作用効果を得ることができる。要するに、命令２３で例示されるような、前半１６ビットのＩ４〜Ｉ１１をレジスタ指定フィールドとして利用可能にする３２ビット命令と、命令２５で例示されるような、後半１６ビットのＩ４〜Ｉ１１をレジスタ指定フィールドとして利用可能にする３２ビット命令とを、命令セットに混在させてよい。  図８の命令フォーマットにおいて、３２ビットの命令と１６ビットの命令は共にレジスタ指定フィールドＲＥＧ１，ＲＥＧ２の配置がフィールド２４内、又はフィールド２６内に揃えられているから、３２ビットの命令でも１６ビットの命令であっても、命令からレジスタ指定フィールドＲＥＧ１，ＲＥＧ２を切出すために必要なシフト動作を、単純化もしくは削除することができる。単にＩ４〜Ｉ１１をレジスタ競合判定回路５２に供給すればよい。したがって、３２ビットの命令と１６ビットの命令が混在されていても、命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００５１】
３２ビットの命令における後半部分にレジスタ指定フィールドが設けられていても、そもそも２ウェイスーパスカラ対応のために、２個の１６ビットデコーダ４３を持つのであるから、それを最大限利用することにより、レジスタ判定や命令デコード処理を複雑にしたり論理規模を増大させること無く、３２ビット命令におけるレジスタ指定フィールドの配置に対する制約を第１例よりも緩和させることが可能になる。
【００５２】
《レジスタ指定フィールドの他の例》
レジスタ指定フィールドの配置は例１に対して図９に例示される命令セット７１〜７５の何れかであってもよく、本発明はそのような命令セットを有するデータプロセッサ等にも適用可能である。即ち、３２ビット命令の前半１６ビットのフォーマットは１６ビット命令と同じとし、後半１６ビットにイミディエイトｉｍｍ、オペレーションコードＯＰ３等を配置する。要するに、１６ビット命令のレジスタ指定フィールドとの相関が保たれていれば、前半１６ビット上でのレジスタ指定フィールドＲＥＧ１，ＲＥＧ２若しくはオペレーションコードＯＰ１，ＯＰ２の配置はどこでもよい。
【００５３】
図９に例示されるように、３２ビット命令に限らず、後半部分にレジスタフィールドを含まなければ、後半部分は任意の所定ビット数であってもよい。要するに、３２ビット命令を更に拡張する事は妨げられない。
【００５４】
シングルスカラのデータプロセッサであっても、図１０に例示されるように、レジスタ指定フィールドを３２ビット命令の後半１６ビットに含む命令フォーマットを採用することが可能である。この場合も、後半１６ビットにおけるレジスタ指令フィールドの配置は１６ビット命令におけるレジスタ指定フィールドの配置に揃えられることが条件である。このようにすることによっても、レジスタ競合判定論理を単純化することができる。
【００５５】
スーパスカラのデータプロセッサにおいて、３２ビット命令の前半１６ビット部分および後半１６ビット部分のレジスタ指定フィールドの配置が、１６ビット命令と共通ならば、レジスタ指定フィールドの位置は図８に限定されず、図１１に例示するように、適宜変更可能である。
【００５６】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００５７】
例えば、データプロセッサに含まれる回路モジュールは図２に限定されず、キャッシュメモリが採用されず、代わりにＲＡＭをオンチップで備え、ＦＰＵを備えず、また、ＭＭＵのようなうアドレス変換機構を備える構成であってもよい。また命令のビット数は１６ビットと３２ビットに限定されない。
【００５８】
また、命令フローユニットＩＦＵ５に供給される命令は命令キャッシュメモリＩＣＵ３に格納されている命令に限られることない。命令を供給可能なメモリであれば、例えば内蔵ＲＡＭや内蔵ＲＯＭ（図示はしない）、外部メモリ等のメモリから命令の供給を受けてもよい。
【００５９】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【００６０】
すなわち、２ｎビットの命令でもｎビットの命令であっても、命令からレジスタ指定フィールドを切出すために必要なシフト動作を、２ｎビット命令とｎビット命令のレジスタフィールドを揃えることにより、単純化もしくは削除することができる。したがって、２ｎビットの命令とｎビットの命令が混在されていても、命令からレジスタ指定フィールドの情報を切出してレジスタ競合判定を行う処理を高速化することができる。
【００６１】
レジスタ競合に対する判定処理及び命令デコードに要する論理回路の規模の縮小に寄与することができる。
【００６２】
シングルスカラプロセッサはもとより、スーパスカラプロセッサにも容易に適用でき、データ処理性能を向上させることができる。
【００６３】
命令デコーダやレジスタ競合判定論理を単純化できるため、高速動作が必要なｎビット命令、２ｎビット命令混在のＲＩＳＣ型マイクロプロセッサに好適である。
【図面の簡単な説明】
【図１】本発明の一例に係るデータプロセッサの命令の一部を例示する説明図である。
【図２】本発明の一例に係るデータプロセッサのブロック図である。
【図３】図１の命令の具体例として各種データ転送命令（ＭＯＶ命令）を示す説明図である。
【図４】命令フローユニットにおける命令デコード、レジスタ競合判定及びパイプライン制御を行うシングルスカラ対応の論理構成を例示するブロック図である。
【図５】フォワーディング動作を説明するために実行ユニットの詳細な一例が示すブロック図である。
【図６】パイプラインストールを回避してフォワーディングを行う動作の一例を示す説明図である。
【図７】命令フローユニットにおける命令デコード、レジスタ競合判定及びパイプライン制御を行うスーパスカラ対応の論理構成を例示するブロック図である。
【図８】レジスタ指定フィールドの第２例を示す説明図である。
【図９】レジスタ指定フィールドのその他の例を示す説明図である。
【図１０】レジスタ指定フィールドの更に他の例を示す説明図である。
【図１１】レジスタ指定フィールドの更に別の例を示す説明図である。
【符号の説明】
１  データプロセッサ
２  バスインタフェースユニット
３  命令キャッシュメモリ
４  データキャッシュメモリ
５  命令フローユニット
６  実行ユニット
７  浮動小数点演算ユニット
８  ロード・ストアユニット
ＧＲ０〜ＧＲｉ  汎用レジスタ
ＯＰ１，ＯＰ２  オペレーションコードフィールド
ＲＥＧ１，ＲＥＧ２  レジスタ指定フィールド
４０，４１  命令レジスタ
４２  セレクタ
４３  命令デコーダ
４４  レジスタ競合判定回路
４５  パイプライン制御回路
４６  フォワーディング制御回路
ＦＷＤ  フォワーディングユニット
５２  レジスタ競合判定回路
５３  パイプライン制御回路
５４  フォワーディング制御回路
【図１】
2004152049.tif 000003
【図２】
2004152049.tif 000004
【図３】
2004152049.tif 000005
【図４】
2004152049.tif 000006
【図５】
2004152049.tif 000007
【図６】
2004152049.tif 000008
【図７】
2004152049.tif 000009
【図８】
2004152049.tif 000010
【図９】
2004152049.tif 000011
【図１０】
2004152049.tif 000012
【図１１】
2004152049.tif 000013