(57)【要約】【課題】プロセッサ間のデータ受け渡しを行う場合に、同時アクセスによるデータの取り違えを抑制することができるマルチプロセッサシステムを提供する。【解決手段】第１プロセッサ１０１により第１バンク１０３および第２バンク１０４のうちのいずれかを自プロセッサ１０１および第２プロセッサ１０２がアクセスするかを決定する制御データが書き込まれ、第２プロセッサ１０２から制御データの読み出しのみが可能なアクセスバンク制御レジスタ１１１と、第１または第２のプロセッサからはアクセスバンク制御レジスタに設定された制御データにより割り当てられている第１バンク１０３にのみアクセス可能とする第１メモリコントローラ１１２と、第１または第２のプロセッサからはアクセスバンク制御レジスタに設定された制御データにより割り当てられている第２バンク１０４にのみアクセス可能とする第２メモリコントローラ１１３とを有する。【選択図】      図１
2004157865.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサでメモリを共有するマルチプロセッサシステムであって、
上記メモリは、少なくとも２つ以上の複数のバンクを含み、
上記複数のプロセッサの各々が、上記複数のバンクのいずれにアクセスするかを決定する制御データが設定され、当該制御データは書き換え可能な制御データ設定手段と、
上記各プロセッサからの上記バンク構成を有する上記メモリに対するアクセスが発生した際には、各プロセッサからは、必然的に、上記制御データ設定手段に設定された制御データにより割り当てられているバンクにのみアクセス可能となるような制御を行う制御手段と
を有するマルチプロセッサシステム。
【請求項２】
上記制御データ設定手段に設定される制御データは、上記複数のバンクのうち一つの上記バンクには一つの上記プロセッサからのアクセス、他の一つの上記バンクには、異なるプロセッサからのアクセスを受け付けるように上記制御手段に指示するデータを含む
請求項１記載のマルチプロセッサシステム。
【請求項３】
上記複数のプロセッサのうちの一つの上記プロセッサのみが上記各バンクに対するのアクセスの決定権を有し、当該優位性を持つ一つのプロセッサからのみ上記制御データを上記制御データ設定手段に設定し、
他の上記プロセッサは、上記制御データ設定手段に設定された制御データで割り当てられたバンクをアクセスする
請求項１記載のマルチプロセッサシステム。
【請求項４】
上記一つのプロセッサの優位性の決定は、チップのアーキテクチャとして決定されている
請求項３記載のマルチプロセッサシステム。
【請求項５】
上記一つのプロセッサの優位性の決定は、プロセッサ同士の設定により制御される
請求項３記載のマルチプロセッサシステム。
【請求項６】
上記各プロセッサは、他のプロセッサに対して、即時性のある信号を発行し、アクセス制御に関する情報を伝達する手段を有する
請求項１記載のマルチプロセッサシステム。
【請求項７】
上記各プロセッサは、自分のプロセッサからは書き込みおよび読み出しが可能、他のプロセッサからは読み出しのみが可能な伝達レジスタをそれぞれ有し、
他のプロセッサへのアクセス制御に関する伝達情報を対応する上記伝達レジスタに書き込む
請求項１記載のマルチプロセッサシステム。
【請求項８】
上記各プロセッサは、他のプロセッサに対して、割り込み信号を発行するための割り込みレジスタと、
自分のプロセッサからは書き込みおよび読み出しが可能、他のプロセッサからは読み出しのみが可能な伝達レジスタと
をそれぞれ有する請求項１記載のマルチプロセッサシステム。
【請求項９】
上記各プロセッサは、他のプロセッサへのアクセス制御に関する伝達情報を対応する上記伝達レジスタに書き込んだ後、
上記割り込みレジスタに割り込み信号を設定して、他のプロセッサに伝達情報がある旨を報知する
請求項８記載のマルチプロセッサシステム。
【請求項１０】
上記制御手段は、上記各プロセッサからのバンクへのアクセスを切り替える場合、クロック信号を含めた、バンクにかかわる信号の全てを切り替える
請求項１記載のマルチプロセッサシステム。
【請求項１１】
上記各プロセッサは、それぞれ異なるクロックに同期して動作する
請求項９記載のマルチプロセッサシステム。
【請求項１２】
第１プロセッサと、
第２プロセッサと、
共有メモリを区分けした第１バンクおよび第２バンクと、
上記第１プロセッサにより上記第１バンクおよび上記第２バンクのうちのいずれかを自プロセッサおよび上記第２プロセッサがアクセスするかを決定する制御データが書き込まれ、上記第２プロセッサから制御データの読み出しのみが可能なアクセスバンク制御レジスタと、
上記第１または第２のプロセッサからの上記第１バンクに対するアクセスが発生した際には、上記第１または第２のプロセッサからは、必然的に、上記アクセスバンク制御レジスタに設定された制御データにより割り当てられている第１バンクにのみアクセス可能となるような制御を行う第１メモリコントローラと、
上記第１または第２のプロセッサからの上記第２バンクに対するアクセスが発生した際には、上記第１または第２のプロセッサからは、必然的に、上記アクセスバンク制御レジスタに設定された制御データにより割り当てられている第２バンクにのみアクセス可能となるような制御を行う第２メモリコントローラと
を有するマルチプロセッサシステム。
【請求項１３】
上記第１プロセッサから上記第２プロセッサに伝達すべき内容を書き込みかつ変更可能で、上記第２プロセッサから内容をリード可能な第１伝達レジスタと、
上記第２プロセッサから上記第１プロセッサに伝達すべき内容を書き込みかつ変更可能で、上記第１プロセッサから内容をリード可能な第２伝達レジスタと
を有する請求項１２記載のマルチプロセッサシステム。
【請求項１４】
上記第１プロセッサから上記第２プロセッサに伝達すべき内容を書き込み可能で、上記第２プロセッサから内容を読み出しのみが可能な第１伝達レジスタと、
上記第１プロセッサから上記第２プロセッサに対して割り込み発行するための第１割り込み信号発生レジスタと、
上記第２プロセッサから上記第１プロセッサに伝達すべき内容を書き込み可能で、上記第１プロセッサから内容を読み出しのみが可能な第２伝達レジスタと、
上記第２プロセッサから上記第１プロセッサに対して割り込み発行するための第２割り込み信号発生レジスタと
を有する請求項１２記載のマルチプロセッサシステム。
【請求項１５】
上記第１または第２プロセッサは、他の上記第２または第１プロセッサへのアクセス制御に関する伝達情報を対応する上記第１または第２伝達レジスタに書き込んだ後、
上記第１または第２割り込みレジスタに割り込み信号を設定して、他の上記第２またた第１プロセッサに伝達情報がある旨を報知する
請求項１４記載のマルチプロセッサシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のプロセッサでメモリを共有するマルチプロセッサシステムに係り、特に、複数のプロセッサにより共有されるメモリのアクセス制御に関するものである。
【０００２】
ＡＳＩＣ設計においては、ＬＳＩで要求される機能を達成すべく、１チップに複数のプロセッサを組み込むケースが近年増加してきている。
組み込まれるプロセッサは、要求される処理能力と、プロセッサの規模・消費電力等のバランスを考慮して、異なるプロセッサであったり、クロック周波数、バスシステム（バスアーキテクチャ、ビット幅等）が異なる、という場合も少なくない。
【０００３】
上記のような場合、複数のプロセッサ間でのデータ受け渡し手段の１つとしてメモリを利用する方法が考えられ、システムとしては、以下のような２つの構成方法が知られている。
【０００４】
第１の方法は、共有に展開して、データ交換用のメモリは共有上に置く方法である。
図２０は、この第１の方法を採用したマルチプロセッサシステムの構成例を示す図である。
このマルチプロセッサシステム１０は、図２０に示すように、第１プロセッサ（ＰＲＣ−Ａ）１１、第２プロセッサ（ＰＲＣ−Ｂ）１２、たとえばＳＲＡＭからなる共有メモリ（ＳＲＡＭ）１３、共有バス（ＳＢＳ）１４、第１プロセッサバス（ＢＳ−Ａ）１５、第２プロセッサバス（ＢＳ−Ｂ）１６、共有バスブリッジ（ＳＢＲＧ）１７、および共有アクセスアービタ（ＡＲＢＴＲ）１８を有している。
【０００５】
図２０のマルチプロセッサシステム１０は、各プロセッサ１１，１２からのバスに共有バス１６に接続するためのブリッジ回路１７を持たせ、メモリアクセス自体は共有バス１６に展開し、アクセス要求を時分割して割り当てる方式である。
【０００６】
第２の方法は、プロセッサ間のデータ受け渡しメモリとして、デュアルポートＲＡＭを使用する既設計タイプでも取られた手法である。
【０００７】
図２１は、第２の方法を採用したマルチプロセッサシステムの第１の構成例を示す図である。
【０００８】
このマルチプロセッサシステム２０は、図２１に示すように、第１プロセッサ（ＰＲＣ−Ａ）２１、第２プロセッサ（ＰＲＣ−Ｂ）２２、たとえばデュアルポートＳＲＡＭからなる第１共有メモリ（ＳＲＡＭ１）２３、デュアルポートＳＲＡＭからなる第２共有メモリ（ＳＲＡＭ２）２４、第１プロセッサバス（ＢＳ−Ａ）２５、および第２プロセッサバス（ＢＳ−Ｂ）２６を有している。
【０００９】
図２１のマルチプロセッサシステム２０は、共有メモリとして１ライト／１リード（１Ｗｒｉｔｅ／１Ｒｅａｄ）のデュアルポートＳＲＡＭ２個を使用した場合のケースである。
マルチプロセッサシステム２０において、第１共有メモリ２３は、第２プロセッサ２２からは、第２プロセッサバス２６、ライトポート（ＷＰＯ）２３Ｗを介して書き込み（ライト）専用、第１プロセッサ２１からはリードポート（ＲＰＯ）２３Ｒを介して読み出し（リード）専用のＲＡＭとして機能するように構成されている。同様に、第２共有メモリ２４は、第１プロセッサ２１からは、第１プロセッサバス２５、ライトポート（ＷＰＯ）２４Ｗを介してライト専用、第２プロセッサ２２からは第２プロセッサバス２６、リードポート（ＲＰＯ）２４Ｒを介してリード専用のＲＡＭとして機能するように構成されている。
【００１０】
また、図２２は、第２の方法を採用したマルチプロセッサシステムの第２の構成例を示す図である。
【００１１】
図２２のマルチプロセッサシステム２０Ａは、共有メモリ２７として２ライト／２リード（２Ｗｒｉｔｅ／２Ｒｅａｄ）のデュアルポートＳＲＡＭ１個を使用した場合のケースである。
マルチプロセッサシステム２０Ａにおいて、共有メモリ２７は、第１プロセッサ２２からは、第１プロセッサバス２５、リードライトポート（Ｒ／ＷＰＯ）２７ＲＷ−１を介してリードまたはライトされる。第２プロセッサ２２からはリードライトポート（Ｒ／ＷＰＯ）２７ＲＷ−２を介してリードまたはライトされる。
【００１２】
また、従来のマルチプロセッサシステムとして、共有メモリ内の２つのメモリは、共有メモリという閉じた機能ブロック内で、マスター・スレーブの関係を構築し、片方のプロセッサからのライト／リード（Ｗｒｉｔｅ／Ｒｅａｄ）をもう一方のプロセッサに、比較・伝達することで、アクセスデータを保証しているものがある（特許文献１）。
【００１３】
また、従来のマルチプロセッサシステムとして、共有メモリに対するアクセスを要求の到着順に切り替える調停方式を採用したものもある（特許文献２）。
【００１４】
【特許文献１】
特開平１１−３１２１２６号公報
【特許文献２】
特開２０００−１０９０１号公報
【００１５】
【発明が解決しようとする課題】
ところが、図２０に示すマルチプロセッサシステムは、以下のような不利益がある。
要求が重なった場合の制御用に、バスアクセスのアービタ機能を持たせなければならない。アービタは、プロセッサの個数が増えるにつれ複雑化し、設計が困難となる。
また、バスを時分割するため、プロセッサの数が増えるに従い、オーバーヘッド（アクセス不可時間）が増大してしまう。
また、各プロセッサからのバスと共有バスのブリッジを、それぞれのプロセッサバスに合わせて設計する必要があり、設計にかかる手間が増す。
【００１６】
また、図２１および図２２に示すマルチプロセッサシステムは、以下のような不利益がある。
いずれの場合においても、最大の問題点は、一方のプロセッサの書き込みと他方のプロセッサの読み出しのアドレスが重なったときの解決法である。
単純に、完全にアクセスアドレスが重なった場合のみ回避するのは、どちらか一方を待たせてしまえば良いことから、比較的容易に解決できる。
しかしながら、アクセスレートが異なるバスシステムで、ある瞬間からアクセスが重なった場合には、その時点からデータの更新が入れ替わってしまう事態が発生してしまう。これを避けるためには、プロセッサ同士で、互いのアクセス状況を把握しあわなければならない。
解決策としては、ソフトウェア的に、各プロセッサのアクセスタイミングを決めてしまうことが容易な手段となる。また、デュアルポートＲＡＭはシングルポートＲＡＭに比較して、当然のことながら面積（規模）が大きくなる。さらにデュアルポートＲＡＭは、ＡＳＩＣベンダやプロセスのテクノロジによって、機能・アクセス仕様が異なる場合が多く、この例をそのまま当てはめようとしても、１ライト／１リード（１Ｗｒｉｔｅ／１Ｒｅａｄ）あるいは２ライト／２リード（２Ｗｒｉｔｅ／２Ｒｅａｄ）のデュアルポートＲＡＭが無い場合には、構成・ＲＡＭコントローラの仕様を考え直さなければならない。
【００１７】
また、特許文献１に記載されたマルチプロセッサシステムでは、共有メモリ内の２つのメモリは、共有メモリという閉じた機能ブロック内で、マスター・スレーブの関係を有することから、共有メモリ間バスが必要で、各メモリを必ずアクセスする必要があり、また、比較・転送処理等の煩雑な処理が要することから、アクセス制御の自由度や柔軟性に劣るという不利益がある。
【００１８】
また、特許文献２に記載されたマルチプロセッサシステムでは、上述した図２０のシステムと同様に、アービタ機能を持たせなければならないことから、プロセッサの個数が増えるにつれ複雑化し、設計が困難となる。
【００１９】
本発明の目的は、プロセッサ間のデータ受け渡しを行う場合に、異なるプロセッサからのライト・リードの同時アクセスによる、データの取り違えを抑制することができ、アクセス制御の自由度や柔軟性に優れ、しかも設計が容易なマルチプロセッサシステムを提供することにある。
【００２０】
【課題を解決するための手段】
上記目的を達成するため、本発明の第１の観点は、複数のプロセッサでメモリを共有するマルチプロセッサシステムであって、上記メモリは、少なくとも２つ以上の複数のバンクを含み、上記複数のプロセッサの各々が、上記複数のバンクのいずれにアクセスするかを決定する制御データが設定され、当該制御データは書き換え可能な制御データ設定手段と、上記各プロセッサからの上記バンク構成を有する上記メモリに対するアクセスが発生した際には、各プロセッサからは、必然的に、上記制御データ設定手段に設定された制御データにより割り当てられているバンクにのみアクセス可能となるような制御を行う制御手段とを有する。
【００２１】
本発明では、上記制御データ設定手段に設定される制御データは、上記複数のバンクのうち一つの上記バンクには一つの上記プロセッサからのアクセス、他の一つの上記バンクには、異なるプロセッサからのアクセスを受け付けるように上記制御手段に指示するデータを含む。
【００２２】
本発明では、上記複数のプロセッサのうちの一つの上記プロセッサのみが上記各バンクに対するのアクセスの決定権を有し、当該優位性を持つ一つのプロセッサからのみ上記制御データを上記制御データ設定手段に設定し、他の上記プロセッサは、上記制御データ設定手段に設定された制御データで割り当てられたバンクをアクセスする。
好適には、上記一つのプロセッサの優位性の決定は、チップのアーキテクチャとして決定されている。
また、上記一つのプロセッサの優位性の決定は、プロセッサ同士の設定により制御される。
【００２３】
好適には、上記各プロセッサは、他のプロセッサに対して、即時性のある信号を発行し、アクセス制御に関する情報を伝達する手段を有する。
【００２４】
また、上記各プロセッサは、自分のプロセッサからは書き込みおよび読み出しが可能、他のプロセッサからは読み出しのみが可能な伝達レジスタをそれぞれ有し、他のプロセッサへのアクセス制御に関する伝達情報を対応する上記伝達レジスタに書き込む
【００２５】
好適には、上記各プロセッサは、他のプロセッサに対して、割り込み信号を発行するための割り込みレジスタと、自分のプロセッサからは書き込みおよび読み出しが可能、他のプロセッサからは読み出しのみが可能な伝達レジスタとをそれぞれ有する。
【００２６】
好適には、上記各プロセッサは、他のプロセッサへのアクセス制御に関する伝達情報を対応する上記伝達レジスタに書き込んだ後、上記割り込みレジスタに割り込み信号を設定して、他のプロセッサに伝達情報がある旨を報知する。
【００２７】
また、好適には、上記制御手段は、上記各プロセッサからのバンクへのアクセスを切り替える場合、クロック信号を含めた、バンクにかかわる信号の全てを切り替える。
上記各プロセッサは、それぞれ異なるクロックに同期して動作する。
【００２８】
本発明の第２の観点に係るマルチプロセッサシステムは、第１プロセッサと、第２プロセッサと、共有メモリを区分けした第１バンクおよび第２バンクと、上記第１プロセッサにより上記第１バンクおよび上記第２バンクのうちのいずれかを自プロセッサおよび上記第２プロセッサがアクセスするかを決定する制御データが書き込まれ、上記第２プロセッサから制御データの読み出しのみが可能なアクセスバンク制御レジスタと、上記第１または第２のプロセッサからの上記第１バンクに対するアクセスが発生した際には、上記第１または第２のプロセッサからは、必然的に、上記アクセスバンク制御レジスタに設定された制御データにより割り当てられている第１バンクにのみアクセス可能となるような制御を行う第１メモリコントローラと、上記第１または第２のプロセッサからの上記第２バンクに対するアクセスが発生した際には、上記第１または第２のプロセッサからは、必然的に、上記アクセスバンク制御レジスタに設定された制御データにより割り当てられている第２バンクにのみアクセス可能となるような制御を行う第２メモリコントローラとを有する。
【００２９】
好適には、上記第１プロセッサから上記第２プロセッサに伝達すべき内容を書き込みかつ変更可能で、上記第２プロセッサから内容をリード可能な第１伝達レジスタと、上記第２プロセッサから上記第１プロセッサに伝達すべき内容を書き込みかつ変更可能で、上記第１プロセッサから内容をリード可能な第２伝達レジスタとを有する。
【００３０】
また、好適には、上記第１プロセッサから上記第２プロセッサに伝達すべき内容を書き込み可能で、上記第２プロセッサから内容を読み出しのみが可能な第１伝達レジスタと、上記第１プロセッサから上記第２プロセッサに対して割り込み発行するための第１割り込み信号発生レジスタと、上記第２プロセッサから上記第１プロセッサに伝達すべき内容を書き込み可能で、上記第１プロセッサから内容を読み出しのみが可能な第２伝達レジスタと、上記第２プロセッサから上記第１プロセッサに対して割り込み発行するための第２割り込み信号発生レジスタとを有する。
【００３１】
好適には、上記第１または第２プロセッサは、他の上記第２または第１プロセッサへのアクセス制御に関する伝達情報を対応する上記第１または第２伝達レジスタに書き込んだ後、上記第１または第２割り込みレジスタに割り込み信号を設定して、他の上記第２またた第１プロセッサに伝達情報がある旨を報知する。
【００３２】
本発明によれば、たとえば優位性を持つ一つのプロセッサにより制御データ設定手段に対して、複数のプロセッサの各々が、複数のバンクのいずれにアクセスするかを決定する制御データが設定される。この制御データは制御手段に与えられる。
制御手段では、各プロセッサからのバンク構成を有するメモリに対するアクセスが発生した際には、各プロセッサからは、必然的に、制御データ設定手段に設定された制御データにより割り当てられているバンクにのみアクセス可能となるような切り替え制御が行われる。
具体的には、複数のバンクのうち一つのバンクには一つのプロセッサからのアクセス、他の一つのバンクには、異なるプロセッサからのアクセスを受け付けるように制御される。
この制御により、各プロセッサから見た共有メモリのアドレス領域は、アドレスマップ上では、バンクの区別は存在しない。
【００３３】
このように、本発明によれば、たとえばプロセッサからの設定により、共有メモリを構成する複数のバンクには、その時点で、アクセス対象となるプロセッサを定義する構成によりデータを保証する。このアクセス対象の定義は、上述したように、あらかじめ優位性を定められたプロセッサからの設定によって行われることとしている。この優位性自体も、システム仕様として決めても良いし、ソフトウェア的に定義しても良い。
また、アクセス権の切り替えを司っているのはプロセッサであるという構成上、アクセスの調停はソフトウェア制御となり、要求の到着順に切り替えるのはもちろんのこと、アクセス要求が発生した時点でのシステムの状況により、アクセス権切り替えのタイミング、順位、順序等、自由度を高くすることが可能である。
【００３４】
【発明の実施の形態】
以下、本発明の実施形態を添付図面を参照して詳細に説明する。
【００３５】
第１実施形態
図１は、本発明に係るマルチプロセッサシステムの第１の実施形態を示す構成図である。
本第１の実施形態においては、搭載プロセッサは２つ、共有メモリのバンク構成も２バンクの場合を例に説明する。
【００３６】
本マルチプロセッサシステム１００は、図１に示すように、第１プロセッサ（ＰＲＣ−Ａ）１０１、第２プロセッサ（ＰＲＣ−Ｂ）１０２、たとえばシングルポートＳＲＡＭからなる第１メモリバンク（ＢＮＫ１）１０３、シングルポートＳＲＡＭからなる第２メモリバンク（ＢＮＫ２）１０４、第１プロセッサバス（ＢＳ−Ａ）１０５、第２プロセッサバス（ＢＳ−Ｂ）１０６、第１割り込み信号発生レジスタ（ＩＲＰＴＲＥＧ１）１０７、第２割り込み信号発生レジスタ（ＩＲＰＴＲＥＧ２）１０８、第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９、第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０、アクセスバンク制御レジスタ（ＣＴＬＲＥＧ）１１１、第１メモリコントローラ（ＭＣＴＬ１）１１２、第２メモリコントローラ（ＭＣＴＬ２）１１３、およびローカルバス１１４〜１２７を有している。
これらの構成要素のうち、アクセスバンク制御レジスタ（ＣＴＬＲＥＧ）１１１により制御データ設定手段が構成され、第１メモリコントローラ（ＭＣＴＬ１）１１２および第２メモリコントローラ（ＭＣＴＬ２）１１３により制御手段が構成される。
【００３７】
本第１の実施形態に係るマルチプロセッサシステム１００において、第１プロセッサ１０１は、第１パラメータ伝達レジスタ１０９およびアクセスバンク制御レジスタ１１１に対して読み出し（リード）および書き込み（ライト）が可能で、第２パラメータ伝達レジスタ１１０に対してはリードのみ可能（Ｒｅａｄ  Ｏｎｌｙ）である。
一方、第２プロセッサ１０２は、第１パラメータ伝達レジスタ１０９およびアクセスバンク制御レジスタ１１１に対してはリードのみ可能（Ｒｅａｄ  Ｏｎｌｙ）で、第２パラメータ伝達レジスタ１１０に対してリードおよびライトが可能である。
【００３８】
また、本実施形態においては、第１プロセッサ１０１および第２プロセッサ１０２は、異なる周波数のクロックに同期して動作する。たとえば、第１プロセッサ１０１はクロックＣＬＫ−Ａに同期して動作し、第２プロセッサ１０２はクロックＣＬＫ−Ｂに同期して動作する。
また、本実施形態においては、第１プロセッサ１０１側のバスアーキテクチャと第２プロセッサ側のバスアーキテクチャとは異なる。
また、たとえば第１プロセッサ１０１と第２プロセッサ１０２は、クロック周波数は可変、かつ、異なる周波数でも動作可能な形態で実装することも可能である。
【００３９】
本マルチプロセッサシステム１００は、第１および第２プロセッサ１０１，１０２からのバンク構成を持つ共有メモリに対するアクセスが発生した際には、各プロセッサ１０１，１０２からは、必然的に、その時に割り当てられているバンクにのみアクセス可能となるような制御を行うように構成されている。この制御により、各プロセッサから見た共有メモリのアドレス領域は、アドレスマップ上では、バンクの区別は存在しない。
また、共有メモリの第１および第２のメモリバンク（以下、単にバンクという）１０３，１０４に対するアクセス権の設定は、優位性が決定されている１つのプロセッサ（本実施形態では第１プロセッサ１０１）からのみ制御され、第２プロセッサ１０２からは、メモリアクセス権の制御は行わない。
このように、プロセッサ設定によるアクセス権制御により、アクセス権切り替えのタイミング制御、順位制御は、ソフトウェアにより自在に制御可能となっている。
【００４０】
第１プロセッサ１０１は、アクセスバンク制御レジスタ１１１に、ローカルバス１１４、第１プロセッサバス１０５、およびローカルバス１２０を介して、２つある第１バンク１０３および第２バンク１０４のうちのいずれかを自プロセッサ１０１および第２プロセッサ１０２がアクセスするかを決定する制御データを書き込む。
アクセスバンク制御レジスタ１１１に書き込まれた制御データは、第２プロセッサ１０２によりローカルバス１２１、第２プロセッサバス１０６、およびローカルバス１２６を介して読み出される。第２プロセッサ１０２は、読み出した制御データに基づいてアクセス可能なバンクを認識する。
【００４１】
たとえば、第１プロセッサ１０１によりアクセスバンク制御レジスタ１１１に対して、自プロセッサ１０１に第１バンク１０３を割り当て、第２プロセッサ１０２にバンク１０４を割り当てた場合、図２に示すように、第１プロセッサ１０１が、ローカルバス１１４、第１プロセッサバス１０５、ローカルバス１２２、および第１メモリコントローラ１１２を通してバンク１０３に対してアクセス（リードおよびライト）可能で、第２プロセッサ１０２が、ローカルバス１２６、第２プロセッサバス１０６、ローカルバス１２５、および第２メモリコントローラ１１３を通してバンク１０４に対してアクセス（リードおよびライト）可能である構成となる。
実際にプロセッサ間でデータ受け渡しを行う場合には、第１プロセッサ１０１は、この制御データによるバンク切り替えを繰り返し行うことによって実現する。
【００４２】
第１プロセッサ１０１は、即時性のある信号、本実施形態では、第１割り込み信号を、ローカルバス１１４、第１プロセッサバス１０５、およびローカルバス１１５を介して第１割り込み信号発生レジスタ１０７にセットし、第２プロセッサ１０２に対して第１割り込み信号を発行する。
第１プロセッサ１０１が、第２プロセッサ１０２に対して第１割り込み信号を発行するケースとしては、たとえばデータ受け渡し用共有メモリである第１バンク１０３または第２バンク１０４にアクセスを開始するとき、第１バンク１０３または第２バンク１０４へのアクセスが完了したとき、第１バンク１０３または第２バンク１０４へのアクセス権設定を変更したとき、がある。
【００４３】
また、第１プロセッサ１０１は、第１パラメータ伝達レジスタ１０９に、自プロセッサの状態・リクエストの内容等、詳細情報を伝達するためのパラメータを、ローカルバス１１４、第１プロセッサバス１０５、およびローカルバス１１６を介して書き込む。この第１パラメータ伝達レジスタ１０９に書き込まれた伝達パラメータは、第１割り込み信号の発行先である第２プロセッサ１０２が、ローカルバス１１７、第２プロセッサバス１０６、およびローカルバス１２６を介して読み出す。
第１プロセッサ１０１は、第１割り込み信号発生レジスタ１０７と第１パラメータ伝達レジスタ１０９とを併用する。
具体的には、第１プロセッサ１０１は、第１パラメータ伝達レジスタ１０９の内容を書き換えた後、該当する第１割り込み信号を第２プロセッサ１０２に対して発行する。その後、第２プロセッサ１０２が第１パラメータ伝達レジスタ１０９の内容を読み込むことで、第２プロセッサ１０２に、自プロセッサ１０１の状態・リクエストの内容等、詳細情報を伝達することができる。
【００４４】
第２プロセッサ１０２は、第２割り込み信号を、ローカルバス１２６、第２プロセッサバス１０６、およびローカルバス１２７を介して第２割り込み信号発生レジスタ１０８にセットし、第１プロセッサ１０１に対して第２割り込み信号を発行する。
第２プロセッサ１０２が、第１プロセッサ１０１に対して第２割り込み信号を発行するケースとしては、たとえばデータ受け渡し用共有メモリである第１バンク１０３または第２バンク１０４にアクセスを開始するとき、第１バンク１０３または第２バンク１０４へのアクセスが完了したとき、第１バンク１０３または第２バンク１０４へのアクセス権設定を変更してほしいとき、がある。
【００４５】
また、第２プロセッサ１０２は、第２パラメータ伝達レジスタ１１０に、自プロセッサの状態・リクエストの内容等、詳細情報を伝達するためのパラメータを、ローカルバス１２６、第２プロセッサバス１０６、およびローカルバス１１９を介して書き込む。この第２パラメータ伝達レジスタ１１０に書き込まれた伝達パラメータは、第２割り込み信号の発行先である第１プロセッサ１０１が、ローカルバス１１８、第１プロセッサバス１０５、およびローカルバス１１４を介して読み出す。
第２プロセッサ１０２は、第２割り込み信号発生レジスタ１０８と第２パラメータ伝達レジスタ１１０とを併用する。
具体的には、第２プロセッサ１０２は、第２パラメータ伝達レジスタ１１０の内容を書き換えた後、該当する第２割り込み信号を第１プロセッサ１０１に対して発行する。その後、第１プロセッサ１０１が第２パラメータ伝達レジスタ１１０の内容を読み込むことで、第１プロセッサ１０１に、自プロセッサ１０２の状態・リクエストの内容等、詳細情報を伝達することができる。
【００４６】
第１割り込み信号発生レジスタ１０７およびアクセスバンク制御レジスタ１１１は、第１プロセッサ１０１のコントロールレジスタに相当する。
【００４７】
図３は、第１プロセッサのコントロールレジスタの構成例を示す図である。
このコントロールレジスタは、図３に示すように、ビット０〜７の８ビットで構成され、ビット０（ＬＳＢ）とビット７（ＭＳＢ）の２ビットのみを使用している。
ビット７が第１割り込み信号発生レジスタ１０７に相当するビットであり、ビット０がアクセスバンク制御レジスタ１１１に相当する制御ビットである。
【００４８】
ビット７（ＩＮＴ）は、第２プロセッサ１０２に対して割り込み要求を発生させ、データの転送が完了したことを示すビットである。
たとえば、ビット７に「０」が設定されているときは無効であり、「１」が設定されているときが第２プロセッサ１０２への割り込み要求を発生しているときである。たとえば、ビット７は、「１」を設定した後、自動的に「０」に戻る。
【００４９】
ビット０（ＢＮＫ）は、具体的には、第１バンク１０３および第２バンク１０４のどちらをアクセスするかを制御するビットである。
図４は、バンクアクセス制御ビットに設定される制御データに応じた２つのバンクの２つのプロセッサへの割り当て例を示す図である。
図４に示すように、たとえば本第１の実施形態では、第１プロセッサ１０１がビット０に制御データとして「０」を設定し場合には、第１プロセッサ１０１が第１バンク１０３側をアクセスし、第２プロセッサ１０２が第２バンク１０４側をアクセスする。
一方、第１プロセッサ１０１がビット０に制御データとして「１」を設定し場合には、第１プロセッサ１０１が第２バンク１０４側をアクセスし、第２プロセッサ１０２が第１バンク１０３側をアクセスする。
【００５０】
なお、バンクを切り替える際には、第２プロセッサインタフェースオンレジスタにより、第２プロセッサインタフェースがオンしている必要がある。
【００５１】
図５は、第２プロセッサインタフェースオンレジスタの構成例を示す図である。
この第２プロセッサインタフェースオンレジスタは、図５に示すように、ビット０〜７の８ビットで構成され、ビット０（ＬＳＢ）のみを使用している。
ビット０が第２プロセッサインタフェースのオン・オフを制御するビットである。
たとえば本実施形態では、図６に示すように、ビット０に「０」が書き込まれたときに第２プロセッサインタフェースオフであり、ビット０に「１」が書き込まれたときに第２プロセッサインタフェースオンである。
第２プロセッサインタフェースを使用しない場合は、このビット０に「０」を書き込むことにより、第２プロセッサインタフェースでの消費電力を抑えることができる。
【００５２】
また、第２割り込み信号発生レジスタ１０８およびアクセスバンク制御レジスタ１１１は、第２プロセッサ１０２のコントロールレジスタに相当する。
【００５３】
図７は、第２プロセッサのコントロールレジスタの構成例を示す図である。
このコントロールレジスタは、図７に示すように、ビット０〜１５の１６ビットで構成され、ビット０とビット７の２ビットのみを使用している。
ビット７が第２割り込み信号発生レジスタ１０８に相当するビットであり、ビット０がアクセスバンク制御レジスタ１１１に相当する制御ビットである。
【００５４】
ビット７（ＩＮＴ）は、第１プロセッサ１０１に対して割り込み要求を発生させるビットである。
たとえば、ビット７に「０」が設定されているときは無効であり、「１」が設定されているときが第１プロセッサ１０１への割り込み要求を発生しているときである。たとえばビット７は、「１」を設定した場合、パルスを発生したら自動的に「０」に戻る。
【００５５】
ビット０（ＢＮＫ）は、具体的には、第１バンク１０３および第２バンク１０４のどちらをアクセスするかを制御するビットである。このビット０は読み出し専用である。したがって、第２プロセッサ１０２側から第１バンク１０３および第２バンク１０４を切り替えることはできない。
図８は、バンクアクセス制御ビットに設定される制御データに応じた共有メモリの選択バンクの第２プロセッサへの割り当て例を示す図である。
図８に示すように、たとえば本第１の実施形態では、ビット０に制御データとして「０」が設定された場合には、第２プロセッサ１０２側に第２バンク１０４側が選択されていることを示す。
一方、ビット０に制御データとして「１」が設定された場合には、第２プロセッサ１０２側に第１バンク１０３側が選択されていることを示す。
【００５６】
第１メモリコントローラ１１２は、第１プロセッサ１０１によりアクセスバンク制御レジスタ１１１に設定された制御データに応じて、第１バンク１０３へのアクセスが、第１プロセッサバス１０５に接続された第１プロセッサ１０１側または第２プロセッサバス１０６に接続された第２プロセッサ１０２側となるように切り替え制御を行う。
図４に関連付けた例では、第１メモリコントローラ１１２は、制御データが「０」の場合には、第１バンク１０３へのアクセスを、第１プロセッサバス１０５に接続された第１プロセッサ１０１側に切り替える。一方、第１メモリコントローラ１１２は、制御データが「１」の場合には、第１バンク１０３へのアクセスを、第２プロセッサバス１０６に接続された第２プロセッサ１０２側に切り替える。
第１メモリコントローラ１１２は、第１プロセッサ１０１または第２プロセッサ１０２からの第１バンク１０３へのアクセスの切り替えは、クロック信号を含めた、第１バンク１０３にかかわる信号の全てを切り替える。これにより、第１プロセッサ１０１または第２プロセッサ１０２のバスシステム、クロックの同期に関する制限は無い。
第１メモリコントローラ１１２は、切り替え制御を行った後、担当する第１プロセッサ１０１または第２プロセッサ１０２と第１バンク１０３間におけるアドレス、データ、制御信号等の授受の制御を行う。
【００５７】
第２メモリコントローラ１１３は、第１プロセッサ１０１によりアクセスバンク制御レジスタ１１１に設定された制御データに応じて、第１バンク１０３へのアクセスが、第１プロセッサバス１０５に接続された第１プロセッサ１０１側または第２プロセッサバス１０６に接続された第２プロセッサ１０２側となるように切り替え制御を行う。
図４に関連付けた例では、第２メモリコントローラ１１３は、制御データが「０」の場合には、第２バンク１０４へのアクセスを、第２プロセッサバス１０６に接続された第２プロセッサ１０２側に切り替える。一方、第２メモリコントローラ１１３は、制御データが「１」の場合には、第２バンク１０４へのアクセスを、第１プロセッサバス１０５に接続された第１プロセッサ１０１側に切り替える。
第２メモリコントローラ１１３は、第１プロセッサ１０１または第２プロセッサ１０２からの第２バンク１０４へのアクセスの切り替えは、クロック信号を含めた、第２バンク１０４にかかわる信号の全てを切り替える。これにより、第１プロセッサ１０１または第２プロセッサ１０２のバスシステム、クロックの同期に関する制限は無い。
第２メモリコントローラ１１３は、切り替え制御を行った後、担当する第１プロセッサ１０１または第２プロセッサ１０２と第２バンク１０４間におけるアドレス、データ、制御信号等の授受の制御を行う。
【００５８】
以上の機能を有する第１メモリコントローラ１１２と第２メモリコントローラ１１３は、基本的には同様の構成を有する。
【００５９】
図９は、本第１の実施形態に係るメモリコントローラの具体的な構成例を示す図である。
このメモリコントローラ２００（１１２，１１３）は、図９に示すように、第１バンクコントローラ（ＢＮＫＣＴＬ−Ａ）２０１、第２バンクコントローラ（ＢＮＫＣＴＬ−Ｂ）２０２、第１切り替えスイッチ２０３、および第２切り替えスイッチ２０４を有する。
【００６０】
第１バンクコントローラ２０１は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第１プロセッサ１０１により行うことを示している場合に、第１プロセッサバス（ＢＳ−Ａ）１０５を通して供給される第１プロセッサ１０１によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ（Ｗｒｉｔｅ  Ｅｎａｂｌｅ），ＩＨ（Ｃｈｉｐ  Ｅｎａｂｌｅ）等を受けて所定のタイミングでアクセスすべき第１バンク１０３または第２バンク１０４側に出力し、第１バンク１０３または第２バンク１０４から読み出されたデータを所定のタイミングで第１プロセッサバス（ＢＳ−Ａ）１０５に送出する。
【００６１】
第２バンクコントローラ２０２は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第２プロセッサ１０２により行うことを示している場合に、第２プロセッサバス（ＢＳ−Ｂ）１０６を通して供給される第２プロセッサ１０２によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等を受けて所定のタイミングでアクセスすべき第１バンク１０３または第２バンク１０４側に出力し、第１バンク１０３または第２バンク１０４から読み出されたデータを所定のタイミングで第２プロセッサバス（ＢＳ−Ｂ）１０６に送出する。
【００６２】
第１切り替えスイッチ２０３は、端子ａが第１バンク１０３または第２バンク１０４の入力端子に接続されたバス２０５に接続され、端子ｂが第１バンクコントローラ２０１のバンク側への出力端子に接続されたバス２０６に接続され、端子ｃが第２バンクコントローラ２０２のバンク側への出力端子に接続されたバス２０７に接続されている。
そして、第１切り替えスイッチ２０３は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第１プロセッサ１０１により行うことを示している場合に、端子ａと端子ｂとを接続して、第１バンクコントローラ２０１が所定のタイミングでバス２０６に送出した第１プロセッサ１０１によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等をバス２０５に伝播させて第１バンク１０３または第２バンク１０４に入力させる。
一方、第１切り替えスイッチ２０３は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第２プロセッサ１０２により行うことを示している場合に、端子ａと端子ｃとを接続して、第２バンクコントローラ２０２が所定のタイミングでバス２０７に送出した第２プロセッサ１０２によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等をバス２０５に伝播させて第１バンク１０３または第２バンク１０４に入力させる。
【００６３】
第２切り替えスイッチ２０４は、端子ａが第１バンク１０３または第２バンク１０４のクロック入力端子に接続され、端子ｂが第１プロセッサ１０１用のクロックＣＬＫ−Ａの供給ラインに接続され、端子ｃが第２プロセッサ１０２用のクロックＣＬＫ−Ｂの供給ラインに接続されている。
そして、第２切り替えスイッチ２０４は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第１プロセッサ１０１により行うことを示している場合に、端子ａと端子ｂとを接続して、クロックＣＬＫ−Ａを第１バンク１０３または第２バンク１０４に入力させる。
一方、第２切り替えスイッチ２０４は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第２プロセッサ１０２により行うことを示している場合に、端子ａと端子ｃとを接続して、クロックＣＬＫ−Ｂを第１バンク１０３または第２バンク１０４に入力させる。
【００６４】
このように、本実施形態に係るバンクコントローラ２００は、対応するバンクを、第１プロセッサ１０１または第２プロセッサ１０２のどちらからのコントロールを受け付けるかを選択し、かつ、バンクへのクロックも、それぞれのプロセッサ（バス）に同期したクロックを選択してバンクに分配する。このため、２つのプロセッサのバスアーキテクチャが全く異なったものでも対応が容易で、クロックの同期／  非同期に関係なく、制御を切り替えることができる。
【００６５】
共有メモリを構成する第１バンク１０３および第２バンク１０４は、前述したように、シングルポートＳＲＡＭにより構成される。
【００６６】
図１０は、シングルポートＳＲＡＭの具体的な構成例を示すブロック図である。
このシングルポートＳＲＡＭ３００は、図１０に示すように、メモリセルアレイ（ＭＣＡＲＹ）３０１、ワードラインバッファ（ＷＬＢ）３０２、カラムセレクタ（ＣＳＥＬ）３０３、ローデコーダ（ＲＤＥＣ）３０４、カラムデコーダ（ＣＤＥＣ）３０５、アドレスレジスタ（ＡＲＥＧ）３０６、クロックバッファ（ＣＢＵＦ）３０７、パルスジェネレータ（ＰＧＥＮ）３０８、入力データレジスタ（ＩＤＧ）３０９、出力データバッファ（ＯＤＢ）３１０、ライトアンプ（ＷＡＭＰ）３１１、およびセンスアンプ（ＳＡＭＰ）３１２を有する。
また、図１０において、ＩＡはアドレスレジスタ３０６へのアドレス入力、ＣＫはクロックバッファ３０７に入力されるクロック、ＩＨはローレベルでアクティブのチップイネーブル信号、ＷＥはローレベルでアクティブのライトイネーブル信号、Ｉは入力データレジスタ３０９へのデータ入力、およびＡは出力データバッファ３１０からのデータ出力をそれぞれ示している。
【００６７】
シングルポートＳＲＡＭ３００は、図１１に示すように、動作モードとしては、リード、ライト、セットアップ、およびスタンバイの４つのモードを有する。
【００６８】
図１１に示すように、チップイネーブル信号ＩＨがハイレベルの期間では、クロックＣＫおよびライトイネーブル信号ＷＥのレベルにかかわりなくスタンバイモードとなる。このとき、アドレスレジスタ３０６にアドレスＩＡｘがラッチされ、入力データ（ライトデータ）Ｉｘが入力データレジスタ３０９にラッチされ、出力データバッファ３１０には前回のリード時のデータがラッチされている。
【００６９】
図１１に示すように、チップイネーブル信号ＩＨがローレベルで、クロックＣＫがローレベルの場合、ライトイネーブル信号ＷＥのレベルにかかわりなくセットアップモードとなる。このとき、入力アドレスＩＡｘがアドレスレジスタ３０６に取り込まれ、入力データ（ライトデータ）Ｉｘが入力データレジスタ３０９に取り込まれ、出力データバッファ３１０には前回のリード時のデータがラッチされている。
【００７０】
リードモードでは、クロックバッファ３０７に供給されるチップイネーブル信号ＩＨがローレベル、図１１および図１２（Ｄ）に示すように、ライトイネーブル信号ＷＥがハイレベルで、リードサイクルに入る。
このとき、図１２（Ａ），（Ｂ），（Ｄ）に示すように、クロックＣＫがローベルであり、ライトイネーブル信号ＷＥの立上がりのタイミングから時間ｔＳＡの間、セットアップモードとなり、アドレスレジスタ３０６にアドレスＩＡｘが取り込まれる。
そして、図１２（Ａ），（Ｂ）に示すように、クロックＣＫの立上がりのタイミングでリードモードとなり、クロックＣＫの立上がりから時間ｔＨＡの間に、アドレスＩＡｘがアドレスレジスタ３０６にラッチされる。アドレスレジスタ３０６にラッチされたアドレスは、ローデコーダ３０４およびカラムデコーダ３０５に供給される。
チップイネーブル信号ＩＨ、ライトイネーブル信号ＷＥ、クロックＣＫはクロックバッファ３０７にバッファリングされる。そして、クロックＣＫがパルスジェネレータ３０８に供給されて波形整形され、ローデコーダ３０４およびセンスアンプ３１２に供給される。
ローデコーダ３０４では、供給されたクロックＣＫに同期して動作し、入力アドレスからローアドレスがデコードされワードラインバッファ３０２に供給される。そして、ワードラインバッファ３０２でアドレス指定されたメモリセルが接続されたワードラインが所定時間活性化される。
また、カラムデコーダ３０５では、供給されたクロックＣＫに同期して動作し、入力アドレスからカラムアドレスがデコードされ、カラムセレクタ３０３に供給される。そして、アドレス指定されたメモリセルが接続されたビット線のカラムスイッチがオンにされる。
これにより、アドレス指定されたメモリセルの記憶データがビット線、カラムスイッチを通してセンサアンプ３１２に供給され、ここでセンス増幅されて、出力データバッファ３１０にバッファリングされる。
そして、図１２（Ａ），（Ｃ）に示すように、クロックＣＫの立上がりから所定時間ｔｐｄ経過後に、現在のアドレスのメモリセルからの読み出しデータが出力データバッファ３１０から出力され有効となる。
【００７１】
ライトモードでは、クロックバッファ３０７に供給されるチップイネーブル信号ＩＨがローレベル、図１１および図１３（Ｄ）に示すように、ライトイネーブル信号ＷＥがローレベルで、ライトサイクルに入る。
このとき、図１３（Ａ）〜（Ｄ）に示すように、クロックＣＫがローベルであり、ライトイネーブル信号ＷＥの立下がりのタイミングから時間ｔＳＩの間、セットアップモードとなり、アドレスレジスタ３０６にアドレスＩＡｘが取り込まれ、入力データ（ライトデータ）Ｉｘが入力データレジスタ３０９に取り込まれ。
そして、図１３（Ａ）〜（Ｃ）に示すように、クロックＣＫの立上がりのタイミングでライトモードとなり、クロックＣＫの立上がりから時間ｔＨＡの間に、アドレスＩＡｘがアドレスレジスタ３０６にラッチされる。アドレスレジスタ３０６にラッチされたアドレスは、ローデコーダ３０４およびカラムデコーダ３０５に供給される。同様に、クロックＣＫの立上がりから時間ｔＨＩの間に、入力データ（ライトデータ）Ｉｘが入力データレジスタ３０９にラッチされる。
チップイネーブル信号ＩＨ、ライトイネーブル信号ＷＥ、クロックＣＫはクロックバッファ３０７にバッファリングされる。そして、クロックＣＫが入力データレジスタ３０９に供給され、図１３（Ａ），（Ｃ）に示すように、入力データ（ライトデータ）Ｉｘが入力データレジスタ３０９に保持される。また、クロックＣＫがパルスジェネレータ３０８に供給されて波形整形され、ローデコーダ３０４およびライトアンプ３１１に供給される。
また、アドレスレジスタ３０６にアドレスＩＡｘが保持され、ローデコーダ３０４およびカラムデコーダ３０５に供給される。
ローデコーダ３０４では、供給されたクロックＣＫに同期して動作し、入力アドレスからローアドレスがデコードされワードラインバッファ３０２に供給される。そして、ワードラインバッファ３０２でアドレス指定されたメモリセルが接続されたワードラインが所定時間活性化される。
カラムデコーダ３０５では、供給されたクロックＣＫに同期して動作し、入力アドレスからカラムアドレスがデコードされ、カラムセレクタ３０３に供給される。そして、アドレス指定されたメモリセルが接続されたビット線のカラムスイッチがオンにされる。
また、クロックＣＫに同期してライトアンプ３１１で入力データレジスタ３０９に保持されたライトデータが増幅され、カラムセレクタ３０３に供給される。これにより、ライトデータが、カラムスイッチ、ビット線を通してアドレス指定されたメモリセルに書き込まれる。
このライトモード時には、図１３（Ｅ）に示すように。出力データバッファ３１０には、前回のリード時のデータが保持されている。
【００７２】
図１４（Ａ）〜（Ｆ）は、リードモードおよびライトモード時のクロックがアクティブ（ａｃｔｉｖｅ）になるタイミングに示すタイミングチャートである。
また、図１５（Ａ）〜（Ｆ）は、リードモードおよびライトモード時のクロックがインヒビット（ｉｎｈｉｂｉｔ）  になるタイミングに示すタイミングチャートである。
【００７３】
リードモードにおいて、クロックＣＫがアクティブになるタイミングは、図１４（Ａ），（Ｂ）に示すように、チップイネーブル信号ＩＨがローレベルの期間で、クロックＣＫの立上がりのタイミングである。
図１４（Ａ）〜（Ｃ）に示すように、このクロックＣＫの立上がりのタイミングに応じて入力アドレスＩＡｘがアドレスレジスタ３０６に保持される。
また、図１５（Ａ），（Ｂ）に示すように、リードモードにおいて、チップイネーブル信号ＩＨがハイレベルの期間では、クロックがインヒビットとなる。
このとき、図１４（Ｃ）に示すように、入力アドレスＩＡｘは無効である。
【００７４】
ライトモードにおいて、クロックＣＫがアクティブになるタイミングは、図１４（Ａ），（Ｂ），（Ｅ）に示すように、チップイネーブル信号ＩＨおよびライトイネーブル信号ＷＥがローレベルの期間で、クロックＣＫの立上がりのタイミングである。
図１４（Ａ）〜（Ｅ）に示すように、このクロックＣＫの立上がりのタイミングに応じて入力アドレスＩＡｘがアドレスレジスタ３０６に保持され、入力データＩｘが入力データレジスタ３０９に保持される。
ライトモードでは、図１４（Ａ）〜（Ｆ）に示すように、クロックＣＫの立上がりのタイミングから時間ｔＨＤ経過後に出力データバッファ３１０の出力データは無効となる。
また、図１５（Ａ）〜（Ｅ）に示すように、ライトモードにおいて、チップイネーブル信号ＩＨがハイレベルの期間では、ライトイネーブル信号ＷＥがローレベルの期間であってクロックがインヒビットとなる。
このとき、図１４（Ｃ），（Ｄ）に示すように、入力アドレスＩＡｘ、入力データＩｘは無効である。
【００７５】
次に、図１のマルチプロセッサシステムに動作を、図１６に関連付けて説明する。
ここで、第１プロセッサ１０１と第２プロセッサ１０２との間で割り込み信号を相互に受け渡しするこによる情報伝達動作を中心に説明する。そして、理解を容易にするために、第１プロセッサ１０１が第２プロセッサ１０２に受け渡したいデータがある場合に特定して説明する。
【００７６】
まず前提として、ステップＳＴ１０１において、アクセスバンク制御レジスタ１１１には、アクセス権制御に優位性を有する第１プロセッサ１０１により、自プロセッサ１０１が第１バンク１０３をアクセス（リードおよびライト）し、第２プロセッサ１０２が第２バンク１０４をアクセス（リードおよびライト）することを許容する制御データが書き込まれており、第１プロセッサ１０１は第１バンク１０３にアクセスし、第２プロセッサ１０２は第２バンク１０４をアクセスして通常の処理を行っているものとする。
【００７７】
ここでたとえば、第１プロセッサ１０１が第２プロセッサ１０２に受け渡したいデータがある場合、データ受け渡し用バンクは第１バンク１０３である。
しががって、ステップＳＴ１０２において、第１プロセッサ１０１は、第１バンク１０３に第１メモリコントローラ１１２を介してアクセスし、受け渡しデータを書き込む。
【００７８】
次に、ステップＳＴ１０３において、第１プロセッサ１０１は、第１バンク１０３をアクセスして、受け渡しデータを書き込んだことを示すデータ（パラメータ）を第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９に書き込む（ＴＲＦＲＥＧ１の内容を変更する）。
次いで、ステップＳＴ１０４において、第１プロセッサ１０１は、第１割り込み信号を、第１割り込み信号発生レジスタ１０７にセットし、第２プロセッサ１０２に対して第１割り込み信号を発行する。
第１プロセッサ１０１は第１割り込み信号を発行した後は、通常処理に移行する。
【００７９】
一方、第１割り込み信号を受けた第２プロセッサ１０２は、ステップＳＴ２０１において、アクセスバンク制御レジスタ（ＣＴＬＲＥＧ）１１１および第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９の内容をリードする。
次いで、ステップＳＴ２０２において、第２プロセッサ１０２は、リードしたアクセスバンク制御レジスタ（ＣＴＬＲＥＧ）１１１および第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９の内容を検知する。この場合は、第１バンク１０３から受け渡しデータがあり、第１バンク１０３に書き込んだこと、および、第２プロセッサ１０２がアクセスできるバンクが未だ第２バンク１０４であることを検知（認識）する。
【００８０】
そこで、ステップＳＴ２０３において、第２プロセッサ１０２は、受け渡しデータを受け取る（リード）すべく、バンクのアクセス権を第２バンク１０４から第１バンク１０３に変更してほしい旨のデータ（パラメータ）を第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０に書き込む（ＴＲＦＲＥＧ２の内容を変更する）。
次いで、ステップＳＴ２０４において、第２プロセッサ１０２は、第２割り込み信号を、第２割り込み信号発生レジスタ１０８にセットし、第１プロセッサ１０１に対して第１割り込み信号を発行する。
第２プロセッサ１０２は第２割り込み信号を発行した後は、通常処理に移行する。
【００８１】
第２割り込み信号を受けた第１プロセッサ１０１は、ステップＳＴ１０５において、第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０の内容をリードする。
次いで、ステップＳＴ１０６において、第１プロセッサ１０１は、リードした第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０の内容を検知する。この場合は、第２プロセッサ１０２のバンクのアクセス権を第２バンク１０４から第１バンク１０３に変更することに要望であることを検知（認識）する。
【００８２】
そこで、ステップＳＴ１０７において、第１プロセッサ１０１は、アクセスバンク制御レジスタ１１１に、自プロセッサ１０１が第２バンク１０４をアクセス（リードおよびライト）し、第２プロセッサ１０２が第１バンク１０３をアクセス（リードおよびライト）することを許容する制御データを書き込む。
次に、ステップＳＴ１０８において、第１プロセッサ１０１は、アクセスバンク制御レジスタ１１１に、自プロセッサ１０１が第２バンク１０４をアクセス（リードおよびライト）し、第２プロセッサ１０２が第１バンク１０３をアクセス（リードおよびライト）することを許容する制御データを書き込んだことを示すデータ（パラメータ）を第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９に書き込む（ＴＲＦＲＥＧ１の内容を変更する）。
次いで、ステップＳＴ１０９において、第１プロセッサ１０１は、第１割り込み信号を、第１割り込み信号発生レジスタ１０７にセットし、第２プロセッサ１０２に対して第１割り込み信号を発行する。
第１プロセッサ１０１は第１割り込み信号を発行した後は、通常処理に移行する。
【００８３】
第１割り込み信号を受けた第２プロセッサ１０２は、ステップＳＴ２０５において、アクセスバンク制御レジスタ（ＣＴＬＲＥＧ）１１１および第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９の内容をリードする。
次いで、ステップＳＴ２０６において、第２プロセッサ１０２は、リードしたアクセスバンク制御レジスタ（ＣＴＬＲＥＧ）１１１および第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）１０９の内容を検知する。この場合は、アクセスバンクが切り替えられ、第２プロセッサ１０２が第１バンク１０３をアクセスできるようになったことを検知（認識）する。
【００８４】
そこで、ステップＳＴ２０７において、第２プロセッサ１０２は、受け渡しデータを受け取る（リード）すべく、第１バンク１０３のアクセスし受け渡しデータを読み出す。
次いで、ステップＳＴ２０８において、第２プロセッサ１０２は、受け渡しデータを受け取る（リード）すべく、第１バンク１０３のアクセスを完了したことを示すデータ（パラメータ）を第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０に書き込む（ＴＲＦＲＥＧ２の内容を変更する）。
次いで、ステップＳＴ２０９において、第２プロセッサ１０２は、第２割り込み信号を、第２割り込み信号発生レジスタ１０８にセットし、第１プロセッサ１０１に対して第２割り込み信号を発行する。
第２プロセッサ１０２は第２割り込み信号を発行した後は、通常処理に移行する。
【００８５】
第２割り込み信号を受けた第１プロセッサ１０１は、ステップＳＴ１１０において、第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０の内容をリードする。
次いで、ステップＳＴ１１１において、第１プロセッサ１０１は、リードした第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）１１０の内容を検知する。この場合は、第２プロセッサ１０２が受け渡しデータがリードし、データが受け渡されたことを検知（認識）する。
そして、第１プロセッサ１０１は、通常処理に移行する。
【００８６】
このように、本実施形態に係るマルチプロセッサシステム１００においては、第１プロセッサ１０１と第２プロセッサ１０２間でデータ受け渡しを行う場合には、第１プロセッサ１０１は、この制御データによるバンク切り替えを繰り返し行う。
そして、第１プロセッサ１０１および第２プロセッサ１０２は、“パラメータ伝達レジスタ”および“割り込み発生レジスタ”を組み合わせて使用することにより、「他方のプロセッサが何をしたか」、「他方のプロセッサが何を要求しているか」、「他方のプロセッサが何の状態にいるか」を知ることができる。
【００８７】
なお、ソフトウェア制御においては、“パラメータ伝達レジスタ”に書かれるデータが何を意味するのか、をソフトウェア仕様で定義しておくことによって、第１に第１プロセッサ１０１がバンク切り替えの設定を行なう場合のフロー、第２に第２プロセッサ１０２がバンク切り替えの要求をプロセッサ１０２に出す場合のフロー、を決定し、この回路による、共有メモリを使用したプロセッサ間のデータ受け渡しシステムを確立できる。
【００８８】
以上説明したように、本第１の実施形態によれば、第１プロセッサ１０１と、第２プロセッサと、共有メモリを区分けした第１バンク１０３および第２バンク１０４と、第１プロセッサ１０１により２つある第１バンク１０３および第２バンク１０４のうちのいずれかを自プロセッサ１０１および第２プロセッサ１０２がアクセスするかを決定する制御データが書き込まれ、第２プロセッサ１０２から制御データの読み出しのみが可能なアクセスバンク制御レジスタ１１１と、第１プロセッサ１０１から第２プロセッサ１０２に伝達すべき内容を書き込みかつ変更可能で、第２プロセッサ１０２から内容をリード可能な第１パラメータ伝達レジスタ１０９と、第１プロセッサ１０１から第２プロセッサ１０２に対して割り込み発行するための第１割り込み信号発生レジスタ１０７と、第２プロセッサ１０２から第１プロセッサ１０１に伝達すべき内容を書き込みかつ変更可能で、第１プロセッサ１０１から内容をリード可能な第２パラメータ伝達レジスタ１１０と、第２プロセッサ１０２から第１プロセッサ１０１に対して割り込み発行するための第２割り込み信号発生レジスタ１０８とを有すること、以下の効果を得ることができる。
【００８９】
すなわち、共有メモリによる、プロセッサ間のデータ受け渡しを行う場合に、異なるプロセッサからのライト・リードの同時アクセスによる、データの取り違えを抑制することができる。
また、プロセッサ間のバスシステムが異なる場合でも対応可能であり、プロセッサ間のクロックが非同期でも対応可能である。
また、設定切り替えに伴うプロセッサの処理フローや、処理に伴うパラメータをソフトウェアで定義できることから、ハード固定化後の柔軟な対応が可能である、逆にいえば、早期のハード固定化が可能となる利点がある。
割り込み信号の相互受け渡しにより、複数プロセッサによる並列処理中のメモリアクセスを、動的に切り替えることが可能である。
さらに、切り替え後のアクセス・オーバーヘッド（メモリにアクセス可能となるまでの期間）は、実際には、クロックが切り替わる分のオーバーヘッド分のみとなり、極小となる。
これらにより、共有メモリによるプロセッサ間のこまめなデータ受け渡しが可能りなり、繰り返し処理により、大きなデータの受け渡しも実現可能である。
【００９０】
プロセッサ数が３個以上になった場合であって、回路規模を抑えたい場合には、メモリ周りの構成は最小限（バンク数：２）で構成することが可能である。
また、アクセス効率を上げたい場合には、バンク数を増やし、アクセスできないプロセッサを無くす、すなわち最大バンク数＝プロセッサ数として構成することも可能である。
上記のように、要求に合わせて、柔軟に構成を選択可能である。
【００９１】
切り替えはプロセッサバスのアーキテクチャに左右されるメモリコントローラとバンクで行うので、プロセッサが増えた場合の対応も、セレクタの選択数を増やすのみでよく、容易に対応可能である。
プロセッサが増えた場合のオーバーヘッド分としては、共有メモリのバンク構成を増やす選択をしなければ、パラメータ伝達レジスタと割り込み発生回路のみでよいので、回路規模増加は非常に少ない。
バスのアーキテクチャが変わった場合でも、変化のあったバス側のメモリコントローラおよびレジスタ部分の対応のみでよい。
上記の内容により、ＩＰ化による使い回しも容易にできる利点がある。
【００９２】
なお、プロセッサの優位性の決定は、チップのアーキテクチャとして決めても良いし、プロセッサ同士の設定により、制御できるようにしても良い。
【００９３】
共有メモリを構成するメモリとして代表的なものは、シングルポートのＳＲＭＡを例としてあげたが、デュアルポートＳＲＡＭ、ＤＲＡＭ等でも構わない。
また、共有メモリを構成するメモリは、同期／非同期、どちらでも構わない。
【００９４】
第２実施形態
図１４は、本発明に係るマルチプロセッサシステムの第２の実施形態を示す構成図である。
【００９５】
本第２の実施形態と第１の実施形態が異なる点は、プロセッサ数が３個になった場合であって、回路規模を抑えるために、メモリ周りの構成は最小限、すなわち第１の実施形態と同じくバンク数を２として構成している。
【００９６】
具体的には、第１プロセッサ１０１、第２プロセッサ１０２に加えて、第３プロセッサ１２８を設けている。
第３プロセッサ１２８の増加に伴い、第３割り込み信号発生レジスタ（ＩＲＰＴＲＥＧ３）１２９、第３パラメータ伝達レジスタ（ＴＲＦＲＥＧ３）１３０、第３プロセッサバス（ＢＳ−Ｃ）１３１を設けている。
そして、第１〜第３割り込み信号発生レジスタ１０７，１０８，１２９、および第１〜第３パラメータ伝達レジスタ１０９，１１０，１３０は、それぞれの信号、データの行き先を、「自プロセッサ以外の」２つに増やしている。
【００９７】
具体的には、第１プロセッサ１０１により第１割り込み信号発生レジスタ１０７にセットされる第１割り込み信号は、第２プロセッサ１０２および第３プロセッサ１２８に供給される。
第２プロセッサ１０２により第２割り込み信号発生レジスタ１０８にセットされる第２割り込む信号は第１プロセッサ１０１および第３プロセッサ１２８に供給される。
第３プロセッサ１２８により第３割り込み信号発生レジスタ１２９にセットされる第３割り込む信号は第１プロセッサ１０１および第２プロセッサ１０２に供給される。
【００９８】
第１プロセッサ１０１は、第１パラメータ伝達レジスタ１０９に、自プロセッサの状態・リクエストの内容等、詳細情報を伝達するためのパラメータを、ローカルバス１１４、第１プロセッサバス１０５、およびローカルバス１１６を介して書き込む。この第１パラメータ伝達レジスタ１０９に書き込まれた伝達パラメータは、第１割り込み信号の発行先である第２プロセッサ１０２が、ローカルバス１１７、第２プロセッサバス１０６、およびローカルバス１２６を介して読み出す。同様に、第１割り込み信号の発行先である第３プロセッサ１２８が、ローカルバス１３２、第３プロセッサバス１３１、およびローカルバス１４０を介して読み出す。
【００９９】
第２プロセッサ１０２は、第２パラメータ伝達レジスタ１１０に、自プロセッサの状態・リクエストの内容等、詳細情報を伝達するためのパラメータを、ローカルバス１２６、第２プロセッサバス１０６、およびローカルバス１１９を介して書き込む。この第２パラメータ伝達レジスタ１１０に書き込まれた伝達パラメータは、第２割り込み信号の発行先である第１プロセッサ１０１が、ローカルバス１１８、第１プロセッサバス１０５、およびローカルバス１１４を介して読み出す。同様に、第２割り込み信号の発行先である第３プロセッサ１２８が、ローカルバス１３３、第３プロセッサバス１３１、およびローカルバス１４０を介して読み出す。
【０１００】
第３プロセッサ１２８は、第３パラメータ伝達レジスタ１３０に、自プロセッサの状態・リクエストの内容等、詳細情報を伝達するためのパラメータを、ローカルバス１４０、第３プロセッサバス１３１、およびローカルバス１３４を介して書き込む。この第３パラメータ伝達レジスタ１３０に書き込まれた伝達パラメータは、第３割り込み信号の発行先である第１プロセッサ１０１が、ローカルバス１３６、第１プロセッサバス１０５、およびローカルバス１１４を介して読み出す。同様に、第３割り込み信号の発行先である第２プロセッサ１０６が、ローカルバス１３５、第２プロセッサバス１０６、およびローカルバス１２６を介して読み出す。
【０１０１】
また、第１プロセッサ１０１は、アクセスバンク制御レジスタ１１１に、ローカルバス１１４、第１プロセッサバス１０５、およびローカルバス１２０を介して、２つある第１バンク１０３および第２バンク１０４のうちのいずれかを自プロセッサ１０１および第２プロセッサ１０２がアクセスするかを決定する制御データを書き込む。
アクセスバンク制御レジスタ１１１に書き込まれた制御データは、第２プロセッサ１０２によりローカルバス１２１、第２プロセッサバス１０６、およびローカルバス１２６を介して読み出される。第２プロセッサ１０２は、読み出した制御データに基づいてアクセス可能なバンクを認識する。
同様に、アクセスバンク制御レジスタ１１１に書き込まれた制御データは、第３プロセッサ１２８によりローカルバス１３７、第３プロセッサバス１３１、およびローカルバス１４０を介して読み出される。第３プロセッサ１２８は、読み出した制御データに基づいてアクセス可能なバンクを認識する。
【０１０２】
また、第３プロセッサ１２８は、ローカルバス１４０、第３プロセッサバス１３１、ローカルバス１３８、および第１メモリコントローラ１１２を介して第１バンク１０３にアクセスする。同様に、第３プロセッサ１２８は、ローカルバス１４０、第３プロセッサバス１３１、ローカルバス１３９、およびメモリコントローラ１１３を介して第２バンク１０４にアクセスする。
【０１０３】
なお、アクセスバンク制御レジスタ１１１に書き込まれた制御データとしては、たとえば図３に示すコントロールレジスタのビット０に加えてビット１およびビット２を加えて３ビットデータとして用いられる。
【０１０４】
図１８は、バンクアクセス制御ビットに設定される制御データに応じた２つのバンクの３つのプロセッサへの割り当て例を示す図である。
図１８に示すように、たとえば本第２の実施形態では、第１プロセッサ１０１がビット２、ビット１、ビット０に制御データとして「０００」を設定し場合には、第１プロセッサ１０１が第１バンク１０３側をアクセスし、第２プロセッサ１０２が第２バンク１０４側をアクセスする。
この場合、第３プロセッサ１２８は第１バンク１０３および第２バンク１０４にアクセスができない。
第１プロセッサ１０１がビット２、ビット１、ビット０に制御データとして「００１」を設定し場合には、第１プロセッサ１０１が第２バンク１０４側をアクセスし、第２プロセッサ１０２が第１バンク１０３側をアクセスする。
この場合も、第３プロセッサ１２８は第１バンク１０３および第２バンク１０４にアクセスができない。
【０１０５】
第１プロセッサ１０１がビット２、ビット１、ビット０に制御データとして「０１０」を設定し場合には、第１プロセッサ１０１が第１バンク１０３側をアクセスし、第３プロセッサ１２８が第２バンク１０４側をアクセスする。
この場合、第２プロセッサ１０２は第１バンク１０３および第２バンク１０４にアクセスができない。
第１プロセッサ１０１がビット２、ビット１、ビット０に制御データとして「０１１」を設定し場合には、第１プロセッサ１０１が第２バンク１０４側をアクセスし、第３プロセッサ１２８が第１バンク１０３側をアクセスする。
この場合、第２プロセッサ１０２は第１バンク１０３および第２バンク１０４にアクセスができない。
【０１０６】
第１プロセッサ１０１がビット２、ビット１、ビット０に制御データとして「１００」を設定し場合には、第２プロセッサ１０２が第１バンク１０３側をアクセスし、第３プロセッサ１２８が第２バンク１０４側をアクセスする。
この場合、第１プロセッサ１０１は第１バンク１０３および第２バンク１０４にアクセスができない。
第１プロセッサ１０１がビット２、ビット１、ビット０に制御データとして「１０１」を設定し場合には、第２プロセッサ１０２が第２バンク１０４側をアクセスし、第３プロセッサ１２８が第１バンク１０３側をアクセスする。
この場合、第１プロセッサ１０１は第１バンク１０３および第２バンク１０４にアクセスができない。
【０１０７】
本第２の実施形態に係る第１メモリコントローラおよび第２メモリコントローラは、第１の実施形態の場合と略同様の機能を有するが、プロセッサが１つ増えた分だけ、図９の回路に対してバンクコントローラが１つ増えた構成となる。
【０１０８】
図１９は、本第２の実施形態に係るメモリコントローラの具体的な構成例を示す図である。
このメモリコントローラ４００（１１２，１１３）は、図１９に示すように、第１バンクコントローラ（ＢＮＫＣＴＬ−Ａ）４０１、第２バンクコントローラ（ＢＮＫＣＴＬ−Ｂ）４０２、第３バンクコントローラ（ＢＮＫＣＴＬ−Ｃ）４０３、第１切り替えスイッチ４０４、および第２切り替えスイッチ４０４を有する。
【０１０９】
第１バンクコントローラ４０１は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第１プロセッサ１０１により行うことを示している場合に、第１プロセッサバス（ＢＳ−Ａ）１０５を通して供給される第１プロセッサ１０１によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等を受けて所定のタイミングでアクセスすべき第１バンク１０３または第２バンク１０４側に出力し、第１バンク１０３または第２バンク１０４から読み出されたデータを所定のタイミングで第１プロセッサバス（ＢＳ−Ａ）１０５に送出する。
【０１１０】
第２バンクコントローラ４０２は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第２プロセッサ１０２により行うことを示している場合に、第２プロセッサバス（ＢＳ−Ｂ）１０６を通して供給される第２プロセッサ１０２によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等を受けて所定のタイミングでアクセスすべき第１バンク１０３または第２バンク１０４側に出力し、第１バンク１０３または第２バンク１０４から読み出されたデータを所定のタイミングで第２プロセッサバス（ＢＳ−Ｂ）１０６に送出する。
【０１１１】
第３バンクコントローラ４０３は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第３プロセッサ１２８により行うことを示している場合に、第３プロセッサバス（ＢＳ−Ｃ）１３１を通して供給される第３プロセッサ１２８によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等を受けて所定のタイミングでアクセスすべき第１バンク１０３または第２バンク１０４側に出力し、第１バンク１０３または第２バンク１０４から読み出されたデータを所定のタイミングで第３プロセッサバス（ＢＳ−Ｃ）１３１に送出する。
【０１１２】
第１切り替えスイッチ４０４は、端子ａが第１バンク１０３または第２バンク１０４の入力端子に接続されたバス４０６に接続され、端子ｂが第１バンクコントローラ４０１のバンク側への出力端子に接続されたバス４０６に接続され、端子ｃが第２バンクコントローラ４０２のバンク側への出力端子に接続されたバス４０８に接続され、端子ｄが第３バンクコントローラ４０３のバンク側への出力端子に接続されたバス４０９に接続されている。
そして、第１切り替えスイッチ４０３は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第１プロセッサ１０１により行うことを示している場合に、端子ａと端子ｂとを接続して、第１バンクコントローラ４０１が所定のタイミングでバス４０７に送出した第１プロセッサ１０１によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等をバス４０６に伝播させて第１バンク１０３または第２バンク１０４に入力させる。
第１切り替えスイッチ４０４は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第２プロセッサ１０２により行うことを示している場合に、端子ａと端子ｃとを接続して、第２バンクコントローラ４０２が所定のタイミングでバス４０８に送出した第２プロセッサ１０２によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等をバス４０６に伝播させて第１バンク１０３または第２バンク１０４に入力させる。
第１切り替えスイッチ４０４は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第３プロセッサ１２８により行うことを示している場合に、端子ａと端子ｄとを接続して、第３バンクコントローラ４０３が所定のタイミングでバス４０９に送出した第３プロセッサ１２８によるアドレスＡＤＲ、ライトデータＷＤＴ、制御信号ＷＥ，ＩＨ等をバス４０６に伝播させて第１バンク１０３または第２バンク１０４に入力させる。
【０１１３】
第２切り替えスイッチ４０５は、端子ａが第１バンク１０３または第２バンク１０４のクロック入力端子に接続され、端子ｂが第１プロセッサ１０１用のクロックＣＬＫ−Ａの供給ラインに接続され、端子ｃが第２プロセッサ１０２用のクロックＣＬＫ−Ｂの供給ラインに接続され、端子ｄが第３プロセッサ１２８用のクロックＣＬＫ−Ｃの供給ラインに接続されている。
そして、第２切り替えスイッチ４０５は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第１プロセッサ１０１により行うことを示している場合に、端子ａと端子ｂとを接続して、クロックＣＬＫ−Ａを第１バンク１０３または第２バンク１０４に入力させる。
第２切り替えスイッチ４０５は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第２プロセッサ１０２により行うことを示している場合に、端子ａと端子ｃとを接続して、クロックＣＬＫ−Ｂを第１バンク１０３または第２バンク１０４に入力させる。
第２切り替えスイッチ４０５は、アクセスバンク制御レジスタ１１１に設定された制御データが、第１バンク１０３または第２バンク１０４へのアクセスが第３プロセッサ１２８により行うことを示している場合に、端子ａと端子ｄとを接続して、クロックＣＬＫ−Ｃを第１バンク１０３または第２バンク１０４に入力させる。
【０１１４】
このように、本第２の実施形態に係るバンクコントローラ４００は、対応するバンクを、第１プロセッサ１０１、第２プロセッサ１０２または第３プロセッサ１２８のどちらからのコントロールを受け付けるかを選択し、かつ、バンクへのクロックも、それぞれのプロセッサ（バス）に同期したクロックを選択してバンクに分配する。このため、３つのプロセッサのバスアーキテクチャが全く異なったものでも対応が容易で、クロックの同期／  非同期に関係なく、制御を切り替えることができる。
【０１１５】
第２の実施形態によれば、上述した第１の実施形態の効果と同様の効果を得ることができる。
【０１１６】
なお、上述したように、プロセッサ数が３にもかかわらずバンクが２つであることから、アクセスができないプロセッサが生じる。
アクセスできないプロセッサが無くなるようにするには、プロセッサが増えた分、共有メモリのバンク数も増やしてやればよい。
【０１１７】
【発明の効果】
以上説明したように、本発明によれば、共有メモリによる、プロセッサ間のデータ受け渡しを行う場合に、異なるプロセッサからのライト・リードの同時アクセスによる、データの取り違えを抑制することができる。
また、プロセッサ間のバスシステムが異なる場合でも対応可能であり、プロセッサ間のクロックが非同期でも対応可能である。
また、設定切り替えに伴うプロセッサの処理フローや、処理に伴うパラメータをソフトウェアで定義できることから、ハード固定化後の柔軟な対応が可能である、逆にいえば、早期のハード固定化が可能となる利点がある。
割り込み信号の相互受け渡しにより、複数プロセッサによる並列処理中のＲＡＭアクセスを、動的に切り替えることが可能である。
さらに、切り替え後のアクセス・オーバーヘッド（メモリにアクセス可能となるまでの期間）は、実際には、クロックが切り替わる分のオーバーヘッド分のみとなり、極小となる。
これらにより、共有メモリによるプロセッサ間のこまめなデータ受け渡しが可能りなり、繰り返し処理により、大きなデータの受け渡しも実現可能である。
【０１１８】
プロセッサ数が３個以上になった場合であって、回路規模を抑えたい場合には、メモリ周りの構成は最小限（バンク数：２）で構成することが可能である。
また、アクセス効率を上げたい場合には、バンク数を増やし、アクセスできないプロセッサを無くす、すなわち最大バンク数＝プロセッサ数として構成することも可能である。
上記のように、要求に合わせて、柔軟に構成を選択可能である。
【０１１９】
切り替えはプロセッサバスのアーキテクチャに左右されるメモリコントローラとバンクで行うので、プロセッサが増えた場合の対応も、セレクタの選択数を増やすのみでよく、容易に対応可能である。
プロセッサが増えた場合のオーバーヘッド分としては、共有メモリのバンク構成を増やす選択をしなければ、パラメータ伝達レジスタと割り込み発生回路のみでよいので、回路規模増加は非常に少ない。
バスのアーキテクチャが変わった場合でも、変化のあったバス側のメモリコントローラおよびレジスタ部分の対応のみでよい。
【図面の簡単な説明】
【図１】本発明に係るマルチプロセッサシステムの第１の実施形態を示す図である。
【図２】第１プロセッサによりアクセスバンク制御レジスタに対して、自プロセッサに第１バンクを割り当て、第２プロセッサに第２バンクを割り当てた場合のアクセス経路を示す図である。
【図３】第１プロセッサのコントロールレジスタの構成例を示す図である。
【図４】バンクアクセス制御ビットに設定される制御データに応じた２つのバンクの２つのプロセッサへの割り当て例を示す図である。
【図５】第２プロセッサインタフェースオンレジスタの構成例を示す図である。
【図６】第２プロセッサインタフェースオンレジスタの設定例を示す図である。
【図７】第２プロセッサのコントロールレジスタの構成例を示す図である。
【図８】バンクアクセス制御ビットに設定される制御データに応じた共有メモリの選択バンクの第２プロセッサへの割り当て例を示す図である。
【図９】第１の実施形態に係るメモリコントローラの具体的な構成例を示す図である。
【図１０】シングルポートＳＲＡＭの具体的な構成例を示すブロック図である。
【図１１】シングルポートＳＲＡＭの動作モードと入出力の状態を説明するための図である。
【図１２】（Ａ）〜（Ｄ）はリードモード時の処理を説明するためのタイミングチャートである。
【図１３】（Ａ）〜（Ｅ）はライトモード時の処理を説明するためのタイミングチャートである。
【図１４】（Ａ）〜（Ｆ）は、リードモードおよびライトモード時のクロックがアクティブ（ａｃｔｉｖｅ）になるタイミングを示すタイミングチャートである。
【図１５】（Ａ）〜（Ｆ）は、リードモードおよびライトモード時のクロックがインヒビット（ｉｎｈｉｂｉｔ）  になるタイミングを示すタイミングチャートである。
【図１６】図１のマルチプロセッサシステムに動作を説明するための図である。
【図１７】本発明に係るマルチプロセッサシステムの第２の実施形態を示す図である。
【図１８】バンクアクセス制御ビットに設定される制御データに応じた２つのバンクの３つのプロセッサへの割り当て例を示す図である。
【図１９】第２の実施形態に係るメモリコントローラの具体的な構成例を示す図である。
【図２０】従来の第１の方法を採用したマルチプロセッサシステムの構成例を示す図である。
【図２１】従来の第２の方法を採用したマルチプロセッサシステムの第１の構成例を示す図である。
【図２２】従来の第２の方法を採用したマルチプロセッサシステムの第２の構成例を示す図である。
【符号の説明】
１００、１００Ａ…マルチプロセッサシステム、１０１…第１プロセッサ（ＰＲＣ−Ａ）、１０２…第２プロセッサ（ＰＲＣ−Ｂ）、１０３…第１メモリバンク（ＢＮＫ１）、１０４…第２メモリバンク（ＢＮＫ２）、１０５…第１プロセッサバス（ＢＳ−Ａ）、１０６…第２プロセッサバス（ＢＳ−Ｂ）、１０７…第１割り込み信号発生レジスタ（ＩＲＰＴＲＥＧ１）、１０８…第２割り込み信号発生レジスタ（ＩＲＰＴＲＥＧ２）、１０９…第１パラメータ伝達レジスタ（ＴＲＦＲＥＧ１）、１１０…第２パラメータ伝達レジスタ（ＴＲＦＲＥＧ２）、１１１…アクセスバンク制御レジスタ（ＣＴＬＲＥＧ）、１１２…第１メモリコントローラ（ＭＣＴＬ１）、１１３…第２メモリコントローラ（ＭＣＴＬ２）、１１４〜１２７…ローカルバス、１２８…第３プロセッサ（ＰＲＣ−Ｃ）、１２９…第３割り込み信号発生レジスタ（ＩＲＰＴＲＥＧ３）、１３０…第３パラメータ伝達レジスタ（ＲＴＦＲＥＧ３）、１３１…第３プロセッサバス（ＢＳ−Ｃ）、１３２〜１４１…ローカルバス、２００…メモリコントローラ、２０１…第１バンクコントローラ（ＢＮＫＣＴＬ−Ａ）、２０２…第２バンクコントローラ（ＢＮＫＣＴＬ−Ｂ）、２０３…第１切り替えスイッチ、２０４…第２切り替えスイッチ、４００…メモリコントローラ、４０１…第１バンクコントローラ（ＢＮＫＣＴＬ−Ａ）、４０２…第２バンクコントローラ（ＢＮＫＣＴＬ−Ｂ）、４０３…第３バンクコントローラ（ＢＮＫＣＴＬ−Ｃ）、４０４…第１切り替えスイッチ、４０５…第２切り替えスイッチ。
【図１】
2004157865.tif 000003
【図２】
2004157865.tif 000004
【図３】
2004157865.tif 000005
【図４】
2004157865.tif 000006
【図５】
2004157865.tif 000007
【図６】
2004157865.tif 000008
【図７】
2004157865.tif 000009
【図８】
2004157865.tif 000010
【図９】
2004157865.tif 000011
【図１０】
2004157865.tif 000012
【図１１】
2004157865.tif 000013
【図１２】
2004157865.tif 000014
【図１３】
2004157865.tif 000015
【図１４】
2004157865.tif 000016
【図１５】
2004157865.tif 000017
【図１６】
2004157865.tif 000018
【図１７】
2004157865.tif 000019
【図１８】
2004157865.tif 000020
【図１９】
2004157865.tif 000021
【図２０】
2004157865.tif 000022
【図２１】
2004157865.tif 000023
【図２２】
2004157865.tif 000024