(57)【特許請求の範囲】
【請求項１】
複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、
対応する処理装置と共有バスシステムとから送られてくるデータのいずれかを選択し、アドレスを指定して、メモリユニット内のメモリセルに書き込むデータ入力手段と、このデータ入力手段によるデータの書き込み動作中に、メモリセルを前記処理装置からのアドレスで指定して、前記処理装置に対してデータを読み出すデータ出力手段と、処理装置が対応するメモリユニット内のメモリセルに書き込むデータを前記共有バスシステムに出力するライト情報出力手段と、を備えたことを特徴とする共有メモリシステム。
【請求項２】
複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、
対応する処理装置と共有バスシステムとから送られてくるデータ及びアドレスのうちいずれか一方のデータ及びアドレスを選択する選択手段と、処理装置から対応するメモリユニットに送られてその中のメモリセルに書き込まれるデータを、前記共有バスシステムに出力するライト情報出力手段と、メモリユニットに、アドレスによって指定できる複数のメモリセルと、前記共有バスシステムまたは処理装置のいずれかからのデータを書き込むアドレスを指定するライトアドレス指定手段及び指定されたアドレスのメモリセルにデータを書き込む書き込み手段と、前記各手段によるデータの書き込み動作中に、前記処理装置からのアドレスでメモリセルを指定して前記処理装置に対してデータを読み出すことができるリードアドレス指定手段及びデータの読み出し手段と、を備えたことを特徴とする共有メモリシステム。
【請求項３】
請求項１に記載の共有メモリシステムにおいて、処理装置が対応するメモリユニットからデータを読み出すタイミングと共有バスシステムからのデータをメモリユニットに書き込むタイミングとを一つの基準クロックに同期させる同期制御手段を設けたことを特徴とする共有メモリシステム。
【請求項４】
請求項１に記載の共有メモリシステムにおいて、処理の終了によって非アクティブからアクティブに転じる同期要求信号を出力する手段を各処理装置に設けると共に、協調して処理を行う各処理装置からの同期要求信号が全てアクティブに転じたことを受けて同期処理完了信号をアクティブに転じ、同期要求信号を出力した処理装置によるメモリユニットからのデータの読み出しを可能にする同期化手段を設けたことを特徴とする共有メモリシステム。
【請求項５】
請求項４に記載の共有メモリシステムにおいて、同期処理完了信号がアクティブに転じた時点でメモリユニットへの書き込み動作が発生している場合、その書き込み動作が連続して発生している期間、前記メモリユニットからの読み出し処理を禁止する手段を備えたことを特徴とする共有メモリシステム。
【請求項６】
請求項２に記載の共有メモリシステムにおいて、前記メモリユニットのデータの読み出し手段に、読み出されるデ−タをラッチするリードデ−タラッチを備えたことを特徴とする共有メモリシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は複数の処理装置間で情報をやりとりするための並列型処理装置と、このような装置で使用され得るメモリＬＳＩに関する。
【０００２】
【従来の技術】
従来の並列型処理装置の共有メモリシステムとしては、共有バスシステムの上に一つの共有メモリを有し、それを複数のプロセッサで共通に利用する方式を採っているものがある。前記共有バスシステムは共有バスやこの共有バスに接続された機器から出される共有バスへのアクセス要求を調停してアクセスする許可を与えるアービタ回路や前記共有メモリへのデータの入出力を行う機器等を適宜含んで構成されている。
【０００３】
さらに高度な共有メモリシステムとしては、特開平５−２９００００号公報に示されるシステムのように、共有バスシステムでのアクセスの競合を減らすため、各プロセッサに分散して共有メモリ（メモリユニット）を設けたものがある。このような共有メモリはローカル共有メモリ又は分散共有メモリ等の名称で呼ばれることがある。
【０００４】
このローカル共有メモリを備えた並列型処理装置の共有メモリシステムとしては、一つのプロセッサのローカル共有メモリの内容が変更された場合、その内容をブロ−ドキャストすることにより他のプロセッサのローカル共有メモリの内容も変更する方式のブロ−ドキャスト型並列型処理装置が知られている。上記特開平５−２９００００号公報に示されたシステムもこのブロ−ドキャスト型に属するものである。
【０００５】
【発明が解決しようとする課題】
共有バスシステムに一つの共有メモリを有するタイプの並列型処理装置では、複数のプロセッサからの大量の読み出しサイクルや書き込みサイクルが共有バスシステム上で複雑に競合する可能性がある。このアクセス競合を調停するために共有バスシステム側では無駄時間が発生し、それに伴ってスル−プットが低下する。また、これに連動してプロセッサ側の待機時間が長くなり、処理系全体のオ−バ−ヘッドが増加する等の問題も生じる。
【０００６】
特開平５−２９００００号公報に示されたシステムのようにブロ−ドキャスト型の共有メモリシステムを用いれば、共有バスシステム上にはロ−カル共有メモリに対するデータの書き込みサイクルのみが生成されることになる。そして、共有メモリからのデータの読み出しサイクルは各プロセッサに分散して配置されたロ−カル共有メモリに対して、各プロセッサ単位に独立かつ並行して行われる。従って、各プロセッサの共有メモリに対する読み出しサイクル同志の間ではアクセス競合が発生せず、スル−プットは向上する。
【０００７】
しかし、ブロ−ドキャスト型の共有メモリシステムを用いても、ロ−カル共有メモリに対するプロセッサ側からの読み出しサイクルと共有バスシステム側からの書き込みサイクルとは、このロ−カル共有メモリ上で競合（リ−ドサイクルとライトサイクルとのアクセス競合）することになる。このため、ブロ−ドキャスト型の共有メモリシステムを有する並列型処理装置においても、オ−バ−ヘッドや無駄時間等の除去効果は十分には得られていない。尚、この競合はブロ−ドキャスト型以外の共有メモリシステムにおいても生じるものである。
【０００８】
尚、共有メモリシステムを有する並列型処理装置においては、協調して処理を進める複数のプロセッサが互いのタスク処理において、タスク処理結果を確実に後続のタスク処理に受け渡す必要が生じる場合がある。このとき、プロセッサ等の処理装置間のデ−タ転送時間の遅れ（通信遅れ）を考慮する必要がある。ブロ−ドキャスト方式を用いた共有メモリシステムの場合においても、ロ−カル共有メモリ上での上記のアクセス競合を低減した並列型処理装置に適した同期化手段を設けることが望ましい。
【０００９】
そこで、本発明の目的は、ロ−カル共有メモリに対するプロセッサ等の処理装置側からの読み出しサイクルと共有バスシステム側からの書き込みサイクルとのロ−カル共有メモリ上でのアクセス競合を低減した共有メモリシステム、並列型処理装置、またはこのような装置で使用され得るメモリＬＳＩを提供することにある。
【００１０】
また、本発明のもう一つの目的は、ロ−カル共有メモリ上でのアクセス競合を低減した上で、タスク間で確実にデータを受け渡すことを保障する同期化手段を提供することにある。
【００１１】
【課題を解決するための手段】
上記の目的は、複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、対応する処理装置と共有バスシステムとから送られてくるデータのいずれかを選択し、アドレスを指定して、メモリユニット内のメモリセルに書き込むデータ入力手段と、前記手段によるデータの書き込み動作中に、メモリセルをアドレスで指定して、データを読み出すデータ出力手段と、処理装置が対応するメモリユニット内のメモリセルに書き込むデータを前記共有バスシステムに出力するライト情報出力手段と、を備えることにより達成される。
【００１２】
上記の目的は、複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、対応する処理装置と共有バスシステムとから送られてくるデータ及びアドレスのうちいずれか一方のデータ及びアドレスを選択する選択手段と、処理装置から対応するメモリユニットに送られてその中のメモリセルに書き込まれるデータを、前記共有バスシステムに出力するライト情報出力手段と、メモリユニットに、アドレスによって指定できる複数のメモリセルと、データを書き込むアドレスを指定するライトアドレス指定手段及び指定されたアドレスのメモリセルにデータを書き込む書き込み手段と、前記各手段によるデータの書き込み動作中に、アドレスでメモリセルを指定してデータを読み出すことができるリードアドレス指定手段及びデータの読み出し手段とを備えることによっても達成できる。
【００２１】
【作用】
データ入力手段は、処理装置又は共有バスシステムから送られてくるデータ及びアドレスのうちのいずれか一方のデータ及びアドレスを選択して、対応するメモリユニット内のメモリセルに書き込む。また、ライト情報出力手段は、処理装置からメモリユニットに送られるデータを共有バスシステムに出力する。このデータは他の処理装置のメモリユニットへの書き込みを行うようにする。一方、データ出力手段は、データ入力手段の書き込み動作中に、メモリセルをアドレスで指定してデータを読み出す。
【００２２】
このように構成したことにより、メモリユニット内のメモリセルへのデータの書き込み処理と読み出し処理とを並行して行うことができる。従って、メモリユニット（ロ−カル共有メモリ）に対する処理装置側からの読み出しサイクルと共有バスシステム側からの書き込みサイクルとが、このメモリユニット（ロ−カル共有メモリ）上で起こすアクセス競合を低減することができる。
【００２３】
このとき、データを書き込むために指定するメモリセルと、データを読み出すために指定するメモリセルとは、同じであっても構わない。つまり、書き込み処理中のメモリセルからデータを読み出すことができる。
【００２４】
また、上述のメモリＬＳＩにおいては、データを読み出すメモリセルを指定するリードアドレス指定手段及び指定したメモリセルからデータを読み出す読み出し手段と、データを書き込むメモリセルを指定するライトアドレス及び指定したメモリセルにデータを書き込む書き込み手段とが独立して設けられたことにより、データの読み出し処理とデータの書き込み処理とを並行して行うことができる。これによって、メモリＬＳＩ上における読み出しサイクルと書き込みサイクルとのアクセス競合を低減させることができる。
【００２５】
また、同期化手段は協調して処理を行う各処理装置からの同期要求信号を監視する。この同期要求信号は前記処理装置が処理を終了したときに同期化手段に対して出力し、同期化手段は全ての同期要求信号が揃った後（アクティブに転じた後）、この同期要求信号を出力した処理装置が対応するメモリユニットからデータの読み出しを行うことを可能にする。これによって、協同して処理を進めている他の処理装置からの必要な情報が各処理装置に対応するメモリユニット（ローカル共有メモリ）に書き込まれていない状態で、各処理装置がローカル共有メモリにアクセスしてしまい、誤ったデータを得て誤った処理結果を生成することを防ぐことができる。
【００２６】
このとき、上記局所同期用インターロック回路を備えることにより、同期処理完了信号が発生されてローカル共有メモリのデータが実際に書き替わるまでの期間、処理装置によるデータの読み出し処理を待たせることにより、処理装置が古いデータを得て誤処理を行わないようにすることができる。
【００２７】
上記同期制御手段は、共有メモリシステム全体を一つのクロックに同期させるので、非同期で動作する各手段または処理を同期させるためのオーバーヘッドを除去することができ、通信レイテンシ（遅れ）を改善することができる。
【００２８】
処理装置がメモリユニット又はメモリセルから読み出すデータをリードデ−タラッチによってラッチすることにより、読み出し処理に関係なく書き込み処理を実行することができる。
【００２９】
また、本発明のメモリＬＳＩは、データの書き込みのみに使用されるポートと、データの読み出しのみに使用されるポートと、データを書き込むアドレスを指定するライトアドレス指定ポートと、データを読み出すアドレスを指定するリードアドレス指定ポートとを備えることにより、データの読み出し処理とデータの書き込み処理とを並行して行うことを可能にする。
【００３０】
また、上述したメモリＬＳＩは、従来、最低でも二つの処理サイクルを要して実行していた書き込み処理と読み出し処理とを一つの処理サイクルで実行することを可能にする。この処理サイクルは最も短いものでもＣＭＯＳプロセスを用いたＩＣまたはＬＳＩでは１０ｎｓ程度であり、バイポーラＣＭＯＳプロセスを用いたＩＣまたはＬＳＩでは５ｎｓ程度である。従って、書き込み処理と読み出し処理とを実行するために、従来はＣＭＯＳプロセスを用いたＩＣまたはＬＳＩでは２０ｎｓ程度、バイポーラＣＭＯＳプロセスを用いたものでも１０ｎｓ程度を要していた。これに対し、本発明のメモリＬＳＩは、書き込み処理と読み出し処理とを並列に実行可能にすることにより、これらの処理を一つの処理サイクルで実行し、書き込み処理と読み出し処理とを５ｎｓ以下の時間で実行することを可能にした。
【００３１】
上述した本発明のメモリＬＳＩを共有メモリシステムのメモリユニット（ローカル共有メモリ）として用いることにより、このメモリユニット（ローカル共有メモリ）からのデータの読み出し処理とローカル共有メモリへのデータの書き込み処理とを並行して行うことが可能な並列型処理装置を構成することができる。
【００３２】
さらに、上述のような共有メモリシステム又はメモリＬＳＩを用いた共有メモリシステムを各処理装置に分散せず、複数の処理装置に対して設けても、上記の書き込みサイクルと読み出しサイクルとのアクセス競合を低減することが可能であろう。
【００３３】
尚、以下の説明においては、共有メモリシステムを単に共有メモリと呼ぶ場合もある。
【００３４】
【実施例】
複数のプロセッサからなるマルチプロセッサシステムにおいて、プロセッサ間の共有システム（共有メモリ、共有Ｉ／Ｏなどプロセッサ間から自由にアクセス可能な共有リソ−ス）とプロセッサ間の待ち合わせ処理すなわち、プロセッサ間同期処理を実行する同期処理回路とを組み合わせて、コントロ−ルフロ−的な並列処理制御とデ−タフロ−的な並列処理制御とのコンビネ−ションで並列処理効率を向上させる手法は、特開平５−２５６８号公報に示されるように従来システムですでに用いられている例がある。
【００３５】
この特開平５−２５６８号公報は、全体のア−キテクチャと手法について述べている。本発明においては、本明細書で開示した共有メモリへの高効率なアクセス手法及び構成において最適な同期処理方法を開示している。
【００３６】
まず、図１の構成と並列処理時のプロセッサ間同期処理手法について簡単に述べる。
【００３７】
図１に示したシステムは、複数のプロセッサ０〜ｎとそれらのいずれからも自由にアクセス可能なリソ−スである共有システムとから構成されるマルチプロセッサシステムにおいて、共有システムの１つである共有メモリシステム１０１０、１０１１〜１０１ｎを各プロセッサからみたときそれぞれのプロセッサのロ−カルメモリと同等とみなせるよう、共有システムコントロ−ラと共有メモリとを一体化した形で各プロセッサに対応してそれぞれ配置して、あるプロセッサが自身の共有メモリシステム内の共有メモリの内容を変更すると他のプロセッサの共有システム内の共有メモリもそれに対応して変更されるブロ−ドキャスト方式の制御を行うものとしている。
【００３８】
さらに、各プロセッサ間の同期処理を行い、各プロセッサ間で実行される各タスクの並列処理を制御するため同期処理回路１０００を設けて、特開平３−２３４５３５号公報に示されたような、コントロ−ルフロ−とデ−タフロ−とを組み合わせた並列処理制御を行う。
【００３９】
すなわち、あるプロセッサがあるタスクを終了した時点で、タスクの終了を知らせる同期リクエスト（ＳＲＥＱ）を同期処理回路１０００に対し発行し、待ち合わせ処理（同期処理）を行わないといけないタスクを実行している他のプロセッサのタスク処理が終了してそのプロセッサが同期リクエスト（ＳＲＥＱ）を同期処理回路１０００に対し発行するまで同期完了情報（ＳＹＮＣＯＫ）を非アクティブに保つように同期処理回路１０００は動作する。そして実際に、プロセッサを待ち合わせさせる処理は、そのプロセッサが共有メモリにアクセスしたとき実行され、その時、ＳＹＮＣＯＫがアクティブでなければアクティブになるまでプロセッサの共有メモリへのアクセスをペンディングし、ＳＹＮＣＯＫがアクティブであれば無条件で共有メモリへのアクセスを許可するように動作する。
【００４０】
なお、本例のＳＹＮＣＯＫ信号は、特開平５−２５６８号公報におけるＴＥＳＴ信号とほぼ等価の機能を有すると考えて良い。
【００４１】
図１において、プロセッサ０〜ｎはそれぞれ対応する共有メモリシステム
１０１０〜１０１ｎにデ−タバス（Ｄ）、アドレスバス（Ａ）、コントロ−ルバス（Ｃ）によって接続されている。本例では、プロセッサによる対応する共有メモリシステムへのアクセスが発生するとそれを示す共有システムイネ−ブル（ＣＳＥＮ）がアクティブになり、共有メモリシステムへのアクセスサイクルの開始を伝える。
【００４２】
ＣＳＥＮに相当する信号は、各共有メモリシステム１０１０〜１０１ｎの中でアドレス信号Ａ等をデコ−ドすることによって内部的に生成することも可能であるが、プロセッサ０〜ｎ側で先行してデコ−ドして生成した方が遅れ時間をより少なくできる可能性が高いため、本例ではＤ，Ａ，Ｃ，の各信号群とは独立した信号として直接プロセッサ側からＣＳＥＮを与えるようにしている。
【００４３】
さらに図１において、各共有メモリシステム１０１０〜１０１ｎは共有バスシステム（信号線ＲＥＱ，Ｄａｔａ，Ａｄｄｒｅｓｓ，Ｃｏｎｔｒｏｌ，ＡＣＫｓｉｇｎａｌから成る）１９００に接続される。
【００４４】
前述したように、この共有バスシステム１９００は、共有メモリに対してあるプロセッサがデ−タの変更を行う（書き込みアクセスを行う）際に、他のプロセッサの共有メモリ上の対応するアドレスに存在するデ−タも一緒に変更するための情報を共有メモリにライトアクセスしたプロセッサの共有メモリシステムが他のすべての共有メモリシステムに対してブロ−ドキャストするために設けられている。
【００４５】
すなわち、共有メモリシステムに対するライトサイクルがどこかのプロセッサで発生すれば、その情報が共有バスシステム１９００を介して他のプロセッサの共有メモリシステムに伝送され、各プロセッサに付随する各共有メモリ上の対応するアドレス上の必要なデ−タ内容の変更が行われる。
【００４６】
共有バスシステム１９００において、ＲＥＱ信号群は共有メモリへのライトアクセス時に各共有メモリシステム１０１０〜１０１ｎ内の共有メモリコントロ−ラからそれぞれ生成されるバスリクエスト信号（ＲＥＱ）の集合であり、これらはバスア−ビタ回路１０２０に入力される。ア−ビタ回路１０２０は、その中から１つを選択してＲＥＱｍ（ｍはプロセッサｍに対応するリクエスト信号）に対応する許可信号ＡＣＫｍをアクティブにしてＡＣＫ信号群を介し対応する共有メモリシステムのＡＣＫ入力に伝える。
【００４７】
ＡＣＫ入力がアクティブに転じた時、共有メモリコントロ−ラはライトサイクルの対象となったデ−タ（Ｄａｔａ）とアドレス（Ａｄｄｒｅｓｓ）を共有バスシステム１９００上に生成すると共に、ア−ビタ回路１０２０からは、それら共有バス上の情報がアクティブであることまたはバスが使用されていることを示す制御信号（ＢＵＳＹ）をアクティブにする。
【００４８】
ＢＵＳＹ信号の情報は共有バスシステム１９００内の制御信号（Ｃｏｎｔｒｏｌ）を介して、各共有メモリシステム１０１０〜１０１ｎのビジ−信号（ＢＵＳＹ）入力に伝えられ、各共有メモリコントロ−ラはその情報を調べることで共有バス上に共有メモリへ書き込むべきデ−タが存在するか否かを判断する。もし、共有メモリへ書き込むべきデ−タが存在すれば（ビジ−信号がアクティブであれば）各自の共有メモリの指定された番地にその有効なデ−タを一斉に書き込んで変更し、各プロセッサに対応する共有メモリの内容を常に同一に保つ様に動作する。
【００４９】
なお、システムによっては、ア−ビタ回路からの許可信号（ＡＣＫ）を受け取った共有メモリコントロ−ラがそれぞれビジ−信号を出力して、他の共有メモリコントロ−ラに伝える方式も考えられるが、本例と比べるとビジ−信号の出力により長い時間を必要とする（信号の遅延が大きい）ため、高速動作を必要とするシステムでは本例の方式の方が有効であろう。
【００５０】
その他、システムによっては制御信号（Ｃｏｎｔｒｏｌ）として、バスコマンド、ステ−タス情報、バスクロック、デ−タ転送プロトコル制御信号、バスステ−トやバスサイクル制御信号、リソ−スからの種々の応答信号、割込みベクタやメッセ−ジ情報信号等が割り付けられる場合もある。
【００５１】
図２は、本発明における各共有メモリシステム１０１０〜１０１ｎ内の構造を示している。最大の特徴は、共有メモリ２００６が、読み出し時のアドレス（ＲＡ）及びそれに対応する出力デ−タ（ＤＯ）と、書き込み時のアドレス（ＷＡ）及びそれに対応する入力デ−タ（ＤＩ）とを別々のポ−トとして具備した２ポ−トメモリの構造を採っていることである。
【００５２】
共有メモリシステム内は、前記２ポ−ト共有メモリ２００６、共有メモリコントロ−ルユニット２０１０、プロセッサインタ−フェ−ス２００３及びマシンステ−トコントロ−ラＭＳＣ２００２、各種入出力バッファユニット（２００１、２０１２〜２０１８）、ラッチユニット及びバッファメモリユニット（２００４、２００８、２００９、２０１１）、マルチプレクサユニット（２００５、２００７）、クロック生成回路２０１３等から構成されている。
【００５３】
各共有メモリシステムはプロセッサクロック（ＰＣＬＫ）、システムクロック（ＳＣＬＫ）等の基本クロックに同期して動作する。ＰＣＬＫは、プロセッサのバスサイクルに同期したクロックであり、プロセッサ側のバスサイクルはこのクロックを基準に動作していると考えて良い。ＳＣＬＫはシステム全体の基本となるクロックであり、システムはこのクロックに同期していると考えて良い。最も理想的な条件として、ＳＣＬＫを基準としてＰＣＬＫが生成されていれば、プロセッサを含めたシステム全体を結果的に１つの基本クロック（この場合ＳＣＬＫ）に同期させて動作させることになるため、最も効率の良いタイミング制御が可能となると考えられる。
【００５４】
本発明の共有メモリシステムにおける特徴と基本的な動作は以下のａ）〜ｆ）に示したとおりである。
【００５５】
ａ）共有メモリシステムアクセスイネ−ブル信号（ＣＳＥＮ）がアクティブになると、共有メモリシステムコントロ−ラ２０１０及びＰＩＦ２００３，ＭＳＣ２００２は信号入力回路２００１を介してその情報を得て共有メモリシステムへのプロセッサからのアクセスが発生したことを知る。
【００５６】
そして、プロセッサインタ−フェ−スＰＩＦ２００３及びマシンシテ−トコントロ−ラ（ＭＳＣ）２００２は、プロセッサのバスサイクル及びバスプロトコルに合致した適切なタイミングでプロセッサによるアクセスの対象となるアドレス情報及びデ−タ情報をプロセッサとやりとりする。
【００５７】
本例では、プロセッサ側で共有メモリの物理アドレスエリアをデコ−ドしておき、プロセッサがそのエリアをアクセスしたときＣＳＥＮ信号がアクティブになる様にしている。
【００５８】
また、ＭＳＣ２００２は、特開平２−１６８３４０号公報に基づいた使用方法を採用することによって、共有メモリシステムを含む各プロセッサシステムを単一の基準クロックで動作させシステム全体を同期型の大規模デジタル回路システムとして構築できる効果や、共有メモリシステムへプロセッサがアクセスする際のアクセスタイム（特に読み出しサイクル時）をより長く確保できる効果等が得られる。
【００５９】
ｂ）プロセッサの共有メモリに対するアクセスバスサイクルがリ−ドサイクルの場合、特別な場合を除き、共有メモリ２００６の読み出しポ−ト（ＤＯＮ及びＲＡ）を利用して直接デ−タを共有メモリ２００６から読み出す。この場合、各種アドレス情報をマルチプレクスして共有メモリ２００６に与えるアドレスマルチプレクサＭＸ２００７は、プロセッサからのアドレス情報をＰＩＦ２００３を介して入力Ｃに得て出力Ｏ１から共有メモリ２００６のリ−ドアドレスＲＡに与え、そのＲＡの値に対応したデ−タを共有メモリのＤＯから読み出す。
【００６０】
読み出されたデ−タ値は、ＰＩＦ２００３を介してプロセッサへ送られる。
【００６１】
なお、ＡＭＸ２００７において、入力側のＡ，Ｂ，Ｃのうちいずれを選択してＯ１に出力するかを決める選択入力信号Ｓ１を制御する操作は、共有メモリコントロ−ルユニット２０１０からのＲＤＳＥＬ信号によって行う。その際、プロセッサインタ−フェ−ス２００３内に読み出し用ラッチ回路を設けて、一度共有メモリ２００６からのデ−タをそこにラッチし、少なくともプロセッサがそのデ−タを読み出すタイミングの前後の期間、十分なセットアップタイムとホ−ルドタイムを確保した形でプロセッサに対して有効なデ−タを保持しておく様にしても良い。
【００６２】
又、後述するように、プロセッサ側のバスサイクルを規定するクロック（バスクロック等）と共有メモリ側へデ−タを書き込むタイミングを規定するクロックとが同期している場合等、共有メモリ２００６から読み出されるデ−タが有効な期間がもともと前記セットアップタイム及びホ−ルドタイムを満足しているならば、直接そのデ−タをプロセッサに与えても良い。
【００６３】
ｃ）プロセッサの共有メモリに対するアクセスバスサイクルがライトサイクルの場合、本例では、プロセッサからＰＩＦ２００３を介して送られてきたライトアドレス値はまず一度共有メモリコントロ−ルユニット２０１０のＡＷＢＵＦＣＴＬ信号に応答して適切なタイミングでアドレスライトバッファＡＷＢＵＦ２００８に書き込まれる。
【００６４】
ＡＷＢＵＦ２００８は、複数のライトアドレス情報を時系列的に蓄えておき、最も過去に得たライトアドレス情報をＯに出力してＡＭＸ２００７のＡ入力に与えるように構成しても良い。ＡＭＸ２００７は、アドレス入力Ａ，Ｂ，ＣからＯ２に、選択されたライトアドレス値を出力し、共有メモリ２００６のライトアドレスＷＡ入力に与える。その選択操作を行うための選択信号入力Ｓ２は、共有メモリコントロ−ルユニット２０１０のライトデ−タ信号ＷＤＳＥＬによって行う。
【００６５】
また、対象とするライトアドレスＷＡに書き込むべきデ−タもプロセッサからＰＩＦ２００３を介して一度デ−タライトバッファＤＷＢＵＦ２００４を介した後デ−タマルチプレクサＤＭＸ２００５により選択操作（Ａに入力されＯに出力される）されて共有メモリ２００６のデ−タ入力ＤＩに与えられる。
【００６６】
ＤＭＸ２００５の機能は、ＡＭＸのＯ２出力側の機能とほぼ同様である。但し、入力Ａ，Ｂ，Ｃに入力されているそれぞれのライトアドレス情報から１つを選択しＯに出力するための選択信号入力Ｓは、共有メモリコントロ−ルユニット２０１０のＷＤＳＥＬ信号によって制御される。
【００６７】
また、ＤＷＢＵＦ２００４の機能も、ＡＷＢＵＦ２００８とほぼ同様であるが、ＤＷＢＵＦ２００４にプロセッサからのデ−タをラッチし蓄えていくための制御信号としては共有メモリコントロ−ルユニット２０１０のＤＷＴＢＵＦＣＴＬ信号が使用される。ＤＷＢＵＦ２００４及びＤＭＸ２００５の制御タイミングがＡＷＢＵＦ２００８及びＡＭＸ２００７と同一であれば（例えばプロセッサからのアドレス値とデ−タ値との出力タイミングがほぼ同一であれば）、同一の制御信号を用いて選択信号やラッチ信号を制御しても良い。
【００６８】
なお、共有メモリ２００６にデ−タを書き込む操作を行うのは、共有メモリコントロ−ルユニット２０１０からのライトイネ−ブルＷＥ信号による。本例ではＷＥ信号をアクティブにすると共有メモリ２００６のＤＩに入力されているデ−タがＲＡに入力されているアドレス値に対応するメモリセルの内容に反映され、ＷＥ信号を非アクティブに戻すタイミングでそのデ−タがメモリセルにラッチされる。もし、共有メモリ２００６のＲＡとＷＡの内容が同一のアドレス値を示しているとすると、ＷＥ信号がアクティブの時ＤＯにはＤＩに入力されているデ−タの内容と同一のものが出力される。
【００６９】
従って、本例の場合共有メモリの情報を変更するタイミングはＷＥ信号をアクティブにするタイミングで決まると言える。
【００７０】
ライトサイクル時は、自身の共有メモリだけの内容変更ではなく他のプロセッサに対応する共有メモリ各々にも同等のデ−タとアドレス情報をブロ−ドキャストして共有メモリ上の内容を変更する必要がある。従って、ＤＷＢＵＦ２００４のＯから出力されているライトデ−タとＡＷＢＵＦ２００８のＯから出力されているライトアドレスとをそれぞれデ−タバッファ２０１５とアドレスバッファ２０１６を介して共有バスシステムに出力する機能を有している。
【００７１】
デ−タバッファ２０１５とアドレスバッファ２０１６との共有バスシステムに対するＯＮ−ＯＦＦ操作はそれぞれＤＥＮ信号とＡＥＮ信号とで行っている。
【００７２】
ｄ）他のプロセッサが共有メモリの内容を変更した場合、共有バスシステムを介して送られて来るアドレス情報をアドレスバッファ２０１６よりデ−タ情報をデ−タバッファ２０１５よりそれぞれ得て、そのアドレス情報に対応したデ−タ情報を共有メモリ２００６に書き込む。
【００７３】
本例では、デ−タバッファ２０１５を介して得た情報をデ−タラッチ２００９、アドレスバッファ２０１６を介して得た情報をアドレスラッチ２０１１に一度保持した後、デ−タ情報はＤＭＸ２００５のＢ入力に、アドレス情報はＡＭＸ２００７のＢ入力にそれぞれ入力され、さらにＤＭＸ２００５のＯ出力から共有メモリ２００６のＤＩ入力に書き込むべきデ−タが、ＤＭＸ２００７のＯ２出力から共有メモリ２００６のＷＡ入力にその対象となるアドレスが入力される。
【００７４】
デ−タラッチＤＬ２００９、アドレスラッチＡＬ２０１１へのラッチタイミングは、共有メモリコントロ−ルユニット２０１０のＣＳＡＤＬ信号によって行う。ＣＳＡＤＬ信号は、共有バスシステム上にデ−タ及びアドレス情報が確定し、それらがＤＬ２００９及びＡＬ２０１１に対して十分なセットアップタイム及びホ−ルドタイムを確保したタイミングでラッチ処理が行われるように操作されている。
【００７５】
本例では、ＣＳＡＤＬ信号がアクティブになるとＤＬ２００９及びＡＬ２０１１のＤ側の情報がＯ側に出力されてラッチ回路がセットアップされ、ＣＳＡＤＬが非アクティブに転じたタイミングＤＬ，ＡＬにそれらの情報がラッチされる。本例では、各プロセッサの各共有メモリシステムが同じ位相を有する基本クロック（ＰＣＬＫ及びＳＣＬＫ）に応答して完全に同期して動作するため、ライト動作時にデ−タバッファ２０１５やアドレスバッファ２０１６を操作して共有バスシステムに必要な情報を入出力するタイミングと、そのタイミングに同期して生成されるＤＬ２００９，ＡＬ２０１１に必要な情報をラッチすべきタイミングとは各共有メモリシステム内の共有メモリコントロ−ルユニット２０１０の内部で明確化されていると考えて良い。
【００７６】
この同期化によって、共有メモリコントロ−ルユニット２０１０はこれらのタイミングを規定するＣＳＡＤＬ，ＤＥＮ，ＡＥＮ，ＡＷＴＢＵＦＣＴＬ，ＤＷＴＢＵＦＣＴＬ等の制御信号の生成に関してオ−バ−ヘッドや遅れ時間の少ない効率の良いタイミング制御が可能となっている。また、ＤＭＸ２００５やＡＭＸ２００７を制御するＷＤＳＥＬや共有メモリ２００６にデ−タを書き込むＷＥ信号の生成も、ＤＬ２００９やＡＬ２０１１にデ−タを確定するＣＳＡＤＬ信号の制御タイミングに応答して共有メモリコントロ−ルユニット２０１０内で行えば良い。
【００７７】
ｅ）共有メモリへのライト動作時において、各プロセッサの共有メモリシステム間で、共有バスシステムの使用権を確実に１つのプロセッサに割り付ける競合制御（ア−ビトレ−ションコントロ−ル）が必要となる。
【００７８】
共有メモリコントロ−ルユニット２０１０は、プロセッサからのコントロ−ル信号Ｃと共有メモリシステムアクセスイネ−ブルＣＳＥＮとから、プロセッサによる共有メモリシステムへの書き込みサイクル（ライトサイクル）が発生したとみなすとＣＳＲＥＱ信号をアクティブにしてア−ビタ回路１０２０への要求信号ＲＥＱを出力バッファ２０１２を介して生成する。
【００７９】
そして対応するア−ビタ回路１０２０からの許可信号ＡＣＫがアクティブになり入力バッファ２０１４を介して共有メモリコントロ−ルユニット２０１０のＣＳＡＣＫ入力に得られた場合、自身のプロセッサが共有バスシステムの使用権を得たとして、共有メモリコントロ−ルユニット２０１０はｃ）に示した手順で共有メモリ及び共有バスシステムへのライトサイクルを生成する。
【００８０】
この時、デ−タバッファＤＷＢＵＦ２００４及びアドレスバッファＡＷＢＵＦ２００８が一杯になっている場合はプロセッサのバスサイクルの終了をペンディングして待たせることになる。プロセッサ側のバスサイクルの終了をペンディングして待たせるかバスサイクルを予定通り終了してプロセッサを次の処理に進めるかを決める信号として、共有メモリコントロ−ラ２０１０はＲＤＹ信号を生成する。
【００８１】
プロセッサが、共有メモリシステムへのアクセスのためのバスサイクルを生成している時、共有メモリコントロ−ルユニット２０１０からのＲＤＹ信号がアクティブになればそのバスサイクルを待ち状態にせずに予定通りバスサイクルを終了してプロセッサを次の処理に進め、非アクティブに保てばそのバスサイクルを終了せずにバスサイクルを引き延ばして結果的にプロセッサを待たせる操作を実行したことになる。
【００８２】
基本的にバッファ２００４，２００８が一杯になっておらず空きがあれば、プロセッサはＤＷＢＵＦ２００４，ＡＷＢＵＦ２００８に必要なデ−タ及びアドレス情報をラッチしておいて待されずに次の処理に進む。すなわち、プロセッサが共有メモリへのライト動作を実行していった時、前述したア−ビタ回路１０２０からの共有バスシステム使用権の許可が得られない状態が続けば、バッファ２００４，２００８内にペンディングされたライトサイクル分のデ−タ及びアドレス情報が時系列的に蓄えられていき、バッファが一杯になった状態で発行されたライトサイクルはバッファに空きが生ずるまで引き延ばされ、結果的にプロセッサ側を待たすことになる。
【００８３】
自身の共有メモリへの書き込み処理のレイテンシを短縮するために、共有メモリへのライト動作時にバッファ２００４，２００８が完全に空きの状態でかつそのライト動作に応答してア−ビタ回路１０２０からの許可信号（ＣＳＡＣＫ）が直ちにアクティブになり共有バスシステムの使用が許可された場合、マルチプレクサ２００５，２００７のＣ入力を介して直接ＰＩＦ２００３からのライトアドレス（ＷＡ）及びライトデ−タ（ＤＩ）を共有メモリ２００６に与え、書き込み処理を実行しても良い。
【００８４】
その制御は共有メモリコントロ−ル２０１０がＷＤＳＥＬとＷＥ信号を用いて行なう。なお、これらのバッファ２００４，２００８に有効な情報が存在する間は、共有メモリコントロ−ルユニット２０１０内でＣＳＥＮをアクティブに保ち続けるようになっている。
【００８５】
一方、ＲＥＱ信号をアクティブにしているにもかかわらず対応するＡＣＫ信号が非アクティブの状態であり、ア−ビタ回路１０２０から入力バッファ２０１７を介して得たＢＵＳＹ信号が（共有メモリコントロ−ルユニット２０１０のＣＳＢＵＳＹ入力に接続されている）アクティブとなっている場合は、他のプロセッサによる共有メモリ及び共有バスシステムへのライトサイクルが許可され実行されているとみなし、共有メモリコントロ−ルユニット２０１０は、ｄ）に示した方法により他のプロセッサから共有バスシステムを介してブロ−ドキャストされて来る情報に基づいた共有メモリ２００６へのライトサイクルを生成する。
【００８６】
ｆ）同期処理回路１０００と共有メモリシステム１０１０〜１０１ｎとが連動して動作する場合、プロセッサは、必要なタスク処理が終了したら同期要求信号ＳＲＥＱをアクティブにして同期処理回路１０００に同期処理を要求しておき、それより後のタイミングで共有メモリ上のデ−タ（他のプロセッサからのデ−タ等が存在している）が必要となって共有メモリシステムをアクセスした時（特にリ−ドアクセス時）、共有メモリシステム内でプロセッサとの間の局所同期処理を行って、他のプロセッサとの間のデ−タのやりとりに矛盾が発生しないようにする。
【００８７】
同期処理回路１０００は、各プロセッサ１１１０〜１１１ｎからの同期要求信号ＳＲＥＱのうち予め定められた同期すべきプロセッサ群、すなわち、協調して処理を進めている群のグル−プに属するプロセッサからのＳＲＥＱに非アクティブ状態のものが１つでも存在すれば、応答すべきプロセッサに対して前記ＳＲＥＱが全てアクティブに転じるまで同期処理完了信号ＳＹＮＣＯＫを非アクティブに保つことによって必要な同期処理が終了していないことを伝える。
【００８８】
そのプロセッサに対する共有メモリシステムは、そのＳＹＮＣＯＫ信号を信号入力回路２０１８で受けて同期処理回路１０００からの同期情報をモニタしており、少なくともＳＹＮＣＯＫが非アクティブの状態で自身のプロセッサが共有メモリシステムへのアクセスサイクル（特にリ−ドサイクル）を生成したときには、共有メモリコントロ−ルユニット２０１０がＲＤＹ信号を非アクティブに保つことでプロセッサのバスサイクルの終了をペンディングして待たせることにより、プロセッサと共有メモリシステムとの間で局所的な同期処理操作を実行する。
【００８９】
これにより、共有メモリ２００６上に協同して処理を進めている他のプロセッサからの必要な情報が書き込まれていない状態で共有メモリにアクセスしてしまい、その結果誤った情報を得て誤った処理結果を生成することが無いように管理している。
【００９０】
本例において特徴的なのは、バッファシステムＤＷＢＵＦ２００４及びＡＷＢＵＦ２００８を有しており、プロセッサの動作が共有メモリシステムのアクセスサイクル処理より先行したとしても、これらのバッファシステムにアクセス情報を時系列的にストアしておいて共有メモリシステム内でプロセッサの動作と独立かつ並行して後処理することが出来るようになっている点である。
【００９１】
その結果、プロセッサの処理を必要以上に待たせずに先に進めさせることが可能となっている。この際、ＳＹＮＣＯＫがアクティブになっていたとしても、各プロセッサの共有メモリシステム内のバッファシステム２００４，２００８に有効なデ−タが存在している状態、すなわち、本来同期処理が完了していれば共有メモリ上に存在している必要のあるデ−タがまだ共有メモリ上に存在していない状態が発生する可能性がある。
【００９２】
この状態で、ｂ）に示したような共有メモリへの書き込みサイクルと並行して実行可能な読み出しポ−ト（共有メモリ２００６のＲＡ，ＤＩ）からの自由な読み出し動作を実行すると、必要なデ−タが得られず誤処理につながる可能性がある。
【００９３】
従って、いずれかのプロセッサに対応する共有メモリシステムのバッファシステム２００４，２００８内に有効なデ−タが存在する間は、共有バスシステム上でライトサイクルが連続して発生しア−ビタ回路１０２０からのＢＵＳＹ信号がアクティブ状態に保たれ続けることを利用して、ＳＹＮＣＯＫ信号がアクティブに転じてもＢＵＳＹ信号がアクティブ状態であれば、ＢＵＳＹ信号が非アクティブに転じるまでプロセッサの共有メモリへのリ−ドサイクルを禁止する機能を共有メモリコントロ−ルユニット２０１０内に具備している。
【００９４】
つまり、この状態でプロセッサからのリ−ドサイクルが発生した場合、共有メモリコントロ−ルユニット２０１０は、ＢＵＳＹ信号が非アクティブになるまでＲＤＹ信号を非アクティブに保ってそのバスサイクルの終了を遅らせ、プロセッサ側を待たせる。
【００９５】
ａ）〜ｆ）に示した本発明の共有メモリシステムの基本機能において、従来システムと顕著に異なるのは、以下の２点である。
【００９６】
１）共有メモリシステム内の共有メモリ２００６に独立並行に操作可能な２ポ−ト（読み出しポ−トと書き込みポ−トから成る）のメモリユニットを用いている。これにより、共有メモリへのリ−ドサイクルとライトサイクルを並行に実行でき、共有メモリ間のデ−タ一致処理やプロセッサ間のデ−タ転送処理にかかるレイテンシを短縮できると共に、プロセッサ間のアクセス競合によるロスを大幅に減らすことが出来るため共有メモリシステムに対するト−タルのスル−プットも向上させることが出来る。
【００９７】
２）プロセッサ間の同期処理回路１０００と、共有メモリシステムとを連動して動作させる場合、同期処理によって管理されるタスク間で目的とするタスクによって生成された情報を共有メモリを介して確実にやりとりできることを保証するために、同期処理回路から同期の完了が通知されてから実際に共有メモリ上の情報が目的に対して有効な状態に書き替わるまでの期間、プロセッサのリ−ドサイクルを待たせる局所同期用インタ−ロック回路を具備している。これにより、プロセッサ間の同期処理をタスク間のデ−タの受け渡しの妥当性も保証した形で確実に矛盾なく行うことができ、プロセッサが古い情報を得て誤処理を行わないように自動的に管理できるようになっている。
【００９８】
次に図３に示したより簡略化した実施例を用いて、各プロセッサの共有メモリシステム１０１０，１０１１，．．．，１０１ｎの中の２ポ−ト共有メモリ２００６とその制御に関わる周辺回路の機能についてより詳細に説明する。特に、ここでは２ポ−ト化したことによる機能と効果について述べていく。
【００９９】
図３に示した３００４，３００５，３００６，３００７，３００８はそれぞれ、図２における２００４，２００５，２００６，２００７，２００８の機能に対応する。リ−ドデ−タラッチ３１１０が存在する場合もあるが、すでに述べたように、図２ではこの機能がＰＩＦ２００３内に存在するとしている。図３ではメモリユニット３００６の内部を詳しく開示しているが、その周辺機能は説明を簡単にするため簡略化して表現している。
【０１００】
まずプロセッサからの読み出し処理時には、プロセッサ側からのリ−ドアドレス１３００１は、直接メモリユニット３００６のリ−ドアドレスデコ−ダ３１０３に入力され、そこからの出力に応答してマルチプレクサ３１０２の選択入力Ｓを切り換えることによりメモリセル群３１０１の中から指定されたアドレスに対応する出力をマルチプレクサ３１０２で選択し、ＲＤＡＴＡ１３００３としてプロセッサ側に出力する。マルチプレクサ３１０２は、図４にも示したとおりトライステ−トバッファを組み合わせて構成しても良い。
【０１０１】
プロセッサから共有メモリへの書き込み処理時には、ライトアドレス１３００２は、共有バスシステムのアドレス情報として生成するためバッファ３００８を介して共有バス側へ出力されるとともに、直接マルチプレクサ３００７を介してそのプロセッサのメモリユニット３００６のＷＡＤＤＲデコ−ダ３１０４に入力される。バッファ３００８は、時系列的にアドレスデ−タを蓄えるキュ−システムとして構成し、図２の２００８と同様の機能を待たせても良い。
【０１０２】
直接メモリユニット３００６に入力されたライトアドレスは、ＷＡＤＤＲデコ−ダ３１０４でデコ−ドして、メモリセル群３１０１の中のどのメモリセルにデ−タを書き込むかを決定し、書き込み信号ＷＥに応答して、選択されたメモリセルに書き込むべきデ−タＷＤＡＴＡの内容をラッチする。ＷＥ信号は、コントロ−ルユニット３０１０で、プロセッサからのリ−ド／ライト制御信号Ｗ／Ｒ１３００５，共有システムセレクトＣＳＥＮ１３００６等の信号に応答して生成される。プロセッサからのライトデ−タ１３００４がマルチプレクサ３００５を介した後ＷＤＡＴＡとしてメモリユニット３００６内に入力される。
【０１０３】
ライトアドレス１３００２と同様、ライトデ−タ１３００４もバッファ３００８と同等の機能のバッファ３００４を介して共有バス側に出力されている。共有バス側に出力されたライトアドレスとライトデ−タは、共有バスを介して他のプロセッサの共有メモリシステムにブロ−ドキャストされて対応するメモリユニットのメモリセルにライトデ−タがラッチされる。
【０１０４】
本例では、プロセッサが自身のメモリユニット３００６へデ−タを書き込む際のデ−タ及びアドレス情報のパスをバッファ３００４，３００８の手前から直接マルチプレクサ３００５，３００７へ入力（マルチプレクサのＡ入力）した後メモリユニット３００６へ結線するようにしており、メモリユニット３００６への書き込みパスとしてそのパスのみを用いる場合は、図２で説明した様なバッファ３００４，３００８を介した後の信号を用いたパスとは多少制御方式や条件が異なる。
【０１０５】
ただし、図２においても、ＤＭＸ２００５，ＡＭＸ２００７のＣ入力を選択すれば図３と同様のパスとなる様に設計していることはすでに述べた。
【０１０６】
この直接入力方式の良いところは、プロセッサが共有メモリの内容を書き替える際、自身のメモリユニット（共有メモリ）のデ−タ変更を他のプロセッサのメモリユニットの変更よりも早いタイミングで行なえる可能性があり、自身が変更した共有メモリの内容を変更直後に再度読み出すような場合（フラグ管理やセマフォ管理、自身でも使用する共有デ−タの保持等）、共有メモリの変更に伴うレイテンシ（遅れ時間）が原因で過去のデ−タが読めてしまうのを防ぐことが容易になる点である。
【０１０７】
ただし、この直接パスのみを用いて書き込み制御し易いのはバッファ３００４，３００８が一段程度で、他のプロセッサの共有メモリへの書き込み処理に要するオ−バ−ヘッドをリカバリし、先にプロセッサのバスサイクルを進めるための一時記憶に用いている様な場合である。このような機能のバッファを設けた場合は、コントロ−ルユニット３０１０がア−ビタ回路からの許可信号を確認してから直ちにメモリユニット３００６にデ−タを書き込むように制御する必要がある。
【０１０８】
また、図２のＰＩＦ２００３の中に、自身のメモリユニット３００６へデ−タを書き込むまでライトアドレス１３００２とライトデ−タ１３００４を保持しておくラッチ機能を設けておくと良い。そのようなバッファ機能は、図２のＰＩＦ２００３の機能の一部と考えてＰＩＦの中に設けておいた方が機能分担が明確になるかも知れない。なぜなら、共有バスシステムのアクノリッヂＣＳＡＣＫのみでバッファのラッチ機能のオン−オフを制御可能であり、わざわざコントロ−ルユニット３０１０で制御しなくても、ＣＳＡＣＫ信号をＰＩＦ２００３に入力しておけば済むからである。
【０１０９】
本格的なバッファを設ける場合は、マルチプレクサ３００５，３００７に、図２と同様バッファを介したパス（Ｃ入力）を設け切り換えて制御する方が合理的であろう。
【０１１０】
各プロセッサが、自身が変更したデ−タの内容を自身の処理プログラム上で再度読み出して使用する場合に、一貫性を保って矛盾なく処理できるようにハ−ドウェアで自動的にその一貫性を保証することは大切なことである。なぜなら、大半のプロセッサは単体ではシ−ケンシャルに記述され実行されることを前提としたプログラムを処理しており、リソ−スに対するデ−タ書き替え及びデ−タ読み出し動作の前後関係に意味を持っている場合が多いからである。
【０１１１】
一方、あるプロセッサが他のプロセッサが変更したデ−タを読み出す際、他のプロセッサがデ−タを変更した時刻とプロセッサがそのデ−タを実際に読み出す時刻との差（情報の遅れ時間）が問題とならない情報又はその扱い方、例えば連続性を持った時刻ｔに依存した状態量（位置、速度、加速度等）をサンプリングタイムを最小時間単位として管理するとして、前記の情報遅れ時間がサンプリングタイムに対して相対的に十分小さいとみなして前記状態量を扱うことができれば、或いは、サンプリングタイム側を前記の情報遅れ時間に対して十分大きく設定できれば、各プロセッサから見た共有メモリ上の情報の変更時刻が多少ばらついたり、遅れたりしても問題になることはないと考えて良い。
【０１１２】
ただし、情報の遅れ時間（レイテンシ）が無視できないほどサンプリングタイムを小さく設定したりすれば処理パラメ−タの誤差が大きく問題となる。従ってこの様に実時間性能が要求されるサンプリングタイムの小さなアプリケ−ションを実行する場合は、情報の遅れ（レイテンシ）を改善するハ−ドウェアア−キテクチャが必要となる訳である。
【０１１３】
十分なリアルタイム性能（実時間処理能力）を有したプロセッサシステムとは、システム内の様々なところで発生するレイテンシ（プロセッサ間及び外部システムとプロセッサとの間の通信遅れや演算処理時間に伴う遅れ等）が目標とするサンプリングタイムに対して原理的に十分小さく抑え込まれているシステムを差し、制御用のプロセッサシステムはこの性能特性が最も重要視される。
【０１１４】
この様な特性を有するリアルタイムプロセッサシステムでは、大半の状態量情報は、ハンドシェ−ク処理等によって、デ−タ通信に伴うプロセッサ間での同期を取る必要がなく、同期について特に管理しない情報伝達で十分な処理結果の精度を確保できる。もし、プロセッサ間で確実なデ−タの受渡しが必要な場合は、前述したような同期処理回路１０００と組み合わせた共有メモリシステム上での情報管理を行なえば良い。
【０１１５】
前述した、プロセッサが自身のプログラム処理の流れに矛盾なく、自身のメモリユニット３００６の内容が読み書きできるように保証する回路として、本例では、アドレス比較回路３０２０を設け、プロセッサからライトアドレス１３００２及びバッファ３００８に蓄えられているライトアドレスとをそれぞれＷ０，Ｗ１入力に取り込み、プロセッサからのリ−ドアドレス１３００１をＲ入力に取り込んで、プロセッサからメモリユニット３００６へのリ−ドサイクル時にライトアドレスＷ０及びＷ１とリ−ドアドレスＲとの内容を比較して一致するものが一つでもあれば、それらのライトアドレスに対する共有メモリへのライトサイクルが全て終了するまでコントロ−ルユニット３０１０は１３００７に出力しているＲＤＹ−Ｎ信号を非アクティブに保ってプロセッサ側のリ−ドサイクルをペンディングして待たせる動作を行なう。
【０１１６】
図３において、他のプロセッサからの共有メモリへのライトサイクル時の動作は、図２の場合と同様であり、マルチプレクサ３００５及び３００７をそれぞれＢ入力側が選択されるように、選択信号入力Ｓをコントロ−ルユニット３０１０がそれぞれＷＤＳＥＬ信号出力、ＷＡＳＥＬ信号出力を用いて制御する。また、バッファ３００４，３００８の制御はコントロ−ルユニット３０１０がそれぞれＣＳＤＴＬ信号出力、ＣＳＡＤＬ出力を用いて行なっている。
【０１１７】
バッファ３００４，３００８の空き状態の管理は、コントロ−ルユニット３０１０内にバッファが何デ−タ分空いているかをその増減をカウントすることにより保持する回路を設けて行なっている。もちろんバッファ側にこの機能を持たせ、そこからの情報をコントロ−ルユニット３０１０側に取り込んでも良い。コントロ−ルユニット３０１０の他の入出力信号の機能は、図２の共有メモリコントロ−ルユニット２０１０の対応する入出力信号と等価と考えて良い。
【０１１８】
次に、図３のメモリユニット３００６中のデコ−ダ３１０３，３１０４とメモリセル３１０１に関する実施例を図４に示す。ここでは、メモリユニット３００６中のメモリセル群の１つを示している。
【０１１９】
メモリユニットを構成するには、このメモリセル３１０１をデ−タビット数分用意してさらにその組を複数用意してアドレス値（ＷＡ，ＲＡ）で指定できるようにする。マルチプレクサ部３１０２はトライステ−トバッファを前記複数のメモリセル１つ１つに対応して必要なデ−タビット数分用意し、その組をアドレス値で表現できる数の分だけ複数設ければ良い。なお、各組の同じデ−タビットに対応する出力（Ｚ−Ｎ）同志は結線しておく。リ−ドアドレス値ＲＡの指定によって前記複数のデ−タの組のどれか１つを選択できる。
【０１２０】
リ−ドデコ−ダ３１０３は、リ−ドアドレスＲＡと必要ならリ−ドイネ−ブルＲＥを得て、イネ−ブル信号（ＥＮ０，ＥＮ１−−−）のうちそのリ−ドアドレス値に対応するものを１つアクティブにする。
【０１２１】
各トライステ−トバッファ部３１０２のリ−ドデ−タ入力（ＲＤ）は、前記イネ−ブル信号（１レベルでアクティブ）を受けて、もしそれがアクティブであればメモリセル３１０１の内容をＺ−Ｎ（ＯＵＴＰＵＴ）に出力し、非アクティブであればＺをフロ−ト状態に保つ。トライステ−トタイプのマルチプレクサ部３１０２はＲＤ入力が１のときメモリセルの内容（Ｄ入力の値をＷＲをトリガ信号として記憶したもの）が反転されてＺに出力され、ＲＤ入力が０のとき前述した様にＺ−Ｎはフロ−ト状態となる。
【０１２２】
リ−ドイネ−ブルＲＥ（１レベルでアクティブ）は通常リ−ドアドレスが確定しデコ−ドそのものが完了した直後にイネ−ブル出力がアクティブとなるようにして、イネ−ブル信号にハザ−ドが乗らない様にする役割がある。ハザ−ドが大きいと配線上のスキュ−等と絡んでトライステ−ト出力Ｚのうち結線されているもの同志の間で一時的にショ−トした状態が発生することもあるが、ハザ−ドが小さければＲＥ信号を無くしても特に支障は無い。
【０１２３】
図２、図３に示した実施例では特にリ−ドイネ−ブルＲＥを設けてはいない。なお、図３に示したように、マルチプレクサ３１０２の部分が、完全なマルチプレクサ構造を採っていれば、その選択入力Ｓにリ−ドアドレスＲＡの値そのものか、それと等価の信号を直接用いることも可能である。
【０１２４】
ライトデコ−ダ３１０４は、リ−ドデコ−ダ３１０３と同様、ライトアドレスＷＡによって示される１つのイネ−ブル信号ＥＮに対応するメモリセルの組のアクティブなライト信号ＷＲ（１レベルでアクティブ）を生成する。イネ−ブル信号はＥＮ０，ＥＮ１，−−−から成り、各イネ−ブル信号は各メモリセルの組に対応して、それら各組のライト信号ＷＲ入力に接続されている。
【０１２５】
ライトデコ−ダ３１０４は、ライトイネ−ブルＷＥ信号を用いて、指定されているライトアドレスＷＡが確定してデコ−ドが完了した時点で出力されるイネ−ブル信号（１レベルでアクティブ）にハザ−ドが発生しないようにＷＥ（１レベルでアクティブ）がアクティブである期間以外はイネ−ブル信号をマスクすることにより、ＷＲ信号をメモリセルにデ−タを書き込むのに適正なパルス幅だけ確実に目的とするメモリセルの組に与える。
【０１２６】
図４に示したメモリセル３１０１の構造は、ＣＭＯＳプロセスを用いた場合のものであり、トランスファ−ゲ−ト（トランスペアレントゲ−トとも言う）タイプの２入力１出力のマルチプレクサを用いて、その正転出力ＯＵＴをトランスファ−ゲ−トの一方の入力ＩＡにフィ−ドバックし、他方の入力ＩＢにデ−タ（Ｄ）を与え、選択信号（トランジスタのベ−ス入力信号）ＳとしてＷＲ信号を与えることによりゲ−トラッチを構成している。
【０１２７】
すなわち、ＷＲが１レベルのときＤ入力の値が透過され、ＷＲの立ち下がりでその値がラッチされる。ＷＲをトリガ信号として記憶したＤ入力の値が、リ−ド時にトライステ−トバッファ３１０２のＺ−Ｎ出力へ反転して出力される。
【０１２８】
図５は本発明の共有メモリアクセスのタイミングを示している。プロセッサ側のバスプロトコルの基準となるプロセッサクロック（ＰＣＬＫ）と共有バス側のバスプロトコルの基準となる共有バスクロック（ＢＣＬＫ）とは同一周波数、同一位相を有しているとし、いずれもシステムの基準となるシステムクロック（ＳＣＬＫ）に同期して生成されている。なお、ＳＣＬＫの周波数は、ＰＣＬＫ，ＢＣＬＫの２倍周期の周波数となっている。前述したように、ブロ−ドキャスト方式の共有メモリシステムが前提となっており、各プロセッサに対応する各共有メモリシステム内の共有メモリ部には、本発明の特徴であるリ−ドポ−トとライトポ−トを独立して有する２ポ−トメモリユニットを用いているとしている。
【０１２９】
図５では、共有バス側からのアクセス（いずれかのプロセッサが共有メモリシステムへライトサイクルを生成して、その情報が共有バスシステムを介してブロ−ドキャストされてきたもの）と、プロセッサ側からの共有メモリへのリ−ドサイクルとの競合状況を示している。共有メモリ上でのライトポ−ト側のバス信号の状況は、メモリライトデ−タ（ＭＷＤ）、メモリライトアドレス（ＭＷＡ）、メモリライトイネ−ブル（ＭＷＥ）に示しており、リ−ドポ−ト側のバス信号の状況は、メモリリ−ドデ−タ（ＭＲＤ）、メモリリ−ドアドレス（ＭＲＡ）、リ−ドイネ−ブル（ＭＲＥ）に示している。
【０１３０】
プロセッサ側のバスサイクルは２プロセッサクロック（２×ＰＣＬＫ）であり、共有メモリ上で必要となるアクセスサイクルも実質的に２×ＰＣＬＫ周期分必要であるとしている。ただし、実際の共有メモリへのアクセスタイムは、１．５×ＰＣＬＫ周期分程度で、残りの０．５×ＰＣＬＫ周期分の時間はデ−タのホ−ルドタイムやタイミングの調整時間、プロセッサに対するセットアップタイム等に必要な時間であると仮定している。
【０１３１】
図５では、プロセッサがステ−トＳ１の先頭でＰＣＬＫに同期して共有メモリへの読み出しサイクル（リ−ドサイクル）を開始してプロセッサアドレス（ＰＡ）を生成し、ステ−トＳ２で対象となるデ−タの読み出し処理を指令するプロセッサリ−ドコマンド信号（ＰＲＤ−Ｎ）を生成している。一方、共有バス側は、ステ−トＳ０の先頭でＢＣＬＫに同期して、共有バスアドレス（ＢＡ）と共有バス側からの書き込みサイクルがアクティブになったことを示すビジ−信号（ＣＳＢＵＳＹ−Ｎ）又は共有バスライト信号（ＢＷＴ−Ｎ）、及び、共有メモリに書き込むべき共有バスデ−タＢＤとを生成する。
【０１３２】
本発明では、ＢＤ及びＢＡは他のプロセッサの共有メモリシステム１０１ｎから共有バスシステムにほぼ同じタイミングで出力され、ＣＳＢＵＳＹ−Ｎは（０レベルでアクティブ）ア−ビタ回路１０２０からのＢＵＳＹ信号より生成され、ＢＤ，ＢＡよりは少し先行したタイミングで出力される。なお、ＣＳＢＵＳＹ−Ｎは共有バスが使用されていることを示す信号で、図２で説明したように、共有バスシステムのコントロ−ル信号の情報の１つである。
【０１３３】
２ポ−ト共有メモリを備えたことによりプロセッサ側の共有メモリへのリ−ドサイクルは待たされずにステ−トＳ２の最後で終了しており、この時共有バス側からのＢＡと同じ共有メモリ上のアドレスをプロセッサがＰＡによって指定していれば、ＢＤの値がそのままプロセッサに読み出されるべきデ−タＰＤとして、ＲＤＹ−Ｎ信号のタイミングに応答してＳ２の最後のポイントでプロセッサ側に読み出される（共有メモリからの読み出し期間はＲＥがアクティブな間）。
【０１３４】
共有バスシステム側からのライトサイクルは、共有メモリ上でもプロセッサ側のリ−ドサイクルより１ＰＣＬＫ周期分先行して、すなわちステ−トＳ０内で待たされずに開始され、ステ−トＳ１で共有メモリ上のライトコマンド（ＷＥ）が生成されておりＳ１の中ですでに共有メモリ上にＢＡに対応するＢＤが確定している。なお、本例ではＷＥが１レベルのとき共有メモリ上のＢＡに対応するアドレスにＢＤの値が透過し、ＷＥの立ち下がりでそのアドレスにＢＤの値がラッチされる。
【０１３５】
従って、Ｓ１以後でＢＡに対応するアドレスのデ−タをプロセッサが読み出すと、前述したようにＢＤが読める訳である。仮に図５中に点線で示したように、プロセッサがステ−トＳ０の先頭でアクセスを開始した場合は、完全に共有バス側からのライトサイクルとプロセッサ側からのリ−ドサイクルとが同一タイミングで重なる、すなわち、ＲＥとＷＥが同一タイミングで出力されるが、どちら側のサイクルも待たされずに並列に処理され、最短時間で終了している。
【０１３６】
この様に、本発明を用いると、共有メモリ上における共有バス側のバスサイクルとプロセッサ側のバスサイクルとを完全に並列処理でき、非常にレイテンシの短いプロセッサ間デ−タ通信を共有メモリ上で実現することができる。
【０１３７】
以上からわかるように、２ポ−ト共有メモリを用いた本発明により、特にプロセッサ側のアクセススル−プット向上効果と共有メモリを介したプロセッサ間のデ−タ通信レイテンシの大幅短縮効果とが得られることがわかる。なお、プロセッサ間のデ−タ受け渡しに関するいくつかの矛盾を回避するためには、図２、図３ですでに解説したようなプロセッサ側のバスサイクルと共有バス側のバスサイクルのインタ−ロックや局所的な同期処理、及び、図１に示したようなプロセッサ間同期処理回路と連動したプロセッサ間の並列処理管理を行なえば良い。
【０１３８】
次に、ＰＣＬＫ，ＢＣＬＫは共にＳＣＬＫに同期しており図５に示した実施例と同様であるが、本発明の様に２ポ−ト共有メモリを用いない場合の実施例のタイミングチャ−トを図６に示す。プロセッサ側及び共有バス側のアクセス条件は図５と全く同様である。特開平５−２５６８号公報に開示されたブロ−ドキャスト方式の共有メモリシステムは本例のタイプである。
【０１３９】
図６から明確にわかるように、共有メモリのアドレス（ＭＡ）とデ−タ（ＭＤ）が１組しか存在しないため、まず、ステ−トＳ０の中央付近で共有バス側のアドレスＢＡ，デ−タＢＤが共有メモリに対してアクティブとなり、ステ−トＳ２の中央付近まで共有メモリを専有している。ライトイネ−ブルＷＥは図５と同様のタイミングで出力されており、ステ−トＳ２の先頭で共有メモリ上にＢＤの値がラッチされる。
【０１４０】
基本的に本実施例では共有バス側からのライト動作をプロセッサ側のリ−ド動作より優先する競合制御が行なわれる。そのため、共有バス側のライトバスサイクルとプロセッサ側のリ−ドバスサイクルとが競合する場合、プロセッサ側のバスサイクルの方が共有バス側のバスサイクルが終了するまで待たされる。図６の例でも、ステ−トＳ１で共有メモリへリ−ドアクセスに来たプロセッサ側のバスサイクルが１ステ−ト分（ＰＣＬＫの周期分）だけ待たされ、ステ−トＳ３の最後で共有メモリ上のデ−タＰＤを得た後バスサイクルを終了している。
【０１４１】
共有メモリ上で見ると、ステ−トＳ０の中央付近からステ−トＳ２の中央付近までの２サイクル分共有バス側のライトサイクル（ＢＡ，ＢＤ，ＭＷＥアクティブ）が実行され、その直後プロセッサ側のリ−ドサイクル（ＰＡ，ＰＤ，ＭＲＥアクティブ）が実行されている。
【０１４２】
共有メモリコントロ−ルユニットは、ＣＳＢＵＳＹ−Ｎがアクティブの期間はこれに応答して共有バス側のバスサイクルを共有メモリに割り付け、ＣＳＢＵＳＹ−Ｎが非アクティブ（Ｈｉレベル）に転じるタイミングに応答してプロセッサ側のバスサイクルに切り換える。なお、点線で示したように、プロセッサ側のバスサイクルがステ−トＳ０で開始された場合、プロセッサ側のバスサイクルの待ち時間は２ステ−ト分（２×ＰＣＬＫの周期分）に増え、プロセッサ側のアクセスオ−バ−ヘッドが増大する。
【０１４３】
以上から、図５の例と比較すると、プロセッサ側のアクセスオ−バ−ヘッドと共有バス側からプロセッサ側への共有メモリを介したレイテンシとが１〜２ＰＣＬＫ周期分増大していることがわかる。
【０１４４】
図７は、ブロ−ドキャスト方式の共有メモリシステムで従来一般的に用いられているＰＣＬＫ，ＢＣＬＫが非同期状態のシステムである。各プロセッサに対応するそれぞれのＰＣＬＫの位相もお互いに同期していないのが一般的であり、プロセッサの種類が異なる場合はそれらの周期も異なる場合が多い。その他の条件は図５、図６と同様である。
【０１４５】
この様な、プロセッサ間及びプロセッサと共有バスシステム間とで非同期な基準クロックを用いて制御されるシステムでは、各所で非同期の同期化処理を行ない、様々なレベルでのメタ状態の発生を回避する必要が生ずる。本例では、共有バス側のバスサイクルをＰＣＬＫで同期化して共有メモリに対するデ−タの書き込みタイミングがプロセッサ側のアクセスタイミングに対して正しい関係を保てるよう制御している。すなわち、これにより、プロセッサ側のバスサイクルに対して本来非同期な共有バス側のバスサイクルを同期化する処理が行なわれたことになる。
【０１４６】
実際には、ＣＳＢＵＳＹ−ＮやＢＷＴ−Ｎ信号をＰＣＬＫをトリガクロックとした２段以上のフリップフロップを通過させることにより、ＰＣＬＫに対して同期化しており、１〜２ＰＣＬＫ同期分のオ−バ−ヘッドを伴う。このオ−バ−ヘッドにより、共有メモリ上で共有バス側からのライトサイクルが開始されるのはステ−トＳ２の先頭からであり、それが終了するのは２ステ−ト後のステ−トＳ３の最後である。なお、同期化が完了したらその情報を何らかの形で共有バス側に知らせ、共有バスサイクルを発行している元の共有メモリシステムはその情報を利用して共有バスサイクルの終了処理を行なう。本例では共有バスサイクルの同期化情報としてＢＳＹＮＣ−Ｎ信号を共有バスシステム側に返送する。
【０１４７】
共有バスサイクルを生成しているプロセッサの共有メモリシステムは、ＢＳＹＮＣ−Ｎがアクティブ（０レベルがアクティブレベルで信号の変化タイミングはＰＣＬＫに同期しているとしている）になるタイミングに応答して共有バスシステムに出力中のバスサイクルを終了する。ここでは、ＢＳＹＮＣ−Ｎから内部的に同期信号を生成し、それをＢＣＬＫを使って非同期の同期化処理を行ないＢＣＬＫに同期化した後、その変化タイミングに応答してバスサイクル、すなわち、ＢＤ／ＢＡの出力をフロ−トにすると共にＢＷＴ−Ｎ又はＣＳＢＵＳＹ−Ｎを非アクティブに戻す。
【０１４８】
これによって、共有バスシステム側も１〜２ＢＣＬＫ同期分のオ−バ−ヘッドを生じていることがわかる。
【０１４９】
結果的に図７の例では、プロセッサ側のリ−ドサイクルが終了するのは、ＢＤ，ＢＡ，ＭＷＥ信号により共有バス側のバスサイクルが共有メモリ上で終了するステ−トＳ３の最後からさらに２ステ−ト後のＳ５の最後のポイントである（そのリ−ドサイクルに対応するＭＲＥ信号はＳ５の先頭でアクティブになりＳ６の先頭で非アクティブになっている）。すなわちプロセッサ側で３ステ−ト（３×ＰＣＬＫの周期分）の待ち時間が生じていることになる。
【０１５０】
図５に示した本発明のアクセスタイミングと比較すると、プロセッサ側、共有バス側双方のオ−バ−ヘッドについても、またプロセッサ間の共有メモリを介した通信レイテンシの点でも、本発明の方が従来システムよりはるかに優れていることがわかる。
【０１５１】
次に、図８に本発明の大きな特徴である同期信号（ＳＹＮＣＯＫ）と連動したレディ信号生成回路の実施例を示す。本回路は、図２で説明したように、プロセッサ間同期処理回路１０００と連動して動作する際、共有メモリ上のデ−タを、関連する処理を実行するプロセッサ間で矛盾なくやり取りするための局所同期機能を実現する。
【０１５２】
すでに詳細機能については述べたように、プロセッサによるタスク処理の終了を受けてプロセッサ間同期処理回路１０００での同期処理が完了しＳＹＮＣＯＫ信号がアクティブになったとしても、通信遅れのために共有メモリ上に次のタスク処理で必要な情報が存在していない状態が発生する可能性がある。本回路は、その状況を回避し、必要とする情報が確実に共有メモリから得られるように、共有メモリコントロ−ルユニット２０１０と同期処理回路１０００との間でさらに局所的な同期処理（インタ−ロック処理）を実行して、共有メモリ上でのデ−タ授受の前後関係に矛盾が生じないように管理する。
【０１５３】
基本的には、前述したように、ＳＹＮＣＯＫがアクティブになった時点でＣＳＢＵＳＹがアクティブならばＣＳＢＵＳＹが一度非アクティブに戻るまで、プロセッサが共有メモリの内容を読み出すことを禁止する。具体的には、上記の条件が成立したときプロセッサ側の共有メモリへのリ−ドサイクルをＲＤＹ−Ｎ信号を非アクティブに保つことによって引き延ばしてプロセッサ側を待たせ、インタ−ロック処理を行なう。
【０１５４】
関連する処理を実行する各プロセッサは、同期処理が完了しＳＹＮＣＯＫ（１レベルでアクティブ）がアクティブに転じた時点で、プロセッサは、少なくともすでに処理したタスクでの必要な処理結果を共有メモリへストアするプロセッサ側のライトサイクルの発行を全て終了しているはずである。
【０１５５】
ゆえに、各プロセッサの共有メモリシステム内（ライトバッファ２００４，２００８等の中）に保持されているすでに発行済みの前記プロセッサ側のライトサイクルに対応する共有メモリへの実際のライトサイクルが全て完了するまでは、すなわち、全てのプロセッサの共有メモリ２００６上に一致した内容の情報が現われその情報を各プロセッサが得られるようになるまでは、各共有メモリの内容を一致させるための情報を共有バスシステムを介して各プロセッサに対応する全共有メモリシステムへブロ−ドキャストするためのライトサイクルが共有バスシステム上に生成され続ける。
【０１５６】
それを受けて共有バスシステムがアクティブであることを示すＣＳＢＵＳＹ−Ｎもアクティブに保持され続けるため、前述したロジックによりインタ−ロックが可能となる訳である。図８の実施例を用いてこのインタ−ロック機能のロジックを以下に詳しく説明する。
【０１５７】
ＣＳＢＵＳＹ−Ｎは０レベルでアクティブな信号であり、共有バス上のコントロ−ル信号の１つであるア−ビタ回路１０２０からのＢＵＳＹ信号に応答して生成されることはすでに述べた。これをインバ−タ８００１を介してＲ−Ｓフリップフロップ８０００の一方の入力Ｒ−Ｎに接続しており、ＣＳＢＵＳＹ信号が非アクティブ（初期状態は非アクティブである）のときは無条件でＺ−Ｎに１が出力され、相対的にＺに０が出力される。以上の状態が初期状態である。
【０１５８】
なお、他方の入力Ｓ−ＮにはＮＡＮＤゲ−ト８００６の出力が接続されており、ＮＡＮＤゲ−ト８００６はＣＳＢＵＳＹ信号がアクティブ状態のとき、ＳＹＮＣＯＫ信号がアクティブに転じたその立ち上がりのエッヂを回路８００５の信号とＳＹＮＣＯＫ信号の状態とから検出して、Ｒ−Ｓフリップフロップ８０００のＳ−Ｎ入力にパルス（Ｌｏパルス）を生成する。
【０１５９】
そのパルスが生成されると、Ｒ−Ｓフリップフロップ８０００はセットされ、Ｚ出力に１がラッチされる。ただし、初期状態でＳＹＮＣＯＫ信号を０レベルにしておけば、ＮＡＮＤゲ−ト８００６は１レベルを出力した状態となり、かつＣＳＢＵＳＹ信号は０レベルが初期値であるため、Ｒ−Ｓフリップフロップ８０００のＺ出力は０にリセットされた状態となって、前記の初期状態と矛盾しない。
【０１６０】
ＮＡＮＤゲ−ト８００２は、共有メモリがアクセスされたことを示すＣＳＥＮ信号がアクティブで、Ｒ−Ｓフリップフロップ８０００がＮＡＮＤゲ−ト８００６からのパルスによってセットされてＺに１レベルが出力され、かつ、ＣＳＢＵＳＹ信号がアクティブのとき０レベルを出力する。これが、後段のＮＡＮＤゲ−ト８００３を無条件で１レベル、すなわち、ＲＤＹ−Ｎを非アクティブにすることにより、インタ−ロックの条件が揃ったときプロセッサ側からの共有メモリへのアクセスを一時的に禁止するように動作する。
【０１６１】
本例では、プロセッサが共有メモリにアクセスするとリ−ドサイクル、ライトサイクルいずれの場合にも、前記インタ−ロック機能が働くように設計しているが、リ−ドサイクル時のみにその動作をアクティブにしたければ、プロセッサからのリ−ドイネ−ブル信号がアクティブな条件をＮＡＮＤゲ−ト８００３でデコ−ドする様にしておけば良い（アクティブレベルが１のリ−ドイネ−ブル信号ＲＥをＮＡＮＤゲ−ト８００２の入力に加える）。
【０１６２】
なおＮＡＮＤゲ−ト８００３はＣＳＥＮ信号がアクティブになったときにのみ、すなわち、共有メモリシステムにプロセッサがアクセスしたときにのみ、そのプロセッサに対してアクティブなＲＤＹ−Ｎ信号を返送するようになっている。
【０１６３】
また、ＮＡＮＤゲ−ト８００９は、共有メモリシステムがアクセスされてＣＳＥＮがアクティブレベル（１レベル）になっていて、かつ、ＳＹＮＣＯＫが非アクティブレベル（０レベル）になっていれば（ＳＹＮＣＯＫ信号をインバ−トした信号をＮＡＮＤゲ−ト８００９の入力に接続している）０レベルを出力し、それがＮＡＮＤゲ−ト８００３の入力を駆動してその出力を無条件でＲＤＹ−Ｎ信号を非アクティブレベル（１レベル）に設定する。
【０１６４】
すなわち、プロセッサが共有メモリシステムをアクセスしたとき同期処理回路１０００でまだそのプロセッサに対する同期処理が完了していないならばプロセッサ側の共有メモリへのアクセス動作を待たせるように働く。これは特開平５−２５６８に開示された局所同期機能と等価である。もちろん、ＮＡＮＤゲ−ト８００９でリ−ドイネ−ブル信号（ＲＥ）のアクティブ状態を検出するようにして、共有メモリへの読み出し動作が生じたときにのみこの機能が働くように設計しても良い。
【０１６５】
この様に、本発明のインタ−ロック機能は、特開平５−２５６８で開示されている従来の局所同期機能にリンクされた形で、本発明の共有メモリシステムと連動したプロセッサ間同期処理をサポ−トしていることがわかる。
【０１６６】
インタ−ロックが解除され、本発明の局所同期処理が完了する条件は、ＣＳＢＵＳＹ信号が非アクティブに転ずることである。ＣＳＢＵＳＹ信号が非アクティブ（０レベル）になると無条件でＮＡＮＤゲ−ト８００２の出力は１になり、Ｒ−Ｓフリップフロップ８０００のＺ出力も０レベルにリセットされて初期状態に戻され、インタ−ロックが解除される。なお、ＮＡＮＤゲ−ト８００２に入力されているＳＹＮＣＳＥＬ（１レベルでアクティブ）は、このインタ−ロック回路による局所同期処理機能を有効（アクティブ）にするか否かを決める選択信号である。
【０１６７】
ＣＳＢＵＳＹ信号は、図８に点線で示したように、ＰＣＬＫをトリガクロックとしてフリップフロップを何段か通してから用いても良い。図８では、フリップフロップ８００４を一段通して使用する例を開示している。これにより、ＣＳＢＵＳＹ信号にハザ−ドが乗っている場合はそれを除去することが可能である。またこの方法で、ＣＳＢＵＳＹ信号を適切な時間遅らせることにより、インタ−ロックがかかっている時間が、共有メモリへの必要なすべてのデ−タの書き込みが有効となるまで、すなわち、リ−ドポ−ト側からそれらが確実に読み出せるようになるまでの時間を十分カバ−できる様に設定することが可能である。
【０１６８】
本例では、１ＰＣＬＫ周期分ＣＳＢＵＳＹ信号を遅らせることにより、インタ−ロック期間を本来のＣＳＢＵＳＹ信号が非アクティブになる時刻より１ＰＣＬＫ周期後にずらしている。そして、インタ−ロックが解除された直後には共有メモリ上で全ての必要なデ−タの読み出しが有効となるようにコントロ−ルユニットを設計している。つまり、本実施例の場合、インタ−ロックが解除されてＲＤＹ−Ｎ信号がアクティブとなりプロセッサのバスサイクルが終了する時点より前のタイミングで、必要な共有メモリ上での最後のライトサイクルが生成されて、ライトイネ−ブル（ＷＥ）とライトアドレス、ライトデ−タ（ＷＤ）等の信号がアクティブになっていれば良い。
【０１６９】
これは、本来のＣＳＢＵＳＹ信号が非アクティブになるタイミングから考えると、本実施例では、そのタイミングの直後に続く２つのステ−ト（１ステ−ト＝１ＰＣＬＫ期間分）のうちいずれかのステ−トで共有メモリ上での最後のライトサイクルが生成されていれば良いということになる。
【０１７０】
図に示したように、ＯＲゲ−ト８００７を用いてフリップフロップ８００４の出力とＣＳＢＵＳＹ信号とのＯＲ論理をとりその出力をフリップフロップ８００４の出力の代わりに用いれば、インタ−ロックの解除時刻はフリップフロップ８００４を用いた場合とほぼ同じに保ったまま、インタ−ロックの開始条件をフリップフロップ８００４を用いない場合とほぼ同じに設定できる。これによって、ＳＹＮＣＯＫがアクティブに転じたときにペンディングされている共有メモリへのライトサイクルが存在するにもかかわらず、ゲ−ト８００６の入力やＲ−Ｓフリップフロップ８０００のＲ−Ｎ入力に対する信号８００８（ＣＳＢＵＳＹ信号に応答して得られた信号）の状態が、信号の遅延によってその時点でまだアクティブ（１レベル）になっていないことが無いように設計することが容易となる。
【０１７１】
本発明の共有メモリへのアクセスタイミングに関する別の実施例を図９に示す。図５の例では、プロセッサ側と共有バス側との間の共有メモリ上でのアクセス状態を示したが、バスサイクルの条件として１バスサイクル当たり最小２プロセッササイクル（２×ＰＣＬＫ周期分）の時間が必要であると仮定していた。図９の例では、最小１プロセッササイクル（１ＰＣＬＫ周期分）でプロセッサ側、共有バス上、共有メモリ上の各バスサイクルを構成すると仮定している。
【０１７２】
ただし、アドレスを先行して出力し、後続のステ−トでデ−タの入出力を実行するパイプラインバスサイクル（アドレスバスとデ−タバスがそれぞれ１プロセッササイクルでそれぞれ独立に駆動され、かつ互いに１プロセッササイクル分ずれている）によってアドレスアクセス時間を比較的長い時間確保できるように工夫している。
【０１７３】
本実施例のパイプラインバスサイクルの特徴は、次に出力すべきバスサイクルに対するアドレス（ＡＤＤＲ）を最低１ステ−ト（１ＰＣＬＫ周期）分出力した後、１つ前のバスサイクルに対するＲＤＹ−Ｎ信号が返送されてそのバスサイクルが終了していれば、さらにその次のアドレス値（既にプロセッサ側で準備できているなら）を出力していく。
【０１７４】
ある１つのアドレスに対応するデ−タのやりとりに関しては、そのアドレスが出力されたステ−トの次のステ−トの最後でプロセッサとの間での入出力が実行される。すなわち、アドレスバスの動作に対してデ−タバスの動作は１ステ−ト分遅れており、デ−タがプロセッサとの間でやりとりされるステ−トの最後のポイントがそのデ−タの前記アドレスに対するバスサイクルの終了時点となっている。
【０１７５】
プロセッサが次のアドレスを出力できる状態にあれば、前記デ−タの出力されるステ−トですでに次のアドレスのアドレスバスへの出力が可能となっており、デ−タの入出力と並行して次から次へとパイプライン的にアドレスを先行出力していくことができるので、パイプラインアドレッシング又はパイプラインバスサイクルと呼ぶ訳である。
【０１７６】
例えば、図９のプロセッサ（Ａ）において、アドレス（ＡＤＤＲ）Ａ１は、ステ−トＳ０で２つ以上前のバスサイクルが既に終了しているため、プロセッサがアドレス値Ａ１を準備できたステ−トＳ０で直ちに出力され、それはライトサイクルなので続いてステ−トＳ１でプロセッサから外部へ書き込むべきデ−タＤ１を出力している。
【０１７７】
ステ−トＳ１では１つ前のバスサイクルも既に終了しているため、プロセッサはＡ１を１ステ−ト分出力した後直ちにＡ１に対応するデ−タの出力Ｄ１と並列に次のアドレスＡ３（読みだしサイクル）を出力している。デ−タＤ１に対するＲＤＹ−Ｎ信号はステ−トＳ１の最後のポイントでプロセッサ（Ａ）に取り込まれ、それを受けてステ−トＳ２ではさらに次のアドレス情報Ａ５（書き込みサイクル）がＡ３に対するデ−タの入力動作ｎｏｔ  Ｄ３と並列に実行されている。
【０１７８】
以上のように、リ−ドサイクルとライトサイクルが混在しても１プロセッササイクル単位ごとにアドレスバスとデ−タバスとが並列かつパイプライン的に駆動され、実質１ステ−ト／バスサイクルを実現することが可能となっている。
【０１７９】
図９の実施例では、プロセッサ間同期処理回路と連動してタスク単位のデ−タの授受を矛盾なく確実に行なうというのではなく、同期について管理せずプロセッサ間で情報を自由にやりとりする場合の共有メモリシステム上のアクセス状況を、２台のプロセッサの場合（プロセッサＡとＢ）を例にとり示している。少ないスペ−スで共有メモリへのアクセスを詳しく表現するために、全てのサイクルが共有メモリへのリ−ド又はライトサイクルであり、他の一般のリソ−スやプロセッサ間同期処理回路１０００などへのアクセスはこれと並列に実行されていると仮定している。
【０１８０】
この様なプロセッサシステムは、メインプロセッサと別に専用のプロセッサを付加したり、共有メモリシステムへのアクセスのためのバスシステムと他の一般のリソ−スへのアクセスのためのバスシステムとを別々に有する高度な処理系を構成すれば実現可能である。
【０１８１】
デ−タＤ１，Ｄ２，Ｄ５はプロセッサ（Ａ）側から共有メモリへ書き込まれる情報で、デ−タＤ３，Ｄ４はプロセッサ（Ｂ）側から共有メモリ書き込まれる情報であるとしており、読み出すのもそれらのデ−タのいずれかであるとしている。まだ必要なデ−タが共有メモリに書き込まれておらず、１つ前のデ−タ（以前に書き込まれたデ−タ）が読める場合は、ｎｏｔ  Ｄｎといったように前に”ｎｏｔ”を付けた表現としている。
【０１８２】
リ−ドサイクルかライトサイクルかはアドレス（ＡＤＤＲ）とほぼ同じタイミングで出力されるＲＤ／ＷＴ信号（Ｈｉ−ＲＤ，Ｌｏ−ＷＴ）で示している。ライトサイクルが生成されると共有バスを介して共有メモリを書き替えるための情報（アドレス、デ−タ、ＢＵＳＹ信号など）が全ての共有メモリシステムにブロ−ドキャストされて各プロセッサの共有メモリ上でライトサイクルが生成され、その内容が変更される。
【０１８３】
図中のプロセッサのバスサイクルのところには、共有メモリへのライトサイクルには（Ｗ），リ−ドサイクルには（Ｒ）と付している。共有バス上のバスサイクルは必然的にライトサイクルのみとなっており、バスサイクルが生成されている期間はＣＳＢＵＳＹ−Ｎ信号（Ｌｏアクティブ）がアクティブ状態となっている。
【０１８４】
共有バス上では、アドレス情報とデ−タ情報とがプロセッサ側のアドレス及びデ−タ出力タイミングよりおよそ１／２ステ−トずれて出力され、ＣＳＢＵＳＹ−Ｎ信号は共有バス上でのアドレスとほぼ同じタイミングで出力されている。共有バス上のバスプロトコルの状態は、完全にプロセッサクロック（ＰＣＬＫ）に同期して管理されており、例えば具体的には、プロセッサ（Ａ）側のステ−トＳ０で出力されているアドレスＡ１は共有バス上ではステ−トＳ１の先頭付近から１ステ−ト分出力され、プロセッサ（Ａ）側のステ−トＳ１の先頭から出力されているデ−タＤ１は共有バス上ではステ−トＳ１の中央付近から１ステ−ト分出力される。
【０１８５】
共有メモリ上のバスプロトコル状態もプロセッサクロック（ＰＣＬＫ）に同期して管理されており、図９の中では、主としてプロセッサ（Ａ）及び（Ｂ）それぞれに対応するライトデ−タ／リ−ドデ−タの状態と、ライトアドレス及びライトイネ−ブル（ＷＥ）が生成されるタイミングとを示している。
【０１８６】
次に共有メモリ上でのバスサイクルについて詳しく述べる。共有バス上のＣＳＢＵＳＹ−Ｎ信号がアクティブに転ずると、そのステ−トの中央付近で、共有バス上のアドレス情報が共有メモリに対して有効となる様にゲ−トされて共有メモリのライトポ−トにライトアドレス（ＷＡ）として約１ステ−ト期間分与えられている。このタイミングを得るには、ＰＣＬＫの反転（ＰＣＬＫ−Ｎ）クロックとして用いてゲ−トラッチにより共有バス上のＡＤＤＲの内容をステ−トの中央でゲ−トし、情報を透過しておいてステ−トの終わりでラッチし、さらに約１／２ステ−ト期間保ってから共有メモリにライトアドレス（ＷＡ）として与えれば良い。
【０１８７】
一方、共有バス側からのライトデ−タ情報は、ＰＣＬＫをクロックとして用いてゲ−トラッチにより共有バス上のＤＡＴＡの内容をステ−トの先頭でゲ−トし情報を透過しておいてステ−トの中央でラッチし、さらに約１／２ステ−ト期間保ってから共有メモリにライトデ−タ（ＷＤ）として与えれば良い。
【０１８８】
ライトイネ−ブル信号は、ライトデ−タ（ＷＤ）を共有メモリに与えるタイミングすなわちステ−トの先頭から約１／２ステ−ト分アクティブになる様に、ＣＳＢＵＳＹ−Ｎ信号に応答して生成する。ＷＥがアクティブの期間、ＷＡの値が共有メモリに対して有効となっているようにタイミングの調整を行なっている。
【０１８９】
本発明では、共有メモリへのライトサイクルは、全てのプロセッサの共有メモリシステムに対して共通にかつほぼ同じに生成されるものとしている。
【０１９０】
共有メモリ上でのリ−ドサイクルは、すでに述べたようにリ−ドポ−トを用いてライトサイクルと並列に実行され、かつ各共有メモリ上で対応するプロセッサのバスサイクルに応じた全く別々の内容のサイクルが生成される。
【０１９１】
図９において、ＷＴ（Ａ１）／ＲＤ（Ａ３），ＷＴ（Ａ１）／ＲＤ（Ａ１），ＷＴ（Ａ５）／ＲＤ（Ａ４），ＷＴ（Ａ３）／ＲＤ（Ａ３），ＷＴ（Ａ４）／ＲＤ（Ａ４），ＷＴ（Ａ４）／ＲＤ（Ａ１）の記号を付したサイクルでリ−ドサイクルとライトサイクルが並列に生じている。また、リ−ドサイクルのみが生じている場合には（Ｒ），ライトサイクルのみが生じている場合には（Ｗ）と付してある。
【０１９２】
より詳しい情報として、各サイクルの上段又は下段に、リ−ドサイクルの場合ＲＤ（Ａｘ），ライトサイクルの場合ＷＴ（Ａｘ），ライトサイクルとリ−ドサイクルとが並列に生じている場合ＷＴ（Ａｘ）／ＲＤ（Ａｙ）と表示しておいた。Ａｘ，Ａｙはプロセッサから送られてきた書き込むべきデ−タ情報Ｄｘ，Ｄｙに対応するアドレス情報である。
【０１９３】
リ−ドサイクルにおける共有メモリ上でのアドレス（ＲＡ）やデ−タ（ＲＤ）の生成タイミングはライトサイクルと比較すると、デ−タの入出力方向が逆になる（リ−ドはプロセッサへ、ライトはプロセッサからそれぞれデ−タを授受する）ことを除けばライトサイクルの場合とほぼ同じと考えて良いが、リ−ドイネ−ブル（ＲＥ）が存在する場合、それがアクティブに転ずるタイミングは、リ−ドデ−タＲＤがアクティブになるステ−トの先頭又は中央付近からそのステ−トの最後のポイントまでである。
【０１９４】
ここで、プロセッサからのライトサイクルに対応して共有メモリ上のデ−タ内容が変更され、実際に他のプロセッサからそのデ−タが読み出せるようになるまでのタイミングについてみてみる。本例では、プロセッサ（Ａ）側がアドレスＡ３に対応するデ−タＤ３を読み出す操作を２回（それぞれＳ１，Ｓ４でアドレスの出力を開始している）、Ａ４に対応するデ−タＤ４を読み出す操作を２回（それぞれＳ３，Ｓ５でアドレスの出力を開始している）行っている。
【０１９５】
しかし、プロセッサ（Ｂ）が共有メモリ上のアドレスＡ３の内容を変更するためのバスサイクルを生成するのはステ−トＳ３の時点であり、デ−タＤ３はステ−トＳ４の先頭でプロセッサ（Ｂ）から出力され、実際に共有メモリ上でＤ３が有効になって、プロセッサ（Ａ）側からの読み出しが可能となるのはステ−トＳ５の先頭でライトイネ−ブル（ＷＥ）がアクティブになった時点からである。
【０１９６】
同様に、プロセッサ（Ｂ）が共有メモリ上のアドレスＡ４の内容を変更するためのバスサイクルを生成するのはステ−トＳ４の時点であり、デ−タＤ４はステ−トＳ４の先頭でプロセッサ（Ｂ）から出力され、実際に共有メモリ上でＤ４が有効となり、プロセッサ（Ａ）側からの読み出しが可能となるのはＳ６の先頭でライトイネ−ブル（ＷＥ）がアクティブとなってからである。
【０１９７】
プロセッサ（Ａ）はＳ２，Ｓ５の各ステ−トでアドレスＡ３に対応するデ−タＤ３を、Ｓ４，Ｓ６の各ステ−トでＡ４に対応するデ−タＤ４を読み出しているが、ステ−トＳ２ではプロセッサ（Ｂ）が書き換えようとしているＤ３の値は読めず、以前に設定されている共有メモリ上のアドレスＡ３の内容が読み出せることになる。Ｄ４の値に関しても、プロセッサ（Ａ）はＳ４，Ｓ６の各ステ−トで共有メモリから読み出しているが、Ｓ４ではプロセッサ（Ｂ）が書き換えようとしているＤ４の値は読めず、以前に設定されている共有メモリ上のアドレスＡ４の内容が読み出せる。
【０１９８】
そして、プロセッサ（Ｂ）からのＤ３が共有メモリ上に反映されるステ−トＳ５では、実際のＤ３の値がプロセッサ（Ａ）によって読み出せており、同様に、プロセッサ（Ｂ）が設定した実際のＤ４の値はステ−トＳ６でプロセッサ（Ａ）によって読み出せている。
【０１９９】
本例から、プロセッサ（Ｂ）がデ−タを出力してからプロセッサ（Ａ）が共有メモリを介してそのデ−タを内部に取り込むまでのレイテンシは２ステ−トであることがわかる。このうち共有メモリシステム側でのレイテンシは１ステ−ト分（１ＰＣＬＫ周期分）であり、共有メモリを用いた非常に効率の良いデ−タの共有メカニズムが実現できていることがわかる。
【０２００】
図９からわかる様に、共有メモリ上のリ−ドサイクル及びライトサイクルが完全にアクセス競合が発生しない状態で動作していることがわかる。また、ブロ−ドキャスト方式によって共有バス上でやりとりされる情報もライトサイクルのみとなっており、かつ、共有メモリ上でのバスサイクルにアクセス競合等によるアクセス時間の損失やオ−バ−ヘッドが生じていないため、共有バス側もプロセッサ側も１ステ−トでバスサイクルを終了することが可能となっている。
【０２０１】
このことは、理論的に最高効率の共有メモリシステムを提供できていることを示している。例えば、本例のバス効率を有するプロセッサシステムが、すべてのデ−タの入出力を共有メモリシステムを介して行なうような共有メモリシステムに対して最もシビアな状態をもたらすアプリケ−ションをそのプロセッサシステムの上で実行した場合でも、３台のプロセッサまでならば、全くオ−バ−ヘッド無く処理できるレベルの能力を本発明の共有メモリシステムは有していると考えられる。
【０２０２】
これは、全バスサイクルにおいてライトサイクルの占める割合の平均はおよそ３０％程度であることが知られており、３台のプロセッサ分のライトサイクル数ならば、たとえそれらがすべて共有メモリへのアクセスであったとしても、本発明の共有バスシステムは十分吸収できる（共有バスシステムはライトサイクルのみをサポ−トするので、システム上でのライトサイクルの発生の頻度がその性能を決定する）レベルにあるからである。
【０２０３】
次に、本共有メモリシステムを用いた場合、現実のマルチプロセッサシステムでは何台までのプロセッサを有効に接続可能かを検討しておく。
【０２０４】
本共有メモリシステムを用いることにより、３台まではシステムの性能にほとんど影響無くプロセッサを接続可能な事は前述した検討にて示した。しかし、この検討では、システム内の各プロセッサが共有メモリシステムに対して最悪に近い条件でのアクセスをランダムに行なった場合を想定しており、しかも、プロセッサはすべてのプロセッササイクルで共有メモリを常にアクセスしていると仮定しているため、現実的とは言えない。
【０２０５】
実際には、プロセッサの内部命令処理（例えばレジスタ間演算）が平均１プロセッサクロックで処理され、メモリ等、外部へのアクセスを伴う処理が最良２プロセッサクロック（内１プロセッサクロック分が外部デ−タアクセス時間）で処理されるとすると、５０％の命令が外部アクセスを伴うとして、１命令当たり平均１．５プロセッサクロックの処理時間となる。
【０２０６】
すなわち、１命令当たり、外部デ−タのアクセスに要する平均のプロセッサクロック数は０．５クロックであり、全バスバンド（１デ−タ当たり１プロセッサクロックでアクセスできるとしている）に占める割合は３３％（０．５／１．５×１００％）である。そして、外部アクセスを伴う命令のうち、密結合のマルチプロセッサシステムにおいて、一般的なアプリケ−ションでは１０％〜３０％が共有メモリシステムへのアクセスとなる。
【０２０７】
疎結合のシステムでは、一般的に、共有メモリシステムへのアクセスは僅か１％以下であることが多いが、従来のシステムではそれでも通信オ−バ−ヘッドやアクセス競合によるシステムの性能損失が無視できないレベルにあるのが現状である。従来の密結合マルチプロセッサシステムでは、共有メモリシステムへのアクセス頻度が１０％程度のものでも３〜４台のプロセッサを接続すると著しくシステム性能が低下してしまう。
【０２０８】
上記のプロセッサ性能を前提とするという条件下で本共有メモリシステムを用いた場合、プロセッサ側からみた共有メモリシステムへのランダムアクセス頻度が前外部アクセスの１０％程度とし、その３０％がライトサイクルであると仮定すれば、本共有メモリシステムの特性上、実質的な共有メモリへのアクセス頻度（共有バスシステムの専有率に等しい）は、１プロセッサ当たり僅か１％（０．５×０．１×０．３／１．５×１００％）程度となる。共有メモリシステムへのランダムアクセス頻度が全外部アクセスの３０％程度と仮定しても、実質的な共有メモリへのアクセス頻度は３％（０．５×０．３×０．３／１．５×１００％）程度である。
【０２０９】
これは、本共有メモリシステムを１組備えれば、３０〜１００台程度のプロセッサから成る密結合マルチプロセッサシステムを有効に動作させることが可能となることを示している。従来技術と本技術とを比較すると、３〜４台から１００台程度のプロセッサ数を備えたシステムにおいて、本システムの優位性が顕著に現われると考えられる。
【０２１０】
上記の検討は、本共有メモリシステムを１組だけ備えた場合の性能を評価したものであるが、本共有メモリシステムを複数組み備え、各共有メモリシステムへ共有デ−タをうまく分散して配置すれば、さらに共有メモリシステムの組数倍のプロセッサ台数をサポ−トすることが可能となる。
【０２１１】
ランダム性の高い共有デ−タを前記複数組の共有メモリシステムに平均的に分散するのであれば、アドレス値を前記共有メモリシステムの組数で除した時の余りで共有メモリシステムの各組みをナンバリングして、同一の余りの値を有するアドレス群をその余りの値に対応するナンバを有する共有メモリシステムに割り付ける等の方法によって、共有メモリを前記複数の組に対応してインタ−リ−ブする方式が有効である。
【０２１２】
共有デ−タの機能や用途、使用方法等が分類できるのであれば、その分類の単位で最適化して別々の共有メモリシステムを設けて共有デ−タを機能分散し、全体のアクセスが各共有メモリシステムに対して平均的に分散されるように設計することも可能である。
【０２１３】
次に図１０を用いて、プロセッサ間同期処理回路１０００と連動して、図８に示したインタ−ロック回路によって同期処理完了時刻と共有メモリ上で適正にデ−タが有効になる時刻との正合性を取る局所的な同期処理機能を有効にした場合の共有メモリアクセスタイミング例を示す。条件は、前記局所同期機能が働いていること以外は、図９と全く同様である。
【０２１４】
プロセッサ（Ａ）側のバスステ−トはステ−トＳ３の最後まで、プロセッサ（Ｂ）側のバスステ−トは最後まで、図９と同じタイミングで動作している。異なるのは、同期処理回路１０００からの同期完了情報であるＳＹＮＣＯＫ信号がアクティブに転ずるステ−トＳ３以後のプロセッサ（Ａ）側の動作と、それに伴って変化するステ−トＳ６以後の共有バスシステム上のライトサイクルとステ−トＳ４以後の共有メモリ上のリ−ド及びライトサイクルである。
【０２１５】
プロセッサ（Ａ）は、ステ−トＳ２でのアドレスＡ５に対するライトサイクルを生成した後そのバスサイクルと並行に、同期処理回路１０００へもプロセッサ（Ｂ）との同期を取るための同期要求（ＳＲＥＱ）を、ステ−トＳ３の先頭で生成している。この時点が、プロセッサ（Ａ）のタスクの完了時点とみなすことができ、ステ−トＳ３以前に生成された共有メモリへのライトサイクル（アドレスＡ１とＡ５に対するライトサイクル）が、前記タスクで処理され他のプロセッサでも利用する可能性のある結果デ−タであると考えられる。
【０２１６】
その同期要求（ＳＲＥＱ）を同期処理回路が受けると、一度プロセッサ（Ａ）に対するＳＹＮＣＯＫ信号を非アクティブレベル（０レベル）に設定し、この時点でプロセッサ（Ｂ）がまだ所定のタスク処理を終了していないので図１０に示したとおりそのまま非アクティブ状態を保つ。
【０２１７】
プロセッサ（Ｂ）は、ステ−トＳ４で開始されている共有メモリのアドレスＡ４へのライトサイクルが、プロセッサ（Ａ）と同期すべきプロセッサ（Ｂ）側のタスクにおける共有メモリに対する最後のバスサイクルであり、プロセッサ（Ｂ）は、ステ−トＳ５の先頭でこのバスサイクルと並行に同期処理回路１０００に同期要求を生成する。
【０２１８】
これを受けて、同期処理回路１０００は、プロセッサ（Ａ）とプロセッサ（Ｂ）との間の同期処理が完了した（同期がとれた）とみなし、直ちにプロセッサ（Ａ）に対する前記ＳＹＮＣＯＫ信号をアクティブレベル（１レベル）に戻す。このタイミングで、同期処理回路１０００は、プロセッサ（Ｂ）からの同期要求（ＳＲＥＱ）を受けてプロセッサ（Ｂ）に対するＳＹＮＣＯＫ信号を一度非アクティブレベルに設定しようとするが、すでにプロセッサ（Ａ）側のタスクは終了しており、それに伴う同期要求（ＳＲＥＱ）も生成されているため、直ちに同期処理が完了してしまい、ＳＹＮＣＯＫ信号はすぐにアクティブレベルに戻されてしまう。
【０２１９】
このため、プロセッサ（Ｂ）のＳＹＮＣＯＫ信号は実質上アクティブ状態を保ちつづけるため、プロセッサ（Ｂ）はＳＹＮＣＯＫ信号の変化に伴う影響を受けていない。すなわち、プロセッサ（Ｂ）の動作効率は図９の例と実質的に同レベルであり、同期処理の影響を受けずに（プロセッサが同期待ちになる等、同期のためのオ−バ−ヘッド等が生じない状態で）最大効率で動作している。
【０２２０】
このように本発明の実施例では、互いに同期を取り合うべきプロセッサの中で最後に同期要求を出力するプロセッサは処理効率が低下すること無く動作することができる。なお、この様な条件下でも、ＳＹＮＣＯＫ信号が一度確実に非アクティブレベル（０レベル）に転ずることを保証し、非アクティブレベルのパルスが確実に生成されるようにするためには、同期要求（ＳＲＥＱ）を出力するタイミングを、プロセッサが終了しようとしているタスクの中で共有メモリへの最後のライトサイクルに対応するアドレスを出力するタイミングとほぼ同じにするなど、１／２ステ−ト程度前倒しにすれば良い。
【０２２１】
図１０の例では、プロセッサ（Ｂ）が、ステ−トＳ４でアドレスＡ４を出力するタイミングに合わせて同期要求（ＳＲＥＱ）を出力する様に設計すれば良い。この様にして、ＳＹＮＣＯＫ信号のアクティブレベルに転ずるエッヂを保証することは、図８に開示したインタ−ロック回路例において、インタ−ロックを開始する時刻を決めるために重要な条件である。
【０２２２】
プロセッサ（Ａ）は本来、同期要求（ＳＲＥＱ）をステ−トＳ３の先頭で生成した後のステ−トＳ４以後で、実際に同期処理が完了していなくても、共有メモリへのアクセスを伴わない他の処理や次のタスク処理等を先行して実行しておくことができる。これは本システムが、特開平３−２３４５３５号公報で開示している局所同期機能と基本的に同様の機能をサポ−トしているからである。
【０２２３】
しかし、図１０の例ではスペ−スの関係で、同期要求（ＳＲＥＱ）を出力した後直ちにステ−トＳ３で共有メモリのアドレスＡ４にアクセスしており、その時点でＳＹＮＣＯＫ信号は非アクティブ（０レベル）なので、これを受けてプロセッサ（Ａ）側のバスサイクルはステ−トＳ５以後待ち状態に入って、局所同期が完了するまでＤ４の値を共有メモリから読み出さない様にしていることがわかる。
【０２２４】
今回、その局所同期機能に図８に示したようなインタ−ロック機能を追加し、本発明の共有メモリシステムを用いてプロセッサ間同期処理機能と連動させたときのプロセッサ間のデ−タ授受の前後関係について、矛盾が発生しないようにしたところに本発明の特徴があることはすでに述べた。
【０２２５】
この局所同期の処理方式について、従来のシステムである特開平３−２３４５３５号公報の実施例では、図１０と同様の共有メモリへのアクセス状況を想定した場合、ＳＹＮＣＯＫ信号がアクティブレベルに戻るステ−トＳ５で同期処理が完了したとしてアクティブなＲＤＹ−Ｎ信号をプロセッサ（Ａ）に返送し、ステ−トＳ６以後はプロセッサ（Ａ）を次の処理に進めていた。
【０２２６】
したがって、従来の方法ではステ−トＳ５の期間１ＰＣＬＫ周期分だけがプロセッサ（Ａ）側の待ち状態となっていたが、本発明の共有メモリシステムを用いることによって共有メモリへのリ−ドサイクルとライトサイクルが並列に実行できるようになり、従来と同様の方式をとると、ライトサイクルのタイミングと無関係に非常に早いタイミングで（ステ−トＳ５で）プロセッサ（Ａ）側のリ−ドサイクルが実行されてしまい、ステ−トＳ５の時点では実際に受け取るべきプロセッサ（Ｂ）からのアドレスＡ４に対するＤ４の値が共有メモリ上でまだ有効な状態になっておらず、プロセッサ（Ａ）が目的とするデ−タを得られなくなってしまう。
【０２２７】
実際にプロセッサ（Ｂ）からのアドレスＡ４に対応するＤ４の値が、共有メモリ上で有効となるのはステ−トＳ６の時点であり、最低限その時刻までプロセッサ（Ａ）側を待たせる必要が生ずる。本発明では、そういったデ−タ授受に関する前後関係の矛盾を、図８に示したようなインタ−ロック回路によって正常化しているのである。
【０２２８】
次に、図１０のタイミング図におけるインタ−ロック回路の動作状態を説明する。ステ−トＳ３でプロセッサ（Ａ）側の共有メモリ上のアドレスＡ４に対するリ−ドサイクルが生成されるとすでにＳ３でＳＹＮＣＯＫ信号が非アクティブ状態なので、それを受けて図８のＲＤＹ−Ｎ信号がステ−トＳ４で非アクティブ状態に固定される。したがって、プロセッサ（Ａ）側のバスサイクルはステ−トＳ５以後ＲＤＹ−Ｎ信号がアクティブに転じるまで待ち状態（ＷＡＩＴ  ＣＹＣＬＥ）に入り、アドレスＡ４に対するバスサイクルが引き延ばされる（アクティブなＲＤＹ−Ｎが返送されるまでバスサイクルを終了しない）。
【０２２９】
しかし、プロセッサ（Ａ）は、パイプラインバスサイクルを実行しているため、ステ−トＳ４ではすでに次のアドレス値（Ａ３）を出力している。このメカニズムについてはすでに述べたとおりである。
【０２３０】
次に、ステ−トＳ５では、プロセッサ（Ｂ）側の同期要求（ＳＲＥＱ）が同期処理回路１０００に対して生成され、それを受けて同期処理回路１０００は両者の間で同期がとれ同期処理が完了したものとして、プロセッサ（Ａ）及び（Ｂ）に対するＳＹＮＣＯＫ信号をアクティブに戻す。この時点でＣＳＢＵＳＹ−Ｎ信号がアクティブレベル（０レベル）になっているので、そのＳＹＮＣＯＫ信号の立ち上がりの変化に応答して、本発明のインタ−ロック回路の機能が働くことになる。
【０２３１】
インタ−ロック回路はＣＳＢＵＳＹ−Ｎ信号が一度非アクティブレベル（１レベル）に戻るまでプロセッサ（Ａ）側へのＲＤＹ−Ｎ信号を非アクティブレベル（１レベル）に保ち続ける。本例では、図８の８００４に示したようなフリップフロップを用いてＣＳＢＵＳＹ−Ｎ信号をＰＣＬＫによって１ＰＣＬＫ周期分シフトしてから用いているので、内部的に有効なＣＳＢＵＳＹ−Ｎ信号は一点鎖線で示した変化のタイミングを有するものと等価と考えて良い。
【０２３２】
したがって、ＣＳＢＵＳＹ−Ｎ信号が内部的に非アクティブレベルに戻るのはステ−トＳ７の先頭であり（元となるＣＳＢＵＳＹ−Ｎ信号はステ−トＳ６で非アクティブに戻る）、それに応答してＳ７の広範でプロセッサ（Ａ）に対するＲＤＹ−Ｎ信号がアクティブになって、プロセッサ（Ａ）は、アドレスＡ４に対するバスサイクルをステ−トＳ７の最後のポイントで終了する。
【０２３３】
本例では、共有メモリへのリ−ドサイクルが生成された時にのみ局所同期機能が働くように、図８のＮＡＮＤゲ−ト８００２と８００６にリ−ドイネ−ブル信号ＲＥ（アクティブレベル１）を入力しているとして仮定しているため、本発明の局所同期機能によってＲＤＹ−Ｎが非アクティブ状態で固定されるステ−トはＳ４，Ｓ５，Ｓ６の３ステ−ト分である。そのうち、ステ−トＳ４におけるＲＤＹ−Ｎ信号の制御は、前述した様に、従来の局所同期機能（特開平５−２５６８）によってもサポ−トされていたものであり、Ｓ５，Ｓ６におけるＲＤＹ−Ｎ信号の制御が今回の発明で新たに加わったインタ−ロック回路によって追加された局所同期機能である。
【０２３４】
これによって、ステ−トＳ３で生成された共有メモリアドレスＡ４に対応するＤ４の値は、ステ−トＳ７の最後でプロセッサ（Ａ）に取り込まれ、プロセッサ（Ａ）はステ−トＳ８以後通常の動作（次の処理又は次のタスク）に戻る。なお、ステ−トＳ４でプロセッサ（Ａ）により生成され待たされていたアドレスＡ３に対するバスサイクルは、局所同期処理が完了した後のステ−トＳ８で、プロセッサ（Ａ）が対応するデ−タＤ３（プロセッサ（Ｂ）により書き換えられたデ−タ）を得て終了している。
【０２３５】
図１０に示した実施例では、ＣＳＢＵＳＹ−Ｎ信号を内部的にシフトして用いるのではなく、そのままのタイミング（実線で示したもの）で用いても正しく局所同期処理を実行することができる。すなわち、本来のＣＳＢＵＳＹ−Ｎ信号の変化タイミングを用いると、ステ−トＳ６でＣＳＢＵＳＹ−Ｎ信号が非アクティブに転ずるタイミングに応答してインタ−ロックが解除され、プロセッサ（Ａ）側のデ−タバス（ＤＡＴＡ）及びＲＤＹ−Ｎ信号に点線で示したタイミングで目的とするデ−タＤ４とアクティブなＲＤＹ−Ｎ信号とが生成される。
【０２３６】
これに応答してプロセッサ（Ａ）は、ステ−トＳ６の最後のポイントでアドレスＡ４に対応するバスサイクルを終了し、次の処理に進むことになる。
【０２３７】
本実施例では、デ−タを送信する側のプロセッサから目的のデ−タが共有メモリシステムに対して出力されてから、それが共有メモリ上で有効となり読み出せるようになるまでに僅か１ステ−ト分のレイテンシしか必要としないことはすでに述べた。したがって、共有メモリ上のアドレスＡ４に対応するデ−タＤ４をプロセッサ（Ｂ）が出力するステ−トＳ５の次のステ−トＳ６ではすでに、共有メモリ上でデ−タＤ４が有効な状態となっているため、プロセッサ（Ａ）側はステ−トＳ６の最後のポイントでそれを読み出し、ステ−トＳ７以後は次のサイクルに移行したとしても問題無く動作する訳である。
【０２３８】
また、ＣＳＢＵＳＹ−Ｎ信号を、内部的に図８に示したＯＲゲ−ト８００７を介して使用するように設計すれば、プロセッサ（Ｂ）側がステ−トＳ３で同期要求（ＳＲＥＱ）を出力して、そのステ−トで直ちに同期が完了したと同期処理回路側で判断し、すぐにＳＹＮＣＯＫ信号がアクティブレベルに設定されたとしても、すでにその時点でＣＳＢＵＳＹ−Ｎ信号はアクティブレベルになっているので、インタ−ロック回路でインタ−ロックするためのタイミングを取り誤ることはない。
【０２３９】
すなわち、図１０で、一点鎖線と実線とを重ね合わせたＣＳＢＵＳＹ−Ｎ信号（いずれかが０レベルなら０レベルを生成する論理としたＣＳＢＵＳＹ−Ｎ信号）を内部的に用いるように設計すれば良い。なお、インタ−ロックの終了条件は、単純にＣＳＢＵＳＹ−Ｎ信号をシフトして用いた場合（一点鎖線の場合）と同等である。
【０２４０】
前述したように、本来のＣＳＢＵＳＹ−Ｎ信号を直接用いた場合も、インタ−ロックの開始条件はＯＲゲ−ト８００７を用いる場合とほぼ同等である。すべての条件を加味すると、ＣＳＢＵＳＹ−Ｎ信号を図８の信号８００８として直接用いる方式が、本実施例の効率を最も高められると判断できる。
【０２４１】
なお、前述したように、特開平５−２５６８号公報の実施例では、図６に示した１ポ−トの共有メモリユニットを用いており、共有メモリへのリ−ドサイクルとライトサイクルとが競合した場合にはリ−ドサイクルを待たせライトサイクルを優先することによって、プロセッサ間同期処理機構と連動したときでも結果的にプロセッサ間でのデ−タ授受に矛盾が生じないようになっている。
【０２４２】
なぜなら、同期処理回路が同期完了情報（ＳＹＮＣＯＫ）を生成した時にはすでに，対象となるプロセッサは共有メモリシステムに対する必要なライトサイクルを全て生成し終わっているはずであり、リ−ドサイクルよりライトサイクルが優先されていれば、それらのライトサイクルによって各プロセッサの全ての共有メモリの内容が変更されるまでプロセッサ側が無条件で待たされることになるためである。
【０２４３】
すなわち、ここで説明したインタ−ロック機能は、２ポ−ト共有メモリユニットを用いてアクセス効率を改善したことによってプロセッサ間のデ−タ授受が高速化されたことに伴う副作用を抑え込むためのものであるといえる。
【０２４４】
最後に、共有メモリシステムの各論理回路部をＬＳＩ（集積回路）化する場合について、その機能の分割方法として採り得る方策を以下に述べる。
【０２４５】
ｉ）メモリユニット２００６や３００６を１チップ又は複数チップのＬＳＩ（集積回路）にまとめる。すなわち、メモリセル（例えば図４に開示したようなセル）を複数個備え、少なくとも読み出しデ−タ（ＤＯ）出力ピンとそれに対応する読み出しアドレス（ＲＡ）入力ピンと、書き込みデ−タ（ＤＩ）入力ピンとそれに対応する書き込みアドレス（ＷＡ）入力ピンと、指定された前記書き込みアドレス（ＷＡ）対応するメモリセルに前記デ−タＤＩの書き込みを指令する書き込みイネ−ブル（ＷＥ）信号入力ピンとを具備し、前記メモリセルを前記書き込みアドレスＷＡ及び読み出しアドレスＲＡに対応させて配置し、前記ＷＡの指定に対応した少なくとも１つのメモリセルの入力（Ｄ）側に前記書き込みデ−タ入力ピンから得た書き込みデ−タＤＩの少なくとも１ｂｉｔを設定し、前記ＷＥに対応して生成されたライト信号（ＷＲ）によってその書き込み対象となったメモリセルにラッチする手段と、前記ＲＡの指定に対応した少なくとも１つのメモリセルの出力（Ｚ）を選択し、前記読み出しデ−タＤＯの少なくとも１ｂｉｔとして前記デ−タ出力ピンに出力する手段とを有するメモリＬＳＩを製作する。
【０２４６】
また、前記メモリＬＳＩには、書き込みイネ−ブル（ＷＥ）信号入力ピンがアクティブレベルのとき、書き込みアドレス（ＷＡ）入力ピンと読み出しアドレス（ＲＡ）入力ピンに与えられたアドレス値が同一の場合、書き込みデ−タ（ＤＩ）入力ピンに指定された値を読み出しデ−タ（ＤＯ）出力ピン側に透過して出力する機能を設けておく。
【０２４７】
ii）各プロセッサに対応して設ける共有メモリシステム１０１０〜１０１ｎの各々をそれぞれ１つのＬＳＩにまとめる。共有メモリシステム内の２ポ−ト共有メモリ２００６は、ｉ）に示したものと同一機能のものをこの共有メモリシステムＬＳＩに集積するか、又は、共有メモリシステムＬＳＩ内に集積するのでは無く、ｉ）に示した１チップメモリＬＳＩ又は複数チップのメモリＬＳＩで別システムとして構成し、共有メモリシステムＬＳＩとＤＩ，ＤＯ，ＲＡ，ＷＡ，ＷＥピンを介して接続して使用する。この場合、前記メモリＬＳＩとの接続信号ＤＩ，ＤＯ，ＲＡ，ＷＡ，ＷＥを共有メモリシステムＬＳＩ入出力ピンとして設けておく必要がある。
【０２４８】
さらに、共有バスシステムへのアクセススイッチを行なう入出力バッファシステム２０１５〜２０１７等を別の１チップＬＳＩ又は複数チップＬＳＩとして構成しても良い。
【０２４９】
iii）共有メモリコントロ−ルユニット２０１０を１チップＬＳＩとして構成し、共有メモリシステム１０１０〜１０１ｎ中の共有メモリコントロ−ルユニット２０１０を除いた部分を、２ポ−ト共有メモリ２００６や共有バスシステムへの入出力バッファシステム２０１５〜２０１７等も含めて、さらに別の１チップＬＳＩとして構成する。そして共有メモリや共有バスシステムへのアクセス制御信号のレベルで前記２つのＬＳＩを接続して使用する。
【０２５０】
以上に述べてきた実施例によれば、以下の効果が得られる。
【０２５１】
（１）共有メモリシステム内の共有メモリに独立並行に操作可能な２ポ−ト（読み出しポ−トと書き込みポ−トから成る）のメモリユニットを用いている。これにより、共有メモリへのリ−ドサイクルとライトサイクルを並行に実行でき、共有メモリ間のデ−タ一致処理やプロセッサ間のデ−タ転送処理にかかるレイテンシを短縮できると共に、プロセッサ間のアクセス競合によるロスを大幅に減らすことが出来るため共有メモリシステムに対するト−タルのスル−プットも向上させる効果がある。
【０２５２】
（２）共有システム全体を１つのクロックに同期させることによって、非同期回路を同期化させるためのオ−バ−ヘッドを除去でき、通信レイテンシを改善できる効果がある。
【０２５３】
（３）プロセッサ間の同期処理回路と、共有メモリシステムとを連動して動作させる場合、同期処理によって管理されるタスク間で目的とするタスクによって生成された情報を共有メモリを介して確実にやりとりできることを保証するために、同期処理回路から同期の完了が通知されてから実際に共有メモリ上の情報が目的に対して有効な状態に書き替わるまでの期間、プロセッサのリ−ドサイクルを待たせる局所同期用インタ−ロック回路を具備している。これにより、プロセッサ間の同期処理をタスク間のデ−タの受け渡しの妥当性も保証した形で確実に矛盾なく行うことができ、プロセッサが古い情報を得て誤処理を行わないように自動的に管理できる効果がある。
【０２５４】
【発明の効果】
本発明によれば、メモリユニット又はメモリＬＳＩのメモリセルに対するデータの書き込み処理と読み出し処理とを並行して行う手段を備えたことにより、メモリユニット又はメモリＬＳＩ上でのデータの読み出しサイクルと書き込みサイクルとのアクセス競合を低減することができる。
【０２５５】
これによって、アクセス競合を低減した並列型処理装置を提供することができる。またはこのような装置で使用され得るメモリＬＳＩを提供することができる。  また、協調して処理を行う各処理装置を監視し、これらの処理装置での処理が全て終了したことを受けて前記処理装置によるメモリユニットからデータの読み出しを行う手段を備えたことにより、各処理装置が誤ったデータを得て誤った処理結果を生成することを防ぐことができる。
【図面の簡単な説明】
【図１】本発明の共有システムア−キテクチャを示す図である。
【図２】各プロセッサに対応する共有メモリシステム内ア−キテクチャを示す図である。
【図３】本発明のメモリユニットとコントロ−ルユニットを示す図である。
【図４】本発明のメモリユニット内のメモリセルとデコ−ダの詳細を示す図である。
【図５】本発明のＰＣＬＫとＢＣＬＫを同期化し、２ポ−ト共有メモリを用いた場合の共有メモリアクセス制御を示す図である。
【図６】本発明のＰＣＬＫとＢＣＬＫを同期化した場合の共有メモリアクセス制御を示す図である。
【図７】従来の方式による共有メモリアクセス制御を示す図である。
【図８】本発明の同期信号と連動したレディ信号生成回路を示す図である。
【図９】本発明の共有メモリシステムのアクセスタイミングを示す図である。
【図１０】本発明の共有メモリシステムをプロセッサ間同期機構と連動させた時のアクセスタイミングを示す図である。
【符号の説明】
１１１０〜１１１ｎ…プロセッサ、１０１０〜１０１ｎ…各プロセッサに対応する各共有メモリ、１０２０…ア−ビタ回路、１０００…同期処理回路、２００６…２ポ−ト共有メモリ、２０１０…共有メモリコントロ−ルユニット、３００６…メモリユニット、３１０１…メモリセル、３０１０…コントロ−ルユニット。
【図１】
0003661235.tif 000002
【図２】
0003661235.tif 000003
【図３】
0003661235.tif 000004
【図４】
0003661235.tif 000005
【図５】
0003661235.tif 000006
【図６】
0003661235.tif 000007
【図７】
0003661235.tif 000008
【図８】
0003661235.tif 000009
【図９】
0003661235.tif 000010
【図１０】
0003661235.tif 000011