JP2023519322A - 装置及び方法 - Google Patents

装置及び方法 Download PDF

Info

Publication number
JP2023519322A
JP2023519322A JP2022558202A JP2022558202A JP2023519322A JP 2023519322 A JP2023519322 A JP 2023519322A JP 2022558202 A JP2022558202 A JP 2022558202A JP 2022558202 A JP2022558202 A JP 2022558202A JP 2023519322 A JP2023519322 A JP 2023519322A
Authority
JP
Japan
Prior art keywords
memory
address
translation
access
information
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.)
Pending
Application number
JP2022558202A
Other languages
English (en)
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 JP2023519322A publication Critical patent/JP2023519322A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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
    • 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/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/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • 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/1466Key-lock mechanism
    • G06F12/1475Key-lock mechanism in a virtual system, e.g. with translation means
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0629Configuration or reconfiguration of storage systems
    • G06F3/0637Permissions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • 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/1016Performance improvement
    • G06F2212/1024Latency reduction
    • 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/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • 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

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)
  • Human Computer Interaction (AREA)
  • Storage Device Security (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Diaphragms For Electromechanical Transducers (AREA)

Abstract

Figure 2023519322000001
装置は、第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換回路であって、変換回路は、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換回路と、所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可回路と、許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータへのアクセスを許可するアクセス回路と、を備え、アクセス回路は、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、変換回路によるその変換情報アドレスへのアクセスを選択的に許可するように構成されている、装置が提供される。
【選択図】図13

Description

本開示は装置及び方法に関する。
データ処理システムは、メモリアクセス要求の仮想アドレスをメモリシステム内のアクセスされるべき位置に対応する物理アドレスに変換するためのアドレス変換回路を有することができる。
そのようなアドレス変換を生成するプロセスは、それ自体が複数のメモリアクセスを必要とし得る。
例示的な構成では、装置であって、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換回路であって、変換回路は、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換回路と、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可回路と、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータへのアクセスを許可するアクセス回路と、を備え、
アクセス回路は、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、変換回路によるその変換情報アドレスへのアクセスを選択的に許可するように構成されている、装置が提供される。
別の例示的な構成では、方法であって、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行することであって、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成することを含む、ことと、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行することと、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータにアクセスすることと、
メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、その変換情報アドレスに選択的にアクセスすることと、
を含む、方法が提供される。
別の例示的な構成では、ターゲットコードを実行するための命令実行環境を提供するホストデータ処理装置を制御するコンピュータプログラムであって、コンピュータプログラムが、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換ロジックであって、変換ロジックは、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換ロジックと、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可ロジックと、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータへのアクセスを許可するアクセスロジックと、を備え、
アクセスロジックは、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可ロジックが完了することなく、変換ロジックによるその変換情報アドレスへのアクセスを選択的に許可するように構成されている、コンピュータプログラムが提供される。
更なるそれぞれの態様及び特徴は、添付の特許請求の範囲によって定義される。
添付図面に示されるそれらの実施形態を参照して、あくまで一例として本技術を更に説明する。
データ処理装置の例を概略的に示す。 処理回路が動作することができるいくつかの領域を示す。 グラニュール保護ルックアップをサポートする処理システムの例を示す。 いくつかの物理アドレス空間の、メモリシステム内の場所を識別するシステム物理アドレス空間上での別名化を概略的に示す。 有効なハードウェア物理アドレス空間を分割し、それによってアーキテクチャ上の異なる物理アドレス空間が、システム物理アドレス空間のそれぞれの部分へのアクセスを有する例を示す。 データ暗号化及び復号化を概略的に示す。 データ暗号化及び復号化を概略的に示す。 例示的なメモリ管理ユニット(MMU)動作の一態様を概略的に示す。 単一段階MMUを概略的に示す。 2段階MMUを概略的に示す。 (それぞれ)、グラニュール保護動作を有する2段階MMU及び単一段階MMUの動作を概略的に示す。 (それぞれ)、グラニュール保護動作を有する2段階MMU及び単一段階MMUの動作を概略的に示す。 グラニュール保護動作の少なくとも部分的な削除を伴う単一段階MMUを概略的に示す。 グラニュール保護動作の少なくとも部分的な削除を伴う2段階MMUを概略的に示す。 グラニュール保護動作の延期を伴うMMU動作を概略的に示す。 グラニュール保護動作の延期を伴うMMU動作を概略的に示す。 方法を示す概略フローチャートである。 使用される可能性のあるシミュレータの例を示す。
添付図面を参照して実施形態を検討する前に、以下の実施形態を説明する。
例示的な実施形態は、装置であって、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換回路であって、変換回路は、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換回路と、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可回路と、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータにアクセスするアクセス回路と、を備え、
アクセス回路は、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、その変換情報アドレスに選択的にアクセスするように構成されている、装置を提供する。
本開示は、例えばメモリ管理ユニット又はMMUなどの変換回路によって実行されるような動作自体が多くのメモリアクセスを含み得ることを認識する。それらのアクセスの各々の前に許可情報を取得する必要がある場合、許可情報の取得は、特に許可情報がメモリにも保持される場合に、変換の生成に大きなオーバーヘッドを導入する可能性がある。これは、多段階MMUの状況では特に問題となり得る。
例示的な構成では、完了した許可情報を取得するプロセスがない場合、変換を生成するために変換回路によって使用される情報(いわゆるページテーブルエントリなど)である少なくともいくつかの変換情報へのアクセスが許可される。
そのような構成は、メモリアドレス変換の取得に関連するレイテンシを低減するのに役立ち得る。
これらの構成は変換回路による読み出し及び書き込み動作に適用することができるが、例示的な実施形態では、(a)変換を取得することに関連するレイテンシの大部分は、一般に変換回路による読み出し動作に関連し、(b)完了した許可情報を取得するプロセスがない場合に先行することは、構成が変換回路による読み出し動作に制限されている場合、潜在的にセキュリティリスクが低いことに留意されたい。したがって、例示的な実施形態では、アクセス回路は、その変換情報アドレスへのアクセスが読み出しアクセスに関連する場合、許可回路が許可情報を検出する動作を完了することなく、その変換情報アドレスにアクセスするように構成され、アクセス回路は、その変換情報アドレスへのアクセスが書き込みアクセスに関連する場合に、その変換情報アドレスへのメモリアクセスが許可されていることを許可情報が示す場合にのみ、その変換情報アドレスにアクセスするように構成される。
いくつかの例では、許可回路は、所与の第2のメモリアドレスに適用可能なストレージタイプを検出するための更なる動作を実行するように構成され、ストレージタイプは、少なくとも、第1のストレージタイプ又は第2の、異なるストレージタイプが所与の第2のメモリアドレスに適用可能であるかどうかである。例えば、アクセス回路は、変換情報アドレスに適用可能なストレージタイプが第1のストレージタイプである場合にのみ、メモリアクセスがその変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、変換情報アドレスへアクセスするように構成され得る。これは、第1のストレージタイプが、所与のアドレスに記憶されたデータが所与のアドレスからの読み出し動作によって変更されないストレージタイプである場合に特に関連する。例えば、別のストレージタイプは、所与のアドレスに記憶されたデータが所与のアドレスからの読み出し動作によって潜在的に変更されるストレージタイプ、例えば、読み出し動作が後続の読み出し動作によって読み出されるデータの性質を変更する先入れ先出し(FIFO)レジスタなどのレジスタにマッピングするアドレスなどの入出力回路に関連するストレージタイプであってもよい。
例示的な構成では、許可情報を検出する動作は延期されてもよいが、他の例では省略又は削除されてもよい。少なくとも部分的な削除の場合の一例として、許可回路は、変換情報アドレスの少なくとも一部に関して許可情報を検出する動作を実行しないように構成される。許可情報を取得していない場合に進行することから生じるセキュリティリスクを回避するための更なる対策として、変換回路は、許可情報を検出する動作が完了していないことに関して、変換情報アドレスから取得された変換情報を、変換回路(又は実際には変換回路にアクセスするプロセッサ上で実行されるソフトウェア)の外部の回路への出力として提供しないように構成され得る。
本開示は、所与の第1のメモリアドレスの変換に適用可能な変換情報は、次の変換情報エントリの変換情報アドレスを表すデータが先行する変換情報エントリによって示される、変換情報エントリ(例えば、いわゆるページテーブルエントリ又はPTE)の階層を含む、変換回路に特に適用可能である。このような構成では、次の変換情報エントリの変換情報アドレスを表すデータは、次の変換情報エントリに適用可能な第1のメモリアドレスの少なくとも一部を示すことができ、変換回路は、それぞれの変換情報アドレスを生成するために変換動作を実行するように構成される。
そのような構成は、許可情報の取得の延期の文脈において、例えば、許可回路は、次の変換情報エントリに対する許可情報を検出するための動作の開始を、その次の変換情報エントリへのアクセスの開始後まで延期するように構成される構成において有用であり得る。
変換回路は、メモリアクセストランザクションに関して動作可能であり、各メモリアクセストランザクションは、変換のための第1のメモリアドレスに関連付けられており、変換回路は、変換された第2のメモリアドレスを各メモリアクセストランザクションに関連付けており、許可回路は、各メモリアクセストランザクションについて変換された第2のメモリアドレスに関する許可情報を検出するための動作を実行するように構成され、アクセス回路は、変換された第2のメモリアドレスへのアクセスが許可データによって許可された場合にのみ、メモリアクセストランザクションについて変換された第2のメモリアドレスへのアクセスの結果を提供するように構成されていてもよい。
変換回路の動作に関する例示的な構成では、第1のメモリアドレスは、仮想メモリアドレス及び中間物理アドレスのうちの1つを含むことができ、第2のメモリアドレスは物理メモリアドレスを含むことができる。
本技術は、複数のメモリパーティションを有するメモリでの使用に特に適しており、各データメモリパーティションは、パーティション識別子に関連付けられ、物理アドレス空間内の物理アドレスのそれぞれの範囲を有する。ここで、許可回路は、第2のメモリアドレスに関連付けられた区域識別子を検出し、区域識別子は複数の区域識別子から選択されており、各区域識別子は、メモリパーティションのそれぞれのセットへのアクセス許可を示す働きをしており、区域識別子のうちの少なくとも1つについて、メモリパーティションのそれぞれのセットは、メモリパーティションのすべてではないが1つ以上のサブセットを含み、検出された区域識別子を第2のメモリアドレスに関連付けられたパーティション識別子と比較する、許可情報を検出する動作として構成されてもよい。
メモリアクセスを回避するための更なるセキュリティ層が誤った区域識別子で行われるので、装置は、メモリによる記憶のためにデータを暗号化し、メモリから取得されたデータを復号化するための暗号化及び復号化回路を備えることができる。暗号化及び復号化回路は、暗号化及び対応する復号化のセットのうちのそれぞれの暗号化及び対応する復号化を各メモリパーティションに適用するように構成され、暗号化及び対応する復号化のセットは、所与のメモリパーティションのそれぞれの暗号化によってそのメモリパーティションに暗号化されたデータは、別のメモリパーティションの復号化を適用することによって復号化され得ないようなものである。
例示的な配置では、許可回路は、変換された第2のメモリアドレスに、変換された第2のメモリアドレスに関連付けられた区域識別子を示すデータを関連付けるように構成される。
暗号化及び復号化動作は、暗号化及び復号化回路が、変換された第2のメモリアドレスにおいてメモリから取得されたデータを復号化するために、その変換された第2のメモリアドレスに関連付けられた区域識別子を示すデータに従って選択された復号化を適用することによって、復号化を適用するように構成され得る。
許可情報を検出する動作が完了していない場合のメモリアクセスの使用から生じるセキュリティリスクを軽減するための更なる対策として、メモリから取得されたデータ及び/又はメモリに記憶するためのデータを保持するための1つ以上のキャッシュメモリを備える装置の状況では、キャッシュメモリは、それぞれの区域識別子を、キャッシュメモリによって保持される各データ項目に関連付けるように構成されてもよく、キャッシュメモリは、異なる区域識別子を示すデータと関連付けられたメモリアクセスに応答して、所与の区域識別子と関連付けられたデータ項目へのアクセスを禁止するように構成されてもよい。
許可情報を検出する動作が完了していない場合にメモリアクセスの使用から生じるセキュリティリスクを軽減するための更なる対策として、変換回路は、変換回路による変換情報の使用が有効なアドレス変換を提供しない場合に、所与の変換動作に関する変換障害を検出するように構成され、変換障害の検出に応答して、変換回路は、許可回路を制御して、所与の変換動作の一部としてアクセスされる任意の変換情報アドレスに関する許可情報を検出する動作を実行するように構成される。
例示的な実施形態では、装置は、例外レベルの階層から選択された一般的な例外レベルでプログラム命令を実行するプロセッサであって、各例外レベルは、より高い例外レベルで実行される命令が、より低い例外レベルで実行される命令にアクセスできないリソースにアクセスできるように、セキュリティ特権に関連付けられている、プロセッサを備える。プロセッサは、許可回路が許可情報を検出するデータを設定するために、例外レベルの最高レベルで命令を実行する必要がある。
別の例示的実施形態は、方法であって、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行することであって、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成することを含む、ことと、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行することと、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータにアクセスすることと、
メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、その変換情報アドレスにアクセスすることと、を含む、方法を提供する。
別の例示的実施形態は、ターゲットコードの実行のための命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムであって、コンピュータプログラムが、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換ロジックであって、変換ロジックは、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換ロジックと、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可ロジックと、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータへのアクセスを許可するアクセスロジックと、を備え、
アクセスロジックは、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可ロジックが完了することなく、変換ロジックによるその変換情報アドレスへのアクセスを選択的に許可するように構成されている、コンピュータプログラムが提供される。
序文-物理アドレス空間へのアクセスの制御
データ処理システムは仮想メモリの使用をサポートすることができ、アドレス変換回路が提供されて、メモリアクセス要求によって指定された仮想アドレスを、アクセスされるメモリシステム内の場所に関連付けられた物理アドレスに変換する。仮想アドレスと物理アドレスとの間のマッピングは、1つ以上のページテーブル構造で定義され得る。ページテーブル構造内のページテーブルエントリはまた、処理回路上で実行される所与のソフトウェアプロセスが特定の仮想アドレスにアクセスできるかどうかを制御することができ得るいくつかのアクセス許可情報を定義することができる。
いくつかの処理システムでは、すべての仮想アドレスは、アクセスされるメモリ内の位置を識別するためにメモリシステムによって使用される単一の物理アドレス空間上にアドレス変換回路によってマッピングされ得る。そのようなシステムでは、特定のソフトウェアプロセスが特定のアドレスにアクセスできるかどうかの制御は、仮想対物理アドレス変換マッピングを提供するために使用されるページテーブル構造にのみ基づいて提供される。しかしながら、そのようなページテーブル構造は、通常、オペレーティングシステム及び/又はハイパーバイザによって定義され得る。オペレーティングシステム又はハイパーバイザが不正アクセスされると、機微情報に攻撃者がアクセス可能となり得る機密漏洩を引き起こす可能性がある。
したがって、特定のプロセスが、他のプロセスから隔離されてセキュアに実行される必要があるいくつかのシステムでは、システムはいくつかの領域内の動作をサポートでき、かついくつかの別個の物理アドレス空間がサポートされ得、メモリシステムの少なくともいくつかの構成要素については、仮想アドレスが異なる物理アドレス空間内の物理アドレスに変換されるメモリアクセス要求は、例えそれぞれの物理アドレス空間内の物理アドレスが実際にはメモリ内の同じ場所に対応する場合であっても、あたかも、メモリ内の全く別のアドレスにアクセスしているかのように扱われる。いくつかのメモリシステム構成要素について見られるように、処理回路の異なる動作領域からのそれぞれ別個の物理アドレス空間へのアクセスを隔離することにより、オペレーティングシステム又はハイパーバイザが設定したページテーブル許可情報に依存しない、より強いセキュリティ保証を提供することができる。
処理回路は、処理回路が動作することができる他の領域との間の切り替えの管理に関わるルート領域内の処理をサポートすることができる。切り替えを制御するための専用ルート領域を提供することにより、1つの領域で実行されているコードが別の領域への切り替えをトリガすることができる程度を制限することによってセキュリティを維持するのに役立ち得る。例えば、ルート領域は、領域の切り替えが要求されたときに、様々なセキュリティチェックを実行することができる。
したがって、処理回路は、処理が少なくとも3つの領域、すなわちルート領域及び少なくとも2つの他の領域、のうちの1つで実行されることをサポートすることができる。アドレス変換回路は、現在の領域から実行されるメモリアクセスの仮想アドレスを、少なくとも現在の領域に基づいて選択された複数の物理アドレス空間のうちの1つの中の物理アドレスに変換し得る。
ルート物理アドレス空間は、ルート領域から排他的にアクセス可能であり得る。したがって、処理回路が他の領域のうちの1つで動作している場合、処理回路は、ルート物理アドレス空間にアクセスできなくてもよい。これによって、領域間の切り替えを管理するため又は他の領域のうちの1つにおいて処理回路が有する権利を制御するために、ルート領域が依存するデータ又はプログラムコードを、他の領域のうちの1つで実行されているコードが改ざんすることはできないことが確実とされ、セキュリティが改善する。一方、例では、ルート領域からは複数の物理アドレス空間のすべてにアクセス可能であり得る。ルート領域内で実行されているコードは、他の領域のうちの1つで動作するコードを提供する任意の当事者によって信頼される必要があり、ルート領域のコードは、その当事者のコードが実行されているその特定の領域への切り替えに関わるため、本質的にルート領域は、任意の物理アドレス空間にアクセスのために信頼され得る。ルート領域から物理アドレス空間のすべてにアクセス可能とすることにより、メモリ区域の領域内への及び領域外への遷移、例えばブート中におけるコード及びデータの領域へのコピーとその領域へのサービスの提供などの機能を実行することができる。
実施例の説明
図1は、少なくとも1つのリクエスタデバイス4及び少なくとも1つのコンプリータデバイス6を有するデータ処理システム2の例を概略的に示す。インターコネクト8は、リクエスタデバイス4とコンプリータデバイス6との間の通信を提供する。リクエスタデバイスは、特定のアドレス指定可能なメモリシステム位置へのメモリアクセスを要求するメモリアクセス要求を発行することができる。コンプリータデバイス6は、それに向けられたメモリアクセス要求を処理する責任を有するデバイスである。図1には示されていないが、いくつかのデバイスは、リクエスタデバイスとコンプリータデバイスとしての両方として機能できる場合がある。リクエスタデバイス4は、例えば、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)又はバスマスターデバイス、ネットワークインタフェースコントローラ、ディスプレイコントローラなどの他のマスターデバイスなどの処理要素を含み得る。コンプリータデバイスは、対応するメモリ記憶ユニットへのアクセス制御を担うメモリコントローラ、周辺デバイスへのアクセスを制御するための周辺コントローラなどを含む。図1は、リクエスタデバイス4の1つの構成例をより詳細に示すが、他のリクエスタデバイス4も同様の構成を有し得ることを理解されたい。あるいは、他のリクエスタデバイスは、図1の左側に示されるリクエスタデバイス4と異なる構成を有し得る。
リクエスタデバイス4は、レジスタ12に記憶されたデータを参照して、命令に応答するデータ処理を実行するための処理回路10を有する。レジスタ12は、オペランド及び処理された命令の結果を記憶するための汎用レジスタだけでなく、処理回路によって処理がどのように実行されるかを構成するための制御データを記憶するための制御レジスタを含み得る。例えば、制御データは、どの動作領域が現在の領域であるかを選択するために使用される現在の領域指示14と、どの例外レベルが処理回路10が動作している現在の例外レベルであるかを示す現在の例外レベル指示15とを含み得る。
処理回路10は、アクセスされるべきアドレス可能な位置を識別する仮想アドレス(VA)と、現在の領域を識別する領域識別子(領域ID又は「セキュリティ状態」)とを指定するメモリアクセス要求を発行することが可能であり得る。アドレス変換回路16(例えば、メモリ管理ユニット(MMU))は、メモリシステムに記憶されたページテーブル構造において定義されたページテーブルデータに基づいて、アドレス変換のより多くのステージのうちの1つを介して、仮想アドレスを物理アドレス(PA)に変換する。変換ルックアサイドバッファ(TLB)18は、アドレス変換が必要な都度ページテーブル情報がメモリからフェッチされる必要がある場合よりもより速いアクセスのために、そのページテーブル情報の一部をキャッシュするためのルックアップキャッシュとして機能する。この例では、物理アドレスを生成するだけでなく、アドレス変換回路16はまた、物理アドレスと関連付けられたいくつかの物理アドレス空間のうちの1つを選択し、選択された物理アドレス空間を識別する物理アドレス空間(PAS)識別子を出力する。PASの選択については、以下でより詳細に論じる。
PASフィルタ20は、変換された物理アドレス及びPAS識別子に基づいて、その物理アドレスがPAS識別子によって識別され指定された物理アドレス空間内でアクセスされることが許可されているかどうかを確認するためのリクエスタフィルタリング回路として機能する。このルックアップは、メモリシステム内に記憶されたグラニュール保護テーブル(GPT)構造に記憶されたグラニュール保護情報に基づく。グラニュール保護情報は、TLB18内におけるページテーブルデータのキャッシュと同様に、グラニュール保護情報キャッシュ22内にキャッシュされ得る。グラニュール保護情報は、所与の物理アドレスがアクセスされ得る物理アドレス空間を制限し、このルックアップに基づいて、メモリアクセス要求が1つ以上のキャッシュ24及び/又はインターコネクト8に対して発行されることを進めることを可能とするかどうかをPASフィルタ20が判定する情報を定義する。メモリアクセス要求に対する指定されたPASが指定された物理アドレスにアクセスすることを許可されない場合、PASフィルタ20は、トランザクションをブロックし、フォールトをシグナリングすることができる。
PASフィルタは、アドレス変換回路からの制御信号(信号21として概略的に示されている)に応答して(部分的に)動作することができ、PASフィルタによる少なくとも一部のチェック又は他の動作の削除又は延期が行われ得るか、又は行われるべきであることを示す。これらの動作については、以下でより詳細に説明する。
図1は、システムが複数のリクエスタデバイス4を有する状態の例を示しているが、図1の左側の1つの要求デバイスに示される特徴は、シングルコアプロセッサなど1つのリクエスタデバイスのみが存在するシステムにも含まれ得る。
図1は、所与の要求に対するPASの選択がアドレス変換回路16によって行われる例を示しているが、他の例では、どのPASを選択するかを決定するための情報をPAと共にアドレス変換回路16によってPASフィルタ20に対して出力することができ、PASフィルタ20は、PASを選択し、選択されたPAS内でPAがアクセスされることが可能かどうかを確認することができる。
PASフィルタ20の提供は、それぞれがそれ自体の隔離された物理アドレス空間に関連付けられた、いくつかの動作領域で動作することができるシステムをサポートするのに役立つ。ここで、(例えば、いくつかのキャッシュ又はスヌープフィルタなどのコヒーレンシー実施メカニズムのための)メモリシステムの少なくとも一部について、別々の物理アドレス空間は、それらのアドレス空間内のアドレスが実際にメモリシステム内の同じ物理的位置を指す場合でも、あたかも全く別のメモリシステム位置を識別する別のアドレスのセットを指すかのように扱われる。これは、セキュリティ目的のために有用であり得る。
図2は、処理回路10が動作することができる異なる動作状態及び領域の例、ならびに異なる例外レベル及び領域で実行され得るソフトウェアのタイプの例を示している(当然のことながら、システム上にインストールされる特定のソフトウェアは、そのシステムを管理する当事者によって選択され、したがって、ハードウェアアーキテクチャの本質的な特徴ではないことが理解されよう)。
処理回路10は、いくつかの異なる例外レベル80、この実施例では、EL0、EL1、EL2、及びEL3とラベル付けされた4つの例外レベルで動作可能であり、この例では、EL3は最高レベルの特権を有する例外レベルを指し、EL0は最低の特権を有する例外レベルを指す。他のアーキテクチャでは、逆の採番を選び、最大の数を有する例外レベルが最低の特権を有すると見なし得ることが理解されよう。この実施例では、最低特権の例外レベルEL0は、アプリケーションレベルのコードのためのものであり、次に最高特権の例外レベルEL1は、オペレーティングシステムレベルのコードに使用され、次に最高特権の例外レベルEL2は、いくつかの仮想オペレーティングシステム間の切り替えを管理するハイパーバイザレベルコードに使用され、最高特権の例外レベルEL3は、それぞれの領域間の切り替え及び物理アドレスの物理アドレス空間への配分を管理するモニタコードに使用される。
したがって、処理回路10は、例外レベルの階層から選択された一般的な例外レベルでプログラム命令を実行するように構成され、各例外レベルは、より高い例外レベルで実行される命令が、より低い例外レベルで実行される命令にアクセスできないリソースにアクセスできるように、セキュリティ特権に関連付けられている。以下に説明するように、処理回路は、許可回路又はPASフィルタ20が許可情報を検出するデータを設定するために、例外レベルの最高レベル(例えば、EL3)で命令を実行する必要がある。
ソフトウェアを処理している間に特定の例外レベルで例外が発生するとき、いくつかのタイプの例外については、例外がより高い(より高特権の)例外レベルに対して受け入れられ、例外が受け入れられる特定の例外レベルは、発生した特定の例外の属性に基づいて選択される。しかしながら、いくつかの状況においては、例外が受け入れられたときに処理されていたコードと関連付けられた例外レベルと同じ例外レベルで、他のタイプの例外が受け入れられ得る。例外が受け入れられるとき、例外が受け入れられた時点のプロセッサの状態を特徴付ける情報を、例えば例外が受け入れられた時点での現在の例外レベルを含めて保存することができる。したがって、例外に対処するために例外ハンドラが処理されると、処理は以前の処理に戻ることができ、保存された情報を使用して、処理が戻るべき例外レベルを識別することができる。
異なる例外レベルに加えて、処理回路はまた、ルート領域82、セキュア(S)領域84、レスセキュア領域86、及びレルム領域88を含むいくつかの動作領域をサポートする。参照を容易にするために、レスセキュア領域は、「非セキュア」(NS)領域として以下に説明されるが、これは、セキュリティの特定のレベル(又は欠如)を意味することを意図するものではないことが理解されよう。代わりに、「非セキュア」は、非セキュア領域が、セキュア領域で動作するコードよりもセキュアではないコードを対象としていることを単に示す。ルート領域82は、処理回路10が最高例外レベルEL3にあるときに選択される。処理回路が他の例外レベルEL0~EL2のうちの1つにあるとき、現在の領域は、現在の領域インジケータ14に基づいて選択され、これは、他の領域84、86、88のうちのどれがアクティブであるかを示す。他の領域84、86、88の各々について、処理回路は、例外レベルEL0、EL1、又はEL2のいずれかにあり得る。
起動時に、いくつかのブートコード(例えば、BL1、BL2、OEMブート)が、例えば、より高度の特権の例外レベルEL3又はEL2内で実行され得る。ブートコードBL1、BL2は、例えば、ルート領域と関連付けられ得、OMブートコードは、セキュア領域で動作し得る。しかしながら、システムがブートされると、実行中、処理回路10は、一度に領域82、84、86、及び88のうちの1つで動作すると見なされ得る。領域82~88の各々はそれ自体の関連する物理アドレス空間(PAS)と関連付けられている。これにより、メモリシステムの少なくとも一部内で、異なる領域からのデータの隔離が可能とされている。これについては、以下でより詳細に説明する。
非セキュア領域86は、通常のアプリケーションレベル処理、及びそのようなアプリケーションを管理するためのオペレーティングシステム及びハイパーバイザアクティビティに使用することができる。したがって、非セキュア領域86内で、EL0で動作するアプリケーションコード30、EL1で動作するオペレーティングシステム(OS)コード32、及びEL2で動作するハイパーバイザコード34が存在し得る。
セキュア領域84は、特定のシステムオンチップセキュリティ、メディア、又はシステムサービスが、非セキュア処理に使用される物理アドレス空間とは別の物理アドレス空間に隔離されることを可能にする。セキュア領域と非セキュア領域とは、非セキュア領域コードは、セキュア領域84と関連付けられたリソースにアクセスできないという意味では同等でない。一方、セキュア領域は、セキュアリソースと非セキュアリソースの両方にアクセスできる。セキュア及び非セキュア領域84、86のそのような分割をサポートするシステムの例は、Arm(登録商標)Limitedによって提供されるTrustZone(登録商標)アーキテクチャに基づくシステムである。セキュア領域は、信頼できるアプリケーション36をEL0で、信頼できるオペレーティングシステム38をEL1で、及び任意選択でセキュア分割マネージャ40をEL2で実行できる。EL2はセキュア分割がサポートされる場合、2ページテーブルを使用して、セキュア領域84内で実行されている異なる信頼できるオペレーティングシステム38間の隔離を、ハイパーバイザ34が非セキュア領域86内で実行される仮想マシン間又はゲストオペレーティングシステム32間の隔離を管理することができる方法と同様の方法で、サポートすることができる。
システムをセキュア領域84をサポートするように拡張することは、単一のハードウェアプロセッサが隔離されたセキュア処理をサポートすることを可能にし、かつ処理が別のハードウェアプロセッサ上で行われる必要性を回避できるために、近年一般的になった。しかしながら、セキュア領域の使用の人気が高まるにつれ、そのようなセキュア領域を有する多くの実用システムは、いまや、広範囲の異なるソフトウェアプロバイダによって提供されるサービスの比較的高度な混合環境をセキュア領域内でサポートしている。例えば、セキュア領域84内で動作するコードは異なるソフトウェアを含み得、その提供者には(とりわけ)、集積回路を製造したシリコンプロバイダ、シリコンプロバイダによって提供される集積回路を携帯電話などの電子デバイスに組み立てる相手先商標製品製造業者(OEM)、オペレーティングシステム32をデバイスのために提供するオペレーティングシステムベンダー(OSV)、及び/又はクラウドを介して、多数の異なる顧客のためのサービスをサポートするクラウドサーバを管理するクラウドプラットフォームプロバイダを含む。
しかしながら、(非セキュア領域86内のアプリケーション30として実行することが通常予想され得る)ユーザレベルコードの提供者が、同じ物理プラットフォーム上でコードを動作させる他の当事者に情報を漏らさないことが信頼できるセキュアなコンピューティング環境を提供されることへの要望が高まっている。そのようなセキュアコンピューティング環境は、実行中に動的に配分可能であって、潜在的に機微性のあるコード又はデータの処理をデバイスに任せる前に、十分なセキュリティ保証が物理的プラットフォーム上で提供されているかどうかをユーザが検証できるように保証され証明可能であることが望ましい可能性がある。そのようなソフトウェアのユーザは、非セキュア領域86で通常動作し得る、機能が豊富なオペレーティングシステム32又はハイパーバイザ34の提供者を信頼することを望まない可能性がある(あるいは、それらのプロバイダ自体は信頼できても、ユーザは、オペレーティングシステム32又はハイパーバイザ34が攻撃者によって不正アクセスされることから自らを守ることを望み得る)。また、セキュアな処理を必要としているそのようなユーザ提供アプリケーションのためにセキュア領域84を使用可能であるが、実際上、これはセキュアなコンピューティング環境を必要とするコードを提供するユーザと、セキュア領域84内で動作する既存のコードのプロバイダの両方に対して問題を引き起こす。セキュア領域84内で動作する既存のコードのプロバイダにとって、それらのコードに対する潜在的な攻撃の攻撃対象領域が、セキュア領域内に恣意的なユーザ提供コードが追加されることにより増加する。これは望ましくないことであり得、したがってユーザがセキュア領域84にコードを追加可能としないよう強く勧奨され得る。一方、セキュアなコンピューティング環境を必要とするコードを提供するユーザは、特定の領域で動作するコードの保証及び証明がユーザ提供コードが処理を実行する前提条件として必要とされる場合、セキュア領域84で動作する異なるソフトウェアプロバイダによって提供される別個のコードのすべてを監査し証明することは困難であり得、セキュア領域84で動作する異なるコードのプロバイダのすべてに、自らのデータ又はコードへのアクセスを任せることに否定的であり得る。これは、第三者がよりセキュアなサービスを提供する機会を制限し得る。
したがって、図2に示すように、レルム領域と呼ばれる追加の領域88が提供され、セキュア領域24で動作する構成要素に関連付けられた任意のセキュアなコンピューティング環境に直交するセキュアなコンピューティング環境を提供するために、ユーザが導入したそのようなコードによって使用され得る。レルム領域では、実行されるソフトウェアは、いくつかのレルムを含むことができ、各レルムは、例外レベルEL2で動作するレルムマネージメントモジュール(RMM)46によって他のレルムから隔離され得る。RMM46は、例えば、ハイパーバイザ34が非セキュア領域86で動作する異なる構成要素間の分離を管理する方法と同様に、ページテーブル構造内のアクセス許可及びアドレスマッピングを定義することによって、レルム領域88を実行するそれぞれのレルム42、44間の隔離を制御することができる。この例では、レルムは、EL0で実行されるアプリケーションレベルのレルム42と、例外レベルEL0及びEL1にわたって実行されるカプセル化アプリケーション/オペレーティングシステムレルム44とを含む。EL0及びEL0/EL1タイプの両方のレルムをサポートすることが必須ではなく、同じタイプの複数のレルムがRMM46によって確立され得ることが理解されよう。
レルム領域88は、それに割り当てられた独自の物理アドレス空間をセキュア領域84と同様に有するが、レルム領域及びセキュア領域88、84が非セキュア領域86に関連付けられた非セキュアPASにそれぞれアクセスできる一方で、レルム領域88とセキュア領域84とは相互の物理アドレス空間にアクセスできないという意味でレルム領域はセキュア領域84に直交している。これは、レルム領域88で実行されているコードとセキュア領域84とは互いに依存関係を有しないことを意味する。レルム領域内のコードは、ハードウェア、RMM46、及び領域間の切り替えを管理するルート領域82で動作するコードのみを信頼すればよく、これは、証明と保証がより実行可能であることを意味する。証明は、所与のソフトウェアが、デバイス上にインストールされたコードが特定の予想された特性に一致することの検証を要求することを可能にする。これは、デバイス上にインストールされたプログラムコードのハッシュが、信頼できる当事者により暗号プロトコルを使用して署名された予想値と一致するかどうかをチェックすることによって実施することができる。RMM46及びモニタコード29は、例えば、このソフトウェアのハッシュが、処理システム2を含む集積回路を製造したシリコンプロバイダ、又は領域ベースのメモリアクセス制御をサポートするプロセッサアーキテクチャを設計したアーキテクチャプロバイダなどの信頼できる当事者によって署名された予想値と一致するかどうかをチェックすることによって証明され得る。これにより、ユーザ提供コード42、44は、任意のセキュアな又は機微性のある機能を実行する前に、領域ベースのアーキテクチャの完全性が信頼できるかどうかを検証することができる。
したがって、これらのプロセスが以前実行されていたであろう非セキュア領域内のギャップを示す点線で示されるように、以前は非セキュア領域86内で実行されていたであろうレルム42、44に関連付けられているコードは、今や、それらのデータとコードは非セキュア領域86で動作する他のコードによってアクセスできないため、これらがより強いセキュリティ保証を有し得るレルム領域に移動され得ることが分かる。しかしながら、レルム領域88及びセキュア領域84が直交しており、したがって相互の物理アドレス空間を見ることができないという事実により、これは、レルム領域内のコードのプロバイダはセキュア領域内のコードのプロバイダを信頼する必要がなく、逆も同様であることを意味する。レルム領域内のコードは、ルート領域82及びRMM46のモニタコード29を提供するファームウェアを単に信頼することができ、これはシリコンプロバイダ、又はプロセッサによってサポートされる命令セットアーキテクチャのプロバイダにより提供され得る。これらのプロバイダは、彼らのデバイス上でコードが実行されているとき、初めから本質的に信頼される必要があり得、その結果、ユーザがセキュアコンピューティング環境を提供され得るために、他のオペレーティングシステムベンダー、OEM、又はクラウドホストとの他の更なる信頼関係がユーザにより必要とされることはない。
これは、例えば、様々な目的のアプリケーション及び使用事例のために有用であり、例えば、モバイルウォレット及び支払いアプリケーション、ゲームにおける不正及び著作権侵害防止メカニズム、オペレーティングシステムプラットフォームセキュリティ拡張、セキュアな仮想マシンホスティング、機密コンピューティング、ネットワーク化、又はインターネット・オブ・シングスのためのゲートウェイ処理を含む。ユーザは、レルムサポートが有用である他の多くのアプリケーションを見つけ得ることが理解されよう。
レルムに提供されるセキュリティ保証をサポートするために、処理システムは、証明レポート機能をサポートすることができ、起動時又はランタイムに、ファームウェアのイメージと構成、例えば、モニタコードのイメージと構成、又はRMMコードのイメージと構成の測定が行われる。ランタイムにはレルムのコンテンツと構成が測定され、それによって、レルムオーナーは、関連性のある証明レポートを既知の実装及び保証に対してトレースバックし、そのシステム上で動作するかどうかについて信頼決定を行う。
図2に示すように、領域の切り替えを管理する別のルート領域82が提供され、そのルート領域は、それ自体の隔離されたルート物理アドレス空間を有する。ルート領域を作成し、リソースをセキュア領域から隔離することは、たとえ非セキュア及びセキュア領域86、84のみを有しレルム領域88を有しないシステムであってもより堅牢な実装を可能にするが、レルム領域88をサポートする実装にも使用することができる。ルート領域82は、シリコンプロバイダ又はアーキテクチャ設計者によって提供される(又は保証された)モニタソフトウェア29を使用して実装することができ、セキュアブート機能、トラステッドブート測定、システムオンチップ構成、デバッグ制御及びOEMなどの他の当事者によって提供されるファームウェア構成要素のファームウェア更新管理を提供するために使用することができる。ルート領域のコードは、シリコンプロバイダ又はアーキテクチャ設計者によって最終的なデバイスへの依存関係なしに開発し、保証し、かつ展開することができる。対照的に、セキュア領域84は、特定のプラットフォーム及びセキュリティサービスを実装するためにOEMによって管理され得る。非セキュア領域86の管理は、オペレーティングシステムサービスを提供するオペレーティングシステム32によって制御され得、一方、レルム領域88は、セキュア領域84内の既存のセキュアソフトウェア環境とは相互に隔離されると同時に、ユーザ又はサードパーティのアプリケーションに専用であり得る信頼できる実行環境の新しい形態の開発を可能にする。
図3は、これらの技術をサポートするための処理システム2の別の例を概略的に示す。図1と同じである要素は、同じ参照番号で示されている。図3は、アドレス変換回路16のより詳細を示し、ステージ1メモリ管理ユニット50、及びステージ2メモリ管理ユニット52を含む。ステージ1MMU50は、仮想アドレスから物理アドレスへ(変換がEL2又はEL3コードによってトリガされる場合)又は中間アドレスへ(ステージ2MMU52による更なるステージ2変換が必要である動作状態で、変換がEL0又はEL1コードによってトリガされる場合)のいずれかの変換に関与し得る。ステージ2MMUは、中間アドレスを物理アドレスに変換することができる。ステージ1MMUは、EL0又はEL1から開始される変換についてはオペレーティングシステムによって制御されるページテーブルに、EL2からの変換についてはハイパーバイザによって制御されるページテーブルに、又はEL3からの転換についてはモニタコード29によって制御されるページテーブルに基づくことができる。一方、ステージ2MMU52は、どの領域が使用されているかに応じてハイパーバイザ34、RMM46又はセキュア分割マネージャ14によって定義されるページテーブル構造に基づくことができる。変換をこのように2つの段階に分離することにより、オペレーティングシステムは、それらがシステム上で動作する唯一のオペレーティングシステムであるという仮定の下で、それら自体のための及びアプリケーションのためのアドレス変換を管理することが可能となり、一方、RMM46、ハイパーバイザ34、又はSPM40は、同じ領域内で実行される異なるオペレーティングシステム間の隔離を管理することができる。
図3に示すように、アドレス変換回路16を使用するアドレス変換プロセスは、現在の例外レベル15及び現在の領域14(又はセキュリティ状態)と組み合わせて、特定の物理アドレス空間(PAS識別子又は「PAS TAG」によって識別される)のセクションが所与のメモリアクセス要求に応答してアクセスされることを可能にするセキュリティ属性54を返すことができる。これは、変換された第2のメモリアドレスに、変換された第2のメモリアドレスに関連付けられた区域識別子を示すデータ(PAS TAG)を関連付けるように構成されている許可回路(20)の例を提供する。
物理アドレス及びPAS識別子は、前述のグラニュール保護情報を提供するグラニュール保護テーブル56内でルックアップすることができる。この例では、PASフィルタ20は、選択されたPASが要求された物理アドレスにアクセスできるかどうかを検証し、できる場合、トランザクションがメモリシステムのシステムファブリックの一部である任意のキャッシュ24又はインターコネクト8に渡されることができる、粒状(granular)メモリ保護ユニット(GMPU)として示されている。
GMPU20は、別のアドレス空間にメモリを割り当てることを可能にしつつ、同時に、ハードウェアベースの強力な隔離保証を提供し、物理メモリをこれらのアドレス空間に割り当てる方法における空間的及び時間的柔軟性だけでなく、効率的な共有スキームを提供する。前述のように、システム内の実行ユニットは、「ルートワールド」と呼ばれ最高例外レベル(EL3)に位置する1実行状態(ルートワールド)が存在する仮想実行状態(領域又は「ワールド」)に論理的に分割され、ルートワールドはこれらのワールドへの物理メモリ割り当てを管理する。
単一のシステム物理アドレス空間は、複数の「論理」又は「アーキテクチャ上の」物理アドレス空間(PAS)に仮想化され、そのような各PASは、独立したコヒーレンシー属性を有する直交アドレス空間である。システム物理アドレスは、PASタグでそれを拡張することによって、単一の「論理」物理アドレス空間にマッピングされる。
所与のワールドは、論理物理アドレス空間のサブセットへのアクセスを許可される。これは、メモリ管理ユニット16の出力に取り付けることができるハードウェアフィルタ20によって実施される。
ワールドは、アドレス変換に使用されるページテーブルの変換表記述子のフィールドを使用してアクセスのセキュリティ属性(PASタグ)を定義する。ハードウェアフィルタ20は、システム物理アドレス空間内の各ページに対してグラニュール保護情報(GPI)を定義するテーブル(グラニュール保護テーブル56、又はGPT)へのアクセスを有し、グラニュール保護情報は、それが関連付けられているPASTAG、及び(任意選択で)他のグラニュール保護属性を示す。
いくつかの例では、いわゆるレベル0(L0)GPTチェック及びレベル1(L1)GPTチェックが提供される。L0情報は、PAに関連付けられたメモリタイプを示し、少なくとも、いわゆる副作用が読み出しアクセスに潜在的に発生し得るかどうかを示す。例えば、(先入れ先出し(FIFO)又は他のレジスタからの読み出しのためのデータを提供することができる)入出力デバイスに割り当てられたPAの場合、そのPAからデータを読み出す動作は、FIFOレジスタからデータ項目を取得することによって、次の読み出しに応答して提供されるデータを変更することができ、取得されたデータは、次の読み出し動作によるアクセスのためにもはや存在しない。一方、DRAMからのデータの読み出しは、一般に、このような副作用を受けず、同じPAでの次の動作によって読み出されるデータを変更しない。
したがって、L0GPTチェックを(有用な追加の利点として)使用して、そのような副作用が潜在的に経験されるかどうかを検出することができる。答えが「いいえ」である場合、特定のPAにおける読み出し動作の開始によって、そのPAにおけるデータの完全性に対する直接的なリスクはない。
チェックの基礎となるL0GPT情報は、例えば1GBの粒度を有するなど、比較的粗く粒状化することができるので、L0GPTチェックの一部として参照されるL0GPTデータのサイズは、(物理アドレス空間のGBあたり潜在的に1つのデータ項目で)比較的小さくすることができる。これにより、L0GPTデータを比較的容易にキャッシュに入れることが可能になり、L0GPTチェックを、後述するプロセスのレイテンシに比較的ほとんど影響を与えずに実行することができる。
一般的に言えば、L0GPTチェックを実行することは、所与の第2の(例えば、物理的)メモリアドレスに適用可能なストレージタイプを検出するための更なる動作を実行する許可回路(GMPUなど)の一例であり、ストレージタイプは、少なくとも、第1のストレージタイプ又は第2の、異なるストレージタイプが所与の第2のメモリアドレスに適用可能であるかどうかである。例えば、第1のストレージタイプは、所与のアドレスに記憶されたデータが所与のアドレスからの読み出し動作によって変更されないストレージタイプであってもよい(すなわち、上述のように「副作用」を受けないストレージタイプである)。
L1 GPTチェックは、例えば、許可情報及びPASタグを提供することができる。
ハードウェアフィルタ20は、グラニュールのGPIに対するワールドID及びセキュリティ属性をチェックして、アクセスが許可され得るか否かを決定し、このようにして、粒状メモリ保護ユニット(GMPU)を形成する。
GPT56は、例えば、オンチップSRAM又はオフチップDRAMに存在することができる。オフチップに記憶された場合、GPT56は、GPT56のセキュリティを維持するために暗号化、完全性、及び鮮度のメカニズムを使用し得るオンチップメモリ保護エンジンによって完全性保護され得る。
GMPU20を、コンプリータ側ではなく、システムのリクエスタ側(例えば、MMU出力上)に位置させることにより、インターコネクト8が、複数のDRAMポートにわたって継続してページをハッシング/ストライピングすることを許可しながら、ページ粒度でアクセス許可を割り当てることを可能にする。
トランザクションは、物理的別名化ポイント60の点として定義される場所に到達するまで、システムファブリック24、8全体を通して伝播するため、PASTAGがタグ付けされたままである。これにより、スレーブ側(コンプリ-タ側)フィルタリングと比較してセキュリティ保証を弱めることなく、フィルタをマスター側(リクエスタ側)に配置することができる。トランザクションがシステム全体を通して伝播するにつれて、PAS TAGは、アドレス隔離のための詳細なセキュリティメカニズムとして使用することができる。例えば、キャッシュは、キャッシュ内のアドレスタグにPAS TAGを追加して、同じPAに対して誤ったPAS TAGを使用して行われるアクセスがキャッシュにヒットすることを防止し、それによってサイドチャネル抵抗を改善することができる。PAS TAGはまた、外部DRAMに書き込まれる前にデータを暗号化するメモリコントローラに取り付けられた保護エンジンのコンテキストセレクタとして使用することができる。そのような保護エンジンの例を以下に説明する。
物理的別名化ポイント(PoPA)は、PAS TAGが剥離され、アドレスが論理物理アドレスからシステム物理アドレスに戻るシステム内の位置である。PoPAは、物理DRAMへのアクセスが(PAS TAGを介して解決された暗号化コンテキストを使用して)行われる、システムのコンプリータ側でキャッシュの下方に位置することができる。あるいは、セキュリティの弱化という犠牲においてシステムの実装を簡素化するために、キャッシュの上方に位置してもよい。
任意の時点で、ワールドは、1つのPASから別のPASにページを遷移させることを要求できる。要求は、モニタコード29に対してEL3で行われ、GPIの現在の状態を検査する。EL3は、特定の遷移のセットのみ(例えば、レルムPASからセキュアなPASでなく、非セキュアPASからセキュアなPAS)が発生することを可能にし得る。クリーンな遷移を提供するために、新しい命令「データを削除し物理的別名化ポイントまで無効化」がシステムによりサポートされ、EL3はページを新しいPASに遷移させる前にこれを提出できる。これにより、前のPASに関連付けられた任意の残留状態がPoPA60(よりもリクエスタ側に近い)の上流の任意のキャッシュからフラッシュされることが保証される。
GMPU20をマスター側に取り付けることによって達成することができる別の特性は、ワールド間のメモリの効率的な共有である。物理的グラニュールへの共有アクセスを、他のワールドがそれにアクセスすることを防止しながら、Nワールドのサブセットに許可することが望ましい場合がある。これは、「限定的共有」語義(semantic)をグラニュール保護情報に追加すると共に、それが特定のPAS TAGを使用することを強制することによって達成することができる。一例として、GPIは、物理的グラニュールに、セキュアPAS84のPAS TAGがタグ付けされている間、「レルムワールド」88及び「セキュアワールド」84によってのみアクセスされ得ることを示すことができる。
上記の特性の例は、特定の物理的グラニュールの可視性特性の急速な変化をもたらす。各ワールドに、そのワールドにのみアクセス可能な私的PASが割り当てられている場合を考える。特定のグラニュールに対し、ワールドは、それらのGPIを「排他的」から「非セキュアワールドと限定的共有」に変更することによって、PASの関連付けを変更することなく、任意の時点で非セキュアワールドに見えるように要求することができる。このようにして、コストのかかるキャッシュメンテナンス又はデータコピー操作を必要とせずに、そのグラニュールの可視性を高めることができる。
図1又は図3の装置は、いわゆるシステムオンチップ(SoC)、いわゆるネットワークオンチップ(NoC)として、又は様々なそれぞれの例における個別の構成要素として実装されてもよい。
図4は、それぞれの物理アドレス空間をハードウェアに設けられる物理メモリ上で別名化する概念を示す。前述のように、領域82、84、86、88の各々は、それ自体のそれぞれの物理アドレス空間61を有する。
物理アドレスがアドレス変換回路16によって生成される時点で、物理アドレスは、システムによってサポートされた特定の数値範囲62内の値を有し、これは、どの物理アドレス空間が選択されるかに関係なく同じである。しかしながら、物理アドレスの生成に加えて、アドレス変換回路16はまた、現在の領域14及び/又は物理アドレスを導出するために使用されるページテーブルエントリ内の情報に基づいて、特定の物理アドレス空間(PAS)を選択し得る。代替的に、PASの選択を実行するアドレス変換回路16の代わりに、アドレス変換回路(例えば、MMU)は、PASの選択に使用される、ページテーブルエントリ(PTE)から導出された物理アドレス及び情報を出力することができ、次いで、この情報は、PASフィルタ又はGMPU20によって使用されて、PASを選択することができる。
所与のメモリアクセス要求に対するPASの選択は、以下の表で定義される規則に従って、処理回路10がメモリアクセス要求を発行するときに動作する現在の領域に応じて限定され得る。
Figure 2023519322000002
選択に利用可能な複数の物理アドレス空間が存在する領域については、物理アドレスを提供するために使用されるアクセスされたページテーブルエントリからの情報を使用して、利用可能なPASオプションの間から選択する。
したがって、PASフィルタ20がシステムファブリック24、8にメモリアクセス要求を出力する時点では(それが任意のフィルタリングチェックに合格したと仮定して)、メモリアクセス要求は、物理アドレス(PA)及び選択された物理アドレス空間(PAS)と関連付けられている。
物理的別名化(PoPA)ポイント60の前に動作するメモリシステム構成要素(キャッシュ、インターコネクト、スヌープフィルタなど)の視点からは、それぞれの物理アドレス空間61は、メモリ内の異なるシステム位置に対応する完全に別のアドレス範囲と見なされる。これは、PoPA前メモリシステム構成要素の視点からは、メモリアクセス要求によって識別されるアドレス範囲は、実際には、アドレス変換において出力され得る範囲62の4倍のサイズであることを意味する。これは、事実上、PAS識別子は物理アドレス自体と並んで追加のアドレスビットとして扱われ、そのため、選択されるPASによっては同じ物理アドレスPAxが別個の物理アドレス空間61内のいくつかの別名化物理アドレス63の数にマッピングされ得るためである。これらの別名化物理アドレス63は、すべて実際には、物理的ハードウェアに実装された同じメモリシステム位置に対応するが、PoPA前メモリシステム構成要素は、別名化アドレス63を別のアドレスとして扱う。したがって、そのようなアドレスにエントリを配分するPoPA前キャッシュ又はスヌープフィルタがある場合、別名化アドレス63は、別のキャッシュヒット/ミス決定と別のコヒーレンシー管理を有する、異なるエントリにマッピングされるであろう。これは、他の領域の動作を探るメカニズムとして、キャッシュ又はコヒーレンシーサイドチャネルを使用する攻撃者の可能性又は有効性を低減する。
システムは、(例えば、以下に論じられる図14に示されるように)2つ以上のPoPA60を含み得る。
各PoPA60において、別名化物理アドレスは、システム物理アドレス空間64内の単一の非別名化されたアドレス65に折り畳まれる。非別名化アドレス65は、任意のPoPA後構成要素の下流に提供され、その結果、メモリシステム位置を実際に識別するシステム物理アドレス空間64は、再び、リクエスタ側で実行されるアドレス変換において出力され得る物理アドレスの範囲と同じサイズである。例えば、PoPA60では、PAS識別子はアドレスから剥離され得、下流の構成要素については、アドレスはPASを指定することなく、単に物理アドレス値を使用して識別することができる。あるいは、メモリアクセス要求のいくつかのコンプリータ側フィルタリングが所望される場合、PAS識別子は、PoPA60の下流で依然として提供され得るが、アドレスの一部として解釈されなくてもよい。その結果、異なる物理アドレス空間60に現れる同じ物理アドレスは、PoPAの下流において同じメモリシステム位置を指すように解釈されるであろう。しかし、供給されたPAS識別子がそれでもコンプリータ側セキュリティチェックを実行するために使用され得る。
図5は、システム物理アドレス空間64を、グラニュール保護テーブル56を使用して、特定のアーキテクチャ上の物理アドレス空間61内のアクセスのために配分されたチャンクに分割することができる方法を示す。グラニュール保護テーブル(GPT)56は、システム物理アドレス空間65のどの部分を各アーキテクチャ上の物理アドレス空間61からアクセス可能とするかを定義する。例えば、GPT56は、特定のサイズの物理アドレスのグラニュール(例えば4Kページ)に各々対応するいくつかのエントリを含み得、そのグラニュールの割り当てられたPASを定義し得、これは、非セキュア、セキュア、レルム、及びルート領域の中から選択され得る。設計により、特定のグラニュール又はグラニュールのセットが、領域のうちの1つと関連付けられたPASに割り当てられている場合、それはその領域と関連付けられたPAS内でのみアクセスすることができ、他の領域のPAS内でアクセスすることはできない。しかしながら、(例えば)セキュアPASに配分されたグラニュールは、ルートPAS内からアクセスできないにもかかわらず、ルート領域82はそれでも、物理的なアドレス指定されたメモリのその区域にマッピングされたページに関連付けられた仮想アドレスがルートPASの代わりにセキュアPAS内の物理アドレスに変換されることを確実にするためのPAS選択情報を、そのページテーブル内に指定することによって、物理アドレスのそのグラニュールにアクセスできることに留意されたい。したがって、(前述の表に定義されたアクセス可否ルールによって許可される範囲での)領域間のデータの共有は、所与のメモリアクセス要求のPASを選択する時点で制御され得る。
しかしながら、いくつかの実装では、GPTによって定義された、割り当てられたPAS内で物理アドレスのグラニュールへのアクセスを可能とすることに加えて、GPTは、他のGPT属性を使用して、アドレス空間のうちのある区域(例えば、通常は、その領域のアクセス要求に対して割り当てられたPASを選択することが許可されない、下位の又は直交する特権の領域に関連付けられたアドレス空間)を別のアドレス空間と共有されたものとしてマークすることができる。これは、所与のグラニュールに対して割り当てられたPASを変更する必要なしに、データを一時的に共有することを容易とし得る。例えば、図5では、レルムPASの区域70は、レルム領域に割り当てられるようにGPT内に定義されており、非セキュア領域86はそのアクセス要求のためにレルムPASを選択できないため、通常、非セキュア領域86からアクセス不可能である。非セキュア領域26はレルムPASにアクセスできないため、通常、非セキュアコードは区域70のデータを見ることができなかった。しかしながら、レルムが、メモリの割り当てられた区域内のそのデータのいくつかを非セキュア領域と一時的に共有することを望む場合、ルート領域82で動作するモニタコード29に、区域70が非セキュア領域86と共有されることを示すようにGPT56を更新することを要求することができ、これにより、どの領域が区域70に対して割り当てられた領域であるかを変更する必要なしに、区域70を図5の左側に示される非セキュアPASからもアクセス可能とし得る。これは、異なる領域を特定のメモリ区域に割り当てるための動作はよりパフォーマンス集約的であり得るためパフォーマンスを改善し得ると共に、より高程度のキャッシュ/TLB無効化及び/又は、メモリ内のデータゼロ化若しくはメモリ区域間でのデータコピーを伴う。これは、共有が一時的なものに過ぎないと予想される場合には正当化できない可能性がある。
したがって、図5の構成は、複数のメモリパーティションを有するメモリの一例を提供し、各データメモリパーティションは、パーティション識別子に関連付けられ、物理アドレス空間内の物理アドレスのそれぞれの範囲を有する。
許可回路の一例としてのGMPUは、許可情報を検出する動作として、
第2のメモリアドレスに関連付けられた区域識別子(例えば、PAS TAG)を検出し、区域識別子は複数の区域識別子から選択されており、各区域識別子は、メモリパーティションのそれぞれのセットへのアクセス許可を示す働きをしており、区域識別子のうちの少なくとも1つについて、メモリパーティションのそれぞれのセットは、メモリパーティションのすべてではないが1つ以上のサブセットを含み、
検出された区域識別子を第2のメモリアドレスに関連付けられたパーティション識別子(例えば、変換回路によって識別されたPAS)と比較するように構成される。
保護エンジン
図6及び図7は、物理メモリ600と関連付けられ得るいわゆる保護エンジンの概略例を提供する。
保護エンジンは、メモリ600による記憶のためにデータを暗号化し、メモリ600から取得されたデータを復号化するための暗号化及び復号化回路を提供する。暗号化及び復号化回路は、暗号化及び対応する復号化のセットのそれぞれの暗号化及び対応する復号化を、異なるレルム内のPASに適用するように構成され、その結果、そのレルムのそれぞれの暗号化によって所与のレルム又はメモリパーティションに暗号化されたデータは、別のレルムの復号化を適用することによって復号化することができない。
保護エンジンは、PASタグを利用して、その物理メモリアドレスに関連付けられたPASタグ(区域識別子を示すデータ)に従って選択された暗号化及び復号化を適用することによって、メモリに記憶されるデータを暗号化するために暗号化を適用し、変換された第2の(物理)メモリアドレスでメモリから取得されたデータを復号化するために復号化を適用し得る。
図6を参照すると、各レルムに対してそれぞれの暗号化/復号化回路610、612、614、616が設けられ、制御/選択回路620は、特定のメモリアクセストランザクションに関連付けられたPASタグに応答して暗号化/復号化回路のうちの適切なものを選択する。
図7では、単一の暗号化/復号化回路700が提供され、制御回路710は、PASタグに応じて暗号化/復号化鍵及び/又は暗号化/復号化アルゴリズム若しくはアルゴリズム特徴などのパラメータを設定する。
保護エンジンの使用の効果は、本明細書で提供される他の対策に更なるセキュリティ層を追加することである。
TLB動作概要
上述したように、メモリ管理ユニット16は、変換索引バッファ(TLB)18に関連付けられ得る。この構成の動作の態様は、図8の概略フローチャートによって示されており、ステップ800において、MMU16は変換要求を受信する。ステップ810において、MMU16は、必要な変換がTLB18に存在するかどうかを検出する。そうでない場合、MMU16は、ステップ820において、後述する技術を使用して必要な変換を取得し、それをTLBに記憶する。
ステップ820の後又はステップ810の「はい」の結果の後のいずれかで、ステップ830において、変換要求はTLBによって記憶されたデータからサービスされる。
MMU動作概要
アドレス変換は、第1のメモリアドレス(仮想アドレス、VAなど)と第2のメモリアドレス(物理アドレス、PA、又は中間物理アドレス、IPAなど)との間で行われ、いわゆるページテーブルウォーク(PTW)プロセスを利用することができる。プロセスは、変換情報を記憶するいわゆるページテーブルを参照することを含む。ページテーブルはページテーブルの階層として提供され、その結果、第1のページテーブルでアクセスされたエントリは、次のページテーブル内の関連する次の変換情報エントリへのポインタを提供する。
したがって、例では、変換プロセスへの第1の(入力)メモリアドレスは、仮想メモリアドレス及び中間物理アドレスのうちの1つを含むことができ、プロセスからの第2の(出力)メモリアドレスは、中間物理アドレス又は物理メモリアドレスを含む。
より詳細には、PTWプロセスは、特定のVAの変換に到達するために、いわゆるページテーブルの階層セットをトラバースすることを含む。単一段階メモリ変換の場合、出力はPAであってもよい。多段階メモリアドレス変換の場合、プロセスはかなり複雑になり得る。ページテーブル自体にアクセスするにはPAが必要であるため、階層内の次のテーブルの各アクセスでは、次の必要なテーブルのPAを取得するために変換段階自体が必要になる場合がある。
いわゆる単一段階メモリアドレス変換の一例が図9に概略的に示されており、第1のメモリアドレスは仮想アドレス(VA)900であり、第2のメモリアドレスはいわゆる物理メモリアドレス(PA)である。図9のプロセスによって生成された有効なTLBエントリ910は、少なくともVA900と変換されたPAとの間のマッピングを表す。マッピングは、TLBエントリ910としてTLBに記憶された単一のマッピングが連続した仮想アドレスのセットを連続した物理アドレスの対応するセットにマッピングするように、ページ又は他のメモリ区域ベースで表されてもよく、例えば、ページ(例えば、4kメモリアドレス)を物理アドレスの対応するページにマッピングする。
階層内の第1のページテーブルのアドレスは、レジスタ「変換テーブルベースのレジスタ」(TTBR)によって提供される。第1の変換情報エントリ930の位置は、TTBRによって定義されるメモリアドレスの少なくとも一部と、変換されるVA900の少なくとも一部とによって提供される。これら2つの構成要素は、第1の変換情報エントリL0[VA]930のアドレス920を構成する。この第1の変換情報エントリ930を検索すると、次の変換情報エントリ940にアクセスするためのアドレス935を生成するためにVA900の更なるビットと組み合わされ得るアドレス情報が提供される。ここでも、VA900の更なるビットと連結された、その変換情報エントリに記憶されたデータは、エントリ950のアドレス945を提供する。VA900の更なるビットと連結されたエントリ950に記憶された変換情報は、最終変換情報エントリ960のアドレス955を提供し、エントリ960に記憶されたデータは、VA900の最終ビットと連結されて有効なTLBエントリ910を形成する。
実施例として、変換が必要なVAを48ビットの値として形成する。VAの異なる部分は、PTWプロセスの異なる段階で使用される。
ページテーブル階層の第1のエントリを取得するために、TTBRに記憶されたベースアドレスが取得される。VAの第1の部分、例えば9つの最上位ビットは、L0テーブル内のエントリのアドレスを提供するためのオフセットとしてベースアドレスに追加される。このルックアップは、L1テーブルのベースアドレスを提供する。
2回目の反復では、例えばVAの次の9ビット[38:30]であるVAの更なる部分が、L1テーブル内のエントリのアドレスを提供するために、L1テーブルのベースアドレスからオフセットを形成する。
このプロセスは、例えば、L2及びL3テーブルアクセスのための次のオフセット部分ビット[29:21]及びビット[20:12]を使用して繰り返される。最後に、L3テーブル内のページテーブルエントリは、ページアドレス、及び潜在的に物理メモリページに関連する何らかのアクセス許可を提供する。VAの残りの部分、例えば最下位12ビット[11:0]は、その最後のページテーブルエントリによって定義されるメモリページ内のページオフセットを提供するが、情報を連続する4バイト(例えば32ビット)部分として記憶する例示的なシステムでは、部分[11:2]は、適切な32ビットワードのアドレスに必要なオフセットを提供することができる。
ページテーブルエントリはまた、ページが書き込まれたかどうかのインジケーション(いわゆる「ダーティビット」)、キャッシュの追い出しなどを可能にするためにページが最後に使用されたときのインジケーション(「アクセスビット」)、及び任意選択的に他のパラメータを提供することができる。
このようにページテーブルを使用すると、所与の第1のメモリアドレスの変換に適用可能な変換情報は、次の変換情報エントリの変換情報アドレスを表すデータが、先行する変換情報エントリによって示される、変換情報エントリの階層を含む例が提供される。例えば、次の変換情報エントリの変換情報アドレスを表すデータは、次の変換情報エントリに適用可能な第1のメモリアドレスを示すことができ、変換回路は、それぞれの変換情報アドレスを生成するために変換動作を実行するように構成され得る。
2段階MMU概要
いわゆる2段階MMUでは、VAは依然としてPAに変換されるが、これは、VAがいわゆる中間物理アドレス(IPA)に変換され、それが次に必要なPAに変換される2段階プロセスを介する。TTBR_E1ルックアップ及びステージ1 MMUページテーブルルックアップは、PAではなくIPAを提供し、これらのIPAの各々は、次のページテーブルエントリを検索するためであってもステージ2変換を受ける必要がある。
2段階MMUは、処理要素及び/又はその処理要素上で実行されるプロセスとシステム全体によって提供される物理メモリとの間の更なる分離を提供するためなど、様々な理由で使用される。例えば、VAからIPAへの変換は、例えばいわゆる例外レベル1(EL1)などの第1のセキュリティレベルで、オペレーティングシステムによって確立され、オペレーティングシステムによって制御されるページテーブル(変換情報エントリ)に従ってもよい。IPAからPAへの変換は、より安全に処理することができ、例えば、EL1での動作がEL2に関連するシステムリソースにアクセスすることができないように、例外レベルの階層内のEL2などのより高いセキュリティ又は例外レベルのいわゆるハイパーバイザの制御下にある。
この構成の1つの効果は、図9に示すような各個々の段階が、物理メモリ内の次の変換情報エントリにアクセスするために、変換テーブルベースレジスタTTBR_EL1によって表されるIPAからPAへの更なる変換を必要とすることである。
したがって、図10を参照すると、変換のためのVA1000を受信すると、ステージ1 TTBRエントリ1010がEL1でアクセスされる。これにより、第1の変換情報エントリ1020のIPAが得られる。しかしながら、このIPA1010は、物理メモリ内のエントリ1020にアクセスするためにステージ2 MMUによってPA1015に変換されなければならない。PAへの変換は、EL2でステージ2 TTBRを調べ、多段階のページテーブルウォークを実行して、VA1000のビットと組み合わせたときに次の変換テーブルエントリ1020の完全な物理アドレスを提供する情報1015を生成することを含む。有効なTLBエントリ1030を生成するために、ページテーブルアクセスの階層内の各レベルについて同様の処理が必要である。
GPTチェックを伴う2段階MMU
ここで図11を参照すると、許可情報が各物理アドレスアクセスのための2段階GMPU動作L0GPT及びL1GPTにおいてGMPUによって取得される2段階MMUに含まれるように、一連の動作が示されている。
図11に示す各動作、すなわちVA変換のためのテーブルルックアップ、IPA変換のためのテーブルルックアップ、及びGMPUによる許可ルックアップがメモリアクセスを必要とすることを考えると、図11のプロセスに関与するアクセス数は重要であり得る。
図11及び以下で説明するいくつかの更なる例では、確認するGMPは「ステージ3 GMPU」と呼ばれることに留意されたい。この用語は、MMU変換の最終段階に続くことを示しており、単一段階のMMUの場合でもこの用語が使用される。
GPTチェックを含む単一段階MMU
同様の構成であるが、単一段階のMMU構成の場合、図12に概略的に示されており、TTBRアクセス及び4つのページテーブルアクセスの各々は、L0GPT及びL1GPTに対して潜在的に2つの更なるメモリアクセスを必要とする。
メモリアクセスコスト
「コールド」(最初は空いている)TLBを仮定して、様々な構成で必要なメモリアクセス数の推定値を導出することができる。以下の例では、ページテーブルが4つのレベルを有するという動作仮定がなされるが、本実施形態は、ページテーブル構造の様々な異なる深さ又はレベル数に適用可能であることに留意されたい(コストは、本開示の例示的な実施形態に対して依然として総コストであるが、より多数のレベルについては上方に変化しても、より少数のレベルについては下方に変化してもよい)。4レベルのページテーブル構造の関連図は以下のとおりである:
Figure 2023519322000003
MMUアクセスのためのGMPUチェックの完全又は部分的な削除及び/又は延期
例示的な実施形態では、MMUによる特定の動作のために、GMPUチェックの少なくとも一部を省略又は(対応名詞:elision)「削除」することが可能である。他の例では、GMPUチェックの少なくとも一部が延期されてもよい。いずれの場合も、動作の結果は、開始が延期されたため、又は開始されなかったため、対応するGMPUチェックが完了する前に使用され得る。
例えば、以下に説明する実施形態で説明するように、すべてではないが一部のアクセス(すなわち、選択的に実行されてもよい)に対して、削除及び/又は延期を実行することができる。これは、例えば制御信号21を使用してMMUによって要求又は指示されてもよく、又はMMUによってどのタイプのメモリアクセスが開始されているかに従ってGMPUによって制御されてもよい(これもまた、任意選択的に、接続21を介して制御情報を利用することができる)。したがって、そのような例では、(完全又は部分的な)GMPUチェックが完了していない場合でも、アクセス回路は選択的にアクセスを許可することができる。
延期の例では、許可回路は、次の変換情報エントリに対する許可情報を検出するための動作の開始を、その次の変換情報エントリへのアクセスの開始後まで延期するように構成され得る。
少なくともいくつかの例では、これらの動作は、MMUによる変換情報の読み出し動作、又はそのような読み出し動作の少なくとも一部に関する。これは、その変換情報アドレスへのアクセスが読み出しアクセスに関連する場合、許可回路が許可情報を検出する動作を完了することなく、その変換情報アドレスにアクセスするように構成されているアクセス回路の例を提供し、アクセス回路は、その変換情報アドレスへのアクセスが書き込みアクセスに関連する場合に、その変換情報アドレスへのメモリアクセスが許可されていることを許可情報が示す場合にのみ、その変換情報アドレスにアクセスするように構成されている。
これらの例示的な実施形態の説明の背景として、MMUは、正しいページテーブルアクセスを形成するために、GMPUによってGPTから提供される情報を実際に必要としないことに留意されたい。以下、この態様に関する技術について説明する。
MMUハードウェア自体は、MMUによって読み出される記憶されたコンテンツがホスト又は他のソフトウェアから見えないように信頼することができ、すなわち、変換情報の個々のインスタンスはMMU内でのみ使用され、外部ハードウェア又は実際にはソフトウェアへの出力として提供されない。GPTチェックの(少なくとも部分的な)削除の場合、これは、許可回路が、変換情報アドレスの少なくともいくつかに関する許可情報を検出する動作を実行しないように構成される例を提供することができ、変換回路は、許可情報を検出する動作が完了していない変換情報アドレスから取得された変換情報を、変換回路の外部の回路への出力として提供しないように構成される。
図11及び図12に示された配置における、メモリアクセスの数によって引き起こされる主な性能上の影響は、MMUによる読み出し動作に関することに留意されたい。MMUによる書き込み動作はいくらか一般的である(例えば、ページテーブル内のページ記述子のアクセスビット又はダーティビットへの書き込み)が、本明細書で説明されるタイプの少なくとも原則的な削除を読み出し動作と同様に書き込み動作に適用することができるが、削除は読み出し動作に制限される。これは、GMPUのチェックを完了することなく特定のMMU読み出し動作を進行させる際のセキュリティリスクが、適切なGMPUチェックを完了することなく、MMUがデータを書き込むことを可能にすることに関連するセキュリティリスクよりもやや低いことが知覚されるという潜在的な利点がある。したがって、少なくとも例示的な実施形態では、MMUによるか、システム全体の任意の他の態様の開始によるかにかかわらず、メモリへのすべての書き込みは、完全なGMPUチェック構成によって検証された場合にのみ許可されるように制約される。
セキュリティ機能
変換情報のMMU読み出しアクセスのGMPUチェックの削除及び/又は延期を可能にすることによってセキュリティリスクを回避又は少なくとも軽減するために、以下のセキュリティ機能がハードウェア設計によって提供されてもよい。
(a)外部ハードウェア及びソフトウェアは、MMUによって読み出されたデータに直接アクセスすることができない。
言い換えれば、(例示的な実施形態では)MMUに読み込まれる任意のデータ値は、MMU内でプライベートなままであることが保証される。任意選択的に(個別に又は集合的に)適用することができる他の例示的な手段は、以下のとおりである。
(b)変換障害などが完全に対処され、ページテーブル(変換情報)アクセスに関して発生する任意のグラニュール保護障害が、EL3で実行されるプロセスに報告される。これにより、変換回路は、変換回路による変換情報の使用が有効なアドレス変換を提供しない場合に、所与の変換動作に関する変換障害を検出するように構成され、変換障害の検出に応答して、変換回路は、許可回路を制御して、所与の変換動作の一部としてアクセスされる任意の変換情報アドレスに関する許可情報を検出する動作を実行するように構成される一例が提供される。
(c)メモリの暗号化及び復号化は、例えば図6又は図7の技術によって、例えば世界又はレルムごとに別個の鍵及び/又はアルゴリズムを用いて所定の位置にあってもよい。これは、変換挙動のいわゆるサイドチャネル分析を緩和することができる。
(d)ページテーブルウォークプロセスは、入出力アドレス空間への読み出しアクセスを禁止される。これは、GMPUチェックの一部のみを削除するが、各アドレスに関連付けられたメモリタイプに関連するGMPUチェックの一部を保持することによって、例えば、L0GPTチェックを提供するが、L1GPTチェックを削除又は延期することによって達成することができ、その結果、MMUアクセスは、上述したように「副作用」のないメモリ区域にのみ許可される。この技術の例を以下に説明する。
(e)削除及び/又は延期をMMU読み出しアクセスに制限する(すなわち、MMUによる書き込みアクセスのための完全GMPUチェックを提供する)。
キャッシュ及びメモリアクセス
上記の例に示すキャッシュ24内のキャッシュ記憶に関して、例えば非セキュアPASタグを使用してセキュアキャッシュラインにアクセスしようとすると、キャッシュ内のPAを観察することさえない。
データが「誤った」PASを使用してキャッシュに書き込まれる場合、それは良性であり、その後アクセス又はメインメモリに書き戻すことはできない。代わりに、それは単に、キャッシュ自体によって操作される定期的なキャッシュ管理及び追い出しポリシによって上書きされるまでキャッシュ内に残る。
前述し、上記のポイント(c)で述べた暗号化構成によって、更なるレベルのセキュリティが提供される。これは、「誤った」PASタグがPAに関連付けられている場合に、特定のアドレスでメモリの内容を復号する試みが行われ得るが、その試みは失敗するように、各PASに関連付けられたメモリ暗号化を使用する。
これらの配置は、キャッシュメモリが、それぞれの区域識別子と、キャッシュメモリによって保持される各データ項目とを関連付ける例を提供し、キャッシュメモリは、異なる区域識別子を示すデータに関連付けられたメモリアクセスに応答して、所与の区域識別子に関連付けられたデータ項目へのアクセスを禁止するように構成されている。
実施例-単一段階、L1GPTチェックの削除
図13では、PAへの提案された各アクセスについて、レベル0GPTチェック(L0GPT)が実行されて、上述のようにメモリ区域タイプ、特に、メモリ区域が、そのアドレスに記憶されたデータを変更する読み出し動作自体に関して「副作用」なしに読み出すことができる入出力デバイス又はメモリに関連するかどうかが検出される。
上述したように、この特定のチェックに必要なGPTデータは、比較的コンパクトであり得、例えばGBあたり1つのデータ項目であり得、そのため、例示的な構成では、特定のメモリアクセスのためにL0GPTデータを取得する際の性能ペナルティが比較的低くなるように、MMUによって維持される特注のキャッシュ又はシステムキャッシュのいずれかにキャッシュされる。
しかしながら、図13の例では、TLBエントリの取り込みにつながる最終段階を除いて、単一段階のMMU動作に含まれるすべてのメモリアクセスについてL1GPTチェックが省略又は削除される。
したがって、この構成は、L1GPTチェックを受けていないデータの投機的ロードを可能にする。これを行うために、例えばGMPUがデフォルトのPASタグをアクセスに関連付けることによって、データアクセスにPASタグ値を想定することができる。他の例では、ページテーブルウォークのPASタグは、ページテーブルが関連付けられている「セキュリティ状態」から直接導出することができ、任意選択的にステージ1又はステージ2のページテーブルの(任意選択の)ビットと組み合わされる(ビットは、状態が「非セキュア」かどうかを示すために「NS」と呼ばれる)。したがって、そのような例では、(例えば、本技術によって開始される)正しいページテーブルアクセスを送信するために、GPTは必要とされない。そのような例のGMPUは、上記の表に従って、PASタグがセキュリティ状態に対して「許可された」ものであることを確認するだけでよい。
最終チェックは、TLBエントリに取り込まれる最終アドレスを検証するために提供される。
図13と図12との比較における潜在的な節約は、図12の構成で必要とされた14のアドレス変換の生成における4つのメモリアクセスの程度である。例示的な構成では、残りのメモリアクセスのうちの5つは、キャッシュされたL0GPTデータに関するものであり得る。
L0GPTチェックのこの使用は、アクセス回路が、変換情報アドレスに適用可能なストレージタイプが第1のストレージタイプである場合にのみ(例えば、「副作用」を潜在的に被る可能性があるものなどの第2のストレージタイプの場合はそうではない)、メモリアクセスがその変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、変換回路による変換情報アドレスへのアクセスを選択的に許可するように構成されている一例を提供する。
実施例-2段階、L1GPTチェックの削除
図14は、図11の配置と同様の配置を示しているが、ここでも、TLBエントリの取り込みをもたらす最後の1つを除いてL1GPTチェックが削除されている。これにより、上記の74アクセスを24減少させることができ、残りのアクセスのうちの25はキャッシュされたL0GPTデータに関するものである。
削除の無効化
任意選択的に、EL3のコードは、障害、又はページテーブルアクセスから生じる一般的な保護障害などの特定のタイプの障害の場合に削除を無効にすることができる。
任意選択的に、EL3のコードは、変換又は他の障害が発生した場合、MMU変換に関して完全なGPTチェックが再実行されることを必要とし得る。
更なる例-単一段階、L1GPTチェックの延期
図15及び図16は、延期されたチェックを提供し、両方の構成は、想定されるPASタグを有するチェックされていないデータのMMUによるロードを可能にする。図15及び図16の両方は、(例の説明の目的のために)単一段階のMMU動作に関連するが、対応する技術を2段階MMU動作に使用することができることに留意されたい。図15及び図16に関連するL0GPTチェックは示されていないが、関連するアドレスがメモリアクセスで使用される前に行われると仮定されることに留意されたい。
図15では、L0ページテーブルアクセス1500は、TTBR_EL1によって提供されるページテーブルベースアドレスのL1GPTチェック1505の完了前に実行される。示されている例では、両方のアクセスはほぼ同時に開始されるが、この技術の使用は、1500において関連情報がページテーブルの第1のレベルにアクセスするために実際に使用される時点でチェック1505が完了していないことを単に必要とする。
図15の例は、いくつかの例では、結果として得られるデータが使用又はキャッシュされ得る前に、読み出しアクセスに関連付けられていると仮定されるPASが検証されるという要件を課す。これは、GPTチェックポイントを表す破線垂直線1510によって表される。言い換えれば、L0ページテーブルアクセス1500から読み出されたデータは、そのデータが取得されたアドレス、すなわちTTBR_EL1内のページテーブルベースアドレスがそれ自体検証されるまで更に使用されない。
同様に、L1ページテーブルエントリアクセス1520は、そのアドレス(アクセス1500の出力)がステップ1525によって検証される前に開始することができるが、図15の例では、アクセス1520によって読み出される次のレベルのアドレス情報自体を使用することはできない(後続のアクセス1530では、アクセス1520が実行されたアドレスに関連するL1GPTチェック1525自体が完了するまで)。
図15の構成は、いくつかの例では、例えばアクセス1505及び1500の並列又は二重発行など、GPT L1チェック及び次のページテーブルエントリ読み出し動作の二重又は並列発行によって実施することができる。これは、ページテーブルエントリ読み出し動作が、そのアドレスが完全にチェックされることなく、想定されるPASで実行されることを意味する。しかしながら、読み出し完了時にチェックポイント1510などのGPTチェックポイントを提供することによって、いわゆる「不良」データの読み出しから生じるメモリアクセス障害又は変換障害は、それらが関連するMMU動作で又はそれに応じて発生するという点で同期して処理される。二次投機的ページテーブルエントリ読み出しは、チェックされていないデータから発行されず、キャッシュサイドチャネル攻撃又は他の問題を回避するのに役立ち得る。
図15のGPTチェックポイントでは、アクセス/ダーティビット更新が実行され(上述したように、例示的な実施形態では、MMUによる任意の書き込み動作は、実装前に完全なL1GPTチェックを必要とすることに留意されたい)、TLB及びウォークキャッシュが取り込まれ得る。
図16に概略的に示す別の構成では、やはり、仮定されたPAS値を有するチェックされていないデータのロード又は読み出しが許可され、ロードされたデータ値自体を後続のロード操作への入力として使用することができる。しかしながら、仮定されたPAS値は、最終データがコミット又はキャッシュされ得る前に、それぞれのL1GPTチェックが完了することによって検証される。
図16を参照すると、TTBR_EL1によって提供されるページテーブルベースアドレスは第1の読み出し動作1600で使用され、その結果は第2の読み出し動作1610で使用され得、第4のページテーブルウォーク動作に関連する第4の読み出し動作1620まで続く。これとは別に、TTBR_EL1によって提供されるベースアドレスがL1GPTチェック1605を受けるようにL1GPTチェックのチェーンが開始され、このチェックがチェックポイント1607で通過すると仮定すると、読み出し動作1600の出力の第2のL1GPTチェック1615が1617を通過したかどうかの検出が行われ、以下同様である。L1GPTチェックのチェーンは、動作1620から読み出されたアドレス又はアドレス部分のL1GPTチェック1625まで継続し、チェック1625の1627の通過は、(a)TLBエントリ1630の取り込み及び変換されたアドレスにおけるデータ1640のプリフェッチに対する条件である。
上記のように、図16のGPTチェックポイントでは、アクセス/ダーティビット更新が実行され(上述したように、例示的な実施形態では、MMUによる任意の書き込み動作は、実装前に完全なL1GPTチェックを必要とすることに留意されたい)、TLB及びウォークキャッシュが取り込まれ得る。
2段階MMUの例
2段階のMMUでは、本明細書に記載された技術のいずれも、一方の段階に個別に適用することができるが、他方の段階には適用することができず(どちらにしても)、又は両方の段階に適用することができる。
更なる例
アクセスを選択的に許可する更なる例は、以下のとおりである。
許可回路は、各PTEアクセスについて(又はPTEアクセスのサブグループについて)、言い換えれば、対応する完全又は部分許可チェックを延期、削除又は保持する(延期又は削除しない)ために別個の構成を選択するか、又は変換回路によって制御され得る。
一例として、ステージ1及びステージ2の両方がイネーブルされる場合、許可回路は、(それ自体又は変換回路の制御下で選択する)
・ステージ1のMMU読み出し動作ごとに、ステージ1読み出しの前に対応する許可チェックを実行するか、又は結果が後続のステージ2読み出しを駆動するために使用される時点までに完了するようにそれを延期し、
・(要求されたメモリアドレス変換の出力アドレスを定義するデータを取得する)最後のステージ2読み出し動作のために、ステージ2読み出しの前に許可チェックを実行するか、又は出力アドレスがコミットされるか、又は別の方法で使用される前の時点までに完了するようにそれを延期し、
・他のすべてのステージ2読み出し動作については、許可回路チェックを削除する、ように構成され得る。
そのような実装形態は、攻撃者が、削除されたステージ1チェックの内容を開示することができる幽霊のような暴露攻撃(Spectre-like revelation attack)として、攻撃者によって制御されたステージ2テーブルを使用することを阻止することができる。
より一般的には、例えばランダム又は擬似ランダムパターンなど、削除及び/又は延期の異なるパターンを使用することができる。
例示的な技術の概要
上述したように、様々な例示的な構成は、少なくとも以下の選択肢及び変形を想定しており、それらのすべては、添付の特許請求の範囲によって定義される本開示の範囲内である:
a)少なくとも一部の許可情報(例えば、GPT)チェックの省略の全部又は一部の削除(例えば、図13、図14)
b)変換情報(例えばPTE)アクセスを進め、同時に、又は少なくともPTEアクセスが開始されるまでにGPTチェックが完了しないように、GPTチェックを開始する
c)(b)として、PTEアクセスのためのGPTチェックの結果が、次のMMU動作のためにそのPTEアクセスが使用される前に、必要とされる(例えば、そのPTEアクセスから取得された情報を用いて、次のPTEアクセスが開始される前に)(例えば、図15)
d)(b)として示されているが、結果がコミットされる前に、例えばTLBエントリなどの任意の結果の書き込み又は変換されたアドレスのフェッチが開始される前に、PTEアクセスのためのGPTチェックの結果が必要とされる(例えば、図16)、
e)(b)から(d)のいずれかの場合と同様に、L0GPTなどのGPTチェックの一部は関連するPTEアクセスの前に実行されるが、残りのGPTチェック、例ではL1GPTは完了が延期された部分である。
(c)の例は、いわゆる「ロックステップ」変形形態であり、ページテーブルウォークのメモリアクセスと並行してGPTチェックが開始されるが、GMPUチェック自体は、そのメモリアクセスの結果が使用される前の時点まで延期される(例えば、次のウォークを駆動するために)。
方法概要
図17は、以下を含む方法を示す概略フローチャートである:
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する(ステップ1700)ことであって、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成することを含む、ことと、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する(ステップ1710)ことと、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータにアクセスする(ステップ1720)ことと、
メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、その変換情報アドレスにアクセスする(ステップ1730)ことと、を含む、方法を提供する。
装置機能の概要
上述の技術に従って動作する図1及び図3の構成は、以下を含む装置の一例を提供し、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換回路16(50、52)であって、変換回路は、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換回路と、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可回路20、22と、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータにアクセスするアクセス回路20と、を備え、
アクセス回路は、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可回路が完了することなく、その変換情報アドレスに選択的にアクセスするように構成されている、装置を提供する。
例示的な構成では、変換回路16は、メモリアクセストランザクションに関して動作可能であり、各メモリアクセストランザクションは、変換のための第1のメモリアドレスに関連付けられており、変換回路は、変換された第2のメモリアドレスを各メモリアクセストランザクションに関連付けており、
許可回路20は、各メモリアクセストランザクション(例えば、L1GPTチェック1300、1400、1532、1625)について変換された第2のメモリアドレスに関する許可情報を検出するための動作を実行するように構成され、アクセス回路は、変換された第2のメモリアドレスへのアクセスが許可データによって許可された場合にのみ、メモリアクセストランザクションについて変換された第2のメモリアドレスへのアクセスの結果を提供するように構成されている。
シミュレータ実装
図18は、使用され得るシミュレータ実装を示す。上記の実施形態は、当該技術をサポートする特有の処理ハードウェアを動作させる装置及び方法の点において本発明を実装するが、コンピュータプログラムを使用して実装される本明細書に記載の実施形態による命令実行環境を提供することも可能である。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装を提供する限り、シミュレータとしばしば称される。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、シミュレータプログラム1410をサポートするホストオペレーティングシステム1420を任意選択で実行して、ホストプロセッサ1430で実行し得る。いくつかの構成では、ハードウェアと提供された命令実行環境との間に複数の層のシミュレーションがあってもよく、及び/又は、同じホストプロセッサ上に提供された複数の異なる命令実行環境があってもよい。歴史的に、強力なプロセッサが、合理的な速度で実行するシミュレータ実装を提供するために必要とされてきたが、そのような手法は、ある状況において、例えば、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるときに、正当化され得る。例えば、シミュレータ実装は、ホストプロセッサハードウェアによってサポートされていない追加の機能を有する命令実行環境を提供してもよく、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供してもよい。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬 USENIX Conference、53~63頁に記載されている。
これまで、特定のハードウェア構成又は機能を参照して実施形態を説明してきたが、シミュレーションされた実施形態では、適切なソフトウェア構成又は機能によって同等の機能を提供することができる。例えば、特定の回路は、シミュレーションされた実施形態において、コンピュータプログラムロジックとして実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実施形態でソフトウェアのデータ構造として実装されてもよい。前述の実施形態で参照されているハードウェア要素のうちの1つ以上がホストハードウェア(例えば、ホストプロセッサ1430)に存在する構成では、いくつかのシミュレーションされた実施形態は、適する場合、ホストハードウェアを使用してもよい。
シミュレータプログラム1410は、(非一時的媒体であってもよい)コンピュータ読み出し可能な記憶媒体に記憶されてもよく、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)ターゲットコード1400に対するプログラムインタフェース(命令実行環境)を提供し、シミュレータプログラム1410によってモデル化されたハードウェアアーキテクチャのインタフェースと同じである。したがって、ターゲットコード1400のプログラム命令は、シミュレータプログラム1410を使用して命令実行環境内から実行されてもよく、このため、前述の装置2のハードウェア特徴を実際には有しないホストコンピュータ1430は、これらの特徴をエミュレートすることができる。これは、例えば、ターゲットコードが、新しいバージョンのプロセッサアーキテクチャをサポートしないホストデバイス上で実行されるシミュレータ内で実行されることによって試験され得るので、新しいバージョンのプロセッサアーキテクチャのために開発されているターゲットコード1400の試験を、実際にそのアーキテクチャをサポートするハードウェアデバイスが利用可能となる前に、可能にするために有用であり得る。
シミュレータコードは、例えば、ターゲットコード1400の命令をデコードする命令復号プログラムロジックを含む、処理回路10の挙動をエミュレートし、命令を、ホストハードウェア1430によってサポートされたネイティブ命令セット内の対応する命令のシーケンスにマッピングして、復号化された命令に相当する機能を実行する処理プログラムロジック1412を含む。処理プログラムロジック1412はまた、上述のように、異なる例外レベル及び領域におけるコードの処理をシミュレートする。レジスタエミュレートプログラムロジック1413は、ターゲットコード1400に関連付けられたターゲット命令セットアーキテクチャに従って定義されたアーキテクチャ上のレジスタ状態をエミュレートする、ホストプロセッサのホストアドレス空間内のデータ構造を維持する。したがって、そのようなアーキテクチャ上の状態は、図1の例のようにハードウェアレジスタ12に記憶されるのでなく、代わりに、ホストプロセッサ1430のメモリに記憶され、レジスタエミュレートプログラムロジック1413は、ターゲットコード1400の命令のレジスタ参照をホストメモリからシミュレートされたアーキテクチャ上の状態データを取得するための対応するアドレスにマッピングする。このアーキテクチャ上の状態は、前述の現在の領域指示14及び現在の例外レベル指示15を含み得る。
シミュレーションコードは、前述のように同じページテーブル構造及びGPT56を参照して、アドレス変換回路16及びPASフィルタ20の機能をそれぞれエミュレートするアドレス変換プログラムロジック1414及びフィルタリングプログラムロジック1416を含む。したがって、アドレス変換プログラムロジック1414は、ターゲットコード1400によって指定された仮想アドレスをPASのうちの1つの中の(ターゲットコードの視点からメモリ内の物理的位置を指す)シミュレートされた物理アドレスに変換するが、実際にこれらのシミュレートされた物理アドレスは、アドレス空間マッピングプログラムロジック1415によってホストプロセッサの(仮想)アドレス空間上にマッピングされる。フィルタリングプログラムロジック1416は、上述のPASフィルタと同様に、ターゲットコードによってトリガされたメモリアクセスを進めることを可能とするかどうかを判定するために、グラニュール保護情報のルックアップを実行する。
図18の構成は、ターゲットコードを実行するための命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムの例を提供する。コンピュータプログラムが、
第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換ロジックであって、変換ロジックは、1つ以上の変換情報アドレスに記憶された変換情報に応じて変換された第2のメモリアドレスを生成するように構成される、変換ロジックと、
所与の第2のメモリアドレスについて、メモリアクセスが所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可ロジックと、
許可情報が所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、所与の第2のメモリアドレスに記憶されたデータへのアクセスを許可するアクセスロジックと、を備え、
アクセスロジックは、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する動作を許可ロジックが完了することなく、変換ロジックによるその変換情報アドレスへのアクセスを選択的に許可するように構成されている、コンピュータプログラムが提供される。
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を実施することが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスが、機能を実行するようにプログラムされてもよい。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
本発明の例示的な実施形態が添付の図面を参照して本明細書で詳細に説明されているが、本発明はこれらの正確な実施形態に限定されないこと、及び様々な変更及び修正が、当業者によって、添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、実施形態に行われ得ることが理解されよう。

