JP2018535483A - メモリアクセス命令 - Google Patents

メモリアクセス命令 Download PDF

Info

Publication number
JP2018535483A
JP2018535483A JP2018519050A JP2018519050A JP2018535483A JP 2018535483 A JP2018535483 A JP 2018535483A JP 2018519050 A JP2018519050 A JP 2018519050A JP 2018519050 A JP2018519050 A JP 2018519050A JP 2018535483 A JP2018535483 A JP 2018535483A
Authority
JP
Japan
Prior art keywords
memory access
memory
protected
instruction
program
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.)
Granted
Application number
JP2018519050A
Other languages
English (en)
Other versions
JP2018535483A5 (ja
JP6944444B2 (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 JP2018535483A publication Critical patent/JP2018535483A/ja
Publication of JP2018535483A5 publication Critical patent/JP2018535483A5/ja
Application granted granted Critical
Publication of JP6944444B2 publication Critical patent/JP6944444B2/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/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
    • G06F12/1441Protection 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 for a range
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30043LOAD or STORE instructions; Clear instruction
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • 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
    • G06F21/79Protecting 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 in semiconductor storage media, e.g. directly-addressable memories
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes
    • 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
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

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)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

データ処理システム2は、ロードストアユニット12を制御するための制御信号を生成するために、保護されたメモリアクセス命令(LDR/STR)およびより保護されていないメモリアクセス命令(LDNPR/STNPR)をデコードする命令デコーダ10を含む。より保護されていないメモリアクセス命令は、保護されたメモリアクセス命令よりも制限の少ないメモリアクセス条件に関連付けられる。一例として、より保護されていないメモリアクセス命令は共有メモリ領域26,28にアクセスするために使用され、保護されたメモリアクセス命令はそのような共有領域にアクセスするために使用されない。反対に、より保護されていないメモリアクセス命令は、プライベートメモリ領域30,32,34にアクセスするために使用されない。

Description

本開示は、データ処理システムの分野に関する。より具体的には、本開示は、データ処理システム内のメモリアクセス命令、およびそれらのメモリアクセス命令に関連するアクセス条件に関する。
デコードされるとメモリとプロセッサコア間で、データロードまたはデータストアなどのような、メモリアクセス動作を実行するのに役立つメモリアクセス命令をデータ処理システムに提供することが知られている。このようなシステム内のメモリアクセス条件を管理するために、メモリ管理ユニットまたはメモリ保護ユニットのようなハードウェアを提供することが知られている。これらは、例えば、特定のメモリアドレスまたはメモリアドレスの範囲が、読み取り専用、読み取り/書き込み、特権アクセスのみ、などとしてマークされ得る、メモリアクセスを制御するために使用される許可データ(パーミッションデータ(permission data))でプログラムされている。
本開示の少なくともいくつかの実施形態は、データを処理するための装置を提供し、
プログラム命令によって指定された処理動作を実行するための処理回路と、そして
メモリアクセス命令をデコードしてメモリアクセス動作を実行するように前記処理回路を制御する制御信号を生成するデコーダと、を含み、
前記メモリアクセス命令は、
保護されたメモリアクセス動作に対応する保護されたメモリアクセス命令と、
より保護されていないメモリアクセス動作に対応するより保護されていないメモリアクセス命令と、
を指定するそれぞれのエンコードを有し、
前記より保護されていないメモリアクセス動作は、前記保護されたメモリアクセス動作よりもより制限の少ないメモリアクセス条件に関連付けられている。
本開示の少なくともいくつかの実施形態は、データを処理するための装置を提供し、
プログラム命令によって指定された処理動作を実行する処理手段と、そして
メモリアクセス動作を実行するように前記処理手段を制御する制御信号を生成するためにメモリアクセス命令をデコードするデコーダ手段と、を備え、
前記メモリアクセス命令は、
保護されたメモリアクセス動作に対応する保護されたメモリアクセス命令と、そして
より保護されていないメモリアクセス動作に対応するより保護されていないメモリアクセス命令と、
を指定するそれぞれのエンコードを有し、そして
前記より保護されていないメモリアクセス動作は、前記保護されたメモリアクセス動作よりもより制限の少ないメモリアクセス条件に関連付けられている。
本開示の少なくともいくつかの実施形態は、データを処理する方法であって、
メモリアクセス動作を実行するように処理回路を制御するための制御信号を生成するためにメモリアクセス命令をデコードすること、を含み、ここで
前記メモリアクセス命令は、
保護されたメモリアクセス動作に対応する保護されたメモリアクセス命令と、そして
より保護されていないメモリアクセス動作に対応するより保護されていないメモリアクセス命令と、
を指定するそれぞれのエンコードを有し、
前記より保護されていないメモリアクセス動作は、前記保護されたメモリアクセス動作よりもより制限の少ないメモリアクセス条件に関連付けられている。
例示的な実施形態を、添付の図面を参照して、単なる例として以下に説明する。
図1は、データ処理システムを概略的に示す図である。 図2は、保護されたメモリアクセス命令とより保護されていないメモリアクセス命令を概略的に示す図である。 図3は、図2のメモリアクセス命令のための命令エンコードを概略的に示す図である。 図4は、共有/プライベートフラグを含むメモリ管理ユニットのページエントリを概略的に示す図である。 図5は、メモリアクセス処理を概略的に示すフロー図である。 図6は、メモリの領域でデータを暗号化するための暗号化回路を組み込んださらなる例示的な実施形態を概略的に示す図である。 図7は、異なる例外レベルで実行される特権プログラムとより低い特権プログラムの階層を概略的に示す図である。 図8は、メモリシステム階層および暗号化回路内の複数の層(レイヤー)を含むデータ処理システムのさらなる例示的実施形態を概略的に示す図である。
図1は、プロセッサコア4およびメモリ6を含むデータ処理システム2を概略的に示す。プロセッサコア4は、命令フェッチユニット8、デコーダ10、ロードストアユニット12、メモリ管理ユニット14、レジスタバンク16、乗算器18と、シフタ20と、加算器22とを含む演算処理回路を含む。動作中、命令フェッチユニット8は、メモリ6からプログラム命令をフェッチし、これらをデコーダ10に渡す。デコーダ10は、プログラム命令をデコードし、制御信号を生成し、制御信号はその後、ロードストアユニット12および演算処理回路18,20,22など、処理回路の他の要素によって実行される処理動作を制御するために使用される。
レジスタバンク16内のレジスタとメモリ6内のメモリアドレスとの間のロード命令およびストア命令から生じるようなメモリアクセス動作は、ロードストアユニット12によって実行される。デコーダ10によって生成された制御信号は、デコードされたメモリアクセス命令によって指定されるメモリアクセス動作を実行するようにロードストアユニット12を制御する。メモリ管理ユニット14は、メモリ6内に格納されたページテーブルデータ24を使用して、メモリ6内のメモリアドレス(またはメモリページのようなメモリアドレスの領域)に関連するアクセス条件を強制する。これらのメモリアクセス条件は、特定のメモリアドレスが読出し可能であるが、書込みにはアクセスできず、キャッシュ可能であり、特定の特権レベル(特定の例外レベルのみ)または他の属性のみにアクセス可能であることを含み得る。
メモリ6は、本例に示すように、複数の領域にデータを格納し得る。これらの領域は、共有領域26,28およびプライベート領域30,32,34を含むことができる。共有領域26,28は、プログラム間で共有され、したがって、プログラム間のデータの共有/交換を容易にすることができる。プライベート領域30,32,34は、特定のプログラムに対してプライベートである。このプライバシは、プライベート領域30,32,34のプライベートアクセスを有するプログラムよりも高い特権レベルを有するプログラムに対して強制することができる。したがって、アプリケーションプログラムは、そのアプリケーションプログラムについてアクセス可能であるが、上位オペレーティングシステムまたはより低いレベルの特権(例外レベル)でプログラムに実行環境を提供しているハイパーバイザプログラムなどの、より高いレベルの特権(例外レベル)で動作するプログラムについてアクセスできないプライベートメモリ領域30,32,34を有することができる。
図1に示される例は、メモリ管理ユニット14およびページテーブルデータ24を利用する。この技術分野の当業者は、他の実施形態では、メモリアドレス空間内のメモリ保護領域に関連するアクセス条件を適用するメモリ保護ユニットなどの、異なるメモリアクセス制御回路を利用することができるであろう。
メモリ管理ユニット14(およびメモリ保護ユニット)の使用に関連する潜在的なセキュリティ脆弱性は、ページテーブルデータ24(またはメモリ領域を定義するデータおよびメモリ保護ユニットを保護するデータ)に対する誤ったまたは悪意のある変更によりプライベートとして扱われるべきメモリ領域30,32,34が代わりに共有として扱われ、そして他のアプリケーションプログラムに不適切にアクセスが与えられることである。そのようなプライベート領域30,32,34は、暗号キー、財務データなどの機密データを含み得る。
本例に従って提供されるメモリアクセス命令は、保護されたロード命令、LDR、または保護されたストア命令STRのような保護されたメモリアクセス命令の形式をとる。メモリアクセス命令は、より保護されていないロード命令LDNPRまたはより保護されていないストア命令STNPRのような、より保護されていないメモリアクセス命令をさらに含む。これらは独自の命令エンコードを持つ個別のタイプの命令である。1つのタイプのエンコードのすべての変形が、他のタイプのエンコードのために提供される必要はない。この例示的な実施形態では、保護されたメモリアクセス命令は、より保護されていないメモリアクセス命令よりも多くの変種をそのエンコードに有し、例えば、保護されたメモリアクセス命令は、データ値のサイズ、符号付き/符号なしデータ、メモリアドレスに適用されるインデックス付けを可能にするオプション及び他のオプションを有する。これに対して、より保護されていないメモリアクセス命令では、データサイズや符号付き/符号なしデータなど、より少ないオプションを有する。
異なるタイプのメモリアクセス命令を提供することにより、プログラマ(またはコンパイラ)はデフォルトで保護されたメモリアクセス命令を使用し、そして、プログラマが知っているより制限の少ないメモリアクセス条件に安全に従うことができる特定のメモリアクセス動作のためにより保護されていないメモリアクセス命令の使用を選択することを可能とする。例えば、保護されたメモリアクセス命令は、メモリ6内の共有領域26,28になされることが意図されているようにプログラマによって知られているもの以外のすべてのメモリアクセスに対して、デフォルトで使用されてもよい。共有領域に対するこれらのメモリアクセスは、より保護されていないメモリアクセス命令を使用することができる。プログラムコードを書く時のプログラマは、あるデータが他のアプリケーションプログラムと共有され、共有領域26,28に書き込まれることを知っているので、このようなメモリアクセスは、より保護されていないメモリアクセス命令を使用して実行されることが適切である。このように、メモリ管理ユニット14(またはメモリ保護ユニット)を制御するデータが不正確であっても、より制限されたメモリアクセス条件を有する保護されたメモリ命令の使用は、プログラムが不注意にデータを共有領域26,28に格納し、または共有領域26,28からデータ(変更されている可能性がある)を不注意にロードすることを防止することに役立つ。
図3は、保護されたメモリアクセス命令LDR/STRとより保護されていないメモリアクセス命令LDNPR/STNPRの両方のエンコード例を概略的に示す。これらの命令は異なるエンコード(オペコード)を有しており、デコーダ10によって異なるタイプの命令として認識され、デコーダ10は、したがって、ロードストアユニット12を制御して、以下にさらに説明するように、これらの異なるタイプの命令に関して異なって振る舞うように、異なる制御信号を生成する。保護されたメモリアクセス命令LDR/STRは、図示されているように、より保護されていないメモリ命令LDNPR/STNPRよりも、サイズ、符号付き/符号なし、インデックス付けなどのより関連したオプションを有する。プログラム命令はさらに、メモリアクセス命令が関連し、例えばメモリ6内の目標メモリアドレスを含むことができるレジスタバンク16内のレジスタなどのパラメータを指定する。より保護されていないメモリアクセス命令に対するオプションの数を少なくすると、命令セットのビットスペースが少なくなるという結果が得られる。これは、プロセスまたはアーキテクチャ内の有限のリソースであり、他の場所でも有益に使用される可能性がある。実際には、共有を要求するためにプログラマによって知られているデータに関するメモリアクセス動作は比較的稀である傾向があり、したがって、そのようなより保護されていないメモリアクセス命令の場合、コードサイズが過度に増加することはなく、命令セットのビットスペースの節約以上に優れている。
図4は、メモリ管理ユニット・ページ・テーブル・エントリ36を概略的に示す。このようなページ・テーブル・エントリは、多種多様な異なる形態を有することができる。典型的には、このようなメモリ管理ユニットページテーブルエントリ36は、仮想アドレスTAG38および対応する物理アドレス変換データ40を使用して、仮想アドレスと物理アドレスとの間のアドレス変換をサポートする。また、ページエントリに関連するメモリアドレス空間内の各ページ(領域)には、可読性、書き込み可能性、特権レベルアクセス制限、キャッシュ能力などの特性を定義するメモリページ属性が関連付けられる。また、メモリページ属性データ内には、その領域内のメモリアドレスが共有かプライベートかを示す共有/プライベートフラグが含まれる。共有アドレスは複数のプログラムで共有されるが、プライベートアドレスは1つのプログラムからのみアクセスできる。他の形態のメモリページ属性は、特定の領域が暗号化されているか否かを示すフラグを含むことができる。暗号化された領域は、暗号化キーを使用して暗号化され、次に適切な復号化キーを所有する適切に認可されたプログラムによって解読される。
共有/プライベートフラグの場合、共有としてマークされたメモリ領域は、より保護されていないメモリアクセス命令によってのみアクセスされるべきであり、同様に、プライベートとしてマークされるメモリ領域は、保護されたメモリアクセス命令によってのみアクセスされるべきである。誤ったタイプ(エンコード)のメモリアクセス命令がメモリのある領域にメモリアクセスを試みると、これが検出され、データアボート(トリガメモリアクセス例外処理)を発生する。
図5は、メモリアクセス処理の一形態を概略的に示すフロー図である。ステップ42において、処理は、しばしば、メモリアクセス命令がデコードされるまで待機する。メモリアクセス命令がデコードされると、メモリ管理ユニット18と協働して指定されたメモリアクセス動作を実行するようにロードストアユニット12を制御するために、デコーダ10によって制御信号が生成される。ステップ44では、ステップ42でデコードされたメモリアクセス命令の共有フラグデータ(および他のデータ)が読み出される。ステップ46で、ステップ42でデコードされたメモリアクセス命令が保護されたメモリアクセス命令であったかどうかを判定する。ステップ42でデコードされた命令が保護されたメモリアクセス命令であった場合、処理はステップ48に進み、そこではステップ44で読み出された共有フラグが、アクセスされるべきメモリアドレスを含むメモリ領域が共有であることを示しているかどうかについて判定が行われる。ステップ48の判定でメモリ領域が共有されていると判定された場合、これは保護されたメモリアクセス命令が適切に使用されていることを示し、それに応じて処理がステップ50に進み、そこではアクセスがブロックされ、その後ステップ52でデータアボート応答がトリガされてから、ステップ42に処理が戻される。ステップ48でメモリアクセスが共有領域ではないと判定された場合、保護されたメモリアクセス命令の使用は適切ではない(すなわちメモリ領域はプライベートである)ので、ステップ54でアクセスが許可され、実行される。ステップ46における判定が、ステップ42でデコードされたメモリアクセス命令がより保護されていないメモリアクセス命令である場合、処理はステップ56に進み、ステップ44で読み出された共有フラグが、より保護されていないメモリアクセス命令に関連するメモリアドレスが共有されることを示すか否かが判定される。メモリ領域が共有されていない場合、より保護されていないメモリアクセス命令の使用は不適切であることを示し、処理はメモリアクセスがブロックされるステップ58と、データアボート応答がトリガされるステップ60に進む。ステップ56でメモリ領域が共有されていると判定された場合、ステップ42でデコードされたより保護されていないメモリアクセス命令の使用が適切であり、したがって処理はステップ62に進み、アクセスが許可される。
図6は、本技術を利用するデータ処理システム64のさらなる例示的実施形態を概略的に示す。この例示的な実施形態では、メモリ66内のメモリ領域は、暗号化領域68,70,72または非暗号化領域74,76であってもよい。プロセッサコア82とメモリ66との間に配置された暗号化回路80は、暗号化領域68,70,72に書き込まれるデータを暗号化し、暗号化領域68,70,72から読み出されるデータを復号化する機能を果たす。暗号化および復号化は、それぞれの暗号化された領域68,70,72にアクセスするプログラムのプログラムにプライベートな暗号キー84を使用する。
この例示的な実施形態では、メモリアクセス制御回路は、メモリ66のメモリアドレス空間内の異なる領域が暗号化されるか暗号化されないかのいずれかとしてマークされたメモリ保護ユニット86の形態をとる。メモリ領域が暗号化されると、マルチプレクサ88,90は、暗号化回路80を介してデータをルーティングするように切り替えられて使用される。アクセスされるメモリアドレスが暗号化されていない領域内にある場合、暗号化回路80は、マルチプレクサ88,90によってバイパスされる。暗号化回路80は、保護されたメモリアクセス命令のために使用されアクティブであり、より保護されていないメモリアクセス命令のためにバイパスされるようにしてもよい。暗号化されていない領域74,76はプログラム間で共有されてもよく、暗号化された領域68,70,72は個別のプログラム又は暗号キーを共有する多くのプログラムに対して専用であってもよい。より保護されていないメモリアクセス命令が、メモリ保護ユニット86によって暗号化されたとしてマークされたメモリアクセスに関して使用される場合、データアボートがトリガされ得る。同様に、より保護されていないメモリアクセス命令が、暗号化されていない領域内のメモリアドレスに対して使用される場合、データアボートがトリガされてもよい。
図7は、異なる特権/例外レベルで動作するプログラムの階層を概略的に示す。プログラムは、より低いレベルの特権(より低い例外レベル)で動作するゲストオペレーティングシステムプログラム94,96に実行環境を提供するハイパーバイザプログラム92を最高の特権レベルで含むことができる。各オペレーティングシステムプログラム94,96は、それぞれ、アプリケーションプログラム98,100、またはアプリケーションプログラム102,104のための実行環境を提供することができる。オペレーティングシステムプログラム94,96は、アプリケーションプログラム98,100,102,104よりも高いレベルの特権(例外レベル)で動作する。
前述の例示的な実施形態は、保護されたメモリアクセス命令およびより保護されていないメモリアクセス命令およびより保護されていないメモリアクセス命令に関連して、共有/プライベートフラグまたは暗号化/非暗号化フラグを使用してアクセスを制御している。さらなる実施形態は、プログラムが実行される特権レベル(例外レベル)に関連するメモリアクセス条件を課すように働くことができる。プログラマは、異なるレベル(特権レベル)で動作する1つ以上の他のプログラムとデータを共有することが適切であると判断することができる。一例として、アプリケーションプログラム98,100,102,104は、上にあるオペレーティングシステムプログラム94,96とデータを共有できるが、他のアプリケーションプログラムやハイパーバイザプログラム92とはデータを共有できないように制御することができる。より保護されていないメモリアクセス命令は、他の例外レベルと共有することが望まれるそのようなデータに関連することができるが、他の例外レベルと共有したくないデータは、保護されたメモリアクセス命令を使用してアクセスすることができる。
図8は、本技術を利用するデータ処理システム106のさらなる例示的実施形態を概略的に示す。このデータ処理システム106は、メインメモリ114内の暗号化されたメモリ領域108,110および共有メモリ領域112を利用する。図6の実施形態と比較すると、図8の実施形態は、様々なレベルの階層を使用するメモリシステムを利用する。4つのプロセッサコア116,118,120,122の各々は、ローカルプライベートキャッシュメモリ124,126,128,130を有する。メモリ階層のこれらのローカルキャッシュ124,126,128および130の上には、共有キャッシュメモリ132がある。キャッシュメモリ124,126,128,130,132の各々内のデータは、暗号化/共有化としてマークされているかどうかにかかわらず、暗号化されていない形式で格納される。データを暗号化/共有化する場合は、キャッシュメモリ124,126,128,130,132内でフラグが立てられ、そのようなフラグの制御下で、暗号化回路134を介して、または暗号化回路の周りを(バイパスされて)マルチプレクサ136,138を使用して適切にルーティングされる。したがって、暗号化回路134よりもプロセッサコア116,118,120,122に近いデータは暗号化されていない形式で記憶され、したがって暗号化/復号化に関連するエネルギー/時間のペナルティは発生しない。一方、暗号化回路134よりもメモリ階層内の、すなわち相互接続部140を通過して主記憶装置114内に記憶される、データは暗号化される。グラフィックス処理ユニット142とダイレクトメモリアクセスユニット144も相互接続140を介して接続されている。
本発明の例示的な実施形態が、添付の図面を参照して本明細書において詳細に説明されているが、本発明は、それらの正確な実施形態に限定されず、添付の特許請求の範囲によって規定される本発明の範囲および趣旨から逸脱することなく、様々な変更および修正を当業者が行うことができる。

Claims (20)

  1. データを処理するための装置であって、
    プログラム命令によって指定された処理動作を実行する処理回路と、そして
    メモリアクセス命令をデコードしてメモリアクセス動作を実行するように前記処理回路を制御する制御信号を生成するデコーダと、を含み、
    前記メモリアクセス命令は、
    保護されたメモリアクセス動作に対応する保護されたメモリアクセス命令と、そして
    より保護されていないメモリアクセス動作に対応するより保護されていないメモリアクセス命令と、
    を指定するそれぞれのエンコードを有し、そして
    前記より保護されていないメモリアクセス動作は、前記保護されたメモリアクセス動作よりもより制限の少ないメモリアクセス条件に関連付けられている、装置。
  2. 前記より保護されていないメモリアクセス命令は、前記保護されたメモリアクセス命令とは異なる数の変形を許可するエンコードを有する、請求項1に記載の装置。
  3. 前記より保護されていないメモリアクセス命令は、前記保護されたメモリアクセス命令よりも少ない変形を許可するエンコードを有する、請求項2に記載の装置
  4. メモリ保護データに依存してメモリアドレス空間の領域へのアクセスを制御するメモリアクセス制御回路を含み、前記メモリ保護データは、前記保護されたメモリアクセス命令よりも前記より保護されていないメモリアクセス命令により制限の少ないメモリアクセス条件を強制するように前記メモリアクセス制御回路によって適用される少なくとも1つの属性を含む、請求項1乃至3のいずれか一項に記載の装置。
  5. 前記少なくとも1つの属性は、メモリアドレスが共有メモリアドレスであることを示し、
    前記メモリアクセス制御回路は、前記保護されたメモリアクセス命令による前記共有メモリアドレスへのメモリアクセスをブロックし、そして
    前記メモリアクセス制御回路は、前記より保護されていないメモリアクセス命令による前記共有メモリアドレスへのメモリアクセスを許可する、請求項4に記載の装置。
  6. 前記少なくとも1つの属性は、メモリアドレスがプライベートメモリアドレスであることを示し、
    前記メモリアクセス制御回路は、前記保護されたメモリアクセス命令による前記プライベートメモリアドレスへのメモリアクセスを許可し、そして
    前記メモリアクセス制御回路は、前記より保護されていないメモリアクセス命令による前記プライベートメモリアドレスへのメモリアクセスをブロックする、請求項5に記載の装置。
  7. 前記メモリアクセス制御回路は、データアボート応答をトリガするために、保護されたメモリアクセス命令による前記共有メモリアドレスへの試みられたメモリアクセスに応答する、請求項5及び6のいずれか一項に記載の装置。
  8. 前記メモリアクセス制御回路は、データアボート応答をトリガするために、より保護されていないメモリアクセス命令による共有メモリアドレス以外への試みられたメモリアクセスに応答する、請求項5,6及び7のいずれか一項に記載の装置。
  9. 前記メモリアクセス制御回路はメモリ管理ユニットであり、前記メモリ保護データはメモリページテーブルデータである、請求項4及び8のいずれか一項に記載の装置。
  10. 前記メモリアクセス制御回路はメモリ保護ユニットであり、前記メモリ保護データは前記メモリ保護ユニットのためのメモリ領域構成データである、請求項4及び8のいずれか一項に記載の装置。
  11. 前記保護されたメモリアクセス動作によってメモリに記憶されたデータを暗号化し、前記保護されたメモリアクセス動作によって前記メモリから読み出されたデータを復号化する暗号化回路を含む、請求項1乃至10のいずれか一項に記載の装置。
  12. メモリに記憶されたデータを暗号化し、前記メモリから読み出されたデータを復号するための暗号化回路を含み、前記暗号化回路は前記保護されたメモリアクセス動作に対してアクティブであり、そして前記暗号化回路は前記より保護されていないメモリアクセス動作に対しては非アクティブである、請求項1から10のいずれか一項に記載の装置。
  13. 前記処理回路は、複数の例外レベル状態を有し、前記複数の例外レベル状態の内の所定の例外レベル状態で実行するプログラム内のより保護されていないメモリアクセス命令でアクセスされるメモリアドレスは、前記複数の例外レベル状態の内の選択可能な数のさらなる例外レベル状態で実行するプログラムと共有される、請求項1乃至12のいずれか一項に記載の装置。
  14. 前記処理動作は、
    複数のプログラムを実行するステップと、
    前記複数のプログラムの所定のプログラム内の保護されたメモリアクセス命令を実行して、前記所定のプログラムに専用のメモリアドレスをアクセスするステップと、そして
    前記複数のプログラムの間で共有されるメモリアドレスにアクセスするために、前記複数のプログラムのうちの前記所定のプログラム内のより保護されていないメモリアクセス命令を実行するステップと、を含む、
    請求項1乃至13のいずれかに一項に記載の装置。
  15. 前記複数のプログラムは、特権プログラムと、前記特権プログラムによって提供される実行環境を使用して実行する少なくとも1つのさらなるプログラムとを含み、前記少なくとも1つのさらなるプログラムは、前記特権プログラムからプライベートなメモリアドレスにアクセスするために保護されたメモリアクセス命令を使用する、請求項14に記載の装置。
  16. 前記特権プログラムはハイパーバイザプログラムであり、前記少なくとも1つのさらなるプログラムはオペレーティングシステムプログラムである、請求項15に記載の装置。
  17. 前記特権プログラムはオペレーティングシステムプログラムであり、前記少なくとも1つのさらなるプログラムはアプリケーションプログラムである、請求項15に記載の装置。
  18. データを処理するための装置であって、
    プログラム命令によって指定された処理動作を実行する処理手段と、そして
    メモリアクセス動作を実行するように前記処理手段を制御する制御信号を生成するためにメモリアクセス命令をデコードするデコーダ手段と、を含み、
    前記メモリアクセス命令は、
    保護されたメモリアクセス動作に対応する保護されたメモリアクセス命令と、そして
    より保護されていないメモリアクセス動作に対応するより保護されていないメモリアクセス命令と、を指定するそれぞれのエンコードを有し、そして
    前記より保護されていないメモリアクセス動作は、前記保護されたメモリアクセス動作よりもより制限の少ないメモリアクセス条件に関連付けられている、装置。
  19. データを処理する方法であって、
    メモリアクセス動作を実行するように処理回路を制御するための制御信号を生成するためにメモリアクセス命令をデコードすることを含み、
    前記メモリアクセス命令は、
    保護されたメモリアクセス動作に対応する保護されたメモリアクセス命令と、そして
    より保護されていないメモリアクセス動作に対応するより保護されていないメモリアクセス命令と、を指定するそれぞれのエンコードを有し、そして
    前記より保護されていないメモリアクセス動作は、前記保護されたメモリアクセス動作よりもより制限の少ないメモリアクセス条件に関連付けられている、方法。
  20. 請求項1乃至18のいずれか一1項に記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するための、非一時的な記憶媒体に格納されたコンピュータプログラム。
JP2018519050A 2015-10-20 2016-09-06 メモリアクセス命令 Active JP6944444B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1518541.6A GB2543520B (en) 2015-10-20 2015-10-20 Memory access instructions
GB1518541.6 2015-10-20
PCT/GB2016/052736 WO2017068317A1 (en) 2015-10-20 2016-09-06 Memory access instructions

Publications (3)

Publication Number Publication Date
JP2018535483A true JP2018535483A (ja) 2018-11-29
JP2018535483A5 JP2018535483A5 (ja) 2019-10-17
JP6944444B2 JP6944444B2 (ja) 2021-10-06

Family

ID=55131314

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018519050A Active JP6944444B2 (ja) 2015-10-20 2016-09-06 メモリアクセス命令

Country Status (9)

Country Link
US (1) US11669467B2 (ja)
EP (1) EP3365768B1 (ja)
JP (1) JP6944444B2 (ja)
KR (1) KR20180072723A (ja)
CN (1) CN108139909B (ja)
GB (1) GB2543520B (ja)
IL (1) IL258594B (ja)
TW (1) TWI722022B (ja)
WO (1) WO2017068317A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9305929B1 (en) 2015-02-17 2016-04-05 Micron Technology, Inc. Memory cells
US10396145B2 (en) 2017-01-12 2019-08-27 Micron Technology, Inc. Memory cells comprising ferroelectric material and including current leakage paths having different total resistances
US11436143B2 (en) 2017-12-22 2022-09-06 Alibaba Group Holding Limited Unified memory organization for neural network processors

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US248357A (en) * 1881-10-18 Long-range and close weeding garden-cultivator
US67279A (en) * 1867-07-30 Self and peter f
JPS62256040A (ja) 1986-04-28 1987-11-07 Mitsubishi Electric Corp コモンメモリの保護方法
US6895508B1 (en) * 2000-09-07 2005-05-17 International Business Machines Corporation Stack memory protection
GB0226874D0 (en) * 2002-11-18 2002-12-24 Advanced Risc Mach Ltd Switching between secure and non-secure processing modes
GB2402763B (en) 2003-06-13 2006-03-01 Advanced Risc Mach Ltd Data access program instruction encoding
TW200805065A (en) * 2006-01-17 2008-01-16 Nxp Bv Region protection unit, instruction set and method for protecting a memory region
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
US8146106B2 (en) * 2007-12-31 2012-03-27 Intel Corporation On-demand emulation via user-level exception handling
US8838924B2 (en) * 2008-05-24 2014-09-16 Via Technologies, Inc. Microprocessor having internal secure memory
EP2211285A1 (en) * 2009-01-20 2010-07-28 Nagravision SA Secured data processing device
GB2479780B (en) * 2010-04-22 2018-04-04 Advanced Risc Mach Ltd Preload instruction control
GB2482700A (en) * 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
FR2974920B1 (fr) * 2011-05-04 2013-11-29 St Microelectronics Rousset Protection d'une memoire volatile contre des virus par modification du contenu d'une instruction
CN102385556B (zh) * 2011-11-08 2014-11-26 聚辰半导体(上海)有限公司 串行非易失性存储器及解除存储器写保护的方法
WO2013160724A1 (en) * 2012-04-23 2013-10-31 Freescale Semiconductor, Inc. Data processing system and method for operating a data processing system
JP2014081819A (ja) * 2012-10-17 2014-05-08 Renesas Electronics Corp 情報処理装置
US9792448B2 (en) * 2014-02-28 2017-10-17 Advanced Micro Devices, Inc. Cryptographic protection of information in a processing system
US20160085695A1 (en) * 2014-09-24 2016-03-24 Intel Corporation Memory initialization in a protected region
US9996350B2 (en) * 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array
US20170090922A1 (en) * 2015-09-30 2017-03-30 Futurewei Technologies, Inc. Efficient Instruction Pair for Central Processing Unit (CPU) Instruction Design

Also Published As

Publication number Publication date
IL258594B (en) 2020-03-31
TW201719387A (zh) 2017-06-01
US20180307627A1 (en) 2018-10-25
WO2017068317A1 (en) 2017-04-27
US11669467B2 (en) 2023-06-06
TWI722022B (zh) 2021-03-21
GB2543520A (en) 2017-04-26
EP3365768A1 (en) 2018-08-29
GB2543520B (en) 2019-06-19
GB201518541D0 (en) 2015-12-02
IL258594A (en) 2018-06-28
CN108139909A (zh) 2018-06-08
KR20180072723A (ko) 2018-06-29
EP3365768B1 (en) 2020-12-09
JP6944444B2 (ja) 2021-10-06
CN108139909B (zh) 2022-07-12

Similar Documents

Publication Publication Date Title
EP3757856B1 (en) Cryptographic isolation of memory compartments in a computing environment
JP4989543B2 (ja) メモリドメインを基にしたデータ処理システム内のセキュリティ制御
JP4872001B2 (ja) メモリ・アクセス安全性管理
US10459850B2 (en) System and method for virtualized process isolation including preventing a kernel from accessing user address space
JP5581403B2 (ja) メモリのセキュア領域および非セキュア領域へのセキュアモードページテーブルデータの格納
US8132254B2 (en) Protecting system control registers in a data processing apparatus
US9753863B2 (en) Memory protection with non-readable pages
US8549325B2 (en) Reducing information leakage between processes sharing a cache
US10956157B1 (en) Taint protection during speculative execution
TW201712593A (zh) 載入和虛擬化密碼金鑰
JP6944444B2 (ja) メモリアクセス命令
KR102584506B1 (ko) 가상 기계들을 위한 상태 정보 보호
KR20210088004A (ko) 애플리케이션마다 조정 가능한 보안 레벨들을 가진 프로세서들

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190830

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200918

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20201105

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20210205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210405

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: 20210818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210910

R150 Certificate of patent or registration of utility model

Ref document number: 6944444

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150