JP3678715B2 - Distributed shared memory multiprocessor system and tag control method used therefor - Google Patents
Distributed shared memory multiprocessor system and tag control method used therefor Download PDFInfo
- Publication number
- JP3678715B2 JP3678715B2 JP2002121558A JP2002121558A JP3678715B2 JP 3678715 B2 JP3678715 B2 JP 3678715B2 JP 2002121558 A JP2002121558 A JP 2002121558A JP 2002121558 A JP2002121558 A JP 2002121558A JP 3678715 B2 JP3678715 B2 JP 3678715B2
- Authority
- JP
- Japan
- Prior art keywords
- tag
- memory
- swap buffer
- cache
- request
- 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 - Lifetime
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
【0001】
【発明の属する技術分野】
本発明は分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法に関し、特に共有メモリマルチプロセッサシステムに用いられるタグ(以下、TAGとする)の制御方法に関する。
【0002】
【従来の技術】
従来、共有メモリマルチプロセッサシステムにおいては、複数のプロセッサがシステムメモリのコピーをキャッシュに記憶している。この場合、共有メモリマルチプロセッサシステムには、同じメモリラインの複数のキャッシュに記憶されたデータとメモリとの整合性を維持するためにキャッシュコヒーレント機構が必要となる。
【0003】
このキャッシュコヒーレント機構を実現するのに、TAG(あるいはディレクトリ)を具備している。TAGは各メモリラインのアドレスやシステムメモリとキャッシュとの状態を記憶する。
【0004】
近年、コンピュータシステムはシステムメモリへのアクセスを加速させるために搭載されるキャッシュ容量が大幅に大容量化している。また、システムメモリも大幅に大容量化している。TAGは上記のシステムメモリ及びキャッシュの大容量化に伴って多くの情報を記憶することで、システム全体のスループットが向上する。
【0005】
【発明が解決しようとする課題】
しかしながら、上述した従来の共有メモリマルチプロセッサシステムでは、システムメモリあるいはキャッシュと同じ容量のTAGを搭載すると、ハードウェア量の増大化あるいはコスト負担増、制御の複雑さが増すため、TAGとして外付けRAMを用いることが考えられるが、アクセススピードが遅く、その制御が複雑となる。
【0006】
そこで、本発明の目的は上記の問題点を解消し、バスへの負荷を減らすことができ、キャッシュのヒット率を上げてシステム全体の性能を向上させることができる分散共有メモリ型マルチプロセッサシステム及びそれに用いるタグ制御方法を提供することにある。
【0007】
【課題を解決するための手段】
本発明による分散共有メモリ型マルチプロセッサシステムは、キャッシュを具備する複数の中央処理装置と、前記中央処理装置及び入出力装置のいずれかからの要求を処理するメモリコントローラと、前記キャッシュの情報を保持する分散共有メモリとから構成され、前記中央処理装置と前記メモリコントローラとの間をバス接続してなる複数のノードを含む分散共有メモリ型マルチプロセッサシステムであって、
前記複数のノード各々を接続するノード間アドレスバスと、前記複数のノード各々を接続しかつ前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとを備え、
前記メモリコントローラは、前記キャッシュの情報を保持するタグメモリと、前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファと、前記ノードから発行されたリクエストを制御するタグ制御回路と、前記ノード各々にアクセスするリクエストを制御するリクエスト制御部と、前記ノード内のリプライデータを制御するリプライ制御回路とを具備し、
前記タグ制御回路は、前記タグメモリ及び前記タグスワップバッファの索引、登録、無効化、コヒーレントリクエストの発行を行う機構を具備し、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する判定回路を具備し、
前記判定回路は、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行っている。
【0008】
本発明によるタグ制御方法は、キャッシュを具備する複数の中央処理装置と、前記中央処理装置及び入出力装置のいずれかからの要求を処理するメモリコントローラと、前記キャッシュの情報を保持する分散共有メモリとから構成され、前記中央処理装置と前記メモリコントローラとの間をバス接続してなる複数のノードを含む分散共有メモリ型マルチプロセッサシステムのタグ制御方法であって、
前記複数のノード各々を、ノード間アドレスバスと、前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとによって接続し、
前記キャッシュの情報を保持するタグメモリ及び前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファに、前記ノード内の前記キャッシュに登録されたアドレス及びステータス情報を保持し、
前記タグスワップバッファに、前記タグメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか1つのエリアをスワップしたアドレス及びステータス情報を保持し、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する際に、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行っている。
【0009】
すなわち、本発明の分散共有メモリ型マルチプロセッサシステムは、キャッシュを具備する複数のCPU(中央処理装置)と、各CPUとメモリコントローラとの間をバス接続し、CPUあるいはI/O(入出力)装置からの要求を処理するメモリコントローラと、分散共有メモリとから各ノードを構成し、上記の各ノードをノード間アドレスバス及びクロスバーを介して接続し、上記のクロスバーが複数のノード間のデータを処理すると同時に、I/O装置からの要求を処理する。
【0010】
各ノードのメモリコントローラは、ノード内の各CPUに搭載されるキャッシュの情報を保持するタグ(以下、TAGとする)メモリと、TAG掃き出し情報を保持するTAGスワップバッファと、ノード内あるいは他ノードから発行されたリクエストを制御し、TAGメモリ及びTAGスワップバッファの索引、登録、無効化及びコヒーレントリクエストを発行する機構を具備するTAG制御回路と、各ノードにアクセスするリクエストを制御するリクエスト制御部と各ノード内のリプライデータを制御するリプライ制御回路とから構成されている。
【0011】
TAGメモリ及びTAGスワップバッファは各ノード内のCPUのキャッシュに登録されたアドレス及びステータス情報を保持する。TAGスワップバッファはTAGメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか1つのエリアをスワップしたアドレス及びステータス情報を保持する。
【0012】
TAG制御回路はTAG索引リクエストを受信すると、TAGメモリ及びTAGスワップバッファを同時に索引し、TAGメモリあるいはTAGスワップバッファに保持されているアドレスが一致し、かつステータス情報が有効(PあるいはS)の場合、それぞれ索引結果に応じて登録、更新、無効化を行い、TAG制御回路はバスへリクエスト発行を行う。
【0013】
TAGメモリ及びTAGスワップバッファの索引結果を判定する回路においては、TAGメモリのエリアが無効化対象であり、同一セットアドレスがTAGスワップバッファに存在することを判定した場合、TAGスワップバッファの情報を無効化し、TAGメモリに再登録する。
【0014】
上記の処理において、TAGスワップバッファ中に複数の同一セットアドレスが存在した場合、ステータス情報がキャッシュの全ての状態のいずれかを示す“P”のものを優先して再登録する。TAGスワップバッファは、各エントリに保持されたステータス情報を基に有効情報の有無を判定し、バッファフル状態であり、かつTAGメモリからのスワップが発生した場合にTAGスワップバッファから読出し、TAG制御回路からバスへインバリデイトリクエストを発行する。
【0015】
TAGメモリ及びTAGスワップバッファの索引結果を判定する各判定回路においては、それぞれのステータス情報を判定し、TAGメモリからの追い出し(スワップ)はステータス情報が“P”よりシステム内で複数キャッシングしている可能性がある状態またはキャッシングしていない状態を示す“S”を優先する。
【0016】
上記と同様に、TAGメモリ及びTAGスワップバッファの索引結果を判定する各判定回路において、TAGスワップバッファからの追い出し対象をステータス情報が“P”より“S”を優先することによって、キャッシュからライトバック処理を低減する。
【0017】
また、上記と同様に、TAGスワップバッファの全ステータスが“P”でかつTAGメモリからのスワップ対象のステータス情報が“S”と判定した場合には、TAGスワップバッファに保持することなく、バスにインバリデイトリクエストを発行する。
【0018】
よって、上述した通り、TAGメモリ及びTAGスワップバッファを制御することによって、複数のノード間のコヒーレント制御を行うと同時に、TAGメモリのエントリを有効的に活用することが可能であり、CPUのキャッシュにステータス情報“M”で登録されたデータの掃き出し動作を低減することから、キャッシュのヒット率が上がり、また、バスへの負荷を抑えることからシステム全体の性能が向上する。
【0019】
よって、本発明の分散共有メモリ型マルチプロセッサシステムでは、LSI(大規模集積回路)に搭載可能なTAGメモリ及びTAGスワップバッファをフルに活用し、バスへの負荷を減らし、キャッシュのヒット率を上げることから、システム全体の性能が向上する。
【0020】
近年、メインメモリの容量及びメモリCPUに搭載されるキャッシュの容量は大容量化している。TAGメモリで全メモリ空間の情報を保持することはハードウェア投資が膨大となる。また、TAGメモリの容量が増やすことによって、制御が複雑化すると同時に、ハードウェア投資に見合った性能が確保されるとは限らない。
【0021】
本発明の分散共有メモリ型マルチプロセッサシステムでは、TAGメモリとTAGメモリからの掃き出し情報を保持するTAGスワップバッファとによって、TAGスワップバッファに有効な情報があり、TAGメモリのエリアが空いた際にTAGスワップバッファからの再登録を行う。
【0022】
TAGスワップバッファはフル状態となるまでバスへのコヒーレントリクエストを発行しない。また、TAGスワップバッファ内にTAGへの再登録対象が複数ある場合、TAGステータスが“S”より“P”であるものを優先する。TAGスワップバッファからバスへのコヒーレントリクエストを発行する場合もステータスが“S”より“P”を優先させる機構を具備することによって、各ノード内のバスへの負荷を低減し、TAGメモリを有効に活用することから、CPUに搭載されるキャッシュからの掃き出しが低減される。よって、システム全体の性能が向上する。
【0023】
【発明の実施の形態】
次に、本発明の実施例について図面を参照して説明する。図1は本発明の一実施例による分散共有メモリ型マルチプロセッサシステムの構成を示すブロック図である。図1において、本発明の一実施例による分散共有メモリ型マルチプロセッサシステムはノード(#0〜#3)1〜4と、クロスバー5と、I/O(入出力)装置6−1〜6−4とから構成されている。
【0024】
各ノード(#0〜#3)1〜4は複数のCPU(中央処理装置)11〜14,……,41〜44と、メモリコントローラ15,……,45と、分散共有メモリ16,……,46とから構成されている。尚、図1においてはノード(#0,#3)1,4の構成だけを図示し、他のノード(#1,#2)2,3の構成の図示を省略しているが、他のノード(#1,#2)2,3の構成もノード(#0,#3)1,4の構成と同様である。
【0025】
CPU11〜14,……,41〜44はそれぞれキャッシュ11a,12a,13a,14a,……,41a,42a,43a,44aを具備しており、バス110,……,140を介してメモリコントローラ15,……,45に接続されている。メモリコントローラ15,……,45はCPU11〜14,……,41〜44あるいはI/O装置6−1〜6−4からの要求を処理する。
【0026】
クロスバー5は複数のノード1〜4間のデータをデータ線301,……,304を介して処理すると同時に、複数のI/O装置6−1〜6−4からの要求も処理する。
【0027】
図2は図1のメモリコントローラ15の構成を示すブロック図である。図2においては、メモリコントローラ15の構成のみを図示しているが、ノード(#1,#2)2,3のメモリコントローラやノード(#3)4のメモリコントローラ45もメモリコントローラ15と同様の構成となっている。
【0028】
メモリコントローラ15はタグ(以下、TAGとする)メモリ151と、TAGスワップバッファ152と、TAG制御回路153と、リクエスト制御部154と、判定回路155と、リプライ制御回路部156とから構成されている。
【0029】
図3は図2のTAGメモリ151の保持内容を示す図である。図3において、TAGメモリ151にはCPUキャッシュステータスと、コードと、概要とが保持されている。
【0030】
CPUキャッシュステータス「M(Modified)」は、コードが「11」で、その概要が「システム内で唯一キャッシングしている。共有メモリのコピーではない。」となっている。CPUキャッシュステータス「E(Exclusive)」は、コードが「10」で、その概要が「システム内で唯一キャッシングしており、共有メモリのコピーを有している。」となっている。
【0031】
CPUキャッシュステータス「S(Shared)」は、コードが「01」で、その概要が「システム内で複数キャッシングしている可能性があり、共有メモリのコピーを有している。」となっている。CPUキャッシュステータス「I(Invalid)」は、コードが「00」で、その概要が「キャッシングしていない」となっている。
【0032】
図4は図2のTAGスワップバッファ152の保持内容を示す図である。図4において、TAGスワップバッファ152にはTAGステータスと、コードと、CPUキャッシュステータスとが保持されている。
【0033】
TAGステータス「P(Private)」は、コードが「11」で、CPUキャッシュステータスが「M/E/S/Iのいずれかのステータスである。」となっている。TAGステータス「S(Share)」は、コードが「10」で、CPUキャッシュステータスが「S/Iのいずれかのステータスである。」となっている。TAGステータス「U(Uncached)」は、コードが「00」で、CPUキャッシュステータスが「I(キャッシングされていない)」となっている。つまり、TAGステータス「P」は全てのCPUキャッシュステータスのいずれかを示し、TAGステータス「S」は「システム内で複数キャッシングしている可能性があり、共有メモリのコピーを有している」というステータスまたは「キャッシングしていない」というステータスを示している。
【0034】
これら図2〜図4を参照して、メモリコントローラ15について詳細に説明する。
【0035】
TAGメモリ151はノード1内のCPU11〜14に搭載されるキャッシュ11a,12a,13a,14aの情報を保持する。TAGスワップバッファ152はTAG掃き出し情報を保持する。判定回路155は他ノード2〜4あるいはI/O装置6−1〜6−4から発行されたリクエスト/リプライを判定する。
【0036】
TAG制御回路153は判定回路155によって転送先が制御され、TAGメモリ151及びTAGスワップバッファ152の索引、登録、無効化及びコヒーレントリクエストを発行する機構を具備している。リクエスト制御部154は各ノード(#0〜3)1〜4にアクセスするリクエストを制御する。リプライ制御回路部156は各ノード1〜4内のリプライデータを制御する。
【0037】
各ノード1〜4おけるメモリコントローラ15,……,45のTAGメモリ151及びTAGスワップバッファ152は、各ノード1〜4内のCPU11〜14,……,41〜44のキャッシュ11a,12a,13a,14a,……,41a,42a,43a,44aに登録されたアドレス及びステータス情報を保持する。
【0038】
TAGスワップバッファ152はTAGメモリ151のエリアがフルに登録されている状態で新規登録する際に、いずれか1つのエリアをスワップしたアドレス及びステータス情報を保持する。
【0039】
TAG制御回路153はTAG索引リクエストを受信すると、TAGメモリ151及びTAGスワップバッファ152を同時に索引し、TAGメモリ151あるいはTAGスワップバッファ152に保持されているアドレスが一致し、かつステータス情報(以下、TAGスワップバッファ152のステータス情報は図4を参照)が有効(“P”あるいは“S”)の場合、それぞれ索引結果に応じて登録、更新、無効化を行い、必要に応じてバス110へリクエスト発行を行う。
【0040】
図5は図2のTAGメモリ151及びTAGスワップバッファ152の制御機構を示すブロック図である。図5において、TAGメモリ151及びTAGスワップバッファ152の制御機構はレジスタ161と、TAGメモリ151及びTAGスワップバッファ152の索引結果を判定する判定回路162,164,166と、各判定結果から対象となるデータを選択する選択回路163,165とから構成され、以下のように制御する。ここで、TAGメモリ151は一般的に設計されるnWAY・セット・アソシアティブのメモリである。
【0041】
判定回路162はTAGスワップバッファ152の有効エントリ(“P”あるいは“S”)がフルの状態であるかを判定し、フルの場合に“1”、フルでない場合に“0”をTAG制御回路153に送信する。
【0042】
判定回路164はTAG索引リクエスト受信時にTAGスワップバッファ152の有効エントリ(ステータスが“P”あるいは“S”)と、セットアドレス一致及びキーアドレス一致を判定し、それぞれにおいて一致した場合に“1”、一致しない場合に“0”を送信する。
【0043】
判定回路166はTAGメモリ151に登録されているキーアドレス及びステータス情報との一致条件を出力する。また、判定回路166は索引リクエストのセットアドレスに対するエリアがフルに使用されているかについても判定する。
【0044】
選択回路163は上記の判定回路164の結果から索引リクエストによる更新、無効化処理対象のものを選択する。また、選択回路163はTAGスワップバッファ152からTAGメモリ151への再登録対象あるいはTAGスワップバッファ152からの追い出し対象の「アドレス+ステータス」が複数ある場合にいずれか1つを選択する。
【0045】
選択回路165は上記の判定回路166の結果から索引リクエストによる更新、登録、無効化処理対象のものを選択する。また、選択回路165はTAGメモリ151から追い出し処理が必要な場合(セットアドレスに対するエリアがフルに有効情報“P”あるいは“S”が格納されている場合)、TAGメモリ151から追い出し対象のものを選択する。
【0046】
さらに、選択回路165はTAGスワップバッファ152からTAGメモリ151への再登録対象、あるいはTAGスワップバッファ152からの追い出し対象の「アドレス+ステータス」が複数ある場合にいずれか1つを選択する。
【0047】
図6は図2のTAGメモリ151からの追い出し制御を示すフローチャートである。これら図2と図5と図6とを参照してTAGメモリ151からの追い出し制御について説明する。以下、ノード(#0)1について説明するが、他のノード(#1〜#3)2〜4におけるTAGメモリからの追い出し制御もこれと同様である。
【0048】
メモリコントローラ15はTAG索引リクエストに対して、判定回路166の結果からアドレス一致せず、セットアドレスに対するエリアに有効情報がフルに格納されている場合で新規登録を必要とする場合(図6ステップS1〜S4)、“S”のみの場合(図6ステップS5)、いずれかをランダムに選択し、それを追い出す(図6ステップS6)。
【0049】
メモリコントローラ15は“S”と“P”とが混在する場合(図6ステップS7)、いずれかの“S”のものを優先して選択し、それを追い出す(図6ステップS8)。また、メモリコントローラ15は“P”のみの場合(図6ステップS9)、いずれかをランダムに選択し、それを追い出す(図6ステップS10)。
【0050】
図7は図2のTAGスワップバッファ152からの追い出し制御を示すフローチャートである。これら図2と図5と図7とを参照してTAGスワップバッファ152からの追い出し制御について説明する。以下、ノード(#0)1について説明するが、他のノード(#1〜#3)2〜4におけるTAGスワップバッファからの追い出し制御もこれと同様である。
【0051】
メモリコントローラ15は判定回路162の結果からTAGスワップバッファ152がフルでかつTAGメモリ151からの追い出しがある場合(図7ステップS11,S12)、TAGスワップバッファ152が“S”のみであり、TAGメモリ151からの追い出し対象が“S”あるいは“P”の場合(図7ステップS13)、TAGスワップバッファ152のいずれかの“S”を優先して追い出す(図7ステップS14)。
【0052】
メモリコントローラ15はTAGスワップバッファ152に“S”と“P”とが混在しており、TAGメモリ151からの追い出し対象が“S”あるいは“P”の場合(図7ステップS15)、TAGスワップバッファ152のいずれかの“S”を優先して追い出す(図7ステップS16)。
【0053】
メモリコントローラ15はTAGスワップバッファ152が“P”のみであり、TAGメモリ151からの追い出し対象が“P”の場合(図7ステップS17)、TAGスワップバッファ152のいずれかの“P”を追い出す(図7ステップS18)。尚、メモリコントローラ15はTAGメモリ151からの追い出し対象が“S”の場合(図7ステップS19)、そのままバス110に発行する(図7ステップS20)。
【0054】
図8は図2のTAGスワップバッファ152からTAGメモリ151への再登録制御を示すフローチャートである。これら図2と図5と図8とを参照してTAGスワップバッファ152からTAGメモリ151への再登録制御について説明する。以下、ノード(#0)1について説明するが、他のノード(#1〜#3)2〜4におけるTAGスワップバッファからTAGメモリへの再登録制御もこれと同様である。
【0055】
メモリコントローラ15は判定回路166によってTAGメモリ151が無効化“I”でかつ判定回路164の結果からTAGスワップバッファ152にアドレス一致で“S”あるいは“P”のものが存在する場合(図8ステップS21,S22)、TAGスワップバッファ152に存在する対象が“S”のみの場合(図8ステップS23)、いずれかの“S”のものを選択回路163で選択してTAGメモリ151に再登録する(図8ステップS24)。
【0056】
メモリコントローラ15はTAGスワップバッファ152に存在する対象が“S”あるいは“P”の場合(図8ステップS25)、いずれかの“P”のものを優先して選択回路163で選択してTAGメモリ151に再登録する(図8ステップS26)。
【0057】
よって、上述したように、TAGメモリ151及びTAGスワップバッファ152を制御することによって、複数のノード間のコヒーレント制御を行うと同時に、TAGメモリ151のエントリを有効的に活用することが可能であり、CPU11〜14のキャッシュ11a〜14aにステータス情報“M”(以下、キャッシュのステータス情報は図4を参照)で登録されたデータの掃き出し動作を低減するので、キャッシュ11a〜14aのヒット率が上がり、またバス110への負荷を抑えられるので、システム全体の性能が向上する。
【0058】
図9〜図19は図1の分散共有メモリ16,46に対するリード処理を示すフローチャートであり、図20〜図33は図1の分散共有メモリ16,46に対するライト処理を示すフローチャートである。これら図1〜図33を参照して分散共有メモリ16,46に対するリード処理及びライト処理について説明する。
【0059】
本実施例においてはノード(#0)1から見ると、自ノードの分散共有メモリ16に対するリード、他ノード(#3)4の分散共有メモリ46に対するリード、自ノードの分散共有メモリ16に対するライト、他ノード(#3)4の分散共有メモリ46に対するライトがある。
【0060】
尚、他ノード(#1,#2)2,3の分散共有メモリに対するリード及びライトは他ノード(#3)4の分散共有メモリ46に対するリード及びライトと同様である。また、動作説明に関して、キャッシュ(本実施例では、キャッシュはストアインキャッシュとする)11a〜14aと、TAGメモリ151と、TAGスワップバッファ152とに登録、更新、無効化するデータのステータスについては図3及び図4を参照するものとする。
【0061】
まず、自ノード(#0)1の分散共有メモリ16に対するリードについて説明する。この場合、リクエスト発行元をCPU11とする。尚、自ノード(#0)1内のCPU12〜14から発行した場合も、各CPU12〜14内のキャッシュ制御及びそれらに関連するリクエストの動作はCPU11の処理と同様であるものとする。
【0062】
CPU11において、キャッシュ11aにアクセス対象のデータが“M”で登録されている場合には(図9ステップS31)、キャッシュ11aにヒットし、キャッシュ11a内のデータがCPU11に返信され(図9ステップS32)、リードリクエストが完了する。
【0063】
CPU11において、キャッシュ11aにアクセス対象のデータが“E”で登録されている場合には(図9ステップS33)、キャッシュ11aにヒットし、キャッシュ11a内のデータがCPU11に返信され(図9ステップS32)、リードリクエストが完了する。
【0064】
CPU11において、キャッシュ11aにアクセス対象のデータが“S”で登録されている場合には(図9ステップS34)、キャッシュ11aにヒットし、キャッシュ11a内のデータがCPU11に返信され(図9ステップS32)、リードリクエストが完了する。
【0065】
CPU11において、キャッシュ11aにアクセス対象のデータが登録されていない場合には(図9ステップS35)、キャッシュ11aがバス110にバス獲得要求を発行し(図9ステップS36)、バス110が獲得できたら(図9ステップS37)、ラインリードリクエストを発行する(図9ステップS38)。
【0066】
上記のラインリードリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aのいずれかでアクセス対象のデータが“M”で登録されている場合には(図10ステップS39)、そのキャッシュ12a,13a,14aがバス110に“M”で登録されているデータをライトバック(データリプライ)する(図10ステップS40)。
【0067】
ライトバックを発行したキャッシュ12a,13a,14aは無効化され、“I”とされる(図10ステップS41)。上記のライトバックはリクエスト制御部154を介して分散共有メモリ16に送信される(図10ステップS42)。既に同一ノード(#0)1内のキャッシュが“M”の状態であるので、TAGメモリ151あるいはTAGスワップバッファ152に登録されているTAGステータは“P”のままとする(図10ステップS43)。
【0068】
キャッシュ11aはバス110を介して上記のライトバックデータをリプライデータとして受信し、“E”で登録し、CPU11にデータを返信する(図10ステップS44)。また、自ノード(#0)1の分散共有メモリ16にも上記のライトバックデータが送信され、その内容が更新される。これによって、リード処理が完了する。
【0069】
上記のラインリードリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aのいずれかでアクセス対象のデータが“E”で登録されている場合には(図11ステップS45)、そのキャッシュ12a,13a,14aを“S”に更新する(図11ステップS46)。
【0070】
ラインリードリクエストはリクエスト制御部154を介してTAG制御回路153及び分散共有メモリ16に転送される(図11ステップS47)。TAG制御回路153はTAGメモリ151及びTAGスワップバッファ152を索引し(図11ステップS48)、判定回路164あるいは判定回路166の出力からアクセス対象のステータスを“S”に更新する(図11ステップS49)。
【0071】
また、ラインリードリクエストによって分散共有メモリ16から読出されたデータリプライはリプライ制御回路156及びバス110を介してリクエスト発行元のキャッシュ11aに送信され、“S”で登録され、CPU11にデータを返信し(図11ステップS50)、リード処理が完了する。
【0072】
上記のラインリードリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aのいずれかでアクセス対象のデータが“S”で登録されている場合には(図12ステップS51)、そのキャッシュを“S”に更新する(図12ステップS52)。
【0073】
ラインリードリクエストはリクエスト制御部154を介してTAG制御回路153及び分散共有メモリ16に転送される(図12ステップS53)。TAG制御回路153はTAGメモリ151及びTAGスワップバッファ152を更新しない(図12ステップS54)。
【0074】
また、ラインリードリクエストによって分散共有メモリ16から読出されたデータリプライはリプライ制御回路156及びバス110を介してリクエスト発行元のキャッシュ11aに送信され、“S”で登録され、CPU11にデータを返却し(図12ステップS55)、リード処理が完了する。
【0075】
上記のラインリードリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aの全てがアクセス対象のデータを登録していない場合には(図13ステップS56)、ラインリードリクエストはリクエスト制御部154を介してTAG制御回路153及び分散共有メモリ16に転送される(図13ステップS57)。
【0076】
TAG制御回路153はノード間アドレスバス200にラインリクエストを発行し、他ノード(#1〜#3)2〜4のメモリコントローラに上記のラインリクエストを転送する(図13ステップS58)。
【0077】
他ノード(#1〜#3)2〜4各々のメモリコントローラのTAG制御回路は他のノードからのラインリクエストを受信すると(図14ステップS71)、TAGメモリ及びTAGスワップバッファを索引する(図14ステップS72)。以下、各索引結果毎の処理について述べるが、その処理についてはノード(#3)4を対象として説明する。但し、ノード(#1,2)2,3でもノード(#3)4と同様の動作を行うものとする。
【0078】
上記のノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果がアドレス一致でかつ“P”の場合には(図14ステップS73)、TAG制御制御回路がバス140にラインリード&インバリデイトリクエストを発行し(図14ステップS74)、ノード(#3)4のTAGメモリあるいはTAGスワップバッファのアクセス対象を無効化する(図14ステップS75)。
【0079】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図14ステップS76)、索引結果が“M”の場合(図14ステップS77)、“M”を登録しているキャッシュがデータをバス140にライトバックし、リクエスト制御部に転送する(図14ステップS78)。“M”を登録しているキャッシュは無効化される(図14ステップS79)。
【0080】
上記のライトバックはデータリプライとしてデータ線304を介してクロスバー5に転送され(図14ステップS80)、データ線301を介してノード(#0)1のメモリコントローラ15に転送される。
【0081】
メモリコントローラ15の判定回路155はデータ線301を介して転送されてきたデータリプライをリプライ制御回路156及びリクエスト制御部154に転送する(図13ステップS59,S60)。リプライ制御回路156はデータリプライをバス110上のCPU11に送信し、キャッシュ11aは“E”を登録する(図13ステップS61)。データリプライはCPU11に返却され、リード処理が完了する。
【0082】
一方、メモリコントローラ15のリクエスト制御部154はTAG制御回路153にデータリプライを転送し、TAGメモリ151及びTAGスワップバッファ152を索引する(図17ステップS101)。ここで、TAGメモリ151の索引結果が判定回路166の結果あるいはTAGスワップバッファ152の索引結果を判別する判定回路164の出力によって以下の様になる。
【0083】
TAGメモリ151のアクセス対象エリアに空きエリアが存在した場合には(図17ステップS102)、その空きエリアにキーアドレス及びステータス“P”を登録する(図17ステップS103)。
【0084】
TAGメモリ151のアクセス対象エリアが全て“P”で登録されていた場合には(図17ステップS104)、いずれかのエリアをTAGスワップバッファ152に追い出し、替わりにデータリプライのキーアドレス及びステータス“P”を登録する(図17ステップS105)。
【0085】
TAGメモリ151のアクセス対象エリアが“P”あるいは“S”で満たされている場合には(図17ステップS106)、いずれかの“S”をTAGスワップバッファ152に追い出し、替わりにデータリプライのキーアドレス及びステータス“P”を登録する(図17ステップS107)。
【0086】
TAGメモリ151のアクセス対象エリアが全て“S”で登録されていた場合には(図17ステップS108)、いずれかのエリアをTAGスワップバッファ152に追い出し、替わりにデータリプライのキーアドレス及びステータス“P”を登録する(図17ステップS109)。
【0087】
上記の処理において、TAGスワップバッファ152が判定回路164の結果からフル状態の場合(図18ステップS110)、TAGスワップバッファ152に格納されている全てが“P”であれば(図18ステップS111)、いずれかの“P”を追い出す(図18ステップS112)。TGA制御回路153は追い出し対象のアドレスでインバリデイトリクエストをバス110に発行する(図18ステップS113)。以下、上記のインバリデイトリクエストの動作について述べる。
【0088】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれかで“M”が登録されている場合には(図19ステップS121)、バス110にライトバックし、無効化“I”する(図19ステップS122)。ライトバックはリクエスト制御部154を介してアクセス対象の分散共有メモリ16にルーティングされ、そのメモリの内容が更新される(図19ステップS123)。
【0089】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれかで“E”が登録されている場合には(図19ステップS124)、そのキャッシュを無効化“I”する(図19ステップS125)。
【0090】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれかで“S”が登録されている場合には(図19ステップS126)、そのキャッシュを無効化“I”する(図19ステップS125)。
【0091】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれにも登録されていない場合には(図19ステップS127)、何もしない。
【0092】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図14ステップS76)、索引結果が“E”の場合(図16ステップS87)、“E”を登録しているキャッシュを無効化する(図16ステップS88)。
【0093】
この場合、メモリコントローラ15において、データリプライは分散共有メモリ16から読出され、リプライ制御回路156を介してバス110に送出される(図13ステップS59,S62)。キャッシュ11aはデータリプライを“E”で登録し、CPU11にデータを返信し(図13ステップS63)、リード処理が完了する。尚、TAGメモリ151及びTAGスワップバッファ152に対する制御及び追い出し制御は上述した図17及び図18に示す処理と同様である。
【0094】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図14ステップS76)、索引結果が“S“の場合(図16ステップS89)、“S”を登録しているキャッシュを無効化する(図16ステップS90)。
【0095】
この場合、メモリコントローラ15において、データリプライは分散共有メモリ16から読出され、リプライ制御回路156を介してバス110に送出される(図13ステップS59,S62)。キャッシュ11aはデータリプライを“E”で登録し、CPU11にデータを返信し(図13ステップS63)、リード処理が完了する。尚、TAGメモリ151及びTAGスワップバッファ152に対する制御及び追い出し制御は上述した図17及び図18に示す処理と同様である。
【0096】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図14ステップS76)、いずれのキャッシュにもヒットしない場合(図16ステップS91)、何もしない。
【0097】
この場合、メモリコントローラ15において、データリプライは分散共有メモリ16から読出され、リプライ制御回路156を介してバス110に送出される(図13ステップS62)。キャッシュ11aはデータリプライを“E”で登録し、CPU11にデータを返信し(図13ステップS63)、リード処理が完了する。尚、TAGメモリ151及びTAGスワップバッファ152に対する制御及び追い出し制御は上述した図17及び図18に示す処理と同様である。
【0098】
上記のノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果がアドレス一致でかつ“S”の場合(図15ステップS81)、TAG制御制御回路はバス140にラインリード&インバリデイトリクエストを発行する(図15ステップS82)。ノード(#3)4のTAGメモリあるいはTAGスワップバッファのアクセス対象は無効化“I”される(図15ステップS83)。
【0099】
ノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果が“S”であることから、バス140上のキャッシュ41a,42a,43a,44aは“S”あるいは“I”であることから、索引結果が“S”の場合には(図15ステップS84)、“S”を登録しているキャッシュを無効化する(図16ステップS90)。また、索引結果が“I”の場合には(図15ステップS85)、何もしない。尚、ノード(#0)1のTAGメモリ151及びTAGスワップバッファ152の登録、更新、及び追い出し制御は上述した図17及び図18に示す処理と同様である。
【0100】
上記のノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果がアドレス一致しないあるいはアドレス一致したが“I”の場合(有効データと一致条件が成立しなかった)には(図15ステップS86)、何もしない。尚、ノード(#0)1のTAGメモリ151及びTAGスワップバッファ152の登録、更新、及び追い出し制御は上述した図17及び図18に示す処理と同様である。
【0101】
他ノード(#3)4の分散共有メモリ46に対するリードについては、TAGメモリ、TAGメモリスワップバッファ及びCPU41〜44各々のキャッシュ41a,42a,43a,44aに対する制御が上述したノード(#0)1の処理と同様である。アクセス対象の分散共有メモリ46はリクエスト発行ノード以外のノードであり、ノード間のデータ転送経路のみが異なる。
【0102】
分散共有メモリ46から読出されたデータはメモリコントローラ45からデータ線304、クロスバー5、データ線301を介してメモリコントローラ15に転送される。このデータは判定回路155からリプライ制御回路156を介してバス110に送信され、リクエスト発行元のキャッシュ11aに登録される。
【0103】
また、他ノード(#3)4においてはキャッシュの“M”から“I”の無効化がノード(#0)1あるいは他ノードで発生したかによって、データリプライの経路が変わるのみである。
【0104】
次に、自ノード(#0)1の分散共有メモリ16に対するライトについて説明する。この場合、リクエスト発行元をCPU11とする。尚、自ノード(#0)1内のCPU12〜14から発行した場合も、各CPU12〜14内のキャッシュ制御及びそれらに関連するリクエストの動作はCPU11の処理と同様であるものとする。
【0105】
CPU11において、キャッシュ11aにアクセス対象のデータが“M”で登録されている場合には(図20ステップS131)、キャッシュ11aにヒットし、キャッシュ11a内のデータが更新され、キャッシュ11aのステータスが“M”のままとされ(図20ステップS132)、ライト処理が完了する。
【0106】
CPU11において、キャッシュ11aにアクセス対象のデータが“E”で登録されている場合には(図20ステップS133)、キャッシュ11aにヒットし、キャッシュ11a内のデータが更新され、キャッシュ11aのステータスも“M”に更新され(図20ステップS134)、ライト処理が完了する。
【0107】
CPU11において、キャッシュ11aにアクセス対象のデータが“S”で登録されている場合には(図20ステップS135)、キャッシュ11aがバス110にバス獲得要求を発行し(図20ステップS137)、バス110が獲得できたら(図20ステップS138)、ラインリード&インバリデイトリクエストを発行する(図20ステップS139)。
【0108】
上記のラインリード&インバリデイトリクエストにおいて、キャッシュ11aがライト対象を“S”でキャッシングしている場合には(図21ステップS140)、バス110にメモリラインリード&インバリデイトリクエストを発行する(図21ステップS141)。
【0109】
バス110上のいずれかのストアインキャッシュに“S”でキャッシングしているものがあれば(図21ステップS142)、インバリデイトされ、キャッシュ11aの登録が無効化“I”される(図21ステップS143)。
【0110】
並行してキャッシュ11aから発行されたラインリード&インバリデイトリクエストをリクエスト制御部154を介してTAG制御回路153に転送し、ノード間アドレス共有バス200に発行する(図21ステップS144)。
【0111】
転送されたメモリリード&インバリデイトリクエストによって他のノードではTAGメモリ及びTAGスワップバッファが索引され、アドレス一致でかつ“P”あるいは“S”を検出した場合に(図22ステップS151)、無効化“I”し(図22ステップS152)、同一ノード内のバスにインバリデイトリクエストを発行する(図22ステップS153)。
【0112】
続いて、他のノードでは“S”でキャッシングしているキャッシュの登録を無効化“I”し(図22ステップS154)、メモリリード&インバリデイトリクエストの完了通知を送信し(図22ステップS155)、索引を完了する。
【0113】
他のノードではTAGメモリ及びTAGスワップバッファの索引結果が“I”の場合(図22ステップS156)、何もせず、メモリリード&インバリデイトリクエストの完了通知を送信し(図22ステップS155)、索引を完了する。
【0114】
TAG制御回路153は他のノードに発行したメモリリード&インバリデイトリクエストの完了通知(スヌーププ結果)を受信すると(図21ステップS145)、TAGメモリ151あるいはTAGスワップバッファ152のいずれかで対象となるエリアを“P”で登録する(図21ステップS146)。
【0115】
メモリラインリード&インバリデイトリクエストのアドレスがマッピングされている分散共有メモリ16からはリードリプライデータが読出され(図21ステップS147)、リプライ制御回路156を介してキャッシュ41aに返信する(図21ステップS148)。
【0116】
キャッシュ11aはリードリプライデータを受信すると、そのリードリプライデータをライトデータとマージして“M”で登録し(図21ステップS149)、ライト処理を完了する。
【0117】
CPU11において、キャッシュ11aにアクセス対象のデータがアドレス一致しない、あるいはアドレス一致したが無効化“I”されている場合には(図20ステップS136)、キャッシュ11aがバス110にバス獲得要求を発行し(図20ステップS137)、バス110が獲得できたら(図20ステップS138)、ラインリード&インバリデイトリクエストを発行する(図20ステップS139)。
【0118】
上記のラインリード&インバリデイトリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aのいずれかでアクセス対象のデータが“M”で登録されている場合には(図23ステップS161)、そのキャッシュ12a,13a,14aがバス110に“M”データをライトバック(データリプライ)する(図23ステップS162)。
【0119】
ライトバックを発行したキャッシュ12a,13a,14aは無効化され、“I”とされる(図23ステップS163)。上記のライトバックはリクエスト制御部154を介して分散共有メモリ16に送信される(図23ステップS164)。既に同一ノード(#0)1内のキャッシュが“M”の状態であるので、TAGメモリ151あるいはTAGスワップバッファ152に登録されているTAGステータスは“P”のままとする(図23ステップS165)。
【0120】
キャッシュ11aはバス110を介して上記のライトバックデータをリプライデータとして受信すると、“M”で登録してデータを更新し(図23ステップS166)、ライト処理を完了する。
【0121】
上記のラインリード&インバリデイトリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aのいずれかでアクセス対象のデータが“E”で登録されている場合には(図24ステップS167)、そのキャッシュ12a,13a,14aを無効化“I”し(図24ステップS168)、ラインリード&インバリデイトリクエストをリクエスト制御部154を介してTAG制御回路153及び分散共有メモリ16に転送する(図24ステップS169)。
【0122】
TAG制御回路153はTAGメモリ151及びTAGスワップバッファ152を索引し(図24ステップS170)、判定回路164あるいは判定回路166の出力からアクセス対象のステータスを“P”に更新する(図24ステップS171)。
【0123】
また、ラインリードリクエストによって分散共有メモリ16から読出されたデータリプライはリプライ制御回路156及びバス110を介してリクエスト発行元のキャッシュ11aに送信され、キャッシュ11aがライトデータとマージして“M”で登録し(図24ステップS172)、ライト処理が完了する。
【0124】
上記のラインリード&インバリデイトリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aのいずれかでアクセス対象のデータが“S”で登録されている場合には(図25ステップS173)、そのキャッシュを無効化“I”する(図25ステップS174)。
【0125】
ラインリード&インバリデイトリクエストはリクエスト制御部154を介してTAG制御回路153及び分散共有メモリ16に転送される(図25ステップS175)。また、他ノードのキャッシュが“S”である可能性があるため、TAG制御回路153はノード間アドレスバス200にインバリデイトリクエストを発行する(図25ステップS176)。
【0126】
インバリデイトリクエストを受信した各々のノードのメモリコントローラは(図27ステップS191)、ノード内のバスへインバリデイトリクエストを発行する(図27ステップS192)。“S”で登録されているキャッシュは全て無効化“I”される(図27ステップS193)。キャッシングされていない場合には(図27ステップS194)、なにもしない。他ノードのTAGメモリ及びTAGスワップバッファのアクセス対象のエリアは無効化“I”される(図27ステップS195)。
【0127】
自ノード(#0)1内のメモリコントローラ15のTAG制御回路153はTAGメモリ151及びTAGスワップバッファ152を“P”に更新する(図25ステップS177)。
【0128】
また、ラインリード&インバリデイトリクエストによって分散共有メモリ16から読出されたデータリプライはリプライ制御回路156及びバス110を介してリクエスト発行元のキャッシュ11aに送信される(図25ステップS178)。キャッシュ11aはそのデータリプライをライトデータとマージして“M”で登録し(図25ステップS179)、ライト処理が完了する。
【0129】
上記のラインリード&インバリデイトリクエストにおいて、バス110に接続しているCPU12〜14のキャッシュ12a,13a,14aの全てがアクセス対象のデータを登録していない場合には(図26ステップS180)、ラインリード&インバリデイトリクエストをリクエスト制御部154を介してTAG制御回路153及び分散共有メモリ16に転送する(図26ステップS181)。
【0130】
TAG制御回路153はノード間アドレスバス200にラインリード&インバリデイトリクエストを発行し(図26ステップS182)、他ノード(#1〜#3)2〜4のメモリコントローラに上記ラインリクエストを転送する。
【0131】
他ノード(#1〜#3)2〜4各々のメモリコントローラのTAG制御回路は他のノードからのラインリクエストを受信すると(図28ステップS201)、TAGメモリ及びTAGスワップバッファを索引する(図28ステップS202)。以下、各索引結果毎の処理について述べるが、その処理についてはノード(#3)4を対象として説明する。但し、ノード(#1,2)2,3でもノード(#3)4と同様の動作を行うものとする。
【0132】
上記のノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果がアドレス一致でかつ“P”の場合には(図28ステップS203)、TAG制御回路がバス140にインバリデイトリクエストを発行し(図28ステップS204)、ノード(#3)4のTAGメモリあるいはTAGスワップバッファのアクセス対象を無効化“I”する(図28ステップS205)。
【0133】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図28ステップS206)、索引結果が“M”の場合(図28ステップS207)、“M”を登録しているキャッシュがデータをバス140にライトバックし、リクエスト制御部に転送する(図28ステップS208)。“M”を登録しているキャッシは無効化“I”される(図28ステップS209)。
【0134】
上記のライトバックはデータリプライとしてデータ線304を介してクロスバー5に転送され(図28ステップS210)、データ線301を介してノード(#0)1のメモリコントローラ15に転送される。
【0135】
メモリコントローラ15の判定回路155はデータリプライをリプライ制御回路156及びリクエスト制御部154に転送する。リプライ制御回路156はデータリプライをバス110上のCPU11に送信する。キャッシュ11aはデータリプライとライトデータとをマージして“M”で登録し(図26ステップS183,S184)、ライト処理が完了する。
【0136】
尚、上記の処理においてリード動作時のTAGメモリ151とTAGスワップバッファ152の制御と同様に、リクエスト発行元のTAG制御回路153はデータリプライを受信し、TAGメモリ151及びTAGスワップバッファ152を索引する(図31ステップS231)。ここで、TAGメモリ151の索引結果が判定回路166の結果あるいはTAGスワップバッファ152の索引結果を判別する判定回路164の出力によって以下の様になる。
【0137】
TAGメモリ151のアクセス対象エリアに空きエリアが存在した場合には(図31ステップS232)、その空きエリアにキーアドレス及びステータス“P”を登録する(図31ステップS233)。
【0138】
TAGメモリ151のアクセス対象エリアが全て“P”で登録されていた場合には(図31ステップS234)、いずれかのエリアをTAGスワップバッファ152に追い出し、替わりにデータリプライのキーアドレス及びステータス“P”を登録する(図31ステップS235)。
【0139】
TAGメモリ151のアクセス対象エリアが“P”あるいは“S”で満たされている場合には(図31ステップS236)、いずれかの“S”をTAGスワップバッファ152に追い出し、替わりにデータリプライのキーアドレス及びステータス“P”を登録する(図31ステップS237)。
【0140】
TAGメモリ151のアクセス対象エリアが全て“S”で登録されていた場合には(図31ステップS238)、いずれかのエリアをTAGスワップバッファ152に追い出し、替わりにデータリプライのキーアドレス及びステータス“P”を登録する(図31ステップS239)。
【0141】
上記の処理において、TAGスワップバッファ152が判定回路162の結果からフル状態の場合(図32ステップS240)、TAGスワップバッファ152に格納されている全てが“P”であれば(図32ステップS241)、いずれかの“P”を追い出す(図32ステップS242)。TGA制御回路153は追い出し対象のアドレスでインバリデイトリクエストをバス110に発行する(図32ステップS243)。以下、上記のインバリデイトリクエストに対する動作について述べる。
【0142】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれかで“M”が登録されている場合には(図33ステップS251)、バス110にライトバックし、無効化“I”する(図33ステップS252)。ライトバックはリクエスト制御部154を介してアクセス対象の分散共有メモリ16にルーティングされ、そのメモリの内容が更新される(図33ステップS253)。
【0143】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれかで“E”が登録されている場合には(図33ステップS254)、そのキャッシュを無効化“I”する(図33ステップS255)。
【0144】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれかで“S”が登録されている場合には(図33ステップS256)、そのキャッシュを無効化“I”する(図33ステップS255)。
【0145】
インバリデイトリクエストのアドレスに対して、バス110上のキャッシュ11a,12a,13a,14aのいずれにも登録されていない場合には(図33ステップS257)、何もしない。
【0146】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図28ステップS206)、索引結果が“E”の場合(図30ステップS217)、“E”を登録しているキャッシュを無効化”I”する(図30ステップS218)。
【0147】
この場合、メモリコントローラ15において、データリプライは分散共有メモリ16から読出され、リプライ制御回路156を介してバス110に送出される(図26ステップS183,S185)。キャッシュ11aはデータリプライとライトデータとをマージして“M”で登録し(図26ステップS186)、ライト処理が完了する。尚、TAGメモリ151及びTAGスワップバッファ152に対する制御及び追い出し制御は上述した図31及び図32に示す処理と同様である。
【0148】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図28ステップS206)、索引結果が“S”の場合(図30ステップS219)、“S”を登録しているキャッシュを無効化“I”する(図30ステップS220)。
【0149】
この場合、メモリコントローラ15において、データリプライは分散共有メモリ16から読出され、リプライ制御回路156を介してバス110に送出される(図26ステップS183,S185)。キャッシュ11aはデータリプライとライトデータとをマージして“M”で登録し(図26ステップS186)、ライト処理が完了する。尚、TAGメモリ151及びTAGスワップバッファ152に対する制御及び追い出し制御は上述した図31及び図32に示す処理と同様である。
【0150】
ノード(#3)4ではCPU41〜44各々のキャッシュ41a,42a,43a,44aを索引し(図28ステップS206)、いずれのキャッシュにもヒットしない場合(図30ステップS221)、何もしない。
【0151】
この場合、メモリコントローラ15において、データリプライは分散共有メモリ16から読出され、リプライ制御回路156を介してバス110に送出される(図26ステップS183,S185)。キャッシュ11aはデータリプライとライトデータとをマージして“M”で登録し(図26ステップS186)、ライト処理が完了する。尚、TAGメモリ151及びTAGスワップバッファ152に対する制御及び追い出し制御は上述した図31及び図32に示す処理と同様である。
【0152】
上記のノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果がアドレス一致でかつ“S”の場合(図29ステップS211)、TAG制御制御回路はバス140にインバリデイトリクエストを発行する(図29ステップS212)。ノード(#3)4のTAGメモリあるいはTAGスワップバッファのアクセス対象は無効化“I”される(図29ステップS213)。
【0153】
ノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果が“S”であることから、バス140上のキャッシュ41a,42a,43a,44aは“S”あるいは“I”であることから、索引結果が“S”の場合には(図29ステップS214)、“S”を登録しているキャッシュを無効化“I”する(図30ステップS220)。また、索引結果が“I”の場合には(図29ステップS215)、何もしない。尚、ノード(#0)1のTAGメモリ151及びTAGスワップバッファ152の登録、更新、及び追い出し制御は上述した図31及び図32に示す処理と同様である。
【0154】
上記のノード(#3)4のTAGメモリ及びTAGスワップバッファの索引結果がアドレス一致しないあるいはアドレス一致したが“I”の場合(有効データと一致条件が成立しなかった)には(図29ステップS216)、何もしない。尚、ノード(#0)1のTAGメモリ151及びTAGスワップバッファ152の登録、更新、及び追い出し制御は上述した図31及び図32に示す処理と同様である。
【0155】
他ノード(#3)4の分散共有メモリ46に対するライトについては、TAGメモリ、TAGメモリスワップバッファ及びCPU41〜44各々のキャッシュ41a,42a,43a,44aに対する制御が上述したノード(#0)1の処理と同様である。アクセス対象の分散共有メモリ46はリクエスト発行ノード以外のノードであり、ノード間のデータ転送経路のみが異なる。
【0156】
分散共有メモリ46から読出されたデータはメモリコントローラ44からデータ線304、クロスバー5、データ線301を介してメモリコントローラ15に転送される。このデータは判定回路155からリプライ制御回路156を介してバス110に送信され、リクエスト発行元のキャッシュ11aに登録される。
【0157】
また、他ノード(#3)4においてはキャッシュの“M”から“I”の無効化がノード(#0)1あるいは他ノードで発生したかによって、データリプライの経路が変わるのみである。
【0158】
近年、メインメモリの容量及びCPUに搭載されるキャッシュの容量は大容量化している。TAGメモリで全メモリ空間の情報を保持することはハードウェア投資が膨大となる。また、TAGメモリの容量を増やすことによって、制御が複雑化すると同時に、ハードウェア投資に見合った性能が確保されるとは限らない。
【0159】
本実施例ではTAGメモリ151と、TAGメモリ151からの掃き出し情報を保持するTAGスワップバッファ152とによって、TAGスワップバッファ152に有効な情報があり、TAGメモリ151のエリアが空いた際にTAGスワップバッファ152からの再登録を行っている。
【0160】
TAGスワップバッファ152はフル状態となるまで、バス110へのコヒーレントリクエストを発行しない。また、TAGスワップバッファ152内にTAGメモリ151への再登録対象が複数ある場合、TAGステータスが“S”よりも“P”であるものを優先する。
【0161】
TAGスワップバッファ152からバス110へのコヒーレントリクエストを発行する場合も、ステータスが“S”よりも“P”を優先させる機構を具備することによって、各ノード内のバスへの負荷を低減し、TAGメモリ151を有効に活用することから、CPU11〜14,……,41〜44に搭載されるキャッシュ11a,12a,13a,14a,……,41a,42a,43a,44aからの掃き出しが低減される。よって、システム全体の性能が向上する。
【0162】
【発明の効果】
以上説明したように本発明は、タグメモリと、タグメモリ151からの掃き出し情報を保持するタグスワップバッファとによって、タグスワップバッファに有効な情報があり、タグメモリのエリアが空いた際にタグスワップバッファからの再登録を行うことによって、バスへの負荷を減らすことができ、キャッシュのヒット率を上げてシステム全体の性能を向上させることができるという効果が得られる。
【図面の簡単な説明】
【図1】本発明の一実施例による分散共有メモリ型マルチプロセッサシステムの構成を示すブロック図である。
【図2】図1のメモリコントローラの構成を示すブロック図である。
【図3】図2のTAGメモリの保持内容を示す図である。
【図4】図2のTAGスワップバッファの保持内容を示す図である。
【図5】図2のTAGメモリ及びTAGスワップバッファの制御機構を示すブロック図である。
【図6】図2のTAGメモリからの追い出し制御を示すフローチャートである。
【図7】図2のTAGスワップバッファからの追い出し制御を示すフローチャートである。
【図8】図2のTAGスワップバッファからTAGメモリへの再登録制御を示すフローチャートである。
【図9】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図10】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図11】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図12】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図13】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図14】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図15】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図16】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図17】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図18】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図19】図1の分散共有メモリに対するリード処理を示すフローチャートである。
【図20】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図21】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図22】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図23】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図24】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図25】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図26】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図27】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図28】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図29】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図30】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図31】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図32】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【図33】図1の分散共有メモリに対するライト処理を示すフローチャートである。
【符号の説明】
1〜4 ノード(#0〜#3)
5 クロスバー
6−1〜6−4 I/O装置
11〜14,41〜44 CPU
11a,12a,13a,
14a,41a,42a,
43a,44a キャッシュ
15,45 メモリコントローラ
16,46 分散共有メモリ
151 TAGメモリ
152 TAGスワップバッファ
153 TAG制御回路
154 リクエスト制御部
155,162,164,
166 判定回路
156 リプライ制御回路部
161 レジスタ
163,165 選択回路[0001]
BACKGROUND OF THE INVENTION
The present invention relates to a distributed shared memory multiprocessor system and a tag control method used therefor, and more particularly, to a tag (hereinafter referred to as TAG) control method used in a shared memory multiprocessor system.
[0002]
[Prior art]
Conventionally, in a shared memory multiprocessor system, multiple processors store a copy of the system memory in a cache. In this case, the shared memory multiprocessor system requires a cache coherent mechanism in order to maintain the consistency between the data stored in the plurality of caches of the same memory line and the memory.
[0003]
A TAG (or directory) is provided to realize this cache coherent mechanism. The TAG stores the address of each memory line and the state of the system memory and the cache.
[0004]
In recent years, the capacity of caches installed in computer systems for accelerating access to system memory has been greatly increased. In addition, the system memory has been greatly increased in capacity. The TAG stores a large amount of information as the system memory and the cache increase in capacity, thereby improving the throughput of the entire system.
[0005]
[Problems to be solved by the invention]
However, in the conventional shared memory multiprocessor system described above, if a TAG having the same capacity as the system memory or the cache is installed, the amount of hardware increases, the cost burden increases, and the control complexity increases. However, the access speed is slow and the control becomes complicated.
[0006]
Therefore, an object of the present invention is to solve the above-mentioned problems, reduce the load on the bus, increase the cache hit rate, and improve the performance of the entire system, and a distributed shared memory multiprocessor system and It is to provide a tag control method used therefor.
[0007]
[Means for Solving the Problems]
A distributed shared memory multiprocessor system according to the present invention holds a plurality of central processing units having a cache, a memory controller for processing a request from one of the central processing unit and the input / output device, and information on the cache A distributed shared memory type multiprocessor system including a plurality of nodes configured by a bus connection between the central processing unit and the memory controller,
An inter-node address bus that connects each of the plurality of nodes; and a crossbar that connects each of the plurality of nodes and performs processing of data between the plurality of nodes and processing of a request from the input / output device.,
The memory controller includes a tag memory that holds information on the cache, a tag swap buffer that holds tag flush information in the tag memory, a tag control circuit that controls a request issued from the node, and each of the nodes A request control unit that controls a request to access, and a reply control circuit that controls reply data in the node;
The tag control circuit includes a mechanism for indexing, registering, invalidating, and issuing a coherent request for the tag memory and the tag swap buffer.
A determination circuit for determining an index result of the tag memory and the tag swap buffer;
The determination circuit invalidates information in the tag swap buffer and re-registers in the tag memory when detecting that the area of the tag memory is an invalidation target and the same set address exists in the tag swap buffer. Doneing.
[0008]
A tag control method according to the present invention includes a plurality of central processing units having a cache, a memory controller that processes a request from one of the central processing unit and the input / output device, and a distributed shared memory that holds information of the cache A distributed shared memory multiprocessor system tag control method including a plurality of nodes formed by bus connection between the central processing unit and the memory controller,
Each of the plurality of nodes is connected by an inter-node address bus and a crossbar that performs processing of data between the plurality of nodes and processing of a request from the input / output device,
In the tag memory holding the cache information and the tag swap buffer holding the tag sweep information in the tag memory, the address and status information registered in the cache in the node are held,
When newly registering the tag memory area in the tag swap buffer, the address and status information obtained by swapping any one of the areas are stored.,
When determining the index result of the tag memory and the tag swap buffer, when it is detected that the area of the tag memory is an invalidation target and the same set address exists in the tag swap buffer, the tag swap buffer Invalidate information and re-register in the tag memorying.
[0009]
That is, the distributed shared memory type multiprocessor system of the present invention has a bus connection between a plurality of CPUs (central processing units) having a cache and each CPU and a memory controller, and the CPU or I / O (input / output). Each node is composed of a memory controller that processes requests from a device and a distributed shared memory, and each of the above nodes is connected via an inter-node address bus and a crossbar. At the same time as processing data, requests from I / O devices are processed.
[0010]
The memory controller of each node includes a tag memory (hereinafter referred to as “TAG”) that holds information on a cache mounted on each CPU in the node, a TAG swap buffer that holds TAG flush information, and a node or other node. TAG control circuit comprising a mechanism for controlling issued requests and issuing index, registration, invalidation and coherent requests for TAG memory and TAG swap buffer, request control unit for controlling requests to access each node, and each And a reply control circuit for controlling reply data in the node.
[0011]
The TAG memory and the TAG swap buffer hold the address and status information registered in the CPU cache in each node. The TAG swap buffer holds the address and status information obtained by swapping any one area when a new registration is performed in a state where the area of the TAG memory is fully registered.
[0012]
When the TAG control circuit receives the TAG index request, the TAG memory and the TAG swap buffer are simultaneously indexed, the addresses held in the TAG memory or the TAG swap buffer match, and the status information is valid (P or S). The TAG control circuit issues a request to the bus by performing registration, update, and invalidation according to each index result.
[0013]
In the circuit for determining the index result of the TAG memory and the TAG swap buffer, if it is determined that the area of the TAG memory is the object to be invalidated and the same set address exists in the TAG swap buffer, the information of the TAG swap buffer is invalidated. And re-register in the TAG memory.
[0014]
In the above processing, when a plurality of identical set addresses exist in the TAG swap buffer, re-registration is performed with priority given to the status information “P” indicating any one of the states of the cache. The TAG swap buffer determines whether there is valid information based on the status information held in each entry, reads out from the TAG swap buffer when the buffer is full, and a swap from the TAG memory occurs, and a TAG control circuit Issue an invalidate request to the bus.
[0015]
In each determination circuit that determines the index results of the TAG memory and the TAG swap buffer, the status information is determined, and a plurality of evictions (swaps) from the TAG memory are cached in the system from the status information “P”. Priority is given to “S” indicating a possible state or a state where caching is not performed.
[0016]
Similarly to the above, in each determination circuit that determines the index result of the TAG memory and the TAG swap buffer, the status information is written back from the cache by giving priority to “S” over “P” as the status information. Reduce processing.
[0017]
Similarly to the above, if it is determined that all the statuses of the TAG swap buffer are “P” and the status information to be swapped from the TAG memory is “S”, the status is not stored in the TAG swap buffer but is stored in the bus. Issue an invalidate request.
[0018]
Therefore, as described above, by controlling the TAG memory and the TAG swap buffer, coherent control between a plurality of nodes can be performed, and at the same time, the entry of the TAG memory can be effectively used, and the CPU cache can be used. Since the data sweeping operation registered with the status information “M” is reduced, the cache hit rate is increased, and the load on the bus is suppressed, so that the performance of the entire system is improved.
[0019]
Therefore, in the distributed shared memory multiprocessor system of the present invention, the TAG memory and the TAG swap buffer that can be mounted on the LSI (Large Scale Integrated circuit) are fully utilized, the load on the bus is reduced, and the cache hit rate is increased. As a result, the performance of the entire system is improved.
[0020]
In recent years, the capacity of the main memory and the capacity of the cache mounted on the memory CPU have increased. Holding information in the entire memory space with the TAG memory requires a huge amount of hardware investment. Further, an increase in the capacity of the TAG memory complicates the control, and at the same time, does not always ensure the performance commensurate with the hardware investment.
[0021]
In the distributed shared memory type multiprocessor system of the present invention, the TAG swap buffer that holds the swept information from the TAG memory and the TAG memory has effective information in the TAG swap buffer. When the TAG memory area is free, the TAG Re-register from the swap buffer.
[0022]
The TAG swap buffer does not issue a coherent request to the bus until it is full. Further, when there are a plurality of re-registration targets in the TAG swap buffer, the one with the TAG status “P” is prioritized over “S”. Even when a coherent request is issued from the TAG swap buffer to the bus, the load on the bus in each node is reduced and the TAG memory is enabled by providing a mechanism that prioritizes the status “P” over “S”. By utilizing, the flushing from the cache mounted on the CPU is reduced. Therefore, the performance of the entire system is improved.
[0023]
DETAILED DESCRIPTION OF THE INVENTION
Next, embodiments of the present invention will be described with reference to the drawings. FIG. 1 is a block diagram showing a configuration of a distributed shared memory multiprocessor system according to an embodiment of the present invention. In FIG. 1, a distributed shared memory multiprocessor system according to an embodiment of the present invention includes nodes (# 0 to # 3) 1 to 4, a
[0024]
Each of the nodes (# 0 to # 3) 1 to 4 includes a plurality of CPUs (central processing units) 11 to 14,..., 41 to 44, a
[0025]
The CPUs 11-14,..., 41-44 have caches 11a, 12a, 13a, 14a,..., 41a, 42a, 43a, 44a, respectively, and the
[0026]
The
[0027]
FIG. 2 is a block diagram showing the configuration of the
[0028]
The
[0029]
FIG. 3 is a diagram showing the contents held in the
[0030]
The CPU cache status “M (Modified)” has a code “11” and its outline is “only caching in the system. It is not a copy of the shared memory”. The CPU cache status “E (Exclusive)” has a code of “10”, and its outline is “the only caching in the system and has a copy of the shared memory”.
[0031]
The CPU cache status “S (Shared)” has a code “01” and its outline is “There may be multiple caches in the system, and there is a copy of the shared memory”. . The CPU cache status “I (Invalid)” has a code “00” and its outline is “no caching”.
[0032]
FIG. 4 is a diagram showing the contents held in the
[0033]
The TAG status “P (Private)” has a code “11” and a CPU cache status “M / E / S / I status”. The TAG status “S (Share)” has a code “10” and a CPU cache status “S / I status”. The TAG status “U (Uncached)” has a code “00” and a CPU cache status “I (not cached)”. In other words, the TAG status “P” indicates any one of the CPU cache statuses, and the TAG status “S” indicates that “there is a possibility that a plurality of caches are in the system, and there is a copy of the shared memory”. Indicates a status or “not caching” status.
[0034]
The
[0035]
The
[0036]
The transfer control of the
[0037]
The
[0038]
The
[0039]
When the
[0040]
FIG. 5 is a block diagram showing a control mechanism of the
[0041]
The
[0042]
The
[0043]
The
[0044]
The
[0045]
The
[0046]
Further, the
[0047]
FIG. 6 is a flowchart showing eviction control from the
[0048]
When the
[0049]
When “S” and “P” coexist (step S7 in FIG. 6), the
[0050]
FIG. 7 is a flowchart showing the eviction control from the
[0051]
When the
[0052]
In the
[0053]
When the
[0054]
FIG. 8 is a flowchart showing re-registration control from the
[0055]
When the
[0056]
When the target existing in the
[0057]
Therefore, as described above, by controlling the
[0058]
9 to 19 are flowcharts showing the read processing for the distributed shared
[0059]
In this embodiment, when viewed from the node (# 0) 1, the read to the distributed shared
[0060]
Note that reading and writing to the distributed shared memory of other nodes (# 1, # 2) 2 and 3 are the same as reading and writing to the distributed shared
[0061]
First, reading from the distributed shared
[0062]
In the
[0063]
In the
[0064]
In the
[0065]
In the
[0066]
In the above line read request, when the access target data is registered as “M” in any of the caches 12a, 13a, and 14a of the
[0067]
The caches 12a, 13a, and 14a that have issued the write-back are invalidated and set to “I” (step S41 in FIG. 10). The above write back is transmitted to the distributed shared
[0068]
The cache 11a receives the write-back data as reply data via the
[0069]
In the above line read request, when the access target data is registered as “E” in any of the caches 12a, 13a, and 14a of the
[0070]
The line read request is transferred to the
[0071]
The data reply read from the distributed shared
[0072]
In the above line read request, when the access target data is registered as “S” in any of the caches 12a, 13a, and 14a of the
[0073]
The line read request is transferred to the
[0074]
Further, the data reply read from the distributed shared
[0075]
In the above line read request, when all of the caches 12a, 13a and 14a of the
[0076]
The
[0077]
When the TAG control circuit of each memory controller of each of the other nodes (# 1 to # 3) 2 to 4 receives a line request from another node (step S71 in FIG. 14), the TAG memory and the TAG swap buffer are indexed (FIG. 14). Step S72). Hereinafter, the processing for each index result will be described, but the processing will be described with respect to the node (# 3) 4. However, the nodes (# 1, 2) 2 and 3 perform the same operation as the node (# 3) 4.
[0078]
When the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 matches the address and is “P” (step S73 in FIG. 14), the TAG control control circuit sends a line read & invalidate to the
[0079]
In the node (# 3) 4, the
[0080]
The write back is transferred as a data reply to the
[0081]
The
[0082]
On the other hand, the
[0083]
If there is an empty area in the access target area of the TAG memory 151 (step S102 in FIG. 17), the key address and status “P” are registered in the empty area (step S103 in FIG. 17).
[0084]
If all the access target areas of the
[0085]
When the access target area of the
[0086]
If all the access target areas of the
[0087]
In the above processing, when the
[0088]
If “M” is registered in any of the caches 11a, 12a, 13a, and 14a on the
[0089]
If “E” is registered in any of the caches 11a, 12a, 13a, and 14a on the
[0090]
If “S” is registered in any of the caches 11a, 12a, 13a, and 14a on the
[0091]
If the address of the invalidate request is not registered in any of the caches 11a, 12a, 13a, and 14a on the bus 110 (step S127 in FIG. 19), nothing is done.
[0092]
The node (# 3) 4 indexes the
[0093]
In this case, in the
[0094]
In the node (# 3) 4, the
[0095]
In this case, in the
[0096]
In the node (# 3) 4, the
[0097]
In this case, in the
[0098]
When the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 is an address match and “S” (step S81 in FIG. 15), the TAG control control circuit sends a line read & invalidate request to the
[0099]
Since the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 is “S”, the
[0100]
When the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 does not match the address or matches the address but is “I” (the matching condition is not satisfied with the valid data) (step in FIG. 15) S86), do nothing. The registration, update, and eviction control of the
[0101]
Regarding the read to the distributed shared
[0102]
Data read from the distributed shared
[0103]
Further, in the other node (# 3) 4, only the data reply path changes depending on whether the invalidation of the cache from “M” to “I” occurs in the node (# 0) 1 or the other node.
[0104]
Next, writing to the distributed shared
[0105]
In the
[0106]
In the
[0107]
In the
[0108]
In the above line read & invalidate request, if the cache 11a is caching the write target with “S” (step S140 in FIG. 21), a memory line read & invalidate request is issued to the bus 110 (FIG. 21). Step S141).
[0109]
If any one of the store-in caches on the
[0110]
In parallel, the line read & invalidate request issued from the cache 11a is transferred to the
[0111]
In response to the transferred memory read & invalidate request, the TAG memory and the TAG swap buffer are indexed in the other nodes, and when the address coincides and “P” or “S” is detected (step S151 in FIG. 22), the invalidation “ I "(step S152 in FIG. 22), and an invalidate request is issued to the bus in the same node (step S153 in FIG. 22).
[0112]
Subsequently, in the other node, the cache registration cached in “S” is invalidated “I” (step S154 in FIG. 22), and the completion notification of the memory read & invalidate request is transmitted (step S155 in FIG. 22). Complete the index.
[0113]
In other nodes, when the index result of the TAG memory and the TAG swap buffer is “I” (step S156 in FIG. 22), nothing is done and a memory read & invalidate request completion notification is transmitted (step S155 in FIG. 22). To complete.
[0114]
When the
[0115]
Read reply data is read from the distributed shared
[0116]
When the cache 11a receives the read reply data, it merges the read reply data with the write data and registers it as “M” (step S149 in FIG. 21), thereby completing the write process.
[0117]
In the
[0118]
In the above line read & invalidate request, when the data to be accessed is registered as “M” in any of the caches 12a, 13a, and 14a of the
[0119]
The caches 12a, 13a, and 14a that issued the write-back are invalidated and set to “I” (step S163 in FIG. 23). The above write back is transmitted to the distributed shared
[0120]
When the cache 11a receives the write-back data as reply data via the
[0121]
In the above line read & invalidate request, when the access target data is registered as “E” in any of the caches 12a, 13a, and 14a of the
[0122]
The
[0123]
The data reply read from the distributed shared
[0124]
In the above line read & invalidate request, when the access target data is registered as “S” in any of the caches 12a, 13a, and 14a of the
[0125]
The line read & invalidate request is transferred to the
[0126]
The memory controller of each node that has received the invalidate request (step S191 in FIG. 27) issues an invalidate request to the bus in the node (step S192 in FIG. 27). All the caches registered in “S” are invalidated “I” (step S193 in FIG. 27). If it is not cached (step S194 in FIG. 27), nothing is done. The area to be accessed in the TAG memory and the TAG swap buffer of the other node is invalidated “I” (step S195 in FIG. 27).
[0127]
The
[0128]
Further, the data reply read from the distributed shared
[0129]
In the above line read & invalidate request, when all of the caches 12a, 13a, 14a of the
[0130]
The
[0131]
When the TAG control circuit of each of the memory controllers of the other nodes (# 1 to # 3) 2 to 4 receives a line request from the other node (step S201 in FIG. 28), the TAG memory and the TAG swap buffer are indexed (FIG. 28). Step S202). Hereinafter, the processing for each index result will be described, but the processing will be described with respect to the node (# 3) 4. However, the nodes (# 1, 2) 2 and 3 perform the same operation as the node (# 3) 4.
[0132]
When the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 matches the address and is “P” (step S203 in FIG. 28), the TAG control circuit issues an invalid request to the
[0133]
In the node (# 3) 4, the
[0134]
The write-back is transferred as a data reply to the
[0135]
The
[0136]
In the above process, the
[0137]
If there is an empty area in the access target area of the TAG memory 151 (step S232 in FIG. 31), the key address and status “P” are registered in the empty area (step S233 in FIG. 31).
[0138]
If all the access target areas of the
[0139]
When the access target area of the
[0140]
If all the access target areas of the
[0141]
In the above processing, when the
[0142]
If “M” is registered in any of the caches 11a, 12a, 13a, and 14a on the
[0143]
If “E” is registered in any of the caches 11a, 12a, 13a, and 14a on the
[0144]
If “S” is registered in any of the caches 11a, 12a, 13a, and 14a on the
[0145]
If the address of the invalidate request is not registered in any of the caches 11a, 12a, 13a, and 14a on the bus 110 (step S257 in FIG. 33), nothing is done.
[0146]
In the node (# 3) 4, the
[0147]
In this case, in the
[0148]
In the node (# 3) 4, the
[0149]
In this case, in the
[0150]
In the node (# 3) 4, the
[0151]
In this case, in the
[0152]
When the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 is an address match and “S” (step S211 in FIG. 29), the TAG control control circuit issues an invalid request to the bus 140 ( FIG. 29 step S212). The access target of the TAG memory or the TAG swap buffer of the node (# 3) 4 is invalidated “I” (step S213 in FIG. 29).
[0153]
Since the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 is “S”, the
[0154]
If the index result of the TAG memory and the TAG swap buffer of the node (# 3) 4 does not match the address or matches the address but is “I” (the matching condition is not satisfied with the valid data) (step in FIG. 29) S216), do nothing. The registration, update, and eviction control of the
[0155]
For writing to the distributed shared
[0156]
Data read from the distributed shared
[0157]
Further, in the other node (# 3) 4, only the data reply path changes depending on whether the invalidation of the cache from “M” to “I” occurs in the node (# 0) 1 or the other node.
[0158]
In recent years, the capacity of the main memory and the capacity of the cache mounted on the CPU have been increased. Holding information in the entire memory space with the TAG memory requires a huge amount of hardware investment. In addition, increasing the capacity of the TAG memory complicates the control, and at the same time, does not necessarily ensure the performance commensurate with the hardware investment.
[0159]
In this embodiment, the
[0160]
The
[0161]
Even when a coherent request from the
[0162]
【The invention's effect】
As described above, according to the present invention, the tag swap and the tag swap buffer that holds the swept information from the
[Brief description of the drawings]
FIG. 1 is a block diagram showing a configuration of a distributed shared memory multiprocessor system according to an embodiment of the present invention.
2 is a block diagram showing a configuration of a memory controller in FIG. 1. FIG.
FIG. 3 is a diagram showing the contents held in the TAG memory of FIG. 2;
4 is a diagram showing the contents held in the TAG swap buffer of FIG. 2; FIG.
5 is a block diagram showing a control mechanism of the TAG memory and the TAG swap buffer in FIG. 2;
6 is a flowchart showing eviction control from the TAG memory of FIG. 2. FIG.
7 is a flowchart showing eviction control from the TAG swap buffer of FIG. 2; FIG.
FIG. 8 is a flowchart showing re-registration control from the TAG swap buffer of FIG. 2 to the TAG memory.
FIG. 9 is a flowchart showing a read process for the distributed shared memory in FIG. 1;
10 is a flowchart showing a read process for the distributed shared memory of FIG. 1. FIG.
FIG. 11 is a flowchart showing a read process for the distributed shared memory in FIG. 1;
12 is a flowchart showing a read process for the distributed shared memory in FIG. 1; FIG.
FIG. 13 is a flowchart showing a read process for the distributed shared memory of FIG. 1;
14 is a flowchart showing a read process for the distributed shared memory in FIG. 1. FIG.
15 is a flowchart showing a read process for the distributed shared memory of FIG. 1. FIG.
16 is a flowchart showing a read process for the distributed shared memory of FIG. 1. FIG.
FIG. 17 is a flowchart showing a read process for the distributed shared memory in FIG. 1;
FIG. 18 is a flowchart showing a read process for the distributed shared memory of FIG. 1;
FIG. 19 is a flowchart showing a read process for the distributed shared memory in FIG. 1;
20 is a flowchart showing a write process for the distributed shared memory in FIG. 1; FIG.
FIG. 21 is a flowchart showing a write process for the distributed shared memory in FIG. 1;
FIG. 22 is a flowchart showing a write process for the distributed shared memory in FIG. 1;
FIG. 23 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
24 is a flowchart showing a write process for the distributed shared memory in FIG. 1; FIG.
FIG. 25 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
FIG. 26 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
FIG. 27 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
FIG. 28 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
FIG. 29 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
30 is a flowchart showing a write process for the distributed shared memory in FIG. 1; FIG.
FIG. 31 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
32 is a flowchart showing a write process for the distributed shared memory in FIG. 1. FIG.
FIG. 33 is a flowchart showing a write process for the distributed shared memory of FIG. 1;
[Explanation of symbols]
1 to 4 nodes (# 0 to # 3)
5 Crossbar
6-1 to 6-4 I / O device
11-14, 41-44 CPU
11a, 12a, 13a,
14a, 41a, 42a,
43a, 44a cash
15, 45 Memory controller
16, 46 Distributed shared memory
151 TAG memory
152 TAG swap buffer
153 TAG control circuit
154 Request control unit
155, 162, 164
166 judgment circuit
156 reply control circuit section
161 registers
163,165 selection circuit
Claims (15)
前記複数のノード各々を接続するノード間アドレスバスと、前記複数のノード各々を接続しかつ前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとを有し、
前記メモリコントローラは、前記キャッシュの情報を保持するタグメモリと、前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファと、前記ノードから発行されたリクエストを制御するタグ制御回路と、前記ノード各々にアクセスするリクエストを制御するリクエスト制御部と、前記ノード内のリプライデータを制御するリプライ制御回路とを含み、
前記タグ制御回路は、前記タグメモリ及び前記タグスワップバッファの索引、登録、無効化、コヒーレントリクエストの発行を行う機構を含み、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する判定回路を含み、
前記判定回路は、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行うことを特徴とする分散共有メモリ型マルチプロセッサシステム。A plurality of central processing units having a cache; a memory controller that processes a request from either the central processing unit or the input / output device; and a distributed shared memory that holds information of the cache. A distributed shared memory multiprocessor system including a plurality of nodes formed by bus connection between a device and the memory controller,
An inter-node address bus that connects each of the plurality of nodes, and a crossbar that connects each of the plurality of nodes and performs data processing between the plurality of nodes and processing of requests from the input / output devices. And
The memory controller includes a tag memory that holds information on the cache, a tag swap buffer that holds tag flush information in the tag memory, a tag control circuit that controls a request issued from the node, and each of the nodes A request control unit that controls a request to be accessed, and a reply control circuit that controls reply data in the node;
The tag control circuit includes a mechanism for indexing, registering, invalidating, and issuing a coherent request for the tag memory and the tag swap buffer,
A determination circuit for determining an index result of the tag memory and the tag swap buffer;
The determination circuit invalidates information in the tag swap buffer and re-registers in the tag memory when detecting that the area of the tag memory is an invalidation target and the same set address exists in the tag swap buffer. distributed shared memory multi-processor system and performs.
前記タグスワップバッファは、前記タグメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか1つのエリアをスワップしたアドレス及びステータス情報を保持することを特徴とする請求項1記載の分散共有メモリ型マルチプロセッサシステム。The tag memory and the tag swap buffer hold address and status information registered in the cache in the node,
2. The tag swap buffer, when newly registering in a state where the area of the tag memory is fully registered, holds the address and status information obtained by swapping any one area. Distributed shared memory multiprocessor system.
前記複数のノード各々を、ノード間アドレスバスと、前記複数のノード間のデータの処理と前記入出力装置からの要求の処理とを行うクロスバーとによって接続し、
前記キャッシュの情報を保持するタグメモリ及び前記タグメモリにおけるタグ掃き出し情報を保持するタグスワップバッファに、前記ノード内の前記キャッシュに登録されたアドレス及びステータス情報を保持し、
前記タグスワップバッファに、前記タグメモリのエリアがフルに登録されている状態で新規登録する際に、いずれか1つのエリアをスワップしたアドレス及びステータス情報を保持し、
前記タグメモリ及び前記タグスワップバッファの索引結果を判定する際に、前記タグメモリのエリアが無効化対象であり、同一セットアドレスが前記タグスワップバッファに存在することを検出した時に前記タグスワップバッファの情報を無効化しかつ前記タグメモリへの再登録を行うことを特徴とするタグ制御方法。A plurality of central processing units having a cache; a memory controller that processes a request from either the central processing unit or the input / output device; and a distributed shared memory that holds information of the cache. A tag control method for a distributed shared memory multiprocessor system including a plurality of nodes formed by bus connection between a device and the memory controller,
Each of the plurality of nodes is connected by an inter-node address bus and a crossbar that performs processing of data between the plurality of nodes and processing of a request from the input / output device,
The tag memory that holds the cache information and the tag swap buffer that holds the tag sweep information in the tag memory hold the address and status information registered in the cache in the node,
When newly registering the tag memory area with the tag memory area being fully registered in the tag swap buffer, the address and status information obtained by swapping any one of the areas are retained .
When determining the index result of the tag memory and the tag swap buffer, when it is detected that the area of the tag memory is an invalidation target and the same set address exists in the tag swap buffer, the tag swap buffer A tag control method characterized by invalidating information and performing re-registration in the tag memory .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002121558A JP3678715B2 (en) | 2002-04-24 | 2002-04-24 | Distributed shared memory multiprocessor system and tag control method used therefor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002121558A JP3678715B2 (en) | 2002-04-24 | 2002-04-24 | Distributed shared memory multiprocessor system and tag control method used therefor |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003316756A JP2003316756A (en) | 2003-11-07 |
JP3678715B2 true JP3678715B2 (en) | 2005-08-03 |
Family
ID=29537418
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002121558A Expired - Lifetime JP3678715B2 (en) | 2002-04-24 | 2002-04-24 | Distributed shared memory multiprocessor system and tag control method used therefor |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3678715B2 (en) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4967087B2 (en) * | 2007-11-01 | 2012-07-04 | エヌイーシーコンピュータテクノ株式会社 | Node controller, distributed shared memory type information processing apparatus, and cache coherency control method |
JP5019222B2 (en) * | 2007-11-13 | 2012-09-05 | エヌイーシーコンピュータテクノ株式会社 | Multiprocessor system |
US8223650B2 (en) * | 2008-04-02 | 2012-07-17 | Intel Corporation | Express virtual channels in a packet switched on-chip interconnection network |
US8015365B2 (en) * | 2008-05-30 | 2011-09-06 | Intel Corporation | Reducing back invalidation transactions from a snoop filter |
-
2002
- 2002-04-24 JP JP2002121558A patent/JP3678715B2/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003316756A (en) | 2003-11-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI443514B (en) | Apparatus,system and method for replacing cache lines in a cache memory | |
US9176876B2 (en) | Selective cache-to-cache lateral castouts | |
US8489819B2 (en) | Victim cache lateral castout targeting | |
US8117397B2 (en) | Victim cache line selection | |
JP4848771B2 (en) | Cache coherency control method, chipset, and multiprocessor system | |
US8347036B2 (en) | Empirically based dynamic control of transmission of victim cache lateral castouts | |
TWI393005B (en) | Data processing system, cache system and method for handling a flush operation in a data processing system having multiple coherency domains | |
US8225045B2 (en) | Lateral cache-to-cache cast-in | |
US6073211A (en) | Method and system for memory updates within a multiprocessor data processing system | |
US8949540B2 (en) | Lateral castout (LCO) of victim cache line in data-invalid state | |
US20100235576A1 (en) | Handling Castout Cache Lines In A Victim Cache | |
US20050188159A1 (en) | Computer system supporting both dirty-shared and non dirty-shared data processing entities | |
US8700863B2 (en) | Computer system having a cache memory and control method of the same | |
JP3661764B2 (en) | Method and system for providing an eviction protocol in a non-uniform memory access computer system | |
US11550720B2 (en) | Configurable cache coherency controller | |
US10579527B2 (en) | Remote node broadcast of requests in a multinode data processing system | |
JP2002197073A (en) | Cache coincidence controller | |
US20110082981A1 (en) | Multiprocessing circuit with cache circuits that allow writing to not previously loaded cache lines | |
JP3678715B2 (en) | Distributed shared memory multiprocessor system and tag control method used therefor | |
US7669013B2 (en) | Directory for multi-node coherent bus | |
JP2020003959A (en) | Information processing unit and arithmetic processing unit and control method of information processing unit | |
US10713169B2 (en) | Remote node broadcast of requests in a multinode data processing system | |
US10387310B2 (en) | Remote node broadcast of requests in a multinode data processing system | |
US10489292B2 (en) | Ownership tracking updates across multiple simultaneous operations | |
KR100344065B1 (en) | Shared memory multiprocessor system based on multi-level cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040519 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20050217 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050308 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050404 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050426 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050510 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 3678715 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090520 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100520 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110520 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110520 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120520 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120520 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130520 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140520 Year of fee payment: 9 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |