データを処理するための装置であって、プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、i前記不正なモードの変更を抑制し、かつii不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、不正変更の検出回路と、を備え、前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置。前記処理回路の現在のモード含む、前記装置の現在の状態を定義するデータ、および前記不正変更のビットを記憶するように構成される、現在のプログラムステータスレジスタを備える、請求項1に記載の装置。前記不正なプログラム命令は、i許容されないモードの変更を特定する、明示的なモードの変更命令、ならびにii新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターンのうちの1つである、請求項1または2のいずれか1項に記載の装置。前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項3に記載の装置。前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項3に記載の装置。前記不正なモードの変更は、iより高い権限のレベルを有するモードへの変更、およびii前記モードが何であるかを示す、前記装置によって記憶される他の状態データと矛盾するモードへの変更のうちの1つである、請求項1~5のいずれか1項に記載の装置。前記処理回路は、例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存し、かつ前記不正変更のビットを前記既定の値とは異なる値に設定するように構成される、請求項1~6のいずれか1項に記載の装置。前記処理回路は、前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットが前記保存されたビットと一致するように設定されるように構成される、請求項7に記載の装置。前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを備える、請求項1~8のいずれか1項に記載の装置。前記処理回路は、未定義命令例外イベントをトリガすることによって、未定義命令を実行するための試行に応答する、請求項1~9のいずれか1項に記載の装置。前記複数のモードは、i前記装置のリソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびにii各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモードのうちの1つ以上を含む、請求項1~10のいずれか1項に記載の装置。データを処理するための装置であって、プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、不正なプログラム命令によって指定される処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、i前記不正なモードの変更を抑制するため、およびii不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するための不正な変更の検出手段と、を備え、前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置。データを処理するための方法であって、処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、i前記不正なモードの変更を抑制し、かつii不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法。現在のプログラムステータスレジスタに、前記処理回路の現在のモードを含むデータ、および前記不正変更のビットを記憶するステップを含む、請求項13に記載の方法。前記不正なプログラム命令は、i許容されないモードの変更を特定する、明示的なモードの変更命令、ならびにii新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターンのうちの1つである、請求項13または14のいずれか1項に記載の方法。前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項15に記載の方法。前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項15に記載の方法。前記不正なモードの変更は、iより高い権限のレベルを有するモードへの変更、およびii前記モードが何であるかを示す、他の記憶された状態データと矛盾するモードへの変更のうちの1つである、請求項13から17のいずれか1項に記載の方法。例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存することと、前記不正変更のビットを前記既定の値とは異なる値に設定することと、を含む、請求項13から18のいずれか1項に記載の方法。前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットは、前記保存されたビットと一致するように設定される、請求項19に記載の方法。シンドロームレジスタ内に、前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶することを含む、請求項13から20のいずれか1項に記載の方法。未定義命令を実行するための試行に応答して、未定義命令例外イベントをトリガすることを含む、請求項13から21のいずれか1項に記載の方法。前記複数のモードは、iリソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびにii各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモードのうちの1つ以上を含む、請求項13から22のいずれか1項に記載の方法。請求項13から23のいずれか1項に記載の方法を実施するように、コンピュータを制御する、コンピュータプログラムを備える、仮想機械。一態様から見ると、本発明は、データを処理するための装置であって、プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、i前記不正なモードの変更を抑制し、かつii不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、不正変更の検出回路と、を備え、前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。本技術は、均一に適用されてもよく、かつ不正な変更応答をトリガするようにデータ依存性を必要とすることによる著しい実装の困難をそれ自体が導入しない、不正なモードの変更の検出への一貫性のある応答を提供する。データ依存性は、変更されているモードが、それ自体が実行パイプラインの後半でプログラムされる場合がある、メモリまたはレジスタのいずれかから伝送される時に生じる可能性がある。不正変更のビットが既定の値を有する時に、その後のプログラム命令が未定義命令として扱われる状態で、不正変更のビットを既定の値に再設定することは、不正な変更への応答が、効果的に遅延され、かつ現在は未定義のその後の命令への応答として対処されることを可能にする。これは、不正なモード変更を検出する上でのデータ依存性問題を軽減する。不正変更のビットが装置内の多くの異なる場所に記憶される可能性がある一方で、一部の実施形態において、それは、装置の現在の状態を定義するデータを記憶する、現在のプログラムステータスレジスタの一部を形成する。命令が未定義命令として扱われるべきであることを示す、不正変更のビットは、システムの現在の状態の一部として適正に扱われ、したがって、現在のプログラムステータスレジスタ内に適切に記憶される。不正なプログラム命令は、種々の異なる形態を有することができる。一形態において、明示的なモードの変更命令は、それが、許容されないモードの変更、例えば、より高い権限のレベルへの変更を特定する場合、不正なプログラム命令を構成する。不正なプログラム命令の別の形態は、新たなプログラムカウンタ値、および許容されない新たなモードを特定する、例外命令からのリターン、例えば、より高い権限のレベルへのリターンになることになる。例外命令からのリターンは、それ自体が、異なる形態を有することができる。1つの例示的な形態において、新たなプログラムカウンタ値、および新たなモードは、システム内に記憶されるそれぞれのレジスタにおいて特定されてもよい。例外命令からのリターンの別の例示的な形態において、新たなプログラムカウンタ値、および新たなモードが、メモリにおいて特定されてもよい。既に言及したように、不正なモードの変更は、種々の異なる形態を採ることができる。一実施例は、より高い権限のレベルへの変更である。別の実施例は、モード状態が何であるべきかを示す、装置内に記憶される他の状態データと矛盾するモードへの変更、例えば、異なる命令セットが、異なる命令セットが使用されるべきであることを示すシステム内に記憶された、この矛盾する他のデータとともに使用されるべきであることを示す、モードの変更である。システムが、不正変更のビットの設定にかかわらず、動作中に発生する例外への応答性を維持することができるようするために、一部の実施形態において、処理回路は、発生した例外イベントに関連付けられる例外操作プログラム命令が実行されてもよいように、不正変更のビットの現在の値を保存されたビットとして保存し、かつ不正変更のビットを既定の値とは異なる値に設定するように、例外イベントに応答する。このため、不正変更のビットが設定される時、その後の命令を未定義命令として扱うことは、不正変更のビットを保存する例外イベントの発生後、抑制されてもよく、それによって、例外操作プログラム命令が実行するのを許容する。不正なモード変更の検出に適切な挙動が喪失されないように、一部の実施形態は、例外操作プログラム命令の実行からのリターン後、不正変更のビットが、不正なモード変更の以前の発生がその適正な応答を受信するように、保存されたビットに一致するように設定されるように、構成される。不正なモード変更の操作を支援するために、一部の実施形態は、合法のモードの変更を試行した不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを含む。かかるシンドロームレジスタ内のデータは、その不正な試行を生じさせる命令のタイプに一致する、不正なモード変更試行に対する適切な応答をトリガするために使用することができる。未定義命令への1つのタイプの応答は、未定義命令例外イベントのトリガである。未定義命令に応答するための機構は、しばしば、データ処理システム内に既に存在し、これらは、不正なモード変更を行うための試行の影響に対処するために再利用することができる。かかる未定義例外操作は、未定義例外応答を例外の原因に適合させることができるように、シンドロームレジスタに応答して行うことができる。既に言及したように、その間で変更を行うことができる複数のモードは、変化する場合がある。一実施例は、システムのリソースへの異なるレベルのアクセスを有する、異なる権限のレベルである。別の実施例は、各々が、異なる命令セットからのプログラム命令の実行の復号に対応する、複数の異なる命令セットモードを利用するシステムである。その間での何らかの変更が不正である場合がある、異なる動作モードのさらなる実施例が存在する。さらなる態様から見ると、本発明は、データを処理するための装置であって、プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、i前記不正なモードの変更を抑制するため、およびii不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するための不正変更の検出手段と、を備え、前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。さらなる態様から見ると、本発明は、データを処理するための方法であって、処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、i前記不正なモードの変更を抑制し、かつii不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法を提供する。本技術の一実装は、上で説明される装置および方法に一致し、かつ既に述べたように、不正なモードの変更に応答するための機構を含む、プログラムコードのための実行環境を提供するようにプログラムされる、汎用コンピュータを備える、仮想機械の形態であってもよいことがさらに理解されよう。以降、本発明の実施形態を、ほんの一例として、添付の図面を参照して説明する。図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は、英国のARMLimitedofCambridgeによって設計されるプロセッサに精通する者といった、当業者にはよく知られている。データ処理システム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内から実行されてもよい。