JP7128206B2 - 機能の使用を管理するための装置および方法 - Google Patents

機能の使用を管理するための装置および方法 Download PDF

Info

Publication number
JP7128206B2
JP7128206B2 JP2019558718A JP2019558718A JP7128206B2 JP 7128206 B2 JP7128206 B2 JP 7128206B2 JP 2019558718 A JP2019558718 A JP 2019558718A JP 2019558718 A JP2019558718 A JP 2019558718A JP 7128206 B2 JP7128206 B2 JP 7128206B2
Authority
JP
Japan
Prior art keywords
exception
exception level
function
program counter
level
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019558718A
Other languages
English (en)
Other versions
JP2020518910A (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 JP2020518910A publication Critical patent/JP2020518910A/ja
Application granted granted Critical
Publication of JP7128206B2 publication Critical patent/JP7128206B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/468Specific access rights for resources, e.g. using capability register
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/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
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • 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/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/35Indirect addressing
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • 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/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/481Exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Communication Control (AREA)

Description

本技術は、機能の使用を管理するための装置および方法に関する。
特定のプロセスに特定の機能が規定されている機能ベースのアーキテクチャへの関心が高まっており、規定の機能以外の動作を実行しようとするとエラーが誘発される可能性がある。機能にはさまざまな形式があるが、機能の1つのタイプは境界ポインタ(「幅広ポインタ」とも呼ばれる場合がある)である。境界ポインタの場合、ポインタ値は、例えば、アクセスされるデータ値のアドレスまたは実行される命令を識別するか、または決定するために使用され得る。ただし、ポインタ値には、ポインタ値を使用するときにアドレスの許容範囲を示す関連する範囲情報も含まれている場合があり、さらにそれに関連する許可情報/制限情報が含まれ得る。範囲情報および境界ポインタの許可情報/制限情報は、機能情報と呼ばれ場合があり、機能ベースのアーキテクチャ内では、境界ポインタ(関連する機能情報を含む)は機能と呼ばれる場合がある。
機能の使用は、プロセッサ上で実行されるソフトウェアの動作のセキュリティおよび/または機能の正確性を維持するのに役立つことができるが、特定のソフトウェア(例えば、「信頼できる」)が機能に制約されずに、またはより制約の少ない方法で実行できるようにすることが望ましい場合がある。したがって、このような柔軟性を提供するために、機能の使用を管理できる技術を提供することが望ましい。
第1の構成例では、命令を実行し、複数の例外レベルで動作可能であり、各々の例外レベルが異なるソフトウェア実行特権を有する、処理回路と、処理回路にアクセス可能であり、前記命令を実行するときに処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、機能構成情報は、各々の例外レベルについて、少なくともその例外レベルで命令を実行するときに処理回路によって実行される動作が前記機能によって制約されるかどうかを識別する、機能構成記憶装置と、を備え、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも1つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態が切り替え動作中にどのように管理されるかを判定する、装置が提供される。
別の例示的な構成では、命令を実行し、複数の例外レベルで動作可能であり、各々の例外レベルが異なるソフトウェア実行特権を有する、処理回路と、処理回路にアクセス可能であり、前記命令を実行するときに処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、を備えた装置内で機能の使用を管理する方法であって、方法は、機能構成記憶装置内において、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、機能構成情報は、各々の例外レベルについて、少なくともその例外レベルで命令を実行するときに処理回路によって実行される動作が前記機能によって制約されるかどうかを識別する、ことと、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも1つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態が切り替え動作中にどのように管理されるかを判定する、ことと、を含む、方法が提供される。
さらなる例示的な構成では、命令を実行し、複数の例外レベルで動作可能であり、各々の例外レベルが異なるソフトウェア実行特権を有する、処理手段と、処理手段にアクセス可能であり、前記命令を実行するときに処理手段によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素手段と、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、機能構成情報は、各々の例外レベルについて、少なくともその例外レベルで命令を実行するときに処理手段によって実行される動作が前記機能によって制約されるかどうかを識別する、機能構成記憶手段と、を備え、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも1つに関連する機能構成記憶手段内の機能構成情報を使用して、処理手段の実行状態が切り替え動作中にどのように管理されるかを判定する、装置が提供される。
さらに別の構成例では、上記の第1の構成例の装置に対応する命令実行環境を提供するためのホストデータ処理装置を制御するプログラム命令を含む仮想マシン・コンピュータ・プログラムが提供される。一実施形態では、仮想マシン・コンピュータ・プログラムを格納するためのコンピュータ可読記憶媒体が提供され得る。
本技術は、添付の図面に示される実施形態を参照して、単なる例としてさらに説明される。
一実施形態による装置のブロック図である。 バインドされたポインタ記憶要素のセット内でポインタ値を設定またはアクセスしようとするとエラーがトリガされる可能性のある命令の種類の例を示しており、ポインタ値は、関連する範囲情報によって示された範囲外のアドレスを指定するために使用される。 一実施形態による、境界ポインタに関連するタグビットの使用を示す図である。 一実施形態に従って複数の例外レベルがどのように提供されるかを示す図である。 一実施形態に従って提供され得る例外レベルごとの機能構成情報の一形態を示す図である。 一実施形態による、2つの異なる例外レベルの機能構成情報の可能なオプションを示す表である。 一実施形態による、例外エントリ動作中に処理回路の実行状態がどのように管理されるかを示すフロー図である。 一実施形態による、例外エントリ動作中に処理回路の実行状態がどのように管理されるかを示すフロー図である。 一実施形態による、例外復帰動作中に処理回路の実行状態がどのように管理されるかを示すフロー図である。 使用され得る仮想マシンの実装を示す。
添付の図面を参照して実施形態を議論する前に、実施形態の以下の説明が提供される。
前述のように、特定のプロセスに特定の機能が規定されている機能ベースのアーキテクチャへの関心が高まっており、規定の機能以外の動作を実行しようとするとエラーが誘発される可能性がある。さまざまなタイプの機能を定義できるが、1つのタイプの機能は境界ポインタである(一実施形態では、ポインタ値と関連する範囲および許可情報の両方が組み込まれる)。そのような機能ベースのアーキテクチャを採用する装置は、通常、機能を格納するために使用される記憶要素(本明細書では境界ポインタ記憶要素、またはより一般的には機能記憶要素とも呼ばれる)を有する。記憶要素は、レジスタ(本明細書では境界ポインタレジスタまたは機能レジスタとも呼ばれる)および/または汎用メモリ内のメモリ位置、例えばスタックメモリ上の位置であってもよい。特定の命令を使用してこのような記憶要素を参照し、目的の機能にアクセスし、その機能に依存する操作を実行できる。例えば、境界インタを考慮すると、そのような命令の実行は、境界ポインタを検索し、その中のポインタ値を使用して、命令の実行中に必要なメモリ内のアドレスを導き出すことができる。ポインタ値は、メモリアドレスを識別するために直接使用することも、例えばポインタ値にオフセットを追加することによってメモリアドレスを導出するために使用することもできる。メモリアドレスが範囲情報で指定された範囲内にあり、許可情報で指定された許可が満たされていれば、操作を続行できる。
このような機能ベースのアーキテクチャを採用することにより、命令を実行するときに処理回路によって実行される動作に機能が置かれ得る制約により、ソフトウェア攻撃に対する回復力を高めることができる。ただし、場合によっては、特定のソフトウェアが機能に制約されずに、または制約の少ない方法で実行できることが望ましい場合もある。これにより、柔軟性が大幅に向上し、場合によっては、処理装置で機能を認識しないコードを実行できるようになるため、後方互換性も可能になる。
既存のシステムの中には、各例外レベルが異なるソフトウェア実行特権を持つ異なる例外レベルで動作できるように処理回路を構成することが知られているものがある。本明細書で説明する実施形態では、複数の例外レベルでの動作を可能にするタイプの処理回路で使用するために、機能の使用を管理するための柔軟な手法が開発された。
特に、一実施形態では、複数の例外レベルで動作可能な処理回路と、処理回路にアクセス可能な複数の機能記憶要素とを備えた装置が提供される。機能記憶要素は、命令を実行するときに処理回路によって実行される操作を制限するために使用される機能を格納するように構成されている。
さらに、複数の例外レベルのそれぞれの機能構成情報を識別するように構成された機能構成記憶装置が提供される。特に、各例外レベルについて、機能構成情報は、少なくとも、その例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されるかどうかを識別する。したがって、これにより、必要に応じて、少なくとも1つの例外レベルのソフトウェアを機能によって制約されないようにする柔軟性が提供される。特定の例として、高い例外レベルで実行される信頼性の高いソフトウェアは、機能に制約されることなく動作することが許可され得る。これにより、このようなソフトウェアの機能チェックルーチンを実行する必要がなくなるため、パフォーマンス上のメリットが得られる。また、機能ベースのアーキテクチャと互換性を持たせるために、そのようなソフトウェアを変更する必要がある範囲を減らすこともできる。ただし、このような柔軟性は例外レベルごとに管理できるため、このようなメカニズムをなお使用して、例外レベルの1つ以上で実行するソフトウェアに機能の完全な制約を課すようにすることができる。
機能の効果を例外レベルごとに変更できるようにしたため、この装置は、機能の効果がソース例外レベルとターゲット例外レベルで異なる可能性を考慮した例外レベル間の切り替えメカニズムも提供する。特に、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも1つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態が切り替え動作中にどのように管理されるかを判定する。
したがって、説明した実施形態を使用することにより、例外レベルごとに機能の効果を規定することができ、例外操作レベルを切り替える効果的なメカニズムを提供して、切り替え動作中に潜在的に異なる効果が考慮されるようにする。
切り替え動作はさまざまな方法で実行され得る。しかし、一実施形態では、処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、例外エントリがソース例外レベルから宛先例外レベルへの切り替え動作を引き起こすと、処理回路はソース例外レベルに関連する機能構成情報を参照して、ソース例外レベル用に保存するリターンアドレス情報を決定する。
ソース例外レベルに関連する機能構成情報を使用できる方法はいくつかある。しかし、一実施形態では、処理回路は、ソース例外レベルに関する機能構成情報が、前記ソース例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されることを識別する場合、プログラムカウンタ機能を参照してリターンアドレス情報を決定し、リターンアドレス情報をリターンアドレス機能記憶要素として指定された機能記憶要素の1つ内の機能として記憶するように構成される。そうでない場合(すなわち、ソース例外レベルが機能によって制約されていない場合)、処理回路は、プログラムカウンタ値を参照して前記リターンアドレス情報を決定し、リターンアドレス記憶要素内にリターンアドレス値としてリターンアドレス情報を格納するように構成される。したがって、ソース例外レベルで実行される操作が機能によって制約される場合、リターンアドレス機能が決定され、リターンアドレス機能記憶要素内に格納される。ただし、そうでない場合は、リターンアドレス機能は不要であり、代わりに、リターンアドレス情報をリターンアドレス値としてリターンアドレス記憶要素内に非機能形式で格納できる。
一実施形態では、リターンアドレス機能記憶要素は、リターンアドレス記憶要素とは完全に物理的に分離することができるが、代替実施形態では、これら2つの記憶要素は同じ物理構造を共有することができる。特に、一実施形態では、リターンアドレス記憶要素は、リターンアドレス機能記憶要素内のフィールドによって形成され得る。例えば、機能が必要でない場合、機能のリターンアドレス値情報を格納するために使用されるリターンアドレス機能記憶要素内のポインタフィールドも再利用して、リターンアドレス記憶要素を形成することができる。
リターンアドレス記憶要素とリターンアドレス機能記憶要素とが同じ物理構造を共有し、ソース例外レベルが機能によって制約されない一実施形態では、リターンアドレス機能記憶要素の残りのフィールドの少なくとも1つ(リターンアドレス情報の保存には使用されない)は、第1デフォルト値に設定される。例えば、一実施形態では、各機能は、残りのフィールドが有効な機能を表すことを識別するために設定され、残りのフィールドが有効な機能を保存しないときを識別するためにクリアされるタグビットを含み得る。そのような一実施形態では、コンテンツが機能を表していないことを識別するためにタグビットをクリアすることができ、その場合、ポインタフィールドのみが参照され、リターンアドレス情報を提供する。
代替実施形態では、残りのフィールドのすべてが第1デフォルト値に設定され、一実施形態では、これは、リターンアドレス機能記憶要素に書き込まれるリターンアドレス値をゼロ拡張することにより達成できる。
一実施形態では、例外エントリがソース例外レベルから宛先例外レベルへの切り替え動作を引き起こす場合、処理回路は、宛先例外レベルに関する機能構成情報を参照して宛先例外レベルの処理回路の初期実行状態を決定するように構成されてもよい。
この目的のために、宛先例外レベルに関連する機能構成情報を使用できる方法がいくつかある。しかし、一実施形態では、宛先例外レベルに関連する機能構成情報が、前記宛先例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されることを識別すると、処理回路は、機能制御記憶要素に格納された例外エントリアドレス機能情報を使用した宛先例外レベル用に初期プログラムカウンタ機能を生成するように構成される。そうでなければ(すなわち、宛先例外レベルが機能によって制約されない場合)、処理回路は、制御記憶要素に格納された例外エントリアドレス情報を使用して初期プログラムカウンタ値を生成するように構成される。
したがって、宛先例外レベルで実行される操作が機能によって制約されることがわかっている場合は、宛先例外レベルの初期プログラムカウンタ機能を生成できる。そのような状況で参照される機能制御記憶要素は、さまざまな形をとることができるが、一実施形態では、機能ベクトル・ベース・アドレス・レジスタ(CVBAR)である。特定の一実施形態では、CVBARレジスタは例外エントリのベースアドレスを提供し、例外は例外タイプに応じてこのベースアドレスからのオフセットを決定する。例えば、ある実装では、例外タイプに128が掛けられ、その値がCVBARの機能のアドレスフィールドのベースアドレスに追加されて、プログラムカウンタ機能の初期アドレスが生成される。範囲や許可情報など、プログラムカウンタ機能の機能情報の残りの部分も、CVBAR内に保持されている機能から抽出される。
代わりに、宛先例外レベルで実行される操作が機能によって制約されないと判定された場合、関連する機能情報によって制約され得ない初期プログラムカウンタ値を生成するだけで済む。そのような一実施形態では、初期プログラムカウンタ値は、(非機能)制御記憶要素内の例外エントリアドレス情報を使用して、そのような状況で決定される。特定の一実施形態では、制御記憶要素は、ベクトル・ベース・アドレス・レジスタの形態をとり、これは、前述のCVBARの非機能的な変形である。
一実施形態では、制御記憶要素と機能制御記憶要素とは物理的に別個の構造であってもよいが、一実施形態では、それらは同じ物理構造を共有し得る。例えば、一実施形態では、制御記憶要素は、機能制御記憶要素内のフィールドによって形成されてもよく、したがって、例えば、例外エントリのベースアドレスを提供できるが、関連する機能情報に制約され得ない。
一実施形態では、装置は、初期プログラムカウンタ機能を格納するためのプログラムカウンタ機能記憶要素を備えてもよい。プログラムカウンタ機能が使用されず、代わりに単純なプログラムカウンタ値が必要な場合、そのプログラムカウンタ値を維持できる方法がいくつかある。しかしながら、一実施形態において、処理回路は、初期プログラムカウンタ機能の代わりに初期プログラムカウンタ値を生成する場合、プログラムカウンタ機能記憶要素の第1フィールド内に初期プログラムカウンタ値を記憶するように構成される。
このような状況でプログラムカウンタ機能記憶要素の残りのフィールドを管理できる方法はいくつかある。そのような場合、処理回路ハードウェアがプログラムカウンタ機能記憶要素の残りのフィールドを無視するように構成されている場合、残りのフィールドは、例えば変更しないままにするか、クリアすることができる。しかしながら、処理回路が常にプログラムカウンタ機能記憶要素の全体を参照する代替実施形態では、プログラムカウンタ機能記憶要素の残りのフィールドは、プログラムカウンタ値のみがプログラムカウンタ機能記憶要素内に格納されるときに第2デフォルト値に設定されるように構成されてもよい。
その第2デフォルト値はさまざまな形をとることができるが、一実施形態では、プログラムカウンタ機能記憶要素が処理回路の最大機能を表して、処理回路によるプログラムカウンタ値の使用がプログラムカウンタ機能記憶要素の内容によって制約されないことを保証する。これにより、現在の例外レベルで動作が機能の影響を受けるかどうかに関係なく、同じプログラムカウンタ構造を使用できるようにするためのシンプルで効果的なメカニズムを提供できる。
例外エントリを処理するための上記のメカニズムに加えて、説明される実施形態は、例外出口(本明細書では例外リターンとも呼ばれる)に関連するメカニズムも提供し得る。特に、例外出口がソース例外レベルから宛先例外レベルへの切り替え操作を引き起こす場合、一実施形態では、処理回路は、宛先例外レベルに関連する機能構成情報を参照して宛先例外レベルの処理回路のリターン実行状態を決定するように構成される。
処理回路のリターン実行状態は、さまざまな方法で決定できる。しかしながら、一実施形態では、宛先例外レベルに関連する機能構成情報が、前記宛先例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されることを識別する場合、処理回路は、リターンアドレス機能記憶要素として指定された前記機能記憶要素の1つ内の機能として記憶されたリターンアドレス情報を使用して、宛先例外レベル用のリターン・プログラム・カウンタ機能を生成するように構成される。そうでない場合(つまり、宛先例外レベルが機能によって制約されていない場合)、処理回路は、リターンアドレス記憶要素内にリターンアドレス値として格納されたリターンアドレス情報を使用してリターン・プログラム・カウンタ値を生成するように構成される。
したがって、宛先例外レベルが機能によって制約される場合、リターン・プログラム・カウンタ機能が生成されるが、それ以外の場合、リターン・プログラム・カウンタ値が生成される。そのような一実施形態では、どちらの場合にもプログラムカウンタ機能記憶要素を使用して、リターン・プログラム・カウンタ機能またはリターン・プログラム・カウンタ値のいずれかを格納し、リターン・プログラム・カウンタ値の格納に使用する場合、そのリターン・プログラム・カウンタ値はプログラムカウンタ機能記憶要素の第1フィールド内に格納される。前述の例外エントリメカニズムと同様に、後者の場合(つまり、プログラムカウンタ機能が不要な場合)、ハードウェアがプログラムカウンタ機能記憶要素の残りの部分を参照しない場合、残りの部分は「そのまま」残すことができ、またはクリアされ得る。しかし、代替実施形態では、プログラムカウンタ機能記憶要素の残りのフィールドは、第3デフォルト値に設定されるように構成され、1つの特定の実施形態では、その第3デフォルト値によりプログラムカウンタ機能記憶要素が処理回路の最大機能を表して、処理回路によるプログラムカウンタ値の使用が、プログラムカウンタ機能記憶要素の内容によって制約されないことを保証する。
複数の例外レベルはさまざまな形をとり得るが、一実施形態では、階層内のより高い例外レベルで実行するソフトウェアが、階層内のより低い例外レベルで実行するソフトウェアの少なくともいくつかの動作を制約する機能を有するように、例外レベルの階層として構成される。そのような一実施形態では、機能構成情報は、各例外レベルについて、その例外レベルで実行するソフトウェアが、同じ例外レベルとそれより低い例外レベルとの少なくとも1つで命令を実行するときに処理回路によって実行される動作を制約するために使用される機能を管理できるかどうかをさらに識別するように構成される。いくつかの実施形態では、機能構成情報内に格納される追加情報は、特定の例外レベルで実行するソフトウェアが、より低い例外レベルで実行される操作を制限するために使用される機能を管理できるかどうかを単に示すだけである。しかし、いくつかの実施形態では、特定の例外レベルで実行されるソフトウェアが、その同じ例外レベルで実行される動作を制約するために使用される機能をさらに管理できるかどうかを識別するためにその同じ情報を使用することもできる。さらに、階層内の最低の例外レベルについて、機能構成情報内の機能管理情報は、その最低の例外レベルがその最低の例外レベルで動作を制約するために使用される機能を管理できるかどうかを単に識別してもよい。
一実施形態では、特定の例外レベルの機能構成情報がその特定の例外レベルが機能を管理できないことを識別する場合、少なくとも特定の例外レベルが最低の例外レベル以外の例外レベルである場合、前記特定の例外レベルの機能構成情報はさらに、前記特定の例外レベルで命令を実行するときに処理回路によって実行される動作が、前記機能によって制約されないことを識別する。したがって、最低の例外レベル以外の例外レベルについて、その例外レベルが機能を管理できないことを機能構成情報が示す場合、その例外レベルの機能構成情報は、その例外レベルで実行される動作が機能によって制約されていないことも識別する。したがって、最低の例外レベルは例外かもしれないが、所定の例外レベルが機能を管理できない場合、説明された実施形態の機能によって影響を受けることもあり得ない。同じことが最低の例外レベルにも当てはまり得るが、代替の実施形態では、機能を管理できない場合でも、最低の例外レベルがなお機能の影響を受ける可能性があることになり得る。
さらに、一実施形態では、特定の例外レベルの機能構成情報がその特定の例外レベルが機能を管理できないことを識別する場合、より低い各例外レベルの機能構成情報がそのより低い例外レベルが機能を管理できないことを識別することもある。さらに、少なくともその低い例外レベルが最低の例外レベル以外の例外レベルである場合、その低い例外レベルの機能構成情報は、その低い例外レベルで処理回路によって実行される動作が機能によって制約されていないことをさらに識別する。前述のように、この制約は最低の例外レベルにも適用され得るが、一実施形態では、最低の例外レベルはなお機能の影響を受けるように構成され得る。
次に、図面を参照して特定の実施形態を説明する。
図1は、命令を処理するための処理パイプライン4を備えるデータ処理装置2の例を概略的に示している。この例では、処理パイプライン4は、フェッチステージ6、デコードステージ8、発行ステージ10、実行ステージ12、および書き戻しステージ14を含むいくつかのパイプラインステージを含むが、他のタイプまたは組み合わせのステージが提供されてもよい。例えば、いくつかの実施形態では、レジスタの改名を実行するための改名段階を含めることができる。処理される命令はステージからステージに移動し、あるステージで命令が保留中に、パイプライン4の別のステージで別の命令が保留される場合がある。
フェッチステージ6は、レベル1(L1)命令キャッシュ20から命令をフェッチする。フェッチステージ6は通常、連続する命令アドレスから順次命令をフェッチすることができる。しかしながら、フェッチステージは、分岐命令の結果を予測するための分岐予測器22を有してもよく、フェッチステージ6は、分岐が行われると予測される場合に(非順次)分岐ターゲットアドレスから命令をフェッチしてもよいし、または分岐が行われないと予測される場合に次の一連のアドレスから命令をフェッチしてもよい。分岐予測器22は、特定の分岐がとられる可能性が高いかどうかを予測するための情報を格納するための1つまたは複数の分岐履歴テーブルを含み得る。例えば、分岐履歴テーブルには、以前に実行された分岐の実際の結果を追跡したり、分岐に対して行われた予測の信頼性を表したりするためのカウンタが含まれ得る。分岐予測器22は、分岐命令の以前のターゲットアドレスをキャッシュするための分岐ターゲットアドレスキャッシュ(BTAC)24も含むことができ、これにより、同じ分岐命令の後続の遭遇時にこれらを予測できる。
フェッチされた命令は、デコードステージ8に渡され、デコードステージ8は、命令をデコードして、デコードされた命令を生成する。デコードされた命令は、適切な処理動作を実行するために実行ステージ12を制御するための制御情報を含み得る。キャッシュ20からフェッチされたいくつかのより複雑な命令については、デコードステージ8は、それらの命令をマイクロオペレーション(μopまたはuop)として知られている複数のデコードされた命令にマッピングしてもよい。したがって、L1命令キャッシュ20からフェッチされた命令と、パイプラインの後のステージで見られる命令との間に1対1の関係がない場合がある。一般に、本出願における「命令」への言及は、マイクロオペレーションを含むと解釈されるべきである。
デコードされた命令は発行ステージ10に渡され、命令の実行に必要なオペランドが使用可能かどうかを判断し、オペランドが使用可能になったときに実行のために命令を発行する。いくつかの実施形態は、命令がL1命令キャッシュ20からフェッチされたプログラム順序に対応する順序で実行のために命令が発行されるように、逐次処理をサポートしてもよい。他の実施形態は、プログラムの順序とは異なる順序で実行ステージ12に命令を発行できるように、順不同実行をサポートしてもよい。オペランドを待機している間に以前の命令がストールしている間、オペランドが利用可能なプログラム順序の後の命令が最初に実行できるため、順不同処理は、パフォーマンスの向上に役立ち得る。
発行ステージ10は、命令が実行されてさまざまなデータ処理動作を実行する実行ステージ12に対して命令を発行する。例えば、実行ステージは、整数値に対して算術演算または論理演算を実行するための算術/論理ユニット(ALU)30、浮動小数点形式で表される値の操作を実行するための浮動小数点(FP)ユニット32、およびレベル1(L1)データキャッシュ36からレジスタ40にデータ値をロードするロード操作、またはレジスタ40からL1データキャッシュ36にデータ値を保存するストア操作を実行するロード/ストアユニット34を含む多数の実行ユニット30、32、34を含み得る。これらは提供可能な実行ユニットのタイプのほんの一例であり、他の多くの種類も提供できることは理解されよう。処理動作を実行するために、実行ステージ12は、レジスタ40のセットからデータ値を読み取ってもよい。次に、実行された命令の結果は、書き戻しステージ14によってレジスタ40に書き戻されてもよい。
L1命令キャッシュ20およびL1データキャッシュ36は、複数レベルのキャッシュを含むキャッシュ階層の一部であってもよい。例えば、レベル2(L2)キャッシュ44も提供されてもよく、オプションとして、さらなるレベルのキャッシュが提供されてもよい。この例では、L2キャッシュ44はL1命令キャッシュ20とL1データキャッシュ36との間で共有されるが、他の例ではL2命令キャッシュとデータキャッシュとを別々に有していてもよい。フェッチされる命令がL1命令キャッシュ20にない場合、L2キャッシュ44からフェッチでき、同様に、命令がL2キャッシュ44にない場合、メインメモリ50からフェッチできる。同様に、ロード命令に応答して、データがL1データキャッシュ36にない場合はL2キャッシュ44からフェッチし、必要に応じてメモリ50からフェッチすることができる。キャッシュ階層の管理には、既知のスキームが使用され得る。
プログラム命令およびデータ値を参照するためにパイプライン4が使用するアドレスは仮想アドレスでもよいが、少なくともメインメモリ50、およびオプションでキャッシュ階層の少なくともいくつかのレベルは、物理的にアドレス指定されてもよい。したがって、パイプライン4によって使用される仮想アドレスをキャッシュまたはメモリにアクセスするために使用される物理アドレスに変換するために、変換ルックアサイドバッファ52(TLB)が提供され得る。例えば、TLB52は、それぞれが仮想アドレス空間の対応するページの仮想ページアドレスと、物理アドレスに対応するページ内で仮想アドレスを変換するべく仮想ページアドレスがマッピングされるべき対応する物理ページアドレスとを指定する多数のエントリを含み得る。例えば、仮想ページアドレスおよび物理ページアドレスは、対応する仮想アドレスおよび物理アドレスの最上位部分に対応し、仮想アドレスを物理アドレスにマッピングするときに残りの最下位部分は変更されないままであってもよい。アドレス変換情報だけでなく、各TLBエントリには、パイプライン4の特定のモードでアドレスの特定のページにアクセスできるかどうかを示すなど、アクセス許可を指定する情報も含まれ得る。いくつかの実施形態では、TLBエントリは、読み取り操作または書き込み操作に応じてキャッシュ階層のどのレベルが更新されるか(例えば、キャッシュが書き戻しモードまたはライトスルーモードで動作するかどうか)を定義するキャッシュポリシー情報、または対応するページのアドレスへのデータアクセスを、パイプライン4によってデータアクセスが発行された順序と比較して、メモリシステムによって並べ替えできるかどうかを定義する情報など、アドレスの対応するページの他のプロパティも定義できる。
図1は単一レベルのTLB52を示すが、レベル1(L1)TLB52がいくつかの最近アクセスされたページのアドレスを変換するためのTLBエントリを含むことができるようにTLBの階層が提供され得ること、およびより多くのページのエントリを格納するためにレベル2(L2)TLBが提供され得ることが理解される。必要なエントリがL1TLBに存在しない場合、L2TLBから、または階層内の別のTLBから取得できる。アクセスするページに必要なエントリがTLBのいずれにもない場合、ページ表ウォークを実行してメモリ50内のページ表にアクセスできる。本技法では、任意の既知のTLB管理方式を使用することができる。
また、例えば、最初のTLB(またはTLBの階層)を使用して仮想アドレスを中間アドレスに変換し、その後、1つ以上のさらなるTLBを使用する2番目のレベルのアドレス変換が中間アドレスをキャッシュまたはメモリへのアクセスに使用される物理アドレスに変換することができるように、一部のシステムは複数レベルのアドレス変換をサポートできることも理解される。このことは、第1レベルのアドレス変換をオペレーティングシステムで管理し、第2レベルのアドレス変換をハイパーバイザで管理する仮想化のサポートに役立ち得る。
図1に示されるように、装置2は、境界ポインタレジスタ60のセットを有し得る。境界付きポインタレジスタのセットは、図1では汎用データレジスタ40のセットと物理的に分離されているように示されているが、一実施形態では、同じ物理記憶装置を使用して汎用データレジスタと境界ポインタレジスタの両方を提供することができる。
各境界ポインタレジスタ60は、アクセスされるデータ値のアドレスを決定するために使用され得るポインタ値62と、対応するポインタ62を使用する際のアドレスの許容範囲を指定する範囲情報64とを含む。境界ポインタレジスタ60はまた、ポインタの使用に関する1つ以上の制限/許可を定義し得る制限情報66(本明細書では許可情報とも呼ばれる)を含み得る。例えば、制限66を使用して、ポインタ62を使用できる命令の種類、またはポインタを使用できるパイプライン4のモードを制限することができる。したがって、範囲情報64および制限情報66は、その中でポインタ62が使用されることを許可される機能を定義すると見なされ得る。定義された機能の範囲外でポインタ62を使用しようとすると、エラーが誘発され得る。範囲情報64は、例えば、ポインタが特定の既知の境界内に留まり、機密情報または安全情報を含む可能性のあるメモリアドレス空間の他の領域に迷わないことを保証するのに役立ち得る。同じ物理記憶装置が汎用データレジスタと境界ポインタレジスタとの両方に使用される実施形態において、一実施形態では、ポインタ値62は、例えば、対応する汎用レジスタに使用されるのと同じ記憶場所内に格納され得る。
図2は、データまたは命令への不正アクセスから保護するために許容範囲が使用される命令のタイプの例を示している。図2の上部に示すように、特定の境界ポインタレジスタPR1は、特定のポインタ値62と、この例では許容範囲の下限を定義する下限アドレス68と許容範囲の上限を定義する上限アドレス69を使用して指定される範囲情報64とを含む。例えば、境界68、69は、アドレス80000~81000の範囲を定義するように設定される。特定の命令が境界ポインタレジスタPR1を参照し、ポインタ62から決定されたアドレスがこの範囲外にある場合、エラーが誘発され得る。
例えば、図2のパートAに示すように、一部のシステムでは、ポインタレジスタ60のポインタ62の値を範囲情報64で指定された範囲外の値に設定しようとすると、エラーが誘発され得る(ここでは、ポインタがアドレスを直接指定すると想定されている)。これにより、ポインタ62が指定された範囲外の値をとることが回避されるため、ポインタを使用するアクセスが許可された範囲内に安全に収まることが保証され得る。あるいは、図2のパートBに示されるように、そのアドレスが指定範囲外にあるときに命令がポインタ62のアドレスによって識別される位置にアクセスしようとするとエラーが誘発され得る。したがって、ポインタ62を指定された範囲外の値に設定することは依然として可能であるが、ポインタアドレス(またはポインタから派生したアドレス)でデータアクセスが試行されると、アドレスが許容範囲外に存在する場合はエラーが誘発され得る。他のシステムは、図2のパートAおよびパートBに示されている両方のタイプの命令に応答してエラーを誘発し得る。
範囲情報64は、さまざまな方法で設定できる。例えば、セキュリティで保護されたコード、またはオペレーティングシステムまたはハイパーバイザは、特定のポインタに許可される範囲を指定できる。例えば、命令セットアーキテクチャは、所与のポインタ62の範囲情報64を設定または変更するためのいくつかの命令を含んでもよく、これらの命令の実行は、特定のソフトウェアまたは特定のモードまたはプロセッサ4の例外レベルに制限され得る。範囲情報64を設定または修正するための任意の既知の技術を使用することができる。
ポインタを参照する特定の命令を実行するときに実行状態12で使用できる境界ポインタ記憶要素60のセットに加えて、プログラムカウンタ機能(program counter capability:PCC)レジスタ80も使用して、命令がレベル1命令キャッシュ20からフェッチされているときのフェッチステージ6における同様の機能を提供し得る。特に、境界ポインタ記憶要素60のセット内の各ポインタが提供される範囲および制限情報と同様に、PCC80が範囲情報84および任意の適切な制限情報86も提供しつつ、プログラムカウンタポインタをフィールド82に格納することができる。
さらに、一実施形態では、非境界ポインタも汎用レジスタ40内で指定され、メモリアクセスを実行するときに使用されてもよい。このような非境界ポインタを使用してアクセスできるメモリアドレスを制限するために、機能レジスタのいずれかに含まれる範囲および制限情報と同様に、範囲データ92とあらゆる制限データ94との両方を指定するデフォルトデータ機能(Default Data Capability:DDC)レジスタ90が提供され得る。次いで、汎用レジスタ40内の非境界ポインタを参照してメモリアドレスを識別するメモリアクセス命令が実行されるとき、その非境界ポインタから導出された任意のアドレスに基づいて、境界ポインタに関して実行される境界チェック操作と同様の境界チェック操作が、依然として実行可能であるが、この例では、DDCレジスタ90内に保持されている範囲と制限情報とを考慮する。そのようなアプローチにより、例えば、既存のソフトウェアライブラリ内のいくつかの機能を認識しないコードを利用してDDCレジスタ90を設定して、その機能を認識しないコードを実行するときに、汎用レジスタ40からアクセスされるポインタの使用方法に制約を課すことができる。特に、範囲情報を使用して、このような機能を認識しないコードを実行するときにアクセスできるアドレス範囲を制限できる。
境界ポインタレジスタ内の境界ポインタによって識別されるメモリアドレスの特定の範囲には、データ、命令、および/またはその他の機能(つまり、その他の境界ポインタ)を含めることができる。したがって、メモリにアクセスする処理回路の機能は、境界ポインタレジスタで識別される機能と、それらの境界ポインタレジスタに保持されている機能を介してアクセス可能なその他の機能とを含む一連の機能によって定義されることがいつでも認識され、この機能セットは、本明細書では機能ドメインと呼ばれる。
PCCレジスタ80またはDDCレジスタ90で指定された範囲情報および関連する制限は、さまざまな方法で設定することができる。しかし、一実施形態では、情報は、現在の機能ドメイン内の処理回路で利用可能な境界ポインタの1つまたは複数を使用して決定されるため、現在の機能ドメインで識別されるメモリアドレス範囲外にある如何なるメモリアドレスにも、PCCベースのまたはDDCベースの境界チェックを使用してアクセスすることはできない。
図3は、個々のデータブロックに関連してタグビットを使用して、それらのデータブロックが機能(つまし、境界ポインタおよび関連制限情報)を表すか、通常のデータを表すかを識別する方法を概略的に示している。特に、メモリアドレス空間110は、通常、指定されたサイズを有する一連のデータブロック115を格納する。純粋に説明のために、この例では各データブロックが128ビットで構成されていると仮定している。各データブロック115に関連して、一例では、タグビットと呼ばれる単一ビットフィールドであるタグフィールド120が提供され、関連するデータブロックが機能を表すことを識別するように設定され、関連するデータブロックが通常のデータを表していることを示すようにクリアされるため、機能として扱うことができないことを示している。セットまたはクリア状態に関連付けられた実際の値は、実施形態に応じて変化する可能性があるが、純粋に例示として、一実施形態では、タグビットの値が1の場合、関連するデータブロックは機能であることを示し、値が0の場合、関連するデータブロックは通常のデータを含むことを示している。
図3に示される機能レジスタ100のように、機能が境界ポインタレジスタ60(本明細書では機能レジスタとも呼ばれる)の1つにロードされると、タグビットは機能情報とともに移動する。したがって、機能レジスタ100に機能がロードされると、ポインタ102、範囲情報104および制限情報106(以下、許可情報と呼ぶ)が機能レジスタにロードされる。さらに、その機能レジスタに関連して、またはその中の特定のビットフィールドとして、コンテンツが機能を表すことを識別するためにタグビット108が設定される。同様に、機能がメモリに戻されて保存されると、関連するタグビット120は、機能が保存されるデータブロックに関連して設定される。このようなアプローチにより、機能と通常のデータとを区別し、通常のデータを機能として使用できないようにすることができる。
図示の実施形態では、装置は、各例外レベルが異なるソフトウェア実行特権を有する異なる例外レベルで動作できるように構成されている。さらに、複数の例外レベル間を遷移するために例外メカニズムが使用される。特に、例外エントリまたは例外出口では、切り替え操作を実行して、ソース例外レベルからターゲット例外レベルに切り替えることができる。図1に示されるように、装置10は、その動作中に処理回路によって参照されるさまざまな制御および状態情報を格納するさまざまな制御/状態レジスタ70にアクセスでき、制御/状態レジスタ70は上記のスイッチ操作の実行中に使用されるさまざまなレジスタを含む。
図1に示されるように、現在のプロセス状態74は、プロセッサの現在の動作に関連するさまざまな実行状態情報を取得するために、制御/状態レジスタ70内で維持される。単一のボックス74として示されているが、現在のプロセス状態は必ずしも単一のレジスタ内にすべて格納されるわけではなく、利用可能な制御/状態レジスタ70内の多数の制御/状態レジスタ内に格納されてもよい。
動作中に、割り込み、システムコール、障害など、さまざまな異なるメカニズムによって例外が誘発され得る。一実施形態によれば、例外がとられると、切り替え動作の一部として例外エントリメカニズムが誘発され、このプロセス中に現在のプロセス状態74が保存されたプロセス状態72としてキャプチャされる。繰り返しになるが、保存されたプロセス状態72は、単一のレジスタ内、または複数のレジスタ内に格納されてもよい。次に、例外を処理するために、処理回路によって例外処理操作が実行される。その後、処理回路が例外から復帰すると、保存されたプロセス状態が現在のプロセス状態に復元され、処理回路は、例外が発生する前に実行していた操作を続行できる。
処理回路の実行状態を複数の例外レベルで維持できるようにするために、必要に応じて、複数の例外レベルで別々の保存されたプロセス状態レジスタ(saved process state registers:SPSR)72と現在のプロセス状態レジスタ(current process state registers:CPSR)74とを維持できる。
図4は、一実施形態におけるさまざまな例外レベル間の相互関係を示している。例外レベルEL0のソフトウェア実行特権は最も低く、EL0での実行は非特権実行と呼ばれる。nの値が1から3に増加したことは、ソフトウェア実行特権が増加したことを示している。EL2例外レベルは、プロセッサ仮想化のサポートを提供する。一方、EL3ステージは、2つのセキュリティ状態、つまりセキュア状態と非セキュア状態のサポートを提供する。
これにより、図4に示す一般的なツリー構造が生成される。特に、図4に示すEL3 200などのEL3例外レベルが提供されている場合、安全な状態で実行される。非セキュア状態では、必要に応じて仮想化をサポートすることが可能であり、したがって、非セキュア状態でEL2例外レベル205を提供することができる。セキュア状態内では、一実施形態では、EL2レベルは提供されず、代わりに、EL1レベル230がセキュア状態内に提供され、その下にいくつかの異なるEL0レベル240、242が提供され得る。
非セキュア状態では、EL2レベル205が提供される場合、その下で複数のEL1レベル210、212、214をサポートでき、これらのEL1レベルのそれぞれは、参照番号220、222で概略的に示すように1つ以上のEL0レベルをサポートできる。
さまざまな例外レベル間の遷移は、例外の取得を介して行われる。ただし、すべての例外によって例外レベルが変更されるわけではない。例えば、一実施形態では、EL0からの例外は通常EL1(ただし、いくつかの構成ではEL2)でとられる。一実施形態では、EL1以上からの例外は、一般に同じ例外レベルでとられる可能性がある。ただし、EL1からEL2/EL3およびEL2からEL3のさまざまな例外も提供され、同様の目的に使用できる。一実施形態では、EL3の例外は常にEL3でとられる。図4に示すように、保存されたプロセス状態レジスタは、各例外レベルに関連付けて提供できる。EL1でEL0からの例外が取得されることが常にある場合は、EL0レベルに関連する個別のSPSRの必要はない。しかしながら、一実施形態では、EL0からの特定の例外をEL0レベルでとることができ、その場合、EL0用の別個のSPSRレジスタを提供することができる。
残りの図を参照して説明するように、本明細書で説明する実施形態では、複数の例外レベルでの動作を可能にするタイプの処理回路で使用する機能の使用を管理する柔軟な手法が開発された。
特に、図1に示されるように、制御/状態レジスタ70は、各例外レベルの機能構成情報を格納するための例外レベルごとの機能構成レジスタ76を含む。機能構成情報は、さまざまなタイプの情報をキャプチャできるが、一実施形態では、少なくとも、その例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されるかどうかを識別する。
このような機能構成情報を例外レベルごとに例外レベルで指定できることにより、少なくとも1つの例外レベルのソフトウェアが必要に応じて機能によって制約されないようにする柔軟性が提供される。したがって、例えば、高い例外レベルで実行される信頼性の高いソフトウェアは、機能に制約されることなく動作することができ、そのようなソフトウェアの機能チェックルーチンを実行する必要性を回避することにより、パフォーマンス上のメリットが得られる。また、機能ベースのアーキテクチャと互換性を持たせるために、そのようなソフトウェアを変更する必要がある範囲を減らすこともできる。実際、いくつかの実施形態では、メカニズムにより、レガシーの機能非対応のソフトウェアを少なくとも1つの例外レベルで実行することができる。
図5は、一実施形態に従ってレジスタ76内で捕捉された例外レベルごとの機能構成情報を概略的に示す表である。この実施形態では、レジスタ300は、各例外レベルに対して2ビットのフィールドを備えてもよい。第1フィールド305は、関連する例外レベルが機能の影響を受けるかどうかを識別することができ、このフィールドは本明細書では「A」ビットとも呼ばれる。したがって、このビットは、ソフトウェアが関連する例外レベルで実行されているときに、そのソフトウェアが機能によって制約されているかどうかを識別する。図5に示す例では、値「0」はソフトウェアが機能によって制約されていないことを示し、値「1」はソフトウェアが機能によって制約されていることを示す。しかし、他の実施形態では、必要に応じて、論理ゼロ値と論理1値の意味を逆にすることができることが理解されよう。
一実施形態では、例外レベルごとの機能構成情報はフィールド305のみを含んでもよいが、代替実施形態では、関連する例外レベルで実行するソフトウェアが、後で処理回路によって1つ以上のより低い例外レベルで実行される操作を制限するために使用される機能を管理できるかどうかを識別する追加フィールド310が提供される。オプションで、この情報は、特定の例外レベルで実行されているソフトウェアが、同じ例外レベルで処理回路によって実行される操作を制限するために使用される機能も管理できるかどうかも識別できる。例えば、一実施形態では、特定の例外レベルで実行するソフトウェアを異なる「コンパートメント」で実行するように調整することができ、後で1つのコンパートメントで実行するソフトウェアが別のコンパートメントで実行されるソフトウェアによって実行される操作を制限するために使用する機能を管理できる。特定の例として、特定の例外レベルで実行されるソフトウェアは、実行状態または制限状態で動作することができ、実行状態の1つのコンパートメントで実行されるソフトウェアは、後で同じ例外レベルの別のコンパートメントで実行されるソフトウェアを制限するために使用される機能を管理することを許可される場合がある。
図5に示すように、機能を管理するために特定の例外レベルで実行するソフトウェアの機能に関する情報を取得するために使用されるフィールド310は、一実施形態では「M」ビットと呼ばれる場合がある。
図5に示すように、AビットとMビットとの両方がクリアされている場合、これは、ソフトウェアが機能により影響されないだけでなく、機能を管理することもできないため、関連する例外レベルで実行されているそのソフトウェアがレガシーソフトウェアである可能性があり、したがって装置の機能ベースのアーキテクチャを考慮するために変更する必要はないことを意味する。
図5にも示されているように、別のオプションの状態は、Aビットがクリアされるが、Mビットが設定されることである。つまり、関連する例外レベルで実行されるソフトウェアは機能自体の影響を受けないが、後でより低い例外レベルで実行されるソフトウェアが実行する操作を制限するために使用する機能の管理に使用できる。
別のオプションとして、AビットとMビットとの両方を設定できる。つまり、関連する例外レベルで実行されているソフトウェアは機能自体の影響を受け、機能を管理することもできる。前述のように、Mビットが設定されている場合、これは、一実施形態では、関連する例外レベルで実行するソフトウェアが、後でより低い例外レベルでソフトウェアによって実行される操作を制限するために使用される機能を管理できることを示す場合があるが、ソフトウェアが同じ例外レベルの機能を管理することはできないことである場合がある。しかし、代替実施形態では、状況によっては、同じ例外レベルに関連付けられた機能を管理することも許可される場合がある。
一実施形態では、図5に示されるエントリの最初の3セットのみが、AビットおよびMビットの有効な状態である。しかしながら、代替実施形態では、表300内の最終エントリによって示されるような状態のさらなるセットは、いくつかの例において、例えば最低の例外レベルEL0に関連して利用可能であってもよい。特に、この状態に従って、Mビットはクリアされるが、Aビットはセットされる。これは、その例外レベルで実行されているソフトウェアは機能を管理できないが、それらによって制約される可能性があることを意味する。これは、管理する下位の例外レベルがない最低の例外レベルEL0を許可するための適切な構成であり得る。特定の具体的な例として、これにより、通常はより高い例外レベルによってこれらの機能が設定された後、EL0で実行するソフトウェアをプログラムカウンタ機能80やDDC90などの機能によって制約できる。
一実施形態では、例外レベルごとの機能構成レジスタ76は、各レジスタが関連する例外レベルによって「所有」され、その例外レベルのAビットおよびMビットを含む複数のレジスタで形成されると考えることができる。これらのレジスタは明示的にアクセスされ、より高い例外レベルはそのレベル以下のレジスタにアクセスできる。例えば、EL2例外レベルは、EL2、EL1、およびEL0に影響する機能構成レジスタにアクセスできる。特定の一実施形態では、EL0の機能構成自体は、EL1またはEL2のいずれかが所有するレジスタによって構成可能に制御される。
一実施形態では、各例外レベルによる機能構成レジスタへのアクセスは、任意の適切なメカニズムによって制御することができる。特定の例外レベルにアクセス可能な機能構成レジスタに格納された値は、後で一実施形態では、動作中、例えばそれぞれ機能認識および非認識のVMゲストを切り替えるときに動的に変更できる。
図6は、より高い構成レベルに関連付けられた機能構成が、より低い例外レベルで利用可能な機能構成にどのように影響するかを示す表320である。この表では、より高い例外レベルPのMビットとAビットの値はフィールド325、330で示され、より低い例外レベルQの対応するMビットとAビットはフィールド335、340で示されている。この実施形態では、例外レベルPについてMビットがクリアされる(すなわち、論理ゼロ値にある)場合、これは、例外レベルPが機能の影響を受け得ないことを意味し(すなわち、そのAビットは、実際の値によらずクリアされたものとして扱われる)、より高い例外レベルが機能の影響を受けることは不可能である一方、より低い例外レベルで機能を構成することはできない。より高い例外レベルが管理できない場合はより低い例外レベルは機能を管理することはできないため、例外レベルPのフィールド325のMビットをクリアすることは、例外レベルQのMビットをクリア(つまりゼロ)する必要があることも意味する。例外レベルPと同様に、例外レベルQのフィールド335のMビットをクリアすることは、フィールド340の値を読み取る以外のすべての目的で、フィールド340のAビットもクリアとして扱われることを意味する。
次の3つのエントリは、例外レベルPが機能を管理できる状況を示しているが、それ自体は機能の影響を受けない。そのような構成において、図5の表300に示される上位3つのエントリのそれぞれは、例外レベルQに関連して利用可能である。さらに、図5を参照して前述したように、一実施形態では、例外レベルQが最低である例外レベルの場合、Mビットフィールド335をクリアし、Aビットフィールド340を設定して、例外レベルQが機能によって制約されるが、それらを管理できない場合がある。
図6の最後の3つのエントリは、MビットとAビットの両方が例外レベルPに設定されている状況を示している。再び、図5の表300に示されている上位3つのエントリは例外レベルQに使用できる。さらに、前述のように、例外レベルQが最も低い例外レベルである場合、Mビットをクリアすることもできるが、Aビットをセットすることもできる。
前述のように、例外の入口または例外の出口/戻り時に、切り替え操作を実行して、ソース例外レベルからターゲット例外レベルに切り替えることができる。記載された実施形態によれば、機能の効果を例外レベルごとに変えることができるので、装置は、スイッチ操作の一部として、機能の効果がソース例外レベルとターゲット例外レベルの間で異なる可能性を考慮するメカニズムも提供する。特に、ソース例外レベルからターゲット例外レベルへの切り替え操作中に、ソース例外レベルと宛先例外レベルの少なくとも1つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態がスイッチ操作中にどのように管理されるかを判定する。このプロセスについては、図7A、図7B、図8を参照して詳細に説明する。
図7Aは、ソース例外レベルXのどの実行状態を保存するかを決定するために、例外レベルXから例外レベルYまでの例外エントリで実行されるステップを示している。ステップ400で、ソース例外レベルXにAビットが設定されているかどうか、すなわち、例外レベルXが機能の影響を受けるかどうかが判定される。そうである場合、プロセスはステップ405に進み、例外レベルXの機能状態がキャプチャされる。前述のように、これは、例外レベルXの現在のプロセス状態レジスタ(CPSR)の内容が、例外レベルYにアクセス可能な保存されたプロセス状態レジスタ(SPSR)72に保存されることを意味する。しかし、さらに、PCCレジスタ80に格納されているプログラムカウンタ機能は、ソース例外レベルXの優先リターンアドレス機能を識別するために使用する必要がある。優先リターンアドレスは、例外のタイプに依存するが、通常はプログラムカウンタ値またはプログラムカウンタ値に4を加えたもの(バイトサイズのアドレス指定と32ビット命令を想定)である。優先リターンアドレスに加えて、現在のプログラムカウンタ機能からの残りの機能情報も、PCCから生成されたリターンアドレス機能にコピーされる。一実施形態では、このようにして生成されたリターンアドレス機能は、専用リターンアドレス機能レジスタ内に格納され、特定の一実施形態では、これは機能例外リンクレジスタ(capability exception link register:CELR)78)である。
ただし、ステップ400でAビットが設定されていないと判定された場合、つまり、ソース例外レベルで実行されているソフトウェアが機能の影響を受けない場合、例外レベルXの現在のプロセス状態74が保存されたプロセス状態72に保存されるので、リターンアドレス情報を形成する機能を保存する必要はない。代わりに、好ましいリターンアドレスは、プログラムカウンタ値82から計算され、適切なリターンアドレス記憶要素内に保存され、一実施形態では、これは例外リンクレジスタ(exception link register:ELR)である。しかしながら、例外レベルXで実行するソフトウェアは機能によって制約される命令フェッチを持たないため、機能情報をPCCレジスタ80から抽出する必要はない。
一実施形態では、別個のCELRレジスタ78および別個のELRレジスタを設けることができるが、代替実施形態では、両方の場合に同じ物理構造78を使用することができる。ソース例外レベルXが機能に制約されていないために図7Aに示すプロセスがステップ410に進むと、PC値から派生した優先リターンアドレスをCELRのアドレスフィールド内に格納でき、一実施形態では、残りのフィールドの少なくとも1つが第1デフォルト値に設定される。例えば、図3を参照して説明した前述のタグビットを参照すると、CELRレジスタ78に関連付けられたタグビットをそのようなインスタンスでクリアして、CELRが有効な機能を格納していないことを識別でき、後で例外リターンでその情報を取得するときに、リターンアドレス情報を格納するCELRの部分を参照する。代替実施形態では、例えば、ステップ410でCELRレジスタ78に格納された優先リターンアドレスをゼロ拡張することにより、CELRレジスタ78の残りのフィールドのすべてをクリアすることができる。
ソース例外レベルXのどの実行状態を例外エントリに保存する必要があるかを決定することに加えて、宛先例外レベルYの適切な実行状態を決定する必要もあり、特に、PCCレジスタ80に保存する初期プログラムカウンタ機能または初期プログラムカウンタ値を決定する必要がある。このプロセスを図7Bに概略的に示す。
図示のように、ステップ420で、宛先ビットが宛先例外レベルYに設定されているかどうか、すなわち宛先例外レベルが機能の影響を受けるかどうかが判定される。そうである場合、プロセスはステップ425に進み、プログラムカウンタ機能レジスタ80は、図1に示される機能制御記憶要素79に記憶された例外エントリアドレス機能情報を使用して更新される。特に、レジスタ79は、例外エントリで使用される適切なアドレスに関する情報と、PCCレジスタ80内に格納されるプログラムカウンタ機能を形成するためにそのアドレスに加えて提供される関連機能情報も格納する。レジスタ79内の例外エントリアドレス情報はさまざまな形をとることができるが、一実施形態では、レジスタ79は機能ベクトル・ベース・アドレス・レジスタ(capability vector base address register:CVBAR)の形をとる。このレジスタは、例外エントリのベースアドレスを提供し、例外は、例外タイプに応じてこのベースアドレスからのオフセットを決定する。したがって、PCCレジスタ80にロードされたプログラムカウンタ機能を形成するために使用される適切なアドレスを識別するために、例外のタイプに関する情報が使用され、PCCレジスタの機能情報の残りの部分はCVBARの機能の対応する部分から形成される。
宛先例外レベルYにAビットが設定されていない場合、例外レベルYは機能の影響を受けないため、プログラムカウンタ機能は必要ない。代わりに、PCCレジスタ80のフィールド82にロードされる初期プログラムカウンタ値を形成するだけでよい。したがって、一実施形態では、ステップ430で示されるように、このシナリオでは、PCCレジスタ80のフィールド84、86の範囲および制限情報は最大機能を識別するように設定され、PCポインタ値82は例外エントリ・アドレス・レジスタ79から得られた情報を使用して更新される。この例では、非機能例外エントリ・アドレス・レジスタが参照され、一実施形態では、これはベクトル・ベース・アドレス・レジスタ(vector base address register:VBAR)であり得る。特定の一実施形態では、VBARレジスタは、CVBARレジスタの下位64ビットに形成され、CVBARおよびVBARレジスタの両方が同じ物理記憶構造を共有できるようにする。
しかしながら、代替実施形態では、最大機能を識別するためにPCCレジスタ80に範囲および制限情報を設定する必要はないかもしれない。例えば、現在の例外レベルが機能の影響を受けない場合、PCCレジスタ80内の範囲と制限情報84、86を無視するようにハードウェアが配置されている場合、範囲と制限情報は変更されないままになり、必要に応じてクリアされる場合がある。しかし、PCCレジスタ80全体があらゆる状況で参照される実施形態では、範囲および制限情報を設定して最大機能を識別することにより、宛先例外レベルで実行されるソフトウェアが機能によって制約されないことを保証する。
図8は、例外からの復帰中に実行されるステップを示すフロー図である。この場合、ソース例外レベルは例外レベルYであり、宛先例外レベルは例外レベルXであると想定される。ステップ450で、宛先ビットが宛先例外レベルXに設定されているかどうかが判定される。そうである場合、プロセスはステップ460に進み、宛先例外レベルの機能状態が復元される。これは、CELRレジスタ78の内容をPCCレジスタ80に復元し、SPSRレジスタ72の内容を例外レベルXのCPSRレジスタ74に復元することにより、図7Aのステップ405でとられたステップを本質的に逆にする。
しかし、Aビットが宛先例外レベルXに設定されていないと判定された場合、つまり例外レベルXが機能の影響を受けない場合、プロセスはステップ455に進む。ここで、(非機能)状態は例外レベルXに対して復元される。一実施形態では、これは再びSPSRコンテンツが例外レベルXのCPSRコンテンツに復元されることを伴う。しかし、PCCレジスタ80に関して、一実施形態では、範囲および制限情報は最大機能を識別するために設定され、ポインタ値フィールド82はELRからの情報を使用して入力される。図7Bのステップ430を参照して前述したのとほぼ同じ方法で、いくつかの実施形態では、範囲と制限情報を設定して最大機能を識別する代わりに、代わりに範囲と制限情報を単に残すことが可能かもしれない現在の例外レベルが機能の影響を受けない状況でハードウェアがその情報を参照しない場合、「そのまま」またはその情報をクリアする。
図9は、使用され得る仮想マシンの実装を示している。前述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実施するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートするホスト・オペレーティング・システム520を実行するホストプロセッサ530で実行される。通常、妥当な速度で実行される仮想マシンの実装を提供するには、大きな強力なプロセッサが必要だが、このようなアプローチは、互換性や再利用のために別のプロセッサにネイティブなコードを実行したい場合など、特定の状況で正当化される場合がある。仮想マシンプログラム510は、コンピュータ可読記憶媒体(非一時的媒体でもよい)に格納されてもよく、仮想マシンプログラム510によってモデル化されているデバイスである実際のハードウェアによって提供されるアプリケーション・プログラム・インターフェースと同じアプリケーション・プログラム・インターフェース(命令実行環境)をアプリケーションプログラム500に提供する。機能の使用を管理するための上記の技法は、仮想マシンプログラム510を使用して基礎となるハードウェアとの相互作用をモデル化することにより、仮想マシン環境内で実装され得る。仮想マシンプログラムは、通常ゲスト・オペレーティング・システムとそのアプリケーションで構成される仮想マシンを実行するためのハードウェア/ソフトウェアエミュレート環境を提供すると見なすことができる。そのような実施形態では、例えば、ハイパーバイザ・オペレーティング・システムが、仮想マシンプログラム(通常はEL0で実行されている)が機能の影響を受けるかどうかを制御することが可能である。また、仮想マシンプログラムと連携して、ゲスト・オペレーティング・システムとそのアプリケーションが機能の影響を受ける/管理するかどうかも制御できる。
上記の実施形態は、機能構成情報を例外レベルごとに指定できるようにすることにより、機能の使用を管理するための非常に柔軟なメカニズムを提供し、ソース例外レベルとターゲット例外レベル間で機能がどのように使用されるかの違いを考慮した例外レベル間の切り替えを制御するメカニズムが提供されることが理解されよう。したがって、例外レベルの開始および終了時に、切り替え動作中に処理回路の実行状態がどのように管理されるかを判定するときに、ソース例外レベルと宛先例外レベルの少なくとも1つに関連する機能構成情報を考慮した切り替え動作を実行できる。
このレベルの構成可能性を提供することで、さまざまな例外レベルのそれぞれでさまざまな使用モデルをサポートできる。例えば、1つ以上の例外レベルで、機能の影響を受けず、それ自体または下位レベルの機能を管理しないレガシーソフトウェアが実行される場合がある。
別の例として、ハイパーバイザの例外レベルなどの特定のより高い例外レベルでは、機能によって制限されないコードを実行できるが、それでもソフトウェアが機能を認識できるため、より低い例外レベルを制約するために使用される機能を制御/切り替えることができる。
別の例として、1つ以上の例外レベルでは、ソフトウェアが機能の影響を受け、より低い例外レベル(およびオプションで同じ例外レベル)を制限するために使用される機能を管理できる場合がある。
さらに、切り替えメカニズムにより、例外の入力または例外の終了時に、ソースおよび/または宛先例外レベルが機能の影響を受けるかどうかを考慮して、必要な情報をキャプチャして復元できる。
一実施形態では、低い例外レベルで機能を使用することが望ましい場合、より高い例外レベルはより低い例外レベルに関して文脈切り替えを担当するため、より高い例外レベルはすべて、より低いレベルの機能を管理できる範囲で機能を認識しなければならない。ただし、上記の手法を使用すると、より高い例外レベルの1つまたは複数自体が機能によって制約されない可能性がなおある。これにより、機能によって制約を受けずに実行できるソフトウェアには機能チェックが必要ないため、このような状況でパフォーマンスの利点が得られる。
本出願では、「…に構成される」という言葉は、装置の要素が定義された動作を実行できる構成を有することを意味するために使用される。これに関連して、「構成」とは、ハードウェアまたはソフトウェアの相互接続の配置または方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを備えていてもよいし、プロセッサまたは他の処理装置が機能を実行するようにプログラムされていてもよい。「構成」は、定義された動作を提供するために、装置要素を何らかの方法で変更する必要があることを意味するものではない。
本発明の例示的な実施形態を添付の図面を参照して本明細書で詳細に説明したが、本発明はそれらの正確な実施形態に限定されず、当業者によってさまざまな変更、追加、および修正を行うことができ、添付の特許請求の範囲によって定義される本発明の範囲および精神から逸脱することなく、当技術分野において実施されることを理解されたい。例えば、本発明の範囲から逸脱することなく、従属請求項の特徴と独立請求項の特徴とのさまざまな組み合わせを行うことができる。

