JP2013539574A - 不正なモード変更の操作 - Google Patents

不正なモード変更の操作 Download PDF

Info

Publication number
JP2013539574A
JP2013539574A JP2013523663A JP2013523663A JP2013539574A JP 2013539574 A JP2013539574 A JP 2013539574A JP 2013523663 A JP2013523663 A JP 2013523663A JP 2013523663 A JP2013523663 A JP 2013523663A JP 2013539574 A JP2013539574 A JP 2013539574A
Authority
JP
Japan
Prior art keywords
instruction
change
mode
program
unauthorized
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
JP2013523663A
Other languages
English (en)
Other versions
JP5699213B2 (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 JP2013539574A publication Critical patent/JP2013539574A/ja
Application granted granted Critical
Publication of JP5699213B2 publication Critical patent/JP5699213B2/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/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • 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
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • 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/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • 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
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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
    • 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)
  • Mathematical Physics (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)

Abstract

複数の動作モードをサポートするデータ処理システム(2)には、例えば、モード変更プログラム命令または例外リターン命令の実行に応答した、より高い権限のレベルへの変更といった不正なモード変更を実施するためのプログラム命令による試行を検出する、不正変更の検出回路(22)が提供される。かかる変更が検出された場合、不正変更のビットCPSR.ILが設定される。命令復号器(12)は、その後のプログラム命令を未定義命令として扱う設定値を有する、不正変更のビットに応答する。次いで、これらの未定義命令は、未定義命令例外または他のタイプの応答をトリガする場合がある。

Description

