JP4689783B2 - 分散共有メモリ型並列計算機 - Google Patents
分散共有メモリ型並列計算機 Download PDFInfo
- Publication number
- JP4689783B2 JP4689783B2 JP27529399A JP27529399A JP4689783B2 JP 4689783 B2 JP4689783 B2 JP 4689783B2 JP 27529399 A JP27529399 A JP 27529399A JP 27529399 A JP27529399 A JP 27529399A JP 4689783 B2 JP4689783 B2 JP 4689783B2
- Authority
- JP
- Japan
- Prior art keywords
- node
- data
- state
- memory
- information
- 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 - Fee Related
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【発明の属する技術分野】
本発明は、プロセッサと、共有メモリの一部と、キャッシュとを有するノードを複数有し、
各ノードは、各ノードに対応する相互結合網ルータにより結合される、分散共有メモリ型並列計算機に関する。
【0002】
【従来の技術】
図9は、分散共有メモリ型並列計算機の全体構成例を示し、図10及び図11は、各々その構成要素である、相互結合網ルータの構成例、及びノードの内部構成例を示す。
【0003】
相互結合網ルータは、自ノードおよび他の相互結合網ルータと、共有メモリのデータ及びメモリアクセス要求のやり取りをするためのインタフェースである、パケットバッファと、クロスバと、メモリアクセス要求に記載されたノードIDに従って次に送るべき相互結合網ルータを決定するルーティングコントローラとを有する。
【0004】
ノードは、プロセッサと、共有メモリの一部と、メモリコントローラと、キャッシュとを有し、
キャッシュは、共有メモリのブロック毎のデータのコピーと、アドレスとを有する。
【0005】
図12は、図11の二つのノードのプロセッサが、互いにメモリを共有する分散共有メモリ型並列計算機におけるデータの一貫性管理の必要性を説明する。この例では、メモリアクセス要求を送るべきノードは他方のノードであり、一意に決まるため、相互結合網ルータは省略されている。
【0006】
プロセッサBが、プロセッサAのノードの共有メモリのブロックのデータをキャッシュにコピーしている状況において、共有メモリを有するノードのプロセッサA、すなわちホームノードのプロセッサが当該データを更新しようとした場合、プロセッサBのノードのキャッシュにある、当該ブロックのデータを同時に無更新しなければ、プロセッサBが間違ったデータを読み出してしまうということが起こる。
【0007】
これを避ける手段として、図12の分散共有メモリ型並列計算機にディレクトリ方式を適用した例を図13に示す。
この例では、共有メモリのブロック毎に、
ブロックのデータのコピーを保持するキャッシュの属するノードIDを示すノード情報と、
MSIプロトコル( M: Modified、S: Shared、I: Invalid ) の3状態を示す状態情報と、
を有するディレクトリを設け、
メモリコントローラに一貫性管理機能を持たせ、メモリコントローラとする。
【0008】
状態情報がM状態であれば、あるノードがオーナーノードとしてキャッシュの当該ブロックのデータを更新した状態、すなわち、共有メモリのデータと、オーナーノードのキャッシュのデータとが一致していないことを表し、
S状態であれば、1つ以上のノードが共有ノードとして当該ブロックのデータを保持し、各々のキャッシュのデータと、共有メモリのデータが一致していることを表し、
I状態であれば、他に、共有メモリの当該ブロックのデータを保持するノードはないことを表す。
【0009】
ノードとして、オーナーノードは1個であり、ノードIDとしてコードで表現されるが、共有ノードは最大、全ノードがあり得るため、共有ノードはビットマップで表しても良い。
【0010】
また、共有メモリのあるブロックのデータが、更新された状態と共有された状態は、同時には発生しないため、オーナーノードの情報は、共有ノードの情報と同じフィールドに登録されても良い。以下オーナーノードの情報と、共有ノードの情報はノード情報として説明する。
【0011】
メモリコントローラは、以下の機能により共有メモリ及び各キャッシュのデータの一貫性を保つ。
【0012】
1.メモリコントローラが受け取ったメモリアクセス要求が自ノードの共有メモリに対する読み出し要求の場合、当該ブロックのディレクトリに保持された状態情報とノード情報を参照し、
状態情報がS状態の場合は、データを読み出し、要求元ノードにデータを送ると共に、ノード情報に、要求元ノードIDを追加し、
状態情報がM状態の場合は、読み出し要求をオーナーノードに転送し、状態情報をS状態とし、ノード情報として、元のオーナーノードIDと、要求元ノードIDを登録する。
【0013】
2.メモリコントローラが受け取ったメモリアクセス要求が、自ノードの共有メモリに対する無効化/更新要求の場合、当該ブロックのディレクトリに保持された状態情報とノード情報を参照し、
共有ノードがある場合には、共有ノードに無効化要求を送り、状態情報をM状態とし、ノード情報として要求元ノードIDを登録する。
共有ノードがない場合には、状態情報をM状態とし、ノード情報として要求元ノードIDを登録する。
【0014】
3.メモリコントローラが受け取ったメモリアクセス要求が、他ノードの共有メモリに対するメモリアクセス要求である場合、その共有メモリを有するノードにメモリアクセス要求を転送する。
【0015】
このように、ディレクトリ方式を用いる分散共有メモリ型並列計算機では、各ノードは、メモリコントローラの機能により、共有メモリと各キャッシュのデータの一貫性を保つ。
【0016】
図14は、図13の、ディレクトリ方式によるデータの一貫性管理の動作について説明する。
図14(1) において、プロセッサAで、ノードAの共有メモリのアドレスadr に対するデータの読み出し要求が発生すると、メモリコントローラはアドレスadr のディレクトリを参照する。この場合、ディレクトリの状態情報は無効状態(Invalid:I) であるため、データを読み出し、プロセッサAに送る。
【0017】
これで、共有メモリのアドレスadr のデータをノードAのキャッシュがコピーした状態となり、図14(2) に示す如く、ディレクトリの状態情報に共有(Shared:S)状態が書き込まれ、ノード情報としてAが登録される。このS状態は、データと同時にプロセッサAのキャッシュに送られ、キャッシュの状態情報としても使われる。
【0018】
次に図14(3) において、プロセッサBで同じアドレスadr のデータの読み出し要求が発生すると、メモリコントローラはアドレスadr のディレクトリを参照する。このとき、ディレクトリの状態情報はS状態であり、図14(4) に示す如く、メモリのデータと状態情報、S状態がノードBのキャッシュに送られ、ノード情報としてBが追加される( この時、ディレクトリの状態情報はS状態のまま変わらない) 。
【0019】
次に図14(5) において、プロセッサAでアドレスadr に対して更新要求が発生すると、メモリコントローラは、キャッシュのアドレスadr の状態情報がS状態であることを確認し、共有メモリのアドレスadr のディレクトリを参照し、ディレクトリの状態情報がS状態で、ノード情報としてA以外にBが保持されていることを確認し、ノードBに無効化要求を送る。
【0020】
しかる後に、図14(6) に示す如く、ディレクトリの状態情報を更新(Modified:M) 状態に変更し、ノード情報としてAを登録する。これらの処理が完了すると、プロセッサAは自分のキャッシュを書き換え、プロセッサBは、キャッシュのアドレスadr のデータを消去する。
【0021】
以下、図9の従来のディレクトリ方式の分散共有メモリ型並列計算機における具体的な各動作モードの全体の流れを説明する。
【0022】
図15は従来のM状態のデータに対する読み出し動作例を示し、図中の数字は、以下の各説明項目における動作に対応する。
初期状態では、ディレクトリの状態情報はすべて無効状態(I状態)になっている。
【0023】
1.ノードAからの、自ノードの共有メモリのアドレスadr に対するデータ読み出し要求により、メモリコントローラは、アドレスadr のディレクトリを参照しディレクトリの状態情報がI状態であることを確認し、データを読み出し、ディレクトリの状態情報をS状態に変更しノード情報としてAを登録し、ノードAのキャッシュにデータと、状態情報S状態を送る。
ノードAのキャッシュでは、アドレスadr のデータをS状態として登録する。
【0024】
2.次にノードBから、アドレスadr に対して無効化/更新要求が発生した場合、この無効化/更新要求はノードBの相互結合網ルータを経由し、ホームノードであるノードAの相互結合網ルータを経由し、ノードAに送られる。
ノードAでは共有メモリのディレクトリを参照し、ディレクトリの状態情報がS状態、ノード情報がAであることを確認し、ディレクトリの状態情報をM状態に変更し、ノード情報としてBを登録し、キャッシュのアドレスadr のデータを消去する。その後にノードBへ更新許諾を返す。
ノードBでは、キャッシュのアドレスadr をM状態とし、更新したデータを登録する。
【0025】
3.さらにノードCからアドレスadr に対する読み出し要求が発生した場合、読み出し要求はホームノードである、ノードAの相互結合網ルータを経由し、ノードAに送られる。
ノードAでは、ディレクトリの状態情報がM状態であり、ノード情報がBであることを確認し、読み出し要求をノードBへ転送する。
ノードBでは、キャッシュのアドレスadr をS状態とし、データを読み出し、データと状態情報SをノードAとノードCに送る。
ノードCでは、キャッシュにアドレスadr のデータを、状態情報をS状態として登録し、
ノードAでは、共有メモリのアドレスadr のデータを登録し、ディレクトリとして、ノード情報B、C、状態情報Sを登録する。
【0026】
図16は、従来のS状態のデータに対する無効化/更新動作例を示す。
1は、M状態のデータに対する読み出しの例と同様である。
【0027】
2.次にノードBから、アドレスadr に対して読み出し要求が発生した場合、この読み出し要求はホームノードであるノードAの相互結合網ルータを経由し、ノードAに送られる。
ノードAでは、ディレクトリの状態情報がS状態であることを確認し、ノード情報としてBを追加し、アドレスadr のデータを読み出し、データと状態情報SをノードBに送る。
ノードBでは、キャッシュにアドレスadr のデータをS状態として登録する。
【0028】
3.さらにノードCからアドレスadr に対して無効化/更新要求が発生した場合、この無効化/更新要求は、ホームノードであるノードAの相互結合網ルータを経由し、ノードAに送られる。
【0029】
ノードAでは、ディレクトリの状態情報がS状態で、ノード情報が、A及びBであることをを確認し、ディレクトリの状態情報をM状態に更新し、ノード情報としてCを登録する。その後に、キャッシュのアドレスadr のデータを消去し、無効化要求をノードBに送り、更新許諾をノードCに返す。
ノードBでは、キャッシュのアドレスadr のデータを消去する。
ノードCでは、キャッシュにアドレスadr のデータをM状態として登録する。
【0030】
図17は、従来のS状態のデータに対する読み出し動作例を示す。
1〜2は、S状態のデータに対する無効化/更新の例と同様である。
【0031】
3.さらにノードCからアドレスadr に対する読み出し要求が発生した場合、読み出し要求はホームノードであるノードAの相互結合網ルータを経由し、ノードAに送られる。
ノードAでは、ディレクトリの状態情報がS状態であることを確認し、ノード情報としてCを追加する。その後に、アドレスadr のデータを読み出し、データと状態情報SをノードCに送る。
ノードCでは、キャッシュにアドレスadr のデータをS状態として登録する。
【0032】
【発明が解決しようとする課題】
しかし、従来のディレクトリ方式では、
1.自ノードのキャッシュに持っていないデータに対する読み出し要求は、図17に示すごとく、自ノードの近傍のノードにデータがキャッシュされている場合でも、必ずホームノードの共有メモリに送られるため、キャッシュされているデータが有効活用できず、処理が遅い。
【0033】
2.従って、特定のデータに関する処理を複数のノードで分散して処理する場合、処理を分散したにもかかわらずこのデータのホームノードにメモリアクセス要求が集中し、ホームノードでの処理がボトルネックになって全体の速度を低下させる、
という問題がある。
【0034】
分散共有メモリ型並列計算機においては、共有メモリとキャッシュのデータの一貫性を保ちつつ、高速のメモリの無効化/更新要求、読み出し処理を実現することが要求されている。
【0035】
本発明は、処理を高速化し、且つ全体の速度をあげることを目的としている。
【0036】
【課題を解決するための手段】
本発明では、相互結合網ルータに、ディレクトリ記憶部、及び一貫性処理部を持たせ、
ノード間のメモリアクセス要求は、相互結合網ルータの一貫性処理部がディレクトリ記憶部を参照し、この内容に従ってメモリアクセス要求転送処理、相互結合網ルータ間同期処理を行い、共有メモリとキャッシュのデータの一貫性を保つことを特徴とする。
【0037】
1.ディレクトリ記憶部
ディレクトリ記憶部の保持内容
キャッシュが共有メモリのコピーを持っている、
1.1 ブロックアドレス(adr)
1.2 ブロックの状態情報(更新M、あるいは共有S)
1.3 ノード情報(ノードID)
2.一貫性処理部
2.1 メモリアクセス要求転送手段:
あるプロセッサからのメモリアクセス要求に対応して、ディレクトリ記憶部を参照し、メモリブロックのアドレスが保持されている場合は、当該アドレスに付随するノードに、保持されていない場合はホームノードに、メモリアクセス要求を転送するメモリアクセス要求転送する。
【0038】
ホームノード以外に読み出し要求を転送した場合、ホームノードには要求元ノードIDをノード情報としてホームノードに転送し、ホームノードでは、要求元ノードIDをノード情報として追加登録する。
【0039】
例えばS状態のデータに対する読み出し要求は、
従来では、
要求元ノード→相互結合網ルータ→・・・ホームノードの相互結合網ルータ→ホームノード→相互結合網ルータ→・・・相互結合網ルータ→共有ノードという経路で送られていた。
【0040】
しかし、本発明によれば、S状態のデータに対する読み出し要求は、
要求元ノード→相互結合網ルータ→共有ノードID参照→保持されている最寄りの共有ノードの相互結合網ルータ→共有ノードという経路になる。
すなわち、相互結合網ルータにノード情報が保持されている場合は、保持されている最寄りの共有ノードからデータを読み出し、ホームノードを経由しないため、速度が向上する。
【0041】
2.2 相互結合網ルータ間同期手段:
一貫性処理を複数箇所、即ちメモリコントローラと、
同じブロックのディレクトリ情報を有する相互結合網ルータの一貫性処理部と、で実行しても、以下の同期処理を行うことで、一つのブロックのデータに対する更新が複数の場所で同時に実行されることを防止し、データの一貫性を保つ。
【0042】
同期処理:複数のノードで、あるブロックに対する無効化/更新要求が発生した場合、
各ノードの相互結合網ルータは、ホームノードの相互結合網ルータに無効化/更新要求を送る。
ホームノードの相互結合網ルータでは、最初に無効化/更新要求を受け取ったノードに対し更新許諾の応答を返し、ホームノードには無効化要求と無効化要求元のノードIDを、他の共有ノードには無効化要求を送る。
【0043】
ホームノードでは、当該ブロックのディレクトリを状態情報をM状態、ノード情報を要求元ノードIDとして登録し、キャッシュのアドレスadr のデータを消去し、他の共有ノードではキャッシュのアドレスadr のデータを消去する。
【0044】
無効化/更新要求を送ったにもかかわらず、更新許諾ではなく、無効化要求を受け取ったノードでは、改めてアドレスadr のデータを読み出し、この値に基づいた処理を行う。
【0045】
他の構成/機能として、ディレクトリ記憶部に第二のノード情報の記憶部として、読み出し要求元のノードIDを登録する、転送ノード情報記憶を追加し、一貫性処理部に読み出しデータ転送処理手段を追加し、以下の読み出しデータ転送処理を行うことにより、共有メモリとキャッシュのデータの一貫性を保ちつつ、相互結合網ルータ間の同期処理を一部省略し、さらに速度が向上する。
【0046】
3.読み出しデータ転送処理
読み出しデータ転送手段は、ディレクトリ記憶部に保持されたアドレスadr に対する読み出し要求を受け、ホームノード以外の共有ノードに読み出し要求を転送した場合、読み出し要求元ノードIDを転送ノード情報に登録する。
【0047】
読み出し要求を転送されたノードは、アドレスadr のデータを読み出し、要求元ノードに、データと状態情報Sを送る。
この場合、ホームノードへのノード情報の転送は省略され、処理が高速化される。
【0048】
なお、この時点では、転送ノード情報に保持されたノードは共有メモリのディレクトリに保持されていないが、あるノードで当該アドレスadr に対する無効化/更新要求が発生した時点で、一貫性処理が以下の如く行われる。
【0049】
発生した無効化/更新要求は、ホームノードの相互結合網ルータに送られ、
ホームノードの相互結合網ルータは、ディレクトリ記憶部のアドレスadr に保持されている全共有ノードに無効化要求を送る。
【0050】
アドレスadr の転送ノード情報を持つ相互結合網ルータが、ホームノードからアドレスadr に対する無効化要求を受け取ると、保持された転送ノード情報に従って、無効化要求を全転送ノードに転送し、全ての共有ノードに対する無効化が完了する。
【0051】
保持しているデータには、無効化/更新処理する必要のないデータも含まれるため、一部の無駄な処理を省き、さらに速度が向上する。
【0052】
【発明の実施の形態】
図1は、本発明による相互結合網ルータの構成例を示す。
本発明による相互結合網ルータは、
通常のルーティング機能部分としての、パケットバッファと、クロスバと、ルーティングコントローラと、
本発明の特徴である、ディレクトリ記憶部と、一貫性処理部とを有する。
【0053】
本実施例では簡単のため、
1.相互結合網の構成として、図9、図13に示す、ひとつのノードにひとつのプロセッサ・キャッシュの組を接続した構成。
2.各ノードの相互結合網ルータのディレクトリ記憶部に登録するディレクトリは、自ノードからメモリアクセス要求を出したアドレスのディレクトリ、
とするが、
1.相互結合網の構成として、ひとつのノードに複数のプロセッサ・キャッシュの組が接続された構成。
2.各ノードの相互結合網ルータのディレクトリ記憶部に登録するディレクトリは、メモリアクセス要求が経由する、全相互結合網ルータ、あるいは、
ホームノードの相互結合網ルータ、あるいは、
現在、データを保持しているノードの相互結合網ルータ、及び現在、データを更新しているノードの相互結合網ルータ、あるいは、
過去にディレクトリを登録した履歴を持つ相互結合網ルータ、
及び前記各相互結合網ルータの組み合わせ、
であってもよい。
【0054】
以下、図15、図16、図17の従来例と対比し、図9の分散共有メモリ型並列計算機に本発明を適用した実施例について説明する。
【0055】
図2は、図1の相互結合網ルータを用い、図15の従来例に対応した、M状態のデータに対する読み出し動作例を示し、図3は、この場合の相互結合網ルータの動作のフローを示す。
初期状態では、ディレクトリの状態情報はすべて無効状態になっている。
【0056】
1 .ノードAから、自ノードの共有メモリのアドレスadr に対するデータ読み出し要求により、メモリコントローラはアドレスadr のディレクトリを参照し、状態情報がI状態であることを確認し、データを読み出し、ノードAのキャッシュに送ると共に、ディレクトリの状態情報をS状態に変更し、ノード情報としてAを登録する。
【0057】
ノードAのキャッシュでは、アドレスadr のデータをS状態として登録し、
ノードAの相互結合網ルータでは、ディレクトリ記憶部に、アドレスadr の状態をS状態として登録する。
【0058】
2 .次にノードBから、アドレスadr に対して、無効化/更新要求が発生した場合、この無効化/更新要求は、途中経由する各相互結合網ルータのディレクトリ記憶部を参照しつつ、ノードBの相互結合網ルータから、ノードAの相互結合網ルータに送られる。
【0059】
ノードAの相互結合網ルータでは、ディレクトリ記憶部を参照し、アドレスadr の状態情報がS状態、ノード情報Aを確認し、状態情報をM状態に変更し、ノード情報としてBを登録し、ノードBの相互結合網ルータを経由し、ノードBに更新許諾の応答を返し、ノードAにアドレスadr の無効化要求を送る。
【0060】
ノードBの相互結合網ルータでは、ディレクトリ記憶部にアドレスadr を状態情報をM状態、ノード情報としてBを登録し、ノードBに応答を返す。
ノードBでは、キャッシュにadr をM状態で登録し、データを更新する。
【0061】
ノードAでは、キャッシュのアドレスadr を消去し、共有メモリの、アドレスadr のディレクトリの状態情報をM状態に変更し、ノード情報としてBを登録する。
【0062】
3 .さらにノードCからアドレスadr に対する読み出し要求が発生した場合、読み出し要求は、途中経由する各相互結合網ルータのディレクトリ記憶部を参照しつつ、ノードCの相互結合網ルータから、ノードAの相互結合網ルータに送られる。
【0063】
ノードAの相互結合網ルータは、ディレクトリ記憶部を参照し、アドレスadr の状態情報がM状態、ノード情報Bを確認し、状態情報をS状態に更新し、ノード情報として、B,Cを登録する。その後に、読み出し要求をノードBの相互結合網ルータへ転送し、ノードAに対し、読み出し要求が転送された旨を伝える。
【0064】
ノードBの相互結合網ルータは、読み出し要求を受け取ると、ディレクトリ記憶部を参照し、アドレスadr の状態情報がM状態、ノード情報Bを確認し、ノードBに読み出し要求を送る。
【0065】
ノードBでは、キャッシュのアドレスadr の状態情報をS状態とし、データを読み出し、データをノードBの相互結合網ルータを経由しノードCに送る。
【0066】
ノードBの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr の状態情報をS状態、ノード情報としてB,Cを登録し、データをノードCの相互結合網ルータを経由し、ノードCに送る。
【0067】
ノードCの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr の状態情報をS状態、ノード情報としてB,Cを登録し、データをノードCに送る。
ノードCでは、キャッシュにアドレスadr のデータをS状態として登録する。
【0068】
ノードAでは、共有メモリの、アドレスadr のディレクトリ状態情報をS状態に変更しノード情報としてB,Cを登録する。
【0069】
この動作により、読み出し要求がノードAを経由せず、ノードAの相互結合網ルータからノードBに送られるため、処理速度が向上する。
【0070】
なお、ノードCからの読み出し要求が、ノードBの相互結合網ルータを経由する場合、読み出し要求はノードAの相互結合網ルータも経由せず、ノードBの相互結合網ルータから、直接ノードBに送られるため、さらに速度が向上する。
【0071】
図4は、図1の相互結合網ルータを用い、図16の従来例に対応した、S状態のデータに対する無効化/更新動作例を示し、図5は、相互結合網ルータの動作のフローを示す。
1は、M状態のデータに対する読み出しの例と同様である。
【0072】
2.次にノードBから、アドレスadr に対して読み出し要求が発生した場合、この読み出し要求は、途中経由する各相互結合網ルータのディレクトリ記憶部を参照しつつ、ノードBの相互結合網ルータから、ノードAの相互結合網ルータに送られる。
【0073】
ノードAの相互結合網ルータでは、ディレクトリ記憶部を参照し、アドレスadr の状態情報がS状態、ノード情報Aを確認し、ノードAに読み出し要求を送る。
【0074】
ノードAでは、共有メモリのアドレスadr のディレクトリ状態がS状態であることを確認し、ノード情報としてBを追加するとともに、キャッシュのアドレスadr からデータを読み出し、ノードAの相互結合網ルータを経由し、ノードBに送る。
【0075】
ノードAの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr のノード情報としてBを追加し、データをノードBの相互結合網ルータを経由し、ノードBに送る。
【0076】
ノードBの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr の状態情報をS状態、ノード情報としてA,Bを登録し、データをノードBに送る。
ノードBでは、キャッシュにアドレスadr のデータをS状態として登録する。
【0077】
3.さらにノードCからアドレスadr に対する無効化/更新要求が発生した場合、この無効化/更新要求は、途中経由する各相互結合網ルータのディレクトリ記憶部を参照しつつ、ノードCの相互結合網ルータから、ノードAの相互結合網ルータに送られる。
【0078】
ノードAの相互結合網ルータでは、ディレクトリ記憶部を参照し、アドレスadr の状態情報がS状態、ノード情報A,Bを確認し、状態情報をM状態に変更し、ノード情報としてCを登録し、ノードCに更新許諾の応答を返し、ノードA,Bに無効化要求を送る。
【0079】
ノードCの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr をM状態、ノード情報としてCを登録し、ノードCに更新許諾の応答を返す。
ノードCでは、キャッシュのアドレスadr の状態をMとしデータを更新する。
【0080】
ノードAでは、キャッシュのアドレスadr を消去し、共有メモリのアドレスadr のディレクトリの状態情報をM状態に変更し、ノード情報としてCを登録する。
【0081】
ノードBの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr をM状態に更新し、ノード情報としてCを登録する。その後に、ノードBにアドレスadr の無効化要求を送る。
ノードBではキャッシュのadr のデータを消去する。
【0082】
この動作により、更新許諾がノードAを経由せず、ノードAの相互結合網ルータからノードCに返されるため、処理の高速化が実現できる。
【0083】
図6は、ディレクトリ記憶部に、転送ノード情報記憶を追加した相互結合網ルータの他の構成例を示す。
図6の相互結合網ルータは、受け取った読み出し要求が、ディレクトリ記憶部に保持されているブロックに対する読み出し要求であった場合は、保持されている共有ノードのうちの、最寄りの共有ノードに読み出し要求を転送し、最寄りのノードがホームノード以外の場合は、読み出し要求元ノードのIDを転送ノード情報に登録する。
【0084】
図7は、ノードAとノードCの中間にノードBがある構成例によるS状態のデータに対する読み出し動作例を示し、図8 は、相互結合網ルータの動作のフローを示す。
1〜2 は、S状態のデータに対する無効化/更新の例と同様である。
【0085】
3.さらにノードCからアドレスadr に対する読み出し要求が発生した場合、この読み出し要求は、途中経由する各相互結合網ルータのディレクトリ記憶部を参照しつつ、ノードCの相互結合網ルータからノードBの相互結合網ルータに送られる。
【0086】
ノードBの相互結合網ルータでは、ディレクトリ記憶部を参照し、状態情報がS状態、ノード情報A,Bを確認し、最寄りの共有ノードBに読み出し要求を転送するが、ノードBがホームノードでない為、転送ノード情報として要求元ノードCを登録する。
【0087】
ノードBは、キャッシュからデータを読み出し、ノードBの相互結合網ルータを経由しノードCの相互結合網ルータにデータを送る。
【0088】
ノードCの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr を、状態情報をS状態、ノード情報としてA,B,Cを登録し、データをノードCに送る。
ノードCではキャッシュにアドレスadr のデータをS状態として登録する。
以上で、読み出し動作は完了する。
【0089】
この動作により、読み出し要求がノードAの相互結合網ルータを経由せず、データがノードBの相互結合網ルータから直接ノードCに送られるため、処理の高速化が実現できる。
【0090】
この場合、ホームノード(ノードA)の相互結合網ルータのディレクトリ記憶部、及び共有メモリのディレクトリでは、アドレスadr のノード情報は、A,Bとして保持されたままであり、一貫性処理動作は完了していない。
【0091】
アドレスadr の一貫性処理の動作は、ノードAの相互結合網ルータが、次にアドレスadr に対する無効化/更新要求を受け取った時点での後処理として、以下の如く実行される。
【0092】
ノードAの相互結合網ルータは、アドレスadr に対する無効化/更新要求を、例えば、ノードDから受け取ると、ディレクトリを参照し、状態情報がS状態、ノード情報A,Bを確認し、状態情報をM状態に変更し、ノード情報としてDを登録し、ノードA,Bに無効化要求を送る。
【0093】
ノードBの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr を参照し、S状態、転送ノード情報Cを確認し、状態情報をM状態、ノード情報としてDを登録し、キャッシュのアドレスadr を消去するとともに、無効化要求をノードB及びノードCの相互結合網ルータに送る。
【0094】
ノードCの相互結合網ルータでは、ディレクトリ記憶部のアドレスadr を参照し、状態情報がS状態を確認し、状態情報をM状態として登録し、ノード情報としてDを登録する。
【0095】
【発明の効果】
以上説明したように、本発明によれば、ディレクトリ方式の、共有メモリとキャッシュのデータの一貫性処理方法を用いながら、データを保持するキャッシュがある場合には、メモリアクセス要求がホームノードを経由する必要がなく、相互結合網ルータ間で転送することで、高速処理が可能になる。また、ホームノードを経由しないことにより、ホームノードにアクセスが集中してシステム全体の速度を低下させることがなくなるという効果がある。
【図面の簡単な説明】
【図1】 本発明による相互結合網ルータの構成例
【図2】 本発明によるM状態のデータに対する読み出し動作例
【図3】 M状態のデータに対する読み出し動作フロー
【図4】 本発明によるS状態のデータに対する無効化/更新動作例
【図5】 S状態のデータに対する無効化/更新動作フロー
【図6】 本発明による転送ノード情報記憶を備えた相互結合網ルータ
【図7】 本発明によるS状態のデータに対する読み出し動作例
【図8】 S状態のデータに対する読み出し動作フロー
【図9】 分散共有メモリ型並列計算機の全体構成例
【図10】 相互結合網ルータの構成例
【図11】 ノード内部の構成
【図12】 ディレクトリ方式によるデータの一貫性管理
【図13】 ディレクトリ方式を用いる分散共有メモリ型並列計算機
【図14】 分散共有メモリ型並列計算機におけるデータの一貫性管理
【図15】 従来のM状態のデータに対する読み出し動作例
【図16】 従来のS状態のデータに対する無効化/更新動作例
【図17】 従来のS状態のデータに対する読み出し動作例
【符号の説明】
1 ディレクトリ記憶部
2 一貫性処理部
3 ルーティングコントローラ
Claims (1)
- プロセッサと、共有メモリの一部と、メモリコントローラと、キャッシュとを有するノードを複数有し、
各ノードは、各ノードに対応する相互結合網ルータにより結合された分散共有メモリ型並列計算機であって、
共有メモリは、ブロック毎に、メモリのデータのコピーを保持するキャッシュの属するノードIDを示すノード情報と、保持状態を示す状態情報とからなるディレクトリを有し、
メモリコントローラは、相互結合網ルータから転送されるメモリアクセス要求に従って、共有メモリのディレクトリの参照/更新と、キャッシュへの無効化通知とを行う一貫性管理手段を有し、
キャッシュは、共有メモリのブロック毎のデータのコピーとアドレスと保持状態を示す状態情報とを有し、
相互結合網ルータは、共有メモリのブロックのデータのコピーを保持するキャッシュの属するノードIDを示すノード情報と、保持状態を示す状態情報と、メモリブロックのアドレスとを保持するディレクトリ記憶部と、
プロセッサからのメモリアクセス要求に対応してディレクトリ記憶部を参照し、メモリブロックのアドレスが保持されている場合は、当該アドレスに付随するノードに、保持されていない場合は共有メモリの属するノードにメモリアクセス要求を転送するメモリアクセス要求転送手段と、
自ノードの共有メモリに対する無効化/更新要求に対応してディレクトリ記憶部を参照し、最初に無効化/更新要求を受け取った要求元ノードに対し更新許諾の応答を返し、自ノードには無効化要求と無効化要求元ノードIDを送り、ノード情報に保持された他のノードには無効化要求を送る相互結合網ルータ間同期手段と、
よりなる一貫性処理部を有する
ことを特徴とする、分散共有メモリ型並列計算機。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27529399A JP4689783B2 (ja) | 1999-09-28 | 1999-09-28 | 分散共有メモリ型並列計算機 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP27529399A JP4689783B2 (ja) | 1999-09-28 | 1999-09-28 | 分散共有メモリ型並列計算機 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2001101148A JP2001101148A (ja) | 2001-04-13 |
JP4689783B2 true JP4689783B2 (ja) | 2011-05-25 |
Family
ID=17553422
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP27529399A Expired - Fee Related JP4689783B2 (ja) | 1999-09-28 | 1999-09-28 | 分散共有メモリ型並列計算機 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4689783B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6799217B2 (en) * | 2001-06-04 | 2004-09-28 | Fujitsu Limited | Shared memory multiprocessor expansion port for multi-node systems |
US7404045B2 (en) * | 2005-12-30 | 2008-07-22 | International Business Machines Corporation | Directory-based data transfer protocol for multiprocessor system |
US8244986B2 (en) * | 2009-12-30 | 2012-08-14 | Empire Technology Development, Llc | Data storage and access in multi-core processor architectures |
WO2012008008A1 (ja) * | 2010-07-12 | 2012-01-19 | 富士通株式会社 | 情報処理システム |
-
1999
- 1999-09-28 JP JP27529399A patent/JP4689783B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2001101148A (ja) | 2001-04-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5604882A (en) | System and method for empty notification from peer cache units to global storage control unit in a multiprocessor data processing system | |
US6631448B2 (en) | Cache coherence unit for interconnecting multiprocessor nodes having pipelined snoopy protocol | |
JP4848771B2 (ja) | キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム | |
KR100548908B1 (ko) | 중앙 집중형 스누프 필터링 방법 및 장치 | |
JP3987162B2 (ja) | 読取り−共有トランザクションのための強化ブロッキング・メカニズムを含むマルチプロセス・システム | |
JP3644587B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム | |
KR100634932B1 (ko) | 멀티프로세서 시스템 내에서의 캐시 일관성에서 사용하기위한 전송 상태 | |
JP3661761B2 (ja) | 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム | |
JP5575870B2 (ja) | 部分読出と非スヌープアクセスとの間のメモリ順序付け要件の充足 | |
EP0818732B1 (en) | Hybrid memory access protocol in a distributed shared memory computer system | |
JP4959279B2 (ja) | マルチプロセッサ・システムのためのディレクトリ・ベースのデータ転送プロトコル(データ一貫性を維持する方法およびシステム) | |
JPH10340227A (ja) | ローカル・グローバル・アドレス・スペース及びマルチアクセス・モードを用いたマルチプロセッサ・コンピュータ・システム | |
JP2002304328A (ja) | マルチプロセッサシステム用コヒーレンスコントローラ、およびそのようなコントローラを内蔵するモジュールおよびマルチモジュールアーキテクチャマルチプロセッサシステム | |
JPH10187470A (ja) | スピンロック動作を最適化する装置を含むマルチプロセス・システム | |
JPH10214230A (ja) | 応答カウントを含むコヒーレンシー・プロトコルを採用したマルチプロセッサ・システム | |
US6226714B1 (en) | Method for invalidating cache lines on a sharing list | |
GB2390710A (en) | Data maintenance of a distributed shared memory system | |
US20050010615A1 (en) | Multi-node computer system implementing memory-correctable speculative proxy transactions | |
JP4507563B2 (ja) | マルチプロセッサシステム | |
US7225298B2 (en) | Multi-node computer system in which networks in different nodes implement different conveyance modes | |
JP4689783B2 (ja) | 分散共有メモリ型並列計算機 | |
JP7277075B2 (ja) | スヌープリクエストに対する応答の転送 | |
JP2004221807A (ja) | 分散ルーティングテーブル管理方式およびルータ | |
US7360029B2 (en) | Multi-node computer system in which interfaces provide data to satisfy coherency transactions when no owning device present in modified global access state node | |
JP2002024198A (ja) | 分散共有メモリ型並列計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060721 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20080416 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080422 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080603 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090707 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110217 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140225 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |