(57)【要約】フラグ回路（１７４）を使用するデータ処理装置が提供される。フラグ回路（１７４）は、関数呼び出しに関連して、処理回路（１５４）がセキュアモードに入る際に、アクセス・トラッキング・フラグ（ＳＦＰＡ）を第１の値に設定すると共に、関数呼び出しに関連してセキュアモードで動作している処理回路によって、浮動小数点レジスタデータのような所定の状態データへの少なくとも１つのタイプの最初のアクセスを検出するにあたり、アクセス・トラッキング・フラグを第２の値に切り替えるためのものである。このアクセス・トラッキング・フラグは、遅延保護プログラム命令（ＶＬＳＴＭ）及び遅延ロードプログラム命令（ＶＬＬＤＭ）に関連して使用されてもよいが、これは、その状態データへの、非セキュアモードにおけるアクセスを防止するために、状態データのプッシュ動作及び状態データの復元動作が実施されるか否かを制御するためである。
2018524731.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための装置であって、
第１セキュリティモード及び第２セキュリティモードで動作する処理回路と、
前記処理回路が、関数呼び出しに関連して、前記第１セキュリティモードに入る際に、第１の値を有するアクセス・トラッキング・フラグを提供するフラグ回路であって、前記関数呼び出しに関連して、前記第１セキュリティモードで動作している際に、前記処理回路によって、所定の状態データへの少なくとも１つのタイプの最初のアクセスを検出するにあたり、前記処理回路は、前記アクセス・トラッキング・フラグを第２の値に切り替えるように構成される、フラグ回路と、
を備える、装置。
【請求項２】
前記フラグ回路は、
前記第１セキュリティモードに入るにあたり、前記アクセス・トラッキング・フラグを前記第１の値に設定すると共に、前記処理回路が前記第１セキュリティモードと前記第２セキュリティモードのどちらで動作しているかとは無関係に、前記最初のアクセスを検出するにあたり、前記アクセス・トラッキング・フラグを前記第１の値から前記第２の値へ変更すること、
前記第１セキュリティモードに入るにあたり、前記アクセス・トラッキング・フラグを前記第１の値に設定すると共に、前記最初のアクセス及び、前記処理回路が前記第１セキュリティモードで動作していることを検出するにあたり、前記アクセス・トラッキング・フラグを前記第２の値に変更すること、
前記第２セキュリティモードに入るにあたり、前記アクセス・トラッキング・フラグを前記第１の値に設定すると共に、前記最初のアクセス及び、前記処理回路が前記第１セキュリティモードで動作していることを検出するにあたり、前記アクセス・トラッキング・フラグを前記第２の値に変更すること、
の１つを行うように構成される、請求項１に記載の装置。
【請求項３】
前記フラグ回路は、前記処理回路を前記第１セキュリティモードでの動作から前記第２セキュリティモードでの動作へ切り替える、更なる関数呼び出しに応答して、前記アクセス・トラッキング・フラグの現在の値を、アクセス・トラッキング・フラグ・データストアに保存する、請求項１又は２に記載の装置。
【請求項４】
前記フラグ回路は、前記処理回路を前記第２セキュリティモードでの動作から前記第１セキュリティモードでの動作へ切り替える、前記更なる関数呼び出しからの関数戻りに応答して、前記アクセス・トラッキング・フラグ・データストアから、前記現在の値を前記アクセス・トラッキング・フラグに復元するため、請求項３に記載の装置。
【請求項５】
前記アクセス・トラッキング・フラグ・データストアはスタックメモリである、請求項３又は４に記載の装置。
【請求項６】
少なくとも、
前記処理回路が、前記第２セキュリティモードで動作している場合、
関数呼び出しに関連して、前記第２セキュリティモードに切り替わる前に、前記第１セキュリティモードで動作している際に、前記アクセス・トラッキング・フラグが前記第２の値を有した場合、及び、
前記処理回路が前記所定の状態データへのアクセスを試みる場合に、
前記所定の状態データに関する保護応答を誘発するためのセキュア状態保護回路を備え、
前記保護応答が前記所定の状態データの第１のサブセットをクリアすることを含む、
請求項１から５のいずれか一項に記載の装置。
【請求項７】
保護応答は、前記所定の状態データの第２のサブセットを状態データストアに保存することを含む、請求項６に記載の装置。
【請求項８】
前記アクセス・トラッキング・フラグが前記第２の値を有する場合、及び、
前記遅延保護プログラム命令が実行される場合、
の１つにおいて、前記処理回路が、前記所定の状態データの前記第１のサブセットにアクセスを試みる場合、前記処理回路は、遅延保護プログラム命令の実行に応答して、前記保護応答を実施するための前記状態保護回路を準備する、請求項６又は７に記載の装置。
【請求項９】
前記保護応答は、保護フラグを、前記保護応答を誘発することを示す値に設定することを含む、請求項６から８のいずれか一項に記載の装置。
【請求項１０】
前記保護フラグは、
専用の保護フラグ、及び、
前記アクセス・トラッキング・フラグ、
の１つである、請求項９に記載の装置。
【請求項１１】
前記遅延保護プログラム命令の前記実行は、前記保護応答を誘発する、請求項８から１０のいずれか一項に記載の装置。
【請求項１２】
前記処理回路が、前記第１セキュリティモードで動作している場合、及び、
前記保護フラグが、前記保護応答を誘発することを示す前記値を有する場合に、
前記処理回路は、遅延ロードプログラム命令の実行に応答して、前記状態データストアから、前記所定の状態データの前記第２のサブセットをロードする、請求項７及び、請求項９又は１０に記載の装置。
【請求項１３】
前記所定の状態データの前記第２のサブセットの前記ロードが、前記第２の値を有する前記アクセス・トラッキング・フラグに更に依存する、請求項１２に記載の装置。
【請求項１４】
前記処理回路が、前記第１セキュリティモードで動作している場合、及び、
前記保護フラグが、前記保護応答を誘発することを示す値以外の値を有する場合に、
前記処理回路は、前記遅延ロードプログラム命令の実行に応答して、前記セキュア状態保護回路を前記準備することを解除する、請求項８及び、請求項１２又は１３に記載の装置。
【請求項１５】
前記処理回路が、前記第１セキュリティモードで動作している場合、及び、
前記保護フラグが、前記保護応答を誘発することを示す値以外の値を有する場合に、
前記処理回路は、遅延非保護プログラム命令の実行に応答して、前記保護応答を無効化する、請求項９又は１０に記載の装置。
【請求項１６】
浮動小数点値を格納する浮動小数点レジスタファイルを備え、
前記所定の状態データは、前記浮動小数点値を含む、請求項１から１５のいずれか一項に記載の装置。
【請求項１７】
前記処理回路による前記浮動小数点値への前記アクセスは、浮動小数点命令の実行を含む、請求項１６に記載の装置。
【請求項１８】
浮動小数点構成データが、前記処理回路により浮動小数点処理動作を実施することに関連付けられた１つ以上のパラメータを特定し、且つ、前記アクセス・トラッキング・フラグが前記第１の値を有する場合に、前記セキュア状態において前記浮動小数点命令を実行するにあたり、前記浮動小数点構成データは、デフォルトの浮動小数点構成データに設定される、請求項１６又は１７に記載の装置。
【請求項１９】
前記状態データストアはスタックメモリを含む、請求項７に、及び請求項１から６、８から１８のいずれか一項に記載の装置。
【請求項２０】
前記状態保護回路は、前記保存することを実施するために準備され、この準備は、前記所定の状態データの前記第２のサブセットを格納するために、前記スタックメモリ内の格納領域を割り当て、及び前記格納領域のためのポインタアドレスを前記状態保護回路に提供することによって行われる、請求項７又は請求項１９に記載の装置。
【請求項２１】
前記遅延保護プログラム命令は、前記装置のどの状態データが、前記所定の状態データの前記第１のサブセットを含むかを特定するパラメータを有する、請求項２０に記載の装置。
【請求項２２】
前記遅延ロードプログラム命令が、前記所定の状態データを前記スタックメモリからロードする場合、
前記遅延ロードプログラム命令が、前記状態保護回路を前記準備することを解除する場合、及び、
前記遅延ロードプログラム命令が実行される場合、
の１つおいて、処理回路は、前記遅延ロードプログラム命令の実行に応答して、前記スタックメモリ内の前記格納領域の割り当てを解除する、請求項１２、１４、及び１９のいずれか一項に記載の装置。
【請求項２３】
前記遅延ロードプログラム命令は、前記装置のどの状態データが、前記所定の状態データの前記第２のサブセットを含むかを特定するパラメータを有する、請求項１２、１３、及び２２のいずれか一項に記載の装置。
【請求項２４】
前記第１セキュリティモードは、前記第２セキュリティモードよりもセキュアである、請求項１から２３のいずれか一項に記載の装置。
【請求項２５】
データを処理する方法であって、
第１セキュリティモード及び第２セキュリティモードの１つにおいて処理を実施することと、
関数呼び出しに関連して、処理回路が前記第１セキュリティモードに入る際に、第１の値を有するアクセス・トラッキング・フラグを提供することと、
前記関数呼び出しに関連して前記第１セキュリティモードで動作している際に、前記処理回路によって、所定の状態データへの少なくとも１つのタイプの最初のアクセスを検出するにあたり、前記アクセス・トラッキング・フラグを第２の値に切り替えることと、
を備える、方法。
【請求項２６】
請求項１に記載の装置の動作を制御するための、有形のコンピュータプログラム格納媒体上に格納されたコンピュータプログラムであって、
前記コンピュータプログラムは、前記第１セキュリティモードで動作している時に実行可能である遅延保護プログラム命令を含み、前記第２セキュリティモードで動作している時に、前記処理回路が前記所定の状態データの第１のサブセットにアクセスすることを試みる場合、前記所定の状態データに関する保護応答を実施するための状態保護回路を準備する、コンピュータプログラム。
【請求項２７】
請求項１２に記載の装置の動作を制御するための、有形のコンピュータプログラム格納媒体上に格納されたコンピュータプログラムであって、
前記処理回路が、前記第１セキュリティモードで動作している場合、及び、
前記保護フラグが、前記保護応答を誘発することを示す前記値を有する場合に、
前記コンピュータプログラムは、実行可能である遅延ロードプログラム命令を含み、前記状態データストアから前記所定の状態データの前記第２のサブセットをロードするために前記処理回路を制御する、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は、データ処理システムの分野に関する。より具体的には、この開示は、第１セキュリティモード及び第２セキュリティモードにおいて動作可能であるデータ処理システムに関する。
【背景技術】
【０００２】
ＴｒｕｓｔＺｏｎｅ（登録商標）アーキテクチャの特徴を支援するＡＲＭ（登録商標）リミテッドによって設計されたプロセッサのような、セキュアモード及び非セキュアモードを有するデータ処理システムを提供することが知られている。そのようなシステムの中で重要なのは、セキュアモードで実施される処理に依存する状態データは、特に望まない限り、非セキュアモードではアクセス可能であるべきでない、ということである。
【発明の概要】
【課題を解決するための手段】
【０００３】
本開示の少なくとも幾つかの実施形態は、データを処理するための装置を提供し、該装置は、
第１セキュリティモード及び第２セキュリティモードで動作するための処理回路と、
処理回路が、関数呼び出しに関連して、第１セキュリティモードに入る際に、第１の値を有するアクセス・トラッキング・フラグを提供するためのフラグ回路であって、前記関数呼び出しに関連して前記第１セキュリティモードで動作している際に、所定の状態データへの少なくとも１つのタイプの最初のアクセスが、処理回路によって検出されるにあたり、処理回路は、前記アクセス・トラッキング・フラグを第２の値に切り替えるように構成される、フラグ回路と、
を備える。
【０００４】
本開示の少なくとも幾つかの更なる実施形態は、データを処理する方法を提供し、該方法は、
第１セキュリティモード及び第２セキュリティモードの１つにおいて処理を実施することと、
処理回路が、関数呼び出しに関連して、前記第１セキュリティモードに入る際に、第１の値を有するアクセス・トラッキング・フラグを提供することと、
前記関数呼び出しに関連して前記第１セキュリティモードで動作している際に、所定の状態データへの少なくとも１つのタイプの最初のアクセスが、処理構成回路によって検出されるにあたり、アクセス・トラッキング・フラグを第２の値に切り替えることと、
を備える。
【０００５】
本開示の少なくとも幾つかの更なる実施形態は、有形のコンピュータプログラム格納媒体上に格納されたコンピュータプログラムを提供し、該コンピュータプログラム格納媒体の中に、コンピュータプログラムは、遅延（lazy）保護プログラム命令及び／又は遅延(lazy)ロードプログラム命令の少なくとも１つを含む。
【０００６】
添付図面を参照しながら、実施例が、単に例として、これから説明されるであろう。
【図面の簡単な説明】
【０００７】
【図１】非セキュア処理とセキュア処理との間の一連の関数呼び出し、及びセキュアモード処理に依存する浮動小数点状態データを保護するための関連アクションを模式的に図示する。
【図２】セキュアモードから非セキュアモードへの関数呼び出しに際して、セキュア浮動小数点アクセスフラグを保存するフラグ回路を模式的に図示する流れ図である。
【図３】非セキュアモードからセキュアモードへの関数のリターンに際して、セキュア浮動小数点アクセスを復元するフラグ回路を模式的に図示する流れ図である。
【図４Ａ】セキュア浮動小数点アクセスフラグがリセットされてもよい、代替的方法の例を模式的に図示する流れ図である。
【図４Ｂ】セキュア浮動小数点アクセスフラグがリセットされてもよい、代替的方法の例を模式的に図示する流れ図である。
【図５】フラグ回路及び状態保護回路による、浮動小数点アクセスに対するハードウェア応答を模式的に図示する流れ図である。
【図６】状態保護回路の準備を誘発（trigger）する遅延保護プログラム命令を模式的に図示する流れ図である。
【図７】浮動小数点状態データ復元動作、及び保護フラグの解除を誘発する遅延ロードプログラム命令を模式的に図示する流れ図である。
【図８】セキュアモード処理に依存する浮動小数点状態データを保護することの一部分として、アクセス・トラッキング・フラグ及び保護フラグの提供を支援するための、フラグ回路及び状態保護を組み込む処理装置を模式的に図示する図である。
【図９】代替的実施例を模式的に図示するものであり、この代替的実施例によって、セキュア浮動小数点アクセスフラグは、異なる誘因（trigger）に応じて、リセットされると共に設定されてもよい。
【発明を実施するための形態】
【０００８】
図１は、関数呼び出し（ｃａｌｌ）及び関数戻り（ｒｅｔｕｒｎ）に応じて、非セキュアモードとセキュアモードとの間の処理切り替えを模式的に図示し、それと共に、アクセス・トラッキング・フラグ及び保護フラグの関連制御、並びにスタックメモリへの、及びスタックメモリからの浮動小数点レジスタ状態データの保存動作及び復元動作の関連制御を模式的に図示する。図示されるように、処理は、非セキュア関数ｆｎ０で始まるが、この非セキュア関数ｆｎ０は、セキュア関数ｆｎ１に対して関数呼び出しを行う。この関数呼び出しが行われる時、モードは、非セキュアモードから切り替えられると共に、セキュアモードに入る。これは、アクセス・トラッキング・フラグ（セキュア浮動小数点アクセスフラグＳＦＰＡ）を第１の値（例えば、“０”）に設定することを誘発する。その後、この関数ｆｎ１が浮動小数点レジスタにアクセスするまで、関数ｆｎ１を使用するセキュアモードにおける処理が進行する。これは、第１の値から第２の値（例えば、“１”）にアクセス・トラッキング・フラグＳＦＰＡを変化させるフラグ回路（フラグコントローラ）によって検出される。アクセス・トラッキング・フラグが第２の値を既に有する場合、浮動小数点レジスタに対する次のアクセスは、その第２の値を有するアクセス・トラッキング・フラグをそのままにする。
【０００９】
セキュアモード関数ｆｎ１が非セキュア関数に対して関数呼び出しを行いたい場合、セキュアモード関数ｆｎ１は、セキュアモードから出るための準備の一部分として、遅延(lazy)保護プログラム命令ＶＬＳＴＭを実行することを担当する。プロセッサの処理回路による遅延保護命令ＶＬＳＴＭの実行は、多くのアクションを有する。もしアクセス・トラッキング・フラグＳＦＰＡが第２の値を有する場合（即ち、第２の値は、浮動小数点レジスタアクセスが、セキュア関数ｆｎ１の処理の間に生じたことを示す、”１”という値に設定される）、その時は、保護応答が準備され、且つ保護フラグＬＳＰＡＣＴは、この保護応答が準備されたことを示す値に設定される。保護応答準備は、もし必要ならば、浮動小数点レジスタ状態データを格納するのに使用されるために、非セキュアアクセスから保護されたスタックメモリの中に、格納スペースを割り当てることを含む。浮動小数点レジスタ状態データは、この時、スタックへ保存されず、むしろ該データが占有することになるスペースがスタックの中に確保され、且つスタック内でその割り当てられたスペースへのポインタが保存される。
【００１０】
もし、遅延保護プログラム命令が実行される際に、アクセス・トラッキング・フラグＳＦＰＡが第１の値を有する（即ち、第１の値は、セキュア関数ｆｎ１が任意の浮動小数点アクセスを行わなかったことを示す、“０”という値に設定される）場合、その時は、保護を必要とするセキュア関数ｆｎ１に関連付けられたセキュア浮動小数点状態データは存在せず、且つ、従って、保護応答は準備されず、且つ保護フラグＬＳＰＡＣＴは設定されない（スペースがセキュアスタックメモリの中に割り当てられる必要は無く、且つポインタは設定されない）。遅延保護プログラム命令ＶＬＳＴＭの実行に加えて、ハードウェアはセキュアモードから非セキュアモードに切り替わる関数呼び出しに応答するが、この応答は、プッシュ動作を介して、セキュア関数ｆｎ１のためのその時のアクセス・トラッキング・フラグＳＦＰＡの値を、セキュア関数ｆｎ１のためのセキュアスタックに保存する（例えば、非セキュアモードにおいてアクセス可能でないメモリ領域に格納される）ことによって行われる。
【００１１】
セキュア関数ｆｎ１からの関数呼び出しは、図１の例では、非セキュア関数ｆｎ２に向けて行われる。セキュア関数ｆｎ１の任意のセキュア浮動小数点状態データは、最初のうちは、浮動小数点レジスタの中に依然として存在する。この浮動小数点状態データを保存しない（ｓａｖｉｎｇ  ｏｆｆ）こと、及び浮動小数点状態データをクリアすることについては、デフォルト設定によって、時間及びエネルギーは消費されていない。もし非セキュア関数ｆｎ２がいかなる浮動小数点アクセスも行わない場合、そしてその後、セキュア関数ｆｎ１が再開される場合、その時は、浮動小数点状態データは、依然として決まった場所に存在するであろう。そして、更なるエネルギー及び時間は、その浮動小数点状態データを復元する必要性を回避することによって、節約されるであろう。
【００１２】
しかしながら、もし浮動小数点レジスタへのアクセスが、ＬＳＰＡＣＴフラグが“１”に設定されている間に試みられる（例えば、非セキュア関数ｆｎ２において実行される浮動小数点命令によって）場合、その時は、セキュア状態保護回路は、セキュア関数ｆｎ１の浮動小数点状態データを、以前に実行された遅延保護命令ＶＬＳＴＭによって設定された（準備された）セキュア状態メモリ内の割り当てられた格納領域に保存する役割を果たし、且つ、その後、非セキュア関数ｆｎ２による浮動小数点レジスタへのアクセスを許可する前に、浮動小数点レジスタをクリアする。セキュア状態保護回路は、遅延保護ＶＬＳＴＭによって以前に準備された保護応答を実施するが、その理由は、セキュア状態保護回路が次のことを検出するためである。即ち、検出する内容は、保護フラグＬＳＰＡＣＴが、浮動小数点レジスタがセキュア関数ｆｎ１による処理に依存する状態データを含むことを示すように設定されたこと（例えば、“１”の値を有すること）、及び、セキュアスタックの中にスペースを割り当てると共に、セキュア関数ｆｎ１の浮動小数点状態データを保存するプッシュ動作で使用するために、その割り当てられたスペースへのポインタを保存することによって、保護応答が、その浮動小数点状態データのために準備されたこと、である。
【００１３】
保護応答が実施された場合、保護フラグＬＳＰＡＣＴは（例えば、“０”という値に）リセットされるが、その理由は、セキュア浮動小数点状態データが保存されると共にクリアされたからであり、従って、非セキュア関数ｆｎ２の処理中に生じる、次の浮動小数点アクセスは、そのセキュア浮動小数点状態データに対して、更なる保護応答を誘発する必要がないからである。
【００１４】
図１に示されるように、非セキュア関数ｆｎ２は、セキュア関数ｆｎ１に処理を戻す関数戻り（ｆｕｎｃｔｉｏｎ  ｒｅｔｕｒｎ）を実行することによって終了する。ハードウェアは、この関数戻りに応答するが、この応答は、セキュア関数ｆｎ１のエグジット（ｅｘｉｔ）にあたり、セキュアスタック上に置かれたアクセス・トラッキング・フラグＳＦＰＡを復元することによって行われる。再開されたセキュア関数ｆｎ１に対してアクセス・トラッキング・フラグＳＦＰＡをこのように復元することは、そのセキュア関数ｆｎ１内の以前の処理が、浮動小数点レジスタに対して何らかのアクセスを実施したかどうかを示し、且つ、従って、セキュア関数ｆｎ１からの関数呼び出しが行われた際に、幾つかのセキュア浮動小数点状態データが現存したことを示す。セキュア関数ｆｎ１は、自身が再開される際、遅延（ｌａｚｙ）ロード命令ＶＬＬＤＭを実行することを担当する。このことは、図１において疑似符号で図示されたアクションを有する。より具体的には、もしアクセス・トラッキング・フラグＳＦＰＡが第２の値を有する（例えば、“１”に設定される）場合、その時は、保護フラグが依然として設定されるかどうか（例えば、ＬＳＰＡＣＴが“１”）について、判定が行われる。もし保護フラグが依然として設定されている場合、これは、セキュア関数ｆｎ１がＶＬＳＴＭ命令を実行したために、保護応答が誘発されなかったことを示す。万一これが当てはまる場合、その時は、セキュア浮動小数点状態データの復元を行う必要はない。その理由は、セキュア浮動小数点状態データが、浮動小数点レジスタの中に依然として存在するであろうということであり、更にその理由は、介在する処理中に、アクセスの試みが行われなかったからである。保護フラグはリセットされるであろう（ＬＳＰＡＣＴ＝０）。そして、更なる処理が実施される必要はない。
【００１５】
逆に、万一アクセス・トラッキング・フラグが第２の値（例えば、ＳＦＰＡ＝“１”）を有し、且つ万一、遅延ロードプログラム命令ＶＬＬＤＭが実行される際に、保護フラグが設定されない（例えば、ＬＳＰＡＣＴ＝“０”）場合、その時は、これは次のことを示す。即ち、これは、セキュア関数ｆｎ１がエグジット（ｅｘｉｔ）の際に、セキュア浮動小数点状態データが決まった場所に存在したことを指示すると共に、ＶＬＳＴＭを実行することに続いて、且つＶＬＬＤＭ命令の実行の前に、保護応答が誘発されたことを示す。従って、この環境におけるＶＬＬＤＭプログラム命令は、復元応答を誘発するが、ここで復元応答は、浮動小数点レジスタポップ動作として、保存されたポインタ値によって指示されるセキュアスタック（ポップ）の中から、セキュア浮動小数点状態データを復元する。
【００１６】
このようにして、フラグ回路はアクセス・トラッキング・フラグＳＦＰＡを提供することが分かるであろう。ここでアクセス・トラッキング・フラグＳＦＰＡは、関数呼び出しに関連して、処理回路がセキュアモードに入る（非セキュア関数ｆｎ０からセキュア関数ｆｎ１への切り替えが行われる）際に、第１の値（例えば、ＳＦＰＡ＝”０”）を有する。フラグ回路は、その後、セキュア関数ｆｎ１の処理の間に生じる浮動小数点レジスタへのアクセスを監視する役割を果たし、且つ、万一浮動小数点レジスタへのアクセスが生じる場合、アクセス・トラッキング・フラグを第２の値（ＳＦＰＡ＝”０”）へ切り替える。追跡される浮動小数点レジスタへのアクセスは、それらの浮動小数点レジスタへの任意の読み出しアクセス又は書き込みアクセスの形態を取ってもよい。幾つかのタイプのアクセスは、アクセス・トラッキング・フラグの値を切り替えることなく、実施されてもよい。その理由は、それらのアクセスは、潜在的なセキュリティと妥協するような方法では、セキュアモード処理に依存する任意の情報を含む浮動小数点状態データに帰着しないからである。従って、追跡されるアクセスは、少なくとも１つのタイプのものである。このようにして提供されるアクセス・トラッキング・フラグは、以前に説明された遅延保護及び遅延ロードのような機構を可能にするが、これらの機構は、この保護が必要でない場合には、不必要な時間及びエネルギー諸経費を背負い込むことなく、状態データに対して保護を提供するように、履行されるべきものである。図１の例が、浮動小数点レジスタデータである状態データと関連して説明されてきたことは、正しく認識されるであろう。可能なことであるが、同じ機構は、ＳＩＭＤレジスタデータのような、セキュアモード処理に関連付けられる他の形態の状態データを保護するのに使用されてもよい。
【００１７】
図１は単純な関数呼び出しツリーを表してはいるが、この発明が、複雑な関数呼び出しツリーにおいて、セキュア状態を効率的に保護するのに使用され得るということは、当業者によって正しく認識されるであろう。具体的には、セキュア関数ｆｎ１における処理は、（潜在的には異なる時間にコンパイルされる）幾つかの関数に分割されるであろう。それによって、非セキュア関数ｆｎ２に対する関数呼び出しを扱うコンパイラは、ｆｎ１の開始時には、セキュア状態に入ってから生じた全ての処理に気付かないかもしれない。結果として、コンパイラが、ＦＰレジスタがセキュアコードによってアクセスされたかどうかを知ることは、しばしば、困難であるか又は不可能である。
【００１８】
図２は、アクセス・トラッキング・フラグＳＦＰＡを保存することにおける、フラグ回路のアクションを模式的に図示する流れ図である。ステップ１００では、処理は、システムをセキュアモードから非セキュアモードへ切り替えている関数呼び出しが検出されるまで、待つ。そのような関数が検出された場合、処理はステップ１０２へ進むが、ステップ１０２では、次のセキュアから非セキュアへの関数呼び出しを待ち受けるために、処理がステップ１００へ戻る前に、アクセス・トラッキング・フラグＳＦＰＡの現在の値は、セキュアスタックメモリへ保存される。
【００１９】
図３は、アクセス・トラッキング・フラグを復元することにおける、フラグ回路のアクションを模式的に図示する流れ図である。ステップ１０４では、処理は、非セキュアモードからセキュアモードへの関数戻りが検出されるまで、待つ。そのような戻りが検出された場合、その時は、ステップ１０６は、ポップ動作を介して、セキュアスタックからアクセス・トラッキング・フラグＳＦＰＡを復元する役割を果たす。
【００２０】
他の実施例も可能である。他の実施例とは、それらの実施例においては、ＶＬＬＤＭ命令の後に実行される別の命令によって、スタックスペースの割り当て解除が実施され、且つＶＬＬＤＭは、浮動小数点状態が保存されたかもしれない位置を指定するレジスタパラメータを取る、というようなものである。
【００２１】
図４Ａは、いかにしてフラグ回路がアクセス・トラッキング・フラグをリセットするかについての、第１の例を図示する。ステップ１０８では、フラグ回路は、非セキュアモードからセキュアモードへの関数呼び出しが検出されるまで、待つ。そのような関数呼び出しが検出された場合、その時は、ステップ１１０は、アクセス・トラッキング・フラグを第１の値（例えば、ＳＦＰＡ＝”０”）にリセットする役割を果たす。処理は、その後、ステップ１０８へ戻る。このタイプのアクセス・トラッキング・フラグのリセットは、例えば、アクセス・トラッキング・フラグを第２の値（例えば、ＳＦＰＡ＝”１”）に設定する機構に関連して、使用されてもよい。但し、これには、セキュア浮動小数点データへの次に起こる最初のアクセスが、その時の処理回路がセキュアモードにあるか、又は非セキュアモードにあるかとは無関係に生じる場合か、又は、代わりに、セキュア浮動小数点状態データへの最初のアクセスが、処理回路がセキュアモードで動作している時に生じる場合か、のいずれかに該当するという条件が付く。アクセス・トラッキング・フラグが、設定されると共にリセットされるために、制御されてもよい、様々な異なる方法が存在する。この制御の狙いは、次の通りである。即ち、狙いは、セキュア処理の間、浮動小数点状態データへの最初のアクセスが生じるまでに、セキュアモード処理に入る呼び出しに際して、アクセス・トラッキング・フラグは第１の値を有するが、その後すぐに、アクセス・トラッキング・フラグは第２の値に設定される、というものである。
【００２２】
図４Ｂは、いかにしてフラグ回路が、アクセス・トラッキング・フラグのリセットを制御するかについての、第２の例を図示する流れ図である。ステップ１１２では、処理は、セキュアモードから非セキュアモードへの関数呼び出しが行われるまで、又はセキュアモードから非セキュアモードへの関数戻りが行われるまで、待つ。そのような関数呼び出し又は関数戻りが検出された場合、その時は、ステップ１１４は、アクセス・トラッキング・フラグを第１の値（例えば、ＳＦＰＡ＝”０”）に設定する役割を果たす。そのようなリセット機構は、浮動小数点状態データへの最初のアクセスを検出するにあたり、アクセス・トラッキング・フラグを設定する機構に関連して使用されてもよい。ここで該浮動小数点状態データへの最初のアクセスは、システムが、セキュアモードにおいて続いて動作している場合に生じる。
【００２３】
図５は、浮動小数点状態データへの試みられたアクセスに対する（フラグ回路及びセキュア状態保護回路による）ハードウェア応答を模式的に図示する流れ図である。ステップ１１６では、処理は、１つ以上の浮動小数点レジスタへのアクセスが試みられるまで、待つ（即ち、処理回路によって、所定の状態データへの少なくとも１つのタイプのアクセスを検出する例）。そのような試みられたアクセスが検出される場合、その時は、ステップ１１８は、保護フラグＬＳＰＡＣＴが現在設定されているかどうか（例えば、ＬＳＰＡＣＴ＝”１”）を判定する。もし保護フラグが設定される場合、その時は、ステップ１２０は、その割り当てられた格納領域に対するポインタアドレスによって指示されるような、セキュアスタック内の割り当てられた格納領域に、現在の浮動小数点レジスタの内容を格納する役割を果たす。格納領域の割り当て、及びその割り当てられた格納領域に対する適切なポインタの発生は、以前に説明されたように、遅延保護プログラム命令を実行することによって、以前に設定されている（準備されている）。
【００２４】
ステップ１２０に続いて、ステップ１２２は、今まで保存されてきた浮動小数点レジスタをクリアする役割を果たす。ステップ１２４は、その後、保護フラグをリセットする役割を果たす（例えば、ＬＳＰＡＣＴ＝”０”を設定する）。これは、次のことを示す。即ち、これは、セキュア浮動小数点状態データに対して、次のアクセスの試みが行われる場合、準備されたあらゆる保護アクションが、今取られており、且つ、従って、繰り返される必要はない、ということを示す。
【００２５】
ステップ１２４に続いて、又は、もしステップ１１８における判定が保護フラグは設定されなかったというものである場合、処理はステップ１２６に進み、ステップ１２６では、プロセッサは現在、セキュアモードで動作しているか否かについて、判定が行われる。もしプロセッサがセキュアモードで動作している場合、その時は、ステップ１２８は、アクセス・トラッキング・フラグＳＦＰＡが現在、第１の値（例えば、ＳＦＰＡ＝”０”）を有するか否かを判定する。もしアクセス・トラッキング・フラグが第１の値を有する場合、その時は、このことは、ステップ１１６で検出されたアクセスが、セキュアモード処理の間に生じる最初の浮動小数点アクセスであることを示し、且つ、従って、ステップ１３０は、アクセス・トラッキング・フラグを第２の値（例えば、ＳＦＰＡ＝”１”）に切り替えるのはもちろんのこと、浮動小数点構成（例えば、丸めモード、浮動小数点例外処置など）を、デフォールト構成に設定する役割を果たす。ステップ１３０に続いて、又は、もしそれらの判定が否定的である場合は、ステップ１２６及び１２８に続いて、処理はステップ１３２へ進み、ステップ１３２では、ステップ１１６で試みられた浮動小数点アクセスが許可される。処理は、その後、ステップ１１６へ戻り、次の試みられた浮動小数点レジスタアクセスを待ち受ける。
【００２６】
図６は、もし必要ならば、保護応答を実施するために、いかにして遅延格納プログラム命令（遅延保護プログラム命令）の実行が、状態保護回路を誘発するか、を模式的に図示する流れ図である。ステップ１３４では、遅延格納プログラム命令ＶＬＳＴＭの復号が検出される。ステップ１３６は、その後、アクセス・トラッキング・フラグが第２の値（例えば、ＳＦＰＡ＝”１”）を有するか否かを判定する。もしアクセス・トラッキング・フラグが第２の値を有さない場合、その時は、保護される必要があるセキュア浮動小数点状態データは存在せず、且つ、従って、準備が行われる必要はなく、且つ処理はステップ１３４へ戻る。しかしながら、もしアクセス・トラッキング・フラグが第２の値を有する場合、その時は、処理はステップ１３８へ進み、ステップ１３８では、保護フラグが設定される（保護は、装備されたことが示されるが、しかし未だ誘発されない）。ステップ１４０は、その後、保存されるべき浮動小数点レジスタ状態データ（又は、ＶＬＳＴＭ命令のパラメータの中で指定されるような他のデータ）のためのセキュアスタックの中にスペースを、必要であるものとして続いて検出された場合に、割り当てる役割を果たす。また、処理が、次の遅延格納プログラム命令を待ち受けるためにステップ１３４へ戻る前に、セキュアスタック内のその割り当てられたスペースへのポインタが設定される。
【００２７】
他の実施例も可能である。他の実施例とは、それらの実施例においては、ＶＬＳＴＭ命令は、セキュア浮動小数点状態データを直ちにプッシュするように、状態保護回路を誘発する役割を果たす、というようなものである。別の選択肢は、次に示す通りである。即ち、別の選択肢は、ＶＬＳＴＭ命令の前に実行される別の命令が、スタックスペースを割り当てる役割を果たし、且つＶＬＳＴＭが、その割り当てられたスペースの位置を指定するレジスタパラメータを取る、というものである。
【００２８】
図７は、遅延ロードプログラム命令の実行に対する応答を模式的に図示する。ステップ１４２では、遅延ロードプログラム命令（ＶＬＬＤＭ）が復号される。ステップ１４４は、その後、アクセス・トラッキング・フラグＳＦＰＡが第２の値（例えば、ＳＦＰＡ＝”１”）を有するか否かを判定する。もしアクセスフラグが第２の値を有さない場合、保護が準備される必要があり、セキュアスタックへのプッシュ動作の対象になるかもしれないし、ならないかもしれない、セキュア浮動小数点レジスタ状態データは存在しなかったことになる。このように、もしアクセス・トラッキング・フラグが第１の値を有する場合、その時は、処理は、ステップ１４４からステップ１４２へ戻って、次の遅延ロード命令を待ち受ける。もしアクセス・トラッキング・フラグが、ステップ１４４で判定されたように、第２の値を有する場合、その時は、ステップ１４６は、保護フラグが依然として設定されている（例えば、ＬＳＰＡＣＴ＝”１”）か否かを判定する。もし保護フラグが依然として設定されない場合、その時は、これは、次のことを示す。即ち、これは、保護応答が、先行する処理の間、セキュア浮動小数点状態データのために誘発されたことを示し、且つ、従って、ステップ１４８が、スタックから、浮動小数点レジスタに対するセキュア浮動小数点状態データの復元動作（ポップ）を実行する役割を果たすと共に、対応するスタックスペースの割り当てを解除すること示す。割り当てられた格納領域もまた、割り当てが解除されて、そのスペースを解放する。もしステップ１４６での判定が、保護フラグは依然として設定されている（例えば、ＬＳＰＡＣＴ＝”１”）というものである場合、その時は、保護は、設定されると共に準備されたが、しかし誘発されなかったということであり、且つ、従って、復元動作は要求されず、且つ処理はステップ１５０へ進み、ステップ１５０では、保護フラグはリセットされる（例えば、ＬＳＰＡＣＴ＝”０”）。
【００２９】
幾つかの実施例では、遅延非保護プログラム命令が提供されてもよく、該命令は、これが実行されると、処理回路がセキュアモードで動作しており、且つ保護フラグが依然として設定されている（例えば、ＬＳＰＡＣＴ＝”１”）際には、保護応答を無効化する。
【００３０】
図８は、メインメモリ１５６に接続されたプロセッサ１５４を含むデータ処理システム１５２を模式的に図示する。プロセッサ１５４は、メインメモリ１５６から、プログラム命令及びデータを引き出す。プログラム命令は、命令取り出しユニット１５７によって取り出され、且つ、続いて、命令復号器１５８によって復号される。ここで命令復号器１５８は、それらのプログラム命令によって指定されるように、実施されるべき処理動作を制御するための制御信号を発生させる。実施される処理動作は、例えば、整数処理動作を含んでもよい。この整数処理動作は、汎用のレジスタバンク１６０内に格納され、且つ乗算器１６２、シフタ１６４及び加算器１６６のような処理回路によって扱われるデータ値を使用して、実施される。プログラム命令はまた、浮動小数点プログラム命令を含んでもよい。この浮動小数点プログラム命令は、浮動小数点レジスタ１６８内に格納され、且つ浮動小数点実行回路１７０によって実行される浮動小数点データ値に対して実施される。浮動小数点実行回路１７０は、浮動小数点構成レジスタ１７２内に格納された浮動小数点構成によって構成される。セキュアモードの処理において、最初の浮動小数点アクセスが行われる際、この浮動小数点構成（例えば、丸めモード、例外挙動など）は、デフォルト値に設定される。デフォルト構成は、ハードウェアで実現されてもよく、又はあらかじめ、プログラムされてもよい。浮動小数点構成レジスタ１７２内に格納された浮動小数点構成は、同時に保護され復元されてもよい。その理由は、浮動小数点状態データは、以前に議論されたように、保護されると共に復元されるからである。浮動小数点構成は、浮動小数点レジスタ自体の内容に加えて、セキュア浮動小数点状態データの一部分であってもよい。
【００３１】
フラグコントローラ１７４（フラグ回路）及びセキュア状態保護回路１７６は、浮動小数点回路に関連付けられる。これらの回路は、以前に説明された機能を有する。これらの回路は、両方とも、以前に説明されたように、アクセス・トラッキング・フラグＳＦＰＡ及び保護フラグＬＳＰＡＣＴを維持すると共に、アクセス・トラッキング・フラグＳＦＰＡ及び保護フラグＬＳＰＡＣＴに応答する。更に、ポインタのために、スタックメモリ１７８内の領域に格納部分が提供される。ここでスタックメモリ１７８は、セキュア浮動小数点状態データが必要な場合に、セキュア浮動小数点状態データを格納するために、実行時に（メインメモリ１５６内に）割り当てられる。
【００３２】
図９は、異なる実施形態の動作及び、いかにしてそれらの実施形態が、アクセス・トラッキング・フラグを第１の値に設定すると共に、アクセス・トラッキング・フラグを第２の値に設定する役割を果たせるか、を模式的に図示する。例（ａ）では、関数呼び出しによって、非セキュアモードからセキュアモードへの切り替えが行われる場合、アクセス・トラッキング・フラグは、第１の値に設定される。続いて、セキュアモードにある間に、（少なくとも１つのタイプの）最初の浮動小数点アクセスが行われる時に、アクセス・トラッキング・フラグは、第２の値に設定される。例（ｂ）では、関数呼び出しとして、非セキュアモードからセキュアモードへの切り替えが行われる場合、アクセス・トラッキング・フラグは、再び第１の値に設定される。プロセッサがセキュアモードと非セキュアモードのどちらにあるかとは無関係に、続いて起こる最初の浮動小数点アクセスが生じた時、アクセス・トラッキング・フラグは、第１の値から第２の値へ切り替えられる。例（ｃ）では、関数呼び出し又は関数戻りとして、セキュアモードから非セキュアモードへの切り替えが行われる場合、アクセス・トラッキング・フラグは、第１の値に設定される。続いて、プロセッサがセキュアモードで動作している際に、最初の浮動小数点アクセスが検出されると、アクセス・トラッキング・フラグは、第２の値に設定される。例（ａ）、（ｂ）及び（ｃ）の全ては、セキュア状態における最初の浮動小数点アクセスが検出されるまで、アクセス・トラッキング・フラグが第１の値を有する、という効果を持つことが分かるであろう。
【００３３】
本明細書では、添付図面を参照しながら、例証的な実施形態が詳細に説明されてきたが、請求項は、それらの正確な実施形態に限定されないこと、及び、添付された請求項の範囲及び精神から外れることなく、当業者によって様々な変更、追加及び修正が、実施形態の中で成し遂げられ得ることは、理解されるべきである。例えば、独立請求項の特徴と共に、従属請求項の特徴の様々な組合せを、創作することが可能であろう。
【図１】
2018524731.tif 000003
【図２】
2018524731.tif 000004
【図３】
2018524731.tif 000005
【図４Ａ】
2018524731.tif 000006
【図４Ｂ】
2018524731.tif 000007
【図５】
2018524731.tif 000008
【図６】
2018524731.tif 000009
【図７】
2018524731.tif 000010
【図８】
2018524731.tif 000011
【図９】
2018524731.tif 000012
【国際調査報告】
2018524731.tif 000013
2018524731.tif 000014