(57)【特許請求の範囲】
【請求項１】
単一の演算処理ユニットと、第１メモリと、第２メモリとを含む保安処理装置であって、
前記演算処理ユニットは、
前記第１メモリを使用して、所定の第１周期ごとに第１スレッドを実行し、
前記第２メモリを使用して、前記第１周期より短い所定の第２周期ごとに、第２スレッドを実行するものであり、
前記第１及び第２スレッドのそれぞれは、複数のタスクを一連に実行するシングルスレッドであり、
前記第２スレッドを前記第１スレッドに優先して実行する機能を、ソフトウエアとして有する、
保安処理装置。
【請求項２】
請求項１に記載された保安処理装置であって、第３メモリを有し、前記第１及び第２スレッドのそれぞれは、前記第３メモリに記憶されたデータを読み込む入力動作と、前記データに基づき演算する演算動作と、前記演算動作によって得られたデータを前記第３メモリに書き込む出力動作とを、一連に実行する、
保安処理装置。
【請求項３】
請求項２に記載された保安処理装置であって、
前記第３メモリは、第１ＦＩＦＯメモリと、第２ＦＩＦＯメモリとを含み、
前記第１ＦＩＦＯメモリは、
前記第１スレッドの前記出力動作により前記データが書き込まれ、
前記第２スレッドの前記入力動作により前記データが読み出され、
前記第２ＦＩＦＯメモリは、
前記第２スレッドの前記出力動作により前記データが書き込まれ、
前記第１スレッドの前記入力動作により前記データが読み出される、
保安処理装置。
【請求項４】
請求項１乃至３の何れかに記載された保安装置であって、前記演算処理ユニットは、
前記第１スレッドの実行中、前記第２メモリへのアクセスが禁止され、
前記第２スレッドの実行中、前記第１メモリへのアクセスが禁止される、
保安処理装置。
【請求項５】
請求項２に記載された保安処理装置であって、前記第３メモリは、前記スレッド同士の通信に用いられる、保安処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一の演算処理ユニットを使用して２つのスレッドを実行する保安処理装置に関する。
【背景技術】
【０００２】
車両や信号などの安全管理を行なう鉄道保安装置などの保安処理装置は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）などの演算処理ユニットを実装した制御基板を備え、多様な機能を集約している。これに伴い、ＣＰＵは、処理時間が長く応答が遅くてよい処理と処理時間が短く早い応答を必要とする処理を複合して実行している。このような処理を実現する場合、本来、ソフトウェア設計の観点からは、効率良く処理を実行できるようにマルチタスク方式を採用する。これは、以下の理由による。
【０００３】
第１に、早い応答が必要な処理を、イベントを契機として他の処理より優先的に動作させることができるから、装置としての応答性を向上させることができる。第２に、特定の処理が待ち状態にあるなどのＣＰＵの空き時間に他の処理を行なうことで、ＣＰＵの利用効率を向上することができる。
【０００４】
しかし、マルチタスク方式は、以下の点からソフトウェアにバグが生まれやすく、また、再現確認によるバグ解析も非常に困難であるために、一般的な装置と比べて高度の安全性と信頼性が要求される保安処理装置には不向きである。
【０００５】
第１に、各処理は非同期で動作するので実行順序が一定ではない。第２に、１つの処理の実行途中に他の処理が実行されることがあるから、処理途中でデータの内容が変化することがあり、これに伴い最終的に出力されるデータも変化する。第３に、特定の処理の実行の契機となるイベントが発生することにより他の処理の応答時間が変化する。第４に、このような処理同士の干渉を避ける仕組みが必要になることがあるため、ソフトウェアの構造が複雑になる。
【０００６】
そこで、保安処理装置では、装置としての応答性やＣＰＵの利用効率を犠牲にして、シングルスレッド方式を採用している。シングルスレッド方式は、所定の応答時間内に一定の順序で一連の処理を行なう方式である。このシングルスレッド方式によれば、ソフトウェアの構造を単純化することができるから、バグが生まれにくく、また、再現確認によるバグ解析も非常に容易である。
【０００７】
例えば、特許文献１では、シングルスレッド方式によってＡＴＣ（Ａｕｔｏｍａｔｉｃ  Ｔｒａｉｎ  Ｃｏｎｔｒｏｌ）処理とＡＴＯ（Ａｕｔｏｍａｔｉｃ  Ｔｒａｉｎ  Ｏｐｅｒａｔｉｏｎ）処理とを行なう車上装置が開示されている。しかしながら、この車上装置では、２つの処理が同一スレッド内で実行されるから、これらの処理時間が互いに大きく異なる場合、一方の処理が、他方の処理によって長く待たされてしまう。したがって、結果としてスレッドの周期を長く設定せざるをえないので、早い応答を必要とする処理の実行周期が間延びして、応答性がシステムの要求を満たさないという問題がある。
【０００８】
これを解決するために、従来、共有メモリを有する２つのＣＰＵを使用して、上述したような処理時間並びに要求される応答時間の異なる２つの処理を個別にシングルスレッド方式で実行していた。これによると、２つの処理は、共有メモリによって互いにデータのやりとりができる一方で、独立して動作することができる。よって、このシステムでは、一方の処理が、他方の処理によって待たされることはなく、完全な平行処理が実現でき、システムの要求する応答性を満足することができた。
【０００９】
しかしながら、このようなシステムでは、２系統のＣＰＵ回路を要するためにコストが高いという問題があった。
【特許文献１】特開２００３−７９０１１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の課題は、従来の応答性を維持し、低コストでソフトウェア構造が単純な保安処理装置を提供することである。
【課題を解決するための手段】
【００１１】
上述した課題を解決するため、本発明に係る保安処理装置では、単一の演算処理ユニットと、第１メモリと、第２メモリと、第３メモリとを含む。前記演算処理ユニットは、前記第１メモリを使用して、所定の第１周期ごとに第１スレッドを実行し、前記第２メモリを使用して、前記第１周期より短い所定の第２周期ごとに、前記第１スレッドに優先して、第２スレッドを実行する。
【００１２】
前記第１及び第２スレッドは、前記第３メモリに記憶されたデータを読み込む入力動作と、前記入力動作を再度行なうことなく前記データに基づき演算する演算動作と、前記演算動作によって得られたデータを前記第３メモリに書き込む出力動作とをそれぞれ含む。
【００１３】
このような構成によれば、単一の演算処理ユニットを使用するから、保安処理装置のコストを低減することができる。また、周期の異なる前記第１及び第２スレッドを使用し、周期の短い第２スレッドを優先して実行するから、処理時間が長く応答が遅くてよい処理を前記第１スレッド内で実行し、処理時間が短く早い応答を必要とする処理を前記第２スレッド内で実行することで、従来の応答性を維持することができる。
【００１４】
また、前記第１及び第２スレッドは、前記入力動作及び前記出力動作で使用される前記第３メモリを共有することによってデータのやりとりが可能である一方で、前記第１及び第２メモリをそれぞれ使用して個別に実行されるから、互いに独立している。さらに、各スレッドでは各動作の実行順序が一定であり、前記入力動作によって一度データを読み込むと、前記入力動作を再度行うことがないから、前記演算動作の途中でデータが変化することがなく、スレッド同士の干渉を防ぐための複雑な排他制御などを必要としない。よって、ソフトウェア構造を単純にすることができる。
【００１５】
さらに、以下のような構造とすることによって、前記第１及び第２スレッドの独立性を高めることができる。すなわち、前記第３メモリは、第１ＦＩＦＯメモリと、第２ＦＩＦＯメモリとを含む。前記第１ＦＩＦＯメモリは、前記第１スレッドの前記出力動作により前記データが書き込まれ、前記第２スレッドの前記入力動作により前記データが読み出される。一方、前記第２ＦＩＦＯメモリは、前記第２スレッドの前記出力動作により前記データが書き込まれ、前記第１スレッドの前記入力動作により前記データが読み出される。
【００１６】
前記演算処理ユニットは、前記第１スレッドの実行中、前記第２メモリへのアクセスと、前記第１ＦＩＦＯメモリからの読み出しと、前記第２ＦＩＦＯメモリへの書き込みとが禁止されており、前記第２スレッドの実行中、前記第１メモリへのアクセスと、前記第２ＦＩＦＯメモリからの読み出しと、前記第１ＦＩＦＯメモリへの書き込みとが禁止されている。これにより、前記第１及び第２スレッドの独立性が高まるから、ソフトウェア構造を、より単純化できる。
【発明の効果】
【００１７】
以上述べたように、本発明によれば、従来の応答性を維持し、低コストでソフトウェア構造が単純な保安処理装置を提供することができる。
【発明を実施するための最良の形態】
【００１８】
図１に、本発明に係る保安処理装置に実装される制御基板の電気的構成を示す。保安処理装置は、単一のＣＰＵ１と、第１メモリ２１と、第２メモリ２２と、第３メモリ３とを含む。
【００１９】
ＣＰＵ１は、シングルスレッド方式で第１スレッド１１と第２スレッド１２とを並行して実行し、データの演算処理など、保安処理装置で行なわれる様々な処理を行なう。例えば車両の位置制御装置の場合、ＣＰＵ１は、車両の現在位置や速度などのデータを元に車両の目標速度などを計算する。本実施形態では、演算処理ユニットとしてＣＰＵ１を挙げるが、これに限られるものではなく、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）などを使用してもよい。
【００２０】
第１メモリ２１と第２メモリ２２は、ＣＰＵ１が第１スレッド１１と第２スレッド１２をそれぞれ実行するためのメモリであって、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などで構成される。また、第３メモリ３は、第１ＦＩＦＯメモリ３１と、第２ＦＩＦＯメモリ３２とを含む。ＦＩＦＯ（Ｆｉｒｓｔ−ＩＮ  Ｆｉｒｓｔ−Ｏｕｔ）メモリとは、通常のメモリのように指定アドレスのデータが読み出されるものではなく、最初に格納されたデータから順次読み出されるキューとして機能するものである。第３メモリ３は、第１スレッド１１と第２スレッド１２の実行時にデータが読み込まれ、又は書き込まれる。
【００２１】
さらに、保安処理装置は、ＭＭＵ４と、フラッシュメモリ５と、Ｉ／Ｏインターフェース６とを含む。ＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）とは、メモリ管理ユニットであって、ＣＰＵ１の要求する第１メモリ２１と第２メモリ２２へのアクセス処理を行なう。フラッシュメモリ５は、ＣＰＵ１を動作させるためのプログラムが記憶されており、電源投入時にＣＰＵ１から読み出される。
【００２２】
また、ＣＰＵ１は、Ｉ／Ｏインターフェース６を介して、制御基板の外部装置郡８とも接続されている。外部装置郡８には、第１〜第ｎデバイス８１〜８３が含まれており、それぞれ接続ケーブル及びコネクタなどを介して制御基板上のＩ／Ｏインターフェース６と接続されている。車上装置の場合、第１〜第ｎデバイス８１〜８３としては、例えば、速度センサ、地上設備からの指令受信器、非常停止スイッチ、制御ログの記録装置などがある。ＣＰＵ１は、適宜、第１〜第ｎデバイス８１〜８３にアクセスして所定のデータのやりとりを行なうが、第１スレッド１１と第２スレッド１２は、同一のデバイス８１〜８３とアクセスすることはない。なお、ＣＰＵ１と第１〜第３メモリ２１，２２，３、ＭＭＵ４、フラッシュメモリ５、Ｉ／Ｏインターフェース６は、ＣＰＵバス７を介して接続されている。
【００２３】
図２は、第１及び第２スレッド１１，１２の動作を示す。ＣＰＵ１は、第１メモリ２１を使用して、所定の第１周期Ｔ１ごとに第１スレッドを実行し、一方、第２メモリ２２を使用して、第１周期Ｔ１より短い所定の第２周期Ｔ２ごとに、第１スレッド１１に優先して、第２スレッド１２を実行する。すなわち、第１メモリ２１は第１スレッド１１専用メモリとして使用され、第２メモリ２２は第２スレッド１２専用メモリとして使用される。
【００２４】
第１及び第２スレッド１１，１２は、第３メモリ３に記憶されたデータを読み込む入力動作１１１，１２１と、入力動作１１１，１２１を再度行なうことなく前記データに基づき演算する演算動作１１２，１２２と、演算動作１１２，１２２によって得られたデータを第３メモリ３に書き込む出力動作１１３，１２３とをそれぞれ含む。具体的には、第１ＦＩＦＯメモリ３１は、第１スレッド１１の出力動作１１３によりデータが書き込まれ、第２スレッド３２の入力動作１２１によりデータが読み出される。一方、第２ＦＩＦＯメモリ３２は、第２スレッド１２の出力動作１１３によりデータが書き込まれ、第１スレッド１１の入力動作１２１によりデータが読み出される。すなわち、第３メモリ３は、第１スレッド１１と第２スレッド１２が互いにデータを受け渡しするための片方向アクセスの共有メモリとして使用される。
【００２５】
また、ＣＰＵ１は、第１スレッド１１の実行中、第２メモリ２２へのアクセスと、第１ＦＩＦＯメモリ３１からの読み出しと、第２ＦＩＦＯメモリ３２への書き込みとが禁止されており、第２スレッド１２の実行中、第１メモリ２２へのアクセスと、第２ＦＩＦＯメモリ３２からの読み出しと、第１ＦＩＦＯメモリ３１への書き込みとが禁止されている。
このようなアクセス制限は、ＭＭＵ４のメモリ保護機能により実現される。
【００２６】
これにより、第１及び第２スレッド１１，１２の独立性が高まるから、ソフトウェア構造を、より単純化できる。また、上述したアクセス制限にも関わらず、ＣＰＵ１が、ハードウェア故障などにより、アクセスが禁止されたメモリにアクセスした場合、ＭＭＵ４がＣＰＵ１を停止させることによってフェイルセーフ性を高めることができる。
【００２７】
次に、図３に、第１及び第２スレッド１１，１２の処理の概念図を示し、本発明の作用効果について説明する。前提条件として、ＣＰＵ１は、第１スレッド１１内で、処理時間が長く応答が遅くてよい処理を実行し、一方、第２スレッド１２内で、処理時間が短く早い応答を必要とする処理を実行し、各処理は、それぞれの周期Ｔ１、Ｔ２内で終了するものとする。なお、第１及び第２スレッド１１，１２は、同時に起動されるが、第２スレッド１２が第１スレッド１１より優先するので、最初は第２スレッド１２から実行される。
【００２８】
ｔ１時において、第２スレッド１２が実行されると、まず、入力動作１２１が行なわれて、第１ＦＩＦＯメモリ３１からデータａ［ｎ−１］が読み出される。次に、演算動作１２２が行なわれて、読み出したデータａ［ｎ−１］に基づいて所定の演算が行なわれる。演算には、外部装置郡８から読み出したデータも用いられる。最後に、出力動作１２３が行なわれて、演算動作１２２により得られたデータｂ１［ｎ］が第２ＦＩＦＯメモリ３２に書き込まれる。第２ＦＩＦＯメモリ３２には、既にデータｂ２［ｎ−１］，ｂ３［ｎ−１］，ｂ４［ｎ−１］が書き込まれており、データｂ１［ｎ］は、データｂ４［ｎ−１］の後段に書き込まれる。
【００２９】
第２スレッド１２の処理が終了すると、第１スレッド１１が実行される。まず、入力動作１１１が行なわれて、第２ＦＩＦＯメモリ３２からデータｂ２［ｎ−１］，ｂ３［ｎ−１］，ｂ４［ｎ−１］，ｂ１［ｎ］が順次に読み出される。次に、演算動作１１２が行なわれて、読み出したデータｂ２［ｎ−１］，ｂ３［ｎ−１］，ｂ４［ｎ−１］，ｂ１［ｎ］に基づいて所定の演算が行なわれる。ここでも、やはり、演算には、外部装置郡８から読み出したデータも用いられる。
【００３０】
ｔ２時において、第２スレッド１２が実行されると、第２スレッド１２を優先するから、第１スレッド１１の演算動作１１２は中断される。第２スレッド１２の実行によって、同様に、第１ＦＩＦＯメモリ３１からデータａ［ｎ−１］が読み出されて、演算により得られたデータｂ２［ｎ］が第２ＦＩＦＯメモリ３２に書き込まれる。ここで、第１ＦＩＦＯメモリ３１からのデータａ［ｎ−１］の入力動作については、ｔ１時に既に実行しているために実際は省略することができる。第２スレッド１２の処理が終了すると、第１スレッド１１の演算動作１１２が再び実行される。このとき、第２ＦＩＦＯメモリ３２に記憶されているデータの内容は変化しているが、演算動作１１２は、最初に読み出したデータｂ２［ｎ−１］，ｂ３［ｎ−１］，ｂ４［ｎ−１］，ｂ１［ｎ］に基づいて演算が継続される。
【００３１】
ｔ３時においても同様の動作が行なわれる。このとき、第２スレッド１２の実行によりデータｂ３［ｎ］が第２ＦＩＦＯメモリ３２に書き込まれる。
【００３２】
ｔ４時において、第２スレッド１２の実行によりデータｂ４［ｎ］が第２ＦＩＦＯメモリ３２に書き込まれる。そして、第１スレッド１１が実行され、演算動作１１２が終了して、演算動作１１２により得られたデータａ［ｎ］が第１ＦＩＦＯメモリ３１に書き込まれる。これにより、第１スレッド１１の処理は終了する。
【００３３】
ｔ５時において、第２スレッド１２が実行されると、データａ［ｎ］が読み出されて、演算で得られたｂ１［ｎ＋１］が第２ＦＩＦＯメモリ３２に書き込まれる。そして、第１スレッド１１が実行されると、第２ＦＩＦＯメモリ３２からデータｂ２［ｎ］，ｂ３［ｎ］，ｂ４［ｎ］，ｂ１［ｎ＋１］が順次に読み出され、これらに基づいて演算が行なわれる。以降、同様の動作が繰り返される。なお、図３では、第１スレッド１１の周期Ｔ１の中で、第２スレッド１２が４回起動されるようにしたが、これに限られず、第１及び第２スレッド１１，１２でそれぞれ実行する機能の処理時間の差に基づいて、適宜決定すればよい。
【００３４】
このような構成によれば、単一の演算処理ユニットを使用するから、保安処理装置のコストを低減することができる。また、周期の異なる第１及び第２スレッド１１，１２を使用し、周期の短い第２スレッド１２を優先して実行するから、処理時間が長く応答が遅くてよい処理を第１スレッド１１内で実行し、処理時間が短く早い応答を必要とする処理を第２スレッド１２内で実行することで、従来の応答性を維持することができる。
【００３５】
また、第１及び第２スレッド１１，１２は、入力動作１１１，１２１及び出力動作１１３，１２３で使用される第３メモリ３を共有することによってデータのやりとりが可能である一方で、第１及び第２メモリ２１，２２をそれぞれ使用して個別に実行されるから、互いに独立している。さらに、各スレッドでは各動作の実行順序が一定であり、入力動作１１１，１２１によって一度データを読み込むと、入力動作１１１，１２１を再度行うことがないから、演算動作１１２，１２２の途中でデータが変化することがなく、スレッド同士の干渉を防ぐための複雑な排他制御などを必要としない。よって、ソフトウェア構造を単純にすることができる。
【００３６】
さらに、ＦＩＦＯメモリ３１，３２を使用することによって、データの書き込み対象アドレス並びに読み出し対象アドレスを管理する仕組みが不要となるから、ソフトウェア構造を、さらに単純にすることができる。とりわけ、上述した実施形態では、第１スレッド１１は、第２スレッド１２が４周期にわたって出力したデータをまとめて読み込むにあたり、データの順序を管理する手間を省くことができる点で、その効果は大きい。
【００３７】
なお、上述した実施形態では、第１及び第２スレッド１１，１２では、最初に入力動作１１１，１２１を行い、最後に出力動作１１３，１２３を行なうようにしているが、これに限られるものではなく、入力動作１１１，１２１、演算動作１１２，１２２、出力動作１１３，１２３の順序で実行する限り、各動作を実行するタイミングに制限はなく、また途中に他の動作を行なってもよい。
【００３８】
また、フェイルセーフの観点から、以下のような監視機能を実装して、ＣＰＵ１などの故障による異常を検知した場合にシステムを停止するようにしてもよい。
（１）プログラム処理時間の監視
（２）ウォッチドッグタイマ
以上、好ましい実施例を参照して本発明の内容を具体的に説明したが、本発明の基本的技術思想及び教示に基づいて、当業者であれば、種々の変形態様を採り得ることは自明である。
【図面の簡単な説明】
【００３９】
【図１】本本発明に係る保安処理装置に実装される制御基板の電気的構成を示す。
【図２】第１及び第２スレッドの動作を示す。
【図３】第１及び第２スレッドの処理の概念図である。
【符号の説明】
【００４０】
１                    ＣＰＵ
１１                  第１スレッド
１２                  第２スレッド
２１                  第１メモリ
２２                  第２メモリ
３                    第３メモリ
１１１，１２１        入力動作
１１２，１２２        演算動作
１１３，１２３        出力動作
【図１】
0005128972.tif 000002
【図２】
0005128972.tif 000003
【図３】
0005128972.tif 000004