(57)【要約】本発明は、キュー構造をロードするために順序付けされていないロードの実施形態をサポートする方法及び装置を提供する。この装置の一実施形態は、他のメモリオペレーションに対して順序付けされずに実行されるメモリオペレーションを記憶するためのロードキューを含む。また、この装置は、特定のアドレスに対して順序付けされたキャッシュ可能なオペレーションのためのロード順序キューを含む。【選択図】図２
2016534431.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
順序付けされておらず（ＯＯＯ）割り当てされていない、順序付けされていないロードキュー（ＬＤＱ）であって、サイクル毎に２つピックを選択するＬＤＱを有し、前記メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
前記ＬＤＱは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順序キュー（ＬＯＱ）を含む、
集積回路。
【請求項２】
前記ＬＤＱは、前記ＬＯＱエントリを生成するためのロード間インターロック（ＬＴＬＩ）コンテンツアドレス可能メモリ（ＣＡＭ）を備える、請求項１の集積回路。
【請求項３】
前記ＬＯＱは、最大１６のエントリを含む、請求項１の集積回路。
【請求項４】
前記ＬＴＬＩ  ＣＡＭは、同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築する、請求項２の集積回路。
【請求項５】
前記ＬＴＬＩ  ＣＡＭは、同じアドレスについて有効なロードのみを検討する、請求項２の集積回路。
【請求項６】
前記ＬＴＬＩ  ＣＡＭは、キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにする、請求項２の集積回路。
【請求項７】
前記ＬＯＱは、順序を維持するために、必要に応じてロードを再同期する、請求項２の集積回路。
【請求項８】
前記ＬＯＱは、トラックされたアドレスがマッチした場合にエントリを結合させることによって、キューサイズを小さくする、請求項２の集積回路。
【請求項９】
前記実行ユニットは、
オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
最大４つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項１の集積回路。
【請求項１０】
前記実行ユニットは、
オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
最大４つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項１の集積回路。
【請求項１１】
順序付けされておらず（ＯＯＯ）割り当てされていないロードキュー（ＬＤＱ）を有するパイプライン化された実行ユニットに対して、順序付けされていないロードをキューイングすることと、
サイクル毎に最大２つのピックを選択して、メモリからロードをキューイングすることと、
ロード順序キュー（ＬＯＱ）を用いて、順序に依らずに完了したロードをトラッキングして、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにすることと、を含む、
方法。
【請求項１２】
ロード間インターロック（ＬＴＬＩ）コンテンツアドレス可能メモリ（ＣＡＭ）を用いて、前記ＬＯＱエントリを生成することを含む、請求項１１の方法。
【請求項１３】
前記ＬＯＱは、最大１６のエントリを含む、請求項１１の方法。
【請求項１４】
同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築することを含む、請求項１２の方法。
【請求項１５】
同じアドレスについて有効なロードのみを検討することを含む、請求項１２の方法。
【請求項１６】
キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにすることを含む、請求項１２の方法。
【請求項１７】
順序を維持するために、必要に応じてＬＯＱのロードを再同期することを含む、請求項１２の方法。
【請求項１８】
トラックされたアドレスがマッチした場合にエントリを結合させて、前記ＬＯＱのキューサイズを小さくすることを含む、請求項１２の方法。
【請求項１９】
集積回路（ＩＣ）の設計又は製造を容易にする１つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読記憶媒体であって、
前記ＩＣは、
順番付けされておらず（ＯＯＯ）割り当てされていない、順序付けされていないロードキュー（ＬＤＱ）であって、サイクル毎に２つピックを選択するＬＤＱを有し、メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
前記ＬＤＱは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順番キュー（ＬＯＱ）を含む、コンピュータ可読記憶媒体。
【請求項２０】
前記ＬＤＱは、ＬＯＱエントリを生成するためのロード間インターロック（ＬＴＬＩ）コンテンツアドレス可能メモリ（ＣＡＭ）を備える、請求項１９のコンピュータ可読記憶媒体。
【請求項２１】
前記命令は、装置の製造に使用されるハードウェア記述言語（ＨＤＬ）命令である、請求項１９のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の相互参照）
本願は、２０１３年１０月２５日に出願された米国仮特許出願第６１／８９５，６１８号の利益を主張するものであり、その全ての内容を引用により含むものである。
【０００２】
開示された実施形態は、概してプロセッサに関し、より具体的には、プロセッサの性能を最大化するために、ロード／記憶オペレーション及びデータキャッシュ性能を向上させる方法、システム及び装置に関する。
【背景技術】
【０００３】
ハードウェアの性能の発達により、２種類のプロセッサが開発された。プロセッサが例えば従来のメモリ等の他の部品とやり取りをしていた初期では、Ｃｏｍｐｌｅｘ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒｓ（ＣＩＳＣ）を含むプロセッサ用の命令セットが、メモリからのデータ及び命令のフェッチにより遅延が生じるという前提の下で開発された。コンプレックスインストラクションとは、メモリソースから命令を待つのではなく、コンピュータのクロックの幾つかのサイクルを用いて１つの命令を完了することによって、プロセッサの時間をより効率的に使用することを意味する。後に、メモリの性能の向上がプロセッサに追いついたときに、Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  Ｃｏｍｐｕｔｅｒｓ  （ＲＩＳＣ）が開発された。これらのコンピュータは、ＣＩＳＣプロセッサより少ないサイクルで命令を処理することが可能であった。一般に、ＲＩＳＣプロセッサは、プロセッサへの命令の転送を簡略化する単純なロード／記憶アーキテクチャを使用しているが、全ての命令が均一であったり独立したものでもないので、命令の優先付けを可能にし、その独立性を保持させるためにデータキャッシュが実装されている。マルチコアプロセッサが開発されることにより、ＲＩＳＣプロセッサからのデータキャッシュアーキテクチャの原理は、マルチコアプロセッサが処理する命令スレッドのバランシングという長所をもたらすことが分かった。
【０００４】
ＲＩＳＣプロセッサの設計は、ＣＩＳＣタイプのプロセッサよりもエネルギー効率が良いことが証明され、このため、低コストの携帯型バッテリ電源装置（例えば、スマートフォン、タブレットやネットブックが例に挙げられるがこれらに限定されない）において望ましいものである。一方、計算性能が望まれる用途では、ＣＩＳＣプロセッサが好ましい。ＣＩＳＣプロセッサの一例としては、カリフォルニア州サンタクララのインテル社により最初に開発されたｘ８６プロセッサアーキテクチャタイプが挙げられ、ＲＩＳＣの一例としては、英国ケンブリッジのＡＲＭ社により最初に開発されたアドバンスドＲＩＳＣマシーン（ＡＲＭ）アーキテクチャタイプが挙げられる。最近では、ＡＲＭアーキテクチャタイプのＲＩＳＣプロセッサは、６４ビット実行状態を有し、６４ビット汎用レジスタと、６４ビットプログラムカウンタ（ＰＣ）、スタックポインタ（ＳＰ）及び例外リンクレジスタ（ＥＬＲ）と、を用いる６４ビット構成でリリースされていた。６４ビット実行状態は、３２ビット命令の符号化を用いる固定幅の命令セットであるシングル命令セットであり、ＡＲＭアーキテクチャタイプの３２ビット構成と後方互換性のあるシングル命令セットを提供する。また、１つ以上のＣＩＳＣプロセッサコアの実行能力と、６４ビット構成を使用する１つ以上のＲＩＳＣプロセッサコアと、を利用する計算プラットフォームについての需要が高まっている。これらの両方の例では、ロード／記憶アーキテクチャ及びデータキャッシュの従来の構成では、ＲＩＳＣプロセッサコア構成毎の実行能力において遅れが生じ、プロセッサコアの１つ以上において遅れが生じると、命令のスレッドを処理するのにより長い時間が掛かってしまう。よって、ＲＩＳＣプロセッサ構成のロード／記憶及びデータキャッシュ能力を向上させる必要がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
本発明の一実施形態によれば、システム及び方法は、順序付けされておらず（ＯＯＯ）割り当てされていないロードキュー（ＬＤＱ）を有するパイプライン化された実行ユニット用の順序付けされていないロードをキューイングすることを含み、前記ＬＤＱは、サイクル毎に最大２つのピックを選択して、メモリからロードをキューイングし、順序に依らずに完了したロードをロード順序キュー（ｌｏａｄ  ｏｒｄｅｒ  ｑｕｅｕｅ；ＬＯＱ）を用いてトラッキングして、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにする。
【０００６】
ＬＯＱエントリは、ロード間インターロック（ＬＴＬＩ）コンテンツアドレス可能メモリ（ＣＡＭ）を用いて生成されており、ＬＯＱは、最大１６のエントリを含む。
【０００７】
ＬＴＬＩ  ＣＡＭは、同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築し、同じアドレスについて有効なロードのみを考慮し、非キャッシュ可能な同じアドレスへのロードについてフェール状態を生成し、非キャッシュ可能なロードが順に保たれるようにする。
【０００８】
ＬＯＱは、トラックされたアドレスがマッチした場合にエントリを結合させて、キューサイズを小さくする。
【０００９】
他の実施形態では、実行ユニットは、ＯＰコード（オペレーションコード）のロードオペレーション及び記憶オペレーションを容易にする複数のパイプラインであって、各ＯＰコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）においてメモリからの物理アドレスに対応する仮想アドレスを用いて、実行ユニットによってアドレス可能である、複数のパイプラインを備える。また、最大４つの同時テーブルウォークをサポートするパイプライン化されたページテーブルウォーカが設けられている。
【００１０】
さらに、他の実施形態では、実行ユニットは、ＯＰコードのロードオペレーション及び記憶オペレーションを容易にする複数のパイプラインであって、各ＯＰコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）においてメモリからの物理アドレスに対応する仮想アドレスを用いて、実行ユニットによってアドレス可能である、複数のパイプラインを備える。また、最大４つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカが設けられている。
【００１１】
添付の図面と共に一例として記載された以下の説明を参照すれば、より詳細に理解されるであろう。
【図面の簡単な説明】
【００１２】
【図１】開示された実施形態の１つ以上が実施され得る装置の一実施例を示すブロック図である。
【図２】本発明の一態様によるプロセッサのブロック図である。
【図３】本発明の一態様によるページテーブルウォーカとＴＬＢ  ＭＡＢのブロック図である。
【図４】本発明の一態様によるページサイズの表である。
【図５】本発明の一態様によるＣＡＭタグビットに関するページサイズの表である。
【図６】本発明の一態様によるロードキュー（ＬＤＱ）のブロック図である。
【図７】本発明の一態様による３アドレス生成パイプを用いたロード／記憶のブロック図である。
【発明を実施するための形態】
【００１３】
本発明の例となる実施形態を以下に説明する。分かりやすさの為に、実際の実施の全ての構成を本明細書では説明しない。当然、如何なる実際の実施形態の開発の際には、数多くの実施上の決定が成され、実施毎に異なるものとなるであろう開発者の具体的なゴール（例えば、システム上の制約や、ビジネス上の制約等）を達成することになるであろう。また、そのような開発努力は、複雑で時間が掛かるものであるが、本開示の利益を享受する当業者にとっては、ルーチン的なものになることが理解され得るであろう。
【００１４】
本発明を添付の図面に基づいて説明する。様々な構造、接続、システム及び装置を概略的に図示するが、説明を目的とするだけのものであり、当業者にとって公知の詳細な事項よって、開示された主題が分かりにくくなることを避けている。それでも、添付の図面は、本発明の例となる実施例を記載し、説明するために添付されている。本明細書において使用される文言や語句は、当業者によって使用される文言や語句と同じ意味であると理解し、解釈されるべきである。文言や語句の特別な定義、つまり、当業者が理解する普通且つ通常の意味とは異なる定義を、本明細書における文言や語句の一貫的な使用によって示唆する意図はない。文言や語句が特別な意味を持つ場合、つまり、当業者が理解するもの以外の意味を持つ場合には、かかる特別な定義は、本明細書で定義され、その文言や語句の特別な定義を直接的且つ明確に提供するであろう。
【００１５】
図１は、１つ以上の開示された実施形態が実施可能な装置１００の一例を示す図である。装置１００としては、例えば、コンピュータ、ゲーミングデバイス、携帯機器、セットトップボックス、テレビ、携帯電話又はタブレットコンピュータが挙げられる。装置１００は、プロセッサ１０２と、メモリ１０４と、記憶装置１０６と、１つ以上の入力装置１０８と、１つ以上の出力装置１１０と、を備える。また、装置１００は、任意で、入力ドライバ１１２及び出力ドライバ１１４を備えてもよい。装置１００は、図１に示していない他のコンポーネントを備えてもよい。
【００１６】
プロセッサ１０２は、中央処理ユニット（ＣＰＵ）、グラフィクス処理ユニット（ＧＰＵ）、同じダイに搭載されたＣＰＵ及びＧＰＵ、又は、１つ以上のプロセッサコアであって、各々がＣＰＵ又はＧＰＵでもよいプロセッサコアを含む構成であってもよい。メモリ１０４は、プロセッサ１０２と同じダイに搭載されていてもよいし、プロセッサ１０２とは別々の位置に配置されていてもよい。メモリ１０４は、例えばランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ又はキャッシュ等のように、揮発性又は不揮発性のメモリを含んでいてもよい。
【００１７】
記憶装置１０６は、例えば、ハードディスクドライブ、半導体ドライブ、光学ディスク、又はフラッシュドライブ等のように固定型又は取り外し可能な記憶装置を含む構成であってもよい。入力装置１０８は、キーボード、キーパッド、タッチスクリーン、タッチパッド、検知器、マイクロフォン、加速度計、ジャイロスコープ、バイオメトリックスキャナ又はネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用無線ローカルエリアネットワークカード）を含む構成であってもよい。出力装置１１０は、ディスプレイ、スピーカ、プリンタ、触覚フィードバック装置、１つ以上のライト、アンテナ、又は、ネットワーク接続（例えば、無線ＩＥＥＥ８０２信号の送信及び／若しくは受信用無線ローカルエリアネットワークカード）を含む構成であってもよい。
【００１８】
入力ドライバ１１２は、プロセッサ１０２及び入力装置１０８と通信し、プロセッサ１０２が、入力装置１０８から入力を受け取れるようにする。出力ドライバ１１４は、プロセッサ１０２及び出力装置１１０と通信し、プロセッサ１０２が出力装置１１０に出力を送れるようにする。なお、入力ドライバ１１２及び出力ドライバ１１４は、任意のコンポーネントであり、装置１００は、入力ドライバ１１２及び出力ドライバ１１４が無い場合でも同様に動作する。
【００１９】
図２は、スタンドアローン型プロセッサとして使用されたり、マルチコア動作環境で使用され得るプロセッサコア２００の実施形態の一例を示す図である。プロセッサコアは、例えば、命令が、デコードエンジンに入って、共有実行エンジン２０８及び浮動小数点エンジン２１０により処理される前に、先ず、命令が、命令キャッシュ（Ｉキャッシュ）及びプリフェッチエンジン２０４に供給される分岐予測及びアドレス生成エンジン２０２を介して命令スレッドを処理するＡａｒｃｈ  ６４アーキテクチャタイプのプロセッサ等の６４ビットＲＩＳＣプロセッサコアである。ロード／記憶キューエンジン（ＬＳ）２１２は、データ及び命令情報を記憶することの可能なＬ２キャッシュ２１６によってサポートされたＬ１データキャッシュ２１４により処理される、プロセッサメモリ要求からのロード及び記憶命令を処理する実行エンジンと協働する。この例示的な実施形態のＬ１データキャッシュは、８ウェイの結合性を有する３２キロバイト（ＫＢ）のサイズである。仮想アドレスと物理アドレスとの間のメモリ管理は、ページテーブルウォーカ（Ｐａｇｅ  Ｔａｂｌｅ  Ｗａｌｋｅｒ）２１８及びデータトランスレーションロックアサイドバッファ（Ｄａｔａ  Ｔｒａｎｓｌａｔｉｏｎ  Ｌｏｏｋａｓｉｄｅ  Ｂｕｆｆｅｒ）（ＤＴＬＢ）２２０により処理される。ＤＴＬＢ２２０のエントリは、バーチャルアドレス、ページサイズ、物理アドレス及びメモリ属性のセットを含むものであってもよい。
【００２０】
（ページテーブルウォーカ（ＰＴＷ））
典型的なページテーブルウォーカは、一連の工程を行う状態機械である。ネスト化したページング用の２段階トランスレーションをサポートする「ｘ８６」及びＡＲＭｖ８等のアーキテクチャについては、このトランスレーションについて２０〜３０程の主要工程が存在し得る。性能を向上させ、一度に複数のページテーブルウォークを行う典型的なページテーブルウォーカについては、当業者は、状態機械が２台必要でって、その関連するロジックが重大なコストに繋がることを理解するであろう。典型的には、ページテーブルウォークの実行プロセスにおいて、時間の大きい割合を占めるのは、実行されるメモリアクセスを待つ時間であり、状態機械ロジックの大部分が殆どの時間において使用されていないことになる。一実施形態において、ページテーブルウォーカは、バッファにおいて部分的に完成したページテーブルウォークに対応する状態を記憶することができ、状態機械ロジックは、一方が待っている間、他方のページテーブルウォークを処理するために自由な状態にすることができる。状態機械ロジックは、さらに「パイプライン化」され、サイクル毎に新たなページテーブルウォークを開始することができ、同時処理するページテーブルウォークの数は、使用可能なバッファのエントリの数によってのみ制限される。バッファは、次に何れのウォークを処理するのかを選ぶ「ピッカ（Ｐｉｃｋｅｒ）」を備えている。このピッカは、如何なる数のアルゴリズムを使用してもよいが（例えば、ファーストインファーストアウト、準備可能で最も古いもの（ｏｌｄｅｓｔ  ｒｅａｄｙ）、ランダム等）、例示的な実施形態では、次のステップへ準備可能で最も古いエントリを選択するものとする。各時間の間でバッファに全ての状態が記憶されるので、ウォークは、パイプラインを流れるように選択され、１つの状態機械ロジックが、複数の同時進行ページテーブルウォークを処理することができる。
【００２１】
図３によると、例示的な実施形態は、４つの同時進行テーブルウォークをサポートするパイプライン状態機械であって、図２のＩキャッシュ及びフェッチコントロールに含まれるＬＳ及び命令フェッチ（ＩＦ）用のＬ２キャッシュトランスレーションルックアサイドバッファ（Ｌ２ＴＬＢ）３０２へアクセスするパイプライン状態機械であるページテーブルウォーク３００を備える。ＴＬＢのミスを解決する際にコンテキストをＯＳに切り替えると、重大な付帯的コストが問題処理パスに加わる。これに対処するために、ページテーブルウォーカは、内蔵ハードウェアを使用してページテーブルを読み込み、仮想から物理へのトランスレーションをＴＬＢに自動的にロードするオプションを提供する。ページテーブルウォーカは、ＯＳへのコストのかかる移行を必要としないが、ハードウェアが認識するのに好適な所定のフォーマットでトランスレーションすることを必要とする。ＰＴＷの主要構造は、以下のようになる。
【００２２】
ａ）８ウェイの非対称の結合性を有する１０２４エントリを有し、部分的なトランスレーションの能力を有する４ＫＢ／６４ＫＢ／１Ｍサイズのページが可能なＬ２キャッシュトランスレーションルックアサイドバッファ（Ｌ２ＴＬＢ）３０２。
【００２３】
ｂ）完全な結合性能力を有する６４のエントリを有し、部分的なトランスレーションの能力を有する１６Ｍ及び５１２Ｍサイズのページが可能なページウォーカキャッシュ（ＰＷＣ）３０４。
【００２４】
ｃ）アドレス、プロパティ及び未決のテーブルウォークの状態をホールドする４エントリ選択可能キューを有するトランスレーションルックアサイドバッファ―ミスアドレスバッファ（ＴＬＢＭＡＢ）３０６。
【００２５】
ｄ）ＩＴＬＢ（ｉｎｓｔｒｕｃｔｉｏｎ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）ミス時にＩキャッシュからのトランスレーション要求を処理するのに必要な仮想アドレスや処理状態等のＩＦ要求バッファ３０８情報。
【００２６】
ｅ）ＤＴＬＢ（ｄａｔａ  ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）ミス時にＤキャッシュからのトランスレーション要求を処理するのに必要な仮想アドレスや処理状態等のＬ２要求バッファ３１０情報。
【００２７】
ｆ）アドレススペース識別子（ＡＳＩＤ）／仮想機械識別子（ＶＭＩＤ）リマッパ３１２。
【００２８】
ＰＴＷパイプラインの基本的なフローは、ＴＬＢＭＡＢから未決の要求を選択し、Ｌ２ＴＬＢ及びＰＷＣにアクセスし、プロパティ／問題と次の状態とを判断し、フィル要求をＬＳに送ってメモリにアクセスし、フィル応答を処理してページテーブルをウォークし、部分的及び最終的なトランスレーションをＬ１ＴＬＢ、Ｌ２ＴＬＢ、ＰＷＣ及びＩＦに書き込む。ＰＴＷは、ネスト化したページング、アドレス／データ（Ａ／Ｄ）ビット更新、リマッピングＡＳＩＤ／ＶＭＩＤ、及び、Ｌ２からのＴＬＢ／ＩＣ管理フラッシュオペレーションをサポートする。
【００２９】
（ＰＴＷページングサポート）
このセクションでは、テーブルウォークに適用されるアーキテクチャルールの全ての事項を繰り返さない。よって、本説明の全てを理解するには、当業者は、Ａａｒｃｈ６４アーキテクチャタイプ等のＲＩＳＣプロセッサのページングアーキテクチャの基本的な理解が必要になるであろう。しかし、一例としての実施形態のページテーブルウォーカは、以下のページング構成をサポートするものとして理解されよう。
【００３０】
−  ステージ２ページウォークからのプロパティは、基本的にステージ１のトランスレーションに適用されるが、その逆はない。
【００３１】
−  トランスレーションテーブルベースレジスタ（ＴＴＢＲ）のＥＬ１（例外レベル１）ステージ１は、２つのＴＴＢＲを定義し得る。他の全てのアドレススペースは、１つのＴＴＢＲを定義する。
【００３２】
−  テーブルウォーカは、ＴＴＢＲ、トランスレーションコントロールレジスタ（ＴＣＲ）又は仮想トランスレーションテーブルベースレジスタ（ＶＴＴＢＲ）から、フィル要求のデータやアドレス等のｍｅｍｔｙｐｅを得る。
【００３３】
−  ＴＴＢＲ自身は、中間物理アドレス（ＩＰＡ）のみを生成する場合があり、ステージ２が可能な場合には、トランスレーションが必要になる。
【００３４】
−  フルアドレススペースが定義されてない場合には、テーブルサイズ（ＴＳｉｚｅ）により定義されているウォークのＬ０以外のレベルで開始することができる。これは、６４ＫＢグラニュル（ｇｒａｎｕｌｅ）と短い記述子について当てはまる。
【００３５】
−  ステージ２のテーブルは、トップレベルが１６エントリを越えない場合には、連結されてもよい。
【００３６】
−  ６４ＫＢテーブルは、ステージ２バッキングページが４ＫＢの場合に分割され、トップレベルテーブル用のマルチＴＬＢエントリに分かれる。例えばステージ１Ｏ／Ｓが６４ＫＢグラニュルを示す場合に、ステージ２Ｏ／Ｓは４ＫＢページを示す。６４ＫＢ用のトップレベルテーブルが、５１２（４ＫＢ／８Ｂ）を越えるエントリを有し得る。通常、このトップレベルが全て同じプロパティの連続的なメモリの塊になると予想されるかもしれない。しかし、ハイパバイザは、異なるプロパティを有する非連続の４ＫＢの複数の塊になるように強制し得る。
【００３７】
−  ページテーブルポインタ又はエントリのビットフィールドは、ＲＩＳＣプロセッサアーキテクチャにより定義される。限定を加えることなく理解を深めるために、ＲＩＳＣプロセッサがＡａｒｃｈ６４アーキテクチャタイプの場合には、イングランド、ケンブリッジのＡＲＭホールディングス社発行のＡＲＭｖ８−Ａテクニカルリファレンスマニュアル（ＡＲＭＤＤＩ０４８７Ａ.Ｃ）が引用により本明細書に含まれてもよい。
【００３８】
−  全ての共有性（Ｓｈａｒｅａｂｉｌｉｔｙ）は無視され、アウタシェアラブル（Ｏｕｔｅｒｓｈａｒｅａｂｌｅ）と考えられる。アウタシェアラブルとは、ブリッジにより分けられたバス上の装置を意味する。
【００３９】
−  アウタｍｅｍｔｙｐｅは無視され、インナｍｅｍｔｙｐｅのみが使用される。
【００４０】
−  テーブルウォークに問題が生じると、問題がアドレス／日付ビット（Ａｂｉｔ/Ｄｂｉｔ）の更新により非特異的に解決されない限り、テーブルウォークが停止する。
【００４１】
−  ＭＭＵが可能でない場合、ＰＴＷは、従来の定義済みのｍｅｍｔｙｐｅを使用して、４ＫＢトランスレーションをＬ１ＴＬＢ及びＩＦＴＬＢに返す。
【００４２】
−  ＭＭＵが可能になった場合、ＰＴＷはＴＬＢフラッシュを送る。
【００４３】
ＭＭＵ（メモリ管理ユニット）は、アーキテクチャの在来部分であり、主にページテーブルウォーカのロード／記憶ユニット内に実装されている。
【００４４】
（ページサイズ）
図４のテーブルは、従来の特定のページサイズと、例示的な一実施形態におけるこれらの実施サイズと、を示している。全てのページサイズをサポートしていないので、より小さいページに分割されることもあり得る。太線は、適切なビットを回転させるマルチサイクルフラッシュを必要とするページの分割を示す。一方、連続するページをベースの非連続ページサイズに分割するには、これは単にヒントなので、余分なフラッシングを必要としない。Ｌ１Ｃ、Ｌ２Ｃ及びＬ３Ｃの行は、「連続」ページを示す。ＰＷＣの数と、Ｌ２ＴＬＢの数は、アーキテクチャにサポートされている従来のアドレッシングモードに基づいて、これらの間のサポートされているページサイズを分割する。そのようなエントリがハイパスプリンタとしてタグされ、仮想アドレス（ＶＡ）に基づくフラッシュが使用された場合に、ビットフリッピングによって全てのマッチングページを見つけるのは不可能なので、全てフラッシュされるステージ２のルックアップに基づいて、ハイパバイザは、オペレーティングシステム（Ｏ／Ｓ）ページサイズをさらに分割する。部分トランスレーション／ネスト化及び最終ＬＳトランスレーションは、Ｌ２ＴＬＢ及びＰＷＣに記憶されるが、最終命令キャッシュ（ＩＣ）トランスレーションは記憶されない。
【００４５】
異なるサイズページ／部分をキャッシングする構造が図５のテーブルに示されている。ここで、コンテンツアドレス可能メモリ（ＣＡＭ）タグビットのアドレスは、アドレスのトランスレートされたビットである。物理アドレスは、従来の６４ビットレジスタを使用する際にはビット４７までであり、従来の３２ビットレジスタを使用する際にはビット３１までになる。
【００４６】
（ページ分割（ｐａｇｅ  ｓｐｌｉｎｔｅｒｉｎｇ））
図３のページサイズテーブルのように、実施の利便性のためにページが分割される。一実施形態では、ページは、分割の際に任意にタグ付けされる。ハイパバイザのページがＯ／Ｓページサイズより小さい場合には、インストールされたページは、ハイパバイザのサイズを使用して、ＨｙｐｅｒｖｉｓｏｒＳｐｌｉｎｔｅｒｅｄとエントリをマークする。ＶＡによりＴＬＢ無効化（ＴＬＢＩ）が起こった場合には、ＨｙｐｅｒｖｉｓｏｒＳｐｌｉｎｔｅｒｅｄされたページは、ＶＡにマッチしているとみなされ、オペレーティングモードのＣＡＭの残りがマッチする場合には、フラッシュされる。このようにして行われた分割は、ＶＡによるフラッシュによって、３つのフラッシュを生成する。１つのフラッシュは要求されたアドレスによって生成され、１つのフラッシュはビットをフリッピングして、１ＧＢページの他の５１２ＭＢを得ることによって生成され、１つのフラッシュはビットをフリッピングして、２ＭＢページの他の１ＭＢを得ることによって生成される。第２の２つのフラッシュは、この方法により分割されたページのみに影響する。ＴＬＢがそのビットを実施しない限り、どのマッチングページでもよい。
【００４７】
一実施形態では、ＶＭＩＤ／ＡＳＩＤをリマッパにおいて任意の分割されたページを持つものとして最適化してタグ付けし、余分なフラッシュを不要に生成することを避ける。
【００４８】
ＭｅｍＴｙｐｅテーブル
実施されたＭｅｍＴｙｐｅ
符号化                    タイプ
３’ｂ０００              デバイス  ｎＧｎＲｎＥ
３’ｂ００１              ハイパバイザ  デバイス  ｎＧｎＲｎＥ
３’ｂ０１０              デバイスＧＲＥ
３’ｂ０１１
３’ｂ１００              ノーマルキャッシュ不可能／ＷｒｉｔｅＴｈｒｕ
３’ｂ１０１              ノーマルＷｒｉｔｅＢａｃｋ  ＮｏＡｌｌｏｃ
３’ｂ１１０              ノーマルＷｒｉｔｅＢａｃｋ  Ｔｒａｎｓｉｅｎｔ
３’ｂ１１１              ノーマルＷｒｉｔｅＢａｃｋ
【００４９】
従来のメモリ属性間接レジスタ（ＭＡＩＲ）ｍｅｍｔｙｐｅ符号化は、実施形態のサポートされたｍｅｍｔｙｐｅにマップされ、クロスプラットフォーム互換性を記憶する。ＰＷＴは、ＭＡＩＲ／ショート記述子の符号化を、サポートされたｍｅｍｔｙｐｅのより制約されたものに変換することについて担当する。ステージ２ｍｅｍｔｙｐｅは、ステージ１ｍｅｍｔｙｐｅに対してより制約を付する。ｍｅｍｔｙｐｅは、上記テーブルにおいて２つのうち、より制約されていないもの／より制約されているものを選択する際に常に結合される。なお、ハイパバイザ装置メモリは、特定の符号化が行われ、装置のアライメントフォールトを正しい場所にトラップするのをアシストする。Ｍビットのステージ１イネーブルと、ＶＭビットステージ２イネーブルと、ＩビットＩＣイネーブルと、ＣビットＤＣイネーブルと、ＤＣビットデフォルトキャッシュアブルと、の効果は、ＡＲＭｖ８−Ａ技術参照マニュアル（ＡＲＭ  ＤＤＩ０４８７Ａ．Ｃ）に従来定義されたように、結果として得られたｍｅｍｔｙｐｅに重ねられる。
【００５０】
アクセス許可テーブル
ＡＰ  ２：０          非ＥＬ０プロパティ          ＥＬ０プロパティ
３’ｂ０００          フォールト                  フォールト
３’ｂ００１          読取／書き込み              フォールト
３’ｂ０１０          読取／書き込み              読取
３’ｂ０１１          読取／書き込み              読取／書き込み
３’ｂ１００          フォールト                  フォールト
３’ｂ１０１          読取                        フォールト
３’ｂ１１０          読取                        読取
３’ｂ１１１          読取                        読取
ＨｙｐＡＰ［２：１］      プロパティ
２’ｂ００                フォールト
２’ｂ０１                読取
２’ｂ１０                書き込み
２’ｂ１１                読取／書き込み
【００５１】
アクセス許可は、従来の６４ビットアーキテクチャの符号化を用いて符号化される。アクセス許可ビット（ＡＰ［０］）がアクセスフラッグの場合、許可チェックが１だとみなされる。ハイパバイザの許可は、別途記録され、フォールトを何処で指示するかを示す。ＡＰＴａｂｌｅは、最終トランスレーション及び部分的書き込み用のＴＬＢＭＡＢに蓄積される。
【００５２】
（フォールト）
一実施形態では、スペキュレイティブな要求においてページウォーカが対応するフォールトは、非スペキュレイティブに実行される必要があるというロード／記憶／命令を知らせる。Ｌ１ＴＬＢにインストール済みの許可フォールトは、ＴＬＢミスのように扱われる。トランスレーション／アクセスフラッグ／アドレスサイズフォールトは、ＴＬＢに書き込まれない。フォールトトランスレーションへ導かれる、フォールトのない部分は、ＴＬＢにキャッシュされる。非スペキュレイティブな要求は、キャッシュ部分からウォークを繰り返す。ＴＬＢは、完全にはキャッシュされず、メモリからウォークを再開する。スぺクフォールトトランスレーション（ＳｐｅｃＦａｕｌｔｉｎｇ  ｔｒａｎｓｌａｔｉｏｎｓ）は、インストールされず、後に消去される。非スぺク（ＮｏｎＳｐｅｃ）要求にはフォールトが生じず、フォールトを解消するためにメモリが変更された場合には、メモリの変更が観測される。フォールトに対応した後、非スぺクフォールト（Ｎｏｎｓｐｅｃ  ｆａｕｌｔｓ）は、データフォールト状態レジスタ（ＤＦＳＲ）、データフォールトアドレスレジスタ（ＤＦＡＲ）、例外シンドロームレジスタ（ＥＳＲ）を適宜更新する。その後、ＬＤ／ＳＴがフローし、例外を発見する。ＩＦは、自身のプリフェッチ停止情報をログする全ての情報が与えられる。フォールトは、ＶＡ又はＩＰＡをルックアップしている間にフォールトが来たか否かにより、レベルと共にステージ１又はステージ２として記録される。
【００５３】
（Ａ／Ｄビット妨害）
アクセスフラッグが可能な場合に、ハードウェア管理が可能でなく、フラッグがセットされていない場合には、フォールトになる。ハードウェア管理が可能な場合に、フラグが設定されていない場合には、スペキュレイティブなウォークがフォールトになり、非スペキュレイティブなウォークは、アトミックにビットを設定する。トランスレーションがロードによりキャッシュ済みの可能性がある以外には、ダーティビットの更新についても同様である。
【００５４】
（セキュリティフォールト）
安全な物理アドレス（ＰＡ）レンジに対して安全でないアクセスが試みられると、フォールトが生成される。
【００５５】
（アドレスレンジフォールト）
一実施形態では、デバイス特定ＰＡレンジへのアクセスが禁じられており、試してもフォールトになる。
【００５６】
（許可フォールト）
ＡＰ及びＨｙｐＡＰは、読取又は書き込みが特定のページに許可されているか否かを定義する。ページウォーカ自身は、許可を得ていない読み込みがウォークの間に試みられたり、又は、Ａビット／Ｄビットの更新時に書き込みが試みられると、ステージ２許可フォールトをトリガしてもよい。データ停止例外は、アクセス権が認められていないデータアクセスをプロセッサが試みると、生成される。例えば、プロセッサが、ＰＬ０に存在し、特権的メモリアクセスのみアクセスが可能であるとマークされたメモリ領域にアクセスを試みた場合には、データ停止例外が生成される。特権的メモリアクセスは、ユーザが開始したメモリアクセスを除く、ＰＬ１又はこれ以上での実行の際に実行されるアクセスである。非特権的メモリアクセスは、以下のケースの何れかにおいて実行されるロード又は記憶オペレーションの結果として生成されるアクセスである。
【００５７】
−  プロセッサがＰＬ０に存在する場合。
−  プロセッサが、ユーザメモリアクセスのあるＰＬ１に存在する場合。
【００５８】
（ＰＴＷ  ＬＳ  要求）
ＬＳ要求は、Ｌ１ＴＬＢにより仲裁され、Ｌ１ＴＬＢ及びＬＳピッカが要求間のスレッド公平性を担保するＴＬＢＭＡＢに送られる。ＬＳ要求は、ＩＦ要求により仲裁し、ＴＬＢＭＡＢに割り当てられる。公正性は、最終的にラウンドロビンを行って、両方が割り当てを望む場合に失うものを割り当てる。エントリは、ＩＦ又は具体的なスレッドのために、ＴＬＢＭＡＢにリザーブされない。ＴＬＢＭＡＢへの割り当ては公平であり、前回割り当てられなかったリクエスタを割り当てることを試みる。ＩＦは、バッファに位置し、ライブロックウィジェットが始動する場合にＬＳが再度試みるためにリフロする必要のあるサイクル毎で試みるので、ＬＳ非スぺクオペレータは、ＴＬＢＭＡＢが必要になり、ＬＳがＴＬＢＭＡＢへの割り当てを成功するまで、さらにＩＦ要求を割り当てることを行わない。ＬＳは、同じ４Ｋページにマッチするものを探すための割り当ての前に、ＣＡＭ  ＴＬＢＭＡＢを要求する。マッチするものが見つかった場合には、新たなＴＬＢＭＡＢが割り当てられず、マッチングタグがＬＳに送り返される。ＴＬＢＭＡＢがフルな場合には、フル信号がＬＳに返送され、オペレータにスリープ又はリトライさせる。
【００５９】
（ＰＴＷ  ＩＦ要求）
一実施形態では、ＩＦ要求は、トークンでコントロールされた２つのエントリＦＩＦＯに割り当てられる。要求が読み出されてＴＬＢＭＡＢに配置されると、トークンはＩＦに返送される。ＩＦは、スレッドの要求間が公平であることを担う。ＩＦ要求の第１フローは、ＩＦへの初期起動標識を抑制するので、ＩＦ要求がＬ２ＴＬＢ又はＰＷＣにヒットする場合でも、フェイルし、リトライする必要がある。ＩＦは、自身のＬ２ＴＬＢを有し、ＬＳは、ＬＳ  Ｌ２ＴＬＢに最終ＩＦトランスレーションを記憶しない。非常にまれな状態において、ＬＳ及びＩＦはページを共有するので、ＩＦウォークの第１フローにおいて共にＬ２ＴＬＢ又はＰＷＣをヒットするかもしれない。しかし、共有のケースで電力やＩＦの起動を節約するために、ＰＴＷは、ＩＦへ送信される初期のＰＷ０の起動を代わりに抑制し、この例でヒットがある場合には単純にリトライする。ＩＦ要求は、ＩＦ特定の許可フォールトと、ログトランスレーション、サイズ等の包括的なウォークフォールトを判定するのに必要な全ての情報を受け取る。
【００６０】
（ＰＴＷ  Ｌ２  要求）
Ｌ２キャッシュは、ＩＦプローブインターフェイスを介してＰＴＷにＩＣ又はＴＬＢＩフラッシュを送る構成でもよい。要求は、ＴＬＢＩの場合に、２サイクルに亘ってフラッシュ情報を捉える２つのエントリバッファを割り当てる。要求は、最大４サイクルまで取って、上記のページ分割のために適切なフラッシュを生成する。フラッシュ要求に対しては、ＰＷ０ピックについて一番低い優先度が与えられる。ＩＣフラッシュは、他の何もすることなく、ＰＴＷを介してフローし、オーバーロードされたウォーク応答バス上のＰＷ３のＩＦに送る。Ｌ２要求は、バッファがフルの場合には認証されない。ＴＬＢＩフラッシュは、パイプをフローし、かかるフラッシュが、ＣＡＭのアクセス前に、下記のようにリマッパをルックアップするオーバーロードのウォーク応答バス上のＬＳ及びＩＦの両方に送られる前に、上述のようにＬ２ＴＬＢ及びＰＷＣをフラッシュする。各エントリは、ＶＡベースのフラッシュに使用される状態機械を有し、適切なビットをフリップして、詳細が上述された分割ページを除去する。
【００６１】
（ＰＴＷ状態機械）
ＰＴＷ状態機械は、ＬｅｖｅｌやＨｙｐＬｅｖｅｌとして符号化される。ＩｐａＶａｌは、ウォークが、現在ＶＡを使用したステージ１か、ＩＰＡを使用するステージ２か、について条件をつける。ＴｔｂｒＩｓＰａは、〜ＴｔｂｒＩｓＰａの場合に、ウォークが、現在のＩＰＡをＰＡにトランスレートしようとしているかに否かについて条件をつける。状態機械は、グラニュルサイズのページの前にリーフノードにヒットしたために状態をスキップしたり、レベルの少ない小さなテーブルのためにレベルをスキップしたりしてもよい。状態は、ＴＬＢＭＡＢエントリ毎に保持され、ＰＷ３において更新される。ＬｅｖｅｌやＨｙｐＬｅｖｅｌは、ページテーブルのレベルＬ０、Ｌ１、Ｌ２、Ｌ３の何れかがアクティブに探されるかを示す。ウォークは、Ｌ０エントリを探す、００，００，０，０｛Ｌｅｖｅｌ、ＨｙｐＬｅｖｅｌ、ＩｐａＶａｌ，ＴｔｂｒＩｓＰＡ｝にて開始される。ステージ２のページングにより、Ｌ０エントリを見つける前にＴＴＢＲ（００，００−１１）を最初にトランスレートすることが可能である。Ｌ２ＴＬＢ及びＰＷＣは、ステージ１又はステージ２のウォークの開始の際にのみルックアップされ、テーブルを出来るだけ進む。その後、ウォークは、Ｌ２ＴＬＢ及び／又はＰＷＣに書き込まれたエントリを有するメモリから進み、更なるウォークを促進する。ルックアップは、ＮｏＷｒ及びＡビット／Ｄビットの必要条件による必要に応じて再度可能とされる。Ｌ２ＴＬＢ及び／又はＰＷＣのヒットは、状態機械を進めるヒットエントリのレベルを示す。メモリのページテーブルからのフィル応答は、リーフノード又はフォールトに出くわすまで１つの状態で状態機械を進める。
【００６２】
ＰＴＷ  パイプライン  ロジック：
ＰＷ０マイナス２：
−        ＬＳ  Ｌ１ＴＬＢ  ＣＡＭ
−        ＩＦ要求がＦＩＦＯを書き込む
ＰＷ０マイナス１：
−        ＬＳ及びＩＦ要求を仲裁
−        ＬＳ要求と同じ４ＫＢフィルタリング
−        Ｌ２要求がＦＩＦＯを書き込む
−        フィル／フロー起動
ＰＷ０：
−        ＴＬＢＭＡＢ  ピック  −最も古く準備されたもの（タイミングがフェールした場合は、ｒｅａｄｙ  ＯｐｓからのバックアップＦＦ１）
−        Ｌ２  フラッシュ  ピック  −ＴＬＢＭＡＢが選択しない場合、又は、欠乏したＬ２ＴＬＢが事前復号を読み込む場合に選択されたＬ２要求−選択されたウェイ及び部分的に複合されたインデックス毎のＰｇＳｚ（これは、クリティカルパス）
ＰＷ１：
−        Ｌ２ＴＬＢ  ８ウェイの読み込み及びアドレス／モード比較：優先度多重通信回路ヒット
−        ＰＷＣ  ＣＡＭ及び優先度多重通信回路ヒット
ＰＷ２：
−        Ｌ２ＴＬＢ  ＲＡＭ  読み込み
−        ＰＷＣ  ＲＡＭ  読み込み
−        優先度多重通信回路データソース
−        優先度組み合わせ
−        次の状態を決定
ＰＷ３：
−        フィル要求をＬＳパイプに送付
−        ファイナル応答をＩＦ／ＬＳに返送
−        オーバーラッピングウォーク用ＴＬＢＭＡＢ  ＮｏＷｒ  ＣＡＭ
−        Ｌ２ＴＬＢが事前復号書き込み
−        ＴＬＢＭＡＢ更新、リトライの場合にはマークレディ（ｍａｒｋ  ｒｅａｄｙ）
−        生成物をＡビット／Ｄビット記憶
ＰＷ４：
−        Ｌ２ＴＬＢ書き込み
−        ＰＷＣ書き込み
−        ＬＳ  Ｌ１ＴＬＢ書き込み
−        ＬＤＱ／ＳＴＱ書き込む
リトライとスリープ条件：
−  ＬＳパイプ要求が不良状態標識を受取り、ＭＡＢを割り当てられなかった場合、又は、ロック要求が満足されなかった若しくは〜ＤｅｃＴｅｄＯｋを応答時に受け取った場合、ウォークはリトライする。
−  Ｌ２ＴＬＢマクロ書き込みの後にウォークが読み込みコンフリクトにエンカウントした場合、ウォークはリトライする。
−  Ｌ２ＴＬＢ／ＰＷＣマルチヒット又はパリティエラーにエンカウントし、無効にした後ウォークはリトライする。
−  ウォークは、ＶＡからＬＳパイプ要求が選択されるのを待つＩＰＡフロースリープへ切り替えるようにリトライする。
−  Ｌ２からフィル要求が返送されてくるのを待つスリープ。
−  先頭のウォークが終わるまで、オーバーラッピングウォークとしてマークされている場合にスリープ。
【００６３】
各ＴＬＢＭＡＢエントリ及びＬ２フラッシュ要求が８ビット（プログラマブル）飽和カウンタを有する場合、フォワードプログレス／スターべイション（Ｆｏｒｗａｒｄ  Ｐｒｏｇｒｅｓｓ／Ｓｔａｒｖａｔｉｏｎ）が発生し得る。カウンタは、割り当て時にクリアされ、又は、他のウォークが完了した時に増加する。カウンタが、閾値を満足したために飽和した場合には、それが完了するまでそのエントリのみを選択することができ、他のエントリは、準備されていないとしてマスクされる。一緒に有効期限が切れる複数のページウォークがある場合には、この条件が、底からのＦＦ１により解決される。
【００６４】
（ＰＴＷフィル要求）
これらの図は、ＰＴＷ及びＬＳパイプのインタラクションの様々なケースを示す。ＰＴＷが最後のトランスレーションでヒットしない場合には、ＰＴＷは、ロードをＬＳ（ＡＧ＆ＤＣ）パイプに沿って送り、データ（ＥＸを介する返送ウェイ）を把握する。データは、ＴＬＢＭＡＢに書き込まれ、ＰＴＷオペレーションが起動されて当該データとランデブする。もし、Ｌ１ミスがある場合には、ＰＴＷオペレーションは、Ｌ２からフィルデータとランデブする第２ロードを生成する。Ａビット／Ｄビットの更新は、ロックを得るロードを必要とし、メモリのページテーブルを更新する記録を生成する。
【００６５】
ＰＴＷパイプ／ＬＳパイプインタラクションの例を上述した。
【００６６】
よって、ウォークが選ばれＡＧ／ＤＣパイプにおいて直ぐにフローする場合には、ＰＴＷは、リフロする必要がなく、２エントリＦＩＦＯが書き込まれる。
【００６７】
ウォークが選ばれＬＳパイプをフローすると、エントリは、ＰＴＷで起動され、データ返送とランデブする。
【００６８】
フローがＭＡＢ要求をする場合、テーブルウォークは、ＭＡＢＴＡＧにおいてスリープされる。
【００６９】
フィル応答が来た場合、ＦＩＦＯは再度書き込まれ、ＦｉｌｌＢｙｐａｓｓのデータとランデブするロードを注入する。ＰＴＷは、ロードのｍｅｍｔｙｐｅ及びＰＡ、そして、それがロックされているか否かの指標を供給する。ＰＴＷ装置メモリの読取は、スペキュレイティブに起こり、Ｎｃバッファを使用しないが、ＦｉｌｌＢｙｐａｓｓである必要がある。ページングモードに基づいて要求は３２バイト又は６４バイトであるが、常にアラインされている。ＬＳルートからの応答データは、ＥＸを介するウェイを通り、フローの場合に読み取るウォークのＴＬＢＭＡＢに記憶される。ポイズンデータ応答はフォールトになり、修正可能なＥＣＣエラーがあるＬ１又はＬ２からのデータは、再度フェッチされる。
【００７０】
（ＰＴＷ  Ａ／Ｄ  ビット更新）
アクセスされ、ダーティフラッグが有効となり、ハードウェア更新が有効となった場合、ＰＴＷは、アトミックＲＭＷを実行し、必要に応じてメモリのページテーブルを更新する。Ａビット又はＤビットバイオレーションを見つけるスペキュレイティブなフローは、非スぺクとして再要求されるスペキュレイティブなフォールトを得る。Ａビットの更新はスペキュレイティブなウォークに対して行われるが、ページテーブルがＷＢメモリにあり、キャッシュロックが可能な場合にのみ行われる。
【００７１】
Ａビット又はＤビットバイオレーションを見つける非スぺクのフローは、ＰＴＷがロードを生成してＬＳパイプをフローし、ロックを取得し、ロックを取得するとデータを返送するＬＳに対して、ロックされたロード要求を出す。この要求は、ラインがロックされている場合（又は、バスロックされている場合）、ＰＴＷにデータを返す。ページを修正する必要がある場合、記憶がＰＷ３／ＰＷ４のＳＣＢに送られて、ページテーブルを更新し、ロックをリリースする。ページを修正できなかったり、ビットが既に設定されている場合には、ロックがキャンセルされる。ＴＬＢＭＡＢエントリがテーブルデータを受け取った直後にフローする場合、２バイトのロック解除記憶をＳＣＢに送り、メモリのページテーブルを更新する。
【００７２】
非スぺク更新が、Ｄビットを更新することができる記憶の代わりであれば、Ａビット及びＤビットの両方を共に設定する。Ａビットバイオレーションは、ＴＬＢにキャッシュされないため、非スぺク要求は、先ず、ＬＳパイプのロック解除されたロードを行い、Ａビット更新の必要性を発見する。Ｄビットバイオレーションがキャッシュする構成の場合、フローにおいてマッチングＬ２ＴＬＢ／ＰＷＣエントリを無効にし、ロックデータを、フローがＰＷ４に達したときに新しいエントリが書き込まれるフラッシュのように消費する。ＬＲＵが無効のエントリを最初に選択する。これは、書き込みがパイプラインに先んじてない場合、同じエントリになる可能性が高い。Ｄビット更新の後にＬ１ＴＬＢは、既存のマッチへの書き込みにＣＡＭする。
【００７３】
（ＰＴＷ  ＡＳＩＤ／ＶＭＩＤ  リマッパ）
ＡＳＩＤリマッパは、１６ビットＡＳＩＤの３２エントリテーブルであり、ＶＭＩＤリマッパは、１６ビットＶＭＩＤの８エントリテーブルである。ＶＭＩＤ又はＡＳＩＤが変更されると、リマップの値がフル値に割り当てられているかどうかを確認する適切なテーブルをＣＡＭする。ミスがある場合には、ＬＲＵエントリが上書きされ、そのエントリについてコアローカルフラッシュが生成される。
【００７４】
−  ＶＭＩＤが再使用される場合、ＶＭＩＤベースのフラッシュが発行される。
−  ＡＳＩＤが再使用される場合、ＡＳＩＤベースのフラッシュが発行される。
−  これらのフラッシュは、ＰＷ０の選択においてもっとも高い優先度を有する。
−  各スレッドは、最大２つのフラッシュを必要とする構成であってもよい。
【００７５】
（ＰＴＷ  Ａ／Ｄ  ビット  更新２０）
ヒットがある場合、リマップ値は、ＴＬＢ  ＣＡＭに使用されるＬＳ及びＩＦに対して駆動される。Ｌ２は、ピックについて両方のテーブルのＣＡＭを要求し、フラッシュにおいて使用されるリマップ値を見つける。
【００７６】
−  ＡＳＩＤヒットがなく、ＡＳＩＤがフラッシュマッチで使用される場合、フラッシュは無演算命令（ＮＯＰ）である。
【００７７】
−  ＶＭＩＤヒットがなく、フラッシュマッチでＶＭＩＤが使用される場合、フラッシュは無演算命令（ＮＯＰ）である。
【００７８】
−  リマップされた値を、フラッシュ用のＬ２ＴＬＢ、ＰＷＣ、Ｌ１ＴＬＢ及びＩＦに送る。
【００７９】
−  フラッシュが、ＶＭＩＤ又はＡＳＩＤの全てのエントリに対するものの場合、対応するエントリは、リマッパでは無効とマークされる。
【００８０】
無効のエントリは、最初に選択されて、ＬＲＵエントリの前に使用される。テーブルに新たなエントリを割り当てることは、ＬＲＵを更新しない。カウンタを飽和する４ビット（プログラマブル）がエントリ毎に保持される。ＴＬＢＭＡＢをエントリに割り当てると、カウンタを増やす。カウンタが飽和したり、オペレーティングモードが飽和したカウンタのエントリに切り替わる場合、エントリはＭＲＵになる。ＬＲＵは、ＶＭＩＤについては７ビットツリーとして、ＡＳＩＤについてはセカンドチャンスとして保持される。
【００８１】
（ＰＴＷ  特別  挙動）
同じページサイズのエントリについて複数マッチが起こることを防ぐため、任意の書き込みをＰＷＣ、Ｌ２ＴＬＢ及び／又はＬ１ＴＬＢに対して行う。ＰＷＣ及び／又はＬ２ＴＬＢを再度ルックアップするまで、ヒットであるウォークは、ＰＷＣ、Ｌ２ＴＬＢ及び／又はＬ１ＴＬＢに書き込むことが禁止され、先頭のウォークが終了するまでスリープの状態にされるウォークをオーバーラップするためのＴＬＢＭＡＢをＣＡＭする。
【００８２】
（ロードインターロック（ＬＴＬＩ）へのロード）
図６に示す一実施形態では、従来の順序付けルールは、同じアドレスのロードが順序付けされた状態のままであることを要求する。ロードキュー（ＬＤＱ）６００は、順序付けされずに、古いロードが完了しない間に非インタラクトのロードが完了することを可能にする。ロードをインタラクトするエイジ関係を再構築するため、ロード−記憶間のインタラクション用Ｓｔｏｒｅ  Ｔｏ  Ｌｏａｄ  Ｉｎｔｅｒｌｏｃｋ（ＳＴＬＩ）ＣＡＭ６０２同様のＬｏａｄ−ＴｏＬｏａｄ−Ｉｎｔｅｒｌｏｃｋ（ＬＴＬＩ）ＣＡＭ６０２がフロー時間に実行される。ＬＴＬＩ  ＣＡＭ結果は、キャッシュ不能なロードを順序付けし、ロード順序キュー（ＬＯＱ）６０４を割り当て、古いオペレーションに対して選択可能のマスクを供給するのに使用される。キャッシュ不能ロードについては、同じアドレスへのロードは、順序付けされた状態のままである必要があり、ＬＴＬＩヒットにフェール状態にする。キャッシュ可能ロードについては、同じアドレスへのロードは、順序付けされた状態のままである必要があり、ＬＯＱ６０４をＬＴＬＩヒットに割り当てる。エイジを近似するため、Ｅビットのピックの一方のレッグは、ＬＴＬＩヒットのエイジ部分を使用し、より古い有効なロードを判定し、フィードバックを提供して、選択オペレーションがより古いロードを選択するようにする。
【００８３】
同じスレッドの有効なロードのみがマッチだとみなされる。Ｌｏａｄ  Ｔｏ  Ｌｏａｄ Ｉｎｔｅｒｌｏｃｋ（ロード間のインターロック）ＣＡＭは、エイジ比較とアドレスマッチから構成されている。
【００８４】
（エイジ比較）
エイジ比較チェックは、フローしているロードのＲｅｔＴａｇ＋Ｗｒａｐと、ＬＤＱのロードとの間の比較である。ＣＡＭのこの部分は、まだＬＤＱを更新してしないパイプラインにおいてより古く完了するロードのための各サイクルを付加するバイパスを有するＤＣ１にて実行される。
【００８５】
（アドレスマッチ）
ＬＴＬＩのアドレスマッチは、より古くフローするロードのバイパスを有するＤＣ３にて実行される。まだアドレス生成されていないロードは、ヒットだとみなされる。アドレス生成されているがＰＡを得ていないロードは、インデックスがマッチした場合にはヒットだとみなされる。ＰＡを有するロードは、インデックスとＰＡハッシュとがマッチした場合には、ヒットだとみなされる。アラインされていないＬＤＱエントリは、ページがアラインされていないＭＡ２が、チェックの対象となる別のＰＡハッシュを有さず、単一でインデックスマッチするＭＡ１又はＭＡ２アドレスの何れかにおいてヒットするかチェックされる。
【００８６】
（ロード順序キュー）
ＬＯＱは、順序に依らずに完了したロードをトラックして、同じアドレスへのロードが、それらの値を順番に留めるかのように見えることを保証するＬＤＱの１６エントリの拡張子である。ＬＯＱは、プローブを観察し、必要に応じてロードを再同期し、順序を維持する。キューの全体的なサイズを減らすため、トラックされたアドレスがマッチする場合は、エントリを結合してもよい。
【００８７】
エントリ毎の記憶テーブル
フィールド    サイズ    説明
Ｖａｌ        ２        エントリは、スレッド１またはスレッド０で有効（相互排除）
Ｒｅｓｙｎｃ  １        プローブによりヒットしているエントリ
ＷａｙＶａｌ  １        エントリは、ｉｄｘ＋ｈａｓｈの代わりにｉｄｘ＋ｗａｙを使用してトラックされる
Ｉｄｘ        ６        エントリのアドレスの１１：６
Ｗａｙ        ３        エントリのＷａｙ
Ｈａｓｈ      ４        ＰＡのＨａｓｈ  １９：１６^１５：１２
ＬｄＶｅｃ    ４８      トラックされたロードであって、より古いロードのＬＤＱサイズのベクタ
【００８８】
（ＬＯＱ割り当て）
外部のライタが無い場合、同じアドレスへのロードは、順序に依らず実行し、同じデータを返送する。より古いロードよりも古いデータを若いロードが観測するまれなケースでは、当該若いロードは、新たなデータを再同期し、再取得する。そして、ＬＤＱエントリは、自由に行われてもよく、外部ライタがある場合には、より軽量のＬＯＱエントリが割り当てられて、このロード間関係をトラックする。ロードは、ＤＣ３の良性の状態の返送やＤＣ３のＬＴＬＩｃａｍにおけるヒットに基づいたＤＣ４のＬＯＱへ割り当て又は結合する。同じスレッドの、より古く未完了の同じアドレス、又は、未知のアドレスのロードがある場合には、ロードはＬＯＱエントリを必要とする。
【００８９】
フルな状態のＬＯＱのため、又は、スレッドの閾値に到達したために割り当てができないロードは、ＬＯＱの割り当てが解除されるまでスリープさせる必要があり、レジスタに不良の状態を強いる。スレッド毎の最も古いロード（ミスアラインされている可能性あり）のエントリをリザーブすることを避けるため、ＬＯＱの割り当て解放のときにスリープしているロードは、最も古いロードの割り当て解除により起動してもよい。ＬＴＬＩでミスしているロードは、トークンが無くても継続して完了する。ＬＴＬＩがない、又は、ＬＯＱが結合しているため割り当てが必要とされない場合、トークンは、スペキュレイティブにＤＣ３で消費され、次のサイクルで返送される。
【００９０】
キャッシュラインをクロスするロードは、ＬＯＱにより２つの別々のロードとみなされる。ロードペアの一部は、結合されたロードがキャッシュラインをクロスする場合に、別々に処理される。
【００９１】
既存のエントリに結合するために、スレッド、インデックス、及び、ウェイ又はハッシュにマッチするエントリを見つけるＬＯＱをＤＣ４ロードがＣＡＭする。ＣＡＭマッチが見つかった場合、ＤＣ４ロードからのＬＴＬＩヒットベクトルは、エントリのＬｏａｄ  Ｏｒｄｅｒ  Ｑｕｅｕｅ  Ｌｏａｄ  Ｖｅｔｏｒ  （ＬｏｑＬｄＶｅｃ）にＯＲされる。Ｉｄｘ＋ＷａｙとＩｄｘ＋Ｈａｓｈの両方でマッチが見つかった場合、ロードは、Ｉｄｘ＋Ｗａｙマッチに結合される。各ＤＣロードパイプ（Ａ＆Ｂ）は、結合ＣＡＭを実行する。
【００９２】
（新たなエントリ割り当て）
完了するロードは、ＤＣ４のＬＯＱをＣＡＭし、例外状態（下記のＭａｔｃｈを参照）と可能な結合（上記参照）を判定する。結合が可能でない場合には、スレッドに対してスペースが存在する場合に、ロードは新しいエントリを割り当てる。割り当てられるエントリは、より古いアドレスにマッチするロードのＬＴＬＩｃａｍからの４８ビットマッチを記録する。
【００９３】
ロードがＤＣヒットの場合には、ＷａｙＶａｌを設定し、ＬＯＱのＩｄｘ＋ｗａｙを記録する。
【００９４】
ロードがＤＣミスの場合には、〜ＷａｙＶａｌを設定し、ＬＯＱのＩｄｘ＋ＰａＨａｓｈを記録する。
【００９５】
ＬＴＬＩマッチが無い場合（同じパイプステージ、反対のパイプを考慮後）には、ロードは、ＬＯＱエントリの割り当てを行わない。
【００９６】
ロードパイプの両方は、自由なエントリが１つだけの場合に、優先権を得ているより古いロードを同じサイクルで割り当てる。
【００９７】
（同じサイクルのロードインタラクション）
両パイプが同じパイプステージでフローするインタラクティブなロードを有するような構成であってもよい。ロードは、同じアドレスに対する同じサイクルで実行される＊Ｌｏａｄの順序から外れられないので、マスクの良性の状態のロードと、反対のパイプＬＴＬＩ  ＣＡＭからの結果は、同じデータになる。複数マッチを避けるため、２つのロードは、両方とも良い状態の場合には、Ｉｄｘ＋Ｗａｙ＋Ｈａｓｈ＋Ｔｒｅａｄで比較される。
【００９８】
−  両者が同じであれば、ＬＴＬＩの結果は、共にＯＲされ、同じエントリに割り当てられるか、併合される。
【００９９】
−  ハッシュがマッチするが、ウェイ（ｗａｙ）がマッチしない場合、ロードの際にＤＣ４において併合するＩｄｘ＋Ｗａｙのマッチを無視する。
【０１００】
フローしているロードがＤＣ３にある場合にＤＣ４、ＤＣ５、ＤＣ６において完了したロードは、より古いロードがパイプ内にあるため、より古いロードがＬＤＱのＬＴＬＩｃａｍに現れ、より古いロードが完了した場合にマスクされる／バイパスされる必要のある場合に、まだＬｄｑを更新していないかもしれないというＬＴＬＩ結果からマスクされる。
【０１０１】
（ＬＯＱマッチ）
プローブ（エビクションも含む）及びフローしているロードは、ＬＯＱをルックアップして、順序に依らず完了したインタラクティブなロードを見つける。順序のバイオレーションが検知された場合、より若いロードを再発送して、新しいデータを取得する必要がある。ＬＴＬＩ  ＣＡＭのアドレスマッチの誤検出も、より古いロードのアドレスが分かれば除去することができる。
【０１０２】
（プローブマッチ）
このコンテキストのプローブは、外部無効プローブ、他のスレッド用のＳＭＴエイリアス応答、Ｌ１エビクション、各スレッドのようなラインの可読性を除去する任意のイベントを意味する。プローブは、ＷａｙＶａｌにより選択されたＷａｙ対ＰａＨａｓｈを用いて、Ｔｒｅａｄ＋Ｉｄｘ＋Ｗａｙ＋ＰａＨａｓｈを有するＲＳ６のＬＯＱをＣＡＭし、エビクションがタグアレイを読み込み、ＰＡハッシュによりトラックされたエントリがあるＬＯＱからの標識に基づいてＰＡビットを取得する。Ｌ２からのプローブは、Ｉｄｘ＋ＷａｙをＲＳ３のＴａｇマッチに基づいて生成する。エイリアス応答について、ＲＳ５の状態読み込みは、ラインの最終状態を判定し、任意のＬＯＱスレッドを精査する必要があるかどうかを判定する。
【０１０３】
ＬＯＱエントリをヒットするプローブは、このエントリを再同調する必要があるとマークする。この再同調オペレーションを下記に説明する。フローのオペレーションに関して、プローブを観測するには遅すぎるタイミングでＬＯＱエントリを割り当ててもよい。このウィンドウがＤＣ２−ＲＳ８までＤＣ４−ＲＳ６の場合、ＳＴＡは、このプローブ比較を対応し、ＬＯＱが必要に応じて割り当てられ、再同調される。
【０１０４】
（フローしているロードマッチ）
ＤＣパイプロードのみＬＯＱをルックアップする。良好な状態で完了するロードは、ＤＣ４のＬＯＱをルックアップし、フローしているロード（若いロードのＬＴＬＩからなる）のＬｄｑＩｎｄｘにＬｄＶｅｃがマッチするエントリを見つける。エントリが、フローしており完了するロードセットについてＬｏｑＲｅｓｙｎｃと、ＬｄＶｅｃ内の対応するビット位置とを有する場合、フローしているロードがマークされ、トラップを完了状態として再同調し、ＬｄＶｅｃビット位置がクリアされる。結合したＣＡＭのＰａＨａｓｈを再使用すると、ロードがマッチしない場合には、全てのマッチングエントリのＬｄＶｅｃに対応するビット位置がクリアされるため、フローしているロードをこのフローで完了して、それ自身をミスマッチから除く必要がない。
【０１０５】
（ＬＯＱ割り当ての解放）
若いロードが順序に依らずに完了した場合、より古いロードの何れかが相互作業したかもしれない。ロードが完了すると、順序から外れてデータを観測する可能性がないので、ＬＯＱエントリが再利用されてもよい。ＬＤＱフラッシュは、若いロードがリタイヤしていない場合、より古いロードを有するＬＯＱエントリをスペキュレイティブに有するロードがより古いコードを削除できないＬｄＶｅｃの全てのＬＯＱエントリにおける対応するビットをクリアするのに使用されるフラッシュされたロードのベクトルを生成する。
【０１０６】
ＬＯＱエントリの全てのＬｄＶｅｃビットがクリアされた場合、割り当てから解放され、トークンが返送される。多数のＬＯＱエントリが、同じサイクルで割り当てから解放され得る。割り当ての解放は、信号をＬＤＱに送り、エントリが自由になるのを待っているロードを起動する。
【０１０７】
（ＬＯＱ特別挙動）
ＬＯＱは、保護されているパリティではなく、結合ＣＡＭを無効にするビットがある。
【０１０８】
（ロード及び記憶パイプライン）
（発送パイプ）
発送の間、１つのオペレーションに関する全ての統計的情報は、ＤＥにより提供される。これは、オペレーションの種類を含むが、後にＥＸにより提供されるアドレスは含まない。発送パイプの目的は、ロード／記憶キュー内の提供された情報を捕捉し、エントリが使用されたＥＸにフィードバックすることにある。これにより、サイクル毎（最大４ロードと４記憶）に発送できるオペレーションを最大６とすることができる。ＤＩ１の初期の発送信号は、ゲートとして使用され、次のサイクルの発送を可能とする。次のサイクルで発送したロードの数は、ＤＩ１に提供されている。この信号は、包括的にスペキュレイティブなものであり、次のサイクルで実際に発送されるよりも多いロードを示すかもしれないが、少ないロードは示さない。しかし、発送されるスペキュレイティブなロードの数は、利用可能なトークンの数を越えてはならない。このコンテキストでは、次のサイクルで発送されなかったスペキュレイティブなロードに使用されるトークンは、次のサイクルまで再使用できない。例えば、トークンが１つだけ残っている場合、ＳｐｅｃＤｉｓｐＬｄＶａｌは、実際に発送されたロードが無くても、２つの連続するサイクルでは高いものになってはいけない。
【０１０９】
ＬＳＤＣは、割り当てられたロードの４のＬＤＱインデックスを返送し、返送されたインデックスは、ロード及び記憶がＤＩ２で発送される、如何なる具体的な順序であってはならない。ＬＳＤＣは、割り当てられた記憶にＳＴＱインデックスを返送し、割り当てられた記憶は、提供されたインデックスから次の４つまでになる。有効なビットと他のペイロード構造は、ＤＩ４に記録されている。有効なビットと、以前選択されたエントリとの組み合わせは、底からスキャンされ、次の４つのフリーなＬＤＱエントリを見つける。
【０１１０】
（アドレス生成（ＡＧ）パイプ）
図７を参照すると、アドレス生成７００（又は、ａｇｅｎ、ＳＣピック若しくはＡＧピックと呼ぶ）中、オペレーションは、スケジューラにより選択され、ＥＸパイプを流れ、アドレス７０２を生成する。アドレス７０２は、またＬＳに提供される。アドレス生成後、オペレーションは、ＡＧパイプを流れ（恐らく少々の遅延の後）、ＬＳは、オペレーションをＬＳパイプ（ある場合）に流して、オペレーションがこのフローでも完了するようにする。ＥＸは、サイクル毎に３つのオペレーションのアドレス生成をする（最大２ロードと２記憶）。アドレス生成パイプは、３本（つまり、０、１、２）又は（Ｂ、Ａ、Ｃ）７０４、７０５、７０６がある。ロード７１２は、パイプ０又は１（パイプ１のみがロードに対応できる）についてアドレス生成される。記憶７１４は、パイプ０又は２（パイプ２のみが記憶に対応できる）についてアドレス生成される。アドレス生成パイプの全てのオペレーションは、ＡＧ１のμＴＡＧアレイ７１０をルックアップして、ウェイ（ｗａｙ）を判定する。必要な場合、ウェイは、ＡＧ３でペイロードにて捕捉される。ミスアラインされたオペレーションは、スタッタされ、μＴＡＧアレイ７１０を２回ルックアップし、ＭＡ２時のアドレス作成時にルックアップするオペレーションのアドレスは４つのエントリスキッドバッファで捕捉される。なおスキッドバッファは、ミスアラインの状態であっても、アドレス作成毎に１つのエントリを使用し、スキッドバッファが厳格にＦＩＦＯであり、スキッドバッファでオペレーションとオペレーションの順序変更がフラッシュされず、無効としてマークされないようにする。スキッドバッファがフルの場合、ＥＸからのアドレス作成はＳｔａｌｌＡｇｅｎ信号をアサートして中断される。ＳｔａｌｌＡｇｅｎのアサート後、スキッドバッファにフィットする必要のある追加のオペレーションが必要である２以上のアドレス生成があり得る。ＬＳは、システム制御ブロック（ＳＣＢ）７２０と、書き込みコンバインバッファ（ＷＣＢ）７２２と同期する。オペレーションは、ＤＣパイプ上の各オペレーションがＴＬＢポートを必要としない場合には、ＡＧ１のＴＬＢ７１６をルックアップしてもよい。通常、ＤＣパイプ上のオペレーションは、ＡＧパイプ上のオペレーションよりも優先される。物理アドレスは、ＤＣパイプにバイパスされない場合には、ＡＧ３のペイロードに捉えられる。ロードオペレーションは、ＡＧ１のＶＡハッシュと、ＡＧ２のインデックス−ウェイ（ｗａｙ）／インデックス−ＰＡとを使用してＭＡＢをｃａｍする。ＡＧ１ｃａｍは、実行されて、同じアドレスのスペキュレイティブなＬ２要求がマッチするのを防止して、電力を節約する。インデックス−ウェイ（ｗａｙ）／ＰＡｃａｍは、実行され、複数のフィルが、同じウェイ／アドレスに起こるのを防止する。ＭＡＢは、割り当てられ、ＡＧ３サイクルのＬ２に送られる。記憶は、ＡＧパイプＣからのＭＡＢ要求を発行することができない（ＡＧパイプＡからの記憶フィルは、チキンビットで無効にすることができる）。また、アドレス生成パイプ上のオペレーションは、これが最も頻度の高いケースである（ＡＧ１／ＤＣ１）Ｌ１のデータパイプ７２４にバイパスされ��。スキッドバッファは、ＡＧパイプとＤＣパイプがミスアライン状態のオペレーションに対しても同期しているようにする。また、スキッドバッファは、一サイクルバイパスを避けるために使用される。つまり、ＤＣパイプは、一サイクルでＡＧパイプをトレイルし、ピッカが有効に流れるオペレーションを１つしか持ってない場合でも、参照によりこれがなされるようにする。当業者は、ＡＧ２／ＤＣ１は可能ではなく、ＡＧ３／ＤＣ１とＡＧ３／ＤＣ０が特別なバイパスのケースで、ＡＧ４／ＤＣ０以降は、μＴＡＧのヒットに基づいてＡＧ２の再選択の決定をする際にはピックロジックによりカバーされる。
【０１１１】
（データパイプ）
一実施形態では、３本のデータパイプ、０、１、２があり、ロードは、パイプ０又は１を流れることができ、記憶は、パイプ０又は２を流れることができる構成である。ＡＧパイプ０は、ＬＳピックが無い場合、ＤＣパイプ０にバイパスされ、パイプ間バイパスが無いパイプ１、２についても同様である（例えばＡＧ０がＤＣ１に）。ＬＳピックは、ＤＣパイプが前回のＳＣピックのミスアライン状態のサイクルによって塞がれない限り、ＳＣピックに優先する（つまり、ＡＧパイプバイパス）。ＡＧのＤＣパイプへのバイパスが１つのＤＣピック（１サイクルまたはミスアラインの場合２サイクル）とぶつかる場合には、ＡＧする。オペレーションは、スキッドバッファにて待機し、それからＤＣパイプにバイパスされる。
【０１１２】
以下のテーブルは、同じオペレーションＡＧとＤＣパイプフロー間の関係を示すものである。
【０１１３】
【表１】
2016534431.tif 000003
【０１１４】
（実施形態）
１．集積回路であって、
キャッシュメモリと、
ＯＰコードのロードオペレーションと記憶オペレーションとを容易にするための複数のパイプラインを有する実行ユニットであって、各パイプラインが、前記実行ユニットとキャッシュメモリとの間で、ＯＰコードによって示された命令を実行するように構成されている、実行ユニットと、
１つのサイクルでロードと記憶とを同時に行う前記複数のパイプラインに含まれるアドレス生成パイプライン用の命令のロード及び記憶キューにキューイングすることを要求するように構成された命令フェッチコントローラと、を備える集積回路。
【０１１５】
２．前記アドレス生成パイプラインは、少なくとも１つの専用ロードアドレス生成パイプラインと、ロード又は記憶オペレーション用の少なくとも１つのアドレス生成パイプラインと、を含む、実施形態１の集積回路。
【０１１６】
３．前記アドレス生成パイプラインは、少なくとも１つの専用記憶アドレス生成パイプラインと、ロード又は記憶オペレーション用の少なくとも１つのアドレス生成パイプラインと、を含む、実施形態１又は２の集積回路。
【０１１７】
４．前記アドレス生成パイプラインは、少なくとも１つの専用ロードアドレス生成パイプラインを含む、実施形態１〜３の何れかの集積回路。
【０１１８】
５．前記アドレス生成パイプラインは、３つのパイプラインを含み、最大２つのロード又は最大２つの記憶を有し、１つのサイクルで最大３つの命令が処理される、実施形態１〜４の何れかの集積回路。
【０１１９】
６．前記アドレス生成パイプラインは、ＯＰコードの優先順位付けを判定するためのマクロＴＡＧルックアップを含む、実施形態１〜５の何れかの集積回路。
【０１２０】
７．前記アドレス生成パイプラインは、ＯＰコードの優先順位付けを判定するためのマクロＴＡＧルックアップを含む、実施形態１〜６の何れかの集積回路。
【０１２１】
８．前記マクロＴＡＧルックアップによりミスアラインの状態と判定されたＯＰコードは、前記マクロＴＡＧルックアップによりスタッタされて次のサイクルで処理される、実施形態１〜７の何れかの集積回路。
【０１２２】
９．前記マクロＴＡＧルックアップにより次のサイクルでミスアラインの状態と判定されたＯＰコードは、スキッドバッファに送られる、実施形態１〜８の何れかの集積回路。
【０１２３】
１０．前記キャッシュメモリは、レベル２キャッシュである、実施形態１〜９の何れかの集積回路。
【０１２４】
１１．前記集積回路は、アドレス生成パイプでμＴＡＧルックアップを実行するように構成されている、実施形態１〜１０の何れかの集積回路。
【０１２５】
１２．前記μＴＡＧルックアップは、ウェイプリディクタ（ＷＰ）ルックアップである、実施形態１〜１１の何れかの集積回路。
【０１２６】
１３．前記集積回路は、アドレストランスレーションをアドレス生成（ＡＧＥＮ）パイプで実行するように構成されている、実施形態１〜１２の何れかの集積回路。
【０１２７】
１４．前記集積回路は、書き込み結合バッファ（ＷＣＢ）制御を実行するように構成されている、実施形態１〜１３の何れかの集積回路。
【０１２８】
１５．前記集積回路は、エイリアスサポートする他のフル連想μＴＡＧ構造を有する、実施形態１〜１４の何れかの集積回路。
【０１２９】
１６．複数のパイプラインを有する実行ユニットにおいて、ＯＰコードにより示された命令を処理する方法であって、
前記実行ユニットとキャッシュメモリとの間で、ＯＰコードで示された命令を処理することと、
１つのサイクルで同時にロード及び記憶を行う前記複数のパイプラインに含まれるアドレス生成パイプラインの命令をロード及び記憶キューにキューイングすることと、を含む方法。
【０１３０】
１７．ロードのキューイングは、ロード要求専用の１つのパイプラインと、ロード要求又は記憶要求を処理する１つのパイプラインと、を含む最大２つのパイプラインを使用する、実施形態１６の方法。
【０１３１】
１８．２つのロードのキューイングは、記憶要求専用の１つのパイプラインを含む最大３つのパイプラインを用いて１つの記憶要求のキューイングを行うことを含む、実施形態１６又は１７の方法。
【０１３２】
１９．記憶のキューイングは、記憶要求専用の１つのパイプラインと、ロード要求又は記憶要求を処理する１つのパイプラインと、を含む最大２つのパイプライン使用する、実施形態１６〜１８の何れかの方法。
【０１３３】
２０．２つの記憶のキューイングは、ロード要求専用の１つのパイプラインを含む最大３つのパイプラインを用いて１つの記憶要求のキューイングを行うことを含む、実施形態１６〜１９の何れかの方法。
【０１３４】
２１．前記キャッシュメモリは、レベル２キャッシュである、実施形態１６〜２０の何れかの方法。
【０１３５】
２２．アドレス生成パイプ上のμＴＡＧをルックアップすることを含む、実施形態１６〜２１の何れかの方法。
【０１３６】
２３．前記μＴＡＧルックアップは、ウェイプリディクタ（ＷＰ）ルックアップである、実施形態１６〜２２の何れかの方法。
【０１３７】
２４．アドレス生成（ＡＧＥＮ）パイプでのアドレストランスレーションを要求することを含む、実施形態１６〜２３の何れかの方法。
【０１３８】
２５．集積回路（ＩＣ）の設計又は製造を容易にする１つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読記憶媒体であって、
前記ＩＣは、
オペレーションコードのロードオペレーションと記憶オペレーションとを容易にする複数のパイプラインを有する実行ユニットであって、各パイプラインが、前記実行ユニットとキャッシュメモリとの間で、オペレーションコードで示された命令を実行するように構成されている、実行ユニットと、
１つのサイクルでロード及び記憶を同時に行う前記複数のパイプラインに含まれるアドレス生成パイプライン用の命令のロード及び記憶キューにキューイングすることを要求するように構成された命令フェッチコントローラと、を含む、コンピュータ可読記憶媒体。
【０１３９】
２６．前記命令は、装置の製造用に使用されるハードウェア記述言語（ＨＤＬ）命令である、実施形態２５のコンピュータ可読記憶媒体。
【０１４０】
２７．集積回路であって、
メモリと、
ＯＰコードのロードオペレーションと記憶オペレーションとを容易にするための複数のパイプラインを含む実行ユニットであって、各ＯＰコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、実行ユニットと、
最大４つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む集積回路。
【０１４１】
２８．前記ページテーブルウォーカは、６４エントリのフル連想ページウォークキャッシュ（ＰＷＣ）を含む、実施形態２７の集積回路。
【０１４２】
２９．トランスレーションルックアサイドバッファ−ミスアドレスバッファ（ＴＬＢＭＡＢ）を含む、実施形態２７又は２８の集積回路。
【０１４３】
３０．前記ＴＬＢＭＡＢは、アドレス、プロパティ及び未決のテーブルウォークの状態を保持する４つのエントリ選択可能キューを含む、実施形態２７〜２９の何れかの集積回路。
【０１４４】
３１．前記ページテーブルウォーカは、ＴＬＢＭＡＢキューにおいて最大４つのエントリを選択する、実施形態２７〜３０の何れかの集積回路。
【０１４５】
３２．前記ページテーブルウォーカは、ＴＬＢにアクセスし、物理アドレスと仮想アドレスとを対応付けしたウォークをＴＬＢに追加する、実施形態２７〜３１の何れかの集積回路。
【０１４６】
３３．前記ＴＬＢは、レベル１のＴＬＢ（ＤＴＬＢ）と、レベル２のＴＬＢ（Ｌ２ＴＬＢ）と、から構成された群から選択される、実施形態２７〜３２の何れかの集積回路。
【０１４７】
３４．前記ＤＴＬＢは、６４エントリのＤＴＬＢであり、
前記Ｌ２ＴＬＢは、１０２４エントリのＬ２ＴＬＢであり、
前記ページテーブルウォーカは、６４エントリのページウォークキャッシュ（ＰＷＣ）を含む、実施形態２７〜３３の何れかの集積回路。
【０１４８】
３５．実行ユニットとメモリとの間のＯＰコードのロードオペレーション及び記憶オペレーションであって、各ＯＰコードは、前記実行ユニットによって、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）の物理アドレスに対応する仮想アドレスを用いてアドレス可能である、ロードオペレーション及び記憶オペレーションを容易にすることと、
最大４つのテーブルウォークを同時にサポートするパイプラインページテーブルウォーカを提供することを含む方法。
【０１４９】
３６．アドレス、プロパティ及び未決のテーブルウォークの状態を保持するトランスレーションルックアサイドバッファ−ミスアドレスバッファ（ＴＬＢＭＡＢ）の４つのエントリ選択可能キューから最大４つのウォーカタスクを選択する、実施形態３５の方法。
【０１５０】
３７．前記ページテーブルウォーカが、ＴＬＢにアクセスし、物理アドレスと仮想アドレスとを対応付けしたウォークをＴＬＢに追加することを含む、実施形態３５又は３６の方法。
【０１５１】
３８．前記ＴＬＢは、レベル１のＴＬＢ（ＤＴＬＢ）と、レベル２のＴＬＢ（Ｌ２ＴＬＢ）と、から構成された群から選択される、実施形態３５〜３７の何れかの方法。
【０１５２】
３９．前記ＤＴＬＢは、６４エントリのＤＴＬＢであり、
前記Ｌ２ＴＬＢは、１０２４エントリのＬ２ＴＬＢであり、
前記ページテーブルウォーカは、６４エントリのページウォーカキャッシュ（ＰＷＣ）を含む、実施形態３５〜３８の何れかの方法。
【０１５３】
４０．集積回路（ＩＣ）の設計又は製造を容易にする１つ以上のプロセッサにより実行される命令セットを記憶する有形のコンピュータ可読憶媒体であって、
前記ＩＣは、
ＯＰコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインを含む実行ユニットであって、各ＯＰコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、実行ユニットと、
最大４つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含むコンピュータ可読記憶媒体。
【０１５４】
４１．前記命令は、装置の製造に使用されるハードウェア記述言語（ＨＤＬ）命令である、実施形態４０のコンピュータ可読記憶媒体。
【０１５５】
４２．トランスレーションルックアサイドバッファ−ミスアドレスバッファ（ＴＬＢＭＡＢ）を含む、実施形態４０又は４１のコンピュータ可読記憶媒体。
【０１５６】
４３．前記ＴＬＢＭＡＢは、アドレス、プロパティ及び未決のテーブルウォークの状態を保持する４つのエントリ選択可能キューを含む、実施形態４０〜４２の何れかのコンピュータ可読記憶媒体。
【０１５７】
４４．前記ページテーブルウォーカは、ＴＬＢＭＡＢキューにおいて最大４つのエントリを選択する、実施形態４０〜４３の何れかのコンピュータ可読記憶媒体。
【０１５８】
４５．前記ページテーブルウォーカは、ＴＬＢにアクセスし、物理アドレスと仮想アドレスとを対応付けしたウォークをＴＬＢに追加する、実施形態４０〜４４の何れかのコンピュータ可読記憶媒体。
【０１５９】
４６．前記ＴＬＢは、レベル１のＴＬＢ（ＤＴＬＢ）と、レベル２のＴＬＢ（Ｌ２ＴＬＢ）と、から構成された群から選択される、実施形態４０〜４５の何れかのコンピュータ可読記憶媒体。
【０１６０】
４７．前記ＤＴＬＢは、６４エントリのＤＴＬＢであり、
前記Ｌ２ＴＬＢは、１０２４エントリのＬ２ＴＬＢであり、
前記ページテーブルウォーカは、６４エントリのページウォーカキャッシュ（ＰＷＣ）を含む、実施形態４０〜４６の何れかのコンピュータ可読記憶媒体。
【０１６１】
なお、本明細書の開示に基づき多数の変形が可能である。上記では特定の組み合わせにおいて構成や要素を説明したが、各構成や要素は、他の構成や要素なしに単独で使用されてもよいし、他の構成や要素を有し又は有しない様々な組み合わせで使用可能である。
【０１６２】
提供された方法は、汎用コンピュータ、プロセッサ又はプロセッサコアに実装されてもよい。好適なプロセッサの例としては、汎用プロセッサ、専用プロセッサ、従来型プロセッサ、デジタル信号プロセッサ（ＤＳＰ）、複数のマイクロプロセッサ、ＤＳＰコアに関連した１つ以上のマイクロプロセッサ、コントローラ、マイクロコントローラ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）回路、その他の全てのタイプの集積回路（ＩＣ）、及び／又は、状態機械が挙げられる。かかるプロセッサは、処理されたハードウェア記述言語（ＨＤＬ）命令、及び、ネットリストを含む他の中間データ（コンピュータ可読媒体に記録可能な命令）の結果を使用して、製造プロセスを構成して製造されたものでもよい。かかるプロセスの結果は、上述した実施形態の態様が実装されているプロセッサを製造する半導体製造プロセスで使用されるマスクワークであってもよい。
【０１６３】
本明細書で提供する方法やフローチャートは、非一時的なコンピュータ可読記憶媒体に記憶された、汎用コンピュータやプロセッサにより実行されるコンピュータプログラム、ソフトウェア又はファームウェアとして実施されてもよい。非一時的なコンピュータ可読記憶媒体の例としては、読取専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、レジスタ、キャッシュメモリ、半導体メモリ装置、内蔵ハードディスクやリムーバブルディスク、ＣＤ−ＲＯＭディスクやデジタル多用途ディスク（ＤＶＤ）等の光磁気ディスク等の磁気メディアが挙げられる。
【図１】
2016534431.tif 000004
【図２】
2016534431.tif 000005
【図３】
2016534431.tif 000006
【図４】
2016534431.tif 000007
【図５】
2016534431.tif 000008
【図６】
2016534431.tif 000009
【図７】
2016534431.tif 000010
【手続補正書】
【提出日】平成28年8月8日(2016.8.8)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリと、
順序付けされておらず（ＯＯＯ）割り当てされていない、順序付けされていないロードキュー（ＬＤＱ）であって、サイクル毎に２つピックを選択するＬＤＱを有し、前記メモリからのロードのキューイングを行う、パイプライン化された実行ユニットを備え、
前記ＬＤＱは、順序に依らずに完了したロードをトラッキングし、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにするロード順序キュー（ＬＯＱ）を含む、
集積回路。
【請求項２】
前記ＬＤＱは、前記ＬＯＱエントリを生成するためのロード間インターロック（ＬＴＬＩ）コンテンツアドレス可能メモリ（ＣＡＭ）を備える、請求項１の集積回路。
【請求項３】
前記ＬＴＬＩ  ＣＡＭは、同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築する、請求項２の集積回路。
【請求項４】
前記ＬＴＬＩ  ＣＡＭは、同じアドレスについて有効なロードのみを検討する、請求項２の集積回路。
【請求項５】
前記ＬＴＬＩ  ＣＡＭは、キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにする、請求項２の集積回路。
【請求項６】
前記ＬＯＱは、順序を維持するために、必要に応じてロードを再同期する、請求項２の集積回路。
【請求項７】
前記ＬＯＱは、トラックされたアドレスがマッチした場合にエントリを結合させることによって、キューサイズを小さくする、請求項２の集積回路。
【請求項８】
前記実行ユニットは、
オペレーションコードのロードオペレーション及び記憶オペレーションを容易にするための複数のパイプラインであって、各オペレーションコードは、キャッシュトランスレーションルックアサイドバッファ（ＴＬＢ）において前記メモリからの物理アドレスに対応する仮想アドレスを用いて、前記実行ユニットによりアドレス可能である、複数のパイプラインと、
最大４つの同時テーブルウォークをサポートするパイプラインページテーブルウォーカと、を含む、請求項１の集積回路。
【請求項９】
順序付けされておらず（ＯＯＯ）割り当てされていないロードキュー（ＬＤＱ）を有するパイプライン化された実行ユニットに対して、順序付けされていないロードをキューイングすることと、
サイクル毎に最大２つのピックを選択して、メモリからロードをキューイングすることと、
ロード順序キュー（ＬＯＱ）を用いて、順序に依らずに完了したロードをトラッキングして、ロードの値を順にバインドしたかのように同じアドレスにロードが現れるようにすることと、を含む、
方法。
【請求項１０】
ロード間インターロック（ＬＴＬＩ）コンテンツアドレス可能メモリ（ＣＡＭ）を用いて、前記ＬＯＱエントリを生成することを含む、請求項９の方法。
【請求項１１】
前記ＬＯＱは、最大１６のエントリを含む、請求項９の方法。
【請求項１２】
同じアドレスについてロードのインタラクションを行うためのエイジ関係を再構築することを含む、請求項１０の方法。
【請求項１３】
同じアドレスについて有効なロードのみを検討することを含む、請求項１０の方法。
【請求項１４】
キャッシュ不能な同じアドレスへのロードについてフェール状態を生成し、キャッシュ不能なロードが順に保たれるようにすることを含む、請求項１０の方法。
【請求項１５】
順序を維持するために、必要に応じてＬＯＱのロードを再同期することを含む、請求項１０の方法。
【国際調査報告】
2016534431.tif 000011
2016534431.tif 000012