JP2020521222A - 機能に関連付けられるパーミッションを解釈するための装置及び方法 - Google Patents

機能に関連付けられるパーミッションを解釈するための装置及び方法 Download PDF

Info

Publication number
JP2020521222A
JP2020521222A JP2019563392A JP2019563392A JP2020521222A JP 2020521222 A JP2020521222 A JP 2020521222A JP 2019563392 A JP2019563392 A JP 2019563392A JP 2019563392 A JP2019563392 A JP 2019563392A JP 2020521222 A JP2020521222 A JP 2020521222A
Authority
JP
Japan
Prior art keywords
function
permission
permissions
state
default
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
JP2019563392A
Other languages
English (en)
Other versions
JP7280195B2 (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 JP2020521222A publication Critical patent/JP2020521222A/ja
Application granted granted Critical
Publication of JP7280195B2 publication Critical patent/JP7280195B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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/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/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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/324Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address using program counter relative 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3557Indexed addressing using program counter as base address
    • 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

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)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Communication Control (AREA)
  • Selective Calling Equipment (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

機能に関連付けられるパーミッションを解釈するための装置及び方法が提供される。装置は、動作を実施するために命令を実行するための処理回路と、処理回路からアクセス可能であり、命令を実行する際処理回路によって実施される少なくとも1つの動作を制約するために使用される機能を格納するように構成される機能格納要素とを有する。機能は、デフォルトの解釈にしたがって、状態が機能において提供されるN個のパーミッションフラグから決定される複数のN個のデフォルトのパーミッションを特定する。デフォルトの解釈にしたがって、それぞれのパーミッションフラグはデフォルトのパーミッションのうちの1つに関連付けられる。次にN個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、処理回路は代替的な解釈にしたがって機能を分析するように構成され、拡大されたセットは少なくともN+1個のパーミッションを含む。これは必要とされるパーミッションフラグの数を増やすことなく追加的なパーミッションを機能へとエンコードする一方で、所望の挙動はなお保持するためのメカニズムを提供する。【選択図】図1

Description

本技術はデータ処理の分野に関する。
所与の処理についてある機能が定義され、定義された機能以外の動作を実行するような試行があるとエラーをトリガすることができる機能ベースのアーキテクチャに対する興味が高まっている。機能は様々な形態を取ることができるが、機能の一タイプは結合ポインタ(「ファットポインタ」とも称され得る)である。
複数の機能格納要素(例えば、レジスタ)が、データ処理装置の処理回路によるアクセスのための機能を格納するために提供され得る。それぞれの機能は、例えば処理回路の特定のタイプの動作、特定のモードの動作などへの機能の使用を制限するために、機能に関連付けられる1つ又は複数のパーミッションを特定する複数のパーミッションフラグ、を含むことができる。例えば、そのような機能格納要素内の結合ポインタを考えると、このことは、関連付けられるパーミッションを特定する1つ又は複数のパーミッションフラグとともに、処理回路によってアクセス可能なメモリアドレスの非拡張可能な範囲を特定することができる。処理回路は、処理回路に利用可能なあらゆる特定の結合ポインタに関連付けられる範囲を減らす及び/又はパーミッションフラグをクリアするための手順を実行することが許可され得る一方、通常の動作ではその結合ポインタによって処理回路に与えられる機能を増やそうとするべく範囲を拡張すること、又はパーミッションフラグをセットすることはできない。
機能に関連付けられるパーミッションの数は拡張できるようにするが、機能をエンコードするために使用されるビットの数は、例えば機能が格納される機能格納要素のサイズによって、典型的には制約されることが望ましいであろう。
第1の実例の構成において、動作を実施するために命令を実行するための処理回路と、処理回路からアクセス可能であり、前記命令を実行する際、処理回路によって実施される少なくとも1つの動作を制約するために使用される機能を格納するように構成された機能格納要素とを備え、前記機能は、デフォルトの解釈にしたがって、状態が前記機能において提供されるN個のパーミッションフラグから決定される複数のN個のデフォルトのパーミッションを特定し、デフォルトの解釈にしたがってそれぞれのパーミッションフラグはデフォルトのパーミッションのうちの1つに関連付けられ、N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、処理回路は代替的な解釈にしたがって機能を分析するように構成され、拡大されたセットは少なくともN+1個のパーミッションを含む、装置が提供される。
別の実例の構成において、装置において機能に関連付けられるパーミッションを解釈するための方法であって、装置は動作を実施するために命令を実行するための処理回路と、処理回路からアクセス可能であり、前記命令を実行する際、処理回路によって実施される少なくとも1つの動作を制約することにおける使用のための機能を格納するように構成された機能格納要素とを備え、機能は複数のN個のデフォルトのパーミッションを特定し、方法は、デフォルトの解釈にしたがって、デフォルトのパーミッションの状態が前記N個のパーミッションフラグから決定されるように、またそれぞれのパーミッションフラグがデフォルトのパーミッションのうちの1つに関連付けられるように、前記機能内でN個のパーミッションフラグを提供するステップと、N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、代替的な解釈にしたがって機能を分析するステップであって、拡大されたセットは少なくともN+1個のパーミッションを含む、分析するステップとを含む、方法が提供される。
なおさらなる実例の構成において、動作を実施するために命令を実行するための処理手段と、処理回路によるアクセスのための、及び前記命令を実行する際、処理手段によって実施される少なくとも1つの動作を制約するために使用される機能を格納するための機能格納要素手段とを備え、前記機能は、デフォルトの解釈にしたがって、状態が前記機能において提供されるN個のパーミッションフラグから決定される複数のN個のデフォルトのパーミッションを特定し、前記デフォルトの解釈にしたがってそれぞれのパーミッションフラグは前記デフォルトのパーミッションのうちの1つに関連付けられ、N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、処理手段は代替的な解釈にしたがって機能を分析し、拡大されたセットは少なくともN+1個のパーミッションを含む、装置が提供される。
なおさらなる実例の構成において、上で論じた第1の実例の構成の装置に対応する命令実行環境を提供するためのホストのデータ処理装置を制御するためのプログラム命令を含む、仮想マシンコンピュータプログラムが提供される。一実施例おいて、コンピュータ可読記憶媒体は仮想マシンコンピュータプログラムを格納するために提供されてもよい。
本技術は、その実施例を参照して添付の図面に図示されるように、単に実例としてさらに説明される。
一実施例による装置のブロック図である。 関連付けられる範囲情報によって示される範囲の外のアドレスを指定するためにポインタ値が使用される結合ポインタ格納要素のセット内で、そのポインタ値のセット又はポインタ値へのアクセスが試行される場合、エラーがトリガされ得るタイプの命令の実例の図である。 一実施例による、結合ポインタに関連付けられるタグビットの使用を示す図である。 一実施例による結合ポインタ機能内で提供され得るパーミッションビットを、それらのパーミッションビットのデフォルトの解釈とともに示す図である。 デフォルトの解釈が使用されているかどうか、又は代替的な解釈が使用されているかどうかに応じて、修正可能なパーミッションの状態をパーミッションビットからどのように決定し得るかを示すフロー図である。 デフォルトの解釈が使用されているかどうか、又は代替的な解釈が使用されているかどうかに応じて、実行可能パーミッションの状態をパーミッションビットからどのように決定し得るかを示すフロー図である。 デフォルトの解釈が使用されているかどうか、又は代替的な解釈が使用されているかどうかに応じて、特定の読み出しパーミッションの状態をパーミッションビットからどのように決定し得るかを示すフロー図である。 デフォルトの解釈が使用されているかどうか、又は代替的な解釈が使用されているかどうかに応じて、特定の書き込みパーミッションの状態をパーミッションビットからどのように決定し得るかを示すフロー図である。 機能内に格納される実行、読み出し、及び書き込みパーミッションビットから決定される、一実施例における代替的な解釈にしたがって、パーミッションの拡大されたセットの状態を概略的に示す表である。 一実施例において、読み出し、書き込み、及び実行パーミッションビットの状態にある許可される遷移を示す状態遷移図である。 一実施例によるアドレス生成命令を実行する際実施される動作を概略的に示す図である。 一実施例によるリンク命令を伴う分岐の動作を概略的に示す図である。 一実施例による分岐命令の実行を概略的に示す図である。 使用され得る仮想マシンの実装形態を示す図である。
添付の図面を参照して実施例を議論する前に、以下に実施例の説明を与える。
先に言及したように、所与の処理についてある機能が定義され、定義された機能以外の動作を実行するよう試行されるとエラーをトリガすることができる機能ベースのアーキテクチャに対する興味が高まっている。様々なタイプの機能が定義され得るが、機能の一タイプは結合ポインタ(一実施例においてポインタ値、並びに関連付けられる範囲及びパーミッション情報の両方を組み込む)である。
そのような機能ベースアーキテクチャに適合する装置は、典型的には機能を格納するために使用される格納要素(本明細書では結合ポインタ格納要素、又はより一般的に機能格納要素とも称する)を有する。格納要素はレジスタ(本明細書では結合ポインタレジスタ、又は機能レジスタとも称する)であってもよく、及び/又は汎用メモリにおけるメモリ位置、例えば、スタックメモリ上の位置であってもよい。所望の機能にアクセスし、その機能に応じた動作を実施するべく、そのような格納要素を参照するためにある命令が使用され得る。例えば、結合ポインタを考えると、そのような命令の実行により、結合ポインタが検索され、次いでその中のポインタ値について、命令の実行の間に要求されるメモリ内のアドレスを導出するために使用されることを可能にする。ポインタ値はメモリアドレスを特定するために直接使用することができ、又は例えばポインタ値へのオフセットの加算によってメモリアドレスを導出するために使用することができる。次いで、メモリアドレスが範囲情報によって指定される範囲内にあり、またパーミッション情報で指定されるあらゆるパーミッションが満たされていれば、動作は進むことができるようになる。
したがって、結合ポインタを使用する際、ポインタ値自身は、例えば、アクセスされるデータ値若しくは実行のためにフェッチされる命令のアドレスを指し示すことができる、又はそのようなアドレスを決定するために使用することができる。しかしながら、次に例えば、アクセスされるあらゆるアドレスが許容範囲内であり、許可された目的のためにアクセスされることを保証するために、範囲及びパーミッション情報が参照され得る。これは、例えば、ポインタから決定されたアドレスがある境界内に留まり、挙動についてのセキュリティ又は機能的な正常性を維持することを保証するために有用であり得る。そのような手法によって、処理回路によってなされるメモリアクセスを効果的に取り締まることが可能である。
典型的な実装形態において、それぞれのパーミッションの状態は機能内の関連付けられるパーミッションフラグによって示され得、この時対応するパーミッションの状態を特定するためにフラグはセット状態又はクリア状態にある。パーミッションフラグがクリアである時、これは典型的には関連付けられるパーミッションがクリア状態にあることを意味しており、また処理回路がそのパーミッションを対象の機能について無効にすることを示している。逆に、パーミッションフラグがセットされている時、これは関連付けられるパーミッションがセット状態を有することを意味すること、ひいては処理回路が機能についてのそのパーミッションが付与され得ることを意味することができる。しかしながら、一実施例において、処理回路が実際にそのパーミッションを付与されているかどうかを判断する前に他の制御情報を参照することがなお必要であり得、ひいては関連付けられるパーミッションフラグによって特定されるパーミッションについてのセット状態を、あらゆるオーバーライド制御情報にしたがって処理回路が対象の機能についてそのパーミッションを付与されていることを示すために使用することができる。
個々の機能についてより多くの数のパーミッションを指定できるようにすることが望ましいであろうし、そのためある手法により機能の使用において向上した柔軟性が可能となるであろう。しかしながら、空間をエンコードする機能は典型的には非常に制約されている。例えば、結合ポインタの実例を考えると、結合ポインタ機能はまたポインタ値及び関連付けられる範囲を示す情報を指定することができる必要があり、したがってパーミッションフラグの指定のために残されるビット数は、機能にさらなるパーミッションフラグを単に追加し続けることが可能ではないことを意味し得る。
本明細書で説明される実施例は、そのような状況において機能に関連付けられるパーミッションの数を拡張できるようにする効率的なメカニズムを提供する。
特に、一実施例において、動作を実施するために命令を実行するための処理回路と、処理回路からアクセス可能であり、命令を実行する際処理回路によって実施される少なくとも1つの動作を制約するために使用される機能を格納するように構成される機能格納要素とを有する装置が提供される。機能は、デフォルトの解釈にしたがって、状態が機能において提供されるN個のパーミッションフラグから決定される複数のN個のデフォルトのパーミッションを特定することができる。デフォルトの解釈にしたがって、それぞれのパーミッションフラグはデフォルトのパーミッションのうちの1つに関連付けられてもよい。そのため、パーミッションフラグとデフォルトのパーミッションとの間に1:1の対応関係があってもよい。
しかしながら、説明される実施例によると、N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、処理回路は代替的な解釈にしたがって機能を分析するように構成され、拡大されたセットは少なくともN+1個のパーミッションを含む。
そのような手法によって、機能に関連付けられるパーミッションの数を、パーミッションフラグの数を増やすことなく、拡張することが可能である。さらには、同一のパーミッションフラグがデフォルトの解釈及び代替的な解釈の両方をサポートするように使用することができるため、手法は非常に柔軟なメカニズムを提供する。したがってその機能について、デフォルトの解釈及び代替的な解釈の両方をサポートするシステム内で使用することができるだけでなく、それらの解釈のうちの1つだけをサポートするシステムにおいても使用することができる。例えばこのことは、デフォルトの解釈だけをサポートする処理回路の事例でも機能を使用させることによって、後方互換性を与えることができる。
パーミッションの拡大されたセットは様々な形態を取ることができるが、一実施例において、複数のN個のデフォルトのパーミッション、及び少なくとも1つの追加的なパーミッションを含む。したがって、これによりN個のパーミッションフラグの代替的な解釈の使用を通じて、機能について少なくとも1つの「新しい」パーミッションが推論される。「新しい」パーミッションは機能ベースのアーキテクチャ内で以前に与えられたものではないパーミッションであり得るか、又は個々の機能についてセット若しくはクリアされ得るパーミッションではなく、よりグローバルなスケールで以前に与えられただけのパーミッションであり得る。
一実施例において、パーミッションの拡大されたセットは、クリア状態にある場合、機能が1つ又は複数の機能修正命令によって修正不可能であることを特定する、修正可能なパーミッションを含む。そのような手法によって、個々の機能を修正不可能であるとしてマークすることができ、それによって特定の状況において向上したセキュリティを与えることができる。
一実施例において、修正可能なパーミッションはセット状態にある場合、修正を妨げるあらゆるオーバーライド制御情報にしたがって、機能に与えられたN個のパーミッションフラグをセット値からクリア値へ遷移させることができる。いくつかの事例において、オーバーライド制御情報がない場合があり、したがってセット状態にある場合、修正可能なパーミッションはパーミッションフラグがセット値からクリア値に遷移できることを直接示す。しかしながら、他の実施例において、セット状態にある修正可能なパーミッションが本当にパーミッションフラグを選択的にクリアさせるかを確認できる前に、参照される必要がある追加の制御情報があってもよい。
機能に関する一般的な実践と一貫して、機能によってアクティビティが制約される処理は、修正可能なパーミッションがセット状態にある場合でもクリアされたパーミッションフラグをセット値に復元するやり方で機能を修正することはできない。この理由のため、修正可能なパーミッションがセット状態にある場合、これによってパーミッションフラグをセット値からクリア値に遷移させることができるが、クリアであるパーミッションフラグをセット値に変更することはできない。
パーミッションフラグの値を変える能力を参照して修正可能なパーミッションをセットすることについて説明してきたが、修正可能なパーミッションは機能内の他のフィールドに影響することがある。例えば、機能が修正されることを妨げる他のメカニズムにしたがって、修正可能なパーミッションがセット状態にある場合、機能は一般的な機能修正命令によって修正することができ、これによって例えばパーミッションフラグをクリアすること、結合を減らすこと、及び/又はポインタ値のアドレスを変更することができ、この事例においては機能が結合ポインタであると仮定している。
デフォルトのパーミッションは様々な形態を取ることができるが、一実施例において、クリア状態にある場合機能がメモリ内のデータにアクセスするような1つ又は複数のメモリアクセス動作によって使用されることを妨げられていることを特定するための1つ又は複数のメモリアクセスパーミッションと、及びクリア状態にある場合プログラムカウンタ機能を形成する際機能がメモリから命令をフェッチするために使用されることを妨げられていることを特定するための実行可能パーミッションとを含む。したがってこれらのデフォルトのパーミッションを使用してメモリアドレス空間にアクセスしようとする動作を制約することができる。
1つ又は複数のメモリアクセスパーミッションは様々な形態を取ることができるが、一実施例において、機能がメモリへの書き込み動作の少なくとも1つのタイプを実施するために使用されることを妨げられているかどうかを特定するための少なくとも1つの書き込みパーミッション、及び機能がメモリからの読み出し動作の少なくとも1つのタイプを実施するために使用されることを妨げられているかどうかを特定するための少なくとも1つの読み出しパーミッションを含む。したがって、読み出し及び書き込み動作について別個のパーミッションが提供され得、実際複数の書き込みパーミッション及び/又は複数の読み出しパーミッションを指定することができる。複数のパーミッションの使用は、例えば書き込み又は読み出し動作が、あるタイプの命令を実行する時は実施され得るがそれ以外では実施され得ないこと、処理回路が一部のモードで動作している時は実施され得るがそれ以外では実施され得ないことを特定するために使用することができ、及び/又は読み出し若しくは書き込みの可用性が、読み出されるか若しくは書き込まれる情報に依存することを指定することができる。例えば、別個の読み出し及び書き込みパーミッションは、読み出されるか若しくは書き込まれる情報それ自身が機能である状況、又は代わりに標準的なデータ値である状況について指定することができる。
デフォルトのパーミッションが実行可能パーミッションを含む実施例において、パーミッションの拡大されたセットは少なくとも先に説明した修正可能なパーミッションの追加を含み、その時N個のパーミッションフラグの代替的な解釈にしたがって機能は実行可能パーミッション及び修正可能なパーミッションの両方を同時にセット状態にすることを妨げられることがある。代わりに、パーミッションフラグの値のある遷移によって、実行可能パーミッションをセット状態からクリア状態に遷移させることができる一方、修正可能なパーミッションがクリア状態からセット状態に変わり、その逆もあり得る。
一実施例において、N個のパーミッションフラグは少なくとも1つの書き込みビット、少なくとも1つの読み出しビット、並びにデフォルトの解釈にしたがって、値が少なくとも1つの書き込みパーミッション、少なくとも1つの読み出しパーミッション、及び実行パーミッションの状態をそれぞれ特定する実行ビットを含む。そのような一実施例において、代替的な解釈にしたがって処理回路は、少なくとも1つの書き込みビットがセットされている場合、又は実行ビットがクリアである場合、修正可能なパーミッションがセット状態にあると決定するように構成される。このことは修正可能なパーミッションがいつ特定の機能についてセット状態にあるかを指定できることについてかなりの柔軟性を与える。
デフォルトの解釈にしたがって、それぞれのパーミッションフラグと関連付けられるデフォルトのパーミッションとの間に典型的には1:1の対応関係がある一方、一実施例において、代替的な解釈にしたがってパーミッションフラグを解釈する際これはあてはまらない。代わりに、代替的な解釈が使用される際はパーミッションフラグの論理組み合わせを使用してデフォルトのパーミッションのうちの少なくとも1つの状態を決定する。
例えば、一実施例において、代替的な解釈にしたがって処理回路は、実行ビットがセットされており少なくとも1つの書き込みビットのすべてがクリアである両方の場合、実行可能パーミッションがセット状態にあることを決定するように構成される。したがって代替的な解釈によると、実行可能パーミッションがセット状態にあることを決定するために実行ビットを単にセットするだけでは十分ではなく、代わりに機能内に与えられるあらゆる書き込みビットもクリアであることがやはり必要である。機能にメモリの同一エリアについて書き込みパーミッションをセットすること、及び実行可能パーミッションをセットすることの両方を許可することは一般的には望ましくないと考えられるため、このことは利用可能なN個のパーミッションフラグ内でエンコードされるパーミッションの拡大されたセットを可能にする特定の効率的なエンコードを提供し、提案されたエンコードにしたがうとこの選択肢は妨げられる。
一実施例において代替的な解釈を使用する場合、読み出しパーミッションはまた関連付けられる読み出しビットだけではなく、追加的な情報を使用して解釈される。特に、それぞれの読み出しパーミッションについて、代替的な解釈によると、処理回路は関連付けられる読み出しビットがセットされている場合その読み出しパーミッションがセット状態にあること、及び、修正可能なパーミッションがセット状態にあること又は機能がプログラムカウンタ機能として使用されていることのいずれかであることを決定するように構成することができる。したがって、一般的に代替的な解釈によるとあらゆる読み出しパーミッションが付与されるために修正可能なパーミッションがセット状態にあることが必要である。しかしながら、機能が非修正可能な特定の一実例、特に機能がプログラムカウンタ機能として使用されている特定の一実例においては選択的な読み出し可能性が与えられてもよい。その実例において、機能は実行可能且つ非修正可能であるとしてマークすることができるが、機能がプログラムカウンタ機能にある間、特定の状況において関連付けられる読み出しビットに応じて、なお読み出し可能とすることができる。
デフォルトの解釈及び代替的な解釈の両方において、パーミッションフラグの状態を遷移させることによってパーミッションに変化がもたらされる。先に言及したように、機能を変更するためのパーミッションが処理に与えられる場合、一般的には機能の制約を緩和するやり方ではなく追加的な制約を推論するやり方でそれを変更することしかできない。パーミッションに関して、このことは一般的には処理がパーミッションフラグをセットするのではなくクリアすることしかできないことを意味しており、したがって、パーミッションフラグのうちの1つ又は複数をクリアすることを通じてパーミッションの遷移が起こる。様々なパーミッションの状態を決定するために代替的な解釈にしたがってパーミッションフラグの論理組み合わせが使用されるため、1つ又は複数のパーミッションフラグをクリアすることによってパーミッションのうちの少なくとも1つをセット状態へ移すことが可能である。例えば、実行フラグをクリアすることによって修正可能なパーミッションをセット状態に移すことができる。
あるパーミッションフラグの値における遷移が、やはりある命令の処理に関連付けられることができる。例えば、一実施例において、プログラムカウンタ機能から結果機能を生成するためにアドレス生成命令を実行することに応じて、処理回路は結果機能内で実行ビットをクリアするように構成することができる。これによって実践において非常に有用であり得るいくつかの興味深い挙動の変化をもたらすことができる。例えば、プログラムカウンタ機能として使用されている間、実行可能であるが非修正可能である機能は、その後修正可能である汎用機能レジスタに格納される結果機能を生成するために使用され得ることを意味し得る。例えば1つ又は複数の読み出しパーミッションビットに応じて、次いで読み出し可能であることもできる。特に、一実施例において、プログラムカウンタ機能が実行ビット及び少なくとも1つの書き込みビットのすべてをクリアさせる場合、結果機能の実行ビットをクリアすることによって結果機能は、代替的な解釈にしたがって、セット状態にあるその修正可能なパーミッション及び関連付けられる読み出しビットによって示される状態にあるそれぞれの読み出しパーミッションの両方を有すると考えられる。
1つ又は複数の特定のタイプの命令を実行する際パーミッションがどのように管理され得るかの別の実例として、プログラムカウンタ機能内で修正可能なパーミッションがクリア状態にある場合、リターンアドレス機能がやはりクリア状態にあるその修正可能なパーミッションを有するように、処理回路はプログラムカウンタ機能からリターンアドレス機能を生成するためにリンク命令を伴う分岐を実行することに応答的であり得る。そのような手法によって、非修正可能なリターンアドレス機能を作成することが可能であり、それによって向上したセキュリティを与えることができる。
一実施例において、装置は1つ又は複数の汎用機能格納要素及びプログラムカウンタ機能格納要素を有することができる。そのような一実施例において、前記1つ又は複数の汎用機能格納要素のうちの1つに格納される機能が実行ビットをセットし、読み出しビットのうちの少なくとも1つをセットし、及び少なくとも1つの書き込みビットのすべてをクリアする場合、処理回路は代替的な解釈にしたがって、プログラムカウンタ機能格納要素に格納されることになる新しいプログラムカウンタ機能を形成するために前記機能だけを使用するよう制約される。しかしながら、前記機能がプログラムカウンタ機能格納要素に格納されると、代替的な解釈にしたがって新しいプログラムカウンタ機能はセット状態において、関連付けられる読み出しビットがセットされているそれぞれの読み出しパーミッションを有すると見なされ、それによって処理回路によりリテラル値がメモリから読み出されることを可能にする。したがって、タスクに後々分岐命令を実行する際分岐するために使用することだけができる機能を割り当てることができ、ひいては機能は別のルーチンへのエントリポイントとして使用することだけができる。しかしながら、分岐が起こり、その機能がプログラムカウンタ機能にロードされると、次いでその他のルーチンは、例えばリテラル値を、例えばプログラムカウンタ機能を参照してアドレスを生成するロード命令を使用してメモリから読み出すことを可能にすることによって、その機能を他のことに利用することができる。
一実施例において、処理回路はいつも代替的な解釈を使用するよう構成することができる。しかしながら、さらなる実施例において、デフォルトの解釈と代替的な解釈とのどちらが処理回路によって適用されるかを示すために使用される設定値を格納する設定記憶要素が提供されてもよい。したがって、このことが時間の経過とともに所望のようにデフォルトの解釈と代替的な解釈と間でスイッチングすることを可能とするメカニズムを与える。
上述のパーミッションは装置によって使用される様々な異なるタイプの機能に関連付けられ得るが、一実施例において、機能は結合ポインタであり、パーミッションは機能内で指定されるポインタ値の処理回路による使用を制御するために使用される。
次に、図面を参照して特定の実施例を説明する。
図1は処理命令のための処理パイプライン4を備えるデータ処理装置2の実例を概略的に図示している。この実例において、処理パイプライン4は、フェッチ工程6、デコード工程8、発行工程10、実行工程12、及びライトバック工程14を含む複数のパイプライン工程を含むが、工程の他のタイプ又は工程の組み合わせが提供されてもよいことを了解されたい。例えば、いくつかの実施例ではレジスタのリネームを実施するためのリネーム工程を含むことができる。処理されることになる命令が工程から工程へと移動し、命令がある工程で待ち状態にある間、別の命令はパイプライン4の異なる工程で待ち状態にあってもよい。
フェッチ工程6はレベル1(L1:Level 1)の命令キャッシュ20から命令をフェッチする。フェッチ工程6は普通、連続する命令アドレスから逐次に命令をフェッチすることができる。しかしながら、フェッチ工程はまた分岐命令の結果を予測するための分岐予測器22を有することがあり、フェッチ工程6は、分岐すると予測される場合は(非逐次の)分岐ターゲットアドレスから、又は分岐しないと予測される場合は次の連続するアドレスから、命令をフェッチすることができる。分岐予測器22は、ある分岐が取られそうか、又は取られそうにないかを予測するための情報を格納するための1つ又は複数の分岐履歴テーブルを含むことができる。例えば分岐履歴テーブルは、前に実行された分岐の実際の結果を追跡するための、又は分岐についてなされた予測についての信頼度を表すカウンタを含むことができる。分岐予測器22はまた分岐命令の前のターゲットアドレスをキャッシュするための分岐ターゲットアドレスキャッシュ(BTAC:Branch Target Address Cache)24を含むこともでき、それによって後に同一の分岐命令と遭遇した際、これらが予測され得る。
フェッチされた命令は命令をデコードしてデコード命令を生成するためのデコード工程8に渡される。デコード命令は適当な処理演算を実行するために実行工程12を制御するための制御情報を含むことができる。キャッシュ20からフェッチされたいくつかのより複雑な命令について、デコード工程8はこれらの命令を複数のデコード命令にマッピングすることができ、これはマイクロ命令(μop又はuop)として知られ得る。したがって、L1の命令キャッシュ20からフェッチされた命令とパイプラインの後方の工程で見られる命令との間には1対1関係がなくてもよい。一般的には、本出願における「命令」との称し方はマイクロ命令を含むものとして解釈するべきである。
デコード命令は発行工程10に渡され、発行工程10は命令の実行に必要なオペランドが利用可能かどうかを判断し、オペランドが利用可能であれば実行のため命令を発行する。いくつかの実施例はインオーダー処理をサポートしていることがあり、それによって、命令がL1の命令キャッシュ20からフェッチされたプログラム順序に対応する順序での実行のために、命令が発行される。他の実施例はアウトオブオーダー実行をサポートしていることがあり、それによって命令は、プログラムの順序とは異なる順序で実行工程12に発行され得る。前方の命令がオペランドを待ってストールしている間、オペランドが利用可能であるプログラムの順序において後方の命令を先に実行できるため、アウトオブオーダー処理はパフォーマンスを改善するために有用であり得る。
発行工程10は命令を実行工程12に発行し、実行工程12において命令は様々なデータ処理演算を実行するために、実行される。例えば、実行工程は、整数値に対して算術又は論理演算を実行するための算術/論理ユニット(ALU:Arithmetic/Logic Unit)30、浮動小数点形式で表現される値に対して演算を実行するための浮動小数点(FP:Floating−Point)ユニット32、及びレベル1(L1)のデータキャッシュ36からのデータ値をレジスタ40にロードするためのロード演算、又はレジスタ40からのデータ値をL1のデータキャッシュ36に格納するためのストア演算を実行するためロード/ストアユニット34を含む複数の実行ユニット30、32、34を含むことができる。これらは、提供され得る実行ユニットのいくつかの実例のタイプに過ぎず、多くの他の種類がやはり提供され得ることを了解されたい。処理演算を実行するために、実行工程12はデータ値をレジスタ40のセットから読み出すことができる。実行された命令の結果は次いでライトバック工程14によってレジスタ40に書き戻すことができる。
L1の命令キャッシュ20及びL1のデータキャッシュ36は、複数のレベルのキャッシュを含むキャッシュヒエラルキーの一部であってもよい。例えば、レベル2(L2:Level 2)のキャッシュ44がやはり提供され得、任意選択でさらなるレベルのキャッシュが提供されてもよい。この実例において、L2のキャッシュ44はL1の命令キャッシュ20とL1のデータキャッシュ36との間で共有されるが、他の実例では別個のL2の命令及びデータキャッシュを有することができる。フェッチされることになる命令がL1の命令キャッシュ20にない場合、L2のキャッシュ44からフェッチすることができ、同様に命令がL2のキャッシュ44にない場合、メインメモリ50からフェッチすることができる。同様に、ロード命令に応答して、データはL1のデータキャッシュ36にない場合L2のキャッシュ44からフェッチすることができ、必要に応じてメモリ50からフェッチすることができる。あらゆる既知のスキームがキャッシュヒエラルキーを管理するために使用され得る。
プログラム命令及びデータ値を参照するためにパイプライン4によって使用されるアドレスは、仮想アドレスであってもよいが、少なくともメインメモリ50、また任意選択でやはり少なくともキャッシュヒエラルキーのいくつかのレベルは、物理的にアドレッシングされ得る。したがってトランスレーション・ルックアサイド・バッファ(TLB:Translation Lookaside Buffer)52が、パイプライン4によって使用される仮想アドレスを、キャッシュ又はメモリにアクセスするために使用される物理アドレスにトランスレートするために与えられてもよい。例えば、TLB52はそれぞれが仮想アドレス空間の対応するページの仮想ページアドレスを指定する複数のエントリを含むことができ、仮想ページがアドレッシングする対応する物理ページアドレスは、対応するページ内の仮想アドレスを物理アドレスにトランスレートするためにマッピングされるべきである。例えば、仮想及び物理ページアドレスは対応する仮想及び物理アドレスの最上位部分に対応することができ、この時残りの最下位部分は仮想アドレスを物理アドレスにマッピングする際変更されないままである。アドレストランスレーション情報と同様に、それぞれのTLBエントリはまた、アドレスのあるページがパイプライン4のあるモードでアクセス可能かどうかを示すことなどのアクセスパーミッションを指定するいくつかの情報を含むことができる。いくつかの実施例において、TLBエントリはまた、キャッシュヒエラルキーのどのレベルが読み出し若しくは書き込み動作に応じて更新されるかを定義するキャッシュポリシ情報(例えば、キャッシュがライトバック又はライトスルーモードで動作すべきであるかどうか)、又は対応するページ内のアドレスへのデータアクセスがメモリシステムによって、データアクセスがパイプライン4によって発行された順序と比べてリオーダすることができるかどうかを定義する情報、などのアドレスの対応するページの他のプロパティを定義することができる。
図1が単一のレベルのTLB52を示す一方、TLBのヒエラルキーがレベル1(L1)のTLB52が複数の最近アクセスされたページ内のアドレスをトランスレートするためのTLBエントリを含み得るように提供され得、またレベル2(L2)のTLBがより多くのページについてのエントリを格納するために提供され得ることを了解されたい。必要とされるエントリがL1のTLBに存在しない場合、L2のTLBから、又はヒエラルキー内のさらなるTLBからフェッチすることができる。アクセスされることになるページについて必要とされるエントリがTLBのうちいずれにもない場合、メモリ50のページテーブルにアクセスするためにページテーブルウォークを実施することができる。本技術では、あらゆる既知のTLB管理スキームを使用することができる。
また、いくつかのシステムは複数のレベルのアドレストランスレーションをサポートすることができ、それによって、例えば、第1の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の上部で示すように、特定の結合ポインタレジスタPR(Pointer Register)1は所与のポインタ値62及び範囲情報64を含み、この実例においては許容範囲の下位境界を定義する下位境界アドレス68、及び許容範囲の上位境界を定義する上位境界アドレス69を使用して指定されている。例えば、境界68、69はアドレスの範囲80000から81000を定義するために設定される。ある命令が結合ポインタレジスタPR1を参照し、ポインタ62から決定されるアドレスがこの範囲の外にある場合、エラーがトリガされ得る。
例えば、図2のパートAで示されるように、いくつかのシステムではポインタレジスタ60内のポインタ62の値を範囲情報64によって指定される範囲の外にある値に設定しようとする試行があるとエラーがトリガされ得る(ここではポインタがアドレスを直接指定すると仮定している)。これはポインタ62が指定された範囲の外のあらゆる値を取ることを回避し、それによって、そのポインタを使用するあらゆるアクセスが許可された範囲内で安全に存在することを保証することができる。代替的に、図2のパートBで示されるように、命令がポインタ62のアドレスによって特定される位置にアクセスしようと試行すると、その時そのアドレスが指定された範囲の外にある場合、エラーがトリガされ得る。したがって、ポインタ62を指定された範囲の外の値に設定することがなお許容され得るが、そのポインタアドレス(又はそのポインタから導出されるアドレス)においてデータアクセスが試行されると、その時そのアドレスが許可された範囲の外にある場合、エラーがトリガされ得る。図2のパートA及びBに示される両方のタイプの命令に応じて、他のシステムがエラーをトリガすることもある。
範囲64及びパーミッション66情報は異なる方法で設定することができる。例えば、セキュアなコード、又はオペレーティングシステム若しくはハイパーバイザは、所与のポインタについて許可される範囲及びパーミッションを指定することができる。例えば、命令セットアーキテクチャは、所与のポインタ62についての範囲情報64及び/又はパーミッション66を、設定するための又は修正するための複数の命令を含むことができ、これらの命令の実行はあるソフトウェア、又はプロセッサ4のあるモード若しくはある例外レベルに制限することができる。しかしながら、機能を修正するためのそのような特権ベースのメカニズムに加えて、又はその代替として、本明細書で説明される実施例において、修正可能なパーミッションを個々の機能について導出することができる。したがって、一実例の構成において、機能を修正するための能力は、その機能についての修正可能なパーミッションがセット状態にあるかどうか、又はその機能を修正しようとする処理が必要とされる特権を有しているかどうかに依存する。代替的に、機能を修正することを許可する前に、修正可能なパーミッションがセット状態にあり、且つその機能を修正しようとする処理が必要とされる特権を有していることの両方が要求されることもある。
ポインタへの参照を行うある命令を実行する際に実行状態12で使用され得る結合ポインタ格納要素60のセットに加えて、プログラムカウンタ機能(PCC:Program Counter Capability)レジスタ80が、命令がレベル1の命令キャッシュ20からフェッチされる際、フェッチ工程6で類似の機能性を提供するためにやはり使用されてもよい。特に、プログラムカウンタポインタはフィールド82に格納され得、この時PCC80はまた、結合ポインタ格納要素60のセット内のポインタのそれぞれに与えられる範囲及びリストリクション情報と同様に、範囲情報84及び適当なリストリクション情報86を与える。
結合ポインタレジスタ内の結合ポインタによって特定されるメモリアドレスのあらゆる特定の範囲は、データ、命令、及び/又は他の機能(すなわち、他の結合ポインタ)を含むことができる。したがって、時間的なあらゆるポイントにおいて、メモリへアクセスするための処理回路の能力は、結合ポインタレジスタにおいて特定される機能及びそれらの結合ポインタレジスタで保持される機能を介してアクセス可能なあらゆるさらなる機能を含む機能のセットによって定義され、本明細書においては機能のこのセットを機能ドメインと称することを了解されたい。
PCCレジスタ80内で指定される範囲情報及びあらゆる関連付けられるリストリクションは様々な方法で設定することができる。しかしながら、一実施例において、その情報は現在の機能ドメインでその処理回路に利用可能な結合ポインタの1つ又は複数を使用して決定され、それによって、現在の機能ドメインについて特定されたメモリアドレス範囲(複数可)の外にあるPCCベースの結合チェックを使用してアクセスできるメモリアドレスはない。
図3は、タグビットが個々のデータブロックに関連付けられて、これらのデータブロックが機能を表しているかどうか(すなわち、結合ポインタ及び関連付けられるリストリクション情報)、又は通常データを表しているかどうかを特定するためにどのように使用されるか概略的に図示している。特に、メモリアドレス空間110は、典型的には指定されたサイズを有する一連のデータブロック115を格納することになる。純粋に図示のために、この実例において、それぞれのデータブロックは128ビット含むと仮定する。それぞれのデータブロック115に関連して、タグフィールド120が提供され、一実例において、タグフィールド120はタグビットと称される単一のビットフィールドであり、関連付けられるデータブロックが機能を表すことを特定するために設定され、関連付けられるデータブロックが通常データを表し、ひいては機能として取り扱うことができないことを示すためにクリアされる。セットされた又はクリアな状態に関連付けられる実際の値は、実施例に応じて異なっていてよいが、純粋に図示のため、一実施例においては、タグビットが値1を有する場合、関連付けられるデータブロックが機能であることを示し、タグビットが値0を有する場合は関連付けられるデータブロックが通常データを含むことを示すことを了解されたい。
機能が、図3で示される機能レジスタ100などの結合ポインタレジスタ(本明細書では機能レジスタとも称する)60のうちの1つにロードされると、次にタグビットは機能情報を伴って移動する。したがって、機能が機能レジスタ100にロードされると、ポインタ102、範囲情報104及びリストリクション情報106(以降でパーミッション情報と称する)が機能レジスタにロードされることになる。加えて、その機能レジスタに関連して、又はその中の特定のビットフィールドとして、タグビット108はその内容が機能を表すことを特定するためにセットされることになる。同様に、機能がメモリに格納し戻される場合、関連するタグビット120は機能が格納されるデータブロックに関連付けられてセットされることになる。そのような手法によって、機能と通常データとを区別し、ひいては通常データを機能として使用することができないことを保証することが可能である。
先に議論したように、個々の機能に関連付けられるパーミッションの数を、必要とされるパーミッションフラグの数における増加は伴わず、増やすことが望ましいであろう。特に、機能内のエンコード空間はしばしば需要が大きく、エンコードするために望ましいであろうそれぞれの追加的なパーミッションのためのさらなるパーミッションフラグを追加するための十分な空間がないことがある。
図4は実例として結合ポインタを考慮した、既存の機能内に与えられ得るパーミッションフラグの実例を与える。結合ポインタ機能150はポインタ値を格納するためのポインタフィールド155、及びポインタフィールド155内のポインタ値を使用してアクセスされ得るアドレスの許容範囲を特定するための範囲情報を格納するための範囲フィールド160を含む。次いで、複数のパーミッションフィールド165が、1つ又は複数のパーミッションフラグを格納するために用意され得る。説明される実施例において、それぞれのパーミッションフラグはセット又はクリアすることができる単一のビット値の形態を取る。説明される実施例のために、機能150は1つ又は複数の書き込みパーミッション、1つ又は複数の読み出しパーミッション、及び実行可能パーミッションを有し、複数のパーミッションビットがそれらの様々なパーミッションに対応するフィールド165内で与えられることを仮定する。したがって、C個の異なる書き込みパーミッション及びB個の異なる読み出しパーミッションがあり得る一般的な状況を考慮すると、C個の書き込みパーミッションビットWからWC−1が与えられることができ、またB個の読み出しパーミッションビットRからRB−1がやはり与えられることができる。それぞれの読み出し又は書き込みパーミッションは、プロセッサの特定のタイプの動作又は特定のモードの動作に関連付けられることができ、或いは実際に異なるパーミッションがアクセスされる異なるタイプの情報に関連付けられることができ、それによって例えばアクセスされる情報がそれ自身機能であるか、又は通常のデータ値であるかどうかに応じて、異なる書き込み及び読み出しパーミッションがセットされ得る。図示する目的のために対応する読み出し及び書き込みパーミッションに関連付けられる複数の読み出し及び書き込みパーミッションビットがあることを仮定してきたが、代替の実施例において単一の読み出しパーミッション及び単一の書き込みパーミッションがあってもよく、この時これらの読み出し及び書き込みパーミッションの状態は単一の読み出しパーミッションビット及び単一の書き込みパーミッションビットによって表される。
図4に示されるように、追加的なパーミッションが機能内でエンコードされてもよく、ひいては例えば実行可能パーミッションが関連付けられている実行(X)ビットの値によって示されてもよい。
パーミッションフィールド165内のパーミッションビットのデフォルトの解釈によると、それぞれのパーミッションビットは対応するパーミッションに関連付けられており、ひいてはその関連付けられるパーミッションの状態を直接特定する。図4ではこのことがさらに図示されている。それによると、パーミッションビットWが設定されると、これは書き込みパーミッションiがセット状態にあること、ひいてはフィールド155内のポインタ値が、あらゆるオーバーライド制御情報にしたがって、タイプiの書き込み動作のためのアドレスを特定するために使用することができることを示している。同様に、パーミッションビットRが設定されると、これは読み出しパーミッションjがセット状態にあること、ひいてはポインタ値が、あらゆるオーバーライド制御情報にしたがって、タイプjの読み出し動作のためのアドレスを特定するために使用することができることを意味している。最後に、実行ビットXが設定されると、これは実行可能パーミッションがセット状態にあること、ひいてはポインタ値が、やはりあらゆるオーバーライド制御情報にしたがって、命令をフェッチしてくるアドレスを特定するために使用することができることを意味している。
逆に、関連付けられるパーミッションビットがクリアされる場合、これは関連付けられるパーミッションがその機能について無効にされること、ひいてはそのパーミッションに関連付けられるタイプのアクセスが関連付けられている機能を使用して実施することができないことを意味している。
以降で説明される実施例において、同一のパーミッションビットが保持されるが、パーミッションの拡大されたセットについての状態を導出するために異なって解釈され得る。特に、代替的な解釈によりパーミッションビットの論理組み合わせを使用してパーミッションの増えたセットの状態を特定する。一実施例において、パーミッションの増えたセットは図4を参照して実例として議論した書き込み、読み出し、及び実行可能パーミッションのすべて、すなわちW、R、及びXパーミッションビットのデフォルトの解釈による利用可能なパーミッションを含むが、加えて少なくとも1つのさらなるパーミッションがまたそれらW、R、及びXパーミッションビットの値から導出可能である。特に、一実施例において、修正可能なパーミッションはまた、あらゆる追加的なパーミッションビットを指定する必要なく、機能に関連付けられて与えられる。
一実施例において、修正可能なパーミッションの状態が上述のパーミッションビットから決定されるやり方が、図5のフロー図を参照して図示されている。ステップ200において、代替的な解釈が使用されているかどうかが判断され、そうではない場合、これはデフォルトの解釈を適用していることを意味しており、処理はステップ205へ分岐する。デフォルトの解釈によると、修正可能なパーミッションは存在しない。代わりに、あらゆる機能を修正するための能力はどこかで制御情報によって定義され、それぞれの機能内のパーミッションビットを使用して機能ごとに定義されない。
しかしながら、代替的な解釈が使用されている場合、処理はステップ210に進み、Wビットのうちの少なくとも1つがセットされているかどうか判断される。そうであれば、処理はステップ220に進み、修正可能なパーミッションがセット状態にあると決定される。そのため、これは機能がある機能修正命令によって、他の制御状態がそのような修正を妨げない限り、修正できることを意味している。例えば、パーミッションビットから決定された修正可能なパーミッションが修正されることを妨げられないことを示すのにも関わらず、特定の機能が修正できないことを意味するいくつかの一般的なオーバーライド制御情報が、なおあり得る。
ステップ210において、どのWビットもセットされていないと決定される場合、ステップ215において実行ビットをクリアするかどうかを決定する。実行ビットがクリアされる場合、このことはやはり修正可能なパーミッションがセット状態にあることを示し、それに応じて処理はステップ220に分岐する。しかしながら、実行ビットがセット状態にある場合、処理はステップ225に進み、修正可能なパーミッションがクリア状態にあると決定される。修正可能なパーミッションがクリア状態にある場合、これは関連付けられている機能が修正できないことを意味している。したがって、これによって個々の機能を非修正可能であるとしてマークすることができ、機能ベースのアーキテクチャ内で向上したセキュリティを与えることができる。
さらには、機能内のあるパーミッションビットの値を変更して修正可能な状態から非修正可能な状態に変更することが可能であるため、代替的な解釈を使用すると柔軟性が向上される。さらには、特別な状況下で、例えば後に図11を参照して実例として議論するように、あるアドレス生成命令の使用を通じて、非修正可能な機能を修正可能な機能へ変換することが可能であり得る。
デフォルトの解釈を使用する場合、個々のパーミッションビットと関連付けられるパーミッションとの間に1:1の対応関係があったが、代替的な解釈にしたがうと、これはあてはまらず、パーミッションビットの論理組み合わせを使用して特定のパーミッションの状態を決定することができる。図6は例えばデフォルトの解釈又は代替的な解釈が使用されているかどうかに応じて、実行可能パーミッションの状態がどのように評価され得るかを図示している。
ステップ250において、処理回路が代替的な解釈を使用しているかどうか判断される。そうではない場合、ステップ255において実行(X)ビットがセットされているかどうか判断される。そうであれば、処理はステップ270に進み、実行可能パーミッションがセット状態にあると決定されるが、そうでなければ処理はステップ275に進み、実行可能パーミッションはクリア状態にあると決定される。
しかしながら、代替的な解釈が使用されていると決定される場合、処理はステップ260に進み、Xビットがセットされているかどうか判断される。そうではない場合、処理はステップ275に進み、実行パーミッションがクリア状態にあると決定される。しかしながら、Xビットがセットされている場合、このこと自体は必ずしも実行可能パーミッションがセット状態にあることを意味しておらず、代わりに、ステップ265において機能に与えられているすべてのWビットがクリアかどうか判断するために追加的なチェックが実施される。機能内に複数のWビットがある場合、ステップ265において、それらのWビットのすべてが、それらがすべてクリアかどうか判断するようチェックされる必要があることに留意すべきである。Wビットのすべてがクリアである場合のみ、処理はステップ270に進み、実行可能パーミッションがセット状態にあると決定されるが、そうでなければ処理はステップ275に進み、実行可能パーミッションはクリア状態にあると決定される。
ステップ265に戻ると、図5から思い起こされるようにWビットのいずれかがセットされていれば修正可能なパーミッションはセット状態となるため、Wビットのすべてがステップ265においてクリアであると判断することは、修正可能なパーミッションがクリア状態にあると判断することと同一であることを了解されたい。したがって、図5及び図6を参照して説明される実施例において、実行可能パーミッション及び修正可能なパーミッションのうちの1つだけが、時間的にあらゆるポイントにおいてセット状態にあり得ることがわかる。
図7は例えばデフォルトの解釈又は代替的な解釈が使用されているかどうかに応じて、読み出しパーミッションのうちの任意の1つの状態がどのように評価され得るかを図示するフロー図である。ステップ300において、代替的な解釈が使用されているかどうかが判断され、そうではない場合、ステップ305において関連付けられるRパーミッションビットがセットされているかどうか判断される。そうであれば、ステップ325において特定の読み出しパーミッションがセット状態にあると決定され、そうでなければステップ330において特定の読み出しパーミッションはクリア状態にあると決定される。
しかしながら、代替的な解釈が使用されている場合、処理はステップ310に進み、まず関連付けられている読み出しパーミッションビットが対象の読み出しパーミッションについてセットされているかどうか判断される。そうではない場合、処理はステップ330に直接進み、読み出しパーミッションがクリア状態にあると決定される。
しかしながら、関連のある読み出しパーミッションビットがセットされている場合、これは読み出しパーミッションがセット状態にあると判断されることを直接意味しておらず、代わりに1つ又は複数のさらなるチェックが必要とされる。まず、ステップ315において修正可能なパーミッションがセット状態にあるかどうか判断される。一実施例において、これは必ずしも修正可能なパーミッションを直接再評価することを要求せず、代わりにこのチェックはW及びXビットを参照して実施することができる。特に、先の図5の議論から、少なくとも1つの書き込みビットがセットされているか、又は実行ビットがクリアされている場合、修正可能なパーミッションはセット状態にあると決定され、それに応じてステップ315においてそのチェックが実施され得ることを了解されたい。
修正可能なパーミッションがセット状態にあると判断される場合、処理はステップ325に進み、関連のある読み出しパーミッションがセット状態にあると決定される。しかしながら、修正可能なパーミッションがセット状態にない場合、機能が現在プログラムカウンタ機能として使用されているかどうか判断するために、ステップ320においてさらなるチェックが実施される。そうであれば、修正可能なパーミッションはセットされていないが、ステップ325において関連のある読み出しパーミッションはセット状態にあるとさらに決定される。したがって、ある非修正可能な機能はさらに、それらの機能がPCCレジスタ80に存在する時、少なくとも1つの読み出し可能パーミッションがセットされていると見なされ得る。
ステップ320において、機能が現在プログラムカウンタ機能として使用されていないと決定される場合、処理はステップ330に進み、読み出しパーミッションがクリア状態にあると決定される。
図8は一実施例において、あらゆる特定の書き込みパーミッションの状態がどのように評価されるかを図示するフロー図である。ボックス350によって示されるように、説明される実施例において、デフォルトの解釈又は代替的な解釈のどちらが使用されているかに関わらず、書き込みパーミッションは全く同じやり方で解釈される。特にステップ355において関連付けられる書き込みパーミッションビットがセットされているかどうか判断され、そうであれば、ステップ360において特定の書き込みパーミッションがセット状態にあると決定され、そうでなければステップ365において特定の書き込みパーミッションはクリア状態にあると決定される。
図5から図8の上の議論より、1つ又は複数の書き込みパーミッション、1つ又は複数の読み出しパーミッション、実行可能パーミッション及び修正可能なパーミッションのステータスは、すべて機能内でエンコードされる既存のW、R及びXパーミッションビットを使用して決定されることを了解されたい。追加的な修正可能なパーミッションビットが追加される必要はなく、それに応じて追加的な修正可能なパーミッションを、いかなる追加的なパーミッションビットのエンコード空間の必要もなく、機能へエンコードすることができる。
図9は4つの上述の異なるタイプのパーミッションの状態を、X、R及びWビットに応じて図示する表である。この実例において、図示を容易にするため、1つの読み出しパーミッション及び1つの書き込みパーミッションだけ、ひいては単一のRビット及び単一のWビットだけがあるものと仮定している。
より一般的な場合において、図5から図8のフロー図から了解されるように、修正可能、及び実行可能パーミッション(修正可能なパーミッションがセットされているかどうかによると仮定すれば、実際には読み出し可能パーミッションも)の状態を決定する際、それらのパーミッションがセット状態にあるか、又はクリア状態にあるかどうかを調査する処理の一部として複数のWビットに関して論理OR及びAND演算が実施される必要がある。
図10は機能が修正可能としてマークされている場合、パーミッションのうちの1つ又は複数の状態に遷移をもたらすために、個々のパーミッションビットがセット値からクリア値へどのように変化し得るかを図示する状態遷移図である。やはり、図示を容易にするため、単一のWパーミッションビット及び単一のRパーミッションビットだけがあるものと仮定するが、複数のRパーミッションビット及び複数のWパーミッションビットがあるより一般的な場合において、それらR及びWパーミッションビットのそれぞれは独立してクリアされ得る。
初期状態400で示されるように、R、W及びXビットのそれぞれは最初は論理値1にセットされ得る。図9から明らかなように、これは機能が非実行可能であるが、修正可能であり、読み出し及び書き込みの両方の動作が許可されていることを意味している。機能が修正可能であるため、個々のパーミッションビットは所望によりクリアすることができる。したがって、1つのビットをクリアすることにより、状態405、407、409のうちのいずれかに遷移することが可能である。状態407において、R及びWビットがさらにセットされるが、Xビットはクリアされ、一方で状態409においてはW及びXビットがさらにセットされるが、Rビットはクリアされる。図9に戻って参照すると、状態407及び409の両方が、修正可能なパーミッションがセット状態にある状態に対応していることがわかる。しかしながら、状態405(R及びXビットがセットされているが、Wビットはセットされていない)は修正可能なパーミッションがクリア状態にある、すなわち機能が修正可能ではない状態に対応している。
図10は個々のパーミッションビットがクリアされると起こり得る複数の他の可能な遷移を示している。図示を容易にするため、状態400から412への、又は状態400から416への直接の遷移は省略されているが、一実施例において、それらの遷移もやはり可能であろう。状態412及び414は、さらに機能が修正可能な状態であるが、状態410は機能が非修正可能な別の状態であることに留意すべきである。状態416が原理的には修正可能な状態である一方、それはパーミッションビットのすべてがクリアされている状態を表しており、したがって、その機能によって制約される処理はその機能内でパーミッションをそれ以上変えることができない。いくつかの実施例において、状態416は使用されていない状態と決定することができる。
図10の状態405、410は機能が非修正可能な状況を表しているため、それらの状態からのさらなる遷移を排除しているように見える。しかしながら、遷移420、425と関連して使用される記号「ADR」によって示されるように、一実施例においてアドレス生成命令の実行により経路420、425によって示される遷移が起こり得る。図11を参照してさらにこれを議論する。
図11に示されるように、アドレス生成命令は汎用機能レジスタCを宛先レジスタとして指定することができ、やはりソースオペランドを、命令内の即値によって、又は内容がオフセット値を指定する整数レジスタを参照してのいずれかで指定することができる。そのようなアドレス生成命令が実行されると、PCCレジスタ80内のプログラムカウンタ機能はソース機能450として使用される。ポインタ値465はPCC450から抽出され、ソースオペランドと組み合わせて論理演算460にかけられる。これは、例えば結果値470を生成するために即値をポインタ値へ加算することを伴うことがあり、この場合アドレス生成命令は即値を指定し、又は例えばオフセットをポインタ値に加算することを伴うことがあり、この場合そのオフセットは整数レジスタを参照して取得され、やはり結果値470を生成する。次いで範囲及びパーミッション情報が結果機能455へ本質的には変わらずに複製されるが、Xビットは例外である。特に、アドレス生成命令が実行されると、Xビット値は結果機能ではクリアされる。したがって、図10で示されるように、これは2つの遷移420、425を可能にする。特に、両方の事例において、PCC内で実行可能、非修正可能な機能450が、非実行可能であるが修正可能な結果機能455を作成するために使用される。これは、遷移420について特に興味深い効果を与えるものであり、この場合PCC450は実行可能且つ非修正可能、及びPCCレジスタ80にある時だけ読み出し可能であったが、そこから生成された結果機能455は、今度は(図9に示されるXRW状態「110」と状態「010」とを比較すると明らかなように)修正可能且つ完全に読み出し可能となっている。
図12は、一実施例によるリンク命令を伴う分岐の動作を図示している。図12に示されるように、リンク命令を伴う分岐の実施には2つの別個の処理が伴う。まず、リターンアドレス機能517が現在のプログラムカウンタ機能500から生成される。一実施例において、これはポインタ値505が抽出されること、及びリターンアドレスポインタ515を生成するために命令サイズを加算演算510を介してそのポインタ値へ加算することを伴う。範囲及びパーミッション情報のすべては、次いでリターンアドレス機能へと複製され、一実施例において、リターンアドレス機能は機能リンクレジスタ(CLR:Capability Link Register)内に格納される。CLRは様々なやり方で与えられるが、一実施例においては、汎用機能レジスタ、例えばC30、のうちの特定の1つである。有効なプログラムカウンタ機能500が実行可能且つ非修正可能となるため、これはリターンアドレス機能がやはり非修正可能であること、ひいてはリターンアドレス機能がリターンアドレスとして使用されるよりも前に調整できないことを保証することによって向上したセキュリティを与えることを意味している。
リターンアドレス機能が生成されてしまうと、次いでその機能レジスタC520の内容はPCCレジスタ80へと複製され新しいプログラムカウンタ機能525を形成する。後々、分岐から戻ってくるためにリターン命令を実行することができ、その時点でPCCはCLRの内容で更新される。CLR機能が非修正可能であったため、このことはリターンアドレス機能がその期間に改竄されていないことを保証する。
図13は次いで汎用機能レジスタ内で修正不可能な機能の確立が、分岐命令を実行する際エントリポイント機能としてのみ使用することができる機能を伴う処理を提供するためにどのように使用され得るかを概略的に図示する図である。特に、ボックス565によって示されるように、機能550は、そのXビットがセットされており、そのWビットのすべてはクリアされており、少なくとも1つのRビットがセットされていると仮定されている。先述の図9より明らかなように、これは本質的には機能が非修正可能であり、実行可能であり(これは機能がPCCレジスタ80内にある時のみ関連する)、PCCレジスタ80にある時だけ読み出し可能であることを意味している。したがって汎用機能レジスタC内で、この機能550は読み出し可能ではなく、又は書き込み可能ではなく、且つ修正不可能である。したがって、分岐命令を介してPCCにロードされ得る機能として、その機能を与えられている処理によって使用されることだけができる。
機能レジスタCの内容をPCCレジスタ80へとロードするために分岐命令が続いて実行される際、これは更新されたプログラムカウンタ機能560となり、更新されたプログラムカウンタ機能560のX、W及びRビット570の集合は、ソース機能550のフィールド565内のそれらの集合に対応する。X、W及びRパーミッションビットのいずれも変化していないが、今度は機能がプログラムカウンタ機能であるため、機能は実行可能であり、ひいては命令をフェッチさせるが、対応するRビットがセットされるタイプのあらゆる読み出し動作について読み出し可能でもある。
このことは「リテラル」が今度はPCC560を使用してメモリから読み出しできることを意味している。例えば、ロード命令をソースアドレスとしてPCCから導出されたアドレスを指定して使用することができ、この時結果は整数レジスタXのうちの1つに格納される。PCC560からアドレスを導出する際、アドレスが許容範囲内にある場合、また対象となる読み出し動作のタイプが関連付けられるRパーミッションビットをセットする場合、リテラルデータを導出されたアドレスからロードして、そのデータをレジスタX内に格納するために、ロード演算を実施することができる。
一実施例において、処理回路はいつも代替的な解釈を使用するよう構成することができる。しかしながら、処理回路の他の事例はやはり同一の機能を使用することができるが、本明細書で説明されるメカニズムは使用されるパーミッションビットにおいていかなる変化も伴わないため、デフォルトの解釈にしたがってそれらを解釈し、ひいてはデフォルトの解釈を使用する既存のシステムとの後方互換性を提供する。
別の実施例において、処理回路はデフォルトの解釈を使用することから代替的な解釈を使用することへ、選択的にスイッチングすることができ、その逆も可能であり、図1に示されるように、設定ビット90が処理回路についての制御情報の一部として与えられ得、この時設定ビットの値は処理回路がデフォルトの解釈を使用しているか、代替的な解釈を使用しているかを決定するものである。その設定ビットをセットすることは、処理回路で実行しているコードの特定のタイプに限定され得る。例えば、セキュアなコード、又はオペレーティングシステム若しくはハイパーバイザは、ある状況下で設定ビットを変更するように構成することができる。
図14は使用され得る仮想マシンの実装形態を示す。先に説明された実施例は考慮される技術をサポートする特定の処理ハードウェアを動作させるための装置及び方法の点で本発明を実装している一方、ハードウェアデバイスのいわゆる仮想マシンの実装形態を提供することも可能である。これらの仮想マシンの実装形態は、仮想マシンプログラム610をサポートするホストオペレーティングシステム620を実行させるホストプロセッサ630上で実行する。典型的には、適度な速度で実行する仮想マシンの実装形態を提供するためには大きくパワーのあるプロセッサが要求されるが、そのような手法は一定の状況下では十分な根拠があるものとされ得、例えば互換性又は再使用目的のために別のプロセッサにとってネイティブなコードを実行する所望がある場合などである。仮想マシンプログラム610はコンピュータ可読記憶媒体(非一時的媒体であってもよい)に記憶され得、アプリケーションプログラム600にアプリケーションプログラムインターフェース(命令実行環境)を提供し、アプリケーションプログラムインターフェースは仮想マシンプログラム610によってモデリングされるデバイスである現実のハードウェアによって提供されるであろうアプリケーションプログラムインターフェースと同一のものである。機能のパーミッションを解釈するための上述の技術は、仮想マシン環境内に実装されてもよい。例えば、仮想マシンで実行するソフトウェア、又は仮想マシンを制御するソフトウェアは、そのような特徴を実装するハードウェアを利用することができる。
上述の実施例は、余計なパーミッションビットを消費することなく1つ又は複数の追加的なパーミッションを機能へとエンコードするためのメカニズムを提供する。既存のパーミッションビットの論理組み合わせを使用して、パーミッションの拡大されたセットをエンコードすることができる。一実施例において、これは1つ又は複数の追加的なパーミッションをエンコードするための乏しいパーミッションビットの浪費を回避するために冗長なエンコードの再使用を伴うが、一方で所望の挙動はなお保持している。さらには、単調に減少するパーミッションモデルが維持される。特に、デフォルトの解釈又は代替的な解釈のいずれが使用されるかに関わらず、機能が修正可能であるとして特定される場合は個々のパーミッションビットはセット値からクリア値へ変わることしかできず、ひいては機能によって制約される処理はその機能内でクリアされてしまったあらゆるパーミッションビットをセット状態に復元することができない。
特定の一実施例において、追加された追加的なパーミッションは修正可能なパーミッションであり、それによって機能の修正可能性を機能ごとに表現することができる。これは機能ベースのシステム内に向上した柔軟性及びセキュリティを与えることができる。任意選択で、修正可能なパーミッションはPCCレジスタ内に保持されている機能から機能を生成するために使用されるある命令の挙動を変更することができ、限定はしないが修正可能なパーミッションを分岐及びリンク命令によって生成される機能にキャリーして、例えば非修正可能なリターンアドレスを生成すること、及び/又はPC相対アドレス計算(ADR)命令よって生成される機能から実行可能パーミッションを除去することを含む。
さらには、パーミッションビットを選択的にクリアすることによってある有用な挙動が対応され得る。例えば、そのXパーミッションビットをセットする機能からすべての書き込みパーミッションビットをクリアすることは、修正可能且つ非実行可能から非修正可能且つ実行可能へとその機能を変化させる。別の実例としては、少なくとも1つの読み出し可能パーミッションビットをセットする機能から実行パーミッションビットをクリアすることは、例えばADR命令の使用を通じて、非修正可能、非読み出し可能から修正可能且つ読み出し可能へとその機能を変化させる。
さらには、任意選択の設定ビット90が使用される実施例において、処理回路を個々のパーミッションビットのそれぞれが関連付けられるパーミッションを有し、また機能が修正されることを妨げるそれらのパーミッションビットの組み合わせのないデフォルトの解釈へ反転させることにより、修正可能なパーミッションの効果を無効化することができる。そのようなデフォルトの解釈を使用する際、機能を修正することに対するあらゆる制限が、典型的にはよりグローバルなスケールで、例えばいくつかの一般的な制御情報を参照して表現される。
パーミッションの拡大されたセットの状態を定義するためにパーミッションビットの論理組み合わせが使用される代替的な解釈を使用することによって、使用されるパーミッションビットの数における増加を必要とすることなく個々の機能と関連するより強力な(より強く制約される)パーミッションが指定できる。
本出願において、語句「するように構成される」は、装置の要素が定義される動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」はハードウェア又はソフトウェアの内部接続の、配置又はやり方を意味する。例えば、装置は定義される動作を提供する専用のハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスは機能を実施するためにプログラムされてもよい。「するように構成される」は、定義される動作を提供するために装置要素があらゆるやり方で変更される必要があることを含意するものではない。
本発明の図示的な実施例を本明細書において添付の図面を参照して詳細に説明してきたが、本発明はこれらの正確な実施例に限定されず、添付の特許請求の範囲によって定義されるような本発明の範囲及び趣旨を逸脱することなく、その様々な変形、付加、及び修正が当業者によりなされ得ることを理解されたい。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組み合わせが可能である。

Claims (21)

  1. 動作を実施するために命令を実行するための処理回路と、
    前記処理回路からアクセス可能であり、前記命令を実行する際、前記処理回路によって実施される少なくとも1つの動作を制約するために使用される機能を格納するように構成された機能格納要素と
    を備え、前記機能は、デフォルトの解釈にしたがって、状態が前記機能において提供されるN個のパーミッションフラグから決定される複数のN個のデフォルトのパーミッションを特定し、デフォルトの解釈にしたがってそれぞれのパーミッションフラグは前記デフォルトのパーミッションのうちの1つに関連付けられ、
    前記N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、前記処理回路は代替的な解釈にしたがって前記機能を分析するように構成され、前記拡大されたセットは少なくともN+1個のパーミッションを含む、装置。
  2. 前記パーミッションの拡大されたセットは前記複数のN個のデフォルトのパーミッション及び少なくとも1つの追加的なパーミッションを含む、請求項1に記載の装置。
  3. パーミッションがセット状態を有する場合、前記処理回路はあらゆるオーバーライド制御情報にしたがって前記機能についての前記パーミッションを付与され、パーミッションがクリア状態を有する場合、前記処理回路は前記機能ついて前記パーミッションを無効とする、請求項1又は2に記載の装置。
  4. 前記パーミッションの拡大されたセットは、クリア状態にある場合、前記機能が1つ又は複数の機能修正命令によって修正不可能であることを特定する、修正可能なパーミッションを含む、請求項1から3までのいずれか一項に記載の装置。
  5. 前記修正可能なパーミッションはセット状態にある場合、修正を妨げるあらゆるオーバーライド制御情報にしたがって、前記機能に与えられたN個のパーミッションフラグをセット値からクリア値へ遷移させることができる、請求項4に記載の装置。
  6. 前記複数のN個のデフォルトのパーミッションは、
    クリア状態にある場合前記機能がメモリ内のデータにアクセスするような1つ又は複数のメモリアクセス動作によって使用されることを妨げられていることを特定するための1つ又は複数のメモリアクセスパーミッションと、
    クリア状態にある場合プログラムカウンタ機能を形成する際前記機能が前記メモリから命令をフェッチするために使用されることを妨げられていることを特定するための実行可能パーミッションと
    を含む、請求項1から5までのいずれか一項に記載の装置。
  7. 前記1つ又は複数のメモリアクセスパーミッションは、前記機能が前記メモリへの書き込み動作の少なくとも1つのタイプを実施するために使用されることを妨げられているかどうかを特定するための少なくとも1つの書き込みパーミッション、及び前記機能が前記メモリからの読み出し動作の少なくとも1つのタイプを実施するために使用されることを妨げられているかどうかを特定するための少なくとも1つの読み出しパーミッションを含む、請求項6に記載の装置。
  8. 前記複数のデフォルトのパーミッションは、クリア状態にある場合前記機能がプログラムカウンタ機能として使用される場合前記メモリから命令をフェッチするために使用されることを妨げられていることを特定するための実行可能パーミッションを含み、
    前記N個のパーミッションフラグの前記代替的な解釈にしたがって、前記機能は前記実行可能パーミッション及び前記修正可能なパーミッションの両方をセット状態にすることを妨げられている、請求項4に従属する場合の請求項5から7までのいずれか一項に記載の装置。
  9. 前記複数のデフォルトのパーミッションは、前記機能が前記メモリへの書き込み動作の少なくとも1つのタイプを実施するために使用されることを妨げられているかどうかを特定するための少なくとも1つの書き込みパーミッションと、前記機能が前記メモリからの読み出し動作の少なくとも1つのタイプを実施するために使用されることを妨げられているかどうかを特定するための少なくとも1つの読み出しパーミッションとをさらに含み、
    前記N個のパーミッションフラグは少なくとも1つの書き込みビット、少なくとも1つの読み出しビット、並びに前記デフォルトの解釈にしたがって、値が前記少なくとも1つの書き込みパーミッション、前記少なくとも1つの読み出しパーミッション、及び前記実行パーミッションの前記状態をそれぞれ特定する実行ビットを含み、
    前記代替的な解釈にしたがって前記処理回路は少なくとも1つの書き込みビットがセットされているか、又は前記実行ビットがクリアされている場合、前記修正可能なパーミッションがセット状態にあると決定するように構成される、
    請求項8に記載の装置。
  10. 前記代替的な解釈にしたがって前記処理回路は、前記実行ビットがセットされており前記少なくとも1つの書き込みビットのすべてがクリアである両方の場合、前記実行可能パーミッションがセット状態にあると決定するように構成される、請求項9に記載の装置。
  11. それぞれの読み出しパーミッションについて、前記代替的な解釈によると、前記処理回路は前記関連付けられる読み出しビットがセットされている場合前記読み出しパーミッションが前記セット状態にあること、及び、前記修正可能なパーミッションが前記セット状態にあること又は前記機能がプログラムカウンタ機能として使用されていることのいずれかであることを決定するように構成される、
    請求項9又は10に記載の装置。
  12. プログラムカウンタ機能から結果機能を生成するためにアドレス生成命令を実行することに応じて、前記処理回路は前記結果機能内で前記実行ビットをクリアするように構成される、
    請求項9から11までのいずれか一項に記載の装置。
  13. 前記プログラムカウンタ機能が前記実行ビットをセットさせる及び前記少なくとも1つの書き込みビットのすべてをクリアさせる場合、前記結果機能の前記実行ビットをクリアすることによって前記結果機能は、前記代替的な解釈にしたがって前記セット状態にある前記修正可能なパーミッション及び前記関連付けられる読み出しビットによって示される前記状態にあるそれぞれの読み出しパーミッションの両方を有すると考えられる、請求項12に記載の装置。
  14. プログラムカウンタ機能内で前記修正可能なパーミッションが前記クリア状態にある場合、リターンアドレス機能がやはり前記クリア状態にある前記修正可能なパーミッションを有するように、前記処理回路は前記プログラムカウンタ機能から前記リターンアドレス機能を生成するためにリンク命令を伴う分岐を実行することに応答的である、
    請求項9から13までのいずれか一項に記載の装置。
  15. 前記機能格納要素と組み合わせて1つ又は複数の汎用機能格納要素を形成する、少なくとも1つの追加的な機能格納要素と、プログラムカウンタ機能格納要素と
    をさらに備え、
    前記1つ又は複数の汎用機能格納要素のうちの1つに格納される前記機能が前記実行ビットをセットし、前記読み出しビットのうち少なくとも1つをセットし、及び前記少なくとも1つの書き込みビットのすべてをクリアする場合、前記処理回路は前記代替的な解釈にしたがって、前記プログラムカウンタ機能格納要素に格納されることになる新しいプログラムカウンタ機能を形成するために前記機能だけを使用するよう制約され、
    前記機能が前記プログラムカウンタ機能格納要素に格納されると、前記代替的な解釈にしたがって前記新しいプログラムカウンタ機能はセット状態において、関連付けられる読み出しビットがセットされているそれぞれの読み出しパーミッションを有すると見なされ、それによって前記処理回路によりリテラル値がメモリから読み出されることを可能にする、
    請求項9から14までのいずれか一項に記載の装置。
  16. 前記処理回路によって、前記デフォルトの解釈及び前記代替的な解釈のどちらが適用されるかを示す設定値を格納するための、設定記憶要素
    をさらに備える、請求項1から15までのいずれか一項に記載の装置。
  17. 前記機能が結合ポインタであり、前記パーミッションが前記処理回路による前記機能内で指定されたポインタ値の使用を制御するために使用される、請求項1から16までのいずれか一項に記載の装置。
  18. 装置において機能に関連付けられるパーミッションを解釈するための方法であって、前記装置は動作を実施するために命令を実行するための処理回路と、前記処理回路からアクセス可能であり、前記命令を実行する際、前記処理回路によって実施される少なくとも1つの動作を制約することにおける使用のための前記機能を格納するように構成された機能格納要素とを備え、前記機能は複数のN個のデフォルトのパーミッションを特定し、前記方法は、
    デフォルトの解釈にしたがって、前記デフォルトのパーミッションの状態が前記N個のパーミッションフラグから決定されるように、またそれぞれのパーミッションフラグが前記デフォルトのパーミッションのうちの1つに関連付けられるように、前記機能内でN個のパーミッションフラグを提供するステップと、
    前記N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、代替的な解釈にしたがって前記機能を分析するステップであって、前記拡大されたセットは少なくともN+1個のパーミッションを含む、分析するステップと
    を含む、方法。
  19. 動作を実施するために命令を実行するための処理手段と、
    処理回路によるアクセスのための、及び前記命令を実行する際、前記処理手段によって実施される少なくとも1つの動作を制約するために使用される機能を格納するための機能格納要素手段と
    を備え、前記機能は、デフォルトの解釈にしたがって、状態が前記機能において提供されるN個のパーミッションフラグから決定される複数のN個のデフォルトのパーミッションを特定し、前記デフォルトの解釈にしたがってそれぞれのパーミッションフラグは前記デフォルトのパーミッションのうちの1つに関連付けられ、
    前記N個のパーミッションフラグの論理組み合わせからパーミッションの拡大されたセットの状態を導出するために、前記処理手段は代替的な解釈にしたがって前記機能を分析し、前記拡大されたセットは少なくともN+1個のパーミッションを含む、装置。
  20. 請求項1から17までのいずれか一項に記載の装置に対応する命令実行環境を提供するためのホストデータ処理装置を制御するためのプログラム命令を含む、仮想マシンコンピュータプログラム。
  21. 請求項20に記載の前記仮想マシンコンピュータプログラムを記憶するコンピュータ可読記憶媒体。
JP2019563392A 2017-05-25 2018-04-27 機能に関連付けられるパーミッションを解釈するための装置及び方法 Active JP7280195B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB201708393A GB2563009B (en) 2017-05-25 2017-05-25 An apparatus and method for interpreting permissions associated with a capability
GB1708393.2 2017-05-25
PCT/GB2018/051117 WO2018215734A1 (en) 2017-05-25 2018-04-27 An apparatus and method for interpreting permissions associated with a capability

Publications (2)

Publication Number Publication Date
JP2020521222A true JP2020521222A (ja) 2020-07-16
JP7280195B2 JP7280195B2 (ja) 2023-05-23

Family

ID=59270921

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019563392A Active JP7280195B2 (ja) 2017-05-25 2018-04-27 機能に関連付けられるパーミッションを解釈するための装置及び方法

Country Status (9)

Country Link
US (1) US11023237B2 (ja)
EP (1) EP3631621B1 (ja)
JP (1) JP7280195B2 (ja)
KR (1) KR102533823B1 (ja)
CN (1) CN110663024B (ja)
GB (1) GB2563009B (ja)
IL (1) IL270499B (ja)
TW (1) TWI783996B (ja)
WO (1) WO2018215734A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3264317B1 (en) * 2016-06-29 2019-11-20 Arm Ltd Permission control for contingent memory access program instruction
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
WO2022199807A1 (en) * 2021-03-24 2022-09-29 Huawei Technologies Co., Ltd. Device and method for managing resource access

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013097794A (ja) * 2011-10-27 2013-05-20 Freescale Semiconductor Inc 共有システムリソースのセマフォベースの保護のためのシステムおよび方法
JP2013533567A (ja) * 2010-08-11 2013-08-22 アーム・リミテッド メモリアクセス制御

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5325496A (en) * 1991-12-24 1994-06-28 Intel Corporation Selectable pointer validation in a computer system
US8234477B2 (en) * 1998-07-31 2012-07-31 Kom Networks, Inc. Method and system for providing restricted access to a storage medium
US9361243B2 (en) * 1998-07-31 2016-06-07 Kom Networks Inc. Method and system for providing restricted access to a storage medium
US6826672B1 (en) 2000-05-16 2004-11-30 Massachusetts Institute Of Technology Capability addressing with tight object bounds
US7313734B2 (en) * 2002-01-14 2007-12-25 International Business Machines Corporation Method and system for instruction tracing with enhanced interrupt avoidance
US7444668B2 (en) * 2003-05-29 2008-10-28 Freescale Semiconductor, Inc. Method and apparatus for determining access permission
GB2474666B (en) * 2009-10-21 2015-07-15 Advanced Risc Mach Ltd Hardware resource management within a data processing system
JP6106765B2 (ja) * 2013-02-05 2017-04-05 エイアールエム リミテッド メモリ保護ユニットを使用して、仮想化をサポートするゲスト・オペレーティング・システム
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
GB2514107B (en) * 2013-05-13 2020-07-29 Advanced Risc Mach Ltd Page table data management
GB2544315B (en) * 2015-11-12 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling use of bounded pointers

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013533567A (ja) * 2010-08-11 2013-08-22 アーム・リミテッド メモリアクセス制御
JP2013097794A (ja) * 2011-10-27 2013-05-20 Freescale Semiconductor Inc 共有システムリソースのセマフォベースの保護のためのシステムおよび方法

Also Published As

Publication number Publication date
GB2563009B (en) 2019-12-25
CN110663024B (zh) 2023-11-17
KR20200011438A (ko) 2020-02-03
EP3631621B1 (en) 2022-10-26
GB2563009A (en) 2018-12-05
JP7280195B2 (ja) 2023-05-23
KR102533823B1 (ko) 2023-05-18
US11023237B2 (en) 2021-06-01
CN110663024A (zh) 2020-01-07
GB201708393D0 (en) 2017-07-12
TW201901423A (zh) 2019-01-01
EP3631621A1 (en) 2020-04-08
WO2018215734A1 (en) 2018-11-29
IL270499B (en) 2022-06-01
TWI783996B (zh) 2022-11-21
US20200142700A1 (en) 2020-05-07

Similar Documents

Publication Publication Date Title
JP7280195B2 (ja) 機能に関連付けられるパーミッションを解釈するための装置及び方法
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
JP7280196B2 (ja) 機能ドメインを管理するための装置及び方法
JP7445431B2 (ja) 命令の実行を制御する装置および方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
JP2024515081A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210420

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220126

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220517

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220930

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221227

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230511

R150 Certificate of patent or registration of utility model

Ref document number: 7280195

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150