JP7369720B2 - アクションをトリガするための装置及び方法 - Google Patents

アクションをトリガするための装置及び方法 Download PDF

Info

Publication number
JP7369720B2
JP7369720B2 JP2020565317A JP2020565317A JP7369720B2 JP 7369720 B2 JP7369720 B2 JP 7369720B2 JP 2020565317 A JP2020565317 A JP 2020565317A JP 2020565317 A JP2020565317 A JP 2020565317A JP 7369720 B2 JP7369720 B2 JP 7369720B2
Authority
JP
Japan
Prior art keywords
action
data value
data
interpretation
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020565317A
Other languages
English (en)
Other versions
JP2021525415A (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 JP2021525415A publication Critical patent/JP2021525415A/ja
Application granted granted Critical
Publication of JP7369720B2 publication Critical patent/JP7369720B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/348Circuit details, i.e. tracer hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0766Error or fault reporting or storing
    • G06F11/0772Means for error signaling, e.g. using interrupts, exception flags, dedicated error registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1076Parity data used in redundant arrays of independent storages, e.g. in RAID systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Description

提案される技法はデータ処理の分野に関する。
いくつかのデータ処理装置は、例えばデバッグ時の使用又はメモリ使用誤りの検出時の使用において一定のメモリ・アクセスがなされると、アクションをトリガして実施するようにウォッチポイントを構成することができる。ウォッチポイントは、データ値がアドレッシング可能な記憶場所に記憶されるデータ処理装置の記憶装置に関連付けることができる。そのようなウォッチポイントの例としては、特定のデータ値が記憶装置からロードされた時にアクションをトリガさせるデータ・ウォッチポイントが挙げられる。別の実例としては、特定の記憶アドレスがアクセスされた特にアクションをトリガさせるアドレス・ウォッチポイントが挙げられる。
「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁
その有用性に関わらず、上述のウォッチポイントには不利な点がある。データ・ウォッチポイントに関連付けられるデータ値は、通常データへアクセスする際ウォッチポイントのアクションが実施することを意図されていない場合、通常データを表現するために使用することができない。したがって、データ・ウォッチポイントを設定することは、通常データを表現するために使用することができるデータ値の数を制限する。アドレス・ウォッチポイントの場合、典型的には設定されるそれぞれのアドレス・ウォッチポイントごとに比較器が必要とされる。ハードウェアにアドレス・ウォッチポイント用の多数のアドレス比較器を設けることは高価になることがあるため、実用においてはアドレス・ウォッチポイントを同時的に確立することができるアドレスの数は限定されることがある。
一実例の構成において、装置であって、メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路と、データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断し、データ値が第2の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義するかどうかを判断し、データ値が実施されるアクションを定義していると判断される場合、アクションの実施をトリガするためのアクション・トリガ回路とを備える、装置が提供される。
別の実例の構成において、方法であって、メモリのメモリ位置からデータ値を取り出すことと、データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断し、データ値が第2の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義しているかどうかを判断し、データ値が実施されるアクションを定義していると判断される場合、アクションの実施をトリガすることとを含む、方法が提供される。
さらなる実例において、ターゲット・プログラム・コードの命令の実行用の命令実行環境を提供するためのホスト・データ処理装置を制御するコンピュータ・プログラムであって、メモリのメモリ位置にデータ値をリクエストするためのメモリ・アクセス・プログラム・ロジックと、データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断し、データ値が第2の解釈にしたがって解釈されると判断される場合、データ値が実施されるアクションを定義するかどうかを判断し、データ値が実施されるアクションを定義していると判断される場合、アクションの実施をトリガするためのアクション・トリガ・プログラム・ロジックとを備える、コンピュータ・プログラムが提供される。記憶媒体は上述のコンピュータ・プログラムを記憶することができる。記憶媒体は非一時的な記憶媒体であってもよい。
本技法は、その実例を参照して添付の図面に図示されるように、単に例示としてさらに説明される。
一実例の配置構成による、装置のブロック図である。 有界ポインタ格納要素のセット内でポインタ値の設定又はポインタ値へのアクセスが試行される場合、エラーがトリガされ得、関連付けられる範囲情報によって示される範囲の外のアドレスを指定するためにそのポインタ値が使用される、命令のタイプの実例の図である。 一実例の配置構成による、有界ポインタに関連付けられるタグ・ビットの使用を示す図である。 実例による方法を概略的に示す図である。 実例による誤り緩和アルゴリズムの図である。 実例による誤り緩和アルゴリズムの図である。 実例による誤り緩和アルゴリズムの図である。 実例による誤り緩和アルゴリズムの図である。 実例による誤り緩和アルゴリズムの図である。 実例による方法を概略的に示す図である。 実例による装置を概略的に示す図である。 実例によるシミュレータを概略的に示す図である。
本開示の実例によるデータ処理装置は、所与のメモリ位置に記憶されたデータ値を異なる解釈にしたがって解釈できるようにする。
そのような異なる解釈を可能にするシステムの実例として、装置は有界ポインタをサポートすることができ、特定のアドレスを示すポインタが、ポインタが逆参照され得るアドレスの許容範囲を示す範囲情報に関連付けられている。例えば、そのようなポインタを「ファット・ポインタ」と称することがある。範囲情報に加え、そのような有界ポインタは、ポインタの使用に対して1つ又は複数のリストリクション/パーミッションを定義する他の関連付けられる属性を有することもできる。パーミッションを有するそのような有界ポインタはしばしば「機能(capability)」と呼ばれ、ひいてはそのような有界ポインタの使用は、有界ポインタによって指定されたポインタ値がどのように使用されるかに対して制約を課すことにより、強固なセキュリティを与えることができる。そのようなデータ処理装置では、所与のメモリ位置の内容を機能又はデータのいずれかとして解釈することができる。
本開示の実例において、このデータ機能性は、非データ解釈などの特定の解釈にしたがって解釈される場合、所与のデータ値を与えることにより拡張され、実施されるアクションを定義する。実例では、アクションは、対象の解釈には冗長であるデータ値空間内でエンコードされる。例えば、この解釈は、利用可能なデータ値の、すべてではなく一部を利用することができる。第2の解釈には利用されない残りのデータ値の少なくとも一部は、次いで実施されるアクションをエンコードするために使用することができる。このやり方において、ウォッチポイント・タイプの機能性はデータ解釈のために利用可能なデータ値空間を減らすことなく実装することができ、すなわちデータ値の全範囲が依然として利用可能である。データ・ウォッチポイントの上述の不利な点は、このように回避される。さらには、監視されるそれぞれのアドレスごとに専用のアドレス比較器が必要とされないため、アドレス・ウォッチポイントの上述の不利な点が回避される。
上述のように、一実例の装置は、メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路を備える。装置はデータ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断するためのアクション・トリガ回路を備える。実例では、第1の解釈はデータ値がデータであることであり、第2の解釈はデータ値がメタデータなどの非データであることである。データ値が第2の解釈にしたがって解釈されると判断される場合、アクション・トリガ回路はデータ値が実施されるアクションを定義しているかどうか判断する。データ値が実施されるアクションを定義していると判断される場合、アクション・トリガ回路はアクションの実施をトリガする。このように、装置は、実施されるアクションを定義するために第2の解釈にしたがって解釈されるデータ値を提供する。ひいては、これにより、多数のアドレス比較器を必要とすることなく、また第1の解釈においてデータ用の利用可能なエンコード空間を減らすことなく、潜在的にアクションをトリガするアクセスについて潜在的に多数のアドレスを監視できる。これはメモリ使用誤りの一定のクラスを検出するために特に有用であり得る(範囲外違反、use-after-free誤りなど、不正にアクセスされる可能性のある複数のメモリ・アドレスが比較的多く、アドレス・ウォッチポイントを使用してそのような誤りを捉えることが実際的でない場合)。
実例では、アクションは例えば例外をシグナリングすることを含むことがある誤り緩和アクションである。これは望ましくない又は認可されていない特定のメモリ領域からのロードに対して保護するための「カナリヤ」として使用することができる。
代替的又は追加的に、アクションは、カウンタを増分すること又はログ・ファイルを記憶することなどの診断的レコードを更新することを含むことがある。これにより、例外をシグナリングする必要なく、且つ実行フローを止めることなく、特定のメモリ領域からのロードを追跡し続けることができる。
アクションは異なるメモリ位置から異なるデータ値をリターンすることを含むこともできる。これにより、所望のデータ値をリターンしながらアクションを実施することができる。例えば、以下でより詳細に説明するように、解放されたメモリ位置はアクションを定義するデータ値で上書きすることができる一方で、元々そのメモリ位置に記憶されていたデータ値を、別のメモリ位置に記憶することができる。そのメモリ位置がアクセスされる際、アクションを実施することができ、また他のメモリ位置からのデータ値をリターンすることができる。これにより、例えば依然として期待されるデータをリターンしながら解放されたメモリ位置からのロードのレコードを維持できるため、現在の装置に具体的に書き込みがなされないコードの実行を妨げることなく現在定義されている装置をトランスペアレントに実装することができる。
実例では、データ値の取り出し及び関連するアクションはメモリ位置への試行される書き込みに応じて実施され、アクションは書き込みが実際に行われるかどうか判断することを含む。
関連する実例において、アクションは、メモリ位置への試行される書き込みに関連付けられるプロセッサの動作状態が、禁止されている動作状態であるかどうかを判断し、動作状態が禁止されている動作状態であると判断することに応じて、試行される書き込みを禁止することを含む。動作状態は、少なくとも1つの実行特権レベルであり得る。特定の特権レベルからの書き込みをこのように禁止することにより、どのプロセスがデータ値を上書きすることができるかの制御が可能となる。例えばデータ値をセットするプロセス以外のプロセスによるデータ値の偶発的な上書きを防ぐことができる。
実例では、上述のデータ値の取り出し、及び関連付けられるアクションの実施は、メモリ位置への試行される書き込みに応じて実施される。そのような実例では、アクションは試行される書き込みが実際に実施されるかどうかを判断することを含むことがある。例えば、これによりアクションを、禁止された書き込みが試行されたかどうかに基づかせることができる。
実例では、アクション・トリガ回路は、メモリ位置に関連付けられる制御値に基づいて、データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断する。例えば、制御値はタグ・ビットであってもよい。制御値は、制御値記憶用に割り当てられるメモリの領域内にある制御値メモリ位置に記憶される。代替的に、制御値は、メモリ位置に隣接するなど、メモリ位置に関連付けられる制御値メモリ位置に記憶されてもよい。このように、制御値記憶の位置は特定のシステムの要求及び制限に基づいて決定することができる。
実例では、データ値が少なくとも部分的に1つ又は複数の所定の値のうちの1つに一致する場合に、アクション・トリガ回路は、アクションをトリガする。例えば、上述のように、アクションは第2の解釈にしたがってデータ値における冗長性により定義することができ、それによって特定の所定の値は第2の解釈のために利用されない。そのような所定のデータ値は、次に実施されるアクションを定義するために使用することができる。
一部の処理装置は有界ポインタの使用をサポートすることができる。ポインタ自身は、例えば、アクセスされるデータ値又は実行される命令のアドレスを指し示すことができるか、又はそのようなアドレスを決定するために使用することができる。しかしながら、ポインタは、ポインタを使用する際アドレスの許容可能な範囲を示す関連付けられる範囲情報を有することもできる。これは、例えば、ポインタから決定されたアドレスが一定の境界内に留まり、振る舞いのセキュリティ又は機能的な正常性を維持することを保証するために有用であり得る。例えば、所与の処理についてある機能が定義され、定義された機能以外の動作を実行するような試行があるとエラーをトリガすることができる機能ベースのアーキテクチャに対する興味が高まっている。有界ポインタ用の範囲情報は、そのようなアーキテクチャのために定義される機能情報の一部であり得、機能ベースのアーキテクチャ内でそのような有界ポインタ(その関連付けられる機能情報を含む)は、機能と称することができる。
したがって、装置は、ポインタを使用する際、許容可能なアドレスの範囲を示す関連付けられた範囲情報を有するポインタを記憶するために使用される記憶要素を含むことができる。それぞれの有界ポインタ記憶要素は、汎用メモリ内のレジスタ又はメモリ位置、例えば、スタック・メモリ上の位置であり得る。
ある命令を使用して、ポインタを取得するために、そのような有界ポインタ記憶要素を参照することができ、次いでポインタは命令の動作中に必要とされるメモリ内のアドレスを導出するために使用される。ポインタはメモリ・アドレスを直接特定するために使用することができ、又は例えば、ポインタ値へオフセットを加算することによってメモリ・アドレスを導出するために使用することができる。
上述のように、実例では、第1の解釈はデータ値がデータであることである。関連する実例では、第2の解釈はデータ値がメタデータであることである。例えばメタデータは、メタデータが記憶されるメモリ位置とは異なるさらなるメモリ位置に記憶されるデータ値に関連する。さらなるメモリ位置に記憶されるデータ値は第1の解釈にしたがって解釈することができる。有界ポインタの使用がサポートされる実例では、さらなるメモリ位置に記憶されるデータ値が、有界ポインタのポインタ値を含むことができ、メタデータが有界ポインタについての境界を含むことができる。いくつかのそのような実例では、アクション・トリガ回路は、ポインタ値が境界の外側にあるかどうか判断し、ポインタ値が境界の外側にあると判断することに応じて、例外をシグナリングする。この方法では、機能の使用をサポートしているシステムのデータ処理機能性は、本明細書において他所で説明されるアクションのトリガを提供するように拡張することができる。
第2の解釈が、データ値がメタデータであることである他の実例では、メタデータはさらなるメモリ位置に記憶されるデータに関連付けられる誤り訂正コードである。この方法では、誤り訂正コードの使用をサポートしているシステムのデータ処理機能性は、本明細書において他所で説明されるアクションのトリガを提供するように拡張することができる。
次に、図面を参照して特定の実例を説明する。
図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:Program Counter Capability)レジスタ80が、命令がレベル1の命令キャッシュ20からフェッチされる際、フェッチ工程6で類似の機能性を提供するためにやはり使用されてもよい。特に、プログラム・カウンタ・ポインタはフィールド82に格納され得、この時PCC80はまた、有界ポインタ格納要素60のセット内のポインタのそれぞれに与えられる範囲及びリストリクション情報と同様に、範囲情報84及び適当なリストリクション情報86を与える。
図3は、タグ・ビットが個々のデータ・ブロックに関連付けられて、これらのデータ・ブロックが第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを特定するためにどのように使用されるか概略的に図示している。この実例において、第1の解釈はデータ・ブロックが通常データとして解釈されることであり、第2の解釈はデータ・ブロックが機能(すなわち有界ポインタ及び関連付けられる制限情報)を表現していると解釈されることである。特に、メモリ・アドレス空間110は、典型的には指定されたサイズを有することになる一連のデータ・ブロック115を格納することになる。純粋に図示のために、この実例において、それぞれのデータ・ブロックは128ビット含むと仮定する。それぞれのデータ・ブロック115に関連して、タグ・フィールド120が提供され、一実例において、これはタグ・ビットと称される単一のビット・フィールドであり、関連付けられるデータ・ブロックが非データ、例えば機能として解釈されることを特定するためにセットされ(すなわち第2の解釈にしたがって解釈される)、関連付けられるデータ・ブロックが通常データを表現することを示すためにクリアされる(すなわち第1の解釈にしたがって解釈される)。セット状態又はクリア状態に関連付けられる実際の値は、実装形態によって異なっていてよいが、純粋に図示のため、一実例においては、タグ・ビットが値1を有する場合、関連付けられるデータ・ブロックが非データとして解釈されることを示し、タグ・ビットが値0を有する場合は関連付けられるデータ・ブロックが通常データを含むことを示すことを了解されたい。
本実例では、第2の非データの解釈はデータ・ブロックが機能を含むことである。機能が、図3で示される機能レジスタ100などの有界ポインタ・レジスタ(本明細書では機能レジスタとも称する)60のうちの1つにロードされると、次にタグ・ビットは機能情報を伴って移動する。したがって、機能が機能レジスタ100にロードされると、ポインタ102、範囲情報104及びリストリクション情報106(以降でパーミッション情報と称する)が機能レジスタにロードされることになる。加えて、その機能レジスタに関連して、又はその中の特定のビット・フィールドとして、タグ・ビット108はその内容が機能を表すことを特定するためにセットされることになる。同様に、機能がメモリに格納し戻される場合、関連するタグ・ビット120は機能が格納されるデータ・ブロックに関連付けられてセットされることになる。そのような手法によって、機能と通常データとを区別し、ひいては通常データを機能として使用することができないことを保証することが可能である。
タグ・ビットが所与のデータ・ブロックが機能を表現することを示している場合、データ・ブロックは実施されるアクションを定義することができる。実例では、これはデータ・ブロック内の冗長な空間内でエンコードされる。例えば、特定のデータ値は機能を定義するために必要とされないことがある。そのような値は、次に実施される1つ又は複数のアクションを定義するために使用することができる。
図4は、本開示の実例による方法400を概略的に示している。方法400は例えば一般的な処理回路、又は方法400を実装するよう特別に構成された特殊回路に実装することができる。
ブロック405において、例えば図1に関連して上述したように、データ値はメモリのメモリ位置から取り出される。
ブロック410において、データ値を第1の解釈又は第2の解釈のどちらにしたがって解釈するか判断される。上述のように、実例では、第1の解釈はデータ値がデータに対応することであり、第2の解釈はデータ値が機能に対応することである。例えば、ブロック410の判断は、図3に関連して上述したように、データ値に関連付けられるタグ・ビットに基づくことができる。
ブロック410でデータが第2の解釈にしたがって解釈されると判断される場合、フローはブロック415に進む。
ブロック415において、データ値が実施されるアクションを定義しているかどうか判断される。そのようなアクションの特定の実例、及びデータ値内でそれらがどのようにエンコードされ得るかを、本開示の他所で説明する。例えば、アクションは誤り緩和アクションであり得る。
ブロック415でデータ値が実施されるアクションを定義していると判断される場合、フローはブロック420に進む。
ブロック420において、アクションが実施される。
それにより方法400は所与のデータ値を異なる解釈にしたがって解釈されるようにし、さらには、第2の解釈に対応していると示されるデータ値にアクションの実施をトリガさせる。例えば、本明細書において他所で説明されるように、実施されるアクションは、それ以外では第2の解釈によって必要とされないデータ値を利用することにより、冗長性を活用することによって定義することができる。このやり方で、アクションが実施されるかどうかを表現するための追加的な記憶装置を必要とすることなく、システムのデータ処理機能性を向上させる。
上述のように、実施されるアクションは誤り緩和アクションであり得る。例えば、アクションは、例えばログ・ファイルを記憶すること若しくは更新すること、又はカウンタを増分することにより、診断的レコードを更新することを含むことがある。代替的又は追加的に、アクションは元々アクセスされていたメモリ位置とは異なるメモリ位置からのデータ値をリターンすることを含むことがある。次に、そのようなアクションの実例を、図5A~図5Eを参照して説明する。
図5Aは、本開示の方法が実装されておらず、そのためデータ値が第1のデータの解釈又は第2の非データの解釈にしたがって解釈され得るが、第2の解釈にしたがうデータ値は実施されるアクションを定義していない、比較のシステムのメモリ500を概略的に示している。
メモリ500は、メモリ位置505a~505eにデータ値A~Eを含む。取り出しリクエスト510はメモリ位置505cに向けられており、データ値Cは、取り出し515で取り出される。
図5Bは、メモリ位置505a~505eの解放後のメモリ500を概略的に示している。メモリ位置505a~505eは解放されているが(破線の描写で示されている)、データ値A~Eは上書きされておらず、そのためメモリ位置505a~505eは依然としてデータ値A~Eを含んでいる。
取り出しリクエスト520はメモリ位置505cに向けられている。この取り出しリクエストが(例えば解放されたメモリ位置へのアクセスを妨げるシステム・プロセスによって)妨げられない場合、データ値Cは取り出し525で取り出される。いくつかのシステムにおいて、例えばクラッシュを引き起こすのではなく実行フローを進めさせるために、この振る舞いは望ましい。
図5Cは、本開示の実例によるメモリ530を概略的に示している。メモリはメモリ位置535a~535eを備えており、データ値A~Eをそれぞれ含むため、メモリ530は図5Aのメモリ500と同一の設定を有している。
図5Dは、メモリ位置535aから535eを解放するプロセスの第1のステップの後のメモリ530を概略的に示している。メモリ位置535a~535eの内容(すなわちデータ値A~E)は、メモリ位置540a~540eの異なるセットへ複製される。
図5Eは、メモリ位置535a~535eを解放するプロセスの完了の後のメモリ530を概略的に示している。さらなるデータ値A2~E2はメモリ位置535a~535eに書き込まれており、これに続いてメモリ位置535a~535eは解放されている(破線の描写で示されている)。
例えば本明細書において他所で説明されるようにメモリ位置535a~535eのそれぞれに関連付けられるタグ・ビットによって、さらなるデータ値A2~E2が非データの解釈にしたがって解釈されるデータ値であるという指標は記憶されている。本実例において、それぞれのデータ値535a~535eは、その元々の内容が複製された対応するメモリ位置540a~540eを特定し、また本明細書において他所で説明されるように誤り緩和アクションも定義する。例えば、対応するメモリ位置540a~540eは、メモリ位置535a~535eからのオフセットによって特定することができる。
取り出しリクエスト545は、解放されたメモリ位置535cに向けられている。データ値C2がデータを表現しておらず、代わりに対応するメモリ位置540cを特定し、やはり誤り緩和アクションを定義しているかどうか判断される。これに基づいて、対応するメモリ位置540cの内容、すなわちデータ値Cは特定550において特定される。データ値Cは取り出し555において取り出され、誤り緩和アクションが実施される。このやり方で、データ値Cの取り出しを妨げることなく、誤り緩和が定義されて実施される。このように、実行は図5A~図5Bに関連して上述したのと同じやり方でデータ値Cに基づいて進み、一方で誤り緩和アクションを実施させる。したがって、誤り緩和機能性はトランスペアレントに実装することができ、それによって誤り緩和アクションの実際の実施とは別に、実行のフローは図5A~図5Bのシステムなど比較のシステムとは変わらないままである。誤り緩和は、ユーザ・エクスペリエンスにマイナスの影響を及ぼすことなく、このように実装することができる。
図6は、本開示の実例による方法600を概略的に示している。この実例において、所与のデータ値の第1の解釈はそれがデータを表現していることであり、第2の解釈はそれが第1の解釈にしたがって解釈されるさらなるデータ値に関連付けられるメタデータを表現していることである。方法600は例えば一般的な処理回路、又は方法600を実装するよう特別に構成された特殊回路に実装することができる。
ブロック605において、例えば図1に関連して上述したように、データ値はメモリのメモリ位置から取り出される。
ブロック610において、データ値を第1の解釈又は第2の解釈のどちらにしたがって解釈するか判断される。例えば、ブロック610の判断は、図3に関連して上述したように、データ値に関連付けられるタグ・ビットに基づくことができる。
データ値が第1の解釈にしたがって解釈されると判断される場合、フローはブロック615に進み、データ値はデータとして解釈される。
データ値が第2の解釈にしたがって解釈されると判断される場合、フローはブロック620に進む。ブロック620において、データ値が実施されるアクションを定義しているかどうか判断される。そのようなアクションの特定の実例、及びデータ値内でそれらがどのようにエンコードされ得るかを、本開示の他所で説明する。例えば、アクションは誤り緩和アクションであり得る。
データ値が実施されるアクションを定義していると判断される場合、フローはブロック625に進み、アクションの実施がトリガされる。
アクションの実施に続いて、フローはブロック630に進む。代替的に、ブロック620でデータ値が実施されるアクションを定義していないと判断される場合、フローはブロック625をスキップして直接ブロック630に進む。ブロック630において、データ値はメタデータとして解釈される。
図7は、本開示の実例による装置700を概略的に示している。装置のコンポーネントは、例えば、1つ又は複数の汎用処理コンポーネント内にルーチンとして実装すること、及び/又は専用の回路に実装することができる。
装置700は、メモリ710のメモリ位置からデータ値を取り出すためのメモリ・アクセス回路を備える。メモリ710は装置700の外部にあってもよい。
装置700はアクション・トリガ回路715を備える。アクション・トリガ回路715は、メモリ・アクセス回路705からデータ値を受け取る。
アクション・トリガ回路715は処理ブロック715a~515cを含む。
ブロック715aはアクション・トリガ回路715に、データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断させる。
データ値が第2の解釈にしたがって解釈される場合、ブロック715bはアクション・トリガ回路715にデータ値が実施されるアクションを定義しているかどうか判断させる。
データ値が実施されるアクションを定義している場合、ブロック715cはアクション・トリガ回路715に、アクションの実施をトリガさせる。
このやり方で、装置700は本開示の方法を実施するように構成される。
図8は使用され得るシミュレータの実装形態を図示している。先に説明された実施例は考慮される技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の点で本発明を実装している一方、本明細書で説明される実施例にしたがっており、コンピュータ・プログラムの使用を通じて実装される命令実行環境を提供することも可能である。そのようなコンピュータ・プログラムは、それらがハードウェア・アーキテクチャのソフトウェアベースの実装形態を提供する限りにおいて、しばしばシミュレータと称される。シミュレータ・コンピュータ・プログラムの種類としては、エミュレータ、仮想マシン、モデル、及びダイナミック・バイナリ変換器を含むバイナリ変換器が挙げられる。典型的には、シミュレータ実装形態は、任意選択でホスト・オペレーティングシステム810を実行させ、シミュレータ・プログラム815をサポートする、ホスト・プロセッサ805上で実行することができる。いくつかの配置構成において、ハードウェアと提供される命令実行環境との間に複数のシミュレーションのレイヤ、及び/又は同一のホスト・プロセッサ上に設けられる複数の別個の命令実行環境があってもよい。歴史的には、適度な速度で実行するシミュレータ実装形態を提供するためにはパワーのあるプロセッサが要求されてきたが、そのような手法は一定の状況下で正当化されてもよく、例えば互換性又は再利用目的のために別のプロセッサにとってネイティブなコードを実行する所望がある場合などである。例えば、シミュレータ実装形態は、ホスト・プロセッサ・ハードウェアによってサポートされていない追加的な機能性を伴う命令実行環境を提供すること、又は典型的には異なるハードウェア・アーキテクチャに関連付けられる命令実行環境を提供することができる。シミュレーションの概略は「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、Winter 1990 USENIX Conference、53~63頁に示されている。
実施例が特定のハードウェア構築物又は特徴を参照して以前に説明されてきた範囲で、シミュレートされる実施例において等価な機能性が適切なソフトウェア構築物又は特徴によって提供され得る。例えば、特定の回路がコンピュータ・プログラム・ロジックとしてシミュレートされる実施例に実装されてもよい。同様に、レジスタ又はキャッシュなどのメモリ・ハードウェアが、ソフトウェア・データ構造体としてシミュレートされた実施例に実装されてもよい。以前に説明された実施例において参照されるハードウェア要素の1つ又は複数がホスト・ハードウェアに存在する配置構成(例えば、ホスト・プロセッサ805)において、いくつかのシミュレートされる実施例は適切であればホスト・ハードウェアを利用することができる。
シミュレータ・プログラム815はコンピュータ可読記憶媒体820(非一時的媒体であってもよい)に記憶することができ、ターゲット・コード825(アプリケーション、オペレーティング・システム、及びハイパーバイザを含み得る)にプログラム・インターフェース(命令実行環境)を提供するが、ターゲット・コード825はシミュレータ・プログラム815によってモデル化されるハードウェア・アーキテクチャのアプリケーション・プログラム・インターフェースと同一のものである。したがって、上述のアクションのトリガを含むターゲット・コード825のプログラム命令は、命令実行環境内からシミュレータ・プログラム815を使用して実行することができ、それによって、上で議論した装置2のハードウェア特徴を実際には有していないホスト・コンピュータ805がこれらの特徴をエミュレートすることができる。例えば、シミュレータ・プログラム815は、ターゲット・コード825の命令によるメモリへのアクセスを制御するためのメモリ・アクセス・プログラム・ロジック830を含むことができる。例えば、メモリ・アクセス・プログラム・ロジック830は、メモリのメモリ位置にデータ値をリクエストする命令を含むことができる。また、シミュレータ・プログラム815はアクション・トリガ・プログラム・ロジック835を含むことができ、上述の方法に関連してより詳細に説明したようなアクションの実施をトリガするための命令を含む。
上述の技法の使用を通じて、データ・ウォッチポイント及び/又はアドレス・ウォッチポイントが実装される比較のシステムの不利な点を回避しつつも、アクションをトリガする機能性をデータ処理システムに実装することができることが了解されよう。さらには、実行フローへの影響を低減又は除去することができる。
本明細書において説明される方法は、ハードウェア及び/又はソフトウェアで実施することができる。そのようなハードウェアは、汎用プロセッサ、又は特定用途向け集積回路若しくはフィールド・プログラマブル・ゲート・アレイなどのより特殊な装置であってもよい。
本発明の図示的な実例を本明細書において添付の図面を参照して詳細に説明してきたが、本発明はこれらの正確な実例に限定されず、当業者により添付の特許請求の範囲によって定義されるような本発明の範囲及び精神を逸脱することなく、その様々な変形、付加、及び修正がそこになされ得ることを理解されたい。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴と独立請求項の特徴との様々な組み合わせが可能である。