本発明は、データ処理システムの分野に関する。より具体的には、本発明は、複数の動作モードを有するデータ処理システム、およびそれらのモード間の変更の管理に関する。
データ処理システムに複数の動作モードを提供することは既知である。これらのモードは、例えば、異なる権限のレベルに対応してもよく、これらの異なる権限レベルは、システムのリソースへの異なるアクセス権を有する。権限レベルは、高い権限を有するモードにある時、システムが、より低い権限を有するモードで実行する時にアクセス可能ではない、メモリアドレススペースの領域にアクセスすることが可能であるような、ハードウェア権限レベルであってもよい。モードはまた、例外レベル操作のシステム内の異なる例外レベルに対応してもよい。複数の動作モードを有するかかるデータ処理システムの例は、英国のARM Limited of Cambridgeによって設計されるプロセッサである。
複数の動作モードを有するかかるデータ処理システム内では、何らかのモードの変更が不正である(例えば、許容されるべきではない)ことが生じる。例として、安全対策として、モードをより高い権限のレベルに変更するソフトウェア命令を実行し、それによって、システムのリソースへのより多くのアクセスを得ることは、可能であるべきではない。かかる変更は、例外機構を使用することによってより良好に行われ、それによって、例外操作コードは、より高い権限のレベルへのエントリに対処し、かつシステムの安全を保つことができる。データ処理システムに、かかる不正なモード変更を防止するハードウェア機構を提供することが既知である。しかしながら、かかるモード変更が防止されている時のシステムの挙動は、実装ごとに変化する可能性があるだけでなく、防止されている不正な変更のタイプに依存して変化する可能性がある。
一態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
(i)前記不正なモードの変更を抑制し、かつ
(ii)不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
不正変更の検出回路と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
本技術は、均一に適用されてもよく、かつ不正な変更応答をトリガするようにデータ依存性を必要とすることによる著しい実装の困難をそれ自体が導入しない、不正なモードの変更の検出への一貫性のある応答を提供する。データ依存性は、変更されているモードが、それ自体が実行パイプラインの後半でプログラムされる場合がある、メモリまたはレジスタのいずれかから伝送される時に生じる可能性がある。不正変更のビットが既定の値を有する時に、その後のプログラム命令が未定義命令として扱われる状態で、不正変更のビットを既定の値に再設定することは、不正な変更への応答が、効果的に遅延され、かつ現在は未定義のその後の命令への応答として対処されることを可能にする。これは、不正なモード変更を検出する上でのデータ依存性問題を軽減する。
不正変更のビットが装置内の多くの異なる場所に記憶される可能性がある一方で、一部の実施形態において、それは、装置の現在の状態を定義するデータを記憶する、現在のプログラムステータスレジスタの一部を形成する。命令が未定義命令として扱われるべきであることを示す、不正変更のビットは、システムの現在の状態の一部として適正に扱われ、したがって、現在のプログラムステータスレジスタ内に適切に記憶される。
不正なプログラム命令は、種々の異なる形態を有することができる。一形態において、明示的なモードの変更命令は、それが、許容されないモードの変更、例えば、より高い権限のレベルへの変更を特定する場合、不正なプログラム命令を構成する。不正なプログラム命令の別の形態は、新たなプログラムカウンタ値、および許容されない新たなモードを特定する、例外命令からのリターン、例えば、より高い権限のレベルへのリターンになることになる。
例外命令からのリターンは、それ自体が、異なる形態を有することができる。1つの例示的な形態において、新たなプログラムカウンタ値、および新たなモードは、システム内に記憶されるそれぞれのレジスタにおいて特定されてもよい。例外命令からのリターンの別の例示的な形態において、新たなプログラムカウンタ値、および新たなモードが、メモリにおいて特定されてもよい。
既に言及したように、不正なモードの変更は、種々の異なる形態を採ることができる。一実施例は、より高い権限のレベルへの変更である。別の実施例は、モード状態が何であるべきかを示す、装置内に記憶される他の状態データと矛盾するモードへの変更、例えば、異なる命令セットが、異なる命令セットが使用されるべきであることを示すシステム内に記憶された、この矛盾する他のデータとともに使用されるべきであることを示す、モードの変更である。
システムが、不正変更のビットの設定にかかわらず、動作中に発生する例外への応答性を維持することができるようするために、一部の実施形態において、処理回路は、発生した例外イベントに関連付けられる例外操作プログラム命令が実行されてもよいように、不正変更のビットの現在の値を保存されたビットとして保存し、かつ不正変更のビットを既定の値とは異なる値に設定するように、例外イベントに応答する。このため、不正変更のビットが設定される時、その後の命令を未定義命令として扱うことは、不正変更のビットを保存する例外イベントの発生後、抑制されてもよく、それによって、例外操作プログラム命令が実行するのを許容する。
不正なモード変更の検出に適切な挙動が喪失されないように、一部の実施形態は、例外操作プログラム命令の実行からのリターン後、不正変更のビットが、不正なモード変更の以前の発生がその適正な応答を受信するように、保存されたビットに一致するように設定されるように、構成される。
不正なモード変更の操作を支援するために、一部の実施形態は、合法のモードの変更を試行した不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを含む。かかるシンドロームレジスタ内のデータは、その不正な試行を生じさせる命令のタイプに一致する、不正なモード変更試行に対する適切な応答をトリガするために使用することができる。
未定義命令への1つのタイプの応答は、未定義命令例外イベントのトリガである。未定義命令に応答するための機構は、しばしば、データ処理システム内に既に存在し、これらは、不正なモード変更を行うための試行の影響に対処するために再利用することができる。かかる未定義例外操作は、未定義例外応答を例外の原因に適合させることができるように、シンドロームレジスタに応答して行うことができる。
既に言及したように、その間で変更を行うことができる複数のモードは、変化する場合がある。一実施例は、システムのリソースへの異なるレベルのアクセスを有する、異なる権限のレベルである。別の実施例は、各々が、異なる命令セットからのプログラム命令の実行の復号に対応する、複数の異なる命令セットモードを利用するシステムである。その間での何らかの変更が不正である場合がある、異なる動作モードのさらなる実施例が存在する。
さらなる態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
(i)前記不正なモードの変更を抑制するため、および
(ii)不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
の不正変更の検出手段と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
さらなる態様から見ると、本発明は、データを処理するための方法であって、
処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
(i)前記不正なモードの変更を抑制し、かつ
(ii)不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法を提供する。
本技術の一実装は、上で説明される装置および方法に一致し、かつ既に述べたように、不正なモードの変更に応答するための機構を含む、プログラムコードのための実行環境を提供するようにプログラムされる、汎用コンピュータを備える、仮想機械の形態であってもよいことがさらに理解されよう。
以降、本発明の実施形態を、ほんの一例として、添付の図面を参照して説明する。
複数の動作モードをサポートし、不正なモード変更検出器を含む、データ処理システムを概略的に例解する。 例外リターン応答の1つの例示的な形態を概略的に例解する。 例外リターン応答の別の例示的な形態を概略的に例解する。 不正なモード変更の検出およびそれへの応答を概略的に例解する。 無関係の割り込みイベントが後に続く、不正なモード変更の検出を概略的に例解する。 不正なモード変更の検出を概略的に例解する流れ図である。 不正変更のビットに依存する命令の復号を概略的に例解する流れ図である。 本技術の仮想機械実装を概略的に例解する図である。
図1は、プロセッサコアの形態のデータ処理装置2を概略的に例解する。プロセッサコアは、汎用レジスタバンク4と、乗算器6と、シフタ8と、加算器10とを含む、データパスを含む。命令復号器12は、実行しているプログラム命令に従って、データパス4、6、8、10、ならびにプロセッサコアの他の部分を制御するための制御信号を生成するように、命令パイプライン14を有するプログラム命令に応答する。プログラム命令は、命令パスに沿って、メモリからフェッチされる。データパス4、6、8、10によって操作されるべきデータ値もまた、メモリからフェッチされる。データ処理装置2は、一般的に、多くのさらなる回路要素を含有し、これらは、明確にするために図1から省略されていることが理解されよう。
データ処理システム2は、現在実行しているプログラム命令のメモリアドレスに対応する、メモリアドレス値を記憶する、プログラムカウンタレジスタ16をさらに含む。データ処理システム2の現在の状態、ならびにモード変更が発生し、以前の状態変数を記録することが所望される時の使用のための、データ処理システム2の保存された状態を示す、状態変数を記憶する、現在のプログラムステータスレジスタ18、および保存されたプログラムステータスレジスタ20もまた提供される。このタイプの現在のプログラムステータスレジスタ18、および保存されたプログラムステータスレジスタ20は、英国のARM Limited of Cambridgeによって設計されるプロセッサに精通する者といった、当業者にはよく知られている。
データ処理システム2内には、また、不正変更の検出回路22も含まれる。この不正変更の検出回路22は、現在のプログラムステータスレジスタ18に連結され、データ処理システム2の動作モードにおける不正な変更を検出する役割を果たす。例として、不正変更の検出回路22は、許容されない様態での、モード変更命令の実行または例外リターンへの応答として発生する、より高い権限のレベルへの切り替えに対応する、不正な変更を検出する場合がある。不正変更の検出回路22によって検出する場合がある不正な変更の別の例は、使用中の命令セットが何であるべきかを示す、システム内に保持される他の状態データに矛盾する、異なる命令セット(データ処理システム2および命令復号器12は、複数の異なる命令セットをサポートしてもよい)からの命令の実行への変更である。現在の動作モードを定義するデータは、一般的に、現在のプログラムステータスレジスタ18内に記憶され、したがって、不正変更の検出回路22は、現在のプログラムステータスレジスタ18に連結され、現在のプログラムステータスレジスタ18にモード変更を書き込むことが試行される点で、これらの変更を検出する場合があることが理解されよう。これらの書き込みは、これらが、行われている変更が不正であるか、または不正ではないかどうかを制御する、データ依存性を有する場合があるため、関連する不正なプログラム命令の実行の後半で発生する場合がある。したがって、かかる不正なプログラム命令を、それらが復号される時に識別しようとすることは、困難であり、データ処理システム2の設計上、望ましくないマイクロアーキテクチャ制約を導入する。
不正変更の検出回路22が不正なモード変更を検出する時、それは、現在のプログラムステータスレジスタ18内の不正変更のビット24を、既定の値に設定する(例えば、この不正変更のビットCPSR.ILを「1」の値に設定する)。例外を採った後といった、現在のプログラムステータスレジスタ18内に記憶される状態変数が保存される場合、それらは、保存されたプログラムステータスレジスタ20内に保存される。これは、不正変更のビット24のコピーを、保存されたプログラムステータスレジスタ20内の対応する保存された不正変更のビット26に保存することを含む。
不正なモード変更の検出後、不正変更のビット24を既定の値に設定するのと同時に、不正変更の検出回路22はまた、シンドロームレジスタ28に、不正な変更を試行した不正なプログラム命令のタイプを示すデータを書き込む。このため、シンドロームレジスタ28は、不正なプログラム命令が、異なるタイプの不正なモード変更命令または不正な例外リターン命令であることを示すデータを含有する場合がある。シンドロームレジスタ28内に記憶されるデータは、不正な命令が未定義命令として扱われる後、命令に対するその後の応答に関連付けられる例外操作の間、分析されてもよい。
不正変更のビット24が設定される時、命令復号器は、その後に受信されたプログラム命令を未定義命令として扱うように、このビットに応答する。したがって、不正変更のビットCPSR.ILは、命令復号器12への入力として供給される。命令復号器12は、それが受信している不正変更のビットCPSR.ILの値が、既定の値(例えば、1の値に設定される)に一致する間、未定義命令として復号するために受信される全てのプログラム命令を扱う。
命令復号器12は、未定義命令例外が未定義命令例外操作コードによって操作されるようにトリガすることによって、未定義プログラム命令(不正例外ビットによって示される場合があるように)を復号するための試行に応答する場合がある。かかる未定義例外は、通常、不正な変更検出のこの機構によっては生じないが、これらは、当業者にはよく知られている。
図2は、例外リターン命令の一実施例を例解する。この実施例において、例外リターン命令は、レジスタバンク4のレジスタのうちの1つから、プログラムカウンタレジスタ16への、新たなプログラムカウンタ値の記憶をトリガする。同様に、新たなモード値が、保存されたプログラムステータスレジスタ20から、現在のプログラムステータスレジスタ18に書き込まれる。図2に例解される応答をトリガする種々の異なる形態の例外リターン命令が、命令復号器12によって識別されてもよい。
図3は、例外リターン命令のさらなる実施例を例解する。この実施例において、プログラムカウンタレジスタ16および現在のプログラムステータスレジスタ18内に記憶されるべき新たなプログラムカウンタ値および新たなモード値は、例外命令からのリターン(RFE[Rn])に関連付けられるレジスタによって指定されるメモリアドレス(Rn)において、メモリ30から読み取られる。
図4は、試行された不正なモード変更の発生およびそれへの応答を概略的に例解する。線32によって例解されるように、システムは、例外レベルEL1において、プログラム命令を処理している。点34において、既に述べたように、不正なモード変更を特定している例外リターン命令を実行するように、試行が行われる。この不正なモード変更は、不正変更の検出回路22によって検出される。不正変更の検出回路22は、不正変更のビットCPSR.ILを、CPSR.IL=1であるように、既定の値に設定する。点36において示されるように実行されるその後の命令は、命令復号器12が既定の値を有する不正変更のビットCPSR.ILに応答するため、未定義命令として、命令復号器12によって扱われる。
図5は、その後に通常の割り込みが続く、不正な試行されたモードの変更への応答を例解する。不正な命令は、処理38の間に、不正変更の検出回路22によって検出される。不正変更のビットは、既定の値に設定される。不正なプログラム命令の実行の直後、割り込み40が生じ、より高い例外レベルEL2への変更を含む、例外応答を引き起こす。この例外応答の一部として、現在のプログラムステータスレジスタ18は、保存されたプログラムステータスレジスタ20にコピーされるコンテンツを有し、現在のプログラムステータスレジスタ18内の不正変更のビット24は、既定の値とは異なるように変更される。これは、処理42の間に実行されるハイパーバイザプログラムの例外操作プログラム命令が、未定義命令として扱われず、かつ予想通りに割り込みイベント40を操作するように正常に実行することができるという結果を有する。例外イベント44からのリターンにおいて、既定の値を有する不正変更のビットを含む、保存されたプログラムステータスレジスタ20のコンテンツは、現在のプログラムステータスレジスタ18に回復される。このため、元のプログラムシーケンスの実行が処理46において再開する際、プログラム命令は、未定義として扱われ、また、より高い権限のレベルに再度トリガし、不正変更のビットを、未定義例外応答がそのコードを実行することができるように、既定の値から変更させる、関連する未定義例外応答(例解せず)のトリガによって、応答されてもよい。
図6は、不正変更の検出回路22の動作を例解する流れ図である。ステップ48において、処理は、動作モードを変更するための試行があるまで待機する。ステップ50は、この変更が不正、即ち、不正な変更に対応する既定の特性に一致するかどうかを判定する。変更が不正である場合、ステップ52は、その変更を抑制し、ステップ54は、シンドロームレジスタ28に、その変更を試行した不正なプログラム命令を示す値を書き込み、ステップ56は、不正変更のビットCPSR.ILを既定の値に設定する。ステップ50における判定が、変更が合法であるというものであった場合、ステップ58は、当該プログラム命令によって指定されるモードの変更を許容する。
図7は、命令復号器12の動作を概略的に例解する流れ図である。ステップ60において、命令復号器12は、プログラム命令が復号するのを待機する。ステップ62において、不正変更のビットCPSR.ILが不正なモード変更を行うための以前の試行を示す既定の値を有するかどうかに関して、判定が行われる。不正変更のビットが既定の値を有する場合、処理はステップ64に進み、そこで、未定義命令操作が呼び出され、例えば、未定義命令例外に対応する例外イベントがトリガされる。ステップ62における判定が、不正変更のビットは設定されていないというものである場合、処理はステップ66に進み、そこで、命令が正常に復号される。ステップ66における復号は、実際、単に命令が間違っているといった、いかなる以前の試行された不正なモードの変更からも独立した様態で、当該命令が未定義命令であったという判定をもたらす可能性があることが理解されよう。
図8は、使用されてもよい仮想機械実装を例解する。以前に説明された実施形態は、当該技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して、本発明を実装する一方で、ハードウェアデバイスのいわゆる仮想機械実装を提供することもまた可能である。これらの仮想機械実装は、仮想機械プログラム510をサポートするホストオペレーティングシステム520を実行する、ホストプロセッサ530上で実行される。一般的に、妥当な速度で実行する仮想機械実装を提供するためには、大きい強力なプロセッサが必要とされるが、かかるアプローチは、互換性または再利用の理由により、別のプロセッサに特有のコードを実行する要望が存在する時といった、ある状況において、正当化されてもよい。仮想機械プログラム510は、仮想機械プログラム510によってモデル化されているデバイスである、実際のハードウェアによって提供されるであろう、アプリケーションプログラムインターフェースと同じである、アプリケーションプログラムインターフェースを、アプリケーションプログラム500に提供する。このため、上で説明される、メモリアクセスの制御を含む、プログラム命令は、仮想機械ハードウェアとのそれらの相互作用をモデル化するように、仮想機械プログラム510を使用して、アプリケーションプログラム500内から実行されてもよい。
2 データ処理システム
4 汎用レジスタバンク
6 乗算器
8 シフタ
10 加算器
12 復号器
16 プログラムカウンタレジスタ
18 プログラムステータスレジスタ
20 保存されたプログラムステータスレジスタ
22 検出回路
24 不正変更のビット
26 保存された不正変更のビット
28 シンドロームレジスタ
一態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
(i)前記不正なモードの変更を抑制し、かつ
(ii)現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
不正変更の検出回路と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
令が未定義命令として扱われるべきであることを示す、不正変更のビットは、システムの現在の状態の一部として適正に扱われ、したがって、現在のプログラムステータスレジスタ内に適切に記憶される。
さらなる態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
(i)前記不正なモードの変更を抑制するため、および
(ii)現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
の不正変更の検出手段と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
さらなる態様から見ると、本発明は、データを処理するための方法であって、
処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
(i)前記不正なモードの変更を抑制し、かつ
(ii)現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法を提供する。

