(57)【要約】      （修正有）【課題】信頼ドメインを用いて仮想化されたシステムにおける分離を提供する。【解決手段】システム１００において、仮想化サーバは、メモリ所有権テーブルＭＯＴと複数のコアを含むプロセッサを備える。コアは、信頼ドメインＴＤを管理する信頼ドメインリソースマネージャＴＤ−ＲＭを実行し、各ＴＤに関するグローバルメタデータを管理するために信頼ドメイン制御構造ＴＤＣＳを維持し、ソフトウェアアクセスに対してアクセス制御される少なくとも１つの信頼ドメインスレッド制御構造ＴＤＴＣＳにおけるＴＤの実行状態を維持する。次に、ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子を取得する。キー識別子は、プロセッサが、ＴＤのコンテキストにおいて実行されるプロセッサに応答してＴＤに割り当てられたメモリページを復号化することを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化される。【選択図】図１Ａ
2019053720.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアクセスに対してアクセス制御されるメモリ所有権テーブル（ＭＯＴ）と、
処理コアであって、
信頼ドメイン（ＴＤ）及び前記ＴＤを管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行し、
前記ＴＤ又は処理デバイスにより実行される他のＴＤのうち１又は複数のグローバルメタデータを管理するために信頼ドメイン制御構造（ＴＤＣＳ）を維持し、
前記ＴＤＣＳにより参照され、かつ前記ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は前記他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、１又は複数の信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）における前記ＴＤの実行状態を維持し、
前記ＭＯＴを参照し、前記ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子（ＩＤ）を取得し、前記キーＩＤは、前記処理デバイスが、前記ＴＤの前記コンテキストにおいて実行される前記処理デバイスに応答して前記ＴＤに割り当てられたメモリページを復号化することを可能にし、前記ＴＤに割り当てられた前記メモリページは、前記暗号化キーで暗号化され、
前記ＭＯＴを参照し、前記ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する
処理コアと
を備え、
前記ＭＯＴから取得された前記ゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、前記処理デバイスが、前記ＴＤの前記コンテキストにおいて実行される前記処理デバイスに応答して、前記ＴＤに割り当てられた前記メモリページへアクセスすることを可能にする、
処理デバイス。
【請求項２】
前記ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介して、前記ＴＤ、前記他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうちの少なくとも１つに関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、請求項１に記載の処理デバイス。
【請求項３】
前記ＴＤ−ＴＣＳは、前記ＴＤＣＳを参照し、前記ＴＤＣＳは、前記ＴＤのロジックプロセッサに対応する１又は複数のＴＤ−ＴＣＳのカウントを維持し、前記ＴＤ−ＴＣＳは、前記ＴＤのスーパーバイザー実行状態及びユーザ実行状態を格納する、請求項１に記載の処理デバイス。
【請求項４】
前記暗号化キーは、前記処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成される、請求項１に記載の処理デバイス。
【請求項５】
前記ＭＫ−ＴＭＥエンジンは、前記ＴＤの前記メモリページを暗号化及び復号化すること、及び前記ＴＤに割り当てられた永続メモリに対応するメモリページを暗号化及び復号化することにおける使用のために前記ＴＤに割り当てられたキーＩＤを介してアクセスされた複数の暗号化キーを生成し、前記ＭＯＴは、前記ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して複数の前記キーＩＤを追跡する、請求項４に記載の処理デバイス。
【請求項６】
前記処理コアは、前記ＥＰＴによりマッピングされたゲスト物理メモリページにアクセスするためにページウォークオペレーションの一部としてアクセスされたホスト物理メモリページに関して前記ＭＯＴを参照する、請求項２に記載の処理デバイス。
【請求項７】
前記ＴＤは、１又は複数のアプリケーションを管理するオペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理する前記ＶＭＭのうちの少なくとも１つを備え、ＴＤ入力オペレーションが、前記ＶＭＭのうちの少なくとも１つから前記ＴＤの前記ＯＳへ、又は前記ＴＤＲＭから前記ＴＤの前記ＶＭＭへ、前記処理コアの動作コンテキストを遷移させる、請求項１に記載の処理デバイス。
【請求項８】
前記ＴＤＲＭは、前記ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、請求項１に記載の処理デバイス。
【請求項９】
前記ＴＤＣＳは、前記ＴＤの暗号測定をキャプチャする署名構造を備え、前記暗号測定は、前記処理デバイスの信頼のハードウェア・ルートにより署名され、前記署名構造は、前記暗号測定の検証のために証明団体に提供される、請求項１に記載の処理デバイス。
【請求項１０】
前記処理コアは更に、少なくとも前記ＴＤＲＭ、前記ＶＭＭ、又は前記処理デバイスにより実行される前記他のＴＤを備えるソフトウェアからのソフトウェアアクセスに対してアクセス制御される前記ＴＤＣＳにおける前記ＴＤの測定状態を維持する、請求項１に記載の処理デバイス。
【請求項１１】
前記ＴＤＲＭは、前記ＴＤ及び前記他のＴＤを管理する、請求項１に記載の処理デバイス。
【請求項１２】
処理デバイス上で実行される信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する前記処理デバイスが、ＴＤ終了イベントを識別する段階と、
前記ＴＤ終了イベントの識別に応答して、前記ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、前記ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、前記ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）に保存する段階であって、前記実行状態は、前記第１暗号化キーで暗号化され、前記ＴＤ−ＴＣＳは、前記ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は前記処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
前記処理デバイスのキーＩＤ状態を、前記第１キーＩＤから、前記ＴＤＲＭ、又は前記ＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する段階と、
前記ＴＤＲＭに関するＴＤＲＭ実行及び制御状態及び終了情報をロードし、前記処理デバイスに、前記ＴＤＲＭのコンテキストにおいて動作させる、段階と
を備える
方法。
【請求項１３】
前記ＴＤＲＭの前記コンテキストにおいて、ＴＤ入力イベントを実行する段階と、
前記ＴＤＲＭに割り当てられた第２暗合化キーに対応する第２キー識別子（ＩＤ）を利用し、前記ＴＤＲＭにより指定されたＴＤＲＭ実行制御を、前記ＴＤに割り当てられた前記ロジックプロセッサに対応する信頼ドメインリソースマネージャ制御構造（ＴＤ−ＲＣＳ）からロードする段階であって、前記実行状態は、前記第２暗合化キーで暗号化され、前記ＴＤ−ＲＣＳは、前記ＴＤ又は前記処理デバイスにより実行される他のＶＭのうちの少なくとも１つから前記拡張ページテーブル（ＥＰＴ）を用いてアクセス制御される、段階と、
前記処理デバイスのキーＩＤ状態を、前記第２キーＩＤから前記ＴＤに対応する第１キーＩＤに修正する段階と、
前記ユーザ実行状態及び前記スーパーバイザー実行状態を、前記ＴＤ−ＴＣＳからロードし、前記処理デバイスを、前記ＴＤのコンテキストにおいて動作させる、段階と
を更に備える
請求項１２に記載の方法。
【請求項１４】
前記ＴＤＣＳ及びＴＤ−ＴＣＳは、前記処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介して機密保護され、及びアクセス制御され、前記ＭＯＴは、前記第１キーＩＤを前記ＴＤに関連付ける前記ＴＤＣＳのための第１のエントリを備え、前記ＭＯＴは、前記第１キーＩＤを利用し、前記ＴＤに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
請求項１３に記載の方法。
【請求項１５】
前記ＭＯＴは、レンジレジスタを介してアクセス制御される、
請求項１２に記載の方法。
【請求項１６】
前記ＴＤＲＭ実行及び制御状態は、前記ＥＰＴ及び前記ＭＯＴを介してアクセス制御される前記ＴＤ−ＲＣＳ構造からロードされ、前記ＭＯＴは、前記第２キーＩＤを前記ＴＤ−ＲＣＳを含む物理メモリページと関連付ける前記ＴＤ−ＲＣＳ構造のための第２のエントリを備え、前記ＭＯＴは、前記第２キーＩＤを利用し、前記ＴＤＲＭに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
請求項１４に記載の方法。
【請求項１７】
前記ＶＭＭは、１又は複数のＴＤを管理する前記ＴＤＲＭを備えるルートＶＭＭであり、前記ＴＤは、１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、前記ＴＤ終了は、前記非ルートＶＭＭ又は前記ＴＤの前記１又は複数のＶＭから前記ルートＶＭＭ及びＴＤＲＭに前記処理コアの動作コンテキストを遷移させる、
請求項１２に記載の方法。
【請求項１８】
前記暗号化キーは、前記処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、前記ＭＫ−ＴＭＥエンジンは、前記ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介して前記ＴＤに割り当てられた複数の暗号化キーを生成し、前記ＭＯＴは、前記ＭＯＴにおいて参照されるホスト物理ページ毎に１つのキーＩＤで、複数の前記暗号化キーＩＤを追跡する、
請求項１２に記載の方法。
【請求項１９】
命令を格納するメモリデバイスと、
前記メモリデバイスに動作可能に結合された処理デバイスと
を備えるシステムであって、
前記処理デバイスは、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する命令であって、前記ＴＤＲＭは、前記ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、命令と、
前記ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は前記処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）における前記ＴＤのユーザ実行状態及びスーパーバイザー実行状態を維持する命令と、
前記ＭＯＴを参照し、前記ＴＤに割り当てられた暗号化キーに対応する少なくとも１つの暗号化キー識別子（ＩＤ）を取得する命令であって、前記キーＩＤは、前記処理デバイスが、前記ＴＤの前記コンテキストにおいて実行される前記処理デバイスに応答して前記ＴＤに割り当てられたメモリページを復号化することを可能にし、前記ＴＤに割り当てられた前記メモリページは、前記暗号化キーＩＤを介して識別される前記暗号化キーで暗号化される、命令と、
前記ＭＯＴを参照し、前記ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する命令であって、前記ゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、前記処理デバイスが、前記ＴＤの前記コンテキストにおいて実行される前記処理デバイスに応答して、前記ＴＤに割り当てられたメモリページへアクセスすることを可能にする、命令と
の前記命令を実行する、
システム。
【請求項２０】
前記ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介して、前記ＴＤ、前記他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうち１又は複数に関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、請求項１９に記載のシステム。
【請求項２１】
前記ＴＤ−ＴＣＳは、前記ＴＤのロジックプロセッサに対応し、前記ＴＤ−ＴＣＳは、前記ＴＤの前記ユーザ実行状態及び前記スーパーバイザー実行状態を、ＴＤ終了オペレーション上に格納し、前記ＴＤのユーザ及びスーパーバイザー実行状態を、ＴＤ入力オペレーション上にロードし、前記ＴＤ−ＴＣＳは、前記ＴＤＲＭ、前記ＶＭＭ、又は前記処理デバイスにより実行される前記他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、
請求項１９に記載のシステム。
【請求項２２】
前記暗号化キーは、前記処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、前記ＭＫ−ＴＭＥエンジンは、前記ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介して前記ＴＤに割り当てられた複数の暗号化キーを生成し、前記ＭＯＴは、前記ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して、複数の前記暗号化キーＩＤを追跡する、
請求項１９に記載のシステム。
【請求項２３】
前記ＶＭＭは、前記ＴＤを管理する前記ＴＤＲＭを備え、前記ＴＤは、オペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ入力オペレーションが、前記ＴＤＲＭから前記ＴＤの前記非ルートＶＭＭへ、前記処理コアの動作コンテキストを遷移させる、
請求項１９に記載のシステム。
【請求項２４】
処理デバイスによりアクセスされた場合に、前記処理デバイスに、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する処理デバイスが、前記処理デバイスが、前記ＴＤＲＭのコンテキストにおいて実行している間に、ＴＤ入力イベントを識別する段階と、
前記ＴＤ入力イベントの識別に応答して、前記ＴＤＲＭに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、前記ＴＤＲＭのＴＤＲＭ制御状態を、前記ＴＤＲＭに対応する信頼ドメインリソースマネージャ制御構造（ＴＤＲＣＳ）からロードする段階であって、前記ＴＤＲＭ制御状態は、前記第１暗号化キーで暗号化され、前記ＴＤＲＣＳは、前記ＴＤ、又は前記処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
前記処理デバイスのキーＩＤ状態を、前記第１キーＩＤから、前記ＴＤに割り当てられた第２暗合化キーに対応する第２キーＩＤに修正する段階と、
信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）から、前記ＴＤのＴＤユーザ実行状態及びスーパーバイザー実行状態をロードし、前記処理デバイスに、前記ＴＤのコンテキストにおいて動作させる段階であって、前記ＴＤ−ＴＣＳは、前記ＴＤＲＭ、又は前記処理デバイスにより実行される前記他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と
を備えるオペレーションを実行させるデータを含む
非一時的機械可読ストレージ媒体。
【請求項２５】
前記ＴＤＣＳ及びＴＤ−ＴＣＳは、前記処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介してアクセス制御され、前記ＭＯＴは、前記第１キーＩＤを前記ＴＤに関連付ける前記ＴＤ−ＴＣＳのための第１のエントリを備え、前記ＭＯＴは、前記第１キーＩＤを利用し、前記ＴＤに対応するメモリページへのメモリアクセスのためのメモリアクセス制御を強制する、
請求項２４に記載の非一時的機械可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータシステムに関し、より具体的には、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することに関する。
【背景技術】
【０００２】
近年の処理デバイスは、ディスク暗号化を使用し、静止時のデータを保護する。しかしながら、メモリ内のデータは、プレーンテキストであり、攻撃に対して脆弱である。攻撃者は、ソフトウェア及びハードウェアベースのバススキャン、メモリスキャン、ハードウェアプロービング等を含む様々な技術を用い、メモリからデータを取得することができる。この、メモリからのデータには、例えば、プライバシーに敏感なデータ、ＩＰに敏感なデータ、及びまたファイル暗号化又は通信に用いられるキーなどの機微データが含まれ得る。クラウドサービスプロバイダにより提供される仮想化ベースのホスティングサービスを利用して、データ及びエンタプライズワークロードをクラウドに移行する現在のトレンドで、データの公開は更に悪化する。
【図面の簡単な説明】
【０００３】
【図１Ａ】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供する例示的なコンピューティングシステムを示すブロック図である。
【０００４】
【図１Ｂ】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供する別の例示的なコンピューティングシステムを示すブロック図である。
【０００５】
【図２Ａ】一実施例に係る、信頼ドメインアーキテクチャの例のブロック図である。
【０００６】
【図２Ｂ】一実施例に係る、信頼ドメインアーキテクチャの別の例のブロック図である。
【０００７】
【図３】一実施例に係る、信頼ドメインアーキテクチャの更なる例のブロック図である。
【０００８】
【図４】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための例示的な方法のフロー図である。
【０００９】
【図５】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供しながら、信頼ドメイン終了ルーチンを実行するための例示的な方法のフロー図である。
【００１０】
【図６】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供しながら、信頼ドメイン入力ルーチンを実行するための例示的な方法のフロー図である。
【００１１】
【図７Ａ】本開示の一実施例が用いられ得る、プロセッサのためのマイクロアーキテクチャを示すブロック図である。
【００１２】
【図７Ｂ】本開示の少なくとも１つの実施例に従って実施される、インオーダパイプライン及びレジスタリネーミング段階、アウトオブオーダ発行／実行パイプラインを示すブロック図である。
【００１３】
【図８】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するロジック回路を含む処理デバイスのためのマイクロアーキテクチャのブロック図を示す。
【００１４】
【図９】一実施例に係る、コンピュータシステムのブロック図である。
【００１５】
【図１０】別の実施例に係る、コンピュータシステムのブロック図である。
【００１６】
【図１１】一実施例に係る、システムオンチップのブロック図である。
【００１７】
【図１２】コンピューティングシステムのためのブロック図の別の実施例を示す。
【００１８】
【図１３】コンピューティングシステムのためのブロック図の別の実施例を示す。
【発明を実施するための形態】
【００１９】
信頼ドメイン（ＴＤ）を用いて仮想化されたシステムにおける分離を提供するアーキテクチャが、説明される。コンピューティングの現在のトレンドは、クラウドサービスプロバイダ（ＣＳＰ）により提供されるホスティングサービスを利用して、クラウド内にデータ及びエンタプライズワークロードを配置することである。クラウド内のデータ及びエンタプライズワークロードのホスティングの結果、ＣＳＰの顧客（本明細書でテナントと称される）は、それらのワークロードのためのより良いセキュリティ及び分離ソリューションを要求している。具体的には、顧客は、テナントのソフトウェアの、信頼できるコンピューティングベース（ＴＣＢ）の外部でＣＳＰ提供ソフトウェアのオペレーションを可能にするソリューションを探している。システムのＴＣＢは、システムの動作全体の信頼に影響する能力を有するハードウェア、ファームウェア、及び／又はソフトウェアコンポーネントのセットを指す。
【００２０】
本開示の実施例において、ＴＤアーキテクチャ及びＴＤアーキテクチャのための命令セットアーキテクチャ（ＩＳＡ）拡張（本明細書では、ＴＤ拡張（ＴＤＸ）と称される）が提供され、信頼できないＣＳＰインフラストラクチャにおいて実行される顧客（テナント）ソフトウェアのための機密性（及び完全性）を提供する。システムオンチップ（ＳｏＣ）機能であってもよいＴＤアーキテクチャは、ＴＤワークロードと、ＣＳＰの仮想マシンマネージャ（ＶＭＭ）等のＣＳＰソフトウェアとの間の分離を提供する。ＴＤアーキテクチャのコンポーネントには、１）ＭＫ−Ｔｏｔａｌメモリ暗号化（ＭＫ−ＴＭＥ）エンジンを介したメモリ暗号化、２）本明細書で信頼ドメインリソースマネージャ（ＴＤＲＭ）と称されるリソース管理機能、ＴＤＲＭは、仮想マシンモニタ（ＶＭＭ）のソフトウェア拡張であり得る、３）ＣＰＵ管理メモリ所有権テーブル（ＭＯＴ）を介して及びＣＰＵアクセス制御ＴＤ制御構造を介して提供されるプロセッサにおける実行状態及びメモリ分離機能、が含まれ得る。ＴＤアーキテクチャは、ＴＤワークロードの安全なオペレーションのために、ＭＫ−ＴＭＥエンジン、ＭＯＴ、及びアクセス制御ＴＤ制御構造を活用するＴＤを配備する、プロセッサの能力を提供する。
【００２１】
一実施例において、テナントのソフトウェアは、ＴＤとして知られるアーキテクチャ概念において実行される。ＴＤ（テナントＴＤとも称される）は、（例えば、オペレーティングシステム（ＯＳ）上で実行される他のリング３アプリケーションと共にＯＳだけを備えてもよく、又は他のリング３アプリケーションと共にＶＭＭ上で実行する仮想マシン（ＶＭ）を備えてもよい）テナントワークロードを指す。各ＴＤが、システムにおける他のＴＤとは独立して動作し、プラットフォーム上のＴＤＲＭにより割り当てられたロジックプロセッサ、メモリ、及びＩ／Ｏを用いる。各ＴＤは、信頼ドメインと関連付けられたメモリ（コード及び／又はデータを保持する）を暗号化するために、ＭＫ−ＴＭＥエンジンの少なくとも１つの専用の暗号化キーを用いてメモリにおいて暗号で分離される。 
【００２２】
本開示の実施例において、ＴＤアーキテクチャにおけるＴＤＲＭは、ＴＤのホストとして機能し、コア及び他のプラットフォームハードウェアを完全に制御する。ＴＤＲＭが、ＴＤにおけるソフトウェアに、ロジックプロセッサを割り当てる。しかしながら、ＴＤＲＭは、割り当てられたロジックプロセッサ上のＴＤの実行状態にアクセスできない。同様に、ＴＤＲＭは、物理メモリ及びＩ／ＯリソースをＴＤに割り当てるが、ＴＤ毎のＣＰＵにより強制される別個の暗号化キーの使用、及びメモリ上の他の完全性及びリプレイ制御に起因して、ＴＤのメモリ状態にアクセスすることに関与していない。ＴＤにおいて実行されるソフトウェアは、ＴＤＲＭは、プラットフォームリソースの制御を保持できるように、より少ない特権で動作する。しかしながら、ＴＤＲＭは、規定された状況下で、メモリにおける又はＣＰＵ構造におけるＴＤ状態の機密性又は完全性に影響を与えることはできない。
【００２３】
仮想化されたシステムにおいて分離を提供する従来のシステムは、テナントのＴＣＢからＣＳＰソフトウェアを完全に抽出しない。更に、従来のシステムは、本開示の実施例が回避する別個のチップセットサブシステムを用いて、ＴＣＢを大幅に増加させ得る。本開示の実施例のＴＤアーキテクチャは、ＴＣＢからＣＳＰソフトウェアを除去することにより、ＴＣＢを明示的に削減することにより、顧客（テナント）ワークロードとＣＳＰソフトウェアとの間の分離を提供する。実施例は、ＣＳＰ顧客ワークロード（テナントＴＤ）のための安全な分離を提供することにより、従来のシステムよりも技術的な改善を提供し、ＣＳＰのセキュリティ及び機能要件を満たしながら、顧客のＴＣＢからのＣＳＰソフトウェアの除去を可能にする。加えて、ＴＤアーキテクチャは、複数のＴＤに拡張可能であり、これは、複数のテナントワークロードをサポートし得る。更に、本明細書において説明されているＴＤアーキテクチャは、汎用であり、任意のダイナミックランダムアクセスメモリ（ＤＲＡＭ）、又は不揮発性デュアルインラインメモリモジュール（ＮＶ‐ＤＩＭＭ）等の、ストレージクラスメモリ（ＳＣＭ）ベースのメモリに適用され得る。このように、本開示の実施例は、ソフトウェアが、プラットフォームセキュリティ要件を損なうことなく、ＳＣＭのためのＮＶＤＩＭＭの直接アクセス型ストレージ（ＤＡＳ）モード等の、性能上の利点を利用することを可能にする。
【００２４】
図１Ａは、本開示の実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供するコンピューティングシステム１００の概略ブロック図である。仮想化システム１００は、いくつかのクライアントデバイス１０１Ａ〜１０１Ｃをサポートする仮想化サーバ１１０を含む。仮想化サーバ１１０は、ＴＤＲＭ１８０を実行する、少なくとも１つのプロセッサ１１２（処理デバイスとも称される）を含む。ＴＤＲＭ１８０は、ネットワークインタフェース１７０を介してクライアントデバイス１０１Ａ〜１０１Ｃによりアクセス可能な１又は複数のＴＤ１９０Ａ〜１９０Ｃをインスタンス化し得るＶＭＭ（ハイパーバイザとも称され得る）を含み得る。クライアントデバイス１０１Ａ〜１０１Ｃは、これらに限定されるものではないが、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ノートブックコンピュータ、携帯情報端末（ＰＤＡ）、サーバ、ワークステーション、携帯電話、モバイルコンピューティングデバイス、スマートフォン、インターネットアプライアンス、又は任意の他のタイプのコンピューティングデバイスを含み得る。
【００２５】
ＴＤとは、テナント（例えば、顧客）のワークロードを指し得る。テナントワークロードは、例えば、ＯＳ上で実行される他のリング３アプリケーションと共にＯＳだけを含んでもよく、又は他のリング３アプリケーションと共にＶＭＭ上で実行するＶＭを含んでもよい。本開示の実施例において、各ＴＤは、ＴＤと関連付けられたメモリ（コード及びデータを保持する）を暗号化するために、別個の専用のキーを用いてメモリにおいて暗号で分離され得る。
【００２６】
プロセッサ１１２は、１又は複数のコア１２０（処理コア１２０とも称される）、レンジレジスタ１３０、メモリ管理ユニット（ＭＭＵ）１４０、及び出力ポート１５０を含み得る。図１Ｂは、図１Ａに示すような、ＭＯＴ１６０及び１又は複数の信頼ドメイン制御構造（ＴＤＣＳ）１２４及び信頼ドメインスレッド制御構造（ＴＤＴＣＳ）１２８と通信する、ＴＤＲＭ１８０を実行するプロセッサコア１２０の詳細図の概略ブロック図である。ＴＤＴＣＳ及びＴＤ−ＴＣＳが、本明細書において交換可能に用いられ得る。プロセッサ１１２は、これらに限定されるものではないが、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ノートブックコンピュータ、ＰＤＡ、サーバ、ワークステーション、携帯電話、モバイルコンピューティングデバイス、スマートフォン、インターネットアプライアンス、又は任意の他のタイプのコンピューティングデバイスを含むシステムにおいて用いられ得る。別の実施例において、プロセッサ１１２は、ＳｏＣシステムにおいて用いられ得る。
【００２７】
コンピューティングシステム１００は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なＰＥＮＴＩＵＭ（登録商標）ＩＩＩ、ＰＥＮＴＩＵＭ（登録商標）４、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ、ＸＳｃａｌｅ（商標）及び／又はストロングアーム（登録商標）マイクロプロセッシングデバイスに基づいた処理システムを表すが、他のシステム（他のマイクロプロセッシングデバイス、エンジニアリングワークステーション、セットトップボックス等を有するＰＣを含む）も用いられてもよい。一実施例において、サンプルシステム１００は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なウィンドウズ（登録商標）オペレーティングシステムのバージョンを実行するが、他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）及びＬｉｎｕｘ（登録商標））、エンベデッドソフトウェア、及び／又はグラフィックスユーザインタフェースも用いられてもよい。従って、本開示の実施例は、いかなる具体的なハードウェア回路及びソフトウェアの組み合わせにも限定されない。
【００２８】
１又は複数の処理コア１２０は、システムの命令を実行する。処理コア１２０は、これらに限定されるものではないが、命令をフェッチするプリフェッチロジック、命令をデコードするデコードロジック、命令を実行する実行ロジック等を含む。実施例において、コンピューティングシステム１００は、プロセッサ１１２等のコンポーネントを含み、データを処理するためのアルゴリズムを実行するロジックを含む実行ユニットを使用する。
【００２９】
仮想化サーバ１１０は、メインメモリ１１４及び二次記憶装置１１８を含み、プログラムバイナリ及びＯＳドライバイベントを格納する。二次記憶装置１１８におけるデータは、ページと称されるブロックに格納され得、各ページは、物理メモリアドレスのセットに対応し得る。仮想化サーバ１１０は、仮想メモリ管理を使用し得、この中で、ＴＤ１９０Ａ〜１９０Ｃ等の、コア１２０により実行されるアプリケーションが、ゲスト物理メモリアドレスにマッピングされた仮想メモリアドレスを用い、ゲスト物理メモリアドレスは、ＭＭＵ１４０によりホスト／システム物理アドレスにマッピングされる。
【００３０】
コア１２０は、ＭＭＵ１４０を実行し得、プロセッサ１１２上で（例えば、コア上で）実行されるソフトウェアによるより高速なアクセスのために、二次記憶装置１１８から、メインメモリ１１４（揮発性メモリ及び／又は不揮発性メモリを含む）にページをロードする。ＴＤ１９０Ａ〜１９０Ｃのうちの１つが、メインメモリ１１４にロードされたページの物理メモリアドレスに対応する仮想メモリアドレスにアクセスしようとする場合に、ＭＭＵ１４０は、要求されたデータを返す。コア１２０は、ＴＤＲＭ１８０のＶＭＭ部分を実行し得、ゲスト物理アドレスをメインメモリのホスト物理アドレスにトランスレートし、コア１２０がこれらのマッピングを読み取り、ウォークし、変換することを可能にするプロトコルのためのパラメータを提供する。
【００３１】
一実施例において、プロセッサ１１２は、ＴＤアーキテクチャ及びＴＤアーキテクチャのためのＩＳＡ拡張（ＴＤＸ）を実装する。ＴＤアーキテクチャは、ＴＤワークロード１９０Ａ〜１９０Ｃ間の、及びプロセッサ１１２上で実行されるＣＳＰソフトウェア（例えば、ＴＤＲＭ１８０及び／又はＣＳＰ  ＶＭＭ（例えば、ルートＶＭＭ１８０））からの分離を提供する。ＴＤアーキテクチャのコンポーネントは、１）ＭＫ−ＴＭＥエンジン１４５を介したメモリ暗号化、２）本明細書でＴＤＲＭ１８０と称されるリソース管理機能、３）ＭＯＴ１６０を介して、及びアクセス制御ＴＤ制御構造（即ち、ＴＤＣＳ１２４及びＴＤＴＣＳ１２８）を介して提供されるプロセッサ１１２における実行状態及びメモリ分離機能、を含み得る。ＴＤＸアーキテクチャは、ＴＤワークロード１９０Ａ〜１９０Ｃの安全なオペレーションのために、ＭＫ−ＴＭＥエンジン１４５、ＭＯＴ１６０、及びアクセス制御ＴＤ制御構造（即ち、ＴＤＣＳ１２４及びＴＤＴＣＳ１２８）を活用するＴＤ１９０Ａ〜１９０Ｃを配備する、プロセッサ１１２の能力を提供する。
【００３２】
本開示の実施例において、ＴＤＲＭ１８０は、ホストとして機能し、コア１２０及び他のプラットフォームハードウェアを完全に制御する。ＴＤＲＭ１８０は、ＴＤ１９０Ａ〜１９０Ｃにおけるソフトウェアに、ロジックプロセッサを割り当てる。しかしながら、ＴＤＲＭ１８０は、割り当てられたロジックプロセッサ上のＴＤ１９０Ａ〜１９０Ｃの実行状態にアクセスできない。同様に、ＴＤＲＭ１８０が、物理メモリ及びＩ／Ｏリソースを、ＴＤ１９０Ａ〜１９０Ｃに割り当てるが、別個の暗号化キー、及びメモリ上の他の完全性及びリプレイ制御に起因して、ＴＤ１９０Ａのメモリ状態にアクセスすることに関与していない。
【００３３】
別個の暗号化キーに関して、プロセッサは、ＭＫ−ＴＭＥエンジン１４５を利用し、実行中に用いられるメモリを暗号化（及び復号化）し得る。トータルメモリ暗号化（ＴＭＥ）では、コア１２０上で実行されるソフトウェアによる任意のメモリアクセスが、暗号化キーでメモリにおいて暗号化され得る。ＭＫ−ＴＭＥは、複数の暗号化キーの使用を可能にするＴＭＥの拡張機能である（サポートされるキーの数は、実装に依存する）。プロセッサ１１２は、ＭＫ−ＴＭＥエンジン１４５を利用し得、異なるページを、異なるＭＫ−ＴＭＥキーを用いて暗号化させる。ＭＫ−ＴＭＥエンジン１４５は、本明細書において説明されているＴＤアーキテクチャにおいて利用され得、各ＴＤ１９０Ａ〜１９０Ｃ毎に１又は複数の暗号化キーをサポートし、異なるＣＳＰ顧客ワークロード間の暗号分離を達成するのを助ける。例えば、ＭＫ−ＴＭＥエンジン１４５がＴＤアーキテクチャにおいて用いられる場合に、ＣＰＵは、ＴＤ（全てのページ）が、ＴＤ固有のキーを用いて暗号化されることをデフォルトで強制する。更に、ＴＤが、特定のＴＤページがプレーンテキストであるか、又はＣＳＰソフトウェアに対して不透明である、異なるエフェメラルキーを用いて暗号化されるかを更に選択し得る。 
【００３４】
各ＴＤ１９０Ａ〜１９０Ｃは、（例えば、仮想マシン拡張（ＶＭＸ）を用いる）ＶＭＭ、ＯＳ、及び／又は（ＯＳによりホスティングされる）アプリケーションソフトウェアからなるソフトウェアスタックをサポートするソフトウェア環境である。各ＴＤ１９０Ａ〜１９０Ｃは、他のＴＤ１９０Ａ〜１９０Ｃとは独立して動作し、プラットフォーム上のＴＤＲＭ１８０により割り当てられたロジックプロセッサ、メモリ、及びＩ／Ｏを用いる。ＴＤ１９０Ａ〜１９０Ｃにおいて実行されるソフトウェアは、ＴＤＲＭ１８０は、プラットフォームリソースの制御を保持できるように、より少ない特権で動作する。しかしながら、ＴＤＲＭは、規定された状況下で、ＴＤ１９０Ａ〜１９０Ｃの機密性又は完全性に影響を与えることはできない。ＴＤアーキテクチャ及びＴＤＸの更なる詳細が、図１Ｂを参照して以下でより詳細に説明される。
【００３５】
本開示の実施例は、コンピュータシステムに限定されるものではない。本開示の代替的な実施例は、ハンドヘルドデバイス及びエンベデッドアプリケーション等の他のデバイスにおいて用いられ得る。ハンドヘルドデバイスのいくつかの例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）、及びハンドヘルドＰＣが含まれる。エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号処理デバイス（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、又は少なくとも１つの実施例に係る１又は複数の命令を実行し得る任意の他のシステムを含み得る。
【００３６】
一実施例が、シングル処理デバイスのデスクトップ又はサーバシステムの文脈で説明され得るが、代替的な実施例は、マルチプロセッシングデバイスシステムに含まれてもよい。コンピューティングシステム１００は、「ハブ」システムアーキテクチャの例であり得る。コンピューティングシステム１００は、データ信号を処理するプロセッサ１１２を含む。１つの図示的な例として、プロセッサ１１２は、複合命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッシングデバイス、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッシングデバイス、超長命令語（ＶＬＩＷ）マイクロプロセッシングデバイス、命令セットの組み合わせを実施した処理デバイス、又は、例えばデジタル信号処理デバイス等、任意の他の処理デバイスを含む。プロセッサ１１２は、命令、データ又はそれらの任意の組み合わせを格納する、メインメモリ１１４及び／又は二次記憶装置１１８等、コンピューティングシステム１００におけるプロセッサ１１２と他のコンポーネントとの間のデータ信号を送信する処理デバイスバスに結合される。コンピューティングシステム１００の他のコンポーネントとしては、グラフィックスアクセラレータ、メモリコントローラハブ、Ｉ／Ｏコントローラハブ、無線トランシーバ、フラッシュＢＩＯＳ、ネットワークコントローラ、オーディオコントローラ、シリアル拡張ポート、Ｉ／Ｏコントローラ等が挙げられ得る。これらの要素は、当業者によく知られたこれらの従来の機能を実行する。
【００３７】
一実施例において、プロセッサ１１２は、レベル１（Ｌ１）内部キャッシュメモリを備える。アーキテクチャに応じて、プロセッサ１１２は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。他の実施例は、特定の実施例及び必要性に応じて、内部キャッシュ及び外部キャッシュの両方の組み合わせを含む。レジスタファイルは、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクドレジスタ、シャドーレジスタ、チェックポイントレジスタ、ステータスレジスタ、構成レジスタ及び命令ポインタレジスタを含む様々なレジスタに異なるタイプのデータを格納する。
【００３８】
実行ユニットは、浮動小数点ユニットを有し得、又は有しない場合があることに留意されたい。一実施例において、プロセッサ１１２は、マイクロコードを格納するマイクロコード（ｕｃｏｄｅ）ＲＯＭを含み、これは、実行されると、特定のマクロ命令のためのアルゴリズムを実行し、或いは複合シナリオを処理する。ここで、マイクロコードは、プロセッサ１１２のための論理バグ／修正を処理するべく、潜在的にアップデート可能である。 
【００３９】
実行ユニットの代替的な実施例は、マイクロコントローラ、エンベデッド処理デバイス、グラフィックスデバイス、ＤＳＰ及び他のタイプのロジック回路においても用いられ得る。システム１００は、メインメモリ１１４（メモリ１１４とも称され得る）を含む。メインメモリ１１４は、ＤＲＡＭデバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、又は他のメモリデバイスを含む。メインメモリ１１４は、プロセッサ１１２により実行されるべきデータ信号によって表される命令及び／又はデータを格納する。プロセッサ１１２は、処理デバイスバスを介してメインメモリ１１４に結合される。メモリコントローラハブ（ＭＣＨ）等のシステムロジックチップは、処理デバイスバス及びメインメモリ１１４に結合され得る。ＭＣＨは、命令及びデータの格納、並びにグラフィックスコマンド、データ及びテクスチャの格納用に、高帯域幅メモリパスをメインメモリ１１４に提供し得る。また、ＭＣＨは例えば、プロセッサ１１２、メインメモリ１１４、及びシステム１００内の他のコンポーネントの間でデータ信号を導き、処理デバイスバス、メモリ１１４、及びシステムＩ／Ｏの間でデータ信号をブリッジするように用いられ得る。ＭＣＨは、メモリインタフェースを介してメモリ１１４に結合され得る。いくつかの実施例において、システムロジックチップは、アクセラレーテッドグラフィックスポート（ＡＧＰ）相互接続を介してグラフィックスコントローラに結合するためのグラフィックスポートを提供し得る。
【００４０】
コンピューティングシステム１００は、Ｉ／Ｏコントローラハブ（ＩＣＨ）も含み得る。ＩＣＨは、ローカルＩ／Ｏバスを介して、いくつかのＩ／Ｏデバイスに直接的接続を提供し得る。ローカルＩ／Ｏバスは、周辺装置をメモリ１１４、チップセット、及びプロセッサ１１２に接続するための高速Ｉ／Ｏバスである。いくつかの例は、オーディオコントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）、無線トランシーバ、データストレージ、ユーザ入力及びキーボードインタフェースを含むレガシーＩ／Ｏコントローラ、ユニバーサルシリアルバス（ＵＳＢ）等のシリアル拡張ポート、及びネットワークコントローラである。データストレージデバイスは、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ‐ＲＯＭデバイス、フラッシュメモリデバイス、又は他の大容量ストレージデバイスを備え得る。
【００４１】
システムの別の実施例については、上記の処理デバイスコア１２０により実行される命令は、システムオンチップと共に用いられ得る。システムオンチップの一実施例は、処理デバイス及びメモリから構成される。そのような１つのシステムのためのメモリは、フラッシュメモリである。フラッシュメモリは、処理デバイス及び他のシステムコンポーネントと同一のダイ上に位置し得る。更に、メモリコントローラ又はグラフィックスコントローラ等の他のロジックブロックも、システムオンチップ上に位置付けられ得る。
【００４２】
図１Ｂを参照すると、この図は、本開示の一実施例に係る、図１Ａのプロセッサ１１２のブロック図を示す。一実施例において、プロセッサ１１２は、単一のコア１２０を介して、又はいくつかのコア１２０にわたってアプリケーションスタック１０１を実行し得る。上述のように、プロセッサ１１２は、ＴＤアーキテクチャ及びＴＤＸを提供し得、信頼できないクラウドサービスプロバイダ（ＣＳＰ）インフラストラクチャにおいて、顧客／テナント（即ち、ＴＤ１９０Ａ）において実行される顧客ソフトウェアのための機密性（及び完全性）を提供する。ＴＤアーキテクチャは、ＭＯＴ１６０を介したメモリ分離、ＴＤＣＳ１２４及び／又はＴＤＴＣＳ１２８を介してＣＰＵキー管理を組み込むＣＰＵ状態分離、及びＴＤ１９０ＡソフトウェアのためのＣＰＵ測定インフラストラクチャを提供する。
【００４３】
一実施例において、ＴＤアーキテクチャは、ＯＳ及びＯＳ管理アプリケーション（仮想化及び非仮想化）の機密オペレーションをサポートするＩＳＡ拡張（ＴＤＸと称される）を提供する。ＴＤＸがイネーブルされた、プロセッサ１１２を含むもの等のプラットフォームが、ＴＤと称される複数の暗号化されたコンテキストとして機能し得る。説明を容易にするために、単一のＴＤ１９０Ａが図１Ｂにおいて示される。各ＴＤ１９０Ａは、ＶＭＭ、ＶＭ、ＯＳ、及び／又はアプリケーションを実行し得る。例えば、ＴＤ１９０Ａは、ＶＭ１９５Ａをホスティングするように示される。
【００４４】
一実施例において、ＴＤＲＭ１８０は、ＶＭＭ機能（例えば、ルートＶＭＭ）の一部として含み得る。ＶＭＭが、ソフトウェア、ファームウェア、又はハードウェアを指し得、ＶＭ１９５Ａ等の仮想マシン（ＶＭ）を作成、実行、及び管理する。ＶＭＭが、１又は複数のＶＭを作成、実行、及び管理し得ることに留意されたい。示されるとおり、ＶＭＭ１１０は、処理デバイス１２２の１又は複数の処理コア１２０のコンポーネントとして含まれる。ＶＭＭ１１０は、ＶＭ１９５Ａを作成及び実行し、１又は複数の仮想プロセッサ（例えば、ｖＣＰＵ）をＶＭ１９５Ａに割り当て得る。ＶＭ１９５Ａは、本明細書でゲスト１９５Ａと称され得る。ＶＭＭは、ＶＭ１９５Ａが、図１Ａのコンピューティングシステム１００等の、コンピューティングシステムの下層のハードウェアにアクセスすることを可能にし得る。ＶＭ１９５Ａは、ゲストオペレーティングシステム（ＯＳ）を実行し得る。ＶＭＭは、ゲストＯＳの実行を管理し得る。ゲストＯＳは、コンピューティングシステム１００の、ハードウェア及びソフトウェアリソースの下層に対するＶＭ１９５Ａの仮想プロセッサのアクセスを制御するために機能し得る。処理デバイス１１２上で動作する様々なＶＭ１９５Ａがある場合に、ＶＭＭは、様々なゲスト上で実行されるゲストＯＳの各々を管理し得ることに留意されたい。いくつかの実施例において、ＶＭＭが、ＴＤ１９０Ａで実施され得、ＶＭ１９５Ａを管理する。このＶＭＭは、テナントＶＭＭ及び／又は非ルートＶＭＭと称され得、以下で更に詳細に検討される。
【００４５】
ＴＤＸはまた、ＴＤＲＭ１８０と称されるＴＤアーキテクチャのＴＤ管理層のためのプログラミングインタフェースを提供する。ＴＤＲＭが、ＣＳＰ／ルートＶＭＭの一部として実施され得る。ＴＤＲＭ１８０は、ＴＤ１９０Ａの動作を管理する。ＴＤＲＭ１８０は、ＣＰＵ、メモリ、及び入／出力（Ｉ／Ｏ）等のリソースをＴＤ１９０Ａに割り当て、管理し得るが、ＴＤＲＭ１８０は、ＴＤ１９０ＡのＴＣＢの外部で動作するように設計される。システムのＴＣＢは、システムの動作全体のために信頼に影響を及ぼす能力を有するハードウェア、ファームウェア、及び／又はソフトウェアコンポーネントのセットを指す。
【００４６】
一実施例において、ＴＤアーキテクチャは、従って、ＴＤ１９０Ａにおいて実行されるソフトウェアを保護する機能である。上述のように、ＴＤアーキテクチャのコンポーネントには、１）ＴＭＥに対するマルチキー拡張を有するＴＭＥエンジン（例えば、図１ＡのＭＫ−ＴＭＥエンジン１４５）を介したメモリ暗号化、２）ソフトウェアリソース管理層（ＴＤＲＭ１８０）、及び３）ＴＤアーキテクチャにおける実行状態及びメモリ分離機能、が含まれ得る。
【００４７】
図２Ａは、ＴＤアーキテクチャ２００を実施する例示的なコンピューティングシステムを示すブロック図である。ＴＤアーキテクチャ２００は、２つのタイプのＴＤをサポートする。第１のタイプのＴＤは、テナントが、機密性を強制するＣＳＰを信頼し、本開示の実施例のＴＤアーキテクチャを実装しないＴＤである。このタイプのレガシーＴＤは、ＴＤ１  ２１０として示される。ＴＤ１  ２１０は、ＣＳＰ  ＶＭＭ管理ＴＣＢ２０２を有するＣＳＰ  ＴＤである。ＴＤ１  ２１０は、ＣＳＰ  ＶＭ２１４及び／又は１又は複数のテナントＶＭ２１６Ａ、２１６Ｂを管理するＣＳＰ  ＶＭＭ２１２を含み得る。この場合、テナントＶＭ２１６Ａ、２１６Ｂは、ＶＭ２１６Ａ、２１６ＢのＴＣＢ２０２内にある、ＣＳＰ  ＶＭＭ２１２により管理される。 本開示の実施例において、テナントＶＭ２１６Ａ、２１６Ｂは、このモデルにおいてＴＭＥ又はＭＫ−ＴＭＥを介してメモリ暗号化を更に活用し得る（以下で更に説明される）。
【００４８】
他のタイプのＴＤは、テナントが、機密性を強制するＣＳＰを信頼せず、従って、本開示の実施例のＴＤアーキテクチャを有するＣＰＵに依存するＴＤである。このタイプのＴＤは、ＴＤ２  ２２０及びＴＤ３  ２３０として２つの変形例で示される。ＴＤ２  ２２０は、管理されたテナントＶＭ２２５Ａ、２２５Ｂに対してＴＤ２  ２２０において実行されるテナントＶＭＭ（非ルート）２２２により利用されている仮想化モード（ＶＭＸ等）と共に示される。ＴＤ３  ２３０は、仮想化モードを用いるソフトウェアを含まないが、代わりに、直接ＴＤ３  ２３０における啓発された（ｅｎｌｉｇｈｔｅｎｅｄ）ＯＳ２３５を実行する。ＴＤ２  ２２０及びＴＤ３  ２３０は、本開示の実施例において説明されるようなハードウェア強制ＴＣＢ２０４を有するテナントＴＤである。一実施例において、ＴＤ２  ２２０又はＴＤ３  ２３０は、図１Ａ及び／又は図１Ｂに関して説明されているＴＤ１９０Ａと同じであり得る。
【００４９】
ＴＤＲＭ１８０は、リソースの割り当てを含む、３つのタイプのＴＤ２１０、２２０、２３０全てのライフサイクルを管理する。しかしながら、ＴＤＲＭ１８０は、ＴＤタイプＴＤ２  ２２０及びＴＤ３  ２３０のためのＴＣＢにはない。ＴＤアーキテクチャ２００は、システム上でアクティブなＴＤの数又は組み合わせに対して任意のアーキテクチャの制約を加えない。しかしながら、特定の実施例におけるソフトウェア及び特定のハードウェア制限が、他の制約に起因してシステム上で同時に実行されるＴＤの数を限定し得る。 
【００５０】
図２Ｂは、ＴＤアーキテクチャ２５０、及びＴＤ２２０とＴＤＲＭ２８０との間のやり取りの例を示すブロック図である。一実施例において、ＴＤ２２０及びＴＤＲＭ２８０は、図２Ａに関して説明されているそれらの対応するものと同一である。ＴＤアーキテクチャ２５０は、図１Ａ及び図１Ｂのコンピューティングデバイス１００により提供されるＴＤアーキテクチャ、及び／又は図２ＡのＴＤアーキテクチャ２００と同じであり得る。ＴＤアーキテクチャ２５０は、システム上でアクティブなＴＤのライフサイクルを管理する層を提供する。ＴＤに関するプロセッササポートが、ＴＤＸオペレーションと呼ばれるプロセッサオペレーションの形態により提供される。ＴＤＸオペレーションには、リソースマネージャオペレーション、及びテナントオペレーションの２つの種類がある。一般に、ＴＤＲＭ１８０は、ＴＤＸリソースマネージャオペレーションで実行し、ＴＤ２  ２２０等のＴＤは、ＴＤＸテナントオペレーションで実行する。リソースマネージャオペレーションとテナントオペレーションとの間の遷移は、ＴＤＸ遷移と呼ばれる。
【００５１】
ＴＤＸ遷移には、ＴＤエントリ２７０及びＴＤ終了２６０の２つの種類がある。ＴＤＸリソースマネージャオペレーションからＴＤＸテナントオペレーションへの遷移は、ＴＤエントリ２７０と呼ばれる。ＴＤＸテナントオペレーションからＴＤＸリソースマネージャオペレーションへの遷移は、ＴＤ終了２６０と呼ばれる。
【００５２】
ＴＤＸリソースマネージャオペレーションにおけるプロセッサの挙動は、それが、ＴＤＸオペレーションの外部にあるときと類似である。主要な相違は、ＴＤＸオペレーション（ＴＤＸ命令）のセットが、利用可能であること、特定の制御レジスタにロードされ得る値が、限定され、ＴＤＲＭ１８０のモード及び能力を制限すること、である。
【００５３】
ＴＤＸテナントオペレーションにおけるプロセッサの挙動は、分離を容易にするために同様に制限される。例えば、通常のオペレーションの代わりに、特定のイベントが、ＴＤＲＭ１８０にＴＤ終了２６０を引き起こす。これらのＴＤ終了２６０は、ＴＤＲＭ１８０が、ＴＤ２２０の挙動又は状態を修正することをできないようにする。ＴＤＲＭ１８０は、プラットフォーム機能を用い、プラットフォームリソースの制御を保持する。ＴＤ２２０において実行されるソフトウェアは、ソフトウェアビジブル情報を用い得、それがＴＤ２２０において実行されていると決定し、ＴＤ２２０にロードされた追加のソフトウェア上で、ローカル測定ポリシーを強制し得る。しかしながら、ＴＤ２２０のセキュリティ状態を検証することは、機密性を保証するために遠隔の証明団体により実行される。
【００５４】
ＴＤアーキテクチャ２５０は、ＴＤ２２０において実行される場合に仮想化に依存するソフトウェアに対する互換性の影響を最小限にするように設計され、従って、テナントオペレーションにおいて実行されるＶＭ２２５Ａ、２２５Ｂと、テナントオペレーションにおいて実行されるテナントＶＭＭ２２２との間のほとんどのやり取りを、変化しないままにする。ＴＤ２２０にＶＭＭ２２２が存在しない場合、ＶＭ  ＯＳが、ルートＶＭＭとしてＴＤＲＭ１８０と共に機能するように修正され得る。
【００５５】
一実施例において、ＴＤＲＭ１８０は、ＴＤ終了２６０に、例えば、ＴＤ１２０を終了させる、又はメモリリソースを管理させる（例えば、割り当てられたメモリリソースをもたらす、空きメモリリソースを要求する、等）ように明示的に決定し得る。ＴＤアーキテクチャ２５０はまた、ＴＤＲＭ１８０に、ＴＤ終了２６０をプリエンプションに強制する能力を提供する。ＴＤ終了２６０では、ＴＤアーキテクチャは、ＴＤ２２０の実行状態が、ＴＤ２２０に割り当てられたＣＰＵアクセス制御メモリに保存され、ＴＤＲＭ１８０又は他のＴＤからＴＤ状態の機密性を保護するために、ＴＤＲＭ１８０又は他のＴＤに見えないＴＤ２２０の一意の暗号化キー（以下で更に検討される）を用いて暗号化されることを強制する。ＴＤ実行状態は、メモリ上の完全性制御を介してスプーフィング、再マッピング、及び／又はリプレイから同様に保護され得る。
【００５６】
ＴＤ入力２７０は、ＴＤ終了２６０に対する相補的なイベントである。例えば、ＴＤＲＭ１８０がロジックプロセッサ上で実行されるようにＴＤ２２０をスケジューリングし、実行をＴＤ２２０において実行されるソフトウェアに転送する場合に、ＴＤ入力２７０が発生し得る。ＴＤ入力２７０の間に、ＴＤアーキテクチャ２５０は、ＴＤＲＭ１８０の実行状態が、ＴＤＲＭにより所有されるメモリに保存されることを強制し、これは、ＴＤＲＭ１８０による単独の使用のために割り当てられた一意の暗号化キーを用いて暗号化される。
【００５７】
ＴＤ２２０等のＴＤは、ＴＤＣＲＥＡＴＥ（ＴＤＣＳを作成する）、ＴＤＴＣＲＥＡＴＥ（ＴＤ−ＴＣＳを作成する）、及びＴＤＡＤＤＰＡＧＥ命令を用いて、ＴＤＲＭ１８０によりセットアップされ得、ＴＤＲＭ１８０は、ＴＤ２２０に属するメモリを、ＴＤＲＭ１８０又は他のＴＤに見えない又はアクセス不可能であるＴＤの一意の暗号化キーを用いて暗号化させる。ＴＤに属する任意の命令を実行する前に、全てのＴＤメモリが、ＴＤの一意のキーを用いて暗号化される。特定の命令名称が本明細書で参照されるが、これらの命令に関する他の名称が、本開示の実施例において利用され得、本明細書で提供されている特定の名称に限定されない。
【００５８】
一実施例において、ＴＤＲＭ１８０は、署名検証後に小さいソフトウェアイメージ（ＩＢＢ又は初期ブートブロックに類似）で各ＴＤ２２０を起動し、信頼のプラットフォームルートを用いて（後続の証明のために）ＩＢＢ測定を記録し得る。ＴＤ２２０の測定された起動を完了し、ＴＤＲＭ１８０から追加のリソースを要求することを担当するのは、ＴＤ２２０において実行されるＩＢＢソフトウェアである。ＴＤ２２０は、ＴＤ２２０内で実行される場合に、ＴＤ２２０全体に単一の暗号化キーを用いるか、又は異なるテナントＶＭ２２５Ａ、２２５Ｂ（及び／又はコンテナ又はＮＶＲＡＭ等の異なるメモリリソース）に追加の暗号化キーを用いるか、の選択肢を有する。従って、ＴＤ２２０が最初にセットアップされる場合に、ＴＤ２２０は、専用のＣＰＵ生成ＭＫ−ＴＭＥキーを用いている。その後、ＴＤ２２０は、ＴＤ２２０内で動作する各テナントソフトウェア管理コンテキスト（例えば、テナントＶＭ２２５Ａ、２２５Ｂ、コンテナ又は他のメモリタイプ）に関して、追加のＭＫ−ＴＭＥ暗号化キーを任意でセットアップし得る。
【００５９】
ＣＳＰの両方のＶＭＭ（例えば、ＴＤＲＭ  ルートＶＭＭ１８０及びテナントＶＭＭ２２２）に対するソフトウェア互換性影響を最小限にするべく、仮想化（例えば、ＶＭＸ）オペレーションは、ＴＤアーキテクチャ２５０においてＴＤ２２０内で修正されないままであり得る。同様に、拡張ページテーブル（ＥＰＴ）管理等のＶＭＭソフトウェアのオペレーションは、テナントＶＭＭ２２２の制御下のままであり得る（それが、ＴＤ２２０においてアクティブであり、ＴＤＲＭ１８０により管理されない場合）。ＴＤＲＭ１８０が各ＴＤ２２０に関して物理メモリを割り当てるので、ＴＤアーキテクチャ２５０は、ＭＯＴ（即ち、図１Ａ及び図１Ｂに関して説明されているＭＯＴ１６０）を含む。プロセッサ１１２は、ＴＤＲＭ１８０管理ＭＯＴを参照し、メモリの割り当てをＴＤ２２０に割り当てる。これが、ＴＤＲＭ１８０に、割り当てられたＴＤメモリに常駐するデータへのいかなる可視性も有することなく、リソースとしてメモリを管理する完全な能力を可能にする。いくつかの実施例において、上述のように、プラットフォーム（例えば、ルート）ＶＭＭ及びＴＤＲＭ１８０は、同一の暗号化キードメイン内にあり得、従って、メモリ管理及びスケジューラ機能を共有する（しかし、依然としてテナントのＴＣＢの外部のままである）。
【００６０】
図３は、ＴＤアーキテクチャ３００の別の例を示すブロック図である。ＴＤアーキテクチャ３００は、ＴＤに関するＩ／Ｏ概念を示す。一実施例において、ＴＤアーキテクチャ３００は、全てのＩ／Ｏデバイス（例えば、ＮＩＣ３２０、ストレージ３３０、単一ルート入／出力仮想化（ＳＲ‐ＩＯＶ）ＮＩＣ２４０、等）が、ＣＳＰ及びＴＤＲＭを信頼するＴＤ１  ２１０（例えば、レガシーＴＤ１  ２１０）に取り付けられることを可能にし得る。一実施例において、ＴＤアーキテクチャ３００は、（ＳＲ‐ＩＯＶ及び拡張可能Ｉ／Ｏを含む）デバイスの、ＣＳＰソフトウェアを信頼しない、テナントＴＤ２  ２２０等のＴＤ（例えば、テナントＴＤ２  ２２０）への直接割り当てを可能にし得ない。代わりに、ＴＤＲＭ１８０は、ＴＤ１  ２１０等の、ＣＳＰ  ＴＤと、テナントＴＤ２  ２２０等の、他のＴＤとの間でメモリ３１０を共有し、非ＣＳＰ  ＴＤ（例えば、テナントＴＤ２  ２２０）において合成（「ｓｙｎ」）デバイス（例えば、ｓｙｎ  ＮＩＣ３２５、ｓｙｎ  ストレージ３３５）を実施する機能を提供し得る。いくつかの実施例において、テナントＴＤ２  ２２０等の、ＣＳＰソフトウェアを信頼しないテナントＴＤが、Ｉ／Ｏデータの保護を担当し得る。ＴＤアーキテクチャ３００は、共有メモリ３１０を介して公開されたＩ／Ｏデータを保護し得ない。いくつかの実施例において、Ｉ／Ｏデータが、通信エンドポイント間の既存のセキュリティプロトコルを用いて保護され得る。
【００６１】
図１Ｂに戻って参照すると、ＭＯＴ１６０（ＴＤ‐ＭＯＴと称され得る）は、プロセッサ１１２により管理される、テーブル等の構造であり、ＴＤ１９０Ａ等の、実行しているＴＤへ、物理メモリページの割り当てを強制する。プロセッサ１１２はまた、ＭＯＴ１６０を用い、テナントＴＤ１９０Ａ又はＴＤＲＭ１８０として動作するソフトウェアにより参照される物理アドレスが、それに明示的に割り当てられていないメモリにアクセスできないことを強制する。
【００６２】
ＭＯＴ１６０は、以下の特性を強制する。第１に、ＴＤ１９０Ａの外部のソフトウェアは、異なるＴＤ（これは、ＴＤＲＭ１８０を含む）に属する任意のメモリに、プレーンテキストでアクセス（読み取り／書き込み／実行）できるべきでない。第２に、ＭＯＴ１６０を介してＴＤ１９０Ａ等の特定のＴＤに割り当てられたメモリページは、（プロセッサが、メモリが割り当てられたＴＤを実行している）システムにおける任意のプロセッサからアクセス可能であるべきである。
【００６３】
ＭＯＴ１６０構造は、メモリの各４ＫＢページのメタデータ属性を保持するために用いられる。追加のページサイズ（２ＭＢ、１ＧＢ）のために追加の構造が規定され得る。メモリの各４ＫＢページのためのメタデータは、物理ページアドレスにより直接インデックス付けされる。他の実施例において、他のページサイズが、（ページテーブルのような）階層構造によりサポートされ得る。
【００６４】
ＭＯＴ１６０において参照される４ＫＢページが、ＴＤ１９０Ａの１つの実行インスタンスに属し得る。ＭＯＴ１６０において参照される４ＫＢページが、有効なメモリであってもよく、又は、無効であるとマークされてもよい（従って、例えばＩＯであり得る）。一実施例において、各ＴＤインスタンス１９０Ａが、そのＴＤ１９０Ａに関するＴＤＣＳ１２４を保持する１つのページを含む。
【００６５】
一実施例において、ＭＯＴ１６０は、メモリの４ＫＢの境界に位置合わせされ、プラットフォーム初期化後、ソフトウェアによるアクセスから保護されたメモリの物理的に連続した領域を占有する。実施例において、ＭＯＴは、マイクロアーキテクチャ構造であり、ソフトウェアから直接アクセスされ得ない。アーキテクチャ的に、ＭＯＴ１６０は、ホスト物理メモリの各４ＫＢページに関して以下のセキュリティ属性を保持する：
―ページステータス１６２―有効／無効ビット（ページが、有効なメモリであるか否か）
―ページカテゴリ―ＤＲＡＭ、ＮＶＲＡＭ、ＩＯ、予約
―ページ状態１６３―（４ビットベクトル）ページが次の場合、指定する、
―ビット１−フリー（ＴＤに割り当てられておらず、ＴＤＲＭにより用いられていないページ）
―ビット２−割り当て済（ＴＤ又はＴＤＲＭに割り当てられたページ）
―ビット３−ブロック済（解放／（再）割り当ての処理にある間にブロックされたページ）
―ビット４−ペンディング（ＴＤに割り当てられているが、まだＴＤにより受け入れられていないダイナミックなページ）
―ＴＤＩＤ１６４（４０ビット）ページを特定の一意ＴＤに割り当てるＴＤ識別子。ＴＤＣＳのアドレス。
【００６６】
いくつかの実施例において、拡張ＭＯＴ１６０エントリがサポートされ得、次を更に含む。
【００６７】
―ページキーＩＤ１６５―（８ビット―サイズは実装固有である）ＴＤにより参照される物理メモリのためのプロセッサページウォーク中にフェッチされたキーＩＤと一致すると予期されるページ毎暗号化キーを指定する。ＭＯＴ１６０エントリが拡張エントリでない場合、ページキーＩＤは、ＴＤＣＳ１２４から導出される。ＭＯＴにおいて指定されたキーＩＤ値のうちの１つが、ＴＤＲＭ（又はルートＶＭＭ）とメモリコンテンツを共有するために用いられ得る。共有ページは、入出力バッファがＴＤＲＭにより管理されるハードウェアデバイスに送信されるように保持し得る。同様に、共有ページが、ＴＤＲＭによりＴＤに公開される仮想デバイスのエミュレーションのために用いられ得る。
【００６８】
―ゲスト物理アドレス１６６―（５２ビット）ＴＤにおいて実行されるソフトウェアにより用いられる予期されるゲスト物理アドレスを指定する。（このフィールドは、ＴＤＲＭ１８０がメモリ再マッピングを実行し、メモリをスワップする能力を実施することを予期する場合に用いられる）。
【００６９】
―ゲスト許可１６７―最終ページにアサートする（ユーザ及びスーパーバイザーのための読み取り、書き込み、実行）。ＴＤにおいて実行されるＶＭＭをサポートするためにこれらの許可ビットの複数のセットがあり得る。
【００７０】
ＭＯＴ１６０は、ＴＤＸがプロセッサ１１２においてイネーブルされる場合に（例えば、ＣＰＵＩＤベースの列挙の後、ＣＲ４イネーブルビットを介して）イネーブルされ得る。一旦ＭＯＴ１６０がイネーブルされると、ＭＯＴ１６０は、プロセッサ１１２により用いられ得、ＴＤＲＭ１８０を含む、ソフトウェアにより開始された全ての物理メモリアクセスに関するメモリアクセス制御を強制し得る。一実施例において、アクセス制御は、ソフトウェアによりなされるメモリアクセスに関するページウォーク中に強制される。テナントＴＤ１９０Ａ又はＴＤＲＭ１８０に割り当てられていないメモリに対する、プロセッサ１１２により実行される物理メモリアクセスは、Ａｂｏｒｔページセマンティクスと共に失敗する。
【００７１】
本開示の実施例において、ＴＤＲＭ１８０は、以下の命令リーフと共にＭＯＴオペレーション命令（ＴＤＭＯＴＯＰ）を用いてＭＯＴ１６０を介してメモリリソースを管理する。
【００７２】
ページをＭＯＴに追加する（ＴＤＭＯＴＡＤＤＰＡＧＥ）―ホスト物理アドレス（ＨＰＡ）に対応するフリーＭＯＴ１６０エントリを、ＴＤＩＤにより指定されたＴＤ１９０Ａに（排他的に）割り当てられているとマークする。任意の他の以前のページ状態は、障害を引き起こす。この命令は、このＨＰＡへのマッピングをキャッシュしている他のＴＤ１９０Ａがないことを確認するために、クロススレッドＴＬＢシュートダウンを強制する。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。ＴＤＲＭ１８０が拡張ＭＯＴをイネーブルにした場合、次に、命令は、指定されたＨＰＡにマッピングされる初期ゲスト物理アドレス（ＧＰＡ）を指定し得る。プロセッサ１１２は、ＴＤＲＭ１８０により管理されるＥＰＴ構造をウォークすることにより、ＧＰＡがＨＰＡにマッピングされていることを検証する。ページをＴＤに割り当てる（ＴＤＭＯＴＡＵＧＰＡＧＥ）がページの測定をキャプチャしない、追加ページの変形例が実施され得る。
【００７３】
ページをＭＯＴから破棄する（ＴＤＭＯＴＲＥＶＯＫＥＰＡＧＥ）―割り当てられたページをフリーページとしてマークする。この命令は、クロススレッドＴＬＢシュートダウンを強制し、後続のＴＤ１９０Ａアクセスが、ＨＰＡ所有権をチェックすること、及びページコンテンツが、プロセッサ１１２によりクリアされることを確認する。ＴＬＢ充填中にＭＯＴ１６０ページ障害を経験するＴＤ１９０Ａアクセスは、プロセッサ１１２に、ＴＤＣＳ１２４を無効化させ、これは、更なるＴＤがＴＤ１９０Ａに入ることを防止する。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。
【００７４】
ＭＯＴにおいてページをブロックする（ＴＤＭＯＴＢＬＯＣＫＰＡＧＥ）―ＨＰＡに対応するフリー又は割り当てられたＭＯＴ１６０エントリを、ソフトウェア使用のためにブロックされたものとしてマークする。任意の他の以前のページ状態が、ＴＤＲＭ１８０障害を引き起こす。この命令は、クロススレッドＴＬＢシュートダウンを強制し、後続のＴＤ１９０Ａアクセスが、ＨＰＡ所有権をチェックすることを確認する。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。
【００７５】
ＭＯＴにおいてページをブロック解除する（ＴＤＭＯＴＵＮＢＬＯＣＫＰＡＧＥ）―ＨＰＡに対応するブロックされたＭＯＴ１６０エントリを、ソフトウェア使用／割り当てに関して有効であるとマークする。任意の他の以前のページ状態が、障害を引き起こす。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。 
【００７６】
ＴＤソフトウェアがメモリにおける任意の秘密をクリアした後、ＴＤ１９０Ａに割り当てられたメモリが、明示的なＴＤＣＡＬＬを介してＴＤＲＭ１８０に返され得る。（１）ＴＤ１９０ＡにおけるＶＭＭが、ＴＤ内で使用中の再マッピングされたＧＰＡを有し得る、及び／又は（２）ＴＤＲＭ１８０が、ＴＤ１９０Ａに割り当てられたメモリをスワップしたい場合に、ＭＯＴ１６０の拡張オペレーションが用いられる。上記の両方の場合において、ＴＤＲＭ１８０  ＥＰＴ違反が、ページウォーク中に用いられた不一致のＧＰＡで生成される。以下の拡張ＭＯＴ命令リーフは、上記の場合に対応する。
【００７７】
ＭＯＴにおいてＰＧＡを修正する（ＴＤＭＯＴＭＯＤＰＭＡ）―上記の第１の場合を処理するため、ＴＤＲＭ１８０は、この拡張ＭＯＴ１６０命令を利用し、ＴＤ１９０Ａにより用いられるページに関するＭＯＴ１６０セキュリティ属性を更新する。ＴＤＲＭ１８０は、ＴＤ  ＶＭＭ管理ＥＰＴ構造をウォークするためにＣＰＵにより用いられるＧＰＡを提供し、ＴＤ  ＶＭＭにより参照される新しいＧＰＡを取得する。プロセッサ１１２は、次に、ＴＤＲＭ１８０ＥＰＴのウォークを実行し、参照されるＨＰＡを見つけ、ページがアクティブなＴＤ１９０Ａに割り当てられている場合、予期されるＧＰＡ属性は、フォールトしたウォーク中に報告された不一致のＧＰＡと一致するように更新される。ＴＤＲＭ１８０は、次にＴＤ１９０Ａを再開し得る。
【００７８】
上記の第２の場合に関して、ＴＤＲＭ１８０は、既にそのＥＰＴ構造からＧＰＡをアンマッピングし、障害中に、ＭＯＴにおいてページをブロックする命令（ＴＤＭＯＤＢＬＯＣＫＰＡＧＥ）を用いるべきであり、ページを、ソフトウェアとして使用不能（フラッシュあり）としてマークし、拡張ＭＯＴ１６０命令を用いるべきである。ＴＤＥＸＴＲＡＣＴ及びＴＤＩＮＪＥＣＴは、新しく割り当てられたＨＰＡに関して復元され得る、暗号で保護されたスワップ可能なバージョンのページコンテンツを作成する。ＴＤＥＸＴＲＡＣＴ（及びＴＤＩＮＪＥＣＴ）命令は、スワップされたＴＤページのための暗号で署名された完全性情報をキャプチャ（及びそれぞれ検証）し、復元される場合にそれらが検証され得るようにする。暗号情報は、悪意のあるＴＤＲＭが古いページをリプレイできないようにするカウンタを含み得る。
【００７９】
一実施例において、ＴＤＲＭ１８０の初期化は、例えば、ＣＲ４．ＴＤＸＥビットをセットして、又はＶＭＸＯＮ中にＶＭＸ  ＭＳＲ制御ビットを介して、プロセッサ１１２におけるＴＤＸをイネーブルにすることから開始する。ＴＤＸサポートは、ＣＰＵＩＤを介して列挙され得る。一旦ＴＤＸがイネーブルされると、ＴＤＲＭ１８０は、ＴＤＸモードをイネーブルにする命令（ＴＤＸＯＮ）を実行（ｐｅｒｆｏｒｍｓ）（即ち、実行（ｅｘｅｃｕｔｅｓ））し、プロセッサのＴＤＸモードをイネーブルにする。あるいは、モードは、ＶＭＸＯＮの一部としてイネーブルされ得る。ＴＤＸＯＮは、ロジックプロセッサがＴＤＲＭ１８０状態領域のために用いる自然に位置合わせされた４‐ＫＢのメモリ領域を登録する。一実施例において、ＴＤＲＭ１８０状態領域は、ＴＤＲＭ状態１８５としてＴＤＲＭ制御構造（ＴＤＲＣＳ）１８２に格納される。ＴＤ−ＲＣＳはまた、ホスト状態、制御及びＴＤ終了情報のみを含む新しいタイプのＶＭＣＳとして実施され得る。一実施例において、ＴＤＣＳ及びＴＤ−ＴＣＳは、ＭＯＴ１６０を介してアクセス制御される（例えば、ＭＯＴ１６０に格納された暗号化キーＩＤが、メモリアクセス制御を強制するために用いられる）。別の実施例において、ＴＤＣＳ及びＴＤ−ＴＣＳは、ソフトウェアアクセスにアクセス不可能であるプロセッサ１１２の、レンジレジスタ１３０等の制限されたレンジレジスタにおけるストレージを介してアクセス制御される。ＴＤＲＭ状態１８５は、以下で更に詳細に説明される。ＴＤＲＣＳ１８２のために用いられる４ＫＢページの物理アドレスは、ＴＤＸＯＮへのオペランドにおいて提供される。ＴＤＲＭ１８０は、このページを、ＭＯＴ１６０を介した全てのＴＤ１９０Ａにアクセス不可能とする。ＴＤＲＭ１８０は、ＴＤＲＣＳ１８５を初期化及びＴＤＲＣＳ１８５にアクセスするべきである。ＴＤＲＭ１８０は、各ロジックプロセッサに関して別個のＴＤＲＣＳ１８５を用いるべきである。
【００８０】
一実施例において、ＴＤＲＭ１８０により初期化され、ＴＤ終了でプロセッサ１１２によりロードされる例示的なＴＤＲＭ状態１８５は、これに限定されるものではないが、表１において以下で示される以下の状態を含み得る。
【表１】
2019053720.tif 000003
【００８１】
以下のプロセッサ状態は、ＴＤ終了中に自動的にセット／固定される（従って、ＴＤ−ＲＣＳにおいて指定されない）：
−６４ビットモードのためのＣＲ０、ＣＲ４（追加のＣＲ４マスク値を必要とし得る）
−ＤＲ７、スクラブＤＲ：クリア：ＰＤＲビットの影響を考慮する必要がある
−ＩＡ３２＿ＤＥＢＵＧＣＴＬ、ＩＡ３２＿ＰＥＲＦ＿ＧＬＯＢＡＬ＿ＣＴＲＬ、ＩＡ３２＿ＰＡＴ、ＩＡ３２＿ＢＮＤＣＦＧＳ
−ＩＡ３２＿ＥＦＥＲ（６４ビットモードを保証する）
−セグメントレジスタ（ベース限定アクセス）：ＶＭ終了と同じ
−ＲＦＬＡＧＳ：ＶＭ終了と同じ―０ｘ２にセット
−ＬＤＴＲ：ＶＭ終了と同じ―ヌル
【００８２】
以下のプロセッサ状態は、ＴＤ終了中に自動的にクリアされる（従って、ＴＤ−ＲＣＳにおいて指定されない）：
−ＩＡ３２＿ＳＹＳＥＮＴＥＲ＿ＣＳ／ＥＩＰ／ＥＳＰ
−ＩＡ３２＿ＫＥＲＮＥＬ＿ＧＳ＿ＢＡＳＥ
−ＩＡ３２＿ＳＴＡＲ／ＦＭＡＳＫ／ＬＳＴＡＲ
−ＧＰＲ（ＲＳＰを除く）
−ＸＳＡＶＥ状態
−拡張状態（ｘ８７／ＳＳＥ、ＣＥＴ等）―任意の及び他の条件付き状態として扱い得る。
【００８３】
ＴＤ−ＲＣＳはまた、表２において以下で提供されるように、制御フィールド及び終了情報構造（ＴＤ終了情報を報告するため）を保持する。
【表２】
2019053720.tif 000004
【００８４】
以下に示される表３は、ＴＤ−ＲＣＳにおける終了情報フィールドを詳述する。
【表３】
2019053720.tif 000005
【００８５】
一実施例において、ＴＤ１９０Ａが、ＴＤＲＭ１８０により作成され、起動され得る。ＴＤＲＭ１８０は、ＴＤ作成命令（ＴＤＣＲＥＡＴＥ及びＴＤＴＣＲＥＡＴＥ）を用いてＴＤ１９０Ａを作成する。ＴＤＲＭ１８０は、物理メモリの４ＫＢに位置合わせされた領域を選択し、これをパラメータとしてＴＤ作成命令に提供する。このメモリ領域は、ＴＤ１９０Ａに関してＴＤＣＳ１２４として用いられる。実行された場合に、ＴＤＣＲＥＡＴＥ命令は、プロセッサ１１２に、宛先４ＫＢページが、（ＭＯＴ１６０を用いて）ＴＤに割り当てられていることを検証させる。ＴＤＣＲＥＡＴＥ命令は更に、プロセッサ１１２に、ＴＤ１９０Ａに関するエフェメラルメモリ暗号化キー及びキーＩＤを生成させ、ＴＤＣＳ１２４にキーＩＤを格納させる。プロセッサ１１２は、次に、ＴＤに割り当てられた暗号化キーを用いて宛先ページ上のページコンテンツを初期化する。一実施例において、ページコンテンツを初期化することは、ＴＤのＴＤ状態を開始することを含み、これは、ＴＤＴＣＳ１２８に関して以下で更に説明される。ＴＤＣＲＥＡＴＥ命令は、次に、プロセッサ１１２に、ＴＤＣＳ１２４におけるＴＤ測定のためのハッシュを初期化させる。
【００８６】
一実施例において、ＴＤＲＭ１８０は、ＴＤＡＤＤＰＡＧＥ命令（上述）を用いてＴＤ１９０ＡのためのＩＢＢコード／データをセットアップし、（ＴＤ１９０Ａの）ＴＤＣＳ１２４ページのアドレスを、パラメータ、ＴＤＲＭアドレス空間におけるＴＤ画像のためのコード／データページのアドレス、及びＴＤ１９０Ａに割り当てられた物理ページとして指定する。プロセッサ１１２は、次に、宛先４ＫＢページがＴＤ１９０Ａに割り当てられていることを検証する。一旦検証されると、プロセッサ１１２は、ＴＤＣＳ１２４におけるＴＤ１９０Ａのためのハッシュを拡張する。次に、プロセッサは、ＴＤ１９０Ａに割り当てられた一意の暗号化キーを用いて、ソースから宛先ページにページコンテンツをコピーする。
【００８７】
ＴＤＲＭ１８０は、物理メモリマップ（及び識別ページテーブル）を含むデータページを介してＴＤブート構成を提供する。ＴＤＲＭ１８０は、物理メモリを初期化し、プロセッサ１１２は、ページが、ＴＤ１９０Ａに割り当てられ、ページテーブルを識別することを検証する。ＴＤＲＭ１８０は、次に、ＴＤＩＮＩＴ命令を用いてＴＤ１９０Ａの測定を完結する。ＴＤＲＭ１８０は、次に、ＴＤＥＮＴＥＲ命令を用いてＴＤ１８０の実行を開始し得る（これは、以下で更に説明されるようにＴＤＴＣＳ１２８を用いる）。
【００８８】
ここでＴＤＣＳ１２４を参照すると、この制御構造は、ＴＤ１９０Ａが正常に作成される場合にプロセッサ１１２が初期化する制御を指定する。ＴＤＣＳ１２４は、ＴＤ１９０Ａがイネーブルされた場合に利用可能である。一実施例において、ＴＤＣＳは、４Ｋの自然に位置合わせされたメモリ領域を占有する。ＭＯＴ１６０においてＴＤＣＳ１２４として識別されたページが、ＴＤＣＲＥＡＴＥ命令が正常に実行された後、ソフトウェア読み取り／書き込みに対してブロックされる。一実施例において、ＴＤＣＳ１２４は、ＭＯＴ１６０を介してアクセス制御される（例えば、上述のように、ＭＯＴ１６０に格納されたＴＤＣＳ１２４のための割り当てられたキーＩＤが、プロセッサ１１２のページウォーク中に用いられ、不正なソフトウェア読み取り／書き込みを防止する）。別の実施例において、ＴＤＣＳ１２４は、ソフトウェアアクセスにアクセス不可能であるプロセッサ１１２の、制限されたレンジレジスタにおけるストレージを介してアクセス制御される。ＴＤＣＳ１２４は、これらに限定されるものではないが、表４において以下で示される以下のフィールドを含み得る。
【表４】
2019053720.tif 000006
【００８９】
ＴＤＣＳ．ＡＴＴＲＩＢＵＴＥＳフィールドは、表５において以下で示される以下のビット構造を有する。
【表５】
2019053720.tif 000007
【００９０】
ＴＤ１９０Ａが、Ｎ個のロジックプロセッサ（ＣＰＵ）をＴＤ１９０Ａに割り当てるようにＴＤＲＭ１８０に要求し得る。各要求されたＣＰＵに関して、ＴＤＲＭ１８０は、ＴＤＡＤＤＰＡＧＥ（パラメータ＜ｏｐ，  ＴＤＣＳ，  ＴＤ  ＣＰＵ  ｉｎｄｅｘ，  ＨＰＡ＞）を用いて、ＴＤＴＣＳ１２８ページをＴＤ１９０Ａに追加する。プロセッサ１１２は、宛先４ＫＢページがＴＤ１９０Ａに割り当てられていることを検証する。プロセッサ１１２は、ＴＤ１９０Ａに関してＴＤＣＳ１２４におけるＴＣＳＬｉｓｔ［インデックス］１４２を更新する。ＴＤＴＣＳ１２８は、その親ＴＤＣＳ１２４（ＴＤＡＤＤＰＡＧＥ命令パラメータにおいて指定される）を後方参照し得る。 
【００９１】
ＴＤＲＭ１８０は、ＴＤ１９０ＡにＴＤＥＮＴＥＲ（パラメータ＜ＴＤＣＳ，  ＣＰＵ  ｉｎｄｅｘ＞）へのＴＤＴＣＳ１２８を用いる。これは、ＴＤＴＣＳ１２８（及び参照されたＴＤＣＳ１２４）を起動する。ＴＤＥＮＴＥＲ命令は、ＴＤＴＣＳ１２８が既にアクティブでないことをチェックする。ＴＤＥＮＴＥＲで、プロセッサ１１２は、ページミスハンドラ（ＰＭＨ）／ＴＬＢによるＴＤ１９０ＡキーＩＤ強制を起動する。プロセッサ１１２は、次に、ＴＤＴＣＳ１２８からＴＤ状態をロードし、ＴＤ１９０Ａ実行を開始する。
【００９２】
ＴＤＴＣＳ１２８は、ＴＤ１９０Ａに割り当てられたロジックプロセッサに関する実行状態を保持する。プロセッサ１１２がＴＤテナントモードにある場合にＴＤ終了条件が発生する場合、ＴＤ終了は、テナントの実行状態をＴＤＴＣＳ１２８に保存する。一実施例において、ＴＤＴＣＳ１２８は、ＭＯＴ１６０を介してアクセス制御される（例えば、上述のように、キーＩＤは、プロセッサ１１２のページウォーク中に用いられ、不正なソフトウェアの読み取り／書き込みを防止する）。別の実施例において、ＴＤＴＣＳ１２８は、ソフトウェアアクセスにアクセス不可能であるプロセッサ１１２の、制限されたレンジレジスタにおけるストレージを介してアクセス制御される。 
【００９３】
プロセッサ１１２がＴＤ１９０Ａ内の非ルートＶＭＭのコンテキストにおいて動作している場合にＴＤ終了が発生する場合、ＴＤ終了は、（まだ報告されていない）ＴＤ  ＶＭＭ（例えば、ＴＤ  ＶＭＭ２２２）へのＶＭ終了（例えば、図２ＢのＶＭ終了２８０）を実行し、テナントＶＭＭ状態をＴＤＴＣＳ１２８に保存し、ＴＤ終了を実行する（キーＩＤ強制を切り替える）。ＴＤＲＭ１８０により呼び出された後続のＴＤＥＮＴＥＲは、キー‐ＩＤ強制切り替えを実行し、テナントＶＭＭ又はＯＳを再開するべく、（ＴＤ１９０Ａ内の）ＴＤＴＣＳ１２８からテナント状態を復元する。対応して、プロセッサ１１２が以前のＴＤ終了の間に非ルートＶＭＭのコンテキストにおいて動作していた場合、ＴＤ入力は、テナントＶＭＭに（ＴＤエントリ上の）ＶＭ終了を報告する。
【００９４】
上述のように、ＴＤＴＣＳ１２８は、ＴＤ１９０Ａの実行状態を保持する。ＴＤ１９０Ａの実行状態は、ＴＤＴＣＳ１２８に格納される。ＴＤＴＣＳは、非アーキテクチャであり得、表６から表９において以下で詳述されるフィールドを保持し得る。
【表６】
2019053720.tif 000008
【表７】
2019053720.tif 000009
【表８】
2019053720.tif 000010
【表９】
2019053720.tif 000011
【００９５】
一実施例において、ＴＤ１９０Ａが、ＴＤＲＭ１８０により破壊され得る。ＴＤＲＭ１８０は、ＴＤ破壊命令（ＴＤＤＥＳＴＲＯＹ及びＴＤＴＤＥＳＴＲＯＹ）を用いてＴＤ１９０Ａを破壊する。ＣＰＵは、ＴＤに割り当てられた全てのメモリが破棄されたことを検証し、それが、ＴＤＣＳが破壊されることを可能にする前に、全てのＴＤ−ＴＣＳが破壊される。
【００９６】
図４は、一実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供するための例示的な方法４００のフロー図である。方法４００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェア又はこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施例において、方法４００が、図１Ａ又は図１Ｂの処理デバイス１１２により実行される。別の実施例において、方法４００は、図７〜図１２に関して説明されている処理デバイスの何れかにより実行される。あるいは、コンピューティングシステム１００の他のコンポーネント（又は処理デバイス１１２上で実行されるソフトウェア）は、方法４００の動作の一部又は全てを実行し得る。
【００９７】
図４を参照すると、方法４００は、処理ロジックが、ＶＭを備えるＴＤを管理するＴＤＲＭを実行し、ＴＤは、処理デバイスにより実行される場合に、ブロック４１０で開始する。ブロック４２０で、処理ロジックは、処理ロジックにより実行されるＴＤ又は他のＴＤのうち１又は複数のグローバルメタデータを管理するためのＴＤＣＳを維持する。次に、ブロック４３０で、処理ロジックは、処理デバイスにより実行されるＴＤＲＭ、ＶＭＭ、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、ＴＤ−ＴＣＳにおけるＴＤの実行状態を維持する。 
【００９８】
続いて、ブロック４４０で、処理ロジックは、ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキーＩＤを取得する。一実施例において、キーＩＤは、処理ロジックが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページに機密アクセスすることを可能にし、ここで、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化される。最後に、ブロック４５０で、処理ロジックは、ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する。一実施例において、ＭＯＴから取得されたゲスト物理アドレスの、アクセスされたゲスト物理アドレスとの一致は、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページにアクセスすることを可能にする。
【００９９】
図５は、一実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供する場合に、ＴＤ終了を実行するための例示的な方法５００のフロー図である。方法５００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェア又はこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施例において、方法５００は、図１Ａ又は図１Ｂの処理デバイス１１２により実行される。別の実施例において、方法５００は、図７〜図１２に関して説明されている処理デバイスの何れかにより実行される。あるいは、コンピューティングシステム１００の他のコンポーネント（又は処理デバイス１１２上で実行されるソフトウェア）は、方法５００の動作の一部又は全てを実行し得る。
【０１００】
図５を参照すると、方法５００は、処理ロジックが、ＴＤ終了イベントを識別する場合にブロック５１０で開始する。一実施例において、ＴＤＲＭが、ＴＤ終了イベントと関連付けられたＴＤを管理しており、ここで、処理ロジックは、ＴＤ終了イベントが識別された場合にＴＤのコンテキストにおいて実行している。
【０１０１】
ブロック５２０で、処理ロジックは、ＴＤ終了イベントの識別に応答して、ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、ＴＤに対応するＴＤ−ＴＣＳに保存する。一実施例において、実行状態は、第１暗号化キーで暗号化され、ＴＤＣＳは、処理デバイスにより実行されるＴＤＲＭ、ＶＭＭ、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される。
【０１０２】
続いて、ブロック５３０で、処理ロジックは、処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤＲＭ又はＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する。最後に、ブロック５４０で、処理ロジックは、ＴＤＲＭ実行及び制御状態並びにＴＤＲＭの終了情報をロードし、処理デバイスに、ＴＤＲＭのコンテキストにおいて動作させる。
【０１０３】
図６は、一実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供する場合に、ＴＤ入力を実行するための例示的な方法６００のフロー図である。方法６００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェア又はこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施例において、方法６００が、図１Ａ又は図１Ｂの処理デバイス１１２により実行される。別の実施例において、方法６００は、図７〜図１２に関して説明されている処理デバイスの何れかにより実行される。あるいは、コンピューティングシステム１００の他のコンポーネント（又は処理デバイス１１２上で実行されるソフトウェア）は、方法６００の動作の一部又は全てを実行し得る。
【０１０４】
図６を参照すると、方法６００は、処理ロジックが、ＴＤＲＭのコンテキストにおいて実行している間にＴＤ入力イベントを識別する場合に、ブロック６１０で開始する。一実施例において、処理ロジックは、ＴＤを管理するそのＴＤＲＭを実行する。 
【０１０５】
ブロック６２０で、処理ロジックは、ＴＤ入力イベントの識別に応答して、ＴＤＲＭに割り当てられた第１暗号化キーに対応する第１キーＩＤを利用し、ＴＤＲＭに対応するＴＤＲＣＳから、ＴＤＲＭのＴＤＲＭ制御状態をロードする。一実施例において、実行状態は、第１暗号化キーで暗号化される。更に、ＴＤＲＣＳは、処理デバイスにより実行されるＴＤ又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御され得る。 
【０１０６】
続いて、ブロック６３０で、処理ロジックは、処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤに割り当てられた第２暗合化キーに対応する第２キーＩＤに修正する。最後に、ブロック６４０で、処理ロジックは、ＴＤ−ＴＣＳからＴＤのＴＤユーザ実行状態及びスーパーバイザー実行状態をロードし、処理デバイスに、ＴＤのコンテキストにおいて動作させる。一実施例において、ＴＤ−ＴＣＳは、処理デバイスにより実行されるＴＤＲＭ又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される。
【０１０７】
図７Ａは、本開示の少なくとも１つの実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供する処理デバイスの性能を監視するプロセッサの、インオーダパイプライン及びレジスタリネーミング段階、アウトオブオーダ発行／実行パイプラインを示すブロック図である。図７Ｂは、本開示の少なくとも１つの実施例に係るプロセッサに含まれるインオーダアーキテクチャコア及びレジスタリネーミングロジック、アウトオブオーダ発行／実行ロジックを示すブロック図である。図７Ａにおける実線ボックスは、インオーダパイプラインを示す一方、破線ボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプラインを示す。同様に、図７Ｂにおける実線ボックスは、インオーダアーキテクチャロジックを示すが、破線ボックスは、レジスタリネーミングロジック及びアウトオブオーダ発行／実行ロジックを示す。
【０１０８】
図７Ａにおいて、プロセッサパイプライン７００は、フェッチ段階７０２、長さデコード段階７０４、デコード段階７０６、割り当て段階７０８、リネーミング段階７１０、スケジューリング（ディスパッチ又は発行としても知られる）段階７１２、レジスタ読み取り／メモリ読み取り段階７１４、実行段階７１６、ライトバック／メモリ書き込み段階７１８、例外処理段階７２２、及びコミット段階７２４を含む。いくつかの実施例において、段階は、異なる順序で提供され、異なる段階が、インオーダ及びアウトオブオーダとみなされ得る。
【０１０９】
図７Ｂにおいて、矢印は、２又はそれより多くのユニット間の結合を示し、矢印の方向は、それらのユニット間のデータフロー方向を示す。図７Ｂは、プロセッサコア（コア）７９０を示し、プロセッサコア（コア）７９０は、実行エンジンユニット７５０に結合されたフロントエンドユニット７３０を含み、フロントエンドユニット７３０と実行エンジンユニット７５０の両方がメモリユニット７７０に結合される。 
【０１１０】
コア７９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア又はハイブリッド若しくは代替的なコアタイプであってもよい。なおも別の選択肢として、コア７９０は、例えば、ネットワーク若しくは通信コア、圧縮エンジン、グラフィックスコア等のような特定用途コアであってもよい。
【０１１１】
フロントエンドユニット７３０は、命令キャッシュユニット７３４に結合された分岐予測ユニット７３２を含み、命令キャッシュユニット７３４は、命令トランスレーションルックアサイドバッファ（ＴＬＢ）７３６に結合され、命令トランスレーションルックアサイドバッファ（ＴＬＢ）７３６は、命令フェッチユニット７３８に結合され、命令フェッチユニット７３８は、デコードユニット７４０に結合される。デコードユニット又はデコーダは、命令をデコードし、出力として１又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を生成することができ、これらは、元の命令からデコードされたり、又はそうでなければ元の命令を反映していたり、又は元の命令から導出されていたりする。デコーダは、様々な異なるメカニズムを用いて実施され得る。好適なメカニズムの例は、これらに限定されるものではないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリメモリ（ＲＯＭ）等を含む。命令キャッシュユニット７３４は更に、メモリユニット７７０内のレベル２（Ｌ２）キャッシュユニット７７６に結合される。デコードユニット７４０は、実行エンジンユニット７５０内のリネーム／アロケータユニット７５２に結合される。
【０１１２】
実行エンジンユニット７５０は、リタイアメントユニット７５４及び１又は複数のスケジューラユニット７５６のセットに結合されたリネーム／アロケータユニット７５２を含む。スケジューラユニット７５６は、任意の数の異なるスケジューラを表し、保留局、中央命令ウィンドウ等を含む。スケジューラユニット７５６は、物理レジスタファイルユニット７５８に結合される。物理レジスタファイルユニット７５８の各々は、１又は複数の物理レジスタファイルを表し、その異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス（例えば、実行される次の命令のアドレスである命令ポインタ）等のような、１又は複数の異なるデータタイプを格納する。物理レジスタファイルユニット７５８は、リタイアメントユニット７５４と重複しており、レジスタリネーミング及びアウトオブオーダ実行が実施され得る（例えば、リオーダバッファ、及びリタイアメントレジスタファイルを用い、将来のファイル、履歴バッファ、及びリタイアメントレジスタファイルを用い、レジスタマップ及びレジスタのプールを用いる等して）様々な様式を示す。
【０１１３】
一般に、アーキテクチャレジスタは、プロセッサの外部から、又はプログラマの観点から見える。レジスタは、任意の知られた特定のタイプの回路に限定されない。様々な異なるタイプのレジスタは、本明細書で説明されるデータを格納及び提供することができる限りにおいて、好適である。好適なレジスタの例としては、これらに限定されるものではないが、専用物理レジスタ、レジスタリネーミングを用いて動的に割り当てられる物理レジスタ、専用物理レジスタ及び動的に割り当てられる物理レジスタの組み合わせ等が挙げられる。リタイアメントユニット７５４及び物理レジスタファイルユニット７５８は、実行クラスタ７６０に結合される。 実行クラスタ７６０は、１又は複数の実行ユニット７６２のセット及び１又は複数のメモリアクセスユニット７６４のセットを含む。実行ユニット７６２は、様々なオペレーション（例えば、シフト、加算、減算、乗算）を実行し、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）上で処理し得る。
【０１１４】
いくつかの実施例は、具体的関数又は関数のセットに専用のいくつかの実行ユニットを含んでもよいが、他の実施例は、１つの実行ユニット又は複数の実行ユニットを含んでもよく、これらは全て、あらゆる関数を実行する。スケジューラユニット７５６、物理レジスタファイルユニット７５８、及び実行クラスタ７６０は、場合によっては複数であるものとして示される。なぜなら、特定の実施例が、特定のタイプのデータ／オペレーション（例えば、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はメモリアクセスパイプライン。これらは、各々がそれら自体のスケジューラユニット、物理レジスタファイルユニット、及び／又は実行クラスタを有し、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタが、メモリアクセスユニット７６４を有する特定の実施例が実施される）用に別個のパイプラインを作成するからである。別個のパイプラインが用いられる場合、これらのパイプラインのうち１又は複数は、アウトオブオーダ発行／実行であり、残りは、インオーダであってもよいことも理解されたい。
【０１１５】
メモリアクセスユニット７６４のセットは、メモリユニット７７０に結合され、メモリユニット７７０は、レベル２（Ｌ２）キャッシュユニット７７６に結合されたデータキャッシュユニット７７４に結合されたデータＴＬＢユニット７７２を含む。１つの例示的な実施例において、メモリアクセスユニット７６４は、ロードユニット、格納アドレスユニット、及び格納データユニットを含み得、それらの各々は、メモリユニット７７０内のデータＴＬＢユニット７７２に結合される。Ｌ２キャッシュユニット７７６は、１又は複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
【０１１６】
例として、例示的なレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、次のように図７Ａのパイプライン７００を実施し得る。１）命令フェッチ３８が、フェッチ段階７０２及び長さデコード段階７０４をそれぞれ実行し、２）デコードユニット７４０が、デコード段階７０６を実行し、３）リネーム／アロケータユニット７５２が、割り当て段階７０８及びリネーミング段階７１０を実行し、４）スケジューラユニット７５６が、スケジューリング段階７１２を実行し、５）物理レジスタファイルユニット７５８及びメモリユニット７７０が、レジスタ読み取り／メモリ読み取り段階７１４を実行し、実行クラスタ７６０が、実行段階７１６を実行し、６）メモリユニット７７０及び物理レジスタファイルユニット７５８が、ライトバック／メモリ書き込み段階７１８を実行し、７）様々なユニットが、例外処理段階７２２に関与することができ、）リタイアメントユニット７５４及び物理レジスタファイルユニット７５８が、コミット段階７２４を実行する。
【０１１７】
コア７９０は、１又は複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンについてはいくつかの拡張が追加されている）、カリフォルニア州サニーベールのＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  Ｈｏｌｄｉｎｇｓ社のＡＲＭ命令セット（ＮＥＯＮ等の追加の拡張を有する）をサポートすることができる。 
【０１１８】
コアは、（オペレーション又はスレッドの２又はそれより多くの並列セットを実行する）マルチスレッディングをサポートし得、タイムスライスマルチスレッディング、同時マルチスレッディング（物理コアが同時にマルチスレッディングしているスレッドの各々のための論理コアを、単一の物理コアが提供する）、又はこれらの組み合わせ（例えば、タイムスライスフェッチ及びデコードを行い、その後にインテル（登録商標）ハイパースレッディング技術等の同時マルチスレッディングを行う）を含む様々な態様でこれを実行し得ることを理解されたい。
【０１１９】
レジスタリネーミングは、アウトオブオーダ実行の文脈で説明されるが、レジスタリネーミングは、インオーダアーキテクチャにおいて用いられ得ることを理解されたい。また、プロセッサの図示される実施例は、別個の命令及びデータキャッシュユニット７３４／７７４、並びに共有Ｌ２キャッシュユニット７７６を含むが、代替的な実施例は、例えば、レベル１（Ｌ１）内部キャッシュ又は複数のレベルの内部キャッシュ等、命令及びデータの両方に対して単一の内部キャッシュを有してもよい。いくつかの実施例において、システムは、内部キャッシュ、及びコア及び／又はプロセッサの外部にある外部キャッシュの組み合わせを含んでもよい。あるいは、キャッシュの全ては、コア及び／又はプロセッサの外部にあってもよい。
【０１２０】
図８は、一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するロジック回路を含む処理デバイス８００のためのマイクロアーキテクチャのブロック図を示す。いくつかの実施例において、命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズ、並びに単及び倍精度の整数及び浮動小数点データタイプ等のデータタイプを有するデータ要素上で演算するように実施され得る。一実施例において、インオーダフロントエンド８０１は、実行されるべき命令をフェッチし、それらを処理デバイスパイプラインにおいて後に用いるために用意する、処理デバイス８００の一部である。信頼ドメインを用いて仮想化されたシステムにおける分離を提供する実施例は、処理デバイス８００において実施され得る。
【０１２１】
フロントエンド８０１は、いくつかのユニットを含み得る。一実施例において、命令プリフェッチャ８１６は、メモリから命令をフェッチし、それらを命令デコーダ８１８へ供給し、命令デコーダ８１８は次にそれらをデコード又は変換する。例えば、一実施例において、デコーダは、機械が実行し得る「マイクロ命令」若しくは「マイクロオペレーション」と呼ばれる１又は複数のオペレーション（マイクロｏｐ又はｕｏｐとも呼ばれる）に受信済の命令をデコードする。他の実施例において、デコーダは、命令を解析し、一実施例に係るオペレーションを実行するマイクロアーキテクチャにより用いられるオペコード及び対応するデータ、並びに制御フィールドにする。一実施例において、トレースキャッシュ８３０は、デコード済のｕｏｐを受け取り、それらをプログラムで順序付けられたシーケンスにアセンブルし、又は実行するべくｕｏｐキュー８３４においてトレースする。トレースキャッシュ８３０が複合命令に遭遇する場合に、マイクロコードＲＯＭ８３２は、オペレーションを完了するのに必要とされるｕｏｐを提供する。
【０１２２】
いくつかの命令は、単一のマイクロｏｐに変換されるが、他のものは、オペレーション全体を完了するのにいくつかのマイクロｏｐを必要とする。一実施例において、命令を完了するのに４つより多いマイクロｏｐが必要とされる場合、デコーダ８１８は、命令を実行するべくマイクロコードＲＯＭ８３２にアクセスする。一実施例については、命令は、命令デコーダ８１８において処理するべく少数のマイクロｏｐにデコードされ得る。別の実施例において、オペレーションを実現するのにいくつかのマイクロｏｐが必要とされる場合、命令は、マイクロコードＲＯＭ８３２内に格納され得る。トレースキャッシュ８３０は、マイクロコードシーケンスを読み取り、一実施例に係るマイクロコードＲＯＭ８３２の１又は複数の命令を完了する正しいマイクロ命令ポインタを決定する、エントリポイントプログラマブルロジックアレイ（ＰＬＡ）を指す。マイクロコードＲＯＭ８３２が命令のマイクロｏｐをシーケンス化することを完了した後、マシンのフロントエンド８０１は、トレースキャッシュ８３０からマイクロｏｐをフェッチすることを再開する。
【０１２３】
アウトオブオーダ実行エンジン８０３は、命令が実行のために用意される場所である。アウトオブオーダ実行ロジックは、いくつかのバッファを有し、これにより、命令のフローを平滑化及びリオーダし、これらの命令がパイプラインを進み実行のためにスケジューリングされるにあたり、性能を最適化する。アロケータロジックは、各ｕｏｐが実行するために必要とするマシンバッファ及びリソースを割り当てる。レジスタリネーミングロジックは、ロジックレジスタをレジスタファイルにおけるエントリへとリネームする。また、アロケータは、メモリスケジューラ、高速スケジューラ８０２、低速／一般浮動小数点スケジューラ８０４、及び単純浮動小数点スケジューラ８０６などの命令スケジューラの前に、１つはメモリオペレーションに関するものであり、１つは非メモリオペレーションに関するものである、２つのｕｏｐキューのうちの１つにおけるｕｏｐ毎にエントリを割り当てる。ｕｏｐがそのオペレーションを完了するのに必要とする依存性入力レジスタオペランドソース及び実行リソースの利用可能性の準備が整ったことに基づいて、ｕｏｐスケジューラ８０２、８０４、８０６は、ｕｏｐがいつ実行する準備が整うかを判断する。一実施例の高速スケジューラ８０２は、メインクロックサイクルの半分毎にスケジューリングし得るが、他のスケジューラは、メイン処理デバイスのクロックサイクル毎に１回のみスケジューリングし得る。スケジューラは、実行のためにｕｏｐをスケジューリングするディスパッチポートについて仲裁する。
【０１２４】
レジスタファイル８０８、８１０は、スケジューラ８０２、８０４、８０６と、実行ブロック８１１における実行ユニット８１２、８１４、８１６、８１８、８１０、８１２、８１４との間にある。整数及び浮動小数点のオペレーションのために、それぞれ、別個のレジスタファイル８０８、８１０が存在する。また、一実施例の各レジスタファイル８０８、８１０は、完了したばかりの、レジスタファイルにまだ書き込まれていない結果を、新しい依存性ｕｏｐへとバイパスし、又は進め得るバイパスネットワークを含む。また整数レジスタファイル８０８及び浮動小数点レジスタファイル８１０は、他のものとデータを通信することができる。一実施例については、整数レジスタファイル８０８は、２つの別個のレジスタファイルに分割され、１つのレジスタファイルは、データの下位の３２ビットのためのものであり、第２レジスタファイルは、データの上位の３２ビットのためのものである。浮動小数点命令は通常、６４〜１２８ビット幅のオペランドを有するので、一実施例の浮動小数点レジスタファイル８１０は、１２８ビット幅のエントリを有する。
【０１２５】
実行ブロック８１１は、実行ユニット８１２、８１４、８１６、８１８、８１０、８１２、８１４を含み、ここで命令が実際に実行される。このセクションは、マイクロ命令を実行するのに必要とする整数及び浮動小数点データオペランド値を格納するレジスタファイル８０８、８１０を含む。一実施例の処理デバイス８００は、いくつかの実行ユニット、アドレス生成ユニット（ＡＧＵ）８１２、ＡＧＵ８１４、高速ＡＬＵ８１６、高速ＡＬＵ８１８、低速ＡＬＵ８１０、浮動小数点ＡＬＵ８１２、浮動小数点移動ユニット８１４から構成される。一実施例については、浮動小数点実行ブロック８１２，８１４は、浮動小数点、ＭＭＸ、ＳＩＭＤ、及びＳＳＥ、又は他のオペレーションを実行する。一実施例の浮動小数点ＡＬＵ８１２は、除算、平方根、及び残余のマイクロｏｐを実行する、６４ビット×６４ビット浮動小数点ディバイダを含む。本開示の実施例については、浮動小数点値を含む命令は、浮動小数点ハードウェアにより扱われ得る。 
【０１２６】
一実施例において、ＡＬＵオペレーションは、高速ＡＬＵ実行ユニット８１６、８１８に向かう。一実施例の高速ＡＬＵ８１６、８１８は、クロックサイクルの半分の有効レイテンシで高速のオペレーションを実行し得る。一実施例については、複素整数演算の大部分は、低速ＡＬＵ８１０に向かう。なぜなら、低速ＡＬＵ８１０は、マルチプライア、シフト、フラグロジック、及び分岐処理等の長レイテンシタイプのオペレーションに対する整数実行ハードウェアを含むからである。メモリロード／ストアオペレーションは、ＡＧＵ８１２、８１４により実行される。一実施例については、整数ＡＬＵ８１６、８１８、８１０は、６４ビットデータオペランドに対して整数演算を実行する文脈で説明される。代替的な実施例において、ＡＬＵ８１６、８１８、８１０は、１６、３２、１２８、２５６等を含む様々なデータビットをサポートするように実施され得る。同様に、浮動小数点ユニット８１２、８１４は、様々な幅のビットを有する範囲のオペランドをサポートするように実施され得る。一実施例については、浮動小数点ユニット８１２、８１４は、１２８ビット幅のパックドデータオペランドで、ＳＩＭＤ及びマルチメディア命令を伴って処理し得る。
【０１２７】
一実施例において、ｕｏｐスケジューラ８０２、８０４、８０６は、親ロードが実行を終了する前に依存性オペレーションをディスパッチする。ｕｏｐは、処理デバイス８００において投機的にスケジューリングされ実行されるので、処理デバイス８００は、メモリミスを処理するロジックも含む。データロードがデータキャッシュ内でミスを起こした場合、一時的に誤ったデータと共にスケジューラを離れた依存性オペレーションがパイプライン内でインフライトであり得る。リプレイメカニズムが、誤ったデータを用いる命令を追跡し、再実行する。依存性オペレーションのみがリプレイされる必要があり、独立したものは、完了することが可能である。処理デバイスの一実施例のスケジューラ及びリプレイメカニズムは、テキスト文字列比較オペレーションのための命令シーケンスをキャッチするようにも設計される。
【０１２８】
処理デバイス８００はまた、一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するロジックを含む。一実施例において、処理デバイス８００の実行ブロック８１１は、本明細書における説明に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するＴＤＲＭ１８０、ＭＯＴ１６０、ＴＤＣＳ１２４、及びＴＤＴＣＳ１２８を含み得る。
【０１２９】
「レジスタ」という用語は、オペランドを識別する命令の一部として用いられるオンボード処理デバイスストレージの位置を指し得る。換言すれば、レジスタは、処理デバイスの（プログラマの観点から）外部から利用可能であるものであり得る。しかしながら、実施例のレジスタは、特定のタイプの回路に、その意味が限定されるべきではない。むしろ、実施例のレジスタは、データを格納及び提供し、本明細書に説明されている機能を実行することができる。本明細書において説明されるレジスタは、専用物理レジスタ、レジスタリネーミングを用いる動的に割り当てられた物理レジスタ、専用及び動的に割り当てられた物理レジスタ等の組み合わせ等、任意の数の異なる技術を用いる処理デバイス内の回路により実施され得る。一実施例において、整数レジスタは、３２ビットの整数データを格納する。また、一実施例のレジスタファイルは、パックドデータのための８つのマルチメディアＳＩＭＤレジスタを含む。
【０１３０】
本明細書での検討において、レジスタは、カリフォルニア州サンタクララのインテルコーポレーションのＭＭＸ技術により可能にされるマイクロプロセッシングデバイスにおける６４ビット幅のＭＭＸ（商標）レジスタ（いくつかの例において「ｍｍ」レジスタとも称される）等、パックドデータを保持するように設計されたデータレジスタであるものと理解されている。これらのＭＭＸレジスタは、整数及び浮動小数点の両方の形式で利用可能であり、ＳＩＭＤ及びＳＳＥ命令を伴うパックドデータ要素で動作し得る。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、又はそれ以降（一般に「ＳＳＥｘ」と称される）の技術に関する１２８ビット幅のＸＭＭレジスタは、そのようなパックドデータオペランドを保持するようにも用いられ得る。一実施例において、パックドデータ及び整数データを格納するときに、レジスタは、２つのデータタイプを区別する必要はない。一実施例において、整数及び浮動小数点は、同一のレジスタファイル、又は異なるレジスタファイルの何れかに含まれる。更に、一実施例において、浮動小数点及び整数データは、異なるレジスタ、又は同一のレジスタに格納され得る。
【０１３１】
実施例は、多くの異なるシステムのタイプに実施され得る。ここで図９を参照すると、実施例に係る、マルチプロセッシングデバイスシステム９００のブロック図が示される。図９に示すとおり、マルチプロセッシングデバイスシステム９００は、ポイントツーポイント相互接続システムであり、第１処理デバイス９７０、及びポイントツーポイント相互接続９５０を介して結合される第２処理デバイス９８０を含む。図９に示すとおり、処理デバイス９７０及び９８０の各々は、第１及び第２処理デバイスコア（不図示）を含むマルチコア処理デバイスであり得るが、潜在的に更に多くのコアが処理デバイスに存在し得る。処理デバイスは各々、本発明の実施例に係るハイブリッド書き込みモードロジックを含み得る。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、処理デバイス９７０、処理デバイス９８０、又はその両方において実施され得る。
【０１３２】
２つの処理デバイス９７０、９８０と共に示されているが、本開示の範囲は、そのように限定されないものと理解されたい。他の実施例において、１又は複数の追加の処理デバイスは、所与の処理デバイス内に存在し得る。
【０１３３】
処理デバイス９７０及び９８０は、統合メモリコントローラユニット９７２及び９８２を各々含むように示されている。処理デバイス９７０はまた、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インタフェース９７６及び９７８を含む。同様に、第２処理デバイス９８０は、Ｐ−Ｐインタフェース９８６及び９８８を含む。処理デバイス９７０、９８０は、Ｐ−Ｐインタフェース回路９７８、９８８を用いて、ポイントツーポイント（Ｐ−Ｐ）インタフェース９５０を介して情報を交換し得る。図９に示すとおり、ＩＭＣ９７２及び９８２は、処理デバイスを、それぞれのメモリ、即ちメモリ９３２及びメモリ９３４に結合させるが、メモリ９３２及びメモリ９３４は、それぞれの処理デバイスにローカルに取り付けられたメインメモリの一部であり得る。
【０１３４】
処理デバイス９７０、９８０は各々、ポイントツーポイントインタフェース回路９７６、９９４、９８６、９９８を用い、個々のＰ−Ｐインタフェース９５２、９５４を介し、チップセット９９０と情報を交換し得る。また、チップセット９９０は、高性能グラフィックスインタフェース９３９を介し、高性能グラフィックス回路９３８と情報を交換し得る。
【０１３５】
共有キャッシュ（不図示）は、どちらかの処理デバイス内又は両方の処理デバイスの外側に含まれ得るが、Ｐ−Ｐ相互接続を介して処理デバイスとなおも接続され得、従って、処理デバイスが低電力モードに置かれる場合に、どちらか又は両方の処理デバイスのローカルキャッシュ情報は、共有キャッシュ内に格納され得る。
【０１３６】
チップセット９９０は、インタフェース９９６を介して第１のバス９１６に結合され得る。 一実施例において、第１のバス９１６は、周辺構成要素相互接続（ＰＣＩ）バス、又は、ＰＣＩエクスプレスバス若しくは別の第３世代Ｉ／Ｏ相互接続バス等のバスであってもよいが、本開示の範囲は、そのように限定されない。
【０１３７】
図９に示すとおり、様々なＩ／Ｏデバイス９１４が、第１のバス９１６を第２のバス９２０に結合するバスブリッジ９１８と共に、第１のバス９１６に結合され得る。一実施例において、第２のバス９２０は、低ピンカウント（ＬＰＣ）バスであり得る。一実施例において、様々なデバイスは、例えば、キーボード及び／若しくはマウス９２２、通信デバイス９２７、及び命令／コード及びデータ９３０を含み得るディスクドライブ若しくは他の大容量ストレージデバイス等、ストレージユニット９２８を含む、第２のバス９２０に結合され得る。更に、オーディオＩ／Ｏ９２４が、第２のバス９２０に結合され得る。他のアーキテクチャが可能であることに留意されたい。例えば、図９のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実施してもよい。
【０１３８】
ここで図１０を参照すると、本開示の実施例に係る第３のシステム１０００のブロック図が示されている。図９及び図１０における同様の要素は、同様の参照番号を有し、図９の特定の態様は、図１０の他の態様を不明瞭にしないように、図１０では省略されている。
【０１３９】
図１０は、処理デバイス９７０、９８０が、統合メモリ及びＩ／Ｏ制御ロジック（「ＣＬ」）９７２及び９８２を各々含み得ることを示す。少なくとも１つの実施例については、ＣＬ９７２、９８２は、本明細書において説明されるもの等、統合メモリコントローラユニットを含み得る。更に、ＣＬ９７２、９８２は、Ｉ／Ｏ制御ロジックも含み得る。図９は、メモリ９３２、９３４が、ＣＬ９７２、９８２に結合され、Ｉ／Ｏデバイス１０１４も、制御ロジック９７２、９８２に結合されていることを示す。レガシーＩ／Ｏデバイス１０１５は、チップセット９９０に結合される。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、処理デバイス９７０、処理デバイス９８０、又はその両方において実施され得る。
【０１４０】
図１１は、コア１１０２のうち１又は複数を含み得る例示的なシステムオンチップ（ＳｏＣ）である。当技術分野で知られたラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッド処理デバイス、デジタル信号処理デバイス（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルド型デバイス、及び他の様々な電子デバイスのための他のシステム設計及び構成も好適である。一般に、本明細書において開示される処理デバイス及び／又は他の実行ロジックを組み込むことができる多種多様なシステム又は電子デバイスが、概ね好適である。
【０１４１】
ここで図１１を参照すると、本開示の実施例に係るＳｏＣ１１００のブロック図が示されている。また、破線ボックスは、より高度なＳｏＣにおける機能である。図１１において、相互接続ユニット１１０２が、１若しくは複数のコア１１０２Ａ〜Ｎ並びに共有キャッシュユニット１１０６のセットを含むアプリケーション処理デバイス１１１０、システムエージェントユニット１１１２、バスコントローラユニット１１１６、統合メモリコントローラユニット１１１４、統合グラフィックスロジック１１０８と、静止画及び／若しくは動画カメラ機能を提供するための画像処理デバイス１１２４と、ハードウェアのオーディオアクセラレーションを提供するためのオーディオ処理デバイス１１２６と、動画エンコード／デコードアクセラレーションを提供するためのビデオ処理デバイス１１２８とを含み得る、１セット又は１若しくは複数のメディア処理デバイス１１２０、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１１３０、直接メモリアクセス（ＤＭＡ）ユニット１１３２、並びに１若しくは複数の外部ディスプレイに結合するためのディスプレイユニット１１４０に結合される。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、ＳｏＣ１１００において実施され得る。
【０１４２】
次に図１２を参照すると、本開示の実施例に係る、ＳｏＣ設計の実施例が示される。図示的な例として、ＳｏＣ１２００は、ユーザ機器（ＵＥ）に含まれる。一実施例において、ＵＥは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付ノートブック、又は、任意の他の類似の通信デバイス等、通信目的でエンドユーザにより用いられる任意のデバイスを指す。ＵＥは、性質においてＧＳＭ（登録商標）ネットワークにおける移動局（ＭＳ）に対応し得る、基地局又はノードに接続し得る。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、ＳｏＣ１２００において実施され得る。
【０１４３】
ここでは、ＳｏＣ１２２０は、２つのコア１２０６及び１２０７を含む。上記の検討と同様に、コア１２０６及び１２０７は、インテル（登録商標）のアーキテクチャコア（登録商標）を有する処理デバイス、アドバンストマイクロデバイセズ株式会社（ＡＭＤ）の処理デバイス、ＭＩＰＳベースの処理デバイス、ＡＲＭベースの処理デバイス設計、又はそれらの顧客、並びにそれらの特許権者若しくは採用者等の命令セットアーキテクチャに適合し得る。コア１２０６及び１２０７は、バスインタフェースユニット１２０９及びＬ２キャッシュ１２１０と関連付けられ、システム１２００の他の一部と通信するキャッシュ制御１２０８に結合されている。相互接続１２１１は、ＩＯＳＦ、ＡＭＢＡ等のオンチップ相互接続、又は上述の他の相互接続を含み、これらは説明される本開示の１又は複数の態様を実施し得る。
【０１４４】
相互接続１２１１は、ＳＩＭカードにインタフェース接続する加入者識別モジュール（ＳＩＭ）１２３０、ＳｏＣ１２００を初期化及びブートするべくコア１２０６及び１２０７により実行するブートコードを保持するブートＲＯＭ１２３５、外部メモリ（例えば、ＤＲＡＭ１２６０）とインタフェースするＳＤＲＡＭコントローラ１２４０、不揮発性メモリ（例えば、フラッシュ１２６５）とインタフェース接続するフラッシュコントローラ１２４５、周辺機器とインタフェース接続する周辺制御器１２５０（例えば、シリアル周辺機器インタフェース）、入力（例えば、タッチでイネーブルされる入力）を表示及び受信する動画コーデック１２２０及び動画インタフェース１２２５、グラフィックス関連の計算を実行するＧＰＵ１２１５等のような、他のコンポーネントに通信チャネルを提供する。これらのインタフェースの何れも、本明細書において説明される実施例の態様を組み込み得る。
【０１４５】
加えて、システムは、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール１２７０、３Ｇモデム１２７５、ＧＰＳ１２８０、及びＷｉ−Ｆｉ（登録商標）１２８５等、通信用周辺機器を示す。上述のように、ＵＥは通信用無線を含むことに留意されたい。結果として、これらの周辺機器通信モジュールは、全てが含まれない場合がある。しかしながら、ＵＥにおいて、何らかの形態の外部通信用の無線が備えられるべきである。
【０１４６】
図１３は、例示的な形態のコンピューティングシステム１３００における図的表現のマシンを示し、この中で、マシンに本明細書において検討される方法論のうち任意の１又は複数を実行させる命令のセットが実行され得る。代替的な実施例において、マシンが、ＬＡＮ、イントラネット、エクストラネット、又はインターネット内の他のマシンに接続され得る（例えば、ネットワーク接続）。マシンは、クライアントサーバネットワーク環境におけるサーバ若しくはクライアントデバイスの容量で、又はピアツーピア（若しくは分散された）ネットワーク環境におけるピアマシンとして動作し得る。マシンは、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、ウェブ機器、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又は当該マシンにより取られるべきアクションを指定する（シーケンシャル又はその他の）命令のセットを実行することができる任意のマシンであってもよい。更に、単一のマシンのみが図示されているが、「マシン」という用語はまた、本明細書において検討される方法論のうち任意の１又は複数を実行する命令のセット（又は複数のセット）を個々に、又は共同して実行するマシンの任意の集合を含むと解釈されるものとする。変換ページ及びセクションの実施例は、コンピューティングシステム１３００に実施され得る。
【０１４７】
コンピューティングシステム１３００は、処理デバイス１３０２、メインメモリ１３０４（例えば、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）若しくはＤＲＡＭ（ＲＤＲＡＭ）等のような））、スタティックメモリ１３０６（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）等）、及びデータストレージデバイス１３１８を含み、これらは、バス１３３０を介して互いに通信する。
【０１４８】
処理デバイス１３０２は、マイクロプロセッシングデバイス、中央処理装置等のような、１又は複数の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッシングデバイス、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッシングデバイス、超長命令語（ＶＬＩＷ）マイクロプロセッシングデバイス、若しくは他の命令セットを実施する処理デバイス、又は命令セットの組み合わせを実施する処理デバイスであってもよい。また、処理デバイス１３０２は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号処理デバイス（ＤＳＰ）、ネットワーク処理デバイス等のような、１又は複数の特定用途処理デバイスであってもよい。一実施例において、処理デバイス１３０２は、１又は複数の処理デバイスコアを含み得る。処理デバイス１３０２は、本明細書において検討されるオペレーションを実行するための処理ロジック１３２６を実行するように構成される。一実施例において、処理デバイス１３０２は、図１のコンピューティングシステム１００の一部であり得る。あるいは、コンピューティングシステム１３００は、本明細書において説明される他のコンポーネントを含み得る。コアは、（オペレーション又はスレッドの２又はそれより多くの並列セットを実行する）マルチスレッディングをサポートし得、タイムスライスマルチスレッディング、同時マルチスレッディング（物理コアが同時にマルチスレッディングしているスレッドの各々のための論理コアを、単一の物理コアが提供する）、又はこれらの組み合わせ（例えば、タイムスライスフェッチ及びデコードを行い、その後にインテル（登録商標）ハイパースレッディング技術等の同時マルチスレッディングを行う）を含む様々な態様でこれを実行し得ることを理解されたい。
【０１４９】
コンピューティングシステム１３００は、ネットワーク１３２０に通信可能に結合されたネットワークインタフェースデバイス１３０８を更に含み得る。コンピューティングシステム１３００は、動画ディスプレイユニット１３１０（例えば、液晶ディスプレイ（ＬＣＤ）若しくはブラウン管（ＣＲＴ））、英数字入力デバイス１３１２（例えばキーボード）、カーソル制御デバイス１３１４（例えばマウス）、信号生成デバイス１３１６（例えばスピーカ）、又は他の周辺デバイスも含み得る。更に、コンピューティングシステム１３００は、グラフィックス処理ユニット１３２２、動画処理ユニット１３２８、及びオーディオ処理ユニット１３３２を含み得る。別の実施例において、コンピューティングシステム１３００は、チップセット（図示せず）を含み得、これは、処理デバイス１３０２と共に機能するように設計された集積回路若しくはチップのグループを指し、処理デバイス１３０２と外部デバイスとの間の通信を制御する。例えば、チップセットは、処理デバイス１３０２を、メインメモリ１３０４及びグラフィックコントローラ等の超高速デバイスにリンクさせ、並びに処理デバイス１３０２を、ＵＳＢ、ＰＣＩ若しくはＩＳＡバス等の周辺機器の低速周辺バスにリンクさせるマザーボード上のチップのセットであってもよい。
【０１５０】
データストレージデバイス１３１８は、コンピュータ可読ストレージ媒体１３２４を含み得、この上に、本明細書において説明される機能の方法論のうち任意の１又は複数を実施するソフトウェア１３２６が格納されている。また、ソフトウェア１３２６は、コンピューティングシステム１３００により実行される間、命令１３２６としてメインメモリ１３０４内に、及び／又は処理ロジック１３２６として処理デバイス１３０２の内部に、完全に、又は少なくとも部分的に存在し得る。メインメモリ１３０４及び処理デバイス１３０２もコンピュータ可読ストレージ媒体を構成する。
【０１５１】
また、コンピュータ可読ストレージ媒体１３２４は、図１に関して説明されたような処理デバイス１３０２、及び／又は上記のアプリケーションを呼び出す方法を含むソフトウェアライブラリを利用して、命令１３２６を格納するべく用いられ得る。コンピュータ可読ストレージ媒体１３２４は、例示的な実施例において単一の媒体として示されているが、「コンピュータ可読ストレージ媒体」という用語は、１若しくは複数のセットの命令を格納する単一の媒体若しくは複数の媒体（例えば、集中若しくは分散データベース、及び／又は関連するキャッシュ及びサーバ）を含むものと解釈されるべきである。また、「コンピュータ可読ストレージ媒体」という用語は、マシンにより実行する命令のセットを格納、エンコード若しくは搬送することができ、かつ本実施例の方法論のうち任意の１又は複数をマシンに実行させる任意の媒体を含むものと解釈されるものである。従って、「コンピュータ可読ストレージ媒体」という用語は、ソリッドステートメモリ、ならびに光及び磁気媒体を含むが、これらに限定されないものと解釈されるものである。
【０１５２】
以下の例は、更なる実施例に関する。例１は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための処理デバイスである。例１に追加して、処理デバイスが、ソフトウェアアクセスに対してアクセス制御されるメモリ所有権テーブル（ＭＯＴ）と、
処理コアと
を備える。
例１に追加して、処理コアは、
信頼ドメイン（ＴＤ）及びＴＤを管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行し、
ＴＤ又は処理デバイスにより実行される他のＴＤのうち１又は複数のグローバルメタデータを管理するために信頼ドメイン制御構造（ＴＤＣＳ）を維持し、
ＴＤＣＳにより参照される、及びＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、１又は複数の信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）におけるＴＤの実行状態を維持し、
ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子（ＩＤ）を取得し、キーＩＤは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページを復号化することを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化され、
ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得し、
ＭＯＴから取得されたゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答して、ＴＤに割り当てられたメモリページへアクセスすることを可能にする。
【０１５３】
例２において、例１の主題は、
ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介して、ＴＤ、他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうちの少なくとも１つに関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、
を任意で含み得る。例３において、例１〜２の何れか１つの主題は、
ＴＤ−ＴＣＳは、ＴＤＣＳを参照し、ＴＤＣＳは、ＴＤのロジックプロセッサに対応する１又は複数のＴＤ−ＴＣＳのカウントを維持し、ＴＤ−ＴＣＳは、ＴＤのスーパーバイザー実行状態及びユーザ実行状態を格納する、
を任意で含み得る。例４において、例１〜３の何れか１つの主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成される、
を任意で含み得る。
【０１５４】
例５において、例１〜４の何れか１つの主題は、
ＭＫ−ＴＭＥエンジンは、ＴＤのメモリページを暗号化及び復号化すること、及びＴＤに割り当てられた永続メモリに対応するメモリページを暗号化及び復号化することにおける使用のためにＴＤに割り当てられたキーＩＤを介してアクセスされた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して複数のキーＩＤを追跡する、
を任意で含み得る。例６において、例１〜５の何れか１つの主題は、
処理コアは、ＥＰＴによりマッピングされたゲスト物理メモリページにアクセスするためにページウォークオペレーションの一部としてアクセスされたホスト物理メモリページに関してＭＯＴを参照する、
を任意で含み得る。例７において、例１〜６の何れか１つの主題は、
ＴＤは、１又は複数のアプリケーションを管理するオペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理するＶＭＭのうちの少なくとも１つを備え、ＴＤ入力オペレーションが、ＶＭＭのうちの少なくとも１つからＴＤのＯＳへ、又はＴＤＲＭからＴＤのＶＭＭへ、処理コアの動作コンテキストを遷移させる、
を任意で含み得る。
【０１５５】
例８において、例１〜７の何れか１つの主題は、
ＴＤＲＭは、ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、
を任意で含み得る。例９において、例１〜８の何れか１つの主題は、
ＴＤＣＳは、ＴＤの暗号測定をキャプチャする署名構造を備え、暗号測定は、処理デバイスの信頼のハードウェア・ルートにより署名され、署名構造は、暗号測定の検証のために証明団体に提供される、
を任意で含み得る。
【０１５６】
例１０において、例１〜９の何れか１つの主題は、
処理コアは更に、少なくともＴＤＲＭ、ＶＭＭ、又は処理デバイスにより実行される他のＴＤを備えるソフトウェアからのソフトウェアアクセスに対してアクセス制御されるＴＤＣＳにおけるＴＤの測定状態を維持する、
を任意で含み得る。例１１において、例１〜１０の何れか１つの主題は、
ＴＤＲＭは、ＴＤ及び他のＴＤを管理する、
を任意で含み得る。上記の装置の全ての任意の特徴はまた、本明細書に記載の方法又は処理に関して実施され得る。
【０１５７】
例１２は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための方法であって、
処理デバイス上で実行される信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する処理デバイスが、ＴＤ終了イベントを識別する段階と、
ＴＤ終了イベントの識別に応答して、ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）に保存する段階であって、実行状態は、第１暗号化キーで暗号化され、ＴＤ−ＴＣＳは、ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤＲＭ、又はＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する段階と、
ＴＤＲＭに関するＴＤＲＭ実行及び制御状態及び終了情報をロードし、処理デバイスに、ＴＤＲＭのコンテキストにおいて動作させる、段階と
を備える
方法。
【０１５８】
例１３において、例１２の主題は、
ＴＤＲＭのコンテキストにおいて、ＴＤ入力イベントを実行する段階と、
ＴＤＲＭに割り当てられた第２暗合化キーに対応する第２キー識別子（ＩＤ）を利用し、ＴＤＲＭにより指定されたＴＤＲＭ実行制御を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインリソースマネージャ制御構造（ＴＤ−ＲＣＳ）からロードする段階であって、実行状態は、第２暗合化キーで暗号化され、ＴＤ−ＲＣＳは、ＴＤ又は処理デバイスにより実行される他のＶＭのうちの少なくとも１つから拡張ページテーブル（ＥＰＴ）を用いてアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第２キーＩＤからＴＤに対応する第１キーＩＤに修正する段階と、
ユーザ実行状態及びスーパーバイザー実行状態を、ＴＤ−ＴＣＳからロードし、処理デバイスを、ＴＤのコンテキストにおいて動作させる、段階と
を任意で含み得る。例１４において、例１２〜１３の何れか１つの主題は、
ＴＤＣＳ及びＴＤ−ＴＣＳは、処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介して機密保護され、及びアクセス制御され、ＭＯＴは、第１キーＩＤをＴＤに関連付けるＴＤＣＳのための第１のエントリを備え、ＭＯＴは、第１キーＩＤを利用し、ＴＤに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
を任意で含み得る。
【０１５９】
例１５において、例１２〜１４の何れか１つの主題は、
ＭＯＴは、レンジレジスタを介してアクセス制御される、
を任意で含み得る。例１６において、例１２〜１５の何れか１つの主題は、
ＴＤＲＭ実行及び制御状態は、ＥＰＴ及びＭＯＴを介してアクセス制御されるＴＤ−ＲＣＳ構造からロードされ、ＭＯＴは、第２キーＩＤをＴＤ−ＲＣＳを含む物理メモリページと関連付けるＴＤ−ＲＣＳ構造のための第２のエントリを備え、ＭＯＴは、第２キーＩＤを利用し、ＴＤＲＭに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
を任意で含み得る。例１７において、例１２〜１６の何れか１つの主題は、
ＶＭＭは、１又は複数のＴＤを管理するＴＤＲＭを備えるルートＶＭＭであり、ＴＤは、１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ終了は、非ルートＶＭＭ又はＴＤの１又は複数のＶＭからルートＶＭＭ及びＴＤＲＭに処理コアの動作コンテキストを遷移させる、
を任意で含み得る。
【０１６０】
例１８において、例１２〜１７の何れか１つの主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、ＭＫ−ＴＭＥエンジンは、ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介してＴＤに割り当てられた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて参照されるホスト物理ページ毎に１つのキーＩＤで、複数の暗号化キーＩＤを追跡する、
を任意で含み得る。
【０１６１】
例１９は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するためのシステムである。例１９において、システムは、
命令を格納するメモリデバイスと、
メモリデバイスに動作可能に結合された処理デバイスと
を含む。例１９に追加して、処理デバイスは、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する命令であって、ＴＤＲＭは、ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、命令と、
ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）におけるＴＤのユーザ実行状態及びスーパーバイザー実行状態を維持する命令と、
ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つの暗号化キー識別子（ＩＤ）を取得する命令であって、キーＩＤは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページを復号化することを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーＩＤを介して識別される暗号化キーで暗号化される、命令と、
ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する命令であって、ゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、ＴＤのコンテキストにおいて実行される処理デバイスに応答して、処理デバイスが、ＴＤに割り当てられたメモリページへアクセスすることを可能にする、命令と
を実行する。
【０１６２】
例２０において、例１９の主題は、
ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介してＴＤ、他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうち１又は複数に関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、
を任意で含み得る。例２１において、例１９〜２０の何れか１つの主題は、
ＴＤ−ＴＣＳは、ＴＤのロジックプロセッサに対応し、ＴＤ−ＴＣＳは、ＴＤのユーザ実行状態及びスーパーバイザー実行状態を、ＴＤ終了オペレーション上に格納し、ＴＤのユーザ及びスーパーバイザー実行状態を、ＴＤ入力オペレーション上にロードし、ＴＤ−ＴＣＳは、ＴＤＲＭ、ＶＭＭ、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、
を任意で含み得る。例２２において、例１９〜２１の何れか１つの主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、ＭＫ−ＴＭＥエンジンは、ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介してＴＤに割り当てられた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して複数の暗号化キーＩＤを追跡する、
を任意で含み得る。
【０１６３】
例２３において、例１９〜２２の何れか１つの主題は、
ＶＭＭは、ＴＤを管理するＴＤＲＭを備え、ＴＤは、オペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ入力オペレーションが、ＴＤＲＭからＴＤの非ルートＶＭＭへ、処理コアの動作コンテキストを遷移させる、
を任意で含み得る。上記のシステムの全ての任意の特徴はまた、本明細書に記載の方法又は処理に関して実施され得る。
【０１６４】
例２４は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための非一時的コンピュータ可読媒体である。例２４において、非一時的機械可読媒体は、
処理デバイスによりアクセスされる場合に、処理デバイスに、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する処理デバイスが、処理デバイスが、ＴＤＲＭのコンテキストにおいて実行している間に、ＴＤ入力イベントを識別する段階と、
ＴＤ入力イベントの識別に応答して、ＴＤＲＭに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤＲＭのＴＤＲＭ制御状態を、ＴＤＲＭに対応する信頼ドメインリソースマネージャ制御構造（ＴＤＲＣＳ）からロードする段階であって、ＴＤＲＭ制御状態は、第１暗号化キーで暗号化され、ＴＤＲＣＳは、ＴＤ、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤに割り当てられた第２暗合化キーに対応する第２キーＩＤに修正する段階と、
信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）から、ＴＤのＴＤユーザ実行状態及びスーパーバイザー実行状態をロードし、処理デバイスに、ＴＤのコンテキストにおいて動作させる段階であって、ＴＤ−ＴＣＳは、ＴＤＲＭ、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と
を備えるオペレーションを実行させるデータを含む。
【０１６５】
例２５において、例２４の主題は、
ＴＤＲＭのコンテキストにおいて、ＴＤ入力イベントを実行する段階と、
ＴＤＲＭに割り当てられた第２暗合化キーに対応する第２キー識別子（ＩＤ）を利用し、ＴＤＲＭにより指定されたＴＤＲＭ実行制御を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインリソースマネージャ制御構造（ＴＤ−ＲＣＳ）からロードする段階であって、実行状態は、第２暗合化キーで暗号化され、ＴＤ−ＲＣＳは、ＴＤ又は処理デバイスにより実行される他のＶＭのうちの少なくとも１つから拡張ページテーブル（ＥＰＴ）を用いてアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第２キーＩＤからＴＤに対応する第１キーＩＤに修正する段階と、
ユーザ実行状態及びスーパーバイザー実行状態を、ＴＤ−ＴＣＳからロードし、処理デバイスを、ＴＤのコンテキストにおいて動作させる、段階と
を任意で含み得る。
【０１６６】
例２６において、例３０〜３１の主題は、
ＴＤＣＳ及びＴＤ−ＴＣＳは、処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介して機密保護及びアクセス制御され、ＭＯＴは、第１キーＩＤをＴＤに関連付けるＴＤＣＳのための第１のエントリを備え、ＭＯＴは、第１キーＩＤを利用し、ＴＤに対応するメモリページへのメモリアクセスのためのメモリ機密を強制する、
を任意で含み得る。例２７において、例３０〜３２の主題は、
ＭＯＴは、レンジレジスタを介してアクセス制御される、
を任意で含み得る。 
【０１６７】
例２８において、例３０〜３３の主題は、
ＴＤＲＭ実行及び制御状態は、ＥＰＴ及びＭＯＴを介してアクセス制御されるＴＤ−ＲＣＳ構造からロードされ、ＭＯＴは、第２キーＩＤをＴＤ−ＲＣＳを含む物理メモリページと関連付けるＴＤ−ＲＣＳ構造のための第２のエントリを備え、ＭＯＴは、第２キーＩＤを利用し、ＴＤＲＭに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
を任意で含み得る。
【０１６８】
例２９において、例３０〜３４の主題は、
ＶＭＭは、１又は複数のＴＤを管理するＴＤＲＭを備えるルートＶＭＭであり、ＴＤは、１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ終了は、非ルートＶＭＭ又はＴＤの１又は複数のＶＭからルートＶＭＭ及びＴＤＲＭに処理コアの動作コンテキストを遷移させる、
を任意で含み得る。例３０において、例３０〜３５の主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、ＭＫ−ＴＭＥエンジンは、ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介してＴＤに割り当てられた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて参照されるホスト物理ページ毎に１つのキーＩＤで、複数の暗号化キーＩＤを追跡する、
を任意で含み得る。
【０１６９】
例３１は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための装置であり、装置は、
処理デバイスが、信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行するための手段であって、ＴＤは、処理デバイスにより実行される、手段と、
ＴＤ又は処理デバイスにより実行される他のＴＤのうち１又は複数のグローバルメタデータを管理するために信頼ドメイン制御構造（ＴＤＣＳ）を維持するための手段と、
ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、１又は複数の信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）におけるＴＤの実行状態を維持するための手段と、
ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子（ＩＤ）を取得し、キーＩＤは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページに機密アクセスすることを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化される、手段と、
ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する手段であって、ＭＯＴから取得されたゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、ＴＤのコンテキストにおいて実行される処理デバイスに応答して、処理デバイスに、ＴＤに割り当てられたメモリページへのアクセスを可能にする、手段と
を備える。例３２において、例３１の主題は、例２から１１の何れか１つの主題を含むように更に構成された装置を任意で含み得る。
【０１７０】
例３３は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するためのシステムであって、システムは、命令を格納するメモリデバイスと、メモリデバイスに動作可能に結合された処理コアとを備える。例３３に追加して、処理コアは、
処理デバイス上で実行される信頼ドメイン（ＴＤ）を管理する、信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する、
ＴＤ終了イベントを識別する、
ＴＤ終了イベントの識別に応答して、ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）に保存することであって、実行状態は、第１暗号化キーで暗号化され、ＴＤ−ＴＣＳは、ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、
処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤＲＭ、又はＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する、及び
ＴＤＲＭに関するＴＤＲＭ実行及び制御状態及び終了情報をロードし、処理デバイスに、ＴＤＲＭのコンテキストにおいて動作させる。例３４において、例３３の主題は、例１３〜１８の何れか１つの主題を任意で含み得る。
【０１７１】
例３５は、メモリと、メモリに結合された処理デバイスとを備える、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することを実施するための装置であり、処理デバイスは、例１２〜１８の何れかの方法を実行する。例３６は、例１２〜１８の何れか１つの方法を実行するための手段を備える、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することを実施するための装置である。例３７は、コンピューティングデバイス上で実行されることに応答して、コンピューティングデバイスに例１２〜１８の何れか１つに係る方法を実行させる複数の命令を備えた、少なくとも１つの機械可読媒体である。例における具体的事柄は、１又は複数の実施形態の何れの箇所でも用いられ得る。
【０１７２】
本開示は、限定された数の実施例に関して説明されたが、当業者であればそこから様々な修正形態及び改変形態を理解するであろう。添付の特許請求の範囲が、本開示の真の趣旨及び範囲内に含まれるそのような全ての修正形態及び改変形態を包含することが意図される。
【０１７３】
本明細書における説明において、本開示の完全な理解を提供するべく、特定のタイプの処理デバイス及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ及びマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令型、特定のシステムコンポーネント、特定の寸法／高さ、特定の処理デバイスパイプライン段階、及びオペレーションの例等のような、様々な具体的な詳細を記載している。しかしながら、本開示を実施するのにこれらの具体的な詳細を使用する必要がないことは、当業者にとって明らかであろう。他の例において、特定の代替的処理デバイスアーキテクチャ、説明されたアルゴリズムの特定のロジック回路／コード、特定のファームウェアコード、特定の相互接続動作、特定のロジック構成、特定の製造技術及び材料、特定のコンパイラ実装、コード中の特定のアルゴリズム表現、特定のパワーダウン及びゲーティング技術／ロジック、並びに他の特定のコンピュータシステムの動作可能な詳細等、よく知られたコンポーネント又は方法は、本開示を不必要に不明瞭にするのを回避するべく、詳細には説明されない。
【０１７４】
実施例は、コンピューティングプラットフォーム又はマイクロプロセッシングデバイス等における特定の集積回路の、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することを参照して説明されている。また、実施例は、他のタイプの集積回路及びプログラマブルロジックデバイスに適用可能であり得る。例えば、開示された実施例は、デスクトップコンピュータシステム又はインテル（登録商標）のウルトラブック（商標）コンピュータ等、携帯型コンピュータに限定されない。また、ハンドヘルドデバイス、タブレット、他の薄いノートブック、システムオンチップ（ＳｏＣ）デバイス、及びエンベデッドアプリケーション等、他のデバイスにおいても使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）及びハンドヘルドＰＣが挙げられる。通常、エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号処理デバイス（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、又は、以下で教示される機能及びオペレーションを実行し得る任意の他のシステムを含む。システムは、任意の種類のコンピュータ又はエンベデッドシステムであり得ることが説明される。開示された実施例は特に、ウェアラブルデバイス（例えば腕時計）、電子インプラント、感覚・制御インフラストラクチャデバイス、コントローラ、監視及び制御データ収集（ＳＣＡＤＡ）システム等のローエンドデバイスに用いられ得る。更に、本明細書において説明される装置、方法及びシステムは、物理的コンピューティングデバイスに限定されないが、エネルギー管理及び効率性のためのソフトウェア最適化にも関連し得る。以下の説明において容易に明らかになるように、本明細書において説明される方法、装置及びシステムの実施例（ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせを指すか否かに関係なく）は、性能についての考慮とバランスのとれた「グリーン技術」の将来に必須である。
【０１７５】
本明細書における実施例は処理デバイスを参照して説明されるが、他の実施例が、他のタイプの集積回路及びロジックデバイスに適用可能である。本開示の実施例の類似する技術及び教示が、より高いパイプラインスループット及び改善された性能から利益を受け得る、他のタイプの回路又は半導体デバイスに適用され得る。本開示の実施例の教示は、データ操作を実行する任意の処理デバイス又は機械に適用可能である。しかしながら、本開示は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビット、若しくは１６ビットデータのオペレーションを実行する処理デバイス若しくは機械に限定されず、データの操作若しくは管理が実行される任意の処理デバイス及び機械に適用され得る。更に、本明細書における説明は、例を提供し、添付の図面は、図示を目的として様々な例を示す。しかしながら、これらの例は、本開示の実施例の例を提供するのみならず、本開示の実施例の可能な限り全ての実施例における包括的列挙を提供することを単に意図するので、限定的意味に解釈されるべきではない。
【０１７６】
以下の例は、実行ユニット及びロジック回路の文脈における命令処理及び分散を説明するが、機械により実行されると、機械に本開示の少なくとも１つの実施例と一致する機能を実行させる機械可読な有形媒体上に格納されたデータ又は命令により、本開示の他の実施例が達成され得る。一実施例において、本開示の実施例に関連する機能は、機械実行可能な命令で実施される。命令は、命令によりプログラミングされた汎用又は特定用途処理デバイスに、本開示の段階を実行させるべく用いられ得る。本開示の実施例は、コンピュータプログラム製品又はソフトウェアとして提供され得、これらは、本開示の実施例に係る１又は複数のオペレーションを実行するようにコンピュータ（又は他の電子デバイス）をプログラミングするべく用いられ得る命令を格納した機械又はコンピュータ可読媒体を含み得る。あるいは、本開示の実施例のオペレーションは、これらのオペレーションを実行する固定機能ロジックを含む特定のハードウェアコンポーネント、又はプログラミングされたコンピュータコンポーネント及び固定機能ハードウェアコンポーネントの任意の組み合わせにより実行され得る。
【０１７７】
本開示の実施例を実行するロジックをプログラミングするのに用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他のストレージ等のシステムのメモリ内に格納され得る。更に、これらの命令は、ネットワークを介して、又は、他のコンピュータ可読媒体により配信され得る。従って、機械可読媒体は、機械（例えばコンピュータ）により可読な形態で情報を格納又は送信する任意のメカニズムを含み得るが、電気、光、アコースティック若しくは他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）により、インターネットを介する情報の送信に用いられるフロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ‐ＲＯＭ）、及び磁気光ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、又は有形機械可読ストレージに限定されない。従って、コンピュータ可読媒体としては、機械（例えばコンピュータ）により可読な形態で電子命令又は情報を格納又は送信するのに好適の任意のタイプの有形機械可読媒体が挙げられる。
【０１７８】
設計は、生成からシミュレーションを経由して製造へと様々な段階を経る場合がある。設計を表すデータは、いくつかの態様でその設計を表現し得る。まず、シミュレーションで有用なように、ハードウェアは、ハードウェア記述言語、又は別の機能記述言語を用いて表され得る。更に、ロジック及び／又はトランジスタゲートを用いる回路レベルモデルは、設計処理のいくつかの段階において生成され得る。更に、いくつかの段階では、大部分の設計が、ハードウェアモデルで様々なデバイスの物理的配置を表すデータのレベルに達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路の製造に用いられるマスクのための異なるマスク層に、様々な機能が存在するか、又は存在しないかを指定するデータであり得る。設計の任意の表現において、データは、機械可読媒体に任意の形態で格納され得る。メモリ、又は、ディスク等の磁気若しくは光ストレージは、変調された光又は電気の波を介して送信される情報を、又は、そうした情報を送信するために別途生成された情報を格納する機械可読媒体であってもよい。コード又は設計を示し、又は搬送する電気的な搬送波が送信される場合に、その電気信号のコピー、バッファ処理、又は再送信が実行される程度において、新しいコピーが作成される。従って、通信プロバイダ又はネットワークプロバイダは、搬送波へエンコードされた情報等、本開示の実施例における技術を実施する物品を、有形の機械可読媒体に少なくとも一時的に格納してもよい。
【０１７９】
本明細書において用いられるモジュールは、ハードウェア、ソフトウェア及び／又はファームウェアの任意の組み合わせを指す。例として、モジュールは、マイクロコントローラにより実行されるように適合されたコードを格納する非一時的媒体に関連したマイクロコントローラ等のハードウェアを含む。従って、一実施例において、モジュールは、ハードウェアを指し、具体的には、ハードウェアは、非一時的媒体上に保持されるべきコードを認識及び／又は実行するように構成されている。更に、別の実施例において、モジュールを用いる場合、コードを含む非一時的媒体を指し、具体的には、コードは予め定められたオペレーションを実行するべく、マイクロコントローラにより実行されるように適合されている。なおも別の実施例において、推測されるように、（本例における）モジュールという用語は、マイクロコントローラ及び非一時的媒体の組み合わせを指す場合がある。多くの場合、別個に図示されるモジュールの境界線は一般に異なり、潜在的には重複する。例えば、第１及び第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを共有するが、潜在的には、いくつかの独立したハードウェア、ソフトウェア又はファームウェアを保持し得る。一実施例において、ロジックという用語を用いる場合、トランジスタ、レジスタ等のハードウェア、又は、プログラマブルロジックデバイス等の他のハードウェアを含む。 
【０１８０】
一実施例において、「ように構成される」という文言を用いる場合、指定又は決定されたタスクを実行するべく、装置、ハードウェア、ロジック又は要素を、配置し、組み立て、製造し、販売の申出をし、輸入し、及び／又は、設計することを指す。この例においては、動作していない装置又はその要素が、指定されたタスクを実行するべく設計され、結合され、及び／又は相互接続されている場合には、依然として、指定された当該タスクを実行する「ように構成され」ている。純粋に図示的な例として、ロジックゲートは、動作の間は、０又は１を提供し得る。しかし、イネーブル信号をクロックへ提供する「ように構成される」ロジックゲートは、１又は０を提供し得る全ての潜在的なロジックゲートを含むわけではない。代わりに、ロジックゲートは、動作中に１又は０の出力がクロックをイネーブルにするように、いくつかの態様で結合されているものである。「ように構成される」という用語を用いる場合、動作を必要とはせず、その代わりに、装置、ハードウェア及び／又は要素の隠れた状態に焦点を当てたものであって、その隠れた状態において、装置、ハードウェア及び／又は要素は、装置、ハードウェア及び／又は要素が動作している場合に特定のタスクを実行するように設計されていることに再度留意されたい。 
【０１８１】
更に、「するべく」、「することができる」、及び又は「動作可能な」という文言を用いる場合、一実施例において、指定されたように装置、ロジック、ハードウェア及び／又は要素を用いることを可能にするように、いくつかの装置、ロジック、ハードウェア、及び／又は要素が設計されていることを指す。上記のように、一実施例における「するべく」、「することができる」、又は「動作可能な」を用いる場合、装置、ロジック、ハードウェア及び／又は要素の隠れた状態を指し、装置、ロジック、ハードウェア及び／又は要素は、動作をしているのではなく、指定されたように装置を用いることを可能にするように設計されていることに留意されたい。
【０１８２】
本明細書中で用いられる値は、数、状態、ロジック状態、又はバイナリロジック状態についての任意の既知の表現を含み得る。多くの場合、ロジックレベル、ロジック値又は論理値という使用はまた、「１の」及び「０の」とも称され、それは単純にバイナリロジック状態を表す。例えば、１は高ロジックレベルを、０は低ロジックレベルを指す。一実施例において、トランジスタ又はフラッシュセル等のストレージセルは、単一の論理値又は多重の論理値を保持することができる場合がある。しかしながら、コンピュータシステムでは、他の値の表現が用いられてきた。例えば、１０進数の１０はまた、バイナリ値１０１０として、１６進数では文字Ａとして、表され得る。従って、値は、コンピュータシステムにおいて保持することが可能な情報の任意の表現を含む。
【０１８３】
更に、状態が、値又は値の部分により表され得る。例として、ロジック１等の第１の値が、既定又は初期の状態を表し得るが、ロジックゼロ等の第２の値は、非既定状態を表し得る。更に、一実施例において、リセット及びセットという用語は、既定及び更新された値又は状態を、各々指す。例えば、既定値は潜在的に高論理値、即ち、リセットを含むが、更新された値は潜在的に低論理値、即ち、セットを含む。値の任意の組み合わせが、任意の状態の数を表すべく利用され得ることに留意されたい。
【０１８４】
上記の方法、ハードウェア、ソフトウェア、ファームウェア又はコードの実施例は、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体であって、かつ処理要素によって実行可能な媒体に格納された命令又はコードによって、実施され得る。非一時的機械アクセス可能／可読媒体は、コンピュータ又は電子システム等の機械により読み取り可能な形態で情報を提供する（即ち、格納及び／又は送信する）任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体としては、スタティックＲＡＭ（ＳＲＡＭ）又はダイナミックＲＡＭ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、磁気又は光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的な（伝搬された）信号（例えば、搬送波、赤外線信号、デジタル信号）、等から受信した情報を保持する他の形態のストレージデバイスが挙げられ、これらは、情報をそれ自身から受信できる非一時的媒体とは区別される。本開示の実施例を実行するロジックをプログラミングするのに用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他のストレージ等のシステムのメモリ内に格納され得る。更に、これらの命令は、ネットワークを介して、又は、他のコンピュータ可読媒体により配信され得る。従って、機械可読媒体は、機械（例えばコンピュータ）により可読な形態で情報を格納又は送信する任意のメカニズムを含み得るが、電気、光、アコースティック若しくは他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）により、インターネットを介する情報の送信に用いられるフロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ‐ＲＯＭ）、及び磁気光ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、又は有形機械可読ストレージに限定されない。従って、コンピュータ可読媒体としては、機械（例えばコンピュータ）により可読な形態で電子命令又は情報を格納又は送信するのに好適の任意のタイプの有形機械可読媒体が挙げられる。
【０１８５】
本明細書全体で「一実施例」又は「実施例」に言及する場合、その実施例に関連して説明された特定の機能、構造又は特性が、本開示の少なくとも１つの実施例に含まれることを意味する。従って、本明細書を通して、様々な箇所における「一実施例において」又は「ある実施例において」という文言が現れても、必ずしも全てが同一の実施例を指している訳ではない。更に、特定の機能、構造、又は特性は、１又は複数の実施例において、任意の好適な形で組み合わされ得る。
【０１８６】
上述の説明において、詳細な説明は、特定の例示的な実施例を参照して提供される。しかしながら、添付の特許請求の範囲で記載される本開示のより広い趣旨及び範囲から逸脱することなく、様々な修正及び変更がなされ得ることは明らかであろう。従って、明細書及び図面は、限定的意味ではなく、例示的意味で顧慮されるものである。更に、上述の実施例、実施形態、及び／又は他の例示的な言語を用いる場合、同一の実施例又は同一の例を必ずしも指すわけではなく、異なる別個の実施例、並びに潜在的に同一の実施例を指す場合がある。
【０１８７】
詳細な説明のいくつかの部分は、コンピュータメモリ内におけるデータビットに基づくオペレーションのアルゴリズム及びシンボル表現の観点から提示されている。これらのアルゴリズムの記載及び表現は、他の当業者に彼らの作業の実体を最も有効に伝達するべくデータ処理の当業者により用いられる手段である。アルゴリズムは、ここでは、通常、所望の結果をもたらす、オペレーションの自己矛盾のないシーケンスと考えられる。オペレーションは、物理量の物理的操作を必要とするものである。通常、必ずしもではないが、これらの量は、格納し、転送し、組み合わせ、比較し、または操作することができる電気信号又は磁気信号の形態を取る。主として、これらの信号をビット、値、要素、記号、文字、用語、数等として参照することは、共通に用いるという理由から時に好都合であることが明らかになっている。本明細書において説明されるブロックは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせであり得る。 
【０１８８】
しかしながら、これら及び類似の用語の全ては、適切な物理量に関連するものであり、これらの量に適用される便宜的標記にすぎないことを念頭に置かれたい。上記検討から明らかなように、別途具体的に記載されない限り、本明細書全体を通して「規定する」、「受信する」、「判断する」、「発行する」、「リンクする」、「関連する」、「取得する」、「認証する」、「阻止する」、「実行する」、「要求する」、「通信する」等の用語を利用して検討する場合、コンピューティングシステム、又はコンピューティングシステムのレジスタ及びメモリ内で物理的（例えば、電子）量として表されたデータを、コンピューティングシステムメモリ若しくはレジスタ、又は他のそのような情報ストレージ、送信若しくはディスプレイデバイス内で物理量として同様に表された他のデータに操作及び変換する類似の電子コンピューティングデバイスにおけるアクション又は処理を指すことを理解されたい。
【０１８９】
本明細書で用いられる「例」又は「例示的」なる文言は、例示、例又は図示として役立つことを意味する。「例」又は「例示的」として本明細書において説明される任意の態様又は設計は、他の態様又は設計に対して好ましいか、又は有利なものとして必ずしも解釈されるものではない。むしろ、「例」又は「例示的」の文言を用いる場合、具体的な様式における概念を提示することが意図される。本願において用いられるように、「又は」という用語は、排他的な「又は」というよりはむしろ包含的な「又は」を意味することを意図する。つまり、別途指定され、又は文脈から明らかでない限り、「ＸはＡ又はＢを含む」は、自然な包括的順列の何れかを意味することを意図する。即ち、ＸがＡを含むか、ＸがＢを含むか、又はＸがＡ及びＢの両方を含むとき、上述の例の何れかの下において「Ｘは、Ａ又はＢを含む」が満たされる。更に、本願及び添付の特許請求の範囲において用いられる冠詞「ａ」及び「ａｎ」は一般に、別途指定され、又は単数形を対象とすることが文脈から明らかでない限り、「１又は複数」を意味するものと解釈される。更に、全体を通して「実施形態」若しくは「一実施形態」、又は「実施例」若しくは「一実施例」という用語を用いる場合、そのように説明されない限り、同一の実施形態又は実施例を意味することを意図しない。また、「第１」、「第２」、「第３」、「第４」等の用語は、本明細書において用いられるとき、異なる要素を区別するための指標として意図されており、必ずしもそれらの数字指定に従った序数の意味を有するものではない場合がある。
【図１Ａ】
2019053720.tif 000012
【図１Ｂ】
2019053720.tif 000013
【図２Ａ】
2019053720.tif 000014
【図２Ｂ】
2019053720.tif 000015
【図３】
2019053720.tif 000016
【図４】
2019053720.tif 000017
【図５】
2019053720.tif 000018
【図６】
2019053720.tif 000019
【図７Ａ】
2019053720.tif 000020
【図７Ｂ】
2019053720.tif 000021
【図８】
2019053720.tif 000022
【図９】
2019053720.tif 000023
【図１０】
2019053720.tif 000024
【図１１】
2019053720.tif 000025
【図１２】
2019053720.tif 000026
【図１３】
2019053720.tif 000027
【手続補正書】
【提出日】平成30年8月14日(2018.8.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ソフトウェアアクセスに対してアクセス制御されるメモリ所有権テーブル（ＭＯＴ）と、
処理コアであって、
信頼ドメイン（ＴＤ）及び前記ＴＤを管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行し、
前記ＴＤ又は処理デバイスにより実行される他のＴＤのうち１又は複数のグローバルメタデータを管理するために信頼ドメイン制御構造（ＴＤＣＳ）を維持し、
前記ＴＤＣＳにより参照され、かつ前記ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は前記他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、１又は複数の信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）における前記ＴＤの実行状態を維持し、
前記ＭＯＴを参照し、前記ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子（ＩＤ）を取得し、前記キーＩＤは、前記処理デバイスが、前記ＴＤのコンテキストにおいて実行される前記処理デバイスに応答して前記ＴＤに割り当てられたメモリページを復号化することを可能にし、前記ＴＤに割り当てられた前記メモリページは、前記暗号化キーで暗号化され、
前記ＭＯＴを参照し、前記ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する
処理コアと
を備え、
前記ＭＯＴから取得された前記ゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、前記処理デバイスが、前記ＴＤの前記コンテキストにおいて実行される前記処理デバイスに応答して、前記ＴＤに割り当てられた前記メモリページへアクセスすることを可能にする、
処理デバイス。
【請求項２】
前記ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介して、前記ＴＤ、前記他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうちの少なくとも１つに関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、請求項１に記載の処理デバイス。
【請求項３】
前記ＴＤ−ＴＣＳは、前記ＴＤＣＳを参照し、前記ＴＤＣＳは、前記ＴＤのロジックプロセッサに対応する１又は複数のＴＤ−ＴＣＳのカウントを維持し、前記ＴＤ−ＴＣＳは、前記ＴＤのスーパーバイザー実行状態及びユーザ実行状態を格納する、請求項１又は２に記載の処理デバイス。
【請求項４】
前記暗号化キーは、前記処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成される、請求項１から３の何れか一項に記載の処理デバイス。
【請求項５】
前記ＭＫ−ＴＭＥエンジンは、前記ＴＤの前記メモリページを暗号化及び復号化すること、及び前記ＴＤに割り当てられた永続メモリに対応するメモリページを暗号化及び復号化することにおける使用のために前記ＴＤに割り当てられたキーＩＤを介してアクセスされた複数の暗号化キーを生成し、前記ＭＯＴは、前記ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して複数の前記キーＩＤを追跡する、請求項４に記載の処理デバイス。
【請求項６】
前記処理コアは、前記ＥＰＴによりマッピングされたゲスト物理メモリページにアクセスするためにページウォークオペレーションの一部としてアクセスされたホスト物理メモリページに関して前記ＭＯＴを参照する、請求項２に記載の処理デバイス。
【請求項７】
前記ＴＤは、１又は複数のアプリケーションを管理するオペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理する前記ＶＭＭのうちの少なくとも１つを備え、ＴＤ入力オペレーションが、前記ＶＭＭのうちの少なくとも１つから前記ＴＤの前記ＯＳへ、又は前記ＴＤＲＭから前記ＴＤの前記ＶＭＭへ、前記処理コアの動作コンテキストを遷移させる、請求項１から６の何れか一項に記載の処理デバイス。
【請求項８】
前記ＴＤＲＭは、前記ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、請求項１から７の何れか一項に記載の処理デバイス。
【請求項９】
前記ＴＤＣＳは、前記ＴＤの暗号測定をキャプチャする署名構造を備え、前記暗号測定は、前記処理デバイスの信頼のハードウェア・ルートにより署名され、前記署名構造は、前記暗号測定の検証のために証明団体に提供される、請求項１から８の何れか一項に記載の処理デバイス。
【請求項１０】
前記処理コアは更に、少なくとも前記ＴＤＲＭ、前記ＶＭＭ、又は前記処理デバイスにより実行される前記他のＴＤを備えるソフトウェアからのソフトウェアアクセスに対してアクセス制御される前記ＴＤＣＳにおける前記ＴＤの測定状態を維持する、請求項１から９の何れか一項に記載の処理デバイス。
【請求項１１】
前記ＴＤＲＭは、前記ＴＤ及び前記他のＴＤを管理する、請求項１から１０の何れか一項に記載の処理デバイス。
【請求項１２】
処理デバイス上で実行される信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する前記処理デバイスが、ＴＤ終了イベントを識別する段階と、
前記ＴＤ終了イベントの識別に応答して、前記ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、前記ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、前記ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）に保存する段階であって、前記ＴＤスーパーバイザー実行状態及び前記ユーザ実行状態は、前記第１暗号化キーで暗号化され、前記ＴＤ−ＴＣＳは、前記ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は前記処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
前記処理デバイスのキーＩＤ状態を、前記第１キーＩＤから、前記ＴＤＲＭ、又は前記ＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する段階と、
前記ＴＤＲＭに関するＴＤＲＭ実行及び制御状態及び終了情報をロードし、前記処理デバイスに、前記ＴＤＲＭのコンテキストにおいて動作させる、段階と
を備える
方法。
【請求項１３】
前記ＴＤＲＭの前記コンテキストにおいて、ＴＤ入力イベントを実行する段階と、
前記ＴＤＲＭに割り当てられた第２暗合化キーに対応する第２キー識別子（ＩＤ）を利用し、前記ＴＤＲＭにより指定されたＴＤＲＭ実行制御を、前記ＴＤに割り当てられた前記ロジックプロセッサに対応する信頼ドメインリソースマネージャ制御構造（ＴＤ−ＲＣＳ）からロードする段階であって、前記ＴＤスーパーバイザー実行状態及び前記ユーザ実行状態は、前記第２暗合化キーで暗号化され、前記ＴＤ−ＲＣＳは、前記ＴＤ又は前記処理デバイスにより実行される他のＶＭのうちの少なくとも１つから拡張ページテーブル（ＥＰＴ）を用いてアクセス制御される、段階と、
前記処理デバイスのキーＩＤ状態を、前記第２キーＩＤから前記ＴＤに対応する第１キーＩＤに修正する段階と、
前記ユーザ実行状態及び前記スーパーバイザー実行状態を、前記ＴＤ−ＴＣＳからロードし、前記処理デバイスを、前記ＴＤのコンテキストにおいて動作させる、段階と
を更に備える
請求項１２に記載の方法。
【請求項１４】
信頼ドメイン制御構造（ＴＤＣＳ）及びＴＤ−ＴＣＳは、前記処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介して機密保護され、及びアクセス制御され、前記ＭＯＴは、前記第１キーＩＤを前記ＴＤに関連付ける前記ＴＤＣＳのための第１のエントリを備え、前記ＭＯＴは、前記第１キーＩＤを利用し、前記ＴＤに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
請求項１３に記載の方法。
【請求項１５】
前記ＭＯＴは、レンジレジスタを介してアクセス制御される、
請求項１４に記載の方法。
【請求項１６】
前記ＴＤＲＭ実行及び制御状態は、前記ＥＰＴ及び前記ＭＯＴを介してアクセス制御される前記ＴＤ−ＲＣＳからロードされ、前記ＭＯＴは、前記第２キーＩＤを前記ＴＤ−ＲＣＳを含む物理メモリページと関連付ける前記ＴＤ−ＲＣＳのための第２のエントリを備え、前記ＭＯＴは、前記第２キーＩＤを利用し、前記ＴＤＲＭに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
請求項１４に記載の方法。
【請求項１７】
前記ＶＭＭは、１又は複数のＴＤを管理する前記ＴＤＲＭを備えるルートＶＭＭであり、前記ＴＤは、１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、前記ＴＤ終了イベントは、前記非ルートＶＭＭ又は前記ＴＤの前記１又は複数のＶＭから前記ルートＶＭＭ及びＴＤＲＭに処理コアの動作コンテキストを遷移させる、
請求項１２に記載の方法。
【請求項１８】
前記暗号化キーは、前記処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、前記ＭＫ−ＴＭＥエンジンは、前記ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介して前記ＴＤに割り当てられた複数の暗号化キーを生成し、前記ＭＯＴは、前記ＭＯＴにおいて参照されるホスト物理ページ毎に１つのキーＩＤで、複数の暗号化キーＩＤを追跡する、
請求項１４に記載の方法。
【請求項１９】
１又は複数の命令を格納するメモリデバイスと、
前記メモリデバイスに動作可能に結合された処理デバイスと
を備えるシステムであって、
前記処理デバイスは、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する命令であって、前記ＴＤＲＭは、前記ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、命令と、
前記ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は前記処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）における前記ＴＤのユーザ実行状態及びスーパーバイザー実行状態を維持する命令と、
ＭＯＴを参照し、前記ＴＤに割り当てられた暗号化キーに対応する少なくとも１つの暗号化キー識別子（ＩＤ）を取得する命令であって、前記暗号化キーＩＤは、前記処理デバイスが、前記ＴＤのコンテキストにおいて実行される前記処理デバイスに応答して前記ＴＤに割り当てられたメモリページを復号化することを可能にし、前記ＴＤに割り当てられた前記メモリページは、前記暗号化キーＩＤを介して識別される前記暗号化キーで暗号化される、命令と、
前記ＭＯＴを参照し、前記ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する命令であって、前記ゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、前記処理デバイスが、前記ＴＤの前記コンテキストにおいて実行される前記処理デバイスに応答して、前記ＴＤに割り当てられたメモリページへアクセスすることを可能にする、命令と
の前記１又は複数の命令を実行する、
システム。
【請求項２０】
前記ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介して、前記ＴＤ、前記他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうち１又は複数に関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、請求項１９に記載のシステム。
【請求項２１】
前記ＴＤ−ＴＣＳは、前記ＴＤのロジックプロセッサに対応し、前記ＴＤ−ＴＣＳは、前記ＴＤの前記ユーザ実行状態及び前記スーパーバイザー実行状態を、ＴＤ終了オペレーション上に格納し、前記ＴＤのユーザ及びスーパーバイザー実行状態を、ＴＤ入力オペレーション上にロードし、前記ＴＤ−ＴＣＳは、前記ＴＤＲＭ、前記ＶＭＭ、又は前記処理デバイスにより実行される前記他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、
請求項１９又は２０に記載のシステム。
【請求項２２】
前記暗号化キーは、前記処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、前記ＭＫ−ＴＭＥエンジンは、前記ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介して前記ＴＤに割り当てられた複数の暗号化キーを生成し、前記ＭＯＴは、前記ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して、複数の暗号化キーＩＤを追跡する、
請求項１９から２１の何れか一項に記載のシステム。
【請求項２３】
前記ＶＭＭは、前記ＴＤを管理する前記ＴＤＲＭを備え、前記ＴＤは、オペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ入力オペレーションが、前記ＴＤＲＭから前記ＴＤの前記非ルートＶＭＭへ、処理コアの動作コンテキストを遷移させる、
請求項１９から２２の何れか一項に記載のシステム。
【請求項２４】
請求項１２から１８の何れか一項に記載の方法を実行するための手段を備える装置。
【請求項２５】
コンピューティングデバイス上で実行されることに応答して、前記コンピューティングデバイスに請求項１２から１８の何れか一項に記載の方法を実行させる複数の命令を備えた、少なくとも１つのコンピュータプログラム。
【請求項２６】
請求項２５に記載のコンピュータプログラムを格納する機械可読媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、コンピュータシステムに関し、より具体的には、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することに関する。
【背景技術】
【０００２】
近年の処理デバイスは、ディスク暗号化を使用し、静止時のデータを保護する。しかしながら、メモリ内のデータは、プレーンテキストであり、攻撃に対して脆弱である。攻撃者は、ソフトウェア及びハードウェアベースのバススキャン、メモリスキャン、ハードウェアプロービング等を含む様々な技術を用い、メモリからデータを取得することができる。この、メモリからのデータには、例えば、プライバシーに敏感なデータ、ＩＰに敏感なデータ、及びまたファイル暗号化又は通信に用いられるキーなどの機微データが含まれ得る。クラウドサービスプロバイダにより提供される仮想化ベースのホスティングサービスを利用して、データ及びエンタプライズワークロードをクラウドに移行する現在のトレンドで、データの公開は更に悪化する。
【図面の簡単な説明】
【０００３】
【図１Ａ】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供する例示的なコンピューティングシステムを示すブロック図である。
【０００４】
【図１Ｂ】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供する別の例示的なコンピューティングシステムを示すブロック図である。
【０００５】
【図２Ａ】一実施例に係る、信頼ドメインアーキテクチャの例のブロック図である。
【０００６】
【図２Ｂ】一実施例に係る、信頼ドメインアーキテクチャの別の例のブロック図である。
【０００７】
【図３】一実施例に係る、信頼ドメインアーキテクチャの更なる例のブロック図である。
【０００８】
【図４】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための例示的な方法のフロー図である。
【０００９】
【図５】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供しながら、信頼ドメイン終了ルーチンを実行するための例示的な方法のフロー図である。
【００１０】
【図６】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供しながら、信頼ドメイン入力ルーチンを実行するための例示的な方法のフロー図である。
【００１１】
【図７Ａ】本開示の一実施例が用いられ得る、プロセッサのためのマイクロアーキテクチャを示すブロック図である。
【００１２】
【図７Ｂ】本開示の少なくとも１つの実施例に従って実施される、インオーダパイプライン及びレジスタリネーミング段階、アウトオブオーダ発行／実行パイプラインを示すブロック図である。
【００１３】
【図８】一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するロジック回路を含む処理デバイスのためのマイクロアーキテクチャのブロック図を示す。
【００１４】
【図９】一実施例に係る、コンピュータシステムのブロック図である。
【００１５】
【図１０】別の実施例に係る、コンピュータシステムのブロック図である。
【００１６】
【図１１】一実施例に係る、システムオンチップのブロック図である。
【００１７】
【図１２】コンピューティングシステムのためのブロック図の別の実施例を示す。
【００１８】
【図１３】コンピューティングシステムのためのブロック図の別の実施例を示す。
【発明を実施するための形態】
【００１９】
信頼ドメイン（ＴＤ）を用いて仮想化されたシステムにおける分離を提供するアーキテクチャが、説明される。コンピューティングの現在のトレンドは、クラウドサービスプロバイダ（ＣＳＰ）により提供されるホスティングサービスを利用して、クラウド内にデータ及びエンタプライズワークロードを配置することである。クラウド内のデータ及びエンタプライズワークロードのホスティングの結果、ＣＳＰの顧客（本明細書でテナントと称される）は、それらのワークロードのためのより良いセキュリティ及び分離ソリューションを要求している。具体的には、顧客は、テナントのソフトウェアの、信頼できるコンピューティングベース（ＴＣＢ）の外部でＣＳＰ提供ソフトウェアのオペレーションを可能にするソリューションを探している。システムのＴＣＢは、システムの動作全体の信頼に影響する能力を有するハードウェア、ファームウェア、及び／又はソフトウェアコンポーネントのセットを指す。
【００２０】
本開示の実施例において、ＴＤアーキテクチャ及びＴＤアーキテクチャのための命令セットアーキテクチャ（ＩＳＡ）拡張（本明細書では、ＴＤ拡張（ＴＤＸ）と称される）が提供され、信頼できないＣＳＰインフラストラクチャにおいて実行される顧客（テナント）ソフトウェアのための機密性（及び完全性）を提供する。システムオンチップ（ＳｏＣ）機能であってもよいＴＤアーキテクチャは、ＴＤワークロードと、ＣＳＰの仮想マシンマネージャ（ＶＭＭ）等のＣＳＰソフトウェアとの間の分離を提供する。ＴＤアーキテクチャのコンポーネントには、１）ＭＫ−Ｔｏｔａｌメモリ暗号化（ＭＫ−ＴＭＥ）エンジンを介したメモリ暗号化、２）本明細書で信頼ドメインリソースマネージャ（ＴＤＲＭ）と称されるリソース管理機能、ＴＤＲＭは、仮想マシンモニタ（ＶＭＭ）のソフトウェア拡張であり得る、３）ＣＰＵ管理メモリ所有権テーブル（ＭＯＴ）を介して及びＣＰＵアクセス制御ＴＤ制御構造を介して提供されるプロセッサにおける実行状態及びメモリ分離機能、が含まれ得る。ＴＤアーキテクチャは、ＴＤワークロードの安全なオペレーションのために、ＭＫ−ＴＭＥエンジン、ＭＯＴ、及びアクセス制御ＴＤ制御構造を活用するＴＤを配備する、プロセッサの能力を提供する。
【００２１】
一実施例において、テナントのソフトウェアは、ＴＤとして知られるアーキテクチャ概念において実行される。ＴＤ（テナントＴＤとも称される）は、（例えば、オペレーティングシステム（ＯＳ）上で実行される他のリング３アプリケーションと共にＯＳだけを備えてもよく、又は他のリング３アプリケーションと共にＶＭＭ上で実行する仮想マシン（ＶＭ）を備えてもよい）テナントワークロードを指す。各ＴＤが、システムにおける他のＴＤとは独立して動作し、プラットフォーム上のＴＤＲＭにより割り当てられたロジックプロセッサ、メモリ、及びＩ／Ｏを用いる。各ＴＤは、信頼ドメインと関連付けられたメモリ（コード及び／又はデータを保持する）を暗号化するために、ＭＫ−ＴＭＥエンジンの少なくとも１つの専用の暗号化キーを用いてメモリにおいて暗号で分離される。 
【００２２】
本開示の実施例において、ＴＤアーキテクチャにおけるＴＤＲＭは、ＴＤのホストとして機能し、コア及び他のプラットフォームハードウェアを完全に制御する。ＴＤＲＭが、ＴＤにおけるソフトウェアに、ロジックプロセッサを割り当てる。しかしながら、ＴＤＲＭは、割り当てられたロジックプロセッサ上のＴＤの実行状態にアクセスできない。同様に、ＴＤＲＭは、物理メモリ及びＩ／ＯリソースをＴＤに割り当てるが、ＴＤ毎のＣＰＵにより強制される別個の暗号化キーの使用、及びメモリ上の他の完全性及びリプレイ制御に起因して、ＴＤのメモリ状態にアクセスすることに関与していない。ＴＤにおいて実行されるソフトウェアは、ＴＤＲＭは、プラットフォームリソースの制御を保持できるように、より少ない特権で動作する。しかしながら、ＴＤＲＭは、規定された状況下で、メモリにおける又はＣＰＵ構造におけるＴＤ状態の機密性又は完全性に影響を与えることはできない。
【００２３】
仮想化されたシステムにおいて分離を提供する従来のシステムは、テナントのＴＣＢからＣＳＰソフトウェアを完全に抽出しない。更に、従来のシステムは、本開示の実施例が回避する別個のチップセットサブシステムを用いて、ＴＣＢを大幅に増加させ得る。本開示の実施例のＴＤアーキテクチャは、ＴＣＢからＣＳＰソフトウェアを除去することにより、ＴＣＢを明示的に削減することにより、顧客（テナント）ワークロードとＣＳＰソフトウェアとの間の分離を提供する。実施例は、ＣＳＰ顧客ワークロード（テナントＴＤ）のための安全な分離を提供することにより、従来のシステムよりも技術的な改善を提供し、ＣＳＰのセキュリティ及び機能要件を満たしながら、顧客のＴＣＢからのＣＳＰソフトウェアの除去を可能にする。加えて、ＴＤアーキテクチャは、複数のＴＤに拡張可能であり、これは、複数のテナントワークロードをサポートし得る。更に、本明細書において説明されているＴＤアーキテクチャは、汎用であり、任意のダイナミックランダムアクセスメモリ（ＤＲＡＭ）、又は不揮発性デュアルインラインメモリモジュール（ＮＶ‐ＤＩＭＭ）等の、ストレージクラスメモリ（ＳＣＭ）ベースのメモリに適用され得る。このように、本開示の実施例は、ソフトウェアが、プラットフォームセキュリティ要件を損なうことなく、ＳＣＭのためのＮＶＤＩＭＭの直接アクセス型ストレージ（ＤＡＳ）モード等の、性能上の利点を利用することを可能にする。
【００２４】
図１Ａは、本開示の実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供するコンピューティングシステム１００の概略ブロック図である。仮想化システム１００は、いくつかのクライアントデバイス１０１Ａ〜１０１Ｃをサポートする仮想化サーバ１１０を含む。仮想化サーバ１１０は、ＴＤＲＭ１８０を実行する、少なくとも１つのプロセッサ１１２（処理デバイスとも称される）を含む。ＴＤＲＭ１８０は、ネットワークインタフェース１７０を介してクライアントデバイス１０１Ａ〜１０１Ｃによりアクセス可能な１又は複数のＴＤ１９０Ａ〜１９０Ｃをインスタンス化し得るＶＭＭ（ハイパーバイザとも称され得る）を含み得る。クライアントデバイス１０１Ａ〜１０１Ｃは、これらに限定されるものではないが、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ノートブックコンピュータ、携帯情報端末（ＰＤＡ）、サーバ、ワークステーション、携帯電話、モバイルコンピューティングデバイス、スマートフォン、インターネットアプライアンス、又は任意の他のタイプのコンピューティングデバイスを含み得る。
【００２５】
ＴＤとは、テナント（例えば、顧客）のワークロードを指し得る。テナントワークロードは、例えば、ＯＳ上で実行される他のリング３アプリケーションと共にＯＳだけを含んでもよく、又は他のリング３アプリケーションと共にＶＭＭ上で実行するＶＭを含んでもよい。本開示の実施例において、各ＴＤは、ＴＤと関連付けられたメモリ（コード及びデータを保持する）を暗号化するために、別個の専用のキーを用いてメモリにおいて暗号で分離され得る。
【００２６】
プロセッサ１１２は、１又は複数のコア１２０（処理コア１２０とも称される）、レンジレジスタ１３０、メモリ管理ユニット（ＭＭＵ）１４０、及び出力ポート１５０を含み得る。図１Ｂは、図１Ａに示すような、ＭＯＴ１６０及び１又は複数の信頼ドメイン制御構造（ＴＤＣＳ）１２４及び信頼ドメインスレッド制御構造（ＴＤＴＣＳ）１２８と通信する、ＴＤＲＭ１８０を実行するプロセッサコア１２０の詳細図の概略ブロック図である。ＴＤＴＣＳ及びＴＤ−ＴＣＳが、本明細書において交換可能に用いられ得る。プロセッサ１１２は、これらに限定されるものではないが、デスクトップコンピュータ、タブレットコンピュータ、ラップトップコンピュータ、ネットブック、ノートブックコンピュータ、ＰＤＡ、サーバ、ワークステーション、携帯電話、モバイルコンピューティングデバイス、スマートフォン、インターネットアプライアンス、又は任意の他のタイプのコンピューティングデバイスを含むシステムにおいて用いられ得る。別の実施例において、プロセッサ１１２は、ＳｏＣシステムにおいて用いられ得る。
【００２７】
コンピューティングシステム１００は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なＰＥＮＴＩＵＭ（登録商標）ＩＩＩ、ＰＥＮＴＩＵＭ（登録商標）４、Ｘｅｏｎ（商標）、Ｉｔａｎｉｕｍ、ＸＳｃａｌｅ（商標）及び／又はストロングアーム（登録商標）マイクロプロセッシングデバイスに基づいた処理システムを表すが、他のシステム（他のマイクロプロセッシングデバイス、エンジニアリングワークステーション、セットトップボックス等を有するＰＣを含む）も用いられてもよい。一実施例において、サンプルシステム１００は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なウィンドウズ（登録商標）オペレーティングシステムのバージョンを実行するが、他のオペレーティングシステム（例えば、ＵＮＩＸ（登録商標）及びＬｉｎｕｘ（登録商標））、エンベデッドソフトウェア、及び／又はグラフィックスユーザインタフェースも用いられてもよい。従って、本開示の実施例は、いかなる具体的なハードウェア回路及びソフトウェアの組み合わせにも限定されない。
【００２８】
１又は複数の処理コア１２０は、システムの命令を実行する。処理コア１２０は、これらに限定されるものではないが、命令をフェッチするプリフェッチロジック、命令をデコードするデコードロジック、命令を実行する実行ロジック等を含む。実施例において、コンピューティングシステム１００は、プロセッサ１１２等のコンポーネントを含み、データを処理するためのアルゴリズムを実行するロジックを含む実行ユニットを使用する。
【００２９】
仮想化サーバ１１０は、メインメモリ１１４及び二次記憶装置１１８を含み、プログラムバイナリ及びＯＳドライバイベントを格納する。二次記憶装置１１８におけるデータは、ページと称されるブロックに格納され得、各ページは、物理メモリアドレスのセットに対応し得る。仮想化サーバ１１０は、仮想メモリ管理を使用し得、この中で、ＴＤ１９０Ａ〜１９０Ｃ等の、コア１２０により実行されるアプリケーションが、ゲスト物理メモリアドレスにマッピングされた仮想メモリアドレスを用い、ゲスト物理メモリアドレスは、ＭＭＵ１４０によりホスト／システム物理アドレスにマッピングされる。
【００３０】
コア１２０は、ＭＭＵ１４０を実行し得、プロセッサ１１２上で（例えば、コア上で）実行されるソフトウェアによるより高速なアクセスのために、二次記憶装置１１８から、メインメモリ１１４（揮発性メモリ及び／又は不揮発性メモリを含む）にページをロードする。ＴＤ１９０Ａ〜１９０Ｃのうちの１つが、メインメモリ１１４にロードされたページの物理メモリアドレスに対応する仮想メモリアドレスにアクセスしようとする場合に、ＭＭＵ１４０は、要求されたデータを返す。コア１２０は、ＴＤＲＭ１８０のＶＭＭ部分を実行し得、ゲスト物理アドレスをメインメモリのホスト物理アドレスにトランスレートし、コア１２０がこれらのマッピングを読み取り、ウォークし、変換することを可能にするプロトコルのためのパラメータを提供する。
【００３１】
一実施例において、プロセッサ１１２は、ＴＤアーキテクチャ及びＴＤアーキテクチャのためのＩＳＡ拡張（ＴＤＸ）を実装する。ＴＤアーキテクチャは、ＴＤワークロード１９０Ａ〜１９０Ｃ間の、及びプロセッサ１１２上で実行されるＣＳＰソフトウェア（例えば、ＴＤＲＭ１８０及び／又はＣＳＰ  ＶＭＭ（例えば、ルートＶＭＭ１８０））からの分離を提供する。ＴＤアーキテクチャのコンポーネントは、１）ＭＫ−ＴＭＥエンジン１４５を介したメモリ暗号化、２）本明細書でＴＤＲＭ１８０と称されるリソース管理機能、３）ＭＯＴ１６０を介して、及びアクセス制御ＴＤ制御構造（即ち、ＴＤＣＳ１２４及びＴＤＴＣＳ１２８）を介して提供されるプロセッサ１１２における実行状態及びメモリ分離機能、を含み得る。ＴＤＸアーキテクチャは、ＴＤワークロード１９０Ａ〜１９０Ｃの安全なオペレーションのために、ＭＫ−ＴＭＥエンジン１４５、ＭＯＴ１６０、及びアクセス制御ＴＤ制御構造（即ち、ＴＤＣＳ１２４及びＴＤＴＣＳ１２８）を活用するＴＤ１９０Ａ〜１９０Ｃを配備する、プロセッサ１１２の能力を提供する。
【００３２】
本開示の実施例において、ＴＤＲＭ１８０は、ホストとして機能し、コア１２０及び他のプラットフォームハードウェアを完全に制御する。ＴＤＲＭ１８０は、ＴＤ１９０Ａ〜１９０Ｃにおけるソフトウェアに、ロジックプロセッサを割り当てる。しかしながら、ＴＤＲＭ１８０は、割り当てられたロジックプロセッサ上のＴＤ１９０Ａ〜１９０Ｃの実行状態にアクセスできない。同様に、ＴＤＲＭ１８０が、物理メモリ及びＩ／Ｏリソースを、ＴＤ１９０Ａ〜１９０Ｃに割り当てるが、別個の暗号化キー、及びメモリ上の他の完全性及びリプレイ制御に起因して、ＴＤ１９０Ａのメモリ状態にアクセスすることに関与していない。
【００３３】
別個の暗号化キーに関して、プロセッサは、ＭＫ−ＴＭＥエンジン１４５を利用し、実行中に用いられるメモリを暗号化（及び復号化）し得る。トータルメモリ暗号化（ＴＭＥ）では、コア１２０上で実行されるソフトウェアによる任意のメモリアクセスが、暗号化キーでメモリにおいて暗号化され得る。ＭＫ−ＴＭＥは、複数の暗号化キーの使用を可能にするＴＭＥの拡張機能である（サポートされるキーの数は、実装に依存する）。プロセッサ１１２は、ＭＫ−ＴＭＥエンジン１４５を利用し得、異なるページを、異なるＭＫ−ＴＭＥキーを用いて暗号化させる。ＭＫ−ＴＭＥエンジン１４５は、本明細書において説明されているＴＤアーキテクチャにおいて利用され得、各ＴＤ１９０Ａ〜１９０Ｃ毎に１又は複数の暗号化キーをサポートし、異なるＣＳＰ顧客ワークロード間の暗号分離を達成するのを助ける。例えば、ＭＫ−ＴＭＥエンジン１４５がＴＤアーキテクチャにおいて用いられる場合に、ＣＰＵは、ＴＤ（全てのページ）が、ＴＤ固有のキーを用いて暗号化されることをデフォルトで強制する。更に、ＴＤが、特定のＴＤページがプレーンテキストであるか、又はＣＳＰソフトウェアに対して不透明である、異なるエフェメラルキーを用いて暗号化されるかを更に選択し得る。 
【００３４】
各ＴＤ１９０Ａ〜１９０Ｃは、（例えば、仮想マシン拡張（ＶＭＸ）を用いる）ＶＭＭ、ＯＳ、及び／又は（ＯＳによりホスティングされる）アプリケーションソフトウェアからなるソフトウェアスタックをサポートするソフトウェア環境である。各ＴＤ１９０Ａ〜１９０Ｃは、他のＴＤ１９０Ａ〜１９０Ｃとは独立して動作し、プラットフォーム上のＴＤＲＭ１８０により割り当てられたロジックプロセッサ、メモリ、及びＩ／Ｏを用いる。ＴＤ１９０Ａ〜１９０Ｃにおいて実行されるソフトウェアは、ＴＤＲＭ１８０は、プラットフォームリソースの制御を保持できるように、より少ない特権で動作する。しかしながら、ＴＤＲＭは、規定された状況下で、ＴＤ１９０Ａ〜１９０Ｃの機密性又は完全性に影響を与えることはできない。ＴＤアーキテクチャ及びＴＤＸの更なる詳細が、図１Ｂを参照して以下でより詳細に説明される。
【００３５】
本開示の実施例は、コンピュータシステムに限定されるものではない。本開示の代替的な実施例は、ハンドヘルドデバイス及びエンベデッドアプリケーション等の他のデバイスにおいて用いられ得る。ハンドヘルドデバイスのいくつかの例には、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）、及びハンドヘルドＰＣが含まれる。エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号処理デバイス（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、又は少なくとも１つの実施例に係る１又は複数の命令を実行し得る任意の他のシステムを含み得る。
【００３６】
一実施例が、シングル処理デバイスのデスクトップ又はサーバシステムの文脈で説明され得るが、代替的な実施例は、マルチプロセッシングデバイスシステムに含まれてもよい。コンピューティングシステム１００は、「ハブ」システムアーキテクチャの例であり得る。コンピューティングシステム１００は、データ信号を処理するプロセッサ１１２を含む。１つの図示的な例として、プロセッサ１１２は、複合命令セットコンピュータ（ＣＩＳＣ）マイクロプロセッシングデバイス、縮小命令セットコンピューティング（ＲＩＳＣ）マイクロプロセッシングデバイス、超長命令語（ＶＬＩＷ）マイクロプロセッシングデバイス、命令セットの組み合わせを実施した処理デバイス、又は、例えばデジタル信号処理デバイス等、任意の他の処理デバイスを含む。プロセッサ１１２は、命令、データ又はそれらの任意の組み合わせを格納する、メインメモリ１１４及び／又は二次記憶装置１１８等、コンピューティングシステム１００におけるプロセッサ１１２と他のコンポーネントとの間のデータ信号を送信する処理デバイスバスに結合される。コンピューティングシステム１００の他のコンポーネントとしては、グラフィックスアクセラレータ、メモリコントローラハブ、Ｉ／Ｏコントローラハブ、無線トランシーバ、フラッシュＢＩＯＳ、ネットワークコントローラ、オーディオコントローラ、シリアル拡張ポート、Ｉ／Ｏコントローラ等が挙げられ得る。これらの要素は、当業者によく知られたこれらの従来の機能を実行する。
【００３７】
一実施例において、プロセッサ１１２は、レベル１（Ｌ１）内部キャッシュメモリを備える。アーキテクチャに応じて、プロセッサ１１２は、単一の内部キャッシュ又は複数のレベルの内部キャッシュを有し得る。他の実施例は、特定の実施例及び必要性に応じて、内部キャッシュ及び外部キャッシュの両方の組み合わせを含む。レジスタファイルは、整数レジスタ、浮動小数点レジスタ、ベクトルレジスタ、バンクドレジスタ、シャドーレジスタ、チェックポイントレジスタ、ステータスレジスタ、構成レジスタ及び命令ポインタレジスタを含む様々なレジスタに異なるタイプのデータを格納する。
【００３８】
実行ユニットは、浮動小数点ユニットを有し得、又は有しない場合があることに留意されたい。一実施例において、プロセッサ１１２は、マイクロコードを格納するマイクロコード（ｕｃｏｄｅ）ＲＯＭを含み、これは、実行されると、特定のマクロ命令のためのアルゴリズムを実行し、或いは複合シナリオを処理する。ここで、マイクロコードは、プロセッサ１１２のための論理バグ／修正を処理するべく、潜在的にアップデート可能である。 
【００３９】
実行ユニットの代替的な実施例は、マイクロコントローラ、エンベデッド処理デバイス、グラフィックスデバイス、ＤＳＰ及び他のタイプのロジック回路においても用いられ得る。システム１００は、メインメモリ１１４（メモリ１１４とも称され得る）を含む。メインメモリ１１４は、ＤＲＡＭデバイス、スタティックランダムアクセスメモリ（ＳＲＡＭ）デバイス、フラッシュメモリデバイス、又は他のメモリデバイスを含む。メインメモリ１１４は、プロセッサ１１２により実行されるべきデータ信号によって表される命令及び／又はデータを格納する。プロセッサ１１２は、処理デバイスバスを介してメインメモリ１１４に結合される。メモリコントローラハブ（ＭＣＨ）等のシステムロジックチップは、処理デバイスバス及びメインメモリ１１４に結合され得る。ＭＣＨは、命令及びデータの格納、並びにグラフィックスコマンド、データ及びテクスチャの格納用に、高帯域幅メモリパスをメインメモリ１１４に提供し得る。また、ＭＣＨは例えば、プロセッサ１１２、メインメモリ１１４、及びシステム１００内の他のコンポーネントの間でデータ信号を導き、処理デバイスバス、メモリ１１４、及びシステムＩ／Ｏの間でデータ信号をブリッジするように用いられ得る。ＭＣＨは、メモリインタフェースを介してメモリ１１４に結合され得る。いくつかの実施例において、システムロジックチップは、アクセラレーテッドグラフィックスポート（ＡＧＰ）相互接続を介してグラフィックスコントローラに結合するためのグラフィックスポートを提供し得る。
【００４０】
コンピューティングシステム１００は、Ｉ／Ｏコントローラハブ（ＩＣＨ）も含み得る。ＩＣＨは、ローカルＩ／Ｏバスを介して、いくつかのＩ／Ｏデバイスに直接的接続を提供し得る。ローカルＩ／Ｏバスは、周辺装置をメモリ１１４、チップセット、及びプロセッサ１１２に接続するための高速Ｉ／Ｏバスである。いくつかの例は、オーディオコントローラ、ファームウェアハブ（フラッシュＢＩＯＳ）、無線トランシーバ、データストレージ、ユーザ入力及びキーボードインタフェースを含むレガシーＩ／Ｏコントローラ、ユニバーサルシリアルバス（ＵＳＢ）等のシリアル拡張ポート、及びネットワークコントローラである。データストレージデバイスは、ハードディスクドライブ、フロッピーディスクドライブ、ＣＤ‐ＲＯＭデバイス、フラッシュメモリデバイス、又は他の大容量ストレージデバイスを備え得る。
【００４１】
システムの別の実施例については、上記の処理デバイスコア１２０により実行される命令は、システムオンチップと共に用いられ得る。システムオンチップの一実施例は、処理デバイス及びメモリから構成される。そのような１つのシステムのためのメモリは、フラッシュメモリである。フラッシュメモリは、処理デバイス及び他のシステムコンポーネントと同一のダイ上に位置し得る。更に、メモリコントローラ又はグラフィックスコントローラ等の他のロジックブロックも、システムオンチップ上に位置付けられ得る。
【００４２】
図１Ｂを参照すると、この図は、本開示の一実施例に係る、図１Ａのプロセッサ１１２のブロック図を示す。一実施例において、プロセッサ１１２は、単一のコア１２０を介して、又はいくつかのコア１２０にわたってアプリケーションスタック１０１を実行し得る。上述のように、プロセッサ１１２は、ＴＤアーキテクチャ及びＴＤＸを提供し得、信頼できないクラウドサービスプロバイダ（ＣＳＰ）インフラストラクチャにおいて、顧客／テナント（即ち、ＴＤ１９０Ａ）において実行される顧客ソフトウェアのための機密性（及び完全性）を提供する。ＴＤアーキテクチャは、ＭＯＴ１６０を介したメモリ分離、ＴＤＣＳ１２４及び／又はＴＤＴＣＳ１２８を介してＣＰＵキー管理を組み込むＣＰＵ状態分離、及びＴＤ１９０ＡソフトウェアのためのＣＰＵ測定インフラストラクチャを提供する。
【００４３】
一実施例において、ＴＤアーキテクチャは、ＯＳ及びＯＳ管理アプリケーション（仮想化及び非仮想化）の機密オペレーションをサポートするＩＳＡ拡張（ＴＤＸと称される）を提供する。ＴＤＸがイネーブルされた、プロセッサ１１２を含むもの等のプラットフォームが、ＴＤと称される複数の暗号化されたコンテキストとして機能し得る。説明を容易にするために、単一のＴＤ１９０Ａが図１Ｂにおいて示される。各ＴＤ１９０Ａは、ＶＭＭ、ＶＭ、ＯＳ、及び／又はアプリケーションを実行し得る。例えば、ＴＤ１９０Ａは、ＶＭ１９５Ａをホスティングするように示される。
【００４４】
一実施例において、ＴＤＲＭ１８０は、ＶＭＭ機能（例えば、ルートＶＭＭ）の一部として含み得る。ＶＭＭが、ソフトウェア、ファームウェア、又はハードウェアを指し得、ＶＭ１９５Ａ等の仮想マシン（ＶＭ）を作成、実行、及び管理する。ＶＭＭが、１又は複数のＶＭを作成、実行、及び管理し得ることに留意されたい。示されるとおり、ＶＭＭ１８０は、処理デバイス１１２の１又は複数の処理コア１２０のコンポーネントとして含まれる。ＶＭＭ１８０は、ＶＭ１９５Ａを作成及び実行し、１又は複数の仮想プロセッサ（例えば、ｖＣＰＵ）をＶＭ１９５Ａに割り当て得る。ＶＭ１９５Ａは、本明細書でゲスト１９５Ａと称され得る。ＶＭＭは、ＶＭ１９５Ａが、図１Ａのコンピューティングシステム１００等の、コンピューティングシステムの下層のハードウェアにアクセスすることを可能にし得る。ＶＭ１９５Ａは、ゲストオペレーティングシステム（ＯＳ）を実行し得る。ＶＭＭは、ゲストＯＳの実行を管理し得る。ゲストＯＳは、コンピューティングシステム１００の、ハードウェア及びソフトウェアリソースの下層に対するＶＭ１９５Ａの仮想プロセッサのアクセスを制御するために機能し得る。処理デバイス１１２上で動作する様々なＶＭ１９５Ａがある場合に、ＶＭＭは、様々なゲスト上で実行されるゲストＯＳの各々を管理し得ることに留意されたい。いくつかの実施例において、ＶＭＭが、ＴＤ１９０Ａで実施され得、ＶＭ１９５Ａを管理する。このＶＭＭは、テナントＶＭＭ及び／又は非ルートＶＭＭと称され得、以下で更に詳細に検討される。
【００４５】
ＴＤＸはまた、ＴＤＲＭ１８０と称されるＴＤアーキテクチャのＴＤ管理層のためのプログラミングインタフェースを提供する。ＴＤＲＭが、ＣＳＰ／ルートＶＭＭの一部として実施され得る。ＴＤＲＭ１８０は、ＴＤ１９０Ａの動作を管理する。ＴＤＲＭ１８０は、ＣＰＵ、メモリ、及び入／出力（Ｉ／Ｏ）等のリソースをＴＤ１９０Ａに割り当て、管理し得るが、ＴＤＲＭ１８０は、ＴＤ１９０ＡのＴＣＢの外部で動作するように設計される。システムのＴＣＢは、システムの動作全体のために信頼に影響を及ぼす能力を有するハードウェア、ファームウェア、及び／又はソフトウェアコンポーネントのセットを指す。
【００４６】
一実施例において、ＴＤアーキテクチャは、従って、ＴＤ１９０Ａにおいて実行されるソフトウェアを保護する機能である。上述のように、ＴＤアーキテクチャのコンポーネントには、１）ＴＭＥに対するマルチキー拡張を有するＴＭＥエンジン（例えば、図１ＡのＭＫ−ＴＭＥエンジン１４５）を介したメモリ暗号化、２）ソフトウェアリソース管理層（ＴＤＲＭ１８０）、及び３）ＴＤアーキテクチャにおける実行状態及びメモリ分離機能、が含まれ得る。
【００４７】
図２Ａは、ＴＤアーキテクチャ２００を実施する例示的なコンピューティングシステムを示すブロック図である。ＴＤアーキテクチャ２００は、２つのタイプのＴＤをサポートする。第１のタイプのＴＤは、テナントが、機密性を強制するＣＳＰを信頼し、本開示の実施例のＴＤアーキテクチャを実装しないＴＤである。このタイプのレガシーＴＤは、ＴＤ１  ２１０として示される。ＴＤ１  ２１０は、ＣＳＰ  ＶＭＭ管理ＴＣＢ２０２を有するＣＳＰ  ＴＤである。ＴＤ１  ２１０は、ＣＳＰ  ＶＭ２１４及び／又は１又は複数のテナントＶＭ２１６Ａ、２１６Ｂを管理するＣＳＰ  ＶＭＭ２１２を含み得る。この場合、テナントＶＭ２１６Ａ、２１６Ｂは、ＶＭ２１６Ａ、２１６ＢのＴＣＢ２０２内にある、ＣＳＰ  ＶＭＭ２１２により管理される。 本開示の実施例において、テナントＶＭ２１６Ａ、２１６Ｂは、このモデルにおいてＴＭＥ又はＭＫ−ＴＭＥを介してメモリ暗号化を更に活用し得る（以下で更に説明される）。
【００４８】
他のタイプのＴＤは、テナントが、機密性を強制するＣＳＰを信頼せず、従って、本開示の実施例のＴＤアーキテクチャを有するＣＰＵに依存するＴＤである。このタイプのＴＤは、ＴＤ２  ２２０及びＴＤ３  ２３０として２つの変形例で示される。ＴＤ２  ２２０は、管理されたテナントＶＭ２２５Ａ、２２５Ｂに対してＴＤ２  ２２０において実行されるテナントＶＭＭ（非ルート）２２２により利用されている仮想化モード（ＶＭＸ等）と共に示される。ＴＤ３  ２３０は、仮想化モードを用いるソフトウェアを含まないが、代わりに、直接ＴＤ３  ２３０における啓発された（ｅｎｌｉｇｈｔｅｎｅｄ）ＯＳ２３５を実行する。ＴＤ２  ２２０及びＴＤ３  ２３０は、本開示の実施例において説明されるようなハードウェア強制ＴＣＢ２０４を有するテナントＴＤである。一実施例において、ＴＤ２  ２２０又はＴＤ３  ２３０は、図１Ａ及び／又は図１Ｂに関して説明されているＴＤ１９０Ａと同じであり得る。
【００４９】
ＴＤＲＭ１８０は、リソースの割り当てを含む、３つのタイプのＴＤ２１０、２２０、２３０全てのライフサイクルを管理する。しかしながら、ＴＤＲＭ１８０は、ＴＤタイプＴＤ２  ２２０及びＴＤ３  ２３０のためのＴＣＢにはない。ＴＤアーキテクチャ２００は、システム上でアクティブなＴＤの数又は組み合わせに対して任意のアーキテクチャの制約を加えない。しかしながら、特定の実施例におけるソフトウェア及び特定のハードウェア制限が、他の制約に起因してシステム上で同時に実行されるＴＤの数を限定し得る。 
【００５０】
図２Ｂは、ＴＤアーキテクチャ２５０、及びＴＤ２２０とＴＤＲＭ１８０との間のやり取りの例を示すブロック図である。一実施例において、ＴＤ２２０及びＴＤＲＭ１８０は、図２Ａに関して説明されているそれらの対応するものと同一である。ＴＤアーキテクチャ２５０は、図１Ａ及び図１Ｂのコンピューティングデバイス１００により提供されるＴＤアーキテクチャ、及び／又は図２ＡのＴＤアーキテクチャ２００と同じであり得る。ＴＤアーキテクチャ２５０は、システム上でアクティブなＴＤのライフサイクルを管理する層を提供する。ＴＤに関するプロセッササポートが、ＴＤＸオペレーションと呼ばれるプロセッサオペレーションの形態により提供される。ＴＤＸオペレーションには、リソースマネージャオペレーション、及びテナントオペレーションの２つの種類がある。一般に、ＴＤＲＭ１８０は、ＴＤＸリソースマネージャオペレーションで実行し、ＴＤ２  ２２０等のＴＤは、ＴＤＸテナントオペレーションで実行する。リソースマネージャオペレーションとテナントオペレーションとの間の遷移は、ＴＤＸ遷移と呼ばれる。
【００５１】
ＴＤＸ遷移には、ＴＤエントリ２７０及びＴＤ終了２６０の２つの種類がある。ＴＤＸリソースマネージャオペレーションからＴＤＸテナントオペレーションへの遷移は、ＴＤエントリ２７０と呼ばれる。ＴＤＸテナントオペレーションからＴＤＸリソースマネージャオペレーションへの遷移は、ＴＤ終了２６０と呼ばれる。
【００５２】
ＴＤＸリソースマネージャオペレーションにおけるプロセッサの挙動は、それが、ＴＤＸオペレーションの外部にあるときと類似である。主要な相違は、ＴＤＸオペレーション（ＴＤＸ命令）のセットが、利用可能であること、特定の制御レジスタにロードされ得る値が、限定され、ＴＤＲＭ１８０のモード及び能力を制限すること、である。
【００５３】
ＴＤＸテナントオペレーションにおけるプロセッサの挙動は、分離を容易にするために同様に制限される。例えば、通常のオペレーションの代わりに、特定のイベントが、ＴＤＲＭ１８０にＴＤ終了２６０を引き起こす。これらのＴＤ終了２６０は、ＴＤＲＭ１８０が、ＴＤ２２０の挙動又は状態を修正することをできないようにする。ＴＤＲＭ１８０は、プラットフォーム機能を用い、プラットフォームリソースの制御を保持する。ＴＤ２２０において実行されるソフトウェアは、ソフトウェアビジブル情報を用い得、それがＴＤ２２０において実行されていると決定し、ＴＤ２２０にロードされた追加のソフトウェア上で、ローカル測定ポリシーを強制し得る。しかしながら、ＴＤ２２０のセキュリティ状態を検証することは、機密性を保証するために遠隔の証明団体により実行される。
【００５４】
ＴＤアーキテクチャ２５０は、ＴＤ２２０において実行される場合に仮想化に依存するソフトウェアに対する互換性の影響を最小限にするように設計され、従って、テナントオペレーションにおいて実行されるＶＭ２２５Ａ、２２５Ｂと、テナントオペレーションにおいて実行されるテナントＶＭＭ２２２との間のほとんどのやり取りを、変化しないままにする。ＴＤ２２０にＶＭＭ２２２が存在しない場合、ＶＭ  ＯＳが、ルートＶＭＭとしてＴＤＲＭ１８０と共に機能するように修正され得る。
【００５５】
一実施例において、ＴＤＲＭ１８０は、ＴＤ終了２６０に、例えば、ＴＤ２２０を終了させる、又はメモリリソースを管理させる（例えば、割り当てられたメモリリソースをもたらす、空きメモリリソースを要求する、等）ように明示的に決定し得る。ＴＤアーキテクチャ２５０はまた、ＴＤＲＭ１８０に、ＴＤ終了２６０をプリエンプションに強制する能力を提供する。ＴＤ終了２６０では、ＴＤアーキテクチャは、ＴＤ２２０の実行状態が、ＴＤ２２０に割り当てられたＣＰＵアクセス制御メモリに保存され、ＴＤＲＭ１８０又は他のＴＤからＴＤ状態の機密性を保護するために、ＴＤＲＭ１８０又は他のＴＤに見えないＴＤ２２０の一意の暗号化キー（以下で更に検討される）を用いて暗号化されることを強制する。ＴＤ実行状態は、メモリ上の完全性制御を介してスプーフィング、再マッピング、及び／又はリプレイから同様に保護され得る。
【００５６】
ＴＤ入力２７０は、ＴＤ終了２６０に対する相補的なイベントである。例えば、ＴＤＲＭ１８０がロジックプロセッサ上で実行されるようにＴＤ２２０をスケジューリングし、実行をＴＤ２２０において実行されるソフトウェアに転送する場合に、ＴＤ入力２７０が発生し得る。ＴＤ入力２７０の間に、ＴＤアーキテクチャ２５０は、ＴＤＲＭ１８０の実行状態が、ＴＤＲＭにより所有されるメモリに保存されることを強制し、これは、ＴＤＲＭ１８０による単独の使用のために割り当てられた一意の暗号化キーを用いて暗号化される。
【００５７】
ＴＤ２２０等のＴＤは、ＴＤＣＲＥＡＴＥ（ＴＤＣＳを作成する）、ＴＤＴＣＲＥＡＴＥ（ＴＤ−ＴＣＳを作成する）、及びＴＤＡＤＤＰＡＧＥ命令を用いて、ＴＤＲＭ１８０によりセットアップされ得、ＴＤＲＭ１８０は、ＴＤ２２０に属するメモリを、ＴＤＲＭ１８０又は他のＴＤに見えない又はアクセス不可能であるＴＤの一意の暗号化キーを用いて暗号化させる。ＴＤに属する任意の命令を実行する前に、全てのＴＤメモリが、ＴＤの一意のキーを用いて暗号化される。特定の命令名称が本明細書で参照されるが、これらの命令に関する他の名称が、本開示の実施例において利用され得、本明細書で提供されている特定の名称に限定されない。
【００５８】
一実施例において、ＴＤＲＭ１８０は、署名検証後に小さいソフトウェアイメージ（ＩＢＢ又は初期ブートブロックに類似）で各ＴＤ２２０を起動し、信頼のプラットフォームルートを用いて（後続の証明のために）ＩＢＢ測定を記録し得る。ＴＤ２２０の測定された起動を完了し、ＴＤＲＭ１８０から追加のリソースを要求することを担当するのは、ＴＤ２２０において実行されるＩＢＢソフトウェアである。ＴＤ２２０は、ＴＤ２２０内で実行される場合に、ＴＤ２２０全体に単一の暗号化キーを用いるか、又は異なるテナントＶＭ２２５Ａ、２２５Ｂ（及び／又はコンテナ又はＮＶＲＡＭ等の異なるメモリリソース）に追加の暗号化キーを用いるか、の選択肢を有する。従って、ＴＤ２２０が最初にセットアップされる場合に、ＴＤ２２０は、専用のＣＰＵ生成ＭＫ−ＴＭＥキーを用いている。その後、ＴＤ２２０は、ＴＤ２２０内で動作する各テナントソフトウェア管理コンテキスト（例えば、テナントＶＭ２２５Ａ、２２５Ｂ、コンテナ又は他のメモリタイプ）に関して、追加のＭＫ−ＴＭＥ暗号化キーを任意でセットアップし得る。
【００５９】
ＣＳＰの両方のＶＭＭ（例えば、ＴＤＲＭ  ルートＶＭＭ１８０及びテナントＶＭＭ２２２）に対するソフトウェア互換性影響を最小限にするべく、仮想化（例えば、ＶＭＸ）オペレーションは、ＴＤアーキテクチャ２５０においてＴＤ２２０内で修正されないままであり得る。同様に、拡張ページテーブル（ＥＰＴ）管理等のＶＭＭソフトウェアのオペレーションは、テナントＶＭＭ２２２の制御下のままであり得る（それが、ＴＤ２２０においてアクティブであり、ＴＤＲＭ１８０により管理されない場合）。ＴＤＲＭ１８０が各ＴＤ２２０に関して物理メモリを割り当てるので、ＴＤアーキテクチャ２５０は、ＭＯＴ（即ち、図１Ａ及び図１Ｂに関して説明されているＭＯＴ１６０）を含む。プロセッサ１１２は、ＴＤＲＭ１８０管理ＭＯＴを参照し、メモリの割り当てをＴＤ２２０に割り当てる。これが、ＴＤＲＭ１８０に、割り当てられたＴＤメモリに常駐するデータへのいかなる可視性も有することなく、リソースとしてメモリを管理する完全な能力を可能にする。いくつかの実施例において、上述のように、プラットフォーム（例えば、ルート）ＶＭＭ及びＴＤＲＭ１８０は、同一の暗号化キードメイン内にあり得、従って、メモリ管理及びスケジューラ機能を共有する（しかし、依然としてテナントのＴＣＢの外部のままである）。
【００６０】
図３は、ＴＤアーキテクチャ３００の別の例を示すブロック図である。ＴＤアーキテクチャ３００は、ＴＤに関するＩ／Ｏ概念を示す。一実施例において、ＴＤアーキテクチャ３００は、全てのＩ／Ｏデバイス（例えば、ＮＩＣ３２０、ストレージ３３０、単一ルート入／出力仮想化（ＳＲ‐ＩＯＶ）ＮＩＣ３４０、等）が、ＣＳＰ及びＴＤＲＭを信頼するＴＤ１  ２１０（例えば、レガシーＴＤ１  ２１０）に取り付けられることを可能にし得る。一実施例において、ＴＤアーキテクチャ３００は、（ＳＲ‐ＩＯＶ及び拡張可能Ｉ／Ｏを含む）デバイスの、ＣＳＰソフトウェアを信頼しない、テナントＴＤ２  ２２０等のＴＤ（例えば、テナントＴＤ２  ２２０）への直接割り当てを可能にし得ない。代わりに、ＴＤＲＭ１８０は、ＴＤ１  ２１０等の、ＣＳＰ  ＴＤと、テナントＴＤ２  ２２０等の、他のＴＤとの間でメモリ３１０を共有し、非ＣＳＰ  ＴＤ（例えば、テナントＴＤ２  ２２０）において合成（「ｓｙｎ」）デバイス（例えば、ｓｙｎ  ＮＩＣ３２５、ｓｙｎ  ストレージ３３５）を実施する機能を提供し得る。いくつかの実施例において、テナントＴＤ２  ２２０等の、ＣＳＰソフトウェアを信頼しないテナントＴＤが、Ｉ／Ｏデータの保護を担当し得る。ＴＤアーキテクチャ３００は、共有メモリ３１０を介して公開されたＩ／Ｏデータを保護し得ない。いくつかの実施例において、Ｉ／Ｏデータが、通信エンドポイント間の既存のセキュリティプロトコルを用いて保護され得る。
【００６１】
図１Ｂに戻って参照すると、ＭＯＴ１６０（ＴＤ‐ＭＯＴと称され得る）は、プロセッサ１１２により管理される、テーブル等の構造であり、ＴＤ１９０Ａ等の、実行しているＴＤへ、物理メモリページの割り当てを強制する。プロセッサ１１２はまた、ＭＯＴ１６０を用い、テナントＴＤ１９０Ａ又はＴＤＲＭ１８０として動作するソフトウェアにより参照される物理アドレスが、それに明示的に割り当てられていないメモリにアクセスできないことを強制する。
【００６２】
ＭＯＴ１６０は、以下の特性を強制する。第１に、ＴＤ１９０Ａの外部のソフトウェアは、異なるＴＤ（これは、ＴＤＲＭ１８０を含む）に属する任意のメモリに、プレーンテキストでアクセス（読み取り／書き込み／実行）できるべきでない。第２に、ＭＯＴ１６０を介してＴＤ１９０Ａ等の特定のＴＤに割り当てられたメモリページは、（プロセッサが、メモリが割り当てられたＴＤを実行している）システムにおける任意のプロセッサからアクセス可能であるべきである。
【００６３】
ＭＯＴ１６０構造は、メモリの各４ＫＢページのメタデータ属性を保持するために用いられる。追加のページサイズ（２ＭＢ、１ＧＢ）のために追加の構造が規定され得る。メモリの各４ＫＢページのためのメタデータは、物理ページアドレスにより直接インデックス付けされる。他の実施例において、他のページサイズが、（ページテーブルのような）階層構造によりサポートされ得る。
【００６４】
ＭＯＴ１６０において参照される４ＫＢページが、ＴＤ１９０Ａの１つの実行インスタンスに属し得る。ＭＯＴ１６０において参照される４ＫＢページが、有効なメモリであってもよく、又は、無効であるとマークされてもよい（従って、例えばＩＯであり得る）。一実施例において、各ＴＤインスタンス１９０Ａが、そのＴＤ１９０Ａに関するＴＤＣＳ１２４を保持する１つのページを含む。
【００６５】
一実施例において、ＭＯＴ１６０は、メモリの４ＫＢの境界に位置合わせされ、プラットフォーム初期化後、ソフトウェアによるアクセスから保護されたメモリの物理的に連続した領域を占有する。実施例において、ＭＯＴは、マイクロアーキテクチャ構造であり、ソフトウェアから直接アクセスされ得ない。アーキテクチャ的に、ＭＯＴ１６０は、ホスト物理メモリの各４ＫＢページに関して以下のセキュリティ属性を保持する：
―ページステータス１６２―有効／無効ビット（ページが、有効なメモリであるか否か）
―ページカテゴリ―ＤＲＡＭ、ＮＶＲＡＭ、ＩＯ、予約
―ページ状態１６３―（４ビットベクトル）ページが次の場合、指定する、
―ビット１−フリー（ＴＤに割り当てられておらず、ＴＤＲＭにより用いられていないページ）
―ビット２−割り当て済（ＴＤ又はＴＤＲＭに割り当てられたページ）
―ビット３−ブロック済（解放／（再）割り当ての処理にある間にブロックされたページ）
―ビット４−ペンディング（ＴＤに割り当てられているが、まだＴＤにより受け入れられていないダイナミックなページ）
―ＴＤＩＤ１６４（４０ビット）ページを特定の一意ＴＤに割り当てるＴＤ識別子。ＴＤＣＳのアドレス。
【００６６】
いくつかの実施例において、拡張ＭＯＴ１６０エントリがサポートされ得、次を更に含む。
【００６７】
―ページキーＩＤ１６５―（８ビット―サイズは実装固有である）ＴＤにより参照される物理メモリのためのプロセッサページウォーク中にフェッチされたキーＩＤと一致すると予期されるページ毎暗号化キーを指定する。ＭＯＴ１６０エントリが拡張エントリでない場合、ページキーＩＤは、ＴＤＣＳ１２４から導出される。ＭＯＴにおいて指定されたキーＩＤ値のうちの１つが、ＴＤＲＭ（又はルートＶＭＭ）とメモリコンテンツを共有するために用いられ得る。共有ページは、入出力バッファがＴＤＲＭにより管理されるハードウェアデバイスに送信されるように保持し得る。同様に、共有ページが、ＴＤＲＭによりＴＤに公開される仮想デバイスのエミュレーションのために用いられ得る。
【００６８】
―ゲスト物理アドレス１６６―（５２ビット）ＴＤにおいて実行されるソフトウェアにより用いられる予期されるゲスト物理アドレスを指定する。（このフィールドは、ＴＤＲＭ１８０がメモリ再マッピングを実行し、メモリをスワップする能力を実施することを予期する場合に用いられる）。
【００６９】
―ゲスト許可１６７―最終ページにアサートする（ユーザ及びスーパーバイザーのための読み取り、書き込み、実行）。ＴＤにおいて実行されるＶＭＭをサポートするためにこれらの許可ビットの複数のセットがあり得る。
【００７０】
ＭＯＴ１６０は、ＴＤＸがプロセッサ１１２においてイネーブルされる場合に（例えば、ＣＰＵＩＤベースの列挙の後、ＣＲ４イネーブルビットを介して）イネーブルされ得る。一旦ＭＯＴ１６０がイネーブルされると、ＭＯＴ１６０は、プロセッサ１１２により用いられ得、ＴＤＲＭ１８０を含む、ソフトウェアにより開始された全ての物理メモリアクセスに関するメモリアクセス制御を強制し得る。一実施例において、アクセス制御は、ソフトウェアによりなされるメモリアクセスに関するページウォーク中に強制される。テナントＴＤ１９０Ａ又はＴＤＲＭ１８０に割り当てられていないメモリに対する、プロセッサ１１２により実行される物理メモリアクセスは、Ａｂｏｒｔページセマンティクスと共に失敗する。
【００７１】
本開示の実施例において、ＴＤＲＭ１８０は、以下の命令リーフと共にＭＯＴオペレーション命令（ＴＤＭＯＴＯＰ）を用いてＭＯＴ１６０を介してメモリリソースを管理する。
【００７２】
ページをＭＯＴに追加する（ＴＤＭＯＴＡＤＤＰＡＧＥ）―ホスト物理アドレス（ＨＰＡ）に対応するフリーＭＯＴ１６０エントリを、ＴＤＩＤにより指定されたＴＤ１９０Ａに（排他的に）割り当てられているとマークする。任意の他の以前のページ状態は、障害を引き起こす。この命令は、このＨＰＡへのマッピングをキャッシュしている他のＴＤ１９０Ａがないことを確認するために、クロススレッドＴＬＢシュートダウンを強制する。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。ＴＤＲＭ１８０が拡張ＭＯＴをイネーブルにした場合、次に、命令は、指定されたＨＰＡにマッピングされる初期ゲスト物理アドレス（ＧＰＡ）を指定し得る。プロセッサ１１２は、ＴＤＲＭ１８０により管理されるＥＰＴ構造をウォークすることにより、ＧＰＡがＨＰＡにマッピングされていることを検証する。ページをＴＤに割り当てる（ＴＤＭＯＴＡＵＧＰＡＧＥ）がページの測定をキャプチャしない、追加ページの変形例が実施され得る。
【００７３】
ページをＭＯＴから破棄する（ＴＤＭＯＴＲＥＶＯＫＥＰＡＧＥ）―割り当てられたページをフリーページとしてマークする。この命令は、クロススレッドＴＬＢシュートダウンを強制し、後続のＴＤ１９０Ａアクセスが、ＨＰＡ所有権をチェックすること、及びページコンテンツが、プロセッサ１１２によりクリアされることを確認する。ＴＬＢ充填中にＭＯＴ１６０ページ障害を経験するＴＤ１９０Ａアクセスは、プロセッサ１１２に、ＴＤＣＳ１２４を無効化させ、これは、更なるＴＤがＴＤ１９０Ａに入ることを防止する。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。
【００７４】
ＭＯＴにおいてページをブロックする（ＴＤＭＯＴＢＬＯＣＫＰＡＧＥ）―ＨＰＡに対応するフリー又は割り当てられたＭＯＴ１６０エントリを、ソフトウェア使用のためにブロックされたものとしてマークする。任意の他の以前のページ状態が、ＴＤＲＭ１８０障害を引き起こす。この命令は、クロススレッドＴＬＢシュートダウンを強制し、後続のＴＤ１９０Ａアクセスが、ＨＰＡ所有権をチェックすることを確認する。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。
【００７５】
ＭＯＴにおいてページをブロック解除する（ＴＤＭＯＴＵＮＢＬＯＣＫＰＡＧＥ）―ＨＰＡに対応するブロックされたＭＯＴ１６０エントリを、ソフトウェア使用／割り当てに関して有効であるとマークする。任意の他の以前のページ状態が、障害を引き起こす。この命令リーフは、ＴＤＲＭ１８０により呼び出され得る。 
【００７６】
ＴＤソフトウェアがメモリにおける任意の秘密をクリアした後、ＴＤ１９０Ａに割り当てられたメモリが、明示的なＴＤＣＡＬＬを介してＴＤＲＭ１８０に返され得る。（１）ＴＤ１９０ＡにおけるＶＭＭが、ＴＤ内で使用中の再マッピングされたＧＰＡを有し得る、及び／又は（２）ＴＤＲＭ１８０が、ＴＤ１９０Ａに割り当てられたメモリをスワップしたい場合に、ＭＯＴ１６０の拡張オペレーションが用いられる。上記の両方の場合において、ＴＤＲＭ１８０  ＥＰＴ違反が、ページウォーク中に用いられた不一致のＧＰＡで生成される。以下の拡張ＭＯＴ命令リーフは、上記の場合に対応する。
【００７７】
ＭＯＴにおいてＰＧＡを修正する（ＴＤＭＯＴＭＯＤＰＭＡ）―上記の第１の場合を処理するため、ＴＤＲＭ１８０は、この拡張ＭＯＴ１６０命令を利用し、ＴＤ１９０Ａにより用いられるページに関するＭＯＴ１６０セキュリティ属性を更新する。ＴＤＲＭ１８０は、ＴＤ  ＶＭＭ管理ＥＰＴ構造をウォークするためにＣＰＵにより用いられるＧＰＡを提供し、ＴＤ  ＶＭＭにより参照される新しいＧＰＡを取得する。プロセッサ１１２は、次に、ＴＤＲＭ１８０ＥＰＴのウォークを実行し、参照されるＨＰＡを見つけ、ページがアクティブなＴＤ１９０Ａに割り当てられている場合、予期されるＧＰＡ属性は、フォールトしたウォーク中に報告された不一致のＧＰＡと一致するように更新される。ＴＤＲＭ１８０は、次にＴＤ１９０Ａを再開し得る。
【００７８】
上記の第２の場合に関して、ＴＤＲＭ１８０は、既にそのＥＰＴ構造からＧＰＡをアンマッピングし、障害中に、ＭＯＴにおいてページをブロックする命令（ＴＤＭＯＴＢＬＯＣＫＰＡＧＥ）を用いるべきであり、ページを、ソフトウェアとして使用不能（フラッシュあり）としてマークし、拡張ＭＯＴ１６０命令を用いるべきである。ＴＤＥＸＴＲＡＣＴ及びＴＤＩＮＪＥＣＴは、新しく割り当てられたＨＰＡに関して復元され得る、暗号で保護されたスワップ可能なバージョンのページコンテンツを作成する。ＴＤＥＸＴＲＡＣＴ（及びＴＤＩＮＪＥＣＴ）命令は、スワップされたＴＤページのための暗号で署名された完全性情報をキャプチャ（及びそれぞれ検証）し、復元される場合にそれらが検証され得るようにする。暗号情報は、悪意のあるＴＤＲＭが古いページをリプレイできないようにするカウンタを含み得る。
【００７９】
一実施例において、ＴＤＲＭ１８０の初期化は、例えば、ＣＲ４．ＴＤＸＥビットをセットして、又はＶＭＸＯＮ中にＶＭＸ  ＭＳＲ制御ビットを介して、プロセッサ１１２におけるＴＤＸをイネーブルにすることから開始する。ＴＤＸサポートは、ＣＰＵＩＤを介して列挙され得る。一旦ＴＤＸがイネーブルされると、ＴＤＲＭ１８０は、ＴＤＸモードをイネーブルにする命令（ＴＤＸＯＮ）を実行（ｐｅｒｆｏｒｍｓ）（即ち、実行（ｅｘｅｃｕｔｅｓ））し、プロセッサのＴＤＸモードをイネーブルにする。あるいは、モードは、ＶＭＸＯＮの一部としてイネーブルされ得る。ＴＤＸＯＮは、ロジックプロセッサがＴＤＲＭ１８０状態領域のために用いる自然に位置合わせされた４‐ＫＢのメモリ領域を登録する。一実施例において、ＴＤＲＭ１８０状態領域は、ＴＤＲＭ状態１８５としてＴＤＲＭ制御構造（ＴＤＲＣＳ）１８２に格納される。ＴＤ−ＲＣＳはまた、ホスト状態、制御及びＴＤ終了情報のみを含む新しいタイプのＶＭＣＳとして実施され得る。一実施例において、ＴＤＣＳ及びＴＤ−ＴＣＳは、ＭＯＴ１６０を介してアクセス制御される（例えば、ＭＯＴ１６０に格納された暗号化キーＩＤが、メモリアクセス制御を強制するために用いられる）。別の実施例において、ＴＤＣＳ及びＴＤ−ＴＣＳは、ソフトウェアアクセスにアクセス不可能であるプロセッサ１１２の、レンジレジスタ１３０等の制限されたレンジレジスタにおけるストレージを介してアクセス制御される。ＴＤＲＭ状態１８５は、以下で更に詳細に説明される。ＴＤＲＣＳ１８２のために用いられる４ＫＢページの物理アドレスは、ＴＤＸＯＮへのオペランドにおいて提供される。ＴＤＲＭ１８０は、このページを、ＭＯＴ１６０を介した全てのＴＤ１９０Ａにアクセス不可能とする。ＴＤＲＭ１８０は、ＴＤＲＭ状態１８５を初期化及びＴＤＲＭ状態１８５にアクセスするべきである。ＴＤＲＭ１８０は、各ロジックプロセッサに関して別個のＴＤＲＭ状態１８５を用いるべきである。
【００８０】
一実施例において、ＴＤＲＭ１８０により初期化され、ＴＤ終了でプロセッサ１１２によりロードされる例示的なＴＤＲＭ状態１８５は、これに限定されるものではないが、表１において以下で示される以下の状態を含み得る。
【表１】
2019053720.tif 000028
【００８１】
以下のプロセッサ状態は、ＴＤ終了中に自動的にセット／固定される（従って、ＴＤ−ＲＣＳにおいて指定されない）：
−６４ビットモードのためのＣＲ０、ＣＲ４（追加のＣＲ４マスク値を必要とし得る）
−ＤＲ７、スクラブＤＲ：クリア：ＰＤＲビットの影響を考慮する必要がある
−ＩＡ３２＿ＤＥＢＵＧＣＴＬ、ＩＡ３２＿ＰＥＲＦ＿ＧＬＯＢＡＬ＿ＣＴＲＬ、ＩＡ３２＿ＰＡＴ、ＩＡ３２＿ＢＮＤＣＦＧＳ
−ＩＡ３２＿ＥＦＥＲ（６４ビットモードを保証する）
−セグメントレジスタ（ベース限定アクセス）：ＶＭ終了と同じ
−ＲＦＬＡＧＳ：ＶＭ終了と同じ―０ｘ２にセット
−ＬＤＴＲ：ＶＭ終了と同じ―ヌル
【００８２】
以下のプロセッサ状態は、ＴＤ終了中に自動的にクリアされる（従って、ＴＤ−ＲＣＳにおいて指定されない）：
−ＩＡ３２＿ＳＹＳＥＮＴＥＲ＿ＣＳ／ＥＩＰ／ＥＳＰ
−ＩＡ３２＿ＫＥＲＮＥＬ＿ＧＳ＿ＢＡＳＥ
−ＩＡ３２＿ＳＴＡＲ／ＦＭＡＳＫ／ＬＳＴＡＲ
−ＧＰＲ（ＲＳＰを除く）
−ＸＳＡＶＥ状態
−拡張状態（ｘ８７／ＳＳＥ、ＣＥＴ等）―任意の及び他の条件付き状態として扱い得る。
【００８３】
ＴＤ−ＲＣＳはまた、表２において以下で提供されるように、制御フィールド及び終了情報構造（ＴＤ終了情報を報告するため）を保持する。
【表２】
2019053720.tif 000029
【００８４】
以下に示される表３は、ＴＤ−ＲＣＳにおける終了情報フィールドを詳述する。
【表３】
2019053720.tif 000030
【００８５】
一実施例において、ＴＤ１９０Ａが、ＴＤＲＭ１８０により作成され、起動され得る。ＴＤＲＭ１８０は、ＴＤ作成命令（ＴＤＣＲＥＡＴＥ及びＴＤＴＣＲＥＡＴＥ）を用いてＴＤ１９０Ａを作成する。ＴＤＲＭ１８０は、物理メモリの４ＫＢに位置合わせされた領域を選択し、これをパラメータとしてＴＤ作成命令に提供する。このメモリ領域は、ＴＤ１９０Ａに関してＴＤＣＳ１２４として用いられる。実行された場合に、ＴＤＣＲＥＡＴＥ命令は、プロセッサ１１２に、宛先４ＫＢページが、（ＭＯＴ１６０を用いて）ＴＤに割り当てられていることを検証させる。ＴＤＣＲＥＡＴＥ命令は更に、プロセッサ１１２に、ＴＤ１９０Ａに関するエフェメラルメモリ暗号化キー及びキーＩＤを生成させ、ＴＤＣＳ１２４にキーＩＤを格納させる。プロセッサ１１２は、次に、ＴＤに割り当てられた暗号化キーを用いて宛先ページ上のページコンテンツを初期化する。一実施例において、ページコンテンツを初期化することは、ＴＤのＴＤ状態を開始することを含み、これは、ＴＤＴＣＳ１２８に関して以下で更に説明される。ＴＤＣＲＥＡＴＥ命令は、次に、プロセッサ１１２に、ＴＤＣＳ１２４におけるＴＤ測定のためのハッシュを初期化させる。
【００８６】
一実施例において、ＴＤＲＭ１８０は、ＴＤＡＤＤＰＡＧＥ命令（上述）を用いてＴＤ１９０ＡのためのＩＢＢコード／データをセットアップし、（ＴＤ１９０Ａの）ＴＤＣＳ１２４ページのアドレスを、パラメータ、ＴＤＲＭアドレス空間におけるＴＤ画像のためのコード／データページのアドレス、及びＴＤ１９０Ａに割り当てられた物理ページとして指定する。プロセッサ１１２は、次に、宛先４ＫＢページがＴＤ１９０Ａに割り当てられていることを検証する。一旦検証されると、プロセッサ１１２は、ＴＤＣＳ１２４におけるＴＤ１９０Ａのためのハッシュを拡張する。次に、プロセッサは、ＴＤ１９０Ａに割り当てられた一意の暗号化キーを用いて、ソースから宛先ページにページコンテンツをコピーする。
【００８７】
ＴＤＲＭ１８０は、物理メモリマップ（及び識別ページテーブル）を含むデータページを介してＴＤブート構成を提供する。ＴＤＲＭ１８０は、物理メモリを初期化し、プロセッサ１１２は、ページが、ＴＤ１９０Ａに割り当てられ、ページテーブルを識別することを検証する。ＴＤＲＭ１８０は、次に、ＴＤＩＮＩＴ命令を用いてＴＤ１９０Ａの測定を完結する。ＴＤＲＭ１８０は、次に、ＴＤＥＮＴＥＲ命令を用いてＴＤ１９０Ａの実行を開始し得る（これは、以下で更に説明されるようにＴＤＴＣＳ１２８を用いる）。
【００８８】
ここでＴＤＣＳ１２４を参照すると、この制御構造は、ＴＤ１９０Ａが正常に作成される場合にプロセッサ１１２が初期化する制御を指定する。ＴＤＣＳ１２４は、ＴＤ１９０Ａがイネーブルされた場合に利用可能である。一実施例において、ＴＤＣＳは、４Ｋの自然に位置合わせされたメモリ領域を占有する。ＭＯＴ１６０においてＴＤＣＳ１２４として識別されたページが、ＴＤＣＲＥＡＴＥ命令が正常に実行された後、ソフトウェア読み取り／書き込みに対してブロックされる。一実施例において、ＴＤＣＳ１２４は、ＭＯＴ１６０を介してアクセス制御される（例えば、上述のように、ＭＯＴ１６０に格納されたＴＤＣＳ１２４のための割り当てられたキーＩＤが、プロセッサ１１２のページウォーク中に用いられ、不正なソフトウェア読み取り／書き込みを防止する）。別の実施例において、ＴＤＣＳ１２４は、ソフトウェアアクセスにアクセス不可能であるプロセッサ１１２の、制限されたレンジレジスタにおけるストレージを介してアクセス制御される。ＴＤＣＳ１２４は、これらに限定されるものではないが、表４において以下で示される以下のフィールドを含み得る。
【表４】
2019053720.tif 000031
【００８９】
ＴＤＣＳ．ＡＴＴＲＩＢＵＴＥＳフィールドは、表５において以下で示される以下のビット構造を有する。
【表５】
2019053720.tif 000032
【００９０】
ＴＤ１９０Ａが、Ｎ個のロジックプロセッサ（ＣＰＵ）をＴＤ１９０Ａに割り当てるようにＴＤＲＭ１８０に要求し得る。各要求されたＣＰＵに関して、ＴＤＲＭ１８０は、ＴＤＡＤＤＰＡＧＥ（パラメータ＜ｏｐ，  ＴＤＣＳ，  ＴＤ  ＣＰＵ  ｉｎｄｅｘ，  ＨＰＡ＞）を用いて、ＴＤＴＣＳ１２８ページをＴＤ１９０Ａに追加する。プロセッサ１１２は、宛先４ＫＢページがＴＤ１９０Ａに割り当てられていることを検証する。プロセッサ１１２は、ＴＤ１９０Ａに関してＴＤＣＳ１２４におけるＴＣＳＬｉｓｔ［インデックス］１４２を更新する。ＴＤＴＣＳ１２８は、その親ＴＤＣＳ１２４（ＴＤＡＤＤＰＡＧＥ命令パラメータにおいて指定される）を後方参照し得る。 
【００９１】
ＴＤＲＭ１８０は、ＴＤ１９０ＡにＴＤＥＮＴＥＲ（パラメータ＜ＴＤＣＳ，  ＣＰＵ  ｉｎｄｅｘ＞）へのＴＤＴＣＳ１２８を用いる。これは、ＴＤＴＣＳ１２８（及び参照されたＴＤＣＳ１２４）を起動する。ＴＤＥＮＴＥＲ命令は、ＴＤＴＣＳ１２８が既にアクティブでないことをチェックする。ＴＤＥＮＴＥＲで、プロセッサ１１２は、ページミスハンドラ（ＰＭＨ）／ＴＬＢによるＴＤ１９０ＡキーＩＤ強制を起動する。プロセッサ１１２は、次に、ＴＤＴＣＳ１２８からＴＤ状態をロードし、ＴＤ１９０Ａ実行を開始する。
【００９２】
ＴＤＴＣＳ１２８は、ＴＤ１９０Ａに割り当てられたロジックプロセッサに関する実行状態を保持する。プロセッサ１１２がＴＤテナントモードにある場合にＴＤ終了条件が発生する場合、ＴＤ終了は、テナントの実行状態をＴＤＴＣＳ１２８に保存する。一実施例において、ＴＤＴＣＳ１２８は、ＭＯＴ１６０を介してアクセス制御される（例えば、上述のように、キーＩＤは、プロセッサ１１２のページウォーク中に用いられ、不正なソフトウェアの読み取り／書き込みを防止する）。別の実施例において、ＴＤＴＣＳ１２８は、ソフトウェアアクセスにアクセス不可能であるプロセッサ１１２の、制限されたレンジレジスタにおけるストレージを介してアクセス制御される。 
【００９３】
プロセッサ１１２がＴＤ１９０Ａ内の非ルートＶＭＭのコンテキストにおいて動作している場合にＴＤ終了が発生する場合、ＴＤ終了は、（まだ報告されていない）ＴＤ  ＶＭＭ（例えば、ＴＤ  ＶＭＭ２２２）へのＶＭ終了（例えば、図２ＢのＶＭ終了２８０）を実行し、テナントＶＭＭ状態をＴＤＴＣＳ１２８に保存し、ＴＤ終了を実行する（キーＩＤ強制を切り替える）。ＴＤＲＭ１８０により呼び出された後続のＴＤＥＮＴＥＲは、キー‐ＩＤ強制切り替えを実行し、テナントＶＭＭ又はＯＳを再開するべく、（ＴＤ１９０Ａ内の）ＴＤＴＣＳ１２８からテナント状態を復元する。対応して、プロセッサ１１２が以前のＴＤ終了の間に非ルートＶＭＭのコンテキストにおいて動作していた場合、ＴＤ入力は、テナントＶＭＭに（ＴＤエントリ上の）ＶＭ終了を報告する。
【００９４】
上述のように、ＴＤＴＣＳ１２８は、ＴＤ１９０Ａの実行状態を保持する。ＴＤ１９０Ａの実行状態は、ＴＤＴＣＳ１２８に格納される。ＴＤＴＣＳは、非アーキテクチャであり得、表６から表９において以下で詳述されるフィールドを保持し得る。
【表６】
2019053720.tif 000033
【表７】
2019053720.tif 000034
【表８】
2019053720.tif 000035
【表９】
2019053720.tif 000036
【００９５】
一実施例において、ＴＤ１９０Ａが、ＴＤＲＭ１８０により破壊され得る。ＴＤＲＭ１８０は、ＴＤ破壊命令（ＴＤＤＥＳＴＲＯＹ及びＴＤＴＤＥＳＴＲＯＹ）を用いてＴＤ１９０Ａを破壊する。ＣＰＵは、ＴＤに割り当てられた全てのメモリが破棄されたことを検証し、それが、ＴＤＣＳが破壊されることを可能にする前に、全てのＴＤ−ＴＣＳが破壊される。
【００９６】
図４は、一実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供するための例示的な方法４００のフロー図である。方法４００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェア又はこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施例において、方法４００が、図１Ａ又は図１Ｂの処理デバイス１１２により実行される。別の実施例において、方法４００は、図７Ａ〜図１２に関して説明されている処理デバイスの何れかにより実行される。あるいは、コンピューティングシステム１００の他のコンポーネント（又は処理デバイス１１２上で実行されるソフトウェア）は、方法４００の動作の一部又は全てを実行し得る。
【００９７】
図４を参照すると、方法４００は、処理ロジックが、ＶＭを備えるＴＤを管理するＴＤＲＭを実行し、ＴＤは、処理デバイスにより実行される場合に、ブロック４１０で開始する。ブロック４２０で、処理ロジックは、処理ロジックにより実行されるＴＤ又は他のＴＤのうち１又は複数のグローバルメタデータを管理するためのＴＤＣＳを維持する。次に、ブロック４３０で、処理ロジックは、処理デバイスにより実行されるＴＤＲＭ、ＶＭＭ、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、ＴＤ−ＴＣＳにおけるＴＤの実行状態を維持する。 
【００９８】
続いて、ブロック４４０で、処理ロジックは、ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキーＩＤを取得する。一実施例において、キーＩＤは、処理ロジックが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページに機密アクセスすることを可能にし、ここで、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化される。最後に、ブロック４５０で、処理ロジックは、ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する。一実施例において、ＭＯＴから取得されたゲスト物理アドレスの、アクセスされたゲスト物理アドレスとの一致は、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページにアクセスすることを可能にする。
【００９９】
図５は、一実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供する場合に、ＴＤ終了を実行するための例示的な方法５００のフロー図である。方法５００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェア又はこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施例において、方法５００は、図１Ａ又は図１Ｂの処理デバイス１１２により実行される。別の実施例において、方法５００は、図７Ａ〜図１２に関して説明されている処理デバイスの何れかにより実行される。あるいは、コンピューティングシステム１００の他のコンポーネント（又は処理デバイス１１２上で実行されるソフトウェア）は、方法５００の動作の一部又は全てを実行し得る。
【０１００】
図５を参照すると、方法５００は、処理ロジックが、ＴＤ終了イベントを識別する場合にブロック５１０で開始する。一実施例において、ＴＤＲＭが、ＴＤ終了イベントと関連付けられたＴＤを管理しており、ここで、処理ロジックは、ＴＤ終了イベントが識別された場合にＴＤのコンテキストにおいて実行している。
【０１０１】
ブロック５２０で、処理ロジックは、ＴＤ終了イベントの識別に応答して、ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、ＴＤに対応するＴＤ−ＴＣＳに保存する。一実施例において、実行状態は、第１暗号化キーで暗号化され、ＴＤ−ＴＣＳは、処理デバイスにより実行されるＴＤＲＭ、ＶＭＭ、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される。
【０１０２】
続いて、ブロック５３０で、処理ロジックは、処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤＲＭ又はＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する。最後に、ブロック５４０で、処理ロジックは、ＴＤＲＭ実行及び制御状態並びにＴＤＲＭの終了情報をロードし、処理デバイスに、ＴＤＲＭのコンテキストにおいて動作させる。
【０１０３】
図６は、一実施例に係る、ＴＤを用いて仮想化されたシステムにおける分離を提供する場合に、ＴＤ入力を実行するための例示的な方法６００のフロー図である。方法６００は、ハードウェア（例えば、回路、専用ロジック、プログラマブルロジック、マイクロコード等）、ソフトウェア（ＭＣＵにより実行されるオペレーション等）、ファームウェア又はこれらの組み合わせを備え得る処理ロジックにより実行され得る。一実施例において、方法６００が、図１Ａ又は図１Ｂの処理デバイス１１２により実行される。別の実施例において、方法６００は、図７Ａ〜図１２に関して説明されている処理デバイスの何れかにより実行される。あるいは、コンピューティングシステム１００の他のコンポーネント（又は処理デバイス１１２上で実行されるソフトウェア）は、方法６００の動作の一部又は全てを実行し得る。
【０１０４】
図６を参照すると、方法６００は、処理ロジックが、ＴＤＲＭのコンテキストにおいて実行している間にＴＤ入力イベントを識別する場合に、ブロック６１０で開始する。一実施例において、処理ロジックは、ＴＤを管理するそのＴＤＲＭを実行する。 
【０１０５】
ブロック６２０で、処理ロジックは、ＴＤ入力イベントの識別に応答して、ＴＤＲＭに割り当てられた第１暗号化キーに対応する第１キーＩＤを利用し、ＴＤＲＭに対応するＴＤＲＣＳから、ＴＤＲＭのＴＤＲＭ制御状態をロードする。一実施例において、実行状態は、第１暗号化キーで暗号化される。更に、ＴＤＲＣＳは、処理デバイスにより実行されるＴＤ又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御され得る。 
【０１０６】
続いて、ブロック６３０で、処理ロジックは、処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤに割り当てられた第２暗合化キーに対応する第２キーＩＤに修正する。最後に、ブロック６４０で、処理ロジックは、ＴＤ−ＴＣＳからＴＤのＴＤユーザ実行状態及びスーパーバイザー実行状態をロードし、処理デバイスに、ＴＤのコンテキストにおいて動作させる。一実施例において、ＴＤ−ＴＣＳは、処理デバイスにより実行されるＴＤＲＭ又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される。
【０１０７】
図７Ａは、本開示の少なくとも１つの実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供する処理デバイスの性能を監視するプロセッサの、インオーダパイプライン及びレジスタリネーミング段階、アウトオブオーダ発行／実行パイプラインを示すブロック図である。図７Ｂは、本開示の少なくとも１つの実施例に係るプロセッサに含まれるインオーダアーキテクチャコア及びレジスタリネーミングロジック、アウトオブオーダ発行／実行ロジックを示すブロック図である。図７Ａにおける実線ボックスは、インオーダパイプラインを示す一方、破線ボックスは、レジスタリネーミング、アウトオブオーダ発行／実行パイプラインを示す。同様に、図７Ｂにおける実線ボックスは、インオーダアーキテクチャロジックを示すが、破線ボックスは、レジスタリネーミングロジック及びアウトオブオーダ発行／実行ロジックを示す。
【０１０８】
図７Ａにおいて、プロセッサパイプライン７００は、フェッチ段階７０２、長さデコード段階７０４、デコード段階７０６、割り当て段階７０８、リネーミング段階７１０、スケジューリング（ディスパッチ又は発行としても知られる）段階７１２、レジスタ読み取り／メモリ読み取り段階７１４、実行段階７１６、ライトバック／メモリ書き込み段階７１８、例外処理段階７２２、及びコミット段階７２４を含む。いくつかの実施例において、段階は、異なる順序で提供され、異なる段階が、インオーダ及びアウトオブオーダとみなされ得る。
【０１０９】
図７Ｂにおいて、矢印は、２又はそれより多くのユニット間の結合を示し、矢印の方向は、それらのユニット間のデータフロー方向を示す。図７Ｂは、プロセッサコア（コア）７９０を示し、プロセッサコア（コア）７９０は、実行エンジンユニット７５０に結合されたフロントエンドユニット７３０を含み、フロントエンドユニット７３０と実行エンジンユニット７５０の両方がメモリユニット７７０に結合される。 
【０１１０】
コア７９０は、縮小命令セットコンピューティング（ＲＩＳＣ）コア、複合命令セットコンピューティング（ＣＩＳＣ）コア、超長命令語（ＶＬＩＷ）コア又はハイブリッド若しくは代替的なコアタイプであってもよい。なおも別の選択肢として、コア７９０は、例えば、ネットワーク若しくは通信コア、圧縮エンジン、グラフィックスコア等のような特定用途コアであってもよい。
【０１１１】
フロントエンドユニット７３０は、命令キャッシュユニット７３４に結合された分岐予測ユニット７３２を含み、命令キャッシュユニット７３４は、命令トランスレーションルックアサイドバッファ（ＴＬＢ）７３６に結合され、命令トランスレーションルックアサイドバッファ（ＴＬＢ）７３６は、命令フェッチユニット７３８に結合され、命令フェッチユニット７３８は、デコードユニット７４０に結合される。デコードユニット又はデコーダは、命令をデコードし、出力として１又は複数のマイクロオペレーション、マイクロコードエントリポイント、マイクロ命令、他の命令、又は他の制御信号を生成することができ、これらは、元の命令からデコードされたり、又はそうでなければ元の命令を反映していたり、又は元の命令から導出されていたりする。デコーダは、様々な異なるメカニズムを用いて実施され得る。好適なメカニズムの例は、これらに限定されるものではないが、ルックアップテーブル、ハードウェア実装、プログラマブルロジックアレイ（ＰＬＡ）、マイクロコードリードオンリメモリ（ＲＯＭ）等を含む。命令キャッシュユニット７３４は更に、メモリユニット７７０内のレベル２（Ｌ２）キャッシュユニット７７６に結合される。デコードユニット７４０は、実行エンジンユニット７５０内のリネーム／アロケータユニット７５２に結合される。
【０１１２】
実行エンジンユニット７５０は、リタイアメントユニット７５４及び１又は複数のスケジューラユニット７５６のセットに結合されたリネーム／アロケータユニット７５２を含む。スケジューラユニット７５６は、任意の数の異なるスケジューラを表し、保留局、中央命令ウィンドウ等を含む。スケジューラユニット７５６は、物理レジスタファイルユニット７５８に結合される。物理レジスタファイルユニット７５８の各々は、１又は複数の物理レジスタファイルを表し、その異なるものが、スカラ整数、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点等、ステータス（例えば、実行される次の命令のアドレスである命令ポインタ）等のような、１又は複数の異なるデータタイプを格納する。物理レジスタファイルユニット７５８は、リタイアメントユニット７５４と重複しており、レジスタリネーミング及びアウトオブオーダ実行が実施され得る（例えば、リオーダバッファ、及びリタイアメントレジスタファイルを用い、将来のファイル、履歴バッファ、及びリタイアメントレジスタファイルを用い、レジスタマップ及びレジスタのプールを用いる等して）様々な様式を示す。
【０１１３】
一般に、アーキテクチャレジスタは、プロセッサの外部から、又はプログラマの観点から見える。レジスタは、任意の知られた特定のタイプの回路に限定されない。様々な異なるタイプのレジスタは、本明細書で説明されるデータを格納及び提供することができる限りにおいて、好適である。好適なレジスタの例としては、これらに限定されるものではないが、専用物理レジスタ、レジスタリネーミングを用いて動的に割り当てられる物理レジスタ、専用物理レジスタ及び動的に割り当てられる物理レジスタの組み合わせ等が挙げられる。リタイアメントユニット７５４及び物理レジスタファイルユニット７５８は、実行クラスタ７６０に結合される。 実行クラスタ７６０は、１又は複数の実行ユニット７６２のセット及び１又は複数のメモリアクセスユニット７６４のセットを含む。実行ユニット７６２は、様々なオペレーション（例えば、シフト、加算、減算、乗算）を実行し、様々なタイプのデータ（例えば、スカラ浮動小数点、パックド整数、パックド浮動小数点、ベクトル整数、ベクトル浮動小数点）上で処理し得る。
【０１１４】
いくつかの実施例は、具体的関数又は関数のセットに専用のいくつかの実行ユニットを含んでもよいが、他の実施例は、１つの実行ユニット又は複数の実行ユニットを含んでもよく、これらは全て、あらゆる関数を実行する。スケジューラユニット７５６、物理レジスタファイルユニット７５８、及び実行クラスタ７６０は、場合によっては複数であるものとして示される。なぜなら、特定の実施例が、特定のタイプのデータ／オペレーション（例えば、スカラ整数パイプライン、スカラ浮動小数点／パックド整数／パックド浮動小数点／ベクトル整数／ベクトル浮動小数点パイプライン、及び／又はメモリアクセスパイプライン。これらは、各々がそれら自体のスケジューラユニット、物理レジスタファイルユニット、及び／又は実行クラスタを有し、別個のメモリアクセスパイプラインの場合には、このパイプラインの実行クラスタが、メモリアクセスユニット７６４を有する特定の実施例が実施される）用に別個のパイプラインを作成するからである。別個のパイプラインが用いられる場合、これらのパイプラインのうち１又は複数は、アウトオブオーダ発行／実行であり、残りは、インオーダであってもよいことも理解されたい。
【０１１５】
メモリアクセスユニット７６４のセットは、メモリユニット７７０に結合され、メモリユニット７７０は、レベル２（Ｌ２）キャッシュユニット７７６に結合されたデータキャッシュユニット７７４に結合されたデータＴＬＢユニット７７２を含む。１つの例示的な実施例において、メモリアクセスユニット７６４は、ロードユニット、格納アドレスユニット、及び格納データユニットを含み得、それらの各々は、メモリユニット７７０内のデータＴＬＢユニット７７２に結合される。Ｌ２キャッシュユニット７７６は、１又は複数の他のレベルのキャッシュに結合され、最終的にはメインメモリに結合される。
【０１１６】
例として、例示的なレジスタリネーミング、アウトオブオーダ発行／実行コアアーキテクチャは、次のように図７Ａのパイプライン７００を実施し得る。１）命令フェッチユニット７３８が、フェッチ段階７０２及び長さデコード段階７０４をそれぞれ実行し、２）デコードユニット７４０が、デコード段階７０６を実行し、３）リネーム／アロケータユニット７５２が、割り当て段階７０８及びリネーミング段階７１０を実行し、４）スケジューラユニット７５６が、スケジューリング段階７１２を実行し、５）物理レジスタファイルユニット７５８及びメモリユニット７７０が、レジスタ読み取り／メモリ読み取り段階７１４を実行し、実行クラスタ７６０が、実行段階７１６を実行し、６）メモリユニット７７０及び物理レジスタファイルユニット７５８が、ライトバック／メモリ書き込み段階７１８を実行し、７）様々なユニットが、例外処理段階７２２に関与することができ、８）リタイアメントユニット７５４及び物理レジスタファイルユニット７５８が、コミット段階７２４を実行する。
【０１１７】
コア７９０は、１又は複数の命令セット（例えば、ｘ８６命令セット（より新しいバージョンについてはいくつかの拡張が追加されている）、カリフォルニア州サニーベールのＭＩＰＳ  Ｔｅｃｈｎｏｌｏｇｉｅｓ社のＭＩＰＳ命令セット、カリフォルニア州サニーベールのＡＲＭ  Ｈｏｌｄｉｎｇｓ社のＡＲＭ命令セット（ＮＥＯＮ等の追加の拡張を有する）をサポートすることができる。 
【０１１８】
コアは、（オペレーション又はスレッドの２又はそれより多くの並列セットを実行する）マルチスレッディングをサポートし得、タイムスライスマルチスレッディング、同時マルチスレッディング（物理コアが同時にマルチスレッディングしているスレッドの各々のための論理コアを、単一の物理コアが提供する）、又はこれらの組み合わせ（例えば、タイムスライスフェッチ及びデコードを行い、その後にインテル（登録商標）ハイパースレッディング技術等の同時マルチスレッディングを行う）を含む様々な態様でこれを実行し得ることを理解されたい。
【０１１９】
レジスタリネーミングは、アウトオブオーダ実行の文脈で説明されるが、レジスタリネーミングは、インオーダアーキテクチャにおいて用いられ得ることを理解されたい。また、プロセッサの図示される実施例は、別個の命令及びデータキャッシュユニット７３４／７７４、並びに共有Ｌ２キャッシュユニット７７６を含むが、代替的な実施例は、例えば、レベル１（Ｌ１）内部キャッシュ又は複数のレベルの内部キャッシュ等、命令及びデータの両方に対して単一の内部キャッシュを有してもよい。いくつかの実施例において、システムは、内部キャッシュ、及びコア及び／又はプロセッサの外部にある外部キャッシュの組み合わせを含んでもよい。あるいは、キャッシュの全ては、コア及び／又はプロセッサの外部にあってもよい。
【０１２０】
図８は、一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するロジック回路を含む処理デバイス８００のためのマイクロアーキテクチャのブロック図を示す。いくつかの実施例において、命令は、バイト、ワード、ダブルワード、クワッドワード等のサイズ、並びに単及び倍精度の整数及び浮動小数点データタイプ等のデータタイプを有するデータ要素上で演算するように実施され得る。一実施例において、インオーダフロントエンド８０１は、実行されるべき命令をフェッチし、それらを処理デバイスパイプラインにおいて後に用いるために用意する、処理デバイス８００の一部である。信頼ドメインを用いて仮想化されたシステムにおける分離を提供する実施例は、処理デバイス８００において実施され得る。
【０１２１】
フロントエンド８０１は、いくつかのユニットを含み得る。一実施例において、命令プリフェッチャ８２６は、メモリから命令をフェッチし、それらを命令デコーダ８２８へ供給し、命令デコーダ８２８は次にそれらをデコード又は変換する。例えば、一実施例において、デコーダは、機械が実行し得る「マイクロ命令」若しくは「マイクロオペレーション」と呼ばれる１又は複数のオペレーション（マイクロｏｐ又はｕｏｐとも呼ばれる）に受信済の命令をデコードする。他の実施例において、デコーダは、命令を解析し、一実施例に係るオペレーションを実行するマイクロアーキテクチャにより用いられるオペコード及び対応するデータ、並びに制御フィールドにする。一実施例において、トレースキャッシュ８３０は、デコード済のｕｏｐを受け取り、それらをプログラムで順序付けられたシーケンスにアセンブルし、又は実行するべくｕｏｐキュー８３４においてトレースする。トレースキャッシュ８３０が複合命令に遭遇する場合に、マイクロコードＲＯＭ８３２は、オペレーションを完了するのに必要とされるｕｏｐを提供する。
【０１２２】
いくつかの命令は、単一のマイクロｏｐに変換されるが、他のものは、オペレーション全体を完了するのにいくつかのマイクロｏｐを必要とする。一実施例において、命令を完了するのに４つより多いマイクロｏｐが必要とされる場合、デコーダ８２８は、命令を実行するべくマイクロコードＲＯＭ８３２にアクセスする。一実施例については、命令は、命令デコーダ８２８において処理するべく少数のマイクロｏｐにデコードされ得る。別の実施例において、オペレーションを実現するのにいくつかのマイクロｏｐが必要とされる場合、命令は、マイクロコードＲＯＭ８３２内に格納され得る。トレースキャッシュ８３０は、マイクロコードシーケンスを読み取り、一実施例に係るマイクロコードＲＯＭ８３２の１又は複数の命令を完了する正しいマイクロ命令ポインタを決定する、エントリポイントプログラマブルロジックアレイ（ＰＬＡ）を指す。マイクロコードＲＯＭ８３２が命令のマイクロｏｐをシーケンス化することを完了した後、マシンのフロントエンド８０１は、トレースキャッシュ８３０からマイクロｏｐをフェッチすることを再開する。
【０１２３】
アウトオブオーダ実行エンジン８０３は、命令が実行のために用意される場所である。アウトオブオーダ実行ロジックは、いくつかのバッファを有し、これにより、命令のフローを平滑化及びリオーダし、これらの命令がパイプラインを進み実行のためにスケジューリングされるにあたり、性能を最適化する。アロケータロジックは、各ｕｏｐが実行するために必要とするマシンバッファ及びリソースを割り当てる。レジスタリネーミングロジックは、ロジックレジスタをレジスタファイルにおけるエントリへとリネームする。また、アロケータは、メモリスケジューラ、高速スケジューラ８０２、低速／一般浮動小数点スケジューラ８０４、及び単純浮動小数点スケジューラ８０６などの命令スケジューラの前に、１つはメモリオペレーションに関するものであり、１つは非メモリオペレーションに関するものである、２つのｕｏｐキューのうちの１つにおけるｕｏｐ毎にエントリを割り当てる。ｕｏｐがそのオペレーションを完了するのに必要とする依存性入力レジスタオペランドソース及び実行リソースの利用可能性の準備が整ったことに基づいて、ｕｏｐスケジューラ８０２、８０４、８０６は、ｕｏｐがいつ実行する準備が整うかを判断する。一実施例の高速スケジューラ８０２は、メインクロックサイクルの半分毎にスケジューリングし得るが、他のスケジューラは、メイン処理デバイスのクロックサイクル毎に１回のみスケジューリングし得る。スケジューラは、実行のためにｕｏｐをスケジューリングするディスパッチポートについて仲裁する。
【０１２４】
レジスタファイル８０８、８１０は、スケジューラ８０２、８０４、８０６と、実行ブロック８１１における実行ユニット８１２、８１４、８１６、８１８、８２０、８２２、８２４との間にある。整数及び浮動小数点のオペレーションのために、それぞれ、別個のレジスタファイル８０８、８１０が存在する。また、一実施例の各レジスタファイル８０８、８１０は、完了したばかりの、レジスタファイルにまだ書き込まれていない結果を、新しい依存性ｕｏｐへとバイパスし、又は進め得るバイパスネットワークを含む。また整数レジスタファイル８０８及び浮動小数点レジスタファイル８１０は、他のものとデータを通信することができる。一実施例については、整数レジスタファイル８０８は、２つの別個のレジスタファイルに分割され、１つのレジスタファイルは、データの下位の３２ビットのためのものであり、第２レジスタファイルは、データの上位の３２ビットのためのものである。浮動小数点命令は通常、６４〜１２８ビット幅のオペランドを有するので、一実施例の浮動小数点レジスタファイル８１０は、１２８ビット幅のエントリを有する。
【０１２５】
実行ブロック８１１は、実行ユニット８１２、８１４、８１６、８１８、８２０、８２２、８２４を含み、ここで命令が実際に実行される。このセクションは、マイクロ命令を実行するのに必要とする整数及び浮動小数点データオペランド値を格納するレジスタファイル８０８、８１０を含む。一実施例の処理デバイス８００は、いくつかの実行ユニット、アドレス生成ユニット（ＡＧＵ）８１２、ＡＧＵ８１４、高速ＡＬＵ８１６、高速ＡＬＵ８１８、低速ＡＬＵ８２０、浮動小数点ＡＬＵ８２２、浮動小数点移動ユニット８２４から構成される。一実施例については、浮動小数点実行ブロック８２２，８２４は、浮動小数点、ＭＭＸ、ＳＩＭＤ、及びＳＳＥ、又は他のオペレーションを実行する。一実施例の浮動小数点ＡＬＵ８２２は、除算、平方根、及び残余のマイクロｏｐを実行する、６４ビット×６４ビット浮動小数点ディバイダを含む。本開示の実施例については、浮動小数点値を含む命令は、浮動小数点ハードウェアにより扱われ得る。 
【０１２６】
一実施例において、ＡＬＵオペレーションは、高速ＡＬＵ実行ユニット８１６、８１８に向かう。一実施例の高速ＡＬＵ８１６、８１８は、クロックサイクルの半分の有効レイテンシで高速のオペレーションを実行し得る。一実施例については、複素整数演算の大部分は、低速ＡＬＵ８２０に向かう。なぜなら、低速ＡＬＵ８２０は、マルチプライア、シフト、フラグロジック、及び分岐処理等の長レイテンシタイプのオペレーションに対する整数実行ハードウェアを含むからである。メモリロード／ストアオペレーションは、ＡＧＵ８１２、８１４により実行される。一実施例については、整数ＡＬＵ８１６、８１８、８２０は、６４ビットデータオペランドに対して整数演算を実行する文脈で説明される。代替的な実施例において、ＡＬＵ８１６、８１８、８２０は、１６、３２、１２８、２５６等を含む様々なデータビットをサポートするように実施され得る。同様に、浮動小数点ユニット８２２、８２４は、様々な幅のビットを有する範囲のオペランドをサポートするように実施され得る。一実施例については、浮動小数点ユニット８２２、８２４は、１２８ビット幅のパックドデータオペランドで、ＳＩＭＤ及びマルチメディア命令を伴って処理し得る。
【０１２７】
一実施例において、ｕｏｐスケジューラ８０２、８０４、８０６は、親ロードが実行を終了する前に依存性オペレーションをディスパッチする。ｕｏｐは、処理デバイス８００において投機的にスケジューリングされ実行されるので、処理デバイス８００は、メモリミスを処理するロジックも含む。データロードがデータキャッシュ内でミスを起こした場合、一時的に誤ったデータと共にスケジューラを離れた依存性オペレーションがパイプライン内でインフライトであり得る。リプレイメカニズムが、誤ったデータを用いる命令を追跡し、再実行する。依存性オペレーションのみがリプレイされる必要があり、独立したものは、完了することが可能である。処理デバイスの一実施例のスケジューラ及びリプレイメカニズムは、テキスト文字列比較オペレーションのための命令シーケンスをキャッチするようにも設計される。
【０１２８】
処理デバイス８００はまた、一実施例に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するロジックを含む。一実施例において、処理デバイス８００の実行ブロック８１１は、本明細書における説明に係る、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するＴＤＲＭ１８０、ＭＯＴ１６０、ＴＤＣＳ１２４、及びＴＤＴＣＳ１２８を含み得る。
【０１２９】
「レジスタ」という用語は、オペランドを識別する命令の一部として用いられるオンボード処理デバイスストレージの位置を指し得る。換言すれば、レジスタは、処理デバイスの（プログラマの観点から）外部から利用可能であるものであり得る。しかしながら、実施例のレジスタは、特定のタイプの回路に、その意味が限定されるべきではない。むしろ、実施例のレジスタは、データを格納及び提供し、本明細書に説明されている機能を実行することができる。本明細書において説明されるレジスタは、専用物理レジスタ、レジスタリネーミングを用いる動的に割り当てられた物理レジスタ、専用及び動的に割り当てられた物理レジスタ等の組み合わせ等、任意の数の異なる技術を用いる処理デバイス内の回路により実施され得る。一実施例において、整数レジスタは、３２ビットの整数データを格納する。また、一実施例のレジスタファイルは、パックドデータのための８つのマルチメディアＳＩＭＤレジスタを含む。
【０１３０】
本明細書での検討において、レジスタは、カリフォルニア州サンタクララのインテルコーポレーションのＭＭＸ技術により可能にされるマイクロプロセッシングデバイスにおける６４ビット幅のＭＭＸ（商標）レジスタ（いくつかの例において「ｍｍ」レジスタとも称される）等、パックドデータを保持するように設計されたデータレジスタであるものと理解されている。これらのＭＭＸレジスタは、整数及び浮動小数点の両方の形式で利用可能であり、ＳＩＭＤ及びＳＳＥ命令を伴うパックドデータ要素で動作し得る。同様に、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、又はそれ以降（一般に「ＳＳＥｘ」と称される）の技術に関する１２８ビット幅のＸＭＭレジスタは、そのようなパックドデータオペランドを保持するようにも用いられ得る。一実施例において、パックドデータ及び整数データを格納するときに、レジスタは、２つのデータタイプを区別する必要はない。一実施例において、整数及び浮動小数点は、同一のレジスタファイル、又は異なるレジスタファイルの何れかに含まれる。更に、一実施例において、浮動小数点及び整数データは、異なるレジスタ、又は同一のレジスタに格納され得る。
【０１３１】
実施例は、多くの異なるシステムのタイプに実施され得る。ここで図９を参照すると、実施例に係る、マルチプロセッシングデバイスシステム９００のブロック図が示される。図９に示すとおり、マルチプロセッシングデバイスシステム９００は、ポイントツーポイント相互接続システムであり、第１処理デバイス９７０、及びポイントツーポイント相互接続９５０を介して結合される第２処理デバイス９８０を含む。図９に示すとおり、処理デバイス９７０及び９８０の各々は、第１及び第２処理デバイスコア（不図示）を含むマルチコア処理デバイスであり得るが、潜在的に更に多くのコアが処理デバイスに存在し得る。処理デバイスは各々、本発明の実施例に係るハイブリッド書き込みモードロジックを含み得る。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、処理デバイス９７０、処理デバイス９８０、又はその両方において実施され得る。
【０１３２】
２つの処理デバイス９７０、９８０と共に示されているが、本開示の範囲は、そのように限定されないものと理解されたい。他の実施例において、１又は複数の追加の処理デバイスは、所与の処理デバイス内に存在し得る。
【０１３３】
処理デバイス９７０及び９８０は、統合メモリコントローラユニット９７２及び９８２を各々含むように示されている。処理デバイス９７０はまた、そのバスコントローラユニットの一部として、ポイントツーポイント（Ｐ−Ｐ）インタフェース９７６及び９７８を含む。同様に、第２処理デバイス９８０は、Ｐ−Ｐインタフェース９８６及び９８８を含む。処理デバイス９７０、９８０は、Ｐ−Ｐインタフェース回路９７８、９８８を用いて、ポイントツーポイント（Ｐ−Ｐ）インタフェース９５０を介して情報を交換し得る。図９に示すとおり、ＩＭＣ９７２及び９８２は、処理デバイスを、それぞれのメモリ、即ちメモリ９３２及びメモリ９３４に結合させるが、メモリ９３２及びメモリ９３４は、それぞれの処理デバイスにローカルに取り付けられたメインメモリの一部であり得る。
【０１３４】
処理デバイス９７０、９８０は各々、ポイントツーポイントインタフェース回路９７６、９９４、９８６、９９８を用い、個々のＰ−Ｐインタフェース９５２、９５４を介し、チップセット９９０と情報を交換し得る。また、チップセット９９０は、高性能グラフィックスインタフェース９３９を介し、高性能グラフィックス回路９３８と情報を交換し得る。
【０１３５】
共有キャッシュ（不図示）は、どちらかの処理デバイス内又は両方の処理デバイスの外側に含まれ得るが、Ｐ−Ｐ相互接続を介して処理デバイスとなおも接続され得、従って、処理デバイスが低電力モードに置かれる場合に、どちらか又は両方の処理デバイスのローカルキャッシュ情報は、共有キャッシュ内に格納され得る。
【０１３６】
チップセット９９０は、インタフェース９９６を介して第１のバス９１６に結合され得る。 一実施例において、第１のバス９１６は、周辺構成要素相互接続（ＰＣＩ）バス、又は、ＰＣＩエクスプレスバス若しくは別の第３世代Ｉ／Ｏ相互接続バス等のバスであってもよいが、本開示の範囲は、そのように限定されない。
【０１３７】
図９に示すとおり、様々なＩ／Ｏデバイス９１４が、第１のバス９１６を第２のバス９２０に結合するバスブリッジ９１８と共に、第１のバス９１６に結合され得る。一実施例において、第２のバス９２０は、低ピンカウント（ＬＰＣ）バスであり得る。一実施例において、様々なデバイスは、例えば、キーボード及び／若しくはマウス９２２、通信デバイス９２７、及び命令／コード及びデータ９３０を含み得るディスクドライブ若しくは他の大容量ストレージデバイス等、ストレージユニット９２８を含む、第２のバス９２０に結合され得る。更に、オーディオＩ／Ｏ９２４が、第２のバス９２０に結合され得る。他のアーキテクチャが可能であることに留意されたい。例えば、図９のポイントツーポイントアーキテクチャに代えて、システムは、マルチドロップバス又は他のそのようなアーキテクチャを実施してもよい。
【０１３８】
ここで図１０を参照すると、本開示の実施例に係る第３のシステム１０００のブロック図が示されている。図９及び図１０における同様の要素は、同様の参照番号を有し、図９の特定の態様は、図１０の他の態様を不明瞭にしないように、図１０では省略されている。
【０１３９】
図１０は、処理デバイス９７０、９８０が、統合メモリ及びＩ／Ｏ制御ロジック（「ＣＬ」）９７２及び９８２を各々含み得ることを示す。少なくとも１つの実施例については、ＣＬ９７２、９８２は、本明細書において説明されるもの等、統合メモリコントローラユニットを含み得る。更に、ＣＬ９７２、９８２は、Ｉ／Ｏ制御ロジックも含み得る。図１０は、メモリ９３２、９３４が、ＣＬ９７２、９８２に結合され、Ｉ／Ｏデバイス１０１４も、制御ロジック９７２、９８２に結合されていることを示す。レガシーＩ／Ｏデバイス１０１５は、チップセット９９０に結合される。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、処理デバイス９７０、処理デバイス９８０、又はその両方において実施され得る。
【０１４０】
図１１は、コア１１０２のうち１又は複数を含み得る例示的なシステムオンチップ（ＳｏＣ）である。当技術分野で知られたラップトップ、デスクトップ、ハンドヘルドＰＣ、携帯情報端末、エンジニアリングワークステーション、サーバ、ネットワークデバイス、ネットワークハブ、スイッチ、エンベデッド処理デバイス、デジタル信号処理デバイス（ＤＳＰ）、グラフィックスデバイス、ビデオゲームデバイス、セットトップボックス、マイクロコントローラ、携帯電話、ポータブルメディアプレイヤ、ハンドヘルド型デバイス、及び他の様々な電子デバイスのための他のシステム設計及び構成も好適である。一般に、本明細書において開示される処理デバイス及び／又は他の実行ロジックを組み込むことができる多種多様なシステム又は電子デバイスが、概ね好適である。
【０１４１】
ここで図１１を参照すると、本開示の実施例に係るＳｏＣ１１００のブロック図が示されている。また、破線ボックスは、より高度なＳｏＣにおける機能である。図１１において、相互接続ユニット１１０２が、１若しくは複数のコア１１０２Ａ〜Ｎ並びに共有キャッシュユニット１１０６のセットを含むアプリケーション処理デバイス１１１０、システムエージェントユニット１１１２、バスコントローラユニット１１１６、統合メモリコントローラユニット１１１４、統合グラフィックスロジック１１０８と、静止画及び／若しくは動画カメラ機能を提供するための画像処理デバイス１１２４と、ハードウェアのオーディオアクセラレーションを提供するためのオーディオ処理デバイス１１２６と、動画エンコード／デコードアクセラレーションを提供するためのビデオ処理デバイス１１２８とを含み得る、１セット又は１若しくは複数のメディア処理デバイス１１２０、スタティックランダムアクセスメモリ（ＳＲＡＭ）ユニット１１３０、直接メモリアクセス（ＤＭＡ）ユニット１１３２、並びに１若しくは複数の外部ディスプレイに結合するためのディスプレイユニット１１４０に結合される。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、ＳｏＣ１１００において実施され得る。
【０１４２】
次に図１２を参照すると、本開示の実施例に係る、ＳｏＣ設計の実施例が示される。図示的な例として、ＳｏＣ１２００は、ユーザ機器（ＵＥ）に含まれる。一実施例において、ＵＥは、携帯電話、スマートフォン、タブレット、超薄型ノートブック、ブロードバンドアダプタ付ノートブック、又は、任意の他の類似の通信デバイス等、通信目的でエンドユーザにより用いられる任意のデバイスを指す。ＵＥは、性質においてＧＳＭ（登録商標）ネットワークにおける移動局（ＭＳ）に対応し得る、基地局又はノードに接続し得る。信頼ドメインを用いて仮想化されたシステムにおける分離を提供することの実施例は、ＳｏＣ１２００において実施され得る。
【０１４３】
ここでは、ＳｏＣ１２２０は、２つのコア１２０６及び１２０７を含む。上記の検討と同様に、コア１２０６及び１２０７は、インテル（登録商標）のアーキテクチャコア（登録商標）を有する処理デバイス、アドバンストマイクロデバイセズ株式会社（ＡＭＤ）の処理デバイス、ＭＩＰＳベースの処理デバイス、ＡＲＭベースの処理デバイス設計、又はそれらの顧客、並びにそれらの特許権者若しくは採用者等の命令セットアーキテクチャに適合し得る。コア１２０６及び１２０７は、バスインタフェースユニット１２０９及びＬ２キャッシュ１２１０と関連付けられ、システム１２００の他の一部と通信するキャッシュ制御１２０８に結合されている。相互接続１２１１は、ＩＯＳＦ、ＡＭＢＡ等のオンチップ相互接続、又は上述の他の相互接続を含み、これらは説明される本開示の１又は複数の態様を実施し得る。
【０１４４】
相互接続１２１１は、ＳＩＭカードにインタフェース接続する加入者識別モジュール（ＳＩＭ）１２３０、ＳｏＣ１２００を初期化及びブートするべくコア１２０６及び１２０７により実行するブートコードを保持するブートＲＯＭ１２３５、外部メモリ（例えば、ＤＲＡＭ１２６０）とインタフェースするＳＤＲＡＭコントローラ１２４０、不揮発性メモリ（例えば、フラッシュ１２６５）とインタフェース接続するフラッシュコントローラ１２４５、周辺機器とインタフェース接続する周辺制御器１２５０（例えば、シリアル周辺機器インタフェース）、入力（例えば、タッチでイネーブルされる入力）を表示及び受信する動画コーデック１２２０及び動画インタフェース１２２５、グラフィックス関連の計算を実行するＧＰＵ１２１５等のような、他のコンポーネントに通信チャネルを提供する。これらのインタフェースの何れも、本明細書において説明される実施例の態様を組み込み得る。
【０１４５】
加えて、システムは、Ｂｌｕｅｔｏｏｔｈ（登録商標）モジュール１２７０、３Ｇモデム１２７５、ＧＰＳ１２８０、及びＷｉ−Ｆｉ（登録商標）１２８５等、通信用周辺機器を示す。上述のように、ＵＥは通信用無線を含むことに留意されたい。結果として、これらの周辺機器通信モジュールは、全てが含まれない場合がある。しかしながら、ＵＥにおいて、何らかの形態の外部通信用の無線が備えられるべきである。
【０１４６】
図１３は、例示的な形態のコンピューティングシステム１３００における図的表現のマシンを示し、この中で、マシンに本明細書において検討される方法論のうち任意の１又は複数を実行させる命令のセットが実行され得る。代替的な実施例において、マシンが、ＬＡＮ、イントラネット、エクストラネット、又はインターネット内の他のマシンに接続され得る（例えば、ネットワーク接続）。マシンは、クライアントサーバネットワーク環境におけるサーバ若しくはクライアントデバイスの容量で、又はピアツーピア（若しくは分散された）ネットワーク環境におけるピアマシンとして動作し得る。マシンは、パーソナルコンピュータ（ＰＣ）、タブレットＰＣ、セットトップボックス（ＳＴＢ）、携帯情報端末（ＰＤＡ）、携帯電話、ウェブ機器、サーバ、ネットワークルータ、スイッチ若しくはブリッジ、又は当該マシンにより取られるべきアクションを指定する（シーケンシャル又はその他の）命令のセットを実行することができる任意のマシンであってもよい。更に、単一のマシンのみが図示されているが、「マシン」という用語はまた、本明細書において検討される方法論のうち任意の１又は複数を実行する命令のセット（又は複数のセット）を個々に、又は共同して実行するマシンの任意の集合を含むと解釈されるものとする。変換ページ及びセクションの実施例は、コンピューティングシステム１３００に実施され得る。
【０１４７】
コンピューティングシステム１３００は、処理デバイス１３０２、メインメモリ１３０４（例えば、リードオンリメモリ（ＲＯＭ）、フラッシュメモリ、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）（同期ＤＲＡＭ（ＳＤＲＡＭ）若しくはＤＲＡＭ（ＲＤＲＡＭ）等のような））、スタティックメモリ１３０６（例えば、フラッシュメモリ、スタティックランダムアクセスメモリ（ＳＲＡＭ）等）、及びデータストレージデバイス１３１８を含み、これらは、バス１３３０を介して互いに通信する。
【０１４８】
処理デバイス１３０２は、マイクロプロセッシングデバイス、中央処理装置等のような、１又は複数の汎用処理デバイスを表す。より具体的には、処理デバイスは、複合命令セットコンピューティング（ＣＩＳＣ）マイクロプロセッシングデバイス、縮小命令セットコンピュータ（ＲＩＳＣ）マイクロプロセッシングデバイス、超長命令語（ＶＬＩＷ）マイクロプロセッシングデバイス、若しくは他の命令セットを実施する処理デバイス、又は命令セットの組み合わせを実施する処理デバイスであってもよい。また、処理デバイス１３０２は、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタル信号処理デバイス（ＤＳＰ）、ネットワーク処理デバイス等のような、１又は複数の特定用途処理デバイスであってもよい。一実施例において、処理デバイス１３０２は、１又は複数の処理デバイスコアを含み得る。処理デバイス１３０２は、本明細書において検討されるオペレーションを実行するための処理ロジック１３２６を実行するように構成される。一実施例において、処理デバイス１３０２は、図１Ａのコンピューティングシステム１００の一部であり得る。あるいは、コンピューティングシステム１３００は、本明細書において説明される他のコンポーネントを含み得る。コアは、（オペレーション又はスレッドの２又はそれより多くの並列セットを実行する）マルチスレッディングをサポートし得、タイムスライスマルチスレッディング、同時マルチスレッディング（物理コアが同時にマルチスレッディングしているスレッドの各々のための論理コアを、単一の物理コアが提供する）、又はこれらの組み合わせ（例えば、タイムスライスフェッチ及びデコードを行い、その後にインテル（登録商標）ハイパースレッディング技術等の同時マルチスレッディングを行う）を含む様々な態様でこれを実行し得ることを理解されたい。
【０１４９】
コンピューティングシステム１３００は、ネットワーク１３２０に通信可能に結合されたネットワークインタフェースデバイス１３０８を更に含み得る。コンピューティングシステム１３００は、動画ディスプレイユニット１３１０（例えば、液晶ディスプレイ（ＬＣＤ）若しくはブラウン管（ＣＲＴ））、英数字入力デバイス１３１２（例えばキーボード）、カーソル制御デバイス１３１４（例えばマウス）、信号生成デバイス１３１６（例えばスピーカ）、又は他の周辺デバイスも含み得る。更に、コンピューティングシステム１３００は、グラフィックス処理ユニット１３２２、動画処理ユニット１３２８、及びオーディオ処理ユニット１３３２を含み得る。別の実施例において、コンピューティングシステム１３００は、チップセット（図示せず）を含み得、これは、処理デバイス１３０２と共に機能するように設計された集積回路若しくはチップのグループを指し、処理デバイス１３０２と外部デバイスとの間の通信を制御する。例えば、チップセットは、処理デバイス１３０２を、メインメモリ１３０４及びグラフィックコントローラ等の超高速デバイスにリンクさせ、並びに処理デバイス１３０２を、ＵＳＢ、ＰＣＩ若しくはＩＳＡバス等の周辺機器の低速周辺バスにリンクさせるマザーボード上のチップのセットであってもよい。
【０１５０】
データストレージデバイス１３１８は、コンピュータ可読ストレージ媒体１３２４を含み得、この上に、本明細書において説明される機能の方法論のうち任意の１又は複数を実施するソフトウェア１３２６が格納されている。また、ソフトウェア１３２６は、コンピューティングシステム１３００により実行される間、命令１３２６としてメインメモリ１３０４内に、及び／又は処理ロジック１３２６として処理デバイス１３０２の内部に、完全に、又は少なくとも部分的に存在し得る。メインメモリ１３０４及び処理デバイス１３０２もコンピュータ可読ストレージ媒体を構成する。
【０１５１】
また、コンピュータ可読ストレージ媒体１３２４は、図１Ａに関して説明されたような処理デバイス１３０２、及び／又は上記のアプリケーションを呼び出す方法を含むソフトウェアライブラリを利用して、命令１３２６を格納するべく用いられ得る。コンピュータ可読ストレージ媒体１３２４は、例示的な実施例において単一の媒体として示されているが、「コンピュータ可読ストレージ媒体」という用語は、１若しくは複数のセットの命令を格納する単一の媒体若しくは複数の媒体（例えば、集中若しくは分散データベース、及び／又は関連するキャッシュ及びサーバ）を含むものと解釈されるべきである。また、「コンピュータ可読ストレージ媒体」という用語は、マシンにより実行する命令のセットを格納、エンコード若しくは搬送することができ、かつ本実施例の方法論のうち任意の１又は複数をマシンに実行させる任意の媒体を含むものと解釈されるものである。従って、「コンピュータ可読ストレージ媒体」という用語は、ソリッドステートメモリ、ならびに光及び磁気媒体を含むが、これらに限定されないものと解釈されるものである。
【０１５２】
以下の例は、更なる実施例に関する。例１は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための処理デバイスである。例１に追加して、処理デバイスが、ソフトウェアアクセスに対してアクセス制御されるメモリ所有権テーブル（ＭＯＴ）と、
処理コアと
を備える。
例１に追加して、処理コアは、
信頼ドメイン（ＴＤ）及びＴＤを管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行し、
ＴＤ又は処理デバイスにより実行される他のＴＤのうち１又は複数のグローバルメタデータを管理するために信頼ドメイン制御構造（ＴＤＣＳ）を維持し、
ＴＤＣＳにより参照される、及びＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、１又は複数の信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）におけるＴＤの実行状態を維持し、
ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子（ＩＤ）を取得し、キーＩＤは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページを復号化することを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化され、
ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得し、
ＭＯＴから取得されたゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答して、ＴＤに割り当てられたメモリページへアクセスすることを可能にする。
【０１５３】
例２において、例１の主題は、
ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介して、ＴＤ、他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうちの少なくとも１つに関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、
を任意で含み得る。例３において、例１〜２の何れか１つの主題は、
ＴＤ−ＴＣＳは、ＴＤＣＳを参照し、ＴＤＣＳは、ＴＤのロジックプロセッサに対応する１又は複数のＴＤ−ＴＣＳのカウントを維持し、ＴＤ−ＴＣＳは、ＴＤのスーパーバイザー実行状態及びユーザ実行状態を格納する、
を任意で含み得る。例４において、例１〜３の何れか１つの主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成される、
を任意で含み得る。
【０１５４】
例５において、例１〜４の何れか１つの主題は、
ＭＫ−ＴＭＥエンジンは、ＴＤのメモリページを暗号化及び復号化すること、及びＴＤに割り当てられた永続メモリに対応するメモリページを暗号化及び復号化することにおける使用のためにＴＤに割り当てられたキーＩＤを介してアクセスされた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して複数のキーＩＤを追跡する、
を任意で含み得る。例６において、例１〜５の何れか１つの主題は、
処理コアは、ＥＰＴによりマッピングされたゲスト物理メモリページにアクセスするためにページウォークオペレーションの一部としてアクセスされたホスト物理メモリページに関してＭＯＴを参照する、
を任意で含み得る。例７において、例１〜６の何れか１つの主題は、
ＴＤは、１又は複数のアプリケーションを管理するオペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理するＶＭＭのうちの少なくとも１つを備え、ＴＤ入力オペレーションが、ＶＭＭのうちの少なくとも１つからＴＤのＯＳへ、又はＴＤＲＭからＴＤのＶＭＭへ、処理コアの動作コンテキストを遷移させる、
を任意で含み得る。
【０１５５】
例８において、例１〜７の何れか１つの主題は、
ＴＤＲＭは、ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、
を任意で含み得る。例９において、例１〜８の何れか１つの主題は、
ＴＤＣＳは、ＴＤの暗号測定をキャプチャする署名構造を備え、暗号測定は、処理デバイスの信頼のハードウェア・ルートにより署名され、署名構造は、暗号測定の検証のために証明団体に提供される、
を任意で含み得る。
【０１５６】
例１０において、例１〜９の何れか１つの主題は、
処理コアは更に、少なくともＴＤＲＭ、ＶＭＭ、又は処理デバイスにより実行される他のＴＤを備えるソフトウェアからのソフトウェアアクセスに対してアクセス制御されるＴＤＣＳにおけるＴＤの測定状態を維持する、
を任意で含み得る。例１１において、例１〜１０の何れか１つの主題は、
ＴＤＲＭは、ＴＤ及び他のＴＤを管理する、
を任意で含み得る。上記の装置の全ての任意の特徴はまた、本明細書に記載の方法又は処理に関して実施され得る。
【０１５７】
例１２は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための方法であって、
処理デバイス上で実行される信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する処理デバイスが、ＴＤ終了イベントを識別する段階と、
ＴＤ終了イベントの識別に応答して、ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）に保存する段階であって、実行状態は、第１暗号化キーで暗号化され、ＴＤ−ＴＣＳは、ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤＲＭ、又はＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する段階と、
ＴＤＲＭに関するＴＤＲＭ実行及び制御状態及び終了情報をロードし、処理デバイスに、ＴＤＲＭのコンテキストにおいて動作させる、段階と
を備える
方法。
【０１５８】
例１３において、例１２の主題は、
ＴＤＲＭのコンテキストにおいて、ＴＤ入力イベントを実行する段階と、
ＴＤＲＭに割り当てられた第２暗合化キーに対応する第２キー識別子（ＩＤ）を利用し、ＴＤＲＭにより指定されたＴＤＲＭ実行制御を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインリソースマネージャ制御構造（ＴＤ−ＲＣＳ）からロードする段階であって、実行状態は、第２暗合化キーで暗号化され、ＴＤ−ＲＣＳは、ＴＤ又は処理デバイスにより実行される他のＶＭのうちの少なくとも１つから拡張ページテーブル（ＥＰＴ）を用いてアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第２キーＩＤからＴＤに対応する第１キーＩＤに修正する段階と、
ユーザ実行状態及びスーパーバイザー実行状態を、ＴＤ−ＴＣＳからロードし、処理デバイスを、ＴＤのコンテキストにおいて動作させる、段階と
を任意で含み得る。例１４において、例１２〜１３の何れか１つの主題は、
ＴＤＣＳ及びＴＤ−ＴＣＳは、処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介して機密保護され、及びアクセス制御され、ＭＯＴは、第１キーＩＤをＴＤに関連付けるＴＤＣＳのための第１のエントリを備え、ＭＯＴは、第１キーＩＤを利用し、ＴＤに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
を任意で含み得る。
【０１５９】
例１５において、例１２〜１４の何れか１つの主題は、
ＭＯＴは、レンジレジスタを介してアクセス制御される、
を任意で含み得る。例１６において、例１２〜１５の何れか１つの主題は、
ＴＤＲＭ実行及び制御状態は、ＥＰＴ及びＭＯＴを介してアクセス制御されるＴＤ−ＲＣＳ構造からロードされ、ＭＯＴは、第２キーＩＤをＴＤ−ＲＣＳを含む物理メモリページと関連付けるＴＤ−ＲＣＳ構造のための第２のエントリを備え、ＭＯＴは、第２キーＩＤを利用し、ＴＤＲＭに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
を任意で含み得る。例１７において、例１２〜１６の何れか１つの主題は、
ＶＭＭは、１又は複数のＴＤを管理するＴＤＲＭを備えるルートＶＭＭであり、ＴＤは、１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ終了は、非ルートＶＭＭ又はＴＤの１又は複数のＶＭからルートＶＭＭ及びＴＤＲＭに処理コアの動作コンテキストを遷移させる、
を任意で含み得る。
【０１６０】
例１８において、例１２〜１７の何れか１つの主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、ＭＫ−ＴＭＥエンジンは、ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介してＴＤに割り当てられた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて参照されるホスト物理ページ毎に１つのキーＩＤで、複数の暗号化キーＩＤを追跡する、
を任意で含み得る。
【０１６１】
例１９は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するためのシステムである。例１９において、システムは、
命令を格納するメモリデバイスと、
メモリデバイスに動作可能に結合された処理デバイスと
を含む。例１９に追加して、処理デバイスは、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する命令であって、ＴＤＲＭは、ＴＤの信頼できるコンピューティングベース（ＴＣＢ）に含まれない、命令と、
ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）におけるＴＤのユーザ実行状態及びスーパーバイザー実行状態を維持する命令と、
ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つの暗号化キー識別子（ＩＤ）を取得する命令であって、キーＩＤは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページを復号化することを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーＩＤを介して識別される暗号化キーで暗号化される、命令と、
ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する命令であって、ゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、ＴＤのコンテキストにおいて実行される処理デバイスに応答して、処理デバイスが、ＴＤに割り当てられたメモリページへアクセスすることを可能にする、命令と
を実行する。
【０１６２】
例２０において、例１９の主題は、
ＶＭＭは、拡張ページテーブル（ＥＰＴ）を介してＴＤ、他のＴＤ、又は１又は複数の仮想マシン（ＶＭ）のうち１又は複数に関してメモリ管理を提供するＴＤＲＭコンポーネントを備える、
を任意で含み得る。例２１において、例１９〜２０の何れか１つの主題は、
ＴＤ−ＴＣＳは、ＴＤのロジックプロセッサに対応し、ＴＤ−ＴＣＳは、ＴＤのユーザ実行状態及びスーパーバイザー実行状態を、ＴＤ終了オペレーション上に格納し、ＴＤのユーザ及びスーパーバイザー実行状態を、ＴＤ入力オペレーション上にロードし、ＴＤ−ＴＣＳは、ＴＤＲＭ、ＶＭＭ、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、
を任意で含み得る。例２２において、例１９〜２１の何れか１つの主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、ＭＫ−ＴＭＥエンジンは、ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介してＴＤに割り当てられた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて各エントリと関連付けられた１つのキーＩＤを介して複数の暗号化キーＩＤを追跡する、
を任意で含み得る。
【０１６３】
例２３において、例１９〜２２の何れか１つの主題は、
ＶＭＭは、ＴＤを管理するＴＤＲＭを備え、ＴＤは、オペレーティングシステム（ＯＳ）、又は１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ入力オペレーションが、ＴＤＲＭからＴＤの非ルートＶＭＭへ、処理コアの動作コンテキストを遷移させる、
を任意で含み得る。上記のシステムの全ての任意の特徴はまた、本明細書に記載の方法又は処理に関して実施され得る。
【０１６４】
例２４は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための非一時的コンピュータ可読媒体である。例２４において、非一時的機械可読媒体は、
処理デバイスによりアクセスされる場合に、処理デバイスに、
信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する処理デバイスが、処理デバイスが、ＴＤＲＭのコンテキストにおいて実行している間に、ＴＤ入力イベントを識別する段階と、
ＴＤ入力イベントの識別に応答して、ＴＤＲＭに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤＲＭのＴＤＲＭ制御状態を、ＴＤＲＭに対応する信頼ドメインリソースマネージャ制御構造（ＴＤＲＣＳ）からロードする段階であって、ＴＤＲＭ制御状態は、第１暗号化キーで暗号化され、ＴＤＲＣＳは、ＴＤ、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤに割り当てられた第２暗合化キーに対応する第２キーＩＤに修正する段階と、
信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）から、ＴＤのＴＤユーザ実行状態及びスーパーバイザー実行状態をロードし、処理デバイスに、ＴＤのコンテキストにおいて動作させる段階であって、ＴＤ−ＴＣＳは、ＴＤＲＭ、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、段階と
を備えるオペレーションを実行させるデータを含む。
【０１６５】
例２５において、例２４の主題は、
ＴＤＲＭのコンテキストにおいて、ＴＤ入力イベントを実行する段階と、
ＴＤＲＭに割り当てられた第２暗合化キーに対応する第２キー識別子（ＩＤ）を利用し、ＴＤＲＭにより指定されたＴＤＲＭ実行制御を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインリソースマネージャ制御構造（ＴＤ−ＲＣＳ）からロードする段階であって、実行状態は、第２暗合化キーで暗号化され、ＴＤ−ＲＣＳは、ＴＤ又は処理デバイスにより実行される他のＶＭのうちの少なくとも１つから拡張ページテーブル（ＥＰＴ）を用いてアクセス制御される、段階と、
処理デバイスのキーＩＤ状態を、第２キーＩＤからＴＤに対応する第１キーＩＤに修正する段階と、
ユーザ実行状態及びスーパーバイザー実行状態を、ＴＤ−ＴＣＳからロードし、処理デバイスを、ＴＤのコンテキストにおいて動作させる、段階と
を任意で含み得る。
【０１６６】
例２６において、例３０〜３１の主題は、
ＴＤＣＳ及びＴＤ−ＴＣＳは、処理デバイスのメモリ所有権テーブル（ＭＯＴ）を介して機密保護及びアクセス制御され、ＭＯＴは、第１キーＩＤをＴＤに関連付けるＴＤＣＳのための第１のエントリを備え、ＭＯＴは、第１キーＩＤを利用し、ＴＤに対応するメモリページへのメモリアクセスのためのメモリ機密を強制する、
を任意で含み得る。例２７において、例３０〜３２の主題は、
ＭＯＴは、レンジレジスタを介してアクセス制御される、
を任意で含み得る。 
【０１６７】
例２８において、例３０〜３３の主題は、
ＴＤＲＭ実行及び制御状態は、ＥＰＴ及びＭＯＴを介してアクセス制御されるＴＤ−ＲＣＳ構造からロードされ、ＭＯＴは、第２キーＩＤをＴＤ−ＲＣＳを含む物理メモリページと関連付けるＴＤ−ＲＣＳ構造のための第２のエントリを備え、ＭＯＴは、第２キーＩＤを利用し、ＴＤＲＭに対応するメモリページへのメモリアクセスのためのメモリ機密性を強制する、
を任意で含み得る。
【０１６８】
例２９において、例３０〜３４の主題は、
ＶＭＭは、１又は複数のＴＤを管理するＴＤＲＭを備えるルートＶＭＭであり、ＴＤは、１又は複数の仮想マシン（ＶＭ）を管理する非ルートＶＭＭを備え、ＴＤ終了は、非ルートＶＭＭ又はＴＤの１又は複数のＶＭからルートＶＭＭ及びＴＤＲＭに処理コアの動作コンテキストを遷移させる、
を任意で含み得る。例３０において、例３０〜３５の主題は、
暗号化キーは、処理デバイスのマルチキートータルメモリ暗号化（ＭＫ−ＴＭＥ）エンジンにより生成され、ＭＫ−ＴＭＥエンジンは、ＴＤのエフェメラルメモリページ又は永続メモリページを暗号化することにおける使用のために、キーＩＤを介してＴＤに割り当てられた複数の暗号化キーを生成し、ＭＯＴは、ＭＯＴにおいて参照されるホスト物理ページ毎に１つのキーＩＤで、複数の暗号化キーＩＤを追跡する、
を任意で含み得る。
【０１６９】
例３１は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するための装置であり、装置は、
処理デバイスが、信頼ドメイン（ＴＤ）を管理する信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行するための手段であって、ＴＤは、処理デバイスにより実行される、手段と、
ＴＤ又は処理デバイスにより実行される他のＴＤのうち１又は複数のグローバルメタデータを管理するために信頼ドメイン制御構造（ＴＤＣＳ）を維持するための手段と、
ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、１又は複数の信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）におけるＴＤの実行状態を維持するための手段と、
ＭＯＴを参照し、ＴＤに割り当てられた暗号化キーに対応する少なくとも１つのキー識別子（ＩＤ）を取得し、キーＩＤは、処理デバイスが、ＴＤのコンテキストにおいて実行される処理デバイスに応答してＴＤに割り当てられたメモリページに機密アクセスすることを可能にし、ＴＤに割り当てられたメモリページは、暗号化キーで暗号化される、手段と、
ＭＯＴを参照し、ＴＤに割り当てられたホスト物理メモリページに対応するゲスト物理アドレスを取得する手段であって、ＭＯＴから取得されたゲスト物理アドレスを、アクセスされたゲスト物理アドレスと一致させることは、ＴＤのコンテキストにおいて実行される処理デバイスに応答して、処理デバイスに、ＴＤに割り当てられたメモリページへのアクセスを可能にする、手段と
を備える。例３２において、例３１の主題は、例２から１１の何れか１つの主題を含むように更に構成された装置を任意で含み得る。
【０１７０】
例３３は、信頼ドメインを用いて仮想化されたシステムにおける分離を提供するためのシステムであって、システムは、命令を格納するメモリデバイスと、メモリデバイスに動作可能に結合された処理コアとを備える。例３３に追加して、処理コアは、
処理デバイス上で実行される信頼ドメイン（ＴＤ）を管理する、信頼ドメインリソースマネージャ（ＴＤＲＭ）を実行する、
ＴＤ終了イベントを識別する、
ＴＤ終了イベントの識別に応答して、ＴＤに割り当てられた第１暗号化キーに対応する第１キー識別子（ＩＤ）を利用し、ＴＤのＴＤスーパーバイザー実行状態及びユーザ実行状態を、ＴＤに割り当てられたロジックプロセッサに対応する信頼ドメインスレッド制御構造（ＴＤ−ＴＣＳ）に保存することであって、実行状態は、第１暗号化キーで暗号化され、ＴＤ−ＴＣＳは、ＴＤＲＭ、仮想マシンマネージャ（ＶＭＭ）、又は処理デバイスにより実行される他のＴＤのうちの少なくとも１つからのソフトウェアアクセスに対してアクセス制御される、
処理デバイスのキーＩＤ状態を、第１キーＩＤから、ＴＤＲＭ、又はＶＭＭのうちの少なくとも１つに対応する第２キーＩＤに修正する、及び
ＴＤＲＭに関するＴＤＲＭ実行及び制御状態及び終了情報をロードし、処理デバイスに、ＴＤＲＭのコンテキストにおいて動作させる。例３４において、例３３の主題は、例１３〜１８の何れか１つの主題を任意で含み得る。
【０１７１】
例３５は、メモリと、メモリに結合された処理デバイスとを備える、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することを実施するための装置であり、処理デバイスは、例１２〜１８の何れかの方法を実行する。例３６は、例１２〜１８の何れか１つの方法を実行するための手段を備える、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することを実施するための装置である。例３７は、コンピューティングデバイス上で実行されることに応答して、コンピューティングデバイスに例１２〜１８の何れか１つに係る方法を実行させる複数の命令を備えた、少なくとも１つの機械可読媒体である。例における具体的事柄は、１又は複数の実施形態の何れの箇所でも用いられ得る。
【０１７２】
本開示は、限定された数の実施例に関して説明されたが、当業者であればそこから様々な修正形態及び改変形態を理解するであろう。添付の特許請求の範囲が、本開示の真の趣旨及び範囲内に含まれるそのような全ての修正形態及び改変形態を包含することが意図される。
【０１７３】
本明細書における説明において、本開示の完全な理解を提供するべく、特定のタイプの処理デバイス及びシステム構成、特定のハードウェア構造、特定のアーキテクチャ及びマイクロアーキテクチャの詳細、特定のレジスタ構成、特定の命令型、特定のシステムコンポーネント、特定の寸法／高さ、特定の処理デバイスパイプライン段階、及びオペレーションの例等のような、様々な具体的な詳細を記載している。しかしながら、本開示を実施するのにこれらの具体的な詳細を使用する必要がないことは、当業者にとって明らかであろう。他の例において、特定の代替的処理デバイスアーキテクチャ、説明されたアルゴリズムの特定のロジック回路／コード、特定のファームウェアコード、特定の相互接続動作、特定のロジック構成、特定の製造技術及び材料、特定のコンパイラ実装、コード中の特定のアルゴリズム表現、特定のパワーダウン及びゲーティング技術／ロジック、並びに他の特定のコンピュータシステムの動作可能な詳細等、よく知られたコンポーネント又は方法は、本開示を不必要に不明瞭にするのを回避するべく、詳細には説明されない。
【０１７４】
実施例は、コンピューティングプラットフォーム又はマイクロプロセッシングデバイス等における特定の集積回路の、信頼ドメインを用いて仮想化されたシステムにおける分離を提供することを参照して説明されている。また、実施例は、他のタイプの集積回路及びプログラマブルロジックデバイスに適用可能であり得る。例えば、開示された実施例は、デスクトップコンピュータシステム又はインテル（登録商標）のウルトラブック（商標）コンピュータ等、携帯型コンピュータに限定されない。また、ハンドヘルドデバイス、タブレット、他の薄いノートブック、システムオンチップ（ＳｏＣ）デバイス、及びエンベデッドアプリケーション等、他のデバイスにおいても使用され得る。ハンドヘルドデバイスのいくつかの例としては、携帯電話、インターネットプロトコルデバイス、デジタルカメラ、携帯情報端末（ＰＤＡ）及びハンドヘルドＰＣが挙げられる。通常、エンベデッドアプリケーションは、マイクロコントローラ、デジタル信号処理デバイス（ＤＳＰ）、システムオンチップ、ネットワークコンピュータ（ＮｅｔＰＣ）、セットトップボックス、ネットワークハブ、広域ネットワーク（ＷＡＮ）スイッチ、又は、以下で教示される機能及びオペレーションを実行し得る任意の他のシステムを含む。システムは、任意の種類のコンピュータ又はエンベデッドシステムであり得ることが説明される。開示された実施例は特に、ウェアラブルデバイス（例えば腕時計）、電子インプラント、感覚・制御インフラストラクチャデバイス、コントローラ、監視及び制御データ収集（ＳＣＡＤＡ）システム等のローエンドデバイスに用いられ得る。更に、本明細書において説明される装置、方法及びシステムは、物理的コンピューティングデバイスに限定されないが、エネルギー管理及び効率性のためのソフトウェア最適化にも関連し得る。以下の説明において容易に明らかになるように、本明細書において説明される方法、装置及びシステムの実施例（ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせを指すか否かに関係なく）は、性能についての考慮とバランスのとれた「グリーン技術」の将来に必須である。
【０１７５】
本明細書における実施例は処理デバイスを参照して説明されるが、他の実施例が、他のタイプの集積回路及びロジックデバイスに適用可能である。本開示の実施例の類似する技術及び教示が、より高いパイプラインスループット及び改善された性能から利益を受け得る、他のタイプの回路又は半導体デバイスに適用され得る。本開示の実施例の教示は、データ操作を実行する任意の処理デバイス又は機械に適用可能である。しかしながら、本開示は、５１２ビット、２５６ビット、１２８ビット、６４ビット、３２ビット、若しくは１６ビットデータのオペレーションを実行する処理デバイス若しくは機械に限定されず、データの操作若しくは管理が実行される任意の処理デバイス及び機械に適用され得る。更に、本明細書における説明は、例を提供し、添付の図面は、図示を目的として様々な例を示す。しかしながら、これらの例は、本開示の実施例の例を提供するのみならず、本開示の実施例の可能な限り全ての実施例における包括的列挙を提供することを単に意図するので、限定的意味に解釈されるべきではない。
【０１７６】
以下の例は、実行ユニット及びロジック回路の文脈における命令処理及び分散を説明するが、機械により実行されると、機械に本開示の少なくとも１つの実施例と一致する機能を実行させる機械可読な有形媒体上に格納されたデータ又は命令により、本開示の他の実施例が達成され得る。一実施例において、本開示の実施例に関連する機能は、機械実行可能な命令で実施される。命令は、命令によりプログラミングされた汎用又は特定用途処理デバイスに、本開示の段階を実行させるべく用いられ得る。本開示の実施例は、コンピュータプログラム製品又はソフトウェアとして提供され得、これらは、本開示の実施例に係る１又は複数のオペレーションを実行するようにコンピュータ（又は他の電子デバイス）をプログラミングするべく用いられ得る命令を格納した機械又はコンピュータ可読媒体を含み得る。あるいは、本開示の実施例のオペレーションは、これらのオペレーションを実行する固定機能ロジックを含む特定のハードウェアコンポーネント、又はプログラミングされたコンピュータコンポーネント及び固定機能ハードウェアコンポーネントの任意の組み合わせにより実行され得る。
【０１７７】
本開示の実施例を実行するロジックをプログラミングするのに用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他のストレージ等のシステムのメモリ内に格納され得る。更に、これらの命令は、ネットワークを介して、又は、他のコンピュータ可読媒体により配信され得る。従って、機械可読媒体は、機械（例えばコンピュータ）により可読な形態で情報を格納又は送信する任意のメカニズムを含み得るが、電気、光、アコースティック若しくは他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）により、インターネットを介する情報の送信に用いられるフロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ‐ＲＯＭ）、及び磁気光ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、又は有形機械可読ストレージに限定されない。従って、コンピュータ可読媒体としては、機械（例えばコンピュータ）により可読な形態で電子命令又は情報を格納又は送信するのに好適の任意のタイプの有形機械可読媒体が挙げられる。
【０１７８】
設計は、生成からシミュレーションを経由して製造へと様々な段階を経る場合がある。設計を表すデータは、いくつかの態様でその設計を表現し得る。まず、シミュレーションで有用なように、ハードウェアは、ハードウェア記述言語、又は別の機能記述言語を用いて表され得る。更に、ロジック及び／又はトランジスタゲートを用いる回路レベルモデルは、設計処理のいくつかの段階において生成され得る。更に、いくつかの段階では、大部分の設計が、ハードウェアモデルで様々なデバイスの物理的配置を表すデータのレベルに達する。従来の半導体製造技術が使用される場合、ハードウェアモデルを表すデータは、集積回路の製造に用いられるマスクのための異なるマスク層に、様々な機能が存在するか、又は存在しないかを指定するデータであり得る。設計の任意の表現において、データは、機械可読媒体に任意の形態で格納され得る。メモリ、又は、ディスク等の磁気若しくは光ストレージは、変調された光又は電気の波を介して送信される情報を、又は、そうした情報を送信するために別途生成された情報を格納する機械可読媒体であってもよい。コード又は設計を示し、又は搬送する電気的な搬送波が送信される場合に、その電気信号のコピー、バッファ処理、又は再送信が実行される程度において、新しいコピーが作成される。従って、通信プロバイダ又はネットワークプロバイダは、搬送波へエンコードされた情報等、本開示の実施例における技術を実施する物品を、有形の機械可読媒体に少なくとも一時的に格納してもよい。
【０１７９】
本明細書において用いられるモジュールは、ハードウェア、ソフトウェア及び／又はファームウェアの任意の組み合わせを指す。例として、モジュールは、マイクロコントローラにより実行されるように適合されたコードを格納する非一時的媒体に関連したマイクロコントローラ等のハードウェアを含む。従って、一実施例において、モジュールは、ハードウェアを指し、具体的には、ハードウェアは、非一時的媒体上に保持されるべきコードを認識及び／又は実行するように構成されている。更に、別の実施例において、モジュールを用いる場合、コードを含む非一時的媒体を指し、具体的には、コードは予め定められたオペレーションを実行するべく、マイクロコントローラにより実行されるように適合されている。なおも別の実施例において、推測されるように、（本例における）モジュールという用語は、マイクロコントローラ及び非一時的媒体の組み合わせを指す場合がある。多くの場合、別個に図示されるモジュールの境界線は一般に異なり、潜在的には重複する。例えば、第１及び第２のモジュールは、ハードウェア、ソフトウェア、ファームウェア、又はそれらの組み合わせを共有するが、潜在的には、いくつかの独立したハードウェア、ソフトウェア又はファームウェアを保持し得る。一実施例において、ロジックという用語を用いる場合、トランジスタ、レジスタ等のハードウェア、又は、プログラマブルロジックデバイス等の他のハードウェアを含む。 
【０１８０】
一実施例において、「ように構成される」という文言を用いる場合、指定又は決定されたタスクを実行するべく、装置、ハードウェア、ロジック又は要素を、配置し、組み立て、製造し、販売の申出をし、輸入し、及び／又は、設計することを指す。この例においては、動作していない装置又はその要素が、指定されたタスクを実行するべく設計され、結合され、及び／又は相互接続されている場合には、依然として、指定された当該タスクを実行する「ように構成され」ている。純粋に図示的な例として、ロジックゲートは、動作の間は、０又は１を提供し得る。しかし、イネーブル信号をクロックへ提供する「ように構成される」ロジックゲートは、１又は０を提供し得る全ての潜在的なロジックゲートを含むわけではない。代わりに、ロジックゲートは、動作中に１又は０の出力がクロックをイネーブルにするように、いくつかの態様で結合されているものである。「ように構成される」という用語を用いる場合、動作を必要とはせず、その代わりに、装置、ハードウェア及び／又は要素の隠れた状態に焦点を当てたものであって、その隠れた状態において、装置、ハードウェア及び／又は要素は、装置、ハードウェア及び／又は要素が動作している場合に特定のタスクを実行するように設計されていることに再度留意されたい。 
【０１８１】
更に、「するべく」、「することができる」、及び又は「動作可能な」という文言を用いる場合、一実施例において、指定されたように装置、ロジック、ハードウェア及び／又は要素を用いることを可能にするように、いくつかの装置、ロジック、ハードウェア、及び／又は要素が設計されていることを指す。上記のように、一実施例における「するべく」、「することができる」、又は「動作可能な」を用いる場合、装置、ロジック、ハードウェア及び／又は要素の隠れた状態を指し、装置、ロジック、ハードウェア及び／又は要素は、動作をしているのではなく、指定されたように装置を用いることを可能にするように設計されていることに留意されたい。
【０１８２】
本明細書中で用いられる値は、数、状態、ロジック状態、又はバイナリロジック状態についての任意の既知の表現を含み得る。多くの場合、ロジックレベル、ロジック値又は論理値という使用はまた、「１の」及び「０の」とも称され、それは単純にバイナリロジック状態を表す。例えば、１は高ロジックレベルを、０は低ロジックレベルを指す。一実施例において、トランジスタ又はフラッシュセル等のストレージセルは、単一の論理値又は多重の論理値を保持することができる場合がある。しかしながら、コンピュータシステムでは、他の値の表現が用いられてきた。例えば、１０進数の１０はまた、バイナリ値１０１０として、１６進数では文字Ａとして、表され得る。従って、値は、コンピュータシステムにおいて保持することが可能な情報の任意の表現を含む。
【０１８３】
更に、状態が、値又は値の部分により表され得る。例として、ロジック１等の第１の値が、既定又は初期の状態を表し得るが、ロジックゼロ等の第２の値は、非既定状態を表し得る。更に、一実施例において、リセット及びセットという用語は、既定及び更新された値又は状態を、各々指す。例えば、既定値は潜在的に高論理値、即ち、リセットを含むが、更新された値は潜在的に低論理値、即ち、セットを含む。値の任意の組み合わせが、任意の状態の数を表すべく利用され得ることに留意されたい。
【０１８４】
上記の方法、ハードウェア、ソフトウェア、ファームウェア又はコードの実施例は、機械アクセス可能、機械可読、コンピュータアクセス可能、又はコンピュータ可読媒体であって、かつ処理要素によって実行可能な媒体に格納された命令又はコードによって、実施され得る。非一時的機械アクセス可能／可読媒体は、コンピュータ又は電子システム等の機械により読み取り可能な形態で情報を提供する（即ち、格納及び／又は送信する）任意のメカニズムを含む。例えば、非一時的機械アクセス可能媒体としては、スタティックＲＡＭ（ＳＲＡＭ）又はダイナミックＲＡＭ（ＤＲＡＭ）等のランダムアクセスメモリ（ＲＡＭ）、ＲＯＭ、磁気又は光ストレージ媒体、フラッシュメモリデバイス、電気ストレージデバイス、光ストレージデバイス、音響ストレージデバイス、一時的な（伝搬された）信号（例えば、搬送波、赤外線信号、デジタル信号）、等から受信した情報を保持する他の形態のストレージデバイスが挙げられ、これらは、情報をそれ自身から受信できる非一時的媒体とは区別される。本開示の実施例を実行するロジックをプログラミングするのに用いられる命令は、ＤＲＡＭ、キャッシュ、フラッシュメモリ、又は他のストレージ等のシステムのメモリ内に格納され得る。更に、これらの命令は、ネットワークを介して、又は、他のコンピュータ可読媒体により配信され得る。従って、機械可読媒体は、機械（例えばコンピュータ）により可読な形態で情報を格納又は送信する任意のメカニズムを含み得るが、電気、光、アコースティック若しくは他の形態の伝搬信号（例えば、搬送波、赤外線信号、デジタル信号等）により、インターネットを介する情報の送信に用いられるフロッピー（登録商標）ディスケット、光ディスク、コンパクトディスクリードオンリメモリ（ＣＤ‐ＲＯＭ）、及び磁気光ディスク、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、消去可能プログラマブルリードオンリメモリ（ＥＰＲＯＭ）、電気的消去可能プログラマブルリードオンリメモリ（ＥＥＰＲＯＭ）、磁気又は光カード、フラッシュメモリ、又は有形機械可読ストレージに限定されない。従って、コンピュータ可読媒体としては、機械（例えばコンピュータ）により可読な形態で電子命令又は情報を格納又は送信するのに好適の任意のタイプの有形機械可読媒体が挙げられる。
【０１８５】
本明細書全体で「一実施例」又は「実施例」に言及する場合、その実施例に関連して説明された特定の機能、構造又は特性が、本開示の少なくとも１つの実施例に含まれることを意味する。従って、本明細書を通して、様々な箇所における「一実施例において」又は「ある実施例において」という文言が現れても、必ずしも全てが同一の実施例を指している訳ではない。更に、特定の機能、構造、又は特性は、１又は複数の実施例において、任意の好適な形で組み合わされ得る。
【０１８６】
上述の説明において、詳細な説明は、特定の例示的な実施例を参照して提供される。しかしながら、添付の特許請求の範囲で記載される本開示のより広い趣旨及び範囲から逸脱することなく、様々な修正及び変更がなされ得ることは明らかであろう。従って、明細書及び図面は、限定的意味ではなく、例示的意味で顧慮されるものである。更に、上述の実施例、実施形態、及び／又は他の例示的な言語を用いる場合、同一の実施例又は同一の例を必ずしも指すわけではなく、異なる別個の実施例、並びに潜在的に同一の実施例を指す場合がある。
【０１８７】
詳細な説明のいくつかの部分は、コンピュータメモリ内におけるデータビットに基づくオペレーションのアルゴリズム及びシンボル表現の観点から提示されている。これらのアルゴリズムの記載及び表現は、他の当業者に彼らの作業の実体を最も有効に伝達するべくデータ処理の当業者により用いられる手段である。アルゴリズムは、ここでは、通常、所望の結果をもたらす、オペレーションの自己矛盾のないシーケンスと考えられる。オペレーションは、物理量の物理的操作を必要とするものである。通常、必ずしもではないが、これらの量は、格納し、転送し、組み合わせ、比較し、または操作することができる電気信号又は磁気信号の形態を取る。主として、これらの信号をビット、値、要素、記号、文字、用語、数等として参照することは、共通に用いるという理由から時に好都合であることが明らかになっている。本明細書において説明されるブロックは、ハードウェア、ソフトウェア、ファームウェア、又はこれらの組み合わせであり得る。 
【０１８８】
しかしながら、これら及び類似の用語の全ては、適切な物理量に関連するものであり、これらの量に適用される便宜的標記にすぎないことを念頭に置かれたい。上記検討から明らかなように、別途具体的に記載されない限り、本明細書全体を通して「規定する」、「受信する」、「判断する」、「発行する」、「リンクする」、「関連する」、「取得する」、「認証する」、「阻止する」、「実行する」、「要求する」、「通信する」等の用語を利用して検討する場合、コンピューティングシステム、又はコンピューティングシステムのレジスタ及びメモリ内で物理的（例えば、電子）量として表されたデータを、コンピューティングシステムメモリ若しくはレジスタ、又は他のそのような情報ストレージ、送信若しくはディスプレイデバイス内で物理量として同様に表された他のデータに操作及び変換する類似の電子コンピューティングデバイスにおけるアクション又は処理を指すことを理解されたい。
【０１８９】
本明細書で用いられる「例」又は「例示的」なる文言は、例示、例又は図示として役立つことを意味する。「例」又は「例示的」として本明細書において説明される任意の態様又は設計は、他の態様又は設計に対して好ましいか、又は有利なものとして必ずしも解釈されるものではない。むしろ、「例」又は「例示的」の文言を用いる場合、具体的な様式における概念を提示することが意図される。本願において用いられるように、「又は」という用語は、排他的な「又は」というよりはむしろ包含的な「又は」を意味することを意図する。つまり、別途指定され、又は文脈から明らかでない限り、「ＸはＡ又はＢを含む」は、自然な包括的順列の何れかを意味することを意図する。即ち、ＸがＡを含むか、ＸがＢを含むか、又はＸがＡ及びＢの両方を含むとき、上述の例の何れかの下において「Ｘは、Ａ又はＢを含む」が満たされる。更に、本願及び添付の特許請求の範囲において用いられる冠詞「ａ」及び「ａｎ」は一般に、別途指定され、又は単数形を対象とすることが文脈から明らかでない限り、「１又は複数」を意味するものと解釈される。更に、全体を通して「実施形態」若しくは「一実施形態」、又は「実施例」若しくは「一実施例」という用語を用いる場合、そのように説明されない限り、同一の実施形態又は実施例を意味することを意図しない。また、「第１」、「第２」、「第３」、「第４」等の用語は、本明細書において用いられるとき、異なる要素を区別するための指標として意図されており、必ずしもそれらの数字指定に従った序数の意味を有するものではない場合がある。
【外国語明細書】
2019053720000001.pdf