Claims (24)

  1. 命令を実行し、複数の例外レベルで動作可能であり、各々の前記例外レベルが異なるソフトウェア実行特権を有する、処理回路と、
    前記処理回路にアクセス可能であり、前記命令を実行するときに前記処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、
    前記複数の例外レベルのそれぞれについて機能構成情報を識別し、前記機能構成情報は、各々の前記例外レベルについて、少なくともその例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されるかどうかを識別する、機能構成記憶装置と、を備え、
    ソース例外レベルから宛先例外レベルへの切り替え動作中に、前記ソース例外レベルと前記宛先例外レベルの少なくとも1つに関連する前記機能構成記憶装置内の前記機能構成情報を使用して、前記処理回路の実行状態が前記切り替え動作中にどのように管理されるかを判定する、装置。
  2. 前記処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、前記処理回路は、例外エントリが前記ソース例外レベルから前記宛先例外レベルへの前記切り替え動作を引き起こす場合、前記ソース例外レベルに関連する前記機能構成情報を参照して、前記ソース例外レベル用に保存するリターンアドレス情報を決定するように構成されている、請求項1に記載の装置。
  3. 前記処理回路は、前記ソース例外レベルに関する前記機能構成情報が、前記ソース例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されることを識別する場合、プログラムカウンタ機能を参照して前記リターンアドレス情報を決定し、前記リターンアドレス情報をリターンアドレス機能記憶要素として指定された前記機能記憶要素の1つ内の機能として記憶するように構成され、
    そうでなければ、前記処理回路は、プログラムカウンタ値を参照して前記リターンアドレス情報を決定し、前記リターンアドレス情報をリターンアドレス値としてリターンアドレス記憶要素内に格納するように構成されている、請求項2に記載の装置。
  4. 前記リターンアドレス記憶要素は、前記リターンアドレス機能記憶要素内のフィールドにより形成される、請求項3に記載の装置。
  5. 前記リターンアドレス情報が前記リターンアドレス値として前記リターンアドレス記憶要素内に格納されるとき、前記リターンアドレス機能記憶要素の少なくとも1つの残りのフィールドが第1デフォルト値に設定される、請求項4に記載の装置。
  6. 残りのすべてのフィールドが、前記リターンアドレス値をゼロ拡張することにより前記第1デフォルト値に設定される、請求項5に記載の装置。
  7. 前記処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、例外エントリが前記ソース例外レベルから前記宛先例外レベルへの前記切り替え動作を引き起こす場合、前記処理回路は、前記宛先例外レベルに関連する前記機能構成情報を参照して前記宛先例外レベル用の前記処理回路の初期実行状態を決定するように構成されている、請求項1~6のいずれか一項に記載の装置。
  8. 前記宛先例外レベルに関する前記機能構成情報が、前記宛先例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されることを識別する場合、前記処理回路は機能制御記憶要素に格納された例外エントリアドレス機能情報を使用して、前記宛先例外レベル用の初期プログラムカウンタ機能を生成するように構成され、
    そうでなければ、前記処理回路は、制御記憶要素に記憶された例外エントリアドレス情報を使用して初期プログラムカウンタ値を生成するように構成されている、請求項7に記載の装置。
  9. 前記制御記憶要素は、前記機能制御記憶要素内のフィールドによって形成される、請求項8に記載の装置。
  10. 前記初期プログラムカウンタ機能を格納するプログラムカウンタ機能記憶要素をさらに備え、
    前記処理回路は、前記初期プログラムカウンタ機能の代わりに前記初期プログラムカウンタ値を生成する場合、前記プログラムカウンタ機能記憶要素の第1フィールド内に前記初期プログラムカウンタ値を格納するように構成されている、請求項8または請求項9に記載の装置。
  11. 前記処理回路が前記プログラムカウンタ機能記憶要素の前記第1フィールド内に前記初期プログラムカウンタ値を格納する場合、前記プログラムカウンタ機能記憶要素の残りのフィールドが第2デフォルト値に設定されるように構成されている、請求項10に記載の装置。
  12. 前記第2デフォルト値は、前記プログラムカウンタ機能記憶要素に前記処理回路の最大機能を表させて、前記処理回路による前記初期プログラムカウンタ値の使用が前記プログラムカウンタ機能記憶要素の内容によって制約されないことを保証する、請求項11に記載の装置。
  13. 前記処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、前記処理回路は、例外出口が前記ソース例外レベルから前記宛先例外レベルへの前記切り替え動作を引き起こす場合、前記宛先例外レベルに関連する前記機能構成情報を参照して、前記宛先例外レベル用の前記処理回路のリターン実行状態を決定するように構成されている、請求項1~12のいずれか一項に記載の装置。
  14. 前記宛先例外レベルに関連する前記機能構成情報が、前記宛先例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されることを識別する場合、前記処理回路は、リターンアドレス機能記憶要素として指定された前記機能記憶要素の1つ内の機能として記憶されたリターンアドレス情報を使用して、前記宛先例外レベル用のリターン・プログラム・カウンタ機能を生成するように構成され、
    そうでなければ、前記処理回路は、リターンアドレス記憶要素内にリターンアドレス値として格納されたリターンアドレス情報を使用してリターン・プログラム・カウンタ値を生成するように構成されている、請求項13に記載の装置。
  15. 前記リターン・プログラム・カウンタ機能を格納するプログラムカウンタ機能記憶要素をさらに備え、
    前記処理回路は、前記リターン・プログラム・カウンタ機能の代わりに前記リターン・プログラム・カウンタ値を生成する場合、前記プログラムカウンタ機能記憶要素の第1フィールド内に前記リターン・プログラム・カウンタ値を格納するように構成されている、請求項14に記載の装置。
  16. 前記処理回路が前記プログラムカウンタ機能記憶要素の前記第1フィールド内に前記リターン・プログラム・カウンタ値を格納する場合、前記プログラムカウンタ機能記憶要素の残りのフィールドは第3デフォルト値に設定されるように構成されている、請求項15に記載の装置。
  17. 前記第3デフォルト値は、前記プログラムカウンタ機能記憶要素に前記処理回路の最大機能を表させて、前記処理回路による前記リターン・プログラム・カウンタ値の使用が前記プログラムカウンタ機能記憶要素の内容によって制約されないことを保証する、請求項16に記載の装置。
  18. 前記複数の例外レベルは例外レベルの階層として構成され、これにより、前記階層内のより高い例外レベルで実行するソフトウェアが前記階層内のより低い例外レベルで実行するソフトウェアの少なくともいくつかの動作を制限する機能を有し、
    各々の例外レベルについて、前記機能構成情報は、その例外レベルで実行するソフトウェアが、同じ例外レベルとそれ以下の例外レベルとの少なくとも1つで前記命令を実行するときに前記処理回路によって実行される前記動作を制限するために使用される機能を管理できるかどうかをさらに識別するように構成されている、請求項1~17のいずれか一項に記載の装置。
  19. 特定の例外レベルの前記機能構成情報がその特定の例外レベルが機能を管理できないことを識別した場合、少なくとも前記特定の例外レベルが最低の例外レベル以外の例外レベルである場合、その前記特定の例外レベルの前記機能構成情報はさらに、前記特定の例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が、前記機能によって制限されないことを識別する、請求項18に記載の装置。
  20. 前記特定の例外レベルの前記機能構成情報が、その特定の例外レベルが機能を管理できないことを識別する場合、前記特定の例外レベルより低い各例外レベルの前記機能構成情報は、その低い例外レベルが機能を管理できないことを識別し、少なくとも、その下位の例外レベルが最低の例外レベル以外の例外レベルである場合、その下位の例外レベルで命令を実行するときに前記処理回路によって実行される前記動作が、前記機能によって制約されないことをさらに識別する、請求項19に記載の装置。
  21. 命令を実行し、複数の例外レベルで動作可能であり、各々の前記例外レベルが異なるソフトウェア実行特権を有する、処理回路と、前記処理回路にアクセス可能であり、前記命令を実行するときに前記処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、を備えた装置内で機能の使用を管理する方法であって、
    前記方法は、
    機能構成記憶装置内において、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、前記機能構成情報は、各々の前記例外レベルについて、少なくともその例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されるかどうかを識別する、ことと、
    ソース例外レベルから宛先例外レベルへの切り替え動作中に、前記ソース例外レベルと前記宛先例外レベルの少なくとも1つに関連する前記機能構成記憶装置内の前記機能構成情報を使用して、前記処理回路の実行状態が前記切り替え動作中にどのように管理されるかを判定する、ことと、を含む、方法。
  22. 命令を実行し、複数の例外レベルで動作可能であり、各々の前記例外レベルが異なるソフトウェア実行特権を有する、処理手段と、
    前記処理手段にアクセス可能であり、前記命令を実行するときに前記処理手段によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素手段と、
    前記複数の例外レベルのそれぞれについて機能構成情報を識別し、前記機能構成情報は、各々の前記例外レベルについて、少なくともその例外レベルで前記命令を実行するときに前記処理手段によって実行される前記動作が前記機能によって制約されるかどうかを識別する、機能構成記憶手段と、を備え、
    ソース例外レベルから宛先例外レベルへの切り替え動作中に、前記ソース例外レベルと前記宛先例外レベルの少なくとも1つに関連する前記機能構成記憶手段内の前記機能構成情報を使用して、前記処理手段の実行状態が前記切り替え動作中にどのように管理されるかを判定する、装置。
  23. 請求項1~20のいずれか一項に記載の装置に対応する命令実行環境を提供するためのホストデータ処理装置を制御するプログラム命令を含む仮想マシン・コンピュータ・プログラム。
  24. 請求項23に記載の仮想マシン・コンピュータ・プログラムを記憶しているコンピュータ可読記憶媒体。
