(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024129514
(43)【公開日】2024-09-27
(54)【発明の名称】プロセッサモジュール、制御方法及び制御プログラム
(51)【国際特許分類】
G06F 11/16 20060101AFI20240919BHJP
【FI】
G06F11/16 654
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2023038765
(22)【出願日】2023-03-13
(71)【出願人】
【識別番号】000006507
【氏名又は名称】横河電機株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】▲高▼▲柳▼ 尚士
【テーマコード(参考)】
5B034
【Fターム(参考)】
5B034AA02
5B034CC01
5B034CC02
(57)【要約】
【課題】プロセッサの多重化に伴う部品数の増加を抑止すること。
【解決手段】実施形態のプロセッサモジュール10は、プロセッサ111と、プロセッサ111と同じ演算を行うプロセッサ112と、プロセッサ111の演算によって得られた第1のデータが書き込まれるメインメモリ121と、プロセッサ112の演算によって得られた第2のデータが書き込まれるメインメモリ122と、第1のデータと第2のデータが同じである場合に、第1のデータ又は第2のデータのチェックビットが書き込まれるメインメモリ141と、を有する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
第1のプロセッサと、
前記第1のプロセッサと同じ演算を行う第2のプロセッサと、
前記第1のプロセッサの演算によって得られた第1のデータが書き込まれる第1のメモリと、
前記第2のプロセッサの演算によって得られた第2のデータが書き込まれる第2のメモリと、
前記第1のデータと前記第2のデータが同じである場合に、前記第1のデータのチェックビット又は前記第2のデータのチェックビットが書き込まれる第3のメモリと、
を有することを特徴とするプロセッサモジュール。
【請求項2】
前記第1のデータのチェックビットを計算する第1のインタフェースコントローラと、
前記第2のデータのチェックビットを計算する第2のインタフェースコントローラと、
をさらに有し、
前記第3のメモリは、前記第1のインタフェースコントローラ及び前記第2のインタフェースコントローラと接続されることを特徴とする請求項1に記載のプロセッサモジュール。
【請求項3】
前記第1のデータのチェックビットを計算する第1のインタフェースコントローラと、
前記第2のデータのチェックビットを計算する第2のインタフェースコントローラと、
をさらに有し、
前記第3のメモリは、前記第1のインタフェースコントローラと前記第2のインタフェースコントローラのうち、前記第1のインタフェースコントローラのみと接続されることを特徴とする請求項1に記載のプロセッサモジュール。
【請求項4】
前記第3のメモリは、前記第1のデータが書き込まれる前記第1のメモリのアドレスのチェックビットがさらに書き込まれることを特徴とする請求項3に記載のプロセッサモジュール。
【請求項5】
第1のプロセッサと、
前記第1のプロセッサと同じ演算を行う第2のプロセッサと、
前記第1のプロセッサの演算によって得られた第1のデータが書き込まれる第1のメモリと、
前記第2のプロセッサの演算によって得られた第2のデータが書き込まれる第2のメモリと、
第3のメモリと、
を有するプロセッサモジュールを制御するコントローラが、
前記第1のデータのチェックビット及び前記第2のデータのチェックビットを計算し、
前記第1のデータのチェックビットと前記第2のデータのチェックビットが一致する場合、前記第1のデータのチェックビット又は前記第2のデータのチェックビットを前記第3のメモリに書き込む
ことを特徴とする制御方法。
【請求項6】
第1のプロセッサと、
前記第1のプロセッサと同じ演算を行う第2のプロセッサと、
前記第1のプロセッサの演算によって得られた第1のデータが書き込まれる第1のメモリと、
前記第2のプロセッサの演算によって得られた第2のデータが書き込まれる第2のメモリと、
第3のメモリと、
を有するプロセッサモジュールを制御するコントローラに、
前記第1のデータのチェックビット及び前記第2のデータのチェックビットを計算し、
前記第1のデータのチェックビットと前記第2のデータのチェックビットが一致する場合、前記第1のデータのチェックビット又は前記第2のデータのチェックビットを前記第3のメモリに書き込む
処理を実行させることを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プロセッサモジュール、制御方法及び制御プログラムに関する。
【背景技術】
【0002】
従来、システムの安全性を高めるために、コンピュータのプロセッサを多重化する技術が知られている。例えば、演算のエラーを検出するためにプロセッサが二重化された装置が知られている(例えば、特許文献1を参照)。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術には、プロセッサの多重化に伴う部品数の増加を抑止できない場合があるという問題がある。
【0005】
例えば、従来の技術では、2つのプロセッサでシステムを構成する場合、1つのプロセッサでシステムを構成する場合と比べて、メモリ等の部品の数が少なくとも2倍になる。
【0006】
一つの側面では、プロセッサの多重化に伴う部品数の増加を抑止することを目的とする。
【課題を解決するための手段】
【0007】
一側面に係るプロセッサモジュールは、第1のプロセッサと、前記第1のプロセッサと同じ演算を行う第2のプロセッサと、前記第1のプロセッサの演算によって得られた第1のデータが書き込まれる第1のメモリと、前記第2のプロセッサの演算によって得られた第2のデータが書き込まれる第2のメモリと、前記第1のデータと前記第2のデータが同じである場合に、前記第1のデータのチェックビット又は前記第2のデータのチェックビットが書き込まれる第3のメモリと、を有することを特徴とする。
【0008】
一側面に係る制御方法は、第1のプロセッサと、前記第1のプロセッサと同じ演算を行う第2のプロセッサと、前記第1のプロセッサの演算によって得られた第1のデータが書き込まれる第1のメモリと、前記第2のプロセッサの演算によって得られた第2のデータが書き込まれる第2のメモリと、第3のメモリと、を有するプロセッサモジュールを制御するコントローラが、前記第1のデータのチェックビット及び前記第2のデータのチェックビットを計算し、前記第1のデータのチェックビットと前記第2のデータのチェックビットが一致する場合、前記第1のデータのチェックビット又は前記第2のデータのチェックビットを前記第3のメモリに書き込むことを特徴とする。
【0009】
一側面に係る制御プログラムは、第1のプロセッサと、前記第1のプロセッサと同じ演算を行う第2のプロセッサと、前記第1のプロセッサの演算によって得られた第1のデータが書き込まれる第1のメモリと、前記第2のプロセッサの演算によって得られた第2のデータが書き込まれる第2のメモリと、第3のメモリと、を有するプロセッサモジュールを制御するコントローラに、前記第1のデータのチェックビット及び前記第2のデータのチェックビットを計算し、前記第1のデータのチェックビットと前記第2のデータのチェックビットが一致する場合、前記第1のデータのチェックビット又は前記第2のデータのチェックビットを前記第3のメモリに書き込む処理を実行させることを特徴とする。
【発明の効果】
【0010】
一実施形態によれば、プロセッサの多重化に伴う部品数の増加を抑止することができる。
【図面の簡単な説明】
【0011】
【
図1】第1の実施形態に係るプロセッサモジュールの構成例を示す図である。
【
図2】第1の実施形態に係るインタフェースコントローラの構成例を示す図である。
【
図3】第1の実施形態に係るインタフェースコントローラの構成例を示す図である。
【
図4】第1の実施形態に係る照合器の構成例を示す図である。
【
図5】第1の実施形態に係るプロセッサモジュールの書き込み処理の流れを示すフローチャートである。
【
図6】第1の実施形態に係るプロセッサモジュールの読み出し処理の流れを示すフローチャートである。
【
図7】第2の実施形態に係るプロセッサモジュールの構成例を示す図である。
【
図8】第3の実施形態に係るプロセッサモジュールの構成例を示す図である。
【
図9】第3の実施形態に係るプロセッサモジュールの書き込み処理の流れを示すフローチャートである。
【
図10】第3の実施形態に係るプロセッサモジュールの読み出し処理の流れを示すフローチャートである。
【
図11】従来のプロセッサモジュールの構成を示す図である。
【発明を実施するための形態】
【0012】
以下に、本願の開示するプロセッサモジュール、制御方法及び制御プログラムの実施形態を図面に基づいて詳細に説明する。なお、ここで説明する実施形態により本願の発明が限定されるものではない。また、同一の要素には同一の符号を付し、重複する説明は適宜省略する。また、各実施形態は、矛盾のない範囲内で適宜組み合わせることができる。
【0013】
実施形態のプロセッサモジュールは、コンピュータの一例である。プロセッサモジュールは、例えばプラントに備えられた分散型制御システム(DCS:Distributed Control System)及び安全計装システム(SIS:Safety Instrument System)等において利用される。
【0014】
プラントは、例えば石油プラント、石油化学プラント、化学プラント、又はガスプラントである。プラントが稼働することで、LNG(液化天然ガス)、樹脂(プラスチック、ナイロン等)、化学製品といった生成物が得られる。
【0015】
また、プラントは、工場施設、機械施設、生産施設、発電施設、貯蔵施設、石油、天然ガス等を採掘する井戸元における施設等を有する。また、プラント内には、生成物を生成するための設備機器が備えられる。
【0016】
プロセッサモジュールは、プラントに備えられたフィールド機器から得られたデータを用いた演算を行うものであってもよい。フィールド機器は、プラントの状態に関する情報を取得する。例えば、フィールド機器は、温度センサ、pHセンサ、速度センサ、加速度センサ、気圧センサ、ガス濃度センサ、バルブの開度を検知する機器、スイッチの状態(オン又はオフ)を検知する機器等である。
【0017】
例えば、プロセッサモジュールは、フィールド機器から得られたデータを基に、プラントの設備機器の操作量(例えば、バルブの開度の変更量)を計算する。
【0018】
ここで、特にSISについては、機能安全規格の取得が求められる。機能安全規格IEC 61508では、安全度水準SIL(Safety Integrity Level)に応じたPFD(Probability of Failure on Demand)が設定されている。
【0019】
高水準のSILを達成するためには、PFDを低くする必要がある。そのためには、プロセッサモジュールの異常検出率を高くする必要がある。従来、異常検出率向上のため、プロセッサ及びメインメモリを二重化したプロセッサモジュールの構成が知られている。
【0020】
[従来のプロセッサモジュール]
図11を用いて、プロセッサ及びメインメモリが二重化された従来のプロセッサモジュールの構成を説明する。
図11は、従来のプロセッサモジュールの構成を示す図である。
【0021】
図11に示すように、従来のプロセッサモジュール10aは、プロセッサ111a、プロセッサ112a、メインメモリ121a、メインメモリ122a、メインメモリ123a、メインメモリ124a及びFPGA(Field Programmable Gate Array)130aを有する。FPGA130aは、インタフェースコントローラ131a、インタフェースコントローラ132a及び照合器133aを有する。なお、FPGAは、ASIC(Application Specific Integrated Circuit)等の他の装置に置き換えられてもよい。
【0022】
図11に示すように、プロセッサモジュール10aは、2つのプロセッサを有する。例えば、プロセッサはCPU(Central Processing Unit)である。各プロセッサは、専用のインタフェースコントローラを介して、データ用のメインメモリ及び誤り検出符号(EDC:Error Detection Code)用のメインメモリに接続される。例えば、メインメモリは、DDR4 SDRAMである。
【0023】
図中の実線、破線及び一点鎖線は、それぞれデータ線、データストローブ線及びアドレス線を意味する。また、線上に示される数値は、各線のバス幅を表している。データ線のバス幅は32ビットである。なお、アドレス線は制御線であってもよい。
【0024】
プロセッサモジュール10aは、データ用のメインメモリに加え、チェックビットを保持するためのEDC用のメインメモリを有する。これにより、プロセッサモジュール10aの稼働率が向上する。
【0025】
例えば、FPGA130aとメインメモリ用のメインメモリとの間のデータ線が32ビットであるため、FPGA130aは、8ビットのチェックビットを付けることで、1ビットの誤り検出、1ビットの誤り訂正及び2ビットの誤り検出を行うことができる。
【0026】
(書き込み処理)
プロセッサモジュール10aによる、メインメモリへのライトアクセス、すなわちデータの書き込み(ライト)処理を説明する。
【0027】
まず、プロセッサ111aは、メインメモリ121aにデータをライトする。また、プロセッサ112aは、メインメモリ122aにデータをライトする。
【0028】
このとき、インタフェースコントローラ131aは、プロセッサ111aがメインメモリ121aにライトするデータに対応するチェックビットを計算し、計算によって得られたチェックビットをメインメモリ123aにライトする。
【0029】
また、インタフェースコントローラ132aは、プロセッサ112aがメインメモリ122aにライトするデータに対応するチェックビットを計算し、計算によって得られたチェックビットをメインメモリ124aにライトする。
【0030】
(読み出し処理)
プロセッサモジュール10aによる、メインメモリへのリードアクセス、すなわちデータの読み出し(リード)処理を説明する。
【0031】
まず、プロセッサ111aは、メインメモリ121aからデータをリードする。また、プロセッサ112aは、メインメモリ122aからデータをリードする。
【0032】
照合器133aは、メインメモリ121aからリードされたデータとメインメモリ122aからリードされたデータとを照合し、両者が一致するか否かを判定する。
【0033】
メインメモリ121aからリードされたデータとメインメモリ122aからリードされたデータとが一致しない場合、インタフェースコントローラ131a及びインタフェースコントローラ132aは、異常の発生を検出する。
【0034】
異常が検出された場合、メインメモリ121aからリードされたデータ、又はメインメモリ122aからリードされたデータのうち片方のデータの誤りが1ビットであれば、インタフェースコントローラ131a又はインタフェースコントローラ132aは、メインメモリ123a又はメインメモリ124aからリードしたチェックビットにより、当該誤りを訂正する。これにより、異常が検出された場合であっても、プロセッサモジュール10aは稼働を継続することができる。
【0035】
例えば、メインメモリ121aからリードされたデータに1ビットの誤りがあれば、インタフェースコントローラ131aは、メインメモリ123aからリードしたチェックビットにより、当該誤りを訂正する。
【0036】
また、例えば、メインメモリ122aからリードされたデータに1ビットの誤りがあれば、インタフェースコントローラ132aは、メインメモリ124aからリードしたチェックビットにより、当該誤りを訂正する。
【0037】
データ線(実線)、及びデータ線を読み取るために必要なデータストローブ線(破線)は、FPGA130aから、データ用のメインメモリ及びEDC用のメインメモリのそれぞれに個別に接続される。
【0038】
図11の例では、データ線及びデータストローブ線は、メインメモリ121a、メインメモリ122a、メインメモリ123a、メインメモリ124aのそれぞれに個別に接続されている。
【0039】
一方、データ用のメインメモリとEDC用のメインメモリには、共通のアドレス線(一点鎖線)が接続されている。これは、FPGA130aが、データ用のメインメモリとEDC用のメインメモリに対して、同じタイミングかつ同じアドレスでアクセスするためである。
【0040】
図11に示した通り、従来の二重化されたプロセッサモジュールでは、プロセッサ及びデータ用のメインメモリだけでなく、EDC用のメモリについても2つ必要になるため、部品数が増加する。
【0041】
以下の実施形態によれば、従来の二重化構造のプロセッサモジュールに比べてEDC用のメインメモリの数が少ない二重化構造のプロセッサモジュールを得ることができる。
【0042】
[第1の実施形態]
[第1の実施形態の構成]
図1を用いて、第1の実施形態のプロセッサモジュールの構成を説明する。
図1は、第1の実施形態に係るプロセッサモジュールの構成例を示す図である。
【0043】
図1に示すように、第1の実施形態のプロセッサモジュール10は、プロセッサ111、プロセッサ112、メインメモリ121、メインメモリ122、メインメモリ141及びFPGA130を有する。FPGA130は、インタフェースコントローラ131、インタフェースコントローラ132及び照合器133を有する。
【0044】
FPGA130は、プロセッサモジュールを制御するコントローラの一例である。FPGA130は、ASIC等の他の装置に置き換えられてもよい。
【0045】
図1に示すように、プロセッサモジュール10は、2つのプロセッサを有する。例えば、プロセッサはCPUである。各プロセッサは、専用のインタフェースコントローラを介して、データ用のメインメモリ及びEDC用のメインメモリに接続される。例えば、メインメモリは、DDR4 SDRAMである。
【0046】
プロセッサ111は、第1のプロセッサの一例である。また、プロセッサ112は、第2のプロセッサの一例である。プロセッサ112は、プロセッサ111と同じ演算を行う。
【0047】
図中の実線、破線及び一点鎖線は、それぞれデータ線、データストローブ線及びアドレス線を意味する。また、線上に示される数値は、各線のバス幅を表している。なお、アドレス線は制御線であってもよい。
【0048】
プロセッサモジュール10は、データ用のメインメモリ121及び122に加え、チェックビットを保持するためのEDC用のメインメモリ141を有する。これにより、プロセッサモジュール10の稼働率が向上する。例えば、異常が発生した場合であっても、チェックビットを用いた誤り訂正により、プロセッサモジュール10は稼働を継続させることができる。
【0049】
メインメモリ121は、第1のメモリの一例である。また、メインメモリ122は、第2のメインメモリの一例である。メインメモリ121には、プロセッサ111の演算によって得られたデータが書き込まれる。メインメモリ122には、プロセッサ112の演算によって得られたデータが書き込まれる。
【0050】
メインメモリ141は、第3のメモリの一例である。メインメモリ141は、インタフェースコントローラ131及びインタフェースコントローラ132と接続される。メインメモリ141には、プロセッサ111の演算によって得られたデータとプロセッサ112の演算によって得られたデータが同じである場合に、プロセッサ111の演算によって得られたデータのチェックビット又はプロセッサ112の演算によって得られたデータのチェックビット(いずれも同じチェックビット)が書き込まれる。
【0051】
インタフェースコントローラ131とメインメモリ121との間のデータ線のバス幅は32ビットである。インタフェースコントローラ131とメインメモリ121との間のデータストローブ線のバス幅は8ビットである。インタフェースコントローラ131とメインメモリ121との間のアドレス線のバス幅は35ビットである。
【0052】
また、インタフェースコントローラ132とメインメモリ122との間のデータ線のバス幅は32ビットである。インタフェースコントローラ132とメインメモリ122との間のデータストローブ線のバス幅は8ビットである。インタフェースコントローラ132とメインメモリ122との間のアドレス線のバス幅は35ビットである。
【0053】
また、インタフェースコントローラ131及びインタフェースコントローラ132とメインメモリ141との間のデータ線のバス幅は8ビットである。インタフェースコントローラ131及びインタフェースコントローラ132とメインメモリ141との間のデータストローブ線のバス幅は2ビットである。インタフェースコントローラ131及びインタフェースコントローラ132とメインメモリ141との間のアドレス線のバス幅は35ビットである。
【0054】
例えば、インタフェースコントローラ131とメインメモリ121との間のデータ線が32ビットであるため、インタフェースコントローラ131は、8ビットのチェックビットを付けることで、1ビットの誤り検出、1ビットの誤り訂正及び2ビットの誤り検出を行うことができる。また、インタフェースコントローラ131は、チェックビットをメインメモリ141にライトする。
【0055】
図11に示すように、従来のプロセッサモジュール10aは、2つのEDC用のメインメモリを有する。これに対し、
図1に示す第1の実施形態のプロセッサモジュール10は、1つのEDC用のメインメモリ141を有する。このように、第1の実施形態のプロセッサモジュール10の部品数は、従来のプロセッサモジュール10aと比べて少ない。
【0056】
なお、プロセッサモジュール10は、外部の装置との間でデータの送受信を行うためのインタフェースを備えていてもよい。
【0057】
ここで、インタフェースコントローラ131、インタフェースコントローラ132及び照合器133は、データの入出力及び演算を行う個別の回路としてコントローラ(FPGA130)上に設けられてもよい。また、インタフェースコントローラ131、インタフェースコントローラ132及び照合器133は、コントローラ上で動作するプログラムとして実現されてもよい。
【0058】
図2を用いて、インタフェースコントローラ131の構成を説明する。
図2は、第1の実施形態に係るインタフェースコントローラの構成例を示す図である。
【0059】
図2に示すように、インタフェースコントローラ131は、入出力部1311、メモリリード部1312、メモリライト部1313、チェックビット計算部1314、誤り検出部1315及び誤り訂正部1316を有する。
【0060】
入出力部1311は、データの入出力を行うためのインタフェースである。メモリリード部1312は、メモリからのデータの読み込み(リード)を行う。メモリライト部1313は、メモリへのデータの書き込み(ライト)を行う。
【0061】
チェックビット計算部1314は、データのチェックビットを計算する。誤り検出部1315は、チェックビットを使ってデータの誤りを検出する。誤り検出部1315は、チェックビットを使ってデータの誤りを検出する。誤り訂正部1316は、チェックビットを使ってデータの誤りを訂正する。
【0062】
図3を用いて、インタフェースコントローラ132の構成を説明する。
図3は、第1の実施形態に係るインタフェースコントローラの構成例を示す図である。
【0063】
図3に示すように、インタフェースコントローラ132は、入出力部1321、メモリリード部1322、メモリライト部1323、チェックビット計算部1324、誤り検出部1325及び誤り訂正部1326を有する。
【0064】
インタフェースコントローラ132の各処理部の機能は、インタフェースコントローラ131の各処理部の機能と同等である。
【0065】
図4を用いて、照合器の構成を説明する。
図4は、第1の実施形態に係る照合器の構成例を示す図である。
【0066】
図4に示すように、照合器133は、入出力部1331及び判定部1332を有する。
【0067】
入出力部1331は、データの入出力を行うためのインタフェースである。判定部1332は、2つのデータが一致するか否かを判定する。例えば、判定部1332は、インタフェースコントローラ131から入力されたデータと、インタフェースコントローラ132から入力されたデータと、が一致するか否かを判定する。
【0068】
[第1の実施形態の処理の流れ]
(書き込み処理)
図5を用いて、プロセッサモジュール10による、メインメモリへのライトアクセス、すなわちデータの書き込み(ライト)処理を説明する。
図5は、第1の実施形態に係るプロセッサモジュールの書き込み処理の流れを示すフローチャートである。
【0069】
まず、各プロセッサがデータ用メインメモリにデータをライトする(ステップS111)。すなわち、プロセッサ111は、演算によって得られたデータをメインメモリ121にライトする。また、プロセッサ112は、演算によって得られたデータをメインメモリ122にライトする。
【0070】
次に、各インタフェースコントローラがデータのチェックビットを計算する(ステップS112)。すなわち、インタフェースコントローラ131は、プロセッサ111がライトするデータのチェックビットを計算する。また、インタフェースコントローラ132は、プロセッサ112がライトするデータのチェックビットを計算する。
【0071】
続いて、照合器133が、データのチェックビット同士を照合する(ステップS113)。すなわち、照合器133は、インタフェースコントローラ131が計算したチェックビットと、インタフェースコントローラ132が計算したチェックビットと、が一致するか否かを判定する。
【0072】
なお、プロセッサ111及びプロセッサ112は同じ演算を行う。そのため、異常が発生していなければ、プロセッサ111がライトするデータとプロセッサ112がライトするデータは同じである。その場合、プロセッサ111がライトするデータのチェックビットとプロセッサ112がライトするデータのチェックビットは等しい。
【0073】
データのチェックビットが一致する場合(ステップS114、Yes)、インタフェースコントローラがEDC用のメインメモリにデータのチェックビットをライトする(ステップS115)。すなわち、インタフェースコントローラ131又はインタフェースコントローラ132は、計算したチェックビットをメインメモリ141にライトする。
【0074】
データのチェックビットが一致しない場合(ステップS114、No)、プロセッサモジュール10は書き込み処理を終了する。このとき、プロセッサモジュール10は、プロセッサ111及びプロセッサ112によるデータのライトを取り消してもよい。また、プロセッサモジュール10は、プロセッサ111及びプロセッサ112によってライトされたデータが一致しないことを、他の装置等に通知してもよい。
【0075】
(読み出し処理)
図6を用いて、第1の実施形態のプロセッサモジュール10による、メインメモリへのリードアクセス、すなわちデータの読み出し(リード)処理を説明する。
図6は、第1の実施形態に係るプロセッサモジュールの読み出し処理の流れを示すフローチャートである。
【0076】
まず、各プロセッサがデータ用メインメモリからデータをリードする(ステップS121)。すなわち、プロセッサ111は、メインメモリ121からデータをリードする。また、プロセッサ112は、メインメモリ122からデータをリードする。
【0077】
次に、照合器133がデータ同士を照合する(ステップS122)。すなわち、照合器133は、メインメモリ121からリードされたデータと、メインメモリ122からリードされたデータと、が一致するか否かを判定する。
【0078】
データが一致しない場合(ステップS123、No)、インタフェースコントローラ131又はインタフェースコントローラ132が異常の発生を検出する(ステップS124)。すなわち、インタフェースコントローラ131又はインタフェースコントローラ132は、異常を検出し、以下の処理を行う。ここでは、インタフェースコントローラ131が異常を検出するものとする。
【0079】
インタフェースコントローラ131は、EDC用のメインメモリ141からデータのチェックビットをリードし(ステップS125)、リードしたチェックビットを用いてデータの誤り訂正を行う(ステップS126)。
【0080】
一方、データが一致する場合(ステップS123、Yes)。プロセッサモジュール10は、読み出し処理を終了する。
【0081】
また、プロセッサモジュール10は、異常の発生を検出した場合であって、誤り訂正によって当該異常を解消できない場合、異常が発生したことを他の装置に通知し、動作を停止してもよい。その後、プロセッサモジュール10による処理は、プロセッサモジュール10と同等の機能を持つ他の装置に引き継がれてもよい。
【0082】
[第1の実施形態の効果]
第1の実施形態によれば、従来のプロセッサモジュールと同等の異常検出率及び稼働率を維持しつつ、部品数を減らしたプロセッサモジュールを提供することができる。その結果、プロセッサモジュールを含むプロセッサの多重化に伴う部品数の増加が抑止される。
【0083】
[第2の実施形態]
第1の実施形態からさらに、インタフェースコントローラが入出力する信号を削減した第2の実施形態について説明する。第2の実施形態の説明では、第1の実施形態と共通する部分の説明は適宜省略する。例えば、第2の実施形態におけるインタフェースコントローラ131、インタフェースコントローラ132及び照合器133の構成は、それぞれ
図2、
図3及び
図4に示した通りである。
【0084】
[第2の実施形態の構成]
図7を用いて、第2の実施形態のプロセッサモジュールの構成を説明する。
図7は、第2の実施形態に係るプロセッサモジュールの構成例を示す図である。
【0085】
図7に示すように、第2の実施形態のプロセッサモジュール10は、第1の実施形態と比べてEDC用のメインメモリの接続方法が異なる。メインメモリ123は、第3のメモリの一例である。
【0086】
図7に示すように、EDC用のメインメモリ123は、インタフェースコントローラ131と接続される。一方で、EDC用のメインメモリ123は、インタフェースコントローラ132とは接続されない。このように、メインメモリ123は、インタフェースコントローラ131及びインタフェースコントローラ132のうち、インタフェースコントローラ131のみと接続される。
【0087】
インタフェースコントローラ131とメインメモリ121及びメインメモリ123との間のアドレス線のバス幅は35ビットである。また、インタフェースコントローラ131は、チェックビットをメインメモリ123にライトする。
【0088】
[第2の実施形態の処理の流れ]
第2の実施形態の処理の流れは、第1の実施形態の処理の流れと同様である。ただし、複数のインタフェースコントローラのうち、EDC用のメインメモリが接続されたインタフェースコントローラ(例えば、
図7のインタフェースコントローラ131)が、書き込み処理時におけるチェックビットのライト、及び読み出し処理時における異常の発生の検出及びチェックビットのリードを行う。
【0089】
[第2の実施形態の効果]
第2の実施形態によれば、第1の実施形態からさらにインタフェースコントローラの信号数を減らすことができる。また、第2の実施形態によれば、少なくともインタフェースコントローラとデータ用のメインメモリ及びEDC用のメインメモリを接続するアドレス線を共通化することができる。
【0090】
[第3の実施形態]
第2の実施形態からさらに、異常を検出する能力を向上させた第3の実施形態について説明する。第3の実施形態の説明では、第1の実施形態又は第2の実施形態と共通する部分の説明は適宜省略する。例えば、第3の実施形態におけるインタフェースコントローラ131、インタフェースコントローラ132及び照合器133の構成は、それぞれ
図2、
図3及び
図4に示した通りである。
【0091】
[第3の実施形態の構成]
図8を用いて、第3の実施形態のプロセッサモジュールの構成を説明する。
図8は、第3の実施形態に係るプロセッサモジュールの構成例を示す図である。
【0092】
図8に示すように、第3の実施形態のプロセッサモジュール10は、第2の実施形態と比べて、EDC用のメモリと接続されるデータ線及びデータストローブ線のバス幅が異なる。
【0093】
図7に示すように、第2の実施形態におけるインタフェースコントローラ131とメインメモリ123との間のデータ線及びデータストローブ線のバス幅は、それぞれ8ビット及び2ビットである。
【0094】
一方、
図8に示すように、第3の実施形態におけるインタフェースコントローラ131とメインメモリ123との間のデータ線及びデータストローブ線のバス幅は、それぞれ16ビット及び4ビットである。
【0095】
第3の実施形態では、バス幅の大きさを利用して、前記第3のメモリには、プロセッサ111の演算によって得られたデータが書き込まれるメインメモリ121のアドレスのチェックビットがさらに書き込まれる。
【0096】
これにより、第3の実施形態によれば、EDC用のメインメモリと接続された方のインタフェースコントローラに対応するデータ用のメインメモリ(
図8のメインメモリ121)のアドレス線に異常が発生したこと、及びデータ用のメインメモリからの読み出し時に、誤ったアクセス先のデータが正しいデータと1ビットだけ異なること、を検出することができる。
【0097】
[第3の実施形態の処理の流れ]
(書き込み処理)
図9を用いて、第3の実施形態のプロセッサモジュール10による、メインメモリへのライトアクセス、すなわちデータの書き込み(ライト)処理を説明する。
図9は、第3の実施形態に係るプロセッサモジュールの書き込み処理の流れを示すフローチャートである。
【0098】
まず、各プロセッサがデータ用メインメモリにデータをライトする(ステップS311)。すなわち、プロセッサ111は、演算によって得られたデータをメインメモリ121にライトする。また、プロセッサ112は、演算によって得られたデータをメインメモリ122にライトする。
【0099】
次に、各インタフェースコントローラがデータのチェックビットを計算する(ステップS312)。すなわち、インタフェースコントローラ131は、プロセッサ111がライトするデータのチェックビットを計算する。また、インタフェースコントローラ132は、プロセッサ112がライトするデータのチェックビットを計算する。
【0100】
さらに、各インタフェースコントローラがアドレスのチェックビットを計算する(ステップS313)。すなわち、インタフェースコントローラ131は、プロセッサ111がデータをライトするメインメモリ121のアドレスのチェックビットを計算する。また、インタフェースコントローラ132は、プロセッサ112がデータをライトするメインメモリ122のアドレスのチェックビットを計算する。
【0101】
続いて、照合器133が、データのチェックビット同士を照合する(ステップS314)。すなわち、照合器133は、インタフェースコントローラ131が計算したデータのチェックビットと、インタフェースコントローラ132が計算したデータのチェックビットと、が一致するか否かを判定する。
【0102】
さらに、照合器133が、アドレスのチェックビット同士を照合する(ステップS315)。すなわち、照合器133は、インタフェースコントローラ131が計算したアドレスのチェックビットと、インタフェースコントローラ132が計算したアドレスのチェックビットと、が一致するか否かを判定する。
【0103】
データのチェックビット及びアドレスのチェックビットの両方が一致する場合(ステップS316、Yes)、インタフェースコントローラがEDC用のメインメモリにデータのチェックビット及びアドレスのチェックビットの両方をライトする(ステップS317)。すなわち、インタフェースコントローラ131は、計算したチェックビットをメインメモリ123にライトする。
【0104】
データのチェックビット及びアドレスのチェックビットの少なくともいずれかが一致しない場合(ステップS316、No)、プロセッサモジュール10は書き込み処理を終了する。このとき、プロセッサモジュール10は、プロセッサ111及びプロセッサ112によるデータのライトを取り消してもよい。また、プロセッサモジュール10は、プロセッサ111及びプロセッサ112によってライトされたデータが一致しないことを、他の装置等に通知してもよい。
【0105】
(読み出し処理)
図10を用いて、第3の実施形態のプロセッサモジュール10による、メインメモリへのリードアクセス、すなわちデータの読み出し(リード)処理を説明する。
図10は、第3の実施形態に係るプロセッサモジュールの読み出し処理の流れを示すフローチャートである。
【0106】
まず、各プロセッサがデータ用メインメモリからデータをリードする(ステップS321)。すなわち、プロセッサ111は、メインメモリ121からデータをリードする。また、プロセッサ112は、メインメモリ122からデータをリードする。
【0107】
ここで、インタフェースコントローラ131が、EDC用のメインメモリ123からアドレスのチェックビットをリードする(ステップS322)。そして、インタフェースコントローラ131は、アドレスのチェックビットを用いて、プロセッサ111及びプロセッサ112によってリードされたアドレスが正しいかを確認する(ステップS323)。
【0108】
アドレスが正しい場合(ステップS324、Yes)、照合器133がリードされたデータ同士を照合する(ステップS326)。すなわち、照合器133は、メインメモリ121からリードされたデータと、メインメモリ122からリードされたデータと、が一致するか否かを判定する。
【0109】
データが一致しない場合は、インタフェースコントローラ131は異常の発生を検出する(ステップS327)。そして、インタフェースコントローラ131は、EDC用のメインメモリ123からデータのチェックビットをリードし(ステップS328)、リードしたチェックビットを用いてデータの誤り訂正を行う(ステップS329)。
【0110】
ステップS326でデータが一致する場合、プロセッサモジュール10は、誤り訂正を行うことなく読み出し処理を終了する。また、アドレスが正しくない場合(ステップS324、No)、インタフェースコントローラ131は異常の発生を検出し(ステップS325)、処理を終了する。
【0111】
[第3の実施形態の効果]
第3の実施形態によれば、アドレスのチェックビットをEDC用のメインメモリに保存しておくことができるため、前述の通り下記の異常を検出することができ、異常の検出率が向上する。
・EDC用のメインメモリと接続された方のインタフェースコントローラに対応するデータ用のメインメモリ(
図8のメインメモリ121)のアドレス線に異常が発生したこと。
・データ用のメインメモリからの読み出し時に、誤ったアクセス先のデータが正しいデータと1ビットだけ異なること。
【0112】
[システム]
上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【0113】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散や統合の具体的形態は図示のものに限られない。つまり、その全部又は一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。
【0114】
また、各実施形態のプロセッサモジュールは、SISに限らず、DCS等の他のFA(Factory Automation)機器に適用されてもよい。
【0115】
さらに、FPGA130にて行なわれる各処理機能は、その全部又は任意の一部が、CPU及び当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。インタフェースコントローラ131、インタフェースコントローラ132及び照合器133は、それぞれFPGA上の異なる回路により実現されてもよい。
【0116】
また、FPGA130は、インタフェースコントローラ131、インタフェースコントローラ132及び照合器133と同様の処理を実行するプログラムをメモリに展開することで、各機能を実行するプロセスを動作させる。
【0117】
また、FPGA130は、媒体読取装置によって記録媒体から上記プログラムを読み出し、読み出された上記プログラムを実行することで上記した実施形態と同様の機能を実現することもできる。
【0118】
また、このプログラムは、インターネット等のネットワークを介して配布することができる。また、このプログラムは、ハードディスク、フレキシブルディスク(FD)、CD-ROM、MO(Magneto-Optical disk)、DVD(Digital Versatile Disc)等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行することができる。
【符号の説明】
【0119】
10 プロセッサモジュール
111、112 プロセッサ
121、122、123、141 メインメモリ
131、132 インタフェースコントローラ
133 照合器
1311、1321、1331 入出力部
1312、1322 メモリリード部
1313、1323 メモリライト部
1314、1324 チェックビット計算部
1315、1325 誤り検出部
1316、1326 誤り訂正部
1332 判定部