説明

メモリ保護ユニットおよび記憶素子へのアクセスコントロール方法

【課題】メモリ保護に於いて、効果的かつフレキシブルな保護ユニットを提供する。
【解決手段】処理素子による記憶素子17へのアクセスは、当該処理素子に関連するメモリ保護ユニット15,16の第1のアクセスコントロールユニット31と第2のアクセスコントロールユニット32がアクセスを許可した場合に許可され、第1のアクセスコントロールユニット31または第2のアクセスコントロールユニット32がアクセスを拒否した場合には拒否される。第1のアクセスコントロールユニット31は関連の処理素子によってのみプログラム可能であり、第2のアクセスコントロールユニット32のプログラミングは、複数の処理素子を有するシステム使用されるが、前記関連の処理素子ではない付加的な処理素子によって読み出し可能である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ保護ユニットおよび不正アクセスからの記憶素子の保護方法、ならびに複数の処理素子を有するマルチプロセッシングシステムでの記憶領域へのアクセス管理に関する。一般的に本発明は、すべての種類の記憶素子にメモリ保護のために適用することができる。
【背景技術】
【0002】
メモリ保護に使用される種々の形式のデバイスおよびメモリ管理ユニットが存在する。特許文献1は、そのようなメモリ保護ユニットを開示する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】US2008/0155188
【発明の概要】
【発明の効果】
【0004】
独立請求項によるメモリ保護ユニットおよび方法は、2つのアクセスコントロールユニットを使用することにおり、非常に安全で同時に非常にフレキシブルなメモリ保護が実現されるという利点を有する。アクセスコントロールユニットの1つは、種々のプログラム装置による不所望のアクセスからメモリを保護する。別のアクセスコントロールユニットは、1つの処理素子によって実行される種々のプログラムまたはタスクの不所望のアクセスからメモリを保護する。
【0005】
さらなる利点は従属請求項の構成によって実現される。
【0006】
ハードウエアユニットを使用することにより、不所望のアクセスを許容してしまうソフトウエアエラーの確率が低減される。ハードウエアユニットは、ソフトウエアエラーから記憶素子を保護する。ソフトウエアエラーは、記憶素子への不法アクセスを発生することができない。
【0007】
さらにハードウエアユニットは、第2のアクセスコントロールユニットのプログラミングが関連する処理素子によっては行われ得ないことを保証する。第2のアクセスコントロールユニットは、関連する処理素子ではない別の処理素子によってプログラミング可能である。このことは、関連の処理素子が第2のアクセスコントロールユニットのアドレスを間違ってプログラミングすることを防止する。
【0008】
ハードウエアユニットは、第2のアクセスコントロールユニットの後のプログラミングをコントロールするロックレジスタを有することができる。さらにプログラミング使用しようとするいずれの試みもエラー信号を発生する。したがってメモリ保護ユニットは不法プログラミングからよりいっそう保護される。
【0009】
メモリ保護ユニットは、第2のアクセスコントロールユニットをプログラムするためにはリセット信号を必要とするように構成することができ、メモリ保護ユニットはリセットの後に一度だけ、および/またはリセット後の所定の期間だけプログラムすることができる。第2のアクセスコントロールユニットは、通常動作中はプログラムすることができない。したがってメモリ保護ユニットは、よりいっそう保護される。メモリ保護ユニットが保護されているから、記憶素子に対するいっそうの保護が得られる。
【0010】
第2のアクセスコントロールユニットが正しくプログラミングされているかをチェックする効率的な方法の1つは、各処理素子が、すべての第2のアクセスコントロールユニットの格納されているアクセス権限を周期的にチェックし、メモリ領域への所望のアクセス権限と比較することである。チェックが失敗するとエラー信号が発生する。したがってこの方法は、許可されていないメモリ領域へのアクセスからマルチプロセッシング装置を保護する。この方法は、非常にわずかなリソースしか必要としない。この方法は、第2のアクセスコントロールユニットがプログラムされると再び適用される。したがってこの方法はその度に、第2のアクセスコントロールユニットのアクセス権限の内容が正しいことを保証する。
【0011】
第2のアクセスコントロールユニットはセーフコアによってプログラミングすることができ、第2のアクセスコントロールユニットのプログラミングはセーフコア自体によってチェックすることができる。したがってセーフコアはシステム全体をコントロールする。セーフコアは、ランダムなハードウエアエラーとソフトウエアエラーの両方から保護されており、このことはシステムをさらに安全にする。セーフコアによって高度の保護が達成される。
【図面の簡単な説明】
【0012】
【図1】マルチプロセッサシステムにおける本発明の実施形態によるメモリ保護ユニットの機能ブロック図。
【図2】メモリ保護ユニットをプログラミングするためのセーフコアを有するマルチプロセッサシステムを示す図。
【図3】処理素子11,12,13がメモリ保護ユニット14,15,16に、第2のアクセスコントロールユニット32をプログラミングするため、またはプログラムの読み出しのためにどのようにアクセスすることができるかを示す図。
【図4】処理素子11,12,13がメモリ保護ユニット14,15,16に、第2のアクセスコントロールユニット32をプログラミングするため、またはプログラムの読み出しのためにどのようにアクセスすることができるかを示す図。
【図5】処理素子11,12,13、バスシステム200および記憶素子17との間の択一的な接続を示す図。
【発明を実施するための形態】
【0013】
図1は、複数の処理素子11,12,13を有するブロック回路図を示す。第1の処理素子11は、接続線101を介して第1のメモリ保護ユニット14に接続されている。第2の処理素子12は、接続線102を介して第2のメモリ保護ユニット15に接続されている。第3の処理素子13は、接続線103を介して第3のメモリ保護ユニット16に接続されている。メモリ保護ユニット14,メモリ保護ユニット15およびメモリ保護ユニット16は記憶素子17に、システムバス200を介して接続されている。システムバスは、クロスバー相互接続、または他のチップ内部通信システムとすることができる。メモリ保護ユニット14,15,16はそれぞれ、第1のアクセスコントロールユニット31,第2のアクセスコントロールユニット32およびハードウエアユニット33を有する。ハードウエアユニット33は第2のアクセスコントロールユニット32に、内部リセット信号35によって接続される。ハードウエアユニット33は、リセット線300に接続された外部ピン34を有する。第1のアクセスコントロールユニット31、第2のアクセスコントロールユニット32およびハードウエアユニット33は14,15,16内に対応する機能を有するが、それらは「同じ」ではない。実現においては、メモリ保護ユニットを処理素子の一部または通信システムの一部とみなすこともできる。
【0014】
処理素子11は、メモリ保護ユニット14を介してだけ記憶素子17にアクセスできる。同様に処理素子12と13も、メモリ保護ユニット15と16を介してだけ記憶素子17にアクセスできる。アクセスとは、処理素子11,12,13が記憶素子17の読み出しまたは書き込みをイネーブルするためのアドレスを発行することを意味する。
【0015】
処理素子11,12,13は、プログラムを実行できるプロセッサ、または記憶素子17への読み出しまたは書き込み命令を発行することのできるコントローラである。プロセッサはたとえば中央処理ユニットCPU、端末プロセッサまたはコプロセッサとすることができる。コントローラはたとえば、ダイレクトメモリアクセス(DMA)コントローラまたはCANコントローラとすることができる。
【0016】
記憶素子17は、データまたはプログラムを格納するためのメモリセルの集合体であり、一時的または恒久的にアドレスを介してアクセスすることができる。処理素子11,12,13はメモリのすべてまたは一部にアクセスすることができる。たとえば記憶素子17はRAM、ROM、FLASHまたは不揮発性RAM等であるか、または端末素子のメモリインタフェースまたはそれら記憶素子の組合せであってよい。
【0017】
18,19により表されたプログラムは、処理素子11,12,13により実行される任意の大きさの実行可能命令シーケンスである。処理素子により実行されるプログラムの種類は多岐にわたり、処理素子は記憶素子17にアクセスする必要がある。プログラムは記憶素子17のすべてまたは一部を使用することができる。用語「プログラム」と「タスク」は区別する必要がない。
【0018】
記憶素子17は処理素子11,12,13のために、「読み出し専用」モードまたは「読み出しおよび書き込み」モードで使用される。記憶素子17の一部は、所定の処理素子または所定のプログラムによってのみアクセス可能にすることもできる。図1に示すように、記憶領域21,22,23はそれぞれの処理素子11,12,13に対して専用である。記憶領域21は記憶領域210,211によるサブ構造を有しており、これらの記憶領域210,211は処理素子11により実行されるタスク18,19に依存して動的に割り当てられる。1つの処理素子により実行される特定のプログラムのためにリザーブされた記憶領域には、他の処理素子は書き込みアクセスも読み出しアクセスもすることができない。図1の記憶領域21は、処理素子11により実行されるプログラムによってのみアクセス可能である。さらに記憶領域23は、処理素子12により実行されるプログラムによってのみアクセス可能である。記憶領域22は処理素子12によってのみアクセス可能である。
【0019】
どのプログラム18,19が処理素子11により実行されるかに応じて、第1のアクセスコントロールユニット31が異なるサブ記憶領域210,211へのアクセスを許可する。これは第1のアクセスコントロールユニット31を動的にプログラミングすることにより達成される。
簡単にするため以下では、処理素子11とメモリ保護ユニット14について説明する。特に述べない限り、同じことが他の処理素子12,13とメモリ保護ユニット15,16に対しても当てはまる。
【0020】
メモリ保護ユニット14,15,16の第1のアクセスコントロールユニット31と第2のアクセスコントロールユニット32は、アドレスチェック機能と処理素子11,12,13のアクセス命令モード(読み出し、書き込みコントロール)とを有する。そのために許容アドレスについての制限が第1と第2のアクセスコントロールユニット31,32に格納されている。関連の処理素子11,12,13による記憶素子17への読み出しまたは書き込みアクセスはメモリ保護ユニット14,15,16を通して行われる。第1のアクセスコントロールユニット31と第2のアクセスコントロールユニット32がアクセスを許可する場合に、関連の処理素子11が要求されたアドレスへアクセスすることが承認される。第1のアクセスコントロールユニット31または第2のアクセスコントロールユニット32のどちらかがアクセスを拒絶すると、このアクセスは拒否される。
【0021】
対応するメモリ保護ユニット14の第1のアクセスコントロールユニット31は関連する処理素子11によりプログラム可能である。第1のアクセスコントロールユニット31は、各タスク18,19に対して動的にプログラムされる。第1のアクセスコントロールユニット31のプログラミングは、実行しているタスクそれ自体の一部とするべきではない。したがってプログラミングは、関連の処理素子11で実行しているプログラムの特定の一部によってだけ許可される。好ましくは第1のアクセスコントロールユニット31は、オペレーティングシステムを通してだけプログラムすべきである。記憶領域210はタスク18によってのみアクセスが許可され、記憶領域211はタスク19に対してだけアクセス可能であり、オペレーティングシステムによりプログラムされる。このようにしてタスク18,19は許容された記憶領域210,211にだけアクセスをすることができる。したがい第1のアクセスコントロールユニット31は、この処理素子11上の意図しないプログラムエラーからメモリを保護する。オペレーティングシステムは、プログラムの実行をコントロールし、メモリ、CPU、入出力デバイスなどのリソースのアロケーションと使用をコントロールするソフトウエアである。
【0022】
第2のアクセスコントロールユニット32は、定義された記憶領域に対するメモリ保護を提供する。関連の処理素子11,12,13による記憶素子17への読み出しまたは書き込みアクセスは第2のアクセスコントロールユニット32により許可されなければならない。そのために許容アドレスについての指令が第2のアクセスコントロールユニット32に格納されている。第2のアクセスコントロールユニット32は、種々の処理素子11,12,13に対して記憶領域をアロケートするようにプログラムされている。第2のアクセスコントロールユニット32をプログラミングするための種々の方法を以下に説明する。
【0023】
第1の実施例では、関連の処理素子による第2のアクセスコントロールユニット32のプログラミングが許可される。しかし第2のアクセスコントロールユニット32のプログラミングは、関連の処理素子ではない他の処理素子によって読み出し可能である。初期化の後の第1のステップで、各メモリ保護ユニット14,15,16の第1のアクセスコントロールユニット31と第2のアクセスコントロールユニット32が、関連の処理素子11,12,13によりプログラムされる。その後、第2のアクセスコントロールユニット32のプログラミングは、関連の処理素子ではない他の処理素子によって読み出される。一例として処理素子11は、メモリ保護ユニット14の第2のアクセスコントロールユニット32をプログラムすることができる。第2のアクセスコントロールユニット32のプログラミングは、関連の処理素子ではない12または13により読み出され、第2のアクセスコントロールユニット32の所望のプログラミングと比較される。比較に失敗すると、エラーがシステムに通報され、適切な応答がトリガされる。上に述べたように、第2のアクセスコントロールユニット32のプログラミングは静的とみなし得る。
【0024】
別の例では、関連のすべての処理素子のメモリ保護ユニットの第2のアクセスコントロールユニット32のプログラミングが1つの処理素子によって実行され、プログラミングの正確さが別の処理素子によってチェックされる。図1の例として、メモリ保護ユニット15と16の第2のアクセスコントロールユニット32は処理素子11によってプログラム可能であり、プログラミングのチェックは処理素子12によって実行される。メモリ保護ユニット14の第2のアクセスコントロールユニット32は処理素子12によってプログラム可能であり、プログラミングのチェックは処理素子13によって実行される。
【0025】
第2のアクセスコントロールユニット32のプログラミングとチェックの択一的方法では、処理素子11がメモリ保護ユニット15の第2のアクセスコントロールユニット32をプログラムすることができ、チェックは処理素子13によって実行することができる。処理素子12はメモリ保護ユニット16の第2のアクセスコントロールユニット32をプログラムすることができ、チェックは処理素子11によって実行することができる。同様に処理素子13はメモリ保護ユニット14の第2のアクセスコントロールユニット32をプログラムすることができ、チェックは処理素子12によって実行することができる。
【0026】
第2のアクセスコントロールユニット32に格納されたプログラミングをチェックする択一的方法では、すべての処理素子が第2のアクセスコントロールユニット32から読み出すことができる。処理素子は、すべての第2のアクセスコントロールユニット32のプログラムミングの正確さを、すべてのメモリ保護ユニットの第2のアクセスコントロールユニット32に格納されたプログラミングを読み出すことにより周期的にチェックする。この方法により、記憶領域21,22,23のどの領域がどの処理素子によりアクセス可能であるかが決定される。この情報は、記憶領域21,22,23と処理素子との所望の割当てと比較される。このチェックに失敗すると、所定の処理素子に対してエラー信号が発生され、第2のアクセスコントロールユニット32が再プログラムされる。たとえば記憶領域22は、処理素子12によってのみアクセス可能にすべきである。メモリ保護ユニット14と16の第2のアクセスコントロールユニット32が、処理素子11と13が記憶領域22にアクセスするようプログラムされている場合、処理素子12が処理素子11と13にエラー信号を発生して、メモリ保護ユニット14と16の第2のアクセスコントロールユニット32を再プログラミングさせることができる。択一的にエラー信号は、シャットダウンまたはリセットのような広範な応答をシステムに引き起こすこともできる。
【0027】
上に説明したように、処理素子による第2のアクセスコントロールユニット32のプログラミングとチェックは、初期化中に設定可能である。
【0028】
図1に示すようなマルチプロセッシングシステムでは、複数の処理素子を、プログラムを実行することのできないDMAコントローラまたはCANコントローラとして制御することができる。そのようなシステムには、システムの少なくとも2つの処理素子11,12が中央処理ユニット、コプロセッサ、端末コントローラまたはプログラムを実行できる他のユニットでなければならず、その他はバスマスタのようにプログラムを実行しないDMAコントローラまたはCANコントローラ、たとえば13とすることができる。この場合、処理素子11,12は、処理素子13に関連するメモリ保護ユニット16の第1と第2のアクセスコントロールユニット31,32のプログラミングとプログラミングの正確さのチェックを行う。
【0029】
図2は、セーフコア500を有するシステムを示す。セーフコア500は、ロックステップモードでの処理素子501と502の動作的ペアである。択一的にセーフコアは、監視CPUにより管理されるCPUとして実現することもできる。第1の処理素子501と第2の処理素子502はコンパレータ503に接続されている。処理素子501、処理素子502およびコンパレータ503は、セーフコア500と呼ばれる論理コアを形成する。セーフコア500とメモリ保護ユニット504はそれぞれ通信線104を介して接続されている。メモリ保護ユニット504は、システムバス200を介して記憶素子17に接続されている。図2に示された記憶素子17、処理素子12,13、メモリ保護ユニット15,16、通信線102,103、リセット線300およびシステムバス200のような他の素子および接続は、図1で説明したのと同じ素子であり、同じ機能を実行する。コンパレータ503は、2つの処理素子501,502の出力を監視し、不一致の場合にはエラーのフラグを立てる。
【0030】
ロックステップは、マイクロプロセッサシステムで精度の高いエラー検出を達成するために使用される技術である。これは、第2の同じ処理素子502を、第1の処理素子501の動作を監視し、検証するシステムに追加することにより実現される。2つの処理素子501,502は、システムスタートアップ中に同じ状態に初期化され、これらは同じ入力を受信し、したがって通常動作中は2つの処理素子501,502の状態はクロックごとに同じである。これをロックステップでの動作と呼ぶ。ロックステップ技術は、処理素子501または502のどちらかにエラーが発生すると、2つの処理素子501,502の状態間に差が発生し、これが出力の差として明白になることを前提にしている。したがってロックステップは、2つの処理素子501,502の出力を監視し、不一致の場合にはエラーのフラグを立てる。
【0031】
時間遅延またはクロック遅延を処理素子501と処理素子502との間に設けることができる。したがって2つの処理素子501,502は、同じプログラムをわずかな遅延時間、たとえば1.5または2サイクル差で処理する。ランダムエラーが発生すると、2つの処理素子501,502は同じエラーを同じサイクルでは実行せず、遅延分だけずらして実行する。この時間遅延が発見のための手段であり、したがって両方の処理素子501,502上でのプログラムの実行におけるランダムエラーを除去する。入力データと出力データの遅延により、セーフコア500は1つの処理素子で発生するいくつかのエラーを低減することができる。
【0032】
メモリ保護ユニット504の第2のアクセスコントロールユニット32はすでにセーフコアである論路コアとしての追加のユニットとすることができる。したがってメモリ保護ユニット504の第2のアクセスコントロールユニット32は必要ではない。完全なメモリ保護ユニットが存在していれば、メモリ保護ユニット504の第1のアクセスコントロールユニット31と第2のアクセスコントロールユニット32はセーフコア500自体によりプログラムされる。メモリ保護ユニット504の第2のアクセスコントロールユニット32は、セーフコア500の初期化中にプログラムされる。メモリ保護ユニット504の第1のアクセスコントロールユニット31は、セーフコア500により実行される各タスクに対する動作中に動的にプログラムされる。
【0033】
メモリ保護ユニット15と16の第2のアクセスコントロールユニット32は、セーフコア500によりプログラムされる。好ましくはこれは初期化中に行われる。要求された許容アドレスは適切にプログラムされる。正しいプログラミングは、セーフコア500自体により実行することのできる単純な読み出しテストによって保証することができる。
【0034】
セーフコアを備えることの利点は、セーフコア500のエラー発見能力が高いので、セーフコアによりシステム全体をコントロールできることである。
【0035】
図3、4および5は、処理素子11,12,13がメモリ保護ユニット14,15,16に、種々の第2のアクセスコントロールユニット32をプログラミングするために、または第2のアクセスコントロールユニット32のプログラムの読み出しのためにどのようにアクセスすることができるかを示す。
【0036】
図3は、3つの処理素子11,12,13と、3つのメモリ保護ユニット114,15,16を示し、これらは図1と2ですでに説明した。メモリ保護ユニット14は、通信線101により関連の処理素子11に接続されている。メモリ保護ユニット15は、通信線102により関連の処理素子12に接続されている。メモリ保護ユニット16は、通信線103により関連の処理素子13に接続されている。簡単にするため、メモリ保護ユニット14,15,16、システムバス200および記憶素子17の内部構造は図示されていない。さらにメモリ保護ユニット14は、別の通信線1200により関連の処理素子12に接続されている。メモリ保護ユニット15は、別の通信線1300により関連の処理素子13に接続されている。メモリ保護ユニット16は、別の通信線1100により関連の処理素子11に接続されている。この構成により、処理素子11,12,13とメモリ保護ユニット114,15,16との間の通信は、通シンセを介してのみ可能である。メモリ保護ユニット14は関連の処理素子11および別の処理素子12と通信することができる。メモリ保護ユニット15は関連の処理素子12および別の処理素子13と通信することができる。メモリ保護ユニット6は関連の処理素子13および別の処理素子11と通信することができる。このような固定配線接続は、関連の処理素子11,12,13が関連のメモリ保護ユニット14,15,16をプログラムすることができ、このプログラミングを別の処理素子がコントロールできる場合に使用することができる。もちろん通信線は確立されていなければならず、容易には変更できないのでフレキシビリティは低い。
【0037】
図4は、さらにフレキシブルなシステムを示す。図4は、3つの処理素子11,12,13と、3つのメモリ保護ユニット114,15,16を示し、これらは図1と2ですでに説明した。メモリ保護ユニット14は、通信線101により関連の処理素子11に接続されている。メモリ保護ユニット15は、通信線102により関連の処理素子12に接続されている。メモリ保護ユニット16は、通信線103により関連の処理素子13に接続されている。簡単にするため、メモリ保護ユニット14,15,16、システムバス200および記憶素子17の内部構造は図示されていない。さらにすべての処理素子11,12,13とすべてのメモリ保護ユニット14,15,16は別のバスシステム600に接続されている。この別のバスシステム600は、図1と2で説明したバスシステム200から独立している。別のバスシステム600により、各処理素子11,12,13と各メモリ保護ユニット14,15,16との間で通信をすることができる。この構成は、メモリ保護ユニット14,15,16を処理素子11,12,13によりプログラムするためのいずれの方法にも使用することができる。別のバスシステム600は、いずれの処理素子11,12,13にもいずれのメモリ保護ユニット14,15,16をプログラムさせることができる。別のバスシステム600により、いずれの処理素子11,12,13もいずれのメモリ保護ユニット14,15,16のプログラミングを読み出すことができ、したがって第2のアクセスコントロールユニット32のプログラミングをコントロールし、プログラミングの正確さをチェックすることができる。図4のシステムは、通常のバスシステム200とは別個に別のバスシステム600を必要とする。したがいこの構成は、図1と2に示されたシステムと比較して傑出している。
【0038】
処理素子14,15,16間の通信を確立するための別の方法は、バスシステム200を使用する。その利点は、別のバスラインが必要ないことである。欠点は、バスシステム200上のバス負荷が増大し、処理素子11,12,13がバスシステム200を介するこの別の通信を取り扱う適切なソフトウエアを必要とすることである。しかしこの形式の通信は非常にフレキシブルであり、さらなる措置を必要としない。
【0039】
図1と2で処理素子11,12,13はバスシステム200への直接の接続を有しておらず、バスシステム200にメモリ保護ユニット14,15,16を介して接続されている。図5は、処理素子11,21,31とバスシステム200との間の択一的な接続を示し、この接続もバスシステム200または記憶素子17へのアクセスを許可または拒否するためのメモリ保護ユニットを含む。
【0040】
処理素子11はバスシステム200に、アドレスバス801およびデータバス804を介して接続されている。メモリ保護ユニット14はアドレスバス801により関連の処理素子11に接続されており、イネーブル線700によっても関連の処理素子11に接続されている。処理素子12はバスシステム200に、アドレスバス802およびデータバス805を介して接続されている。メモリ保護ユニット15はアドレスバス802により関連の処理素子12に接続されており、イネーブル線701によっても関連の処理素子12に接続されている。処理素子13はバスシステム200に、アドレスバス803およびデータバス806を介して接続されている。メモリ保護ユニット15はアドレスバス803により関連の処理素子13に接続されており、イネーブル線702によっても関連の処理素子13に接続されている。メモリ保護ユニット14は、コントロール線810によりバスシステム200に接続されている。メモリ保護ユニット15は、コントロール線811によりバスシステム200に接続されている。メモリ保護ユニット16は、コントロール線812によりバスシステム200に接続されている。コントロール線810,811,812は、バスシステム200または記憶素子17へのアクセスをコントロールするために使用される。メモリ保護ユニット14,15,16はコントロール信号をこれらのコントロール線810,811,812に送信する。コントロール信号はたとえば、読み出しイネーブル信号、書き込みイネーブル信号、メモリセレクト信号、またはバスシステム200もしくは記憶素子17への入出力信号である。簡単にするため、メモリ保護ユニット14,15,16の内部構造は図示されていない。
【0041】
処理素子11,12,13は、記憶素子17の読み出しもしくは書き込み命令、またはバスシステム200へのアクセス命令を発行することができる。処理素子11,12,13はアクセスアドレスをアドレスバス801,802,803上に送り、読み出しイネーブル信号または書き込みイネーブル信号のようなコントロール信号をイネーブル線700,701,702に伝送する。メモリ保護ユニット14,15,16は、アドレスバス801,802,803上のアクセスアドレスを、イネーブル線700,701,702上の読み出しイネーブル信号または書き込みイネーブル信号とともに監視する。メモリ保護ユニット14,15,16はアクセスアドレスを、各メモリ保護ユニットの第1のアクセスコントロールユニット31および第2のアクセスコントロールユニット32に格納されているアドレスと比較する。アドレスが有効なアドレスであれば、メモリ保護ユニット14,15,16は、関連の処理素子11,12,13がバスシステム200または記憶素子17にアクセスすることを、コントロール信号をコントロール線810,811,812に伝送することによって許可する。コントロール信号は、バスシステム200上の、または記憶素子17への読み出しイネーブル信号または書き込みイネーブル信号とすることができる。アドレスが有効なアドレスでなければ、メモリ保護ユニット14,15,16は、関連の処理素子11,12,13のアクセスを、コントロール線810,811,812をデアクティベートすることにより拒否する。バスシステム200または記憶素子17への関連の処理素子11,12,13のアクセスの許可または拒否は、コントロール線810,811,812を通してコントロールされる。したがってメモリ保護ユニット14,15,16は、アドレスバス801,802,803上のアクセスアドレスを監視し、バスシステム200または記憶素子17へのアクセスをコントロールする。
【0042】
メモリ保護ユニット14,15,16,504の第2のアクセスコントロールユニット32は、リセット後に一度プログラムされる。したがって図1から図5に示したメモリ保護ユニット14,15,16は、第2のアクセスコントロールユニット32のプログラミングに使用されるハードウエアユニット33を有する。ハードウエアユニット33は、特別の入力により第2のアクセスコントロールユニット32のプログラミングを許可するハードウエア素子を有する。
【0043】
ハードウエアユニット33は、外部ピン34を通してリセット線300に接続されたリセット検出部を有する。第2のアクセスコントロールユニット32のプログラミングは、ハードウエアユニット33を通したリセット信号と結び付いている。リセット信号は外部ピン34に供給される。リセット検出部がリセット信号を検出すると、内部リセット信号35を供給して第2のアクセスコントロールユニット32のプログラミングをイネーブルする。リセットの後、第2のアクセスコントロールユニット32はプログラミングの準備ができる。リセット検出部は、第2のアクセスコントロールユニット32をプログラムするために、セーフコア500または所定の処理素子11,12,13への割込みを発生することができる。択一的に、リセット検出部は単純にプログラミングをイネーブルし、プログラミングの後に第2のアクセスコントロールユニット32へのアクセスをディスエーブルすることができる。次に第2のアクセスコントロールユニット32は、前に説明したようにセーフコア500または所定の処理素子11,12,13によりプログラムされる。第2のアクセスコントロールユニット32をプログラミングするには、リセット検出部およびハードウエアユニット33に関連して種々の手段がある。
【0044】
1. 第1の手段は、リセット検出部とワンタイムプログラミングを組み合わせることである。ハードウエアユニット33は、第2のアクセスコントロールユニット32がリセット後に正確に一度だけプログラムされることを保証するレジスタを有することができる。第2のアクセスコントロールユニット32がプログラムされると、その後の第2のアクセスコントロールユニット32への書き込みアクセスはエラーを引き起こす。
【0045】
2.第2の手段は、リセット検出部とロックレジスタを組み合わせることである。ハードウエアユニット33は、ロックレジスタが所定の形式でアクセスされた場合だけ第2のアクセスコントロールユニット32のプログラムが可能であることを保証するロックレジスタを有することができる。ロックレジスタへのアクセスは、初期化中またはリセット後に許容される。ハードウエアユニット33のロックレジスタにより、第2のアクセスコントロールユニット32のプログラミングのイネーブルまたはディスエーブルが可能である。
【0046】
3.第3の手段は、リセット検出部とタイマを組み合わせることである。ハードウエアユニット33は、第2のアクセスコントロールユニット32にリセット後の所定の時間内だけ書き込むことができることを保証するタイマコントロールレジスタを有することができる。第2のアクセスコントロールユニット32がプログラムされると、その後の第2のアクセスコントロールユニット32への書き込みアクセスはエラーを引き起こす。タイマコントロールレジスタは所定の時間を維持するようにプログラムすることができる。

