(57)【特許請求の範囲】
【請求項１】
論理条件レジスタ演算を実現する複数の論理条件レジスタ命令を通信するためのディスパッチャと、
前記ディスパッチャから前記複数の論理条件レジスタ命令の一つ以上を受け取り、１個以上の実行装置それぞれの出力に結合されて当該出力から命令オペランド値を受け取り、複数の命令識別子を受け取るための手段を含む処理装置とを備え、
前記実行装置中で実行され且つ前記複数の命令識別子に対応する複数の条件レジスタ更新命令の各々がそのオペランドとして条件レジスタ中の少なくとも一つの条件レジスタ・フィールドの条件コード・データ値を更新するものであり、
更に、前記条件レジスタからデータを受け取り、前記処理装置に結合されて前記複数の命令識別子を前記処理装置に提供する条件レジスタ・リネーム・バッファとを備えた、アウト・オブ・オーダ論理条件レジスタ処理のためのデータ処理システムであって、
前記処理装置が、
複数の記憶場所を有し、各記憶場所が少なくとも三つのフィールドを有し、当該フィールドのうち、第一のフィールドが前記ディスパッチャから受け取られた前記複数の論理条件レジスタ命令の一つを保持し、少なくとも二つの第二のフィールドが少なくとも一つの前記条件レジスタ更新命令の命令識別子を保持し且つ少なくとも一つの条件コード・データ値を受け取るためのサブフィールドを含む、命令待ち行列と、
前記条件レジスタ、前記命令待ち行列および前記実行装置それぞれの終了バスに結合され、少なくとも一つの前記条件レジスタ更新命令に対応する命令識別子を受け取る、論理装置とを含み、
前記条件レジスタ・リネーム・バッファが、
それぞれが少なくとも三つのフィールドを有し且つ少なくとも前記条件レジスタ中の条件レジスタ・フィールドの数に等しい複数のレジスタを含み、少なくとも一つの条件レジスタ・フィールドに対応する少なくとも一つのレジスタの第一のフィールドが当該少なくとも一つの条件レジスタ・フィールドの条件コード・データ値を更新する一つの前記条件レジスタ更新命令の命令識別子を保持し、第二のフィールドが当該少なくとも一つの条件レジスタ・フィールドの更新後の条件コード・データ値を保持し、第三のフィールドが前記第二のフィールドに前記更新後の条件コード・データ値が保持されるまでセット状態にある書き込み保留データ値を保持し、
前記少なくとも一つの条件レジスタ・フィールドが前記命令待ち行列中の一つの記憶場所に記憶されている一つの前記論理条件レジスタ命令のオペランドに対応することを検出する前記論理装置に応答して、前記少なくとも一つのレジスタの前記第一のフィールドが前記一つの記憶場所の前記第二のフィールドのうち命令識別子を保持するための前記サブフィールドに結合され、
前記少なくとも一つの条件レジスタ・フィールドが前記一つの記憶場所に記憶されている一つの前記論理条件レジスタ命令のオペランドに対応し且つ前記少なくとも一つのレジスタの前記第三のフィールドに書き込み保留データ値がセットされていないことを検出する前記論理装置に応答して、当該レジスタの第二のフィールドが前記一つの記憶場所の前記第二のフィールドのうち条件コード・データ値を受け取るための前記サブフィールドに結合され、
前記少なくとも一つの条件レジスタ・フィールドが前記一つの記憶場所に記憶されている一つの前記論理条件レジスタ命令のオペランドに対応し且つ前記少なくとも一つのレジスタの前記第三のフィールドに書き込み保留データ値がセットされていることを検出する前記論理装置に応答して、前記実行装置それぞれの前記終了バスがスヌープされ、前記一つの記憶場所の前記第二のフィールドに記憶された前記命令識別子の１つ以上に対応する命令識別子が前記終了バスに出力されるとき、前記終了バスからのデータ有効信号に応答して、前記出力された命令識別子それぞれに対応する更新後の条件コード・データ値が前記終了バスから取得される、前記データ処理システム。
【請求項２】
アウト・オブ・オーダ論理条件レジスタ処理の方法であって、
（ａ）少なくとも一つの条件レジスタ・フィールドの条件コード・データ値を更新する少なくとも一つの条件レジスタ更新命令が１個以上の実行装置にディスパッチされるとき、前記条件レジスタ更新命令の命令識別子を、それぞれが少なくとも三つのフィールドを有する複数のレジスタから構成された条件レジスタ・リネーム・バッファのうち、前記少なくとも一つの条件レジスタ・フィールドに対応する少なくとも一つのレジスタの第一のフィールドに記憶し、前記条件レジスタ更新命令の実行が終了して前記少なくとも一つの条件レジスタ・フィールドの更新後の条件コード・データ値が前記少なくとも一つのレジスタの第二のフィールドに記憶されるまで、前記少なくとも一つのレジスタの第三のフィールドに書き込み保留データ値をセットするステップと、
（ｂ）少なくとも一つの論理条件レジスタ命令が処理装置にディスパッチされるとき、前記論理条件レジスタ命令を、それぞれが複数のフィールドを含む一つ以上の記憶場所を有する命令待ち行列中の一つの記憶場所の第一のフィールドに記憶するステップと、
（ｃ）前記少なくとも一つの条件レジスタ・フィールドが前記論理条件レジスタ命令のオペランドに対応するならば、前記少なくとも一つのレジスタの前記第一のフィールドから前記命令識別子を取得し、当該命令識別子を前記一つの記憶場所の少なくとも一つの第二のフィールドに記憶するステップと、
（ｄ）前記少なくとも一つの条件レジスタ・フィールドが前記論理条件レジスタ命令のオペランドに対応し且つ前記少なくとも一つのレジスタの前記第三のフィールドに前記書き込み保留データ値がセットされていなければ、当該少なくとも一つのレジスタの前記第二のフィールドから前記論理条件レジスタ命令のオペランドに対応する前記更新後の条件コード・データ値を取得するステップと、
（ｅ）前記少なくとも一つの条件レジスタ・フィールドが前記論理条件レジスタ命令のオペランドに対応し且つ前記少なくとも一つのレジスタの前記第三のフィールドに前記書き込み保留データ値がセットされているならば、前記実行装置それぞれに関連する終了バスをスヌープするステップと、
（ｆ）前記一つの記憶場所の前記第二のフィールドに記憶された前記命令識別子の１つ以上に対応する命令識別子が前記終了バスに出力されるならば、前記終了バスからのデータ有効信号に応答して、前記出力された命令識別子それぞれに対応する更新後の条件コード・データ値を前記終了バスから取得するステップとを含む、前記方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般にデータ処理システムに関し、特に、アウト・オブ・オーダ実行が可能なデータ処理システムに関する。
【０００２】
【従来の技術】
コンピュータが発展してより多数の命令をより高速で実行するようになるにつれ、このプロセスを最適化するために多くのタイプのアーキテクチャが開発されてきた。たとえば、縮小命令セット・コンピュータ（ＲＩＳＣ）装置は、そのような命令を実行する際により少ない命令をより高い並列性で使用して、従来のデータ処理システムによって提供されるよりも迅速に計算結果を利用できるようにする。ますます並列的な命令実行を提供することに加え、データ処理システムの中には、プロセッサ性能を高めるため、アウト・オブ・オーダ命令実行を実現するものもある。アウト・オブ・オーダ命令実行は、データ依存なしでディスパッチされた命令を、命令ストリーム中の、解決されないデータ依存を有する先の命令よりも前に実行することを動的に許すことにより、プロセッサ性能を高める。データ処理システムによっては、命令がリネームされ、リオーダ・バッファとも呼ばれる命令順序付けテーブルが、命令完了時で命令実行を順序付けしなおすことにより、アウト・オブ・オーダ実行を容易にする。
【０００３】
リオーダ・バッファ装置はまた、投機的な命令実行を可能にするためにも使用される。したがって、投機的な命令実行をサポートするデータ処理システムは、比較的少ないハードウェアの追加でアウト・オブ・オーダ実行に適応させることができる。この追加ハードウェアの一部は、命令を発すべき時期および順序を決定するのに使用される論理を含む。命令を発すべき時期を決定するためには、パイプラインが命令実行状態にある場合の依存関係および命令を審査しなければならないため、そのような発令論理はきわめて複雑になる。発令論理が正しく設計されていないならば、そのような発令論理がデータ処理システムにとってのクリティカル・パスになり、命令実行の頻度を制限して、アウト・オブ・オーダ発令によって達成されうる性能ゲインをなくすおそれがある。
【０００４】
多くの従来技術のシステムによって実現されるアウト・オブ・オーダ命令実行は、データ依存なしでディスパッチされた命令を、命令ストリーム中の、解決されないデータ依存を有する先の命令よりも前に実行することを動的に許すことにより、プロセッサ性能を高める。アーキテクチャに組み込まれている機構（アーキテクチャ機構）、たとえばソフトウェアによってアクセス可能なレジスタ（アーキテクチャ・レジスタ）の選択されたビットをリネームするレジスタ・ファイル・リネームならびに命令順序付けテーブル（リオーダ・バッファ）が、命令完了時で命令実行を順序付けしなおすことにより、アウト・オブ・オーダ実行を容易にする。そのような構造の詳細については、Ｒ．  Ｍ．  Ｔｏｍａｓｕｌｏによる「Ａｎ  Ｅｆｆｉｃｉｅｎｔ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｅｘｐｌｏｉｔｉｎｇ  Ｍｕｌｉｔｉｐｌｅ  Ａｒｉｔｈｍｅｔｉｃ  Ｕｎｉｔｓ」（ＩＢＭ  ＪＯＵＲＮＡＬ，  Ｊａｎ．  １９６７，  ｐｐ．  ２５−３３に発表）を参照すること。これらの装置はまた、投機的な命令実行を可能にするためにも使用されることが注目されよう。したがって、投機的な命令実行をサポートするシステム・アーキテクチャは、比較的少ないハードウェアおよびわずかなオーバーヘッドの追加でアウト・オブ・オーダ実行に適応させることができる。したがって、レジスタ・ファイル・リネームは、投機的命令実行アーキテクチャを変更せずに、アウト・オブ・オーダ実行をサポートすることができる。
【０００５】
しかし、アーキテクチャ・レジスタを更新または使用する命令は、そのようなレジスタを１個しか含まないプロセッサ中では一度に一つずつ実行しなければならない。これらの場合、データ依存は、更新する命令が完了し、アーキテクチャ・レジスタが有効になってはじめて解決することができる。条件レジスタ（ＣＲ）の内容を使用または更新する論理演算がそのような命令を代表する。ＣＲは、プロセッサ演算に関して報告するデータ値、たとえば整数実行条件、浮動小数点実行条件およびユーザ定義条件値を含む。したがって、ＣＲを更新または使用する命令が二つ以上あるとき、それらの命令は、ソフトウェア・プログラムに従う順序で実行されなければならず、プロセッサ演算にボトルネックを起こしかねない。たとえば、ソース・コード中の複雑な「ＩＦ」ステートメントは、多数の条件レジスタ論理命令にコンパイルすることができる。従来技術によると、これらはすべてアーキテクチャ・レジスタとしての共通のＣＲに対して動作するため、直列化されなければならない。
【０００６】
【発明が解決しようとする課題】
したがって、当該技術には、ＣＲを更新または使用しなければならない各命令をアウト・オブ・オーダで実行することを許し、それにより、命令実行の並列性およびプロセッサ性能を高めるリネーム装置および方法の必要性がある。
【０００７】
【課題を解決するための手段】
前述した必要性は本発明によって対処される。したがって、第一の形態で、複数の命令を通信するための入力回路を含むデータ処理システムが提供される。処理装置が、複数の命令の一つ以上に応答して、データ値に対して論理演算を実行する。処理装置は、論理演算オペランドを更新する命令を実行する１個以上の実行装置の出力に結合されている。処理装置はまた、オペランドを更新する命令に対応する命令識別子（ＩＩＤ）を提供するデータ記憶装置に結合されている。
【０００９】
さらに、第二の形態で、非直列化論理条件レジスタ処理の方法が提供される。この方法は、第一の条件レジスタ命令を、第一のデータ記憶装置中のデータ記憶場所の第一の部分に記憶するステップを含む。第二の条件レジスタ命令が、命令のオペランドに対応する条件レジスタ・フィールドを更新するならば、対応する命令識別子（ＩＩＤ）がデータ記憶場所の第二の部分に記憶される。
【００１０】
これらおよび他の特徴および利点は、以下の詳細な説明を添付図面と併せて参照することによってより理解されよう。図面は、本発明の唯一の形態を表すものではないことに注意されたい。
【００１１】
【発明の実施の形態】
本発明は、ＣＲを更新または使用しなければならない論理命令が二つ以上ある場合のアウト・オブ・オーダ整数装置命令実行をサポートするＣＲリネーム機構を提供する。本発明は、ＣＲを更新または使用しなければならない論理命令が、ＣＲを更新するすべての先の演算が完了するのを待たずに実行することを可能にする。
【００１２】
以下、本発明の動作を詳細に説明する。しかし、それを論じる前に、本発明の要素の接続状態を記載する。
【００１３】
以下の記載では、多くの具体的な詳細、たとえば特定の語もしくはバイト長などを記して本発明の徹底的な理解を提供する。しかし、当業者であれば、本発明をそのような具体的な詳細なしで実施しうることが明白であろう。他の場合には、不必要な詳細によって本発明を理解しにくくすることを避けるため、周知の回路はブロック図形態で示す。大部分には、タイミングの考察などに関する詳細は、そのような詳細が本発明の完全な理解を得るのに不要であり、当業者の知識の範囲内であるため、省略した。ここで、図面を参照するが、図中、図示する要素は必ずしも縮尺どおりではなく、また、いくつかの図面を通じて同様な要素を同じ参照番号によって指定する。
【００１４】
まず図１を参照すると、本発明に使用することができるデータ処理システム１００の例が示されている。このシステムは、中央処理装置（ＣＰＵ）１１０、たとえば、「Ｔｈｅ  ＰｏｗｅｒＰＣ  Ａｒｃｈｉｔｅｃｔｕｒｅ：  Ａ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  ｆｏｒ  ａ  Ｎｅｗ  Ｆａｍｉｌｙ  ｏｆ  Ｒｉｓｋ  （ＲＩＳＣ）  Ｐｒｏｃｅｓｓｏｒｓ」（第二版、１９９４、Ｃａｔｈｙ  Ｍａｙら編）に準拠するＰｏｗｅｒＰＣマイクロプロセッサ（ＰｏｗｅｒＰＣはＩＢＭ社の商標である）を有している。ＰｏｗｅｒＰＣマイクロプロセッサのより具体的な実現は、「ＰｏｗｅｒＰＣ  ６０４  Ｒｉｓｋ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｕｓｅｒ’ｓ  Ｍａｎｕａｌ」（１９９４、ＩＢＭ社）に記載されている。本発明のＣＲリネーム機構は、このＣＰＵ１１０に含まれる。ＣＰＵ１１０は、システム・バス１１２によって種々の他の構成部品に結合されている。読み取り専用メモリ（ＲＯＭ）１１６がシステム・バス１１２に結合され、データ処理システム１００の特定の基本機能を制御する基本入出力システム（ＢＩＯＳ）を含む。また、ランダム・アクセス・メモリ（ＲＡＭ）１１４、入出力アダプタ１１８および通信アダプタ１３４がシステム・バス１１２に結合されている。入出力アダプタ１１８は、ディスク記憶装置１２０と通信する小型コンピュータ・システム・インタフェース（ＳＣＳＩ）アダプタであってもよい。通信アダプタ１３４は、バス１１２を外部ネットワークと接続して、データ処理システムが他の同様なシステムと通信することを可能にする。また、入出力装置がユーザ・インタフェース・アダプタ１２２およびディスプレイ・アダプタ１３６を介してシステム・バス１１２に接続されている。キーボード１２４、トラック・ボール１３２、マウス１２６およびスピーカ１２８が、すべてユーザ・インタフェース・アダプタ１２２を介してバス１１２に接続されている。ディスプレイ・モニタ１３８がディスプレイ・アダプタ１３６によってシステム・バス１１２に接続されている。これに関して、ユーザは、キーボート１２４、トラック・ボール１３２またはマウス１２６を介してシステムに入力し、スピーカ１２８およびディスプレイ１３８を介してシステムから出力を受けることができる。さらには、オペレーティング・システム、たとえばＡＩＸ（ＡＩＸはＩＢＭ社の商標である）を使用して、図１に示す種々のコンポーネントの機能を協調させることができる。
【００１５】
図２は、ＣＰＵ１１０の一部をより詳細に示す。ＣＰＵ１１０のこの部分は、命令キャッシュ（Ｉキャッシュ）２０２、ディスパッチ装置２０４、分岐／システム処理装置２０５、固定小数点実行装置（ＦＸＵ）２０６、ロード／ストア装置２０８、浮動小数点装置（ＦＰＵ）２１０、データ・キャッシュ（Ｄキャッシュ）２１２およびバス・インタフェース装置（ＢＩＵ）２１４を含む。分岐／システム処理装置２０５はまた、条件レジスタ（ＣＲ）２０７を含む。Ｉキャッシュ２０２はディスパッチ装置２０４に結合されて、命令および制御情報を通信する。ディスパッチ装置２０４は、分岐／システム処理装置２０５、ＦＸＵ２０６、ロード／ストア装置２０８およびＦＰＵ２１０それぞれに結合されて、複数のディスパッチされた命令を提供する。Ｉキャッシュ２０２はＢＩＵ２１４に結合されて、データおよび制御情報を通信する。ＦＸＵ２０６はロード／ストア装置２０８に結合されて、ロード・データ値、ストア・データ値および転送データ値を通信する。ロード／ストア装置２０８はＦＰＵ２１０に結合されて、ストア・データ値およびロード・データ値を通信する。ロード／ストア装置２０８はまた、Ｄキャッシュ２１２にも結合されて、ロード／ストア要求信号、複数のデータ値およびアドレス値を通信する。Ｄキャッシュ２１２はバス・インタフェース装置２１４に結合されて、データ入力信号、データ出力信号および制御信号を通信する。
【００１６】
図３〜５は、本発明の原理によるＣＲリネーム機構３００を示す。ＣＲリネーム機構３００は、ＣＰＵ１１０中の分岐／システム処理装置２０５に組み込まれている。ディスパッチ装置２０４により、分岐／システム処理装置２０５向けの命令がＩキャッシュ２０２から検索され、分岐待ち行列３０１にロードされる。分岐待ち行列３０１は、命令データ値を含む命令スタック部３０２を含む。分岐待ち行列３０１は、深さが所定の値Ｍである先入れ先出し（ＦＩＦＯ）構造であってもよい。命令スタック３０２中の各エントリは、機械命令データ値を普通は２進形態で含む。各命令は、ディスパッチ装置２０４によって割り当てられ、アウト・オブ・オーダ命令を順序付けしなおすために完了装置（図示せず）によって使用される命令識別子（ＩＩＤ）部を含む。アーキテクチャ・レジスタは、更新する命令の完了と同時に更新される。分岐／システム処理装置２０５向けの命令は、分岐命令と、条件レジスタ２０７中のデータに対して論理演算を実行する命令とを含む。
【００１７】
条件レジスタ２０７中のデータ値に対して論理演算を実行する命令を、条件レジスタ論理（ＬＣＲ）命令と呼ぶ。本発明の原理を組み入れたデータ処理システムの実施態様では、ＬＣＲ命令は、三つのオペランド、すなわち、ここではＢＡおよびＢＢと指定する１対のソース・オペランドと、宛先オペランドＢＴとを要する。これらの記号それぞれは、条件レジスタ２０７中の対応するフィールド３０３ａ〜３０３ｃを指す。条件レジスタ２０７は、数がＰである複数のフィールドを含むことができる。しかし、代替態様では、ＬＣＲ命令は、所定の数Ｍの複数のソース・オペランドと、第二の所定の数Ｎの宛先オペランドを組み入れてもよいことが当業者によって理解されるであろう。ディスパッチ装置２０４が、条件レジスタ２０７中のデータを更新する命令を実行装置（ＸＵ）３０４に発するならば、その命令の対応するＩＩＤが条件レジスタ・リネーム・バッファ３０５に送られる。条件レジスタ・リネーム・バッファ３０５は、複数のレジスタ３０６を含むことができる。複数のレジスタ３０６は、条件レジスタ２０７中のデータ・フィールドの数に等しい数Ｐのレジスタを含むことができる。このような実施態様では、各レジスタ３０６は、条件レジスタ２０７中のデータ・フィールド３０３に対応する。リネーム・バッファ３０５中の各レジスタ３０６はさらに、複数のデータ・フィールド３０７を含む。第一のデータ・フィールド３０７ａは、条件レジスタ２０７のフィールド３０３中のデータ値を更新する命令のＩＩＤを含む。各データ・フィールド３０３はレジスタ３０６に対応し、更新する命令のＩＩＤが、更新されるフィールド３０３に対応するレジスタ３０６中のフィールド３０７ａにロードされる。対応するフィールド３０３中の現在のデータ値はレジスタ３０６のフィールド３０７ｂにロードされる。書き込み保留のデータ値もまた、それぞれのレジスタ３０６のフィールド３０７ｃにセットされる。フィールド３０７ｃ中の書き込み保留データ値は１ビット幅であってもよい。
【００１８】
ＬＣＲ命令は、レジスタ３０６のフィールド３０７ａに記憶されたＩＩＤを使用して、条件レジスタ２０７中のデータ依存を解決する。ＬＣＲ命令がディスパッチ装置２０４によって発行され、分岐待ち行列３０１にロードされるとき、一つ以上のオペランドＢＡ、ＢＢまたはＢＴを更新する、ＸＵ３０４で保留中の命令のＩＩＤが、それら３種のオペランドそれぞれに対応するフィールド３０８ａ〜３０８ｃにロードされる。ＬＣＲ命令データ値そのものは、命令スタック３０２の同じ構成要素のフィールド３０９にロードされる。ＬＣＲ命令３０９は、実行すべき演算を分岐／システム論理３１０に知らせ、分岐／システム論理３１０は適時にその命令を実行する。
【００１９】
命令が実行されるにつれ、後続する命令が命令スタック３０２を下に移動する。ＬＣＲ命令３０９中の命令データ値およびフィールド３０８ａ〜３０８ｃ中のＩＩＤがいっしょに命令スタック３０２を下に移動する。ＬＣＲ命令がスタックの底に達すると、それは実行の準備ができている。しかし、すべてのデータ依存が解決されないうちは、命令は実行することができない。ＬＣＲ命令は、そのオペランド・フィールド３０３中の有効なデータが利用できるようになるまで待たなければならない。
【００２０】
分岐／システム処理装置２０５は、実行装置終了バスをスヌープすることにより、実行を待っているＬＣＲ命令中のデータ依存を解決する。終了バスは、ＸＵ、たとえばＸＵ３０４からデータを伝送する。データは、条件コード、妥当性ビット、ＩＩＤおよび例外を含む。ＸＵ３０４で実行中の命令による、条件レジスタ２０７中のフィールド３０３への書き込みが保留中であるならば、次に実行するＬＣＲ命令は、対応するオペランド・フィールド３０３ａ〜３０３ｃ中で有効なデータが利用できるようになるまで待たなければならない。換言するならば、従来技術によると、次に実行されるＬＣＲ命令は、ＸＵ３０４中の命令が完了し、条件レジスタ２０７中のそれぞれのオペランド・フィールド３０３ａ〜３０３ｃがそれによって更新されるまで待たなければならない。
【００２１】
このボトルネックを緩和するため、本発明の原理による分岐／システム処理装置２０５では、分岐／システム論理３１０がＸＵ３０４の終了バスをスヌープする。次に実行するＬＣＲ命令が、オペランドＢＡ、ＢＢおよびＢＴに対する依存関係をそれぞれ反映する、フィールド３０８ａ〜３０８ｃに含まれるＩＩＤを介してそのオペランド依存を分岐／システム論理３１０に知らせる。これらのＩＩＤは、オペランド値を更新する命令の識別子である。分岐／システム論理３１０は、ＩＩＤを使用して、ＸＵ３０４で実行を終了しようとしている対応する命令を求めてスヌープする。フィールド３０８ａ〜３０８ｃ中の一つ以上のＩＩＤに対応する命令のＩＩＤが終了ＩＩＤライン３１１上に出現すると、分岐／システム論理３１０は、対応する命令が終了しようとしており、オペランド値が終了条件コード・ライン３１２上で利用できるようになることを知る。条件コード・ライン３１２上のオペランド値は、ＸＵ３０４が終了有効ライン３１３上に妥当性データ値をセットすると有効になる。終了条件コードは、フィールド３０８ａ〜３０８ｃのフィールド３１４ａ〜３１４ｃにそれぞれ記憶される。こうしてオペランド・データ値がすべて解決されると、命令スタック３０２の底にあるＬＣＲ命令３０９は、ＸＵ３０４で実行中の命令が完了するのを待つことなく、実行することができる。このようにして、ＬＣＲ命令は、本発明の原理にしたがって、分岐／システム処理装置２０５によって非直列化される。
【００２２】
分岐／システム論理３１０はまた、条件レジスタ２０７を更新する命令のＩＩＤの、フィールド３０８ａ〜３０８ｃへの記憶を制御する。ＬＣＲ命令がディスパッチ装置２０４によって分岐待ち行列３０１にディスパッチされ、命令スタック３０２の一番上のＬＣＲ命令３０９としてロードされるとき、分岐／システム論理３１０は、命令オペランドに対応する条件レジスタ２０７中のフィールド３０３を検出する。そして、分岐／システム論理３１０は制御信号をマルチプレクサ（ＭＵＸ）３１５に送る。ＭＵＸ３１５は、条件レジスタ・リネーム・バッファ３０５中の、条件レジスタ２０７のフィールドを更新する保留中の命令に対応するＩＩＤ３０７ａのそれぞれを入力として受ける。制御信号に応答して、ＭＵＸ３１５は、各ＸＵ３０４中の、ＬＣＲ命令オペランドＢＡ、ＢＢおよびＢＴフィールド３０３ａ〜３０３ｃをそれぞれ更新する保留中の命令のＩＩＤを選択する。そして、これらは、分岐待ち行列３０１中のフィールド３０８ａ〜３０８ｃにロードされ、前記のように、命令スタック３０２中の命令が実行されるにつれ、ＬＣＲ命令３０９とともにスタックを下に移動する。
【００２３】
オペランドＢＡ、ＢＢおよびＢＴを更新するすべての命令が完了すると、条件レジスタ２０７中の対応するフィールド３０３ａ〜３０３ｃが有効なデータを有する。この場合、命令が終了すると、条件レジスタ２０７のフィールド３０３ａ〜３０３ｃに対応する、フィールド３０７ｃ中の書き込み保留データ値がクリアされる。そして、分岐／システム論理３１０が条件レジスタ２０７のフィールド３０３ａ〜３０３ｃのオペランド値を使用してＬＣＲ命令を実行する。
【００２４】
次に、本発明の原理によるアウト・オブ・オーダ論理条件レジスタ命令処理方法を流れ図で示す図６を参照する。ステップ４００で、ＬＣＲ命令がディスパッチ装置２０４によってディスパッチされ、ステップ４０１で、分岐待ち行列３０１にロードされる。
【００２５】
ステップ４０２で、書き込み保留データ値がフィールド３０７ｃにセットされていないならば、条件レジスタ・フィールド３０３それぞれに対するフィールド３０７ｂ中の条件レジスタ値は有効であり、ステップ４０３で、次に実行するＬＣＲ命令によって要求されるデータ値が条件レジスタ・リネーム・バッファ３０５から読み出される。そして、ステップ４０４でＬＣＲ命令が実行され、ステップ４０５で、リネーム・バッファ３０５が条件レジスタ２０７にマッピングされる。
【００２６】
しかし、ステップ４０２で、一つ以上のフィールド３０７ｃで書き込み保留データ値がセットされているならば、ＸＵ３０４で保留中の命令がフィールド３０７ｂ中の条件レジスタ・データを無効にする。そして、ステップ４０６で、セットされた書き込み保留データ値を有するフィールド３０７ｃに対応するフィールド３０７ａ中のＩＩＤがフィールド３０８にロードされる。ＩＩＤは、保留中の命令によって更新される条件レジスタ２０７中のオペランド・フィールド３０３ａ〜３０３ｃに対応するフィールド３０８ａ〜３０８ｃにロードされる。分岐／システム論理３１０およびＭＵＸ３１５が、上述したように、フィールド３０８へのＩＩＤの書き込みを実施する。
【００２７】
ステップ４０７で、ＸＵ３０４の終了バスが、ステップ４０６で分岐待ち行列３０１にロードされたＩＩＤに対応する終了中の命令のＩＩＤを求めてスヌープされる。ステップ４０８で、スヌープは、フィールド３０８に記憶されたＩＩＤに対応する求められる命令すべてが終了するまで継続する。そして、ステップ４０９で、対応するＬＣＲ命令オペランドの条件レジスタ・データ（条件コード）を終了バスから取得する。すると、次に実行するＬＣＲ命令は、その必要なオペランド値を有することになり、ステップ４１０で実行される。ステップ４１１で、条件レジスタ２０７がリネーム・バッファ３０５にマッピングされ、それにより、条件レジスタ・リネーム・バッファ３０５中のフィールド３０７ｂは、ＬＣＲ命令の演算によって更新された条件レジスタ・データ値を含む。
【００２８】
本発明およびその利点を詳細に記載したが、請求の範囲によって定義する本発明の真髄および範囲を逸することなく、種々の変更、代替および修正を本発明に加えられることが理解されよう。
【図面の簡単な説明】
【図１】本発明の一つの実施態様のデータ処理システムを表すブロック図である。
【図２】本発明の実施態様の中央処理装置を表すブロック図である。
【図３】図４と図５との紙面上の位置関係を示す図である。
【図４】本発明の実施態様にしたがって実現されるアウト・オブ・オーダＣＲリネーム機構を図５とともに示すブロック図である。
【図５】本発明の実施態様にしたがって実現されるアウト・オブ・オーダＣＲリネーム機構を図４とともに示すブロック図である。
【図６】本発明の実施態様のＣＲ更新実行方法を示す流れ図である。
【符号の説明】
１００  データ処理システム
１１０  ＣＰＵ
２０２  命令キャッシュ
２０４  ディスパッチ装置
２０５  分岐／システム処理装置
２０６  固定小数点実行装置
２０７  条件レジスタ
２０８  ロード／ストア装置
２１０  浮動小数点装置
２１２  データ・キャッシュ
２１４  バス・インタフェース装置
３００  ＣＲリネーム機構
３１０  分岐／システム論理
【図１】
0003600467.tif 000002
【図２】
0003600467.tif 000003
【図３】
0003600467.tif 000004
【図４】
0003600467.tif 000005
【図５】
0003600467.tif 000006
【図６】
0003600467.tif 000007