(57)【特許請求の範囲】
【請求項１】
複数の命令を含むアウトオブオーダー発行待ち行列を有し、前記アウトオブオーダー発行待ち行列が一連のサイクル中の少なくとも幾つかのサイクル中に命令を発行するように動作するコンピュータ・システムにおいて、前記一連のサイクル中の特定のサイクル中に、当該特定のサイクルの直後のサイクル（以下、直後のサイクルという）中に発行するための命令を選択する方法であって、
前記特定のサイクルの直前のサイクルで命令が選択されたかどうかを判定するステップと、
前記直前のサイクルで前記命令が選択されていることに応じて、
前記アウトオブオーダー発行待ち行列中の、最も古い発行可能な命令を、前記特定のサイクル中に識別するステップと、
前記アウトオブオーダー発行待ち行列中の少なくとも第１の命令が前記選択された命令に依存するという条件、及び前記第１の命令が前記識別された最も古い発行可能な命令よりも古いという条件を少なくとも含む、一組の条件の各条件に適合するかを、前記特定のサイクル中に判定するステップと、
前記第１の命令が前記各条件のいずれにも適合する場合に、前記直後のサイクル中に前記第１の命令を発行するように当該第１の命令を前記特定のサイクル中に選択するステップと
を含む、前記方法。
【請求項２】
前記第１の命令が、前記選択された命令に夫々関連付けられた複数の命令中に含まれ、
前記方法は、
前記複数の命令のうちのいずれかの命令が前記各条件に適合するか判定するために前記複数の命令を順次に評価するステップを更に含む、
請求項１に記載の方法。
【請求項３】
前記複数の命令のうちの所与の命令が前記各条件に適合すると判定されるとき、前記所与の命令が前記直後のサイクル中に発行するように選択され、前記複数の命令のうちの所与の命令が前記各条件に適合しないと判定されるとき、前記最も古い発行可能な命令が選択される、請求項２に記載の方法。
【請求項４】
前記複数の命令の各命令が対応する論理エレメントのセットを有し、
前記複数の命令のうちの所与の命令に対応する論理エレメントのセットを使用して、前記所与の命令が前記選択された命令に依存するかどうかを判定する、請求項２に記載の方法。
【請求項５】
前記所与の命令に対応する論理エレメントのセットは、前記所与の命令が前記アウトオブオーダー発行待ち行列中に入る直前に発生される、請求項４に記載の方法。
【請求項６】
前記所与の命令が前記一組の条件のうちの少なくとも幾つかの条件に適合するか判定するために、マルチプレクサ及び論理ゲートが前記所与の命令の論理エレメント・セットとともに作動される、請求項５に記載の方法。
【請求項７】
前記一組の条件は、前記複数の命令のうちの一つの命令が前記選択された命令に依存しなければならないという条件と、もし前記一つの命令が前記前記選択された命令以外の一つ若しくはそれよりも多い他のソースに依存するなら、前記他のソースが全て利用可能でなければいけないという条件とを更に含む、請求項２に記載の方法。
【請求項８】
前記直前のサイクルで前記命令が選択されていないことに応じて、
前記アウトオブオーダー発行待ち行列中の、最も古い発行可能な命令を、前記特定のサイクル中に選択するステップと、
当該選択された最も古い発行可能な命令を前記直後のサイクル中に発行するステップと
を更に含む、請求項１に記載の方法。
【請求項９】
複数の命令が前記アウトオブオーダー発行待ち行列中の順次に配列される位置に夫々位置づけられ、且つ前記複数の命令の各命令の位置が前記選択された命令の位置と特定の関係を有する、請求項２に記載の方法。
【請求項１０】
前記複数の命令のうちの前記第１の命令及び第２の命令が、前記アウトオブオーダー発行待ち行列の順次配列における前記命令の位置に対し、夫々一つ後ろの位置及び二つ後ろの位置に置かれている、請求項９に記載の方法。
【請求項１１】
複数の命令を含むアウトオブオーダー発行待ち行列を有し、前記アウトオブオーダー発行待ち行列が一連のサイクル中の少なくとも幾つかのサイクル中に命令を発行するように動作するコンピュータ・システムにおいて、前記一連のサイクル中の特定のサイクル中に、当該特定のサイクルの直後のサイクル（以下、直後のサイクルという）中に発行するための命令を選択するためのコンピュータ・プログラムであって、コンピュータに、請求項１〜１０のいずれか一項に記載の方法の各ステップを実行させる、前記コンピュータ・プログラム。
【請求項１２】
複数の命令を含むアウトオブオーダー発行待ち行列を有し、前記アウトオブオーダー発行待ち行列が一連のサイクル中の少なくとも幾つかのサイクル中に命令を発行するように動作するコンピュータ・システムにおいて、前記一連のサイクル中の特定のサイクル中に、当該特定のサイクルの直後のサイクル（以下、直後のサイクルという）中に発行するための命令を選択するための装置であって、
前記特定のサイクルの直前のサイクルで命令が選択されたかどうかを判定し、前記直前のサイクルで前記命令が選択されていることに応じて、前記アウトオブオーダー発行待ち行列中の、最も古い発行可能な命令を、前記特定のサイクル中に識別するための第１の論理コンポーネントと、
前記アウトオブオーダー発行待ち行列中の少なくとも第１の命令が前記選択された命令に依存するという条件、及び前記第１の命令が前記識別された最も古い発行可能な命令よりも古いという条件を少なくとも含む、一組の条件の各条件に適合するかを、前記特定のサイクル中に判定するための、マルチプレクサ及び論理ゲートを含む構成と、
前記第１の命令が前記各条件のいずれにも適合する場合に、前記直後のサイクル中に前記第１の命令を発行するように当該第１の命令を前記特定のサイクル中に選択するための第２の論理コンポーネントと
を含む、前記装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は概略、アウトオブオーダー発行待ち行列中の依存命令を、その待ち行列から発行するために選択する方法及び装置に関する。具体的には、本発明は前述のような方法であって、依存命令をバックツーバックに発行できるようにする方法に関する。更に、本発明は前述のような方法であって、待ち行列の１サイクル中に複数の命令を考慮することができるようにし、そして、直後のサイクル中にそれらのうちの一つの命令をその待ち行列から発行するために選択できる方法に関する。
【背景技術】
【０００２】
コンピュータ分野の当業者には良く知られているように、複数の命令を順次に発行し実行するために、それらの命令は、連続したサイクルで、発行待ち行列中に置かれる。しかし、アウトオブオーダー発行待ち行列では、幾つかの命令を、古い命令又は初期の命令に先立って発行するように選択できる。更によく知られているように、今日利用できるアウトオブオーダー発行待ち行列は、一つおきのサイクルよりも頻繁にはならないように依存命令を発行しており、従って依存命令がバックツーバックに発行することはサポートしていない。依存命令は、先行する命令を発行し実行するまで待機しなければならないものであり、それはその依存命令が必要とする不可欠なデータが利用できるようになるのを確実にするためである。バックツーバックの発行とは、待ち行列動作の２つの連続するサイクルの夫々の期間にその待ち行列から命令を発行することをいう。
【０００３】
今日利用できる設計のアウトオブオーダー発行待ち行列を説明するために、下記のコード・シーケンスを考えてみよう。(「Add」は「加算」命令を意味する。)
１）Add 1,x,x,  
２）Add x,1,x
【０００４】
今日の設計のアウトオブオーダー発行待ち行列は、命令１の初期選択に続き、これらの両方の命令を発行するのに３つのサイクルをとる。連続するパイプライン・ステージを示すこの待ち行列のタイミング・ダイアグラムは下記のとおりである。
サイクル          ０        １        ２        ３  
１）Add 1,x,x,    選択      発行                    
２）Add x,1,x               cmp       選択      発行
【０００５】
命令１はサイクル０中に発行のために選択され、サイクル１中に発行される。またサイクル１中に、その発行待ち行列中の全ての命令につき、宛て先とソースとの比較を通じて、依存性を解明する（前述の「cmp」）。この動作から、命令２のソース・レジスタが命令１のターゲット宛て先レジスタと一致すると判断される。その結果、命令２のソースが利用可能状態にセットされ、命令２のために必要なデータが利用可能になったことを示す。サイクル２では、命令２が発行のために選択され、サイクル３中に命令２を発行する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
前述の今日の設計を改良するために、そしてこれによって無駄なサイクル・タイムを回避するために、依存命令をバックツーバックに発行することを許容できるアウトオブオーダー発行待ち行列を提供するのが有益であろう。特に、サイクル２ではなくサイクル１中に命令２を選択させ、その結果、命令２をサイクル３中ではなくサイクル２中に発行するのが明らかに有益であろう。
【０００７】
従って、依存命令のバックツーバックの発行をサポートし、同時に最小量のハードウエアの追加しか必要としないアウトオブオーダー発行待ち行列を提供できるのが望ましい。
【課題を解決するための手段】
【０００８】
本発明の実施例では、アウトオブオーダー発行待ち行列中に含まれる２つまたはそれよりも多い命令が、その待ち行列の特定のサイクル中に評価される。これはそれに続く次のサイクル中に一つの命令を発行するよう命令を選択するためである。もし一つの命令がその特定のサイクル中に発行するように以前に指定されたなら、待ち行列中の１つ若しくはそれより多い命令のいずれかがその指定された命令に依存しているかどうかを判定するために、それらの命令が評価される。その評価を実行するために、待ち行列中に置かれる各命令が対応する論理エレメントのセットを伴う。所与の命令の論理エレメントは宛て先とソースとの比較をその命令のために提供する。本発明の一つの実施例において、特定のサイクル中に、その次のサイクル中に発行するための命令を選択する方法は、待ち行列中の最も古い発行可能な命令をその特定のサイクル中に識別する。或る命令がその特定のサイクル中に発行するように以前に指定されたとき、その待ち行列中の少なくとも第１の命令が一組の条件の各条件に適合するか判定される。一組の条件は第１の命令がその指定された命令に依存し且つ第１の命令がその最も古い発行可能な命令よりも古いという条件を少なくとも含む。第１の命令が各条件に適合する場合にのみその第１の命令は次の後続するサイクル中に発行するように選択される。
【発明を実施するための最良の形態】
【０００９】
図１には、本発明を実施するのに使用できる汎用的なデータ処理システム１００のブロック図を示す。データ処理システム１００は本発明のプロセスを実施するためのコードや命令を有することができるようなコンピュータの典型例である。データ処理システム１００はＰＣＩローカル・バス・アーキテクチャを使用する。ＡＧＰやＩＳＡなど他のバス・アーキテクチャもＰＣＩの代わりに使用できる。図１は、プロセッサ１０２及びメインメモリ１０４がホスト／ＰＣＩキャッシュ／ブリッジ１０８を介してＰＣＩローカル・バス１０６に接続されていることを示す。ホスト／ＰＣＩキャッシュ／ブリッジ１０８はまたプロセッサ１０２のために統合メモリ・コントローラ及びキャッシュ・メモリを含むことができる。
【００１０】
更に図１には、ＬＡＮアダプタ１１２、ＳＣＳＩホスト・バス・アダプタ１１０及び拡張バス・インターフェース１１４が夫々ＰＣＩローカル・バス１０６に直接コンポーネント接続により接続されていることを示す。オーディオ・アダプタ１１６、グラフィックス・アダプタ１１８及びオーディオ／ビデオ・アダプタ１２２がＰＣＩローカル・バス１０６に、拡張スロット中に挿入されたアドイン・ボードによって接続されている。ＳＣＳＩホスト・バス・アダプタ１１０はハード・ディスク・ドライブ１２０およびＣＤ−ＲＯＭドライブ１２４をシステムに接続する。
【００１１】
プロセッサ１０２上で稼動するオペレーティング・システムはマイクロソフト社から入手できるＷＩＮＤＯＷＳ(登録商標）  ＸＰなど、市販されているオペレーティング・システムであってよい。オペレーティング・システム及びアプリケーションのための命令又はプログラムは、ハード・ディスク・ドライブ１２０などの記憶装置に置かれ、プロセッサ１０２により実行するためにメインメモリ１０４にロードできる。
【００１２】
本発明では、アウトオブオーダー発行待ち行列（以下、単に待ち行列ということがある）の中に挿入され若しくはそこで受け取られた各命令は、それに対応する論理エレメントのセットを伴う。一つの命令のための論理エレメントはその命令のために宛て先とソースとの比較情報を提供し、またその命令を発行する準備ができたことを示すための他の情報を提供する。論理エレメントのセットは、対応する命令がその待ち行列に挿入される直前に形成され若しくは発生され、そしてその対応する命令と一緒にその待ち行列中を移動される。論理エレメントのセットについては、図３と関連して詳細に説明する。論理エレメントのセットを提供することによって、或る命令と他の以前に選択された命令との間にバックツーバック依存性があるか調べるためには最少量の比較だけを行えばよいことが分かった。
【００１３】
本発明の実施例では、待ち行列中の３若しくはそれより多い命令を、現在のサイクル中で考慮することができ、その直後のサイクル中に発行するように選択できる。具体的には、もしも或る命令が直前のサイクル中に指定されていて、現在のサイクル中に発行するようになっていたら、その指定された命令の直後に順次位置づけられた複数の命令はそれらがその指定された命令に対してバックツーバック依存性を有しているかどうかを調べるために評価される。その評価される命令に対応する論理エレメントのセットがこの手順で使用される。現在のサイクル中に、その評価された命令のうちの、発行可能であると判明した一つの命令か、そうでなければ最も古い発行可能な命令が選択されてその直後のサイクルで発行される。この評価手順は図２に関連して詳しく説明する。
【００１４】
図２は、本発明の実施例の一連のステップを示すフローチャートであり、アウトオブオーダー発行待ち行列で発行するための命令を選択する方法を示す。図２の方法を開始すると、まずステップ２０２では、何らかの命令が直前のサイクル中に選択又は指定されたか否かを判定する。これは現在のサイクル中にその命令を発行するためである。何の命令も選択されていなければ、ステップ２０４で、現在のサイクルで発行可能になっている最も古い命令が発行待ち行列で選択される。他方、もし直前のサイクル中にある命令が選択されたなら、ステップ２０６を実行する必要がある。すなわち、直前のサイクル中に選択された命令に第１の命令が依存するか判定する。ここで、第１の命令とは、現在のサイクル中に発行するために、直前のサイクル中に選択された命令の一つ上の行または位置にある命令である。従って、第１の命令は発行待ち行列中において直前のサイクルで選択された命令にすぐ続く。もしステップ２０６がイエスであれば、第１の命令の発行可能状態を確立するための重要な条件が満たされたことになる。従って、ステップ２０８に進むことが必要となる。
【００１５】
ステップ２０８は、第１の命令が、直前のサイクルで選択された命令以外の命令と関連する他の何らかのソースに依存するかどうかを判定することを必要とする。もしイエスであれば、すべてのこれらのソースが利用可能か判定する必要がある。もし利用可能であれば、ステップ２０８の結果はイエスであり、第１の命令の発行準備が完了する。その上、ステップ２１０が実行される必要がある。ステップ２１０では、ステップ２０４で選択された最も古い発行可能な命令に関して第１の命令が評価される。即ち、その２つの命令のうちどちらが実際に最も古いかを判定するように評価される。もし第１の命令が古いと判明したら、ステップ２１２で示すように、それは待ち行列の次のサイクル中に発行するように選択され、図２の方法が終了する。
【００１６】
ステップ２０６又は２０８のいずれかでもし発行不可と判明したら第１の命令は選択できない。もしそれが発行可能であっても、ステップ２１０で最も古い命令でないと判明したら、それは選択できない。図２は更に、ステップ２０６乃至２１０のいずれかがノーなら、図２の方法はステップ２１４に進むことを示す。ステップ２１４は前述のステップ２０６に似ているが、直前のサイクル中に選択された命令より二つ上の行に位置づけられた命令である第２の命令が対象になっている点が異なる。ステップ２１４は第２の命令が直前のサイクル中に選択された命令に依存するか判定する。もしステップ２１４の結果がイエスであれば、ステップ２１６に進む必要がある。
【００１７】
ステップ２１６では、直前のサイクルで選択された命令以外の命令に関連する他の何らかのソースに第２の命令が依存するか判定することを必要とする。もしイエスであれば、これらのソースの全てが利用可能であるか判定する必要がある。利用可能なら、ステップ２１６の結果はイエスであり、第２の命令を発行する準備が整ったことを示す。その上で、ステップ２１８を実行する必要がある。ステップ２１８では、第２の命令が、ステップ２０４で選択された最も古い発行可能な命令に関し評価され、その２つの命令のうちどちらが古いかを判定する。もし第２の命令の方が古いと判明したなら、ステップ２２０で示すように、それが待ち行列の次のサイクル中に発行するように選択され、図２の方法が終了する。
【００１８】
第１の命令と同様に、第２の命令は、もしステップ２１４乃至２１８のいずれかがノーであれば、選択できない。これは第２の命令を発行する準備が整っていないか、又はその最も古い発行可能な命令ほど古くはないかのいずれかであることを示す。このように、ステップ２１４乃至２１８のいずれかがノーの結果を生じるなら、ステップ２０４の最も古い発行可能な命令が、次に続くサイクル中に発行するように選択されることを図２は示す。
【００１９】
図３には、図２の方法の個々のステップを実施するように構成された論理コンポーネント及びマルチプレクサプレクサを示す。図３は、命令（ａ）乃至（ｆ）を含む命令セット３０２を含む。これらの命令は、後で発行され実行されるために、アウトオブオーダー発行待ち行列に位置づけられる。命令セット３０２中の命令は、図３でセット３０２の頂部から底部に進むにつれ徐々に古くなる。従って命令（ｄ）はどの命令（ａ）乃至（ｃ）よりも古く、従って長く待ち行列にいる。
【００２０】
前述のとおり、命令は待ち行列から発行される前に発行可能状態でなければならない。従って、図３は制御論理を含むブロック３０４を示している。ブロック３０４の各行（ａ）乃至（ｆ）が命令（ａ）乃至（ｆ）の一つに対応しており、またそのための論理エレメントのセットを含む。この制御論理は個々の命令のソースが利用可能であるかどうかを示す。そこではそれらの命令は待ち行列中のもっと古い命令即ち命令セット３０２における下方の行の命令に依存している。論理ブロック３０４中のフィールドは以下のとおりである。
Ｖ＝有効
Ｓ０  ＲＤＹ＝Ｓ０が利用可能
Ｓ１  ＲＤＹ＝Ｓ１が利用可能
Ｓ０  ＩＲ＝ソース０が現在行の一つ下の行にバックツーバック依存性を有する
Ｓ１  ＩＲ＝ソース１が現在行の一つ下の行にバックツーバック依存性を有する
Ｓ０  ２Ｒ＝ソース０が現在行の二つ下の行にバックツーバック依存性を有する
Ｓ１  ２Ｒ＝ソース１が現在行の二つ下の行にバックツーバック依存性を有する
【００２１】
ブロック３０４に含まれる論理エレメントのセットから、論理コンポーネント３０６が個々の依存命令が発行可能か判定することができる。この情報から、マルチプレクサ制御発生器３０８はマルチプレクサプレクサ（ＭＵＸ）３１０に向けられる情報信号Ｅを提供する。情報信号Ｅは待ち行列の現在のサイクル中に、最も古い発行可能な命令であると判明した命令を識別する。図３は、マルチプレクサ３１０が命令セット３０２の個々の命令にも接続されている様子を示す。その結果、情報信号Ｅに応答して、マルチプレクサ３１０は最も古い発行可能な命令を選択し、そのような命令をマルチプレクサ３１２への入力として供給する。
【００２２】
図３は情報信号Ｅがマルチプレクサ３１４への入力として提供されることを示す。マルチプレクサ３１４はもう一つの入力としてマルチプレクサ３１６の出力を受ける。マルチプレクサ３１４の出力はラッチ３１８に提供される。以下で更に詳述するが、ラッチ３１８は、現在のサイクル中に発行するため直前のサイクル中に選択若しくは指定された命令セット３０２中の命令を示す情報を含む。ラッチ３１８は論理コンポーネント３２０及び３２２に接続され、両コンポーネント３２０及び３２２に直前のサイクルで選択された命令を識別するか、または直前のサイクル中に発行のために選択された命令がないことを示す。
【００２３】
ラッチ３１８により提供される情報に応答して、論理コンポーネント３２０はマルチプレクサ選択信号Ａを発生する。この選択信号Ａは、直前のサイクルで選択された命令の直ぐ上の行にある命令を第１の命令として選択する。具体的には、論理コンポーネント３２０は、セット３０２の個々の命令に接続されるマルチプレクサ３２４にマルチプレクサ選択信号Ａを送る。選択信号Ａを受け取ると、マルチプレクサ３２４は第１の命令を一つの出力として提供し、そのような出力をマルチプレクサ３２８にそこへの入力として提供する。例えば、もし命令（ｄ）が現在のサイクル中に発行するために直前のサイクル中に選択された命令であった場合、ブロック３０２においてその直ぐ上の命令（ｃ）が第１の命令である。
【００２４】
同様にして、論理コンポーネント３２２はラッチ３１８によって提供される情報に応答し、マルチプレクサ選択信号Ｂを発生する。信号Ｂは、直前のサイクルで選択された命令の２行上にある命令を第２の命令として選択する。このマルチプレクサ選択信号Ｂはマルチプレクサ３２６に向けられる。マルチプレクサ３２６もセット３０２の個々の命令にも接続される。選択信号Ｂを受け取ると、マルチプレクサ３２６は出力として第２の命令を提供し、マルチプレクサプレクサ３２８にそのような出力をそこへの第２の入力として提供する。もし直前のサイクルで選択された命令が命令（ｄ）であったなら、命令（ｂ）が第２の命令となろう。
【００２５】
図３には、論理ブロック３０４に結合された論理コンポーネント３３０を示す。コンポーネント３３０中のレディ論理は、個々の命令がレディすなわち発行可能であるか否かをソース比較に基づいて判定し、この情報が両マルチプレクサ３３２及び３３４に提供される。マルチプレクサ３３２及び３３４は更にマルチプレクサ選択信号Ａ及びＢを夫々受け取る。
【００２６】
選択信号Ａに応答して、マルチプレクサ３３２は前述の第１の命令に関係する出力を提供する。マルチプレクサ３３２は、もし第１の命令のための論理エレメントのセットがその第１の命令が発行可能であることを示すなら、１という出力信号Ｃを提供する。そうでないなら、その出力信号は０になる。信号Ｃは、その出力が１か０かに従って、夫々マルチプレクサ３２４又はマルチプレクサ３２６の出力のいずれかを選択するために、マルチプレクサ３２８に選択信号として供給される。マルチプレクサ３２８の出力は、もし第１の命令が発行可能であると判明するなら、第１の命令に関係する。そうなでければ、マルチプレクサ３２８の出力は第２の命令に関係する。マルチプレクサ３２８の出力は、最も古い発行可能な命令を表す信号を第１の入力に受け取るマルチプレクサ３１２への第２の入力として機能する。
【００２７】
選択信号Ｂに応答して、マルチプレクサ３３４は、第２の命令が発行可能か否かを示すために、第２の命令に関係する出力を提供する。マルチプレクサ３３４の出力は論理コンポーネント３３６への入力として与えられる。論理コンポーネント３３６はまた信号Ｃ及びＥを入力として受け取り、マルチプレクサ３１２への出力としてマルチプレクサ選択信号Ｄを生じる。
【００２８】
論理コンポーネント３３６は、第１の命令が発行可能であることを出力信号Ｃが示すとき、第１の命令が最も古い発行可能な命令よりも古いかどうか判定するよう動作する。この判定の結果はマルチプレクサ選択信号Ｄによって表され、もしも第１の命令の方が古いと判明したら、この選択信号Ｄはマルチプレクサ３２８の出力をマルチプレクサ３１２に選択させる。そうでなければ、マルチプレクサ３１２はマルチプレクサ３１０の出力を選択する。
【００２９】
第１の命令が発行可能でないことを出力信号Ｃが示すとき論理コンポーネント３３６は第２の命令が発行可能か、そしてもしそうなら、それが最も古い発行可能な命令よりも古いか判定するように動作する。この判定の結果は再び選択信号Ｄによって表される。もし第２の命令が発行可能であれば、信号Ｄはマルチプレクサ３１２に、マルチプレクサ３２８か又は３１０のいずれかを選択させるようにする。そのいずれが選択されるかは第２の命令及び最も古い発行可能な命令のいずれが古いかが判明することに従う。
【００３０】
マルチプレクサ３３２及び３３４から論理コンポーネント３３６に送られる出力は、現在のサイクル中に発行するための命令が直前のサイクルで何も選択されなかったか、又は第１及び第２の命令のいずれも発行可能でないことを示すことがある。このいずれかの事象が生じる場合は、論理コンポーネント３３６がマルチプレクサ３１２にマルチプレクサ３１０の出力を選択させ、その結果最も古い発行可能な命令を選択させるようにマルチプレクサ選択信号Ｄを送る。
【００３１】
図３に示されるラッチ３３８は、マルチプレクサ３１２の出力によって提供される命令を受け取り、且つその命令がＦＰＵ３４０に発行されるまでその命令を保持するように配設される。図３は、選択された命令をラッチ３１８にロードして、次に続くサイクル中に使用できるようにするために、選択信号Ｃ及びＤによって夫々動作されるマルチプレクサ３１６及び３１４を更に示す。
【００３２】
本発明の前述の実施例は直前のサイクルで選択された行の上の２つの行を見て、バックツーバック依存性を判定する。しかし、本発明の他の実施例はバックツーバック依存命令を発行するために、もっと多くの行を見るようにすることができる。
【００３３】
本発明は完全にハードウエアの実施例、完全にソフトウエアの実施例、あるいはハードウエア及びソフトウエアを組み合わせた実施例といった形態をとることができる。好適な実施例では、本発明は、以下に限定されるものではないが、集積回路、ファームウエア、マイクロコードなどを含むハードウエアで実施される。
【００３４】
また本発明は、コンピュータ若しくは任意の命令実行システムにより、又はそれに関連して使用されるプログラム・コードを提供する、コンピュータ可用媒体又はコンピュータ可読媒体からアクセス可能なコンピュータ・プログラムの形態をとることができる。この説明の目的上、コンピュータ可用媒体又はコンピュータ可読媒体は、命令実行システム、装置若しくはデバイスにより、又はそれに関連して使用されるプログラムの内蔵、記憶、通信、伝播、又は移送が可能な任意の有形装置であってよい。
【００３５】
この媒体は、電子的、磁気的、光学的、電磁的、赤外線の、若しくは半導体のシステム（若しくは装置、デバイス）或いは伝送媒体であってよい。コンピュータ可読媒体の例は半導体若しくは固体素子のメモリ、磁気テープ、取り外し可能なフレキシブル・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、磁気ハードディスク及び光ディスクを含む。今日の光ディスクの例は、ＣＤ−ＲＯＭ、ＣＤ−Ｒ／Ｗ及びＤＶＤを含む。
【００３６】
プログラム・コードを記憶したり、実行したりするのに適するデータ処理システムは、メモリ素子にシステム・バスを介して直接的又は間接的に結合された少なくとも一つのプロセッサを含む。メモリ素子は、プログラム・コードの実際の実行中に使用されるローカル・メモリ、大容量記憶装置、及び少なくとも幾つかのプログラム・コードを一時的に記憶するキャッシュ・メモリを含むことができる。キャッシュ・メモリは実行中にそのようなコードを大容量記憶装置から何回も取り出す必要性を少なくする。
【００３７】
入出力装置即ちＩ／Ｏ装置（以下に制限されるものではないが、キーボード、ディスプレイ、ポインティング・デバイスなど）をこのシステムに直接的に若しくはＩ／Ｏコントローラを介して結合することができる。
【００３８】
ネットワーク・アダプタもこのシステムに結合することができ、それによりデータ処理システムは、他のデータ処理システム、遠隔のプリンタ、記憶装置などに使用ネットワーク又は公衆ネットワークを介して結合することができる。モデム、ケーブル・モデム及びＥｔｈｅｒｎｅｔ(登録商標）カードが、現在利用できる型のネットワーク・アダプタのほんの一例である。
【００３９】
本発明の記述は説明目的で行われたものであり、ここに開示した特定の形態に本発明を制限する意図はない。多くの変形例は当業者には容易に考えられるであろう。実施例は本発明の原理、実用的な応用例をもっとも良く示すために選んで記述した。これはまたこの分野の当業者が特定の使用目的に合わせていろいろな変形を加えたいろいろな実施例を理解できるようにするためである。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施例を実施するのに使用できるコンピュータ又はデータ処理装置のブロック図である。
【図２】本発明の実施例に従う方法の個々のステップを示すフローチャートである。
【図３】図２の実施例を実施するのに使用されるマルチプレクサ及び関連コンポーネントの構成を示すブロック図である。
【符号の説明】
【００４１】
３０２  命令セット
３０４  論理ブロック
３０６  レディ論理
３０８  マルチプレクサ制御発生器
３１２  マルチプレクサ（ＭＵＸ）
３１８、３３８  ラッチ
３２０、３２２  論理コンポーネント
３３０  レディ論理
３３６  論理コンポーネント
【図１】
0005294568.tif 000002
【図２】
0005294568.tif 000003
【図３】
0005294568.tif 000004