JP2019558718A 2017-05-05 2018-04-19 機能の使用を管理するための装置および方法 Active JP7128206B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1707182.0A GB2562102B (en) 2017-05-05 2017-05-05 An apparatus and method for managing use of capabilities
GB1707182.0 2017-05-05
PCT/GB2018/051029 WO2018203031A1 (en) 2017-05-05 2018-04-19 An apparatus and method for managing use of capabilities

Publications (2)

Publication Number Publication Date
JP2020518910A JP2020518910A (ja) 2020-06-25
JP7128206B2 true JP7128206B2 (ja) 2022-08-30

Family

ID=59065711

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019558718A Active JP7128206B2 (ja) 2017-05-05 2018-04-19 機能の使用を管理するための装置および方法

Country Status (9)

Country Link
US (1) US11461128B2 (ja)
EP (1) EP3619606B1 (ja)
JP (1) JP7128206B2 (ja)
KR (1) KR102605793B1 (ja)
CN (1) CN110574009B (ja)
GB (1) GB2562102B (ja)
IL (1) IL270245B (ja)
TW (1) TWI781170B (ja)
WO (1) WO2018203031A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2563580B (en) * 2017-06-15 2019-09-25 Advanced Risc Mach Ltd An apparatus and method for controlling a change in instruction set
GB2564130B (en) * 2017-07-04 2020-10-07 Advanced Risc Mach Ltd An apparatus and method for controlling execution of instructions
GB2592069B (en) * 2020-02-17 2022-04-27 Advanced Risc Mach Ltd Address calculating instruction
GB2600715B (en) * 2020-11-05 2023-01-18 Advanced Risc Mach Ltd Technique for constraining access to memory using capabilities
GB2603157B (en) * 2021-01-28 2023-05-03 Advanced Risc Mach Ltd Key capability storage
GB2606355B (en) * 2021-05-04 2023-09-13 Advanced Risc Mach Ltd Technique for constraining access to memory using capabilities
CN115794681B (zh) * 2022-10-12 2023-05-23 中国人民解放军军事科学院国防科技创新研究院 适用于risc-v的多级可扩展tlb系统及其地址转换方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015534689A (ja) 2012-10-01 2015-12-03 エイアールエム リミテッド データ・プロセッサ内の異なる操作ドメイン間を切り替える安全な手段
WO2017032969A1 (en) 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS625441A (ja) * 1985-02-18 1987-01-12 Nec Corp 情報処理装置
US4809160A (en) * 1985-10-28 1989-02-28 Hewlett-Packard Company Privilege level checking instruction for implementing a secure hierarchical computer system
EP1429246A1 (en) * 2002-12-13 2004-06-16 Sun Microsystems, Inc. Apparatus and method for switching mode in a computer system
US8479195B2 (en) * 2007-05-16 2013-07-02 Vmware, Inc. Dynamic selection and application of multiple virtualization techniques
US20090182984A1 (en) 2008-01-11 2009-07-16 International Business Machines Corporation Execute Relative Long Facility and Instructions Therefore
GB2478733B (en) * 2010-03-15 2013-08-14 Advanced Risc Mach Ltd Apparatus and method for handling exception events
GB2482700A (en) * 2010-08-11 2012-02-15 Advanced Risc Mach Ltd Memory access control
GB2483907A (en) * 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
US9116711B2 (en) * 2012-02-08 2015-08-25 Arm Limited Exception handling in a data processing apparatus having a secure domain and a less secure domain
GB2501343A (en) * 2012-02-08 2013-10-23 Advanced Risc Mach Ltd Data processing apparatus and method using secure domain and less secure domain
JP6106765B2 (ja) * 2013-02-05 2017-04-05 エイアールエム リミテッド メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
US9864708B2 (en) 2014-12-16 2018-01-09 Vmware, Inc. Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
GB2535514B (en) * 2015-02-19 2021-09-22 Advanced Risc Mach Ltd Processor exception handling
GB2540206B (en) * 2015-07-10 2018-02-07 Advanced Risc Mach Ltd Apparatus and method for executing instruction using range information associated with a pointer
GB2540944B (en) * 2015-07-31 2018-02-21 Advanced Risc Mach Ltd Vector operand bitsize control
JP2017045303A (ja) * 2015-08-27 2017-03-02 ファナック株式会社 パソコン機能異常時の要因検出が可能な制御装置
US10558582B2 (en) * 2015-10-02 2020-02-11 Intel Corporation Technologies for execute only transactional memory
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers
GB2544996B (en) * 2015-12-02 2017-12-06 Advanced Risc Mach Ltd An apparatus and method for managing bounded pointers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015534689A (ja) 2012-10-01 2015-12-03 エイアールエム リミテッド データ・プロセッサ内の異なる操作ドメイン間を切り替える安全な手段
WO2017032969A1 (en) 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Also Published As

Publication number Publication date
GB201707182D0 (en) 2017-06-21
CN110574009A (zh) 2019-12-13
KR102605793B1 (ko) 2023-11-24
IL270245B (en) 2022-04-01
KR20200005568A (ko) 2020-01-15
TW201843584A (zh) 2018-12-16
US11461128B2 (en) 2022-10-04
US20200133710A1 (en) 2020-04-30
EP3619606A1 (en) 2020-03-11
GB2562102A (en) 2018-11-07
EP3619606B1 (en) 2023-12-27
GB2562102B (en) 2019-09-04
WO2018203031A1 (en) 2018-11-08
JP2020518910A (ja) 2020-06-25
CN110574009B (zh) 2023-09-26
TWI781170B (zh) 2022-10-21

Similar Documents

Publication Publication Date Title
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
JP6902029B2 (ja) 有界ポインタを管理するための装置および方法
US11347508B2 (en) Apparatus and method for managing a capability domain
JP7445431B2 (ja) 命令の実行を制御する装置および方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210412

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220224

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220602

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220818

R150 Certificate of patent or registration of utility model

Ref document number: 7128206

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150