JP3661235B2 - 共有メモリシステム、並列型処理装置並びにメモリlsi - Google Patents
共有メモリシステム、並列型処理装置並びにメモリlsi Download PDFInfo
- Publication number
- JP3661235B2 JP3661235B2 JP21844695A JP21844695A JP3661235B2 JP 3661235 B2 JP3661235 B2 JP 3661235B2 JP 21844695 A JP21844695 A JP 21844695A JP 21844695 A JP21844695 A JP 21844695A JP 3661235 B2 JP3661235 B2 JP 3661235B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- shared memory
- processor
- shared
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 230000015654 memory Effects 0.000 title claims description 549
- 238000012545 processing Methods 0.000 claims description 222
- 230000004044 response Effects 0.000 claims description 23
- 239000000872 buffer Substances 0.000 description 52
- 238000000034 method Methods 0.000 description 51
- 230000006870 function Effects 0.000 description 47
- 230000008569 process Effects 0.000 description 37
- 230000001360 synchronised effect Effects 0.000 description 25
- 230000008859 change Effects 0.000 description 12
- 230000000694 effects Effects 0.000 description 12
- 102100027313 Calsenilin Human genes 0.000 description 11
- 101000726098 Homo sapiens Calsenilin Proteins 0.000 description 11
- 238000012546 transfer Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000001934 delay Effects 0.000 description 3
- 230000003111 delayed effect Effects 0.000 description 3
- 238000003672 processing method Methods 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
- Memory System (AREA)
Description
【産業上の利用分野】
本発明は複数の処理装置間で情報をやりとりするための並列型処理装置と、このような装置で使用され得るメモリLSIに関する。
【0002】
【従来の技術】
従来の並列型処理装置の共有メモリシステムとしては、共有バスシステムの上に一つの共有メモリを有し、それを複数のプロセッサで共通に利用する方式を採っているものがある。前記共有バスシステムは共有バスやこの共有バスに接続された機器から出される共有バスへのアクセス要求を調停してアクセスする許可を与えるアービタ回路や前記共有メモリへのデータの入出力を行う機器等を適宜含んで構成されている。
【0003】
さらに高度な共有メモリシステムとしては、特開平5−290000号公報に示されるシステムのように、共有バスシステムでのアクセスの競合を減らすため、各プロセッサに分散して共有メモリ(メモリユニット)を設けたものがある。このような共有メモリはローカル共有メモリ又は分散共有メモリ等の名称で呼ばれることがある。
【0004】
このローカル共有メモリを備えた並列型処理装置の共有メモリシステムとしては、一つのプロセッサのローカル共有メモリの内容が変更された場合、その内容をブロ−ドキャストすることにより他のプロセッサのローカル共有メモリの内容も変更する方式のブロ−ドキャスト型並列型処理装置が知られている。上記特開平5−290000号公報に示されたシステムもこのブロ−ドキャスト型に属するものである。
【0005】
【発明が解決しようとする課題】
共有バスシステムに一つの共有メモリを有するタイプの並列型処理装置では、複数のプロセッサからの大量の読み出しサイクルや書き込みサイクルが共有バスシステム上で複雑に競合する可能性がある。このアクセス競合を調停するために共有バスシステム側では無駄時間が発生し、それに伴ってスル−プットが低下する。また、これに連動してプロセッサ側の待機時間が長くなり、処理系全体のオ−バ−ヘッドが増加する等の問題も生じる。
【0006】
特開平5−290000号公報に示されたシステムのようにブロ−ドキャスト型の共有メモリシステムを用いれば、共有バスシステム上にはロ−カル共有メモリに対するデータの書き込みサイクルのみが生成されることになる。そして、共有メモリからのデータの読み出しサイクルは各プロセッサに分散して配置されたロ−カル共有メモリに対して、各プロセッサ単位に独立かつ並行して行われる。従って、各プロセッサの共有メモリに対する読み出しサイクル同志の間ではアクセス競合が発生せず、スル−プットは向上する。
【0007】
しかし、ブロ−ドキャスト型の共有メモリシステムを用いても、ロ−カル共有メモリに対するプロセッサ側からの読み出しサイクルと共有バスシステム側からの書き込みサイクルとは、このロ−カル共有メモリ上で競合(リ−ドサイクルとライトサイクルとのアクセス競合)することになる。このため、ブロ−ドキャスト型の共有メモリシステムを有する並列型処理装置においても、オ−バ−ヘッドや無駄時間等の除去効果は十分には得られていない。尚、この競合はブロ−ドキャスト型以外の共有メモリシステムにおいても生じるものである。
【0008】
尚、共有メモリシステムを有する並列型処理装置においては、協調して処理を進める複数のプロセッサが互いのタスク処理において、タスク処理結果を確実に後続のタスク処理に受け渡す必要が生じる場合がある。このとき、プロセッサ等の処理装置間のデ−タ転送時間の遅れ(通信遅れ)を考慮する必要がある。ブロ−ドキャスト方式を用いた共有メモリシステムの場合においても、ロ−カル共有メモリ上での上記のアクセス競合を低減した並列型処理装置に適した同期化手段を設けることが望ましい。
【0009】
そこで、本発明の目的は、ロ−カル共有メモリに対するプロセッサ等の処理装置側からの読み出しサイクルと共有バスシステム側からの書き込みサイクルとのロ−カル共有メモリ上でのアクセス競合を低減した共有メモリシステム、並列型処理装置、またはこのような装置で使用され得るメモリLSIを提供することにある。
【0010】
また、本発明のもう一つの目的は、ロ−カル共有メモリ上でのアクセス競合を低減した上で、タスク間で確実にデータを受け渡すことを保障する同期化手段を提供することにある。
【0011】
【課題を解決するための手段】
上記の目的は、複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、対応する処理装置と共有バスシステムとから送られてくるデータのいずれかを選択し、アドレスを指定して、メモリユニット内のメモリセルに書き込むデータ入力手段と、前記手段によるデータの書き込み動作中に、メモリセルをアドレスで指定して、データを読み出すデータ出力手段と、処理装置が対応するメモリユニット内のメモリセルに書き込むデータを前記共有バスシステムに出力するライト情報出力手段と、を備えることにより達成される。
【0012】
上記の目的は、複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、対応する処理装置と共有バスシステムとから送られてくるデータ及びアドレスのうちいずれか一方のデータ及びアドレスを選択する選択手段と、処理装置から対応するメモリユニットに送られてその中のメモリセルに書き込まれるデータを、前記共有バスシステムに出力するライト情報出力手段と、メモリユニットに、アドレスによって指定できる複数のメモリセルと、データを書き込むアドレスを指定するライトアドレス指定手段及び指定されたアドレスのメモリセルにデータを書き込む書き込み手段と、前記各手段によるデータの書き込み動作中に、アドレスでメモリセルを指定してデータを読み出すことができるリードアドレス指定手段及びデータの読み出し手段とを備えることによっても達成できる。
【0021】
【作用】
データ入力手段は、処理装置又は共有バスシステムから送られてくるデータ及びアドレスのうちのいずれか一方のデータ及びアドレスを選択して、対応するメモリユニット内のメモリセルに書き込む。また、ライト情報出力手段は、処理装置からメモリユニットに送られるデータを共有バスシステムに出力する。このデータは他の処理装置のメモリユニットへの書き込みを行うようにする。一方、データ出力手段は、データ入力手段の書き込み動作中に、メモリセルをアドレスで指定してデータを読み出す。
【0022】
このように構成したことにより、メモリユニット内のメモリセルへのデータの書き込み処理と読み出し処理とを並行して行うことができる。従って、メモリユニット(ロ−カル共有メモリ)に対する処理装置側からの読み出しサイクルと共有バスシステム側からの書き込みサイクルとが、このメモリユニット(ロ−カル共有メモリ)上で起こすアクセス競合を低減することができる。
【0023】
このとき、データを書き込むために指定するメモリセルと、データを読み出すために指定するメモリセルとは、同じであっても構わない。つまり、書き込み処理中のメモリセルからデータを読み出すことができる。
【0024】
また、上述のメモリLSIにおいては、データを読み出すメモリセルを指定するリードアドレス指定手段及び指定したメモリセルからデータを読み出す読み出し手段と、データを書き込むメモリセルを指定するライトアドレス及び指定したメモリセルにデータを書き込む書き込み手段とが独立して設けられたことにより、データの読み出し処理とデータの書き込み処理とを並行して行うことができる。これによって、メモリLSI上における読み出しサイクルと書き込みサイクルとのアクセス競合を低減させることができる。
【0025】
また、同期化手段は協調して処理を行う各処理装置からの同期要求信号を監視する。この同期要求信号は前記処理装置が処理を終了したときに同期化手段に対して出力し、同期化手段は全ての同期要求信号が揃った後(アクティブに転じた後)、この同期要求信号を出力した処理装置が対応するメモリユニットからデータの読み出しを行うことを可能にする。これによって、協同して処理を進めている他の処理装置からの必要な情報が各処理装置に対応するメモリユニット(ローカル共有メモリ)に書き込まれていない状態で、各処理装置がローカル共有メモリにアクセスしてしまい、誤ったデータを得て誤った処理結果を生成することを防ぐことができる。
【0026】
このとき、上記局所同期用インターロック回路を備えることにより、同期処理完了信号が発生されてローカル共有メモリのデータが実際に書き替わるまでの期間、処理装置によるデータの読み出し処理を待たせることにより、処理装置が古いデータを得て誤処理を行わないようにすることができる。
【0027】
上記同期制御手段は、共有メモリシステム全体を一つのクロックに同期させるので、非同期で動作する各手段または処理を同期させるためのオーバーヘッドを除去することができ、通信レイテンシ(遅れ)を改善することができる。
【0028】
処理装置がメモリユニット又はメモリセルから読み出すデータをリードデ−タラッチによってラッチすることにより、読み出し処理に関係なく書き込み処理を実行することができる。
【0029】
また、本発明のメモリLSIは、データの書き込みのみに使用されるポートと、データの読み出しのみに使用されるポートと、データを書き込むアドレスを指定するライトアドレス指定ポートと、データを読み出すアドレスを指定するリードアドレス指定ポートとを備えることにより、データの読み出し処理とデータの書き込み処理とを並行して行うことを可能にする。
【0030】
また、上述したメモリLSIは、従来、最低でも二つの処理サイクルを要して実行していた書き込み処理と読み出し処理とを一つの処理サイクルで実行することを可能にする。この処理サイクルは最も短いものでもCMOSプロセスを用いたICまたはLSIでは10ns程度であり、バイポーラCMOSプロセスを用いたICまたはLSIでは5ns程度である。従って、書き込み処理と読み出し処理とを実行するために、従来はCMOSプロセスを用いたICまたはLSIでは20ns程度、バイポーラCMOSプロセスを用いたものでも10ns程度を要していた。これに対し、本発明のメモリLSIは、書き込み処理と読み出し処理とを並列に実行可能にすることにより、これらの処理を一つの処理サイクルで実行し、書き込み処理と読み出し処理とを5ns以下の時間で実行することを可能にした。
【0031】
上述した本発明のメモリLSIを共有メモリシステムのメモリユニット(ローカル共有メモリ)として用いることにより、このメモリユニット(ローカル共有メモリ)からのデータの読み出し処理とローカル共有メモリへのデータの書き込み処理とを並行して行うことが可能な並列型処理装置を構成することができる。
【0032】
さらに、上述のような共有メモリシステム又はメモリLSIを用いた共有メモリシステムを各処理装置に分散せず、複数の処理装置に対して設けても、上記の書き込みサイクルと読み出しサイクルとのアクセス競合を低減することが可能であろう。
【0033】
尚、以下の説明においては、共有メモリシステムを単に共有メモリと呼ぶ場合もある。
【0034】
【実施例】
複数のプロセッサからなるマルチプロセッサシステムにおいて、プロセッサ間の共有システム(共有メモリ、共有I/Oなどプロセッサ間から自由にアクセス可能な共有リソ−ス)とプロセッサ間の待ち合わせ処理すなわち、プロセッサ間同期処理を実行する同期処理回路とを組み合わせて、コントロ−ルフロ−的な並列処理制御とデ−タフロ−的な並列処理制御とのコンビネ−ションで並列処理効率を向上させる手法は、特開平5−2568号公報に示されるように従来システムですでに用いられている例がある。
【0035】
この特開平5−2568号公報は、全体のア−キテクチャと手法について述べている。本発明においては、本明細書で開示した共有メモリへの高効率なアクセス手法及び構成において最適な同期処理方法を開示している。
【0036】
まず、図1の構成と並列処理時のプロセッサ間同期処理手法について簡単に述べる。
【0037】
図1に示したシステムは、複数のプロセッサ0〜nとそれらのいずれからも自由にアクセス可能なリソ−スである共有システムとから構成されるマルチプロセッサシステムにおいて、共有システムの1つである共有メモリシステム1010、1011〜101nを各プロセッサからみたときそれぞれのプロセッサのロ−カルメモリと同等とみなせるよう、共有システムコントロ−ラと共有メモリとを一体化した形で各プロセッサに対応してそれぞれ配置して、あるプロセッサが自身の共有メモリシステム内の共有メモリの内容を変更すると他のプロセッサの共有システム内の共有メモリもそれに対応して変更されるブロ−ドキャスト方式の制御を行うものとしている。
【0038】
さらに、各プロセッサ間の同期処理を行い、各プロセッサ間で実行される各タスクの並列処理を制御するため同期処理回路1000を設けて、特開平3−234535号公報に示されたような、コントロ−ルフロ−とデ−タフロ−とを組み合わせた並列処理制御を行う。
【0039】
すなわち、あるプロセッサがあるタスクを終了した時点で、タスクの終了を知らせる同期リクエスト(SREQ)を同期処理回路1000に対し発行し、待ち合わせ処理(同期処理)を行わないといけないタスクを実行している他のプロセッサのタスク処理が終了してそのプロセッサが同期リクエスト(SREQ)を同期処理回路1000に対し発行するまで同期完了情報(SYNCOK)を非アクティブに保つように同期処理回路1000は動作する。そして実際に、プロセッサを待ち合わせさせる処理は、そのプロセッサが共有メモリにアクセスしたとき実行され、その時、SYNCOKがアクティブでなければアクティブになるまでプロセッサの共有メモリへのアクセスをペンディングし、SYNCOKがアクティブであれば無条件で共有メモリへのアクセスを許可するように動作する。
【0040】
なお、本例のSYNCOK信号は、特開平5−2568号公報におけるTEST信号とほぼ等価の機能を有すると考えて良い。
【0041】
図1において、プロセッサ0〜nはそれぞれ対応する共有メモリシステム
1010〜101nにデ−タバス(D)、アドレスバス(A)、コントロ−ルバス(C)によって接続されている。本例では、プロセッサによる対応する共有メモリシステムへのアクセスが発生するとそれを示す共有システムイネ−ブル(CSEN)がアクティブになり、共有メモリシステムへのアクセスサイクルの開始を伝える。
【0042】
CSENに相当する信号は、各共有メモリシステム1010〜101nの中でアドレス信号A等をデコ−ドすることによって内部的に生成することも可能であるが、プロセッサ0〜n側で先行してデコ−ドして生成した方が遅れ時間をより少なくできる可能性が高いため、本例ではD,A,C,の各信号群とは独立した信号として直接プロセッサ側からCSENを与えるようにしている。
【0043】
さらに図1において、各共有メモリシステム1010〜101nは共有バスシステム(信号線REQ,Data,Address,Control,ACKsignalから成る)1900に接続される。
【0044】
前述したように、この共有バスシステム1900は、共有メモリに対してあるプロセッサがデ−タの変更を行う(書き込みアクセスを行う)際に、他のプロセッサの共有メモリ上の対応するアドレスに存在するデ−タも一緒に変更するための情報を共有メモリにライトアクセスしたプロセッサの共有メモリシステムが他のすべての共有メモリシステムに対してブロ−ドキャストするために設けられている。
【0045】
すなわち、共有メモリシステムに対するライトサイクルがどこかのプロセッサで発生すれば、その情報が共有バスシステム1900を介して他のプロセッサの共有メモリシステムに伝送され、各プロセッサに付随する各共有メモリ上の対応するアドレス上の必要なデ−タ内容の変更が行われる。
【0046】
共有バスシステム1900において、REQ信号群は共有メモリへのライトアクセス時に各共有メモリシステム1010〜101n内の共有メモリコントロ−ラからそれぞれ生成されるバスリクエスト信号(REQ)の集合であり、これらはバスア−ビタ回路1020に入力される。ア−ビタ回路1020は、その中から1つを選択してREQm(mはプロセッサmに対応するリクエスト信号)に対応する許可信号ACKmをアクティブにしてACK信号群を介し対応する共有メモリシステムのACK入力に伝える。
【0047】
ACK入力がアクティブに転じた時、共有メモリコントロ−ラはライトサイクルの対象となったデ−タ(Data)とアドレス(Address)を共有バスシステム1900上に生成すると共に、ア−ビタ回路1020からは、それら共有バス上の情報がアクティブであることまたはバスが使用されていることを示す制御信号(BUSY)をアクティブにする。
【0048】
BUSY信号の情報は共有バスシステム1900内の制御信号(Control)を介して、各共有メモリシステム1010〜101nのビジ−信号(BUSY)入力に伝えられ、各共有メモリコントロ−ラはその情報を調べることで共有バス上に共有メモリへ書き込むべきデ−タが存在するか否かを判断する。もし、共有メモリへ書き込むべきデ−タが存在すれば(ビジ−信号がアクティブであれば)各自の共有メモリの指定された番地にその有効なデ−タを一斉に書き込んで変更し、各プロセッサに対応する共有メモリの内容を常に同一に保つ様に動作する。
【0049】
なお、システムによっては、ア−ビタ回路からの許可信号(ACK)を受け取った共有メモリコントロ−ラがそれぞれビジ−信号を出力して、他の共有メモリコントロ−ラに伝える方式も考えられるが、本例と比べるとビジ−信号の出力により長い時間を必要とする(信号の遅延が大きい)ため、高速動作を必要とするシステムでは本例の方式の方が有効であろう。
【0050】
その他、システムによっては制御信号(Control)として、バスコマンド、ステ−タス情報、バスクロック、デ−タ転送プロトコル制御信号、バスステ−トやバスサイクル制御信号、リソ−スからの種々の応答信号、割込みベクタやメッセ−ジ情報信号等が割り付けられる場合もある。
【0051】
図2は、本発明における各共有メモリシステム1010〜101n内の構造を示している。最大の特徴は、共有メモリ2006が、読み出し時のアドレス(RA)及びそれに対応する出力デ−タ(DO)と、書き込み時のアドレス(WA)及びそれに対応する入力デ−タ(DI)とを別々のポ−トとして具備した2ポ−トメモリの構造を採っていることである。
【0052】
共有メモリシステム内は、前記2ポ−ト共有メモリ2006、共有メモリコントロ−ルユニット2010、プロセッサインタ−フェ−ス2003及びマシンステ−トコントロ−ラMSC2002、各種入出力バッファユニット(2001、2012〜2018)、ラッチユニット及びバッファメモリユニット(2004、2008、2009、2011)、マルチプレクサユニット(2005、2007)、クロック生成回路2013等から構成されている。
【0053】
各共有メモリシステムはプロセッサクロック(PCLK)、システムクロック(SCLK)等の基本クロックに同期して動作する。PCLKは、プロセッサのバスサイクルに同期したクロックであり、プロセッサ側のバスサイクルはこのクロックを基準に動作していると考えて良い。SCLKはシステム全体の基本となるクロックであり、システムはこのクロックに同期していると考えて良い。最も理想的な条件として、SCLKを基準としてPCLKが生成されていれば、プロセッサを含めたシステム全体を結果的に1つの基本クロック(この場合SCLK)に同期させて動作させることになるため、最も効率の良いタイミング制御が可能となると考えられる。
【0054】
本発明の共有メモリシステムにおける特徴と基本的な動作は以下のa)〜f)に示したとおりである。
【0055】
a)共有メモリシステムアクセスイネ−ブル信号(CSEN)がアクティブになると、共有メモリシステムコントロ−ラ2010及びPIF2003,MSC2002は信号入力回路2001を介してその情報を得て共有メモリシステムへのプロセッサからのアクセスが発生したことを知る。
【0056】
そして、プロセッサインタ−フェ−スPIF2003及びマシンシテ−トコントロ−ラ(MSC)2002は、プロセッサのバスサイクル及びバスプロトコルに合致した適切なタイミングでプロセッサによるアクセスの対象となるアドレス情報及びデ−タ情報をプロセッサとやりとりする。
【0057】
本例では、プロセッサ側で共有メモリの物理アドレスエリアをデコ−ドしておき、プロセッサがそのエリアをアクセスしたときCSEN信号がアクティブになる様にしている。
【0058】
また、MSC2002は、特開平2−168340号公報に基づいた使用方法を採用することによって、共有メモリシステムを含む各プロセッサシステムを単一の基準クロックで動作させシステム全体を同期型の大規模デジタル回路システムとして構築できる効果や、共有メモリシステムへプロセッサがアクセスする際のアクセスタイム(特に読み出しサイクル時)をより長く確保できる効果等が得られる。
【0059】
b)プロセッサの共有メモリに対するアクセスバスサイクルがリ−ドサイクルの場合、特別な場合を除き、共有メモリ2006の読み出しポ−ト(DON及びRA)を利用して直接デ−タを共有メモリ2006から読み出す。この場合、各種アドレス情報をマルチプレクスして共有メモリ2006に与えるアドレスマルチプレクサMX2007は、プロセッサからのアドレス情報をPIF2003を介して入力Cに得て出力O1から共有メモリ2006のリ−ドアドレスRAに与え、そのRAの値に対応したデ−タを共有メモリのDOから読み出す。
【0060】
読み出されたデ−タ値は、PIF2003を介してプロセッサへ送られる。
【0061】
なお、AMX2007において、入力側のA,B,Cのうちいずれを選択してO1に出力するかを決める選択入力信号S1を制御する操作は、共有メモリコントロ−ルユニット2010からのRDSEL信号によって行う。その際、プロセッサインタ−フェ−ス2003内に読み出し用ラッチ回路を設けて、一度共有メモリ2006からのデ−タをそこにラッチし、少なくともプロセッサがそのデ−タを読み出すタイミングの前後の期間、十分なセットアップタイムとホ−ルドタイムを確保した形でプロセッサに対して有効なデ−タを保持しておく様にしても良い。
【0062】
又、後述するように、プロセッサ側のバスサイクルを規定するクロック(バスクロック等)と共有メモリ側へデ−タを書き込むタイミングを規定するクロックとが同期している場合等、共有メモリ2006から読み出されるデ−タが有効な期間がもともと前記セットアップタイム及びホ−ルドタイムを満足しているならば、直接そのデ−タをプロセッサに与えても良い。
【0063】
c)プロセッサの共有メモリに対するアクセスバスサイクルがライトサイクルの場合、本例では、プロセッサからPIF2003を介して送られてきたライトアドレス値はまず一度共有メモリコントロ−ルユニット2010のAWBUFCTL信号に応答して適切なタイミングでアドレスライトバッファAWBUF2008に書き込まれる。
【0064】
AWBUF2008は、複数のライトアドレス情報を時系列的に蓄えておき、最も過去に得たライトアドレス情報をOに出力してAMX2007のA入力に与えるように構成しても良い。AMX2007は、アドレス入力A,B,CからO2に、選択されたライトアドレス値を出力し、共有メモリ2006のライトアドレスWA入力に与える。その選択操作を行うための選択信号入力S2は、共有メモリコントロ−ルユニット2010のライトデ−タ信号WDSELによって行う。
【0065】
また、対象とするライトアドレスWAに書き込むべきデ−タもプロセッサからPIF2003を介して一度デ−タライトバッファDWBUF2004を介した後デ−タマルチプレクサDMX2005により選択操作(Aに入力されOに出力される)されて共有メモリ2006のデ−タ入力DIに与えられる。
【0066】
DMX2005の機能は、AMXのO2出力側の機能とほぼ同様である。但し、入力A,B,Cに入力されているそれぞれのライトアドレス情報から1つを選択しOに出力するための選択信号入力Sは、共有メモリコントロ−ルユニット2010のWDSEL信号によって制御される。
【0067】
また、DWBUF2004の機能も、AWBUF2008とほぼ同様であるが、DWBUF2004にプロセッサからのデ−タをラッチし蓄えていくための制御信号としては共有メモリコントロ−ルユニット2010のDWTBUFCTL信号が使用される。DWBUF2004及びDMX2005の制御タイミングがAWBUF2008及びAMX2007と同一であれば(例えばプロセッサからのアドレス値とデ−タ値との出力タイミングがほぼ同一であれば)、同一の制御信号を用いて選択信号やラッチ信号を制御しても良い。
【0068】
なお、共有メモリ2006にデ−タを書き込む操作を行うのは、共有メモリコントロ−ルユニット2010からのライトイネ−ブルWE信号による。本例ではWE信号をアクティブにすると共有メモリ2006のDIに入力されているデ−タがRAに入力されているアドレス値に対応するメモリセルの内容に反映され、WE信号を非アクティブに戻すタイミングでそのデ−タがメモリセルにラッチされる。もし、共有メモリ2006のRAとWAの内容が同一のアドレス値を示しているとすると、WE信号がアクティブの時DOにはDIに入力されているデ−タの内容と同一のものが出力される。
【0069】
従って、本例の場合共有メモリの情報を変更するタイミングはWE信号をアクティブにするタイミングで決まると言える。
【0070】
ライトサイクル時は、自身の共有メモリだけの内容変更ではなく他のプロセッサに対応する共有メモリ各々にも同等のデ−タとアドレス情報をブロ−ドキャストして共有メモリ上の内容を変更する必要がある。従って、DWBUF2004のOから出力されているライトデ−タとAWBUF2008のOから出力されているライトアドレスとをそれぞれデ−タバッファ2015とアドレスバッファ2016を介して共有バスシステムに出力する機能を有している。
【0071】
デ−タバッファ2015とアドレスバッファ2016との共有バスシステムに対するON−OFF操作はそれぞれDEN信号とAEN信号とで行っている。
【0072】
d)他のプロセッサが共有メモリの内容を変更した場合、共有バスシステムを介して送られて来るアドレス情報をアドレスバッファ2016よりデ−タ情報をデ−タバッファ2015よりそれぞれ得て、そのアドレス情報に対応したデ−タ情報を共有メモリ2006に書き込む。
【0073】
本例では、デ−タバッファ2015を介して得た情報をデ−タラッチ2009、アドレスバッファ2016を介して得た情報をアドレスラッチ2011に一度保持した後、デ−タ情報はDMX2005のB入力に、アドレス情報はAMX2007のB入力にそれぞれ入力され、さらにDMX2005のO出力から共有メモリ2006のDI入力に書き込むべきデ−タが、DMX2007のO2出力から共有メモリ2006のWA入力にその対象となるアドレスが入力される。
【0074】
デ−タラッチDL2009、アドレスラッチAL2011へのラッチタイミングは、共有メモリコントロ−ルユニット2010のCSADL信号によって行う。CSADL信号は、共有バスシステム上にデ−タ及びアドレス情報が確定し、それらがDL2009及びAL2011に対して十分なセットアップタイム及びホ−ルドタイムを確保したタイミングでラッチ処理が行われるように操作されている。
【0075】
本例では、CSADL信号がアクティブになるとDL2009及びAL2011のD側の情報がO側に出力されてラッチ回路がセットアップされ、CSADLが非アクティブに転じたタイミングDL,ALにそれらの情報がラッチされる。本例では、各プロセッサの各共有メモリシステムが同じ位相を有する基本クロック(PCLK及びSCLK)に応答して完全に同期して動作するため、ライト動作時にデ−タバッファ2015やアドレスバッファ2016を操作して共有バスシステムに必要な情報を入出力するタイミングと、そのタイミングに同期して生成されるDL2009,AL2011に必要な情報をラッチすべきタイミングとは各共有メモリシステム内の共有メモリコントロ−ルユニット2010の内部で明確化されていると考えて良い。
【0076】
この同期化によって、共有メモリコントロ−ルユニット2010はこれらのタイミングを規定するCSADL,DEN,AEN,AWTBUFCTL,DWTBUFCTL等の制御信号の生成に関してオ−バ−ヘッドや遅れ時間の少ない効率の良いタイミング制御が可能となっている。また、DMX2005やAMX2007を制御するWDSELや共有メモリ2006にデ−タを書き込むWE信号の生成も、DL2009やAL2011にデ−タを確定するCSADL信号の制御タイミングに応答して共有メモリコントロ−ルユニット2010内で行えば良い。
【0077】
e)共有メモリへのライト動作時において、各プロセッサの共有メモリシステム間で、共有バスシステムの使用権を確実に1つのプロセッサに割り付ける競合制御(ア−ビトレ−ションコントロ−ル)が必要となる。
【0078】
共有メモリコントロ−ルユニット2010は、プロセッサからのコントロ−ル信号Cと共有メモリシステムアクセスイネ−ブルCSENとから、プロセッサによる共有メモリシステムへの書き込みサイクル(ライトサイクル)が発生したとみなすとCSREQ信号をアクティブにしてア−ビタ回路1020への要求信号REQを出力バッファ2012を介して生成する。
【0079】
そして対応するア−ビタ回路1020からの許可信号ACKがアクティブになり入力バッファ2014を介して共有メモリコントロ−ルユニット2010のCSACK入力に得られた場合、自身のプロセッサが共有バスシステムの使用権を得たとして、共有メモリコントロ−ルユニット2010はc)に示した手順で共有メモリ及び共有バスシステムへのライトサイクルを生成する。
【0080】
この時、デ−タバッファDWBUF2004及びアドレスバッファAWBUF2008が一杯になっている場合はプロセッサのバスサイクルの終了をペンディングして待たせることになる。プロセッサ側のバスサイクルの終了をペンディングして待たせるかバスサイクルを予定通り終了してプロセッサを次の処理に進めるかを決める信号として、共有メモリコントロ−ラ2010はRDY信号を生成する。
【0081】
プロセッサが、共有メモリシステムへのアクセスのためのバスサイクルを生成している時、共有メモリコントロ−ルユニット2010からのRDY信号がアクティブになればそのバスサイクルを待ち状態にせずに予定通りバスサイクルを終了してプロセッサを次の処理に進め、非アクティブに保てばそのバスサイクルを終了せずにバスサイクルを引き延ばして結果的にプロセッサを待たせる操作を実行したことになる。
【0082】
基本的にバッファ2004,2008が一杯になっておらず空きがあれば、プロセッサはDWBUF2004,AWBUF2008に必要なデ−タ及びアドレス情報をラッチしておいて待されずに次の処理に進む。すなわち、プロセッサが共有メモリへのライト動作を実行していった時、前述したア−ビタ回路1020からの共有バスシステム使用権の許可が得られない状態が続けば、バッファ2004,2008内にペンディングされたライトサイクル分のデ−タ及びアドレス情報が時系列的に蓄えられていき、バッファが一杯になった状態で発行されたライトサイクルはバッファに空きが生ずるまで引き延ばされ、結果的にプロセッサ側を待たすことになる。
【0083】
自身の共有メモリへの書き込み処理のレイテンシを短縮するために、共有メモリへのライト動作時にバッファ2004,2008が完全に空きの状態でかつそのライト動作に応答してア−ビタ回路1020からの許可信号(CSACK)が直ちにアクティブになり共有バスシステムの使用が許可された場合、マルチプレクサ2005,2007のC入力を介して直接PIF2003からのライトアドレス(WA)及びライトデ−タ(DI)を共有メモリ2006に与え、書き込み処理を実行しても良い。
【0084】
その制御は共有メモリコントロ−ル2010がWDSELとWE信号を用いて行なう。なお、これらのバッファ2004,2008に有効な情報が存在する間は、共有メモリコントロ−ルユニット2010内でCSENをアクティブに保ち続けるようになっている。
【0085】
一方、REQ信号をアクティブにしているにもかかわらず対応するACK信号が非アクティブの状態であり、ア−ビタ回路1020から入力バッファ2017を介して得たBUSY信号が(共有メモリコントロ−ルユニット2010のCSBUSY入力に接続されている)アクティブとなっている場合は、他のプロセッサによる共有メモリ及び共有バスシステムへのライトサイクルが許可され実行されているとみなし、共有メモリコントロ−ルユニット2010は、d)に示した方法により他のプロセッサから共有バスシステムを介してブロ−ドキャストされて来る情報に基づいた共有メモリ2006へのライトサイクルを生成する。
【0086】
f)同期処理回路1000と共有メモリシステム1010〜101nとが連動して動作する場合、プロセッサは、必要なタスク処理が終了したら同期要求信号SREQをアクティブにして同期処理回路1000に同期処理を要求しておき、それより後のタイミングで共有メモリ上のデ−タ(他のプロセッサからのデ−タ等が存在している)が必要となって共有メモリシステムをアクセスした時(特にリ−ドアクセス時)、共有メモリシステム内でプロセッサとの間の局所同期処理を行って、他のプロセッサとの間のデ−タのやりとりに矛盾が発生しないようにする。
【0087】
同期処理回路1000は、各プロセッサ1110〜111nからの同期要求信号SREQのうち予め定められた同期すべきプロセッサ群、すなわち、協調して処理を進めている群のグル−プに属するプロセッサからのSREQに非アクティブ状態のものが1つでも存在すれば、応答すべきプロセッサに対して前記SREQが全てアクティブに転じるまで同期処理完了信号SYNCOKを非アクティブに保つことによって必要な同期処理が終了していないことを伝える。
【0088】
そのプロセッサに対する共有メモリシステムは、そのSYNCOK信号を信号入力回路2018で受けて同期処理回路1000からの同期情報をモニタしており、少なくともSYNCOKが非アクティブの状態で自身のプロセッサが共有メモリシステムへのアクセスサイクル(特にリ−ドサイクル)を生成したときには、共有メモリコントロ−ルユニット2010がRDY信号を非アクティブに保つことでプロセッサのバスサイクルの終了をペンディングして待たせることにより、プロセッサと共有メモリシステムとの間で局所的な同期処理操作を実行する。
【0089】
これにより、共有メモリ2006上に協同して処理を進めている他のプロセッサからの必要な情報が書き込まれていない状態で共有メモリにアクセスしてしまい、その結果誤った情報を得て誤った処理結果を生成することが無いように管理している。
【0090】
本例において特徴的なのは、バッファシステムDWBUF2004及びAWBUF2008を有しており、プロセッサの動作が共有メモリシステムのアクセスサイクル処理より先行したとしても、これらのバッファシステムにアクセス情報を時系列的にストアしておいて共有メモリシステム内でプロセッサの動作と独立かつ並行して後処理することが出来るようになっている点である。
【0091】
その結果、プロセッサの処理を必要以上に待たせずに先に進めさせることが可能となっている。この際、SYNCOKがアクティブになっていたとしても、各プロセッサの共有メモリシステム内のバッファシステム2004,2008に有効なデ−タが存在している状態、すなわち、本来同期処理が完了していれば共有メモリ上に存在している必要のあるデ−タがまだ共有メモリ上に存在していない状態が発生する可能性がある。
【0092】
この状態で、b)に示したような共有メモリへの書き込みサイクルと並行して実行可能な読み出しポ−ト(共有メモリ2006のRA,DI)からの自由な読み出し動作を実行すると、必要なデ−タが得られず誤処理につながる可能性がある。
【0093】
従って、いずれかのプロセッサに対応する共有メモリシステムのバッファシステム2004,2008内に有効なデ−タが存在する間は、共有バスシステム上でライトサイクルが連続して発生しア−ビタ回路1020からのBUSY信号がアクティブ状態に保たれ続けることを利用して、SYNCOK信号がアクティブに転じてもBUSY信号がアクティブ状態であれば、BUSY信号が非アクティブに転じるまでプロセッサの共有メモリへのリ−ドサイクルを禁止する機能を共有メモリコントロ−ルユニット2010内に具備している。
【0094】
つまり、この状態でプロセッサからのリ−ドサイクルが発生した場合、共有メモリコントロ−ルユニット2010は、BUSY信号が非アクティブになるまでRDY信号を非アクティブに保ってそのバスサイクルの終了を遅らせ、プロセッサ側を待たせる。
【0095】
a)〜f)に示した本発明の共有メモリシステムの基本機能において、従来システムと顕著に異なるのは、以下の2点である。
【0096】
1)共有メモリシステム内の共有メモリ2006に独立並行に操作可能な2ポ−ト(読み出しポ−トと書き込みポ−トから成る)のメモリユニットを用いている。これにより、共有メモリへのリ−ドサイクルとライトサイクルを並行に実行でき、共有メモリ間のデ−タ一致処理やプロセッサ間のデ−タ転送処理にかかるレイテンシを短縮できると共に、プロセッサ間のアクセス競合によるロスを大幅に減らすことが出来るため共有メモリシステムに対するト−タルのスル−プットも向上させることが出来る。
【0097】
2)プロセッサ間の同期処理回路1000と、共有メモリシステムとを連動して動作させる場合、同期処理によって管理されるタスク間で目的とするタスクによって生成された情報を共有メモリを介して確実にやりとりできることを保証するために、同期処理回路から同期の完了が通知されてから実際に共有メモリ上の情報が目的に対して有効な状態に書き替わるまでの期間、プロセッサのリ−ドサイクルを待たせる局所同期用インタ−ロック回路を具備している。これにより、プロセッサ間の同期処理をタスク間のデ−タの受け渡しの妥当性も保証した形で確実に矛盾なく行うことができ、プロセッサが古い情報を得て誤処理を行わないように自動的に管理できるようになっている。
【0098】
次に図3に示したより簡略化した実施例を用いて、各プロセッサの共有メモリシステム1010,1011,...,101nの中の2ポ−ト共有メモリ2006とその制御に関わる周辺回路の機能についてより詳細に説明する。特に、ここでは2ポ−ト化したことによる機能と効果について述べていく。
【0099】
図3に示した3004,3005,3006,3007,3008はそれぞれ、図2における2004,2005,2006,2007,2008の機能に対応する。リ−ドデ−タラッチ3110が存在する場合もあるが、すでに述べたように、図2ではこの機能がPIF2003内に存在するとしている。図3ではメモリユニット3006の内部を詳しく開示しているが、その周辺機能は説明を簡単にするため簡略化して表現している。
【0100】
まずプロセッサからの読み出し処理時には、プロセッサ側からのリ−ドアドレス13001は、直接メモリユニット3006のリ−ドアドレスデコ−ダ3103に入力され、そこからの出力に応答してマルチプレクサ3102の選択入力Sを切り換えることによりメモリセル群3101の中から指定されたアドレスに対応する出力をマルチプレクサ3102で選択し、RDATA13003としてプロセッサ側に出力する。マルチプレクサ3102は、図4にも示したとおりトライステ−トバッファを組み合わせて構成しても良い。
【0101】
プロセッサから共有メモリへの書き込み処理時には、ライトアドレス13002は、共有バスシステムのアドレス情報として生成するためバッファ3008を介して共有バス側へ出力されるとともに、直接マルチプレクサ3007を介してそのプロセッサのメモリユニット3006のWADDRデコ−ダ3104に入力される。バッファ3008は、時系列的にアドレスデ−タを蓄えるキュ−システムとして構成し、図2の2008と同様の機能を待たせても良い。
【0102】
直接メモリユニット3006に入力されたライトアドレスは、WADDRデコ−ダ3104でデコ−ドして、メモリセル群3101の中のどのメモリセルにデ−タを書き込むかを決定し、書き込み信号WEに応答して、選択されたメモリセルに書き込むべきデ−タWDATAの内容をラッチする。WE信号は、コントロ−ルユニット3010で、プロセッサからのリ−ド/ライト制御信号W/R13005,共有システムセレクトCSEN13006等の信号に応答して生成される。プロセッサからのライトデ−タ13004がマルチプレクサ3005を介した後WDATAとしてメモリユニット3006内に入力される。
【0103】
ライトアドレス13002と同様、ライトデ−タ13004もバッファ3008と同等の機能のバッファ3004を介して共有バス側に出力されている。共有バス側に出力されたライトアドレスとライトデ−タは、共有バスを介して他のプロセッサの共有メモリシステムにブロ−ドキャストされて対応するメモリユニットのメモリセルにライトデ−タがラッチされる。
【0104】
本例では、プロセッサが自身のメモリユニット3006へデ−タを書き込む際のデ−タ及びアドレス情報のパスをバッファ3004,3008の手前から直接マルチプレクサ3005,3007へ入力(マルチプレクサのA入力)した後メモリユニット3006へ結線するようにしており、メモリユニット3006への書き込みパスとしてそのパスのみを用いる場合は、図2で説明した様なバッファ3004,3008を介した後の信号を用いたパスとは多少制御方式や条件が異なる。
【0105】
ただし、図2においても、DMX2005,AMX2007のC入力を選択すれば図3と同様のパスとなる様に設計していることはすでに述べた。
【0106】
この直接入力方式の良いところは、プロセッサが共有メモリの内容を書き替える際、自身のメモリユニット(共有メモリ)のデ−タ変更を他のプロセッサのメモリユニットの変更よりも早いタイミングで行なえる可能性があり、自身が変更した共有メモリの内容を変更直後に再度読み出すような場合(フラグ管理やセマフォ管理、自身でも使用する共有デ−タの保持等)、共有メモリの変更に伴うレイテンシ(遅れ時間)が原因で過去のデ−タが読めてしまうのを防ぐことが容易になる点である。
【0107】
ただし、この直接パスのみを用いて書き込み制御し易いのはバッファ3004,3008が一段程度で、他のプロセッサの共有メモリへの書き込み処理に要するオ−バ−ヘッドをリカバリし、先にプロセッサのバスサイクルを進めるための一時記憶に用いている様な場合である。このような機能のバッファを設けた場合は、コントロ−ルユニット3010がア−ビタ回路からの許可信号を確認してから直ちにメモリユニット3006にデ−タを書き込むように制御する必要がある。
【0108】
また、図2のPIF2003の中に、自身のメモリユニット3006へデ−タを書き込むまでライトアドレス13002とライトデ−タ13004を保持しておくラッチ機能を設けておくと良い。そのようなバッファ機能は、図2のPIF2003の機能の一部と考えてPIFの中に設けておいた方が機能分担が明確になるかも知れない。なぜなら、共有バスシステムのアクノリッヂCSACKのみでバッファのラッチ機能のオン−オフを制御可能であり、わざわざコントロ−ルユニット3010で制御しなくても、CSACK信号をPIF2003に入力しておけば済むからである。
【0109】
本格的なバッファを設ける場合は、マルチプレクサ3005,3007に、図2と同様バッファを介したパス(C入力)を設け切り換えて制御する方が合理的であろう。
【0110】
各プロセッサが、自身が変更したデ−タの内容を自身の処理プログラム上で再度読み出して使用する場合に、一貫性を保って矛盾なく処理できるようにハ−ドウェアで自動的にその一貫性を保証することは大切なことである。なぜなら、大半のプロセッサは単体ではシ−ケンシャルに記述され実行されることを前提としたプログラムを処理しており、リソ−スに対するデ−タ書き替え及びデ−タ読み出し動作の前後関係に意味を持っている場合が多いからである。
【0111】
一方、あるプロセッサが他のプロセッサが変更したデ−タを読み出す際、他のプロセッサがデ−タを変更した時刻とプロセッサがそのデ−タを実際に読み出す時刻との差(情報の遅れ時間)が問題とならない情報又はその扱い方、例えば連続性を持った時刻tに依存した状態量(位置、速度、加速度等)をサンプリングタイムを最小時間単位として管理するとして、前記の情報遅れ時間がサンプリングタイムに対して相対的に十分小さいとみなして前記状態量を扱うことができれば、或いは、サンプリングタイム側を前記の情報遅れ時間に対して十分大きく設定できれば、各プロセッサから見た共有メモリ上の情報の変更時刻が多少ばらついたり、遅れたりしても問題になることはないと考えて良い。
【0112】
ただし、情報の遅れ時間(レイテンシ)が無視できないほどサンプリングタイムを小さく設定したりすれば処理パラメ−タの誤差が大きく問題となる。従ってこの様に実時間性能が要求されるサンプリングタイムの小さなアプリケ−ションを実行する場合は、情報の遅れ(レイテンシ)を改善するハ−ドウェアア−キテクチャが必要となる訳である。
【0113】
十分なリアルタイム性能(実時間処理能力)を有したプロセッサシステムとは、システム内の様々なところで発生するレイテンシ(プロセッサ間及び外部システムとプロセッサとの間の通信遅れや演算処理時間に伴う遅れ等)が目標とするサンプリングタイムに対して原理的に十分小さく抑え込まれているシステムを差し、制御用のプロセッサシステムはこの性能特性が最も重要視される。
【0114】
この様な特性を有するリアルタイムプロセッサシステムでは、大半の状態量情報は、ハンドシェ−ク処理等によって、デ−タ通信に伴うプロセッサ間での同期を取る必要がなく、同期について特に管理しない情報伝達で十分な処理結果の精度を確保できる。もし、プロセッサ間で確実なデ−タの受渡しが必要な場合は、前述したような同期処理回路1000と組み合わせた共有メモリシステム上での情報管理を行なえば良い。
【0115】
前述した、プロセッサが自身のプログラム処理の流れに矛盾なく、自身のメモリユニット3006の内容が読み書きできるように保証する回路として、本例では、アドレス比較回路3020を設け、プロセッサからライトアドレス13002及びバッファ3008に蓄えられているライトアドレスとをそれぞれW0,W1入力に取り込み、プロセッサからのリ−ドアドレス13001をR入力に取り込んで、プロセッサからメモリユニット3006へのリ−ドサイクル時にライトアドレスW0及びW1とリ−ドアドレスRとの内容を比較して一致するものが一つでもあれば、それらのライトアドレスに対する共有メモリへのライトサイクルが全て終了するまでコントロ−ルユニット3010は13007に出力しているRDY−N信号を非アクティブに保ってプロセッサ側のリ−ドサイクルをペンディングして待たせる動作を行なう。
【0116】
図3において、他のプロセッサからの共有メモリへのライトサイクル時の動作は、図2の場合と同様であり、マルチプレクサ3005及び3007をそれぞれB入力側が選択されるように、選択信号入力Sをコントロ−ルユニット3010がそれぞれWDSEL信号出力、WASEL信号出力を用いて制御する。また、バッファ3004,3008の制御はコントロ−ルユニット3010がそれぞれCSDTL信号出力、CSADL出力を用いて行なっている。
【0117】
バッファ3004,3008の空き状態の管理は、コントロ−ルユニット3010内にバッファが何デ−タ分空いているかをその増減をカウントすることにより保持する回路を設けて行なっている。もちろんバッファ側にこの機能を持たせ、そこからの情報をコントロ−ルユニット3010側に取り込んでも良い。コントロ−ルユニット3010の他の入出力信号の機能は、図2の共有メモリコントロ−ルユニット2010の対応する入出力信号と等価と考えて良い。
【0118】
次に、図3のメモリユニット3006中のデコ−ダ3103,3104とメモリセル3101に関する実施例を図4に示す。ここでは、メモリユニット3006中のメモリセル群の1つを示している。
【0119】
メモリユニットを構成するには、このメモリセル3101をデ−タビット数分用意してさらにその組を複数用意してアドレス値(WA,RA)で指定できるようにする。マルチプレクサ部3102はトライステ−トバッファを前記複数のメモリセル1つ1つに対応して必要なデ−タビット数分用意し、その組をアドレス値で表現できる数の分だけ複数設ければ良い。なお、各組の同じデ−タビットに対応する出力(Z−N)同志は結線しておく。リ−ドアドレス値RAの指定によって前記複数のデ−タの組のどれか1つを選択できる。
【0120】
リ−ドデコ−ダ3103は、リ−ドアドレスRAと必要ならリ−ドイネ−ブルREを得て、イネ−ブル信号(EN0,EN1−−−)のうちそのリ−ドアドレス値に対応するものを1つアクティブにする。
【0121】
各トライステ−トバッファ部3102のリ−ドデ−タ入力(RD)は、前記イネ−ブル信号(1レベルでアクティブ)を受けて、もしそれがアクティブであればメモリセル3101の内容をZ−N(OUTPUT)に出力し、非アクティブであればZをフロ−ト状態に保つ。トライステ−トタイプのマルチプレクサ部3102はRD入力が1のときメモリセルの内容(D入力の値をWRをトリガ信号として記憶したもの)が反転されてZに出力され、RD入力が0のとき前述した様にZ−Nはフロ−ト状態となる。
【0122】
リ−ドイネ−ブルRE(1レベルでアクティブ)は通常リ−ドアドレスが確定しデコ−ドそのものが完了した直後にイネ−ブル出力がアクティブとなるようにして、イネ−ブル信号にハザ−ドが乗らない様にする役割がある。ハザ−ドが大きいと配線上のスキュ−等と絡んでトライステ−ト出力Zのうち結線されているもの同志の間で一時的にショ−トした状態が発生することもあるが、ハザ−ドが小さければRE信号を無くしても特に支障は無い。
【0123】
図2、図3に示した実施例では特にリ−ドイネ−ブルREを設けてはいない。なお、図3に示したように、マルチプレクサ3102の部分が、完全なマルチプレクサ構造を採っていれば、その選択入力Sにリ−ドアドレスRAの値そのものか、それと等価の信号を直接用いることも可能である。
【0124】
ライトデコ−ダ3104は、リ−ドデコ−ダ3103と同様、ライトアドレスWAによって示される1つのイネ−ブル信号ENに対応するメモリセルの組のアクティブなライト信号WR(1レベルでアクティブ)を生成する。イネ−ブル信号はEN0,EN1,−−−から成り、各イネ−ブル信号は各メモリセルの組に対応して、それら各組のライト信号WR入力に接続されている。
【0125】
ライトデコ−ダ3104は、ライトイネ−ブルWE信号を用いて、指定されているライトアドレスWAが確定してデコ−ドが完了した時点で出力されるイネ−ブル信号(1レベルでアクティブ)にハザ−ドが発生しないようにWE(1レベルでアクティブ)がアクティブである期間以外はイネ−ブル信号をマスクすることにより、WR信号をメモリセルにデ−タを書き込むのに適正なパルス幅だけ確実に目的とするメモリセルの組に与える。
【0126】
図4に示したメモリセル3101の構造は、CMOSプロセスを用いた場合のものであり、トランスファ−ゲ−ト(トランスペアレントゲ−トとも言う)タイプの2入力1出力のマルチプレクサを用いて、その正転出力OUTをトランスファ−ゲ−トの一方の入力IAにフィ−ドバックし、他方の入力IBにデ−タ(D)を与え、選択信号(トランジスタのベ−ス入力信号)SとしてWR信号を与えることによりゲ−トラッチを構成している。
【0127】
すなわち、WRが1レベルのときD入力の値が透過され、WRの立ち下がりでその値がラッチされる。WRをトリガ信号として記憶したD入力の値が、リ−ド時にトライステ−トバッファ3102のZ−N出力へ反転して出力される。
【0128】
図5は本発明の共有メモリアクセスのタイミングを示している。プロセッサ側のバスプロトコルの基準となるプロセッサクロック(PCLK)と共有バス側のバスプロトコルの基準となる共有バスクロック(BCLK)とは同一周波数、同一位相を有しているとし、いずれもシステムの基準となるシステムクロック(SCLK)に同期して生成されている。なお、SCLKの周波数は、PCLK,BCLKの2倍周期の周波数となっている。前述したように、ブロ−ドキャスト方式の共有メモリシステムが前提となっており、各プロセッサに対応する各共有メモリシステム内の共有メモリ部には、本発明の特徴であるリ−ドポ−トとライトポ−トを独立して有する2ポ−トメモリユニットを用いているとしている。
【0129】
図5では、共有バス側からのアクセス(いずれかのプロセッサが共有メモリシステムへライトサイクルを生成して、その情報が共有バスシステムを介してブロ−ドキャストされてきたもの)と、プロセッサ側からの共有メモリへのリ−ドサイクルとの競合状況を示している。共有メモリ上でのライトポ−ト側のバス信号の状況は、メモリライトデ−タ(MWD)、メモリライトアドレス(MWA)、メモリライトイネ−ブル(MWE)に示しており、リ−ドポ−ト側のバス信号の状況は、メモリリ−ドデ−タ(MRD)、メモリリ−ドアドレス(MRA)、リ−ドイネ−ブル(MRE)に示している。
【0130】
プロセッサ側のバスサイクルは2プロセッサクロック(2×PCLK)であり、共有メモリ上で必要となるアクセスサイクルも実質的に2×PCLK周期分必要であるとしている。ただし、実際の共有メモリへのアクセスタイムは、1.5×PCLK周期分程度で、残りの0.5×PCLK周期分の時間はデ−タのホ−ルドタイムやタイミングの調整時間、プロセッサに対するセットアップタイム等に必要な時間であると仮定している。
【0131】
図5では、プロセッサがステ−トS1の先頭でPCLKに同期して共有メモリへの読み出しサイクル(リ−ドサイクル)を開始してプロセッサアドレス(PA)を生成し、ステ−トS2で対象となるデ−タの読み出し処理を指令するプロセッサリ−ドコマンド信号(PRD−N)を生成している。一方、共有バス側は、ステ−トS0の先頭でBCLKに同期して、共有バスアドレス(BA)と共有バス側からの書き込みサイクルがアクティブになったことを示すビジ−信号(CSBUSY−N)又は共有バスライト信号(BWT−N)、及び、共有メモリに書き込むべき共有バスデ−タBDとを生成する。
【0132】
本発明では、BD及びBAは他のプロセッサの共有メモリシステム101nから共有バスシステムにほぼ同じタイミングで出力され、CSBUSY−Nは(0レベルでアクティブ)ア−ビタ回路1020からのBUSY信号より生成され、BD,BAよりは少し先行したタイミングで出力される。なお、CSBUSY−Nは共有バスが使用されていることを示す信号で、図2で説明したように、共有バスシステムのコントロ−ル信号の情報の1つである。
【0133】
2ポ−ト共有メモリを備えたことによりプロセッサ側の共有メモリへのリ−ドサイクルは待たされずにステ−トS2の最後で終了しており、この時共有バス側からのBAと同じ共有メモリ上のアドレスをプロセッサがPAによって指定していれば、BDの値がそのままプロセッサに読み出されるべきデ−タPDとして、RDY−N信号のタイミングに応答してS2の最後のポイントでプロセッサ側に読み出される(共有メモリからの読み出し期間はREがアクティブな間)。
【0134】
共有バスシステム側からのライトサイクルは、共有メモリ上でもプロセッサ側のリ−ドサイクルより1PCLK周期分先行して、すなわちステ−トS0内で待たされずに開始され、ステ−トS1で共有メモリ上のライトコマンド(WE)が生成されておりS1の中ですでに共有メモリ上にBAに対応するBDが確定している。なお、本例ではWEが1レベルのとき共有メモリ上のBAに対応するアドレスにBDの値が透過し、WEの立ち下がりでそのアドレスにBDの値がラッチされる。
【0135】
従って、S1以後でBAに対応するアドレスのデ−タをプロセッサが読み出すと、前述したようにBDが読める訳である。仮に図5中に点線で示したように、プロセッサがステ−トS0の先頭でアクセスを開始した場合は、完全に共有バス側からのライトサイクルとプロセッサ側からのリ−ドサイクルとが同一タイミングで重なる、すなわち、REとWEが同一タイミングで出力されるが、どちら側のサイクルも待たされずに並列に処理され、最短時間で終了している。
【0136】
この様に、本発明を用いると、共有メモリ上における共有バス側のバスサイクルとプロセッサ側のバスサイクルとを完全に並列処理でき、非常にレイテンシの短いプロセッサ間デ−タ通信を共有メモリ上で実現することができる。
【0137】
以上からわかるように、2ポ−ト共有メモリを用いた本発明により、特にプロセッサ側のアクセススル−プット向上効果と共有メモリを介したプロセッサ間のデ−タ通信レイテンシの大幅短縮効果とが得られることがわかる。なお、プロセッサ間のデ−タ受け渡しに関するいくつかの矛盾を回避するためには、図2、図3ですでに解説したようなプロセッサ側のバスサイクルと共有バス側のバスサイクルのインタ−ロックや局所的な同期処理、及び、図1に示したようなプロセッサ間同期処理回路と連動したプロセッサ間の並列処理管理を行なえば良い。
【0138】
次に、PCLK,BCLKは共にSCLKに同期しており図5に示した実施例と同様であるが、本発明の様に2ポ−ト共有メモリを用いない場合の実施例のタイミングチャ−トを図6に示す。プロセッサ側及び共有バス側のアクセス条件は図5と全く同様である。特開平5−2568号公報に開示されたブロ−ドキャスト方式の共有メモリシステムは本例のタイプである。
【0139】
図6から明確にわかるように、共有メモリのアドレス(MA)とデ−タ(MD)が1組しか存在しないため、まず、ステ−トS0の中央付近で共有バス側のアドレスBA,デ−タBDが共有メモリに対してアクティブとなり、ステ−トS2の中央付近まで共有メモリを専有している。ライトイネ−ブルWEは図5と同様のタイミングで出力されており、ステ−トS2の先頭で共有メモリ上にBDの値がラッチされる。
【0140】
基本的に本実施例では共有バス側からのライト動作をプロセッサ側のリ−ド動作より優先する競合制御が行なわれる。そのため、共有バス側のライトバスサイクルとプロセッサ側のリ−ドバスサイクルとが競合する場合、プロセッサ側のバスサイクルの方が共有バス側のバスサイクルが終了するまで待たされる。図6の例でも、ステ−トS1で共有メモリへリ−ドアクセスに来たプロセッサ側のバスサイクルが1ステ−ト分(PCLKの周期分)だけ待たされ、ステ−トS3の最後で共有メモリ上のデ−タPDを得た後バスサイクルを終了している。
【0141】
共有メモリ上で見ると、ステ−トS0の中央付近からステ−トS2の中央付近までの2サイクル分共有バス側のライトサイクル(BA,BD,MWEアクティブ)が実行され、その直後プロセッサ側のリ−ドサイクル(PA,PD,MREアクティブ)が実行されている。
【0142】
共有メモリコントロ−ルユニットは、CSBUSY−Nがアクティブの期間はこれに応答して共有バス側のバスサイクルを共有メモリに割り付け、CSBUSY−Nが非アクティブ(Hiレベル)に転じるタイミングに応答してプロセッサ側のバスサイクルに切り換える。なお、点線で示したように、プロセッサ側のバスサイクルがステ−トS0で開始された場合、プロセッサ側のバスサイクルの待ち時間は2ステ−ト分(2×PCLKの周期分)に増え、プロセッサ側のアクセスオ−バ−ヘッドが増大する。
【0143】
以上から、図5の例と比較すると、プロセッサ側のアクセスオ−バ−ヘッドと共有バス側からプロセッサ側への共有メモリを介したレイテンシとが1〜2PCLK周期分増大していることがわかる。
【0144】
図7は、ブロ−ドキャスト方式の共有メモリシステムで従来一般的に用いられているPCLK,BCLKが非同期状態のシステムである。各プロセッサに対応するそれぞれのPCLKの位相もお互いに同期していないのが一般的であり、プロセッサの種類が異なる場合はそれらの周期も異なる場合が多い。その他の条件は図5、図6と同様である。
【0145】
この様な、プロセッサ間及びプロセッサと共有バスシステム間とで非同期な基準クロックを用いて制御されるシステムでは、各所で非同期の同期化処理を行ない、様々なレベルでのメタ状態の発生を回避する必要が生ずる。本例では、共有バス側のバスサイクルをPCLKで同期化して共有メモリに対するデ−タの書き込みタイミングがプロセッサ側のアクセスタイミングに対して正しい関係を保てるよう制御している。すなわち、これにより、プロセッサ側のバスサイクルに対して本来非同期な共有バス側のバスサイクルを同期化する処理が行なわれたことになる。
【0146】
実際には、CSBUSY−NやBWT−N信号をPCLKをトリガクロックとした2段以上のフリップフロップを通過させることにより、PCLKに対して同期化しており、1〜2PCLK同期分のオ−バ−ヘッドを伴う。このオ−バ−ヘッドにより、共有メモリ上で共有バス側からのライトサイクルが開始されるのはステ−トS2の先頭からであり、それが終了するのは2ステ−ト後のステ−トS3の最後である。なお、同期化が完了したらその情報を何らかの形で共有バス側に知らせ、共有バスサイクルを発行している元の共有メモリシステムはその情報を利用して共有バスサイクルの終了処理を行なう。本例では共有バスサイクルの同期化情報としてBSYNC−N信号を共有バスシステム側に返送する。
【0147】
共有バスサイクルを生成しているプロセッサの共有メモリシステムは、BSYNC−Nがアクティブ(0レベルがアクティブレベルで信号の変化タイミングはPCLKに同期しているとしている)になるタイミングに応答して共有バスシステムに出力中のバスサイクルを終了する。ここでは、BSYNC−Nから内部的に同期信号を生成し、それをBCLKを使って非同期の同期化処理を行ないBCLKに同期化した後、その変化タイミングに応答してバスサイクル、すなわち、BD/BAの出力をフロ−トにすると共にBWT−N又はCSBUSY−Nを非アクティブに戻す。
【0148】
これによって、共有バスシステム側も1〜2BCLK同期分のオ−バ−ヘッドを生じていることがわかる。
【0149】
結果的に図7の例では、プロセッサ側のリ−ドサイクルが終了するのは、BD,BA,MWE信号により共有バス側のバスサイクルが共有メモリ上で終了するステ−トS3の最後からさらに2ステ−ト後のS5の最後のポイントである(そのリ−ドサイクルに対応するMRE信号はS5の先頭でアクティブになりS6の先頭で非アクティブになっている)。すなわちプロセッサ側で3ステ−ト(3×PCLKの周期分)の待ち時間が生じていることになる。
【0150】
図5に示した本発明のアクセスタイミングと比較すると、プロセッサ側、共有バス側双方のオ−バ−ヘッドについても、またプロセッサ間の共有メモリを介した通信レイテンシの点でも、本発明の方が従来システムよりはるかに優れていることがわかる。
【0151】
次に、図8に本発明の大きな特徴である同期信号(SYNCOK)と連動したレディ信号生成回路の実施例を示す。本回路は、図2で説明したように、プロセッサ間同期処理回路1000と連動して動作する際、共有メモリ上のデ−タを、関連する処理を実行するプロセッサ間で矛盾なくやり取りするための局所同期機能を実現する。
【0152】
すでに詳細機能については述べたように、プロセッサによるタスク処理の終了を受けてプロセッサ間同期処理回路1000での同期処理が完了しSYNCOK信号がアクティブになったとしても、通信遅れのために共有メモリ上に次のタスク処理で必要な情報が存在していない状態が発生する可能性がある。本回路は、その状況を回避し、必要とする情報が確実に共有メモリから得られるように、共有メモリコントロ−ルユニット2010と同期処理回路1000との間でさらに局所的な同期処理(インタ−ロック処理)を実行して、共有メモリ上でのデ−タ授受の前後関係に矛盾が生じないように管理する。
【0153】
基本的には、前述したように、SYNCOKがアクティブになった時点でCSBUSYがアクティブならばCSBUSYが一度非アクティブに戻るまで、プロセッサが共有メモリの内容を読み出すことを禁止する。具体的には、上記の条件が成立したときプロセッサ側の共有メモリへのリ−ドサイクルをRDY−N信号を非アクティブに保つことによって引き延ばしてプロセッサ側を待たせ、インタ−ロック処理を行なう。
【0154】
関連する処理を実行する各プロセッサは、同期処理が完了しSYNCOK(1レベルでアクティブ)がアクティブに転じた時点で、プロセッサは、少なくともすでに処理したタスクでの必要な処理結果を共有メモリへストアするプロセッサ側のライトサイクルの発行を全て終了しているはずである。
【0155】
ゆえに、各プロセッサの共有メモリシステム内(ライトバッファ2004,2008等の中)に保持されているすでに発行済みの前記プロセッサ側のライトサイクルに対応する共有メモリへの実際のライトサイクルが全て完了するまでは、すなわち、全てのプロセッサの共有メモリ2006上に一致した内容の情報が現われその情報を各プロセッサが得られるようになるまでは、各共有メモリの内容を一致させるための情報を共有バスシステムを介して各プロセッサに対応する全共有メモリシステムへブロ−ドキャストするためのライトサイクルが共有バスシステム上に生成され続ける。
【0156】
それを受けて共有バスシステムがアクティブであることを示すCSBUSY−Nもアクティブに保持され続けるため、前述したロジックによりインタ−ロックが可能となる訳である。図8の実施例を用いてこのインタ−ロック機能のロジックを以下に詳しく説明する。
【0157】
CSBUSY−Nは0レベルでアクティブな信号であり、共有バス上のコントロ−ル信号の1つであるア−ビタ回路1020からのBUSY信号に応答して生成されることはすでに述べた。これをインバ−タ8001を介してR−Sフリップフロップ8000の一方の入力R−Nに接続しており、CSBUSY信号が非アクティブ(初期状態は非アクティブである)のときは無条件でZ−Nに1が出力され、相対的にZに0が出力される。以上の状態が初期状態である。
【0158】
なお、他方の入力S−NにはNANDゲ−ト8006の出力が接続されており、NANDゲ−ト8006はCSBUSY信号がアクティブ状態のとき、SYNCOK信号がアクティブに転じたその立ち上がりのエッヂを回路8005の信号とSYNCOK信号の状態とから検出して、R−Sフリップフロップ8000のS−N入力にパルス(Loパルス)を生成する。
【0159】
そのパルスが生成されると、R−Sフリップフロップ8000はセットされ、Z出力に1がラッチされる。ただし、初期状態でSYNCOK信号を0レベルにしておけば、NANDゲ−ト8006は1レベルを出力した状態となり、かつCSBUSY信号は0レベルが初期値であるため、R−Sフリップフロップ8000のZ出力は0にリセットされた状態となって、前記の初期状態と矛盾しない。
【0160】
NANDゲ−ト8002は、共有メモリがアクセスされたことを示すCSEN信号がアクティブで、R−Sフリップフロップ8000がNANDゲ−ト8006からのパルスによってセットされてZに1レベルが出力され、かつ、CSBUSY信号がアクティブのとき0レベルを出力する。これが、後段のNANDゲ−ト8003を無条件で1レベル、すなわち、RDY−Nを非アクティブにすることにより、インタ−ロックの条件が揃ったときプロセッサ側からの共有メモリへのアクセスを一時的に禁止するように動作する。
【0161】
本例では、プロセッサが共有メモリにアクセスするとリ−ドサイクル、ライトサイクルいずれの場合にも、前記インタ−ロック機能が働くように設計しているが、リ−ドサイクル時のみにその動作をアクティブにしたければ、プロセッサからのリ−ドイネ−ブル信号がアクティブな条件をNANDゲ−ト8003でデコ−ドする様にしておけば良い(アクティブレベルが1のリ−ドイネ−ブル信号REをNANDゲ−ト8002の入力に加える)。
【0162】
なおNANDゲ−ト8003はCSEN信号がアクティブになったときにのみ、すなわち、共有メモリシステムにプロセッサがアクセスしたときにのみ、そのプロセッサに対してアクティブなRDY−N信号を返送するようになっている。
【0163】
また、NANDゲ−ト8009は、共有メモリシステムがアクセスされてCSENがアクティブレベル(1レベル)になっていて、かつ、SYNCOKが非アクティブレベル(0レベル)になっていれば(SYNCOK信号をインバ−トした信号をNANDゲ−ト8009の入力に接続している)0レベルを出力し、それがNANDゲ−ト8003の入力を駆動してその出力を無条件でRDY−N信号を非アクティブレベル(1レベル)に設定する。
【0164】
すなわち、プロセッサが共有メモリシステムをアクセスしたとき同期処理回路1000でまだそのプロセッサに対する同期処理が完了していないならばプロセッサ側の共有メモリへのアクセス動作を待たせるように働く。これは特開平5−2568に開示された局所同期機能と等価である。もちろん、NANDゲ−ト8009でリ−ドイネ−ブル信号(RE)のアクティブ状態を検出するようにして、共有メモリへの読み出し動作が生じたときにのみこの機能が働くように設計しても良い。
【0165】
この様に、本発明のインタ−ロック機能は、特開平5−2568で開示されている従来の局所同期機能にリンクされた形で、本発明の共有メモリシステムと連動したプロセッサ間同期処理をサポ−トしていることがわかる。
【0166】
インタ−ロックが解除され、本発明の局所同期処理が完了する条件は、CSBUSY信号が非アクティブに転ずることである。CSBUSY信号が非アクティブ(0レベル)になると無条件でNANDゲ−ト8002の出力は1になり、R−Sフリップフロップ8000のZ出力も0レベルにリセットされて初期状態に戻され、インタ−ロックが解除される。なお、NANDゲ−ト8002に入力されているSYNCSEL(1レベルでアクティブ)は、このインタ−ロック回路による局所同期処理機能を有効(アクティブ)にするか否かを決める選択信号である。
【0167】
CSBUSY信号は、図8に点線で示したように、PCLKをトリガクロックとしてフリップフロップを何段か通してから用いても良い。図8では、フリップフロップ8004を一段通して使用する例を開示している。これにより、CSBUSY信号にハザ−ドが乗っている場合はそれを除去することが可能である。またこの方法で、CSBUSY信号を適切な時間遅らせることにより、インタ−ロックがかかっている時間が、共有メモリへの必要なすべてのデ−タの書き込みが有効となるまで、すなわち、リ−ドポ−ト側からそれらが確実に読み出せるようになるまでの時間を十分カバ−できる様に設定することが可能である。
【0168】
本例では、1PCLK周期分CSBUSY信号を遅らせることにより、インタ−ロック期間を本来のCSBUSY信号が非アクティブになる時刻より1PCLK周期後にずらしている。そして、インタ−ロックが解除された直後には共有メモリ上で全ての必要なデ−タの読み出しが有効となるようにコントロ−ルユニットを設計している。つまり、本実施例の場合、インタ−ロックが解除されてRDY−N信号がアクティブとなりプロセッサのバスサイクルが終了する時点より前のタイミングで、必要な共有メモリ上での最後のライトサイクルが生成されて、ライトイネ−ブル(WE)とライトアドレス、ライトデ−タ(WD)等の信号がアクティブになっていれば良い。
【0169】
これは、本来のCSBUSY信号が非アクティブになるタイミングから考えると、本実施例では、そのタイミングの直後に続く2つのステ−ト(1ステ−ト=1PCLK期間分)のうちいずれかのステ−トで共有メモリ上での最後のライトサイクルが生成されていれば良いということになる。
【0170】
図に示したように、ORゲ−ト8007を用いてフリップフロップ8004の出力とCSBUSY信号とのOR論理をとりその出力をフリップフロップ8004の出力の代わりに用いれば、インタ−ロックの解除時刻はフリップフロップ8004を用いた場合とほぼ同じに保ったまま、インタ−ロックの開始条件をフリップフロップ8004を用いない場合とほぼ同じに設定できる。これによって、SYNCOKがアクティブに転じたときにペンディングされている共有メモリへのライトサイクルが存在するにもかかわらず、ゲ−ト8006の入力やR−Sフリップフロップ8000のR−N入力に対する信号8008(CSBUSY信号に応答して得られた信号)の状態が、信号の遅延によってその時点でまだアクティブ(1レベル)になっていないことが無いように設計することが容易となる。
【0171】
本発明の共有メモリへのアクセスタイミングに関する別の実施例を図9に示す。図5の例では、プロセッサ側と共有バス側との間の共有メモリ上でのアクセス状態を示したが、バスサイクルの条件として1バスサイクル当たり最小2プロセッササイクル(2×PCLK周期分)の時間が必要であると仮定していた。図9の例では、最小1プロセッササイクル(1PCLK周期分)でプロセッサ側、共有バス上、共有メモリ上の各バスサイクルを構成すると仮定している。
【0172】
ただし、アドレスを先行して出力し、後続のステ−トでデ−タの入出力を実行するパイプラインバスサイクル(アドレスバスとデ−タバスがそれぞれ1プロセッササイクルでそれぞれ独立に駆動され、かつ互いに1プロセッササイクル分ずれている)によってアドレスアクセス時間を比較的長い時間確保できるように工夫している。
【0173】
本実施例のパイプラインバスサイクルの特徴は、次に出力すべきバスサイクルに対するアドレス(ADDR)を最低1ステ−ト(1PCLK周期)分出力した後、1つ前のバスサイクルに対するRDY−N信号が返送されてそのバスサイクルが終了していれば、さらにその次のアドレス値(既にプロセッサ側で準備できているなら)を出力していく。
【0174】
ある1つのアドレスに対応するデ−タのやりとりに関しては、そのアドレスが出力されたステ−トの次のステ−トの最後でプロセッサとの間での入出力が実行される。すなわち、アドレスバスの動作に対してデ−タバスの動作は1ステ−ト分遅れており、デ−タがプロセッサとの間でやりとりされるステ−トの最後のポイントがそのデ−タの前記アドレスに対するバスサイクルの終了時点となっている。
【0175】
プロセッサが次のアドレスを出力できる状態にあれば、前記デ−タの出力されるステ−トですでに次のアドレスのアドレスバスへの出力が可能となっており、デ−タの入出力と並行して次から次へとパイプライン的にアドレスを先行出力していくことができるので、パイプラインアドレッシング又はパイプラインバスサイクルと呼ぶ訳である。
【0176】
例えば、図9のプロセッサ(A)において、アドレス(ADDR)A1は、ステ−トS0で2つ以上前のバスサイクルが既に終了しているため、プロセッサがアドレス値A1を準備できたステ−トS0で直ちに出力され、それはライトサイクルなので続いてステ−トS1でプロセッサから外部へ書き込むべきデ−タD1を出力している。
【0177】
ステ−トS1では1つ前のバスサイクルも既に終了しているため、プロセッサはA1を1ステ−ト分出力した後直ちにA1に対応するデ−タの出力D1と並列に次のアドレスA3(読みだしサイクル)を出力している。デ−タD1に対するRDY−N信号はステ−トS1の最後のポイントでプロセッサ(A)に取り込まれ、それを受けてステ−トS2ではさらに次のアドレス情報A5(書き込みサイクル)がA3に対するデ−タの入力動作not D3と並列に実行されている。
【0178】
以上のように、リ−ドサイクルとライトサイクルが混在しても1プロセッササイクル単位ごとにアドレスバスとデ−タバスとが並列かつパイプライン的に駆動され、実質1ステ−ト/バスサイクルを実現することが可能となっている。
【0179】
図9の実施例では、プロセッサ間同期処理回路と連動してタスク単位のデ−タの授受を矛盾なく確実に行なうというのではなく、同期について管理せずプロセッサ間で情報を自由にやりとりする場合の共有メモリシステム上のアクセス状況を、2台のプロセッサの場合(プロセッサAとB)を例にとり示している。少ないスペ−スで共有メモリへのアクセスを詳しく表現するために、全てのサイクルが共有メモリへのリ−ド又はライトサイクルであり、他の一般のリソ−スやプロセッサ間同期処理回路1000などへのアクセスはこれと並列に実行されていると仮定している。
【0180】
この様なプロセッサシステムは、メインプロセッサと別に専用のプロセッサを付加したり、共有メモリシステムへのアクセスのためのバスシステムと他の一般のリソ−スへのアクセスのためのバスシステムとを別々に有する高度な処理系を構成すれば実現可能である。
【0181】
デ−タD1,D2,D5はプロセッサ(A)側から共有メモリへ書き込まれる情報で、デ−タD3,D4はプロセッサ(B)側から共有メモリ書き込まれる情報であるとしており、読み出すのもそれらのデ−タのいずれかであるとしている。まだ必要なデ−タが共有メモリに書き込まれておらず、1つ前のデ−タ(以前に書き込まれたデ−タ)が読める場合は、not Dnといったように前に”not”を付けた表現としている。
【0182】
リ−ドサイクルかライトサイクルかはアドレス(ADDR)とほぼ同じタイミングで出力されるRD/WT信号(Hi−RD,Lo−WT)で示している。ライトサイクルが生成されると共有バスを介して共有メモリを書き替えるための情報(アドレス、デ−タ、BUSY信号など)が全ての共有メモリシステムにブロ−ドキャストされて各プロセッサの共有メモリ上でライトサイクルが生成され、その内容が変更される。
【0183】
図中のプロセッサのバスサイクルのところには、共有メモリへのライトサイクルには(W),リ−ドサイクルには(R)と付している。共有バス上のバスサイクルは必然的にライトサイクルのみとなっており、バスサイクルが生成されている期間はCSBUSY−N信号(Loアクティブ)がアクティブ状態となっている。
【0184】
共有バス上では、アドレス情報とデ−タ情報とがプロセッサ側のアドレス及びデ−タ出力タイミングよりおよそ1/2ステ−トずれて出力され、CSBUSY−N信号は共有バス上でのアドレスとほぼ同じタイミングで出力されている。共有バス上のバスプロトコルの状態は、完全にプロセッサクロック(PCLK)に同期して管理されており、例えば具体的には、プロセッサ(A)側のステ−トS0で出力されているアドレスA1は共有バス上ではステ−トS1の先頭付近から1ステ−ト分出力され、プロセッサ(A)側のステ−トS1の先頭から出力されているデ−タD1は共有バス上ではステ−トS1の中央付近から1ステ−ト分出力される。
【0185】
共有メモリ上のバスプロトコル状態もプロセッサクロック(PCLK)に同期して管理されており、図9の中では、主としてプロセッサ(A)及び(B)それぞれに対応するライトデ−タ/リ−ドデ−タの状態と、ライトアドレス及びライトイネ−ブル(WE)が生成されるタイミングとを示している。
【0186】
次に共有メモリ上でのバスサイクルについて詳しく述べる。共有バス上のCSBUSY−N信号がアクティブに転ずると、そのステ−トの中央付近で、共有バス上のアドレス情報が共有メモリに対して有効となる様にゲ−トされて共有メモリのライトポ−トにライトアドレス(WA)として約1ステ−ト期間分与えられている。このタイミングを得るには、PCLKの反転(PCLK−N)クロックとして用いてゲ−トラッチにより共有バス上のADDRの内容をステ−トの中央でゲ−トし、情報を透過しておいてステ−トの終わりでラッチし、さらに約1/2ステ−ト期間保ってから共有メモリにライトアドレス(WA)として与えれば良い。
【0187】
一方、共有バス側からのライトデ−タ情報は、PCLKをクロックとして用いてゲ−トラッチにより共有バス上のDATAの内容をステ−トの先頭でゲ−トし情報を透過しておいてステ−トの中央でラッチし、さらに約1/2ステ−ト期間保ってから共有メモリにライトデ−タ(WD)として与えれば良い。
【0188】
ライトイネ−ブル信号は、ライトデ−タ(WD)を共有メモリに与えるタイミングすなわちステ−トの先頭から約1/2ステ−ト分アクティブになる様に、CSBUSY−N信号に応答して生成する。WEがアクティブの期間、WAの値が共有メモリに対して有効となっているようにタイミングの調整を行なっている。
【0189】
本発明では、共有メモリへのライトサイクルは、全てのプロセッサの共有メモリシステムに対して共通にかつほぼ同じに生成されるものとしている。
【0190】
共有メモリ上でのリ−ドサイクルは、すでに述べたようにリ−ドポ−トを用いてライトサイクルと並列に実行され、かつ各共有メモリ上で対応するプロセッサのバスサイクルに応じた全く別々の内容のサイクルが生成される。
【0191】
図9において、WT(A1)/RD(A3),WT(A1)/RD(A1),WT(A5)/RD(A4),WT(A3)/RD(A3),WT(A4)/RD(A4),WT(A4)/RD(A1)の記号を付したサイクルでリ−ドサイクルとライトサイクルが並列に生じている。また、リ−ドサイクルのみが生じている場合には(R),ライトサイクルのみが生じている場合には(W)と付してある。
【0192】
より詳しい情報として、各サイクルの上段又は下段に、リ−ドサイクルの場合RD(Ax),ライトサイクルの場合WT(Ax),ライトサイクルとリ−ドサイクルとが並列に生じている場合WT(Ax)/RD(Ay)と表示しておいた。Ax,Ayはプロセッサから送られてきた書き込むべきデ−タ情報Dx,Dyに対応するアドレス情報である。
【0193】
リ−ドサイクルにおける共有メモリ上でのアドレス(RA)やデ−タ(RD)の生成タイミングはライトサイクルと比較すると、デ−タの入出力方向が逆になる(リ−ドはプロセッサへ、ライトはプロセッサからそれぞれデ−タを授受する)ことを除けばライトサイクルの場合とほぼ同じと考えて良いが、リ−ドイネ−ブル(RE)が存在する場合、それがアクティブに転ずるタイミングは、リ−ドデ−タRDがアクティブになるステ−トの先頭又は中央付近からそのステ−トの最後のポイントまでである。
【0194】
ここで、プロセッサからのライトサイクルに対応して共有メモリ上のデ−タ内容が変更され、実際に他のプロセッサからそのデ−タが読み出せるようになるまでのタイミングについてみてみる。本例では、プロセッサ(A)側がアドレスA3に対応するデ−タD3を読み出す操作を2回(それぞれS1,S4でアドレスの出力を開始している)、A4に対応するデ−タD4を読み出す操作を2回(それぞれS3,S5でアドレスの出力を開始している)行っている。
【0195】
しかし、プロセッサ(B)が共有メモリ上のアドレスA3の内容を変更するためのバスサイクルを生成するのはステ−トS3の時点であり、デ−タD3はステ−トS4の先頭でプロセッサ(B)から出力され、実際に共有メモリ上でD3が有効になって、プロセッサ(A)側からの読み出しが可能となるのはステ−トS5の先頭でライトイネ−ブル(WE)がアクティブになった時点からである。
【0196】
同様に、プロセッサ(B)が共有メモリ上のアドレスA4の内容を変更するためのバスサイクルを生成するのはステ−トS4の時点であり、デ−タD4はステ−トS4の先頭でプロセッサ(B)から出力され、実際に共有メモリ上でD4が有効となり、プロセッサ(A)側からの読み出しが可能となるのはS6の先頭でライトイネ−ブル(WE)がアクティブとなってからである。
【0197】
プロセッサ(A)はS2,S5の各ステ−トでアドレスA3に対応するデ−タD3を、S4,S6の各ステ−トでA4に対応するデ−タD4を読み出しているが、ステ−トS2ではプロセッサ(B)が書き換えようとしているD3の値は読めず、以前に設定されている共有メモリ上のアドレスA3の内容が読み出せることになる。D4の値に関しても、プロセッサ(A)はS4,S6の各ステ−トで共有メモリから読み出しているが、S4ではプロセッサ(B)が書き換えようとしているD4の値は読めず、以前に設定されている共有メモリ上のアドレスA4の内容が読み出せる。
【0198】
そして、プロセッサ(B)からのD3が共有メモリ上に反映されるステ−トS5では、実際のD3の値がプロセッサ(A)によって読み出せており、同様に、プロセッサ(B)が設定した実際のD4の値はステ−トS6でプロセッサ(A)によって読み出せている。
【0199】
本例から、プロセッサ(B)がデ−タを出力してからプロセッサ(A)が共有メモリを介してそのデ−タを内部に取り込むまでのレイテンシは2ステ−トであることがわかる。このうち共有メモリシステム側でのレイテンシは1ステ−ト分(1PCLK周期分)であり、共有メモリを用いた非常に効率の良いデ−タの共有メカニズムが実現できていることがわかる。
【0200】
図9からわかる様に、共有メモリ上のリ−ドサイクル及びライトサイクルが完全にアクセス競合が発生しない状態で動作していることがわかる。また、ブロ−ドキャスト方式によって共有バス上でやりとりされる情報もライトサイクルのみとなっており、かつ、共有メモリ上でのバスサイクルにアクセス競合等によるアクセス時間の損失やオ−バ−ヘッドが生じていないため、共有バス側もプロセッサ側も1ステ−トでバスサイクルを終了することが可能となっている。
【0201】
このことは、理論的に最高効率の共有メモリシステムを提供できていることを示している。例えば、本例のバス効率を有するプロセッサシステムが、すべてのデ−タの入出力を共有メモリシステムを介して行なうような共有メモリシステムに対して最もシビアな状態をもたらすアプリケ−ションをそのプロセッサシステムの上で実行した場合でも、3台のプロセッサまでならば、全くオ−バ−ヘッド無く処理できるレベルの能力を本発明の共有メモリシステムは有していると考えられる。
【0202】
これは、全バスサイクルにおいてライトサイクルの占める割合の平均はおよそ30%程度であることが知られており、3台のプロセッサ分のライトサイクル数ならば、たとえそれらがすべて共有メモリへのアクセスであったとしても、本発明の共有バスシステムは十分吸収できる(共有バスシステムはライトサイクルのみをサポ−トするので、システム上でのライトサイクルの発生の頻度がその性能を決定する)レベルにあるからである。
【0203】
次に、本共有メモリシステムを用いた場合、現実のマルチプロセッサシステムでは何台までのプロセッサを有効に接続可能かを検討しておく。
【0204】
本共有メモリシステムを用いることにより、3台まではシステムの性能にほとんど影響無くプロセッサを接続可能な事は前述した検討にて示した。しかし、この検討では、システム内の各プロセッサが共有メモリシステムに対して最悪に近い条件でのアクセスをランダムに行なった場合を想定しており、しかも、プロセッサはすべてのプロセッササイクルで共有メモリを常にアクセスしていると仮定しているため、現実的とは言えない。
【0205】
実際には、プロセッサの内部命令処理(例えばレジスタ間演算)が平均1プロセッサクロックで処理され、メモリ等、外部へのアクセスを伴う処理が最良2プロセッサクロック(内1プロセッサクロック分が外部デ−タアクセス時間)で処理されるとすると、50%の命令が外部アクセスを伴うとして、1命令当たり平均1.5プロセッサクロックの処理時間となる。
【0206】
すなわち、1命令当たり、外部デ−タのアクセスに要する平均のプロセッサクロック数は0.5クロックであり、全バスバンド(1デ−タ当たり1プロセッサクロックでアクセスできるとしている)に占める割合は33%(0.5/1.5×100%)である。そして、外部アクセスを伴う命令のうち、密結合のマルチプロセッサシステムにおいて、一般的なアプリケ−ションでは10%〜30%が共有メモリシステムへのアクセスとなる。
【0207】
疎結合のシステムでは、一般的に、共有メモリシステムへのアクセスは僅か1%以下であることが多いが、従来のシステムではそれでも通信オ−バ−ヘッドやアクセス競合によるシステムの性能損失が無視できないレベルにあるのが現状である。従来の密結合マルチプロセッサシステムでは、共有メモリシステムへのアクセス頻度が10%程度のものでも3〜4台のプロセッサを接続すると著しくシステム性能が低下してしまう。
【0208】
上記のプロセッサ性能を前提とするという条件下で本共有メモリシステムを用いた場合、プロセッサ側からみた共有メモリシステムへのランダムアクセス頻度が前外部アクセスの10%程度とし、その30%がライトサイクルであると仮定すれば、本共有メモリシステムの特性上、実質的な共有メモリへのアクセス頻度(共有バスシステムの専有率に等しい)は、1プロセッサ当たり僅か1%(0.5×0.1×0.3/1.5×100%)程度となる。共有メモリシステムへのランダムアクセス頻度が全外部アクセスの30%程度と仮定しても、実質的な共有メモリへのアクセス頻度は3%(0.5×0.3×0.3/1.5×100%)程度である。
【0209】
これは、本共有メモリシステムを1組備えれば、30〜100台程度のプロセッサから成る密結合マルチプロセッサシステムを有効に動作させることが可能となることを示している。従来技術と本技術とを比較すると、3〜4台から100台程度のプロセッサ数を備えたシステムにおいて、本システムの優位性が顕著に現われると考えられる。
【0210】
上記の検討は、本共有メモリシステムを1組だけ備えた場合の性能を評価したものであるが、本共有メモリシステムを複数組み備え、各共有メモリシステムへ共有デ−タをうまく分散して配置すれば、さらに共有メモリシステムの組数倍のプロセッサ台数をサポ−トすることが可能となる。
【0211】
ランダム性の高い共有デ−タを前記複数組の共有メモリシステムに平均的に分散するのであれば、アドレス値を前記共有メモリシステムの組数で除した時の余りで共有メモリシステムの各組みをナンバリングして、同一の余りの値を有するアドレス群をその余りの値に対応するナンバを有する共有メモリシステムに割り付ける等の方法によって、共有メモリを前記複数の組に対応してインタ−リ−ブする方式が有効である。
【0212】
共有デ−タの機能や用途、使用方法等が分類できるのであれば、その分類の単位で最適化して別々の共有メモリシステムを設けて共有デ−タを機能分散し、全体のアクセスが各共有メモリシステムに対して平均的に分散されるように設計することも可能である。
【0213】
次に図10を用いて、プロセッサ間同期処理回路1000と連動して、図8に示したインタ−ロック回路によって同期処理完了時刻と共有メモリ上で適正にデ−タが有効になる時刻との正合性を取る局所的な同期処理機能を有効にした場合の共有メモリアクセスタイミング例を示す。条件は、前記局所同期機能が働いていること以外は、図9と全く同様である。
【0214】
プロセッサ(A)側のバスステ−トはステ−トS3の最後まで、プロセッサ(B)側のバスステ−トは最後まで、図9と同じタイミングで動作している。異なるのは、同期処理回路1000からの同期完了情報であるSYNCOK信号がアクティブに転ずるステ−トS3以後のプロセッサ(A)側の動作と、それに伴って変化するステ−トS6以後の共有バスシステム上のライトサイクルとステ−トS4以後の共有メモリ上のリ−ド及びライトサイクルである。
【0215】
プロセッサ(A)は、ステ−トS2でのアドレスA5に対するライトサイクルを生成した後そのバスサイクルと並行に、同期処理回路1000へもプロセッサ(B)との同期を取るための同期要求(SREQ)を、ステ−トS3の先頭で生成している。この時点が、プロセッサ(A)のタスクの完了時点とみなすことができ、ステ−トS3以前に生成された共有メモリへのライトサイクル(アドレスA1とA5に対するライトサイクル)が、前記タスクで処理され他のプロセッサでも利用する可能性のある結果デ−タであると考えられる。
【0216】
その同期要求(SREQ)を同期処理回路が受けると、一度プロセッサ(A)に対するSYNCOK信号を非アクティブレベル(0レベル)に設定し、この時点でプロセッサ(B)がまだ所定のタスク処理を終了していないので図10に示したとおりそのまま非アクティブ状態を保つ。
【0217】
プロセッサ(B)は、ステ−トS4で開始されている共有メモリのアドレスA4へのライトサイクルが、プロセッサ(A)と同期すべきプロセッサ(B)側のタスクにおける共有メモリに対する最後のバスサイクルであり、プロセッサ(B)は、ステ−トS5の先頭でこのバスサイクルと並行に同期処理回路1000に同期要求を生成する。
【0218】
これを受けて、同期処理回路1000は、プロセッサ(A)とプロセッサ(B)との間の同期処理が完了した(同期がとれた)とみなし、直ちにプロセッサ(A)に対する前記SYNCOK信号をアクティブレベル(1レベル)に戻す。このタイミングで、同期処理回路1000は、プロセッサ(B)からの同期要求(SREQ)を受けてプロセッサ(B)に対するSYNCOK信号を一度非アクティブレベルに設定しようとするが、すでにプロセッサ(A)側のタスクは終了しており、それに伴う同期要求(SREQ)も生成されているため、直ちに同期処理が完了してしまい、SYNCOK信号はすぐにアクティブレベルに戻されてしまう。
【0219】
このため、プロセッサ(B)のSYNCOK信号は実質上アクティブ状態を保ちつづけるため、プロセッサ(B)はSYNCOK信号の変化に伴う影響を受けていない。すなわち、プロセッサ(B)の動作効率は図9の例と実質的に同レベルであり、同期処理の影響を受けずに(プロセッサが同期待ちになる等、同期のためのオ−バ−ヘッド等が生じない状態で)最大効率で動作している。
【0220】
このように本発明の実施例では、互いに同期を取り合うべきプロセッサの中で最後に同期要求を出力するプロセッサは処理効率が低下すること無く動作することができる。なお、この様な条件下でも、SYNCOK信号が一度確実に非アクティブレベル(0レベル)に転ずることを保証し、非アクティブレベルのパルスが確実に生成されるようにするためには、同期要求(SREQ)を出力するタイミングを、プロセッサが終了しようとしているタスクの中で共有メモリへの最後のライトサイクルに対応するアドレスを出力するタイミングとほぼ同じにするなど、1/2ステ−ト程度前倒しにすれば良い。
【0221】
図10の例では、プロセッサ(B)が、ステ−トS4でアドレスA4を出力するタイミングに合わせて同期要求(SREQ)を出力する様に設計すれば良い。この様にして、SYNCOK信号のアクティブレベルに転ずるエッヂを保証することは、図8に開示したインタ−ロック回路例において、インタ−ロックを開始する時刻を決めるために重要な条件である。
【0222】
プロセッサ(A)は本来、同期要求(SREQ)をステ−トS3の先頭で生成した後のステ−トS4以後で、実際に同期処理が完了していなくても、共有メモリへのアクセスを伴わない他の処理や次のタスク処理等を先行して実行しておくことができる。これは本システムが、特開平3−234535号公報で開示している局所同期機能と基本的に同様の機能をサポ−トしているからである。
【0223】
しかし、図10の例ではスペ−スの関係で、同期要求(SREQ)を出力した後直ちにステ−トS3で共有メモリのアドレスA4にアクセスしており、その時点でSYNCOK信号は非アクティブ(0レベル)なので、これを受けてプロセッサ(A)側のバスサイクルはステ−トS5以後待ち状態に入って、局所同期が完了するまでD4の値を共有メモリから読み出さない様にしていることがわかる。
【0224】
今回、その局所同期機能に図8に示したようなインタ−ロック機能を追加し、本発明の共有メモリシステムを用いてプロセッサ間同期処理機能と連動させたときのプロセッサ間のデ−タ授受の前後関係について、矛盾が発生しないようにしたところに本発明の特徴があることはすでに述べた。
【0225】
この局所同期の処理方式について、従来のシステムである特開平3−234535号公報の実施例では、図10と同様の共有メモリへのアクセス状況を想定した場合、SYNCOK信号がアクティブレベルに戻るステ−トS5で同期処理が完了したとしてアクティブなRDY−N信号をプロセッサ(A)に返送し、ステ−トS6以後はプロセッサ(A)を次の処理に進めていた。
【0226】
したがって、従来の方法ではステ−トS5の期間1PCLK周期分だけがプロセッサ(A)側の待ち状態となっていたが、本発明の共有メモリシステムを用いることによって共有メモリへのリ−ドサイクルとライトサイクルが並列に実行できるようになり、従来と同様の方式をとると、ライトサイクルのタイミングと無関係に非常に早いタイミングで(ステ−トS5で)プロセッサ(A)側のリ−ドサイクルが実行されてしまい、ステ−トS5の時点では実際に受け取るべきプロセッサ(B)からのアドレスA4に対するD4の値が共有メモリ上でまだ有効な状態になっておらず、プロセッサ(A)が目的とするデ−タを得られなくなってしまう。
【0227】
実際にプロセッサ(B)からのアドレスA4に対応するD4の値が、共有メモリ上で有効となるのはステ−トS6の時点であり、最低限その時刻までプロセッサ(A)側を待たせる必要が生ずる。本発明では、そういったデ−タ授受に関する前後関係の矛盾を、図8に示したようなインタ−ロック回路によって正常化しているのである。
【0228】
次に、図10のタイミング図におけるインタ−ロック回路の動作状態を説明する。ステ−トS3でプロセッサ(A)側の共有メモリ上のアドレスA4に対するリ−ドサイクルが生成されるとすでにS3でSYNCOK信号が非アクティブ状態なので、それを受けて図8のRDY−N信号がステ−トS4で非アクティブ状態に固定される。したがって、プロセッサ(A)側のバスサイクルはステ−トS5以後RDY−N信号がアクティブに転じるまで待ち状態(WAIT CYCLE)に入り、アドレスA4に対するバスサイクルが引き延ばされる(アクティブなRDY−Nが返送されるまでバスサイクルを終了しない)。
【0229】
しかし、プロセッサ(A)は、パイプラインバスサイクルを実行しているため、ステ−トS4ではすでに次のアドレス値(A3)を出力している。このメカニズムについてはすでに述べたとおりである。
【0230】
次に、ステ−トS5では、プロセッサ(B)側の同期要求(SREQ)が同期処理回路1000に対して生成され、それを受けて同期処理回路1000は両者の間で同期がとれ同期処理が完了したものとして、プロセッサ(A)及び(B)に対するSYNCOK信号をアクティブに戻す。この時点でCSBUSY−N信号がアクティブレベル(0レベル)になっているので、そのSYNCOK信号の立ち上がりの変化に応答して、本発明のインタ−ロック回路の機能が働くことになる。
【0231】
インタ−ロック回路はCSBUSY−N信号が一度非アクティブレベル(1レベル)に戻るまでプロセッサ(A)側へのRDY−N信号を非アクティブレベル(1レベル)に保ち続ける。本例では、図8の8004に示したようなフリップフロップを用いてCSBUSY−N信号をPCLKによって1PCLK周期分シフトしてから用いているので、内部的に有効なCSBUSY−N信号は一点鎖線で示した変化のタイミングを有するものと等価と考えて良い。
【0232】
したがって、CSBUSY−N信号が内部的に非アクティブレベルに戻るのはステ−トS7の先頭であり(元となるCSBUSY−N信号はステ−トS6で非アクティブに戻る)、それに応答してS7の広範でプロセッサ(A)に対するRDY−N信号がアクティブになって、プロセッサ(A)は、アドレスA4に対するバスサイクルをステ−トS7の最後のポイントで終了する。
【0233】
本例では、共有メモリへのリ−ドサイクルが生成された時にのみ局所同期機能が働くように、図8のNANDゲ−ト8002と8006にリ−ドイネ−ブル信号RE(アクティブレベル1)を入力しているとして仮定しているため、本発明の局所同期機能によってRDY−Nが非アクティブ状態で固定されるステ−トはS4,S5,S6の3ステ−ト分である。そのうち、ステ−トS4におけるRDY−N信号の制御は、前述した様に、従来の局所同期機能(特開平5−2568)によってもサポ−トされていたものであり、S5,S6におけるRDY−N信号の制御が今回の発明で新たに加わったインタ−ロック回路によって追加された局所同期機能である。
【0234】
これによって、ステ−トS3で生成された共有メモリアドレスA4に対応するD4の値は、ステ−トS7の最後でプロセッサ(A)に取り込まれ、プロセッサ(A)はステ−トS8以後通常の動作(次の処理又は次のタスク)に戻る。なお、ステ−トS4でプロセッサ(A)により生成され待たされていたアドレスA3に対するバスサイクルは、局所同期処理が完了した後のステ−トS8で、プロセッサ(A)が対応するデ−タD3(プロセッサ(B)により書き換えられたデ−タ)を得て終了している。
【0235】
図10に示した実施例では、CSBUSY−N信号を内部的にシフトして用いるのではなく、そのままのタイミング(実線で示したもの)で用いても正しく局所同期処理を実行することができる。すなわち、本来のCSBUSY−N信号の変化タイミングを用いると、ステ−トS6でCSBUSY−N信号が非アクティブに転ずるタイミングに応答してインタ−ロックが解除され、プロセッサ(A)側のデ−タバス(DATA)及びRDY−N信号に点線で示したタイミングで目的とするデ−タD4とアクティブなRDY−N信号とが生成される。
【0236】
これに応答してプロセッサ(A)は、ステ−トS6の最後のポイントでアドレスA4に対応するバスサイクルを終了し、次の処理に進むことになる。
【0237】
本実施例では、デ−タを送信する側のプロセッサから目的のデ−タが共有メモリシステムに対して出力されてから、それが共有メモリ上で有効となり読み出せるようになるまでに僅か1ステ−ト分のレイテンシしか必要としないことはすでに述べた。したがって、共有メモリ上のアドレスA4に対応するデ−タD4をプロセッサ(B)が出力するステ−トS5の次のステ−トS6ではすでに、共有メモリ上でデ−タD4が有効な状態となっているため、プロセッサ(A)側はステ−トS6の最後のポイントでそれを読み出し、ステ−トS7以後は次のサイクルに移行したとしても問題無く動作する訳である。
【0238】
また、CSBUSY−N信号を、内部的に図8に示したORゲ−ト8007を介して使用するように設計すれば、プロセッサ(B)側がステ−トS3で同期要求(SREQ)を出力して、そのステ−トで直ちに同期が完了したと同期処理回路側で判断し、すぐにSYNCOK信号がアクティブレベルに設定されたとしても、すでにその時点でCSBUSY−N信号はアクティブレベルになっているので、インタ−ロック回路でインタ−ロックするためのタイミングを取り誤ることはない。
【0239】
すなわち、図10で、一点鎖線と実線とを重ね合わせたCSBUSY−N信号(いずれかが0レベルなら0レベルを生成する論理としたCSBUSY−N信号)を内部的に用いるように設計すれば良い。なお、インタ−ロックの終了条件は、単純にCSBUSY−N信号をシフトして用いた場合(一点鎖線の場合)と同等である。
【0240】
前述したように、本来のCSBUSY−N信号を直接用いた場合も、インタ−ロックの開始条件はORゲ−ト8007を用いる場合とほぼ同等である。すべての条件を加味すると、CSBUSY−N信号を図8の信号8008として直接用いる方式が、本実施例の効率を最も高められると判断できる。
【0241】
なお、前述したように、特開平5−2568号公報の実施例では、図6に示した1ポ−トの共有メモリユニットを用いており、共有メモリへのリ−ドサイクルとライトサイクルとが競合した場合にはリ−ドサイクルを待たせライトサイクルを優先することによって、プロセッサ間同期処理機構と連動したときでも結果的にプロセッサ間でのデ−タ授受に矛盾が生じないようになっている。
【0242】
なぜなら、同期処理回路が同期完了情報(SYNCOK)を生成した時にはすでに,対象となるプロセッサは共有メモリシステムに対する必要なライトサイクルを全て生成し終わっているはずであり、リ−ドサイクルよりライトサイクルが優先されていれば、それらのライトサイクルによって各プロセッサの全ての共有メモリの内容が変更されるまでプロセッサ側が無条件で待たされることになるためである。
【0243】
すなわち、ここで説明したインタ−ロック機能は、2ポ−ト共有メモリユニットを用いてアクセス効率を改善したことによってプロセッサ間のデ−タ授受が高速化されたことに伴う副作用を抑え込むためのものであるといえる。
【0244】
最後に、共有メモリシステムの各論理回路部をLSI(集積回路)化する場合について、その機能の分割方法として採り得る方策を以下に述べる。
【0245】
i)メモリユニット2006や3006を1チップ又は複数チップのLSI(集積回路)にまとめる。すなわち、メモリセル(例えば図4に開示したようなセル)を複数個備え、少なくとも読み出しデ−タ(DO)出力ピンとそれに対応する読み出しアドレス(RA)入力ピンと、書き込みデ−タ(DI)入力ピンとそれに対応する書き込みアドレス(WA)入力ピンと、指定された前記書き込みアドレス(WA)対応するメモリセルに前記デ−タDIの書き込みを指令する書き込みイネ−ブル(WE)信号入力ピンとを具備し、前記メモリセルを前記書き込みアドレスWA及び読み出しアドレスRAに対応させて配置し、前記WAの指定に対応した少なくとも1つのメモリセルの入力(D)側に前記書き込みデ−タ入力ピンから得た書き込みデ−タDIの少なくとも1bitを設定し、前記WEに対応して生成されたライト信号(WR)によってその書き込み対象となったメモリセルにラッチする手段と、前記RAの指定に対応した少なくとも1つのメモリセルの出力(Z)を選択し、前記読み出しデ−タDOの少なくとも1bitとして前記デ−タ出力ピンに出力する手段とを有するメモリLSIを製作する。
【0246】
また、前記メモリLSIには、書き込みイネ−ブル(WE)信号入力ピンがアクティブレベルのとき、書き込みアドレス(WA)入力ピンと読み出しアドレス(RA)入力ピンに与えられたアドレス値が同一の場合、書き込みデ−タ(DI)入力ピンに指定された値を読み出しデ−タ(DO)出力ピン側に透過して出力する機能を設けておく。
【0247】
ii)各プロセッサに対応して設ける共有メモリシステム1010〜101nの各々をそれぞれ1つのLSIにまとめる。共有メモリシステム内の2ポ−ト共有メモリ2006は、i)に示したものと同一機能のものをこの共有メモリシステムLSIに集積するか、又は、共有メモリシステムLSI内に集積するのでは無く、i)に示した1チップメモリLSI又は複数チップのメモリLSIで別システムとして構成し、共有メモリシステムLSIとDI,DO,RA,WA,WEピンを介して接続して使用する。この場合、前記メモリLSIとの接続信号DI,DO,RA,WA,WEを共有メモリシステムLSI入出力ピンとして設けておく必要がある。
【0248】
さらに、共有バスシステムへのアクセススイッチを行なう入出力バッファシステム2015〜2017等を別の1チップLSI又は複数チップLSIとして構成しても良い。
【0249】
iii)共有メモリコントロ−ルユニット2010を1チップLSIとして構成し、共有メモリシステム1010〜101n中の共有メモリコントロ−ルユニット2010を除いた部分を、2ポ−ト共有メモリ2006や共有バスシステムへの入出力バッファシステム2015〜2017等も含めて、さらに別の1チップLSIとして構成する。そして共有メモリや共有バスシステムへのアクセス制御信号のレベルで前記2つのLSIを接続して使用する。
【0250】
以上に述べてきた実施例によれば、以下の効果が得られる。
【0251】
(1)共有メモリシステム内の共有メモリに独立並行に操作可能な2ポ−ト(読み出しポ−トと書き込みポ−トから成る)のメモリユニットを用いている。これにより、共有メモリへのリ−ドサイクルとライトサイクルを並行に実行でき、共有メモリ間のデ−タ一致処理やプロセッサ間のデ−タ転送処理にかかるレイテンシを短縮できると共に、プロセッサ間のアクセス競合によるロスを大幅に減らすことが出来るため共有メモリシステムに対するト−タルのスル−プットも向上させる効果がある。
【0252】
(2)共有システム全体を1つのクロックに同期させることによって、非同期回路を同期化させるためのオ−バ−ヘッドを除去でき、通信レイテンシを改善できる効果がある。
【0253】
(3)プロセッサ間の同期処理回路と、共有メモリシステムとを連動して動作させる場合、同期処理によって管理されるタスク間で目的とするタスクによって生成された情報を共有メモリを介して確実にやりとりできることを保証するために、同期処理回路から同期の完了が通知されてから実際に共有メモリ上の情報が目的に対して有効な状態に書き替わるまでの期間、プロセッサのリ−ドサイクルを待たせる局所同期用インタ−ロック回路を具備している。これにより、プロセッサ間の同期処理をタスク間のデ−タの受け渡しの妥当性も保証した形で確実に矛盾なく行うことができ、プロセッサが古い情報を得て誤処理を行わないように自動的に管理できる効果がある。
【0254】
【発明の効果】
本発明によれば、メモリユニット又はメモリLSIのメモリセルに対するデータの書き込み処理と読み出し処理とを並行して行う手段を備えたことにより、メモリユニット又はメモリLSI上でのデータの読み出しサイクルと書き込みサイクルとのアクセス競合を低減することができる。
【0255】
これによって、アクセス競合を低減した並列型処理装置を提供することができる。またはこのような装置で使用され得るメモリLSIを提供することができる。 また、協調して処理を行う各処理装置を監視し、これらの処理装置での処理が全て終了したことを受けて前記処理装置によるメモリユニットからデータの読み出しを行う手段を備えたことにより、各処理装置が誤ったデータを得て誤った処理結果を生成することを防ぐことができる。
【図面の簡単な説明】
【図1】本発明の共有システムア−キテクチャを示す図である。
【図2】各プロセッサに対応する共有メモリシステム内ア−キテクチャを示す図である。
【図3】本発明のメモリユニットとコントロ−ルユニットを示す図である。
【図4】本発明のメモリユニット内のメモリセルとデコ−ダの詳細を示す図である。
【図5】本発明のPCLKとBCLKを同期化し、2ポ−ト共有メモリを用いた場合の共有メモリアクセス制御を示す図である。
【図6】本発明のPCLKとBCLKを同期化した場合の共有メモリアクセス制御を示す図である。
【図7】従来の方式による共有メモリアクセス制御を示す図である。
【図8】本発明の同期信号と連動したレディ信号生成回路を示す図である。
【図9】本発明の共有メモリシステムのアクセスタイミングを示す図である。
【図10】本発明の共有メモリシステムをプロセッサ間同期機構と連動させた時のアクセスタイミングを示す図である。
【符号の説明】
1110〜111n…プロセッサ、1010〜101n…各プロセッサに対応する各共有メモリ、1020…ア−ビタ回路、1000…同期処理回路、2006…2ポ−ト共有メモリ、2010…共有メモリコントロ−ルユニット、3006…メモリユニット、3101…メモリセル、3010…コントロ−ルユニット。
Claims (6)
- 複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、
対応する処理装置と共有バスシステムとから送られてくるデータのいずれかを選択し、アドレスを指定して、メモリユニット内のメモリセルに書き込むデータ入力手段と、このデータ入力手段によるデータの書き込み動作中に、メモリセルを前記処理装置からのアドレスで指定して、前記処理装置に対してデータを読み出すデータ出力手段と、処理装置が対応するメモリユニット内のメモリセルに書き込むデータを前記共有バスシステムに出力するライト情報出力手段と、を備えたことを特徴とする共有メモリシステム。 - 複数の処理装置と共有バスシステムとの間に前記複数の処理装置に対応して設けられ、対応する処理装置の処理結果を記憶するとともに、前記共有バスシステムを介して得られる他の処理装置の処理結果を記憶するメモリユニットを備え、処理装置が他の処理装置の処理結果をこの対応するメモリユニットから得られるようにした共有メモリシステムにおいて、
対応する処理装置と共有バスシステムとから送られてくるデータ及びアドレスのうちいずれか一方のデータ及びアドレスを選択する選択手段と、処理装置から対応するメモリユニットに送られてその中のメモリセルに書き込まれるデータを、前記共有バスシステムに出力するライト情報出力手段と、メモリユニットに、アドレスによって指定できる複数のメモリセルと、前記共有バスシステムまたは処理装置のいずれかからのデータを書き込むアドレスを指定するライトアドレス指定手段及び指定されたアドレスのメモリセルにデータを書き込む書き込み手段と、前記各手段によるデータの書き込み動作中に、前記処理装置からのアドレスでメモリセルを指定して前記処理装置に対してデータを読み出すことができるリードアドレス指定手段及びデータの読み出し手段と、を備えたことを特徴とする共有メモリシステム。 - 請求項1に記載の共有メモリシステムにおいて、処理装置が対応するメモリユニットからデータを読み出すタイミングと共有バスシステムからのデータをメモリユニットに書き込むタイミングとを一つの基準クロックに同期させる同期制御手段を設けたことを特徴とする共有メモリシステム。
- 請求項1に記載の共有メモリシステムにおいて、処理の終了によって非アクティブからアクティブに転じる同期要求信号を出力する手段を各処理装置に設けると共に、協調して処理を行う各処理装置からの同期要求信号が全てアクティブに転じたことを受けて同期処理完了信号をアクティブに転じ、同期要求信号を出力した処理装置によるメモリユニットからのデータの読み出しを可能にする同期化手段を設けたことを特徴とする共有メモリシステム。
- 請求項4に記載の共有メモリシステムにおいて、同期処理完了信号がアクティブに転じた時点でメモリユニットへの書き込み動作が発生している場合、その書き込み動作が連続して発生している期間、前記メモリユニットからの読み出し処理を禁止する手段を備えたことを特徴とする共有メモリシステム。
- 請求項2に記載の共有メモリシステムにおいて、前記メモリユニットのデータの読み出し手段に、読み出されるデ−タをラッチするリードデ−タラッチを備えたことを特徴とする共有メモリシステム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21844695A JP3661235B2 (ja) | 1995-08-28 | 1995-08-28 | 共有メモリシステム、並列型処理装置並びにメモリlsi |
US08/701,789 US5960458A (en) | 1995-08-28 | 1996-08-26 | Shared memory system |
US09/165,200 US6161168A (en) | 1995-08-28 | 1998-10-02 | Shared memory system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21844695A JP3661235B2 (ja) | 1995-08-28 | 1995-08-28 | 共有メモリシステム、並列型処理装置並びにメモリlsi |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0962563A JPH0962563A (ja) | 1997-03-07 |
JP3661235B2 true JP3661235B2 (ja) | 2005-06-15 |
Family
ID=16720046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21844695A Expired - Lifetime JP3661235B2 (ja) | 1995-08-28 | 1995-08-28 | 共有メモリシステム、並列型処理装置並びにメモリlsi |
Country Status (2)
Country | Link |
---|---|
US (2) | US5960458A (ja) |
JP (1) | JP3661235B2 (ja) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6320785B1 (en) * | 1996-07-10 | 2001-11-20 | Hitachi, Ltd. | Nonvolatile semiconductor memory device and data writing method therefor |
DE19740694A1 (de) * | 1997-09-16 | 1999-03-18 | Siemens Ag | Schaltungsanordnung zur Behandlung von Zugriffskonflikten |
US6965974B1 (en) * | 1997-11-14 | 2005-11-15 | Agere Systems Inc. | Dynamic partitioning of memory banks among multiple agents |
US6163831A (en) * | 1997-11-14 | 2000-12-19 | Lucent Technologies, Inc. | Minimum refractory period in a multiple agent resource sharing environment |
JP2000047994A (ja) * | 1998-07-27 | 2000-02-18 | Fujitsu Ltd | 情報処理装置 |
US6647468B1 (en) * | 1999-02-26 | 2003-11-11 | Hewlett-Packard Development Company, L.P. | Method and system for optimizing translation buffer recovery after a miss operation within a multi-processor environment |
US6542991B1 (en) * | 1999-05-11 | 2003-04-01 | Sun Microsystems, Inc. | Multiple-thread processor with single-thread interface shared among threads |
US6507862B1 (en) * | 1999-05-11 | 2003-01-14 | Sun Microsystems, Inc. | Switching method in a multi-threaded processor |
US6557084B2 (en) * | 1999-07-13 | 2003-04-29 | International Business Machines Corporation | Apparatus and method to improve performance of reads from and writes to shared memory locations |
GB2364867B (en) * | 2000-07-17 | 2003-12-10 | Advanced Risc Mach Ltd | A data processing apparatus and slave interface mechanism for controlling access to a slave logic unit by a plurality of master logic units |
US6735712B1 (en) * | 2000-09-08 | 2004-05-11 | Intel Corporation | Dynamically configurable clocking scheme for demand based resource sharing with multiple clock crossing domains |
US7120155B2 (en) * | 2000-10-03 | 2006-10-10 | Broadcom Corporation | Switch having virtual shared memory |
US6862640B2 (en) * | 2001-04-10 | 2005-03-01 | Texas Instruments Incorporated | Arbitration in local system for access to memory in a distant subsystem |
JP4027133B2 (ja) * | 2002-03-22 | 2007-12-26 | キヤノン株式会社 | 画像処理装置 |
JP2005078481A (ja) * | 2003-09-02 | 2005-03-24 | Toshiba Corp | 半導体システム |
US20050080999A1 (en) * | 2003-10-08 | 2005-04-14 | Fredrik Angsmark | Memory interface for systems with multiple processors and one memory system |
US7073031B1 (en) * | 2003-12-18 | 2006-07-04 | Emc Corporation | Multi-processor system having data coherency |
JP2005250683A (ja) * | 2004-03-02 | 2005-09-15 | Renesas Technology Corp | マイクロコンピュータ |
US7225278B1 (en) | 2004-04-15 | 2007-05-29 | Xilinx, Inc. | Method and apparatus for controlling direct access to memory circuitry |
US7424553B1 (en) | 2004-04-15 | 2008-09-09 | Xilinx, Inc. | Method and apparatus for communicating data between a network transceiver and memory circuitry |
US7260688B1 (en) * | 2004-04-15 | 2007-08-21 | Xilinx, Inc. | Method and apparatus for controlling access to memory circuitry |
JP4827399B2 (ja) * | 2004-05-26 | 2011-11-30 | ルネサスエレクトロニクス株式会社 | 半導体記憶装置 |
US8291495B1 (en) | 2007-08-08 | 2012-10-16 | Juniper Networks, Inc. | Identifying applications for intrusion detection systems |
US8112800B1 (en) | 2007-11-08 | 2012-02-07 | Juniper Networks, Inc. | Multi-layered application classification and decoding |
KR20100020220A (ko) * | 2008-08-12 | 2010-02-22 | 한국전자통신연구원 | 메모리 공유 제어장치 및 메모리 공유 제어방법, 그리고 공유 메모리 접근방법 |
US9398043B1 (en) | 2009-03-24 | 2016-07-19 | Juniper Networks, Inc. | Applying fine-grain policy action to encapsulated network attacks |
JP5307755B2 (ja) * | 2010-03-31 | 2013-10-02 | 三菱電機株式会社 | サイクリック通信同期方式 |
KR101744150B1 (ko) * | 2010-12-08 | 2017-06-21 | 삼성전자 주식회사 | 멀티프로세서 시스템의 지연관리 장치 및 방법 |
WO2013095461A1 (en) * | 2011-12-21 | 2013-06-27 | Intel Corporation | Secure direct memory access |
ES2633166T3 (es) * | 2012-03-30 | 2017-09-19 | Vestas Wind Systems A/S | Una turbina eólica con un sistema de memoria reflectiva |
US9001593B2 (en) | 2012-12-21 | 2015-04-07 | Apple Inc. | Apparatus to suppress concurrent read and write word line access of the same memory element in a memory array |
DE112015007104T5 (de) * | 2015-12-10 | 2018-08-02 | Mitsubishi Electric Corporation | Datenverarbeitungsvorrichtung, Datenverarbeitungsverfahren und Datenverarbeitungsprogramm |
US10075416B2 (en) | 2015-12-30 | 2018-09-11 | Juniper Networks, Inc. | Network session data sharing |
KR102568387B1 (ko) * | 2016-02-02 | 2023-08-21 | 삼성전자 주식회사 | 전자 장치 및 그의 데이터 처리 방법 |
US10866902B2 (en) * | 2016-12-28 | 2020-12-15 | Intel Corporation | Memory aware reordered source |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5296836A (en) * | 1976-02-10 | 1977-08-15 | Toshiba Corp | Multiplex data processing system |
US4270167A (en) * | 1978-06-30 | 1981-05-26 | Intel Corporation | Apparatus and method for cooperative and concurrent coprocessing of digital information |
JPS5995660A (ja) * | 1982-11-22 | 1984-06-01 | Nec Corp | デ−タ処理装置 |
US5146607A (en) * | 1986-06-30 | 1992-09-08 | Encore Computer Corporation | Method and apparatus for sharing information between a plurality of processing units |
US4833649A (en) * | 1987-09-08 | 1989-05-23 | Tektronix, Inc. | Multiple port random access memory |
JPH01320564A (ja) * | 1988-06-23 | 1989-12-26 | Hitachi Ltd | 並列処理装置 |
US5025365A (en) * | 1988-11-14 | 1991-06-18 | Unisys Corporation | Hardware implemented cache coherency protocol with duplicated distributed directories for high-performance multiprocessors |
US5136717A (en) * | 1988-11-23 | 1992-08-04 | Flavors Technology Inc. | Realtime systolic, multiple-instruction, single-data parallel computer system |
DE69130630T2 (de) * | 1990-09-14 | 1999-09-09 | Hitachi | Synchrones Verfahren und Gerät für Prozessoren |
JP3008223B2 (ja) * | 1990-09-14 | 2000-02-14 | 株式会社日立製作所 | プロセッサ間の同期処理装置 |
JP2906819B2 (ja) * | 1992-04-13 | 1999-06-21 | 三菱電機株式会社 | 並列計算機及びデータ交換制御装置 |
FR2692698A1 (fr) * | 1992-06-19 | 1993-12-24 | Sgs Thomson Microelectronics | Procédé pour partager une mémoire à accès direct entre deux processeurs asynchrones et circuit électronique pour la mise en Óoeuvre de ce procédé. |
JPH0784863A (ja) * | 1993-09-20 | 1995-03-31 | Hitachi Ltd | 情報処理装置およびそれに適した半導体記憶装置 |
US5940860A (en) * | 1996-07-01 | 1999-08-17 | Sun Microsystems, Inc. | Methods and apparatus for substantially memory-less coherence transformer for connecting computer node coherence domains |
US6148377A (en) * | 1996-11-22 | 2000-11-14 | Mangosoft Corporation | Shared memory computer networks |
US5933857A (en) * | 1997-04-25 | 1999-08-03 | Hewlett-Packard Co. | Accessing multiple independent microkernels existing in a globally shared memory system |
-
1995
- 1995-08-28 JP JP21844695A patent/JP3661235B2/ja not_active Expired - Lifetime
-
1996
- 1996-08-26 US US08/701,789 patent/US5960458A/en not_active Expired - Fee Related
-
1998
- 1998-10-02 US US09/165,200 patent/US6161168A/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6161168A (en) | 2000-12-12 |
JPH0962563A (ja) | 1997-03-07 |
US5960458A (en) | 1999-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3661235B2 (ja) | 共有メモリシステム、並列型処理装置並びにメモリlsi | |
US5586299A (en) | Systems and methods for accessing multi-port memories | |
US7007108B2 (en) | System method for use of hardware semaphores for resource release notification wherein messages comprises read-modify-write operation and address | |
US7650453B2 (en) | Information processing apparatus having multiple processing units sharing multiple resources | |
TWI443675B (zh) | 記憶體系統以及存取記憶體之方法 | |
CN110109847B (zh) | Apb总线多个主设备的仲裁方法、系统及存储介质 | |
US5119480A (en) | Bus master interface circuit with transparent preemption of a data transfer operation | |
US8046505B2 (en) | Systems for implementing SDRAM controllers, and buses adapted to include advanced high performance bus features | |
WO1994009436A1 (en) | Disk array controller having advanced internal bus protocol | |
US20040024943A1 (en) | Generic bridge core | |
US7165133B2 (en) | Multiprocessor system having shared buses, prioritized arbitration, and clock synchronization circuitry | |
JPH01147647A (ja) | データ処理装置 | |
US6892266B2 (en) | Multicore DSP device having coupled subsystem memory buses for global DMA access | |
CN107810492B (zh) | 可配置的邮箱数据缓冲器装置 | |
JPH07105146A (ja) | 共有メモリ装置 | |
Bainbridge et al. | Asynchronous macrocell interconnect using MARBLE | |
CN114746853A (zh) | 存储器与分布式计算阵列之间的数据传输 | |
JPS58222363A (ja) | 共用メモリの割振装置 | |
US6954869B2 (en) | Methods and apparatus for clock domain conversion in digital processing systems | |
US20020057711A1 (en) | External bus arbitration technique for multicore DSP device | |
US8799699B2 (en) | Data processing system | |
US6493775B2 (en) | Control for timed access of devices to a system bus | |
JP3240863B2 (ja) | 調停回路 | |
JP3227575B2 (ja) | 共有資源アクセス制御装置 | |
JPH1185673A (ja) | 共有バスの制御方法とその装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040709 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050215 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050301 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050314 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090401 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100401 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110401 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120401 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120401 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130401 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140401 Year of fee payment: 9 |
|
EXPY | Cancellation because of completion of term |