Claims (24)

  1. データを処理するための装置であって、
    プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
    不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
    (i)前記不正なモードの変更を抑制し、かつ
    (ii)不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
    不正変更の検出回路と、を備え、
    前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置。
  2. 前記処理回路の現在のモード含む、前記装置の現在の状態を定義するデータ、および前記不正変更のビットを記憶するように構成される、現在のプログラムステータスレジスタを備える、請求項1に記載の装置。
  3. 前記不正なプログラム命令は、
    (i)許容されないモードの変更を特定する、明示的なモードの変更命令、ならびに
    (ii)新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターン
    のうちの1つである、請求項1または2のいずれか1項に記載の装置。
  4. 前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項3に記載の装置。
  5. 前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項3に記載の装置。
  6. 前記不正なモードの変更は、
    (i)より高い権限のレベルを有するモードへの変更、および
    (ii)前記モードが何であるかを示す、前記装置によって記憶される他の状態データと矛盾するモードへの変更のうちの1つである、請求項1〜5のいずれか1項に記載の装置。
  7. 前記処理回路は、例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存し、かつ前記不正変更のビットを前記既定の値とは異なる値に設定するように構成される、請求項1〜6のいずれか1項に記載の装置。
  8. 前記処理回路は、前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットが前記保存されたビットと一致するように設定されるように構成される、請求項7に記載の装置。
  9. 前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを備える、請求項1〜8のいずれか1項に記載の装置。
  10. 前記処理回路は、未定義命令例外イベントをトリガすることによって、未定義命令を実行するための試行に応答する、請求項1〜9のいずれか1項に記載の装置。
  11. 前記複数のモードは、
    (i)前記装置のリソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびに
    (ii)各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモード
    のうちの1つ以上を含む、請求項1〜10のいずれか1項に記載の装置。
  12. データを処理するための装置であって、
    プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
    不正なプログラム命令によって指定される処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
    (i)前記不正なモードの変更を抑制するため、および
    (ii)不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
    の不正な変更の検出手段と、を備え、
    前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置。
  13. データを処理するための方法であって、
    処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
    不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
    (i)前記不正なモードの変更を抑制し、かつ
    (ii)不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
    前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法。
  14. 現在のプログラムステータスレジスタに、前記処理回路の現在のモードを含むデータ、および前記不正変更のビットを記憶するステップを含む、請求項13に記載の方法。
  15. 前記不正なプログラム命令は、
    (i)許容されないモードの変更を特定する、明示的なモードの変更命令、ならびに
    (ii)新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターン
    のうちの1つである、請求項13または14のいずれか1項に記載の方法。
  16. 前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項15に記載の方法。
  17. 前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項15に記載の方法。
  18. 前記不正なモードの変更は、
    (i)より高い権限のレベルを有するモードへの変更、および
    (ii)前記モードが何であるかを示す、他の記憶された状態データと矛盾するモードへの変更のうちの1つである、請求項13から17のいずれか1項に記載の方法。
  19. 例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存することと、前記不正変更のビットを前記既定の値とは異なる値に設定することと、を含む、請求項13から18のいずれか1項に記載の方法。
  20. 前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットは、前記保存されたビットと一致するように設定される、請求項19に記載の方法。
  21. シンドロームレジスタ内に、前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶することを含む、請求項13から20のいずれか1項に記載の方法。
  22. 未定義命令を実行するための試行に応答して、未定義命令例外イベントをトリガすることを含む、請求項13から21のいずれか1項に記載の方法。
  23. 前記複数のモードは、
    (i)リソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびに
    (ii)各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモード
    のうちの1つ以上を含む、請求項13から22のいずれか1項に記載の方法。
  24. 請求項13から23のいずれか1項に記載の方法を実施するように、コンピュータを制御する、コンピュータプログラムを備える、仮想機械。
