(57)【要約】      （修正有）【課題】複数のマスタデバイスと、共有メモリと、を備えるシステムにおいて、データの転送効率を改善する。【解決手段】共有メモリ制御ユニットは、待機キュー１２２，１２４と、ロックトランザクションコントローラ１２と、を備える。待機キュー１２２，１２４は、アクセス要求を格納する。ロックトランザクションコントローラ１２は、アクセス要求が共有メモリのロックを伴うロック要求の場合には、共有メモリにロック要求を出力して共有メモリをロックし、ロック要求を受け付けた後に受け付けられたアクセス要求を待機キュー１２２，１２４に格納し、アクセス要求が共有メモリのアンロックを伴うアンロック要求の場合には、共有メモリにアンロック要求を出力して共有メモリのロックを解除し、待機キュー１２２，１２４に格納されたアクセス要求を共有メモリに出力する。【選択図】図３
2014186618.tif 000002
【特許請求の範囲】
【請求項１】
複数のマスタデバイスから受け付けたアクセス要求に基づいて、前記複数のマスタデバイスが共有する共有メモリに対するメモリアクセスを制御する共有メモリ制御ユニットであって、
前記アクセス要求を格納する待機キューと、
前記アクセス要求が前記共有メモリのロックを伴うロック要求の場合には、前記共有メモリに前記ロック要求を出力して前記共有メモリをロックし、前記ロック要求を受け付けた後に受け付けられた前記アクセス要求を前記待機キューに格納し、前記アクセス要求が前記共有メモリのアンロックを伴うアンロック要求の場合には、前記共有メモリに前記アンロック要求を出力して前記共有メモリのロックを解除し、前記待機キューに格納された前記アクセス要求を前記共有メモリに出力する、ロックトランザクションコントローラと、を備えることを特徴とする共有メモリ制御ユニット。
【請求項２】
前記アクセス要求は、リード要求と、ライト要求と、を含み、
前記待機キューは、
前記リード要求を格納するリードキューと、
前記ライト要求を格納するライトキューと、
新規のライト要求を前記ライトキューに格納するときに、前記ライトキューの更新に用いられる情報を前記ライト要求から抽出し、抽出した情報に基づいて前記ライトキューを更新する、書込更新ロジックと、を備える、請求項１に記載の共有メモリ制御ユニット。
【請求項３】
前記リードキューは、複数のリード要求を個別に格納し、
前記ライトキューは、複数のライト要求を統合して格納する、請求項２に記載の共有メモリ制御ユニット。
【請求項４】
前記書込更新ロジックは、前記新規のライト要求がアンロックライト要求の場合に、前記新規のライト要求に含まれるライトデータが前記共有メモリに書き込まれる順序を保証するように、前記ライトキューを更新する、請求項２または３の何れかに記載の共有メモリ制御ユニット。
【請求項５】
前記ロックトランザクションコントローラは、前記新規のライト要求がアンロックライト要求の場合に、前記アクセス要求の受理を一時停止し、前記ライトキューに格納された情報に基づいてアンロックライト要求を発行し、前記リードキューに格納された全ての前記リード要求を出力した後に、前記アクセス要求の受理を再開する、請求項２乃至４の何れかに記載の共有メモリ制御ユニット。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、ロックトランザクションコントローラを備えた共有メモリ制御ユニットに関する。
【背景技術】
【０００２】
従来、多数のマスタデバイス（例えば、メニーコアプロセッサやハードウェアエンジン）と、多数のマスタデバイスに共有される共有メモリと、多数のルータと、これらのデバイス同士を接続するインターコネクトと、を備えるシステムが知られている。
【０００３】
従来のシステムでは、多数のマスタデバイスが、 インターコネクトを介して、共有メモリへアクセスし、共有メモリの一部へＴＡＳ（Ｔｅｓｔ  Ａｎｄ  Ｓｅｔ）要求を発行すると、多数のマスタデバイスからのＴＡＳ要求同士が競合するため、各マスタデバイスは、ＴＡＳ要求の再発行を繰り返す必要がある。
【０００４】
また、１つのマスタデバイス（以下「ロックマスタデバイス」という）が共有メモリにロック領域を確保すると、他のマスタデバイス（以下「非ロックマスタデバイス」という）は、ロック領域が解放されるまで、ＴＡＳ要求の再発行を繰り返す。これにより、インターコネクトは、ロック処理に関するデータの転送で埋め尽くされるので、転送効率が著しく低下する。この場合には、ロックマスタデバイスがロック領域を解放するライト要求を発行したとしても、ライト要求の転送が、非ロックマスタデバイスによって再発行されるＴＡＳ要求の転送によって阻まれるので、ロック領域の解放が遅れる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平４−１７５９４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明が解決しようとする課題は、複数のマスタデバイスと、共有メモリと、を備えるシステムにおいて、データの転送効率を改善することである。
【課題を解決するための手段】
【０００７】
本発明の実施形態の共有メモリ制御ユニットは、複数のマスタデバイスから受け付けたアクセス要求に基づいて、前記複数のマスタデバイスが共有する共有メモリに対するメモリアクセスを制御する。共有メモリ制御ユニットは、待機キューと、ロックトランザクションコントローラと、を備える。待機キューは、前記アクセス要求を格納する。ロックトランザクションコントローラは、前記アクセス要求が前記共有メモリのロックを伴うロック要求の場合には、前記共有メモリに前記ロック要求を出力して前記共有メモリをロックし、前記ロック要求を受け付けた後に受け付けられた前記アクセス要求を前記待機キューに格納し、前記アクセス要求が前記共有メモリのアンロックを伴うアンロック要求の場合には、前記共有メモリに前記アンロック要求を出力して前記共有メモリのロックを解除し、前記待機キューに格納された前記アクセス要求を前記共有メモリに出力する。
【発明の効果】
【０００８】
本発明によれば、複数のマスタデバイスと、共有メモリと、を備えるシステムにおいて、データの転送効率を改善することができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態のマルチプロセッシングシステム１のブロック図。
【図２】本実施形態の共有メモリ制御ユニット１０のブロック図。
【図３】本実施形態のシングルライト要求をサポートするロックトランザクションコントローラ１２のブロック図。
【図４】本実施形態のバーストライト要求をサポートするロックトランザクションコントローラ１２のブロック図。
【図５】本実施形態のステートマシン１２６の状態遷移図。
【図６】本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図。
【図７】本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図。
【図８】本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図。
【図９】本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図。
【図１０】本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図。
【図１１】本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図。
【発明を実施するための形態】
【００１０】
本実施形態のマルチプロセッシングシステムの構成について説明する。図１は、本実施形態のマルチプロセッシングシステム１のブロック図である。マルチプロセッシングシステム１は、複数のマスタデバイスＭＤ０〜ＭＤ３１（以下「ＭＤ」と表記する場合がある）と、複数の第１階層ルータＲ１０〜Ｒ１７（以下「Ｒ１」と表記する場合がある）と、複数の第２階層ルータＲ２０〜Ｒ２７（以下「Ｒ２」と表記する場合がある）と、ＮｏＣ（Ｎｅｔｗｏｒｋ  ｏｎ  Ｃｈｉｐ）型のインターコネクトＩＣと、共有メモリ制御ユニット１０と、共有メモリＳＭと、を備える。
【００１１】
各マスタデバイスＭＤ（例えば、ＭＤ０〜ＭＤ３）は、第１階層ルータＲ１（例えば、Ｒ１０）を介して、互いに接続されるデバイスであって、例えば、プロセッシングユニットまたはハードウェアエンジンである。第１階層ルータＲ１（例えば、Ｒ１０）は、他の第１階層ルータＲ１（例えば、Ｒ１４）と、第２階層ルータＲ２（例えば、Ｒ２０）と、に接続される。第２階層ルータＲ２（例えば、Ｒ２０）は、インターコネクトＩＣを介して、他の第２階層ルータＲ２（例えば、Ｒ２１〜Ｒ２３）と、共有メモリ制御ユニット１０とに接続される。
【００１２】
マスタデバイスＭＤは、共有メモリＳＭにアクセスして、データ処理を行う。第１階層ルータＲ１および第２階層ルータＲ２は、マスタデバイスＭＤが送受信するデータのルーティング制御を行う。共有メモリ制御ユニット１０は、共有メモリＳＭへのメモリアクセスを制御する。共有メモリＳＭには、マスタデバイスＭＤによって処理されるべきデータが格納されている。
【００１３】
なお、図１では、共有メモリ制御ユニット１０のポート数が４ポートであり、かつ、マスタデバイスＭＤの数が３２個であり、全てのデバイスがツリー形状のインターコネクトＩＣによって共有メモリに接続されたネットワークトポロジの例を図示しているが、ポート数、マスタデバイスＭＤの数、およびネットワークトポロジは、これに限られるものではない。
【００１４】
図２は、本実施形態の共有メモリ制御ユニット１０のブロック図である。共有メモリ制御ユニット１０は、複数のポートＰ０〜Ｐ３と、ロックトランザクションコントローラ１２と、複数のメモリアクセスブリッジ１４０〜１４３と、複数のメモリアクセス部１６０〜１６３と、メモリアクセスアービタ１８と、を備える。
【００１５】
ポートＰは、インターコネクトＩＣと共有メモリ制御ユニット１０との間のインタフェースである。ロックトランザクションコントローラ１２は、共有メモリＳＭに対するロックトランザクションを制御する。具体的には、ロックトランザクションコントローラ１２は、ロック領域へのリードアクセスおよびライトアクセスの制御と、ロック中に届いた新規のロックリード要求（ロックを伴うリード要求）を待機させてから再発行する処理と、を行う。
【００１６】
メモリアクセスブリッジ１４０〜１４３およびメモリアクセス部１６０〜１６３は、それぞれ、ポートＰ０〜Ｐ３に対応する。メモリアクセスブリッジ１４０〜１４３は、それぞれ、ポートＰ０〜Ｐ３を介して、マスタデバイスＭＤからのアクセス要求を受理する。メモリアクセス部１６０〜１６３は、それぞれ、メモリアクセスブリッジ１４０〜１４３が受理したアクセス要求がリード要求である場合には、当該リード要求を保持し、当該アクセス要求がライト要求である場合には、当該ライト要求と、当該ライト要求に付随するライトデータと、を保持する。
【００１７】
メモリアクセスアービタ１８は、メモリアクセスブリッジ１４０〜１４３が受理したアクセス要求を調停する。また、メモリアクセスアービタ１８は、ロック情報記憶部１８２を備える。メモリアクセスアービタ１８は、当該アクセス要求が共有メモリＳＭのロックを伴うロック要求である場合に、ロック情報記憶部１８２に、共有メモリＳＭのロックに使用されるロック情報を格納する。なお、ロック情報記憶部１８２は、図２ではメモリアクセスアービタ１８内に配置されているが、ロック要求のアクセス経路上の任意の場所に配置可能である。
【００１８】
図３は、本実施形態のシングルライト要求をサポートするロックトランザクションコントローラ１２のブロック図である。ロックトランザクションコントローラ１２は、ロック領域へのアクセス要求およびロック要求を待機させる待機キューと、待機キューで待機している待機要求をメモリアクセスブリッジ１４に再発行する経路と、を備え、待機キュー及び待機要求の再発行を制御するように構成される。具体的には、ロックトランザクションコントローラ１２は、ポータルキュー１２０と、待機キュー（リードキュー１２２、およびライトキュー１２４）と、リードポインタ回路１２１と、書込更新ロジック１２３と、ステートマシン１２６と、出力セレクタ１２８と、を備える。
【００１９】
メモリアクセスアービタ１８の出力（リード要求のリードアクセス情報ＲＤまたはライト要求のライトアクセス情報ＷＲ）は、最初に、ポータルキュー１２０に格納される。メモリアクセスアービタ１８の出力は、共有メモリＳＭ内のアクセス先を示す要求アドレスと、ロック要求の有無を示すロック要求フラグと、アンロックを伴うアンロックライト要求か否かを示すアンロックフラグと、アクセス要求の種類（リード要求またはライト要求）を示す識別フラグと、バーストライト要求の要否を示すバーストフラグと、アクセス要求を受理したメモリアクセスブリッジ１４０〜１４３を識別するブリッジＩＤ（Ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）と、を含む。
【００２０】
リードキュー１２２は、複数のリードアクセス情報記憶部１２２０を備える。各リードアクセス情報記憶部１２２０には、複数のリードアクセス情報ＲＤが、個別のキューエントリとして、格納される。リードポインタ回路１２１には、リードキュー１２２に格納されたリード要求のリードポインタが格納される。リードポインタは、リードキュー１２２に格納されたリード要求のキューポジションを示している。
【００２１】
書込更新ロジック１２３は、ライト要求から、ライトキュー１２４を更新するための情報（バイトイネーブルＢＥおよびライトデータＷＤ）を抽出する。
【００２２】
ライトキュー１２４には、複数のライト要求が１つのキューエントリに統合されて、格納される。ライトキュー１２４は、ライトアクセス情報記憶部１２４０と、バイトイネーブル記憶部１２４２と、ライトデータ記憶部１２４４と、を備える。ライトアクセス情報記憶部１２４０には、ロックトランザクションコントローラ１２に入力されるライト要求（すなわち、ロック領域を対象とするロックライト要求およびアンロックライト要求）のライトアクセス情報ＷＲが格納される。バイトイネーブル記憶部１２４２には、当該ライト要求のバイトイネーブルＢＥが格納される。ライトデータ記憶部１２４４には、当該ライト要求のライトデータＷＤが格納される。
【００２３】
なお、ロック解除までのロック領域を対象とするロックライト要求については、書込更新ロジック１２３はライトアクセス情報記憶部１２４０の更新を行わないので、ライトバイトイネーブル記憶部１２４２およびライトデータ記憶部１２４４のみにライト要求の内容が反映される。
【００２４】
出力セレクタ１２８は、リードキュー１２２の出力およびライトキュー１２４の出力を、メモリアクセスブリッジ１４０〜１４３に対して、選択的に出力する。
【００２５】
図４は、本実施形態のバーストライト要求をサポートするロックトランザクションコントローラ１２のブロック図である。ポータルキュー１２０と、リードポインタ回路１２１と、リードキュー１２２と、書込更新ロジック１２３と、ステートマシン１２６と、出力セレクタ１２８と、は図３と同様である。
【００２６】
ライトキュー１２４は、ライトアクセス情報記憶部１２４０と、複数のバイトイネーブル記憶部１２４２と、複数のライトデータ記憶部１２４４と、を備える。ライトアクセス情報記憶部１２４０は図３と同様である。
【００２７】
各バイトイネーブル記憶部１２４２には、ライト要求のバイトイネーブルＢＥが格納される。各ライトデータ記憶部１２４４には、ロックライト要求のライトデータＷＤが格納される。
【００２８】
本実施形態の書込み更新ロジック１２３の動作について説明する。以下、ロック領域（アドレス「0x0001_0000」）に対するシングルライト要求が最初にライトキュー１２４に到着した時刻ｔ１から、時刻ｔ１以降の時刻ｔ２〜ｔ４において、書込更新ロジック１２３がバイトイネーブル記憶部１２４２およびライトデータ記憶部１２４４を更新する例を説明する。なお、以下の説明では、バイトイネーブルＢＥは８ビットであり、ライトデータＷＤは６４ビットであるものとする。
【００２９】
まず、時刻ｔ１で、アンロックを伴わない通常ライト要求（ライトアドレス「0x0001_0000」、ライトデータＷＤ「0x1234_5678_9abc_def0」、およびバイトイネーブルＢＥ「0xf0」）が入力されると、バイトイネーブル記憶部１２４２には、バイトイネーブルＢＥ「0xf0」が格納され、ライトデータ記憶部１２４４には、ライトデータＷＤ「0x1234_5678_0000_0000」が格納された状態となる。
【００３０】
次に、時刻ｔ２（＞ｔ１）で、通常ライト要求（ライトアドレス「0x0001_0000」、バイトイネーブルＢＥ「0x03」、およびライトデータＷＤ「0xdef0_9abc_5678_1234」）が入力されると、バイトイネーブル記憶部１２４２には、バイトイネーブルＢＥ「0xf3」が格納され、ライトデータ記憶部１２４４には、ライトデータＷＤ「0x1234_5678_0000_1234」が格納された状態となる。
【００３１】
次に、時刻ｔ３（＞ｔ２）で、通常ライト要求（ライトアドレス「0x0001_0000」、バイトイネーブルＢＥ「0x10」、およびライトデータＷＤ「0x9abc_def0_1234_5678」）が入力されると、バイトイネーブル記憶部１２４２には、バイトイネーブルＢＥ「0xf3」が格納され、ライトデータ記憶部１２４４には、ライトデータＷＤ「0x1234_56f0_0000_1234」が格納された状態となる。
【００３２】
ここで、時刻ｔ４（＞ｔ３）で、アンロックライト要求（ライトアドレス「0x0001_0000」、バイトイネーブルＢＥ「0x08」、およびライトデータＷＤ「0x5678_1234_def0_9abc」）が入力された場合には、時刻ｔ４で入力された新規のバイトイネーブルＢＥ「0x08」が時刻ｔ３でバイトイネーブル記憶部１２４２に格納されていた既存のバイトイネーブルＢＥ「0xf3」と重ならないので、新規のライトデータＷＤ「0x5678_1234_def0_9abc」）のバイトイネーブルBEに対応した部分が、ライトデータ記憶部１２４４に書き込まれ、ライトデータ記憶部１２４４は「0x1234_56f0_de00_1234」となり、バイトイネーブル記憶部１２４２には0xfbが記憶される。
【００３３】
一方、時刻ｔ４で、アンロックライト要求（ライトアドレス「0x0001_0000,」、バイトイネーブルＢＥ「0x01」、およびライトデータＷＤ「0x5678_1234_def0_9abc」）が入力された場合には、新規のバイトイネーブルＢＥ「0x01」が既存のバイトイネーブルＢＥ「0xf3」と重なるので、新規のライトデータＷＤ「0x5678_1234_def0_9abc」）のバイトイネーブルBEに対応した部分は、ライトデータ記憶部１２４４に書き込まれず、時刻ｔ３におけるライトデータが保持される。この場合、バイトイネーブル記憶部１２４２も、時刻ｔ３におけるバイトイネーブルを保持する。
【００３４】
このように、書込更新ロジック１２３は、既存のバイトイネーブルＢＥとアンロックライト要求のバイトイネーブルＢＥが重ならない場合には、ライトデータ記憶部１２４４への書き込みを行うが、既存のバイトイネーブルＢＥとアンロックライト要求のバイトイネーブルＢＥが重なる場合には、ライトデータ記憶部１２４４への書き込みを行わないので、ロック領域のアンロックの後に待機していたロックライト要求を処理する、という処理の順番を維持することができる。
【００３５】
以上の処理により、ライト要求に含まれるライトデータＷＤが共有メモリＳＭに書き込まれる順序を保証することができる。なお、共有メモリＳＭが共有キャッシュメモリの場合には、ライトバースト長はキャッシュライン長であり、ロック対象領域はキャッシュライン単位となるので、キャッシュライン長のライトデータ記憶部１２４４およびライトバイトイネーブル記憶部１２４２を用いることにより、同様の処理で、ライトデータＷＤが共有メモリＳＭに書き込まれる順序を保証しながら、バーストライトをサポートすることができる。
【００３６】
本実施形態のロックトランザクションフローについて説明する。図５は、本実施形態のステートマシン１２６の状態遷移図である。図６〜１１は、本実施形態のロックトランザクションフローを実行したときの共有メモリ制御ユニット１０内のデータ転送の様子を示す図である。
【００３７】
図５に示すように、ロックトランザクションフローのステートマシンは、IDLE（Ｓ１００）と、WAIT_REQ（Ｓ１０２）と、WRITE_REQ（Ｓ１０４）と、WRITE_DATA（Ｓ１０６）と、WAIT_WRITE（Ｓ１０８）と、READ_REQ（Ｓ１１０）と、WAIT_READ（Ｓ１１２）とから構成される。ロックトランザクションコントローラ１２は、各状態（Ｓ１００〜Ｓ１１２）に応じて動作して、マスタデバイスＭＤと共有メモリＳＭとの間のデータ転送と、共有メモリＳＭのロック状態（ロック／アンロック）と、を制御する。
【００３８】
図６に示すように、ロックリード要求が、マスタデバイスＭＤ０からポートＰ１を介してメモリアクセスブリッジ１４１に到着し（図６の（１））、メモリアクセス部１６１を経由してメモリアクセスアービタ１８に到着する（図６の（２）および（３））。ロックリード要求は、メモリアクセスアービタ１８に受理されると、共有メモリＳＭに送られる（図６の（４０））。一方、メモリアクセスアービタ１８内部では、ロック情報（ロックの有無、ロック対象アドレス、およびロック元のマスタデバイスのロックマスタＩＤを含む情報）がロック情報記憶部１８２に格納される（図６の（４１））。
【００３９】
その後、共有メモリＳＭのロック対象領域に、新規のアクセス要求（リード要求、ロックマスタＩＤが異なるライト要求（ロック解除ではないライト要求）、または（アドレスに依らず）新規のロックリード要求）が到着すると、図７に示すように、新規のアクセス要求がポートＰ２を介してメモリアクセスブリッジ１４２に到着し（図７の（１））、メモリアクセス部１６２を経由してメモリアクセスアービタ１８に到着し（図７の（２）および（３））する。新規のアクセス要求は、メモリアクセスアービタ１８に受理されると、ロック情報記憶部１８２に格納されたロック情報と比較され（図７の（４））、待機が必要と判断されると、ロックトランザクションコントローラ１２に送られ、待機キューに格納される（図７の（５））。具体的には、新規のアクセス要求がリード要求またはライト要求である場合には、比較結果が一致した場合に待機が必要と判断され、新規のアクセス要求がロックリード要求である場合には比較結果にかかわらず待機が必要と判断される。
【００４０】
後続の説明の為、ここでは、新規のアクセス要求として、ロック対象領域へのリード要求が、共有メモリ制御ユニット１０に到着したとする。
【００４１】
その後、図８に示すように、アンロックライト要求が、ロックリード要求を発行したマスタデバイスＭＤ０からポートＰ１を介してメモリアクセスブリッジ１４１に到着し（図８の（１））、メモリアクセス部１６１を経由してメモリアクセスアービタ１８に到着する（図８の（２）および（３））。アンロックライト要求は、メモリアクセスアービタ１８に受理されると、ロック情報記憶部１８２に格納されたロック情報と比較され（図８の（４））、比較結果が一致する（アンロック要求であることが判明する）と、アンロック要求線（図３または４の１２６ａ）のアサートと共にロックトランザクションコントローラ１２に送られ、ロックトランザクションコントローラ１２内のライトキュー１２４に格納される（図８の（５））。
【００４２】
アンロックライト要求がロックトランザクションコントローラ１２に到着すると、図５のステートマシン１２６が、IDLE（Ｓ１００）からWAIT_REQ（Ｓ１０２）へ遷移する。
【００４３】
この段階で、図８の（６）の経路にある一時停止線（図３または４の１２６ｂ）を介して、ロックトランザクションコントローラ１２が、メモリアクセスブリッジ１４０〜１４３に、新規のアクセス要求の受理を一時停止するための一時停止指示を出力する。当該一時停止指示を受け取ったメモリアクセスブリッジ１４０〜１４３が、それぞれ、ポートＰ０〜Ｐ３を閉じることによって、アドレスにかかわらず、全ての新規のアクセス要求の受理を一時停止する（図８の（７））。
【００４４】
その後、ロックトランザクションコントローラ１２は、メモリアクセスブリッジ１４およびメモリアクセス部１６に残った残留要求がメモリアクセスアービタ１８に到着するまで待機する。
【００４５】
図９に示すように、残留要求がメモリアクセスアービタ１８に到着すると（図９の（８））、アクセス終了通知線（図３または４の１２６ｃ）を介して、メモリアクセス部１６が、ロックトランザクションコントローラ１２にアクセス終了通知を送って、残留要求がメモリアクセスアービタ１８に受理されたことを通知する（図９の（９１））。
【００４６】
アクセス終了通知がロックトランザクションコントローラ１２に到着すると、図５のステートマシン１２６が、WAIT_REQ（Ｓ１０２）からWRITE_REQ（Ｓ１０４）へ遷移する。
【００４７】
それと共に、ロックトランザクションコントローラ１２が、メモリアクセスブリッジ１４１（すなわち、アンロックライト要求が通過したメモリアクセスブリッジ）に、ライトキュー１２４に格納されたアンロックライト要求と当該アンロックライト要求が格納される前に待機していた既存のライト要求とを統合することにより得られるライト要求を再投入する（図９の（１０）。再投入されたライト要求は、メモリアクセス部１６１を経由してメモリアクセスアービタ１８に到着する（図９の（１１）および（１２））。
【００４８】
再投入されたライト要求がメモリアクセスアービタ１８に到着すると、受理通知線（図３または４の１２６ｄ）を介して、メモリアクセスブリッジ１４が、ロックトランザクションコントローラ１２に受理信号をアサートする（図９の（１３０））。
【００４９】
受理信号がアサートされると、図５のステートマシン１２６が、WRITE_REQ（Ｓ１０４）からWRITE_DATA（Ｓ１０６）へ遷移する。
【００５０】
その後、ロックトランザクションコントローラ１２が、ライトデータＷＤ及びバイトイネーブルＢＥをメモリアクセスブリッジ１４に出力する。ライトデータＷＤ及びバイトイネーブルＢＥがメモリアクセスブリッジ１４に到着すると、受理通知線１２６ｄを介して、メモリアクセスブリッジ１４が、ロックトランザクションコントローラ１２に受理信号をアサートする。
【００５１】
受理信号がアサートされると、図５のステートマシン１２６が、WRITE_DATA（Ｓ１０６）からWAIT_WRITE（Ｓ１０８）へ遷移し、再投入されたアンロックライト要求がメモリアクセスアービタ１８に到着するまで待機する。
【００５２】
再投入されたアンロックライト要求がメモリアクセスアービタ１８に到着すると、ロック情報記憶部１８２に格納された情報が更新され（図９の（１３２））、アンロックライト要求が共有メモリＳＭに送られ（図９の（１３３））、ロック対象領域のアンロックが確定する。次いで、アクセス終了通知線（図３または４の１２６ｃ）を介して、メモリアクセス部１６が、ロックトランザクションコントローラ１２にアクセス終了通知を送り、再投入されたアンロックライト要求がメモリアクセスアービタ１８に受理されたことを通知する（図９の（１３１））。
【００５３】
アクセス終了通知がロックトランザクションコントローラ１２に到着すると、本実施形態ではリードキュー１２２にリード要求があるので、図５のステートマシン１２６が、WAIT_WRITE（Ｓ１０８）からREAD_REQ（Ｓ１１０）へ遷移する。なお、リードキュー１２２にリード要求がない場合には、ステートマシン１２６は、WAIT_WRITE（Ｓ１０８）からIDEL（Ｓ１００）へ遷移する。
【００５４】
図１０に示すように、READ_REQ（Ｓ１１０）へ遷移したステートマシン１２６の制御によって、ロックトランザクションコントローラ１２は、メモリアクセスブリッジ１４２に、リードキュー１２２に格納されたリード要求を出力する（図１０の（１４））。その後、リード要求は、メモリアクセス部１６２を経由してメモリアクセスアービタ１８に到着する（図１０の（１５）および（１６））。
【００５５】
ロックトランザクションコントローラ１２は、リードポインタ回路１２１に格納されたポインタに基づいて、図１０の（１４）で出力したリード要求が最終リード要求（リードキュー１２２に格納されたリード要求のうち、最後に出力したリード要求）であるか否かを判断する。受理通知線（図３または４の１２６ｄ）を介して、メモリアクセスブリッジ１４２が、ロックトランザクションコントローラ１２に受理信号をアサートすることで、リード要求がメモリアクセスアービタ１８に受理されたことを通知し、リードポインタにより最後に出力したリード要求であることが判別されれば、その段階で最終リード要求が受理されたことを意味する（図１０の（１７））。
【００５６】
最後のリード要求に対する受理信号がアサートされると、図５のステートマシン１２６が、READ_REQ（Ｓ１１０）からWAIT_READ（Ｓ１１２）へ遷移する。
【００５７】
アクセス終了通知がロックトランザクションコントローラ１２に到着すると、ステートマシン１２６が、WAIT_READ（Ｓ１１２）からIDLE（Ｓ１００）へ遷移する。
【００５８】
ステートマシン１２６がIDLE（Ｓ１００）に戻ると、図１１に示すように、ロックトランザクションコントローラ１２からメモリアクセスブリッジ１４０〜１４３への図１１の（１８）の経路にある一時停止線（図３または４の１２６ｂ）がデアサートされる。これにより、メモリアクセスブリッジ１４０〜１４３は、新規のアクセス要求を受理することができるようになる（図１１の（１９））。
【００５９】
本実施形態によれば、複数のマスタデバイスと、共有メモリと、を備えるシステムにおいて、データの転送効率を改善することができる。
【００６０】
本実施形態に係るマルチプロセッシングシステム１の少なくとも一部は、ハードウェアで構成しても良いし、ソフトウェアで構成しても良い。ソフトウェアで構成する場合には、マルチプロセッシングシステム１の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させても良い。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でも良い。
【００６１】
また、本実施形態に係るマルチプロセッシングシステム１の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布しても良い。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布しても良い。
【００６２】
なお、本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲で構成要素を変形して具体化される。また、上述した実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明が形成可能である。例えば、上述した実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００６３】
１  マルチプロセッシングシステム
１０  共有メモリ制御ユニット
１２  ロックトランザクションコントローラ
１２１  リードポインタ回路
１２２  リードキュー
１２２０  リードアクセス情報記憶部
１２３  書込更新ロジック
１２４  ライトキュー
１２４０  ライトアクセス情報記憶部
１２４２  バイトイネーブル記憶部
１２４４  ライトデータ記憶部
１２６  ステートマシン
１２８  出力セレクタ
１４（１４０〜１４３）  メモリアクセスブリッジ
１６（１６０〜１６３）  メモリアクセス部
１８  メモリアクセスアービタ
１８２  ロック情報記憶部
ＭＤ（ＭＤ０〜ＭＤ３１）  マスタデバイス
Ｒ１（Ｒ１０〜Ｒ１７）  第１階層ルータ
Ｒ２（Ｒ２０〜Ｒ２７）  第２階層ルータ
ＩＣ  インターコネクト
ＳＭ  共有メモリ
Ｐ０〜Ｐ３  ポート
【図１】
2014186618.tif 000003
【図２】
2014186618.tif 000004
【図３】
2014186618.tif 000005
【図４】
2014186618.tif 000006
【図５】
2014186618.tif 000007
【図６】
2014186618.tif 000008
【図７】
2014186618.tif 000009
【図８】
2014186618.tif 000010
【図９】
2014186618.tif 000011
【図１０】
2014186618.tif 000012
【図１１】
2014186618.tif 000013