IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2024-527054動的割当可能な物理的にアドレス指定されるメタデータストレージ
<>
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図1
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図2
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図3
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図4
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図5
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図6
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図7
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図8
  • 特表-動的割当可能な物理的にアドレス指定されるメタデータストレージ 図9
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-19
(54)【発明の名称】動的割当可能な物理的にアドレス指定されるメタデータストレージ
(51)【国際特許分類】
   G06F 12/14 20060101AFI20240711BHJP
   G06F 12/0897 20160101ALI20240711BHJP
   G06F 12/12 20160101ALI20240711BHJP
   G06F 12/10 20160101ALI20240711BHJP
【FI】
G06F12/14 510D
G06F12/0897
G06F12/12
G06F12/10
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024504992
(86)(22)【出願日】2022-06-02
(85)【翻訳文提出日】2024-03-25
(86)【国際出願番号】 US2022031865
(87)【国際公開番号】W WO2023009210
(87)【国際公開日】2023-02-02
(31)【優先権主張番号】17/385,765
(32)【優先日】2021-07-26
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【弁理士】
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【弁理士】
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100196508
【弁理士】
【氏名又は名称】松尾 淳一
(72)【発明者】
【氏名】チスナル,デビッド・トーマス
(72)【発明者】
【氏名】フィラルド,ナサニエル・ウェスレイ
(72)【発明者】
【氏名】ノートン-ライト,ロバート・マクニール
【テーマコード(参考)】
5B017
5B205
【Fターム(参考)】
5B017AA07
5B017BA01
5B017BB06
5B017CA01
5B017CA02
5B205MM36
5B205QQ11
5B205RR04
5B205UU32
(57)【要約】
例では、プロセッサを備えるコンピューティングデバイスがあり、プロセッサは、メモリ管理ユニットを有する。コンピューティングデバイスはまた、プロセッサによって実行されると、メモリ管理ユニットに対して、仮想メモリアドレスを含むメモリアクセス命令を受け取らせ、仮想メモリアドレスを、メモリの物理メモリアドレスに変換させ、物理メモリアドレスに関連付けられた許可情報を取得させる命令を格納するメモリを有する。許可情報が、メタデータが物理メモリアドレスに関連付けられることが許可されていることを示すことに応じて、メタデータが、物理メモリアドレスと互換性があるか否かを確認するために、物理メモリに格納されているメタデータ要約テーブルが確認される。確認が否定的であることに応じて、物理メモリアドレスに関連付けられたメタデータを格納するための物理メモリの動的割当をトリガするために、コンピューティングデバイスのシステムソフトウェアにトラップが送信される。
【特許請求の範囲】
【請求項1】
コンピューティングデバイスであって、
メモリ管理ユニットを有するプロセッサと、
命令を格納するメモリと
を備え、前記命令は、前記プロセッサによって実行されたときに、前記メモリ管理ユニットに、
仮想メモリアドレスを含むメモリアクセス命令を受け取るステップと、
前記仮想メモリアドレスを前記メモリの物理メモリアドレスに変換し、前記物理メモリアドレスに関連付けられた情報を取得するステップであって、前記情報は、許可情報およびメモリタイプ情報のうちの1つまたは複数である、ステップと、
前記情報が、メタデータが前記物理メモリアドレスに関連付けられることが許可されていることを示すことに応じて、メタデータが前記物理メモリアドレスと互換性があるか否かを確認するために、前記物理メモリに格納されているメタデータ要約テーブルを確認するステップと、
前記確認が否定的であることに応じて、前記物理メモリアドレスに関連付けられたメタデータを格納するための物理メモリの動的割当を許可するために、前記コンピューティングデバイスのシステムソフトウェアにトラップを送信するステップと
を実行させる、コンピューティングデバイス。
【請求項2】
請求項1に記載のコンピューティングデバイスであって、前記命令は、前記情報が、前記メモリ管理ユニットに、前記物理メモリアドレスにおいてメタデータが許可されていないことを示すことに応じて、変換動作を進めさせるか、または、前記命令は、前記メモリ管理ユニットに、前記メタデータ要約の確認が肯定的であることに応じて、変換動作を進めさせる、コンピューティングデバイス。
【請求項3】
請求項1に記載のコンピューティングデバイスであって、前記メモリは、前記プロセッサにおいて実行するためのシステムソフトウェアを格納し、前記システムソフトウェアは、
前記メモリ管理ユニットから前記トラップを受け取り、
前記物理メモリアドレスである障害のあるアドレスを特定し、
前記物理メモリアドレスに関連付けられたメタデータを格納するためのメモリ場所を特定し、
マイクロコードまたはファームウェアを使用して、前記メタデータを格納するために、特定された前記メモリ場所を構成する
ための命令を備えた、コンピューティングデバイス。
【請求項4】
請求項1に記載のコンピューティングデバイスであって、タグコントローラを備え、前記タグコントローラは、前記コンピューティングデバイスのキャッシュ階層の一部であり、前記タグコントローラは、前記キャッシュ階層の少なくとも一部のキャッシュライン追出しおよびキャッシュフィルの一方または双方の間にメタデータを考慮するように構成された、コンピューティングデバイス。
【請求項5】
請求項4に記載のコンピューティングデバイスであって、前記タグコントローラは、前記コンピューティングデバイスのメモリコントローラの一部であるか、前記キャッシュ階層の最後のレベルのキャッシュであってデータおよびメタデータを個別に格納する最後のレベルのキャッシュの直前に配置されるか、前記キャッシュ階層の最後のレベルのキャッシュと前記コンピューティングデバイスのメモリコントローラとの間にあるかのいずれかである、コンピューティングデバイス。
【請求項6】
請求項4に記載のコンピューティングデバイスであって、前記タグコントローラは、キャッシュライン追出しの一部として、前記タグコントローラのキャッシュと、前記メタデータ要約テーブルとのうちの1つまたは複数を確認することによって、メタデータストレージが、前記キャッシュラインが追い出される物理メモリアドレスのために構成されているか否かを判定するように構成された、コンピューティングデバイス。
【請求項7】
請求項6に記載のコンピューティングデバイスであって、前記タグコントローラは、前記メタデータストレージが構成されていることを発見することに応じて、追い出された前記キャッシュラインのメタデータが十分な局所性を有するか否かを確認し、十分な局所性が発見されたことに応じて、追い出された前記キャッシュラインの前記メタデータを、前記メタデータ要約テーブルに書き込み、十分な局所性が発見されないことに応じて、前記メタデータを前記物理メモリに書き込むように構成された、コンピューティングデバイス。
【請求項8】
請求項4に記載のコンピューティングデバイスであって、前記タグコントローラは、前記キャッシュ階層のキャッシュフィルの一部として、前記タグコントローラのキャッシュと、前記メタデータ要約テーブルとのうちの1つまたは複数を確認することによって、物理メモリアドレスであってデータが該物理メモリアドレスから前記キャッシュ階層に書き込まれる物理メモリアドレスのためにメタデータストレージが構成されているか否かを判定するように構成された、コンピューティングデバイス。
【請求項9】
請求項8に記載のコンピューティングデバイスであって、前記タグコントローラは、前記メタデータストレージが構成されていないことを発見することに応じて、前記キャッシュ階層の前記キャッシュを、前記データおよびデフォルト値に設定されるメタデータで埋めるように構成された、コンピューティングデバイス。
【請求項10】
請求項8に記載のコンピューティングデバイスであって、前記タグコントローラは、前記メタデータストレージが構成されていることを発見することに応じて、前記メタデータ要約テーブルを確認し、関連するメタデータが前記メタデータ要約テーブルに発見されたことに応じて、前記キャッシュ階層を、前記データおよび前記関連するメタデータで満たすように構成された、コンピューティングデバイス。
【請求項11】
請求項8に記載のコンピューティングデバイスであって、前記タグコントローラは、前記メタデータストレージが構成されていることを発見することに応じて、前記メタデータ要約テーブルを確認し、関連するメタデータが前記メタデータ要約テーブルに発見されないことに応じて、前記メタデータ要約テーブルから物理メモリにおける前記関連するメタデータの場所を取得するように構成された、コンピューティングデバイス。
【請求項12】
請求項1に記載のコンピューティングデバイスであって、特権境界を備え、より信頼できる前記境界の側で実行される命令は、前記メタデータ要約テーブルと、前記メタデータ要約テーブルが指すメタデータとのうちの1つまたは複数を管理するために前記特権境界を越えて複数の機能を公開する、コンピューティングデバイス。
【請求項13】
請求項12に記載のコンピューティングデバイスであって、前記複数の機能のうちの1つは、物理ページアドレスと、メタデータ特徴のセットとを引数として受け取り、前記ページがメタデータストレージのために使用され得る場合は真を返し、それ以外の場合は偽を返し、ここで、ページは、前記メモリ管理ユニットによって使用されるメモリの単位と同じまたは異なるメモリの単位であるか、または、
ホストアーキテクチャの機密コンピューティング保証が満たされるように、データページとメタデータストレージスロットとの間のマッピングを作成するか、または、
関連付けられたメタデータページからデータページを切り離す、
コンピューティングデバイス。
【請求項14】
請求項12に記載のコンピューティングデバイスであって、前記複数の機能のうちの1つは、ページが特権境界を越えて遷移する場合に、前記ページがメタデータストレージのために使用されないように、メタデータストレージ使用からデータストレージ使用へのページの遷移を取り扱う、コンピューティングデバイス。
【請求項15】
方法であって、
プロセッサのメモリ管理ユニットを使用して、
仮想メモリアドレスを含むメモリアクセス命令を受け取り、
前記仮想メモリアドレスを前記メモリの物理メモリアドレスに変換し、前記物理メモリアドレスに関連付けられた許可情報を取得し、
前記許可情報が、メタデータが前記物理メモリアドレスに関連付けられることが許可されていることを示すことに応じて、メタデータが前記物理メモリアドレスと互換性があるか否かを確認するために、前記物理メモリに格納されているメタデータ要約テーブルを確認し、
前記確認が否定的であることに応じて、前記物理メモリアドレスに関連付けられたメタデータを格納するための物理メモリの動的割当をトリガするために、前記コンピューティングデバイスのシステムソフトウェアにトラップを送信する
ステップを備えた、
方法。
【発明の詳細な説明】
【背景技術】
【0001】
いくつかのハードウェアセキュリティスキームは、メタデータを物理メモリと関連付けることを含み、データが物理メモリに読み書きされるときに、特定のセキュリティポリシを適用したりシステムの動作を変更したりするために、関連付けられたメタデータを確認することができる。
【0002】
以下に説明される実施形態は、物理メモリにメタデータを格納して使用する、知られている手法の欠点の一部またはすべてを解決する実施に限定されない。
【発明の概要】
【発明が解決しようとする課題】
【0003】
以下に、読者に基本的な理解を提供するために、本開示の簡略化された概要を提示する。本概要は、特許請求された主題の主要な特徴または本質的な特徴を特定するように意図されず、また、特許請求された主題の範囲を限定するために使用されるようにも意図されない。その唯一の目的は、後に提示される、より詳細な説明への序章として、本明細書に開示される概念の選択を、簡略形式で提示することである。
【課題を解決するための手段】
【0004】
様々な例において、プロセッサを備えるコンピューティングデバイスがあり、プロセッサは、メモリ管理ユニットを有する。コンピューティングデバイスは、プロセッサによって実行されると、メモリ管理ユニットに対して、仮想メモリアドレスを含むメモリアクセス命令を受け取らせ、仮想メモリアドレスを、メモリの物理メモリアドレスに変換させ、物理メモリアドレスに関連付けられた情報を取得させる命令を格納するメモリも有し、この情報は、許可情報およびメモリタイプ情報のうちの1つまたは複数である。この情報が、メタデータが物理メモリアドレスに関連付けられることが許可されていることを示すことに応じて、物理メモリに格納されているメタデータ要約テーブルの確認が行われ、メタデータが物理メモリアドレスと互換性があるか否かが確認される。
【0005】
確認が否定的であることに応じて、物理メモリアドレスに関連付けられたメタデータを格納するための物理メモリの動的割当を許可するために、トラップが、コンピューティングデバイスのシステムソフトウェアに送信される。いくつかの例では、メタデータ要約テーブルは、プロセッサのキャッシュにおいてキャッシュ可能である。
【0006】
付随する特徴の多くは、添付の図面と併せて考慮される以下の詳細な説明を参照することによってよりよく理解されるので、より容易に理解されるであろう。
【0007】
本説明は、添付の図面を参照して読まれる以下の詳細な説明からよりよく理解されるであろう。
【図面の簡単な説明】
【0008】
図1図1は、データセンタの概略図であり、データセンタの計算ノードの物理メモリを示し、物理メモリは、データおよびメタデータを個別に格納する。
図2図2は、コンピューティングデバイスの中央処理装置、キャッシュライン、仮想メモリ、および物理メモリの概略図であり、物理メモリはデータおよびメタデータをともに格納する。
図3図3は、コンピューティングデバイスの中央処理装置、キャッシュライン、仮想メモリ、および物理メモリの概略図であり、物理メモリはデータおよびメタデータを個別に格納する。
図4図4は、コンピューティングデバイスのメモリ管理ユニットおよびタグコントローラの概略図である。
図5図5は、メモリ管理ユニットによって実行される方法のフロー図である。
図6図6は、システムソフトウェアによって実行される方法のフロー図である。
図7図7は、キャッシュライン追出しのためにタグコントローラによって実行される方法のフロー図である。
図8図8は、キャッシュフィルのためにタグコントローラによって実行される方法のフロー図である。
図9図9は、実施形態が実施される例示的なコンピューティングベースのデバイスを例示する図である。
【発明を実施するための形態】
【0009】
添付の図面では、同様の部分を示すために同様の参照番号が使用される。
【0010】
添付の図面に関連して以下に提供される詳細な説明は、本例の説明として意図され、本例が構築または利用される唯一の形態を表すようには意図されない。本説明は、例の機能と、例を構築および展開するための動作のシーケンスとを記載する。しかしながら、同じまたは同等の機能およびシーケンスが、異なる例によって達成され得る。
【0011】
本書では、「ページ」という用語は、メモリ管理ユニットによって使用されるメモリ単位と同じまたは異なるメモリの単位を称するために使用される。
【0012】
本明細書で説明される例では、CPUであるプロセッサが説明される。これら例は、プロセッサがアクセラレータなどのキャッシュコヒーレント相互接続に接続されている任意のプロセッサである場合にも機能する。
【0013】
前述したように、いくつかのハードウェアセキュリティスキームは、メタデータを物理メモリと関連付けることを含み、データが物理メモリに読み書きされるときに、特定のセキュリティポリシを適用するために、関連付けられたメタデータを確認できる。そのようなハードウェアセキュリティスキームの例は、メモリタグ拡張機能(MTE)、および機能ハードウェア拡張RISC命令(CHERI)を含むが、これらに限定されない。物理メモリに関連付けられたメタデータは、ハードウェアセキュリティスキーム以外の目的にも使用可能である。
【0014】
メタデータを物理メモリに関連付けることを含む一般的なハードウェアセキュリティスキームは、メタデータを格納するために、一定範囲の物理メモリを切り分ける。発明者らは、ハードウェアセキュリティスキームまたは他の目的で物理メモリに関連付けられたメタデータを格納するために、クラウド展開における計算ノードが物理メモリの範囲を切り分けるクラウド展開について、許容できないメモリオーバヘッドが生じることを認識した。MTEの場合、サーバ上の単一の仮想マシン(VM)だけがメタデータを活用している場合でも、メモリオーバヘッドは全メモリの1/32にもなる。
【0015】
様々な実施形態において、メタデータ要約テーブルを格納するための物理メモリの(はるかに小さい、通常は1/512の)固定確保を含むメカニズムがあり、メタデータ要約テーブルは、必要な場合には、粗粒度メタデータを格納でき、細粒度メタデータを格納する、動的に割り当てられた物理メモリへのポインタを格納する。そのようなメタデータ要約テーブルの実施は、処理オーバヘッドを低く保ちながら、メタデータを使用しない動作にできるだけ影響を与えないようにする必要があるため、簡単ではない。実施形態では、典型的な中央処理装置(CPU)設計における、細粒度メタデータを格納するためのメタデータ要約テーブルと、物理メモリの動的割当と、それを管理するためのソフトウェア抽象化のセットとを展開するためのメカニズムがある。
【0016】
図1は、データセンタ100の概略図であり、データセンタ100の計算ノード104の物理メモリ114を示し、物理メモリ114は、データと、そのデータに関連付けられたメタデータとを個別に格納する。データセンタ100は、複数の計算ノード102,104を備える。各計算ノードは、中央処理装置(CPU)および物理メモリ114を有する。計算ノード102,104は、任意選択的に、通信ネットワークを介して互いに通信する。計算ノードは、アプリケーションを実行し、インターネットなどの通信ネットワークを介してクライアントデバイスにアプリケーションの機能を提供するなどによって、クラウドコンピューティングサービスを提供するために使用される。
【0017】
例では、第1の複数の計算ノード102と、第2の複数の計算ノード102とがある。各計算ノード104は、メタデータを使用する仮想マシンのみを有する。対照的に、各計算ノード102は、メタデータを使用しない少なくとも1つの仮想マシンを有する。
【0018】
図1は、第1のアプローチ(左側)による、および第2のアプローチ(右側)による、計算ノードのうちの1つの計算ノードの物理メモリの拡大図を示す。第1のアプローチと第2のアプローチとの両方において、データと、そのデータに関連付けられたメタデータとは、物理メモリに個別に格納される。個別に格納されるとは、所与のデータと、その関連付けられたメタデータについて、メモリ内の場所が必ずしも隣接している訳ではないことを意味する。
【0019】
第1のアプローチ(左側)によれば、物理メモリ106の範囲は、メタデータを格納するために物理メモリ114内に確保され、残りの物理メモリ108はデータを格納するためのものである。発明者らは、計算ノードが、ハードウェアセキュリティまたは他のスキームを使用する1つの仮想マシンのみを備えた計算ノード102のうちの1つであっても、各計算ノードが、メタデータを格納するための物理メモリ106の範囲を確保するため、第1のアプローチでは許容できないメモリオーバヘッドが生じることを認識した。第1のアプローチ(左側)によれば、メタデータを格納するために確保される物理メモリ106の範囲は、計算ノードのブート時に割り当てられ、多くの場合、物理メモリの3%程度に達する。データセンタは、複数のテナントを有し、そのうちの25%だけが、ハードウェアセキュリティまたは他のスキームを使用すると仮定する。メタデータ割当は、テナントによるスキームの(不)使用に合わせて調整されないが、それでも、スキームを使用するテナントの25%、および総データ物理メモリの25%が、メタデータ割当の100%を占めるので、12~13%の有効メモリオーバヘッドを課す。メモリは、データセンタにおける最も高価なリソースの1つであるため、物理メモリの12~13%の確保は許容できない。
【0020】
第2のアプローチ(右側)によれば、および本開示の実施形態によれば、ブート時に、固定された確保を行うことによって、物理メモリ110の小さな(必ずしも連続的ではない)範囲が、メタデータ要約テーブルのために確保される。メタデータ要約テーブルは、場合によっては、物理メモリの1/512を使用して格納される。メタデータ要約テーブルは、(メタデータを格納する物理メモリ内の場所へポインタを格納することによって)間接化を可能にし、場合によっては(メタデータを格納する場所で)キャッシュ機能を可能にする。メタデータ要約テーブルは、物理メモリのどの領域がメタデータを格納し、どの領域がデータを格納し、どの領域がまだ割り当てられていないかに関する情報を保持する物理メモリの表現である。メタデータ要約テーブル自体は、以下でより詳細に説明されるように、特定の状況で一部のメタデータを格納し、この観点で、格納するメタデータに対して一種のキャッシュ機能を提供する。データは残りの物理メモリ112に格納され、それに加えて、残りの物理メモリ112の一部が、メタデータを格納するために動的に割り当てられる。メタデータを格納するために動的に割り当てられた物理メモリ領域へのポインタは、メタデータ要約テーブルに格納される。このように、データと、その関連付けられたメタデータとは、物理メモリにともに格納されず、つまり、空間的に隣接しない。本技術の実施形態は、メタデータ要約テーブルが使用されるこの第2のアプローチに関する。メタデータ要約テーブルは、第1のアプローチの物理メモリ106の範囲よりもはるかに小さいため、第1のアプローチと比較してメモリが大幅に節約される。メタデータ要約テーブルは、メタデータを格納する物理メモリ内の場所へのポインタを格納することによって、間接化を可能にするため、メタデータ要約テーブルが、第1のアプローチの物理メモリの範囲よりもはるかに小さい場合でも、メタデータを格納するのに十分なメモリを有することができる。
【0021】
メタデータ要約テーブルを使用して間接化を導入すると、第1のアプローチと比較して、計算負荷が増加する可能性がある。しかしながら、一部のキャッシュ機能を有効にすると、負担が緩和される。状況によっては、メタデータを、メタデータ要約テーブル自体に格納することによって、メタデータがメタデータ要約テーブルにすでに存在する物理メモリ内の場所へのポインタを検索する必要がなくなるため、計算負担が軽減される。例では、メタデータが物理メモリの連続領域で同じである場合、そのメタデータは、メタデータ要約テーブルに保持される。
【0022】
図1のアプローチでは、データおよびメタデータは、物理メモリに個別に格納される。他のアプローチは、メタデータをバンドに格納すること、つまり、メタデータを、その関連データとともに、物理メモリに格納することを含む。これを行うことは、メタデータを直接サポートする専門家の物理メモリを使用することを含む。しかしながら、メタデータを直接サポートするメモリチップは高価であり、現在の多くのデータセンタには導入されていない。発明者らはまた、メタデータを直接サポートするメモリチップを使用すると、以下に説明するように、パフォーマンスを向上させるために利用できる局所特性の利点がもたらされないことも認識した。メタデータに対する一部の動作は、メタデータをデータと個別に検査できるという利益を得る。メタデータを直接格納する物理メモリを用いてこれらを効率的に実施するには、メモリが、データおよびメタデータの行だけでなく、メタデータの列もクエリできる必要がある。
【0023】
図2は、コンピューティングデバイスの中央処理装置200、キャッシュライン202、仮想メモリ206、および物理メモリ210の概略図であり、物理メモリ210は、データおよびメタデータをともに格納する。図2は、本開示の理解を助けるために含まれる背景資料である。
【0024】
コンピューティングデバイス上の仮想マシン上で実行されるアプリケーション(図2におけるAPP)は、仮想メモリアドレススペース206に割り当てられたメモリのページ212,214を使用すると仮定する。仮想メモリ212,214のページは、擬似物理/ゲスト物理メモリ208のページ216,218にマッピングされる。次に、擬似物理/ゲスト物理メモリ208のページ216,218が、物理メモリページ220,222にマッピングされる。メタデータを格納するために、物理メモリページ220,222は、網掛けされた長方形によって示されるように、わずかに拡張される。メタデータは物理メモリ210に格納され、アドレス変換が生じるという事実がメタデータを発見する能力に影響を及ぼすことはない。つまり、仮想メモリアドレスを与えられると、従来のアドレス変換方法を使用して、仮想メモリアドレスを物理メモリアドレスに変換し、物理メモリページを用いて、物理メモリに格納されたメタデータを取得することができる。(図2における物理メモリページ220からキャッシュラインチャンク204への矢印によって示されるように)データおよびそれに関連付けられたメタデータが、物理メモリから取得され、キャッシュラインに入れられるとき、データおよびそのメタデータはともに流れ、キャッシュライン202にともに格納される。しかしながら、このタイプのアプローチは、通常、物理メモリにおいて、データとともにメタデータを格納するための十分なスペースがないため機能しない。したがって、本開示の実施形態は、データおよびメタデータを、物理メモリに個別に格納する。
【0025】
図3は、背景資料であり、本開示の理解を助けるために含まれる。図3は、コンピューティングデバイスの中央処理装置200、キャッシュライン202、仮想メモリ206、および物理メモリ210の概略図であり、物理メモリ210は、データおよびメタデータを個別に格納する。図3は、メタデータを格納するための物理メモリの固定された切り分けを回避する1つの手法を示す。しかしながら、図3のアプローチは、以下に説明されるような欠点を有し、それが本開示において対処される。データおよびメタデータを個別に格納することによって、メタデータのための十分なスペースがある。図2に関して、アプリケーションは、コンピューティングデバイスの仮想マシンにおいて実行され、仮想メモリ206内の仮想メモリページを使用する。この例では、仮想メモリページは、メタデータのみのための仮想メモリページ300と、データのみのための仮想メモリページ302,304とを備える。図2に関して、仮想メモリの各ページは、擬似物理/ゲスト物理メモリ208内のページにマッピングされる。図2に関して、擬似物理/ゲスト物理メモリ208内の各ページは、物理メモリ210内のページにマッピングされる。キャッシュラインフィル動作が発生すると、データと、その関連付けられたメタデータとは、物理メモリ210内の個別のページから取得され、図3における物理メモリ210とキャッシュライン202との間の矢印306,308によって示されるように、キャッシュライン202内の個別の場所に格納される。データと、関連付けられたメタデータとは、キャッシュライン202においてともに格納されないため、データと、関連付けられたメタデータとに対する後続の動作は簡単ではない。したがって、本技術の実施形態は、データと、その関連付けられたメタデータとが、物理メモリに個別に格納される場合でも、データおよびメタデータを、キャッシュライン202または階層キャッシュなどのCPUのキャッシュに、ともに格納できるようにする。
【0026】
図4は、本開示の実施形態によるコンピューティングデバイスのメモリ管理ユニット400およびタグコントローラ406の概略図である。本開示の様々な実施形態では、メタデータ要約テーブルを更新して使用できるようにする機能は、メモリ管理ユニット400および/またはタグコントローラ406において実施される。「タグ」という用語は、メタデータのタイプを称するために使用されるので、「タグコントローラ」は、メタデータを制御するための機能である。タグコントローラは、必ずしもCPUがその時点で実行していることに応答して動作する必要はない。タグコントローラは、キャッシュ階層の一部であるため、キャッシュライン追出しまたはキャッシュフィルを実行する。メモリ管理ユニット400は、CPU200の一部である。CPUは、図4の例では、レベル1キャッシュ402、レベル2キャッシュ404、(図4の点線で示される)さらに可能なレベルのキャッシュ、ならびにタグコントローラ406を備える階層キャッシュであるキャッシュを介して、物理メモリ210と通信する。追加のキャッシュ層も、タグコントローラ406と物理メモリ210との間に存在し得る。データおよびメタデータは、タグコントローラ406とCPU200との間のキャッシュの任意の層にともに格納され、タグコントローラ406とメインメモリ210との間の任意の層に個別に格納される。本開示の実施形態では、CPUは、データと、関連付けられたメタデータとが(実際には個別に格納されている場合に)物理メモリにともに格納されているかのように動作することができる。これは、データと、その関連付けられたメタデータとを取得するために使用可能な物理メモリアドレススペース内に、単一のアドレスが存在するように、タグコントローラを使用することで実現される。本明細書で説明されるように、タグコントローラを使用することによって、アドレス変換後、データおよびメタデータを取得するために使用される単一の物理アドレスが存在する。
【0027】
データおよびメタデータが物理メモリに正確にどのように格納されるかは、プロセッサや、ほとんどのキャッシュには認識されない。
【0028】
図4の例では、タグコントローラは、物理メモリ210の直後のキャッシュ階層の最下位にある。物理メモリの直後にタグコントローラを有する利点は、一部のシステムにおける実施の簡略化を含む。
【0029】
図4のコンピューティングデバイスは、明確化のために図4に図示されていない1つまたは複数のメモリコントローラを有する。メモリコントローラは、物理メモリと直接通信するので、いくつかの実施形態では、タグコントローラ406は、メモリコントローラのうちの1つの内部にある。この場合、タグコントローラ406がメモリコントローラのうちの1つの内部にある場合、タグコントローラ406は、メタデータ、および任意選択的に、メタデータ要約テーブルエントリを格納するために、タグコントローラの内部に少量のキャッシュを有する。
【0030】
メモリコントローラの内部にタグコントローラを有する利点は、単一の統合ポイントを提供することを含む。
【0031】
いくつかの実施形態では、タグコントローラは、最後のレベルのキャッシュの直前にあり、最後のレベルのキャッシュは、(データおよびメタデータがともに格納される他のキャッシュレベルとは異なり)データおよびメタデータを、個別に格納する。このアプローチの利点は、作業負荷に応じて、汎用キャッシュに格納されたデータ量およびメタデータ量を動的にトレードすることを含む。
【0032】
図5は、本開示の実施形態にしたがって、メモリ管理ユニットによって実行される方法のフロー図である。メモリ管理ユニットは、仮想メモリアドレス、擬似/ゲスト物理メモリアドレス、および物理メモリアドレスの間で変換を行うための従来のメモリ管理ユニットの機能を有する。それに加えて、メモリ管理ユニットは、これから説明するように拡張される。メモリ管理ユニットは、たとえばCPUにおいて動作する仮想マシンにおいて実行されるアプリケーションの結果として、メモリアクセス命令を受け取る(500)。メモリアクセス命令は、仮想メモリアドレスを含む。メモリ管理ユニットは、仮想メモリアドレスを変換して、物理メモリアドレスを取得する(502)。変換処理の一部として、メモリ管理ユニットは、許可情報および/またはメモリタイプ情報である情報も取得する。変換情報および許可は、明示的な命令によって、またはMMUが直接参照できるページテーブルなどのデータ構造を維持するソフトウェアによって、ソフトウェアによってMMUに提供される。許可情報は、物理メモリアドレスに関連付けられたメタデータを格納するための許可が与えられているか否かを示す。メモリタイプ情報は、物理メモリアドレスにおけるメモリのタイプが、メタデータが物理メモリアドレスに潜在的に関連付けられるタイプであるか否かを示す。
【0033】
メモリ管理ユニットは、(動作504において)動作502において取得した情報を使用して、メモリアクセス命令がメタデータを許可するか否かを判定する。メモリアクセス命令がメタデータを許可しないことに応じて、メモリ管理ユニットは、動作510に進み、通常の変換動作を再開する。このように、ハードウェアセキュリティスキームや、メタデータを使用する他のスキームが必要とされない場合など、メタデータが使用されない場合、処理のオーバヘッドは影響を受けない。これは、メタデータストレージを使用しない仮想マシンについてゼロコスト特徴を可能にするので、非常に有用である。メタデータをサポートするハードウェアと、メタデータの使用を可能にしない仮想マシンとを備えたコンピューティングデバイスの場合、アドレス変換は、メタデータを許可しない。
【0034】
(動作504において)メモリアクセス命令がメタデータを許可することに応じて、メモリ管理ユニットは、動作506に進む。動作506において、メモリ管理ユニットは、メモリアクセス命令が、メタデータと互換性があるか否かを確認する。この確認は、メタデータ要約テーブルのクエリを含む。メタデータと互換性のあるメモリアクセス命令に応じて、メモリ管理ユニットは、通常の変換動作510を進める。メモリアクセス命令はメタデータと互換性があるため、物理メモリアドレスはすでに、メタデータストレージを関連付けている。
【0035】
(動作506において)メモリアクセス命令がメタデータと互換性のないことに応じて、トラップが、システムソフトウェアに送信される(508)。トラップは、障害があることをコンピューティングデバイスのシステムソフトウェアに示す、メッセージまたはフラグである。障害は、メモリアクセス命令に、物理メモリにおけるメタデータストレージスペースが必要であるが、現在割り当てられていないことである。トラップは、システムソフトウェアが、メモリアクセス命令のためのメタデータを格納するために、物理メモリにおいてスペースを動的に割り当てることを許可、有効化、またはトリガする。メモリ管理ユニットにトラップを送信させることは、メモリ管理ユニットが、中央処理装置とほぼ同期して動作するという点で有益である。対照的に、タグコントローラは、中央処理装置と同期しない。したがって、発明者らは、トラップを生成するために、タグコントローラではなく、メモリ管理ユニットを使用することが有益であることを認識した。なぜなら、タグコントローラにおいてトラップを生成すると、メタデータスペースの割当を試みるソフトウェアが、より多くのキャッシュ追出しをトリガし、成果の保証が非常に困難になる状況が発生する可能性が高いためである。
【0036】
図5では、2つの判定ひし形記号504,506があり、これは、単一の判定ひし形記号を有するものとは対照的に利点をもたらすことに留意されたい。判定ひし形記号504が省略されても処理は機能する。単一の判定ひし形記号の場合、ストレージがすでにメタデータのために割り当てられているという事実から、メタデータが許可される(すなわち、判定ひし形記号504)と推論される(互換性確認506)。しかし、この場合、メタデータ要約テーブルは、CPUに、または少なくともMMUに認識される必要があり、これが問題となる。また、単一の判定ひし形記号の場合、データセンタにおいて使用されている様々なタイプのメタデータスキームを区別できるように利用可能な十分な情報はない。データセンタにおける一部の仮想マシンは、MTEのみ、一部のCHERIのみ、一部のCHERIおよびMTEを使用していると仮定すると、一部のメタデータストレージが利用可能であるという事実だけでは、特定の種類のメタデータを、所与のページに格納できるか否かを見分けるのに十分ではない。「ページ」という用語は、メモリの単位を称し、MMUによって使用されるページと称されるメモリの単位と必ずしも同じではないことに留意されたい。
【0037】
図5は、コンピューティングデバイスにおいて実行される命令が、許可情報が、物理メモリアドレスにおいてメタデータが許可されていないことを示すことに応じて、メモリ管理ユニットに対して、どのように変換動作を進めさせるのかを例示する。
【0038】
図5は、メタデータ要約が肯定的であることを確認することに応じて、コンピューティングデバイスにおける命令が、メモリ管理ユニットに対して、変換動作をどのように進めさせるのかを例示する。
【0039】
図6は、本開示の実施形態にしたがって、コンピューティングデバイスにおいてシステムソフトウェアによって実行される方法のフロー図である。システムソフトウェアの例の非網羅的なリストは、オペレーティングシステムおよびハイパバイザである。システムソフトウェアは、図5の動作508の結果としてトラップを受け取る(600)。システムソフトウェアは、トラップにおいて受け取られた情報を検査することによって、トラップに関連付けられた障害のあるアドレスを特定する(602)。障害のあるアドレスは、図5のメモリアクセス命令の結果として調査された物理メモリアドレスであり、メモリアクセス命令には、関連付けられたメタデータストレージが必要であるにも関わらず、関連付けられたメタデータストレージがないことが判明した。システムソフトウェアは、メタデータストレージのために割り当てられるように利用可能な物理メモリにおける場所を特定する(604)。システムソフトウェアは、メタデータストレージを構成するために、1つまたは複数の命令を起動するか、またはコンピューティングデバイスのファームウェアを呼び出す(606)。システムソフトウェアは、この処理中に他の信頼ドメインにおけるシステムソフトウェアと、明示的または暗黙的に通信し得る。構成中、マイクロコードまたはファームウェアは、物理メモリ内の特定された場所を、メタデータストレージのために割り当てる。これは、メタデータストレージとして使用するために新しいページをマークすることか、または既存のページにおける新しいスロットを使用することを含む。
【0040】
マイクロコードまたはファームウェアは、ハードウェアセキュリティスキーム、またはメタデータが使用されている他のスキーム内で、特定されたデータページのためのメタデータストレージのために、特定された場所が使用できるか否かを判定するための確認を実行する。
【0041】
システムソフトウェアは、トラップハンドラから戻り(608)、したがって、メモリ管理ユニットは、トラップが取り扱われたことを認識する。次に、MMUは、メモリアクセス命令を再試行し、すなわち、動作500から図5の処理を繰り返す。今回、MMUが動作506に到達すると、メタデータストレージが割り当てられているため、結果は肯定的となり、MMUは、動作510に進むことができる。
【0042】
図6は、システムソフトウェアが、
メモリ管理ユニットからトラップを受け取り、
物理メモリアドレスである障害のあるアドレスを特定し、
物理メモリアドレスに関連付けられたメタデータを格納するためのメモリ場所を特定し、
マイクロコードまたはファームウェアを使用して、
メタデータを格納するために特定されたメモリ場所を構成するための命令をどのように備えているかを図示する。
【0043】
図6は、システムソフトウェアが、メタデータを格納するために特定されたメモリ場所の正常な構成に応じて、メモリ管理ユニットに変換動作を続けるように指示するための命令をどのように備えているのかを図示する。
【0044】
図7は、本開示の実施形態にしたがう方法のフロー図である。図7の方法は、キャッシュラインが下位レベルのキャッシュまたは物理メモリに追い出される、キャッシュライン追出しのために、タグコントローラによって実行される。キャッシュラインが、下位レベルのキャッシュに追い出される場合、その下位レベルのキャッシュは、データおよびメタデータを個別に格納するキャッシュである。以前に説明されたように、タグコントローラは、キャッシュ階層の一部であり、キャッシュ階層のその部分からのキャッシュラインの追出しと、キャッシュ階層のその部分へのキャッシュフィルとを担当する。タグコントローラは、任意選択的に、本明細書ではタグコントローラの内部キャッシュと称される独自の内部キャッシュを有する。キャッシュラインが追い出される場合(700)、タグコントローラは、キャッシュラインコンテンツが追い出される物理メモリまたは下位レベルのキャッシュにおける場所のために、構成されたメタデータストレージが存在するか否かを突き止めるために、自身の内部キャッシュを確認する(702)。内部キャッシュからの結果が決定的ではない場合、構成されたメタデータストレージが存在するか否かを突き止めるために、タグコントローラは、メタデータ要約テーブルにクエリを実行する(704)。タグコントローラが内部キャッシュを有する場合、タグコントローラは、任意選択的に、クエリの結果を、その内部キャッシュ内のメタデータ要約テーブルにキャッシュする。
【0045】
したがって、タグコントローラは、キャッシュラインコンテンツが追い出される場所のために、メタデータストレージが構成されているか否かを判定することができる(706)。メタデータストレージが構成されていないことに応じて、タグコントローラは、追い出されたキャッシュラインにおけるメタデータを破棄し始める(708)。
【0046】
判定ひし形記号706においてメタデータストレージが構成されることに応じて、タグコントローラは、追い出されるキャッシュラインにおけるメタデータが十分な局所性を有するか否かを確認する(710)。十分な局所性とは、比較的近い記憶場所内でメタデータが同じであることである。キャッシュラインは、連続する複数のデータチャンクで構成され、(キャッシュラインでは、メタデータおよびデータがともに格納されるため)各チャンクは、キャッシュラインにおいてチャンクとともに格納されるメタデータの項目を有し得る。メタデータが、複数の連続するチャンクについて同じであれば、十分な局所性がある。タグコントローラは、チャンクのメタデータを検査して、同じメタデータを有する連続したチャンクが、しきい値数を超えて存在するか否かを確認する。しきい値は事前に設定され、要約テーブルにおいて利用可能なスペースの量によって異なる。
【0047】
キャッシュラインにおけるメタデータの局所性が十分ではない場合、タグコントローラは、メタデータを物理メモリに書き込む(714)。追い出されたキャッシュラインからのデータも、物理メモリに書き込まれる。物理メモリでは、データおよびメタデータが、個別に格納されるため、メタデータは、物理メモリにおいて、データとは異なる場所に書き込まれる。タグコントローラは、任意選択的に、キャッシュラインに関連付けられたメタデータを、その内部キャッシュに格納する(または、メタデータを、物理メモリまたは下位レベルのキャッシュに書き込む必要がある)。時間の経過とともに、メタデータは、タグコントローラの内部キャッシュに蓄積し、内部キャッシュがフルになると、タグコントローラは、メタデータを物理メモリに書き戻す。このように、物理メモリへの書き込み頻度が減少する。
【0048】
キャッシュラインにおけるメタデータの局所性が十分ある場合、タグコントローラは、メタデータを、圧縮形式で、メタデータ要約テーブルに書き込む(718)。キャッシュラインにおける各チャンクのメタデータは同じであると仮定する。この場合、メタデータ要約テーブルに書き込まれるメタデータは、単一チャンクのメタデータの1つのインスタンスであり、同じメタデータがキャッシュライン全体に適合することを示す。メタデータの圧縮形式は、メタデータの値と、メタデータ値が適合するメモリ場所の範囲である。タグコントローラは、任意選択的に、その内部キャッシュを使用して、圧縮形式のメタデータをメタデータ要約テーブルに書き込む前に、圧縮形式のメタデータを蓄積する(716)。メタデータのキャッシュおよび圧縮は、物理メモリにおけるメタデータストレージへのアクセス(読取りと書込みとの両方)を低減するように機能する。様々な例では、メタデータ要約テーブルおよびメタデータの両方のキャッシュがある。
【0049】
発明者らは、図7の動作710における十分な局所性確認が、有用なパフォーマンス上の利点を提供することを認識した。MTEおよびCHERIの局所特性の例が以下に与えられる。MTEおよびCHERIは両方とも、メモリシステムからの基本的な要求が同じであり、キャッシュ階層を介して伝送されるバンド外データを格納する。MTEは、16バイトのグラニュールごとに、4ビットを使用して、メタデータを格納する。CHERIは、16バイトのグラニュールごとに1ビットを使用して、データが有効な機能であるか否かを示す。どちらの形式のメタデータにも、以下のような有用な局所特性がある。
・ MTEメタデータは、割当内のすべてのグラニュールに対して同じであるため、大規模な割当では、同じメタデータ値の連続した実行を有する。これは、ページ全体が同じメタデータ値を有する、大きなファイルのマッピングに特に当てはまる。
・ ほとんどのプログラムは、大量の連続した非ポインタデータを含むため、CHERIシステムは、無効なタグビット値を有する長い実行を有する。これらはページ全体をカバーすることもできる。
【0050】
図7は、タグコントローラの使用を例示しており、タグコントローラは、コンピューティングデバイスのキャッシュ階層の一部であり、タグコントローラは、キャッシュ階層の少なくとも一部のキャッシュライン追出しおよび/またはキャッシュフィル時に、メタデータを考慮するように構成される。
【0051】
図7のボックス700,702,704は、タグコントローラのキャッシュ、およびメタデータ要約テーブルのうちの1つまたは複数を確認することによって、キャッシュラインが追い出される物理メモリアドレスのために、メタデータストレージが構成されているか否かを判定するために、タグコントローラが、キャッシュライン追出しの一部として、どのように構成されているのかを示す。
【0052】
図7のひし形記号706の否定的な結果は、メタデータストレージが構成されていないことを発見することに応じて、タグコントローラが、追い出されたキャッシュラインのメタデータを破棄するためにどのように構成されるかを示す。
【0053】
図7のひし形記号710は、メタデータストレージが構成されていることを発見することに応じて、追い出されたキャッシュラインのメタデータが十分な局所性を有するか否かを確認し、十分な局所性が発見されたことに応じて、追い出されたキャッシュラインのメタデータを、メタデータ要約テーブルに書き込み、十分な局所性が発見されないことに応じて、メタデータを、物理メモリに書き込むために、タグコントローラがどのように構成されているかを示す。
【0054】
図8は、本開示の実施形態にしたがって、キャッシュフィルのためにタグコントローラによって実行される方法のフロー図である。埋められるキャッシュは、メタデータおよびデータをともに格納するキャッシュである。タグコントローラは、キャッシュ階層における上位レベルのキャッシュから、キャッシュフィル要求を受け取る(800)。キャッシュフィル要求は、キャッシュを埋めるために、データを取得することが望まれる物理メモリアドレスを含む。タグコントローラは、物理メモリアドレスのために構成されたメタデータストレージが存在するか否かを突き止めるために、(利用可能な内部キャッシュを有する場合)自身の内部キャッシュを確認する。結果が決定的ではない場合(つまり、メタデータが内部キャッシュにおいて発見されない場合)、タグコントローラは、メタデータ要約テーブルにクエリを実行し、任意選択的に、結果を、内部キャッシュにキャッシュする(804)。メタデータ要約テーブルは、物理メモリに関する情報と、物理メモリの単位にメタデータが構成されているか否かに関する情報とを有しているからである。
【0055】
判定ひし形記号806で、タグコントローラは、(動作802および動作804で取得された情報を使用して)物理メモリアドレスに対してメタデータストレージがすでに構成されているか否かを決定する立場にある。構成されていない場合、タグコントローラは、物理メモリからデータを取得する(808)。次に、タグコントローラは、キャッシュにおけるデータに関連付けられたメタデータを、デフォルト値に設定する(812)。キャッシュには、データおよびメタデータが、ともに格納される。この場合、データには、関連付けられたメタデータがないため、タグコントローラは、キャッシュにおける各チャンクのメタデータ領域を、デフォルト値で埋める。次に、タグコントローラは、キャッシュを埋める(810)。キャッシュが、データおよびメタデータの有効性の独立した追跡をサポートする場合、タグコントローラは、データおよびメタデータを、単一のメッセージに組み合わせるのではなく、利用可能になるとすぐに提供し得る。
【0056】
判定ひし形記号806において、メタデータストレージが、物理メモリアドレスのために構成されていると判定される場合、タグコントローラは、判定ひし形記号814に進む。判定ブロック814において、タグコントローラは、物理メモリアドレスのためのメタデータ要約テーブルエントリを検査して、メタデータ要約テーブルエントリが、十分な情報を有しているか否かを確認する。十分な情報があれば、メタデータ要約テーブルエントリは、メタデータを含む。タグコントローラは、物理メモリアドレスから、データを取得し、そのデータにメタデータを追加することに進む(816)。次に、タグコントローラは、データおよび追加されたメタデータで、キャッシュを埋める(818)。
【0057】
判定ひし形記号814において、メタデータ要約テーブルエントリが、メタデータをまだ含んでいない場合、メタデータ要約テーブルエントリは、メタデータが格納されている物理メモリにおける場所へのポインタを備える。したがって、タグコントローラは、メタデータが格納されている物理メモリにおける場所を取得し(820)、メタデータを取得する(822)。タグコントローラはまた、(データは、メタデータと個別に物理メモリに格納されるため)物理メモリからデータを取得し(824)、メタデータをデータに追加し、データおよび追加されたメタデータで、キャッシュを埋める(818)。
【0058】
図8のボックス800,802,804は、タグコントローラのキャッシュ、およびメタデータ要約テーブルのうちの1つまたは複数を確認することによって、データがそこからキャッシュ階層に書き込まれる物理メモリアドレスのために、メタデータストレージが構成されているか否かを判定するために、タグコントローラが、キャッシュ階層のキャッシュフィルの一部として、どのように構成されているのかを例示する。
【0059】
図8のひし形記号806の否定的結果は、メタデータストレージが構成されていないことを発見することに応じて、キャッシュ階層のキャッシュを、データと、メタデータがデフォルト値に設定されているメタデータとを用いて埋めるために、タグコントローラがどのように構成されているのかを例示する。
【0060】
図8のひし形記号814の肯定的結果は、メタデータストレージが構成されていることを発見することに応じて、メタデータ要約テーブルを確認し、関連するメタデータがメタデータ要約テーブルに発見されることに応じて、キャッシュ階層を、データと、関連するメタデータとで満たすために、タグコントローラがどのように構成されているかを例示する。
【0061】
図8のひし形記号814の否定的結果は、メタデータストレージが構成されていることを発見したことに応じて、メタデータ要約テーブルを確認し、関連するメタデータがメタデータ要約テーブルに発見されないことに応じて、メタデータ要約テーブルから物理メモリにおける関連するメタデータの場所を取得するために、タグコントローラがどのように構成されるのかを例示する。
【0062】
図7および図8を参照して上記で説明された方法は、同じメタデータの長い実行の圧縮と、たとえば、メタデータがページ全体で均一である場合の高速パスの提供とを可能にする。そのようなメタデータの実行を、タグコントローラ内にキャッシュすると、物理メモリへの多くの読取りが不要になり、実際、システムソフトウェアが、均一なメタデータを保証するページの場合、より詳細なメタデータストアを、完全に省略できる。CHERIを使用すると、ゼロ化されたメタデータの実行を便宜的に圧縮することは、システムソフトウェアが、機能のためにメモリをスイープするのにも有用であり、そのような実行のために、メタデータ機能データを、メモリから取得する必要はない。
【0063】
本明細書で説明される実施形態は、動的に割り当てられる階層型メタデータストレージを可能にし、これによって、ストレージをVMごとに、またはアプリケーションごとに調整できるようになる。
【0064】
本明細書で説明されるいくつかの実施形態では、コンピューティングデバイスは、メタデータストレージのためのポリシを有する。
【0065】
例では、メタデータストレージのためのポリシは、非仮想化システムにおけるコンピューティングデバイスのオペレーティングシステムカーネルと、仮想化システムにおけるハイパバイザと、曖昧な特権境界および従来の仮想化を有するシステムにおける特権付きマイクロコードまたはファームウェアと組み合わされたハイパバイザとによって管理される。コンピューティングデバイスが、機密コンピューティングを実施する実施形態では、メタデータストレージのためのメカニズムは、特権付きファームウェアまたはマイクロコードにおいて実施される。機密性または整合性のために、信頼されたコンピューティングベースからハイパバイザを削除する機密コンピューティングシステムが存在する場合、特権付きファームウェアまたはマイクロコードは、システムにおけるどのエンティティも、ページのためにメタデータを検査または変更できないように構成され、ここでは、データも変更できない。機密コンピューティングのためのサポートのないシステムでは、オペレーティングシステム(OS)またはハイパバイザなどの他のシステムソフトウェアが、同じ保証を維持するように信頼され得る。
【0066】
コンピューティングデバイスが、機密コンピューティングを実施する実施形態では、メタデータ要約テーブルは、特権付きファームウェアまたはマイクロコードによって管理され、そのレイアウトは、特権付きファームウェアまたはマイクロコードの外部にアーキテクチャ的に公開される必要はない。任意の物理アドレスから、メタデータ要約テーブルにおける対応するエントリへの簡単なマッピングが存在する。機密コンピューティングサポートを提供するシステムでは、MMUが使用するメタデータ要約テーブル情報は、機密コンピューティングのための逆マッピングまたは同様のメタデータと同じ場所に格納され得る。このように、MMUのための追加のメモリアクセスは必要ない。
【0067】
キャッシュおよびメモリシステムにはコヒーレンスポイントがあり、その下で、メタデータおよびデータは、個別に格納され、その上で、単一のキャッシュラインにマージされて流れる。タグコントローラは、ロード時にデータおよびメタデータをアセンブルし、追出し時に分割し、メタデータ値のキャッシュを維持することを担当する。
【0068】
本明細書で説明される実施形態は、「使用しないものに対して料金を支払わない」という利点を与える。大規模なメモリ切り分けは、確保された物理メモリを必要とするアーキテクチャ特徴を使用するVMのみのために存在し、切り分けは、要求された特定の特徴によって必要とされる値よりも大きくない。
【0069】
本明細書で説明される実施形態は、高性能を達成するために、(マイクロ)アーキテクチャが、可能な限り単純であるという利点を与える。
【0070】
機密コンピューティングを使用する例では、ハイパバイザ、またはマイクロコード、またはファームウェアは、キャッシュにまだメタデータが存在する可能性がある間、メタデータストレージが、ページから削除されないことを保証するように構成される。メタデータページが物理メモリから削除されると、対応するデータページも削除されているため、キャッシュにおける古いデータは、安全に破棄される。データページを、安全ではないメモリ領域に戻す場合と同様に、メタデータページを、信頼できないハイパバイザに戻す前に、そのようなデータがキャッシュからフラッシュされることを保証することは、マイクロコードまたはファームウェアの責任である。
【0071】
機密コンピューティングを使用する例では、ここで説明されるように、特権付きファームウェアまたはマイクロコードへのソフトウェアインターフェースが存在する。ソフトウェアインターフェースは、特権境界を越えて機能する機能呼出を備える。
【0072】
特権付きファームウェアまたはマイクロコードは、メタデータ要約テーブルと、それが指すメタデータとを管理する少数の機能を公開する。メタデータ要約テーブルは、ハードウェアとファームウェアとの間の契約として考えることができ、タグコントローラとMMUとの両方によって読み取られ、ファームウェアによって維持される。タグコントローラは、メタデータ要約テーブルに書き込み、階層型タグストレージ設計における最上位レベルとして、メタデータを格納し得る。ファームウェアの先頭におけるシステムソフトウェアは、メタデータ要約テーブルの実施の詳細を公開しない、ファームウェアへの一貫したインターフェースを有する。
【0073】
各メタデータページは、メタデータストアの配列として論理的に取り扱われ、データページごとに1つのメタデータストアがある。単一のメタデータページにおけるメタデータストアの数は、サポートされている特徴によって異なる。VMが、全体的に無効化されたメタデータ使用特徴を有している場合、MMUは、メタデータストレージの確認を完全にスキップできる。これは、ハイパバイザが、各ページがVMに割り当てられるときにメタデータストレージを提供するか、または、VMがメタデータページとしてマッピングした後、ページのために詳細なメタデータストレージを遅延動的に割り当てることを意味する。
【0074】
ハイパバイザは、必要に応じてメモリを過剰提供する場合もある。たとえば、クラウドプロバイダは、MTEが有効化されている通常のVMに割り当てられたメモリの3.125%を、他のVMのために利用可能なプールに追加し、それらのページのメタデータストレージが所望される場合に、再利用できる。1TiBのメモリを有する物理マシンでは、すべてのVMが、有効化されたMTEを有するが、ページの半分のみのためにMTEを使用する場合、16GiBのメモリが残り、障害を検出したときに、ハイパバイザによる再利用が可能である限り、他のVMのために一時的に使用され得る。
【0075】
様々な実施形態において、コンピューティングデバイスは特権境界を備え、より信頼できる境界の側で実行される命令は、メタデータ要約テーブルと、メタデータ要約テーブルが指すメタデータとのうちの1つまたは複数を管理するために特権境界を越えて複数の機能を公開する。
【0076】
例では、複数の機能のうちの1つは、物理ページアドレスと、メタデータ特徴のセットとを引数として受け取り、ページがメタデータストレージのために使用され得る場合は真を返し、それ以外の場合は偽を返し、ここで、ページは、メモリ管理ユニットによって使用されるメモリの単位と同じまたは異なるメモリの単位であり、または、ホストアーキテクチャの機密コンピューティング保証が満たされるように、データページとメタデータストレージスロットとの間のマッピングを作成する、または、関連付けられたメタデータページからデータページを切り離す。
【0077】
例では、複数の機能のうちの1つは、ページが特権境界を越えて遷移する場合に、そのページがメタデータストレージのために使用されないように、メタデータストレージ使用からデータストレージ使用へのページの遷移を取り扱う。
【0078】
メタデータのサイズのクエリ
特定の実施は、異なるマイクロアーキテクチャ特徴のために、異なる量のストレージを確保する必要があり得、これは、アーキテクチャ状態の量を超える場合がある。例では、データセンタにおける一部のVMは、MTEを使用し、一部のVMは、CHERIを使用する。この場合、(MTEまたはCHERIのどちらが使用されているかによって異なるので)メタデータストレージのために必要なスペースの量を突き止めるために、ファームウェアまたはマイクロコードをクエリする機能を有することが有用である。例では、この機能は、引数として、所与のページのために格納されるメタデータのタイプ(たとえば、MTEまたはCHERI)の指示を受け取る。
【0079】
メタデータページの作成
例では、特権付きファームウェアまたはマイクロコードは、ページをデータページからメタデータページに転送する機能を公開する。機密コンピューティングの場合、メタデータページを作成するための機能は、機密コンピューティングが侵害されないように、データページを、適切な特権レベルに保つように構成される。この機能は、引数として物理ページアドレスを受け取り、物理ページがメタデータを格納するためにページに正常に転送されたか否かによって真または偽を返す。
【0080】
物理メモリは、メタデータを格納するために使用できるようになる前に、この機能を使用して、一般に利用可能な物理メモリのプールから移動される。
【0081】
機密コンピューティングの場合、ファームウェアは、この機能への引数として渡されたページが、呼出元の特権レベルによって所有されているか否かを確認する。
【0082】
ページのためのメタデータストレージの割当
例では、特権付きファームウェアまたはマイクロコードは、ページのためにメタデータストレージを割り当てるための機能を公開する。
【0083】
関連付けられたメタデータを有する各データページは、関連付けられたメタデータストレージスロットを有する。
【0084】
メタデータストレージスロットは、メタデータを格納するためのページ内の物理メモリの単位である。そのマッピングを作成するための機能が使用される。例では、この機能は、データページの物理アドレスを、引数として受け取る。別の引数は、メタデータを格納するために割り当てられたページの物理アドレスである。別の引数は、メタデータページにおいて使用可能なスロットのインデクスまたはアドレスである。
【0085】
この機能は、ホストアーキテクチャの機密コンピューティングの保証を強制できるように十分な確認を実行する。メタデータストレージがページに正常に割り当てられた場合、この機能は真を返す。それ以外の場合、機能は偽を返す。メタデータまたはデータページが、呼出元によって所有されていない場合、メタデータページが、メタデータページではない場合、または、データページが、割り当てられたメタデータをすでに有している場合、この機能は失敗を返す。
【0086】
エラーがない場合、データページのためのメタデータ要約テーブルエントリは、所与のメタデータページにおける指定されたスロットを指すように更新される。メタデータページが、データページから参照されたまま、リリースされることを阻止するのに少なくとも十分なメタデータを格納するように、メタデータページに関連付けられたメタデータ要約テーブルの状態が更新される。
【0087】
データページからのメタデータストレージの削除
例では、特権付きファームウェアまたはマイクロコードは、データページからメタデータストレージを削除する機能を公開する。
【0088】
メタデータページが、通常の使用のために再利用される前に、メタデータを格納するためにそのページを使用しているデータページは、データページからメタデータストレージを削除する機能を使用して切り離される。この機能の呼出元は、変換テーブルからデータページを削除し、データページからのデータを含むキャッシュラインを無効にする。これは、タグコントローラの上にメタデータを含むキャッシュラインが存在しないことを保証する。
【0089】
データページからメタデータストレージを削除する機能は、データページの物理アドレスを引数として受け取り、成功または失敗を示す値を返す。データページが呼出元によって所有されていない場合、データページではない場合、または割り当てられたメタデータのないデータページである場合、機能は失敗を返す。
【0090】
機能の呼出が成功すると、データページのためのメタデータ要約テーブルエントリがリセットされ、メタデータがないことが示され、メタデータページに関連付けられた記録状態が更新され、この参照がなくなったという事実が反映される。ファームウェアは、このデータページを参照するキャッシュラインを無効化する。
【0091】
データページのためのメタデータストレージのクエリ
例では、特権付きファームウェアまたはマイクロコードは、データページのためのメタデータストレージをクエリする機能を公開する。
【0092】
この機能は、データページの物理アドレスを引数として受け取り、成功または失敗を示す値を返す。
【0093】
データページが、呼出元によって所有されていない場合、データページではない場合、または関連付けられたメタデータを有していない場合、この機能は失敗を返す。
【0094】
メタデータページの再利用
例では、特権付きファームウェアまたはマイクロコードは、メタデータページを再利用するための機能を公開する。
【0095】
動的メタデータストレージは、システムソフトウェアが、データ使用とメタデータ使用との間で、またはその逆に、メモリを移動することを可能にするように意図されている。この機能は、メタデータストレージ使用からデータストレージ使用へのページの遷移を取り扱う。
【0096】
この機能は、メタデータページの物理アドレスを引数として受け取り、ページが削除されている場合は真を返し、そうでない場合は偽を返す。
【0097】
この機能は、ホストアーキテクチャの機密コンピューティングの保証を強制できるように、十分な確認を実行する。
【0098】
図9は、モバイル電話、データセンタ計算ノード、デスクトップパーソナルコンピュータ、ウェアラブルコンピュータなどの任意の形態のコンピューティングおよび/または電子デバイスとして実施される例示的なコンピューティングベースのデバイス900の様々な構成要素を例示しており、いくつかの例では、動的に割当可能なメタデータストレージの実施形態が実施される。
【0099】
コンピューティングベースのデバイス900は、メタデータストレージを動的に割り当てるために、デバイスの動作を制御するコンピュータ実行可能命令を処理するための、マイクロプロセッサ、コントローラ、または他の任意の適切なタイプのプロセッサである1つまたは複数のプロセッサ910を備える。プロセッサは、メモリ管理ユニット914を有する。いくつかの例では、たとえば、システムオンチップアーキテクチャが使用される場合、プロセッサ910は、(ソフトウェアまたはファームウェアではなく)図5から図8のいずれかの方法の一部を実施する1つまたは複数の固定機能ブロック(アクセラレータとも称される)を含む。キャッシュ階層916は、タグコントローラ(図9には図示せず)を備える。システムソフトウェア904は、コンピューティングベースのデバイスにおいて提供され、アプリケーションソフトウェア906が、デバイスにおいて実行できるようにする。
【0100】
コンピュータ実行可能命令は、コンピューティングベースのデバイス900によってアクセス可能な任意のコンピュータ可読媒体を使用して提供される。コンピュータ可読媒体は、たとえば、メモリ902などのコンピュータ記憶媒体および通信媒体を含む。メモリ902などのコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールなどの情報の記憶のための任意の方法または技術で実施される揮発性および不揮発性、リムーバブルおよび非リムーバブルな媒体を含む。コンピュータ記憶媒体は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、読取専用メモリ(ROM)、消去可能プログラマブル読取専用メモリ(EPROM)、電子的消去可能プログラマブル読取専用メモリ(EEPROM)、フラッシュメモリまたは他のメモリ技術、コンパクトディスク読取専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または、コンピューティングデバイスによるアクセスのための情報を格納するために使用される他の任意の非伝送媒体を含むが、これらに限定されない。対照的に、通信媒体は、コンピュータ可読命令、データ構造、プログラムモジュールなどを、搬送波などの変調されたデータ信号、または他の転送機構で具現化する。本明細書で定義されるように、コンピュータ記憶媒体は、通信媒体を含まない。したがって、コンピュータ記憶媒体は、それ自体が伝播信号であると解釈されるべきではない。コンピュータ記憶媒体(メモリ902)は、コンピューティングベースのデバイス900内に図示されているが、いくつかの例では、ストレージは、分散されているか、または遠隔に配置され、ネットワークまたは他の通信リンクを介して(たとえば、通信インターフェース912を使用して)アクセスされることが理解されるであろう。
【0101】
「コンピュータ」または「コンピューティングベースのデバイス」という用語は、本明細書では、命令を実行するような処理機能を備えた任意のデバイスを称するために使用される。当業者であれば、そのような処理機能は、多くの異なるデバイスに組み込まれ、したがって、「コンピュータ」および「コンピューティングベースのデバイス」という用語はおのおの、パーソナルコンピュータ(PC)、サーバ、モバイル電話(スマートフォンを含む)、タブレットコンピュータ、セットトップボックス、メディアプレーヤ、ゲーム機、携帯情報端末、ウェアラブルコンピュータ、および、他の多くのデバイスを含むことを認識するであろう。
【0102】
本明細書で説明される方法は、いくつかの例では、たとえば、プログラムがコンピュータにおいて実行されるときに、本明細書で説明される方法のうちの1つまたは複数のすべての動作を実行するように適合されたコンピュータプログラムコード手段を備えるコンピュータプログラムの形態のような、有形記憶媒体において機械可読形式のソフトウェアによって実行され、コンピュータプログラムは、コンピュータ可読媒体において具現化され得る。ソフトウェアは、方法動作が任意の適切な順序で、または同時に実行され得るように、並列プロセッサまたは直列プロセッサにおける実行のために適している。
【0103】
当業者であれば、プログラム命令を格納するために利用されるストレージデバイスは、任意選択的に、ネットワークにわたって分散されることを認識するであろう。たとえば、リモートコンピュータは、ソフトウェアとして説明された処理の例を格納できる。ローカルコンピュータまたは端末コンピュータは、リモートコンピュータにアクセスし、ソフトウェアの一部またはすべてをダウンロードして、プログラムを実行できる。あるいは、ローカルコンピュータは、必要に応じて、ソフトウェアの一部をダウンロードし得るか、または、一部のソフトウェア命令を、ローカル端末において実行し、一部のソフトウェア命令を、リモートコンピュータ(またはコンピュータネットワーク)において実行する。当業者はまた、当業者に知られている従来の技法を利用することによって、ソフトウェア命令のすべてまたは一部が、デジタル信号プロセッサ(DSP)や、プログラマブルロジックアレイなどの専用回路によって実行され得ることを認識するであろう。
【0104】
当業者に明らかなように、本明細書で与えられる任意の範囲またはデバイス値は、求められる効果を失うことなく拡張または変更され得る。
【0105】
主題は、構造的特徴および/または方法論的動作に特有の文言で説明されたが、添付の特許請求の範囲において定義される主題は、必ずしも上記で説明された特定の特徴または動作に限定されないことが理解されるべきである。むしろ、上記で説明された特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示される。
【0106】
上記で説明された利益および利点は,1つの実施形態に関連する場合もあれば、いくつかの実施形態に関連する場合もあることが理解されよう。実施形態は、記述された問題の一部またはすべてを解決するものにも、あるいは、記述された利益および利点のいずれかまたはすべてを有するものにも、限定されない。さらに、「1つの」という項目への言及は、それらの項目のうちの1つまたは複数を称することが理解されるであろう。
【0107】
本明細書で説明される方法の動作は、任意の適切な順序で、または必要に応じて同時に実行され得る。それに加えて、個々のブロックは、本明細書で説明される主題の範囲から逸脱することなく、任意の方法から削除され得る。上記で説明された例のいずれかの態様を、説明された他の例のいずれかの態様と組み合わせて、求められる効果を失うことなく、さらなる例を形成することができる。
【0108】
「備える」という用語は、本明細書では、特定された方法ブロックまたは要素を含むが、そのようなブロックまたは要素は、排他的リストを備えず、方法または装置は、追加のブロックまたは要素を含み得ることを意味するために使用される。
【0109】
「サブセット」という用語は、本明細書では、セットのサブセットがセットのすべての要素を備えている訳ではない(すなわち、セットの要素の少なくとも1つが、サブセットから欠落している)ような、適切なサブセットを称するために使用される。
【0110】
上記の説明は単なる例として与えられたものであり、当業者によって様々な変更がなされ得ることが理解されるであろう。上記の明細書、例、およびデータは、例示的な実施形態の構造および使用の完全な説明を提供する。様々な実施形態が、ある程度の特殊性を持って、または1つまたは複数の個別の実施形態を参照して上記で説明されたが、当業者であれば、本明細書の範囲から逸脱することなく、開示された実施形態に多くの変更を行うことができるであろう。
図1
図2
図3
図4
図5
図6
図7
図8
図9
【国際調査報告】