(57)【要約】  本発明は、例えば自動車における安全関連システムの複数の機能を実行するように構成されている、複数のリンクされたプログラムブロック（２０〜２４）の別々の実行を制御するための方法に関する。この方法では、プロセッサ（１４０）上で複数のプログラムブロックのうちの第１プログラムブロック（２０）が実行され、この第１プログラムブロック（２０）は、メモリ（１３０）の第１セグメント（１０，１１０）内にある。プロセッサ（１４０）はメモリ（１３０）にアクセスする。第１プログラムブロック（２０）を実行中に、複数のプログラムブロックのうちの第２プログラムブロック（２２）を呼び出される。第２プログラムブロック（２２）は、メモリ（１３０）の第１セグメント（１０，１１０）とは異なる第２セグメント（１２，１１２）内にある。ここでは、メモリ保護装置（１５０）によってメモリ（１３０）へのアクセスを監視し、このメモリ保護装置（１５０）は、このアクセスの監視時にメモリ保護装置（１５０）により、第１プログラムブロック（２０）を実行中に、第２プログラムブロック（２２）が呼び出されることが検出された場合、前記メモリ保護装置（１５０）によって例外をトリガする。この例外が発生した場合、例外ハンドラ（１６０）により、第１セグメント（１０，１１０）をディスエーブルし、かつ、第２セグメント（１２，１１２）の実行をイネーブルする。有利にはデータへのアクセスも、殊に書き込みアクセスも、メモリ保護装置（１５０）により、例外およびこれに伴うディスエーブルおよびイネーブルを用いて制御される。さらに本発明は、この方法を実行するための制御装置に関する。
2015531521.tif 000002
【特許請求の範囲】
【請求項１】
有利には自動車における安全関連システムの複数の機能を実行するように構成されている、リンクされた複数のプログラムブロック（２０〜２４）の別々の実行を制御するための方法において、
当該方法は、
前記複数のプログラムブロックのうちの第１プログラムブロック（２０）をプロセッサ（１４０）上で実行するステップを有しており、
当該第１プログラムブロック（２０）は、前記プロセッサ（１４０）がアクセスするメモリ（１３０）の第１セグメント（１０，１１０）内にあり、
前記第１プログラムブロック（２０）の実行中に、前記複数のプログラムブロックのうちの第２プログラムブロック（２２）が呼び出され、ただし当該第２プログラムブロック（２２）は、前記メモリ（１３０）の前記第１セグメント（１０，１１０）とは異なる第２セグメント（１２，１１２）内にあり、
前記方法はさらに、
メモリ保護装置（１５０）によって前記メモリ（１３０）へのアクセスを監視するステップを有しており、
前記アクセスの監視時に前記メモリ保護装置（１５０）により、前記複数のプログラムブロックのうちの前記第１プログラムブロック（２０）の実行中に、前記複数のプログラムブロックのうちの前記第２プログラムブロック（２２）が呼び出されることが検出された場合、前記メモリ保護装置（１５０）によって例外をトリガし、
前記例外が発生した場合、例外ハンドラ（１６０）により、前記第１セグメント（１０，１１０）をディスエーブルし、かつ、前記第２セグメント（１２，１１２）の実行をイネーブルする、
ことを特徴とする方法。
【請求項２】
請求項１に記載の方法において、
前記第２セグメント（１２，１１２）をイネーブルした後、前記第２プログラムブロック（２２）を実行し、当該第２プログラムブロック（２２）の実行終了時にリターンジャンプ（４２）を行い、当該リターンジャンプ（４２）により、前記第２セグメント（１２，１１２）が前記例外ハンドラ（１６０）によってディスエーブルされ、前記第１セグメント（１０，１１）は前記例外ハンドラ（１６０）によって実行がイネーブルされ、
殊に前記リターンジャンプ（４２）によって別の例外がトリガされ、前記例外ハンドラ（１６０）は、当該別の例外が発生した際には前記第２セグメント（１２，１１２）をディスエーブルし、かつ、前記第１セグメント（１０，１１０）の実行をイネーブルする、
ことを特徴とする方法。
【請求項３】
請求項１または２に記載の方法において、
前記第１または第２プログラムブロック（２０，２２）を実行中に、当該第１および第２プログラムブロック（２０，２２）の前記両セグメント（１０，１１０，１２，１１２）とは異なる、前記メモリ（１３０）のあるセグメント（１４）内にある少なくとも１つの別のプログラムブロック（２４）を呼び出し、
前記別のプログラムブロック（２４）が呼び出された場合に前記メモリ保護装置（１５０）は例外をトリガし、
前記例外ハンドラ（１６０）は、前記例外が発生した際には、前記呼び出し側のプログラムブロック（２２）内にある、前記メモリ（３０）のセグメント（１２）をディスエーブルし、前記呼び出された側のプログラムブロック（２４）内にある、前記メモリ（１３０）の前記セグメント（１４，１１４）をイネーブルし、
前記イネーブルの後、前記呼び出された側のプログラムブロック（２４）を前記プロセッサ（１３０）によって実行する、
ことを特徴とする方法。
【請求項４】
請求項１から３までのいずれか１項に記載の方法において、
前記第１プログラムブロック（２０）が実行される間中、前記第２セグメント（１２，１１２）へのアクセスを連続的にディスエーブルし、
前記第２プログラムブロック（２２）が実行される間中、前記第１セグメント（１０，１１０）へのアクセスを連続的にディスエーブルする、
ことを特徴とする方法。
【請求項５】
請求項１から４までのいずれか１項に記載の方法において、
前記第１プログラムブロックによって記憶されかつ殊に読み出しも行われるデータ用に対応する第１データセグメントを前記第１プログラムブロックは有し、
前記第２プログラムブロックによって記憶されかつ殊に読み出しも行われるデータ用に対応する、前記第１データセグメントとは異なる第２データセグメントを前記第２プログラムブロックは有し、
前記第１プログラムブロックによる前記第２プログラムブロックの呼び出しによって例外がトリガされる場合、前記例外ハンドラにより、前記第１データセグメントがディスエーブルされ、
前記第２プログラムブロックによる前記第１プログラムブロックの呼び出しによって例外がトリガされる場合、前記例外ハンドラにより、前記第２データセグメントがディスエーブルされる、
ことを特徴とする方法。
【請求項６】
請求項１から５までのいずれか１項に記載の方法において、
前記第１プログラムブロック（２０）には、前記第２プログラムブロック（２２）とは異なる安全レベルが対応付けられており、殊に前記プログラムブロック（２０〜２４）は、ＩＳＯ２６２６２規格にしたがって構成されており、レベル分けＡＳＩＬ  Ａ〜ＤまたはＱＭにしたがって分類されており、
前記第１および第２プログラムブロック（２０，２４）は分類が異なる、
ことを特徴とする方法。
【請求項７】
請求項１から６までのいずれか１項に記載の方法において、
前記例外は、割り込みまたはエクセプションであり、殊にハードウェア割り込みまたはソフトウェア割り込みであり、
前記割り込みは、前記プロセッサの内部または外部でトリガされ、および／または、処理され、
当該割り込みは、マスク可またはマスク不可であり、または
当該割り込みは、トラップ例外または障害例外に対応する、
ことを特徴とする方法。
【請求項８】
請求項１から７までのいずれか１項に記載の方法において、
プログラムブロック（２０）が、別の安全レベルを有するプログラムブロック（２２）を、殊により高い安全レベルを有するプログラムブロック（２２）を呼び出す場合にトリガされる例外は、プログラムブロック（２０）が、別の安全レベルを有するプログラムブロック（２２）を、殊により低い安全レベルを有するプログラムブロック（２２）を呼び出す場合にトリガされる例外とは異なる優先度で、殊により高い優先度で前記例外ハンドラ（１６０）によって処理される、
ことを特徴とする方法。
【請求項９】
メモリ（１３０）と、プロセッサ（１４０）と、メモリ保護装置（１５０）とを含むデータ処理装置（１２０）を有する、殊に車両用の制御装置（１００）において、
前記メモリ（１３０）は、前記プロセッサ（１４０）に接続されており、
第１および少なくとも１つの第２プログラムブロック（２０，２２）は、前記メモリ（１３０）の第１および第２の、互いに異なるセグメント（１０，１１０；１２，１１２）に配置されており、
前記第１および少なくとも１つの第２プログラムブロック（２０，２２）は互いにリンクされており、さらに、
前記メモリ保護装置（１５０）は、プログラミングされているかまたは前記メモリ（１３０）との接続を有するように構成されており、
前記第１セグメント（１１０）に配置されている第１プログラムブロック（２０）が、前記第２セグメント（１１２）に配置されている第２プログラムブロック（２２）を呼び出す場合に、前記プログラミングまたは接続は、例外をトリガするように前記メモリ保護装置（１５０）を促し、
前記データ処理装置（１２０）はさらに、前記例外を受け取るために前記メモリ保護装置（１５０）に接続されている例外ハンドラ（１６０）を有しており、
前記例外ハンドラ（１６０）は、前記メモリ保護装置（１５０）に接続されており、かつ、前記例外を受け取った際には、前記メモリ（１３０）の前記第１セグメント（１０，１１０）と、前記プロセッサ（１４０）との間の論理的なリンク（１７０）がディスエーブルされ、かつ、前記メモリ（１３０）の前記第２セグメント（１２，１１２）と、前記プロセッサ（１４０）との間の論理的なリンク（１７２）がイネーブルされて、前記第２プログラムブロック（２２）の前記プロセッサ（１４０）上での実行がイネーブルされるように構成されている、
ことを特徴とする制御装置（１００）。
【請求項１０】
請求項９に記載の制御装置（１００）において、
前記第１プログラムブロック（２０）は、前記第２プログラムブロック（２２）とは異なる安全レベルを有しており、
殊に前記プログラムブロック（２２〜２４）は、ＩＳＯ２６２６２規格にしたがって構成されており、かつ、レベルＡＳＩＬ  Ａ〜ＤまたはＱＭにしたがって分類されており、
前記第１および第２プログラムブロック（２０；２２）は分類が異なる、
ことを特徴とする制御装置（１００）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサを用いて自動車における複数の安全関連システムを制御することに関しており、殊に上記の複数の安全関連システムの複数の機能を実行する、リンクされた複数のプログラムブロックの別々の実行を制御することに関する。
【０００２】
従来の技術
データ処理装置を用いて安全関連機能を実現すること、殊に原動機制御部の機能を実現することは公知であり、ここではこのデータ処理装置のプロセッサにより、このプロセッサ上で実行可能なプログラムが処理される。誤りを有する機能は、車両の安全性に直接的な影響を及ぼすため、上記のプログラムセクションを記述する際には、安全に関する複数の対策が講じられる。異なるプログラムセクションは、異なる安全レベルに属することもあり得るため、異なるプログラムセクションないしはサブプログラムは、異なるクラスに対応付けられる。ＩＳＯ２６２６２規格では、自動車に対して全部で５つの異なるレベル分けが行われており、これらは、ＡＳＩＬ  Ａ〜ＤまたはＱＭと称されている。プロセッサ上で実行する際にも各プログラムセクションの安全レベルを保証できるようにするためには、安全分類の異なる複数のプログラムセクションが、実行中に互いに影響を及ぼし合わないようにすることが必要である。
【０００３】
この実行の分離を保証するため、上位の実行制御の明示的な複数の切り換え命令が使用されるかまたはこれらが最下位のシステムレベルの個々のプロセス（タスク）として実行される。別の公知のアプローチによれば、複数のプロセッサコアが使用され、各コアは所定の安全クラスに対応付けられているため、所定の安全分類のサブプログラムだけが所定の１つのコア上で実行され、別の複数のコア上では実行されない。これらのアプローチは非効率的である。なぜならば、これらのアプローチには付加的に計算コストないしはコストのかかるプロセッサアーキテクチャが必要だからである。
【０００４】
したがって本発明の課題は、安全分類の異なる複数のサブプログラムが、効率的に別々に実行できるようにする手法を示すことである。
【０００５】
発明の開示
上記の課題は、独立請求項に記載した方法および制御装置によって解決される。別の有利な様相は、従属請求項の特徴部分に記載されている。
【０００６】
従来技術において提案されているような、複数のタスク、プロセッサコアにだけに基づく、または上位プログラムによる非効率的な切り換えを用いて上記のような不確実な切り離しを行う代わりに本発明では、複数のリンクされたプログラムブロックの実行をメモリ監視によって切り離すことである。切り離すべき複数のプログラムブロックまたはデータは、メモリのまったく異なる部分に設けられる。ここではプログラムブロックがメモリのいわゆるセグメントに設けられるのに対し、データはメモリの固有のラベルが付されたデータセグメントに設けられる。上記の切り離しは、実行ないしはアクセスを分離すべきプログラムブロックないしはデータが異なるセグメントに設けられることによって行われる。メモリ監視により、殊にメモリ保護装置により、つねに実際に実行しているセグメントないしは実際のデータセグメントだけがイネーブルされるのに対し、別のセグメントないしはデータセグメントのアクセスがディスエーブルされる。例えば、上記のメモリ監視により、データへの書き込みアクセスだけがディスエーブルされるのに対し、メモリ監視により、読み出しアクセスが可能になり得るのである。したがってデータについては、上記のディスエーブルは、書き込みのディスエーブルになり得るのである。セグメントを跨いで別のプログラムブロックが呼び出されるないしは、データセグメントを跨いでデータにアクセスが行われる場合、上記のメモリ監視により、例外がトリガされる。この例外により、上記の読み出される側の新たなプログラムブロックに属する上記のセグメントないしはデータセグメントがイネーブルされ、かつ、呼び出し側のプログラムブロックに属する前のセグメントないしはデータセグメントがディスエーブルされるのである。
【０００７】
したがってここで説明しているメカニズムは、本来は切り離すべき複数のプログラムブロックないしは複数のデータの跨がりを検出して例外処理をトリガするメモリ保護装置を使用することに基づいているのである。この例外により、例外ハンドラは、イネーブルないしディスエーブル状態を変更するため、別のデータないしはプログラムブロックがアクセス可能になるかないしは実行可能になる。つまりこの例外ハンドラにより、つねに１つのタイプのプログラムブロックまたはデータだけがアクティブ化されるのであり、ここでこれは、関連するセグメントないしはデータセグメントをイネーブルする一方で別のセグメントをディスエーブルすることによって行われる。安全レベルについて上記のデータないしはプログラムブロックを区別するため、これらのデータないしはプログラムセグメントは、その安全レベルにしたがい、異なるデータセグメントないしはセグメントに格納される。
【０００８】
上記の複数のプログラムブロックないしはデータの、異なる複数のセグメントないしはデータセグメントへの切り離しは、区別のための指標として、上記のメモリ監視に使用され、このメモリ監視により、上記の異なる安全レベルが検出される。上記の実行およびアクセスについての切り離しは、発生した上記の例外により、上記のイネーブルおよびディスエーブルによって実現される。
【０００９】
したがって本発明では、リンクされた複数のプログラムブロックの別々の実行を制御するための方法が開示されるのである。別々の実行が制御される上記の複数のプログラムブロックは、１つのプログラムブロックの枠内で、複数のプログラムブロックのうちの別の１つのプログラムブロックが呼び出されることによってリンクされる。例えば、１つのプログラムブロック内で、別のプログラムブロックがサブプログラムとして呼び出される。例えば、呼び出し側のプログラムブロックの部分であるかまたは割り込みである関数としてまたはプロシージャとして呼び出されるのである。プログラムブロックを関数として呼び出す際には、呼び出し側プログラムブロックから、呼び出される側のプログラロムブロックに複数のパラメタをわたすことできる。これらのプログラムブロックは、呼び出し側のプログラムブロックおよび呼び出される側のプログラムブロックと称され、この呼び出し側のプログラムブロックは第１プログラムブロックと、上記の呼び出される側のプログラムブロックは第２プログラムブロックと称することもできる。しかしながら最後の対応付けは、上記の呼び出しの実際に状況に依存して変わり得る。呼び出し側のプログラムブロックは、例えば複数のプログラムブロックを呼び出すこともできるため、処理的には１つまたは複数の第２プログラムブロックが存在する。さらに１つまたは複数のプログラムブロックを呼び出す互いに異なる複数の呼び出し側のプログラムブロックも存在し得る。したがって１つまたは複数の第１プログラムブロックが存在するのである。
【００１０】
ここではインタラプト、すなわち割り込みを１つのプログラムブロックまたは（ここで記載したような）サブプログラムとみなすことができる。このことは、インタラプトとして設けられたプログラムブロックまたはインタラプトとして設けられたサブプログラムが明示的に呼び出されるのではなく、別の仕方で実行されるかまたはトリガされる場合にも当てはまる。
【００１１】
第１プログラムブロックによって呼び出されるプログラムブロックも、１つまたは複数の別のプログラムブロックを呼び出すことができる。したがって呼び出し側のプログラムブロック、呼び出される側のプログラムブロック、第１プログラムブロックおよび第２プログラムブロックの属性は、それぞれ状況に応じており、また呼び出し状況に対する２つのプログラムブロック間の階層関係を表す。別の呼び出し状況に対しては、この（相対的な）階層関係は別の階層関係となることがあるため、上記の呼び方もこれに相応し、呼び出し状況に応じて変化し得るのである。
【００１２】
上記の複数のプログラムブロックは、自動車における安全関連システムの複数の機能を実行するように構成されている。殊にこれらのプログラムブロックは、パワートレイン分野における機能もしくはパワートレインの機能、または、操舵システムまたは車両もしく搭乗者安全システムのような別の車両特定応用分野の機能を実行するために構成されている。これらは、例えば、自動車のトラクションに使用される内燃機関、電動モータ、自動車の電気式、電気機械式または機械式の制動装置、または電子式操舵駆動器などである。別の機能は、冒頭に挙げた機能の状態のような動作状態の光学的または音響的な表示に関する機能である。
【００１３】
上記の複数のプログラムブロックによって実行される上記のような複数の機能はさらに、例えば、自動車の内燃機関の燃料量、空気量、燃料セットアップ、噴射時点および／または点火時点の制御である。別の複数の機能は、車両の運動エネルギの回生に使用される電動モータの回生時間および回生出力であり、および／または、トラクションに使用される電動モータの転流であり、殊に転流時点、励磁電流強度および場合によっては励磁電流強度と、電動モータに印加される電圧との間の位相のずれなどである。
【００１４】
上記の方法では、上記の複数のプログラムブロックのうちの第１プログラムブロックが１つのプロセッサ上で実行されるようにする。実行用のこのプロセッサは、１つまたは複数のプロセッサコアを有し得る。このプロセッサは有利にはマイクロコントローラであり、殊に安全にクリティカルなシステム用に構成されたマイクロコントローラ、例えばエンジン制御用に構成されたマイクロコントローラである。以下に詳しく説明するように、上記の実行用のプロセッサには、例えば、メモリ保護装置を有しており、有利には例外ハンドラも有している。実行用のこのプロセッサには、例えば、メモリまたはメモリを接続するための少なくとも１つのインタフェースが含まれている。
【００１５】
本発明では、上記の方法の開始とみなすことが可能な事前ステップを設けることができる。この事前ステップは、例えば、ここで説明している制御装置または方法を開始する間に実行される。この事前ステップでは、メモリ保護装置が、ここで説明している方法をサポートする仕様にしたがって構成設定されるようにする。殊にこのメモリ保護装置は、殊にアクセス権について上記のメモリの上記のセグメントを定める仕様にしたがって構成設定される。したがって上記の事前ステップでは、アクセス監視の構成設定と、殊に上記のセグメントおよび／またはプログラムブロックのアクセス権の構成設定とが行われるのである。さらに上記の事前ステップでは、どのプログラムブロックをどのセグメントに格納するか、また殊にこのプログラムブロックまたはセグメントがどのようなアクセス権を有するかを定めることができる。上記の事前ステップでは、上記の複数のプログラムブロックもしくこれらのプログラムブロックのうちの少なくとも１つを開始することもできるか、または、これらのプログラムブロックが呼び出される上位のプログラムを介して開始することができる。この開始は有利には、上記の構成設定の後に実行される。
【００１６】
上記のプロセッサによって実行される第１プログラムブロックは、上記のメモリ第１セグメント内にある。このプロセッサは、第１プログラムブロックを実行するためにこのメモリにアクセスする。このプロセッサは、第１プログラムブロックを実行する際には認証されて、第１セグメントに読み出しおよび書き込みアクセスを行う。上記のプロセッサは、第１プログラムブロックを実行する際に、例えば認証され、第１セグメント内にあるプログラムを実行する。この第１プログラムブロックにはさらに、上記のプロセッサによる実行を許容する実行権限が付与されている。
【００１７】
第１プログラムブロックの実行中、上記の複数のプログラムブロックのうちの第２プログラムブロックが呼び出される。この呼び出しは、例えばプロシージャコールまたは関数コールの枠内で行うことができる。この関連において上記の第２プログラムブロックは、第１プログラムブロックのサブプログラムまたは割り込みとみなすことができる。第２プログラムブロックは、上記のメモリの第２セグメント内に配置されている。第２セグメントは、上記のメモリの第１セグメントとは異なる。メモリ内にある異なる複数のセグメントは互いに重なり合わない。
【００１８】
上記のメモリへのアクセスは、殊にこのメモリに格納されているプログラムの実行（開始）の枠内におけるメモリへのアクセスは、メモリ保護装置によって監視される。上記のアクセスを監視するメモリ保護装置は、殊に上記のプロセッサの一部であり、ハードウェアとして構成することできる。択一的にはこのメモリ保護装置の一部分は、上記のプロセッサ上でまたはこのプロセッサに接続されているメモリ監視装置上で動作するソフトウェアとして構成される。このメモリ保護装置は、例えば、上記のプロセッサに属するかまたはこれに組み込まれているメモリインタフェースの一部とすることが可能である。メモリ保護装置は、メモリ保護によってアクセスを監視している際に、第１プログラムブロック（すなわち上記の複数のプログラムブロックのうちの第１プログラムブロック）の実行中に、第２プログラムブロック（すなわち上記の複数のプログラムブロックのうちの第２プログラムブロック）が配置されている第２セグメントにアクセスが行われることが検出される場合、例外をトリガする。このようにしてこのメモリ保護装置は、上記のメモリを分割した複数のセグメントへのアクセスを監視する。アクセスは、殊に読み出しアクセスのことであり、有利には上記のプロセッサによる実行の枠内での読み出しアクセスのことである。しかしながらアクセスは、書き込みアクセスとすることも可能であり、または書き込みおよび読み出しアクセスとすることも可能である。有利な実施形態において上記のアクセスは、メモリ内にあるプログラムブロック（サブプログラムまたは関数）を実行するための上記のプロセッサによるメモリへのアクセスである。したがってこのアクセスは、プログラムブロックの実行または実行のための準備になり得るのである。
【００１９】
上記の複数のプログラムブロックは、異なる複数のセグメントに分けられているため、上記の監視によって検出できるのは、呼び出されるプログラムブロックが、これを呼び出していたプログラムブロックとは異なるセグメントにある場合である。
【００２０】
例外が発生した場合、上記の例外ハンドラにより、上記のメモリの第１セグメントがディスエーブルされる。ここでは、ディスエーブルされる複数の第１セグメントを設けることも可能である。このディスエーブルは、例えば、使用されるアクセスタイプに関連しており、有利にはその実行に、すなわち、実行を目的とした読み出しに関連するものである。上記の例外ハンドラは、上記の例外が発生した場合、上記の第２セグメントを実行のためにイネーブルする。このイネーブルは、上記のディスエーブルないしはアクセス（読み出し、書き込む）など同じ動作に関連して、殊にその実行に関連している。
【００２１】
殊に上記の例外ハンドラは、上記の第２セグメントの読み出しをイネーブルし、有利には実行をイネーブルする。これにより、例外ハンドラは、実行可能なプログラムブロックが存在するセグメントと、実行がイネーブルされていないセグメントとを変更するのである。
【００２２】
上記のディスエーブルないしはイネーブルを行う例外ハンドラは、ハードウェアの形態で設けることができ、殊に上記のプロセッサ内のハードウェアとして、またはこのプロセッサに接続されているハードウェアとして設けることができる。さらにこの例外ハンドラは一部分をソフトウェアとするかまたは完全にソフトウェアとすることができ、これは上記のプロセッサ上で動作するか、またはプロセッサ内の、またはプロセッサと接続されているプロセッサ外の例外処理装置上で動作する。上記のメモリ保護装置ならびに例外ハンドラを実現する上記のハードウェアは、殊にメモリ監視装置または例外処理装置は、プロセッサに固定に接続されており、殊にこれに直接接続されており、これによって故意ではない不正の操作が回避される。例えば、メモリ管理ユニット（ＭＭＵ  memory management unit）のメモリ保護装置ならびに例外ハンドラが設けられており、このメモリ管理ユニットは有利には、それ自体がプロセッサの一部分であるかまたはプロセッサに対応付けられるハードウェアとして設けることができる。
【００２３】
第２プログラムブロックは、第１プログラムブロックの実行中にタスクマネージャによって呼び出すことができる。しかしながら有利には第２プログラムブロックは、第１プログラムブロックの１つの命令により、殊に第１プログラムブロックの関数呼び出しまたはプロシージャ呼び出しによって呼び出される。
【００２４】
第２プログラムブロックの実行の終了時にはリターンジャンプが行われる。このリターンジャンプは、例えば、第２プログラムブロックのリターンジャンプ命令により、ないしは、第２プログラムブロックを表す複数の命令の終了によってトリガされる。
【００２５】
上記のリターンジャンプにより、上記の第２セグメントがディスエーブルされ、第１セグメントが再度イネーブルされる。アクセス権のこの変更は、上記のリターンジャンプによってトリガされる別の例外によって行うことが可能である。択一的には上記の実行の終了時に上位のハードウェアまたはソフトウェアにより、別の例外を行うことができる。上記の例外ハンドラは、この別の例外が発生した際、ないしはこの別の例外が処理される際、第２セグメントをディスエーブルする。さらに例外ハンドラは、この別の例外が発生した際ないしは処理がされる際には第１セグメントの実行をイネーブルする。セグメントをディスエーブルすることにより、上記のプロセッサは、関連するセグメントにあるプログラムブロックの処理が阻止される。殊に１つのセグメントをディスエーブルすることにより、このセグメントにおけるコードの実行がディスエーブルされる。上記のイネーブルにより、プロセッサは、関連するセグメントにアクセスして実行することができる。
【００２６】
本発明の別の様相によれば、第１または第２プログラムブロックの実行中、少なくとも１つの別のプログラムブロックが呼び出される。さらに上記のメモリ保護装置は、この別のプログラムブロックが呼び出される場合、例外をトリガする。殊にメモリ保護装置は、呼び出し側のプログラムブロック（すなわち、第１または第２プログラムブロック）が、上記の別のプログラムブロックもあるこのメモリの別のセグメントにアクセスする場合に例外をトリガする。イネーブルされていないセグメントへのこのアクセスにより、上記の例外がメモリ保護装置によってトリガされる。この例外が発生する場合、例外ハンドラは、呼び出し側のプログラムブロックが存在する、上記のメモリのセグメントをディスエーブルする。上記の例外ハンドラは、この例外処理が発生した際には、呼び出された側のプログラムブロックがある、メモリの上記のセグメントをイネーブルする。このイネーブルの後、上記の呼び出された側のプログラムブロックがプロセッサによって実行される。有利にはこの実行は、関連するセグメントがイネーブルされた直後に開始される。
【００２７】
これにより、互いに影響を及ぼし得ない２つ以上の階層レベルを定めることができる。なぜならば、上記のメモリのただ１つのセグメントだけが、プロセッサの実行のためにイネーブルされ、それ以上はイネーブルされないからである。
【００２８】
別の一様相によれば、第１プログラムブロックが実行される間中、第２セグメントへの上記のアクセスが連続的にディスエーブルされる。ここでこのアクセスは、メモリ保護装置によってディスエーブルされる。また第２プログラムブロックが実行される間中、第１セグメントへのアクセスが連続的にディスエーブルされる。ここでもメモリ保護装置により、上記のセグメントに対するアクセスがディスエーブルされる。ここでこのアクセスは、例えばプログラムブロックを実行するためのアクセスである。最終的には上記のディスエーブルにより、上記のメモリのディスエーブルされたセグメントへの書き込みアクセスが、上記のメモリ保護装置によってディスエーブルされる。
【００２９】
本発明で開示した方法の別の一様相は、データへのアクセス権に関連しているのに対し、これとは異なり、上記の複数の段落は実質的に、複数のプログラムブロックがある複数のセグメントに関連していた。有利な一方法は、ハードウェア構造内で実行され、このハードウェア構造では上記のメモリの、複数のプログラムブロックが記憶されている複数のセグメントと、上記のメモリの、データがある複数のセグメントとがわかれている。このような分離が行われない場合には、上記の説明は、プログラムブロックだけではなく、これに属するデータも存在する複数のセグメントに関連する。さらに、プログラムブロックに関連して開示した事項はデータにも当てはまり、その逆も当てはまる。
【００３０】
第１プログラムブロックには、データ用の第１データセグメントが対応付けられており、これらのデータは、第１プログラムブロックによって記憶され、読み出される。第２プログラムブロック（および別の各プログラムブロック）には、少なくとも１つの第２の、第１セグメントとは異なるデータ用のデータセグメントが対応付けられており、このデータは、第２プログラムブロックによって記憶され、読み出される。これらのプログラムブロックには、複数の第１のまたは複数の第２のデータセグメントを対応付けることもできる。これらのデータセグメントは、上記のプログラムブロックがある上記のセグメントと同じメモリに設けることができる。特定の実施形態によれば、複数のメモリを設けることができ、１つのメモリは、プログラムブロックにおける複数のセグメントだけを含み、これとは異なる別の１つのメモリはデータセグメントだけを含む。
【００３１】
プログラムブロックが記憶されているセグメントとは、またデータセグメントとは、例えば物理的なセグメントまたはページにマッピングされる上記のメモリの論理的なグループまたはセクションのことである。論理的なグループまたはセクションは、サイズ可変のメモリのセクションのことであり、殊に種々異なるプログラムブロック（またはセグメントまたはグループ）に対するサイズは異なり得る。
【００３２】
さらにデータセグメントの上記のサイズは、上記のプログラムブロックのある上記のセグメントのサイズとは異なり得る。またデータセグメントの位置は、上記のプログラムブロックがあるセグメントの位置と異なり得る。
【００３３】
上記の例外ハンドラは、第１プログラムブロックによる第２プログラムブロックの呼び出しによって例外がトリガされる場合、第１データセグメントをディスエーブルする。この例外ハンドラは、第２プログラムブロックによる第１プログラムブロックの呼び出しによって例外がトリガされる場合、第２データセグメントをディスエーブルする。さらに、呼び出し側のプログラムブロックに対応付けられているデータセグメントがディスエーブルされる。この際には、呼び出されるプログラムブロックに対応するデータセグメントがイネーブルされる。
【００３４】
本発明の別の一様相によれば、第１プログラムブロックには、第２プログラムブロックとは異なる別の安全レベルが対応付けられる。同様に、第１および第２データブロックに対応付けられる安全レベルは異なる。安全レベルは、有利にはＩＳＯ２６２６２規格に則る。殊に上記のプログラムブロックは、ＩＳＯ２６２６２記載にしたがって構成される。さらに上記のプログラムブロックは、レベル分けＡＳＩＬ  Ａ〜ＤまたはＱＭにしたがって分類される。上記の第１および第２プログラムブロックは分類が異なる。
【００３５】
例えば、１つのセグメントにはつねに、同じ分類の複数のプログラムブロックだけ存在する。データセグメントにもつねに、同じ分類の１つまたは複数のプログラムブロックだけが対応付けられる。このようにして上記の分類に基づく上記のような区別により、簡単なメモリ保護手段を用いて、関連するプログラムブロックないしはデータを分けることができ、これによって異なる安全クラスのプログラムブロックないしはデータおよびを互いに影響を及ぼし合うことなく分けることができる。ＩＳＯ２６２６２規格による例示的な分類に加えて、例えば較正データであるかまたは読み出し専用メモリに対応付けられる、関数に関連するデータないしはプログラムブロックを、他のプログラムブロックまたはデータから影響なしに分離することができ、ここでは上記のデータないしプログラムブロックには上記の規格が当てはまらずひいては別の安全レベル分けが行われる。上記の分類は、例えば、以下の１つまたは複数の判定基準を含むことできる。すなわち、
（ａ）  コードが、あらかじめ設定した開発プロセスにしたがって開発されているか否か、
（ｂ）  コードが、あらかじめ定められた開発者またはメーカのグループに作成されているか否か、
（ｃ）  妥当性検査が実行時に実行されるか否か、
（ｄ）  データチックが実行時に実行されるか否か、
（ｅ）  場合によっては個別の命令の実行によってコードおよびデータ入出力が形式的に検査されるか否か、
（ｆ）  コードが別の装置によってチェックされるか否か、
（ｇ）  制限されたポインタ利用か否か、
（ｈ）  コードが統計的に分析されるか否か、
（ｉ）  コードに対するモデル検査が実行されるか否か、
（ｊ）  制御の流れが監視されるか否か、
（ｋ）  モデルとコードとの間の相互の照合が行われるか否か、
（ｌ）  コードが異なるソフトウェア設計によって作成されているか否か、
（ｍ）  監視ユニットが設けられている否か、
（ｎ）  別々の並行の冗長性が設けられているか否か、
（ｏ）  誤り挿入テストが実行されるか否か、
（ｐ）  資源利用テストが行われるか否か、
（ｑ）  較正データの冗長な記憶が行われるか否か、
（ｒ）  誤り識別コードおよび／または誤り補正コードが設けられているか否か、
を含むことができるのである。
【００３６】
別の一様相によれば、上記の例外処理は、いわゆる割り込みまたはいわゆるエクセプションであり、殊にハードウェア割り込みまたはソフトウェア割り込みである。さらに上記の割り込みは、上記のプロセッサの内部または外部でトリガおよび／または処理することができる。この割り込みは、マスク可とするかまたはマスク不可とすることができる。
【００３７】
さらに、特有な一実施形態として、プログラムブロックが、別の安全レベルを有するプログラムブロックを、殊により高い安全レベルを有するプログラムブロックを呼び出す場合にトリガされる例外は、プログラムブロックが、別の安全レベルを有するプログラムブロックを、殊により低い安全レベルを有するプログラムブロックを呼び出す場合にトリガされる例外とは、異なる優先度で処理される。上記の例外ハンドラは、この優先度にしたがって上記の例外処理を処理する。したがってこの例外の処理の優先度は、呼び出されるプログラムブロックの安全レベルに依存するのである。呼び出されるプログラムブロックの安全レベルが低ければ低いほど、例外ハンドラを用いてトリガされる例外処理の優先度は小さくなる。この実施形態は、上記のメモリ保護装置が、複数の例外を処理し、これによってさらにすでに１つの例外がトリガされているが、これがまだ処理されていない場合にも、１つの例外が発生するかまたはこれをトリガすることができるように構成されている特別なケースに関するものである。
【００３８】
さらに本発明には、データ処理装置を有する制御装置が、殊に車両用またはここで説明する別の応用分野用の制御装置が記載されている。このデータ処理装置には、メモリと、プロセッサと、メモリ保護装置とが含まれている。この制御装置は、上記の方法に基づき、上で説明した複数の機能を実現するのに適している。したがって、殊にこの制御装置は、変速器制御部、例えばハイブリッド車両用のパワートレイン、例えばエンジン制御ユニット（ＥＣＵ engine control unit）のような、内燃機関用のエンジン制御装置などである。上記のメモリ、プロセッサおよびメモリ保護装置は、上記の方法の枠内で示したように上記の制御装置を構成することができる。
【００３９】
上記のメモリは、プロセッサに接続されているため、プロセッサは、複数のプログラムブロックおよび／またはデータをメモリから読み出し、呼び出し、またはこれに格納することができる。第１プログラムブロックおよび第２プログラムブロックは、上記のメモリの第１セグメントおよび第２セグメントに格納されている。このメモリの第１および第２セグメントは互いに異なる。これらのセグメントには１つまたは複数の第１プログラムブロックないしは１つまたは複数の第２プログラムブロックが格納されており、これらの第１プログラムブロックは、第２プログラムブロックとは異なるセグメントに格納されている。上記の第１プログラムブロックと、上記の少なくとも１つの第２プログラムブロックとは互いにリンクされている。例えば、上記の第１プログラムブロックには、少なくとも１つの第２プログラムブロックの呼び出しが含まれている。
【００４０】
上記のデータ処理装置には、メモリ保護装置が含まれており、上記の複数のセグメントのうちの第１セグメントに格納されている第１プログラムブロックが、第２セグメントに格納されている第２プログラムブロックを呼び出す場合、上記のメモリ保護装置のプログラミングまたは上記のメモリとのその接続により、上記のメモリ保護回路がトリガされて例外処理が起動される。このために、方法の枠内において上述したように、上記のメモリ保護装置は、ハードウェア、ソフトウェアまたはこれらの組み合わせで実現することができる。上記のデータ処理装置はさらに、例外ハンドラを有しており、これは、上記の例外を受信するためにメモリ保護装置に接続されている。この例外ハンドラは、上記のメモリに接続されており、また、上記の例外を受信した際には、このメモリの第１セグメントとプロセッサとの間の論理的なリンクをディスエーブルするように構成されている。この例外ハンドラはさらに、上記の例外を受信した際には、上記のメモリの第２セグメントとプロセッサとの間の論理的なリンクをイネーブルして、プロセッサ上での第２プログラムブロックを実行するように構成されている。この例外ハンドラもハードウェア、ソフトウェアまたはこれらの組み合わせとして構成することが可能である。
【００４１】
有利にはこの例外ハンドラもデータ処理装置も共に上記のプロセッサの一部とするかまたはこのプロセッサに直接接続されるハードウェアコンポーネントによって構成される。
【００４２】
上記の例外ハンドラは、例えば、上記のプロセッサとメモリのデータセグメントとの間の論理的なリンクをディスエーブルおよびイネーブルするように構成することが可能である。これは、上で方法に基づいて説明したとおりである。
【００４３】
ここで開示した制御装置の別の様相によれば、第１プログラムブロックは、第２プログラムブロックとは異なる安全レベルを有する。殊にこれらのプログラムブロックは、ＩＳＯ２６２６２規格にしたがって構成される。これらのプログラムブロックはさらに、レブルＡＳＩＬ  Ａ〜ＤまたはＱＭにしたがって分類される。第１および第２プログラムブロックは、分類が異なる。
【００４４】
上記のメモリには、同じ安全レベルの複数のプログラムブロックを設けることができる。これは、方法に基づいて上述した通りである。さらに上記のメモリに格納される第１および／または第２プログラムブロックには、関連する呼び出し側のプログラムブロックとは異なる安全レベルに属する複数のプログラムブロックの複数の呼び出しが含まれ得る。
【００４５】
上記のメモリ保護装置は、メモリ保護ユニット（ＭＰＵ  memory protection unit）と称することも可能である。このメモリ保護装置は、ＭＭＵ（Memory Management Unit）とも称されるメモリ管理ユニットの一部とすることが可能である。例えば、ここではメモリ保護レジスタが設けられており、このレジスタには、上記のメモリの複数のセグメントないしはデータセグメントの境界を定める複数のアドレスが格納されている。このためには、例えば出口アドレスおよびオフセットを格納することができる。上記のメモリ保護レジスタは、メモリ保護装置に接続されているかこのメモリ保護得装置の一部である。これによってメモリ保護レジスタは、実行ないしはアクセスについて互いに分かれている複数のセグメントを定め、これらを跨ぐような呼び出しまたはアクセス時には例外処理がトリガされる。この例外により、アクティブなセグメントの変更が、すなわちイネーブルされるセグメントが変更されるのである。それゆえ上記の例外より、ディスエーブルされた複数のセグメントも変更されるのである。上記のメモリ保護レジスタに格納されるデータは、上記の複数のプログラムブロックを形成する枠内で実行されるリンカによって定められる。このリンカないしはこのリンカを動作させる制御情報は、上記のセグメントを定め、これによって本発明の実質的な部分を実現する。上記のメモリ保護レジスタは、複数の固有の保護モード用に１つまたは複数のアドレス領域を有し得る。保護モードには、リードオンリイネーブル、ライトオンリイネーブル、およびアクセスディスエーブルが含まれる。上記のプログラムブロックが格納されるセグメントを定めるため、上記のデータセグメント用のレジストとは異なる下位レジスタを使用することができ、この下位レジスタは上記のメモリ保護レジスタに属する。さらに、上記の複数の保護モードが格納されている下位レジスタを設けることができる。例えば、これらの保護モードは、データおよびプログラムブロックに対して別々に格納することが可能である。
【００４６】
プログラムブロックとは、論理的に関連するコードのことであるが、このコードは、ただ１つの順序で上記のメモリに格納されている必要はない。むしろプログラムブロックを実行するため、ただ１つのプログラムブロックとの論理的な関係を表すメモリ管理ユニットが提供されるのであれば、この１つのプログラムブロックは、物理的に、上記のメモリの異なる複数の部分セグメントに格納することができる。
【００４７】
上記のメモリないしはデータメモリは、一回だけ書き込み可能なメモリとするかまたは複数回書き込み可能メモリとすることが可能である。殊に上記のメモリは、リードオンリメモリとすることが可能である。このような１つまたは複数のメモリは、例えばハードウェアメモリであり、有利に少なくとも一部を上記のプロセッサに組み込むことができる。このプロセッサは、例えば、インフィニオン社のＡｕｒｉｘファミリのマイクロコントローラとするかまたはフリースケール社のＭＰＣ５７ｘｘファミリのマイクロコントローラすることが可能である。
【図面の簡単な説明】
【００４８】
【図１】メモリに記憶されている複数のプログラムブロックの本発明による処理の切り換えを説明するための、メモリをシンボリックに示した図である。
【図２】本発明の制御装置の一実施形態をシンボリックに示す図である。
【００４９】
図面の詳細な説明
図１に示したメモリは、３つのセグメント１０，１２および１４に分割されている。これらのセグメントには、プログラムブロック２０，２２，２２’，２４が格納されている。各セグメント１０〜１４にはそれぞれ、特定の分類を有するプログラムブロックが格納されている。
【００５０】
例えば、セグメント１０のすべてのプログラムブロック、すなわちプログラムブロック２０が第１安全レベルに対応付けられているのに対し、セグメント１２のプログラムブロック２２，２２’は別の安全レベルに対応付けられており、セグメント１４のプログラムブロック２４それ自体は、プログラムブロック２０，２２，２２’とは異なるさらに別の安全レベルに対応付けられている。まず最初にプログラムブロック２０が実行される。これは、第１プログラムブロックないしは呼び出し側のプログラムブロックと称することできる。プログラムブロック２０内には呼び出し３０があり、この呼び出しにより、セグメント１２のプログラムブロック２２が呼び出される。呼び出し３０は、例えば関数呼び出しであり、プログラムブロック２２中にこの関数が実現されている。呼び出し３０により、セグメント１０とは異なるセグメント１２へのアクセスが行われる。
【００５１】
この呼び出しにより、（図２に詳しく示した）メモリ保護装置によって例外がトリガされる。このメモリ保護装置は、図１に示したメモリを監視し、これにより、目下実行されているプログラム（この具体的なケースではプログラムブロック２０）が実行されているセグメントとは異なるセグメントへのアクセスが行われる場合、セグメントを跨いだアクセスが検出され、また場合によって例外がトリガされる。
【００５２】
（図２に詳しく示した）例外ハンドラは、この例外を検出して、第１セグメント１０をディスエーブルする。さらにこの例外ハンドラは有利には上記のディスエーブルと共にまたはその後に、セグメント１２のアクセスをイネーブルにし、殊に（図２に詳しく示した）プロセッサによる実行を可能にする。
【００５３】
プログラムブロック２２のあるセグメント１２はイネーブルされているため、これが実行される。したがってプログラムブロック２２は、第２プログラムブロックと、ないしは、呼び出された側のプログラムブロックと称することができる。
【００５４】
第２プログラムブロック２２の実行の終わりにはリターンジャンプ３２があり、このリターンジャンプも呼び出しとみなすことができる。呼び出し３２は再度、第１プログラムブロック２０を呼び出す。この状況では第２プログラムブロック２２が呼び出し側のプログラムブロックであり、プログラムブロック２０が、呼び出される側のプログラムブロックである。メモリ保護装置は、セグメントを跨ぐこの呼び出しを検出し、例外をトリガし、これによって例外ハンドラは、そこに記憶されているプログラムブロックのセグメント１２の実行ないしは呼び出しをディスエーブルし、セグメント１０およびそこに記憶されているプログラムブロック２０の実行ないしはアクセスをイネーブルする。これに続いて、リターンジャンプ命令として機能する、呼び出し３２のリターンアドレスにしたがい、プロセッサにより、プログラムブロック２０が引き続いて実行される。
【００５５】
矢印４０，４２はプログラムブロック２０および２２の流れを、しかもその順次の実行を説明している。矢印４０が示しているのは、呼び出し３０によって実行がプログラムブロック２２に移行することである。矢印４２が示しているのは、リターンジャンプ命令３２の後、プログラムブロック２０が続いて実行されること、すなわち、プログラムブロック２０内の、呼び出し３０の後に続くコードで実行されることである。矢印４０，４２が示しているのは、１つのセグメントのプログラムブロックから、別の１つのセグメントのプログラムブロックにどのように切り換えが行われるかである。矢印４０は、メインプログラムによるサブプログラムの呼び出しを示しており、ここでこのメインプログラムはプログラムブロック２０であり、またサブプログラムはプログラムブロック２２である。
【００５６】
別のオプションのコンポーネントないしは方法ステップは、破線で示されている。プログラムブロック２０の呼び出し３０’は、プログラムブロック２０内の別の呼び出しである。これは、（図示しない）別の複数のプログラムブロックを呼び出すことができる。
【００５７】
さらにここに示されているのは、サブプログラムとしてのプログラムブロック２２が、別のセグメント１４の別のコードブロック２４を呼び出す別のサブプログラム３２’を有し得ることである。矢印４０’および４２’は、実行すべきプログラムブロックの切り換えを示し、ひいては実行のためにイネーブルされるセグメントの切り換えを示す。矢印４０’によって示されるのは、セグメント１２のイネーブルがセグメント１４に換わることであり、これに対し、セグメント１２がディスエーブルされ、セグメント１４のディスエーブルが終了することである。矢印４２’が示しているのは、プログラムブロック２４を実行した後、プログラムブロック２２の呼び出し３２’にリターンジャンプすることである。したがって上記の切り換えは、メモリの２つ以上のセグメントを越えて実行できることができるであり、この切り換えは本発明にしたがって行われる。
【００５８】
図１の例に示した第１の切り換えは矢印４０によって示されており、第２の切り換えは矢印４０’によって示されており、第３の切り換えは矢印４２’によって示されており、第４の切り換えは矢印４２によって示されている。矢印４２，４２’は、リターンジャンプ命令によって行われ、該当するプログラムブロックが終わりまで実行された場合、これらのリターンジャンプ命令は、プログラムブロックの一部とすることができるか、または実行制御部によって実行することができる。矢印４０，４０’は、セグメントを跨ぐプログラムブロックの呼び出しによるものであり、プログラムブロックの（開始の）呼び出しによって発生する切り換えを表し、すなわちプロシージャ呼び出しまたは関数呼び出しによる切り換えを表す。
【００５９】
例えばプログラムブロック２２’は、同じ１つのセグメントに複数のプログラムブロックが設けられること、すなわちプログラムブロック２２および２２’が設けられることを示している。プログラムブロック２２が、プログラムブロック２２’を呼び出す場合（図示せず）には上記のメモリ保護装置によって例外はトリガされない。なぜならばこの呼び出しは、セグメントを跨ぐ呼び出しではないからである。
【００６０】
図２には、ここで開示している制御装置１００の一実施形態がシンボリックに示されている。制御装置１００にはデータ処理装置１２０が含まれている。データ処理装置１２０には、例えば図１のメモリのように構成することが可能なメモリ１３０が含まれている。メモリ１３０は、セグメント１１０，１１２および１１４に分割されており、これらのセグメントにはそれぞれ異なる安全レベルを対応付けることができる。例えば、これらのセグメント内の複数のプログラムブロックには、セグメント毎に同じ１つの安全レベルを付与することができ、セグメント１１０〜１１４が異なれば、これらのプログラムブロックの安全レベルが異なる。
【００６１】
データ処理装置１２０にはさらに上記のメモリにアクセスするプロセッサ１４０が含まれている。このアクセスをシンボリックに表す論理的なリンクは、リンク１７０，１７２（点線）によって表されている。
【００６２】
制御装置１００のデータ処理装置１２０にはさらに、メモリ保護装置１５０が含まれている。これにはメモリ保護レジスタ１５２が備え付けられており、このメモリ保護レジスタは、メモリ１３０の上記の複数のセグメントを設定し、殊にこれらの境界を設定する。
【００６３】
メモリ保護レジスタ１５２は、メモリ保護装置１５０の外部に、有利には上記のデータ処理装置内にレジスタとして設けることもでき、このレジスタは、メモリ保護装置１５０に間接または直接に接続されている。
【００６４】
データ処理装置１２０にはさらに例外ハンドラ１６０が含まれている。機能が異なることにより、コンポーネント１４０，１５０，１６０は個々のブロックとして示されているが、これらは少なくとも部分的に互いに統合することが可能である。殊にメモリ保護装置および／または例外ハンドラはプロセッサ１４０に組み込むことができる。このことは、メモリ１３０にも当てはまる。択一的にはメモリ１３０をプロセッサの外部に設けることができる。
【００６５】
プロセッサ１４０は、メモリ１３０に読み出しおよび書き込みアクセスを行う。このアクセスは、プロセッサ１３０同様に組み込むことが可能なメモリ管理ユニット１５４を介して行われる。これによってメモリ管理ユニット１５４により、対応するアクセスによって使用される論理的なリンク１７０，１７２が実現される。ここからはプロセッサがメモリ１３０の異なる２つのセグメント１１０，１１２を１７０，１７２に示したようにアクセスすることもわかる。論理なリンク１７０が存在する場合、上記のメモリ保護装置により、ないしは、上記のメモリ保護装置１５０が設けられているメモリ管理ユニット１５４により、プロセッサ１４０による第２のセグメント１１２へのアクセスがディスエーブルされるため、論理的なリンク１７２が切断される。
【００６６】
図１に基づいて説明したように、例えば、図１において参照符号３０によって示したような呼び出しによって、第２のセグメント１１２がイネーブルされ、かつ、第１のセグメント１１０がディスエーブルされると、論理的なリンク１７０が非アクティブ化されるかまたディスエーブルされ、かつ、論理的なリンク１７２がイネーブルされる。このディスエーブルおよびイネーブルは、メモリ保護装置１５０ないしはメモリ管理ユニット１５４によって実行される。
【００６７】
セグメント１１２に記憶されているプログラムブロックの実行が終了すると、リターンジャンプが実行される。これについては図１の矢印４２を参照されたい。これによって論理的なリンク１７２がディスエーブルされ、論理的なリンク１７０がイネーブルされる。この場合にセグメント１１０に記憶されているプログラムブロックが引き続いて実行される。
【００６８】
上記のディスエーブルおよびイネーブルは、メモリ保護装置１５０によって実行される。このメモリ保護装置は、メモリ保護レジスタ１５２を用いて、メモリ１３０の複数のセグメント１１０〜１１４のうちのいずれのアクセスが現在イネーブルされているか、またいずれのアクセスがイネーブルされていないかを識別する。
【００６９】
第１のセグメント１１０におけるプログラムブロックが、第２のセグメント１１２におけるプログラムブロックにアクセスする場合、このことはメモリ保護装置により、殊にメモリ保護レジスタ１５２と、そこに記憶されているそのアドレスデータに基づいて識別され、例外がトリガされる。この例外は、例外ハンドラ１６０に転送される。
【００７０】
これにより、例外ハンドラ１６０は、第１の論理的なリンク１７０をディスエーブルしかつ第２の論理的なリンク１７２をイネーブルすることにより、第１のセグメントをディスエーブルにする。このイネーブルおよびディスエーブルは、例外ハンドラ１６０の対応する複数の信号によって行われ、これらの信号はメモリ管理ユニット１５４に、また殊にメモリ保護装置１５０に転送される。
【符号の説明】
【００７１】
１０，１２，１４  メモリ１３０のセグメント、  ２０，２２，２２’，２４  プログラムブロック、  ３０，３０’，３２，３２’  例えばプログラムブロックの呼び出し（このプログラムブロックは、呼び出される側のプログラムブロックとは異なるセグメント内にある）、  ４０，４０’，４２，４２’  呼び出しないしはリターンジャンプ命令、  １００  制御装置、  １２０  データ処理装置、  １３０  メモリ、  １１０，１１２，１１４  メモリ１３０のセグメント、  １４０  プロセッサ、  １５０  メモリ保護装置、  １５２  メモリ保護レジスタ、  １５４  メモリ管理ユニット、  １６０  例外ハンドラ、  １７０，１７２  メモリ管理ユニットないしはメモリ保護装置によってディスエーブルまたはイネーブルされる、プロセッサとメモリとの間の論理的なリンク
【図１】
2015531521.tif 000003
【図２】
2015531521.tif 000004
【国際調査報告】
2015531521.tif 000005
2015531521.tif 000006
2015531521.tif 000007
2015531521.tif 000008