(57)【特許請求の範囲】
【請求項１】
共通メモリと複数のプロセッサとを共通バスを介して接続し、該共通メモリの同一データ領域へのアクセスを１つのプロセッサのみに許可するマルチプロセッサシステムにおいて、
前記共通メモリにデータを記憶する複数のデータ領域と該データ領域毎の使用中を示す制御情報を記憶する制御情報領域とを設け、
各プロセッサに前記共通メモリと同等の記憶ユニットとアクセス制御部を設け、
アクセス権のないプロセッサの前記アクセス制御部は、前記共通バス上を流れるデータ及びアドレスを監視し、前記共通メモリへの書き込みデータ及び該共通メモリからの読み取りデータを取り込んで自プロセッサ内の前記記憶ユニットに格納する、
ことを特徴とするマルチプロセッサシステム。
【請求項２】
各プロセッサの前記記憶ユニットと前記共通メモリのアドレス空間に同一のアドレスを割り振り、アクセス権のないプロセッサのアクセス制御部は、共通バス上のアドレスが指示する記憶ユニットの記憶域に共通バス上のデータを書込む、
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項３】
各プロセッサのアクセス制御部は、上位ユニットから前記共通メモリにおける所定データ領域へのアクセスが要求されたとき、前記記憶ユニットにおける該データ領域に応じた制御情報を読み取って、他プロセッサが使用中であるか判断し、使用中の場合には共通メモリにアクセスすることなく判断結果を上位ユニットに入力する、
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項４】
前記アクセス権のないプロセッサのアクセス制御部は、前記共通バス上を流れる制御情報及びアドレスを監視し、該制御情報を取り込んで自プロセッサ内の前記記憶ユニットに格納する、
ことを特徴とする請求項１記載のマルチプロセッサシステム。
【請求項５】
共通メモリと複数のプロセッサとを共通バスを介して接続し、該共通メモリの同一データ領域へのアクセスを１つのプロセッサのみに許可するマルチプロセッサシステムにおいて、
前記共通メモリにデータを記憶する複数のデータ領域と該データ領域毎の使用中を示す制御情報を記憶する制御情報領域とを設け、
各プロセッサに前記データ領域と同等の記憶ユニットと、アクセス制御部とを設け、
アクセス権のないプロセッサのアクセス制御部は、前記共通バス上を流れるデータ及びアドレスを監視し、該データを取り込んで自プロセッサ内の前記記憶ユニットに格納する、
ことを特徴とするマルチプロセッサシステム。
【請求項６】
共通メモリと複数のプロセッサとが共通バスを介して接続されたマルチプロセッサシステムにおいて、
前記複数のプロセッサの各々は、
前記共通バスを流れるアドレスに基づいて、前記共通メモリのうち、他のプロセッサによって使用されている記憶領域を特定し、該記憶領域に対するアクセスを行わないようにするとともに、該他のプロセッサが、該共通バスを介して該アドレスに示される該共通メモリの記憶領域へ書き込むデータまたは該記憶領域から読み取るデータを、自プロセッサが有する記憶領域に格納する制御を行う制御部、
を備えたことを特徴とするマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マルチプロセッサに係わり、特に、共有メモリを備えたマルチプロセッサシステムに関する。
【０００２】
【従来の技術】
図9は移動体通信システムの構成図であり、固定網1は市内電話交換機１ａ，１ｂ、中継交換機１ｃ、関門交換機1d等で構成されている。移動網2は、移動体用関門交換機2a、移動機に対してサービスをを提供するための加入者クラスや位置登録情報を管理するホームロケーションレジスタ(HLR)２ｂ、ホームロケーションレジスタ(HLR)を参照して無線制御を行う基地局制御装置(RNC)3a,3b,を決定する移動体交換機２ｃ等で構成されている。
基地局制御装置(RNC) 3a,3bは、上位装置である移動体交換機２ｃやマルチメディア信号処理装置(MPE)４と接続してコマンドを入出力する機能、コマンドに従った処理を行う機能、基地局５ａ，５ｂとの間でデータの送受信を行う機能を備えている。各基地局5a〜5bは管理下のセル内に存在する多数のユーザ装置(移動局)６ａ，６ｂと無線で通信する。固定網1には固定電話機７やPHS用アダプタ8を介してPHS基地局9が接続されている。
【０００３】
基地局制御装置3a~3bはマルチプロセッサ構成になっている。図10は基地局制御装置のマルチプロセッサ構成であり、外部との送受信部は省略している。共通バスであるGバス10にはバス割り当て制御を行うバスアービタ(BCONT)11、複数のプロセッサ(CPU#1〜CPU#n)121~12ｎ、共通メモリカード(CM)13が接続されている。各プロセッサCPU#1〜CPU#nは同一の構成を備え、マイクロプロセッサユニット（MPU）21と、共通メモリカード(CM)13へのアクセスを制御するアクセス制御部(LSI)22を有している。共通メモリカード(CM)13はRAM構成の共通メモリ23と共通メモリコントローラ(CMコントローラ)24を有している。共通メモリ23は多数のデータ記憶領域A〜Nを備えたデータ記憶部GMと、それぞれの記憶領域A〜Nが現在使用中であるか否か、並びに使用中のプロセッサ名を保存する排他制御データ記憶部(セマフォレジスタ)semfを有している。使用中フラグが立っている記憶領域には他のプロセッサはアクセスすることができない。
【０００４】
バスアービタ11と各プロセッサCPU#1〜CPU#n間は図11で示すようにそれぞれ信号線で接続されている。各プロセッサはバスが使用中でないと該信号線よりバス使用権要求信号*BREQjをバスアービタに送出してバス使用権を要求する。バスアービタ11は所定のプロセッサにバス使用権を与える場合には、バス使用使用許可信号＊BGNTjを該プロセッサに送出する。プロセッサはデータ転送中、バスビジー＊BBを出力する必要があり、他のプロセッサはバスビジー＊BBを参照してバス使用中であればバスを使用することが出来ない。
【０００５】
所定のプロセッサ例えばプロセッサCPU#nがバス使用権を得て、データ記憶部GMのデータ記憶領域GM-Aにアクセスする場合、該データ記憶領域GM-Aが使用中でなければ対応するセマフォレジスタsemfの記憶領域ａに使用中フラグ(排他制御フラグ)を立てる。しかる後、プロセッサCPU#nはデータ記憶領域GM-Aにアクセスし、データの読み出し、あるいはデータの書き込みを行い、データ記憶領域GM-Aにアクセスする必要が無くなればセマフォレジスタsemfの記憶領域ａに記憶されている排他制御フラグをクリアする。これにより、他のプロセッサCPU#1~CPU#n-1はデータ記憶領域GM-Aにアクセス可能となる。
【０００６】
ところで、従来のマルチプロセッサ処理での共通メモリカードCMへのアクセス方法だと、プロセッサCPU#nが使用中のデータ記憶領域GM-Aへアクセスしたい他のプロセッサCPU#1~CPU#n-1は、バス使用権を得る毎にセマフォレジスタsemfの内容を読み取ってデータ記憶領域GM-Aに応じた排他制御フラグが立っているか否かを調べる必要がある。排他制御フラグが立っていると2μsのタイミング後、同様に排他制御フラグが立っているか調べ、以後、フラグが解除されるまで無限に共通メモリカードCMへのセマフォレジスタsemfのリード命令を実行する。このため、図12に示すようにバスアクセス回数(バス使用回数)が非常に多くなるばかりでなく、このアクセス処理（無限リトライ）の実行回数の増大により、CPUの使用率の急上昇という結果になっていた。そのため、装置本来の能力が十分に発揮されないという結果になっていた。
【０００７】
図13〜図17は従来の共通メモリカードCMへのアクセス制御説明図であり、説明を簡単にするためにプロセッサはCPU#0,CPU#1の2台としている。セマフォレジスタ(排他制御データ記憶部)semfは、共通メモリにおけるデータ記憶領域A〜Ｎのアクセス権を管理し、管理情報として、▲１▼アクセス権獲得中CPU番号と▲２▼獲得中フラグ(排他制御フラグ)を使用する。セマフォレジスタsemfが管理する共通メモリCMのアドレス範囲に関して、semf-aはデータ記憶領域GM-A、semf-bはデータ記憶領域GM-B，．．．，semf-nはデータ記憶領域GM-Nを管理するよう対応している。
【０００８】
所定のデータ領域に対するアクセス権を獲得するには、図13を参照すれば、以下の処理を行う。
▲１▼：CPU#０内のMPU 21からセマフォ獲得するためのリードアクセスが発生する。この時のターゲットは共通メモリカードCM 13の共通メモリ23のセマフォレジスタsemfにあるsemf-aである。
▲２▼：CPU#０内のアクセス制御部(LSI)は▲１▼のアクセス要求を受信し、共通バス10に対してリードアクセスを送出し、共通メモリカードCMからsemf-aの獲得結果の返送を待つ。
▲３▼：CMコントローラ24は共通バス上に送出された前記リードアクセスを受信し、そのアクセスに該当するsemf-aのデータを読み出す。
▲４▼：読み出したsemf-aのデータが未使状態であれば、今回のアクセス元のＣCPU#0が使用中となるような管理情報を付加し、semf-aに対して書き戻す。これにより、semf-aはCPU#0の使用中状態となる。
▲５▼：ついで、CMコントローラ24はsemf-aに書き戻した管理情報を共通バス上に返送データとして送出する。返送データはCPU#０が獲得成功となっている。
▲６▼：CPU#０のアクセス制御部22は共通バス上に返送されたデータを受信し、MPU 21へ中継しセマフォ獲得処理が完了する。この時点でCPU#０はデータ領域GM-Aのアクセス権を獲得したことになる。
【０００９】
以上により、semf-aに応じたデータ領域GM-Aのアクセス権が獲得されれば、CPU#０は図14に示すようにアクセスを開始する。
▲１▼：CPU#０が処理を開始し、その途中で共通メモリ23のデータ領域GM-Aからのデータの読み出し、あるいは書き込みが必要となれば、該データ領域GM-AへのアクセスがMPU 21から送出される。
▲２▼：アクセス制御部22は▲１▼のアクセスを受信し、共通バス10に対してリードアクセスを送出し、共通メモリカードCMのデータ領域GM-Aからの読み出しデータの返送を待つ。なお、例としてリードアクセスを記述する。
▲３▼：CMコントローラ24は共通バス上に送出されたリードアクセスを受信する。
▲４▼：CMコントローラ24は、そのリードアクセスに該当するデータ領域GM-Aのデータを読み出す。ライトの場合にはバス上のデータを受信し、GM-Aに書き込む。
▲５▼：CMコントローラ24は、読み出したデータを共通バス上に返送データとして送出する。
▲６▼：CPU#0のアクセス制御部22は共通バス上に返送されたデータを受信し、MPU 21へ中継する。
以降、CPU#０の処理が終了するまで、▲１▼〜▲６▼が繰り返されることになり、ライトアクセスが発生する毎に、データ領域GM-Aのデータが更新される。
【００１０】
CPU#０のデータ領域GM-Aへのアクセスが不要になれば図15に示すように終了処理が行われる。
▲１▼：CPU#０の処理が終了すれば、MPU21はデータ領域GM-Aのアクセス権を開放するために、開放アクセスをsemf-aに向けて送出する。すなわち、MPU21はsemf-aへのデータ０のライトアクセスを行う。
▲２▼：このライトアクセスは、アクセス制御部22が一旦受信し、突き放し処理により、MPU 21に向けて終了報告をする。この時点で、MPU側の処理は完了するが、後処理をアクセス制御部22が実施する。
▲３▼：ライトアクセスを受信したアクセス制御部22はsemf-a向けのライトアクセスを共通バス上に送出する。
▲４▼：CMコントローラ24は共通バス上に送出されたアクセス（ライトアドレスとデータ）を受信する。
▲５▼：CMコントローラ24は受信したライトデータ（=0）をセマフォレジスタsemfのsemf-aに書き込み、該semf-aを未使用状態に戻す。これにより、以降、他CPUからもデータ領域GM-Nへアクセス可能状態になる。
これら一連の処理により、CPU#０が共通メモリカードCMのデータ領域GM-Aを更新できることになる。
【００１１】
一方、図13の動作でsemf-aに応じたデータ領域GM-AのアクセスがCPU#０により獲得されている状態において、CPU#1よりセマフォ獲得するためのリードアクセスが発生すると、図16に示す処理が行われる
▲１▼：CPU#１内のMPU 21はセマフォ獲得するためのリードアクセスを出力する。この時のターゲットは共通メモリカードCMの共通メモリ23上にあるセマフォレジスタのsemf-aである。
▲２▼：CPU#１内のアクセス制御部22は▲１▼のアクセスを受信すれば、共通バス10に対してリードアクセスを送出し、共通メモリカードCMからsemf-aの獲得結果の返送を待つ。
▲３▼：CMコントローラ24は共通バス上に送出されたリードアクセスを受信し、そのアクセスに該当するセマフォレジスタのsemf-aのデータを読み出す。
▲４▼：ついで、CMコントローラ24は読み出したsemf-aのデータが使用中状態であるか判別する。使用中であるため、アクセス元のCPU#１のセマフォ獲得は失敗となる。なお、管理情報はCPU#０が使用中のため、特に書き戻し処理は発生しない。semf-aはCPU#０使用中状態のままである。
▲５▼：CMコントローラ24はCPU#１に対して、semf-a獲得失敗の情報を共通バス上に返送データとして送出する。返送データはCPU#１がsemf-a獲得失敗となっている。
▲６▼：CPU#１のアクセス制御部22は共通バス上に返送されたデータを受信し、MPU 21へ中継する。
この時点でCPU#１はsemf-aに応じたデータ領域MG-Aへのアクセス権の獲得を失敗したことになり、以後、semf-a（データ領域MG-Aへのアクセス権）が獲得できるまでリトライアクセスを繰り返すことになる。
【００１２】
semf-aに応じたデータ領域MG-Aへのアクセス権がすでにCPU#０により獲得されており、データ領域GM-Aに対してCPU#０がアクセス中である場合、CPU#１がsemf-aへアクセス権獲得のリトライアクセスを繰り返したとき、図17に従って以下の処理が行われる。CPU#０のアクセス処理は図14の▲１▼〜▲６▼と同じである。かかる状態において、CPU#０の処理の合間にCPU#１のセマフォ獲得リトライアクセスが発生すると、▲７▼以降の処理(図16の▲１▼〜▲６▼に相当)が行われる。このため、共通バ
ス10を圧迫させることになる。
その結果、CPU#０から出力されるアクセスが遅延し、CPU#０が獲得しているsemf-aの開放処理が遅れる。また、その期間中もCPU#１からのセマフォ獲得リトライアクセスが発生してしまうことにより、CPU#０，CPU#1両方の処理が遅延することになる。
【００１３】
共通メモリを備えたマルチプロセッサシステムとして、特開平6-274415号公報に開示されたシステムがある。このマルチプロセッサシステムでは、各プロセッサにキャッシュメモリを設け、プロセッサが共通メモリにアクセスしたとき、アクセスの種別(読み/書きの別)及び読み出しあるいは書込んだデータをキャッシュメモリに保存しておき、他装置が共通メモリにデータを書込んだとき、該キャッシュメモリのデータを無効にするものである。このようにすることにより、バス状態を監視することなく、共有メモリとキャッシュメモリの整合性を保持でき、しかも、キャッシュメモリに記憶されているデータにヒットすれば共通メモリをアクセスする必要が無い。
【特許文献１】
特開平6-274415号公報
【００１４】
【発明が解決しようとする課題】
図10~図17に示した従来のマルチプロセッサシステムでは、バスアクセス回数(バス使用回数)が非常に多くなり、使用中プロセッサから出力されるアクセスが遅延し、また、獲得しているsemf-aの開放処理も遅れる。更に、アクセスリトライ処理の実行回数の増大により、CPU使用率の急上昇を招き、スループットを低下させる問題がある。
特開平6-274415号公報のマルチプロセッサシステムは、キャッシュメモリを設ける点で有用性を発生するが、共通メモリへのアクセスが競合する場合の解決方法を与えない。
以上から本発明の目的は、各プロセッサからの共通メモリへのアクセスが競合しても、共通メモリへのアクセス回数を削減して、プロセッサの能力を十分に発揮できるようにすることである。
【００１５】
【課題を解決するための手段】
本発明は、共通メモリと多数のプロセッサとを共通バスを介して接続し、共通メモリの同一データ領域へのアクセスを1つのプロセッサのみに許可するマルチプロセッサシステムである。
このマルチプロセッサシステムにおいて、▲１▼共通メモリにデータを記憶する多数のデータ領域と該データ領域毎の使用中を示す制御情報を記憶する制御情報領域とを設け、▲２▼各プロセッサに前記共通メモリと同等の記憶ユニットとアクセス制御部を設け、▲３▼アクセス権のないプロセッサのアクセス制御部は、共通バス上を流れるデータ及びアドレスを監視し、共通メモリへの書き込みデータ及び共通メモリからの読み取りデータを取り込んで自プロセッサ内の前記記憶ユニットに格納する。即ち、各プロセッサの前記記憶ユニットと共通メモリのアドレス空間に同一のアドレスを割り振り、アクセス権のないプロセッサのアクセス制御部は、共通バス上のアドレスが指示する自分の記憶ユニットの記憶域に共通バス上のデータを書込む。
【００１６】
以上のように構成することにより、各プロセッサの記憶ユニットと共通メモリの内容を同一に出来る。この結果、データ領域のアクセス権を獲得していないプロセッサ装置は、自装置内の記憶ユニットを参照するだけで他のプロセッサ装置が該データ領域を使用しているかわかる。このため、従来のように一々共通バスを介して共通メモリに問い合わせる必要がなく、プロセッサのスループットを向上することができ、しかも、短時間で結果を入手することが出来る。
又、共通バスがビジーとなる状態を少なく出来るため、アクセス権を獲得しているプロセッサは共通メモリから高速にデータの読み出しやデータの書き込みが可能になる。
又、本発明のマルチプロセッサシステムにおいて、所定データ領域のアクセス権を獲得しているプロセッサは、自装置内の記憶ユニットにヒットすれば共通メモリにアクセスする必要がなく、高速に該記憶ユニットから該データを読み取って処理することが出来、プロセッサのスループットを向上することができる。
【００１７】
【発明の実施の形態】
（Ａ）第1実施例
(a)マルチプロセッサシステムの構成
図1は第1実実施例のマルチプロセッサシステムの構成図である。
共通バスであるGバス50にはバス割り当て制御を行うバスアービタ(BCONT)51、複数のプロセッサ(CPU#1〜CPU#n)521~52ｎ、共通メモリカード(CM)53が接続されている。各プロセッサCPU#1〜CPU#nは同一の構成を備え、マイクロプロセッサユニット（MPU）61と、共通メモリカード(CM)53へのアクセスを制御するアクセス制御部(専用LSI)62と、キャッシュメモリ63を有している。
【００１８】
共通メモリカード(CM)５3はRAM構成の共通メモリ71と共通メモリコントローラ(CMコントローラ)72を有している。共通メモリ71は多数のデータ記憶領域A〜Nを備えたデータ記憶部GMと、それぞれのデータ記憶領域が現在使用中であるか否か、並びに使用中のプロセッサ名を保存するセマフォレジスタ(排他制御データ記憶部)semfを有している。データ領域Ａ〜Ｎの使用状況を記憶するセマフォレジスタ部分はsemf-a〜semf-nである。使用中フラグが立っているsemf-jに応じたデータ記憶領域Jには他のプロセッサはアクセスすることができない。
各プロセッサのキャッシュメモリ63は、共通メモリカードCMの共通メモリ71と同一サイズで同一の情報を記憶できるようになっている。すなわち、キャッシュメモリ63は共通メモリ71と同様に、▲１▼データ記憶領域A〜Nを備えたデータ記憶部GM(GMキャッシュ)と、▲２▼各データ記憶領域が現在使用中であるか否か、並びに使用中のプロセッサ名を保存するセマフォレジスタsemf（セマフォキャッシュ）を有している。
【００１９】
バスアービタ11と各プロセッサCPU#1〜CPU#n間は従来例（図11）と同様にそれぞれ信号線で接続されている。各プロセッサはバスが使用中でないと該信号線よりバス使用権要求信号*BREQjをバスアービタに送出してバス使用権を要求する。バスアービタ11は所定のプロセッサにバス使用権を与える場合には、バス使用使用許可信号＊BGNTjを該プロセッサに送出する。プロセッサはデータ転送中、バスビジー＊BBを出力する必要があり、他のプロセッサはバスビジー＊BBを参照してバス使用中であればバスを使用することが出来ない。
【００２０】
(b)本発明の概略動作
本発明の概略動作を説明する。例えばCPU#nからの要求により、CMコントローラ72が該CPU#nにデータ記憶領域ａのアクセス権を与えたとする。かかる場合、CMコントローラ72は、共通メモリカード53のセマフォレジスタsemfのsemf-aに管理情報(使用中フラグ、使用中プロセッサ名)を書込むと共に、該管理情報をCPU#nのセマフォキャッシュ63bのsemf-aに書込むライトアクセスを共通バス50上に送出する。CPU#nのアクセス制御部(専用LSI)62は該管理情報を取り込んでセマフォキャッシュ63bのsemf-aに書込む。このとき、他のCPU#1〜 CPU#n-1は、共通バス上にアドレス/データが流れているか監視しており、該アドレス/データを盗み取りし、あたかも自身への書き込みデータであるかのように取り込んで自身のキャッシュメモリ63のセマフォレジスタ63bのsemf-aに格納する。セマフォsemf-aを解放する場合も同様である。従って、全CPU#1〜 CPU#nおよび共通メモリカードにおけるセマフォレジスタの内容はすべて同じになる。
【００２１】
CPU#nが、共通メモリカード53のデータ記憶領域GM-Aからデータを読み出すとき以下の制御が行われる。すなわち、CPU#nが共通メモリカード53にリードアクセスすると、共通メモリカード53は共通メモリ71よりデータを読み出して共通バス50に送出する。CPU#nは該データを共通バス50を介して受信して内蔵のMPU 61に入力すると共にキャッシュメモリ63のGMキャッシュ63aのデータ領域GM-Aに格納する。この時、他のCPU#1〜 CPU#n-1は、共通バス上にアドレス/データが流れているか監視しており、該アドレス/データを盗み取りし、自身のキャッシュメモリ63のGMキャッシュ63aのデータ領域GM-Aに格納する。
【００２２】
又、CPU#nが、共通メモリカード53のデータ記憶領域GM-Aにデータを書込むとき以下の制御が行われる。すなわち、CPU#nは共通メモリカード53に共通バス50を介してライトアクセスすると共に、自身のキャッシュメモリ63のGMキャッシュ63aのデータ領域GM-Aにライトアクセスにかかわるデータを書込む。また、共通メモリカード53のCMコントローラ72は該ライトアクセスによりデータを共通メモリ71のデータ領域GM-Aに書込む。このとき、他のCPU#1〜 CPU#n-1は、共通バス上にアドレス/データが流れているか監視しており、該アドレス/データを盗み取りし、自身のキャッシュメモリ63のGMキャッシュ63aのデータ領域GM-Aに格納する。
以上により、全CPU#1〜 CPU#nおよび共通メモリカードにおけるデータ記憶部GMの内容が同じになる。
【００２３】
従って、各CPU#1〜 CPU#nは、自身のセマフォレジスタsemfを参照すればデータ格納領域A〜Ｎの使用中の有無を識別でき、従来技術のように共通バスを介して一々共通メモリカードのセマフォレジスタを参照する必要が無くなり、アクセス回数を減少することができる。
又、データ格納領域GM-jのアクセス権を得たCPUはヒットする場合には共通メモリカードにアクセスしなくても、自身のキャッシュメモリのデータ記憶部からデータを読み出すことができ、共通メモリカードへのアクセス回数を減らすことができ、各プロセッサの能力を十分に発揮できるようになる。
【００２４】
（c）本発明の詳細動作
図2は、CPU#0が所定のデータ領域(データ領域Ｎ)に対するアクセス権を獲得する処理の説明図である。なお、各CPU#０〜CPU#1のキャッシュメモリ63及び共通メモリ71には同一アドレスが割り振られている。
▲１▼：CPU#０内のMPU 61はセマフォ獲得するためのリードアクセスを発生する。この時のターゲットは共通メモリカードCM上にあるsemf-ｎである。
▲２▼：アクセス制御部(専用LSI)62は，▲１▼のアクセスを受信すると、CPU#０内のセマフォキャッシュ63bから該当アドレスの状態を読み出す。読み出した結果、他CPUが使用中でなければ、すなわち、空き状態であれば、専用LSI 62は共通バス50に対してリードアクセスを送出し、共通メモリカードCMからのsemf-ｎの獲得結果の返送を待つ。
▲３▼：CMコントローラ72は共通バス上に送出されたリードアクセスを受信し、そのアクセスに該当するsemf-ｎのデータを読み出す。
▲４▼：読み出したsemf-ｎのデータが未使状態であれば、今回のアクセス元のCPU#０が使用中となるような管理情報を作成してsemf-ｎに書き戻す。これにより、semf-ｎはCPU#０使用中状態となる。尚、管理情報に使用中フラグデータ及び使用プロセッサ名を含める。
▲５▼：CMコントローラ72は、semf-ｎに書き戻した管理情報及びキャッシュアドレスを共通バス50上に返送データとして送出する。返送データはCPU#０が獲得成功となっている。
▲６▼：CPU#0の専用LSI 62は共通バス上に返送されたデータを受信し、MPU61へ中継する。この時点でCPU#０はデータ領域GM-Aのアクセス権を獲得したことになる。
▲７▼：また、専用LSI 62はこの時のデータ(管理情報)を、アドレスが指定するセマフォキャッシュ63bのsemf-ｎにも書き込む。これにより、セマフォキャッシュはCPU#０使用中状態を示す。この時点で、CPU#０内のsemf-ｎと共通メモリカードCM内semf-ｎの内容が一致することになる。
▲８▼：一方、CPU#０以外のCPU#１は、▲５▼で共通バス上に送出されているアドレス、データ等を監視しており、その時のアクセスを盗み取りし、CPU#１内の専用LSI 62も受信することになる。
▲９▼：CPU#１内の専用LSI 62は、取り込んだデータを、アドレスが指定するセマフォキャッシュ63bのsemf-ｎに書き込む。この時点で、CPU#０，CPU#１および共通メモリカードCM内のsemf-ｎの内容がすべて一致することになる。
【００２５】
図3は、semf-n(データ領域GM-Nのアクセス権)がCPU#０により獲得されており、CPU#０，CPU#１及び共通メモリカードCM内のsemf-ｎの内容が一致している状態において、CPU#０がデータ領域GM-Nにアクセスする処理説明図である。
▲１▼：CPU#０のMPU 61が処理を開始し、その途中でデータ領域GM-Nからデータを読み出し、あるいはデータ領域GM-Nへデータを書き込む必要が発生した場合、MPU 61はデータ領域GM-Nへのアクセスを出力する。
▲２▼：CPU#０の専用LSI 62は、▲１▼のアクセスを受信し、CPU#０内のGMキャッシュ63aから該当アドレスの状態を読み出す。なお、図にはアドレスの状態を記憶する領域は示していないが、該領域には各アドレスのデータの有効、無効を表示するテータス情報が保持されている。
読み出した結果、該当アドレスのデータが無効であれば、専用LSI 62は共通バス50に対してリードアクセスを送出し、共通メモリカードCMのデータ領域GM-Nからのデータ返送を待つ。
なお、GMキャッシュ63aから読み出したステータ情報がデータの有効を示していれば、GMキャッシュ63aのデータ領域GM-Nからデータを読み出してMPU 61に入力して処理は終了する。
▲３▼：データが無効で、専用LSI 62が共通バス50に対してリードアクセスを送出すれば、CMコントローラ72は共通バス上に送出されたリードアクセスを受信する。
▲４▼：ついで、CMコントローラ72は該当するデータ領域GM-Nのデータを読み出す。
▲５▼：CMコントローラ72は読み出したデータ領域GM-Nのデータとデータ領域GM-Nのアドレスを共通バス上に返送データとして送出する。
▲６▼：CPU#０内の専用LSI 62は共通バス上に返送されたデータを受信し、MPU 61へ中継する。
▲７▼：また、CPU#０内の専用LSI 62はこの時のデータをアドレスが指定するGMキャッシュ63aのデータ領域GM-Nにも書き込む。この時点で、CPU#０内のデータ領域GM-Nと共通メモリカードCM内のデータ領域GM-Nの内容が一致することになる。
▲８▼：以上と並行して、CPU#０以外のCPU#１は、▲５▼で共通バス上に送出されているアドレス、データ等を監視しており、その時のアクセスを盗み取りし、CPU#１内の専用LSI 62も受信することになる。
▲９▼：CPU#１内の専用LSI 62は，共通バスに送出されたデータ領域GM-Nのデータを取り込み、アドレスが指定するGMキャッシュ63a内のデータ領域GM-Nに書き込む。この時点で、CPU#０，CPU#１および共通メモリカードCM内のデータ領域GM-Nの内容がすべて一致することになる。
以降、CPU#０の処理が終了するまで、▲１▼〜▲９▼が繰り返される。また、ライトアクセスが発生する毎に、データ領域GM-Nのデータが更新される。
以降、同様に、各CPU内の専用LSI 62により共通バス上のアクセスが監視されることで、CPU#０，CPU#１および共通メモリカードCM内のデータ領域GM-Nの内容がすべて一致する。
【００２６】
図4はデータ記憶部GMへの書き込みの処理である。
▲１▼：CPU#０が処理を開始し、その途中でデータ領域GM-Nへの書き込みが必要になるとMPU 61は該データ領域GM-Nへのライトアクセスを出力する。
▲２▼：CPU#０の専用LSI 62はそのアクセスを受信した時点で、MPU 61に対して正常応答しMPU間の通信処理を完了させる。ただし、実際には、共通メモリカードCM内のデータ領域GM-Nに対する書き込み処理が完了してないので、専用LSI 62は後処理を継続する。
▲３▼：専用LSI 62は受信したデータ領域GM-Nに書込むデータとデータ領域GM-Nのアドレスを共通バス上に送出する。
▲４▼：▲３▼と同時に専用LSI 62は、CPU#０内のＧＭキャッシュ63aから該当アドレスの状態を読み出す。書き込みの場合は、該当アドレスのデータの無効／有効に関係なくCPU#０のＧＭキャッシュ63a内のデータ領域GM-Nにライトデータを書き込む。
▲５▼：CMコントローラ72は共通バス上に送出されたデータを受信する。
▲６▼：ついで、CMコントローラ72は受信した該当アドレスに対するデータ領域GM-Nに対してライトデータを書き込む。
▲７▼：CPU#０以外のCPU#１は、▲３▼で共通バス上に送出されているアドレス、データ等を監視しており、その時のアク セスを盗み取りし、CPU#１内の専用LSI 62がこれらアドレス、データを取り込む。
▲８▼： CPU#１内の専用LSI 62は、盗み取りしたデータをアドレスが指示するGMキャッシュ63aのデータ領域GM-Nに書き込む。この時点で、CPU#０，CPU#１および共通メモリカードCM内のデータ領域GM-Nの内容が一致することになる。
以後、CPU#０からのライト処理が発生するたびに、▲１▼〜▲８▼が繰り返されデータ領域GM-Nのデータが更新される。
以降、各CPU内の専用LSIにより共通バス上のアクセスが監視されることで、各GMキャッシュ63a及び共通メモリカードのデータ記憶部ＧＭの内容が一致することになる。
【００２７】
図5は共通メモリカードのデータ記憶部ＧＭからの読み出しが、CPU#０内のGMキャッシュ63ａにヒットした場合の処理である。
▲１▼：CPU#０が処理を開始し、その途中でデータ領域GM-Nからのデータ読み出しが必要になると、MPU 61は該データ領域GM-Nへのリードアクセスを出力する。
▲２▼：CPU#０の専用LSI 62はそのアクセスを受信した時点で、CPU#０内のGMキャッシュ63aから該当アドレスの状態を読み出す。
▲３▼：専用LSI 62は読み出したデータが有効な場合には、そのデータをMPU 21に対して返送し、リードアクセスを完了する。この場合には、共通メモリカードCMへのリードアクセスは不要なため共通バスへのアクセスもキャンセルされる。
【００２８】
図6はCPU#０がセマフォレジスタ63bのsemf-n に応じたデータ領域GM-Nを使用中において、CPU#１によるsemf-nのセマフォ獲得アクセスが発生した場合の処理である。
▲１▼：CPU#１のMPU 61はsemf-ｎに対するセマフォ獲得アクセスを出力する。なお、この時、semf-ｎはすでにCPU#０によって使用中状態である。
▲２▼：CPU#１の専用LSI 62は、受信したセマフォ獲得アクセスに該当するセマフォキャッシュ63bのアドレスからsemf-ｎを読み出し、CPU#０が使用中状態であることを認識する。
▲３▼：CPU#１の専用LSI 62はMPU 61に対してセマフォ獲得アクセスが失敗したデータを返送する。この時、CPU#１の専用LSI 62は共通メモリカードCMへのセマフォ獲得アクセスが不要となるため、共通バスへのアクセスをキャンセルする。
以後、CPU#１のMPU 61は、CPU#０による使用が終了してセマフォ獲得が成功するまで▲１▼から▲３▼の動作を繰り返す。この間、セマフォ獲得失敗時のリトライアクセスは共通バス上に送出されない。
【００２９】
以上、第1実施例によれば、所定のデータ領域のアクセス権を獲得していないプロセッサ装置は装置内情報を参照するだけで他のプロセッサ装置が該データ領域を使用しているかわかるため、従来のように一々共通バスを介して共通メモリカードに問い合わせる必要がなく、プロセッサのスループットを向上することができ、しかも、短時間で結果を入手することが出来る。
又、第1実施例によれば、所定のデータ領域のアクセス権を獲得しているプロセッサは自装置内のキャッシュにヒットすれば共通メモリカードにアクセスする必要がなく高速にデータを読み取って処理することが出来、プロセッサのスループットを向上することができる。又、アクセス権のないプロセッサにデータの書き込みを禁止させ、データの読み取りを可能とすれば、他のプロセッサも自装置内のキャッシュにヒットすれば共通メモリカードにアクセスする必要がなく高速にデータを読み取って処理することが出来、プロセッサのスループットを向上することが可能となる。
又、共通バスがビジーとなる状態を少なくできるため、アクセス権を獲得しているプロセッサは共通メモリから高速にデータの読み出しやデータの書き込みが可能になる。
【００３０】
（B）第2実施例
図7は本発明の第2実施例の構成図であり、図1の第1実施例と同一部分には同一符号を付している。異なる点は、第2実施例においてキャッシュメモリ63をセマフォキャッシュ63bのみ設け、GMキャッシュ63aを省略した点である。
第２実施例では、セマフォキャッシュ63bに書込む管理情報（使用中フラグデータ及び使用プロセッサ名を含む）が共通バス50上を流れたとき(図2参照)、アクセス権のない他のプロセッサは、該データを盗み取りして自分のセマフォキャッシュ63bに保存する。
第２実施例によれば、第1実施例の図6と同様に、データ領域のアクセス権を獲得していないプロセッサ装置は装置内情報を参照するだけで他のプロセッサ装置が該データ領域を使用しているかわかる。このため、従来のように一々共通バスを介して共通メモリに問い合わせる必要がなく、プロセッサのスループットを向上することができ、しかも、短時間で結果を入手することが出来る。
【００３１】
（C）第3実施例
図８は本発明の第３実施例の構成図であり、図1の第1実施例と同一部分には同一符号を付している。異なる点は、第３実施例においてキャッシュメモリ63をＧＭキャッシュ63aのみ設け、セマフォキャッシュ63bを省略した点である。
第3実施例では、GMキャッシュ63aに書込むデータが共通バス50上を流れたとき(図3、図4参照)、アクセス権のない他のプロセッサは、該データを盗み取りして自分のGMキャッシュ63aに保存する。
第３実施例によれば、データ領域のアクセス権を獲得しているプロセッサは自装置内のキャッシュにヒットすれば共通メモリにアクセスする必要がなく高速にデータを読み取って処理することがが出来、プロセッサのスループットを向上することができる。
又、アクセス権のないプロセッサにデータの書き込みを禁止させ、データの読み取りを可能にすれば、他のプロセッサも自装置内のGMキャッシュ63aにヒットすれば共通メモリにアクセスする必要がなく，高速にデータを読み取って処理がすることが出来、プロセッサのスループットを向上することができる。
【００３２】
（D）変形例
図1の第1実施例では共通メモリカード53を残したが、初期時に、各プロセッサの記憶ユニット63の内容を同一にし、かつ、記憶内容をすべて有効にしておけば、この共通メモリカード53を削除することもできる。この場合、アクセス権を有するプロセッサCPU#nが共通メモリカード(実在しない)へデータを書き込む場合には、自分の記憶ユニット63に該データを書込むと共に、共通バス50にデータとアドレスを送出する。他のプロセッサCPU#1〜CPU#n-1は共通バス上のデータとアドレスを取り込んで自分の記憶ユニット63に書込む。
【００３３】
（付記１）  共通メモリと多数のプロセッサとを共通バスを介して接続し、共通メモリの同一データ領域へのアクセスを1つのプロセッサのみに許可するマルチプロセッサシステムにおいて、
共通メモリにデータを記憶する多数のデータ領域と該データ領域毎の使用中を示す制御情報を記憶する制御情報領域を設け、
各プロセッサに前記共通メモリと同等の記憶ユニットとアクセス制御部を設け、
アクセス権のないプロセッサのアクセス制御部は、共通バス上を流れるデータ及びアドレスを監視し、共通メモリへの書き込みデータ及び共通メモリからの読み取りデータを取り込んで自プロセッサ内の前記記憶ユニットに格納する、
ことを特徴とするマルチプロセッサシステム。
（付記２）  各プロセッサの前記記憶ユニットと共通メモリのアドレス空間に同一のアドレスを割り振り、アクセス権のないプロセッサのアクセス制御部は、共通バス上のアドレスが指示する記憶ユニットの記憶域に共通バス上のデータを書込む、
ことを特徴とする付記1記載のマルチプロセッサシステム。
（付記３）  各プロセッサのアクセス制御部は、上位ユニットから前記共通メモリにおける所定データ領域へのアクセスが要求されたとき、前記記憶ユニットにおける該データ領域に応じた制御情報を読み取って、他プロセッサが使用中であるか判断し、使用中の場合には共通メモリにアクセスすることなく判断結果を上位装置に入力する、
ことを特徴とする付記１記載のマルチプロセッサシステム。
（付記４）  アクセス権のあるプロセッサのアクセス制御部は、上位ユニットから共通メモリにおける所定データ領域からのデータ読み出しが指示されたとき、前記記憶ユニットにおける該データ領域が有効であれば、このデータ領域からデータを読み取って上位装置に入力する、
ことを特徴とする付記１記載のマルチプロセッサシステム。
（付記５）  アクセス権のあるプロセッサのアクセス制御部は、上位ユニットから共通メモリにおける所定データ領域へのデータの書き込みが指示されたとき、前記記憶ユニットのデータ領域にデータを書込むと共に、該データ及び該データ領域に応じたアドレスを共通バスに送出する、
ことを特徴とする付記2記載のマルチプロセッサシステム。
（付記６）  共通メモリと多数のプロセッサとを共通バスを介して接続し、共通メモリの同一データ領域へのアクセスを1つのプロセッサのみに許可するマルチプロセッサシステムにおいて、
共通メモリにデータを記憶する多数のデータ領域と該データ領域毎の使用中を示す制御情報を記憶する制御情報領域を設け、
各プロセッサに前記制御情報領域と同等の記憶ユニットとアクセス制御部を設け、
アクセス権のないプロセッサのアクセス制御部は、共通バス上を流れる制御情報及びアドレスを監視し、該制御情報を取り込んで自プロセッサ内の前記記憶ユニットに格納する、
ことを特徴とするマルチプロセッサシステム。
（付記７）  各プロセッサの前記記憶ユニットと、共通メモリの制御情報領域とに同一のアドレスを割り振り、アクセス権のないプロセッサのアクセス制御部は、共通バス上のアドレスが指示する記憶ユニットの記憶域に共通バス上の制御情報を取り込んで書込む、
ことを特徴とする付記６記載のマルチプロセッサシステム。
（付記８）  各プロセッサのアクセス制御部は、上位ユニットから前記共通メモリにおける所定データ領域へのアクセスが要求されたとき、前記記憶ユニットにおける該データ領域に応じた制御情報を読み取って、他プロセッサが使用中であるか判断し、使用中の場合には共通メモリにアクセスすることなく判断結果を上位装置に入力する、
ことを特徴とする付記６記載のマルチプロセッサシステム。
（付記９）  共通メモリと多数のプロセッサとを共通バスを介して接続し、共通メモリの同一データ領域へのアクセスを1つのプロセッサのみに許可するマルチプロセッサシステムにおいて、
共通メモリにデータを記憶する多数のデータ領域と該データ領域毎の使用中を示す制御情報を記憶する制御情報領域を設け、
各プロセッサに前記データ領域と同等の記憶ユニットと、アクセス制御部を設け、
アクセス権のないプロセッサのアクセス制御部は、共通バス上を流れるデータ及びアドレスを監視し、該データを取り込んで自プロセッサ内の前記記憶ユニットに格納する、
ことを特徴とするマルチプロセッサシステム。
【００３４】
【発明の効果】
以上本発明によれば、所定のデータ領域のアクセス権を獲得していないプロセッサ装置は装置内情報を参照するだけで他のプロセッサ装置が該データ領域を使用しているかわかる。このため、従来のように一々共通バスを介して共通メモリに問い合わせる必要がなく、プロセッサのスループットを向上することができ、しかも、短時間で結果を入手することが出来る。
又、本発明によれば、所定のデータ領域のアクセス権を獲得しているプロセッサは自装置内のキャッシュにヒットすれば共通メモリにアクセスする必要がなく高速にデータを読み取って処理することが出来、プロセッサのスループットを向上することができる。
又、本発明によれば、アクセス権のないプロセッサにデータの書き込みのみを禁止させ、データの読み取りを可能とすれば、他のプロセッサも自装置内のキャッシュにヒットすれば共通メモリにアクセスする必要がなく高速にデータを読み取って処理することが出来、プロセッサのスループットを向上することが可能となる。
又、本発明によれば、共通バスがビジーとなる状態を少なく出来るため、アクセス権を獲得しているプロセッサは共通メモリから高速にデータの読み出しやデータの書き込みが可能になる。
【図面の簡単な説明】
【図１】第1実実施例のマルチプロセッサシステムの構成図である。
【図２】  CPU#0が所定のデータ領域(データ領域GM-Ｎ)に対するアクセス権を獲得する処理の説明図である。
【図３】データ領域GM-Nのアクセス権がCPU#０により獲得されている状態において、該CPU#０がデータ領域GM-Nにアクセスする処理説明図である。
【図４】データ記憶部GMへの書き込みの処理説明図である。
【図５】共通メモリカードのデータ記憶部ＧＭからの読み出しが、CPU#０内GMキャッシュにヒットした場合の処理説明図である。
【図６】  CPU#０がsemf-n に応じたデータ領域GM-Nを使用中において、CPU#１によるsemf-nのセマフォ獲得アクセスが発生した場合の処理説明図である。
【図７】本発明の第2実施例の構成図である。
【図８】本発明の第３実施例の構成図である。
【図９】移動体通信システムの構成図である。
【図１０】従来の基地局制御装置のマルチプロセッサ構成図である。
【図１１】バスアービタと各プロセッサ間の接続図である。
【図１２】従来のバスアクセス回数(バス使用回数)の状況説明図である。
【図１３】従来の共通メモリカードCMへの第1のアクセス制御説明図である。
【図１４】従来の共通メモリカードCMへの第２のアクセス制御説明図である。
【図１５】従来の共通メモリカードCMへの第３のアクセス制御説明図である。
【図１６】従来の共通メモリカードCMへの第４のアクセス制御説明図である。
【図１７】従来の共通メモリカードCMへの第５のアクセス制御説明図である。
【符号の説明】
５０  共通バスであるGバス
５１  バスアービタ(BCONT)
５２1〜５２ｎ  プロセッサ(CPU#1〜CPU#n)
５３  共通メモリカード(CM)
６１  マイクロプロセッサユニット（MPU）
６２  アクセス制御部(専用LSI)
６３  キャッシュメモリ
７１  共通メモリ
７２  共通メモリコントローラ(CMコントローラ)
【図１】
0004170080.tif 000002
【図２】
0004170080.tif 000003
【図３】
0004170080.tif 000004
【図４】
0004170080.tif 000005
【図５】
0004170080.tif 000006
【図６】
0004170080.tif 000007
【図７】
0004170080.tif 000008
【図８】
0004170080.tif 000009
【図９】
0004170080.tif 000010
【図１０】
0004170080.tif 000011
【図１１】
0004170080.tif 000012
【図１２】
0004170080.tif 000013
【図１３】
0004170080.tif 000014
【図１４】
0004170080.tif 000015
【図１５】
0004170080.tif 000016
【図１６】
0004170080.tif 000017
【図１７】
0004170080.tif 000018