(57)【要約】      （修正有）【課題】固定小数点ユニット（ＦＸＵ）中で、マルチサイクル命令や複雑な命令を効率よくディスパッチし実行することを可能にする。【解決手段】スーパースカラ・マイクロプロセッサ装置は、マルチサイクルの複雑な命令をディスパッチし実行することを可能にするため、いくつかの制御信号がディスパッチ・ユニット中で生成され、命令と共に固定小数点ユニット（ＦＸＵ）にディスパッチされる。複数の実行パイプは、命令ディスパッチ・ポートに対応し、実行ユニットは、３つの実行データ・フロー・パイプ（Ｘ、Ｙ、およびＺ）と１つの制御パイプを含む固定小数点ユニット（ＦＸＵ）を持ち、使用可能なＦＸＵパイプ上でこれらの命令を実行する。その結果、他の要素を複雑にすることなく、最適な性能がもたらされると共に柔軟性をもたらす。デコード／ディスパッチ・ユニット中でなく、又コンパイラによる分解によらず、ＦＸＵ中で実際の実行が行われる。【選択図】図４
2005326906.tif 000002
【特許請求の範囲】
【請求項１】
同一タイプまたは異なるタイプの命令が複数の実行ユニット中で並列にディスパッチされ実行されるスーパースカラ・プロセッサであって、
フェッチされた複雑な命令および専用マルチサイクル実行命令をデコードし、それらの命令を命令キュー・バッファにロードするデコーダ・ユニットと、
前記命令キュー・バッファ中の前記ロードされた複雑なマルチ機能マルチサイクル命令を検査し、それらの命令を実行のためにグループ化し、ディスパッチされた命令を前記スーパースカラ・プロセッサの複数の実行パイプライン中で並列に実行するために、前記グループ化された複雑なマルチ機能マルチサイクル命令を命令ディスパッチ・ポートを介して、固定小数点実行ユニット（ＦＸＵ）にディスパッチするディスパッチ・ユニットと
を備えるスーパースカラ・プロセッサ。
【請求項２】
３つの（複数の）実行パイプがあり、これらのパイプのうちの２つが、それぞれが同様な命令を並列に実行することができる同様なパイプであり、第３のパイプが、他のパイプでの命令実行と並列に複雑な命令および専用命令を実行するために提供される、請求項１に記載のスーパースカラ・プロセッサ。
【請求項３】
前記固定小数点実行ユニットが、３つの固定小数点データ・フロー・パイプを備えるスーパースカラ・パイプラインを提供し、前記ＦＸＵ（１）の複数の６４ビット幅の汎用レジスタ（ＧＰＲ）の読取りポートおよび書込みポートと、多数の命令の実行を同時にサポートするために前記命令を前記命令キュー・バッファ（２）にロードするための複数のオペランド・バッファが提供される、請求項１に記載のスーパースカラ・プロセッサ。
【請求項４】
３つの（複数の）実行パイプがあり、これらのパイプのうちの２つが、それぞれが同様な命令を並列に実行することができる同様なパイプであり、第３のパイプが、他のパイプでの命令実行と並列に複雑な命令および専用命令を実行するために提供される、請求項３に記載のスーパースカラ・プロセッサ。
【請求項５】
４つのＧＰＲ読取りポート（１ａ）、および２つのオペランド・バッファ（２）の読取りポート（２ｂ）があり、これらの読取りポートが６４ビット幅である、請求項２に記載のスーパースカラ・プロセッサ。
【請求項６】
前記３つのデータ・フロー・パイプのうちの２つが、同様なパイプであり、前記２つまたは前記３つのパイプのそれぞれが、ビット論理演算および挿入マクロ（３）と、２進加算器（４）と、マスク生成回路（５）と、２つの作業用レジスタ（８）、すなわちＡ−ｒｅｇおよびＢ−ｒｅｇとを含む、請求項５に記載のスーパースカラ・プロセッサ。
【請求項７】
前記３つのデータ・フロー・パイプのうちの第３のものが、専用命令および複雑な命令を実行するための１０進加算器、２進乗算器、および１０進支援マクロ（７）を含む、複雑な命令用の専用パイプである、請求項６に記載のスーパースカラ・プロセッサ。
【請求項８】
前記複数の実行パイプが、前記命令ディスパッチ・ポートに対応し、前記実行ユニットが、３つの実行データ・フロー・パイプ（Ｘ、Ｙ、およびＺ）と１つの制御パイプ（Ｒ）とを含む固定小数点ユニット（ＦＸＵ）である、請求項１に記載のスーパースカラ・プロセッサ。
【請求項９】
スーパースカラ・ブランチ命令が、ポートＲ上にディスパッチされ、ＦＸＵ制御パイプＲ上で実行され、他のポート（ＳおよびＴ）上に発行される他のスーパースカラ命令が、ＦＸＵのパイプＸおよびＹ上で実行される、請求項８に記載のスーパースカラ・プロセッサ。
【請求項１０】
前記パイプ（Ｚ）のうちの１つが、２進乗算、１０進命令、２進１０進変換、１０進２進変換、およびデータ・フォーマティング命令を含むマルチサイクル命令の専用ハードウェアを含む、請求項２に記載のスーパースカラ・プロセッサ。
【請求項１１】
前記命令ディスパッチ・ポートが、以下の命令の組合せ、すなわち、
Ｓ１）パイプ（Ｒ）上に単独で発行されるスーパースカラ・ブランチ命令、または
Ｓ２）２つのパイプ（ＲおよびＳ、またはＳおよびＴ）上に発行される２つのスーパースカラ命令、または
Ｓ３）３つのパイプ（Ｒ、Ｓ、およびＴ）上に発行される３つのスーパースカラ命令、または
Ｓ４）前記スーパースカラ・ブランチ命令が発行される対象のパイプとは異なるパイプ、またはパイプＳ上に発行される一般的なスーパースカラ命令
のうちの１つまたは複数のものからなるスーパースカラ命令をディスパッチする、請求項２に記載のスーパースカラ・プロセッサ。
【請求項１２】
前記マルチサイクル実行命令が、スーパースカラ・プロセッサ中で単独で発行される非スーパースカラ命令である、請求項２に記載のスーパースカラ・プロセッサ。
【請求項１３】
非スーパースカラ命令が、２つの異なる命令ディスパッチ・ポート（ＲまたはＳ）のうちの一方上に単独でディスパッチされる、請求項１２に記載のスーパースカラ・プロセッサ。
【請求項１４】
前記デコーダ・ユニットが、それぞれ複雑なマルチ機能かつマルチサイクル命令に、ディスパッチし実行する方式を識別する２ビットのマークを付ける、請求項１３に記載のスーパースカラ・プロセッサ。
【請求項１５】
前記ディスパッチ・ユニットが、マルチ機能またはマルチサイクル実行命令に出会うと前記命令をグループ化しディスパッチし、それを前記ＦＸＵへの単一ポートに単独でディスパッチするが、前記命令のテキストを他のポートに複製する、請求項１３に記載のスーパースカラ・プロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ・アーキテクチャに関し、詳細には、ＩＢＭおよびその他によってＩＢＭアーキテクチャと共に使用するための複雑な命令のマルチパイプ実行を実装するためのスーパースカラ・マイクロプロセッサに関する。
【背景技術】
【０００２】
登録商標：ＩＢＭ（登録商標）は、米国ニューヨーク州アーモンクのインターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である。Ｓ／３９０、Ｚ９００、ｚ９９０などの製品名は、インターナショナル・ビジネス・マシーンズ・コーポレーションまたは他の会社の登録商標または製品名である。
【０００３】
プロセッサの効率および性能は、ＩＰＣ、すなわちサイクル当たりに実行される命令数で測定される。スーパースカラ・プロセッサにおいては、同じタイプまたは異なるタイプの命令が、複数の実行ユニット中で並列にディスパッチされ実行される。各命令のディスパッチ・ポートは、一般に１つの実行パイプに接続され、いくつかのタイプの命令は、特定の実行ユニット中でのみ実行可能なので常に特定のポート内で発行される。これらの実行ユニットは、独立に並列に動作し、命令間の依存性があれば、それは、１グループの命令が形成されディスパッチされる前に検出される。典型的なスーパ−スカラ・プロセッサでは、デコーダから命令キューに命令が供給されるが、この命令キューから、サイクルごとに最大許容数の命令が、使用可能な実行ユニットへと発行される。これを、命令のグルーピングと呼んでいる。グループ中の平均命令数は、これをサイズと呼ぶが、プログラム内に存在するＩＬＰ（instruction-level parallelism命令レベルの並列性）の程度に依存する。典型的なプロセッサでは、ＦＸＵ（FixedPoint Unit固定小数点ユニット）は、実行に１サイクルしか要さない最も頻繁に使われる簡単な命令を処理するように設計されている。一般に、かかる命令は、ロード、ストア、二進算術演算、および論理演算の諸命令である。実行に多くのサイクルを要する複雑な命令では、（インテル・コーポレーションの論文に記載されているように、また、ＩＢＭのｐＳｅｒｉｅｓワークステーションを使用したＩＢＭのＰｏｗｅｒ４プロセッサに存在するように）命令は、多数の実行パイプに並列にディスパッチすることができる多数の簡単な命令に分解（crack）される。かかる複雑な命令の実行には、依然として多くの実行サイクルを要することがある。これらの各サイクル中に、１つのサブセットの分解された命令が実行される。命令の分解により、デコード・エリア、デコード時間が増大し、これをＩＢＭのメインフレームＳ／３９０のＥＳＡＭＥ命令セットなどの複雑なアーキテクチャに適用することが難しくなる。ＥＳＡＭＥ命令セットについては、「ＩＢＭエンタープライズ・システム・アーキテクチャの動作原理（IBM'sEnterprise Systems Architecture Principles of Operation）」（ＳＡ２２−７２０１−０６）に記載され、「ＩＢＭ  ｚＡｒｃｈｉｔｅｃｔｕｒｅの動作原理（IBM'szArchitecture Principles of Operation）」ＳＡ２２−７８３２−００、２０００年１２月に繰り返し記載されている。その他複雑なものには、例外検出および報告、直列化、エラー検出、および回復がある。以上列挙した複雑なものがあることから、Ｓ／３９０アーキテクチャに適用する場合、命令の分解により、性能が低下し、ロジック・エリアが増加し、複雑さが増大することが分かる。複雑なマルチサイクルの実行命令に代わる他の解決方法には、これらの命令を１つの専用のＦＸＵパイプに割り当てまたはディスパッチするものがあり、この専用のＦＸＵパイプでは、これらの命令が普通に実行される１サイクル命令から切り離される。パイプライン化が可能または不可能なマルチサイクルＦＸＵパイプ中のロジックでは、これらの命令を実行するのに要するサイクル数だけスピン（spin）することが許される。マルチサイクルＦＸＵパイプは、アウトオブ��ーダ（out-of-order）・プロセッサにとっては良いが、マルチサイクル命令が実行を完了しない限り、新しい命令をディスパッチすることが許されないので、インオーダ・プロセッサにとっては何の利点も追加されない。ｚ９００のＩＢＭマイクロプロセッサでは、ミリコード（millicode）を実装したｚＡｒｃｈｉｔｅｃｔｕｒｅの６４ビット命令を実行することができるが、ＩＢＭのＥＳＡＭＥおよびＩＢＭのｚＡｒｃｈｉｔｅｃｔｕｒｅをより効率的に実行することが望ましいはずである。
【非特許文献１】「ＩＢＭエンタープライズ・システム・アーキテクチャの動作原理（IBM'sEnterprise System Architecture Principles of Operation）」（ＳＡ２２−７２０１−０６）
【非特許文献２】「ＩＢＭ  ｚＡｒｃｈｉｔｅｃｔｕｒｅの動作原理（IBM'szArchitecture Principles of Operation）」ＳＡ２２−７８３２−００、２０００年１２月
【非特許文献３】イー・シュバルツ（E. Schwartz）他、「ＩＢＭ  ｅＳｅｒｖｅｒ  ｚ９００プロセッサのマイクロアーキテクチャ（Themicro-architecture of the IBM eServer z900 processor）」、ＩＢＭ研究開発ジャーナル（IBM'sJournal of Research & Development）、４６巻、２００２年、４６４頁、http://researchweb.watson.ibm.com/journal/rd/464/schwarz.html。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
本発明は、デコード、グループ化、ディスパッチなど他のエリアに影響を与えることなく性能を最大化する固定小数点ユニット（ＦＸＵ）中で、マルチサイクル命令または複雑な命令あるいはその両方をより効率よくディスパッチし実行することを可能にする、ＩＢＭの従来および新しいシステムの対称型マルチプロセッサ中で使用されるプロセッサの１つとしての対象スーパースカラ・マイクロプロセッサを用いてＩＢＭのＥＳＡＭＥおよびＩＢＭのｚＡｒｃｈｉｔｅｃｔｕｒｅを実行するためのプロセッサ装置を記載する。
【課題を解決するための手段】
【０００５】
本発明は、マルチサイクル実行命令用の複数のパイプを提供し、具体的には複数の実行パイプは、命令ディスパッチ・ポートに相当し、この実行ユニットは、３個の実行データ・フロー・パイプ（Ｘ、Ｙ、Ｚ）および１個の制御パイプ（Ｒ）を含む固定小数点ユニット（ＦＸＵ）である。本発明により、実行パイプのすべてに対して並列演算コードを複製して、１つまたは複数のそのＦＸＵパイプが実行するためのＥＳＡＭＥ命令ならびにｚＡｒｃｈｉｔｅｃｔｕｒｅ命令をディスパッチするディスパッチ・ユニットの使用が可能になる。いくつかの制御信号を生成して、どのパイプを命令の実行に使用するかを制御する。次いで、ＦＸＵは、使用可能なＦＸＵパイプ中でいかに命令を実行すべきかを決定する。これにより、ＦＸＵは、この命令を実行するためにすべてのＦＸＵ実行パイプ中ですべてのハードウェア資源を利用することができるようになる。この方法は、最適な性能をもたらし、またこの方法によって例外ロジック、エラー検出ロジック、または回復ロジックが複雑になることは、ほとんどまたはまったくない。本発明の背景技術の所で論じたように、実際の実行は、命令ディスパッチ・ユニット（またはＶＬＩＷの場合はコンパイラ）中ではなく、ＦＸＵ中で起こり、提示した技術は、ＦＸＵ中でこれらの命令をいかに実行するかについての柔軟性をもたらす。
【０００６】
以上およびその他の改良について以下の詳細な説明に述べる。本発明ならびにその利点および特徴をより良く理解するために、以下の説明と図面を参照されたい。
【発明を実施するための最良の形態】
【０００７】
本出願の詳細な説明では、本発明の好ましい実施形態を利点および特徴と共に、例を用い図面を参照して説明している。
【０００８】
まず、本発明の好ましい実施形態が使用される環境には、スーパースカラ・プロセッサがある。「スーパースカラ」命令とは、この命令を他の命令と共に発行することが可能であり、固定小数点ユニット（ＦＸＵ）内で１命令サイクルしか必要としないことを意味する。図４に、このＦＸＵの図を、本発明がどのように実装されるかを示すそのデータ・フローと共に示す。イー・シュバルツ（E. Schwartz）他、「ＩＢＭ  ｅＳｅｒｖｅｒ  ｚ９００プロセッサのマイクロアーキテクチャ（Themicro-architecture of the IBM eServer z900 processor）」、ＩＢＭ研究開発ジャーナル（IBM'sJournal of Research & Development）、４６巻、２００２年、４６４頁に記載の以前のｚ９００製品中で、ＩＢＭは、「ＩＢＭ  ｚＡｒｃｈｉｔｅｃｔｕｒｅの動作原理（IBM'szArchitecture Principles of Operation）」ＳＡ２２−７８３２−００の命令実行を実施するプロセッサのマイクロアーキテクチャについて記載している。（研究論文については、http://researchweb.watson.ibm.com/journal/rd/464/schwarz.htmlに見出すことができる）。この研究論文には、実行ユニット、特にＦＸＵが記載されており、この論文の図８には、そのデータ・フローが示されている。イー・シュバルツ他の論文中および以前のＩＢＭ  ｚ９００プロセッサ中のＦＸＵは、一時に１つの命令しか実行できないシングル・スカラである。本発明を実装する、対象プロセッサのＦＸＵデータ・フローを図面で示しているが（図４参照）、このＦＸＵデータ・フローは、パイプＸ、パイプＹ、およびパイプＺと称する３つの固定小数点データ・フロー・パイプからなるスーパースカラ・パイプラインである。本発明の好ましい実施形態によれば、ＧＰＲ（GeneralPurpose Register汎用レジスタ）（１）およびオペランド・バッファ（２）上に読取りポートおよび書込みポートを提供して、多数の命令の実行を同時にサポートしている。例えば、ＧＰＲ読取りポート（１ａ）は２ポートから４ポートに増加している。同様に、オペランド・バッファ（２）の読取りポート（２ｂ）は、１から２に増加している。これらの読取りポートはすべて、６４ビット幅である。マスク下テスト命令（testunder mask instruction）が実装されるデータ・フローに対する作業用レジスタ（８）に入る多重構造は、研究論文の図８に示される多重構造とは異なる。パイプＸおよびＹのデータ・フローと研究論文のデータ・フローには、ある類似点がある。これらのパイプはそれぞれ、ビット論理演算および挿入マクロ（３）、２進加算器（４）、マスク生成回路（５）、ならびに２つの作業用レジスタ（８）Ａ−ｒｅｇおよびＢ−ｒｅｇを含む。パイプＺは、専用命令および複雑な命令の実行に使用される、１０進加算器、２進乗算器、および１０進支援マクロ（７）を含む。
【０００９】
以下の説明は、本発明の好ましい実施形態を実装するコンピュータ・システム・パイプラインに関するものである。単一命令に対する基本的なパイプライン・シーケンスを図３に示す。図示のパイプラインは、命令キャッシュ（Ｉ−キャッシュ）からの命令フェッチを暗示的に示すものと理解すべきである。フェッチの後、図に示すように、デコード・ステージ（ＤｃＤ）中に命令がデコードされ、ＢレジスタおよびＸレジスタが読み取られてオペランド・フェッチ用のメモリ・アドレスが生成される。アドレス加算（ＡＡ）サイクル中に、変位とＢレジスタおよびＸレジスタの内容が加算されて、メモリ・アドレスが形成される。データ・キャッシュ（Ｄ−キャッシュ）にアクセスし、このデータを、命令が実施されるプロセッサの実行ユニットに転送して戻すために２サイクル（Ｃ１ステージおよびＣ２ステージ）が必要である。また、Ｃ２サイクル中に、レジスタ・オペランドがレジスタ・ファイルから読み取られ、実行に備えて作業用レジスタに格納される。命令実行が、Ｅ１ステージ中に行われ、ＷＢステージでは、結果がレジスタ・ファイルに読み戻され、またはＤ−キャッシュに格納される。命令のグループ化が、ＡＡサイクルで行われ、Ｃ１サイクルとオーバーラップするＥＭ１サイクル中にそれらのグループが発行される。ＦＸＵには並列に３命令までディスパッチすることができる。ディスパッチ・ポートは、Ｒ、Ｓ、およびＴと呼ばれる。ブランチ命令は、ポートＲにディスパッチされ、その他の命令はポートＳおよびポートＴにディスパッチされる。スーパースカラ・プロセッサは、命令ディスパッチ・ポートに相当する複数の実行パイプを含む。本発明の好ましい実施形態の固定小数点ユニット（ＦＸＵ）は、３つの実行データ・フロー・パイプ（Ｘ、Ｙ、Ｚ）および１つの制御パイプＲを含む（データ・フロー要素はそれに関連してない）。ポートＲにディスパッチされるスーパースカラ・ブランチ命令は、ＦＸＵ制御パイプＲ上で実行され、ポートＳおよびポートＴ上に発行される他のスーパースカラ命令はＦＸＵのパイプＸおよびパイプＹ上で実行される。ＦＸＵデータ・フロー・パイプＺは、２進乗算、１０進命令、２進１０進変換、１０進２進変換、データ・フォーマッティング命令などのマルチサイクル命令用の専用ハードウェアを含む。１グループのディスパッチされたスーパースカラ命令は、以下の命令の組合せからなることがある。
Ｓ１）パイプＲ上で単独で発行されるスーパースカラ・ブランチ命令
Ｓ２）パイプＲおよびパイプＳ上で発行される２つのスーパースカラ命令
Ｓ３）パイプＲ、パイプＳ、およびパイプＴ上で発行される３つのスーパースカラ命令
Ｓ４）パイプＳ上で発行されるスーパースカラ命令
Ｓ５）パイプＳおよびパイプＴ上で発行される２つのスーパースカラ命令。
【００１０】
マルチサイクル実行命令は、対象プロセッサ中で単独で発行される非スーパースカラ命令である。非スーパースカラ命令は、ディスパッチ・ポートＲまたはＳに単独でディスパッチされる。
【００１１】
図１は、Ｎ個のディスパッチ・ポートおよびＮ個の実行パイプをもつプロセッサを示す。多数の実行サイクルを要する命令は、図１のＥｘｅｃＮに示すような特定の実行パイプにディスパッチされ、あるいはグループ化し一緒にディスパッチすることができる多数の簡単な命令に分解される。以前に述べたように、専用実行パイプが、マルチサイクル命令を実行しながら命令をディスパッチし実行することが可能なアウトオブオーダ・プロセッサにとって最も適している。他方、命令を分解することにより、命令キューに面積が追加され、回復処理および例外処理が複雑になり、性能が低下することになり、命令を分解することは、性能のかなりの低下なしにＺ９００命令セットに適用することが、不可能ではないにしても困難となる。
【００１２】
これらの問題点を克服するために、開示の方法では、マルチサイクル命令をポートの１つにディスパッチするが、演算コードはすべてのディスパッチ・ポート上に複製する。いくつかの追加の制御信号をディスパッチされた各マルチサイクル命令と共に送る。マルチサイクル命令は単独でディスパッチされるので、ＦＸＵは、その実行パイプをすべて使用してこれらの命令の実行を簡略化し高速化することができる。この技術によって、これらの命令用の実行アルゴリズムを実装する際の柔軟性を最大にすることができる。例えば、これらの命令の実行では、すべてのＧＰＲ読取り／書込みポート、すべてのキャッシュ読取りおよび格納ポート、すべての２進加算器、論理ユニット、ローテータなどを同時に利用することができる。１つの命令が実行され、例外および回復ロジックには実行状態が分かっており、したがっていつ例外および回復を報告することができるかが分かっているので、例外処理および回復が簡略化される。これらの命令が、他の非マルチサイクル命令と同様にデコードされディスパッチされるので、この方法によって追加される面積オーバーヘッドは無視できる程度である。必要とされる追加の機能は、演算コードの複製、およびいくつかの簡単な制御信号（本方法を実装するプロセッサ中の２つの制御信号）の生成だけであった。図１に、制御信号（２１）および（２２）をポート０およびポート１に追加した、かかる実装形態のロジック図を示す。本方法を実装するために使用するプロセッサでは、図５に示すように２つの制御信号が各ディスパッチ・ポートに追加される。非スーパースカラ命令ディスパッチ・タイプＮ１ないしＮ４は以下のように説明される。
【００１３】
Ｎ１）ポートＲ上に発行されるが、パイプＲ上でもパイプＸ上でも実行される非スーパースカラ・ブランチ命令。このタイプの命令の例が、ループ・ブランチである。パイプＳはオペランドを減分するために使用され、パイプＲはブランチの決定のために使用される。
Ｎ２）ポートＲ上に発行されるが、パイプＲ、パイプＸ、およびパイプＹ上で実行される非スーパースカラ・ブランチ命令。ミリ入力（Milli-entry）がその一例であり、この場合、すべての実行パイプが演算に必要とされる。
Ｎ３）ポートＳ上に発行されるが、パイプＸ、パイプＹ、およびパイプＺ上で実行される非スーパースカラ命令。これらの命令には、１０進乗算演算、１０進除算演算、データ変換演算などほとんどの複雑な演算が含まれる。
Ｎ４）ポートＳ上に発行され、パイプＸ上のみで実行される非スーパースカラ命令。この命令がスーパースカラではない理由は、アーキテクチャ（例えば、直列化命令）または実装によるものである。例えば、ＳＳ論理命令ＮＣ、ＸＣ、ＣＬＣ、ＯＣでは、複数のサイクルで同じ実行パイプラインが必要とされる。
【００１４】
発明の直接適用
このディスパッチおよび実行の実装の結果、多くの命令で性能を向上（実行に必要なサイクル数を低減）することが可能である。この方法を使用した、キャリー付き加算論理命令およびボロー付き減算論理命令の実装について提示することにする。
【００１５】
キャリー（ＡＬＣ、ＡＬＣＧ、ＡＬＣＲ、ＡＬＣＧＲ）付き加算論理命令およびボロー（ＳＬＢ、ＳＬＢＧ、ＳＬＢＲ、ＳＬＢＧＲ）付き減算論理命令の実行は、図６の表に示すように、ＣＣ（Condition Code条件コード）の値に依存する。ＣＣに対する動作依存性は、これらの命令を単一サイクルで実装することに対して難問を提起する。この条件コードは、以前の命令によって、特にキャリー付き加算論理命令およびボロー付き減算論理命令の直前の命令によって設定することができる。図７に、このプロセッサ・パイプライン中のＡＬＣＲ命令についての実行フローを示す（図６中の他のどの命令もこの例で使用することができる）。図７に示すように、条件コードはその実行ステージ（ＥＸ）中にグループｉによって設定することができ、この条件コードは、そのＣ２ステージ中にＡＬＣＲ命令によって必要とされ、その結果、すべての制御入力がＡＬＣＲのＥＸステージ中にラッチ出力となる。ＣＣロジックは、実行結果に依存するので、ＦＸＵ中でタイミング上最大のクリティカル・パスとなる。したがって、プロセッサのサイクル・タイム遅延をまったく増加させずに、グループｉのＥＸサイクル中のＣＣ出力を使用して、ＡＬＣＲのＣ２サイクル中に２進加算器にキャリー入力を設定することは決してできない。以前の実装では、このＣＣ依存性を解決するために、命令ＡＬＣＲの実行に２サイクルの実行サイクルが必要である。
【００１６】
ここに提示した方法に基づいてこれらの命令を実施するには、ただ１サイクルの実行が必要となるだけである。これらの命令は、非スーパースカラ（Ｎ３）タイプとして扱われる。換言すれば、これらの命令はポートＳ上に発行され、Ｘパイプ上でも、Ｙパイプ上でも実行され、制御信号ｓ＿ｍｐａｔｈ＿ｔがセットされる。ＥＸステージ中に、ＦＸＵは、この命令をＳパイプ上でもＴパイプ上でも実行する。２進加算器は、Ｓパイプ上では、ＣＣ値が０または１であるものと想定して、Ｏｐ１＋Ｏｐ２＋０を計算するが、一方Ｔパイプ上では、ＣＣ値が２または３であるものと想定して、Ｏｐ１＋Ｏｐ２＋１を計算する。ＡＬＣＲのＥＸサイクル中に、ＣＣ値がラッチから検査され、誤った結果を含むパイプについてのＧＰＲ書込み制御信号が使用不能にされる。
【００１７】
以上、本発明の好ましい実施形態について説明してきたが、当業者なら、現在においても将来においても、添付の特許請求の範囲の範囲内に含まれる様々な改良および拡張を行うことができることが理解されよう。これらの特許請求の範囲は、最初に記載された本発明の適切な保護を維持するものと解釈すべきである。
【００１８】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００１９】
（１）同一タイプまたは異なるタイプの命令が複数の実行ユニット中で並列にディスパッチされ実行されるスーパースカラ・プロセッサであって、
フェッチされた複雑な命令および専用マルチサイクル実行命令をデコードし、それらの命令を命令キュー・バッファにロードするデコーダ・ユニットと、
前記命令キュー・バッファ中の前記ロードされた複雑なマルチ機能マルチサイクル命令を検査し、それらの命令を実行のためにグループ化し、ディスパッチされた命令を前記スーパースカラ・プロセッサの複数の実行パイプライン中で並列に実行するために、前記グループ化された複雑なマルチ機能マルチサイクル命令を命令ディスパッチ・ポートを介して、固定小数点実行ユニット（ＦＸＵ）にディスパッチするディスパッチ・ユニットと
を備えるスーパースカラ・プロセッサ。
（２）３つの（複数の）実行パイプがあり、これらのパイプのうちの２つが、それぞれが同様な命令を並列に実行することができる同様なパイプであり、第３のパイプが、他のパイプでの命令実行と並列に複雑な命令および専用命令を実行するために提供される、上記（１）に記載のスーパースカラ・プロセッサ。
（３）前記固定小数点実行ユニットが、３つの固定小数点データ・フロー・パイプを備えるスーパースカラ・パイプラインを提供し、前記ＦＸＵ（１）の複数の６４ビット幅の汎用レジスタ（ＧＰＲ）の読取りポートおよび書込みポートと、多数の命令の実行を同時にサポートするために前記命令を前記命令キュー・バッファ（２）にロードするための複数のオペランド・バッファが提供される、上記（１）に記載のスーパースカラ・プロセッサ。
（４）３つの（複数の）実行パイプがあり、これらのパイプのうちの２つが、それぞれが同様な命令を並列に実行することができる同様なパイプであり、第３のパイプが、他のパイプでの命令実行と並列に複雑な命令および専用命令を実行するために提供される、上記（３）に記載のスーパースカラ・プロセッサ。
（５）４つのＧＰＲ読取りポート（１ａ）、および２つのオペランド・バッファ（２）の読取りポート（２ｂ）があり、これらの読取りポートが６４ビット幅である、上記（２）に記載のスーパースカラ・プロセッサ。
（６）前記３つのデータ・フロー・パイプのうちの２つが、同様なパイプであり、前記２つまたは前記３つのパイプのそれぞれが、ビット論理演算および挿入マクロ（３）と、２進加算器（４）と、マスク生成回路（５）と、２つの作業用レジスタ（８）、すなわちＡ−ｒｅｇおよびＢ−ｒｅｇとを含む、上記（５）に記載のスーパースカラ・プロセッサ。
（７）前記３つのデータ・フロー・パイプのうちの第３のものが、専用命令および複雑な命令を実行するための１０進加算器、２進乗算器、および１０進支援マクロ（７）を含む、複雑な命令用の専用パイプである、上記（６）に記載のスーパースカラ・プロセッサ。
（８）前記複数の実行パイプが、前記命令ディスパッチ・ポートに対応し、前記実行ユニットが、３つの実行データ・フロー・パイプ（Ｘ、Ｙ、およびＺ）と１つの制御パイプ（Ｒ）とを含む固定小数点ユニット（ＦＸＵ）である、上記（１）に記載のスーパースカラ・プロセッサ。
（９）スーパースカラ・ブランチ命令が、ポートＲ上にディスパッチされ、ＦＸＵ制御パイプＲ上で実行され、他のポート（ＳおよびＴ）上に発行される他のスーパースカラ命令が、ＦＸＵのパイプＸおよびＹ上で実行される、上記（８）に記載のスーパースカラ・プロセッサ。
（１０）前記パイプ（Ｚ）のうちの１つが、２進乗算、１０進命令、２進１０進変換、１０進２進変換、およびデータ・フォーマティング命令を含むマルチサイクル命令の専用ハードウェアを含む、上記（２）に記載のスーパースカラ・プロセッサ。
（１１）前記命令ディスパッチ・ポートが、以下の命令の組合せ、すなわち、
Ｓ１）パイプ（Ｒ）上に単独で発行されるスーパースカラ・ブランチ命令、または
Ｓ２）２つのパイプ（ＲおよびＳ、またはＳおよびＴ）上に発行される２つのスーパースカラ命令、または
Ｓ３）３つのパイプ（Ｒ、Ｓ、およびＴ）上に発行される３つのスーパースカラ命令、または
Ｓ４）前記スーパースカラ・ブランチ命令が発行される対象のパイプとは異なるパイプ、またはパイプＳ上に発行される一般的なスーパースカラ命令
のうちの１つまたは複数のものからなるスーパースカラ命令をディスパッチする、上記（２）に記載のスーパースカラ・プロセッサ。
（１２）前記マルチサイクル実行命令が、スーパースカラ・プロセッサ中で単独で発行される非スーパースカラ命令である、上記（２）に記載のスーパースカラ・プロセッサ。
（１３）非スーパースカラ命令が、２つの異なる命令ディスパッチ・ポート（ＲまたはＳ）のうちの一方上に単独でディスパッチされる、上記（１２）に記載のスーパースカラ・プロセッサ。
（１４）前記デコーダ・ユニットが、それぞれ複雑なマルチ機能かつマルチサイクル命令に、ディスパッチし実行する方式を識別する２ビットのマークを付ける、上記（１３）に記載のスーパースカラ・プロセッサ。
（１５）前記ディスパッチ・ユニットが、マルチ機能またはマルチサイクル実行命令に出会うと前記命令をグループ化しディスパッチし、それを前記ＦＸＵへの単一ポートに単独でディスパッチするが、前記命令のテキストを他のポートに複製する、上記（１３）に記載のスーパースカラ・プロセッサ。
【図面の簡単な説明】
【００２０】
【図１】Ｎ個のディスパッチ・ポートおよびＮ個の実行パイプを有するプロセッサ・システムを示す図である。
【図２】好ましい実施形態の方法でディスパッチ・ポートおよび実行パイプに加えられる修正を示す図である。
【図３】プロセッサ・パイプライン・ステージを示す図である。
【図４】本発明による好ましい実施形態が実装される、ｚ９００プロセッサ用のＦＸＵをもつスーパースカラ・マイクロプロセッサの好ましい実施形態を示す図である。
【図５】様々なマルチサイクルの複雑な命令をディスパッチするための制御信号の論理値を示す図である。
【図６】キャリー付きの加算論理命令およびボロー付きの減算論理命令の実行を示す図である。
【図７】対象プロセッサ・パイプラインにおける命令フローを示す図である。
【符号の説明】
【００２１】
１  汎用レジスタ（ＧＰＲ）
１ａ  ＧＰＲ読取りポート
２  オペランド・バッファ
２ｂ  読取りポート
３  ビット論理演算および挿入マクロ
４  ２進加算器
５  マスク生成回路
７  １０進支援マクロ
８  作業用レジスタ
２１  制御信号
２２  制御信号
【図１】
2005326906.tif 000003
【図２】
2005326906.tif 000004
【図３】
2005326906.tif 000005
【図４】
2005326906.tif 000006
【図５】
2005326906.tif 000007
【図６】
2005326906.tif 000008
【図７】
2005326906.tif 000009