(57)【要約】      （修正有）【課題】複数の暗号的に分離されたドメインを実装するプラットフォームにおいて、機密性、完全性を維持しつつ暗号ドメイン間にメモリページを動的に割り振る装置を提供する。【解決手段】動作環境１００におけるプラットフォーム１０２は、暗号ドメイン１０４−１〜１０４−ｎに仮想マシン（ＶＭ）１０６−１〜１０６−ｎを実装する。リソース割り振りマネージャ（ＲＭＧＲ）１０８は、ハードウェアリソース１１０を暗号ドメイン１０４間に動的に割り振る。ＲＭＧＲは、第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および第１のＶＭに割り振られたメモリページのアドレスを特定し、第１の鍵識別子に基づいて、第１のＶＭに関連付けられたキャッシュラインを無効化し、第２の鍵識別子に基づいて、メモリページについてのメッセージ認証コード（ＭＡＣ）を生成し、メモリページを第２のＶＭに割り振る。【選択図】図１Ａ
2019185744.tif 000002
【特許請求の範囲】
【請求項１】
リソース割り振り管理のための装置であって、
ロジックを備え、前記ロジックの少なくとも一部分が回路に実装され、前記ロジックは、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定し、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化し、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成し、
前記メモリページを前記第２のＶＭに割り振る、
装置。
【請求項２】
前記ロジックは、
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化し、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成する、
請求項１に記載の装置。
【請求項３】
前記ロジックは、ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化する、請求項１に記載の装置。
【請求項４】
前記ロジックは、前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する、請求項３に記載の装置。
【請求項５】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項３に記載の装置。
【請求項６】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項３に記載の装置。
【請求項７】
前記ロジックは、前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定する、請求項１に記載の装置。
【請求項８】
前記ロジックは、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成する、請求項１に記載の装置。
【請求項９】
前記ロジックは、前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成し、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項１に記載の装置。
【請求項１０】
前記ロジックは、前記処理コアセットにおける各処理コアからの確認応答を特定し、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項９に記載の装置。
【請求項１１】
前記ロジックは、前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化する、請求項１に記載の装置。
【請求項１２】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項１１に記載の装置。
【請求項１３】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項１に記載の装置。
【請求項１４】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項１に記載の装置。
【請求項１５】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項１に記載の装置。
【請求項１６】
前記ロジックは、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定し、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成する、
請求項１に記載の装置。
【請求項１７】
リソース割り振り管理のための方法であって、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定する段階と、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化する段階と、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成する段階と、
前記メモリページを前記第２のＶＭに割り振る段階と
を備える方法。
【請求項１８】
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化する段階と、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成する段階と
を備える、請求項１７に記載の方法。
【請求項１９】
ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化する段階を備える、請求項１７に記載の方法。
【請求項２０】
前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する段階を備える、請求項１９に記載の方法。
【請求項２１】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項１９に記載の方法。
【請求項２２】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項１９に記載の方法。
【請求項２３】
前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定する段階を備える、請求項１７に記載の方法。
【請求項２４】
リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成する段階を備える、請求項１７に記載の方法。
【請求項２５】
前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成する段階を備え、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項１７に記載の方法。
【請求項２６】
前記処理コアセットにおける各処理コアからの確認応答を特定する段階を備え、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項２５に記載の方法。
【請求項２７】
前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化する段階を備える、請求項１７に記載の方法。
【請求項２８】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項２７に記載の方法。
【請求項２９】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項１７に記載の方法。
【請求項３０】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項１７に記載の方法。
【請求項３１】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項１７に記載の方法。
【請求項３２】
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定する段階と、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成する段階と
を備える、請求項１７に記載の方法。
【請求項３３】
プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定することと、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化することと、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成することと、
前記メモリページを前記第２のＶＭに割り振ることと
を行わせる命令セットを備える少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３４】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化することと、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成することと
を行わせる命令を備える、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３５】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化することを行わせる命令を備える、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３６】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用することを行わせる命令を備える、請求項３５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３７】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項３５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３８】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項３５に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項３９】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定することを行わせる命令を備える、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４０】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成することを行わせる命令を備える、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４１】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成することを行わせる命令を備え、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４２】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記処理コアセットにおける各処理コアからの確認応答を特定することを行わせる命令を備え、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項４１に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４３】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化することを行わせる命令を備える、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４４】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項４３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４５】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４６】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４７】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４８】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定することと、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成することと
を行わせる命令を備える、請求項３３に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【請求項４９】
リソース割り振り管理のための装置であって、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定するための手段と、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化するための手段と、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成するための手段と、
前記メモリページを前記第２のＶＭに割り振るための手段と
を備える装置。
【請求項５０】
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化するための手段と、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成するための手段と
を備える、請求項４９に記載の装置。
【請求項５１】
ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化するための手段を備える、請求項４９に記載の装置。
【請求項５２】
前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用するための手段を備える、請求項５１に記載の装置。
【請求項５３】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項５１に記載の装置。
【請求項５４】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項５１に記載の装置。
【請求項５５】
前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定するための手段を備える、請求項４９に記載の装置。
【請求項５６】
リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成するための手段を備える、請求項４９に記載の装置。
【請求項５７】
前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成するための手段を備え、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項４９に記載の装置。
【請求項５８】
前記処理コアセットにおける各処理コアからの確認応答を特定するための手段を備え、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項５７に記載の装置。
【請求項５９】
前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化するための手段を備える、請求項４９に記載の装置。
【請求項６０】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項５９に記載の装置。
【請求項６１】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項４９に記載の装置。
【請求項６２】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項４９に記載の装置。
【請求項６３】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項４９に記載の装置。
【請求項６４】
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定するための手段と、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成するための手段と
を備える、請求項４９に記載の装置。
【発明の詳細な説明】
【背景技術】
【０００１】
暗号法は、第三者の存在下におけるセキュアな通信のための技法の実践および研究を指すものであってよい。より一般には、暗号法は、第三者に機密データを読み取られることを防ぐ方式の構築および解析に関する。応用において、暗号法は、暗号化および復号のうちの１または複数を伴う場合がある。暗号化は、平文と称される通常の情報を暗号文と称される難解な一連の記号に変換するプロセスである場合があり、復号は、暗号文を平文に再変換するプロセスである場合がある。典型的には、暗号システムは、データを平文と暗号文との間で変換したり再変換したりするアルゴリズムのペアを含んでよい。様々な実施形態において、暗号システムは、平文と暗号文との間の変換を行うために鍵を用いてよい。
【図面の簡単な説明】
【０００２】
【図１Ａ】複数の暗号ドメインを有するプラットフォームの一実施形態を例示する。
【図１Ｂ】複数の暗号ドメインを有するプラットフォームの一実施形態を例示する。
【０００３】
【図２Ａ】暗号ドメイン間における第１のリソース利用の一実施形態を例示する。
【図２Ｂ】暗号ドメイン間における第１のリソース利用の一実施形態を例示する。
【図２Ｃ】暗号ドメイン間における第１のリソース利用の一実施形態を例示する。
【０００４】
【図３Ａ】暗号ドメイン間における第２のリソース利用の一実施形態を例示する。
【図３Ｂ】暗号ドメイン間における第２のリソース利用の一実施形態を例示する。
【図３Ｃ】暗号ドメイン間における第２のリソース利用の一実施形態を例示する。
【０００５】
【図４】第１のロジックフローの一実施形態を例示する。
【０００６】
【図５】第２のロジックフローの一実施形態を例示する。
【０００７】
【図６】第３のロジックフローの一実施形態を例示する。
【０００８】
【図７】記憶媒体の一実施形態を例示する。
【０００９】
【図８】コンピューティングアーキテクチャの一実施形態を例示する。
【００１０】
【図９】通信アーキテクチャの一実施形態を例示する。
【発明を実施するための形態】
【００１１】
様々な実施形態は一般に、例として複数の暗号的に分離されたドメインを実装するプラットフォームにおけるメモリページに関するものなどの、暗号ドメイン間における動的リソース割り振りのための技法を対象とする。いくつかの実施形態は特に、完全性に関する機能的正確性を確実にしつつ、暗号的に分離された仮想マシン（ＶＭ）間におけるページ再割り当てを可能とするリソース割り振りマネージャ（ＲＭＧＲ）を含むプラットフォームを対象とする。多くの実施形態において、ＲＭＧＲは、メモリページのための効率的な鍵再割り当てを有効にする新たな命令についてのハードウェアサポートおよび／またはソフトウェアサポートを含んでよい。いくつかの実施形態において、ＲＭＧＲは、仮想マシンモニタ（ＶＭＭ）に含まれてよい、またはこれにより実装されてよい。一実施形態において、例えば、リソース割り振り管理のための装置は、ロジックであって、当該ロジックの少なくとも一部分が回路に実装されたロジックを含んでよい。様々な実施形態において、ロジックは、第１のＶＭに関連付けられた第１の鍵識別子、および第２のＶＭに関連付けられた第２の鍵識別子、ならびに第１のＶＭに割り振られたメモリページのアドレスを特定してよい。様々なこのような実施形態において、ロジックは、第１の鍵識別子に基づいて、第１のＶＭに関連付けられたキャッシュラインを無効化してよい。いくつかの実施形態において、ロジックは、第２の鍵識別子に基づいて、メモリページについてのメッセージ認証コード（ＭＡＣ）を生成してよい。様々な実施形態において、ページ上の各キャッシュラインにＭＡＣが関連付けられてよい。多くの実施形態において、ロジックは、メモリページを第２のＶＭに割り振ってよい。これらのおよびその他の実施形態を、説明および特許請求する。
【００１２】
リソース割り振りに対するいくつかの課題は、第１の暗号ドメインから第２の暗号ドメインにリソースを再割り振りすることが不可能であること、またはこれを行うために過度に複雑で扱いにくい非効率的な技法を用いることを含む。これらの課題は、ワークロードのメモリ要求を満たすために物理メモリページを再割り当てすることが可能である必要性、または１つのワークロードが終了（ｅｘｉｔ）したときなどにそのワークロードから別のワークロードに物理メモリページの割り振りを切り換える必要性から生じ得る。例として、クラウドサービスプロバイダは、プラットフォーム上で実行する複数の異なる顧客ワークロードの暗号的な分離を提供する必要があり得る。典型的には、ドメイン間のページ再割り当ては、鍵再割り当てを伴う。いくつかのシステムは、情報の漏洩を回避しデータの破損を回避するべく、鍵再割り当てに関する高パフォーマンスオーバヘッドのフローに従わなければならない。例えば、これは、前の鍵割り当てに関連付けられたキャッシュラインをキャッシュ階層からフラッシュまたは無効化すること、および新たな鍵を用いてオールゼロをページに書き込むことを含み得る。加えて、システムは、非実用的な粒度でしかフラッシュまたは無効化を行うことができない場合がある。これは、（例えばＣＬＦＬＵＳＨにより）キャッシュラインを個別にフラッシュしなければならないこと、または（例えばＷＢＩＮＶＤにより）キャッシュ階層における全ての変更されたラインをライトバックおよび無効化することを伴うことがあり、その結果パフォーマンスオーバヘッドが過大になる。そのため、いくつかの事例において、４キロバイト（ＫＢ）のページについての各鍵再割り当ては、６４のキャッシュラインフラッシュオペレーションおよび６４の書き込みオペレーションを伴い得る。
【００１３】
さらに複雑さを加えることとして、各ドメインについて完全性を確実にすることは、鍵再割り当てに関する機能的な問題をもたらす場合がある。例として、第１の鍵を用いる第１のワークロードから第２の鍵を用いる第２のワークロードにページを再割り当てするには、完全性損傷を回避するために、ページに関連付けられた完全性値（例えばＭＡＣ）が第２の鍵で再初期化される必要があり得る。しかしながら、ページを第２の鍵でゼロアウトすることなどにより完全性値を更新することを試みるメモリへの書き込みは、最初に所有権のための読み込み（ｒｅａｄ  ｆｏｒ  ｏｗｎｅｒｓｈｉｐ）を生じさせ得る。第２の鍵を用いた所有権のための読み込みは、キャッシュラインと、第１の鍵で生成されたものである関連付けられた完全性値とをフェッチし得る。第１の鍵で生成された完全性値を第２の鍵で検証することはできないので、これは検証の失敗をもたらし得る。これらのおよびその他の要因により、パフォーマンスの不十分な、異なる暗号ドメイン（単にドメインとも称する）間で完全性を確実にすることができないリソース割り振りとなり得る。このような制限によって、複数の暗号ドメインをサポートするプラットフォームの性能、有用性、および適用性が大きく低下する場合があり、システムを非効率で性能の制限されたものにする一因となる。
【００１４】
本明細書で説明する様々な実施形態は、完全性に関する機能的正確性を確実にしつつ、暗号的に分離された仮想マシン（ＶＭ）などの異なるドメイン間におけるページ再割り当てを可能とするリソース割り振りマネージャ（ＲＭＧＲ）を含むプラットフォームを含む。多くの実施形態において、ＲＭＧＲは、第１のドメインから第２のドメインに再割り振り中であるメモリページのための効率的な鍵再割り当てを有効にする、ＰＧＩＮＶＤＲＥＭＡＰと称される新たな命令についてのハードウェアサポートを含んでよい。多くのこのような実施形態において、ＲＭＧＲは、ＰＧＩＮＶＤＲＥＭＡＰを実装するためのソフトウェアサポートを含んでよい、および／または利用してよい。
【００１５】
１または複数の実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、ページ粒度などの好ましい粒度で動作してよい。１または複数のこのような実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、当該好ましい粒度でのノンテンポラル書き込み（ｎｏｎ−ｔｅｍｐｏｒａｌ  ｗｒｉｔｅ）を生じさせてよい。様々な実施形態において、ノンテンポラル書き込みは、所有権のための書き込み（ｗｒｉｔｅ−ｆｏｒ−ｏｗｎｅｒｓｈｉｐ）またはダイレクトストア（ｄｉｒｅｃｔ  ｓｔｏｒｅ）などの、事前のメモリ読み込みを行わない書き込みを含んでよい、またはこれを指してよい。いくつかの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、ページに関連付けられた全てのキャッシュラインを、当該ページが再割り当て中である元のドメインに関連付けられた古い鍵を用いて、無効化してよい。様々な実施形態において、ＰＧＩＮＶＤＲＥＭＡＰはまた、ページが再割り当て中である先のドメインに関連付けられた新たな鍵を用いて、完全性値（例えばＭＡＣ）を再初期化してよい。様々なこのような実施形態において、完全性値の再初期化により、ページが再割り当てされて新たな鍵で使用されるときの完全性損傷が防がれてよい。多くの実施形態において、ＶＭ分離についての完全性サポートを有効にするべく、完全性値を再初期化するためにノンテンポラル書き込みが用いられてよい。これらのおよびその他の手法において、ＲＭＧＲは、オーバヘッドの小さい改善されたパフォーマンスを実現するための迅速かつ効率的なリソース割り振り／再割り振りを有効にしてよく、これによりいくつかの技術的効果および利点が生じる。例えば、それらの技術的効果および利点は、ＶＭ分離に関するものなどとして、以前は達成できていなかったパフォーマンスおよび／またはセキュリティ上の保証を含んでよい。
【００１６】
本明細書で用いる表記または用語法に全般的に関して、以下の詳細な説明の１または複数の部分を、コンピュータまたはコンピュータのネットワークにおいて実行されるプログラム手順に関して提示する場合がある。これらの手順的な説明および表現は、当業者によってその本質的な作用を他の当業者に最も有効に伝えるためのものとして用いられている。ここでは、また一般に、手順とは、所望の結果をもたらす一貫した一連のオペレーションとして解される。これらのオペレーションは、物理量の物理的な操作を必要とするものである。必ずではないが多くの場合、これらの量は、格納、移送、合成、比較、および他の形で操作されることの可能な電気的、磁気的、または光学的な信号の形態をとる。これらの信号をビット、値、要素、記号、文字、用語、または数等として言及することは、一般的に使用されていることを主な理由として、場合によっては好都合である。しかしながら、これらのおよび類似の用語は、適切な物理量と結び付けて解されるべきであり、またそれらの量に適用される便宜的な標識にすぎないことに留意されたい。
【００１７】
さらに、これらの操作は、一般的に人間の行為者によって行われる知的なオペレーションと結び付けて解される、加算または比較などの用語においてしばしば言及される。しかしながら、１または複数の実施形態の一部を形成する、本明細書で説明するオペレーションのいずれにおいても、ほとんどの場合、人間の行為者のこのような能力が必要ではないまたは望まれはしない。むしろ、これらのオペレーションは機械のオペレーションである。様々な実施形態のオペレーションを行うための有用な機械は、本明細書の教示に従って書き込まれる内部に格納されたコンピュータプログラムにより選択的に作動または構成される汎用デジタルコンピュータを含む、および／または必要な目的のために特別に構築される装置を含む。様々な実施形態はまた、これらのオペレーションを行うための装置またはシステムに関する。これらの装置は、必要な目的のために特別に構築されてよく、または汎用コンピュータを含んでもよい。種々のこれらの機械の必要な構造は、与えられる説明から明らかとなるであろう。
【００１８】
ここで図面を参照する。図面においては、全体にわたり、同様の参照符号は同様の要素を指すものとして用いられる。以下の説明においては、解説の目的で、多数の具体的な詳細が、その完全な理解を提供するべく記載されている。しかしながら、これら新規な実施形態を、これらの具体的な詳細なしで実践することができるのは明白であろう。他の例では、広く知られている構造およびデバイスが、その説明を容易にするべくブロック図の形態で示されている。これは、特許請求の範囲内におけるあらゆる変形、均等物、および代替物を包含することを意図するものである。
【００１９】
図１Ａおよび図１Ｂは、様々な実施形態を代表し得る動作環境１００の一例を例示する。動作環境１００は、プラットフォーム１０２を含んでよい。動作環境１００において、プラットフォーム１０２は、１または複数の仮想マシン（ＶＭ）１０６−１、１０６−２、１０６−３を、それぞれの暗号ドメイン１０４−１、１０４−２、１０４−ｎにおいて選択的に実装してよい。いくつかの実施形態において、複数のＶＭが一の暗号ドメイン内に実装されてよい。多くの実施形態において、クラウドサービスプロバイダなどの一のプロバイダの複数の異なる顧客に複数の異なる暗号ドメインが提供されてよい。本明細書で説明する１または複数の実施形態において、リソース割り振りマネージャ（ＲＭＧＲ）１０８は、暗号ドメイン１０４間で機密性および／または完全性を維持しつつ、ドメイン１０４間において１または複数のハードウェアリソース１１０を動的に割り振り／再割り振りしてよい。１または複数のこのような実施形態において、リソース割り振りは、対応する暗号ドメインに関連付けられた顧客などによって暗号ドメイン１０４内のそれぞれのＶＭ１０６に配置されるワークロードに依存するものであってよい。様々な実施形態において、各暗号ドメイン１０４は、ドメイン鍵１０５のうちの一意的な１つまたはセットに対応してよい。例えば、ハードウェアリソース１１０は、メモリであって、当該メモリが割り振られてある先の暗号ドメインに対応するドメイン鍵で暗号化／復号されるメモリを含んでよい。多くの実施形態において、ＲＭＧＲ１０８は、ハードウェアリソース１１０のうちの１または複数を割り振りまたは再割り振りすることの一部として、メモリマッピング１１５を更新してよい。いくつかの実施形態において、ＲＭＧＲ１０８は、仮想マシンモニタ（ＶＭＭ）により実装されてよい、またはこれに含まれてよい。実施形態は、この関連において限定されるものではない。
【００２０】
図１Ｂに例示するように、ハードウェアリソース１１０は、処理チップ１１２、メインメモリ１１４、および二次メモリ１１６を含んでよい。様々な実施形態において、処理チップ１１２は、それぞれのコアキャッシュ１２２−１、１２２−２、１２２−ｎおよび共有キャッシュ１２４を有する処理コア１２０−１、１２０−２、１２０−ｎを含んでよい。様々なこのような実施形態において、コアキャッシュ１２２は、プラットフォーム１０２のキャッシュ階層において共有キャッシュ１２４よりも上位であってよい。多くの実施形態において、メインメモリ１１４は、各々がＲＭＧＲ１０８などによって暗号ドメイン間１０４において動的に割り振り／再割り振りされ得るメモリページ１２６−１、１２６−２、１２６−ｎを含んでよい。例えば、ＲＭＧＲ１０８は、メモリページ１２６−１をＶＭ１０６−１による使用のためにドメイン１０４−１に、メモリページ１２６−２をＶＭ１０６−２による使用のためにドメイン１０４−２に、およびメモリページ１２６−ｎをＶＭ１０６−ｎによる使用のためにドメイン１０４−ｎに割り振ってよい。１または複数の実施形態において、メインメモリ１１４は、ランダムアクセスメモリを含んでよい。いくつかの実施形態において、メモリページは、暗号ドメイン内の特定のＶＭに割り振り／再割り振りされてよい。例として、様々な実施形態において、一の暗号ドメインにおいて複数のＶＭがインスタンス化されてよく、各ＶＭに複数の別個のメモリページが割り振られてよい。
【００２１】
様々な実施形態において、二次メモリ１１６は、暗号ドメインストレージ１２８−１、１２８−２、１２８−ｎを含んでよい。様々なこのような実施形態において、二次メモリ１１６内の暗号ドメインストレージ１２８の各々が、暗号ドメイン１０４のうちの１つに対応してよい。例えば、暗号ドメインストレージ１２８−１は暗号ドメイン１０４−１に対応してよく、暗号ドメインストレージ１２８−２は暗号ドメイン１０４−２に対応してよく、暗号ドメインストレージ１２８−ｎは暗号ドメイン１０４−ｎに対応してよい。このような例において、暗号ドメインストレージ１２８の各々は、ドメイン鍵１０５のうちの対応するドメイン鍵で暗号化／復号されてよい。いくつかの実施形態において、二次メモリ１１６は、ディスクメモリを含んでよい。
【００２２】
本明細書で説明する１または複数の実施形態において、第１のドメインから第２のドメインにメモリページを再割り振りすることは、ドメイン鍵１０５における第１の鍵に関連付けられた暗号ドメイン１０４−１からドメイン鍵１０５における第２の鍵に関連付けられた暗号ドメイン１０４−２にメモリページ１２６−ｎを再割り振りすることに関して説明する以下のオペレーションのうちの１または複数を含んでよい。いくつかの実施形態において、メモリページ１２６−ｎは、ＶＭ１０６−１を含む暗号ドメイン１０４−１のコンポーネントからアクセス不能にされてよい。例えば、ＲＭＧＲ１０８は、メモリマッピング１１５におけるメモリページ１２６−ｎに関連付けられた全てのページマッピングを無効化してよい。様々な実施形態において、メモリページ１２６−ｎのコンテンツは、二次メモリ１１６における暗号ドメインストレージ１２８−１に読み込まれて保存されてよい。様々なこのような実施形態において、メモリページ１２６−ｎのコンテンツは、二次メモリ１１６に格納される前に第１の鍵で暗号化されてよい。
【００２３】
多くの実施形態において、メモリページ１２６−ｎが暗号ドメイン１０４−１からアクセス不能にされる、および／またはページマッピングが無効化されると、第１の暗号ドメインから第２の暗号ドメインに再割り振り中のメモリページのための鍵を効率的に再割り当てするべく、ＰＧＩＮＶＤＲＥＭＡＰと称される新たな命令が用いられてよい。本明細書で説明する１または複数の実施形態において、ＰＧＩＮＶＤＲＥＭＡＰ命令フローは、以下のように要約されてよい。（１）ｉｎｖｄ＿ｐａｇｅを全てのコアに送って、古い暗号ドメインから再割り当て中のページに関連付けられた全てのキャッシュラインを無効化する。（２）コアの各々からの、再割り当て中のページに関連付けられたキャッシュラインの無効化が完了したとの確認応答を待機する。および（３）ページが再割り当て中である先の新たな暗号ドメインに関連付けられた新たな鍵または鍵識別子によるページ全体へのノンテンポラル書き込みにより、完全性値（例えばＭＡＣ）を新たな鍵または鍵識別子で再初期化する。
【００２４】
多くのこのような実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、第１の鍵、または第１の鍵の指標（例えば鍵識別子）を用いて、メモリページ１２６−ｎに関連付けられたコアキャッシュ１２２および共有キャッシュ１２４における全てのキャッシュラインを無効化してよい。いくつかの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、命令セットアーキテクチャ（ＩＳＡ）命令および／またはリング０命令であってよい。例として、ＰＧＩＮＶＤＲＥＭＡＰは、処理コア１２０の各々に、暗号ドメイン１０４−１に関連付けられたキャッシュラインを無効化させるコマンドを発行してよい。様々な実施形態において、ＰＧＩＮＶＤＲＥＭＡＰはまた、暗号ドメイン１０４−２に関連付けられた第２の鍵を用いて完全性値（例えばＭＡＣ）を再初期化してよい。様々なこのような実施形態において、完全性値の再初期化により、ページが再割り当てされて第２の鍵で使用されるときの完全性損傷が防がれてよい。複数の実施形態において、ページに関連付けられたまたはページ上の各キャッシュラインにＭＡＣが関連付けられてよい。多くの実施形態において、ＶＭ分離についての完全性サポートを有効にするべく、完全性値を再初期化するためにノンテンポラル書き込みが用いられてよい。多くの実施形態において、ＲＭＧＲ１０８は、ＰＧＩＮＶＤＲＥＭＡＰを実装するためのハードウェアサポートおよび／またはソフトウェアサポートを含んでよい、または利用してよい。
【００２５】
いくつかの実施形態において、ＶＭは、それ自体が所有するまたは割り当てられたメモリを初期化するようＰＧＩＮＶＤＲＥＭＡＰを実行してよい。このような実施形態において、ＶＭモニタ（ＶＭＭ）は、（１）命令がプロセッサにより実行されたこと、（２）どのメモリアドレスに対してＰＧＩＮＶＤＲＥＭＡＰが実行されたか、（３）どの鍵識別子にまたはどの鍵識別子でメモリが初期化されたか、のうちの１または複数を検証／判定することが可能であってよい。例として、これは、ＰＧＩＮＶＤＲＥＭＡＰ命令がゲストＶＭにより実行された後に、ＶＭＭが、トリガすべきＶＭ実行制御、もしくはＶＭ  ｅｘｉｔを構成すること、またはＶＭＭの他の呼び出しによって有効にされ得る。このような例において、ＶＭ制御構造（ＶＭＣＳ）、または類似のものは、ＶＭＭが、この構造を読み込んで命令がＶＭＭによって予期されるとおりにＶＭにより正確に実行されたことを検証することを可能とする命令識別子、アドレス、および鍵識別子を含んでよい。様々な例において、ＶＭＭは、命令の正確な実行を検証した後、次いでＶＭをレジュームしてよい。いくつかの実施形態において、これらのまたは類似の技法が、セキュアなパブリッククラウドの使用などの様々な使用を有効にするために用いられてよい。
【００２６】
いくつかの実施形態において、ＶＭメモリがＶＭＭからプライベートに保たれるべきであるときなどに、ＶＭは、プロセッサまたはハードウェアサブシステムにより、実行中はそのＶＭのみが使用し得る専用の鍵（または鍵セット）および関連付けられた鍵識別子を割り当てられてよい。このような実施形態において、ＰＧＩＮＶＤＲＥＭＡＰ命令は、ＶＭがプロセッサまたはハードウェアサブシステムにより割り当てられた鍵識別子（または複数の鍵識別子）に関してのみ、ＶＭにより実行されてよい。したがって、ＶＭがプロセッサにより割り当てられていない鍵識別子を用いてメモリの初期化を試みる場合、試みられるＰＧＩＮＶＤＲＥＭＡＰの実行により、障害、終了、または他のエラーが生じることがあり、再初期化が失敗することになる。ＰＧＩＮＶＤＲＥＭＡＰについては、図４などに関して下記でより詳細に論じる。
【００２７】
本明細書で説明する１または複数の鍵は、鍵のペアを指すものであってよく、それらの鍵のうちの１または複数は、暗号オペレーションを有効にするために１または複数の鍵拡大（ｋｅｙ  ｅｘｐａｎｓｉｏｎ）を受けてよいことが理解されよう。一実施形態において、例として、一の鍵は、ＭＡＣの暗号化または生成などの暗号オペレーションに使用できるようになる前に、より多数の鍵に拡大されなければならない。いくつかのこのような例において、鍵は、複数ラウンドの暗号化または復号をサポートするよう、１１の鍵に拡大されてよい。様々な実施形態において、鍵は、実行中にオンザフライで拡大されてよい。他の実施形態において、鍵は、オペレーションの前に拡大されて格納されてよい。いくつかの実施形態において、鍵がオンザフライで拡大されるか否かは、エリア／パフォーマンスのトレードオフなどの種々のパフォーマンス制限に基づいて判断されてよい。
【００２８】
図２Ａ、図２Ｂ、および図２Ｃは、暗号ドメイン２０４間における第１のリソース利用を代表し得る動作環境２００の一例を例示する。図３Ａ、図３Ｂ、および図３Ｃは、暗号ドメイン２０４間における第２のリソース利用を代表し得る動作環境３００の一例を例示する。したがって、第１のリソース利用と対応する第１のリソース割り振りから第２のリソース利用と対応する第２のリソース割り振りへの遷移について、図２Ａ、図２Ｂ、および図２Ｃに関して説明する。多くの実施形態において、図２Ａ、図２Ｂ、および図２Ｃのコンポーネントは、図１Ａおよび図１Ｂのコンポーネントと同じまたは類似のものであってよい。実施形態は、この関連において限定されるものではない。
【００２９】
動作環境２００において、暗号ドメイン２０４−１はインスタンス化されたＶＭ２０６−１を有してアクティブであってよく、暗号ドメイン２０４−２はインスタンス化されたＶＭを有さず非アクティブであってよく、暗号ドメイン２０４−ｎはインスタンス化されたＶＭ２０６−ｎを有してアクティブであってよい。図２Ａに示すように、暗号ドメイン２０４の各々は、二次メモリ２１６の一部分をデータの格納に利用してよい。例えば、暗号ドメイン２０４−１は暗号ドメインストレージ２２８−１を利用してよく、暗号ドメイン１０４−２は暗号ドメインストレージ２２８−２に関連付けられてよく、暗号ドメイン２０４−ｎは暗号ドメインストレージ２２８−ｎに関連付けられてよい。図２Ｂに示すように、メインメモリ２１４のメモリページ２２６−１、２２６−２は暗号ドメイン２０４−１に割り振られ、メインメモリ２１４のメモリページ２２６−ｎは暗号ドメイン２０４−ｎに割り振られ、暗号ドメイン２０４−２にはメモリページが割り振られない。
【００３０】
様々な実施形態において、二次メモリ２１６のそれぞれの暗号ドメインストレージに格納されたデータの部分が、それぞれの暗号ドメインストレージに対応する暗号ドメインに割り振られたメインメモリ２１４のメモリページにロードされてよい。様々なこのような実施形態において、それらのデータ部分は、処理コア（例えば処理コア１２０のうちの１または複数）による実行、解析、および／または操作のためにメモリページにロードされてよい。例えば、暗号ドメイン２０４−１のためのデータが、暗号ドメインストレージ２２８−１からメモリページ２２６−１および／またはメモリページ２２６−２にロードされてよい。
【００３１】
本明細書で説明する様々な実施形態において、暗号ドメインに割り振られるメモリページの数は、インスタンス化されたＶＭ上でのプログラムの実行などの要求される機能を行うために処理コアから容易にアクセス可能である必要があるデータの量に基づくものであってよい。いくつかの実施形態において、二次メモリ２１６内のデータは、データが二次メモリに／二次メモリから移動されるときに、対応するドメイン鍵で暗号化／復号されてよい。１または複数の実施形態において、メモリと暗号ドメインとの間の関連付けが、１または複数のメモリマッピングを介してトラッキングされてよい。１または複数のこのような実施形態において、１または複数のメモリマッピングは、メモリを異なる暗号ドメインに割り振り／再割り振りすることの一部として、置換または修正されてよい。
【００３２】
多くの実施形態において、メインメモリ２１４内のデータは、キャッシュアルゴリズムに従って、処理コアにより利用されるときに、コアキャッシュ２２２および共有キャッシュ２２４のうちの１または複数にキャッシュされてよい。１または複数の実施形態において、キャッシュは、メモリ内の頻繁に使用されるデータをより低いアクセスレイテンシに保つことによりメモリパフォーマンスを改善するために用いられてよい。図２Ｃに示すように、キャッシュ内のキャッシュラインの各々は、そのコンテンツが移ってきた元のメモリページに関連付けられてよい。様々な実施形態において、メモリページが割り振られる先の暗号ドメインに関連付けられた鍵識別子は、キャッシュラインをメモリページに関連付けてよい。いくつかの実施形態において、鍵識別子は、キャッシュラインおよび／またはメモリページのメモリアドレスの一部分を形成してよい。
【００３３】
図３Ａを参照すると、動作環境３００において、暗号ドメイン２０４−２がアクティブとなってよく、その中においてＶＭ２０６−２がインスタンス化されてよい。多くの実施形態において、暗号ドメイン２０４−２においてＶＭ２０６−２をインスタンス化するには、暗号ドメインストレージ２２８−２からのデータがメインメモリ２１４にロードされる必要があり得る。いくつかの実施形態において、メモリ完全性損傷により生じるメモリエラーは、エラーのあるキャッシュライン上にポイズンビットを設けて関連付けられたメモリロードにエラーが存在することを示すことにより、示されてよい。図３Ｂに示すように、ＶＭ２０６−２のインスタンス化をサポートするべく、メモリページ２２６−２が暗号ドメイン２０４−１から暗号ドメイン２０４−２に再割り振りされてよい。他の実施形態において、第１の暗号ドメインから第２の暗号ドメインへのメモリページ再割り振りは、第１の暗号ドメインにおけるＶＭティアダウン（ｔｅａｒｄｏｗｎ）に応答して行われてよい。第１の暗号ドメインから第２の暗号ドメインへのメモリページの再割り振りについては、図４および図５などに関して下記でより詳細に説明する。様々な実施形態において、メモリページ２２６−２を暗号ドメイン２０４−１から暗号ドメイン２０４−２に再割り振りすることは、メモリマッピングの更新を含んでよい。
【００３４】
図３Ｃを参照すると、再割り振りされたメモリページ２２６−２に関連付けられたコアキャッシュ２２２および共有キャッシュ２２４における全てのキャッシュラインは、メモリエラーなど、機能正確性を確実にするために、フラッシュおよび／または無効化される必要がある。例として、暗号ドメイン２０４−１に関連付けられたコアキャッシュライン２４０−ｎに格納されたデータが、暗号ドメイン２０４−１から暗号ドメイン２０４−２へのメモリページ２２６−２の再割り振りの後に残留した場合、当該データは、その暗号ドメイン２０４−１との関連付けに起因して、キャッシュから追い出されるときにメモリエラーを生じさせ得る。したがって、コアキャッシュ２２２−１のキャッシュライン２４０−ｎ、コアキャッシュ２２２−２のキャッシュライン２４２−２、および共有キャッシュ２２４の共有キャッシュライン２４６−ｎは、無効化される、および／またはメモリページ２２６−２との関連付けを解除される必要があり得る。このプロセスについては、図５などに関して下記でより詳細に説明する。
【００３５】
図４は、暗号ドメイン間におけるリソースの動的割り振りと併せて様々な実施形態において実行および／または実装され得るオペレーションを代表し得るロジックフロー４００の一実施形態を例示する。ロジックフロー４００は、（例えばＰＧＩＮＶＤＲＥＭＡＰの実行において）ＲＭＧＲ１０８または処理コア１２０などの、動作環境１００、２００、３００の１または複数のコンポーネントによって実行および／または実装され得るオペレーションの一部または全てを代表するものであってよい。実施形態は、この関連において限定されるものではない。
【００３６】
図４に示す例示の実施形態において、ロジックフロー４００は、ブロック４０２で開始してよい。ブロック４０２「ページを第１のＶＭからアクセス不能にする」において、再割り当て中のメモリページは、メモリページが再割り当て中である元の第１のＶＭからアクセス不能にされてよい。例えば、メモリページ１２６−ｎがＶＭ１０６−１からＶＭ１０６−２に再割り当て中である場合、メモリページ１２６−ｎは、暗号ドメイン１０４−１のコンポーネントからアクセス不能にされてよい。いくつかの実施形態において、メモリページを第１のＶＭからアクセス不能にすることは、メモリマッピング１１５のうちの１または複数を無効化または更新することを含んでよい。いくつかの実施形態において、メモリマッピングを無効化することは、トランスレーション・ルックアサイド・バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）からのマッピングを無効化すること、入出力メモリ管理ユニット（ＩＯＭＭＵ）の無効化（例えばページがデバイスアクセス可能であった場合）、およびページをＶＭＭにより管理される拡張ページテーブルなどのページテーブル構造において不在（ｎｏｔ  ｐｒｅｓｅｎｔ）としてマーキングすること、のうちの１または複数を含んでよい。
【００３７】
ブロック４０４「第１のＶＭに関連付けられた二次メモリの部分にページを読み込んで格納する」へ進み、メモリページは、第１のＶＭに関連付けられた二次メモリの部分に読み込まれて格納されてよい。例えば、暗号ドメインストレージ１２８−１が第１のＶＭの暗号ドメインに関連付けられる場合、メモリページのコンテンツは、暗号ドメインストレージ１２８−１に読み込まれて格納されてよい。様々な実施形態において、メモリページのコンテンツは、暗号ドメインストレージ１２８−１に格納される前に暗号化されてよい。例として、メモリページのコンテンツが暗号ドメインストレージ１２８−１に格納される前に、ドメイン鍵１０５のうち第１のＶＭの暗号ドメインに関連付けられたドメイン鍵を用いて、コンテンツが暗号化されてよい。いくつかの実施形態において、メモリページのコンテンツの全てが暗号ドメインストレージ１２８−１に格納されるまで、ブロック４０４が繰り返されてよい。
【００３８】
ブロック４０６「ＰＧＩＮＶＤＲＥＭＡＰ」において、ＰＧＩＮＶＤＲＥＭＡＰと称される新たな命令が実行されてよい。本明細書で説明する様々な実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、キャッシュラインの無効化および完全性値再初期化のオペレーションを組み合わせた新たな命令であってよい。多くの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、メモリページが再割り当て中である元の暗号ドメインに関連付けられた第１の鍵または第１の鍵識別子を用いて、メモリページがキャッシュ階層から無効化されることを確実にしてよい。加えて、またはこれに代えて、ＰＧＩＮＶＤＲＥＭＡＰは、メモリページが再割り当て中である先の暗号ドメインに関連付けられた第２の鍵または第２の鍵識別子を用いて、メッセージ認証コード（ＭＡＣ）などの完全性値が生成されることを確実にしてよい。本明細書で説明する１または複数の実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、メモリページの粒度で動作してよい。様々な実施形態において、古い鍵または古い鍵識別子とは、メモリページが再割り当て中である元の暗号ドメインに関連付けられた鍵または鍵識別子を指してよく、新たな鍵または新たな鍵識別子とは、メモリページが再割り当て中である先の暗号ドメインに関連付けられた鍵または鍵識別子を指してよいことが理解されよう。
【００３９】
様々な実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、リング０命令であってよい。多くの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、以下のパラメータのうちの１または複数をとるものであってよい。（１）再割り当て対象のメモリページのアドレス、（２）古い鍵識別子、（３）新たな鍵識別子、および（４）ページに関連付けられた完全性値が初期化を必要とするか否か。様々なこのような実施形態において、再割り当て対象のメモリページのアドレスは、再割り当て対象のメモリページのリニアアドレスを含んでよい。いくつかの実施形態において、上述のように、完全性値の初期化は、ＰＧＩＮＶＤＲＥＭＡＰ命令への入力に基づいて制御されてよい。いくつかのこのような実施形態において、これにより、メモリ完全性が利用されるか否かに関わらず、ページのための効率的な鍵再割り当てが有効となり得る。多くの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、これらのパラメータを用いて、全てのコア（例えば処理コア１２０）に、メモリページをそれらのキャッシュ（例えばコアキャッシュ１２２および共有キャッシュ１２４）から無効化させるコマンドを発行してよい。１または複数の実施形態において、パラメータとして渡される古い鍵識別子は、無効化オペレーションに用いられてよい。様々な実施形態において、次いで新たな鍵識別子が、ＰＧＩＮＶＤＲＥＭＡＰにより、メモリページをゼロアウトするのに用いられてよい。いくつかの実施形態において、完全性が有効にされるときなどに、メモリページについての完全性値（例えばＭＡＣ）が、新たな鍵識別子で再初期化されてよい。
【００４０】
多くの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、単一のソケットにわたって動作してよい。多くのこのような実施形態において、プラットフォームが複数のソケットを有する場合、所望の機能性を実現するべくソケットごとに命令を実行するためのソフトウェアが、ＲＭＧＲ１０８などに含まれてよい。１または複数の実施形態において、再割り当て中の物理ページについての古い鍵識別子および新たな鍵識別子を指定するためのソフトウェアが、ＲＭＧＲ１０８などに含まれてよい。様々な実施形態において、ページ無効化をサポートするべく、スヌープフィルタなどの既存のキャッシュコンポーネントが利用されてよい。
【００４１】
複数の実施形態において、論理プロセッサ上でのＰＧＩＮＶＤＲＥＭＡＰの実行により、同じソケット内におけるプラットフォーム上の全ての他のコアへの単一の無効化メッセージのブロードキャストが生じてよい。例として、この命令は、ｉｎｖｄ＿ｐａｇｅと称される新たなメッセージを、相互接続（例えばメッシュ）を介してソケット内のコアの各々に送ってよい。多くの実施形態において、ｉｎｖｄ＿ｐａｇｅメッセージは、古い鍵識別子および無効化すべきメモリページの物理アドレスを含んでよい。様々な実施形態において、各コア（例えば処理コア１２０）は、ｉｎｖｄ＿ｐａｇｅメッセージを受け取ると、再割り当て中のメモリページに属するラインのいずれかを探してそのローカルのキャッシュをチェックしてよい。
【００４２】
多くの実施形態において、ｉｎｖｄ＿ｐａｇｅメッセージは、コヒーレンスなどのためにキャッシュラインのスヌープおよび無効化をサポートするキャッシュハードウェアを利用してよい。多くのこのような実施形態において、ｉｎｖｄ＿ｐａｇｅメッセージは、メモリページに関連付けられたキャッシュラインのロケーションを特定するよう、キャッシュハードウェアを利用する。いくつかの実施形態において、古い鍵識別子に関連付けられたＶＭ（すなわち第１のＶＭ）で使用されたときにメモリページのラインを見つけるために、ページキャッシュラインの探索は古い鍵識別子で行われてよい。古い鍵識別子によるページ無効化のフローについては、図５などに関して下記でより詳細に説明する。
【００４３】
いくつかの実施形態において、完全性が有効にされるときなどに、キャッシュラインの無効化が完了すると、メモリページについての完全性値（例えばＭＡＣ）が新たな鍵識別子で再初期化されてよい。本明細書で説明する多くの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、完全性がＶＭ分離に関してサポートされることを有効にするべく、完全性値を再初期化するためのアーキテクチャ的に保証されるノンテンポラル書き込みを利用してよい。様々な実施形態において、ノンテンポラル書き込みを用いない場合、メモリ内のキャッシュラインに関連付けられた完全性値は古い鍵に対応したままとなり、新たな鍵による新たなページの読み込みによって完全性損傷が生じ得る。したがって、新たな鍵を用いて、ページ内のラインの各々についてノンテンポラル書き込みが行われてよい。複数の実施形態において、ノンテンポラル書き込みは、キャッシュラインがメモリからの読み込みなしで書き込まれる書き込みを含んでよい。多くの実施形態において、ＰＧＩＮＶＤＲＥＭＡＰは、ノンテンポラル書き込みオペレーションの終了を待機しなくてよい。多くのこのような実施形態において、ロジックは、ＰＧＩＮＶＤＲＥＭＡＰ命令により行われるメモリアクセスの完了および／または正確なオペレーションを確実にするべく、フェンシング（ｆｅｎｃｉｎｇ）オペレーションを用いてよい。
【００４４】
改めてロジックフロー４００を参照すると、ロジックフローは、ブロック４０６が完了すると、ブロック４０８へ進んでよい。ブロック４０８「ページを第２のＶＭのアドレス空間にマッピングする」において、メモリページは、第２のＶＭのアドレス空間にマッピングされてよい。例として、第２のＶＭのアドレス空間は、第２のＶＭに関連付けられた暗号ドメインについてのアドレス空間の少なくとも一部分を含んでよい。いくつかの実施形態において、これは、メモリマッピング１１５のうちの１または複数を更新、修正、および／または置換することを含んでよい。
【００４５】
図５は、第１の暗号ドメインから第２の暗号ドメインへのリソースの再割り振りの間のページ無効化と併せて様々な実施形態において実行および／または実装され得るオペレーションを代表し得るロジックフロー５００の一実施形態を例示する。一般に、ロジックフロー５００は、ページ内の各ラインにわたって反復し、そのラインがコアキャッシュまたは共有キャッシュなどにおいてキャッシュされているか否かを判定するべくスヌープフィルタハードウェアに問い合わせてよい。ロジックフロー５００は、（例えばＰＧＩＮＶＤＲＥＭＡＰの実行において）ＲＭＧＲ１０８または処理コア１２０などの動作環境１００、２００、３００の１または複数のコンポーネントによって実行および／または実装され得るオペレーションの一部または全てを代表するものであってよい。実施形態は、この関連において限定されるものではない。
【００４６】
図５に示す例示の実施形態において、ロジックフロー５００は、ブロック５０２で開始してよい。ブロック５０２「ＡＤＤＲ←ＰＡＧＥ＿ＢＡＳＥ＿ＡＤＤＲ」において、ページベースアドレスが評価アドレスとして設定される。例として、ページベースアドレスは、無効化すべきメモリページの物理アドレスであってよい。ブロック５０４「スヌープフィルタにＡＤＤＲがあるか？」へ続き、評価アドレスがスヌープフィルタにあるか否かが判定されてよい。例えば、処理コア１２０−１は、メモリページ１２６−１の物理アドレスがコアキャッシュ１２２−１におよび／または共有キャッシュ１２４の少なくとも一部分にあるか否かを判定するべく、スヌープフィルタハードウェアに問い合わせてよい。様々な実施形態において、処理コア１２０−２、１２０−ｎは、類似の手順を行ってよい。様々なこのような実施形態において、処理コア１２０のうちの１または複数が、これらの手順を並列に行ってよい。多くの実施形態において、スヌープフィルタハードウェアは、特定のコアのキャッシュにキャッシュされたラインに関する情報を保持してよい。
【００４７】
評価アドレスがスヌープフィルタ内で見つかった場合、ロジックフロー５００は、ブロック５１２へ進んでよい。ブロック５１２「コアキャッシュ階層においてＡＤＤＲを無効化」において、評価アドレスは、コアキャッシュ階層において無効化されてよい。例として、処理コア１２０−１が評価アドレスのロケーションをスヌープフィルタハードウェア内に特定した場合、処理コア１２０−１は、コアキャッシュ１２２−１および共有キャッシュ１２４を含むキャッシュ階層における対応するキャッシュラインを無効化してよい。様々な実施形態において、評価アドレスをスヌープフィルタ内に特定したことに応答してｉｎｖｄ＿ｐａｇｅメッセージを発行することに加え、ページがラストレベルキャッシュ（ＬＬＣ）から無効化されてもよい。例えば、共有キャッシュ１２４はＬＬＣであってよい。多くの実施形態において、ページ内の各キャッシュラインについての無効化メッセージをそのキャッシュラインのマッピング先のＬＬＣスライスに送ることにより、評価アドレスがＬＬＣにおいて無効化されてよい。このような実施形態において、各キャッシュラインがコア内の固定のハッシュ関数を用いてマッピングし得る固有のＬＬＣスライスが存在してよい。いくつかの実施形態において、２つまたはそれより多くのレベルがキャッシュ階層に存在してよい。次に、ロジックフロー５００は、下記でより詳細に説明するブロック５０６へ進んでよい。
【００４８】
改めてブロック５０４を参照すると、評価アドレスがスヌープフィルタ内で見つからなかった場合、ロジックフロー５００は、ブロック５０６へ進んでよい。ブロック５０６「ＡＤＤＲがページ内の最後のキャッシュラインであるか？」において、評価アドレスがページ内の最後のキャッシュラインであったか否かが判定されてよい。評価アドレスがページ内の最後のキャッシュラインでない場合、ロジックフロー５００は、ブロック５０８へ進んでよい。ブロック５０８「ＡＤＤＲ＝ＡＤＤＲ＋６４Ｂ」において、評価アドレスは、次のキャッシュラインに更新されてよい。例示の実施形態において、各メモリラインは６４Ｂであってよく、そのため、前の評価アドレスに６４Ｂを加算することで、メモリページ内の後続のラインに対応する新たな評価アドレスを設定することができる。次に、ロジックフロー５００は、ブロック５０４へ戻ってよい。
【００４９】
改めてブロック５０６を参照すると、評価アドレスがページ内の最後のキャッシュラインである場合、ロジックフロー５００はブロック５１０へ進んでよい。ブロック５１０「要求元のコアにＡＣＫを返送」において、無効化を要求するコアに確認応答メッセージが返送されてよい。様々な実施形態において、確認応答メッセージは、ｉｎｖｄ＿ｐａｇｅメッセージに応答するものであってよい。例として、確認応答メッセージは、同じソケット上にあるプラットフォーム１０２内の全ての他のコアへのｉｎｖｄ＿ｐａｇｅメッセージのブロードキャストを生じさせる、論理プロセッサによるＰＧＩＮＶＤＲＥＭＡＰの実行に応答するものであってよい。多くの実施形態において、要求元のコアが、無効化の完了に関してソケット内の全ての他のコアから確認応答メッセージを受け取ると、古い鍵識別子を有するページがいずれかのコア上のソケットにキャッシュされていないことが保証されてよい。
【００５０】
図６は、リソース割り振り管理と併せて様々な実施形態において実行および／または実装され得るオペレーションを代表し得るロジックフロー６００の一実施形態を例示する。ロジックフロー６００は、（例えばＰＧＩＮＶＤＲＥＭＡＰの実行において）ＲＭＧＲ１０８または処理コア１２０などの、図１Ａ〜３Ｃの動作環境１００、２００、３００の１または複数のコンポーネントによって実行および／または実装され得るオペレーションの一部または全てを代表するものであってよい。実施形態は、この関連において限定されるものではない。
【００５１】
図６に示す例示の実施形態において、ロジックフロー６００は、ブロック６０２で開始してよい。ブロック６０２「第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および第１のＶＭに割り振られたメモリページのアドレスを特定する」において、第１のＶＭに関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および第１のＶＭに割り振られたメモリページのアドレスが特定されてよい。例えば、ＶＭ２０６−１に関連付けられた鍵識別子、ＶＭ２０６−２に関連付けられた鍵識別子、およびメモリページ２２６−２のアドレスが特定されてよい。ブロック６０４「第１の鍵識別子に基づいて第１のＶＭに関連付けられたキャッシュラインを無効化する」において、第１のＶＭに関連付けられたキャッシュラインが、第１の鍵識別子に基づいて無効化されてよい。例として、コアキャッシュライン２４０−ｎ、２４２−２、２４６−ｎのうちの１または複数が、それらの第１の鍵識別子との関連付けに基づいて無効化されてよい。
【００５２】
ブロック６０６「第２の鍵識別子に基づいてメモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成する」へ続き、メモリページ内の各キャッシュラインについてのＭＡＣが、第２の鍵識別子に基づいて生成されてよい。例えば、メモリページ２２６−２（すなわちメモリページ２２６−２を含む各キャッシュライン）についてのＭＡＣが、ＶＭ２０６−２に関連付けられた鍵識別子に基づいて生成されてよい。ブロック６０８「メモリページを第２のＶＭに割り振る」において、メモリページが第２のＶＭに割り振られてよい。例として、メモリページ２２６−２がＶＭ２０６−２に割り振られてよい。
【００５３】
図７は、記憶媒体７００の一実施形態を例示する。記憶媒体７００は、光記憶媒体、磁気記憶媒体または半導体記憶媒体などの任意の非一時的コンピュータ可読記憶媒体または機械可読記憶媒体を含んでよい。様々な実施形態において、記憶媒体７００は、製造物品（ａｒｔｉｃｌｅ  ｏｆ  ｍａｎｕｆａｃｔｕｒｅ）を含んでよい。いくつかの実施形態において、記憶媒体７００は、図４、図５、および図６のロジックフロー４００、５００、および６００などに関して本明細書で説明するロジックフローまたはオペレーションのうちの１または複数を実装するためのコンピュータ実行可能命令などのコンピュータ実行可能命令を格納してよい。コンピュータ可読記憶媒体または機械可読記憶媒体の例は、揮発性メモリまたは不揮発性メモリ、リムーバブルまたは非リムーバブルメモリ、消去可能または非消去可能メモリ、および書き込み可能または書き換え可能メモリ等を含む、電子データを格納することが可能な任意の有形の媒体を含んでよい。コンピュータ実行可能命令の例は、ソースコード、コンパイラ型コード、インタプリタ型コード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、およびビジュアルコード等のような任意の好適な種類のコードを含んでよい。実施形態は、この関連において限定されるものではない。
【００５４】
図８は、前述の様々な実施形態を実装するのに好適であり得る例示的なコンピューティングアーキテクチャ８００の一実施形態を例示する。様々な実施形態において、コンピューティングアーキテクチャ８００は、電子デバイスを含んでよい、またはその一部として実装されてよい。いくつかの実施形態において、コンピューティングアーキテクチャ８００は、例えば図１Ａ〜３Ｃの動作環境１００、２００、３００の１または複数のコンポーネントを実装するコンピュータシステムを代表するものであってよい。いくつかの実施形態において、コンピューティングアーキテクチャ８００は、例えば本明細書で説明する１または複数の実施形態を実装するＲＭＧＲ１０８および／または処理コア１２０の１または複数の部分を代表するものであってよい。実施形態は、この関連において限定されるものではない。
【００５５】
本願において用いる場合、「システム」および「コンポーネント」および「モジュール」という用語は、例示的なコンピューティングアーキテクチャ８００によって例が提供される、ハードウェア、ハードウェアとソフトウェアとの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれであるかを問わないコンピュータ関連エンティティを指すことが意図される。例えば、コンポーネントは、プロセッサ上で実行するプロセス、プロセッサ、ハードディスクドライブ、（光記憶媒体および／または磁気記憶媒体の）複数のストレージドライブ、オブジェクト、実行ファイル、実行スレッド、プログラム、および／またはコンピュータであり得るが、これらに限定されるものではない。例示として、サーバ上で実行するアプリケーションおよび当該サーバの両方が、コンポーネントであり得る。１または複数のコンポーネントがプロセスおよび／または実行スレッドに内在し得、一のコンポーネントが１つのコンピュータ上にローカル化される、および／または２つまたはそれより多くのコンピュータ間で分散され得る。さらに、コンポーネントは、オペレーションの連携のために、様々な種類の通信媒体によって互いに通信可能に結合されてよい。この連携は、情報の一方向または双方向の交換を伴ってよい。例として、コンポーネントは、通信媒体にわたって通信される信号の形態で情報を通信してよい。情報は、様々な信号ラインに割り振られる信号として実装され得る。このような割り振りにおいては、各メッセージが信号である。しかしながら、さらなる実施形態は、これに代えてデータメッセージを採用してよい。このようなデータメッセージは、様々な接続にまたがって送られてよい。例示的な接続は、パラレルインターフェース、シリアルインターフェース、およびバスインターフェースを含む。
【００５６】
コンピューティングアーキテクチャ８００は、１または複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、オシレータ、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入出力（Ｉ／Ｏ）コンポーネント、および電源等のような様々な一般的なコンピューティング要素を含む。しかしながら、実施形態は、コンピューティングアーキテクチャ８００による実装に限定されるものではない。
【００５７】
図８に示すように、コンピューティングアーキテクチャ８００は、処理ユニット８０４、システムメモリ８０６およびシステムバス８０８を含む。処理ユニット８０４は、限定されるものではないが、ＡＭＤ（登録商標）  Ａｔｈｌｏｎ（登録商標）、Ｄｕｒｏｎ（登録商標）およびＯｐｔｅｒｏｎ（登録商標）プロセッサ、ＡＲＭ（登録商標）アプリケーション、組み込みおよびセキュアプロセッサ、ＩＢＭ（登録商標）およびＭｏｔｏｒｏｌａ（登録商標）  ＤｒａｇｏｎＢａｌｌ（登録商標）およびＰｏｗｅｒＰＣ（登録商標）プロセッサ、ＩＢＭおよびＳｏｎｙ（登録商標）  Ｃｅｌｌプロセッサ、Ｉｎｔｅｌ（登録商標）  Ｃｅｌｅｒｏｎ（登録商標）、Ｃｏｒｅ（２）  Ｄｕｏ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）、Ｘｅｏｎ（登録商標）、およびＸＳｃａｌｅ（登録商標）プロセッサ、ならびに類似のプロセッサを含む様々な市販のプロセッサのいずれかであり得る。デュアルマイクロプロセッサ、マルチコアプロセッサ、および他のマルチプロセッサアーキテクチャが、処理ユニット８０４として採用されてもよい。
【００５８】
システムバス８０８は、限定されるものではないがシステムメモリ８０６から処理ユニット８０４を含むシステムコンポーネントのためのインターフェースを提供する。システムバス８０８は、種々の市販のバスアーキテクチャのいずれかを用いた、（メモリコントローラを有するまたは有しない）メモリバス、ペリフェラルバス、およびローカルバスにさらに相互接続し得る複数種類のバス構造のいずれかであり得る。インターフェースアダプタが、スロットアーキテクチャを介してシステムバス８０８に接続してよい。スロットアーキテクチャの例は、限定されることなく、Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（ＡＧＰ）、Ｃａｒｄ  Ｂｕｓ、（Ｅｘｔｅｎｄｅｄ）  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（（Ｅ）ＩＳＡ）、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）、ＮｕＢｕｓ、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（Ｅｘｔｅｎｄｅｄ）（ＰＣＩ（Ｘ））、ＰＣＩ  Ｅｘｐｒｅｓｓ、およびＰｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ（ＰＣＭＣＩＡ）等を含んでよい。
【００５９】
システムメモリ８０６は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＭＧＲ）、ダイナミックＲＭＧＲ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＭＧＲ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ（例えば１または複数のフラッシュアレイ）、強誘電体高分子メモリなどの高分子メモリ、オボニックメモリ、相変化または強誘電体メモリ、シリコン−酸化物−窒化物−酸化物−シリコン（ＳＯＮＯＳ）メモリ、磁気カードまたは光カード、独立ディスク冗長アレイ（ＲＡＩＤ）ドライブなどのデバイスのアレイ、ソリッドステートメモリデバイス（例えばＵＳＢメモリ、およびソリッドステートドライブ（ＳＳＤ））ならびに情報を格納するのに好適な任意の他の種類の記憶媒体などの１または複数のより高速なメモリユニットの形態における様々な種類のコンピュータ可読記憶媒体を含んでよい。図８に示す例示の実施形態において、システムメモリ８０６は、不揮発性メモリ８１０および／または揮発性メモリ８１２を含み得る。ベーシックインプット／アウトプットシステム（ＢＩＯＳ）が不揮発性メモリ８１０に格納され得る。
【００６０】
コンピュータ８０２は、内部（または外部）ハードディスクドライブ（ＨＤＤ）８１４、リムーバブル磁気ディスク８１８からの読み込みまたはこれへの書き込みを行うための磁気フロッピーディスクドライブ（ＦＤＤ）８１６、およびリムーバブル光ディスク８２２（例えばＣＤ−ＲＯＭまたはＤＶＤ）からの読み込みまたはこれへの書き込みを行うための光ディスクドライブ８２０を含む１または複数のより低速なメモリユニットの形態における様々な種類のコンピュータ可読記憶媒体を含んでよい。ＨＤＤ８１４、ＦＤＤ８１６および光ディスクドライブ８２０は、それぞれＨＤＤインターフェース８２４、ＦＤＤインターフェース８２６および光ドライブインターフェース８２８によりシステムバス８０８に接続され得る。外部ドライブの実装のためのＨＤＤインターフェース８２４は、ユニバーサルシリアルバス（ＵＳＢ）およびＩＥＥＥ９９４インターフェース技術の少なくとも一方または両方を含み得る。
【００６１】
これらのドライブおよび関連付けられたコンピュータ可読媒体は、データ、データ構造、およびコンピュータ実行可能命令等の揮発性および／または不揮発性のストレージを提供する。例えば、オペレーティングシステム８３０、１または複数のアプリケーションプログラム８３２、他のプログラムモジュール８３４、およびプログラムデータ８３６を含む複数のプログラムモジュールが、これらのドライブおよびメモリユニット８１０、８１２に格納され得る。一実施形態において、１または複数のアプリケーションプログラム８３２、他のプログラムモジュール８３４、およびプログラムデータ８３６は、例えば、ＲＭＧＲ１０８および／または本明細書で説明する他のロジックの様々なアプリケーションおよび／またはコンポーネントを含み得る。
【００６２】
ユーザは、１または複数の有線／無線の入力デバイス、例えばキーボード８３８およびマウス８４０などのポインティングデバイスを介してコンピュータ８０２にコマンドおよび情報を入力し得る。他の入力デバイスは、マイクロフォン、赤外線（ＩＲ）リモートコントロール、無線周波数（ＲＦ）リモートコントロール、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィクスタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン（例えば静電容量式、抵抗式等）、トラックボール、トラックパッド、センサ、およびスタイラス等を含んでよい。これらのおよびその他の入力デバイスは、多くの場合、システムバス８０８に結合された入力デバイスインターフェース８４２を介して処理ユニット８０４に接続されるが、パラレルポート、ＩＥＥＥ９９４シリアルポート、ゲームポート、ＵＳＢポート、およびＩＲインターフェース等のような他のインターフェースにより接続され得る。
【００６３】
モニタ８４４または他の種類のディスプレイデバイスも、ビデオアダプタ８４６などのインターフェースを介してシステムバス８０８に接続される。モニタ８４４は、コンピュータ８０２の内部または外部にあってよい。コンピュータは典型的には、モニタ８４４に加え、スピーカ、およびプリンタ等のような他の周辺出力デバイスを含む。
【００６４】
コンピュータ８０２は、リモートコンピュータ８４８などの１または複数のリモートコンピュータへの有線および／または無線の通信を介した論理的接続を用いたネットワーク化環境において動作してよい。様々な実施形態において、１または複数のマイグレーションがネットワーク化環境を介して行われてよい。リモートコンピュータ８４８は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテイメント機器、ピアデバイスまたは他の一般的なネットワークノードであり得、典型的には、コンピュータ８０２に関して説明する要素のうちの多くまたは全てを含むが、簡潔にする目的でメモリ／ストレージデバイス８５０のみが例示されている。図示されている論理的接続は、ローカルエリアネットワーク（ＬＡＮ）８５２および／またはより大規模なネットワーク、例えばワイドエリアネットワーク（ＷＡＮ）８５４への有線／無線の接続性を含む。このようなＬＡＮおよびＷＡＮのネットワーキング環境は、事務所および会社において普及しており、イントラネットなどの企業規模のコンピュータネットワークを容易にする。その全てが、グローバル通信ネットワーク、例えばインターネットに接続さしてよい。
【００６５】
コンピュータ８０２は、ＬＡＮネットワーキング環境において用いられるとき、有線および／または無線の通信ネットワークインターフェースまたはアダプタ８５６を介してＬＡＮ８５２に接続される。アダプタ８５６は、アダプタ８５６の無線機能性と通信するために配される無線アクセスポイントを含み得るＬＡＮ８５２への有線および／または無線の通信を容易にし得る。
【００６６】
コンピュータ８０２は、ＷＡＮネットワーキング環境において用いられるとき、モデム１３５８を含み得る、またはＷＡＮ１３５４上の通信サーバに接続される、またはインターネットなどを介したＷＡＮ８５４にわたっての通信を確立するための他の手段を有する。内部または外部のかつ有線および／または無線のデバイスであり得るモデム８５８は、入力デバイスインターフェース８４２を介してシステムバス８０８に接続する。ネットワーク化環境において、コンピュータ８０２に関して図示されているプログラムモジュール、またはその部分は、リモートメモリ／ストレージデバイス８５０に格納され得る。示されているネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が用いられ得ることは理解されよう。
【００６７】
コンピュータ８０２は、無線通信（例えばＩＥＥＥ８０２．１６のｏｖｅｒ−ｔｈｅ−ａｉｒ変調技法）において動作可能に配される無線デバイスなどの、ＩＥＥＥ８０２ファミリの規格を用いた有線および無線のデバイスまたはエンティティと通信するよう動作可能である。これはとりわけ、Ｗｉ−Ｆｉ（登録商標）（またはワイヤレスフィデリティ）、ＷｉＭａｘ、およびＢｌｕｅｔｏｏｔｈ（登録商標）の無線技術を少なくとも含む。よって、通信は、従来のネットワークと同様の予め定義された構造、または単に少なくとも２つのデバイス間におけるアドホック通信であり得る。Ｗｉ−Ｆｉ（登録商標）ネットワークは、セキュアで高信頼かつ高速な無線接続性を提供するべく、ＩＥＥＥ８０２．１１ｘ（ａ、ｂ、ｇ、ｎ等）と呼ばれる無線技術を用いる。Ｗｉ−Ｆｉ（登録商標）ネットワークは、コンピュータを、互いに、インターネットに、および（ＩＥＥＥ８０２．３関連の媒体および機能を用いる）有線ネットワークに接続するのに用いられ得る。
【００６８】
図９は、仮想マシンマイグレーションなどの前述の様々な実施形態を実装するのに好適な例示的な通信アーキテクチャ９００のブロック図を例示する。通信アーキテクチャ９００は、送信機、受信機、送受信機、ラジオ、ネットワークインターフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、および電源等のような様々な一般的な通信要素を含む。しかしながら、実施形態は、通信アーキテクチャ９００による実装に限定されるものではない。
【００６９】
図９に示すように、通信アーキテクチャ９００は、１または複数のクライアント９０２およびサーバ９０４を含む。クライアント９０２およびサーバ９０４は、ｃｏｏｋｉｅおよび／または関連付けられたコンテクスト情報などのそれぞれのクライアント９０２およびサーバ９０４のローカルにある情報を格納するのに採用され得る１または複数のそれぞれのクライアントデータストア９０８およびサーバデータストア９１０に動作可能に接続される。様々な実施形態において、サーバ９０４のうちのいずれか１つが、クライアント９０２のうちのいずれか１つから受け取ったデータをサーバデータストア９１０のいずれかに格納することと併せて、本明細書で説明するロジックフローまたはオペレーションのうちの１または複数、および図７の記憶媒体７００を実装してよい。
【００７０】
クライアント９０２およびサーバ９０４は、通信フレームワーク９０６を用いて互いの間で情報を通信してよい。通信フレームワーク９０６は、任意の広く知られた通信技法およびプロトコルを実装してよい。通信フレームワーク９０６は、パケット交換型ネットワーク（例えば、インターネットなどのパブリックネットワーク、および企業イントラネットなどのプライベートネットワーク等）、回線交換型ネットワーク（例えば公衆交換電話網）、または（好適なゲートウェイおよびトランスレータを有する）パケット交換型ネットワークと回線交換型ネットワークとの組み合わせとして実装されてよい。
【００７１】
通信フレームワーク９０６は、通信ネットワークに対する受け入れ、通信、および接続を行うよう構成される様々なネットワークインターフェースを実装してよい。ネットワークインターフェースは、入力出力インターフェースの特殊化された形態としてみなされてよい。ネットワークインターフェースは、限定されることなく、ダイレクトコネクト、Ｅｔｈｅｒｎｅｔ（登録商標）（例えばシック、シン、ツイストペア１０／１００／１９００ベースＴ等）、トークンリング、無線ネットワークインターフェース、セルラネットワークインターフェース、ＩＥＥＥ８０２．１１ａ−ｘネットワークインターフェース、ＩＥＥＥ８０２．１６ネットワークインターフェース、およびＩＥＥＥ８０２．２０ネットワークインターフェース等を含む接続プロトコルを採用してよい。さらに、様々な通信ネットワークタイプと関与するべく、複数のネットワークインターフェースが用いられてよい。例えば、複数のネットワークインターフェースが、ブロードキャスト、マルチキャスト、およびユニキャストネットワークにわたる通信を可能とするために採用されてよい。処理要件がより大きな量、速度および容量を課する場合は、クライアント９０２およびサーバ９０４により要求される通信可能帯域幅をプール、ロードバランス、および他の形で増大させるべく、分散型ネットワークコントローラアーキテクチャが同様に採用されてよい。通信ネットワークは、限定されることなく、直接相互接続、セキュア化カスタム接続、プライベートネットワーク（例えば企業イントラネット）、パブリックネットワーク（例えばインターネット）、パーソナルエリアネットワーク（ＰＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、Ｏｐｅｒａｔｉｎｇ  Ｍｉｓｓｉｏｎｓ  ａｓ  Ｎｏｄｅｓ  ｏｎ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ（ＯＭＮＩ）、ワイドエリアネットワーク（ＷＡＮ）、無線ネットワーク、セルラネットワーク、および他の通信ネットワークを含む有線および／または無線のネットワークのいずれか１つおよびそれらの組み合わせであってよい。
【００７２】
様々な実施形態が、ハードウェア要素、ソフトウェア要素、またはその両方の組み合わせを用いて実装されてよい。ハードウェア要素の例は、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗器、コンデンサ、およびインダクタ等）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジックデバイス（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、ロジックゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、およびチップセット等を含んでよい。ソフトウェアの例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、手順、ソフトウェアインターフェース、アプリケーションプログラムインターフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合わせを含んでよい。実施形態がハードウェア要素および／またはソフトウェア要素を用いて実装されるか否かの決定は、所望の演算レート、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度および他の設計またはパフォーマンス上の制限などの任意の数の要因に応じて異なるものであってよい。
【００７３】
少なくとも１つの実施形態の１または複数の態様が、プロセッサ内の様々なロジックを代表する機械可読媒体に格納された代表的な命令によって実装されてよく、これは、機械によって読み込まれると、本明細書で説明する技法を行うためのロジックを当該機械に作成させる。「ＩＰコア」として知られるこのような代表物は、有形の機械可読媒体に格納され、ロジックまたはプロセッサを実際に作製する製造機械にロードするよう様々な顧客または製造施設に供給されてよい。いくつかの実施形態は、例えば、機械により実行された場合に実施形態に係る方法および／またはオペレーションを当該機械に行わせ得る命令または命令セットを格納し得る機械可読媒体または物品を用いて実装されてよい。このような機械は、例えば、任意の好適な処理プラットフォーム、コンピューティングプラットフォーム、コンピューティングデバイス、処理デバイス、コンピューティングシステム、処理システム、コンピュータ、またはプロセッサ等を含んでよく、ハードウェアおよび／またはソフトウェアの任意の好適な組み合わせを用いて実装されてよい。当該機械可読媒体または物品は、例えば、任意の好適な種類のメモリユニット、メモリデバイス、メモリ物品、メモリ媒体、ストレージデバイス、ストレージ物品、記憶媒体および／またはストレージユニット、例えば、メモリ、リムーバブルまたは非リムーバブル媒体、消去可能または非消去可能媒体、書き込み可能または書き換え可能媒体、デジタルまたはアナログ媒体、ハードディスク、フロッピーディスクコンパクトディスクリードオンリメモリ（ＣＤ−ＲＯＭ）、コンパクトディスクレコーダブル（ＣＤ−Ｒ）、コンパクトディスクリライタブル（ＣＤ−ＲＷ）、光ディスク、磁気媒体、光磁気媒体、リムーバブルメモリカードまたはディスク、様々な種類のデジタルバーサタイルディスク（ＤＶＤ）、テープ、またはカセット等を含んでよい。命令は、任意の好適な高級、低級、オブジェクト指向、ビジュアル、コンパイラ型および／またはインタプリタ型のプログラミング言語を用いて実装されるソースコード、コンパイラ型コード、インタプリタ型コード、実行可能コード、静的コード、動的コード、および暗号化コード等のような任意の好適な種類のコードを含んでよい。
【００７４】
以下の例は、さらなる実施形態に関連し、そこから多数の変形および構成が明らかとなるであろう。
【００７５】
例１は、リソース割り振り管理のための装置であって、ロジックを備え、上記ロジックの少なくとも一部分が回路に実装され、上記ロジックは、第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定し、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化し、上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成し、上記メモリページを上記第２のＶＭに割り振る、装置である。
【００７６】
例２は、例１の内容を含み、上記ロジックは、上記第１のＶＭへの上記メモリページの第１のマッピングを無効化し、上記第２のＶＭへの上記メモリページの第２のマッピングを生成する。
【００７７】
例３は、例１の内容を含み、上記ロジックは、ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化する。
【００７８】
例４は、例３の内容を含み、上記ロジックは、上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する。
【００７９】
例５は、例３の内容を含み、上記ノンテンポラル書き込みは、上記キャッシュラインを上記メモリページから読み込まない上記キャッシュラインへの書き込みを含む。
【００８０】
例６は、例３の内容を含み、上記ノンテンポラル書き込みは、アーキテクチャ的に保証される。
【００８１】
例７は、例１の内容を含み、上記ロジックは、上記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき上記キャッシュラインを特定する。
【００８２】
例８は、例１の内容を含み、上記ロジックは、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、上記第１のＶＭに関連付けられた上記キャッシュラインを無効化し、上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成する。
【００８３】
例９は、例１の内容を含み、上記ロジックは、上記第１の鍵識別子および上記メモリページの上記アドレスを含む処理コアセットのためのメッセージを生成し、上記メッセージは、上記処理コアセットに、上記第１のＶＭに関連付けられたキャッシュラインを無効化させる。
【００８４】
例１０は、例９の内容を含み、上記ロジックは、上記処理コアセットにおける各処理コアからの確認応答を特定し、上記確認応答は、上記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す。
【００８５】
例１１は、例１の内容を含み、上記ロジックは、上記第１のＶＭに関連付けられた上記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、上記共有キャッシュにおける上記第２のキャッシュラインを無効化する。
【００８６】
例１２は、例１１の内容を含み、上記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む。
【００８７】
例１３は、例１の内容を含み、上記第１のＶＭに割り振られた上記メモリページの上記アドレスは、上記メモリページのリニアアドレスを含む。
【００８８】
例１４は、例１の内容を含み、上記第１のＶＭに関連付けられた上記キャッシュラインは、コアキャッシュに含まれる。
【００８９】
例１５は、例１の内容を含み、上記メモリページは、ランダムアクセスメモリに含まれる。
【００９０】
例１６は、例１の内容を含み、上記ロジックは、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられた鍵を特定し、上記鍵を用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成する。
【００９１】
例１７は、リソース割り振り管理のための方法であって、第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定する段階と、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化する段階と、上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成する段階と、上記メモリページを上記第２のＶＭに割り振る段階とを備える方法である。
【００９２】
例１８は、例１７の内容を含み、上記第１のＶＭへの上記メモリページの第１のマッピングを無効化する段階と、上記第２のＶＭへの上記メモリページの第２のマッピングを生成する段階とを備える。
【００９３】
例１９は、例１７の内容を含み、ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化する段階を備える。
【００９４】
例２０は、例１９の内容を含み、上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する段階を備える。
【００９５】
例２１は、例１９の内容を含み、上記ノンテンポラル書き込みは、上記キャッシュラインを上記メモリページから読み込まない上記キャッシュラインへの書き込みを含む。
【００９６】
例２２は、例１９の内容を含み、上記ノンテンポラル書き込みは、アーキテクチャ的に保証される。
【００９７】
例２３は、例１７の内容を含み、上記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき上記キャッシュラインを特定する段階を備える。
【００９８】
例２４は、例１７の内容を含み、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、上記第１のＶＭに関連付けられた上記キャッシュラインを無効化し、上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成する段階を備える。
【００９９】
例２５は、例１７の内容を含み、上記第１の鍵識別子および上記メモリページの上記アドレスを含む処理コアセットのためのメッセージを生成する段階を備え、上記メッセージは、上記処理コアセットに、上記第１のＶＭに関連付けられたキャッシュラインを無効化させる。
【０１００】
例２６は、例２５の内容を含み、上記処理コアセットにおける各処理コアからの確認応答を特定する段階を備え、上記確認応答は、上記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す。
【０１０１】
例２７は、例１７の内容を含み、上記第１のＶＭに関連付けられた上記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、上記共有キャッシュにおける上記第２のキャッシュラインを無効化する段階を備える。
【０１０２】
例２８は、例２７の内容を含み、上記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む。
【０１０３】
例２９は、例１７の内容を含み、上記第１のＶＭに割り振られた上記メモリページの上記アドレスは、上記メモリページのリニアアドレスを含む。
【０１０４】
例３０は、例１７の内容を含み、上記第１のＶＭに関連付けられた上記キャッシュラインは、コアキャッシュに含まれる。
【０１０５】
例３１は、例１７の内容を含み、上記メモリページは、ランダムアクセスメモリに含まれる。
【０１０６】
例３２は、例１７の内容を含み、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられた鍵を特定する段階と、上記鍵を用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成する段階とを備える。
【０１０７】
例３３は、プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定することと、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化することと、上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成することと、上記メモリページを上記第２のＶＭに割り振ることとを行わせる命令セットを備える少なくとも１つの非一時的コンピュータ可読媒体である。
【０１０８】
例３４は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記第１のＶＭへの上記メモリページの第１のマッピングを無効化することと、上記第２のＶＭへの上記メモリページの第２のマッピングを生成することとを行わせる命令を備える。
【０１０９】
例３５は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化することを行わせる命令を備える。
【０１１０】
例３６は、例３５の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用することを行わせる命令を備える。
【０１１１】
例３７は、例３５の内容を含み、上記ノンテンポラル書き込みは、上記キャッシュラインを上記メモリページから読み込まない上記キャッシュラインへの書き込みを含む。
【０１１２】
例３８は、例３５の内容を含み、上記ノンテンポラル書き込みは、アーキテクチャ的に保証される。
【０１１３】
例３９は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき上記キャッシュラインを特定することを行わせる命令を備える。
【０１１４】
例４０は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、上記第１のＶＭに関連付けられた上記キャッシュラインを無効化し、上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成することを行わせる命令を備える。
【０１１５】
例４１は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記第１の鍵識別子および上記メモリページの上記アドレスを含む処理コアセットのためのメッセージを生成することを行わせる命令を備え、上記メッセージは、上記処理コアセットに、上記第１のＶＭに関連付けられたキャッシュラインを無効化させる。
【０１１６】
例４２は、例４１の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記処理コアセットにおける各処理コアからの確認応答を特定することを行わせる命令を備え、上記確認応答は、上記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す。
【０１１７】
例４３は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記第１のＶＭに関連付けられた上記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、上記共有キャッシュにおける上記第２のキャッシュラインを無効化することを行わせる命令を備える。
【０１１８】
例４４は、例４３の内容を含み、上記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む。
【０１１９】
例４５は、例３３の内容を含み、上記第１のＶＭに割り振られた上記メモリページの上記アドレスは、上記メモリページのリニアアドレスを含む。
【０１２０】
例４６は、例３３の内容を含み、上記第１のＶＭに関連付けられた上記キャッシュラインは、コアキャッシュに含まれる。
【０１２１】
例４７は、例３３の内容を含み、上記メモリページは、ランダムアクセスメモリに含まれる。
【０１２２】
例４８は、例３３の内容を含み、上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられた鍵を特定することと、上記鍵を用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成することとを行わせる命令を備える。
【０１２３】
例４９は、リソース割り振り管理のための装置であって、第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定するための手段と、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化するための手段と、上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成するための手段と、上記メモリページを上記第２のＶＭに割り振るための手段とを備える装置である。
【０１２４】
例５０は、例４９の内容を含み、上記第１のＶＭへの上記メモリページの第１のマッピングを無効化するための手段と、上記第２のＶＭへの上記メモリページの第２のマッピングを生成するための手段とを備える。
【０１２５】
例５１は、例４９の内容を含み、ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化するための手段を備える。
【０１２６】
例５２は、例５１の内容を含み、上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用するための手段を備える。
【０１２７】
例５３は、例５１の内容を含み、上記ノンテンポラル書き込みは、上記キャッシュラインを上記メモリページから読み込まない上記キャッシュラインへの書き込みを含む。
【０１２８】
例５４は、例５１の内容を含み、上記ノンテンポラル書き込みは、アーキテクチャ的に保証される。
【０１２９】
例５５は、例４９の内容を含み、上記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき上記キャッシュラインを特定するための手段を備える。
【０１３０】
例５６は、例４９の内容を含み、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、上記第１のＶＭに関連付けられた上記キャッシュラインを無効化し、上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成するための手段を備える。
【０１３１】
例５７は、例４９の内容を含み、上記第１の鍵識別子および上記メモリページの上記アドレスを含む処理コアセットのためのメッセージを生成するための手段を備え、上記メッセージは、上記処理コアセットに、上記第１のＶＭに関連付けられたキャッシュラインを無効化させる。
【０１３２】
例５８は、例５７の内容を含み、上記処理コアセットにおける各処理コアからの確認応答を特定するための手段を備え、上記確認応答は、上記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す。
【０１３３】
例５９は、例４９の内容を含み、上記第１のＶＭに関連付けられた上記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、上記共有キャッシュにおける上記第２のキャッシュラインを無効化するための手段を備える。
【０１３４】
例６０は、例５９の内容を含み、上記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む。
【０１３５】
例６１は、例４９の内容を含み、上記第１のＶＭに割り振られた上記メモリページの上記アドレスは、上記メモリページのリニアアドレスを含む。
【０１３６】
例６２は、例４９の内容を含み、上記第１のＶＭに関連付けられた上記キャッシュラインは、コアキャッシュに含まれる。
【０１３７】
例６３は、例４９の内容を含み、上記メモリページは、ランダムアクセスメモリに含まれる。
【０１３８】
例６４は、例４９の内容を含み、上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられた鍵を特定するための手段と、上記鍵を用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成するための手段とを備える。
【０１３９】
上述の例示的実施形態の説明は、例示および説明の目的で提示されている。網羅的であること。または本開示を開示された形態そのものに限定することは意図されていない。多くの変更および変形が、本開示に照らして可能である。本開示の範囲は、この詳細な説明によってではなく、本明細書に添付の特許請求の範囲によって限定されるよう意図されている。本願の優先権を主張する将来なされる出願は、本開示の内容を異なる態様において特許請求するものであってよく、一般に、本明細書において様々に開示されるまたは他の形で示される１または複数の限定の任意のセットを含んでよい。
【０１４０】
［項目１］
リソース割り振り管理のための装置であって、
ロジックを備え、上記ロジックの少なくとも一部分が回路に実装され、上記ロジックは、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定し、
上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化し、
上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成し、
上記メモリページを上記第２のＶＭに割り振る、
装置。
［項目２］
上記ロジックは、
上記第１のＶＭへの上記メモリページの第１のマッピングを無効化し、
上記第２のＶＭへの上記メモリページの第２のマッピングを生成する、
項目１に記載の装置。
［項目３］
上記ロジックは、ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化する、項目１に記載の装置。
［項目４］
上記ロジックは、上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する、項目３に記載の装置。
［項目５］
上記ノンテンポラル書き込みは、上記キャッシュラインを上記メモリページから読み込まない上記キャッシュラインへの書き込みを含む、項目３に記載の装置。
［項目６］
上記ノンテンポラル書き込みは、アーキテクチャ的に保証される、項目３に記載の装置。
［項目７］
上記ロジックは、上記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき上記キャッシュラインを特定する、項目１に記載の装置。
［項目８］
上記ロジックは、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、上記第１のＶＭに関連付けられた上記キャッシュラインを無効化し、上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成する、項目１に記載の装置。
［項目９］
上記ロジックは、上記第１の鍵識別子および上記メモリページの上記アドレスを含む処理コアセットのためのメッセージを生成し、上記メッセージは、上記処理コアセットに、上記第１のＶＭに関連付けられたキャッシュラインを無効化させる、項目１に記載の装置。
［項目１０］
上記ロジックは、上記処理コアセットにおける各処理コアからの確認応答を特定し、上記確認応答は、上記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、項目９に記載の装置。
［項目１１］
上記ロジックは、上記第１のＶＭに関連付けられた上記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、上記共有キャッシュにおける上記第２のキャッシュラインを無効化する、項目１に記載の装置。
［項目１２］
上記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、項目１１に記載の装置。
［項目１３］
上記第１のＶＭに割り振られた上記メモリページの上記アドレスは、上記メモリページのリニアアドレスを含む、項目１に記載の装置。
［項目１４］
上記第１のＶＭに関連付けられた上記キャッシュラインは、コアキャッシュに含まれる、項目１に記載の装置。
［項目１５］
上記メモリページは、ランダムアクセスメモリに含まれる、項目１に記載の装置。
［項目１６］
上記ロジックは、
上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられた鍵を特定し、
上記鍵を用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを生成する、
項目１に記載の装置。
［項目１７］
リソース割り振り管理のための方法であって、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定する段階と、
上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化する段階と、
上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成する段階と、
上記メモリページを上記第２のＶＭに割り振る段階と
を備える方法。
［項目１８］
上記第１のＶＭへの上記メモリページの第１のマッピングを無効化する段階と、
上記第２のＶＭへの上記メモリページの第２のマッピングを生成する段階と
を備える、項目１７に記載の方法。
［項目１９］
ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化する段階を備える、項目１７に記載の方法。
［項目２０］
上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する段階を備える、項目１９に記載の方法。
［項目２１］
上記ノンテンポラル書き込みは、上記キャッシュラインを上記メモリページから読み込まない上記キャッシュラインへの書き込みを含む、項目１９に記載の方法。
［項目２２］
プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および上記第１のＶＭに割り振られたメモリページのアドレスを特定することと、
上記第１の鍵識別子に基づいて、上記第１のＶＭに関連付けられたキャッシュラインを無効化することと、
上記第２の鍵識別子に基づいて、上記メモリページを含む各キャッシュラインについてのメッセージ認証コード（ＭＡＣ）を生成することと、
上記メモリページを上記第２のＶＭに割り振ることと
を行わせる命令セットを備える少なくとも１つの非一時的コンピュータ可読媒体。
［項目２３］
上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、
上記第１のＶＭへの上記メモリページの第１のマッピングを無効化することと、
上記第２のＶＭへの上記メモリページの第２のマッピングを生成することと
を行わせる命令を備える、項目２２に記載の少なくとも１つの非一時的コンピュータ可読媒体。
［項目２４］
上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、ノンテンポラル書き込みを用いて上記メモリページを含む各キャッシュラインについての上記ＭＡＣを初期化することを行わせる命令を備える、項目２２に記載の少なくとも１つの非一時的コンピュータ可読媒体。
［項目２５］
上記プロセッサ回路により実行されたことに応答して、上記プロセッサ回路に、上記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用することを行わせる命令を備える、項目２４に記載の少なくとも１つの非一時的コンピュータ可読媒体。
【図１Ａ】
2019185744.tif 000003
【図１Ｂ】
2019185744.tif 000004
【図２Ａ】
2019185744.tif 000005
【図２Ｂ】
2019185744.tif 000006
【図２Ｃ】
2019185744.tif 000007
【図３Ａ】
2019185744.tif 000008
【図３Ｂ】
2019185744.tif 000009
【図３Ｃ】
2019185744.tif 000010
【図４】
2019185744.tif 000011
【図５】
2019185744.tif 000012
【図６】
2019185744.tif 000013
【図７】
2019185744.tif 000014
【図８】
2019185744.tif 000015
【図９】
2019185744.tif 000016
【手続補正書】
【提出日】平成31年3月25日(2019.3.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
リソース割り振り管理のための装置であって、
ロジックを備え、前記ロジックの少なくとも一部分が回路に実装され、前記ロジックは、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定し、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化し、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成し、
前記メモリページを前記第２のＶＭに割り振る、
装置。
【請求項２】
前記ロジックは、
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化し、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成する、
請求項１に記載の装置。
【請求項３】
前記ロジックは、ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化する、請求項１または２に記載の装置。
【請求項４】
前記ロジックは、前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する、請求項３に記載の装置。
【請求項５】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項３または４に記載の装置。
【請求項６】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項３から５のいずれか一項に記載の装置。
【請求項７】
前記ロジックは、前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定する、請求項１から６のいずれか一項に記載の装置。
【請求項８】
前記ロジックは、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成する、請求項１から７のいずれか一項に記載の装置。
【請求項９】
前記ロジックは、前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成し、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記ロジックは、前記処理コアセットにおける各処理コアからの確認応答を特定し、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項９に記載の装置。
【請求項１１】
前記ロジックは、前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化する、請求項１から１０のいずれか一項に記載の装置。
【請求項１２】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項１１に記載の装置。
【請求項１３】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項１から１２のいずれか一項に記載の装置。
【請求項１４】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項１から１３のいずれか一項に記載の装置。
【請求項１５】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項１から１４のいずれか一項に記載の装置。
【請求項１６】
前記ロジックは、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定し、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成する、
請求項１から１５のいずれか一項に記載の装置。
【請求項１７】
リソース割り振り管理のための方法であって、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定する段階と、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化する段階と、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成する段階と、
前記メモリページを前記第２のＶＭに割り振る段階と
を備える方法。
【請求項１８】
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化する段階と、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成する段階と
を備える、請求項１７に記載の方法。
【請求項１９】
ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化する段階を備える、請求項１７または１８に記載の方法。
【請求項２０】
前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用する段階を備える、請求項１９に記載の方法。
【請求項２１】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項１９または２０に記載の方法。
【請求項２２】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項１９から２１のいずれか一項に記載の方法。
【請求項２３】
前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定する段階を備える、請求項１７から２２のいずれか一項に記載の方法。
【請求項２４】
リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成する段階を備える、請求項１７から２３のいずれか一項に記載の方法。
【請求項２５】
前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成する段階を備え、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項１７から２４のいずれか一項に記載の方法。
【請求項２６】
前記処理コアセットにおける各処理コアからの確認応答を特定する段階を備え、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項２５に記載の方法。
【請求項２７】
前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化する段階を備える、請求項１７から２６のいずれか一項に記載の方法。
【請求項２８】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項２７に記載の方法。
【請求項２９】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項１７から２８のいずれか一項に記載の方法。
【請求項３０】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項１７から２９のいずれか一項に記載の方法。
【請求項３１】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項１７から３０のいずれか一項に記載の方法。
【請求項３２】
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定する段階と、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成する段階と
を備える、請求項１７から３１のいずれか一項に記載の方法。
【請求項３３】
プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定することと、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化することと、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成することと、
前記メモリページを前記第２のＶＭに割り振ることと
を行わせるコンピュータプログラム。
【請求項３４】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化することと、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成することと
を行わせる、請求項３３に記載のコンピュータプログラム。
【請求項３５】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化することを行わせる、請求項３３または３４に記載のコンピュータプログラム。
【請求項３６】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用することを行わせる、請求項３５に記載のコンピュータプログラム。
【請求項３７】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項３５または３６に記載のコンピュータプログラム。
【請求項３８】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項３５から３７のいずれか一項に記載のコンピュータプログラム。
【請求項３９】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定することを行わせる、請求項３３から３８のいずれか一項に記載のコンピュータプログラム。
【請求項４０】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成することを行わせる、請求項３３から３９のいずれか一項に記載のコンピュータプログラム。
【請求項４１】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成することを行わせ、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項３３から４０のいずれか一項に記載のコンピュータプログラム。
【請求項４２】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記処理コアセットにおける各処理コアからの確認応答を特定することを行わせ、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項４１に記載のコンピュータプログラム。
【請求項４３】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化することを行わせる、請求項３３から４２のいずれか一項に記載のコンピュータプログラム。
【請求項４４】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項４３に記載のコンピュータプログラム。
【請求項４５】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項３３から４４のいずれか一項に記載のコンピュータプログラム。
【請求項４６】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項３３から４５のいずれか一項に記載のコンピュータプログラム。
【請求項４７】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項３３から４６のいずれか一項に記載のコンピュータプログラム。
【請求項４８】
前記プロセッサ回路により実行されたことに応答して、前記プロセッサ回路に、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定することと、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成することと
を行わせる、請求項３３から４７のいずれか一項に記載のコンピュータプログラム。
【請求項４９】
請求項３３から４８のいずれか一項に記載のコンピュータプログラムを格納するコンピュータ可読記録媒体。
【請求項５０】
リソース割り振り管理のための装置であって、
第１の仮想マシン（ＶＭ）に関連付けられた第１の鍵識別子、第２のＶＭに関連付けられた第２の鍵識別子、および前記第１のＶＭに割り振られたメモリページのアドレスを特定するための手段と、
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられたキャッシュラインを無効化するための手段と、
前記第２の鍵識別子に基づいて、前記メモリページについてのメッセージ認証コード（ＭＡＣ）を生成するための手段と、
前記メモリページを前記第２のＶＭに割り振るための手段と
を備える装置。
【請求項５１】
前記第１のＶＭへの前記メモリページの第１のマッピングを無効化するための手段と、
前記第２のＶＭへの前記メモリページの第２のマッピングを生成するための手段と
を備える、請求項５０に記載の装置。
【請求項５２】
ノンテンポラル書き込みを用いて前記メモリページについての前記ＭＡＣを初期化するための手段を備える、請求項５０または５１に記載の装置。
【請求項５３】
前記ノンテンポラル書き込みの正確なオペレーションを確実にするようフェンシングオペレーションを利用するための手段を備える、請求項５２に記載の装置。
【請求項５４】
前記ノンテンポラル書き込みは、前記キャッシュラインを前記メモリページから読み込まない前記キャッシュラインへの書き込みを含む、請求項５２または５３に記載の装置。
【請求項５５】
前記ノンテンポラル書き込みは、アーキテクチャ的に保証される、請求項５２から５４のいずれか一項に記載の装置。
【請求項５６】
前記第１の鍵識別子およびスヌープフィルタに基づいて、無効化すべき前記キャッシュラインを特定するための手段を備える、請求項５０から５５のいずれか一項に記載の装置。
【請求項５７】
リング０命令、または命令セットアーキテクチャ（ＩＳＡ）に含まれる命令の実行に応答して、前記第１のＶＭに関連付けられた前記キャッシュラインを無効化し、前記メモリページについての前記ＭＡＣを生成するための手段を備える、請求項５０から５６のいずれか一項に記載の装置。
【請求項５８】
前記第１の鍵識別子および前記メモリページの前記アドレスを含む処理コアセットのためのメッセージを生成するための手段を備え、前記メッセージは、前記処理コアセットに、前記第１のＶＭに関連付けられたキャッシュラインを無効化させる、請求項５０から５７のいずれか一項に記載の装置。
【請求項５９】
前記処理コアセットにおける各処理コアからの確認応答を特定するための手段を備え、前記確認応答は、前記第１のＶＭに関連付けられたキャッシュラインが無効化されていることを示す、請求項５８に記載の装置。
【請求項６０】
前記第１のＶＭに関連付けられた前記キャッシュラインが共有キャッシュにおける第２のキャッシュラインにマッピングすることに基づいて、前記共有キャッシュにおける前記第２のキャッシュラインを無効化するための手段を備える、請求項５０から５９のいずれか一項に記載の装置。
【請求項６１】
前記共有キャッシュは、ラストレベルキャッシュ（ＬＬＣ）を含む、請求項６０に記載の装置。
【請求項６２】
前記第１のＶＭに割り振られた前記メモリページの前記アドレスは、前記メモリページのリニアアドレスを含む、請求項５０から６１のいずれか一項に記載の装置。
【請求項６３】
前記第１のＶＭに関連付けられた前記キャッシュラインは、コアキャッシュに含まれる、請求項５０から６２のいずれか一項に記載の装置。
【請求項６４】
前記メモリページは、ランダムアクセスメモリに含まれる、請求項５０から６３のいずれか一項に記載の装置。
【請求項６５】
前記第１の鍵識別子に基づいて、前記第１のＶＭに関連付けられた鍵を特定するための手段と、
前記鍵を用いて前記メモリページについての前記ＭＡＣを生成するための手段と
を備える、請求項５０から６４のいずれか一項に記載の装置。
【外国語明細書】
2019185744000001.pdf