説明

保安処理装置

【課題】従来の応答性を維持し、低コストでソフトウェア構造が単純な保安処理装置を提供する。
【解決手段】CPU1は、第1メモリ21を使用して、所定の第1周期T1ごとに第1スレッドを実行し、一方、第2メモリ22を使用して、第1周期より短い所定の第2周期T2ごとに、第1スレッド11に優先して、第2スレッド12を実行する。第1及び第2スレッド11,12は、第3メモリ3に記憶されたデータを読み込む入力動作111,121と、入力動作を再度行なうことなく、そのデータに基づき演算する演算動作112,122と、演算動作によって得られたデータを第3メモリ3に書き込む出力動作113,123とを含む。各スレッド11,12では、他方のスレッドが使用するメモリ21,22へのアクセス制限がかけられ、また、入力動作を再度行わないから、演算動作の途中でデータが変化することがなく、スレッド同士が干渉することがない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、単一の演算処理ユニットを使用して2つのスレッドを実行する保安処理装置に関する。
【背景技術】
【0002】
車両や信号などの安全管理を行なう鉄道保安装置などの保安処理装置は、CPU(Central Processing Unit)などの演算処理ユニットを実装した制御基板を備え、多様な機能を集約している。これに伴い、CPUは、処理時間が長く応答が遅くてよい処理と処理時間が短く早い応答を必要とする処理を複合して実行している。このような処理を実現する場合、本来、ソフトウェア設計の観点からは、効率良く処理を実行できるようにマルチスレッド方式を採用する。これは、以下の理由による。
【0003】
第1に、早い応答が必要な処理を、イベントを契機として他の処理より優先的に動作させることができるから、装置としての応答性を向上させることができる。第2に、特定の処理が待ち状態にあるなどのCPUの空き時間に他の処理を行なうことで、CPUの利用効率を向上することができる。
【0004】
しかし、マルチスレッド方式は、以下の点からソフトウェアにバグが生まれやすく、また、再現確認によるバグ解析も非常に困難であるために、一般的な装置と比べて高度の安全性と信頼性が要求される保安処理装置には不向きである。
【0005】
第1に、各処理は非同期で動作するので実行順序が一定ではない。第2に、1つの処理の実行途中に他の処理が実行されることがあるから、処理途中でデータの内容が変化することがあり、これに伴い最終的に出力されるデータも変化する。第3に、特定の処理の実行の契機となるイベントが発生することにより他の処理の応答時間が変化する。第4に、このような処理同士の干渉を避ける仕組みが必要になることがあるため、ソフトウェアの構造が複雑になる。
【0006】
そこで、保安処理装置では、装置としての応答性やCPUの利用効率を犠牲にして、シングルスレッド方式を採用している。シングルスレッド方式は、所定の応答時間内に一定の順序で一連の処理を行なう方式である。このシングルスレッド方式によれば、ソフトウェアの構造を単純化することができるから、バグが生まれにくく、また、再現確認によるバグ解析も非常に容易である。
【0007】
例えば、特許文献1では、シングルスレッド方式によってATC(Automatic Train Control)処理とATO(Automatic Train Operation)処理とを行なう車上装置が開示されている。しかしながら、この車上装置では、2つの処理が同一スレッド内で実行されるから、これらの処理時間が互いに大きく異なる場合、一方の処理が、他方の処理によって長く待たされてしまう。したがって、結果としてスレッドの周期を長く設定せざるをえないので、早い応答を必要とする処理の実行周期が間延びして、応答性がシステムの要求を満たさないという問題がある。
【0008】
これを解決するために、従来、共有メモリを有する2つのCPUを使用して、上述したような処理時間並びに要求される応答時間の異なる2つの処理を個別にシングルスレッド方式で実行していた。これによると、2つの処理は、共有メモリによって互いにデータのやりとりができる一方で、独立して動作することができる。よって、このシステムでは、一方の処理が、他方の処理によって待たされることはなく、完全な平行処理が実現でき、システムの要求する応答性を満足することができた。
【0009】
しかしながら、このようなシステムでは、2系統のCPU回路を要するためにコストが高いという問題があった。
【特許文献1】特開2003−79011号公報
【発明の開示】
【発明が解決しようとする課題】
【0010】
本発明の課題は、従来の応答性を維持し、低コストでソフトウェア構造が単純な保安処理装置を提供することである。
【課題を解決するための手段】
【0011】
上述した課題を解決するため、本発明に係る保安処理装置では、単一の演算処理ユニットと、第1メモリと、第2メモリと、第3メモリとを含む。前記演算処理ユニットは、前記第1メモリを使用して、所定の第1周期ごとに第1スレッドを実行し、前記第2メモリを使用して、前記第1周期より短い所定の第2周期ごとに、前記第1スレッドに優先して、第2スレッドを実行する。
【0012】
前記第1及び第2スレッドは、前記第3メモリに記憶されたデータを読み込む入力動作と、前記入力動作を再度行なうことなく前記データに基づき演算する演算動作と、前記演算動作によって得られたデータを前記第3メモリに書き込む出力動作とをそれぞれ含む。
【0013】
このような構成によれば、単一の演算処理ユニットを使用するから、保安処理装置のコストを低減することができる。また、周期の異なる前記第1及び第2スレッドを使用し、周期の短い第2スレッドを優先して実行するから、処理時間が長く応答が遅くてよい処理を前記第1スレッド内で実行し、処理時間が短く早い応答を必要とする処理を前記第2スレッド内で実行することで、従来の応答性を維持することができる。
【0014】
また、前記第1及び第2スレッドは、前記入力動作及び前記出力動作で使用される前記第3メモリを共有することによってデータのやりとりが可能である一方で、前記第1及び第2メモリをそれぞれ使用して個別に実行されるから、互いに独立している。さらに、各スレッドでは各動作の実行順序が一定であり、前記入力動作によって一度データを読み込むと、前記入力動作を再度行うことがないから、前記演算動作の途中でデータが変化することがなく、スレッド同士の干渉を防ぐための複雑な排他制御などを必要としない。よって、ソフトウェア構造を単純にすることができる。
【0015】
さらに、以下のような構造とすることによって、前記第1及び第2スレッドの独立性を高めることができる。すなわち、前記第3メモリは、第1FIFOメモリと、第2FIFOメモリとを含む。前記第1FIFOメモリは、前記第1スレッドの前記出力動作により前記データが書き込まれ、前記第2スレッドの前記入力動作により前記データが読み出される。一方、前記第2FIFOメモリは、前記第2スレッドの前記出力動作により前記データが書き込まれ、前記第1スレッドの前記入力動作により前記データが読み出される。
【0016】
前記演算処理ユニットは、前記第1スレッドの実行中、前記第2メモリへのアクセスと、前記第1FIFOメモリからの読み出しと、前記第2FIFOメモリへの書き込みとが禁止されており、前記第2スレッドの実行中、前記第1メモリへのアクセスと、前記第2FIFOメモリからの読み出しと、前記第1FIFOメモリへの書き込みとが禁止されている。これにより、前記第1及び第2スレッドの独立性が高まるから、ソフトウェア構造を、より単純化できる。
【発明の効果】
【0017】
以上述べたように、本発明によれば、従来の応答性を維持し、低コストでソフトウェア構造が単純な保安処理装置を提供することができる。
【図面の簡単な説明】
【0018】
【図1】本本発明に係る保安処理装置に実装される制御基板の電気的構成を示す。
【図2】第1及び第2スレッドの動作を示す。
【図3】第1及び第2スレッドの処理の概念図である。
【発明を実施するための形態】
【0019】
図1に、本発明に係る保安処理装置に実装される制御基板の電気的構成を示す。保安処理装置は、単一のCPU1と、第1メモリ21と、第2メモリ22と、第3メモリ3とを含む。
【0020】
CPU1は、シングルスレッド方式で第1スレッド11と第2スレッド12とを並行して実行し、データの演算処理など、保安処理装置で行なわれる様々な処理を行なう。例えば車両の位置制御装置の場合、CPU1は、車両の現在位置や速度などのデータを元に車両の目標速度などを計算する。本実施形態では、演算処理ユニットとしてCPU1を挙げるが、これに限られるものではなく、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)などを使用してもよい。
【0021】
第1メモリ21と第2メモリ22は、CPU1が第1スレッド11と第2スレッド12をそれぞれ実行するためのメモリであって、SDRAM(Synchronous Dynamic Random Access Memory)などで構成される。また、第3メモリ3は、第1FIFOメモリ31と、第2FIFOメモリ32とを含む。FIFO(First−IN First−Out)メモリとは、通常のメモリのように指定アドレスのデータが読み出されるものではなく、最初に格納されたデータから順次読み出されるキューとして機能するものである。第3メモリ3は、第1スレッド11と第2スレッド12の実行時にデータが読み込まれ、又は書き込まれる。
【0022】
さらに、保安処理装置は、MMU4と、フラッシュメモリ5と、I/Oインターフェース6とを含む。MMU(Memory Management Unit)とは、メモリ管理ユニットであって、CPU1の要求する第1メモリ21と第2メモリ22へのアクセス処理を行なう。フラッシュメモリ5は、CPU1を動作させるためのプログラムが記憶されており、電源投入時にCPU1から読み出される。
【0023】
また、CPU1は、I/Oインターフェース6を介して、制御基板の外部装置郡8とも接続されている。外部装置郡8には、第1〜第nデバイス81〜83が含まれており、それぞれ接続ケーブル及びコネクタなどを介して制御基板上のI/Oインターフェース6と接続されている。車上装置の場合、第1〜第nデバイス81〜83としては、例えば、速度センサ、地上設備からの指令受信器、非常停止スイッチ、制御ログの記録装置などがある。CPU1は、適宜、第1〜第nデバイス81〜83にアクセスして所定のデータのやりとりを行なうが、第1スレッド11と第2スレッド12は、同一のデバイス81〜83とアクセスすることはない。なお、CPU1と第1〜第3メモリ21,22,3、MMU4、フラッシュメモリ5、I/Oインターフェース6は、CPUバス7を介して接続されている。
【0024】
図2は、第1及び第2スレッド11,12の動作を示す。CPU1は、第1メモリ21を使用して、所定の第1周期T1ごとに第1スレッドを実行し、一方、第2メモリ22を使用して、第1周期T1より短い所定の第2周期T2ごとに、第1スレッド11に優先して、第2スレッド12を実行する。すなわち、第1メモリ21は第1スレッド11専用メモリとして使用され、第2メモリ22は第2スレッド12専用メモリとして使用される。
【0025】
第1及び第2スレッド11,12は、第3メモリ3に記憶されたデータを読み込む入力動作111,121と、入力動作111,121を再度行なうことなく前記データに基づき演算する演算動作112,122と、演算動作112,122によって得られたデータを第3メモリ3に書き込む出力動作113,123とをそれぞれ含む。具体的には、第1FIFOメモリ31は、第1スレッド11の出力動作113によりデータが書き込まれ、第2スレッド32の入力動作121によりデータが読み出される。一方、第2FIFOメモリ32は、第2スレッド12の出力動作113によりデータが書き込まれ、第1スレッド11の入力動作121によりデータが読み出される。すなわち、第3メモリ3は、第1スレッド11と第2スレッド12が互いにデータを受け渡しするための片方向アクセスの共有メモリとして使用される。
【0026】
また、CPU1は、第1スレッド11の実行中、第2メモリ22へのアクセスと、第1FIFOメモリ31からの読み出しと、第2FIFOメモリ32への書き込みとが禁止されており、第2スレッド12の実行中、第1メモリ22へのアクセスと、第2FIFOメモリ32からの読み出しと、第1FIFOメモリ31への書き込みとが禁止されている。
このようなアクセス制限は、MMU4のメモリ保護機能により実現される。
【0027】
これにより、第1及び第2スレッド11,12の独立性が高まるから、ソフトウェア構造を、より単純化できる。また、上述したアクセス制限にも関わらず、CPU1が、ハードウェア故障などにより、アクセスが禁止されたメモリにアクセスした場合、MMU4がCPU1を停止させることによってフェイルセーフ性を高めることができる。
【0028】
次に、図3に、第1及び第2スレッド11,12の処理の概念図を示し、本発明の作用効果について説明する。前提条件として、CPU1は、第1スレッド11内で、処理時間が長く応答が遅くてよい処理を実行し、一方、第2スレッド12内で、処理時間が短く早い応答を必要とする処理を実行し、各処理は、それぞれの周期T1、T2内で終了するものとする。なお、第1及び第2スレッド11,12は、同時に起動されるが、第2スレッド12が第1スレッド11より優先するので、最初は第2スレッド12から実行される。
【0029】
t1時において、第2スレッド12が実行されると、まず、入力動作121が行なわれて、第1FIFOメモリ31からデータa[n−1]が読み出される。次に、演算動作122が行なわれて、読み出したデータa[n−1]に基づいて所定の演算が行なわれる。演算には、外部装置郡8から読み出したデータも用いられる。最後に、出力動作123が行なわれて、演算動作122により得られたデータb1[n]が第2FIFOメモリ32に書き込まれる。第2FIFOメモリ32には、既にデータb2[n−1],b3[n−1],b4[n−1]が書き込まれており、データb1[n]は、データb4[n−1]の後段に書き込まれる。
【0030】
第2スレッド12の処理が終了すると、第1スレッド11が実行される。まず、入力動作111が行なわれて、第2FIFOメモリ32からデータb2[n−1],b3[n−1],b4[n−1],b1[n]が順次に読み出される。次に、演算動作112が行なわれて、読み出したデータb2[n−1],b3[n−1],b4[n−1],b1[n]に基づいて所定の演算が行なわれる。ここでも、やはり、演算には、外部装置郡8から読み出したデータも用いられる。
【0031】
t2時において、第2スレッド12が実行されると、第2スレッド12を優先するから、第1スレッド11の演算動作112は中断される。第2スレッド12の実行によって、同様に、第1FIFOメモリ31からデータa[n−1]が読み出されて、演算により得られたデータb2[n]が第2FIFOメモリ32に書き込まれる。ここで、第1FIFOメモリ31からのデータa[n−1]の入力動作については、t1時に既に実行しているために実際は省略することができる。第2スレッド12の処理が終了すると、第1スレッド11の演算動作112が再び実行される。このとき、第2FIFOメモリ32に記憶されているデータの内容は変化しているが、演算動作112は、最初に読み出したデータb2[n−1],b3[n−1],b4[n−1],b1[n]に基づいて演算が継続される。
【0032】
t3時においても同様の動作が行なわれる。このとき、第2スレッド12の実行によりデータb3[n]が第2FIFOメモリ32に書き込まれる。
【0033】
t4時において、第2スレッド12の実行によりデータb4[n]が第2FIFOメモリ32に書き込まれる。そして、第1スレッド11が実行され、演算動作112が終了して、演算動作112により得られたデータa[n]が第1FIFOメモリ31に書き込まれる。これにより、第1スレッド11の処理は終了する。
【0034】
t5時において、第2スレッド12が実行されると、データa[n]が読み出されて、演算で得られたb1[n+1]が第2FIFOメモリ32に書き込まれる。そして、第1スレッド11が実行されると、第2FIFOメモリ32からデータb2[n],b3[n],b4[n],b1[n+1]が順次に読み出され、これらに基づいて演算が行なわれる。以降、同様の動作が繰り返される。なお、図3では、第1スレッド11の周期T1の中で、第2スレッド12が4回起動されるようにしたが、これに限られず、第1及び第2スレッド11,12でそれぞれ実行する機能の処理時間の差に基づいて、適宜決定すればよい。
【0035】
このような構成によれば、単一の演算処理ユニットを使用するから、保安処理装置のコストを低減することができる。また、周期の異なる第1及び第2スレッド11,12を使用し、周期の短い第2スレッド12を優先して実行するから、処理時間が長く応答が遅くてよい処理を第1スレッド11内で実行し、処理時間が短く早い応答を必要とする処理を第2スレッド12内で実行することで、従来の応答性を維持することができる。
【0036】
また、第1及び第2スレッド11,12は、入力動作111,121及び出力動作113,123で使用される第3メモリ3を共有することによってデータのやりとりが可能である一方で、第1及び第2メモリ21,22をそれぞれ使用して個別に実行されるから、互いに独立している。さらに、各スレッドでは各動作の実行順序が一定であり、入力動作111,121によって一度データを読み込むと、入力動作111,121を再度行うことがないから、演算動作112,122の途中でデータが変化することがなく、スレッド同士の干渉を防ぐための複雑な排他制御などを必要としない。よって、ソフトウェア構造を単純にすることができる。
【0037】
さらに、FIFOメモリ31,32を使用することによって、データの書き込み対象アドレス並びに読み出し対象アドレスを管理する仕組みが不要となるから、ソフトウェア構造を、さらに単純にすることができる。とりわけ、上述した実施形態では、第1スレッド11は、第2スレッド12が4周期にわたって出力したデータをまとめて読み込むにあたり、データの順序を管理する手間を省くことができる点で、その効果は大きい。
【0038】
なお、上述した実施形態では、第1及び第2スレッド11,12では、最初に入力動作111,121を行い、最後に出力動作113,123を行なうようにしているが、これに限られるものではなく、入力動作111,121、演算動作112,122、出力動作113,123の順序で実行する限り、各動作を実行するタイミングに制限はなく、また途中に他の動作を行なってもよい。
【0039】
また、フェイルセーフの観点から、以下のような監視機能を実装して、CPU1などの故障による異常を検知した場合にシステムを停止するようにしてもよい。
(1)プログラム処理時間の監視
(2)ウォッチドッグタイマ
以上、好ましい実施例を参照して本発明の内容を具体的に説明したが、本発明の基本的技術思想及び教示に基づいて、当業者であれば、種々の変形態様を採り得ることは自明である。
【符号の説明】
【0040】
1 CPU
11 第1スレッド
12 第2スレッド
21 第1メモリ
22 第2メモリ
3 第3メモリ
111,121 入力動作
112,122 演算動作
113,123 出力動作