JP2013523663A 2010-08-11 2011-06-13 不正なモード変更の操作 Active JP5699213B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1013467.4A GB2482701C (en) 2010-08-11 2010-08-11 Illegal mode change handling
GB1013467.4 2010-08-11
PCT/GB2011/051095 WO2012020238A1 (en) 2010-08-11 2011-06-13 Illegal mode change handling

Publications (2)

Publication Number Publication Date
JP2013539574A true JP2013539574A (ja) 2013-10-24
JP5699213B2 JP5699213B2 (ja) 2015-04-08

Family

ID=42931474

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013523663A Active JP5699213B2 (ja) 2010-08-11 2011-06-13 不正なモード変更の操作

Country Status (10)

Country Link
US (1) US8959318B2 (ja)
EP (1) EP2572274B1 (ja)
JP (1) JP5699213B2 (ja)
KR (1) KR101740224B1 (ja)
CN (1) CN103052941B (ja)
GB (1) GB2482701C (ja)
IL (1) IL223265A0 (ja)
MY (1) MY160351A (ja)
TW (1) TWI509453B (ja)
WO (1) WO2012020238A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020523680A (ja) * 2017-06-15 2020-08-06 エイアールエム リミテッド 命令セット内の変更を制御する装置及び方法

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201217531D0 (en) * 2012-10-01 2012-11-14 Advanced Risc Mach Ltd ARMv7-M Asset Protection Proposal
US10210349B2 (en) 2012-02-08 2019-02-19 Arm Limited Data processing apparatus and method using secure domain and less secure domain
GB2499287A (en) * 2012-02-08 2013-08-14 Advanced Risc Mach Ltd Exception handling in data processing with different security domains
US9213828B2 (en) 2012-02-08 2015-12-15 Arm Limited Data processing apparatus and method for protecting secure data and program code from non-secure access when switching between secure and less secure domains
US9477834B2 (en) 2012-02-08 2016-10-25 Arm Limited Maintaining secure data isolated from non-secure access when switching between domains
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
JP5591883B2 (ja) * 2012-07-23 2014-09-17 株式会社東芝 情報処理装置、プログラム
GB2517494B (en) * 2013-08-23 2021-02-24 Advanced Risc Mach Ltd Handling time intensive instructions
GB2530050B (en) * 2014-09-10 2021-07-21 Advanced Risc Mach Ltd Debugging in a data processing apparatus
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
US20170185400A1 (en) * 2015-12-23 2017-06-29 Intel Corporation Mode-specific endbranch for control flow termination
US9785800B2 (en) 2015-12-23 2017-10-10 Intel Corporation Non-tracked control transfers within control transfer enforcement
GB2549774B (en) * 2016-04-28 2019-04-10 Imagination Tech Ltd Method for handling exceptions in exception-driven system
US10360353B2 (en) * 2017-02-08 2019-07-23 International Business Machines Corporation Execution control of computer software instructions
GB2563884B (en) * 2017-06-28 2020-01-08 Advanced Risc Mach Ltd Exception return instruction
GB2563887B (en) * 2017-06-28 2019-12-25 Advanced Risc Mach Ltd Masking of architectural state associated with a realm
US10956157B1 (en) * 2018-03-06 2021-03-23 Advanced Micro Devices, Inc. Taint protection during speculative execution
CN110853751B (zh) * 2019-11-25 2023-04-14 安徽名流健康管理有限公司 多普勒超声诊断实时显示系统
US11556346B2 (en) * 2020-06-10 2023-01-17 Qualcomm Incorporated Security enhancement in hierarchical protection domains

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189231A (ja) * 1992-01-14 1993-07-30 Pfu Ltd 命令フェッチにおけるエラー処理方式
EP0649091A1 (en) * 1993-10-13 1995-04-19 International Business Machines Corporation Correction and modification of microprocessor chip operations
JP2004280801A (ja) * 2003-02-24 2004-10-07 Matsushita Electric Ind Co Ltd プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
US20070150730A1 (en) * 2005-12-23 2007-06-28 Texas Instruments Incorporated Method and system for preventing unauthorized processor mode switches
JP2008090542A (ja) * 2006-09-29 2008-04-17 Fujitsu Ltd エラー処理方法及び情報処理装置
US20080244137A1 (en) * 2007-03-30 2008-10-02 Uwe Kranich Processor comprising a first and a second mode of operation and method of operating the same
JP2008257735A (ja) * 2007-04-03 2008-10-23 Arm Ltd 保護された関数呼び出し
JP2010500661A (ja) * 2006-08-09 2010-01-07 クゥアルコム・インコーポレイテッド プロセッサ命令セット動作モードを比較するデバッグ回路

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100315347B1 (ko) * 1999-11-18 2001-11-26 윤종용 반도체 메모리 장치의 동작모드 세팅회로 및 방법
US6886112B2 (en) * 2002-06-28 2005-04-26 Microsoft Corporation Recovering from device failure
JP2004062309A (ja) * 2002-07-25 2004-02-26 Fujitsu Ltd 不当命令処理方法及びプロセッサ
WO2004046925A1 (en) * 2002-11-18 2004-06-03 Arm Limited Security mode switching via an exception vector
US20040168047A1 (en) * 2003-02-24 2004-08-26 Matsushita Electric Industrial Co., Ltd. Processor and compiler for creating program for the processor
US7281271B1 (en) * 2003-09-25 2007-10-09 Symantec Corporation Exception handling validation system and method
US7076637B2 (en) * 2003-10-29 2006-07-11 Qualcomm Inc. System for providing transitions between operating modes of a device
KR100586500B1 (ko) * 2004-03-18 2006-06-07 학교법인고려중앙학원 버퍼 오버플로우 공격들을 감지하고 복구하는 방법 및 그장치
US7647589B1 (en) * 2005-02-07 2010-01-12 Parallels Software International, Inc. Methods and systems for safe execution of guest code in virtual machine context
US20070050848A1 (en) * 2005-08-31 2007-03-01 Microsoft Corporation Preventing malware from accessing operating system services
US20070067826A1 (en) * 2005-09-19 2007-03-22 Texas Instruments Incorporated Method and system for preventing unsecure memory accesses
US20100132053A1 (en) * 2005-10-04 2010-05-27 Nec Corporation Information processing device, information processing method and program
US7971018B2 (en) * 2006-05-01 2011-06-28 Mediatek Inc. Method and apparatus for secure context switching in a system including a processor and cached virtual memory
US7689817B2 (en) * 2006-11-16 2010-03-30 Intel Corporation Methods and apparatus for defeating malware
JP2008250387A (ja) * 2007-03-29 2008-10-16 Toshiba Corp 情報処理装置
US20090070565A1 (en) * 2007-09-11 2009-03-12 Tellabs Reston Inc. Methods, systems, computer programs and apparatus for changing a processor state
US8150950B2 (en) * 2008-05-13 2012-04-03 Schneider Electric USA, Inc. Automated discovery of devices in large utility monitoring systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05189231A (ja) * 1992-01-14 1993-07-30 Pfu Ltd 命令フェッチにおけるエラー処理方式
EP0649091A1 (en) * 1993-10-13 1995-04-19 International Business Machines Corporation Correction and modification of microprocessor chip operations
JP2004280801A (ja) * 2003-02-24 2004-10-07 Matsushita Electric Ind Co Ltd プロセッサおよびこのプロセッサ用のプログラムを生成するコンパイラ装置
US20070150730A1 (en) * 2005-12-23 2007-06-28 Texas Instruments Incorporated Method and system for preventing unauthorized processor mode switches
JP2010500661A (ja) * 2006-08-09 2010-01-07 クゥアルコム・インコーポレイテッド プロセッサ命令セット動作モードを比較するデバッグ回路
JP2008090542A (ja) * 2006-09-29 2008-04-17 Fujitsu Ltd エラー処理方法及び情報処理装置
US20080244137A1 (en) * 2007-03-30 2008-10-02 Uwe Kranich Processor comprising a first and a second mode of operation and method of operating the same
JP2008257735A (ja) * 2007-04-03 2008-10-23 Arm Ltd 保護された関数呼び出し

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
CSNG200900464012; 鈴木章浩,追川修一: 'ARMアーキテクチャ用仮想マシンモニタの開発' 情報処理学会研究報告 Vol:2009-ARC-183,No:12, 20090615, Pages:1〜8, 社団法人情報処理学会 *
JPN6014045327; 鈴木章浩,追川修一: 'ARMアーキテクチャ用仮想マシンモニタの開発' 情報処理学会研究報告 Vol:2009-ARC-183,No:12, 20090615, Pages:1〜8, 社団法人情報処理学会 *
JPN6014045329; 'ARMアーキテクチャリファレンスマニュアル ARM DDI 0100HJ-00' [online] , 200503, Pages:A2-11〜A2-15, ftp.at.netbsd.org *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2020523680A (ja) * 2017-06-15 2020-08-06 エイアールエム リミテッド 命令セット内の変更を制御する装置及び方法

