(57)【要約】【課題】アウトオブオーダ・プロセッサ内の融合されたグローバル完了テーブル・エントリの完了のための技術を提供する。【解決手段】本発明の態様は、アウトオブオーダ（ＯｏＯ）プロセッサにおいて、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することを含んでいる。インフライトの命令の第１のグループは、グローバル完了テーブル（ＧＣＴ）のエントリ内の最も古いグループである。ＧＣＴ内のエントリが、インフライトの命令の第１のグループおよびインフライトの命令の第１のグループの直後にディスパッチされたインフライトの命令の第２のグループの両方に関連付けられたマージされたエントリであるということが、決定される。インフライトの命令の第１のグループおよびインフライトの命令の第２のグループは、単一のプロセッサ・サイクル内で完了する。この完了することは、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することに少なくとも部分的に基づく。この完了することは、インフライトの命令の第１および第２のグループの両方によって利用されるリソースの解放を要求することを含む。【選択図】図１
2021504807.tif 000002
【特許請求の範囲】
【請求項１】
アウトオブオーダ（ＯｏＯ）プロセッサの命令順序付けユニット（ＩＳＵ）において、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することであって、前記第１のグループは、インフライトの命令のグループのディスパッチ順序および状態を追跡するグローバル完了テーブル（ＧＣＴ）内のエントリに関連付けられ、前記ディスパッチ順序は、前記インフライトの命令の第１のグループが前記ＧＣＴに関連付けられた最も古いグループであるということを示す、前記検出することと、
前記ＧＣＴ内の前記エントリが、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第１のグループの直後にディスパッチされたインフライトの命令の第２のグループの両方に関連付けられたマージされたエントリであるということを決定することと、
単一のプロセッサ・サイクル内で、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループを完了することであって、前記完了することは、前記インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということの検出に少なくとも部分的に基づき、前記完了することは、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループの両方によって利用されるリソースの解放を要求することを含んでいる、前記完了することと
を含んでいる、コンピュータ実装方法。
【請求項２】
前記完了することが、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループによって利用される前記リソースを解放することをさらに含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項３】
前記マージされたエントリが、前記インフライトの命令の第２のグループの直前にディスパッチされたインフライトの命令の少なくとも１つの追加のグループにさらに関連付けられている、請求項１に記載のコンピュータ実装方法。
【請求項４】
前記リソースが、連続的順序で割り当てられた先入れ先出し（ＦＩＦＯ）リソースを含んでおり、前記解放を要求することが、ポインタを前記ＦＩＦＯリソース内の指定された位置に移動することの要求を含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項５】
前記ＦＩＦＯリソースが、読み込み順序変更キュー（ＬＲＱ）内のエントリ、格納順序変更キュー（ＳＲＱ）内のエントリ、および実効アドレス・テーブル（ＥＡＴ）内のエントリから成る前記グループから選択される、請求項４に記載のコンピュータ実装方法。
【請求項６】
前記リソースが、ランダムな順序で割り当てられたランダムな順序のリソースを含んでいる、請求項１に記載のコンピュータ実装方法。
【請求項７】
前記ランダムな順序のリソースが、レジスタ・マッパー・テーブルによって指定されたレジスタである、請求項６に記載のコンピュータ実装方法。
【請求項８】
システムであって、
コンピュータ可読命令を含んでいるメモリと、
前記コンピュータ可読命令を実行するための１つまたは複数のプロセッサと
を備えており、前記コンピュータ可読命令は、動作を実行するように前記１つまたは複数のプロセッサを制御し、前記動作は、
アウトオブオーダ（ＯｏＯ）プロセッサの命令順序付けユニット（ＩＳＵ）において、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することであって、前記第１のグループは、インフライトの命令のグループのディスパッチ順序および状態を追跡するグローバル完了テーブル（ＧＣＴ）内のエントリに関連付けられ、前記ディスパッチ順序は、前記インフライトの命令の第１のグループが前記ＧＣＴに関連付けられた最も古いグループであるということを示す、前記検出することと、
前記ＧＣＴ内の前記エントリが、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第１のグループの直後にディスパッチされたインフライトの命令の第２のグループの両方に関連付けられたマージされたエントリであるということを決定することと、
単一のプロセッサ・サイクル内で、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループを完了することであって、前記完了することは、前記インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということの検出に少なくとも部分的に基づき、前記完了することは、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループの両方によって利用されるリソースの解放を要求することを含んでいる、前記完了することと
を含んでいる、システム。
【請求項９】
前記完了することが、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループによって利用される前記リソースを解放することをさらに含んでいる、請求項８に記載のシステム。
【請求項１０】
前記マージされたエントリが、前記インフライトの命令の第２のグループの直前にディスパッチされたインフライトの命令の少なくとも１つの追加のグループにさらに関連付けられている、請求項８に記載のシステム。
【請求項１１】
前記リソースが、連続的順序で割り当てられた先入れ先出し（ＦＩＦＯ）リソースを含んでおり、前記解放を要求することが、ポインタを前記ＦＩＦＯリソース内の指定された位置に移動することの要求を含んでいる、請求項８に記載のシステム。
【請求項１２】
前記ＦＩＦＯリソースが、読み込み順序変更キュー（ＬＲＱ）内のエントリ、格納順序変更キュー（ＳＲＱ）内のエントリ、および実効アドレス・テーブル（ＥＡＴ）内のエントリから成る前記グループから選択される、請求項１１に記載のシステム。
【請求項１３】
前記リソースが、ランダムな順序で割り当てられたランダムな順序のリソースを含んでいる、請求項８に記載のシステム。
【請求項１４】
前記ランダムな順序のリソースが、レジスタ・マッパー・テーブルによって指定されたレジスタである、請求項１３に記載のシステム。
【請求項１５】
プログラム命令が具現化されているコンピュータ可読記憶媒体を備えているコンピュータ・プログラム製品であって、前記プログラム命令は、プロセッサに動作を実行させるように前記プロセッサによって実行可能であり、前記動作は、
アウトオブオーダ（ＯｏＯ）プロセッサの命令順序付けユニット（ＩＳＵ）において、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することであって、前記第１のグループは、インフライトの命令のグループのディスパッチ順序および状態を追跡するグローバル完了テーブル（ＧＣＴ）内のエントリに関連付けられ、前記ディスパッチ順序は、前記インフライトの命令の第１のグループが前記ＧＣＴに関連付けられた最も古いグループであるということを示す、前記検出することと、
前記エントリが、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第１のグループの直後にディスパッチされたインフライトの命令の第２のグループの両方に関連付けられた前記ＧＣＴ内のマージされたエントリであるということを決定することと、
単一のプロセッサ・サイクル内で、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループを完了することであって、前記完了することは、前記インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということの検出に少なくとも部分的に基づき、前記完了することは、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループの両方によって利用されるリソースの解放を要求することを含んでいる、前記完了することと
を含んでいる、コンピュータ・プログラム製品。
【請求項１６】
前記完了することが、前記インフライトの命令の第１のグループおよび前記インフライトの命令の第２のグループによって利用される前記リソースを解放することをさらに含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記マージされたエントリが、前記インフライトの命令の第２のグループの直前にディスパッチされたインフライトの命令の少なくとも１つの追加のグループにさらに関連付けられている、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１８】
前記リソースが、連続的順序で割り当てられた先入れ先出し（ＦＩＦＯ）リソースを含んでおり、前記解放を要求することが、ポインタを前記ＦＩＦＯリソース内の指定された位置に移動することの要求を含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
前記ＦＩＦＯリソースが、読み込み順序変更キュー（ＬＲＱ）内のエントリ、格納順序変更キュー（ＳＲＱ）内のエントリ、および実効アドレス・テーブル（ＥＡＴ）内のエントリから成る前記グループから選択される、請求項１８に記載のコンピュータ・プログラム製品。
【請求項２０】
前記リソースが、ランダムな順序で割り当てられたランダムな順序のリソースを含んでいる、請求項１５に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、一般に、アウトオブオーダ（ＯｏＯ：out-of-order）プロセッサに関し、特に、ＯｏＯプロセッサ内の融合された（coalesced）グローバル完了テーブル（ＧＣＴ：global completiontable）エントリを完了することに関する。
【背景技術】
【０００２】
ＯｏＯプロセッサでは、命令順序付けユニット（ＩＳＵ：instruction sequencing unit）が、グループ内の命令をさまざまな発行キューにディスパッチし、ＯｏＯ実行のサポートにおいてレジスタ名を変更し、さまざまな発行キューから実行パイプラインに命令を発行し、実行された命令を完了し、例外条件を処理する。レジスタ名の変更は、通常、命令が各発行キューに配置される前に、ＩＳＵ内のマッパー論理によって実行される。ＩＳＵの発行キュー内にある依存関係行列を使用して命令間の依存関係が追跡され、ＩＳＵ内のＧＣＴが、ディスパッチから完了までのすべてのインフライトの命令を追跡する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
アウトオブオーダ・プロセッサ内の融合されたグローバル完了テーブル・エントリの完了のための技術を提供する。
【課題を解決するための手段】
【０００４】
本発明の実施形態は、ＯｏＯプロセッサ内の融合されたグローバル完了テーブル（ＧＣＴ）エントリを完了するための方法、システム、およびコンピュータ・プログラム製品を含む。コンピュータ実装方法の非限定的な例は、ＯｏＯプロセッサの命令順序付けユニット（ＩＳＵ）において、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することを含む。第１のグループは、インフライトの命令のグループのディスパッチ順序および状態を追跡する、ＧＣＴ内のエントリに関連付けられる。ディスパッチ順序は、インフライトの命令の第１のグループが、ＧＣＴに関連付けられた最も古いグループであるということを示す。ＧＣＴ内のエントリが、インフライトの命令の第１のグループおよびインフライトの命令の第１のグループの直前にディスパッチされたインフライトの命令の第２のグループの両方に関連付けられたマージされたエントリであるということが、決定される。インフライトの命令の第１のグループおよびインフライトの命令の第２のグループは、単一のプロセッサ・サイクル内で完了する。この完了することは、インフライトの命令の第１のグループ内のすべての命令が終了の状態を有するということを検出することに少なくとも部分的に基づく。この完了することは、インフライトの命令の第１のグループおよびインフライトの命令の第２のグループの両方によって利用されるリソースの解放を要求することを含む。
【０００５】
その他の特徴および利点が、本発明の技術によって実現される。本発明のその他の実施形態および態様は、本明細書において詳細に説明され、請求される発明の一部と見なされる。本発明を利点および特徴と共によく理解するために、説明および図面を参照されたい。
【０００６】
本明細書に記載された専有権の詳細は、本明細書の最後にある特許請求の範囲において具体的に指摘され、明確に請求される。本発明の各実施形態の前述およびその他の特徴と利点は、添付の図面と併せて行われる以下の詳細な説明から明らかになる。
【図面の簡単な説明】
【０００７】
【図１】本発明の１つまたは複数の実施形態に従って、アウトオブオーダ（ＯｏＯ）プロセッサ内の融合されたグローバル完了テーブル（ＧＣＴ）エントリを提供するための、ＯｏＯプロセッサの命令順序付けユニット（ＩＳＵ）を含んでいるシステムのブロック図である。
【図２】本発明の１つまたは複数の実施形態に従って、ＯｏＯプロセッサ内の融合されたグローバル完了テーブル・エントリを提供するための、ＧＣＴ、ＧＣＴ内のリンク、およびＧＣＴエントリのグループ・タグ（ＧＴＡＧ：group tag）のブロック図である。
【図３】本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内のＧＣＴエントリを融合するフロー図である。
【図４】本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内のＧＣＴエントリを融合するブロック図である。
【図５】本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内の命令のグループによって利用されるリソースのブロック図である。
【図６】本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内の融合されたＧＣＴエントリを完了するためのフロー図である。
【図７】本発明の１つまたは複数の実施形態に従って、ＯｏＯプロセッサ内の融合されたＧＣＴエントリの一部または全部の態様を実装するための、コンピュータ・システムのブロック図である。
【発明を実施するための形態】
【０００８】
本明細書において示される図は、実例である。本発明の思想から逸脱することなく、本明細書に記載された図または動作の多くの変形が存在することが可能である。例えば、動作は異なる順序で実行されることが可能であり、あるいは動作は追加、削除、または変更されることが可能である。また、「結合される」という用語およびその変形は、２つの要素間に通信経路が存在することを表しており、それらの要素間に要素／接続が介在しない要素間の直接的接続を意味していない。これらのすべての変形は、本明細書の一部であると見なされる。
【０００９】
添付の図および開示された実施形態に関する以下の詳細な説明では、図に示されたさまざまな要素が、２桁または３桁の参照番号付きで提供されている。わずかな例外を除いて、各参照番号の左端の数字は、その要素が最初に示された図に対応している。
【００１０】
本明細書に記載された本発明の１つまたは複数の実施形態は、アウトオブオーダ（ＯｏＯ）プロセッサのグローバル完了テーブル（ＧＣＴ）内の融合されたエントリを提供する。融合されたエントリは、ＧＣＴ内の複数のエントリを単一のＧＣＴエントリに結合またはマージすることによって作成される。マージされたＧＣＴエントリに対応するグループ内の命令のすべてが終了した場合、マージされたエントリ内のグループのすべてが、単一のユニットとして同時に完了する。グループをＧＣＴ内の単一のエントリにマージすることは、命令の他のグループで使用するためにＧＣＴ内の空間を解放し、ＧＣＴのサイズおよび長時間の命令のグループの実行に起因するボトルネックを軽減することができる。
【００１１】
ＯｏＯプロセッサの命令順序付けユニット（ＩＳＵ）内のＧＣＴは、ディスパッチから完了までのすべてのインフライトの命令を追跡する。ディスパッチでは、グループ内の有効な命令を反映するように、命令のグループ内の終了ビットが設定される。命令が正常に（例えば、拒否されずに）実行された場合、その命令は、対応する終了ビットをリセットすることによって、終了としてマーク付けされ得る。グループ内の命令のすべてが終了としてマーク付けされ、このグループが特定のスレッドで最も古い場合、このグループは「完了」できる。グループが完了した場合、このグループのすべての命令の結果がアーキテクチャ的に可視になり、このグループの命令によって保持されているリソースが解放される。
【００１２】
本発明の１つまたは複数の実施形態に従って、フラッシュ生成もＩＳＵによって処理され、ＧＣＴは、破棄されるすべてのグループのフラッシュを、どのグループがフラッシュされるべきかを示すためにグループごとに１ビットを含むマスクに結合する。ＧＣＴは、グループ内のどの命令がフラッシュされるべきかを示すために、グループ内の命令ごとに１ビットを含むマスクを使用することによって、部分的なグループのフラッシュも実行できる。
【００１３】
本明細書において説明されているように、本発明の１つまたは複数の実施形態は、ＧＣＴエントリを結合し、命令の追加のグループのためにＧＣＴ内の空間またはエントリを解放する。本発明の１つまたは複数の実施形態に従って、より古いグループが完了する準備ができていないが、より若いグループが完了する準備ができている（例えば、グループ内のすべての命令が、異常／割り込みビットを伴わずに終了した）場合、２つのエントリを結合できる。その場合、ＧＣＴ内のより若いエントリ（命令のより若いグループに対応するエントリ）からの情報を、ＧＣＴ内のより古いエントリ（命令のより古いグループに対応するエントリ）に結合することができ、新しくディスパッチされた命令の別のグループで使用するために、ＧＣＴ内のより若いエントリを解放できる。より古いエントリがしばらく残されたまま、追加のより若いエントリを、引き続きより古いエントリ（ＧＣＴ内の最も古いエントリであることもあれば、そうでないこともある）と結合することができる。より古いエントリによって表された（または関連付けられた）グループ内の１つまたは複数の命令が終了しておらず、グループが完了できない場合、より古いグループが残される。例えば、より古いグループが、データをメイン・メモリまたはリモート・キャッシュから取得する必要のある読み込み命令を含んでいて、長い時間がかかるため、しばらくの間完了できない（すなわち、しばらくの間残される）ことがある。
【００１４】
より古いグループが最終的に完了した場合、より古いグループは、読み込み順序変更キュー（ＬＲＱ：load reorder queue）エントリ、格納順序変更キュー（ＳＲＱ：store reorder queue）エントリ、実効アドレス・テーブル（ＥＡＴ：effective address table）エントリ、およびより古いＧＣＴエントリに結合またはマージされたグループのすべての他のリソースを解放する。これによって、より古いグループに関連付けられた長時間実行される命令が完了するのを待つ必要なしに、命令のより若いグループに関連付けられたＧＣＴエントリを解放（割り当て解除）し、再利用（再割り当て）することができる。これは、リソースをより素早く開放することによって、使用可能なＧＣＴエントリの不足に起因するボトルネックになる、ＧＣＴによって引き起こされるディスパッチの保留の発生を抑えることにつながることができる。
【００１５】
本明細書において使用されるとき、「より若いグループ」という用語は、より最近（すなわち、「より古いグループ」内の命令のグループの後に）ディスパッチされた命令のグループを指す。本明細書において使用されるとき、「直後のグループ」または「次により若いグループ」という用語は、命令の指定されたグループがディスパッチされた後にディスパッチされた命令の第１のグループのことを指す。本明細書において使用されるとき、「直前のグループ」または「次により古いグループ」という用語は、命令の指定されたグループがディスパッチされる直前にディスパッチされた命令のグループのことを指す。本明細書において使用されるとき、「最も古いグループ」という用語は、ディスパッチの時間が最も早いＩＳＵ内の命令のグループ（すなわち、最も長い期間ＧＣＴ内に存在していた命令のグループ）のことを指す。
【００１６】
ここで図１を参照すると、本発明の１つまたは複数の実施形態に従って、アウトオブオーダ（ＯｏＯ）プロセッサ内の融合されたＧＣＴを提供するためのＯｏＯプロセッサの命令順序付けユニット（ＩＳＵ）を含んでいるシステム１００のブロック図が、一般的に示されている。図１に示されているシステム１００は、ＩＳＵのマッパー１１０に入力するためのデコードされた命令を準備する設定ブロック１０８に入力するための命令のグループをフェッチしてデコードする、命令フェッチ・ユニット／命令デコード・ユニット（ＩＦＵ／ＩＤＵ：instruction fetch unit/instruction decode unit）１０６を含んでいる。本発明の１つまたは複数の実施形態に従って、ＩＦＵ／ＩＤＵ１０６によって、スレッドからの一度に６つの命令がフェッチされ、デコードされ得る。本発明の１つまたは複数の実施形態に従って、設定ブロック１０８に送信される６つの命令は、６つの非分岐命令、５つの非分岐命令および１つの分岐命令、または４つの非分岐命令および２つの分岐命令を含むことができる。本発明の１つまたは複数の実施形態に従って、設定ブロック１０８は、フェッチされた命令をＩＳＵ内のそれらのブロックに送信する前に、発行キュー内のエントリ、完了テーブル、マッパー、およびその他のリソースなどの、十分なリソースが存在することをチェックする。
【００１７】
図１に示されているマッパー１１０は、プログラマの命令（例えば、論理レジスタ名）をプロセッサの物理リソース（例えば、物理レジスタ・アドレス）にマッピングする。図１には、条件レジスタ（ＣＲ：condition register）マッパー、リンク／カウント（ＬＮＫ／ＣＮＴ：link/count）レジスタ・マッパー、整数例外レジスタ（ＸＥＲ：exception register）マッパー、汎用レジスタ（ＧＰＲ：general purpose registers）およびベクトル−スカラ・レジスタ（ＶＳＲ：vector-scalar register）をマッピングするための統合マッパー（Ｕマッパー：UMapper）、ＧＰＲおよびＶＳＲをマッピングするための設計済みマッパー（ＡＲＣＨマッパー：architected mapper）、ならびに浮動小数点状態および制御レジスタ（ＦＰＳＣＲ：floating point status and control register）マッパーを含む、さまざまなマッパー１１０が示されている。
【００１８】
設定ブロック１０８からの出力が、現在のＩＳＵ内のすべての命令を追跡するためのグローバル完了テーブル（ＧＣＴ：global completion table）１１２にも入力される。設定ブロック１０８からの出力が、命令を発行キューにディスパッチするためのディスパッチ・ユニット１１４にも入力される。図１に示されているＩＳＵの実施形態は、ＣＲ発行キュー（ＣＲ  ＩＳＱ：CR issue queue）１１６を含んでおり、ＣＲ発行キュー１１６は、ＣＲマッパーから、関連するＣＲレジスタの物理レジスタ位置と共に、ＣＲ論理命令および移動命令を受信して追跡し、それらの命令を命令フェッチ・ユニット（ＩＦＵ）１２４に発行（１２０）して、ＣＲ論理命令および移動命令を実行する。図１には分岐発行キュー（分岐ＩＳＱ：branch issue queue）１１８も示されており、分岐発行キュー１１８は、分岐命令およびＬＮＫ／ＣＮＴ物理アドレスをＬＮＫ／ＣＮＴマッパーから受信して追跡し、実行する。分岐ＩＳＱ１１８は、予測された分岐アドレスまたは方向あるいはその両方が正しくなかった場合、命令をＩＦＵ１２４に発行（１２２）して、命令フェッチをリダイレクトすることができる。
【００１９】
ディスパッチ論理およびＬＮＫ／ＣＮＴマッパーからの名前が変更されたレジスタ、ＸＥＲマッパー、ＵＭａｐｐｅｒ（ＧＰＲ／ＶＳＲ）、ＡＲＣＨマッパー（ＧＰＲ／ＶＳＲ）、ならびにＦＰＳＣＲマッパーから出力された命令が、発行キュー１０２に入力される。図１に示されているように、発行キュー１０２は、ディスパッチされた固定小数点命令（ＦＸ：fixed point instructions）、読み込み命令（Ｌ：load instructions）、格納命令（Ｓ：store instructions）、およびベクトルおよびスカラ・ユニット（ＶＳＵ：vector-and-scaler unit）命令を追跡する。図１の実施形態に示されているように、発行キュー１０２は、２つの部分ＩＳＱ０  １０２０およびＩＳＱ１  １０２１に分割されており、各部分がＮ／２個の命令を保持する。プロセッサがＳＴモードで実行している場合、発行キュー１０２が、単一のスレッドのすべての命令（この例では、Ｎ個すべての命令）を処理するために、ＩＳＱ０  １０２０およびＩＳＱ１  １０２１の両方を含んでいる単一論理の発行キューとして使用され得る。
【００２０】
プロセッサがＳＭＴ（同時マルチスレッド）モードで実行している場合、ＩＳＱ０  １０２０が、第１のスレッドからのＮ／２個の命令を処理するために使用可能であり、ＩＳＱ１  １０２１が、第２のスレッドＩＳＱ１  １０２１からのＮ／２個の命令を処理するために使用される。
【００２１】
図１に示されているように、発行キュー１０２は、実行ユニットの２つのグループ（１０４０、１０４１）に分割されている実行ユニット１０４に、命令を発行する。図１に示されている実行ユニットの両方のグループ（１０４０、１０４１）は、完全固定小数点実行ユニット（full fixed point execution unit）（完全ＦＸ０、完全ＦＸ１）、読み込み実行ユニット（ＬＵ０、ＬＵ１）、簡易固定小数点（simple fixed point）、格納データ、および格納アドレス実行ユニット（簡易ＦＸ０／ＳＴＤ０／ＳＴＡ０、簡易ＦＸ１／ＳＴＤ１／ＳＴＡ１）、ならびに浮動小数点、ベクトル・マルチメディア実行、１０進浮動小数点、および格納データ実行ユニット（ＦＰ／ＶＭＸ／ＤＦＰ／ＳＴＤ０、ＦＰ／ＶＭＸ／ＤＦＰ／ＳＴＤ１）を含んでいる。
【００２２】
図１に示されているように、プロセッサがＳＴモードで実行している場合、実行ユニットの第１のグループ１０４０が、ＩＳＱ０  １０２０から発行された命令を実行し、実行ユニットの第２のグループ１０４１が、ＩＳＱ１  １０２１から発行された命令を実行する。プロセッサがＳＴモードで実行している場合の本発明の代替の実施形態では、発行キュー１０２内のＩＳＱ０  １０２０およびＩＳＱ１  １０２１の両方から発行された命令が、実行ユニットの第１のグループ１０４０および実行ユニットの第２のグループ１０４１内の実行ユニット１０４０のいずれかに含まれる実行ユニットに発行され得る。
【００２３】
本発明の１つまたは複数の実施形態に従って、プロセッサがＳＭＴモードで実行している場合、実行ユニットの第１のグループ１０４０が、ＩＳＱ０  １０２０から発行された第１のスレッドの命令を実行し、実行ユニットの第２のグループ１０４１が、ＩＳＱ１  １０２１から発行された第２のスレッドの命令を実行する。
【００２４】
本発明の実施形態が、さまざまな異なるサイズの発行キューおよびその他の要素に関して実装され得るため、図１に示されている発行キュー１０２内のエントリの数およびその他の要素のサイズ（例えば、バス幅、キュー・サイズ）は、実際は例示的であるよう意図されている。本発明の１つまたは複数の実施形態に従って、サイズが選択可能であるか、またはプログラム可能である。
【００２５】
ここで図２を参照すると、本発明の１つまたは複数の実施形態に従って、ＧＣＴ、ＧＣＴ内のエントリを順序付けるためのリンク、およびＧＣＴエントリを識別するためのグループ・タグ（ＧＴＡＧ）のブロック図２００が一般的に示されている。ブロック２０２は、（命令のより若いグループに関連付けられた）エントリ「１７」を（命令のより古いグループに関連付けられた）エントリ「４」にマージする前のＧＣＴ２０２２、リンク・テーブル２０２４、およびＧＴＡＧテーブル２０２６を示している。図２のブロック２０４は、ＧＣＴのエントリ「１７」の内容がエントリ「４」にマージされた後のＧＣＴ２０４２、リンク・テーブル２０４４、およびＧＴＡＧテーブル２０４６を示している。
【００２６】
前述したように、ＧＣＴ２０４は、ディスパッチから完了までのインフライトの命令を追跡する。命令のグループがディスパッチされるときに、ＧＣＴ２０４内のエントリに対応し、命令のグループを識別するＧＴＡＧが、グループに割り当てられる。ＧＴＡＧは、連続的に割り当てられ、インフライトの命令のグループのディスパッチ順序を追跡するために、本明細書に記載された１つまたは複数の実施形態によって利用される。インフライトの命令に関連付けられたリソースは、ＧＴＡＧを使用して、各リソースが割り当てられている命令のグループを識別することができる。命令のグループが完了した場合、完了しているグループに関連付けられたリソースを解放して新しい命令によって再利用できるように、完了ＧＴＡＧがブロードキャストされ得る。
【００２７】
ＯｏＯプロセッサでは、完了の前／完了の代わりに、命令がフラッシュされてよい。命令パイプラインから投機的命令をフラッシュする理由は、分岐予測ミス、読み込み／格納ＯｏＯ実行のハザード検出、コンテキスト同期命令の実行、および例外条件を含むが、これらに限定されない。本発明の１つまたは複数の実施形態に従って、ＧＣＴは、フラッシュされる命令に関連付けられたリソースを解放して新しい命令によって再利用できるように、完全なグループのフラッシュおよび部分的なグループのフラッシュの両方について、フラッシュ・グループＧＴＡＧをブロードキャストする。部分的なグループのフラッシュの場合、ＧＴＡＧは、どの命令がフラッシュされるかを示すマスクを伴うことができる。
【００２８】
前述したように、ブロック２０２は、（命令の、エントリ「４」より次に若いグループに関連付けられた）エントリ「１７」を（命令の、エントリ「１７」より次に古いグループに関連付けられた）エントリ「４」にマージする前のＧＣＴ２０２２、リンク・テーブル２０２４、およびＧＴＡＧテーブル２０２６を示している。ＧＣＴ２０２２内のエントリごとに、リンク・テーブル２０２４は、インフライトの命令の直後のグループ（より若いグループ）への順方向リンク、およびインフライトの命令の直前のグループ（より古いグループ）への逆方向リンクを格納する。図２のブロック２０２には、ＧＴＡＧテーブル２０２６も示されており、ＧＴＡＧテーブル２０２６は、ＧＣＴ２０２２内のエントリごとに、グループが完了するときにブロードキャストされるＧＴＡＧ（「完了」のラベル付きの列）、およびグループのすべてまたはサブセットがフラッシュされるときに使用されるＧＴＡＧ（「フラッシュ」のラベル付きの列）を含んでいる。
【００２９】
図２のブロック２０２に示されているように、ＧＣＴ２０２２内のエントリ「４」でのインフライトの命令のグループが最も古いインフライトの命令のグループ（逆方向リンクを含んでいない）であり、ＧＣＴ２０２２内のエントリ「３１」でのインフライトの命令のグループがＧＣＴ２０２２内で最も若いインフライトの命令のグループ（順方向リンクを含んでいない）である。ＧＣＴ２０２２内の最も古いエントリから開始する図２のブロック２０２に示されているインフライトの命令のグループのディスパッチ順序は、「３」のＧＴＡＧを含むＧＣＴエントリ「４」でのインフライトの命令のグループ、「４」のＧＴＡＧを含むＧＣＴエントリ「１７」でのインフライトの命令のグループ、「５」のＧＴＡＧを含むＧＣＴエントリ「１１」でのインフライトの命令のグループ、および「６」のＧＴＡＧを含むＧＣＴエントリ「３１」でのインフライトの命令のグループである。
【００３０】
図２のブロック２０４は、（命令の、エントリ「４」の次により若いグループに関連付けられた）エントリ「１７」が（命令の、エントリ「１７」の次により古いグループに関連付けられた）エントリ「４」にマージされた後のＧＣＴ２０４２、リンク・テーブル２０４４、およびＧＴＡＧテーブル２０４６を示している。マージが完了するときに、ＧＣＴ２０４２内のマージされたエントリ「４」は、マージ前の（「４」のＧＴＡＧを含む）エントリ「１７」でのグループ、および（「３」のＧＴＡＧを含む）エントリ「４」でのグループに関する完了情報を含んでいる。この完了情報は、マージ前にエントリ「４」に関連付けられていたインフライトのグループ内の命令のすべてが終了した後に、命令の両方のグループを完了するために使用され得る。この完了情報は、命令の両方のグループ内の格納動作の総数、命令の両方のグループ内の読み込み動作の総数、命令の両方のグループ内の命令の総数、およびマージされたグループのＧＴＡＧを含むことができるが、これらに限定されない。図２のブロック２０４に示されているように、エントリ「１７」および「４」のマージ後に、ＧＣＴ２０４２内のエントリ「１７」が解放または割り当て解除される。ＧＣＴ２０４２内の最も古いエントリから開始する図２のブロック２０４に示されているインフライトの命令のグループのディスパッチ順序（リンク・テーブル２０４４によって示されている）は、フラッシュに関する「３」のＧＴＡＧおよび完了に関する「４」のＧＴＡＧを含むＧＣＴエントリ「４」でのインフライトの命令のマージされたグループ、「５」のＧＴＡＧを含むＧＣＴエントリ「１１」でのインフライトの命令のグループ、および「６」のＧＴＡＧを含むＧＣＴエントリ「３１」でのインフライトの命令のグループである。
【００３１】
ＧＣＴエントリ「４」でのインフライトの命令のマージされたグループは、より古いグループが完了するのではなくフラッシュする場合、異なるＧＴＡＧを使用する。１つまたは複数の実施形態に従って、マージされたグループが完了するときに、マージされた命令のより若いグループのＧＴＡＧ以下（すなわち、より古い命令）に関連付けられたすべてのリソースが解放される。そのため、命令のより若いグループのＧＴＡＧを示すように、マージされたＧＣＴエントリの完了ＧＴＡＧが変更される。これは、フラッシュされた命令のグループのＧＴＡＧ以上（すなわち、より若い命令）に関連付けられたすべてのリソースが解放されることを引き起こす、マージされたグループをフラッシュする場合の状況とは対照的である。マージされたグループ内のより若いグループからのすべての命令がすでに終了しているため、より古いグループからの命令のみが、まだ終了していないことがあり、したがってフラッシュを引き起こすことができる。そのため、マージされたＧＣＴエントリのフラッシュＧＴＡＧが変更されず、命令のより古いグループのＧＴＡＧを示す。
【００３２】
図２のブロック２０２に示されたＧＣＴ２０２２は、すべての動作しているスレッドによって動的に共有され得る３２個のエントリを含んでいる。シングルスレッド（ＳＴ）モードでは、各ＧＣＴエントリが命令の１つのグループに対応する。マルチスレッド（ＭＴ）モード（例えば、同時ＭＴまたはＳＭＴ）では、各ＧＣＴエントリが、同じスレッドからの最大で２つのディスパッチ・グループを含むことができる。ＧＣＴ２０２２内の各エントリは、エントリに含まれているグループ内の命令ごとに終了ビットを含む。任意の数（例えば、１６、６４、１００、１２８、および２５６）のエントリをＧＣＴ２０２２に格納することができ、３２は、説明のための非限定的な例示的エントリ数であるよう意図されている。
【００３３】
ここで図３を参照すると、本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内のＧＣＴエントリを融合するフロー図３００が一般的に示されている。ブロック３０２で、インフライトのディスパッチされた命令のグループのディスパッチ順序を追跡するのを支援するために、ＧＴＡＧが、ディスパッチされた命令の各グループに連続的順序で割り当てられる。ブロック３０４で、インフライトの命令の（例えば、時間Ｔにディスパッチされた）より古いグループとマージするために、インフライトの命令の（例えば、時間Ｔ＋１にディスパッチされた）より若いグループが識別される。この識別することは、より若いグループ内のすべての命令が終了の状態を有するということを検出することを含むことができる。より若いグループは、ＧＣＴ内の第１の割り当てられたエントリに関連付けることができ、より若いグループの直前にディスパッチされたより古いグループは（より若いグループとより古いグループは隣接している）、ＧＣＴ内の第２の割り当てられたエントリに関連付けることができる。
【００３４】
ブロック３０６で、インフライトの命令の両方のグループに関する完了情報を含んでいるマージされた割り当て済みエントリを作成するために、より若いグループに関連付けられたＧＣＴ内のエントリの内容が、命令のより古い終了していないグループに関連付けられたＧＣＴ内のエントリの内容にマージされる。ブロック３０８で、より若いグループへのリンクを削除するように、ＧＣＴエントリ間の逆方向リンクおよび順方向リンクが更新される。ブロック３１０で、マージされたより古いグループの完了のために、マージされたグループの完了ＧＴＡＧが、より若いグループのＧＴＡＧに置き換えられ、一方、マージされたグループのフラッシュＧＴＡＧに対する変更は行われない。ブロック３１２で、より若いグループに関連付けられたＧＣＴエントリが割り当て解除され、命令の新しいグループによって使用可能になる。
【００３５】
ここで図４を参照すると、本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内のＧＣＴエントリを融合するブロック図４００が一般的に示されている。ブロック４０２は、図２に示されたＧＣＴ２０２２、リンク・テーブル２０２４、およびＧＴＡＧテーブル２０２６を論理的に表すための１つの選択肢であるリンク・リストを示している。ブロック４０４は、ＧＣＴエントリ「１７」および「４」が単一のマージされたエントリ「４」にマージされた後の、図２に示されたＧＣＴ２０４２、リンク・テーブル２０４４、およびＧＴＡＧテーブル２０４６を表すリンク・リストを示している。図４のブロック４０６に示されているように、より若いグループのエントリをより古いグループにマージすることは、ＧＣＴエントリ「１１」に関連付けられた命令のグループ内の命令のすべてが終了の状態を有しているということの検出に少なくとも部分的に基づいて、ＧＣＴエントリ「１１」がマージされたエントリ「４」にマージされることを続行することができる。マージの完了後に、ＧＣＴエントリ「１１」が再利用され、命令の新しいグループに関連付けられ得る。例示の目的で、図４は、より若いＧＣＴエントリがＧＣＴ内の最も古いエントリにマージされていることを示している。しかし、このメカニズムは、マージされている２つのエントリのうちの古い方が、ＧＣＴ内の最も古いエントリでない場合にも機能する。
【００３６】
ここで図５を参照すると、本発明の１つまたは複数の実施形態に従ってＯｏＯプロセッサ内の命令のグループによって利用される例示的なリソースのブロック図５００が一般的に示されている。図５は、命令のディスパッチ順序に基づいて連続的順序でアクセスされる先入れ先出し（ＦＩＦＯ：first-in-first-out）順序のリソース５０２、およびランダムな順序で命令のグループに割り当てられたランダムな順序のリソース５０４を含んでいる。読み込み順序変更キュー（ＬＲＱ）および格納順序変更キュー（ＳＲＧ）は、ＦＩＦＯ順序のリソース５０２の例である。本発明の１つまたは複数の実施形態に従って、ＬＲＱは、順序通り（ディスパッチ順序）の割り当ておよび割り当て解除によって特徴付けられ、命令のグループが完了するときに（最も古いエントリを指し示す）末尾ポインタが変更され、ＬＲＱはスレッドごとに分割される。例えば、命令のグループが２つの読み込み命令を含んでおり、グループが完了した場合、ＬＲＱの末尾ポインタが、キュー内で２エントリだけ進められる。本発明の１つまたは複数の実施形態に従って、より若い命令のグループが、次により古い命令のグループにマージされるときに、より若い命令のグループ内の読み込みの数が、より古い命令のグループ内の読み込みの数に追加される。マージされたグループが完了するときに、両方の命令のグループ内の読み込みを考慮するように、ＬＲＱの末尾ポインタが調整される。ＳＲＱはＬＲＱに類似しているが、ＳＲＱからキャッシュおよびメモリ・サブシステムへの格納排出後に、割り当て解除が発生することがある。ＦＩＦＯ順序のリソース５０２であることができる別のリソースは、順序通りの割り当ておよび割り当て解除によって特徴付けられ、スレッドを完了するために末尾ポインタが変更される、実効アドレス・テーブル（ＥＡＴ：effective address table）である。
【００３７】
図５に示されているレジスタ・マッパー・テーブルは、ランダムな順序のリソース５０４の一例である。レジスタ・マッパー・テーブルは、（ＧＴＡＧによって識別された）命令のグループを物理レジスタと関連付けるために（物理レジスタごとに１つのエントリ）、図１に示されているマッパー１１０によって生成され得る。図５のレジスタ・マッパー・テーブルに示されているように、「Ｒ」個のレジスタが存在し、「ＧＴＡＧ  Ｘ」のＧＴＡＧに関連付けられた命令のグループが物理レジスタ「１」および「４」を使用しており、「ＧＴＡＧ  Ｙ」のＧＴＡＧに関連付けられた命令のグループが物理レジスタ「２」、「３」、および「７」を使用している。命令のグループが完了し、完了ＧＴＡＧがブロードキャストされるときに、ブロードキャストされるＧＴＡＧ以下（すなわち、より古い命令のグループ）であるＧＴＡＧに関連付けられたすべての物理レジスタが、新しい命令のグループで使用するために解放される。命令のグループがフラッシュされ、フラッシュＧＴＡＧがブロードキャストされるときに、ブロードキャストされるＧＴＡＧ以上（すなわち、より若い命令のグループ）であるＧＴＡＧに関連付けられた物理レジスタが、新しい命令のグループで使用するために解放され得る。したがって、レジスタ・マッパー・テーブルは、例えばＧＣＴからフラッシュＧＴＡＧまたは完了ＧＴＡＧと共に受信されているフラッシュ・インジケータまたは完了インジケータに少なくとも部分的に基づいて、新たにディスパッチされる命令で使用するためにエントリを解放できる。
【００３８】
ここで図６を参照すると、本発明の１つまたは複数の実施形態に従って、ＯｏＯプロセッサ内の融合されたＧＣＴエントリを完了するためのフロー図６００が一般的に示されている。本発明の１つまたは複数の実施形態は、命令の２つ以上のグループをスキャン／完了するための単一の完了を可能にする。本発明の１つまたは複数の実施形態は、２つ以上の融合されたＧＣＴエントリの組み合わせを反映するＧＣＴエントリが完了するときに、リソースの解放を処理する。融合されたＧＣＴエントリが完了するときに、多くのリソースが解放され、新しい命令をディスパッチするために使用可能になることができる。先入れ先出し（ＦＩＦＯ）割り当て／割り当て解除メカニズムによって管理されるリソースは、（ＬＲＱリソース解放メカニズムに関して前述されたように）解放されるリソースの量だけ末尾ポインタを移動することによって、容易に解放され得る。ランダムな順序で割り当て／割り当て解除されるリソース（例えば、レジスタ・マッパー・テーブル）の場合、ブロードキャストされるＧＴＡＧの数値をマッパーの各エントリ内のＧＴＡＧ値と比較して、マッパーのどのエントリを解放するべきかを決定するために、状態マシンが採用され得る。例えば、完了が発生するときに、ブロードキャストされている完了ＧＴＡＧを、レジスタ・マッパー・テーブル内の各エントリ内のＧＴＡＧ値と比較して、マッパー・テーブル・エントリが、完了ＧＴＡＧ以下であるＧＴＡＧ値を含んでいるかどうかを判定し、そのエントリを解放することができる。同様に、フラッシュが発生するときに、ブロードキャストされているフラッシュＧＴＡＧを、レジスタ・マッパー・テーブル内の各エントリと比較して、マッパー・テーブル・エントリが、フラッシュＧＴＡＧ以上であるＧＴＡＧ値を含んでいるかどうかを判定し、そのエントリを解放することができる。
【００３９】
図６に示されたプロセス・フローのブロック６０２で、インフライトの命令のグループ内の命令の状態が監視される。ブロック６０４で、ＧＣＴ内のマージされたエントリに関連付けられたグループ内の命令のすべてが完了するということが決定された場合、処理がブロック６０６に進み、ブロック６０６で、マージされたエントリ内のすべてのグループに対して完了処理が実行される。本発明の１つまたは複数の実施形態に従って、この完了処理は、マージされたエントリ内の命令のグループのすべてによって利用されるリソースの解放を要求することおよびそのようなリソースを解放することを、含むことができる。前述したように、リソースは先入れ先出し（ＦＩＦＯ）リソースを含むことができ、解放を要求することは、ポインタをＦＩＦＯリソース内の指定された位置に移動することの要求を含むことができる。やはり前述したように、リソースはランダムな順序のリソースを含むことができ、解放を要求することは、特定のタグ（例えば、指定された値より小さいＧＴＡＧ）に関連付けられたエントリを削除することの要求を含むことができる。
【００４０】
ブロック６０４で、ＧＣＴ内のマージされたエントリに関連付けられたグループ内の命令のすべてが終了していないということが決定された場合、処理がブロック６０８に進み、ブロック６０８で、マージされたエントリに関連付けられたグループ内の命令のすべてまたはサブセットがフラッシュされるべきかどうかが判定される（例えば、グループ内の終了していない分岐命令が、現在実行されており、誤って予測されたということが検出され、誤って予測された分岐命令の直後のスレッドからのすべての命令のフラッシュが必要になる）。ブロック６０８で、ＧＣＴ内のマージされたエントリに関連付けられたグループ内の命令がフラッシュされるべきであるということが決定された場合、処理がブロック６１０に進み、ブロック６１０で、マージされたエントリ内のすべてのグループに対してフラッシュ処理が実行される。ブロック６０８で、ＧＣＴ内のマージされたエントリに関連付けられたグループ内の命令がフラッシュされるべきでないということが決定された場合、処理がブロック６０２に進み、インフライトの命令の状態を監視する。
【００４１】
図６に示されている処理は、融合されたＧＣＴエントリに関連付けられた複数のＧＴＡＧに割り当てられたリソースを１サイクル内で解放できるようにすることによって、高速な完了を実行する。例えば、１プロセッサ・サイクル当たり、スレッドごとに１つのグループの完了が許可された場合、およびＳＭＴ４コア内の４つのスレッドからの完了する準備ができた４つの融合されたグループが存在する場合、ならびにそれらの４つの融合されたグループが８つのＧＴＡＧを表す場合、８つすべてのＧＴＡＧに関連付けられたリソースが１サイクル内で解放され得る（命令ディスパッチのブロックを解除することができる）。
【００４２】
ここで図７を参照すると、本発明の１つまたは複数の実施形態に従って、ＯｏＯプロセッサ内の融合されたＧＣＴエントリを提供する一部または全部の態様を実装するためのコンピュータ・システムのブロック図が、一般的に示されている。本明細書に記載された処理は、ハードウェア、ソフトウェア（例えば、ファームウェア）、またはハードウェアとソフトウェアの組み合わせにおいて実装されてよい。実施形態例では、記載された方法は、少なくとも一部においてハードウェアに実装されてよく、モバイル・デバイス、パーソナル・コンピュータ、ワークステーション、マイクロコンピュータ、またはメインフレーム・コンピュータなどの、専用または汎用コンピュータ・システム７００のマイクロプロセッサの一部であってよい。
【００４３】
実施形態例では、図７に示されているように、コンピュータ・システム７００は、プロセッサ７０５、メモリ・コントローラ７１５に結合されたメモリ７１２、および１つもしくは複数の入力デバイス７４５、またはローカルＩ／Ｏコントローラ７３５を介して通信によって結合された周辺機器などの出力デバイス７４７、あるいはその組み合わせを含む。これらのデバイス７４７および７４５は、例えば、プリンタ、スキャナ、マイクロホンなどを含んでよい。従来のキーボード７５０およびマウス７５５は、Ｉ／Ｏコントローラ７３５に結合されてよい。Ｉ／Ｏコントローラ７３５は、例えば、１つまたは複数のバスあるいは従来技術において知られたその他の有線接続または無線接続であってよい。Ｉ／Ｏコントローラ７３５は、簡単にするために省略されている、通信を可能にするためのコントローラ、バッファ（キャッシュ）、ドライバ、リピータ、およびレシーバなどのその他の要素を含んでよい。
【００４４】
Ｉ／Ｏデバイス７４７、７４５は、例えばディスク・ストレージおよびテープ・ストレージ、ネットワーク・インターフェイス・カード（ＮＩＣ：network interface card）または変調器／復調器（他のファイル、デバイス、システム、またはネットワークにアクセスするため）、無線周波（ＲＦ：radio frequency）またはその他のトランシーバ、電話インターフェイス、ブリッジ、ルータなどの、入力および出力の両方と通信するデバイスをさらに含んでよい。
【００４５】
プロセッサ７０５は、ハードウェア命令またはソフトウェア、具体的には、メモリ７１２に格納されたハードウェア命令またはソフトウェアを実行するためのハードウェア・デバイスである。プロセッサ７０５は、カスタム・メイドであるか、または市販されたプロセッサ、中央処理装置（ＣＰＵ：central processing unit）、コンピュータ・システム７００に関連付けられた複数のプロセッサ間の補助プロセッサ、（マイクロチップまたはチップ・セットの形態での）半導体ベースのマイクロプロセッサ、マクロプロセッサ、もしくは命令を実行するためのその他のデバイスであってよい。プロセッサ７０５は、実行可能命令のフェッチを高速化するための命令キャッシュ、データのフェッチおよび格納を高速化するためのデータ・キャッシュ、および実行可能命令とデータの両方の仮想アドレスから物理アドレスへの変換を高速化するために使用されるトランスレーション・ルックアサイド・バッファ（ＴＬＢ：translation look-aside buffer）などのキャッシュを含むことができるが、これらに限定されない。キャッシュは、さらに多くのキャッシュ・レベル（Ｌ１、Ｌ２など）の階層として構造化されてよい。
【００４６】
メモリ７１２は、揮発性メモリ素子（例えば、ＤＲＡＭ、ＳＲＡＭ、ＳＤＲＡＭなどのランダム・アクセス・メモリ（ＲＡＭ：random access memory））および不揮発性メモリ素子（例えば、ＲＯＭ、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read only memory）、電子的消去可能プログラマブル読み取り専用メモリ（ＥＥＰＲＯＭ：electronically erasable programmable read only memory）、プログラマブル読み取り専用メモリ（ＰＲＯＭ：programmable read only memory）、テープ、コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read only memory）、ディスク、フロッピー（Ｒ）・ディスク、カートリッジ、カセットなど）のうちの１つまたは組み合わせを含んでよい。さらに、メモリ７１２は電子、磁気、光、またはその他の種類のストレージ媒体を組み込んでよい。メモリ７１２が、さまざまなコンポーネントが互いに遠く離れた位置にあるが、プロセッサ７０５によってアクセスされてよい、分散アーキテクチャを含むことができるということに注意する。
【００４７】
メモリ７１２内の命令は、１つまたは複数の別々のプログラムを含んでよく、それらのプログラムの各々は、論理的機能を実装するための実行可能命令の順序付けられたリストを含む。図７の例では、メモリ７１２内の命令は、適切なオペレーティング・システム（ＯＳ：operating system）７１１を含む。オペレーティング・システム７１１は、基本的に他のコンピュータ・プログラムの実行を制御することができ、スケジューリング、入出力制御、ファイルおよびデータの管理、メモリ管理、ならびに通信制御および関連するサービスを提供する。
【００４８】
例えば、プロセッサ７０５の命令またはその他の取り出し可能な情報を含む追加データが、ストレージ７２７に格納されてよく、ストレージ７２７はハード・ディスク・ドライブまたは半導体ドライブなどのストレージ・デバイスであってよい。メモリ７１２またはストレージ７２７に格納される命令は、プロセッサ７０５が本開示のディスパッチ・システムおよび方法の１つまたは複数の態様を実行できるようにする命令を含んでよい。
【００４９】
コンピュータ・システム７００は、ディスプレイ７３０に結合されたディスプレイ・コントローラ７２５をさらに含んでよい。実施形態例では、コンピュータ・システム７００は、ネットワーク７６５に結合するためのネットワーク・インターフェイス７６０をさらに含んでよい。ネットワーク７６５は、コンピュータ・システム７００と、外部サーバ、クライアントなどとの間での、ブロードバンド接続を介した通信用のＩＰベースのネットワークであってよい。ネットワーク７６５は、コンピュータ・システム７００と外部システムの間で、データを送受信する。実施形態例では、ネットワーク７６５は、サービス・プロバイダによって管理された管理ＩＰネットワークであってよい。ネットワーク７６５は、例えば、ＷｉＦｉ、ＷｉＭａｘなどの無線プロトコルおよび無線技術を使用して、無線方式で実装されてよい。ネットワーク７６５は、ローカル・エリア・ネットワーク、広域ネットワーク、メトロポリタン・エリア・ネットワーク、インターネット、またはその他の類似する種類のネットワーク環境などの、パケット交換ネットワークであってもよい。ネットワーク７６５は、固定無線ネットワーク、無線ローカル・エリア・ネットワーク（ＬＡＮ：local area network）、無線広域ネットワーク（ＷＡＮ：wide area network）、パーソナル・エリア・ネットワーク（ＰＡＮ：personal area network）、仮想プライベート・ネットワーク（ＶＰＮ：virtual private network）、インターネット、またはその他の適切なネットワーク・システムであってよく、信号を送受信するための機器を含んでよい。
【００５０】
ＯｏＯプロセッサ内の融合されたＧＣＴエントリを提供するためのシステムおよび方法が、コンピュータ・プログラム製品において、または図７に示されているようなコンピュータ・システム７００において、全体的または部分的に具現化され得る。
【００５１】
本明細書では、関連する図面を参照して、本発明のさまざまな実施形態が説明される。本発明の範囲を逸脱することなく、本発明の代替の実施形態が考案され得る。以下の説明および図面において、要素間のさまざまな接続および位置関係（例えば、上、下、隣接など）が示される。それらの接続または位置関係あるいはその両方は、特に規定されない限り、直接的または間接的であることができ、本発明はこの点において限定するよう意図されていない。したがって、各実体の結合は、直接的結合または間接的結合を指すことができ、各実体間の位置関係は、直接的位置関係または間接的位置関係であることができる。さらに、本明細書に記載されたさまざまな作業および工程段階は、本明細書に詳細に記載されない追加の段階または機能を含んでいるさらに包括的な手順または工程に組み込まれ得る。
【００５２】
以下の定義および略称が、特許請求の範囲および本明細書の解釈に使用される。本明細書において使用されているように、「備える」、「備えている」、「含む」、「含んでいる」、「有する」、「有している」、「含有する」、「含有している」という用語、またはこれらの任意のその他の変形は、非排他的包含をカバーするよう意図されている。例えば、要素のリストを含んでいる組成、混合、工程、方法、製品、または装置は、それらの要素のみに必ずしも限定されず、明示されていないか、またはそのような組成、混合、工程、方法、製品、もしくは装置に固有の、その他の要素を含むことができる。
【００５３】
さらに、「例示的」という用語は、本明細書では「例、事例、または実例としての役割を果たす」ことを意味するために使用される。「例示的」として本明細書に記載された実施形態または設計は、必ずしも他の実施形態または設計よりも好ましいか、または有利であると解釈されるべきではない。「少なくとも１つ」および「１つまたは複数」という用語は、１以上の任意の整数（すなわち、１、２、３、４など）を含んでいると理解されてよい。「複数」という用語は、２以上の任意の整数（すなわち、２、３、４、５など）を含んでいると理解されてよい。「接続」という用語は、間接的「接続」および直接的「接続」の両方を含んでよい。
【００５４】
「約」、「実質的に」、「近似的に」、およびこれらの変形の用語は、本願書の出願時に使用できる機器に基づいて、特定の量の測定に関連付けられた誤差の程度を含むよう意図されている。例えば、「約」は、特定の値の±８％または５％、あるいは２％の範囲を含むことができる。
【００５５】
簡潔さの目的で、本発明の態様の作成および使用に関連する従来手法は、本明細書に詳細に記載されることもあれば、記載されないこともある。具体的には、本明細書に記載されたさまざまな技術的特徴を実装するためのコンピューティング・システムおよび特定のコンピュータ・プログラムのさまざまな態様は、よく知られている。したがって、簡略にするために、多くの従来の実装に関する詳細は、本明細書では、既知のシステムまたは工程あるいはその両方の詳細を提供することなく、簡潔にのみ述べられるか、または全体的に省略される。
【００５６】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を含んでいるコンピュータ可読記憶媒体を含んでよい。
【００５７】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形のデバイスであることができる。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、またはこれらの任意の適切な組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のさらに具体的な例の非網羅的リストは、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ：random access memory）、読み取り専用メモリ（ＲＯＭ：read-onlymemory）、消去可能プログラマブル読み取り専用メモリ（ＥＰＲＯＭ：erasable programmable read-only memoryまたはフラッシュ・メモリ）、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ：static random access memory）、ポータブル・コンパクト・ディスク読み取り専用メモリ（ＣＤ−ＲＯＭ：compact disc read-only memory）、デジタル多用途ディスク（ＤＶＤ：digital versatile disk）、メモリ・スティック、フロッピー（Ｒ）・ディスク、パンチカードまたは命令が記録されている溝の中の隆起構造などの機械的にエンコードされるデバイス、およびこれらの任意の適切な組み合わせを含む。本明細書において使用されるとき、コンピュータ可読記憶媒体は、それ自体が、電波またはその他の自由に伝搬する電磁波、導波管またはその他の送信媒体を伝搬する電磁波（例えば、光ファイバ・ケーブルを通過する光パルス）、あるいはワイヤを介して送信される電気信号などの一過性の信号であると解釈されるべきではない。
【００５８】
本明細書に記載されたコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各コンピューティング・デバイス／処理デバイスへ、またはネットワーク（例えば、インターネット、ローカル・エリア・ネットワーク、広域ネットワーク、または無線ネットワーク、あるいはその組み合わせ）を介して外部コンピュータもしくは外部ストレージ・デバイスへダウンロードされ得る。このネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはその組み合わせを備えてよい。各コンピューティング・デバイス／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インターフェイスは、コンピュータ可読プログラム命令をネットワークから受信し、それらのコンピュータ可読プログラム命令を各コンピューティング・デバイス／処理デバイス内のコンピュータ可読記憶媒体に格納するために転送する。
【００５９】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ：instruction-set-architecture）命令、マシン命令、マシン依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいは、Ｊａｖａ（Ｒ）、Ｓｍａｌｌｔａｌｋ（Ｒ）、Ｃ＋＋などのオブジェクト指向プログラミング言語、および「Ｃ」プログラミング言語または同様のプログラミング言語などの従来の手続き型プログラミング言語を含む１つまたは複数のプログラミング言語の任意の組み合わせで記述されたソース・コードまたはオブジェクト・コードであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で全体的に実行すること、ユーザのコンピュータ上でスタンドアロン・ソフトウェア・パッケージとして部分的に実行すること、ユーザのコンピュータ上およびリモート・コンピュータ上でそれぞれ部分的に実行すること、あるいはリモート・コンピュータ上またはサーバ上で全体的に実行することができる。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ：local area network）もしくは広域ネットワーク（ＷＡＮ：wide area network）を含む任意の種類のネットワークを介してユーザのコンピュータに接続されてよく、または接続は、（例えば、インターネット・サービス・プロバイダを使用してインターネットを介して）外部コンピュータに対して行われてよい。一部の実施形態では、本発明の態様を実行するために、例えばプログラマブル論理回路、フィールドプログラマブル・ゲート・アレイ（ＦＰＧＡ：field-programmable gate arrays）、またはプログラマブル・ロジック・アレイ（ＰＬＡ：programmable logic arrays）を含む電子回路は、コンピュータ可読プログラム命令の状態情報を利用することによって、電子回路をカスタマイズするためのコンピュータ可読プログラム命令を実行してよい。
【００６０】
本発明の態様は、本明細書において、本発明の実施形態に従って、方法、装置（システム）、およびコンピュータ・プログラム製品のフローチャート図またはブロック図あるいはその両方を参照して説明される。フローチャート図またはブロック図あるいはその両方の各ブロック、ならびにフローチャート図またはブロック図あるいはその両方に含まれるブロックの組み合わせが、コンピュータ可読プログラム命令によって実装され得るということが理解されるであろう。
【００６１】
これらのコンピュータ可読プログラム命令は、コンピュータまたはその他のプログラム可能なデータ処理装置のプロセッサを介して実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施する手段を作り出すべく、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。これらのコンピュータ可読プログラム命令は、命令が格納されたコンピュータ可読記憶媒体がフローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作の態様を実施する命令を含んでいる製品を備えるように、コンピュータ可読媒体に格納され、コンピュータ、プログラム可能なデータ処理装置、または他のデバイス、あるいはその組み合わせに特定の方式で機能するように指示できるものであってもよい。
【００６２】
コンピュータ可読プログラム命令は、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方のブロックに指定される機能／動作を実施するように、コンピュータ、その他のプログラム可能なデータ処理装置、またはその他のデバイスに読み込まれ、コンピュータ実装プロセスを生成するために、コンピュータ上、その他のプログラム可能な装置上、またはその他のデバイス上で一連の動作可能なステップを実行させるものであってもよい。
【００６３】
図内のフローチャートおよびブロック図は、本発明のさまざまな実施形態に従って、システム、方法、およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能、および動作を示す。これに関連して、フローチャートまたはブロック図内の各ブロックは、規定された論理機能を実装するための１つまたは複数の実行可能な命令を備える、命令のモジュール、セグメント、または部分を表してよい。一部の代替の実装では、ブロックに示された機能は、図に示された順序とは異なる順序で発生してよい。例えば、連続して示された２つのブロックは、実際には、含まれている機能に応じて、実質的に同時に実行されるか、または場合によっては逆の順序で実行されてよい。ブロック図またはフローチャート図あるいはその両方の各ブロック、ならびにブロック図またはフローチャート図あるいはその両方に含まれるブロックの組み合わせは、規定された機能または動作を実行するか、または専用ハードウェアとコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装され得るということにも注意する。
【００６４】
本発明のさまざまな実施形態の説明は、例示の目的で提示されているが、網羅的であることは意図されておらず、開示された実施形態に限定されない。説明された実施形態の範囲および思想を逸脱することなく多くの変更および変形が可能であることは、当業者にとって明らかである。本明細書で使用された用語は、実施形態の原理、実際の適用、または市場で見られる技術を超える技術的改良を最も適切に説明するため、または他の当業者が本明細書で開示された実施形態を理解できるようにするために選択された。
【図１】
2021504807.tif 000003
【図２】
2021504807.tif 000004
【図３】
2021504807.tif 000005
【図４】
2021504807.tif 000006
【図５】
2021504807.tif 000007
【図６】
2021504807.tif 000008
【図７】
2021504807.tif 000009
【国際調査報告】
2021504807.tif 000010
2021504807.tif 000011