JP2020521225A - 機能ドメインを管理するための装置及び方法 - Google Patents

機能ドメインを管理するための装置及び方法 Download PDF

Info

Publication number
JP2020521225A
JP2020521225A JP2019563509A JP2019563509A JP2020521225A JP 2020521225 A JP2020521225 A JP 2020521225A JP 2019563509 A JP2019563509 A JP 2019563509A JP 2019563509 A JP2019563509 A JP 2019563509A JP 2020521225 A JP2020521225 A JP 2020521225A
Authority
JP
Japan
Prior art keywords
function
state
functional
program counter
processing circuit
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
JP2019563509A
Other languages
English (en)
Other versions
JP7280196B2 (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 JP2020521225A publication Critical patent/JP2020521225A/ja
Application granted granted Critical
Publication of JP7280196B2 publication Critical patent/JP7280196B2/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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch

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)
  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Abstract

機能ドメインを管理するための装置及び方法が提供される。装置は命令を実行するための処理回路を有し、処理回路はデフォルト状態では命令を実行する際処理回路によって実施される動作を制約するために使用される機能を備える機能ドメインで動作するように構成される。プログラムカウンタ値を決定するために処理回路によって使用されるプログラムカウンタ機能を格納するためのプログラムカウンタ機能格納要素も提供される。プログラムカウンタ機能は処理回路について機能状態を特定するように構成される。次いで、処理回路は、機能状態がデフォルト状態を示す場合、機能ドメインで動作するように構成される。しかしながら、機能状態がエグゼクティブ状態を示す場合、機能ドメインの修正を可能とするべく処理回路はデフォルト状態にあるよりも制約されないやり方で動作するように構成される。これによって、装置が機能ドメインを選択的に修正できるようにするための、シンプル且つ効果的なメカニズムが提供される。

Description

本技法はデータ処理の分野に関する。
所与の処理についてある機能が定義され、定義された機能以外の動作を実行するような試行があるとエラーをトリガすることができる機能ベースのアーキテクチャに対する興味が高まっている。機能は様々な形態を取ることができるが、機能の1タイプは結合ポインタ(「ファットポインタ」とも称され得る)である。
複数の機能格納要素(例えば、レジスタ)が、データ処理装置の処理回路によるアクセスのための結合ポインタなどの機能を格納するために提供され得る。そのような機能格納要素内のそれぞれの結合ポインタは、処理回路によってアクセス可能なメモリアドレスの非拡張可能範囲を特定することになり、したがってそれぞれの結合ポインタが機能と称され得る(あらゆる関連付けられるパーミッションにより処理回路がアクセスすることができるメモリアドレスの許容範囲を特定すること)。処理回路は、処理回路に利用可能なあらゆる特定の結合ポインタに関連付けられる範囲及び/又はパーミッションを減らすためにステップを取ることが許可され得る一方、通常の動作ではその結合ポインタによって処理回路に与えられる機能を増やそうとするために範囲を拡張することはできない。
機能格納要素内の結合ポインタによって特定されるメモリアドレスのあらゆる特定の範囲は、データ、命令、及び/又は他の機能(例えば、他の結合ポインタ)を含むことができる。したがって、時間的なあらゆるポイントにおいて、メモリへアクセスするための処理回路の能力は、機能格納要素及びそれらの機能格納要素で保持される機能を介してアクセス可能なあらゆるさらなる機能において特定される機能を含む機能のセットによって定義され、本明細書において機能のこのセットを機能ドメインと称することを了解されたい。
データ処理装置の動作の間、処理回路の機能ドメインを変更しようとする必要性があり得る。しかしながら、これは現在の機能ドメインの機能を考えるとアクセスができないメモリアドレスへのアクセスを要求することがある。
処理回路の機能ドメインにおけるそのような変更を可能にするための効率的で信頼性の高いメカニズムを提供することが望ましいであろう。
第1の実例の構成において、命令を実行するための処理回路であって、処理回路はデフォルト状態では前記命令を実行する際処理回路によって実施される動作を制約するために使用される機能を備える機能ドメインで動作するように構成される、処理回路と、プログラムカウンタ値を決定するために処理回路によって使用されるプログラムカウンタ機能を格納するためのプログラムカウンタ機能格納要素であって、プログラムカウンタ機能は処理回路について機能状態を特定する、プログラムカウンタ機能格納要素と、を備える装置であって、処理回路は機能状態が前記デフォルト状態を示すことに応じて機能ドメインで動作するように構成され、機能ドメインの修正を可能とするべく処理回路は機能状態がエグゼクティブ状態を示すことに応じて前記デフォルト状態にあるよりも制約されないやり方で動作するように構成される、装置が提供される。
別の実例の構成において、命令を実行するための処理回路であって、処理回路はデフォルト状態では機能ドメインで動作するように構成され、機能ドメインは前記命令を実行する際処理回路によって実施される動作を制約するために使用される機能を備える、処理回路を有する装置内で機能ドメインを管理する方法であって、プログラムカウンタ機能格納要素内に、プログラムカウンタ値を決定するために処理回路によって使用されるプログラムカウンタ機能を格納することであって、プログラムカウンタ機能は処理回路について機能状態を特定する、格納することと、機能状態が前記デフォルト状態を示すことに応じて処理回路を機能ドメインで動作させることと、機能ドメインの修正を可能とするべく機能状態がエグゼクティブ状態を示すことに応じて前記デフォルト状態におけるよりも制約されないやり方で処理回路を動作させることと、を含む、方法が提供される。
よりさらなる実例の構成において、命令を実行するための処理手段であって、処理手段はデフォルト状態では前記命令を実行する際処理手段によって実施される動作を制約するために使用される機能を備える機能ドメインで動作する、処理手段と、プログラムカウンタ値を決定するために処理手段によって使用されるプログラムカウンタ機能を格納するためのプログラムカウンタ機能格納要素手段であって、プログラムカウンタ機能は処理手段について機能状態を特定する、プログラムカウンタ機能格納要素手段と、を備える装置であって、処理手段は機能状態が前記デフォルト状態を示すことに応じて機能ドメインで動作し、機能ドメインの修正を可能とするべく処理手段は機能状態がエグゼクティブ状態を示すことに応じて前記デフォルト状態にあるよりも制約されないやり方で動作する、装置が提供される。
なおさらなる実例の構成において、上述の第1の実例の構成の装置に対応する命令実行環境を提供するためのホストのデータ処理装置を制御するためのプログラム命令を含む、仮想マシンコンピュータプログラムが提供される。一実施例において、コンピュータ可読記憶媒体は仮想マシンコンピュータプログラムを記憶するために提供されてもよい。
本技法は、その実施例を参照して添付の図面に図示されるように、単に実例としてさらに説明される。
一実施例による装置のブロック図である。 結合ポインタ格納要素のセット内でポインタ値の設定又はポインタ値へのアクセスが試行される場合、関連付けられる範囲情報によって示される範囲の外のアドレスを指定するためにそのポインタ値が使用される場合、エラーがトリガされ得るような、命令のタイプの実例を示す。 一実施例による、結合ポインタに関連付けられるタグビットの使用を示す。 一実施例による、処理回路の機能状態を更新するための分岐命令を実行する際実施される動作を示す。 一実施例による、処理回路の機能状態を更新するためのリンク命令を伴う分岐を実行する際実施される動作を示す。 一実施例による、処理回路の機能状態を更新するためのリターン命令を実行する際実施される動作を示す。 一実施例による、プログラムカウンタ機能を更新する際行われるステップを図示するフロー図である。 一実施例による、図7のステップ370を実施するための、代替的な選択肢を示す。 一実施例による、図7のステップ370を実施するための、代替的な選択肢を示す。 使用され得る仮想マシンの実装形態を示す。
添付の図面を参照して実施例を議論する前に、以下に実施例の説明を与える。
先に言及したように、所与の処理についてある機能が定義され、定義された機能以外の動作を実行するような試行があるとエラーをトリガすることができる機能ベースのアーキテクチャに対する興味が高まっている。様々なタイプの機能が定義され得るが、機能の1タイプは結合ポインタ(一実施例においては、ポインタ値、並びに関連付けられる範囲及びパーミッション情報の両方を組み込む)である。
そのような機能ベースアーキテクチャを採用する装置は典型的には機能を格納するために使用される格納要素(本明細書では結合ポインタ格納要素、又はより一般的に機能格納要素とも称する)を有することになる。格納要素はレジスタ(本明細書では結合ポインタレジスタ、又は機能レジスタとも称する)であってもよく、及び/又は汎用メモリにおけるメモリ位置、例えば、スタックメモリ上の位置であってもよい。所望の機能にアクセスし、その機能に応じた動作を実施するべく、そのような格納要素を参照するためにある命令が使用され得る。例えば、結合ポインタを考えると、そのような命令の実行は結合ポインタが検索され、次いでその中のポインタ値について、命令の実行の間に要求されるメモリ内のアドレスを導出するために使用されることを可能にする。ポインタ値はメモリアドレスを直接特定するために使用することができ、又は例えば、ポインタ値へのオフセットの加算によってメモリアドレスを導出するために使用することができる。次いで、メモリアドレスが範囲情報によって指定される範囲内にあり、またパーミッション情報で指定されるあらゆるパーミッションが満たされていれば、動作は進むことができるようになる。
したがって、結合ポインタを使用する際、ポインタ値自身は、例えば、アクセスされるデータ値又は実行のためにフェッチされる命令のアドレスを指し示すことができる、又はそのようなアドレスを決定するために使用することができる。しかしながら、その時例えば、アクセスされるあらゆるアドレスが許容範囲内であり、許可された目的のためにアクセスされることを保証するために、範囲及びパーミッション情報が参照され得る。これは、例えば、ポインタから決定されたアドレスがある境界内に留まり、挙動のセキュリティ上又は機能的な正常性を維持することを保証するために有用であり得る。
そのような手法によって、処理回路によってなされるメモリアクセスを効果的に取り締まることが可能である。しかしながら、先に言及したように、生ずる課題は、機能ドメインを変更することを可能にするメカニズムをどのように効率的且つ信頼性があるように提供するかであり、なぜなら、これは現在の機能ドメインの機能を考えるとアクセスができないメモリアドレスへのアクセスを要求し得るからである。
一実施例によると、命令を実行するための処理回路を有する装置であって、処理回路はデフォルト状態では命令を実行する際処理回路によって実施される動作を制約するために使用される機能を備える機能ドメインで動作するように構成される、装置が提供される。プログラムカウンタ値を決定するために処理回路によって使用されるプログラムカウンタ機能を格納するためのプログラムカウンタ機能格納要素も提供される。本明細書で説明される実施例によると、プログラムカウンタ機能はまた処理回路について機能状態を特定するための情報を含む。
処理回路は、機能状態がデフォルト状態を示す場合、機能ドメインで動作するように構成される。結果として、処理回路は、現在の機能ドメインの機能を考えるとアクセスができないメモリアドレスへのアクセスができない。しかしながら、代わりに、機能状態がエグゼクティブ状態を示すことに応じて、機能ドメインの修正を可能とするべく処理回路はデフォルト状態にあるよりも制約されないやり方で動作するように構成される。
エグゼクティブ状態にある場合、機能ドメインの制約が緩和され得る方法は複数あるが、目的は、処理回路が機能ドメインの制約が働くとアクセスできないような1つ又は複数のメモリアドレス又は領域にアクセスできるようになることである。
したがって、説明される実施例によると、追加的に機能状態情報を指定できるように、機能が補強される。プログラムカウンタ機能を形成するために、そのような機能が次いでプログラムカウンタ機能格納要素に移動されると、その機能によって指定される機能状態情報が処理回路の現在の機能状態を特定するために使用され、ひいては処理回路が機能ドメインにしたがって動作するように制約されたデフォルト状態か、又はより制約されないやり方で動作することができるエグゼクティブ状態かどうかを判断する。
これによって、処理回路が一時的に、機能ドメインを修正できるよう十分な強化された権利を与えられるシンプル且つ効果的なメカニズムが提供される。後々、デフォルト状態を処理回路の新しい機能状態として特定するために、プログラムカウンタ機能が更新される場合、処理回路は、処理回路がエグゼクティブ状態にあった間に修正されたように、機能ドメインにしたがって動作することになる。
機能状態を変更するために、プログラムカウンタ機能格納要素内に格納されるように、プログラムカウンタ機能を更新するために使用され得る複数のメカニズムがある。一実施例において、処理回路は特定した機能をプログラムカウンタ機能格納要素に移動させ、新しいプログラムカウンタ機能を形成するために、機能を特定する分岐命令を実行するように構成され得、その後、プログラムカウンタ機能格納要素は新しいプログラムカウンタ機能によって特定される機能状態で動作する。したがって、現在実施されている処理はそれが現在アクセスしている機能のうちの1つを、分岐命令の使用を通して、汎用機能格納要素からプログラムカウンタ機能格納要素に移動させることができ、この時処理回路の機能状態は分岐動作の実施により得られる新しいプログラムカウンタ機能によって特定される。
分岐命令は様々な形態を取ることができる。しかしながら、一実施例において、分岐命令はリンク命令を伴う分岐である。そのようなシナリオにおいて、プログラムカウンタ機能格納要素に格納されるプログラムカウンタ機能は、リンク命令を伴う分岐の実行に先立って、古いプログラムカウンタ機能を形成すると考えることができ、処理回路は、リターンアドレス機能格納要素内に格納するためのリターンアドレス機能を生成するために古いプログラムカウンタ機能を使用するように構成され、リターンアドレス機能は古いプログラムカウンタ機能によって特定された機能状態を保持する。結果として、これにより処理は、コードの特定のセクションに分岐し、その時そのコードが実行されてしまっている場合、プログラムカウンタ機能格納要素の内容を分岐が実施されるのに先立って存在する機能状態を保持する形態に戻すことができる。したがって実例として、コードはコードの特定のセクションに分岐してエグゼクティブ状態で動作させられることができ、これによって機能ドメインを形成することになる機能に対してある変更を行うことができ、またそのコードの完成時、処理は次いでデフォルト状態に戻ることになり、その時点で処理回路は改版された機能ドメインの機能によって制約されることになる。
したがって一実施例において、処理回路はリターンアドレス機能をプログラムカウンタ機能格納要素に書き込み、リターンプログラムカウンタ機能を形成するために、機能を特定するリターン命令(分岐命令の別の形態であると考えることができる)を実行するように構成され得、その後、処理回路はリターンプログラムカウンタ機能によって特定される機能状態で動作する。
機能状態がエグゼクティブ状態を示す場合、処理回路がより制約されないやり方で動作するように構成され得る複数の方法がある。しかしながら、一実施例において、処理回路は、処理回路がエグゼクティブ状態で動作している間、機能によって制約されないよう構成することによって、そのようなより制約されないやり方で動作するように構成される。したがって、そのような手法は、処理回路にメモリアドレス空間へのフルアクセスを与え、機能ドメインのすべてのセーフガードを取り除くが、エグゼクティブ状態で実行するコードが信頼性の高いものである一定の状況においては有用であり得る。
代替的な実施例において、機能状態がエグゼクティブ状態を示す場合、処理回路がエグゼクティブ状態で動作している間少なくとも1つの機能チェックを無効にすることによって、処理回路はデフォルト状態にあるよりも制約されないやり方で動作するように構成され得る。無効にされる機能チェックは様々な形態を取ることができる。例えば、あるメモリアクセス命令が、データ処理装置の汎用レジスタ内に格納された非結合ポインタを特定し得ることが可能である。それらのアクセスがやはり制約されることを保証するために、デフォルトデータ機能(DDC:Default Data Capability)が提供され得、範囲情報及びあらゆる関連付けられるパーミッションを提供し、非結合ポインタを参照して特定されたアドレスについてメモリアクセスを進めさせるかどうか判断する際、そのデフォルトデータ機能が参照され得る。しかしながら、一実施例において、エグゼクティブ状態にある場合、デフォルトデータ機能を参照して実施されるあらゆるそのようなチェックを停止するよう決定され得、それにより機能ドメインによって許可される外のメモリアドレス空間にアクセスするためのメカニズムを処理回路のために提供する。
別の代替として、プログラムカウンタ機能が命令をフェッチしてくるアドレスを特定するために使用される際、処理回路がエグゼクティブ状態で動作している場合、プログラムカウンタ機能の範囲及びパーミッション情報を参照して実施される関連付けられる機能チェックを無効にするよう決定され得る。
よりさらなる代替の実施例において、装置は機能を格納するためのバンクされた機能格納要素の1つ又は複数のセットをさらに備え、バンクされた機能格納要素のそれぞれのセットは、デフォルト状態で動作する際処理回路によって実施される動作を制約するために使用される機能を格納するための第1の機能格納要素と、エグゼクティブ状態で動作する際処理回路によって実施される動作を制約するために使用される機能を格納するための第2の機能格納要素と、を備える。その時、バンクされた機能格納要素のそれぞれのセットの第1及び第2の機能格納要素で特定される機能は、機能状態がエグゼクティブ状態を示す際、処理回路は前記デフォルト状態にあるよりも制約されないやり方で動作するように構成され得る。
したがって、そのような実施例によると、機能格納要素の少なくともいくつかのバンキングが、エグゼクティブ状態で動作する際機能ドメインの制約の緩和をさせるためのメカニズムとして使用することができる。特に、エグゼクティブ状態では、そのような実施例の処理回路は使用される機能のうちの少なくとも1つについて異なるバンクされた格納要素を参照することになり、この時そのバンクされた機能格納要素は、デフォルト状態で使用される通常の機能よりも面倒ではない制約を指定する機能を格納している。これによって、エグゼクティブ状態にある場合、処理回路に機能ドメインを修正させるために十分な制御された追加的なパーミッション権利を与えることができるようになる。
バンクされた機能格納要素を使用することに対する代替として、代替の実施例において、プログラムカウンタ機能への更新が機能状態を元の状態から宛先状態へと変更する場合、元の状態に関連する1つ又は複数の機能格納要素における機能は、それらが後に復元できるように保存され、宛先状態に関連付けられる関連機能は前記1つ又は複数の機能格納要素に書き込まれる。機能状態がエグゼクティブ状態に変わる時、前記1つ又は複数の機能格納要素に書き込まれた機能は、処理回路がデフォルト状態にあるよりも制約されないやり方で動作するように構成することができる。したがって、ある機能格納要素の内容は、現在のプログラムカウンタ機能によって示されるように機能状態が変わる際スイッチングすることができ、それにより機能の一部があまり制限されないバージョンに置き換えられることを可能にし、処理回路が機能ドメインを変更できるよう十分強化されたメモリへのアクセスを有することを可能にしている。
一実施例において、機能状態がエグゼクティブ状態からデフォルト状態へどのように変更され得るか、制約するためのメカニズムが提供され得る。特に、機能状態がデフォルト状態に戻る際、処理回路に機能ドメインを回避できるようなあらゆるエグゼクティブな権利が残っていないことを保証することが必要となることがある。したがって、一実施例において、分岐命令が機能状態をエグゼクティブ状態からデフォルト状態に変更させることになる機能を特定する場合、処理回路は分岐命令によって特定された機能を使用して更新されたものとしてプログラムカウンタ機能の使用が許可されるかどうかを判断するためにチェック動作を実施するように構成される。
許可された分岐命令を特定する複数の方法がある。しかしながら、一実施例において、機能状態をエグゼクティブ状態からデフォルト状態へ変更するために使用することができる分岐命令の1つ又は複数のタイプが提供され、分岐命令の1つ又は複数の特定のタイプの使用以外の処理によって分岐が試行されると、チェック動作はその状況を検出し、適当なアクションを取ることになる。
特に、一実施例において、チェック動作について失敗した状態を判断すると、処理回路は所定のアクションを実施するように構成される。所定のアクションは様々な形態を取ることができる。例えば、一実施例において、失敗の状態を判断させることになった分岐命令の実行に対して例外を取ることを伴うことがある。その時ソフトウェア例外ハンドラは制御をエグゼクティブ状態からデフォルト状態への試行された変更を扱うために適当なエラーハンドリングルーチンに転送することになる。例えば、例外ハンドリングルーチンはプログラムカウンタの更新を発生させることができるが、処理回路についてはエグゼクティブ状態のままである。代替的に、発生する分岐命令にしたがってプログラムカウンタ機能の更新を許可する前に、処理回路をエグゼクティブ状態からデフォルト状態に戻らせる方法でプログラムカウンタ機能が更新されることが安全であることを確実にするために、いくつかの追加的なチェック及び/又はクリーンアップ動作を実施するように構成することができる。
分岐命令の実行の際ただちに例外を取ることに対する代替として、代替の実施例において、フラグが失敗の状態の発生を示すために設定されてもよいが、プログラムカウンタ機能を更新するために分岐命令の実行が完了するために許可されてもよい。その後、次の命令が実行されることになる際例外を取らせるために、設定されたフラグの存在を使用することができる。これによって、分岐命令が実行されてフラグが設定される時間と、例外が取られる時間との間に一定のイベントを起こすことができる。それによって例えば、フラグ情報及びプログラムカウンタ機能(PCC:Program Counter Capability)情報を保ち、次いでフラグをクリアして異なプログラムカウンタ機能をプログラムカウンタ機能格納要素にロードする、優先度の高い例外/割り込みが取られ得る。その優先度の高い例外/割り込みから戻ると、次いでフラグ及びPCC情報は復元されることになり、次の命令が実行されることになる際、設定されたフラグの存在は例外を取らせることになる。
一実施例において、プログラムカウンタ機能内に維持されている機能状態情報は、機能内に保持されているあらゆる他のパーミッション情報のように扱われることができ、そのようにして、機能状態をデフォルト状態に変更するために、機能状態を示す情報をクリアすることが可能であり得る。これによって、例えば、処理回路がエグゼクティブ状態で動作している間、プログラムカウンタ機能内の関連情報フィールドをクリアすることを通じて、自身をデフォルト状態に遷移できるようになる。しかしながら、アクティビティが指定された機能によって管理される処理はその指定された機能のパーミッションを増やすことを許可されないという一般的な原理によると、デフォルト状態からエグゼクティブ状態への遷移を示した方法で処理回路にとって機能状態情報の値を変更することは可能ではない。
代替の実施例において、機能状態情報は一般的なパーミッションフィールドとは別個の新しいタイプのフィールドとして扱われることができ、その機能を使用している処理によって変更できないように構成され得る。
次に、図面を参照して特定の実施例を説明する。
図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に渡され、命令の実行に必要なオペランドが利用可能かどうかを判断し、オペランドが利用可能であれば実行のため命令を発行する。いくつかの実施例はインオーダー処理をサポートしていることがあり、それによって、命令がL1の命令キャッシュ20からフェッチされたプログラム順序に対応する順序での実行のために、命令が発行される。他の実施例はアウトオブオーダー実行をサポートしていることがあり、それによって命令は、プログラムの順序とは異なる順序で実行工程12に発行され得る。前方の命令がオペランドを待ってストールしている間、オペランドが利用可能であるプログラムの順序において後方の命令を先に実行できるため、アウトオブオーダー処理はパフォーマンスを改善するために有用であり得る。
発行工程10は命令を実行工程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は様々な方法で設定することができる。例えば、セキュアなコード、又はオペレーティングシステム若しくはハイパーバイザは、所与のポインタについて許可される範囲を指定することができる。例えば、命令セットアーキテクチャは、所与のポインタ62についての範囲情報64を設定するための又は修正するための複数の命令を含むことができ、これらの命令の実行はあるソフトウェア又はプロセッサ4のあるモード若しくは例外レベルに制限することができる。範囲情報64を設定するための又は修正するためのあらゆる既知の技法を使用することができる。
ポインタへの参照を行うある命令を実行する際に実行状態12で使用され得る結合ポインタ格納要素60のセットに加えて、プログラムカウンタ機能(PCC)レジスタ80が、命令がレベル1の命令キャッシュ20からフェッチされる際、フェッチ工程6で類似の機能性を提供するためにやはり使用されてもよい。特に、プログラムカウンタポインタはフィールド82に格納され得、この時PCC80はまた、結合ポインタ格納要素60のセット内のポインタのそれぞれに与えられる範囲及びリストリクション情報と同様に、範囲情報84及び適当なリストリクション情報86を与える。
さらには、一実施例において、非結合ポインタはまた汎用レジスタ40内で指定され、メモリアクセスを行う際使用され得る。そのような非結合ポインタを使用してアクセスされ得るメモリアドレスを限定するために、機能レジスタのいずれかに含まれる範囲及びリストリクション情報と同様に、範囲情報92及びあらゆるリストリクションデータ94を指定するデフォルトデータ機能(DDC)レジスタ90が提供されてもよい。次に、汎用レジスタ40内の非結合ポインタを参照してメモリアドレスを特定するメモリアクセス命令が実行されると、結合ポインタに関して実施される境界チェック動作に類似する境界チェック動作が、その非結合ポインタから導出されるあらゆるアドレスに基づいてなお実施され得るが、この事例はDDCレジスタ90内に保持された範囲及びリストリクション情報を考慮したものである。そのような手法によって、例えば、機能非認識コードを実行する際に汎用レジスタ40からのアクセスされるポインタがどのように使用されるかを制約するために、DDCレジスタ90を設定するために既存のソフトウェアライブラリ内のいくつかの機能非認識コードを利用したいと思う機能認識コードについてことが可能である。特に、範囲情報はそのような機能非認識コードを実行する際アクセスされ得るアドレス範囲を限定するために使用することができる。
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は機能が格納されるデータブロックに関連付けられて設定されることになる。そのような手法によって、機能と通常データとを区別し、ひいては通常データを機能として使用することができないことを保証することが可能である。
先に言及したように、(機能レジスタ60を介して直接アクセス可能か、又は機能レジスタの結合ポインタのうちの1つを介してアクセス可能なメモリアドレス空間内に存在しているか、のいずれにせよ)処理回路に利用可能な機能の現在のセットが機能ドメインを形成する。したがって、機能ドメインがプロセッサによってあらゆる関連付けられるパーミッション/リストリクションによりアクセスされ得るメモリの利用可能な領域を特定する。残りの図面を参照して議論するように、説明される実施例において、装置が機能ドメインを変更できるようにする制御されるメカニズムが提供される。
特に、一実施例において、先に議論したポインタ値フィールド62、範囲フィールド64、及びパーミッション/リストリクションフィールド(複数可)66に加えて、追加的なフィールドを伴う結合ポインタが提供される。特に、先に議論したエグゼクティブ状態又はデフォルト状態を特定するために、設定又はクリアされ得る機能状態フィールドが提供される。機能は、図1を参照して先に議論した汎用機能レジスタ60のいずれかに存在する一方、この機能状態情報は使用されない。しかしながら、そのような結合ポインタがPCCレジスタ80にロードされる場合、プロセッサの現在の機能状態を特定するために、この追加的なフィールドが参照される。
これは図4を参照する実例として図示されており、オペランドとして機能レジスタCを指定する分岐命令の動作を概略的に図示している。機能レジスタCに格納された機能200は機能状態フィールド210を含む。機能は機能レジスタに格納される一方、フィールド210内の情報は使用されない。しかしながら、プログラムカウンタ機能レジスタ80に機能レジスタCに格納された機能をロードするために分岐命令が実行される場合、PCCレジスタ80の結果として更新された内容215は、今度は機能状態220を含んでおり、機能200内で与えられるのと同一の値を有している。概略的に図示されるように、範囲及びパーミッション情報は機能レジスタCからPCCにコピーされ、機能Cのポインタ値は新しいPC値を形成する。PCC格納要素80が更新されてしまうと、処理回路の機能状態は更新された215の機能状態ビットによって決定される。
一実施例において、機能状態フィールドは追加的なパーミッションフィールドとして考えることができ、他のパーミッションと同一のやり方で操作することができる。特に、プロセッサで行われている処理は、典型的には1つ又は複数のパーミッションビットをクリアすることによって、プロセッサが使用している機能の1つ又は複数のパーミッションを取り除くことができ、また一実施例において、機能状態フィールドの点に関して同一の処理を実施するよう許可されることがある。したがって、これによってエグゼクティブ状態を示していた機能状態フィールドが、デフォルト状態を示すためにクリアされるようになり得る。しかしながら、機能の点に関して慣例に一致して、処理はそのパーミッションを増やすことができるようにはならず、したがって機能状態フィールドがクリアである場合に機能状態フィールドを設定できるようにはならず、これによって、処理がエグゼクティブ状態を、現在の値がデフォルト状態を示している機能の機能状態フィールドに関連付けることを防ぐ。
代替の実施例において、機能状態フィールド210はパーミッションフィールドとは別個の新しいタイプのフィールドとして考えることができ、その機能を使用している処理によって修正できないように構成され得る。
図5は図4に類似した図であるが、リンク命令を伴う分岐を実施する際行われる動作を示しており、やはり機能レジスタCを指定するものである。特に、リンク命令を伴う分岐を実行する場合、2つの別個の処理が実施される。ステップにiによって示されるように、現在のPCC内容からリターンアドレスが作成され、これは次いで後に分岐から戻る際の使用のためのリターンアドレス機能として、機能リンクレジスタ(CLR:Capability Link Register)に格納される。示されるように、現在のPCC機能250がPCCレジスタから読み出され、CLRに格納されるリターンアドレス機能260を作成するために使用される。CLRは様々な形態を取ることができるが、一実施例においては、汎用機能レジスタ、例えばC30のうちの専用の1つである。この処理の一部として、現在のPCC機能250内の機能状態255はリターンアドレス機能260内のフィールド265を形成するためにコピーされることになり、したがって後々処理が分岐から戻る際、機能状態が分岐が起こるより前に存在していた状態へと復元されることになることを保証する。
さらには、一実施例において、現在の範囲及びパーミッション情報はまたPCCからリターンアドレス機能へとコピーされ、現在のPC値は、リターンアドレス機能内にリターンアドレスを生成するために、ファンクション270によって示されるように命令サイズの分だけインクリメントされる。
ステップにiiによって示されるように、指定されたソースレジスタC内の機能は、次いでPCC格納要素80へとコピーされ、その結果として、機能280内の機能状態285はPCCの機能状態フィールド295へとコピーされ、この時新しいプログラムカウンタ機能290が作成される。結果として、処理回路の機能状態はCSからCSへと変化する。
図6はリターン命令を実行する際に実施される処理を図示している。リターン命令の実行時、CLRの現在の内容がPCC格納要素80へとコピーされる。結果として、その機能状態305を含むリターンアドレス機能300が、PCC格納要素へとコピーされ、値がCLRの機能状態フィールド305の値に一致する関連付けられる機能状態フィールド315を伴う新しいプログラムカウンタ機能310を形成する。結果として、処理回路の機能状態は更新されたPCCの機能状態によって決定され、次いで、実行されていたリンク命令を伴う元々の分岐より前に存在していた同一の機能状態となる。
前述のメカニズムを通じて、あるポイントにおいてプログラムカウンタ機能が更新され、それによって、エグゼクティブ状態を機能状態として指定することが可能である。エグゼクティブ状態では、機能ドメインの修正を可能とするべく処理回路はデフォルト状態におけるよりも制約されないやり方で動作できる。制約におけるこの緩和は様々な方法で実装され得る。例えば、一実施例において、エグゼクティブ状態で動作している間プロセッサが機能によって制約されないことを構成してもよい。結果として、機能が参照される時はいつでも、あらゆる関連付けられる範囲及びリストリクション情報は無視されてよく、それによりプロセッサが、デフォルト状態にある間であれば存在するであろう機能ドメインに関連付けられる外のメモリの領域にアクセスできる。これによって、例えば、追加的な機能にアクセスできるようになり、デフォルト状態に戻る際プロセッサにとって利用可能となることができ、それにより機能ドメインが修正される。
いくつかの実施例において、エグゼクティブ状態で動作している間機能への参照を完全に取り除くことは不適当と考えられることがあり、代わりに処理回路がエグゼクティブ状態で動作している間、機能チェックのうちの1つ又は複数を無効にされるが他の機能チェックは依然として実施されることが構成されてもよい。例えば、エグゼクティブ状態にある場合、機能チェックを使用せずにプログラムカウンタ機能を使用して命令をメモリからフェッチし、ひいてはPCC80に関連付けられる範囲84及びリストリクション86情報が無視されることが決定されてもよい。
代替として、又は追加として、DDC90は無視されてもよく、それによって、プロセッサが非結合ポインタを参照してメモリにアクセスする際、機能チェックが実行されない。しかしながら、なお、メモリが機能レジスタ60の結合ポインタを使用してアクセスされる場合、関連付けられる範囲及びパーミッション情報がアクセスを進ませる前にチェックされることがあり得る。
別の代替として、また図1で概略的に図示したように、機能レジスタの一部はバンクされることができ、それによって、プロセッサがデフォルト状態で動作している時に使用される機能レジスタのあるバージョンがあり、またプロセッサがエグゼクティブ状態で動作している時に使用される異なるバージョンがある。例えば、また図1で示したように、DDCレジスタはバンクされることができ、それによって、プロセッサがデフォルト状態で動作している時に使用されるDDCレジスタ90が1つあり、またプロセッサがエグゼクティブ状態で動作している時に使用される異なるDDCレジスタ95がある。これによって、デフォルト状態にある時に使用されるデフォルトデータ機能が、エグゼクティブ状態にある時に使用されるデフォルトデータ機能とは異なっていることができる。特に、エグゼクティブ状態にある時に使用されるデフォルトデータ機能は、アクセスできるアドレスの範囲を拡張するように、及び/又はデフォルト状態にある時に使用されるデフォルトデータ機能に比べてパーミッションを増やすように構成されてもよい。別の実例として、機能スタックポインタ(CSP:Capability Stack Pointer)が特定され、デフォルト状態において使用される関連付けられるレジスタ96内に格納されてもよい。しかしながら、バンクされたバージョン97が与えられてもよく、代わりにエグゼクティブ状態において動作している際、機能スタックポインタについて参照される。したがって、プロセッサはデフォルト状態で動作しているか、又はエグゼクティブ状態で動作しているかによって、そのスタックポインタに関連する異なる機能を有することができ、この時プロセッサは現在の機能状態によって異なるバンクされたレジスタ同士の間でスイッチングする。
機能レジスタのバンキングを、DDCレジスタ及びCSPレジスタを参照して実例として図示してきたが、代替の実施例においては、追加的な又は異なる機能レジスタが所望によりバンクされ得ることを了解されたい。
ある機能レジスタをバンキングする代替として、代わりにエグゼクティブ状態で利用可能な等価な機能がいくつかのデフォルト機能、例えば最大の機能へ設定されることを構成してもよい。したがって、DDCの実例を考慮すると、DDCレジスタ90はデフォルト状態において使用され得るが、エグゼクティブ状態にある場合、所定のDDCがプロセッサによる使用のために実効的にハードコーディングされ得る。
バンクされた機能レジスタを使用することへの別の代替として、機能状態が変わる時、PCCにおける機能状態情報によって示されるように、保存及び復元(save and restore)タイプのファンクションが実施されてもよい。特に、機能状態が元の状態から宛先状態へと変化する時、元の状態に関連する1つ又は複数の機能格納要素の機能が、後に復元できるようにある制御レジスタに保存され、いったん保存されると、宛先状態に関連付けられる関連機能は次いで関連する機能格納要素に書き込まれる。やはり、あるファンクションを実施している際より寛容なパーミッション及び/又は範囲のプロセッサへのアクセスを提供することによって、プロセッサがエグゼクティブ状態で動作する際そのような処理は機能制約を緩和させることができる。
図7及び図8の以下の説明のために、図4、図5、及び図6の前述の実例のすべてが、一般的に分岐命令として参照されるが、それらは新しいプログラムカウンタ機能を特定するために、PCC格納要素80の内容を更新させるからである。図7を参照して議論するように、一実施例において、あらゆるそのような分岐命令に遭遇すると、あるチェックが実施され得る。特に、ステップ350で分岐命令がPCCを更新するために使用されると特定されると、ステップ355で現在のPCC内の機能状態ビットが、現在の内容を上書きする新しいPCC内のものと同一かどうか判断される。同一であれば、処理はステップ375に進み、PCCレジスタ80が新しいPCCで更新される。
しかしながら、ステップ355で機能状態ビットが異なっていると判断される場合、次にステップ360で新しいPCCについての機能状態ビットがデフォルト状態を示すかどうか判断される。デフォルト状態を示していない場合、これは更新がプロセッサをデフォルト状態からエグゼクティブ状態へ移させることを示しており、一実施例において、これはあらゆる追加的なチェックの必要なしに許可される遷移である。したがって、処理はステップ375に進み、PCC内容が更新される。
しかしながら、新しいPCCについての機能ビットがデフォルト状態を示す場合、これはエグゼクティブ状態からデフォルト状態への遷移を示しており、一実施例において、これはあるタイプの分岐命令がその遷移を実施するために使用される場合だけに許可される。したがって、ステップ365において、分岐命令が許可されるタイプのものであるかどうか判断される。一つの特定の実施例において、3つの許可されるタイプの分岐命令とは、制限された命令への分岐(BRR:Branch to Restricted)、制限された命令へのリンクレジスタを伴う分岐(BLRR:Branch with Link Register to Restricted)、及び制限された命令へのリターン(RETR:Return to Restricted)である。分岐命令がこれらの許可されるタイプのうちの1つである場合、処理はステップ375に進み、そうでなければ処理はステップ370に進み所定のアクションが取られる。
所定のアクションは様々な形態を取ることができ、2つの実例の選択肢が図8A及び図8Bに図示されている。図8Aに示すように、1つの選択肢は分岐命令の実行を完了せずステップ400で例外を取ることであり、その結果として分岐はPCCレジスタ内容を更新しない。代わりに、ソフトウェア例外ハンドラが、その状況を解決するために実行される適当なエラーハンドリングルーチンへ、制御を転送することになる。例外ハンドリングルーチンがその状況を解決できる、複数の方法がある。例えば、一実施例において、PCC内容を更新させることができるが、機能状態ビットはエグゼクティブ状態を特定するために続行させられる。代替的に、プロセッサがいったん制限された状態に戻るとプロセッサにあらゆるエグゼクティブ権限が残っていないことを保証するために、ある追加的なステップを実施することができ、したがってプロセッサがいったん制限された状態に戻ると修正された機能ドメインによって完全に制約されることを保証することができる。
図8Aで示される処理への代替として、図8Bに示される処理が代わりに実施されてもよく、事実上2つの別々のパートを有する。まず、ステップ410で、許可されるタイプではない分岐命令がプロセッサをエグゼクティブ状態からデフォルト状態へ遷移させる方法でPCCを更新しようとしていることを特定するために、制御レジスタにフラグが設定される。その後、ステップ415で、分岐命令の実行を完了させ、結果として新しいPCCがPCCレジスタ80に格納され、デフォルト状態を特定する。
図8Bのパートiiによって示されるように、ステップ420で次の命令がいつ実行されるかが決定され、次の命令が実行されると決定されるとできるだけ早く、ステップ425でフラグがまだ設定されているかどうかを判断し、設定されている場合、ステップ430で例外を取り、この時点でフラグはクリアされる。その時例外ハンドリングルーチンがトリガされると、図8Aを参照して先に議論した処理を実施することができる。ステップ425でフラグが設定されていないと判断された場合、ステップ435で命令を実行させる。
図8Bで示される処理の結果として、フラグが設定され分岐命令が完了してしまった後、例外がトリガされる前、あるイベントが起こる可能性がある。例えば、フラグ状態及びPCC内容を保ち、次にフラグをクリアし、PCCに異なる値をロードする、優先度の高い例外/割り込みが起こることがある。必要とされる機能性を実施するために優先度の高い例外ルーチンが次いで実行されてもよく、その例外から戻る際、前のPCC内容はPCCレジスタに復元され、フラグは設定された状態に復元されることになる。その時点で、ステップ420で次の命令が特定されるとできるだけ早く、フラグが設定されていると判断されることになり、ステップ430でフラグの設定状態を扱うために例外が取られることになる。
図9は使用され得る仮想マシンの実装形態を図示している。先に説明された実施例は考慮される技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の点で本発明を実装している一方、ハードウェアデバイスのいわゆる仮想マシンの実装形態を提供することも可能である。これらの仮想マシンの実装形態は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を実行させるホストプロセッサ530上で実行する。典型的には、適度な速度で実行する仮想マシンの実装形態を提供するためには大きくパワーのあるプロセッサが要求されるが、そのような手法は一定の状況下で正当化されてもよく、例えば互換性又は再使用目的のために別のプロセッサにとってネイティブなコードを実行する所望がある場合などである。仮想マシンプログラム510はコンピュータ可読記憶媒体(非一時的媒体であってもよい)に記憶され得、アプリケーションプログラム500にアプリケーションプログラムインターフェース(命令実行環境)を提供し、アプリケーションプログラムインターフェースは仮想マシンプログラム510によってモデリングされるデバイスである現実のハードウェアによって提供されるであろうアプリケーションプログラムインターフェースと同一のものである。機能ドメインを管理する上述の技法は、仮想マシン環境に実装されてもよい。例えば、仮想マシンで実行するソフトウェア、又は仮想マシンを制御するソフトウェアは、そのような特徴を実装するハードウェアを利用することができる。
上述の実施例より、これらの説明された実施例はそれに直交する2つのレベルの権限を与え、複数の例外レベルによって提供されてもよく、その場合それぞれの例外レベルが異なるソフトウェア実行権限を有することがわかる。特に、ある例外レベル内で、プロセッサはデフォルト状態又はエグゼクティブ状態のいずれかに置かれることができ、エグゼクティブ状態にある場合は処理回路はデフォルト状態にあるよりも制約されないやり方で動作することができ、デフォルト状態ではプロセッサは現在の機能ドメインによって制約される。これにより、機能ドメインを所望により変更させることができるメカニズムを提供する。
説明した技法により、現在の機能状態はプログラムカウンタ機能内で与えられた情報内でコードされ、したがって分岐するメカニズムは新しい機能をプログラムカウンタ機能レジスタにインストールし、それによって潜在的に機能状態を変更するために使用され得る。これによって、処理回路に機能ドメインを変更させる能力が選択的に与えられる、シンプル且つ効果的なメカニズムが提供される。
本出願において、語句「するように構成される」は、装置の要素が定義される動作を実行することができる構成を有することを意味するために使用される。この文脈において、「構成」はハードウェア又はソフトウェアの配置又は内部接続のやり方を意味する。例えば、装置は定義される動作を提供する専用のハードウェアを有してもよく、又はプロセッサ若しくは他の処理デバイスはファンクションを実施するためにプログラムされてもよい。「するように構成される」は、定義される動作を提供するために装置要素がいかなるやり方で変更される必要があることを含意するものではない。
本発明の図示的な実施例を本明細書において添付の図面を参照して詳細に説明してきたが、本発明はこれらの精密な実施例に限定されず、当業者により添付の特許請求の範囲によって定義されるような本発明の範囲及び精神を逸脱することなく、その様々な変形、付加、及び修正がそこになされ得ることを理解されたい。例えば、従属請求項の特徴の様々な組み合わせを、本発明の範囲及び精神を逸脱することなく、独立請求項の特徴と作ることができる。