【特許請求の範囲】
【請求項1】
単一の演算処理ユニットと、第1メモリと、第2メモリと、第3メモリとを含む保安処理装置であって、
前記演算処理ユニットは、
前記第1メモリを使用して、所定の第1周期ごとに第1スレッドを実行し、
前記第2メモリを使用して、前記第1周期より短い所定の第2周期ごとに、前記第1スレッドに優先して、第2スレッドを実行し、
前記第1及び第2スレッドは、前記第3メモリに記憶されたデータを読み込む入力動作と、前記入力動作を再度行なうことなく前記データに基づき演算する演算動作と、前記演算動作によって得られたデータを前記第3メモリに書き込む出力動作とをそれぞれ含む、
保安処理装置。
【請求項2】
請求項1記載の保安処理装置であって、
前記第3メモリは、第1FIFOメモリと、第2FIFOメモリとを含み、
前記第1FIFOメモリは、
前記第1スレッドの前記出力動作により前記データが書き込まれ、
前記第2スレッドの前記入力動作により前記データが読み出され、
前記第2FIFOメモリは、
前記第2スレッドの前記出力動作により前記データが書き込まれ、
前記第1スレッドの前記入力動作により前記データが読み出され、
前記演算処理ユニットは、
前記第1スレッドの実行中、前記第2メモリへのアクセスと、前記第1FIFOメモリからの読み出しと、前記第2FIFOメモリへの書き込みとが禁止されており、
前記第2スレッドの実行中、前記第1メモリへのアクセスと、前記第2FIFOメモリからの読み出しと、前記第1FIFOメモリへの書き込みとが禁止されている、
保安処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate


【公開番号】特開2013−58228(P2013−58228A)
【公開日】平成25年3月28日(2013.3.28)
【国際特許分類】
【出願番号】特願2012−241902(P2012−241902)
【出願日】平成24年11月1日(2012.11.1)
【分割の表示】特願2008−15326(P2008−15326)の分割
【原出願日】平成20年1月25日(2008.1.25)
【出願人】(899000057)学校法人日本大学 (650)
【出願人】(000004651)日本信号株式会社 (720)
【Fターム(参考)】