(57)【要約】      （修正有）【課題】バイパスマルチプルインスタンス化テーブルロジックを用いて移動演算を除去する事により物理レジスタ間データコピー演算を最適化する。【解決手段】処理システムは、複数の物理レジスタ値を記憶するように構成された第１のデータ構造体と、複数のポインターを記憶するように構成された第２のデータ構造体であって、各ポインターは第１のデータ構造体の要素を参照する第２のデータ構造体と、複数の移動除去セットを含む第３のデータ構造体であって、各移動除去セットは複数の論理レジスタを表す複数のビットを含む第３のデータ構造体と、第２のデータ構造体の要素に第１のデータ構造体の要素を参照させることによってデータ操作演算を実行するように構成されたロジックであって、第３のデータ構造体の単一の更新を実行することによって２つ以上のデータ操作演算の結果を反映するように更に構成されているロジックとを備えることができる。【選択図】図１
2014182803.tif 000002
【特許請求の範囲】
【請求項１】
複数の物理レジスタ値を記憶する第１のデータ構造体と、
それぞれが前記第１のデータ構造体の要素を参照する複数のポインターを記憶する第２のデータ構造体と、
それぞれが複数の論理レジスタを表す複数のビットを含む複数の移動除去セットを含む第３のデータ構造体と、
前記第２のデータ構造体の要素に前記第１のデータ構造体の要素を参照させることによってデータ操作演算を実行し、さらに前記第３のデータ構造体の一回の更新を実行することによって２つ以上のデータ操作演算の結果を反映するロジックと、
を備える、処理システム。
【請求項２】
前記第３のデータ構造体の前記更新は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを含む、請求項１に記載の処理システム。
【請求項３】
前記ロジックは、２つ以上のデータ操作演算の従属関係を事前に計算することに基づいて前記第３のデータ構造体を更新する、請求項１または２に記載の処理システム。
【請求項４】
前記ロジックはさらに、整数汎用論理レジスタ領域における第１の移動除去セット又はストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタ領域における第２の移動除去セットのうちの少なくとも一方を予約する、請求項１から３の何れか１項に記載の処理システム。
【請求項５】
前記ロジックは、前記第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、前記第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及び前記データ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、前記第３のデータ構造体を更新する信号を出力する、請求項１から４の何れか１項に記載の処理システム。
【請求項６】
前記ロジックは、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第２のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出する、請求項１から５の何れか１項に記載の処理システム。
【請求項７】
データ操作演算を実行する方法であって、
コンピューターシステムによって複数の物理レジスタ値を第１のデータ構造体に記憶することと、
それぞれが前記第１のデータ構造体の要素を参照する複数のポインターを第２のデータ構造体に記憶することと、
それぞれが複数の論理レジスタを表す複数のビットを含む複数の移動除去セットを第３のデータ構造体に記憶することと、
前記第２のデータ構造体の要素に前記第１のデータ構造体の要素を参照させることによってデータ操作演算を実行することと、
前記第３のデータ構造体の一回の更新を実行することによって２つ以上のデータ操作演算の結果を反映することと、
を含む、方法。
【請求項８】
前記第３のデータ構造体を更新することは、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを含む、請求項７に記載の方法。
【請求項９】
整数汎用論理レジスタ領域における第１の移動除去セット又はストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタ領域における第２の移動除去セットのうちの少なくとも一方を予約することを更に含む、請求項７または８に記載の方法。
【請求項１０】
前記第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、前記第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及び前記データ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、前記第３のデータ構造体を更新する信号を出力することを更に含む、請求項７から９の何れか１項に記載の方法。
【請求項１１】
第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第２のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することを更に含む、請求項７から１０の何れか１項に記載の方法。
【請求項１２】
前記第３のデータ構造体の前記更新は、２つ以上のデータ操作演算の従属関係を事前に計算することに基づいて実行される、請求項７から１１の何れか１項に記載の方法。
【請求項１３】
複数の物理レジスタ値を記憶するように構成された第１のデータ構造体と、
それぞれが前記第１のデータ構造体の要素を参照する複数のポインターを記憶する第２のデータ構造体と、
第１の複数の移動除去セット及び第２の複数の移動除去セットを含む第３のデータ構造体と、
前記第１の複数の移動除去セットのうちの第１の移動除去セット及び前記第２の複数の移動除去セットのうちの第２の移動除去セットを予約し、前記第２のデータ構造体と、前記第１の移動除去セット又は前記第２の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行するロジックと、
を備え、
前記第１の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、前記第２の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタを表す複数のビットを含む
処理システム。
【請求項１４】
前記ロジックはさらに、前記第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、前記第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及び前記データ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、前記第３のデータ構造体を更新する信号を出力する、請求項１３に記載の処理システム。
【請求項１５】
前記ロジックはさらに、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第２のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出する、請求項１３または１４に記載の処理システム。
【請求項１６】
前記ロジックはさらに、
２つ以上のデータ操作演算の従属関係を事前に計算し、
前記第３のデータ構造体の一回の更新を実行することによって前記２つ以上のデータ操作演算の結果を反映する請求項１３から１５の何れか１項に記載の処理システム。
【請求項１７】
前記ロジックはさらに、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを実行する請求項１３から１６の何れか１項に記載の処理システム。
【請求項１８】
データ操作演算を実行する方法であって、
コンピューターシステムによって複数の物理レジスタ値を第１のデータ構造体に記憶することと、
それぞれが前記第１のデータ構造体の要素を参照する複数のポインターを第２のデータ構造体に記憶することと、
第１の複数の移動除去セット及び第２の複数の移動除去セットを第３のデータ構造体に記憶することと、
前記第１の複数の移動除去セットのうちの第１の移動除去セット及び前記第２の複数の移動除去セットのうちの第２の移動除去セットを予約することと、
前記第２のデータ構造体と、前記第１の移動除去セット又は前記第２の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行することと、
を含み、
前記第１の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、前記第２の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタを表す複数のビットを含む
方法。
【請求項１９】
前記第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、前記第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及び前記データ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、前記第３のデータ構造体を更新する信号を出力することを更に含む、請求項１８に記載の方法。
【請求項２０】
第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第２のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することを更に含む、請求項１８または１９に記載の方法。
【請求項２１】
２つ以上のデータ操作演算の従属関係を事前に計算することと、
前記第３のデータ構造体の一回の更新を実行することによって前記２つ以上のデータ操作演算の結果を反映することと、
を更に含む、請求項１８から２０の何れか１項に記載の方法。
【請求項２２】
移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを実行することを更に含む、請求項１８から２１の何れか１項に記載の方法。
【請求項２３】
メモリと、
前記メモリに結合された処理システムと、
を備え、
前記処理システムは、請求項７〜１２のいずれか１項に記載の方法を実行する装置。
【請求項２４】
メモリと、
前記メモリに結合された処理システムと、
を備え、
前記処理システムは、請求項１８〜２２のいずれか１項に記載の方法を実行する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、包括的には、コンピューターシステムに関し、特に、コンピューターシステムによるデータコピー命令の実行効率を改善することに関する。
【背景技術】
【０００２】
物理レジスタ間のデータコピー演算は、プロセッサによって実行される演算のかなりの部分に相当する。したがって、それらのデータコピー演算の実行を最適化することによって、プロセッサの全体的な性能を高めることができる。
【図面の簡単な説明】
【０００３】
本開示は、限定としてではなく例示として示され、以下の詳細な説明が図とともに検討されるとき、以下の詳細な説明を参照することによってより十分に理解することができる。
【図１】本開示の１つ又は複数の態様による一例示のコンピューターシステムのハイレベル構成図である。
【図２】本開示の１つ又は複数の態様によるプロセッサのブロック図である。
【図３Ａ】本開示の１つ又は複数の態様によるプロセッサマイクロアーキテクチャの要素を概略的に示す図である。
【図３Ｂ】本開示の１つ又は複数の態様によるプロセッサマイクロアーキテクチャの要素を概略的に示す図である。
【図４】本開示の１つ又は複数の態様による、図１の例示のコンピューターシステム１００の一例示のプロセッサ及び他の構成要素の幾つかの態様を概略的に示す図である。
【図５】本開示の１つ又は複数の態様による、レジスタエイリアシングによって移動演算（move operation：ムーブ演算）を実行する一例を概略的に示す図である。
【図６Ａ】本開示の１つ又は複数の態様による、マルチプルインスタンス化テーブル（ＭＩＴ）を物理レジスタファイル（ＰＲＦ）エントリー追跡に用いることを概略的に示す図である。
【図６Ｂ】本開示の１つ又は複数の態様による、マルチプルインスタンス化テーブル（ＭＩＴ）を物理レジスタファイル（ＰＲＦ）エントリー追跡に用いることを概略的に示す図である。
【図６Ｃ】本開示の１つ又は複数の態様による、マルチプルインスタンス化テーブル（ＭＩＴ）を物理レジスタファイル（ＰＲＦ）エントリー追跡に用いることを概略的に示す図である。
【図７Ａ】本開示の１つ又は複数の態様によるＭＩＴアロケーション／予約ロジックを概略的に示す図である。
【図７Ｂ】本開示の１つ又は複数の態様によるＭＩＴアロケーション／予約ロジックを概略的に示す図である。
【図７Ｃ】本開示の１つ又は複数の態様によるＭＩＴアロケーション／予約ロジックを概略的に示す図である。
【図８Ａ】本開示の１つ又は複数の態様によるＭＩＴオーファンリクラメーションロジックを概略的に示す図である。
【図８Ｂ】本開示の１つ又は複数の態様によるＭＩＴオーファンリクラメーションロジックを概略的に示す図である。
【図８Ｃ】本開示の１つ又は複数の態様によるＭＩＴオーファンリクラメーションロジックを概略的に示す図である。
【図９Ａ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図９Ｂ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図９Ｃ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１０Ａ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１０Ｂ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１０Ｃ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１１Ａ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１１Ｂ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１１Ｃ】本開示の１つ又は複数の態様による、バイパスＭＩＴロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
【図１２】本開示の１つ又は複数の態様による、移動除去ロジックを実施する一例示の回路を概略的に示す図である。
【図１３】本開示の１つ又は複数の態様による一例示の方法の流れ図である。
【図１４】本開示の１つ又は複数の態様による一例示のコンピューターシステムのブロック図である。
【発明を実施するための形態】
【０００４】
本明細書では、バイパスマルチプルインスタンス化テーブル（ＭＩＴ）ロジックを用いて移動除去を実施するためのコンピューターシステム及び関連技術が説明される。「移動除去」とは、本明細書においては、（例えば、レジスタエイリアステーブル内のエントリーを変更することによって）実行ユニットを用いることなくレジスタコピー演算を実行することを指すものとする。
【０００５】
プロセッサは、命令実行効率を改善するために、レジスタエイリアシングを実施することができる。すなわち、物理レジスタファイル（ＰＲＦ）と呼ばれる第１のデータ構造体を用いて、物理レジスタ値を記憶することができ、レジスタエイリアステーブル（ＲＡＴ）と呼ばれる第２のデータ構造体を用いて、論理レジスタ識別子（例えば、Ｒ８又はＡＸ等）をＰＲＦに記憶された値にマッピングするポインターを記憶することができる。レジスタエイリアシングによって、或る特定(certain)の命令を実行ユニットに送信することなく、エイリアステーブル内のエントリーを変更することによって、それらの命令を実行することが可能になる。そのような命令の例には、レジスタゼロ化命令（例えば、ＸＯＲ  ＡＸ，ＡＸ等）及びレジスタコピー命令（ＭＯＶ命令等）が含まれる。レジスタコピー命令は、新たな値を作成しないので、ソースレジスタポインターをＲＡＴにおけるデスティネーションレジスタポインター内にコピーすることができ、そのため、この命令は、実行ユニット及び別のＰＲＦエントリーを用いる必要がない。このプロセスは、移動命令が、実行ユニットに送信されるストリームから除去されるので、「移動除去」と呼ばれる。
【０００６】
上述したレジスタエイリアシング方式では、ＰＲＦエントリーを新たな命令による使用のためにいつ解放することができるのかを判断するために、ＰＲＦテーブルエントリーの使用状態を追跡することが必要な場合がある。本明細書において以下でより詳細に説明するように、ＰＲＦテーブルエントリーの使用状態を追跡するには、マルチプルインスタンス化テーブル（ＭＩＴ）と呼ばれる第３のデータ構造体を用いることができる。
【０００７】
本明細書において説明するシステム及び方法は、２つ以上のデータ操作演算の従属関係を事前に計算し、次いで、それらの２つ以上の演算の結果を反映するように単一のＭＩＴ更新を実行することができ、したがって、移動除去演算のタイミング及び電力消費の双方の側面を改善することができる。上記方法及びシステムの様々な態様は、本明細書において以下で限定としてではなく例示として詳細に説明される。
【０００８】
以下の説明では、本発明の十分な理解を提供するために、特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ及びマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令タイプ、特定のシステム構成要素、特定の測定値／高さ、特定のプロセッサパイプラインステージ及び演算等の例等の多数の特定の詳細が述べられる。しかしながら、本発明を実施するのに、これらの特定の詳細を必ずしも用いなくてもよいことが当業者には明らかであろう。それ以外の場合には、特定のプロセッサアーキテクチャ及び代替のプロセッサアーキテクチャ、説明されるアルゴリズムのための特定の論理回路／コード、特定のファームウェアコード、特定の相互接続動作、特定の論理構成、特定の製造技法及び材料、特定のコンパイラーの実施態様、コードによるアルゴリズムの特定の表現、特定の電源切断技法及びゲーティング技法／ロジック、並びにコンピューターシステムの他の特定の動作の詳細等のよく知られた構成要素又は方法は、本発明を不必要に分かりにくくしないように詳細には説明されていない。
【０００９】
以下の実施形態は、プロセッサに関して説明されるが、他の実施形態は、他のタイプの集積回路及びロジックデバイスに適用可能である。本発明の実施形態の同様の技法及び教示内容は、より高いパイプラインスループット及び改善された性能から利益を受けることができる他のタイプの回路又は半導体デバイスに適用することができる。本発明の実施形態の教示内容は、データ操作を実行する任意のプロセッサ又は機械に適用可能である。しかしながら、本発明は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビット、又は１６ビットのデータ演算を実行するプロセッサ又は機械に限定されるものではなく、データの操作又は管理が実行される任意のプロセッサ及び機械に適用することができる。加えて、以下の説明は例を提供し、添付図面は、例示の目的で様々な例を示している。しかしながら、これらの例は、本発明の実施形態の全ての可能な実施態様を網羅的に列挙したものを提供するものではなく、単に本発明の実施形態の例を提供することを意図したものにすぎないので、限定する意味に解釈されるべきではない。
【００１０】
以下の例は、実行ユニット及びロジック回路に関する命令のハンドリング及び配信を説明しているが、本発明の他の実施形態は、機械によって実行されると、当該機械に、本発明の少なくとも１つの実施形態と一致した機能を実行させる機械可読有形媒体上に記憶されたデータ又は命令として達成することができる。１つの実施形態では、本発明の実施形態に関連付けられた機能が、機械実行可能命令に具現化される。これらの命令は、命令を用いてプログラムされた汎用プロセッサ又は専用プロセッサに本発明のステップを実行させるのに用いることができる。本発明の実施形態は、本発明の実施形態による１つ又は複数の演算を実行するようにコンピューター（又は他の電子デバイス）をプログラムするのに用いることができる命令を記憶している機械又はコンピューター可読媒体を含むことができるコンピュータープログラム製品又はソフトウェアとして提供することができる。代替的に、本発明の実施形態の演算は、その演算を実行するための固定機能ロジックを含む特定のハードウェア構成要素によって、又はプログラムされたコンピューター構成要素及び固定機能ハードウェア構成要素の任意の組み合わせによって実行することができる。
【００１１】
本発明の実施形態を実行するようにロジックをプログラムするのに用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他の記憶装置等の、システムのメモリ内に記憶することができる。さらに、命令は、ネットワークを介して又は他のコンピューター可読媒体によって配布することもできる。したがって、機械可読媒体は、機械（例えば、コンピューター）によって可読な形態で情報を記憶又は伝送するための任意のメカニズムを含むことができ、フロッピー（登録商標）ディスケット、光ディスク、コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、及び光磁気ディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、磁気カード若しくは光カード、フラッシュメモリ、又は電気、光、音響、若しくは他の形態の伝播信号（例えば、搬送波、赤外信号、デジタル信号等）を介したインターネットによる情報の伝送に用いられる有形の機械可読記憶装置を含むがこれらに限定されるものではない。したがって、コンピューター可読媒体は、機械（例えば、コンピューター）によって可読な形態で電子的な命令又は情報を記憶又は伝送するのに好適な任意のタイプの有形の機械可読媒体を含む。
【００１２】
本明細書において「プロセッサ」とは、算術演算、論理演算、又はＩ／Ｏ演算をエンコードする命令を実行することができるデバイスを指すものとする。１つの説明例では、プロセッサは、フォンノイマンアーキテクチャモデルに従うことができ、算術論理ユニット（ＡＬＵ）、制御ユニット、及び複数のレジスタを備えることができる。更なる態様では、プロセッサは、１つ又は複数のプロセッサコアを備えることができ、したがって、通常は単一の命令パイプラインを処理することができるシングルコアプロセッサとすることもできるし、複数の命令パイプラインを同時に処理することができるマルチコアプロセッサとすることもできる。別の態様では、プロセッサは、単一の集積回路又は２つ以上の集積回路として実施することもできるし、マルチチップモジュールの構成要素（例えば、個々のマイクロプロセッサダイが単一の集積回路パッケージに含まれ、したがって、単一のソケットを共有する）とすることもできる。
【００１３】
図１は、本開示の１つ又は複数の態様によるコンピューターシステムの１つの例のハイレベル構成図を示している。コンピューターシステム１００は、本明細書で説明する実施形態による、ロジックを備える実行ユニットを用いて、データを処理するためのアルゴリズムを実行するプロセッサ１０２を備えることができる。システム１００は、カリフォルニア州サンタクララのIntel Corporation社から入手可能なＰＥＮＴＩＵＭ（登録商標）ＩＩＩ（商標）マイクロプロセッサ、ＰＥＮＴＩＵＭ（登録商標）４（商標）マイクロプロセッサ、Ｘｅｏｎ（商標）マイクロプロセッサ、Ｉｔａｎｉｕｍマイクロプロセッサ、ＸＳｃａｌｅ（商標）マイクロプロセッサ、及び／又はＳｔｒｏｎｇＡＲＭ（商標）マイクロプロセッサに基づく処理システムを表すが、他のシステム（他のマイクロプロセッサを有するＰＣ、エンジニアリングワークステーション、セットトップボックス等を含む）も用いることができる。１つの実施形態では、サンプルシステム１００は、ワシントン州レドモンドのMicrosoft社から入手可能なＷＩＮＤＯＷＳ（登録商標）オペレーティングシステムの或るバージョンを実行することができるが、他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）及びＬｉｎｕｘ（登録商標））、組み込みソフトウェア、及び／又はグラフィカルユーザーインターフェースも用いることができる。したがって、本発明の実施形態は、ハードウェア回路部及びソフトウェアのどの特定の組み合わせにも限定されるものではない。
【００１４】
実施形態は、コンピューターシステムに限定されるものではない。本発明の代替の実施形態は、ハンドヘルドデバイス及び組み込みアプリケーション等の他のデバイスにおいて用いることができる。ハンドヘルドデバイスの幾つかの例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）、及びハンドヘルドＰＣが含まれる。組み込みアプリケーションは、マイクロコントローラー、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピューター（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク（ＷＡＮ）スイッチ、又は少なくとも１つの実施形態による１つ若しくは複数の命令を実行することができる他の任意のシステムを含むことができる。
【００１５】
この図示した実施形態では、プロセッサ１０２は、少なくとも１つの命令を実行するアルゴリズムを実施する１つ又は複数の実行ユニット１０８を備える。１つの実施形態は、シングルプロセッサのデスクトップ又はサーバーシステムに関して説明される場合があるが、代替の実施形態は、マルチプロセッサシステムに含まれる場合がある。システム１００は、「ハブ」システムアーキテクチャの一例である。コンピューターシステム１００は、データ信号を処理するプロセッサ１０２を備える。プロセッサ１０２には、１つの説明例として、複合命令セットコンピューター（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、命令セットの組み合わせを実施するプロセッサ、又は例えばデジタル信号プロセッサ等の他の任意のプロセッサデバイスが含まれる。プロセッサ１０２は、プロセッサ１０２とシステム１００内の他の構成要素との間でデータ信号を伝送するプロセッサバス１１０に結合されている。システム１００の要素（例えば、グラフィックスアクセラレーター１１２、メモリコントローラーハブ１１６、メモリ１２０、Ｉ／Ｏコントローラーハブ１２４、無線送受信機１２６、フラッシュＢＩＯＳ１２８、ネットワークコントローラー１３４、オーディオコントローラー１３６、シリアル拡張ポート１３８、Ｉ／Ｏコントローラー１４０等）は、当該技術分野に精通している者によく知られたそれらの従来の機能を実行する。
【００１６】
１つの実施形態では、プロセッサ１０２は、レベル１（Ｌ１）内部キャッシュ１０４を備える。アーキテクチャに応じて、プロセッサ１０２は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有することができる。他の実施形態は、特定の実施態様及びニーズに応じて内部キャッシュ及び外部キャッシュの双方の組み合わせも備える。レジスタファイル１０６は、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、ベクトルレジスタ、バンクレジスタ、シャドウレジスタ、チェックポイントレジスタ及び命令ポインターレジスタを含む様々なレジスタに異なるタイプのデータを記憶することができる。
【００１７】
整数演算及び浮動小数点演算を実行するロジックを備える実行ユニット１０８も、プロセッサ１０２に存在する。プロセッサ１０２は、１つの実施形態では、実行されると、幾つかのマクロ命令用のアルゴリズムを実行するか又は複合的なシナリオをハンドリングするマイクロコードを記憶するマイクロコード（μコード）ＲＯＭを備える。ここでは、マイクロコードは、プロセッサ１０２の論理バグ／修正をハンドリングするように潜在的に更新可能である。１つの実施形態について、実行ユニット１０８は、パックド命令セット１０９をハンドリングするロジックを備える。パックド命令セット１０９を、それらの命令を実行する関連回路部とともに汎用プロセッサ１０２の命令セットに含めることによって、多くのマルチメディアアプリケーションによって用いられる演算は、汎用プロセッサ１０２内のパックドデータを用いて実行することができる。したがって、パックドデータに対して演算を実行するためにプロセッサのデータバスの全幅を用いることによって、多くのマルチメディアアプリケーションを高速化することができるとともに、より効率的に実行することができる。これによって、１以上の演算を実行するためにプロセッサのデータバスにわたってより小さいデータ単位、一度に１つのデータ要素で転送する必要がなくなる。
【００１８】
実行ユニット１０８の代替の実施形態は、マイクロコントローラー、組み込みプロセッサ、グラフィックスデバイス、ＤＳＰ、及び他のタイプのロジック回路において用いることができる。システム１００はメモリ１２０を備える。メモリ１２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、又は他のメモリデバイスとすることができる。メモリ１２０は、プロセッサ１０２が実行することができる命令及び／又はデータ信号によって表されるデータを記憶する。
【００１９】
システムロジックチップ１１６は、プロセッサバス１１０及びメモリ１２０に結合されている。図示した実施形態におけるシステムロジックチップ１１６は、メモリコントローラーハブ（ＭＣＨ）である。プロセッサ１０２は、プロセッサバス１１０を介してＭＣＨ１１６に通信することができる。ＭＣＨ１１６は、命令及びデータの記憶、並びにグラフィックスコマンド、グラフィックスデータ、及びグラフィックステクスチャの記憶のためのメモリ１２０への高帯域幅メモリパス１１８を提供する。ＭＣＨ１１６は、システム１００内のプロセッサ１０２、メモリ１２０、及び他の構成要素の間でデータ信号を誘導するとともに、プロセッサバス１１０、メモリ１２０、及びシステムＩ／Ｏ１２２の間でデータ信号を橋絡するためのものである。幾つかの実施形態では、システムロジックチップ１１６は、グラフィックスコントローラー１１２に結合するためのグラフィックスポートを提供することができる。ＭＣＨ１１６は、メモリインターフェース１１８を通じてメモリ１２０に結合されている。グラフィックスカード１１２は、アクセラレーテッドグラフィックスポート（ＡＧＰ）相互接続１１４を通じてＭＣＨ１１６に結合されている。
【００２０】
システム１００は、独自のハブインターフェースバス１２２を用いて、ＭＣＨ１１６をＩ／Ｏコントローラーハブ（ＩＣＨ）１３０に結合する。ＩＣＨ１３０は、ローカルＩ／Ｏバスを介して幾つかのＩ／Ｏデバイスに直接接続を提供する。このローカルＩ／Ｏバスは、周辺装置をメモリ１２０、チップセット、及びプロセッサ１０２に接続するための高速Ｉ／Ｏバスである。幾つかの例は、オーディオコントローラー、ファームウェアハブ（フラッシュＢＩＯＳ）１２８、無線送受信機１２６、データ記憶装置１２４、ユーザー入力インターフェース及びキーボードインターフェースを含むレガシーＩ／Ｏコントローラー、ユニバーサルシリアルバス（ＵＳＢ）等のシリアル拡張ポート、並びにネットワークコントローラー１３４である。データ記憶デバイス１２４は、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭデバイス、フラッシュメモリデバイス、又は他のマスストレージデバイスを含むことができる。
【００２１】
システムの別の実施形態では、１つの実施形態による命令は、システムオンチップとともに用いることができる。システムオンチップの１つの実施形態は、プロセッサ及びメモリから構成される。１つのそのようなシステム用のメモリはフラッシュメモリである。フラッシュメモリは、プロセッサ及び他のシステム構成要素と同じダイ上に配置することができる。加えて、メモリコントローラー又はグラフィックスコントローラー等の他のロジックブロックも、システムオンチップ上に配置することができる。
【００２２】
図２は、本発明の１つの実施形態による命令を実行するロジック回路を備えるプロセッサ２００のマイクロアーキテクチャのブロック図である。幾つかの実施形態では、１つの実施形態による命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズと、単精度及び倍精度の整数及び浮動小数点のデータタイプ等のデータタイプとを有するデータ要素に対して演算するように実施することができる。１つの実施形態では、インオーダーフロントエンド２０１は、実行される命令をフェッチし、それらの命令をプロセッサパイプラインにおいて後に用いられるように準備するプロセッサ２００の部分である。このフロントエンド２０１は、幾つかのユニットを備えることができる。１つの実施形態では、命令プリフェッチャー２２６がメモリから命令をフェッチし、これらの命令を命令デコーダー２２８に供給し、次に、この命令デコーダーが、これらの命令をデコード又は解釈する。例えば、１つの実施形態では、デコーダーは、受信された命令を、機械が実行することができる「マイクロ命令」又は「マイクロ演算」（マイクロｏｐ又はμｏｐとも呼ばれる）と呼ばれる１つ又は複数の演算にデコードする。他の実施形態では、デコーダーは、命令を演算コード及び対応するデータと、１つの実施形態による演算を実行するマイクロアーキテクチャによって用いられる制御フィールドとにパースする。１つの実施形態では、トレースキャッシュ２３０は、デコードされたμｏｐを取り出し、それらを実行のためにμｏｐキュー２３４内のプログラム順序付きシーケンス又はトレースにアセンブルする。トレースキャッシュ２３０が複合命令に遭遇すると、マイクロコードＲＯＭ２３２は、演算を完了するのに必要とされるμｏｐを提供する。
【００２３】
命令の中には、単一のマイクロｏｐに変換されるものもあれば、全演算を完了するのに数個のマイクロｏｐを必要とするものもある。１つの実施形態では、命令を完了するのに５つ以上のマイクロｏｐが必要とされる場合、デコーダー２２８は、マイクロコードＲＯＭ２３２にアクセスして命令を行う。１つの実施形態について、命令は、命令デコーダー２２８における処理のために少数のマイクロｏｐにデコードすることができる。別の実施形態では、複数のマイクロｏｐが演算を達成するのに必要とされる場合、命令をマイクロコードＲＯＭ２３２内に記憶することができる。トレースキャッシュ２３０は、エントリーポイントプログラマブルロジックアレイ（ＰＬＡ）を参照して、１つの実施形態による１つ又は複数の命令を完了するマイクロコードシーケンスをマイクロコードＲＯＭ２３２から読み出すための正しいマイクロ命令ポインターを決定する。マイクロコードＲＯＭ２３２が、命令用のマイクロｏｐのシーケンス化を終了した後、機械のフロントエンド２０１は、トレースキャッシュ２３０からのマイクロｏｐのフェッチを再開する。
【００２４】
アウトオブオーダー実行エンジン２０３は、命令が実行用に準備される箇所である。アウトオブオーダー実行ロジックは、命令が実行のためにパイプラインを進んでスケジューリングされるとき、命令の流れの円滑化及びリオーダを行って性能を最適化する複数のバッファーを有する。アロケーターロジックは、各μｏｐが実行に必要とする機械バッファー及びリソースをアロケートする。レジスタエイリアシングロジックは、論理レジスタをレジスタファイル内のエントリー上にマッピングする。アロケーターは、命令スケジューラの前に、メモリ演算用に１つと非メモリ演算用に１つとの２つのμｏｐキューのうちの一方に各μｏｐのエントリーもアロケートする。上記命令スケジューラは、メモリスケジューラ、高速スケジューラ２０２、低速／一般浮動小数点スケジューラ２０４、及び単純浮動小数点スケジューラ２０６である。μｏｐスケジューラ２０２、２０４、２０６は、μｏｐが実行の準備がいつできるのかを、それらの従属する入力レジスタオペランドソースの準備ができていることと、μｏｐがそれらの演算を完了する必要がある実行リソースが利用可能であることとに基づいて判断する。１つの実施形態の高速スケジューラ２０２は、メインクロックサイクルの各２分の１においてスケジューリングすることができる一方、他のスケジューラは、メインプロセッサクロックサイクルごとに１回のみスケジューリングすることができる。これらのスケジューラは、μｏｐを実行のためにスケジューリングするディスパッチポートをアービトレートする。
【００２５】
物理レジスタファイル２０８、２１０は、スケジューラ２０２、２０４、２０６と、実行ブロック２１１内の実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４との間に位置している。それぞれ整数演算用及び浮動小数点演算用の別々のレジスタファイル２０８、２１０が存在する。１つの実施形態の各レジスタファイル２０８、２１０は、レジスタファイル内にまだ書き込まれていない完了したばかりの結果を従属する新たなμｏｐにバイパス又は転送することができるバイパスネットワークも備える。整数レジスタファイル２０８及び浮動小数点レジスタファイル２１０は、互いとのデータの通信も行うことができる。１つの実施形態について、整数レジスタファイル２０８は、下位３２ビットのデータ用の１つのレジスタファイルと、上位３２ビットのデータ用の第２のレジスタファイルとの２つの別々のレジスタファイルに分割される。１つの実施形態の浮動小数点レジスタファイル２１０は、１２８ビット幅エントリーを有する。なぜならば、浮動小数点命令は、通常、幅が６４ビット〜１２８ビットのオペランドを有するからである。
【００２６】
実行ブロック２１１は、命令が実際に実行される実行ユニット２１２、２１４、２１６、２１８、２２０、２２２、２２４を含む。このセクションは、マイクロ命令が実行に必要とする整数データオペランド値及び浮動小数点データオペランド値を記憶するレジスタファイル２０８、２１０を備える。１つの実施形態のプロセッサ２００は、アドレス生成ユニット（ＡＧＵ）２１２、ＡＧＵ２１４、高速ＡＬＵ２１６、高速ＡＬＵ２１８、低速ＡＬＵ２２０、浮動小数点ＡＬＵ２２２、浮動小数点ムーブユニット２２４の複数の実行ユニットから構成される。１つの実施形態について、浮動小数点実行ブロック２２２、２２４は、浮動小数点演算、ＭＭＸ演算、ＳＩＭＤ演算、ＳＳＥ演算、又は他の演算を実行する。１つの実施形態の浮動小数点ＡＬＵ２２２は、除算マイクロｏｐ、平方根マイクロｏｐ、及び剰余マイクロｏｐを実行する６４ビット対６４ビットの浮動小数点除算器を備える。本発明の実施形態について、浮動小数点値を伴う命令は、浮動小数点ハードウェアを用いてハンドリングすることができる。１つの実施形態では、ＡＬＵ演算は、高速ＡＬＵ実行ユニット２１６、２１８に進む。１つの実施形態の高速ＡＬＵ２１６、２１８は、クロックサイクルの２分の１の実効レイテンシーを有する高速演算を実行することができる。１つの実施形態について、ほとんどの複雑な整数演算は、低速ＡＬＵ２２０に進む。なぜならば、低速ＡＬＵ２２０は、乗算器、シフト、フラグロジック、及び分岐処理等の長いレイテンシータイプの演算用の整数実行ハードウェアを備えるからである。メモリロード／記憶演算は、ＡＧＵ２１２、２１４によって実行される。１つの実施形態について、整数ＡＬＵ２１６、２１８、２２０は、６４ビットデータオペランドに対する整数演算の実行に関して説明される。代替の実施形態では、ＡＬＵ２１６、２１８、２２０は、１６ビット、３２ビット、１２８ビット、２５６ビット等を含む様々なデータビットをサポートするように実装することができる。同様に、浮動小数点ユニット２２２、２２４は、様々な幅のビットを有するオペランドの範囲をサポートするように実装することができる。１つの実施形態について、浮動小数点ユニット２２２、２２４は、ＳＩＭＤ命令及びマルチメディア命令とともに１２８ビット幅のパックドデータオペランドに対して演算を行うことができる。
【００２７】
１つの実施形態では、μｏｐスケジューラ２０２、２０４、２０６は、親ロードが実行を終了する前に従属演算をディスパッチする。μｏｐは、推測でスケジューリングされてプロセッサ２００において実行されるので、プロセッサ２００は、メモリミスをハンドリングするロジックも備える。データロードがデータキャッシュにおいて失敗した場合、一時的に正しくないデータをスケジューラに残した従属演算がパイプラインにおいてインフライトである可能性がある。再実行メカニズムは、正しくないデータを用いた命令を追跡して再度実行する。従属演算は、再実行されるべきであり、独立演算は、完了することが可能である。スケジューラ及びプロセッサの１つの実施形態の再実行メカニズムは、テキスト文字列比較演算用の命令シーケンスを捕捉するようにも設計されている。
【００２８】
「レジスタ」という用語は、オペランドを識別する命令の一部として用いられるオンボードプロセッサ記憶ロケーションを指すことができる。換言すれば、レジスタは、（プログラマーからの視点から）プロセッサの外部から使用可能なものとすることができる。しかしながら、一実施形態のレジスタは、意味が特定のタイプの回路に限定されるべきではない。逆に、一実施形態のレジスタは、データを記憶及び提供することができるとともに、本明細書において説明する機能を実行することができる。本明細書において説明するレジスタは、専用の物理レジスタ、レジスタエイリアシングを用いた動的にアロケートされた物理レジスタ、専用の物理レジスタ及び動的にアロケートされた物理レジスタの組み合わせ等の任意の数の異なる技法を用いてプロセッサ内の回路部によって実装することができる。１つの実施形態では、整数レジスタは、３２ビット整数データを記憶する。１つの実施形態のレジスタファイルは、パックドデータ用の８つのマルチメディアＳＩＭＤレジスタも含む。以下の議論のために、レジスタは、カリフォルニア州サンタクララのIntel Corporation社からのＭＭＸ（商標）技術を用いて可能にされるマイクロプロセッサ内の６４ビット幅ＭＭＸレジスタ（場合によっては、「ｍｍ」レジスタとも呼ばれる）等の、パックドデータを保持するように設計されたデータレジスタであると理解される。整数及び浮動小数点の双方の形で利用可能なこれらのＭＭＸレジスタは、ＳＩＭＤ命令及びＳＳＥ命令に付随するパックドデータ要素を用いて動作することができる。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、又はこれ以降の技術（「ＳＳＥｘ」と総称される）に関係した１２８ビット幅ＸＭＭレジスタも、そのようなパックドデータオペランドを保持するのに用いることができる。１つの実施形態では、パックドデータ及び整数データを記憶する際に、レジスタは、２つのデータタイプを区別する必要はない。１つの実施形態では、整数及び浮動小数点は、同じレジスタファイル又は異なるレジスタファイルのいずれかに含まれる。さらに、１つの実施形態では、浮動小数点データ及び整数データは、異なるレジスタ又は同じレジスタに記憶することができる。
【００２９】
図３Ａ及び図３Ｂは本開示の１つ又は複数の態様によるプロセッサマイクロアーキテクチャの要素を概略的に示している。図３Ａにおいて、プロセッサパイプライン４００は、フェッチステージ４０２、レングスデコードステージ４０４、デコードステージ４０６、アロケーションステージ４０８、リネーミングステージ４１０、スケジューリング（ディスパッチ又は発行としても知られている）ステージ４１２、レジスタ読み出し／メモリ読み出しステージ４１４、実行ステージ４１６、ライトバック／メモリ書き込みステージ４１８、例外ハンドリングステージ４２２、及びコミットステージ４２４を備える。
【００３０】
図３Ｂにおいて、矢印は、２つ以上のユニット間の結合を示し、矢印の方向は、それらのユニット間のデータフローの方向を示す。図３Ｂは、実行エンジンユニット４５０に結合されたフロントエンドユニット４３０を備えるプロセッサコア４９０を示し、これらのフロントエンドユニット４３０及び実行エンジンユニット４５０の双方は、メモリユニット４７０に結合されている。
【００３１】
コア４９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、又はハイブリッド若しくは代替のコアタイプとすることができる。更に別の選択肢として、コア４９０は、例えば、ネットワークコア若しくは通信コア、圧縮エンジン、グラフィックスコア等の専用コアとすることができる。
【００３２】
フロントエンドユニット４３０は、命令キャッシュユニット４３４に結合された分岐予測ユニット４３２を備える。この命令キャッシュユニット４３４は、命令変換ルックアサイドバッファー（ＴＬＢ）４３６に結合されている。このＴＬＢ４３６は、命令フェッチユニット４３８に結合されている。この命令フェッチユニット４３８は、デコードユニット４４０に結合されている。デコードユニット、すなわちデコーダーは、命令をデコードし、出力として１つ又は複数のマイクロ演算、マイクロコードエントリーポイント、マイクロ命令、他の命令、又は他の制御信号を生成することができる。これらは、オリジナルの命令からデコードされるか、又はオリジナルの命令を反映しているか、又はオリジナルの命令から導出される。デコーダーは、様々な異なるメカニズムを用いて実施することができる。好適なメカニズムの例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコード読み出し専用メモリ（ＲＯＭ）等が含まれるが、これらに限定されるものではない。命令キャッシュユニット４３４は、メモリユニット４７０内のレベル２（Ｌ２）キャッシュユニット４７６に更に結合されている。デコードユニット４４０は、実行エンジンユニット４５０内のリネーム／アロケーターユニット４５２に結合されている。
【００３３】
実行エンジンユニット４５０は、リタイアメントユニット４５４に結合されたリネーム／アロケーターユニット４５２と、１つ又は複数のスケジューラユニット４５６を備える。スケジューラユニット（複数の場合もある）４５６は、リザベーションステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット（複数の場合もある）４５６は、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８に結合されている。物理レジスタファイル（複数の場合もある）ユニット４５８のそれぞれは、１つ又は複数の物理レジスタファイルを表し、各物理レジスタファイルはそれぞれ１以上の異なる種類のデータを記憶しており、例えば、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス（例えば、実行される次の命令のアドレスである命令ポインター）等を記憶する。レジスタエイリアシング及びアウトオブオーダー実行を（例えば、リオーダバッファー（複数の場合もある）及びリタイアメントレジスタファイル（複数の場合もある）を用いるか、フューチャーファイル（複数の場合もある）、履歴バッファー（複数の場合もある）、及びリタイアメントレジスタファイル（複数の場合もある）を用いるか、レジスタマップ及びレジスタのプールを用いる等して）実施することができる様々な方法を示すために、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８は、リタイアメントユニット４５４によってオーバーラップされている。一般に、アーキテクチャレジスタは、プロセッサの外部又はプログラマーの視点から可視である。レジスタは、任意の既知の特定のタイプの回路に限定されるものではない。様々な異なるタイプのレジスタは、本明細書において説明するようなデータを記憶及び提供することができる限り、好適である。好適なレジスタの例には、専用の物理レジスタ、レジスタエイリアシングを用いて動的にアロケートされる物理レジスタ、専用の物理レジスタ及び動的にアロケートされる物理レジスタの組み合わせ等が含まれるが、これらに限定されるものではない。リタイアメントユニット４５４及び物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８は、実行クラスター（複数の場合もある）４６０に結合されている。
実行クラスター（複数の場合もある）４６０は、１つ又は複数の実行ユニット４６２及び１つ又は複数のメモリアクセスユニット４６４を備える。実行ユニット４６２は、様々なタイプのデータ（例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）に対して様々な演算（例えば、シフト、加算、減算、乗算）を実行することができる。実施形態の中には、特定の機能又は機能のセットに専用の複数の実行ユニットを備えることができるものもあれば、全ての機能を全て実行する１つのみの実行ユニット又は複数の実行ユニットを備えることができるものもある。スケジューラユニット（複数の場合もある）４５６、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８、及び実行クラスター（複数の場合もある）４６０は、場合によっては複数のものとして示される。なぜならば、或る特定の実施形態は、或る特定のタイプのデータ／演算用に別々のパイプライン（例えば、スカラー整数パイプライン、スカラー浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又は、それぞれが独自のスケジューラユニット、物理レジスタファイル（複数の場合もある）ユニット及び／又は実行クラスターを有するメモリアクセスパイプライン、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターがメモリアクセスユニット（複数の場合もある）４６４を有する或る特定の実施形態が実施される）を作製するからである。別々のパイプラインが用いられる場合、これらのパイプラインのうちの１つ又は複数は、アウトオブオーダー発行／実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。
【００３４】
一組のメモリアクセスユニット４６４は、メモリユニット４７０に結合されている。このメモリユニット４７０は、レベル２（Ｌ２）キャッシュユニット４７６に結合されたデータキャッシュユニット４７４に結合されたデータＴＬＢユニット４７２を備える。１つの例示の実施形態では、メモリアクセスユニット４６４は、ロードユニット、記憶ドレスユニット、及び記憶データユニットを備えることができ、これらのそれぞれは、メモリユニット４７０内のデータＴＬＢユニット４７２に結合されている。Ｌ２キャッシュユニット４７６は、１つ又は複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
【００３５】
例として、例示のレジスタリネーミングアウトオブオーダー発行／実行コアアーキテクチャは、次のようにパイプライン４００を実施することができる。命令フェッチ４３８が、フェッチステージ４０２及びレングスデコードステージ４０４を実行し、デコードユニット４４０がデコードステージ４０６を実行し、リネーム／アロケーターユニット４５２がアロケーションステージ４０８及びリネーミングステージ４１０を実行し、スケジューラユニット（複数の場合もある）４５６がスケジュールステージ４１２を実行し、物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８及びメモリユニット４７０がレジスタ読み出し／メモリ読み出しステージ４１４を実行し、実行クラスター４６０が実行ステージ４１６を実行し、メモリユニット４７０及び物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８がライトバック／メモリ書き込みステージ４１８を実行し、様々なユニットが例外ハンドリングステージ４２２に関与することができ、リタイアメントユニット４５４及び物理レジスタファイル（複数の場合もある）ユニット（複数の場合もある）４５８がコミットステージ４２４を実行する。
【００３６】
コア４９０は、１つ又は複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンとともに追加された幾つかの拡張を有する）、カリフォルニア州サニーベールのMIPS Technologies社のＭＩＰＳ命令セット、カリフォルニア州サニーベールのARM Holdings社のＡＲＭ命令セット（ＮＥＯＮ等のオプションの追加拡張を有する）をサポートすることができる。
【００３７】
或る特定の実施態様では(In certain implementations)、コアは、マルチスレッディング（並列の二組以上の演算又はスレッドを実行する）をサポートすることができ、タイムスライスされたマルチスレッディング、同時のマルチスレッディング（単一の物理コアが、当該物理コアが同時にマルチスレッディングしているスレッドのそれぞれについて論理コアを提供する）、又はそれらの組み合わせ（例えば、Ｉｎｔｅｌ（登録商標）ハイパースレッディング技術におけるようなタイムスライスされたフェッチ及びデコード並びにその後の同時のマルチスレッディング）を含む様々な方法でそうすることができる。
【００３８】
レジスタエイリアシングは、アウトオブオーダー実行に関して説明されるが、レジスタエイリアシングは、インオーダーアーキテクチャにおいて用いることができることが理解されるべきである。プロセッサの図示した実施形態は、別々の命令キャッシュユニット４３４／データキャッシュユニット４７４及び共有されたＬ２キャッシュユニット４７６も備えるが、代替の実施形態は、例えば、レベル１（Ｌ１）内部キャッシュ、又は複数レベルの内部キャッシュ等の、命令及びデータの双方の単一の内部キャッシュを有することができる。幾つかの実施形態では、システムは、コア及び／又はプロセッサの外部にある内部キャッシュ及び外部キャッシュの組み合わせを備えることができる。代替的に、キャッシュの全てを、コア及び／又はプロセッサの外部にすることができる。
【００３９】
図４は、本開示の１つ又は複数の態様による一例示のプロセッサ１０２及びコンピューターシステム１００の他の構成要素のブロック図を示している。図４を参照すると、プロセッサコア４９０は、当該コア４９０による実行のための命令をフェッチするフェッチユニット４３８を備えることができる。命令は、メモリ１１５等の１つ又は複数の記憶デバイス、及び／又はデータ記憶デバイス１２４等の他のメモリデバイスからフェッチすることができる。プロセッサコア４９０は、フェッチされた命令を１つ又は複数のマイクロ演算（μｏｐ）にデコードするデコードユニット４４０を更に備えることができる。プロセッサコア４９０は、命令を発行する準備ができるまで、例えば、デコードされた命令のオペランド値が利用可能になるまで、デコードユニット４４０から受信されたデコードされた命令を記憶するスケジュールユニット４４６を更に備えることができる。スケジュールユニット４４６は、デコードされた命令をスケジューリングし、及び／又は、実行ユニット４５０に発行することができる。
【００４０】
実行ユニット４５０は、１つ又は複数の算術論理ユニット（ＡＬＵ）、１つ又は複数の整数実行ユニット、１つ又は複数の浮動小数点実行ユニット、及び／又は他の実行ユニットを備えることができる。或る特定の実施態様では、実行ユニット４５０は、命令をアウトオブオーダー（ＯＯＯ）で実行することができる。プロセッサコア４９０は、実行された命令がコミットされた後、それらの命令をリタイアさせるリタイアメントユニット４５４を更に備えることができる。
【００４１】
プロセッサコア４９０は、ＲＡＴ４２１、ＰＲＦ４２３、ＭＩＴ４２５、及び本明細書において以下でより詳細に説明するようなデータ操作機能を実施するロジック１５０を更に備えることができる。図４において、ロジック１５０がコア４９０の内部にあるように示されていても、ロジック１５０は、コンピューターシステム１００内の他の場所に設けることができる。さらに、ロジック１５０及び／又はその構成要素のうちの幾つかは、複数のプロセッサコア間で共有することができる。
【００４２】
本明細書において上述したように、移動命令は、ＲＡＴにおいてソースレジスタポインターをデスティネーションレジスタポインターにコピーすることによって除去することができる。図５は、レジスタエイリアシングによって、すなわち、ＰＲＦにおけるエントリーＸへのポインターである論理レジスタＡＸ用のＲＡＴエントリーの内容が、論理レジスタＤＸ用のＲＡＴエントリーにコピーされることによって、ＭＯＶ  ＤＸ，ＡＸ命令を実行することを概略的に示している。図５によって示されるように、或る特定の実施態様では、ＰＲＦは、物理レジスタ値のアレイによって提供することができ、ＲＡＴは、ＰＲＦへのポインターのアレイによって提供することができる。
【００４３】
命令が実行ユニットに送信される前に、命令の結果を受信するためのＰＲＦエントリーをアロケートすることができる。複数のＲＡＴエントリーは、同じＰＲＦエントリーを指し示す場合があるので、ＰＲＦエントリーは、複数のＲＡＴエントリーが１つ又は複数の命令によって上書きされると、後続の命令による使用に利用可能なものとしてマーク付けすることができる。上記１つ又は複数の命令は、上書きの結果、リタイアされる。ＰＲＦエントリーを新たな命令による使用ためにいつ解放することができるのかを判断するために、ＰＲＦエントリーへの参照を追跡するのにＭＩＴを用いることができる。
【００４４】
ＭＩＴは、追跡されているレジスタを表す複数の行を有する２次元アレイ（例えば、ビット行列）によって提供することができる。各ＭＩＴの列は、移動除去セットを表すことができ、この移動除去セットでは、セットされたビットは、対応する論理レジスタが当該移動除去セットに関与していることを示す。
【００４５】
移動演算が除去されるとき、図６Ａによって概略的に示すように、ソース論理レジスタ及びデスティネーション論理レジスタに対応するビットがセットされ、これらの論理レジスタが移動除去セットの一部であることが示される。移動命令のソースが移動除去セットに既に関与している論理レジスタである場合、図６Ｂによって概略的に示すように、デスティネーション論理レジスタは、そのセットに追加される。論理レジスタが別の命令によって上書きされるとき、図６Ｃによって概略的に示すように、ＭＩＴにおいてそのレジスタ用にセットされたビットをクリアすることができ、したがって、この論理レジスタは、移動除去セットから分離される。いずれの移動除去セットの一部でもないか、又は移動除去セットの唯一のメンバーである対応する物理レジスタは、その物理レジスタへの全ての参照が１つ又は複数の命令によって上書きされ、それらの命令がリタイアすると、新たな命令によって再利用することができる。
【００４６】
幾つかの実施態様では、移動除去セットの追跡は、μｏｐアロケーションごとに実行され、μｏｐリタイアメントに依存しない。すなわち、移動μｏｐのアロケーションの際に、移動除去セットが作成される。そして、さらに、論理レジスタを上書きするμｏｐのアロケーションの際に、論理レジスタは、既存の移動除去セットから削除される。移動除去されたセット内の最後の論理レジスタを上書きするμｏｐがアロケートされるとき、ＰＲＦエントリーは、その上書きしたμｏｐがその後リタイアされたときに解放されるようにマーク付けされる。ＰＲＦエントリーを解放することは、最後に上書きしたμｏｐのμｏｐリタイアメントに依存する。ＰＲＦエントリーの解放を実行するロジックは、ＭＩＴの外部で実行される。しかしながら、ＭＩＴによって実施されるような移動除去セットは、最後に上書きしたμｏｐがアロケートされ、別の移動除去セットを追跡するのに再利用することができるようになった後、直ちにリクレームすることができる。
【００４７】
Ｎ個の論理レジスタにおける移動除去の全ての可能な組み合わせを追跡するために、移動除去セットがＭＩＴの列によって提供されるので、Ｎ／２個のＭＩＴの列が必要とされる場合がある。ＭＩＴが有する移動除去セットがＮ／２個よりも少なく、かつ、それらの移動除去セットが全て用いられている場合、次の移動命令は、新たなＰＲＦエントリーを消費する通常の命令として実行ユニットに送信することができる。いずれの場合も、ＭＩＴは、命令がＰＲＦエントリーを消費する必要があるか否かをＲＡＴにシグナリングする。
【００４８】
スーパースカラーＭワイド発行プロセッサ（superscalar M-wide issue processor）では、１サイクル当たり最大でＭ個の命令は、データコピー命令とすることができ、ＭＩＴは、発行命令のサブセットを除去するのに十分な空きのセットのみを有することが可能である。実行効率を更に改善するために、プロセッサは、移動命令が既存の移動除去セットに関係するものか又は新たな移動除去セットに関係するものかを判断する代わりに、各移動命令が新たな移動除去セットを必要とするものと仮定する。したがって、プロセッサは、利用可能な移動除去セットの数を移動命令の数と比較し、移動除去される最初のＫ個の移動命令を選択することができる一方、他の移動命令を実行ユニットに送信することができる。
【００４９】
図７Ａ〜図７Ｃは、本開示の１つ又は複数の態様によるＭＩＴアロケーション／予約ロジックを概略的に示している。図７Ａは、ＭＩＴの初期状態（サイクルＮ）を示し、列１〜３は、アロケーション用に空いている。その後、列１及び２は、２つの移動演算（ＭＯＶ  ＡＸ，ＣＸ及びＭＯＶ  Ｒ９，Ｒ８）を実行するために予約される。図７Ｂによって概略的に示されるように、（Ｎ＋１）サイクルにおいて、上述した列１及び２のアロケーションを反映するために、ＭＩＴにおいて、リザーブビットがセットされ、フリービットがクリアされる。その後、２つの追加の移動除去の機会が、ＭＩＴに提示され、したがって、ＭＩＴの列３が、第３の移動演算（ＭＯＶ  ＢＸ，ＤＸ）を実行するために予約され、利用可能な移動除去セットがＭＩＴにないので、第４の移動演算が実行ユニットに送信される（ＭＯＶ  ＡＸ、Ｒ８）。図７Ｃによって概略的に示されるように、（Ｎ＋２）サイクルにおいて、サイクルＮからの予約がキャンセルされ、したがって、それぞれのリザーブビットはクリアされる。ＭＩＴは、サイクルＮの命令からの結果で更新され、列０にマージし、列２に新たなセットを作成する。エンプティビットが、ＭＩＴ更新を考慮して再計算され、影響を受けたＭＩＴの列のエンプティビットからリザーブビットを差し引くことによって、フリービットが更新される。したがって、新たな移動除去情報を用いてＭＩＴセットを更新するのに２サイクルのレイテンシーが存在し得る。
【００５０】
１つのレジスタマッピングのみが移動除去セットに残っており、そのため、対応するＰＲＦエントリーには、１つの参照しか残っていないとき、ＭＩＴの列によって提供される移動除去セットは、別の移動命令へのアロケーションにまだ利用可能でない場合がある。そのようなセットは、１つのレジスタマッピングしか有しないので、「オーファン」セットと呼ばれる場合がある。オーファンセットをクリアする或る動作がなければ、最後の論理レジスタが上書きされるまで、したがって、可能な移動除去の数が削減されるまで、オーファンセットは利用不能なままである。
【００５１】
幾つかの実施態様では、プロセッサは、ＭＩＴアロケーションサーチの一部としてオーファン移動除去セットを検出してクリアすることができる。移動除去セットがオーファンセットであると判断された場合、プロセッサは、そのセットをアロケーション用に解放する次のサイクルの間にクリア信号をアサートすることができる。したがって、本明細書において以下でより詳細に説明するように、オーファンセットは、初期アロケーションの書き込み用の２サイクルとオーファンセットのクリア用の更に１サイクルとを含む３サイクル以上で利用可能にすることができる。
【００５２】
図８Ａ〜図８Ｃは、本開示の１つ又は複数の態様によるＭＩＴオーファンリクラメーションロジックの機能の１つの例を概略的に示している。図８Ａは、移動命令及び新たにアロケートされる移動除去セットを部分的に上書きする後続の命令を実行する前のＭＩＴの列の初期状態（サイクルＮと呼ばれる）を概略的に表している。図８Ｂは、サイクルＮ＋２において更新された後のＭＩＴの列の状態を概略的に表している。この段階におけるＭＩＴの列は、オーファンセットであり、そのようなものとして検出することができる。図８Ｃは、オーファンリクラメーション後のＭＩＴの列の状態を概略的に表している。しかしながら、サイクルＮ＋１において移動除去された命令が、そのソースとしてＡＸレジスタを用いていた場合、移動除去セットはサイクルＮ＋１からの命令の結果を用いて更新されることになるので、サイクルＮ＋３においてオーファンリクラメーションは行われないことに留意すべきである。
【００５３】
或る特定の実施態様では、ロジック１５０は、２つ以上のデータ操作演算の従属関係を事前に計算し、次いで、それらの２つ以上の演算の結果を反映するように単一のＭＩＴ更新を実行することができ、したがって、移動除去演算のタイミング及び電力消費の双方の側面を改善することができる。ＭＩＴ更新は、新たな移動除去セットを作成すること、移動除去セットを変更すること、又はオーファン移動除去セットをリクレームすることを含むことができる。
【００５４】
シリアル化された更新ロジックとは異なり、ロジック１５０は、２つ以上のデータ操作演算の結果を反映するように１回ＭＩＴを更新する。中間のＭＩＴ状態は、シリアル化された更新シーケンスにおいて対応するＭＩＴ更新によって反映されることになるが、ロジック１５０によっては実行されない。例えば、レジスタが、移動除去セットに追加され、次の演算によって上書きされる場合、ＭＩＴは、このレジスタを含んだ移動除去セットの中間状態を反映しない。
【００５５】
２つ以上のデータ操作演算の従属関係を事前に計算するために、ロジック１５０は、幾つかのタイプの移動演算を検出することができる。これらの移動演算には、図９Ａ〜図９Ｃによって概略的に示されるように、同じ処理ラインにおける後続の移動演算のソースとして用いられるデスティネーションレジスタを有する移動演算、図１０Ａ〜図１０Ｃによって概略的に示されるように、同じレジスタをソースとして用いる同じラインにおける２つの移動演算、及び図１１Ａ〜図１１Ｃによって概略的に示されるように、デスティネーション／ソースレジスタへの介在する書き込みを伴う後続の移動演算のソースと一致するデスティネーションレジスタを有する移動演算が含まれるが、これらに限定されるものではない。
【００５６】
上記組み合わせを検出するために、ロジック１５０は、幾つかの命令のソースとデスティネーションとを比較し、移動命令が移動除去のために選択されたか否かを判断し、移動除去演算のソースが既存の移動除去セットに存在するか否かを判断し、新たな又は存在する移動除去セットに関与するいずれかの論理レジスタがその後上書きされるか否かを判断することができる。決定されたＭＩＴの列のアロケーションデータを考慮して、ロジック１５０は、影響を受けたＭＩＴの列に書き込まれる新たなデータを生成し、新たな又は存在するデータを各命令に関連付けられた更新データとして選択し、上記ソースとデスティネーションとの比較を利用して１つの命令から別の命令にデータをバイパスし、ＭＩＴを更新することができる。
【００５７】
本明細書において上述したように、移動除去ロジックは、ハードウェア若しくはソフトウェア又はそれらの組み合わせで実施することができる。ロジック１５０を実施する一例示の回路８００が、図１２に概略的に示されている。
【００５８】
回路８００は、特定のＭＩＴの列（移動除去セット）内の特定の論理レジスタに対応するビット単位（Per Bit）ロジック８０２を備えることができる。回路８００は、特定のＭＩＴの列（移動除去セット）に対応する列単位（Per Column）ロジック８０４を更に備えることができる。
【００５９】
回路８００は、幾つかの入力信号を受信することができる。これらの入力信号には、行列ビットごとのＭＩＴの前の状態を反映するＰｒｅｖｉｏｕｓＤａｔａ（事前データ）信号８０５と、行ごとにその行と一致する論理ソースを有する処理ラインにおける各移動除去命令を識別するＳｏｕｒｃｅＭａｔｃｈ（ソース一致）信号８１０と、１つのＭＩＴの行から別のＭＩＴの行に（移動除去命令論理ソース行から移動除去命令論理デスティネーション行に）データをコピーするか否かを識別し、それによって、移動除去命令からのデスティネーション論理レジスタを前に存在した移動除去セットに追加する（この論理レジスタを他の全ての移動除去セットから分離することも行う）処理ライン命令ごとのＳｅｌｅｃｔｏｒＣｏｐｙ（セレクターコピー）信号８１５と、ＭＩＴの行に書き込まれる処理ライン命令ごとの新たなデータを含むＡｌｌｏｃａｔｉｏｎＤａｔａ（アロケーションデータ）信号８２０とが含まれる。このデータは、全ての移動除去セットからのＭＩＴの行によって識別される論理レジスタをクリアするためにゼロとすることもできるし、論理レジスタを移動除去セットに割り当てるデータを含むこともできる。回路８００は、上記信号を処理して、新たなＭＩＴデータ出力信号８３０を生成することができる。
【００６０】
ＣｏｐｙＤａｔａ信号８３２は、移動命令のソースである論理レジスタを表すＭＩＴ内の１つの行からデータを選択するＳｏｕｒｃｅＭａｔｃｈ信号を用いて、存在するＭＩＴデータをクオリファイする（qualify）ことによって生成することができる。
【００６１】
ＳｅｌｅｃｔｏｒＣｏｐｙ信号８１５によって制御されるコピー／セットマルチプレクサー８４０は、ＣｏｐｙＤａｔａ信号又はＡｌｌｏｃＤａｔａ信号を選択することができる。ＳｅｌｅｃｔｏｒＣｏｐｙは、移動命令のソースを表すＭＩＴの行からのデータが移動命令のデスティネーションを表す別の行に書き込まれるべきであり、したがって、デスティネーションレジスタを存在する移動除去セットに追加すべきであることを示す。ＳｅｌｅｃｔｏｒＣｏｐｙ信号は、ロジック１５０が、移動除去命令のソースが移動除去されたセットに既に関与しており、その論理レジスタが処理ラインにおける前の命令によって上書きされていないと判断したときにセットされる。移動除去されたセットへの関与は、ＳｏｕｒｃｅＭａｔｃｈ信号８１０を用いてＭＩＴからの行をクオリファイし、この行内のいずれかのビットがセットされているか否かを調べることによって判断される。
【００６２】
インラインバイパスマルチプレクサー８３５の制御は、実行ライン内部における従属関係を割り出すことができ、例えば、第１の移動命令のデスティネーションを第２の移動命令のソースと比較することができる。従属関係が検出された場合、前の命令用のデータを８３５において後の命令にバイパスすることができる。インラインバイパスマルチプレクサー８３５の出力信号は、更新データマルチプレクサー８４５の入力に供給することができる。更新データマルチプレクサー８４５のもう１つの入力は、ＭＩＴの列内にセットされたビットが１つしかないか否かを示すＣｌｅａｒＯｒｐｈａｎ信号８５０によってクオリファイされたＰｒｅｖｉｏｕｓＤａｔａ信号８０５によって提供することができる。セレクター更新データ信号８２５によって制御される更新データマルチプレクサー８４５は、新たなＭＩＴデータ信号８５０を出力することができる。セレクター更新データ信号８２５は、論理レジスタの最後の参照からのバイパスされたデータが新たなＭＩＴデータ信号８５０に出力されるように優先順位がエンコードされている。
【００６３】
例えば、回路８００によって実施されるようなロジック１５０の機能を、図９Ａ〜図１１Ｃの例を参照して更に示す。図９Ａ〜図９Ｃは、一例示の連鎖移動ＡＸ→ＢＸ→ＣＸによって提供される、同じ処理ラインにおける後続の移動演算のソースとして用いられているデスティネーションレジスタを有する移動演算を概略的に示している。図９Ａは、ＭＩＴの初期状態を示している。図９Ｂは、ＭＩＴアロケーションを示している。列０及び１は、それぞれμｏｐ０（ＭＯＶ  ＢＸ、ＡＸ）及びμｏｐ１（ＭＯＶ  ＣＸ、ＢＸ）用にアロケートされる。いずれの演算のソースも、存在する移動除去セットのメンバーでないので、双方のμｏｐ用のＣｏｐｙＤａｔａ信号８３２は０であり、ＳｅｌｅｃｔｏｒＣｏｐｙ信号８１５は、双方のμｏｐ用のＡｌｌｏｃＤａｔａ８２０をコピー／セットマルチプレクサー８４０を通じてインラインバイパスマルチプレクサー８３５に送信する。図９Ｃによって示されるように、ロジック１５０は、第１の移動演算（ＭＯＶ  ＢＸ，ＡＸ）のデスティネーションが、第２の移動演算（ＭＯＶ  ＣＸ，ＢＸ）のソースと一致することを検出する。インラインバイパスマルチプレクサー８３５は、第２の移動演算に対応するデータ（ＡｌｌｏｃＤａｔａ［Ｕｏｐ１］）ではなく、第１の移動演算に対応するコピー／アロケーションデータ（ＡｌｌｏｃＤａｔａ［Ｕｏｐ０］）を選択して、更新データマルチプレクサー８４５への入力データとして供給する。したがって、ＵｐｄａｔｅＤａｔａ［Ｕｏｐ０］及びＵｐｄａｔｅＤａｔａ［Ｕｏｐ１］は同一である。更新データマルチプレクサー８４５の出力は、優先順位がエンコードされているので、論理レジスタを参照する最後の演算に対応するバイパスされたデータが、新たなＭＩＴデータになる。更新データマルチプレクサー８４５は、第１の移動演算に対応するデータ（ＵｐｄａｔｅＤａｔａ［Ｕｏｐ０］）をＡＸ用の新たなデータとして選択し、第２の移動演算に対応するバイパスされたデータ（ＵｐｄａｔｅＤａｔａ［Ｕｏｐ１］）をＢＸ及びＣＸの双方用の新たなデータとして選択する。なぜならば、第２の移動演算は、これらのレジスタを参照する最後の演算であるからである。しかしながら、バイパスメカニズムのために、同じデータが３つの全てのエントリーに書き込まれる。
【００６４】
図１０Ａ〜図１０Ｃは、ＭＯＶ  ＢＸ，ＤＸ；ＭＯＶ  ＡＸ，ＤＸの例によって提供される、同じレジスタをソースとして用いる１つのラインにおける２つの移動演算を概略的に示している。図１０Ａは、ＭＩＴの初期状態を示している。図１０Ｂは、ＭＩＴのアロケーションを示し、列１及び２は、それぞれμｏｐ０（ＭＯＶ  ＢＸ，ＤＸ）及びμｏｐ１（ＭＯＶ  ＡＸ，ＤＸ）用にアロケートされている。いずれの演算のソースも存在する移動除去セットのメンバーでないので、ＣｏｐｙＤａｔａ信号８３２は、双方のμｏｐについて０であり、ＳｅｌｅｃｔｏｒＣｏｐｙ信号８１５は、双方のμｏｐ用のＡｌｌｏｃＤａｔａ８２０をコピー／セットマルチプレクサー８４０を通じてインラインバイパスマルチプレクサー８３５に送信する。図１０Ｃによって示されるように、図９Ａ〜図９Ｃの例と同様に、ロジック１５０は、第１の移動演算用のコピーデータ又はアロケーションデータを選択するか否かを判断する。第２の移動演算について、ロジック１５０は、この移動演算が前の移動除去された演算とソースを共有していると判断し、したがって、インラインバイパスマルチプレクサー８３５は、第２の移動演算に対応するデータ（ＡｌｌｏｃＤａｔａ［Ｕｏｐ１］）ではなく、第１の移動演算に対応するコピー／アロケーションデータ（ＡｌｌｏｃＤａｔａ［Ｕｏｐ０］）を選択して、更新データマルチプレクサー８４５に入力データとして供給する。したがって、ＵｐｄａｔｅＤａｔａ［μｏｐ０］及びＵｐｄａｔｅＤａｔａ［μｏｐ１］は同一である。更新データマルチプレクサー８４５は、第１の移動演算に対応するデータをＢＸ用の新たなデータ（ＵｐｄａｔｅＤａｔａ［μｏｐ０］）として選択し、第２の移動演算に対応するバイパスされたデータ（ＵｐｄａｔｅＤａｔａ［μｏｐ１］）をＤＸ及びＡＸの双方用の新たなデータとして選択する。なぜならば、第２の移動演算は、これらのレジスタを参照する最後の演算であるからである。しかしながら、バイパスメカニズムのために、同じデータが３つの全てのエントリーに書き込まれる。
【００６５】
図１１Ａ〜図１１Ｃは、移動連鎖が、移動除去されたレジスタへの介在する書き込みによって切断されたラインにおける２つの移動命令の一例（ＭＯＶ  ＢＸ，ＡＸ；ＢＸを上書き；ＭＯＶ  ＤＸ，ＢＸ）を概略的に示している。図１１Ａは、ＭＩＴの初期状態を示している。図１１Ｂは、ＭＩＴのアロケーションを示し、ＭＩＴの列１及び２は、それぞれμｏｐ０（ＭＯＶ  ＢＸ，ＡＸ）及びμｏｐ２（ＭＯＶ  ＤＸ，ＢＸ）用にアロケートされている。図１１Ｃによって示されるように、図９Ａ〜図９Ｃ及び図１０Ａ〜図１０Ｃの例と同様に、ロジック１５０は、移動演算のソースが、既に、存在する移動除去セットのメンバーであるか否かを判断し、対応するデータをコピー／セットマルチプレクサー８４０に供給する。この場合、コピー／セットマルチプレクサー８４０は、μｏｐ０用のＣｏｐｙＤａｔａ［μｏｐ０］、μｏｐ１用のＡｌｌｏｃＤａｔａ［μｏｐ１］、及びμｏｐ２用のＡｌｌｏｃＤａｔａ［μｏｐ２］を通過させる。μｏｐ１用のＡｌｌｏｃＤａｔａは、移動除去セットを作成せず、逆に、いずれかのセットからレジスタを削除するので、全てゼロであることに留意されたい。ロジック１５０は、第２の移動演算のソースが第１の移動演算のデスティネーションと一致すると判断し、介在する演算がそのレジスタを上書きすると判断する。したがって、バイパスメカニズムはキャンセルされ、３つの移動演算の結果は、別々に処理され、ＡＸは、第１の移動演算のデータ（ＣｏｐｙＤａｔａ［Ｕｏｐ０］信号）を受け取り、ＢＸ及びＤＸは、第２の移動演算のデータ（ＡｌｌｏｃＤａｔａ［Ｕｏｐ２］）を受け取る。更新データマルチプレクサー８４５の入力は、優先順位がエンコードされているので、第２の移動演算に対応するデータがＢＸ用の新たなデータになる。したがって、ＢＸをＭＩＴの列０に配置し、ＢＸを列０から削除し、次いで、ＢＸを列２に配置するＢＸの中間の更新は、バイパスロジック演算に起因して行われていない。
【００６６】
或る特定の実施態様では、プロセッサは、整数汎用論理レジスタ（ＩＮＴ）領域及びストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタ領域内の移動命令を除去することができる。ＳＳＥ領域は、ＳＳＥのスーパーセット領域であるアドバンストベクトルエクステンション（ＡＶＸ）用の論理レジスタ領域も含むことができる。実施態様の効率を更に改善するために、プロセッサは、移動演算に関与するレジスタのタイプにかかわらず、移動演算ごとにＳＳＥ及びＩＮＴ  ＭＩＴの双方における移動除去セットを予約することができる。実際に実行される移動除去の数が削減される可能性があるにもかかわらず、ＳＳＥ移動演算は、通常ならばＩＮＴ命令によって用いられていた可能性のあるＩＮＴ移動除去セットを予約することができるので、上述の統一した予約メカニズムは、プロセッサによる命令実行の全体的な効率を更に改善することができる。
【００６７】
このように、本明細書において説明されるバイパスＭＩＴ設計は、並列計算に起因したＭＩＴ更新の遅延の低減と、オーファン列のアクティブなクリアの実行と、統一された予約メカニズムの実施とによってプロセッサ性能を改善する。
【００６８】
図１３は、本開示の１つ又は複数の態様によるバイパスＭＩＴを用いた移動除去のための一例示の方法の流れ図を示している。この方法９００は、ハードウェア（例えば、回路部、専用ロジック、及び／又はプログラマブルロジック）、ソフトウェア（例えば、ハードウェアシミュレーションを実行するコンピューターシステム上で実行可能な命令）、又はそれらの組み合わせを含むことができるコンピューターシステムが実行することができる。方法９００及び／又はその機能、ルーチン、サブルーチン、若しくは演算のそれぞれは、この方法を実行するコンピューターシステムの１つ又は複数の物理プロセッサが実行することができる。方法９００の２つ以上の機能、ルーチン、サブルーチン、又は演算は、並列に実行することもできるし、上述した順序とは異なり得る順序で実行することもできる。図１３によって示すような１つの例では、方法９００は、図１のコンピューターシステム１００が実行することができる。
【００６９】
図１３を参照すると、ブロック９１０において、プロセッサは、複数のレジスタ値をＰＲＦに記憶することができる。
【００７０】
ブロック９２０において、プロセッサは、複数のポインターをＲＡＴに記憶することができる。ＲＡＴの各ポインターは、ＰＲＦの要素を参照する。
【００７１】
ブロック９３０において、プロセッサは、複数の移動除去セットをＭＩＴに記憶することができる。各移動除去セットは、複数の論理レジスタを表す複数のビットを含むことができる。
【００７２】
ブロック９４０において、プロセッサは、２つ以上のデータ操作演算の従属関係を事前に計算することができる。
【００７３】
ブロック９５０において、プロセッサは、ＲＡＴ及び／又はＭＩＴを更新することによって２つ以上のデータ操作演算の結果を反映することができる。本明細書において上述したように、或る特定の実施態様では、プロセッサは、２つ以上のデータ操作演算の従属関係を事前に計算することができ、次いで、２つ以上の演算の結果を反映するように単一のＭＩＴ更新を実行することができ、したがって、移動除去演算のタイミング及び電力消費の双方の側面を改善することができる。ブロック９５０によって参照される演算が完了すると、この方法は終了することができる。
【００７４】
図１４は、本開示の１つ又は複数の態様による一例示のコンピューターシステムのブロック図を示している。図１４に示すように、マルチプロセッサシステム７００は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続７５０を介して結合された第１のプロセッサ７７０及び第２のプロセッサ７８０を備える。プロセッサ７７０及び７８０のそれぞれは、本明細書において上記でより詳細に説明したように、トランザクションメモリアクセス演算及び／又は非トランザクションメモリアクセス演算を実行することができるプロセッサ１０２の或るバージョンとすることができる。
【００７５】
２つのプロセッサ７７０、７８０のみを用いて示されているが、本発明の範囲はそのように限定されるものでないことが理解される。他の実施形態では、１つ又は複数の追加のプロセッサが所与のプロセッサに存在する場合がある。
【００７６】
統合メモリコントローラーユニット７７２及び７８２をそれぞれ備えるプロセッサ７７０及び７８０が示されている。プロセッサ７７０は、バスコントローラーユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インターフェース７７６及び７７８も備える。同様に、第２のプロセッサ７８０は、Ｐ−Ｐインターフェース７８６及び７８８を備える。プロセッサ７７０、７８０は、ポイントツーポイント（Ｐ−Ｐ）インターフェース回路７７８、７８８を用いてＰ−Ｐインターフェース７５０を介して情報を交換することができる。図１４に示すように、ＩＭＣ７７２及び７８２は、プロセッサをそれぞれのメモリ、すなわちメモリ７３２及びメモリ７３４に結合する。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリの一部分とすることができる。
【００７７】
プロセッサ７７０、７８０はそれぞれ、ポイントツーポイントインターフェース回路７７６、７９４、７８６、７９８を用いて個々のＰ−Ｐインターフェース７５２、７５４を介してチップセット７９０と情報を交換することができる。チップセット７９０は、高性能グラフィックスインターフェース７３９を介して高性能グラフィックス回路７３８とも情報を交換することができる。
【００７８】
共有キャッシュ（図示せず）を、いずれかのプロセッサ内に備えることもできるし、双方のプロセッサの外部に備えて、さらに、Ｐ−Ｐ相互接続を介して両プロセッサと接続することもでき、その結果、プロセッサが低電力モードになった場合に、いずれかのプロセッサ又は双方のプロセッサのローカルキャッシュ情報を共有キャッシュに記憶することができる。
【００７９】
チップセット７９０は、インターフェース７９６を介して第１のバス７１６に結合することができる。１つの実施形態では、第１のバス７１６は、ペリフェラルコンポーネントインターコネクト（ＰＣＩ）バス、又はＰＣＩエクスプレスバス若しくは別の第３世代Ｉ／Ｏ相互接続バス等のバスとすることができるが、本発明の範囲は、そのように限定されるものではない。
【００８０】
図１４に示すように、様々なＩ／Ｏデバイス７１４を、第１のバス７１６を第２のバス７２０に結合するバスブリッジ７１８とともに第１のバス７１６に結合することができる。１つの実施形態では、第２のバス７２０は、ローピンカウント（ＬＰＣ）バスとすることができる。様々なデバイスを第２のバス７２０に結合することができる。これらの様々なデバイスには、例えば、キーボード及び／又はマウス７２２、通信デバイス７２７、並びに１つの実施形態では命令／コード及びデータ７３０を含むことができるディスクドライブ若しくは他のマスストレージデバイス等の記憶ユニット７２８が含まれる。さらに、オーディオＩ／Ｏ７２４を第２のバス７２０に結合することができる。他のアーキテクチャが可能であることに留意されたい。例えば、図１４のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスアーキテクチャ又は他のそのようなアーキテクチャを実装することができる。
【００８１】
以下の例は、本開示の１つ又は複数の態様による様々な実施態様を示している。
【００８２】
例１は、複数の物理レジスタ値を記憶する第１のデータ構造体と、複数のポインターを記憶する第２のデータ構造体であって、各ポインターは、第１のデータ構造体の要素を参照する、第２のデータ構造体と、複数の移動除去セットを含む第３のデータ構造体であって、各移動除去セットは、複数の論理レジスタを表す複数のビットを含む、第３のデータ構造体と、第２のデータ構造体の要素に第１のデータ構造体の要素を参照させることによってデータ操作演算を実行するロジックであって、第３のデータ構造体の一回の更新を実行することによって２つ以上のデータ操作演算の結果を反映するように更に構成されている、ロジックとを備える処理システムである。
【００８３】
例２では、例１の処理システムの第３のデータ構造体の更新は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを含むことができる。
【００８４】
例３では、例１の処理システムのロジックは、２つ以上のデータ操作演算の従属関係を事前に計算することに基づいて第３のデータ構造体を更新することができる。
【００８５】
例４では、例１の処理システムのロジックは更に、整数汎用論理レジスタ領域における第１の移動除去セット又はストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタ領域における第２の移動除去セットのうちの少なくとも一方を予約することができる。
【００８６】
例５では、例１の処理システムのロジックは、第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、第３のデータ構造体を更新する信号を出力することができる。
【００８７】
例６では、例１の処理システムのロジックは、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することができる。
【００８８】
例７は、データ操作演算を実行する方法であって、コンピューターシステムによって複数の物理レジスタ値を第１のデータ構造体に記憶することと、複数のポインターを第２のデータ構造体に記憶することであって、各ポインターは、第１のデータ構造体の要素を参照することと、複数の移動除去セットを第３のデータ構造体に記憶することであって、各移動除去セットは、複数の論理レジスタを表す複数のビットを含むことと、第２のデータ構造体の要素に第１のデータ構造体の要素を参照させることによってデータ操作演算を実行することと、第３のデータ構造体の一回の更新を実行することによって２つ以上のデータ操作演算の結果を反映することとを含む。
【００８９】
例８では、例７の方法の第３のデータ構造体を更新することは、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを含むことができる。
【００９０】
例９では、例７の方法は、整数汎用論理レジスタ領域における第１の移動除去セット又はストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタ領域における第２の移動除去セットのうちの少なくとも一方を予約することを更に含むことができる。
【００９１】
例１０では、例７の方法は、第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、第３のデータ構造体を更新する信号を出力することを更に含むことができる。
【００９２】
例１１では、例７の方法は、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することを更に含むことができる。
【００９３】
例１２では、例７の方法の第３のデータ構造体を更新することは、２つ以上のデータ操作演算の従属関係を事前に計算することに基づいて実行することができる。
【００９４】
例１３は、処理システムであって、複数の物理レジスタ値を記憶する第１のデータ構造体と、複数のポインターを記憶する第２のデータ構造体であって、各ポインターは、第１のデータ構造体の要素を参照する、第２のデータ構造体と、第１の複数の移動除去セット及び第２の複数の移動除去セットを含む第３のデータ構造体であって、第１の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、第２の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタを表す複数のビットを含む、第３のデータ構造体と、第１の複数の移動除去セットのうちの第１の移動除去セット及び第２の複数の移動除去セットのうちの第２の移動除去セットを予約するロジックであって、更に第２のデータ構造体と、第１の移動除去セット又は第２の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行するロジックとを備える。
【００９５】
例１４では、例１３の処理システムのロジックは更に、第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、第３のデータ構造体を更新する信号を出力することができる。
【００９６】
例１５では、例１３の処理システムのロジックは更に、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することができる。
【００９７】
例１６では、例１３の処理システムのロジックは更に、２つ以上のデータ操作演算の従属関係を事前に計算し、第３のデータ構造体の単一の更新を実行することによって上記２つ以上のデータ操作演算の結果を反映することができる。
【００９８】
例１７では、例１３の処理システムのロジックは更に、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを実行することができる。
【００９９】
例１８は、データ操作演算を実行する方法であって、コンピューターシステムによって複数の物理レジスタ値を第１のデータ構造体に記憶することと、複数のポインターを第２のデータ構造体に記憶することであって、各ポインターは、第１のデータ構造体の要素を参照することと、第１の複数の移動除去セット及び第２の複数の移動除去セットを第３のデータ構造体に記憶することであって、第１の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、第２の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタを表す複数のビットを含むことと、第１の複数の移動除去セットのうちの第１の移動除去セット及び第２の複数の移動除去セットのうちの第２の移動除去セットを予約することと、第２のデータ構造体と、第１の移動除去セット又は第２の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行することとを含む。
【０１００】
例１９では、例１８の方法は、第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、第３のデータ構造体を更新する信号を出力することを更に含むことができる。
【０１０１】
例２０では、例１８の方法は、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することを更に含むことができる。
【０１０２】
例２１では、例１８の方法は、２つ以上のデータ操作演算の従属関係を事前に計算することと、第３のデータ構造体の単一の更新を実行することによって上記２つ以上のデータ操作演算の結果を反映することとを更に含むことができる。
【０１０３】
例２２では、例１８の方法は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを実行することを更に含むことができる。
【０１０４】
例２３は、コンピューター可読非一時的記憶媒体であって、コンピューターシステムによって実行されると、当該コンピューターシステムによって複数の物理レジスタ値を第１のデータ構造体に記憶することと、複数のポインターを第２のデータ構造体に記憶することであって、各ポインターは、第１のデータ構造体の要素を参照することと、複数の移動除去セットを第３のデータ構造体に記憶することであって、各移動除去セットは、複数の論理レジスタを表す複数のビットを含むことと、第２のデータ構造体の要素に第１のデータ構造体の要素を参照させることによってデータ操作演算を実行することと、第３のデータ構造体の一回の更新を実行することによって２つ以上のデータ操作演算の結果を反映することとを含む演算を上記コンピューターシステムに実行させる実行可能命令を含む。
【０１０５】
例２４では、例２３の第３のデータ構造体を更新することは、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを含むことができる。
【０１０６】
例２５では、例２３のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、２つ以上のデータ操作演算の従属関係を事前に計算することに基づいて第３のデータ構造体を更新することをコンピューターシステムに更に行わせることができる。
【０１０７】
例２６では、例２３のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、整数汎用論理レジスタ領域における第１の移動除去セット又はストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタ領域における第２の移動除去セットのうちの少なくとも一方を予約することをコンピューターシステムに更に行わせることができる。
【０１０８】
例２７では、例２３のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、第３のデータ構造体を更新する信号を出力することをコンピューターシステムに更に行わせることができる。
【０１０９】
例２８では、例２３のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することをコンピューターシステムに更に行わせることができる。
【０１１０】
例２９は、コンピューター可読非一時的記憶媒体であって、コンピューターシステムによって実行されると、複数の物理レジスタ値を第１のデータ構造体に記憶することと、複数のポインターを第２のデータ構造体に記憶することであって、各ポインターは、第１のデータ構造体の要素を参照することと、第１の複数の移動除去セット及び第２の複数の移動除去セットを第３のデータ構造体に記憶することであって、第１の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、第２の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ（ＳＩＭＤ）拡張（ＳＳＥ）論理レジスタを表す複数のビットを含むことと、第１の複数の移動除去セットのうちの第１の移動除去セット及び第２の複数の移動除去セットのうちの第２の移動除去セットを予約することと、第２のデータ構造体と、第１の移動除去セット又は第２の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行することとを含む演算を上記コンピューターシステムに実行させる実行可能命令を含む。
【０１１１】
例３０では、例２９のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第３のデータ構造体の前の状態を反映する第１の信号、データ操作演算用のソース論理レジスタを識別する第２の信号、データ操作演算用のデスティネーション論理レジスタを識別する第３の信号、存在する移動除去セットが少なくとも１つの参照子を含むか否かを識別する第４の信号、第３のデータ構造体内の新たな移動除去セットを識別する第５の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第６の信号のうちの少なくとも１つを処理することによって、第３のデータ構造体を更新することをコンピューターシステムに更に行わせることができる。
【０１１２】
例３１では、例２９のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる２つのデータ操作演算、ソースとして共通のレジスタを用いる２つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第２のデータ操作演算のソースと一致するデスティネーションレジスタを有する第１のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第２のデータ操作演算のソースであるレジスタを上書きする第１のデータ操作演算のうちの少なくとも１つを検出することをコンピューターシステムに更に行わせることができる。
【０１１３】
例３２では、例２９のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、２つ以上のデータ操作演算の従属関係を事前に計算することと、第３のデータ構造体の一回の更新を実行することによって上記２つ以上のデータ操作演算の結果を反映することとをコンピューターシステムに更に行わせることができる。
【０１１４】
例３３では、例２９のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも１つを実行することをコンピューターシステムに更に行わせることができる。
【０１１５】
例３４は、装置であって、メモリと、このメモリに結合された処理システムとを備え、この処理システムは、上記例７〜１２のいずれかの方法を実行する。
【０１１６】
例３４は、装置であって、メモリと、このメモリに結合された処理システムとを備え、この処理システムは、上記例１８〜２２のいずれかの方法を実行する。
【０１１７】
この詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及びシンボル表現に関して提示されている。これらのアルゴリズムによる説明及び表現は、データ処理技術の当業者が自身の成果の内容を他の当業者に最も効果的に伝えるために用いる手段である。アルゴリズムは、本明細書において及び一般的には、所望の結果をもたらす自己矛盾のない演算シーケンスと考えられる。これらの演算は、物理量の物理操作を必要とするものである。必ずしもそうではないが通常は、これらの量は、記憶、転送、結合、比較、及びそれ以外の操作が可能な電気信号又は磁気信号の形態を取る。これらの信号を、ビット、値、要素、シンボル、文字、項（terms）、数等と呼ぶことが、主として共通使用の理由から時に便利であることが分かっている。
【０１１８】
しかしながら、これらの用語及び同様の用語の全ては、適切な物理量に関連付けられ、これらの量に適用される便宜上のラベルにすぎないことに留意すべきである。上記の論述から明らかなように、特に別段の指定がない限り、この説明全体を通じて、「暗号化」、「解読」、「記憶」、「提供」、「導出」、「取得」、「受信」、「認証」、「削除」、「実行」、「要求」、「通信」等の用語を利用した論述は、コンピューターシステムのレジスタ及びメモリ内で物理（例えば、電気）量として表されたデータを操作及びは変換して、それらのコンピューターシステムのメモリ若しくはレジスタ、又は他のそのような情報記憶デバイス、送信デバイス、若しくはディスプレイデバイス内で物理量として同様に表される他のデータにするコンピューターシステム又は同様の電子コンピューティングデバイスの動作及びプロセスを指すことが認識される。
【０１１９】
「例」又は「例示的」という用語は、本明細書では、一例、一実例、又は一例証としての役割を果たすことを意味するように用いられている。「例」又は「例示的」と本明細書に記載された任意の態様又は設計は、必ずしも他の態様又は設計よりも好ましい又は有利であるとはみなされない。むしろ、「例」又は「例示的」という用語の使用は、具体的な形式で概念を表現するように意図されている。「又は」という用語は、本出願において用いられるとき、排他的な「又は」ではなく包括的な「又は」を意味するように意図されている。すなわち、別段の規定がないか又は文脈から明らかでない限り、「ＸはＡ又はＢを含む」とは、自然な包含的な並べ替えのいずれをも意味するように意図されている。すなわち、ＸがＡを含む場合、ＸがＢを含む場合、又はＸがＡ及びＢの双方を含む場合、「ＸはＡ又はＢを含む」が上記の場合のいずれにおいても満たされる。加えて、本出願及び添付の特許請求の範囲で用いられる、冠詞「ａ」または「ａｎ」は、別段の規定がないか又は文脈から単数形を指すことが明らかでない限り、一般に「１つ又は複数の」を意味するものと解釈されるべきである。その上、全体を通じて「一実施形態」若しくは「１つの実施形態」又は「一実施態様」若しくは「１つの実施態様」という用語の使用は、同じ実施形態又は実施態様として説明されていない限り、同じ実施形態又は実施態様を意味するように意図されていない。また、「第１」、「第２」、「第３」、「第４」等の用語は、本明細書において用いられるとき、異なる要素を区別するためのラベルとして意図されており、必ずしもそれらの数字指定に従った通常の意味を有するものではない場合がある。
【０１２０】
本明細書において説明する実施形態は、本明細書における演算を実行するための装置にも関係することができる。この装置は、所要の目的のために特別に構成することもできるし、コンピューターに記憶されたコンピュータープログラムによって選択的にアクティブ化又は再構成された汎用コンピューターを含むこともできる。そのようなコンピュータープログラムは、非一時的コンピューター可読記憶媒体に記憶することができる。この非一時的コンピューター可読記憶媒体は、フロッピー（登録商標）ディスク、光ディスク、ＣＤ−ＲＯＭ、及び光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気カード若しくは光カード、フラッシュメモリ、又は電子命令を記憶するのに適した任意のタイプの媒体等であるが、これらに限定されるものではない。「コンピューター可読記憶媒体」という用語は、一組又は複数組の命令を記憶する単一の媒体又は複数の媒体（例えば、集中型若しくは分散型データベース及び／又は関連付けられたキャッシュ及びサーバー）を含むものとみなされるべきである。「コンピューター可読媒体」という用語も、機械による実行のために一組の命令を記憶、エンコード、又は担持することができるとともに、本実施形態の方法論のうちの任意の１つ又は複数を機械に実行させる任意の媒体を含むものとみなされる。「コンピューター可読記憶媒体」という用語は、したがって、ソリッドステートメモリ、光媒体、磁気媒体、機械による実行のために一組の命令を記憶することができるとともに本実施形態の方法論のうちの任意の１つ又は複数を機械に実行させる任意の媒体を含むものとみなされるが、これらに限定されるものではない。
【０１２１】
本明細書において提示されるアルゴリズム及び表示は、本来的に、どの特定のコンピューターにも他の装置にも関係していない。様々な汎用システムを、本明細書における教示に従ったプログラムとともに用いることもできるし、所要の方法の動作を実行する、より特殊化された装置を構築することが好都合であることが分かる場合もある。様々なこれらのシステムに必要とされる構造は、以下の説明から明らかになるであろう。加えて、本実施形態は、特定のプログラム言語に関して説明されるものではない。様々なプログラム言語を用いて、本明細書において説明された実施形態の教示を実施することができることが認識されるであろう。
【０１２２】
上記説明は、幾つかの実施形態の十分な理解を提供するために、特定のシステム、構成要素、方法等の例等の多数の特定の詳細を述べている。しかしながら、少なくとも幾つかの実施形態は、これらの特定の詳細がなくても実施することができることが当業者には明らかであろう。それ以外の場合には、本実施形態を不必要に分かりにくくしないように、よく知られた構成要素又は方法は、詳細に説明されていないか又は単純なブロック図の形式で提示されている。したがって、上述の特定の詳細は、単なる例示的なものにすぎない。特定の実施態様は、これらの例示的な詳細から変化する場合があり、それでも、本実施形態の範囲内にあるものと考えることができる。
【０１２３】
上記の説明は、制限的ではなく説明的であることが意図されることを理解されたい。多くの他の実施形態は、上記の説明を読み理解した当業者には明らかとなろう。したがって、本実施形態の範囲は、添付の特許請求の範囲を、そのような特許請求の範囲が権利を与えられる全ての範囲の等価物とともに参照して画定されるべきである。
【図１】
2014182803.tif 000003
【図２】
2014182803.tif 000004
【図３Ａ】
2014182803.tif 000005
【図３Ｂ】
2014182803.tif 000006
【図４】
2014182803.tif 000007
【図５】
2014182803.tif 000008
【図６Ａ】
2014182803.tif 000009
【図６Ｂ】
2014182803.tif 000010
【図６Ｃ】
2014182803.tif 000011
【図７Ａ】
2014182803.tif 000012
【図７Ｂ】
2014182803.tif 000013
【図７Ｃ】
2014182803.tif 000014
【図８Ａ】
2014182803.tif 000015
【図８Ｂ】
2014182803.tif 000016
【図８Ｃ】
2014182803.tif 000017
【図９Ａ】
2014182803.tif 000018
【図９Ｂ】
2014182803.tif 000019
【図９Ｃ】
2014182803.tif 000020
【図１０Ａ】
2014182803.tif 000021
【図１０Ｂ】
2014182803.tif 000022
【図１０Ｃ】
2014182803.tif 000023
【図１１Ａ】
2014182803.tif 000024
【図１１Ｂ】
2014182803.tif 000025
【図１１Ｃ】
2014182803.tif 000026
【図１２】
2014182803.tif 000027
【図１３】
2014182803.tif 000028
【図１４】
2014182803.tif 000029
【外国語明細書】
2014182803000001.pdf