(57)【要約】  装置は、命令を実行するための処理回路と、処理回路にアクセス可能であり、命令を実行するときに処理回路によって実行される動作を制限するために使用される機能を格納するように構成される複数の機能記憶要素とを備える。処理回路は複数の例外レベルで動作可能であり、各々の例外レベルは異なるソフトウェア実行特権を有する。さらに、複数の例外レベルのそれぞれの機能構成情報を識別するために、機能構成記憶装置が提供される。各々の例外レベルについて、機能構成情報は、少なくともその例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されるかどうかを識別する。ソース例外レベルからターゲット例外レベルへの切り替え動作中、ソース例外レベルおよび宛先例外レベルの少なくとも１つに関連する機能構成記憶装置内の機能構成情報を使用して、切り替え動作中に処理回路の実行状態がどのように管理されるかを判定する。
2020518910.tif 000002
【特許請求の範囲】
【請求項１】
命令を実行し、複数の例外レベルで動作可能であり、各々の前記例外レベルが異なるソフトウェア実行特権を有する、処理回路と、
前記処理回路にアクセス可能であり、前記命令を実行するときに前記処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、
前記複数の例外レベルのそれぞれについて機能構成情報を識別し、前記機能構成情報は、各々の前記例外レベルについて、少なくともその例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されるかどうかを識別する、機能構成記憶装置と、を備え、
ソース例外レベルからターゲット例外レベルへの切り替え動作中に、前記ソース例外レベルと前記宛先例外レベルの少なくとも１つに関連する前記機能構成記憶装置内の前記機能構成情報を使用して、前記処理回路の実行状態が前記切り替え動作中にどのように管理されるかを判定する、装置。
【請求項２】
前記処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、前記処理回路は、例外エントリが前記ソース例外レベルから前記宛先例外レベルへの前記切り替え動作を引き起こす場合、前記ソース例外レベルに関連する前記機能構成情報を参照して、前記ソース例外レベル用に保存するリターンアドレス情報を決定するように構成されている、請求項１に記載の装置。
【請求項３】
前記処理回路は、前記ソース例外レベルに関する前記機能構成情報が、前記ソース例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されることを識別する場合、プログラムカウンタ機能を参照して前記リターンアドレス情報を決定し、前記リターンアドレス情報をリターンアドレス機能記憶要素として指定された前記機能記憶要素の１つ内の機能として記憶するように構成され、
そうでなければ、前記処理回路は、プログラムカウンタ値を参照して前記リターンアドレス情報を決定し、前記リターンアドレス情報をリターンアドレス値としてリターンアドレス記憶要素内に格納するように構成されている、請求項２に記載の装置。
【請求項４】
前記リターンアドレス記憶要素は、前記リターンアドレス機能記憶要素内のフィールドにより形成される、請求項３に記載の装置。
【請求項５】
前記リターンアドレス情報が前記リターンアドレス値として前記リターンアドレス記憶要素内に格納されるとき、前記リターンアドレス機能記憶要素の少なくとも１つの残りのフィールドが第１デフォルト値に設定される、請求項４に記載の装置。
【請求項６】
残りのすべてのフィールドが、前記リターンアドレス値をゼロ拡張することにより前記第１デフォルト値に設定される、請求項５に記載の装置。
【請求項７】
前記処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、例外エントリが前記ソース例外レベルから前記宛先例外レベルへの前記切り替え動作を引き起こす場合、前記処理回路は、前記宛先例外レベルに関連する前記機能構成情報を参照して前記宛先例外レベル用の前記処理回路の初期実行状態を決定するように構成されている、請求項１〜６のいずれか一項に記載の装置。
【請求項８】
前記宛先例外レベルに関する前記機能構成情報が、前記宛先例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されることを識別する場合、前記処理回路は機能制御記憶要素に格納された例外エントリアドレス機能情報を使用して、前記宛先例外レベル用の初期プログラムカウンタ機能を生成するように構成され、
そうでなければ、前記処理回路は、制御記憶要素に記憶された例外エントリアドレス情報を使用して初期プログラムカウンタ値を生成するように構成されている、請求項７に記載の装置。
【請求項９】
前記制御記憶要素は、前記機能制御記憶要素内のフィールドによって形成される、請求項８に記載の装置。
【請求項１０】
前記初期プログラムカウンタ機能を格納するプログラムカウンタ機能記憶要素をさらに備え、
前記処理回路は、前記初期プログラムカウンタ機能の代わりに前記初期プログラムカウンタ値を生成する場合、前記プログラムカウンタ機能記憶要素の第１フィールド内に前記初期プログラムカウンタ値を格納するように構成されている、請求項８または請求項９に記載の装置。
【請求項１１】
前記処理回路が前記プログラムカウンタ機能記憶要素の前記第１フィールド内に前記初期プログラムカウンタ値を格納する場合、前記プログラムカウンタ機能記憶要素の残りのフィールドが第２デフォルト値に設定されるように構成されている、請求項１０に記載の装置。
【請求項１２】
前記第２デフォルト値は、前記プログラムカウンタ機能記憶要素に前記処理回路の最大機能を表させて、前記処理回路による前記初期プログラムカウンタ値の使用が前記プログラムカウンタ機能記憶要素の内容によって制約されないことを保証する、請求項１１に記載の装置。
【請求項１３】
前記処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、前記処理回路は、例外出口が前記ソース例外レベルから前記宛先例外レベルへの前記切り替え動作を引き起こす場合、前記宛先例外レベルに関連する前記機能構成情報を参照して、前記宛先例外レベル用の前記処理回路のリターン実行状態を決定するように構成されている、請求項１〜１２のいずれか一項に記載の装置。
【請求項１４】
前記宛先例外レベルに関連する前記機能構成情報が、前記宛先例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されることを識別する場合、前記処理回路は、リターンアドレス機能記憶要素として指定された前記機能記憶要素の１つ内の機能として記憶されたリターンアドレス情報を使用して、前記宛先例外レベル用のリターン・プログラム・カウンタ機能を生成するように構成され、
そうでなければ、前記処理回路は、リターンアドレス記憶要素内にリターンアドレス値として格納されたリターンアドレス情報を使用してリターン・プログラム・カウンタ値を生成するように構成されている、請求項１３に記載の装置。
【請求項１５】
前記リターン・プログラム・カウンタ機能を格納するプログラムカウンタ機能記憶要素をさらに備え、
前記処理回路は、前記リターン・プログラム・カウンタ機能の代わりに前記リターン・プログラム・カウンタ値を生成する場合、前記プログラムカウンタ機能記憶要素の第１フィールド内に前記リターン・プログラム・カウンタ値を格納するように構成されている、請求項１４に記載の装置。
【請求項１６】
前記処理回路が前記プログラムカウンタ機能記憶要素の前記第１フィールド内に前記リターン・プログラム・カウンタ値を格納する場合、前記プログラムカウンタ機能記憶要素の残りのフィールドは第３デフォルト値に設定されるように構成されている、請求項１５に記載の装置。
【請求項１７】
前記第３デフォルト値は、前記プログラムカウンタ機能記憶要素に前記処理回路の最大機能を表させて、前記処理回路による前記リターン・プログラム・カウンタ値の使用が前記プログラムカウンタ機能記憶要素の内容によって制約されないことを保証する、請求項１６に記載の装置。
【請求項１８】
前記複数の例外レベルは例外レベルの階層として構成され、これにより、前記階層内のより高い例外レベルで実行するソフトウェアが前記階層内のより低い例外レベルで実行するソフトウェアの少なくともいくつかの動作を制限する機能を有し、
各々の例外レベルについて、前記機能構成情報は、その例外レベルで実行するソフトウェアが、同じ例外レベルとそれ以下の例外レベルとの少なくとも１つで前記命令を実行するときに前記処理回路によって実行される前記動作を制限するために使用される機能を管理できるかどうかをさらに識別するように構成されている、請求項１〜１７のいずれか一項に記載の装置。
【請求項１９】
特定の例外レベルの前記機能構成情報がその特定の例外レベルが機能を管理できないことを識別した場合、少なくとも前記特定の例外レベルが最低の例外レベル以外の例外レベルである場合、その前記特定の例外レベルの前記機能構成情報はさらに、前記特定の例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が、前記機能によって制限されないことを識別する、請求項１８に記載の装置。
【請求項２０】
前記特定の例外レベルの前記機能構成情報が、その特定の例外レベルが機能を管理できないことを識別する場合、前記特定の例外レベルより低い各例外レベルの前記機能構成情報は、その低い例外レベルが機能を管理できないことを識別し、少なくとも、その下位の例外レベルが最低の例外レベル以外の例外レベルである場合、その下位の例外レベルで命令を実行するときに前記処理回路によって実行される前記動作が、前記機能によって制約されないことをさらに識別する、請求項１９に記載の装置。
【請求項２１】
命令を実行し、複数の例外レベルで動作可能であり、各々の前記例外レベルが異なるソフトウェア実行特権を有する、処理回路と、前記処理回路にアクセス可能であり、前記命令を実行するときに前記処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、を備えた装置内で機能の使用を管理する方法であって、
前記方法は、
機能構成記憶装置内において、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、前記機能構成情報は、各々の前記例外レベルについて、少なくともその例外レベルで前記命令を実行するときに前記処理回路によって実行される前記動作が前記機能によって制約されるかどうかを識別する、ことと、
ソース例外レベルからターゲット例外レベルへの切り替え動作中に、前記ソース例外レベルと前記宛先例外レベルの少なくとも１つに関連する前記機能構成記憶装置内の前記機能構成情報を使用して、前記処理回路の実行状態が前記切り替え動作中にどのように管理されるかを判定する、ことと、を含む、方法。
【請求項２２】
命令を実行し、複数の例外レベルで動作可能であり、各々の前記例外レベルが異なるソフトウェア実行特権を有する、処理手段と、
前記処理手段にアクセス可能であり、前記命令を実行するときに前記処理手段によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素手段と、
前記複数の例外レベルのそれぞれについて機能構成情報を識別し、前記機能構成情報は、各々の前記例外レベルについて、少なくともその例外レベルで前記命令を実行するときに前記処理手段によって実行される前記動作が前記機能によって制約されるかどうかを識別する、機能構成記憶手段と、を備え、
ソース例外レベルからターゲット例外レベルへの切り替え動作中に、前記ソース例外レベルと前記宛先例外レベルの少なくとも１つに関連する前記機能構成記憶手段内の前記機能構成情報を使用して、前記処理手段の実行状態が前記切り替え動作中にどのように管理されるかを判定する、装置。
【請求項２３】
請求項１〜２０のいずれか一項に記載の装置に対応する命令実行環境を提供するためのホストデータ処理装置を制御するプログラム命令を含む仮想マシン・コンピュータ・プログラム。
【請求項２４】
請求項２３に記載の仮想マシン・コンピュータ・プログラムを記憶しているコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、機能の使用を管理するための装置および方法に関する。
【背景技術】
【０００２】
特定のプロセスに特定の機能が規定されている機能ベースのアーキテクチャへの関心が高まっており、規定の機能以外の動作を実行しようとするとエラーが誘発される可能性がある。機能にはさまざまな形式があるが、機能の１つのタイプは境界ポインタ（「幅広ポインタ」とも呼ばれる場合がある）である。境界ポインタの場合、ポインタ値は、例えば、アクセスされるデータ値のアドレスまたは実行される命令を識別するか、または決定するために使用され得る。ただし、ポインタ値には、ポインタ値を使用するときにアドレスの許容範囲を示す関連する範囲情報も含まれている場合があり、さらにそれに関連する許可情報／制限情報が含まれ得る。範囲情報および境界ポインタの許可情報／制限情報は、機能情報と呼ばれ場合があり、機能ベースのアーキテクチャ内では、境界ポインタ（関連する機能情報を含む）は機能と呼ばれる場合がある。
【０００３】
機能の使用は、プロセッサ上で実行されるソフトウェアの動作のセキュリティおよび／または機能の正確性を維持するのに役立つことができるが、特定のソフトウェア（例えば、「信頼できる」）が機能に制約されずに、またはより制約の少ない方法で実行できるようにすることが望ましい場合がある。したがって、このような柔軟性を提供するために、機能の使用を管理できる技術を提供することが望ましい。
【発明の概要】
【０００４】
第１の構成例では、命令を実行し、複数の例外レベルで動作可能であり、各々の例外レベルが異なるソフトウェア実行特権を有する、処理回路と、処理回路にアクセス可能であり、前記命令を実行するときに処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、機能構成情報は、各々の例外レベルについて、少なくともその例外レベルで命令を実行するときに処理回路によって実行される動作が前記機能によって制約されるかどうかを識別する、機能構成記憶装置と、を備え、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも１つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態が切り替え動作中にどのように管理されるかを判定する、装置が提供される。
【０００５】
別の例示的な構成では、命令を実行し、複数の例外レベルで動作可能であり、各々の例外レベルが異なるソフトウェア実行特権を有する、処理回路と、処理回路にアクセス可能であり、前記命令を実行するときに処理回路によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素と、を備えた装置内で機能の使用を管理する方法であって、方法は、機能構成記憶装置内において、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、機能構成情報は、各々の例外レベルについて、少なくともその例外レベルで命令を実行するときに処理回路によって実行される動作が前記機能によって制約されるかどうかを識別する、ことと、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも１つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態が切り替え動作中にどのように管理されるかを判定する、ことと、を含む、方法が提供される。
【０００６】
さらなる例示的な構成では、命令を実行し、複数の例外レベルで動作可能であり、各々の例外レベルが異なるソフトウェア実行特権を有する、処理手段と、処理手段にアクセス可能であり、前記命令を実行するときに処理手段によって実行される動作を制限するために使用される機能を格納するように構成された複数の機能記憶要素手段と、前記複数の例外レベルのそれぞれについて機能構成情報を識別し、機能構成情報は、各々の例外レベルについて、少なくともその例外レベルで命令を実行するときに処理手段によって実行される動作が前記機能によって制約されるかどうかを識別する、機能構成記憶手段と、を備え、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも１つに関連する機能構成記憶手段内の機能構成情報を使用して、処理手段の実行状態が切り替え動作中にどのように管理されるかを判定する、装置が提供される。
【０００７】
さらに別の構成例では、上記の第１の構成例の装置に対応する命令実行環境を提供するためのホストデータ処理装置を制御するプログラム命令を含む仮想マシン・コンピュータ・プログラムが提供される。一実施形態では、仮想マシン・コンピュータ・プログラムを格納するためのコンピュータ可読記憶媒体が提供され得る。
【０００８】
本技術は、添付の図面に示される実施形態を参照して、単なる例としてさらに説明される。
【図面の簡単な説明】
【０００９】
【図１】一実施形態による装置のブロック図である。
【図２】バインドされたポインタ記憶要素のセット内でポインタ値を設定またはアクセスしようとするとエラーがトリガされる可能性のある命令の種類の例を示しており、ポインタ値は、関連する範囲情報によって示された範囲外のアドレスを指定するために使用される。
【図３】一実施形態による、境界ポインタに関連するタグビットの使用を示す図である。
【図４】一実施形態に従って複数の例外レベルがどのように提供されるかを示す図である。
【図５】一実施形態に従って提供され得る例外レベルごとの機能構成情報の一形態を示す図である。
【図６】一実施形態による、２つの異なる例外レベルの機能構成情報の可能なオプションを示す表である。
【図７Ａ】一実施形態による、例外エントリ動作中に処理回路の実行状態がどのように管理されるかを示すフロー図である。
【図７Ｂ】一実施形態による、例外エントリ動作中に処理回路の実行状態がどのように管理されるかを示すフロー図である。
【図８】一実施形態による、例外復帰動作中に処理回路の実行状態がどのように管理されるかを示すフロー図である。
【図９】使用され得る仮想マシンの実装を示す。
【発明を実施するための形態】
【００１０】
添付の図面を参照して実施形態を議論する前に、実施形態の以下の説明が提供される。
【００１１】
前述のように、特定のプロセスに特定の機能が規定されている機能ベースのアーキテクチャへの関心が高まっており、規定の機能以外の動作を実行しようとするとエラーが誘発される可能性がある。さまざまなタイプの機能を定義できるが、１つのタイプの機能は境界ポインタである（一実施形態では、ポインタ値と関連する範囲および許可情報の両方が組み込まれる）。そのような機能ベースのアーキテクチャを採用する装置は、通常、機能を格納するために使用される記憶要素（本明細書では境界ポインタ記憶要素、またはより一般的には機能記憶要素とも呼ばれる）を有する。記憶要素は、レジスタ（本明細書では境界ポインタレジスタまたは機能レジスタとも呼ばれる）および／または汎用メモリ内のメモリ位置、例えばスタックメモリ上の位置であってもよい。特定の命令を使用してこのような記憶要素を参照し、目的の機能にアクセスし、その機能に依存する操作を実行できる。例えば、境界インタを考慮すると、そのような命令の実行は、境界ポインタを検索し、その中のポインタ値を使用して、命令の実行中に必要なメモリ内のアドレスを導き出すことができる。ポインタ値は、メモリアドレスを識別するために直接使用することも、例えばポインタ値にオフセットを追加することによってメモリアドレスを導出するために使用することもできる。メモリアドレスが範囲情報で指定された範囲内にあり、許可情報で指定された許可が満たされていれば、操作を続行できる。
【００１２】
このような機能ベースのアーキテクチャを採用することにより、命令を実行するときに処理回路によって実行される動作に機能が置かれ得る制約により、ソフトウェア攻撃に対する回復力を高めることができる。ただし、場合によっては、特定のソフトウェアが機能に制約されずに、または制約の少ない方法で実行できることが望ましい場合もある。これにより、柔軟性が大幅に向上し、場合によっては、処理装置で機能を認識しないコードを実行できるようになるため、後方互換性も可能になる。
【００１３】
既存のシステムの中には、各例外レベルが異なるソフトウェア実行特権を持つ異なる例外レベルで動作できるように処理回路を構成することが知られているものがある。本明細書で説明する実施形態では、複数の例外レベルでの動作を可能にするタイプの処理回路で使用するために、機能の使用を管理するための柔軟な手法が開発された。
【００１４】
特に、一実施形態では、複数の例外レベルで動作可能な処理回路と、処理回路にアクセス可能な複数の機能記憶要素とを備えた装置が提供される。機能記憶要素は、命令を実行するときに処理回路によって実行される操作を制限するために使用される機能を格納するように構成されている。
【００１５】
さらに、複数の例外レベルのそれぞれの機能構成情報を識別するように構成された機能構成記憶装置が提供される。特に、各例外レベルについて、機能構成情報は、少なくとも、その例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されるかどうかを識別する。したがって、これにより、必要に応じて、少なくとも１つの例外レベルのソフトウェアを機能によって制約されないようにする柔軟性が提供される。特定の例として、高い例外レベルで実行される信頼性の高いソフトウェアは、機能に制約されることなく動作することが許可され得る。これにより、このようなソフトウェアの機能チェックルーチンを実行する必要がなくなるため、パフォーマンス上のメリットが得られる。また、機能ベースのアーキテクチャと互換性を持たせるために、そのようなソフトウェアを変更する必要がある範囲を減らすこともできる。ただし、このような柔軟性は例外レベルごとに管理できるため、このようなメカニズムをなお使用して、例外レベルの１つ以上で実行するソフトウェアに機能の完全な制約を課すようにすることができる。
【００１６】
機能の効果を例外レベルごとに変更できるようにしたため、この装置は、機能の効果がソース例外レベルとターゲット例外レベルで異なる可能性を考慮した例外レベル間の切り替えメカニズムも提供する。特に、ソース例外レベルからターゲット例外レベルへの切り替え動作中に、ソース例外レベルと宛先例外レベルの少なくとも１つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態が切り替え動作中にどのように管理されるかを判定する。
【００１７】
したがって、説明した実施形態を使用することにより、例外レベルごとに機能の効果を規定することができ、例外操作レベルを切り替える効果的なメカニズムを提供して、切り替え動作中に潜在的に異なる効果が考慮されるようにする。
【００１８】
切り替え動作はさまざまな方法で実行され得る。しかし、一実施形態では、処理回路は、例外メカニズムを使用して前記複数の例外レベル間を遷移するように構成され、例外エントリがソース例外レベルから宛先例外レベルへの切り替え動作を引き起こすと、処理回路はソース例外レベルに関連する機能構成情報を参照して、ソース例外レベル用に保存するリターンアドレス情報を決定する。
【００１９】
ソース例外レベルに関連する機能構成情報を使用できる方法はいくつかある。しかし、一実施形態では、処理回路は、ソース例外レベルに関する機能構成情報が、前記ソース例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されることを識別する場合、プログラムカウンタ機能を参照してリターンアドレス情報を決定し、リターンアドレス情報をリターンアドレス機能記憶要素として指定された機能記憶要素の１つ内の機能として記憶するように構成される。そうでない場合（すなわち、ソース例外レベルが機能によって制約されていない場合）、処理回路は、プログラムカウンタ値を参照して前記リターンアドレス情報を決定し、リターンアドレス記憶要素内にリターンアドレス値としてリターンアドレス情報を格納するように構成される。したがって、ソース例外レベルで実行される操作が機能によって制約される場合、リターンアドレス機能が決定され、リターンアドレス機能記憶要素内に格納される。ただし、そうでない場合は、リターンアドレス機能は不要であり、代わりに、リターンアドレス情報をリターンアドレス値としてリターンアドレス記憶要素内に非機能形式で格納できる。
【００２０】
一実施形態では、リターンアドレス機能記憶要素は、リターンアドレス記憶要素とは完全に物理的に分離することができるが、代替実施形態では、これら２つの記憶要素は同じ物理構造を共有することができる。特に、一実施形態では、リターンアドレス記憶要素は、リターンアドレス機能記憶要素内のフィールドによって形成され得る。例えば、機能が必要でない場合、機能のリターンアドレス値情報を格納するために使用されるリターンアドレス機能記憶要素内のポインタフィールドも再利用して、リターンアドレス記憶要素を形成することができる。
【００２１】
リターンアドレス記憶要素とリターンアドレス機能記憶要素とが同じ物理構造を共有し、ソース例外レベルが機能によって制約されない一実施形態では、リターンアドレス機能記憶要素の残りのフィールドの少なくとも１つ（リターンアドレス情報の保存には使用されない）は、第１デフォルト値に設定される。例えば、一実施形態では、各機能は、残りのフィールドが有効な機能を表すことを識別するために設定され、残りのフィールドが有効な機能を保存しないときを識別するためにクリアされるタグビットを含み得る。そのような一実施形態では、コンテンツが機能を表していないことを識別するためにタグビットをクリアすることができ、その場合、ポインタフィールドのみが参照され、リターンアドレス情報を提供する。
【００２２】
代替実施形態では、残りのフィールドのすべてが第１デフォルト値に設定され、一実施形態では、これは、リターンアドレス機能記憶要素に書き込まれるリターンアドレス値をゼロ拡張することにより達成できる。
【００２３】
一実施形態では、例外エントリがソース例外レベルから宛先例外レベルへの切り替え動作を引き起こす場合、処理回路は、宛先例外レベルに関する機能構成情報を参照して宛先例外レベルの処理回路の初期実行状態を決定するように構成されてもよい。
【００２４】
この目的のために、宛先例外レベルに関連する機能構成情報を使用できる方法がいくつかある。しかし、一実施形態では、宛先例外レベルに関連する機能構成情報が、前記宛先例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されることを識別すると、処理回路は、機能制御記憶要素に格納された例外エントリアドレス機能情報を使用した宛先例外レベル用に初期プログラムカウンタ機能を生成するように構成される。そうでなければ（すなわち、宛先例外レベルが機能によって制約されない場合）、処理回路は、制御記憶要素に格納された例外エントリアドレス情報を使用して初期プログラムカウンタ値を生成するように構成される。
【００２５】
したがって、宛先例外レベルで実行される操作が機能によって制約されることがわかっている場合は、宛先例外レベルの初期プログラムカウンタ機能を生成できる。そのような状況で参照される機能制御記憶要素は、さまざまな形をとることができるが、一実施形態では、機能ベクトル・ベース・アドレス・レジスタ（ＣＶＢＡＲ）である。特定の一実施形態では、ＣＶＢＡＲレジスタは例外エントリのベースアドレスを提供し、例外は例外タイプに応じてこのベースアドレスからのオフセットを決定する。例えば、ある実装では、例外タイプに１２８が掛けられ、その値がＣＶＢＡＲの機能のアドレスフィールドのベースアドレスに追加されて、プログラムカウンタ機能の初期アドレスが生成される。範囲や許可情報など、プログラムカウンタ機能の機能情報の残りの部分も、ＣＶＢＡＲ内に保持されている機能から抽出される。
【００２６】
代わりに、宛先例外レベルで実行される操作が機能によって制約されないと判定された場合、関連する機能情報によって制約され得ない初期プログラムカウンタ値を生成するだけで済む。そのような一実施形態では、初期プログラムカウンタ値は、（非機能）制御記憶要素内の例外エントリアドレス情報を使用して、そのような状況で決定される。特定の一実施形態では、制御記憶要素は、ベクトル・ベース・アドレス・レジスタの形態をとり、これは、前述のＣＶＢＡＲの非機能的な変形である。
【００２７】
一実施形態では、制御記憶要素と機能制御記憶要素とは物理的に別個の構造であってもよいが、一実施形態では、それらは同じ物理構造を共有し得る。例えば、一実施形態では、制御記憶要素は、機能制御記憶要素内のフィールドによって形成されてもよく、したがって、例えば、例外エントリのベースアドレスを提供できるが、関連する機能情報に制約され得ない。
【００２８】
一実施形態では、装置は、初期プログラムカウンタ機能を格納するためのプログラムカウンタ機能記憶要素を備えてもよい。プログラムカウンタ機能が使用されず、代わりに単純なプログラムカウンタ値が必要な場合、そのプログラムカウンタ値を維持できる方法がいくつかある。しかしながら、一実施形態において、処理回路は、初期プログラムカウンタ機能の代わりに初期プログラムカウンタ値を生成する場合、プログラムカウンタ機能記憶要素の第１フィールド内に初期プログラムカウンタ値を記憶するように構成される。
【００２９】
このような状況でプログラムカウンタ機能記憶要素の残りのフィールドを管理できる方法はいくつかある。そのような場合、処理回路ハードウェアがプログラムカウンタ機能記憶要素の残りのフィールドを無視するように構成されている場合、残りのフィールドは、例えば変更しないままにするか、クリアすることができる。しかしながら、処理回路が常にプログラムカウンタ機能記憶要素の全体を参照する代替実施形態では、プログラムカウンタ機能記憶要素の残りのフィールドは、プログラムカウンタ値のみがプログラムカウンタ機能記憶要素内に格納されるときに第２デフォルト値に設定されるように構成されてもよい。
【００３０】
その第２デフォルト値はさまざまな形をとることができるが、一実施形態では、プログラムカウンタ機能記憶要素が処理回路の最大機能を表して、処理回路によるプログラムカウンタ値の使用がプログラムカウンタ機能記憶要素の内容によって制約されないことを保証する。これにより、現在の例外レベルで動作が機能の影響を受けるかどうかに関係なく、同じプログラムカウンタ構造を使用できるようにするためのシンプルで効果的なメカニズムを提供できる。
【００３１】
例外エントリを処理するための上記のメカニズムに加えて、説明される実施形態は、例外出口（本明細書では例外リターンとも呼ばれる）に関連するメカニズムも提供し得る。特に、例外出口がソース例外レベルから宛先例外レベルへの切り替え操作を引き起こす場合、一実施形態では、処理回路は、宛先例外レベルに関連する機能構成情報を参照して宛先例外レベルの処理回路のリターン実行状態を決定するように構成される。
【００３２】
処理回路のリターン実行状態は、さまざまな方法で決定できる。しかしながら、一実施形態では、宛先例外レベルに関連する機能構成情報が、前記宛先例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されることを識別する場合、処理回路は、リターンアドレス機能記憶要素として指定された前記機能記憶要素の１つ内の機能として記憶されたリターンアドレス情報を使用して、宛先例外レベル用のリターン・プログラム・カウンタ機能を生成するように構成される。そうでない場合（つまり、宛先例外レベルが機能によって制約されていない場合）、処理回路は、リターンアドレス記憶要素内にリターンアドレス値として格納されたリターンアドレス情報を使用してリターン・プログラム・カウンタ値を生成するように構成される。
【００３３】
したがって、宛先例外レベルが機能によって制約される場合、リターン・プログラム・カウンタ機能が生成されるが、それ以外の場合、リターン・プログラム・カウンタ値が生成される。そのような一実施形態では、どちらの場合にもプログラムカウンタ機能記憶要素を使用して、リターン・プログラム・カウンタ機能またはリターン・プログラム・カウンタ値のいずれかを格納し、リターン・プログラム・カウンタ値の格納に使用する場合、そのリターン・プログラム・カウンタ値はプログラムカウンタ機能記憶要素の第１フィールド内に格納される。前述の例外エントリメカニズムと同様に、後者の場合（つまり、プログラムカウンタ機能が不要な場合）、ハードウェアがプログラムカウンタ機能記憶要素の残りの部分を参照しない場合、残りの部分は「そのまま」残すことができ、またはクリアされ得る。しかし、代替実施形態では、プログラムカウンタ機能記憶要素の残りのフィールドは、第３デフォルト値に設定されるように構成され、１つの特定の実施形態では、その第３デフォルト値によりプログラムカウンタ機能記憶要素が処理回路の最大機能を表して、処理回路によるプログラムカウンタ値の使用が、プログラムカウンタ機能記憶要素の内容によって制約されないことを保証する。
【００３４】
複数の例外レベルはさまざまな形をとり得るが、一実施形態では、階層内のより高い例外レベルで実行するソフトウェアが、階層内のより低い例外レベルで実行するソフトウェアの少なくともいくつかの動作を制約する機能を有するように、例外レベルの階層として構成される。そのような一実施形態では、機能構成情報は、各例外レベルについて、その例外レベルで実行するソフトウェアが、同じ例外レベルとそれより低い例外レベルとの少なくとも１つで命令を実行するときに処理回路によって実行される動作を制約するために使用される機能を管理できるかどうかをさらに識別するように構成される。いくつかの実施形態では、機能構成情報内に格納される追加情報は、特定の例外レベルで実行するソフトウェアが、より低い例外レベルで実行される操作を制限するために使用される機能を管理できるかどうかを単に示すだけである。しかし、いくつかの実施形態では、特定の例外レベルで実行されるソフトウェアが、その同じ例外レベルで実行される動作を制約するために使用される機能をさらに管理できるかどうかを識別するためにその同じ情報を使用することもできる。さらに、階層内の最低の例外レベルについて、機能構成情報内の機能管理情報は、その最低の例外レベルがその最低の例外レベルで動作を制約するために使用される機能を管理できるかどうかを単に識別してもよい。
【００３５】
一実施形態では、特定の例外レベルの機能構成情報がその特定の例外レベルが機能を管理できないことを識別する場合、少なくとも特定の例外レベルが最低の例外レベル以外の例外レベルである場合、前記特定の例外レベルの機能構成情報はさらに、前記特定の例外レベルで命令を実行するときに処理回路によって実行される動作が、前記機能によって制約されないことを識別する。したがって、最低の例外レベル以外の例外レベルについて、その例外レベルが機能を管理できないことを機能構成情報が示す場合、その例外レベルの機能構成情報は、その例外レベルで実行される動作が機能によって制約されていないことも識別する。したがって、最低の例外レベルは例外かもしれないが、所定の例外レベルが機能を管理できない場合、説明された実施形態の機能によって影響を受けることもあり得ない。同じことが最低の例外レベルにも当てはまり得るが、代替の実施形態では、機能を管理できない場合でも、最低の例外レベルがなお機能の影響を受ける可能性があることになり得る。
【００３６】
さらに、一実施形態では、特定の例外レベルの機能構成情報がその特定の例外レベルが機能を管理できないことを識別する場合、より低い各例外レベルの機能構成情報がそのより低い例外レベルが機能を管理できないことを識別することもある。さらに、少なくともその低い例外レベルが最低の例外レベル以外の例外レベルである場合、その低い例外レベルの機能構成情報は、その低い例外レベルで処理回路によって実行される動作が機能によって制約されていないことをさらに識別する。前述のように、この制約は最低の例外レベルにも適用され得るが、一実施形態では、最低の例外レベルはなお機能の影響を受けるように構成され得る。
【００３７】
次に、図面を参照して特定の実施形態を説明する。
【００３８】
図１は、命令を処理するための処理パイプライン４を備えるデータ処理装置２の例を概略的に示している。この例では、処理パイプライン４は、フェッチステージ６、デコードステージ８、発行ステージ１０、実行ステージ１２、および書き戻しステージ１４を含むいくつかのパイプラインステージを含むが、他のタイプまたは組み合わせのステージが提供されてもよい。例えば、いくつかの実施形態では、レジスタの改名を実行するための改名段階を含めることができる。処理される命令はステージからステージに移動し、あるステージで命令が保留中に、パイプライン４の別のステージで別の命令が保留される場合がある。
【００３９】
フェッチステージ６は、レベル１（Ｌ１）命令キャッシュ２０から命令をフェッチする。フェッチステージ６は通常、連続する命令アドレスから順次命令をフェッチすることができる。しかしながら、フェッチステージは、分岐命令の結果を予測するための分岐予測器２２を有してもよく、フェッチステージ６は、分岐が行われると予測される場合に（非順次）分岐ターゲットアドレスから命令をフェッチしてもよいし、または分岐が行われないと予測される場合に次の一連のアドレスから命令をフェッチしてもよい。分岐予測器２２は、特定の分岐がとられる可能性が高いかどうかを予測するための情報を格納するための１つまたは複数の分岐履歴テーブルを含み得る。例えば、分岐履歴テーブルには、以前に実行された分岐の実際の結果を追跡したり、分岐に対して行われた予測の信頼性を表したりするためのカウンタが含まれ得る。分岐予測器２２は、分岐命令の以前のターゲットアドレスをキャッシュするための分岐ターゲットアドレスキャッシュ（ＢＴＡＣ）２４も含むことができ、これにより、同じ分岐命令の後続の遭遇時にこれらを予測できる。
【００４０】
フェッチされた命令は、デコードステージ８に渡され、デコードステージ８は、命令をデコードして、デコードされた命令を生成する。デコードされた命令は、適切な処理動作を実行するために実行ステージ１２を制御するための制御情報を含み得る。キャッシュ２０からフェッチされたいくつかのより複雑な命令については、デコードステージ８は、それらの命令をマイクロオペレーション（μｏｐまたはｕｏｐ）として知られている複数のデコードされた命令にマッピングしてもよい。したがって、Ｌ１命令キャッシュ２０からフェッチされた命令と、パイプラインの後のステージで見られる命令との間に１対１の関係がない場合がある。一般に、本出願における「命令」への言及は、マイクロオペレーションを含むと解釈されるべきである。
【００４１】
デコードされた命令は発行ステージ１０に渡され、命令の実行に必要なオペランドが使用可能かどうかを判断し、オペランドが使用可能になったときに実行のために命令を発行する。いくつかの実施形態は、命令がＬ１命令キャッシュ２０からフェッチされたプログラム順序に対応する順序で実行のために命令が発行されるように、逐次処理をサポートしてもよい。他の実施形態は、プログラムの順序とは異なる順序で実行ステージ１２に命令を発行できるように、順不同実行をサポートしてもよい。オペランドを待機している間に以前の命令がストールしている間、オペランドが利用可能なプログラム順序の後の命令が最初に実行できるため、順不同処理は、パフォーマンスの向上に役立ち得る。
【００４２】
発行ステージ１０は、命令が実行されてさまざまなデータ処理動作を実行する実行ステージ１２に対して命令を発行する。例えば、実行ステージは、整数値に対して算術演算または論理演算を実行するための算術／論理ユニット（ＡＬＵ）３０、浮動小数点形式で表される値の操作を実行するための浮動小数点（ＦＰ）ユニット３２、およびレベル１（Ｌ１）データキャッシュ３６からレジスタ４０にデータ値をロードするロード操作、またはレジスタ４０からＬ１データキャッシュ３６にデータ値を保存するストア操作を実行するロード／ストアユニット３４を含む多数の実行ユニット３０、３２、３４を含み得る。これらは提供可能な実行ユニットのタイプのほんの一例であり、他の多くの種類も提供できることは理解されよう。処理動作を実行するために、実行ステージ１２は、レジスタ４０のセットからデータ値を読み取ってもよい。次に、実行された命令の結果は、書き戻しステージ１４によってレジスタ４０に書き戻されてもよい。
【００４３】
Ｌ１命令キャッシュ２０およびＬ１データキャッシュ３６は、複数レベルのキャッシュを含むキャッシュ階層の一部であってもよい。例えば、レベル２（Ｌ２）キャッシュ４４も提供されてもよく、オプションとして、さらなるレベルのキャッシュが提供されてもよい。この例では、Ｌ２キャッシュ４４はＬ１命令キャッシュ２０とＬ１データキャッシュ３６との間で共有されるが、他の例ではＬ２命令キャッシュとデータキャッシュとを別々に有していてもよい。フェッチされる命令がＬ１命令キャッシュ２０にない場合、Ｌ２キャッシュ４４からフェッチでき、同様に、命令がＬ２キャッシュ４４にない場合、メインメモリ５０からフェッチできる。同様に、ロード命令に応答して、データがＬ１データキャッシュ３６にない場合はＬ２キャッシュ４４からフェッチし、必要に応じてメモリ５０からフェッチすることができる。キャッシュ階層の管理には、既知のスキームが使用され得る。
【００４４】
プログラム命令およびデータ値を参照するためにパイプライン４が使用するアドレスは仮想アドレスでもよいが、少なくともメインメモリ５０、およびオプションでキャッシュ階層の少なくともいくつかのレベルは、物理的にアドレス指定されてもよい。したがって、パイプライン４によって使用される仮想アドレスをキャッシュまたはメモリにアクセスするために使用される物理アドレスに変換するために、変換ルックアサイドバッファ５２（ＴＬＢ）が提供され得る。例えば、ＴＬＢ５２は、それぞれが仮想アドレス空間の対応するページの仮想ページアドレスと、物理アドレスに対応するページ内で仮想アドレスを変換するべく仮想ページアドレスがマッピングされるべき対応する物理ページアドレスとを指定する多数のエントリを含み得る。例えば、仮想ページアドレスおよび物理ページアドレスは、対応する仮想アドレスおよび物理アドレスの最上位部分に対応し、仮想アドレスを物理アドレスにマッピングするときに残りの最下位部分は変更されないままであってもよい。アドレス変換情報だけでなく、各ＴＬＢエントリには、パイプライン４の特定のモードでアドレスの特定のページにアクセスできるかどうかを示すなど、アクセス許可を指定する情報も含まれ得る。いくつかの実施形態では、ＴＬＢエントリは、読み取り操作または書き込み操作に応じてキャッシュ階層のどのレベルが更新されるか（例えば、キャッシュが書き戻しモードまたはライトスルーモードで動作するかどうか）を定義するキャッシュポリシー情報、または対応するページのアドレスへのデータアクセスを、パイプライン４によってデータアクセスが発行された順序と比較して、メモリシステムによって並べ替えできるかどうかを定義する情報など、アドレスの対応するページの他のプロパティも定義できる。
【００４５】
図１は単一レベルのＴＬＢ５２を示すが、レベル１（Ｌ１）ＴＬＢ５２がいくつかの最近アクセスされたページのアドレスを変換するためのＴＬＢエントリを含むことができるようにＴＬＢの階層が提供され得ること、およびより多くのページのエントリを格納するためにレベル２（Ｌ２）ＴＬＢが提供され得ることが理解される。必要なエントリがＬ１ＴＬＢに存在しない場合、Ｌ２ＴＬＢから、または階層内の別のＴＬＢから取得できる。アクセスするページに必要なエントリがＴＬＢのいずれにもない場合、ページ表ウォークを実行してメモリ５０内のページ表にアクセスできる。本技法では、任意の既知のＴＬＢ管理方式を使用することができる。
【００４６】
また、例えば、最初のＴＬＢ（またはＴＬＢの階層）を使用して仮想アドレスを中間アドレスに変換し、その後、１つ以上のさらなるＴＬＢを使用する２番目のレベルのアドレス変換が中間アドレスをキャッシュまたはメモリへのアクセスに使用される物理アドレスに変換することができるように、一部のシステムは複数レベルのアドレス変換をサポートできることも理解される。このことは、第１レベルのアドレス変換をオペレーティングシステムで管理し、第２レベルのアドレス変換をハイパーバイザで管理する仮想化のサポートに役立ち得る。
【００４７】
図１に示されるように、装置２は、境界ポインタレジスタ６０のセットを有し得る。境界付きポインタレジスタのセットは、図１では汎用データレジスタ４０のセットと物理的に分離されているように示されているが、一実施形態では、同じ物理記憶装置を使用して汎用データレジスタと境界ポインタレジスタの両方を提供することができる。
【００４８】
各境界ポインタレジスタ６０は、アクセスされるデータ値のアドレスを決定するために使用され得るポインタ値６２と、対応するポインタ６２を使用する際のアドレスの許容範囲を指定する範囲情報６４とを含む。境界ポインタレジスタ６０はまた、ポインタの使用に関する１つ以上の制限／許可を定義し得る制限情報６６（本明細書では許可情報とも呼ばれる）を含み得る。例えば、制限６６を使用して、ポインタ６２を使用できる命令の種類、またはポインタを使用できるパイプライン４のモードを制限することができる。したがって、範囲情報６４および制限情報６６は、その中でポインタ６２が使用されることを許可される機能を定義すると見なされ得る。定義された機能の範囲外でポインタ６２を使用しようとすると、エラーが誘発され得る。範囲情報６４は、例えば、ポインタが特定の既知の境界内に留まり、機密情報または安全情報を含む可能性のあるメモリアドレス空間の他の領域に迷わないことを保証するのに役立ち得る。同じ物理記憶装置が汎用データレジスタと境界ポインタレジスタとの両方に使用される実施形態において、一実施形態では、ポインタ値６２は、例えば、対応する汎用レジスタに使用されるのと同じ記憶場所内に格納され得る。
【００４９】
図２は、データまたは命令への不正アクセスから保護するために許容範囲が使用される命令のタイプの例を示している。図２の上部に示すように、特定の境界ポインタレジスタＰＲ１は、特定のポインタ値６２と、この例では許容範囲の下限を定義する下限アドレス６８と許容範囲の上限を定義する上限アドレス６９を使用して指定される範囲情報６４とを含む。例えば、境界６８、６９は、アドレス８００００〜８１０００の範囲を定義するように設定される。特定の命令が境界ポインタレジスタＰＲ１を参照し、ポインタ６２から決定されたアドレスがこの範囲外にある場合、エラーが誘発され得る。
【００５０】
例えば、図２のパートＡに示すように、一部のシステムでは、ポインタレジスタ６０のポインタ６２の値を範囲情報６４で指定された範囲外の値に設定しようとすると、エラーが誘発され得る（ここでは、ポインタがアドレスを直接指定すると想定されている）。これにより、ポインタ６２が指定された範囲外の値をとることが回避されるため、ポインタを使用するアクセスが許可された範囲内に安全に収まることが保証され得る。あるいは、図２のパートＢに示されるように、そのアドレスが指定範囲外にあるときに命令がポインタ６２のアドレスによって識別される位置にアクセスしようとするとエラーが誘発され得る。したがって、ポインタ６２を指定された範囲外の値に設定することは依然として可能であるが、ポインタアドレス（またはポインタから派生したアドレス）でデータアクセスが試行されると、アドレスが許容範囲外に存在する場合はエラーが誘発され得る。他のシステムは、図２のパートＡおよびパートＢに示されている両方のタイプの命令に応答してエラーを誘発し得る。
【００５１】
範囲情報６４は、さまざまな方法で設定できる。例えば、セキュリティで保護されたコード、またはオペレーティングシステムまたはハイパーバイザは、特定のポインタに許可される範囲を指定できる。例えば、命令セットアーキテクチャは、所与のポインタ６２の範囲情報６４を設定または変更するためのいくつかの命令を含んでもよく、これらの命令の実行は、特定のソフトウェアまたは特定のモードまたはプロセッサ４の例外レベルに制限され得る。範囲情報６４を設定または修正するための任意の既知の技術を使用することができる。
【００５２】
ポインタを参照する特定の命令を実行するときに実行状態１２で使用できる境界ポインタ記憶要素６０のセットに加えて、プログラムカウンタ機能（ｐｒｏｇｒａｍ  ｃｏｕｎｔｅｒ  ｃａｐａｂｉｌｉｔｙ：ＰＣＣ）レジスタ８０も使用して、命令がレベル１命令キャッシュ２０からフェッチされているときのフェッチステージ６における同様の機能を提供し得る。特に、境界ポインタ記憶要素６０のセット内の各ポインタが提供される範囲および制限情報と同様に、ＰＣＣ８０が範囲情報８４および任意の適切な制限情報８６も提供しつつ、プログラムカウンタポインタをフィールド８２に格納することができる。
【００５３】
さらに、一実施形態では、非境界ポインタも汎用レジスタ４０内で指定され、メモリアクセスを実行するときに使用されてもよい。このような非境界ポインタを使用してアクセスできるメモリアドレスを制限するために、機能レジスタのいずれかに含まれる範囲および制限情報と同様に、範囲データ９２とあらゆる制限データ９４との両方を指定するデフォルトデータ機能（Ｄｅｆａｕｌｔ  Ｄａｔａ  Ｃａｐａｂｉｌｉｔｙ：ＤＤＣ）レジスタ９０が提供され得る。次いで、汎用レジスタ４０内の非境界ポインタを参照してメモリアドレスを識別するメモリアクセス命令が実行されるとき、その非境界ポインタから導出された任意のアドレスに基づいて、境界ポインタに関して実行される境界チェック操作と同様の境界チェック操作が、依然として実行可能であるが、この例では、ＤＤＣレジスタ９０内に保持されている範囲と制限情報とを考慮する。そのようなアプローチにより、例えば、既存のソフトウェアライブラリ内のいくつかの機能を認識しないコードを利用してＤＤＣレジスタ９０を設定して、その機能を認識しないコードを実行するときに、汎用レジスタ４０からアクセスされるポインタの使用方法に制約を課すことができる。特に、範囲情報を使用して、このような機能を認識しないコードを実行するときにアクセスできるアドレス範囲を制限できる。
【００５４】
境界ポインタレジスタ内の境界ポインタによって識別されるメモリアドレスの特定の範囲には、データ、命令、および／またはその他の機能（つまり、その他の境界ポインタ）を含めることができる。したがって、メモリにアクセスする処理回路の機能は、境界ポインタレジスタで識別される機能と、それらの境界ポインタレジスタに保持されている機能を介してアクセス可能なその他の機能とを含む一連の機能によって定義されることがいつでも認識され、この機能セットは、本明細書では機能ドメインと呼ばれる。
【００５５】
ＰＣＣレジスタ８０またはＤＤＣレジスタ９０で指定された範囲情報および関連する制限は、さまざまな方法で設定することができる。しかし、一実施形態では、情報は、現在の機能ドメイン内の処理回路で利用可能な境界ポインタの１つまたは複数を使用して決定されるため、現在の機能ドメインで識別されるメモリアドレス範囲外にある如何なるメモリアドレスにも、ＰＣＣベースのまたはＤＤＣベースの境界チェックを使用してアクセスすることはできない。
【００５６】
図３は、個々のデータブロックに関連してタグビットを使用して、それらのデータブロックが機能（つまし、境界ポインタおよび関連制限情報）を表すか、通常のデータを表すかを識別する方法を概略的に示している。特に、メモリアドレス空間１１０は、通常、指定されたサイズを有する一連のデータブロック１１５を格納する。純粋に説明のために、この例では各データブロックが１２８ビットで構成されていると仮定している。各データブロック１１５に関連して、一例では、タグビットと呼ばれる単一ビットフィールドであるタグフィールド１２０が提供され、関連するデータブロックが機能を表すことを識別するように設定され、関連するデータブロックが通常のデータを表していることを示すようにクリアされるため、機能として扱うことができないことを示している。セットまたはクリア状態に関連付けられた実際の値は、実施形態に応じて変化する可能性があるが、純粋に例示として、一実施形態では、タグビットの値が１の場合、関連するデータブロックは機能であることを示し、値が０の場合、関連するデータブロックは通常のデータを含むことを示している。
【００５７】
図３に示される機能レジスタ１００のように、機能が境界ポインタレジスタ６０（本明細書では機能レジスタとも呼ばれる）の１つにロードされると、タグビットは機能情報とともに移動する。したがって、機能レジスタ１００に機能がロードされると、ポインタ１０２、範囲情報１０４および制限情報１０６（以下、許可情報と呼ぶ）が機能レジスタにロードされる。さらに、その機能レジスタに関連して、またはその中の特定のビットフィールドとして、コンテンツが機能を表すことを識別するためにタグビット１０８が設定される。同様に、機能がメモリに戻されて保存されると、関連するタグビット１２０は、機能が保存されるデータブロックに関連して設定される。このようなアプローチにより、機能と通常のデータとを区別し、通常のデータを機能として使用できないようにすることができる。
【００５８】
図示の実施形態では、装置は、各例外レベルが異なるソフトウェア実行特権を有する異なる例外レベルで動作できるように構成されている。さらに、複数の例外レベル間を遷移するために例外メカニズムが使用される。特に、例外エントリまたは例外出口では、切り替え操作を実行して、ソース例外レベルからターゲット例外レベルに切り替えることができる。図１に示されるように、装置１０は、その動作中に処理回路によって参照されるさまざまな制御および状態情報を格納するさまざまな制御／状態レジスタ７０にアクセスでき、制御／状態レジスタ７０は上記のスイッチ操作の実行中に使用されるさまざまなレジスタを含む。
【００５９】
図１に示されるように、現在のプロセス状態７４は、プロセッサの現在の動作に関連するさまざまな実行状態情報を取得するために、制御／状態レジスタ７０内で維持される。単一のボックス７４として示されているが、現在のプロセス状態は必ずしも単一のレジスタ内にすべて格納されるわけではなく、利用可能な制御／状態レジスタ７０内の多数の制御／状態レジスタ内に格納されてもよい。
【００６０】
動作中に、割り込み、システムコール、障害など、さまざまな異なるメカニズムによって例外が誘発され得る。一実施形態によれば、例外がとられると、切り替え動作の一部として例外エントリメカニズムが誘発され、このプロセス中に現在のプロセス状態７４が保存されたプロセス状態７２としてキャプチャされる。繰り返しになるが、保存されたプロセス状態７２は、単一のレジスタ内、または複数のレジスタ内に格納されてもよい。次に、例外を処理するために、処理回路によって例外処理操作が実行される。その後、処理回路が例外から復帰すると、保存されたプロセス状態が現在のプロセス状態に復元され、処理回路は、例外が発生する前に実行していた操作を続行できる。
【００６１】
処理回路の実行状態を複数の例外レベルで維持できるようにするために、必要に応じて、複数の例外レベルで別々の保存されたプロセス状態レジスタ（ｓａｖｅｄ  ｐｒｏｃｅｓｓ  ｓｔａｔｅ  ｒｅｇｉｓｔｅｒｓ：ＳＰＳＲ）７２と現在のプロセス状態レジスタ（ｃｕｒｒｅｎｔ  ｐｒｏｃｅｓｓ  ｓｔａｔｅ  ｒｅｇｉｓｔｅｒｓ：ＣＰＳＲ）７４とを維持できる。
【００６２】
図４は、一実施形態におけるさまざまな例外レベル間の相互関係を示している。例外レベルＥＬ０のソフトウェア実行特権は最も低く、ＥＬ０での実行は非特権実行と呼ばれる。ｎの値が１から３に増加したことは、ソフトウェア実行特権が増加したことを示している。ＥＬ２例外レベルは、プロセッサ仮想化のサポートを提供する。一方、ＥＬ３ステージは、２つのセキュリティ状態、つまりセキュア状態と非セキュア状態のサポートを提供する。
【００６３】
これにより、図４に示す一般的なツリー構造が生成される。特に、図４に示すＥＬ３  ２００などのＥＬ３例外レベルが提供されている場合、安全な状態で実行される。非セキュア状態では、必要に応じて仮想化をサポートすることが可能であり、したがって、非セキュア状態でＥＬ２例外レベル２０５を提供することができる。セキュア状態内では、一実施形態では、ＥＬ２レベルは提供されず、代わりに、ＥＬ１レベル２３０がセキュア状態内に提供され、その下にいくつかの異なるＥＬ０レベル２４０、２４２が提供され得る。
【００６４】
非セキュア状態では、ＥＬ２レベル２０５が提供される場合、その下で複数のＥＬ１レベル２１０、２１２、２１４をサポートでき、これらのＥＬ１レベルのそれぞれは、参照番号２２０、２２２で概略的に示すように１つ以上のＥＬ０レベルをサポートできる。
【００６５】
さまざまな例外レベル間の遷移は、例外の取得を介して行われる。ただし、すべての例外によって例外レベルが変更されるわけではない。例えば、一実施形態では、ＥＬ０からの例外は通常ＥＬ１（ただし、いくつかの構成ではＥＬ２）でとられる。一実施形態では、ＥＬ１以上からの例外は、一般に同じ例外レベルでとられる可能性がある。ただし、ＥＬ１からＥＬ２／ＥＬ３およびＥＬ２からＥＬ３のさまざまな例外も提供され、同様の目的に使用できる。一実施形態では、ＥＬ３の例外は常にＥＬ３でとられる。図４に示すように、保存されたプロセス状態レジスタは、各例外レベルに関連付けて提供できる。ＥＬ１でＥＬ０からの例外が取得されることが常にある場合は、ＥＬ０レベルに関連する個別のＳＰＳＲの必要はない。しかしながら、一実施形態では、ＥＬ０からの特定の例外をＥＬ０レベルでとることができ、その場合、ＥＬ０用の別個のＳＰＳＲレジスタを提供することができる。
【００６６】
残りの図を参照して説明するように、本明細書で説明する実施形態では、複数の例外レベルでの動作を可能にするタイプの処理回路で使用する機能の使用を管理する柔軟な手法が開発された。
【００６７】
特に、図１に示されるように、制御／状態レジスタ７０は、各例外レベルの機能構成情報を格納するための例外レベルごとの機能構成レジスタ７６を含む。機能構成情報は、さまざまなタイプの情報をキャプチャできるが、一実施形態では、少なくとも、その例外レベルで命令を実行するときに処理回路によって実行される動作が機能によって制約されるかどうかを識別する。
【００６８】
このような機能構成情報を例外レベルごとに例外レベルで指定できることにより、少なくとも１つの例外レベルのソフトウェアが必要に応じて機能によって制約されないようにする柔軟性が提供される。したがって、例えば、高い例外レベルで実行される信頼性の高いソフトウェアは、機能に制約されることなく動作することができ、そのようなソフトウェアの機能チェックルーチンを実行する必要性を回避することにより、パフォーマンス上のメリットが得られる。また、機能ベースのアーキテクチャと互換性を持たせるために、そのようなソフトウェアを変更する必要がある範囲を減らすこともできる。実際、いくつかの実施形態では、メカニズムにより、レガシーの機能非対応のソフトウェアを少なくとも１つの例外レベルで実行することができる。
【００６９】
図５は、一実施形態に従ってレジスタ７６内で捕捉された例外レベルごとの機能構成情報を概略的に示す表である。この実施形態では、レジスタ３００は、各例外レベルに対して２ビットのフィールドを備えてもよい。第１フィールド３０５は、関連する例外レベルが機能の影響を受けるかどうかを識別することができ、このフィールドは本明細書では「Ａ」ビットとも呼ばれる。したがって、このビットは、ソフトウェアが関連する例外レベルで実行されているときに、そのソフトウェアが機能によって制約されているかどうかを識別する。図５に示す例では、値「０」はソフトウェアが機能によって制約されていないことを示し、値「１」はソフトウェアが機能によって制約されていることを示す。しかし、他の実施形態では、必要に応じて、論理ゼロ値と論理１値の意味を逆にすることができることが理解されよう。
【００７０】
一実施形態では、例外レベルごとの機能構成情報はフィールド３０５のみを含んでもよいが、代替実施形態では、関連する例外レベルで実行するソフトウェアが、後で処理回路によって１つ以上のより低い例外レベルで実行される操作を制限するために使用される機能を管理できるかどうかを識別する追加フィールド３１０が提供される。オプションで、この情報は、特定の例外レベルで実行されているソフトウェアが、同じ例外レベルで処理回路によって実行される操作を制限するために使用される機能も管理できるかどうかも識別できる。例えば、一実施形態では、特定の例外レベルで実行するソフトウェアを異なる「コンパートメント」で実行するように調整することができ、後で１つのコンパートメントで実行するソフトウェアが別のコンパートメントで実行されるソフトウェアによって実行される操作を制限するために使用する機能を管理できる。特定の例として、特定の例外レベルで実行されるソフトウェアは、実行状態または制限状態で動作することができ、実行状態の１つのコンパートメントで実行されるソフトウェアは、後で同じ例外レベルの別のコンパートメントで実行されるソフトウェアを制限するために使用される機能を管理することを許可される場合がある。
【００７１】
図５に示すように、機能を管理するために特定の例外レベルで実行するソフトウェアの機能に関する情報を取得するために使用されるフィールド３１０は、一実施形態では「Ｍ」ビットと呼ばれる場合がある。
【００７２】
図５に示すように、ＡビットとＭビットとの両方がクリアされている場合、これは、ソフトウェアが機能により影響されないだけでなく、機能を管理することもできないため、関連する例外レベルで実行されているそのソフトウェアがレガシーソフトウェアである可能性があり、したがって装置の機能ベースのアーキテクチャを考慮するために変更する必要はないことを意味する。
【００７３】
図５にも示されているように、別のオプションの状態は、Ａビットがクリアされるが、Ｍビットが設定されることである。つまり、関連する例外レベルで実行されるソフトウェアは機能自体の影響を受けないが、後でより低い例外レベルで実行されるソフトウェアが実行する操作を制限するために使用する機能の管理に使用できる。
【００７４】
別のオプションとして、ＡビットとＭビットとの両方を設定できる。つまり、関連する例外レベルで実行されているソフトウェアは機能自体の影響を受け、機能を管理することもできる。前述のように、Ｍビットが設定されている場合、これは、一実施形態では、関連する例外レベルで実行するソフトウェアが、後でより低い例外レベルでソフトウェアによって実行される操作を制限するために使用される機能を管理できることを示す場合があるが、ソフトウェアが同じ例外レベルの機能を管理することはできないことである場合がある。しかし、代替実施形態では、状況によっては、同じ例外レベルに関連付けられた機能を管理することも許可される場合がある。
【００７５】
一実施形態では、図５に示されるエントリの最初の３セットのみが、ＡビットおよびＭビットの有効な状態である。しかしながら、代替実施形態では、表３００内の最終エントリによって示されるような状態のさらなるセットは、いくつかの例において、例えば最低の例外レベルＥＬ０に関連して利用可能であってもよい。特に、この状態に従って、Ｍビットはクリアされるが、Ａビットはセットされる。これは、その例外レベルで実行されているソフトウェアは機能を管理できないが、それらによって制約される可能性があることを意味する。これは、管理する下位の例外レベルがない最低の例外レベルＥＬ０を許可するための適切な構成であり得る。特定の具体的な例として、これにより、通常はより高い例外レベルによってこれらの機能が設定された後、ＥＬ０で実行するソフトウェアをプログラムカウンタ機能８０やＤＤＣ９０などの機能によって制約できる。
【００７６】
一実施形態では、例外レベルごとの機能構成レジスタ７６は、各レジスタが関連する例外レベルによって「所有」され、その例外レベルのＡビットおよびＭビットを含む複数のレジスタで形成されると考えることができる。これらのレジスタは明示的にアクセスされ、より高い例外レベルはそのレベル以下のレジスタにアクセスできる。例えば、ＥＬ２例外レベルは、ＥＬ２、ＥＬ１、およびＥＬ０に影響する機能構成レジスタにアクセスできる。特定の一実施形態では、ＥＬ０の機能構成自体は、ＥＬ１またはＥＬ２のいずれかが所有するレジスタによって構成可能に制御される。
【００７７】
一実施形態では、各例外レベルによる機能構成レジスタへのアクセスは、任意の適切なメカニズムによって制御することができる。特定の例外レベルにアクセス可能な機能構成レジスタに格納された値は、後で一実施形態では、動作中、例えばそれぞれ機能認識および非認識のＶＭゲストを切り替えるときに動的に変更できる。
【００７８】
図６は、より高い構成レベルに関連付けられた機能構成が、より低い例外レベルで利用可能な機能構成にどのように影響するかを示す表３２０である。この表では、より高い例外レベルＰのＭビットとＡビットの値はフィールド３２５、３３０で示され、より低い例外レベルＱの対応するＭビットとＡビットはフィールド３３５、３４０で示されている。この実施形態では、例外レベルＰについてＭビットがクリアされる（すなわち、論理ゼロ値にある）場合、これは、例外レベルＰが機能の影響を受け得ないことを意味し（すなわち、そのＡビットは、実際の値によらずクリアされたものとして扱われる）、より高い例外レベルが機能の影響を受けることは不可能である一方、より低い例外レベルで機能を構成することはできない。より高い例外レベルが管理できない場合はより低い例外レベルは機能を管理することはできないため、例外レベルＰのフィールド３２５のＭビットをクリアすることは、例外レベルＱのＭビットをクリア（つまりゼロ）する必要があることも意味する。例外レベルＰと同様に、例外レベルＱのフィールド３３５のＭビットをクリアすることは、フィールド３４０の値を読み取る以外のすべての目的で、フィールド３４０のＡビットもクリアとして扱われることを意味する。
【００７９】
次の３つのエントリは、例外レベルＰが機能を管理できる状況を示しているが、それ自体は機能の影響を受けない。そのような構成において、図５の表３００に示される上位３つのエントリのそれぞれは、例外レベルＱに関連して利用可能である。さらに、図５を参照して前述したように、一実施形態では、例外レベルＱが最低である例外レベルの場合、Ｍビットフィールド３３５をクリアし、Ａビットフィールド３４０を設定して、例外レベルＱが機能によって制約されるが、それらを管理できない場合がある。
【００８０】
図６の最後の３つのエントリは、ＭビットとＡビットの両方が例外レベルＰに設定されている状況を示している。再び、図５の表３００に示されている上位３つのエントリは例外レベルＱに使用できる。さらに、前述のように、例外レベルＱが最も低い例外レベルである場合、Ｍビットをクリアすることもできるが、Ａビットをセットすることもできる。
【００８１】
前述のように、例外の入口または例外の出口／戻り時に、切り替え操作を実行して、ソース例外レベルからターゲット例外レベルに切り替えることができる。記載された実施形態によれば、機能の効果を例外レベルごとに変えることができるので、装置は、スイッチ操作の一部として、機能の効果がソース例外レベルとターゲット例外レベルの間で異なる可能性を考慮するメカニズムも提供する。特に、ソース例外レベルからターゲット例外レベルへの切り替え操作中に、ソース例外レベルと宛先例外レベルの少なくとも１つに関連する機能構成記憶装置内の機能構成情報を使用して、処理回路の実行状態がスイッチ操作中にどのように管理されるかを判定する。このプロセスについては、図７Ａ、図７Ｂ、図８を参照して詳細に説明する。
【００８２】
図７Ａは、ソース例外レベルＸのどの実行状態を保存するかを決定するために、例外レベルＸから例外レベルＹまでの例外エントリで実行されるステップを示している。ステップ４００で、ソース例外レベルＸにＡビットが設定されているかどうか、すなわち、例外レベルＸが機能の影響を受けるかどうかが判定される。そうである場合、プロセスはステップ４０５に進み、例外レベルＸの機能状態がキャプチャされる。前述のように、これは、例外レベルＸの現在のプロセス状態レジスタ（ＣＰＳＲ）の内容が、例外レベルＹにアクセス可能な保存されたプロセス状態レジスタ（ＳＰＳＲ）７２に保存されることを意味する。しかし、さらに、ＰＣＣレジスタ８０に格納されているプログラムカウンタ機能は、ソース例外レベルＸの優先リターンアドレス機能を識別するために使用する必要がある。優先リターンアドレスは、例外のタイプに依存するが、通常はプログラムカウンタ値またはプログラムカウンタ値に４を加えたもの（バイトサイズのアドレス指定と３２ビット命令を想定）である。優先リターンアドレスに加えて、現在のプログラムカウンタ機能からの残りの機能情報も、ＰＣＣから生成されたリターンアドレス機能にコピーされる。一実施形態では、このようにして生成されたリターンアドレス機能は、専用リターンアドレス機能レジスタ内に格納され、特定の一実施形態では、これは機能例外リンクレジスタ（ｃａｐａｂｉｌｉｔｙ  ｅｘｃｅｐｔｉｏｎ  ｌｉｎｋ  ｒｅｇｉｓｔｅｒ：ＣＥＬＲ）７８）である。
【００８３】
ただし、ステップ４００でＡビットが設定されていないと判定された場合、つまり、ソース例外レベルで実行されているソフトウェアが機能の影響を受けない場合、例外レベルＸの現在のプロセス状態７４が保存されたプロセス状態７２に保存されるので、リターンアドレス情報を形成する機能を保存する必要はない。代わりに、好ましいリターンアドレスは、プログラムカウンタ値８２から計算され、適切なリターンアドレス記憶要素内に保存され、一実施形態では、これは例外リンクレジスタ（ｅｘｃｅｐｔｉｏｎ  ｌｉｎｋ  ｒｅｇｉｓｔｅｒ：ＥＬＲ）である。しかしながら、例外レベルＸで実行するソフトウェアは機能によって制約される命令フェッチを持たないため、機能情報をＰＣＣレジスタ８０から抽出する必要はない。
【００８４】
一実施形態では、別個のＣＥＬＲレジスタ７８および別個のＥＬＲレジスタを設けることができるが、代替実施形態では、両方の場合に同じ物理構造７８を使用することができる。ソース例外レベルＸが機能に制約されていないために図７Ａに示すプロセスがステップ４１０に進むと、ＰＣ値から派生した優先リターンアドレスをＣＥＬＲのアドレスフィールド内に格納でき、一実施形態では、残りのフィールドの少なくとも１つが第１デフォルト値に設定される。例えば、図３を参照して説明した前述のタグビットを参照すると、ＣＥＬＲレジスタ７８に関連付けられたタグビットをそのようなインスタンスでクリアして、ＣＥＬＲが有効な機能を格納していないことを識別でき、後で例外リターンでその情報を取得するときに、リターンアドレス情報を格納するＣＥＬＲの部分を参照する。代替実施形態では、例えば、ステップ４１０でＣＥＬＲレジスタ７８に格納された優先リターンアドレスをゼロ拡張することにより、ＣＥＬＲレジスタ７８の残りのフィールドのすべてをクリアすることができる。
【００８５】
ソース例外レベルＸのどの実行状態を例外エントリに保存する必要があるかを決定することに加えて、宛先例外レベルＹの適切な実行状態を決定する必要もあり、特に、ＰＣＣレジスタ８０に保存する初期プログラムカウンタ機能または初期プログラムカウンタ値を決定する必要がある。このプロセスを図７Ｂに概略的に示す。
【００８６】
図示のように、ステップ４２０で、宛先ビットが宛先例外レベルＹに設定されているかどうか、すなわち宛先例外レベルが機能の影響を受けるかどうかが判定される。そうである場合、プロセスはステップ４２５に進み、プログラムカウンタ機能レジスタ８０は、図１に示される機能制御記憶要素７９に記憶された例外エントリアドレス機能情報を使用して更新される。特に、レジスタ７９は、例外エントリで使用される適切なアドレスに関する情報と、ＰＣＣレジスタ８０内に格納されるプログラムカウンタ機能を形成するためにそのアドレスに加えて提供される関連機能情報も格納する。レジスタ７９内の例外エントリアドレス情報はさまざまな形をとることができるが、一実施形態では、レジスタ７９は機能ベクトル・ベース・アドレス・レジスタ（ｃａｐａｂｉｌｉｔｙ  ｖｅｃｔｏｒ  ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ：ＣＶＢＡＲ）の形をとる。このレジスタは、例外エントリのベースアドレスを提供し、例外は、例外タイプに応じてこのベースアドレスからのオフセットを決定する。したがって、ＰＣＣレジスタ８０にロードされたプログラムカウンタ機能を形成するために使用される適切なアドレスを識別するために、例外のタイプに関する情報が使用され、ＰＣＣレジスタの機能情報の残りの部分はＣＶＢＡＲの機能の対応する部分から形成される。
【００８７】
宛先例外レベルＹにＡビットが設定されていない場合、例外レベルＹは機能の影響を受けないため、プログラムカウンタ機能は必要ない。代わりに、ＰＣＣレジスタ８０のフィールド８２にロードされる初期プログラムカウンタ値を形成するだけでよい。したがって、一実施形態では、ステップ４３０で示されるように、このシナリオでは、ＰＣＣレジスタ８０のフィールド８４、８６の範囲および制限情報は最大機能を識別するように設定され、ＰＣポインタ値８２は例外エントリ・アドレス・レジスタ７９から得られた情報を使用して更新される。この例では、非機能例外エントリ・アドレス・レジスタが参照され、一実施形態では、これはベクトル・ベース・アドレス・レジスタ（ｖｅｃｔｏｒ  ｂａｓｅ  ａｄｄｒｅｓｓ  ｒｅｇｉｓｔｅｒ：ＶＢＡＲ）であり得る。特定の一実施形態では、ＶＢＡＲレジスタは、ＣＶＢＡＲレジスタの下位６４ビットに形成され、ＣＶＢＡＲおよびＶＢＡＲレジスタの両方が同じ物理記憶構造を共有できるようにする。
【００８８】
しかしながら、代替実施形態では、最大機能を識別するためにＰＣＣレジスタ８０に範囲および制限情報を設定する必要はないかもしれない。例えば、現在の例外レベルが機能の影響を受けない場合、ＰＣＣレジスタ８０内の範囲と制限情報８４、８６を無視するようにハードウェアが配置されている場合、範囲と制限情報は変更されないままになり、必要に応じてクリアされる場合がある。しかし、ＰＣＣレジスタ８０全体があらゆる状況で参照される実施形態では、範囲および制限情報を設定して最大機能を識別することにより、宛先例外レベルで実行されるソフトウェアが機能によって制約されないことを保証する。
【００８９】
図８は、例外からの復帰中に実行されるステップを示すフロー図である。この場合、ソース例外レベルは例外レベルＹであり、宛先例外レベルは例外レベルＸであると想定される。ステップ４５０で、宛先ビットが宛先例外レベルＸに設定されているかどうかが判定される。そうである場合、プロセスはステップ４６０に進み、宛先例外レベルの機能状態が復元される。これは、ＣＥＬＲレジスタ７８の内容をＰＣＣレジスタ８０に復元し、ＳＰＳＲレジスタ７２の内容を例外レベルＸのＣＰＳＲレジスタ７４に復元することにより、図７Ａのステップ４０５でとられたステップを本質的に逆にする。
【００９０】
しかし、Ａビットが宛先例外レベルＸに設定されていないと判定された場合、つまり例外レベルＸが機能の影響を受けない場合、プロセスはステップ４５５に進む。ここで、（非機能）状態は例外レベルＸに対して復元される。一実施形態では、これは再びＳＰＳＲコンテンツが例外レベルＸのＣＰＳＲコンテンツに復元されることを伴う。しかし、ＰＣＣレジスタ８０に関して、一実施形態では、範囲および制限情報は最大機能を識別するために設定され、ポインタ値フィールド８２はＥＬＲからの情報を使用して入力される。図７Ｂのステップ４３０を参照して前述したのとほぼ同じ方法で、いくつかの実施形態では、範囲と制限情報を設定して最大機能を識別する代わりに、代わりに範囲と制限情報を単に残すことが可能かもしれない現在の例外レベルが機能の影響を受けない状況でハードウェアがその情報を参照しない場合、「そのまま」またはその情報をクリアする。
【００９１】
図９は、使用され得る仮想マシンの実装を示している。前述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して本発明を実施するが、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム５１０をサポートするホスト・オペレーティング・システム５２０を実行するホストプロセッサ５３０で実行される。通常、妥当な速度で実行される仮想マシンの実装を提供するには、大きな強力なプロセッサが必要だが、このようなアプローチは、互換性や再利用のために別のプロセッサにネイティブなコードを実行したい場合など、特定の状況で正当化される場合がある。仮想マシンプログラム５１０は、コンピュータ可読記憶媒体（非一時的媒体でもよい）に格納されてもよく、仮想マシンプログラム５１０によってモデル化されているデバイスである実際のハードウェアによって提供されるアプリケーション・プログラム・インターフェースと同じアプリケーション・プログラム・インターフェース（命令実行環境）をアプリケーションプログラム５００に提供する。機能の使用を管理するための上記の技法は、仮想マシンプログラム５１０を使用して基礎となるハードウェアとの相互作用をモデル化することにより、仮想マシン環境内で実装され得る。仮想マシンプログラムは、通常ゲスト・オペレーティング・システムとそのアプリケーションで構成される仮想マシンを実行するためのハードウェア／ソフトウェアエミュレート環境を提供すると見なすことができる。そのような実施形態では、例えば、ハイパーバイザ・オペレーティング・システムが、仮想マシンプログラム（通常はＥＬ０で実行されている）が機能の影響を受けるかどうかを制御することが可能である。また、仮想マシンプログラムと連携して、ゲスト・オペレーティング・システムとそのアプリケーションが機能の影響を受ける／管理するかどうかも制御できる。
【００９２】
上記の実施形態は、機能構成情報を例外レベルごとに指定できるようにすることにより、機能の使用を管理するための非常に柔軟なメカニズムを提供し、ソース例外レベルとターゲット例外レベル間で機能がどのように使用されるかの違いを考慮した例外レベル間の切り替えを制御するメカニズムが提供されることが理解されよう。したがって、例外レベルの開始および終了時に、切り替え動作中に処理回路の実行状態がどのように管理されるかを判定するときに、ソース例外レベルと宛先例外レベルの少なくとも１つに関連する機能構成情報を考慮した切り替え動作を実行できる。
【００９３】
このレベルの構成可能性を提供することで、さまざまな例外レベルのそれぞれでさまざまな使用モデルをサポートできる。例えば、１つ以上の例外レベルで、機能の影響を受けず、それ自体または下位レベルの機能を管理しないレガシーソフトウェアが実行される場合がある。
【００９４】
別の例として、ハイパーバイザの例外レベルなどの特定のより高い例外レベルでは、機能によって制限されないコードを実行できるが、それでもソフトウェアが機能を認識できるため、より低い例外レベルを制約するために使用される機能を制御／切り替えることができる。
【００９５】
別の例として、１つ以上の例外レベルでは、ソフトウェアが機能の影響を受け、より低い例外レベル（およびオプションで同じ例外レベル）を制限するために使用される機能を管理できる場合がある。
【００９６】
さらに、切り替えメカニズムにより、例外の入力または例外の終了時に、ソースおよび／または宛先例外レベルが機能の影響を受けるかどうかを考慮して、必要な情報をキャプチャして復元できる。
【００９７】
一実施形態では、低い例外レベルで機能を使用することが望ましい場合、より高い例外レベルはより低い例外レベルに関して文脈切り替えを担当するため、より高い例外レベルはすべて、より低いレベルの機能を管理できる範囲で機能を認識しなければならない。ただし、上記の手法を使用すると、より高い例外レベルの１つまたは複数自体が機能によって制約されない可能性がなおある。これにより、機能によって制約を受けずに実行できるソフトウェアには機能チェックが必要ないため、このような状況でパフォーマンスの利点が得られる。
【００９８】
本出願では、「…に構成される」という言葉は、装置の要素が定義された動作を実行できる構成を有することを意味するために使用される。これに関連して、「構成」とは、ハードウェアまたはソフトウェアの相互接続の配置または方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを備えていてもよいし、プロセッサまたは他の処理装置が機能を実行するようにプログラムされていてもよい。「構成」は、定義された動作を提供するために、装置要素を何らかの方法で変更する必要があることを意味するものではない。
【００９９】
本発明の例示的な実施形態を添付の図面を参照して本明細書で詳細に説明したが、本発明はそれらの正確な実施形態に限定されず、当業者によってさまざまな変更、追加、および修正を行うことができ、添付の特許請求の範囲によって定義される本発明の範囲および精神から逸脱することなく、当技術分野において実施されることを理解されたい。例えば、本発明の範囲から逸脱することなく、従属請求項の特徴と独立請求項の特徴とのさまざまな組み合わせを行うことができる。
【図１】
2020518910.tif 000003
【図２】
2020518910.tif 000004
【図３】
2020518910.tif 000005
【図４】
2020518910.tif 000006
【図５】
2020518910.tif 000007
【図６】
2020518910.tif 000008
【図７Ａ】
2020518910.tif 000009
【図７Ｂ】
2020518910.tif 000010
【図８】
2020518910.tif 000011
【図９】
2020518910.tif 000012
【国際調査報告】
2020518910.tif 000013
2020518910.tif 000014