(57)【要約】【課題】コヒーレンス制御にディレクトリ方式を採用する情報処理装置において、キャッシュの無効化処理の完了を保証する仕組みを提供する。【解決手段】各プロセッサ１は、キャッシュと、共有メモリ４とキャッシュのデータの一貫性の処理完了保証を要求されたタイミングで、各バンク３へ自己のプロセッサに返信される識別子を、ネットワーク２を介して各バンク３へ送信し、識別子が各バンク３から返信されることを確認するフェンス制御手段と、を備え、各バンク３は、メモリ本体３３にデータが書き込まれた領域に応じて、キャッシュが保持するデータを無効化する無効化要求を発行するディレクトリ３２と、無効化要求と識別子とをキューイングし、キューイングされた順番に、無効化要求と識別子とのいずれかをプロセッサ・メモリ間ネットワーク２を介して送信する無効化要求キュー３１と、を備える。【選択図】図５
2010044599.tif 000002
【特許請求の範囲】
【請求項１】
複数のバンクから構成される共有メモリ、複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークを有する情報処理装置であって、
各プロセッサは、
前記共有メモリが保持するデータの一部の写しを保持するキャッシュと、
前記共有メモリ及び前記キャッシュが保持するデータの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を、前記ネットワークを介して前記各バンクへ送信し、前記識別子が前記各バンクから返信されることを確認するフェンス制御手段と、を備え、
各バンクは、
メモリ本体と、
前記キャッシュが保持するデータのメモリ本体の領域情報を保持し、前記メモリ本体にデータが書き込まれた領域に応じて、前記キャッシュが保持するデータを無効化する無効化要求を発行するディレクトリ手段と、
前記無効化要求と前記識別子とをキューイングし、キューイングされた順番に、前記無効化要求と識別子とのいずれかを前記ネットワークを介して送信するキューイング手段と、を備える情報処理装置。
【請求項２】
前記フェンス制御手段は、前記タイミングを、他のプロセッサが発行したリリース命令によって検出し、前記リリース命令を検出した後、前記識別子を前記複数のバンクすべてへブロードキャストすることを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記各プロセッサは、さらに、命令の実行を制御する命令制御手段を備え、
前記フェンス制御手段は、前記識別子を前記複数のバンクへ送信した後、すべてのバンクから前記識別子が返信されたことを確認するまで、前記後続する命令の実行を停止することを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記情報処理装置は、リリースコンシステンシモデルに基づいて、前記データの一貫性の処理完了を保証することを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
複数のバンクから構成される共有メモリ、キャッシュを有する複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークから構成される情報処理装置が、前記共有メモリと前記キャッシュとのコヒーレンス制御をディレクト方式により実現する順序保証方法であって、
各プロセッサは、前記共有メモリ及び前記キャッシュの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を各バンクへ送信し、
各バンクは、
前記キャッシュの無効化を要求する無効化要求と前記識別子とを、受け付けた順番にキューイングし、
キューイングした順番に、前記無効化要求と識別子とを前記複数のプロセッサの少なくとも一つに送信し、
前記各プロセッサは、前記識別子が返信されることを確認する順序保証方法。
【請求項６】
前記各プロセッサは、前記識別子がすべてのバンクから返信されたタイミングで、後続の命令を実行することを特徴とする請求項５記載の順序保証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、共有メモリと、キャッシュを有する複数のプロセッサを備え、ディレクトリ方式でコヒーレンス制御を行う情報処理装置において、共有メモリとキャッシュとが保持するデータの一貫性を保証する情報処理装置及び順序保証方法に関し、特に、共有メモリが複数のバンクから構成され、リリースコンシステンシモデル（Release Consistency Model）を採用する情報処理装置及び順序保証方法に関する。
【背景技術】
【０００２】
キャッシュを有する複数のプロセッサがメモリ（共有メモリ）を共有するシステムにおいて、共有メモリに書き込みが行われた場合、各プロセッサが有するキャッシュが保持するデータを無効化させ、共有メモリとキャッシュとが保持するデータの一貫性を保証するコヒーレンス制御が必要となる。コヒーレンス制御を実現するため、プロセッサが発行するストア命令に伴って、キャッシュが保持するデータを無効化（クリア）する無効化要求が発行される。また、無効化要求の処理完了を保証するため、例えば、Ｒｅｌｅａｓｅ命令とＦｅｎｃｅ命令とを用いる。
【０００３】
具体的には、共有メモリにデータを書き込むＲｅｌｅａｓｅ側プロセッサと、キャッシュのデータを無効化することが要求されるＡｃｑｕｉｒｅ側プロセッサとを想定した場合、次のような制御が必要となる。Ｒｅｌｅａｓｅ側プロセッサは、Ａｃｑｕｉｒｅ側プロセッサと同期をとるために、Ｒｅｌｅａｓｅ命令を発行する。Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令を検出することによって、Ｒｅｌｅａｓｅ側プロセッサとの同期を確立する。ここで、Ｒｅｌｅａｓｅ側プロセッサとＡｃｑｕｉｒｅ側プロセッサとが同期をとるとは、Ｒｅｌｅａｓｅ命令発行前に、Ｒｅｌｅａｓｅ側プロセッサが共有メモリへアクセスした結果が共有メモリに反映された状態であり、かつ、この共有メモリへの書き込み（ストア命令）にともなって、Ａｃｑｕｉｒｅ側プロセッサが有するキャッシュの無効化要求が発行された状態である。ただし、この段階において、発行された無効化要求の処理の完了は保証されていない。
【０００４】
例えば、特許文献１に複数のプロセッサと複数の主記憶をスイッチ型主記憶制御装置で接続したマルチプロセッサ方式の情報処理装置で、コヒーレンス制御を実現する技術が開示されている。
【０００５】
また、リリースコンシステンシモデルにおいて、通常の処理、すなわち、共有メモリとキャッシュとが保持するデータの一貫性を保証するタイミングが指定されるまでの期間では、キャッシュの無効化処理の順序は問われない。複数のバンクから構成される共有メモリにおいて、各バンクから無効化要求が発行されるタイミングは異なるため、各プロセッサにおいて無効化要求の処理完了を保証することは困難であった。また、特許文献１には、この技術について言及されていなかった。
【特許文献１】特開２００２−７３７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、複数のバンクから構成されるメモリを、複数のプロセッサ間で共有し、ディレクトリ方式でコヒーレンス制御を行う情報処理装置（コンピュータシステム）において、共有メモリとキャッシュとが保持するデータの一貫性が保証されるタイミングの検出が必要であった。特に、情報処理装置がリリースコンシステンシモデルに準拠するためには、共有メモリとキャッシュとが保持するデータの一貫性を実現する無効化要求の処理完了を保証するタイミングが指定された場合、各プロセッサが有するキャッシュの無効化要求の完了を保証する機構が必要であった。
【０００７】
本発明は、このような事情に鑑みてなされたものであり、複数のバンクから構成される共有メモリのコヒーレンス制御にディレクトリ方式を採用する情報処理装置において、キャッシュの無効化処理の完了を保証する仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理装置の一態様は、複数のバンクから構成される共有メモリ、複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークを有する情報処理装置であって、各プロセッサは、前記共有メモリが保持するデータの一部の写しを保持するキャッシュと、前記共有メモリ及び前記キャッシュが保持するデータの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を、前記ネットワークを介して前記各バンクへ送信し、前記識別子が前記各バンクから返信されることを確認するフェンス制御手段と、を備え、各バンクは、メモリ本体と、前記キャッシュが保持するデータのメモリ本体の領域情報を保持し、前記メモリ本体にデータが書き込まれた領域に応じて、前記キャッシュが保持するデータを無効化する無効化要求を発行するディレクトリ手段と、前記無効化要求と前記識別子とをキューイングし、キューイングされた順番に、前記無効化要求と識別子とのいずれかを前記ネットワークを介して送信するキューイング手段と、を備える。
【０００９】
また、本発明に係る順序保証方法の一態様は、複数のバンクから構成される共有メモリ、キャッシュを有する複数のプロセッサ、及び、前記複数のプロセッサと前記共有メモリとを接続するネットワークから構成される情報処理装置が、前記共有メモリと前記キャッシュとのコヒーレンス制御をディレクト方式により実現する順序保証方法であって、各プロセッサは、前記共有メモリ及び前記キャッシュの一貫性の処理完了保証を要求されたタイミングで、発行元に返信される識別子を各バンクへ送信し、各バンクは、前記キャッシュの無効化を要求する無効化要求と前記識別子とを、受け付けた順番にキューイングし、キューイングした順番に、前記無効化要求と識別子とを前記複数のプロセッサの少なくとも一つに送信し、前記各プロセッサは、前記識別子が返信されることを確認する。
【発明の効果】
【００１０】
本発明によれば、複数のバンクから構成される共有メモリのコヒーレンス制御にディレクトリ方式を採用する情報処理装置において、キャッシュの無効化処理の完了を保証する仕組みを提供することが可能となる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。また、本明細書では、同じ構成要素が複数存在し、それぞれを区別する場合に、符号に"−ｎ"（ｎ≧０の整数）付加して、複数の構成要素それぞれを区別するものとする。例えば、図１では、複数のプロセッサ１−０、１−１・・・１−ｊ（図１では、ｊ＝３）を示している。図１を用いて説明する場合、プロセッサ１は、複数のプロセッサ１−１〜１−ｊのいずれか一つまたは複数を示すものとし、プロセッサ１−１（あるいは、プロセッサ１−２など）は、複数のプロセッサのそれぞれを区別して示すものとする。
【００１２】
まず、前提となるリリースコンシステンシモデルについて説明する。図１には、リリースコンシステンシモデルのメモリ順序保証を示している。メモリ順序保証とは、データの大域可視性（Global Visibility）を保証することである。すなわち、共有メモリとキャッシュとが保持するデータの一貫性を実現するために必要な処理の完了を保証することである。具体的には、共有メモリとキャッシュとが保持するデータの一貫性を実現するため、共有メモリへデータを書き込むストア命令に伴って、キャッシュのデータの無効化を要求する無効化要求が発行される。発行された無効化要求の処理完了のタイミングを検出することによって、大域可視性を保証する。。リリースコンテンシモデルでは、キャッシュの無効化要求の処理順序は問われない。このため、所定のタイミングまでに発行された無効化要求について、処理が完了している状態を「メモリ順序保証」、あるいは、「データ順序性の保証」という場合がある。図１では、Ｒｅｌｅａｓｅ命令（リリース命令）とＦｅｎｃｅ命令（フェンス命令）とによって、メモリ順序保証を実現している。Ｆｅｎｃｅ命令は、Ａｃｑｕｉｒｅ命令（アクワイヤ命令）ということもある。
【００１３】
図１では、共有メモリと、共有メモリが記憶するデータの一部の写しを保持するキャッシュを有する複数のプロセッサ情報処理装置を前提としている。また、複数のプロセッサの一つをＲｅｌｅａｓｅ側プロセッサ（リリース側プロセッサ）、他の一つをＡｃｑｕｉｒｅ側プロセッサ（アクワイヤ側プロセッサ）とし、Ｒｅｌｅａｓｅ側プロセッサがＲｅｌｅａｓｅ命令を発行することによって、Ａｃｑｕｉｒｅ側プロセッサとの同期をとる手順を説明している。Ｒｅｌｅａｓｅ命令は、Ｒｅｌｅａｓｅ側プロセッサとＡｃｑｕｉｒｅ側プロセッサとが同期をとるタイミングを指示する命令である。言い換えれば、共有メモリが保持するデータと、プロセッサが備えるキャッシュが保持するデータとの一貫性の無効化処理完了を保証することを要求する命令である。従って、Ａｃｑｕｉｒｅ側プロセッサにとって、Ｒｅｌｅａｓｅ命令を検出したタイミングは、データの一貫性の処理完了保証を要求されたタイミングであるといえる。
【００１４】
リリースコンシステンシモデルではＲｅｌｅａｓｅ命令が発行される前のメモリアクセス命令の可視化順序は保証されない。すなわち、メモリアクセス命令、例えば、ストア命令（書き込み命令）に伴って発行される無効化要求が処理されるタイミングはバンク毎に独立して処理されるため、不確定である。従って、他のプロセッサからメモリアクセス命令を実行した結果が参照できるタイミングは保証されていないといえる。
【００１５】
しかし、同期化を行うＲｅｌｅａｓｅ命令の発行をきっかけにＲｅｌｅａｓｅ命令以前の共有メモリへのアクセスの完了を保証する処理を開始する。具体的には、Ｒｅｌｅａｓｅ側プロセッサは、共有メモリへのアクセス命令（特に、Ｓｔｏｒｅ命令）が完了したタイミングで、Ｒｅｌｅａｓｅ命令を発行する。Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令を検出した後、Ｆｅｎｃｅ命令を発行することによって、無効化要求の処理完了を保証する手続きを実行する。
【００１６】
図１に示すように、Ｒｅｌｅａｓｅ命令が発行される段階では、Ｒｅｌｅａｓｅ側プロセッサが発行する共有メモリへのアクセス命令の完了が保証される。すなわち、Ｒｅｌｅａｓｅ側プロセッサは、Ｒｅｌｅａｓｅ命令発行前に実行されるべきＳｔｏｒｅ命令を発行した後、Ｒｅｌｅａｓｅ命令を発行する。また、Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令を検出した後、Ｆｅｎｃｅ命令を発行し、共有メモリのデータの順序性を保証する処理を実施する。
【００１７】
Ｒｅｌｅａｓｅ側プロセッサは、例えば、Ｒｅｌｅａｓｅ命令として共有メモリの所定の領域に所定のストアデータを書き込むストア命令を発行する。Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令によるストアデータをＬｏａｄ命令と分岐命令とを実行することによって待ち合わせをし（待ち状態）、待ち合わせが完了すると次の処理に進むシーケンスになっている。ストアデータについては、予め、Ｒｅｌｅａｓｅ側プロセッサとＡｃｑｕｉｒｅ側プロセッサとの間で取り決めてあることを前提とする。
【００１８】
分岐命令でストアデータの書き込みが検出されると、Ａｃｑｕｉｒｅ側プロセッサは、Ｆｅｎｃｅ命令（Ａｃｑｕｉｒｅ命令）を発行する。このＦｅｎｃｅ命令が発行された以降では、共有メモリのデータの順序性を保証しなければならない。すなわち、共有メモリとキャッシュメモリとの一貫性が保証される必要がある。従って、Ｆｅｎｃｅ命令が発行された後の期間（厳密には、Ｆｅｎｃｅ命令の処理完了後の期間）は、Ｒｅｌｅａｓｅ命令が発行される前に要求された無効化要求の処理が完了し、共有メモリのデータ順序性が保証される必要がある。
【００１９】
共有メモリのデータの順序性を保証するために、Ｆｅｎｃｅ命令は次の２つを実現しなければならない。
（１）Ｆｅｎｃｅ命令より後続のＬｏａｄ命令が投機的に実行されないこと。
すなわち、待ち合わせが完了する前の共有メモリへのアクセスを抑止しなければならない。
通常、（１）の機能はプロセッサ内で、Ｌｏａｄ命令がＦｅｎｃｅ命令を追い越すことを不許可にすることで実現する。
（２）Ｒｅｌｅａｓｅ命令以前のＳｔｏｒｅ命令によるＡｃｑｕｉｒｅ側プロセッサに対する無効化要求の完了の保証すること。この（２）を実現する必要がある。しかしながら、複数バンクから構成されるメモリを複数のプロセッサで共有し、かつ、プロセッサの持つキャッシュ間でのコヒーレンス制御をするアーキテクチャを前提とした場合、バンク構成の共有メモリから発行されるキャッシュへの無効化要求の完了順序は保証されない。具体的には、キャッシュの無効化要求の処理の順番は不確定であり、無効化要求の処理の完了を把握する仕組みは、図１には表わされていない。
【００２０】
しかしながら、前述のようにリリースコンシステンシモデルでは、同期化処理であるＦｅｎｃｅ命令完了時には、無効化要求の完了順序は保証されていなければならない。すなわち、Ｒｅｌｅａｓｅ命令が発行される前に要求されたキャッシュの無効化要求の処理がすべて完了している必要がある。
【００２１】
従って、Ｒｅｌｅａｓｅ命令以前のストア命令による無効化要求がＦｅｎｃｅ命令の終了時には、完了していることを保証する何らかの機構が必要である。以下の実施形態では、キャッシュの無効化要求の完了を保証する仕組みについて説明する。
【００２２】
（実施形態１）
実施形態１では、Ｆｅｎｃｅ命令発行に無効化要求の処理完了を把握できる仕組みを追加する。具体的には次のような処理を実施する。まず、Ｆｅｎｃｅ命令発行時に、当該命令の識別子（Ｆｅｎｃｅ命令ＩＤ）を共有メモリの全バンクにブロードキャストする。識別子は、発行元に返信させる命令である。これにより、ブロードキャストされたすべての識別子が、各バンクが持つ無効化要求キューにキューイングされる。その後、識別子が発行元プロセッサに戻ることによって、Ｆｅｎｃｅ命令発行以前の無効化要求の完了を保証する。以下、図面を用いて詳細に説明する。
【００２３】
図２は、本発明の実施形態１に係る情報処理装置の構成例を示すブロック図である。情報処理装置は、プロセッサ１、プロセッサ・メモリ間ネットワーク（ネットワーク）２、及び、共有メモリ４を備える。共有メモリ４は、複数のバンク３から構成されている。図１では、４つのプロセッサ１−０〜１−３、Ｎ＋１個（Ｎ≧０）のバンク３−０〜３−Ｎを示しているが、これらの数は一例であり、これらの数に限られるわけではない。
【００２４】
プロセッサ１は、プロセッサ・メモリ間ネットワーク２を介して共有メモリ４へアクセスする。プロセッサ１の内部構成例を、図３に示す。プロセッサ１は、命令制御部（命令制御手段）１１、Ｌ１キャッシュ（キャッシュ）１２、ＦＥＮＣＥ制御部（フェンス制御手段）１３、無効化要求制御部１４、及び、ストア制御部１５を備える。
【００２５】
命令制御部１１は、命令の制御を行う。例えば、ストア命令、ロード命令など共有メモリ４をアクセスする命令、並びに他の命令の実行を制御する。
【００２６】
Ｌ１キャッシュ１２は、一般的にプロセッサ、もしくは、プロセッサコアごとに設けられる一次キャッシュである。Ｌ１キャッシュ１２は、バンク３が保持するデータのコピーを一時的に保持する。本明細書では、データのコピーを保持する単位（領域）をキャッシュラインとして説明する。また、Ｌ１キャッシュ１２は、他プロセッサから要求される無効化要求によって、該当するキャッシュラインが無効化（データを保持していない状態にクリア）される。
【００２７】
ＦＥＮＣＥ制御部１３は、Ｆｅｎｃｅ命令の制御を行う。具体的には、Ｒｅｌｅａｓｅ側プロセッサとの同期化の際に、Ｆｅｎｃｅ命令ＩＤ（識別子）を共有メモリの全バンクにブロードキャストする機能、ブロードキャストした全Ｆｅｎｃｅ命令ＩＤがリプライされたことを確認する機能、及び、その確認を元に、後続命令の実施を許可する信号を命令制御部１１に通知する機能を有する。
【００２８】
無効化要求制御部１４は、無効化要求を受け、Ｌ１キャッシュを無効化する機能を有している。無効化要求は、他プロセッサからストア命令が発行された際、自プロセッサで同一キャッシュラインを保持している場合、共有メモリ４内のバンク３から、当該キャッシュラインの無効化要求が発行される。
【００２９】
ストア制御部１５は、ストア系命令（ストア命令または共有メモリのデータを書き換える命令）を制御する。ストア制御部１５は、Ｒｅｌｅａｓｅ命令発行時に、Ｒｅｌｅａｓｅ命令以前の命令が、発行済みであることを保証する機能も有する。
【００３０】
プロセッサ・メモリ間ネットワーク２は、プロセッサ１と共有メモリ４とを接続する機構である。本実施形態では、接続形態は問わない。
【００３１】
共有メモリ４は、複数のプロセッサ１が使用する記憶領域である。ここでは、バンク構成をとる共有メモリを示している。図２では、共有メモリを示したが、共有キャッシュでも構わない。共有メモリ４は、近年のマルチコア構成のプロセッサ間で、共有されるオンチップのキャッシュも含まれる。複数のバンク３は、共有メモリ４を構成するバンク型メモリである。図２のバンク３−０に内部構成例を示している。なお、他のバンク３も同様の構成を有するが記載を省略している。バンク３は、無効化要求キュー（キューイング手段）３１、ディレクトリ（ディレクトリ手段）３２、メモリ本体３３を備える。
【００３２】
ディレクトリ３２は、Ｌ１キャッシュ１２−共有メモリ４間の一貫性を一元管理する機能を持つ。また、ディレクトリ３２は、各プロセッサ１がＬ１キャッシュ１２に保持するキャッシュラインの情報（領域情報）を保持する。ディレクトリ３２は、保持するキャッシュラインの情報に基づいて、Ｌ１キャッシュ１２の無効化が必要と判断した場合、無効化が必要とされたプロセッサ１に向けた無効化要求を発行するように無効化要求キュー３１に対して、指示する機能も有する。無効化要求は、無効化対象のプロセッサ１の情報を含む。
【００３３】
無効化要求キュー３１は、ディレクトリ３２から発行される無効化要求を、無効化対象のプロセッサに対して発行する機能を有する。図４に、無効化要求キュー３１の構成例を示す。無効化要求キュー３１は、Ｆｉｒｓｔ−Ｉｎ−Ｆｉｒｓｔ−Ｏｕｔのキュー構造をとる。図４では、下から（末尾から）無効化要求などがエントリされ、上に行くほど古いエントリとなっている例を示している。エントリの先頭（一番古くエントリされたもの）になったものからプロセッサ１に対して無効化要求を発行する。また、無効化要求キュー３１は、エントリの入り口として、ディレクトリ３２からエントリされる無効化要求の入り口の他に、Ｆｅｎｃｅ命令ＩＤを受ける入り口を有する。Ｆｅｎｃｅ命令ＩＤは、プロセッサ１のＦＥＮＣＥ制御部１３からブロードキャストされた識別子であり、Ｆｅｎｃｅ命令ＩＤも無効化要求と同じようにキューイングされ、キューの先頭に来たときに発行元であるプロセッサ１に対して発行される。
【００３４】
メモリ本体３３は、コンピュータシステムにおける一般的なメモリである。
【００３５】
次に、無効化要求が無効化要求キュー３１に格納され処理されるまでの動作の概要を時系列に説明する。図５では、次の事項を前提とする。プロセッサ１−０がＲｅｌｅａｓｅ側プロセッサであり、プロセッサ１−３がＡｃｑｕｉｒｅ側プロセッサとする。共有メモリ４を構成する複数のバンク３のうち、バンク３−０とバンク３−Ｎを示して説明する。また、Ｒｅｌｅａｓｅ側プロセッサがストア命令を発行するとバンク３のディレクトリ３２は、無効化処理の必要性を判断する。具体的には、Ａｃｑｕｉｒｅ側プロセッサが共有しているキャッシュラインと、ストア命令で書き込むキャッシュラインとが一致する場合、ディレクトリ３２は、Ａｃｑｕｉｒｅ側プロセッサが有するＬ１キャッシュ１２のうち、対応するキャッシュラインを無効化する無効化要求を発行する。符号ＡからＨは、処理（命令）の流れを示すラインである。以下、具体的に説明する。
【００３６】
まず、Ｒｅｌｅａｓｅ側プロセッサは、Ａｃｑｕｉｒｅ側プロセッサが共有しているキャッシュラインに対してストア命令を発行する（ラインＡ）。ストア命令は、ディレクトリ３２に入力されるとともに、メモリ本体３３へデータの書き込みを実施する。ストア命令が共有メモリへの書き込みを行う際、ディレクトリ３２は、保持するキャッシュラインの情報を調べ、無効化が必要なプロセッサを検出する。ここでは、Ａｃｑｕｉｒｅ側プロセッサ（プロセッサ１−３）のＬ１キャッシュ１２が該当すると仮定する。ディレクトリ３２は、自己のバンク３が持つ無効化要求キュー３１にＡｃｑｕｉｒｅ側プロセッサに対する無効化要求（例えば、無効化要求＃２）をキューイングする（ラインＢ）。
【００３７】
キューイングされた無効化要求はキューの先頭になると無効化要求によって指定されたプロセッサ１に対して発行される（ラインＣ）。各バンク３の無効化要求キュー３１から発行された無効化要求の完了順序は保証されていない。すなわち、各バンクが独立して無効化要求を発行すること、各バンク３の無効化要求キュー３１の混み具合が異なること、あるいは、バンク３からＡｃｑｕｉｒｅ側プロセッサまでの経路の混み具合が異なること等よって、無効化要求が実行される順番に入れ替わりが発生し得る。具体的には、例えば図５において、バンク３−０へのＳｔｏｒｅ命令に伴って無効化要求＃２がキューイングされ、続いて、バンク３−ＮへのＳｔｏｒｅ命令に伴って無効化要求＃１０がキューイングされる。しかしながら、無効化要求＃２及び無効化要求＃１０の処理が完了する順序は不明である。
【００３８】
Ｒｅｌｅａｓｅ側プロセッサは、Ｒｅｌｅａｓｅ命令を発行することによって、Ａｃｑｕｉｒｅ側プロセッサと同期をとる（ラインＤ）。言い換えれば、Ｒｅｌｅａｓｅ側プロセッサは、Ａｃｑｕｉｒｅ側プロセッサと同期をとる場合に、Ｒｅｌｅａｓｅ命令を発行する。
【００３９】
一方、Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令を受けることによって、Ｆｅｎｃｅ命令を発行する（ラインＥ）。ここでは、プロセッサ１−２がＦｅｎｃｅ命令を発行する。Ｆｅｎｃｅ命令の実行が開始されると、全バンク３に対して、当該命令の識別子がブロードキャストされる。ブロードキャストされた識別子は、先の無効化要求で使用した無効化要求キュー３１にキューイングされる（ラインＦ−０〜Ｆ−Ｎ）。図５では、バンク３−０とバンク３−Ｎの二つを示しているが、他のバンクでも同様にＦｅｎｃｅ命令ＩＤがキューイングされる。
【００４０】
全バンク３上の各無効化要求キュー３１から、無効化要求が順次発行されると、いずれ、該識別子の発行順序となる。発行対象になった当該識別子（Ｆｅｎｃｅ命令ＩＤ）は発行元プロセッサに戻される（ラインＧ−０〜Ｇ−Ｎ）。Ａｃｑｕｉｒｅ側プロセッサが、ブロードキャストした全識別子を受理すれば、同期化以前のすべての無効化要求が完了したことが保証される（ラインＨ）。すなわち、全識別子受理が完了した時点で、Ａｃｑｕｉｒｅ側プロセッサは後続の処理に進むことが可能になる。
【００４１】
続いて、図６、７のフローチャートを用いて、Ｒｅｌｅａｓｅ側プロセッサが共有メモリ４へ共有データを書き込む処理（プロセッサ側の共有データ書き込み処理）、及びＡｃｑｕｉｒｅ側プロセッサがＲｅｌｅａｓｅ命令の受信に伴って実行する同期化処理（Ａｃｑｕｉｒｅ側同期化処理）を具体的に説明する。
【００４２】
図６は、Ｒｅｌｅａｓｅ側プロセッサが共有メモリにデータを書き込む処理の動作例を示すフローチャートである。図７は、Ａｃｑｕｉｒｅ側プロセッサの同期化処理の動作例を示すフローチャートである。図６に示すＲｅｌｅａｓｅ側の共有データ書き込み処理は、Ｒｅｌｅａｓｅ側プロセッサの動作に起因するものである。また、図７に示すＡｃｑｕｉｒｅ側同期化処理は、Ａｃｑｕｉｒｅ側プロセッサの動作に起因するものである。
【００４３】
まず、Ｒｅｌｅａｓｅ側の共有データ書き込み処理について図２、３、及び６を参照して説明する。はじめに、Ｒｅｌｅａｓｅ側プロセッサは、Ａｃｑｕｉｒｅ側プロセッサと共有しているメモリ空間に対してストア命令を発行したと仮定する（Ｓ１１）。このストア命令は、プロセッサ１内のストア制御部１５を介してプロセッサ・メモリ間ネットワーク２を通り、共有メモリ４を構成するいずれかのバンク３−０、３−１・・・３−Ｎに送られる。
【００４４】
バンク３内のディレクトリ３２は、受信したストア命令のコヒーレンシを調べ（Ｓ１２）、メモリの一貫性を保持するために、無効化が必要か否かを判断する（Ｓ１３）。ディレクトリ３２は、無効化要求が必要なければ、処理を終了し（Ｓ１３でＮ）、無効化要求が必要な場合（Ｓ１３でＹ）、無効化要求キュー３１へ、無効化要求をキューインする（Ｓ１４）。キュー構造である無効化要求キュー３１の先頭に当該無効化要求が到達すると対象プロセッサに対して、無効化要求を発行する（Ｓ１５）。無効化要求を受理したプロセッサ１の無効化要求制御部１４は、要求に応じてＬ１キャッシュ１２を無効化する。
【００４５】
ただし、この無効化要求は、いつ終了するかは、この状態では保証されていない。すなわち、無効化要求が無効化要求キュー３１から発行されるタイミングは保証されていない。無効化要求の完了の保証は、後述のＡｃｑｕｉｒｅ側プロセッサで実現する。ここまでが、Ｒｅｌｅａｓｅ側プロセッサのストア命令による無効化動作の流れである。
【００４６】
次に、Ａｃｑｕｉｒｅ側同期化処理の動作を図２、３、及び７を参照して説明する。ここでは、Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令をＬｏａｄ命令、および、分岐命令にて、待ち合わせし、同期化を行う場合を説明する（Ｓ２１、Ｓ２２）。すなわち、Ｒｅｌｅａｓｅ命令による書き込みをポーリングする形式となる。しかしながら、この手順に限らず、他の手順を用いて、Ｒｅｌｅａｓｅ命令を待つ状態を構成することも可能である。
【００４７】
ここでは、Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ側プロセッサが発行するＲｅｌｅａｓｅ命令によって共有メモリ４の任意のバンク３の所定領域に、任意の値が書き込まれることを検出する。より具体的には、Ａｃｑｕｉｒｅ側プロセッサの命令制御部１１は、ロード命令を実行して、当該所定領域を読み出し（Ｓ２１）、読み出した値が任意の値を検出するまで、ロード命令を繰り返す（Ｓ２２でＮ）。任意の値を検出した場合Ｒｅｌｅａｓｅ命令待ち合わせ完了とする（Ｓ２２でＹ）。
【００４８】
Ａｃｑｕｉｒｅ側プロセッサは、Ｒｅｌｅａｓｅ命令による書き込みを確認すると（Ｓ２２でＹ）、ＦＥＮＣＥ制御部１３は、Ｆｅｎｃｅ命令を発行する。このＦｅｎｃｅ命令により、先に説明した（１）Ｆｅｎｃｅ命令より後続のＬｏａｄ命令が投機的に実行されないこと、（２）Ｒｅｌｅａｓｅ命令以前のＳｔｏｒｅ命令によるＡｃｑｕｉｒｅ側プロセッサに対する無効化要求の完了すること、を保証する。ただし、（１）は、一般的に知られた常套手段があることから、以降では本発明の主眼である（２）「無効化要求の完了の保証」について言及する。
【００４９】
Ｆｅｎｃｅ命令が発行されると、ＦＥＮＣＥ制御部１３は、当該Ｆｅｎｃｅ命令の識別子であるＦｅｎｃｅ命令ＩＤを共有メモリの全バンク３に対して発行する（Ｓ２４）。このとき、ＦＥＮＣＥ制御部１３は、命令制御部１１に後続する命令の実行を停止させる制御（後続命令の実行停止）を行う。Ｆｅｎｃｅ命令ＩＤを受理した共有メモリ４の各バンク３は、Ｆｅｎｃｅ命令ＩＤを無効化要求キュー３１にキューイングする（Ｓ２５）。各バンク３は、Ｆｅｎｃｅ命令ＩＤが無効化要求キュー３１の先頭に来ると発行元のプロセッサ１にＦｅｎｃｅ命令ＩＤをリプライする（Ｓ２６）。ＦＥＮＣＥ制御部１３は、ブロードキャストした全Ｆｅｎｃｅ命令ＩＤがリプライされるのを確認する（Ｓ２７）。すなわち、ブロードキャストしたＦｅｎｃｅ命令ＩＤがすべてリプライされたことを確認することによってＦｅｎｃｅ命令発行以前に発生している無効化要求はすべて完了していること保証できることになる。
【００５０】
全リプライを確認したＦＥＮＣＥ制御部１３は、命令制御部１１に、後続命令の実行許可を通知する。その結果、通常の後続命令が無効化要求も含めたメモリの順序保証がなされた状態で実行される（Ｓ２８）。
【００５１】
以上説明したように、本実施形態によれば、バンク構成で無効化要求の順序保証がなされない共有メモリアーキテクチャにおいて、Ａｃｑｕｉｒｅ側プロセッサに対する無効化要求の大域可視性を保証することができる。
【００５２】
本発明は、例えば、複数のプロセッサで共有されるメモリ（もしくは、共有キャッシュ）を有し、その共有メモリが複数のバンクから構成され、コヒーレンス制御にディレクトリ方式を採用するコンピュータアーキテクチャに適用することができる。これにより、プロセッサが有するキャッシュの無効化処理の完了を保証することが可能となる。特に、このアーキテクチャに本発明を適用することにより、リリースコンシステンシモデルに基づくメモリの順序保証を実行するＡｃｑｕｉｒｅ側プロセッサに対する無効化要求の大域可視性を保証する方式を実現することができる。
【００５３】
また、本発明は、複数のプロセッサから構成される共有メモリ型のコンピュータシステムにおいて、各プロセッサが保持するキャッシュ間でのコヒーレンス制御を行い、かつ、そのメモリ順序保証方式にリリースコンシステンシモデルを採用するすべてのコンピュータシステムでの利用が考えられる。
【００５４】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００５５】
【図１】リリースコンテンシモデルで動機をとる手順を説明する図である。
【図２】本発明の実施形態１に係る情報処理装置の構成例を示すブロック図である。
【図３】プロセッサの構成例を示すブロック図である。
【図４】無効化要求キューの構成例を示す図である。
【図５】無効化要求の処理の概要を示す図である。
【図６】Ｒｅｌｅａｓｅ側プロセッサが共有メモリにデータを書き込む処理の動作例を示すフローチャートである。
【図７】Ａｃｑｕｉｒｅ側プロセッサの同期化処理の動作例を示すフローチャートである。
【符号の説明】
【００５６】
１  プロセッサ
２  プロセッサ・メモリ間ネットワーク
３  バンク
４  共有メモリ
１１  命令制御部
１２  Ｌ１キャッシュ
１３  ＦＥＮＣＥ制御部
１４  無効化要求制御部
１５  ストア制御部
３１  無効化要求キュー
３２  ディレクトリ
３３  メモリ本体
【図１】
2010044599.tif 000003
【図２】
2010044599.tif 000004
【図３】
2010044599.tif 000005
【図４】
2010044599.tif 000006
【図５】
2010044599.tif 000007
【図６】
2010044599.tif 000008
【図７】
2010044599.tif 000009