(58)【調査した分野】(Int.Cl.,DB名)
【発明の概要】
【発明が解決しようとする課題】
【0005】
従来のミッションクリティカルな領域に適用される制御装置は、シングルコアのCPUチップを搭載しているCPUユニットで2重系を組んでいる。このために、従来の制御装置は、SEUによる一過性のエラーであっても重故障と見做して、系切り替えを行う。よって、従来の制御装置は、CPUユニットとしての稼働率が低いという問題点があった。
【0006】
さらに、従来のシングルコアのCPUチップで使用している制御装置の系切り替え方式を、マルチコアのCPUチップを有する制御装置に適用する。すると、1つのコアで異常検出しただけで、他のコアが正常に実行している場合であっても、CPUユニット毎の系切り替えを行う。よって、CPUユニットとして稼働率が悪いという問題点があった。
【0007】
この発明は上記のような課題を解決するためになされたものであり、高信頼性を有するとともに稼働率に優れた制御装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
この発明の制御装置は、
制御コアおよび1または複数の待機コアを有する制御用CPUチップ、および、情報を記憶する主記憶部を搭載した制御系CPUカードと、
制御コアおよび1または複数の待機コアを有する待機用CPUチップ、および、情報を記憶する主記憶部を搭載した待機系CPUカードと、
上記制御系CPUカードと上記待機系CPUカードと間で上記情報を共有するための通信を行うインターフェイスとを備えた制御装置であって、
上記制御系CPUカードにおいて、上記制御コアが正常である場合には、上記制御コアが制御演算を行い演算結果を出力し、
上記制御コアが異常である場合には、いずれか1の上記待機コアを制御用としてのコアに切り替えて上記制御演算を行い上記演算結果の出力を継続し、
上記制御コアおよび1または複数の上記待機コアの全てが異常である場合には、上記制御系CPUカードから上記待機系CPUカードに系切り替えを行う制御装置
であって、
上記各主記憶部は、上記制御コアおよび1または複数の上記待機コアの上記各演算結果を別々に格納する演算データ領域をそれぞれ形成し、
上記制御コアおよび上記待機コアがいずれも同じ上記制御演算を行い、上記各演算結果を上記各演算データ領域にそれぞれ格納し、
上記制御コア用の上記演算データ領域に障害が発生すると、
上記待機コア用の上記演算データ領域に格納されている上記演算結果を上記制御コア用の上記演算データ領域に保存して上記制御コアでの上記制御演算を継続するものである。
また、この発明の制御装置は、
制御コアおよび1または複数の待機コアを有する制御用CPUチップ、および、情報を記憶する主記憶部を搭載した制御系CPUカードと、
制御コアおよび1または複数の待機コアを有する待機用CPUチップ、および、情報を記憶する主記憶部を搭載した待機系CPUカードと、
上記制御系CPUカードと上記待機系CPUカードと間で上記情報を共有するための通信を行うインターフェイスとを備えた制御装置であって、
上記制御系CPUカードにおいて、上記制御コアが正常である場合には、上記制御コアが制御演算を行い演算結果を出力し、
上記制御コアが異常である場合には、いずれか1の上記待機コアを制御用としてのコアに切り替えて上記制御演算を行い上記演算結果の出力を継続し、
上記制御コアおよび1または複数の上記待機コアの全てが異常である場合には、上記制御系CPUカードから上記待機系CPUカードに系切り替えを行う制御装置であって、
上記各主記憶部は、上記制御コアおよび1または複数の上記待機コアの上記各演算結果を別々に格納する演算データ領域をそれぞれ形成し、
上記制御コアおよび1または複数の上記待機コアは、上記各演算結果をそれぞれ格納するキャッシュメモリをそれぞれ形成し、
上記各キャッシュメモリは、ライトバックモードに設定され、
上記制御コアおよび上記待機コアがいずれも同じ上記制御演算を行い、上記各演算結果を上記各キャッシュメモリにそれぞれ格納し、
上記制御コアの上記キャッシュメモリに障害が発生すると、
上記待機コアの上記キャッシュメモリの上記演算結果を、上記待機コア用の上記演算データ領域に保存し、
上記待機コア用の上記演算データ領域の当該演算結果を上記制御コア用の上記演算データ領域に保存して、
上記制御コア用の上記演算データ領域の当該演算結果を上記制御コアの上記キャッシュメモリに保存して、
上記制御コアでの上記制御演算を継続するものである。
【発明の効果】
【0009】
この発明の制御装置は、上記のように構成されているため、高信頼性を有するとともに稼働率に優れている。
【発明を実施するための形態】
【0011】
実施の形態1.
以下、本願発明の実施の形態について説明する。
図1はこの発明の実施の形態1における制御装置の構成を示す図、
図2は
図1に示した制御装置の遷移状態を説明するための遷移図、
図3は
図1に示した制御装置の動作を説明するためのフローチャートである。図において、制御装置は、制御系CPUユニット1と待機系CPUユニット2とが存在する。そして、制御系CPUユニット1と待機系CPUユニット2とは、同様の制御演算および処理を行うことができるように、以下に示すように同様に構成されている。尚、制御系CPUユニット1および待機系CPUユニット2は、同様の動作が可能である。また、このことは以下の実施の形態においても同様であるため、この説明は適宜省略する。
【0012】
制御系CPUユニット1と待機系CPUユニット2とは、制御系CPUカード11、待機系CPUカード21および第1インターフェイス(以下、I/Fと称す)カード121、221、および、第2I/Fカード122、222をそれぞれ備えている。制御系CPUカード11、待機系CPUカード21は、制御演算および系間通信を行うものである。そして、制御系CPUカード11、待機系CPUカード21は、マルチコアの制御用CPUチップ12、待機用CPUチップ22と、主記憶部13、23とをそれぞれ備えている。
【0013】
第1I/Fカード121、221、および、第2I/Fカード122、222は、ネットワーク等、制御装置の外部と、制御系CPUカード11、待機系CPUカード21とのI/Fであり、第1システムバス31、32を介して行うものである。I/F33は、制御系CPUカード11と待機系CPUカード21と間で情報を共有するための通信を行うものである。そして、I/F33は、制御系CPUユニット1と待機系CPUユニット2とを系間通信バス34、35を用いて系間通信を行うものである。そして、このI/F33により、制御系CPUユニット1と待機系CPUユニット2とは2重系を構成する。
【0014】
制御用CPUチップ12、待機用CPUチップ22は、第1コア14、24、第2コア15、25、システムバスコントローラ19、29、メモリコントローラ17、27、および系間通信バスコントローラ16、26とをそれぞれ備えている。第1コア14、24および第2コア15、25は、制御演算を行うものである。システムバスコントローラ19、29は、第1システムバス31、32にそれぞれ接続され、第1システムバス31、32を介して制御装置の外部に送信するデータを制御するものである。
【0015】
メモリコントローラ17、27は、第1コア14、24、第2コア15、25の演算結果の主記憶部13、23への記憶を制御するものである。系間通信バスコントローラ16、26は、系間通信バス34、35にそれぞれ接続され、系間を2重系するために必要な情報を制御するものである。主記憶部13、23は、各種情報を記憶するものである。
そして、主記憶部13、23は、第1演算データ領域13a、23a、第2演算データ領域13b、23bと、コード領域13c、23cとをそれぞれ備えている。
【0016】
第1演算データ領域13a、23a、第2演算データ領域13b、23bは、第1コア14、24、第2コア15、25の各演算結果をメモリコントローラ17、27により制御され記憶されるものである。コード領域13c、23cは、制御演算を行うために必要となる制御演算コードを記憶するものである。第1コア14、24および第2コア15、25は、演算結果などを保存するキャッシュメモリ141、151、241、251をそれぞれ備えている。キャッシュメモリ141、151、241、251は、制御演算の演算性能を上げるための記憶部で、例えばSRAMにて構成されているものである。また、各キャッシュメモリ141、151、241、251は、ライトスルーモードで使用されている。よって、各キャッシュメモリ141、151、241、251の内容と、主記憶部13、23の内容とは同一となる。
【0017】
次に上記のように構成された実施の形態1の制御装置の制御動作について説明する。まず、制御系CPUユニット1は、第1コア14を制御コア、第2コア15を待機コアとしてあらかじめ設定する。次に、第1コア14および第2コア15は、主記憶部13上の同じ制御演算コードを実行する。そして、第1I/Fカード121および第2I/Fカード122との通信処理は、システムバスコントローラ19により、制御コアである第1コア14のみにて実施されている。
【0018】
また、第1コア14および第2コア15では、キャッシュメモリ141、151などを定期的にかつ自己診断を行い、故障および異常などを検出している。そして、第1コア14および第2コア15では、故障検出、異常信号などを、割り込みによる例外処理にて行う。また、系間通信バスコントローラ16が、制御系CPUユニット1および待機系CPUユニット2間で、I/F33を用いて、定期的に制御演算に必要な情報を、制御系CPUユニット1から待機系CPUユニット2に送信している。そして、系切り替え発生時には、制御系CPUユニットに切り替わった待機系CPUユニット2で制御演算を継続できるように設定されている。従って、待機系CPUユニット2では、制御系CPUユニットとして制御コアである第1コア24、待機コアである第2コア25などを上記に示した場合と同様に同じ制御演算コードを実行することができる。
【0019】
次に、上記のように構成された実施の形態1の制御装置の切り替え状態の遷移について
図2の遷移図を用いて説明する。まず、制御系CPUユニット1、待機系CPUユニット2の両方とも、正常、かつ、第1コア14、24および第2コア15、25の両方とも正常である状態の『両系正常・両コア正常』からスタートする。そして、制御系CPUユニット1の、第1コア14、第2コア15のどちらかのコアで、異常検出した場合には、『両系正常・片コア異常』に遷移する(
図2のステップS101)。この際、異常検出したコアが制御コアであった場合には、制御コアを待機コアとする。そして、それまで待機コアであったコアを制御コアに切り替え制御演算を継続する。また、異常検出したコアが待機コアであった場合には、制御コアは制御演算を継続する。
【0020】
そして、『両系正常・片コア異常』の遷移状態から異常コア(第1コア14、または、第2コア15のいずれか)が異常状態から正常状態に復帰した場合には、『両系正常・両コア正常』の状態に遷移する(
図2のステップS102)。そして、『両系正常・片コア異常』の遷移状態で、制御系CPUユニット1の制御コア(第1コア14、または、第2コア15のいずれか)が異常検出した場合には、状態を『片系異常・両コア正常』に遷移する。尚、この場合、第1コア14および第2コア15のいずれもが異常である。
【0021】
これは、制御系CPUユニット1から待機系CPUユニット2の間で系切り替えが行われることを指す。そして、待機系CPUユニット2が、新たに制御系CPUユニットとして立ち上がる。よって、制御系となった待機系CPUユニット2の第1コア24および第2コア25は、両方ともが正常であるため、両コア正常となる(
図2のステップS103)。そして、『片系異常・両コア正常』の状態で他系のCPUユニットの各コアが正常状態に復帰した場合には、状態を『両系正常・両コア正常』に遷移する(
図2のステップS104)。
【0022】
そして、『片系異常・両コア正常』時に、待機系CPUユニット2の第1コア24、第2コア25のいずれかに異常を検出した場合には、『片系異常・片コア異常』に遷移する(
図2のステップS105)。この際、異常検出したコアが制御コアであった場合には、制御コアを待機コアとする。そして、それまで待機コアであったコアを制御コアに切り替え制御演算を継続する。そして、『片系異常・片コア異常』の遷移状態から異常コア(第1コア24、または、第2コア25のいずれか)が異常状態から正常状態に復帰した場合には、『片系異常・両コア正常』の状態に遷移する(
図2のステップS106)。
【0023】
そして、『片系異常・片コア異常』の遷移状態から、自系の制御コアが異常を検出した場合には、状態を『両系重故障』に遷移して、制御演算を停止し、HALT(停止)状態になる(
図2のステップS107)。そして、『両系正常・両コア正常』の遷移状態から、制御系CPUユニット1の、第1コア14、第2コア15のいずれもが異常検出した場合には、状態を『片系異常・両コア正常』に遷移する(
図2のステップS108)。そして、『両系正常・片コア異常』の遷移状態から、制御系CPUユニット1の、第1コア14、第2コア15のいずれもの異常検出し、かつ、待機系CPUユニット2の、第1コア24、第2コア25のいずれかが異常を検出した場合には、状態を『片系異常・片コア異常』に遷移する(
図2のステップS109)。
【0024】
そして、『片系正常・片コア異常』の遷移状態から、制御系CPUユニット1の、第1コア14、第2コア15のいずれかが正常を検出し、かつ、待機系CPUユニット2の、第1コア24、第2コア25のいずれかもが正常を検出した場合には、状態を『両系正常・片コア異常』に遷移する(
図2のステップS110)。
【0025】
従来、制御系CPUユニットおよび待機系CPUユニット2では、1つのCPUのコアに異常を検出すると、即時に系切り替えを行って、自系(制御系CPUユニット)の処理を停止していた。しかし、上記に示したように実施の形態1の制御系CPUユニット1および待機系CPUユニット2は、マルチコアを有し、1つのCPUのコアで異常検出しても、同一CPUチップ内の他のコアで演算を継続することができる。よって、稼働率の高い装置を得ることができる。
【0026】
次に上記のように構成された実施の形態1の制御装置の切り替え動作について、
図3に基づいて説明する。まず、制御系CPUユニット1の制御系CPUカード11の制御コアである第1コア14、待機コアである第2コア15は、同じデータを入力する(
図3のステップS201)。次に、第1コア14および第2コア15にて同じ制御演算を実行する(
図3のステップS202)。次に、第1コア14および第2コア15は各演算結果を主記憶部13の演算データ領域13aに格納し、演算結果を比較する(
図3のステップS203)。
【0027】
そして、比較の結果が、演算結果が一致するならば、第1コア14はデータを出力する(
図3のステップS204)。そして、ステップS201に戻り、再び上記に示した制御演算を継続する。また、比較の結果、演算結果が一致しない(不一致)ならば、待機コアである第2コア15の状態をチェックする(
図3のステップS205)。そして、正常(YES)ならば、待機コアである第2コア15を制御コアに切り替える(
図3のステップS206)。そして、ステップS201に戻り、再び上記に示した制御演算を継続する。また、待機コアである第2コア15が異常であった場合には(NO)、待機系CPUユニット2の状態をチェックする(
図3のステップS207)。
【0028】
そして、正常(YES)ならば、待機系CPUユニット2を制御系CPUユニットとして切り替える(
図3のステップS208)。そして、ステップS201に戻り、待機系CPUユニット2が制御系CPUユニットとなり、制御系となった待機系CPUユニット2側にて再び上記に示した制御演算を継続する。また、待機系である待機系CPUユニット2が異常であった場合には(NO)、両系とも異常であるため、重故障処理と判断し、制御演算を停止する(
図3のステップS209)。
【0029】
上記に示した実施の形態1においては、コア間の切り替えを、演算結果を比較して一致または一致していない場合の例について示した。以下、他の場合について説明する。この場合は、まず、マルチコアが3以上、すなわち待機コアが2以上のコアが存在する場合について適用できる。
【0030】
上記実施の形態1と同様に、制御コアおよび各待機コアのいずれも同じ制御演算を行う。次に、制御コアおよび各待機コアの各演算結果を多数決にて比較する。そして、多数決の多数が、制御コアの演算結果ならば、制御コアにて制御演算を行う。また、多数決の多数が制御コアの上記演算結果でないと判断される。その際は、多数決の多数となった演算結果を有する待機コアを、制御用のコアに切り替え制御演算を行うものである。
【0031】
上記に示した実施の形態1によると、マルチコアが、同じ入力データを使用して、同じ制御演算を行って演算結果を比較し、異なっていたらコア切り替え、系切り替えを行うことにより、高稼働率を維持しつつ、信頼性の高い装置を得ることができる。
【0032】
さらに、多数決により演算結果の選択を行うと、さらに信頼性の高い装置を得ることができる。
【0033】
実施の形態2.
上記実施の形態1においては、制御コアである第1コア14、待機コアである第2コア15で使用する主記憶部13の領域を第1演算データ領域13a、第2演算データ領域13bに分割して、同じ制御演算を実行している。よって、主記憶部13に、例えばECCエラーが発生した時は、制御コアである第1コア14、および、待機コアである第2コア15を切り替えることで演算を継続する例を示した。本実施の形態2においては、主記憶部13に障害、例えばECCエラーが発生した場合、コアを切り替えることなく行う場合について説明する。
【0034】
本実施の形態2においては、制御コアである第1コア14および待機コアである第2コア15がいずれも同じ制御演算を行い、各キャッシュメモリ141、151にそれぞれ各演算結果が保存されている。そして、各キャッシュメモリ141、151は、ライトスルーモードで使用されているため、各キャッシュメモリ141、151の各演算結果は、第1演算データ領域13aおよび第2演算データ領域13bにそれぞれ格納される。
【0035】
そして、制御コアである第1コア14用の第1演算データ領域13aに障害が発生する。その場合、待機コアである第2コア15用の第2演算データ領域13bに格納されている演算結果を、制御コアである第1コア14用の第1演算データ領域13aに保存する。そして、制御コアである第1コア14での制御演算を継続することができる。
【0036】
上記のように構成された実施の形態2によれば、上記実施の形態1と同様の効果を奏するのはもちろんのこと、制御コアの演算データ領域に障害が発生しても、待機コアの演算データ領域の演算結果を用いて、制御コアでの演算を継続することができるため、演算効率が向上する。
【0037】
実施の形態3.
上記各実施の形態においては、第1システムバス31に、例えばパリティエラーが発生した時は、第1コア14および第2コア15でシステムバス31を共有しているため、系切り替えでしか制御演算を継続することができない。
【0038】
よって、本実施の形態3においては、
図4に示すように、制御系CPUカード11と、第1および第2I/Fカード121、122と間を第1および第2システムバス31、36にて二重化する。そして、この第1および第2システムバス31、36とシステムバスコントローラ19間に、第1および第2システムバス31、36を切り替える、バススイッチャ41を形成する。尚、待機系CPUユニット2も同様に、第1および第2システムバス32、37が二重化され、バススイッチャ42が形成されている。
【0039】
上記のように構成された実施の形態3の制御装置の動作について説明する。尚、システムバスの切り替え以外は上記各実施の形態と同様であるためその説明は適宜省略する。また、以下の実施の形態においても、システムバスの切り替えは同様に行うことができるため、その説明は適宜省略する。通常は、バススイッチャ41にて選択され、第1システムバス31を用いて、制御系CPUカード11と制御装置の外部との通信が行われている。そして、第1システムバス31に障害、例えば、パリティエラーが発生した場合には、バススイッチャ41が第2システムバス36に切り替わる。そして、第1システムバス31を用いて、制御系CPUカード11と制御装置の外部との通信が行われている。よって、コアを切り替えることなく、対応することが可能となる。
【0040】
上記実施の形態3の制御装置によれば、上記各実施の形態と同様の効果を奏するのはもちろんのこと、システムバスの障害に対しては、システムバスを二重化しておりこれらを切り替えることにより制御装置の外部との通信を行うことができる。よって、系切り替えを行うことなく、制御演算を継続して対応することができるため、演算効率が向上する。
【0041】
実施の形態4.
上記各実施の形態では、キャッシュメモリ141、151、241、251をライトスルーモードに設定している。よって、キャッシュメモリ141、151、241、251の一過性のエラーが発生した時には、キャッシュメモリ141、151、241、251を無効化して主記憶部13、23に保存しているデータを読み直して、リカバリーを可能としている。しかし、ライトスルーモードでメモリライトを行っていることにより、制御演算の性能が低下している。
【0042】
本実施の形態4においては、キャッシュメモリ141、151、241、251をライトバックモードに設定する場合について説明する。まず、上記各実施の形態と同様に、それぞれの第1および第2コア14、15で同じデータを入力し、同じ制御演算を実行する。そして、第1および第2コア14、15の各演算結果を、各キャッシュメモリ141、151にそれぞれ格納する。次に、例えば、制御コアである第1コア14のキャッシュメモリ141に障害が発生する。次に、待機コアである第2コア15のキャッシュメモリ151の演算結果を、待機コアである第2コア15の第2演算データ領域13bに保存する。
【0043】
次に、待機コアである第2コア5の第2演算データ領域13bの演算結果を、制御コアである第1コア14の第1演算データ領域13aに保存する。次に、制御コアである第1コア14の第1演算データ領域13aの演算結果を、制御コアである第1コア14のキャッシュメモリ141に保存する。そして、制御コアである第1コア14にて制御演算を継続する。
【0044】
上記のように構成された実施の形態4によれば、制御コアのキャッシュメモリに一過性の障害が発生しても、コアを切り替えることなく、制御演算を継続することができるため、制御演算の性能を劣化させることなく、リカバリー処理が行え、稼働率、および、信頼性を高めることができる。また、キャッシュメモリをライトバックモードで使用するため、性能を落とさず制御演算を実行することが可能となる。
【0045】
尚、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。