(57)【要約】  セキュアなメモリの再パーティショニング技術が説明される。プロセッサは、プロセッサコアとメインメモリとの間に結合されたプロセッサコアおよびメモリコントローラを含む。メインメモリは、複数のセキュアなページまたは複数のセキュアでないページに変換可能である、変換可能なページのセクションを含む、メモリ範囲を含む。ページ変換命令に応答して、プロセッサコアは、変換されるメモリ範囲内の変換可能なページを命令から判断し、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換可能なページを変換する。また、メモリ範囲は、セクション変換命令に応答して変換可能であるハードウェアの保留済みセクションを含み得る。
2016536720.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのプロセッサコアにより、ページ変換命令をデコードして、前記プロセッサコアに結合されたメインメモリにおいてメモリ範囲内で変換可能なページを変換する段階と、
前記プロセッサコアにより、前記ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように前記変換可能なページを変換する段階とを備え、
前記メモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換可能である、複数の変換可能なページのセクションを含む、方法。
【請求項２】
前記ページ変換命令が第１の変換命令である場合に、前記プロセッサコアにより、セキュアでないページからセキュアなページに前記変換可能なページを変換する段階と、
前記ページ変換命令が第２の変換命令である場合に、前記プロセッサコアにより、前記セキュアなページから前記セキュアでないページに前記変換可能なページを変換する段階とを更に備える、請求項１に記載の方法。
【請求項３】
前記第１の変換命令に応答して、
前記変換可能なページのアドレスが、セキュアなページに変換可能なページを示すことを保証する段階と、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアでないようにセットされることを検証する段階と、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアになるようにセットする段階と、
前記プロセッサコアに対する前記アドレスの変換を無効化する段階とを更に備える、請求項２に記載の方法。
【請求項４】
前記第２の変換命令に応答して、
前記変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証する段階と、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアになるようにセットされることを検証する段階と、
前記ページキャッシュマップエントリの有効ビットが無効にセットされることを検証する段階と、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアでないようにセットする段階と、
前記プロセッサコアに対する前記アドレスの変換を無効化する段階とを更に備える、請求項２に記載の方法。
【請求項５】
前記メモリ範囲は、ハードウェアの保留済みセクションを更に備え、
前記方法は、
前記プロセッサコアにより、セクション変換命令をデコードして、前記メモリ範囲内で前記ハードウェアの保留済みセクションを変換する段階と、
前記セクション変換命令を実行して、前記ハードウェアの保留済みセクションを、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように変換する段階とを更に備える、請求項２に記載の方法。
【請求項６】
前記プロセッサコアにより、前記セクション変換命令が第３の変換命令である場合に、セキュアでないセクションからセキュアなセクションに前記ハードウェアの保留済みセクションを変換する段階と、
前記セクション変換命令が第４の変換命令である場合に、前記プロセッサコアにより、前記セキュアなセクションから前記セキュアでないセクションに前記ハードウェアの保留済みセクションを変換する段階とを更に備える、請求項５に記載の方法。
【請求項７】
前記第３の変換命令に応答して、
前記第３の変換命令のアドレスが前記ハードウェアの保留済みセクションにおけるページを示すことを保証する段階と、
前記メモリ範囲の前記ハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証する段階と、
前記プロセッサコアと前記メインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）に、前記ハードウェアの保留済みセクションのためのリプレイ保護フィルタをインストールするように命令する段階と、
前記ＭＥＥに、前記ハードウェアの保留済みセクションを開始状態にするように命令する段階とを更に備える、請求項６に記載の方法。
【請求項８】
前記第４の変換命令に応答して、
前記第４の変換命令のアドレスが、前記ハードウェアの保留済みセクションにおけるページを示すことを保証する段階と、
前記ハードウェアの保留済みセクションに対応する前記セクションにおける前記変換可能なページがセキュアでない状態にあることを保証する段階と、
前記ＭＥＥに、前記ハードウェアの保留済みセクション用の前記リプレイ保護フィルタをアンインストールするように命令する段階と、
前記ＭＥＥに、内部キャッシュからの前記ハードウェアの保留済みセクションの複数のコンテンツをフラッシュさせるように命令する段階とを更に備える、請求項７に記載の方法。
【請求項９】
コンピューティングデバイス上で実行されることに応答して、前記コンピューティングデバイスに請求項１〜８のいずれか１項に記載の方法を実行させる複数の命令を備えた、少なくとも１つのコンピュータ可読媒体。
【請求項１０】
メモリデバイスと
メモリ暗号化エンジン（ＭＥＥ）を有するプロセッサとを備え、
前記プロセッサは、請求項１〜８のいずれか１項に記載の方法を実行するように構成される、システム。
【請求項１１】
請求項１〜８のいずれか１項に記載の方法を更に備える、請求項１０に記載のシステム。
【請求項１２】
複数の命令を実行する複数の演算器を有するプロセッサと、
前記プロセッサに結合されたメモリデバイスとを備え、
前記メモリデバイスは、コードメモリおよびデータメモリを格納するように動作可能であり、複数のセキュアなページまたは複数のセキュアでないページに変換可能である複数の変換可能なページのセクションを含むメモリ範囲を有し、
前記プロセッサは、
ページ変換命令をデコードして、前記メモリ範囲内で変換可能なページを変換し、
前記ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように前記変換可能なページを変換するように構成される、システム。
【請求項１３】
前記ページ変換命令は、第１の変換命令であり、
前記プロセッサは、前記第１の変換命令に応答して、セキュアでないページからセキュアなページに前記変換可能なページを変換し、
前記プロセッサは、前記第１の変換命令に応答して、
前記変換可能なページのアドレスがセキュアなページに変換可能なページを示すことを保証することと、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアでないようにセットされるこをと検証することと、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアになるようにセットすることと、
プロセッサコアに対する前記アドレスの変換を無効化することを実行する、請求項１２に記載のシステム。
【請求項１４】
前記ページ変換命令は、第２の変換命令であり、
前記プロセッサは、前記第２の変換命令に応答して、セキュアなページからセキュアでないページに前記変換可能なページを変換し、
前記プロセッサは、前記第２の変換命令に応答して、
前記変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証することと、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアになるようにセットされることを検証することと、
前記ページキャッシュマップエントリの有効ビットが無効にセットされることを検証することと、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアでないようにセットすることと、
プロセッサコアに対する前記アドレスの変換を無効化することとを実行する、請求項１２に記載のシステム。
【請求項１５】
前記メモリ範囲は、ハードウェアの保留済みセクションを更に含み、
前記プロセッサは、セクション変換命令に応答して、セクション変換命令をデコードして、前記ハードウェアの保留済みセクションを変換し、
前記セクション変換命令を実行して、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように前記ハードウェアの保留済みセクションを変換する、請求項１２に記載のシステム。
【請求項１６】
前記プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）を更に備え、
セクション変換命令は、第３の変換命令であり、
前記プロセッサは、前記第３の変換命令に応答して、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換し、
前記プロセッサは、前記第３の変換命令に応答して、
前記第３の変換命令のアドレスが、前記ハードウェアの保留済みセクションにおけるページを示すことを保証することと、
前記メモリ範囲の前記ハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証することと、
前記ＭＥＥに、前記ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするように命令することと、
前記ＭＥＥに、前記ハードウェアの保留済みセクションを開始状態にするように命令することとを実行する、請求項１４に記載のシステム。
【請求項１７】
前記プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）を更に備え、
セクション変換命令は、第４の変換命令であり、
前記プロセッサは、前記第４の変換命令に応答して、セキュアなセクションからセキュアでないセクションにハードウェアの保留済みセクションを変換し、
前記プロセッサは、前記第４の変換命令に応答して、
前記第４の変換命令のアドレスが、前記ハードウェアの保留済みセクションのページを示すことを保証することと、
前記ハードウェアの保留済みセクションに対応する前記セクションにおける複数の前記変換可能なページが、セキュアでない状態にあることを保証することと、
前記ＭＥＥに、前記ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするように命令することと、
前記ＭＥＥに、内部キャッシュから前記ハードウェアの保留済みセクションの複数のコンテンツをフラッシュするように命令することとを実行する、請求項１４に記載のシステム。
【請求項１８】
プロセッサの複数の演算器と、
ページ変換命令に応答して、１または複数のプロセッサに結合されたメインメモリにおけるセキュアなメモリ範囲内で第１の変換可能なページを識別するための手段と
セキュアなページまたはセキュアでないページのうち少なくとも１つになるように前記第１の変換可能なページを変換するための手段とを備え、
前記セキュアなメモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換され得る複数の変換可能なページの第１のセクションを含む、装置。
【請求項１９】
請求項１〜８のいずれか１項に記載の方法および請求項１２〜１７のいずれか１項に記載のシステムを更に備える、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータシステムに関し、より具体的にはコンピュータシステムのメモリに格納されたデータの保護に関する。
【０００２】
最新のプロセッサは、メモリ内の機密データをハードウェアおよびソフトウェア攻撃の双方から保護するように設計されている。いくつかのプロセッサは、暗号化、整合性およびリプレイ保護の暗号メカニズムを提供する。メモリ暗号化は、メモリ常駐データの機密性を保護する。他方、整合性保護は、攻撃者がメモリにおいていずれかの隠された修正を暗号化テキスト（すなわち、暗号化されないデータであるプレインテキストとは対照的に、暗号化データ）に行うことを阻止し、リプレイ保護は、暗号化テキストの任意の未検出の一時的置換を除去する。そのような保護が存在しない場合、システムへの物理的アクセスを有する攻撃者は、複数のデータラインのスナップショットを記録し、後の時点でリプレイし得る。
【図面の簡単な説明】
【０００３】
【図１】一実施形態による、セキュアなメモリを実装するためのメモリ暗号化エンジン（ＭＥＥ）を実装するコンピューティングシステムを図示するブロック図である。
【図２】一実施形態による、複数のメモリ範囲を含む柔軟な保護範囲２００の概念的なレイヤを図示する。
【図３】一実施形態による、柔軟な保護範囲におけるメモリの複数の変換可能なセクションおよびメモリの複数の変換不可能なセクションを図示する。
【図４Ａ】一実施形態による、柔軟な保護範囲の変換可能なページの複数の状態遷移を図示する状態図である。
【図４Ｂ】一実施形態による、柔軟な保護範囲の変換可能なセクションの複数の状態遷移を図示する状態図である。
【図５Ａ】一実施形態による変換可能なページにおけるセキュアなメモリの再パーティショニングの方法のフロー図である。
【図５Ｂ】一実施形態による変換可能なセクションにおけるセキュアなメモリの再パーティショニングの方法のフロー図である。
【図６Ａ】一実施形態による、インオーダパイプラインおよびレジスタリネーミング段、アウトオブオーダ発行／実行パイプラインを図示するブロック図である。
【図６Ｂ】一実施形態による、セキュアなメモリの再パーティショニングを実装するプロセッサ用のマイクロアーキテクチャを図示するブロック図である。
【図７】一実施形態による、セキュアなメモリの再パーティショニングを実行するロジック回路を含むプロセッサ用のマイクロアーキテクチャのブロック図を図示する。
【図８】一実装による、コンピュータシステムのブロック図である。
【図９】別の実装による、コンピュータシステムのブロック図である。
【図１０】一実装によるシステムオンチップのブロック図である。
【図１１】コンピューティングシステムのブロック図の別の実装を図示する。
【図１２】コンピューティングシステムのブロック図の別の実装を図示する。
【発明を実施するための形態】
【０００４】
セキュアなメモリの再パーティショニング技術が説明される。プロセッサは、プロセッサコアおよびプロセッサコアとメインメモリとの間に結合されたメモリコントローラを含む。メモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換され得る、複数の変換可能なページのセクションを含む。プロセッサ上で実行されるソフトウェアは、変換されるメインメモリ中のページを識別し、ページを変換するページ変換命令を用い得る。ページ変換命令に応答して、プロセッサコアは、変換されるメモリ範囲内の変換可能なページを命令から判断し、セキュアなページまたはセキュアでないページになるように変換可能なページを変換する。変換され得るページを識別することは、システムソフトウェア（例えばＯＳまたはＶＭＭ）の役割である。例えば、ＯＳがセキュアでないページを必要とする場合、セキュアなページを識別し（セキュアでないページが利用可能でないとき）、セキュアなページにページ変換命令を実行する。また、メモリ範囲は、本明細書において説明されるように、セクション変換命令に応答して変換され得る複数の変換可能なセクション（本明細書においてハードウェアの保留済みセクションとも称される）を含み得る。
【０００５】
メモリ暗号化は、メモリ常駐データの機密性を保護する。主として、メモリ暗号化は、攻撃者が複数のデータラインがプロセッサダイ上を動き、離れるときにサイレントに複数のデータラインを観察しようとする複数の受動的攻撃に対して保護するように設計されている。いくつかのプロセッサは、データがメモリの保護領域に格納される前に機密データを暗号化する、暗号化モジュールを含む。保護領域を読み取るメモリ上で、データラインは、プロセッサにフィードされる前に復号化される。暗号化および復号化アルゴリズムは、ユーザにより必要とされるセキュリティレベルに基づいて選択され得る。
【０００６】
本明細書において説明される複数の実施形態は、本明細書においてセキュアなエンクレーブ（ＳＥ）と称されるセキュアなコンテナを生成するのに用いられ得る。ＳＥは、第三者の秘密をハードウェアおよびソフトウェア攻撃の双方から保護するように設計される。ＳＥは、プラットフォームメモリに常駐する場合に、エンクレーブシークレットが暗号化されて格納されることを保証することにより、エンクレーブシークレットの機密性を保護し得る。ハードウェアの複数の攻撃からの完全な保護を提供するべく、ＳＥは、整合性保護およびリプレイ保護を提供する必要がある。そのような保護が存在しない場合、システムへの物理的アクセスを有する攻撃者は、複数のエンクレーブキャッシュラインのスナップショットを記録し、後の時点でリプレイし得る。これらの保護を得るべく、ＳＥは、メモリ暗号化エンジン（ＭＥＥ）を使用し、これは暗号化、整合性およびリプレイ保護の暗号メカニズムを提供する。ＭＥＥは、メモリ内にあるときに複数のセキュアなページに暗号機能を実装するハードウェアユニットである。より具体的には、ＭＥＥは、セキュアなページに属する場合にプロセッサから追い出される任意のキャッシュラインを暗号化し得、ＭＥＥは、複数のセキュアなページの整合性保護およびリプレイ保護も提供する。従来の戦略は、ブート時間の際のプラットフォームメモリのある範囲を静的に保留し、このメモリの範囲のみに暗号保護を強制する。このセキュアなメモリ範囲は、エンクレーブページキャッシュ（ＥＰＣ）と称される。複数のエンクレーブメモリ要求は、ＥＰＣから満たされる。
【０００７】
メモリのスタティックパーティショニングは、パーティショニングの複数の要求が経時的に変更する場合に、複数の問題を発生し得る。一例として、日中にトランザクション処理を実行し、夜間にムービーストリーミングに切り替えるデータセンタは、データセンタに実行されるこれらのワークロードに基づいて、セキュアなメモリに対して非常に異なる要求を有し得る。一実装において、１２８ＭＢのシステムメモリがＥＰＣとして保留される。しかし、セキュアな複数のサーバアプリケーションがＳＥを効率的に用いることを可能にするべく、大きなＥＰＣが必要とされるであろう。現在のスタティックパーティショニングにおいては、これは、セキュアでない使用では取り戻され得ないＥＰＣとして保留される、システムメモリのマルチギガバイトのパーティションを必要とする。更に、制限されたシステムメモリを用いる複数のモバイルデバイスは、セキュアなメモリがセキュアでない使用において取り戻されることを可能にするべく、メモリのダイナミックな再パーティショニングを必要とし得る。
【０００８】
本明細書において説明される複数の実施形態は、柔軟なＥＰＣアーキテクチャを提供し、これはオペレーティングシステム（ＯＳ）にアクセス可能で、ページ細分性（もしくはセクション細分性）の複数の変換命令を提供する。柔軟なＥＰＣアーキテクチャは、セキュアであるか、またはセキュアでない可能性があるプラットフォーム上の変換可能なメモリとしてＥＰＣを規定し、変換可能なメモリを管理する新しいリング０リーフ関数等、複数の新しい保護メカニズムを導入する。本明細書において説明され、柔軟なＥＰＣを用いる複数の実施形態は、ＥＰＣメモリのダイナミックな再パーティショニングを可能にし、大量のＥＰＣメモリを必要とするサーバおよび限定的なメモリシステムを用いるモバイルプラットフォームにおけるＳＥ実装をより効率的なものにする。
【０００９】
図１は、一実施形態による、セキュアなメモリを実装するためのメモリ暗号化エンジン（ＭＥＥ）１５０を実装するコンピューティングシステム１００を図示するブロック図である。複数のセキュアなメモリ範囲（変換可能な範囲とも称される）は、基本入出力システム（ＢＩＯＳ）によりブート時間にセットアップされ得る。プロセッサ１１０は、本明細書において説明されるように、オペレーティングシステム（ＯＳ）または仮想マシンモニタ（ＶＭＭ）等のプロセッサ１１０上で実行されるソフトウェアにより誘導されるものとして、これらの変換可能な範囲に複数のページを変換する、複数の命令を実行する。また、ＭＥＥにより与えられるメモリ保護は、プロセッサが機密性、整合性およびリプレイ保護を提供する命令を実行する必要がないという意味でトランスペアレントである。例えば、セキュアなページに属する任意のキャッシュラインが追い出されると、ＭＥＥは、これらの保護を当該キャッシュラインに自動的に提供する。プロセッサ１１０は、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ノートブックコンピュータ、携帯情報端末（ＰＤＡ）、サーバ、ワークステーション、携帯電話、モバイルコンピューティングデバイス、スマートフォン、インターネットアプライアンスまたはその他のタイプのコンピューティングデバイスを含むが、これらに限定されないシステムにおいて用い得る。別の実施形態において、プロセッサ１１０は、システムオンチップ（ＳｏＣ）システムにおいて用いられ得る。
【００１０】
コンピューティングシステム１００は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なＰＥＮＴＩＵＭ（登録商標）ＩＩＩ（商標）、ＰＥＮＴＩＵＭ（登録商標）４（商標）、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ、ＸＳｃａｌｅ（商標）および／またはストロングアーム（商標）マイクロプロセッサに基づいた複数の処理システムを表すが、複数の他のシステム（他の複数のマイクロプロセッサ、エンジニアリングワークステーション、セットトップボックス等を有するＰＣを含む）も用いられてもよい。一実施形態において、サンプルシステム１００は、ワシントン、レドモンドのマイクロソフト社から入手可能なウィンドウズ（登録商標）オペレーティングシステムのバージョンを実行するが、他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）やリナックス（登録商標））、エンベデッドソフトウェア、および／またはグラフィックスユーザインターフェースも用いられてもよい。従って、本発明の複数の実施形態は、いかなる具体的なハードウェア回路およびソフトウェアの組み合わせにも限定されない。
【００１１】
プロセッサ１１０は、システムの複数の命令を実行する１または複数のコア１４０を含む。プロセッサコア１４０は、複数の命令をフェッチするプリフェッチロジック、複数の命令をデコードするデコードロジック、複数の命令を実行する実行ロジック等を含むが、これらに限定されない。プロセッサ１１０は、複数の命令および／またはデータをキャッシュするキャッシュ１６０を含む。キャッシュ１６０は、レベル１、レベル２およびラストレベルキャッシュ（ＬＬＣ）１６５、またはプロセッサ１１０内のその他の構成のキャッシュメモリを含むが、これらに限定されない。別の実施形態において、コンピューティングシステム１００は、プロセッサ１１０等のコンポーネントを含み、本明細書において説明される実施形態によるデータを処理する複数のアルゴリズムを実行するロジックを含む実行ユニットを使用する。
【００１２】
メモリコントローラ１３０は、プロセッサ１１０が揮発性メモリおよび／または不揮発性メモリを含むメインメモリ１２０にアクセスして通信することを可能にする、複数の機能を実行する。一実施形態において、メモリコントローラ１３０は、ＭＥＥ１５０を含むシステムエージェント１８０に結合される。一実施形態において、ＭＥＥ１５０は、ラストレベルキャッシュ１６５とメモリコントローラ１３０との間に位置し、メインメモリ１２０の保護領域１２５を出入りする複数のデータラインの暗号化、復号化および認証を実行する。ＭＥＥ１５０は、プロセッサダイ上に位置するが、メモリ１２０は、プロセッサダイから離れて位置する。
【００１３】
本発明の一実施形態によれば、ＭＥＥ１５０は、保護領域１２５に対するアクセスレイテンシを改善するべく、並列に複数のメモリ読み取り要求を処理する。ＭＥＥ１５０は、時間的および空間的にデータラインに一意な暗号化シードを必要とするカウンタモードの暗号化を実行する。空間的な一意性は、アクセスされるデータラインのアドレスを用いることにより実現され得るが、時間的一意性は、データラインのバージョンとして機能するカウンタを用いることにより実現され得る。一実施形態において、ＭＥＥ１５０は、ツリーのルートのみがオンダイに格納され、ルートオブトラスト（すなわち、信頼境界）を形成する反対木構造を用いて、メインメモリ１２０の保護領域１２５における複数のデータラインも保護する。複数のデータラインのバージョンは、カウンタツリー構造の一部である。あるいは、他の複数の保護メカニズムがリプレイ保護に用いられ得る。例えば、セキュアなキャッシュラインに関連するメッセージ認証コード（ＭＡＣ）は、オンダイに格納され得る。成功裏のリプレイ攻撃は、データラインおよびその関連するＭＡＣの双方をリプレイする必要があるからである。しかし、この解決策は非常に高いオンダイストレージ要求を有する。
【００１４】
以下の説明において、以下の用語がメインメモリ１２０に用いられる。メインメモリ１２０は、１または複数の保護領域１２５（本明細書において、セキュアなメモリ範囲またはＭＥＥ領域とも称される）を含む複数の領域に分割される。各領域は、複数のセクション、ページの細分性で変換可能なＥＰＣセクション、セクションの細分性で変換可能なリプレイ保護および整合性メタデータのハードウェアの保留済みセクション、および実装内部にあり、変換に利用可能でない別のハードウェアの保留済みセクションを有する。一実施形態において、保護領域（ＭＥＥ領域）は、第１の範囲であってもよく、または複数の保護領域（ＭＥＥ領域）は、複数の第１の範囲のセットであってもよい。別の実施形態において、メモリ全体は、複数のＭＥＥ領域に分割されたフレキシブルメモリとして構成され得る。起動時に、メモリ全体はセキュアでないものとして起動し、システムソフトウェアは、それをシステム上でセキュアなメモリに対する要求により誘導されるものとして変換する。本明細書において説明されるように、メインメモリ１２０は、複数のセキュアなＭＥＥ領域を含み得、複数のセキュアでないメモリ範囲も含み得る。
【００１５】
一実施形態において、プロセッサ１１０は、１または複数のコア１４０を含む。プロセッサコア１４０上で実行されるソフトウェア（例えばＯＳまたはＶＭＭ）は、メインメモリ１２０内の（保護領域１２５とラベリングされた）メモリ範囲における変換可能なページを識別し、変換可能なページを変換するページ変換命令を用い得る。ページ変換命令に応答して、プロセッサコア１４０はページ変換命令から、保護領域１２５内のどの変換可能なページを変換するか判断し、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換可能なページを変換する。一実施形態において、ページ変換命令は、第１の変換命令または第２の変換命令のうちの１つである。第１の変換命令に応答して、プロセッサコア１４０は、セキュアでないページからセキュアなページに変換可能なページを変換する。第２の変換命令に応答して、プロセッサコア１４０は、セキュアなページからセキュアでないページに変換可能なページを変換する。例えば、動作中に、ページの変換は、特定の時間にメモリシステム上で要求により誘導され得る。例えば、実行される多数のエンクレーブゆえにセキュアでないメモリが不足しそうになっており、メモリをエンクレーブでないアプリケーションに割り当てる必要があるとＯＳ／ＶＭＭが判断する場合、ＯＳ／ＶＭＭは、セキュアなものからセキュアでないものに変換することを希望する複数のページを決定し、本明細書において説明される変換の処理を実行する。本明細書における説明は、セキュアでないものとセキュアなものを互いに交換可能に用いることに留意されたい。
【００１６】
一実施形態において、プロセッサコア１４０は、セキュアでないものからセキュアなものに変換する第１の変換命令に応答して、１）命令に対するパラメータとして渡されたページのアドレスがセキュアなページに変換可能なページを示すことを保証することと、２）変換可能なページに対応するページキャッシュマップエントリのセキュアなビット（図示せず）がセキュアでないものにセットされることを検証することと、３）プロセッサ１１０のキャッシュ１６０から複数のキャッシュ済みページコンテンツを無効化することと、４）ページキャッシュマップエントリのセキュアなビットをセキュアになるようにセットすることと、５）プロセッサコア１４０のアドレスに対する変換を無効化することとを実行する。２つのスレッドを有するハイパースレッドプロセッサにおいては、２つのロジックプロセッサが存在することに留意されたい。この場合、無効化される変換は、現在のロジックプロセッサのアドレスに対するものである。以下の説明は、プロセッサコアの変換が現在のロジックプロセッサのアドレスに対する変換であり得ることを示すことに留意されたい。
【００１７】
一実施形態において、プロセッサコア１４０は、セキュアなものからセキュアでないものに変換する第２の命令に応答して、１）命令に対するパラメータとして渡されたページのアドレスがセキュアでないページに変換可能なページを示すことを保証することと、２）変換可能なページに対応するページキャッシュマップエントリのセキュアなビット（図示せず）がセキュアなものにセットされることを検証することと、３）ページキャッシュマップエントリの有効ビットが無効にセットされていることを検証し、ページがエンクレーブに現在マッピングされているか否かを有効ビットが示すことと、４）プロセッサのキャッシュから複数のキャッシュ済みページコンテンツを無効化することと、５）ページキャッシュマップエントリのセキュアなビットをセキュアでなくなるようにセットし、プロセッサコアのアドレスに対する変換を無効化することとを実行する。
【００１８】
更なる実施形態において、セキュアなメモリ範囲（保護領域１２５）は、本明細書においてハードウェアの保留済みセクションと称される第２のセクションを更に含む。ハードウェアの保留済みセクションは、変換可能なセクションである。メインメモリ１２０は、変換可能でない別のハードウェアの保留済みセクションも含んでもよい。プロセッサコア１４０は、セクション変換命令に応答して、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるようにハードウェアの保留済みセクションを変換するように構成される。一実施形態において、セクション変換命令は、第３の変換命令または第４の変換命令のうちの１つである。セキュアでないものからセキュアなものに変換する第３の変換命令に応答して、プロセッサコア１４０は、ハードウェアの保留済みセクションをセキュアでないセクションからセキュアなセクションに変換する。セキュアなものからセキュアでないものに変換する第４の変換命令に応答して、プロセッサコア１４０は、ハードウェアの保留済みセクションをセキュアなセクションからセキュアでないセクションに変換する。ハードウェアの保留済みセクションは、セキュアなものに変換されると、当該セキュアなメモリ範囲（すなわち、特定のＭＥＥ領域）に対するレプレイ保護および整合性メタデータを格納する。ソフトウェア（ＯＳ／ＶＭＭ）は、変換する領域についての決定を担当する。決定されると、ＯＳ／ＶＭＭは、セクション変換命令を実行して、セクションをセキュアであるか、またはセキュアでないものに変換する。プロセッサコア１４０は、変換するセクションの任意のページのアドレスを必要とする。
【００１９】
一実施形態において、プロセッサコア１４０は、セキュアでないものからセキュアなものにハードウェアの保留済みセクションを変換する第３の命令に応答して、１）命令に対するパラメータとして渡されたページのアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証することと、２）ハードウェアの保留済みセクションが変換可能で、現在セキュアでないものとしてセットされることを保証することと、３）ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするようにＭＥＥに命令することと、４）ハードウェアの保留済みセクションを開始状態にするようにＭＥＥに命令することとを実行する。リプレイ保護フィルタ（例えば、リプレイ保護ツリーフィルタ）は、リプレイ保護メカニズムとは異なることに留意されたい。例えば、リプレイ保護ツリーは、整合性およびリプレイ保護を提供するのに用いられるメタデータを含む。そのオペレーションの一部として、ＭＥＥは、内部キャッシュにおいてこのメタデータをキャッシュする。しかし、同一のセクションがシステム上のその他のデータのようなセキュアでないセクションとして用いられる場合、このセクションのデータは、複数のプロセッサキャッシュにおいてキャッシュされ得る。さて、変換する場合、複数のプロセッサキャッシュ内でキャッシュされたセキュアでないデータは、無効化されるのが理想的である。しかし、リプレイ保護セクションは複数のページからなるので、複数のプロセッサキャッシュの全てのページのコンテンツをフラッシュすることは、非効率である。従って、ハードウェアフィルタであるリプレイ保護フィルタは、ＭＥＥにインストールされ得る。リプレイ保護フィルタは、セキュアでないものからセキュアなものにリプレイ保護セクションを変換するときにアクティブ化され、セキュアでないものに再度変換されるときに非アクティブ化される。アクティブ化されると、リプレイ保護フィルタは、複数のプロセッサキャッシュからリプレイ保護フィルタがインストールされたセクションへとあらゆるライトバックをドロップし、それによりリプレイ保護メタデータを格納するのに現在用いられているセクションデータが破損しないことを保証し得る。
【００２０】
一実施形態において、プロセッサコア１４０は、セキュアなものからセキュアでないものにハードウェアの保留済みセクションを変換する第４の命令に応答して、１）命令に対するパラメータとして渡されたページのアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証することと、２）変換されるハードウェアの保留済みセクションに対応するＥＰＣセクションの全てのページが、セキュアでない状態にあることを保証することと、３）ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするようにＭＥＥに命令することと、４）内部キャッシュからのハードウェアの保留済みセクション（例えば、リプレイ保護セクション）の複数のコンテンツをフラッシュするようにＭＥＥに命令することとを実行する。ＭＥＥ内部キャッシュの複数のコンテンツをフラッシュすることで、セキュアでないセクションで用いられる場合に、複数のコンテンツを追い出してもセクションを破損させないことを保証する。
【００２１】
メインメモリ１２０は、複数のセキュアなメモリ範囲（本明細書においてＭＥＥ領域と称される）を含み得ることを留意されたい。メインメモリ１２０は、セキュアでないメモリ範囲も含み得る。メモリ１２０における柔軟な保護範囲の実施形態は、複数のＭＥＥ領域を含み、セキュアでないメモリ範囲は、図２を参照して以下に詳細に説明されている。
【００２２】
複数の実施形態は、コンピュータシステムに限定されない。本発明の代替的な複数の実施形態は、ハンドヘルドデバイスおよびエンベデッドアプリケーション等、他のデバイスにおいて用いられ得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）およびハンドヘルドＰＣが挙げられる。エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、少なくとも１つの実施形態による１または複数の命令を実行し得るその他のシステムを含み得る。
【００２３】
１つの実施形態が、シングルプロセッサのデスクトップまたはサーバシステムの文脈で説明され得るが、複数の代替的な実施形態は、マルチプロセッサシステムに含まれてもよい。システム１００は、「ハブ」システムアーキテクチャの一例であり得る。コンピュータシステム１００は、複数のデータ信号を処理するプロセッサ１１０を備える。１つの図示的な例として、プロセッサ１１０は、複合命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、命令セットの組み合わせを実装したプロセッサ、または、例えばデジタル信号プロセッサ等、その他のプロセッサデバイスを含む。プロセッサ１１０は、命令、データまたはそれらの任意の組み合わせを格納するメモリ１２０等、システム１００におけるプロセッサ１１０と複数の他のコンポーネントとの間で複数のデータ信号を送信するプロセッサバスに結合される。システム１００の複数の他のコンポーネントとしては、グラフィックスアクセラレータ、メモリコントローラハブ、Ｉ／Ｏコントローラハブ、無線トランシーバ、フラッシュＢＩＯＳ、ネットワークコントローラ、オーディオコントローラ、シリアル拡張ポート、Ｉ／Ｏコントローラ等が挙げられ得る。これらの要素は、当業者には周知である従来の複数の機能を実行する。
【００２４】
一実施形態において、プロセッサ１１０は、レベル１（Ｌ１）内部キャッシュメモリ１６０を備える。アーキテクチャに応じて、プロセッサ１１０は、単一の内部キャッシュまたは複数のレベルの内部キャッシュを有し得る。複数の他の実施形態は、特定の実装および必要性に応じて、内部および外部キャッシュの双方の組み合わせを含む。レジスタファイルは、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクレジスタ、シャドーレジスタ、チェックポイントレジスタ、ステータスレジスタ、構成レジスタおよび命令ポインタレジスタを含む様々なレジスタに異なるタイプのデータを格納する。
【００２５】
実行ユニットは、浮動小数点ユニットを有し得、または有しない場合があることに留意されたい。一実施形態において、プロセッサ１１０は、マイクロコードを格納するマイクロコード（ｕｃｏｄｅ）ＲＯＭを含み、これは、実行されると、特定の複数のマクロ命令のアルゴリズムを実行し、あるいは複数の複合シナリオを処理する。ここで、マイクロコードは、プロセッサ１１０のための論理バグ／修正を処理するべく、潜在的にアップデート可能である。
【００２６】
実行ユニットの別の複数の代替的実施形態は、マイクロコントローラ、エンベデッドプロセッサ、グラフィックスデバイス、ＤＳＰおよび他のタイプのロジック回路においても用いられ得る。システム１００は、メモリ１２０を含む。メモリ１２０は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）デバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、または他のメモリデバイスを含む。メモリ１２０は、プロセッサ１１０により実行されるべき複数のデータ信号によって表される複数の命令および／またはデータを格納する。プロセッサ１１０は、プロセッサバスを介してシステムメモリ１２０に結合される。メモリコントローラハブ（ＭＣＨ）等のシステムロジックチップは、プロセッサバスおよびメモリ１２０に結合され得る。ＭＣＨは、命令およびデータの格納、ならびにグラフィックスコマンドデータおよびテクスチャの格納用に、高帯域幅メモリパスをメモリ１２０に提供し得る。また、ＭＣＨは例えば、プロセッサ１１０、メモリ１２０、およびシステム１００内の複数の他のコンポーネントの間で複数のデータ信号を導き、プロセッサバス、メモリ１２０、およびシステムＩ／Ｏの間で複数のデータ信号をブリッジするように用いられ得る。ＭＣＨは、メモリインターフェースを介してメモリ１２０に結合されている。いくつかの実施形態において、システムロジックチップは、アクセラレーテッドグラフィックスポート（ＡＧＰ）相互接続を介してグラフィックスコントローラに結合するためのグラフィックスポートを提供し得る。システム１００は、Ｉ／Ｏコントローラハブ（ＩＣＨ）も含み得る。ＩＣＨは、ローカルＩ／Ｏバスを介していくつかのＩ／Ｏデバイスに複数の直接的接続を提供し得る。ローカルＩ／Ｏバスは、周辺装置をメモリ１２０、チップセット、およびプロセッサ１１０に接続するための高速Ｉ／Ｏバスである。いくつかの例は、オーディオコントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）、無線トランシーバ、データストレージ、ユーザ入力およびキーボードインターフェースを含むレガシーＩ／Ｏコントローラ、ユニバーサルシリアルバス（ＵＳＢ）等のシリアル拡張ポート、およびネットワークコントローラである。データストレージデバイスは、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、ＣＤ―ＲＯＭデバイス、フラッシュメモリデバイス、または他の大容量ストレージデバイスを備え得る。
【００２７】
システムの別の実施形態については、上記のプロセッサコア１４０により実行される複数の命令は、システムオンチップと共に用られ得る。システムオンチップの一実施形態は、プロセッサおよびメモリを備える。そのような１つのシステムのメモリは、フラッシュメモリである。フラッシュメモリは、プロセッサおよび複数の他のシステムコンポーネントと同一のダイ上に位置し得る。更に、メモリコントローラまたはグラフィックスコントローラなどの他の複数のロジックブロックも、システムオンチップ上に位置付けられ得る。
【００２８】
図２は、一実施形態による、複数のセキュアなメモリ範囲を含む柔軟な保護範囲２００の概念的なレイヤを図示する。複数のセキュアなエンクレーブのセキュアなメモリの再パーティショニングをサポートする中央処理装置（ＣＰＵ）は、ＢＩＯＳ（図示せず）がプロセッサ保留メモリ（Ｐｒｏｃｅｓｓｏｒ  Ｒｅｓｅｒｖｅｄ  Ｍｅｍｏｒｙ、ＰＲＭ）と呼ばれるメモリの範囲を保留することを可能にする。ＰＲＭは、ＭＥＥ領域とラベリングされる、複数のセキュアなメモリ範囲２０１〜２０７に編成され得る。セキュアなメモリ領域２０１〜２０７の各々は、３つのセクション２０２、２０４、２０６をそれぞれ含む。ＥＰＣとラベリングされた第１のセクション２０２は、変換可能なページ（例えば、エンクレーブページに用いられる）を含む。本明細書において説明されるように、保留済みハードウェアとラベリングされた第２のセクション２０４（リプレイ保護メカニズム）は、セキュアなセクションとして構成される場合、特定のセキュアなメモリ範囲（ＭＥＥ領域）のリプレイ保護および整合性メタデータを格納するのに用いられ得る変換可能なセクションであるが、セキュアでない使用のために変換され得る。このセクションは、本明細書においてリプレイ保護セクションとも称される。保留済みハードウェアとラベリングされた第３のセクション２０６（実装メカニズム）は、内部記憶処理用のハードウェアに対する情報および特定の複数の実装を格納するのに用いられ得る。柔軟な保護範囲２００は、非ＥＰＣメモリとラベリングされたセキュアでないメモリ２０８も含み得る。メモリは、常にセキュアでないものにセットされ、ＥＰＣ２０２としては用いることはできない。
【００２９】
本明細書において説明されるように、柔軟なＥＰＣは、ＯＳに、セキュアなメモリとセキュアでないメモリとの間でＥＰＣメモリを動かす複数の変換命令を提供することにより、ＥＰＣ２０２のダイナミックな再パーティショニングを可能にする。
【００３０】
別の実施形態において、各ＭＥＥ領域（例えば２０１〜２０７）は、２つのセクション、ＥＰＣセクション２０２およびハードウェアの保留済みセクションからなり、ハードウェアの保留済みセクションは、２つのサブセクション２０４、２０６に更に分割され得る。サブセクション２０４は、引き続いてリプレイ保護セクション２０４と称される。ＥＰＣセクション２０２は、セキュアなコード（例えば、エンクレーブコード）およびセキュアなデータ（例えば、エンクレーブデータ）用のＥＰＣメモリとして用いられ、対応するハードウェアの保留済みセクション２０４は、ＭＥＥ１５０によるリプレイ保護メカニズム実装のための暗号メタデータを格納するのに用いられる。リプレイ保護メカニズムは、ＥＰＣセクション２０２に対する整合性およびリプレイ保護を提供する。メモリのサブセクション２０６は、内部簿記および実装用のハードウェアにより保留される。ＭＥＥの視点からは、各ＭＥＥ領域は、自立的である。本質的には、ＭＥＥ領域２０１からの複数のＥＰＣ要求を満たすべく、ＭＥＥ１５０は、当該特定のＭＥＥ領域２０１に位置するリプレイ保護セクション２０４にアクセスすることのみを必要とする。
【００３１】
本明細書で説明される複数の変換可能なページおよびセクションを有する柔軟なＥＰＣを用いた一実装において、柔軟な全保護範囲２００は、起動するときにセキュアでないメモリとしてセットアップされ得る。ＭＥＥ領域２０１〜２０７は、命令ＥＥＮＵＭを用いて列挙され得る。ＥＥＮＵＭは、セキュアなエンクレーブ命令のリーフ関数とみなされ得る。本明細書において説明されるように、ＥＰＣセクション２０２およびハードウェアの保留済みセクション２０４内のメモリは、セキュアでないものからセキュアなものへと変換され得、その逆も当てはまる。しかし、以下に説明されるように柔軟なＥＰＣアーキテクチャは、メモリ変換に一定の制約を課す場合がある。
【００３２】
システム上のセキュアなメモリに対する要求は、時間と共に変更され得る、システム上で実行される複数のワークロードのタイプに強く相関する。セキュアな用途とセキュアでない（または通常の）用途との間でＯＳがＥＰＣ２０２を動的に再パーティショニングすることを可能にするべく、命令のセットがＯＳに提供され、変換を容易にする。上述のように、柔軟な全保護範囲２００は、図３に図示されるように、変換可能ではない。
【００３３】
図３は、一実施形態による、柔軟な保護範囲２００におけるメモリの複数の変換可能なセクション３００およびメモリの複数の変換可能なセクション３５０を図示する。ＭＥＥ領域２０１内において、ＥＰＣセクション２０２は、ページの細分性３０２において変換可能であり、リプレイ保護セクション２０４は、セクションの細分性３０４において変換可能である。柔軟な保護範囲２００における変換を可能にするべく、ＥＰＣセクション２０２のページ細分性変換３０２のための２つの命令、ＥＭＫＳＥＣおよびＥＭＫＲＥＧが用いられ、２つの命令、ＥＲＰＴＳＥＣおよびＥＲＰＴＲＥＧは、リプレイ保護セクション２０４のセクション細分性変換３０４に用いられる。一実施形態において、ＥＭＫＳＥＣ命令はＯＳにより用いられ、ＥＰＣセクション２０２におけるセキュアでないページをセキュアなページに変換し、ＥＭＫＲＥＧ命令は、ＥＰＣセクション２０２におけるセキュアなページをセキュアでないページに変換するのに用いられる。更なる実施形態において、ＥＲＰＴＳＥＣはＯＳにより用いられ、リプレイ保護セクション２０４を通常のものからセキュアなものに変換し、ＥＲＰＴＲＥＧはＯＳにより用いられ、セキュアなものからセキュアでないものにリプレイ保護セクション２０４を変換する。リプレイ保護セクションは、セクションの細分性において変換可能である。従って、特定の時間において、リプレイ保護セクションは、その全体においてセキュアであるか、またはセキュアでない。
【００３４】
一実施形態において、ＳＥアーキテクチャは、エンクレーブページキャッシュマップ（ＥＰＣＭ）と呼ばれるページキャッシュマップを用いる。ＥＰＣＭは、ＥＰＣセクション２０２におけるページのセキュリティ属性を追跡するのに用いられる。ＳＥアーキテクチャは、ＥＰＣセクション２０２における複数の変換可能なページの各々における現在の状況を示すべく、ＥＰＣＭを拡張する。セキュアなビットは、特定のＥＰＣＭエントリに対してセットされると、対応するページが現在はセキュアであることを示すＥＰＣＭに追加される。ＥＭＫＳＥＣおよびＥＭＫＲＥＧ命令は、このビットを適切にトグルする。リプレイ保護セクション２０４については、その全体がセキュアであるか、またはセキュアでないので、個々のページのＥＰＣＭにおけるセキュアなビットは、意味をなさない。ハードウェアは、セクションの状態を内部で追跡し、ソフトウェア（ＯＳ／ＶＭＭ）が現在の状況を知るようにするべく、特定のリプレイセクションが現在、セキュアであるか、またはセキュアでないかを示すＥＥＮＵＭ命令が提供される。
【００３５】
更なる実施形態において、柔軟な保護範囲２００は、変換不可能なセキュアなセクション３０６および変換不可能でセキュアでないセクション３０８を含む、変換不可能なセクション３５０も含み得る。例えば、各ＭＥＥ領域２０１内のハードウェアの保留済みセクション２０６は常に、セキュアでソフトウェアに可視でない、すなわち変換不可能なセキュアなアセクション３０６とみなされ得る。セクション２０６は、内部簿記に用いられ得る。ＭＥＥ領域２０１外部のメモリ、すなわちハードウェアの保留済みセクション２０８は常に、セキュアでないメモリとして維持され、セキュアな、すなわち変換不可能でセキュアでないセクション２０８に変換することができない。
【００３６】
図４Ａは、一実施形態による、柔軟な保護範囲の変換可能なページの複数のメモリ状態遷移を図示する状態図４００である。本実施形態において、２つの状態が存在する。ページが変換可能であり、現在はセキュアである（「変換可能、現在はセキュア」もしくは「ＣＣＳ」とラベリングされる）第１の状態４０２と、ページが変換可能であり、現在はセキュアでない（変換可能、現在は通常）もしくは「ＣＣＲ」とラベリングされる。「通常」は、「セキュアでない」と互いに交換可能に用いられる）第２の状態４０４である。本実施形態において、ページの状態は、２つの命令ＥＭＫＲＥＧ４０１およびＥＭＫＳＥＣ４０３を用いて、２つの状態４０２、４０４の間でトグルされる。ＥＭＫＲＥＧ４０１が実行されると、ページ状態は、第１の状態４０２から第２の状態４０４へと遷移する。ＥＭＫＳＥＣ４０３が実行されると、ページ状態は、第２の状態４０４から第１の状態４０２へと遷移する。
【００３７】
図４Ｂは、一実施形態による、柔軟な保護範囲の変換可能なセクションの複数のメモリ状態遷移を図示する状態図である。本実施形態において、２つの状態が存在する。セクションが変換可能であり、現在はセキュアである（「リプレイセクション、現在はセキュア」もしくは「ＲＣＳ」とラベリングされる）第１の状態４５２と、セクションが変換可能であり、現在はセキュアでない（「リプレイセクション、現在は通常」もしくは「ＲＣＲ」とラベリングされる）第２の状態４０４である。本実施形態において、セクション状態は、２つの命令ＥＲＰＴＲＥＧ４５１およびＥＲＰＴＳＥＣ４５３を用いて、２つの状態４５２、４５４の間でトグルされる。ＥＲＰＴＲＥＧ４５１が実行されると、セクション状態は、第１の状態４５２から第２の状態４５４へと遷移する。ＥＲＰＴＳＥＣ４５３が実行されると、セクション状態は、第２の状態４５４から第１の状態４５２へと遷移する。
【００３８】
ＥＰＣセクション２０２およびリプレイ保護セクション２０４は、双方が変換可能であり、アーキテクチャは、複数の変換命令による複数のＥＰＣページおよびリプレイ保護セクションの変換に対する制約を課す。変換に対する制約は、以下の通りである。制約１：ＭＥＥ領域における任意のデータページが現在はセキュアである場合、当該領域のリプレイ保護セクションはセキュアでなければならない。制約２：リプレイ保護セクションがセキュアでない場合、当該領域のＥＰＣセクション２０２における全てのＥＰＣページもセキュアでないものでなければならない。
【００３９】
アーキテクチャにより強制された複数の制約は、ＥＰＣページがリプレイ保護メカニズムにより暗号的に常に保護されることを保証する。変換命令を提供することに加えて、柔軟なＥＰＣアーキテクチャは、追加の命令ＥＥＮＵＭも提供する。ＥＥＮＵＭ命令は、プラットフォームの複数のＭＥＥ領域を列挙し、変換に対する複数の制約も列挙するべく、システムソフトウェアにより用いられ得る。具体的には、ＥＥＮＵＭは、システムソフトウェアにより用いられ、ＭＥＥ領域に関する以下の情報を取得し得る。  １．領域におけるＥＰＣおよびリプレイ保護セクションのベースアドレス。  ２．複数のセクションの各々のサイズ。  ３．セクションの変換可能性を示すセクションの状態：ａ）セクションが現在、セキュアであるか、またはセキュアでないものに変換され得るか否かの表示。ｂ）セクションがそもそもセキュアであるか、またはセキュアでないものに変換され得るか否かの表示。この情報の提供に加えて、ＥＥＮＵＭ命令はまた、システム上のＭＥＥ領域の数の合計を得るべく、システムソフトウェアにより用いられ得る。
【００４０】
複数のＥＰＣページおよびリプレイ保護セクションの変換処理の複数の実施形態が、以下により詳細に説明される。
セキュアでないページのセキュアなページへの変換。
一実施形態において、ＯＳは、以下の手順を用いてセキュアでないページをセキュアなページに変換し得る。
１．ＯＳは、変換されるべきページのユーザマッピングを除去する。
２．ＯＳは、プロセッサ間割り込み（ＩＰＩ）を発行することにより、必要なトランスレーションルックアサイドバッファ（ＴＬＢ）無効化を実行する。これは、セキュアでないものとして用いられたときのページに対する状態ＴＬＢマッピングが存在しないことを保証する。
３．ＯＳは、選択されたページにＥＭＫＳＥＣを実行する。ＥＭＫＳＥＣは、パラメータとして変換されるべきページのリニアアドレスを取り得る。
ＥＭＫＳＥＣが首尾よく実行されると、ターゲットページは、例えばＥＰＣＭにおけるセキュアなビットをセットすることにより、セキュアなページに変換される。ここで、ＯＳは、エンクレーブの使用のため、このページに対する新しいマッピングを生成し得る。
【００４１】
複数の他の実施形態において、セキュアでないページをセキュアなページに変換するべく、より多いか、またはより少ないオペレーションが用いられ得る。
セキュアなページのセキュアでないページへの変換。
一実施形態において、ＯＳは、以下の手順を用いてセキュアなページをセキュアでないページに変換し得る。
１．ＯＳは、変換されるべきページのユーザマッピングを除去する。
２．ＯＳは、ＩＰＩを発行することにより必要なＴＬＢ無効化を実行する。これは、セキュアなものとして用いられていたときのページに対する古いＴＬＢマッピングが存在しないことを保証する。
３．ＯＳは、選択されたページにＥＭＫＲＥＧを実行する。ＥＭＫＲＥＧは、パラメータとして変換されるべきページのリニアアドレスを取る。
【００４２】
ＥＭＫＲＥＧが首尾よく実行されると、ターゲットページは、例えばＥＰＣＭにおけるセキュアなビットをクリアすることにより、セキュアでないページに変換される。ここで、ＯＳは、セキュアでない（例えばエンクレーブでない）使用のために、このページに対する新しいマッピングを生成し得る。
【００４３】
複数の他の実施形態において、セキュアなページをセキュアでないページに変換するべく、より多いか、またはより少ないオペレーションが用いられ得る。
リプレイ保護セクションをセキュアでないセクションからセキュアなセクションに変換する。
【００４４】
一実施形態において、ＯＳは、エンクレーブの使用のため、ＥＰＣセクションからページを割り当てる前は、ＭＥＥ領域のリプレイ保護セクションがセキュアであることを保証する（制約１）。これは、対応するＥＰＣセクションからの任意のページがセキュアなものに変換され、エンクレーブの使用に割り当てられ得る前に、アーキテクチャにより必要とされる。ＯＳは、以下の手順を用いて、リプレイ保護セクションをセキュアでないセクションからセキュアなセクションに変換し得る。
１．リプレイ保護メカニズムにおける任意のページがセキュアでないページとして用いられる場合、ＯＳは、書き出す必要がある。
２．ＯＳは、新しいエンクレーブでないページの複数の要求を満たすべく、このセクションからの任意のページを割り当ててはならない。
３．ＯＳは、選択されたセクションにＥＲＰＴＳＥＣを実行する。ＥＲＰＴＳＥＣは、パラメータとしてリプレイ保護セクションにおけるページのリニアアドレス（例えば、４Ｋの配置済みリニアアドレス）を取る。リプレイ保護セクションにおける任意のページにＥＲＰＴＳＥＣを実行すると、セクション全体の状態をセキュアでないものからセキュアなものへと遷移する。
ＥＲＰＴＳＥＣが首尾よく実行されると、ターゲットのリプレイ保護セクションは、セキュアなセクションに変換される。ここで、ＯＳは、セキュアな使用のために、対応するＥＰＣセクションからのページを割り当て得る。
【００４５】
複数の他の実施形態において、リプレイ保護セクションをセキュアでないセクションからセキュアなセクションに変換するべく、より多いか、またはより少ないオペレーションが用いられ得る。
【００４６】
リプレイ保護セクションをセキュアなセクションからセキュアでないセクションに変換する。
一実施形態において、ＯＳは、以下の手順を用いて、ＭＥＥ領域におけるリプレイ保護セクションをセキュアなものからセキュアでないものに変換し得る。
１．ＭＥＥ領域のＥＰＣセクションにおける全てのページがセキュアでないことを確実にする（制約２）。ａ）任意のページがエンクレーブ内で用いられる場合、ＯＳは、セキュアなページをライトバックするＳＥメカニズムを用いて任意のページを書き出す必要がある。この場合、ＳＥアーキテクチャは、これを行う命令を提供する。ｂ）ＯＳは、複数のエンクレーブからの新しい要求を満たすべく、このＥＰＣセクション２０２からのページを割り当てるべきではない。
２．ＯＳは、選択されたセクションにＥＲＰＴＲＥＧを実行する。ＥＲＰＴＲＥＧは、パラメータとしてリプレイ保護セクションにおけるページのリニアアドレス（例えば、４Ｋの配置済みのリニアアドレス）を取る。リプレイ保護セクションにおける任意のページにＥＲＰＴＲＥＧを実行すると、セクション全体の状態をセキュアなものからセキュアでないものに遷移する。
ＥＲＰＴＲＥＧが首尾よく実行されると、ターゲットのリプレイ保護セクションは、セキュアでないものに変換される。ここで、ＯＳは、セキュアでない使用のために、このセクションにおけるページを割り当て得る。
【００４７】
複数の他の実施形態において、リプレイ保護セクションをセキュアなセクションからセキュアでないセクションに変換するべく、より多いか、またはより少ないオペレーションが用いられ得る。
【００４８】
本明細書において説明される複数の実施形態が仮想化環境においても用いられ得ることに留意されたい。
【００４９】
柔軟なＥＰＣの仮想化。
仮想マシンモニタ（ＶＭＭ）は、ハイパーバイザとも称されるが、より低い特権を有するエンティティ（例えば悪意または動作不良のゲストＯＳ）がＶＭＭの不安定性を生じさせることができないことを保証し得る必要がある。ページ変換に対する誤ったＴＬＢ管理は、システムの不安定性をもたらし得る。例として、ページをセキュアでないものからセキュアなものに変換する場合、ＯＳがセキュアでないページの古いＴＬＢマッピングを除去しないときは、この古いＴＬＢマッピングは、メモリからデータをロードするように用いられ得る。次に、このデータは、追い出し時にシステムの不安定性をもたらすセキュアなメモリを破損するキャッシュに常駐する場合に修正され得る（ＭＥＥは、整合性における不良を生じさせる）。従って、ＶＭＭは、ページ変換に対する正しいＴＬＢ管理を保証して、ゲストＯＳがシステムの不安定性を生じさせることを阻止しなければならない。柔軟なＥＰＣは、３つのモードまたは仮想化をサポートする。すなわち、ディセーブルモード、ゲストトランスペアレントモードおよびゲスト可視モードである。ディセーブルモードにおいて、ＶＭＭは、柔軟なＥＰＣをイネーブルにしない。ゲストトランスペアレントモードにおいて、ＶＭＭは、柔軟なＥＰＣを用いて、レガシーＥＰＣをゲストＯＳに表示する。ゲスト可視モードにおいて、ＶＭＭは、柔軟なＥＰＣをゲストＯＳに対して表示する。以下に説明される複数の実施形態は、実行され得る例示的処理であるが、複数の他の実施形態においては、説明されるもの以外のより多いか、またはより少ないオペレーションが異なる仮想化モードで用いられ得る。
【００５０】
ディセーブルモード
ディセーブルモードにおいて、ＶＭＭは、柔軟なＥＰＣを認識していないか、またはこれを用いることを希望しないかのいずれかである。ＶＭＭは、柔軟なＥＰＣをゲストＯＳに表示しない。一実施形態において、柔軟なＥＰＣ機能の存在は、命令ＣＰＵＩＤ（ＣＰＵ識別子）により列挙され得る。これらのシステムについては、ＶＭＭは、ＣＰＵＩＤ命令を仮想化することにより柔軟なＥＰＣの存在を表示しない。更に、ＶＭＭは、ゲストＯＳが本明細書において説明される柔軟なＥＰＣ命令を実行するのを阻止する。これは、新しい二次プロセッサベースの制御、例えばＥＮＡＢＬＥ＿ＦＬＥＸＥＰＣ  ｃｏｎｔｒｏｌをクリアすることにより行われる。ゲストＯＳによりクリアされたＥＮＡＢＬＥ＿ＦＬＥＸＥＰＣを用いる柔軟なＥＰＣ命令を実行するいずれの試みも、未定義のオペコードエラー＃ＵＤをもたらし、これは命令オペコードが規定されない場合に生じる。
【００５１】
ゲストトランスペアレントモード
ゲストトランスペアレントモードにおいて、ＶＭＭは、柔軟なＥＰＣを用いるが、それをゲストには表示しない。ＶＭＭは、柔軟なＥＰＣを用いて、レガシースタティックＥＰＣをゲストに表示する。ディセーブルモードと同様に、ＶＭＭは、ＣＰＵＩＤを仮想化することにより柔軟なＥＰＣ機能を表示せず、ＥＮＡＢＬＥ＿ＦＬＥＸＥＰＣ  ｃｏｎｔｒｏｌをクリアすることにより、ゲストが柔軟なＥＰＣ命令を実行するのを阻止する。更に、ＶＭＭは、従来の複数のスタティックＥＰＣ範囲レジスタおよびＣＰＵＩＤ．ＳＥ＿ＬＥＡＦ（ＥＥＮＵＭに類似する）に対する複数の読み取り要求を仮想化し、ゲストＯＳに対する仮想ＥＰＣを列挙する。ＶＭＭは、ゲストＥＰＣをＶＭＭにより管理される柔軟なＥＰＣの複数のセキュアなページにマッピングする複数のテーブル（例えばＥＰＴ）を用いる。ＶＭＭは、柔軟なＥＰＣ命令、例えばＥＭＫＲＥＧ、ＥＭＫＳＥＣ、ＥＲＰＴＲＥＧ、ＥＲＰＴＳＥＣを用いて、複数のゲストＯＳ全体でセキュアページおよびセキュアでないページに対する要求を管理する。ゲストトランスペアレントモードにおいてＶＭＭにより用いられる複数の変換フローは、ネイティブＯＳフローに類似する。
【００５２】
ゲスト可視モード
ゲスト可視モードにおいて、ＶＭＭは、ＣＰＵＩＤによりゲストに柔軟なＥＰＣを表示し、ゲストがＥＮＡＢＬＥ＿ＦＬＥＸＥＰＣ  ｃｏｎｔｒｏｌを１にセットすることにより、複数の柔軟なＥＰＣ命令を実行することを可能にする。以下の説明は、仮想化環境における複数の変換可能なページおよび変換可能なセクションを変換する複数の実施形態を対象とする。
【００５３】
セキュアなものからセキュアでないものへの変換の仮想化
セキュアなページをセキュアでないページに変換するべく用いられるＥＭＫＲＥＧ命令は、ページがＥＰＣＭにおいて有効でないものとしてマーキングされる場合にのみ、オペレーションが可能とされることを保証する。これは、ページに対する古いＴＬＢエントリが存在しないこと、すなわちページがセキュアなものとして用いられたときにキャッシュされたＴＬＢエントリが存在しないことを保証する。これは、ＳＥアーキテクチャにより保証される。エンクレーブページがエンクレーブからマッピング解除された場合、ＴＬＢエントリを保持することでセキュリティの脅威を生じさせるので、その複数のＴＬＢエントリは無効化される。従って、変換に対するこの方向については、ハードウェアは、正しいＴＬＢ管理を保証し、ゲストは、ＶＭＭの不安定性を生じさせることはできない。従って、ＶＭＭは、ゲストがセキュアなページをセキュアでないページに変換する場合、追加のオペレーションを行う必要がない。
【００５４】
セキュアでないものからセキュアなものへの変換の仮想化
変換に対するこの方向については、ソフトウェアは、複数の古いＴＬＢエントリ、すなわちページがセキュアでないものとして用いられたときにキャッシュされた複数のエントリをフラッシュしなければならない。結果として、動作不良または悪意のＯＳは、複数の古いＴＬＢエントリをフラッシュせずにＥＭＫＳＥＣ命令を用いて、セキュアでないページをセキュアなページに変換することにより、ＶＭＭの不安定性を生じさせ得る。従って、システムの安定性を保証するべく、ＶＭＭは、ゲストＯＳ上でセキュアでないページをセキュアなものに変換するときに、ＴＬＢがフラッシュされることを保証し得る。以下は、セキュアなページへの変換を仮想化するべくＶＭＭにより実行される複数のオペレーションのシーケンスを示す。
１）ＶＭＭは、ゲストにおいてＥＭＫＳＥＣ命令の実行時にＶＭＥｘｉｔを受信するべく、ＥＭＫＳＥＣ命令にフックする。
２）ゲストにおけるＥＭＫＳＥＣの実行時に、ＶＭＭはＶＭＥｘｉｔを受信する。
３）ＶＭＭは、ＥＰＴからページをマッピング解除する。
４）ＶＭＭは、ゲストが実行したことがある全てのＣＰＵ上のＴＬＢを無効化する。
５）ＶＭＭは、ゲストに代わってＥＭＫＳＥＣ命令を実行し、ページをセキュアなものに変換する。
６）ＶＭＭは、ＥＰＴにおけるページを再度マッピングし、ゲストを再開する。
【００５５】
他の実施形態において、複数の他のオペレーションは、ページ変換に実行され得る。ＶＭＭは、セクション変換オペレーションについて何も行う必要がない。セクション変換命令は、ハードウェアフィルタを用いてシステムの安定性を保証するからである。
【００５６】
以下の説明は、本明細書において説明される柔軟なＥＰＣの命令セットアーキテクチャ（ＩＳＡ）についての要約を提供する。
【００５７】
ＥＭＫＳＥＣ  目的：ＥＭＫＳＥＣはＯＳに提供され、ページをセキュアでないものからセキュアなものに変換する。
パラメータ：データセグメントのＲＣＸレジスタ（ＤＳ：ＲＣＸ）：変換されるべきページのロジックアドレス。
オペレーション
１）アドレスがセキュアなページに変換可能なページを示すことを保証する。
２）ＥＰＣＭ．Ｓ＝０であることを検証する。
３）（ＷＢ）キャッシュ階層からの複数のキャッシュ済みページコンテンツを無効化する。
４）ＥＰＣＭ．Ｓ＝ｌにセットする。
５）現在のＬＰからのＤＳ：ＲＣＸの変換を無効化する。
【００５８】
ＥＭＫＲＥＧ
目的：ＥＭＫＲＥＧはＯＳに提供され、ページをセキュアなものからセキュアでないものに変換する。
パラメータ：ＤＳ：ＲＣＸ：変換されるべきページのロジックアドレス。
オペレーション１）アドレスがセキュアでないページに変換可能なページを示すことを保証する。
２）ＥＰＣＭ．Ｓ＝１であることを検証する。
３）ＥＰＣＭ．Ｖ＝０であることを検証する。
４）（ＷＢ）キャッシュ階層からのページコンテンツを無効化する。
５）ＥＰＣＭ．Ｓ＝０にセットする。
６）現在のＬＰのＤＳ：ＲＣＸの変換を無効化する。
【００５９】
ＥＭＫＲＰＴＳＥＣ
目的：ＥＭＫＲＰＴＳＥＣはＯＳに提供され、リプレイ保護セクションをセキュアでないものからセキュアなものに変換する。
パラメータ：ＤＳ：ＲＣＸ：変換されるべきリプレイ保護セクションにおけるページのロジックアドレス。
オペレーション
１）アドレスがリプレイ保護ページ（例えば、リプレイ保護ツリー（ＲＰＴｒｅｅ）ページ）を示すことを保証する。
２）リプレイ保護フィルタをインストールするようにシステム上のＭＥＥに命令する。リプレイ保護フィルタは、ＭＥＥにインストールされ、ＯＳによりセキュアでないものとして用いられたリプレイ保護セクションが追い出しをせず、リプレイ保護の破損を生じさせる場合に、リプレイ保護セクションデータがキャッシュされることを保証する。フィルタは、キャッシュされたプロセッサからのリプレイ保護セクションにおける全ておページをフラッシュすることを必要とせずに、システムの安定性を保証する。
３）リプレイ保護セクションを初期状態、例えば変換可能で、同時にセキュアでない状態にするようにＭＥＥに命令する。
【００６０】
ＥＭＫＲＰＴＲＥＧ
目的：ＥＭＫＲＰＴＳＥＣはＯＳに提供され、リプレイ保護セクションをセキュアなものからセキュアでないものに変換する。
パラメータ：ＤＳ：ＲＣＸ：変換されるべきリプレイ保護セクションにおけるページのロジックアドレス。
オペレーション
１）アドレスがリプレイ保護セクションページを示し、このリプレイ保護セクションに対応する全てのデータページが変換可能で、現在セキュアでない状態にあることを保証する。
２）このリプレイ保護セクションに対するリプレイ保護の保護フィルタをアンインストールするように、システム上のＭＥＥに命令する。
３）リプレイ保護セクションからのリプレイ保護メカニズムのコンテンツを複数のキャッシュからフラッシュするように、システム上のＭＥＥに命令する。
【００６１】
ＥＥＥＮＵＭ
目的：ＥＥＮＵＭはＯＳに提供され、プラットフォーム上の複数のＭＥＥ領域を列挙する。また、ＥＥＮＵＭは、ＭＥＥ領域内のあるセクションの詳細を入力パラメータにより誘導されたものとして列挙し得る。
パラメータ：ＥＣＸ：領域ＩＤおよびセクションＩＤの組み合わせ。
オペレーション
１）領域／セクションＩＤが有効でない場合、プラットフォームでサポートされる最大の領域／セクションＩＤを返す。
２）領域／セクションＩＤが有効である場合、以下の情報が返される。ａ）セクションのベースアドレス。ｂ）セクションにおけるページの数（例えば、４Ｋのページ）。
３）セクション（またはこのセクションからの複数のページ）が現在、セキュアであるか、またはセキュアでないものに変換され得るか否かを示す状態ビット。
【００６２】
図５Ａは、一実施形態による変換可能なページにおけるセキュアなメモリの再パーティショニングの方法５００のフロー図である。方法５００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェアまたはこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施形態において、方法５００は、図１のプロセッサ１１０により実行される。別の実施形態において、方法５００は、図６Ａ〜１２に関して説明される複数のプロセッサのいずれかにより実行される。あるいは、コンピューティングシステム１００の複数の他のコンポーネント（またはプロセッサ１１０上で実行されるソフトウェア）は、方法５００の複数のオペレーションのうちいくつかまたは全てを実行し得る。
【００６３】
図５Ａを参照すると、方法５００は処理ロジックにより、プロセッサコアに結合されたメインメモリ内の変換可能なページを変換するページ変換命令をデコードすることを開始する（ブロック５０２）。処理ロジックは、命令から変換可能なページがセキュアなページからセキュアでないページに、またはセキュアでないページからセキュアなページに変換されるか否かを判断する（ブロック５０４）。ＯＳ／ＶＭＭは、どのページをセキュアでないものからセキュアなものに、またはセキュアなものからセキュアでないものに変換するかを決定し、処理ロジックは、命令をデコードしてページがセキュアでないものからセキュアなものに、またはセキュアなものからセキュアでないものに変換されるかを判断する。一実施形態において、処理ロジックは、本明細書において説明されるように、２つのページ変換命令のうち１つをデコードする場合にこの判断を行う。命令は、変換されるべきページのアドレスを識別し得る。また、２つの別個のブロックとして図示されているが、ブロック５０２および５０４は、命令をデコードする段階の一部として実行され得ることに留意されたい。
【００６４】
ページがセキュアなものからセキュアでないものに変換される場合、処理ロジックは、ページのアドレスが変換可能なページを示すことを保証し（ブロック５０６）、セキュアなビットがセキュアでないものにセットされることを検証する（ブロック５０８）。セキュアなビットは、変換可能なページに対応するページキャッシュマップエントリにおけるビットであってもよい。セキュリティビットがセットされている場合、ページはセキュアであり、セキュリティビットがクリアされている場合、ページはセキュアでない。処理ロジックは、変換可能なページに対応するキャッシュ内の任意のキャッシュ済みページコンテンツを無効化する（ブロック５１０）。処理ロジックは、セキュアなビットをセキュアであるようにセットし（ブロック５１２）、プロセッサコアのアドレスに対する変換を無効化し（ブロック５１４）、方法５００は終了する。ブロック５０４において、変換がセキュアなものからセキュアでないものへの場合、処理ロジックは、ページのアドレスが変換可能なページを示すことを保証し（ブロック５１６）、セキュアなビットがセキュアになるようにセットされることを検証する（ブロック５１８）。処理ロジックは、有効ビット（ブロック５２０）が無効であること（すなわち、有効ビットがクリアである）ことを検証する。また、有効ビットはページキャッシュマップのビットであってもよい。処理ロジックは、キャッシュ内の任意のキャッシュ済みページコンテンツを無効化し（ブロック５２２）、セキュアなビットをクリアしてセキュアでないようにし（ブロック５２４）、プロセッサコアのアドレスに対する変換を無効化し（ブロック５２６）、方法５００は終了する。
【００６５】
別の実施形態において、処理ロジックは、ページ変換命令に応答して、１または複数のプロセッサに結合されたメインメモリのメモリ範囲内において変換可能なページを識別する。セキュアなメモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換され得る、変換可能な複数のページの第１のセクションを含む。処理ロジックは、変換可能なページを、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換する。処理ロジックは、ＯＳ／ＶＭＭにより直接に命令され、本明細書において説明される命令リーフにパラメータとして渡された特定のページまたはセクションを変換し得る。一実施形態において、処理ロジックは、ページ変換命令が第１の変換命令である場合に、プロセッサコアにより、セキュアでないページからセキュアなページに変換可能なページを変換し、ページ変換命令が第２の変換命令である場合に、プロセッサコアにより、セキュアなページからセキュアでないページに変換可能なページを変換する。
【００６６】
一実施形態において、第１の変換命令に応答して、処理ロジックは、変換可能なページのアドレスがセキュアなページに変換可能なページを示すことを保証する。処理ロジックは、変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアでないものになるようにセットされ、プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することを検証する。処理ロジックは、ページキャッシュマップエントリのセキュアなビットをセキュアになるようにセットし、プロセッサコアに対するアドレスの変換を無効化する。
【００６７】
一実施形態において、第２の変換命令に応答して、処理ロジックは、変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証する。処理ロジックは、変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアになるようにセットされることを検証する。処理ロジックは、ページキャッシュマップエントリの有効ビットが無効になるようにセットされ、プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することを検証する。処理ロジックは、ページキャッシュマップエントリのセキュアなビットをセキュアでないものになるようにセットし、プロセッサコアに対するアドレスの変換を無効化する。
【００６８】
図５Ｂは、一実施形態による変換可能なセクションにおけるセキュアなメモリの再パーティショニングの方法のフロー図５５０である。方法５５０は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェアまたはこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施形態において、方法５５０は、図１のプロセッサ１１０により実行される。別の実施形態において、方法５５０は、図６Ａ〜１２に関して説明される複数のプロセッサのいずれかにより実行される。あるいは、コンピューティングシステム１００の複数の他のコンポーネント（またはプロセッサ１１０上で実行されるソフトウェア）は、方法５５０の複数のオペレーションのうちいくつかまたは全てを実行し得る。
【００６９】
図５Ｂを参照すると、方法５５０は、処理ロジックによりメモリ範囲内のハードウェアの保留済みセクションを変換するセクション変換命令をデコードすることを開始する（ブロック５５２）。処理ロジックは、ハードウェアの保留済みセクションがセキュアでないセクションからセキュアなセクションに、またはセキュアなセクションからセキュアでないセクションに変換されるか否かを判断する（ブロック５５４）。ＯＳ／ＶＭＭは、どのセクションをセキュアでないものからセキュアなものに、またはセキュアなものからセキュアでないものに変換するかを決定し、処理ロジックは、セクションがセキュアでないものからセキュアものに、またはセキュアなものからセキュアでないものに変換されるか否かを判断する命令をデコードする。一実施形態において、処理ロジックは、本明細書において説明されるように、２つのセクション変換命令のうち１つをデコードする場合にこの判断を行う。また、２つの別個のブロックとして図示されているが、ブロック５５２および５５４は、命令をデコードする段階の一部として実行され得ることに留意されたい。
【００７０】
セクションがブロック５５４で、セキュアでないものからセキュアなものに変換される場合、処理ロジックは、命令のアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証する（ブロック５５６）。処理ロジックは、ハードウェアの保留済みセクションが変換可能で、現在はセキュアでないものとしてセットされていることを保証する（ブロック５５８）。処理ロジックは、ハードウェアの保留済みセクション（ブロック５６０）のリプレイ保護フィルタをインストールするようにＭＥＥに命令する（ブロック５６０）。処理ロジックは、ハードウェアの保留済みセクションを開始状態にするようにＭＥＥに命令し（ブロック５６２）、方法５５０は終了する。
【００７１】
セクションがブロック５５４で、セキュアなものからセキュアでないものに変換される場合、処理ロジックは、命令のアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証する（ブロック５６６）。処理ロジックは、ハードウェアの保留済みセクションに対応するＥＰＣセクションにおける複数のページがセキュアでない状態にあることを保証する（ブロック５６８）。処理ロジックは、ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするようにＭＥＥに命令し（ブロック５７０）、内部キャッシュからハードウェアの保留済みセクションのコンテンツをフラッシュするようにＭＥＥに命令し（ブロック５７２）、方法５５０は終了する。
【００７２】
別の実施形態において、セキュアなメモリ範囲は、ハードウェアの保留済みセクションを含む。処理ロジックは、セキュアなメモリ範囲内のハードウェアの保留済みセクションを変換するセクション変換命令をデコードし、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるようにハードウェアの保留済みセクションを変換するセクション変換命令を実行する。更なる実施形態において、処理ロジックは、セクション変換命令が第３の変換命令である場合に、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換し、セクション変換命令が第４の変換命令である場合に、セキュアなセクションからセキュアでないセクションにハードウェアの保留済みセクションを変換する。
【００７３】
更なる実施形態において、処理ロジックは、セキュアでないものからセキュアなものにハードウェアの保留済みセクションを変換する第３の変換命令に応答して、第３の変換命令のアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証する。処理ロジックは、メモリ範囲のハードウェアの保留済みセクションが変換可能で、現在はセキュアでないものにセットされていることを保証し、ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするようにＭＥＥに命令する。処理ロジックは、ハードウェアの保留済みセクションを開始状態にするようにＭＥＥに命令する。
【００７４】
更なる実施形態において、処理ロジックは、セキュアなものからセキュアでないものにハードウェアの保留済みセクションを変換する第４の変換命令に応答して、第４の変換命令のアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証する。処理ロジックは、ハードウェアの保留済みセクションに対応するＥＰＣセクションにおける複数のページがセキュアでない状態にあることを保証する。処理ロジックは、ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするようにＭＥＥに命令し、内部キャッシュからのハードウェアの保留済みセクション（例えば、リプレイ保護セクション）の複数のコンテンツをフラッシュするようにＭＥＥに命令する。
【００７５】
図６Ａは、一実施形態による、セキュアなメモリの再パーティショニングを実装するプロセッサ６００用のマイクロアーキテクチャを図示するブロック図である。具体的には、プロセッサ６００は、本開示の少なくとも１つの実施形態によるプロセッサに含まれるインオーダアーキテクチャコアおよびレジスタリネーミングロジック、アウトオブオーダ発行／実行ロジックを図示する。複数の変換ページおよびセクションの実施形態は、プロセッサ６００に実装され得る。
【００７６】
プロセッサ６００は、実行エンジンユニット６５０に結合されたフロントエンドユニット６３０を含み、フロントエンドユニット６３０と実行エンジンユニット６５０の双方がメモリユニット６７０に結合されている。プロセッサ６００は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア、またはハイブリッドもしくは代替的コアタイプを含み得る。なおも別の選択肢として、プロセッサ６００は、例えば、ネットワークもしくは通信コア、圧縮エンジン、グラフィックスコア等の専用コアを含み得る。一実施形態において、プロセッサ６００は、マルチコアプロセッサであってもよく、またはマルチプロセッサシステムの一部であってもよい。
【００７７】
フロントエンドユニット６３０は、命令キャッシュユニット６３４に結合された分岐予測ユニット６３２を含み、分岐予測ユニット６３２は、命令トランスレーションルックアサイドバッファ（ＴＬＢ）６３６に結合され、命令トランスレーションルックアサイドバッファ６３６は、命令フェッチユニット６３８に結合され、命令フェッチユニット６３８は、デコードユニット６４０に結合される。デコードユニット６４０（またはデコーダとして知られる）は、複数の命令をデコードし、出力として、１または複数のマイクロオペレーション、マイクロコードエントリーポイント、マイクロ命令、他の命令、または他の制御信号を生成することができ、これらは、元の命令からデコードされ、または、元の命令を反映し、あるいは元の命令から導出される。デコーダ６６０は、様々な異なるメカニズムを用いて実装され得る。好適なメカニズムの例としては、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリメモリ（ＲＯＭ）等が挙げられるが、これらに限定されない。命令キャッシュユニット６３４は、メモリユニット６７０に更に結合される。デコードユニット６４０は、実行エンジンユニット６５０内のリネーム／アロケータユニット６５２に結合される。
【００７８】
実行エンジンユニット６５０は、リタイアメントユニット６５４および１または複数のスケジューラユニット６５６のセットに結合されたリネーム／アロケータユニット６５２を含む。スケジューラユニット６５６は、任意の数の異なるスケジューラを表し、複数の保留局（ＲＳ）、中央命令ウィンドウ等を含む。スケジューラユニット６５６は、物理レジスタファイルユニット６５８に結合される。物理レジスタファイルユニット６５８のそれぞれは、１または複数の物理レジスタファイルを表し、その異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、状態（例えば、実行される次の命令のアドレスである命令ポインタ）等、１または複数の異なるデータタイプを格納する。物理レジスタファイルユニット６５８は、リタイアメントユニット６５４と重複しており、レジスタリネーミングおよびアウトオブオーダ実行が実装され得る（例えば、リオーダバッファおよびリタイアメントレジスタファイルを用い、将来のファイル、履歴バッファ、およびリタイアメントレジスタファイルを用い、複数のレジスタマップおよび複数のレジスタのプールを用いる等して）様々な様式を図示する。
【００７９】
一般に、複数のアーキテクチャレジスタは、プロセッサの外部から、またはプログラマから見える。レジスタは、任意の既知の特定のタイプの回路に限定されない。様々な異なるタイプのレジスタは、本明細書に説明されるデータを格納および提供することができる限りにおいて、好適である。好適な複数のレジスタの例としては、専用物理レジスタ、レジスタリネームを用いて動的に割り当てられる物理レジスタ、専用物理レジスタおよび動的に割り当てられる物理レジスタの組み合わせ等が挙げられるが、これらに限定されるものではない。リタイアメントユニット６５４および物理レジスタファイルユニット６５８は、実行クラスタ６６０に結合される。実行クラスタ６６０は、１または複数の実行ユニット６６２のセットおよび１または複数のメモリアクセスユニット６６４のセットを含む。複数の実行ユニット６６２は、様々なオペレーション（例えば、シフト、加算、減算、乗算）を実行し、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）上で処理し得る。
【００８０】
いくつかの実施形態は、複数の具体的関数または複数のセットの関数に専用のいくつかの実行ユニットを含んでもよいが、複数の他の実施形態は、１つのみの実行ユニットまたは複数の実行ユニットを含んでもよく、これらは全て、あらゆる関数を実行する。スケジューラユニット６５６、物理レジスタファイルユニット６５８、および実行クラスタ６６０は、場合によっては複数であるものとして示される。複数の特定の実施形態が、複数の特定のタイプのデータ／オペレーション（例えば、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、および／またはメモリアクセスパイプライン。これらは、それぞれが自身のスケジューラユニット、物理レジスタファイルユニット、および／または実行クラスタを有し、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタのみが、メモリアクセスユニット６６４を有する特定の実施形態が実装される）用に複数の別個のパイプラインを作成するからである。また、複数の別個のパイプラインが使用される場合、これらのパイプラインのうち１または複数は、アウトオブオーダ発行／実行であり、残りは、インオーダであってもよいことを理解されたい。
【００８１】
メモリアクセスユニット６６４のセットは、メモリユニット６７０に結合され、メモリユニット６７０は、若干の例を挙げれば、データプリフェッチャ６８０、データＴＬＢユニット６７２、データキャッシュユニット（ＤＣＵ）６７４、レベル２（Ｌ２）キャッシュユニット６７６を含み得る。いくつかの実施形態において、ＤＣＵ６７４は、第１レベルデータキャッシュ（ＬＩキャッシュ）としても知られている。ＤＣＵ６７４は、複数の未解決のキャッシュミスを処理し、入ってくる複数のストアおよびロードを継続して提供し得る。また、ＤＣＵ６７４は、キャッシュコヒーレンシの維持をサポートする。データＴＬＢユニット６７２は、仮想および物理アドレス空間をマッピングすることにより、仮想アドレス変換の速度を改善するべく用いられるキャッシュである。例示的な一実施形態において、複数のメモリアクセスユニット６６４は、ロードユニット、格納アドレスユニット、および、格納データユニットを含み得、これらの各々は、メモリユニット６７０内のデータＴＬＢユニット６７２に結合されている。Ｌ２キャッシュユニット６７６は、１または複数の他のレベルのキャッシュに、そして最終的にはメインメモリに結合され得る。
【００８２】
一実施形態において、データプリフェッチャ６８０は、どのデータをプログラムが使用しようとしているかを自動的に予測することにより、投機的にＤＣＵ６７４にデータをロード／プリフェッチする。プリフェッチは、データがプロセッサにより実際に要求される前に、メモリ階層（例えば、低次レベルキャッシュもしくはメモリ）のあるメモリ位置（例えば、場所）に格納されたデータを、プロセッサにより近い（例えば、より低いアクセスレイテンシをもたらす）高次レベルのメモリ位置に転送することを指し得る。より具体的には、プリフェッチは、プロセッサが戻される詳細データに対する要求を発行する前のデータキャッシュに対して低次のレベルキャッシュ／メモリ、および／またはプリフェッチバッファのうち１からデータを初期的に取得することを指し得る。
【００８３】
プロセッサ６００は、１または複数の命令セット（例えば、ｘ８６命令セット（複数のより新しいバージョンについてはいくつかの拡張が追加されている）、カリフォルニア州サニーベールのＭＩＰＳ  ＴｅｃｈｎｏｌｏｇｙのＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  ＨｏｌｄｉｎｇのＡＲＭ命令セット（ＮＥＯＮ等の任意選択の追加の拡張））をサポートすることができる。
【００８４】
コアは、マルチスレッディング（２もしくはそれ以上の並列セットのオペレーションもしくはスレッドを実行する）をサポートし、タイムスライスマルチスレッディング、同時マルチスレッディング（１つの物理コアが、物理コアが同時に、マルチスレッディングする複数のスレッドのそれぞれに対するロジックコアを提供する）、またはそれらの組み合わせ（例えば、タイムスライスフェッチおよびデコード、ならびにインテル（登録商標）ハイパースレッディング技術等における以後の同時マルチスレッディング）を含む様々な様式でサポートし得ることを理解されたい。
【００８５】
レジスタリネーミングは、アウトオブオーダ実行の文脈で説明されるが、レジスタリネーミングは、インオーダアーキテクチャにおいて用いられ得ることを理解されたい。また、プロセッサの図示される実施形態は、別個の命令および複数のデータキャッシュユニット、ならびに共有Ｌ２キャッシュユニットを含むが、複数の代替的な実施形態は、例えば、レベル１（ＬＩ）内部キャッシュまたは複数のレベルの内部キャッシュ等、複数の命令およびデータの双方に対して１つの内部キャッシュを有してもよい。いくつかの実施形態において、システムは、内部キャッシュ、およびコアおよび／またはプロセッサの外部にある外部キャッシュの組み合わせを含んでもよい。あるいは、キャッシュの全ては、コアおよび／またはプロセッサの外部にあってもよい。
【００８６】
図６Ｂは、本開示のいくつかの実施形態による、図６Ａのプロセッサ６００により実装されたインオーダパイプラインおよびレジスタリネーミング段、アウトオブオーダ発行／実行パイプラインを図示するブロック図である。図６Ｂにおける実線のボックスはインオーダパイプラインを図示するが、破線のボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプラインを図示する。図６Ｂにおいて、プロセッサパイプライン６００は、フェッチ段６０２、レングスデコード段６０４、デコード段６０６、割り当て段６０８、リネーミング段６１０、スケジューリング（ディスパッチもしくは発行としても知られる）段６１２、レジスタ読み取り／メモリ読み取り段６１４、実行段６１６、ライトバック／メモリ書き込み段６１８、例外処理段６２２、およびコミット段６２４を含む。いくつかの実施形態において、段６０２〜６２４の順序付けは、図示されるものとは異なる場合があり、図６Ｂに示される具体的な順序付けに限定されない。
【００８７】
図７は、一実施形態による、セキュアなメモリの再パーティショニングを実行するロジック回路を含むプロセッサ７００用のマイクロアーキテクチャのブロック図を図示する。いくつかの実施形態において、一実施形態による命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズ、ならびに単および倍精度の整数および浮動小数点データタイプ等のデータタイプを有するデータ要素上で演算するように実装され得る。一実施形態において、インオーダフロントエンド７０１は、実行されるべき複数の命令をフェッチし、それらをプロセッサパイプラインにおいて後に用いるために用意する、プロセッサ７００の一部である。複数の変換ページおよびセクションの実施形態は、プロセッサ７００に実装され得る。
【００８８】
フロントエンド７０１は、いくつかのユニットを含み得る。一実施形態において、命令プリフェッチャ７２６は、メモリから複数の命令をフェッチし、それらを命令デコーダ７２８へ供給し、命令デコーダ７２８はそれらをデコードまたは変換する。例えば、一実施形態において、デコーダは、機械が実行し得る「マイクロ命令」もしくは「マイクロオペレーション」と呼ばれる１もしくは複数のオペレーション（マイクロｏｐまたはｕｏｐとも呼ばれる）に受信済みの命令をデコードする。複数の他の実施形態において、デコーダは、命令を解析して、一実施形態によるオペレーションを実行するマイクロアーキテクチャにより用いられるオペコードおよび対応するデータ、ならびに制御フィールドにする。一実施形態において、トレースキャッシュ７３０は、デコード済みの複数のｕｏｐを受け取り、それらをプログラムで順序付けられたシーケンスにアセンブルし、または実行するべくｕｏｐキュー７３４においてトレースする。トレースキャッシュ７３０が複合命令に遭遇すると、マイクロコードＲＯＭ７３２はオペレーションを完了するのに必要とされる複数のｕｏｐを提供する。
【００８９】
いくつかの命令は、単一のマイクロｏｐに変換されるが、他のものは、オペレーション全体を完了するのにいくつかのマイクロｏｐを必要とする。一実施形態において、命令を完了するのに４つより多いマイクロｏｐが必要とされる場合、デコーダ７１８は、命令を実行するべくマイクロコードＲＯＭ７３２にアクセスする。一実施形態については、命令は、命令デコーダ７２８において処理するべく少数のマイクロｏｐにデコードされ得る。別の実施形態において、オペレーションを実現するのにいくつかのマイクロｏｐが必要とされる場合、命令は、マイクロコードＲＯＭ７３２内に格納され得る。トレースキャッシュ７３０は、複数のマイクロコードシーケンスを読み取り、一実施形態によるマイクロコードＲＯＭ７３２の１もしくは複数の多くの命令を完了する正しいマイクロ命令ポインタを決定する、エントリポイントプログラマブルロジックアレイ（ＰＬＡ）を示す。マイクロコードＲＯＭ７３２が命令のマイクロｏｐをシーケンス化することを完了した後、マシンのフロントエンド７０１は、トレースキャッシュ７３０から複数のマイクロｏｐをフェッチすることを再開する。
【００９０】
アウトオブオーダ実行エンジン７０３において、実行のために複数の命令が用意される。アウトオブオーダ実行ロジックは、パイプラインを降って実行をスケジューリングさせるときに、複数の命令のフローを円滑にし、再度順序付けることで性能を最適化するいくつかのバッファを有する。アロケータロジックは、各ｕｏｐが実行のために必要とする複数のマシンバッファおよびリソースを割り当てる。レジスタリネーミングロジックは、複数のロジックレジスタをレジスタファイルにおける複数のエントリーへとリネームする。また、アロケータは複数の命令スケジューラ（メモリスケジューラ、高速スケジューラ７０２、低速／一般浮動小数点スケジューラ７０４、および単純浮動小数点スケジューラ７０６）の前に、２つのｕｏｐキュー（１つはメモリオペレーションに関するものであり、１つは非メモリオペレーションに関するものである）の１つにおけるｕｏｐ毎にエントリーを割り当てる。ｕｏｐがそのオペレーションを完了するのに必要とする複数の依存性入力レジスタオペランドソースおよび複数の実行リソースの利用可能性の準備が整ったことに基づいて、ｕｏｐスケジューラ７０２、７０４、７０６は、ｕｏｐがいつ実行する準備が整うかを判断する。一実施形態の高速スケジューラ７０２は、メインクロックサイクルの半分毎にスケジューリングし得るが、他の複数のスケジューラは、メインプロセッサのクロックサイクル毎に１回のみスケジューリングし得る。複数のスケジューラは、実行のために複数のｕｏｐをスケジューリングする複数のディスパッチポートについて仲裁する。
【００９１】
レジスタファイル７０８、７１０は、スケジューラ７０２、７０４、７０６と、実行ブロック７１１の実行ユニット７１２、７１４、７１６、７１８、７１０、７１２、７１４との間にある。整数および浮動小数点のオペレーションのために各々、別個のレジスタファイル７０８、７１０が存在する。また、一実施形態の各レジスタファイル７０８、７１０は、完了したばかりの、レジスタファイルにまだ書き込まれていない複数の結果を、複数の新しい依存性ｕｏｐへとバイパスし、または進め得るバイパスネットワークを含む。また整数レジスタファイル７０８および浮動小数点レジスタファイル７１０は、他のものとデータを通信することができる。一実施形態については、整数レジスタファイル７０８は、２つの別個のレジスタファイルに分割され、１つのレジスタファイルは、データの下位の３２ビットのためのものであり、第２のレジスタファイルは、データの上位の３２ビットのためのものである。複数の浮動小数点命令は通常、６４〜１２８ビット幅の複数のオペランドを有するので、一実施形態の浮動小数点レジスタファイル７１０は１２８ビット幅の複数のエントリーを有する。
【００９２】
実行ブロック７１１は、実行ユニット７１２、７１４、７１６、７１８、７１０、７１２、７１４を含み、複数の命令が実際に実行される。このセクションは、複数のマイクロ命令を実行するのに必要とする複数の整数および浮動小数点データオペランド値を格納するレジスタファイル７０８、７１０を含む。一実施形態のプロセッサ７００は、いくつかの実行ユニット、アドレス生成ユニット（ＡＧＵ）７１２、ＡＧＵ７１４、高速ＡＬＵ７１６、高速ＡＬＵ７１８、低速ＡＬＵ７１０、浮動小数点ＡＬＵ７１２、浮動小数点移動ユニット７１４から構成される。一実施形態については、浮動小数点実行ブロック７１２、７１４は、浮動小数点、ＭＭＸ、ＳＩＭＤ、ＳＳＥ、または複数の他のオペレーションを実行する。一実施形態の浮動小数点ＡＬＵ７１２は、除算、平方根、および残余のマイクロｏｐを実行する、６４ビット×６４ビットの浮動小数点ディバイダを含む。本開示の複数の実施形態については、複数の浮動小数点値を含む命令は、浮動小数点ハードウェアにより扱われ得る。
【００９３】
一実施形態において、複数のＡＬＵオペレーションは、高速ＡＬＵ実行ユニット７１６、７１８に向かう。一実施形態の高速ＡＬＵ７１６、７１８は、クロックサイクルの半分の有効レイテンシで高速のオペレーションを実行し得る。一実施形態については、複数の複合整数オペレーションの大部分は、低速ＡＬＵ７１０に向かう。低速ＡＬＵ７１０は、マルチプライア、シフト、フラグロジック、および分岐処理等の長レイテンシタイプの複数のオペレーションに対する整数実行ハードウェアを含むからである。複数のメモリロード／ストアオペレーションは、ＡＧＵ７１２、７１４により実行される。一実施形態については、整数ＡＬＵ７１６、７１８、７１０は、複数の６４ビットデータオペランドに対して複数の整数オペレーションを実行する環境の文脈で説明される。複数の代替的な実施形態において、ＡＬＵ７１６、７１８、７１０は、１６、３２、１２８、２５６等を含む様々なデータビットをサポートするように実装され得る。同様に、浮動小数点ユニット７１２、７１４は、様々な幅のビットを有する範囲のオペランドをサポートするように実装され得る。一実施形態については、浮動小数点ユニット７１２、７１４は、１２８ビット幅の複数のパックドデータオペランドで、ＳＩＭＤおよびマルチメディア命令を伴って処理し得る。
【００９４】
一実施形態において、ｕｏｐスケジューラ７０２、７０４、７０６は、親ロードが実行を終了する前に複数依存性オペレーションをディスパッチする。複数のｕｏｐはプロセッサ７００において投機的にスケジューリングされ実行されるので、プロセッサ７００は、メモリミスを処理するロジックも含む。データロードがデータキャッシュでミスを起こした場合、一時的に誤ったデータと共にスケジューラを離れた複数の依存性オペレーションがパイプライン内でインフライトであり得る。リプレイメカニズムは、誤ったデータを用いる複数の命令を追跡し、再実行する。依存性オペレーションのみがリプレイされる必要があり、独立したものは、完了することが可能である。プロセッサの一実施形態における複数のスケジューラおよびリプレイメカニズムは、複数のテキスト文字列比較オペレーションの命令シーケンスをキャッチするようにも設計される。
【００９５】
プロセッサ７００は、一実施形態によるセキュアなメモリの再パーティショニングを実装するロジックも含む。一実施形態において、プロセッサ７００の実行ブロック７１１は、本明細書における説明による、セキュアなメモリの再パーティショニングを実行するＭＣＵ１１５を含み得る。
【００９６】
「レジスタ」という用語は、複数のオペランドを識別する命令の一部として用いられるオンボードプロセッサストレージの位置を指し得る。換言すれば、複数のレジスタは、プロセッサの（プログラマから見て）外部から利用可能なものである。しかし、実施形態の複数のレジスタは、特定のタイプの回路に、その意味が限定されるべきではない。むしろ、実施形態のレジスタは、データを格納および提供し、本明細書に説明されている複数の機能を実行することができる。本明細書において説明される複数のレジスタは、専用物理レジスタ、レジスタリネーミングを用いる動的に割り当てられた物理レジスタ、専用および動的に割り当てられた物理レジスタ等の組み合わせ等、任意の多くの異なる技術を用いるプロセッサ内に回路により実装され得る。一実施形態において、複数の整数レジスタは、３２ビットの整数データを格納する。また、一実施形態のレジスタファイルは、パックドデータのための８つのマルチメディアＳＩＭＤレジスタを含む。
【００９７】
本明細書での検討において、レジスタは、カリフォルニア州サンタクララのインテルコーポレーションのＭＭＸ技術により可能にされるマイクロプロセッサにおける６４ビット幅のＭＭＸ（商標）レジスタ（いくつかの例において「ｍｍ」レジスタとも称される）等、パックドデータを保持するように設計されたデータレジスタであるものと理解されている。これらのＭＭＸレジスタは、整数および浮動小数点の双方の形式で利用可能であり、ＳＩＭＤおよびＳＳＥ命令を伴うパックドデータ要素で動作し得る。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４またはそれ以降（一般に「ＳＳＥｘ」と称される）の技術に関する１２８ビット幅のＸＭＭレジスタは、そのような複数のパックドデータオペランドを保持するようにも用いられ得る。一実施形態において、パックドデータおよび整数データを格納するときに、複数のレジスタは、２つのデータタイプを区別する必要はない。一実施形態において、整数および浮動小数点は、同一のレジスタファイル、または異なるレジスタファイルに含まれる。更に、一実施形態において、浮動小数点および整数データは、異なるレジスタ、または同一のレジスタに格納され得る。
【００９８】
複数の実施形態は、多くの異なるシステムのタイプに実装され得る。ここで図８を参照すると、一実装による、マルチプロセッサシステム８００のブロック図が示される。図８に示されるように、マルチプロセッサシステム８００は、ポイントツーポイント相互接続システムであり、第１のプロセッサ８７０、およびポイントツーポイント相互接続８５０を介して結合される第２のプロセッサ８８０を含む。図８に示されるように、各プロセッサ８７０および８８０は、第１および第２のプロセッサコア（すなわち、プロセッサコア８７４ａおよび８７４ｂ、ならびにプロセッサコア８８４ａおよび８８４ｂ）を含むマルチコアプロセッサであり得るが、潜在的により多くのコアがプロセッサに存在し得る。プロセッサは各々、本発明の一実施形態によるハイブリッド書き込みモードロジックを含み得る。複数の変換ページおよびセクションの実施形態は、プロセッサ８７０、プロセッサ８８０または双方にに実装され得る。
【００９９】
２つのプロセッサ８７０、８８０と共に示されているが、本開示の範囲は、そのように限定されないものと理解されたい。他の複数の実装において、１または複数の追加のプロセッサは、所与のプロセッサ内に存在し得る。
【０１００】
プロセッサ８７０、８８０は、集積メモリコントローラユニット８７２、８８２を各々含むものとして示されている。また、プロセッサ８７０は、その複数のバスコントローラユニットの一部として、ポイントツーポイント（Ｐ―Ｐ）インターフェース８７６および８８８を含む。同様に、第２のプロセッサ８８０は、Ｐ−Ｐインターフェース８８６および８８８を含む。プロセッサ８７０、８８０は、複数のＰ―Ｐインターフェース回路８７８、８８８を用いて、ポイントツーポイント（Ｐ―Ｐ）インターフェース８５０を介して情報を交換し得る。図８に示されるように、ＩＭＣ８７２および８８２は、複数のプロセッサを各メモリ、すなわち、メモリ８３２およびメモリ８３４に結合させるが、メモリ８３２およびメモリ８３４は、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る。
【０１０１】
プロセッサ８７０、８８０は各々、ポイントツーポイントインターフェース回路８７６、８９４、８８６、８９８を用い、個々のＰ−Ｐインターフェース８５２、８５４を介し、チップセット８９０と情報を交換し得る。また、チップセット８９０は、高性能グラフィックスインターフェース８３９を介し、高性能グラフィックス回路８３８と情報を交換し得る。
【０１０２】
共有キャッシュ（図示せず）は、どちらかのプロセッサ内または双方のプロセッサの外側に含まれるが、Ｐ―Ｐ相互接続を介して複数のプロセッサとなおも接続され得、従って、プロセッサが低電力モードに置かれると、どちらかまたは双方のプロセッサのローカルキャッシュ情報は、共有キャッシュ内に格納され得る。
【０１０３】
チップセット８９０は、インターフェース８９６を介して第１のバス８１６に結合され得る。一実施形態において、第１のバス８１６は、周辺構成要素相互接続（ＰＣＩ）バス、またはＰＣＩエクスプレスバスもしくは別の第三世代Ｉ／Ｏ相互接続バス等のバスであってもよいが、本開示の範囲は、そのように限定されない。
【０１０４】
図８に示されるように、様々なＩ／Ｏデバイス８１４が、第１のバス８１６を第２のバス８２０に結合するバスブリッジ８１８と共に、第１のバス８１６に結合され得る。一実施形態において、第２のバス８２０は、低ピンカウント（ＬＰＣ）バスであり得る。一実施形態において、様々なデバイスは、例えば、キーボードおよび／もしくはマウス８２２、通信デバイス８２７、ならびに複数の命令／コードおよびデータ８３０を含み得るディスクドライブもしくは他の大容量ストレージデバイス等、ストレージユニット８２８を含む、第２のバス８２０に結合され得る。更に、オーディオＩ／Ｏ８２４は第２のバス８２０に結合され得る。他の複数のアーキテクチャが可能であることに留意されたい。例えば、図８のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバスまたは他のそのようなアーキテクチャを実装してもよい。
【０１０５】
ここで図９を参照すると、本発明の一実施形態による第３のシステム９００のブロック図が示されている。図８および図９における同一の複数の要素は、同一の参照番号を有し、図８の複数の特定の態様は、図９の他の複数の態様を不明瞭にしないように、図９では省略されている。
【０１０６】
図９は、プロセッサ９７０、９８０が統合メモリおよびＩ／Ｏ制御ロジック（「ＣＬ」）９７２および９８２を各々含み得ることを図示する。少なくとも１つの実施形態については、ＣＬ９７２、９８２は、本明細書において説明されるもの等、複数の集積メモリコントローラユニットを含み得る。更に、ＣＬ９７２、９８２は、Ｉ／Ｏ制御ロジックも含み得る。図９はメモリ９３２、９３４がＣＬ９７２、９８２に結合され、Ｉ／Ｏデバイス９１４も制御ロジック９７２、９８２に結合されていることを図示する。複数のレガシーＩ／Ｏデバイス９１５は、チップセット９９０に結合される。複数の変換ページおよびセクションの実施形態は、プロセッサ９７０、プロセッサ９８０または双方にに実装され得る。
【０１０７】
図１０は、複数のコア１００２のうち１または複数を含み得る例示的なシステムオンチップ（ＳｏＣ）である。当技術分野で既知のラップトップ、デスクトップ、ハンドヘルド型ＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッドプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルド型デバイス、および他の様々な電子デバイスのための他のシステム設計および構成も好適である。一般に、本明細書において開示されるプロセッサおよび／または他の実行ロジックを組み込むことができる多種多様なシステムまたは電子デバイスが、概ね好適である。
【０１０８】
ここで図１０を参照すると、本開示の一実施形態によるＳｏＣ１０００のブロック図が示されている。図５Ａおよび図５Ｂにおける複数の類似の要素は、同一の参照番号を有する。また、破線のボックスは、より高度なＳｏＣにおける機能である。図１０において、相互接続ユニット１００２は、１もしくは複数のコア１００２Ａ〜Ｎならびに共有キャッシュユニット１００６のセットを含むアプリケーションプロセッサ１０１０、システムエージェントユニット１０１０、バスコントローラユニット１０１６、集積メモリコントローラユニット１０１４、統合グラフィックスロジック１００８、静止画および／もしくは動画カメラ機能を提供する画像プロセッサ１０２４、ハードウェアのオーディオ加速度を提供するオーディオプロセッサ１０２６、ならびに動画エンコード／デコード加速度を提供するビデオプロセッサ１０２８を含み得る１セットまたは１もしくは複数のメディアプロセッサ１０２０、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１０３０、直接メモリアクセス（ＤＭＡ）ユニット１０３２、ならびに１もしくは複数の外部ディスプレイに結合するディスプレイユニット１０４０に結合される。変換ページおよびセクションの実施形態は、ＳｏＣ１０００に実装され得る。
【０１０９】
次に図１１を参照すると、本開示の複数の実施形態による、システムオンチップ（ＳｏＣ）設計の一実施形態が図示される。図示的な例として、ＳｏＣ１１００はユーザ機器（ＵＥ）に含まれる。一実施形態において、ＵＥは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付ノートブック、または、その他の類似の通信デバイス等、通信目的でエンドユーザにより使用される任意のデバイスを示す。ＵＥは、性質においてＧＳＭ（登録商標）ネットワークにおける移動局（ＭＳ）に対応し得る、基地局またはノードに接続し得える。変換ページおよびセクションの実施形態は、ＳｏＣ１１００に実装され得る。
【０１１０】
ここでは、ＳｏＣ１１００は、２つのコア１１０６および１１０７を含む。上記の検討と同様に、コア１１０６および１１０７は、インテル（登録商標）のアーキテクチャコア（登録商標）を有するプロセッサ、アドバンスドマイクロデバイスセズ株式会社（ＡＭＤ）のプロセッサ、ＭｌＰＳベースのプロセッサ、ＡＲＭベースのプロセッサ設計、またはそれらの顧客、ならびにそれらの特許権者もしくは採用者等の命令セットアーキテクチャに適合し得る。コア１１０６および１１０７は、バスインターフェースユニット１１０９およびＬ２キャッシュ１１１０に関連し、システム１１００の他の一部と通信するキャッシュ制御器１１０８に結合されている。相互接続１１１１は、ＩＯＳＦ、ＡＭＢＡ等のオンチップ相互接続、または上記の他の相互接続を含み、これらは説明される本開示の１または複数の態様を実装し得る。
【０１１１】
相互接続１１１１は、ＳＩＭカードにインターフェース接続する加入者識別モジュール（ＳＩＭ）１１３０、ＳｏＣ１１００を初期化およびブートするべくコア１１０６および１１０７により実行するブートコードを保持するブートＲＯＭ１１３５、外部メモリ（例えばＤＲＡＭ１１６０）とインターフェースするＳＤＲＡＭコントローラ１１４０、不揮発性メモリ（例えばフラッシュ１１６５）とインターフェース接続するフラッシュコントローラ１１４５、周辺機器とインターフェース接続する周辺制御器１１５０（例えば、シリアル周辺機器インターフェース）、入力（例えば、タッチでイネーブルされる入力）を表示および受信する動画コーデック１１２０および動画インターフェース１１２５、グラフィックス関連の計算を実行するＧＰＵ１１１５等、複数の他のコンポーネントに複数の通信チャネルを提供する。これらのインターフェースのいずれも、本明細書において説明される実施形態の複数の態様を組み込み得る。
【０１１２】
更に、システムは、ブルートゥースモジュール１１７０、３Ｇモデム１１７５、ＧＰＳ１１８０、およびＷｉ−Ｆｉ１１８５等、通信用周辺機器を図示する。上述のように、ＵＥは通信用無線を含むことに留意されたい。結果として、これらの周辺機器通信モジュールは、全てが含まれない場合がある。しかし、ＵＥにおいて、いくつかの形態の外部通信用の無線が備えられるべきである。
【０１１３】
図１２は、例示的な形態のコンピューティングシステム１２００における図的表現のマシンを図示し、この中で、マシンに本明細書において検討される複数の方法論のうち任意の１または複数を実行させる命令のセットが実行され得る。代替的な実施形態において、マシンが、ＬＡＮ、インターネット、エクストラネット、またはイントラネット内の他のマシンに接続され得る（例えば、ネットワーク接続）。マシンは、クライアントサーバネットワーク環境におけるサーバもしくはクライアントデバイスの容量で、またはピアツーピア（もしくは分散された）ネットワーク環境におけるピアマシンとして動作し得る。マシンは、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、ウェブ機器、サーバ、ネットワークルータ、スイッチもしくはブリッジ、または当該マシンにより取られるべき複数のアクションを指定する（シーケンシャルまたはその他の）命令のセットを実行することができる任意のマシンであってもよい。更に、単一のマシンのみが図示されているが、「マシン」という用語は、本明細書において検討される複数の方法論のうち任意の１または複数を実行する命令のセット（または複数のセット）を個々に、または共同して実行するマシンの任意の集合を含むと解釈されるものとする。複数の変換ページおよびセクションの実施形態は、コンピューティングシステム１２００に実装され得る。
【０１１４】
コンピューティングシステム１２００は、処理デバイス１２０２、メインメモリ１２０４（例えば、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）もしくはＤＲＡＭ（ＲＤＲＡＭ）等）、スタティックメモリ１２０６（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）等）、およびデータストレージデバイス１２１８を含み、これらは、バス１２３０を介して互いに通信する。
【０１１５】
処理デバイス１２０２は、マイクロプロセッサ、中央処理装置等、１または複数の汎用処理デバイスを表わす。より具体的には、処理デバイスは、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッサ、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッサ、超長命令語（ＶＬＩＷ）マイクロプロセッサ、もしくは他の命令セットを実装するプロセッサ、または複数の命令セットの組み合わせを実装するプロセッサであってもよい。また、処理デバイス１２０２は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号プロセッサ（ＤＳＰ）、ネットワークプロセッサ等、１または複数の特定用途処理デバイスであってもよい。一実施形態において、処理デバイス１２０２は、１または複数のプロセッサコアを含み得る。処理デバイス１２０２は、本明細書において検討される複数のオペレーションを実行するための処理ロジック１２２６を実行するように構成される。一実施形態において、処理デバイス１２０２は、図１のコンピューティングシステム１００の一部であり得る。あるいは、コンピューティングシステム１２００は、本明細書において説明される複数の他のコンポーネントを含み得る。コアは、マルチスレッディング（２もしくはそれ以上の並列セットのオペレーションもしくはスレッドを実行する）をサポートし、タイムスライスマルチスレッディング、同時マルチスレッディング（１つの物理コアが、物理コアが同時に、マルチスレッディングする複数のスレッドのそれぞれに対するロジックコアを提供する）、またはそれらの組み合わせ（例えば、タイムスライスフェッチおよびデコード、ならびにインテル（登録商標）ハイパースレッディング技術等における以後の同時マルチスレッディング）を含む様々な様式でサポートし得ることを理解されたい。
【０１１６】
コンピューティングシステム１２００は、ネットワーク１２２０に通信可能に結合されたネットワークインターフェースデバイス１２０８を更に含み得る。コンピューティングシステム１２００は、動画ディスプレイユニット１２１０（例えば、液晶ディスプレイ（ＬＣＤ）もしくはブラウン管（ＣＲＴ））、英数字入力デバイス１２１２（例えばキーボード）、カーソル制御デバイス１２１４（例えばマウス）、信号生成デバイス１２１６（例えばスピーカ）、または他の複数の周辺デバイスも含み得る。更に、コンピューティングシステム１２００は、グラフィックス処理ユニット１２２２、動画処理ユニット１２２８、およびオーディオ処理ユニット１２３２を含み得る。別の実施形態において、コンピューティングシステム１２００は、チップセット（図示せず）を含み得、これは、処理デバイス１２０２と共に機能するように設計された複数の集積回路もしくはチップのグループを指し、処理デバイス１２０２と複数の外部デバイスとの間の通信を制御する。例えば、チップセットは、処理デバイス１２０２を、メインメモリ１２０４およびグラフィックスコントローラ等の複数の超高速デバイスにリンクさせ、ならびに処理デバイス１２０２を、ＵＳＢ、ＰＣＩもしくはＩＳＡバス等の周辺機器の複数の低速周辺バスにリンクさせるマザーボード上の複数のチップのセットであってもよい。
【０１１７】
データストレージデバイス１２１８は、コンピュータ可読ストレージ媒体１２２４を含み得、この上に、本明細書において説明される複数の方法論の機能のうち１または複数を実施するソフトウェア１２２６が格納されている。また、ソフトウェア１２２６は、コンピューティングシステム１２００により実行される間、命令１２２６としてメインメモリ１２０４内に、および／または処理ロジック１２２６として処理デバイス１２０２の内部に、完全に、または少なくとも部分的に存在し得る。メインメモリ１２０４および処理デバイス１２０２もコンピュータ可読ストレージ媒体を構成する。
【０１１８】
また、コンピュータ可読ストレージ媒体１２２４は、図１に関して説明されたような処理デバイス１２０２、および／または上記の複数のアプリケーションを呼び出す複数の方法を含むソフトウェアライブラリを利用いて、複数の命令１２２６を格納するべく用いられ得る。コンピュータ可読ストレージ媒体１２２４は、例示的な実施形態において単一の媒体として示されているが、「コンピュータ可読ストレージ媒体」という用語は、１もしくは複数のセットの命令を格納する単一の媒体もしくは複数の媒体（例えば、集中もしくは分散データベース、および／または関連するキャッシュおよびサーバ）を含むものと解釈されるべきである。また、「コンピュータ可読ストレージ媒体」という用語は、マシンにより実行する命令のセットを格納、エンコードもしくは搬送することができ、かつ本実施形態の複数の方法論のうち任意の１または複数をマシンに実行させる任意の媒体を含むものと解釈されるものである。従って、「コンピュータ可読ストレージ媒体」という用語は、ソリッドステートメモリ、ならびに光および磁気媒体を含むが、これらに限定されないものと解釈されるものである。以下の複数の例は、更なる実施形態に関する。
【０１１９】
例１は、１）プロセッサコアと、２）プロセッサコアとメインメモリとの間に結合されたメモリコントローラとを備え、メインメモリは、複数のセキュアなページまたはセキュアでないページに変換され得る複数の変換可能なページのセクションを含むメモリ範囲を含み、プロセッサコアは、ページ変換命令に応答して、ａ）命令から変換されるメモリ範囲内の変換可能なページを判断し、ｂ）セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換可能なページを変換する、プロセッサである。
【０１２０】
例２において、例１のページ変換命令は、第１の変換命令であり、プロセッサコアは、第１の変換命令に応答して、セキュアでないページからセキュアなページに変換可能なページを変換する。
【０１２１】
例３において、例１〜２のいずれか１つのプロセッサコアは、第１の変換命令に応答して、ａ）変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証することと、ｂ）変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアでないようにセットされることを検証することと、ｃ）プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、ｄ）ページキャッシュマップエントリのセキュアなビットをセキュアになるようにセットすることと、ｅ）プロセッサコアに対するアドレスの変換を無効化することとを実行する。
【０１２２】
例４において、例１〜３のいずれか１つのプロセッサにおけるページ変換命令は、第２の変換命令であり、プロセッサコアは、第２の変換命令に応答して、セキュアなページからセキュアでないページに変換可能なページを変換する。
【０１２３】
例５において、例１〜４のいずれか１つのプロセッサコアは、第２の変換命令に応答して、ａ）変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証することと、ｂ）変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアになるようにセットされることを検証することと、ｃ）ページキャッシュマップエントリの有効ビットが無効にセットされることを検証することと、ｄ）プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、ｅ）ページキャッシュマップエントリのセキュアなビットをセキュアでないようにセットすることと、ｆ）プロセッサコアに対するアドレスの変換を無効化することとを実行する。
【０１２４】
例６において、例１〜５のいずれか１つのメモリ範囲は、ハードウェアの保留済みセクションを含み、プロセッサコアは、セクション変換命令に応答して、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるようにハードウェアの保留済みセクションを変換する。
【０１２５】
例７において、例１〜６のいずれか１つのセクション変換命令は、第３の変換命令であり、プロセッサコアは、第３の変換命令に応答して、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換する。
【０１２６】
例８において、例１〜７のプロセッサは、プロセッサコアとメインメモリとの間に結合されたＭＥＥを更に備え、プロセッサコアは、第３の変換命令に応答して、ａ）第３の変換命令のアドレスが、ハードウェアの保留済みセクションにおけるページを示すことを保証することと、ｂ）メモリ範囲のハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証することと、ｃ）ＭＥＥに、ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするように命令することと、ｄ）ＭＥＥに、ハードウェアの保留済みセクションを開始状態にするように命令することとを実行する。
【０１２７】
例９において、例１〜９のいずれか１つのセクション変換命令は、第４の変換命令であり、プロセッサコアは、第４の変換命令に応答して、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換する。
【０１２８】
例１０において、例１〜９のいずれか１つのプロセッサは、プロセッサコアとメインメモリとの間に結合されたＭＥＥを更に備え、ハードウェアの保留済みセクションは、メモリ範囲のレプレイ保護および整合性メタデータを格納し、プロセッサコアは、第４の変換命令に応答して、ａ）第４の変換命令ポイントのアドレスがハードウェアの保留済みセクション内のページを示すことを保証することと、ｂ）ハードウェアの保留済みセクションに対応するＥＰＣセクション内の複数のページが、セキュアでない状態にないことを保証することと、ｃ）ＭＥＥに、ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするように命令することと、ｄ）ＭＥＥに、その内部キャッシュからのハードウェアの保留済みセクション（例えば、リプレイ保護セクション）の複数のコンテンツをフラッシュするように命令することとを実行する。
【０１２９】
例１１において、例１〜１０のいずれか１つのメモリ範囲は、変換され得ない別のハードウェアの保留済みセクションを更に含む。例１２において、例１〜１１のいずれか１つのメインメモリは、セキュアでないメモリ範囲を含む。
【０１３０】
様々な実施形態は、上記の複数の構造的機能の異なる組み合わせを有し得る。例えば、上記のコンピューティングシステムの全ての任意選択の機能は、本明細書において説明される方法または処理に関しても実装され得、複数の例における具体的事柄は、１または複数の実施形態のいずれかの箇所で用いられ得る。
【０１３１】
例１３において、方法は、１）プロセッサのプロセッサコアにより、ページ変換命令をデコードして、プロセッサコアに結合されたメインメモリにおいてメモリ範囲内で変換可能なページを変換する段階と、２）プロセッサコアにより、ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換可能なページを変換する段階とを備え、メモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換可能である、複数の変換可能なページのセクションを含む。
【０１３２】
例１４において、例１３の方法は、ページ変換命令が第１の変換命令である場合に、プロセッサコアにより、セキュアでないページからセキュアなページに変換可能なページを変換する段階と、ページ変換命令が第２の変換命令である場合に、プロセッサコアにより、セキュアなページからセキュアでないページに変換可能なページを変換する段階とを更に備える。
【０１３３】
例１５において、例１３〜１４のいずれか１つの方法は、第１の変換命令に応答して、ａ）変換可能なページのアドレスがセキュアなページに変換可能なページを示すことを保証する段階と、ｂ）変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアでないようにセットされることを検証する段階と、ｃ）プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、ｄ）ページキャッシュマップエントリのセキュアなビットをセキュアになるようにセットする段階と、ｅ）プロセッサコアに対するアドレスの変換を無効化する段階とを更に備える。
【０１３４】
例１６において、例１３〜１５のいずれか１つの方法は、第２の変換命令に応答して、ａ）変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証する段階と、ｂ）変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアになるようにセットされることを検証する段階と、ｃ）ページキャッシュマップエントリの有効ビットが無効にセットされることを検証する段階と、ｄ）プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、ｅ）ページキャッシュマップエントリのセキュアなビットをセキュアでないようにセットする段階と、ｆ）プロセッサコアに対するアドレスの変換を無効化する段階とを更に備える。
【０１３５】
例１７において、例１３〜１６のいずれか１つの方法では、メモリ範囲は、ハードウェアの保留済みセクションを更に備え、方法は、ａ）プロセッサコアにより、セクション変換命令をデコードして、メモリ範囲内でハードウェアの保留済みセクションを変換する段階と、ｂ）セクション変換命令を実行して、ハードウェアの保留済みセクションを、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように変換する段階とを更に備える。
【０１３６】
例１８において、例１３〜１７のいずれか１つの方法は、プロセッサコアにより、セクション変換命令が第３の変換命令である場合に、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換する段階と、セクション変換命令が第４の変換命令である場合に、プロセッサコアにより、セキュアなセクションからセキュアでないセクションにハードウェアの保留済みセクションを変換する段階とを更に備える。
【０１３７】
例１９において、例１３〜１８のいずれか１つの方法は、ハードウェアの保留済みセクションをセキュアでないものからセキュアなものに変換する第３の変換命令に応答して、ａ）第３の変換命令のアドレスがハードウェアの保留済みセクションにおけるページを示すことを保証する段階と、ｂ）メモリ範囲のハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証する段階と、ｃ）プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）に、ハードウェアの保留済みセクションのためのリプレイ保護フィルタをインストールするように命令する段階と、ｄ）ＭＥＥに、ハードウェアの保留済みセクションを開始状態にするように命令する段階と、ハードウェアの保留済みセクションをセキュアなものからセキュアでないものに変換する第４の変換命令に応答して、ｅ）第４の変換命令のアドレスが、ハードウェアの保留済みセクションにおけるページを示すことを保証する段階と、ｆ）ハードウェアの保留済みセクションに対応するＥＰＣセクションにおけるなページがセキュアでない状態にあることを保証する段階と、ｇ）ＭＥＥに、ハードウェアの保留済みセクション用のリプレイ保護フィルタをアンインストールするように命令する段階と、ｈ）ＭＥＥに、その内部キャッシュからのハードウェアの保留済みセクション（例えば、リプレイ保護セクション）の複数のコンテンツをフラッシュさせるように命令する段階とを更に備える。
【０１３８】
様々な実施形態は、上記の複数の構造的機能の異なる組み合わせを有し得る。例えば、上記の複数のプロセッサおよび方法の全ての任意選択の機能は、本明細書において説明されるシステムに関しても実装され得、複数の例における具体的事柄は、１または複数の実施形態のいずれかの箇所で用いられ得る。
【０１３９】
例２０は、１）複数の命令を実行する複数の演算器を有するプロセッサと、２）プロセッサに結合されたメモリデバイスとを備え、メモリデバイスは、コードメモリおよびデータメモリを格納するように動作可能であり、複数のセキュアなページまたは複数のセキュアでないページに変換可能である複数の変換可能なページのセクションを含むメモリ範囲を有し、プロセッサコアは、ａ）ページ変換命令をデコードして、メモリ範囲内で変換可能なページを変換し、ｂ）ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換可能なページを変換するように構成される、システムである。
【０１４０】
例２１において、例２０のシステムで、ページ変換命令は、第１の変換命令であり、プロセッサコアは、第１の変換命令に応答して、セキュアでないページからセキュアなページに変換可能なページを変換し、プロセッサコアは、第１の変換命令に応答して、ａ）変換可能なページのアドレスがセキュアなページに変換可能なページを示すことを保証することと、ｂ）変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアでないようにセットされるこをと検証することと、ｃ）プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、ｄ）ページキャッシュマップエントリのセキュアなビットをセキュアになるようにセットすることと、ｅ）プロセッサコアに対するアドレスの変換を無効化することを実行する。
【０１４１】
例２２において、例２０〜２１のいずれか１つのシステムは、ページ変換命令は、第２の変換命令であり、プロセッサコアは、第２の変換命令に応答して、セキュアなページからセキュアでないページに変換可能なページを変換し、プロセッサコアは、第２の変換命令に応答して、ａ）変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証することと、ｂ）変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアになるようにセットされることを検証することと、ｃ）ページキャッシュマップエントリの有効ビットが無効にセットされることを検証することと、ｄ）プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、ｅ）ページキャッシュマップエントリのセキュアなビットをセキュアでなくなるようにセットすることと、ｆ）プロセッサコアに対するアドレスの変換を無効化することとを実行する。
【０１４２】
例２３において、例２０〜２２のいずれか１つのシステムで、メモリ範囲は、ハードウェアの保留済みセクションを更に含み、プロセッサコアは、セクション変換命令に応答して、ａ）セクション変換命令をデコードして、ハードウェアの保留済みセクションを変換し、ｂ）セクション変換命令を実行して、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるようにハードウェアの保留済みセクションを変換する。
【０１４３】
例２４において、例２０〜２３のいずれか１つのシステムは、プロセッサコアとメインメモリとの間に結合されたＭＥＥを更に備え、セクション変換命令は、第３の変換命令であり、プロセッサコアは、第３の変換命令に応答して、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換し、プロセッサコアは、第３の変換命令に応答して、ａ）第３の変換命令のアドレスが、ハードウェアの保留済みセクションにおけるページを示すことを保証することと、ｂ）メモリ範囲のハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証することと、ｃ）ＭＥＥに、ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするように命令することと、ｄ）ＭＥＥに、ハードウェアの保留済みセクションを開始状態にするように命令することとを実行する。
【０１４４】
例２５において、例２０〜２４のいずれかのシステムは、プロセッサコアとメインメモリとの間に結合されたＭＥＥを更に備え、セクション変換命令は、第４の変換命令であり、ＭＥＥは、第４の変換命令に応答して、セキュアなセクションからセキュアでないセクションにハードウェアの保留済みセクションを変換し、プロセッサコアは、第４の変換命令に応答して、ａ）第４の変換命令のアドレスが、ハードウェアの保留済みセクションのページを示すことを保証することと、ｂ）ハードウェアの保留済みセクションに対応するＥＰＣセクションにおける複数の変換可能なページが、セキュアでない状態にあることを保証することと、ｃ）ＭＥＥに、ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするように命令することと、ｄ）ＭＥＥに、内部キャッシュからハードウェアの保留済みセクションの複数のコンテンツをフラッシュするように命令することとを実行する。
【０１４５】
様々な実施形態は、上記の複数の動作可能な機能の異なる組み合わせを有し得る。例えば、上記の方法の全ての任意選択の機能は、非一時的コンピュータ可読ストレージ媒体に対しても実装され得る。複数の例における具体的事柄は、１または複数の実施形態のいずれの箇所でも用いられ得る。
【０１４６】
例２６は、プロセッサにより実行されると、プロセッサに例１３〜１９の方法を実行させる複数の命令を含む、非一時的コンピュータ可読ストレージ媒体である。
【０１４７】
例２７は、複数の命令を実行するプロセッサコアと、プロセッサコアに結合されたメモリコントローラユニット（ＭＣＵ）とを有するシステムオンチップ（ＳｏＣ）を備えるシステムであり、プロセッサコアは、例１５〜２１の方法を実行するように構成される。
【０１４８】
例２８において、例２７のＳｏＣは、例１〜１４および２２〜２７の主題を更に備える。
【０１４９】
例２９は、１）プロセッサのプロセッサコアと、２）ページ変換命令をデコードして、プロセッサコアに結合されたメインメモリにおいてメモリ範囲内で変換可能なページを変換する手段と、３）ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように変換可能なページを変換する手段とを備え、メモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換可能である、複数の変換可能なページのセクションを含む装置である。
【０１５０】
例３０において、例２９の装置は、例１〜１４および２２〜２７の主題を更に備える。
【０１５１】
例３１は、メモリデバイスと、メモリ暗号化エンジン（ＭＥＥ）を有するプロセッサを備えるシステムであり、プロセッサは、例１３〜１９のいずれか１つの方法を実行するように構成される。
【０１５２】
例３２において、例３１のプロセッサは、例１〜１２および２０〜２５のいずれか１つの主題を更に備える。
【０１５３】
本発明は限定された数の実施形態に関して説明されたが、当業者であればそこから様々な修正形態および改変形態を理解するであろう。添付の特許請求の範囲が、本発明の真の趣旨および範囲に含まれるそのような全ての修正形態および改変形態を包含することが意図される。
【０１５４】
本明細書における説明において、本発明を完全な理解を提供するべく、特定のタイプのプロセッサおよびシステム構成、特定のハードウェア構造、特定のアーキテクチャおよびマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令型、特定のシステムコンポーネント、特定の寸法／高さ、特定のプロセッサパイプライン段、およびオペレーションの例等、様々な具体的な詳細を記載している。しかし、本発明を実施するのにこれらの具体的な詳細を使用する必要がないことは、当業者にとって明らかであろう。他の複数の例において、特定の代替的プロセッサアーキテクチャ、説明されたアルゴリズムの特定のロジック回路／コード、特定のファームウェアコード、特定の相互接続動作、特定のロジック構成、特定の製造技術および材料、特定のコンパイラ実装、コード中の特定のアルゴリズム表現、特定のパワーダウンおよびゲーティング技術／ロジック、ならびに他の特定のコンピュータシステムの動作可能な詳細等、周知の複数のコンポーネントまたは方法は、本発明を不必要に不明瞭にするのを回避するべく、詳細には説明されない。
【０１５５】
複数の実施形態は、コンピューティングプラットフォームまたはマイクロプロセッサ等における特定の集積回路のセキュアなメモリの再パーティショニングを参照して説明されている。また、複数の実施形態は、他のタイプの集積回路およびプログラマブルロジックデバイスに適用可能であり得る。例えば、複数の開示された実施形態は、デスクトップコンピュータシステムまたはインテル（登録商標）のウルトラブック（商標）コンピュータ等、携帯型コンピュータに限定されない。また、ハンドヘルドデバイス、タブレット、他の薄いノートブック、システムオンチップ（ＳｏＣ）デバイス、およびエンベデッドアプリケーション等、他のデバイスにおいても使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）およびハンドヘルドＰＣが挙げられる。  通常、エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、または、以下で教示される機能およびオペレーションを実行し得るその他のシステムを含む。システムは、任意の種類のコンピュータまたはエンベデッドシステムであり得ることが説明される。開示された実施形態は特に、ウェアラブルデバイス（例えば腕時計）、電子インプラント、感覚・制御インフラストラクチャデバイス、コントローラ、監視および制御データ収集（ＳＣＡＤＡ）システム等のローエンドデバイスに用いられ得る。更に、本明細書において説明される複数の装置、方法およびシステムは、物理的コンピューティングデバイスに限定されないが、エネルギー管理および効率性のためのソフトウェア最適化にも関連し得る。以下の説明において容易に明らかになるように、本明細書において説明される複数の方法、装置およびシステムの複数の実施形態（ハードウェア、ファームウェア、ソフトウェアまたはこれらの組み合わせを指すか否かに関係なく）は、性能についての考慮とバランスのとれた「グリーン技術」の将来に必須である。
【０１５６】
本明細書における複数の実施形態はプロセッサを参照して説明されるが、複数の他の実施形態が、複数の他のタイプの集積回路およびロジックデバイスに適用可能である。本発明の複数の実施形態の類似する技術および教示が、より高いパイプラインスループットおよび改善された性能に役立ち得る、他のタイプの複数の回路または半導体デバイスに適用され得る。本発明の複数の実施形態の複数の教示は、データ操作を実行する任意のプロセッサまたは機械に適用可能である。しかし、本発明は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビット、もしくは１６ビットデータのオペレーションを実行するプロセッサもしくは機械に限定されず、データの操作もしくは管理が実行される任意のプロセッサもしくは機械に適用され得る。更に、本明細書における説明は、複数の例を提供し、添付の複数の図面は、図示を目的として様々な例を示す。しかし、これらの例は、本発明の複数の実施形態の例を提供するのみならず、本発明の複数の実施形態の可能な限り全ての実装における包括的列挙を提供することを意図するので、限定的意味に解釈されるべきではない。
【０１５７】
以下の複数の例は、実行ユニットおよびロジック回路の文脈における命令処理および分散を説明するが、機械により実行されると、機械に本発明の少なくとも１つの実施形態と一致する複数の機能を実行させる機械可読な有形媒体上に格納されたデータまたは複数の命令により、本発明の複数の他の実施形態が達成され得る。一実施形態において、本発明の複数の実施形態に関連する複数の機能は、複数の機械実行可能な命令で実施される。命令は、命令によりプログラミングされた汎用または特定用途プロセッサに、本発明の複数の段階を実行させるべく用いられ得る。本発明の複数の実施形態は、コンピュータプログラム製品またはソフトウェアとして提供され得、これらは、本発明の複数の実施形態による１または複数のオペレーションを実行するようにコンピュータ（または他電子デバイス）をプログラミングするべく用いられ得る複数の命令を格納した機械またはコンピュータ可読媒体を含み得る。あるいは、本発明の複数の実施形態のオペレーションは、これらのオペレーションを実行する固定機能ロジックを含む複数の特定のハードウェアコンポーネント、またはプログラミングされたコンピュータコンポーネントおよび複数の固定機能ハードウェアコンポーネントの任意の組み合わせにより実行され得る。
【０１５８】
本発明の複数の実施形態を実行するロジックをプログラミングするのに用いられる複数の命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、または他のストレージ等のシステムのメモリ内に格納され得る。
【０１５９】
更に、これらの命令は、ネットワークを介して、または、他のコンピュータ可読媒体により配信され得る。従って、機械可読媒体は、機械（例えばコンピュータ）により可読な形態で情報を格納または送信する任意のメカニズムを含み得るが、電気、光、アコースティックもしくは他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）により、インターネットを介する情報の送信に用いられるフロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ―ＲＯＭ）、および光磁気ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または有形機械可読ストレージに限定されない。従って、コンピュータ可読媒体としては、機械（例えばコンピュータ）により可読な形態で複数の電子命令または情報を格納または送信するのに好適の任意のタイプの有形機械可読媒体が挙げられる。
【０１６０】
設計は、生成からシミュレーションを経由して製造へと様々な段階を経る場合がある。設計を表すデータは、いくつかの態様でその設計を表現し得る。まず、シミュレーションで有用なように、ハードウェアは、ハードウェア記述言語、または別の機能記述言語を用いて表され得る。更に、ロジックおよび／またはトランジスタゲートを用いる回路レベルモデルは、設計処理のいくつかの段階において生成され得る。更に、いくつかの段階では、大部分の設計が、ハードウェアモデルで様々なデバイスの物理的配置を表すデータのレベルに達する。従来の複数の半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路の製造に用いられるマスクのための異なる複数のマスク層に、様々な機能が存在するか、または存在しないかを指定するデータであり得る。設計の任意の表現において、データは、機械可読媒体に任意の形態で格納され得る。メモリ、または、ディスク等の磁気もしくは光ストレージは、変調された光または電気の波を介して送信される情報を、または、そうした情報を送信するために生成された情報を格納する機械可読媒体でってもよい。コードまたは設計を示し、または搬送する電気的な搬送波が送信される場合、その電気信号のコピー、バッファ処理、または再送信が実行される程度において、新しいコピーが作成される。従って、通信プロバイダまたはネットワークプロバイダは、例えば搬送波へエンコードされた情報等、本発明の複数の実施形態における複数の技術を実施する物品を、有形の機械可読媒体に少なくとも一時的に格納してよい。
【０１６１】
本明細書において用いられるモジュールは、ハードウェア、ソフトウェアおよび／またはファームウェアの任意の組み合わせをを指す。例として、モジュールは、マイクロコントローラにより実行されるように適合されたコードを格納する非一時的媒体に関連したマイクロコントローラ等のハードウェアを含む。従って、一実施形態において、モジュールは、ハードウェアを指し、具体的には、ハードウェアは、非一時的媒体上に保持されるべきコードを認識および／または実行するように構成されている。更に、別の実施形態において、モジュールを用いる場合、コードを含む非一時的媒体を指し、具体的には、コードは予め定められた複数のオペレーションを実行するべく、マイクロコントローラにより実行されるように適合されている。なおも別の実施形態において、推測されるように、（本例における）モジュールという用語は、マイクロコントローラおよび非一時的媒体の組み合わせを指す場合がある。多くの場合、別個に図示されるモジュールの境界線は一般に異なり、潜在的には重複する。例えば、第１および第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組み合わせを共有するが、潜在的には、いくつかの独立したハードウェア、ソフトウェアまたはファームウェアを保持し得る。一実施形態において、ロジックという用語を用いる場合、トランジスタ、レジスタ等のハードウェア、または、プログラマブルロジックデバイス等の他のハードウェアを含む。
【０１６２】
一実施形態において、「ように構成される」という文言を用いる場合、指定または決定されたタスクを実行するべく、装置、ハードウェア、ロジックまたは要素を、配置し、組み立て、製造し、販売の申出をし、輸入し、および／または、設計することを指す。この例においては、動作していない装置またはその要素が、指定されたタスクを実行するべく設計され、結合され、および／または相互接続されている場合には、依然として、指定された当該タスクを実行する「ように構成され」ている。純粋に図示的な例として、ロジックゲートは、動作の間は、０または１を提供し得る。しかし、イネーブル信号をクロックへ提供する「ように構成される」ロジックゲートは、１または０を提供し得る全ての潜在的なロジックゲートを含むわけではない。代わりに、ロジックゲートは、動作中に１または０の出力がクロックをイネーブルにするように、いくつかの態様で結合されているものである。「ように構成される」という用語を用いる場合、動作を必要とはせず、その代わりに、装置、ハードウェアおよび／または要素の隠れた状態に焦点を当てたものであって、その隠れた状態において、装置、ハードウェアおよび／または要素は、装置、ハードウェアおよび／または要素が動作しているときに特定のタスクを実行するように設計されていることに再度留意されたい。
【０１６３】
更に、「するべく」、「することができる」、「動作可能な」という文言を用いる場合、一実施形態において、指定されたように装置、ロジック、ハードウェアおよび／または要素を用いることを可能にするように、いくつかの装置、ロジック、ハードウェア、および／または要素が設計されていることを指す。上記のように、一実施形態における「するべく」、「することができる」、「動作可能な」を用いる場合、装置、ロジック、ハードウェアおよび／または要素の隠れた状態を指し、装置、ロジック、ハードウェアおよび／または要素は、動作をしているのではなく、指定されたように装置を用いることを可能にするように設計されていることに留意されたい。
【０１６４】
本明細書中で用いられる値は、数、状態、ロジック状態、またはバイナリロジック状態についての任意の既知の表現を含み得る。多くの場合、ロジックレベル、ロジック値または論理値を用いる場合、１または０のレベルや値を指し、これらは単純にバイナリロジック状態を表する。例えば、１は高論理レベルを、０は低論理レベルを指す。一実施形態において、トランジスタまたはフラッシュセル等のストレージセルは、単一の論理値または多重の論理値を保持することができる場合がある。しかし、コンピュータシステムでは、他の値の表現が用いられてきた。例えば、１０進数の１０は、バイナリ値１０１０として、１６進数では文字Ａとして、表され得る。従って、値は、コンピュータシステムにおいて保持することが可能な情報の任意の表現を含む。
【０１６５】
更に、複数の状態が、複数の値または複数の値の部分により表され得る。一例として、ロジック１等の第１の値が、既定または初期の状態を表し得るが、ロジックゼロ等の第２の値は、非既定状態を表し得る。更に、一実施形態において、リセットおよびセットという用語は、既定および更新された値または状態を、各々指す。例えば、既定値は潜在的に高論理値、すなわち、リセットを含むが、更新された値は潜在的に低論理値、すなわち、セットを含む。値の任意の組み合わせが、任意の状態の数を表すべく使用され得ることに留意されたい。
【０１６６】
上記の方法、ハードウェア、ソフトウェア、ファームウェアまたはコードセットの複数の実施形態は、機械アクセス可能、機械可読、コンピュータアクセス可能、またはコンピュータ可読媒体であって、かつ処理要素によって実行可能な媒体に格納された命令またはコードによって、実装され得る。非一時的機械アクセス可能／可読媒体は、コンピュータまたは電子システム等の機械により読み取り可能な形態で情報を提供する（すなわち、格納および／または送信する）任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体としては、スタティックＲＡＭ（ＳＲＡＭ）やダイナミックＲＡＭ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、磁気または光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的な（伝播された）信号（搬送波、赤外線信号、デジタル信号など）から受信した情報を保持する他の形態のストレージデバイスが挙げられ、これらは、情報をそれ自身から受信できる非一時的媒体とは区別される。
【０１６７】
本発明の複数の実施形態を実行するロジックをプログラミングするのに用いられる複数の命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、または他のストレージ等のシステムのメモリ内に格納され得る。更に、これらの命令は、ネットワークを介して、または、他のコンピュータ可読媒体により配信され得る。従って、機械可読媒体は、機械（例えばコンピュータ）により可読な形態で情報を格納または送信する任意のメカニズムを含み得るが、電気、光、アコースティックもしくは他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）により、インターネットを介する情報の送信に用いられるフロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ―ＲＯＭ）、および磁気光ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気または光カード、フラッシュメモリ、または有形機械可読ストレージに限定されない。従って、コンピュータ可読媒体としては、機械（例えばコンピュータ）により可読な形態で複数の電子命令や情報を格納または送信するのに好適な任意のタイプの有形機械可読媒体が挙げられる。
【０１６８】
本明細書全体で「一実施形態」または「実施形態」に言及する場合、その実施形態に関連して説明された特定の機能、構造または特性が、本発明の少なくとも１つの実施形態に含まれることを意味する。従って、本明細書を通して、様々な箇所における「一実施形態において」または「ある実施形態において」という文言が現れても、必ずしも全てが同一の実施形態を指している訳ではない。更に、複数の特定の機能、構造、または特性は、１または複数の実施形態において、任意の好適な形で組み合わせ得る。
【０１６９】
上述の説明において、詳細な説明は、複数の特定の例示的な実施形態を参照して提供される。しかし、添付の特許請求の範囲で記載される本発明のより広い趣旨および範囲から逸脱することなく、様々な修正および変更がなされ得ることは明らかであろう。従って、明細書および複数の図面は、限定的意味ではなく、例示的意味で顧慮されるものである。更に、上述の実施形態および他の例示的な言語を用いる場合、同一の実施形態または同一の例を必ずしも指すわけではなく、異なる別個の実施形態、ならびに潜在的に同一の実施形態を指すことがある。
【０１７０】
詳細な説明のいくつかの部分は、コンピュータメモリ内におけるデータビットに基づく複数のオペレーションのアルゴリズムおよびシンボル表現の観点から提示されている。これらのアルゴリズムの記載および表現は、他の当業者に作業の実態を最も有効に伝達するべくデータ処理の当業者により用いられる手段である。アルゴリズムは、ここでは、通常、所望の結果をもたらす、複数のオペレーションの自己矛盾のないシーケンスと考えられる。複数のオペレーションは、複数の物理量の物理的操作を必要とするものである。通常、必ずしもではないが、これらの量は、格納し、転送し、組み合わせ、比較し、または操作することができる電気信号または磁気信号の形態を取る。主として、これらの信号を同一のビット、値、要素、記号、文字、用語、数として参照することは、共通に用いるという理由から時に好都合であることが明らかになっている。本明細書において説明されるブロックは、ハードウェア、ソフトウェア、ファームウェア、またはこれらの組み合わせであり得る。
【０１７１】
しかし、これらおよび類似の用語の全ては、適切な物理量に関連するものであり、これらの量に適用される便宜的標記にすぎないことを念頭に置かれたい。上記検討から明らかなように、別途具体的に記載されない限り、本明細書全体を通して「規定する」、「受信する」、「判断する」、「発行する」、「リンクする」、「関連する」、「取得する」、「認証する」、「阻止する」、「実行する」、「要求する」、「通信する」等の用語を使用して検討する場合、コンピューティングシステム、またはコンピューティングシステムのレジスタおよびメモリ内で物理的（例えば、電子）量として表されたデータを、コンピューティングシステムメモリもしくはレジスタ、または他のそのような情報ストレージ、送信もしくはディスプレイデバイス内で物理的量として同様に表された他のデータに操作および変換する類似の電子コンピューティングデバイスにおけるアクションまたは処理を指すことを理解されたい。
【０１７２】
本明細書で用いられる「例」または「例示的」なる文言は、例示、例または図示として役立つことを意味する。「例」または「例示的」として本明細書において説明される任意の態様または設計は、他の態様または設計に対して好ましいか、または有利なものとして必ずしも解釈されるものではない。むしろ、「例」または「例示的」の文言を用いる場合、具体的な様式における概念を提示することが意図される。本願において用いられるように、「または」という用語は、排他的な「または」というよりは包含的な「または」を意味することを意図する。つまり、別途指定され、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」は、自然な包括的順列のいずれかを意味することを意図する。すなわち、ＸがＡを含むか、ＸがＢを含むか、またはＸがＡおよびＢの双方を含むとき、上述の例のいずれかの下において「Ｘは、ＡまたはＢを含む」が満たされる。更に、本願および添付の特許請求の範囲において用いられる冠詞「ａ」および「ａｎ」は一般に、別途指定され、または単数形を対象とすることが文脈から明らかでない限り、「１または複数」を意味するものと解釈される。更に、全体を通して「実施形態」もしくは「一実施形態」、または「実装」もしくは「一実装」という用語を用いる場合、そのように説明されない限り、同一の実施形態または実装を意味することを意図しない。また、「第１」、「第２」、「第３」、「第４」等の用語は、本明細書において用いられるとき、異なる要素を区別するための指標として意図されており、必ずしもそれらの数字指定に従った序数の意味を有するものではない場合がある。
【図１】
2016536720.tif 000003
【図２】
2016536720.tif 000004
【図３】
2016536720.tif 000005
【図４Ａ】
2016536720.tif 000006
【図４Ｂ】
2016536720.tif 000007
【図５Ａ】
2016536720.tif 000008
【図５Ｂ】
2016536720.tif 000009
【図６Ａ】
2016536720.tif 000010
【図６Ｂ】
2016536720.tif 000011
【図７】
2016536720.tif 000012
【図８】
2016536720.tif 000013
【図９】
2016536720.tif 000014
【図１０】
2016536720.tif 000015
【図１１】
2016536720.tif 000016
【図１２】
2016536720.tif 000017
【手続補正書】
【提出日】平成28年3月25日(2016.3.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
プロセッサのプロセッサコアにより、ページ変換命令をデコードして、前記プロセッサコアに結合されたメインメモリにおいてメモリ範囲内で変換可能なページを変換する段階と、
前記プロセッサコアにより、前記ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように前記変換可能なページを変換する段階とを備え、
前記メモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換可能である、複数の変換可能なページのセクションを含む、方法。
【請求項２】
前記ページ変換命令が第１の変換命令である場合に、前記プロセッサコアにより、セキュアでないページからセキュアなページに前記変換可能なページを変換する段階と、
前記ページ変換命令が第２の変換命令である場合に、前記プロセッサコアにより、前記セキュアなページから前記セキュアでないページに前記変換可能なページを変換する段階とを更に備える、請求項１に記載の方法。
【請求項３】
前記第１の変換命令に応答して、
前記変換可能なページのアドレスが、セキュアなページに変換可能なページを指すことを保証する段階と、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアでないように設定されることを検証する段階と、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアになるように設定する段階と、
前記プロセッサコアに対する前記アドレスの変換を無効化する段階とを更に備える、請求項２に記載の方法。
【請求項４】
前記第２の変換命令に応答して、
前記変換可能なページのアドレスがセキュアでないページに変換可能なページを指すことを保証する段階と、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアになるように設定されることを検証する段階と、
前記ページキャッシュマップエントリの有効ビットが無効に設定されることを検証する段階と、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアでないように設定する段階と、
前記プロセッサコアに対する前記アドレスの変換を無効化する段階とを更に備える、請求項２に記載の方法。
【請求項５】
前記メモリ範囲は、ハードウェアの保留済みセクションを更に備え、
前記方法は、
前記プロセッサコアにより、セクション変換命令をデコードして、前記メモリ範囲内で前記ハードウェアの保留済みセクションを変換する段階と、
前記セクション変換命令を実行して、前記ハードウェアの保留済みセクションを、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように変換する段階とを更に備える、請求項２に記載の方法。
【請求項６】
前記プロセッサコアにより、前記セクション変換命令が第３の変換命令である場合に、セキュアでないセクションからセキュアなセクションに前記ハードウェアの保留済みセクションを変換する段階と、
前記セクション変換命令が第４の変換命令である場合に、前記プロセッサコアにより、前記セキュアなセクションから前記セキュアでないセクションに前記ハードウェアの保留済みセクションを変換する段階とを更に備える、請求項５に記載の方法。
【請求項７】
前記第３の変換命令に応答して、
前記第３の変換命令のアドレスが前記ハードウェアの保留済みセクションにおけるページを指すことを保証する段階と、
前記メモリ範囲の前記ハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとして設定されていることを保証する段階と、
前記プロセッサコアと前記メインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）に、前記ハードウェアの保留済みセクションのためのリプレイ保護フィルタをインストールするように命令する段階と、
前記ＭＥＥに、前記ハードウェアの保留済みセクションを開始状態にするように命令する段階とを更に備える、請求項６に記載の方法。
【請求項８】
前記第４の変換命令に応答して、
前記第４の変換命令のアドレスが、前記ハードウェアの保留済みセクションにおけるページを指すことを保証する段階と、
前記ハードウェアの保留済みセクションに対応する前記セクションにおける前記変換可能なページがセキュアでない状態にあることを保証する段階と、
前記ＭＥＥに、前記ハードウェアの保留済みセクション用の前記リプレイ保護フィルタをアンインストールするように命令する段階と、
前記ＭＥＥに、内部キャッシュからの前記ハードウェアの保留済みセクションの複数のコンテンツをフラッシュさせるように命令する段階とを更に備える、請求項７に記載の方法。
【請求項９】
コンピュータに請求項１〜８のいずれか１項に記載の方法を実行させる、コンピュータプログラム。
【請求項１０】
メモリデバイスと
メモリ暗号化エンジン（ＭＥＥ）を有するプロセッサとを備え、
前記プロセッサは、請求項１〜８のいずれか１項に記載の方法を実行するように構成される、システム。
【請求項１１】
請求項１〜８のいずれか１項に記載の方法を更に備える、請求項１０に記載のシステム。
【請求項１２】
複数の命令を実行する複数の演算器を有するプロセッサと、
前記プロセッサに結合されたメモリデバイスとを備え、
前記メモリデバイスは、コードメモリおよびデータメモリを格納するように動作可能であり、複数のセキュアなページまたは複数のセキュアでないページに変換可能である複数の変換可能なページのセクションを含むメモリ範囲を有し、
前記プロセッサは、
ページ変換命令をデコードして、前記メモリ範囲内で変換可能なページを変換し、
前記ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように前記変換可能なページを変換するように構成される、システム。
【請求項１３】
前記ページ変換命令は、第１の変換命令であり、
前記プロセッサは、前記第１の変換命令に応答して、セキュアでないページからセキュアなページに前記変換可能なページを変換し、
前記プロセッサは、前記第１の変換命令に応答して、
前記変換可能なページのアドレスがセキュアなページに変換可能なページを指すことを保証することと、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアでないように設定されることを検証することと、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアになるように設定することと、
プロセッサコアに対する前記アドレスの変換を無効化することを実行する、請求項１２に記載のシステム。
【請求項１４】
前記ページ変換命令は、第２の変換命令であり、
前記プロセッサは、前記第２の変換命令に応答して、セキュアなページからセキュアでないページに前記変換可能なページを変換し、
前記プロセッサは、前記第２の変換命令に応答して、
前記変換可能なページのアドレスがセキュアでないページに変換可能なページを指すことを保証することと、
前記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアになるように設定されることを検証することと、
前記ページキャッシュマップエントリの有効ビットが無効に設定されることを検証することと、
前記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、
前記ページキャッシュマップエントリの前記セキュアなビットをセキュアでないように設定することと、
プロセッサコアに対する前記アドレスの変換を無効化することとを実行する、請求項１２に記載のシステム。
【請求項１５】
前記メモリ範囲は、ハードウェアの保留済みセクションを更に含み、
前記プロセッサは、セクション変換命令に応答して、セクション変換命令をデコードして、前記ハードウェアの保留済みセクションを変換し、
前記セクション変換命令を実行して、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように前記ハードウェアの保留済みセクションを変換する、請求項１２に記載のシステム。
【請求項１６】
前記プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）を更に備え、
セクション変換命令は、第３の変換命令であり、
前記プロセッサは、前記第３の変換命令に応答して、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換し、
前記プロセッサは、前記第３の変換命令に応答して、
前記第３の変換命令のアドレスが、前記ハードウェアの保留済みセクションにおけるページを指すことを保証することと、
前記メモリ範囲の前記ハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとして設定されていることを保証することと、
前記ＭＥＥに、前記ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするように命令することと、
前記ＭＥＥに、前記ハードウェアの保留済みセクションを開始状態にするように命令することとを実行する、請求項１４に記載のシステム。
【請求項１７】
前記プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）を更に備え、
セクション変換命令は、第４の変換命令であり、
前記プロセッサは、前記第４の変換命令に応答して、セキュアなセクションからセキュアでないセクションにハードウェアの保留済みセクションを変換し、
前記プロセッサは、前記第４の変換命令に応答して、
前記第４の変換命令のアドレスが、前記ハードウェアの保留済みセクションのページを指すことを保証することと、
前記ハードウェアの保留済みセクションに対応する前記セクションにおける複数の前記変換可能なページが、セキュアでない状態にあることを保証することと、
前記ＭＥＥに、前記ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするように命令することと、
前記ＭＥＥに、内部キャッシュから前記ハードウェアの保留済みセクションの複数のコンテンツをフラッシュするように命令することとを実行する、請求項１４に記載のシステム。
【請求項１８】
プロセッサの複数の演算器と、
ページ変換命令に応答して、１または複数のプロセッサに結合されたメインメモリにおけるセキュアなメモリ範囲内で第１の変換可能なページを識別するための手段と
セキュアなページまたはセキュアでないページのうち少なくとも１つになるように前記第１の変換可能なページを変換するための手段とを備え、
前記セキュアなメモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換され得る複数の変換可能なページの第１のセクションを含む、装置。
【請求項１９】
請求項１〜８のいずれか１項に記載の方法および請求項１２〜１７のいずれか１項に記載のシステムを更に備える、請求項１８に記載の装置。
【請求項２０】
コンピューティングデバイス上で実行されることに応答して、前記コンピューティングデバイスに請求項１〜８のいずれか１項に記載の方法を実行させる複数の命令を備えた、少なくとも１つのコンピュータ可読記録媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１７２
【補正方法】変更
【補正の内容】
【０１７２】
本明細書で用いられる「例」または「例示的」なる文言は、例示、例または図示として役立つことを意味する。「例」または「例示的」として本明細書において説明される任意の態様または設計は、他の態様または設計に対して好ましいか、または有利なものとして必ずしも解釈されるものではない。むしろ、「例」または「例示的」の文言を用いる場合、具体的な様式における概念を提示することが意図される。本願において用いられるように、「または」という用語は、排他的な「または」というよりは包含的な「または」を意味することを意図する。つまり、別途指定され、または文脈から明らかでない限り、「ＸはＡまたはＢを含む」は、自然な包括的順列のいずれかを意味することを意図する。すなわち、ＸがＡを含むか、ＸがＢを含むか、またはＸがＡおよびＢの双方を含むとき、上述の例のいずれかの下において「Ｘは、ＡまたはＢを含む」が満たされる。更に、本願および添付の特許請求の範囲において用いられる冠詞「ａ」および「ａｎ」は一般に、別途指定され、または単数形を対象とすることが文脈から明らかでない限り、「１または複数」を意味するものと解釈される。更に、全体を通して「実施形態」もしくは「一実施形態」、または「実装」もしくは「一実装」という用語を用いる場合、そのように説明されない限り、同一の実施形態または実装を意味することを意図しない。また、「第１」、「第２」、「第３」、「第４」等の用語は、本明細書において用いられるとき、異なる要素を区別するための指標として意図されており、必ずしもそれらの数字指定に従った序数の意味を有するものではない場合がある。
（項目１）
プロセッサのプロセッサコアにより、ページ変換命令をデコードして、上記プロセッサコアに結合されたメインメモリにおいてメモリ範囲内で変換可能なページを変換する段階と、
上記プロセッサコアにより、上記ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように上記変換可能なページを変換する段階とを備え、
上記メモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換可能である、複数の変換可能なページのセクションを含む、方法。
（項目２）
上記ページ変換命令が第１の変換命令である場合に、上記プロセッサコアにより、セキュアでないページからセキュアなページに上記変換可能なページを変換する段階と、
上記ページ変換命令が第２の変換命令である場合に、上記プロセッサコアにより、上記セキュアなページから上記セキュアでないページに上記変換可能なページを変換する段階とを更に備える、項目１に記載の方法。
（項目３）
上記第１の変換命令に応答して、
上記変換可能なページのアドレスが、セキュアなページに変換可能なページを示すことを保証する段階と、
上記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアでないようにセットされることを検証する段階と、
上記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、
上記ページキャッシュマップエントリの上記セキュアなビットをセキュアになるようにセットする段階と、
上記プロセッサコアに対する上記アドレスの変換を無効化する段階とを更に備える、項目２に記載の方法。
（項目４）
上記第２の変換命令に応答して、
上記変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証する段階と、
上記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットがセキュアになるようにセットされることを検証する段階と、
上記ページキャッシュマップエントリの有効ビットが無効にセットされることを検証する段階と、
上記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化する段階と、
上記ページキャッシュマップエントリの上記セキュアなビットをセキュアでないようにセットする段階と、
上記プロセッサコアに対する上記アドレスの変換を無効化する段階とを更に備える、項目２に記載の方法。
（項目５）
上記メモリ範囲は、ハードウェアの保留済みセクションを更に備え、
上記方法は、
上記プロセッサコアにより、セクション変換命令をデコードして、上記メモリ範囲内で上記ハードウェアの保留済みセクションを変換する段階と、
上記セクション変換命令を実行して、上記ハードウェアの保留済みセクションを、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように変換する段階とを更に備える、項目２に記載の方法。
（項目６）
上記プロセッサコアにより、上記セクション変換命令が第３の変換命令である場合に、セキュアでないセクションからセキュアなセクションに上記ハードウェアの保留済みセクションを変換する段階と、
上記セクション変換命令が第４の変換命令である場合に、上記プロセッサコアにより、上記セキュアなセクションから上記セキュアでないセクションに上記ハードウェアの保留済みセクションを変換する段階とを更に備える、項目５に記載の方法。
（項目７）
上記第３の変換命令に応答して、
上記第３の変換命令のアドレスが上記ハードウェアの保留済みセクションにおけるページを示すことを保証する段階と、
上記メモリ範囲の上記ハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証する段階と、
上記プロセッサコアと上記メインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）に、上記ハードウェアの保留済みセクションのためのリプレイ保護フィルタをインストールするように命令する段階と、
上記ＭＥＥに、上記ハードウェアの保留済みセクションを開始状態にするように命令する段階とを更に備える、項目６に記載の方法。
（項目８）
上記第４の変換命令に応答して、
上記第４の変換命令のアドレスが、上記ハードウェアの保留済みセクションにおけるページを示すことを保証する段階と、
上記ハードウェアの保留済みセクションに対応する上記セクションにおける上記変換可能なページがセキュアでない状態にあることを保証する段階と、
上記ＭＥＥに、上記ハードウェアの保留済みセクション用の上記リプレイ保護フィルタをアンインストールするように命令する段階と、
上記ＭＥＥに、内部キャッシュからの上記ハードウェアの保留済みセクションの複数のコンテンツをフラッシュさせるように命令する段階とを更に備える、項目７に記載の方法。
（項目９）
コンピューティングデバイス上で実行されることに応答して、上記コンピューティングデバイスに項目１〜８のいずれか１項に記載の方法を実行させる複数の命令を備えた、少なくとも１つのコンピュータ可読媒体。
（項目１０）
メモリデバイスと
メモリ暗号化エンジン（ＭＥＥ）を有するプロセッサとを備え、
上記プロセッサは、項目１〜８のいずれか１項に記載の方法を実行するように構成される、システム。
（項目１１）
項目１〜８のいずれか１項に記載の方法を更に備える、項目１０に記載のシステム。
（項目１２）
複数の命令を実行する複数の演算器を有するプロセッサと、
上記プロセッサに結合されたメモリデバイスとを備え、
上記メモリデバイスは、コードメモリおよびデータメモリを格納するように動作可能であり、複数のセキュアなページまたは複数のセキュアでないページに変換可能である複数の変換可能なページのセクションを含むメモリ範囲を有し、
上記プロセッサは、
ページ変換命令をデコードして、上記メモリ範囲内で変換可能なページを変換し、
上記ページ変換命令を実行して、セキュアなページまたはセキュアでないページのうち少なくとも１つになるように上記変換可能なページを変換するように構成される、システム。
（項目１３）
上記ページ変換命令は、第１の変換命令であり、
上記プロセッサは、上記第１の変換命令に応答して、セキュアでないページからセキュアなページに上記変換可能なページを変換し、
上記プロセッサは、上記第１の変換命令に応答して、
上記変換可能なページのアドレスがセキュアなページに変換可能なページを示すことを保証することと、
上記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアでないようにセットされるこをと検証することと、
上記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、
上記ページキャッシュマップエントリの上記セキュアなビットをセキュアになるようにセットすることと、
プロセッサコアに対する上記アドレスの変換を無効化することを実行する、項目１２に記載のシステム。
（項目１４）
上記ページ変換命令は、第２の変換命令であり、
上記プロセッサは、上記第２の変換命令に応答して、セキュアなページからセキュアでないページに上記変換可能なページを変換し、
上記プロセッサは、上記第２の変換命令に応答して、
上記変換可能なページのアドレスがセキュアでないページに変換可能なページを示すことを保証することと、
上記変換可能なページに対応するページキャッシュマップエントリのセキュアなビットが、セキュアになるようにセットされることを検証することと、
上記ページキャッシュマップエントリの有効ビットが無効にセットされることを検証することと、
上記プロセッサのキャッシュからの複数のキャッシュ済みページコンテンツを無効化することと、
上記ページキャッシュマップエントリの上記セキュアなビットをセキュアでないようにセットすることと、
プロセッサコアに対する上記アドレスの変換を無効化することとを実行する、項目１２に記載のシステム。
（項目１５）
上記メモリ範囲は、ハードウェアの保留済みセクションを更に含み、
上記プロセッサは、セクション変換命令に応答して、セクション変換命令をデコードして、上記ハードウェアの保留済みセクションを変換し、
上記セクション変換命令を実行して、セキュアなセクションまたはセキュアでないセクションのうち少なくとも１つになるように上記ハードウェアの保留済みセクションを変換する、項目１２に記載のシステム。
（項目１６）
上記プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）を更に備え、
セクション変換命令は、第３の変換命令であり、
上記プロセッサは、上記第３の変換命令に応答して、セキュアでないセクションからセキュアなセクションにハードウェアの保留済みセクションを変換し、
上記プロセッサは、上記第３の変換命令に応答して、
上記第３の変換命令のアドレスが、上記ハードウェアの保留済みセクションにおけるページを示すことを保証することと、
上記メモリ範囲の上記ハードウェアの保留済みセクションが変換可能であり、現在セキュアでないものとしてセットされていることを保証することと、
上記ＭＥＥに、上記ハードウェアの保留済みセクションのリプレイ保護フィルタをインストールするように命令することと、
上記ＭＥＥに、上記ハードウェアの保留済みセクションを開始状態にするように命令することとを実行する、項目１４に記載のシステム。
（項目１７）
上記プロセッサコアとメインメモリとの間に結合されたメモリ暗号化エンジン（ＭＥＥ）を更に備え、
セクション変換命令は、第４の変換命令であり、
上記プロセッサは、上記第４の変換命令に応答して、セキュアなセクションからセキュアでないセクションにハードウェアの保留済みセクションを変換し、
上記プロセッサは、上記第４の変換命令に応答して、
上記第４の変換命令のアドレスが、上記ハードウェアの保留済みセクションのページを示すことを保証することと、
上記ハードウェアの保留済みセクションに対応する上記セクションにおける複数の上記変換可能なページが、セキュアでない状態にあることを保証することと、
上記ＭＥＥに、上記ハードウェアの保留済みセクションのリプレイ保護フィルタをアンインストールするように命令することと、
上記ＭＥＥに、内部キャッシュから上記ハードウェアの保留済みセクションの複数のコンテンツをフラッシュするように命令することとを実行する、項目１４に記載のシステム。
（項目１８）
プロセッサの複数の演算器と、
ページ変換命令に応答して、１または複数のプロセッサに結合されたメインメモリにおけるセキュアなメモリ範囲内で第１の変換可能なページを識別するための手段と
セキュアなページまたはセキュアでないページのうち少なくとも１つになるように上記第１の変換可能なページを変換するための手段とを備え、
上記セキュアなメモリ範囲は、複数のセキュアなページまたは複数のセキュアでないページに変換され得る複数の変換可能なページの第１のセクションを含む、装置。
（項目１９）
項目１〜８のいずれか１項に記載の方法および項目１２〜１７のいずれか１項に記載のシステムを更に備える、項目１８に記載の装置。
【国際調査報告】
2016536720.tif 000018
2016536720.tif 000019
2016536720.tif 000020