(57)【特許請求の範囲】
【請求項１】
プロセッサ内でロード命令の順序外の実行を容易にする装置であって、
（ａ）プレロードを表す各ロード命令を識別するプレロード識別手段と、
（ｂ）複数のプレロード・エントリーを記憶する複数のキュー・ロケーションを有するプレロード・キューであって、各プレロード・エントリーは、プレロードに関連づけられて、それぞれのプレロードが実行されるとき割り振られ、（ｉ）それぞれのプレロードによって定義されるアドレス情報、及び（ｉｉ）それぞれのプレロードに関連づけられた識別子を含み、
（ｃ）ロード命令を実行するプロセッサ内の各実行ユニットに関連づけられたプレロード・キュー・ルーティング手段であって、プレロード・キュー・ルーティング手段は、それぞれの各プレロードによって定義されたアドレス情報及びそれぞれのプレロードに関連づけられた識別子をプレロード・キューへ転送し、
（ｄ）衝突するプレロード・エントリーをそれぞれ識別する比較ユニットであって、衝突するプレロード・エントリーは、（ｉ）実行されている記憶命令のアドレスとマッチするアドレスを定義し、（ｉｉ）実行されている記憶命令よりも若いプレロードに関連づけられるプレロード・エントリーであり、
（ｅ）比較ユニットによって識別された衝突するプレロード・エントリーに関連づけられた最も古いプレロードである目標のプレロード以降に実行された命令をフラッシュする信号を生成するフラッシュ信号生成手段と
を含む装置。
【請求項２】
比較ユニットが、
（ａ）各キュー・ロケーションのアドレス比較器であって、それぞれのアドレス比較器は、実行されている記憶命令のアドレスと、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれるアドレス情報とを比較し、
（ｂ）各キュー・ロケーションの識別子比較器であって、それぞれの識別子比較器は、実行されている記憶命令及びそれぞれのプレロード・エントリーに関連づけられたプレロードの相対的年齢を決定するため、実行されている記憶命令の識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｃ）各アドレス比較器及び各識別子比較器から出力を受け取るために接続され、フラッシュ信号を提供するようにフラッシュ信号生成手段に命令する衝突制御ロジックと
を含む、請求項１に記載の装置。
【請求項３】
（ａ）目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーをキャンセルするプレロード・エントリー・キャンセル手段を更に含む、
請求項１または２に記載の装置。
【請求項４】
プレロード・エントリー・キャンセル手段が、
（ａ）各キュー・ロケーションのキャンセル比較器であって、それぞれのキャンセル比較器は、目標のプレロードに関連づけられた識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）各キャンセル比較器から出力を受け取るために接続され、目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーを無効にするキャンセル制御ロジックと
を含む、請求項３に記載の装置。
【請求項５】
（ａ）最も古い未実行の記憶命令を決定し、最も古い未実行の記憶命令に関連づけられた識別子を転送する記憶トラッキング・ユニット
を更に含む、請求項１〜４のいずれか１項に記載の装置。
【請求項６】
（ａ）記憶トラッキング・ユニットによって転送された識別子を受け取り、最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去する除去比較器配列
を更に含む、請求項５記載の装置。
【請求項７】
除去比較器配列が、
（ａ）各キュー・ロケーションの除去比較器であって、それぞれの除去比較器は、記憶トラッキング・ユニットによって転送された識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）各除去比較器から出力を受け取るために接続され、最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを無効にする除去制御ロジックと
を含む、請求項６に記載の装置。
【請求項８】
（ａ）実行されている各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を示す順序づけ手段を
更に含む、請求項１〜７のいずれか１項に記載の装置。
【請求項９】
順序づけ手段が、
（ａ）ロード命令を所与のサイクルで実行することのできるプロセッサ内の各実行ユニットについての、各キュー・ロケーションの順序づけ比較器であって、各順序づけ比較器は、実行ユニットの異なった１つによって実行されているプレロードに関連づけられた識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）実行されている各プレロードに関連づけられた識別子を比較する「実行時」比較器と、
（ｃ）各順序づけ比較器及び「実行時」比較器から出力を受け取るために接続され、前記出力に基づいて、プレロード・キュー・エントリーに関連づけられた各プレロード及び実行されている各プレロードの相対的年齢を決定する順序づけ制御ロジックと
を含む、請求項８に記載の装置。
【請求項１０】
順序づけ手段が、
（ａ）各キュー・ロケーションの順序づけ比較器であって、各順序づけ比較器は、実行されているプレロードに関連づけられた識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）各順序づけ比較器から出力を受け取るために接続され、前記出力に基づいて、実行されているプレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定する順序づけ制御ロジックと
を含む、請求項８に記載の装置。
【請求項１１】
プロセッサ内でロード命令の順序外の実行を容易にする方法であって、
（ａ）複数のプレロード・エントリーを記憶するステップであって、各プレロード・エントリーは、プレロードとして識別された命令に関連づけられ、それぞれのプレロードが実行される時点で割り振られ、各プレロード・エントリーが、（ｉ）それぞれのプレロードによって定義されるアドレス情報、及び（ｉｉ）それぞれのプレロードに関連づけられた識別子を含む、ステップと、
（ｂ）各々の衝突するプレロード・エントリーを識別するステップであって、衝突するプレロード・エントリーは、（ｉ）実行されている記憶命令のアドレスとマッチするアドレスを定義し、また（ｉｉ）実行されている記憶命令よりも若いプレロードに関連づけられたプレロード・エントリーである、ステップと、
（ｃ）目標のプレロードを識別するフラッシュ信号を発生するステップであって、目標のプレロードは、衝突するプレロード・エントリーに関連づけられた最も古いプレロードである、ステップと、
を含む方法。
【請求項１２】
各々の衝突するプレロード・エントリーを識別するステップが、
（ａ）実行されている記憶命令のアドレスと、各プレロード・エントリーに含まれるアドレス情報とを比較し、
（ｂ）実行されている記憶命令及び各プレロード・エントリーに関連づけられたプレロードの相対的年齢を決定するため、実行されている記憶命令の識別子と、各プレロード・エントリーに含まれる識別子とを比較する
ステップを含む、請求項１１に記載の方法。
【請求項１３】
（ａ）目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーをキャンセルする
ステップを更に含む、請求項１１または１２に記載の方法。
【請求項１４】
各々のプレロード・エントリーをキャンセルするステップが、
（ａ）目標のプレロードに関連づけられた識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）識別子の比較に基づいて、目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーを無効にする
ステップを含む、請求項１３に記載の方法。
【請求項１５】
（ａ）最も古い未実行の記憶命令を決定し、
（ｂ）最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去する
ステップを更に含み、該ステップは、プレロード・キュー・ロケーションを、新しいプレロード・エントリー用に利用できるようにするために、複数のプレロード・エントリーを記憶するステップの前に行われる、請求項１１に記載の方法。
【請求項１６】
最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去するステップが、
（ａ）最も古い未実行の記憶命令の識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）前記比較に基づいて、最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・キュー・エントリーを無効にする
ステップを含む、請求項１５に記載の方法。
【請求項１７】
（ａ）実行されている各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定する
ステップを更に含み、該ステップは複数のプレロード・エントリーを記憶するステップと並列に、各々の衝突するプレロード・エントリーを識別するステップの前に行われる、請求項１１〜１６のいずれか１項に記載の方法。
【請求項１８】
前記プロセッサが、ロード命令を所与のサイクルで実行する２以上の実行ユニットを有し、
実行されている各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定するステップが、
（ａ）一の実行ユニットで実行されている各プレロードに関連づけられた識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）前記一の実行ユニットで実行されている各プレロードに関連づけられた識別子と、他の実行ユニットで実行されている各プレロードの識別子とを比較し、
（ｃ）プレロード・エントリーに関連づけられた各プレロード及び実行されている各プレロードの相対的年齢が、前記識別子の比較に基づいて決定される
ステップを含む、請求項１７に記載の方法。
【請求項１９】
各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定するステップが、
（ａ）ロード命令を所与のサイクルで実行する実行ユニットの１つによって現在実行されているプレロードに関連づけられた識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）前記識別子の比較に基づいて、プレロード・エントリーに関連づけられた各プレロード及び実行されているプレロードの相対的年齢を決定する
ステップを更に含む、請求項１７に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はコンピュータ・プロセッサに関し、さらに具体的には、ロード命令の順序外の実行を容易にするため情報を記憶するキュー配列に関する。
【０００２】
【従来の技術】
コンピュータ及び他の装置で使用されるプロセッサは、論理オペレーション、ロード及び記憶オペレーション、並びに他のオペレーションを実行するための命令を実行する。プロセッサのパフォーマンスは、命令を同時に実行することができる幾つかの実行ユニットを備えることによって増大することができる。複数の同時に動作する実行ユニットを含むプロセッサは、スーパースカラー・プロセッサと呼ばれる。
【０００３】
プロセッサによって実行される命令は、プログラム順序と呼ばれる或る順序で書かれる。例えば、２つの異なったロード命令は、プロセッサ内の２つの異なったレジスタ位置へデータをロードすることができ、次にプログラム順序内の次の命令は、これら２つの位置内のデータを使用してオペレーションを実行し、オペレーションの結果を他のレジスタ位置に書き込むことができる。最後に、記憶命令が、オペレーションからの結果を、プロセッサに関連づけられたメイン・メモリ内の位置へ記憶することができる。プログラム順序内の最初の命令は、プログラム順序内の後の命令よりも古いと考えることができる。上記の例で、最初のロード命令は記憶命令よりも古いと考えられ、逆に、記憶命令はロード命令よりも若いと考えられる。
【０００４】
スーパースカラー・プロセッサは、プログラム順序外の命令を実行することによって全体的処理速度を増大することができる。例えば、ロード命令はプログラム順序で記憶命令の前に実行されることができる。即ち、より若いロード命令が、より古い記憶命令の前に実行されることができる。プログラム順序で記憶命令の前に実行されるロード命令は、プレロードと呼ばれる。
【０００５】
１つの命令が他の命令によって与えられたデータに依存するとき、プログラムの順序外の命令を実行すると、問題を生じる。例えば、記憶命令はデータをメモリ内のアドレスに記憶し、プログラム順序で後のロード命令が、そのアドレスからのデータをロードするかも知れない。この例で、もしロード命令が記憶命令の前にプレロードとして実行されると、それは不正確なデータをロードし、プログラム実行でエラーを生じるであろう。プレロード命令は、より古い記憶命令と同じアドレスを指定するから、プレロードは後に実行される記憶命令と衝突する。
【０００６】
【発明が解決しようとする課題】
本発明の目的は、プレロードと記憶命令との間の衝突を検出し、衝突に起因して生じるエラーを防止するため、プロセッサが訂正アクションを取ることができるようにする装置及び方法を提供することである。記憶／プレロードの衝突を検出することによって、本発明に従った装置及び方法は、プロセッサ内でロード命令の順序外の実行を容易にすることを助ける。
【０００７】
【課題を解決するための手段】
本発明に従った装置は、複数のプレロード・エントリーを記憶するための複数のキュー・ロケーションを含むプレロード・キューを含む。各プレロード・エントリーは、プレロード命令のための識別子を含み、且つそれぞれのプレロード命令によって定義されたアドレス情報を更に含む。識別子は、プレロード・エントリーに関連づけられた命令を識別する手段、及び命令の相対的年齢を示す手段を含む。
【０００８】
記憶命令が実行されるとき、プレロード・キューに関連づけられた比較ユニットは、各々の衝突するプレロード・エントリーを識別するため、各プレロード・エントリー内の情報、及び実行されている記憶命令に関する情報を使用する。衝突するプレロード・エントリーは、実行されている記憶命令のアドレスとマッチする、即ち、重複するアドレスを定義するエントリーであり、且つ記憶命令よりも若いプレロード命令に関連づけられている。従って、プレロード・キュー及び比較ユニットは協調して、より古い記憶命令に依存するにも拘わらず実行された、従って不適切に実行された、プレロード命令を検出する。
【０００９】
更に、本発明に従った装置は、フラッシュ信号を発生するためのフラッシュ信号配列を含む。このフラッシュ信号は、最も古い、不適切に実行された、又は衝突する、プレロードを含む目標のプレロードを識別する。フラッシュ信号によって、プロセッサは、記憶命令とプレロード命令との間の衝突に起因して生じたであろうエラーを避けるために、訂正アクションを取ることができる。この開示及び請求範囲で使用されるように、目標のプレロードは、比較ユニットによって識別された衝突プレロード・エントリーに関連づけられた最も古いプレロードとして定義される。
【００１０】
プロセッサがフラッシュ信号に応答して取る訂正アクション、及び訂正アクションをとるための装置は、本発明の一部分ではなく、従って、この開示では詳細に説明されない。当業者は、訂正アクションが、目標のプレロード、及び目標のプレロードの後で全面的に実行された全ての命令をフラッシュし、次にプロセッサの状態を、目標のプレロードが実行される直前の状態へ復元することを普通に含むことを了解するであろう。次に、フラッシュされた目標のプレロード及び他の命令は、再フェッチされて実行される。任意のフラッシュ、復元、及び再フェッチ配列を、本発明に従ったプレロード・キュー配列と共に使用してよい。
【００１１】
本発明に従えば、プレロード識別手段及びプレロード・キュー・ルーティング手段は、プレロード・キューを、必要なプレロード・エントリーでロードする場合の助けとなる。プレロード識別手段は、ロード命令を実行するプロセッサ内の各実行ユニットに関連づけられ、プレロードを表す各ロード命令を識別するためのロジックを含む。更に、プレロード・キュー・ルーティング手段は、ロード命令を実行する各実行ユニットと関連づけられ、それぞれの各プレロードによって定義されたアドレス情報を、それぞれのプレロードと関連づけられた識別子と共に、プレロード・キューへ転送するように働く。
【００１２】
本発明の好ましい形態では、比較ユニットは各キュー・ロケーションのためのアドレス比較器及び識別子比較器を含む。各アドレス比較器は、アドレスの間にマッチがあるかどうかを決定するため、実行されている記憶命令のアドレス情報と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれるアドレス情報とを比較する。各識別子比較器は、実行されている記憶命令の識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較する。この比較は、それぞれのプレロード・エントリーに関連づけられたプレロードと、実行されている記憶命令との間の相対的年齢を決定する。比較ユニットに関連づけられたコントローラに含まれる衝突制御ロジックは、アドレス比較器及び識別子比較器の出力を受け取る。アドレス比較器及び識別子比較器の出力が、プレロードと、実行されているより古い記憶命令との間のアドレス・マッチを示すとき、衝突制御ロジックは、フラッシュ信号を発生するようにフラッシュ信号生成手段に命令する。
【００１３】
この開示及び請求範囲で使用されるように、アドレス間の「マッチ」とは、アドレス及びそれぞれのデータによって定義されるメモリ位置が、少なくとも部分的に重複することを意味する。従って、各アドレス比較器によって要求されるアドレス情報は、それぞれの命令によって指定された実際のアドレス及びバイト・カウントを含む。この情報は、一緒になって、それぞれの命令によって暗示されるメモリ位置を定義する。
【００１４】
プレロード・キュー配列の中では、任意数のアドレス比較器配列が、本発明の範囲内で使用されてよい。例えば、現在、米国特許第６,０７０,２３８号である１９９７年９月１１日に出願された「記憶域参照命令と前に実行された記憶域参照命令との間の重複条件を検出するための方法及び装置」（Method and Apparatus for Detecting an Overlap Condition Between a Storage Reference Instruction and a Previously Executed Storage Reference Instruction）と題する米国特許出願第０８／９２７，８８９号は、本発明のプレロード・キュー発明と共に使用される好ましいアドレス比較器配列を開示している。米国特許出願第０８／９２７，８８９号の開示は、この参照により、ここに組み込まれる。
【００１５】
更に、本発明に従ったプレロード・キュー装置は、好ましくは、１つ又は複数の衝突するプレロード・エントリーが一度識別されたとき、プレロード・エントリーをキャンセルするプレロード・エントリー・キャンセル配列を含む。このキャンセル・アクションは、フラッシュ信号に応答してプロセッサにより取られる訂正アクションに追加される。プレロード・エントリー・キャンセル配列は、目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ年齢又はより若いプレロードに関連づけられた各プレロード・エントリーの双方をキャンセルする。更に、プレロード・キャンセル配列は、プレロードの衝突に関連しない理由によりプレロード・エントリーをキャンセルするために使用されてよい。
【００１６】
本発明の好ましい形態では、プレロード・エントリー・キャンセル配列は、各キュー・ロケーションのためのキャンセル比較器を含む。各キャンセル比較器は、目標のプレロードの識別子と、それぞれのキュー・ロケーションに関連づけられたプレロード・エントリーに含まれる識別子とを比較する。各キャンセル比較器の出力は、それぞれのプレロード・エントリー内の識別子が、目標のプレロードと同じ年齢、又はより若いプレロードを識別するかどうかを示す。キュー・コントローラに含まれるキャンセル制御ロジックは、各キャンセル比較器の出力を受け取り、目標のプレロードに関連づけられプレロード・エントリー、及び目標のプレロードと同じ若さ、又はより若いプレロードに関連づけられた各プレロード・エントリーを無効にする。この場合の「無効」とは、それぞれのキュー・ロケーションが新しいプレロード・エントリーを記憶するために利用可能としてマークされるか、消去されるか、又は、これら双方を意味する。
【００１７】
本発明のプレロード・キュー装置の１つの利点は、キューが比較的小さくてよいことである。なぜなら、プレロード・キュー・ロケーションは、プレロードが実行（ディスパッチに対する意味で）されるまで割り振られないからである。更に、いずれかのプレロード・エントリーが、プログラム順序に関して最も古い未実行の記憶命令よりも今や古くなったプレロードに関連づけられているかどうかを調べるために、プレロード・キューが分析されてよい。もしプレロード・エントリーが、そのような、より古いプレロードに関連づけられていれば、そのプレロードと記憶命令との間の衝突のチャンスはない。従って、プレロードに関連づけられたプレロード・エントリーは、実行すべき次のプレロードに関連づけられたエントリーに対する余地を作るために、除去又は無効にされてよい。プレロード・キュー・エントリーの遅延された割り振り、及び早期の除去は、キュー内のエントリーの数を削減する。転じて、キュー・エントリーの削減された数は、制御ロジックを単純化し、関連したタイミング効果がシステム・クロック速度に影響を与える可能性を低減する。
【００１８】
プレロード・キュー・エントリーの早期除去を容易にするために、本発明は、好ましくはプロセッサのディスパッチ・ユニットに関連づけられた記憶トラッキング・ユニットを含む。記憶トラッキング・ユニットは、最も古い未実行の記憶命令を識別し、除去比較器配列によって使用されるための、その命令に関連づけられた識別子を転送する。除去比較器配列は、各キュー・ロケーションのための除去比較器を含む。各除去比較器は、最も古い未実行記憶命令の識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較する。もし除去比較器によって実行された識別子の比較によって、もしプレロード・エントリーに関連づけられたプレロードが、最も古い未実行記憶命令よりも古いことを表示されると、キュー・コントローラに含まれてよい除去制御ロジックが、それぞれのプレロード・エントリーを無効にする。
【００１９】
更に、好ましいプレロード・キュー配列は、実行される次のプレロードのために、プレロード・キューに余地を確保するロジックを含む。具体的には、論理的により若いロードがプレロード・キューを満たした場合には、現在実行されており且つより古いロード命令のために、プレロード・キュー内に余地を強制的に作るフラッシュ・メカニズムが備えられる。
【００２０】
更に、実行されている各プレロード、及びプレロード・エントリーがプレロード・キューに記憶されている各プレロードの相対的年齢を追跡することが有利である。従って、本発明に従った装置は、好ましくは、各キュー・ロケーションのために少なくとも１つの順序づけ比較器を含む順序づけ手段を含む。プロセッサが、ロード命令を同時に実行することのできる複数の実行ユニットを含む場合、順序づけ比較器配列は、そのような各実行ユニットのために、各キュー・ロケーションのための順序づけ比較器、及び同時に実行されているプレロードを比較するための「実行時」比較器を含む。順序づけ手段に含まれる比較器は、実行されている各プレロード命令の識別子と、各プレロード・エントリーに含まれる識別子とを比較する。キュー・コントローラに含まれてよい順序づけロジックは、これらの比較器からの結果を受け取り、比較器の結果に基づいて、年齢に関して相対的順序をプレロード・エントリーへ割り当てる。相対的順序は、好ましくは、キュー・コントローラに関連づけられたメモリ内に維持され、実行されている記憶命令と複数のプレロードとが衝突するときに使用される。
【００２１】
本発明のこれら及び他の目的、利点、及び特徴は、添付の図面と共に考察するとき、好ましい実施形態の以下の説明から明らかであろう。
【００２２】
【発明の実施の形態】
図１は、本発明の原理を実体化したプロセッサ１００を示す。プロセッサ１００は、これから図２、図３、図４を参照して詳細に説明するプレロード・キュー１６０を含む。プレロード・キュー１６０、関連した比較ユニット１７０、及びキュー・コントローラ１８０は、協調してプレロード命令と記憶命令との間の衝突を検出し、そのような衝突の訂正をプロセッサへ伝える。プレロード・キュー１６０、比較ユニット１７０、及び関連したコントローラ１８０は一緒に動作して、ロード命令の順序外実行を容易にする。
【００２３】
図１に示される例示的実施形態において、プロセッサ１００は単一の集積回路スーパースカラー・マイクロプロセッサを含む。従って、プロセッサ１００は各種の実行ユニット、レジスタ、バッファ、メモリ装置、及び他の機能ユニットを含む。これらは全て集積回路から形成される。ここでは、本発明はマイクロプロセッサへの応用として説明されるが、もちろん、本発明のプレロード・キュー配列はマイクロプロセッサに限定されず、他のタイプのプロセッサで実現されてよい。更に、図１に示される一般的なプロセッサ配列は、プレロード・キュー１６０、比較ユニット１７０、及びコントローラ１８０の動作を説明するために単なる例として示されたものである。この明細書で説明され且つ請求範囲に書かれたプレロード・キューは、命令フラッシング・システムを含む実質的に任意のプロセッサ配列で使用されてよいことが、当業者に了解されるであろう。
【００２４】
図１に示されるように、プロセッサ１００はバス・インタフェース・ユニット（ＢＩＵ）１１４及びプロセッサ・バス１１５を介してシステム・バス１１３へ結合される。システム・バス１１３及びプロセッサ・バス１１５の双方は、別々には示されていないアドレス・バス、データ・バス、及び制御バスを含む。ＢＩＵ１１４はバス・アービトレーションに参加し、プロセッサ１００と、メイン・メモリ１１６及び不揮発性大容量記憶装置１１７のような、システム・バス１１３へ結合された他の装置との間の情報転送を制御する。図１に示されるデータ処理システムは、好ましくは、システム・バス１１３へ結合された他の装置を含む。しかし、これらの他の装置は本発明の理解には必ずしも必要ではなく、従って、不必要なほど詳細に説明することによって本発明を不明瞭にすることがないように、図面から省略されている。
【００２５】
ＢＩＵ１１４は、命令キャッシュ及びＭＭＵ（メモリ管理ユニット）１１８及びデータ・キャッシュ及びＭＭＵ１１９へ接続される。命令キャッシュ及びＭＭＵ１１８及びデータ・キャッシュ及びＭＭＵ１１９に含まれているような高速キャッシュによって、プロセッサ１００は、メイン・メモリ１１６からキャッシュへ、前に転送されたデータ又は命令のサブセットへの比較的高速のアクセス・タイムを達成することができ、従って、全体的処理速度が改善される。データ・キャッシュ１１９及び命令キャッシュ１１８内にそれぞれ記憶されたデータ及び命令は、各々が実効アドレスによって識別及びアクセスされる。実効アドレスはメイン・メモリ１１６内の、それぞれのデータ又は命令のリアル・アドレスへ関連づけられる。
【００２６】
更に、命令キャッシュ及びＭＭＵ１１８は、各プロセッサ・サイクルの間に命令キャッシュ及びＭＭＵ１１８から実行のために命令をフェッチするシーケンシャル・フェッチャ１２０へ結合される。シーケンシャル・フェッチャ１２０は、命令キャッシュ及びＭＭＵ１１８からフェッチされたブランチ命令を、実行のためにブランチ処理ユニット（ＢＰＵ）１２１へ転送し、順次の命令を命令キュー１２２内に一時的に記憶する。命令は、デコーディングのために最終的にディスパッチ・ユニット１２４へ転送されて、実行ユニット１３０、１４０、又は１５０へディスパッチされる。
【００２７】
例示された実施形態では、ＢＰＵ１２１に加えて、プロセッサ１００の実行回路は、順次の命令を実行するための３つの別個の実行ユニット１３０、１４０、１５０を含む。この例示的プロセッサにおける第１の実行ユニット（ＥＸＵ＿１）１３０及び第２の実行ユニット（ＥＸＵ＿２）１４０は、固定小数点数学及び論理オペレーション、並びにデータをメモリからロードするロード・オペレーションを実行するように適合化されてよい。プロセッサ１００内の第３の実行ユニット（ＥＸＵ＿３）１５０は、複雑な固定小数点オペレーションを実行するように適合化されてよい。更に、第３の実行ユニット１５０は、データをメモリへ記憶する記憶オペレーションを実行することができる。各種の汎用目的及び浮動小数点レジスタが、オペランド及びオペレーション結果を一時的に記憶するため実行ユニット１３０、１４０、１５０に関連づけられていることは、当業者に明らかであろう。これらのレジスタは図１に示されていない。なぜなら、それらの動作の理解は、本発明のプレロード・キュー配列の理解には不必要だからである。
【００２８】
３つの実行ユニット１３０、１４０、１５０は、単なる例の目的で図１に示される。ここで説明されるプレロード・キュー配列は、この特定の実行ユニット配列又は他の実行ユニット配列へ限定されない。例えば、本発明は、固定小数点実行ユニット、浮動小数点実行ユニット、及びロード／記憶ユニットを含むプロセッサで使用されてよい。この実行ユニット配列及び他の実行ユニット配列は、この開示で設定されたシステムに等しいものと考えられる。
【００２９】
プロセッサ１００は、そのスーパースカラー・アーキテクチャのパフォーマンスを更に改善するために、命令のパイプライン実行及び順序外実行の双方を使用する。ハイパフォーマンス・プロセッサの場合に通常であるように、各々の順次の命令は、別個のパイプライン・ステージ、即ち、フェッチ、デコード／ディスパッチ、発行、実行、終了、及び完了のステージで処理される。命令は、データの依存性が遵守される限り、ＥＸＵ＿１１３０及びＥＸＵ＿２１４０によって任意の順序で実行されることができる。この例では、記憶命令及び記憶タイプの命令は、ＥＸＵ＿３によってプログラム順序で実行される。記憶タイプの命令は、記憶命令、及びキャッシュをフラッシュ又は無効にするような、記憶装置の状態を変更するキャッシュ・オペレータ・タイプの命令を含む。そのような記憶タイプの命令は、この開示及び請求範囲では、単に記憶命令又は記憶と呼ばれる。個々の実行ユニット１３０、１４０、１５０の中では、命令は、特定の実行ユニットに独特な一連のパイプライン・ステージで更に処理される。
【００３０】
フェッチ・ステージの間に、シーケンシャル・フェッチャ１２０は、１つ又は複数のメモリ・アドレスに関連づけられた１つ又は複数の命令を、命令キャッシュ及びＭＭＵ１１８から検索する。シーケンシャル・フェッチャ１２０は、命令キャッシュ及びＭＭＵ１１８からフェッチされた順次の命令を、命令キュー１２２に記憶する。ブランチ命令は、シーケンシャル・フェッチャ１２０によって、ＢＰＵ１２１へ実行のために除去又は展開される。ＢＰＵ１２１はブランチ予測メカニズム（別個には示されていない）を含む。このメカニズムは、１つの実施形態では、ブランチ履歴テーブルのような動的予測メカニズムを含む。このブランチ履歴テーブルによって、ＢＰＵ１２１は、ブランチが取られるかどうかを予測することによって、未解決の条件ブランチ命令を推論的に実行することができる。
【００３１】
デコード／ディスパッチ・ステージの間に、ディスパッチ・ユニット１２４は命令キュー１２２からの１つ又は複数の命令をデコードし、実行ユニット１３０、１４０、１５０へディスパッチする。本発明の好ましい形態では、ディスパッチ・ユニット１２４は、好ましくは、最も古い未実行の記憶命令を識別するための記憶トラッキング手段を含む。例えば、ディスパッチ・ユニット１２４は、好ましくは、実行ユニットの１つへディスパッチされるのを待っている命令のために、ディスパッチ・キュー（図示されていない）を含む。各記憶命令に関連づけられたプレデコード・ビットは、記憶命令を識別する。プレデコード・ビット・セットを有する最も古い命令は、これからディスパッチされるべき最も古い命令を表す。以下で、図２、図３、及び図４を特に参照して説明されるように、また、図１の線１２５及び１２６で示されるように、ディスパッチ・ユニット１２４は、プレロード・キュー１６０に関連づけられたフラッシュ信号生成手段からフラッシュ信号を更に受け取り、情報を比較ユニット１７０へ転送する。ディスパッチ・ユニット１２４から転送されるこの情報は、最も古い未実行の記憶命令の年齢を識別する識別子、及びキャンセルされるべきプレロード・エントリーを識別する識別子の双方を含むことができる。
【００３２】
実行ステージの間に、実行ユニット１３０、１４０、１５０は、ディスパッチ・ユニット１２４から発行された命令を実行する。更に、ロード命令を実行する各実行ユニット（例示された場合では、ユニット１３０及び１４０）は、プレロードを表す各ロード命令、即ち、プログラム順序で記憶命令の前に実行された各ロード命令を識別するためのプレロード識別手段を含む。以下で、図２、図３、及び図４を参照して説明されるように、実行ユニット１３０及び１４０に関連づけられたプレロード・キュー・ルーティング手段は、図１の線１３１及び１４１で示されるように、プレロード命令に関するアドレス及び識別情報をプレロード・キュー１６０へ転送する。更に、線１５１によって示されるように、実行ユニット１５０は、実行されている各記憶命令に関するアドレス及び識別情報を比較ユニット１７０へ転送する。一度、発行された命令が完全に実行されると、実行ユニット１３０、１４０、１５０は、もしあれば結果を、関連の汎用目的又は他のレジスタに記憶し、更に命令が実行を終了したことを完了ユニット１９０へ通知する。最後に、命令は、完了ユニット１９０に関連づけられた完了バッファ（別個には図示されていない）の外へとプログラム順序で完了する。
【００３３】
図２を参照すると、プレロード・キュー１６０は複数のレジスタ又はラッチ２０１、２０２、２０３、２０４、２０５を含む。図２には、本発明を例示するために５つの別々のレジスタが示されるが、プレロード・キュー１６０は、本発明の範囲内で、それよりも多い又は少ないレジスタを含んでよい。各レジスタはキュー・ロケーションを含み、且つ、実行されたプレロード命令に関連づけられたプレロード・エントリーを記憶するように適合化されている。
【００３４】
各プレロード・エントリーは、プレロード命令によって定義されたアドレス情報を含み、且つ、プレロード命令のための識別子を含む。アドレス情報は、変換されたリアル・アドレスそれ自体と、メモリ・アドレスに記憶されたデータのためのバイト・カウントを含む。従って、各プレロード・エントリーに含まれるアドレス情報は、それぞれのプレロード命令によって暗示された全メモリ位置を識別する。本発明の例示された形態において、識別子はＴＩＤ又はタグＩＤ及びＧＩＤ又はグループＩＤを含む。ＴＩＤは、命令がプログラム順序でシーケンシャル・フェッチャ１２０によってフェッチされるとき各命令へ割り当てられる順次の識別子を含む。従って、ＴＩＤは特定の命令を識別するだけでなく、プログラム順序に関して命令の相対的年齢の表示を与える。ＧＩＤは、プロセッサ１００の前の条件を復元するのに必要となるかも知れないプレロード命令に関する追加情報を含む。
【００３５】
この開示及び請求範囲で使用されるように、「識別子」の用語は、アドレス、及びこの開示で定義されるようなアドレス・マッチを決定するために使用される関連情報以外の、各プレロード・エントリーに含まれる必要のある情報を意味するために使用される。識別子は２つの機能を提供する。第１に、識別子は特定のプレロード命令を識別する。第２に、識別子は、プログラム順序に関して、識別された命令の相対的年齢を示す。本発明の例示された形態で説明されるＴＩＤは、識別子の双方の機能を実行するが、各プレロード・エントリーに含まれる２つの別個のエレメントによって機能を実行してよいことが分かるであろう。これらの多エレメント識別子は、ここで説明され且つ請求範囲で使用される単一エレメント識別子（ＴＩＤ）に等しいものと考えるべきである。
【００３６】
プレロード・キュー１６０の各レジスタ２０１、２０２、２０３、２０４、２０５は、図１及び図２の双方に示される転送線１３１を介してアドレス及びバイト・カウント並びに識別子を第１の実行ユニット１３０（図１）から受け取るように接続される。同様に、プレロード・キュー１６０内の各レジスタ２０１、２０２、２０３、２０４、２０５は、図１及び図２に示される転送線１４１を介して実行ユニット１４０からのアドレス、バイト・カウント、及び識別子を受け取るように接続される。プロセッサ１００内には、ロード命令を実行するために２つの実行ユニット（１３０及び１４０）が示されるが、それよりも多い又は少ない実行ユニットが、ロード命令を実行するためにプロセッサに含まれてよいことが分かるであろう。ロード実行ユニットの数に関係なく、そのような実行ユニットの各々は、アドレス情報及び識別子をプレロード・キュー１６０へ転送するための、線１３１及び１４１によって表されるような適切な接続を含む。
【００３７】
依然として図２を参照すると、参照番号２０８で概略的に示されるフラッシュ信号生成手段は、プレロード・キュー１６０と関連づけられる。プレロード・エントリーに関連づけられたプレロード命令が、実行されている記憶命令と衝突することを発見された場合、フラッシュ信号生成手段２０８は、目標のプレロードを識別するフラッシュ信号を与える。目標のプレロードは、以下で比較ユニット１７０を参照して説明される。フラッシュ信号は、プロセッサ１００を通してプロセッサ・フラッシング・オペレーションを開始するように適合化された、プロセッサ内に含まれるユニットへ導かれる。本発明の例示された形態では、ディスパッチ・ユニット１２４は、線１２５を介してフラッシュ信号を受け取り、フラッシュ信号に応答して、プロセッサ・フラッシング・オペレーションを開始する。このフラッシング・オペレーションは、プロセッサ１００に含まれる適切なフラッシング及び復元システムによって実行される。
【００３８】
比較ユニット１７０は、ラッチ２０９、又は実行されている記憶命令に関連づけられた識別子を記憶するための適切な他の記憶装置、及び第３の実行ユニット１５０によって現在実行されている記憶命令によって定義される変換されたアドレス情報を記憶するためのラッチ２１０を含む。本発明のこの形態では、識別子は記憶命令のＴＩＤを含み、アドレス情報は、実行ユニット１５０によって変換されたメモリ・アドレス、及びアドレスに関連づけられたデータのためのバイト・カウントを含む。比較ユニット１７０は、図１で線１５１として示される適切な転送配列を介して、記憶ＴＩＤ及び記憶アドレス情報の双方を実行ユニット１５０から受け取る。
【００３９】
更に、比較ユニット１７０は、一連の識別子比較器２１１、２１２、２１３、２１４、２１５、及び一連のアドレス比較器２２１、２２２、２２３、２２４、２２５を含む。プレロード・キュー１６０の各レジスタのために、即ち、各キュー・ロケーションのために、１つの識別子比較器及び１つのアドレス比較器が比較ユニット１７０の中に含まれる。更に、各識別子比較器及び各アドレス比較器は、それぞれ識別子（ＴＩＤ）及びアドレス／バイト・カウントをレジスタ２０１、２０２、２０３、２０４、２０５の異なった１つから受け取るように接続される。各識別子比較器２１１、２１２、２１３、２１４、２１５によって実行される比較は、それぞれのキュー・ロケーションに記憶されるプレロード・エントリーに関連づけられたプレロード命令よりも、記憶命令が古いか若いかを示す。２１０にラッチされた記憶アドレス情報と、それぞれのレジスタ２０１、２０２、２０３、２０４、２０５に記憶されたプレロード・アドレス情報との比較が、アドレス比較器２２１、２２２、２２３、２２４、２２５によって実行されると、記憶アドレスと、プレロード命令によって定義されるアドレスとの間に、メモリ位置の重複又はマッチがあるかどうかが示される。
【００４０】
識別子比較器２１１、２１２、２１３、２１４、２１５及びアドレス比較器２２１、２２２、２２３、２２４、２２５の結果は、コントローラ１８０へ導かれる。コントローラ１８０に関連づけられたキャンセル制御ロジックは、比較器の結果を適切なロジック・オペレーションで使用して、各々の衝突するプレロード・エントリーを識別する。もし記憶命令がプレロード・エントリーによって表された命令よりも古く、且つ、記憶命令アドレス情報によって定義されるメモリ位置と、プレロード命令アドレス情報によって定義されるメモリ位置との間に、マッチ又は重複があれば、プレロード・エントリーは衝突するプレロード・エントリーとして識別される。即ち、記憶命令に関して順序外の実行を行ったことによって、プレロード命令は、記憶命令が最初に実行されたのであれば変更されたデータをロードしている。従って、衝突するプレロード・エントリーに関連づけられたそれぞれのプレロード命令は、不適切に実行を行った。命令は、不適切に実行されたプレロード命令の後に実行された各命令と共に、プロセッサ１００に含まれる適切なフラッシング・メカニズムによってフラッシュされなければならず、且つ、再フェッチ及び再実行されなければならない。
【００４１】
訂正アクションを容易にするため、コントローラ１８０のキャンセル制御ロジックは、線１２５を介してディスパッチ・ユニット１２４へ戻されるフラッシュ信号を発生するように、フラッシュ信号生成手段２０８へ促す。フラッシュ信号は、目標のプレロード、即ち、プレロード・キュー１６０の中で、衝突するプレロード・エントリーによって表される最も古いプレロード命令の識別子を含む。ディスパッチ・ユニット１２４はこの識別子を使用して、フラッシング・オペレーションを開始し、且つ、好ましくは、比較ユニット１７０へ戻されるキャンセル信号を出す。キャンセル信号は、目標の命令を表すか関連づけられたプレロード・エントリー、及び目標のプレロードよりも若いプレロード命令によって表されるプレロード・エントリーをキャンセルするのに使用される。
【００４２】
図２に示されるように、例示された比較ユニット１７０に含まれるプレロード・エントリー・キャンセル配列は、キャンセル比較器２３１、２３２、２３３、２３４、２３５を含む。キャンセル配列は、線２２７上で、ディスパッチ・ユニット１２４（図１）からのキャンセル信号を、目標のプレロードのＴＩＤ形式で受け取る。各キャンセル比較器２３１、２３２、２３３、２３４、２３５は、目標プレロードの識別子（ＴＩＤ）と、それぞれのキュー・ロケーション（レジスタ２０１、２０２、２０３、２０４、又は２０５）に記憶された識別子（ＴＩＤ）とを比較する。各キャンセル比較器２３１、２３２、２３３、２３４、２３５の出力は、コントローラ１８０に含まれるキャンセル制御ロジックへ導かれる。もしそれぞれの比較によって、キャンセル信号（目標のプレロードＴＩＤ）が、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーによって表される命令と同じ古さ又はより古い命令に対するものであることが示されるならば、キャンセル制御ロジックは、それぞれのプレロード・エントリーを無効にし、新しいプレロード・エントリーを受け取るためにそれぞれの各キュー・ロケーションを利用できるようにする。プレロード・エントリーの有効／無効状況、従って、キュー・ロケーションの利用可能性は、好ましくは、コントローラ１８０に維持される。例えば、コントローラ１８０は、１つの状態では「有効」を示し、反対の状態では「無効」を示す単一のビットを、各レジスタ２０１、２０２、２０３、２０４、２０５のために有することができる。
【００４３】
本発明に従ったプレロード・キュー配列は、図２に示されるキャンセル比較器無しに実現されてよいことは、当業者に分かるであろう。本発明の代替の形態は、識別子比較器２１１、２１２、２１３、２１４、２１５を使用して、キャンセルするための衝突するプレロード・キュー・エントリーを識別することができる。
【００４４】
本発明の例示された形態は、プレロード・キュー１６０内で、各キュー・ロケーション又はレジスタに１つずつの除去比較器２４１、２４２、２４３、２４４、２４５を含む除去配列を更に含む。除去配列は、記憶命令をプログラム順序で実行するプロセッサに応用することができ、最も古い未実行の記憶命令の識別子、この場合はＴＩＤを受け取る。本発明の好ましい形態におけるこの情報は、ディスパッチ・ユニット１２４によって線２４７上に与えられる。線２４７は、図１に示される転送線１２４に含まれる。各除去比較器は、それぞれのキュー・ロケーション又はレジスタに記憶された識別子（即ち、それぞれのプレロード・エントリーに含まれる識別子）と、最も古い未実行の記憶のための識別子とを比較する。この比較の結果は、それぞれのプレロード・エントリー及びキュー・ロケーションに関連づけられたプレロード命令が、今や最も古い未実行の記憶命令よりも古いかどうか示す。コントローラ１８０に含まれる除去ロジックは、結果を除去比較器２４１、２４２、２４３、２４４、２４５から受け取り、もしプレロード・エントリーに関連づけられたプレロード命令が、最も古い未実行の記憶命令よりも古ければ、それぞれのプレロード・エントリーは無効にされる。これによって、無効にされたプレロード・エントリーのプレロード・キュー・ロケーションは、新しいプレロード・エントリーを受け取るために利用可能にされる。
【００４５】
例示された比較ユニット１７０は、キュー１６０内の有効なプレロード・エントリーに関連づけられた各プレロード命令の相対的年齢、及び実行ユニット１３０又は１４０の１つによって現在実行されている各プレロード命令の相対的年齢を決定するための順序づけ配列を更に含む。順序づけロジックは、比較器の結果に基づいて相対的年齢を決定するためコントローラ１８０に含まれ、且つ、好ましくは、各種のプレロード命令の順序を、コントローラに含まれるメモリに記憶する。コントローラ１８０、及びコントローラに含まれるキャンセル及び除去ロジックは、プレロード・エントリーを無効にするときに、この順序づけ情報を使用することができる。しかし、この順序づけ情報は、記憶が複数のプレロードとマッチするとき最も古いプレロードを識別する場合に、主として使用される。
【００４６】
異なったロード命令を同時に実行することのできる２つの別々の実行ユニット１３０及び１４０を含む本発明の例示された形態において、順序づけ配列は、実行されている２つのプレロードの識別子を比較するための「実行時」比較器２５０を含む。追加的に、各実行ユニットのために、順序づけ配列は、各レジスタ又はキュー・ロケーションのために順序づけ比較器を含む。図２に示されるように、実行ユニット１３０のための順序づけ比較器は、比較器２５１、２５２、２５３、２５４、２５５を含む。実行ユニット１４０のための順序づけ比較器は、比較器２６１、２６２、２６３、２６４、２６５を含む。これら順序づけ比較器の出力は、年齢又はプログラム順序に関して相対的順序を各種のプレロードへ割り当てるために順序づけロジックを含むコントローラ１８０へ導かれる。
【００４７】
本発明の好ましい形態において、コントローラ１８０は、順序外のロード実行とプレロード・キューのオーバフローとの相互作用に起因して生じるかも知れないプレロード・キュー１６０内のデッドロック条件を回避するためのデッドロック・ロジックを更に含む。もしユニット１３０又は１４０によって現在実行されているロードがプレロードであり、且つ、全てのレジスタ２０１、２０２、２０３、２０４、２０５が有効なエントリーを含んで、プレロード・キュー１６０が満杯であれば、その状態は２つの方法の１つで解決されてよい。第１に、もし実行されているプレロードが、プレロード・エントリーによって表されるプレロード命令よりも若ければ、コントローラ１８０に関連づけられたデッドロック・ロジックによって、実行されているプレロードはフラッシュされ且つ再フェッチされることができる。代替的に、もしプレロード・キューが、実行されているプレロードよりも若いプレロードを表すエントリーを有するならば、デッドロック・ロジックによって、より若いプレロードに関連づけられたプレロード・キュー１６０内のエントリーはキャンセルされ、プレロード命令はフラッシュ及び再フェッチされることができる。キャンセルされたエントリーを保持するキュー・ロケーション又はレジスタは、実行されているプレロードのためのアドレス情報及び識別子を記憶するために使用される。
【００４８】
本発明の方法及び装置の動作は、図２に示される装置、及び図３並びに図４のプロセス図を参照して説明することができる。図３及び図４の各々は、３つのセクションに分けられる。即ち、「実行」、「実行＋１」、及び「実行＋２」である。「実行」セクションはプロセッサ１００の実行サイクルを示し、「実行＋１」セクションはその直後に続くサイクルを示し、「実行＋２」は「実行＋１」の後の次のサイクルを示す。
【００４９】
図３の実行セクションを参照すると、本発明の方法は、プレロード・エントリーを、図１及び図２に示されるプレロード・キュー１６０へ記憶するステップ３０１及び３０２を含む。プレロード・エントリー情報は、それぞれのプレロードによって定義されるアドレス情報、及びそれぞれのプレロードに関連づけられた識別子を含む。本発明のこの形態では、ロードされるべき情報は、プレロードのためのＴＩＤ、及びプレロードのための変換されたアドレス並びにバイト・カウントを含む。本発明の好ましい形態では、プレロード・エントリーの間の順序づけは、レジスタ２０１、２０２、２０３、２０４、２０５（図２）内のエントリーの物理位置から別個に維持され、従って、各プレロード・エントリーは、「無効
」とマークされた最初のキュー・ロケーションのような、最初に利用可能なキュー・ロケーションへロードされる。
【００５０】
ここで、図３のサイクル「実行＋１」を参照すると、一度、プレロード・エントリー情報が、それぞれのレジスタ又はキュー・ロケーションへ記憶されると、プロセス・ステップ３０５で、それぞれのレジスタは好ましくは「有効」とマークされる。このステップは、図２のコントローラ１８０によって実行される。「有効」状態は、キュー・ロケーション又はレジスタが現在のプレロード・エントリーによって占拠されていることを示す。
【００５１】
実行サイクルへ戻って、図４のブロック３０７を参照すると、記憶命令が実行されるとき、更に具体的には、記憶アドレスが図１の実行ユニット１５０によって変換された後、記憶命令のためのリアル・アドレス及びバイト・カウントは、比較ユニット１７０に関連づけられたラッチ２１０（双方共に図２）に記憶される。記憶命令に関連づけられた識別子は、ラッチ２０９（同じく図２）に記憶される。
【００５２】
次のサイクル「実行＋１」で、本発明は各々の衝突するプレロード・エントリーを識別することを含む。この識別ステップは、本発明の例示された形態では、図２に示されるアドレス比較器２２１から２２５及び識別子比較器２１１から２１５によって実行される。アドレス比較器の出力は、どのプレロード・エントリー・アドレスが、記憶命令によってラッチ２１０（図２）の中に定義されたアドレスとマッチ又は重複するかを示すため、ブロック３０９（図４）で使用される。識別子比較器の出力は、どのプレロード・エントリーが、プログラム順序に関して、実行されている記憶命令よりも若いプレロード命令に関連づけられているかを決定するために、図４のプロセス・ブロック３１０で使用される。比較器の結果は、コントローラ１８０（図２）へ与えられる。もしコントローラ１８０に関連づけられたキャンセル制御ロジックが、図４のブロック３１２で、衝突するプレロードを識別すると、プロセス・ブロック３１４で、コントローラによって、図２のフラッシュ信号生成手段２０８はフラッシュ信号を転送することができる。図２に示される本発明の形態では、フラッシュ信号はディスパッチ・ユニット１２４へ戻される。フラッシュ信号は、目標のプレロードの識別子、この場合にはＴＩＤを含む。
【００５３】
本発明の例示された形態では、目標のプレロードのＴＩＤを含むキャンセル信号は、図４のブロック３１６で出される。このキャンセル信号は、図２の比較ユニット１７０に関連づけられたキャンセル比較器２３１から２３５へ導かれる。次に、サイクル「実行＋２」におけるキャンセル比較器は、目標のプレロードのＴＩＤと、各プレロード・エントリーに含まれる識別子とを比較する。マッチする識別子を有するプレロード・エントリーは、目標のプレロードのためのエントリーであり、目標のプレロードと同じ年齢又はより若いプレロード命令に関連づけられた各プレロード・エントリーと共に、図４のブロック３２０で無効にされる。
【００５４】
「実行」サイクルに戻って、更に本発明の方法は、好ましくは、プレロード・キュー１６０内のプレロード・エントリーによって表される命令、及びそのサイクルで現在実行されているプレロード命令を含む全てのプレロード命令の間で、相対的順序（プログラム順序）を決定することを含む。比較は、図２に示される比較器２５０から２５１及び２６１から２６５によって、図３のブロック３２２で実行される。これら比較器からの出力は、コントローラ１８０に関連づけられた順序づけロジックへ導かれる。図３のブロック３２４で、順序づけロジックはプレロードの相対的順序を決定し、好ましくは、その順序を、コントローラ１８０に関連づけられたアレイに記憶する。
【００５５】
これまで説明された好ましい実施形態は、本発明の原理を例示する意図で説明したもので、本発明の範囲を限定することを意図するものではない。各種の他の実施形態、及び、これらの好ましい実施形態に対する変更は、請求範囲から逸脱することなく当業者によって可能であるかも知れない。
【００５６】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）プロセッサ内でロード命令の順序外の実行を容易にする装置であって、
（ａ）プレロードを表す各ロード命令を識別するプレロード識別配列と、
（ｂ）複数のプレロード・エントリーを記憶する複数のキュー・ロケーションを有するプレロード・キューであって、各プレロード・エントリーは、プレロードに関連づけられて、それぞれのプレロードが実行されるとき割り振られ、（ｉ）それぞれのプレロードによって定義されるアドレス情報、及び（ｉｉ）それぞれのプレロードに関連づけられた識別子を含み、
（ｃ）ロード命令を実行するプロセッサ内の各実行ユニットに関連づけられたプレロード・キュー・ルーティング配列であって、プレロード・キュー・ルーティング配列は、それぞれの各プレロードによって定義されたアドレス情報及びそれぞれのプレロードに関連づけられた識別子をプレロード・キューへ転送し、
（ｄ）衝突するプレロード・エントリーをそれぞれ識別する比較ユニットであって、衝突するプレロード・エントリーは、（ｉ）実行されている記憶命令のアドレスとマッチするアドレスを定義し、（ｉｉ）実行されている記憶命令よりも若いプレロードに関連づけられるプレロード・エントリーを含み、
（ｅ）プレロード・キューに関連づけられ、目標のプレロードを識別するフラッシュ信号を提供するフラッシュ信号配列であって、目標のプレロードは、比較ユニットによって識別された衝突するプレロード・エントリーに関連づけられた最も古いプレロードを含むフラッシュ信号配列と
を含む装置。
（２）比較ユニットが、
（ａ）各キュー・ロケーションのアドレス比較器であって、それぞれのアドレス比較器は、実行されている記憶命令のアドレスと、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれるアドレス情報とを比較し、
（ｂ）各キュー・ロケーションの識別子比較器であって、それぞれの識別子比較器は、実行されている記憶命令及びそれぞれのプレロード・エントリーに関連づけられたプレロードの相対的年齢を決定するため、実行されている記憶命令の識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｃ）各アドレス比較器及び各識別子比較器から出力を受け取るために接続され、フラッシュ信号を提供するようにフラッシュ信号配列に命令する衝突制御ロジックと
を含む、上記（１）に記載の装置。
（３）（ａ）目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーをキャンセルするプレロード・エントリー・キャンセル配列を更に含む、
上記（１）に記載の装置。
（４）プレロード・エントリー・キャンセル配列が、
（ａ）各キュー・ロケーションのキャンセル比較器であって、それぞれのキャンセル比較器は、目標のプレロードに関連づけられた識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）各キャンセル比較器から出力を受け取るために接続され、目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーを無効にするキャンセル制御ロジックと
を含む、上記（３）に記載の装置。
（５）（ａ）最も古い未実行の記憶命令を決定し、最も古い未実行の記憶命令に関連づけられた識別子を転送する記憶トラッキング・ユニットと、
（ｂ）記憶トラッキング・ユニットによって転送された識別子を受け取り、最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去する除去比較器配列と
を更に含む、上記（１）に記載の装置。
（６）除去比較器配列が、
（ａ）各キュー・ロケーションの除去比較器であって、それぞれの除去比較器は、記憶トラッキング・ユニットによって転送された識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）各除去比較器から出力を受け取るために接続され、最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを無効にする除去制御ロジックと
を含む、上記（５）に記載の装置。
（７）（ａ）実行されている各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を示す順序づけ配列を
更に含む、上記（１）に記載の装置。
（８）順序づけ配列が、
（ａ）ロード命令を所与のサイクルで実行することのできるプロセッサ内の各実行ユニットについての、各キュー・ロケーションの順序づけ比較器であって、各順序づけ比較器は、実行ユニットの異なった１つによって実行されているプレロードに関連づけられた識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）実行されている各プレロードに関連づけられた識別子を比較する「実行時」比較器と、
（ｃ）各順序づけ比較器及び「実行時」比較器から出力を受け取るために接続され、前記出力に基づいて、プレロード・キュー・エントリーに関連づけられた各プレロード及び実行されている各プレロードの相対的年齢を決定する順序づけ制御ロジックと
を含む、上記（７）に記載の装置。
（９）順序づけ配列が、
（ａ）各キュー・ロケーションの順序づけ比較器であって、各順序づけ比較器は、実行されているプレロードに関連づけられた識別子と、それぞれのキュー・ロケーションに記憶されたプレロード・エントリーに含まれる識別子とを比較し、
（ｂ）各順序づけ比較器から出力を受け取るために接続され、前記出力に基づいて、実行されているプレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定する順序づけ制御ロジックと
を含む、上記（７）に記載の装置。
（１０）プロセッサ内でロード命令の順序外の実行を容易にする方法であって、（ａ）複数のプレロード・エントリーを記憶し、各プレロード・エントリーが、プレロードとして識別された命令に関連づけられ、それぞれのプレロードが実行される時点で割り振られ、各プレロード・エントリーが、（ｉ）それぞれのプレロードによって定義されるアドレス情報、及び（ｉｉ）それぞれのプレロードに関連づけられた識別子を含み、
（ｂ）各々の衝突するプレロード・エントリーを識別し、衝突するプレロード・エントリーが、（ｉ）実行されている記憶命令のアドレスとマッチするアドレスを定義し、また（ｉｉ）実行されている記憶命令よりも若いプレロードに関連づけられたプレロード・エントリーを含み、
（ｃ）目標のプレロードを識別するフラッシュ信号を発生し、目標のプレロードが、衝突するプレロード・エントリーに関連づけられた最も古いプレロードを含む
ステップを含む方法。
（１１）各々の衝突するプレロード・エントリーを識別するステップが、
（ａ）実行されている記憶命令のアドレスと、各プレロード・エントリーに含まれるアドレス情報とを比較し、
（ｂ）実行されている記憶命令及び各プレロード・エントリーに関連づけられたプレロードの相対的年齢を決定するため、実行されている記憶命令の識別子と、各プレロード・エントリーに含まれる識別子とを比較する
ステップを含む、上記（１０）に記載の方法。
（１２）（ａ）目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーをキャンセルする
ステップを更に含む、上記（１０）に記載の方法。
（１３）各々のプレロード・エントリーをキャンセルするステップが、
（ａ）目標のプレロードに関連づけられた識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）識別子の比較に基づいて、目標のプレロードに関連づけられたプレロード・エントリー、及び目標のプレロードと同じ若さ又はより若いプレロードに関連づけられた各プレロード・エントリーを無効にする
ステップを含む、上記（１２）に記載の方法。
（１４）（ａ）最も古い未実行の記憶命令を決定し、
（ｂ）最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去する
ステップを更に含む、上記（１０）に記載の方法。
（１５）最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去するステップが、
（ａ）最も古い未実行の記憶命令の識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）前記比較に基づいて、最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・キュー・エントリーを無効にする
ステップを含む、上記（１４）に記載の方法。
（１６）（ａ）実行されている各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定する
ステップを更に含む、上記（１０）に記載の方法。
（１７）実行されている各プレロード及びプレロード・エントリーに関連づけられた各プレロードの相対的年齢を決定するステップが、
（ａ）実行されている各プレロードに関連づけられた識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）実行されている各プレロードに関連づけられた識別子と、実行されている他の各プレロードの識別子とを比較し、
（ｃ）プレロード・エントリーに関連づけられた各プレロード及び実行されている各プレロードの相対的年齢が、前記識別子の比較に基づいて決定される
ステップを含む、上記（１６）に記載の方法。
（１８）（ａ）実行されているプレロードに関連づけられた識別子と、各プレロード・エントリーに含まれる識別子とを比較し、
（ｂ）前記識別子の比較に基づいて、プレロード・エントリーに関連づけられた各プレロード及び実行されているプレロードの相対的年齢を決定する
ステップを更に含む、上記（１０）に記載の方法。
（１９）ロード命令の順序外の処理をサポートするように適合化されたプロセッサ内で、プレロードとして識別された命令と記憶命令との間の衝突を検出する装置であって、
（ａ）複数のプレロード・エントリーを記憶する複数のキュー・ロケーションを有するプレロード・キューであって、各プレロード・エントリーは、プレロードに関連づけられ、（ｉ）それぞれのプレロードによって定義されるアドレス情報、及び（ｉｉ）それぞれのプレロードに関連づけられた識別子を含み、
（ｂ）それぞれの各プレロードによって定義されたアドレス情報、及びそれぞれのプレロードに関連づけられた識別子を、プレロード・キューへ転送するプレロード・キュー・ルーティング配列と、
（ｃ）各々の衝突するプレロード・エントリーを識別する比較ユニットであって、衝突するプレロード・エントリーは、（ｉ）実行されている記憶命令のアドレスとマッチするアドレスを定義し、また（ｉｉ）実行されている記憶命令よりも若いプレロードに関連づけられたプレロード・エントリーを含み、
（ｄ）最も古い未実行の記憶命令よりも古いプレロードに関連づけられた各プレロード・エントリーを除去する除去比較器配列と
を含む装置。
（２０）（ａ）最も古い未実行の記憶命令を決定し、最も古い未実行の記憶命令に関連づけられた識別子を除去比較器配列へ転送する記憶トラッキング・ユニットを
更に含む、上記（１９）に記載の装置。
【図面の簡単な説明】
【図１】本発明の原理を実体化したプロセッサの略図である。
【図２】図１に示されるプレロード・キュー、比較ユニット、及びキュー・コントローラの略図である。
【図３】図１及び図２に示されるプレロード・キュー配列がプレロードと記憶命令との間の衝突を避けるために動作する方法を示す図である。
【図４】図１及び図２に示されるプレロード・キュー配列がプレロードと記憶命令との間の衝突を避けるために動作する方法を示す図である。
【符号の説明】
１００  プロセッサ
１１３  システム・バス
１１４  バス・インタフェース・ユニット（ＢＩＵ）
１１５  プロセッサ・バス
１１６  メイン・メモリ
１１７  不揮発性大容量記憶装置
１１８  命令キャッシュ及びＭＭＵ
１１９  データ・キャッシュ及びＭＭＵ
１２０  シーケンシャル・フェッチャ
１２１  ブランチ処理ユニット（ＢＰＵ）
１２２  命令キュー
１２４  ディスパッチ・ユニット
１３０、１４０、１５０  実行ユニット
１６０  プレロード・キュー
１７０  比較ユニット
１８０  キュー・コントローラ
１９０  完了ユニット
２０１、２０２、２０３、２０４、２０５  レジスタ又はラッチ
２０８  フラッシュ信号配列
２０９、２１０  ラッチ
２１１、２１２、２１３、２１４、２１５  識別子比較器
２２１、２２２、２２３、２２４、２２５  アドレス比較器
２３１、２３２、２３３、２３４、２３５  キャンセル比較器
２４１、２４２、２４３、２４４、２４５  除去比較器
２５０  「実行時」比較器
２５１、２５２、２５３、２５４、２５５  比較器
２６１、２６２、２６３、２６４、２６５  比較器
【図１】
0003546403.tif 000002
【図２】
0003546403.tif 000003
【図３】
0003546403.tif 000004
【図４】
0003546403.tif 000005