【特許請求の範囲】
【請求項1】
複数の処理素子を備えるシステムで使用するためのメモリ保護ユニット(14,15,16)であって、
少なくとも1つの第1のアクセスコントロールユニット(31)と、少なくとも1つの第2のアクセスコントロールユニット(32)とを有し、
第1のアクセスコントロールユニット(31)および第2のアクセスコントロールユニット(32)は、メモリ保護ユニット(14,15,16)に関連する処理素子(11,12,13)が記憶素子(17)にアクセスするのを制御するようにプログラムされており、
前記処理素子(11,12,13)の記憶素子(17)へのアクセスは、第1のアクセスコントロールユニット(31)および第2のアクセスコントロールユニット(32)がアクセスを許可した場合に許可され、第1のアクセスコントロールユニット(31)または第2のアクセスコントロールユニット(32)がアクセスを拒否した場合には拒否され、
第1のアクセスコントロールユニット(31)は関連の処理素子(11,12,13)によってのみプログラム可能であり、
第2のアクセスコントロールユニット(32)のプログラミングは、前記関連の処理素子ではない付加的な処理素子によって読み出し可能であるメモリ保護ユニット。
【請求項2】
請求項1記載のメモリ保護ユニットであって、
ハードウエアユニット(33)が、第2のアクセスコントロールユニット(32)のプログラミングが前記関連の処理素子(11,12,13)によっては行われ得ないことを保証するメモリ保護ユニット。
【請求項3】
請求項2記載のメモリ保護ユニットであって、
前記ハードウエアユニット(33)は、リセット信号を受信するための外部ピン(34)を有し、リセット後にハードウエアユニット(33)により第2のアクセスコントロールユニット(32)のプログラミングが一度だけ許可されるメモリ保護ユニット。
【請求項4】
請求項2記載のメモリ保護ユニットであって、
前記ハードウエアユニット(33)は、第2のアクセスコントロールユニット(32)のプログラミングのイネーブルまたはディスエーブルをするロックレジスタを有するメモリ保護ユニット。
【請求項5】
請求項4記載のメモリ保護ユニットであって、
ロックレジスタへのアクセスはリセット後にだけ許可されるメモリ保護ユニット。
【請求項6】
請求項2記載のメモリ保護ユニットであって、
ハードウエアユニット(33)はタイマを有し、第2のアクセスコントロールユニット(32)のプログラミングを、第2のアクセスコントロールユニット(32)のリセット後の所定の時間内でだけ許可し、以降のプログラミングはハードウエアユニット(33)によってエラー信号が発生されるメモリ保護ユニット。
【請求項7】
関連のメモリ保護ユニット(14,15,16)を備える複数の処理素子(11,12,13)を有する処理システムの操作方法であって、
・各メモリ保護ユニット(14,15,16)の第1のアクセスコントロールユニット(31)をプログラミングするとき、各処理素子(11,12,13)が当該処理素子(11,12,13)に関連するメモリ保護ユニット(14,15,16)の第1のアクセスコントロールユニット(31)をプログラムし、
・各処理素子(11,12,13)に関連する各メモリ保護ユニット(14,151,6)の第2のアクセスコントロールユニット(32)をプログラミングするとき、第2のアクセスコントロールユニット(32)のプログラミングが前記関連の処理素子ではない処理素子によってチェックされ、
・前記処理素子(11,12,13)による記憶素子(17)へのアクセスは、当該処理素子(11,12,13)に関連するメモリ保護ユニット(14,15,16)の第1のアクセスコントロールユニット(31)および第2のアクセスコントロールユニット(32)がアクセスを許可した場合に許可され、第1のアクセスコントロールユニット(31)または第2のアクセスコントロールユニット(32)がアクセスを拒否した場合には拒否される方法。
【請求項8】
請求項6記載の方法であって、
第2のアクセスコントロールユニット(32)のプログラミングは、複数の処理素子へのリセット信号を必要とし、
第2のアクセスコントロールユニット(32)は、メモリ保護ユニットの関連の処理素子ではない処理素子によって一度だけ再プログラム可能である方法。
【請求項9】
請求項6記載の方法であって、
第2のアクセスコントロールユニット(32)のプログラミングの正確さのチェックは周期的に行われ、チェックが失敗した場合にはエラー信号が発生される方法。
【請求項10】
請求項6記載の方法であって、
第2のアクセスコントロールユニット(32)のプログラミングの正確さのチェックは、第2のアクセスコントロールユニット(32)が再プログラムされた場合に実行される方法。
【請求項11】
請求項6記載の方法であって、
第2のアクセスコントロールユニット(32)のプログラミングと、該プログラミングの正確さのチェックはセーフコア(500)によって実行される方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−128850(P2012−128850A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【外国語出願】
【出願番号】特願2011−264903(P2011−264903)
【出願日】平成23年12月2日(2011.12.2)
【出願人】(390023711)ローベルト ボツシユ ゲゼルシヤフト ミツト ベシユレンクテル ハフツング (2,908)
【氏名又は名称原語表記】ROBERT BOSCH GMBH
【住所又は居所原語表記】Stuttgart, Germany
【Fターム(参考)】