本技術の更なる態様、特徴、及び利点は、添付の図面と併せて読まれる以下の例の説明から明らかとなる。
データ処理システムの例を概略的に示す図である。
処理回路が動作することができるいくつかの領域を示す図である。
グラニュール保護ルックアップをサポートする処理システムの例を示す図である。
いくつかの物理アドレス空間を、メモリシステム内の場所を識別するシステム物理アドレス空間上に別名化することを概略的に示す図である。
有効なハードウェア物理アドレス空間を分割し、それによってアーキテクチャ上の異なる物理アドレス空間が、システム物理アドレス空間のそれぞれの部分へのアクセスを有する例を示す図である。
処理回路の現在の動作領域を判定する方法を示すフロー図である。
仮想アドレスを物理アドレスに変換するために使用されるページテーブルエントリのページテーブルエントリフォーマットの例を示す図である。
所与のメモリアクセス要求によってアクセスされる物理アドレス空間を選択する方法を示すフロー図である。
どの物理アドレス空間が所与の物理アドレスにアクセスを許可されているかを示すグラニュール保護情報を提供するためのグラニュール保護テーブルのエントリの例を示す図である。
グラニュール保護ルックアップを実行する方法を示すフロー図である。
アドレス変換及びグラニュール保護情報フィルタリングのいくつかのステージを示す図である。
キャッシュ無効化命令の処理を示すフロー図である。
PoPA(物理的別名化ポイント)までのキャッシュ無効化命令の処理を示すフロー図である。
データ処理システムの例を示す図である。
使用され得るシミュレータの例を示す図である。
物理アドレス空間へのアクセスの制御
データ処理システムは、仮想メモリの使用をサポートすることができ、アドレス変換回路が提供されて、メモリアクセス要求によって指定された仮想アドレスを、アクセスされるメモリシステム内の場所に関連付けられた物理アドレスに変換する。仮想アドレスと物理アドレスとの間のマッピングは、1つ以上のページテーブル構造で定義され得る。ページテーブル構造内のページテーブルエントリはまた、処理回路上で実行される所与のソフトウェアプロセスが特定の仮想アドレスにアクセスできるかどうかを制御することができ得るいくつかのアクセス許可情報を定義することができる。
いくつかの処理システムでは、すべての仮想アドレスは、アクセスされるメモリ内の場所を識別するためにメモリシステムによって使用される単一の物理アドレス空間上にアドレス変換回路によってマッピングされ得る。そのようなシステムでは、特定のソフトウェアプロセスが特定のアドレスにアクセスできるかどうかの制御は、仮想対物理アドレス変換マッピングを提供するために使用されるページテーブル構造にのみ基づいて提供される。しかしながら、そのようなページテーブル構造は、通常、オペレーティングシステム及び/又はハイパーバイザによって定義され得る。オペレーティングシステム又はハイパーバイザが不正アクセスされると、機密情報に攻撃者がアクセス可能となり得る情報漏洩を引き起こす可能性がある。
したがって、特定のプロセスが、他のプロセスから隔離されてセキュアに実行される必要があるいくつかのシステムでは、システムはいくつかの領域内の動作をサポートでき、かついくつかの別個の物理アドレス空間がサポートされ得て、メモリシステムの少なくともいくつかの構成要素については、仮想アドレスが異なる物理アドレス空間内の物理アドレスに変換されるメモリアクセス要求は、たとえそれぞれの物理アドレス空間内の物理アドレスが実際にはメモリ内の同じ場所に対応する場合であっても、あたかも、メモリ内の全く別のアドレスにアクセスしているかのように扱われる。いくつかのメモリシステム構成要素について見られるように、処理回路の異なる動作領域からのそれぞれ別個の物理アドレス空間へのアクセスを隔離することにより、オペレーティングシステム又はハイパーバイザが設定したページテーブル許可情報に依存しない、より強いセキュリティ保証を提供することができる。
処理回路は、処理回路が動作することができる他の領域との間の切り替えの管理に関わるルート領域内の処理をサポートすることができる。切り替えを制御するための専用ルート領域を提供することにより、1つの領域で実行されているコードが別の領域への切り替えをトリガすることができる程度を制限することによってセキュリティを維持するのに役立ち得る。例えば、ルート領域は、領域の切り替えが要求されたときに、様々なセキュリティチェックを実行することができる。
したがって、処理回路は、処理が少なくとも3つの領域、すなわちルート領域及び少なくとも2つの他の領域のうちの1つで実行されることをサポートすることができる。アドレス変換回路は、現在の領域から実行されるメモリアクセスの仮想アドレスを、少なくとも現在の領域に基づいて選択された複数の物理アドレス空間のうちの1つの中の物理アドレスに変換し得る。
以下に説明する実施例では、複数の物理アドレス空間は、他の領域と関連付けられた物理アドレス空間とは別に、ルート領域に関連付けられたルート物理アドレス空間を含む。したがって、ルート領域は、他の領域のうちの1つと関連付けられた物理アドレス空間のうちの1つを使用するのではなく、ルート領域に配分された独自の物理アドレス空間を有する。他の領域と関連付けられた物理アドレス空間から隔離された専用のルート物理アドレス空間を提供することにより、ルート領域に関連付けられたデータ又はコードに対するより強いセキュリティ保証を提供することができ、このことは、他の領域へのエントリを管理することを考慮すると、セキュリティに最も重要とみなされ得る。また、他の領域の物理アドレス空間と区別された専用のルート物理アドレス空間を提供することにより、それぞれの物理アドレス空間内の物理アドレスの配分をハードウェアメモリストレージの特定の単位に単純化し得るため、システム開発を簡素化することができる。例えば、別のルート物理アドレス空間を識別することによって、ルート領域に関連付けられたデータ又はプログラムコードがよりセキュアでないオフチップメモリではなく保護されたオンチップメモリに優先的に記憶されることがより単純であり得て、ルート領域のコード又はデータが別の領域と共有された共通アドレス空間に記憶されている場合よりも、ルート領域に関連付けられた部分を判定するオーバーヘッドがより小さい。
ルート物理アドレス空間は、ルート領域から排他的にアクセス可能であり得る。したがって、処理回路が他の領域のうちの1つで動作している場合、処理回路はルート物理アドレス空間にアクセスできない場合がある。これによって、領域間の切り替えを管理するため又は他の領域のうちの1つにおいて処理回路が有する権利を制御するために、ルート領域が依存するデータ又はプログラムコードを、他の領域のうちの1つで実行されているコードが改ざんすることはできないことが確実とされ、セキュリティが改善する。
一方、ルート領域からは複数の物理アドレス空間のすべてにアクセス可能であり得る。ルート領域内で実行されているコードは、他の領域のうちの1つで動作するコードを提供する任意の当事者によって信頼される必要があり、ルート領域のコードは、その当事者のコードが実行されているその特定の領域への切り替えに関与するため、本質的にルート領域は、任意の物理アドレス空間にアクセスすることが信頼され得る。ルート領域から物理アドレス空間のすべてにアクセス可能とすることにより、メモリ区域を領域内外へ遷移させること、例えば起動中にコード及びデータを領域にコピーすること、及びその領域にサービスを提供することなどの機能を実行することができる。
アドレス変換回路は、現在の領域に応じて、どの物理アドレス空間がアクセス可能であるかを制限し得る。現在の領域に特定の物理アドレス空間がアクセス可能である場合、これは、アドレス変換回路が、現在の領域から発せられたメモリアクセスのために指定された仮想アドレスを、その特定の物理アドレス空間内の物理アドレスに変換可能であることを意味する。このことは、メモリアクセスが許可されることを必ずしも意味しない。なぜなら、たとえ、特定のメモリアクセスにおいて、その仮想アドレスが特定の物理アドレス空間の物理アドレスに変換された場合でも、その物理アドレスが、その特定の物理アドレス空間内で実際にアクセスされることが許可されているかどうかを判定するために実行される更なるチェックがあり得るからである。これについては、それぞれの物理アドレス空間の間での物理アドレスの分割を定義するグラニュール保護情報を参照して以下で更に論じる。それでもなお、物理アドレス空間のどのサブセットが現在の領域にアクセス可能であるかを制限することによって、より強いセキュリティの保証を提供することができる。
いくつかの例では、処理回路は、ルート領域に加えて2つの追加の領域をサポートすることができる。例えば、他の領域は、セキュア物理アドレス空間と関連付けられたセキュア領域と、よりセキュアでない物理アドレス空間に関連付けられたよりセキュアでない領域とを含み得る。よりセキュアでない物理アドレス空間は、よりセキュアでない領域、セキュア領域、及びルート領域の各々からアクセス可能であり得る。セキュア物理アドレス空間は、セキュア領域及びルート領域からはアクセス可能であり得るが、よりセキュアでない領域からはアクセス不可能であり得る。ルート領域はルート領域にアクセス可能であり得るが、よりセキュアでない領域及びセキュア領域は、ルート領域にアクセス不可能であり得る。したがって、これにより、ページテーブルが唯一のセキュリティ制御機構として使用されている場合よりも強いセキュリティ保証を伴って、セキュア領域内で実行されているコードが、そのコード又はデータを、よりセキュアでない領域内で動作しているコードによるアクセスから保護することができる。例えば、コードのより強いセキュリティを必要とする部分を、よりセキュアでない領域で動作している非セキュアオペレーティングシステムとは別個の、信頼できるオペレーティングシステムによって管理されるセキュア領域内で実行することができる。そのようなセキュア領域及びよりセキュアでない領域をサポートするシステムの例は、Arm(登録商標)Limited(Cambridge,UK)によって提供されるTrustZone(登録商標)アーキテクチャ機能をサポートする処理アーキテクチャに従って動作する処理システムであり得る。従来のTrustZone(登録商標)の実装では、セキュア領域とよりセキュアでない領域との間の切り替えを管理するためのモニタコードは、セキュア領域によって使用されるのと同じセキュア物理アドレス空間を使用する。対照的に、上述のように、他の領域の切り替えを管理するためのルート領域を提供し、ルート領域による使用のための専用のルート物理アドレス空間を割り当てることで、セキュリティを改善し、システム開発を簡素化するのに役立つ。
しかしながら、他の例では、他の領域は、更なる領域、例えば、ルート領域に加えて少なくとも3つの他の領域を含み得る。これらの領域は、上述のセキュア領域及びよりセキュアでない領域を含むことができるが、更なる物理アドレス空間に関連付けられた少なくとも1つの更なる領域も含み得る。よりセキュアでない物理アドレス空間はまた、更なる領域からアクセス可能であり得る一方、更なる物理アドレス空間は、更なる領域及びルート領域からアクセス可能であり得るが、よりセキュアでない領域からはアクセス不可能であり得る。したがって、セキュア領域と同様に、更なる領域は、よりセキュアでない領域よりもセキュアであると見なすことができ、別個の物理アドレス空間に関連付けられたそれぞれのワールドへの、コードの更なる分割を可能とし、それらの相互作用を制限することができる。
いくつかの例では、それぞれの領域は階層をなして、システムがよりセキュアでない領域から、セキュア領域と更なる領域を介してルート領域に上昇するにつれて増加する特権レベルに関連付けられており、更なる領域はセキュア領域よりも高い特権を有するとみなされ、したがってセキュア物理アドレス空間へのアクセスを有し得る。
しかしながら、ソフトウェアプロバイダに、同じハードウェアプラットフォーム上で実行されている他のソフトウェアに関連する他のソフトウェアプロバイダを信頼する必要性を限定する、セキュアなコンピューティング環境が提供されることがますます望まれている。例えば、モバイル支払い及びバンキング、コンピューターゲームにおける不正又は著作権侵害防止メカニズムの実施、オペレーティングシステムプラットフォームのセキュリティ拡張、クラウドシステムにおけるセキュアな仮想マシンホスティング、機密コンピューティングなど、ソフトウェアコードの提供者が(従来は信頼できるとみなされていたかも知れない構成要素である)オペレーティングシステムやハイパーバイザの提供者を信頼することに否定的であり得る、いくつかの分野における用途があり得る。それぞれの物理アドレス空間を有するセキュア領域及びよりセキュアでない領域をサポートする、上記のTrustZone(登録商標)アーキテクチャに基づくシステムなどのシステムにおいては、セキュア領域で動作するセキュアな構成要素がますます普及するにつれて、セキュア領域で通常動作するソフトウェアのセットは、異なる数のソフトウェアプロバイダから提供され得るいくつかのソフトウェアを含むように拡大するに至り、例えば以下の当事者を含む。特定の半導体プロバイダ(silicon provider)によって提供されるシリコン集積回路チップを含む構成要素から(携帯電話などの)処理デバイスを組み立てる相手先ブランド製品製造業者(OEM)、デバイス上で実行されるオペレーティングシステムを提供するオペレーティングシステムベンダー(OSV)、及びクラウド上の仮想マシンをホスティングするサーバ空間を提供するサーバファームを維持するクラウドプラットホームオペレータ(又はクラウドホスト)。したがって、領域を厳密に特権を増加させる順序で実装した場合に、問題があり得る。すなわち、アプリケーションレベルのコードを提供するアプリケーションプロバイダは、セキュアなコンピューティング環境が提供されることを望むが、従来セキュア領域を実行するソフトウェアを提供してきたであろう当事者(OSV、OEM又はクラウドホスト)を信頼したくないと考え得る。しかし、同様に、セキュア領域で動作するコードを提供する当事者は、アプリケーションプロバイダに、より低い特権領域に関連付けられたデータにアクセスを許したより高い特権領域で動作するコードの提供を任せたいとは思わないであろう。それ故、特権を連続的に増加させる厳密な階層の領域は、適切ではない場合があることが認識されている。
したがって、以下のより詳細な実施例では、更なる領域は、セキュア領域に直交的と見なされ得る。更なる領域及びセキュア領域は各々、よりセキュアでない物理アドレス空間にそれぞれアクセスできるが、更なる領域と関連付けられた更なる物理アドレス空間はセキュア領域からアクセス不可能であり、同時に、セキュア領域と関連付けられたセキュア物理アドレス空間は、更なる領域からアクセス不可能である。ルート領域は、セキュア領域と更なる領域の両方と関連付けられた物理アドレス空間に依然としてアクセスすることができる。
したがって、このモデルでは、更なる領域(その例が以下の実施例に記載のレルム領域である)及びセキュア領域は互いに依存性を有しないため、互いに信頼する必要はない。セキュア領域及び更なる領域はルート領域を信頼することのみが必要であり、ルート領域は、他の領域へのエントリを管理しているため本質的に信頼される。
以下の実施例は、更なる領域(レルム領域)の単一のインスタンスを説明するが、更なる領域がセキュア領域に直交する原理を複数の更なる領域を提供するように拡張できることが理解されよう。その結果、セキュア領域及び少なくとも2つの更なる領域の各々は、よりセキュアでない物理アドレス空間にアクセスでき、ルート物理アドレス空間にはアクセスできず、そして互いに関連付けられた物理アドレス空間にはアクセスできない。
よりセキュアでない物理アドレス空間は、処理回路によってサポートされるすべての領域からアクセス可能であり得る。これは、異なる領域で実行されているソフトウェア間のデータ又はプログラムコードの共有を容易にするため、有用である。データ又はコードの特定のアイテムを異なる領域でアクセス可能とする場合、それは任意の領域からアクセスできるように、よりセキュアでない物理アドレス空間に配分されることができる。
仮想アドレスを物理アドレスに変換するとき、アドレス変換回路は、少なくとも1つのページテーブルエントリに基づいて変換を実行し得る。少なくとも現在の領域が、処理回路によってサポートされた少なくとも3つの領域のサブセットのうちの1つである場合、アドレス変換回路は、仮想アドレスの物理アドレスへの変換に使用される少なくとも1つのページテーブルエントリ内で指定された現在の領域及び物理アドレス空間選択情報に基づいて、どの物理アドレス空間が所与のメモリアクセスに対して物理アドレスが変換されるべき物理アドレス空間として使用されるべきかを選択することができる。したがって、ページテーブル構造内で定義された情報は、所与のメモリアクセスが現在の領域から発行されるときに、どの物理アドレス空間がメモリアクセスのために選択されるかに影響を及ぼし得る。いくつかの領域では、ページテーブルエントリで指定された物理アドレス空間選択情報に基づくこの選択は必要ではない場合がある。例えば、現在の領域が上述のよりセキュアでない領域である場合、よりセキュアでない領域はすべての他のアドレス空間からアクセスできないため、アドレス変換に使用される少なくとも1つのページテーブルエントリ内で指定された任意の情報に関係なく、よりセキュアでない物理アドレス空間が選択され得る。
しかしながら、他の領域については、その領域が2つ以上の異なる物理アドレス空間の間で選択されることが可能である。したがって、これらの領域について、ページテーブルエントリ内に、どの物理アドレス空間がそのアクセスに使用されるべきかを示す所与のアドレスのブロックについての情報を定義することが有用であり得て、それにより、所与のソフトウェアが見る仮想アドレス空間の異なる部分を異なる物理アドレス上にマッピングすることができる。
例えば、現在の領域がルート領域である場合、アドレス変換回路は、物理アドレス空間選択情報が、ルート領域からアクセス可能な少なくとも3つの物理アドレス空間の間で選択するための少なくとも2ビットの物理アドレス空間選択情報を含むルート領域ページテーブルエントリに基づいて、仮想アドレスを物理アドレスに変換し得る。例えば、ルート領域、よりセキュアでない領域及びセキュア領域をサポートする実装形態では、ルート領域ページテーブルエントリ内の物理アドレス空間選択情報は、これら3つの物理アドレス空間のうちの任意のものの間で選択することができる。少なくとも1つの更なる領域をも有する実装形態では、物理アドレス空間選択情報は、ルート物理アドレス空間、セキュア物理アドレス空間、よりセキュアでない物理アドレス空間及び少なくとも1つの更なる物理アドレス空間のうちの任意のものの間で選択することができる。
一方、現在の領域がセキュア領域又は更なる領域である場合、物理アドレス空間の選択はより制限され得て、したがってルート領域と比較してより少ないビット数の物理アドレス空間選択情報が必要とされ得る。例えば、セキュア領域では、物理アドレス空間選択情報は、セキュアなアドレス空間とよりセキュアでないアドレス空間との間(ルート物理アドレス空間及び更なる物理アドレス空間がアクセス不可能であり得るため)で選択することができる。現在の領域が更なる領域であるとき、物理アドレス空間選択情報は、セキュア物理アドレス空間及びルート物理アドレス空間がアクセス不可能であり得るため、更なる物理アドレス空間とよりセキュアでない物理アドレス空間との間で選択するために使用され得る。現在の領域がセキュア領域又は更なる領域であるときに使用される物理アドレス空間を選択するために使用されるページテーブルエントリの場合、この選択を行うために使用される物理アドレス空間選択インジケータは、現在の領域がセキュア領域か更なる領域であるかに関係なく、少なくとも1つのページテーブルエントリ内の同じ位置で符号化され得る。これにより、ページテーブルエントリのコード化をより効率的とし、ページテーブルエントリのその部分をセキュア領域と更なる領域との両方に再利用することをハードウェアが解釈することを可能とし、回路面積を減少させる。
メモリシステムは、同じメモリシステムリソースに対応する異なる物理アドレス空間からの別名化物理アドレスが、そのメモリシステムリソースを一意に識別する単一の物理アドレスにマッピングされるポイントである物理的別名化ポイント(PoPA)を含み得る。メモリシステムは、PoPAの上流に設けられる少なくとも1つのPoPA前メモリシステム構成要素を含み得て、これは別名化物理アドレスをそれらが異なるメモリシステムリソースに対応するかのように扱う。
例えば、少なくとも1つのPoPA前メモリシステム構成要素は、キャッシュ又は変換ルックアサイドバッファを含むことができ、これらは、別名化物理アドレスのためのデータ、プログラムコード、又はアドレス変換情報を別々のエントリでキャッシュすることができるため、同じメモリシステムリソースが異なる物理アドレス空間からアクセスされるように要求される場合、アクセスは、別のキャッシュ又はTLBエントリを配分させる。また、PoPA前メモリシステム構成要素が、コヒーレントインターコネクト、スヌープフィルタ、又はそれぞれのマスターデバイスでキャッシュ情報間のコヒーレンシを維持するための他のメカニズムなどのコヒーレンシ制御回路を含むことができる。コヒーレンシ制御回路は、異なる物理アドレス空間内のそれぞれの別名化物理アドレスに別々のコヒーレンシ状態を割り当てることができる。したがって、別名化物理アドレスは、実際に同じ基礎メモリシステムリソースに対応する場合でも、コヒーレンシを維持する目的で別々のアドレスとして扱われる。一見すると、別名化物理アドレスに対して別々にコヒーレンシを追跡することはコヒーレンシの喪失の問題を引き起こす可能性があるように見えるが、実際には、異なる領域で動作するプロセスが特定のメモリシステムリソースへのアクセスを実際に共有することが意図される場合は、よりセキュアでない物理アドレスを使用してそのリソースにアクセスできる(又は他の物理アドレス空間のうちの1つを使用してリソースにアクセスするために、以下に説明する限定的共有特徴を使用する)ため、これは問題ではない。PoPA前メモリシステム構成要素の別の例は、オフチップメモリに保存されたデータを機密性の喪失及び/又は改ざんから保護するために設けられるメモリ保護エンジンであり得る。そのようなメモリ保護エンジンは、例えば、特定のメモリシステムリソースと関連付けられたデータを、リソースがアクセスされた物理アドレス空間に応じた異なる暗号化鍵を用いて別々にデータを暗号化して、別名化物理アドレスを事実上異なるメモリシステムリソースに対応するかのように扱い得る(例えば、暗号化をアドレスに依存させる暗号化スキームを使用することができ、物理アドレス空間識別子はこの目的上、アドレスの一部とみなされ得る)。
PoPA前メモリシステム構成要素の形態に関係なく、このようなPoPAメモリシステム構成要素は、別名化物理アドレスをあたかも異なるメモリシステムリソースに対応するように扱うことが有用であり得る。なぜなら、これにより、異なる物理アドレス空間に発行されたアクセス間のハードウェアにより実施される隔離を提供し、その結果、キャッシュタイミングサイドチャネル又はサイドチャネルがコヒーレンシー制御回路によってトリガされコヒーレンシーの変化を伴うことなどの特徴により、1つの領域に関連付けられた情報が別の領域に漏洩されることがないからである。
いくつかの実装態様では、異なる物理アドレス空間内の別名化物理アドレスが、それぞれの異なる物理アドレス空間について異なる数値物理アドレス値を使用して表されることが可能であり得る。この手法は、PoPAにおいて、どの異なる物理アドレス値が同じメモリシステムリソースに対応するかを判定するためにマッピングテーブルを必要とし得る。しかしながら、マッピングテーブルを維持するこのオーバーヘッドは不要と見なされてよく、いくつかの実装では、別名化物理アドレスが、異なる物理アドレス空間の各々において同じ数値物理アドレス値を使用して表される物理アドレスを含めば、より単純であり得る。この手法が取られる場合、物理的別名化ポイントで、単に、どの物理アドレス空間がメモリアクセスを使用してアクセスされるかを識別する物理アドレス空間識別子を廃棄し、次いで、残りの物理アドレスビットを非別名化された物理アドレスとして下流に提供するだけで十分であり得る。
したがって、PoPA前メモリシステム構成要素に加えて、メモリシステムはまた、複数の別名化物理アドレスを非別名化して、少なくとも1つの下流メモリシステム構成要素に提供される非別名化された物理アドレスを取得するように構成されたPoPAメモリシステム構成要素を含み得る。PoPAメモリシステム構成要素は、上述のように、特定のアドレス空間内で別名化アドレスに対応する非別名化アドレスを見つけるために、マッピングテーブルにアクセスするデバイスであり得る。しかしながら、PoPA構成要素は、単に、所与のメモリアクセスと関連付けられた物理アドレスタグが廃棄されるメモリシステム内の場所であってもよく、その結果、下流に提供される物理アドレスは、それがどの物理アドレス空間から提供されたかに関係なく、対応するメモリシステムリソースを一意に識別する。あるいは、いくつかの場合では、PoPAメモリシステム構成要素は、物理アドレス空間タグを少なくとも1つの下流メモリシステム構成要素に(例えば、以下で更に論じるようにコンプリータ側フィルタリングを可能にする目的で)依然として提供してもよい。しかし、PoPAはメモリシステム内のポイントをマークして、それより下流のメモリシステム構成要素が別名化物理アドレスをもはや異なるリソースとして扱わず、別名化物理アドレスの各々を考慮して同じメモリシステムリソースをマッピングし得る。例えば、PoPAの下流にあるメモリコントローラ又はハードウェアメモリ記憶デバイスが、所与のメモリアクセス要求の物理アドレスタグ及び物理アドレスを受信した場合、その物理アドレスが以前に見られたトランザクションと同じ物理アドレスに対応する場合には、たとえそれぞれのトランザクションが異なる物理アドレス空間タグを指定していたとしても、(同じアドレスへのアクセスをマージさせるなど)同じ物理アドレスにアクセスするそれぞれのトランザクションに対して実行される任意のハザードチェック又はパフォーマンス改善が適用され得る。対照的に、PoPAの上流のメモリシステム構成要素については、同じ物理アドレスにアクセスするトランザクションのために取られたそのようなハザードチェック又はパフォーマンス改善ステップは、これらのトランザクションが異なる物理アドレス空間内の同じ物理アドレスを指定する場合には発動されなくてもよい。
上述のように、少なくとも1つのPoPA前メモリシステム構成要素は、少なくとも1つのPoPA前キャッシュを含み得る。これは、データキャッシュ、命令キャッシュ、又は統一レベル2、レベル3、又はシステムキャッシュであり得る。
処理回路は、(仮想アドレス又は物理アドレスであり得る)ターゲットアドレスを指定するPoPAまでのキャッシュ無効化命令をサポートすることができる。PoPAまでのキャッシュ無効化命令に応答して、処理回路は、少なくとも1つのPoPA前キャッシュが、ターゲットアドレスに対応するターゲット物理アドレス値に関連付けられた1つ以上のエントリを無効化することを要求するために少なくとも1つの無効化コマンドを発行し得る。対照的に、少なくとも1つの無効化コマンドが発行されたとき、PoPAの下流に位置する少なくとも1つのPoPA後キャッシュは、ターゲット物理アドレス値に関連付けられた1つ以上のエントリを保持することを許可され得る。少なくとも1つのPoPA前キャッシュについて、キャッシュは、どの物理アドレス空間がそれらのエントリと関連付けられているかに関係なく、少なくとも1つの無効化コマンドによって指定されたターゲット物理アドレス値に関連付けられた1つ以上のエントリを無効化し得る。したがって、異なる物理アドレス空間内に同じアドレス値を有する物理アドレスが、PoPA前キャッシュによって異なる物理アドレスを表すかのように扱われていたとしても、PoPAまでのキャッシュ無効化命令によってトリガされた無効化を処理する目的上、物理アドレス空間識別子は無視することができる。
したがって、処理回路に、ターゲット仮想アドレスに対応する特定の物理アドレスに関連付けられた任意のキャッシュエントリが物理的別名化ポイントまでのいずれのキャッシュにおいても無効とされることを要求させることを可能にする、キャッシュ無効化命令の形式を定義することができる。この形式の無効化命令は、メモリシステムの他の点、例えば、コヒーレンシポイント(すべてのオブザーバ(例えば、プロセッサコア、ダイレクトメモリアクセスエンジンなど)が所与のアドレスと関連付けられたデータの同じコピーを見ることが保証されているポイント)までのキャッシュに影響を及ぼすキャッシュエントリの無効化を要求し得る他のタイプの無効化命令とは異なり得る。物理的別名化ポイントまでの無効化を要求する専用の命令の形式を提供することは、特にそれぞれの領域に対するアドレス配分の変更を管理することができるルート領域コードの場合に、有用であり得る。例えば、どの物理アドレスが所与の物理アドレス空間内でアクセス可能であるかを定義するグラニュール保護情報を更新するとき、又は物理アドレスの特定のブロックを異なる物理アドレス空間に再配分するとき、ルート領域のコードは、アクセス可能性を古くなったグラニュール保護情報に依存する、キャッシュ内に存在する任意のデータ、コード、又は他の情報が無効化されて、その後のメモリアクセスが新しいグラニュール保護情報に基づいて正しく制御されることを確実とするために、PoPAまでのキャッシュ無効化命令を用いることができる。いくつかの例では、キャッシュエントリを無効化することに加えて、少なくとも1つのPoPA前キャッシュはまた、そのキャッシュエントリからデータを削除して、無効化されるエントリに関連付けられたデータのいかなるダーティバージョンを、PoPAを超えるメモリシステム内の場所に書き戻すことができる。場合によっては、PoPAまでのキャッシュ無効化命令の異なるバージョンがサポートされ、削除が必要か否かを示すことができる。
選択された物理アドレス空間と選択された物理アドレス空間内のターゲット物理アドレスとを指定するメモリアクセス要求に応答するメモリ暗号化回路が、ターゲット物理アドレスが保護されたアドレス区域内にあるとき、選択された物理アドレス空間に応じて選択されたいくつかの暗号化鍵のうちの1つに基づいて、保護された区域に関連付けられたデータを暗号化又は復号化するために、提供され得る。いくつかの例では、保護されたアドレス区域は物理アドレス空間全体であり得るが、他の例は、暗号化/復号化を、特定のサブ区域にのみ、保護されたアドレス区域として適用してもよい。他の領域と関連付けられた物理アドレス空間とは別の専用のルート物理アドレス空間を割り当てることにより、メモリ暗号化回路が、セキュリティを改善するためにルート領域に異なる暗号化鍵を選択することを、他の領域と比較して単純にする。同様に、すべての他の領域に対して異なる暗号化キーを選択することにより、特定の領域に関連付けられたコード又はデータ資産のより強い隔離を可能にする。
1つの特定の例では、装置は、処理回路と同じ集積回路上に少なくとも1つのオンチップメモリを有し得て、ルート物理アドレス空間内のすべての有効な物理アドレスは、オフチップメモリとは別個であるように、少なくとも1つのオンチップメモリにマッピングされ得る。これは、ルート領域のセキュリティを改善するのに役立つ。他の領域からの情報もまた、オンチップメモリに保存することができることが理解されよう。ルート物理アドレス空間を別に提供することはメモリの配分を単純化する。ルート領域がセキュア物理アドレス空間をセキュア領域と共有する例では、セキュア領域に関連付けられたデータが多すぎて、そのすべてをオンチップメモリに保持することが困難であり得、どの特定のデータがルート領域に関連付けられているかの判定が困難であり得たのに対し、ルート領域のデータ(又はコード)が別の物理アドレス空間識別子でフラグ付けされているときに、そのデータ(又はコード)を分割して取り出すことははるかに簡単であるからである。
それでも、他の例では、ルート物理アドレス空間内のいくつかのアドレスがオフチップメモリにマッピングされることがあり得る。オフチップに記憶されるルート領域データを保護するために、メモリ暗号化、完全性、及び鮮度のメカニズムが使用され得る。
上述の技術は、上述のような機能を実装するためのハードウェア回路ロジックを有するハードウェア装置に実装することができる。したがって、処理回路及びアドレス変換回路は、ハードウェア回路ロジックを含み得る。しかしながら、他の例では、ターゲットコードを実行する命令実行環境を提供するためにホストデータ処理装置を制御するコンピュータプログラムには、上述の処理回路及びアドレス変換回路と同等の機能をソフトウェアで実行する、処理プログラムロジック及びアドレス変換プログラムロジックが提供され得る。これは、例えば、特定の命令セットアーキテクチャに対して書き込まれたターゲットコードが、その命令セットアーキテクチャをサポートし得ないホストコンピュータ上で実行されることを可能にするために有用であり得る。したがって、ホストコンピュータによって提供されない命令セットアーキテクチャによって見込まれる機能を、代わりに、シミュレーションソフトウェアが、ターゲットコードが命令セットアーキテクチャを実際にサポートするハードウェアデバイス上で実行された場合に見込まれるように、ターゲットコードのための同等の命令実行環境を提供することにより、エミュレートされ得る。したがって、シミュレーションを提供するコンピュータプログラムは、前述の少なくとも3つの領域のうちの1つにおける処理をシミュレートする処理プログラムロジックと、仮想アドレスを、少なくとも現在の領域に基づいて選択されたいくつかのシミュレートされた物理アドレス空間のうちの1つの中の物理アドレスに変換する、アドレス変換プログラムロジックと、を含むことができる。ハードウェアデバイスにおけるように、少なくとも3つの領域は、他の領域間の切り替えを管理するためのルート領域を含み得て、ルート領域は、それに関連付けられたルートシミュレートされた物理アドレス空間を、他の領域と関連付けられたシミュレートされた物理アドレス空間とは別に有し得る。アーキテクチャのシミュレーションが提供される手法の場合、アドレス変換プログラムロジックによって選択されたそれぞれの物理アドレス空間は、それらが実際にはホストコンピュータのハードウェア構成要素によって識別された物理アドレス空間に対応しないが、ホストの仮想アドレス空間内のアドレスにマッピングされるため、シミュレートされた物理アドレス空間である。そのようなシミュレーションを提供することは様々な目的のために有用であり得て、例えば、1つの命令セットアーキテクチャのために書かれた古いコードを、異なる命令セットアーキテクチャをサポートする異なるプラットフォーム上で実行可能とすること、又は新しいバージョンの命令セットアーキテクチャをサポートするハードウェアデバイスがまだ利用可能ではない場合に、そのバージョンの命令セットアーキテクチャのために実行される新たなソフトウェアのソフトウェア開発を支援すること(これにより、アーキテクチャの新しいバージョンのためのソフトウェアの開発を、アーキテクチャの新しいバージョンをサポートするハードウェアデバイスの開発と並行して開始することを可能とする)が挙げられる。
グラニュール保護ルックアップ
メモリアクセス要求の仮想アドレスを2つ以上の別個の物理アドレス空間のうちの1つにある物理アドレスにマッピングすることができるシステムでは、グラニュール保護情報を使用して、どの物理アドレスが特定の物理アドレス空間内でアクセス可能であるかを制限することができる。これは、オンチップ又はオフチップのいずれかのハードウェアに実装された特定の物理メモリの場所へのアクセスを、特定の物理アドレス空間、又は所望であれば物理アドレス空間の特定のサブセットに制限し得ることを確実にするために、有用であり得る。
そのような制限を管理するための1つの手法において、所与の物理アドレスが特定の物理アドレス空間からアクセスできるかに拘わらない実施は、メモリアクセス要求を処理するためのコンプリータデバイスにおいて又はその近くに提供されるコンプリータ側フィルタリング回路を使用して実装され得る。例えば、コンプリータ側フィルタリング回路は、メモリコントローラ又は周辺制御装置と関連付けることができる。そのような手法では、キャッシュ、又はトランザクションをリクエスタデバイスからコンプリータデバイスにルーティングするためのインターコネクトへのメモリアクセス要求の発行は、所与の物理アドレス空間内でどの物理アドレスがアクセス可能であるかを定義するための情報の任意のルックアップに依存しない場合がある。
対照的に、以下に記載する実施例では、グラニュール保護ルックアップが、アクセスされる物理アドレスのターゲットグラニュールと関連付けられた少なくとも1つの許可された物理アドレス空間を示すグラニュール保護情報のルックアップに基づいて、メモリアクセス要求がキャッシュ又はインターコネクトに渡されることが可能かどうかを確認するリクエスタ側フィルタリング回路によって実行される。グラニュール保護情報のそれぞれのアイテムが定義される物理アドレス空間のグラニュールは、アドレス変換回路に使用されるページテーブル構造に使用されるページのサイズと同じであっても異なっていてもよい特定のサイズのものであってもよい。場合によっては、グラニュールは、アドレス変換回路のアドレス変換マッピングを定義するページよりも大きいサイズであり得る。あるいは、グラニュール保護情報は、ページテーブル構造内のアドレス変換情報と同じページレベルでの詳細(granularity)で定義され得る。ページレベルでの詳細でグラニュール保護情報を定義することは、これが、メモリ記憶ハードウェアのどの区域が、特定の物理アドレス空間から、ひいては処理回路の特定の動作領域からアクセス可能であるかについて、よりきめ細かい制御を可能にするために便利であり得る。
したがって、装置は、リクエスタ回路によって発行されたメモリアクセス要求によって指定されたターゲット仮想アドレスをターゲット物理アドレスに変換するためのアドレス変換回路と、ターゲット物理アドレスとメモリアクセス要求に関連付けられた選択された物理アドレス空間とに基づいてグラニュール保護ルックアップを実行するリクエスタ側回路とを有することができ、それによって、メモリアクセス要求をキャッシュに渡す又はコンプリータデバイスと通信するためにインターコネクトに渡してメモリアクセス要求を処理することを許容するかどうかを判定する。選択された物理アドレス空間は、複数の物理アドレス空間のうちの1つであり得る。グラニュール保護ルックアップにおいて、リクエスタ側フィルタリング回路は、
ターゲット物理アドレスを含む物理アドレスのターゲットグラニュールに対応するグラニュール保護情報であって、ターゲットグラニュールに関連付けられた少なくとも1つの許可された物理アドレス空間を示すグラニュール保護情報を取得し、
選択された物理アドレス空間が少なくとも1つの許可された物理アドレス空間のうちの1つではないことをグラニュール保護情報が示すときに、メモリアクセス要求をブロックするように構成され得る。
インターコネクトのコンプリータ側ではなくリクエスタ側でグラニュール保護ルックアップを実行する利点は、どの物理アドレスが所与の物理アドレス空間からアクセス可能かについて、コンプリータ側で実用的であるよりも、よりきめ細かい制御を可能にできることである。これは、コンプリータ側は通常、メモリシステム全体にアクセスする能力が比較的制限され得るためである。例えば、所与のメモリユニットのメモリコントローラは、そのメモリユニット内の場所にのみアクセス可能とされ得て、アドレス空間の他の区域にアクセスすることができない場合がある。よりきめ細かい制御を提供することは、メモリシステムに記憶され得るグラニュール保護情報のより複雑なテーブルに依存し得て、メモリアクセス要求をメモリシステムのより広いサブセットに発行する一層の柔軟性があるリクエスタ側からのそのようなテーブルにアクセスすることがより実用的であり得る。
また、リクエスタ側でグラニュール保護ルックアップを実行することは、実行中にグラニュール保護情報を動的に更新する能力を有効にするのに役立ち得、これは、起動時に定義される、比較的少量の静的に定義されたデータにアクセスすることに制限され得るコンプリータ側フィルタリング回路には実用的ではない可能性がある。
リクエスタ側フィルタリング回路の別の利点は、これにより、インターコネクトが、同一グラニュール内の異なるアドレスを、異なるコンプリータ側デバイス(例えば、異なるDRAM(動的ランダムアクセスメモリ)ユニット)と通信する異なるコンプリータポートに配分することが可能となり、パフォーマンス上効率的であるが、グラニュール保護ルックアップをコンプリータ側で実行してメモリアクセスが可能かどうかを検証できるようにグラニュール全体が同じコンプリータユニットに向けられる必要があるとすれば非実用的であり得る。
したがって、所与のメモリアクセス要求に対して選択された特定の物理アドレス空間から特定の物理アドレスにアクセスできるかどうかを見分けるためのグラニュール保護ルックアップを、コンプリータ側でなくリクエスタ側で実行する多くの利点が存在し得る。
グラニュール保護情報は、様々な方法で表すことができる。一例では、グラニュール保護は、単一の連続アドレスブロックに記憶された単一の線形にインデックス付けされたテーブルで定義され得て、ブロック内でアクセスされる特定のエントリがターゲット物理アドレスに基づいて選択される。しかしながら、実際には、グラニュール保護情報は、物理アドレス空間全体に対して定義されない場合があり、したがって、アドレス変換に使用されるマルチレベルページテーブルと同様に、グラニュール保護情報を記憶するためのマルチレベルテーブル構造を使用することがより効率的であり得る。そのようなマルチレベル構造では、ターゲット物理アドレスの一部分を使用して、更なるレベルのグラニュール保護テーブルを記憶するメモリ内の場所を識別するポインタを提供し得る、レベル1のグラニュール保護テーブルエントリを選択することができる。次いで、ターゲット物理アドレスの別の部分により、その更なるグラニュール保護テーブルのどのエントリを取得すべきかを選択し得る。テーブルの第1のレベルを超える1つ以上のレベルの間を順次繰り返した後、最終的に、ターゲット物理アドレスと関連付けられたグラニュール保護情報を提供するグラニュール保護テーブルエントリを取得し得る。
グラニュール保護情報を記憶するテーブルについて選択された特定の構造に関係なく、グラニュール保護情報は、物理アドレス空間のうちのどれが少なくとも許可された1つの物理アドレスであるかということを、いくつかの方法で表すことができる。1つの手法は、対応する物理アドレス空間のうちの1つがターゲット物理アドレスを含む物理アドレスのグラニュールにアクセスできるかどうかを各々示す一連のフィールドを提供することであり得る。例えば、ビットマップがグラニュール保護情報内で定義されてもよく、ビットマップの各ビットは、対応する物理アドレス空間がそのグラニュールに対して許可された物理アドレス空間であるか、それとも許可されていない物理アドレス空間であるかを示す。
しかしながら、実際には、ほとんどの使用事例において、かなりの数の物理アドレス空間が所与の物理アドレスにアクセスすることが許可されると予想される見込みは比較的低い可能性がある。物理アドレス空間へのアクセスを制御する前のセクションで論じたように、よりセキュアでない物理アドレス空間は、すべての領域における選択のために利用可能であり、したがってデータ又はコードがいくつかの領域の間で共有される場合に使用できる。そのため、特定の物理アドレスが利用可能な物理アドレス空間のすべて又は多くの部分にマッピングされる必要はない場合がある。
したがって、比較的効率的な手法は、グラニュール保護情報が、物理アドレスのターゲットグラニュールに割り当てられた、割り当てられた物理アドレス空間を指定することができ、少なくとも1つの許可された物理アドレス空間は、少なくとも、その特定のターゲットグラニュールのためにグラニュール保護情報によって指し示された、割り当てられた物理アドレス空間を含み得ることである。いくつかの実装では、グラニュール保護情報は、割り当てられた物理アドレス空間として単一の物理アドレス空間を指定することができる。したがって、いくつかの場合では、グラニュール保護情報は、物理アドレスのそのターゲットグラニュールにアクセスすることが許可されている割り当てられた物理アドレス空間として機能する1つの特定の物理アドレス空間の識別子を含み得る。
いくつかの実装では、物理アドレスのターゲットグラニュールにアクセスすることが許可されている唯一の物理アドレス空間は、割り当てられた物理アドレス空間であり得て、物理アドレスのターゲットグラニュールは、任意の他の物理アドレス空間からアクセスされることが許可されない場合がある。この手法は、セキュリティを維持するために効率的であり得る。異なる領域から特定の物理アドレス空間へのアクセスは、代わりに、アドレス変換機能を介して制御され得て、その場合、アドレス変換回路は、所与のメモリアクセスのためにどの特定の物理アドレス空間が使用されるべきかを選択することができ得るため、物理アドレスのグラニュールを複数の物理アドレス空間間で共有する必要がない場合がある。割り当てられた物理アドレス空間のみが物理アドレスのターゲットグラニュールにアクセスすることが許可されている場合、物理アドレスのそのグラニュールが他の物理アドレス空間からアクセスされることを可能にするためには、どの物理アドレス空間が割り当てられた物理アドレス空間であるかを更新する必要があり得る。例えば、これは、前述のルート領域が、所与の物理アドレスのグラニュールのために割り当てられた物理アドレス空間を切り替えるための何らかの処理を実行することを必要とし得る。この処理は、特定のパフォーマンスコストを有する可能性がある。それには、例えば、(セキュリティのために)物理アドレスの所与のグラニュール内の各場所をNULLデータ又はそれらの物理的にアドレスされた場所の以前のコンテンツと無関係の他のデータで上書きすることを含み得る。それによって、新しく割り当てられた物理アドレス空間にアクセスするプロセスが、物理アドレスの所与のグラニュールに関連付けられた場所に以前に記憶されていたデータから何も学習することができないことを確実にすることができる。
それゆえに、別の手法は、割り当てられた物理アドレス空間を識別するだけでなく、グラニュール保護情報は、割り当てられた物理アドレス空間以外の少なくとも1つの他の物理アドレス空間が少なくとも1つの許可された物理アドレス空間のうちの1つであるかどうかを示す共有属性情報をも含むことができることであり得る。したがって、共有属性情報が、少なくとも1つの他の物理アドレス空間が物理アドレスの対応するグラニュールにアクセス許可されていることを示す場合、物理アドレスのそのグラニュールは、複数の物理アドレス空間からアクセスすることができる。これは、1つの物理アドレス空間に関連付けられた領域内のコードが、物理アドレスの割り当てられたグラニュールのうちの1つが異なる物理アドレス空間に関連付けられた領域から見えることを一時的に可能にするために有用であり得る。これは、どの物理アドレス空間が割り当てられた物理アドレス空間であるかを変更するために、潜在的にコストの大きい動作を負う必要がないため、データ又はコードの一時的な共有をより効率化することができる。共有属性情報は、割り当てられた物理アドレス空間に関連付けられた領域内で実行されているコードによって直接設定することができる、又は割り当てられた物理アドレス空間に関連付けられた領域内で実行されるコードからの要求に応じてルート領域によって設定することができる。
共有属性情報がサポートされる場合、共有属性情報を使用して、1つの物理アドレス空間に割り当てられたアドレスが異なるアドレス空間を指定する要求によってアクセスできるかどうかを確認するだけでなく、リクエスタ側フィルタリング回路もまた、共有属性情報に基づいて、下流のキャッシュ又はインターコネクトに発せられたメモリアクセス要求のために選択された物理アドレス空間を変形し得る。したがって、グラニュール保護ルックアップが、選択された物理アドレス空間が共有属性情報によって示される前述の少なくとも1つの許可された物理アドレス空間のうちの1つであると割り当てられた物理アドレス空間以外の物理アドレス空間であると判定すると、リクエスタ側フィルタリング回路は、選択された物理アドレス空間の代わりに、割り当てられた物理アドレス空間を指定してキャッシュ又はインターコネクトにメモリアクセス要求が渡されることを可能にすることができる。これは、下流メモリにアクセスする目的上、PoPA前の構成要素は、メモリアクセスをあたかもそれが割り当てられた物理アドレス空間を初めから指定して発行されたかのように取扱い、その結果、その割り当てられた物理アドレス空間がタグ付けされたキャッシュエントリ又はスヌープフィルタエントリは、メモリアクセス要求に対してアクセスされ得ることを意味する。
いくつかの実装では、リクエスタ側フィルタリング回路は、メモリアクセス要求がグラニュール保護情報に対してチェックされるたびに、メモリからグラニュール保護ルックアップに使用されるグラニュール保護情報を取得してもよい。この手法は、リクエスタ側で必要とし得るハードウェアコストがより低くなり得る。しかしながら、メモリからグラニュール保護情報を得ることは、比較的時間がかかり得る。
したがって、パフォーマンスを改善するために、リクエスタ側フィルタリング回路は、グラニュール保護情報をキャッシュし得る少なくとも1つのルックアップキャッシュへのアクセスを有してもよく、その結果、グラニュール保護ルックアップを少なくとも1つのルックアップキャッシュ内で実行することができ、必要なグラニュール情報が少なくとも1つのルックアップキャッシュに既に記憶されている場合、それをメモリからフェッチする必要はない。少なくとも1つのルックアップキャッシュは、いくつかの場合では、仮想アドレスと物理アドレスとの間のマッピングを提供するキャッシュページテーブルデータのアドレス変換回路によって使用される変換ルックアサイドバッファ(TLB)とは別のキャッシュであり得る。しかしながら、他の例では、少なくとも1つのルックアップキャッシュは、ページテーブルデータのキャッシュをグラニュール保護情報のキャッシュと組み合わせることができる。したがって、いくつかの場合では、少なくとも1つのルックアップキャッシュは、ターゲット仮想アドレスをターゲット物理アドレスにマッピングするために、グラニュール保護情報とアドレス変換回路によって使用される少なくとも1つのページテーブルエントリとの両方に応じた情報を指定する、少なくとも1つの変換とグラニュール保護が組み合わされたエントリを記憶することができる。TLBとグラニュール保護キャッシュとを別々の構造として実装するか、それとも単一の組み合わされた構造として実装するかは、実装上の選択であり、いずれも使用することができる。
どの手法が少なくとも1つのルックアップキャッシュに使用されるかに関係なく、少なくとも1つのルックアップキャッシュは、少なくとも1つのルックアップキャッシュ無効化コマンドに応答し得る。ルックアップキャッシュ無効化コマンドは、無効化ターゲット物理アドレスを指定して、無効化ターゲット物理アドレスを含む物理アドレスのグラニュールと関連付けられたグラニュール保護情報に依存する情報を記憶するルックアップキャッシュエントリを無効化することができる。TLBを有する従来の処理システムでは、TLBは、通常、仮想アドレス、又は(2つのステージのアドレス変換をサポートするシステムでは、中間アドレス)を指定する無効化コマンドをサポートするが、物理アドレスを使用してどのエントリが無効化されるかを識別できるようにすることは通常TLBに必要ではない。しかしながら、少なくとも1つのルックアップキャッシュがグラニュール保護情報をキャッシュするために提供されると、物理アドレスの所与のグラニュールのグラニュール保護情報が変化する場合、その情報に依存する任意のエントリを無効化できることは有用であり得る。したがって、コマンドは、グラニュール保護情報に依存する情報を含むエントリが無効化される特定の物理アドレスを識別し得る。
グラニュール保護情報キャッシュがTLBとは別に実装される場合、TLBは、物理アドレスによってエントリを検索する能力が不要であり得る。この場合、グラニュール保護情報のキャッシュは、物理アドレスを指定するキャッシュ無効化コマンドに応答することができるが、コマンドはTLBによって無視され得る。
しかしながら、少なくとも1つのルックアップキャッシュが変換/グラニュール保護の組み合わせキャッシュを含み、そのエントリが仮想アドレス又は中間アドレスに基づいて検索され、仮想/中間アドレスに関連付けられたページテーブル情報と、対応する物理アドレスに関連付けられたグラニュール保護情報との両方を返す場合、物理アドレスに基づいてエントリを検索するための更なるスキームを提供することが有用であり得る。それによって、無効化ターゲット物理アドレスを指定する少なくとも1つのルックアップキャッシュ無効化コマンドが処理され得る。物理アドレスによるそのような検索は、組み合わされたキャッシュの通常のルックアップでは不要であり得る。それは、エントリが組み合わされていれば、仮想アドレスによる検索又は中間アドレスによる検索が、アドレス変換のルックアップとグラニュール保護のルックアップの両方を実行するための組み合わされた情報のすべてにアクセスする上で十分であり得るためである。しかしながら、キャッシュ無効化コマンドは、指定された物理アドレスに対するグラニュール保護情報に依存するため、組み合わされたキャッシュは物理アドレスに基づいて検索されることができ、それにより無効化される必要がある任意のエントリを識別し得る。
メモリシステムは、前の実施例について上述したように、PoPAメモリシステム構成要素、少なくとも1つのPoPA前メモリシステム構成要素、及び少なくとも1つのPoPA後メモリシステム構成要素を有し得る。したがって、異なる物理アドレス空間内の別名化物理アドレスは、前述と同じ方法で、メモリアクセス要求が物理的別名化ポイントを超えるときに、非別名化された物理アドレスを使用して識別された同じメモリシステムリソースに対応し得る。PoPAの前は、少なくとも1つのPoPA前メモリシステム構成要素は、異なる物理アドレス空間からの別名化物理アドレスを、あたかも異なるメモリシステムリソースに対応するかのように取扱い、これによりセキュリティを改善することができる。この場合も、理論的には、異なる物理アドレス空間内の物理アドレスを異なる数値アドレス値を使用して識別することが可能であり得るが、これは、実装するには比較的複雑であり得、別名化物理アドレスが異なる物理アドレス空間内の同じ物理アドレス値を使用して表される場合に、より単純であり得る。
少なくとも1つのPoPA前メモリシステム構成要素が少なくとも1つのPoPA前キャッシュを含む場合、処理回路は、ターゲット仮想アドレスを指定するPoPAまでのキャッシュ無効化命令に応答して、物理的別名化ポイントの上流にある任意のPoPA前キャッシュに対して、(上述のように)任意のPoPA後キャッシュがターゲット物理アドレスを有するデータを保持することを可能にしながら、ターゲット物理アドレスによって無効化をトリガすることができる。
メモリアクセスと関連付けられた選択された物理アドレス空間は、種々の方法で選択することができる。いくつかの例では、選択された物理アドレス空間は、メモリアクセス要求が発行されたリクエスタ回路の動作の現在の領域に少なくとも基づいて(アドレス変換回路又はリクエスタ側フィルタリング回路によって)選択され得る。選択された物理アドレス空間の選択はまた、ターゲット仮想アドレスのターゲット物理アドレスへの変換に使用される少なくとも1つのページテーブルエントリで指定された物理アドレス空間選択情報に依存し得る。どの物理アドレス空間が選択された物理アドレス空間であるかの選択は、前の実施例について前述したように実行され得る。
所与のシステム内の選択に利用可能な領域及び物理アドレス空間は前述の通りであってもよく、上述したように、それぞれに対応する物理アドレス空間を有する、よりセキュアでない領域、セキュア領域、ルート領域、及び更なる領域を含み得る。あるいは、領域/物理アドレス空間は、これらの領域のサブセットを含み得る。したがって、任意の前述の領域に関連する任意の特徴が、リクエスタ側フィルタリング回路を有するシステムに含まれ得る。
前述のようにルート領域が対応するルート物理アドレス空間を有する実装形態では、現在の領域がルート領域であるとき、リクエスタ側フィルタリング回路は、グラニュール保護ルックアップをバイパスすることができる。ルート領域は物理アドレスのすべての区域にアクセスするために信頼され得るため、現在の領域がルート領域である場合、グラニュール保護ルックアップは不要であり得て、そのため、ルート領域にあるときにグラニュール保護ルックアップをスキップすることによって、電力を節約することができる。
グラニュール保護情報は、ルート領域で実行されるソフトウェアによって修正可能であり得る。したがって、グラニュール保護情報は、実行中に動的に更新可能であり得る。これは、論じられたレルム使用事例のいくつかにとって利点であり得て、セキュア実行環境を提供するレルムが実行中に動的に作成され、配分されたメモリの対応する区域がレルムのために予約され得る。コンプリータ側フィルタリングのみを使用すると、そのような手法は、多くの場合、非実用的であり得る。いくつかの実装では、ルート領域は、グラニュール保護情報を修正することが許可された唯一の領域であってもよく、その結果、他の領域が、実装されるグラニュール保護情報への変更を必要とする場合、他の領域はルート領域がグラニュール保護情報を修正するように要求することができ、ルート領域は次いで、別の領域からなされた要求を許可するかどうかをチェックし得る。
メモリアクセス要求がキャッシュ又はインターコネクトに渡される前に、リクエスタ側でグラニュール保護ルックアップを実行するためのリクエスタ側フィルタリング回路を提供することが有益であり得るが、(どの物理アドレスが所与の物理アドレス空間からアクセスされ得るかを定義する)保護情報が代わりにインターコネクトのコンプリータ側でチェックされることが好ましい場合があるという他のシナリオも存在し得る。例えば、アドレス空間のいくつかの部分では、メモリハードウェアのきめ細かいページレベル詳細を、異なる物理アドレス空間からアクセス可能な物理アドレスの区域へ分割して提供することが望ましい場合がある一方、メモリシステムの他の部分については、連続アドレスの大きなブロックを単一の物理アドレス空間に配分することが好ましい可能性があり得て、その場合、メモリに記憶された(潜在的にマルチレベルである)グラニュール保護構造にアクセスするオーバーヘッドは正当化されない可能性がある。メモリユニット全体(例えば、特定のDRAMモジュール)が単一の物理アドレス空間に配分される場合、そのメモリユニットへのアクセスの制限の実施をコンプリータ側でのチェックを介して処理することがより単純であり得る。
したがって、いくつかの実装形態では、リクエスタ側フィルタリング回路を提供するだけでなく、インターコネクトから受信する、ターゲット物理アドレス及び選択された物理アドレス空間を指定したメモリアクセス要求に応答するコンプリータ側フィルタリング回路も存在し得る。コンプリータ側フィルタリング回路は、ターゲット物理アドレス及び選択された物理アドレス空間に基づいてコンプリータ側保護情報のコンプリータ側保護ルックアップを実行して、メモリアクセス要求がコンプリータデバイスによって処理されることが許可されているかどうかを判定する。メモリの一部分がリクエスタ側フィルタリングを介して保護され、他の部分がコンプリータ側フィルタリングにより保護されることを可能にするハイブリッドな手法を提供することにより、リクエスタ側フィルタリング又はコンプリータ側フィルタリングのいずれかのみを介して達成できるよりも良好なパフォーマンスとメモリの使用量配分の柔軟性との間のバランスを可能にする。
したがって、いくつかの実装では、グラニュール保護情報は、少なくとも1つの許可された物理アドレス空間がコンプリータ側フィルタリング回路によって解決されるべきであることを示すパススルーインジケータを指定することができる。
したがって、リクエスタ側フィルタリング回路は、グラニュール保護情報がパススルーインジケータを指定する場合に、選択された物理アドレス空間が物理アドレスのターゲットグラニュールの少なくとも1つの許可された物理アドレス空間のうちの1つであるかどうかの何らかのチェックとは無関係に、メモリアクセス要求をキャッシュ又はインターコネクトに渡すか否かを判定することができる。一方、ターゲットグラニュールについてアクセスされたグラニュール保護情報がパススルーインジケータを指定しない場合、メモリアクセス要求をキャッシュ又はインターコネクトに渡すことができるかどうかの判定は、この場合には、メモリアクセス要求がキャッシュ又はインターコネクトに進行することが許可された後、それに続くコンプリータ側フィルタリングが行われない可能性があるため、選択された物理アドレス空間が少なくとも1つの許可された物理アドレス空間のうちの1つであるかどうかのチェックに依存し得る。したがって、パススルーインジケータは、リクエスタ側でチェックが実行されるべきである物理アドレスのグラニュールと、コンプリータ側でこれらのチェックが実行されるべきであるグラニュールとの間のアドレス空間の分割を制御可能とすることができ、システム設計者に追加的な柔軟性を提供する。
コンプリータ側フィルタリング回路によって使用されるコンプリータ側保護情報は、リクエスタ側フィルタリング回路によって使用されるグラニュール保護情報と同じフォーマットを有する必要はない。例えば、コンプリータ側フィルタリング回路は、リクエスタ側フィルタリング回路によるグラニュール保護ルックアップに使用されるグラニュール保護情報よりも粗い詳細で定義され得る。グラニュール保護情報は、テーブルの各レベルが、2のべき乗に対応する所与のアドレス数のメモリのブロックにそれぞれ対応するエントリを提供するマルチレベルテーブル構造で定義され得る。そのため、所与のターゲット物理アドレスをチェックするのに必要なテーブルの所与のレベルのエントリは、単にターゲット物理アドレスからの特定のビットの一部分の複数を、テーブルのそのレベルに関連付けられたベースアドレスに追加することによってインデックス付けされ得て、それが正しいエントリかどうかを判定するために、アクセスされたエントリのコンテンツをターゲット物理アドレスと比較する必要性を回避することができる。対照的に、コンプリータ側保護情報では、より少ない数のエントリが定義されてもよく、各エントリは、2のべき乗以外のアドレス数に対応し得るメモリの区域の開始アドレス及び終了アドレス(又は開始アドレス及びサイズ)を指定する。これは、コンプリータ側保護情報における比較的粗い粒度のブロックを定義するのにより好適であり得るが、この手法は、ターゲット物理アドレスを、各コンプリータ側保護情報エントリ内で定義された物理アドレスのそれぞれの範囲の上限と下限に比較して、それらのいずれかが指定された物理アドレスに一致するかどうかを判定することを要し得る。リクエスタ側グラニュール保護情報に使用されるインデックス付きマルチレベルテーブルでの手法は、比較的多数の別個のエントリをサポートすることができ、それによって、物理アドレスの物理アドレス空間へのきめ細かいマッピングがサポートされる。これは、コンプリータ側保護情報における、それぞれの区域の上限と下限を定義する手法を利用する場合では、これらの各エントリをルックアップしてターゲットアドレスがそのエントリの境界内に含まれるかどうかをチェックすることにおける比較のオーバーヘッドのため、通常は実用的でない可能性がある。しかし、コンプリータ側保護情報は、メモリ記憶の観点からより効率的であり得て、ルックアップキャッシュにおいてミスがあった場合のペナルティもより軽いため、パフォーマンスに関する変動がより小幅であり得る。もちろん、これはルックアップ情報がリクエスタ側とコンプリータ側とでどのように実装されるかの一例に過ぎない。
リクエスタ側保護情報は、実行中に動的にアップデート可能であり得る。コンプリータ側保護情報は、システムオンチップ上のハードウェアによって静的に定義され、起動時に構成される、又は実行中に動的に再構成され得る。
前述の実施例に関して、グラニュール保護ルックアップについて上述した技術は、アドレス変換回路及びリクエスタ側フィルタリング回路の機能を実行するための専用ハードウェアロジックを有するシステムに実装することができるが、同等の機能はコンピュータプログラム内のソフトウェアに実装し、ホストデータ装置を制御して、前述したものと同様の理由による、ターゲットコードの実行のための命令実行環境を提供することもでき得る。したがって、アドレス変換プログラムロジック及びフィルタリングプログラムロジックが、前述のアドレス変換回路及びリクエスタ側フィルタの機能をエミュレートするために提供され得る。前述の実施例に関し、命令実行環境を提供するコンピュータプログラムについて、以下のうちの少なくとも1つが当てはまり得る。グラニュール保護情報は、ターゲットコードによって実行中に動的に更新可能である。グラニュール保護情報は、ページレベルの粒度で定義される。
実施例の説明
図1は、少なくとも1つのリクエスタデバイス4及び少なくとも1つのコンプリータデバイス6を有するデータ処理システム2の例を概略的に示している。インターコネクト8は、リクエスタデバイス4とコンプリータデバイス6との間の通信を提供する。リクエスタデバイスは、特定のアドレス指定可能なメモリシステムの場所へのメモリアクセスを要求するメモリアクセス要求を発行することができる。コンプリータデバイス6は、それに向けられたメモリアクセス要求を処理する責任を有するデバイスである。図1には示されていないが、いくつかのデバイスは、リクエスタデバイスとコンプリータデバイスの両方として機能できる場合がある。リクエスタデバイス4は、例えば、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)又はバスマスターデバイス、ネットワークインターフェースコントローラ、ディスプレイコントローラなどの他のマスターデバイスなどの処理要素を含み得る。コンプリータデバイスは、対応するメモリ記憶ユニットへのアクセス制御を担うメモリコントローラ、周辺デバイスへのアクセスを制御するための周辺コントローラなどを含む。図1は、リクエスタデバイス4のうちの1つの構成例をより詳細に示すが、他のリクエスタデバイス4も同様の構成を有し得ることを理解されたい。あるいは、他のリクエスタデバイスは、図1の左側に示すリクエスタデバイス4と異なる構成を有し得る。
リクエスタデバイス4は、レジスタ12に記憶されたデータを参照して、命令に応答するデータ処理を実行するための処理回路10を有する。レジスタ12は、オペランド及び処理された命令の結果を記憶するための汎用レジスタだけでなく、処理回路によって処理がどのように実行されるかを構成するための制御データを記憶するための制御レジスタを含み得る。例えば、制御データは、どの動作領域が現在の領域であるかを選択するために使用される現在の領域指示14と、どの例外レベルが処理回路10が動作している現在の例外レベルであるかを示す現在の例外レベル指示15とを含み得る。
処理回路10は、アクセスされるべきアドレス指定可能な場所を識別する仮想アドレス(VA)と、現在の領域を識別する領域識別子(領域ID又は「セキュリティ状態」)と、を指定するメモリアクセス要求を発行することが可能であり得る。アドレス変換回路16(例えば、メモリ管理ユニット(MMU))は、メモリシステムに記憶されたページテーブル構造において定義されたページテーブルデータに基づいて、アドレス変換のより多くのステージのうちの1つを介して、仮想アドレスを物理アドレス(PA)に変換する。変換ルックアサイドバッファ(TLB)18は、アドレス変換が必要なその都度ページテーブル情報がメモリからフェッチされる必要がある場合よりも速いアクセスのために、そのページテーブル情報の一部をキャッシュするためのルックアップキャッシュとして機能する。この例では、物理アドレスを生成するだけでなく、アドレス変換回路16はまた、物理アドレスと関連付けられたいくつかの物理アドレス空間のうちの1つを選択し、選択された物理アドレス空間を識別する物理アドレス空間(PAS)識別子を出力する。PASの選択については、以下でより詳細に論じる。
PASフィルタ20は、変換された物理アドレス及びPAS識別子に基づいて、その物理アドレスがPAS識別子によって識別され指定された物理アドレス空間内でアクセスされることが許可されているかどうかを確認するためのリクエスタ側フィルタリング回路として機能する。このルックアップは、メモリシステム内に記憶されたグラニュール保護テーブル構造に格納されたグラニュール保護情報に基づく。グラニュール保護情報は、TLB18内におけるページテーブルデータのキャッシュと同様に、グラニュール保護情報キャッシュ22内にキャッシュされ得る。図1の例では、グラニュール保護情報キャッシュ22は、TLB18とは別々の構造として示されているが、他の例では、これらのタイプのルックアップキャッシュを単一ルックアップキャッシュ構造として組み合わせることができ、その結果、組み合わされた構造のエントリの単一ルックアップは、ページテーブル情報及びグラニュール保護情報の両方を提供する。グラニュール保護情報は、所与の物理アドレスがアクセスされ得る物理アドレス空間を制限する情報を定義し、このルックアップに基づいて、メモリアクセス要求が1つ以上のキャッシュ24及び/又はインターコネクト8に対して発行されることを進めることを可能とするかどうかをPASフィルタ20が判定する。メモリアクセス要求に対する指定されたPASが指定された物理アドレスにアクセスすることを許可されない場合、PASフィルタ20は、トランザクションをブロックし、不具合をシグナリングすることができる。
図1は、システムが複数のリクエスタデバイス4を有する状態の例を示しているが、図1の左側の1つの要求デバイスに示される特徴は、シングルコアプロセッサなど1つのリクエスタデバイスのみが存在するシステムにも含まれ得る。
図1は、所与の要求に対するPASの選択がアドレス変換回路16によって行われる例を示しているが、他の例では、どのPASを選択するかを決定するための情報を、PAと共にアドレス変換回路16によってPASフィルタ20に対して出力することができ、PASフィルタ20は、PASを選択し、選択されたPAS内でPAがアクセスされることが可能かどうかを確認することができる。
PASフィルタ20の提供は、それぞれがそれ自体の隔離された物理アドレス空間に関連付けられた、いくつかの動作領域で動作することができるシステムをサポートするのに役立つ。ここで、(例えば、いくつかのキャッシュ又はスヌープフィルタなどのコヒーレンシ実施メカニズムのための)メモリシステムの少なくとも一部について、別々の物理アドレス空間は、それらのアドレス空間内のアドレスが実際にメモリシステム内の同じ物理的場所を指す場合でも、あたかも別のメモリシステムの場所を識別する全く別のアドレスのセットを指すかのように扱われる。これは、セキュリティ目的のために有用であり得る。
図2は、処理回路10が動作することができる種々の動作状態及び領域の例、並びに種々の例外レベル及び領域で実行され得るソフトウェアのタイプの例を示している(当然のことながら、システム上にインストールされる特定のソフトウェアは、そのシステムを管理する当事者によって選択され、したがって、ハードウェアアーキテクチャの本質的な特徴ではないことが理解されよう)。
処理回路10は、いくつかの異なる例外レベル80、この実施例では、EL0、EL1、EL2、及びEL3とラベル付けされた4つの例外レベルで動作可能であり、この実施例では、EL3は最高レベルの特権を有する例外レベルを指し、EL0は最低の特権を有する例外レベルを指す。他のアーキテクチャでは、逆の採番を選び、最大の数を有する例外レベルが最低の特権を有すると見なし得ることが理解されよう。この実施例では、最低特権の例外レベルEL0は、アプリケーションレベルのコードのためのものであり、次に最高特権の例外レベルEL1は、オペレーティングシステムレベルのコードに使用され、次に最高特権の例外レベルEL2は、いくつかの仮想オペレーティングシステム間の切り替えを管理するハイパーバイザレベルコードに使用され、最高特権の例外レベルEL3は、後述するように、それぞれの領域間の切り替え及び物理アドレスの物理アドレス空間への配分を管理するモニタコードに使用される。
ソフトウェアを処理している間に特定の例外レベルで例外が発生するとき、いくつかのタイプの例外については、例外がより高い(より高特権の)例外レベルに受け入れられ、例外が受け入れられる特定の例外レベルは、発生した特定の例外の属性に基づいて選択される。しかしながら、いくつかの状況において、例外が受け入れられたときに処理されていたコードと関連付けられた例外レベルと同じ例外レベルで、他のタイプの例外が受け入れられ得る。例外が受け入れられるとき、例外が受け入れられた時点のプロセッサの状態を特徴付ける情報を、例えば例外が受け入れられた時点での現在の例外レベルを含めて保存することができる。したがって、例外に対処するために例外ハンドラが処理されると、処理は以前の処理に戻ることができ、保存された情報を使用して、処理が戻るべき例外レベルを識別することができる。
異なる例外レベルに加えて、処理回路はまた、ルート領域82、セキュア(S)領域84、よりセキュアでない領域86、及びレルム領域88を含むいくつかの動作領域をサポートする。参照を容易にするために、よりセキュアでない領域は「非セキュア」(NS)領域として以下に説明されるが、これは、セキュリティの特定のレベル(又は欠如)を意味することを意図するものではないことが理解されよう。代わりに、「非セキュア」は、非セキュア領域が、セキュア領域で動作するコードよりもセキュアではないコードを対象としていることを単に示す。ルート領域82は、処理回路10が最高例外レベルEL3にあるときに選択される。処理回路が他の例外レベルEL0~EL2のうちの1つにあるとき、現在の領域は、現在の領域インジケータ14に基づいて選択され、これは、他の領域84、86、88のうちのどれがアクティブであるかを示す。他の領域84、86、88の各々について、処理回路は、例外レベルEL0、EL1、又はEL2のいずれかにあり得る。
起動時に、いくつかのブートコード(例えば、BL1、BL2、OEMブート)が、例えば、より高い特権の例外レベルEL3又はEL2内で実行され得る。ブートコードBL1、BL2は、例えばルート領域と関連付けられ得て、OEMブートコードはセキュア領域で動作し得る。しかしながら、システムが起動されると、実行中、処理回路10は、一度に領域82、84、86、及び88のうちの1つで動作すると見なされ得る。領域82~88の各々は、それ自体の関連する物理アドレス空間(PAS)と関連付けられている。これにより、メモリシステムの少なくとも一部内で、異なる領域からのデータの隔離が可能とされている。これについては、以下でより詳細に説明する。
非セキュア領域86は、通常のアプリケーションレベル処理、及びそのようなアプリケーションを管理するためのオペレーティングシステム及びハイパーバイザアクティビティに使用することができる。したがって、非セキュア領域86内で、EL0で動作するアプリケーションコード30、EL1で動作するオペレーティングシステム(OS)コード32、及びEL2で動作するハイパーバイザコード34が存在し得る。
セキュア領域84は、特定のシステムオンチップセキュリティ、メディア、又はシステムサービスが、非セキュア処理に使用される物理アドレス空間とは別の物理アドレス空間に隔離されることを可能にする。セキュア領域と非セキュア領域とは、非セキュア領域コードがセキュア領域84と関連付けられたリソースにアクセスできない一方で、セキュア領域は、セキュアリソースと非セキュアリソースの両方にアクセスできるという意味では同等でない。セキュア及び非セキュア領域84、86のそのような分割をサポートするシステムの例は、Arm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャに基づくシステムである。セキュア領域は、信頼できるアプリケーション36をEL0で、信頼できるオペレーティングシステム38をEL1で、及び任意選択でセキュア分割マネージャ40をEL2で実行できる。EL2は、セキュア分割がサポートされる場合、ステージ2のページテーブルを使用して、セキュア領域84内で実行されている異なる信頼できるオペレーティングシステム38間の隔離を、ハイパーバイザ34が非セキュア領域86内で実行される仮想マシン間又はゲストオペレーティングシステム32間の隔離を管理することができる方法と同様の方法で、サポートすることができる。
システムを、セキュア領域84をサポートするように拡張することは、単一のハードウェアプロセッサが隔離されたセキュア処理をサポートすることを可能にし、かつ処理を別のハードウェアプロセッサ上で行う必要性を回避できるために、近年一般的になった。しかしながら、セキュア領域の使用の人気が高まるにつれ、そのようなセキュア領域を有する多くの実用システムは、いまや、セキュア領域内で、広範囲の種々のソフトウェアプロバイダによって提供されるサービスの比較的高度な混合環境をサポートしている。例えば、セキュア領域84内で動作するコードは異なるソフトウェアを含み得て、その提供者には(とりわけ)、集積回路を製造したシリコンプロバイダ、シリコンプロバイダによって提供された集積回路を携帯電話などの電子デバイスに組み立てる相手先ブランド製品製造業者(OEM)、オペレーティングシステム32をデバイスのために提供するオペレーティングシステムベンダー(OSV)、及び/又はクラウドを介して、多数の異なる顧客のためのサービスをサポートするクラウドサーバを管理するクラウドプラットフォームプロバイダを含む。
しかしながら、(非セキュア領域86内のアプリケーション30として実行することが通常予想され得る)ユーザレベルコードの提供者が、同じ物理プラットフォーム上でコードを動作させる他の当事者に情報を漏らさないことが信頼できるセキュアなコンピューティング環境を提供されることへの要望が高まっている。そのようなセキュアコンピューティング環境は、実行中に動的に配分可能であって、潜在的に機密性のあるコード又はデータの処理をデバイスに任せる前に、十分なセキュリティ保証が物理的プラットフォーム上で提供されているかどうかをユーザが検証できるように保証され証明可能であることが望ましい可能性がある。そのようなソフトウェアのユーザは、非セキュア領域86で通常動作し得る、機能が豊富なオペレーティングシステム32又はハイパーバイザ34の提供者を信頼することを望まない可能性がある(あるいは、それらのプロバイダ自体は信頼できても、ユーザは、オペレーティングシステム32又はハイパーバイザ34が攻撃者によって不正アクセスされることから自らを守ることを望み得る)。また、セキュア領域84はセキュアな処理を必要としているそのようなユーザ提供アプリケーションのために使用可能であるが、実際では、これはセキュアなコンピューティング環境を必要とするコードを提供するユーザと、セキュア領域84内で動作する既存のコードのプロバイダとの両方に対して、問題を引き起こす。セキュア領域84内で動作する既存のコードのプロバイダにとって、セキュア領域内に恣意的なユーザ提供コードが追加されることにより、それらのコードに対する潜在的な攻撃の攻撃対象領域が増加する。これは望ましくないことであり得て、したがってユーザがセキュア領域84にコードを追加することを可能としないよう強く勧奨され得る。一方、セキュアなコンピューティング環境を必要とするコードを提供するユーザは、特定の領域で動作するコードの保証及び証明が、ユーザ提供コードが処理を実行する前提条件として必要とされる場合に、セキュア領域84で動作する異なるコードのプロバイダのすべてに自らのデータ又はコードへのアクセスを任せることに否定的であり得る。セキュア領域84で動作する異なるソフトウェアプロバイダによって提供される別個のコードのすべてを監査し証明することは困難であり得、第三者がよりセキュアなサービスを提供する機会を制限し得る。
したがって、図2に示すように、レルム領域と呼ばれる追加の領域88が提供される。レルム領域は、ユーザが導入したそのようなコードによって使用され得て、セキュア領域24で動作する構成要素に関連付けられた任意のセキュアなコンピューティング環境に直交するセキュアなコンピューティング環境を提供する。レルム領域では、実行されるソフトウェアはいくつかのレルムを含むことができ、各レルムは、例外レベルEL2で動作するレルムマネージメントモジュール(RMM)46によって他のレルムから隔離され得る。RMM46は、例えば、ハイパーバイザ34が非セキュア領域86で動作する種々の構成要素間の分離を管理する方法と同様に、ページテーブル構造内のアクセス許可及びアドレスマッピングを定義することによって、レルム領域88を実行するそれぞれのレルム42、44間の隔離を制御することができる。この例では、レルムは、EL0で実行されるアプリケーションレベルのレルム42と、例外レベルEL0及びEL1にわたって実行されるカプセル化アプリケーション/オペレーティングシステムレルム44とを含む。EL0及びEL0/EL1タイプの両方のレルムをサポートすることが必須ではなく、同じタイプの複数のレルムがRMM46によって確立され得ることが理解されよう。
レルム領域88は、それに割り当てられた独自の物理アドレス空間をセキュア領域84と同様に有するが、レルム領域及びセキュア領域88、84が非セキュア領域86に関連付けられた非セキュアPASにそれぞれアクセスできる一方で、レルム領域88とセキュア領域84とは相互の物理アドレス空間にアクセスできないという意味でレルム領域はセキュア領域84に直交している。これは、レルム領域88で実行されているコードとセキュア領域84とは互いに依存関係を有しないことを意味する。レルム領域内のコードは、ハードウェア、RMM46、及び領域間の切り替えを管理するルート領域82で動作するコードのみを信頼すればよく、これは、証明と保証がより実行可能であることを意味する。証明は、所与のソフトウェアが、デバイス上にインストールされたコードが特定の予想された特性に一致することの検証を要求することを可能にする。これは、デバイス上にインストールされたプログラムコードのハッシュが、信頼できる当事者により暗号プロトコルを使用して署名された予想値と一致するかどうかをチェックすることによって実施することができる。RMM46及びモニタコード29は、例えば、このソフトウェアのハッシュが、処理システム2を含む集積回路を製造したシリコンプロバイダ、又は領域ベースのメモリアクセス制御をサポートするプロセッサアーキテクチャを設計したアーキテクチャプロバイダなどの信頼できる当事者によって署名された予想値と一致するかどうかをチェックすることによって証明され得る。これにより、ユーザ提供コード42、44は、任意のセキュアな又は機密性のある機能を実行する前に、領域ベースのアーキテクチャの完全性が信頼できるかどうかを検証することができる。
したがって、これらのプロセスが以前実行されていたであろう非セキュア領域内のギャップを示す点線で示されるように、以前は非セキュア領域86で実行されていたであろうレルム42、44に関連付けられているコードは、今や、それらのデータとコードが非セキュア領域86で動作する他のコードによってアクセスできないため、これらがより強いセキュリティ保証を有し得るレルム領域に移動され得ることが分かる。しかしながら、レルム領域88及びセキュア領域84が直交しており、したがって相互の物理アドレス空間を見ることができないという事実により、これは、レルム領域内のコードのプロバイダはセキュア領域内のコードのプロバイダを信頼する必要がなく、逆も同様であることを意味する。レルム領域内のコードは、ルート領域82及びRMM46のモニタコード29を提供するファームウェアを単純に信頼することができ、これはシリコンプロバイダ、又はプロセッサによってサポートされる命令セットアーキテクチャのプロバイダにより提供され得る。これらのプロバイダは、それらのデバイス上でコードが実行されているときに初めから本質的に信頼される必要があり得て、その結果、ユーザがセキュアコンピューティング環境を提供され得るために、他のオペレーティングシステムベンダー、OEM、又はクラウドホストとの他の更なる信頼関係がユーザにより必要とされることはない。
これは様々な目的のアプリケーション及び使用事例のために有用であり、例えば、モバイルウォレット及び支払いアプリケーション、ゲームにおける不正及び著作権侵害防止メカニズム、オペレーティングシステムプラットフォームセキュリティ拡張、セキュアな仮想マシンホスティング、機密コンピューティング、ネットワーク化、又はインターネットオブシングス(Internet of Things)のためのゲートウェイ処理を含む。ユーザは、レルムサポートが有用である他の多くのアプリケーションを見つけ得ることが理解されよう。
レルムに提供されるセキュリティ保証をサポートするために、処理システムは、証明レポート機能をサポートすることができ、起動時又は実行中に、ファームウェアの画像と構成、例えば、モニターコードの画像と構成、又はRMMコードの画像と構成の測定が行われる。実行中にはレルムのコンテンツと構成が測定され、それによって、レルムオーナーが関連性のある証明レポートを既知の実装及び保証に対してトレースバックし、そのシステム上で動作するかどうかについて信頼決定を行うことができる。
図2に示すように、領域の切り替えを管理する別のルート領域82が提供され、そのルート領域は、それ自体の隔離されたルート物理アドレス空間を有する。ルート領域を作成し、そのリソースをセキュア領域から隔離することは、たとえ非セキュア及びセキュア領域86、84のみを有してレルム領域88を有しないシステムであっても、より堅牢な実装を可能にするが、レルム領域88をサポートする実装にも使用することができる。ルート領域82は、シリコンプロバイダ又はアーキテクチャ設計者によって提供される(又は保証された)モニタソフトウェア29を使用して実装することができ、セキュアブート機能、トラステッドブート測定、システムオンチップ構成、デバッグ制御及びOEMなどの他の当事者によって提供されるファームウェア構成要素のファームウェア更新管理を提供するために使用することができる。ルート領域のコードは、シリコンプロバイダ又はアーキテクチャ設計者によって、最終的なデバイスへの依存関係なしに開発、保証、かつ展開することができる。対照的に、セキュア領域84は、特定のプラットフォーム及びセキュリティサービスを実装するためにOEMによって管理され得る。非セキュア領域86の管理は、オペレーティングシステムサービスを提供するためにオペレーティングシステム32によって制御され得る一方で、レルム領域88は、セキュア領域84内の既存のセキュアソフトウェア環境とは相互に隔離されると同時に、ユーザ又はサードパーティのアプリケーションに専用であり得る信頼できる実行環境の新しい形態の開発を可能にする。
図3は、これらの技術をサポートするための処理システム2の別の例を概略的に示す。図1にあるのと同じである要素は、同じ参照番号で示されている。図3は、アドレス変換回路16のより詳細を示し、ステージ1メモリ管理ユニット50、及びステージ2メモリ管理ユニット52を含む。ステージ1MMU50は、仮想アドレスから物理アドレスへ(変換がEL2又はEL3コードによってトリガされる場合)又は中間アドレスへ(ステージ2MMU52による更なるステージ2変換が必要である動作状態で、変換がEL0又はEL1コードによってトリガされる場合)のいずれかの変換に関与し得る。ステージ2MMUは、中間アドレスを物理アドレスに変換することができる。ステージ1MMUは、EL0又はEL1から開始される変換についてはオペレーティングシステムによって制御されるページテーブルに、EL2からの変換についてはハイパーバイザによって制御されるページテーブルに、又はEL3からの変換についてはモニタコード29によって制御されるページテーブルに基づくことができる。一方、ステージ2MMU52は、どの領域が使用されているかに応じて、ハイパーバイザ34、RMM46又はセキュア分割マネージャ14によって定義されるページテーブル構造に基づくことができる。変換をこのように2つのステージに分離することにより、オペレーティングシステムは、それらがシステム上で動作する唯一のオペレーティングシステムであるという仮定の下で、それら自体のための及びアプリケーションのためのアドレス変換を管理することが可能となり、一方、RMM46、ハイパーバイザ34、又はSPM40は、同じ領域内で実行される異なるオペレーティングシステム間の隔離を管理することができる。
図3に示すように、アドレス変換回路16を使用するアドレス変換プロセスは、現在の例外レベル15及び現在の領域14(又はセキュリティ状態)と組み合わせて、特定の物理アドレス空間(PAS識別子又は「PAS TAG」によって識別される)のセクションが所与のメモリアクセス要求に応答してアクセスされることを可能にするセキュリティ属性54を返すことができる。物理アドレス及びPAS識別子は、前述のグラニュール保護情報を提供するグラニュール保護テーブル56内でルックアップすることができる。この例では、PASフィルタ20は、選択されたPASが要求された物理アドレスにアクセスを許可されているかどうかを検証し、されている場合は、トランザクションがメモリシステムのシステムファブリックの一部である任意のキャッシュ24又はインターコネクト8に渡されることを許可する、詳細(granular)メモリ保護ユニット(GMPU)として示されている。
GMPU20は、別のアドレス空間にメモリを割り当てることを可能にしながら、同時に、ハードウェアベースの強力な隔離保証を提供し、物理メモリをこれらのアドレス空間に割り当てる方法における空間的及び時間的柔軟性だけでなく、効率的な共有スキームを提供する。前述のように、システム内の実行ユニットは、「ルートワールド(Root World)」と呼ばれ、最高例外レベル(EL3)に位置する1つの実行状態(ルートワールド)が存在する仮想実行状態(領域又は「ワールド」)に論理的に分割され、ルートワールドはこれらのワールドへの物理メモリ割り当てを管理する。
単一のシステム物理アドレス空間は、複数の「論理」又は「アーキテクチャ上の」物理アドレス空間(PAS)に仮想化され、そのような各PASは、独立したコヒーレンシ属性を有する直交アドレス空間である。システム物理アドレスは、PASタグでそれを拡張することによって、単一の「論理」物理アドレス空間にマッピングされる。
所与のワールドは、論理物理アドレス空間のサブセットへのアクセスを許可される。これは、メモリ管理ユニット16の出力に取り付けることができるハードウェアフィルタ20によって実施される。
ワールドは、アドレス変換に使用されるページテーブルの変換表記述子のフィールドを使用してアクセスのセキュリティ属性(PASタグ)を定義する。ハードウェアフィルタ20は、システム物理アドレス空間内の各ページに対してグラニュール保護情報(GPI)を定義するテーブル(グラニュール保護テーブル56、又はGPT)へのアクセスを有し、グラニュール保護情報は、それが関連付けられているPAS TAG、及び(任意選択で)他のグラニュール保護属性を示す。
ハードウェアフィルタ20は、グラニュールのGPIに対するワールドID及びセキュリティ属性をチェックして、アクセスが許可され得るか否かを決定し、このようにして、詳細メモリ保護ユニット(GMPU)を形成する。
GPT56は、例えば、オンチップSRAM又はオフチップDRAMに存在することができる。オフチップに記憶された場合、GPT56は、GPT56のセキュリティを維持するために暗号化、完全性、及び鮮度のメカニズムを使用し得るオンチップメモリ保護エンジンによって完全性保護され得る。
GMPU20を、コンプリータ側ではなく、システムのリクエスタ側(例えば、MMU出力上)に位置させることにより、インターコネクト8が複数のDRAMポートにわたって継続してページをハッシング/ストライピングすることを許可しながら、ページ詳細でアクセス許可を割り当てることを可能にする。
トランザクションは、システムファブリック24、8全体を通して伝播して、物理的別名化ポイント60として定義される場所に到達するまで、PAS TAGがタグ付けされたままである。これにより、スレーブ側フィルタリングと比較してセキュリティ保証を弱めることなく、フィルタをマスター側に配置することができる。トランザクションがシステム全体を通して伝播するにつれて、PAS TAGは、アドレス隔離のための詳細なセキュリティメカニズムとして使用することができる。例えば、キャッシュは、キャッシュ内のアドレスタグにPAS TAGを追加して、同じPAに対して誤ったPAS TAGを使用して行われるアクセスがキャッシュにヒットすることを防止し、それによってサイドチャネル抵抗を改善することができる。PAS TAGはまた、外部DRAMに書き込まれる前にデータを暗号化するメモリコントローラに取り付けられた保護エンジンのコンテキストセレクタとして使用することができる。
物理的別名化ポイント(PoPA)は、PAS TAGが剥離され、アドレスが論理物理アドレスからシステム物理アドレスに戻るシステム内の場所である。PoPAは、物理DRAMへのアクセスが(PAS TAGを介して解決された暗号化コンテキストを使用して)行われる、システムのコンプリータ側でキャッシュの下方に位置することができる。あるいは、セキュリティの弱化という犠牲において、システムの実装を簡素化するためにキャッシュの上方に位置してもよい。
任意の時点で、ワールドは、1つのPASから別のPASにページを遷移させることを要求できる。要求は、モニタコード29に対してEL3で行われ、GPIの現在の状態を検査する。EL3は、特定の遷移のセットのみ(例えば、レルムPASからセキュアなPASでなく、非セキュアPASからセキュアなPAS)が発生することを可能にし得る。クリーンな遷移を提供するために、新しい命令「データを削除し物理的別名化ポイントまで無効化」がシステムによりサポートされ、EL3はページを新しいPASに遷移させる前にこれを提出できる。これにより、前のPASに関連付けられた任意の残留状態がPoPA60(よりもリクエスタ側に近い)の上流の任意のキャッシュからフラッシュされることが保証される。
GMPU20をマスター側に取り付けることによって達成することができる別の特性は、ワールド間のメモリの効率的な共有である。物理的グラニュールへの共有アクセスを、他のワールドがそれにアクセスすることを防止しながら、Nワールドのサブセットに許可することが望ましい場合がある。これは、「限定的共有」語義(semantic)をグラニュール保護情報に追加する一方で、それが特定のPAS TAGを使用することを強制することによって達成することができる。一例として、GPIは、物理的グラニュールに、セキュアPAS84のPAS TAGがタグ付けされている間、「レルムワールド」88及び「セキュアワールド」84によってのみアクセスされ得ることを示すことができる。
上記の特性の例は、特定の物理的グラニュールの可視性特性の急速な変化をもたらす。各ワールドに、そのワールドにのみアクセス可能な私的PASが割り当てられている場合を考える。特定のグラニュールに対し、ワールドは、それらのGPIを「排他的」から「非セキュアワールドと限定的に共有」に変更することによって、PASの関連付けを変更することなく、任意の時点で非セキュアワールドに対して可視となるように要求することができる。このようにして、コストのかかるキャッシュメンテナンス又はデータコピー操作を必要とせずに、そのグラニュールの可視性を高めることができる。
図4は、それぞれの物理アドレス空間をハードウェアに設けられる物理メモリ上で別名化する概念を示す。前述のように、領域82、84、86、88の各々は、それ自体のそれぞれの物理アドレス空間61を有する。
物理アドレスがアドレス変換回路16によって生成される時点で、物理アドレスは、システムによってサポートされた特定の数値範囲62内の値を有し、これは、どの物理アドレス空間が選択されるかに関係なく同じである。しかしながら、物理アドレスの生成に加えて、アドレス変換回路16はまた、現在の領域14及び/又は物理アドレスを導出するために使用されるページテーブルエントリ内の情報に基づいて、特定の物理アドレス空間(PAS)を選択し得る。代替的に、PASの選択を実行するアドレス変換回路16の代わりに、アドレス変換回路(例えば、MMU)は、物理アドレスと、PASの選択に使用される、ページテーブルエントリ(PTE)から導出された情報とを出力することができ、次いで、この情報は、PASフィルタ又はGMPU20によって使用されて、PASを選択することができる。
所与のメモリアクセス要求に対するPASの選択は、以下の表で定義される規則に従って、処理回路10がメモリアクセス要求を発行するときに動作する現在の領域に応じて限定され得る。
選択に利用可能な複数の物理アドレス空間が存在する領域については、物理アドレスを提供するために使用されるアクセスされたページテーブルエントリからの情報を使用して、利用可能なPASオプションの間から選択する。
したがって、PASフィルタ20がシステムファブリック24、8にメモリアクセス要求を出力する時点では(それが任意のフィルタリングチェックに合格したと仮定して)、メモリアクセス要求は、物理アドレス(PA)及び選択された物理アドレス空間(PAS)と関連付けられている。
物理的別名化(PoPA)ポイント60の前に動作するメモリシステム構成要素(キャッシュ、インターコネクト、スヌープフィルタなど)の視点からは、それぞれの物理アドレス空間61は、メモリ内の異なるシステム位置に対応する完全に別のアドレス範囲と見なされる。これは、PoPA前メモリシステム構成要素の視点からは、メモリアクセス要求によって識別されるアドレス範囲は、実際には、アドレス変換において出力され得る範囲62の4倍のサイズであることを意味する。これは、事実上、PAS識別子が物理アドレス自体と並んで追加のアドレスビットとして扱われ、そのため、選択されるPASによっては同じ物理アドレスPAxが別個の物理アドレス空間61内のいくつかの別名化物理アドレス63にマッピングされ得るためである。これらの別名化物理アドレス63は、すべて実際には、物理的ハードウェアに実装された同じメモリシステム位置に対応するが、PoPA前メモリシステム構成要素は、別名化アドレス63を別のアドレスとして扱う。したがって、そのようなアドレスにエントリを配分するPoPA前キャッシュ又はスヌープフィルタがある場合、別名化アドレス63は、別のキャッシュヒット/ミス決定と別のコヒーレンシ管理を有する異なるエントリにマッピングされるであろう。これは、他の領域の動作を探るメカニズムとして、キャッシュ又はコヒーレンシサイドチャネルを使用する攻撃者の可能性又は有効性を低減する。
システムは、(例えば、以下に論じる図14に示すように)2つ以上のPoPA60を含み得る。各PoPA60において、別名化物理アドレスは、システム物理アドレス空間64内の単一の非別名化アドレス65に折り畳まれる。非別名化アドレス65は、任意のPoPA後構成要素の下流に提供され、その結果、メモリシステムの場所を実際に識別するシステム物理アドレス空間64が再び、リクエスタ側で実行されるアドレス変換において出力され得る物理アドレスの範囲と同じサイズとなる。例えば、PoPA60では、PAS識別子はアドレスから剥離され得て、下流の構成要素については、アドレスはPASを指定することなく、単純に物理アドレス値を使用して識別することができる。あるいは、メモリアクセス要求のいくつかのコンプリータ側フィルタリングが所望されるいくつかの場合では、PAS識別子は、PoPA60の下流で依然として提供され得るが、アドレスの一部として解釈されなくてもよい。その結果、異なる物理アドレス空間60に現れる同じ物理アドレスは、PoPAの下流において同じメモリシステムの場所を指すように解釈されるであろう。しかし、供給されたPAS識別子は、それでもコンプリータ側セキュリティチェックを実行するために使用され得る。
図5は、システム物理アドレス空間64を、グラニュール保護テーブル56を使用して、どのようにして特定のアーキテクチャ上の物理アドレス空間61内のアクセスのために配分されたチャンクに分割することができるかを示す。グラニュール保護テーブル(GPT)56は、システム物理アドレス空間65のどの部分を各アーキテクチャ上の物理アドレス空間61からアクセス可能とするかを定義する。例えば、GPT56は、特定のサイズの物理アドレスのグラニュール(例えば4Kページ)に各々対応するいくつかのエントリを含み得、そのグラニュールの割り当てられたPASを定義し得るが、これは、非セキュア、セキュア、レルム、及びルート領域の中から選択され得る。設計により、特定のグラニュール又はグラニュールのセットが、領域のうちの1つと関連付けられたPASに割り当てられている場合、それはその領域と関連付けられたPAS内でのみアクセスすることができ、他の領域のPAS内でアクセスすることはできない。しかしながら、(例えば)セキュアPASに配分されたグラニュールはルートPAS内からアクセスできないにもかかわらず、ルート領域82はそれでも、そのページテーブル内に、物理的なアドレス指定されたメモリのその区域にマッピングされたページに関連付けられた仮想アドレスがルートPASの代わりにセキュアPAS内の物理アドレスに変換されることを確実にするためのPAS選択情報を指定することによって、物理アドレスのそのグラニュールにアクセスできることに留意されたい。したがって、(前述の表に定義されたアクセス可否ルールによって許可される範囲での)領域間のデータの共有は、所与のメモリアクセス要求のPASを選択する時点で制御され得る。
しかしながら、いくつかの実装では、GPTによって定義された、割り当てられたPAS内で物理アドレスのグラニュールへのアクセスを可能とすることに加えて、GPTは、他のGPT属性を使用して、アドレス空間のうちのある区域を別のアドレス空間と共有されたものとしてマークすることができる(例えば、通常はその領域のアクセス要求に対して割り当てられたPASを選択することが許可されない、下位の又は直交する特権の領域に関連付けられたアドレス空間)。
これは、所与のグラニュールに対して割り当てられたPASを変更する必要なしに、データを一時的に共有することを容易とし得る。例えば、図5では、レルムPASの区域70は、レルム領域に割り当てられるようにGPT内に定義されており、非セキュア領域86はそのアクセス要求のためにレルムPASを選択できないため、通常、非セキュア領域86からはアクセス不可能である。非セキュア領域26はレルムPASにアクセスできないため、通常、非セキュアコードは区域70のデータを見ることができなかった。しかしながら、レルムが、メモリの割り当てられた区域内のデータのいくつかを非セキュア領域と一時的に共有することを望む場合、ルート領域82で動作するモニタコード29に、区域70が非セキュア領域86と共有されることを示すようにGPT56を更新することを要求することができ、これにより、どの領域が区域70に対して割り当てられた領域であるかを変更する必要なしに、区域70を図5の左側に示す非セキュアPASからもアクセス可能とし得る。レルム領域がそのアドレス空間の区域を非セキュア領域と共有されるものとして指し示す場合、非セキュア領域から発行され、その区域をターゲットとするメモリアクセス要求は、当初は非セキュアPASを指定し得るが、PASフィルタ20は要求のPAS識別子が代わりにレルムPASを指定するように再マッピングすることができる。それにより、下流のメモリシステム構成要素は要求をあたかも初めからレルム領域から発行されたかのように扱う。この共有は、異なる領域を特定のメモリ区域に割り当てるための動作が、より高程度のキャッシュ/TLB無効化及び/又はメモリ内のデータゼロ化若しくはメモリ区域間でのデータコピーを伴う、よりパフォーマンス集約的であり得るために、パフォーマンスを改善し得る。これは、共有が一時的なものに過ぎないと予想される場合には正当化できない可能性がある。
図6は、処理回路10によって、又はアドレス変換回路16若しくはPASフィルタ20によって実行され得る、どのようにして現在の動作領域を判定するかを示すフロー図である。ステップ100では、現在の例外レベル15がEL3であるかどうかが判定され、そうである場合、次いで、ステップ102で、現在の領域がルート領域82であると判定される。現在の例外レベルがEL3でない場合、ステップ104で、現在の領域が、プロセッサのEL3制御レジスタ内の少なくとも2つの領域表示ビット14によって示されるように、非セキュア、セキュア、及びレルム領域86、84、88のうちの1つであると判定される(ルート領域は現在の例外レベルがEL3であることで示されるため、ルート領域に対応する領域表示ビット14のコードを有することは必須でなくてもよく、したがって少なくとも1つの領域表示ビットのコードを他の目的に留保しておくことができる)。EL3制御レジスタは、EL3で動作するときに書き込み可能であり、他の例外レベルEL2~EL0から書き込むことはできない。
図7は、アドレス変換回路16によって、仮想アドレスから物理アドレスへのマッピング、仮想アドレスから中間アドレスへのマッピング、又は中間アドレスから物理アドレスへのマッピングに使用されるページテーブル構造内のページテーブルエントリのために(そもそもステージ2の変換が必要な動作状態で変換がなされているか、及びステージ2変換が必要な場合、変換がステージ1、ステージ2のどちらであるかに応じて)使用することができるページテーブルエントリ(PTE)の例を示す。一般に、所与のページテーブル構造は、ページテーブルの第1のレベルがプロセッサの変換テーブルベースアドレスレジスタに記憶されたベースアドレスに基づいて識別されるページテーブルツリーとして実装される、マルチレベルテーブル構造として定義されてもよく、ページテーブル内の特定のレベル1ページテーブルエントリを選択するインデックスは、変換ルックアップの実行対象である入力アドレスのビットのサブセットから導出される(入力アドレスは、ステージ2変換のための中間アドレスの、ステージ1変換用の仮想アドレスであり得る)。レベル1ページテーブルエントリは、次のレベルのページテーブルへのポインタ112を提供する「テーブル記述子」110であり得て、そこから、更なるページテーブルエントリが、入力アドレスのビットの更なるサブセットに基づいて選択され得る。最終的に、連続するレベルのページテーブルへの1つ以上のルックアップの後、入力アドレスに対応する出力アドレス120を提供するブロック又はページ記述子PTE114、116、118を識別することができる。出力アドレスは、(更なるステージ2変換もまた実行される動作状態において実行されるステージ1変換のための)中間アドレス、又は(ステージ2の変換、又はステージ2が必要とされないときのステージ1の変換のための)物理アドレスであり得る。
上述の別個の物理アドレス空間をサポートするために、ページテーブルエントリフォーマットは、次のレベルのページテーブルポインタ112又は出力アドレス120、及びメモリの対応するブロックへのアクセスを制御するための任意の属性122に加えて、物理アドレス空間選択で使用するためのいくつかの追加の状態を指定することができる。
テーブル記述子110については、非セキュア領域86以外の任意の領域によって使用されるPTEは、次のレベルのページテーブルが非セキュア物理アドレス空間と現在の領域の物理アドレス空間のどちらからアクセスされるべきかを示す非セキュアテーブルインジケータ124を含む。これは、ページテーブルのより効率的な管理を容易にするのに役立つ。多くの場合、ルート、レルム又はセキュア領域24によって使用されるページテーブル構造は、仮想アドレス空間の一部分についてのみ特別なページテーブルエントリを定義すれば足り得る。そして、他の部分については非セキュア領域26によって使用されるものと同じページテーブルエントリが使用可能である。したがって、非セキュアテーブルインジケータ124を提供することによって、ページテーブル構造のより高レベルでレルム/セキュア専用テーブル記述子を提供することができる一方で、ページテーブルツリーのある時点で、ルートレルム又はセキュア領域は、アドレス空間のより高いセキュリティが必要とされない部分については、非セキュア領域からのページテーブルエントリの使用に切り替えることできる。ページテーブルツリーの他の部分にある他のページテーブル記述子は、ルート、レルム、又はセキュア領域に関連付けられた関連する物理アドレス空間からなおフェッチできる。
一方、ブロック/ページ記述子114、116、118は、どの領域に関連付けられているかに応じて、物理アドレス空間選択情報126を含み得る。非セキュア領域86内で使用される非セキュアブロック/ページ記述子118は、非セキュア領域が非セキュアPASにのみアクセスできるため、いかなるPAS選択情報をも含まない。しかしながら、他の領域については、ブロック/ページ記述子114、116は、入力アドレスを変換するPASを選択するために使用されるPAS選択情報126を含む。ルート領域22について、EL3ページテーブルエントリは、対応する物理アドレスが変換される選択されたPASとして4つの領域82、84、86、88のいずれかと関連付けられたPASを示すために少なくとも2ビットを含むPAS選択情報126を有し得る。対照的に、レルム及びセキュア領域については、対応するブロック/ページ記述子116は1ビットのPAS選択情報126のみを含む必要があり、これによって、レルム領域については、レルムと非セキュアPASの間で選択し、セキュア領域についてはセキュアPASと非セキュアPASの間で選択する。回路実装の効率を向上させ、ページテーブルエントリのサイズを増加させることを回避するために、レルム及びセキュア領域については、ブロック/ページ記述子116は、PAS選択情報126を、現在の領域がレルム又はセキュアであるかどうかに関係なく、PTE内の同じ位置にコードすることができるため、PAS選択ビット126を共有することができる。
したがって、図8は、現在の領域、及び所与のメモリアクセス要求に対して物理アドレスを生成する際に使用される、ブロック/ページPTEからの情報124、126に基づいてPASを選択する方法を示すフロー図である。PAS選択は、アドレス変換回路16によって実行され得る、又はアドレス変換回路がPAS選択情報126をPASフィルタ20に送付する場合には、アドレス変換回路16とPASフィルタ20との組み合わせによって実行され得る。
図8のステップ130では、処理回路10が、所与の仮想アドレス(VA)をターゲットVAとして指定してメモリアクセス要求を発行する。ステップ132では、アドレス変換回路16が、そのTLB18内の任意のページテーブルエントリ(又はそのようなページテーブルエントリから導出されたキャッシュ情報)をルックアップする。いずれかの必要なページテーブル情報が利用できない場合、アドレス変換回路16は、必要なPTEをフェッチするためにメモリへのページテーブルウォークを開始する(VAから中間アドレス(IPA)へ、そしてIPAからPAへのマッピングを得るため、潜在的に、ページテーブル構造のそれぞれのレベル及び/又はアドレス変換の複数ステージをステップスルーするための一連のメモリアクセスを要する)。ページテーブルウォーク動作においてアドレス変換回路16によって発行される任意のメモリアクセス要求は、それ自体が、アドレス変換及びPASフィルタリングの対象となり得る。したがって、ステップ130で受信された要求は、メモリからページテーブルエントリを要求するために発行されたメモリアクセス要求であり得ることに留意されたい。関連性を有するページテーブル情報が識別されると、仮想アドレスは、物理アドレスに(おそらくIPAを介して2つのステージで)変換される。ステップ134では、アドレス変換回路16又はPASフィルタ20が、図6に示す手法を使用して、どの領域が現在の領域であるかを判定する。
現在の領域が非セキュア領域である場合、ステップ136で、このメモリアクセス要求のために選択された出力PASは非セキュアPASである。
現在の領域がセキュア領域である場合、ステップ138で、物理アドレスを提供したブロック/ページ記述子PTEに含まれたPAS選択情報126に基づいて出力PASが選択され、出力PASはセキュアPAS又は非セキュアPASのいずれかとして選択される。
現在の領域がレルム領域である場合、ステップ140で、物理アドレスが導出されたブロック/ページ記述子PTEに含まれるPAS選択情報126に基づいて出力PASが選択され、この場合、出力PASはレルムPAS又は非セキュアPASのいずれかとして選択される。
ステップ134で現在の領域がルート領域であると判定された場合、ステップ142で、物理アドレスが導出されたルートブロック/ページ記述子PTE114内のPAS選択情報126に基づいて、出力PASが選択される。この場合、出力PASは、ルート、レルム、セキュア、及び非セキュア領域に関連付けられた物理アドレス空間のいずれかとして選択される。
図9は、物理アドレスの所与のグラニュールに対するGPT56のエントリの例を示す。GPTエントリ150は、物理アドレスのグラニュールに割り当てられたPASを識別する割り当てられたPAS識別子152を含み、任意選択で、例えば、物理アドレスのグラニュールが割り当てられたPAS以外の1つ以上の他のPASで可視化される前述の共有属性情報156を含むことができる更なる属性154を含む。共有属性情報156の設定は、割り当てられたPASに関連付けられた領域内で実行されるコードからの要求に応じてルート領域によって実行され得る。また、属性は、(メモリアクセス要求のために選択されたPASが物理アドレスのグラニュールにアクセスできるかどうかを判定するための)GPTチェックが、以下で更に説明するように、PASフィルタ20によってリクエスタ側で、又はインターコネクトのコンプリータデバイス側のコンプリータ側フィルタリング回路によって実行されるべきかどうかを示す、パススルーインジケータフィールド158を含み得る。パススルーインジケータ158が第1の値を有する場合、リクエスタ側フィルタリングチェックがリクエスタ側のPASフィルタ20で必要とされ得て、これらが失敗した場合、メモリアクセス要求はブロックされて不具合がシグナリングされ得る。しかしながら、パススルーインジケータ158が第2の値を有する場合、GPT56に基づくリクエスタ側フィルタリングチェックは、そのGPTエントリ150に対応する物理アドレスのグラニュール内の物理アドレスを指定するメモリアクセス要求のためには不要であり得、この場合、メモリアクセス要求は選択されたPASが物理アドレスのそのグラニュールにアクセス可能とされた許可されたPASのうちの1つであるかどうかをチェックすることには関係なく、キャッシュ24又はインターコネクト8にパススルーされてもよく、その代わりにそのような任意のPASフィルタリングチェックが次いでコンプリータ側で後で実行される。
図10は、インターコネクト8のリクエスタ側でPASフィルタ20によって実行されるリクエスタ側PASフィルタリングチェックを示すフロー図である。ステップ170では、PASフィルタ20が、物理アドレスと関連付けられたメモリアクセス要求と、前述の図8に示されるように選択され得る出力PASとを受信する。
ステップ172では、PASフィルタ20が、利用可能な場合はグラニュール保護情報キャッシュ22から、又はメモリに記憶されたテーブル構造から必要なGPTエントリをフェッチするための要求をメモリに発行することによって、指定されたPAに対応するGPTエントリを取得する。必要とされるGPTエントリが取得されると、ステップ174で、PASフィルタ、メモリアクセス要求に対して選択された出力PASが、ステップ172で得られたGPTエントリに定義された割り当てられたPAS152と同じかどうかを判定する。そうである場合、ステップ176で、(PA及び出力PASを指定する)メモリアクセス要求をキャッシュ24又はインターコネクト8に渡すことが可能とされる。
出力PASが割り当てられたPASでない場合、ステップ178において、PASフィルタは、出力PASが、指定されたPAに対応するアドレスのグラニュールにアクセス可能とされた許可されたPASとして、得られたGPTエントリからの共有属性情報156に示されているかどうかを判定する。そうである場合、ステップ176で再び、メモリアクセス要求は、キャッシュ24又はインターコネクト8に渡されることが許可される。共有属性情報は、GPTエントリ150内の一意のビット(又はビットのセット)として符号化することができる、又は同じフィールドの他の符号化が他の情報を示し得るGPTエントリ150のフィールドの1つ以上の符号化として符号化することができる。ステップ178で、共有属性が、割り当てられたPAS以外の出力PASがPAにアクセスすることが許可されていると判定された場合、ステップ176で、キャッシュ24又はインターコネクト8に渡されたメモリアクセス要求で指定されたPASは、出力PASではなく割り当てられたPASである。PASフィルタ20は、メモリアクセス要求によって指定されたPASを、割り当てられたPASに一致するように変形させ、その結果、下流メモリシステム構成要素は、割り当てられたPASを指定して発行された要求と同じように扱う。
出力PASが、特定の物理アドレスにアクセスすることが許可されているとして共有属性情報156に示されていない場合(又は代替的に、共有属性情報156がサポートされない実装においては、ステップ178はスキップされる)、ステップ180で、ターゲット物理アドレスに対して得られたGPTエントリ内のパススルーインジケータ158が、リクエスタ側PASフィルタ20で実行されたチェックに関係なく、メモリアクセス要求がキャッシュ24又はインターコネクト8にパススルーされ得ることを識別するかどうかが判定され、パススルーインジケータが指定されている場合、ステップ176で、(出力PASをメモリアクセス要求に関連付けられたPASとして指定して)メモリアクセス要求を再び進めることができる。あるいは、ステップ174、178、及び180におけるいずれのチェックも、メモリアクセス要求が許可されていることを識別しない場合、ステップ182で、メモリアクセス要求はブロックされる。したがって、メモリアクセス要求は、キャッシュ24又はインターコネクト8に渡されず、不具合がシグナリングされて、不具合に対処するための例外処理がトリガされ得る。
ステップ174、178、180は図10に順々に示されているが、これらのステップはまた、所望される場合、並列して又は異なる順序で実施され得る。また、ステップ178及び180は必須ではなく、いくつかの実装態様は、共有属性情報156及び/又はパススルーインジケータ158の使用をサポートしない場合があることを理解されたい。
図11は、アドレス変換回路16及びPASフィルタの動作を要約する。PASフィルタリング20は、アドレス変換回路によって実行される、ステージ1(及び任意選択でステージ2)のアドレス変換後に実行される追加のステージ3のチェックとみなすことができる。また、EL3変換は、2ビットのアドレスに基づく(図11の実施例ではNS、NSEとラベル付けされた)選択情報を提供するページテーブルエントリに基づいており、一方、単一ビットの選択情報「NS」は、他の状態のPASを選択するために使用されることにも留意されたい。グラニュール保護チェックへの入力として図11に示すセキュリティ状態は、処理要素4の現在の領域を識別する領域IDを指す。
図12は、特定の物理アドレスに関連付けられたGPTエントリに依存する任意のルックアップキャッシュエントリの無効化をトリガするために、ルート領域82で動作するモニタコード29によって使用され得るステージ3ルックアップキャッシュ無効化命令の処理を示すフロー図である。これは、所与のシステムPAがどの物理アドレス空間に割り当てられているかの配分をルート領域が変更しているときに有用であり得て、任意のルックアップキャッシュ22が古くなった情報を保持しないようにする。
したがって、ステップ200で、所与の処理要素(リクエスタデバイス)4内の処理回路10は、ステージ3のルックアップキャッシュ無効化命令を実行することができる。命令は、物理アドレスを指定する。
ステップ202では、ステージ3ルックアップキャッシュ無効化命令に応答して、処理回路10は、現在の例外レベルがEL3であるかどうかをチェックし、そうでない場合、ステップ204で、命令を拒絶するかつ/又は(非定義の命令例外などの)例外をシグナリングすることができる。これは、ステージ3のルックアップキャッシュ無効化命令の実行をルート領域に関連付けられたモニタコード29に限定することにより、悪意のある当事者が他の例外レベルによってトリガされたとしてルックアップキャッシュ22からのグラニュール保護情報の無効化を強制することにより、パフォーマンス低下をトリガすることを防止する。
現在の例外レベルがEL3である場合、ステップ206で、ステップ200で実行された命令に応答して、処理要素は、命令によって識別された物理アドレスと関連付けられたグラニュール保護テーブルエントリに応じて情報を含むことができる任意のルックアップキャッシュ18、22に送信される少なくとも1つのルックアップキャッシュ無効化コマンドを発行する。これらのキャッシュは、図1に示すようなグラニュール保護情報キャッシュ22だけでなく、いくつかの実装では、ページテーブル構造及びGPTからの情報を単一のエントリに組み合わせた、組み合わされたTLB/グラニュール保護キャッシュを含むことができる。そのような組み合わせられたTLB/GPTキャッシュについては、組み合わされたキャッシュは、仮想アドレスと物理アドレスとの両方によってルックアップされる能力を必要とし得る。
ステップ208では、発行されたコマンドに応答して、GPTキャッシュ22又は組み合わされたTLB/GPTキャッシュが、ルックアップキャッシュ無効化コマンドによって指定された物理アドレスに対応する物理アドレスのグラニュールと関連付けられたGPTエントリからのグラニュール保護情報に依存する任意のエントリを無効化する。
メモリシステム内のキャッシュは、エントリに、PoPA前に位置するキャッシュに対して関連付けられたPASの識別をタグ付けし得るため、ルート領域コード29が、GPT56を更新することによって、どのPASが物理アドレスの特定のグラニュールに関連付けられているかを変更した場合でも、物理アドレスのそのグラニュールに対して誤ったPASがタグ付けされたPoPA前キャッシュにキャッシュされたデータがなお存在し得る。GPT更新後に発行される後続のアクセスが、これらの要求を発行する領域がもはやアクセスできるべきでないキャッシュエントリをヒットするのを防止するため、特定の物理アドレスに関連付けられた任意のキャッシュエントリがPoPA60前の任意のキャッシュにおいて無効化されることを確実にする命令を提供することが有用であり得る。この命令は、コヒーレンシポイント前のキャッシュ又は特定の処理要素にローカルであるキャッシュなど、メモリシステムの異なるサブセット内のキャッシュに作用し得る他のタイプのキャッシュ無効化命令とは異なる命令であり得る。したがって、処理回路は、システム内のキャッシュによって無効化が観察され、その範囲がメモリシステムのPoPA上流部分に対応する範囲に関して区別されるPoPAまでのキャッシュ無効化命令をサポートすることができる。すなわち、この命令については、PoPAがキャッシュによる無効化が守られるべき範囲の境界である。
図13は、PoPAまでのキャッシュ無効化命令の処理を示すフロー図である。ステップ220で、PoPAまでのキャッシュ無効化命令が所与のリクエスタデバイス4の処理回路10によって実行される。命令は仮想アドレスを指定し、ステップ222でこの仮想アドレスは物理アドレスにマッピングされる。しかしながら、いくつかの場合では、図12に示す命令と同様に、PoPAまで無効化されたキャッシュに対する命令の実行はEL3内での実行に制限され得る。ステップ224では、命令を実行した処理要素は、物理アドレスを指定した無効化コマンドを発行し、これらのコマンドはシステム内の任意のPoPA前キャッシュ24に送信される。これは、リクエスタデバイス4内だけでなく、インターコネクト8内又は他のリクエスタデバイス4若しくは別個の物理アドレス空間61がアドレス指定されたメモリの場所の別の範囲として扱われる点に位置する他のメモリシステム構成要素内のPoPA上流のキャッシュを含み得る。
PoPAまでのキャッシュ無効化命令は、いくつかの場合では、指定されたPAと関連付けられたデータがPoPA前キャッシュから無効化されることを要求するだけでなく、無効化の前に、任意のダーティデータをPoPA60を超える場所に書き戻すことによってデータが削除されることもまた要求する、「削除して無効化」の形式の命令であり得る。したがって、ステップ226では、命令が削除して無効化の形式の命令である場合、コマンドを受信するPoPA前キャッシュは、指定された物理アドレスに関連付けられた任意のエントリからのダーティデータの書き戻しをトリガする。このデータは、PoPAを超えたキャッシュ又はメインメモリに書き込まれ得る。命令が削除して無効化の形式の命令でない場合、又は削除して無効化の形式の命令がサポートされていない場合、ステップ226を省略することができ、方法は、ステップ226が実行される場合にも実行されるであろうステップ228に直接進むことができる。ステップ228では、ステップ224でコマンドを受信するPoPA前キャッシュが、指定された物理アドレスと関連付けられたエントリを無効化する。指定された物理アドレスに関連付けられたキャッシュエントリは、どのPASタグがそれらのエントリと関連付けられているかに関係なく、無効化される。
したがって、PoPAまでのキャッシュ無効化命令を使用して、GPTの更新後に、キャッシュが所与の物理アドレスに関連付けられたエントリに誤ったPAS識別子をタグ付けし続けないことを確実にすることができる。
図14は、上述の技術のいくつかを実装することができるデータ処理システムのより詳細な例を示す。以前の実施例と同じである要素は、同じ参照番号で示されている。図14の例では、処理回路10、アドレス変換回路16、TLB18、及びPASフィルタ20に加えて、キャッシュ24が、レベル1命令キャッシュ、レベル1データキャッシュ、レベル2キャッシュ、及び任意選択で処理要素間で共有される共有レベル3キャッシュ24を含めて、より詳細に示されている点で、処理要素4をより詳細に示している。割り込みコントローラ300は、それぞれの処理要素による割り込みの処理を制御することができる。
図14に示すように、メモリへのアクセスをトリガするためのプログラム命令を実行することができる処理要素4は、リクエスタ側PASフィルタ20を備え得る唯一のタイプの要求元デバイスではない。他の例では、(ネットワークインターフェースコントローラ若しくはディスプレイコントローラなどのオンチップデバイス312、又はバスを介してシステムと通信し得るオフチップデバイス314など、それら自体のアドレス変換機能をサポートしない要求元デバイス312、314のためにアドレス変換機能を提供するために提供される)システムMMU310は、処理要素4内のPASフィルタ20に対するのと同様に、GPTエントリのリクエスタ側チェックを実行するためにPASフィルタ20を備え得る。他の要求元デバイスは、デバッグアクセスポート316及び制御プロセッサ318を含むことができ、これらもまた、それらに関連付けられたPASフィルタ20をも有し得て、それによって、GPT56で定義されたPASの割り当ての下で、要求元デバイス316、318によって特定の物理アドレス空間に発行されたメモリアクセスが許可されるかどうかをチェックし得る。
インターコネクト8は、コヒーレントインターコネクト8として図14により詳細に示されており、ルーティングファブリック320に加えて、それぞれの処理要素内のキャッシュ24間のコヒーレンシを管理するためのスヌープフィルタ322と、要求元デバイス間で共有される共有データのキャッシュを実行し得る1つ以上のシステムキャッシュ324をも含む。スヌープフィルタ322及びシステムキャッシュ324は、PoPA60の上流に位置することができ、したがって、特定のマスターに対してMMU16、310によって選択されたPAS識別子を使用して、それらのエントリをタグ付けすることができる。MMUに関連付けられていない要求元デバイス316、318は、デフォルトで、常に、非セキュア領域(又はそれらが信頼できる場合、ルート領域)などの特定の領域を要求することを発行することが想定され得る。
図14は、あたかもそれらが異なるアドレスの場所を指しているかのように、それぞれのPAS内の物理アドレス別名化を扱うPoPA前構成要素の別の例として、インターコネクト8と、オフチップメモリ340へのアクセスを制御するための所与のメモリコントローラ6との間に提供されるメモリ保護エンジン(MPE)330を示す。MPE330は、オフチップメモリ340に書き込まれたデータを暗号化して、機密性を保持し、読み取るときにデータを復号化することを担うことができる。また、MPEは、データをメモリに書き込むときに完全性メタデータを生成し、データがオフチップメモリから読み取られたときにメタデータを使用してデータが変化したかどうかを検証することによって、オフチップメモリに記憶されたデータの改ざんを防ぐことができる。データを暗号化するか、又はメモリ完全性のハッシュを生成するとき、たとえオフチップメモリ340内の同じ場所に実際に対応する別名化物理アドレスにアクセスする場合でも、どの物理アドレス空間がアクセスされているかに応じて、異なるキーを使用することができる。これは、異なる動作領域に関連付けられたデータを更に隔離することによって、セキュリティを改善する。
この例では、PoPA60はメモリ保護エンジン330とメモリコントローラ6との間にあるため、要求がメモリコントローラ6に到達するときには、物理アドレスは、それらがアクセスされた物理アドレス空間によっては、メモリ340内の異なる物理的位置へマッピングされるものとしてもはや扱われない。
図14は、周辺機器350又はオンチップメモリ360の区域(例えば、静的ランダムアクセスメモリ(SRAM)として実装される)と通信するために使用される周辺バス又は非コヒーレントインターコネクトであり得るコンプリータデバイス6の別の例を示す。また、周辺バス又は非コヒーレントインターコネクト6を使用して、暗号化処理を実行する暗号化ユニット、ランダム数生成器372、又は静的にハードウェアに組み込まれた情報を記憶する特定のヒューズ374などのセキュアエレメント370と通信することができる。また、様々な電力/リセット/デバッグコントローラ380が、周辺バス又は非コヒーレントインターコネクト6を介してアクセス可能であり得る。
オンチップSRAM360については、スレーブ側(コンプリータ側)のPASフィルタ400を提供することが有用である場合があり得る。PASフィルタ400は、メモリアクセスのコンプリータ側フィルタリングを、どの物理アドレス空間が物理アドレスの所与のブロックにアクセス可能かを定義するコンプリータ側保護情報に基づいて実行することができる。このコンプリータ側情報は、リクエスタ側PASフィルタ20によって使用されるGPTよりも粗く定義され得る。例えば、スレーブ側情報は、SRAMユニット361全体がレルム領域による使用専用であり得る、別のSRAMユニット362がルート領域による使用専用であり得る、など、他の領域についても単純に示し得る。したがって、比較的粗く定義された物理アドレスのブロックが異なるSRAMユニットに宛てられ得る。このコンプリータ側保護情報は、実行中には変更することができない起動時のコンプリータ側PASフィルタに対する情報内のブートローダーコードのローディングによって静的に定義することができる。そのため、リクエスタ側PASフィルタ20によって使用されるGPTほどフレキシブルではない。しかしながら、物理アドレスの各領域にアクセス可能な特定の区域への分割が起動時において既知であり、変更されることなくきめ細かい分割を要しない使用事例については、リクエスタ側のPASフィルタ20の代わりにスレーブ側PASフィルタ400を使用することがより効率的であり得る。これは、GPTエントリを取得し、割り当てられたPAS及び共有属性情報を現在のメモリアクセス要求のための情報と比較することの電力及びパフォーマンスコストをリクエスタ側で排除し得るためである。また、パススルーインジケータ158を、マルチレベルGPT構造における最上位レベルGPTエントリ(又は最終レベル以外のレベルでの他のテーブル記述子エントリ)に示すことができる場合、(リクエスタ側チェックを受ける要求に対して、割り当てられたPASに関するよりきめ細かい情報を見出すために実行され得る)GPT構造の更なるレベルへのアクセスを、コンプリータ側PASフィルタ400によって監視されるオンチップメモリ360にマッピングされた物理アドレスの区域のうちの1つをターゲットとする要求について、回避することができる。
したがって、保護情報のリクエスタ側及びコンプリータ側の両方のチェックを可能にするハイブリッドな手法をサポートすることは、パフォーマンス及び電力効率に有用であり得る。システム設計者は、特定のメモリ区域についてどの手法を取るべきかを定義することができる。
図15は、使用され得るシミュレータ実装を示す。上記の実施形態は、当該技術をサポートする特有の処理ハードウェアを動作させる装置及び方法の点において本発明を実装するが、コンピュータプログラムを使用して実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、シミュレータプログラム410をサポートするホストオペレーティングシステム420を任意選択で実行して、ホストプロセッサ430で実行し得る。いくつかの構成では、ハードウェアと提供された命令実行環境との間に複数の層のシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供された複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行するシミュレータ実装を提供するために必要とされてきたが、そのような手法は、ある状況において、例えば、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるときに、正当化され得る。例えば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供してもよく、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬 USENIX Conference、53~63頁に記載されている。
これまで、特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、適切なソフトウェア構成又は機能によって同等の機能を提供することができる。例えば、特定の回路は、シミュレーションされた実施形態において、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態でソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ430)に存在する構成では、いくつかのシミュレーションされた実施形態は、適する場合、ホストハードウェアを使用してもよい。
シミュレータプログラム410は、(非一時的媒体であってもよい)コンピュータ読み取り可能な記憶媒体に記憶されてもよく、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)ターゲットコード400に対するプログラムインタフェース(命令実行環境)を提供し、シミュレータプログラム410によってモデル化されたハードウェアアーキテクチャのインタフェースと同じである。したがって、ターゲットコード400のプログラム命令は、シミュレータプログラム410を使用して命令実行環境内から実行されてもよく、このため、前述の装置2のハードウェア特徴を実際には有しないホストコンピュータ430は、これらの特徴をエミュレートすることができる。これは、例えば、新しいバージョンのプロセッサアーキテクチャのために開発されているターゲットコード400の試験を、実際にそのアーキテクチャをサポートするハードウェアデバイスが利用可能となる前に、可能にするために有用であり得る。ターゲットコードは、そのアーキテクチャをサポートしないホストデバイス上で実行されるシミュレータ内で実行されることによって試験され得るからである。
シミュレータコードは、例えば、ターゲットコード400の命令をデコードする命令復号化プログラムロジックを含む、処理回路10の挙動をエミュレートし、命令を、ホストハードウェア430によってサポートされたネイティブ命令セット内の対応する命令のシーケンスにマッピングして、復号化された命令に相当する機能を実行する、処理プログラムロジック412を含む。処理プログラムロジック412はまた、上述のように、異なる例外レベル及び領域におけるコードの処理をシミュレートする。レジスタエミュレートプログラムロジック413は、ターゲットコード400に関連付けられたターゲット命令セットアーキテクチャに従って定義されたアーキテクチャ上のレジスタ状態をエミュレートする、ホストプロセッサのホストアドレス空間内のデータ構造を維持する。したがって、そのようなアーキテクチャ上の状態が図1の実施例のようにハードウェアレジスタ12に記憶されるのでなく、代わりに、ホストプロセッサ430のメモリに記憶され、レジスタエミュレートプログラムロジック413は、ターゲットコード400の命令のレジスタ参照を、ホストメモリからシミュレートされたアーキテクチャ上の状態データを取得するための対応するアドレスにマッピングする。このアーキテクチャ上の状態は、前述の現在の領域指示14及び現在の例外レベル指示15を含み得る。
シミュレーションコードは、前述のように同じページテーブル構造及びGPT56を参照して、アドレス変換回路16及びPASフィルタ20の機能をそれぞれエミュレートするアドレス変換プログラムロジック414及びフィルタリングプログラムロジック416を含む。したがって、アドレス変換プログラムロジック414は、ターゲットコード400によって指定された仮想アドレスをPASのうちの1つの中の(ターゲットコードの視点からメモリ内の物理的な場所を指す)シミュレートされた物理アドレスに変換するが、実際にこれらのシミュレートされた物理アドレスは、アドレス空間マッピングプログラムロジック415によってホストプロセッサの(仮想)アドレス空間上にマッピングされる。フィルタリングプログラムロジック416は、上述のPASフィルタと同様に、ターゲットコードによってトリガされたメモリアクセスを進めることを可能とするかどうかを判定するために、グラニュール保護情報のルックアップを実行する。
更なる実施例は、以下の条項に記載されている。
(1)少なくとも3つの領域のうちの1つで処理を実行するための処理回路と、現在の領域から実行されるメモリアクセスの仮想アドレスを、少なくとも現在の領域に基づいて選択された複数の物理アドレス空間のうちの1つの中の物理アドレスに変換するためのアドレス変換回路と、を備える装置であって、少なくとも3つの領域が、少なくとも3つの領域のうちの複数の他の領域との間の切り替えを管理するためのルート領域を含み、複数の物理アドレス空間が、複数の他の領域と関連付けられた物理アドレス空間とは別の、ルート領域に関連付けられたルート物理アドレス空間を含む、装置。
(2)ルート物理アドレス空間が、ルート領域から排他的にアクセス可能である、条項(1)に記載の装置。
(3)複数の物理アドレス空間のすべてが、ルート領域からアクセス可能である、条項(1)及び(2)のいずれかに記載の装置。
(4)複数の他の領域が、少なくとも、セキュア物理アドレス空間に関連付けられたセキュア領域と、よりセキュアでない物理アドレス空間と関連付けられたよりセキュアでない領域と、を含み、よりセキュアでない物理アドレス空間は、よりセキュアでない領域、セキュア領域、及びルート領域からアクセス可能であり、セキュア物理アドレス空間は、セキュア領域及びルート領域からアクセス可能であり、かつよりセキュアでない領域からアクセス不可能である、条項(1)~(3)のいずれかに記載の装置。
(5)複数の他の領域が、更なる物理アドレス空間に関連付けられた更なる領域をも含み、よりセキュアでない物理アドレス空間は更なる領域からもアクセス可能であり、更なる物理アドレス空間は更なる領域及びルート領域からアクセス可能であり、かつよりセキュアでない領域からはアクセス不可能である、条項(4)に記載の装置。
(6)更なる物理アドレス空間はセキュア領域からアクセス不可能であり、セキュア物理アドレス空間は更なる領域からアクセス不可能である、条項(5)に記載の装置。
(7)よりセキュアでない物理アドレス空間は少なくとも3つの領域のすべてからアクセス可能である、条項(4)~(6)のいずれかに記載の装置。
(8)アドレス変換回路が、少なくとも1つのページテーブルエントリに基づいて仮想アドレスを物理アドレスに変換するように構成されており、少なくとも現在の領域が少なくとも3つの領域のサブセットのうちの1つである場合、アドレス変換回路が、現在の領域と少なくとも1つのページテーブルエントリで指定された物理アドレス空間選択情報とに基づいて、複数の物理アドレス空間のうちの1つを選択するように構成されている、条項(1)~(7)のいずれかに記載の装置。
(9)現在の領域がルート領域であるとき、アドレス変換回路は、ルート領域からアクセス可能な少なくとも3つの物理アドレス空間の間で選択するための物理アドレス空間選択情報が少なくとも2ビットの物理アドレス空間選択情報を含むルート領域のページテーブルエントリに基づいて、仮想アドレスを物理アドレスに変換するように構成されている、条項(8)に記載の装置。
(10)アドレス変換回路が、少なくとも1つのページテーブルエントリに基づいて、仮想アドレスを物理アドレスに変換するように構成されており、現在の領域がセキュア領域であるとき、アドレス変換回路は、少なくとも1つのページテーブルエントリ内で指定された物理アドレス空間選択インジケータに基づいて、複数の物理アドレス空間のうちの1つがセキュア物理アドレス空間であるか、それともよりセキュアでない物理アドレス空間であるかを選択するように構成され、現在の領域が更なる領域であるとき、アドレス変換回路は、少なくとも1つのページテーブルエントリ内で指定された物理アドレス空間選択インジケータに基づいて、複数の物理アドレス空間のうちの1つが更なる物理アドレス空間であるか、それともよりセキュアでない物理アドレス空間であるかを選択するように構成されている、条項(6)に記載の装置。
(11)物理アドレス空間選択インジケータが、現在の領域がセキュア領域であるか、それとも更なる領域であるかに関係なく、少なくとも1つのページテーブルエントリ内の同じ位置で符号化されている、条項(10)に記載の装置。
(12)物理的別名化(physical aliasing)ポイント(PoPA)の上流に設けられ、同じメモリシステムリソースに対応する異なる物理アドレス空間からの別名化物理アドレスを、あたかも別名化物理アドレスが異なるメモリシステムリソースに対応するかのように扱うための、少なくとも1つのPoPA前メモリシステム構成要素を備える、条項(1)~(11)のいずれかに記載の装置。
(13)別名化物理アドレスが、異なる物理アドレス空間内の同じ物理アドレス値を使用して表される物理アドレスを含む、条項(12)に記載の装置。
(14)少なくとも1つの下流メモリシステム構成要素に提供されるべき非別名化された物理アドレスを取得するために、複数の別名化物理アドレスを非別名化するように構成されたPoPAメモリシステム構成要素を備える、条項(12)及び(13)のいずれかに記載の装置。
(15)少なくとも1つのPoPA前メモリシステム構成要素が少なくとも1つのPoPA前キャッシュを含み、ターゲットアドレスを指定したPoPAまでのキャッシュ無効化命令に応答して、処理回路は、少なくとも1つの無効化コマンドを発行し、それにより当該少なくとも1つのPoPA前キャッシュが、ターゲットアドレスに対応するターゲット物理アドレス値と関連付けられた1つ以上のエントリを無効化することを要求するように構成されている、条項(12)~(14)のいずれかに記載の装置。
(16)処理回路が、少なくとも1つの無効化コマンドを発行するとき、PoPAの下流に位置する少なくとも1つのPoPA後キャッシュが、ターゲット物理アドレス値と関連付けられた1つ以上のエントリを保持することが可能とされる、条項(15)に記載の装置。
(17)少なくとも1つの無効化コマンドに応答して、複数の物理アドレス空間のうちのどれが1つ以上のエントリと関連付けられているかに関係なく、少なくとも1つのPoPA前キャッシュが、ターゲット物理アドレス値に関連付けられた1つ以上のエントリを無効化するように構成されている、条項(15)及び(16)のいずれかに記載の装置。
(18)メモリ暗号化回路であって、メモリアクセス要求が、選択された物理アドレス空間と、選択された物理アドレス空間内のターゲット物理アドレスとを指定したことに応答して、ターゲット物理アドレスが保護されたアドレス区域内にあるとき、選択された物理アドレス空間に応じて選択された複数の暗号化鍵のうちの1つに基づいて、保護された区域に関連付けられたデータを暗号化又は復号化する、メモリ暗号化回路を備える、条項(1)~(17)のいずれか一項に記載の装置。
(19)少なくとも3つの領域のうちの1つで処理を実行することと、現在の領域から実行されるメモリアクセスの仮想アドレスを、少なくとも現在の領域に基づいて選択された複数の物理アドレス空間のうちの1つの中の物理アドレスに変換することと、を含む、データ処理方法であって、少なくとも3つの領域は、少なくとも3つの領域のうちの複数の他の領域との間の切り替えを管理するためのルート領域を含み、複数の物理アドレス空間は、複数の他の領域と関連付けられた物理アドレス空間とは別の、ルート領域に関連付けられたルート物理アドレス空間を含む、データ処理方法。
(20)ターゲットコードを実行するための命令実行環境を提供するホストデータ処理装置を制御するコンピュータプログラムであって、コンピュータプログラムが、少なくとも3つの領域のうちの1つでターゲットコードの処理をシミュレートするための処理プログラムロジックと、現在の領域から実行されるメモリアクセスの仮想アドレスを、少なくとも現在の領域に基づいて選択された複数のシミュレートされた物理アドレス空間のうちの1つの中の物理アドレスに変換するためのアドレス変換プログラムロジックと、を備え、少なくとも3つの領域が、少なくとも3つの領域のうちの複数の他の領域との間の切り替えを管理するためのルート領域を含み、複数のシミュレートされた物理アドレス空間が、複数の他の領域と関連付けられたシミュレートされた物理アドレス空間とは別の、ルート領域と関連付けられたシミュレートされたルート物理アドレス空間を含む、コンピュータプログラム。
(21)条項(20)に記載のコンピュータプログラムを記憶する、コンピュータ可読記憶媒体。
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの正確な実施形態に限定されないこと、及び様々な変更及び修正が、当業者によって、添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、実施形態に行われ得ることが理解されよう。