Claims (20)

  1. 装置であって、
    第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行する変換回路であって、前記変換回路は、1つ以上の変換情報アドレスに記憶された変換情報に応じて前記変換された第2のメモリアドレスを生成するように構成される、変換回路と、
    所与の第2のメモリアドレスについて、メモリアクセスが前記所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行する許可回路と、
    前記許可情報が前記所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、前記所与の第2のメモリアドレスに記憶されたデータへのアクセスを許可するアクセス回路と、を備え、
    前記アクセス回路は、メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する前記動作を前記許可回路が完了することなく、前記変換回路によるその変換情報アドレスへのアクセスを選択的に許可するように構成されている、装置。
  2. 前記アクセス回路は、前記変換情報アドレスへの前記アクセスが読み出しアクセスに関連する場合、許可情報を検出するための前記動作を前記許可回路が完了することなく、前記変換回路によるその変換情報アドレスへのアクセスを選択的に許可するように構成され、
    前記アクセス回路は、変換情報アドレスへの前記アクセスが書き込みアクセスに関連する場合に、その変換情報アドレスへのメモリアクセスが許可されていることを前記許可情報が示す場合にのみ、その変換情報アドレスへのアクセスを許可するように構成される、
    請求項1に記載の装置。
  3. 前記許可回路は、所与の第2のメモリアドレスに適用可能なストレージタイプを検出するための更なる動作を実行するように構成され、前記ストレージタイプは、少なくとも、第1のストレージタイプ又は第2の、異なるストレージタイプが前記所与の第2のメモリアドレスに適用可能であるかどうかである、請求項1又は2に記載の装置。
  4. 前記アクセス回路は、変換情報アドレスに適用可能な前記ストレージタイプが前記第1のストレージタイプである場合にのみ、メモリアクセスがその変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する前記動作を前記許可回路が完了することなく、前記変換回路による前記変換情報アドレスへのアクセスを選択的に許可するように構成されている、請求項3に記載の装置。
  5. 前記第1のストレージタイプは、所与のアドレスに記憶された前記データが前記所与のアドレスからの読み出し動作によって変更されないストレージタイプである、請求項4に記載の装置。
  6. 前記許可回路は、前記変換情報アドレスの少なくとも一部に関して許可情報を検出する前記動作を実行しないように構成され、
    前記変換回路は、許可情報を検出する前記動作が完了していないことに関して、変換情報アドレスから取得された変換情報を、前記変換回路の外部の回路への出力として提供しないように構成される、
    請求項1から5のいずれか一項に記載の装置。
  7. 所与の第1のメモリアドレスの変換に適用可能な前記変換情報は、次の変換情報エントリの変換情報アドレスを表すデータが、先行する変換情報エントリによって示される、変換情報エントリの階層を含む、請求項1から5のいずれか一項に記載の装置。
  8. 次の変換情報エントリの変換情報アドレスを示す前記データは、前記次の変換情報エントリに適用可能な第1のメモリアドレスを示し、
    前記変換回路は、それぞれの変換情報アドレスを生成するために前記変換動作を実行するように構成される、
    請求項7に記載の装置。
  9. 前記許可回路は、次の変換情報エントリに対する許可情報を検出するための前記動作の開始を、その次の変換情報エントリへのアクセスの開始後まで延期するように構成される、請求項7又は8に記載の装置。
  10. 前記変換回路は、メモリアクセストランザクションに関して動作可能であり、各メモリアクセストランザクションは、変換のための第1のメモリアドレスに関連付けられており、前記変換回路は、変換された第2のメモリアドレスを各メモリアクセストランザクションに関連付けており、
    前記許可回路は、各メモリアクセストランザクションについて前記変換された第2のメモリアドレスに関する許可情報を検出するための前記動作を実行するように構成され、前記アクセス回路は、前記変換された第2のメモリアドレスへのアクセスが前記許可データによって許可された場合にのみ、メモリアクセストランザクションについて前記変換された第2のメモリアドレスへのアクセスの結果を提供するように構成されている、
    請求項1から9のいずれか一項に記載の装置。
  11. 前記第1のメモリアドレスは、仮想メモリアドレス及び中間物理アドレスのうちの1つを含み、
    前記第2のメモリアドレスは、中間物理アドレス又は物理メモリアドレスを含む、
    請求項1から10のいずれか一項に記載の装置。
  12. 複数のメモリパーティションを有するメモリを備え、各データメモリパーティションは、パーティション識別子に関連付けられ、物理アドレス空間内の物理アドレスのそれぞれの範囲を有する、請求項11に記載の装置。
  13. 前記許可回路は、構成されている場合、許可情報を検出する前記動作として、
    第2のメモリアドレスに関連付けられた区域識別子を検出し、前記区域識別子は複数の区域識別子から選択されており、各区域識別子は、前記メモリパーティションのそれぞれのセットへのアクセス許可を示す働きをしており、前記区域識別子のうちの少なくとも1つについて、前記メモリパーティションの前記それぞれのセットは、前記メモリパーティションのすべてではないが1つ以上のサブセットを含み、
    前記検出された区域識別子を前記第2のメモリアドレスに関連付けられたパーティション識別子と比較する、請求項12に記載の装置。
  14. 前記メモリによる記憶のためにデータを暗号化し、前記メモリから取得されたデータを復号化するための暗号化及び復号化回路を備え、
    前記暗号化及び復号化回路は、暗号化及び対応する復号化のセットのうちのそれぞれの暗号化及び対応する復号化を各メモリパーティションに適用するように構成され、暗号化及び対応する復号化の前記セットは、所与のメモリパーティションの前記それぞれの暗号化によってそのメモリパーティションに暗号化されたデータは、別のメモリパーティションの前記復号化を適用することによって復号化され得ないようなものである、
    請求項12又は13のいずれか一項に記載の装置。
  15. 前記許可回路は、変換された第2のメモリアドレスに、前記変換された第2のメモリアドレスに関連付けられた前記区域識別子を示すデータを関連付けるように構成される、請求項14に記載の装置。
  16. 前記暗号化及び復号化回路は、変換された第2のメモリアドレスにおいて前記メモリから取得されたデータを復号化するために、その変換された第2のメモリアドレスに関連付けられた前記区域識別子を示す前記データに従って選択された復号化を適用することによって、復号化を適用するように構成される、請求項15に記載の装置。
  17. 前記メモリから取得されたデータ及び/又は前記メモリへの記憶のためのデータを保持するための1つ以上のキャッシュメモリを備え、
    前記キャッシュメモリは、前記それぞれの区域識別子と、前記キャッシュメモリによって保持される各データ項目とを関連付け、
    前記キャッシュメモリは、異なる区域識別子を示すデータに関連付けられたメモリアクセスに応答して、所与の区域識別子に関連付けられたデータ項目へのアクセスを禁止するように構成されている、請求項15又は16に記載の装置。
  18. 前記変換回路は、前記変換回路による前記変換情報の使用が有効なアドレス変換を提供しない場合、所与の変換動作に関する変換障害を検出するように構成され、
    変換障害の検出に応答して、前記変換回路は、前記許可回路を制御して、前記所与の変換動作の一部としてアクセスされる任意の変換情報アドレスに関する許可情報を検出する前記動作を実行させるように構成される、
    請求項1から17のいずれか一項に記載の装置。
  19. 例外レベルの階層から選択された一般的な例外レベルでプログラム命令を実行するプロセッサであって、各例外レベルは、より高い例外レベルで実行される命令が、より低い例外レベルで実行される命令にアクセスできないリソースにアクセスできるように、セキュリティ特権に関連付けられている、プロセッサを備え、
    前記プロセッサは、前記許可回路が許可情報を検出するデータを設定するために、前記例外レベルの最高レベルで命令を実行する必要がある、
    請求項1から18のいずれか一項に記載の装置。
  20. 方法であって、
    第1のメモリアドレス空間内の第1のメモリアドレスの変換として第2のメモリアドレス空間内に変換された第2のメモリアドレスを生成するために変換動作を実行することであって、1つ以上の変換情報アドレスに記憶された変換情報に応じて前記変換された第2のメモリアドレスを生成することを含む、ことと、
    所与の第2のメモリアドレスについて、メモリアクセスが前記所与の第2のメモリアドレスに対して許可されているかどうかを示すための許可情報を検出する動作を実行することと、
    前記許可情報が前記所与の第2のメモリアドレスへのメモリアクセスが許可されていることを示す場合に、前記所与の第2のメモリアドレスに記憶されたデータにアクセスすることと、
    メモリアクセスが変換情報アドレスに対して許可されているかどうかを示すための許可情報を検出する前記動作を前記許可回路が完了することなく、その変換情報アドレスに選択的にアクセスすることと、
    を含む、方法。

