(57)【要約】【課題】マイクロプロセッサによって実行可能なプログラムに、マイクロプロセッサのメモリアレイの、あるゾーンへの永続的なアクセス権を割り当てるための権利割り当てシステムを備えた保護されたマイクロプロセッサを提供する。【解決手段】権利分配システムは、少なくとも２つのプログラムによって共用されているサブプログラムに対して、サブプログラムがプログラムの１つによって呼び出されている場合に割り当てられる一時的なアクセス権を、あるメモリゾーンへ与える手段を備える。これにより、ライブラリを用いて、プログラムに与えられた権利の本質を害することなく、保護されたマイクロプロセッサにおけるライブラリを提供することができる。【選択図】      図１
2005037974.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサによって実行可能なプログラムに、マイクロプロセッサのメモリアレイの、あるゾーンへの永続的アクセス権を割り当てるための権利割り当てシステムを備えた保護されたマイクロプロセッサにおいて、
前記権利割り当てシステムは、少なくとも２つのプログラムによって共用されるサブプログラムに対して、前記サブプログラムが前記プログラムの一つによって呼び出される場合、あるメモリゾーンへの一時的なアクセス権を与える手段を備え、
前記一時的な権利の範囲は、前記サブプログラムを呼び出しているプログラムの機能である、ことを特徴とする保護されたマイクロプロセッサ。
【請求項２】
請求項１記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムに対して呼出しプログラムの権利を一時的に与える手段を備える、ことを特徴とするマイクロプロセッサ。
【請求項３】
請求項１または２に記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムに対して、呼出しプログラムとは独立した永続的な権利をさらに与える手段を備える、ことを特徴とするマイクロプロセッサ。
【請求項４】
請求項１ないし３のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、
第１の入力においてプログラムまたはサブプログラムの識別コードを、第２の入力においてマイクロプロセッサのアドレスバスを流れる現在のアドレスによって指定されたメモリゾーンの識別コードを、受信するためにレイアウトされた権利割り当てテーブルと、
サブプログラムの実行中に、前記権利割り当てテーブルの第１の入力に、前記サブプログラムを呼び出したプログラムの識別コードを入力する手段と、を備えた、ことを特徴とするマイクロプロセッサ。
【請求項５】
請求項４記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、
サブプログラムの実行中に、前記権利割り当てテーブルの第１の入力に、実行されている前記サブプログラムの識別コードと、前記サブプログラムを呼び出したプログラムの識別コードとを、同時に入力する手段を備えた、ことを特徴とするマイクロプロセッサ。
【請求項６】
請求項５記載のマイクロプロセッサにおいて、
実行されている前記サブプログラムの識別コードのビットと、前記サブプログラムを呼び出したプログラムの識別コードのビットが、前記権利割り当てテーブルの第１の入力に入力される前に論理機能によって結合される、ことを特徴とするマイクロプロセッサ。
【請求項７】
請求項４ないし６のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、
命令の実行中に、実行されている前記プログラムまたはサブプログラムの識別コードを格納するための第１のラッチと、
その入力が前記第１のラッチの出力に接続され、マイクロプロセッサがサブプログラムに切り換える時に実行されているプログラムの識別コードを格納するようにレイアウトされて、このサブプログラムを呼び出したプログラムの識別コードを形成するものであって、マイクロプロセッサが前記サブプログラムを終了するとリセットされる第２のラッチとを備える、ことを特徴とするマイクロプロセッサ。
【請求項８】
請求項７記載のマイクロプロセッサにおいて、
前記第２のラッチのローディング及びリセットは、アドレスバスを流れる現在のアドレスを入力において受信し、サブプログラムの第１の命令のアドレスが検出されると、ローディング信号を前記第２のラッチに入力するようにレイアウトされ、前記サブプログラムの最後の命令のアドレスが検出されると、リセット信号を前記第２のラッチに送信する、アドレスデコーダによって制御される、ことを特徴とするマイクロプロセッサ。
【請求項９】
請求項４ないし８のいずれかに記載のマイクロプロセッサにおいて、
現在のアドレスによって指定されるメモリゾーンの識別コードと、実行されているプログラムおよびサブプログラムの識別コードとは、アドレスバスを流れる現在のアドレスを入力において受信するアドレスデコーダによって送信される、ことを特徴とするマイクロプロセッサ。
【請求項１０】
請求項１ないし８のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、前記アドレスバスに存在するアドレスが、実行されているプログラムまたはサブプログラムに永続的にあるいは一時的に割り当てられる権利に対応しない場合、違反信号を送信する、ことを特徴とするマイクロプロセッサ。
【請求項１１】
請求項１０記載のマイクロプロセッサにおいて、
前記違反信号は、割り込みデコーダによって処理されて、マイクロプロセッサをアドレス違反処理サブプログラムに送る、ことを特徴とするマイクロプロセッサ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロプロセッサに関し、特に、保護されたマイクロプロセッサに関するものである。
【０００２】
保護されたマイクロプロセッサは、ある機密データやプログラムへのアクセスが禁止される必要があるアプリケーションにおいて、最も一般的に用いらている。従って、機密コードや暗号文アルゴリズムを備えたメモリゾーンを保護するために、例えばスマートカードが一般に保護されたマイクロプロセッサに備えられている。
【０００３】
【従来の技術】
従来、マイクロプロセッサは、実行されているプログラムが、読み取り、書き込み、ジャンプ、または呼出し動作のために、あるメモリゾーンをアドレス指定する資格が与えられていることを確認するアドレス制御システムによって保護されている。この種のシステムは、一般に、実行されているプログラムの識別コードを第１の入力にて受信し、アドレス指定されているメモリゾーンの識別コードを第２の入力にて受信する権利割り当てテーブルである。前記メモリゾーンは、マイクロプロセッサのアドレスバスに存在する現在のアドレスに対応する。テーブルにおいて、実行されているプログラムがアドレス指定されているメモリゾーンを利用可能であると予定されている場合、前記テーブルは許可信号を出力する。そうでない場合、前記テーブルは許可信号を出力せず、アドレス違反信号が送信される。
【０００４】
この種のアドレス制御システムは、マイクロプロセッサのメモリアレイ内の様々なプログラムの保護された共存を、それらのプログラムの各々に異なる権利を割り当てることによって得るために用いられる。これらの様々なプログラムは、一般に、メーカーによって予定された、マイクロプロセッサの異なるアプリケーションに対応している。
【０００５】
【発明が解決しようとする課題】
しかしながら、マイクロプロセッサの保護は、メモリアレイを、各部分が一つのアプリケーションのために確保されている、様々な相互に“密閉された”部分に分割するという点において、メモリアレイの構成にマイナスの影響を及ぼす。
現在、異なるアプリケーションのために設計されたプログラムが、“ライブラリ”としての、ある共通領域に集中化できるような類似した計算ステップを有していることがよくある。ライブラリとは，当業者の用語では、いくつかのプログラムによって共用される、一つ以上のサブプログラムを示す。
【０００６】
いくつかのプログラムに共通なライブラリ形式のプログラム部分への集中化の標準的な方法は、それが引き起こす安全性の問題のために、保護されたマイクロプロセッサに対しては、一般に禁止されている。例えば，プログラムＰＧＡはメモリアレイのゾーン“Ｘ”へアクセスする権利を享受し、  プログラムＰＧＢは  “Ｘ”と異なるゾーン“Ｙ”へアクセスする権利を享受すると仮定する。プログラムＰＧＡとプログラムＰＧＢによって共用されるサブプログラムを設計することは、どちらがサブプログラムに与えられるべき権利であるかを見つけるという問題を招く。サブプログラムが、プログラムＰＧＡに呼び出された時にはゾーン”Ｘ”のデータを読み取ったり書き込んだりすることができ、プログラムＰＧＢに呼び出された時にはゾーン“Ｙ”のデータを読み取ったり書き込んだりすることができる必要がある場合、サブプログラムは、プログラムＰＧＡおよびＰＧＢの総合された権利、すなわち、ゾーン“Ｘ”とゾーン“Ｙ”に対する権利を与えられなければならない。しかしながら、プログラムＰＧＢ、またはプログラムＰＧＢの場所にロードされた不正プログラムは、サブプログラムを使用して、プログラムＰＧＡのために確保されているゾーン“Ｘ”へアクセスすることができるかもしれないし、その逆もまた同様である。従って、メモリアレイへの異なるアクセス権を有する二つのプログラムによって共用されるサブプログラムを設計することは、メモリアレイの分割における違反である。
【０００７】
本発明は、この欠点を克服しようとするものである。
【０００８】
特に、本発明は、いくつかのプログラムによって共用されるサブプログラムを、そのプログラムの各々に与えられた権利の完全性を危うくすることなく提供するための手段を得ようとするものである。
【０００９】
【課題を解決するための手段】
この目的は、マイクロプロセッサによって実行可能なプログラムに、マイクロプロセッサのメモリアレイの、あるゾーンへの永続的なアクセス権を割り当てるための権利割り当てシステムを備えた保護されたマイクロプロセッサを設計することによって達成され、該権利割り当てシステムは、少なくとも２つのプログラムによって共用されるサブプログラムに対して、該サブプログラムがそれらのプログラムの一つによって呼び出される場合、あるメモリゾーンへの一時的なアクセス権を与える手段を備え、その一時的な権利の範囲は、サブプログラムを呼び出しているプログラムの機能であることを特徴とするものである。
【００１０】
ある実施の形態によれば、この権利割り当てシステムは、サブプログラムに対して呼出しプログラムの権利を一時的に与える手段を備える。
【００１１】
ある実施の形態によれば、この権利割り当てシステムは、サブプログラムに対して、呼出しプログラムとは独立した永続的な権利をさらに与える手段を備える。
【００１２】
ある実施の形態によれば、この権利割り当てシステムは、第１の入力においてプログラムまたはサブプログラムの識別コードを、第２の入力においてマイクロプロセッサのアドレスバスを流れる現在のアドレスによって指定されたメモリゾーンの識別コードを受信するためにレイアウトされた権利割り当てテーブルと、サブプログラムの実行中に、権利割り当てテーブルの第１の入力に、サブプログラムを呼び出したプログラムの識別コードを入力する手段とを備える。
【００１３】
ある実施の形態によれば、この権利割り当てシステムは、サブプログラムの実行中に、権利割り当てテーブルの第１の入力に、実行されているサブプログラムの識別コードと、前記サブプログラムを呼び出したプログラムの識別コードとを、同時に入力する手段を備える。
【００１４】
ある実施の形態によれば、実行されているサブプログラムの識別コードのビットと、前記サブプログラムを呼び出したプログラムの識別コードのビットが、権利割り当てテーブルの第１の入力に入力される前に論理機能によって結合される。
【００１５】
ある実施の形態によれば、この権利割り当てシステムは、命令の実行中に、実行されているプログラムまたはサブプログラムの識別コードを格納するための第１のラッチと、その入力が第１のラッチの出力に接続され、マイクロプロセッサがサブプログラムに切り換える時に実行されているプログラムの識別コードを格納するようにレイアウトされて、このサブプログラムを呼び出したプログラムの識別コードを形成する第２のラッチとを備え、前記第２のラッチは、マイクロプロセッサが前記サブプログラムを終了するとリセットされる。
【００１６】
ある実施の形態によれば、前記第２のラッチのローディング及びリセットは、アドレスバスを流れる電流アドレスを入力において受信し、サブプログラムの第１の命令のアドレスが検出されると、ローディング信号を前記第２のラッチに入力するようにレイアウトされ、サブプログラムの最後の命令のアドレスが検出されると、リセット信号を第２のラッチに送信するアドレスデコーダによって制御される。
【００１７】
ある実施の形態によれば、現在のアドレスによって指定されるメモリゾーンの識別コードと、実行されているプログラムおよびサブプログラムの識別コードとは、アドレスバスを流れる現在のアドレスを入力において受信するアドレスデコーダによって送信される。
【００１８】
ある実施の形態によれば、権利分配システムは、アドレスバスに存在するアドレスが、実行されているプログラムまたはサブプログラムに永続的にまたは一時的に割り当てられる権利に対応しない場合、違反信号を送信する。
【００１９】
ある実施の形態によれば、前記違反信号は、割り込みデコーダによって処理されて、マイクロプロセッサをアドレス違反処理サブプログラムに送る。
【００２０】
【発明の実施の形態】
本発明のこれらおよび他の目的、特徴および利点は、本発明によるマイクロプロセッサの例示的な実施形態に関する、非限定的な説明として与えられ、添付の図を参照してなされる以下の説明において、さらに詳細に説明される。
【００２１】
図１は、読み出し専用メモリＭＥＭ１（ＲＯＭ）と、電気的消去可能プログラム可能メモリＭＥＭ２  （ＥＥＰＲＯＭ）と、ランダムアクセスメモリＭＥＭ３  （ＲＡＭ）とを備えつけられたマイクロプロセッサＭＰのブロック図である。これらの様々なメモリは、アドレスバス１およびデータバス２によってマイクロプロセッサに接続され、ともにマイクロプロセッサのメモリアレイを形成している。
【００２２】
本発明によれば、マイクロプロセッサＭＰは、呼出しプログラムの機能として、サブプログラムに対し可変アクセス権を与える権利割り当てシステム１０を備えている。
【００２３】
システム１０は、入力においてアドレスバスに接続されて、アドレスバスを循環している現在のアドレスＡＤＲを受信する２つのアドレスデコーダＤＥＣ１およびＤＥＣ２を備えている。デコーダＤＥＣ１は、メモリゾーン識別のための以下のようなタイプのコードＣＩＭ  を出力する：
ＣＩＭ  ＝  ｂ０  ｂ１．．．ｂｎ  ｂｎ＋１．．．ｂｍ
ここで、各ビットは所定のメモリゾーンの識別に割り当てられており、一度に１つのビットのみが１になることができ、他は０になる。
【００２４】
以下、ビットｂ０ないしｂｎはメモリからなるメモリゾーンの指定に割り当てられており、ビットｂｎ＋１ないしｂｍはデータからなるメモリゾーンの指定に割り当てられているとする。メモリゾーンは、例えばメモリＭＥＭ１に配置され、データゾーンは、メモリＭＥＭ２およびＭＥＭ３に配置されている。
【００２５】
コードＣＩＭのビットｂ０ないしｂｎは、マイクロプロセッサＭＰより出力されるローディング信号ＬＯＡＤ１によって駆動されるラッチＬＴ１の入力に入力される。信号ＬＯＡＤ１がラッチＬＴ  １に入力されると、ラッチの出力は、該ラッチの入力を複写し、プログラムゾーン識別のためのコードＣＩＰ１を出力する。
【００２６】
コードＣＩＰ１  は、デコーダＤＥＣ２より出力されるローディング信号ＬＯＡＤ２およびリセット信号ＲＳＴによって駆動される第２のラッチＬＴ２の入力に入力される。信号ＬＯＡＤ２がラッチＬＴ２に入力されると、ラッチＬＴ２の出力は、その入力にあるコードＣＩＰ１を複写するコードＣＩＰ２を出力する。
【００２７】
コードＣＩＰ１およびＣＩＰ２は結合されて、その結果コードＣＩＰ３を形成し、これは、デコーダＤＥＣ１より出力されるコードＣＩＭを入力Ｅ２において受信する権利割り当てテーブルＴＤＡの入力Ｅ１に入力される。本実施の形態では、コードＣＩＰ１およびＣＩＰ２の結合はＯＲゲート１１によって提供され、その出力は、コードＣＩＰ１およびＣＩＰ２のビット毎の論理和に等しいコードＣＩＰ３を出力する。
【００２８】
権利割り当てテーブルＴＤＡは、基本出力Ｓ０〜Ｓｎ  からなる出力ＯＵＴを備え、各出力Ｓ０〜Ｓｎ  は、コードＣＩＰ３のビットの一つを受信する入力Ｅ１の基本入力Ｅ１１，  …，  Ｅ１ｎの同順位のものに対応している。出力Ｓ０〜Ｓ  ｎは、許可ビットａ０〜ａｎ  という形でアクセス権を出力する。許可ビットａｉは、対応する入力Ｅ１ｉが１ビットに等しいビットｂｉを受信した時は１ビットに等しく、ビットｂｉ  と共に、１ビットである許可された組み合わせ｛ｂｉ，ｂｊ｝を形成する。許可された組み合わせ｛ｂｉ，ｂｊ｝は、最終的にテーブルに記録され、永続的な権利を定める。
【００２９】
ラッチＬＴ１のローディング信号ＬＯＡＤ１は、マイクロプロセッサＭＰがメモリＭＥＭ１内の命令を読み取る時、またはまさに読み取ろうとしている時（マイクロプロセッサの読み取りサイクルまたはフェッチサイクル）に、マイクロプロセッサＭＰから送信される。その時点で、アドレスバスに存在するアドレスＡＤＲは、マイクロプロセッサの順序カウンタＰＣより送信される命令のアドレスＩＡＤＲである。従って、デコーダＤＥＣ１より送信されるコードＣＩＭは、この命令を有するメモリゾーンを指定するビットｂｉ  ないし１を有する。このビットｂｉは、ラッチＬＴ１に記録されているコードＣＩＰ１、およびテーブルＴＤＡの入力Ｅ１において見つけられる。
【００３０】
さらに、信号ＬＯＡＤ２は、デコーダＤＥＣ２が共用サブプログラムの第１の命令のアドレスＡＤＲｉｎをバス１上において検出すると、デコーダＤＥＣ２より送信され、信号ＲＳＴは、デコーダＤＥＣ２が共用サブプログラムの最後の命令のアドレスＡＤＲｏｕｔをアドレスバス上において検出すると、デコーダＤＥＣ２より送信される。アドレスＡＤＲｉｎおよびＡＤＲｏｕｔは予め設定されており、考慮されているサブプログラムの入力アドレスおよび出力アドレスを表わしている。いくつかのサブプログラムが複数のプログラムによって共用されている場合、デコーダＤＥＣ２は、各サブプログラムの入力アドレスおよび出力アドレスを検出し、これらのアドレスの一方が検出されると信号ＬＯＡＤ２または信号ＲＳＴを送信するようにレイアウトされる。
【００３１】
本発明によるシステム１０は、ラッチＬＴ２の出力が０で、テーブルＴＤＡに入力されるコードＣＩＰ３は従ってコードＣＩＰ１に等しいので、プログラムの実行中は従来通りに作動する。プログラムの実行中、それぞれの新たな命令のローディングの後、例えば実行されている命令がメモリアレイにおける読み取りまたは書き込み命令であるとき、アドレスバスの現在のアドレスＡＤＲが変化し、メモリの他のゾーンを指定することがしばしばある。この場合、デコーダＤＥＣ１より送信されたコードＣＩＭの値が変化し、対応するメモリゾーンを指定する、１である異なるビットｂｊを有する。テーブルＴＤＡに入力される組み合わせ｛ｂｉ，ｂｊ｝が許可される場合、テーブルの出力Ｓｉは１のままである。さもなければ、出力Ｓｉ  は０になり、違反信号ＶＬＴは１になる。この命令の実行後、新たな命令のアドレスＩＡＤＲがアドレスバスに送られ、コードＣＩＭのさらなる変化およびコードビットの他の組み合わせ｛ｂｉ，ｂｊ｝のテーブルＴＤＡにおける自動的な検証を引き起こす。このアドレスがサブプログラムにおけるジャンプに対応する場合、テーブルＴＤＡにおいて対応する許可が予定されなければならない。
【００３２】
本発明によるシステム１０の動作は、プログラムが、共用サブプログラムに対するジャンプや呼び出しのための命令を有するとき、標準的なアドレス制御システムとは異なる。サブプログラムの第１の命令のアドレスＡＤＲｉｎがアドレスバス上に位置している時、デコーダＤＥＣ２は信号ＬＯＡＤ２を送信し、ラッチＬＴ２は、マイクロプロセッサがサブプログラムに切り換える前にコードＣＩＰ１を記録する。マイクロプロセッサがサブプログラムに切り換えると、ラッチＬＴ１の出力におけるコードＣＩＰ１は、サブプログラムを含むメモリゾーンを指定し、ラッチＬＴ２の出力におけるコードＣＩＰ２は、このサブプログラムを呼び出したプログラムが、あるメモリゾーンを指定する。こうして、コードＣＩＰ１は、実行されているサブプログラムを識別し、コードＣＩＰ２は、このサブプログラムを呼び出したプログラムを識別する。
【００３３】
コードＣＩＰ１およびＣＩＰ２は、ここではＯＲゲート１１内で結合されるので、テーブルＴＤＡは、その入力Ｅ１においてコードＣＩＰ３を受信する。このコードＣＩＰ３は、１ビットのみの代わりに、１であるビットｂｉを二つ有し、第１のビットは実行されているサブプログラムに対応し、第２のビットはこのサブプログラムを呼び出したプログラムに対応する。呼出しプログラムに対応するビットｂｉのテーブルＴＤＡのアプリケーションは、その呼出しプログラムに特有のコードＣＩＭのビットとビット｛ｂｉ，ｂｊ｝の組合わせを許可する。このように、呼び出されたサブプログラムは、その実行の間に、呼出しプログラムに与えられた権利を“継承する”。サブプログラムに譲渡されたこれらの権利は、これに割り当てられる永続的権利に付加される。しかしながら、これらの権利はゼロになることが選択されることもある。
【００３４】
本発明によるシステム１０は、このように、呼び出されたサブプログラムに対する動的な権利割り当てを実行し、これは、デコーダＤＥＣ２がサブプログラムの出力アドレスＡＤＲｏｕｔを検出しコードＣＩＰ２をリセットする時に、マイクロプロセッサが呼出しプログラムに戻ると終了する。
【００３５】
実際には、永続的または一時的な権利の違反が起こった時に送信される信号ＶＬＴは、異なる方法で使用されて、禁止されたメモリゾーンへのアクセスを防ぐこともある。図１に示すように、信号ＶＬＴは、例えば割り込みデコーダＩＴＤＥＣの入力に入力され、その出力は、アドレス違反の場合を処理するサブプログラムのアドレスＩＴＡＤＲを送信する。アドレスＩＴＡＤＲは、別の入力において順位カウンタＰＣより送信される次の命令のアドレスＩＡＤＲを受信する多重装置ＭＵＸの入力に入力される。多重装置は、デコーダＩＴＤＥＣから送信される信号ＩＴによって駆動され、信号ＩＴが送信されると、アドレスバスに対してアドレスＩＡＤＲではなくアドレスＩＴＡＤＲを送信する。ある代替実施形態では、信号ＶＬＴは、マイクロプロセッサを非活性化するように、マイクロプロセッサのリセット信号  （ＲＥＳＥＴ）を０に設定するために用いられる。別の代替実施形態では、信号ＶＬＴは、マスク不可能割り込みを発生させるために用いられる。
【００３６】
本発明によるシステム１０の動作は，図２に示す簡単な典型的なインプリメンテーションに鑑みて、よりはっきりと理解することができるであろう。
【００３７】
図２は、マイクロプロセッサのメモリアレイを示し、あるメモリゾーンはアプリケーションのために確保され、その他は厳しく禁じられていて斜線で示されている。この図は、プログラムＰＧＡが記録されているゾーンＡ、プログラムＰＧＢが記録されているゾーンＢ、プログラムＰＧＡおよびＰＧＢによって共用されるサブプログラムＬＩＢ  （ライブラリ）が記録されているゾーンＣ、プログラムＰＧＡのために読み取りおよび書き込みモードで確保されているデータゾーンＤ、プログラムＰＧＢのために読み取りおよび書き込みモードで確保されているデータゾーンＥ、サブプログラムＬＩＢのために読み取りおよび書き込みモードで確保されているデータゾーンＦ、及び３つのプログラムＰＧＡ、ＰＧＢ、ＬＩＢのための読み取りおよび書き込みモードで利用可能なゾーンＧを示している。ゾーンＡ、Ｂ、Ｃは、例えば、メモリＭＥＭ１（ＲＯＭ）内にレイアウトされ、ゾーンＤ、Ｅ、ＦはメモリＭＥＭ２（ＥＥＰＲＯＭ）内にレイアウトされ、ゾーンＧはメモリＭＥＭ３（ＲＡＭ）にレイアウトされる。図示されるように、メモリゾーンの識別コードＣＩＭは、ゾーンＡないしＧの識別にそれぞれ割り当てられた７つのコードビットｂ０ないしｂ６からなり、プログラムゾーン識別のためのコードＣＩＰ１およびＣＩＰ２は、ビットｂ０、ｂ１、およびｂ２からなる。
【００３８】
この例では、プログラムＰＧＡがサブプログラムに計算ステップの結果をゾーンＤへ記録することを求めることができるように、またプログラムＰＧＢがサブプログラムにこのような結果をゾーンＥに記録することを求めることができるように、サブプログラムＬＩＢは、このサブプログラムを呼び出すプログラムＰＧＡまたはＰＧＢの権利の恩恵を受けることが望ましく、このサブプログラムは、永続的な権利のおかげで、一時的結果の格納のためにゾーンＦおよびＧを使用することが出来る。
【００３９】
従来の技術では、この目的を達成するために使用された解決策は、サブプログラムにゾーンＤおよびＥに対する永続的な権利を割り当てさせることにあったのだろうが、これはメモリアレイの区分壁を破ることを課すものであった。
【００４０】
本発明によれば、マイクロプロセッサがサブプログラムを入力した場合に、ゾーンＤおよびＥの一方に対する権利が、呼出しプログラムの機能として、サブプログラムに一時的に割り当てられる。
【００４１】
より明確なイメージを与えるために、図３は、このような一時的な権利の割り当て引き起こすために用いられるテーブルＴＤＡ１の典型的な実施形態を示している。テーブルＴＤＡ１は、３本の水平ラインＬＨ０ないしＬＨ２、７本の垂直ラインＬＶ０ないしＬＶ６、及び３本の出力ラインＬＳ０ないしＬＳ２を備えている。以下を容易に理解できるようにするために、実行されているプログラムの識別コードＣＩＰ１のビットをｂ０’ないしｂ２’、サブプログラムを呼び出すプログラムの識別コードＣＩＰ２のビットをｂ０”ないしｂ２”とする。
【００４２】
垂直ラインＬＶ０ないしＬＶ６は、それぞれコードＣＩＭのビットｂ０ないしｂ６を受け取る。ラインＬＨ０は、ビットｂ０’及びｂ０”の論理和の結果を受け取る。ラインＬＨ１は、ビットｂ１’及びｂ１”の論理和の結果を受け取る。ラインＬＨ２は、ビットｂ２’が依然として０であるため、ｂ２’のみを受け取る。ラインＬＳ０ないしＬＳ２は、それぞれ信号ＶＬＴを形成するようゲート１２で結合される許可ビットａ０ないしａ２を出力する。
【００４３】
プログラムＰＧＡ、ＰＧＢ、及びサブプログラムＬＩＢに割り当てられる、メモリアレイへの永続的アクセス権は、水平ラインＬＨｉと垂直ラインＬＶｊの交点に配置されたＭＯＳトランジスタＴｉ，ｊの形をとる。ラインＬＨｉ及びＬＶｊの交点に配置されたトランジスタＴｉ，ｊは、そのゲートによってラインＬＨｉに、そのドレインによってラインＬＶｊに、またそのソースによって出力ラインＬＳｉに接続されている。なお、プログラムＰＧＡの、ラインＬＨ０と、それ自身のメモリゾーンＡ、サブプログラムＬＩＢを含むゾーンＣ、及びゾーンＤ及びＧに対する永続的な権利を決定するラインＬＶ０、ＬＶ２、ＬＶ３、及びＬＶ６との交点においてトランジスタを区別することができる（図２）。この図はまた、ラインＬＨ１と、プログラムＰＧＢの永続的権利を決定するラインＬＶ１、ＬＶ２、ＬＶ４、及びＬＶ６の交点におけるトランジスタ、及びラインＬＨ２と、プログラムゾーンＣ及びゾーンＦおよびＧに対するサブプログラムＬＩＢの永続的な権利を決定するラインＬＶ２、ＬＶ５、及びＬＶ６、の交点におけるトランジスタを示す。
【００４４】
テーブルＴＤＡ１の動作は、プラグラムＰＧＡ、ＰＧＢ、及びＬＩＢに対する永続的な権利の割り当てに関しては、それ自体、標準的である。各出力ラインＬＳ０ないしＬＳ１は、レジスタ、それぞれｒ１ないしｒ３によって０に保持されており、そのソースによって出力ラインに接続されているトランジスタＴｉ，ｊが、そのゲートにおいて１であるビットを、そのドレインにおいてシステムの電源電圧に相当する論理“１”を受け取った場合に１になる。
【００４５】
サブプログラムの一時的および永続的権利の割り当ては、マイクロプロセッサがサブプログラムへ切り換えると発生する。その時点で、コードＣＩＰ１のビットｂ２’は１である。これは、サブプログラムの権利を活性化する。さらに、サブプログラムがプログラムＰＧＡまたはＰＧＢのどちらによって呼び出されたか次第で、コードＣＩＰ２のビットｂ０”またはｂ１”もまた１となる。これは、プログラムＰＧＡまたはＰＧＢの権利をサブプログラムの恩恵状態に保つものである。
【００４６】
当然のことながら、テーブルＴＤＡ１は、当業者の範囲内である様々な代替実施形態、特に、逆の論理構成に開かれている。
【００４７】
さらに、上記には呼出しプログラムの権利をサブプログラムに譲渡することが提案されているが、サブプログラムに割り当てられる一時的な権利の範囲に関しては、本発明の種々の代替実施形態が考案され得る。
【００４８】
一例として、図４は、テーブルＴＤＡ１と同様の垂直ラインＬＶ０ないしＬＶ６を有するが、ビットｂ０’、ｂ１’、ｂ０”、及びｂ１”をそれぞれ、これらのビットの論理結合なしに受け取る４本の水平ラインＬＨ０ないしＬＨ３を有するテーブルＴＤＡ２を示す。ラインの交点におけるトランジスタＴ，ｊは、矢印によって出力ライン、この場合は４本のラインＬＳ０ないしＬＳ３に接続されている点によって模式的に表されている。ここでは、サブプログラムＬＩＢに永続的権利を割り当てるための水平ラインは設けられていない。従って、この例では、これらの永続的な権利は皆無であるが、それらが皆無でないことも考えられ得るであろう。
【００４９】
テーブルＴＤＡ２は、ラインＬＨ０およびＬＨ１がプログラムＰＧＡおよびＰＧＢの永続的な権利を定義し、ビットｂ０”及びｂ１”のみによって起動されるラインＬＨ２およびＬＨ３がサブプログラムＬＩＢの一時的な権利を定義するという点においてテーブルＴＤＡ１と異なる。ラインＬＨ２およびＬＨ３は、ラインＬＨ０  およびＬＨ１と異なり、独立しているので、呼出しプログラムの永続的な権利とは異なる一時的な権利を呼出しプログラムの機能として、サブプログラムに割り当てることが可能である。したがって、図示された例では、トランジスタＴｉ，ｊは、以下の割り当てがなされるようにレイアウトされる。
プログラムＰＧＡに対して：それ自体のプログラムゾーンＡに対する権利、サブプログラムＬＩＢのプログラムゾーンＣに対する権利、及びゾーンＧに対する権利
プログラムＰＧＢに対して：それ自体のプログラムゾーンＢに対する権利、サブプログラムＬＩＢのプログラムゾーンＣに対する権利、及びゾーンＧに対する権利
プログラムＰＧＡによって呼び出されている時のサブプログラムＬＩＢに対して：それ自体のプログラムゾーンＣに対する権利、及びゾーンＥ及びＧに対する権利
プログラムＰＧＢによって呼び出されている時のサブプログラムＬＩＢに対して：それ自体のプログラムゾーンＣに対する権利、及びゾーンＦ及びＧに対する権利
【００５０】
最終に、サブプログラムへの切り換えにおいて、ラッチＬＴ２により記録されたビットｂ０”及びｂ１”を受け取る２本の特別ラインＬＨ２及びＬＨ３を設けることによって、サブプログラムに対して特別な権利を割り当てることが可能である。これらの特別な権利は、呼出しプログラムによって決定され、同時に、このプログラムの権利とは独立している。
【００５１】
さらに、この例では、権利の割り当ては、コードＣＩＰ２のビットｂ０”およびｂ１”のみによるので、サブプログラムＬＩＢに割り当てられた権利は、プログラムＰＧＡ及びＰＧＢによって呼び出され得る、任意の他のサブプログラムにも割り当てることができることが分かる。
【００５２】
図５は，テーブルＴＤＡ２と同様のテーブルＴＤＡ３を示すが、ここでは、ラインＬＨ２は、ＡＮＤゲートによってビットｂ２’と結合されたビットｂ０”を受け取り、ＬＨ３は、別のＡＮＤゲートによってビットｂ２’と結合されたビットｂ１”を受け取る。この場合、ラインＬＨ２またはＬＨ３は、ビットｂ２’が１に等しく、ビットｂ０”またはｂ１”もまた１であるという２重条件でのみ起動され得る。こうして、権利の一時的な譲渡は、任意の他のサブプログラムを除外して、サブプログラムＬＩＢに対して確保される。
【００５３】
本発明はもちろん、呼出しプログラムの本質の格納によるサブプログラムへの一時的な権利の譲渡の、本発明による原理に基づいた、変形例および代替実施形態に対して開かれている。特に、それら自体メインプログラムによって呼び出される１次レベルのサブプログラムによって呼び出された２次レベルのサブプログラムに対して、カスケード式の権利の譲渡が考案されることができる。
【００５４】
最後に、上でさらに説明された権利割り当てテーブルの実施形態は、本発明の理解を容易にする目的で、トランジスタを用いたマトリクス回路の形式で示されているが、本発明による権利割り当てテーブルは、実際にはいくつかの他の形式を想定することが可能であることに留意しなければならない。特に、この種のテーブルは、ＶＨＤＬ言語コンパイラによって自動的に作成されるブール論理回路の形式で作ることができる。このハイレベルな言語で書かれた機能からの論理回路の自動的な作成方法は、近年、大きな発展を遂げた。
【図面の簡単な説明】
【図１】本発明にかかる権利管理システムを備えたマイクロプロセッサを示すブロック図である。
【図２】マイクロプロセッサのメモリアレイを示し、本発明にかかる権利管理システムの一実施例を図示する。
【図３】図２に示した実施例に関する権利割り当てテーブルの典型的な実施形態を示す。
【図４】本発明にかかる権利割り当てテーブルの他の典型的な実施形態の概略図である。
【図５】本発明にかかる権利割り当てテーブルの他の典型的な実施形態の概略図である。
【符号の説明】
１  アドレスバス
２  データバス
１０  権利割り当てシステム
１１  ＯＲゲート
１２  ゲート
ＬＴ１  ラッチ
ＬＴ２  第２のラッチ
【図１】
2005037974.tif 000003
【図２】
2005037974.tif 000004
【図３】
2005037974.tif 000005
【図４】
2005037974.tif 000006
【図５】
2005037974.tif 000007
【手続補正書】
【提出日】平成13年6月27日(2001.6.27)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マイクロプロセッサによって実行可能なプログラムに、マイクロプロセッサのメモリアレイの、あるゾーンへの永続的アクセス権を割り当てるための権利割り当てシステムを備え、前記システムは第１の入力においてプログラムまたはサブプログラムの識別コードを、第２の入力においてアドレスバスを流れる現在のアドレスによって指定されたメモリゾーンの識別コードを受信する、権利割り当てテーブルを備える、保護されたマイクロプロセッサにおいて、
前記システムは、少なくとも２つのプログラムによって共有されるサブプログラムに対して、前記サブプログラムが前記プログラムの一つによって呼び出される場合、あるメモリゾーンへの一時的なアクセス権を与えるためにアレンジされ、この目的のために、サブプログラムの実行中に、前記権利割り当てテーブルの第１の入力に、前記サブプログラムを呼び出したプログラムの識別コードを入力する手段を備えた、ことを特徴とする保護されたマイクロプロセッサ。
【請求項２】
請求項１記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムに対して呼出しプログラムの権利を一時的に与える手段を備える、ことを特徴とするマイクロプロセッサ。
【請求項３】
請求項１または２に記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムに対して、呼出しプログラムとは独立した永続的な権利をさらに与える手段を備える、ことを特徴とするマイクロプロセッサ。
【請求項４】
請求項１ないし３のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、サブプログラムの実行中に、前記権利割り当てテーブルの第１の入力に、実行されている前記サブプログラムの識別コードと、前記サブプログラムを呼び出したプログラムの識別コードとを、同時に入力する手段を備えた、ことを特徴とするマイクロプロセッサ。
【請求項５】
請求項１ないし４のいずれかに記載のマイクロプロセッサにおいて、
実行されている前記サブプログラムの識別コードのビットと、前記サブプログラムを呼び出したプログラムの識別コードのビットが、前記権利割り当てテーブルの第１の入力に入力される前に論理機能によって結合される、ことを特徴とするマイクロプロセッサ。
【請求項６】
請求項１ないし５のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、
命令の実行中に、実行されている前記プログラムまたはサブプログラムの識別コードを格納するための第１のラッチと、
その入力が前記第１のラッチの出力に接続され、マイクロプロセッサがサブプログラムに切り換える時に実行されているプログラムの識別コードを格納するようにレイアウトされて、このサブプログラムを呼び出したプログラムの識別コードを形成するものであって、マイクロプロセッサが前記サブプログラムを終了するとリセットされる第２のラッチとを備える、ことを特徴とするマイクロプロセッサ。
【請求項７】
請求項６記載のマイクロプロセッサにおいて、
前記第２のラッチのローディング及びリセットは、アドレスバスを流れる現在のアドレスを入力において受信し、サブプログラムの第１の命令のアドレスが検出されると、ローディング信号を前記第２のラッチに入力するようにレイアウトされ、リセット信号を前記第２のラッチに送信する、アドレスデコーダによって制御される、ことを特徴とするマイクロプロセッサ。
【請求項８】
請求項１ないし７のいずれかに記載のマイクロプロセッサにおいて、
現在のアドレスによって指定されるメモリゾーンの識別コードと、実行されているプログラムおよびサブプログラムの識別コードとは、アドレスバスを流れる現在のアドレスを入力において受信するアドレスデコーダによって送信される、ことを特徴とするマイクロプロセッサ。
【請求項９】
請求項１ないし８のいずれかに記載のマイクロプロセッサにおいて、
前記権利割り当てシステムは、前記アドレスバスに存在するアドレスが、実行されているプログラムまたはサブプログラムに永続的にあるいは一時的に割り当てられる権利に対応しない場合、違反信号を送信する、ことを特徴とするマイクロプロセッサ。
【請求項１０】
請求項９記載のマイクロプロセッサにおいて、
前記アドレス違反信号は、割り込みデコーダによって処理されて、マイクロプロセッサをアドレス違反処理サブプログラムに送る、ことを特徴とするマイクロプロセッサ。