(57)【要約】【課題】データ処理装置のシステム制御レジスタを保護する方法を提供する。【解決手段】データ処理装置は、システム制御レジスタ・セット・ルーチンを含むルーチンを実行する処理論理、ソフトウエア・ルーチンのサブ・セットを実行するとき、処理論理が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶する複数のシステム制御レジスタ、各フィールドがシステム制御レジスタの１又は複数と関連付けられた１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタ、ディセイブル信号を生成するディセイブル制御論理であって、ディセイブル信号がクリアのときにシステム制御レジスタ・セット・ルーチンが前記システム制御レジスタにアクセス制御情報を書き込むように動作し、前記１又は複数のフィールドの各々について、そのフィールドに書込み制限データを選択的に供給する前記ディセイブル制御論理を含む。【選択図】図１
2008047129.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
システム制御レジスタ・セット・ルーチンを含むソフトウエア・ルーチンを実行するための処理論理と、
前記ソフトウエア・ルーチンの少なくともサブ・セットを実行するとき、処理論理が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶するための複数のシステム制御レジスタと、
各フィールドが１又は複数のシステム制御レジスタに関連付けられた１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタと、
ディセイブル信号を生成するためのディセイブル制御論理であって、ディセイブル信号がクリアのときにシステム制御レジスタ・セット・ルーチンが前記システム制御レジスタにアクセス制御情報を書き込むように動作し、また前記１又は複数のフィールドの各々について、そのフィールドに書込み制限データを選択的に供給するように動作する前記ディセイブル制御論理と、
を含み、
ディセイブル制御論理がディセイブル信号をセットするとき、前記少なくとも１つの書込み制御レジスタが前記サブ・セットの任意のソフトウエア・ルーチンによって読出しのみ可能であり、書き込み制限データを有する各フィールドに対して関連付けられた１又は複数の制御レジスタが書込み制限データによって指示され、前記サブ・セットの任意のソフトウエアによって読出しのみ可能である、
前記データ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、システム制御レジスタ・セット・ルーチンがブート・プロセスの一部として実行され、前記ブート・プロセスの間にディセイブル信号がクリアされる前記データ処理装置。
【請求項３】
請求項２記載のデータ処理装置であって、ディセイブル制御論理が、前記ブート・プロセスの間に始動したタイマの時間切れの後でディセイブル信号をセットするように動作する前記データ処理装置。
【請求項４】
請求項２記載のデータ処理装置であって、ディセイブル制御論理が、前記ブート・プロセスの間に処理論理によって発行された信号を受信することでディセイブル信号をセットするように動作する前記データ処理装置。
【請求項５】
請求項１記載のデータ処理装置であって、更にシステム・コントローラであって、システム・リセットが必要とされるときに、ディセイブル制御論理にディセイブル信号をクリアさせ、処理論理をリセットして、ブート・プロセスを実行させるように動作するシステム・コントローラを含む前記データ処理装置。
【請求項６】
請求項１記載のデータ処理装置であって、更に処理論理の活動に関して認証プロセスを実行するための認証論理を含み、前記処理論理は、ディセイブル信号をクリアさせたいときに認証論理に要求を発行するように動作し、認証論理は、認証プロセスによって前記要求が正当に発行されたものであることが示されるとき、ディセイブル制御論理にディセイブル信号をクリアさせるように動作する前記データ処理装置。
【請求項７】
請求項６記載のデータ処理装置であって、認証論理がシステム・コントローラである前記データ処理装置。
【請求項８】
請求項１記載のデータ処理装置であって、前記システム・リソースが複数のメモリ領域を含む前記データ処理装置。
【請求項９】
請求項８記載のデータ処理装置であって、前記システム制御レジスタ中のアクセス制御情報が各メモリ領域についての領域記述子を提供し、また書込み制御レジスタの１つのフィールド中の書込み制限データがどの領域記述子を読出し専用とするかを指定する前記データ処理装置。
【請求項１０】
請求項９記載のデータ処理装置であって、
各メモリ領域に対して予め決められた優先順位が付随しており、それにより前記メモリ領域の任意のものがオーバラップする場合、より高い優先度を有するオーバラップ・メモリ領域に付随する領域記述子が用いられるようになっており、
書込み制御レジスタの前記フィールド中の書込み制限データが最も高い優先度のメモリ領域に付随する領域記述子から始まる複数の読出し専用である領域記述子を指定する、
前記データ処理装置。
【請求項１１】
請求項１記載のデータ処理装置であって、データ処理装置は、その中でデータ処理装置のデバイスが動作できる複数のドメインを含み、前記ドメインは、少なくとも保護されたドメインと無保護のドメインとを含み、保護されたドメインでは、前記デバイスが無保護のドメインでアクセスできない保護されたデータに対してアクセスができ、また前記システム制御レジスタ・セット・ルーチンは、前記保護されたドメインで動作するとき、処理論理によって実行される保護されたルーチンである前記データ処理装置。
【請求項１２】
請求項１１記載のデータ処理装置であって、処理論理が動作するドメインがどちらのドメインであっても、処理論理は、複数の動作モードを有し、前記システム制御レジスタ・セット・ルーチンは、前記保護されたドメインで予め決められた特権的な動作モードで動作するとき、処理論理によって実行される保護されたルーチンである前記データ処理装置。
【請求項１３】
請求項１２記載のデータ処理装置であって、前記処理論理が前記保護されたドメインに固定されて動作する前記データ処理装置。
【請求項１４】
請求項１記載のデータ処理装置であって、更にディセイブル信号を受信するように動作する書込み評価論理を含むことによって、ディセイブル信号がセットされているとき、前記書込み評価論理が、１又は複数のシステム・リソースへの書込みアクセスをディセイブルする前記データ処理装置。
【請求項１５】
請求項１４記載のデータ処理装置であって、更にディセイブル信号を受信するように動作する割込み発生論理を含むことによって、ディセイブル信号がセットされていて、前記１又は複数のシステム・リソースへのアクセス試行が発生するとき、前記割込み発生論理が、アクセス試行の存在を示すために割込み信号を発行する前記データ処理装置。
【請求項１６】
請求項１記載のデータ処理装置で使用するための処理ユニットであって、前記処理論理および前記少なくとも１つの書込み制御論理を含む処理ユニット。
【請求項１７】
データ処理装置であって、
システム制御レジスタ・セット・ルーチンを含むソフトウエア・ルーチンを実行するための処理手段と、
前記ソフトウエア・ルーチンの少なくともサブ・セットを実行するときに、処理手段が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶するための複数のシステム制御レジスタ手段と、
各フィールドが１又は複数のシステム制御レジスタ手段に関連付けられた１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタ手段と、
ディセイブル信号を生成するためのディセイブル制御手段であって、ディセイブル信号がクリアのとき、システム制御レジスタ・セット・ルーチンは、前記システム制御レジスタ手段中にアクセス制御情報を書き込むように動作し、前記１又は複数のフィールドの各々に対してそのフィールド中に書込み制限データを選択的に供給するディセイブル制御手段と、
を含み、
ディセイブル制御手段がディセイブル信号をセットするとき、前記少なくとも１つの書込み制御レジスタ手段は、前記サブ・セットのうち任意のソフトウエア・ルーチンによって読出しのみ可能であり、書込み制限データを有する各フィールドに対して関連付けられた１又は複数のシステム制御レジスタ手段が書込み制限データによって指定され、前記サブ・セットのうち任意のソフトウエア・ルーチンによって読出しのみ可能である、
前記データ処理装置。
【請求項１８】
ソフトウエア・ルーチンを実行するための処理論理を有するデータ処理装置において、システム制御レジスタを保護する方法であって、システム制御レジスタは、前記ソフトウエア・ルーチンの少なくともサブ・セットを実行するとき、処理論理が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶しており、本方法は、
各フィールドが１又は複数のシステム制御レジスタに関連付けられた１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタを提供する工程と、
ディセイブル信号を生成する工程と、
を含み、
ディセイブル信号がクリアのとき、前記システム制御レジスタにアクセス制御情報を書き込み、また前記１又は複数のフィールドの各々に対してそのフィールド中に書込み制限データを選択的に供給するようになっており、
ディセイブル信号がセットされているとき、前記少なくとも１つの書込み制御レジスタは、前記サブ・セットのうちの任意のソフトウエア・ルーチンによって読出しのみ可能であり、またその中に書込み制限データを有する各フィールドに対して、関連付けられた１又は複数のシステム制御レジスタが書込み制限データによって指定され、前記サブ・セットの任意のソフトウエア・ルーチンによって読出しのみ可能である、
前記方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置のシステム制御レジスタを保護するための技術に関する。
【背景技術】
【０００２】
ソフトウエア・ルーチンを実行するための処理論理を有するデータ処理装置では、それらソフトウエア・ルーチンの少なくともいくつかを実行するときに、その処理論理が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶する複数のシステム制御レジスタを設けることが知られている。アクセス制御情報は、多様な形を取る。例えば、仮想アドレスを指定するメモリ・アクセス要求を発行するプロセッサ・コアの形の処理論理に関しては、各種のシステム制御レジスタが各種のメモリ領域属性および／又はそのようなアクセス要求に関連して使用されるアクセス許可と一緒に、仮想アドレスを物理アドレスに変換するために使用されるマッピングを指定するメモリ中のページ・テーブルへのポインタを供給する。同様に、物理アドレスを直接採用する処理ユニットに関しては、そのようなシステム制御レジスタが特別なメモリ領域にアクセスするときに使用されるアクセス許可および／又はメモリ属性を直接指定することが知られている。
【０００３】
メモリに関連するアクセス制御情報を記憶することに加えて、そのようなシステム制御レジスタが、例えば、システム内部で特別なタイプの例外が発生したときに実行すべきソフトウエア・ルーチンを指定する例外ベクトル・テーブルへのポインタを含めることによって、他のシステム・リソースに関するアクセス制御情報を供給することが知られている。
【０００４】
典型的なシステム制御レジスタは、例えば、予め決められた特権的な動作モードで動いているオペレーティング・システム・ソフトウエアのような、関連する処理論理上で実行される信頼できるソフトウエアによってのみ更新されるようにアレンジされる。別の例では、信頼できるソフトウエアは、データ処理装置によって提供される特別なドメインで実行されるソフトウエアである。例えば、オペレーティング・システムのセキュリティに対する信頼の緩和に努めるために、データ処理装置に別になったドメインが設けられ、それらのドメインがハードウエア・レベルでセキュリティを処理する機構を提供するようになったシステムを提供することが知られている。そのようなシステムについては、例えばその内容をここに引用によって取り込む同一人に譲渡されている係属出願である米国特許出願第１０／７１４，５６１号に述べられている。この出願は、保護されたドメインと無保護のドメインとを有するシステムについて述べている。そのシステムでは、無保護のドメインと保護されたドメインとが等価的に別の世界を確立しており、保護されたドメインは、信頼できる実行空間を提供し、それが他の実行空間からハードウエアで強化された境界によって分離されており、同様に、無保護のドメインは、信頼できない実行空間を提供している。そのようなシステムでは、システム制御レジスタを更新するために用いられる信頼できるソフトウエアは、保護されたドメインで予め決められた動作モードで実行されるソフトウエアである。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
システム制御レジスタ内容のセキュリティを更に増進することを目的として、一旦初期に書込みが行われて、強制的に読出し専用とされるシステム制御レジスタの予め決められたリストを提供することが知られている。典型的に、この機構は、セットされたときに予め決められた固定リストのシステム制御レジスタを読出し専用とするディセイブル信号を発行することによって呼び出される。
【０００６】
しかし、予め決められた固定リストのシステム制御レジスタを読出し専用に強制することによって、データ処理装置の各種使用モデルに対して厳しい制約を課すことになる。従って、システム制御レジスタの保護のためのより柔軟な方式を提供できることが望ましい。
【課題を解決するための手段】
【０００７】
第１の観点から見たとき、本発明は、データ処理装置であって、システム制御レジスタ・セット・ルーチンを含むソフトウエア・ルーチンを実行するための処理論理、前記ソフトウエア・ルーチンの少なくともサブ・セットを実行するときに、処理論理が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶するための複数のシステム制御レジスタ、各フィールドが１又は複数のシステム制御レジスタに関連付けられている１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタおよびディセイブル信号を生成するためのディセイブル制御論理を含み、ディセイブル信号がクリアのとき、システム制御レジスタ・セット・ルーチンが前記システム制御レジスタにアクセス制御情報を書き込み、また前記１又は複数のフィールドの各々に対してそのフィールドに書込み制限データを選択的に供給するように動作し、ディセイブル制御論理がディセイブル信号をセットするとき、前記少なくとも１つの書込み制御レジスタが前記サブ・セットのうちの任意のソフトウエア・ルーチンによる読出しのみが可能とされ、そこに書込み制限データを有する各フィールドについて、書込み制限データによって指示されたそれらの関連付けられた１又は複数のシステム制御レジスタが前記サブ・セットの任意のソフトウエア・ルーチンによる読出しのみが可能とされるデータ処理装置を提供する。
【０００８】
本発明に従えば、データ処理装置は、各フィールドが１又は複数のシステム制御レジスタに関連付けられた１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタを提供する。各フィールドと、関連付けられている１又は複数のシステム制御レジスタとの間のマッピングは、典型的には、予め決められるが、別の実施の形態では、そのようなマッピングを信頼できるソフトウエアによってプログラムすることができる。ディセイブル信号がクリアのとき、アクセス制御情報をシステム制御レジスタに書き込むことができ、更に、前記少なくとも１つの書込み制御レジスタのフィールドの各々に、書込み制限データを選択的に供給できる。その後、ディセイブル信号がセットされたとき、前記少なくとも１つの書込み制御レジスタは、読出し専用となって、その中のフィールドを改ざんできなくなる。書込み制限データが供給された各フィールドに対する、書込み制限データによって指示された関連する１又は複数のシステム制御レジスタもまた読出し専用となって、それらの内容を改ざんできなくなる。
【０００９】
このことから、システム制御レジスタを参照できる任意のソフトウエア・ルーチンに関して、それらのソフトウエア・ルーチンは、上述のように読出し専用とマークされたそれらのシステム制御レジスタの任意のものの内容を変更することができない。しかし、システム制御レジスタのどれを読出し専用としてアレンジするかの正確な選択は、ディセイブル信号がクリアである間に前記少なくとも１つの書込み制御レジスタの１又は複数のフィールドに記憶される書込み制限データによってプログラム可能であり、従ってこのことが大きい柔軟性を提供することになる。更に、ディセイブル信号がセットされたときでも一定のシステム制御レジスタを読出しおよび書込みの両方が可能なように保留させることによって、処理論理上で実行される信頼できるソフトウエアがそれらのシステム制御レジスタの内容を変更できるようにすることもできる。
【００１０】
注目すべきことは、前記少なくとも１つの書き込み制御レジスタの関連する１又は複数のフィールドの書込み制限データを適切にセットすることを通して読出し専用とマークされたシステム制御レジスタに関して、それらのシステム制御レジスタが、ディセイブル・フラグがクリアだったときにそれらのレジスタに初期に書込みを行ったシステム制御レジスタ・セット・ルーチン（通常、信頼できるソフトウエア・ルーチンであると考えられる）によってさえも更新できなくすることによって、それらのシステム制御レジスタに対して強化されたセキュリティ・レベルが提供される。特に、信頼できるソフトウエア・ルーチンが後に何らかの形で危うくなったとしても、そのようなシステム制御レジスタの内容を変更することがなお不可能であり、従って、関連するシステム・リソースに対するアクセス制御情報を変更することができない。
【００１１】
この結果、本発明は、プログラマに対してどのシステム制御レジスタを読出し専用として選ぶかに関して大きな柔軟性を許容し、従って、プログラマに対して豊富な利用モデル・セットを提供する。
【００１２】
１つの実施の形態で、書込み制御レジスタのフィールドにマッピングされない付加的なシステム制御レジスタを提供することができる。従って、ディセイブル・フラグがセットされたときでも常に読出し専用である付加的システム制御レジスタが存在でき、事実、ディセイブル・フラグがセットされるか否かに関わらず、常に読み出し可能および書き込み可能なその他のシステム制御レジスタが存在する。
【００１３】
書込み制限データは、多様な形を取る。１つの実施の形態で、前記少なくとも１つの書込み制御レジスタの各フィールドは、単一ビット・フィールドであって、その場合、書込み制限データは、単一ビット・フラグであり、それは、セットされたとき、関連する１又は複数のシステム制御レジスタが読出し専用となるべきことを指示し、またクリアのとき、関連する１又は複数のシステム制御レジスタが読み出し可能および書き込み可能の両方であるべきことを指示する。１つの実施の形態で、「セット」状態は、論理「１」値によって示され、また「クリア」状態は、論理「０」値によって示される。あるいは、逆にしてもよい（セットを０で、クリアを１で表す）。
【００１４】
別の実施の形態で、フィールドの少なくとも１つは、マルチ・ビット・フィールドであり、それは、一旦ディセイブル信号がセットされれば、関連する１又は複数のシステム制御レジスタのうちどれが読出し専用となるべきかを指定する値を記憶できる。
【００１５】
システム制御レジスタ・セット・ルーチンを実行するやり方は、多様な形を取る。しかし、１つの実施の形態で、システム制御レジスタ・セット・ルーチンは、ブート・プロセスの一部として実行され、前記ブート・プロセスの間、ディセイブル信号がクリアされる。
【００１６】
１つのそのような実施の形態で、ディセイブル制御論理は、前記ブート・プロセスの間にタイマが始動してから時間経過の後、ディセイブル信号をセットするように動作する。従って、そのような方式は、システム制御レジスタ・セット・ルーチンに予め決められた時間余裕を与え、その間に、必要なシステム制御レジスタおよび少なくとも１つの書込み制御レジスタをプログラム・アップできるし、その後で、ディセイブル・フラグをセットして、前記少なくとも１つの書込み制御レジスタおよびそこに読出し専用レジスタとして指示された任意のシステム制御レジスタをロック・ダウン（ｌｏｃｋ  ｄｏｗｎ）する。
【００１７】
あるいは、ディセイブル制御論理は、前記ブート・プロセスの間に処理論理によって発行された信号を受信することでディセイブル信号をセットするように動作する。従って、そのような実施の形態では、固定タイマを使用する代わりに、処理論理自身が信号を発してディセイブル信号をセットできる。別の実施の形態で、この機構をタイマ機構と組み合わせて、ディセイブル信号をセットすべきときに処理論理が信号を生成するようにできるが、もしタイマが時間切れになるまでにそのようなことが発生しなければ、タイマの時間切れによってどのような場合でもディセイブル信号をセットさせることができる。従って、何らかの時点でブート・プロセスが失敗しても、ディセイブル信号が確実にセットされる。
【００１８】
いくつかの実施の形態で、ディセイブル制御論理は、ディセイブル信号がセットされた後のどこかの時点で、特定の状況においてディセイブル信号をクリアするようにアレンジされることが想定されている。１つの特別な実施の形態で、データ処理装置は、更にシステム・コントローラを含み、このシステム・コントローラは、システム・リセットが必要な場合にディセイブル制御論理にディセイブル信号をクリアさせ、処理論理をリセットしてブート・プロセスを実行させるように動作する。従って、そのような実施の形態で、ディセイブル制御論理は、ハード・リセット・プロセスの間にディセイブル信号をクリアするようにアレンジできる。
【００１９】
１つの実施の形態で、データ処理装置は、更に処理論理の活動に関して認証プロセスを実行するための認証論理を含み、処理論理は、ディセイブル信号をクリアしたいときに認証論理に要求を発行するように動作し、また認証論理は、その要求が正当に発行されたことを認証プロセスが示す場合に、ディセイブル制御論理にディセイブル信号をクリアさせるように動作する。このことから、そのような実施の形態によって、処理論理で実行されるソフトウエアは、ディセイブル信号をクリアさせる要求を発行することができるが、ディセイブル信号をクリアする前にその要求が正当なものであることを検証するために認証論理が利用される。認証論理は、要求が正当に発行されたか否かを判断するために多様な試験を実行でき、１つの実施の形態では、処理論理によって実行される活動を指示する信号を処理論理から受信して、その情報に基づいて任意の特定な要求が正当に発行されたものであるか否かを判断するようにアレンジされる。これは、例えば、処理論理上で実行されるソフトウエアによって開始されたソフト・リセットの間は、正当なものと考えられる。１つの特別な実施の形態で、認証論理は、システム・コントローラによって提供される。
【００２０】
システム・リソースは、多様な形を取る。しかし、１つの実施の形態で、システム・リソースは、複数のメモリ領域を含む。１つのそのような実施の形態で、前記システム制御レジスタ中のアクセス制御情報は、各メモリ領域に関する領域記述子を提供し、書き込み制御レジスタのフィールドの書き込み制限データは、どの領域既述子が読出し専用であるかを指定する。そのような領域記述子は、典型的には、その領域に関するアドレス範囲を指定し、またそのメモリ領域に関連するメモリ属性および／又はアクセス許可を提供する。各領域記述子は、単一のシステム制御レジスタの内容によって供給されるが、別の実施の形態では、各領域記述子を指定するのに複数のシステム制御レジスタを集合的に用いる。
【００２１】
書き込み制御レジスタがどの領域記述子が読出し専用であるかを指定するやり方は、多様な形を取る。しかし、１つの実施の形態で、予め決められた優先度が各メモリ領域に付随し、それによって前記メモリ領域のどれかがオーバラップしても、より高い優先度を持つオーバラップ・メモリ領域に付随する領域記述子が用いられ、書き込み制御レジスタの前記フィールドの書き込み制限データが、最も高い優先度のメモリ領域に付随する領域記述子から始まる読出し専用である複数の領域記述子を指定する。従って、そのような実施の形態では、最も高い優先度のメモリ領域に付随する複数の領域記述子が読出し専用であることを書き込み制御レジスタのフィールドに指定することができ、残りの領域記述子は、例えば、予め決められた特権モード又は複数のセキュリティ・ドメインを採用するシステムの保護されたドメインで予め決められた特権モードで実行されるソフトウエア・ルーチンのような信頼できるソフトウエア・ルーチンによって読み出しおよび書き込みの両方が可能である。
【００２２】
１つの実施の形態で、データ処理装置は、複数のドメインを含み、その中で、データ処理装置のデバイスが動作できるようになっており、前記ドメインは、少なくとも保護されたドメインと無保護のドメインとを有し、前記保護されたドメインでは、保護されないドメインでアクセスできない保護されたデータへのアクセスを前記デバイスが有し、前記システム制御レジスタ・セット・ルーチンは、前記保護されたドメインで動作するとき、処理論理によって実行される保護されたルーチンである。
【００２３】
１つのそのような実施の形態で、どちらのドメインで処理論理が動作していても、処理論理は、複数の動作モードを有し、前記システム制御レジスタ・セット・ルーチンは、前記保護されたドメインで予め決められた特権モードで動作するとき、処理論理によって実行される保護されたルーチンである。
【００２４】
１つの実施の形態で、処理論理は、保護されたドメインでの動作と無保護のドメインでの動作との間でスイッチングするように配置できる。典型的には、そのようなスイッチング動作は、予め決められた特権動作モードで実行される予め決められたコードによって管理される。１つの特別な実施例で、そのようなコードは、モニタ・コードと呼ばれ、予め決められた動作モードは、モニタ動作モードである。しかし、別の実施の形態では、処理論理は、処理論理の動作を特別なドメインに固定する外部発信の信号を受信するようにアレンジされることによって、例えば、処理論理が保護されたドメインで動作するように固定されてもよい。そのような実施の形態では、処理論理が、例えばリセット操作の後のような特定の非常に限られた状況で、異なる別のドメインでのみ動作できることが想定されている。
【００２５】
１つの実施の形態で、ディセイブル信号を更に利用して、１又は複数のシステム・リソースを利用するやり方を直接制御する。特に、１つの実施の形態で、データ処理装置は、更に、ディセイブル信号を受信するように動作する書込み評価論理を含む。これによって、ディセイブル信号がセットされたときに、書込み評価論理は、１又は複数のシステム・リソースへの書込みアクセスをディセイブルする。従って、そのような実施の形態では、ディセイブル信号を用いて少なくとも１つの書込み制御レジスタをロック・ダウンし、それによって選ばれたシステム制御レジスタをロック・ダウンするだけでなく、それに加えて、ディセイブル信号は、１又は複数のシステム・リソースへの書込みアクセスをディセイブルするためにも用いることができる。
【００２６】
１つのそのような実施の形態で、データ処理装置は、更にディセイブル信号を受信するように動作する割込み発生論理を含み、それによってディセイブル信号がセットされ、前記１又は複数のシステム・リソースに対するアクセスが試みられたときに、割込み発生論理が割込み信号を発して、アクセス試行の存在を表示する。そのような方式によって、許可されないシステム・リソースへのアクセス試行を割込み信号の発行を介して通知することができ、それが例えば処理論理に戻されることにより、特別なシステム・リソースへの未認証のアクセス試行が存在することを処理論理に示す。
【００２７】
第２の観点から見たとき、本発明は、本発明の第１の態様に従うデータ処理装置で使用するための処理ユニットを提供する。この処理ユニットは、前記処理論理と前記少なくとも１つの書込み制御レジスタとの両方を含む。更に、いくつかの実施の形態では、１又は複数のシステム制御レジスタが処理ユニット内部に備えられる。
【００２８】
第３の観点から見たとき、本発明は、データ処理装置であって、システム制御レジスタ・セット・ルーチンを含むソフトウエア・ルーチンを実行するための処理手段、前記ソフトウエア・ルーチンの少なくともサブ・セットを実行するときに、処理手段が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶するための複数のシステム制御レジスタ手段、各フィールドが１又は複数のシステム制御レジスタ手段と関連付けられる１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタ手段、ディセイブル信号を生成するためのディセイブル制御手段を含み、ディセイブル信号がクリアのとき、システム制御レジスタ・セット・ルーチンが前記システム制御レジスタ手段にアクセス制御情報を書き込み、また前記１又は複数のフィールドの各々に対してそのフィールドに書込み制限データを選択的に供給するように動作し、またディセイブル制御手段がディセイブル信号をセットしたときは、前記少なくとも１つの書込み制御レジスタ手段が前記サブ・セットの任意のソフトウエア・ルーチンによって読出しのみ可能であり、また書込み制限データを有する各フィールドに対して関連付けられた１又は複数のシステム制御レジスタ手段が書込み制限データによって指定され、前記サブ・セットの任意のソフトウエア・ルーチンによって読出しのみ可能であるデータ処理装置を提供する。
【００２９】
第４の観点から見たとき、本発明は、ソフトウエア・ルーチンを実行するための処理論理を有するデータ処理装置において、システム制御レジスタを保護する方法を提供する。本システム制御レジスタは、前記ソフトウエア・ルーチンの少なくともサブ・セットを実行するとき、処理論理が利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶し、本方法は、各フィールドが１又は複数のシステム制御レジスタに関連付けられた１又は複数のフィールドを含む少なくとも１つの書込み制御レジスタを提供する工程、ディセイブル信号を生成する工程、ディセイブル信号がクリアのとき、前記システム制御レジスタにアクセス制御情報を書き込んで、前記１又は複数のフィールドの各々に対して、そのフィールドに書込み制限データを選択的に供給する工程を含み、ディセイブル信号がセットされたとき、前記少なくとも１つの書込み制御レジスタが前記サブ・セットの任意のソフトウエア・ルーチンによって読出しのみ可能であり、書込み制限データを有する各フィールドに対して関連付けられた１又は複数のシステム制御レジスタが書込み制限データによって指定され、前記サブ・セットの任意のソフトウエア・ルーチンによって読出しのみ可能である。
【００３０】
本発明は、添付図面に示されたそれの実施の形態を参照しながら、例を挙げて更に説明する。
【実施例】
【００３１】
図１は、本発明の１つの実施の形態に従うデータ処理装置のブロック図である。中央演算処理ユニット（ＣＰＵ）１０がバス８０に接続されて示されており、バス８０を介して、メモリ・システム６５に記憶されたデータ値（命令又はデータ）にアクセスできる。明らかに、メモリ・システム６５は、１又は複数の階層レベルを有するメモリとして構成され、実際に１又は複数のシステム・キャッシュを含む。典型的には、その他の周辺装置（分かり易くするために、それらを図１に示してない）もまた、バス８０に接続されて、ＣＰＵ１０がそのような周辺装置と交信することが可能となっている。バス８０に接続されたメモリ６５および任意のその他の周辺装置は、ソフトウエアをＣＰＵ１０の上で実行するときに、ＣＰＵ１０が利用可能な複数のシステム・リソースを集合として提供する。
【００３２】
ＣＰＵ１０は、多様なソフトウエア・ルーチンを実行できる１つのプロセッサ・コア２０を有する。プロセッサ・コア２０がバス８０に接続されたメモリ６５又は任意の周辺装置のいずれかのデータ値にアクセスしようとするとき、そのプロセッサ・コアは、アクセス要求を発して、１つまたは複数のデータ値に対するアドレス、そのアクセス要求の対象を指定し、このアクセス要求がアクセス制御論理４０によって受信される。アクセス制御論理４０は、プロセッサ・コアがそれの現在の動作状態で指定アドレスへのアクセスを許される否かを判断し、その判断を行う間にシステム制御レジスタ３５の内容にアクセスするようにアレンジされる。システム制御レジスタ３５は、プロセッサ・コアが利用可能な複数のシステム・リソースに関するアクセス制御情報を記憶するために用いられる。メモリ６５について考えると、これは、典型的な場合、複数のメモリ領域に分割されて、各々のメモリ領域に対してシステム制御レジスタが領域記述子を直接指定するか、あるいは、それらの領域記述子を与えるメモリ中のページ・テーブルへのポインタを与える。特別なメモリ領域に関する領域記述子は、典型的な場合、１又は複数の領域属性を与え、それらは、例えば、その領域へのアクセスがキャッシュを利用できるか、バッファを利用できるか等について指定しており、またそれに加えて、例えば、プロセッサ・コアが予め決められた動作モードにあるとき、問題の領域がアクセスのみ可能であるか否か、およびもしアクセス可能であれば、読出しおよび書込みが許可されるか否か、あるいは、読出しアクセスのみが許可されるか否か等の１又は複数のアクセス許可を指定するのが普通である。
【００３３】
アクセス要求を発するときにＣＰＵが仮想アドレスを採用するシステムでは、アクセス制御論理４０は、典型的な場合、メモリ管理ユニット（ＭＭＵ）の形を取り、関連するシステム制御レジスタ３５は、先に述べた領域記述子を含むページ・テーブルを指定し、更に各領域に関する仮想から物理へのアドレス・マッピングを指定する。ＭＭＵが次にアクセスを実行できることを決定すると仮定すると、それは、アクセス要求の発行に先立って仮想から物理への必要なアドレス変換を実行することができ、更に、アクセス要求と一緒にバス上を送られる必要のある任意の関連する領域属性又はアクセス許可を発行することもできる。
【００３４】
それと異なりＣＰＵ１０が先頭からの物理アドレスを採用する場合は、アクセス制御論理４０は、典型的な場合、仮想から物理へのアドレス変換を実行する必要のないメモリ保護ユニット（ＭＰＵ）の形を取ってもよい。そのような実施の形態では、システム制御レジスタの或るものが、ＭＰＵにアクセス実行できるか否かを判断させるために必要な領域記述子情報を直接提供する場合がしばしばある。
【００３５】
これも図１に示されているように、ＣＰＵ１０は、レベル１キャッシュ４５を採用することができる。これは、命令とデータを統合したキャッシュであるか、又は命令とデータが別々に分かれたキャッシュとして構成できる。典型的には、キャッシュを利用するアクセス要求に対して、アクセス制御論理４０は、アクセス要求をバス８０上に送る前に、レベル１キャッシュ４５でルック・アップ手続きを実行させる。もしレベル１キャッシュ４０がアクセス要求の対象である１又は複数のデータ値を含んでいれば、アクセス要求をバス８０上に送出する必要なしに、レベル１キャッシュ４５を参照しながらアクセスが進行する。もしアクセス要求で指定されたアドレスがメモリのライト・バック領域に関するものであれば、同時にメモリ６５で更新を実行することなしに、レベル１キャッシュで更新を実行させることができる。他方、もしアドレスがライト・スルー領域に関するものであれば、典型的には、レベル１キャッシュ４５で更新が行われ、同時にアクセス要求がバス８０を介してメモリ６５にも送られてメモリ中での更新を引き起こす。
【００３６】
更に、ＣＰＵ１０は、メモリ・マップの一定領域を占有する密結合メモリ（ＴＣＭ；Ｔｉｇｈｔｌｙ  Ｃｏｕｐｌｅｄ  Ｄｅｖｉｃｅ）５０を含む。もしアクセス要求のアドレスがメモリのＴＣＭ領域内のアドレスに対応していれば、アクセスは、外部バス８０に伝搬するよりもむしろＴＣＭ５０を参照しながら進行する。ＴＣＭは、ＣＰＵ１０に特有のコードおよびデータの特定の重要な部分を記憶するために用いることができ、そのコードおよびデータにアクセスする迅速な機構を提供する。
【００３７】
システム制御レジスタ３５の内容は、ＣＰＵ１０が利用可能な各種のシステム・リソースに関するアクセス制御情報を記憶するので、それらのシステム制御レジスタの内容がプロセッサ・コア２０上で実行される信頼できるソフトウエアによってのみ更新できることが重要である。しかし、システム制御レジスタへのアクセス権を規制して、特定の特権動作モードで実行されるコードによってのみそれらが書込み可能となるようにできる一方で、そのコードが何らかの形で改ざんされてシステム制御レジスタの内容が変更され、それによって特定のデータに対する無許可のアクセスが許容されるのでは、ないかという疑いが残る。
【００３８】
これを回避する１つの可能な方法は、システム制御レジスタ又はそれらレジスタの重要であると考えられる少なくともサブ・セットを、一定の時間後、例えばブート・プロセスの後で読出し専用とするものである。これによってシステム制御レジスタのセキュリティを保護できる一方で、システム制御レジスタのそのサブ・セットを予め決めなければならないので、柔軟性が失われることになる。
【００３９】
先に議論したように、オペレーティング・システムのセキュリティに対する信頼の緩和に努める目的で、例えば、先の同時係属出願の米国特許出願第１０／７１４，５６１号に述べたような、データ処理装置に分離式ドメインを採用したシステムを提供することが知られている。それに従って、保護されたドメインが確立され、ハードウエアで強化された境界によって他の実行空間から分離された信頼できる実行空間が提供される。そのような環境において、システム制御レジスタは、典型的には、保護されたドメインに適用可能な１組のシステム制御レジスタと、無保護のドメインに適用可能な別の組のシステム制御レジスタとを提供するようにバンク構築される。従って、ＣＰＵ１０は、保護されたドメインから無保護のドメインに移行するための制御された機構を備え、それは、例えば、モニタ動作モードで実行されるモニタ・コードによって行われる。そのようなプロセスについては、先に述べた米国特許出願に詳しく説明されている。従って、無保護のドメインで実行されているどのソフトウエアも、保護されたドメインに関連付けられたシステム制御レジスタに物理的にアクセスできない。これによって保護されたシステム制御レジスタを無保護のドメインで実行される無保護のコードからの攻撃から防御できる一方で、保護されたドメインで実行されるソフトウエアに対するソフトウエア攻撃の可能性、およびそれが保護されたシステム制御レジスタの無許可での操作につながる可能性があることについて配慮しておくことが必要である。このことに留意しながら、システム制御レジスタの予め決められたサブ・セットを読出し専用レジスタとしてロック・ダウンするために、ディセイブル信号をＣＰＵ１０に入力させることが知られている。しかし、ここでも、これには、先に述べた柔軟性の問題が付きまとい、制限された使用モデルの組しか提供されない。
【００４０】
システム制御レジスタをどのように保護するかに関して柔軟性の改善に努めることを目的として、図１に示された本発明の実施の形態は、書込み制御レジスタ３０と呼ぶ付加的レジスタ（実際は、これは、１又は複数のレジスタである）を提供する。次にＣＰＵ１０の外部にあるディセイブル制御論理６０を使用して、ディセイブル信号を発生させ、それを書込み制御レジスタ３０および書込み制御論理２５に送る。ディセイブル信号がクリアのとき、プロセッサ・コア２０は、基本的に各々の更新要求を解読してどのレジスタに書込みを行うかを決めるために、書込み制御論理２５を通して書込み制御レジスタ３０およびシステム制御レジスタ３５の両方をプログラムできる。
【００４１】
書込み制御レジスタ３０は、複数のフィールドを提供し、各フィールドには、予め決められた１又は複数のシステム制御レジスタ３５が関連付けられる。プロセッサ・コア２０は、書込み制御レジスタ３０のフィールドの各々に書込み制限データを書き込んで、ディセイブル信号がセットされたときに関連するシステム制御レジスタが読出しおよび書込み可能であるべきか否か、あるいは、その時点で読出し専用であるべきか否かを指定する。ディセイブル制御論理６０がディセイブル・フラグをセットすると、書込み制御レジスタ３０が読出し専用となって、そのため書込み制御論理２５は、プロセッサ・コア２０上で実行されるソフトウエアによる書込み制御レジスタ３０へのそれ以降の更新試行を阻止する。更に、書込み制御レジスタ３０の内容を書込み制御レジスタ２５が利用可能なものとするので、その後にプロセッサ・コア２０がシステム制御レジスタ３５の１つを更新しようとすると、書込み制御論理２５は、書込み制御レジスタ３０を参照しながら、そのレジスタがまだ書込み可能であるか否か、あるいは、その代わり、読出し専用のシステム制御レジスタとしてロック・ダウンされているか否かを判定することができる。書込み実行が許可された場合、システム制御レジスタを更新できるが、書込み制御レジスタ３０がシステム制御レジスタが今や読出し専用であることを示す場合、書込み制御論理２５は、プロセッサ・コア２０にアボート信号を発行するようにアレンジされる。
【００４２】
１つの実施の形態で、システム制御レジスタ３５のうちすべてが書込み制御レジスタ３０のフィールドに関連付けられるわけではない。従って、システム制御レジスタの或るものは、ディセイブル信号がセットされたときも常に単なる読出し専用となるようにアレンジされ、あるいは、事実、ディセイブル・フラグの設定の如何に関わらず、或るものは、常に読出しおよび書込み可能であるようにアレンジされる。しかし、明らかなように、書込み制御レジスタ３０のフィールドと関連付けられた任意のシステム制御レジスタに関して、ディセイブル・フラグがセットされたときに、それらのレジスタを読出し専用とすべきか否か、あるいは、読出しおよび書込み可能に留めるべきか否かに関する選択は、プロセッサ・コア２０上で実行される適切な信頼できるソフトウエアによってディセイブル・フラグがクリアな間に、書込み制御レジスタ３０のフィールドを適正にプログラミングすることによってプログラムできる。このことから、個別的システム制御レジスタへのアクセスをどのように管理するかに関して大きい柔軟性が与えられる。
【００４３】
図１に示すように、特定の環境下においてＣＰＵ１０にリセット信号を発行でき、および／又はディセイブル制御論理６０にリセット信号を発行できるシステム・コントローラ５５が設けられる。システム・コントローラ５５は、ＣＰＵ１０からバス８０を経由してディセイブル制御論理６０をリセットする要求を受信することもでき、また後に述べるように、そのような環境で、ＣＰＵからのその要求が適正なものであるか否か、従ってディセイブル制御論理をリセットすべきか否かを判断するための認証技術を適用するようにアレンジされる。
【００４４】
ディセイブル制御論理６０をリセットすると、ディセイブル制御論理６０は、クリアなディセイブル信号を発行することによって、書込み制御レジスタ３０およびシステム制御レジスタ３５の両方への書込みアクセスを許可するようにアレンジされる。後続の或る時点で、システム・コントローラ又はＣＰＵ１０は、ディセイブル制御論理６０への経路５９上に信号を発行して、ディセイブル制御論理６０に、セットされるディセイブル信号を発行させ、それによって書込み制御レジスタ３０および書込み制御レジスタ３０に読出し専用として指定された任意のシステム制御レジスタの内容をロック・ダウンできる。
【００４５】
１つの実施の形態で、書込み制御レジスタ３０およびシステム制御レジスタ３５は、初期にブート・プロセスの一部としてプロセッサ・コア２０上で実行される保護されたシステム制御レジスタ・セット・ソフトウエアによって書き込まれ、ブート・プロセスの間に、ディセイブル制御論理６０は、クリアなディセイブル信号を発行して、この書込みの実行を許可するようにアレンジされている。１つの実施の形態で、ブート・プロセスの間に、システム・コントローラ５５がタイマを始動させ、タイマの時間切れの後、システム・コントローラ５５は、経路５９上にディセイブル制御論理への信号を発行して、ディセイブル制御論理にセットのディセイブル信号を発行させるようにアレンジされる。あるいは、ブート・プロセスの間にプロセッサ・コア２０上で実行されるソフトウエアは、バス８０および経路５９を介してディセイブル制御論理６０に信号を発行し、書込み制御レジスタ３０およびシステム制御レジスタ３５への書込みが完了したときに、セットであるディセイブル信号を発行するようにアレンジされる。タイマの技術は、またそのようなやり方と組み合わせることによって、どこかの時点でブート・プロセスが失敗しても、タイマが時間切れになることによってディセイブル信号をセットさせることができる。あるいは、ディセイブル制御論理６０は、ディセイブル信号をセットするために使用される外部オフ・チップからの信号を受信するようにアレンジされてもよい。
【００４６】
後にハード・リセット・プロセスが呼び出されると、システム・コントローラ５５は、典型的には、ＣＰＵ１０にリセット信号を発行し、またディセイブル制御論理６０にリセット信号を発行して、リセット信号がディセイブル制御論理６０によって受信されることによってディセイブル信号がクリアされる。同様に、プロセッサ・コア２０上のソフトウエアによってソフト・リセット手続きが開始されると、これは、システム・コントローラ５５にＣＰＵ１０へのリセット信号を発行させ、またオプションとして、システム・コントローラ５５にディセイブル制御論理６０へのリセット信号を発行させる。
【００４７】
別の代替例として、プロセッサ・コア２０上で実行される保護されたソフトウエアは、システム・コントローラ５５に対して要求を発行して、ディセイブル信号のクリアを要求してもよい。そのような場合において、システム・コントローラは、ＣＰＵ１０からの要求が正当なものであることを認証しようとする認証論理として振舞う。これを行うために、システム・コントローラは、ＣＰＵ１０から経路５７を経て認証情報を受信するようにアレンジされ、この認証情報は、例えば、ＣＰＵ１０の活動を表示するトレース・データの形を取ってもよい。あるいは、又はこれに加えて、システム・コントローラ５５は、ディセイブル・フラグをクリアしてもよいか否か、従って、リセット信号をディセイブル制御論理６０に発行すべきか否かを決定するために、暗号化プロセスを実行できる。ＣＰＵ１０上で実行されるソフトウエアがシステム制御レジスタ３５の内容を変更しようとする正当な理由の一例は、システム制御レジスタの内容のいくつかを更新する必要のある何らかの新しいソフトウエアがインストールされている場合である。そのような状況で、システム・コントローラは、経路５７を介して受信する認証情報から、要求が正当なものであることを判断してもよく、それに従ってディセイブル制御論理６０にリセット信号を発行する。
【００４８】
ディセイブル制御論理は、多様な形を取るようにアレンジできるが、１つの実施の形態では、スティッキー（ｓｔｉｃｋｙ）レジスタとしてアレンジされ、リセット信号に続いて論理値０を発行する。その後、もしそれが経路５９上で論理値１を受信すれば、それは、論理値１を出力してディセイブル信号のセット状態を示す。その後、もし経路５９上の値が論理ゼロに戻れば、ディセイブル制御論理からの出力は、不変で、従って、ディセイブル・フラグは、セットのままに留まる。従って、ディセイブル・フラグをクリアする唯一の方法は、システム・コントローラ５５からディセイブル制御論理６０にリセット信号を発行させることである。
【００４９】
以上の説明で、システム制御レジスタは、アクセス要求を処理するときに、アクセス制御論理４０が使用するアクセス制御情報を提供するものとして定義されているが、システム制御レジスタが、また特定のシステム・リソースに関連する付加的アクセス制御情報を含み、そのようなアクセス制御情報をピン７０を通してチップ外へ送り出し、各種のシステム・リソースの動作に影響を与えるように使用される制御信号を形成することもできる。一例として、それらの制御信号は、特別なメモリ・デバイスへの書込みアクセスをディセイブルするか、あるいは、デバッグ動作モードに適用可能な特定のアクセス特権を指定する。ここでも、セキュリティの観点から、それらのタイプのシステム制御レジスタを読出し専用レジスタとして選択的にプログラムして、ディセイブル・フラグがセットされたときに、それらのレジスタの内容を変更できなくする機構を提供することが有用である。
【００５０】
図１には、システム制御レジスタ３５が単一ブロックのレジスタとして示されているが、それは、典型的には、それらのシステム制御レジスタが物理的に一箇所に位置させないで、データ処理装置全体に広がって分散させることもできる。実際、システム制御レジスタのいくつかをＣＰＵ１０内部に備え、他のシステム制御レジスタをＣＰＵ１０の外に設けることがある。しかしそれでも、任意の特定のシステム制御レジスタの実際の物理的場所に関係なく、上述の動作が適用可能である。
【００５１】
ＣＰＵ１０が保護されたドメイン又は無保護のドメインのいずれかで動作できる実施の形態に関して、書込み制御レジスタ３０が、保護されたシステム制御レジスタに付随して設けられ、保護されたドメインで実行されるソフトウエアによる無許可の操作からそれらを保護する手助けをする。もし正しく配慮すれば、無保護のシステム制御レジスタに付随して、付加的な書込み制御レジスタを設けることもできる。そのような実施の形態において、保護されたドメインで実行される制御レジスタ・セット・ソフトウエアは、典型的な場合、無保護のドメインに適用可能な無保護の書込み制御レジスタを上書きすることが許されるが、通常は、無保護のドメインで実行される制御レジスタ・セット・ソフトウエアがその無保護の書込み制御レジスタに書き込むことを許可する。１つの実施の形態で、ＣＰＵ１０は、１つは、保護されたドメイン用、もう１つは、無保護のドメイン用として別々のディセイブル信号を備えるか、あるいは、ＣＰＵ１０は、保護されたドメインに適用可能な単一ディセイブル信号を受信して、保護されたソフトウエアがそれに従って、無保護のドメインに適用可能な内部的なディセイブル信号を生成するように（例えば、その信号を生成する保護されたドメイン中でアクセスのみ可能なレジスタに値を記憶することによって）できる。
【００５２】
１つの実施の形態で、ＣＰＵ１０は、保護されたドメイン又は無保護のドメインのいずれかで実行でき、これら２つのドメイン間を遷移するために用いられるモニタ・コードを備え、システム制御レジスタ３５のバンク構造が提供されるように述べられてきたが、別の実施の形態では、ＣＰＵ１０は、より単純なデザインで、一方のドメイン又は他方のドメインに固定されて動作する。典型的には、一旦一方のドメインに固定されると、それをリセットしない限り、他方のドメインで動作することができない。そのような実施の形態で、ＣＰＵ１０は、典型的には、単一セットのシステム制御レジスタ３５を含むのみであって、それらのシステム制御レジスタの内容は、リセット操作の間にクリアされうる。本発明の実施の形態の上述の技術は、そのようにアレンジされたＣＰＵにも同じように適用できる。これは、ＣＰＵ１０の特別な動作ドメインに対して、それが個別的システム制御レジスタへのアクセス権をプログラムするための柔軟な機構を提供するためであり、従って、ディセイブル・フラグのセットの後で、特定の制御レジスタを選んで読出し専用とすることができる。その後、書込み制御レジスタの内容が読出し専用と指定する任意のシステム制御レジスタに関して、プロセッサ・コア上で実行される任意のソフトウエア・ルーチンは、一旦ディセイブル・フラグがセットされれば、それらのシステム制御レジスタの内容を変更できなくなり、それによってそれらのシステム制御レジスタに対して強化されたセキュリティ・レベルが提供される。
【００５３】
ＣＰＵがどちらのドメインに固定されるかに関わりなく、書込み制御レジスタを使用できるが、１つの実施の形態で、書込み制御レジスタは、ＣＰＵを保護されたドメインに固定した場合にのみ使用できるようになっており、保護されたドメインにおいて読出し専用であるシステム制御レジスタの選択に柔軟性が与えられる。
【００５４】
図２は、本発明の１つの実施の形態に従う図１の書込み制御レジスタ２５の動作を示すフロー図である。工程２００で、システム制御レジスタの１つへのプロセッサ・コア２０からの書込みアクセス要求が書込み制御論理２５に受信される。その後、工程２０５で、ディセイブル・フラグがセットであるか否かが判断される。もしディセイブル・フラグがセットされていなければ、プロセスは、直接、工程２２５に進んで、書込みの実行が許可される。
【００５５】
しかし、もしディセイブル・フラグがセットされていれば、プロセスは、工程２１０に進み、そこでアクセスされようとするシステム制御レジスタが書込みディセイブルに固定されたレジスタであるか否か（すなわち、書込み制御レジスタ３０の内容によってプログラムされたアクセス権を有したレジスタでないこと）が判断される。もしシステム制御レジスタが書込みディセイブルとして固定されたものであれば、プロセスは、直接、工程２３０に進んで、書込み制御論理２５は、プロセッサ・コア２０にアボートを発行する。
【００５６】
しかし、システム制御レジスタが書込みディセイブルとして固定されていなければ、工程２１５において、書込み制御論理２５は、書込み制御レジスタの関連するフィールドにアクセスして、問題のシステム制御レジスタが読出し専用としてマークされているか否かを判断するために書込み制御レジスタ３０内でルック・アップを実行する。次に工程２２０で、書込み制御レジスタ３０の関連エントリを参照しながら、書込みアクセスが許可されているか否かが判断されて、もしそうであれば、プロセスは、工程２２５に進み、書込みアクセスが実行されるが、そうでなければ、プロセスは、工程２３０に進んで、プロセッサ・コア２０にアボートが発行される。
【００５７】
図３Ａおよび３Ｂは、書込み制御レジスタ３０のフィールド使用を通して得られた柔軟性を示す図である。この特別な例で、特定のフィールドが特定のシステム制御レジスタにマッピングされ、他のフィールドは、システム制御レジスタの別のグループ群にマッピングされる。この例示的実施の形態で、書込み制御レジスタの各フィールドに書き込まれた書込み制限データは、単一ビット・フィールドを含み、論理値０は、ディセイブル・フラグがセットされているとき、関連付けられた（１つ又は複数の）システム制御レジスタが読出しおよび書込み可能であることを示し、他方、論理値１は、一旦ディセイブル信号がセットされていれば、関連付けられた（１つ又は複数の）システム制御レジスタが読出し専用であることを示す。
【００５８】
図３Ａは、書込み制御レジスタの各フィールドと、関連するシステム制御レジスタ３５との間のマッピング例を示し、また図３Ｂは、ディセイブル信号のセットの後で、システム制御レジスタ３５のアクセス可能性に関して、図３Ａに示された書込み制御レジスタ３０の特別なプログラミング・シーケンスがどのような効果を及ぼすかを示す表である。特に、書込み制御レジスタのフィールド１に書き込まれた論理値１は、システム制御レジスタ０、１および３への書込みアクセスをディセイブルし、他方、同様に、書込み制御レジスタ３０のフィールド２に書き込まれた論理値１は、システム制御レジスタ２、３および７への書込みアクセスをディセイブルすることが分かる。更に、書込み制御レジスタ３０のフィールド４に書き込まれた論理値１は、システム制御レジスタ９への書込みアクセスをディセイブルする。マッピングには、オーバラップが許されることに注目されたい。従って、例えば、フィールド０は、システム制御レジスタ０と関連付けられ、フィールド１もシステム制御レジスタ０と関連付けられている。そのような状況で、書込み制御レジスタの関連するフィールドの値に対して、関連するシステム制御レジスタが読出し専用であるか否かを判断するために、論理ＯＲ演算が実行される。例えば、システム制御レジスタ０を取り上げると、フィールド０が制御レジスタが読出しおよび書込み可能であるべきことを示しているものの、フィールド１がそれが読出し専用であるべきことを指示している事実は、ディセイブル信号のセットの後、システム制御レジスタ０が読出し専用となることを保証する。
【００５９】
図３Ａに示された書込み制御レジスタ３０の特別なプログラミング例の結果として、図３Ｂから分かるように、ディセイブル信号がセットされた後は、システム制御レジスタ４、５、６および８のみが読出しおよび書込み可能となる。先に述べたように、システム制御レジスタのすべてを書込み制御レジスタのフィールドにマッピングする必要はない。従って、ディセイブル・フラグがセットされても常に読出し専用である付加的システム制御レジスタが存在し、実際、ディセイブル・フラグがセットされるか否かに関わりなく、常に読出しおよび書込み可能なその他のシステム制御レジスタも存在してもよい。
【００６０】
図３Ａおよび３Ｂには、書込み制御レジスタ３０が６つのフィールド有するように示されているが、任意の特定の実施の形態における実際のフィールド個数は、自由に選ぶことができる。
【００６１】
図４は、図１の書込み制御レジスタの特別な例示的実施の形態を示す。この特別な例示的実施の形態で、ＣＰＵ１０は、保護されたドメイン又は無保護のドメインのいずれかに固定されて動作するため、１組のシステム制御レジスタを含むＣＰＵであることが想定されている。更に、この実施の形態で、ＣＰＵ１０は、物理アドレスを使用し、従って、アクセス制御論理４０がＭＰＵの形を取り、システム制御レジスタ３５の或るものは、特別なアドレス範囲に関する領域属性およびアクセス許可を与える領域記述子を提供する。従って、システム制御レジスタ３５は、複数の領域記述子レジスタを含み、それは、各領域について、アドレス値、サイズ値、領域属性およびアクセス許可を指定する。アドレスおよびサイズ値は、一緒に１つのメモリ領域を指定する。典型的には、１つの領域記述子を定義するアドレス値、サイズ値、領域属性およびアクセス許可は、２つ以上のシステム制御レジスタの内容によって与えられる。この実施の形態の書込み制御レジスタ３０は、書込み可能でない記述子レジスタ３１０の形を取り、これは、ディセイブル・フラグのセットの後で、読出し専用となる領域記述子の数を指定する値Ｍでプログラムされる。
【００６２】
この実施の形態に従えば、図４に領域記述子３００の左側に数字０から５で示すように、領域記述子の各々に優先順位が付随する。最も大きい数字を有する領域記述子が最も高い優先度を持つとされる。各領域に対して優先順位を割り当てることによって、それらが重なり合うように領域を定義することができる。例えば、優先順位５を持つ領域記述子に付随する領域は、優先順位３を持つ領域記述子に付随する領域と少なくとも部分的に重なり合う。重畳範囲内に含まれる任意のアドレスに対しては、最も高い優先度を持つ領域記述子の領域属性およびアクセス許可が適用される（すなわち、この例では、優先順位５を持つ領域記述子によって与えられる）。典型的に、より高い優先度の一定個数の領域記述子は、特に安全性が高く、従って、すべての領域記述子を読出し専用とすることが必要であると考えないが、典型的には、読出し専用とマークされた、より高い優先度の領域記述子を少なくとも一定個数有することが適当であるとされる。
【００６３】
このことから、この実施の形態に従えば、領域記述子の合計数がＮであれば、ディセイブル信号がセットされたときに、書込み制御論理２５は、書込み可能でない記述子レジスタ３１０の内容にアクセスして、レジスタＮ−１からＮ−Ｍが読出し専用で、レジスタＮ−Ｍ−１から０が読出しおよび書込み可能であることを判定する。先に述べたように、各領域記述子を１つのレジスタだけに記憶させる必要はなく、従って、レジスタＮ−１からＮ−Ｍ又はレジスタＮ−Ｍ−１から０を参照するとき、それは、実際には、領域記述子Ｎ−１からＮ−Ｍ又は領域記述子Ｎ−Ｍ−１から０をそれぞれ指定するために必要な任意のレジスタへの参照である。従って、プロセッサ・コア２０によって領域記述子レジスタの１つへ書込みアクセスが発行されれば、書込み制御論理２５は、問題の領域記述子レジスタが読出し専用のものであるか否か、あるいは、読出し／書込み可能であるか否かを判断して、問題の領域記述子レジスタが読出し／書込み可能である場合にのみ、アクセス実行を許可する。そうでない場合、書込み制御論理２５がプロセッサ・コア２０にアボート信号を発行する。
【００６４】
ＣＰＵ１０が無保護のドメインに固定されようと、保護されたドメインに固定されようとそれに関わりなく書込み可能でない記述子レジスタ３１０を使用できることは、理解されようが、１つの実施の形態では、書込み可能でない記述子レジスタ３１０は、ＣＰＵ１０が保護されたドメインに固定されている場合にのみ使用されること、従ってプロセッサ・コア２０が保護されたドメインで保護されたアプリケーションを実行するときに、システム制御レジスタへのアクセスを制御するためにだけ使用されることが想定されている。
【００６５】
図５は、本発明の第２の実施の形態に従うデータ処理装置のブロック図である。ＣＰＵ４００は、図１に関して先に説明したＣＰＵ１０と同じようにアレンジされており、この実施の形態に従えば、保護されたドメイン又は無保護のドメインのいずれかで動作できるようにアレンジされている。図５のＣＰＵ４００は、仮想アドレスを使用することが想定されており、従って、各メモリ領域に対してその領域に適用できるアドレス変換、領域属性およびアクセス許可を指定するページ・テーブル・エントリがメモリ中に提供される。ＣＰＵ４００は、バス４０５を介して２つのメモリ・デバイス、すなわち、保護されたＲＡＭ４３０および保護されたＲＡＭ４２０に接続される。保護されたＲＡＭ４２０は、要素４２５で示すようなメモリ・マップを有し、コードを記憶するようにアレンジされている。ページ・テーブル、モニタ・ベクトルおよび保護されたベクトルの場所を指定するシステム制御レジスタは、ＣＰＵ４００中の書込み制御レジスタを介して読出し専用とマークされる。保護されたベクトルおよびモニタ・ベクトルは、割込みなどの例外を処理するコードのアドレスを定義する。
【００６６】
ＣＰＵによって得られるページ・テーブル・エントリは、保護されたＲＡＭ４２０に付随するメモリ・マップのその部分を読出し専用と指定し（ページ・テーブル・エントリそれ自身も含み）、保護されたＲＡＭ４３０に付随するその部分を読出し／書込み可能と指定する。
【００６７】
保護されたＲＡＭ４３０中のメモリ・マップは、要素４３５で示されており、またＣＰＵ４００の保護されたドメインでコードを実行するときに参照される各種のスタックおよびヒープを含む。それらのメモリ領域に対する関連のページ・テーブル・エントリは、それらを読出し／書込み可能とマークする。
【００６８】
ディセイブル信号がセットされたときに、各種システム制御レジスタを読出し専用としてセットするために書込み制御レジスタを使用することは、ページ・テーブルの場所を変更できないことを保証するので、ページ・テーブル自身は、読出し専用としてマークされ、メモリ・マップ４２５のその部分に対する関連のページ・テーブル・エントリは、その部分を読出し専用とマークし、そのため、論理上、ＣＰＵ４００が、保護されたＲＡＭ４２０の内容を変更することはできない。しかし、ページ・テーブルを参照せずに保護されたＲＡＭ４２０にアクセスできるＤＭＡなどその他のバス・マスタは、保護されたＲＡＭ４２０に書込みアクセスしようとしてもよい。加えて、ＣＰＵ４００上の保護されたドメインで実行される無許可又は不正なソフトウエアが、ハードウエアおよび／又はソフトウエアの抜け穴を利用して、保護されたＲＡＭ４２０のアドレスに書込みを行おうとする可能性が残る。保護されたドメインで実行中にＣＰＵ４００又は別のバス・マスタが発行したアクセス要求は、バス４０５を経由してデコーダ４７０に送られる間でもよく、デコーダ４７０は、アドレスに依存して、保護されたＲＡＭ４３０又は保護されたＲＡＭ４２０のいずれかにイネーブル選択信号を発行する。保護されたＲＡＭ４３０への書込みアクセスは、許可されるはずであるが、保護されたＲＡＭ４２０中のコードは、読出し専用とされるはずであり、従って更なるセキュリティ手段として、或る状況では、それに対する書込みアクセスが試行されても、ＲＡＭ４２０がイネーブルされるのを阻止することが望ましい。
【００６９】
本発明の１つの実施の形態に従えば、このことは、ディセイブル制御論理によって生成されたディセイブル信号を再利用することによって実現される。ディセイブル制御論理は、図５の要素４６０、４６５で示されている。明らかなように、初期にロック信号がリセットに続いて論理値０を取って、ロック信号がＯＲゲート４６５への１つの入力として与えられる場合、これは、レジスタ４６０からの出力を論理値０、すなわちクリアなディセイブル信号とする。図１に関する先の説明から、このことは、ＣＰＵ内の書込み制御レジスタおよびシステム制御レジスタに対してＣＰＵ４００上で実行される保護されたソフトウエアが書込みを行うことを許可する。それに続いて、ＯＲゲート４６５に論理値１を有するロック信号を発行することによってディセイブル信号がセットされる。その後、レジスタ４６０の出力からＯＲゲート４６５の他の入力へのフィードバック・ループにより、ロック信号がその後に論理値０に戻った場合でも、レジスタ４６０からの出力は、リセット信号が発行される時点まで論理値１に留まる。先に述べたように、このリセット信号は、リセットのための任意の要求を検証するために、システム・コントローラ５５によって発行される。システム・コントローラ５５は何らかの暗号化プロセスを採用してもよい。
【００７０】
図５から分かるように、ディセイブル信号は、ＡＮＤゲート４４５およびＮＡＮＤゲート４４０の両方に１つの入力として送られる。両ゲート４４５および４４０の他の入力は、読出し又は非書込み信号の反転の形式によって形成され、ここで、読出し又は書込み信号は、それぞれ読出し又は書込みのアクセス要求が発行されるときに、論理値１を取る。ＮＡＮＤゲート４４０について考えると、もし読出し要求が発行されれば、ＮＡＮＤゲートの入力における読出し信号の反転は、ディセイブル信号がセットされていても、ＮＡＮＤゲートからの出力が論理値１を取ることを保証し、その結果、もしデコーダがＡＮＤゲート４５０にセット選択信号を発行しても、このイネーブル信号が、保護されたＲＡＭ４２０に送られて、読出しの実行を許可することが分かる。
【００７１】
しかし、もし書込みアクセス要求が行われれば、ＮＡＮＤゲート４４０への入力におけるインバータは、ＮＡＮＤゲートへのその入力が論理値１であることを保証する。従って、もし同時にディセイブル信号がセットされれば、ＮＡＮＤゲートへの両入力が論理値１となり、そのため、ＮＡＮＤゲート４４０から論理値０が出力され、それによって、デコーダ４７０によって生成されるイネーブル信号に関係なく、ＡＮＤゲート４５０から論理値０が出力される。従って、この機構によって、ＮＡＮＤゲート４４０およびＡＮＤゲート４５０で構成される書込み評価論理は、ディセイブル信号がセットされているときの保護されたＲＡＭ４２０への書込みアクセスを阻止し、そのため、ＲＡＭ４２０は、「保証付きの」保護されたＲＡＭとなると考えられる。従って、これにより、ＲＡＭ４２０のセキュリティ・レベルが１段向上する。
【００７２】
本発明の１つの実施の形態に従えば、ＣＰＵ４００に割込みを発行するための汎用割込みコントローラ４１０が提供される。本発明のこの実施の形態に従えば、保証付きの保護されたＲＡＭ４２０に対して無許可の書込みアクセスが試みられた場合に、汎用割込みコントローラ４１０への書込みエラー割込みを生成するためのＡＮＤゲート４４５およびＡＮＤゲート４５５の形の割込み発生論理が提供される。特に、ＡＮＤゲート４４５について考えると、明らかなように、書込みアクセス要求が発行されるとき、もし同時にディセイブル信号がセットされていれば、ＡＮＤゲート４４５から論理値１が出力されることになるし、もし同時にデコーダ４７０が保証付きの保護されたＲＡＭ４２０に付随するイネーブル信号を発行すれば、これは、ＡＮＤゲート４５５に汎用割込みコントローラ４１０への論理１の信号をアサートさせる。この信号は、書込みエラー割込み信号である。次に、汎用割込みコントローラは、この割込みをＣＰＵ４００に転送して、そのような書込みエラーの発生時に考えられる適切な何らかの行動、例えば、情報の記録、ＣＰＵ４００のリブート又は危険防止動作モードの実行（典型的には、機能の縮小を伴う）を取るために適当な例外処理ルーチンを実行させる。
【００７３】
本発明の実施の形態についての上の説明から明らかなように、書込み制御レジスタを備えることによって、特別なシステム制御レジスタへのアクセス権をプログラムする上で大きい柔軟性が与えられる。一旦ディセイブル信号がセットされれば、一定のシステム制御レジスタを読出し専用とするように選ぶことによって、またディセイブル信号がセットされているときに、書込み制御レジスタも読出し専用とすることによって、これは、セキュリティ・レベルを強化することができ、特に、特定の重要なシステム制御レジスタが悪意のある攻撃によって変更されるのを回避できる。システム制御レジスタが特定のシステム・リソースに関するアクセス制御情報を含んでいるので、このことは、システム・リソースが不正にアクセスされることを防止する。このことから、プロセッサ・コア上で実行される悪意のある一片のコードが、アクセス制御論理４０がその悪意のあるコードによって重要なシステム・リソースにアクセスするのを許容し得るやり方でシステム制御レジスタの内容を変更することはできない。図５に関して上で議論したように、本発明の更に１つの強化された実施の形態に従えば、何らかの機構によって悪意のあるコードが関連するシステム制御レジスタに記憶されたアクセス許可と提携することができるとしても（例えば、理論的にシステム・リソースへのアクセスを許可する特別な特権モードで実行することによって）、保護されたＲＡＭ４２０と関連付けて図５に示した機構を使用することによって、そのような敏感なシステム・リソースへの書込みアクセスが防止される。
【００７４】
従来技術の方式に従って、システム制御レジスタの一定の固定された組のみを読出し専用として固定できるが、書込み制御レジスタ３０を使用することによってプロセスに対する不正手段の１つの基準が導入される。それは、プログラマに対してどの特別なシステム制御レジスタを読出し専用とすべきかに関して非常に大きい柔軟性を与える。
【００７５】
１つの実施の形態で、ＣＰＵ１０内に書込み制御レジスタ３０を提供する代わりに、そのような書込み制御レジスタをＣＰＵ１０の外に設けて、その書込み制御レジスタの内容を用いて、ＣＰＵ１０の端において適切な制御ピンを駆動することもできる。
【００７６】
本発明の実施の形態の書込み制御レジスタ３０を使用することを通して、そのハードウエア・レジスタの使用は、プロセッサ・コア上で実行されるソフトウエアおよびプログラマのリスクに対する考え方と組み合わされて、特別な実施のためにシステム制御レジスタの正確にどの組合せを読出し専用としてロック・ダウンすべきかを決定することができ、それによって大きい柔軟性が与えられる。特に、そのような機構は、任意のデフォルトのロック・ダウン機構を緩めたり、きつくしたりできる（例えば、典型的には、常に読出し専用としてロック・ダウンされているシステム制御レジスタが予め決められた個数存在するのが普通である）。
【００７７】
図４を参照しながら先に述べた特別な実施の形態について考えると、本発明のその好適な実施の形態の機構は、一定の優先度の高いメモリ領域記述子だけを読出し専用としてロックすることをイネーブルする。ロックされるメモリ領域記述子の正確な個数は、書込み可能でない記述子レジスタ３１０に記憶された値に依存する。
【００７８】
更に、上述の実施の形態が特定の状態下でディセイブル制御論理６０のリセット機構を提供するとすれば、そのような実施の形態は、システム制御レジスタのどれをロックするかについて暫定的な構成を容易にし、それによってリソース・ロックの細かい精度を持つ動的な認証モデルを許容する。
【００７９】
特別な実施の形態についてここに説明してきたが、本発明は、それに限られず、またそれに対する多くの修正および追加を行うことが発明の範囲内で可能であることが理解されよう。例えば、本発明の範囲から外れることなく、独立項の特徴を備えた後続の特許請求の範囲の特徴の各種組合せを実現できる。
【図面の簡単な説明】
【００８０】
【図１】本発明の１つの実施の形態に従うデータ処理装置のブロック図。
【図２】本発明の１つの実施の形態に従う図１の書込み制御論理の動作を示すフロー図。
【図３Ａ】本発明の１つの実施の形態に従う個別的システム制御レジスタへの書込みアクセスの許可を、図１の書込み制御レジスタの内容によってどのように判断されるかを示す図。
【図３Ｂ】本発明の１つの実施の形態に従う個別的システム制御レジスタへの書込みアクセスの許可を、図１の書込み制御レジスタの内容によってどのように判断されるかを示す図。
【図４】本発明の１つの実施の形態に従う書込み制御レジスタおよびシステム制御レジスタの特別な実施例を示す模式図。
【図５】本発明の別の１つの実施の形態に従うデータ処理装置のブロック図。
【符号の説明】
【００８１】
１〜９  システム制御レジスタ
１０  ＣＰＵ
２０  プロセッサ・コア
２５  書込み制御論理
３０  書込み制御レジスタ
３５  システム制御レジスタ
４０  アクセス制御論理
４５  レベル１キャッシュ
５０  ＴＣＭ
５５  システム・コントローラ
５７  経路
５９  経路
６０  ディセイブル制御論理
６５  メモリ・システム
７０  ピン
８０  バス
３００  領域記述子
３１０  書込み可能でない記述子レジスタ
４００  ＣＰＵ
４０５  バス
４１０  割込みコントローラ
４２０  ＲＡＭ
４２５  メモリ・マップ
４３０  ＲＡＭ
４３５  メモリ・マップ
４４０  ＮＡＮＤゲート
４４５  ＡＮＤゲート
４５０  ＡＮＤゲート
４５５  ＡＮＤゲート
４６０  レジスタ
４６５  ＯＲゲート
４７０  デコーダ
【図１】
2008047129.tif 000003
【図２】
2008047129.tif 000004
【図３Ａ】
2008047129.tif 000005
【図３Ｂ】
2008047129.tif 000006
【図４】
2008047129.tif 000007
【図５】
2008047129.tif 000008