(57)【特許請求の範囲】
【請求項１】
複数の処理素子（１１，１２，１３）を備えるシステムで使用するためのメモリ保護ユニット（１４，１５，１６）であって、
少なくとも１つの第１のアクセスコントロールユニット（３１）と、少なくとも１つの第２のアクセスコントロールユニット（３２）とを有し、
前記第１のアクセスコントロールユニット（３１）および前記第２のアクセスコントロールユニット（３２）は、前記複数の処理素子（１１，１２，１３）のうちの、前記メモリ保護ユニット（１４，１５，１６）に関連する、関連の処理素子（１１，１２，１３）が記憶素子（１７）にアクセスするのを制御するようにプログラムされており、
前記関連の処理素子（１１，１２，１３）の前記記憶素子（１７）へのアクセスは、前記第１のアクセスコントロールユニット（３１）および前記第２のアクセスコントロールユニット（３２）がアクセスを許可した場合に許可され、該第１のアクセスコントロールユニット（３１）または該第２のアクセスコントロールユニット（３２）がアクセスを拒否した場合には拒否され、
前記第１のアクセスコントロールユニット（３１）は、前記関連の処理素子（１１，１２，１３）によってのみプログラム可能であり、
前記第２のアクセスコントロールユニット（３２）のプログラミングは、前記複数の処理素子（１１，１２，１３）のうちの、前記関連の処理素子ではない他の処理素子によって読み出し可能であり、
ハードウエアユニット（３３）が、前記第２のアクセスコントロールユニット（３２）のプログラミングが前記関連の処理素子（１１，１２，１３）のみによっては行われ得ないことを保証し、
前記ハードウエアユニット（３３）は、リセット信号を受信するための外部ピン（３４)を有し、前記リセット信号の受信後に一度だけまたは前記リセット信号の受信後の所定の時間内だけ、前記ハードウエアユニット（３３）により前記第２のアクセスコントロールユニット（３２）のプログラミングが許可されるメモリ保護ユニット。
【請求項２】
請求項１記載のメモリ保護ユニットであって、
前記ハードウエアユニット（３３）は、前記第２のアクセスコントロールユニット（３２）のプログラミングのイネーブルまたはディスエーブルをするロックレジスタを有するメモリ保護ユニット。
【請求項３】
請求項２記載のメモリ保護ユニットであって、
前記ロックレジスタへのアクセスは、前記リセット信号の受信後にだけ許可されるメモリ保護ユニット。
【請求項４】
請求項１乃至３のいずれか一項記載のメモリ保護ユニットであって、
前記ハードウエアユニット（３３）はタイマを有し、前記第２のアクセスコントロールユニット（３２）のプログラミングを、前記リセット信号の受信後の所定の時間内でだけ許可し、以降のプログラミングは前記ハードウエアユニット（３３）によってエラー信号が発生されるメモリ保護ユニット。
【請求項５】
関連のメモリ保護ユニット（１４，１５，１６）を備える複数の処理素子（１１，１２，１３）を有する処理システムの操作方法であって、
・各メモリ保護ユニット（１４，１５，１６）の第１のアクセスコントロールユニット（３１）をプログラミングするとき、各処理素子（１１，１２，１３）が当該処理素子（１１，１２，１３）に関連するメモリ保護ユニット（１４，１５，１６）の第１のアクセスコントロールユニット（３１）をプログラムし、
・各処理素子（１１，１２，１３）に関連する各メモリ保護ユニット（１４，１５，１６）の第２のアクセスコントロールユニット（３２）をプログラミングするとき、第２のアクセスコントロールユニット（３２）のプログラミングが前記関連の処理素子ではない処理素子によってチェックされ、
・前記処理素子（１１，１２，１３）による記憶素子（１７）へのアクセスは、当該処理素子（１１，１２，１３）に関連するメモリ保護ユニット（１４，１５，１６）の第１のアクセスコントロールユニット（３１）および第２のアクセスコントロールユニット（３２）がアクセスを許可した場合に許可され、第１のアクセスコントロールユニット（３１）または第２のアクセスコントロールユニット（３２）がアクセスを拒否した場合には拒否され、
前記第２のアクセスコントロールユニット（３２）のプログラミングは、前記関連のメモリ保護ユニット（１４，１５，１６）によるリセット信号の検出を必要とし、
該第２のアクセスコントロールユニット（３２）は、前記リセット信号の検出後に一度だけまたは前記リセット信号の検出後の所定の時間内だけ、前記複数の処理素子（１１，１２，１３）のうちの、前記メモリ保護ユニット（１４，１５，１６）の前記関連の処理素子ではない他の処理素子によって再プログラム可能である方法。
【請求項６】
請求項５記載の方法であって、
前記第２のアクセスコントロールユニット（３２）のプログラミングの正確さのチェックは周期的に行われ、チェックが失敗した場合にはエラー信号が発生される方法。
【請求項７】
請求項５記載の方法であって、
前記第２のアクセスコントロールユニット（３２）のプログラミングの正確さのチェックは、第２のアクセスコントロールユニット（３２）が再プログラムされた場合に実行される方法。
【請求項８】
請求項５記載の方法であって、
前記第２のアクセスコントロールユニット（３２）のプログラミングと、該プログラミングの正確さのチェックはセーフコア（５００）によって実行される方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ保護ユニットおよび不正アクセスからの記憶素子の保護方法、ならびに複数の処理素子を有するマルチプロセッシングシステムでの記憶領域へのアクセス管理に関する。一般的に本発明は、すべての種類の記憶素子にメモリ保護のために適用することができる。
【背景技術】
【０００２】
メモリ保護に使用される種々の形式のデバイスおよびメモリ管理ユニットが存在する。特許文献１は、そのようなメモリ保護ユニットを開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】ＵＳ２００８／０１５５１８８
【発明の概要】
【発明の効果】
【０００４】
独立請求項によるメモリ保護ユニットおよび方法は、２つのアクセスコントロールユニットを使用することにおり、非常に安全で同時に非常にフレキシブルなメモリ保護が実現されるという利点を有する。アクセスコントロールユニットの１つは、種々のプログラム装置による不所望のアクセスからメモリを保護する。別のアクセスコントロールユニットは、１つの処理素子によって実行される種々のプログラムまたはタスクの不所望のアクセスからメモリを保護する。
【０００５】
さらなる利点は従属請求項の構成によって実現される。
【０００６】
ハードウエアユニットを使用することにより、不所望のアクセスを許容してしまうソフトウエアエラーの確率が低減される。ハードウエアユニットは、ソフトウエアエラーから記憶素子を保護する。ソフトウエアエラーは、記憶素子への不法アクセスを発生することができない。
【０００７】
さらにハードウエアユニットは、第２のアクセスコントロールユニットのプログラミングが関連する処理素子によっては行われ得ないことを保証する。第２のアクセスコントロールユニットは、関連する処理素子ではない別の処理素子によってプログラミング可能である。このことは、関連の処理素子が第２のアクセスコントロールユニットのアドレスを間違ってプログラミングすることを防止する。
【０００８】
ハードウエアユニットは、第２のアクセスコントロールユニットの後のプログラミングをコントロールするロックレジスタを有することができる。さらにプログラミング使用しようとするいずれの試みもエラー信号を発生する。したがってメモリ保護ユニットは不法プログラミングからよりいっそう保護される。
【０００９】
メモリ保護ユニットは、第２のアクセスコントロールユニットをプログラムするためにはリセット信号を必要とするように構成することができ、メモリ保護ユニットはリセットの後に一度だけ、および／またはリセット後の所定の期間だけプログラムすることができる。第２のアクセスコントロールユニットは、通常動作中はプログラムすることができない。したがってメモリ保護ユニットは、よりいっそう保護される。メモリ保護ユニットが保護されているから、記憶素子に対するいっそうの保護が得られる。
【００１０】
第２のアクセスコントロールユニットが正しくプログラミングされているかをチェックする効率的な方法の１つは、各処理素子が、すべての第２のアクセスコントロールユニットの格納されているアクセス権限を周期的にチェックし、メモリ領域への所望のアクセス権限と比較することである。チェックが失敗するとエラー信号が発生する。したがってこの方法は、許可されていないメモリ領域へのアクセスからマルチプロセッシング装置を保護する。この方法は、非常にわずかなリソースしか必要としない。この方法は、第２のアクセスコントロールユニットがプログラムされると再び適用される。したがってこの方法はその度に、第２のアクセスコントロールユニットのアクセス権限の内容が正しいことを保証する。
【００１１】
第２のアクセスコントロールユニットはセーフコアによってプログラミングすることができ、第２のアクセスコントロールユニットのプログラミングはセーフコア自体によってチェックすることができる。したがってセーフコアはシステム全体をコントロールする。セーフコアは、ランダムなハードウエアエラーとソフトウエアエラーの両方から保護されており、このことはシステムをさらに安全にする。セーフコアによって高度の保護が達成される。
【図面の簡単な説明】
【００１２】
【図１】マルチプロセッサシステムにおける本発明の実施形態によるメモリ保護ユニットの機能ブロック図。
【図２】メモリ保護ユニットをプログラミングするためのセーフコアを有するマルチプロセッサシステムを示す図。
【図３】処理素子１１，１２，１３がメモリ保護ユニット１４，１５，１６に、第２のアクセスコントロールユニット３２をプログラミングするため、またはプログラムの読み出しのためにどのようにアクセスすることができるかを示す図。
【図４】処理素子１１，１２，１３がメモリ保護ユニット１４，１５，１６に、第２のアクセスコントロールユニット３２をプログラミングするため、またはプログラムの読み出しのためにどのようにアクセスすることができるかを示す図。
【図５】処理素子１１，１２，１３、バスシステム２００および記憶素子１７との間の択一的な接続を示す図。
【発明を実施するための形態】
【００１３】
図１は、複数の処理素子１１，１２，１３を有するブロック回路図を示す。第１の処理素子１１は、接続線１０１を介して第１のメモリ保護ユニット１４に接続されている。第２の処理素子１２は、接続線１０２を介して第２のメモリ保護ユニット１５に接続されている。第３の処理素子１３は、接続線１０３を介して第３のメモリ保護ユニット１６に接続されている。メモリ保護ユニット１４，メモリ保護ユニット１５およびメモリ保護ユニット１６は記憶素子１７に、システムバス２００を介して接続されている。システムバスは、クロスバー相互接続、または他のチップ内部通信システムとすることができる。メモリ保護ユニット１４，１５，１６はそれぞれ、第１のアクセスコントロールユニット３１，第２のアクセスコントロールユニット３２およびハードウエアユニット３３を有する。ハードウエアユニット３３は第２のアクセスコントロールユニット３２に、内部リセット信号３５によって接続される。ハードウエアユニット３３は、リセット線３００に接続された外部ピン３４を有する。第１のアクセスコントロールユニット３１、第２のアクセスコントロールユニット３２およびハードウエアユニット３３は１４，１５，１６内に対応する機能を有するが、それらは「同じ」ではない。実現においては、メモリ保護ユニットを処理素子の一部または通信システムの一部とみなすこともできる。
【００１４】
処理素子１１は、メモリ保護ユニット１４を介してだけ記憶素子１７にアクセスできる。同様に処理素子１２と１３も、メモリ保護ユニット１５と１６を介してだけ記憶素子１７にアクセスできる。アクセスとは、処理素子１１，１２，１３が記憶素子１７の読み出しまたは書き込みをイネーブルするためのアドレスを発行することを意味する。
【００１５】
処理素子１１，１２，１３は、プログラムを実行できるプロセッサ、または記憶素子１７への読み出しまたは書き込み命令を発行することのできるコントローラである。プロセッサはたとえば中央処理ユニットＣＰＵ、端末プロセッサまたはコプロセッサとすることができる。コントローラはたとえば、ダイレクトメモリアクセス（ＤＭＡ）コントローラまたはＣＡＮコントローラとすることができる。
【００１６】
記憶素子１７は、データまたはプログラムを格納するためのメモリセルの集合体であり、一時的または恒久的にアドレスを介してアクセスすることができる。処理素子１１，１２，１３はメモリのすべてまたは一部にアクセスすることができる。たとえば記憶素子１７はＲＡＭ、ＲＯＭ、ＦＬＡＳＨまたは不揮発性ＲＡＭ等であるか、または端末素子のメモリインタフェースまたはそれら記憶素子の組合せであってよい。
【００１７】
１８，１９により表されたプログラムは、処理素子１１，１２，１３により実行される任意の大きさの実行可能命令シーケンスである。処理素子により実行されるプログラムの種類は多岐にわたり、処理素子は記憶素子１７にアクセスする必要がある。プログラムは記憶素子１７のすべてまたは一部を使用することができる。用語「プログラム」と「タスク」は区別する必要がない。
【００１８】
記憶素子１７は処理素子１１，１２，１３のために、「読み出し専用」モードまたは「読み出しおよび書き込み」モードで使用される。記憶素子１７の一部は、所定の処理素子または所定のプログラムによってのみアクセス可能にすることもできる。図１に示すように、記憶領域２１，２２，２３はそれぞれの処理素子１１，１２，１３に対して専用である。記憶領域２１は記憶領域２１０，２１１によるサブ構造を有しており、これらの記憶領域２１０，２１１は処理素子１１により実行されるタスク１８，１９に依存して動的に割り当てられる。１つの処理素子により実行される特定のプログラムのためにリザーブされた記憶領域には、他の処理素子は書き込みアクセスも読み出しアクセスもすることができない。図１の記憶領域２１は、処理素子１１により実行されるプログラムによってのみアクセス可能である。さらに記憶領域２３は、処理素子１２により実行されるプログラムによってのみアクセス可能である。記憶領域２２は処理素子１２によってのみアクセス可能である。
【００１９】
どのプログラム１８，１９が処理素子１１により実行されるかに応じて、第１のアクセスコントロールユニット３１が異なるサブ記憶領域２１０，２１１へのアクセスを許可する。これは第１のアクセスコントロールユニット３１を動的にプログラミングすることにより達成される。
簡単にするため以下では、処理素子１１とメモリ保護ユニット１４について説明する。特に述べない限り、同じことが他の処理素子１２，１３とメモリ保護ユニット１５，１６に対しても当てはまる。
【００２０】
メモリ保護ユニット１４，１５，１６の第１のアクセスコントロールユニット３１と第２のアクセスコントロールユニット３２は、アドレスチェック機能と処理素子１１，１２，１３のアクセス命令モード（読み出し、書き込みコントロール）とを有する。そのために許容アドレスについての制限が第１と第２のアクセスコントロールユニット３１，３２に格納されている。関連の処理素子１１，１２，１３による記憶素子１７への読み出しまたは書き込みアクセスはメモリ保護ユニット１４，１５，１６を通して行われる。第１のアクセスコントロールユニット３１と第２のアクセスコントロールユニット３２がアクセスを許可する場合に、関連の処理素子１１が要求されたアドレスへアクセスすることが承認される。第１のアクセスコントロールユニット３１または第２のアクセスコントロールユニット３２のどちらかがアクセスを拒絶すると、このアクセスは拒否される。
【００２１】
対応するメモリ保護ユニット１４の第１のアクセスコントロールユニット３１は関連する処理素子１１によりプログラム可能である。第１のアクセスコントロールユニット３１は、各タスク１８，１９に対して動的にプログラムされる。第１のアクセスコントロールユニット３１のプログラミングは、実行しているタスクそれ自体の一部とするべきではない。したがってプログラミングは、関連の処理素子１１で実行しているプログラムの特定の一部によってだけ許可される。好ましくは第１のアクセスコントロールユニット３１は、オペレーティングシステムを通してだけプログラムすべきである。記憶領域２１０はタスク１８によってのみアクセスが許可され、記憶領域２１１はタスク１９に対してだけアクセス可能であり、オペレーティングシステムによりプログラムされる。このようにしてタスク１８，１９は許容された記憶領域２１０，２１１にだけアクセスをすることができる。したがい第１のアクセスコントロールユニット３１は、この処理素子１１上の意図しないプログラムエラーからメモリを保護する。オペレーティングシステムは、プログラムの実行をコントロールし、メモリ、ＣＰＵ、入出力デバイスなどのリソースのアロケーションと使用をコントロールするソフトウエアである。
【００２２】
第２のアクセスコントロールユニット３２は、定義された記憶領域に対するメモリ保護を提供する。関連の処理素子１１，１２，１３による記憶素子１７への読み出しまたは書き込みアクセスは第２のアクセスコントロールユニット３２により許可されなければならない。そのために許容アドレスについての指令が第２のアクセスコントロールユニット３２に格納されている。第２のアクセスコントロールユニット３２は、種々の処理素子１１，１２，１３に対して記憶領域をアロケートするようにプログラムされている。第２のアクセスコントロールユニット３２をプログラミングするための種々の方法を以下に説明する。
【００２３】
第１の実施例では、関連の処理素子による第２のアクセスコントロールユニット３２のプログラミングが許可される。しかし第２のアクセスコントロールユニット３２のプログラミングは、関連の処理素子ではない他の処理素子によって読み出し可能である。初期化の後の第１のステップで、各メモリ保護ユニット１４，１５，１６の第１のアクセスコントロールユニット３１と第２のアクセスコントロールユニット３２が、関連の処理素子１１，１２，１３によりプログラムされる。その後、第２のアクセスコントロールユニット３２のプログラミングは、関連の処理素子ではない他の処理素子によって読み出される。一例として処理素子１１は、メモリ保護ユニット１４の第２のアクセスコントロールユニット３２をプログラムすることができる。第２のアクセスコントロールユニット３２のプログラミングは、関連の処理素子ではない１２または１３により読み出され、第２のアクセスコントロールユニット３２の所望のプログラミングと比較される。比較に失敗すると、エラーがシステムに通報され、適切な応答がトリガされる。上に述べたように、第２のアクセスコントロールユニット３２のプログラミングは静的とみなし得る。
【００２４】
別の例では、関連のすべての処理素子のメモリ保護ユニットの第２のアクセスコントロールユニット３２のプログラミングが１つの処理素子によって実行され、プログラミングの正確さが別の処理素子によってチェックされる。図１の例として、メモリ保護ユニット１５と１６の第２のアクセスコントロールユニット３２は処理素子１１によってプログラム可能であり、プログラミングのチェックは処理素子１２によって実行される。メモリ保護ユニット１４の第２のアクセスコントロールユニット３２は処理素子１２によってプログラム可能であり、プログラミングのチェックは処理素子１３によって実行される。
【００２５】
第２のアクセスコントロールユニット３２のプログラミングとチェックの択一的方法では、処理素子１１がメモリ保護ユニット１５の第２のアクセスコントロールユニット３２をプログラムすることができ、チェックは処理素子１３によって実行することができる。処理素子１２はメモリ保護ユニット１６の第２のアクセスコントロールユニット３２をプログラムすることができ、チェックは処理素子１１によって実行することができる。同様に処理素子１３はメモリ保護ユニット１４の第２のアクセスコントロールユニット３２をプログラムすることができ、チェックは処理素子１２によって実行することができる。
【００２６】
第２のアクセスコントロールユニット３２に格納されたプログラミングをチェックする択一的方法では、すべての処理素子が第２のアクセスコントロールユニット３２から読み出すことができる。処理素子は、すべての第２のアクセスコントロールユニット３２のプログラムミングの正確さを、すべてのメモリ保護ユニットの第２のアクセスコントロールユニット３２に格納されたプログラミングを読み出すことにより周期的にチェックする。この方法により、記憶領域２１，２２，２３のどの領域がどの処理素子によりアクセス可能であるかが決定される。この情報は、記憶領域２１，２２，２３と処理素子との所望の割当てと比較される。このチェックに失敗すると、所定の処理素子に対してエラー信号が発生され、第２のアクセスコントロールユニット３２が再プログラムされる。たとえば記憶領域２２は、処理素子１２によってのみアクセス可能にすべきである。メモリ保護ユニット１４と１６の第２のアクセスコントロールユニット３２が、処理素子１１と１３が記憶領域２２にアクセスするようプログラムされている場合、処理素子１２が処理素子１１と１３にエラー信号を発生して、メモリ保護ユニット１４と１６の第２のアクセスコントロールユニット３２を再プログラミングさせることができる。択一的にエラー信号は、シャットダウンまたはリセットのような広範な応答をシステムに引き起こすこともできる。
【００２７】
上に説明したように、処理素子による第２のアクセスコントロールユニット３２のプログラミングとチェックは、初期化中に設定可能である。
【００２８】
図１に示すようなマルチプロセッシングシステムでは、複数の処理素子を、プログラムを実行することのできないＤＭＡコントローラまたはＣＡＮコントローラとして制御することができる。そのようなシステムには、システムの少なくとも２つの処理素子１１，１２が中央処理ユニット、コプロセッサ、端末コントローラまたはプログラムを実行できる他のユニットでなければならず、その他はバスマスタのようにプログラムを実行しないＤＭＡコントローラまたはＣＡＮコントローラ、たとえば１３とすることができる。この場合、処理素子１１，１２は、処理素子１３に関連するメモリ保護ユニット１６の第１と第２のアクセスコントロールユニット３１，３２のプログラミングとプログラミングの正確さのチェックを行う。
【００２９】
図２は、セーフコア５００を有するシステムを示す。セーフコア５００は、ロックステップモードでの処理素子５０１と５０２の動作的ペアである。択一的にセーフコアは、監視ＣＰＵにより管理されるＣＰＵとして実現することもできる。第１の処理素子５０１と第２の処理素子５０２はコンパレータ５０３に接続されている。処理素子５０１、処理素子５０２およびコンパレータ５０３は、セーフコア５００と呼ばれる論理コアを形成する。セーフコア５００とメモリ保護ユニット５０４はそれぞれ通信線１０４を介して接続されている。メモリ保護ユニット５０４は、システムバス２００を介して記憶素子１７に接続されている。図２に示された記憶素子１７、処理素子１２，１３、メモリ保護ユニット１５，１６、通信線１０２，１０３、リセット線３００およびシステムバス２００のような他の素子および接続は、図１で説明したのと同じ素子であり、同じ機能を実行する。コンパレータ５０３は、２つの処理素子５０１，５０２の出力を監視し、不一致の場合にはエラーのフラグを立てる。
【００３０】
ロックステップは、マイクロプロセッサシステムで精度の高いエラー検出を達成するために使用される技術である。これは、第２の同じ処理素子５０２を、第１の処理素子５０１の動作を監視し、検証するシステムに追加することにより実現される。２つの処理素子５０１，５０２は、システムスタートアップ中に同じ状態に初期化され、これらは同じ入力を受信し、したがって通常動作中は２つの処理素子５０１，５０２の状態はクロックごとに同じである。これをロックステップでの動作と呼ぶ。ロックステップ技術は、処理素子５０１または５０２のどちらかにエラーが発生すると、２つの処理素子５０１，５０２の状態間に差が発生し、これが出力の差として明白になることを前提にしている。したがってロックステップは、２つの処理素子５０１，５０２の出力を監視し、不一致の場合にはエラーのフラグを立てる。
【００３１】
時間遅延またはクロック遅延を処理素子５０１と処理素子５０２との間に設けることができる。したがって２つの処理素子５０１，５０２は、同じプログラムをわずかな遅延時間、たとえば１．５または２サイクル差で処理する。ランダムエラーが発生すると、２つの処理素子５０１，５０２は同じエラーを同じサイクルでは実行せず、遅延分だけずらして実行する。この時間遅延が発見のための手段であり、したがって両方の処理素子５０１，５０２上でのプログラムの実行におけるランダムエラーを除去する。入力データと出力データの遅延により、セーフコア５００は１つの処理素子で発生するいくつかのエラーを低減することができる。
【００３２】
メモリ保護ユニット５０４の第２のアクセスコントロールユニット３２はすでにセーフコアである論路コアとしての追加のユニットとすることができる。したがってメモリ保護ユニット５０４の第２のアクセスコントロールユニット３２は必要ではない。完全なメモリ保護ユニットが存在していれば、メモリ保護ユニット５０４の第１のアクセスコントロールユニット３１と第２のアクセスコントロールユニット３２はセーフコア５００自体によりプログラムされる。メモリ保護ユニット５０４の第２のアクセスコントロールユニット３２は、セーフコア５００の初期化中にプログラムされる。メモリ保護ユニット５０４の第１のアクセスコントロールユニット３１は、セーフコア５００により実行される各タスクに対する動作中に動的にプログラムされる。
【００３３】
メモリ保護ユニット１５と１６の第２のアクセスコントロールユニット３２は、セーフコア５００によりプログラムされる。好ましくはこれは初期化中に行われる。要求された許容アドレスは適切にプログラムされる。正しいプログラミングは、セーフコア５００自体により実行することのできる単純な読み出しテストによって保証することができる。
【００３４】
セーフコアを備えることの利点は、セーフコア５００のエラー発見能力が高いので、セーフコアによりシステム全体をコントロールできることである。
【００３５】
図３、４および５は、処理素子１１，１２，１３がメモリ保護ユニット１４，１５，１６に、種々の第２のアクセスコントロールユニット３２をプログラミングするために、または第２のアクセスコントロールユニット３２のプログラムの読み出しのためにどのようにアクセスすることができるかを示す。
【００３６】
図３は、３つの処理素子１１，１２，１３と、３つのメモリ保護ユニット１１４，１５，１６を示し、これらは図１と２ですでに説明した。メモリ保護ユニット１４は、通信線１０１により関連の処理素子１１に接続されている。メモリ保護ユニット１５は、通信線１０２により関連の処理素子１２に接続されている。メモリ保護ユニット１６は、通信線１０３により関連の処理素子１３に接続されている。簡単にするため、メモリ保護ユニット１４，１５，１６、システムバス２００および記憶素子１７の内部構造は図示されていない。さらにメモリ保護ユニット１４は、別の通信線１２００により関連の処理素子１２に接続されている。メモリ保護ユニット１５は、別の通信線１３００により関連の処理素子１３に接続されている。メモリ保護ユニット１６は、別の通信線１１００により関連の処理素子１１に接続されている。この構成により、処理素子１１，１２，１３とメモリ保護ユニット１１４，１５，１６との間の通信は、通シンセを介してのみ可能である。メモリ保護ユニット１４は関連の処理素子１１および別の処理素子１２と通信することができる。メモリ保護ユニット１５は関連の処理素子１２および別の処理素子１３と通信することができる。メモリ保護ユニット６は関連の処理素子１３および別の処理素子１１と通信することができる。このような固定配線接続は、関連の処理素子１１，１２，１３が関連のメモリ保護ユニット１４，１５，１６をプログラムすることができ、このプログラミングを別の処理素子がコントロールできる場合に使用することができる。もちろん通信線は確立されていなければならず、容易には変更できないのでフレキシビリティは低い。
【００３７】
図４は、さらにフレキシブルなシステムを示す。図４は、３つの処理素子１１，１２，１３と、３つのメモリ保護ユニット１１４，１５，１６を示し、これらは図１と２ですでに説明した。メモリ保護ユニット１４は、通信線１０１により関連の処理素子１１に接続されている。メモリ保護ユニット１５は、通信線１０２により関連の処理素子１２に接続されている。メモリ保護ユニット１６は、通信線１０３により関連の処理素子１３に接続されている。簡単にするため、メモリ保護ユニット１４，１５，１６、システムバス２００および記憶素子１７の内部構造は図示されていない。さらにすべての処理素子１１，１２，１３とすべてのメモリ保護ユニット１４，１５，１６は別のバスシステム６００に接続されている。この別のバスシステム６００は、図１と２で説明したバスシステム２００から独立している。別のバスシステム６００により、各処理素子１１，１２，１３と各メモリ保護ユニット１４，１５，１６との間で通信をすることができる。この構成は、メモリ保護ユニット１４，１５，１６を処理素子１１，１２，１３によりプログラムするためのいずれの方法にも使用することができる。別のバスシステム６００は、いずれの処理素子１１，１２，１３にもいずれのメモリ保護ユニット１４，１５，１６をプログラムさせることができる。別のバスシステム６００により、いずれの処理素子１１，１２，１３もいずれのメモリ保護ユニット１４，１５，１６のプログラミングを読み出すことができ、したがって第２のアクセスコントロールユニット３２のプログラミングをコントロールし、プログラミングの正確さをチェックすることができる。図４のシステムは、通常のバスシステム２００とは別個に別のバスシステム６００を必要とする。したがいこの構成は、図１と２に示されたシステムと比較して傑出している。
【００３８】
処理素子１４，１５，１６間の通信を確立するための別の方法は、バスシステム２００を使用する。その利点は、別のバスラインが必要ないことである。欠点は、バスシステム２００上のバス負荷が増大し、処理素子１１，１２，１３がバスシステム２００を介するこの別の通信を取り扱う適切なソフトウエアを必要とすることである。しかしこの形式の通信は非常にフレキシブルであり、さらなる措置を必要としない。
【００３９】
図１と２で処理素子１１，１２，１３はバスシステム２００への直接の接続を有しておらず、バスシステム２００にメモリ保護ユニット１４，１５，１６を介して接続されている。図５は、処理素子１１，２１，３１とバスシステム２００との間の択一的な接続を示し、この接続もバスシステム２００または記憶素子１７へのアクセスを許可または拒否するためのメモリ保護ユニットを含む。
【００４０】
処理素子１１はバスシステム２００に、アドレスバス８０１およびデータバス８０４を介して接続されている。メモリ保護ユニット１４はアドレスバス８０１により関連の処理素子１１に接続されており、イネーブル線７００によっても関連の処理素子１１に接続されている。処理素子１２はバスシステム２００に、アドレスバス８０２およびデータバス８０５を介して接続されている。メモリ保護ユニット１５はアドレスバス８０２により関連の処理素子１２に接続されており、イネーブル線７０１によっても関連の処理素子１２に接続されている。処理素子１３はバスシステム２００に、アドレスバス８０３およびデータバス８０６を介して接続されている。メモリ保護ユニット１５はアドレスバス８０３により関連の処理素子１３に接続されており、イネーブル線７０２によっても関連の処理素子１３に接続されている。メモリ保護ユニット１４は、コントロール線８１０によりバスシステム２００に接続されている。メモリ保護ユニット１５は、コントロール線８１１によりバスシステム２００に接続されている。メモリ保護ユニット１６は、コントロール線８１２によりバスシステム２００に接続されている。コントロール線８１０，８１１，８１２は、バスシステム２００または記憶素子１７へのアクセスをコントロールするために使用される。メモリ保護ユニット１４，１５，１６はコントロール信号をこれらのコントロール線８１０，８１１，８１２に送信する。コントロール信号はたとえば、読み出しイネーブル信号、書き込みイネーブル信号、メモリセレクト信号、またはバスシステム２００もしくは記憶素子１７への入出力信号である。簡単にするため、メモリ保護ユニット１４，１５，１６の内部構造は図示されていない。
【００４１】
処理素子１１，１２，１３は、記憶素子１７の読み出しもしくは書き込み命令、またはバスシステム２００へのアクセス命令を発行することができる。処理素子１１，１２，１３はアクセスアドレスをアドレスバス８０１，８０２，８０３上に送り、読み出しイネーブル信号または書き込みイネーブル信号のようなコントロール信号をイネーブル線７００，７０１，７０２に伝送する。メモリ保護ユニット１４，１５，１６は、アドレスバス８０１，８０２，８０３上のアクセスアドレスを、イネーブル線７００，７０１，７０２上の読み出しイネーブル信号または書き込みイネーブル信号とともに監視する。メモリ保護ユニット１４，１５，１６はアクセスアドレスを、各メモリ保護ユニットの第１のアクセスコントロールユニット３１および第２のアクセスコントロールユニット３２に格納されているアドレスと比較する。アドレスが有効なアドレスであれば、メモリ保護ユニット１４，１５，１６は、関連の処理素子１１，１２，１３がバスシステム２００または記憶素子１７にアクセスすることを、コントロール信号をコントロール線８１０，８１１，８１２に伝送することによって許可する。コントロール信号は、バスシステム２００上の、または記憶素子１７への読み出しイネーブル信号または書き込みイネーブル信号とすることができる。アドレスが有効なアドレスでなければ、メモリ保護ユニット１４，１５，１６は、関連の処理素子１１，１２，１３のアクセスを、コントロール線８１０，８１１，８１２をデアクティベートすることにより拒否する。バスシステム２００または記憶素子１７への関連の処理素子１１，１２，１３のアクセスの許可または拒否は、コントロール線８１０，８１１，８１２を通してコントロールされる。したがってメモリ保護ユニット１４，１５，１６は、アドレスバス８０１，８０２，８０３上のアクセスアドレスを監視し、バスシステム２００または記憶素子１７へのアクセスをコントロールする。
【００４２】
メモリ保護ユニット１４，１５，１６，５０４の第２のアクセスコントロールユニット３２は、リセット後に一度プログラムされる。したがって図１から図５に示したメモリ保護ユニット１４，１５，１６は、第２のアクセスコントロールユニット３２のプログラミングに使用されるハードウエアユニット３３を有する。ハードウエアユニット３３は、特別の入力により第２のアクセスコントロールユニット３２のプログラミングを許可するハードウエア素子を有する。
【００４３】
ハードウエアユニット３３は、外部ピン３４を通してリセット線３００に接続されたリセット検出部を有する。第２のアクセスコントロールユニット３２のプログラミングは、ハードウエアユニット３３を通したリセット信号と結び付いている。リセット信号は外部ピン３４に供給される。リセット検出部がリセット信号を検出すると、内部リセット信号３５を供給して第２のアクセスコントロールユニット３２のプログラミングをイネーブルする。リセットの後、第２のアクセスコントロールユニット３２はプログラミングの準備ができる。リセット検出部は、第２のアクセスコントロールユニット３２をプログラムするために、セーフコア５００または所定の処理素子１１，１２，１３への割込みを発生することができる。択一的に、リセット検出部は単純にプログラミングをイネーブルし、プログラミングの後に第２のアクセスコントロールユニット３２へのアクセスをディスエーブルすることができる。次に第２のアクセスコントロールユニット３２は、前に説明したようにセーフコア５００または所定の処理素子１１，１２，１３によりプログラムされる。第２のアクセスコントロールユニット３２をプログラミングするには、リセット検出部およびハードウエアユニット３３に関連して種々の手段がある。
【００４４】
１． 第１の手段は、リセット検出部とワンタイムプログラミングを組み合わせることである。ハードウエアユニット３３は、第２のアクセスコントロールユニット３２がリセット後に正確に一度だけプログラムされることを保証するレジスタを有することができる。第２のアクセスコントロールユニット３２がプログラムされると、その後の第２のアクセスコントロールユニット３２への書き込みアクセスはエラーを引き起こす。
【００４５】
２．第２の手段は、リセット検出部とロックレジスタを組み合わせることである。ハードウエアユニット３３は、ロックレジスタが所定の形式でアクセスされた場合だけ第２のアクセスコントロールユニット３２のプログラムが可能であることを保証するロックレジスタを有することができる。ロックレジスタへのアクセスは、初期化中またはリセット後に許容される。ハードウエアユニット３３のロックレジスタにより、第２のアクセスコントロールユニット３２のプログラミングのイネーブルまたはディスエーブルが可能である。
【００４６】
３．第３の手段は、リセット検出部とタイマを組み合わせることである。ハードウエアユニット３３は、第２のアクセスコントロールユニット３２にリセット後の所定の時間内だけ書き込むことができることを保証するタイマコントロールレジスタを有することができる。第２のアクセスコントロールユニット３２がプログラムされると、その後の第２のアクセスコントロールユニット３２への書き込みアクセスはエラーを引き起こす。タイマコントロールレジスタは所定の時間を維持するようにプログラムすることができる。
【図１】
0005975629.tif 000002
【図２】
0005975629.tif 000003
【図３】
0005975629.tif 000004
【図４】
0005975629.tif 000005
【図５】
0005975629.tif 000006