JP2009251854A - データ処理装置及び同期方法 - Google Patents

データ処理装置及び同期方法 Download PDF

Info

Publication number
JP2009251854A
JP2009251854A JP2008097889A JP2008097889A JP2009251854A JP 2009251854 A JP2009251854 A JP 2009251854A JP 2008097889 A JP2008097889 A JP 2008097889A JP 2008097889 A JP2008097889 A JP 2008097889A JP 2009251854 A JP2009251854 A JP 2009251854A
Authority
JP
Japan
Prior art keywords
count value
data
time
unit
time counter
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008097889A
Other languages
English (en)
Other versions
JP5380884B2 (ja
Inventor
Tomoaki Mizuno
智陽 水野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008097889A priority Critical patent/JP5380884B2/ja
Publication of JP2009251854A publication Critical patent/JP2009251854A/ja
Application granted granted Critical
Publication of JP5380884B2 publication Critical patent/JP5380884B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】より耐故障性の高いデータ処理装置を提供する。
【解決手段】I/Oデバイス30AからCPU部20Aへ送信されるデータパケット50は、送信時の時刻カウンタ21Aのカウント値が付加されて、他のシステム1Bにも送信されるようになっている。受信部23Aは、I/Oデバイス30AからCPU部20Aに送信されるデータパケット50を受信するとともに、他のシステム1Bから送信されたデータパケット50も受信するが、それぞれのデータパケット50の受信時に時刻カウンタ21Aのカウント値(第3、第4のカウント値)を取得する。第3のカウント値と、第4のカウント値とに基づいて、時刻カウンタ21Aと時刻カウンタ21Bとのカウントずれが算出され、算出されたカウントずれに基づいて、時刻カウンタ21AやCPU部20Aに入力されるクロック信号の周波数が調整される。
【選択図】図1

Description

本発明は、各々がプロセッサと入出力部とを有する少なくとも2つのシステムを備えるデータ処理装置と、各々がプロセッサと入出力部と時刻カウンタとを有し、異なるクロック源からのクロック信号で動作する少なくとも2つのシステムの同期をとる同期方法とに関する。
高度な信頼性を提供するコンピュータとして、フォールト・トレラント・コンピュータ(以下、「FTコンピュータ」と略述する)がある(例えば、特許文献1参照)。FTコンピュータは、同一のハードウエア構成を有するモジュールが二重化又は多重化された冗長構成となっている。二重化又は多重化された全てのモジュールは同期して動作する。そのため、例えばあるモジュールで故障が発生したとしても、そのモジュールを切り離し、正常なモジュールだけで処理を続行することができる。これにより、モジュールの故障に対する耐性が向上し、高度な信頼性が得られるようになる。
FTコンピュータの各モジュールには、プロセッサ及びメモリを有するCPUサブシステムが含まれている。各CPUサブシステムには、同一のソフトウエアが組み込まれている。各CPUサブシステムは、同じタイミングのクロック信号と同一のデータとを与えると、正常であれば必ず同じ動作をする。この特性を、デターミニズムと呼ぶ。このデターミニズムに基づき、複数のCPUサブシステムが全く同じ動作をしている状態を、ロックステップ同期と呼ぶ。FTコンピュータでは、各モジュールのCPUサブシステムをロックステップ同期させることにより、二重化処理又は多重化処理が実現されている。
各CPUサブシステムに入力される同じタイミングのクロック信号を入力させる方法としては、CPUサブシステム間でクロック源を共通化する方法と、出力周波数が同じ複数のクロック源を用いる方法との2つが考えられる。
しかしながら、クロック源を共通化した場合には、そのクロック源が故障すれば、FTコンピュータのすべてのモジュールを停止せざるをえなくなる。また、1つのクロック信号をすべてのモジュールに入力するための配線が必要となるため、装置の機構設計の自由度が著しく制限されるようになる。
一方、複数のクロック源を用いた場合には、各クロック源の出力周波数の微小なばらつきにより、時間経過とともに、それぞれのクロック源から出力されるクロック信号にずれが生じてくる。そこで、各CPUサブシステムが同時に実行する命令については、クロック信号の周波数が最も低く、実行速度の遅いCPUサブシステムにすべてのCPUサブシステムの実行タイミングを合わせる方法が開示されている(例えば、特許文献2参照)。また、クロック信号の位相差を検出し、その位相差に基づいてクロック信号の周波数を調整するデータ処理装置が開示されている(例えば、特許文献3参照)。さらに、時刻カウンタのカウント値を定期的にリセットするなどして、クロック信号の位相差を最小限に止め、ロックステップ同期を維持するデータ処理装置が開示されている(例えば、特許文献4、5参照)。
特開2006−172391号公報 特表2006−512634号公報 特開2005−182693号公報 特開平7−73059号公報 特開2007−249518号公報
しかしながら、実行速度の遅いCPUサブシステムにすべてのCPUサブシステムの実行タイミングを合わせた場合には、装置全体の処理速度の低下が懸念される。
また、クロック信号のずれを検出する場合には、各CPUサブシステムに入力されるクロック信号を比較するための専用のハードウエアが必要となるうえ、各モジュールのハードウエアの独立性が低下する。
また、各CPUサブシステムに入力されるクロック信号を、タイマ割り込みなどをかけて定期的にリセットする場合には、タイマ割り込みをかける時間が適切に設定されていなかったり、複数のクロック源の出力周波数のばらつきが大きすぎたりすると、ロックステップ同期を維持することが困難になる。
本発明は、上記事情に鑑みてなされたもので、より信頼性の高いデータ処理装置を提供することを目的とする。
上記目的を達成するために、本発明の第1の観点に係るデータ処理装置は、各々がプロセッサと入出力部とを有する少なくとも2つのシステムを備えるデータ処理装置であって、各前記システムは、クロック信号を出力するクロック源と、前記クロック源から出力されたクロック信号の周波数を調整して前記プロセッサに入力する調整部と、前記調整部から出力されるクロック信号に基づいて計時を行う時刻カウンタと、前記入出力部から入力されたデータを前記プロセッサに送信する際に、送信時の前記時刻カウンタの第1のカウント値と、前記プロセッサにより当該データが処理される実行予定時刻に相当する第2のカウント値とを付加して送信し、前記第1、第2のカウント値が付加されたデータを、他のシステムにも送信する第1の送信部と、前記第1の送信部から送信されたデータを受信するととともに、受信時の前記時刻カウンタの第3のカウント値を取得し、前記他のシステムの前記第1の送信部から送信されたデータを受信するとともに、受信時の前記時刻カウンタの第4のカウント値を取得する第1の受信部と、付加された前記第1のカウント値が同一であるデータ同士の前記第3、第4のカウント値に基づいて、前記時刻カウンタのカウント値と前記他のシステムの前記時刻カウンタのカウント値とのカウントずれを算出する算出部と、前記算出部で算出されたカウントずれに基づいて、前記調整部を制御する制御部と、前記時刻カウンタのカウント値が第2のカウント値となるまで、前記プロセッサに対する、前記第1の受信部で受信されたデータの入力を保留する保留部と、前記プロセッサから入力されたデータを前記入出力部に送信する第2の送信部と、前記第2の送信部から送信されたデータを受信して前記入出力部に出力する第2の受信部と、を備える。
また、本発明の第2の観点に係る同期方法は、各々がプロセッサと入出力部と時刻カウンタとを有し、異なるクロック源からのクロック信号で動作する少なくとも2つのシステムの同期をとる同期方法であって、前記入出力部から入力されたデータを前記プロセッサに送信する際に、送信時の前記時刻カウンタの第1のカウント値と、前記プロセッサにより当該データが処理される実行予定時刻に相当する第2のカウント値とを付加して送信し、前記第1、第2のカウント値が付加されたデータを、他のシステムにも送信する第1の工程と、前記第1の工程で送信されたデータを受信するととともに、受信時の前記時刻カウンタの第3のカウント値を取得し、前記他のシステムから送信されたデータを受信するとともに、受信時の前記時刻カウンタの第4のカウント値を取得する第2の工程と、付加された前記第1のカウント値が同一であるデータ同士の前記第3、第4のカウント値に基づいて、前記時刻カウンタのカウント値と前記他のシステムの前記時刻カウンタのカウント値とのカウントずれを算出する第3の工程と、前記第3の工程で算出されたカウントずれに基づいて、前記クロック信号の周波数を調整する第4の工程と、前記時刻カウンタのカウント値が前記第2のカウント値となるまで、前記プロセッサに対する、前記第2の工程で受信されたデータの入力を保留する第5の工程と、を含む。
本発明によれば、より信頼性の高いデータ処理装置を提供することができる。
≪第1の実施形態≫
次に、本発明の第1の実施形態について図面を参照して詳細に説明する。
図1には、本発明の第1の実施形態に係るデータ処理装置100の構成が示されている。図1に示されるように、データ処理装置100は、システム1Aと、システム1Bと、クロスリンク2とを備えている。システム1Aとシステム1Bは、同一のハードウエア構成及びソフトウエア構成を有する同型のモジュールである。すなわち、データ処理装置100は、ハードウエア構成が同一で、そのハードウエア上で動作するソフトウエアも同一であるシステムが二重化された冗長構成を有するFTコンピュータである。
クロスリンク2は、システム1Aとシステム1Bとの間における相互のデータ送受信を可能とするデータ伝送路である。システム1Aの各構成要素の符号には、数字にAを付け足したものが用いられている。また、その構成要素に対応するシステム1Bの構成要素には、同一の数字にBを付け足したものが用いられている。以下では、主としてシステム1Aの構成要素について説明するが、システム1Bの各構成要素については、システム1Aの対応する構成要素と同じ機能を有しているものとして必要に応じて説明する。
システム1Aは、クロック源10A、調整部としてのPLL(位相同期回路)11A、CPUサブシステム12A、I/Oサブシステム13Aと、を備えている。
クロック源10Aは、例えば、水晶発振子などを備え、所定の周波数のクロック信号を出力している。
PLL11Aは、設定されたパラメータに従って、クロック源10Aから出力されたクロック信号の周波数を微調整する。PLL11Aからは、周波数が調整されたクロック信号が出力される。PLL11Aによって周波数が調整されたクロック信号は、CPUサブシステム12Aに入力されている。
CPUサブシステム12Aは、CPU(中央処理装置)とメモリ(主記憶装置)とを備えるCPU部20Aを中心として構成されたシステム1Aのサブシステムである。CPU部20Aは、一連の命令列を実行するもので、任意の数のCPU、任意の容量のメモリと、それらを相互接続する内部バス(いずれも不図示)とを有している。CPU部20AのCPUは、クロック源10AからPLL11Aを介して入力されるクロック信号に従って、入力されたデータを用いて、メモリに格納された一連の命令列(プログラム)を実行する。このような命令列には、データの入出力命令や、データの演算命令や、分岐などのプログラムの制御命令などが含まれている。
CPUサブシステム12Aには、時刻カウンタ21Aがさらに設けられている。時刻カウンタ21Aは、PLL11Aを介して入力されるクロック信号に基づいて、計時を行う。時刻カウンタ21Aは、不図示のリセット信号が入力された場合には、カウント値をリセットする。時刻カウンタ21Aは、リセット後、クロック源10AからPLL11Aを介して入力されるクロック信号の例えば立ち上がりで、カウント値をインクリメントする。時刻カウンタ21Aは、リセットされてからのクロックサイクル数を保持している。時刻カウンタ20Aのカウント値は、CPUサブシステム12Aを構成するCPU部20A、後述する送信部22A、受信部23A、パケット処理部24A、PLL制御部25Aなどから常に参照することができるようになっている。さらに、時刻カウンタ21Aのカウント値は、専用のサイドバンド信号により、CPUサブシステム12Aから、I/Oサブシステム13Aに常時送信されている。
なお、CPU部20Aでは、後述するもう一方のシステム1BのCPU部20Bが実行するプログラムと同じプログラムが実行される。CPUサブシステム12Aは、プロセッサとしてのCPU部20Aの他に、送信部22Aと、受信部23Aと、パケット処理部24Aと、PLL制御部25Aと、を備えているが、これらの詳細については後述する。
I/Oサブシステム13Aは、入出力部としてのI/Oデバイス(図では、単にI/O)30Aを中心として構成されたシステム1Aのサブシステムである。I/Oデバイス30Aは、不図示の外部機器との間でデータの入出力を行う入出力インターフェイスである。I/Oデバイス30Aは、SCSIコントローラ、LANアダプタ等の任意の複数のデバイスであってもよい。I/Oサブシステム13Aは、I/Oデバイス30Aの他に、送信部32Aと、受信部33Aとを備えているが、これらの詳細については後述する。
システム1Aでは、CPUサブシステム12AのCPU部20Aと、I/Oサブシステム13AのI/Oデバイス30Aとの間で、データパケットの送受信が行われることにより、全体の動作が実現される。図2に示されるように、データパケット50には、パケット種別フィールド51、パケット長フィールド52、データフィールド53、送信時刻フィールド54、実行時刻フィールド55という複数のフィールドが設けられている。
パケット種別フィールド51には、データパケット50の種別が格納されている。パケット長フィールド52には、そのデータパケット50のパケット長が格納されている。データフィールド53には、外部機器からI/Oデバイス30Aに入力されたデータや、CPU部20Aのプログラムの実行により生成されたデータなどの実体的なデータが格納されている。パケット種別フィールド51、パケット長フィールド52と、データフィールド53とで一般データフィールドが構成されている。
データパケット50には、この一般データフィールドに加え、送信時刻フィールド54と実行時刻フィールド55とが設けられている。送信時刻フィールド54には、I/Oサブシステム13AからCPUサブシステム12Aへデータが送信される時点での時刻カウンタ21Aのカウント値(第1のカウント値)が格納される。実行時刻フィールド55には、CPU部20Aによってそのデータパケット50のデータフィールド53に含まれるデータが実行されるべき時点の時刻カウンタのカウント値(第2のカウント値)が格納される。なお、CPU部20Bにおいても、同じカウント値が、データパケット50の実行時刻フィールド55に格納される。
このようなデータパケット50の送受信及びシステム1Aとシステム1Bとのロックステップ同期(以下、単に「同期」という)を確立するために、CPUサブシステム12Aは、CPU部20A及び時刻カウンタ21Aの他に、送信部22Aと、受信部23Aと、パケット処理部24Aと、PLL制御部25Aとを備えている。また、I/Oサブシステム13Aは、I/Oデバイス30Aの他に、送信部32Aと、受信部33Aとを備えている。本実施形態に係るシステム1Aでは、I/Oサブシステム13Aの送信部32Aが第1の送信部に対応し、CPUサブシステム12Aの受信部23Aが第1の受信部に対応する。また、CPUサブシステム12Aの送信部22Aが第2の送信部に対応し、I/Oサブシステム13Aの受信部33Aが第2の受信部に対応する。
I/Oサブシステム13Aを構成する送信部32Aは、I/Oデバイス30から入力されたデータパケット50の送信時刻フィールド54に、送信時の時刻カウンタ21Aのカウント値(第1のカウント値)を格納する。そして、送信部32Aは、そのデータパケット50の実行時刻フィールド55に、CPU部20Aによってそのデータパケット50が処理される実行予定時刻に相当するカウント値(第2のカウント値)を格納する。さらに、送信部32Aは、これらのカウント値が付加されたデータパケット50を、受信部23Aに送信するとともにクロスリンク2を介して他のシステム1Bの受信部23Bにも送信する。
CPUサブシステム12Aを構成する、受信部23Aは、送信部32Aから送信されたデータパケット50を受信するととともに、そのデータパケット50の受信時の時刻カウンタ21Aのカウント値(第3のカウント値)を取得する。また、受信部23Aは、他のシステム1Bの送信部32Bから送信されたデータパケット50を受信するとともに、そのデータパケット50の受信時の時刻カウンタ21Aのカウント値(第4のカウント値)を取得する。
図3には、受信部23Aの詳細な構成が示されている。図3に示されるように、受信部23Aは、FIFO(ファースト・イン・ファースト・アウト)メモリ40A、40B、41A、41Bを備えている。
受信部23Aは、I/Oサブシステム13Aの送信部32Aから送信されたデータパケット50をFIFOメモリ40Aに保持する。受信部23Aは、第3のカウント値を、FIFOメモリ41Aに保持する。
また、受信部23Aは、もう一方のシステム1Bにおける送信部32Bから送信されたデータパケット50をFIFOメモリ40Bに保持する。受信部23Aは、第4のカウント値を、FIFOメモリ41Bに保持する。
なお、クロスリンク2のレイテンシ(システム1Aとシステム1Bのデータの送受信に要する潜在的な時間)のために、第3のカウント値と第4のカウント値との間には、時間差が生じる。したがって、システム1Bにおける送信部32Bからのデータパケット50が受信される前に、送信部32Aから新たなデータパケット50が送られてくる場合も想定される。このため、受信部23Aには、受信データが消失することのないように、FIFOメモリ40A、40B、41A、41Bが設けられている。FIFOメモリ40A、40B、41A、41Bの容量は、クロスリンク2のレイテンシと、I/Oサブシステム13AからCPUサブシステム12Aへ送信されるデータの送信頻度とのバランスを考慮して設定されるのが望ましい。また、これらの容量は、受信部23Aとパケット処理部24Aと間でのデータの入出力を過度に遅延させることがない程度とするのが望ましい。
また、受信部23Aは、FIFOメモリ41Aに格納されたデータパケット50の第3のカウント値と、FIFOメモリ41Bに格納されたデータパケット50の第4のカウント値とに基づいて、時刻カウンタ21Aのカウント値と、他のシステム1Bの時刻カウンタ21Bのカウント値とのカウントずれを算出する。カウントずれの算出のために考慮される第3のカウント値と、第4のカウント値とは、送信時刻フィールドに格納されたカウント値(第1のカウント値)が同一なデータパケット50のものが用いられる。
より具体的には、受信部23Aは、まず、第4のカウント値からクロスリンク2のレイテンシ分を差し引く。そして、受信部23Aは、その差し引かれたカウント値と、第3のカウント値との差分を算出することにより、時刻カウンタ21Aのカウント値と他のシステム1Bの時刻カウンタ21Bのカウント値とのカウントずれを算出する。このカウントずれは、データパケット50とともに、パケット処理部24Aに出力される。
パケット処理部24Aは、時刻カウンタ21Aのカウント値が、データパケット50の実行時刻フィールド55に格納されたカウント値(第2のカウント値)となるまで、受信部23Aで受信されたデータパケット50のCPU部20Aへの入力を保留する。
また、パケット処理部24Aは、受信部23Aから出力されたカウントずれが、許容値を上回っている場合には、このカウントずれを、PLL制御部25Aに出力する。
PLL制御部25Aは、パケット処理部24Aから出力されたカウントずれに基づいて、PLL11Aのパラメータを変更することにより、PLL11Aを制御する。これにより、PLL11Aから出力されるクロック信号の周波数が微調整され、システム1Aの時刻カウンタ21Aとシステム1Bの時刻カウンタ21Bとのカウントずれが小さくなる。
一方、CPUサブシステム12Aを構成する送信部22Aは、CPU部20Aから出力されたデータパケット50を入力する。送信部22Aは、入力されたデータパケット50を、I/Oサブシステム13Aの受信部33Aに送信するとともに、クロスリンク2を介して、他のシステム1Bの受信部33Bにも送信する。
I/Oサブシステム13Aを構成する受信部33Aは、送信部22Aから送信されたデータパケット50を受信してI/Oデバイス30Aに出力する。なお、受信部33Aでは、他のシステム1Bの送信部22Bからもデータパケット50を受信するが、本実施形態では、受信部33Aにおいて、他のシステム1Bから送信されたデータパケット50に対しての処理は、特に行われないものとする。
上述したように、システム1Bの構成は、システム1Aの構成と同一である。すなわち、システム1Bは、クロック源10B、PLL11B、CPUサブシステム12B、I/Oサブシステム13Bと、を備えている。CPUサブシステム12Bは、CPU部20Bと、時刻カウンタ21Bと、送信部22Bと、受信部23Bと、パケット処理部24Bと、PLL制御部25Bと、を備えている。I/Oサブシステム13Bは、I/Oデバイス30Bと、送信部32Bと、受信部33Bとを備えている。
クロック源10Aとクロック源10Bとは、同一規格のクロック源であり、同じ周波数のクロック信号を出力している。これらクロック信号は、それぞれのPLL11A、11Bを介して、CPUサブシステム12A、13Aに入力されている。すなわち、CPUサブシステム12A、12Bは、周波数が実質的に等しいクロック信号の下で動作している。
また、I/Oサブシステム13A、13Bには、外部機器から、全く同じデータが同じタイミングで入力されている。これらのデータは、正常であれば、同じタイミングで、I/Oサブシステム13A、13BからCPUサブシステム12A、12Bに送信される。そして、CPUサブシステム12AのCPU部20A、CPUサブシステム12BのCPU部20Bには、同じデータが同じタイミングで入力される。CPU部20A、20Bは、同じプログラムを実行する。したがって、CPU部20A、20Bは、デターミニズムに基づき、全く同じ動作をし、同じタイミングで同じデータを出力する。この結果、システム1A、1B間の同期が実現される。
次に、本発明の第1の実施形態に係るデータ処理装置100の動作について図4〜図6のフローチャート及び図7(A)〜図7(C)を参照して詳細に説明する。本実施形態では、システム1Aの動作とシステム1Bの動作とは同じであるため、主としてシステム1Aの動作について説明する。まず、外部機器からI/Oデバイス30Aに入力されたデータが、CPU部20Aに入力されるまでのシステム1Aの動作について説明する。
送信部32Aの動作について説明する。図4には、送信部32Aの動作のフローチャートが示されている。電源投入後、不図示のリセット信号が入力されると、送信部32Aの動作が開始される。まず、ステップ201において、送信部32Aは、初期化処理を行う。初期化処理後、ステップ203において、送信部32Aは、I/Oデバイス30Aからデータパケット50が入力されるまで待つ。
I/Oデバイス30Aからデータパケット50が入力されると、ステップ203における判定が肯定され、送信部32Aは、ステップ205に進む。ステップ205において、送信部32Aは、送信時刻フィールド54に時刻カウンタ21Aの現在のカウント値を格納し、実行時刻フィールド55にCPU部20の実行時刻に相当するカウント値を格納し、そのデータパケット50を、受信部23Aに送信するとともに、他のシステム1Bの受信部23Bにも送信する。
図7(A)には、送信部32Aにおけるデータパケット50の送信時刻フィールド54に格納されるカウント値、実行時刻フィールド55に格納されるカウント値の設定例が示されている。図7(A)に示されるクロックパルスは、CPUサブシステム12Aに入力されるクロック信号を示している。
ここで、送信部32Aにおけるデータパケット50の送信時がカウント値t1の時点であったとする。この場合、送信部32Aは、カウント値t1を、送信時刻フィールド54に格納する。
送信部32Aから受信部23Aへのデータの送信に要する時間を時間Sとし、クロスリンクのレイテンシをLとする。これらの時間S、Lは、既知である。また、CPU部20A、20Bの処理の時間差の許容値をPとする。送信部32Aは、カウント値t1に、時間Sと、時間Lと、許容値Pとを加算することにより得られるカウント値t2を、実行時刻フィールド55に格納する。すなわち、実行時刻フィールド55に格納されるカウント値としては、現在の時刻カウンタ21Aのカウント値に、クロスリンク2のレイテンシとCPU部20A、20B間のずれの許容値とを加算した値が設定されるのが望ましい。
なお、受信部23Aで送信部32Aから送信されたデータパケット50が受信されるのは、時間S経過後の時点、すなわち時刻カウンタ21Aのカウント値がt3となる時点となる。また、受信部23Aで、システム1Bの送信部32Bから送信されたデータパケット50が受信されるのは、時刻カウンタ21A、21Bの間にカウントずれがなければ、時刻カウンタ21Aのカウント値がt4となる時点となる。
図4に戻り、データパケット50の送信後は、再びステップ203に戻り、次のデータパケット50がI/Oデバイス30Aから入力されるまで待つ。
このように、送信部32Aは、I/Oデバイス30Aからデータパケット50が入力される度に、そのデータパケット50の送信時刻フィールド54と実行時刻フィールド55とに、それぞれのカウント値を格納して、データパケット50を受信部23A、23Bに送信している。
次に、受信部23Aの動作について説明する。図5には、受信部23Aの動作を示すフローチャートが示されている。図5に示されるように、電源投入後、不図示のリセット信号が入力されると、受信部23Aの動作が開始され、まず、ステップ301において、受信部23Aは、初期化処理を行う。初期化処理後、ステップ303において、受信部23Aは、データパケット50が受信されるまで待つ。
送信部32Aからデータパケット50が受信され、FIFOメモリ40Aに格納されると、ステップ303における判定が肯定され、受信部23Aはステップ305に進む。なお、受信部23Aでは、送信部32Aからデータパケット50の受信が完了すると同時に、その受信時の時刻カウンタ21Aのカウント値(第3のカウント値、図7(A)のt3)が、FIFOメモリ41Aに格納される。
ステップ305では、受信部23Aは、送信時刻フィールド54に格納されたカウント値(第1のカウント値)が同じデータパケット50が、他のシステム1Bから受信されたか否かを判定する。受信部23Aは、この判定が肯定されればステップ309に進み、否定されればステップ303に戻る。
ステップ303では、受信部23Aは、再びデータパケット50の受信待ちとなる。ここで、送信部32Aからのデータパケット50が受信されるか、他のシステム1Bの送信部32Bからのデータパケット50が受信されると、受信部23Aは、ステップ305に進む。
送信部32Aからのデータパケット50が受信された場合には、受信されたデータパケット50が、FIFOメモリ40Aに格納され、その受信時の時刻カウンタ21Aのカウント値がFIFOメモリ41Aに格納される。そして、ステップ305の判定が否定され、受信部23Aは、ステップ303に戻る。
一方、他のシステム1Bの送信部32Bからのデータパケット50が受信されると、そのデータパケット50は、FIFOメモリ40Bに格納され、受信時の時刻カウンタ21Aのカウント値(第4のカウント値、図7(A)のt4)がFIFOメモリ41Bに格納される。受信された他のシステム1Bからのデータパケット50は、正常な状態であれば、FIFOメモリ40Aに先に格納されたデータパケット50と、送信時刻フィールド54に格納されたカウント値(第1のカウント値)が同一のデータパケットである。FIFOメモリ40Bに格納されたデータパケット50の送信時刻フィールド54に格納されたカウント値が、FIFOメモリ40Aに格納されたデータパケット50のそれと同一であった場合には、ステップ305における判定が肯定され、受信部23Aは、ステップ309に進む。
ステップ309では、FIFOメモリ41Aに格納された第3のカウント値と、そのデータと送信時刻フィールドが同一であるFIFO41Bに格納された第4のカウント値とに基づいて、時刻カウンタ21Aのカウント値と、他のシステム1Bの時刻カウンタ21Bのカウント値とのカウントずれを算出する。
図7(A)に示されるように、FIFOメモリ41Aに格納されたカウント値がt3であり、FIFOメモリ41Bに格納されたカウント値がt4であったとする。受信部23Aは、カウント値t4からクロスリンク2のレイテンシLを差し引いた値と、カウント値t3との差を、時刻カウンタ21Aのカウント値と、時刻カウンタ21Bのカウント値とのカウントずれとして算出する。図7(A)では、このカウントずれは0となる。
これに対して、図7(B)に示されるように、CPUサブシステム12Aに入力されるクロック信号(上段の信号)に対して、CPUサブシステム12Bに入力されるクロック信号(下段の信号)が遅れていた場合を考える。このような遅れは、両システムのクロック信号の周波数の違いによりもたらされる。クロック源10Aのクロック信号の周波数と、クロック源10Bのクロック信号の周波数とが、わずかに異なっていると、時刻カウンタ21Aがカウントされるタイミングと、時刻カウンタ21Bがカウントされるタイミングとの間にはずれが生じ、そのずれが累積して、カウントずれとなって現れるのである。
図7(B)に示される例では、システム1Bからのデータパケット50が受信部23Aで受信される時点は、カウント値t4に相当する時点ではなく、その時点からクロック信号の時間差dだけ遅れた時点、すなわちカウント値t4’に相当する時点となる。受信部23Aは、カウント値t4’からクロスリンク2のレイテンシLを差し引いた値と、カウント値t3との差を、時刻カウンタ21Aのカウント値と、時刻カウンタ21Bのカウント値とのカウントずれとして算出する。ステップ309では、このようにして、カウントずれdが算出される。
図5に戻り、次のステップ311では、受信部23Aは、FIFOメモリ40Aに格納されたデータパケット50をパケット処理部24Aに出力する。このとき、ステップ309で算出されたカウントずれも、あわせてパケット処理部24Aに出力される。
次に、パケット処理部24Aの動作について説明する。図6には、パケット処理部24Aの動作のフローチャートが示されている。図6に示されるように、電源投入後、不図示のリセット信号が入力されると、パケット処理部24Aの動作が開始され、まず、ステップ401において、パケット処理部24Aは、初期化処理を行う。初期化処理後、ステップ403において、パケット処理部24Aは、受信部23Aからデータパケット50及びカウントずれが入力されるまで待つ。
データパケット50が入力されると、パケット処理部24Aは、ステップ405に進む。ステップ405では、パケット処理部24Aは、時刻カウンタ21Aのカウント値が、実行時刻フィールド55に格納されたカウント値となるまで待つ。時刻カウンタ21Aのカウント値が、実行時刻フィールド55に格納されたカウント値となると、パケット処理部24Aは、ステップ407に進む。ステップ407では、CPU部20Aにデータパケット50を入力する。これにより、CPU部20Aでは、実行時刻フィールド55に格納されたカウント値に相当する時点で、データパケット50に基づく処理が実行されるようになる。例えば、図7(A)に示される例では、時刻カウンタ21Aのカウント値がt2となった時点で、CPU部20Aにデータパケット50が入力され、このデータパケット50のデータフィールド53に格納されたデータを用いた処理が実行されるようになる。
次のステップ409では、パケット処理部24Aは、受信部23Aから入力したカウントずれの絶対値が閾値を超えるか否かを判定する。この判定が肯定された場合にのみステップ411が実行される。ステップ411では、パケット処理部24Aは、カウントずれを、PLL制御部25Aに出力する。PLL制御部25Aは、このカウントずれが小さくなるように、PLL11Aのパラメータを変更し、PLL11Aから出力されるクロック信号の周波数を調整する。
このように、パケット処理部24Aは、受信部23Aからデータパケット50が入力される度に、CPU部20Aへのデータパケット50の入力の時間調整と、必要な場合におけるPLL11Aの制御とを行っている。
図7(B)では、システム1Aのクロック信号の周波数の方が、システム1Bのクロック信号の周波数よりも高い場合が高くなっている。この場合、パケット処理部24Aは、このカウントずれに基づいて、PLL制御部25Aを制御し、システム1Aのクロック信号の周波数が低くなるように、すなわち、その周波数が下段のクロック信号の周波数に近づくように、PLL11Aを調整する。
なお、システム1Aで、このようなカウントずれが検出された場合には、システム1Bでも、正負が逆のカウントずれが検出されており、システム1Bにおけるクロック信号も調整されるようになるので、両システム1A、1Bのクロック信号の周波数は、それまでの両信号の周波数の中間の周波数に調整されるようにするのが望ましい。
図7(C)には、CPUサブシステム12Aに入力されるクロック信号と、CPUサブシステム12Bに入力されるクロック信号とにずれがなく、完全に同期している場合が示されている。この場合には、CPU部20A、20Bは、同じ実時刻(カウント値t4に相当する時刻)で同じ処理を実行するようになる。CPU部20A、20Bは、デターミニズムに基づき、同じ時刻に、同じデータを送信部22A、22Bに出力するようになり、送信部22A、22Bに出力されたデータは、同じ時間に、受信部33A、33Bに送信され、I/Oデバイス30A、30Bから同時に出力されるようになる。本実施形態に係るデータ処理装置100では、通常は、図7(C)に示される状態が維持される。そして、クロック源10A、11B等の特性、すなわちクロック信号の微妙なばらつきにより、図7(B)に示される状態となりかけると、上述したクロック信号の調整が行われて、図7(C)に示される状態に復帰する。これにより、ロックステップ同期が実現される。
以上詳細に説明したように、本実施形態に係るデータ処理装置100は、各々がCPU部20A、20BとI/Oデバイス30A、30Bとを有する少なくとも2つのシステム1A、1Bを備えている。システム1Aでは、I/Oデバイス30AとCPU部20Aとの間でデータパケット50の送受信が行われるが、I/Oデバイス30AからCPU部20Aへ送信されるデータパケット50は、送信時の時刻カウンタ21Aのカウント値(第1のカウント値)が付加されて、他のシステム1Bにも送信されるようになっている。さらに、受信部23Aは、I/Oデバイス30AからCPU部20Aに送信されるデータパケット50を受信するとともに、他のシステム1Bから送信されたデータパケット50も受信するが、それぞれのデータパケット50の受信時に時刻カウンタ21Aのカウント値(第3、第4のカウント値)を取得する。そして、第1のカウント値が同一であるデータ同士の第3のカウント値と、第4のカウント値とに基づいて、時刻カウンタ21Aと時刻カウンタ21Bとのカウントずれが算出され、算出されたカウントずれに基づいて、時刻カウンタ21AやCPU部20に入力されるクロック信号の周波数が調整される。
本実施形態では、システム1Bも、システム1Aと同様に動作する。
このようにすれば、各システム1A、1BのCPU部20A、20Bに入力されるクロック信号の周波数がわずかに異なり時刻カウンタ21A、21Bにカウントずれが発生しても、そのカウントずれが小さくなる方向に、両クロック信号の周波数を調整することができる。この結果、各システム1A、1Bのクロック源として異なるクロック源を用いたとしても、ロックステップ同期を維持することができるようになる。
また、本実施形態では、時刻カウンタ21A、21Bのカウント値が、データパケット50の実行時刻フィールド55に格納されたカウント値となった時点で、CPU部20A、20Bが実行されるので、CPU部20A、20Bは、同じ処理と同じ時刻に行うことができるようになる。
なお、図6のステップ409、411は、ステップ405における実行時刻待ちの間に行うようにしてもよい。
≪第2の実施形態≫
次に、本発明の第2の実施形態について図8のフローチャートと、図9のタイミングチャートを参照して、詳細に説明する。本実施形態に係るデータ処理装置は、上記第1の実施形態に係るデータ処理装置100の構成と同一であるため、その構成についての詳細な説明を省略する。本実施形態に係るデータ処理装置100は、パケット処理部24A、24Bの動作が、上記第1の実施形態と異なっている。
図8には、本実施形態に係るパケット処理部24Aの動作のフローチャートが示されている。図8に示されるように、本実施形態では、ステップ413、415、417の処理が、新たに追加されている点が、図6のフローチャートと異なっている。その他の点は、上記第1の実施形態と同様であるので、詳細な説明を省略する。
データパケット50が、受信部23Aから入力され、ステップ403の判定が肯定されると、パケット処理部24Aは、ステップ413に進む。ステップ413では、パケット処理部24Aは、データパケット50の実行時刻フィールド55に格納されたカウント値と、現在の時刻カウンタ21Aのカウント値との差(マージン)を算出する。図9のタイミングチャートでは、データパケット50の実行時刻フィールド55に格納されたカウント値がt2であり、時刻カウンタ21Aのカウント値がt2’であったときの例が示されている。この場合、パケット処理部24Aは、カウント値t2とカウント値t2’との差Mを算出する。
図8に戻り、ステップ413の後、パケット処理部24Aは、上記第1の実施形態と同様に、実行時刻待ち(ステップ405)→CPU部20Aへのデータ入力(ステップ407)→カウントずれの判定(ステップ409)→上記判定が肯定された場合のカウントずれの出力(ステップ411)が行われる。
ステップ409で判定が否定された後、又はステップ411が実行された後は、パケット処理部24Aは、ステップ415に進む。ステップ415では、パケット処理部24Aは、マージンが閾値を超えたか否かを判定する。なお、この閾値は、上記ステップ409の閾値とは別の閾値である。この判定が肯定されれば、ステップ417に進み、マージンをPLL制御部25Aに出力する。PLL制御部25Aは、このマージンが小さくなるように、PLL11Aのパラメータを変更し、クロック信号の周波数が高くなるように微調整する。このようにすれば、CPU部20Aの実行時刻を速めることができるようになるので、データ処理装置100の処理速度が向上する。
なお、パケット処理部24Bも、パケット処理部24Aと同じように動作し、マージンをPLL制御部25Bに出力する。PLL制御部25Bも、PLL制御部25Aと同様に、このマージンが小さくなるように、PLL11Bのパラメータを変更し、クロック信号の周波数が高くなるように微調整する。これにより、CPU部20Bの実行時刻は、CPU部20Aの実行時刻と同じように速まり、CPU部20Aの実行時刻とCPU部20Bの実行時刻との間にずれは生じない。
なお、ステップ409、411と、ステップ415,417とは、順番が逆であってもよい。また、図8のステップ409、411、415、417は、ステップ405における実行時刻待ちの間に行うようにしてもよい。
≪第3の実施形態≫
次に、本発明の第3の実施形態について図10、図11を参照して詳細に説明する。図10には、本実施形態に係るデータ処理装置100の構成が示されている。図10に示されるように、本実施形態に係るデータ処理装置100は、受信部23A、23Bの代わりに、受信部23A’、23B’が、備えられている点が、上記各実施形態と異なっている。本実施形態に係る受信部23A’、23B’が、リセット部に対応する。
受信部23A’は、リセット信号を時刻カウンタ21Aに出力する点が、受信部23Aと異なっており、受信部23B’は、リセット信号を時刻カウンタ21Bに出力する点が、受信部23Bと異なっている。リセット信号が出力されると、時刻カウンタ21A、22Bのカウント値は、0にリセットされる。
図11には、本実施形態に係る受信部23A’の動作のフローチャートが示されている。図11に示されるように、本実施形態では、ステップ313、315の処理が、新たに追加されている点が、図5のフローチャートと異なっている。
ステップ309において、時刻カウンタ21Aと時刻カウンタ21Bとのカウントずれが算出された後、受信部23A’は、ステップ313に進む。ステップ313では、受信部23A’は、カウントずれの絶対値が、閾値を超えたか否かを判定する。受信部23A’は、この判定が肯定されればステップ315に進み、否定されればステップ311に進む。なお、この閾値としては、図8のステップ409の閾値よりも大きい値、すなわち同期エラーとみなせるほどの値が設定されるようになる。
ステップ315では、受信部23A’は、リセット処理を行う。すなわち、送信部32Aからデータパケット50の受信時刻と、他のシステム1Bからのデータパケット50の受信時刻との時間差が大すぎる場合には、同期エラーが生じたものとして、受信部23A’は、時刻カウンタ21Aにリセット信号を出力する。これにより、時刻カウンタ21Aのカウント値は0となり、0からのカウントアップが開始される。
なお、このステップ315では、受信部23A’は、すでに受信し、FIFOメモリ40Aに保持されているデータパケット50の実行時刻フィールド55に格納されたカウント値を、リセット後のカウント値に書き換える。
このように、受信部23A’において、同期エラーが検出された場合には、システム1Bの受信部23B’においても、同期エラーが検出されている。したがって、受信部23B’も、時刻カウンタ21Bにリセット信号を出力するようになる。これにより、時刻カウンタ21A、21Bのカウント値は、ほぼ同時にリセットされ、クロック信号の周波数による両者のカウント値のドリフトが解消されるようになる。
ステップ315実行後は、ステップ311に進み、受信部23A’は、FIFOメモリ40Aに格納されたデータパケット50を、格納された順番に、パケット処理部24Aに出力する。このとき、時刻カウンタ21Aはリセットされているので、カウントずれは、パケット処理部24Aに出力されない。パケット処理部24Aは、上記各実施形態と同様の処理を行う。
なお、本実施形態では、送信部32Aからデータパケット50の受信時刻と、他のシステム1Bからのデータパケット50の受信時刻との時間差で、同期エラーを検出したが、例えば、FIFOメモリ40Aがオーバーフローしたら、同期エラーが発生したものとして、時刻カウンタ21Aをリセットするようにしてもよい。
≪第4の実施形態≫
次に、本発明の第4の実施形態について図12を参照して詳細に説明する。本実施形態に係るデータ処理装置は、上記第3の実施形態に係るデータ処理装置の構成と同一であるため、その構成についての詳細な説明を省略する。本実施形態に係るデータ処理装置100は、受信部23A’、23B’の動作が、上記第3の実施形態と異なっている。本実施形態に係る受信部23A’、23B’が、障害検出部に対応する。
図12には、本実施形態に係る受信部23A’の動作のフローチャートが示されている。図12に示されるように、本実施形態では、ステップ317、319の処理が、新たに追加されている点が、図11のフローチャートと異なっている。
ステップ313又はステップ315実行後、受信部23A’は、ステップ317に進む。ステップ317では、FIFOメモリ40Aに格納されたデータパケット50と、FIFOメモリ40Bに格納されたデータパケット50とが一致するか否かを判定する。受信部23A’は、この判定が肯定されれば、ステップ311に進み、否定されれば、ステップ319に進む。
ステップ319では、エラー処理を行う。このエラー処理では、まず、システム1Aが故障したのか、システム1Bが故障したのかの切り分けが行われる。例えば、データパケット50に、誤り訂正符号が付加されていた場合には、その誤り訂正符号に基づいて、データパケット50の誤りを検出することができる。これにより、FIFOメモリ40Aに保持されたデータパケット50と、FIFOメモリ40Bに保持されたデータパケット50とのいずれに誤りがあるのかを検出し、故障したシステムを特定することができる。
例えば、I/Oサブシステム13Aから送信されたデータパケット50の誤りが検出されたとする。この場合には、システム1Aが停止され、この後は、システム1Bだけで処理が続行されるようになる。逆に、I/Oサブシステム13Bから送信されたデータパケットの誤りが検出された場合には、システム1Bが停止され、この後は、システム1Aだけで処理が続行されるようになる。そして、故障が検出された方のシステムについては、保守や修理が行われる。なお、I/Oサブシステム13A、13Bのいずれかの故障が検出された場合には、そのI/Oサブシステムのみを停止し、そのI/Oサブシステムと同じシステム内のCPUサブシステムは、他のシステムのI/Oサブシステムと連携して、処理を続行するようにしてもよい。
≪第5の実施形態≫
次に、本発明の第5の実施形態について図13〜図15を参照して詳細に説明する。図13には、本実施形態に係るデータ処理装置100の構成が示されている。本実施形態に係るデータ処理装置100は、受信部33A、33Bの代わりに、受信部33A’、33B’を備えている点が上記第4の実施形態に係るデータ処理装置100の構成と異なっており、送信部22A、22Bの動作が、上記第4の実施形態と異なっている。その他の部分については、上記第4の実施形態と同様であるので、詳細な説明を省略する。
図13に示されるように、受信部33A’は、時刻カウンタ21A、PLL制御部25Aに接続され、受信部33B’は、時刻カウンタ21B、PLL制御部25Bに接続されている。受信部33A’、33B’は、パケット処理部24A、24Bと同様に、PLL制御部25A、25Bを制御可能である点と、時刻カウンタ21A、21Bにリセット信号を出力している点が、受信部33A、33Bと異なっている。
図14には、送信部22Aの動作のフローチャートが示されている。図14に示されるように、送信部22Aの動作は、ステップ205の代わりに、ステップ205’を実行する点が、送信部32Aの動作と異なっている。ステップ205’では、送信部22Aは、データパケット50の送信時刻フィールド54に現在の時刻カウンタ21Aのカウント値を格納して、データパケット50を受信部33A’、33B’に送信する。すなわち、送信部22Aにおいては、実行時刻フィールド55には、カウント値を格納せずに、データパケット50を送信している。
図15には、受信部33A’の動作のフローチャートが示されている。図15に示されるように、受信部33A’の動作は、ステップ501〜ステップ509、ステップ513、515、ステップ517、519の処理は、図12の受信部23Aの動作、すなわち、ステップ301〜ステップ309、ステップ313、315、ステップ317、319の処理と同じである。また、ステップ511では、受信部33A’は、I/Oデバイス30Aに、データパケット50を出力している。
ステップ511実行後、受信部33A’は、上記ステップ509で算出されたカウントずれの絶対値が閾値以上であるか否かを判定し、この判定が肯定された場合にのみ、ステップ523にて、カウントずれをPLL制御部25Aに出力する。これにより、CPUサブシステム12Aに入力されるクロック信号の周波数が調整される。なお、ステップ513における閾値は、同期エラーの判定に用いられる閾値であるため、ステップ521における閾値よりも大きい値が設定される。
なお、受信部33A’では、ステップ513、515の処理と、ステップ517、519の処理については、必ずしも行う必要はない。また、本実施形態に係るデータ処理装置100では、受信部23A’、受信部23B’の代わりに、上記第1、第2の実施形態と同様に、受信部23A、受信部23Bを備えるようにしてもよい。
また、図15のステップ513、515と、ステップ517、519は、順番が逆であってもよい。
これまでの説明から明らかなように、上記各実施形態では、図4のステップ203、205が第1の工程に対応し、図5のステップ303が第2の工程に対応し、ステップ305、309が第3の工程に対応し、図6のステップ409、411が第4の工程に対応し、ステップ405、409が第5の工程に対応する。また、図8のステップ413が第6の工程に対応し、ステップ415、417が第7の工程に対応する。また、図14のステップ205’が第8の工程に対応し、図15のステップ503が第9の工程に対応し、ステップ505、509が第10の工程に対応し、ステップ521、523が第11の工程に対応する。
以上詳細に説明したように、上記各実施形態によれば、CPU部20A、20Bと、I/Oデバイス30A、30Bとの間で送受信されるデータパケット50の受信タイミングの違いで、時刻カウンタ21Aと時刻カウンタ21Bとのカウントずれを検出し、そのカウントずれに基づいて、それぞれのシステム1A、1Bのクロック信号の周波数を調整する。これにより、CPU部20A、30Aにおける実時間における実行時刻の相対的な時間差を一定範囲内に保つことができる。この結果、両システム1A、1Bの同期が維持されるようになる。
上記各実施形態によれば、クロック信号の周波数を調整するので、実行速度の遅いCPUサブシステムにすべてのCPUサブシステムの実行タイミングを合わせる必要がなくなる。このため、装置全体の処理速度が低下することはない。逆に、上記第2の実施形態に係るデータ処理装置のように、CPU部20A、20Bの実行時刻を最適化することができるようになるので、装置全体の処理能力が向上する。
また、上記各実施形態によれば、各システムの故障を検出するために必須のクロスリンク2を介して送受信されるデータを用いて、ロックステップ同期を実現する。すなわち、上記各実施形態によれば、また、クロック信号のずれを検出するのに、各CPUサブシステムに入力されるクロック信号を比較するための専用のハードウエアを必要としないので、各モジュールのハードウエアの独立性が担保される。
また、上記各実施形態によれば、クロック信号の周波数を調整しているので、タイマ割り込みなどをかけて各CPUサブシステム12A、12Bに入力されるクロック信号を定期的にリセットする必要がなくなる。このため、複数のクロック源の出力周波数のばらつきが大きい場合でも、各CPUサブシステム12A、12Bに入力されるクロック信号の周波数は速やかに調整され、ロックステップ同期を維持することができるようになる。
すなわち、上記各実施形態に係るデータ処理装置によれば、クロスリンク2を介してシステム間を双方向に送受信されるデータパケット50を用いて、デターミニズムに基づくシステム1A、1B間の緩やかな同期を実現しつつ、そのデータパケット50の受信タイミングを計測して、各システム1A、1Bに入力されるクロック信号の周波数を調整しているので、両システム1A、1Bを、実時間においても、同期させることができるようになっている。この結果、装置の耐故障性が向上し、その信頼性は極めて高いものとなっている。
また、上記各実施形態によれば、例えば、受信部23A等でのシステム1A内のデータパケット50の受信時刻と他のシステム1Bからのデータパケット50の受信時刻との時間差が大きくなりすぎて、受信されたデータパケット50が保持されるFIFOメモリ40A等がオーバーフローしてしまうのを防止することも可能となる。
また、上記第2の実施形態によれば、CPU部20A、20Bの実行時刻のマージンを算出し、そのマージンが大きい場合には、そのマージンに基づいて、クロック信号の周波数を調整する。これにより、CPU部20A、20Bの実行時刻をできるだけ早くすることができるようになる。この結果、データ処理装置全体の処理速度を向上させることができる。
また、上記各実施形態によれば、クロスリンク2のレイテンシを考慮して、CPU20A、20Bの実行予定時刻を設定している。これにより、システム1A、1B間の同期が保たれていることを確認した後に、CPU20A、20Bの処理を実行させることができるようになる。この結果、CPU20A、20Bを、より確実に同期させることができるようになる。
また、上記各実施形態によれば、クロスリンク2のレイテンシを考慮して、時刻カウンタ21A、21Bのカウントずれを検出するので、そのカウントずれを正確に検出することができるようになる。この結果、CPU20A、20Bを、より確実に同期させることができるようになる。
また、上記第3の実施形態によれば、時刻カウンタ21A、21Bのカウントずれが、所定レベルを超えた場合には、時刻カウンタ21A、21Bをリセットする。これにより、システム1A、1Bを速やかに同期状態にリカバリさせることができるようになる。この結果、CPU20A、20Bを、より確実に同期させることができるようになる。
また、上記第4の実施形態によれば、両システム1A、1Bのデータパケット50を比較して、各システムに発生した障害を検出するので、障害が発生したシステムを除外し、残りのシステムだけで処理を続行することができるようになる。この結果、装置全体の信頼性が向上する。
また、上記第1〜第4の実施形態によれば、I/Oデバイス30A、30Bに入力されたデータを用いて、システム1A、1Bを同期させたが、上記第5の実施形態のように、CPU20A、30Bから出力されたデータも用いて、システム1A、1Bを同期させるようにすれば、両システム1A、1Bは、より正確に同期するようになり、装置の信頼性がさらに向上する。
なお、上記各実施形態では、CPUサブシステム12A、12Bの受信部23A、23Bとパケット処理部24A、24Bとは、統合されていてもよい。逆に、I/Oサブシステム13A、13Bの受信部33A、33Bは、CPUサブシステム12A、13Bと同様に、その機能が受信部とパケット処理部とに別れていても良い。
なお、上記各実施形態に係るデータ処理装置100では、システムが二重化された装置であったが、システムを三重化以上、すなわち多重化する場合にも、本発明を適用することができるのは勿論である。
本発明の第1の実施形態に係るデータ処理装置の構成を示すブロック図である。 データパケットのデータ構造を示す図である。 図1の受信部の構成を示すブロック図である。 図1の送信部の動作を示すフローチャートである。 図1の受信部の動作を示すフローチャートである。 図1のパケット処理部の動作を示すフローチャートである。 図7(A)〜図7(C)は、データの送受信に関するタイミングを示すタイミングチャートである。 本発明の第2の実施形態に係るパケット処理部の動作を示すフローチャートである。 データの送受信に関するタイミングのタイミングチャートである。 本発明の第3の実施形態に係るデータ処理装置の構成を示すブロック図である。 図10の受信部の動作を示すフローチャートである。 本発明の第4の実施形態に係る受信部の動作を示すフローチャートである。 本発明の第5の実施形態に係るデータ処理装置の構成を示すブロック図である。 図13の送信部の動作を示すフローチャートである。 図13の受信部の動作を示すフローチャートである。
符号の説明
1A、1B システム
2 クロスリンク
10A、10B クロック源
11A、11B PLL
12A、12B CPUサブシステム
13A、13B I/Oサブシステム
20A、20B CPU部
21A、21B 時刻カウンタ
22A、22B 送信部
23A、23B、23A’、23B’ 受信部
24A、24B パケット処理部
25A、25B PLL制御部
30A、30B I/Oデバイス
32A、32B 送信部
33A、33B、33A’、33B’ 受信部
40A、40B、41A、41B FIFOメモリ
50 データパケット
51 パケット種別フィールド
52 パケット長フィールド
53 データフィールド
54 送信時刻フィールド
55 実行時刻フィールド
100 データ処理装置

Claims (13)

  1. 各々がプロセッサと入出力部とを有する少なくとも2つのシステムを備えるデータ処理装置であって、
    各前記システムは、
    クロック信号を出力するクロック源と、
    前記クロック源から出力されたクロック信号の周波数を調整して前記プロセッサに入力する調整部と、
    前記調整部から出力されるクロック信号に基づいて計時を行う時刻カウンタと、
    前記入出力部から入力されたデータを前記プロセッサに送信する際に、送信時の前記時刻カウンタの第1のカウント値と、前記プロセッサにより当該データが処理される実行予定時刻に相当する第2のカウント値とを付加して送信し、前記第1、第2のカウント値が付加されたデータを、他のシステムにも送信する第1の送信部と、
    前記第1の送信部から送信されたデータを受信するととともに、受信時の前記時刻カウンタの第3のカウント値を取得し、前記他のシステムの前記第1の送信部から送信されたデータを受信するとともに、受信時の前記時刻カウンタの第4のカウント値を取得する第1の受信部と、
    付加された前記第1のカウント値が同一であるデータ同士の前記第3、第4のカウント値に基づいて、前記時刻カウンタのカウント値と前記他のシステムの前記時刻カウンタのカウント値とのカウントずれを算出する算出部と、
    前記算出部で算出されたカウントずれに基づいて、前記調整部を制御する制御部と、
    前記時刻カウンタのカウント値が第2のカウント値となるまで、前記プロセッサに対する、前記第1の受信部で受信されたデータの入力を保留する保留部と、
    前記プロセッサから入力されたデータを前記入出力部に送信する第2の送信部と、
    前記第2の送信部から送信されたデータを受信して前記入出力部に出力する第2の受信部と、を備えるデータ処理装置。
  2. 前記保留部は、
    前記データに付加された第2のカウント値と、前記時刻カウンタのカウント値との差分を算出し、
    前記制御部は、
    前記保留部で算出された差分に基づいて、前記調整部を制御することを特徴とする請求項1に記載のデータ処理装置。
  3. 前記第1の送信部は、
    前記システム間でのデータの送受信に要する時間と、前記システム間でのプロセッサの処理の時間差の許容値とに基づいて、前記第4のカウント値を付加することを特徴とする請求項1又は2に記載のデータ処理装置。
  4. 前記算出部は、
    前記システム間でのデータの送受信に要する時間を考慮して、前記カウントずれを算出することを特徴とする請求項1乃至3のいずれか一項に記載のデータ処理装置。
  5. 前記算出部によって算出された前記カウントずれが所定値を超える場合には、前記時刻カウンタをリセットするリセット部をさらに備えることを特徴とする請求項1乃至4のいずれか一項に記載のデータ処理装置。
  6. 付加された前記第1のカウント値が同一であるデータ同士を比較することにより、障害の発生を検出する障害検出部をさらに備えることを特徴とする請求項1乃至5のいずれか一項に記載のデータ処理装置。
  7. 前記第2の送信部は、
    前記プロセッサから入力されたデータを前記入出力部に送信する際に、送信時の前記時刻カウンタの第5のカウント値を付加して送信し、前記第5のカウント値が付加されたデータを、前記他のシステムにも送信し、
    前記第2の受信部は、
    前記第2の送信部から送信されたデータを受信するととともに、受信時の前記時刻カウンタの第6のカウント値を取得し、前記他のシステムの前記第2の送信部から送信されたデータを受信するとともに、受信時の前記時刻カウンタの第7のカウント値を取得し、
    前記算出部は、
    付加された前記第5のカウント値が同一であるデータ同士の前記第6、第7のカウント値に基づいて、前記時刻カウンタのカウント値と前記他のシステムの前記時刻カウンタのカウント値とのカウントずれを算出し、
    前記制御部は、
    前記算出部で算出された前記カウントずれに基づいて、前記調整部を制御することを特徴とする請求項1に記載のデータ処理装置。
  8. 前記算出部は、
    前記システム間でのデータの送受信に要する時間を考慮して、前記カウントずれを算出することを特徴とする請求項7に記載のデータ処理装置。
  9. 前記算出部によって算出された前記カウントずれが所定値を超える場合には、前記時刻カウンタをリセットするリセット部をさらに備えることを特徴とする請求項7又は8に記載のデータ処理装置。
  10. 付加された前記第5のカウント値が同一であるデータ同士を比較することにより、障害の発生を検出する障害検出部をさらに備えることを特徴とする請求項7乃至9のいずれか一項に記載のデータ処理装置。
  11. 各々がプロセッサと入出力部と時刻カウンタとを有し、異なるクロック源からのクロック信号で動作する少なくとも2つのシステムの同期をとる同期方法であって、
    前記入出力部から入力されたデータを前記プロセッサに送信する際に、送信時の前記時刻カウンタの第1のカウント値と、前記プロセッサにより当該データが処理される実行予定時刻に相当する第2のカウント値とを付加して送信し、前記第1、第2のカウント値が付加されたデータを、他のシステムにも送信する第1の工程と、
    前記第1の工程で送信されたデータを受信するととともに、受信時の前記時刻カウンタの第3のカウント値を取得し、前記他のシステムから送信されたデータを受信するとともに、受信時の前記時刻カウンタの第4のカウント値を取得する第2の工程と、
    付加された前記第1のカウント値が同一であるデータ同士の前記第3、第4のカウント値に基づいて、前記時刻カウンタのカウント値と前記他のシステムの前記時刻カウンタのカウント値とのカウントずれを算出する第3の工程と、
    前記第3の工程で算出されたカウントずれに基づいて、前記クロック信号の周波数を調整する第4の工程と、
    前記時刻カウンタのカウント値が前記第2のカウント値となるまで、前記プロセッサに対する、前記第2の工程で受信されたデータの入力を保留する第5の工程と、を含む同期方法。
  12. 前記データに付加された第2のカウント値と、前記時刻カウンタのカウント値との差分を算出する第6の工程と、
    前記第6の工程で算出された差分に基づいて、前記クロック信号の周波数を調整する第7の工程と、をさらに含むことを特徴とする請求項11に記載の同期方法。
  13. 前記プロセッサから入力されたデータを前記入出力部に送信する際に、送信時の前記時刻カウンタの第5のカウント値を付加して送信し、前記第5のカウント値が付加されたデータを、前記他のシステムにも送信する第8の工程と、
    前記第8の工程で送信されたデータを受信するととともに、受信時の前記時刻カウンタの第6のカウント値を取得し、前記他のシステムから送信されたデータを受信するとともに、受信時の前記時刻カウンタの第7のカウント値を取得する第9の工程と、
    付加された前記第5のカウント値が同一であるデータ同士の前記第6、第7のカウント値に基づいて、前記時刻カウンタのカウント値と前記他のシステムの前記時刻カウンタのカウント値とのカウントずれを算出する第10の工程と、
    前記算出部で算出された前記カウントずれに基づいて、前記クロック信号の周波数を調整する第11の工程と、をさらに含むことを特徴とする請求項11又は12に記載の同期方法。
JP2008097889A 2008-04-04 2008-04-04 データ処理装置及び同期方法 Expired - Fee Related JP5380884B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008097889A JP5380884B2 (ja) 2008-04-04 2008-04-04 データ処理装置及び同期方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008097889A JP5380884B2 (ja) 2008-04-04 2008-04-04 データ処理装置及び同期方法

Publications (2)

Publication Number Publication Date
JP2009251854A true JP2009251854A (ja) 2009-10-29
JP5380884B2 JP5380884B2 (ja) 2014-01-08

Family

ID=41312517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008097889A Expired - Fee Related JP5380884B2 (ja) 2008-04-04 2008-04-04 データ処理装置及び同期方法

Country Status (1)

Country Link
JP (1) JP5380884B2 (ja)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187185A (ja) * 1992-12-18 1994-07-08 Nec Commun Syst Ltd 二重化装置
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
JPH1027110A (ja) * 1996-07-09 1998-01-27 Toshiba Corp 複数台のコンピュータによるコンピュータシステム
JP2005182693A (ja) * 2003-12-24 2005-07-07 Nec Corp 多重化システムおよびプロセッサモジュール
JP2006512634A (ja) * 2002-09-12 2006-04-13 シーメンス アクチエンゲゼルシヤフト 同期または非同期にクロック制御される処理ユニットを同期化する方法および回路装置
JP2006172391A (ja) * 2004-12-20 2006-06-29 Nec Corp フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
JP2006178617A (ja) * 2004-12-21 2006-07-06 Nec Corp フォールトトレラントコンピュータ及びその制御方法
JP2007249518A (ja) * 2006-03-15 2007-09-27 Nec Corp データ処理装置とその同期方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187185A (ja) * 1992-12-18 1994-07-08 Nec Commun Syst Ltd 二重化装置
JPH0773059A (ja) * 1993-03-02 1995-03-17 Tandem Comput Inc フォールトトレラント型コンピュータシステム
JPH1027110A (ja) * 1996-07-09 1998-01-27 Toshiba Corp 複数台のコンピュータによるコンピュータシステム
JP2006512634A (ja) * 2002-09-12 2006-04-13 シーメンス アクチエンゲゼルシヤフト 同期または非同期にクロック制御される処理ユニットを同期化する方法および回路装置
JP2005182693A (ja) * 2003-12-24 2005-07-07 Nec Corp 多重化システムおよびプロセッサモジュール
JP2006172391A (ja) * 2004-12-20 2006-06-29 Nec Corp フォールト・トレラント・コンピュータ・リセット方法及びそのシステム
JP2006178617A (ja) * 2004-12-21 2006-07-06 Nec Corp フォールトトレラントコンピュータ及びその制御方法
JP2007249518A (ja) * 2006-03-15 2007-09-27 Nec Corp データ処理装置とその同期方法

Also Published As

Publication number Publication date
JP5380884B2 (ja) 2014-01-08

Similar Documents

Publication Publication Date Title
US8503484B2 (en) System and method for a cross channel data link
US11316605B2 (en) Method, device, and computer program for improving synchronization of clocks in devices linked according to a daisy-chain topology
US7383458B2 (en) Method and device for synchronizing the cycle time of a plurality of TTCAN buses based on determined global time deviations and corresponding bus system
CN104516306B (zh) 冗余的自动化系统
EP3026515B1 (en) Programmable controller system
KR102162321B1 (ko) 프로세서 시스템 및 그것의 고장 검출 방법
JP2009534738A (ja) フォールト・トレランス・コンピューティング・システムにおけるエラー・フィルタリング
US10162314B2 (en) Two-way architecture
US9477559B2 (en) Control device, control method and recording medium storing program thereof
US11599090B2 (en) System and method of network synchronized time in safety applications
KR101560497B1 (ko) 락스텝으로 이중화된 프로세서 코어들의 리셋 제어 방법 및 이를 이용하는 락스텝 시스템
EP3273353B1 (en) Data processing device
JP2010004321A (ja) 時間同期システムおよび時間同期装置
US8060769B2 (en) Duplexed field controller
US7694176B2 (en) Fault-tolerant computer and method of controlling same
JP4752552B2 (ja) データ処理装置とその同期方法
JP5380884B2 (ja) データ処理装置及び同期方法
JP6400553B2 (ja) ユニット間での同期制御機能を有する数値制御システム
JP5604799B2 (ja) フォールトトレラントコンピュータ
KR20140092132A (ko) 알티오에스 마이컴의 오에스 태스크의 모니터링 방법
JP5892083B2 (ja) パラメータ設定装置、パラメータ設定プログラム及びパラメータ設定方法
US10165314B2 (en) Process synchronization control system and process synchronization control method
JP2020123309A (ja) Ioモジュール二重化制御装置及び方法
US20230318728A1 (en) Diagnostic System and Method for Network Synchronized Time in Safety Applications
CN107526658A (zh) 在包括多个电子计算机的航空电子系统中保证公共信号接收的方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110311

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130327

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130402

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130529

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130618

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130815

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130903

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130916

R150 Certificate of patent or registration of utility model

Ref document number: 5380884

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees