鉄道信号制御の分野では、障害発生時にシステムを安全な状態に維持もしくは安全な状態に遷移させるというフェールセーフなコンピュータを構成するため、プロセッサ及びその周辺を二重系・多重系とし、冗長化された処理結果を比較回路に入力して誤り検出を行い、誤り検出時には、装置として出力を安全側に固定するとともに、比較回路自体も自身の故障に対して出力を安全側に固定する、といったことが行われている。そのような多重系電子計算機のうち、マクロ同期式フェールセーフコンピュータやマクロ同期式フェールセーフマイコンなどと呼ばれているマクロ同期式の多重系電子計算機は(例えば特許文献1や非特許文献1参照)、密結合バス同期式を改良して高速化を図ったものであるが、その代償として、比較対象データの選択や転送がプログラムに委ねられている。
すなわち、このマクロ同期式の多重系電子計算機は、各系毎にプロセッサとメインメモリを有し同じプログラムを搭載した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受けるデュアルポートメモリを複数系と、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路とを備えている。
また、前記デュアルポートメモリが各系毎に複数設けられ、前記読出制御回路が各系毎に前記デュアルポートメモリの何れか一つをデータ読出対象に選択してデータの読出および前記照合回路へのデータ送出を繰り返すとともにデータ読出対象のメモリ切替を複数系について一斉に行うようになっており、前記デュアルポートメモリへのデータ書込が複数系の総てで終了したときに前記メモリ切替を行うように前記読出制御回路がなっており、同期要求を出して待ち状態になる同期プログラムが前記コンピュータそれぞれに搭載され、前記同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路が設けられている。
このような改良により、マクロ同期式の多重系電子計算機にあっては、バスラインと照合回路との接続関係がデュアルポートメモリを介在させた間接的なものとなって、クロックを同一・共通にするというハードウェア上の制約が解かれる一方、ソフトウェア負荷の増加は、比較対象データをメインメモリ等からデュアルポートメモリへ転送する程度にとどまる。しかも、比較対象データの転送に際して、各系のプロセッサからデュアルポートメモリへの書込が各系の固有タイミングで行われる一方、デュアルポートメモリからのデータ読出は読出制御回路によって照合回路の入力タイミングに適合するよう一斉に行われるので、各系のプロセッサのマシンサイクル・バスラインのクロックと照合回路の比較サイクル・データ入力クロックとが同じでなくても、複数系のデータが的確に比較されることとなる。そのため、密結合バス同期方式の照合回路を使用してフェールセーフコンピュータを構成してもプロセッサは高速動作させることができる。
また、デュアルポートメモリが各系毎に複数化されるとともに、データ読出対象のメモリの切り替えが複数系で一斉に行われるようにしたことにより、照合回路が、フェールセーフ性の確保のため振り子回路等を具有していて比較対象データの間断なき入力を要する従来品のままであっても、適切に動作する。さらに、複数系の総てでデュアルポートメモリへのデータ書込が終了すると、読出制御回路によってデータ読出対象メモリの切替が行われるようにしたことにより、各系のコンピュータは自系データの書込終了を通知すれば足り他系コンピュータのデータ書込終了を待ち合わせる必要がなくなるので、比較対象データをプログラムで転送しなければならなくなったことに伴うプログラムの改造が少なくて済む。また、各系のコンピュータが同期要求を出すだけで同期が採られるようにしたことにより、各系のコンピュータを非同期で動作させて各系間のタイミングの自由度を高めたことに伴い反射的に必要となる同期採りのためのプログラム改造が少なくて済む。
このようなマクロ同期式の多重系電子計算機の典型例の一つである二重系電子計算機について、その具体的な構成を、図面を引用して説明する。図6は、二重系電子計算機(多重系電子計算機)の全体ブロック図であり、図7は、各計算機の搭載プログラム(多重系電子計算機用プログラム)の概要フローチャートである。
なお、図示に際して、A系の要素には数字符号の末尾にAを付加し、B系の要素には数字符号の末尾にBを付加したが、文中でA系・B系の片系を意識せずに両系を纏めて参照するときは単に数字符号だけを記している。
このマクロ同期式の二重系電子計算機は(図6参照)、同じプログラム16を搭載したA系,B系(複数系)のコンピュータ10A〜15A,10B〜15Bと、A,B両系のデータDa,Dbを比較して不一致検出時に出力を停止する照合回路20と、A,B両系のコンピュータ10A〜15A,10B〜15Bと照合回路20との間に介在して比較対象データDa,Dbを照合回路20へ出力するバス模擬回路30とを備えている。
A系のコンピュータ10A〜15Aは、プロセッサ10Aとバスライン11Aと入力回路12とメインメモリ13Aと出力回路14Aと出力ライン15Aとを具備し、B系のコンピュータ10B〜15Bは、プロセッサ10Bとバスライン11Bと入力回路12とメインメモリ13Bと出力回路14Bと出力ライン15Bとを具備している。
詳述すると、入力回路12は、例えば、ラッチ回路や割込要求回路等を具えていて、周辺装置や通信装置等から受けたデータをプロセッサ10に入力させるようになっている。なお、図6では、A系とB系に共有される一つの入力回路12をA系入力回路12AとB系入力回路12Bとに分けて示したが、これは図示を明瞭にするための便宜にすぎない。メインメモリ13は、例えば、プログラム保持に適したPROMやデータ保持に適したSRAMからなり、出力回路14は、例えば、バッファ等を具えていて、図示しない外部の周辺装置や通信装置等へ出力するデータを一時保持するようになっている。出力ライン15は、出力回路14の出力を照合回路20へ伝送するようになっている。
A系のコンピュータ10A〜15Aには、プロセッサ10Aのバスライン11Aを介して固有タイミングで転送されたデータの書き込みを受けるデュアルポートメモリ31Aが二つ@1,@2(複数系)設けられており、B系のコンピュータ10B〜15Bには、プロセッサ10Bのバスライン11Bを介して固有タイミングで転送されたデータの書き込みを受けるデュアルポートメモリ31Bが二つ@1,@2(複数系)設けられている。
バス模擬回路30は、照合回路20の入力タイミングと共通するタイミングでデュアルポートメモリ31A,31BそれぞれからアドレスRa,Rbのデータを読み出して照合回路20にその入力対象の複数系のデータ(比較対象データ)Da,Dbとして送出する読出制御回路32と、プロセッサ10A,10Bそれぞれから出される同期要求がA系,B系(複数系)の総てで出揃ったときにコンピュータ10A〜15A,10B〜15Bの待ち状態を一斉に解く同期制御回路33が設けられている。
また、A系のコンピュータ10A〜15Aには、応用プログラム16Aに加えて、照合回路20の比較対象になるデータをデュアルポートメモリ31Aに転送する転送プログラム34Aと、同期要求を出して待ち状態になる同期プログラム35Aも、搭載されており、B系のコンピュータ10B〜15Bには、応用プログラム16Bに加えて、照合回路20の比較対象になるデータをデュアルポートメモリ31Bに転送する転送プログラム34Bと、同期要求を出して待ち状態になる同期プログラム35Bも、搭載されている。A,B両系のプログラムは同じである。すなわち、応用プログラム16A,16Bのコードが同じものであり、転送プログラム34A,34Bのコードも同じものであり、同期プログラム35A,35Bのコードも同じものである。
照合回路20は、複数系のデータを比較して不一致検出時に出力を停止するために、フェールセーフ比較回路21とフェールセーフ電源22と出力比較回路23とを具えており、そのうちフェールセーフ比較回路21は、読出制御回路32によってデュアルポートメモリ31A,31Bそれぞれから読み出された二重系のデータDa,Dbを入力して、両データが一致しているか否かの比較を行うようになっている。
フェールセーフ比較回路21は、比較結果として照合信号Fを出力するが、いわゆる振り子回路を具有しており、これによって照合信号Fは、一致状態の継続している間は、一定周期で交互に値の変化する交番信号となり、比較結果に不一致が検出されると、値の変化しない一定信号となる。
出力比較回路23は、例えばリレー回路からなり、図示の出力回路14と図示しない周辺装置や通信装置等の外部装置との間に介挿して設けられ、出力回路14A,Bの出力データについて出力ライン15の各ライン毎にA系とB系との論理積を採ってからその論理値を例えば24Vのリレー信号で図示しない外部装置へ送出するようになっている。
フェールセーフ電源22は、出力比較回路23に例えば24Vの動作電力を供給するものであるが、その電力供給を照合信号Fに応じて選択的に行う。具体的には、照合信号Fが交番信号のときだけ出力比較回路23に動作電力を供給し、照合信号Fが一定信号のときには出力比較回路23に動作電力を供給しないようになっている。
デュアルポートメモリ31は、メモリアクセス用ポートを二つ具えたメモリであり、各系毎に複数設けられている。すなわち、A系のコンピュータに設けられたA系デュアルポートメモリ31Aには切替可能な二つのメモリ@1,@2が含まれ、B系のコンピュータに設けられたB系デュアルポートメモリ31Bにも切替可能な二つのメモリ@1,@2が含まれている。デュアルポートメモリ31の一方のポートはバスライン11に接続されていて、接続先の系である該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受けるようになっている。
デュアルポートメモリ31の他方のポートは、アドレス部が読出制御回路32のアドレス出力(Ra又はRb)に接続され、データ部が照合回路20のフェールセーフ比較回路21のデータ入力(Da又はDb)に接続されていて、データ読出が読出制御回路32の制御で行われるものとなっている。そして、A系デュアルポートメモリ31Aから読み出されたデータは照合回路20の一方の入力対象データDaにされ、B系デュアルポートメモリ31Bから読み出されたデータは照合回路20の他方の入力対象データDbにされるようになっている。
デュアルポートメモリ31におけるメモリ@1,@2のサイズ(記憶容量)はメインメモリ13より小さくて良く、例えば、メインメモリ13がメガバイトオーダのときデュアルポートメモリ31はキロバイトオーダで足りる。そのような各系のデュアルポートメモリ31に対するメモリ@1,@2の切り替えも読出制御回路32の制御で行われる。そして、メモリ@1が読出制御回路32によってデータ読出対象に選択されているときメモリ@2がバスライン11を介するデータ書込対象とされ、メモリ@2が読出制御回路32によってデータ読出対象に選択されているときメモリ@1がバスライン11を介するデータ書込対象とされるようになっている。
読出制御回路32は、デュアルポートメモリ31からのデータ読出を制御するためにアドレスカウンタ等を具備する他、バスライン11のクロックよりも通常は周波数の低いクロックCLKを発生する発振回路等も具えている。このクロックCLKが、デュアルポートメモリ31からのデータ読出制御に用いられるとともに、フェールセーフ比較回路21にデータ入力のクロックとして送出されているので、読出制御回路32は、照合回路20の入力タイミングと共通するタイミングでA系デュアルポートメモリ31A及びB系デュアルポートメモリ31BそれぞれからアドレスRa,Rbのデータを読み出して照合回路20にその入力対象の複数系のデータDa,Dbとして送出するものとなる。
また、読出制御回路32は、A系のデュアルポートメモリ31Aについて二つのメモリ@1,@2の何れか一つをデータ読出対象に選択してアドレスRaからのデータDaの読出および照合回路20へのデータDaの送出を繰り返すとともに、B系のデュアルポートメモリ31Bについて二つのメモリ@1,@2の何れか一つをデータ読出対象に選択してアドレスRbからのデータDbの読出および照合回路20へのデータDbの送出を繰り返すようになっている。しかも、読出制御回路32は、それらのデータ読出対象のメモリ切替を、デュアルポートメモリ31A,31Bへのデータ書込がA系,B系(複数系)の総てで終了したときに、A系,B系(複数系)について一斉に行うようになっている。
さらに、読出制御回路32は、データ転送終了の通知や有効アドレス範囲の通知などを各系のコンピュータから受けるために、各系のバスライン11にも接続されている。そして、各系毎にデュアルポートメモリ31の何れか一つ即ちメモリ@1かメモリ@2か何れか一方をデータ読出対象に選択して行うデータDa,Dbの読出および照合回路20へのデータ送出を間断なく繰り返すようになっている。また、データ読出対象のメモリ切替は、A系,B系のコンピュータ両方からデータ転送終了の通知を受けたとき、A系デュアルポートメモリ31A及びB系デュアルポートメモリ31Bについて一斉に行うようになっている。
同期制御回路33は、同期要求を各系のコンピュータから受けるために、各系のバスライン11に接続されている。そして、同期要求が複数系の総てで出揃ったとき即ちA系バスライン11A経由の同期要求とB系バスライン11B経由の同期要求との双方を受け取ったときに、コンピュータの待ち状態を解くための起動信号WをA系プロセッサ10A及びB系プロセッサ10Bに対して一斉に送出するようになっている。大抵の汎用プロセッサ10は待ち状態を制御するための信号入力端子を具えているので、その端子に起動信号Wを送出するようになっている。
応用プログラム16(図7参照)は、連動装置や新幹線用ATC等のアプリケーションに応じて具体的な処理内容が異なるが、入力処理とそれに応じた応用演算と演算結果に基づく出力処理とを基本的な処理単位として、それを応用種別等に応じて必要なだけ(1〜N)行うようになっている。また、それら一連の処理は、プロセッサ10によって繰り返し実行される。即ち、入力処理(入力1〜N)では、入力回路12からバスライン11を介してプロセッサ10へデータが送られ、応用演算(応用1〜N)では、プロセッサ10からバスライン11を介してメインメモリ13へデータ参照やデータ書込が行われ、出力処理(出力1〜N)ではプロセッサ10からバスライン11を介して出力回路14へ出力データが送られて、そのデータが出力ライン15に送出されるようになっている。
転送プログラム34は、プロセッサ10によって実行されて、応用プログラム16による応用演算の中間値や結果値などのうち適宜なデータを比較対象データとしてバスライン11経由でデュアルポートメモリ31に書き込むようになっている。
同期プログラム35は、やはりプロセッサ10によって実行されて、同期制御回路33にバスライン11を介して同期要求を出し、その後は待ち状態になるためのプログラム命令を実行して搭載先のプロセッサ10を待ち状態にするようになっている。
この転送プログラム34と同期プログラム35は、密結合バス同期式からマクロ同期式に移行したことに伴って追加されたものであり、例えばサブルーチン形式で応用プログラム16の適宜な何カ所かに組み込まれる。具体例を挙げると(図7参照)、転送プログラム34は、応用プログラム16の応用演算(1〜N)それぞれの後に組み込まれ、同期プログラム35は、応用プログラム16の入力処理(1〜N)と転送プログラム34の転送処理(1〜N)と応用プログラム16の出力処理(1〜N)それぞれの直前に組み込まれている。そして、応用プログラム16の繰り返し実行(1〜N)に随伴して、転送プログラム34及び同期プログラム35も繰り返し実行される。
このようなマクロ同期式の二重系電子計算機では、A系プロセッサ10AとB系プロセッサ10Bのクロックが別個で良いので、A系プロセッサ10AとB系プロセッサ10Bとの同期は同期プログラム35の処理に依存して間欠的に採られるようになっている。比較対象データの転送も転送プログラム34の処理に依存して間欠的に行われるようになったが、比較対象データの読出は読出制御回路32によって常に繰り返して行われ、さらに比較処理自体やフェールセーフ性確保は、プログラムでなく、密結合バス同期式のものを踏襲した照合回路20によって間断なく行われるので、プログラム同期方式でもない。
このような従来の二重系電子計算機(多重系電子計算機)及び各計算機の搭載プログラム(多重系電子計算機用プログラム)について、その使用態様及び動作を、図面を引用して説明する。図8及び図9は、動作説明用のタイムチャートであり、そのうち図8は正常時を示し、図9は異常時を示している。なお、その図示に際しては、説明の都合上、A系とB系との速度差を誇張して、A系プロセッサ10AがB系プロセッサ10Bよりかなり高速であるように記したが、実用上は、大抵、同一構成のプロセッサを同じ周期のクロックで動作させるので、短期間における両系での処理のタイミングずれは、ほとんど無い。また、図10は、演算結果に異常が発現したときの一例である。
A系,B系いずれのコンピュータも正常な場合(図8参照)、何れのコンピュータでも、同期処理と入力処理と応用演算と同期処理と転送処理と同期処理と出力処理とが基本的な処理単位となり、それが応用種別等に応じて必要なだけ(1〜N)行われ、さらに、それら一連の処理が繰り返される。それら一連の処理のうち応用プログラム16による入力処理と応用演算と出力処理と、それら一連の処理の繰り返しは、マクロ同期式に特有のものでなく密結合バス同期式など他の方式でも同様に行われるので、ここでは、同期処理と転送処理とが組み込まれた基本的な処理単位の一例を詳述する。
A系プロセッサ10AがB系プロセッサ10Bより速いとすると、時刻t1には、前の処理を終えたA系プロセッサ10Aが、A系転送プログラム34Aを実行して、A系バスライン11Aを介して同期制御回路33に同期要求を出しそれから待ち状態になる。
このとき、A系デュアルポートメモリ31Aの一方のメモリ@1にはA系プロセッサ10Aによる前の前の転送処理で書き込まれた旧々データが保持され、他方のメモリ@2にはA系プロセッサ10Aによる前の転送処理で書き込まれた旧データが保持され、このメモリ@2の旧データが読出制御回路32によって繰り返し読み出されて照合回路20の入力データDaにされる。また、B系デュアルポートメモリ31Bの一方のメモリ@1にはB系プロセッサ10Bによる前の前の転送処理で書き込まれた旧々データが保持され、他方のメモリ@2にはB系プロセッサ10Bによる前の転送処理で書き込まれた旧データが保持され、このメモリ@2の旧データが読出制御回路32によって繰り返し読み出されて照合回路20の入力データDbにされる。
正常時には、両系のデュアルポートメモリ31A,31Bの同じアドレスから同じタイミングでデータが読み出されるので、クロックCLKで照合回路20のフェールセーフ比較回路21に比較対象データとして入力されるデータDa,Dbは値が等しい。そのため、照合信号Fが交番信号になり、フェールセーフ電源22から電力を供給されて出力比較回路23が動作可能な状態におかれる。
そして、時刻t2に、B系プロセッサ10Bから同期要求が出されると、同期要求が出揃ったことになるので、同期制御回路33から起動信号Wが両プロセッサ10A,10Bに送出されて、両系で同時に入力処理が実行される。同時なので入力回路12から両プロセッサ10A,10Bに同じデータが入力される。
入力処理の後は入力データに基づく応用演算が行われ、既述したようにメインメモリ13へのデータ参照やデータ書込が行われる。そして、この応用演算でもA系プロセッサ10AがB系プロセッサ10Bより先に終了したとすると、その時刻t3に、A系プロセッサ10Aから同期要求が出され、A系プロセッサ10Aが待ち状態になる。その後、時刻t4には、B系プロセッサ10Bからも同期要求が出されて同期要求が揃い、これに応じて同期制御回路33から起動信号Wが出されて、両系で同時に転送処理が実行される。
転送処理はプロセッサ10が転送プログラム34を実行することにより遂行され、応用演算の中間値や結果値などのうち適宜なデータがバスライン11を介してデュアルポートメモリ31に書き込まれる。具体的には、A系のコンピュータでは、A系の比較対象用の新データがA系プロセッサ10AからA系デュアルポートメモリ31Aのメモリ@1に書き込まれ、その有効アドレス範囲の通知がA系プロセッサ10Aから読出制御回路32に送られ、更にデータ転送終了の通知もA系プロセッサ10Aから読出制御回路32に送られ、それから同期要求がA系プロセッサ10Aから同期制御回路33に出されて、時刻t5にはA系プロセッサ10Aが待ち状態になる。
また、B系のコンピュータでは、B系の比較対象用の新データがB系プロセッサ10BからB系デュアルポートメモリ31Bのメモリ@1に書き込まれ、その有効アドレス範囲の通知がB系プロセッサ10Bから読出制御回路32に送られ、更にデータ転送終了の通知もB系プロセッサ10Bから読出制御回路32に送られる。この通知がなされた時刻t6には、A系,B系すべての系でデュアルポートメモリ31へのデータ書き込みが終了しているので、読出制御回路32によってデータ読出対象のメモリ切替が行われ、A系,B系いずれでも、デュアルポートメモリ31のうち新データを保持しているメモリ@1が読出制御回路32のデータ読出対象に選択されるとともに、旧データを保持しているメモリ@2は次のデータ書き込みに備えてデータ読出対象から外される。
そして、フェールセーフ比較回路21に比較対象データとして入力されるデータDa,Dbが新データに切り替わるが、正常時には、両系の新データも等しいので、引き続き照合信号Fが交番信号になり出力比較回路23が動作可能な状態におかれる。
それから、B系プロセッサ10Bからも同期要求が出されて同期要求が揃うと、これに応じて同期制御回路33から起動信号Wが出されて、両系で同時に出力処理が実行される。同時なのでA系出力回路14AとB系出力回路14Bとから出力比較回路23へ同じデータが送出され、出力比較回路23から外部に向けたデータ出力がなされる。
これに対し、異常時には(図9参照)、以下のようにして出力比較回路23から外部へのデータ出力が抑制される。時刻t2以降の入力処理や応用演算あるいは時刻t4以降の転送処理で何れかのコンピュータに異常が生じ、その影響が比較対象データに及ぶと、とりあえず時刻t1〜t6までの各処理は上述した正常時と同様に進行するが、それは処理手順だけのことであり、デュアルポートメモリ31のメモリ@1に書き込まれた新データは両系で異なるため、時刻t6に読出制御回路32の読出対象がメモリ@2からメモリ@1に切り替わると、フェールセーフ比較回路21に比較対象データとして入力されるデータDa,Dbが一致せず、不一致が検出される。
すると、フェールセーフ比較回路21の出力する照合信号Fが交番信号から一定信号に変わり、これに応じてフェールセーフ電源22が出力比較回路23に電力を供給しなくなるので、出力比較回路23から外部へ出力データが出力されなくなる。
こうして、マクロ同期式の二重系電子計算機では、故障発生時には照合回路によってデータの外部出力が抑止されて、装置から外部への作用が安全状態に保持されるので、フェールセーフ性が確保される。また、A系バスライン11AクロックとB系バスライン11Bのクロックと照合回路20のクロックCLKとが同じでなくてもフェールセーフコンピュータとして機能するので、例えば、クロックCLKを密結合バス同期式での25MHzにとどめたまま、プロセッサ10にマシンサイクル150MHzやそれ以上の高速なものを採用することができる。さらに、密結合バス同期式と異なり、マクロ同期式の各系のプロセッサ10A,10Bには、それぞれにキャッシュメモリを持たせることもできる。
このようなマクロ同期式の多重系電子計算機では、上述したようにバス模擬回路30を導入してプロセッサの高速化を可能にした代償として、応用プログラム16に加えて転送プログラム34と同期プログラム35もインストールすることが必要になる。それらのうち、応用プログラム16は処理内容が基本的に従来と同じで良く、同期プログラム35は、パラメータ等が不要であって、所定タイミングに実行されれば良い。そのため、それらのプログラム16,35については、プログラム作成や動作確認の負担が従来の密結合バス同期式の多重系電子計算機のときと大差なく、マクロ同期式への移行が容易である。
これに対し、転送プログラム34は、応用プログラム16の応用演算の中間値や結果値(演算結果)などのうち適宜なデータを照合回路20の比較対象データとしてバス模擬回路30のデュアルポートメモリ31へ転送するものであることから、比較対象データの選択や転送がプログラムに委ねられているので、通常のプログラミングでは、プログラマー等が転送プログラム34のコーディング前に応用プログラム16毎にメインメモリ13のデータ領域から比較対象データを選択しておき、コーディング時に応用プログラム16毎の選択データ領域を転送プログラム34にパラメータ等で伝えることになる。そのため、プログラム同期式ほどではないが、プログラム作成や動作確認の負担が無視できない。
かかる演算結果を比較対象データに含める必要性について図面を引用して説明する。図10は、演算結果に異常が発現したときの一例である。この事例の場合、時刻taでは、異常が無く、両プロセッサ10A,10Bにおいて応用プログラム16の入力処理(入力i,1≦i≦N)の入力値も応用演算(応用i,1≦i≦N)の演算結果も出力処理(出力i,1≦i≦N)の出力値も同じ値たとえば“0”になっている。
これに対し、その後の時刻tbに10A,10Bの一方に異常が発生してプロセッサ10Aでは演算結果が“1”なのにプロセッサ10Bでは演算結果が“0”になっているが、この時点tbでは、演算結果が未だ出力値に反映されておらず、入力値だけでなく出力値も両プロセッサ10A,10Bで同じ値たとえば“0”になっている。
しかも、その後の時刻tcには10A,10Bの他方に異常が発生してプロセッサ10Bでも演算結果が“1”になっているが、この時点tcでも、演算結果が未だ出力値に反映されておらず、入力値と演算結果だけでなく出力値も両プロセッサ10A,10Bで同じ値たとえば“0”になっている。
そして、その後の時刻tdに至ると演算結果が出力値に反映されて、演算結果だけでなく出力値も両プロセッサ10A,10Bで同じ値たとえば“1”になる。入力値も異常なく両プロセッサ10A,10Bで同じ値たとえば“1”になっている。
このような態様で異常が発現した場合、誤った演算結果に基づいて得られた出力値は誤っている可能性があるが、マクロ同期式では、出力値しか比較対象データに含めないと、上記態様の異常が検出されないで見逃されることも有り得る。そして、その場合、意図しない信号制御などを引き起こすおそれもある。そのため、上記のような異常発現態様でも、不所望な制御等の未然防止を図るには、不所望な出力がなされる前に異常が検知されるよう、出力値に限らず演算結果も比較対象データに含めることが必要なのである。
ところで、プロセッサ10に採用しうるプロセッサには、小型のマイコン(マイクロコンピュータ,マイクロプロセッサ)であっても、メインメモリ13の所定領域を指定してデータ書き込みを禁止したり許可したりできるものがある。そして、そのようなライトプロテクト機能を持ったプロセッサをプロセッサ10A,10Bに採用した場合、応用プログラム16における基本処理単位をなす入力処理(入力i)と応用演算(応用i)と出力処理(出力i)との組(タスク対応プログラムi)それぞれについて(iは1〜Nの何れか)、メインメモリ13のうち演算結果や出力値を保持させる可能性のある領域にはプロテクトを解除してデータ書き込みを許可するとともに他の領域にはプロテクトを設定してデータ書き込みを禁止するというメモリプロテクト管理を行うこととなる。
そして、各組のプログラム(タスク対応プログラムi)が上記のメモリプロテクト管理を行うことによって、意図しないプログラム(タスク対応プログラムi)による不正なデータ書換が、自プログラム(タスク対応プログラムi)によるものであれ、他プログラム(タスク対応プログラム≠i)によるものであれ、的確に検出されるので、プログラムの信頼性が向上する。
そのため、マクロ同期式の多重系電子計算機についても、プログラムの信頼性を向上させるべく、プロセッサ10に上述のライトプロテクト機能を持たせるのが望まれる。
しかしながら、上述したマクロ同期式の多重系電子計算機の各プロセッサについて、単にライトプロテクト機能を持たせてメモリプロテクト管理を行わせたのでは、応用プログラム16の各組のプログラム(タスク対応プログラムi)毎に、メモリプロテクト管理のためのメモリ領域指定を行うとともに、比較対象データ転送のためのメモリ領域指定も行うことになる。しかも、各組のプログラムで指定すべきメモリ領域は、応用目的に依存するので、各組のプログラム毎に異なる。
そのため、各組のプログラム毎にメモリ領域の指定を二回も行わなければならず、プログラムの作成やデバッグの負担が倍増してしまいかねない。
そこで、マクロ同期式の多重系電子計算機のプロセッサにライトプロテクト機能を持たせてもプログラムの作成やデバッグの負担が少なくて済むように改良することが、技術的な課題となる。
本発明の多重系電子計算機は(解決手段1)、このような課題を解決するために創案されたものであり、
各系毎にプロセッサとメインメモリを有し同じプログラムを搭載した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受ける複数系のデュアルポートメモリと、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路と、前記コンピュータそれぞれから出された同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路とを備えた多重系電子計算機において、
前記コンピュータが、該当系のメインメモリの部分領域を指定してデータ書き込みの可否を設定しうるライトプロテクト機能を具備したものであって、前記プログラムを実行することにより、応用目的に対応した応用演算の演算結果を書き込む可能性のある書込対象メモリ領域にはデータ書き込みを許可しそれ以外の非書込メモリ領域にはデータ書き込みを禁止するというメモリ領域指定に基づいて前記ライトプロテクト機能を稼動させる書禁設定と、前記応用演算と、前記同期要求を出して待ち状態になる同期処理と、前記メモリ領域指定に基づいて前記書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理とを、繰り返し行うようになっていることを特徴とする。
また、本発明の多重系電子計算機用プログラムは(解決手段2)、上記解決手段1の多重系電子計算機に搭載されるプログラムを特定したものであり、具体的には、
各系毎にプロセッサとメインメモリを有するとともに該当系のメインメモリの部分領域を指定してデータ書き込みの可否を設定しうるライトプロテクト機能を具備した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受ける複数系のデュアルポートメモリと、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路と、前記コンピュータそれぞれから出された同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路とを備えた多重系電子計算機における前記コンピュータに搭載される多重系電子計算機用プログラムであって、
搭載先のコンピュータに、応用目的に対応した応用演算の演算結果を書き込む可能性のある書込対象メモリ領域にはデータ書き込みを許可しそれ以外の非書込メモリ領域にはデータ書き込みを禁止するというメモリ領域指定に基づいて前記ライトプロテクト機能を稼動させる書禁設定と、前記応用演算と、前記同期要求を出して待ち状態になる同期処理と、前記メモリ領域指定に基づいて前記書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理とを、繰り返し行わせるようになっていることを特徴とする。
さらに、本発明の多重系電子計算機用プログラムは(解決手段3)、上記解決手段2の多重系電子計算機用プログラムであって、前記書禁設定に際して前記メモリ領域指定を前記転送処理が既定の手順で参照しうる態様でデータ保持させることを、搭載先のコンピュータに行わせるようになっていることを特徴とする。
また、本発明の多重系電子計算機用プログラムは(解決手段4)、上記解決手段3の多重系電子計算機用プログラムであって、該当系のメインメモリのうち前記メモリ領域指定にて書込対象メモリ領域にされたことのある部分領域を示す確認領域データを前記書禁設定および前記転送処理の何れか一方または双方において該当部分領域の和集合を採る態様で更新する確認領域データ更新処理と、該当系のメインメモリのうち前記確認領域データで示された部分領域から外れた部分領域に保持されているデータを該当系のデュアルポートメモリへ転送する定値診断処理とを、搭載先のコンピュータに行わせるようになっていることを特徴とする。
また、本発明の多重系電子計算機用プログラムは(解決手段5)、上記解決手段4の多重系電子計算機用プログラムであって、前記確認領域データ更新処理に際して前記確認領域データを前記定値診断処理が既定の手順で参照しうる態様でデータ保持させることを、搭載先のコンピュータに行わせるようになっていることを特徴とする。
また、本発明の多重系電子計算機用プログラムは(解決手段6)、上記解決手段2〜5の多重系電子計算機用プログラムであって、前記書禁設定がアプリケーションプログラムとオペレーティングシステムとの中間のミドルウェアにて具現化されていることを特徴とする。
このような本発明の多重系電子計算機および多重系電子計算機用プログラムにあっては(解決手段1,2)、プログラムの信頼性向上のため各コンピュータにライトプロテクト機能を持ったものを採用したうえで、そのライトプロテクト機能を活用するために応用演算に先だって書禁設定が行われるが、その際に用いられたメモリ領域指定が転送処理でも用いられるようにもしたことにより、比較対象データ転送のためのメモリ領域指定が簡便に行えることとなる。しかも、比較対象データに含めるべき演算結果が転送対象の書込対象メモリ領域に納められているので、比較対象データ転送のためのメモリ領域指定が的確に行われる。
したがって、この発明によれば、マクロ同期式の多重系電子計算機のプロセッサにライトプロテクト機能を持たせてもプログラムの作成やデバッグの負担が少なくて済む。
また、本発明の多重系電子計算機用プログラムにあっては(解決手段3)、それを搭載した多重系電子計算機において、書禁設定時に用いられたメモリ領域指定が転送処理時までデータ保持されて転送処理に供されるとともに、そのメモリ領域指定を転送処理が既定(既知)の手順で参照しうるようにもしたことにより、転送処理では、パラメータ等を伴った比較対象データ転送のためのメモリ領域指定が必要では無くなるため、単にライトプロテクト機能を導入したのでは各組のプログラム毎に二回も行わなければならなかったメモリ領域指定が一回で済むこととなるので、プログラムの作成やデバッグの負担が極めて少なくて済む。
さらに、本発明の多重系電子計算機用プログラムにあっては(解決手段4)、それを搭載した多重系電子計算機において、確認領域データ更新処理によって書込対象メモリ領域にされたことのあるメモリ領域が判り延いては書込対象メモリ領域にされたことのないメモリ領域も判る。後者のメモリ領域には定数などがデータ保持されており、その中には応用演算で頻繁に参照されるデータもあれば、異常時など稀にしか参照されないデータもあるところ、それらを含んだデータが定値診断処理によって照合回路の比較対象データにされるので、頻繁に参照されるデータばかりか稀にしか参照されないデータについても、データ値の不所望な変化といった異常が発生すると、データ参照を待たずに素早く異常が検出される。
また、本発明の多重系電子計算機用プログラムにあっては(解決手段5)、それを搭載した多重系電子計算機において、確認領域データ更新処理に際して更新される確認領域データを定値診断処理が既定(既知)の手順で参照しうるようにもしたことにより、定値診断処理についても、上述した転送処理のように応用目的に依存しないプログラム構成で具現化できることとなるので、プログラムの作成やデバッグの負担が極めて少なくて済む。
このような本発明の多重系電子計算機および多重系電子計算機用プログラムについて、これを実施するための具体的な形態を、以下の実施例1により説明する。
図1〜5に示した実施例1は、上述した解決手段1〜6(出願当初の請求項1〜6)を具現化したものである。
なお、それらの図示に際し従来と同様の構成要素には同一の符号を付して示したので、重複する再度の説明は割愛し、以下、背景技術欄において既述した従来例との相違点を中心に説明する。
本発明の多重系電子計算機および多重系電子計算機用プログラムの実施例1について、その具体的な構成を、図面を引用して説明する。図1(a)は、二重系電子計算機の二台のプロセッサ10A,10Bそれぞれのメインメモリ13のライトプロテクト制御用データ41〜44のイメージ図であり、同図(b)は、プロセッサ10A,10Bそれぞれに搭載される多重系電子計算機用プログラムの概要フローチャートである。
この二重系電子計算機が従来機(図6参照)とハードウェア面で相違するのは、プロセッサ10すなわちプロセッサ10A,10Bが何れもライトプロテクト機能を具備したものになっている点である。
具体的には(図1(a)参照)、プロセッサ10は、該当系のメインメモリ13のうち少なくともデータ用のメモリ領域を8個のメモリ領域1〜メモリ領域8に分けて、それぞれの部分領域を指定してデータ書き込みの可否を設定しうるようになっている。
なお、図示は割愛したが、プロセッサ10には部分領域毎にデータ書き込みの可否を制御するためのプロテクト設定レジスタが設けられており、このプロテクト設定レジスタは、プロテクト対象のメモリ領域の上記分割数“8”に対応した8ビットの設定データを書き込めるようになっていて、プロテクト設定レジスタの各ビットが各メモリ領域1〜メモリ領域8に一対一で対応している。例えば、下位から1番目のビット値が“0”ならメモリ領域1へのデータ書き込みを許可するが“1”なら書き込みを禁止し、下位から2番目のビット値が“0”ならメモリ領域2へのデータ書き込みを許可するが“1”なら書き込みを禁止し、上位の各ビットについても同様にデータ書き込みの可否を制御するようになっている。なお、データの読み出しはレジスタ設定値の如何によらず可能である。
この二重系電子計算機が従来機とソフトウェア面で相違するのは、書禁設定プログラムと定値診断プログラムと確認領域データ初期化プログラムとが追加された点と、転送プログラムが改良された点と、ライトプロテクト制御用データ41〜44が追加規定された点である。すなわち、プロセッサ10に搭載される多重系電子計算機用プログラムが従来品(図7参照)と相違するのは、書禁設定プログラムとライトプロテクト制御用データ41〜44とが追加されて上述のライトプロテクト機能を稼動させるようになった点と、その書禁設定時のデータを転送処理時にも利用するようにしたことで転送プログラムを使い易くなった点と、新たな確認領域データ初期化プログラムと定値診断プログラムとが追加されて定数等の異常までも早期に検出されるようになった点である。
具体的には(図1(b)参照)、多重系電子計算機用プログラムが、既述した入力処理i(iは1〜Nの何れか)と応用演算i(iは1〜Nの何れか)と出力処理i(iは1〜Nの何れか)とを規定している応用プログラム16と、それらの各処理i(iは1〜Nの何れか)に直接依存することなく処理内容が各処理i(iは1〜Nの何れか)に共通化されて呼び出し手順が簡素化された転送処理を行う新たな転送プログラムと、既述した同期プログラム35とに加えて、メモリ領域指定に基づいてプロテクト設定レジスタにライトプロテクト設定を行う書禁設定i(iは1〜Nの何れか)を行う書禁設定プログラムと、従来は比較対象データに含められなかったデータを比較対象データに含めさせる定値診断処理を行う定値診断プログラムと、ライトプロテクト制御用データ41〜44の値を初期化する確認領域データ初期化プログラムとを具えたものとなっている。
そのプログラムによる処理や設定では、書禁設定iと同期処理と入力処理iと応用演算iと同期処理と転送処理と同期処理と出力処理iとが基本的な処理単位となり(iは1〜Nの何れか)、その処理単位が応用種別等に応じて必要なだけ(1〜N)行われて全応用対応の組合せ処理となり、確認領域データ初期化と組合せ処理と定値診断処理とがその順に行われて一纏まりの一連処理となり、さらに、その一連処理が繰り返されるように、多重系電子計算機用プログラムが構成されている。
従来との相違点について詳述すると、ライトプロテクト制御用データ41〜44は(図1(a)参照)、書禁メモリ領域指定データ41と確認領域データ42と全照合領域データ43と未確認領域データ44とを含んでいる。何れのデータ41,42,43,44も、下位から上位への各ビットをプロテクト設定レジスタの各ビットに一対一で対応づけることができることからビット数がプロテクト設定レジスタのそれ以上であれば良いので本例ではプロテクト設定レジスタと同じ8ビットからなり、応用プログラム16の書き込み対象にされることがないメモリ領域1に割り付けられている。
書禁メモリ領域指定データ41は、プロテクト設定レジスタに設定される値または設定された値をデータ保持するためのものであり、プロテクト設定レジスタに対する直接アクセスにて間に合う場合は省くことも可能である。プロテクト設定レジスタと同じく、各ビット値は、“0”が該当メモリ領域に対するデータの読み書きを許可し、“1”が該当メモリ領域に対するデータ読み出しは許可するがデータ書き込みは禁止する意味である。
確認領域データ42は、確認領域データ初期化の後に一度でもデータ書き込みが許可されたメモリ領域を示すための言わば履歴集約データであり、各ビットは、値“1”が一度はデータ書き込み許可のあったことを示し、値“0”が一度もデータ書き込み許可のなかったことを示すものとなっている。
全照合領域データ43は、少なくとも応用プログラム16の実行によってアクセスされる可能性のあるメモリ領域さらに望ましくは応用プログラム16だけでなく他のプログラムの実行によってもアクセスされる可能性のあるメモリ領域を示すためのものであり、本例ではメモリ領域2〜メモリ領域6までの領域に書込アクセス又は読出アクセスがなされる可能性があるので、一定値“00111110”が初期設定されている。
未確認領域データ44は、確認領域データ初期化の後に一度もデータ書き込みが許可されなかったメモリ領域を示すための言わば履歴集約データであり、各ビットは、値“0”が一度はデータ書き込み許可のあったことを示し、値“1”が一度もデータ書き込み許可のなかったことを示すが、所期の提示の範囲すなわち値“1”を採りうるビット位置が、アクセスされる可能性のあるメモリ領域である全照合領域データ43のビット値“1”の部分に限定されるものとなっている。
確認領域データ初期化プログラムは、パラメータやアーギュメント等と呼ばれる引数が無くても良い呼び出し形式で起動されるものであり、起動後の確認領域データ初期化の処理では、プロテクト設定レジスタにアクセスしてメインメモリ13のメモリ領域1を一時的にデータ書き込み許可状態にしたうえで、確認領域データ42の内容をクリアすることにより、それらの全ビットの値を“0”にするようになっている。
そして、この確認領域データ初期化が上述したように一連処理の先頭で実施されることにより、上記の確認領域データ42が、一連処理において一度でもデータ書き込みが許可されたことのあるメモリ領域を示す履歴集約データとなる。
書禁設定プログラムは、引数を伴う呼び出し形式で起動されるものであり、その引数には、書禁メモリ領域指定データ41に対応したメモリ領域指定を含めておく必要がある。書禁設定iの呼び出し時のメモリ領域指定は、応用演算iの演算結果を書き込む可能性のある書込対象メモリ領域にはデータの読み書きを許可しそれ以外の非書込メモリ領域にはデータ読み出しは許すがデータ書き込みは禁止するというメモリプロテクトを書禁設定時に確立させるためのデータなので、引数のメモリ領域指定の各ビットにはプロテクト設定レジスタや書禁メモリ領域指定データ41に設定したいビット値そのままかビット反転値といった可逆性を備えた対応値(可逆値)が設定されている必要がある。
そして、そのような引数を伴って起動された書禁設定iの処理では、メインメモリ13のメモリ領域1を一時的にデータ書き込み許可状態にしたうえで、引数のメモリ領域指定に基づいて書禁メモリ領域指定データ41とプロテクト設定レジスタの値を更新することにより、その後のライトプロテクト機能が応用演算iに適合させられる。しかも、書禁設定iの処理では、上述したように引数のメモリ領域指定の可逆値がプロテクト設定レジスタや書禁メモリ領域指定データ41に設定されることから、その可逆値を読み出せば直ちに又はビット反転等の逆算を行うだけで、引数のメモリ領域指定が得られるので、書禁設定プログラムは書禁設定に際してメモリ領域指定を他のプログラム特に転送処理プログラムが引数の不要な既定の手順で参照しうる態様でデータ保持するものとなっている。
また、書禁設定iの処理では、メインメモリ13のメモリ領域1が一時的にデータ書き込み許可状態になっているときに、書禁メモリ領域指定データ41の各ビット値を確認領域データ42の論理状態に適合させるために論理反転させたデータと確認領域データ42の各ビット値そのままのデータとについてビット毎に論理和を採り、そのデータを確認領域データ42に書き込むことも行われる。これにより、書禁設定プログラムは、該当系のメインメモリのうち引数のメモリ領域指定にて書込対象メモリ領域にされたことのある部分領域を示す確認領域データ42を書禁設定において該当部分領域の和集合を採る態様で更新する確認領域データ更新処理を行うものとなるとともに、その確認領域データ更新処理に際して確認領域データ42を他のプログラム特に定値診断プログラムが引数の不要な既定の手順で参照しうる態様でデータ保持させるものとなっている。
転送プログラムは、従来とは異なり引数が無くても良い呼び出し形式で起動されるものとなっており、起動後の転送処理では、メインメモリ13のうち書禁メモリ領域指定データ41のビット値“0”に対応しているメモリ領域が、書禁設定iの引数のメモリ領域指定で書込対象メモリ領域にされた部分領域であって、直前の応用演算iで書き込まれた可能性のあるデータを含んでいる部分領域でもあることから、そのメモリ領域のデータが該当系のデュアルポートメモリ31へ転送される。このような転送プログラムは、書禁設定プログラムの引数のメモリ領域指定に基づいて書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理を行うものとなっている。
定値診断プログラムは、やはり引数が無くても良い呼び出し形式で起動されるものであり、起動後の定値診断処理では、次に述べる未確認領域データ44の設定と、既述した同期処理と、上述した転送処理とをその順に行うようになっている。未確認領域データ44の設定処理は、メインメモリ13のメモリ領域1を一時的にデータ書き込み許可状態にしたうえで、確認領域データ42の各ビット値を全照合領域データ43の論理状態に適合させるために論理反転させたデータと全照合領域データ43の各ビット値そのままのデータとについてビット毎に論理積を採り、そのデータを全照合領域データ43に書き込み、さらにデータ転送プログラムを利用するために全照合領域データ43の各ビット値を論理反転させたデータを書禁メモリ領域指定データ41に書き込むようになっている。
そして、この未確認領域データ44の設定処理によって、書禁メモリ領域指定データ41が該当系のメインメモリ13のうち確認領域データ42で示された部分領域から外れた部分領域を示すことになる。さらに、未確認領域データ44の設定処理に続けて、上述したように同期処理と転送処理とが行われると、メインメモリ13のうち書禁メモリ領域指定データ41のビット値“0”に対応しているメモリ領域のデータが該当系のデュアルポートメモリ31へ転送される。これにより、応用プログラム16の実行によって読み出しアクセスされた可能性はあるが書き込みアクセスはされなかったデータすなわち上述の組合せ処理では照合回路20の比較対象データにならなかったデータを保持しているメモリ領域については、定値診断処理のときに照合回路20の照合に付されることとなる。
また、この定値診断プログラムと上述の書禁設定プログラムは、応用プログラム等による予期しない不正な書き込みから保護する必要のあるプロテクト設定レジスタやライトプロテクト制御用データ41〜44に対して書き込みアクセスを行うので、ミドルウェアにて具現化されている。同様のアクセスを行うことがあれば他のプログラム例えば転送プログラムもミドルウェア化される。ミドルウェアは、マクロ同期式の多重系電子計算機の各プロセッサに特化しているので、単体のプロセッサにも使えるオペレーティングシステムより汎用性が低い。しかも、ミドルウェアでは、呼び出された時かその後にライトプロテクト機能に係るプロセッサ動作モードの変更がなされるに対し、通常のサブルーチンやアプリケーションプログラムではそのようなモード変更が必要ない。ミドルウェアは、例えばソフトウェア割込とか例外割込とか割出とか拡張用特権命令などと呼ばれるプログラム指令にて一般モード下で呼び出され、特権モードに移行して所定の処理を行う。
この実施例1の多重系電子計算機および多重系電子計算機用プログラムについて、その使用態様及び動作を、図面を引用して説明する。
図2〜図5は、何れもプロセッサ10A,10Bそれぞれの動作に応じて変化するライトプロテクト制御用データ41〜44のイメージ図であり、時系列に並んでいる。
なお、簡明化のため、Nが“3”であり、応用演算1の書き込みがメモリ領域4に限られ、応用演算2の書き込みがメモリ領域5に限られ、応用演算3の書き込みがメモリ領域4とメモリ領域6とに限られるという具体的な事例について、説明する。
プロセッサ10Aでもプロセッサ10Bでも上述した一纏まりの一連処理が繰り返され(図1(b)参照)、それぞれの一連処理では、順に、確認領域データ初期化と、書禁設定1と同期処理と入力処理1と応用演算1と同期処理と転送処理と同期処理と出力処理1とをその順に行う組合せ処理1と、書禁設定2と同期処理と入力処理2と応用演算2と同期処理と転送処理と同期処理と出力処理2とをその順に行う組合せ処理2と、書禁設定3と同期処理と入力処理3と応用演算3と同期処理と転送処理と同期処理と出力処理3とをその順に行う組合せ処理3と、定値診断処理とが行われる。
詳述すると、或る一連処理では、先ず確認領域データ初期化が実行されて、確認領域データ42がクリアされ、それから組合せ処理1が行われる。
この組合せ処理1では、先ず、ビットパターン“11110111”のメモリ領域指定を引数として書禁設定1が起動される。そして(図2参照)、その引数が書禁メモリ領域指定データ41とプロテクト設定レジスタに設定されるので、メモリ領域4が読み書きアクセス可能になり他のメモリ領域は読出アクセスだけ可能で書込アクセスが禁止される。また(図2参照)、確認領域データ42には、メモリ領域4が一度はデータ書き込み許可のあったことを示すビットパターン“00001000”が設定される。
さらに、組合せ処理1では、同期処理と入力処理1と応用演算1とがその順に実行されるが、その起動手順や処理内容は、応用演算1に適合したメモリプロテクト機能が稼動していること以外、既述した従来のものと同様である。それから、更に続けて、同期処理と転送処理と同期処理と出力処理1もその順に実行されるが、そのうち転送処理では、書禁メモリ領域指定データ41の参照によってメインメモリ13のうちメモリ領域4のデータが比較対象データとしてデュアルポートメモリ31に転送される。そのため、転送プログラムは、メモリ領域指定の引数が不要で、既述した従来のものより起動手順が簡便なものとなっている。その転送処理の前後に実行される同期処理と後に実行される出力処理1の起動手順や処理内容は、既述した従来のものと同様である。また、上述したように初期設定された全照合領域データ43は一定値“00111110”を維持している。
次の組合せ処理2では、ビットパターン“11101111”のメモリ領域指定を引数として書禁設定2が起動される。そして(図3参照)、その引数が書禁メモリ領域指定データ41とプロテクト設定レジスタに設定されるので、メモリ領域5が読み書きアクセス可能になり他のメモリ領域は読出アクセスだけ可能で書込アクセスが禁止される。また、確認領域データ42には、先のメモリ領域4に加えてメモリ領域5も一度はデータ書き込み許可のあったことを示すビットパターン“00011000”が設定される。それから、同期処理と入力処理2と応用演算2と同期処理と転送処理と同期処理と出力処理2が順次実行され、その際、応用演算2ではメモリプロテクト機能が働き、転送プログラムが引数なしでも起動され、転送処理が書禁メモリ領域指定データ41の参照にて的確になされるが、その他は既述した従来のものと同様に遂行される。
さらに、その後の組合せ処理3では、ビットパターン“11010111”のメモリ領域指定を引数として書禁設定3が起動される。そして(図4参照)、その引数が書禁メモリ領域指定データ41とプロテクト設定レジスタに設定されるので、二つのメモリ領域4,6が読み書きアクセス可能になり他のメモリ領域は読出アクセスだけ可能で書込アクセスが禁止される。また、確認領域データ42には、先のメモリ領域4,5に加えてメモリ領域6も一度はデータ書き込み許可のあったことを示すビットパターン“00111000”が設定される。それから、同期処理と入力処理3と応用演算3と同期処理と転送処理と同期処理と出力処理3が順に実行され、その際、応用演算3ではメモリプロテクト機能が働き、転送プログラムが引数なしで起動され、転送処理が書禁メモリ領域指定データ41の参照にて的確になされるが、その他は既述した従来のものと同様に遂行される。
この一連処理の中で最後に実行される定値診断処理プログラムも引数なしで起動され、その定値診断処理の中で、未確認領域データ44の設定と、上述した同期処理と転送処理とが、その順に行われる。そして(図5参照)、未確認領域データ44の設定では、同じ一連処理において先行実施された組合せ処理1〜3で更新された確認領域データ42のビットパターン“00111000”と、値変更の無い全照合領域データ43のビットパターン“00111110”とから、上述した論理演算にて、メインメモリ13のメモリ領域1〜8のうち組合せ処理1〜3で一度も書込アクセスが許可されなかったメモリ領域2,3を示すビットパターン“00000110”が得られ、それが未確認領域データ44に書き込まれるとともに、そのビット反転データが書禁メモリ領域指定データ41に書き込まれる(図5の右下部分を参照)。
さらに、その後の同期処理に続く転送処理では、書禁メモリ領域指定データ41を参照することによりメインメモリ13のうちメモリ領域2,3のデータが比較対象データとされてデュアルポートメモリ31に転送される。このメモリ領域2,3は上述したように組合せ処理1〜3で一度も書込アクセスが許可されなかった部分領域なので、定数など応用演算では変更されないデータまでも定値診断処理時には照合回路20で照合される。
そして、このような一連処理が、メモリプロテクト管理下で、意図しないプログラムによる不正なデータ書換を避けつつ、プロセッサ10A,10Bそれぞれで繰り返される。
そうすると、課題欄で挙げたような異常が発現した場合(図10参照)、時刻tbに10A,10Bの一方に異常が発生してプロセッサ10Aでは演算結果が“1”なのにプロセッサ10Bでは演算結果が“0”になると、その直ぐ後にそれらの演算結果がデュアルポートメモリ31に転送されて照合回路20のフェールセーフ比較回路21によって比較される。そして、既述したように、不一致が検出されて、出力比較回路23から外部へ出力データが出力されなくなる。そのため、マクロ同期式でも、不所望な出力がなされる前に異常が検知されて、不所望な制御等が未然に防止される。
しかも、メモリプロテクト管理のために導入された書禁設定プログラムのメモリ領域指定を転送処理で援用するように転送プログラムが改造されていて、アプリケーションプログラムで転送プログラムを起動するときにメモリ領域指定の引数が無くて良いので、アプリケーションプログラムの作成やデバッグが簡便に行えることとなる。また、定数などを比較対象データにする定値診断処理まで繰り返し行われるので、応用演算のうち稀な事象に対応した演算のときしかアクセスされない定数等に不所望なデータ化けといった異常が発生したような場合でも、密結合バス同期式では稀な事象のときまで異常検出が遅れるのに対し、この多重系電子計算機では稀な事象を待たずに素早く異常が検出される。
[その他]
上記実施例では多重系電子計算機用プログラムによる確認領域データ更新処理が書禁設定に際して実行されるようになっていたが、確認領域データ更新処理は、書禁設定時でなく転送処理に際して実行されるようにしても良く、書禁設定のときと転送処理のときとに分担して或いは重ねて実行されるようにしても良い。
上記実施例ではメインメモリ13を8個の部分領域に分割してライトプロテクト機能を働かせるようになっていたが、8個の分割に限られる訳でなく、ライトプロテクト制御用データ41〜44のビット数を分割数に適合させれば、16分割や32分割さらには不等分割などといった他の分割数でも、不都合なくライトプロテクト機能が働く。
照合回路20は、不一致検出時に少なくとも出力を停止するようになっていれば足りるが、その他の安全事項を行うようにしても良く、例えば出力停止に加えてプロセッサを停止させるようにしても良い。
バスライン11は、CPUバスラインの総てを含んでいる必要はなく、メモリバスと入出力バスを含んでいれば足りる。
待ち状態を制御する専用の信号入力端子が無いプロセッサの場合、起動信号Wを割込要求信号入力端子に送出する等のことで、待ち状態を解くようにしても良い。