(57)【特許請求の範囲】
【請求項１】
複数の連続的な処理段を有する命令パイプライン内で、整数演算を行う整数命令及び浮動小数点演算を行う浮動小数点命令が混在した命令を同時に処理する処理装置において、
上記命令パイプライン内の浮動小数点命令を実行し、少なくとも一つの浮動小数点型オペランドから浮動小数点型結果を生成する浮動小数点ユニットと、
上記命令パイプライン内の整数命令を実行し、少なくとも一つの整数型オペランドから整数型結果を生成する、上記浮動小数点ユニットとは独立して整数演算を実行する整数ユニットと、
上記浮動小数点ユニット及び上記整数ユニットにより共有され、上記命令パイプライン内の連続的な段の処理中に上記浮動小数点ユニット及び上記整数ユニットの間で整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を通信する通信手段と
からなる処理装置。
【請求項２】
上記通信手段に接続され、上記整数ユニットにより形成された整数型結果を格納する第１のレジスタファイルを更に有する請求項１記載の処理装置。
【請求項３】
上記通信手段に接続され、上記浮動小数点ユニットにより形成された浮動小数点型結果を格納する第２のレジスタファイルを更に有する請求項１記載の処理装置。
【請求項４】
上記浮動小数点ユニットは、上記浮動小数点命令から生じた浮動小数点型オペランドに基づいて加算演算、減算演算及び変換演算を行う浮動小数点算術論理装置を含む請求項１記載の処理装置。
【請求項５】
上記浮動小数点ユニットは、上記浮動小数点命令から生じた浮動小数点型オペランドに基づいて乗算演算を行う浮動小数点乗算器を含む請求項１記載の処理装置。
【請求項６】
上記浮動小数点ユニットは、上記浮動小数点命令から生じた浮動小数点型オペランドに基づいて除算演算及び平方根演算を行う浮動小数点除算及び平方根ユニットを含む請求項１記載の処理装置。
【請求項７】
上記通信手段は、上記整数ユニット及び上記浮動小数点コントローラと統合されている請求項１記載の処理装置。
【請求項８】
上記整数ユニットは、整数命令及び浮動小数点命令用の命令アドレスを発行する手段を含む請求項１記載の処理装置。
【請求項９】
上記整数ユニットは、整数命令及び浮動小数点命令をフェッチする手段を含む請求項１記載の処理装置。
【請求項１０】
上記整数ユニットは、少なくとも一つの整数型オペランドを生成するため整数命令をデコードする手段を含む請求項１記載の処理装置。
【請求項１１】
上記整数ユニットは、整数命令から生じた整数型オペランドに基づいて整数演算を実行し、浮動小数点命令及び浮動小数点型オペランドを上記浮動小数点ユニットにディスパッチする手段を含む請求項１記載の処理装置。
【請求項１２】
整数命令の実行の結果を格納する手段を更に有する請求項１記載の処理装置。
【請求項１３】
整数型結果の上記第１のレジスタファイルへの格納を取り消す手段を更に有する請求項２記載の処理装置。
【請求項１４】
整数型結果を上記第１のレジスタファイルに書き込む手段を更に有する請求項２記載の処理装置。
【請求項１５】
上記浮動小数点コントローラは、
上記浮動小数点ユニットによる浮動小数点命令の実行の終了を同期させる手段と、
浮動小数点型結果を上記第２のレジスタファイルに書き込む手段とを含む請求項３記載の処理装置。
【請求項１６】
上記通信手段は、整数算術及び論理命令の整数型オペランド並びに整数型結果を通信する第１のデータパス手段を含む請求項１記載の処理装置。
【請求項１７】
上記通信手段は、整数ロード命令の整数型オペランド及び整数型結果を通信する第２のデータパス手段を含む請求項１記載の処理装置。
【請求項１８】
上記通信手段は、整数ストア命令の整数型オペランド及び整数型結果を通信する第３のデータパス手段を含む請求項１記載の処理装置。
【請求項１９】
上記通信手段は、整数型オペランド及び整数型結果を上記命令パイプライン内の先行する段に通信する第４のデータパス手段を含む請求項１記載の処理装置。
【請求項２０】
上記通信手段は、整数型オペランド及び整数型結果を上記命令パイプライン内の先行する段に通信する第５のデータパス手段を含む請求項１記載の処理装置。
【請求項２１】
上記通信手段は、オペランド１個の浮動小数点命令の少なくとも１個の浮動小数点型オペランドと浮動小数点型結果とを通信する第６のデータパス手段を含む請求項１記載の処理装置。
【請求項２２】
上記通信手段は、オペランド２個の浮動小数点命令の少なくとも２個の浮動小数点型オペランドと浮動小数点型結果とを通信する第７のデータパス手段を含む請求項１記載の処理装置。
【請求項２３】
上記通信手段は、浮動小数点ロード命令の浮動小数点型オペランド及び浮動小数点型結果を通信する第８のデータパス手段を含む請求項１記載の処理装置。
【請求項２４】
上記通信手段は、浮動小数点ストア命令の浮動小数点型オペランド及び浮動小数点型結果を通信する第９のデータパス手段を含む請求項１記載の処理装置。
【請求項２５】
整数ユニット及び浮動小数点ユニットを含み、整数演算を行う整数命令と浮動小数点演算を行う浮動小数点命令とが混在した場合に命令を同時に処理する処理システムにおいて、
上記整数ユニット及び上記浮動小数点ユニットは、上記整数命令と上記浮動小数点命令とを同時に実行可能なように互いに分離独立して構成されるとともに、
上記整数ユニット及び上記浮動小数点ユニットにより共有され、上記浮動小数点ユニット及び上記整数ユニットの間で整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を通信する通信手段と、
整数型オペランドを受ける第１のレジスタ手段と、
上記整数型結果を格納する第１のレジスタファイルと、
上記浮動小数点型結果を格納する第２のレジスタファイルと、
を備えることを特徴とする処理システム。
【請求項２６】
上記第３のレジスタ手段に接続され、整数データを受容し、上記整数データを上記整数型結果に並べ、上記整数型結果を上記第３のレジスタ手段に格納するロード整列手段を更に有する請求項２５記載の処理システム。
【請求項２７】
上記第１のレジスタファイルから上記第２のレジスタ手段に整数型オペランドを転送する手段と、
上記第２のレジスタ手段に接続され、上記整数型オペランドを受容し、上記整数型オペランドを上記整数型結果に並べるストア整列手段と、
上記整数型結果を受ける第４のレジスタ手段と、
上記第４のレジスタ手段から上記第１のレジスタファイルに上記整数型結果を転送する手段とを更に有する請求項２５記載の処理システム。
【請求項２８】
整数乗算命令若しくは整数除算命令の実行によって得られる整数型結果、又は、浮動小数点コピー命令の実行によって得られる浮動小数点型結果を受ける第５のレジスタ手段と、
上記第２のレジスタ手段から上記第５のレジスタ手段に、整数型結果、整数型オペランド、浮動小数点型オペランド又は浮動小数点型結果を転送する第２のバイパス手段と、
上記第３のレジスタ手段から上記第２のバイパス手段に、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を転送する第３のバイパス手段とを更に有する請求項２５記載の処理システム。
【請求項２９】
整数型オペランドを上記浮動小数点ユニットに転送する手段と、
上記浮動小数点ユニットから整数型結果を受ける手段と、
上記整数型結果を上記第３のバイパス手段に転送する手段とを更に有する請求項２８記載の処理システム。
【請求項３０】
浮動小数点型オペランド及び浮動小数点型結果を格納する第２のレジスタファイルと、
上記第２のレジスタファイルから浮動小数点型オペランドを受け、上記浮動小数点型オペランドを上記浮動小数点ユニットに転送し、上記浮動小数点型オペランドを上記第５のレジスタ手段に転送する手段と、
上記浮動小数点ユニットから上記浮動小数点型結果を受け、上記浮動小数点型結果を上記第５のレジスタ手段に転送する手段と、
上記第５のレジスタ手段から上記浮動小数点型結果を受け、上記第５のレジスタ手段から上記浮動小数点型オペランドを受ける第６のレジスタ手段と、
上記第６のレジスタ手段から上記第３のバイパス手段に上記浮動小数点型オペランド又は上記浮動小数点型結果を転送する第４のバイパス手段と、
上記第６のレジスタ手段から上記浮動小数点型結果を受ける第７のレジスタ手段と、
上記第７のレジスタ手段から上記第４のバイパス手段に上記浮動小数点型オペランド又は上記浮動小数点型結果を転送する第５のバイパス手段と、
上記第７のレジスタ手段又は上記浮動小数点ユニットから上記浮動小数点型結果を受け、上記浮動小数点型結果を上記第２のレジスタファイルに格納する手段とを更に有する請求項２９記載の処理システム。
【請求項３１】
上記第３のレジスタ手段及び上記第５のレジスタ手段に接続されている浮動小数点コピー装置を更に有する請求項３０記載の処理システム。
【請求項３２】
マイクロプロセッサ内の共有データパスを介して整数ユニットと浮動小数点ユニットと浮動小数点コントローラとの間で、混在した整数型オペランド、整数型結果、浮動小数点型オペランド及び浮動小数点型結果を通信する方法において、
整数乗算及び整数除算を含む整数命令、又は、浮動小数点コピー命令を含む浮動小数点命令のいずれかの実行の命令を、上記命令が浮動小数点コピー命令、又は、整数乗算命令若しくは整数除算命令以外の整数命令であるとき上記整数ユニットに発行し、上記命令が整数乗算命令若しくは整数除算命令、又は、浮動小数点コピー命令以外の浮動小数点命令であるとき上記浮動小数点ユニットに発行する段階と、
上記命令が整数乗算命令又は整数除算命令であるとき、上記共有データパスを介して上記整数型オペランドを受ける段階と、
上記命令が浮動小数点命令であるとき、上記共有データパスを介して上記浮動小数点型オペランドを受ける段階と、
上記発行された命令が整数命令であるとき整数型結果を生成するため、又は、上記発行された命令が浮動小数点コピー命令であるとき浮動小数点型結果を形成するため、上記発行された命令を上記整数ユニットにより実行する段階と、
上記発行された命令が浮動小数点命令であるとき浮動小数点型結果を形成するため、又は、上記発行された命令が整数乗算命令若しくは整数除算命令であるとき整数型結果を生成するため、上記発行された命令を上記浮動小数点ユニットにより実行する段階と、
上記共有データパスを介して上記整数型結果及び上記浮動小数点型結果を選択的に通信する段階とからなる方法。
【請求項３３】
上記通信手段は、
整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を転送するデータパスを含むこと
を特徴とする請求項１に記載の処理装置。
【請求項３４】
上記通信手段は、
整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を選択して上記浮動小数点ユニット又は上記整数ユニットに供給する選択回路を備えること
を特徴とする請求項１に記載の処理装置。
【請求項３５】
前記選択回路は、マルチプレクサであること
を特徴とする請求項３４に記載の処理装置。
【請求項３６】
複数の連続的な処理段を有する命令パイプライン内で、整数演算を行う整数命令及び浮動小数点演算を行う浮動小数点命令が混在した命令を同時に処理する処理装置において、
上記命令パイプライン内の浮動小数点命令を実行し、少なくとも一つの浮動小数点型オペランドから浮動小数点型結果を生成する浮動小数点ユニットと、
上記命令パイプライン内の整数命令を実行し、少なくとも一つの整数型オペランドから整数型結果を生成する整数ユニットと、
上記浮動小数点ユニット及び上記整数ユニットにより共有され、上記命令パイプライン内の連続的な段の処理中に上記浮動小数点ユニット及び上記整数ユニットの間で整数型オペランド、整数型結果、浮動小数点型オペランド又は浮動小数点型結果を通信する通信手段と
を備える処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的に共有データパスを介して整数データ及び浮動小数点データを転送するマイクロプロセッサ並びに方法に係わり、特に、共有データパスを有し、統合された整数ユニット及び浮動小数点ユニットに夫々整数データ及び浮動小数点データを通信する複数のパイプライン段を有するマイクロプロセッサに関する。
【０００２】
【従来の技術】
整数命令及び実数命令を別個に処理することにより、１サイクル当たりに実行されるプログラム命令数の測定から分かるように、典型的に処理スループットが低下する。スループットの低下する原因は、実数を処理する際に要求される複雑さ及び精度が整数の場合よりも増大するためである。さらに、実数及び整数は異なる内部機械語表記の形式により表現される。浮動小数点表記は実数を表現するため使用され、他のフォーマットでも構わないが、典型的には符号ビット、指数部及び小数部を含む。２の補数表記及び１の補数表記が整数を表現するため使用され、他のフォーマットでも構わないが、典型的には符号ビット及び大きさを含む。このように表記に差異があるため、効率的なマイクロプロセッサ設計はより複雑化する。
【０００３】
マイクロプロセッサの典型的な中央処理装置（ＣＰＵ）は、整数命令を実行する整数ユニット（ＩＵ）とも称される算術論理装置（ＡＬＵ）と、汎用レジスタの組とを含むが、場合によっては専用ハードウェアが整数乗算及び除算のため使用される。加算又は減算のような単純な整数演算命令は、典型的に単一のマシンサイクル内に完了される。
【０００４】
“ＭＩＰＳ  Ｒ４２００”，  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｒｅｐｏｒｔ，  Ｍａｙ  １９９３，  ｐｐ．  ６−７、並びに、“Ｒ４２００  ＭＩＣＲＯＰＲＯＣＥＳＳＯＲ，  Ｒ４２００  Ｐｒｅｌｉｍｉｎａｒｙ  Ｄａｔａｓｈｅｅｔ  Ｒｅｖ．  １．４”，  ＭＩＰＳ  Ｃｏｍｐｕｔｅｒｓ，  Ｉｎｃ．，  Ａｕｇｕｓｔ  １９９４，  ｐｐ．  １−３７  に記載されているように、整数表記の差異にも係わらず、整数ユニットが浮動小数点命令を実行するため使用され得る。浮動小数点表現と整数表現との間の変換は必要ないが、浮動小数点演算の処理は整数ユニット演算よりも処理時間が長いので性能が低下する。
【０００５】
Ｃｏｌｗｅｌｌ  他に発行された米国特許第５，１７９，６８０  号、イシダ他に発行された米国特許第５，２２６，１６６  号、及び、イシダ他に発行された米国特許第５，２９３，５００  号明細書に開示されているように、専用浮動小数点ユニット（ＦＰＵ）は、整数命令と並列に浮動小数点命令を実行するため選択的に利用され得る。しかし、この種の浮動小数点ユニットは、整数ユニットと浮動小数点ユニットとの間で浮動小数点型オペランド及び浮動小数点型結果を通信するため別個のデータパスを必要とする。さらに、浮動小数点ユニットの命令の処理は、整数ユニットの命令の処理と同期させる必要があるので、演算上の複雑さ及び遅延が更に追加される。
【０００６】
【発明が解決しようとする課題】
上記の如く、従来技術のマイクロプロセッサは、混在する整数命令と実数命令とを処理するため整数データ及び浮動小数点データを通信する際に、性能が低下し、或いは、演算の複雑さ及び遅れが増加するという欠点がある。
本発明は、上記従来技術の欠点を解決するため、共通データパスシステムを介して整数データ及び浮動小数点データを通信するマイクロプロセッサ並びにその方法の提供を目的とする。
【０００７】
【課題を解決するための手段】
本発明の一実施例は、命令を同時に実行するマイクロプロセッサである。命令には、整数演算を実行する整数命令と、実数演算を実行する浮動小数点命令とが含まれる。命令パイプラインは複数の命令を同時に実行するため連続的な段を有する。複数の連続的な段の中の各段は、複数の命令の中の別々の命令に基づいて同時に動作する。本発明において、整数命令及び浮動小数点命令はパイプライン内に混在させてもよい。整数ユニットは整数命令を実行し、各整数命令毎に整数型結果を形成する。浮動小数点ユニットは浮動小数点命令を実行し、各浮動小数点命令毎に浮動小数点型結果を形成する。データパスは命令パイプライン内の連続的な段の間でデータを通信するため整数ユニットと浮動小数点ユニットとにより共有される。
【０００８】
本発明の他の実施例は、プログラム命令のパイプライン処理のためのマイクロプロセッサである。各プログラム命令は、整数プログラム命令又は浮動小数点プログラム命令のいずれかにより構成される。回路は、複数のプログラム命令を同時に処理し、少なくとも一つの整数型オペランドから整数型結果を形成するため整数命令を実行し、少なくとも一つの浮動小数点型オペランドから浮動小数点型結果を形成するため浮動小数点命令を実行し、整数型結果及び少なくとも一つの整数型オペランドを整数ユニットに通信し、浮動小数点型結果及び少なくと一つの浮動小数点型オペランドを浮動小数点ユニットに通信するため設けられている。
【０００９】
本発明の他の実施例は、整数値及び浮動小数点値を、マイクロプロセッサ内の共有データパスを介して夫々整数ユニット及び浮動小数点ユニットに通信する方法である。各整数値は、少なくとも一つの整数型オペランド又は整数型結果により構成される。各浮動小数点値は、少なくとも一つの浮動小数点型オペランド又は浮動小数点型結果により構成される。上記方法は命令をマイクロプロセッサに供給する段階を含む。命令は、整数命令又は浮動小数点命令のいずれかである。命令は、命令のタイプに依存して、整数ユニット又は浮動小数点ユニットのいずれかの実行のため発行される。一般的に言うと、発行された命令が整数命令であるならば、整数型結果を形成するため整数ユニットを用いて実行される。しかし、発行された命令が整数乗算の場合、整数乗算は浮動小数点乗算装置により実行され、発行された命令が整数除算の場合、整数除算は浮動小数点除算装置により実行される。発行された命令が浮動小数点命令であるならば、浮動小数点型結果を形成するため浮動小数点ユニットを用いて実行される。整数型結果又は浮動小数点型結果は、共有データパスを介して通信される。
【００１０】
【発明の実施の形態】
以下の詳細な説明では本発明の最良の実施モードを説明するが、当業者は、本発明の最良の実施モードの説明から本発明の他の実施例を容易に理解できる。本発明は他の異なる実施の形態が可能であり、幾つかの実施の形態の細部は本発明の精神及び範囲から逸脱することなく、種々の明らかな観点に関して変更することが可能である。以下の添付図面及び詳細な説明は、本質的に本発明の例示であり、本発明はこれらの例に限定されないことに注意すべきである。
【００１１】
Ｉ．  マイクロプロセッサ
図１は本発明の共有データパスを組み込むマイクロプロセッサ９の機能的なブロック図である。マイクロプロセッサ９は、複合形の整数ユニット／浮動小数点ユニットコントローラ（ＩＵ／ＦＰＣ）１０と、独立した浮動小数点ユニット（ＦＰＵ）２２とを含む。好ましくは、マイクロプロセッサ９は、ＳＰＡＲＣ（登録商標）アーキテクチャ仕様に準拠した縮小命令セットコンピュータ（ＲＩＳＣ）設計を利用し、マイクロプロセッサ９が多数のプログラム命令を並列的に処理することを可能にさせる論理命令パイプライン１１を有する単一命令発行プロセッサである。“ＳＰＡＲＣ”は、カリフォルニア州メンロパークのＳＰＡＲＣインターナショナル社の登録商標である。ＳＰＡＲＣ（登録商標）のＲＩＳＣアーキテクチャ仕様に関する一般的な情報は、参考のため引用した“Ｔｈｅ  ＳＰＡＲＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｍａｎｕａｌ  ”，  Ｖｅｒｓｉｏｎ  ８，  ＳＰＡＲＣ  Ｉｎｔｅｒｎａｔｉｏｎａｌ，  Ｉｎｃ．，  １９９２  から得られる。新しいプログラム命令は、各マシンサイクル中に命令パイプライン１１内に受けられ、処理が終了するまで連続的なサイクル毎に一段ずつ進む。その結果として、各プログラム命令の処理は、命令パイプライン１１内に既に存在する他のプログラム命令と時間的に重なり合うので、処理スループットが増加する。
【００１２】
ＲＩＳＣ設計は、一般的に、利用可能なプログラム命令を、メモリにアクセスするロード命令及びストア命令と、算術命令と、論理命令とに制限する。マイクロプロセッサ９の場合に、プログラム命令フォーマットは、３２ビットずつのメモリの境界に従って、即ち、３２ビットメモリバウンダリに基づいて並べられ、演算コード（オペコード）フィールド及びレジスタアドレスフィールドからなる均一配置を利用する。さらに、マイクロプロセッサ９は、命令及びプログラムデータを、プログラム命令を格納する命令キャッシュ（図示しない）と、プログラムデータを格納するデータキャッシュ（図示しない）とに分割するため、Ｈａｒｖａｒｄ  （Ａｉｋｅｎ）  メモリアーキテクチャを採用する。
【００１３】
図１及び２を参照するに、整数命令及び浮動小数点命令は、マイクロプロセッサ９内に統合された独立した機能的ユニット、即ち、整数ユニット／浮動小数点ユニットコントローラ１０内に統合され整数命令を処理する整数ユニット（ＩＵ）２７と、浮動小数点命令を処理する浮動小数点ユニット（ＦＰＵ）２２によって夫々処理される。整数ユニット／浮動小数点ユニットコントローラ１０内に統合された浮動小数点コントローラ２８が整数ユニット／浮動小数点ユニットコントローラ１０と浮動小数点ユニット２２との間の浮動小数点命令のディスパッチ、同期及び終了を制御するとしても、浮動小数点ユニット２２は整数ユニット／浮動小数点ユニットコントローラ１０とは別個の機能的ユニットとして浮動小数点演算を実行する。整数ユニット２７は、整数命令を実行する汎用レジスタ（図示しない）を含み、ロードメモリアドレス及びストアメモリアドレスを計算し、プログラムカウンタ（ＰＣ）（図示しない）を保持することにより、マイクロプロセッサ９の全体的な動作を制御する。
【００１４】
図２に示される如く、整数ユニット２７は、論理命令パイプライン１１の最初の７段の論理段、即ち発行（ＩＳＳＵＥ）段１２と、フェッチ（ＦＥＴＣＨ）段１３と、デコード（ＤＥＣＯＤＥ）段１４と、実行（ＥＸＥＣＵＴＥ）段１５と、メモリ（ＭＥＭＯＲＹ）段１６と、遅延（ＤＥＦＥＲ）段１７と、書込（ＷＲＩＴＥ）段１８とを含む。浮動小数点コントローラ２８は、命令パイプライン１１の最後の５段の論理段、即ち、メモリ（ＭＥＭＯＲＹ）段１６と、遅延（ＤＥＦＥＲ）段１７と、書込（ＷＲＩＴＥ）段１８と、浮動小数点遅延（ＦＰ  ＤＥＦＥＲ）段１９と、浮動小数点書込（ＦＰ  ＷＲＩＴＥ）段２０とを含む。図２において２７’−２８’で示されているメモリ段１６と、遅延段１７と、書込段１８とからなる論理段は、整数ユニット２７と浮動小数点コントローラ２８の両方の処理の一部をなす。
【００１５】
浮動小数点ユニット２２は三つの独立したサブユニットにより構成される。浮動小数点算術論理装置（ＦＰ−ＡＬＵ）２３は、浮動小数点の加算、減算、比較及び変換命令を実行する。浮動小数点乗算器（ＦＰ−ＭＵＬ）２４は浮動小数点の乗算を実行する。浮動小数点除算／平方根ユニット（ＦＰ−ＤＩＶ／ＳＱＲＴ）２５は、浮動小数点の除算及び平方根計算を実行する。上記実施例において、浮動小数点算術論理装置２３及び浮動小数点乗算器２４は、オペランドのタイプとは無関係に約３．５マシンサイクル内に浮動小数点型結果を生成し、浮動小数点除算／平方根ユニット２５は約２５マシンサイクル内に浮動小数点型結果を生成する。
【００１６】
ＩＩ．  命令パイプライン
９段の論理命令パイプライン１１は、多数のプログラム命令を同時に実行するため整数ユニット／浮動小数点ユニットコントローラ１０内に統合される。命令パイプライン１１は、処理スループットを増加するため同期的な形で整数命令及び浮動小数点命令の並列処理を可能にさせる。データ値は一時的停止又は遅れを生ずることなく転送され得るので、オペランド、結果及びバイパスデータパスは、マイクロプロセッサ９にオペランドタイプとは関係なく１サイクル当たり略１命令を完了させる。さらに、整数命令及び浮動小数点命令の各命令は、入力として少なくとも１個のオペランドを要求し、中間的な値を計算する場合があり、出力として結果を発生する。これらの値は全て、特定のパイプライン段に依存して、オペランド、結果又はバイパスデータパスと共に転送され得る。以下、命令パイプライン１１の段を説明する。
【００１７】
（１）発行（ＩＳＳＵＥ）段１２
発行段は、デコード（ＤＥＣＯＤＥ）段１４又は実行（ＥＸＥＣＵＴＥ）段１５からプログラムカウンタ（ＰＣ）（図示しない）を介して命令仮想アドレスＩＶＡ［３１：２］を受け、命令仮想アドレスＩＶＡ［３１：２］を命令キャッシュ（図示しない）に送出することにより、プログラム命令を発行する。
【００１８】
（２）フェッチ（ＦＥＴＣＨ）段１３
フェッチ段は、プログラム命令ルックアップを実行し、命令キャッシュ（図示しない）からプリフェッチバッファ（図示しない）に３２ビットプログラム命令の対ＩＤ［６３：０］を受けることにより、プログラム命令をフェッチする。これにより、分岐プログラム命令の場合の１サイクルのペナルティーが回避される。
【００１９】
（３）デコード（ＤＥＣＯＤＥ）段１４
デコード段は、一対の整数型オペランドを生成するため、フェッチ段１３からプログラム命令を受け、二つの整数型オペランド％ｒｓ１及び％ｒｓ２を生成することにより単一プログラム命令をデコードする。上記オペランドは、整数ユニットレジスタファイル２１から読み出されるか、或いは、実行（ＥＸＥＣＵＴＥ）段１５、メモリ（ＭＥＭＯＲＹ）段１６、遅延（ＤＥＦＥＲ）段１７若しくは書込（ＷＲＩＴＥ）段１８から転送される。整数ユニットレジスタファイル２１は、整数型オペランドを一時的に格納するため使用される。
【００２０】
（４）実行（ＥＸＥＣＵＴＥ）段１５
実行段はプログラム命令を実行し整数計算を行う。実行段１５は、整数ユニット算術論理装置（ＩＵ−ＡＬＵ）（図示しない）と、３２ビットの左右両方向シフタ（図示しない）とを含む。シフタ及び整数ユニット算術論理装置は、整数算術命令を実行するが、浮動小数点乗算器２４は整数乗算を行う。特に、整数ユニット算術論理装置は、加算命令と、ブーリアンＡＮＤ（論理積）、ＯＲ（論理和）及びＸＯＲ（排他的論理和）命令とを行う。命令仮想アドレスＩＶＡ［３１：０］は、プログラムカウンタ（ＰＣ）へディスパッチされ、データ仮想アドレスＤＶＡ［３１：０］はデータキャッシュにディスパッチされる。実行段１５は、以下に詳述するように、全ての浮動小数点命令を浮動小数点ユニット２２に発行する。
【００２１】
（５）メモリ（ＭＥＭＯＲＹ）段１６
メモリ段は、プログラム命令実行段からの結果を格納し、又は、命令パイプライン１１、浮動小数点ユニット２２及びデータキャッシュとの間で６４ビットのデータを受け、６４ビットのデータを送出することにより、整数ユニットロード命令、整数ユニットストア命令、浮動小数点ユニットロード命令、若しくは、浮動小数点ユニットストア命令を行う。ロード命令中に、全てのデータがストア整列装置によって並べられ、空きが生じたときデータキャッシュに書き込むためストア・データ・ホールディング・レジスタ（図示しない）に通知される。
【００２２】
（６）遅延（ＤＥＦＥＲ）段１７
遅延段は、間違ったロード命令の結果として整数ユニットレジスタファイル２１に送られた書込データを削除する機会を与えることにより、命令実行の同時性を補助する。
（７）書込（ＷＲＩＴＥ）段
書込段は、遅延段１７から整数型結果を受け、その整数型結果を整数ユニットレジスタファイル２１に書き込むことにより、整数型結果を書き出す。また、浮動小数点除算及び平方根命令が特別の浮動小数点除算又は平方根ホールディングスロット（図示しない）に送られる。
【００２３】
（８）浮動小数点遅延（ＦＰ−ＤＥＦＥＲ）段１９
浮動小数点遅延段は、算術演算及び乗算演算を含む全ての浮動小数点命令の終了を同期させる。さらに、通知された浮動小数点除算及び平方根命令が完了される。算術、論理及び乗算命令は、命令パイプライン１１と同期して４サイクルで終了し、一方、除算及び平方根命令は略２５サイクルで終了する。
【００２４】
（９）浮動小数点書込（ＦＰ−ＷＲＩＴＥ）段２０
浮動小数点書込段は浮動小数点型結果を書き出す。浮動小数点レジスタファイル２６に通知されたあらゆる浮動小数点書込命令が書き込まれ、又は、あらゆる間違いのある浮動小数点命令が浮動小数点誤りキューに挿入される。また、浮動小数点状態レジスタが更新される。
【００２５】
整数命令の実行と浮動小数点命令の実行との間で同時性を達成し、命令処理スループットを増加させるため、マイクロプロセッサ９は、整数ユニット／浮動小数点ユニットコントローラ１１と浮動小数点ユニット２２との間で整数データ及び浮動小数点データを通信する共有データパスを利用する。整数ユニット２７と浮動小数点ユニット２２は共に、命令パイプライン１１の種々の段のレジスタの間でオペランド及び結果を転送するため、バイパスパスを含むデータパスを必要とする。後述するように、上記データパスの中の特定のセクションは、メモリ段１６から書込段１８までの間で共有される。
【００２６】
浮動小数点命令は、以下の通りデコード段１４から浮動小数点書込段２０までで処理される。全ての浮動小数点命令は、デコード段１４において構造上及びオペランドの障害が試験される。浮動小数点命令オペランドは、実行段１５において浮動小数点レジスタから集められる。浮動小数点コントローラ（ＦＰＣ）２８は、デコード段１７から書込段２０までの間で動作し、浮動小数点命令及びオペランドの浮動小数点ユニット２２へのディスパッチ、並びに、浮動小数点ユニット２２からの浮動小数点型結果の受け取りを調整することにより、浮動小数点ユニット２２の動作を制御する。浮動小数点命令は、浮動小数点ユニット２２によりメモリ段１６から実行されはじめ、約３．５サイクル経過後に浮動小数点遅延段１９で終了する。但し、浮動小数点除算及び平方根命令は、約２５サイクルで終了する。浮動小数点型結果は、浮動小数点書込段２０において浮動小数点レジスタファイルに書き込まれる。浮動小数点レジスタファイル、又は、３エントリ形浮動小数点誤りキューのいずれかが、浮動小数点書込段２０の間に、浮動小数点状態レジスタ（ＦＳＲ）と共に書き込まれる。
【００２７】
浮動小数点コントローラ２８は、１サイクルにつき１個の浮動小数点命令を発行する。全ての浮動小数点コピー命令及びロード命令はメモリ段１６で終了するが、浮動小数点型結果は、以下に説明するように浮動小数点遅延段１９まで共有データパスを用いる命令パイプライン１１の中でパイプライン化される。浮動小数点算術論理装置２３及び浮動小数点乗算器２４用の浮動小数点命令は、オペランド若しくは結果の異常又は正常とは無関係に、浮動小数点遅延段１９で終了し、一方、浮動小数点除算／平方根ユニット２５は、メモリ段１６、遅延段１７及び書込段１８の間でパイプライン化される。その後、これらの命令は、浮動小数点除算／平方根ホールディングスロット（図示しない）に入れられる。
【００２８】
上記の如く、浮動小数点型オペランドは、実行段１５の間に集められ、浮動小数点命令実行はメモリ段１６の間に始まる。浮動小数点ユニット２２は、３２ビット（シングルワード）又は６４ビット（ダブルワード）のいずれの値でも動作し得るので、浮動小数点ユニット２２内のデータパスは６４ビット幅である。シングルワードオペランドは、レジスタ番号に従ってオペランド及び迂回データパス上に並べられる。特に、浮動小数点レジスタ％ｆ０（図示しない）に送られたシングルワードはビット［６３：３２］を使用し、一方、浮動小数点レジスタ％ｆ２５（図示しない）から読み出されたシングルワードはビット［３１：０］を使用する。２個の異なる３２ビット値は１個の６４ビットオペランドを形成するため結合することができるので、第２浮動小数点型オペランド（ビット［６３：３２］）のためのバイパスデータパスは、第１浮動小数点型オペランド（ビット［３１：０］）のためのバイパスデータパスとは別個である。整数ストア命令及び浮動小数点ストア命令の両方のためのデータは実行段１５で集められるので、整数ユニット２７及び浮動小数点ユニット２２は、図３を参照して詳述するように第２オペランド［３１：０］のための３２ビットバイパスデータパスを共有することが可能である。
【００２９】
ＩＩＩ．  共有オペランドデータパス
上記の如く、整数命令は典型的に実行段１５中の１サイクルで終了する。しかし、その結果は３段後方にある書込段１８まで格納されない。浮動小数点命令は、典型的に、メモリ段１６から始まり浮動小数点遅延段１９で終了する３．５サイクルで完了する。その結果として、整数命令処理及び浮動小数点命令処理は、（図２に示される如く）メモリ段１６と、遅延段１７と、書込段１８とからなる３段の間で重なり合う。
【００３０】
【実施例】
図３は整数ユニット２７及び浮動小数点ユニット２２のための共有データパスの図である。図３に示された回路を通じて命令パイプラインにより使用されるデータパスは、９本の別々のデータパスであるが、それらは重なり合う。同図に示された全てのラインは３２ビット幅である。５本のデータパスが整数命令を処理するため使用され、４本のデータパスが浮動小数点命令を処理するため使用される。本発明の好ましい実施例において、命令パイプラインの各段で回路内に存在するデータは、整数データ又は浮動小数点データのいずれかである。
【００３１】
Ａ．整数演算及び論理命令用のデータパス
第１マルチプレクサ（ＭＵＸ１）３０は第１整数型オペランドに対する入力データを選択する。第２マルチプレクサ（ＭＵＸ２）３２は第２整数型オペランドに対するデータを選択する。入力パスは各オペランドに対し同じであり、図の明瞭さの便宜のため図３から省かれている第２マルチプレクサ（ＭＵＸ２）３２のための入力パス及び後述する関連したバイパス回路についての説明は行わない。入力データは、バイパスパスからのデータと、実行中の命令の二つのオペランドフィールドからのデータとを含む。
【００３２】
デコード段１４の間に第１マルチプレクサ（ＭＵＸ１）３０の入力は、ライン３４を介した整数ユニットレジスタファイル２１からの３２ビット値、処理されている整数命令の選択されたフィールドにより指定されるようなライン３６上の直接又は零オペランド、又は、最後に発生された整数型結果を含むライン３８上のバイパス整数型オペランドを含む。バイパス回路については以下に詳述する。制御ライン（図示しない）は、ライン４２を介して第３マルチプレクサ（ＭＵＸ３）４０に転送される第１マルチプレクサ（ＭＵＸ１）３０の入力を選択する。第３マルチプレクサ（ＭＵＸ３）４０は、入力として第１マルチプレクサ（ＭＵＸ１）３０の出力又はデータキャッシュ（図示しない）からのデータを取る。データキャッシュからのデータはライン４１を介して到達し、ロード整列装置４３によって処理される。ロード整列装置４３は、整数ユニット算術論理装置５０により要求される選択されたワードバウンダリ及びバイトバウンダリに基づいてデータキャッシュからのデータを並べ、そのデータをライン８４を介して第３マルチプレクサ（ＭＵＸ３）４０に転送する。第３マルチプレクサ（ＭＵＸ３）４０は、選択された第１整数型オペランドを転送し、そのオペランドは第１実行レジスタ４４に格納される。同様に、第２マルチプレクサ（ＭＵＸ２）３２は、ライン４８０を用いて第４マルチプレクサ（ＭＵＸ４）４６を経由して第２実行レジスタ４８へ転送する第２整数型オペランドを選択する。
【００３３】
実行段１５の間に、整数型オペランドは第１実行レジスタ４４及び第２実行レジスタ４８からフェッチされ、整数ユニット算術論理装置（ＩＵ  ＡＬＵ）５０は２個の整数型オペランドに関して算術又は論理演算を行う。演算の整数型結果は、常にライン５２を介して第５マルチプレクサ（ＭＵＸ５）５４に転送され、第１メモリレジスタ５６に格納されるが、ライン５８を介して第１整数型オペランドバイパスパスに送られても良い。第１整数型オペランドバイパスパスは、第６マルチプレクサ（ＭＵＸ６）６０に至るライン５上に整数ユニット算術論理装置５０の出力を含む。デコード段１４の間に処理されている命令が、実行段１５において更新された直後の整数ユニットレジスタファイル２１からのオペランドであって、未だ整数ユニットレジスタファイル２１に書き直されていないオペランドを必要とするならば、このオペランドは、上記のデコード段回路に返送される。このパスは、第６マルチプレクサ（ＭＵＸ６）６０を第１マルチプレクサ（ＭＵＸ１）３０に接続するライン３８として示されている。
【００３４】
メモリ段１６の間に、整数型結果は、第１メモリレジスタ５６からライン６４を介して第７マルチプレクサ（ＭＵＸ７）６２に転送され、次に、ライン６８を介して第８マルチプレクサ（ＭＵＸ８）６６に送られる。メモリ段１６の間の整数型結果が第１整数型オペランドとして必要であるならば、ライン７０を介して整数型結果を第９マルチプレクサ（ＭＵＸ９）７２に転送し、次に、ライン７４を介して第６マルチプレクサ（ＭＵＸ６）６０に送ることにより、第１整数型オペランドバイパスパスを介して転送される。整数型結果は、常に、第１遅延レジスタ７６に書き込まれる。
【００３５】
書込段１８の間に、整数型結果は、ライン８０を用いて第１遅延レジスタ７６から第１０マルチプレクサ（ＭＵＸ１０）７８を通して整数ユニットレジスタファイル２１まで転送される。書込段１８中の整数型結果が第１整数型オペランドとして必要であるならば、整数型結果をライン８２を介して第９マルチプレクサ（ＭＵＸ９）７２に転送することによって、第１整数型オペランドバイパスパスにより転送される。
【００３６】
Ｂ．  整数ロード命令用のデータパス
命令パイプラインによって処理される命令が整数ロード命令（即ち、データキャッシュからの整数データによる整数ユニットレジスタファイル２１内のレジスタのロード）であるとき、オペランド発生処理は算術又は論理命令に対する処理と略同じである。しかし、算術又は論理演算を行う代わりに、整数ユニット算術論理装置５０は、選択されたレジスタにロードされるべきデータのアドレスを計算する。アドレス及びレジスタ情報は、ライン３４及び第２整数型オペランド用のライン（図示しない）を介して命令から得られた直後のオペランドである。
【００３７】
デコード段１４の間に、整数型オペランドが上記の如く決められる。実行段１５の間に、整数ユニット算術論理装置は、ロードされるべきデータのデータキャッシュ内アドレスを計算する。このアドレスは図３に示されないパスを介してデータキャッシュに転送される。メモリ段１６の間に、ロード整列装置４３は、整数ユニット算術論理装置により計算されたアドレスによってアドレス指定されたデータをライン４１を介してデータキャッシュから受容し、このデータをライン８６を介して第８マルチプレクサ（ＭＵＸ８）６６に転送する。データは、次に、第１遅延レジスタ７６に格納される。書込段１８の間に、データは、ライン８０を介して、第１０マルチプレクサ（ＭＵＸ１０）７８を経由して整数ユニットレジスタファイル２１内の選択されたレジスタに転送される。
【００３８】
Ｃ．  整数ストア命令用のデータパス
命令パイプラインにより処理される命令が整数ストア命令であるとき（即ち、整数ユニットレジスタファイル２１のレジスタからの整数データをデータキャッシュ内のデータ格納場所に格納するとき）、オペランド発生処理は、算術又は論理命令の処理とほぼ同様である。しかし、算術又は論理演算を行う代わりに、整数ユニット算術論理装置５０は、データキャッシュに格納されるデータのアドレスを計算する。アドレス及びレジスタ情報は、ライン３４及び第２整数型オペランド用のライン（図示しない）を介して命令から得られた直後のオペランドである。
【００３９】
デコード段１４の間に、整数型オペランドが上記の如く決められる。実行段１５の間に、整数ユニット算術論理装置は、ストアされるべきデータのデータキャッシュ内アドレスを計算する。このアドレスは、ライン８８を介して整数ユニットレジスタファイル２１内の選択されたレジスタから受けられ、第５マルチプレクサ（ＭＵＸ５）５４により転送され、第１メモリレジスタ５６に格納される。メモリ段１６の間に、このデータは、ライン６を介して第７マルチプレクサ（ＭＵＸ７）６２を通過し、ライン７０を介してストア整列装置９０まで転送される。ストア整列装置９０はロード整列装置４３の逆の動作を行う。ストア整列装置９０は、データキャッシュの要求に従ってデータを並べる。データは、次に、第１ストアデータレジスタ９２に格納される。書込段１８の間に、データは、ライン９４を介して、データキャッシュ内の指定された格納場所に転送される。
【００４０】
Ｄ．  整数ストアデータバイパス用のデータパス
本発明は、後続の命令による即時使用のためパイプライン内の命令処理の中間結果をパイプラインの前段に返送する能力を提供する。例えば、値“Ａ”が実行段１５の間に計算される状況を想定する。計算された値“Ａ”は、パイプラインの前方の段の命令によりオペランドとして必要とされる可能性があるときには、実行段の次の段において依然として命令パイプライン内に在り、整数ユニットレジスタファイル２１内のレジスタに格納されていない。転送能力が設けられていないならば、命令パイプラインは更新された値“Ａ”が整数ユニットレジスタファイルに書き込まれ得るまで遅延される必要がある。そうしなければ、“Ａ”をひつようとする命令の処理は最後に計算された“Ａ”の値を利用できない。転送能力は、計算されたデータを必要に応じて命令パイプラインの前方の段に返送することにより上記の問題を回避する。
【００４１】
整数ユニットファイル２１に書き込まれるべき整数データは、２通りの場合に命令パイプラインに返送される。第１の場合はメモリ段１６の間に生じる。データが第８マルチプレクサ（ＭＵＸ８）６６に到達したとき、データはライン９６を介して第１１マルチプレクサ（ＭＵＸ１１）９８に転送される。第１１マルチプレクサ（ＭＵＸ１１）９８は、データがライン１００及び１０２を介して第２メモリレジスタ１０４に転送されるべきであるか否かを制御する。データが第２メモリレジスタ１０４に渡された後、データは、第７マルチプレクサ（ＭＵＸ７）６２を介して、第９マルチプレクサ（ＭＵＸ９）７２までのライン７０から始まるバイパスパスに転送される。第２メモリレジスタ１０４へのデータのロードは、第１メモリレジスタ５６へのデータのロードと同じクロックサイクルの間に行われる。第２の場合は遅延段１７の間に生じる。データが第１０マルチプレクサ（ＭＵＸ１０）７８に到達したとき、データはライン１０６を介して第１２マルチプレクサ（ＭＵＸ１２）１０８に転送される。第１２マルチプレクサ（ＭＵＸ１２）１０８はデータが第１１マルチプレクサ（ＭＵＸ１１）９８を通って第２メモリレジスタ（ＭＵＸ２）１０４まで至るバイパスパスに合流すべきか否かを制御する。
【００４２】
Ｅ．  整数乗算及び除算命令用のデータパス
本発明において、整数乗算命令及び整数除算命令の実行は整数ユニット算術論理装置５０によって行われない。その代わりに、整数型オペランドが以下の方法で浮動小数点ユニット２２の浮動小数点乗算器２４及び浮動小数点除算／平方根ユニット２５に転送される。メモリ段１６の間に、オペランドデータは第８マルチプレクサ（ＭＵＸ８）６６を介して転送され、ライン９６により第１１マルチプレクサ（ＭＵＸ１１）９８に送られる。オペランドデータは、次に、乗算命令又は除算命令のどちらが処理されているかに依存して、ライン１００を介して浮動小数点ユニット２２の適当なセクションに転送される。また、オペランドデータは、遅延段１７の間に、第１遅延レジスタ７６から第１０マルチプレクサ（ＭＵＸ１０）７８を通過し、ライン１０６を介して第１２マルチプレクサ（ＭＵＸ１２）１０８に転送される。オペランドデータは、次に、ライン１００を介して浮動小数点ユニット２２の適当なセクションに転送される。次に、浮動小数点ユニットは要求された演算を実行する。整数型結果は浮動小数点ユニットからライン１１０及び１１２を介して整数ユニットに送られる。ライン１１０は整数型結果のビット０からビット３１までを伝達し、ライン１１２は整数型結果のビット３２からビット６３までを伝達する。ビット０乃至３１は、第１４マルチプレクサ（ＭＵＸ１４）１１４及び第１５マルチプレクサ（ＭＵＸ１５）１１６を介して第１２マルチプレクサ（ＭＵＸ１２）１０８に転送される。第１２マルチプレクサ（ＭＵＸ１２）１０８から結果データは、第１１マルチプレクサ（ＭＵＸ１１）９８を通過し、ライン１００及び１０２を介して第２メモリレジスタ１０４に転送される。整数型結果の下位３２ビットは第７マルチプレクサ（ＭＵＸ７）６２を通過し、ライン７０から始まるバイパスパス内で使用され、或いは、第８マルチプレクサ（ＭＵＸ８）６６、第１遅延レジスタ７６及び第１０マルチプレクサ（ＭＵＸ１０）７８を経由して、ライン８０を介して整数ユニットレジスタファイルに出力される。整数型結果のビット３２乃至６４は、第１６マルチプレクサ（ＭＵＸ１６）１１８、第１７マルチプレクサ（ＭＵＸ１７）１２０、第１８マルチプレクサ（ＭＵＸ１８）１２２及び第１９マルチプレクサ（ＭＵＸ１９）１２４を介して転送される。第１９マルチプレクサ（ＭＵＸ１９）１２４は、整数型結果のビット３２乃至６３をライン１２６及び１２８を介して第３メモリレジスタ１３０に転送する。
【００４３】
整数乗算演算及び整数除算演算の結果の一部分は、“Ｙレジスタ”（図３には図示されない）と称されるレジスタに格納される。Ｙレジスタは、整数乗算演算又は整数除算演算からの６４ビット結果の中の上位３２ビットを保持する。Ｙレジスタは第１３マルチプレクサ（ＭＵＸ１３）１３４までのライン１３２に接続される。Ｙレジスタは、参考のため引用した“ｔｈｅ  ＳＰＡＲＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｍａｎｕａｌ，  Ｖｅｒｓｉｏｎ  ８”，  ＳＰＡＲＣ  Ｉｎｔｅｒｎａｔｉｏｎａｌ，  Ｉｎｃ．，  １９９２に詳細に説明されている。
【００４４】
Ｆ．  オペランド２個の浮動小数点命令用のデータパス
オペランド２個の浮動小数点命令には、浮動小数点加算、浮動小数点減算、浮動小数点乗算、浮動小数点平方根、整数から浮動小数点への変換、及び、浮動小数点から整数への変換のような命令が含まれる。浮動小数点ユニット２２は、実行段１５の間に浮動小数点命令を受けるマイクロプロセッサアーキテクチャ内の別個の処理装置である。しかし、浮動小数点型オペランドは、図３に示された回路によって完成される。同図には第２浮動小数点型オペランド用のパスだけが示されている。オペランド発生パスは第１浮動小数点型オペランド用の発生パスと同様である。
【００４５】
第２浮動小数点型オペランドは、実行段１５の間に浮動小数点レジスタファイル２６からフェッチされる。第２浮動小数点型オペランド用のデータの中の６４ビットまでが、ビット０乃至３１を伝達するライン１３６と、ビット３２乃至６３を伝達するライン１３８とを介して到達する。第２浮動小数点型オペランドが３２ビットシングルワードからなる場合に、使用されているレジスタのレジスタ番号に依存して、ビット０乃至３１又はビット３２乃至６３のいずれか一方が使用される。ビット０乃至３１は、第１４マルチプレクサ（ＭＵＸ１４）１１４と、第１５マルチプレクサ（ＭＵＸ１５）１１６と、第１２マルチプレクサ（ＭＵＸ１２）１０８と、第１１マルチプレクサ（ＭＵＸ１１）９８とを通過し、ライン１００を介して浮動小数点ユニット２２に転送される。或いは、第２浮動小数点型オペランドデータのビット０乃至３１は、メモリ段１６、遅延段１７、書込段１８又は浮動小数点遅延段１９の間に命令パイプラインから生ずる場合がある。第２浮動小数点型オペランドデータは、メモリ段１６の間にライン９６を介して第８マルチプレクサ（ＭＵＸ８）６から、遅延段１７の間にライン１０６を介して第１遅延レジスタ７６及び第１０マルチプレクサ（ＭＵＸ１０）７８から、書込段１８の間にライン１５６を介して第１書込レジスタ１５４から、浮動小数点遅延段１９の間にライン１６０を介して第１浮動小数点レジスタ１５６からオペランド発生パスに転送される。他方、第２浮動小数点型オペランドのビット３２乃至６３が、メモリ段１６、遅延段１７、書込段１８又は浮動小数点遅延段１９の間に命令パイプラインから生ずる場合がある。この第２浮動小数点型オペランドは、メモリ段１６の間にライン１４０を介して第１３マルチプレクサ（ＭＵＸ１３）１３４から、遅延段１７の間にライン１４４を介して第２遅延レジスタ１４２から、書込段１８の間にライン１４８を介して第２書込レジスタ１４６から、浮動小数点遅延段１９の間にライン１５２を介して第２浮動小数点レジスタ１５０からオペランド発生パスに転送される。
【００４６】
オペランド２個の浮動小数点命令の処理結果は、浮動小数点ユニット２２からライン１１０及び１１２に返される。結果の中のビット０乃至３１はライン１１０上で受けられ、ビット３２乃至６３はライン１１２上で受けられる。ビット０乃至３１は第２０マルチプレクサ（ＭＵＸ２０）１６２に転送され、浮動小数点レジスタファイル２６に書き込まれる。ビット３２乃至６３は第２１マルチプレクサ（ＭＵＸ２１）１６４に転送され、浮動小数点レジスタファイル２６に書き込まれる。
【００４７】
Ｇ．  オペランド１個の浮動小数点命令用のデータパス
オペランド１個の浮動小数点命令には、浮動小数点移動（ＦＰＭＯＶ）、浮動小数点否定（ＦＰＮＥＧ）、浮動小数点絶対値（ＦＰＡＢＳ）及び変換演算（例えば、整数から倍精度浮動小数点への変換）のような命令が含まれる。浮動小数点ユニット２２は上記命令を処理するため使用されず、第２浮動小数点型オペランドだけが単一オペランドとして使用される。
【００４８】
第２浮動小数点型オペランドは、実行段１５の間に浮動小数点レジスタファイル２６からフェッチされる。第１浮動小数点型オペランド用のデータの３２ビットが、ビット０乃至３１を伝達するライン１３６、又は、ビット３２乃至６３を伝達するライン１３８を介して到達する。３２ビットオペランドに対し二つの並列したデータパスがあることに注意する必要がある。ビット０乃至３１として指定されたデータは、第１４マルチプレクサ（ＭＵＸ１４）１１４と、第１５マルチプレクサ（ＭＵＸ１５）１１６と、第１２マルチプレクサ（ＭＵＸ１２）１０８と、第１１マルチプレクサ（ＭＵＸ１１）９８とを通過し、ライン１００を介して第２メモリレジスタ１０４に転送される。他方、ビット３２乃至６３として指定されたデータは、第１６マルチプレクサ（ＭＵＸ１６）１１８と、第１７マルチプレクサ（ＭＵＸ１７）１２０と、第１８マルチプレクサ（ＭＵＸ１８）１２２と、第１９マルチプレクサ（ＭＵＸ１９）１２４とを通過し、ライン１２６及び１２８を介して第３メモリレジスタ１３０に転送される。かくして、実行段１５の間に、第２浮動小数点型オペランドの３２ビットデータは、第２メモリレジスタ１０４又は第３メモリレジスタ１３０のいずれか一方にロードされ、両方にロードされることはない。上記メモリレジスタから、データが適当なデータパスに流れる。第２メモリレジスタ１０４がロードされた場合、データは第２２マルチプレクサ（ＭＵＸ２２）１６６を介して浮動小数点コピー装置１６８に転送される。浮動小数点コピー装置１６８は単一オペランドに関して要求された演算を行う。その結果は、メモリ段１６の間に第８マルチプレクサ（ＭＵＸ８）６から第１遅延レジスタ７６に、遅延段１７の間に第１遅延レジスタ７６から第１０マルチプレクサ（ＭＵＸ１０）７８を介して第１書込レジスタ１５４に、書込段１８の間に第１書込レジスタ１５４から第１浮動小数点遅延レジスタ１５８に、浮動小数点書込段２０の間に第１浮動小数点レジスタ１５６から第２０マルチプレクサ（ＭＵＸ２０）１６２を介して浮動小数点レジスタファイル２６に伝達される。同様に、第３メモリレジスタ１３０がロードされた場合、データは第２２マルチプレクサ（ＭＵＸ２２）１６６を介して浮動小数点コピー装置１６８に転送される。浮動小数点コピー装置１６８は単一オペランドに基づいて要求された演算を行う。その結果は、メモリ段１６の間に第１３マルチプレクサ（ＭＵＸ１３）１３４から第２遅延レジスタ１４２に、遅延段１７の間に第２遅延レジスタ１４２から第２書込レジスタ１４６に、書込段１８の間に第２書込レジスタ１４６から第２浮動小数点遅延レジスタ１５０に、浮動小数点書込段２０の間に第２浮動小数点レジスタ１５０から第２１マルチプレクサ（ＭＵＸ２１）１６４を介して浮動小数点レジスタファイル２６に伝達される。
【００４９】
Ｈ．  浮動小数点ロード命令用のデータパス
命令パイプラインによって処理される命令が浮動小数点ロード命令（即ち、データキャッシュからの浮動小数点データによる浮動小数点レジスタファイル２６内のレジスタのロード）であるとき、オペランド発生処理は固定小数点算術命令に対する処理と略同じである。アドレス及びレジスタ情報は、ライン３４及び第２オペランド用のライン（図示しない）を介して命令から得られた直後のオペランドである。
【００５０】
デコード段１４の間にオペランドが上記の如く決められる。実行段１５の間に、整数ユニット算術論理装置は、ロードされるべき浮動小数点データのデータキャッシュ内アドレスを計算する。このアドレスは図３に示されないパスを介してデータキャッシュに転送される。メモリ段１６の間に、ロード整列装置４３は、整数ユニット算術論理装置により計算されたアドレスによってアドレス指定された浮動小数点データの３２ビットのシングルワード又は浮動小数点データの６４ビットのダブルワードをライン４１を介してデータキャッシュから受容し、この浮動小数点データをライン８６及び１７０を介して転送する。第２浮動小数点データが３２ビットのシングルワードからなるならば、使用されるレジスタのレジスタ番号に依存して、ビット０乃至３１又はビット３２乃至６３のいずれか一方が使用される。浮動小数点データのビット０乃至３１は、ライン８６を介して第８マルチプレクサ（ＭＵＸ８）６６に転送される。浮動小数点データのビット３２乃至６３は、ライン１７０を介して第１３マルチプレクサ（ＭＵＸ１３）に転送される。データのビット０乃至３１は、第１遅延レジスタ７６に格納される。遅延段１７の間に、データのビット０乃至３１は、第１０マルチプレクサ（ＭＵＸ１０）７８を介して第１書込レジスタ１５４に転送される。書込段１８の間に、データのビット０乃至３１は第１浮動小数点遅延レジスタ１５８に転送される。最後に、浮動小数点書込段２０の間に、データのビット０乃至３１は第２０マルチプレクサ（ＭＵＸ２０）１６２に転送され、次いで、浮動小数点レジスタファイル２６に書き込まれる。同様に、データのビット３２乃至６３が第２遅延レジスタ１４２に格納される。遅延段１７の間に、データのビット３２乃至６３は、第２書込レジスタ１４６に転送される。書込段１８の間に、データのビット３２乃至６３は第２浮動小数点遅延レジスタ１５０に転送される。最後に、浮動小数点書込段２０の間に、データのビット３２乃至６３は第２１マルチプレクサ（ＭＵＸ２１）１６４に転送され、次いで、浮動小数点レジスタファイル２６に書き込まれる。
【００５１】
Ｉ．  浮動小数点ストア命令用のデータパス
命令パイプラインにより処理される命令が浮動小数点ストア命令であるとき（即ち、浮動小数点レジスタファイル２６のレジスタからの浮動小数点データをデータキャッシュ内のデータ格納場所に格納するとき）、オペランド発生処理は、浮動小数点算術命令の処理とほぼ同様である。従って、整数ユニット算術論理装置５０は、第１オペランド及び第２オペランドを使用してアドレスを計算する。アドレス及びレジスタ情報は、ライン３４及び第２オペランド用のライン（図示しない）を介して命令から得られた直後のオペランドである。ストアデータは命令内の第３オペランドであるが、第１４マルチプレクサ（ＭＵＸ１４）１１４と、第１６マルチプレクサ（ＭＵＸ１６）１１８と、第１５マルチプレクサ（ＭＵＸ１５）１１６と、第１７マルチプレクサ（ＭＵＸ１７０）１２０と、第１２マルチプレクサ（ＭＵＸ１２）１０８と、第１８マルチプレクサ（ＭＵＸ１８）１２２と、第１１マルチプレクサ（ＭＵＸ１１）９８と、第１９マルチプレクサ（ＭＵＸ１９）１２４等を用いる第２浮動小数点型オペランドパスのデータパス内に形成される。浮動小数点データは浮動小数点レジスタファイルから取得される。
【００５２】
デコード段１４の間にオペランドが上記の如く決められる。実行段１５の間に、整数ユニット算術論理装置は、ストアされるべき浮動小数点データのデータキャッシュ内アドレスを計算する。このアドレスは、ライン１３６及び１３８を介して浮動小数点レジスタファイル２６内の選択されたレジスタから受けられる。浮動小数点データは、３２ビットを有するシングルワード、又は、６４ビットを有するダブルワードである。浮動小数点データのビット０乃至３１は、第１４マルチプレクサ（ＭＵＸ１４）１１４と、第１５マルチプレクサ（ＭＵＸ１５）１１６と、第１２マルチプレクサ（ＭＵＸ１２）１０８と、第１１マルチプレクサ（ＭＵＸ１１）９８とを通過し、ライン１００及び１０２を介して転送され、第２メモリレジスタ１０４に格納される。浮動小数点データのビット３２乃至６３は、第１６マルチプレクサ（ＭＵＸ１６）１１８と、第１７マルチプレクサ（ＭＵＸ１７０）１２０と、第１８マルチプレクサ（ＭＵＸ１８）１２２と、第１９マルチプレクサ（ＭＵＸ１９）１２４とを通過し、ライン１２６及び１２８を介して転送され、第３メモリレジスタ１３０に格納される。メモリ段１６の間に、このデータのビット０乃至３１は、第２メモリレジスタ１０４から第７マルチプレクサ（ＭＵＸ７）６２を通過しライン７０を介してストア整列装置９０に転送される。ストア整列装置９０はロード整列装置４３の逆の動作を行う。ストア整列装置９０は、データキャッシュの要求に従って浮動小数点データを並べる。データのビット３２乃至６３は、第３メモリレジスタ１３０からライン１７２を介してストア整列装置９０に転送される。遅延段１７の間に、データのビット０乃至３１は第１ストアデータレジスタ９２に格納され、データのビット３２乃至６３は第２ストアデータレジスタ１７４に格納される。データがストアデータレジスタに格納された後、データは、データキャッシュが利用可能になるか、又は、後続のストア（及びそのデータ）が到達するまで、ストアデータレジスタ内に留まる。
【００５３】
上記の如く本発明の種々の実施例が具体的に示されているが、当業者であれば、請求項に記載されているような本発明の範囲及び精神を逸脱することなく、形式及び詳細に関して種々の変更をなし得ることがわかるであろう。
【００５４】
【発明の効果】
上記の如く、本発明によれば、データパスは命令パイプライン内の連続的な段の間でデータを通信するため整数ユニットと浮動小数点ユニットとにより共有されるので、混在する整数命令と実数命令とを処理するため整数データ及び浮動小数点データを通信する際の性能の低下、演算の複雑さ、及び、演算の遅れが回避される利点が得られる。
【図面の簡単な説明】
【図１】本発明の共有データパスを組み込むマイクロプロセッサの機能的なブロック図である。
【図２】命令パイプラインのブロック図である。
【図３】共有データパスの構成図である。
【符号の説明】
９    マイクロプロセッサ
１０    整数ユニット／浮動小数点ユニットコントローラ
１１    命令パイプライン
１２    発行段
１３    フェッチ段
１４    デコード段
１５    実行段
１６    メモリ段
１７    遅延段
１８    書込段
１９    浮動小数点遅延段
２０    浮動小数点書込段
２１    整数ユニットレジスタファイル
２２    浮動小数点ユニット
２３    浮動小数点算術論理装置
２４    浮動小数点乗算器
２５    浮動小数点除算／平方根ユニット
２６    浮動小数点レジスタファイル
２７    整数ユニット
２８    浮動小数点コントローラ
【図１】
0003607476.tif 000002
【図２】
0003607476.tif 000003
【図３】
0003607476.tif 000004