Claims (19)

  1. 命令を実行するための処理回路であって、前記処理回路はデフォルト状態では前記命令を実行する際前記処理回路によって実施される動作を制約するために使用される機能を備える機能ドメインで動作するように構成される、処理回路と、
    プログラムカウンタ値を決定するために前記処理回路によって使用されるプログラムカウンタ機能を格納するためのプログラムカウンタ機能格納要素であって、前記プログラムカウンタ機能は前記処理回路について機能状態を特定する、プログラムカウンタ機能格納要素とを備える装置であって、
    前記処理回路は前記機能状態が前記デフォルト状態を示すことに応じて前記機能ドメインで動作するように構成され、
    前記機能ドメインの修正を可能とするべく前記処理回路は前記機能状態がエグゼクティブ状態を示すことに応じて前記デフォルト状態にあるよりも制約されないやり方で動作するように構成される、装置。
  2. 前記処理回路は特定した機能を前記プログラムカウンタ機能格納要素に移動させ、新しいプログラムカウンタ機能を形成するために、機能を特定する分岐命令を実行するように構成され、その後、前記プログラムカウンタ機能格納要素は前記新しいプログラムカウンタ機能によって特定される前記機能状態で動作する、請求項1に記載の装置。
  3. 前記分岐命令はリンク命令を伴う分岐であり、
    前記プログラムカウンタ機能格納要素に格納される前記プログラムカウンタ機能は、リンク命令を伴う前記分岐の実行に先立って、古いプログラムカウンタ機能を形成し、
    前記処理回路は、リターンアドレス機能格納要素内に格納するためのリターンアドレス機能を生成するために前記古いプログラムカウンタ機能を使用するように構成され、前記リターンアドレス機能は前記古いプログラムカウンタ機能によって特定された前記機能状態を保持する、請求項2に記載の装置。
  4. 前記処理回路は前記リターンアドレス機能を前記プログラムカウンタ機能格納要素に書き込み、リターンプログラムカウンタ機能を形成するために、リターン命令を実行するように構成され、その後、前記処理回路は前記リターンプログラムカウンタ機能によって特定される前記機能状態で動作する、請求項3に記載の装置。
  5. 前記処理回路は、前記機能状態が前記エグゼクティブ状態を示す場合、前記処理回路が前記エグゼクティブ状態で動作している間、機能によって制約されないよう構成することによって、前記デフォルト状態にあるよりも制約されないやり方で動作するように構成される、請求項1から4のいずれか一項に記載の装置。
  6. 前記機能状態が前記エグゼクティブ状態を示す場合、前記処理回路が前記エグゼクティブ状態で動作している間少なくとも1つの機能チェックを無効にすることによって、前記処理回路は前記デフォルト状態にあるよりも制約されないやり方で動作するように構成される、請求項1から4のいずれか一項に記載の装置。
  7. 前記少なくとも1つの無効にされる機能チェックが、
    プログラムカウンタ値がメモリからフェッチされることになる命令のアドレスを特定するために使用される場合、プログラムカウンタ機能を参照して実施される機能チェックと、
    非結合ポインタがメモリでアクセスされることになるデータブロックのアドレスを特定するために使用される場合、デフォルトデータ機能を参照して実施される機能チェックと
    のうちの少なくとも1つを含む、請求項6に記載の装置。
  8. 機能を格納するためのバンクされた機能格納要素の1つ又は複数のセットであって、バンクされた機能格納要素のそれぞれのセットは、前記デフォルト状態で動作する際前記処理回路によって実施される動作を制約するために使用される機能を格納するための第1の機能格納要素と、前記エグゼクティブ状態において動作している際前記処理回路によって実施される動作を制約するために使用される機能を格納するための第2の機能格納要素とを備える、機能格納要素の1つ又は複数のセットをさらに備え、
    バンクされた機能格納要素のそれぞれのセットの前記第1及び第2の機能格納要素において特定された前記機能は、前記機能状態が前記エグゼクティブ状態を示す場合、前記処理回路は前記デフォルト状態にあるよりも制約されないやり方で動作するようなものである、請求項1から4のいずれか一項に記載の装置。
  9. 前記処理回路によって実施される動作を制約するために使用される機能を格納するための1つ又は複数の機能格納要素であって、
    前記プログラムカウンタ機能への更新が前記機能状態を元の状態から宛先状態へと変更する場合、前記元の状態に関連する前記1つ又は複数の機能格納要素の前記機能が、後に復元できるように保存され、前記宛先状態に関連付けられる前記関連機能は次いで関連する前記1つ又は複数の機能格納要素に書き込まれる、1つ又は複数の機能格納要素
    をさらに備え、
    前記機能状態が前記エグゼクティブ状態に変わる時、前記1つ又は複数の機能格納要素に書き込まれた前記機能は、前記処理回路が前記デフォルト状態にあるよりも制約されないやり方で動作するようなものである、請求項1から4のいずれか一項に記載の装置。
  10. 前記分岐命令が前記機能状態を前記エグゼクティブ状態から前記デフォルト状態に変更させることになる機能を特定する場合、前記処理回路は前記分岐命令によって特定された前記機能を使用して更新されたものとして前記プログラムカウンタ機能の使用が許可されるかどうかを判断するためにチェック動作を実施するように構成される、請求項2に従属する場合に請求項1から9のいずれか一項に記載の装置。
  11. 前記チェック動作は、前記分岐命令が、前記プログラムカウンタ機能格納要素に格納された前記機能を、前記機能状態を前記エグゼクティブ状態から前記デフォルト状態へ変化させる方法で、更新するよう許可されているタイプの分岐命令であるかどうか判断することを含む、請求項10に記載の装置。
  12. 前記チェック動作について失敗した状態を判断すると、前記処理回路は所定のアクションを実施するように構成される、請求項10又は11に記載の装置。
  13. 前記所定のアクションは
    前記分岐命令の実行に対して例外を取ることと、
    フラグを設定し、前記プログラムカウンタ機能を更新するために前記分岐命令の前記実行を許可することであり、前記フラグを設定することは、次の命令が実行された時に例外を取らせることになることとのうちの1つを含む、請求項12に記載の装置。
  14. 前記エグゼクティブ状態において動作している際、前記処理回路は、前記機能状態を前記デフォルト状態に変更するために、前記プログラムカウンタ機能格納要素に格納されている前記プログラムカウンタ機能を修正することを許可されている、請求項1から13のいずれか一項に記載の装置。
  15. 前記機能のうちの1つ又は複数は結合ポインタを含む、請求項1から14のいずれか一項に記載の装置。
  16. 命令を実行するための処理回路であって、前記処理回路はデフォルト状態では機能ドメインで動作するように構成され、前記機能ドメインは前記命令を実行する際前記処理回路によって実施される動作を制約するために使用される機能を備える、処理回路を有する装置内で機能ドメインを管理する方法であって、
    プログラムカウンタ機能格納要素内に、プログラムカウンタ値を決定するために前記処理回路によって使用されるプログラムカウンタ機能を格納することであって、前記プログラムカウンタ機能は前記処理回路について機能状態を特定する、格納することと、
    前記機能状態が前記デフォルト状態を示すことに応じて前記処理回路を前記機能ドメインで動作させることと、
    前記機能ドメインの修正を可能とするべく前記機能状態がエグゼクティブ状態を示すことに応じて前記デフォルト状態におけるよりも制約されないやり方で前記処理回路を動作させることとを含む、方法。
  17. 命令を実行するための処理手段であって、前記処理手段はデフォルト状態では前記命令を実行する際前記処理手段によって実施される動作を制約するために使用される機能を備える機能ドメインで動作する、処理手段と、
    プログラムカウンタ値を決定するために前記処理手段によって使用されるプログラムカウンタ機能を格納するためのプログラムカウンタ機能格納要素手段であって、前記プログラムカウンタ機能は前記処理手段について機能状態を特定する、プログラムカウンタ機能格納要素手段とを備える装置であって、
    前記処理手段は前記機能状態が前記デフォルト状態を示すことに応じて前記機能ドメインで動作するためであり、
    前記機能ドメインの修正を可能とするべく前記処理手段は前記機能状態がエグゼクティブ状態を示すことに応じて前記デフォルト状態にあるよりも制約されないやり方で動作するためである、装置。
  18. 請求項1から15のいずれか一項に記載の装置に対応する命令実行環境を提供するためのホストデータ処理装置を制御するためのプログラム命令を含む、仮想マシンコンピュータプログラム。
  19. 請求項18に記載の前記仮想マシンコンピュータプログラムを記憶するコンピュータ可読記憶媒体。