Claims (20)

  1. 装置であって、
    メモリのメモリ位置からデータ値を取り出すためのメモリ・アクセス回路と、
    前記データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断し、
    前記データ値が前記第2の解釈にしたがって解釈されると判断される場合、
    前記データ値が実施されるアクションを定義しているかどうかを判断し、
    前記データ値が実施されるアクションを定義していると判断される場合、前記アクションの実施をトリガするための、
    アクション・トリガ回路と
    を備える、装置。
  2. 前記アクションが誤り緩和アクションである、請求項1に記載の装置。
  3. 前記アクションが例外をシグナリングすることを含む、請求項1又は2に記載の装置。
  4. 前記アクションが異なるメモリ位置から異なるデータ値をリターンすることを含む、請求項1から3までのいずれかに記載の装置。
  5. 前記アクションが診断的レコードを更新することを含む、請求項1から4までのいずれかに記載の装置。
  6. 前記アクションが
    前記メモリ位置への試行される書き込みに関連付けられるプロセッサの動作状態が、禁止されている動作状態であるかどうかを判断することと、
    前記動作状態が前記禁止されている動作状態であると判断することに応じて、前記試行される書き込みを禁止することと
    を含む、請求項1から5までのいずれかに記載の装置。
  7. 前記動作状態が、少なくとも1つの実行特権レベルである、請求項6に記載の装置。
  8. 前記アクション・トリガ回路が、前記メモリ位置に関連付けられる制御値に基づいて、前記データ値が前記第1の解釈又は前記第2の解釈のどちらにしたがって解釈されるかを判断する、請求項1から7までのいずれかに記載の装置。
  9. 前記制御値が制御値メモリ位置に記憶され、前記制御値メモリ位置が制御値記憶用に割り当てられる前記メモリの領域内にある、請求項8に記載の装置。
  10. 前記制御値が、前記メモリ位置に関連付けられる制御値メモリ位置に記憶される、請求項8に記載の装置。
  11. 前記制御値メモリ位置が、前記メモリ位置に隣接する、請求項10に記載の装置。
  12. 前記データ値が少なくとも部分的に1つ又は複数の所定の値のうちの1つに一致する場合に、前記アクション・トリガ回路が、前記アクションをトリガする、請求項1から11までのいずれかに記載の装置。
  13. 前記第1の解釈が、前記データ値がデータであることである、請求項1から12までのいずれかに記載の装置。
  14. 前記第2の解釈が、前記データ値が前記メモリ位置とは異なるさらなるメモリ位置に記憶されるデータ値に関連するメタデータであることであり、前記さらなるメモリ位置に記憶される前記データ値が前記第1の解釈にしたがって解釈される、請求項1から13までのいずれかに記載の装置。
  15. 前記さらなるメモリ位置に記憶される前記データ値が、有界ポインタのポインタ値を含み、
    前記メタデータが前記有界ポインタについての境界を含む、
    請求項14に記載の装置。
  16. 前記アクション・トリガ回路は、
    前記ポインタ値が前記境界の外側にあるかどうか判断し、
    前記ポインタ値が前記境界の外側にあると判断することに応じて、例外をシグナリングする、
    請求項15に記載の装置。
  17. 前記メタデータが、前記さらなるメモリ位置に記憶される前記データに関連付けられる誤り訂正コードを含む、請求項14に記載の装置。
  18. プロセッサによって実行される方法であって、
    メモリのメモリ位置からデータ値を取り出すことと、
    前記データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断し、
    前記データ値が前記第2の解釈にしたがって解釈されると判断される場合、
    前記データ値が実施されるアクションを定義しているかどうかを判断し、
    前記データ値が実施されるアクションを定義していると判断される場合、前記アクションの実施をトリガすることと
    を含む、方法。
  19. ターゲット・プログラム・コードの命令の実行用の命令実行環境を提供するためのホスト・データ処理装置を制御するコンピュータ・プログラムであって、
    メモリのメモリ位置にデータ値をリクエストするためのメモリ・アクセス・プログラム・ロジックと、
    前記データ値が第1の解釈又は第2の解釈のどちらにしたがって解釈されるかを判断し、
    前記データ値が前記第2の解釈にしたがって解釈されると判断される場合、
    前記データ値が実施されるアクションを定義しているかどうかを判断し、
    前記データ値が実施されるアクションを定義していると判断される場合、前記アクションの実施をトリガするための、
    アクション・トリガ・プログラム・ロジックとして、コンピュータを機能させるためのコンピュータ・プログラム。
  20. 請求項19に記載のコンピュータ・プログラムを記憶する記憶媒体。