Also Published As

Publication number Publication date
JP5699213B2 (ja) 2015-04-08
GB2482701A (en) 2012-02-15
IL223265A0 (en) 2013-02-03
CN103052941B (zh) 2016-03-09
GB2482701C (en) 2018-12-26
US20120042154A1 (en) 2012-02-16
EP2572274A1 (en) 2013-03-27
GB2482701B (en) 2017-01-11
MY160351A (en) 2017-02-28
KR101740224B1 (ko) 2017-05-26
GB201013467D0 (en) 2010-09-22
US8959318B2 (en) 2015-02-17
TWI509453B (zh) 2015-11-21
EP2572274B1 (en) 2014-11-19
TW201229809A (en) 2012-07-16
WO2012020238A1 (en) 2012-02-16
CN103052941A (zh) 2013-04-17
KR20130137591A (ko) 2013-12-17

Similar Documents

Publication Publication Date Title
JP5699213B2 (ja) 不正なモード変更の操作
US10140448B2 (en) Systems and methods of asynchronous analysis of event notifications for computer security applications
JP7432586B2 (ja) スタック・ポインタを検証すること
JP2014518582A (ja) Dllインジェクション機能を持つコンピュータ装置及びdllインジェクション方法
US20170220795A1 (en) Information-processing device, information-processing monitoring method, and recording medium
US10372908B2 (en) System and method for detecting malware in a stream of bytes
US20220366037A1 (en) Domain transition disable configuration parameter
US9864708B2 (en) Safely discovering secure monitors and hypervisor implementations in systems operable at multiple hierarchical privilege levels
JP2005316599A (ja) 割込制御装置
CN109388948B (zh) 一种基于虚拟化技术的潜在恶意软件分析方法及相关装置
EP4073635B1 (en) Intermodal calling branch instruction
CN110799940B (zh) 内容数据管理
US11726811B2 (en) Parallel context switching for interrupt handling
TW202418067A (zh) 堆疊指標切換有效性檢查
GB2623800A (en) Stack pointer switch validity checking

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130805

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20141015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141027

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150216

R150 Certificate of patent or registration of utility model

Ref document number: 5699213

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250