(57)【特許請求の範囲】
【請求項１】
各系毎にプロセッサとメインメモリを有し同じプログラムを搭載した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受ける複数系のデュアルポートメモリと、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路と、前記コンピュータそれぞれから出された同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路とを備えた多重系電子計算機において、
前記コンピュータが、該当系のメインメモリの部分領域を指定してデータ書き込みの可否を設定しうるライトプロテクト機能を具備したものであって、前記プログラムを実行することにより、応用目的に対応した応用演算の演算結果を書き込む可能性のある書込対象メモリ領域にはデータ書き込みを許可しそれ以外の非書込メモリ領域にはデータ書き込みを禁止するというメモリ領域指定に基づいて前記ライトプロテクト機能を稼動させる書禁設定と、前記応用演算と、前記同期要求を出して待ち状態になる同期処理と、前記メモリ領域指定に基づいて前記書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理とを、繰り返し行うようになっていることを特徴とする多重系電子計算機。
【請求項２】
各系毎にプロセッサとメインメモリを有するとともに該当系のメインメモリの部分領域を指定してデータ書き込みの可否を設定しうるライトプロテクト機能を具備した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受ける複数系のデュアルポートメモリと、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路と、前記コンピュータそれぞれから出された同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路とを備えた多重系電子計算機における前記コンピュータに搭載される多重系電子計算機用プログラムであって、
搭載先のコンピュータに、応用目的に対応した応用演算の演算結果を書き込む可能性のある書込対象メモリ領域にはデータ書き込みを許可しそれ以外の非書込メモリ領域にはデータ書き込みを禁止するというメモリ領域指定に基づいて前記ライトプロテクト機能を稼動させる書禁設定と、前記応用演算と、前記同期要求を出して待ち状態になる同期処理と、前記メモリ領域指定に基づいて前記書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理とを、繰り返し行わせるようになっていることを特徴とする多重系電子計算機用プログラム。
【請求項３】
前記書禁設定に際して前記メモリ領域指定を前記転送処理が既定の手順で参照しうる態様でデータ保持させることを、搭載先のコンピュータに行わせるようになっている、ことを特徴とする請求項２記載の多重系電子計算機用プログラム。
【請求項４】
該当系のメインメモリのうち前記メモリ領域指定にて書込対象メモリ領域にされたことのある部分領域を示す確認領域データを前記書禁設定および前記転送処理の何れか一方または双方において該当部分領域の和集合を採る態様で更新する確認領域データ更新処理と、該当系のメインメモリのうち前記確認領域データで示された部分領域から外れた部分領域に保持されているデータを該当系のデュアルポートメモリへ転送する定値診断処理とを、搭載先のコンピュータに行わせるようになっている、ことを特徴とする請求項３記載の多重系電子計算機用プログラム。
【請求項５】
前記確認領域データ更新処理に際して前記確認領域データを前記定値診断処理が既定の手順で参照しうる態様でデータ保持させることを、搭載先のコンピュータに行わせるようになっている、ことを特徴とする請求項４記載の多重系電子計算機用プログラム。
【請求項６】
前記書禁設定がアプリケーションプログラムとオペレーティングシステムとの中間のミドルウェアにて具現化されていることを特徴とする請求項２乃至請求項５の何れか一項に記載された多重系電子計算機用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、鉄道信号保安装置などの鉄道信号制御分野で用いられる多重系電子計算機のうち、密結合バス同期式とプログラム同期式との中間的な所謂マクロ同期式を採用したフェールセーフコンピュータであって、各電子計算機がライトプロテクト機能を備えている多重系電子計算機に関する。それに好適な多重系電子計算機用プログラムにも関する。
【背景技術】
【０００２】
鉄道信号制御の分野では、障害発生時にシステムを安全な状態に維持もしくは安全な状態に遷移させるというフェールセーフなコンピュータを構成するため、プロセッサ及びその周辺を二重系・多重系とし、冗長化された処理結果を比較回路に入力して誤り検出を行い、誤り検出時には、装置として出力を安全側に固定するとともに、比較回路自体も自身の故障に対して出力を安全側に固定する、といったことが行われている。そのような多重系電子計算機のうち、マクロ同期式フェールセーフコンピュータやマクロ同期式フェールセーフマイコンなどと呼ばれているマクロ同期式の多重系電子計算機は（例えば特許文献１や非特許文献１参照）、密結合バス同期式を改良して高速化を図ったものであるが、その代償として、比較対象データの選択や転送がプログラムに委ねられている。
【０００３】
すなわち、このマクロ同期式の多重系電子計算機は、各系毎にプロセッサとメインメモリを有し同じプログラムを搭載した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受けるデュアルポートメモリを複数系と、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路とを備えている。
【０００４】
また、前記デュアルポートメモリが各系毎に複数設けられ、前記読出制御回路が各系毎に前記デュアルポートメモリの何れか一つをデータ読出対象に選択してデータの読出および前記照合回路へのデータ送出を繰り返すとともにデータ読出対象のメモリ切替を複数系について一斉に行うようになっており、前記デュアルポートメモリへのデータ書込が複数系の総てで終了したときに前記メモリ切替を行うように前記読出制御回路がなっており、同期要求を出して待ち状態になる同期プログラムが前記コンピュータそれぞれに搭載され、前記同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路が設けられている。
【０００５】
このような改良により、マクロ同期式の多重系電子計算機にあっては、バスラインと照合回路との接続関係がデュアルポートメモリを介在させた間接的なものとなって、クロックを同一・共通にするというハードウェア上の制約が解かれる一方、ソフトウェア負荷の増加は、比較対象データをメインメモリ等からデュアルポートメモリへ転送する程度にとどまる。しかも、比較対象データの転送に際して、各系のプロセッサからデュアルポートメモリへの書込が各系の固有タイミングで行われる一方、デュアルポートメモリからのデータ読出は読出制御回路によって照合回路の入力タイミングに適合するよう一斉に行われるので、各系のプロセッサのマシンサイクル・バスラインのクロックと照合回路の比較サイクル・データ入力クロックとが同じでなくても、複数系のデータが的確に比較されることとなる。そのため、密結合バス同期方式の照合回路を使用してフェールセーフコンピュータを構成してもプロセッサは高速動作させることができる。
【０００６】
また、デュアルポートメモリが各系毎に複数化されるとともに、データ読出対象のメモリの切り替えが複数系で一斉に行われるようにしたことにより、照合回路が、フェールセーフ性の確保のため振り子回路等を具有していて比較対象データの間断なき入力を要する従来品のままであっても、適切に動作する。さらに、複数系の総てでデュアルポートメモリへのデータ書込が終了すると、読出制御回路によってデータ読出対象メモリの切替が行われるようにしたことにより、各系のコンピュータは自系データの書込終了を通知すれば足り他系コンピュータのデータ書込終了を待ち合わせる必要がなくなるので、比較対象データをプログラムで転送しなければならなくなったことに伴うプログラムの改造が少なくて済む。また、各系のコンピュータが同期要求を出すだけで同期が採られるようにしたことにより、各系のコンピュータを非同期で動作させて各系間のタイミングの自由度を高めたことに伴い反射的に必要となる同期採りのためのプログラム改造が少なくて済む。
【０００７】
このようなマクロ同期式の多重系電子計算機の典型例の一つである二重系電子計算機について、その具体的な構成を、図面を引用して説明する。図６は、二重系電子計算機（多重系電子計算機）の全体ブロック図であり、図７は、各計算機の搭載プログラム（多重系電子計算機用プログラム）の概要フローチャートである。
なお、図示に際して、Ａ系の要素には数字符号の末尾にＡを付加し、Ｂ系の要素には数字符号の末尾にＢを付加したが、文中でＡ系・Ｂ系の片系を意識せずに両系を纏めて参照するときは単に数字符号だけを記している。
【０００８】
このマクロ同期式の二重系電子計算機は（図６参照）、同じプログラム１６を搭載したＡ系，Ｂ系（複数系）のコンピュータ１０Ａ〜１５Ａ，１０Ｂ〜１５Ｂと、Ａ，Ｂ両系のデータＤａ，Ｄｂを比較して不一致検出時に出力を停止する照合回路２０と、Ａ，Ｂ両系のコンピュータ１０Ａ〜１５Ａ，１０Ｂ〜１５Ｂと照合回路２０との間に介在して比較対象データＤａ，Ｄｂを照合回路２０へ出力するバス模擬回路３０とを備えている。
Ａ系のコンピュータ１０Ａ〜１５Ａは、プロセッサ１０Ａとバスライン１１Ａと入力回路１２とメインメモリ１３Ａと出力回路１４Ａと出力ライン１５Ａとを具備し、Ｂ系のコンピュータ１０Ｂ〜１５Ｂは、プロセッサ１０Ｂとバスライン１１Ｂと入力回路１２とメインメモリ１３Ｂと出力回路１４Ｂと出力ライン１５Ｂとを具備している。
【０００９】
詳述すると、入力回路１２は、例えば、ラッチ回路や割込要求回路等を具えていて、周辺装置や通信装置等から受けたデータをプロセッサ１０に入力させるようになっている。なお、図６では、Ａ系とＢ系に共有される一つの入力回路１２をＡ系入力回路１２ＡとＢ系入力回路１２Ｂとに分けて示したが、これは図示を明瞭にするための便宜にすぎない。メインメモリ１３は、例えば、プログラム保持に適したＰＲＯＭやデータ保持に適したＳＲＡＭからなり、出力回路１４は、例えば、バッファ等を具えていて、図示しない外部の周辺装置や通信装置等へ出力するデータを一時保持するようになっている。出力ライン１５は、出力回路１４の出力を照合回路２０へ伝送するようになっている。
【００１０】
Ａ系のコンピュータ１０Ａ〜１５Ａには、プロセッサ１０Ａのバスライン１１Ａを介して固有タイミングで転送されたデータの書き込みを受けるデュアルポートメモリ３１Ａが二つ＠１，＠２（複数系）設けられており、Ｂ系のコンピュータ１０Ｂ〜１５Ｂには、プロセッサ１０Ｂのバスライン１１Ｂを介して固有タイミングで転送されたデータの書き込みを受けるデュアルポートメモリ３１Ｂが二つ＠１，＠２（複数系）設けられている。
バス模擬回路３０は、照合回路２０の入力タイミングと共通するタイミングでデュアルポートメモリ３１Ａ，３１ＢそれぞれからアドレスＲａ，Ｒｂのデータを読み出して照合回路２０にその入力対象の複数系のデータ（比較対象データ）Ｄａ，Ｄｂとして送出する読出制御回路３２と、プロセッサ１０Ａ，１０Ｂそれぞれから出される同期要求がＡ系，Ｂ系（複数系）の総てで出揃ったときにコンピュータ１０Ａ〜１５Ａ，１０Ｂ〜１５Ｂの待ち状態を一斉に解く同期制御回路３３が設けられている。
【００１１】
また、Ａ系のコンピュータ１０Ａ〜１５Ａには、応用プログラム１６Ａに加えて、照合回路２０の比較対象になるデータをデュアルポートメモリ３１Ａに転送する転送プログラム３４Ａと、同期要求を出して待ち状態になる同期プログラム３５Ａも、搭載されており、Ｂ系のコンピュータ１０Ｂ〜１５Ｂには、応用プログラム１６Ｂに加えて、照合回路２０の比較対象になるデータをデュアルポートメモリ３１Ｂに転送する転送プログラム３４Ｂと、同期要求を出して待ち状態になる同期プログラム３５Ｂも、搭載されている。Ａ，Ｂ両系のプログラムは同じである。すなわち、応用プログラム１６Ａ，１６Ｂのコードが同じものであり、転送プログラム３４Ａ，３４Ｂのコードも同じものであり、同期プログラム３５Ａ，３５Ｂのコードも同じものである。
【００１２】
照合回路２０は、複数系のデータを比較して不一致検出時に出力を停止するために、フェールセーフ比較回路２１とフェールセーフ電源２２と出力比較回路２３とを具えており、そのうちフェールセーフ比較回路２１は、読出制御回路３２によってデュアルポートメモリ３１Ａ，３１Ｂそれぞれから読み出された二重系のデータＤａ，Ｄｂを入力して、両データが一致しているか否かの比較を行うようになっている。
フェールセーフ比較回路２１は、比較結果として照合信号Ｆを出力するが、いわゆる振り子回路を具有しており、これによって照合信号Ｆは、一致状態の継続している間は、一定周期で交互に値の変化する交番信号となり、比較結果に不一致が検出されると、値の変化しない一定信号となる。
【００１３】
出力比較回路２３は、例えばリレー回路からなり、図示の出力回路１４と図示しない周辺装置や通信装置等の外部装置との間に介挿して設けられ、出力回路１４Ａ，Ｂの出力データについて出力ライン１５の各ライン毎にＡ系とＢ系との論理積を採ってからその論理値を例えば２４Ｖのリレー信号で図示しない外部装置へ送出するようになっている。
フェールセーフ電源２２は、出力比較回路２３に例えば２４Ｖの動作電力を供給するものであるが、その電力供給を照合信号Ｆに応じて選択的に行う。具体的には、照合信号Ｆが交番信号のときだけ出力比較回路２３に動作電力を供給し、照合信号Ｆが一定信号のときには出力比較回路２３に動作電力を供給しないようになっている。
【００１４】
デュアルポートメモリ３１は、メモリアクセス用ポートを二つ具えたメモリであり、各系毎に複数設けられている。すなわち、Ａ系のコンピュータに設けられたＡ系デュアルポートメモリ３１Ａには切替可能な二つのメモリ＠１，＠２が含まれ、Ｂ系のコンピュータに設けられたＢ系デュアルポートメモリ３１Ｂにも切替可能な二つのメモリ＠１，＠２が含まれている。デュアルポートメモリ３１の一方のポートはバスライン１１に接続されていて、接続先の系である該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受けるようになっている。
【００１５】
デュアルポートメモリ３１の他方のポートは、アドレス部が読出制御回路３２のアドレス出力（Ｒａ又はＲｂ）に接続され、データ部が照合回路２０のフェールセーフ比較回路２１のデータ入力（Ｄａ又はＤｂ）に接続されていて、データ読出が読出制御回路３２の制御で行われるものとなっている。そして、Ａ系デュアルポートメモリ３１Ａから読み出されたデータは照合回路２０の一方の入力対象データＤａにされ、Ｂ系デュアルポートメモリ３１Ｂから読み出されたデータは照合回路２０の他方の入力対象データＤｂにされるようになっている。
【００１６】
デュアルポートメモリ３１におけるメモリ＠１，＠２のサイズ（記憶容量）はメインメモリ１３より小さくて良く、例えば、メインメモリ１３がメガバイトオーダのときデュアルポートメモリ３１はキロバイトオーダで足りる。そのような各系のデュアルポートメモリ３１に対するメモリ＠１，＠２の切り替えも読出制御回路３２の制御で行われる。そして、メモリ＠１が読出制御回路３２によってデータ読出対象に選択されているときメモリ＠２がバスライン１１を介するデータ書込対象とされ、メモリ＠２が読出制御回路３２によってデータ読出対象に選択されているときメモリ＠１がバスライン１１を介するデータ書込対象とされるようになっている。
【００１７】
読出制御回路３２は、デュアルポートメモリ３１からのデータ読出を制御するためにアドレスカウンタ等を具備する他、バスライン１１のクロックよりも通常は周波数の低いクロックＣＬＫを発生する発振回路等も具えている。このクロックＣＬＫが、デュアルポートメモリ３１からのデータ読出制御に用いられるとともに、フェールセーフ比較回路２１にデータ入力のクロックとして送出されているので、読出制御回路３２は、照合回路２０の入力タイミングと共通するタイミングでＡ系デュアルポートメモリ３１Ａ及びＢ系デュアルポートメモリ３１ＢそれぞれからアドレスＲａ，Ｒｂのデータを読み出して照合回路２０にその入力対象の複数系のデータＤａ，Ｄｂとして送出するものとなる。
【００１８】
また、読出制御回路３２は、Ａ系のデュアルポートメモリ３１Ａについて二つのメモリ＠１，＠２の何れか一つをデータ読出対象に選択してアドレスＲａからのデータＤａの読出および照合回路２０へのデータＤａの送出を繰り返すとともに、Ｂ系のデュアルポートメモリ３１Ｂについて二つのメモリ＠１，＠２の何れか一つをデータ読出対象に選択してアドレスＲｂからのデータＤｂの読出および照合回路２０へのデータＤｂの送出を繰り返すようになっている。しかも、読出制御回路３２は、それらのデータ読出対象のメモリ切替を、デュアルポートメモリ３１Ａ，３１Ｂへのデータ書込がＡ系，Ｂ系（複数系）の総てで終了したときに、Ａ系，Ｂ系（複数系）について一斉に行うようになっている。
【００１９】
さらに、読出制御回路３２は、データ転送終了の通知や有効アドレス範囲の通知などを各系のコンピュータから受けるために、各系のバスライン１１にも接続されている。そして、各系毎にデュアルポートメモリ３１の何れか一つ即ちメモリ＠１かメモリ＠２か何れか一方をデータ読出対象に選択して行うデータＤａ，Ｄｂの読出および照合回路２０へのデータ送出を間断なく繰り返すようになっている。また、データ読出対象のメモリ切替は、Ａ系，Ｂ系のコンピュータ両方からデータ転送終了の通知を受けたとき、Ａ系デュアルポートメモリ３１Ａ及びＢ系デュアルポートメモリ３１Ｂについて一斉に行うようになっている。
【００２０】
同期制御回路３３は、同期要求を各系のコンピュータから受けるために、各系のバスライン１１に接続されている。そして、同期要求が複数系の総てで出揃ったとき即ちＡ系バスライン１１Ａ経由の同期要求とＢ系バスライン１１Ｂ経由の同期要求との双方を受け取ったときに、コンピュータの待ち状態を解くための起動信号ＷをＡ系プロセッサ１０Ａ及びＢ系プロセッサ１０Ｂに対して一斉に送出するようになっている。大抵の汎用プロセッサ１０は待ち状態を制御するための信号入力端子を具えているので、その端子に起動信号Ｗを送出するようになっている。
【００２１】
応用プログラム１６（図７参照）は、連動装置や新幹線用ＡＴＣ等のアプリケーションに応じて具体的な処理内容が異なるが、入力処理とそれに応じた応用演算と演算結果に基づく出力処理とを基本的な処理単位として、それを応用種別等に応じて必要なだけ（１〜Ｎ）行うようになっている。また、それら一連の処理は、プロセッサ１０によって繰り返し実行される。即ち、入力処理（入力１〜Ｎ）では、入力回路１２からバスライン１１を介してプロセッサ１０へデータが送られ、応用演算（応用１〜Ｎ）では、プロセッサ１０からバスライン１１を介してメインメモリ１３へデータ参照やデータ書込が行われ、出力処理（出力１〜Ｎ）ではプロセッサ１０からバスライン１１を介して出力回路１４へ出力データが送られて、そのデータが出力ライン１５に送出されるようになっている。
【００２２】
転送プログラム３４は、プロセッサ１０によって実行されて、応用プログラム１６による応用演算の中間値や結果値などのうち適宜なデータを比較対象データとしてバスライン１１経由でデュアルポートメモリ３１に書き込むようになっている。
同期プログラム３５は、やはりプロセッサ１０によって実行されて、同期制御回路３３にバスライン１１を介して同期要求を出し、その後は待ち状態になるためのプログラム命令を実行して搭載先のプロセッサ１０を待ち状態にするようになっている。
【００２３】
この転送プログラム３４と同期プログラム３５は、密結合バス同期式からマクロ同期式に移行したことに伴って追加されたものであり、例えばサブルーチン形式で応用プログラム１６の適宜な何カ所かに組み込まれる。具体例を挙げると（図７参照）、転送プログラム３４は、応用プログラム１６の応用演算（１〜Ｎ）それぞれの後に組み込まれ、同期プログラム３５は、応用プログラム１６の入力処理（１〜Ｎ）と転送プログラム３４の転送処理（１〜Ｎ）と応用プログラム１６の出力処理（１〜Ｎ）それぞれの直前に組み込まれている。そして、応用プログラム１６の繰り返し実行（１〜Ｎ）に随伴して、転送プログラム３４及び同期プログラム３５も繰り返し実行される。
【００２４】
このようなマクロ同期式の二重系電子計算機では、Ａ系プロセッサ１０ＡとＢ系プロセッサ１０Ｂのクロックが別個で良いので、Ａ系プロセッサ１０ＡとＢ系プロセッサ１０Ｂとの同期は同期プログラム３５の処理に依存して間欠的に採られるようになっている。比較対象データの転送も転送プログラム３４の処理に依存して間欠的に行われるようになったが、比較対象データの読出は読出制御回路３２によって常に繰り返して行われ、さらに比較処理自体やフェールセーフ性確保は、プログラムでなく、密結合バス同期式のものを踏襲した照合回路２０によって間断なく行われるので、プログラム同期方式でもない。
【００２５】
このような従来の二重系電子計算機（多重系電子計算機）及び各計算機の搭載プログラム（多重系電子計算機用プログラム）について、その使用態様及び動作を、図面を引用して説明する。図８及び図９は、動作説明用のタイムチャートであり、そのうち図８は正常時を示し、図９は異常時を示している。なお、その図示に際しては、説明の都合上、Ａ系とＢ系との速度差を誇張して、Ａ系プロセッサ１０ＡがＢ系プロセッサ１０Ｂよりかなり高速であるように記したが、実用上は、大抵、同一構成のプロセッサを同じ周期のクロックで動作させるので、短期間における両系での処理のタイミングずれは、ほとんど無い。また、図１０は、演算結果に異常が発現したときの一例である。
【００２６】
Ａ系，Ｂ系いずれのコンピュータも正常な場合（図８参照）、何れのコンピュータでも、同期処理と入力処理と応用演算と同期処理と転送処理と同期処理と出力処理とが基本的な処理単位となり、それが応用種別等に応じて必要なだけ（１〜Ｎ）行われ、さらに、それら一連の処理が繰り返される。それら一連の処理のうち応用プログラム１６による入力処理と応用演算と出力処理と、それら一連の処理の繰り返しは、マクロ同期式に特有のものでなく密結合バス同期式など他の方式でも同様に行われるので、ここでは、同期処理と転送処理とが組み込まれた基本的な処理単位の一例を詳述する。
Ａ系プロセッサ１０ＡがＢ系プロセッサ１０Ｂより速いとすると、時刻ｔ１には、前の処理を終えたＡ系プロセッサ１０Ａが、Ａ系転送プログラム３４Ａを実行して、Ａ系バスライン１１Ａを介して同期制御回路３３に同期要求を出しそれから待ち状態になる。
【００２７】
このとき、Ａ系デュアルポートメモリ３１Ａの一方のメモリ＠１にはＡ系プロセッサ１０Ａによる前の前の転送処理で書き込まれた旧々データが保持され、他方のメモリ＠２にはＡ系プロセッサ１０Ａによる前の転送処理で書き込まれた旧データが保持され、このメモリ＠２の旧データが読出制御回路３２によって繰り返し読み出されて照合回路２０の入力データＤａにされる。また、Ｂ系デュアルポートメモリ３１Ｂの一方のメモリ＠１にはＢ系プロセッサ１０Ｂによる前の前の転送処理で書き込まれた旧々データが保持され、他方のメモリ＠２にはＢ系プロセッサ１０Ｂによる前の転送処理で書き込まれた旧データが保持され、このメモリ＠２の旧データが読出制御回路３２によって繰り返し読み出されて照合回路２０の入力データＤｂにされる。
【００２８】
正常時には、両系のデュアルポートメモリ３１Ａ，３１Ｂの同じアドレスから同じタイミングでデータが読み出されるので、クロックＣＬＫで照合回路２０のフェールセーフ比較回路２１に比較対象データとして入力されるデータＤａ，Ｄｂは値が等しい。そのため、照合信号Ｆが交番信号になり、フェールセーフ電源２２から電力を供給されて出力比較回路２３が動作可能な状態におかれる。
そして、時刻ｔ２に、Ｂ系プロセッサ１０Ｂから同期要求が出されると、同期要求が出揃ったことになるので、同期制御回路３３から起動信号Ｗが両プロセッサ１０Ａ，１０Ｂに送出されて、両系で同時に入力処理が実行される。同時なので入力回路１２から両プロセッサ１０Ａ，１０Ｂに同じデータが入力される。
【００２９】
入力処理の後は入力データに基づく応用演算が行われ、既述したようにメインメモリ１３へのデータ参照やデータ書込が行われる。そして、この応用演算でもＡ系プロセッサ１０ＡがＢ系プロセッサ１０Ｂより先に終了したとすると、その時刻ｔ３に、Ａ系プロセッサ１０Ａから同期要求が出され、Ａ系プロセッサ１０Ａが待ち状態になる。その後、時刻ｔ４には、Ｂ系プロセッサ１０Ｂからも同期要求が出されて同期要求が揃い、これに応じて同期制御回路３３から起動信号Ｗが出されて、両系で同時に転送処理が実行される。
【００３０】
転送処理はプロセッサ１０が転送プログラム３４を実行することにより遂行され、応用演算の中間値や結果値などのうち適宜なデータがバスライン１１を介してデュアルポートメモリ３１に書き込まれる。具体的には、Ａ系のコンピュータでは、Ａ系の比較対象用の新データがＡ系プロセッサ１０ＡからＡ系デュアルポートメモリ３１Ａのメモリ＠１に書き込まれ、その有効アドレス範囲の通知がＡ系プロセッサ１０Ａから読出制御回路３２に送られ、更にデータ転送終了の通知もＡ系プロセッサ１０Ａから読出制御回路３２に送られ、それから同期要求がＡ系プロセッサ１０Ａから同期制御回路３３に出されて、時刻ｔ５にはＡ系プロセッサ１０Ａが待ち状態になる。
【００３１】
また、Ｂ系のコンピュータでは、Ｂ系の比較対象用の新データがＢ系プロセッサ１０ＢからＢ系デュアルポートメモリ３１Ｂのメモリ＠１に書き込まれ、その有効アドレス範囲の通知がＢ系プロセッサ１０Ｂから読出制御回路３２に送られ、更にデータ転送終了の通知もＢ系プロセッサ１０Ｂから読出制御回路３２に送られる。この通知がなされた時刻ｔ６には、Ａ系，Ｂ系すべての系でデュアルポートメモリ３１へのデータ書き込みが終了しているので、読出制御回路３２によってデータ読出対象のメモリ切替が行われ、Ａ系，Ｂ系いずれでも、デュアルポートメモリ３１のうち新データを保持しているメモリ＠１が読出制御回路３２のデータ読出対象に選択されるとともに、旧データを保持しているメモリ＠２は次のデータ書き込みに備えてデータ読出対象から外される。
【００３２】
そして、フェールセーフ比較回路２１に比較対象データとして入力されるデータＤａ，Ｄｂが新データに切り替わるが、正常時には、両系の新データも等しいので、引き続き照合信号Ｆが交番信号になり出力比較回路２３が動作可能な状態におかれる。
それから、Ｂ系プロセッサ１０Ｂからも同期要求が出されて同期要求が揃うと、これに応じて同期制御回路３３から起動信号Ｗが出されて、両系で同時に出力処理が実行される。同時なのでＡ系出力回路１４ＡとＢ系出力回路１４Ｂとから出力比較回路２３へ同じデータが送出され、出力比較回路２３から外部に向けたデータ出力がなされる。
【００３３】
これに対し、異常時には（図９参照）、以下のようにして出力比較回路２３から外部へのデータ出力が抑制される。時刻ｔ２以降の入力処理や応用演算あるいは時刻ｔ４以降の転送処理で何れかのコンピュータに異常が生じ、その影響が比較対象データに及ぶと、とりあえず時刻ｔ１〜ｔ６までの各処理は上述した正常時と同様に進行するが、それは処理手順だけのことであり、デュアルポートメモリ３１のメモリ＠１に書き込まれた新データは両系で異なるため、時刻ｔ６に読出制御回路３２の読出対象がメモリ＠２からメモリ＠１に切り替わると、フェールセーフ比較回路２１に比較対象データとして入力されるデータＤａ，Ｄｂが一致せず、不一致が検出される。
すると、フェールセーフ比較回路２１の出力する照合信号Ｆが交番信号から一定信号に変わり、これに応じてフェールセーフ電源２２が出力比較回路２３に電力を供給しなくなるので、出力比較回路２３から外部へ出力データが出力されなくなる。
【００３４】
こうして、マクロ同期式の二重系電子計算機では、故障発生時には照合回路によってデータの外部出力が抑止されて、装置から外部への作用が安全状態に保持されるので、フェールセーフ性が確保される。また、Ａ系バスライン１１ＡクロックとＢ系バスライン１１Ｂのクロックと照合回路２０のクロックＣＬＫとが同じでなくてもフェールセーフコンピュータとして機能するので、例えば、クロックＣＬＫを密結合バス同期式での２５ＭＨｚにとどめたまま、プロセッサ１０にマシンサイクル１５０ＭＨｚやそれ以上の高速なものを採用することができる。さらに、密結合バス同期式と異なり、マクロ同期式の各系のプロセッサ１０Ａ，１０Ｂには、それぞれにキャッシュメモリを持たせることもできる。
【先行技術文献】
【特許文献】
【００３５】
【特許文献１】特許４４５４５３８号公報（特開２００６−３３８０９４号公報）
【非特許文献】
【００３６】
【非特許文献１】尾崎亮介著「マクロ同期方式フェールセーフマイコンの開発」ＤＡＩＤＯ１１２号、１４−１９頁、大同信号株式会社、２００５年１０月発行
【発明の概要】
【発明が解決しようとする課題】
【００３７】
このようなマクロ同期式の多重系電子計算機では、上述したようにバス模擬回路３０を導入してプロセッサの高速化を可能にした代償として、応用プログラム１６に加えて転送プログラム３４と同期プログラム３５もインストールすることが必要になる。それらのうち、応用プログラム１６は処理内容が基本的に従来と同じで良く、同期プログラム３５は、パラメータ等が不要であって、所定タイミングに実行されれば良い。そのため、それらのプログラム１６，３５については、プログラム作成や動作確認の負担が従来の密結合バス同期式の多重系電子計算機のときと大差なく、マクロ同期式への移行が容易である。
【００３８】
これに対し、転送プログラム３４は、応用プログラム１６の応用演算の中間値や結果値（演算結果）などのうち適宜なデータを照合回路２０の比較対象データとしてバス模擬回路３０のデュアルポートメモリ３１へ転送するものであることから、比較対象データの選択や転送がプログラムに委ねられているので、通常のプログラミングでは、プログラマー等が転送プログラム３４のコーディング前に応用プログラム１６毎にメインメモリ１３のデータ領域から比較対象データを選択しておき、コーディング時に応用プログラム１６毎の選択データ領域を転送プログラム３４にパラメータ等で伝えることになる。そのため、プログラム同期式ほどではないが、プログラム作成や動作確認の負担が無視できない。
【００３９】
かかる演算結果を比較対象データに含める必要性について図面を引用して説明する。図１０は、演算結果に異常が発現したときの一例である。この事例の場合、時刻ｔａでは、異常が無く、両プロセッサ１０Ａ，１０Ｂにおいて応用プログラム１６の入力処理（入力ｉ，１≦ｉ≦Ｎ）の入力値も応用演算（応用ｉ，１≦ｉ≦Ｎ）の演算結果も出力処理（出力ｉ，１≦ｉ≦Ｎ）の出力値も同じ値たとえば“０”になっている。
これに対し、その後の時刻ｔｂに１０Ａ，１０Ｂの一方に異常が発生してプロセッサ１０Ａでは演算結果が“１”なのにプロセッサ１０Ｂでは演算結果が“０”になっているが、この時点ｔｂでは、演算結果が未だ出力値に反映されておらず、入力値だけでなく出力値も両プロセッサ１０Ａ，１０Ｂで同じ値たとえば“０”になっている。
【００４０】
しかも、その後の時刻ｔｃには１０Ａ，１０Ｂの他方に異常が発生してプロセッサ１０Ｂでも演算結果が“１”になっているが、この時点ｔｃでも、演算結果が未だ出力値に反映されておらず、入力値と演算結果だけでなく出力値も両プロセッサ１０Ａ，１０Ｂで同じ値たとえば“０”になっている。
そして、その後の時刻ｔｄに至ると演算結果が出力値に反映されて、演算結果だけでなく出力値も両プロセッサ１０Ａ，１０Ｂで同じ値たとえば“１”になる。入力値も異常なく両プロセッサ１０Ａ，１０Ｂで同じ値たとえば“１”になっている。
【００４１】
このような態様で異常が発現した場合、誤った演算結果に基づいて得られた出力値は誤っている可能性があるが、マクロ同期式では、出力値しか比較対象データに含めないと、上記態様の異常が検出されないで見逃されることも有り得る。そして、その場合、意図しない信号制御などを引き起こすおそれもある。そのため、上記のような異常発現態様でも、不所望な制御等の未然防止を図るには、不所望な出力がなされる前に異常が検知されるよう、出力値に限らず演算結果も比較対象データに含めることが必要なのである。
【００４２】
ところで、プロセッサ１０に採用しうるプロセッサには、小型のマイコン（マイクロコンピュータ，マイクロプロセッサ）であっても、メインメモリ１３の所定領域を指定してデータ書き込みを禁止したり許可したりできるものがある。そして、そのようなライトプロテクト機能を持ったプロセッサをプロセッサ１０Ａ，１０Ｂに採用した場合、応用プログラム１６における基本処理単位をなす入力処理（入力ｉ）と応用演算（応用ｉ）と出力処理（出力ｉ）との組（タスク対応プログラムｉ）それぞれについて（ｉは１〜Ｎの何れか）、メインメモリ１３のうち演算結果や出力値を保持させる可能性のある領域にはプロテクトを解除してデータ書き込みを許可するとともに他の領域にはプロテクトを設定してデータ書き込みを禁止するというメモリプロテクト管理を行うこととなる。
【００４３】
そして、各組のプログラム（タスク対応プログラムｉ）が上記のメモリプロテクト管理を行うことによって、意図しないプログラム（タスク対応プログラムｉ）による不正なデータ書換が、自プログラム（タスク対応プログラムｉ）によるものであれ、他プログラム（タスク対応プログラム≠ｉ）によるものであれ、的確に検出されるので、プログラムの信頼性が向上する。
そのため、マクロ同期式の多重系電子計算機についても、プログラムの信頼性を向上させるべく、プロセッサ１０に上述のライトプロテクト機能を持たせるのが望まれる。
【００４４】
しかしながら、上述したマクロ同期式の多重系電子計算機の各プロセッサについて、単にライトプロテクト機能を持たせてメモリプロテクト管理を行わせたのでは、応用プログラム１６の各組のプログラム（タスク対応プログラムｉ）毎に、メモリプロテクト管理のためのメモリ領域指定を行うとともに、比較対象データ転送のためのメモリ領域指定も行うことになる。しかも、各組のプログラムで指定すべきメモリ領域は、応用目的に依存するので、各組のプログラム毎に異なる。
【００４５】
そのため、各組のプログラム毎にメモリ領域の指定を二回も行わなければならず、プログラムの作成やデバッグの負担が倍増してしまいかねない。
そこで、マクロ同期式の多重系電子計算機のプロセッサにライトプロテクト機能を持たせてもプログラムの作成やデバッグの負担が少なくて済むように改良することが、技術的な課題となる。
【課題を解決するための手段】
【００４６】
本発明の多重系電子計算機は（解決手段１）、このような課題を解決するために創案されたものであり、
各系毎にプロセッサとメインメモリを有し同じプログラムを搭載した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受ける複数系のデュアルポートメモリと、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路と、前記コンピュータそれぞれから出された同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路とを備えた多重系電子計算機において、
前記コンピュータが、該当系のメインメモリの部分領域を指定してデータ書き込みの可否を設定しうるライトプロテクト機能を具備したものであって、前記プログラムを実行することにより、応用目的に対応した応用演算の演算結果を書き込む可能性のある書込対象メモリ領域にはデータ書き込みを許可しそれ以外の非書込メモリ領域にはデータ書き込みを禁止するというメモリ領域指定に基づいて前記ライトプロテクト機能を稼動させる書禁設定と、前記応用演算と、前記同期要求を出して待ち状態になる同期処理と、前記メモリ領域指定に基づいて前記書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理とを、繰り返し行うようになっていることを特徴とする。
【００４７】
また、本発明の多重系電子計算機用プログラムは（解決手段２）、上記解決手段１の多重系電子計算機に搭載されるプログラムを特定したものであり、具体的には、
各系毎にプロセッサとメインメモリを有するとともに該当系のメインメモリの部分領域を指定してデータ書き込みの可否を設定しうるライトプロテクト機能を具備した複数系のコンピュータと、複数系のデータを比較して不一致検出時に出力を停止する照合回路と、前記コンピュータ毎に設けられ該当系のプロセッサから該当系のバスラインを介して固有タイミングで転送されたデータの書き込みを受ける複数系のデュアルポートメモリと、前記照合回路の入力タイミングと共通するタイミングで前記デュアルポートメモリそれぞれからデータを読み出して前記照合回路にその入力対象の複数系のデータとして送出する読出制御回路と、前記コンピュータそれぞれから出された同期要求が複数系の総てで出揃ったときに前記コンピュータの待ち状態を一斉に解く同期制御回路とを備えた多重系電子計算機における前記コンピュータに搭載される多重系電子計算機用プログラムであって、
搭載先のコンピュータに、応用目的に対応した応用演算の演算結果を書き込む可能性のある書込対象メモリ領域にはデータ書き込みを許可しそれ以外の非書込メモリ領域にはデータ書き込みを禁止するというメモリ領域指定に基づいて前記ライトプロテクト機能を稼動させる書禁設定と、前記応用演算と、前記同期要求を出して待ち状態になる同期処理と、前記メモリ領域指定に基づいて前記書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理とを、繰り返し行わせるようになっていることを特徴とする。
【００４８】
さらに、本発明の多重系電子計算機用プログラムは（解決手段３）、上記解決手段２の多重系電子計算機用プログラムであって、前記書禁設定に際して前記メモリ領域指定を前記転送処理が既定の手順で参照しうる態様でデータ保持させることを、搭載先のコンピュータに行わせるようになっていることを特徴とする。
【００４９】
また、本発明の多重系電子計算機用プログラムは（解決手段４）、上記解決手段３の多重系電子計算機用プログラムであって、該当系のメインメモリのうち前記メモリ領域指定にて書込対象メモリ領域にされたことのある部分領域を示す確認領域データを前記書禁設定および前記転送処理の何れか一方または双方において該当部分領域の和集合を採る態様で更新する確認領域データ更新処理と、該当系のメインメモリのうち前記確認領域データで示された部分領域から外れた部分領域に保持されているデータを該当系のデュアルポートメモリへ転送する定値診断処理とを、搭載先のコンピュータに行わせるようになっていることを特徴とする。
【００５０】
また、本発明の多重系電子計算機用プログラムは（解決手段５）、上記解決手段４の多重系電子計算機用プログラムであって、前記確認領域データ更新処理に際して前記確認領域データを前記定値診断処理が既定の手順で参照しうる態様でデータ保持させることを、搭載先のコンピュータに行わせるようになっていることを特徴とする。
【００５１】
また、本発明の多重系電子計算機用プログラムは（解決手段６）、上記解決手段２〜５の多重系電子計算機用プログラムであって、前記書禁設定がアプリケーションプログラムとオペレーティングシステムとの中間のミドルウェアにて具現化されていることを特徴とする。
【発明の効果】
【００５２】
このような本発明の多重系電子計算機および多重系電子計算機用プログラムにあっては（解決手段１，２）、プログラムの信頼性向上のため各コンピュータにライトプロテクト機能を持ったものを採用したうえで、そのライトプロテクト機能を活用するために応用演算に先だって書禁設定が行われるが、その際に用いられたメモリ領域指定が転送処理でも用いられるようにもしたことにより、比較対象データ転送のためのメモリ領域指定が簡便に行えることとなる。しかも、比較対象データに含めるべき演算結果が転送対象の書込対象メモリ領域に納められているので、比較対象データ転送のためのメモリ領域指定が的確に行われる。
したがって、この発明によれば、マクロ同期式の多重系電子計算機のプロセッサにライトプロテクト機能を持たせてもプログラムの作成やデバッグの負担が少なくて済む。
【００５３】
また、本発明の多重系電子計算機用プログラムにあっては（解決手段３）、それを搭載した多重系電子計算機において、書禁設定時に用いられたメモリ領域指定が転送処理時までデータ保持されて転送処理に供されるとともに、そのメモリ領域指定を転送処理が既定(既知)の手順で参照しうるようにもしたことにより、転送処理では、パラメータ等を伴った比較対象データ転送のためのメモリ領域指定が必要では無くなるため、単にライトプロテクト機能を導入したのでは各組のプログラム毎に二回も行わなければならなかったメモリ領域指定が一回で済むこととなるので、プログラムの作成やデバッグの負担が極めて少なくて済む。
【００５４】
さらに、本発明の多重系電子計算機用プログラムにあっては（解決手段４）、それを搭載した多重系電子計算機において、確認領域データ更新処理によって書込対象メモリ領域にされたことのあるメモリ領域が判り延いては書込対象メモリ領域にされたことのないメモリ領域も判る。後者のメモリ領域には定数などがデータ保持されており、その中には応用演算で頻繁に参照されるデータもあれば、異常時など稀にしか参照されないデータもあるところ、それらを含んだデータが定値診断処理によって照合回路の比較対象データにされるので、頻繁に参照されるデータばかりか稀にしか参照されないデータについても、データ値の不所望な変化といった異常が発生すると、データ参照を待たずに素早く異常が検出される。
【００５５】
また、本発明の多重系電子計算機用プログラムにあっては（解決手段５）、それを搭載した多重系電子計算機において、確認領域データ更新処理に際して更新される確認領域データを定値診断処理が既定（既知）の手順で参照しうるようにもしたことにより、定値診断処理についても、上述した転送処理のように応用目的に依存しないプログラム構成で具現化できることとなるので、プログラムの作成やデバッグの負担が極めて少なくて済む。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施例１について、多重系電子計算機および多重系電子計算機用プログラムの構造を示し、（ａ）が多重系電子計算機の各計算機のライトプロテクト機能に関わるデータのイメージ図であり、（ｂ）が多重系電子計算機の各計算機に搭載される多重系電子計算機用プログラムの概要フローチャートである。
【図２】本発明の実施例１について、多重系電子計算機の各計算機の動作に応じて変化するデータのイメージ図である。
【図３】本発明の実施例１について、多重系電子計算機の各計算機の動作に応じて変化するデータのイメージ図である。
【図４】本発明の実施例１について、多重系電子計算機の各計算機の動作に応じて変化するデータのイメージ図である。
【図５】本発明の実施例１について、多重系電子計算機の各計算機の動作に応じて変化するデータのイメージ図である。
【図６】従来の多重系電子計算機の全体ブロック図である。
【図７】従来の多重系電子計算機の各計算機に搭載される多重系電子計算機用プログラムの概要フローチャートである。
【図８】正常時の動作説明用タイムチャートである。
【図９】異常時の動作説明用タイムチャートである。
【図１０】異常の発現例である。
【発明を実施するための形態】
【００５７】
このような本発明の多重系電子計算機および多重系電子計算機用プログラムについて、これを実施するための具体的な形態を、以下の実施例１により説明する。
図１〜５に示した実施例１は、上述した解決手段１〜６（出願当初の請求項１〜６）を具現化したものである。
なお、それらの図示に際し従来と同様の構成要素には同一の符号を付して示したので、重複する再度の説明は割愛し、以下、背景技術欄において既述した従来例との相違点を中心に説明する。
【実施例１】
【００５８】
本発明の多重系電子計算機および多重系電子計算機用プログラムの実施例１について、その具体的な構成を、図面を引用して説明する。図１（ａ）は、二重系電子計算機の二台のプロセッサ１０Ａ，１０Ｂそれぞれのメインメモリ１３のライトプロテクト制御用データ４１〜４４のイメージ図であり、同図（ｂ）は、プロセッサ１０Ａ，１０Ｂそれぞれに搭載される多重系電子計算機用プログラムの概要フローチャートである。
【００５９】
この二重系電子計算機が従来機（図６参照）とハードウェア面で相違するのは、プロセッサ１０すなわちプロセッサ１０Ａ，１０Ｂが何れもライトプロテクト機能を具備したものになっている点である。
具体的には（図１（ａ）参照）、プロセッサ１０は、該当系のメインメモリ１３のうち少なくともデータ用のメモリ領域を８個のメモリ領域１〜メモリ領域８に分けて、それぞれの部分領域を指定してデータ書き込みの可否を設定しうるようになっている。
【００６０】
なお、図示は割愛したが、プロセッサ１０には部分領域毎にデータ書き込みの可否を制御するためのプロテクト設定レジスタが設けられており、このプロテクト設定レジスタは、プロテクト対象のメモリ領域の上記分割数“８”に対応した８ビットの設定データを書き込めるようになっていて、プロテクト設定レジスタの各ビットが各メモリ領域１〜メモリ領域８に一対一で対応している。例えば、下位から１番目のビット値が“０”ならメモリ領域１へのデータ書き込みを許可するが“１”なら書き込みを禁止し、下位から２番目のビット値が“０”ならメモリ領域２へのデータ書き込みを許可するが“１”なら書き込みを禁止し、上位の各ビットについても同様にデータ書き込みの可否を制御するようになっている。なお、データの読み出しはレジスタ設定値の如何によらず可能である。
【００６１】
この二重系電子計算機が従来機とソフトウェア面で相違するのは、書禁設定プログラムと定値診断プログラムと確認領域データ初期化プログラムとが追加された点と、転送プログラムが改良された点と、ライトプロテクト制御用データ４１〜４４が追加規定された点である。すなわち、プロセッサ１０に搭載される多重系電子計算機用プログラムが従来品（図７参照）と相違するのは、書禁設定プログラムとライトプロテクト制御用データ４１〜４４とが追加されて上述のライトプロテクト機能を稼動させるようになった点と、その書禁設定時のデータを転送処理時にも利用するようにしたことで転送プログラムを使い易くなった点と、新たな確認領域データ初期化プログラムと定値診断プログラムとが追加されて定数等の異常までも早期に検出されるようになった点である。
【００６２】
具体的には（図１（ｂ）参照）、多重系電子計算機用プログラムが、既述した入力処理ｉ（ｉは１〜Ｎの何れか）と応用演算ｉ（ｉは１〜Ｎの何れか）と出力処理ｉ（ｉは１〜Ｎの何れか）とを規定している応用プログラム１６と、それらの各処理ｉ（ｉは１〜Ｎの何れか）に直接依存することなく処理内容が各処理ｉ（ｉは１〜Ｎの何れか）に共通化されて呼び出し手順が簡素化された転送処理を行う新たな転送プログラムと、既述した同期プログラム３５とに加えて、メモリ領域指定に基づいてプロテクト設定レジスタにライトプロテクト設定を行う書禁設定ｉ（ｉは１〜Ｎの何れか）を行う書禁設定プログラムと、従来は比較対象データに含められなかったデータを比較対象データに含めさせる定値診断処理を行う定値診断プログラムと、ライトプロテクト制御用データ４１〜４４の値を初期化する確認領域データ初期化プログラムとを具えたものとなっている。
【００６３】
そのプログラムによる処理や設定では、書禁設定ｉと同期処理と入力処理ｉと応用演算ｉと同期処理と転送処理と同期処理と出力処理ｉとが基本的な処理単位となり（ｉは１〜Ｎの何れか）、その処理単位が応用種別等に応じて必要なだけ（１〜Ｎ）行われて全応用対応の組合せ処理となり、確認領域データ初期化と組合せ処理と定値診断処理とがその順に行われて一纏まりの一連処理となり、さらに、その一連処理が繰り返されるように、多重系電子計算機用プログラムが構成されている。
【００６４】
従来との相違点について詳述すると、ライトプロテクト制御用データ４１〜４４は（図１（ａ）参照）、書禁メモリ領域指定データ４１と確認領域データ４２と全照合領域データ４３と未確認領域データ４４とを含んでいる。何れのデータ４１，４２，４３，４４も、下位から上位への各ビットをプロテクト設定レジスタの各ビットに一対一で対応づけることができることからビット数がプロテクト設定レジスタのそれ以上であれば良いので本例ではプロテクト設定レジスタと同じ８ビットからなり、応用プログラム１６の書き込み対象にされることがないメモリ領域１に割り付けられている。
【００６５】
書禁メモリ領域指定データ４１は、プロテクト設定レジスタに設定される値または設定された値をデータ保持するためのものであり、プロテクト設定レジスタに対する直接アクセスにて間に合う場合は省くことも可能である。プロテクト設定レジスタと同じく、各ビット値は、“０”が該当メモリ領域に対するデータの読み書きを許可し、“１”が該当メモリ領域に対するデータ読み出しは許可するがデータ書き込みは禁止する意味である。
確認領域データ４２は、確認領域データ初期化の後に一度でもデータ書き込みが許可されたメモリ領域を示すための言わば履歴集約データであり、各ビットは、値“１”が一度はデータ書き込み許可のあったことを示し、値“０”が一度もデータ書き込み許可のなかったことを示すものとなっている。
【００６６】
全照合領域データ４３は、少なくとも応用プログラム１６の実行によってアクセスされる可能性のあるメモリ領域さらに望ましくは応用プログラム１６だけでなく他のプログラムの実行によってもアクセスされる可能性のあるメモリ領域を示すためのものであり、本例ではメモリ領域２〜メモリ領域６までの領域に書込アクセス又は読出アクセスがなされる可能性があるので、一定値“００１１１１１０”が初期設定されている。
未確認領域データ４４は、確認領域データ初期化の後に一度もデータ書き込みが許可されなかったメモリ領域を示すための言わば履歴集約データであり、各ビットは、値“０”が一度はデータ書き込み許可のあったことを示し、値“１”が一度もデータ書き込み許可のなかったことを示すが、所期の提示の範囲すなわち値“１”を採りうるビット位置が、アクセスされる可能性のあるメモリ領域である全照合領域データ４３のビット値“１”の部分に限定されるものとなっている。
【００６７】
確認領域データ初期化プログラムは、パラメータやアーギュメント等と呼ばれる引数が無くても良い呼び出し形式で起動されるものであり、起動後の確認領域データ初期化の処理では、プロテクト設定レジスタにアクセスしてメインメモリ１３のメモリ領域１を一時的にデータ書き込み許可状態にしたうえで、確認領域データ４２の内容をクリアすることにより、それらの全ビットの値を“０”にするようになっている。
そして、この確認領域データ初期化が上述したように一連処理の先頭で実施されることにより、上記の確認領域データ４２が、一連処理において一度でもデータ書き込みが許可されたことのあるメモリ領域を示す履歴集約データとなる。
【００６８】
書禁設定プログラムは、引数を伴う呼び出し形式で起動されるものであり、その引数には、書禁メモリ領域指定データ４１に対応したメモリ領域指定を含めておく必要がある。書禁設定ｉの呼び出し時のメモリ領域指定は、応用演算ｉの演算結果を書き込む可能性のある書込対象メモリ領域にはデータの読み書きを許可しそれ以外の非書込メモリ領域にはデータ読み出しは許すがデータ書き込みは禁止するというメモリプロテクトを書禁設定時に確立させるためのデータなので、引数のメモリ領域指定の各ビットにはプロテクト設定レジスタや書禁メモリ領域指定データ４１に設定したいビット値そのままかビット反転値といった可逆性を備えた対応値（可逆値）が設定されている必要がある。
【００６９】
そして、そのような引数を伴って起動された書禁設定ｉの処理では、メインメモリ１３のメモリ領域１を一時的にデータ書き込み許可状態にしたうえで、引数のメモリ領域指定に基づいて書禁メモリ領域指定データ４１とプロテクト設定レジスタの値を更新することにより、その後のライトプロテクト機能が応用演算ｉに適合させられる。しかも、書禁設定ｉの処理では、上述したように引数のメモリ領域指定の可逆値がプロテクト設定レジスタや書禁メモリ領域指定データ４１に設定されることから、その可逆値を読み出せば直ちに又はビット反転等の逆算を行うだけで、引数のメモリ領域指定が得られるので、書禁設定プログラムは書禁設定に際してメモリ領域指定を他のプログラム特に転送処理プログラムが引数の不要な既定の手順で参照しうる態様でデータ保持するものとなっている。
【００７０】
また、書禁設定ｉの処理では、メインメモリ１３のメモリ領域１が一時的にデータ書き込み許可状態になっているときに、書禁メモリ領域指定データ４１の各ビット値を確認領域データ４２の論理状態に適合させるために論理反転させたデータと確認領域データ４２の各ビット値そのままのデータとについてビット毎に論理和を採り、そのデータを確認領域データ４２に書き込むことも行われる。これにより、書禁設定プログラムは、該当系のメインメモリのうち引数のメモリ領域指定にて書込対象メモリ領域にされたことのある部分領域を示す確認領域データ４２を書禁設定において該当部分領域の和集合を採る態様で更新する確認領域データ更新処理を行うものとなるとともに、その確認領域データ更新処理に際して確認領域データ４２を他のプログラム特に定値診断プログラムが引数の不要な既定の手順で参照しうる態様でデータ保持させるものとなっている。  
【００７１】
転送プログラムは、従来とは異なり引数が無くても良い呼び出し形式で起動されるものとなっており、起動後の転送処理では、メインメモリ１３のうち書禁メモリ領域指定データ４１のビット値“０”に対応しているメモリ領域が、書禁設定ｉの引数のメモリ領域指定で書込対象メモリ領域にされた部分領域であって、直前の応用演算ｉで書き込まれた可能性のあるデータを含んでいる部分領域でもあることから、そのメモリ領域のデータが該当系のデュアルポートメモリ３１へ転送される。このような転送プログラムは、書禁設定プログラムの引数のメモリ領域指定に基づいて書込対象メモリ領域のデータを該当系のデュアルポートメモリへ転送する転送処理を行うものとなっている。
【００７２】
定値診断プログラムは、やはり引数が無くても良い呼び出し形式で起動されるものであり、起動後の定値診断処理では、次に述べる未確認領域データ４４の設定と、既述した同期処理と、上述した転送処理とをその順に行うようになっている。未確認領域データ４４の設定処理は、メインメモリ１３のメモリ領域１を一時的にデータ書き込み許可状態にしたうえで、確認領域データ４２の各ビット値を全照合領域データ４３の論理状態に適合させるために論理反転させたデータと全照合領域データ４３の各ビット値そのままのデータとについてビット毎に論理積を採り、そのデータを全照合領域データ４３に書き込み、さらにデータ転送プログラムを利用するために全照合領域データ４３の各ビット値を論理反転させたデータを書禁メモリ領域指定データ４１に書き込むようになっている。
【００７３】
そして、この未確認領域データ４４の設定処理によって、書禁メモリ領域指定データ４１が該当系のメインメモリ１３のうち確認領域データ４２で示された部分領域から外れた部分領域を示すことになる。さらに、未確認領域データ４４の設定処理に続けて、上述したように同期処理と転送処理とが行われると、メインメモリ１３のうち書禁メモリ領域指定データ４１のビット値“０”に対応しているメモリ領域のデータが該当系のデュアルポートメモリ３１へ転送される。これにより、応用プログラム１６の実行によって読み出しアクセスされた可能性はあるが書き込みアクセスはされなかったデータすなわち上述の組合せ処理では照合回路２０の比較対象データにならなかったデータを保持しているメモリ領域については、定値診断処理のときに照合回路２０の照合に付されることとなる。
【００７４】
また、この定値診断プログラムと上述の書禁設定プログラムは、応用プログラム等による予期しない不正な書き込みから保護する必要のあるプロテクト設定レジスタやライトプロテクト制御用データ４１〜４４に対して書き込みアクセスを行うので、ミドルウェアにて具現化されている。同様のアクセスを行うことがあれば他のプログラム例えば転送プログラムもミドルウェア化される。ミドルウェアは、マクロ同期式の多重系電子計算機の各プロセッサに特化しているので、単体のプロセッサにも使えるオペレーティングシステムより汎用性が低い。しかも、ミドルウェアでは、呼び出された時かその後にライトプロテクト機能に係るプロセッサ動作モードの変更がなされるに対し、通常のサブルーチンやアプリケーションプログラムではそのようなモード変更が必要ない。ミドルウェアは、例えばソフトウェア割込とか例外割込とか割出とか拡張用特権命令などと呼ばれるプログラム指令にて一般モード下で呼び出され、特権モードに移行して所定の処理を行う。
【００７５】
この実施例１の多重系電子計算機および多重系電子計算機用プログラムについて、その使用態様及び動作を、図面を引用して説明する。
【００７６】
図２〜図５は、何れもプロセッサ１０Ａ，１０Ｂそれぞれの動作に応じて変化するライトプロテクト制御用データ４１〜４４のイメージ図であり、時系列に並んでいる。
なお、簡明化のため、Ｎが“３”であり、応用演算１の書き込みがメモリ領域４に限られ、応用演算２の書き込みがメモリ領域５に限られ、応用演算３の書き込みがメモリ領域４とメモリ領域６とに限られるという具体的な事例について、説明する。
【００７７】
プロセッサ１０Ａでもプロセッサ１０Ｂでも上述した一纏まりの一連処理が繰り返され（図１（ｂ）参照）、それぞれの一連処理では、順に、確認領域データ初期化と、書禁設定１と同期処理と入力処理１と応用演算１と同期処理と転送処理と同期処理と出力処理１とをその順に行う組合せ処理１と、書禁設定２と同期処理と入力処理２と応用演算２と同期処理と転送処理と同期処理と出力処理２とをその順に行う組合せ処理２と、書禁設定３と同期処理と入力処理３と応用演算３と同期処理と転送処理と同期処理と出力処理３とをその順に行う組合せ処理３と、定値診断処理とが行われる。
【００７８】
詳述すると、或る一連処理では、先ず確認領域データ初期化が実行されて、確認領域データ４２がクリアされ、それから組合せ処理１が行われる。
この組合せ処理１では、先ず、ビットパターン“１１１１０１１１”のメモリ領域指定を引数として書禁設定１が起動される。そして（図２参照）、その引数が書禁メモリ領域指定データ４１とプロテクト設定レジスタに設定されるので、メモリ領域４が読み書きアクセス可能になり他のメモリ領域は読出アクセスだけ可能で書込アクセスが禁止される。また（図２参照）、確認領域データ４２には、メモリ領域４が一度はデータ書き込み許可のあったことを示すビットパターン“００００１０００”が設定される。
【００７９】
さらに、組合せ処理１では、同期処理と入力処理１と応用演算１とがその順に実行されるが、その起動手順や処理内容は、応用演算１に適合したメモリプロテクト機能が稼動していること以外、既述した従来のものと同様である。それから、更に続けて、同期処理と転送処理と同期処理と出力処理１もその順に実行されるが、そのうち転送処理では、書禁メモリ領域指定データ４１の参照によってメインメモリ１３のうちメモリ領域４のデータが比較対象データとしてデュアルポートメモリ３１に転送される。そのため、転送プログラムは、メモリ領域指定の引数が不要で、既述した従来のものより起動手順が簡便なものとなっている。その転送処理の前後に実行される同期処理と後に実行される出力処理１の起動手順や処理内容は、既述した従来のものと同様である。また、上述したように初期設定された全照合領域データ４３は一定値“００１１１１１０”を維持している。
【００８０】
次の組合せ処理２では、ビットパターン“１１１０１１１１”のメモリ領域指定を引数として書禁設定２が起動される。そして（図３参照）、その引数が書禁メモリ領域指定データ４１とプロテクト設定レジスタに設定されるので、メモリ領域５が読み書きアクセス可能になり他のメモリ領域は読出アクセスだけ可能で書込アクセスが禁止される。また、確認領域データ４２には、先のメモリ領域４に加えてメモリ領域５も一度はデータ書き込み許可のあったことを示すビットパターン“０００１１０００”が設定される。それから、同期処理と入力処理２と応用演算２と同期処理と転送処理と同期処理と出力処理２が順次実行され、その際、応用演算２ではメモリプロテクト機能が働き、転送プログラムが引数なしでも起動され、転送処理が書禁メモリ領域指定データ４１の参照にて的確になされるが、その他は既述した従来のものと同様に遂行される。
【００８１】
さらに、その後の組合せ処理３では、ビットパターン“１１０１０１１１”のメモリ領域指定を引数として書禁設定３が起動される。そして（図４参照）、その引数が書禁メモリ領域指定データ４１とプロテクト設定レジスタに設定されるので、二つのメモリ領域４，６が読み書きアクセス可能になり他のメモリ領域は読出アクセスだけ可能で書込アクセスが禁止される。また、確認領域データ４２には、先のメモリ領域４，５に加えてメモリ領域６も一度はデータ書き込み許可のあったことを示すビットパターン“００１１１０００”が設定される。それから、同期処理と入力処理３と応用演算３と同期処理と転送処理と同期処理と出力処理３が順に実行され、その際、応用演算３ではメモリプロテクト機能が働き、転送プログラムが引数なしで起動され、転送処理が書禁メモリ領域指定データ４１の参照にて的確になされるが、その他は既述した従来のものと同様に遂行される。
【００８２】
この一連処理の中で最後に実行される定値診断処理プログラムも引数なしで起動され、その定値診断処理の中で、未確認領域データ４４の設定と、上述した同期処理と転送処理とが、その順に行われる。そして（図５参照）、未確認領域データ４４の設定では、同じ一連処理において先行実施された組合せ処理１〜３で更新された確認領域データ４２のビットパターン“００１１１０００”と、値変更の無い全照合領域データ４３のビットパターン“００１１１１１０”とから、上述した論理演算にて、メインメモリ１３のメモリ領域１〜８のうち組合せ処理１〜３で一度も書込アクセスが許可されなかったメモリ領域２，３を示すビットパターン“０００００１１０”が得られ、それが未確認領域データ４４に書き込まれるとともに、そのビット反転データが書禁メモリ領域指定データ４１に書き込まれる（図５の右下部分を参照）。
【００８３】
さらに、その後の同期処理に続く転送処理では、書禁メモリ領域指定データ４１を参照することによりメインメモリ１３のうちメモリ領域２，３のデータが比較対象データとされてデュアルポートメモリ３１に転送される。このメモリ領域２，３は上述したように組合せ処理１〜３で一度も書込アクセスが許可されなかった部分領域なので、定数など応用演算では変更されないデータまでも定値診断処理時には照合回路２０で照合される。
そして、このような一連処理が、メモリプロテクト管理下で、意図しないプログラムによる不正なデータ書換を避けつつ、プロセッサ１０Ａ，１０Ｂそれぞれで繰り返される。
【００８４】
そうすると、課題欄で挙げたような異常が発現した場合（図１０参照）、時刻ｔｂに１０Ａ，１０Ｂの一方に異常が発生してプロセッサ１０Ａでは演算結果が“１”なのにプロセッサ１０Ｂでは演算結果が“０”になると、その直ぐ後にそれらの演算結果がデュアルポートメモリ３１に転送されて照合回路２０のフェールセーフ比較回路２１によって比較される。そして、既述したように、不一致が検出されて、出力比較回路２３から外部へ出力データが出力されなくなる。そのため、マクロ同期式でも、不所望な出力がなされる前に異常が検知されて、不所望な制御等が未然に防止される。
【００８５】
しかも、メモリプロテクト管理のために導入された書禁設定プログラムのメモリ領域指定を転送処理で援用するように転送プログラムが改造されていて、アプリケーションプログラムで転送プログラムを起動するときにメモリ領域指定の引数が無くて良いので、アプリケーションプログラムの作成やデバッグが簡便に行えることとなる。また、定数などを比較対象データにする定値診断処理まで繰り返し行われるので、応用演算のうち稀な事象に対応した演算のときしかアクセスされない定数等に不所望なデータ化けといった異常が発生したような場合でも、密結合バス同期式では稀な事象のときまで異常検出が遅れるのに対し、この多重系電子計算機では稀な事象を待たずに素早く異常が検出される。
【００８６】
［その他］
上記実施例では多重系電子計算機用プログラムによる確認領域データ更新処理が書禁設定に際して実行されるようになっていたが、確認領域データ更新処理は、書禁設定時でなく転送処理に際して実行されるようにしても良く、書禁設定のときと転送処理のときとに分担して或いは重ねて実行されるようにしても良い。
上記実施例ではメインメモリ１３を８個の部分領域に分割してライトプロテクト機能を働かせるようになっていたが、８個の分割に限られる訳でなく、ライトプロテクト制御用データ４１〜４４のビット数を分割数に適合させれば、１６分割や３２分割さらには不等分割などといった他の分割数でも、不都合なくライトプロテクト機能が働く。
【００８７】
照合回路２０は、不一致検出時に少なくとも出力を停止するようになっていれば足りるが、その他の安全事項を行うようにしても良く、例えば出力停止に加えてプロセッサを停止させるようにしても良い。
バスライン１１は、ＣＰＵバスラインの総てを含んでいる必要はなく、メモリバスと入出力バスを含んでいれば足りる。
待ち状態を制御する専用の信号入力端子が無いプロセッサの場合、起動信号Ｗを割込要求信号入力端子に送出する等のことで、待ち状態を解くようにしても良い。
【産業上の利用可能性】
【００８８】
本発明は、上述した二重系電子計算機に適用が限られるものでなく、三重系以上の多重系電子計算機にも適用することができる。
【符号の説明】
【００８９】
１０…プロセッサ（ＣＰＵ）、
１１…バスライン、１２…入力回路、１３…メインメモリ、
１４…出力回路、１５…出力ライン、１６…応用プログラム、
２０…照合回路、
２１…フェールセーフ比較回路（ＦＳ）、
２２…フェールセーフ電源（ＦＳ）、２３…出力比較回路、
３０…バス模擬回路、
３１…デュアルポートメモリ、３２…読出制御回路、
３３…同期制御回路、３４…転送プログラム、３５…同期プログラム、
４１…書禁メモリ領域指定データ、４２…確認領域データ、
４３…全照合領域データ、４４…未確認領域データ
【図１】
0006646322.tif 000002
【図２】
0006646322.tif 000003
【図３】
0006646322.tif 000004
【図４】
0006646322.tif 000005
【図５】
0006646322.tif 000006
【図６】
0006646322.tif 000007
【図７】
0006646322.tif 000008
【図８】
0006646322.tif 000009
【図９】
0006646322.tif 000010
【図１０】
0006646322.tif 000011