(57)【要約】      （修正有）【課題】マルチサイクル命令および複合命令をディスパッチし、実行する方法および装置を提供する。【解決手段】複合多機能マルチサイクル命令が単一の命令待ち行列バッファにロードされ、命令待ち行列バッファ内の複合多機能マルチサイクル命令を単純命令に分割してグループ化し、グループ化された命令を全てのディスパッチポート上に複製し、誤った結果を含むパイプに対する汎用レジスタの書込み制御信号を不能にする。【効果】命令復号またはディスパッチ・ユニット内で行う、またはコンパイラによって分割するのではなく、実際の実行が行われる固定小数点ユニット（ＦＸＵ）内でこれらの命令をどのようにして実行するかという点がフレキシブルになる。【選択図】図２
2004342102.tif 000002
【特許請求の範囲】
【請求項１】
同じまたは異なるタイプの命令を複数の実行ユニットにディスパッチして並列に実行するスーパースカラ・プロセッサで使用する方法であって、
複合多機能マルチサイクル実行命令を復号し、該命令を命令待ち行列バッファにロードする復号ユニットにおいて、前記複合多機能マルチサイクル実行命令を復号するステップと、
前記命令待ち行列バッファ内の該ロードされた複合多機能マルチサイクル命令を検査し、実行に備えて該命令をグループ化するステップと、
ディスパッチした命令を前記スーパースカラ・プロセッサの複数の実行パイプラインで並列に実行するために前記グループ化された複合多機能マルチサイクル命令を固定小数点実行ユニット（ＦＸＵ）にディスパッチする、ステップとを含む方法。
【請求項２】
複合多機能マルチサイクル命令を復号するステップが実行され、該命令が分割されずに単一の命令待ち行列バッファにロードされる、請求項１に記載の方法。
【請求項３】
復号するステップが、複合多機能マルチサイクル命令のそれぞれに、該命令をディスパッチおよび実行する方法を識別する２ビットを付与するステップを含む、請求項２に記載の方法。
【請求項４】
命令をグループ化するステップおよびディスパッチするステップが、次いで請求項２に記載の待ち行列中の命令を調査し、多機能またはマルチサイクル実行命令を発見したら、ＦＸＵへの単一のポートにこの命令を単独でディスパッチし、他のポートに対してはその命令テキストを複製する、請求項２に記載の方法。
【請求項５】
復号するステップが、複合多機能マルチサイクル命令のそれぞれに、該命令をディスパッチおよび実行する方法を識別する２ビットを付与するステップを含み、命令をグループ化するステップおよびディスパッチするステップが、次いで単一の命令バッファ待ち行列中の命令を調査し、多機能またはマルチサイクル実行命令を発見したら、前記発見した多機能またはマルチサイクル実行命令を単独でＦＸＵへの単一のポートにディスパッチし、他のポートに対してはその演算コード・フィールドを含むテキストを複製する、請求項２に記載の方法。
【請求項６】
命令が前記スーパースカラ・プロセッサの複数の実行パイプライン内の並列な命令であるときに、該複数の実行パイプから選択した複数からなる実行パイプのセットで実行されるように該命令がグループ化される、請求項２に記載の方法。
【請求項７】
複数のパイプラインに従ってディスパッチされる命令が分岐タイプであり、該命令がポートＲにディスパッチされ、該命令が、その命令をＦＸＵ内の複数のパイプＲおよびＸで実行しようとする場合にＯＮにセットされる制御信号ｒ＿ｍｐａｔｈ＿ｓを用いてディスパッチされる、請求項６に記載の方法。
【請求項８】
複数のパイプラインに従ってディスパッチされる命令が分岐タイプであり、該命令がディスパッチ・ポートＲにディスパッチされ、該命令が、その命令をＦＸＵ内のパイプＲ、ＸおよびＹで実行しようとする場合にＯＮにセットされる第１の制御信号ｒ＿ｐａｔｈ＿ｓおよび第２の制御信号ｓ＿ｍｐａｔｈ＿ｔを用いてディスパッチされる、請求項６に記載の方法。
【請求項９】
前記複数のパイプラインがＸ、ＹおよびＺパイプラインを含み、命令が前記スーパースカラ・プロセッサの複数の実行パイプライン内の並列な命令であるときに、複数の実行パイプＸ、ＹおよびＺから選択した複数からなる実行パイプのセットで実行されるように該命令がグループ化される、請求項２に記載の方法。
【請求項１０】
複数のパイプラインに従ってディスパッチされる命令が、分岐命令ではなく一般的なＦＸＵ命令であり、該一般的なＦＸＵ命令が、命令をＦＸＵ内のパイプＸ、ＹおよびＺで実行しようとする場合にＯＮにセットされる制御信号ｓ＿ｍｐａｔｈ＿ｔを用いてポートＳにディスパッチされる、請求項９に記載の方法。
【請求項１１】
複数のパイプラインに従ってディスパッチされる命令が、分岐命令ではなく一般的なＦＸＵ命令であり、該一般的なＦＸＵ命令が、命令をＦＸＵ内のパイプＸのみで実行しようとする場合にクリアされる制御信号ｓ＿ｍｐａｔｈ＿ｔを用いてポートＳにディスパッチされる、請求項６に記載の方法。
【請求項１２】
どのパイプを実行に使用するかを決定する制御信号によってディスパッチされた命令を検査した後で、固定小数点実行ユニット（ＦＸＵ）による実行のための特定のパイプ・セットを決定し、その後ＦＸＵが、ディスパッチされた命令の実行サイクルが最少となるようにディスパッチされた命令を実行し、決定された実行パイプ・セットにおいて該命令を並列に実行する、請求項１に記載の方法。
【請求項１３】
実行ユニットが、ＦＸＵパイプＸおよびＹを含む複数のパイプを有し、キャリー付き加算論理命令（ＡＬＣ、ＡＬＣＧ、ＡＬＣＧＲ、ＡＬＣＲ）およびボロー付き減算論理命令（ＳＬＢ、ＳＬＢＧ、ＳＬＢＧＲ、ＳＬＢＲ）を１サイクルでパイプＸおよびＹの両方で並列に実行し、
Ａ）ＦＸＵ内のパイプＸおよびＹが同じ命令について独立して機能し、
Ｂ）ＦＸＵのＸパイプが、２または３の条件コードの値に対してキャリーを「１」として命令を実行し、
Ｃ）ＦＸＵのＹパイプが、命令がディスパッチ・ポートＴに発行されたかのように、０または１の条件コードの値に対してキャリーを「０」として命令を実行し、
Ｄ）このような命令のＥＸサイクルの間に、ラッチされ既知である条件コード（ＣＣ）の値が、２または３である場合には、汎用レジスタ（ＧＰＲ）のＹパイプからの書込みを抑制するために使用され、ＣＣが０または１である場合には、ＸおよびＹパイプがＧＰＲ内の同じレジスタに書込みをしているときにＹパイプが優先されるので、何の措置も講じない、請求項１に記載の方法。
【請求項１４】
実行ユニットが、ｌｏａｄ  ｍｕｌｔｉｐｌｅ命令およびそのバリアント（ＬＭ、ＬＭＧ、ＬＭＨ）、ｓｔｏｒｅ  ｍｕｌｔｉｐｌｅ命令およびそのバリアント（ＳＴＭ、ＳＴＭＨ、ＳＴＭＧ）、ならびにｍｏｖｅ  ｃｈａｒａｃｔｅｒ（ＭＶＣ）命令の実行のために２倍の幅のデータ・フローを提供する、請求項１に記載の方法。
【請求項１５】
ディスパッチ中の際に生成される制御信号が、固定小数点実行ユニット（ＦＸＵ）による実行にどのパイプを使用するかを決定するために使用され、その後、ＦＸＵが、ディスパッチされた命令の実行サイクルが最少となるようにディスパッチされた命令を実行し、利用可能なＦＸＵ実行パイプにおいて該命令を実行する、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンピュータ・アーキテクチャに関する。特に、ＩＢＭ社または他社で使用されるＩＢＭ社製アーキテクチャとともに使用されるスーパースカラ・マイクロプロセッサにおける複合命令のマルチパイプ実行の実施に関する。
【背景技術】
【０００２】
ＩＢＭは、米国ニューヨーク州Armonkのインターナショナル・ビジネス・マシーンズ社（InternationalBusiness Machines Corporation）の登録商標である。Ｓ／３９０、Ｚ９００、ｚ９９０およびその他の製品名は、インターナショナル・ビジネス・マシーンズ社または他社の登録商標または製品名である。
【０００３】
プロセッサの効率および性能は、サイクルあたりの実行命令数であるＩＰＣに基づいて測られる。スーパースカラ・プロセッサでは、同じまたは異なるタイプの命令を、複数の実行ユニットにディスパッチし、並列に実行する。各命令ディスパッチ・ポートは、通常は１つの実行パイプに接続され、特定のタイプの命令は特定の実行ユニットでしか実行できないので、それら特定タイプの命令は常に特定のポートで発行される。各実行ユニットは独立して並列に機能し、複数の命令の間に依存関係があれば、命令のグループが形成されディスパッチされる前に検出される。通常のスーパースカラ・プロセッサでは、デコーダが命令待ち行列にフィードし、そこからサイクルごとに許容できる最大数の命令が利用可能な実行ユニットに対して発行される。これを、命令のグループ化と呼ぶ。１つのグループ内の命令の平均数はサイズと呼ばれ、プログラム内の命令レベルの並列処理（ＩＬＰ）の程度によって決まる。通常のプロセッサでは、固定小数点ユニット（ＦＸＵ）は、１実行サイクルだけで済む最も頻度の高い単純命令を処理するように設計される。代表的なものを挙げると、このような命令としては、ロード、格納、２進算術演算および論理演算がある。多実行サイクルを必要とする複合された命令の場合、命令は、多くの実行パイプに並列にディスパッチすることができる多数の単純命令に分割する（これはインテル社（Intel Corporation）の文書に記載され、ＩＢＭ社製ｐシリーズ・ワークステーションを使用するＩＢＭ社製パワー４プロセッサで実施される）。
【非特許文献１】ＩＢＭ社のエンタープライズ・システム・アーキテクチャ動作原理（EnterpriseSystems Architecture Principles of Operation）（ＳＡ２２−７２０１−０６）
【非特許文献２】ＩＢＭ社のｚアーキテクチャ動作原理（zArchitecturePrinciples of Operation）、ＳＡ２２−７８３２−００、2000年12月
【非特許文献３】IBM Journal ofResearch&Development、Vol.46(2002)、464ページ、シュワルツ（E.Schwartz）他による「ＩＢＭ  ｅサーバｚ９００プロセッサのマイクロアーキテクチャ（Themicro-architecture of the IBM eServer z900 processor）」
【発明の開示】
【発明が解決しようとする課題】
【０００４】
それでも、このような複合命令の実行では、依然として多くの実行サイクルが必要となることもある。こうした複数のサイクルのそれぞれでは、分割された命令のサブセットが実行される。命令を分割すると復号領域および復号時間が増大するので、命令の分割は、ＩＢＭ社製メインフレームＳ／３９０  ＥＳＡＭＥ命令セットなど、ＩＢＭ社のエンタープライズ・システム・アーキテクチャ動作原理（Enterprise Systems Architecture Principles of Operation）（ＳＡ２２−７２０１−０６）に記載され、ＩＢＭ社のｚアーキテクチャ動作原理（zArchitecturePrinciples of Operation）ＳＡ２２−７８３２−００、２０００年１２月、で繰り返されている複雑なアーキテクチャに適用しにくい。その他の複雑な要因は、例外の検出および報告、直列化、エラーの検出および回復である。これら列挙した複雑な要因により、分割をＳ／３９０アーキテクチャに適用すると、性能が低下し、論理領域および複雑さがかなり追加されることが分かっている。複合されたマルチサイクル実行命令に対するその他の解決策は、それらの命令を共通して実行される単一サイクル命令から隔離する１つの専用ＦＸＵパイプにそれらの命令を割り当てる、またはディスパッチすることである。パイプライン化されることもされないこともあるマルチサイクルＦＸＵパイプの論理は、これらの命令を実行するために必要なだけのサイクル繰り返すことができる。マルチサイクルＦＸＵパイプは、アウト・オブ・オーダ・プロセッサには適しているが、イン・オーダ・プロセッサではマルチサイクル命令の実行が終了するまで新たな命令をディスパッチできないので有用ではない。
【課題を解決するための手段】
【０００５】
本発明は、復号やグループ化、ディスパッチなどその他の領域に影響を及ぼすことなく性能を最大限に高める、固定小数点ユニット（ＦＸＵ）においてマルチサイクル命令または複合命令あるいはその両方である命令をディスパッチし、実行する方法および装置を記載するものである。本発明により、マルチサイクル実行命令を１つの実行ポートにディスパッチし、この命令を分割せず、かつこの命令を単一の実行パイプに制限することなく、複数の実行パイプで実行することが可能となる。ディスパッチ・ユニットは、ＦＸＵパイプの１つに命令をディスパッチするが、全ての実行パイプに対して並列にその演算コードを複製する。いくつかの制御信号を生成して、どのパイプを命令の実行に使用するかを制御する。次いで、ＦＸＵは、利用可能なＦＸＵパイプにおいてどのようにして命令を実行するかを決定する。これにより、ＦＸＵは、全てのＦＸＵ実行パイプ内の全てのハードウェア資源を、この命令の実行に利用することができるようになる。この方法は最適な性能をもたらし、例外論理あるいはエラーの検出または回復論理は、ほとんどあるいは全く複雑にならない。この提案する技術により、前述したような命令ディスパッチ・ユニット（またはＶＬＩＷの場合にはコンパイラ）内で行う代わりに、実際の実行が行われるＦＸＵ内でこれらの命令をどのようにして実行するかという点がフレキシブルになる。
【０００６】
上記その他の改善点について、以下の詳細な説明で述べる。本発明をその利点および特徴とともにより良く理解するために、以下の説明および図面を参照されたい。
【発明を実施するための最良の形態】
【０００７】
以下の詳細な説明において、例示を目的として、図面を参照しながら本発明の好ましい実施形態ならびに本発明の利点および特徴について説明する。
【０００８】
導入として、本発明の好ましい実施形態をスーパースカラ・プロセッサで使用した環境について述べる。「スーパースカラ」命令は、その命令が、他の命令とともに発行することができ、かつ固定小数点ユニット（ＦＸＵ）内で１実行サイクルしか必要としないことを意味する。図４は、本発明を実施した場合のＦＸＵのデータ・フローを示す図である。ＩＢＭ社は、「ＩＢＭ  ｅサーバｚ９００プロセッサのマイクロアーキテクチャ（The micro-architecture of the IBM eServer z900 processor）」と題するIBMJournal of Research&Development、Vol.46(2002)、464ページにE.Schwartz他により述べられているように、その従来のｚ９００製品において、ＩＢＭ社ｚアーキテクチャの動作原理（ＳＡ２２−７８３２−００）の命令の実行を行うプロセッサのマイクロアーキテクチャについて述べている（研究論文はhttp://researchweb.watson.ibm.com/journal/rd/464/schwartz/htmlで見ることができる）。この研究論文では、実行ユニット、具体的にはＦＸＵについて述べており、そのデータ・フローを同論文の図８に示している。E.Schwartz他の論文に記載のＦＸＵおよび従来のＩＢＭ社ｚ９００プロセッサは、一度に１つの命令しか実行できないシングル・スカラである。本発明を実施した図面（図４参照）に示す対象プロセッサのＦＸＵのデータ・フローは、パイプＸ、パイプＹおよびパイプＺと呼ばれる３つの固定小数点データ・フロー・パイプからなるスーパースカラ・パイプラインである。本発明の好ましい実施形態によれば、多数の命令の実行を同時にサポートするために、汎用レジスタ（ＧＰＲ）（１）およびオペランド・バッファ（２）に複数の読取りおよび書込みポートを設ける。例えば、ＧＰＲ読取りポート（１ａ）は、２ポートから４ポートに増加させてある。同様に、オペランド・バッファ（２）の読取りポート（２ｂ）も１ポートから２ポートに増加させてある。これらの読取りポートの幅は全て６４ビットである。テスト・アンダー・マスク命令を実施したデータ・フローの場合の作業レジスタ（８）に続くこの多重構造は、前記研究論文の図８に示すものとは異なる。パイプＸおよびＹのデータ・フローと研究論文のデータ・フローには、いくつかの類似点がある。パイプＸおよびＹはそれぞれ、ビット論理および挿入マクロ（３）と、２進加算器（４）と、マスク生成器（５）と、２つの作業レジスタ（８）、Ａ−ｒｅｇおよびＢ−ｒｅｇとを含む。パイプＺは、１０進加算器、２進乗算器、および１０進補助マクロ（７）を含み、これらは、専門の複合命令の実行に使用される。
【０００９】
以下の説明は、本発明の好ましい実施形態を実施したコンピュータ・システム・パイプラインに関するものである。１つの命令についての基本的なパイプライン・シーケンスを図３に示す。図示のパイプラインは、命令キャッシュ（Ｉキャッシュ）からの命令フェッチを暗黙的に示しているものと理解されたい。フェッチ後、図示のように復号ステージ（ＤｃＤ）の間に、命令は復号され、ＢレジスタおよびＸレジスタの読取りを行い、オペランド・フェッチのためのメモリ・アドレスを生成する。アドレス追加（ＡＡ）サイクル中に、ＢレジスタおよびＸレジスタの変位および内容を追加してメモリ・アドレスを形成する。データ・キャッシュ（Ｄキャッシュ）にアクセスして、命令を実施するプロセッサの実行ユニットにデータを戻す（Ｃ１ステージおよびＣ２ステージ）には、２サイクル必要である。また、Ｃ２サイクル中に、レジスタ・ファイルからレジスタのオペランドが読み取られ、実行に備えて作業レジスタに格納される。命令の実行はＥ１ステージの間に行われ、ＷＢステージで、その結果がレジスタ・ファイルに再度書き込まれ、Ｄキャッシュに格納される。命令のグループ化はＡＡサイクル中に行われ、Ｃ１サイクルと一部重なるＥＭ１サイクル中にグループが発行される。命令は３つまで並列にＦＸＵにディスパッチすることができる。ディスパッチ・ポートは、Ｒ、ＳおよびＴと呼ぶ。分岐命令はポートＲにディスパッチされ、その他の命令はポートＳおよびＴにディスパッチされる。スーパースカラ・プロセッサは、命令ディスパッチ・ポートに対応する複数の実行パイプを含む。好ましい実施形態の固定小数点ユニット（ＦＸＵ）は、３つの実行データ・フロー・パイプ（Ｘ、ＹおよびＺ）と、１つの制御パイプＲ（データ・フロー要素が関連づけられることはない）とを含む。ポートＲにディスパッチされたスーパースカラ分岐命令はＦＸＵの制御パイプＲで実行され、ポートＳおよびＴに発行されたその他のスーパースカラ命令はＦＸＵのパイプＸおよびＹで実行される。ＦＸＵのデータ・フロー・パイプＺは、２進乗算や１０進命令、２進１０進変換、１０進２進変換、データ・フォーマット命令など、マルチサイクル命令のための専用のハードウェアを含む。ディスパッチされたスーパースカラ命令のグループは、以下のような命令の組合せからなることもできる。
Ｓ１）パイプＲに単独で発行されるスーパースカラ分岐命令
Ｓ２）パイプＲおよびＳに発行される２つのスーパースカラ命令
Ｓ３）パイプＲ、ＳおよびＴに発行される３つのスーパースカラ命令
Ｓ４）パイプＳに発行されるスーパースカラ命令
Ｓ５）パイプＳおよびＴに発行される２つのスーパースカラ命令
【００１０】
マルチサイクル実行命令は、対象プロセッサに単独で発行される非スーパースカラ命令である。非スーパースカラ命令は、単独でディスパッチ・ポートＲまたはＳにディスパッチされる。
【００１１】
図１は、Ｎ個のディスパッチ・ポートおよびＮ個の実行パイプを備えたプロセッサを示す図である。多数の実行サイクルを必要とする命令は、図１のＥｘｅｃＮのように特定の実行パイプにディスパッチされるか、あるいはグループ化してまとめてディスパッチできる多数の単純命令に分割される。前述のように、専用実行パイプは、マルチサイクル命令の実行中に複数の命令をディスパッチおよび実行できるアウト・オブ・オーダ・プロセッサに最適である。一方、命令を分割すると、命令待ち行列の領域が増大し、回復および例外の扱いが複雑になり、性能が低下し、それほどの性能低下を生じることなくＺ９００の命令セットに適応することが、不可能ではないが困難になる。
【００１２】
これらの問題を克服するために、開示の方法では、マルチサイクル命令をポートのうちの１つにディスパッチするが、その演算コードを全てのディスパッチ・ポート上に複製する。ディスパッチされた各マルチサイクル命令とともに送信される追加の制御信号はほとんどない。マルチサイクル命令は単独でディスパッチされるので、ＦＸＵは、その命令パイプの全てを使用して、これらの命令の実行を単純化し、高速化することができる。この技術により、これらの命令の実行アルゴリズムを実施する際のフレキシビリティは最大限に高められる。例えば、これらの命令の実行では、全てのＧＰＲ読取り／書込みポート、全てのキャッシュ読取りおよび格納ポート、全ての２進加算器、論理ユニット、ローテータなどを同時に利用することができる。実行される命令が１つであり、かつ例外および回復の論理が実行の状態を認識しており、したがっていつ例外および回復を報告できるかも認識しているので、例外の扱いおよび回復は単純化される。これらの命令がその他の非マルチサイクル命令と同様に復号およびディスパッチされるので、この方法によって追加される領域のオーバヘッドは無視できる。唯一必要な追加の機能は、演算コードを複製すること、およびいくつかの単純な制御信号（本発明の方法を実施するプロセッサでは２つの制御信号）を生成することである。図２は、ディスパッチ・ポート０およびディスパッチ・ポート１を用いて制御信号（２１）および（２２）を付加する、このような実施態様の論理図である。使用するプロセッサがこの方法を実施するために、図５に示すように各ディスパッチ・ポートを用いて２つの制御信号を付加する。非スーパースカラ命令のディスパッチ・タイプＮ１からＮ４は、以下の通りである。
Ｎ１）ポートＲに発行されるが、パイプＲおよびＸの両方で実行される非スーパースカラ分岐命令。このタイプの命令の例としては、ループ分岐がある。パイプＳはオペランドを減少させるために使用され、パイプＲは分岐の解決に使用される。
Ｎ２）ポートＲに発行されるがパイプＲ、ＸおよびＹで実行される非スーパースカラ分岐命令。ミリエントリは、全ての実行パイプが動作に必要とされる場合の例である。
Ｎ３）ポートＳに発行されるがパイプＸ、ＹおよびＺで実行される非スーパースカラ命令。この命令には、１０進乗算や１０進除算、データ変換演算など、複雑な演算のほとんどが含まれる。
Ｎ４）ポートＳに発行され、パイプＸのみで実行される非スーパースカラ命令。この命令が非スーパースカラである理由は、構造（例えば直列化命令など）または実施態様による。例えば、ＳＳ論理命令ＮＣ、ＸＣ、ＣＬＣ、ＯＣは、複数サイクルにわたって同じ実行パイプラインを必要とする。
【００１３】
発明の直接の適用
このようにディスパッチおよび実行を実施した結果として、多数の命令に対して性能を改善することができる（実行に必要なサイクル数を減らすことができる）。この方法を用いたキャリー付き可算論理およびボロー付き減算論理の実施を示す。
【００１４】
キャリー付き加算論理（ＡＬＣ、ＡＬＣＧ、ＡＬＣＲ、ＡＬＣＧＲ）命令およびボロー付き減算論理（ＳＬＢ、ＳＬＢＧ、ＳＬＢＲ、ＳＬＢＧＲ）命令の実行は、図６の表に示す条件コード（ＣＣ）によって決まる。ＣＣによって動作が決まるので、これらの命令を単一サイクルで実行する際の難点が生じる。条件コードは、それより前の任意の命令、特にキャリー付き加算論理およびボロー付き減算論理の直前の命令によって設定することができる。図７は、プロセッサのパイプライン内のＡＬＣＲ命令（この例では図６のその他任意の命令を使用することもできる）の実行フローを示す図である。図７に示すように、グループｉはその実行ステージ（ＥＸ）の間に条件コードを設定することができ、ＡＬＣＲのＥＸステージの間に全ての制御入力がラッチされた出力となるように、ＡＬＣＲ命令はそのＣ２ステージの間に条件コードを必要とする。ＣＣ論理は実行の結果に依存するので、ＦＸＵの中で最もタイミングが重要な経路であり、したがって、プロセッサのサイクル時間遅延を増加させることなく、グループｉのＥＸサイクルの間のＣＣ出力を使用して、ＡＬＣＲのＣ２サイクル中に２進加算器へのキャリー入力を設定することはできない。以前の実施におけるＡＬＣＲ命令の実行がＣＣ依存性を解消するには、２実行サイクル必要である。
【００１５】
提案した方法に基づくこれらの命令の実施は、１実行サイクルだけで済む。これらの命令は、非スーパースカラ（Ｎ３）タイプとして扱われる。換言すれば、これらの命令はポートＳに発行され、制御信号ｓ＿ｍｐａｔｈ＿ｔが設定された状態で、ＸパイプおよびＹパイプで実行される。ＥＸステージの間に、ＦＸＵは、ＳパイプおよびＴパイプの両方でこの命令を実行する。Ｓパイプでは、２進加算器がＣＣの値を０または１と仮定してＯｐ１＋Ｏｐ２＋０を計算し、Ｔパイプでは、２進加算器がＣＣの値を２または３と仮定してＯｐ１＋Ｏｐ２＋１を計算する。ＣＣの値がラッチから検査されるＡＬＣＲのＥＸサイクル中には、誤った結果を含むパイプに対するＧＰＲ書込み制御信号が使用不能にされる。
【００１６】
本発明の好ましい実施形態について述べたが、現在ならびに将来において、当業者が頭記の特許請求の範囲に含まれる様々な改善および機能強化を行うことができることを理解されたい。頭記の特許請求の範囲は、最初に述べた本発明を適正に保護し続けるものと解釈されたい。
【００１７】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００１８】
（１）同じまたは異なるタイプの命令を複数の実行ユニットにディスパッチして並列に実行するスーパースカラ・プロセッサで使用する方法であって、
複合多機能マルチサイクル実行命令を復号し、該命令を命令待ち行列バッファにロードする復号ユニットにおいて、前記複合多機能マルチサイクル実行命令を復号するステップと、
前記命令待ち行列バッファ内の該ロードされた複合多機能マルチサイクル命令を検査し、実行に備えて該命令をグループ化するステップと、
ディスパッチした命令を前記スーパースカラ・プロセッサの複数の実行パイプラインで並列に実行するために前記グループ化された複合多機能マルチサイクル命令を固定小数点実行ユニット（ＦＸＵ）にディスパッチする、ステップとを含む方法。
（２）複合多機能マルチサイクル命令を復号するステップが実行され、該命令が分割されずに単一の命令待ち行列バッファにロードされる、上記（１）に記載の方法。
（３）復号するステップが、複合多機能マルチサイクル命令のそれぞれに、該命令をディスパッチおよび実行する方法を識別する２ビットを付与するステップを含む、上記（２）に記載の方法。
（４）命令をグループ化するステップおよびディスパッチするステップが、次いで上記（２）に記載の待ち行列中の命令を調査し、多機能またはマルチサイクル実行命令を発見したら、ＦＸＵへの単一のポートにこの命令を単独でディスパッチし、他のポートに対してはその命令テキストを複製する、上記（２）に記載の方法。
（５）復号するステップが、複合多機能マルチサイクル命令のそれぞれに、該命令をディスパッチおよび実行する方法を識別する２ビットを付与するステップを含み、命令をグループ化するステップおよびディスパッチするステップが、次いで単一の命令バッファ待ち行列中の命令を調査し、多機能またはマルチサイクル実行命令を発見したら、前記発見した多機能またはマルチサイクル実行命令を単独でＦＸＵへの単一のポートにディスパッチし、他のポートに対してはその演算コード・フィールドを含むテキストを複製する、上記（２）に記載の方法。
（６）命令が前記スーパースカラ・プロセッサの複数の実行パイプライン内の並列な命令であるときに、該複数の実行パイプから選択した複数からなる実行パイプのセットで実行されるように該命令がグループ化される、上記（２）に記載の方法。
（７）複数のパイプラインに従ってディスパッチされる命令が分岐タイプであり、該命令がポートＲにディスパッチされ、該命令が、その命令をＦＸＵ内の複数のパイプＲおよびＸで実行しようとする場合にＯＮにセットされる制御信号ｒ＿ｍｐａｔｈ＿ｓを用いてディスパッチされる、上記（６）に記載の方法。
（８）複数のパイプラインに従ってディスパッチされる命令が分岐タイプであり、該命令がディスパッチ・ポートＲにディスパッチされ、該命令が、その命令をＦＸＵ内のパイプＲ、ＸおよびＹで実行しようとする場合にＯＮにセットされる第１の制御信号ｒ＿ｐａｔｈ＿ｓおよび第２の制御信号ｓ＿ｍｐａｔｈ＿ｔを用いてディスパッチされる、上記（６）に記載の方法。
（９）前記複数のパイプラインがＸ、ＹおよびＺパイプラインを含み、命令が前記スーパースカラ・プロセッサの複数の実行パイプライン内の並列な命令であるときに、複数の実行パイプＸ、ＹおよびＺから選択した複数からなる実行パイプのセットで実行されるように該命令がグループ化される、上記（２）に記載の方法。
（１０）複数のパイプラインに従ってディスパッチされる命令が、分岐命令ではなく一般的なＦＸＵ命令であり、該一般的なＦＸＵ命令が、命令をＦＸＵ内のパイプＸ、ＹおよびＺで実行しようとする場合にＯＮにセットされる制御信号ｓ＿ｍｐａｔｈ＿ｔを用いてポートＳにディスパッチされる、上記（９）に記載の方法。
（１１）複数のパイプラインに従ってディスパッチされる命令が、分岐命令ではなく一般的なＦＸＵ命令であり、該一般的なＦＸＵ命令が、命令をＦＸＵ内のパイプＸのみで実行しようとする場合にクリアされる制御信号ｓ＿ｍｐａｔｈ＿ｔを用いてポートＳにディスパッチされる、上記（６）に記載の方法。
（１２）どのパイプを実行に使用するかを決定する制御信号によってディスパッチされた命令を検査した後で、固定小数点実行ユニット（ＦＸＵ）による実行のための特定のパイプ・セットを決定し、その後ＦＸＵが、ディスパッチされた命令の実行サイクルが最少となるようにディスパッチされた命令を実行し、決定された実行パイプ・セットにおいて該命令を並列に実行する、上記（１）に記載の方法。
（１３）実行ユニットが、ＦＸＵパイプＸおよびＹを含む複数のパイプを有し、キャリー付き加算論理命令（ＡＬＣ、ＡＬＣＧ、ＡＬＣＧＲ、ＡＬＣＲ）およびボロー付き減算論理命令（ＳＬＢ、ＳＬＢＧ、ＳＬＢＧＲ、ＳＬＢＲ）を１サイクルでパイプＸおよびＹの両方で並列に実行し、
Ａ）ＦＸＵ内のパイプＸおよびＹが同じ命令について独立して機能し、
Ｂ）ＦＸＵのＸパイプが、２または３の条件コードの値に対してキャリーを「１」として命令を実行し、
Ｃ）ＦＸＵのＹパイプが、命令がディスパッチ・ポートＴに発行されたかのように、０または１の条件コードの値に対してキャリーを「０」として命令を実行し、
Ｄ）このような命令のＥＸサイクルの間に、ラッチされ既知である条件コード（ＣＣ）の値が、２または３である場合には、汎用レジスタ（ＧＰＲ）のＹパイプからの書込みを抑制するために使用され、ＣＣが０または１である場合には、ＸおよびＹパイプがＧＰＲ内の同じレジスタに書込みをしているときにＹパイプが優先されるので、何の措置も講じない、上記（１）に記載の方法。
（１４）実行ユニットが、ｌｏａｄ  ｍｕｌｔｉｐｌｅ命令およびそのバリアント（ＬＭ、ＬＭＧ、ＬＭＨ）、ｓｔｏｒｅ  ｍｕｌｔｉｐｌｅ命令およびそのバリアント（ＳＴＭ、ＳＴＭＨ、ＳＴＭＧ）、ならびにｍｏｖｅ  ｃｈａｒａｃｔｅｒ（ＭＶＣ）命令の実行のために２倍の幅のデータ・フローを提供する、上記（１）に記載の方法。
（１５）ディスパッチ中の際に生成される制御信号が、固定小数点実行ユニット（ＦＸＵ）による実行にどのパイプを使用するかを決定するために使用され、その後、ＦＸＵが、ディスパッチされた命令の実行サイクルが最少となるようにディスパッチされた命令を実行し、利用可能なＦＸＵ実行パイプにおいて該命令を実行する、上記（１）に記載の方法。
【図面の簡単な説明】
【００１９】
【図１】Ｎ個のディスパッチ・ポートおよびＮ個の実行パイプを備えたプロセッサ・システムを示す図である。
【図２】好ましい実施形態の方法についてディスパッチ・ポートおよび実行パイプに施した修正を示す図である。
【図３】プロセッサのパイプライン・ステージを示す図である。
【図４】本発明の好ましい実施形態を実施したｚ９００プロセッサのＦＸＵのデータ・フローを示す図である。
【図５】様々なマルチサイクル命令および複合命令をディスパッチするための制御信号の論理値を示す図である。
【図６】キャリー付き加算論理命令およびボロー付き減算論理命令の実行を示す図である。
【図７】対象プロセッサのパイプラインにおける命令のフローを示す図である。
【符号の説明】
【００２０】
１  汎用レジスタ
２  オペランド・バッファ
４  ２進加算器
５  マスク生成器
８  作業レジスタ
【図１】
2004342102.tif 000003
【図２】
2004342102.tif 000004
【図３】
2004342102.tif 000005
【図４】
2004342102.tif 000006
【図５】
2004342102.tif 000007
【図６】
2004342102.tif 000008
【図７】
2004342102.tif 000009