JP6738354B2 - アドレス変換 - Google Patents

アドレス変換 Download PDF

Info

Publication number
JP6738354B2
JP6738354B2 JP2017564105A JP2017564105A JP6738354B2 JP 6738354 B2 JP6738354 B2 JP 6738354B2 JP 2017564105 A JP2017564105 A JP 2017564105A JP 2017564105 A JP2017564105 A JP 2017564105A JP 6738354 B2 JP6738354 B2 JP 6738354B2
Authority
JP
Japan
Prior art keywords
address
page
target
physical address
entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017564105A
Other languages
English (en)
Other versions
JP2018524691A (ja
Inventor
パーカー、ジェイソン
ロイ グリセンスウェイト、リチャード
ロイ グリセンスウェイト、リチャード
クリストファー ローズ、アンドリュー
クリストファー ローズ、アンドリュー
Original Assignee
エイアールエム リミテッド
エイアールエム リミテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by エイアールエム リミテッド, エイアールエム リミテッド filed Critical エイアールエム リミテッド
Publication of JP2018524691A publication Critical patent/JP2018524691A/ja
Application granted granted Critical
Publication of JP6738354B2 publication Critical patent/JP6738354B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1483Protection against unauthorised use of memory or access to memory by checking the subject access rights using an access-table, e.g. matrix or list
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/72Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • G06F12/1018Address translation using page tables, e.g. page table structures involving hashing techniques, e.g. inverted page tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/651Multi-level translation tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/681Multi-level TLB, e.g. microTLB and main TLB

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本技術はデータ処理の分野に関する。より具体的には、本技術はアドレス変換をサポートするデータ処理装置及び方法に関する。
データ処理装置は、第1アドレスを、データストア内の対応するロケーションを直接的に識別する物理アドレスへと変換するアドレス変換回路を有してもよい。
少なくとも幾つかの例によって、
第1アドレスを、データストア内の対応するロケーションを直接的に識別する物理アドレスへと変換するアドレス変換回路と、
物理アドレスによってインデックスされた1つ以上のエントリを含むテーブルとを備えるデータ処理装置であって、
エントリの少なくとも1つが、アドレス変換回路によって対応する物理アドレスに変換された第1アドレスを識別する、データ処理装置が提供される。
少なくとも幾つかの例によって、
第1アドレスを、データストア内の対応するロケーションを直接的に識別する物理アドレスへと変換する手段と、
物理アドレスによってインデックスされた1つ以上のエントリを格納する手段とを備えるデータ処理装置であって、
エントリの少なくとも1つが、変換する手段によって対応する物理アドレスに変換された第1アドレスを指定するデータ処理装置が提供される。
少なくとも幾つかの例によって、
対象第1アドレスを指定するアクセス要求に応じて、対象第1アドレスを、データストア内の対応するロケーションを直接的に識別する対象物理アドレスへと変換することと、
それぞれが物理アドレスに対応する1つ以上のエントリを含むテーブルにアクセスして、アドレス変換回路によって対応する物理アドレスに変換された第1アドレスを識別することと、
アクセス要求によって指定される対象第1アドレスと、対象物理アドレスに対応するテーブルのエントリ内で指定される第1アドレスとの間に不一致があるかどうかを判断することとを含むデータ処理方法が提供される。
本技術の更なる態様、特徴及び利点が、添付の図面と併せて読まれる以下の例の説明から明らかとなろう。
処理装置によって実行されるプロセスの例を概略的に示す。 データ処理装置の例を示す。 データストア内のデータにアクセスするためのアクセス要求の承認の例を概略的に示す。 データ処理装置の異なるポイントにおけるトランザクションの例を示す。 アクセス要求を承認する方法の例を示す。 物理アドレスの対応するページの所有権を要求するための要求プロセスの方法の例を示す。 上書きプロセスの例を示す。 所有権テーブル内の属性を更新する例を示す。 ルックアサイドバッファ内のエントリを無効化する命令の例を示す。 ゲスト実行環境の安全な初期化を概略的に示す。 物理メモリアドレス空間のページの所有権を破壊的に請求するプロセスを概略的に示すフロー図。 ハイパーバイザ及び複数のゲスト実行環境をサポートするハードウェアシステムを概略的に示す。 ハイパーバイザとセキュリティ制御部と複数のゲスト実行環境との関係を概略的に示す。 物理メモリアドレス空間のページの様々な共有状態を概略的に示す。 共有許可の変更要求への対応を概略的に示すフロー図。 実行コンテキストの切り替えを概略的に示すフロー図。 実行コンテキストの切り替えを概略的に示すフロー図。 プロセス記述子エントリの例を概略的に示す。 プロセスステータス状態を概略的に示す。
本技術の幾つかの具体例を以下に説明する。
図1は、データ処理装置によって実行できるプロセスの例を概略的に示す。ハイパーバイザ2が幾つかの仮想マシン(ゲストオペレーティングシステム又はゲストOSとしても知られる、VM)4を管理できる。各VM4は1つ以上のアプリケーション6を管理できる。例えば、ハイパーバイザ2は、例えば各仮想マシン4間の時分割処理リソースへの割り込みをスケジュールする等、アドレス空間のどの領域を各仮想マシン4に割り当てるかの制御及び仮想マシン4間の切り替えの制御ができる。同様に、各VM4は、アドレス空間のどの領域を、VM4の下で実行される各アプリケーション6に割り当てるかを制御でき、また、必要に応じてアプリケーション間の切り替えを制御できる。
図1に示すように、各プロセスは、所定の特権レベルEL0,EL1,EL2及びEL3と関連付けられている。この例では大きい数字の特権レベルの方が小さい数字の特権レベルよりも優先されるが、他の例では数字が逆に割り振られてもよい。この例では、アプリケーション6が特権レベルEL0で実行され、VM4が特権レベルEL1で実行され、ハイパーバイザ2が特権レベルEL2で実行される。通常、高い特権レベルで実行されるプロセスは、低い特権レベルで実行されるプロセスには得られない権利を有する。
図1に示すように、ハイパーバイザ2、VM4及びアプリケーション6は、正規ドメインで動作できる。また、装置は、セキュアドメインをサポートしており、そのセキュアドメインは、正規ドメインで実行されるプロセスが、セキュアドメインと関連付けられたデータ又は命令にアクセスできないように、正規ドメインから分離されている。これにより、セキュアオペレーティングシステム(OS)10や、セキュアドメイン内でセキュアOS10の制御下で実行される信頼アプリケーション(「トラステッドアプリケーション(Trusted Application)」とも言う)12といった、セキュアドメイン内で動作するプロセスも存在できる。セキュアOS10及び信頼アプリケーション(信頼app)12は、それぞれ特権レベルS−EL1及びS−EL0で実行される。また、セキュアモニタープロセス14が特権レベルEL3に設けられ、正規ドメインとセキュアドメインとの間の移行を管理する。セキュアモニタープロセス14は、例えば、正規ドメイン内の非セキュアプロセスがセキュア領域内のデータ又は命令にアクセスするのを防止する或る保護ハードウェアが設けられることで、アドレス空間のどの領域をセキュアドメイン又は非セキュアドメインと関連付けるかを管理できる。正規ドメインとセキュアドメインとを分離する技術の例としては、英国ケンブリッジのARM(登録商標) Limited社が提供するTrustZone(登録商標)技術があるが、他の例が使用されてもよい。図1に示すようなセキュアドメインの提供は任意であり、例えば他の実施形態ではセキュアモニター14、セキュアOS10及び信頼アプリケーション12がサポートされなくてもよい。
プロセス2,4,6,10,12及び14は、それぞれ仮想アドレス(VA)を用いて、メモリ等のデータストア内でアクセスされるロケーションを識別する。VAは、対応するストレージロケーションを直接的に識別する物理アドレス(PA)へと変換される。アプリケーション6又は仮想マシン4については、まずVAが中間物理アドレス(IPA)へと変換され、そのIPAがPAへと変換される。2段階のアドレス変換を設けることで、例えば、仮想マシン4は、VAからIPAへの変換用のページテーブルを制御して、アドレス空間のどの部分が各アプリケーション(App)6に割り当てられるかを制御でき、ハイパーバイザ2は、IPAからPAへの変換用のページテーブルを制御して、アドレス空間のどの部分が各仮想マシン4に割り当てられるかを制御できる。他のプロセス2,14,10及び12については、VAは、例えば各プロセスがアドレス空間のどの部分にアクセスできるかを制御するページテーブルを制御する(正規ドメイン内の)ハイパーバイザ2又は(セキュアドメイン内の)セキュアOS10によって、直接PAへと変換される。
従って、データ処理装置によって実行できる幾つかのプロセスが存在してもよい。通常のシステムでは、アドレス空間へのアクセスに対する制御は、高い特権レベルにあるプロセスが、低い特権レベルのプロセスがどのアドレスにアクセスできるかを制御する、「トップダウン」の手法で管理される。例えば、EL2にあるハイパーバイザ2は、EL1にある仮想マシン4がどのアドレスにアクセスできるかを定義するアクセス許可を設定する。しかしながら、高い特権レベルで動作するプロセスは、通常、その下の低い特権レベルで動作する各プロセスと関連付けられた全てのアドレスに対して読み取り又は書き込みができる。これにより、低い特権レベルで動作するプロセスのデベロッパーにとっては、セキュリティの問題が生じることがある。例えば、様々なパーティーによって提供された幾つかの仮想マシン4が実装されたクラウドプラットフォームにおいて、パーティーの1つが、クラウドオペレータといった他のパーティーが提供したハイパーバイザ2に対して仮想マシン4と関連付けられたデータ又はコードが露出されることを防ぎたい場合がある。
本願は、所定の仮想マシン4と関連付けられた全てのデータを必ずしも見ることができなくても、仮想マシン4を管理し且つアドレス空間のどの部分にアクセスできるかを制御する「ブラインドハイパーバイザ」の概念を導入する。同様に、他の特権レベルで動作するプロセスについても、高い特権レベルで動作するプロセスが低い特権レベルで動作するプロセスが使用するアドレスにアクセスするのを防止できる。
図2は、命令に応じてデータを処理する幾つかの処理回路を含む幾つかのバスマスターを備えたデータ処理装置20の例を示す。この例では、処理回路は2つの中央処理装置(CPU)24と、グラフィック処理装置(GPU)25と、以下に説明されるような特定のセキュリティ機能を管理するための専用の処理装置であるセキュリティコンプレックス28とを含む。また、バスマスターは、例えばダイレクトメモリアクセス(DMA)制御部26、又は外部装置へのデータの入力若しくは出力を制御する(図2には示されていない)入出力(I/O)インターフェースといった、処理回路の1つの代わりに処理タスクを実行できる他の装置も含む。なお、他の種類のマスター装置を設けてもよいことは理解されよう。システムバス30は、バスマスターのそれぞれを、メモリ34へのアクセスを制御するメモリ制御部(DMC)32に接続する。この例では、メモリはダイナミックランダムアクセスメモリ(DRAM)を用いて実装されるが、他の形態のメモリ又は他の種類のデータストアも設けられることが理解されよう。各バスマスター24,25,26及び28は、バス30を介してメモリ制御部32にデータアクセストランザクション(読み取り又は書き込み)を発行し、制御部はメモリ34を制御してトランザクションを利用可能にする。
幾つかのキャッシュ36が、処理回路24及び25のローカルなデータ又は命令をキャッシュするように設けられる。CPU24は、それぞれが自身のレベル1命令キャッシュとレベル1データキャッシュとを有するが、レベル2キャッシュは共有する。GPU25は、データ又は命令をキャッシュするキャッシュ36を有する。なお、これは単に利用できる実現可能なキャッシュ階層の例であって、他の構成も実現可能であることが理解されよう。また、各処理回路(CPU及びGPU)24及び25は、仮想アドレス(VA)と中間物理アドレス(IPA)と物理アドレス(PA)との間で変換を行い、以下に詳述するような、ページテーブルを用いる特定のプロセスによって設定されたアクセス許可を実施するメモリ管理ユニット40も有する。
CPU24及びGPU25は、図1に関して上述された任意の種類のプロセスから命令を実行できる。図1のプロセス2,4,6,10,12及び14のそれぞれは「ブラインドドメイン」(BD)と称されてもよく、対応するブラインドドメイン識別子(BDID)を有する。プロセスの幾つかについては、各プロセスに対してBDIDを適当に割り当ててもよい。例えば、ハイパーバイザ2、セキュアモニター14又はセキュアOS10には、対応するBDID値を単にあてがうだけでもよい。しかしながら、他のプロセスについては、BDIDは、個別のプロセスに既にあてがわれた既存の識別子を連結したものであってもよい。例えば、特定の仮想マシン4の下で実行される所定のアプリケーション6に対するBDIDは、その少なくとも一部が、そのアプリケーションと仮想マシン識別子(VMID)とに関連付けられたアプリケーション空間識別子(ASID)から形成されてもよい。また、BDIDには、プロセスがセキュアドメイン又は正規ドメインと関連付けられているかどうかを示すセキュアビットSも含まれてもよい。つまり、各プロセスは、その対応するBDIDを用いることで一意的に識別が可能である。
メモリ34内にはブラインドドメイン記述子テーブル(BDDT)42が設けられ、各BD2,4,6,10,12及び14の状態を追跡(track)する。例えば、BDDT42は、各BDIDについて、以下のうちの1つのようなブラインドドメインの状態を特定してもよい。
・無効(Invalid):このBDIDにはまだブラインドドメインが設定されていない。
・消去(Scrub):BDIDはセキュリティコンプレックス28によって請求されている(後述のように、これには、事前に同じBDIDを使用したプロセスと関連付けられたメモリ34内の任意のデータを上書きする上書き手続きを行うことが含まれてもよい)。
・準備(Prepare):セキュリティコンプレックス28は、そのBDIDと関連付けられたBDを初期化して、BDを実行する準備をしている。
・実行(Execute):BDは初期化されていて、実行の準備が完了しているか既に実行されている。
例えば、BDDT42は各BDIDに対して2ビットの状態フィールドを指定して、対応するブラインドドメインの状態を識別してもよい。ブラインドドメインの状態のライフサイクルを以下により詳しく説明する。ASIDによって識別されたアプリケーションに対するBDDTエントリは、所定の仮想マシン4のVMIDを、その仮想マシン4の下で実行されるアプリケーション6のASIDにマッピングするVMID‐ASID間接テーブル(VMID-to-ASID indirection table)を用いて追跡されてもよい。なお、BDDT42が、上記の状態識別子だけでなく、所定のBDと関連付けられた他の情報も含んでもよいことが理解されよう。
各ブラインドドメイン(BD)は、そのデータ又は命令を任意の他のブラインドドメインから保護できる。任意のBDが、物理アドレス空間の選択されたページの所有者BDになることを要求できる。メモリ34にはページ所有権テーブル(POT(page ownership table))50が格納され、(存在する場合は)どのBDがメモリの各物理ページの所有者BDであるかを追跡する。メモリの所定のページの(所有者プロセスとも称される)所有者BDは、そのページへのアクセスを制御する排他的な権利を有する。例えば、所有者BDは、他のBDがそのページへのアクセスを許可されるかどうかを制御する属性をページ所有権テーブル50内に設定できる。各バスマスターには、所定のページの所有者BDによって設定された許可属性を行使する保護ハードウェア60及び62が設けられ、バス30へと出力されている他のBDが所有者BDの制御する制約に違反した場合に、そのページを対象としているアクセス要求を防止する。これによって、任意のプロセスが、そのデータ又は命令に(高い特権レベルプロセスを含む)他のプロセスがアクセスするのを防止することができる。
図2に示すように、ページ所有権テーブル(POT)50は、物理アドレス空間の異なるページにそれぞれ対応する幾つかのエントリ52を含む。POT50は物理アドレスでインデックスされる。POT50の各エントリ52は以下の情報を含む。
・対応する物理ページを所有するBDのBDIDを指定する所有者BDIDフィールド54。
・対応する物理ページへのアクセスを制御する1つ以上の属性を指定する属性フィールド(attribute field)56。これらの属性は、BDIDフィールド54内で識別される所有者BDによって設定される。
・アドレスフィールド58。その所有者BDが仮想アドレス又は中間物理アドレスを使用するページ(例えばアプリケーション6及び12や仮想マシン4)に対して、そのページが所有者BDによって請求されたときに、アドレスフィールド58は、対応する物理ページの物理アドレスにマッピングされるVA又はIPAを指定する。
・(図2には示されていない)ページ状態フィールド。対応するページの状態を示す。例えば、各物理ページは以下の状態の1つであってもよい。
○無効(Invalid):どのBDにも所有されていない。
○請求(Claiming):BDIDフィールド54内で示されるBDによって請求されているプロセス内にあるが、まだ所有が有効でない。
○有効(Valid):BDIDフィールド54内で示されるBDによる所有が有効である。
・任意で、ページの所有権を請求した場合に行われる上書きプロセスの際に上書きされたページの行数を追跡する(以下により詳しく説明される)請求カウントフィールド(claim count field)60。
また、CPU24又はGPU25のレジスタ内又はメモリ34内のスタック構造内といった異なるロケーション内に請求カウンター(claim counter)60を格納することも可能であり、これによって、必要に応じて、請求カウントフィールド60をPOT50から省略できる。
所定のページに対するPOTエントリ52の属性フィールド56をそのページの所有者BDが設定することで、所有者BDによって、他のBDがページにアクセスすることを排他的に制御できるようにする。属性フィールド56は、例えば以下のような、対応するページへのアクセスを制御する属性の幅を含んでもよい。
・所有者BDID以外のどのプロセスがページにアクセスできるかを示す共有属性。例えば、共有属性は以下のページのタイプの1つを指定できる。
○プライベート(Private):BDIDフィールド54内で識別された所有者BDのみがページにアクセスできる。
○IO:BDIDフィールド54内で識別された所有者BD及び、所有者BDによって請求されている任意の装置26のみがページにアクセスできる(後述の装置所有権の請求を参照)。
○共有(Shared):所有者BD及び1つ以上の選択された他のBDがページにアクセスできるが、その他のBDはいずれもアクセスできない。選択された他のBDは、属性フィールド56の更なる属性、又はページ所有権テーブル50とは別に格納された制御データによって識別できる。
○グローバル(Global):どのBDもページにアクセスできる。
・所有者BD以外のBDがページへのアクセスを許可された場合、そのBDがページに対する読み取り専用のアクセスを有しているか、読み取り/書き込みアクセスのどちらも有しているかを示す、読み取り/書き込み属性。
・対応する物理ページに書き込まれるデータに適用される暗号のレベルを示す暗号属性。
図2に示すように、メモリ制御部32は、メモリ34に書き込まれたデータの暗号化及びメモリ34から読み取られたデータの複合化を行う暗号化回路56を含んでもよい。暗号化回路56は幾つかの秘密暗号化キーを保持してもよく、各BDIDはそれ自身のキーを有してもよい。暗号化回路56は、全く暗号化されないもの(データが暗号化することなくメモリに書き込まれる)から、連続的に強力な形態となる暗号化を通して、幾つかの異なる暗号化レベルをサポートする。一般的に、暗号化が強力なほどセキュリティが高くなり、より多くのリソースがデータの暗号化及び復号化に消費される。
幾つかの実現において、所定のBDが、自身が所有する全てのページに対して同じレベルの暗号化を指定してもよい。BDが所有する全てのページに対する暗号化が同じレベルの場合は、代替として、BDが所有するページの各POTエントリ52に代わって、BDDT42内のBDのエントリにおける暗号化レベルを指定することになるだろう。しかしながら、ページテーブル内の暗号化レベルを指定することで、暗号化回路56が、ページの所有者BD及び暗号化レベルの両方を識別するのに、POT50及びBDDT42を読み取るのではなく1つのテーブル50を読むだけで済むようになるため、処理速度を上げることができる。
しかし、他の実施形態では、所有者BDは、所有する異なるページに対して異なるレベルの暗号化を指定してもよい。ページごとに求められる暗号化レベルを所有者BDが選択できるようにすることで、最も強力な暗号化を本当にそれを必要としているページのために留保しておくことができ、それほど機密ではない情報を格納しているページには低いレベルの暗号化を用いて、電力を節約することができる。これによって、セキュリティと電力消費とのバランスが良くなる。
従って、書き込みにおいて、暗号化回路56は対象アドレスのPOTエントリ52を確認して、対応するページに適用する暗号化レベルを判断する。暗号化回路56は、そのPOTエントリ52のBDID54フィールド内で示される所有者BDに対して適切な暗号化キーを選択し、キー及び指定された暗号化レベルを用いてデータを暗号化してから、暗号化されたデータをメモリ34に書き込む。同様に、読み取りアクセスにおいて、暗号化回路56は対応するページのPOTエントリ52を確認して、必要な復号化レベル及び復号化にどの所有者BDのキーを使用すべきかを判断し、メモリ34から読み取られたデータを復号化して、その後、復号化されたデータを要求したマスターに、バス30を介してデータを出力する。
従って、各プロセスは物理アドレスの対応するページの所有者になることができ、高い特権レベルのプロセスの制御を含めて、他のプロセスがそのページにアクセスできるかどうかを排他的に制御する。これによって、例えば仮想マシン4が、ハイパーバイザ2がそのデータ又は命令にアクセスするのを防止することが可能となり、上記の問題に対処する。
ページ所有権テーブル50に設定された方針の実施は、各処理回路24,25及び28と関連付けられたブラインドドメイン管理ユニット(BDMU)60によって実行される。図3に示すように、BDMU60は、メモリ管理ユニット(MMU)40が行う任意の確認を通ったトランザクションに対して行われるトランザクション承認の更なるステージとして機能してもよい。
図3に示すように、MMU40は、それぞれがアドレストランザクションの2つのステージを提供するステージ1MMU(S1MMU)40−1とステージ2MMU(S2MMU)40−2とを含んでもよい。MMUに入力されるトランザクションは、アクセスされる仮想アドレス70と、トランザクションが読み取りトランザクション及び書き込みトランザクションのどちらであるかを指定するトランザクションタイプ属性72と、トランザクションを発行したアプリケーション6を識別するASID73と、その下でアプリケーション6が実行されている仮想マシン4を識別するVMID74とを備える。ASID及びVMIDは、共に、トランザクションが実行されたコンテキストを識別するコンテキスト識別子を形成すると考えることができる。
S1MMU40−1は、メモリ34内に格納されたステージ1(S1)ページテーブル80からエントリの一部をキャッシュするS1MMU内のローカルキャッシュである、ステージ1トランザクションルックアサイドバッファ(S1TLB)内の仮想アドレス70及びASID73をルックアップする。正規ドメインでは、S1ページテーブル80は、アプリケーション6を制御する仮想マシン4によって設定され、セキュアドメインでは、S1ページテーブル80は、セキュアOS10によって設定される。各S1ページテーブルエントリは、対応するASIDが、対応するページへの読み取り許可又は書き込み許可を有するかどうかを指定する属性と共に、仮想アドレス空間の対応するページに対するVA−PA又はVA−IPAマッピングを指定する。S1TLBがVA70及びASID73に対応するエントリを含まない場合は、ページテーブルウォークが行われて、必要なエントリをS1ページテーブル80から取り出す。必要なエントリがS1TLB内にある場合、S1MMU40−1は、読み取り/書き込み属性72によって指定されたタイプのアクセスが、指定されたASID73及び仮想アドレス70に対して許可されているかどうかを確認する。アクセスが許可されていない場合、トランザクションは拒否され、ステージ1アクセス違反があったことが知らされてもよい。一方、許可が得られている場合、入力VA70に対応する変換されたPA又はIPA75が出力される。
例外のレベルS−EL0,S−EL1,EL2又はEL3の1つにおいて入力トランザクションが発行された場合は、S1MMU40−1の出力はPAであり、ステージ2MMU40−2を回避できる。
しかしながら、EL0又はEL1で実行されるアプリケーション6又は仮想マシン4によって入力トランザクションが発行された場合は、S2MMU40−2が更なるアドレス変換及びアクセス許可確認を行う。S2MMU40−2は、エントリの一部をメモリ34内のステージ2(S2)ページテーブル82からキャッシュするステージ2TLB(S2TLB)を含む。S2ページテーブル82は、(正規ドメインについては)ハイパーバイザ2又は(セキュアドメインについては)セキュアOS10によって設定される。S2MMU40−2はS2TLBをルックアップして、指定されたIPA75及びVMID74のエントリがあるかどうかを確認し、無い場合はページテーブルウォークを行って必要なエントリをS2ページテーブル82から取り出す。必要なエントリがS2TLB内にある場合、S2MMU40−2は、属性72内で指定されたタイプのトランザクションが許可されているかどうかを確認し、許可されている場合、IPA75に対応する変換されたPA76を出力する。トランザクションが許可されていない場合、ステージ2アクセス違反があった旨のフラグが立てられ、トランザクションは拒否される。
従って、MMU40−1及び40−2の各ステージは、アクセス要求が、所定の特権レベルにおける所定のプロセスによって設定されたアクセス許可を得ているかどうかを確認するアクセス制御回路と考えられる(例えば、S1MMU40−1は、仮想マシン4又はセキュアOS10によって設定された許可を実施し、S2MMU40−2は、ハイパーバイザ2によって設定された許可を実施する)。
そして、物理アドレス76はBDMU60へと渡り、物理アドレス空間の対応するページに対するPOT50内の所有者BDによって設定された任意のアクセス制御を実施する。BDMU60は、MMU40の各ステージ内のTLBと同様に、POT50とBDDT42との一部をメモリ34からキャッシュするルックアサイドバッファを含んでもよい(以下の図9参照)。従って、BDMU60は、(EL2、EL3若しくはS−EL1からの物理的にアドレス指定されたトランザクション、又はMMU40によるVA又はIPAからの変換によって)物理アドレス76を受信すると、必要なPOTエントリ52及びBDDTエントリがそれぞれのルックアサイドバッファに存在するかどうかを確認し、存在しない場合、メモリ34から必要なエントリを取り出す。必要なエントリが得られた場合、以下の一連の確認を介して物理アドレスを承認する。
・BDMU60は現在のコンテキストBD(そこからトランザクションが生成されたBD)がBDDT42内の有効コンテキストであるかどうかを確認する。例えば、BDDT60は、VMID74及びASID73から現在のコンテキストBDのBDIDを形成して、対応するBDIDがBDDT42内で「実行」状態としてマークされているかどうかを確認する。
・BDMU60は、現在のコンテキストBDが、物理アドレス76に対応するPOTエントリ52内で所有者BD54として示されているかどうかを確認する。
・現在のコンテキストBDが所有者BDでない場合、BDMU60は、(上記の共有属性を用いて)現在のコンテキストBDがページにアクセスするのを所有者BDに許可されているかどうかを確認する。
・現在のコンテキストBDが所有者BDでない場合、BDMU60は、対応するPOTエントリの読み取り/書き込み属性を確認して、属性72で指定されたタイプのトランザクションが所有者BDに許可されているかどうかを判断する。
・現在のコンテキストBDが所有者BDである場合、BDMU60は、入力トランザクションが行われたVA70又はIPA75が、対応するPOTエントリ52のアドレスフィールド58内のVA/IPAと合致するかどうかを確認する。
・また、BDMU60は、現在のアクセスに対してS1ページテーブルエントリ内で指定された想定の共有属性が、対応するPOTエントリ内で指定された実際の共有属性と合致するかどうかも確認する。
これらのうちいずれかの確認が取れなかった場合、アクセスは拒否され、アクセス違反が生じる。それ以外の場合は、物理的アドレストランザクションは承認され、システムバス30へと出力される。なお、上記の確認が任意の順序で行われたり、少なくとも部分的に並列に行われたりしてもよいことが理解されよう。
同様に、物理アドレス空間の特定のページの所有者が、対応するPOTエントリ52の属性フィールド56内でページを「IO」タイプとしてマークしているかどうかに基づいて、BDフィルタ62が、そのページを対象とするトランザクションをシステムバス30へと出力するかどうかを制御してもよい。
従って、図4に示すように、システムバス30に接続された各バスマスター24,25,26及び28には、物理的にアドレス指定されたトランザクションを承認するBDMU60又はBDフィルタ62のいずれかが設けられてもよく、これによって、システムバスに出力された全てのトランザクションが物理アドレスを指定する承認済みのトランザクションとなるため、メモリ制御部32において更なる承認を行う必要がなくなる。或いは、代替として、BDMU機能性60をメモリ制御部32へと移動させて、MMU40によって承認済みだがページ所有者がPOT50内に設定しているどの許可ともまだ比較されていないトランザクションがバスへと出力され、そして、そのトランザクションがメモリ制御部32に到達するとPOT50と照合される。しかしながら、バスへと出力されているPOT50確認が取れないであろうトランザクションが防止され、各トランザクションと関連付けられた現在のコンテキストBDを識別するメモリ制御部に向けてバスマスターから送信される追加のタグが必要でなくなることから、バスのトラフィックが軽減するため、BDMU60を設けることは有利である。逆に言えば、ハードウェア攻撃から守るために、メモリに書き込まれるデータを暗号化できるように、暗号化/復号化回路56がメモリ制御部32に設けられるが、バスマスター24,25,26及び28自体が暗号化機能を有する必要はない。
図5は、処理回路24の1つが発行したデータアクセストランザクション(アクセス要求)が許可されているかどうかを確認する方法を示す。ステップ100において、入力トランザクションが受信されてVA70が指定される。ステップ102において、S1MMU40−1は、入力VA70と現在のコンテキスト(VMID及びASID)とに対応するエントリのS1TLBをルックアップする。S1MMU40−1は、そのエントリ内に設定されたアクセス許可の違反があるかどうかを確認する。S1アクセス違反がある場合、ステップ104においてトランザクション要求は拒否される。S1アクセス違反がない場合、変換されたIPA又はPAが出力される。また、以下により詳しく述べるように、ページのPISG状態(想定の共有属性)がS1MMU40−1によって出力される。トランザクションがEL2、EL3、S−EL0又はS−EL1で発行された場合、変換されたアドレスはPAであり、S2MMU40−2は回避される。トランザクションがEL0又はEL1で発行された場合、出力されたアドレスはIPAであり、アドレス変換の第2ステージが行われる。この場合、S2MMUMMU40−2は、同様に、IPA75と現在のコンテキスト(VMID)とに対応するエントリのS2TLBをルックアップする。そのエントリ内のアクセス許可が確認され、アクセス違反がある場合、要求はステップ104において再び拒否される。S2MMU40−2によってアクセスが許可されている場合、IPAはPA76へと変換され、BDMU60へと出力される。
従って、ステージ1アドレス変換又はステージ2アドレス変換のいずれにおいてもアクセス違反が無い場合、物理アドレスが得られる。ステップ112において、物理アドレスは、現在のコンテキストのBDIDが「実行」状態でBDDT42内に示されているかどうかを確認するBDMU60に提供される。示されていない場合、要求はステップ114において拒否される。そのBDIDは、実行状態に進むためにはまず、後述するように、「消去」及び「準備」状態を通過しなければならない。BDIDを承認するこのステップは、まだ安全に初期化されていないBDIDにアクセスを発行することで安全初期化プロセスが回避されるという事態を防止する。また、ここでも、BDDT42の最近見られた幾つかのエントリをキャッシュするローカルルックアサイドバッファがBDMU60内に保持されて、BDDTエントリの確認速度を上げることができる。
現在のコンテキストのBDIDが「実行」状態だと承認されると、ステップ116においてBDMU60は必要な物理アドレス76に対応するPOTエントリ52を確認する(POT[PA]の表記はPOTエントリ52を意味する)。また、ここでも、BDMU60内に設けられたPOTルックアサイドバッファ内でアクセスが行われて、より速いアクセスのために、最近遭遇したPOTエントリの一部をキャッシュしてもよい。BDMUは、対応するPOTエントリ52が、現在のコンテキストのBDIDを対象ページの所有者BDとして識別しているかどうかを確認する。識別していない場合、ステップ118において、BDMUは、対応するPOTエントリ52の共有属性が、現在のコンテキストの特定のBDIDと共に「グローバル」又は「共有」のいずれかにマークされているかどうかを確認する。また、BDMU60は、アクセス要求の読み取り/書き込みのタイプが、対応するPOTエントリ52の属性フィールド56内で所有者以外のBDとして定義された許可済みのタイプに合致するかどうかも確認してもよい。これらの確認が取れた場合、ステップ120において、BDMUはトランザクションを承認し、それをシステムバス30へと出力する。一方、ページが現在のコンテキストのBDIDと共有されていなかった場合(例えばページがプライベートになっていたか、他のBDのみと共有されていた場合)、又はアクセス要求が書き込みを指定したがページは読み取り専用とマークされている場合、ステップ114においてリクエストは拒否される。
一方、ステップ116において、現在のコンテキストが、対応するページの所有者BDである場合、所有者BDは自身のページへのアクセスが許可されているため、共有属性56を確認する必要はない。しかしながら、ステップ122において、トランザクションのソースが特権レベルEL0,EL1又はS−EL0にある場合、BDMU60は、トランザクションのVA又はIPAが、対応するPOTエントリ52のアドレスフィールド58内に格納されたVA又はIPAと合致するかどうかを確認する。EL0又はS−EL0で発行されたトランザクションについては、BDMU60はトランザクションのVAがアドレスフィールド58内のVAと合致するかどうかを確認し、EL1で発行されたトランザクションについては、BDMU60はトランザクションのIPAがアドレスフィールド58内のIPAと合致するかどうかを確認する。合致している場合、ステップ120においてトランザクションは承認されてバス30に出力される。アドレスが合致しない場合、ステップ114において要求は拒否される。
このような、VA又はIPAをPOT50内に記録されたVA又はIPAに対して最終確認することが有用である理由はすぐには明らかにならないだろう。そこで、以下の場合を検討する。
ハイパーバイザ2は、例えば、以下のように、2つの物理的にアドレス指定されたページPA0及びPA1を、S2ページテーブル82内のアドレスマッピングによって特定の仮想マシン4に割り当てることができる。
IPA PA
IPA4 PA1
IPA9 PA0
そして、仮想マシン4は、以下のように、これらの両方のページの所有権を得て、POT50内の共有属性を設定できる。
PA 共有?
PA0 グローバル
PA1 プライベート
そして、仮想マシン4は、例えば、(VM4がPOT50内でプライベートとしてマークされていると想定しうる)IPA4に機密データを書き込む或るコードを含み、このデータに他のプロセスがアクセスするのを防止できる。
しかしながら、VM4が、機密データを書き込むコードの安全な部分を開始する前に、ハイパーバイザ2はS2ページテーブル82を以下のように変形できる。
IPA PA
IPA4 PA0
IPA9 PA8
ここで、VM4が、中間物理アドレスIPA4を用いてそのコードの安全な部分を実行した場合、安全な部分が、「グローバル」ページであるPOT50内でマークされた異なる物理アドレスPA0にマッピングされてしまうことがある。VM4は、その機密データを「グローバル」ページに書き込み、この情報を、ハイパーバイザ2自体を含む任意の他のプロセスに露出してしまうことがある。
この問題は、POT50内に情報58を提供して、所有ページに対するアドレスマッピングを特定のマッピングに「ロック」することで防止でき、これによって、所有権属性情報がPOT50内に設定された後に他のプロセスがページテーブル80及び82内のアドレスマッピングを変更した場合にアクセス違反を生じさせることができる。例えば、所有者BDがページを請求する場合、ページを請求するときに行われる現在のVA−PA又はIPA−PAマッピングが、その物理的にアドレス指定されたページに対応するPOTエントリ52のアドレスフィールド58を用いて記録されてもよい。上記の例では、POT50は以下のようであってもよい。
PA 共有? IPA
PA0 グローバル IPA9
PA1 プライベート IPA4
その後、VM4が中間アドレスIPA4を用いてプライベートページにアクセスしようとしたときに、その間にハイパーバイザ2がIPA4をPA0へのポイントにリマッピングした場合、このアクセスの中間アドレスIPA4が、このとき物理ページPA0のPOTエントリ52内の中間アドレスIPA9と合致するため、このリマッピングを検出できる。そのため、エラーのフラグを立てることでき、VM4はその安全処理を中断して、機密情報を他のプロセスに露出することを防止する。これによって、上記のような種類の攻撃が避けられる。そして、VM4は再びIPA4及びIPA9の所有権を要求し、このときこれらのIPAにマッピングされている物理ページPA0及びPA8に必要なアクセス制御許可を設定する。
従って、逆アドレス変換を含むPOT50内のマッピングが、ページテーブル内の変化に起因する上記のような種類の攻撃を避けるのを助けることができる。上記の例では、仮想マシン4が所有するページに対するページテーブルマッピングを変形させるハイパーバイザについて述べたが、同様の技術を、アプリケーション6又は信頼アプリケーション12が所有するページに対するページテーブルマッピングを変形させる仮想マシン4を防止するのに使用でき、この場合、IPAではなくVAがアドレスフィールド58に格納されうる。
図5には示されていないが、トランザクションを承認する方法は、対象PAに対応するPOTエントリ52の「共有」属性が、対応するVAに対するS1ページテーブルエントリ内で指定された想定の属性と合致するかどうかを検証する追加のステップも含んでもよい。ページ所有者が所定のページに共有属性を設定すると(これによって、上述したようにページがプライベート、IO、共有又はグローバルのいずれかであることが示される)、S1ページテーブルの更新も生じるため、対応するページテーブルエントリが、対応する属性を指定できる。幾つかの場合では、ページテーブルエントリはまずS1TLB内でのみ更新され、そして、対応するページテーブルエントリがS1TLBから無くなると、メモリ内のS1ページテーブル80を更新できる。その後、そのページにアクセス要求が発行されると、S1MMU80は、対応するS1ページテーブルエントリ内で指定された想定の共有属性(PISGタイプ)を出力でき、BDMU60は、想定の共有属性が、PAに対応するPOTエントリ52内で指定された共有属性と合致するかどうかを確認できる。合致する場合、(上記の他の確認次第で)アクセス要求を承認できる。しかしながら、実際の共有属性がS1ページテーブルエントリ内で指定された想定の共有属性と合致しない場合、アクセス要求は拒否される。これによって、以下のような潜在的な攻撃から守られる。
例えば、所定のBDは、所定の物理ページの所有権を請求して、そのページに機密情報を書き込む準備としてプライベートとマークしてもよい。しかしながら、BDが機密情報の書き込みを開始する前に、他のBDによって同じページの所有権が請求されて、そのページがグローバルとマークされることがある。すると、前の所有者BDがページに機密情報を書き込もうとすると、現在の所有者によってページがグローバルとマークされているため、要求が承認されてしまい、機密情報を他のプロセスに露出してしまう可能性がある。これは、そのページの想定のページ共有タイプを示す対応するページテーブルエントリに情報を書き込んで、そのページにアクセスするときに、POT内に記録された実際の共有タイプがこの想定のページ共有タイプと合致するかどうかを確認することで防止できる。
上記の例では、想定の共有属性(PISGタイプ)はS1ページテーブル内で指定されるが、他の例では、これをS2ページテーブル内で指定してもよい。また、幾つかの場合では、どのプロセスが共有属性を設定するかによって、幾つかのページが、S1ページテーブル内で指定された想定の共有属性を有して、他のページが、S2ページテーブル内で指定された共有属性を有してもよい。
つまり、BDMU60は、アクセス許可確認の追加のレイヤーをMMU40の最上位に設けることで、MMU40及びBDMU60の両方で確認が取れないとトランザクションの承認ができないようにする。MMU40が、特定の特権レベルのプロセスによって設定された許可を確認する一方で(例えばEL1がS1ページテーブルを制御し、EL2がS2ページテーブルを制御する)、BDMU60が、任意の特権レベルで実行される所有者プロセスによって特定のページに適用できる許可を実施する。従って、例えばハイパーバイザ2が、まだアドレス空間の特定の領域を特定の仮想マシン4に割り当てることができて、それらの領域に他のVM4がアクセスするのをS2MMU40−2及びS2ページテーブルを用いて防止できる場合、仮想マシン4自身によって、POT50内に適切な許可を設定して、BDMU60を制御し、ハイパーバイザ2からそれらのページへの任意の要求を拒否することで、ハイパーバイザ2が、ページのその割り当てられた「プール(pool)」内の幾つかのページにアクセスするのを防止できる。これによって、各「ブラインドドメイン(blind domain)」がそのセキュリティを実施でき、システム内の他のどのドメインからもデータを隠すことができるシステムを可能にする。
図6は、BDが、書き込みアクセスを行う物理アドレス空間の任意のページの所有権を要求できる方法の例を示す。ページの所有権を要求する際、同じ物理ページの前の所有者によってそのページに既に安全データが書き込まれていることがある。異なるBD間でページの所有権が移る際にデータが漏出しないようにするために、新たな所有者は、ページの有効な所有者となる前に、要求されたページの各ロケーション内のデータを上書きする上書きプロセス150を完了させなければならないようにしてもよい。各ロケーションに書き込まれた特定のデータ値は、前のデータが上書きさえされればよく、例えば各ロケーションには0又は任意の他のダミー値が書き込まれてもよい。新たな所有者が、所有権の請求が有効となる前に、破壊的な請求シーケンスを行うことでページ内に存在する全てのデータを上書きしなければならないようにすることで、所定のページを前に所有していた特定のBDが無くなっていても(例えばハイパーバイザ2が所定のVM4の実行を終了していても)、データのセキュリティを実施できる。幾つかの例では、或る専用ハードウェアを処理回路24,25及び28内に設けて、ページ所有権が要求されると上書きシーケンスが行われるようにできる。しかしながら、以下の例では、新たな所有者BDと関連付けられたソフトウェアが、請求されているページの各ロケーションに一連の書き込みを生じさせることで上書きを行うが、そのソフトウェアを実行する処理回路24,25及び28内の或る制御ハードウェアが、新たな所有者BDが上書きプロセス150を無事に完了させているかどうかを確認して、上書きプロセス150が終了するまでPOT50内で有効とマークされるのを防ぐ。
所有権要求は、例えば、請求されるページに対応するアドレスを指定する所有権請求命令を実行する将来的な所有者BDに対応してもよい。ステップ130において、VAが指定された所有権要求が受信され、所有権が要求されたページを識別する。ステップ132において、MMU40は書き込みアクセスが指定されたページに対して許可されているかどうかを判断し、MMU40のステージ1又はステージ2のいずれかが書き込みアクセスが許可されていないと判断すると、ステップ134において要求が拒否される。従って、BDは、それ自体にデータを書き込むことを許されていないページの所有権の請求を防止される。書き込みアクセスが許可されている場合、VAが(直接又はIPAを介して)PAへと変換され、PAが出力される。
そして、この方法は、対象PAに対応するページの各ロケーション内のデータを上書きする上書き手続き150によって進められる。上記の請求カウンター60は制御ハードウェアによって用いられ、上書きプロセスの進行を追跡して、それまでに上書きされたページの行数をカウントする。ステップ152において、上書きカウンター60は、例えばページのベースアドレスからのオフセットがゼロであるアドレスといった、ページ内で最初のアドレスへのポイントに初期化される。ステップ154において、制御ハードウェアは(所有権を要求したBDである)要求者BDを待って、書き込みを生じさせる。書き込みが行われると、ステップ156において、制御ハードウェアは書き込みの対象アドレスが正しいかどうかを確認する。例えば、制御ハードウェアは要求者BDがページの各行を固定順序で反復するようにして、次のアドレスに書き込みがあるかどうか(例えば書き込みオフセットがインクリメントカウンターと合致するかどうか)を単に確認するようにしてもよい。アドレスが正しくない場合、ステップ158において、所有権要求は拒否されて、ページはPOT内で無効とマークされ、例えば、そのページに無い他のアドレスに書き込むか、同じアドレスに繰り返し書き込むことで、要求しているBDが上書き手続きを回避するのを防止する。所有権要求が拒否された場合に要求者BDが再び所有権の要求を望むと、新たな所有権要求を再び開始して、上書き手続き150を正しく完了させる必要がある。
ステップ156において対象アドレスが正しかった場合、ステップ159において制御ハードウェアは上書きカウンターをインクリメントする。ステップ160において、制御ハードウェアは、要求しているBDが、所有権請求プロセスの最後に到達したことを宣言したかどうかを確認する。例えば、要求者BDは所有権請求終了命令を実行して、上書き手続き50を終了した旨のフラグを立ててもよい。所有権請求の最後に到達していない場合は、この方法はステップ154へと戻り、上書きされるページの次の行を確認する。プロセスは、ページの各行ごとにステップ154〜160を何度も繰り返す。最後に、要求プロセスはその上書き手続き150の最後に到達したことを宣言し、ステップ162において、制御ハードウェアはページ全体に書き込みが行われたかどうか(例えば上書きカウンターがページの行数と合致するかどうか)を確認する。ページ全体に書き込みが行われていない場合、ステップ158において、所有権要求は再び拒否され、ページはPOT50内で無効としてマークされる。ページ全体に書き込みが行われている場合、ステップ164において、ページは有効としてマークされるため、このとき要求者BDはページの有効な所有者となることができ、ページへのアクセスを排他的に制御できる。また、ページのPISGタイプ(共有属性)が、対応するPOTエントリ52に書き込まれる。幾つかの場合では、新たに請求されたページが最初はデフォルトでプライベートとマークされており、新たな所有者がページをIO、共有又はグローバルに変更したい場合には、(例えば以下の図8又は図14に示すように)続いて属性の変更が必要となる。一方、最初の所有権要求において、そのページに対して指定される共有属性の値を指定可能であってもよい。また、共有属性の更新によって、S1TLB及び/又はS1ページテーブル80内の対応するページテーブルエントリの更新を生じさせて、想定の共有属性タイプをエンコードすることで、その後のメモリへのアクセスにおいて属性を共有するPOTを承認できるようにしてもよい。
ステップ166において、要求者BDがEL0又はS−EL0のプロセスである場合は、所有権要求に指定されたVAが、請求されたページのPOTエントリ52のアドレスフィールド58に書き込まれ、要求者BDがEL1のプロセスである場合は、MMUによって取得されるIPAがアドレスフィールド58に書き込まれ、逆のPA−VA又はPA−IPAマッピングをPOT内に閉じ込めて、上記のような種類の攻撃を防止する。なお、ステップ166は、他の実施形態では、例えば所有権要求を受信し次第すぐ等、より早く行われてもよいことが理解されよう。同様に、要求者プロセスのBDIDは、POTエントリ52がステップ164までに有効になることがない限りは、図6に示す方法の間いつでもPOT50に書き込まれてよい。
所有権要求を実行する、要求者BDの或る疑似コード、及び上書き手続き150の一例を以下に示す。
BD.Page.Invalidate(VA1)//broadcast page invalidate
BD.Page.Claim.Start(VA1)//requires an invalid page
line=(*64byte_ptr)VA1
do while(line<(VA1+PAGESIZE))
DCZ.WT(line++)//ordered zeroing of page
BD.Page.Claim.End(VA1)//make page valid
図7は疑似コードを説明するフロー図である。例えばアプリケーションが、仮想アドレス「VA1」に対応するページの所有権の請求を望む。要求者BDは、所有権を要求する前に、無効化命令(BD.Page.Invalidate)を実行して、BDMU60内の任意のルックアサイドバッファからのアドレスVA1と関連付けられた任意のPOTエントリを無効化する。これにより、所有権請求を受けて、古いデータがルックアサイドバッファに確実に残らなくなる。従って、図7のステップ190において、ページは最初は無効状態(Invalid state)にある。そして、要求者BDはページ請求開始命令(BD.Page.Claim.Start)を実行して所有権要求を発行する。これにより、(MMU40を用いてVA1を変換することでアドレスが取得された)物理的にアドレス指定されたページPA1が「請求(Claiming)」状態(state)へと移行する。要求者(呼び出し元)BDのBDIDは、ページPA1のPOTエントリ52のBDIDフィールド54に書き込まれる。このときPA1にマッピングされている仮想アドレスVA1はアドレスフィールド58に書き込まれる。請求カウンター(claim counter)はゼロに初期化される。
そして、要求プロセスはデータゼロ化命令(DCZ.WT)を実行して初めての上書き動作を開始する。この例では、データゼロ化命令は一度に64バイトのページをゼロにするが、他の例では、他のサイズのデータブロックにも作用できることが理解されよう。ステップ196において、制御ハードウェアは、その命令の書き込みオフセット(write offset)が請求カウント(claim count)と合致するかどうかを確認する。合致しない場合、ステップ190において要求は拒否されてページは「無効(Invalid)」状態(state)に戻るように移行するため、要求者BDは、所有権の請求を更に試みたい場合は、他のBD.Page.Claim.Start命令を実行する必要がある。一方、書き込みオフセットが請求カウントと合致する場合、ステップ198において請求カウンター60はインクリメントされ、ステップ194において要求者BDは他のデータゼロ化命令DCZ.WTを実行する。ステップ196,198及び194は、要求者BDがページ請求終了命令(BD.Page.Claim.End)を実行して全ての上書き動作が終了したことを知らせるまで繰り返される。ステップ198において、制御ハードウェアは、請求カウンターがページ内のアドレスの数と合致するかを確認する。請求カウンターのビット数がページのサイズに対応して選択されると、請求カウンターは、対応するページ内の全てのロケーションに書き込みが行われている場合はオーバーフローするため、制御ハードウェアは、1に等しいと上書き手続きが完了したことを示す、請求カウンターのオーバーフロービットを単に確認することができる。ステップ198において請求カウンターがオーバーフローしていない場合、ステップ190においてページは再び無効状態に戻るように移行し、要求者BDは、所有権の請求を再び開始する必要がある。ステップ198において請求カウンターがオーバーフローしている場合、ステップ200においてページPA1は有効(Valid)となり、所有者はこのページに対する属性を設定できる。
特定のBDIDを新たなプロセスで使用するのに再利用する場合にも、同様の破壊的な上書き手続き150を行うことができる。例えば、所定のBDIDを「無効」状態から「準備(Prepare)」状態に移行するには、BDIDをまず「消去(Scrub)」状態に移行する。ハードウェアは、「消去」状態の間、このとき所定のBDIDがPOT50内で所有者として示されている各ページ内の各アドレスを上書きするように上書き手続き150が行われているかを確認してもよい。また、ハードウェアは、そのBDIDと関連付けられた各POTエントリ52が無効化されることも求めてもよい。実際の上書き動作は、ハイパーバイザ2又は新たなBDの確立を要求する他のプロセスによってソフトウェア内で行うことができるが、ハードウェアは上書き手続きが無事に完了しているかを確認して、無事に完了するまでの間BDIDが「準備」状態に移行するのを防止してもよい。これにより、そのBDIDを有する古いプロセスと関連付けられた機密情報が、同じBDIDを共有する新たなプロセスに漏出しないようにする。
他の実施形態では「消去」状態を省略してもよいが、対応するBDIDに所有されているとしてPOT50内に記録されている各ページ内のデータを上書きする上書きプロセスが無事に完了して、そのBDIDと関連付けられた各POTエントリ52を無効化するまで、「無効」状態から「準備」状態への移行を禁止してもよい。
図8は、所定のページの所有者BDがPOT50内の属性を更新する方法を示す。ステップ210において、対象ページを識別するVA及びそのページのPOTエントリ52に書き込まれる1つ以上の属性を指定したPOT更新要求が発行される。ステップ212において、MMU40はそのページへの書き込みアクセスが許可されているかどうかを確認し、S1MMU40−1又はS2MMU40−2がアクセス違反を知らせた場合、要求は拒否される。書き込みアクセスが許可されている場合、変換されたPAが(VAから直接又はIPAを介して)取得される。
ステップ222において、物理アドレスを用いてPOT50をルックアップし、更新要求を発行した現在のコンテキストBDが必要なページの所有者BDかどうかを判断する。必要なページの所有者BDでない場合、ステップ224において要求は拒否される。
現在のコンテキストBDが、必要なページの所有者である場合、ステップ226において、アドレスフィールド58は(EL0、EL1又はS−EL0を起点とした要求である)更新要求のVA/IPAと照合され、アドレスマッピングが、POTエントリ52が割り当てられたときとまだ同じかどうかを確認する。同じでない場合、ステップ228において更新要求は拒否される。アドレスが合致すると、ステップ230において、対応するページ所有権テーブルエントリの属性が、更新要求内で指定された属性に基づいて更新される。例えば、ページの所有者は、プライベートページが共有となったり共有ページがプライベートとなったりするように属性を変更したり、そのページに対して読み取り又は書き込みが許可されているかどうかを変更したりできる。共有属性に変更があると、S1TLB内のS1ページテーブルエントリ又はページテーブル80に記録されている想定の共有属性(PISG状態)の対応する更新も生じることがある。
アドレスマッピングの変更は、どの場合でも、上記の図5に示すようにメモリアクセスが後から発行されたときに検出できるため、ステップ226は任意であり、他の実施形態ではステップ222から直接ステップ230に進むことができる。とはいえ、POT属性を更新するときにアドレスマッピングの変更のフラグが立つと、潜在的な問題が存在する旨のフラグを所有者BDに向けてより早く立てることができる。
図9に示すように、BDMU60は、POT50の最近アクセスされたエントリをキャッシュするページ所有権テーブルルックアサイドバッファ(POTLB)302と、BDDT42の最近アクセスされたエントリをキャッシュするBDDTルックアサイドバッファとを有してもよい。これらは、MMU40内のTLB300と同様に動作する。図9の下部に示すように、システムバス30と処理ユニット24,25及び28とが、POTLB302又はBDDTLB304のエントリを無効化する無効化命令をサポートしてもよい。処理ユニット24,25及び28がこれらの命令の1つを実行すると、コマンドがシステム内のBDMU60のそれぞれにバス30を介して一斉送信され、各BDMU60による、TLB302及び304からのエントリの無効化を生じさせる。命令310及び312はPOTLB302のエントリを無効化するためのものである。これらは、例えば、ページの所有権の請求又はPOT50内の属性の更新の直前に用いることができる。命令310は、BDMU60による、POTLB302からのエントリの全ての無効化を生じさせる。命令312は、BDMU60による、指定されたページアドレスに対応する、POTLB302のそうしたエントリのみの無効化を生じさせる(命令がVA又はIPAを指定した場合はMMUによってPAに変換され、物理的にアドレス指定された無効化トランザクションがBDMU60に一斉送信されて、対応するPOTエントリを無効化する)。同様に、命令314及び316は、命令314が、BDDTLB304の全てのエントリの無効化を生じさせ、命令316が、指定されたBDIDと関連付けられたエントリのみを無効化することで、BDDTLB304のエントリを無効化するためのものである。無効化を受けて、特定のBDID又はページを求める後続のアクセス要求が生じた場合は、対応するエントリをメモリ34内の主要BDDT42又はPOT50から取り出す必要があるだろう。
幾つかの場合では、同様の無効化コマンドを、所定のBDが実行する他の命令によって自動的に生成してもよい。例えば、プロセスが無効化命令を実行してPOT50のエントリを無効化すると、処理回路24及び25内、BDMU60内又はメモリ制御部32内のハードウェアによって一斉送信無効化コマンドが自動的に生成され、BDMU60内のエントリの対応する無効化が生じる。同様に、POTエントリの更新、又はBDのステータスにおけるライフサイクルの更新若しくは変更によって、BDMU60内のPOT又はBDDTエントリが無効化される。
幾つかの具体例が上述された。しかしながら、本技術はこれらの通りの例に限定されない。例えば、上記の例はページ単位でメモリブロックの所有権を管理するが、POT50は、或る他のサイズの物理アドレスブロックに対応するエントリを有してもよい(これらは複数のページであってもよいし、MMU40が用いる同じサイズのページに必ずしも対応する必要のないより適当なアドレスブロックに対応してもよい)。
上記の例は1つのページ所有権テーブル50を備えたシステムを示すが、同じシステム内に複数のPOT50が存在する場合があってもよい。例えば、物理メモリ内でばらばらになっている異なるDRAMを制御する複数のメモリ制御部が存在する場合、各メモリ制御部/DRAMに対して別々のPOT50を設けると有用となりうる。
また、上記の例は、所有者プロセスが発行しているPOTを制御及び更新するコマンドを示すが、他の例では、これらのコマンドは所有者プロセスが信頼する他のプロセスから出されてもよい。例えば、幾つかのシステムでは、POT50は、セキュリティ制御部28上で動作するプロセスによって所有者ドメインの代わりに管理されてもよい。従って、所有者プロセスが、要求されるページの所有権又はPOT50の更新を求める場合に、信頼されたプロセス(例えばセキュリティ制御部28上で動作するプロセス)によって所有権要求又は更新要求の発行を生じさせるコマンドを、信頼されたプロセスに送信してもよい。同様に、上記の上書き(破壊的な請求)プロセスは、必ずしも所有者プロセスでなくてよい信頼されたプロセスによって行われてもよい。
また、上記の例では、所有権要求又はPOT更新要求を生じさせる命令の実行を説明したが、他の例では、他の形態のコマンドによって所有権又はテーブル更新の要求が生じてもよい。例えばコマンドは、命令、POTを制御するハードウェア制御部への直接的なI/O動作、又は(信頼された)関数呼び出しであってもよい。同様に、所有権請求の開始コマンド及び終了コマンドは、必ずしも命令でなくてよく、他の形態のコマンドであってもよい。
図10はゲスト実行環境(GEE)の安全な初期化を概略的に示す。ゲスト実行環境は、例えばスタンドアロンアプリケーション、1つ以上のアプリケーションプログラムの実行をサポートする動作システム、又は更なる仮想化システムまでも、といった多くの様々な形態をとることができる。安全な初期化は、そのゲスト実行環境の実行可能コードのソースからゲスト実行環境を起動する要求を送信することで開始される。起動要求はハイパーバイザに送信される。要求は、例えば、ハイパーバイザが制御する仮想化コンピュータシステム(クラウドベースコンピューティングシステム)を用いた或る所望の処理の起動をユーザーが望んだ結果であってもよい。ゲスト実行環境の起動要求は、同時に(又は潜在的には遅れて)、ゲスト実行環境の実行の少なくとも最初の部分に対する暗号化されたバージョンの実行可能コードに伴う。この暗号化された実行可能コードは、異なる様々な方法でその対象である受信者への伝達が行われる間、そのセキュリティ保護を助けるように暗号化されてもよい。この例では、暗号化された実行可能コードは、パブリック/プライベートキーペアのパブリックキーによって暗号化される。プライベートキーペアはセキュリティ制御部によって秘密裏に保持される(後述)。
ハイパーバイザは、ハイパーバイザの通常動作のように、ゲスト実行環境の起動要求を受信して、新たな仮想マシン(VM)を作り出し、ゲスト実行環境に用いられるページを物理メモリアドレス空間に割り当て、そしてゲスト実行環境と関連付けられた他のパラメータを設定する。そしてハイパーバイザは、ゲスト実行環境の初期化要求と、暗号化された実行可能コードと、ハイパーバイザによってゲスト実行環境に割り当てられた物理メモリアドレス空間のページを示すページ識別子と、ゲスト実行環境が用いるブラインドドメイン識別子とをセキュリティ制御部に転送する。なお、通常のシステムにおいて、ハイパーバイザが大量の物理メモリアドレス空間をゲスト実行環境に割り当て、ゲスト実行環境がこの割り当てられたアドレス空間の一部又は全てをその動作に用いてもよいことが理解されよう。本実施形態の例では、セキュリティ制御部(及びその後のゲスト実行環境自体)は、まず、セキュリティ制御部及びその後ゲスト実行環境が所有するようにゲスト実行環境が使用できるものとしてハイパーバイザが既に割り当てたものの中から、使用したい物理メモリアドレス空間の任意のページを破壊的に請求する。
セキュリティ制御部は、ハイパーバイザから転送された要求を受信し、暗号化された実行可能コードのインストールが望まれる全てのページを破壊的に請求する。セキュリティ制御部は、請求及び消去しているプロセスを、請求及び消去しながら、要求されたプロセスのプロセス記述子エントリ内に示された状態「消去」へとマークする。そして実行可能コードがインストールされるとプロセスは「準備」とマークされる。セキュリティ制御部は、そのプライベートキーを用いて、受信した実行可能コードを復号化する。復号化されたコードは、セキュリティ制御部が所有するこのステージにおける請求されたページ内へと格納される。そして、復号化された実行可能コードを格納しているページは、これらがクローズしており実行の準備が整っていることを示す「実行」としてマークされる。そしてセキュリティ制御部は、請求されたページの所有権を、初期化されたゲスト実行環境に移す。このとき、当該ブラインドドメイン内におけるデフォルト且つ空のCPU実行コンテキスト構造も起動される。この実施形態の例では、セキュリティ制御部は、そのプライベートキーを実行可能コードの復号化に適用することで安全な初期化を行っている。他の実施形態の例では、安全な初期化は、セキュリティ制御部による実行可能コードの検証及び/又は安全なインストールの証明を追加で又は代わりに含んでもよい。
このステージでは、セキュリティ制御部は、このときゲスト実行環境が「実行(execute)」できる状態であることをハイパーバイザに通知する。これが「最初」の実行であることを示す状態は、当該プロセスのCPUコンテキストテーブルエントリと別々に格納されてもよい。
ハイパーバイザは、実行のためのプロセスをスケジューリングする役割を果たす。新たに初期化されたゲスト実行環境が初めて実行される時間になると、ハイパーバイザはこの実行を開始する。そしてゲスト実行環境は、セキュリティ制御部によってゲスト実行環境の所有権に移されている物理ページ内へと格納された、復号化された実行可能コードを実行する。ゲスト実行環境内で実行されるコードは、ハイパーバイザが使用可能であるとマークしたページの中から、動作に必要な任意の更なるページを破壊的に請求する。
ゲスト実行環境は様々な異なる形態をとってもよいことが理解されよう。幾つかの実施形態では、ゲスト実行環境は複数のゲストアプリケーションプログラムをサポートするフルオペレーティングシステムであってもよい。他の実施形態の例では、ゲスト実行環境は、自身のメモリページは用いるが別のオペレーティングシステム又は他の関連付けられたシステムは用いずに実行される、単一且つ剥き出しのアプリケーションであってもよい。本技術は、これらの環境及び他の環境で用いることができる。ハイパーバイザの制御下で動作するゲスト実行環境によって、別々のプロセスを互いに分離して実行する機能が提供される。また、セキュリティ制御部、ページ所有権テーブルのメカニズム及びページの所有権の破壊的な請求を設けることで、(任意の形態の)ゲスト実行環境のデータを他のゲスト実行環境及びハイパーバイザ自体によるアクセスから保護できるシステムを提供しようとしている。
この実施形態の例では、セキュリティ制御部は別々のプロセッサの形態をとる。他の実施形態の例では、セキュリティ制御部は、要求された/所望のセキュリティの特定の度合いに応じて、同じプロセッサ上で動作する信頼されたプロセス(例えばARM Limited社のTrustZoneをサポートするプロセッサ上で安全モードで動作する信頼されたプロセス)の形態、又は信頼されたハイパーバイザの形態をとってもよい。
図11は、破壊的ページ請求のプロセスを概略的に示すフロー図である。ステップ700において、処理は、ページの所有権を求める要求が受信されるまで待機する。こうした要求が受信されると、ステップ702が、通常メモリ管理ユニットが要求プロセスに関するページに対して書き込み許可を提供しているかどうかを判断する。このメモリ管理ユニットはハイパーバイザによって制御されてもよい。メモリ管理ユニットが書き込み許可を与えなかった場合、要求は拒否されて処理はステップ700に戻る。メモリ管理ユニットが書き込み許可を与えた場合、処理は、上書きカウンターが起動されるステップ704に進む。ステップ706は、所有権が要求されたページの行が上書きされたことが検出されるまで待機する。ステップ708は、これが上書きされる次の想定の行だったかどうかを判断する。この実施形態の例では、メモリのページを形成する行に連続的に書き込まれるのを想定されているものとする。想定の行が上書きされていなかった場合、所有権を請求する要求は再び失敗し、処理はステップ700に戻る。ステップ708において、想定の次の行が上書きされていると判断された場合、処理は、上書きカウンターがインクリメントされるステップ710に進む。ステップ712は、所定の値に到達した上書きカウンターによって示されるようにページ全体に書き込みが行われているかどうかを判断する。上書きカウンターが、ページ全体に上書きが行われていることを示す値にまだ到達していない場合、処理はステップ706に戻り、システムはページの次の行が上書きされるまで待機する。ページ全体に上書きが行われていた場合、ステップ714は、ページ所有権テーブル内で、今や要求者によって所有されたとしてページをマークする働きをする。
図12は、本明細書に説明されるシステムを提供するハードウェア環境800を概略的に示す。この例では、ハードウェア環境800には、複数のプロセッサ802及び804と、セキュリティ制御部806と、物理主要メモリ808と、メモリマッピング入出力装置810といったバスマスタリング装置とが設けられ、これら全てが相互接続812を介して接続されている。なお、ハードウェア環境800は、広く様々な異なる形態をとることができることが理解されよう。本技術は、例えば、テナント(クラウドカスタマー)が実行が望まれる処理タスクを有する、クラウドコンピューティングのコンテキスト内で使用するのに適している。要求されたタスクを行うのに自身の処理ハードウェアを有するのではなく、クラウドサービスプロバイダによって提供されるゲスト実行環境内で実行されるように要求されたタスクを送信する。クラウドサービスプロバイダは、ハイパーバイザプログラムによってゲスト実行環境に対する要求を受信して、上述のようにそのゲスト実行環境の実行を開始してもよい。ゲスト実行環境の実行は、設けられているクラウド実行サポートのタイプに応じて、自身を複数のプロセスに亘って、又は複数の場所にも亘って分配する。本明細書に説明されるメカニズムは、ゲスト実行環境間のセキュリティのレベルを上げようとしており、これにより、ゲスト実行環境を互いに保護させ且つハイパーバイザ自体からも保護してもよい。
図12のハードウェア実行環境800は、本明細書に説明されるようにページ所有権テーブルをサポートする。プロセッサ802及び804並びにセキュリティ制御部には、物理メモリアドレス空間のページの所有権を取得するプロセス、及び、本明細書内で説明されるように請求プロセスの一部としてそのページを上書きするプロセスを管理する働きをする所有権・上書き追跡ハードウェア(OTH)がそれぞれ設けられる。少なくとも、コンテキスト切り替えをサポートするプロセッサ802及び804内には、コンテキスト切り替えプロセスの一部として主要メモリ808内のコンテキストデータメモリにコンテキストデータを保存する働きをするコンテキスト切り替え回路(CS)も設けられる。コンテキスト切り替え回路は例外処理回路の形態をもつ。各コンテキストについてコンテキストデータメモリ814を形成する領域が当該関連付けられたプロセスに所有されることで、コンテキストデータへのアクセスを制御でき、望まれる場合は、コンテキストデータを確実にプライベートに維持できる。
図13は、現在の技術を用いたソフトウェアレイヤーモデルを概略的に示す。このソフトウェアレイヤーモデルは、最上位にあるセキュリティ制御部から、下位にあるハイパーバイザ、及びそれ自体がゲストオペレーティングシステムとゲストアプリケーションとを含んでもよいゲスト実行環境へと延在する、複数の特権レベルを含む。新たなゲスト実行環境は、ハイパーバイザの特権レベルよりも低い特権レベルで初期化される。
一実施形態の例では、特権レベルは、ゲストアプリケーションプログラムに対応する最下位から延在してもよい。次に高いレベルはゲストオペレーティングシステムであり、その後にハイパーバイザ、そしてセキュリティ制御部によって実行されるモニタープログラム又はファームウェアが続く。最上位の特権には、システム内で使用される暗号キーへのアクセス、その分配及び承認を管理するセキュリティコンプレックスを関連付けることができる。なお、他の特権レベルモデルを導入してもよいことが理解されよう。
本技術の特徴は、ページ所有権メカニズムが、ゲスト実行環境が自身が所有するページへのアクセスの制御を有するようにシステムを操作することを認める一方で、例えば、高い特権レベルを有するハイパーバイザがそれらのページにアクセスするのをゲスト実行環境が防止してもよいという点である。これは、高い特権レベルの方がより多くのアクセス権利を与えアクセス権利を制御するという一般的な想定に反する。図12に示す所有権・上書き追跡回路は、そのページに対する所有プロセスによって制御されるアクセス構成に応じて物理メモリアドレス空間内のメモリ領域の所有権利を行使する働きをしてもよい。(ページ所有権テーブル内で示される)所有プロセスは、ページ所有権を、所有プロセスに対してプライベートであるとマークするか、又は所有プロセスとメモリアクセス要求の1つ以上の更なるソースとの間で共有されるようにマークしてもよい。通常、ページは、その破壊的な請求を受けてプライベート状態へと初期化される。所有プロセスによるアクセスの共有は、図14に示すように様々な異なる形態をとってもよい。ページに対する所有プロセスは、そのページの所有権を、所有プロセス(「親」プロセス)によって初期化される「子」プロセスに移してもよい。こうした親プロセスが子プロセスを初期化して、子プロセスがまだ「準備」状態にある場合、親が所有する1つ以上のページの所有権をその子プロセスに移すことができる。子プロセスは、まず、その子プロセスに対してプライベートとマークされたこれらのページを受信する。そして子プロセスは、そう望む場合は、自身が所有するページのうちいずれかの共有されたアクセス制御ステータスを変更して、その親プロセスと共有しているという共有ステータスを示すようにしてもよい。子プロセスは、その親プロセスから新たなページを受信すると、その新たなページを子プロセスに割り当てるように破壊的な請求を行う。共有は、祖父母プロセス又は先祖階層における任意の年上のプロセスといった先祖プロセスと行うこともできる。
プロセスがページにアクセスすると、幾つかの実施形態の例では、そのページに対するその共有されたアクセス制御データが想定のプロセスと同じであるかを確認してもよい。一例として、プロセスがページを所有しており、その共有アクセス制御を「プライベート」と設定している場合、そのページに任意の機密データが格納される前に、ページがまだページ所有権テーブル内でこのように構成されているかを確認してもよい。
所有プロセスによって選択されうる共有の他の形態には、メモリマッピングされた装置とのページの共有があり、当該メモリマッピングされた装置は、アクセス制御を変更するプロセスが所有するメモリのページへとマッピングされる。こうして、プロセスが所有するメモリアドレス空間内にあるメモリマッピングされた装置には、同じプロセスが所有するメモリの或るページ又は他のページにアクセスする権利を与えられてもよい。
所有プロセスによって指定できる共有アクセスの更なる形態には、物理アドレスメモリのページがどの他のプロセスもアクセスが許可され且つどの個別のプロセスにも所有されないという、グローバル共有ステータスがある(幾つかの実施形態の例では、固有のBDIDが全てのグローバルページと関連付けられるように設けられてもよい)。所有プロセスは、確実に、その所有プロセスの機密データがそのグローバル共有されたページへと書き込まれないようにしてもよい。
図15は、所有権回路としての働きをする所有権・上書き追跡ハードウェアが、プロセスから受信された共有許可を変更する要求に対応するのにどのような働きをするかを概略的に示す。ステップ900において、処理は、共有許可を変更する要求が受信されるまで待機する。こうした要求が受信されると、ステップ902は、当該ページを所有しているとページ所有権テーブル内で示されるプロセスから、アクセス許可を変更する要求が受信されているかどうかを判断する。所有プロセスから要求が受信されると、ステップ904はその要求されたアクセス許可変更を行い(例えば図14に示すアクセス制御ステータス選択肢の1つを導入する)、処理はステップ900に戻る。ステップ902において、当該ページを所有していないプロセスからの要求と判断された場合、処理が再びステップ900に戻る前に、ステップ906が、要求された変更を無視して、任意で、間違った及び/又は不適切な変更要求が受信されたことを警告する。
図10と共に述べたように、ハイパーバイザは異なる実行環境の実行をスケジュールする働きをしてもよい。これらの異なる実行環境は、自身の物理メモリアドレス空間のページをそれぞれ所有する。ハイパーバイザが1つのゲスト実行環境の処理を停止して他のゲスト実行環境の処理を開始すると、これが実行コンテキストのスイッチとなり、このプロセスのスイッチがアクティブとなる。このコンテキストの切り替えは保護された例外対応によって行われてもよい。コンテキストの変更が生じる際のプロセッサ又はより広いシステムの状態データは、例えばレジスタ内容、設定変数及びプログラムステータス値等の多くの状態パラメータを含んでもよい。この状態データはコンテキストデータであり、他のゲスト実行環境又はハイパーバイザ自体に対しては使用可能にならないようにすることが望まれているプライベート情報を表してもよい。図16A及び図16Bは、実行コンテキストをどのように保護できるかを示すフロー図である。
ステップ1000において、処理は、強制的に他のプロセスに向かうといった、コンテキスト切り替え割り込みが受信されるまで待機する。ステップ1002は、割り込みされるプロセス(ゲスト実行環境)が所有するコンテキストデータメモリ814の一部に再始動データを保存する。この再始動データは、幾つかの実施形態の例では、割り込みされたプロセスを再始動させるのに十分な状態データとなりうるが、割り込みされたプロセスに依存する全ての状態データを含む必要はない。例として、再始動データは一般的な目的レジスタ内容を含んでもよいが、キャッシュ内容や変換ルックアサイドバッファ内容といったマイクロアーキテクチャ状態を含む必要はない。ステップ1002で割り込みされたプロセスが所有するコンテキストデータメモリ814の一部へと再始動データを保存するのに続いて、ステップ1004は、現在のプロセスに依存しており且つ他のプロセスへのスイッチを受けて任意の他のプロセスがアクセス可能となりうる状態データを、破壊的に上書きする働きをする。上書きされたデータは再始動データの上位集合であってもよい。上書きされたデータとしては、マイクロアーキテクチャデータも除外されてもよいし、新たに始動したプロセスがアクセスできない他のデータ、例えば、ページ所有権テーブル及び他のメカニズムの影響で、新たに始動したプロセスがアクセスできなくなる、割り込みされているプロセスが所有するメモリ領域内のデータも除外されてもよい。上書きは、例えば、現在のプロセスに依存するアクセス可能状態の全てを、ゼロ値、又は割り込みされているプロセスが実際に行った処理に依存しない他の所定値に設定する。そしてシステムはステップ1000に戻り、次のコンテキスト切り替え割り込みを待つ。例えば高い例外レベルへのプロセス呼び出しといった、プロセスの強制終了の場合、例えばR0〜R7といったレジスタ内容の部分集合を、他のレジスタ/状態が格納されている呼び出し対象に受け渡して、出口及び再エントリ上に復元してもよい。
図16Bに示すように、ステップ1005において、システムは新たなプロセスが開始されるまで待機する。ステップ1006は、開始される新たなプロセスが、関連付けられたステータスがCPUコンテキストデータ内で「準備完了(ready)」になっているものかどうかを判断する働きをする。プロセスが準備完了状態でない場合、これは、既に実行がスケジュールされていて且つ少なくとも一度実行されていることを示し、すなわち、実行が再始動される前に復元されるべきそれ自身のコンテキストデータを有することを示す。開始されるプロセスが「準備完了状態」でない場合、ステップ1008は、プロセスがコンテキストデータメモリ814内に所有するメモリのページから、プロセスの再始動データを復元する働きをする。開始されるプロセスが「準備完了」状態、例えば「初めての実行の準備完了」状態にある場合、ステップ1008は回避される。最後に、ステップ1010において、新たなプロセスの実行が、プロセスがステップ1005に戻って他の新たなプロセスを待つ前に開始される。
図17は、プロセス記述子テーブル内の複数のプロセス記述子エントリの1つとなりうるプロセス記述子エントリを示す。プロセス記述子エントリは、例えばブラインドドメイン識別子(BDID)を含む。また、ページ記述子エントリは、当該プロセスから切り替えられる際に当該プロセスのためのコンテキストデータが保存される(そして当該プロセスはそこから復元される)コンテキストデータメモリ814内のロケーションへのポインタ(ハンドル)も含む。このポインタは、当該プロセスが所有するメモリの領域を示す。また、ページ記述子エントリは、以下に更に述べられる現在のプロセスステータスも含む。
図18は、プロセスに対するプロセスステータス状態の例を概略的に示す。使用が中止されたプロセスは無効とマークされ、そのBDIDを新たなプロセスによって再請求できるようになる。ハイパーバイザは、プロセスの作成及びプロセス記述子エントリの設定を担当してもよい。そのプロセスの初期化は、上述したように、セキュリティ制御部と連動して行われてもよい。後続の、プロセスによって導入できる次の状態は「消去」状態である。これは、当該プロセスBDIDは請求されており、プロセスによって所有権に関連付けられたページは消去中であり、例えば当該BDIDの先の使用に対するページ所有権テーブル内に存在するエントリは削除され、そしてBDID用の新たなページが請求されて消去される(破壊的な上書きが行われる)ことを示す。消去が完了すると、当該プロセスは「準備」状態に切り替えられ、これは、当該プロセスはオープンであり、自身のページを追加する準備が整っていることを示す。ページの追加が完了すると、プロセスは「実行」状態に変化し、クローズされて実行の準備が整う。ここでは、ドメイン内のCPU実行コンテキストのステータスフィールド内に格納され、プロセス実行が開始されるときに再始動データを復元するかどうかを制御するのに用いられる第1の実行状態の準備が整う。図18は、その実行準備に沿って順番にプロセスが通過する複数のプロセス状態を含むプロセスの「ライフサイクル」を示す。これらの状態の数および特定の形態は変化してもよい。
少なくとも幾つかの実施形態の例は、プロセスを実行するかしないかを切り替える際にそのプロセスの状態データを格納するのに用いることができるブラインドドメイン実行コンテキスト(又はフレーム)BDECを含む。この状態データには、当該プロセスが既に或る実行を経験したかどうかの表示が含まれる。プロセスがまだ実行されていなかった場合、この例では、「新(new)」とマークされる(上述した「準備完了(ready)」状態を参照)。実行コンテキストデータには、プロセスが終了した時点での汎用レジスタ内容といった状態データも含まれてもよい。これらのレジスタ内容は、プロセスが再始動したときに復元されてもよい。ここでは、プロセスが(例えばソフトウェア関数呼び出しを受けて)自主的に終了したのか、(例えばハードウェア割り込みを受けて)非自主的に終了したのかを更に特定するステータスパラメータが存在し、この情報を、プロセスをどのように再始動するか、また、プロセスとして事前に形成されたアクションをどのように終了するかを制御するのに用いてもよい。コンテキストデータは、当該プロセスに対してプライベートとなるように格納されてもよい。
各BDECは、新、自発的終了(Voluntary_Exit)、非自発的終了(Involuntary_Exit)、自発的完了(Voluntary_Complete)、非自発的完了(Involuntary_Complete)、及び無効といった状態の表示を含んでもよい。BDECは、ドメインを所有する例外レベルの表示と、ドメイン用の汎用レジスタ内容(例えばR0〜R30、PC、P−State等)と、ドメイン用の例外レベルレジスタ内容(例えばTTBR_ELx等)とも含んでもよい。
一般的に、対応する物理アドレスブロックへのアクセスを例外制御する所有者プロセスが複数のプロセスであることを、対応する物理アドレスブロックにそれぞれ示す1つ以上のエントリを備える、所有権テーブルが設けられてもよい。これにより、複数のプロセスのいずれか1つが、他のプロセスによる物理アドレス空間の所定の領域へのアクセスを制限するために、その領域を排他的に制御できるようにするのに有用となる。これは、一般的なシステムでは不可能である、低い特権レベルのプロセスが、より高い特権をもつプロセスによるデータへのアクセスを制御又は制限できるようにするのに特に有用である。
一般的に、対象の物理アドレスブロックの所有権を要求する要求プロセスには幾つかの手段が存在してもよい。対象の物理アドレスブロックは、要求において直接的に識別されてもよいし、仮想アドレス又は中間アドレスを特定することで間接的に識別されてもよいし、或る他の手法で識別されてもよい。所有権要求は、例えば(上記の請求開始命令といった)専用所有権要求命令であってもよいし、所有権が所定のページに対して要求されることを示すパラメータを伴う他の種類の命令であってもよく、又は、例えば或る他のプロセスを生じさせて所有権要求を開始する或る制御情報を設定することで、要求が他の種類の所有権要求コマンド(必ずしも命令でなくてもよい)に対応してもよい。処理回路は、所有権要求に応答して、要求プロセスがこのとき対象ページの所有者になったことを示すように所有権テーブルを更新できる。従って、要求プロセスは、例えば、機密データをメモリに書き込む前に、対応するアドレスブロックの所有権を要求することで機密データを保護することができる。
所定のアドレスブロックの所有権が一方のプロセスから他方に変更する場合、機密情報が古い所有者から新たな所有者に漏出しないように幾つかの技術を用いることができる。1つの方法は、上記の例に述べられるように、所有権を要求しているプロセスが、対象ブロックに対する所有者プロセスとして有効となる前に、そのブロック内の各アドレスを上書きする上書き手続きを無事に完了させるようにすることである。これは、上書き手続きを実際に行うハードウェア、又は、上書き手続きを実行するが無事に完了したかどうかをハードウェアが確認する要求プロセスそのものか他の信頼されたプロセスかのいずれかによって実施できる。上書き手続きが無事完了したかどうかをハードウェアが確認する1つの方法として、所有権請求開始コマンドと所有権請求終了コマンドとの間で行われる1つ以上の書き込み動作において上書きされる物理アドレスに、対象ブロックの全ての物理アドレスが含まれているかどうかを確認してもよい。所有権請求開始コマンドと所有権請求終了コマンドとの間で行われる書き込みが全てのアドレスブロックを連続的に網羅していない場合、上書き手続きは失敗であり、要求者は正当には所有者になれないとしてもよい。例えば、これらの確認は、上述したように、完了した書き込みとそのアドレスオフセットとの数を追跡する請求カウント値を用いて行うことができる。なお、上書き手続きによって対象ブロックの各物理アドレスにおけるデータが無事に上書きされたかを判断する他の技術が存在してもよいことが理解されよう。
幾つかの実施形態は、メモリに書き込まれたデータを暗号化し、メモリから読み取られたデータを復号化する暗号化回路を設けてもよい。各プロセスは1つ以上の関連付けられたキーを有してもよく、また、特定のアドレスブロックに書き込まれたデータは、そのブロックの所有者と関連付けられたキーを用いて暗号化され、メモリからデータを読み戻すことで復号化されてもよい。暗号化を備えるシステムでは、1つのプロセスと関連付けられたデータが、アドレスブロックが他の所有者に移った後もメモリに残ったとしても、データは古い所有者のキーを用いて暗号化されていることから、新たな所有者はそれを読むことができないため、上書き手続きは必須でなくてもよい。
とはいえ、セキュリティの向上のために、暗号化機能がある場合でも、アドレスブロックの所有権が移されるときにそのブロックに対して上書き手続きを行うようにするのが好ましいといえる。暗号化及び上書き手続きの両方を組み合わせることは、所有者プロセスが、ブロックの所有権が移されるときにデータが失われるという危険に晒されることなく、自身が所有しているアドレスブロックのそれぞれに求められる暗号化レベルを変更できるという利益も有する。異なる暗号化モードは、例えば異なるレベル又は強さの暗号化を備えてもよい。
一般的に、所有権テーブルの対応するエントリが、現在のプロセスが対象の物理アドレスにアクセスするのを所有者プロセスに許可されていないことを示す場合に、現在のプロセスからの、そのアドレスにおけるデータへのアクセス要求を拒否するように、所有権保護回路が設けられてもよい。例えば、所有権保護回路は上記のBDMUを備えてもよいし、或いは、メモリ制御部内に設けられる或る回路であってもよい。所有者プロセスは、所有者の許可に満たない要求を拒否することで、所有するアドレスブロックへのアクセスを排他的に制御できる。
所有権保護回路に加えて、ハイパーバイザ、仮想マシン又はオペレーティングシステムといった特定のプロセスによって設定されるアクセス許可を実施するアクセス制御回路も存在してもよい。例えばアクセス制御回路は、上述したようなMMUに対応できる。アクセス制御回路が特定の特権レベルの特定のプロセスによって設定された許可を実施する(例えば、ハイパーバイザが、例えば異なる仮想マシン間でアドレス空間を区切るようにする)一方で、所有権保護回路は、そうした許可が求められるページの所有権を要求することで、どのプロセスにも、その特権レベルに関わらず他のプロセスに許可を実施させることができる。
この技術は、2つ以上のハイパーバイザ、1つ以上の仮想マシン、1つ以上のゲストオペレーティングシステム、及び1つ以上のアプリケーションをサポートするシステムに対して特に有用となりうる。しかしながら、より一般には、この技術は、複数のプロセスが共存し且つ1つのプロセスが他のプロセスによるデータへのアクセスを防止しうる任意のシステムに適用できる。
上述したように、POT50は、POTエントリ52と関連付けられたPAから、基準時点においてPAに変換されたVA又はIPAへの「逆変換マッピング」を効果的に表すアドレスフィールド58を含んでもよい。
しかしながら、同様の技術を、物理アドレスでインデックスされた任意のテーブルにもより一般的に適用でき、この物理アドレスについては、少なくとも1つのエントリが、アドレス変換回路によって対応する物理アドレスに変換された第1アドレスを識別してもよい。物理アドレスから、第1アドレスから変換された物理アドレスへの逆マッピングのスナップショットを保持することで、マッピングがまだ同じであるかどうかを後から確認することが可能になり、テーブルの内容の有効性に影響しうるアドレスマッピングにおける後続の変化を検出するのに有益となりうる。
一般的に、処理回路は、所定の物理アドレスに対応するテーブルのエントリにおいて、そのときアドレス変換回路によって所定の物理アドレスへと変換されている第1アドレスを記録することへの関連事象の発生に対応できる。関連事象は、例えば、所定の物理アドレスのテーブルへの新たなエントリの割り当てや、所定の物理アドレスのテーブルに存在するエントリにおける情報の更新や、所定のタイプの命令(例えば所定の第1アドレスを指定する命令)の実行や、又はデータ処理装置のオペレーティングモードの所定の変更(例えば安全モードへの変更)であってもよい。従って、テーブル内に記録された第1アドレスは、第1アドレスと、関連事象の際に存在していた対応する物理アドレスとの間のマッピングを表してもよい。
その後、アドレス変換回路によって対象物理アドレスへと変換される対象第1アドレスを指定するアクセス要求が受信されると、制御回路は、対象第1アドレスと対象物理アドレスに対応するテーブルのエントリが指定した第1アドレスとの間に齟齬がないかどうかを判断できる。例えば、これによって、アドレスマッピングが関連事象とまだ同時であるかどうかが効果的に判断され、テーブルに格納されている第1アドレスにつながる。これらのアドレス間に齟齬がある場合、要求を拒否するか又はエラーを知らせることができる。
幾つかの場合では、物理的にインデックスされたテーブルは、過去のアドレスマッピングを追跡すること及びそれらが後になってもまだ同じであるかどうかを検出することだけを目的に設けられてもよく、つまり、物理的にインデックスされたテーブルは、第1アドレスそのもの以外の情報を一切含む必要がない。
この技術はどの物理的にインデックスされたテーブルにも使用できるが、対応する物理アドレスブロックの所有者を示し、所有者がそれらのアドレスへのアクセスを排他的に制御できる、上述した形態の所有権テーブルに対して特に有用である。逆物理−第1アドレスマッピングをテーブル内に記録することで、アドレスマッピングの変更によって機密情報が失われうる上記のような種類の攻撃の防止を助けることができる。
幾つかの場合では、第1アドレスは仮想アドレスであってもよい。他の場合では、第1アドレスは中間物理アドレスであってもよい。また、1つのテーブルが、第1アドレスが仮想アドレスである幾つかのエントリと、第1アドレスが中間アドレスである他のエントリとを有することも可能である。
本願では、用語「…するように構成され」は、装置の要素が、定義された動作を実行することが可能な構成を有することを意味するように使用される。これに関連して、「構成」は、ハードウェア又はソフトウェアの相互接続の構造又は手法を意味する。例えば、装置が、定義された動作を提供する専用のハードウェアを有してもよいし、プロセッサ又は他の処理装置が、機能を行うようにプログラムされてもよい。「…するように構成され」は、装置要素が、定義された操作を提供するために何らかの方法で変更される必要があることを暗示するものではない。
本発明の例示的な実施形態が、添付の図面を参照して本明細書に詳細に説明されているが、本発明はこれらの通りの実施形態に限定されないこと、そして当業者によって、添付の請求項に定義される本発明の範囲及び精神から逸脱することなく、実施形態に様々な変更及び変形をもたらすことができることが理解されよう。

Claims (25)

  1. 第1アドレスを、データストア内の対応するロケーションを直接的に識別する物理アドレスへと変換するアドレス変換回路と、
    前記物理アドレスによってインデックスされた1つ以上のエントリを含むテーブルとを備えるデータ処理装置であって、
    前記エントリの少なくとも1つが、前記アドレス変換回路によって前記対応する物理アドレスに変換された第1アドレスを識別し、
    前記アドレス変換回路によって対象物理アドレスへと変換される対象第1アドレスを指定するアクセス要求に応じて、前記対象第1アドレスと前記対象物理アドレスに対応する前記テーブルの前記エントリによって指定される前記第1アドレスとの間に不一致があるかどうかを判断する制御回路を備える、データ処理装置。
  2. 関連事象に応じて、所定の物理アドレスに対応する前記テーブルの前記エントリ内に、前記アドレス変換回路によって前記所定の物理アドレスへと現在変換されている前記第1アドレスを記録する処理回路を備える、請求項1に記載の装置。
  3. 前記関連事象は、前記所定の物理アドレスに関して前記テーブルのエントリの割り当てを含む、請求項2に記載の装置。
  4. 前記関連事象は、前記所定の物理アドレスに関して前記テーブルの前記エントリ内における少なくとも幾つかの情報の更新を含む、請求項2又は3に記載の装置。
  5. 前記関連事象は、所定の種類の命令の実行を含む、請求項2〜4のいずれか一項に記載の装置。
  6. 前記関連事象は、前記データ処理装置の動作モードに対しての所定の変更を含む、請求項2〜5のいずれか一項に記載の装置。
  7. 各エントリが少なくとも1つの属性を識別し、
    前記アドレス変換回路によって対象物理アドレスへと変換される対象第1アドレスを指定するアクセス要求に応じて、前記アクセス要求に対する想定の属性と前記対象物理アドレスに対応する前記テーブルの前記エントリによって指定される前記少なくとも1つの属性のうちの1つとの間に不一致があるかどうかを判断する制御回路を備える、請求項1〜のいずれか一項に記載の装置。
  8. 前記想定の属性が、前記対象第1アドレスを前記対象物理アドレスへと変換するのに用いられるページテーブルエントリ内で指定される情報に依存する、請求項に記載の装置。
  9. 前記制御回路が、前記不一致があると判断された場合は前記アクセス要求を拒否するように構成される、請求項1〜8のいずれか一項に記載の装置。
  10. 前記制御回路が、前記不一致があると判断された場合はエラーを知らせるように構成される、請求項1〜9のいずれか一項に記載の装置。
  11. 前記第1アドレスに仮想アドレスが含まれる、請求項1〜10のいずれか一項に記載の装置。
  12. 前記第1アドレスに中間アドレスが含まれ、
    仮想アドレスを前記中間アドレスへと変換する更なるアドレス変換回路を備える、請求項1〜11のいずれか一項に記載の装置。
  13. 複数のプロセスを実行する処理回路を備える、請求項1〜12のいずれか一項に記載の装置。
  14. 前記テーブルは、前記1つ以上のエントリのそれぞれが、物理アドレスの対応するブロックについて、前記複数のプロセスのうちのどのプロセスが物理アドレスの前記対応するブロックへのアクセスを排他的に制御する所有者プロセスかを示す所有権テーブルが含まれる、請求項13に記載の装置。
  15. 前記複数のプロセスの要求プロセスが、対象第1アドレスに対応する物理アドレスの対象ブロックに対する前記所有者プロセスになることを要求する所有権要求に応じて、前記アドレス変換回路が、前記対象第1アドレスを対象物理アドレスへと変換するように構成され、前記処理回路が、前記要求プロセスが物理アドレスの前記対象ブロックの前記所有者プロセスであることを示すために前記所有権テーブルを更新するように構成される、請求項14に記載の装置。
  16. 前記処理回路が、前記所有権要求に応じて、前記対象第1アドレスを前記対象物理アドレスに対応する前記所有権テーブルの前記エントリに書き込むように構成される、請求項15に記載の装置。
  17. 前記所有権テーブルの各エントリが、対象アドレスの前記対応するブロックへのアクセスを制御するために前記所有者プロセスによって設定される少なくとも1つの属性を含む、請求項14〜16のいずれか一項に記載の装置。
  18. 前記少なくとも1つの属性が、
    前記所有者プロセス以外の他のプロセスが、前記対応するブロックにアクセスすることを許可されているかどうか、
    前記他のプロセスが、前記対応するブロックに対する読み取り又は書き込みを許可されているかどうか、及び
    前記対応するブロックに格納されたデータに適用される暗号化のレベル、のうちの1つ以上を指定する、請求項17に記載の装置。
  19. 対象物理アドレスに対応する前記所有権テーブルの前記エントリによって、アクセス要求を出した前記プロセスが前記対象物理アドレスにアクセスすることを前記所有者プロセスが許可していない旨が示された場合に、前記アドレス変換回路によって前記対象物理アドレスへと変換される対象第1アドレスを指定する前記アクセス要求を拒否する制御回路を備える、請求項14〜18のいずれか一項に記載の装置。
  20. 前記制御回路が、前記所有者プロセスによって前記アクセス要求が出されて、前記対象第1アドレスと前記対象物理アドレスに対応する前記所有権テーブルの前記エントリ内で指定される前記第1アドレスとの間に不一致がある場合には、前記アクセス要求を拒否するように構成される、請求項19に記載の装置。
  21. 前記複数のプロセスが複数の異なる特権レベルのプロセスを含み、
    低い特権レベルを有するプロセスが前記所有者プロセスである物理アドレスの少なくとも1つのブロックに対して、前記所有権テーブルの対応するエントリが、高い特権レベルを有するプロセスが対象アドレスのそのブロックにアクセスすることを許可されているかどうかを指定する、請求項14〜20のいずれか一項に記載の装置。
  22. 前記アドレス変換回路が、仮想アドレスを中間アドレスへと変換する第1アドレス変換回路と、前記中間アドレスを前記物理アドレスへと変換する第2アドレス変換回路とを備え、
    第1の種類の所有者プロセスを指定する前記所有権テーブルのエントリでは、前記第1アドレスに前記仮想アドレスが含まれ、
    第2の種類の所有者プロセスを指定する前記所有権テーブルのエントリでは、前記第1アドレスに前記中間アドレスが含まれる、請求項14〜21のいずれか一項に記載の装置。
  23. 前記アドレス変換回路が、前記複数のプロセスの所定のプロセスの制御下で設定されたアドレスマッピングデータに基づいて、前記第1アドレスを前記物理アドレスへと変換するように構成される、請求項13〜22のいずれか一項に記載の装置。
  24. 第1アドレスを、データストア内の対応するロケーションを直接的に識別する物理アドレスへと変換する手段と、
    前記物理アドレスによってインデックスされた1つ以上のエントリを格納する手段とを備えるデータ処理装置であって、
    前記エントリの少なくとも1つが、前記変換する手段によって前記対応する物理アドレスに変換された第1アドレスを指定し、
    前記変換する手段によって対象物理アドレスへと変換される対象第1アドレスを指定するアクセス要求に応じて、前記対象第1アドレスと前記対象物理アドレスに対応する前記格納する手段の前記エントリによって指定される前記第1アドレスとの間に不一致があるかどうかを判断する手段を備える、データ処理装置。
  25. 対象第1アドレスを指定するアクセス要求に応じて、前記対象第1アドレスを、データストア内の対応するロケーションを直接的に識別する対象物理アドレスへと変換することと、
    それぞれが物理アドレスに対応する1つ以上のエントリを含むテーブルにアクセスして、アドレス変換回路によって前記対応する物理アドレスに変換された第1アドレスを識別することと、
    前記アクセス要求によって指定される前記対象第1アドレスと、前記対象物理アドレスに対応する前記テーブルの前記エントリ内で指定される前記第1アドレスとの間に不一致があるかどうかを判断することとを含むデータ処理方法。
JP2017564105A 2015-06-16 2016-04-28 アドレス変換 Active JP6738354B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1510527.3 2015-06-16
GB1510527.3A GB2539429B (en) 2015-06-16 2015-06-16 Address translation
PCT/GB2016/051199 WO2016203192A1 (en) 2015-06-16 2016-04-28 Address translation

Publications (2)

Publication Number Publication Date
JP2018524691A JP2018524691A (ja) 2018-08-30
JP6738354B2 true JP6738354B2 (ja) 2020-08-12

Family

ID=53784793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017564105A Active JP6738354B2 (ja) 2015-06-16 2016-04-28 アドレス変換

Country Status (9)

Country Link
US (1) US10936504B2 (ja)
EP (1) EP3311281B1 (ja)
JP (1) JP6738354B2 (ja)
KR (1) KR102694074B1 (ja)
CN (1) CN107690629B (ja)
GB (1) GB2539429B (ja)
IL (1) IL255680B (ja)
TW (1) TWI713522B (ja)
WO (1) WO2016203192A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2546742B (en) * 2016-01-26 2019-12-11 Advanced Risc Mach Ltd Memory address translation management
US10514943B2 (en) * 2016-11-17 2019-12-24 Qualcomm Incorporated Method and apparatus for establishing system-on-chip (SOC) security through memory management unit (MMU) virtualization
US10649678B2 (en) 2017-01-13 2020-05-12 Arm Limited Partitioning of memory system resources or performance monitoring
US20180203807A1 (en) 2017-01-13 2018-07-19 Arm Limited Partitioning tlb or cache allocation
US10268379B2 (en) 2017-01-13 2019-04-23 Arm Limited Partitioning of memory system resources or performance monitoring
US10664306B2 (en) 2017-01-13 2020-05-26 Arm Limited Memory partitioning
US10394454B2 (en) 2017-01-13 2019-08-27 Arm Limited Partitioning of memory system resources or performance monitoring
US10664400B2 (en) 2017-07-11 2020-05-26 Arm Limited Address translation cache partitioning
US10846239B2 (en) * 2018-11-29 2020-11-24 Marvell Asia Pte, Ltd. Managing translation lookaside buffer entries based on associativity and page size
US10740239B2 (en) * 2018-12-11 2020-08-11 International Business Machines Corporation Translation entry invalidation in a multithreaded data processing system
US11461244B2 (en) * 2018-12-20 2022-10-04 Intel Corporation Co-existence of trust domain architecture with multi-key total memory encryption technology in servers
US10949357B2 (en) * 2019-01-24 2021-03-16 Texas Instruments Incorporated Real time input/output address translation for virtualized systems
US10872458B1 (en) * 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing
US11256625B2 (en) 2019-09-10 2022-02-22 Arm Limited Partition identifiers for page table walk memory transactions
KR20220032808A (ko) 2020-09-08 2022-03-15 삼성전자주식회사 프로세싱-인-메모리, 메모리 액세스 방법 및 메모리 액세스 장치
CN113656331A (zh) * 2021-10-20 2021-11-16 北京微核芯科技有限公司 基于高低位的确定访问地址的方法和装置
US11775444B1 (en) 2022-03-15 2023-10-03 International Business Machines Corporation Fetch request arbiter
WO2024172950A1 (en) * 2023-02-14 2024-08-22 Qualcomm Incorporated Compressing translation lookaside buffer (tlb) tags using a tlb metadata buffer in processor-based devices

Family Cites Families (81)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3454854B2 (ja) 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
JP2007280421A (ja) 1994-09-09 2007-10-25 Renesas Technology Corp データ処理装置
US5623632A (en) 1995-05-17 1997-04-22 International Business Machines Corporation System and method for improving multilevel cache performance in a multiprocessing system
US5815701A (en) 1995-06-29 1998-09-29 Philips Electronics North America Corporation Computer method and apparatus which maintains context switching speed with a large number of registers and which improves interrupt processing time
US5754762A (en) 1997-01-13 1998-05-19 Kuo; Chih-Cheng Secure multiple application IC card using interrupt instruction issued by operating system or application program to control operation flag that determines the operational mode of bi-modal CPU
US6085296A (en) 1997-11-12 2000-07-04 Digital Equipment Corporation Sharing memory pages and page tables among computer processes
JP2000276405A (ja) 1999-01-19 2000-10-06 Matsushita Electric Ind Co Ltd アドレス変換装置及びこのアドレス変換装置を有するコンピュータシステム
JP2001297035A (ja) 2000-04-11 2001-10-26 Hitachi Ltd 情報処理装置
US6886085B1 (en) 2000-04-19 2005-04-26 International Business Machines Corporation Method and apparatus for efficient virtual memory management
US6859867B1 (en) * 2000-05-31 2005-02-22 Intel Corporation Translation and protection table and method of using the same to validate access requests
US6742103B2 (en) * 2000-08-21 2004-05-25 Texas Instruments Incorporated Processing system with shared translation lookaside buffer
US6789156B1 (en) 2001-05-22 2004-09-07 Vmware, Inc. Content-based, transparent sharing of memory units
US6745307B2 (en) * 2001-10-31 2004-06-01 Hewlett-Packard Development Company, L.P. Method and system for privilege-level-access to memory within a computer
US6854039B1 (en) * 2001-12-05 2005-02-08 Advanced Micro Devices, Inc. Memory management system and method providing increased memory access security
US7278030B1 (en) 2003-03-03 2007-10-02 Vmware, Inc. Virtualization system for computers having multiple protection mechanisms
US7503049B2 (en) 2003-05-29 2009-03-10 Panasonic Corporation Information processing apparatus operable to switch operating systems
US7356665B2 (en) 2003-12-17 2008-04-08 International Business Machines Corporation Method and system for machine memory power and availability management in a processing system supporting multiple virtual machines
US9152785B2 (en) 2004-01-30 2015-10-06 Hewlett-Packard Development Company, L.P. Providing a flexible protection model in a computer system by decoupling protection from computer privilege level
TWI258662B (en) 2004-03-03 2006-07-21 Faraday Tech Corp Method and apparatus of determining whether a virtual address corresponds to a physical address in a translation lookaside buffer
JP2005275629A (ja) 2004-03-23 2005-10-06 Nec Corp マルチプロセッサシステム、及び、メモリアクセス方法
US7401230B2 (en) 2004-03-31 2008-07-15 Intel Corporation Secure virtual machine monitor to tear down a secure execution environment
US7206915B2 (en) * 2004-06-03 2007-04-17 Emc Corp Virtual space manager for computer having a physical address extension feature
US7330942B2 (en) * 2004-07-31 2008-02-12 Hewlett-Packard Development Company, L.P. Method for efficient virtualization of physical memory in a virtual-machine monitor
US20060184719A1 (en) * 2005-02-16 2006-08-17 Sinclair Alan W Direct data file storage implementation techniques in flash memories
US7334076B2 (en) 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US20060294288A1 (en) 2005-06-24 2006-12-28 Rohit Seth System and method for using protection keys to emulate a large region identifier space
JP2007004661A (ja) 2005-06-27 2007-01-11 Hitachi Ltd 仮想計算機の制御方法及びプログラム
US8423747B2 (en) 2008-06-30 2013-04-16 Intel Corporation Copy equivalent protection using secure page flipping for software components within an execution environment
US7545381B2 (en) 2005-11-10 2009-06-09 Via Technologies, Inc. Interruptible GPU and method for context saving and restoring
US7657754B2 (en) * 2005-12-08 2010-02-02 Agere Systems Inc Methods and apparatus for the secure handling of data in a microcontroller
US7809903B2 (en) * 2005-12-15 2010-10-05 Intel Corporation Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions
US7702743B1 (en) 2006-01-26 2010-04-20 Symantec Operating Corporation Supporting a weak ordering memory model for a virtual physical address space that spans multiple nodes
US7739474B2 (en) * 2006-02-07 2010-06-15 International Business Machines Corporation Method and system for unifying memory access for CPU and IO operations
US7950020B2 (en) 2006-03-16 2011-05-24 Ntt Docomo, Inc. Secure operating system switching
US7870336B2 (en) 2006-11-03 2011-01-11 Microsoft Corporation Operating system protection against side-channel attacks on secrecy
US8380987B2 (en) 2007-01-25 2013-02-19 Microsoft Corporation Protection agents and privilege modes
US8001336B2 (en) 2007-03-02 2011-08-16 International Business Machines Corporation Deterministic memory management in a computing environment
KR100874948B1 (ko) 2007-06-18 2008-12-19 한국전자통신연구원 권한 수준 위반 프로세스 관리 장치 및 방법
WO2009001153A1 (en) * 2007-06-28 2008-12-31 Nokia Corporation Memory protection unit in a virtual processing environment
US7856536B2 (en) 2007-10-05 2010-12-21 International Business Machines Corporation Providing a process exclusive access to a page including a memory address to which a lock is granted to the process
US8195912B2 (en) 2007-12-06 2012-06-05 Fusion-io, Inc Apparatus, system, and method for efficient mapping of virtual and physical addresses
US7966453B2 (en) 2007-12-12 2011-06-21 International Business Machines Corporation Method and apparatus for active software disown of cache line's exlusive rights
JP4643702B2 (ja) 2008-10-27 2011-03-02 株式会社東芝 マイクロプロセッサ
CN101782954B (zh) * 2009-01-20 2013-05-01 联想(北京)有限公司 一种异常进程的检测装置及方法
CN102460376B (zh) 2009-06-26 2016-05-18 英特尔公司 无约束事务存储器(utm)系统的优化
US9077654B2 (en) 2009-10-30 2015-07-07 Iii Holdings 2, Llc System and method for data center security enhancements leveraging managed server SOCs
GB2474666B (en) 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
WO2011074168A1 (ja) 2009-12-14 2011-06-23 パナソニック株式会社 情報処理装置
CN102117184B (zh) * 2010-01-05 2017-06-27 联想(北京)有限公司 用于多存储器的控制器、终端设备及其启动和访问方法
US8793439B2 (en) 2010-03-18 2014-07-29 Oracle International Corporation Accelerating memory operations using virtualization information
JP5612681B2 (ja) 2010-05-24 2014-10-22 パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、領域管理方法、及びプログラム
GB2481232A (en) 2010-06-16 2011-12-21 Advanced Risc Mach Ltd Cache for a multiprocessor system which can treat a local access operation as a shared access operation
US8392628B2 (en) 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
US10013058B2 (en) 2010-09-21 2018-07-03 Apple Inc. Touch-based user interface with haptic feedback
GB2483906C (en) 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus
GB2483907A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
US9152573B2 (en) 2010-11-16 2015-10-06 Vmware, Inc. Sharing memory pages having regular expressions within a virtual machine
WO2012117465A1 (ja) 2011-03-02 2012-09-07 パナソニック株式会社 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
US20130070513A1 (en) 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Method and apparatus for direct backup of memory circuits
US8788763B2 (en) 2011-10-13 2014-07-22 International Business Machines Corporation Protecting memory of a virtual guest
US9170940B2 (en) 2011-12-07 2015-10-27 Intel Corporation Techniques to prelink software to improve memory de-duplication in a virtual system
GB2497736A (en) 2011-12-16 2013-06-26 St Microelectronics Ltd Hardware monitor with context selector for selecting from multiple contexts
WO2013101053A1 (en) 2011-12-29 2013-07-04 Intel Corporation Non-volatile ram disk
WO2013101208A1 (en) * 2011-12-30 2013-07-04 Intel Corporation Hardware enforced memory access permissions
DE102012201225A1 (de) 2012-01-27 2013-08-01 Continental Automotive Gmbh Rechnersystem
TWI480733B (zh) 2012-03-29 2015-04-11 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
JP5914145B2 (ja) 2012-05-01 2016-05-11 ルネサスエレクトロニクス株式会社 メモリ保護回路、処理装置、およびメモリ保護方法
US9037558B2 (en) 2012-05-25 2015-05-19 International Business Machines Corporation Management of long-running locks and transactions on database tables
US8825550B2 (en) 2012-08-23 2014-09-02 Amazon Technologies, Inc. Scaling a virtual machine instance
US9330017B2 (en) * 2012-11-02 2016-05-03 International Business Machines Corporation Suppressing virtual address translation utilizing bits and instruction tagging
WO2014100279A1 (en) 2012-12-18 2014-06-26 Dynavisor, Inc. Dynamic device virtualization
US9747052B2 (en) * 2013-02-05 2017-08-29 Arm Limited Virtualisation supporting guest operating systems using memory protection units to determine permission of a memory access operation for a physical address
US9183399B2 (en) 2013-02-14 2015-11-10 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
JP6048710B2 (ja) * 2013-02-28 2016-12-21 パナソニックIpマネジメント株式会社 暗号化記録装置、および暗号化記録方法
CN104246721B (zh) 2013-03-29 2017-02-22 株式会社东芝 存储系统、存储控制器及存储控制方法
GB2514107B (en) 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
GB2515536A (en) 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
GB2519108A (en) 2013-10-09 2015-04-15 Advanced Risc Mach Ltd A data processing apparatus and method for controlling performance of speculative vector operations
US20150268985A1 (en) 2014-03-24 2015-09-24 Freescale Semiconductor, Inc. Low Latency Data Delivery
US9575778B2 (en) 2014-05-20 2017-02-21 Via Alliance Semiconductor Co., Ltd. Dynamically configurable system based on cloud-collaborative experimentation
US9589105B2 (en) 2015-03-25 2017-03-07 International Business Machines Corporation Securing protected health information based on software designation

Also Published As

Publication number Publication date
IL255680B (en) 2020-02-27
IL255680A (en) 2018-01-31
TW201701159A (zh) 2017-01-01
KR102694074B1 (ko) 2024-08-12
GB201510527D0 (en) 2015-07-29
CN107690629A (zh) 2018-02-13
JP2018524691A (ja) 2018-08-30
US20180173641A1 (en) 2018-06-21
EP3311281A1 (en) 2018-04-25
GB2539429B (en) 2017-09-06
TWI713522B (zh) 2020-12-21
CN107690629B (zh) 2022-01-18
KR20180017096A (ko) 2018-02-20
WO2016203192A1 (en) 2016-12-22
GB2539429A (en) 2016-12-21
EP3311281B1 (en) 2019-05-22
US10936504B2 (en) 2021-03-02

Similar Documents

Publication Publication Date Title
JP6738354B2 (ja) アドレス変換
JP6966333B2 (ja) 安全な初期化
JP6893479B2 (ja) 所有権テーブルを用いたデータ処理装置及び方法
JP6913636B2 (ja) 共有ページ
KR102592377B1 (ko) 보호된 예외 핸들링

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190422

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200204

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200501

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200624

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200717

R150 Certificate of patent or registration of utility model

Ref document number: 6738354

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250