特許第5758515号(P5758515)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許5758515バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5758515
(24)【登録日】2015年6月12日
(45)【発行日】2015年8月5日
(54)【発明の名称】バイパスマルチプルインスタンス化テーブルを用いた移動除去のためのシステム及び方法
(51)【国際特許分類】
   G06F 9/30 20060101AFI20150716BHJP
   G06F 9/34 20060101ALI20150716BHJP
   G06F 9/38 20060101ALI20150716BHJP
【FI】
   G06F9/30 350B
   G06F9/34 330
   G06F9/38 370A
【請求項の数】20
【外国語出願】
【全頁数】35
(21)【出願番号】特願2014-34934(P2014-34934)
(22)【出願日】2014年2月26日
(65)【公開番号】特開2014-182803(P2014-182803A)
(43)【公開日】2014年9月29日
【審査請求日】2014年2月26日
(31)【優先権主張番号】13/840,462
(32)【優先日】2013年3月15日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】アンダーソン、ジェレミー アール.
【審査官】 清木 泰
(56)【参考文献】
【文献】 米国特許出願公開第2011/0208918(US,A1)
【文献】 米国特許出願公開第2014/0189324(US,A1)
【文献】 米国特許出願公開第2014/0068230(US,A1)
【文献】 国際公開第2013/101323(WO,A1)
【文献】 米国特許出願公開第2012/0005459(US,A1)
【文献】 米国特許出願公開第2009/0327661(US,A1)
【文献】 米国特許出願公開第2003/0093652(US,A1)
【文献】 米国特許第06553483(US,B1)
【文献】 米国特許第06505293(US,B1)
【文献】 特開平03−037722(JP,A)
【文献】 国際公開第2006/126449(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30− 9/42
(57)【特許請求の範囲】
【請求項1】
複数の物理レジスタ値を含む物理レジスタファイル(PRF)と、
数のポインターを含むレジスタエイリアステーブル(RAT)であって、前記複数のポインターのそれぞれが、前記ポインターに関連付けられた論理レジスタの値を格納するために利用される前記PRFの要素を識別する、前記RATと、
それぞれが数のビットを含む複数の移動除去セットを含むマルチプルインスタンス化テーブル(MIT)であって、各ビットが、前記ビットに対応する論理レジスタの値が、2つ以上の論理レジスタ値によって共有される前記PRFのエントリーに格納されているかを示す、前記MITと、
前記RATの要素に前記PRFの要素を参照させることによって、物理レジスタ間でデータを移動させないで、論理レジスタ間でデータ操作演算を実行するためのロジックであって、さらに前記MITの一回の更新を実行することによって2つ以上のデータ操作演算の結果を反映するものである、ロジックと、
を備える、処理システム。
【請求項2】
前記MITの前記更新を実行するために前記ロジックは、移動除去セットを作成すること、存在する移動除去セットのビット値を変更すること、又は物理レジスタから移動除去セットを分離することのうちの少なくとも1つを実行するものである、請求項1に記載の処理システム。
【請求項3】
前記ロジックは、2つ以上の命令に基づく2つ以上のデータ操作演算の従属関係を事前に計算することに基づいて前記MITを更新するものである、請求項1または2に記載の処理システム。
【請求項4】
前記ロジックはさらに、整数汎用論理レジスタ領域のための第1の移動除去セット又はストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタ領域のための第2の移動除去セットのうちの少なくとも一方を予約するものである、請求項1から3の何れか1項に記載の処理システム。
【請求項5】
前記ロジックは、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第2のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出するものである、請求項1からの何れか1項に記載の処理システム。
【請求項6】
処理システムがデータ操作演算を実行する方法であって、
数の物理レジスタ値を物理レジスタファイル(PRF)に記憶することと、
数のポインターをレジスタエイリアステーブル(RAT)に記憶することであって、前記複数のポインターのそれぞれが、前記ポインターに関連付けられた論理レジスタの値を格納するために利用される前記PRFの要素を識別する、前記RATに記憶することと
それぞれが数のビットを含む複数の移動除去セットをマルチプルインスタンス化テーブル(MIT)に記憶することであって、各ビットが、前記ビットに対応する論理レジスタの値が、2つ以上の論理レジスタ値によって共有される前記PRFのエントリーに格納されているかを示す、前記MITに記憶することと、
前記RATの要素に前記PRFの要素を参照させることによって、物理レジスタ間でデータを移動させないで、データ操作演算を実行することと、
前記MITの一回の更新を実行することによって2つ以上のデータ操作演算の結果を反映することと、
を含む、方法。
【請求項7】
前記MITを更新することは、移動除去セットを作成すること、存在する移動除去セットのビット値を変更すること、又は物理レジスタから移動除去セットを分離することのうちの少なくとも1つを含む、請求項に記載の方法。
【請求項8】
整数汎用論理レジスタ領域のための第1の移動除去セット又はストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタ領域のための第2の移動除去セットのうちの少なくとも一方を予約することを更に含む、請求項またはに記載の方法。
【請求項9】
第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第2のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することを更に含む、請求項からの何れか1項に記載の方法。
【請求項10】
前記MITの前記更新は、2つ以上の命令に基づく2つ以上のデータ操作演算の従属関係を事前に計算することに基づいて実行される、請求項からの何れか1項に記載の方法。
【請求項11】
複数の物理レジスタ値を含む物理レジスタファイル(PRF)と、
数のポインターを含むレジスタエイリアステーブル(RAT)であって、前記複数のポインターのそれぞれが、前記ポインターに関連付けられた論理レジスタの値を格納するために利用される前記PRFの要素を識別する、前記RATと、
それぞれが複数のビットを含む複数の移動除去セットを含むマルチプルインスタンス化テーブル(MIT)であって、各ビットが、前記ビットに対応する論理レジスタの値が、2つ以上の論理レジスタ値によって共有される前記PRFのエントリーに格納されているかを示し、前記複数の移動除去セットは第1の移動除去セット及び第2の移動除去セットを含み、前記第1の移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、前記第2の移動除去セットは、複数のストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタを表す複数のビットを含む、前記MITと、
前記RATの要素に前記PRFの要素を参照させることによって、物理レジスタ間でデータを移動させないで、論理レジスタ間でデータ操作演算を実行するロジックであって、前記ロジックは、前記データ操作演算を実行するために、前記1の移動除去セット及び前記2の移動除去セットを予約し、前記RATと、前記第1の移動除去セット又は前記第2の移動除去セットのうちの一方とを更新するロジックと、
を備える、
処理システム。
【請求項12】
前記ロジックはさらに、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第2のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出する、請求項11に記載の処理システム。
【請求項13】
前記ロジックはさらに、
2つ以上の命令に基づく2つ以上のデータ操作演算の従属関係を事前に計算し、
前記MITの一回の更新を実行することによって前記2つ以上のデータ操作演算の結果を反映する請求項11又は12に記載の処理システム。
【請求項14】
前記ロジックはさらに、移動除去セットを作成すること、存在する移動除去セットのビットを変更すること、又は物理レジスタから移動除去セットを分離することのうちの少なくとも1つを実行する請求項11から13の何れか1項に記載の処理システム。
【請求項15】
処理システムがデータ操作演算を実行する方法であって、
数の物理レジスタ値を物理レジスタファイル(PRF)に記憶することと、
数のポインターをレジスタエイリアステーブル(RAT)に記憶することであって、前記複数のポインターのそれぞれが、前記ポインターに関連付けられた論理レジスタの値を格納するために利用される前記PRFの要素を識別する、前記RATに記憶することと、
それぞれが複数のビットを含む複数の移動除去セットをマルチプルインスタンス化テーブル(MIT)に記憶することであって、各ビットが、前記ビットに対応する論理レジスタの値が、2つ以上の論理レジスタ値によって共有される前記PRFのエントリーに格納されているかを示し、前記複数の移動除去セットは第1の移動除去セット及び第2の移動除去セットを含み、前記第1の移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、前記第2の移動除去セットは、複数のストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタを表す複数のビットを含む、前記MITに記憶することと、
前記1の移動除去セット及び前記2の移動除去セットを予約することと、
記第1の移動除去セット又は前記第2の移動除去セットのうちの一方更新することによってデータ操作演算を実行することと、
物理レジスタ間でデータを移動させないで、前記RATの要素に前記PRFの要素を参照させることと、
を含
方法。
【請求項16】
第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴った、前記ソースレジスタとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った、第2のデータ操作演算のソースと一致する前記デスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することを更に含む、請求項15に記載の方法。
【請求項17】
2つ以上の命令に基づく2つ以上のデータ操作演算の従属関係を事前に計算することと、
前記MITの一回の更新を実行することによって前記2つ以上のデータ操作演算の結果を反映することと、
を更に含む、請求項15又は16に記載の方法。
【請求項18】
移動除去セットを作成すること、移動除去セットを変更すること、又は物理レジスタから移動除去セットを分離することのうちの少なくとも1つを実行することを更に含む、請求項15から17の何れか1項に記載の方法。
【請求項19】
メモリと、
前記メモリに結合された処理システムと、
を備え、
前記処理システムは、請求項10のいずれか1項に記載の方法を実行する装置。
【請求項20】
メモリと、
前記メモリに結合された処理システムと、
を備え、
前記処理システムは、請求項1518のいずれか1項に記載の方法を実行する装置。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、包括的には、コンピューターシステムに関し、特に、コンピューターシステムによるデータコピー命令の実行効率を改善することに関する。
【背景技術】
【0002】
物理レジスタ間のデータコピー演算は、プロセッサによって実行される演算のかなりの部分に相当する。したがって、それらのデータコピー演算の実行を最適化することによって、プロセッサの全体的な性能を高めることができる。
【図面の簡単な説明】
【0003】
本開示は、限定としてではなく例示として示され、以下の詳細な説明が図とともに検討されるとき、以下の詳細な説明を参照することによってより十分に理解することができる。
図1】本開示の1つ又は複数の態様による一例示のコンピューターシステムのハイレベル構成図である。
図2】本開示の1つ又は複数の態様によるプロセッサのブロック図である。
図3A】本開示の1つ又は複数の態様によるプロセッサマイクロアーキテクチャの要素を概略的に示す図である。
図3B】本開示の1つ又は複数の態様によるプロセッサマイクロアーキテクチャの要素を概略的に示す図である。
図4】本開示の1つ又は複数の態様による、図1の例示のコンピューターシステム100の一例示のプロセッサ及び他の構成要素の幾つかの態様を概略的に示す図である。
図5】本開示の1つ又は複数の態様による、レジスタエイリアシングによって移動演算(move operation:ムーブ演算)を実行する一例を概略的に示す図である。
図6A】本開示の1つ又は複数の態様による、マルチプルインスタンス化テーブル(MIT)を物理レジスタファイル(PRF)エントリー追跡に用いることを概略的に示す図である。
図6B】本開示の1つ又は複数の態様による、マルチプルインスタンス化テーブル(MIT)を物理レジスタファイル(PRF)エントリー追跡に用いることを概略的に示す図である。
図6C】本開示の1つ又は複数の態様による、マルチプルインスタンス化テーブル(MIT)を物理レジスタファイル(PRF)エントリー追跡に用いることを概略的に示す図である。
図7A】本開示の1つ又は複数の態様によるMITアロケーション/予約ロジックを概略的に示す図である。
図7B】本開示の1つ又は複数の態様によるMITアロケーション/予約ロジックを概略的に示す図である。
図7C】本開示の1つ又は複数の態様によるMITアロケーション/予約ロジックを概略的に示す図である。
図8A】本開示の1つ又は複数の態様によるMITオーファンリクラメーションロジックを概略的に示す図である。
図8B】本開示の1つ又は複数の態様によるMITオーファンリクラメーションロジックを概略的に示す図である。
図8C】本開示の1つ又は複数の態様によるMITオーファンリクラメーションロジックを概略的に示す図である。
図9A】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図9B】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図9C】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図10A】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図10B】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図10C】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図11A】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図11B】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図11C】本開示の1つ又は複数の態様による、バイパスMITロジックによって実施されるデータ操作演算の幾つかの例を概略的に示す図である。
図12】本開示の1つ又は複数の態様による、移動除去ロジックを実施する一例示の回路を概略的に示す図である。
図13】本開示の1つ又は複数の態様による一例示の方法の流れ図である。
図14】本開示の1つ又は複数の態様による一例示のコンピューターシステムのブロック図である。
【発明を実施するための形態】
【0004】
本明細書では、バイパスマルチプルインスタンス化テーブル(MIT)ロジックを用いて移動除去を実施するためのコンピューターシステム及び関連技術が説明される。「移動除去」とは、本明細書においては、(例えば、レジスタエイリアステーブル内のエントリーを変更することによって)実行ユニットを用いることなくレジスタコピー演算を実行することを指すものとする。
【0005】
プロセッサは、命令実行効率を改善するために、レジスタエイリアシングを実施することができる。すなわち、物理レジスタファイル(PRF)と呼ばれる第1のデータ構造体を用いて、物理レジスタ値を記憶することができ、レジスタエイリアステーブル(RAT)と呼ばれる第2のデータ構造体を用いて、論理レジスタ識別子(例えば、R8又はAX等)をPRFに記憶された値にマッピングするポインターを記憶することができる。レジスタエイリアシングによって、或る特定(certain)の命令を実行ユニットに送信することなく、エイリアステーブル内のエントリーを変更することによって、それらの命令を実行することが可能になる。そのような命令の例には、レジスタゼロ化命令(例えば、XOR AX,AX等)及びレジスタコピー命令(MOV命令等)が含まれる。レジスタコピー命令は、新たな値を作成しないので、ソースレジスタポインターをRATにおけるデスティネーションレジスタポインター内にコピーすることができ、そのため、この命令は、実行ユニット及び別のPRFエントリーを用いる必要がない。このプロセスは、移動命令が、実行ユニットに送信されるストリームから除去されるので、「移動除去」と呼ばれる。
【0006】
上述したレジスタエイリアシング方式では、PRFエントリーを新たな命令による使用のためにいつ解放することができるのかを判断するために、PRFテーブルエントリーの使用状態を追跡することが必要な場合がある。本明細書において以下でより詳細に説明するように、PRFテーブルエントリーの使用状態を追跡するには、マルチプルインスタンス化テーブル(MIT)と呼ばれる第3のデータ構造体を用いることができる。
【0007】
本明細書において説明するシステム及び方法は、2つ以上のデータ操作演算の従属関係を事前に計算し、次いで、それらの2つ以上の演算の結果を反映するように単一のMIT更新を実行することができ、したがって、移動除去演算のタイミング及び電力消費の双方の側面を改善することができる。上記方法及びシステムの様々な態様は、本明細書において以下で限定としてではなく例示として詳細に説明される。
【0008】
以下の説明では、本発明の十分な理解を提供するために、特定のタイプのプロセッサ及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ及びマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令タイプ、特定のシステム構成要素、特定の測定値/高さ、特定のプロセッサパイプラインステージ及び演算等の例等の多数の特定の詳細が述べられる。しかしながら、本発明を実施するのに、これらの特定の詳細を必ずしも用いなくてもよいことが当業者には明らかであろう。それ以外の場合には、特定のプロセッサアーキテクチャ及び代替のプロセッサアーキテクチャ、説明されるアルゴリズムのための特定の論理回路/コード、特定のファームウェアコード、特定の相互接続動作、特定の論理構成、特定の製造技法及び材料、特定のコンパイラーの実施態様、コードによるアルゴリズムの特定の表現、特定の電源切断技法及びゲーティング技法/ロジック、並びにコンピューターシステムの他の特定の動作の詳細等のよく知られた構成要素又は方法は、本発明を不必要に分かりにくくしないように詳細には説明されていない。
【0009】
以下の実施形態は、プロセッサに関して説明されるが、他の実施形態は、他のタイプの集積回路及びロジックデバイスに適用可能である。本発明の実施形態の同様の技法及び教示内容は、より高いパイプラインスループット及び改善された性能から利益を受けることができる他のタイプの回路又は半導体デバイスに適用することができる。本発明の実施形態の教示内容は、データ操作を実行する任意のプロセッサ又は機械に適用可能である。しかしながら、本発明は、512ビット、256ビット、128ビット、64ビット、32ビット、又は16ビットのデータ演算を実行するプロセッサ又は機械に限定されるものではなく、データの操作又は管理が実行される任意のプロセッサ及び機械に適用することができる。加えて、以下の説明は例を提供し、添付図面は、例示の目的で様々な例を示している。しかしながら、これらの例は、本発明の実施形態の全ての可能な実施態様を網羅的に列挙したものを提供するものではなく、単に本発明の実施形態の例を提供することを意図したものにすぎないので、限定する意味に解釈されるべきではない。
【0010】
以下の例は、実行ユニット及びロジック回路に関する命令のハンドリング及び配信を説明しているが、本発明の他の実施形態は、機械によって実行されると、当該機械に、本発明の少なくとも1つの実施形態と一致した機能を実行させる機械可読有形媒体上に記憶されたデータ又は命令として達成することができる。1つの実施形態では、本発明の実施形態に関連付けられた機能が、機械実行可能命令に具現化される。これらの命令は、命令を用いてプログラムされた汎用プロセッサ又は専用プロセッサに本発明のステップを実行させるのに用いることができる。本発明の実施形態は、本発明の実施形態による1つ又は複数の演算を実行するようにコンピューター(又は他の電子デバイス)をプログラムするのに用いることができる命令を記憶している機械又はコンピューター可読媒体を含むことができるコンピュータープログラム製品又はソフトウェアとして提供することができる。代替的に、本発明の実施形態の演算は、その演算を実行するための固定機能ロジックを含む特定のハードウェア構成要素によって、又はプログラムされたコンピューター構成要素及び固定機能ハードウェア構成要素の任意の組み合わせによって実行することができる。
【0011】
本発明の実施形態を実行するようにロジックをプログラムするのに用いられる命令は、DRAM、キャッシュ、フラッシュメモリ、又は他の記憶装置等の、システムのメモリ内に記憶することができる。さらに、命令は、ネットワークを介して又は他のコンピューター可読媒体によって配布することもできる。したがって、機械可読媒体は、機械(例えば、コンピューター)によって可読な形態で情報を記憶又は伝送するための任意のメカニズムを含むことができ、フロッピー(登録商標)ディスケット、光ディスク、コンパクトディスク読み出し専用メモリ(CD−ROM)、及び光磁気ディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、磁気カード若しくは光カード、フラッシュメモリ、又は電気、光、音響、若しくは他の形態の伝播信号(例えば、搬送波、赤外信号、デジタル信号等)を介したインターネットによる情報の伝送に用いられる有形の機械可読記憶装置を含むがこれらに限定されるものではない。したがって、コンピューター可読媒体は、機械(例えば、コンピューター)によって可読な形態で電子的な命令又は情報を記憶又は伝送するのに好適な任意のタイプの有形の機械可読媒体を含む。
【0012】
本明細書において「プロセッサ」とは、算術演算、論理演算、又はI/O演算をエンコードする命令を実行することができるデバイスを指すものとする。1つの説明例では、プロセッサは、フォンノイマンアーキテクチャモデルに従うことができ、算術論理ユニット(ALU)、制御ユニット、及び複数のレジスタを備えることができる。更なる態様では、プロセッサは、1つ又は複数のプロセッサコアを備えることができ、したがって、通常は単一の命令パイプラインを処理することができるシングルコアプロセッサとすることもできるし、複数の命令パイプラインを同時に処理することができるマルチコアプロセッサとすることもできる。別の態様では、プロセッサは、単一の集積回路又は2つ以上の集積回路として実施することもできるし、マルチチップモジュールの構成要素(例えば、個々のマイクロプロセッサダイが単一の集積回路パッケージに含まれ、したがって、単一のソケットを共有する)とすることもできる。
【0013】
図1は、本開示の1つ又は複数の態様によるコンピューターシステムの1つの例のハイレベル構成図を示している。コンピューターシステム100は、本明細書で説明する実施形態による、ロジックを備える実行ユニットを用いて、データを処理するためのアルゴリズムを実行するプロセッサ102を備えることができる。システム100は、カリフォルニア州サンタクララのIntel Corporation社から入手可能なPENTIUM(登録商標)III(商標)マイクロプロセッサ、PENTIUM(登録商標)4(商標)マイクロプロセッサ、Xeon(商標)マイクロプロセッサ、Itaniumマイクロプロセッサ、XScale(商標)マイクロプロセッサ、及び/又はStrongARM(商標)マイクロプロセッサに基づく処理システムを表すが、他のシステム(他のマイクロプロセッサを有するPC、エンジニアリングワークステーション、セットトップボックス等を含む)も用いることができる。1つの実施形態では、サンプルシステム100は、ワシントン州レドモンドのMicrosoft社から入手可能なWINDOWS(登録商標)オペレーティングシステムの或るバージョンを実行することができるが、他のオペレーティングシステム(例えば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカルユーザーインターフェースも用いることができる。したがって、本発明の実施形態は、ハードウェア回路部及びソフトウェアのどの特定の組み合わせにも限定されるものではない。
【0014】
実施形態は、コンピューターシステムに限定されるものではない。本発明の代替の実施形態は、ハンドヘルドデバイス及び組み込みアプリケーション等の他のデバイスにおいて用いることができる。ハンドヘルドデバイスの幾つかの例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末(PDA)、及びハンドヘルドPCが含まれる。組み込みアプリケーションは、マイクロコントローラー、デジタル信号プロセッサ(DSP)、システムオンチップ、ネットワークコンピューター(NetPC)、セットトップボックス、ネットワークハブ、ワイドエリアネットワーク(WAN)スイッチ、又は少なくとも1つの実施形態による1つ若しくは複数の命令を実行することができる他の任意のシステムを含むことができる。
【0015】
この図示した実施形態では、プロセッサ102は、少なくとも1つの命令を実行するアルゴリズムを実施する1つ又は複数の実行ユニット108を備える。1つの実施形態は、シングルプロセッサのデスクトップ又はサーバーシステムに関して説明される場合があるが、代替の実施形態は、マルチプロセッサシステムに含まれる場合がある。システム100は、「ハブ」システムアーキテクチャの一例である。コンピューターシステム100は、データ信号を処理するプロセッサ102を備える。プロセッサ102には、1つの説明例として、複合命令セットコンピューター(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、命令セットの組み合わせを実施するプロセッサ、又は例えばデジタル信号プロセッサ等の他の任意のプロセッサデバイスが含まれる。プロセッサ102は、プロセッサ102とシステム100内の他の構成要素との間でデータ信号を伝送するプロセッサバス110に結合されている。システム100の要素(例えば、グラフィックスアクセラレーター112、メモリコントローラーハブ116、メモリ120、I/Oコントローラーハブ124、無線送受信機126、フラッシュBIOS128、ネットワークコントローラー134、オーディオコントローラー136、シリアル拡張ポート138、I/Oコントローラー140等)は、当該技術分野に精通している者によく知られたそれらの従来の機能を実行する。
【0016】
1つの実施形態では、プロセッサ102は、レベル1(L1)内部キャッシュ104を備える。アーキテクチャに応じて、プロセッサ102は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有することができる。他の実施形態は、特定の実施態様及びニーズに応じて内部キャッシュ及び外部キャッシュの双方の組み合わせも備える。レジスタファイル106は、整数レジスタ、浮動小数点レジスタ、ステータスレジスタ、ベクトルレジスタ、バンクレジスタ、シャドウレジスタ、チェックポイントレジスタ及び命令ポインターレジスタを含む様々なレジスタに異なるタイプのデータを記憶することができる。
【0017】
整数演算及び浮動小数点演算を実行するロジックを備える実行ユニット108も、プロセッサ102に存在する。プロセッサ102は、1つの実施形態では、実行されると、幾つかのマクロ命令用のアルゴリズムを実行するか又は複合的なシナリオをハンドリングするマイクロコードを記憶するマイクロコード(μコード)ROMを備える。ここでは、マイクロコードは、プロセッサ102の論理バグ/修正をハンドリングするように潜在的に更新可能である。1つの実施形態について、実行ユニット108は、パックド命令セット109をハンドリングするロジックを備える。パックド命令セット109を、それらの命令を実行する関連回路部とともに汎用プロセッサ102の命令セットに含めることによって、多くのマルチメディアアプリケーションによって用いられる演算は、汎用プロセッサ102内のパックドデータを用いて実行することができる。したがって、パックドデータに対して演算を実行するためにプロセッサのデータバスの全幅を用いることによって、多くのマルチメディアアプリケーションを高速化することができるとともに、より効率的に実行することができる。これによって、1以上の演算を実行するためにプロセッサのデータバスにわたってより小さいデータ単位、一度に1つのデータ要素で転送する必要がなくなる。
【0018】
実行ユニット108の代替の実施形態は、マイクロコントローラー、組み込みプロセッサ、グラフィックスデバイス、DSP、及び他のタイプのロジック回路において用いることができる。システム100はメモリ120を備える。メモリ120は、ダイナミックランダムアクセスメモリ(DRAM)デバイス、スタティックランダムアクセスメモリ(SRAM)デバイス、フラッシュメモリデバイス、又は他のメモリデバイスとすることができる。メモリ120は、プロセッサ102が実行することができる命令及び/又はデータ信号によって表されるデータを記憶する。
【0019】
システムロジックチップ116は、プロセッサバス110及びメモリ120に結合されている。図示した実施形態におけるシステムロジックチップ116は、メモリコントローラーハブ(MCH)である。プロセッサ102は、プロセッサバス110を介してMCH116に通信することができる。MCH116は、命令及びデータの記憶、並びにグラフィックスコマンド、グラフィックスデータ、及びグラフィックステクスチャの記憶のためのメモリ120への高帯域幅メモリパス118を提供する。MCH116は、システム100内のプロセッサ102、メモリ120、及び他の構成要素の間でデータ信号を誘導するとともに、プロセッサバス110、メモリ120、及びシステムI/O122の間でデータ信号を橋絡するためのものである。幾つかの実施形態では、システムロジックチップ116は、グラフィックスコントローラー112に結合するためのグラフィックスポートを提供することができる。MCH116は、メモリインターフェース118を通じてメモリ120に結合されている。グラフィックスカード112は、アクセラレーテッドグラフィックスポート(AGP)相互接続114を通じてMCH116に結合されている。
【0020】
システム100は、独自のハブインターフェースバス122を用いて、MCH116をI/Oコントローラーハブ(ICH)130に結合する。ICH130は、ローカルI/Oバスを介して幾つかのI/Oデバイスに直接接続を提供する。このローカルI/Oバスは、周辺装置をメモリ120、チップセット、及びプロセッサ102に接続するための高速I/Oバスである。幾つかの例は、オーディオコントローラー、ファームウェアハブ(フラッシュBIOS)128、無線送受信機126、データ記憶装置124、ユーザー入力インターフェース及びキーボードインターフェースを含むレガシーI/Oコントローラー、ユニバーサルシリアルバス(USB)等のシリアル拡張ポート、並びにネットワークコントローラー134である。データ記憶デバイス124は、ハードディスクドライブ、フロッピー(登録商標)ディスクドライブ、CD−ROMデバイス、フラッシュメモリデバイス、又は他のマスストレージデバイスを含むことができる。
【0021】
システムの別の実施形態では、1つの実施形態による命令は、システムオンチップとともに用いることができる。システムオンチップの1つの実施形態は、プロセッサ及びメモリから構成される。1つのそのようなシステム用のメモリはフラッシュメモリである。フラッシュメモリは、プロセッサ及び他のシステム構成要素と同じダイ上に配置することができる。加えて、メモリコントローラー又はグラフィックスコントローラー等の他のロジックブロックも、システムオンチップ上に配置することができる。
【0022】
図2は、本発明の1つの実施形態による命令を実行するロジック回路を備えるプロセッサ200のマイクロアーキテクチャのブロック図である。幾つかの実施形態では、1つの実施形態による命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズと、単精度及び倍精度の整数及び浮動小数点のデータタイプ等のデータタイプとを有するデータ要素に対して演算するように実施することができる。1つの実施形態では、インオーダーフロントエンド201は、実行される命令をフェッチし、それらの命令をプロセッサパイプラインにおいて後に用いられるように準備するプロセッサ200の部分である。このフロントエンド201は、幾つかのユニットを備えることができる。1つの実施形態では、命令プリフェッチャー226がメモリから命令をフェッチし、これらの命令を命令デコーダー228に供給し、次に、この命令デコーダーが、これらの命令をデコード又は解釈する。例えば、1つの実施形態では、デコーダーは、受信された命令を、機械が実行することができる「マイクロ命令」又は「マイクロ演算」(マイクロop又はμopとも呼ばれる)と呼ばれる1つ又は複数の演算にデコードする。他の実施形態では、デコーダーは、命令を演算コード及び対応するデータと、1つの実施形態による演算を実行するマイクロアーキテクチャによって用いられる制御フィールドとにパースする。1つの実施形態では、トレースキャッシュ230は、デコードされたμopを取り出し、それらを実行のためにμopキュー234内のプログラム順序付きシーケンス又はトレースにアセンブルする。トレースキャッシュ230が複合命令に遭遇すると、マイクロコードROM232は、演算を完了するのに必要とされるμopを提供する。
【0023】
命令の中には、単一のマイクロopに変換されるものもあれば、全演算を完了するのに数個のマイクロopを必要とするものもある。1つの実施形態では、命令を完了するのに5つ以上のマイクロopが必要とされる場合、デコーダー228は、マイクロコードROM232にアクセスして命令を行う。1つの実施形態について、命令は、命令デコーダー228における処理のために少数のマイクロopにデコードすることができる。別の実施形態では、複数のマイクロopが演算を達成するのに必要とされる場合、命令をマイクロコードROM232内に記憶することができる。トレースキャッシュ230は、エントリーポイントプログラマブルロジックアレイ(PLA)を参照して、1つの実施形態による1つ又は複数の命令を完了するマイクロコードシーケンスをマイクロコードROM232から読み出すための正しいマイクロ命令ポインターを決定する。マイクロコードROM232が、命令用のマイクロopのシーケンス化を終了した後、機械のフロントエンド201は、トレースキャッシュ230からのマイクロopのフェッチを再開する。
【0024】
アウトオブオーダー実行エンジン203は、命令が実行用に準備される箇所である。アウトオブオーダー実行ロジックは、命令が実行のためにパイプラインを進んでスケジューリングされるとき、命令の流れの円滑化及びリオーダを行って性能を最適化する複数のバッファーを有する。アロケーターロジックは、各μopが実行に必要とする機械バッファー及びリソースをアロケートする。レジスタエイリアシングロジックは、論理レジスタをレジスタファイル内のエントリー上にマッピングする。アロケーターは、命令スケジューラの前に、メモリ演算用に1つと非メモリ演算用に1つとの2つのμopキューのうちの一方に各μopのエントリーもアロケートする。上記命令スケジューラは、メモリスケジューラ、高速スケジューラ202、低速/一般浮動小数点スケジューラ204、及び単純浮動小数点スケジューラ206である。μopスケジューラ202、204、206は、μopが実行の準備がいつできるのかを、それらの従属する入力レジスタオペランドソースの準備ができていることと、μopがそれらの演算を完了する必要がある実行リソースが利用可能であることとに基づいて判断する。1つの実施形態の高速スケジューラ202は、メインクロックサイクルの各2分の1においてスケジューリングすることができる一方、他のスケジューラは、メインプロセッサクロックサイクルごとに1回のみスケジューリングすることができる。これらのスケジューラは、μopを実行のためにスケジューリングするディスパッチポートをアービトレートする。
【0025】
物理レジスタファイル208、210は、スケジューラ202、204、206と、実行ブロック211内の実行ユニット212、214、216、218、220、222、224との間に位置している。それぞれ整数演算用及び浮動小数点演算用の別々のレジスタファイル208、210が存在する。1つの実施形態の各レジスタファイル208、210は、レジスタファイル内にまだ書き込まれていない完了したばかりの結果を従属する新たなμopにバイパス又は転送することができるバイパスネットワークも備える。整数レジスタファイル208及び浮動小数点レジスタファイル210は、互いとのデータの通信も行うことができる。1つの実施形態について、整数レジスタファイル208は、下位32ビットのデータ用の1つのレジスタファイルと、上位32ビットのデータ用の第2のレジスタファイルとの2つの別々のレジスタファイルに分割される。1つの実施形態の浮動小数点レジスタファイル210は、128ビット幅エントリーを有する。なぜならば、浮動小数点命令は、通常、幅が64ビット〜128ビットのオペランドを有するからである。
【0026】
実行ブロック211は、命令が実際に実行される実行ユニット212、214、216、218、220、222、224を含む。このセクションは、マイクロ命令が実行に必要とする整数データオペランド値及び浮動小数点データオペランド値を記憶するレジスタファイル208、210を備える。1つの実施形態のプロセッサ200は、アドレス生成ユニット(AGU)212、AGU214、高速ALU216、高速ALU218、低速ALU220、浮動小数点ALU222、浮動小数点ムーブユニット224の複数の実行ユニットから構成される。1つの実施形態について、浮動小数点実行ブロック222、224は、浮動小数点演算、MMX演算、SIMD演算、SSE演算、又は他の演算を実行する。1つの実施形態の浮動小数点ALU222は、除算マイクロop、平方根マイクロop、及び剰余マイクロopを実行する64ビット対64ビットの浮動小数点除算器を備える。本発明の実施形態について、浮動小数点値を伴う命令は、浮動小数点ハードウェアを用いてハンドリングすることができる。1つの実施形態では、ALU演算は、高速ALU実行ユニット216、218に進む。1つの実施形態の高速ALU216、218は、クロックサイクルの2分の1の実効レイテンシーを有する高速演算を実行することができる。1つの実施形態について、ほとんどの複雑な整数演算は、低速ALU220に進む。なぜならば、低速ALU220は、乗算器、シフト、フラグロジック、及び分岐処理等の長いレイテンシータイプの演算用の整数実行ハードウェアを備えるからである。メモリロード/記憶演算は、AGU212、214によって実行される。1つの実施形態について、整数ALU216、218、220は、64ビットデータオペランドに対する整数演算の実行に関して説明される。代替の実施形態では、ALU216、218、220は、16ビット、32ビット、128ビット、256ビット等を含む様々なデータビットをサポートするように実装することができる。同様に、浮動小数点ユニット222、224は、様々な幅のビットを有するオペランドの範囲をサポートするように実装することができる。1つの実施形態について、浮動小数点ユニット222、224は、SIMD命令及びマルチメディア命令とともに128ビット幅のパックドデータオペランドに対して演算を行うことができる。
【0027】
1つの実施形態では、μopスケジューラ202、204、206は、親ロードが実行を終了する前に従属演算をディスパッチする。μopは、推測でスケジューリングされてプロセッサ200において実行されるので、プロセッサ200は、メモリミスをハンドリングするロジックも備える。データロードがデータキャッシュにおいて失敗した場合、一時的に正しくないデータをスケジューラに残した従属演算がパイプラインにおいてインフライトである可能性がある。再実行メカニズムは、正しくないデータを用いた命令を追跡して再度実行する。従属演算は、再実行されるべきであり、独立演算は、完了することが可能である。スケジューラ及びプロセッサの1つの実施形態の再実行メカニズムは、テキスト文字列比較演算用の命令シーケンスを捕捉するようにも設計されている。
【0028】
「レジスタ」という用語は、オペランドを識別する命令の一部として用いられるオンボードプロセッサ記憶ロケーションを指すことができる。換言すれば、レジスタは、(プログラマーからの視点から)プロセッサの外部から使用可能なものとすることができる。しかしながら、一実施形態のレジスタは、意味が特定のタイプの回路に限定されるべきではない。逆に、一実施形態のレジスタは、データを記憶及び提供することができるとともに、本明細書において説明する機能を実行することができる。本明細書において説明するレジスタは、専用の物理レジスタ、レジスタエイリアシングを用いた動的にアロケートされた物理レジスタ、専用の物理レジスタ及び動的にアロケートされた物理レジスタの組み合わせ等の任意の数の異なる技法を用いてプロセッサ内の回路部によって実装することができる。1つの実施形態では、整数レジスタは、32ビット整数データを記憶する。1つの実施形態のレジスタファイルは、パックドデータ用の8つのマルチメディアSIMDレジスタも含む。以下の議論のために、レジスタは、カリフォルニア州サンタクララのIntel Corporation社からのMMX(商標)技術を用いて可能にされるマイクロプロセッサ内の64ビット幅MMXレジスタ(場合によっては、「mm」レジスタとも呼ばれる)等の、パックドデータを保持するように設計されたデータレジスタであると理解される。整数及び浮動小数点の双方の形で利用可能なこれらのMMXレジスタは、SIMD命令及びSSE命令に付随するパックドデータ要素を用いて動作することができる。同様に、SSE2、SSE3、SSE4、又はこれ以降の技術(「SSEx」と総称される)に関係した128ビット幅XMMレジスタも、そのようなパックドデータオペランドを保持するのに用いることができる。1つの実施形態では、パックドデータ及び整数データを記憶する際に、レジスタは、2つのデータタイプを区別する必要はない。1つの実施形態では、整数及び浮動小数点は、同じレジスタファイル又は異なるレジスタファイルのいずれかに含まれる。さらに、1つの実施形態では、浮動小数点データ及び整数データは、異なるレジスタ又は同じレジスタに記憶することができる。
【0029】
図3A及び図3Bは本開示の1つ又は複数の態様によるプロセッサマイクロアーキテクチャの要素を概略的に示している。図3Aにおいて、プロセッサパイプライン400は、フェッチステージ402、レングスデコードステージ404、デコードステージ406、アロケーションステージ408、リネーミングステージ410、スケジューリング(ディスパッチ又は発行としても知られている)ステージ412、レジスタ読み出し/メモリ読み出しステージ414、実行ステージ416、ライトバック/メモリ書き込みステージ418、例外ハンドリングステージ422、及びコミットステージ424を備える。
【0030】
図3Bにおいて、矢印は、2つ以上のユニット間の結合を示し、矢印の方向は、それらのユニット間のデータフローの方向を示す。図3Bは、実行エンジンユニット450に結合されたフロントエンドユニット430を備えるプロセッサコア490を示し、これらのフロントエンドユニット430及び実行エンジンユニット450の双方は、メモリユニット470に結合されている。
【0031】
コア490は、縮小命令セットコンピューティング(RISC)コア、複合命令セットコンピューティング(CISC)コア、超長命令語(VLIW)コア、又はハイブリッド若しくは代替のコアタイプとすることができる。更に別の選択肢として、コア490は、例えば、ネットワークコア若しくは通信コア、圧縮エンジン、グラフィックスコア等の専用コアとすることができる。
【0032】
フロントエンドユニット430は、命令キャッシュユニット434に結合された分岐予測ユニット432を備える。この命令キャッシュユニット434は、命令変換ルックアサイドバッファー(TLB)436に結合されている。このTLB436は、命令フェッチユニット438に結合されている。この命令フェッチユニット438は、デコードユニット440に結合されている。デコードユニット、すなわちデコーダーは、命令をデコードし、出力として1つ又は複数のマイクロ演算、マイクロコードエントリーポイント、マイクロ命令、他の命令、又は他の制御信号を生成することができる。これらは、オリジナルの命令からデコードされるか、又はオリジナルの命令を反映しているか、又はオリジナルの命令から導出される。デコーダーは、様々な異なるメカニズムを用いて実施することができる。好適なメカニズムの例には、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ(PLA)、マイクロコード読み出し専用メモリ(ROM)等が含まれるが、これらに限定されるものではない。命令キャッシュユニット434は、メモリユニット470内のレベル2(L2)キャッシュユニット476に更に結合されている。デコードユニット440は、実行エンジンユニット450内のリネーム/アロケーターユニット452に結合されている。
【0033】
実行エンジンユニット450は、リタイアメントユニット454に結合されたリネーム/アロケーターユニット452と、1つ又は複数のスケジューラユニット456を備える。スケジューラユニット(複数の場合もある)456は、リザベーションステーション、中央命令ウィンドウ等を含む任意の数の異なるスケジューラを表す。スケジューラユニット(複数の場合もある)456は、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458に結合されている。物理レジスタファイル(複数の場合もある)ユニット458のそれぞれは、1つ又は複数の物理レジスタファイルを表し、各物理レジスタファイルはそれぞれ1以上の異なる種類のデータを記憶しており、例えば、スカラー整数、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス(例えば、実行される次の命令のアドレスである命令ポインター)等を記憶する。レジスタエイリアシング及びアウトオブオーダー実行を(例えば、リオーダバッファー(複数の場合もある)及びリタイアメントレジスタファイル(複数の場合もある)を用いるか、フューチャーファイル(複数の場合もある)、履歴バッファー(複数の場合もある)、及びリタイアメントレジスタファイル(複数の場合もある)を用いるか、レジスタマップ及びレジスタのプールを用いる等して)実施することができる様々な方法を示すために、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458は、リタイアメントユニット454によってオーバーラップされている。一般に、アーキテクチャレジスタは、プロセッサの外部又はプログラマーの視点から可視である。レジスタは、任意の既知の特定のタイプの回路に限定されるものではない。様々な異なるタイプのレジスタは、本明細書において説明するようなデータを記憶及び提供することができる限り、好適である。好適なレジスタの例には、専用の物理レジスタ、レジスタエイリアシングを用いて動的にアロケートされる物理レジスタ、専用の物理レジスタ及び動的にアロケートされる物理レジスタの組み合わせ等が含まれるが、これらに限定されるものではない。リタイアメントユニット454及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458は、実行クラスター(複数の場合もある)460に結合されている。
実行クラスター(複数の場合もある)460は、1つ又は複数の実行ユニット462及び1つ又は複数のメモリアクセスユニット464を備える。実行ユニット462は、様々なタイプのデータ(例えば、スカラー浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点)に対して様々な演算(例えば、シフト、加算、減算、乗算)を実行することができる。実施形態の中には、特定の機能又は機能のセットに専用の複数の実行ユニットを備えることができるものもあれば、全ての機能を全て実行する1つのみの実行ユニット又は複数の実行ユニットを備えることができるものもある。スケジューラユニット(複数の場合もある)456、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458、及び実行クラスター(複数の場合もある)460は、場合によっては複数のものとして示される。なぜならば、或る特定の実施形態は、或る特定のタイプのデータ/演算用に別々のパイプライン(例えば、スカラー整数パイプライン、スカラー浮動小数点/パックド整数/パックド浮動小数点/ベクトル整数/ベクトル浮動小数点パイプライン、及び/又は、それぞれが独自のスケジューラユニット、物理レジスタファイル(複数の場合もある)ユニット及び/又は実行クラスターを有するメモリアクセスパイプライン、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスターがメモリアクセスユニット(複数の場合もある)464を有する或る特定の実施形態が実施される)を作製するからである。別々のパイプラインが用いられる場合、これらのパイプラインのうちの1つ又は複数は、アウトオブオーダー発行/実行とすることができ、残りはインオーダーとすることができることも理解されるべきである。
【0034】
一組のメモリアクセスユニット464は、メモリユニット470に結合されている。このメモリユニット470は、レベル2(L2)キャッシュユニット476に結合されたデータキャッシュユニット474に結合されたデータTLBユニット472を備える。1つの例示の実施形態では、メモリアクセスユニット464は、ロードユニット、記憶ドレスユニット、及び記憶データユニットを備えることができ、これらのそれぞれは、メモリユニット470内のデータTLBユニット472に結合されている。L2キャッシュユニット476は、1つ又は複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
【0035】
例として、例示のレジスタリネーミングアウトオブオーダー発行/実行コアアーキテクチャは、次のようにパイプライン400を実施することができる。命令フェッチ438が、フェッチステージ402及びレングスデコードステージ404を実行し、デコードユニット440がデコードステージ406を実行し、リネーム/アロケーターユニット452がアロケーションステージ408及びリネーミングステージ410を実行し、スケジューラユニット(複数の場合もある)456がスケジュールステージ412を実行し、物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458及びメモリユニット470がレジスタ読み出し/メモリ読み出しステージ414を実行し、実行クラスター460が実行ステージ416を実行し、メモリユニット470及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458がライトバック/メモリ書き込みステージ418を実行し、様々なユニットが例外ハンドリングステージ422に関与することができ、リタイアメントユニット454及び物理レジスタファイル(複数の場合もある)ユニット(複数の場合もある)458がコミットステージ424を実行する。
【0036】
コア490は、1つ又は複数の命令セット(例えば、x86命令セット(より新しいバージョンとともに追加された幾つかの拡張を有する)、カリフォルニア州サニーベールのMIPS Technologies社のMIPS命令セット、カリフォルニア州サニーベールのARM Holdings社のARM命令セット(NEON等のオプションの追加拡張を有する)をサポートすることができる。
【0037】
或る特定の実施態様では(In certain implementations)、コアは、マルチスレッディング(並列の二組以上の演算又はスレッドを実行する)をサポートすることができ、タイムスライスされたマルチスレッディング、同時のマルチスレッディング(単一の物理コアが、当該物理コアが同時にマルチスレッディングしているスレッドのそれぞれについて論理コアを提供する)、又はそれらの組み合わせ(例えば、Intel(登録商標)ハイパースレッディング技術におけるようなタイムスライスされたフェッチ及びデコード並びにその後の同時のマルチスレッディング)を含む様々な方法でそうすることができる。
【0038】
レジスタエイリアシングは、アウトオブオーダー実行に関して説明されるが、レジスタエイリアシングは、インオーダーアーキテクチャにおいて用いることができることが理解されるべきである。プロセッサの図示した実施形態は、別々の命令キャッシュユニット434/データキャッシュユニット474及び共有されたL2キャッシュユニット476も備えるが、代替の実施形態は、例えば、レベル1(L1)内部キャッシュ、又は複数レベルの内部キャッシュ等の、命令及びデータの双方の単一の内部キャッシュを有することができる。幾つかの実施形態では、システムは、コア及び/又はプロセッサの外部にある内部キャッシュ及び外部キャッシュの組み合わせを備えることができる。代替的に、キャッシュの全てを、コア及び/又はプロセッサの外部にすることができる。
【0039】
図4は、本開示の1つ又は複数の態様による一例示のプロセッサ102及びコンピューターシステム100の他の構成要素のブロック図を示している。図4を参照すると、プロセッサコア490は、当該コア490による実行のための命令をフェッチするフェッチユニット438を備えることができる。命令は、メモリ115等の1つ又は複数の記憶デバイス、及び/又はデータ記憶デバイス124等の他のメモリデバイスからフェッチすることができる。プロセッサコア490は、フェッチされた命令を1つ又は複数のマイクロ演算(μop)にデコードするデコードユニット440を更に備えることができる。プロセッサコア490は、命令を発行する準備ができるまで、例えば、デコードされた命令のオペランド値が利用可能になるまで、デコードユニット440から受信されたデコードされた命令を記憶するスケジュールユニット446を更に備えることができる。スケジュールユニット446は、デコードされた命令をスケジューリングし、及び/又は、実行ユニット450に発行することができる。
【0040】
実行ユニット450は、1つ又は複数の算術論理ユニット(ALU)、1つ又は複数の整数実行ユニット、1つ又は複数の浮動小数点実行ユニット、及び/又は他の実行ユニットを備えることができる。或る特定の実施態様では、実行ユニット450は、命令をアウトオブオーダー(OOO)で実行することができる。プロセッサコア490は、実行された命令がコミットされた後、それらの命令をリタイアさせるリタイアメントユニット454を更に備えることができる。
【0041】
プロセッサコア490は、RAT421、PRF423、MIT425、及び本明細書において以下でより詳細に説明するようなデータ操作機能を実施するロジック150を更に備えることができる。図4において、ロジック150がコア490の内部にあるように示されていても、ロジック150は、コンピューターシステム100内の他の場所に設けることができる。さらに、ロジック150及び/又はその構成要素のうちの幾つかは、複数のプロセッサコア間で共有することができる。
【0042】
本明細書において上述したように、移動命令は、RATにおいてソースレジスタポインターをデスティネーションレジスタポインターにコピーすることによって除去することができる。図5は、レジスタエイリアシングによって、すなわち、PRFにおけるエントリーXへのポインターである論理レジスタAX用のRATエントリーの内容が、論理レジスタDX用のRATエントリーにコピーされることによって、MOV DX,AX命令を実行することを概略的に示している。図5によって示されるように、或る特定の実施態様では、PRFは、物理レジスタ値のアレイによって提供することができ、RATは、PRFへのポインターのアレイによって提供することができる。
【0043】
命令が実行ユニットに送信される前に、命令の結果を受信するためのPRFエントリーをアロケートすることができる。複数のRATエントリーは、同じPRFエントリーを指し示す場合があるので、PRFエントリーは、複数のRATエントリーが1つ又は複数の命令によって上書きされると、後続の命令による使用に利用可能なものとしてマーク付けすることができる。上記1つ又は複数の命令は、上書きの結果、リタイアされる。PRFエントリーを新たな命令による使用ためにいつ解放することができるのかを判断するために、PRFエントリーへの参照を追跡するのにMITを用いることができる。
【0044】
MITは、追跡されているレジスタを表す複数の行を有する2次元アレイ(例えば、ビット行列)によって提供することができる。各MITの列は、移動除去セットを表すことができ、この移動除去セットでは、セットされたビットは、対応する論理レジスタが当該移動除去セットに関与していることを示す。
【0045】
移動演算が除去されるとき、図6Aによって概略的に示すように、ソース論理レジスタ及びデスティネーション論理レジスタに対応するビットがセットされ、これらの論理レジスタが移動除去セットの一部であることが示される。移動命令のソースが移動除去セットに既に関与している論理レジスタである場合、図6Bによって概略的に示すように、デスティネーション論理レジスタは、そのセットに追加される。論理レジスタが別の命令によって上書きされるとき、図6Cによって概略的に示すように、MITにおいてそのレジスタ用にセットされたビットをクリアすることができ、したがって、この論理レジスタは、移動除去セットから分離される。いずれの移動除去セットの一部でもないか、又は移動除去セットの唯一のメンバーである対応する物理レジスタは、その物理レジスタへの全ての参照が1つ又は複数の命令によって上書きされ、それらの命令がリタイアすると、新たな命令によって再利用することができる。
【0046】
幾つかの実施態様では、移動除去セットの追跡は、μopアロケーションごとに実行され、μopリタイアメントに依存しない。すなわち、移動μopのアロケーションの際に、移動除去セットが作成される。そして、さらに、論理レジスタを上書きするμopのアロケーションの際に、論理レジスタは、既存の移動除去セットから削除される。移動除去されたセット内の最後の論理レジスタを上書きするμopがアロケートされるとき、PRFエントリーは、その上書きしたμopがその後リタイアされたときに解放されるようにマーク付けされる。PRFエントリーを解放することは、最後に上書きしたμopのμopリタイアメントに依存する。PRFエントリーの解放を実行するロジックは、MITの外部で実行される。しかしながら、MITによって実施されるような移動除去セットは、最後に上書きしたμopがアロケートされ、別の移動除去セットを追跡するのに再利用することができるようになった後、直ちにリクレームすることができる。
【0047】
N個の論理レジスタにおける移動除去の全ての可能な組み合わせを追跡するために、移動除去セットがMITの列によって提供されるので、N/2個のMITの列が必要とされる場合がある。MITが有する移動除去セットがN/2個よりも少なく、かつ、それらの移動除去セットが全て用いられている場合、次の移動命令は、新たなPRFエントリーを消費する通常の命令として実行ユニットに送信することができる。いずれの場合も、MITは、命令がPRFエントリーを消費する必要があるか否かをRATにシグナリングする。
【0048】
スーパースカラーMワイド発行プロセッサ(superscalar M-wide issue processor)では、1サイクル当たり最大でM個の命令は、データコピー命令とすることができ、MITは、発行命令のサブセットを除去するのに十分な空きのセットのみを有することが可能である。実行効率を更に改善するために、プロセッサは、移動命令が既存の移動除去セットに関係するものか又は新たな移動除去セットに関係するものかを判断する代わりに、各移動命令が新たな移動除去セットを必要とするものと仮定する。したがって、プロセッサは、利用可能な移動除去セットの数を移動命令の数と比較し、移動除去される最初のK個の移動命令を選択することができる一方、他の移動命令を実行ユニットに送信することができる。
【0049】
図7A図7Cは、本開示の1つ又は複数の態様によるMITアロケーション/予約ロジックを概略的に示している。図7Aは、MITの初期状態(サイクルN)を示し、列1〜3は、アロケーション用に空いている。その後、列1及び2は、2つの移動演算(MOV AX,CX及びMOV R9,R8)を実行するために予約される。図7Bによって概略的に示されるように、(N+1)サイクルにおいて、上述した列1及び2のアロケーションを反映するために、MITにおいて、リザーブビットがセットされ、フリービットがクリアされる。その後、2つの追加の移動除去の機会が、MITに提示され、したがって、MITの列3が、第3の移動演算(MOV BX,DX)を実行するために予約され、利用可能な移動除去セットがMITにないので、第4の移動演算が実行ユニットに送信される(MOV AX、R8)。図7Cによって概略的に示されるように、(N+2)サイクルにおいて、サイクルNからの予約がキャンセルされ、したがって、それぞれのリザーブビットはクリアされる。MITは、サイクルNの命令からの結果で更新され、列0にマージし、列2に新たなセットを作成する。エンプティビットが、MIT更新を考慮して再計算され、影響を受けたMITの列のエンプティビットからリザーブビットを差し引くことによって、フリービットが更新される。したがって、新たな移動除去情報を用いてMITセットを更新するのに2サイクルのレイテンシーが存在し得る。
【0050】
1つのレジスタマッピングのみが移動除去セットに残っており、そのため、対応するPRFエントリーには、1つの参照しか残っていないとき、MITの列によって提供される移動除去セットは、別の移動命令へのアロケーションにまだ利用可能でない場合がある。そのようなセットは、1つのレジスタマッピングしか有しないので、「オーファン」セットと呼ばれる場合がある。オーファンセットをクリアする或る動作がなければ、最後の論理レジスタが上書きされるまで、したがって、可能な移動除去の数が削減されるまで、オーファンセットは利用不能なままである。
【0051】
幾つかの実施態様では、プロセッサは、MITアロケーションサーチの一部としてオーファン移動除去セットを検出してクリアすることができる。移動除去セットがオーファンセットであると判断された場合、プロセッサは、そのセットをアロケーション用に解放する次のサイクルの間にクリア信号をアサートすることができる。したがって、本明細書において以下でより詳細に説明するように、オーファンセットは、初期アロケーションの書き込み用の2サイクルとオーファンセットのクリア用の更に1サイクルとを含む3サイクル以上で利用可能にすることができる。
【0052】
図8A図8Cは、本開示の1つ又は複数の態様によるMITオーファンリクラメーションロジックの機能の1つの例を概略的に示している。図8Aは、移動命令及び新たにアロケートされる移動除去セットを部分的に上書きする後続の命令を実行する前のMITの列の初期状態(サイクルNと呼ばれる)を概略的に表している。図8Bは、サイクルN+2において更新された後のMITの列の状態を概略的に表している。この段階におけるMITの列は、オーファンセットであり、そのようなものとして検出することができる。図8Cは、オーファンリクラメーション後のMITの列の状態を概略的に表している。しかしながら、サイクルN+1において移動除去された命令が、そのソースとしてAXレジスタを用いていた場合、移動除去セットはサイクルN+1からの命令の結果を用いて更新されることになるので、サイクルN+3においてオーファンリクラメーションは行われないことに留意すべきである。
【0053】
或る特定の実施態様では、ロジック150は、2つ以上のデータ操作演算の従属関係を事前に計算し、次いで、それらの2つ以上の演算の結果を反映するように単一のMIT更新を実行することができ、したがって、移動除去演算のタイミング及び電力消費の双方の側面を改善することができる。MIT更新は、新たな移動除去セットを作成すること、移動除去セットを変更すること、又はオーファン移動除去セットをリクレームすることを含むことができる。
【0054】
シリアル化された更新ロジックとは異なり、ロジック150は、2つ以上のデータ操作演算の結果を反映するように1回MITを更新する。中間のMIT状態は、シリアル化された更新シーケンスにおいて対応するMIT更新によって反映されることになるが、ロジック150によっては実行されない。例えば、レジスタが、移動除去セットに追加され、次の演算によって上書きされる場合、MITは、このレジスタを含んだ移動除去セットの中間状態を反映しない。
【0055】
2つ以上のデータ操作演算の従属関係を事前に計算するために、ロジック150は、幾つかのタイプの移動演算を検出することができる。これらの移動演算には、図9A図9Cによって概略的に示されるように、同じ処理ラインにおける後続の移動演算のソースとして用いられるデスティネーションレジスタを有する移動演算、図10A図10Cによって概略的に示されるように、同じレジスタをソースとして用いる同じラインにおける2つの移動演算、及び図11A図11Cによって概略的に示されるように、デスティネーション/ソースレジスタへの介在する書き込みを伴う後続の移動演算のソースと一致するデスティネーションレジスタを有する移動演算が含まれるが、これらに限定されるものではない。
【0056】
上記組み合わせを検出するために、ロジック150は、幾つかの命令のソースとデスティネーションとを比較し、移動命令が移動除去のために選択されたか否かを判断し、移動除去演算のソースが既存の移動除去セットに存在するか否かを判断し、新たな又は存在する移動除去セットに関与するいずれかの論理レジスタがその後上書きされるか否かを判断することができる。決定されたMITの列のアロケーションデータを考慮して、ロジック150は、影響を受けたMITの列に書き込まれる新たなデータを生成し、新たな又は存在するデータを各命令に関連付けられた更新データとして選択し、上記ソースとデスティネーションとの比較を利用して1つの命令から別の命令にデータをバイパスし、MITを更新することができる。
【0057】
本明細書において上述したように、移動除去ロジックは、ハードウェア若しくはソフトウェア又はそれらの組み合わせで実施することができる。ロジック150を実施する一例示の回路800が、図12に概略的に示されている。
【0058】
回路800は、特定のMITの列(移動除去セット)内の特定の論理レジスタに対応するビット単位(Per Bit)ロジック802を備えることができる。回路800は、特定のMITの列(移動除去セット)に対応する列単位(Per Column)ロジック804を更に備えることができる。
【0059】
回路800は、幾つかの入力信号を受信することができる。これらの入力信号には、行列ビットごとのMITの前の状態を反映するPreviousData(事前データ)信号805と、行ごとにその行と一致する論理ソースを有する処理ラインにおける各移動除去命令を識別するSourceMatch(ソース一致)信号810と、1つのMITの行から別のMITの行に(移動除去命令論理ソース行から移動除去命令論理デスティネーション行に)データをコピーするか否かを識別し、それによって、移動除去命令からのデスティネーション論理レジスタを前に存在した移動除去セットに追加する(この論理レジスタを他の全ての移動除去セットから分離することも行う)処理ライン命令ごとのSelectorCopy(セレクターコピー)信号815と、MITの行に書き込まれる処理ライン命令ごとの新たなデータを含むAllocationData(アロケーションデータ)信号820とが含まれる。このデータは、全ての移動除去セットからのMITの行によって識別される論理レジスタをクリアするためにゼロとすることもできるし、論理レジスタを移動除去セットに割り当てるデータを含むこともできる。回路800は、上記信号を処理して、新たなMITデータ出力信号830を生成することができる。
【0060】
CopyData信号832は、移動命令のソースである論理レジスタを表すMIT内の1つの行からデータを選択するSourceMatch信号を用いて、存在するMITデータをクオリファイする(qualify)ことによって生成することができる。
【0061】
SelectorCopy信号815によって制御されるコピー/セットマルチプレクサー840は、CopyData信号又はAllocData信号を選択することができる。SelectorCopyは、移動命令のソースを表すMITの行からのデータが移動命令のデスティネーションを表す別の行に書き込まれるべきであり、したがって、デスティネーションレジスタを存在する移動除去セットに追加すべきであることを示す。SelectorCopy信号は、ロジック150が、移動除去命令のソースが移動除去されたセットに既に関与しており、その論理レジスタが処理ラインにおける前の命令によって上書きされていないと判断したときにセットされる。移動除去されたセットへの関与は、SourceMatch信号810を用いてMITからの行をクオリファイし、この行内のいずれかのビットがセットされているか否かを調べることによって判断される。
【0062】
インラインバイパスマルチプレクサー835の制御は、実行ライン内部における従属関係を割り出すことができ、例えば、第1の移動命令のデスティネーションを第2の移動命令のソースと比較することができる。従属関係が検出された場合、前の命令用のデータを835において後の命令にバイパスすることができる。インラインバイパスマルチプレクサー835の出力信号は、更新データマルチプレクサー845の入力に供給することができる。更新データマルチプレクサー845のもう1つの入力は、MITの列内にセットされたビットが1つしかないか否かを示すClearOrphan信号850によってクオリファイされたPreviousData信号805によって提供することができる。セレクター更新データ信号825によって制御される更新データマルチプレクサー845は、新たなMITデータ信号850を出力することができる。セレクター更新データ信号825は、論理レジスタの最後の参照からのバイパスされたデータが新たなMITデータ信号850に出力されるように優先順位がエンコードされている。
【0063】
例えば、回路800によって実施されるようなロジック150の機能を、図9A図11Cの例を参照して更に示す。図9A図9Cは、一例示の連鎖移動AX→BX→CXによって提供される、同じ処理ラインにおける後続の移動演算のソースとして用いられているデスティネーションレジスタを有する移動演算を概略的に示している。図9Aは、MITの初期状態を示している。図9Bは、MITアロケーションを示している。列0及び1は、それぞれμop0(MOV BX、AX)及びμop1(MOV CX、BX)用にアロケートされる。いずれの演算のソースも、存在する移動除去セットのメンバーでないので、双方のμop用のCopyData信号832は0であり、SelectorCopy信号815は、双方のμop用のAllocData820をコピー/セットマルチプレクサー840を通じてインラインバイパスマルチプレクサー835に送信する。図9Cによって示されるように、ロジック150は、第1の移動演算(MOV BX,AX)のデスティネーションが、第2の移動演算(MOV CX,BX)のソースと一致することを検出する。インラインバイパスマルチプレクサー835は、第2の移動演算に対応するデータ(AllocData[Uop1])ではなく、第1の移動演算に対応するコピー/アロケーションデータ(AllocData[Uop0])を選択して、更新データマルチプレクサー845への入力データとして供給する。したがって、UpdateData[Uop0]及びUpdateData[Uop1]は同一である。更新データマルチプレクサー845の出力は、優先順位がエンコードされているので、論理レジスタを参照する最後の演算に対応するバイパスされたデータが、新たなMITデータになる。更新データマルチプレクサー845は、第1の移動演算に対応するデータ(UpdateData[Uop0])をAX用の新たなデータとして選択し、第2の移動演算に対応するバイパスされたデータ(UpdateData[Uop1])をBX及びCXの双方用の新たなデータとして選択する。なぜならば、第2の移動演算は、これらのレジスタを参照する最後の演算であるからである。しかしながら、バイパスメカニズムのために、同じデータが3つの全てのエントリーに書き込まれる。
【0064】
図10A図10Cは、MOV BX,DX;MOV AX,DXの例によって提供される、同じレジスタをソースとして用いる1つのラインにおける2つの移動演算を概略的に示している。図10Aは、MITの初期状態を示している。図10Bは、MITのアロケーションを示し、列1及び2は、それぞれμop0(MOV BX,DX)及びμop1(MOV AX,DX)用にアロケートされている。いずれの演算のソースも存在する移動除去セットのメンバーでないので、CopyData信号832は、双方のμopについて0であり、SelectorCopy信号815は、双方のμop用のAllocData820をコピー/セットマルチプレクサー840を通じてインラインバイパスマルチプレクサー835に送信する。図10Cによって示されるように、図9A図9Cの例と同様に、ロジック150は、第1の移動演算用のコピーデータ又はアロケーションデータを選択するか否かを判断する。第2の移動演算について、ロジック150は、この移動演算が前の移動除去された演算とソースを共有していると判断し、したがって、インラインバイパスマルチプレクサー835は、第2の移動演算に対応するデータ(AllocData[Uop1])ではなく、第1の移動演算に対応するコピー/アロケーションデータ(AllocData[Uop0])を選択して、更新データマルチプレクサー845に入力データとして供給する。したがって、UpdateData[μop0]及びUpdateData[μop1]は同一である。更新データマルチプレクサー845は、第1の移動演算に対応するデータをBX用の新たなデータ(UpdateData[μop0])として選択し、第2の移動演算に対応するバイパスされたデータ(UpdateData[μop1])をDX及びAXの双方用の新たなデータとして選択する。なぜならば、第2の移動演算は、これらのレジスタを参照する最後の演算であるからである。しかしながら、バイパスメカニズムのために、同じデータが3つの全てのエントリーに書き込まれる。
【0065】
図11A図11Cは、移動連鎖が、移動除去されたレジスタへの介在する書き込みによって切断されたラインにおける2つの移動命令の一例(MOV BX,AX;BXを上書き;MOV DX,BX)を概略的に示している。図11Aは、MITの初期状態を示している。図11Bは、MITのアロケーションを示し、MITの列1及び2は、それぞれμop0(MOV BX,AX)及びμop2(MOV DX,BX)用にアロケートされている。図11Cによって示されるように、図9A図9C及び図10A図10Cの例と同様に、ロジック150は、移動演算のソースが、既に、存在する移動除去セットのメンバーであるか否かを判断し、対応するデータをコピー/セットマルチプレクサー840に供給する。この場合、コピー/セットマルチプレクサー840は、μop0用のCopyData[μop0]、μop1用のAllocData[μop1]、及びμop2用のAllocData[μop2]を通過させる。μop1用のAllocDataは、移動除去セットを作成せず、逆に、いずれかのセットからレジスタを削除するので、全てゼロであることに留意されたい。ロジック150は、第2の移動演算のソースが第1の移動演算のデスティネーションと一致すると判断し、介在する演算がそのレジスタを上書きすると判断する。したがって、バイパスメカニズムはキャンセルされ、3つの移動演算の結果は、別々に処理され、AXは、第1の移動演算のデータ(CopyData[Uop0]信号)を受け取り、BX及びDXは、第2の移動演算のデータ(AllocData[Uop2])を受け取る。更新データマルチプレクサー845の入力は、優先順位がエンコードされているので、第2の移動演算に対応するデータがBX用の新たなデータになる。したがって、BXをMITの列0に配置し、BXを列0から削除し、次いで、BXを列2に配置するBXの中間の更新は、バイパスロジック演算に起因して行われていない。
【0066】
或る特定の実施態様では、プロセッサは、整数汎用論理レジスタ(INT)領域及びストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタ領域内の移動命令を除去することができる。SSE領域は、SSEのスーパーセット領域であるアドバンストベクトルエクステンション(AVX)用の論理レジスタ領域も含むことができる。実施態様の効率を更に改善するために、プロセッサは、移動演算に関与するレジスタのタイプにかかわらず、移動演算ごとにSSE及びINT MITの双方における移動除去セットを予約することができる。実際に実行される移動除去の数が削減される可能性があるにもかかわらず、SSE移動演算は、通常ならばINT命令によって用いられていた可能性のあるINT移動除去セットを予約することができるので、上述の統一した予約メカニズムは、プロセッサによる命令実行の全体的な効率を更に改善することができる。
【0067】
このように、本明細書において説明されるバイパスMIT設計は、並列計算に起因したMIT更新の遅延の低減と、オーファン列のアクティブなクリアの実行と、統一された予約メカニズムの実施とによってプロセッサ性能を改善する。
【0068】
図13は、本開示の1つ又は複数の態様によるバイパスMITを用いた移動除去のための一例示の方法の流れ図を示している。この方法900は、ハードウェア(例えば、回路部、専用ロジック、及び/又はプログラマブルロジック)、ソフトウェア(例えば、ハードウェアシミュレーションを実行するコンピューターシステム上で実行可能な命令)、又はそれらの組み合わせを含むことができるコンピューターシステムが実行することができる。方法900及び/又はその機能、ルーチン、サブルーチン、若しくは演算のそれぞれは、この方法を実行するコンピューターシステムの1つ又は複数の物理プロセッサが実行することができる。方法900の2つ以上の機能、ルーチン、サブルーチン、又は演算は、並列に実行することもできるし、上述した順序とは異なり得る順序で実行することもできる。図13によって示すような1つの例では、方法900は、図1のコンピューターシステム100が実行することができる。
【0069】
図13を参照すると、ブロック910において、プロセッサは、複数のレジスタ値をPRFに記憶することができる。
【0070】
ブロック920において、プロセッサは、複数のポインターをRATに記憶することができる。RATの各ポインターは、PRFの要素を参照する。
【0071】
ブロック930において、プロセッサは、複数の移動除去セットをMITに記憶することができる。各移動除去セットは、複数の論理レジスタを表す複数のビットを含むことができる。
【0072】
ブロック940において、プロセッサは、2つ以上のデータ操作演算の従属関係を事前に計算することができる。
【0073】
ブロック950において、プロセッサは、RAT及び/又はMITを更新することによって2つ以上のデータ操作演算の結果を反映することができる。本明細書において上述したように、或る特定の実施態様では、プロセッサは、2つ以上のデータ操作演算の従属関係を事前に計算することができ、次いで、2つ以上の演算の結果を反映するように単一のMIT更新を実行することができ、したがって、移動除去演算のタイミング及び電力消費の双方の側面を改善することができる。ブロック950によって参照される演算が完了すると、この方法は終了することができる。
【0074】
図14は、本開示の1つ又は複数の態様による一例示のコンピューターシステムのブロック図を示している。図14に示すように、マルチプロセッサシステム700は、ポイントツーポイント相互接続システムであり、ポイントツーポイント相互接続750を介して結合された第1のプロセッサ770及び第2のプロセッサ780を備える。プロセッサ770及び780のそれぞれは、本明細書において上記でより詳細に説明したように、トランザクションメモリアクセス演算及び/又は非トランザクションメモリアクセス演算を実行することができるプロセッサ102の或るバージョンとすることができる。
【0075】
2つのプロセッサ770、780のみを用いて示されているが、本発明の範囲はそのように限定されるものでないことが理解される。他の実施形態では、1つ又は複数の追加のプロセッサが所与のプロセッサに存在する場合がある。
【0076】
統合メモリコントローラーユニット772及び782をそれぞれ備えるプロセッサ770及び780が示されている。プロセッサ770は、バスコントローラーユニットの一部として、ポイントツーポイント(P−P)インターフェース776及び778も備える。同様に、第2のプロセッサ780は、P−Pインターフェース786及び788を備える。プロセッサ770、780は、ポイントツーポイント(P−P)インターフェース回路778、788を用いてP−Pインターフェース750を介して情報を交換することができる。図14に示すように、IMC772及び782は、プロセッサをそれぞれのメモリ、すなわちメモリ732及びメモリ734に結合する。これらのメモリは、それぞれのプロセッサにローカルにアタッチされたメインメモリの一部分とすることができる。
【0077】
プロセッサ770、780はそれぞれ、ポイントツーポイントインターフェース回路776、794、786、798を用いて個々のP−Pインターフェース752、754を介してチップセット790と情報を交換することができる。チップセット790は、高性能グラフィックスインターフェース739を介して高性能グラフィックス回路738とも情報を交換することができる。
【0078】
共有キャッシュ(図示せず)を、いずれかのプロセッサ内に備えることもできるし、双方のプロセッサの外部に備えて、さらに、P−P相互接続を介して両プロセッサと接続することもでき、その結果、プロセッサが低電力モードになった場合に、いずれかのプロセッサ又は双方のプロセッサのローカルキャッシュ情報を共有キャッシュに記憶することができる。
【0079】
チップセット790は、インターフェース796を介して第1のバス716に結合することができる。1つの実施形態では、第1のバス716は、ペリフェラルコンポーネントインターコネクト(PCI)バス、又はPCIエクスプレスバス若しくは別の第3世代I/O相互接続バス等のバスとすることができるが、本発明の範囲は、そのように限定されるものではない。
【0080】
図14に示すように、様々なI/Oデバイス714を、第1のバス716を第2のバス720に結合するバスブリッジ718とともに第1のバス716に結合することができる。1つの実施形態では、第2のバス720は、ローピンカウント(LPC)バスとすることができる。様々なデバイスを第2のバス720に結合することができる。これらの様々なデバイスには、例えば、キーボード及び/又はマウス722、通信デバイス727、並びに1つの実施形態では命令/コード及びデータ730を含むことができるディスクドライブ若しくは他のマスストレージデバイス等の記憶ユニット728が含まれる。さらに、オーディオI/O724を第2のバス720に結合することができる。他のアーキテクチャが可能であることに留意されたい。例えば、図14のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスアーキテクチャ又は他のそのようなアーキテクチャを実装することができる。
【0081】
以下の例は、本開示の1つ又は複数の態様による様々な実施態様を示している。
【0082】
例1は、複数の物理レジスタ値を記憶する第1のデータ構造体と、複数のポインターを記憶する第2のデータ構造体であって、各ポインターは、第1のデータ構造体の要素を参照する、第2のデータ構造体と、複数の移動除去セットを含む第3のデータ構造体であって、各移動除去セットは、複数の論理レジスタを表す複数のビットを含む、第3のデータ構造体と、第2のデータ構造体の要素に第1のデータ構造体の要素を参照させることによってデータ操作演算を実行するロジックであって、第3のデータ構造体の一回の更新を実行することによって2つ以上のデータ操作演算の結果を反映するように更に構成されている、ロジックとを備える処理システムである。
【0083】
例2では、例1の処理システムの第3のデータ構造体の更新は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも1つを含むことができる。
【0084】
例3では、例1の処理システムのロジックは、2つ以上のデータ操作演算の従属関係を事前に計算することに基づいて第3のデータ構造体を更新することができる。
【0085】
例4では、例1の処理システムのロジックは更に、整数汎用論理レジスタ領域における第1の移動除去セット又はストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタ領域における第2の移動除去セットのうちの少なくとも一方を予約することができる。
【0086】
例5では、例1の処理システムのロジックは、第3のデータ構造体の前の状態を反映する第1の信号、データ操作演算用のソース論理レジスタを識別する第2の信号、データ操作演算用のデスティネーション論理レジスタを識別する第3の信号、存在する移動除去セットが少なくとも1つの参照子を含むか否かを識別する第4の信号、第3のデータ構造体内の新たな移動除去セットを識別する第5の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第6の信号のうちの少なくとも1つを処理することによって、第3のデータ構造体を更新する信号を出力することができる。
【0087】
例6では、例1の処理システムのロジックは、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することができる。
【0088】
例7は、データ操作演算を実行する方法であって、コンピューターシステムによって複数の物理レジスタ値を第1のデータ構造体に記憶することと、複数のポインターを第2のデータ構造体に記憶することであって、各ポインターは、第1のデータ構造体の要素を参照することと、複数の移動除去セットを第3のデータ構造体に記憶することであって、各移動除去セットは、複数の論理レジスタを表す複数のビットを含むことと、第2のデータ構造体の要素に第1のデータ構造体の要素を参照させることによってデータ操作演算を実行することと、第3のデータ構造体の一回の更新を実行することによって2つ以上のデータ操作演算の結果を反映することとを含む。
【0089】
例8では、例7の方法の第3のデータ構造体を更新することは、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも1つを含むことができる。
【0090】
例9では、例7の方法は、整数汎用論理レジスタ領域における第1の移動除去セット又はストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタ領域における第2の移動除去セットのうちの少なくとも一方を予約することを更に含むことができる。
【0091】
例10では、例7の方法は、第3のデータ構造体の前の状態を反映する第1の信号、データ操作演算用のソース論理レジスタを識別する第2の信号、データ操作演算用のデスティネーション論理レジスタを識別する第3の信号、存在する移動除去セットが少なくとも1つの参照子を含むか否かを識別する第4の信号、第3のデータ構造体内の新たな移動除去セットを識別する第5の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第6の信号のうちの少なくとも1つを処理することによって、第3のデータ構造体を更新する信号を出力することを更に含むことができる。
【0092】
例11では、例7の方法は、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することを更に含むことができる。
【0093】
例12では、例7の方法の第3のデータ構造体を更新することは、2つ以上のデータ操作演算の従属関係を事前に計算することに基づいて実行することができる。
【0094】
例13は、処理システムであって、複数の物理レジスタ値を記憶する第1のデータ構造体と、複数のポインターを記憶する第2のデータ構造体であって、各ポインターは、第1のデータ構造体の要素を参照する、第2のデータ構造体と、第1の複数の移動除去セット及び第2の複数の移動除去セットを含む第3のデータ構造体であって、第1の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、第2の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタを表す複数のビットを含む、第3のデータ構造体と、第1の複数の移動除去セットのうちの第1の移動除去セット及び第2の複数の移動除去セットのうちの第2の移動除去セットを予約するロジックであって、更に第2のデータ構造体と、第1の移動除去セット又は第2の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行するロジックとを備える。
【0095】
例14では、例13の処理システムのロジックは更に、第3のデータ構造体の前の状態を反映する第1の信号、データ操作演算用のソース論理レジスタを識別する第2の信号、データ操作演算用のデスティネーション論理レジスタを識別する第3の信号、存在する移動除去セットが少なくとも1つの参照子を含むか否かを識別する第4の信号、第3のデータ構造体内の新たな移動除去セットを識別する第5の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第6の信号のうちの少なくとも1つを処理することによって、第3のデータ構造体を更新する信号を出力することができる。
【0096】
例15では、例13の処理システムのロジックは更に、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することができる。
【0097】
例16では、例13の処理システムのロジックは更に、2つ以上のデータ操作演算の従属関係を事前に計算し、第3のデータ構造体の単一の更新を実行することによって上記2つ以上のデータ操作演算の結果を反映することができる。
【0098】
例17では、例13の処理システムのロジックは更に、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも1つを実行することができる。
【0099】
例18は、データ操作演算を実行する方法であって、コンピューターシステムによって複数の物理レジスタ値を第1のデータ構造体に記憶することと、複数のポインターを第2のデータ構造体に記憶することであって、各ポインターは、第1のデータ構造体の要素を参照することと、第1の複数の移動除去セット及び第2の複数の移動除去セットを第3のデータ構造体に記憶することであって、第1の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、第2の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタを表す複数のビットを含むことと、第1の複数の移動除去セットのうちの第1の移動除去セット及び第2の複数の移動除去セットのうちの第2の移動除去セットを予約することと、第2のデータ構造体と、第1の移動除去セット又は第2の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行することとを含む。
【0100】
例19では、例18の方法は、第3のデータ構造体の前の状態を反映する第1の信号、データ操作演算用のソース論理レジスタを識別する第2の信号、データ操作演算用のデスティネーション論理レジスタを識別する第3の信号、存在する移動除去セットが少なくとも1つの参照子を含むか否かを識別する第4の信号、第3のデータ構造体内の新たな移動除去セットを識別する第5の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第6の信号のうちの少なくとも1つを処理することによって、第3のデータ構造体を更新する信号を出力することを更に含むことができる。
【0101】
例20では、例18の方法は、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することを更に含むことができる。
【0102】
例21では、例18の方法は、2つ以上のデータ操作演算の従属関係を事前に計算することと、第3のデータ構造体の単一の更新を実行することによって上記2つ以上のデータ操作演算の結果を反映することとを更に含むことができる。
【0103】
例22では、例18の方法は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも1つを実行することを更に含むことができる。
【0104】
例23は、コンピューター可読非一時的記憶媒体であって、コンピューターシステムによって実行されると、当該コンピューターシステムによって複数の物理レジスタ値を第1のデータ構造体に記憶することと、複数のポインターを第2のデータ構造体に記憶することであって、各ポインターは、第1のデータ構造体の要素を参照することと、複数の移動除去セットを第3のデータ構造体に記憶することであって、各移動除去セットは、複数の論理レジスタを表す複数のビットを含むことと、第2のデータ構造体の要素に第1のデータ構造体の要素を参照させることによってデータ操作演算を実行することと、第3のデータ構造体の一回の更新を実行することによって2つ以上のデータ操作演算の結果を反映することとを含む演算を上記コンピューターシステムに実行させる実行可能命令を含む。
【0105】
例24では、例23の第3のデータ構造体を更新することは、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも1つを含むことができる。
【0106】
例25では、例23のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、2つ以上のデータ操作演算の従属関係を事前に計算することに基づいて第3のデータ構造体を更新することをコンピューターシステムに更に行わせることができる。
【0107】
例26では、例23のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、整数汎用論理レジスタ領域における第1の移動除去セット又はストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタ領域における第2の移動除去セットのうちの少なくとも一方を予約することをコンピューターシステムに更に行わせることができる。
【0108】
例27では、例23のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第3のデータ構造体の前の状態を反映する第1の信号、データ操作演算用のソース論理レジスタを識別する第2の信号、データ操作演算用のデスティネーション論理レジスタを識別する第3の信号、存在する移動除去セットが少なくとも1つの参照子を含むか否かを識別する第4の信号、第3のデータ構造体内の新たな移動除去セットを識別する第5の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第6の信号のうちの少なくとも1つを処理することによって、第3のデータ構造体を更新する信号を出力することをコンピューターシステムに更に行わせることができる。
【0109】
例28では、例23のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することをコンピューターシステムに更に行わせることができる。
【0110】
例29は、コンピューター可読非一時的記憶媒体であって、コンピューターシステムによって実行されると、複数の物理レジスタ値を第1のデータ構造体に記憶することと、複数のポインターを第2のデータ構造体に記憶することであって、各ポインターは、第1のデータ構造体の要素を参照することと、第1の複数の移動除去セット及び第2の複数の移動除去セットを第3のデータ構造体に記憶することであって、第1の複数の移動除去セットの各移動除去セットは、複数の整数論理レジスタを表す複数のビットを含み、第2の複数の移動除去セットの各移動除去セットは、複数のストリーミング単一命令複数データ(SIMD)拡張(SSE)論理レジスタを表す複数のビットを含むことと、第1の複数の移動除去セットのうちの第1の移動除去セット及び第2の複数の移動除去セットのうちの第2の移動除去セットを予約することと、第2のデータ構造体と、第1の移動除去セット又は第2の移動除去セットのうちの一方とを更新することによってデータ操作演算を実行することとを含む演算を上記コンピューターシステムに実行させる実行可能命令を含む。
【0111】
例30では、例29のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第3のデータ構造体の前の状態を反映する第1の信号、データ操作演算用のソース論理レジスタを識別する第2の信号、データ操作演算用のデスティネーション論理レジスタを識別する第3の信号、存在する移動除去セットが少なくとも1つの参照子を含むか否かを識別する第4の信号、第3のデータ構造体内の新たな移動除去セットを識別する第5の信号、及びデータ操作演算が移動除去用に選択されたか否かを識別する第6の信号のうちの少なくとも1つを処理することによって、第3のデータ構造体を更新することをコンピューターシステムに更に行わせることができる。
【0112】
例31では、例29のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、ソースレジスタへの介在する書き込みを伴ったソースとして共通のレジスタを用いる2つのデータ操作演算、ソースとして共通のレジスタを用いる2つのデータ操作演算、デスティネーションレジスタへの介在する書き込みを伴った第2のデータ操作演算のソースと一致するデスティネーションレジスタを有する第1のデータ操作演算、又は存在する移動除去セットによって参照されるとともに第2のデータ操作演算のソースであるレジスタを上書きする第1のデータ操作演算のうちの少なくとも1つを検出することをコンピューターシステムに更に行わせることができる。
【0113】
例32では、例29のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、2つ以上のデータ操作演算の従属関係を事前に計算することと、第3のデータ構造体の一回の更新を実行することによって上記2つ以上のデータ操作演算の結果を反映することとをコンピューターシステムに更に行わせることができる。
【0114】
例33では、例29のコンピューター可読非一時的記憶媒体上に記憶された実行可能命令は、移動除去セットを作成すること、移動除去セットを変更すること、又は移動除去セットをリクレームすることのうちの少なくとも1つを実行することをコンピューターシステムに更に行わせることができる。
【0115】
例34は、装置であって、メモリと、このメモリに結合された処理システムとを備え、この処理システムは、上記例7〜12のいずれかの方法を実行する。
【0116】
例34は、装置であって、メモリと、このメモリに結合された処理システムとを備え、この処理システムは、上記例18〜22のいずれかの方法を実行する。
【0117】
この詳細な説明の幾つかの部分は、コンピュータメモリ内のデータビットに対する演算のアルゴリズム及びシンボル表現に関して提示されている。これらのアルゴリズムによる説明及び表現は、データ処理技術の当業者が自身の成果の内容を他の当業者に最も効果的に伝えるために用いる手段である。アルゴリズムは、本明細書において及び一般的には、所望の結果をもたらす自己矛盾のない演算シーケンスと考えられる。これらの演算は、物理量の物理操作を必要とするものである。必ずしもそうではないが通常は、これらの量は、記憶、転送、結合、比較、及びそれ以外の操作が可能な電気信号又は磁気信号の形態を取る。これらの信号を、ビット、値、要素、シンボル、文字、項(terms)、数等と呼ぶことが、主として共通使用の理由から時に便利であることが分かっている。
【0118】
しかしながら、これらの用語及び同様の用語の全ては、適切な物理量に関連付けられ、これらの量に適用される便宜上のラベルにすぎないことに留意すべきである。上記の論述から明らかなように、特に別段の指定がない限り、この説明全体を通じて、「暗号化」、「解読」、「記憶」、「提供」、「導出」、「取得」、「受信」、「認証」、「削除」、「実行」、「要求」、「通信」等の用語を利用した論述は、コンピューターシステムのレジスタ及びメモリ内で物理(例えば、電気)量として表されたデータを操作及びは変換して、それらのコンピューターシステムのメモリ若しくはレジスタ、又は他のそのような情報記憶デバイス、送信デバイス、若しくはディスプレイデバイス内で物理量として同様に表される他のデータにするコンピューターシステム又は同様の電子コンピューティングデバイスの動作及びプロセスを指すことが認識される。
【0119】
「例」又は「例示的」という用語は、本明細書では、一例、一実例、又は一例証としての役割を果たすことを意味するように用いられている。「例」又は「例示的」と本明細書に記載された任意の態様又は設計は、必ずしも他の態様又は設計よりも好ましい又は有利であるとはみなされない。むしろ、「例」又は「例示的」という用語の使用は、具体的な形式で概念を表現するように意図されている。「又は」という用語は、本出願において用いられるとき、排他的な「又は」ではなく包括的な「又は」を意味するように意図されている。すなわち、別段の規定がないか又は文脈から明らかでない限り、「XはA又はBを含む」とは、自然な包含的な並べ替えのいずれをも意味するように意図されている。すなわち、XがAを含む場合、XがBを含む場合、又はXがA及びBの双方を含む場合、「XはA又はBを含む」が上記の場合のいずれにおいても満たされる。加えて、本出願及び添付の特許請求の範囲で用いられる、冠詞「a」または「an」は、別段の規定がないか又は文脈から単数形を指すことが明らかでない限り、一般に「1つ又は複数の」を意味するものと解釈されるべきである。その上、全体を通じて「一実施形態」若しくは「1つの実施形態」又は「一実施態様」若しくは「1つの実施態様」という用語の使用は、同じ実施形態又は実施態様として説明されていない限り、同じ実施形態又は実施態様を意味するように意図されていない。また、「第1」、「第2」、「第3」、「第4」等の用語は、本明細書において用いられるとき、異なる要素を区別するためのラベルとして意図されており、必ずしもそれらの数字指定に従った通常の意味を有するものではない場合がある。
【0120】
本明細書において説明する実施形態は、本明細書における演算を実行するための装置にも関係することができる。この装置は、所要の目的のために特別に構成することもできるし、コンピューターに記憶されたコンピュータープログラムによって選択的にアクティブ化又は再構成された汎用コンピューターを含むこともできる。そのようなコンピュータープログラムは、非一時的コンピューター可読記憶媒体に記憶することができる。この非一時的コンピューター可読記憶媒体は、フロッピー(登録商標)ディスク、光ディスク、CD−ROM、及び光磁気ディスクを含む任意のタイプのディスク、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気カード若しくは光カード、フラッシュメモリ、又は電子命令を記憶するのに適した任意のタイプの媒体等であるが、これらに限定されるものではない。「コンピューター可読記憶媒体」という用語は、一組又は複数組の命令を記憶する単一の媒体又は複数の媒体(例えば、集中型若しくは分散型データベース及び/又は関連付けられたキャッシュ及びサーバー)を含むものとみなされるべきである。「コンピューター可読媒体」という用語も、機械による実行のために一組の命令を記憶、エンコード、又は担持することができるとともに、本実施形態の方法論のうちの任意の1つ又は複数を機械に実行させる任意の媒体を含むものとみなされる。「コンピューター可読記憶媒体」という用語は、したがって、ソリッドステートメモリ、光媒体、磁気媒体、機械による実行のために一組の命令を記憶することができるとともに本実施形態の方法論のうちの任意の1つ又は複数を機械に実行させる任意の媒体を含むものとみなされるが、これらに限定されるものではない。
【0121】
本明細書において提示されるアルゴリズム及び表示は、本来的に、どの特定のコンピューターにも他の装置にも関係していない。様々な汎用システムを、本明細書における教示に従ったプログラムとともに用いることもできるし、所要の方法の動作を実行する、より特殊化された装置を構築することが好都合であることが分かる場合もある。様々なこれらのシステムに必要とされる構造は、以下の説明から明らかになるであろう。加えて、本実施形態は、特定のプログラム言語に関して説明されるものではない。様々なプログラム言語を用いて、本明細書において説明された実施形態の教示を実施することができることが認識されるであろう。
【0122】
上記説明は、幾つかの実施形態の十分な理解を提供するために、特定のシステム、構成要素、方法等の例等の多数の特定の詳細を述べている。しかしながら、少なくとも幾つかの実施形態は、これらの特定の詳細がなくても実施することができることが当業者には明らかであろう。それ以外の場合には、本実施形態を不必要に分かりにくくしないように、よく知られた構成要素又は方法は、詳細に説明されていないか又は単純なブロック図の形式で提示されている。したがって、上述の特定の詳細は、単なる例示的なものにすぎない。特定の実施態様は、これらの例示的な詳細から変化する場合があり、それでも、本実施形態の範囲内にあるものと考えることができる。
【0123】
上記の説明は、制限的ではなく説明的であることが意図されることを理解されたい。多くの他の実施形態は、上記の説明を読み理解した当業者には明らかとなろう。したがって、本実施形態の範囲は、添付の特許請求の範囲を、そのような特許請求の範囲が権利を与えられる全ての範囲の等価物とともに参照して画定されるべきである。
図1
図2
図3A
図3B
図4
図5
図6A
図6B
図6C
図7A
図7B
図7C
図8A
図8B
図8C
図9A
図9B
図9C
図10A
図10B
図10C
図11A
図11B
図11C
図12
図13
図14