JP2022558202A 2020-03-24 2021-03-08 装置及び方法 Pending JP2023519322A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB2004259.4 2020-03-24
GB2004259.4A GB2593487B (en) 2020-03-24 2020-03-24 Apparatus and method
PCT/GB2021/050574 WO2021191585A1 (en) 2020-03-24 2021-03-08 Apparatus and method

Publications (1)

Publication Number Publication Date
JP2023519322A true JP2023519322A (ja) 2023-05-10

Family

ID=70546567

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022558202A Pending JP2023519322A (ja) 2020-03-24 2021-03-08 装置及び方法

Country Status (9)

Country Link
US (1) US11989134B2 (ja)
EP (1) EP4127950B1 (ja)
JP (1) JP2023519322A (ja)
KR (1) KR20220156922A (ja)
CN (1) CN115335815A (ja)
GB (1) GB2593487B (ja)
IL (1) IL296346A (ja)
TW (1) TW202137010A (ja)
WO (1) WO2021191585A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11561898B1 (en) * 2021-10-25 2023-01-24 Arm Limited Address expansion
CN118227526A (zh) * 2022-12-19 2024-06-21 华为技术有限公司 存储控制器及其控制方法、存储系统及微控制单元
GB2627483A (en) * 2023-02-24 2024-08-28 Advanced Risc Mach Ltd Predetermined less-secure memory property

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6941449B2 (en) * 2002-03-04 2005-09-06 Hewlett-Packard Development Company, L.P. Method and apparatus for performing critical tasks using speculative operations
GB2396930B (en) * 2002-11-18 2005-09-07 Advanced Risc Mach Ltd Apparatus and method for managing access to a memory
US8667225B2 (en) * 2009-09-11 2014-03-04 Advanced Micro Devices, Inc. Store aware prefetching for a datastream
US9063891B2 (en) * 2012-12-19 2015-06-23 Advanced Micro Devices, Inc. Secure computer system for preventing access requests to portions of system memory by peripheral devices and/or processor cores
DE112013006590T5 (de) * 2013-02-05 2016-01-21 Arm Limited Handhabung von Speicherzugriffsvorgängen in einer Datenverarbeitungsvorrichtung
US10216927B1 (en) * 2015-06-30 2019-02-26 Fireeye, Inc. System and method for protecting memory pages associated with a process using a virtualization layer
US10037288B2 (en) 2016-04-01 2018-07-31 Intel Corporation Memory protection at a thread level for a memory protection key architecture
GB2550859B (en) * 2016-05-26 2019-10-16 Advanced Risc Mach Ltd Address translation within a virtualised system
GB2557588B (en) * 2016-12-09 2019-11-13 Advanced Risc Mach Ltd Memory management
GB2564097B (en) * 2017-06-28 2019-10-23 Advanced Risc Mach Ltd Memory region locking
US10437739B2 (en) 2017-09-26 2019-10-08 Intel Corporation Low-latency accelerator
GB2578099B (en) * 2018-10-15 2021-05-12 Advanced Risc Mach Ltd Memory access control

Also Published As

Publication number Publication date
TW202137010A (zh) 2021-10-01
GB2593487B (en) 2022-05-04
IL296346A (en) 2022-11-01
CN115335815A (zh) 2022-11-11
GB202004259D0 (en) 2020-05-06
EP4127950A1 (en) 2023-02-08
GB2593487A (en) 2021-09-29
US11989134B2 (en) 2024-05-21
EP4127950B1 (en) 2023-12-13
KR20220156922A (ko) 2022-11-28
US20230236987A1 (en) 2023-07-27
WO2021191585A1 (en) 2021-09-30

Similar Documents

Publication Publication Date Title
EP4127948B1 (en) Apparatus and method using plurality of physical address spaces
EP4127950B1 (en) Apparatus and method
US20230185733A1 (en) Data integrity check for granule protection data
US20230342303A1 (en) Translation table address storage circuitry
EP4127945B1 (en) Apparatus and method using plurality of physical address spaces
GB2618126A (en) Maintenance operations across subdivided memory domains
GB2618124A (en) Execution environment mismatch
TW202343294A (zh) 保護域內執行環境

Legal Events

Date Code Title Description
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20221012

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20221013

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20240301