(57)【特許請求の範囲】
【請求項１】
データ処理装置であって、
処理回路上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行する処理回路と、
処理回路によるアクセスのためのデータを記憶するメモリ・システムであって、セキュア・データを記憶するセキュア・メモリとノン・セキュア・データを記憶するノン・セキュア・メモリとを含み、セキュア・メモリは、セキュア・アクセス要求を介してのみアクセス可能であるメモリ・システムと、
処理回路上で実行される現行の仮想機械によって発行された仮想アドレスを指定するアクセスに応答して、現行の仮想機械によってアクセスしようとするデータを含む前記メモリ・システム内の物理アドレスを識別するために、また物理アドレスを指定する修正されたアクセス要求をメモリ・システムに対して発行させるためにアドレス変換プロセスを実行するアドレス変換回路と、
ハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する記憶装置であって、ハイパーバイザ・ソフトウエアは、現行の仮想機械がセキュア・メモリへのアクセスに関して信頼できるものである場合に、トラステッド仮想機械識別子をセットするようにアレンジされている記憶装置と、
を含み、
処理回路は、ハイパーバイザ・ソフトウエアを実行するときにセキュア・ドメイン内で実行し、複数の仮想機械のうち任意の仮想機械を実行するときにノン・セキュア・ドメイン内で実行するように構成され、セキュア・メモリはセキュア・ドメインからアクセス可能であり、デフォルト設定においてはセキュア・メモリはノン・セキュア・ドメインからはアクセスできず、
現行の仮想機械によって発行されたアクセス要求に応答して、アドレス変換回路は、トラステッド仮想機械識別子がセットされていない場合に、修正されたアクセス要求がノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求として発行されるようにデフォルト設定を維持し、トラステッド仮想機械識別子がセットされている場合に、修正されたアクセス要求が、処理回路がノン・セキュア・ドメイン内で実行を継続しつつ、セキュア・メモリ内の物理アドレスを指定することができるセキュア・アクセス要求として発行され、デフォルト設定に打ち勝つように構成されている、
データ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、アドレス変換回路は、第１ステージのページ・テーブルに依存した仮想アドレスから中間アドレスへの変換と、第２ステージのページ・テーブルに依存した中間アドレスから物理アドレスへの変換を実行することによってアドレス変換を実行するようにアレンジされており、少なくとも第２ステージのページ・テーブルがハイパーバイザ・ソフトウエアによって管理される前記データ処理装置。
【請求項３】
請求項２記載のデータ処理装置であって、第１ステージのページ・テーブルが現行の仮想機械によって管理される前記データ処理装置。
【請求項４】
請求項２記載のデータ処理装置であって、更に
第１ステージのページ・テーブルおよび第２ステージのページ・テーブルを識別するページ・テーブル識別子記憶装置を含み、
トラステッド仮想機械識別子がセットされている場合、ページ・テーブル識別子記憶装置は、ノン・セキュアな第２ステージのページ・テーブルおよびセキュアな第２ステージのページ・テーブルを識別するようにアレンジされており、
現行の仮想機械によって発行されたアクセス要求に応答してアドレス変換を実行するとき、アドレス変換回路は、指定された仮想アドレスを使用して、対応する中間アドレスを生成するために必要な情報を提供する第１ステージのページ・テーブルの記述子にアクセスし、また記述子は、更に第１ステージのセキュリティ値を提供しており、
トラステッド仮想機械識別子がセットされている場合、中間アドレスから物理アドレスへの変換を実行するときに、第１ステージのセキュリティ値を使用して、ノン・セキュアな第２ステージのページ・テーブルとセキュアな第２ステージのページ・テーブルのどちらを使用するかが決定される、
前記データ処理装置。
【請求項５】
請求項４記載のデータ処理装置であって、トラステッド仮想機械識別子がセットされていない場合、中間アドレスから物理アドレスへの変換を実行するときに、第１ステージのセキュリティ値に関わらず、ノン・セキュアな第２ステージのページ・テーブルが使用され、またアドレス変換回路は、修正されたアクセス要求として、ノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求を発行させる前記データ処理装置。
【請求項６】
請求項４記載のデータ処理装置であって、
中間アドレスから物理アドレスへの変換を実行するときにセキュアな第２ステージのページ・テーブルが使用される場合、アドレス変換回路は、生成された中間アドレスを使用して、対応する物理アドレスを生成するために必要な情報を提供するセキュアな第２ステージのページ・テーブルの記述子にアクセスし、記述子は、更に第２ステージのセキュリティ値を提供しており、
対応する物理アドレスとして、セキュア・メモリ内の物理アドレス又はノン・セキュア・メモリ内の物理アドレスのいずれをアドレス変換回路が発生するかを決定するために第２ステージのセキュリティ値が使用され、
これによって、アドレス変換回路は、トラステッド仮想機械識別子がセットされている場合、修正されたアクセス要求として、セキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行させ、第１ステージのセキュリティ値は、中間アドレスから物理アドレスへの変換を実行するときに、セキュアな第２ステージのページ・テーブルを使用させ、また第２ステージのセキュリティ値は、対応する物理アドレスとして、セキュア・メモリ内の物理アドレスをアドレス変換回路に発生させる、
前記データ処理装置。
【請求項７】
請求項２記載のデータ処理装置であって、
現行の仮想機械によって発行されたアクセス要求に応答してアドレス変換を実行するとき、アドレス変換回路は、指定された仮想アドレスを使用して、対応する中間アドレスを生成するために必要な情報を提供する第１ステージのページ・テーブルの記述子にアクセスし、記述子は、更に第１ステージのセキュリティ値を提供しており、アドレス変換回路は、更に生成された中間アドレスを使用して、対応する物理アドレスを生成するために必要な情報を提供する第２ステージのページ・テーブルの記述子にアクセスし、記述子は、更に第２ステージのセキュリティ値を提供しており、
トラステッド仮想機械識別子がセットされている場合、第１ステージのセキュリティ値と第２ステージのセキュリティ値が両方ともそのアクセスをセキュアであると識別していれば、アドレス変換回路は、修正されたアクセス要求として、セキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行させる、
前記データ処理装置。
【請求項８】
請求項７記載のデータ処理装置であって、トラステッド仮想機械識別子がセットされている場合、第１ステージのセキュリティ値と第２ステージのセキュリティ値が両方ともそのアクセスをノン・セキュアであると識別していれば、アドレス変換回路は、修正されたアクセス要求として、ノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求を発行させる前記データ処理装置。
【請求項９】
請求項７記載のデータ処理装置であって、トラステッド仮想機械識別子がセットされている場合、第１ステージのセキュリティ値と第２ステージのセキュリティ値とが異なっていれば、アドレス変換回路は、そのアクセス要求を中止させる前記データ処理装置。
【請求項１０】
請求項７記載のデータ処理装置であって、トラステッド仮想機械識別子がセットされていない場合、アドレス変換回路は、第１ステージのセキュリティ値および第２ステージのセキュリティ値の如何に関わらず、修正されたアクセス要求として、ノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求を発行させる前記データ処理装置。
【請求項１１】
請求項１記載のデータ処理装置であって、セキュア・ドメインで実行中の処理回路によってアクセス要求が発行されると、アドレス変換回路は、指定された仮想アドレスを基に、ハイパーバイザ・ソフトウエアによって管理されるセキュア・ページ・テーブルに依存した仮想アドレスから物理アドレスへの変換を実行するようにアレンジされている前記データ処理装置。
【請求項１２】
処理回路上で実行される仮想機械によるセキュア・メモリへのアクセスを制御する方法であって、
処理回路は、処理回路上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行し、処理回路によるアクセスに関するデータを記憶するメモリ・システムが設けられ、メモリ・システムは、セキュア・データを記憶する前記セキュア・メモリとノン・セキュア・データを記憶するノン・セキュア・メモリとを含み、セキュア・メモリは、セキュア・アクセス要求を介してのみアクセス可能であり、前記方法は、
処理回路に、ハイパーバイザ・ソフトウエアを実行するときにセキュア・ドメイン内で実行させ、複数の仮想機械のうち任意の仮想機械を実行するときにノン・セキュア・ドメイン内で実行させる工程であって、セキュア・メモリはセキュア・ドメインからアクセス可能であり、デフォルト設定においてはセキュア・メモリはノン・セキュア・ドメインからはアクセスできないようにする工程と、
処理回路に対してアクセス可能な記憶装置に、ハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する工程であって、ハイパーバイザ・ソフトウエアは、現行の仮想機械がセキュア・メモリへのアクセスに関して信頼できるものである場合、トラステッド仮想機械識別子をセットするようになっている記憶工程と、
処理回路上で実行される現行の仮想機械によって発行された仮想アドレスを指定するアクセス要求に応答して、現行の仮想機械によってアクセスしようとするデータを含む前記メモリ内の物理アドレスを識別するためにアドレス変換を実行する工程であって、トラステッド仮想機械識別子がセットされていない場合には、修正されたアクセス要求がノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求として発行されるようにデフォルト設定を維持し、トラステッド仮想機械識別子がセットされている場合には、修正されたアクセス要求が、処理回路がノン・セキュア・ドメイン内で実行を継続しつつ、セキュア・メモリ内の物理アドレスを指定することができるセキュア・アクセス要求として発行され、デフォルト設定に打ち勝つようにアドレス変換を行う工程、
を含む方法。
【請求項１３】
データ処理装置であって、
処理手段上での複数の仮想機械の実行をサポートするためにハイパーバイザ・ソフトウエアを実行する処理手段と、
処理手段によるアクセスのためのデータを記憶するメモリ手段であって、セキュア・データを記憶するセキュア・メモリ手段とノン・セキュア・データを記憶するノン・セキュア・メモリ手段とを含み、セキュア・アクセス要求を介してのみアクセス可能であるメモリ手段と、
処理手段上で実行される現行の仮想機械によって発行された仮想アドレスを指定するアクセス要求に応答して、現行の仮想機械によってアクセスしようとするデータを含む前記メモリ手段内の物理アドレスを識別するためにアドレス変換を実行し、メモリ手段に対して、物理アドレスを指定する修正されたアクセス要求を発行させるアドレス変換手段と、
ハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する記憶手段であって、ハイパーバイザ・ソフトウエアは、セキュア・メモリ手段へのアクセスに関して現行の仮想機械が信頼できるものであれば、トラステッド仮想機械識別子をセットするようにアレンジされている記憶手段と、
を含み、
処理手段は、ハイパーバイザ・ソフトウエアを実行するときにセキュア・ドメイン内で実行し、複数の仮想機械のうち任意の仮想機械を実行するときにノン・セキュア・ドメイン内で実行するように構成され、セキュア・メモリ手段はセキュア・ドメインからアクセス可能であり、デフォルト設定においてはセキュア・メモリ手段はノン・セキュア・ドメインからはアクセスできず、
現行の仮想機械によって発行されたアクセス要求に応答して、アドレス変換手段は、トラステッド仮想機械識別子がセットされていない場合に、修正されたアクセス要求がノン・セキュア・メモリ手段内の物理アドレスを指定するノン・セキュア・アクセス要求として発行されるようにデフォルト設定を維持し、トラステッド仮想機械識別子がセットされている場合に、修正されたアクセス要求が、処理手段がノン・セキュア・ドメイン内で実行を継続しつつ、セキュア・メモリ手段内の物理アドレスを指定することができるセキュア・アクセス要求として発行され、デフォルト設定に打ち勝つように構成されている、
データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびデータ処理装置の処理回路上で実行される仮想機械によるセキュア（ｓｅｃｕｒｅ）・メモリへのアクセスを制御するための方法に関する。
【背景技術】
【０００２】
一般的な仮想化環境では、プロセッサ・コアなどの処理デバイスは、その処理デバイス上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行するようにアレンジされる。各仮想機械は、一般に特定のオペレーティング・システム上で走る１又は複数のアプリケーションを有し、ハイパーバイザ・ソフトウエアは、仮想機械をサポートする適切なハードウエアを提供する下層ハードウエアと仮想機械との間のインタフェース層として働く。各仮想機械は、ハイパーバイザ・ソフトウエア層を介して、それが駐在するシステムについて独自の視点（ｖｉｅｗ）を得ることができ、従ってシステムの利用可能リソースについても独自の視点を得ることができる。各仮想機械は、システム上の他の仮想機械から独立して動作し、実際、他の仮想機械の存在について気づく必要もない。
【０００３】
従って、例示システムのなかで、１つの仮想機械は、特定のオペレーティング・システム、例えばＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）を走らせるように実行され、他方、別の仮想機械は、別のオペレーティング・システム、例えばＬｉｎｕｘ（登録商標）を走らせるように実行される。
【０００４】
仮想化技術を使用する、しないに関わらず、１つのアプリケーションに付随するデータが、データ処理装置のデバイス上で走る別のアプリケーションによってアクセスされるべきでない機密データである例が多く存在する。そのような状況で、そのような機密データを安全な状態に保ち、データ処理装置上にロードされた別のアプリケーション、例えば、その機密データにアクセスしようとしてデータ処理装置にロードされた不法侵入アプリケーションによってアクセスできないように保証することが重要であることは、明らかである。
【０００５】
１つのアプリケーションの機密データがそのオペレーティング・システムの制御下で走る別のアプリケーションによってアクセスできないことを保証するのに十分な安全性をオペレーティング・システムが提供できるという保証は、伝統的にオペレーティング・システムの開発者の仕事であった。しかし、システムがより複雑になるにつれて、オペレーティング・システムがより大規模化および複雑化するのが一般的な傾向であり、そのような状況では、オペレーティング・システム自身の内部で十分な安全性を保証することは、ますます困難になっている。オペレーティング・システムの安全性に頼ることを和らげる目的で、データ処理装置を明瞭に分かれた２つのドメイン又はワールドに分割し、それぞれのドメインがハードウエア・レベルで安全性を管理する機構を提供するシステムが知られている。そのようなシステムについては、例えば、その内容を参照によってここに取り込む、共通に譲渡された同時係属の米国特許出願第１０／７１４，５６１号に述べられている。この出願は、セキュア・ドメインとノン・セキュア・ドメインとを有するシステムについて述べている。このシステムで、ノン・セキュア・ドメインおよびセキュア・ドメインは、事実上別々のワールドを設定し、セキュア・ドメインは、ハードウエアで強化された境界によって他の実行空間から分離されたトラステッド（ｔｒｕｓｔｅｄ，信用ある）実行空間を提供し、同様に、ノン・セキュア・ドメインは、ノン・トラステッド実行空間を提供している。
【０００６】
このようなセキュア・システムでは、メモリ・システムもセキュア・メモリとノン・セキュア・メモリとに分割されるのが一般的である。ノン・セキュア・ドメインで動作するどんなアプリケーションも、セキュア・メモリにアクセスできない。しかし、セキュア・ドメインにあれば、セキュア・メモリとノン・セキュア・メモリの両方にアクセスできるのが普通である。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許出願第１０／７１４，５６１号明細書
【特許文献２】米国特許第７，１７１，５３９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
先に述べた仮想化技術を採用したデータ処理装置に対してこのようなハードウエアをベースとする安全対策を組み込もうとする場合、処理回路は、ノン・セキュア・ドメインにおいて複数のノン・セキュア仮想機械を実行するようにアレンジされ、それぞれのノン・セキュア仮想機械がノン・セキュア・メモリ・アドレス空間についてのそれ自身の独自の視点を得ることができるようにされる。これに従い、処理回路は、ハイパーバイザ・ソフトウエアを実行するためにセキュア・ドメインに入ることができ、実際に、必要であればセキュア・ドメイン内のセキュア・オペレーティング・システムの制御下で１又は複数のセキュア・アプリケーションを実行できる。ハイパーバイザは、メモリ・システムにアクセスするための物理アドレスを発生させるために利用されるアドレス変換機構を制御することによって、複数のノン・セキュア仮想機械の分離を維持できる。これは、セキュア・ドメインから管理されるので、ノン・セキュア仮想機械は、このアドレス変換機構を修正できない。
【０００９】
また複数の仮想機械を提供するためにも、セキュア・ドメインの特権レベルよりも上位となる付加的特権レベルにおいてハイパーバイザが動作するようなシステムを実現して、各種のセキュア仮想機械に対するアドレス変換機構に対して、ノン・セキュア仮想機械のために使用されるのと同レベルの制御をハイパーバイザが行使できるようにする必要がある。しかし、このようなやり方は、セキュア・ドメインおよびノン・セキュア・ドメインをサポートするために既に設けられているものよりも上位の付加的な特権レベルを必要とし、レベルが更に複雑化することから、多くの実施の場で許容できないと考えられている。
【００１０】
しかし、上述のようにシステムを修正することなしに、複数のセキュア・オペレーティング・システムを仮想化すること、すなわち、セキュア・ドメインで複数の仮想機械を走らせることはできない。特に、セキュア・ドメインでは、ハイパーバイザ・ソフトウエアとセキュア・ドメインで実行される任意のその他のソフトウエアとの間に特権レベルの違いがないので、複数のセキュア仮想機械を確立できれば、ハイパーバイザ・ソフトウエアによって導入されたアドレス変換機構を１つのセキュア仮想機械が修正でき、そのプロセスによって、他の仮想機械の１つのセキュア・データへのアクセスを得ることができる。
【００１１】
従って、ハイパーバイザに対して付加的な特権レベルが与えられていないシステムで、任意の仮想機械は、ノン・セキュア・ドメインで実行するようにアレンジされなければならないが、結果としてセキュア・メモリへのアクセスはできない。
【００１２】
従って、ハイパーバイザ・ソフトウエアに対して付加的特権レベルを必要とせずに、ハイパーバイザ・ソフトウエアの制御下でセキュア・メモリにアクセス可能な複数の仮想機械を実行できる機構を提供することが望ましい。
【課題を解決するための手段】
【００１３】
第１の態様から見ると、本発明は、データ処理装置を提供し、それは、処理回路上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行する処理回路、処理回路によるアクセスのためのデータを記憶するメモリ・システムであって、セキュア・データを記憶するセキュア・メモリとノン・セキュア・データを記憶するノン・セキュア・メモリとを含み、セキュア・メモリがセキュア・アクセス要求によってのみアクセスできるメモリ・システム、処理回路上で実行される現行の（ｃｕｒｒｅｎｔ）仮想機械によって発行された仮想アドレスを指定するアクセス要求に応答して、現行の仮想機械によってアクセスしようとするデータを含む前記メモリ中の物理アドレスを識別するためにアドレス変換プロセスを実行し、またメモリ・システムに対して、物理アドレスを指定する修正されたアクセス要求を発行させるアドレス変換回路およびハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する記憶装置であって、ハイパーバイザ・ソフトウエアは、現行の仮想機械がセキュア・メモリへのアクセスに関して信頼されたものである場合に、トラステッド仮想機械識別子をセットするようにアレンジされた記憶装置を含み、アドレス変換回路は、トラステッド仮想機械識別子がセットされている場合にのみ、現行の仮想機械によって発行されたアクセス要求に応答して、修正されたアクセス要求として、セキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行させることができる。
【００１４】
本発明に従えば、ハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する記憶装置が設けられ、ハイパーバイザ・ソフトウエアは、処理回路上で実行される現行の仮想機械に依存して、トラステッド仮想機械識別子をセットし、現行の仮想機械が信頼されるか否かを区別する。次にアドレス変換回路は、アドレス変換プロセスを実行するときにトラステッド仮想機械識別子を参照して、トラステッド仮想機械識別子がセットされている場合にのみ、アクセス要求をセキュア・メモリ内の物理アドレスを指定するようにアドレス変換プロセスによって修正させることができる。
【００１５】
このように、本発明は、そのうちの少なくともいくつかがセキュア・メモリにアクセスできる複数の仮想機械をハイパーバイザ・ソフトウエアがサポートできるようにする。このことから、本発明は、同じ処理回路上に複数のトラステッド仮想機械が同時に存在することを許容する。
【００１６】
ハイパーバイザ・ソフトウエアは、一般にアドレス変換回路によって実行されるアドレス変換プロセスを制御するようにアレンジされており、従って、そのようなトラステッド仮想機械の各々をセキュア・メモリ空間のサブセットに制限することができ、それによって複数のトラステッド仮想機械の分離を確保する。
【００１７】
このことから、セキュア・ドメインとノン・セキュア・ドメインとを有するシステムの前述の例について考えると、すべての仮想機械をノン・セキュア・ドメインで実行できるが、セキュア・ドメイン上で実行されるハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を利用することによって、それらの仮想機械の特定のものがトラステッド仮想機械として認識され、それらがアドレス変換回路によってセキュア・メモリ・アドレス空間にマッピングされうるアクセス要求を発行することを許容される。
【００１８】
アドレス変換回路は、多様な形にアレンジできる。しかし、１つの実施の形態で、アドレス変換回路は、第１ステージのページ・テーブルに依存した仮想アドレスから中間アドレスへの変換を実行し、更に第２ステージのページ・テーブルに依存した中間アドレスから物理アドレスへの変換を実行することによってアドレス変換を実行するようにアレンジされる。少なくとも第２ステージのページ・テーブルは、ハイパーバイザ・ソフトウエアによって管理される。ハイパーバイザ・ソフトウエアが第２ステージのページ・テーブルを管理することを確実にすることで、ハイパーバイザ・ソフトウエアは、処理回路上で実行される各種仮想機械の分離を確保できる。１つの実施の形態で、第２ステージのページ・テーブルが各仮想機械について設けられる。同様に、第１ステージのページ・テーブルを仮想機械毎に指定することができ、実際にいくつかの実施の形態では、１つの特定の仮想機械内で走っている異なるアプリケーション毎に別々の第１ステージのページ・テーブルが設けられる。
【００１９】
第１ステージのページ・テーブルは、多様な形で管理できるが、１つの実施の形態で、第１ステージのページ・テーブルは、現行の仮想機械によって管理される。従って、現在実行中の仮想機械が、それ自身が所有する第１ステージのページ・テーブル（単数又は複数）を制御できるので、仮想アドレスをどのように中間アドレスにマッピングするかを管理できるが、ハイパーバイザ・ソフトウエアは、第２のページ・テーブルに依存した中間アドレスから物理アドレスへの変換を管理することによって、各仮想機械が物理メモリについての独自の視点を与えられることが保証される。
【００２０】
トラステッド仮想機械識別子を考慮するようにアドレス変換プロセスをアレンジする多くのやり方が存在する。１つの実施の形態で、データ処理装置は、更に第１ステージのページ・テーブルと第２ステージのページ・テーブルとを識別するページ・テーブル識別子記憶装置を含み、トラステッド仮想機械識別子がセットされている場合、ページ・テーブル識別子記憶装置は、ノン・セキュアな第２ステージのページ・テーブルとセキュアな第２ステージのページ・テーブルとを識別するようにアレンジされる。現行の仮想機械によって発行されたアクセス要求に応答してアドレス変換を実行するとき、アドレス変換回路は、指定された仮想アドレスを使用して、対応する中間アドレスを生成するために必要な情報を提供する第１ステージのページ・テーブルの記述子にアクセスする。記述子は、更に第１ステージのセキュリティ値（ｓｅｃｕｒｉｔｙ  ｖａｌｕｅ）も提供する。トラステッド仮想機械識別子がセットされている場合、中間アドレスから物理アドレスへの変換を実行するときに、第１ステージのセキュリティ値を使用して、ノン・セキュアな第２ステージのページ・テーブルとセキュアな第２ステージのページ・テーブルのいずれを使用するかが決定される。１つの実施の形態で、ノン・セキュアな第２ステージのページ・テーブルは、中間アドレスがノン・セキュア・メモリ内の物理アドレスにマッピングされることだけを許容し、他方、セキュアな第２ステージのページ・テーブルは、特定の条件下で中間アドレスがセキュア・メモリ内の物理アドレスにマッピングされることを付加的に許容する。
【００２１】
そのような実施の形態では、トラステッド仮想機械識別子がセットされて現行の仮想機械が信頼できる仮想機械として識別されていれば、第１ステージのページ・テーブルの関連する記述子から得られた第１ステージのセキュリティ値を使用して、中間アドレスから物理アドレスへの変換を実行するときにノン・セキュアな第２ステージのページ・テーブルとセキュアな第２ステージのページ・テーブルのいずれを使用するかが決定される。このように、現行の仮想機械は、それによる第１ステージのページ・テーブルの管理を通して、それが特定のアクセスをノン・セキュア・アクセス又はセキュア・アクセスのいずれとして取り扱われることを望むかを識別することができる。第１ステージのセキュリティ値によってアクセスがノン・セキュアであるとマークされた場合、ノン・セキュアな第２ステージのページ・テーブルを使用してアドレス変換の第２ステージが実行される。しかし、アクセスがセキュアであるとマークされ、トラステッド仮想機械識別子がセットされている場合は、セキュアな第２ステージのページ・テーブルを使用してアドレス変換の第２ステージが実行される。
【００２２】
注意すべきことは、第２ステージのページ・テーブルを、セキュア・メモリ（ハイパーバイザ・ソフトウエアがセキュア・メモリへのアクセスを有するので）又はノン・セキュア・メモリのいずれかに置くことができるということである。ハイパーバイザ・ソフトウエアがアドレス変換の第２ステージを管理するので、これらの第２ステージのページ・テーブルがノン・セキュア・メモリに置かれた場合でも、ハイパーバイザは、それらが仮想機械の任意のものによってアクセスできないことを保証できる。しかし、第２ステージのページ・テーブルをセキュア・メモリに置くほうが本質的により安全である。これは、そうすれば、１又は複数の仮想機械からそれらのテーブルへのアクセスを原理的に許容するマッピングのエントリにおいてエラーが発生したとしても、セキュア・メモリがセキュリティ状態にあれば、そのようなアクセスを防止できるからである。それにも拘わらず、セキュア・メモリは、しばしば比較的限られたリソースであるため、実際には、それらのページ・テーブルの場所の選択は、セキュリティの向上とスペースとの間のトレード・オフになる。
【００２３】
１つの実施の形態で、トラステッド仮想機械識別子がセットされていない場合、中間アドレスから物理アドレスへの変換を実行するとき、第１ステージのセキュリティ値に関わらず、ノン・セキュアな第２ステージのページ・テーブルが使用され、アドレス変換回路は、修正されたアクセス要求として、ノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求を発行させる。従って、トラステッド仮想機械識別子がセットされていなければ、第１ステージのセキュリティ値は、無視され、従って、セキュア・メモリへのいかなるアクセス機構もノン・トラステッド仮想機械へ提供されないことが保証される。
【００２４】
１つの実施の形態で、中間アドレスから物理アドレスへの変換を実行するときにセキュアな第２ステージのページ・テーブルが使用されると、アドレス変換回路は、生成された中間アドレスを使用して、対応する物理アドレスを生成するために必要な情報を提供するセキュアな第２ステージのページ・テーブルの記述子にアクセスする。記述子は、更に第２ステージのセキュリティ値も提供する。次に、第２ステージのセキュリティ値を使用して、対応する物理アドレスとして、セキュア・メモリ内の物理アドレスとノン・セキュア・メモリ内の物理アドレスのいずれをアドレス変換回路が発生させるかが決定される。このように、アドレス変換回路は、トラステッド仮想機械識別子がセットされていれば、修正されたアクセス要求として、セキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行させ、第１ステージのセキュリティ値は、中間アドレスから物理アドレスへの変換を実行するとき、セキュアな第２ステージのページ・テーブルが使用されるようにし、また第２ステージのセキュリティ値は、対応する物理アドレスとして、セキュア・メモリ内の物理アドレスをアドレス変換回路に発生させるようにする。
【００２５】
このやり方によれば、第１ステージのセキュリティ値と第２ステージのセキュリティ値が両方ともそのアクセスがセキュア・メモリへのものであることを示し、トラステッド仮想機械識別子がハイパーバイザ・ソフトウエアによってセットされている場合にのみ、実際にセキュア・メモリに対してアクセスが発生することが許容される。第１ステージのセキュリティ値又は第２ステージのセキュリティ値のいずれかがアクセスをノン・セキュアであるとマークした場合、そのアクセスは、代わりにノン・セキュアな物理アドレス空間のアドレスにマッピングされる。
【００２６】
上で述べた実施の形態では、ノン・セキュアな第２ステージのページ・テーブルおよびセキュアな第２ステージのページ・テーブルが使用されたが、代替の実施の形態は、２つの分離した第２ステージのページ・テーブルを必要としない。実際、１つの実施の形態で、現行の仮想機械によって発行されたアクセス要求に応答してアドレス変換を実行するとき、アドレス変換回路は、指定された仮想アドレスを使用して、対応する中間アドレスを生成するために必要な情報を提供する第１ステージのページ・テーブルの記述子にアクセスする。記述子は、更に、第１ステージのセキュリティ値も提供しており、アドレス変換回路は、更に生成された中間アドレスを使用して、対応する物理アドレスを生成するために必要な情報を提供する第２ステージのページ・テーブルの記述子にアクセスする。記述子は、更に第２ステージのセキュリティ値も提供する。トラステッド仮想機械識別子がセットされていれば、アドレス変換回路は、第１ステージのセキュリティ値と第２ステージのセキュリティ値の両方がアクセスをセキュアであると識別している場合、修正されたアクセス要求としてセキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行させる。
【００２７】
この実施の形態に従えば、第１ステージのセキュリティ値は、異なる第２ステージのページ・テーブル間で選択を行うために使用されず、その代わり、第２ステージのページ・テーブルから読み出された第２ステージのセキュリティ値と組み合わせて、アクセスがセキュア・メモリに進むべきか否かを判断するために使用される。特に、第１ステージのセキュリティ値と第２ステージのセキュリティ値が両方ともそのアクセスをセキュアであると識別していて、トラステッド仮想機械識別子がハイパーバイザ・ソフトウエアによってセットされている場合にのみ、アドレス変換回路は、セキュア・メモリ内の物理アドレスを指定するセキュア・アクセス要求を出力する。
【００２８】
１つの実施の形態で、トラステッド仮想機械識別子がセットされている場合、アドレス変換回路は、第１ステージのセキュリティ値と第２ステージのセキュリティ値が両方ともにアクセスをノン・セキュアであると識別しているとき、修正されたアクセス要求として、ノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求を発行させる。
【００２９】
更に、１つの実施の形態で、トラステッド仮想機械識別子がセットされている場合、アドレス変換回路は、第１ステージのセキュリティ値と第２ステージのセキュリティ値が異なる場合、アクセス要求を中止させる。
【００３０】
代替的実施の形態では、アドレス変換回路は、第１ステージのセキュリティ値がそのアクセスをセキュアであるとマークするが、第２ステージのセキュリティ値がそのアクセスをノン・セキュアであるとマークする場合、アクセス要求をノン・セキュア・メモリに向けるようにアレンジできる。この代替的実施の形態では、第２ステージのマッピングを第１ステージのマッピングよりも正しいらしいと看做す、すなわち、ハードウエアが期待し、ハイパーバイザが許容するアクセスのタイプを第２ステージのマッピングが記述すると仮定される。
【００３１】
１つの実施の形態で、トラステッド仮想機械識別子がセットされていなければ、アドレス変換回路は、第１ステージのセキュリティ値および第２ステージのセキュリティ値の如何に関らず、修正されたアクセス要求として、ノン・セキュア・メモリ内の物理アドレスを指定するノン・セキュア・アクセス要求を発行させる。このようなやり方によって、任意の仮想機械がセキュア・メモリにアクセスできるか否かについてハイパーバイザ・ソフトウエアは、最終的な支配力を保持することが明らかである。
【００３２】
１つの実施の形態で、ハイパーバイザ・ソフトウエアを実行するとき、処理回路は、セキュア・ドメインで実行され、セキュア・メモリは、セキュア・ドメインからアクセス可能であり、複数の仮想機械のうち任意のものを実行するとき、処理回路は、ノン・セキュア・ドメインで実行される。デフォルト設定で、セキュア・メモリは、現行の仮想機械についてトラステッド仮想機械識別子がハイパーバイザ・ソフトウエアによってセットされていて、アドレス変換回路が修正されたアクセス要求としてセキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行させる場合を除いて、ノン・セキュア・ドメインからアクセス可能でない。
【００３３】
そのような実施の形態で、セキュア・ドメインで実行中の処理回路からアクセス要求が発行されると、アドレス変換回路は、指定された仮想アドレスに基づいて、ハイパーバイザ・ソフトウエアによって管理されるセキュア・ページ・テーブルに依存した仮想アドレスから物理アドレスへの変換を実行するようにアレンジされる。このことから、そのような実施の形態で、セキュア・ドメインで発行されたアクセス要求は、セキュア・ページ・テーブルに依存した仮想から物理アドレスへの単一ステージのアドレス変換によって管理できる。しかし、任意の仮想機械は、ノン・セキュア・ドメインに保留され、そのような仮想機械によって発行されたアクセス要求に対しては、先に述べたように、二段階のアドレス変換プロセスが施される。
【００３４】
第２の態様から見ると、本発明は、処理回路上で実行される仮想機械によるセキュア・メモリへのアクセスを制御する方法を提供する。処理回路は、処理回路上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行し、処理回路によるアクセスのためのデータを記憶するメモリ・システムが提供され、メモリ・システムは、セキュア・データを記憶するための前記セキュア・メモリとノン・セキュア・データを記憶するためのノン・セキュア・メモリとを含み、セキュア・メモリは、セキュア・アクセス要求を介してのみアクセス可能であって、方法は、処理回路にアクセス可能な記憶装置に、ハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する工程であって、現行の仮想機械がセキュア・メモリへのアクセスに関して信頼できるものである場合に、ハイパーバイザ・ソフトウエアがトラステッド仮想機械識別子をセットする記憶工程、処理回路上で実行され仮想アドレスを指定する現行の仮想機械によって発行されたアクセス要求に応答して、現行の仮想機械がアクセスしようとするデータを含む前記メモリ内の物理アドレスを識別するアドレス変換プロセスを実行する工程およびメモリ・システムに対して物理アドレスを指定する修正されたアクセス要求を発行する工程であって、トラステッド仮想機械識別子がセットされている場合にのみ、修正されたアクセス要求として、セキュア・メモリ内の物理アドレスを指定する前記セキュア・アクセス要求を発行できる発行工程を含む。
【００３５】
第３の態様から見ると、本発明は、データ処理装置を提供する。それは、処理手段上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行する処理手段、処理手段によるアクセスのためのデータを記憶するメモリ手段であって、セキュア・データを記憶するセキュア・メモリ手段とノン・セキュア・データを記憶するノン・セキュア・メモリ手段とを含み、セキュア・アクセス要求を介してのみアクセス可能であるメモリ手段、処理手段上で実行され仮想アドレスを指定する現行の仮想機械によって発行されたアクセス要求に応答して、現行の仮想機械がアクセスしようとするデータを含む前記メモリ手段内の物理アドレスを識別するアドレス変換プロセスを実行し、またメモリ手段に対して物理アドレスを指定する修正されたアクセス要求を発行させるアドレス変換手段およびハイパーバイザ・ソフトウエアによって管理されるトラステッド仮想機械識別子を記憶する記憶手段であって、セキュア・メモリ手段へのアクセスに関して現行の仮想機械が信頼できるものである場合に、ハイパーバイザ・ソフトウエアがトラステッド仮想機械識別子をセットするようにアレンジされている記憶手段を含む。アドレス変換手段は、現行の仮想機械によって発行されたアクセス要求に応答して、トラステッド仮想機械識別子がセットされている場合にのみ、修正されたアクセス要求として、セキュア・メモリ手段内の物理アドレスを指定する前記セキュア・アクセス要求を発行させることができる。
【００３６】
本発明は、単に一例として、添付図面に示したそれの実施の形態を参照しながら更に説明する。
【図面の簡単な説明】
【００３７】
【図１】本発明の実施の形態が採用される仮想化環境を示す模式図である。
【図２】ノン・セキュア・ドメインおよびセキュア・ドメインで動作する別々のプログラムを示す模式図である。
【図３】本発明の１つの実施の形態に従うデータ処理装置のブロック図である。
【図４】本発明の実施の形態に使用されるページ・テーブルを示す模式図である。
【図５Ａ】本発明の第１の実施の形態に従って採用されたアドレス変換プロセスを示す模式図である。
【図５Ｂ】本発明の第１の実施の形態に従って採用されたアドレス変換プロセスを示す模式図である。
【図５Ｃ】本発明の第１の実施の形態に従って採用されたアドレス変換プロセスを示す模式図である。
【図６】本発明の第１の実施の形態に従うアドレス変換プロセスを示すフロー図である。
【図７Ａ】本発明の代替的実施の形態に従うアドレス変換プロセスを示す模式図である。
【図７Ｂ】トラステッド仮想機械識別子がセットされていると仮定して、本発明の第２の実施の形態に従って、アクセス要求がどのように処理されるかを示す表である。
【図８】本発明の第２の実施の形態に従うアドレス変換プロセスを示すフロー図である。
【発明を実施するための形態】
【００３８】
図１は、本発明の実施の形態が採用される仮想化環境を示す模式図である。プロセッサ・コアなどのプロセッサ・ハードウエア１０は、プロセッサ・ハードウエア上での複数の仮想機械３０、４０の実行をサポートするハイパーバイザ・ソフトウエア２０を実行するようにアレンジされる。図１には、２つの仮想機械３０、４０だけが示されているが、同じプロセッサ・ハードウエア１０上で実行される３つ以上の仮想機械を提供してもよいことが理解される。
【００３９】
各仮想機械３０、４０は、特定のオペレーティング・システム３６、４６上で走る１又は複数のアプリケーション３２、３４、４２、４４を有する。ハイパーバイザ・ソフトウエア２０を介して、各仮想機械３０、４０に対して、その中にそれが駐在するシステムについての独自の視点が提供され、例えば、システムの利用可能なハードウエア・リソースについての独自の視点が得られる。各仮想機械３０、４０は、プロセッサ・ハードウエア１０上で実行される他の仮想機械のいずれからも独立して動作するのが普通であって、事実、他の仮想機械の存在に気づく必要もない。
【００４０】
本発明の１つの実施の形態に従えば、その上にプロセッサ・ハードウエア１０が駐在するデータ処理装置は、複数のドメインを有し、それらの中でデータ処理装置（プロセッサ・ハードウエア１０を含む）のデバイスが動作できる。１つの特別な実施の形態で、複数のドメインは、セキュア・ドメインとノン・セキュア・ドメインとを含み、各ドメインには、予め決められたアクセス権が付随する。特に、ノン・セキュア・ドメインで動作する場合、デバイスは、そのノン・セキュア・ドメインに付随するノン・セキュア・データだけにアクセスできる。このことから、ノン・セキュア・ドメインで動作する場合、セキュア・ドメインに付随するセキュア・データにアクセスすることはできない。セキュア・ドメインに付随する予め決められたアクセス権は、多様な形を取ることができるが、典型的には、セキュア・ドメインで動作するデバイスがセキュア・ドメインのセキュア・データとノン・セキュア・ドメインのノン・セキュア・データの両方にアクセスすることを許容する。
【００４１】
データ処理装置のメモリ・システムは、セキュア・データを記憶するセキュア・メモリとノン・セキュア・データを記憶するノン・セキュア・メモリとを提供し、セキュア・メモリは、セキュア・アクセス要求を介してのみアクセス可能である。セキュア・メモリおよびノン・セキュア・メモリは、物理的に分離したメモリ・デバイスとして設けられる必要はなく、その代わり、各メモリ・デバイスは、メモリ・システム内で、セキュア・データを記憶する１又は複数のセキュア領域とノン・セキュア・データを記憶する１又は複数のノン・セキュア領域とを含むようにアレンジできる。すなわち、メモリ・システムの物理メモリ・アドレス空間全体を分割して複数のセキュア・メモリ領域と複数のノン・セキュア・メモリ領域とを提供するようにできる。
【００４２】
このようなセキュア・ドメインおよびノン・セキュア・ドメインをサポートするシステムにおいて、セキュア・ドメイン又はノン・セキュア・ドメインのいずれかで動作できる各デバイスは、１つのドメインから別のドメインに遷移するために、モニタ・コードを実行するようにアレンジされるのが一般的である。このようにアレンジされたプロセッサ・コアの例について考察すると、そのようなプロセッサ・コアの動作は、先に述べた同時譲渡の米国特許出願第１０／７１４，５６１号に詳細に述べられている。図２は、そのようなプロセッサ・コアの動作の全体像を示すために提供されており、読者は、上で示した米国特許出願を参照すればこれ以上の詳細を知ることができる。
【００４３】
図２は、セキュア・ドメインおよびノン・セキュア・ドメインを有する処理システム上で走る各種プログラムを模式的に示す。システムには、少なくとも部分的にモニタ・モードで実行するモニタ・プログラム１２０が備えられている。モニタ・プログラム１２０は、セキュア・ドメインとノン・セキュア・ドメインとの間で双方向的なすべての変化を管理することに責任を持つ。プロセッサ・コアを外部から見ると、モニタ・モードは、常にセキュアであり、モニタ・プログラムは、セキュア・メモリにある。
【００４４】
ノン・セキュア・ドメイン内には、ノン・セキュア・オペレーティング・システム１１０と複数のノン・セキュア・アプリケーション・プログラム１１２、１１４とが備えられ、それらは、ノン・セキュア・オペレーティング・システム１１０と協力して実行する。セキュア・ドメインには、セキュア・カーネル・プログラム１００が備えられ、セキュア・カーネル・プログラム１００は、セキュア・オペレーティング・システムを構成すると考えられる。典型的には、このようなセキュア・カーネル・プログラム１００は、セキュア・ドメインに備えるべき処理活動にとって本質的に重要な機能のみが備えられるように設計されており、従って、安全性が高まり、セキュア・カーネル１００を可能な限り小型で簡単なものとすることが可能となる。複数のセキュア・アプリケーション１０２、１０４は、セキュア・カーネル１００と組み合わせて実行するように示されている。
【００４５】
図２は、プロセッサ・コア内でのセキュア・ドメインからノン・セキュア・ドメインへの遷移を示すが、プロセッサ・コア自身が、複数の仮想機械が同時に存在する図１に示されたような仮想化環境で動作する状況については、考慮していない。このような仮想化技術は、ノン・セキュア・ドメインにも容易に採用でき、複数のノン・セキュア仮想機械が実行するようにできて、その各々にノン・セキュア・メモリのアドレス空間についての独自の視点を与えることができる。従って、プロセッサ・コアは、ハイパーバイザ・ソフトウエアを実行するためにモニタ・プログラム１２０を使用してセキュア・ドメインに入ることができ、実際に必要であれば、セキュア・ドメイン内のセキュア・オペレーティング・システム１００の制御下で１又は複数のセキュア・アプリケーション１０２、１０４を付加的に実行できる。
【００４６】
しかし、図２の配置を利用して、複数のセキュア・オペレーティング・システムを仮想化すること、すなわち、セキュア・ドメインで複数の仮想機械を走らせることはできない。これは、セキュア・ドメインには、ハイパーバイザ・ソフトウエアとセキュア・ドメインで実行される任意の他のソフトウエアとの間に特権レベルの差異が存在しないためである。従って、複数のセキュア仮想機械が設定されれば、ハイパーバイザ・ソフトウエアによって導入された任意のアドレス変換機構を１つのセキュア仮想機械が修正することが可能となり、この処理によって他の仮想機械のうちの１つのセキュア・データにアクセスをすることが可能となる。
【００４７】
従って、本発明の実施の形態で、プロセッサ・ハードウエア１０上で実行される複数の仮想機械を提供するために仮想化環境を利用する場合は、すべての仮想機械がノン・セキュア・ドメインで実行するようにアレンジされる。しかし、残りの図面を参照しながらより詳細に説明するように、本発明の実施の形態の技術を利用すれば、これらの仮想機械の特定のものがハイパーバイザ・ソフトウエアの制御下でセキュア・メモリにアクセスすることができる。
【００４８】
図３は、本発明の１つの実施の形態に従うデータ処理装置のブロック図である。中央演算ユニット（ＣＰＵ）２００は、プロセッサ・コア２０５を含み、このプロセッサ・コア２０５上での複数の仮想機械の実行をサポートするハイパーバイザ・ソフトウエアを実行できる。
【００４９】
プロセッサ・コア２０５は、データ処理装置のメモリ・システム２６０内の場所にアクセスするために、プロセッサ・コア２０５によって発行されるアクセス要求を管理するようにアレンジされたメモリ管理ユニット（ＭＭＵ）２３０を介して、システム・バス２５０に接続される。従って、コア２０５が発行し仮想アドレスを指定する任意のアクセス要求は、ＭＭＵ２３０に送られる。ＭＭＵは、予め決められたアクセス制御機能を実行することに責任を持ち、更に詳細には、その仮想アドレスに対応する物理アドレスを決定することおよびアクセス・パーミッション権限を解析して領域属性を決定することに責任を持つ。ＭＭＵ２３０がこれらの機能を実行できるようにするために、ＭＭＵは、メモリ・システム２６０内に設けられた１又は複数のページ・テーブル２７０にアクセスできる。
【００５０】
ページ・テーブルの一例が図４に模式的に示されている。図４に示されたように、ページ・テーブル３００は、複数の記述子を含み、各記述子は、特定のメモリ領域に関するアドレス・マッピング情報、アクセス・パーミッション権限、領域属性および任意のその他必要な情報、例えば、記述子が関連するメモリ領域のサイズを提供する。アクセス・パーミッション権限は、付随するメモリ領域が読み出し専用、書き込み専用、読み出し／書き込み、あるいは、アクセス不可のいずれであるかを指定し、他方、領域属性は、この領域へのアクセスがキャッシュ可能であるか否か、バッファリング可能であるか否かなどを識別する。アドレス・マッピング情報は、どのように入力アドレスを変換して出力アドレスを構成するかを識別する。
【００５１】
本発明の１つの実施の形態で、ページ・テーブル２７０を参照しながらＭＭＵ２３０によって実行されるアドレス変換は、二段階プロセスであり、その中では、まず第１ステージのページ・テーブルの関連記述子に与えられたアドレス・マッピングに依存して仮想アドレスが中間アドレスに変換され、次に第２ステージのページ・テーブルの関連記述子に与えられたアドレス・マッピングに依存して中間アドレスから物理アドレスに変換される。
【００５２】
これも図４に示されたように、ページ・テーブル３００内の各記述子３１０には、ここでノン・セキュア（ＮＳ）ビット値とも呼ばれる１つのセキュリティ値が与えられる。第１ステージのページ・テーブルの関連記述子から得られたＮＳビット値を、ここでは第１ステージＮＳビット値と呼び、第２ステージのページ・テーブルの関連記述子から得られたＮＳビット値を第２ステージＮＳビット値と呼ぶ。後にもっと詳しく説明するように、これらのＮＳビット値は、仮想アドレスをメモリ・システム２６０内の物理アドレスにどのようにマッピングするかを決定するときに、ＭＭＵ２３０によって使用される。
【００５３】
図３に戻ると、アクセス要求を処理するときに、ＭＭＵ性能を向上させるために、ＭＭＵ２３０によってページ・テーブル２７０から取り出された情報をローカルに記憶できる１又は複数のテーブル・ルックアサイド・バッファ（ＴＬＢ）２４０がＭＭＵ２３０に含まれることが分かる。当業者が理解するように、ＴＬＢ２４０に記憶された情報のサブセットをキャッシュするマイクロＴＬＢを設けることもでき、これによって、ＭＭＵ２３０の性能が更に向上する。
【００５４】
ＣＰＵ２００内のコンポネントの動作は、複数の制御レジスタ２１０によって制御される。本発明の実施の形態について説明するうえで、特定の制御レジスタが特に興味深い。まず、１又は複数の制御レジスタは、プロセッサ・コア２０５によって発行されたアクセス要求を処理するときに、メモリ２６０内のどのページ・テーブル２７０を参照すべきかを決定するときにＭＭＵ２３０によって使用されるページ・テーブル・ポインタ２２０を指定する。本発明の実施の形態で、仮想アドレスから物理アドレスへの変換を処理するときに、ＭＭＵが第１ステージのページ・テーブルと第２ステージのページ・テーブルの両方を参照する場合、ページ・テーブル・ポインタ２２０は、第１ステージのページ・テーブルへのページ・テーブル・ポインタと、第２ステージのページ・テーブルへの別のページ・テーブル・ポインタとを含む。実際のページ・テーブル・ポインタは、プロセッサ・コア２０５によって現在実行されている仮想機械に依存する。
【００５５】
１つの実施の形態で、第１ステージのページ・テーブルは、各仮想機械によって管理でき、実際に、任意の特定の仮想機械は、その仮想機械上で走る異なるアプリケーションの各々に対して別々の第１ステージのページ・テーブルを設定できる。このことから、制御レジスタ２１０内に設けられた第１ステージのページ・テーブル・ポインタは、現在走っている仮想機械に依存し、また多分その仮想機械内で走っている特定のアプリケーションに依存して、プロセッサ・コア２０５によってセットされる。
【００５６】
これと対照的に、第２ステージのページ・テーブルは、ハイパーバイザ・ソフトウエア２０によって管理される。ハイパーバイザ・ソフトウエアは、各仮想機械に対して別々の第２ステージ・ページ・テーブルを提供する。このことから、この場合も制御レジスタ２１０内に設けられる実際の第２ステージ・ページ・テーブル・ポインタは、現在実行されている仮想機械に依存して、プロセッサ・コア２０５上で走っているハイパーバイザ・ソフトウエアによってセットされる。
【００５７】
ページ・テーブル・ポインタ２２０に加えて、プロセッサ・コア２０５上で実行されるハイパーバイザ・ソフトウエアは、トラステッドＶＭビットがセットされていれば、制御レジスタ２１０内にトラステッド仮想機械（ＶＭ）ビット２１５をセットできる。これは、セキュア・メモリへのアクセスに関して現在実行中の仮想機械が信頼できることを示す。後にもっと詳しく説明するように、ハイパーバイザ・ソフトウエアによってトラステッドＶＭビットがセットされている場合にのみ、ＭＭＵ２３０は、プロセッサ・コア２０５によって発行された特定のアクセス要求に応答して、セキュア・メモリ内の物理アドレス又はノン・セキュア・メモリ内の物理アドレスのいずれを生成するかを決定するために、第１ステージのページ・テーブルおよび第２ステージのページ・テーブルからのＮＳビット値を使用する。トラステッドＶＭビット値がセットされていない場合、ＮＳビット値情報は、無視され、現行の仮想機械によって発行される任意のアクセス要求は、ノン・セキュア・メモリ内の物理アドレスにマッピングされる。
【００５８】
従って、ＭＭＵ２３０がアクセス要求を受信すると、それは、１又は複数のＴＬＢ構造２４０を参照して、アクセス要求によって指定された仮想アドレスを含むメモリ領域に関する第１ステージおよび第２ステージのページ・テーブルからの記述子情報をそのＴＬＢが現時点で記憶しているか否かを判断する。もしそうでなければ、ＭＭＵ２３０は、制御レジスタ２１０内のページ・テーブル・ポインタ情報２２０を使用して、メモリ２６０内の関連する第１および／又は第２ステージのページ・テーブル２７０にアクセスして、必要な記述子を取り出す。これによって、それらの記述子は、ＴＬＢ２４０に記憶でき、アクセス要求を処理するためにＭＭＵ２３０が使用することができる。
【００５９】
１又は複数のＴＬＢ構造２４０内の第１ステージおよび第２ステージのページ・テーブルからの記述子を記憶するようにＭＭＵ２３０をアレンジするやり方は、複数存在する。例えば、１つの実施の形態で、ＭＭＵ２３０は、各々それ自身のＴＬＢを有する２つの別々のＭＭＵ、すなわち、仮想から中間アドレスへの変換を実行する第１のＭＭＵと中間から物理アドレスへの変換を実行する第２のＭＭＵとを含むと考えることができる。あるいは、必要とされる二段階のアドレス変換プロセスを実行するために、単一の統合ＭＭＵおよび関連ＴＬＢ構造を設けることでもよい。ＭＭＵをアレンジする方法のもっと詳細な点については、その全体を参照によってここに取り込む同時譲渡の米国特許第７，１７１，５３９号に議論されている。
【００６０】
図５Ａは、トラステッドＶＭビット２１５がセットされていない状況で、ノン・セキュア・ドメインのプロセッサ・コア２０５上で実行される仮想機械によって発行されるアクセス要求に対して、ＭＭＵ２３０によって実行されるアドレス変換を模式的に示す。図５Ａに示すように、１又は複数の仮想アドレス空間３５０は、仮想機械上で実行されるアプリケーションによって使用され、また例えば、その仮想機械によって実行される各アプリケーションには、別々の仮想アドレス空間が関連する。そのような仮想アドレス空間の各々に対して、仮想機械は、別々の第１ステージのページ・テーブルを設定する。関係する第１ステージのページ・テーブルを参照しながら、ＭＭＵ２３０は、仮想アドレス空間３５０からノン・セキュア中間アドレス空間３５５へのアドレス変換３５２を実行できる。このアドレス変換は、仮想機械による第１ステージのページ・テーブルの管理を介して事実上仮想機械によって制御される。
【００６１】
その後、ＭＭＵ２３０は、中間アドレスから物理アドレスへの変換３５７を実行するために、ハイパーバイザによって制御される第２ステージのページ・テーブルを参照する。トラステッドＶＭビットがセットされていないので、第１ステージのページ・テーブル又は第２ステージのページ・テーブルのいずれかに指定された任意のＮＳビット値は、無視され、その代わりに、第２ステージのアドレス変換３５７は、常にノン・セキュア物理アドレス空間３６０内の物理アドレスを生成する。第２ステージのページ・テーブルがハイパーバイザによって管理されるので、仮想機械は、アドレス変換の第２ステージを変更できず、従って、そのようなアクセス要求に応答して、ノン・セキュア物理アドレスのみが発行されることが保証される。
【００６２】
図５Ｂは、トラステッドＶＭビットがセットされている場合に、ＭＭＵ２３０によってアドレス変換がどのように実行されるかを示す。図５Ｂに示されたように、ＭＭＵは、ここでも関連する第１ステージのページ・テーブルを参照するが、中間アドレスへのマッピングは、第１ステージのページ・テーブルの関連する記述子のＮＳビットの値に依存する。ＮＳビットがセットされていて、仮想機械がアクセス要求をノン・セキュア・アクセス要求であると考えていることが示されれば、アドレス変換３５４によってノン・セキュア中間アドレス空間３７０内の中間アドレスが生成されるとき、ノン・セキュアな第２ステージのページ・テーブルが参照されて、ノン・セキュア中間アドレス空間３７０からノン・セキュア物理アドレス空間３６０へのマッピング３７２が提供される。アドレス変換のこの第２ステージは、これ以降、図５Ａに関連して説明したのと同じように進行する。
【００６３】
しかし、第１ステージのページ・テーブルの関連記述子のＮＳビットがクリアで、仮想機械がそのアクセス要求をセキュア・アクセス要求であると考えていることが示されれば、アドレス変換３５６によってセキュア中間アドレス空間３７５内の中間アドレスが生成されるとき、アドレス変換プロセスの第２ステージに関してセキュアな第２ステージのページ・テーブルが参照され、このセキュアな第２ステージのページ・テーブルが、セキュア中間アドレス空間３７５から物理アドレス空間３６０、３８０へのマッピング３７７、３７９を提供する。図５Ｂに示されたように、アドレス変換のこの第２ステージは、セキュア物理アドレス空間３８０又はノン・セキュア物理アドレス空間３６０のいずれかの中にある物理アドレスを生成することが可能であり、これは、第２ステージのページ・テーブルの関連記述子のＮＳビット値に依存する。特に、第２ステージのページ・テーブル記述子のＮＳビットがセットされていて、ハイパーバイザがアクセスをノン・セキュア・アクセスであると考えていることが示されると、ＭＭＵ２３０によってノン・セキュア物理アドレス空間３６０内の物理アドレスが生成される。しかし、ＮＳビットがクリアで、ハイパーバイザがアクセスをセキュアであると考えていることが示されると、ＭＭＵ２３０によってセキュア物理アドレス空間３８０内の物理アドレスが生成される。
【００６４】
１つの実施の形態で、トラステッドＶＭビットがセットされるときに使用されるノン・セキュアな第２ステージのページ・テーブルは、トラステッドＶＭビットがセットされていないときに使用される第２ステージのページ・テーブルと同じページ・テーブルである。従って、このことによって、トラステッド仮想機械は、図２のセキュア・ドメインで走っているソフトウエアがノン・セキュア・ドメインで走っているノン・セキュア・アプリケーションのデータにアクセスできるのと同じやり方で、ノン・セキュア仮想機械のメモリ空間にアクセスできる。これによって、さもなければセキュア・ドメインで動作するように設計されたセキュア・ソフトウエアがトラステッド仮想機械（これは、先に述べたように実際には、ノン・セキュア・ドメインで走る）でも正しく動作することを許容するために必要とされる変更が低減される。
【００６５】
図５Ｃは、例えば、ハイパーバイザ・ソフトウエアによって、あるいは、セキュア・ドメインで走っている任意のその他のソフトウエアから発行された任意のアクセス要求についてのケースと同じように、セキュア・ドメインで実行中のプロセッサ・コア２０５によって発行された任意のアクセス要求について、ＭＭＵ２３０がどのようにアドレス変換を管理するのかを示している。このケースでは、セキュア・ページ・テーブルが使用されて、セキュア・ページ・テーブルの関連記述子に記憶されたＮＳビット値に依存して、セキュア仮想アドレス空間３９０の仮想アドレスから、ノン・セキュア物理アドレス空間３６０又はセキュア物理アドレス空間３８０のいずれかの物理アドレスへのダイレクト・マッピング３９２、３９４が提供される。セキュア・ページ・テーブルは、一般にハイパーバイザによって管理され、従って、この変換は、ハイパーバイザ・ソフトウエアによって制御されると考えられる。従って、理解されるように、この機構は、図２に示されたものと同じような、例えば、仮想化が存在しないシステムのような処理デバイスのセキュア・ドメインで走るセキュア・アプリケーションに対して提供される標準的なアドレス変換機構とまったく同じことになる。
【００６６】
図６は、図５Ａおよび図５Ｂに関連して先に説明した本発明の第１の実施の形態に従って実行されるアドレス変換プロセスを示すフロー図である。工程４００で、ＭＭＵ２３０は、アクセス要求を待ち、アクセス要求が受信されると、ＭＭＵは、検索プロシージャを実行して、第１ステージのページ・テーブルの関連記述子に記憶された情報にアクセスしようとする（この関連記述子を、ここで第１記述子と呼ぶ）。明らかなように、この情報が既にＴＬＢ２４０中にキャッシュされていれば、第１ステージのページ・テーブルで検索を実際に実行する必要がなくなり、その代わりにＴＬＢから直接情報を得ることができる。
【００６７】
工程４１０で、次に、第1記述子のＮＳビットがクリアであるか否かが判断され、そうであれば、工程４１５で、現行の仮想機械に対してトラステッドＶＭビット２１５がセットされているか否かが判断される。第１記述子のＮＳビットがクリアで、トラステッドＶＭビットがセットされている場合にのみ、プロセッサは、工程４２０に進み、そこにおいて、セキュアな第２ステージのページ・テーブルの関連記述子（ここで第２記述子と呼ぶ）で別の検索が実行される。この場合も、この情報が既にＴＬＢ２４０にキャッシュされていれば、第２ステージのページ・テーブルで検索を実際に実行する必要はない。この後、第２記述子のＮＳビットがクリアであるか否かが判断され、そうであれば、ＭＭＵ２３０は、工程４３０で物理アドレスを生成して、セキュア・メモリへのアクセス実行を可能にする。
【００６８】
第1記述子のＮＳビットがクリアでなければ、あるいは、トラステッドＶＭビットがセットされていなければ、工程４１０／４１５は、工程４３５に分岐して、そこにおいてノン・セキュアな第２ステージのページ・テーブルに関してアドレス変換の第２ステージが実行され、そのノン・セキュアな第２ステージのページ・テーブルの関連記述子が再調査されて、必要なアクセス情報が得られる。ここでも、この情報が既にＴＬＢ２４０にキャッシュされていれば、第２ステージのページ・テーブルで実際に検索を実行する必要はない。この後、ノン・セキュア・アドレス空間のアドレスが生成され、工程４４０でノン・セキュア・メモリへのアクセス実行が許可される。
【００６９】
同様に、工程４２５で第２記述子のＮＳビットがクリアでないと判断されると、ノン・セキュア・メモリ内の物理アドレスが生成されて、プロセスは、工程４４０に進み、そこにおいて、ノン・セキュア・メモリへのアクセスが実行される。
【００７０】
図７Ａは、代替的実施の形態を示しているが、ここでは、ノン・セキュアとセキュアとに分離された第２ステージのページ・テーブルが設けられず、その代わりに、単一の第２ステージのページ・テーブルが使用される。図７Ａに示されたように、アドレス変換の第１ステージは、ここでも仮想から中間へのアドレス変換を実行するために、関連する仮想アドレス空間３５０に関する第１ステージのページ・テーブルを参照する。そしてこの実施の形態で、第１ステージのページ・テーブルの関連記述子からのＮＳビット値は、アドレス変換プロセスの第２ステージで使用するために、中間アドレスと一緒に送られる。アドレス変換プロセスの第２ステージには、必要とされる中間から物理へのアドレス変換５０４、５０６を識別するための中間アドレス空間５００に関する第２ステージのページ・テーブルへの参照が含まれる。特に、第１ステージのページ・テーブルおよび第２ステージのページ・テーブルの両方のＮＳビット値およびトラステッドＶＭビットのセッティングに依存して、ＭＭＵ２３０は、ノン・セキュア物理アドレス空間３６０内の物理アドレス又はセキュア物理アドレス空間３８０内の物理アドレスのいずれを生成するかを決定する。特に、トラステッドＶＭビットがセットされていて、第１ステージのページ・テーブルおよび第２ステージのページ・テーブルの両方からのＮＳビット値がクリアである（セキュア・アクセスであることを意味する）場合にのみ、ＭＭＵは、セキュア物理アドレス空間３８０内の物理アドレスを生成する。
【００７１】
図７Ｂは、トラステッドＶＭビットがセットされていると仮定して、ＭＭＵが、第1記述子および第２記述子のＮＳビット値に依存して、どのように物理アドレスを生成するのかを示す表である。明らかなように、両方のＮＳビットがそのアクセスがセキュアであるとして示す場合は、セキュア・メモリへのアクセスを許容する物理アドレスが生成される。同様に、両方のＮＳビットがそのアクセスをノン・セキュアであるとして示す場合には、ノン・セキュア物理アドレス空間３６０内のアドレスを指定する物理アドレスが生成される。
【００７２】
１つの実施の形態で、第1記述子に関するＮＳビット値が第２記述子に関するＮＳビット値と一致しない場合、そのアクセスは、中止される。しかし、１つの実施の形態では、第1記述子に関するＮＳビット値がそのアクセスをセキュアであるとマークし、第２記述子に関するＮＳビット値がそのアクセスをノン・セキュアであるとマークする場合に、第２ステージのページ・テーブルに付随するＮＳビット値を信頼できるものとして扱って、ノン・セキュア物理アドレス空間３６０内の物理アドレスが生成される。従って、ハイパーバイザ・ソフトウエアが第２ステージのページ・テーブルを制御するので、ハイパーバイザ・ソフトウエアがそのアクセスをノン・セキュアとして扱うべきであると示す場合、第１ステージのページ・テーブル（仮想機械によって制御される）の関連するＮＳビット値がそのアクセスをセキュアであると識別しても、そのアクセスは、ノン・セキュアであるとして扱われる。
【００７３】
図８は、図７Ａおよび７Ｂのこの代替的実施の形態を採用した場合のＭＭＵ２３０の動作を示すフロー図である。工程５１０で、アクセス要求の受信を待って、アクセス要求が受信されると、必要なアクセス情報を第1記述子から得ることを目的に、工程５１５で第１ステージのページ・テーブルを参照しながら検索が実行される。この後、工程５２０でも、必要なアクセス情報を第２記述子から得ることを目的に検索が実行される。ここには、逐次的に示してあるが、工程５１５と工程５２０とを並列に実行することもできる。図６に関連して説明した第１の実施の形態と同じように、必要な情報が既にＴＬＢ２４０にキャッシュされていれば、第１および／又は第２ステージのページ・テーブルについてアクセスを実行する必要はなくなる。
【００７４】
工程５２５では、トラステッドＶＭビットがセットされているか否かが判断される。もしそうでなければ、ノン・セキュア物理アドレス空間内の物理アドレスが生成されて、工程５４５でノン・セキュア・メモリへのアクセスが実行される。
【００７５】
しかし、トラステッドＶＭビットがセットされていれば、工程５３０で第1記述子と第２記述子とでＮＳビットが一致するか否かが判断される。それらが一致しない場合には、１つの実施の形態に従って、工程５５０でアクセスは、中止される。しかし、ＮＳビットが一致したことを仮定すると、工程５３５で、両方のＮＳビットがクリアであるか否か（すなわち、両方のＮＳビットがアクセスをセキュアであると識別しているか否か）が判断される。もし両方のＮＳビットがクリアであれば、セキュア物理アドレス空間内の物理アドレスが生成されて、工程５４０でセキュア・メモリへのアクセスが実行される。そうでなければ、プロセスは、工程５３５から工程５４５へ分岐して、ＭＭＵ２３０によって生成されたノン・セキュア物理アドレス空間内の物理アドレスを使用して、ノン・セキュア・メモリへのアクセスが実行される。
【００７６】
本発明の実施の形態についてのこれまでの説明から明らかなように、これらの実施の形態は、１つのプロセッサ上で複数の仮想機械を実行することを許容し、それら仮想機械の個々のものは、ハイパーバイザ・ソフトウエアによって管理されるトラステッドＶＭビットのセッティングを通して、ハイパーバイザ・ソフトウエアの制御下でセキュア・メモリにアクセスすることを許容される。セキュア・ドメインとノン・セキュア・ドメインとを有するシステムでは、すべての仮想機械をノン・セキュア・ドメインで実行できるが、セキュア・ドメインで実行されるハイパーバイザ・ソフトウエアによって管理されるトラステッドＶＭビットを使用すれば、それらの仮想機械の特定のものをトラステッド仮想機械として認めることができ、セキュア・メモリのアドレス空間にマッピングできるアクセス要求を発行することを許容することができ、それらの仮想機械は、ハイパーバイザ・ソフトウエアの制御下でセキュア・メモリへ制御されたアクセスを実行できる。
【００７７】
従って、本発明の実施の形態の技術を利用することによって、実際には、ノン・セキュア・ドメインで動作していても、あたかもセキュア・ドメインで動作しているかのようにメモリにアクセスすることを許容される複数のトラステッド仮想機械を提供できる。トラステッド仮想機械は、ノン・セキュア・ドメインで動作するので、図２に示されたセキュア・カーネル１００上で実行されるセキュア・アプリケーション１０２、１０４のように、セキュア・ドメインで真に動作するアプリケーションに関連するようなセキュア・レベルの特権を有さない。しかし、ハイパーバイザの制御下では、セキュア・アプリケーション１０２、１０４がセキュア・メモリにアクセスできるのと同様なやり方で、セキュア・メモリにアクセスすることを許容される。
【００７８】
このようなやり方によって、ハイパーバイザ・ソフトウエアは、ノン・セキュア・オペレーティング・システムと同様なやり方で、複数のセキュア・オペレーティング・システムを仮想化できる。すなわち、１つの実施の形態で、図２に示されたのと同じような、複数のセキュアおよびノン・セキュアのオペレーティング・システム対を仮想化できる。
【００７９】
ここに特定の実施の形態について説明してきたが、本発明がそれらに限られることなく、それらに対して多くの修正および追加を行うことが本発明の範囲内で可能であることを理解されよう。例えば、本発明の範囲から外れることなしに、独立項の特徴で以って以下の従属項の特徴の各種組合せを実現できる。
【符号の説明】
【００８０】
１０  プロセッサ・ハードウエア
２０  ハイパーバイザ・ソフトウエア
３０  仮想機械
３２，３４  アプリケーション
３６  オペレーティング・システム
４０  仮想機械
４２，４４  アプリケーション
４６  オペレーティング・システム
１００  カーネル・プログラム
１０２，１０４  セキュア・アプリケーション
１１０  ノン・セキュア・オペレーティング・システム
１１２，１１４  ノン・セキュア・アプリケーション・プログラム
１２０  モニタ・プログラム
２００  中央演算ユニット（ＣＰＵ）
２０５  プロセッサ・コア
２１０  制御レジスタ
２１５  仮想機械（ＶＭ）
２２０  ページ・テーブル・ポインタ
２３０  メモリ管理ユニット（ＭＭＵ）
２４０  テーブル・ルックアサイド・バッファ（ＴＬＢ）
２５０  システム・バス
２６０  メモリ・システム
２７０  ページ・テーブル
３００  ページ・テーブル
３１０  記述子
３５０  仮想アドレス空間
３５２  アドレス変換
３５４  アドレス変換
３５５  中間アドレス空間
３５６  アドレス変換
３５７  アドレス変換
３６０  物理アドレス空間
３７０  中間アドレス空間
３７２  マッピング
３７５  中間アドレス空間
３７７，３７９  マッピング
３８０  物理アドレス空間
３９０  仮想アドレス空間
３９２，３９４  ダイレクト・マッピング
５００  中間アドレス空間
５０２，５０４，５０６  アドレス変換
【図１】
0005234794.tif 000002
【図２】
0005234794.tif 000003
【図３】
0005234794.tif 000004
【図４】
0005234794.tif 000005
【図５Ａ】
0005234794.tif 000006
【図５Ｂ】
0005234794.tif 000007
【図５Ｃ】
0005234794.tif 000008
【図６】
0005234794.tif 000009
【図７Ａ】
0005234794.tif 000010
【図７Ｂ】
0005234794.tif 000011
【図８】
0005234794.tif 000012