JP2020565317A 2018-05-31 2019-05-02 アクションをトリガするための装置及び方法 Active JP7369720B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1808888.0 2018-05-31
GB1808888.0A GB2574231B (en) 2018-05-31 2018-05-31 An apparatus and method for triggering action performance
PCT/GB2019/051219 WO2019229412A1 (en) 2018-05-31 2019-05-02 An apparatus and method for triggering action

Publications (2)

Publication Number Publication Date
JP2021525415A JP2021525415A (ja) 2021-09-24
JP7369720B2 true JP7369720B2 (ja) 2023-10-26

Family

ID=62872662

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020565317A Active JP7369720B2 (ja) 2018-05-31 2019-05-02 アクションをトリガするための装置及び方法

Country Status (6)

Country Link
US (1) US11755243B2 (ja)
JP (1) JP7369720B2 (ja)
KR (1) KR20210014115A (ja)
CN (1) CN112106029B (ja)
GB (1) GB2574231B (ja)
WO (1) WO2019229412A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065834A (ja) 2006-09-08 2008-03-21 Samsung Electronics Co Ltd フュージョンメモリ装置及び方法
JP2015114862A (ja) 2013-12-12 2015-06-22 日本電気株式会社 データ処理装置、データ処理方法およびデータ処理プログラム
JP2018536238A (ja) 2015-12-02 2018-12-06 エイアールエム リミテッド 有界ポインタを管理するための装置および方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0695999A3 (en) * 1994-06-30 1998-07-08 Digital Equipment Corporation System bus with separate address and data bus protocols
US5926819A (en) * 1997-05-30 1999-07-20 Oracle Corporation In-line triggers
US6557119B1 (en) * 1999-10-01 2003-04-29 Stmicroelectronics Limited Microcomputer debug architecture and method
US6950703B1 (en) * 2001-06-08 2005-09-27 Pacesetter, Inc. Implantable medical device with single bit upset error detection and correction
US7711914B2 (en) * 2005-06-28 2010-05-04 Hewlett-Packard Development Company, L.P. Debugging using virtual watchpoints
US20070226471A1 (en) * 2006-03-13 2007-09-27 Arm Limited Data processing apparatus
US7783865B2 (en) * 2007-08-01 2010-08-24 International Business Machines Corporation Conditional data watchpoint management
US8171413B2 (en) * 2008-04-02 2012-05-01 Manatee County, A Political Subdivision Of The State Of Florida System and method for displaying information about subnets
US9032374B2 (en) * 2008-04-03 2015-05-12 International Business Machines Corporation Metadata-integrated debugger
US7823019B2 (en) * 2008-05-08 2010-10-26 Arm Limited Debug circuitry
WO2011043769A1 (en) * 2009-10-07 2011-04-14 Hewlett-Packard Development Company, L.P. Notification protocol based endpoint caching of host memory
US9910794B2 (en) * 2014-09-26 2018-03-06 Infineon Technologies Ag Processing data
US11782601B2 (en) * 2015-01-20 2023-10-10 Ultrata, Llc Object memory instruction set
US10320813B1 (en) * 2015-04-30 2019-06-11 Amazon Technologies, Inc. Threat detection and mitigation in a virtualized computing environment
GB2541714B (en) * 2015-08-27 2018-02-14 Advanced Risc Mach Ltd An apparatus and method for controlling instruction execution behaviour
US9904594B2 (en) * 2016-04-15 2018-02-27 Micron Technology, Inc. Monitoring error correction operations performed in memory
GB2553311B (en) * 2016-08-31 2020-05-20 Advanced Risc Mach Ltd An apparatus and method for controlling assertion of a trigger signal to processing circuitry
US10069597B2 (en) * 2016-09-07 2018-09-04 Western Digital Technologies, Inc. Aggregated metadata transfer at a data storage device
GB2571350B (en) * 2018-02-27 2020-10-21 Advanced Risc Mach Ltd A method of accessing metadata when debugging a program to be executed on processing circuitry
US11360910B2 (en) * 2019-06-28 2022-06-14 Intel Corporation Prevention of trust domain access using memory ownership bits in relation to cache lines

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008065834A (ja) 2006-09-08 2008-03-21 Samsung Electronics Co Ltd フュージョンメモリ装置及び方法
JP2015114862A (ja) 2013-12-12 2015-06-22 日本電気株式会社 データ処理装置、データ処理方法およびデータ処理プログラム
JP2018536238A (ja) 2015-12-02 2018-12-06 エイアールエム リミテッド 有界ポインタを管理するための装置および方法

Also Published As

Publication number Publication date
GB201808888D0 (en) 2018-07-18
KR20210014115A (ko) 2021-02-08
WO2019229412A1 (en) 2019-12-05
US11755243B2 (en) 2023-09-12
GB2574231B (en) 2020-12-30
CN112106029B (zh) 2024-08-23
GB2574231A (en) 2019-12-04
JP2021525415A (ja) 2021-09-24
US20210216244A1 (en) 2021-07-15
CN112106029A (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
CN110622133B (zh) 用于管理能力域的设备及方法
US11023237B2 (en) Apparatus and method for interpreting permissions associated with a capability
EP3881189B1 (en) An apparatus and method for controlling memory accesses
JP2021512400A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
US20230409494A1 (en) Technique for constraining access to memory using capabilities
US20240202139A1 (en) Technique for constraining access to memory using capabilities
JP2021512405A (ja) メモリ・アクセスにおける保護タグ・チェックの制御
JP7369720B2 (ja) アクションをトリガするための装置及び方法
US20240193101A1 (en) Technique for constraining access to memory using capabilities
TW202340955A (zh) 使用能力約束記憶體存取之技術

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220425

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230411

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230418

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230718

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231016

R150 Certificate of patent or registration of utility model

Ref document number: 7369720

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150