(57)【要約】  複数の動作モードをサポートするデータ処理システム（２）には、例えば、モード変更プログラム命令または例外リターン命令の実行に応答した、より高い権限のレベルへの変更といった不正なモード変更を実施するためのプログラム命令による試行を検出する、不正変更の検出回路（２２）が提供される。かかる変更が検出された場合、不正変更のビットＣＰＳＲ．ＩＬが設定される。命令復号器（１２）は、その後のプログラム命令を未定義命令として扱う設定値を有する、不正変更のビットに応答する。次いで、これらの未定義命令は、未定義命令例外または他のタイプの応答をトリガする場合がある。
2013539574.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
不正変更の検出回路と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置。
【請求項２】
前記処理回路の現在のモード含む、前記装置の現在の状態を定義するデータ、および前記不正変更のビットを記憶するように構成される、現在のプログラムステータスレジスタを備える、請求項１に記載の装置。
【請求項３】
前記不正なプログラム命令は、
（ｉ）許容されないモードの変更を特定する、明示的なモードの変更命令、ならびに
（ｉｉ）新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターン
のうちの１つである、請求項１または２のいずれか１項に記載の装置。
【請求項４】
前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項３に記載の装置。
【請求項５】
前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項３に記載の装置。
【請求項６】
前記不正なモードの変更は、
（ｉ）より高い権限のレベルを有するモードへの変更、および
（ｉｉ）前記モードが何であるかを示す、前記装置によって記憶される他の状態データと矛盾するモードへの変更のうちの１つである、請求項１〜５のいずれか１項に記載の装置。
【請求項７】
前記処理回路は、例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存し、かつ前記不正変更のビットを前記既定の値とは異なる値に設定するように構成される、請求項１〜６のいずれか１項に記載の装置。
【請求項８】
前記処理回路は、前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットが前記保存されたビットと一致するように設定されるように構成される、請求項７に記載の装置。
【請求項９】
前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを備える、請求項１〜８のいずれか１項に記載の装置。
【請求項１０】
前記処理回路は、未定義命令例外イベントをトリガすることによって、未定義命令を実行するための試行に応答する、請求項１〜９のいずれか１項に記載の装置。
【請求項１１】
前記複数のモードは、
（ｉ）前記装置のリソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびに
（ｉｉ）各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモード
のうちの１つ以上を含む、請求項１〜１０のいずれか１項に記載の装置。
【請求項１２】
データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
不正なプログラム命令によって指定される処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
（ｉ）前記不正なモードの変更を抑制するため、および
（ｉｉ）不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
の不正な変更の検出手段と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置。
【請求項１３】
データを処理するための方法であって、
処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法。
【請求項１４】
現在のプログラムステータスレジスタに、前記処理回路の現在のモードを含むデータ、および前記不正変更のビットを記憶するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記不正なプログラム命令は、
（ｉ）許容されないモードの変更を特定する、明示的なモードの変更命令、ならびに
（ｉｉ）新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターン
のうちの１つである、請求項１３または１４のいずれか１項に記載の方法。
【請求項１６】
前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項１５に記載の方法。
【請求項１７】
前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項１５に記載の方法。
【請求項１８】
前記不正なモードの変更は、
（ｉ）より高い権限のレベルを有するモードへの変更、および
（ｉｉ）前記モードが何であるかを示す、他の記憶された状態データと矛盾するモードへの変更のうちの１つである、請求項１３から１７のいずれか１項に記載の方法。
【請求項１９】
例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存することと、前記不正変更のビットを前記既定の値とは異なる値に設定することと、を含む、請求項１３から１８のいずれか１項に記載の方法。
【請求項２０】
前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットは、前記保存されたビットと一致するように設定される、請求項１９に記載の方法。
【請求項２１】
シンドロームレジスタ内に、前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶することを含む、請求項１３から２０のいずれか１項に記載の方法。
【請求項２２】
未定義命令を実行するための試行に応答して、未定義命令例外イベントをトリガすることを含む、請求項１３から２１のいずれか１項に記載の方法。
【請求項２３】
前記複数のモードは、
（ｉ）リソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびに
（ｉｉ）各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモード
のうちの１つ以上を含む、請求項１３から２２のいずれか１項に記載の方法。
【請求項２４】
請求項１３から２３のいずれか１項に記載の方法を実施するように、コンピュータを制御する、コンピュータプログラムを備える、仮想機械。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理システムの分野に関する。より具体的には、本発明は、複数の動作モードを有するデータ処理システム、およびそれらのモード間の変更の管理に関する。
【背景技術】
【０００２】
データ処理システムに複数の動作モードを提供することは既知である。これらのモードは、例えば、異なる権限のレベルに対応してもよく、これらの異なる権限レベルは、システムのリソースへの異なるアクセス権を有する。権限レベルは、高い権限を有するモードにある時、システムが、より低い権限を有するモードで実行する時にアクセス可能ではない、メモリアドレススペースの領域にアクセスすることが可能であるような、ハードウェア権限レベルであってもよい。モードはまた、例外レベル操作のシステム内の異なる例外レベルに対応してもよい。複数の動作モードを有するかかるデータ処理システムの例は、英国のＡＲＭ  Ｌｉｍｉｔｅｄ  ｏｆ  Ｃａｍｂｒｉｄｇｅによって設計されるプロセッサである。
【０００３】
複数の動作モードを有するかかるデータ処理システム内では、何らかのモードの変更が不正である（例えば、許容されるべきではない）ことが生じる。例として、安全対策として、モードをより高い権限のレベルに変更するソフトウェア命令を実行し、それによって、システムのリソースへのより多くのアクセスを得ることは、可能であるべきではない。かかる変更は、例外機構を使用することによってより良好に行われ、それによって、例外操作コードは、より高い権限のレベルへのエントリに対処し、かつシステムの安全を保つことができる。データ処理システムに、かかる不正なモード変更を防止するハードウェア機構を提供することが既知である。しかしながら、かかるモード変更が防止されている時のシステムの挙動は、実装ごとに変化する可能性があるだけでなく、防止されている不正な変更のタイプに依存して変化する可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
不正変更の検出回路と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
【０００５】
本技術は、均一に適用されてもよく、かつ不正な変更応答をトリガするようにデータ依存性を必要とすることによる著しい実装の困難をそれ自体が導入しない、不正なモードの変更の検出への一貫性のある応答を提供する。データ依存性は、変更されているモードが、それ自体が実行パイプラインの後半でプログラムされる場合がある、メモリまたはレジスタのいずれかから伝送される時に生じる可能性がある。不正変更のビットが既定の値を有する時に、その後のプログラム命令が未定義命令として扱われる状態で、不正変更のビットを既定の値に再設定することは、不正な変更への応答が、効果的に遅延され、かつ現在は未定義のその後の命令への応答として対処されることを可能にする。これは、不正なモード変更を検出する上でのデータ依存性問題を軽減する。
【０００６】
不正変更のビットが装置内の多くの異なる場所に記憶される可能性がある一方で、一部の実施形態において、それは、装置の現在の状態を定義するデータを記憶する、現在のプログラムステータスレジスタの一部を形成する。命令が未定義命令として扱われるべきであることを示す、不正変更のビットは、システムの現在の状態の一部として適正に扱われ、したがって、現在のプログラムステータスレジスタ内に適切に記憶される。
【０００７】
不正なプログラム命令は、種々の異なる形態を有することができる。一形態において、明示的なモードの変更命令は、それが、許容されないモードの変更、例えば、より高い権限のレベルへの変更を特定する場合、不正なプログラム命令を構成する。不正なプログラム命令の別の形態は、新たなプログラムカウンタ値、および許容されない新たなモードを特定する、例外命令からのリターン、例えば、より高い権限のレベルへのリターンになることになる。
【０００８】
例外命令からのリターンは、それ自体が、異なる形態を有することができる。１つの例示的な形態において、新たなプログラムカウンタ値、および新たなモードは、システム内に記憶されるそれぞれのレジスタにおいて特定されてもよい。例外命令からのリターンの別の例示的な形態において、新たなプログラムカウンタ値、および新たなモードが、メモリにおいて特定されてもよい。
【０００９】
既に言及したように、不正なモードの変更は、種々の異なる形態を採ることができる。一実施例は、より高い権限のレベルへの変更である。別の実施例は、モード状態が何であるべきかを示す、装置内に記憶される他の状態データと矛盾するモードへの変更、例えば、異なる命令セットが、異なる命令セットが使用されるべきであることを示すシステム内に記憶された、この矛盾する他のデータとともに使用されるべきであることを示す、モードの変更である。
【００１０】
システムが、不正変更のビットの設定にかかわらず、動作中に発生する例外への応答性を維持することができるようするために、一部の実施形態において、処理回路は、発生した例外イベントに関連付けられる例外操作プログラム命令が実行されてもよいように、不正変更のビットの現在の値を保存されたビットとして保存し、かつ不正変更のビットを既定の値とは異なる値に設定するように、例外イベントに応答する。このため、不正変更のビットが設定される時、その後の命令を未定義命令として扱うことは、不正変更のビットを保存する例外イベントの発生後、抑制されてもよく、それによって、例外操作プログラム命令が実行するのを許容する。
【００１１】
不正なモード変更の検出に適切な挙動が喪失されないように、一部の実施形態は、例外操作プログラム命令の実行からのリターン後、不正変更のビットが、不正なモード変更の以前の発生がその適正な応答を受信するように、保存されたビットに一致するように設定されるように、構成される。
【００１２】
不正なモード変更の操作を支援するために、一部の実施形態は、合法のモードの変更を試行した不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを含む。かかるシンドロームレジスタ内のデータは、その不正な試行を生じさせる命令のタイプに一致する、不正なモード変更試行に対する適切な応答をトリガするために使用することができる。
【００１３】
未定義命令への１つのタイプの応答は、未定義命令例外イベントのトリガである。未定義命令に応答するための機構は、しばしば、データ処理システム内に既に存在し、これらは、不正なモード変更を行うための試行の影響に対処するために再利用することができる。かかる未定義例外操作は、未定義例外応答を例外の原因に適合させることができるように、シンドロームレジスタに応答して行うことができる。
【００１４】
既に言及したように、その間で変更を行うことができる複数のモードは、変化する場合がある。一実施例は、システムのリソースへの異なるレベルのアクセスを有する、異なる権限のレベルである。別の実施例は、各々が、異なる命令セットからのプログラム命令の実行の復号に対応する、複数の異なる命令セットモードを利用するシステムである。その間での何らかの変更が不正である場合がある、異なる動作モードのさらなる実施例が存在する。
【００１５】
さらなる態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
（ｉ）前記不正なモードの変更を抑制するため、および
（ｉｉ）不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
の不正変更の検出手段と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
【００１６】
さらなる態様から見ると、本発明は、データを処理するための方法であって、
処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法を提供する。
【００１７】
本技術の一実装は、上で説明される装置および方法に一致し、かつ既に述べたように、不正なモードの変更に応答するための機構を含む、プログラムコードのための実行環境を提供するようにプログラムされる、汎用コンピュータを備える、仮想機械の形態であってもよいことがさらに理解されよう。
【００１８】
以降、本発明の実施形態を、ほんの一例として、添付の図面を参照して説明する。
【図面の簡単な説明】
【００１９】
【図１】複数の動作モードをサポートし、不正なモード変更検出器を含む、データ処理システムを概略的に例解する。
【図２】例外リターン応答の１つの例示的な形態を概略的に例解する。
【図３】例外リターン応答の別の例示的な形態を概略的に例解する。
【図４】不正なモード変更の検出およびそれへの応答を概略的に例解する。
【図５】無関係の割り込みイベントが後に続く、不正なモード変更の検出を概略的に例解する。
【図６】不正なモード変更の検出を概略的に例解する流れ図である。
【図７】不正変更のビットに依存する命令の復号を概略的に例解する流れ図である。
【図８】本技術の仮想機械実装を概略的に例解する図である。
【発明を実施するための形態】
【００２０】
図１は、プロセッサコアの形態のデータ処理装置２を概略的に例解する。プロセッサコアは、汎用レジスタバンク４と、乗算器６と、シフタ８と、加算器１０とを含む、データパスを含む。命令復号器１２は、実行しているプログラム命令に従って、データパス４、６、８、１０、ならびにプロセッサコアの他の部分を制御するための制御信号を生成するように、命令パイプライン１４を有するプログラム命令に応答する。プログラム命令は、命令パスに沿って、メモリからフェッチされる。データパス４、６、８、１０によって操作されるべきデータ値もまた、メモリからフェッチされる。データ処理装置２は、一般的に、多くのさらなる回路要素を含有し、これらは、明確にするために図１から省略されていることが理解されよう。
【００２１】
データ処理システム２は、現在実行しているプログラム命令のメモリアドレスに対応する、メモリアドレス値を記憶する、プログラムカウンタレジスタ１６をさらに含む。データ処理システム２の現在の状態、ならびにモード変更が発生し、以前の状態変数を記録することが所望される時の使用のための、データ処理システム２の保存された状態を示す、状態変数を記憶する、現在のプログラムステータスレジスタ１８、および保存されたプログラムステータスレジスタ２０もまた提供される。このタイプの現在のプログラムステータスレジスタ１８、および保存されたプログラムステータスレジスタ２０は、英国のＡＲＭ  Ｌｉｍｉｔｅｄ  ｏｆ  Ｃａｍｂｒｉｄｇｅによって設計されるプロセッサに精通する者といった、当業者にはよく知られている。
【００２２】
データ処理システム２内には、また、不正変更の検出回路２２も含まれる。この不正変更の検出回路２２は、現在のプログラムステータスレジスタ１８に連結され、データ処理システム２の動作モードにおける不正な変更を検出する役割を果たす。例として、不正変更の検出回路２２は、許容されない様態での、モード変更命令の実行または例外リターンへの応答として発生する、より高い権限のレベルへの切り替えに対応する、不正な変更を検出する場合がある。不正変更の検出回路２２によって検出する場合がある不正な変更の別の例は、使用中の命令セットが何であるべきかを示す、システム内に保持される他の状態データに矛盾する、異なる命令セット（データ処理システム２および命令復号器１２は、複数の異なる命令セットをサポートしてもよい）からの命令の実行への変更である。現在の動作モードを定義するデータは、一般的に、現在のプログラムステータスレジスタ１８内に記憶され、したがって、不正変更の検出回路２２は、現在のプログラムステータスレジスタ１８に連結され、現在のプログラムステータスレジスタ１８にモード変更を書き込むことが試行される点で、これらの変更を検出する場合があることが理解されよう。これらの書き込みは、これらが、行われている変更が不正であるか、または不正ではないかどうかを制御する、データ依存性を有する場合があるため、関連する不正なプログラム命令の実行の後半で発生する場合がある。したがって、かかる不正なプログラム命令を、それらが復号される時に識別しようとすることは、困難であり、データ処理システム２の設計上、望ましくないマイクロアーキテクチャ制約を導入する。
【００２３】
不正変更の検出回路２２が不正なモード変更を検出する時、それは、現在のプログラムステータスレジスタ１８内の不正変更のビット２４を、既定の値に設定する（例えば、この不正変更のビットＣＰＳＲ．ＩＬを「１」の値に設定する）。例外を採った後といった、現在のプログラムステータスレジスタ１８内に記憶される状態変数が保存される場合、それらは、保存されたプログラムステータスレジスタ２０内に保存される。これは、不正変更のビット２４のコピーを、保存されたプログラムステータスレジスタ２０内の対応する保存された不正変更のビット２６に保存することを含む。
【００２４】
不正なモード変更の検出後、不正変更のビット２４を既定の値に設定するのと同時に、不正変更の検出回路２２はまた、シンドロームレジスタ２８に、不正な変更を試行した不正なプログラム命令のタイプを示すデータを書き込む。このため、シンドロームレジスタ２８は、不正なプログラム命令が、異なるタイプの不正なモード変更命令または不正な例外リターン命令であることを示すデータを含有する場合がある。シンドロームレジスタ２８内に記憶されるデータは、不正な命令が未定義命令として扱われる後、命令に対するその後の応答に関連付けられる例外操作の間、分析されてもよい。
【００２５】
不正変更のビット２４が設定される時、命令復号器は、その後に受信されたプログラム命令を未定義命令として扱うように、このビットに応答する。したがって、不正変更のビットＣＰＳＲ．ＩＬは、命令復号器１２への入力として供給される。命令復号器１２は、それが受信している不正変更のビットＣＰＳＲ．ＩＬの値が、既定の値（例えば、１の値に設定される）に一致する間、未定義命令として復号するために受信される全てのプログラム命令を扱う。
【００２６】
命令復号器１２は、未定義命令例外が未定義命令例外操作コードによって操作されるようにトリガすることによって、未定義プログラム命令（不正例外ビットによって示される場合があるように）を復号するための試行に応答する場合がある。かかる未定義例外は、通常、不正な変更検出のこの機構によっては生じないが、これらは、当業者にはよく知られている。
【００２７】
図２は、例外リターン命令の一実施例を例解する。この実施例において、例外リターン命令は、レジスタバンク４のレジスタのうちの１つから、プログラムカウンタレジスタ１６への、新たなプログラムカウンタ値の記憶をトリガする。同様に、新たなモード値が、保存されたプログラムステータスレジスタ２０から、現在のプログラムステータスレジスタ１８に書き込まれる。図２に例解される応答をトリガする種々の異なる形態の例外リターン命令が、命令復号器１２によって識別されてもよい。
【００２８】
図３は、例外リターン命令のさらなる実施例を例解する。この実施例において、プログラムカウンタレジスタ１６および現在のプログラムステータスレジスタ１８内に記憶されるべき新たなプログラムカウンタ値および新たなモード値は、例外命令からのリターン（ＲＦＥ［Ｒｎ］）に関連付けられるレジスタによって指定されるメモリアドレス（Ｒｎ）において、メモリ３０から読み取られる。
【００２９】
図４は、試行された不正なモード変更の発生およびそれへの応答を概略的に例解する。線３２によって例解されるように、システムは、例外レベルＥＬ１において、プログラム命令を処理している。点３４において、既に述べたように、不正なモード変更を特定している例外リターン命令を実行するように、試行が行われる。この不正なモード変更は、不正変更の検出回路２２によって検出される。不正変更の検出回路２２は、不正変更のビットＣＰＳＲ．ＩＬを、ＣＰＳＲ．ＩＬ＝１であるように、既定の値に設定する。点３６において示されるように実行されるその後の命令は、命令復号器１２が既定の値を有する不正変更のビットＣＰＳＲ．ＩＬに応答するため、未定義命令として、命令復号器１２によって扱われる。
【００３０】
図５は、その後に通常の割り込みが続く、不正な試行されたモードの変更への応答を例解する。不正な命令は、処理３８の間に、不正変更の検出回路２２によって検出される。不正変更のビットは、既定の値に設定される。不正なプログラム命令の実行の直後、割り込み４０が生じ、より高い例外レベルＥＬ２への変更を含む、例外応答を引き起こす。この例外応答の一部として、現在のプログラムステータスレジスタ１８は、保存されたプログラムステータスレジスタ２０にコピーされるコンテンツを有し、現在のプログラムステータスレジスタ１８内の不正変更のビット２４は、既定の値とは異なるように変更される。これは、処理４２の間に実行されるハイパーバイザプログラムの例外操作プログラム命令が、未定義命令として扱われず、かつ予想通りに割り込みイベント４０を操作するように正常に実行することができるという結果を有する。例外イベント４４からのリターンにおいて、既定の値を有する不正変更のビットを含む、保存されたプログラムステータスレジスタ２０のコンテンツは、現在のプログラムステータスレジスタ１８に回復される。このため、元のプログラムシーケンスの実行が処理４６において再開する際、プログラム命令は、未定義として扱われ、また、より高い権限のレベルに再度トリガし、不正変更のビットを、未定義例外応答がそのコードを実行することができるように、既定の値から変更させる、関連する未定義例外応答（例解せず）のトリガによって、応答されてもよい。
【００３１】
図６は、不正変更の検出回路２２の動作を例解する流れ図である。ステップ４８において、処理は、動作モードを変更するための試行があるまで待機する。ステップ５０は、この変更が不正、即ち、不正な変更に対応する既定の特性に一致するかどうかを判定する。変更が不正である場合、ステップ５２は、その変更を抑制し、ステップ５４は、シンドロームレジスタ２８に、その変更を試行した不正なプログラム命令を示す値を書き込み、ステップ５６は、不正変更のビットＣＰＳＲ．ＩＬを既定の値に設定する。ステップ５０における判定が、変更が合法であるというものであった場合、ステップ５８は、当該プログラム命令によって指定されるモードの変更を許容する。
【００３２】
図７は、命令復号器１２の動作を概略的に例解する流れ図である。ステップ６０において、命令復号器１２は、プログラム命令が復号するのを待機する。ステップ６２において、不正変更のビットＣＰＳＲ．ＩＬが不正なモード変更を行うための以前の試行を示す既定の値を有するかどうかに関して、判定が行われる。不正変更のビットが既定の値を有する場合、処理はステップ６４に進み、そこで、未定義命令操作が呼び出され、例えば、未定義命令例外に対応する例外イベントがトリガされる。ステップ６２における判定が、不正変更のビットは設定されていないというものである場合、処理はステップ６６に進み、そこで、命令が正常に復号される。ステップ６６における復号は、実際、単に命令が間違っているといった、いかなる以前の試行された不正なモードの変更からも独立した様態で、当該命令が未定義命令であったという判定をもたらす可能性があることが理解されよう。
【００３３】
図８は、使用されてもよい仮想機械実装を例解する。以前に説明された実施形態は、当該技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して、本発明を実装する一方で、ハードウェアデバイスのいわゆる仮想機械実装を提供することもまた可能である。これらの仮想機械実装は、仮想機械プログラム５１０をサポートするホストオペレーティングシステム５２０を実行する、ホストプロセッサ５３０上で実行される。一般的に、妥当な速度で実行する仮想機械実装を提供するためには、大きい強力なプロセッサが必要とされるが、かかるアプローチは、互換性または再利用の理由により、別のプロセッサに特有のコードを実行する要望が存在する時といった、ある状況において、正当化されてもよい。仮想機械プログラム５１０は、仮想機械プログラム５１０によってモデル化されているデバイスである、実際のハードウェアによって提供されるであろう、アプリケーションプログラムインターフェースと同じである、アプリケーションプログラムインターフェースを、アプリケーションプログラム５００に提供する。このため、上で説明される、メモリアクセスの制御を含む、プログラム命令は、仮想機械ハードウェアとのそれらの相互作用をモデル化するように、仮想機械プログラム５１０を使用して、アプリケーションプログラム５００内から実行されてもよい。
【符号の説明】
【００３４】
２  データ処理システム
４  汎用レジスタバンク
６  乗算器
８  シフタ
１０  加算器
１２  復号器
１６  プログラムカウンタレジスタ
１８  プログラムステータスレジスタ
２０  保存されたプログラムステータスレジスタ
２２  検出回路
２４  不正変更のビット
２６  保存された不正変更のビット
２８  シンドロームレジスタ
【図１】
2013539574.tif 000003
【図２】
2013539574.tif 000004
【図３】
2013539574.tif 000005
【図４】
2013539574.tif 000006
【図５】
2013539574.tif 000007
【図６】
2013539574.tif 000008
【図７】
2013539574.tif 000009
【図８】
2013539574.tif 000010
【手続補正書】
【提出日】平成24年10月24日(2012.10.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
不正変更の検出回路と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置。
【請求項２】
前記処理回路の現在のモード含む、前記装置の現在の状態を定義するデータ、および前記不正変更のビットを記憶するように構成される、前記現在のプログラムステータスレジスタを備える、請求項１に記載の装置。
【請求項３】
前記不正なプログラム命令は、
（ｉ）許容されないモードの変更を特定する、明示的なモードの変更命令、ならびに
（ｉｉ）新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターン
のうちの１つである、請求項１または２のいずれか１項に記載の装置。
【請求項４】
前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項３に記載の装置。
【請求項５】
前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項３に記載の装置。
【請求項６】
前記不正なモードの変更は、
（ｉ）より高い権限のレベルを有するモードへの変更、および
（ｉｉ）前記モードが何であるかを示す、前記装置によって記憶される他の状態データと矛盾するモードへの変更のうちの１つである、請求項１〜５のいずれか１項に記載の装置。
【請求項７】
前記処理回路は、例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存し、かつ前記不正変更のビットを前記既定の値とは異なる値に設定するように構成される、請求項１〜６のいずれか１項に記載の装置。
【請求項８】
前記処理回路は、前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットが前記保存されたビットと一致するように設定されるように構成される、請求項７に記載の装置。
【請求項９】
前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶するように構成される、シンドロームレジスタを備える、請求項１〜８のいずれか１項に記載の装置。
【請求項１０】
前記処理回路は、未定義命令例外イベントをトリガすることによって、未定義命令を実行するための試行に応答する、請求項１〜９のいずれか１項に記載の装置。
【請求項１１】
前記複数のモードは、
（ｉ）前記装置のリソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびに
（ｉｉ）各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモード
のうちの１つ以上を含む、請求項１〜１０のいずれか１項に記載の装置。
【請求項１２】
データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
不正なプログラム命令によって指定される処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
（ｉ）前記不正なモードの変更を抑制するため、および
（ｉｉ）現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
の不正な変更の検出手段と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置。
【請求項１３】
データを処理するための方法であって、
処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法。
【請求項１４】
前記現在のプログラムステータスレジスタに、前記処理回路の現在のモードを含むデータ、および前記不正変更のビットを記憶するステップを含む、請求項１３に記載の方法。
【請求項１５】
前記不正なプログラム命令は、
（ｉ）許容されないモードの変更を特定する、明示的なモードの変更命令、ならびに
（ｉｉ）新たなプログラムカウンタ値および許容されない新たなモードを特定する、例外命令からのリターン
のうちの１つである、請求項１３または１４のいずれか１項に記載の方法。
【請求項１６】
前記例外命令からのリターンは、それぞれのレジスタから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項１５に記載の方法。
【請求項１７】
前記例外命令からのリターンは、メモリから前記新たなプログラムカウンタ値および前記新たなモードを取り出す、請求項１５に記載の方法。
【請求項１８】
前記不正なモードの変更は、
（ｉ）より高い権限のレベルを有するモードへの変更、および
（ｉｉ）前記モードが何であるかを示す、他の記憶された状態データと矛盾するモードへの変更のうちの１つである、請求項１３から１７のいずれか１項に記載の方法。
【請求項１９】
例外イベントに応答して、前記例外イベントに関連付けられる例外操作プログラム命令が実行されるように、前記不正変更のビットの現在の値を保存されたビットとして保存することと、前記不正変更のビットを前記既定の値とは異なる値に設定することと、を含む、請求項１３から１８のいずれか１項に記載の方法。
【請求項２０】
前記例外操作プログラム命令の実行からのリターン後、前記不正変更のビットは、前記保存されたビットと一致するように設定される、請求項１９に記載の方法。
【請求項２１】
シンドロームレジスタ内に、前記不正なモードの変更を試行した前記不正なプログラム命令のタイプを示す、シンドローム値を記憶することを含む、請求項１３から２０のいずれか１項に記載の方法。
【請求項２２】
未定義命令を実行するための試行に応答して、未定義命令例外イベントをトリガすることを含む、請求項１３から２１のいずれか１項に記載の方法。
【請求項２３】
前記複数のモードは、
（ｉ）リソースへの異なるアクセスのレベルを有する、複数の異なる権限のレベル、ならびに
（ｉｉ）各々が、異なる命令セットからのプログラム命令の復号および実行に対応する、複数の異なる命令セットモード
のうちの１つ以上を含む、請求項１３から２２のいずれか１項に記載の方法。
【請求項２４】
請求項１３から２３のいずれか１項に記載の方法を実施するように、コンピュータを制御する、コンピュータプログラムを備える、仮想機械。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００４
【補正方法】変更
【補正の内容】
【０００４】
一態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施する処理回路であって、複数のモードを有する、処理回路と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定する、
不正変更の検出回路と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理回路は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
命令が未定義命令として扱われるべきであることを示す、不正変更のビットは、システムの現在の状態の一部として適正に扱われ、したがって、現在のプログラムステータスレジスタ内に適切に記憶される。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
さらなる態様から見ると、本発明は、データを処理するための装置であって、
プログラム命令に応答してデータ処理動作を実施するための処理手段であって、複数のモードを有する、処理手段と、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行を検出するため、ならびに、前記試行に応答して、
（ｉ）前記不正なモードの変更を抑制するため、および
（ｉｉ）現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するため
の不正変更の検出手段と、を備え、
前記不正変更のビットが前記既定の値を有する間、前記処理手段は、未定義命令としてのさらなるプログラム命令に応答する、装置を提供する。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
さらなる態様から見ると、本発明は、データを処理するための方法であって、
処理回路を使用してプログラム命令に応答してデータ処理動作を実施するステップであって、前記処理回路は、複数のモードを有する、ステップと、
不正なプログラム命令によって指定される前記処理回路の不正なモードの変更を実施するための試行の検出に応答して、
（ｉ）前記不正なモードの変更を抑制し、かつ
（ｉｉ）現在のプログラムステータスレジスタ内の不正変更のビットを、前記不正な変更を実施することを試行する前記不正なプログラム命令を示す既定の値に設定するステップと、
前記不正変更のビットが前記既定の値を有する間、未定義命令としてのさらなるプログラム命令に応答するステップと、を含む、方法を提供する。
【国際調査報告】
2013539574.tif 000011
2013539574.tif 000012