JP2019563509A 2017-05-25 2018-04-27 機能ドメインを管理するための装置及び方法 Active JP7280196B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB201708395A GB2563010B (en) 2017-05-25 2017-05-25 An apparatus and method for managing a capability domain
GB1708395.7 2017-05-25
PCT/GB2018/051114 WO2018215733A1 (en) 2017-05-25 2018-04-27 An apparatus and method for managing a capability domain

Publications (2)

Publication Number Publication Date
JP2020521225A true JP2020521225A (ja) 2020-07-16
JP7280196B2 JP7280196B2 (ja) 2023-05-23

Family

ID=59270818

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019563509A Active JP7280196B2 (ja) 2017-05-25 2018-04-27 機能ドメインを管理するための装置及び方法

Country Status (9)

Country Link
US (1) US11347508B2 (ja)
EP (1) EP3631620A1 (ja)
JP (1) JP7280196B2 (ja)
KR (1) KR102528701B1 (ja)
CN (1) CN110622133A (ja)
GB (1) GB2563010B (ja)
IL (1) IL270500B2 (ja)
TW (1) TWI770172B (ja)
WO (1) WO2018215733A1 (ja)

Families Citing this family (5)

* 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
KR102221593B1 (ko) * 2020-10-23 2021-03-02 주식회사 오파스넷 단말의 설치 환경 유지를 위한 시스템
EP4092556A1 (en) * 2021-05-20 2022-11-23 Nordic Semiconductor ASA Bus decoder

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017032969A1 (en) * 2015-08-27 2017-03-02 Arm Limited An apparatus and method for controlling instruction execution behaviour

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5845331A (en) * 1994-09-28 1998-12-01 Massachusetts Institute Of Technology Memory system including guarded pointers
US7370210B2 (en) * 2002-11-18 2008-05-06 Arm Limited Apparatus and method for managing processor configuration data
GB2448151B (en) 2007-04-03 2011-05-04 Advanced Risc Mach Ltd Memory domain based security control within data processing systems
GB2448149B (en) * 2007-04-03 2011-05-18 Advanced Risc Mach Ltd Protected function calling
US7979685B1 (en) * 2007-11-27 2011-07-12 Oracle America, Inc. Multiple instruction execution mode resource-constrained device
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution 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
US9672164B2 (en) 2012-05-31 2017-06-06 Nxp Usa, Inc. Methods and systems for transitioning between a user state and a supervisor state based on a next instruction fetch address
US9619230B2 (en) * 2013-06-28 2017-04-11 International Business Machines Corporation Predictive fetching and decoding for selected instructions
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
US10579377B2 (en) * 2017-01-19 2020-03-03 International Business Machines Corporation Guarded storage event handling during transactional execution

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
IL270500A (ja) 2020-01-30
US20200050454A1 (en) 2020-02-13
KR102528701B1 (ko) 2023-05-04
GB201708395D0 (en) 2017-07-12
TWI770172B (zh) 2022-07-11
IL270500B2 (en) 2024-03-01
TW201901422A (zh) 2019-01-01
GB2563010A (en) 2018-12-05
KR20200010308A (ko) 2020-01-30
EP3631620A1 (en) 2020-04-08
IL270500B1 (en) 2023-11-01
US11347508B2 (en) 2022-05-31
CN110622133A (zh) 2019-12-27
JP7280196B2 (ja) 2023-05-23
GB2563010B (en) 2019-12-25
WO2018215733A1 (en) 2018-11-29

Similar Documents

Publication Publication Date Title
CN108292272B (zh) 用于管理有界指针的装置和方法
JP7280196B2 (ja) 機能ドメインを管理するための装置及び方法
KR102548226B1 (ko) 제한 포인터의 사용을 제어하는 장치 및 방법
JP7128206B2 (ja) 機能の使用を管理するための装置および方法
KR102533823B1 (ko) 자격과 관련된 허가들을 해석하는 장치 및 방법
JP7445431B2 (ja) 命令の実行を制御する装置および方法
JP2023038361A (ja) 命令セット内の変更を制御する装置及び方法
JP2023547065A (ja) ケイパビリティを使用してメモリへのアクセスを制約するための技法
JP7369720B2 (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: 7280196

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150