(57)【特許請求の範囲】
【請求項１】
マイクロプロセッサによって実行可能なプログラムに、マイクロプロセッサのメモリアレイの、あるゾーンへの永続的アクセス権を割り当てるための権利割り当てシステムを備え、前記システムは第１の入力においてプログラムまたはサブプログラムの識別コードを、第２の入力においてアドレスバスを流れる現在のアドレスによって指定されたメモリゾーンの識別コードを受信する、権利割り当てテーブルを備える、保護されたマイクロプロセッサにおいて、前記システムは、少なくとも２つのプログラムによって共有されるサブプログラムに対して、前記サブプログラムが前記プログラムの一つによって呼び出される場合、あるメモリゾーンへの一時的なアクセス権を与えるためにアレンジされ、この目的のために、サブプログラムの実行中に、前記権利割り当てテーブルの第１の入力に、前記サブプログラムを呼び出したプログラムの識別コードを入力する手段を備えた、
ことを特徴とする保護されたマイクロプロセッサ。
【請求項２】
請求項１記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムに対して呼出しプログラムの権利を一時的に与える手段を備える、
ことを特徴とするマイクロプロセッサ。
【請求項３】
請求項１または２に記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムに対して、呼出しプログラムとは独立した永続的な権利をさらに与える手段を備える、
ことを特徴とするマイクロプロセッサ。
【請求項４】
請求項１ないし３のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムの実行中に、前記権利割り当てテーブルの第１の入力に、実行されている前記サブプログラムの識別コードと、前記サブプログラムを呼び出したプログラムの識別コードとを、同時に入力する手段を備えた、
ことを特徴とするマイクロプロセッサ。
【請求項５】
請求項１ないし４のいずれかに記載のマイクロプロセッサにおいて、
実行されている前記サブプログラムの識別コードのビットと、前記サブプログラムを呼び出したプログラムの識別コードのビットが、前記権利割り当てテーブルの第１の入力に入力される前に論理機能によって結合される、
ことを特徴とするマイクロプロセッサ。
【請求項６】
請求項１ないし５のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、
命令の実行中に、実行されている前記プログラムまたはサブプログラムの識別コードを格納するための第１のラッチと、
その入力が前記第１のラッチの出力に接続され、マイクロプロセッサがサブプログラムに切り換える時に実行されているプログラムの識別コードを格納するようにレイアウトされて、このサブプログラムを呼び出したプログラムの識別コードを形成するものであって、マイクロプロセッサが前記サブプログラムを終了するとリセットされる第２のラッチとを備える、
ことを特徴とするマイクロプロセッサ。
【請求項７】
請求項６記載のマイクロプロセッサにおいて、
前記第２のラッチのローディング及びリセットは、アドレスバスを流れる現在のアドレスを入力において受信し、サブプログラムの第１の命令のアドレスが検出されると、ローディング信号を前記第２のラッチに入力するようにレイアウトされ、リセット信号を前記第２のラッチに送信する、アドレスデコーダによって制御される、
ことを特徴とするマイクロプロセッサ。
【請求項８】
請求項１ないし７のいずれかに記載のマイクロプロセッサにおいて、
現在のアドレスによって指定されるメモリゾーンの識別コードと、実行されているプログラムおよびサブプログラムの識別コードとは、アドレスバスを流れる現在のアドレスを入力において受信するアドレスデコーダによって送信される、ことを特徴とするマイクロプロセッサ。
【請求項９】
請求項１ないし８のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、前記アドレスバスに存在するアドレスが、実行されているプログラムまたはサブプログラムに永続的にあるいは一時的に割り当てられる権利に対応しない場合、違反信号を送信する、
ことを特徴とするマイクロプロセッサ。
【請求項１０】
請求項９記載のマイクロプロセッサにおいて、
前記アドレス違反信号は、割り込みデコーダによって処理されて、マイクロプロセッサをアドレス違反処理サブプログラムに送る、
ことを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、特に、保護されたマイクロプロセッサに関するものである。
【０００２】
保護されたマイクロプロセッサは、ある機密データやプログラムへのアクセスが禁止される必要があるアプリケーションにおいて、最も一般的に用いらている。従って、機密コードや暗号文アルゴリズムを備えたメモリゾーンを保護するために、例えばスマートカードが一般に保護されたマイクロプロセッサに備えられている。
【０００３】
【従来の技術】
従来、マイクロプロセッサは、実行されているプログラムが、読み取り、書き込み、ジャンプ、または呼出し動作のために、あるメモリゾーンをアドレス指定する資格が与えられていることを確認するアドレス制御システムによって保護されている。この種のシステムは、一般に、実行されているプログラムの識別コードを第１の入力にて受信し、アドレス指定されているメモリゾーンの識別コードを第２の入力にて受信する権利割り当てテーブルである。前記メモリゾーンは、マイクロプロセッサのアドレスバスに存在する現在のアドレスに対応する。テーブルにおいて、実行されているプログラムがアドレス指定されているメモリゾーンを利用可能であると予定されている場合、前記テーブルは許可信号を出力する。そうでない場合、前記テーブルは許可信号を出力せず、アドレス違反信号が送信される。
【０００４】
この種のアドレス制御システムは、マイクロプロセッサのメモリアレイ内の様々なプログラムの保護された共存を、それらのプログラムの各々に異なる権利を割り当てることによって得るために用いられる。これらの様々なプログラムは、一般に、メーカーによって予定された、マイクロプロセッサの異なるアプリケーションに対応している。
【０００５】
【発明が解決しようとする課題】
しかしながら、マイクロプロセッサの保護は、メモリアレイを、各部分が一つのアプリケーションのために確保されている、様々な相互に“密閉された”部分に分割するという点において、メモリアレイの構成にマイナスの影響を及ぼす。現在、異なるアプリケーションのために設計されたプログラムが、“ライブラリ”としての、ある共通領域に集中化できるような類似した計算ステップを有していることがよくある。ライブラリとは，当業者の用語では、いくつかのプログラムによって共用される、一つ以上のサブプログラムを示す。
【０００６】
いくつかのプログラムに共通なライブラリ形式のプログラム部分への集中化の標準的な方法は、それが引き起こす安全性の問題のために、保護されたマイクロプロセッサに対しては、一般に禁止されている。例えば，プログラムPGAはメモリアレイのゾーン“Ｘ”へアクセスする権利を享受し、 プログラムPGBは “Ｘ”と異なるゾーン“Ｙ”へアクセスする権利を享受すると仮定する。プログラムPGAとプログラムPGBによって共用されるサブプログラムを設計することは、どちらがサブプログラムに与えられるべき権利であるかを見つけるという問題を招く。サブプログラムが、プログラムPGAに呼び出された時にはゾーン”Ｘ”のデータを読み取ったり書き込んだりすることができ、プログラムPGBに呼び出された時にはゾーン“Ｙ”のデータを読み取ったり書き込んだりすることができる必要がある場合、サブプログラムは、プログラムPGAおよびPGBの総合された権利、すなわち、ゾーン“Ｘ”とゾーン“Ｙ”に対する権利を与えられなければならない。しかしながら、プログラムPGB、またはプログラムPGBの場所にロードされた不正プログラムは、サブプログラムを使用して、プログラムPGAのために確保されているゾーン“Ｘ”へアクセスすることができるかもしれないし、その逆もまた同様である。従って、メモリアレイへの異なるアクセス権を有する二つのプログラムによって共用されるサブプログラムを設計することは、メモリアレイの分割における違反である。
【０００７】
本発明は、この欠点を克服しようとするものである。
【０００８】
特に、本発明は、いくつかのプログラムによって共用されるサブプログラムを、そのプログラムの各々に与えられた権利の完全性を危うくすることなく提供するための手段を得ようとするものである。
【０００９】
【課題を解決するための手段】
この目的は、マイクロプロセッサによって実行可能なプログラムに、マイクロプロセッサのメモリアレイの、あるゾーンへの永続的なアクセス権を割り当てるための権利割り当てシステムを備えた保護されたマイクロプロセッサを設計することによって達成され、該権利割り当てシステムは、少なくとも２つのプログラムによって共用されるサブプログラムに対して、該サブプログラムがそれらのプログラムの一つによって呼び出される場合、あるメモリゾーンへの一時的なアクセス権を与える手段を備え、その一時的な権利の範囲は、サブプログラムを呼び出しているプログラムの機能であることを特徴とするものである。
【００１０】
ある実施の形態によれば、この権利割り当てシステムは、サブプログラムに対して呼出しプログラムの権利を一時的に与える手段を備える。
【００１１】
ある実施の形態によれば、この権利割り当てシステムは、サブプログラムに対して、呼出しプログラムとは独立した永続的な権利をさらに与える手段を備える。
【００１２】
ある実施の形態によれば、この権利割り当てシステムは、第１の入力においてプログラムまたはサブプログラムの識別コードを、第２の入力においてマイクロプロセッサのアドレスバスを流れる現在のアドレスによって指定されたメモリゾーンの識別コードを受信するためにレイアウトされた権利割り当てテーブルと、サブプログラムの実行中に、権利割り当てテーブルの第１の入力に、サブプログラムを呼び出したプログラムの識別コードを入力する手段とを備える。
【００１３】
ある実施の形態によれば、この権利割り当てシステムは、サブプログラムの実行中に、権利割り当てテーブルの第１の入力に、実行されているサブプログラムの識別コードと、前記サブプログラムを呼び出したプログラムの識別コードとを、同時に入力する手段を備える。
【００１４】
ある実施の形態によれば、実行されているサブプログラムの識別コードのビットと、前記サブプログラムを呼び出したプログラムの識別コードのビットが、権利割り当てテーブルの第１の入力に入力される前に論理機能によって結合される。
【００１５】
ある実施の形態によれば、この権利割り当てシステムは、命令の実行中に、実行されているプログラムまたはサブプログラムの識別コードを格納するための第１のラッチと、その入力が第１のラッチの出力に接続され、マイクロプロセッサがサブプログラムに切り換える時に実行されているプログラムの識別コードを格納するようにレイアウトされて、このサブプログラムを呼び出したプログラムの識別コードを形成する第２のラッチとを備え、前記第２のラッチは、マイクロプロセッサが前記サブプログラムを終了するとリセットされる。
【００１６】
ある実施の形態によれば、前記第２のラッチのローディング及びリセットは、アドレスバスを流れる電流アドレスを入力において受信し、サブプログラムの第１の命令のアドレスが検出されると、ローディング信号を前記第２のラッチに入力するようにレイアウトされ、サブプログラムの最後の命令のアドレスが検出されると、リセット信号を第２のラッチに送信するアドレスデコーダによって制御される。
【００１７】
ある実施の形態によれば、現在のアドレスによって指定されるメモリゾーンの識別コードと、実行されているプログラムおよびサブプログラムの識別コードとは、アドレスバスを流れる現在のアドレスを入力において受信するアドレスデコーダによって送信される。
【００１８】
ある実施の形態によれば、権利分配システムは、アドレスバスに存在するアドレスが、実行されているプログラムまたはサブプログラムに永続的にまたは一時的に割り当てられる権利に対応しない場合、違反信号を送信する。
【００１９】
ある実施の形態によれば、前記違反信号は、割り込みデコーダによって処理されて、マイクロプロセッサをアドレス違反処理サブプログラムに送る。
【００２０】
【発明の実施の形態】
本発明のこれらおよび他の目的、特徴および利点は、本発明によるマイクロプロセッサの例示的な実施形態に関する、非限定的な説明として与えられ、添付の図を参照してなされる以下の説明において、さらに詳細に説明される。
【００２１】
図１は、読み出し専用メモリMEM1（ROM）と、電気的消去可能プログラム可能メモリMEM2  (EEPROM)と、ランダムアクセスメモリMEM3 (RAM)とを備えつけられたマイクロプロセッサＭＰのブロック図である。これらの様々なメモリは、アドレスバス１およびデータバス２によってマイクロプロセッサに接続され、ともにマイクロプロセッサのメモリアレイを形成している。
【００２２】
本発明によれば、マイクロプロセッサＭＰは、呼出しプログラムの機能として、サブプログラムに対し可変アクセス権を与える権利割り当てシステム１０を備えている。
【００２３】
システム１０は、入力においてアドレスバスに接続されて、アドレスバスを循環している現在のアドレスADRを受信する２つのアドレスデコーダDEC1およびDEC2を備えている。デコーダDEC1は、メモリゾーン識別のための以下のようなタイプのコードCIM を出力する：
CIM = b0 b1...bn bn+1...bm
ここで、各ビットは所定のメモリゾーンの識別に割り当てられており、一度に１つのビットのみが１になることができ、他は０になる。
【００２４】
以下、ビットｂ0ないしｂnはメモリからなるメモリゾーンの指定に割り当てられており、ビットbn+1ないしbmはデータからなるメモリゾーンの指定に割り当てられているとする。メモリゾーンは、例えばメモリMEM1に配置され、データゾーンは、メモリMEM2およびMEM3に配置されている。
【００２５】
コードCIMのビットb0ないしbnは、マイクロプロセッサＭＰより出力されるローディング信号LOAD1によって駆動されるラッチLT1の入力に入力される。信号LOAD1がラッチLT 1に入力されると、ラッチの出力は、該ラッチの入力を複写し、プログラムゾーン識別のためのコードCIP1を出力する。
【００２６】
コードCIP1 は、デコーダDEC2より出力されるローディング信号LOAD2およびリセット信号RSTによって駆動される第２のラッチLT2の入力に入力される。信号LOAD2がラッチLT2に入力されると、ラッチLT2の出力は、その入力にあるコードCIP1を複写するコードCIP2を出力する。
【００２７】
コードCIP1およびCIP2は結合されて、その結果コードCIP3を形成し、これは、デコーダDEC1より出力されるコードCIMを入力E2において受信する権利割り当てテーブルTDAの入力E1に入力される。本実施の形態では、コードCIP1およびCIP2の結合はＯＲゲート１１によって提供され、その出力は、コードCIP1およびCIP2のビット毎の論理和に等しいコードCIP3を出力する。
【００２８】
権利割り当てテーブルTDAは、基本出力S0〜Sn からなる出力OUTを備え、各出力S0〜Sn は、コードCIP3のビットの一つを受信する入力E1の基本入力E１1, …, E1nの同順位のものに対応している。出力S0〜S nは、許可ビットa0〜an という形でアクセス権を出力する。許可ビットaiは、対応する入力E1iが１ビットに等しいビットｂiを受信した時は１ビットに等しく、ビットbi と共に、１ビットである許可された組み合わせ{bi,ｂj}を形成する。許可された組み合わせ{bi,ｂj}は、最終的にテーブルに記録され、永続的な権利を定める。
【００２９】
ラッチLT1のローディング信号LOAD1は、マイクロプロセッサＭＰがメモリMEM1内の命令を読み取る時、またはまさに読み取ろうとしている時(マイクロプロセッサの読み取りサイクルまたはフェッチサイクル)に、マイクロプロセッサＭＰから送信される。その時点で、アドレスバスに存在するアドレスADRは、マイクロプロセッサの順序カウンタPCより送信される命令のアドレスIADRである。従って、デコーダDEC1より送信されるコードCIMは、この命令を有するメモリゾーンを指定するビットｂi ないし１を有する。このビットｂiは、ラッチLT1に記録されているコードCIP1、およびテーブルTDAの入力E1において見つけられる。
【００３０】
さらに、信号LOAD2は、デコーダDEC2が共用サブプログラムの第１の命令のアドレスADRinをバス１上において検出すると、デコーダDEC2より送信され、信号RSTは、デコーダDEC2が共用サブプログラムの最後の命令のアドレスADRoutをアドレスバス上において検出すると、デコーダDEC2より送信される。アドレスADRinおよびADRoutは予め設定されており、考慮されているサブプログラムの入力アドレスおよび出力アドレスを表わしている。いくつかのサブプログラムが複数のプログラムによって共用されている場合、デコーダDEC2は、各サブプログラムの入力アドレスおよび出力アドレスを検出し、これらのアドレスの一方が検出されると信号LOAD2または信号RSTを送信するようにレイアウトされる。
【００３１】
本発明によるシステム１０は、ラッチLT2の出力が０で、テーブルTDAに入力されるコードCIP3は従ってコードCIP1に等しいので、プログラムの実行中は従来通りに作動する。プログラムの実行中、それぞれの新たな命令のローディングの後、例えば実行されている命令がメモリアレイにおける読み取りまたは書き込み命令であるとき、アドレスバスの現在のアドレスADRが変化し、メモリの他のゾーンを指定することがしばしばある。この場合、デコーダDEC1より送信されたコードCIMの値が変化し、対応するメモリゾーンを指定する、１である異なるビットｂjを有する。テーブルTDAに入力される組み合わせ{bi,ｂj}が許可される場合、テーブルの出力Siは１のままである。さもなければ、出力Si は０になり、違反信号VLTは1になる。この命令の実行後、新たな命令のアドレスIADRがアドレスバスに送られ、コードCIMのさらなる変化およびコードビットの他の組み合わせ{bi,ｂj}のテーブルTDAにおける自動的な検証を引き起こす。このアドレスがサブプログラムにおけるジャンプに対応する場合、テーブルTDAにおいて対応する許可が予定されなければならない。
【００３２】
本発明によるシステム１０の動作は、プログラムが、共用サブプログラムに対するジャンプや呼び出しのための命令を有するとき、標準的なアドレス制御システムとは異なる。サブプログラムの第１の命令のアドレスADRinがアドレスバス上に位置している時、デコーダDEC2は信号LOAD2を送信し、ラッチLT2は、マイクロプロセッサがサブプログラムに切り換える前にコードCIP1を記録する。マイクロプロセッサがサブプログラムに切り換えると、ラッチLT1の出力におけるコードCIP1は、サブプログラムを含むメモリゾーンを指定し、ラッチLT2の出力におけるコードCIP2は、このサブプログラムを呼び出したプログラムが、あるメモリゾーンを指定する。こうして、コードCIP1は、実行されているサブプログラムを識別し、コードCIP2は、このサブプログラムを呼び出したプログラムを識別する。
【００３３】
コードCIP1およびCIP2は、ここではＯＲゲート１１内で結合されるので、テーブルTDAは、その入力E1においてコードCIP3を受信する。このコードCIP3は、１ビットのみの代わりに、1であるビットｂiを二つ有し、第１のビットは実行されているサブプログラムに対応し、第２のビットはこのサブプログラムを呼び出したプログラムに対応する。呼出しプログラムに対応するビットｂiのテーブルTDAのアプリケーションは、その呼出しプログラムに特有のコードCIMのビットとビット{ｂi,ｂj}の組合わせを許可する。このように、呼び出されたサブプログラムは、その実行の間に、呼出しプログラムに与えられた権利を“継承する”。サブプログラムに譲渡されたこれらの権利は、これに割り当てられる永続的権利に付加される。しかしながら、これらの権利はゼロになることが選択されることもある。
【００３４】
本発明によるシステム１０は、このように、呼び出されたサブプログラムに対する動的な権利割り当てを実行し、これは、デコーダDEC2がサブプログラムの出力アドレスADRoutを検出しコードCIP2をリセットする時に、マイクロプロセッサが呼出しプログラムに戻ると終了する。
【００３５】
実際には、永続的または一時的な権利の違反が起こった時に送信される信号VLTは、異なる方法で使用されて、禁止されたメモリゾーンへのアクセスを防ぐこともある。図1に示すように、信号VLTは、例えば割り込みデコーダITDECの入力に入力され、その出力は、アドレス違反の場合を処理するサブプログラムのアドレスITADRを送信する。アドレスITADRは、別の入力において順位カウンタPCより送信される次の命令のアドレスIADRを受信する多重装置MUXの入力に入力される。多重装置は、デコーダITDECから送信される信号ITによって駆動され、信号ITが送信されると、アドレスバスに対してアドレスIADRではなくアドレスITADRを送信する。ある代替実施形態では、信号VLTは、マイクロプロセッサを非活性化するように、マイクロプロセッサのリセット信号 (RESET)を０に設定するために用いられる。別の代替実施形態では、信号VLTは、マスク不可能割り込みを発生させるために用いられる。
【００３６】
本発明によるシステム１０の動作は，図２に示す簡単な典型的なインプリメンテーションに鑑みて、よりはっきりと理解することができるであろう。
【００３７】
図２は、マイクロプロセッサのメモリアレイを示し、あるメモリゾーンはアプリケーションのために確保され、その他は厳しく禁じられていて斜線で示されている。この図は、プログラムPGAが記録されているゾーンＡ、プログラムPGBが記録されているゾーンＢ、プログラムPGAおよびPGBによって共用されるサブプログラムLIB （ライブラリ）が記録されているゾーンＣ、プログラムPGAのために読み取りおよび書き込みモードで確保されているデータゾーンＤ、プログラムPGBのために読み取りおよび書き込みモードで確保されているデータゾーンＥ、サブプログラムLIBのために読み取りおよび書き込みモードで確保されているデータゾーンＦ、及び３つのプログラムPGA、PGB、LIBのための読み取りおよび書き込みモードで利用可能なゾーンＧを示している。ゾーンＡ、Ｂ、Ｃは、例えば、メモリMEM1(ROM)内にレイアウトされ、ゾーンＤ、Ｅ、ＦはメモリMEM2(EEPROM)内にレイアウトされ、ゾーンＧはメモリMEM3(RAM)にレイアウトされる。図示されるように、メモリゾーンの識別コードCIMは、ゾーンＡないしＧの識別にそれぞれ割り当てられた７つのコードビットb0ないしb6からなり、プログラムゾーン識別のためのコードCIP1およびCIP2は、ビットb0、b1、およびb2からなる。
【００３８】
この例では、プログラムPGAがサブプログラムに計算ステップの結果をゾーンＤへ記録することを求めることができるように、またプログラムPGBがサブプログラムにこのような結果をゾーンＥに記録することを求めることができるように、サブプログラムLIBは、このサブプログラムを呼び出すプログラムPGAまたはPGBの権利の恩恵を受けることが望ましく、このサブプログラムは、永続的な権利のおかげで、一時的結果の格納のためにゾーンＦおよびＧを使用することが出来る。
【００３９】
従来の技術では、この目的を達成するために使用された解決策は、サブプログラムにゾーンＤおよびＥに対する永続的な権利を割り当てさせることにあったのだろうが、これはメモリアレイの区分壁を破ることを課すものであった。
【００４０】
本発明によれば、マイクロプロセッサがサブプログラムを入力した場合に、ゾーンＤおよびＥの一方に対する権利が、呼出しプログラムの機能として、サブプログラムに一時的に割り当てられる。
【００４１】
より明確なイメージを与えるために、図３は、このような一時的な権利の割り当て引き起こすために用いられるテーブルTDA1の典型的な実施形態を示している。テーブルTDA1は、３本の水平ラインLH0ないしLH2、７本の垂直ラインLV0ないしLV6、及び３本の出力ラインLS0ないしLS2を備えている。以下を容易に理解できるようにするために、実行されているプログラムの識別コードCIP1のビットをb0’ないしb2’、サブプログラムを呼び出すプログラムの識別コードCIP2のビットをb0”ないしb2”とする。
【００４２】
垂直ラインLV0ないしLV6は、それぞれコードCIMのビットb0ないしb6を受け取る。ラインLH0は、ビットｂ0’及びｂ0”の論理和の結果を受け取る。ラインLH1は、ビットb1’及びb1”の論理和の結果を受け取る。ラインLH2は、ビットb2’が依然として０であるため、b2’のみを受け取る。ラインLS0ないしLS2は、それぞれ信号VLTを形成するようゲート１２で結合される許可ビットa0ないしa2を出力する。
【００４３】
プログラムPGA、PGB、及びサブプログラムLIBに割り当てられる、メモリアレイへの永続的アクセス権は、水平ラインLHiと垂直ラインLVjの交点に配置されたMOSトランジスタTi,jの形をとる。ラインLHi及びLVjの交点に配置されたトランジスタTi,jは、そのゲートによってラインLHiに、そのドレインによってラインLVjに、またそのソースによって出力ラインLSiに接続されている。なお、プログラムPGAの、ラインLH0と、それ自身のメモリゾーンＡ、サブプログラムLIBを含むゾーンＣ、及びゾーンＤ及びＧに対する永続的な権利を決定するラインLV0、LV2、LV3、及びLV6との交点においてトランジスタを区別することができる（図２）。この図はまた、ラインLH1と、プログラムPGBの永続的権利を決定するラインLV1、LV2、LV4、及びLV6の交点におけるトランジスタ、及びラインLH2と、プログラムゾーンＣ及びゾーンＦおよびＧに対するサブプログラムLIBの永続的な権利を決定するラインLV2、LV5、及びLV6、の交点におけるトランジスタを示す。
【００４４】
テーブルTDA1の動作は、プラグラムPGA、PGB、及びLIBに対する永続的な権利の割り当てに関しては、それ自体、標準的である。各出力ラインLS0ないしLS1は、レジスタ、それぞれr1ないしr3によって０に保持されており、そのソースによって出力ラインに接続されているトランジスタTi,jが、そのゲートにおいて1であるビットを、そのドレインにおいてシステムの電源電圧に相当する論理“１”を受け取った場合に１になる。
【００４５】
サブプログラムの一時的および永続的権利の割り当ては、マイクロプロセッサがサブプログラムへ切り換えると発生する。その時点で、コードCIP1のビットb2’は１である。これは、サブプログラムの権利を活性化する。さらに、サブプログラムがプログラムPGAまたはPGBのどちらによって呼び出されたか次第で、コードCIP2のビットb0”またはb1”もまた１となる。これは、プログラムPGAまたはPGBの権利をサブプログラムの恩恵状態に保つものである。
【００４６】
当然のことながら、テーブルTDA1は、当業者の範囲内である様々な代替実施形態、特に、逆の論理構成に開かれている。
【００４７】
さらに、上記には呼出しプログラムの権利をサブプログラムに譲渡することが提案されているが、サブプログラムに割り当てられる一時的な権利の範囲に関しては、本発明の種々の代替実施形態が考案され得る。
【００４８】
一例として、図４は、テーブルTDA1と同様の垂直ラインLV0ないしLV6を有するが、ビットb0’、b1’、b0”、及びb1”をそれぞれ、これらのビットの論理結合なしに受け取る４本の水平ラインLH0ないしLH3を有するテーブルTDA2を示す。ラインの交点におけるトランジスタT,jは、矢印によって出力ライン、この場合は４本のラインLS0ないしLS3に接続されている点によって模式的に表されている。ここでは、サブプログラムLIBに永続的権利を割り当てるための水平ラインは設けられていない。従って、この例では、これらの永続的な権利は皆無であるが、それらが皆無でないことも考えられ得るであろう。
【００４９】
テーブルTDA2は、ラインLH0およびLH1がプログラムPGAおよびPGBの永続的な権利を定義し、ビットb0”及びb1”のみによって起動されるラインLH2およびLH3がサブプログラムLIBの一時的な権利を定義するという点においてテーブルTDA1と異なる。ラインLH2およびLH3は、ラインLH0 およびLH1と異なり、独立しているので、呼出しプログラムの永続的な権利とは異なる一時的な権利を呼出しプログラムの機能として、サブプログラムに割り当てることが可能である。したがって、図示された例では、トランジスタTi,jは、以下の割り当てがなされるようにレイアウトされる。
プログラムPGAに対して：それ自体のプログラムゾーンＡに対する権利、サブプログラムLIBのプログラムゾーンＣに対する権利、及びゾーンＧに対する権利プログラムPGBに対して：それ自体のプログラムゾーンＢに対する権利、サブプログラムLIBのプログラムゾーンＣに対する権利、及びゾーンＧに対する権利プログラムPGAによって呼び出されている時のサブプログラムLIBに対して：それ自体のプログラムゾーンＣに対する権利、及びゾーンＥ及びＧに対する権利
プログラムPGBによって呼び出されている時のサブプログラムLIBに対して：それ自体のプログラムゾーンＣに対する権利、及びゾーンＦ及びＧに対する権利
【００５０】
最終に、サブプログラムへの切り換えにおいて、ラッチLT2により記録されたビットb0”及びb1”を受け取る２本の特別ラインLH2及びLH3を設けることによって、サブプログラムに対して特別な権利を割り当てることが可能である。これらの特別な権利は、呼出しプログラムによって決定され、同時に、このプログラムの権利とは独立している。
【００５１】
さらに、この例では、権利の割り当ては、コードCIP2のビットb0”およびb1”のみによるので、サブプログラムLIBに割り当てられた権利は、プログラムPGA及びPGBによって呼び出され得る、任意の他のサブプログラムにも割り当てることができることが分かる。
【００５２】
図５は，テーブルTDA2と同様のテーブルTDA3を示すが、ここでは、ラインLH2は、ANDゲートによってビットb2’と結合されたビットb0”を受け取り、LH3は、別のANDゲートによってビットb2’と結合されたビットb1”を受け取る。この場合、ラインLH2またはLH3は、ビットb2’が１に等しく、ビットb0”またはb1”もまた１であるという２重条件でのみ起動され得る。こうして、権利の一時的な譲渡は、任意の他のサブプログラムを除外して、サブプログラムLIBに対して確保される。
【００５３】
本発明はもちろん、呼出しプログラムの本質の格納によるサブプログラムへの一時的な権利の譲渡の、本発明による原理に基づいた、変形例および代替実施形態に対して開かれている。特に、それら自体メインプログラムによって呼び出される１次レベルのサブプログラムによって呼び出された２次レベルのサブプログラムに対して、カスケード式の権利の譲渡が考案されることができる。
【００５４】
最後に、上でさらに説明された権利割り当てテーブルの実施形態は、本発明の理解を容易にする目的で、トランジスタを用いたマトリクス回路の形式で示されているが、本発明による権利割り当てテーブルは、実際にはいくつかの他の形式を想定することが可能であることに留意しなければならない。特に、この種のテーブルは、VHDL言語コンパイラによって自動的に作成されるブール論理回路の形式で作ることができる。このハイレベルな言語で書かれた機能からの論理回路の自動的な作成方法は、近年、大きな発展を遂げた。
【図面の簡単な説明】
【図１】本発明にかかる権利管理システムを備えたマイクロプロセッサを示すブロック図である。
【図２】マイクロプロセッサのメモリアレイを示し、本発明にかかる権利管理システムの一実施例を図示する。
【図３】図２に示した実施例に関する権利割り当てテーブルの典型的な実施形態を示す。
【図４】本発明にかかる権利割り当てテーブルの他の典型的な実施形態の概略図である。
【図５】本発明にかかる権利割り当てテーブルの他の典型的な実施形態の概略図である。
【符号の説明】
１  アドレスバス
２  データバス
１０  権利割り当てシステム
１１  ＯＲゲート
１２  ゲート
ＬＴ１  ラッチ
ＬＴ２  第２のラッチ
【図１】
0003661852.tif 000002
【図２】
0003661852.tif 000003
【図３】
0003661852.tif 000004
【図４】
0003661852.tif 000005
【図５】
0003661852.tif 000006