(57)【要約】  データ処理システムは、デコーダ回路によってデコードされるコンテキスト・データ依存プログラム命令を実行するための処理回路を含む。このようなコンテキスト・データ依存プログラム命令は、現存するコンテキスト・データに依存する処理を実施する。実例として、コンテキスト・データ依存プログラム命令は浮動小数点命令であってよく、コンテキスト・データは丸めモード情報であってよい。デコーダ回路は、コンテキスト・データが使用されたものとして記録されている場合にこれを保存し、現在のコンテキスト・データが使用されていないものとして記録されている場合にデフォルトのコンテキスト・データを保存する、コンテキスト保存命令をサポートする。デコーダ回路はさらに、現在のコンテキスト・データが使用されたものとして記録されている場合にコンテキスト・データを復元し、現在使用されていないものとして記録されている場合に現在のコンテキスト・データの今後の使用を継続することを許可する、コンテキスト復元命令をサポートする。
2020525957.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理回路を制御する、装置。
【請求項２】
前記コンテキスト・データ依存プログラム命令が浮動小数点プログラム命令であり、前記コンテキスト・データが浮動小数点構成データであり、前記浮動小数点プログラム命令が前記浮動小数点構成データに依存する浮動小数点処理動作を指定する、請求項１に記載の装置。
【請求項３】
前記デフォルトのコンテキスト・データがデフォルトの浮動小数点構成データである、請求項２に記載の装置。
【請求項４】
前記処理回路が、セキュア・ドメイン及び非セキュア・ドメインを含む複数のドメインで動作し、前記セキュア・ドメインでの動作時に前記処理回路がセキュア・データにアクセスでき、前記非セキュア・ドメインでの動作時に前記処理回路が前記セキュア・データにアクセスできない、請求項１から３までのいずれか一項に記載の装置。
【請求項５】
前記コンテキスト・データが前記処理回路によって保存され、前記コンテキスト・データが前記セキュア・ドメインで処理中に使用されていないものとして記録されている場合に、前記処理回路が前記コンテキスト・データを前記非セキュア・ドメイン向けのデフォルトのコンテキスト・データに設定する、請求項４に記載の装置。
【請求項６】
前記コンテキスト・データが前記処理回路によって保存され、前記コンテキスト・データが前記セキュア・ドメインで処理中に使用されたものとして記録されている場合に、保存された前記コンテキスト・データの使用を維持する、請求項５に記載の装置。
【請求項７】
前記コンテキスト保存命令が、
前記コンテキスト・データが使用されたものとして記録されている場合に、前記セキュリティ・ドメイン指示フラグが、前記コンテキスト・データが前記セキュア・ドメインによって使用されたものとして記録されたかを示すよう設定され、
前記コンテキスト・データが使用されたものとして記録されていない場合に、前記セキュリティ・ドメイン指示フラグが、前記セキュア・ドメインによって使用されていないことを示す値に設定されるように、
前記コンテキスト・データが使用されたものとして記録されているかどうかに応じて、セキュリティ・ドメイン指示フラグを保存するよう前記処理回路を制御する、請求項４から６までのいずれか一項に記載の装置。
【請求項８】
前記処理回路が現在、前記コンテキスト・データ・プログラム命令の使用を許可されていない場合に、前記コンテキスト・データが使用されたものとして記録されているかどうかに応じて、障害対応の例外がトリガされる、請求項１から７までのいずれか一項に記載の装置。
【請求項９】
選択的なコンテキスト・データのハードウェア制御が無効化されている場合に、前記コンテキスト・データが、使用されたものとして記録され、且つ、コンテキスト保存命令に応答して保存されたものとして扱われるよう、選択的なコンテキスト・データ保存のハードウェア制御がソフトウェア構成可能なフラグによって無効化される、請求項１から８までのいずれか一項に記載の装置。
【請求項１０】
前記コンテキスト・データがメモリ内の位置に保存される、及び、
前記コンテキスト・データが汎用レジスタ・ファイル内のレジスタに保存される、
のうちの一方である、請求項１から９までのいずれか一項に記載の装置。
【請求項１１】
データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、装置。
【請求項１２】
前記コンテキスト・データ依存プログラム命令が浮動小数点プログラム命令であり、前記コンテキスト・データが浮動小数点構成データであり、前記浮動小数点プログラム命令が前記浮動小数点構成データに依存する浮動小数点処理動作を指定する、請求項１１に記載の装置。
【請求項１３】
前記処理回路が現在、前記コンテキスト・データ・プログラム命令の使用を許可されていない場合に、前記コンテキスト・データが使用されたものとして記録されているかどうかに応じて、障害対応の例外がトリガされる、請求項１１又は１２に記載の装置。
【請求項１４】
前記処理回路が、セキュア・ドメイン及び非セキュア・ドメインを含む複数のドメインで動作し、前記セキュア・ドメインでの動作時に前記処理回路がセキュア・データにアクセスでき、前記非セキュア・ドメインでの動作時に前記処理回路が前記セキュア・データにアクセスできず、また、前記処理回路が前記コンテキスト復元命令によって、前記セキュア・ドメインが前記コンテキスト・データを使用したかどうかを示すセキュリティ・ドメイン指示フラグを復元するよう制御され、前記復元が、前記コンテキスト・データが使用されたものとして記録されているかどうかに依存する、請求項１１から１３までのいずれか一項に記載の装置。
【請求項１５】
前記コンテキスト・データがメモリ内の位置から復元される、及び、
前記コンテキスト・データが汎用レジスタ・ファイル内のレジスタから復元される、
のうちの一方である、請求項１１から１４までのいずれか一項に記載の装置。
【請求項１６】
選択的なコンテキスト・データのハードウェア制御が無効化されている場合に、コンテキスト復元命令に応答して、前記コンテキスト・データが使用されたものとして記録されたものとして扱われるよう、選択的なコンテキスト・データ保存のハードウェア制御がソフトウェア構成可能なフラグによって無効化される、請求項１１から１５までのいずれか一項に記載の装置。
【請求項１７】
データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理手段を制御する、装置。
【請求項１８】
データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段がコンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理手段を制御する、装置。
【請求項１９】
データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理回路を制御する、方法。
【請求項２０】
データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、方法。
【請求項２１】
請求項１９又は２０に記載の方法に従って動作するようコンピュータを制御するための、仮想マシン・コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データ処理システムの分野に関する。より詳細には、本開示は、データ処理システム内のコンテキスト・データの管理に関する。
【背景技術】
【０００２】
命令が実行された時点における現在のコンテキスト・データに依存する挙動を有するコンテキスト・データ依存プログラム命令を実行するデータ処理システムを提供することが知られている。例えば、コンテキスト・データ依存プログラム命令は浮動小数点演算プログラム命令であってよく、コンテキスト・データは、これらの浮動小数点演算プログラム命令が実行される際に、複数の丸めモードのうちいずれを使用するべきかを示す構成データであってよい。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも１つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理回路を制御する、装置を提供する。
【０００４】
本開示の少なくとも１つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理回路と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するためのデコーダ回路とを含み、
前記デコーダ回路が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコーダ回路が、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、装置を提供する。
【０００５】
本開示の少なくとも１つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段が、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理手段を制御する、装置を提供する。
【０００６】
本開示の少なくとも１つの実施例は、データを処理するための装置であって、
プログラム命令の制御下で処理動作を実施するための処理手段と、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理手段を制御するための制御信号を生成するためのデコーダ手段とを含み、
前記デコーダ手段が、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理手段を制御するための前記制御信号を生成し、
前記デコーダ手段が、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理手段を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理手段を制御する、装置を提供する。
【０００７】
本開示の少なくとも１つの実施例は、データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト保存命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、前記コンテキスト・データを保存するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、デフォルトのコンテキスト・データを保存するよう前記処理回路を制御する、方法を提供する。
【０００８】
本開示の少なくとも１つの実施例は、データを処理する方法であって、
プログラム命令の制御下で処理回路を用いて処理動作を実施するステップと、
前記プログラム命令をデコードして、前記処理動作を実施するよう前記処理回路を制御するための制御信号を生成するステップとを含み、
前記デコードするステップが、少なくとも１つのコンテキスト・データ依存プログラム命令及びコンテキスト・データに応答して、前記コンテキスト・データ依存プログラム命令及び前記コンテキスト・データによって指定されたコンテキスト・データ依存処理動作を実施するよう前記処理回路を制御するための前記制御信号を生成し、
前記デコードするステップが、コンテキスト復元命令に応答し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されたものとして記録されている場合に、格納されたコンテキスト・データを使用して前記コンテキスト・データを復元するよう前記処理回路を制御し、
前記コンテキスト・データがコンテキスト・データ依存処理動作を制御するために使用されていないものとして記録されている場合に、前記コンテキスト・データを維持するよう前記処理回路を制御する、方法を提供する。
【０００９】
本開示の別の実施例は、非一時的なコンピュータ可読媒体に格納されることができるコンピュータ・プログラムの形態であってよく、上述した方法に従って動作するよう汎用コンピュータを制御するためのものであり、従って、このような方法をサポートする仮想マシン実行環境を提供してもよい。
【００１０】
本技術のさらなる態様、特徴、及び利点は、後述する実例の説明を添付図面と併せて読解することで明らかになるであろう。
【図面の簡単な説明】
【００１１】
【図１】コンテキスト・データ依存プログラム命令を使用し、且つコンテキスト管理プログラム命令をサポートするデータ処理システムを模式的に示す図である。
【図２】コンテキスト保存命令の実行に関する処理を模式的に示すフロー図である。
【図３】コンテキスト復元命令の実行に関する処理を模式的に示すフロー図である。
【図４】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
【図５】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
【図６】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
【図７】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
【図８】ある状況におけるコンテキスト保存プログラム命令及びコンテキスト復元プログラム命令の使用を模式的に示す図である。
【図９】コンテキスト・データ依存プログラム命令及びコンテキスト・データ管理命令をサポートする仮想マシン実行環境を模式的に示す図である。
【発明を実施するための形態】
【００１２】
図１は、プロセッサ・コア４及びメモリ６を備えるデータ処理システム２を模式的に示す。メモリ６は、実行されるプログラム命令８を格納する。メモリ６は、スタック・メモリ領域１０と、関連するスタック・ポインタＳＰとを含み、実行されるコンテキスト・データ保存命令又はコンテキスト・データ復元命令の違いに応じて、コンテキスト・データがそこに保存されることができ、また、そこから復元されることができるスタック・メモリを提供する。
【００１３】
プロセッサ・コア４は、多数の関数ブロックを含むが、明確化のため、図１の実例はこれらのブロックのうちいくつかのみを含む。プログラム命令は、フェッチ回路１２によってメモリ６からフェッチされ、フェッチ回路１２から、これらのプログラム命令をデコードして制御信号１８を生成する働きをするデコーダ回路１６に供給され、これらの制御信号１８は、デコードされたプログラム命令によって指定された処理動作を実施するようプロセッサ・コア４内のその他の関数ブロックを制御するために使用される。
【００１４】
プロセッサ・コア４は、処理回路２０を含む。本実例の図では、処理回路２０は、浮動小数点プログラム命令を実行するための浮動小数点処理回路２２と、汎用プログラム命令（整数プログラム命令を含んでもよい）を実行するための汎用処理回路２４とを含む。浮動小数点処理回路２２は、浮動小数点処理回路２２によって操作される浮動小数点オペランドを格納する働きをする浮動小数点レジスタ・ファイル２６を含む。汎用処理回路２４は、汎用処理回路２４によって操作されるオペランドを格納する働きをする汎用レジスタ・ファイル２５を含む。
【００１５】
様々な異なる構成パラメータに応答して処理回路２０の構成及び動作を制御する構成制御回路２８もまた、処理回路２０内に含まれる。これらの構成パラメータは、浮動小数点コンテキスト・データ・レジスタ３０内に格納された浮動小数点コンテキスト・データ（ＦＰＳＣＲ及びＳＦＰＡ）を含む。構成データは、プロセッサ・コア４が現在セキュア・ドメイン内で実行しているのか、非セキュア・ドメイン内で実行しているのかを示す、セキュリティ・レジスタ３２内に格納されたＮＳ／Ｓフラグをさらに含んでもよい（例えば、ＡＲＭ  Ｌｉｍｉｔｅｄ、Ｃａｍｂｒｉｄｇｅ、Ｅｎｇｌａｎｄによって設計されたＴｒｕｓｔｚｏｎｅアーキテクチャを用いたシステムによって提供されるものなど）。セキュア・ドメイン内で動作している時、処理回路２０はセキュア・データにアクセスできる。非セキュア・ドメインで動作している時、処理回路はこのようなセキュア・データにはアクセスできない。このようなセキュア・データの例に、メモリ６のメモリ・アドレス領域内のデータがあり、このようなデータは、セキュア・ドメインで動作している時にプロセッサ・コア４にアクセスでき、非セキュア・ドメインで動作している時にプロセッサ・コア４にアクセスできない、セキュア・データとして指定され、管理される。
【００１６】
アクセス制御レジスタ３４は、アクセス制御値（ＣＰＡＣＲ／ＮＳＡＣＲ）を格納し、アクセス制御値は、これらの値によって示される現在の構成における処理回路２０が特定の処理リソースを使用することを許可されるか否かを示す。例えば、これらのアクセス制御フラグの値に応じて、処理回路２０は所与の時点において、浮動小数点回路２２の使用を許可されることもあれば、許可されないこともある。その他のコンテキスト構成フラグ値が存在し、それが使用され得ることも可能であり、例えば、異なる処理スレッド間だけでなく、異なるコンテキスト間、ドメイン間及びモード間を切り替えるプログラム命令の実行中に発生する構成及びコンテキスト・データの変更を、データ処理システム２のハードウェア機構が制御及び監視するか否かをハードウェア・レベルで示すことができるＡＰＳＥＮ値がある。例えば、ＡＰＳＥＮフラグが所与の値を有する時、コンテキスト・データを管理するためのハードウェア機構が無効化されることができ、このような管理の責務が実行中のソフトウェアに課せられる。このような状況でもなお、システムは、例えば、セキュア・ドメイン動作から非セキュア・ドメイン動作へのデータの漏洩を阻止する、又は、スレッドが最初に浮動小数点を使用する際にデフォルトのコンテキスト・データを用いて初期化された新しいコンテキストを作成する働きができるように、コンテキスト・データ管理のバックアップ・レベルを提供することができる。
【００１７】
前述したように、本技術は、コンテキスト・データ依存プログラム命令によって実施されるべき処理動作を少なくとも部分的に指定するコンテキスト・データの管理に関する。このようなコンテキスト・データ依存プログラム命令の一例が、浮動小数点演算プログラム命令であり、この場合のコンテキスト・データの例は、使用されるべき特定の丸めモードを指定するデータでよい。コンテキスト・データの他の形態もまた、可能である。
【００１８】
構成制御回路２８は、コンテキスト・データが使用されたか否か、及び、このようなコンテキスト・データがセキュア・ドメインでの動作時に使用されたか否かを記録する働きをするフラグを使用し、且つこれを管理する。より詳細には、構成制御回路２８は、浮動小数点コンテキスト・データが浮動小数点命令の制御に使用されるためにアクセスされたかどうかを示す値を有するフラグ値ＦＰＣＡを保持し、且つこれを使用する。構成制御回路２８はさらに、ＦＰコンテキスト・データ・レジスタ３０の一部であり、浮動小数点プログラム命令がセキュア・ドメイン動作中に使用されたか否かを示す、フラグＳＦＰＡを設定し、且つこれを使用する。例えば、ＳＦＰＡは、（例えば、プログラム制御下で）スイッチがセキュア・ドメイン動作に切り替わると「０」値に設定されることができ、セキュア・ドメイン内で最初の浮動小数点プログラム命令が実行されると、ハードウェアはこのＳＦＰＡフラグを「１」に変更することができる。このようにして、浮動小数点操作が実施されているセキュア・ドメイン動作から、浮動小数点操作が実施されない非セキュア・ドメイン動作に切り替わる場合に、非セキュア・ドメイン動作中に浮動小数点レジスタ・ファイル２６に触れないなら、浮動小数点レジスタ・ファイル２６のコンテキストの保存及びその後の復元のオーバーヘッドを被る必要がなくなるため、浮動小数点レジスタ値のレイジー・セービングをサポートできる可能性がある。
【００１９】
本開示は、コンテキスト保存命令ＣＸＴＳａｖｅ及びコンテキスト復元命令ＣＸＴＲｅｓｔｏｒｅの提供を含む。図２は、デコーダ回路１６によってコンテキスト保存命令をデコードすることに応答して、処理回路２０によって実施される処理動作を模式的に示すフロー図である。処理は、コンテキスト保存命令がデコードされるまでステップ３６で待機する。ステップ３８は、コンテキスト・データのハードウェア選択的保存が無効化されているか否かを判定する。「０」値を有するＡＰＳＥＮフラグによって示されるようにハードウェア選択保存が無効化されていれば、ステップ４０はとばされ、処理はそのままステップ４２に進む。ハードウェア選択的保存が無効化されていなければ、処理はステップ４０に進み、現在の浮動小数点コンテキスト・データが使用されたものとして記録されている（すなわち、ＦＰＣＡ＝１）か否かについて判定を行う。ステップ４０での判定が、コンテキスト・データが使用されたものとして記録されていないというものであれば、処理はステップ４４に進み、（命令の種別に応じて）デフォルトの非セキュア・コンテキスト・データが、現在のスタック・ポインタ値ＳＰによって指示されたメモリ６内のスタック・メモリ領域１０か、又は、汎用レジスタ・ファイル２５内のレジスタのどちらか一方に（必要に応じて、より簡単に操作できる場所から）保存される。コンテキスト・データがスタック・メモリ領域１０に格納されていれば、ステップ４６は続いて、スタック・ポインタ値を更新する働きをする。
【００２０】
ステップ４０における判定で、コンテキスト・データが使用されたものとして記録されていれば、ステップ４２が、アクセス制御レジスタ３４内に格納されたアクセス制御値（ＣＰＡＣＲ／ＮＳＡＣＲ）をチェックし、浮動小数点プログラム命令（コンテキスト・データ依存命令）の使用が現在許可されているかを判定する働きをする。このような使用が許可されていなければ、且つ、依然としてそれらが使用されたものとして記録されていれば、処理はステップ４８に進み、障害がトリガされる。ステップ４２におけるチェックが、浮動小数点処理回路２２のアクセス／使用が許可されていることを示せば、処理はステップ５０に進み、現在のコンテキスト・データ（ＦＰＳＣＲ及びＳＦＰＡ）が、前述したように、（命令種別に応じて）スタック・メモリ領域１０又はレジスタのどちらか一方に保存される。ステップ５２は、コンテキスト・データがセキュア処理中に使用されたものとして記録されている（すなわち、ＳＦＰＡ＝１）かどうかを判定する。コンテキスト・データがセキュア処理中に使用されたものとして記録されていれば、制御はステップ４６に進み、ステップ５０でコンテキスト・データがスタック・メモリ領域１０に保存されていれば、スタック値が更新される。
【００２１】
ステップ５２におけるチェックが、現在のコンテキスト・データがセキュア処理中に使用されたものとして記録されていないことを示せば（ＳＦＰＡ＝０）、フローはステップ５４に進み、コンテキスト・データは非セキュアのデフォルト・コンテキスト・データに設定され、それによって、前回の非セキュア・ドメイン処理中に使用された可能性のある如何なる現在のコンテキスト・データも上書きする。
【００２２】
図３は、デコーダ回路１６によってコンテキスト復元命令ＣＸＴＲｅｓｔｏｒｅをデコードすることに応答して実施される、処理回路２０による処理を模式的に示すフロー図である。ステップ５６において、処理はコンテキスト復元命令がデコードされるまで待機する。ステップ５８は、ハードウェア選択的復元動作が０値を有するＡＰＳＥＮフラグによって示されるように無効化されているかどうかを判定する。ハードウェア選択的復元が無効化されていれば、ステップ６０はとばされ、処理はステップ６２に進む。ハードウェア選択的復元が無効化されていなければ、処理はステップ６０に進み、現在のコンテキスト・データが使用されたものとして記録されている（ＦＰＣＡ＝「１」）か否かについて判定を行う。現在のコンテキスト・データが使用されていないものとして記録されていれば、復元動作はスキップされる。しかしながら、処理がステップ６４に進む際に、ステップ５６でデコードされたコンテキスト復元命令がコンテキスト・データ値又はスタック・メモリ領域１０からの値の復元を示すものであれば、ステップ６０での判定が復元を実施させないように作用しても、ステップ６４は、実際に復元が実施された時と同じようにスタック・ポインタ値を更新する働きをする。ステップ６０での判定が、コンテキスト・データが使用されたというものであれば、ステップ６２がアクセス制御値（ＣＰＳＣＲ／ＮＳＡＣＲ）をチェックし、これらの値がコンテキスト・データ依存命令（浮動小数点命令）の使用が現在許可されていることを示すかを判定する働きをする。このような使用が許可されておらず、且つ、依然としてコンテキスト・データが使用されたものとして示されていれば、ステップ６４で障害がトリガされる。ステップ６２における判定で、発生したコンテキスト・データ依存命令の使用が許可されることをアクセス制御値が示していれば、処理はステップ６６に進み、保存されたコンテキスト・データ（ＦＰＳＣＲ及びＳＦＰＡ）は、コンテキスト復元命令の詳細な形態に応じて、スタック・メモリ領域１０又はレジスタのどちらか一方から復元される。続いて、処理はステップ６４に進み、コンテキスト復元命令がスタック・メモリ領域１０から復元する形態であれば、スタック・ポインタが更新される。
【００２３】
ＣＸＴＳａｖｅ命令及びＣＸＴＲｅｓｔｏｒｅ命令には、２つの種別がある。ＦＰＳＣＲ及びＳＦＰＡがスタックに直接保存及び復元されることを可能とするメモリ・アクセス命令と、ＦＰＳＣＲ及びＳＦＰＡを汎用レジスタ２５の内外に移動することができるＭＯＶスタイル命令である（Ｒ［］）。ＦＰＣＣＲ．ＡＳＰＥＮを０に設定することによって、ソフトウェアが浮動小数点（ＦＰ）状態のハードウェア管理を無効化することができる点に注意が必要である。このような場合、プロセッサはアクティブなＦＰコンテキストがあるかどうかを判定することができない。安全なソリューションを保証するため、これらの命令は、ＡＳＰＥＮが０であればアクティブなＦＰコンテキストがあると見なす。
【００２４】
これらの命令が異なる条件下でどのように動作するかを説明する、いくつかの実例を図４から図８に示す。単純化のため、これらの実例は１つのセキュア関数のみを示しており、その結果、コンパイラが、ＦＰ命令がセキュア状態で実行されたかどうかを把握することが可能である。しかし、実際のコードでは、入れ子になったセキュア関数の呼び出しが多段を成している可能性が考えられ、それが異なる供給元のライブラリに渡っている可能性もあり、ＦＰがセキュア状態で使用されたかどうかをゲートウェイ・セキュア関数のコンパイル時に判定することは困難となる。
【００２５】
図４は、セキュア関数が呼び出される前にＦＰがアクティブでない場合（ＦＰＣＡ＝０）を示しており、セキュア関数中にＦＰ命令が実行されないため、ＦＰは非アクティブのままとなる。その結果、関数の開始時におけるＣＸＴＳａｖｅ命令は、ＳＦＰＡの値と併せてＦＰＳＣＲのＮＳデフォルト値（すなわちＦＰＤＳＣＲ＿ＮＳ）をメモリに格納する。関数が戻る前にＣＸＴＲｅｓｔｏｒｅが実行されるが、ＦＰがアクティブでないため、ＮＯＰとして作用する。全体的な結果としてＦＰ状態に対する変更は実施されないが、現在のスレッドにアクティブなＦＰコンテキストがなく、ＦＰコンテキスト・データ・レジスタ３０内のデータが別のスレッド／例外レベルに属する可能性があるため、これが望ましい結果である。
【００２６】
図５に示す実例は、セキュア関数の呼び出し前にＦＰがアクティブでない実例１に類似しており、そのためＣＸＴＳａｖｅがＮＳデフォルト値をメモリに格納する。しかし、本例では、セキュア関数がＦＰ命令を実行し、それによってＦＰＣＡは１に設定される。関数の最後にＣＸＴＲｅｓｔｏｒｅが実行される際にアクティブなＦＰ状態があるため、ＦＰＳＣＲはメモリに格納された値に設定される。ＣＸＴＳａｖｅがＮＳデフォルト値を格納したため、ＣＸＴＲｅｓｔｏｒｅは、ＮＳ状態に戻す準備としてＦＰ状態をＮＳデフォルト値に初期化する効果を有する。ＮＳ状態で実行された最初のＦＰ命令（ポイント１を参照）はそのため、正しいＦＰコンテキストを得る。
【００２７】
図６に示す実例では、セキュア関数が呼び出される前にスレッドがアクティブなＦＰコンテキスト（ＦＰＣＡ＝１）を有する。その結果、セキュア関数開始時のＣＸＴＳａｖｅはＦＰＳＣＲ及びＳＦＰＡの現在の値をメモリに格納し、ＦＰＳＣＲをＮＳデフォルト値（すなわちＦＰＤＳＣＲ＿ＮＳ）に設定する。ポイント１において、セキュア状態において最初のＦＰ命令が実行され、これによってＦＰＳＣＲはセキュア・デフォルト値（ＦＰＤＳＣＲ＿Ｓ）に設定される（注意：これはＦＰ命令が実行された際にＳＦＰＡフラグが０であることによるもので、既存アーキテクチャの機能である）。ＮＳ状態における次のＦＰ命令（ポイント２を参照）がセキュア関数呼び出し前のＮＳＦＰ命令と同じＦＰＳＣＲ値を参照するよう、関数の最後にＣＸＴＲｅｓｔｏｒｅがＦＰＳＣＲの直前のＮＳ値を復元する。
【００２８】
図７に示す実例は、実例３と類似するが、セキュア関数が非セキュア関数への２つの入れ子呼び出しを有し、１つはセキュア関数内の最初のＦＰ使用の前に、１つはその後にある。本アーキテクチャにおけるいくつかの既存の命令／機能は、ポイント２において、セキュアＦＰ状態が効率的に保存され、非セキュア関数から保護され得ることを意味する。これらの機能はまた、非セキュア関数もＦＰＳＣＲにおけるデフォルトＮＳ値（割り込みハンドラからコールバック関数が実行される場合と同様に）を参照することを意味する。セキュア関数開始時におけるＣＸＴＳａｖｅは、アクティブなＦＰ状態（ＦＰＣＡ＝１）がＮＳ状態（ＳＦＰＡ＝０）に属することを検出し、それによって、ＦＰＳＣＲをデフォルトＮＳ値に設定する。その結果、ポイント１におけるＮＳ関数はＦＰＳＣＲの直前のＮＳ値を参照しないが、代わりにポイント２におけるＮＳ関数と同じＦＰＳＣＲ値、すなわちＮＳデフォルト値（ＦＰＤＳＣＲ＿ＮＳ）を参照する。このことは重要であり、ＮＳコールバック関数が参照できる状態は、呼び出し元のセキュア関数が浮動小数点命令を実行したか否かに依存するべきでない。
【００２９】
図８に示す実例では、非セキュアなコードがゲートウェイ・セキュア関数を呼び出し、次に別のセキュア・ゲートウェイ関数を呼び出す。どちらのセキュア関数も非セキュア状態から呼び出されることができるゲートウェイ関数であるため、これらは関数のプロローグ及びエピローグにおいてＣＸＴＳａｖｅ及びＣＸＴＲｅｓｔｏｒｅを使用している。
【００３０】
・ポイント１において、現在のコンテキスト・データ（ＦＰＳＣＲ及びＳＦＰＡ）はメモリに押し出され、ＦＰＳＣＲはＮＳデフォルト値（ＦＰＤＳＣＲ＿ＮＳ）に設定される。
・ポイント１とポイント２との間でＦＰ命令が実行されないため、ポイント２において現在のコンテキスト・データ（ＦＰＳＣＲ及びＳＦＰＡ）は再びメモリに押し出され、ＦＰＳＣＲはＮＳデフォルト値（ＦＰＤＳＣＲ＿ＮＳ）に設定される。ポイント１においてＦＰＳＣＲがＮＳデフォルト値（ＦＰＤＳＣＲ＿ＮＳ）に設定されたため、ポイント２においてメモリに押し出された値はＮＳデフォルト値であり、ポイント１以前のＦＰＳＣＲの値ではない。
・ポイント３において、セキュアＦＰ命令が実行され、これによって、実例２のようにセキュアＦＰコンテキストが作成される。すなわち、ＳＦＰＡは１に設定され、ＦＰＳＣＲはＳデフォルト値（ＦＰＤＳＣＲ＿Ｓ）に初期化される。
・ポイント４において、ＣＸＴＲｅｓｔｏｒｅがコンテキスト・データ（ＦＰＳＣＲ及びＳＦＰＡ）をポイント２以前の値に復元する、すなわち、ＦＰＳＣＲはＮＳデフォルト値（元はＦＰＤＳＣＲ＿ＮＳから）に、また、ＳＦＰＡは０に設定される。
・内部セキュア関数に戻った後、ポイント５においてセキュアＦＰ命令が実行される。一見すると、このＦＰ命令は、直前のポイントで復元されたＦＰＳＣＲのＮＳデフォルト値の影響を受け得るように見える。しかし、ＣＸＴＳａｖｅ及びＣＸＴＲｅｓｔｏｒｅがＳＦＰＡの値も同様に保存及び復元するため、ポイント２におけるＳＦＰＡの元の値（すなわち０）が復元されている。従って、ポイント５におけるＦＰ命令によって、再びＦＰＳＣＲは安全なセキュア・デフォルト値（ＦＰＤＳＣＲ＿Ｓ）から再初期化される。
・ポイント６において、ＮＳ関数によって実行される次の任意のＦＰ命令がポイント１以前のＦＰＳＣＲの元の値を参照し直すよう、ポイント１で保存された元のコンテキスト・データが復元される。
【００３１】
図９は、使用され得る仮想マシンの実装を示す。前述した実施例が対象技術をサポートする特定の処理ハードウェアを動作させるための装置及び方法に関して本発明を実施する一方、ハードウェア・デバイスのいわゆる仮想マシンの実装を提供することも可能である。これらの仮想マシンの実装は、仮想マシン・プログラム５１０をサポートするホスト・オペレーティング・システム５２０を実行するホスト・プロセッサ５３０上で稼働する。典型的には、リーズナブルな速度で実行する仮想マシンの実装を提供するために大規模で強力なプロセッサが必要とされるが、このようなアプローチは、互換性又は再利用の理由で別のプロセッサにネイティブなコードを実行する要求がある場合など、特定の状況で正当化され得る。仮想マシン・プログラム５１０は、コンピュータ可読記憶媒体（非一時的な媒体であってよい）に格納されることができ、仮想的なハードウェア・インタフェース（命令実行環境）をゲスト・プログラム５００に提供するが、このインタフェースは、仮想マシン・プログラム５１０によってモデル化されたデバイスである実ハードウェアによって提供されるハードウェア・インタフェースと同じである。従って、上述したメモリ・アクセスの制御を含むプログラム命令は、仮想マシン・プログラム５１０を用いてゲスト・プログラム５００内から実行され、仮想マシン・ハードウェアとの相互作用をモデル化することができる。ゲスト・プログラムが、ハードウェア上で直に稼働するよう設計されたベア・メタル・アプリケーション（実でも仮想でもよい）、又は、それ自体がゲスト・アプリケーションをホストすることができるゲスト・オペレーティング・システムであってよいことは理解されるであろう。
【００３２】
本明細書に、本発明を説明する実施例を添付図面を用いて詳述したが、本発明はこれらの正確な実施例に制限されるものではなく、添付された特許請求の範囲によって定められた本発明の範囲及び意図から逸脱することなく、当業者による様々な変更や改良が成され得ることを理解されたい。
【図１】
2020525957.tif 000003
【図２】
2020525957.tif 000004
【図３】
2020525957.tif 000005
【図４】
2020525957.tif 000006
【図５】
2020525957.tif 000007
【図６】
2020525957.tif 000008
【図７】
2020525957.tif 000009
【図８】
2020525957.tif 000010
【図９】
2020525957.tif 000011
【国際調査報告】
2020525957.tif 000012
2020525957.tif 000013