(57)【要約】【課題】  キャッシュミスを回避すると同時にキャッシュメモリを有効に使用することができるリアルタイム制御システムを提供する。【解決手段】  動作モードが０の時のみ制御モードの更新、及びキャッシュの入換えを行い、キャッシュ入換え処理を行う必要がある場合にはキャッシュ入換え処理が終了してから動作モードの更新を行う。また、動作モードが０の時のみ制御モードの更新を行い、動作モードが１の時は次制御モードの値を用いてキャッシュ入換え処理の要否を判断する。また、キャッシュ入換え処理を行う必要がある場合にはキャッシュ入換え処理が終了してから動作モードの更新を行う。これによって、更新後の制御モードに対応する制御処理が行われる前にキャッシュ入換え処理が終了することを保証している。【選択図】  図７
2005044231.tif 000002
【特許請求の範囲】
【請求項１】
機器との間でデジタル、またはアナログ信号の入出力を行う入出力手段と、
前記入出力手段から入力値を受け取り、必要な演算を行った後に前記入出力手段に出力値を出力するプロセッサと、
前記プロセッサが実行する命令、及び処理するデータを格納するメモリと、
前記メモリに格納された命令、またはデータの一部のコピーを格納するキャッシュとを有し、
前記プロセッサは制御モードに応じて複数の制御処理の中から１つを選んで一定の制限時間内に実行するリアルタイム制御システムにおいて、
前記プロセッサは、制御処理を実行する必要があるかどうかを示す動作モードに応じて、動作モードが制御処理を実行する必要が無いことを示している時にのみ前記制御モードの値を更新する制御モード更新処理を行い、
前記制御モード更新処理によって制御モードに変更があった場合に変更後の制御モードに対応する制御処理の命令、またはデータの一部を前記キャッシュに転送するキャッシュ入換え処理を行い、
前記キャッシュ入換え処理を行う必要がある場合には、前記キャッシュ入換え処理が終了した後に前記動作モードを更新する動作モード更新処理を行うことにより、
更新後の制御モードに対応する制御処理が実行される前に前記キャッシュ入換え処理が完了していることを保証すること、を特徴とするリアルタイム制御システム。
【請求項２】
機器との間でデジタル、またはアナログ信号の入出力を行う入出力手段と、
前記入出力手段から入力値を受け取り、必要な演算を行った後に前記入出力手段に出力値を出力するプロセッサと、
前記プロセッサが実行する命令、及び処理するデータを格納するメモリと、
前記メモリに格納された命令、またはデータの一部のコピーを格納するキャッシュとを有し、
前記プロセッサは制御モードに応じて複数の制御処理の中から１つを選んで一定の制限時間内に実行するリアルタイム制御システムにおいて、
前記プロセッサは、制御処理を実行する必要があるかどうかを示す動作モードに応じて、動作モードが制御処理を実行する必要が無いことを示している時には前記制御モードの値を更新する制御モード更新処理を行い、
前記動作モードが制御処理を実行する必要が有ることを示している時には前記制御モードの値を更新せずに値の変更の検出のみを行う次制御モード判定処理を行い、
前記制御モード更新処理、または前記次制御モード判定処理によって制御モードの変更が検出された場合に変更後の制御モードに対応する制御処理の命令、またはデータの一部を前記キャッシュに転送するキャッシュ入換え処理を行い、
前記キャッシュ入換え処理を行う必要がある場合には、前記キャッシュ入換え処理が終了した後に前記動作モードを更新する動作モード更新処理を行うことにより、
更新後の制御モードに対応する制御処理が実行される前に前記キャッシュ入換え処理が完了していることを保証すること、を特徴とするリアルタイム制御システム。
【請求項３】
請求項１、または請求項２記載のリアルタイム制御システムにおいて、
前記複数の制御処理で共通に行う処理と各制御処理固有の処理が、前記キャッシュ上で異なるエリアに配置される様に、メモリ上に制御処理を配置したことを特徴とするリアルタイム制御システム。
【請求項４】
請求項１、または請求項２記載のリアルタイム制御システムにおいて、
前記複数の制御処理のそれぞれで使用する命令、またはデータのうち、高速なアクセスを必要としない命令、またはデータを、前記キャッシュへの格納を禁止する属性に指定したことを特徴とするリアルタイム制御システム。
【請求項５】
機器との間でデジタル、またはアナログ信号の入出力を行う入出力手段と、
前記入出力手段から入力値を受け取り、必要な演算を行った後に前記入出力手段に出力値を出力するプロセッサと、
前記プロセッサが実行する命令、及び処理するデータを格納するメモリと、
前記メモリよりも高速に動作する高速メモリとを有し、
前記プロセッサは制御モードに応じて複数の制御処理の中から１つを選んで一定の制限時間内に実行するリアルタイム制御システムにおいて、
前記プロセッサは、制御処理を実行する必要があるかどうかを示す動作モードに応じて、動作モードが制御処理を実行する必要が無いことを示している時にのみ前記制御モードの値を更新する制御モード更新処理を行い、
前記制御モード更新処理によって制御モードに変更があった場合に変更後の制御モードに対応する制御処理の命令、またはデータの一部を前記高速メモリに転送するメモリ転送処理を行い、
前記メモリ転送処理を行う必要がある場合には、前記メモリ転送処理が終了した後に前記動作モードを更新する動作モード更新処理を行うことにより、
更新後の制御モードに対応する制御処理が実行される前に前記メモリ転送処理が完了していることを保証すること、を特徴とするリアルタイム制御システム。
【請求項６】
機器との間でデジタル、またはアナログ信号の入出力を行う入出力手段と、
前記入出力手段から入力値を受け取り、必要な演算を行った後に前記入出力手段に出力値を出力するプロセッサと、
前記プロセッサが実行する命令、及び処理するデータを格納するメモリと、
前記メモリよりも高速に動作する高速メモリとを有し、
前記プロセッサは制御モードに応じて複数の制御処理の中から１つを選んで一定の制限時間内に実行するリアルタイム制御システムにおいて、
前記プロセッサは、制御処理を実行する必要があるかどうかを示す動作モードに応じて、動作モードが制御処理を実行する必要が無いことを示している時には前記制御モードの値を更新する制御モード更新処理を行い、
前記動作モードが制御処理を実行する必要が有ることを示している時には前記制御モードの値を更新せずに値の変更の検出のみを行う次制御モード判定処理を行い、
前記制御モード更新処理、または前記次制御モード判定処理によって制御モードの変更が検出された場合に変更後の制御モードに対応する制御処理の命令、またはデータの一部を前記高速メモリに転送するメモリ転送処理を行い、
前記メモリ転送処理を行う必要がある場合には、前記メモリ転送処理が終了した後に前記動作モードを更新する動作モード更新処理を行うことにより、
更新後の制御モードに対応する制御処理が実行される前に前記メモリ転送処理が完了していることを保証すること、を特徴とするリアルタイム制御システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサが制御処理を所定の時間内に実行するリアルアイム制御システムに関し、特に、プロセッサがメモリに記憶された命令又はデータをキャッシュメモリに格納してから実行するリアルタイム制御システムに関する。
【背景技術】
【０００２】
特開平２００２−１２７８４８号公報の図５には、プロセッサとＲＡＭ（Random  Access  Memory）及びＲＯＭ（Read  Only  Memory）等のメモリを有するリアルタイム制御システムにおいて、キャッシュメモリを設けることにより、外部メモリへのアクセスを高速化することが記載されている。
【０００３】
特開２００２−２５９２０９号公報には、初めて読み出される命令やデータをキャッシュメモリに格納することによって、キャッシュミスの発生を防止するシステムが記載されている。この公報に記載された例では、実行待ち状態のタスクに対応する命令及びデータを、このタスクが実行中状態に遷移する前に、主記憶手段から読み出してキャッシュメモリに格納する。
【０００４】
特開平１０−３４０１９７号公報には、キャッシュメモリへのコード転送が間に合わないために待ち時間が発生することを解消するためのキャッシング制御方法が記載されている。この公報に記載された例では、現在のフレーム以降のフレームで処理されるタスクを予測し、予測したタスクの実行フレームより少なくとも１フレーム前に、該予測したタスクを待機キャッシング領域にロードする。
【０００５】
【特許文献１】特開２００２−１２７８４８号公報
【特許文献２】特開２００２−２５９２０９号公報
【特許文献３】特開平１０−３４０１９７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特開２００２−２５９２０９号公報には、主記憶装置１０２からタスクキャッシュメモリ１０３への命令およびデータの転送は、タスクキャッシュメモリ１０３が実行する、と記載されている(段落番号００２７)。この様な方式の場合、主記憶からキャッシュへの転送とプロセッサの処理が並列に行えるというメリットがあるが、タスクキャッシュメモリの構成が複雑となり、コストが増大するという問題がある。また、汎用のプロセッサを使用できないことから、専用のプロセッサを開発する必要が生じ、開発コストの増大を招くという問題もある。
【０００７】
特開平１０−３４０１９７号公報に記載された発明では、外部メモリからキャッシュメモリへタスクコードを転送する手段に関する記載はないがが、図６には、タスクの実行とタスクコードの転送が平行して行われる様に記載されていることから、転送はプロセッサとは独立したハードウェアにより行われるものと考えられる。従って、特開2002-259209号公報の発明と同様の問題があると考えられる。
【０００８】
本発明の目的は、汎用のプロセッサを用いて低コストの制御システムを実現することにあり、メモリからキャッシュへの命令やデータの転送をプロセッサ上のソフトウェアで実現することにある。
【課題を解決するための手段】
【０００９】
キャッシュ入換えをソフトウェアで実行する場合には、ハードウェアでキャッシュ入換え処理を行う場合に比べて時間がかかるため、キャッシュ入換えの処理時間は制御処理の１周期分の処理時間より長くなる。従って、キャッシュ入換え処理が終了するまで入換え後の制御処理を実行しない様にするしかけが必要となる。
【００１０】
この問題に対応するため、第１の実施例(図１〜８)では、動作モードが０の時のみ制御モードの更新、及びキャッシュの入換えを行い(図５の506の分岐)、キャッシュ入換え処理を行う必要がある場合にはキャッシュ入換え処理が終了してから動作モードの更新を行う。これによって、更新後の制御モードに対応する制御処理が行われる前にキャッシュ入換え処理が終了することを保証している。
【００１１】
また、第２の実施例(図９〜１１)では、動作モードが０の時のみ制御モードの更新を行い、動作モードが１の時は次制御モードの値を用いてキャッシュ入換え処理の要否を判断している(図９の906、908、914)。また、キャッシュ入換え処理を行う必要がある場合にはキャッシュ入換え処理が終了してから動作モードの更新を行う。これによって、更新後の制御モードに対応する制御処理が行われる前にキャッシュ入換え処理が終了することを保証している。
【発明の効果】
【００１２】
本発明によれば、汎用のプロセッサを用いて低コストの制御システムを実現することができ、メモリからキャッシュへの命令やデータの転送をプロセッサ上のソフトウェアで実現することができる。
【発明を実施するための最良の形態】
【００１３】
図１は、本発明の第１の実施例を示すブロック図である。本例のリアルタイム式の制御装置１０２は、ＣＰＵ（Central  Processing  Unit）１０８、キャッシュメモリ１０６、ブリッジ１１２、ＲＡＭ（Random  Access  Memory）１１０、ＲＯＭ（Read  Only  Memory）１１４及び入出力部１１６を有し、ＣＰＵ１０８、キャッシュメモリ１０６、及びブリッジ１１２はバス１２２を介して互いに接続され、ブリッジ１１２、ＲＡＭ１１０、ＲＯＭ１１４及び入出力部１１６はバス１２４を介して互いに接続されている。ＣＰＵ１０８と入出力部１１６の間は制御信号線１２６を介して接続されている。入出力部１１６は、制御信号線１２８を介して機器１０４に接続されている。制御装置１０２は、入出力部１１６及び制御信号線１２８を介して、機器１０４の状態を監視し、その制御を行う。
【００１４】
キャッシュメモリ１０６は、ＲＡＭ１１０又はＲＯＭ１１４に格納されている命令及びデータの一部のコピーを格納するための回路であり、ＲＡＭ１１０やＲＯＭ１１４より高速に動作する。
【００１５】
ＣＰＵ１０８は、バス１２２を介して交信した命令及びデータに基づいて必要な処理を行う。ＣＰＵ１０８は、制御信号線１２６を介して入出力部１１６から割込み要求を受け取り、所定の割込み処理を行う。
【００１６】
ブリッジ１１２は、バス１２２を介してＣＰＵ１０８から命令又はデータのアクセス要求を受け取ると、バス１２４を介してＲＡＭ１１０、ＲＯＭ１１４又は入出力部１１６との間で命令又はデータの交信を行う。
【００１７】
ＲＡＭ１１０又はＲＯＭ１１４は、ブリッジ１１２から要求を受け取ると、ブリッジ１１２との間で命令又はデータの交信を行う。この場合、ブリッジ１１２へ転送するのは、ＣＰＵ１０８から要求のあった命令又はデータそのものだけではなく、前後のアドレスを含めた一定サイズの命令又はデータの集合である。
【００１８】
入出力部１１６はブリッジ１１２から要求を受け取ると、制御信号線１２８を介して機器１０４との間でデジタル信号及びアナログ信号の交信を行う。入出力部１１６はまた、制御信号線１２６を介してＣＰＵ１０８に割込み要求を出力する。
【００１９】
従来の技術では、ＣＰＵ１０８は、要求した命令又はデータがキャッシュメモリ１０６に有る場合には、キャッシュメモリ１０６との間で命令又はデータの交信を行い、要求した命令又はデータがキャッシュメモリ１０６に無い場合には、ブリッジ１１２を介してＲＡＭ１１０、ＲＯＭ１１４又は入出力部１１６との間で命令又はデータの交信を行う。
【００２０】
本発明によると、ＣＰＵ１０８が必要とする命令又はデータは、予め、ＲＡＭ１１０、ＲＯＭ１１４又は入出力部１１６からブリッジ１１２を介して読み出され、キャッシュメモリ１０６に格納される。ＣＰＵ１０８は、常に、キャッシュメモリ１０６に格納された命令又はデータのコピーを使用し、ＲＡＭ１１０やＲＯＭ１１４へのアクセスを行わない。従って、ＣＰＵ１０８の処理が高速化される。
【００２１】
図２は、図１の入出力部１１６の構成を示すブロック図である。本例の入出力部１１６は、バスインタフェース２０２、デジタル信号出力部２０４、デジタル信号入力部２０６、ＤＡ変換部２０８、ＡＤ変換部２１０及びタイマ２１２を有し、これらはバス２２２によって互いに接続されている。タイマ２１２には制御信号線１２６が接続されている。デジタル信号出力部２０４、デジタル信号入力部２０６、ＤＡ変換部２０８、ＡＤ変換部２１０及びタイマ２１２には制御信号線１２８が接続されている。
【００２２】
バスインタフェース２０２は、バス１２４を介してデータの転送要求を受信すると、バス２２２を介してデジタル信号出力部２０４、デジタル信号入力部２０６、ＤＡ変換部２０８、ＡＤ変換部２１０又はタイマ２１２との間でデータの交信を行う。
【００２３】
デジタル信号出力部２０４は、バス２２２を介してバスインタフェース２０２からデータを受け取り、それをデジタル信号として制御信号線１２８に出力する。
【００２４】
デジタル信号入力部２０６は、制御信号線１２８からデジタル信号を受信し、それをバス２２２を介してバスインタフェース２０２に転送する。
【００２５】
ＤＡ変換部２０８は、バス２２２を介してバスインタフェース２０２からデータを受け取り、それをアナログ信号に変換して制御信号線１２８に出力する。
【００２６】
ＡＤ変換部２１０は、制御信号線１２８からアナログ信号を受信し、それをデジタルデータに変換し、バス２２２を介してバスインタフェース２０２に転送する。
【００２７】
タイマ２１２は、バス２２２を介してバスインタフェース２０２から受信したデータに従って、一定周期の割込み要求を制御信号線１２６に出力する。タイマ２１２はまた、バス２２２を介してバスインタフェース２０２から受信したデータに従って、一定周期のデジタル信号を制御信号線１２８に出力する。
【００２８】
図３〜図８を参照して本発明によるリアルタイム制御システムの第１の例を説明する。図３は、図１のＲＯＭ１１４に格納された命令及びデータの配置を示す。ＣＰＵ１０８が出力するアドレスは３２ビット（１６進数で８桁）であるが、ＲＯＭ１１４の容量が６４キロバイトであるため、アドレスは１６ビット（１６進数で４桁）で表記することとする。
【００２９】
アドレスＨ’００００からＨ’５ＦＦＦまでの２４キロバイトはキャッシュメモリ不使用エリアに指定されており、高速に処理する必要の無い命令やデータが格納されている。ここに格納された命令やデータは、キャッシュメモリに転送されない。
【００３０】
アドレスＨ’６０００からＨ’ＢＦＦＦまでの２４キロバイトはキャッシュメモリ使用エリアに指定されており、高速に処理する必要の有る命令やデータが格納されている。本例では、ここに格納された命令やデータは、ＣＰＵが実行する前に、キャッシュメモリに転送される。
【００３１】
キャッシュメモリ不使用エリアとキャッシュメモリ使用エリアの判定を行う方法には、いくつかの方法が知られているが、例えば、ＣＰＵ１０８の出力するアドレスの上位数ビットを用いて判定する方法や、アドレスとキャッシュメモリ使用／不使用の対応を記憶するための記憶素子を設ける方法などが考えられる。
【００３２】
アドレスＨ’００００からＨ’１ＦＦＦまでの８キロバイトは、初期化の処理を行うための命令及びデータが格納されている。初期化処理の詳細は図４を参照して説明する。
【００３３】
アドレスＨ’２０００からＨ’３ＦＦＦまでの８キロバイトは、割込み１の処理を行うための命令及びデータが格納されている。
【００３４】
アドレスＨ’４０００からＨ’５ＦＦＦまでの８キロバイトは、割込み２の処理を行うための命令及びデータが格納されている。
【００３５】
アドレスＨ’６０００からＨ’７ＦＦＦまでの８キロバイトは、制御Ａの処理を行うための命令及びデータが格納されている。
【００３６】
アドレスＨ’８０００からＨ’９ＦＦＦまでの８キロバイトは、制御Ｂの処理を行うための命令及びデータが格納されている。
【００３７】
アドレスＨ’Ａ０００からＨ’ＢＦＦＦまでの８キロバイトは、制御Ｃの処理を行うための命令及びデータが格納されている。
【００３８】
アドレスＨ’Ｃ０００からＨ’ＦＦＦＦまでの１６キロバイトは、未使用エリアである。
【００３９】
なお、本実施例では説明の簡単化のため、ＲＡＭ１１０上の命令及びデータに関する記載は省略するが、基本的な考え方はＲＯＭ１１４上に置かれた命令及びデータと同じである。
【００４０】
図４は、図３の初期化の処理の内容を示すフローチャートである。ステップ４０４は、ＣＰＵを割込み禁止状態に設定する処理である。この処理によって、初期化の処理の途中で割込み処理が開始されるのが防止される。
【００４１】
ステップ４０６は、割込み１の処理の初期設定を行う処理である。具体的には、タイマ２１２に割込み１の周期の設定を行う。
【００４２】
ステップ４０８は、割込み２の処理の初期設定を行う処理である。具体的には、タイマ２１２に割込み２の周期の設定を行う。
【００４３】
ステップ４１０は、動作モードの初期値を設定する処理である。動作モード０は停止状態、動作モード１は動作状態を示す。初期値は０である。動作モードの決定方法は対象となる機器によって異なるが、例えば、ユーザが操作するスイッチの状態、気温、時刻、電圧、電流、可動部品の位置、回転部品の回転角、などの状態に応じて判断するケースが考えられる。ＣＰＵ１０８は、動作モードの値を、制御信号線１２８、及び入出力部１１６を介して機器１０４から入力する。
【００４４】
ステップ４１２は、制御モードの初期値を設定する処理である。制御モード１は制御Ａ、制御モード２は制御Ｂ、制御モード３は制御Ｃを選択することを示す。初期値は０である。制御モードの決定方法は対象となる機器によって異なるが、例えば、ユーザが操作するスイッチの状態、気温、時刻、電圧、電流、可動部品の位置や速度、回転部品の回転角や回転速度、などの状態に応じて判断するケースが考えられる。ＣＰＵ１０８は、制御モードの値を、制御信号線１２８、及び入出力部１１６を介して機器１０４から入力する。
【００４５】
ステップ４１４は、ＣＰＵを割込み許可状態に設定する処理である。この処理によって、タイマからの割込み要求を受け付け、割込み１又は割込み２の処理を実行することが可能となる。
【００４６】
図５は、図３の割込み１の処理の内容を示すフローチャートである。割込み１の処理では、キャッシュメモリの入換えを行う。本例では、キャッシュメモリの入換えは、動作モードが０であり且つ制御モードが変更されたときに実行される。
【００４７】
ステップ５０４は、動作モードや制御モードの更新を行うのに必要な入力の取り込みを行う処理である。
【００４８】
ステップ５０６は動作モードの値によって分岐する処理である。動作モードが０の時はステップ５０８に進み、動作モードが１の時はステップ５１４に進む。ステップ５０８は、制御モード更新を行う処理である。
【００４９】
ステップ５１０は、制御モードに変更が有ったかどうかによって分岐する処理である。制御モードに変更が有った場合には、ステップ５１２に進み、変更が無かった場合にはステップ５１４に進む。
【００５０】
ステップ５１２は、キャッシュメモリの入換えを行う処理である。制御モードが１の場合は制御Ａ、２の場合は制御Ｂ、３の場合は制御Ｃの命令及びデータをキャッシュメモリに転送する。ステップ５１４は、動作モードの更新を行う処理である。
【００５１】
図６は、図３の割込み２の処理の内容を示すフローチャートである。割込み２の処理では、制御Ａ、Ｂ、又はＣを実行する。ステップ６０４は動作モードの値によって分岐する処理である。動作モードが１の時はステップ６０６に進み、動作モードが０の時は処理を終了する。
【００５２】
ステップ６０６は制御モードの値によって分岐する処理である。制御モードが１の時にはステップ６１２に進み、制御Ａの処理を行う。制御モードが２の時はステップ６１０に進み、制御Ｂの処理を行う。制御モードが３の時はステップ６０８に進み、制御Ｃの処理を行う。
【００５３】
図７は、図３に示されたプログラムが実行される様子を示すタイミングチャートである。
図７では、割込み１、割込み２、制御Ｂ及び制御Ｃの処理が実行されるタイミングについて記載した。初期化の処理は、制御装置の起動時に一度だけ行われる処理であり、ここでは記載を省略する。制御Ａ、制御Ｂ及び制御Ｃの処理は、割込み２の処理の中で条件付きで実行されるものであり、ここでは制御Ｂ及び制御Ｃが実行される条件のみ記載した。制御Ａが実行される場合もタイミングは同様である。
【００５４】
割込み１の処理は、2dtの周期で実行される。太い実線は、図５の割込み１の処理のうちキャッシュメモリ入換え処理５１２を除いた処理を示し、実線の縦方向の幅は、その処理が実行されている時間を示す。割込み２の処理は、dtの周期で実行される。太い破線は、図６の割込み２の処理のうち制御Ａ、Ｂ又はＣの処理を除いた処理を示し、破線の縦方向の幅は、その処理が実行されている時間を示す。
【００５５】
割込み１の処理に対する時間制約は緩く、平均的な周期が守られていれば、一時的に周期が変動しても良い。一方、割込み２の処理に対する時間制約は厳しく、周期の変動は許されない。このため、割込み２の優先度は割込み１の優先度より高く設定されている。割込み１の処理中でも、割込み２を開始する時刻となった場合には、割込み１の処理を中断して割込み２の処理を開始する。一方、割込み２の処理中に割込み１を開始する時刻となった場合には、割込み２の処理が完了するまで割込み１の処理を延期する。
【００５６】
図７では説明の簡単化のため、割込み１の周期が割込み２の周期の２倍であるケースについて示したが、割込み１と割込み２の周期は必ずしも倍数の関係に有る必要はない。また、本例では割込み１は周期的に起動される割込みとしたが、必ずしも周期的な割込みである必要はなく、通信等のイベントドリブンな割込みであっても良い。
【００５７】
動作モード及び制御モードは、図５に示したように、割込み１の処理の中で更新されるため、2dtの周期で値が更新される。
【００５８】
時刻t0+2dt及び時刻t0+14dtに開始される割込み１の処理において、動作モードが０であり且つ制御モードの変更が検出されるため、キャッシュメモリ入換え処理が行われる。それ以外の割込み１の処理においては、制御モードの変更は検出されないため、キャッシュメモリ入換え処理は行われない。
【００５９】
時刻t0+6dtからt0+12dt及び時刻t0+18dtからt0+24dtの期間は動作モードが１であるため、割込み２の処理の中でそれぞれ制御モードに対応した制御処理（制御Ｂ又は制御Ｃ）が行われる。それ以外の期間では、動作モードが０であるため、制御処理は行われない。制御処理Ｂ、Ｃを矩形線で示すが、矩形の縦方向の幅は、制御処理Ｂ、Ｃが実行されている時間を示す。
【００６０】
図８は、図７の各時刻におけるキャッシュメモリの中身を示す図である。キャッシュメモリの容量は８キロバイトであると仮定した。従って、図３のキャッシュメモリ使用エリアにある制御Ａ、制御Ｂ、制御Ｃのうちいずれか１つしかキャッシュメモリに格納することはできない。
【００６１】
時刻t0+2dtにおいては、それまでの制御モード（＝１）に対応した制御Ａがキャッシュメモリに格納されている。
【００６２】
時刻t0+2dtからt0+4dtにおいては、割込み１によってキャッシュメモリの入換えが行われる。
【００６３】
時刻t0+4dtからt0+14dtにおいては、制御Ｂがキャッシュメモリに格納されている。制御Ｂの処理が行われるのは時刻t0+6dtからt0+12dtの間であるため、常にキャッシュメモリに格納された状態で動作することが可能となり、キャッシュメモリミスによる処理時間の増大によって制御周期が守れないという事態が防止される。
【００６４】
時刻t0+14dtからt0+16dtにおいては、割込み１によってキャッシュメモリの入換えが行われる。
【００６５】
時刻t0+16dtからt0+26dtにおいては、制御Ｃがキャッシュメモリに格納されている。制御Ｃの処理が行われるのは時刻t0+18dtからt0+24dtの間であるため、常にキャッシュメモリに格納された状態で動作することが可能となり、キャッシュメモリミスによる処理時間の増大によって制御周期が守れないという事態が防止される。
【００６６】
図９〜図１１を参照して本発明によるリアルタイム制御システムの第２の例を説明する。先ず図９を参照して本例の割込み１の処理を説明する。本例の割り込み処理１を図５に示した第１の例の割り込み処理１と比較すると、本例では、動作モードが１の場合でも、次の制御モードが現在の制御モードと異なる場合には、キャッシュメモリの入換えを行う。図３〜図８の第１の例では、キャッシュメモリ入換えの時間が長い場合には、動作モードが０となったとき、次の制御モードのプログラム等のキャッシュメモリへの転送が完了していない場合がある。本例では、動作モードが０となったとき、次の制御モードのプログラム等のキャッシュメモリへの転送は完了している。従って、制御のリアルタイム性が確保される。
【００６７】
ステップ９０４は、動作モードや制御モードの更新を行うのに必要な入力の取り込みを行う処理である。
【００６８】
ステップ９０６は動作モードの値によって分岐する処理である。動作モードが０の時はステップ９０８に進み、動作モードが１の時はステップ９１４に進む。
【００６９】
ステップ９０８は、制御モード更新を行う処理である。ここでは、制御モードを示す変数と、次制御モードを示す変数の両方に同一の値を設定する。制御モードの意味については、図５のステップ５０８と同様である。
【００７０】
ステップ９１０は、制御モードに変更が有ったかどうかによって分岐する処理である。制御モードを示す変数が更新前後で異なり、かつ、次制御モードを示す変数が更新前後で異なる場合に制御モードに変更が有ったと判断する。制御モードに変更が有った場合には、ステップ９１２に進み、変更が無かった場合にはステップ９１８に進む。
【００７１】
ステップ９１４は、次の制御モードの値を予測する処理を行う。動作モードが１である期間は同じ制御モードで処理を続ける必要があるため、制御モードを示す変数の値は更新せず、次制御モードを示す変数のみ更新する。
【００７２】
ステップ９１６は、ステップ９１４で求めた次の制御モードの値が現在の制御モードに対して変更があるかどうかによって分岐する処理である。現在の制御モードに対して変更がある場合にはステップ９１２に進み、変更が無い場合にはステップ９１８に進む。
【００７３】
ステップ９１２は、キャッシュメモリの入換えを行う処理である。制御モードが１の場合は制御Ａ、制御モードが２の場合は制御Ｂ、制御モードが３の場合は制御Ｃの命令及びデータをキャッシュメモリに転送する。
【００７４】
ステップ９１８は、動作モードの更新を行う処理である。動作モードの意味については、図５のステップ５１４と同様である。
【００７５】
図１０は、図３に示されたプログラムにおいて、割込み１の処理が図９で示された内容である場合に、処理が実行される様子を示すタイミングチャートである。
【００７６】
図１０では、割込み１、割込み２、制御Ｂ及び制御Ｃの処理が実行されるタイミングについて記載した。初期化の処理は、制御装置の起動時に一度だけ行われる処理であり、ここでは記載を省略する。制御Ａ、制御Ｂ及び制御Ｃの処理は、割込み２の中で条件付きで実行されるものであり、ここでは制御Ｂ及び制御Ｃが実行される条件のみ記載した。制御Ａが実行される場合もタイミングは同様である。
【００７７】
割込み１の処理は、2dtの周期で実行され、割込み２の処理は、dtの周期で実行される。
【００７８】
割込み１の処理に対する時間制約は緩く、また、キャッシュメモリ入換えの処理を行う場合は処理時間が周期を越えるため、キャッシュメモリ入換え処理が終了した段階でそれまでに発生した割込みの要求をキャンセルすることとする。一方、割込み２の処理に対する時間制約は厳しく、周期の変動は許されない。このため、割込み２の優先度は割込み１の優先度より高く設定されている。割込み１の処理中でも、割込み２を開始する時刻となった場合には、割込み１の処理を中断して割込み２の処理を開始する。一方、割込み２の処理中に割込み１を開始する時刻となった場合には、割込み２の処理が完了するまで割込み１の処理を延期する。
【００７９】
図１０では説明の簡単化のため、割込み１の周期が割込み２の周期の２倍であるケースについて示したが、割込み１と割込み２の周期は必ずしも倍数の関係に有る必要はない。また、本実施例では割込み１は周期的に起動される割込みとしたが、必ずしも周期的な割込みである必要はなく、通信等のイベントドリブンな割込みであっても良い。
【００８０】
動作モード、制御モード及び次制御モードは割込み１の処理の中で更新されるため、2dtの周期で値が変化する。
【００８１】
時刻t0+2dtに開始される割込み１の処理において、動作モードが０であり且つ制御モードの変更が検出されるため、キャッシュメモリ入換え処理が行われる。また、時刻t0+8dt及び時刻t0+18dtに開始される割込み１の処理において、動作モードが１であっても、次制御モードが変化すると、キャッシュメモリ入換え処理が行われる。図示のように、動作モードが１では、キャッシュメモリ入換え処理の途中でも、割り込み２の処理が開始される。この場合には、キャッシュメモリ入換え処理は中断され、割り込み２の処理が実行される。キャッシュメモリ入換え処理は、割り込み２の処理が実行されていない間に実行される。
【００８２】
時刻t0+6dt、t0+14dt、t0+16dt及びt0+24dtに開始される割込み１の処理においては、次制御モードが更新前後で値が変わらないため、キャッシュメモリ入換え処理は行われない。
【００８３】
時刻t0+6dtからt0+14dt及び時刻t0+16dtからt0+24dtの期間は動作モードが１であるため、割込み２の処理の中でそれぞれ制御モードに対応した制御処理（制御Ｂ又は制御Ｃ）が行われる。それ以外の期間では、動作モードが０であるため、制御処理は行われない。
【００８４】
図１１は、図１０の各時刻におけるキャッシュメモリの中身を示す図である。キャッシュメモリの容量は１６キロバイトであり、２ウェイのセットアソシアティブキャッシュメモリであると仮定した。従って、ウェイ１とウェイ２のそれぞれに、図３のキャッシュメモリ使用エリアにある制御Ａ、制御Ｂ、制御Ｃのうちいずれか１つを格納することができるが、３つ全てを一度にキャッシュメモリに格納することはできない。
【００８５】
時刻t0+2dtにおいては、制御Ａと制御Ｃがキャッシュメモリに格納されていると仮定した。
【００８６】
時刻t0+2dtからt0+6dtにおいては、割込み１によってキャッシュメモリの入換えが行われる。この時刻においては、もともとキャッシュメモリに格納されていた制御Ａと制御Ｃのいずれも使用していないため、いずれのウェイを入れ換えても良いが、直前に使用していた制御Ａを残し、制御Ｃの格納されていたウェイ２を入れ換えることとする。
【００８７】
時刻t0+6dtからt0+8dtにおいては、制御Ａと制御Ｂがキャッシュメモリに格納されている。
【００８８】
時刻t0+8dtからt0+14dtにおいては、割込み１によってキャッシュメモリの入換えが行われる。この時刻においては、制御Ｂを使用しているため、制御Ａの格納されていたウェイ１を入れ換える。
【００８９】
時刻t0+14dtからt0+18dtにおいては、制御Ｂと制御Ｃがキャッシュメモリに格納されている。
【００９０】
時刻t0+18dtからt0+24dtにおいては、割込み１によってキャッシュメモリの入換えが行われる。この時刻においては、制御Ｃを使用しているため、制御Ｂの格納されていたウェイ１を入れ換える。
【００９１】
時刻t0+24dtからt0+26dtにおいては、制御Ａと制御Ｃがキャッシュメモリに格納されている。
【００９２】
図１２〜図１４を参照して本発明によるリアルタイム制御システムの第３の例を説明する。図１２は、本例によるＲＯＭ１１４に格納された命令及びデータの配置を示す。
【００９３】
アドレスＨ’００００からＨ’３ＦＦＦまでの１６キロバイトは、図３と同じである。割込み１の処理の内容は、図５と同様である。
【００９４】
アドレスＨ’４０００からＨ’５ＦＦＦまでの８キロバイトは、制御Ａ、制御Ｂ及び制御Ｃの命令及びデータのうち、低速にアクセスしても良いものが格納されている。具体的には、例外処理などの非定常的な処理で通常の処理より処理量が少なく処理に時間がかかっても良い命令や、大規模な表など容量の割にアクセス頻度の少ないデータなどが挙げられる。
【００９５】
アドレスＨ’６０００からＨ’６ＦＦＦまでの４キロバイトは、割込み２及び共通処理が格納されている。割込み２の処理の内容は、図６と同様である。共通処理とは、制御Ａ、制御Ｂ及び制御Ｃで共通に行う処理のことである。
【００９６】
アドレスＨ’７０００からＨ’７ＦＦＦまでの４キロバイトは、制御Ａの処理を行うための命令及びデータが格納されている。
【００９７】
アドレスＨ’８０００からＨ’８ＦＦＦまでの４キロバイトは、未使用エリアである。
【００９８】
アドレスＨ’９０００からＨ’９ＦＦＦまでの４キロバイトは、制御Ｂの処理を行うための命令及びデータが格納されている。
【００９９】
アドレスＨ’Ａ０００からＨ’ＡＦＦＦまでの４キロバイトは、未使用エリアである。
【０１００】
アドレスＨ’Ｂ０００からＨ’ＢＦＦＦまでの４キロバイトは、制御Ｃの処理を行うための命令及びデータが格納されている。
【０１０１】
アドレスＨ’Ｃ０００からＨ’ＦＦＦＦまでの１６キロバイトは、未使用エリアである。
【０１０２】
図１２に示されたプログラムが実行される様子を示すタイミングチャートは、図７と同様である。
【０１０３】
図１３は、図１２の初期化の処理の内容を示すフローチャートである。図１３と図４の違いは、ステップ１３１４のキャッシュメモリ転送処理を設けた点にある。初期化の処理にて、図１２の割込み２、共通処理のエリアをキャッシュメモリに転送する。それ以外のステップの処理は図４と同様である。
【０１０４】
図１４は、図１２に示されたプログラムを実行する時のキャッシュメモリの中身を示す図である。図中の時刻は、図７のタイミングチャートに示された時刻である。
【０１０５】
キャッシュメモリは８キロバイトのダイレクトマップ方式であると仮定した。従って、図１２のキャッシュメモリ使用エリアにあるプログラムのうち、割込み２、共通処理はキャッシュメモリの前半４キロバイトに、制御Ａ、制御Ｂ、制御Ｃはキャッシュメモリの後半４キロバイトにのみ格納可能である。また、制御Ａ、制御Ｂ、制御Ｃは一度にいずれか１つのみがキャッシュメモリに格納可能である。
【０１０６】
キャッシュメモリの前半４キロバイトには、初期化処理の時に割込み２、共通処理が格納され、以後そのままの状態で保持される。一方、キャッシュメモリの後半４キロバイトの状態の遷移は、図８と同様である。
【０１０７】
この様に、制御Ａ、制御Ｂ、制御Ｃの共通処理と個別処理をキャッシュメモリ上で場所が重ならない様にＲＯＭ上に配置することにより、キャッシュメモリを有効に使用することが可能となる。キャッシュの入換え処理が迅速化される。
【０１０８】
図１５〜図１８を参照して本発明によるリアルタイム制御システムの第４の例を説明する。図１５は、ＲＯＭ１１４に格納された命令及びデータの配置の例を示す図である。本例のＲＯＭ１１４に格納された命令及びデータの配置を、図３に示した第１の例と比較すると、本例では、図３の２つの割込み処理をタイマポーリングによる周期処理で置き換えた点が異なる。
【０１０９】
アドレスＨ’００００からＨ’１ＦＦＦまでの８キロバイトは、初期化の処理を行うための命令及びデータが格納されている。
【０１１０】
アドレスＨ’２０００からＨ’３ＦＦＦまでの８キロバイトは、タイマポーリングによる周期処理を行うための命令及びデータが格納されている。
【０１１１】
アドレスＨ’４０００からＨ’５ＦＦＦまでの８キロバイトは、制御Ａの処理を行うための命令及びデータが格納されている。
【０１１２】
アドレスＨ’６０００からＨ’７ＦＦＦまでの８キロバイトは、制御Ｂの処理を行うための命令及びデータが格納されている。
【０１１３】
アドレスＨ’８０００からＨ’９ＦＦＦまでの８キロバイトは、制御Ｃの処理を行うための命令及びデータが格納されている。
【０１１４】
アドレスＨ’Ａ０００からＨ’ＦＦＦＦまでの２４キロバイトは、未使用エリアである。
【０１１５】
図１６は、図１５の初期化の処理の内容を示すフローチャートである。ステップ１６０４は、タイマの周期の設定を行う処理である。以後、設定された周期毎にタイマの値が０にリセットされ、同時にオーバフローフラグがセットされる。
【０１１６】
ステップ１６０６は、動作モードの初期値を設定する処理である。動作モードの初期値は０である。
【０１１７】
ステップ１６０８は、制御モードの初期値を設定する処理である。制御モードの初期値は０である。
【０１１８】
図１７は、図１５の周期処理の処理の内容を示すフローチャートである。ステップ１７０４は、タイマポーリングの処理である。タイマのオーバフローフラグが１になるのを待ち、オーバフローフラグが１になるとオーバフローフラグを０にクリアしてからステップ１７０６に進む。
【０１１９】
ステップ１７０６は、動作モードや制御モードの更新を行うのに必要な入力の取り込みを行う処理である。
【０１２０】
ステップ１７０８は動作モードの値によって分岐する処理である。動作モードが１の時はステップ１７１０に進み、動作モードが０の時はステップ１７１８に進む。
【０１２１】
ステップ１７１０は制御モードの値によって分岐する処理である。制御モードが１の時にはステップ１７１６に進み、制御Ａの処理を行う。制御モードが２の時はステップ１７１４に進み、制御Ｂの処理を行う。制御モードが３の時はステップ１７１２に進み、制御Ｃの処理を行う。
【０１２２】
ステップ１７１８は、制御モード更新を行う処理である。制御モードの意味については、図５のステップ５０８と同様である。
【０１２３】
ステップ１７２０は、制御モードに変更が有ったかどうかによって分岐する処理である。制御モードに変更が有った場合には、ステップ１７２２に進み、変更が無かった場合にはステップ１７２４に進む。
【０１２４】
ステップ１７２２は、キャッシュメモリの入換えを行う処理である。制御モードが１の場合は制御Ａの命令及びデータをキャッシュメモリに転送する。制御モードが２の場合は制御Ｂの命令及びデータをキャッシュメモリに転送する。制御モードが３の場合は制御Ｃの命令及びデータをキャッシュメモリに転送する。キャッシュメモリ入換え処理はタイマの１周期の時間では終わらないため、キャッシュメモリ入換え処理の終了後にタイマのオーバフローフラグをクリアし、周期処理をキャンセルする。
【０１２５】
ステップ１７２４は、動作モードの更新を行う処理である。動作モードの意味については、図５のステップ５１４と同様である。
【０１２６】
図１８は、図１５に示されたプログラムが実行される様子を示すタイミングチャートである。
【０１２７】
時刻t0+dt及びt0+11dtに始まる周期処理で、動作モードが０且つ制御モードの変更が検出されるため、キャッシュメモリの入換え処理が行われる。
【０１２８】
時刻t0+4dtからt0+9dt及びt0+14dtからt0+19dtで始まる周期処理で動作モードが１であるため、それぞれの制御モードに対応した制御処理が行われる。
【０１２９】
図１９は、本発明のリアルタイム式の制御装置１０２の第２の例を示す。本例の制御装置１０２は、図１の第１の例と比較して、図１のキャッシュメモリ１０６の代わりに高速ＲＡＭ１９０４を設けた点が異なる。高速ＲＡＭ１９０４は、アドレス空間上に固有のアドレスを割り振られている。ブリッジ１９０６は、ＣＰＵ１０８からの要求が高速ＲＡＭ１９０４以外のアドレスを指していた場合にＣＰＵ１０８との間で交信を行う。
【０１３０】
図１９の制御装置の動作は図１の制御装置の動作とほぼ同じである。図１の例との相違は、ＲＯＭ１１４上のプログラムを高速ＲＡＭ１９０４に転送した状態で動作する様にアドレスの変更を行っておく必要がある、という点である。
【０１３１】
以上本発明の例を説明したが本発明は上述の例に限定されるものではなく、特許請求の範囲に記載された発明の範囲にて様々な変更が可能であることは当業者に理解されよう。
【図面の簡単な説明】
【０１３２】
【図１】本発明のリアルタイム制御装置の第１の例を示すブロック図である。
【図２】本発明のリアルタイム制御装置の入出力部の構成を示すブロック図である。
【図３】本発明のリアルタイム制御システム第１の例のＲＯＭに格納された命令及びデータの配置を示す図である。
【図４】本発明のリアルタイム制御システム第１の例における初期化の処理の内容を示すフローチャート図である。
【図５】本発明のリアルタイム制御システムの第１の例における割込み１の処理の内容を示すフローチャート図である。
【図６】本発明のリアルタイム制御システムの第１の例における割込み２の処理の内容を示すフローチャート図である。
【図７】本発明のリアルタイム制御システムの第１の例におけるプログラムが実行される様子を示すタイミングチャート図である。
【図８】本発明のリアルタイム制御システムの第１の例におけるキャッシュメモリの内容を示す図である。
【図９】本発明のリアルタイム制御システムの第２の例における割込み１の処理の内容を示すフローチャート図である。
【図１０】本発明のリアルタイム制御システムの第２の例の処理を示すタイミングチャート図である。
【図１１】本発明のリアルタイム制御システムの第２の例におけるキャッシュメモリの内容を示す図である。
【図１２】本発明のリアルタイム制御システムの第３の例におけるＲＯＭに格納された命令及びデータの配置を示す図である。
【図１３】本発明のリアルタイム制御システムの第３の例における初期化の処理の内容を示すフローチャート図である。
【図１４】本発明のリアルタイム制御システムの第３の例におけるプログラムを実行する時のキャッシュメモリの内容を示す図である。
【図１５】本発明のリアルタイム制御システムの第４の例におけるＲＯＭに格納された命令及びデータの配置を示す図である。
【図１６】本発明のリアルタイム制御システムの第４の例における初期化の処理の内容を示すフローチャート図である。
【図１７】本発明のリアルタイム制御システムの第４の例における周期処理の内容を示すフローチャート図である。
【図１８】本発明のリアルタイム制御システムの第４の例におけるプログラムが実行される様子を示すタイミングチャート図である。
【図１９】本発明のリアルタイム制御装置の第２の例を示すブロック図である。
【符号の説明】
【０１３３】
１０２…制御装置、１０６…キャッシュメモリ、１０８…ＣＰＵ、１１０…ＲＡＭ、１１４…ＲＯＭ、１１６…入出力部、５１２…キャッシュメモリ入換え処理、６１２…制御Ａ処理、６１０…制御Ｂ処理、６０８…制御Ｃ処理、９１２…キャッシュメモリ入換え処理、１７１６…制御Ａ処理、１７１４…制御Ｂ処理、１７１２…制御Ｃ処理、１７２２…キャッシュメモリ入換え処理、１９０２…制御装置、１９０４…高速ＲＡＭ、
【図１】
2005044231.tif 000003
【図２】
2005044231.tif 000004
【図３】
2005044231.tif 000005
【図４】
2005044231.tif 000006
【図５】
2005044231.tif 000007
【図６】
2005044231.tif 000008
【図７】
2005044231.tif 000009
【図８】
2005044231.tif 000010
【図９】
2005044231.tif 000011
【図１０】
2005044231.tif 000012
【図１１】
2005044231.tif 000013
【図１２】
2005044231.tif 000014
【図１３】
2005044231.tif 000015
【図１４】
2005044231.tif 000016
【図１５】
2005044231.tif 000017
【図１６】
2005044231.tif 000018
【図１７】
2005044231.tif 000019
【図１８】
2005044231.tif 000020
【図１９】
2005044231.tif 000021