JP4507563B2 - マルチプロセッサシステム - Google Patents

マルチプロセッサシステム Download PDF

Info

Publication number
JP4507563B2
JP4507563B2 JP2003379294A JP2003379294A JP4507563B2 JP 4507563 B2 JP4507563 B2 JP 4507563B2 JP 2003379294 A JP2003379294 A JP 2003379294A JP 2003379294 A JP2003379294 A JP 2003379294A JP 4507563 B2 JP4507563 B2 JP 4507563B2
Authority
JP
Japan
Prior art keywords
bus
cache coherence
directory
cache
processors
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
Application number
JP2003379294A
Other languages
English (en)
Other versions
JP2005141606A (ja
Inventor
直伸 助川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2003379294A priority Critical patent/JP4507563B2/ja
Priority to US10/886,036 priority patent/US7159079B2/en
Publication of JP2005141606A publication Critical patent/JP2005141606A/ja
Application granted granted Critical
Publication of JP4507563B2 publication Critical patent/JP4507563B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Description

本発明は、複数のCPUを持ちCPU間で主記憶を共有する共有メモリ型並列計算機におけるCPU間のキャッシュメモリの一致制御、すなわちCPU間キャッシュコヒーレンス制御方式に属する。
デバイス技術の進歩により、CPUの動作周波数の向上は急峻であり、これに対しCPUから主記憶をアクセスする際のメモリアクセスレイテンシは、CPUから主記憶までの物理的な距離や主記憶素子の特性に制約されることから、絶対時間での改善は緩やかである。つまりCPUの単位動作時間(=1秒÷動作周波数)を単位として見た場合、アクセスレイテンシ時間はむしろ延びる方向にあり、アクセスレイテンシが性能向上のボトルネックとなる傾向にある。
この相対的なメモリアクセスレイテンシの悪化による性能低下を救う技術がキャッシュメモリである。キャッシュメモリは、高速小容量のバッファをCPUに近いところに用意し、使用頻度の高いデータのコピーを登録することで、実効的なメモリアクセスレイテンシを削減する技術である。
現代の計算機では、前述のキャッシュメモリを実装するCPUを複数個搭載し、CPU全部もしくは一部の間で主記憶を共有する共有メモリ型並列計算機の構成、もしくは共有メモリ型並列計算機のクラスタ構成を採用することが多い。CPUを複数搭載するのは、(1)性能向上、(2)可用性の向上(1つのCPUに障害が発生した場合にもシステムダウンを防ぐ)、を狙うことによる。計算機サービスに使用される「サーバ」と呼ばれる計算機では、最低でも2CPU以上の共有メモリ型並列計算機の構成が必須とされる。
このように、キャッシュメモリを持った複数のCPUが主記憶を共有する場合、キャッシュメモリの一致制御、いわゆるキャッシュコヒーレンス制御が問題になる。これはあるCPU(A)がキャッシュメモリに登録しているデータを別なCPU(B)がストア命令で更新した場合、その更新結果はCPU(A)のキャッシュメモリに反映される(キャッシュメモリ上のデータが更新される、もしくは無効化される)必要がある。
このようなキャッシュメモリ一致制御は、一般的にはバスを通じた制御で行われる。これは、あるプロセッサによるデータの更新はバスを通じて全CPUにブロードキャストされる仕組みと、各CPUがバスを常時チェックしブロードキャストされた更新情報をキャッシュメモリに登録されているデータに反映させる(スヌープ動作)仕組みとにより実現される。
上記バスによるキャッシュコヒーレンス制御は、バス上でキャッシュコヒーレンスリクエストが輻輳を起こし得ることから、CPU数の多い大規模な共有メモリ型マルチプロセッサ構成を全てバスで実現すると各CPUの性能が低下する問題がある。この問題に対し、メモリ上のデータそれぞれに、どのプロセッサがキャッシュメモリにデータを登録しているかを覚えるディレクトリを設け、ディレクトリに登録された情報に基づき必要なプロセッサにのみキャッシュコヒーレンスリクエストを伝達することにより、バスに比べて輻輳の発生頻度を低下させることが出来る。本方式がいわゆるNUMA(Non-Uniform Memory Architecture)型マルチプロセッサである。NUMA型マルチプロセッサについては、情報処理学会誌情報処理Vol.34 No.1(1993年1月)、96〜105頁「マルチプロセッサの記憶システム(1)」を参考にされたい。
NUMA型はCPU間バスのように全てのCPUからのリクエストが集中する箇所がないことから、CPUの増加に従い性能をスケーラブルに高めることが出来るメリットがある。他方、バス型のマルチプロセッサであればリクエストをバスに送出した直後にコヒーレンス制御が低レイテンシで実行されるのに対し、NUMAではリクエストが発生するとこれに対して他CPUに対するコヒーレンス制御を行うか行わないかの判定を行う回路を経て、更にそこからコヒーレンス制御要求が対象CPUに伝達されるという手順を踏むことから、一般にコヒーレンス制御の遅延時間が大きく、小規模システムではバス型マルチプロセッサに性能で劣るというデメリットがある。
特開平10−240707号公報では、バス型のマルチプロセッサを単位としてNUMAでこれらを結合したシステムを構築する技術を開示している。更に特開平10−240707では、NUMAシステムをパーティション分割した場合にNUMA制御を軽減できる技術を開示する。具体的には、主記憶をパーティション内でのみ使用する領域とパーティション間でも使用する領域とに分け、パーティション内で使用する領域へのアクセスに対してはパーティション内のバス型マルチプロセッサ群にのみブロードキャスト(マルチキャスト)することで、コヒーレンス制御オーバヘッドを低減する。例えば、このパーティションをバスでCPUが結合される範囲一つのみに設定した場合には、前記パーティション内のみで使用する領域に対するオペレーションはバスで高速に処理され、パーティション間でも使用する領域に対するオペレーションのみがNUMAで制御されることになり、スケーラビリティと高速性とを両立させることが出来る。
情報処理学会誌情報処理Vol.34 No.1(1993年1月)、96〜105頁「マルチプロセッサの記憶システム(1)」
特開平特開平10−240707号公報
実際のシステムでは、特開平10−240707で定義されるパーティションといったものは、例えばプログラム毎に変更する、もしくはプログラム実行途中で演算処理をマイグレーションさせるために変更するなど、動的に設定する要求が発生しうる。しかし、特開平10−240707はパーティションの動的変更に関する技術は開示していない。
本発明は、パーティションの動的は設定に対応した、バス型の高速性とNUMAのスケーラビリティとを両立するマルチプロセッサシステムの実現を目的とする。
各CPUを分割可能なバスによるバス接続とNUMAを実現するネットワーク接続との両方で接続する。バスが分割されずCPU間を結合される範囲は、バスによるコヒーレンス制御が実行される。バス接続が如何なる形態であっても、NUMAディレクトリには全CPUのアクセスを登録する。NUMAディレクトリの制御回路にバスの分割状態を記憶するグループ設定レジスタを設け、バスで接続されているCPU間のコヒーレンス制御については、別途バスにより実現されていることから、ディレクトリによるコヒーレンス制御リクエストを省略する制御を行う。バスが分割されているCPU間のコヒーレンス制御については、ディレクトリによるコヒーレンス制御をネットワークを通じて実行する。
ジョブの実行形態に合わせてバスの分割形態を変更する場合には、同時にグループ設定レジスタも変更する。これにより、新たにバスが分割されたCPU間ではそれまでバスで実現されていたコヒーレンス制御をディレクトリによるコヒーレンス制御に切り替え、新たにバスが結合されたCPU間ではそれまでディレクトリにより実現されていたコヒーレンス制御をバスによるコヒーレンス制御に切り替える。
本発明により、パーティションの動的は設定に対応しつつ、バス型の高速性とNUMAのスケーラビリティとを両立するマルチプロセッサシステムを実現できる。
以下、最初に本発明のマルチプロセッサシステムの動作の概要、次に本発明のマルチプロセッサシステムの動作の詳細として、
(1)バスを通したコヒーレンス制御
(2)NUMAネットワークを通したコヒーレンス制御
(3)バス結合の変更時の処理
を順に説明する。
[動作の概要]
本節では、図1を用いて、本発明のマルチプロセッサシステムの動作の概要を示す。なお、説明における初期設定として、バス分割結合回路500、510、520は、500と520とが結合状態、510は分割状態だとする。つまり、CPU100とCPU200とはバスで結合されており、またCPU300とCPU400ともバスで結合されているが、CPU100&200とCPU300&400の間は分離されているとする。
この状態では、例えばCPU100発のキャッシュコヒーレンス要求はCPU200には部分バス140→バス分割結合回路500→部分バス240を通じて伝達することが出来る。他方、バス分割結合回路510は分割状態であるから、CPU100発のキャッシュコヒーレンス要求はバスを通じてCPU300に伝達されることはない。
バスによるコヒーレンス制御とは別個に、ディレクトリによるコヒーレンス制御を実施する。CPU100からCPU300へのキャッシュコヒーレンス要求も、NUMAネットワーク1000を通じてであれば実施することができる。
以上のような仕組みを生かして、次のコヒーレンス制御を実施する。
(A)バスで結合されたCPU同士で、かつキャッシュコヒーレンス制御対象のデータのアドレスがバスで結合された範囲の部分主記憶に対するものである場合には、バスでのみキャッシュコヒーレンス制御を行う。
(B)(A)以外のケースについては、NUMAネットワークを使ってキャッシュコヒーレンス制御を行う。
以下実例を示す。例えば、CPU100発のキャッシュコヒーレンス制御で、対象アドレスが部分主記憶180に対するものであれば、まず部分バス140→バス分割結合回路500→部分バス240を通じてCPU200に対してキャッシュコヒーレンス要求が伝達される。
この要求に対して、部分主記憶180に対するアクセス情報をディレクトリ160に記憶するディレクトリ制御回路150は、ディレクトリ160に登録された情報から、もしキャッシュコヒーレンス制御がバスで結合されるCPU200に対してのみ必要と判定できれば、バスを通じてコヒーレンス制御が全て実行されていると判定し、NUMAネットワーク1000を通したキャッシュコヒーレンス制御を実行しない。ディレクトリ160に登録された情報から、もしキャッシュコヒーレンス制御がバスでは結合されないCPU300やCPU400に対しても必要と判定されれば、NUMAネットワークを通じてキャッシュコヒーレンス制御を実行する。なお、ディレクトリ制御回路150は、バスの分割結合状況をグループ設定レジスタ170に記憶している。また、ディレクトリ160には、バスで結合されていないCPU300、CPU400のアクセス情報だけでなく、バスで結合されるCPU200の情報も記憶している。部分主記憶280に対するアクセスに関しても、CPU100から見て部分主記憶280へはバスを通じてアクセスできることから、基本的には部分主記憶180(及びディレクトリ制御回路150)についてと同様の動作が部分主記憶280(及びディレクトリ制御回路250)について実行される。
上記の動作に対して、例えば、CPU100発のキャッシュコヒーレンス制御で、対象アドレスが部分主記憶380に対するものであれば、NUMA制御回路120は当該要求がバスで結合されていない部分主記憶380へのリクエストと判定し、コヒーレンス制御要求をNUMAネットワーク1000を通してディレクトリ制御回路350へ伝播する。ディレクトリ制御回路350はディレクトリ360に登録された情報に基づき、通常のNUMAによるキャッシュコヒーレンス制御を実施する。
キャッシュコヒーレンス制御動作の詳細は、別途動作詳細にて説明する。
以上であるバス分割設定の時の定常的なキャッシュコヒーレンス制御方法の概要を説明した。次に、バス分割設定を変更する場合の動作概要を説明する。ここでは、バス分割結合回路500が結合状態から分割状態に遷移した場合を説明する。
先に述べたとおり、ディレクトリ160には、元よりCPU200のアクセス情報も登録されていることから、ディレクトリ制御回路150はグループ設定レジスタ170さえ変更すれば、CPU200に対してもNUMAネットワークを通じたキャッシュコヒーレンス制御を実行できる。故に、バス分割設定を変更する場合、バス分割結合回路500の設定を変更するだけでなく、NUMA制御回路120、220、320、420中のバス設定レジスタ130、230、330、430、及びディレクトリ制御回路150、250、350、450中のグループ設定レジスタ170、270、370、470を同時に変更する。この変更後には、今までバスを通じて行われていた、CPU100発の部分主記憶180に関するコヒーレンス制御でCPU200にのみ対する要求は、ディレクトリ制御回路150からNUMAネットワーク1000を通じてCPU200に対して実施されるようになり、また、主記憶280に関するコヒーレンス制御は、バスを使用せずNUMA制御回路120よりNUMAネットワーク1000を通じてディレクトリ260ベースで実施されるようになる。
以上、バス設定が結合から分割に変更される場合の動作変更を説明したが、逆に分割から結合に変更される場合にも、基本的には上記と同様にバス分割結合回路500、510、520と同時にNUMA制御回路120、220、320、420中のバス設定レジスタ130、230、330、430、及びディレクトリ制御回路150、250、350、450中のグループ設定レジスタ170、270、370、470を変更することで、従来NUMAネットワーク1000を通じて実施されていたキャッシュコヒーレンス制御動作が結合した範囲ではバスによる動作に変更される。変更手順詳細は別途動作詳細にて説明する。
以上で、本発明システムの動作概要を説明した。次に、各構成要素の中身を含め、本発明システムの動作詳細を説明する。
[動作の詳細]
動作の詳細に入る前に、本発明で前提としているキャッシュコヒーレンスプロトコルを説明する。本発明では、各CPUのキャッシュコヒーレンス制御はMESIプロトコルに従うとする。MESIプロトコルでは、Cleanなデータ(=キャッシュメモリと主記憶との中身が一致しているデータ)は1CPU(Eステータス:Exclusive)もしくは複数CPU(Sステータス:Shared)が所有できるが、Modifiedデータ(=キャッシュメモリに更新された最新値があり主記憶には更新前の古い値が入っていることから中身が不一致を起こしているデータ)を所有できるのは1CPUのみ(Mステータス:Modified)というルールがある。故に、Sステータスの状態であるCPUがデータ更新を行うと、更新するCPU以外の各CPUへキャッシュ無効化要求が発生し、更新するCPUのみが更新後にMステータスでデータをキャッシュメモリに持つようになる。また、Mステータスにあるデータを他のCPUがアクセスした場合には、当該データはキャッシュメモリから主記憶に書き戻され、複数のCPUがCleanなデータをキャッシュメモリにSステータスで所有するようになる。
MESIプロトコルで最低限必要とされるトランザクション(=CPUから発生するデータ操作の要求)は、
・フェッチ要求(キャッシュへの新規登録)
・キャッシュ無効化要求(キャッシュデータの更新)
・キャストアウト要求(キャッシュからメモリへの書戻し)
の3つであり、本発明でも上記3つの要求がCPUから発生するとしている。
なお、図7中のIステータス2000はInvalidステータス(キャッシュ中のデータが無効である状態)、Eステータス2010は上記で説明したExclusiveステータス、Sステータス2030は上記で説明したSharedステータス、Mステータス2020は上記で説明したModifiedステータスである。load-miss(exclusive)とあるのは、フェッチ要求を出した結果キャッシュメモリにデータを登録したCPUが他に無いことが分かった場合、load-miss(not exclusive)とあるのは、フェッチ要求を出した結果キャッシュメモリにデータを登録したCPUが他にもあった場合、store-missはストア命令でキャッシュミスを起こしたために、一旦データをキャッシュメモリへのフェッチ要求を出し、フェッチ実行後にstoreを実行するためにキャッシュ無効化要求を出した場合を表す。
load-hit、store-hitはload命令、store命令を実行した時に結果としてキャッシュメモリがヒットした場合で、この場合もSステータスでstore-hitを起こした場合には、他CPUのキャッシュメモリを無効化するために、キャッシュ無効化要求を通達する必要がある。
snoop-loadとあるのは他CPUからフェッチ要求を受けた場合、snoop-storeとあるのは他CPUからキャッシュ無効化要求を受けた場合である。Mステータスでsnoop-loadを受けると、主記憶にデータを書き戻すためのキャストアウトを実行する必要がある。
上記キャッシュコヒーレンスプロトコルをベースとして、以下、最初の2節でバス分離結合設定を変更しない状態での定常的なキャッシュコヒーレンス動作をバス経由とネットワーク経由とに分けて説明し、最後の節でバス分離結合設定を変更する場合の動作について説明する。
(1)バスを通したコヒーレンス制御
バスを通したコヒーレンス制御は、動作概要で説明したとおり、バスで結合されたCPU同士で、かつキャッシュコヒーレンス制御対象のデータのアドレスがバスで結合された範囲の部分主記憶に対するものである場合に行う。以下、バスを通したフェッチ要求の処理、キャッシュ無効化要求の処理、キャストアウト要求の処理を順次説明する。
(1)−1:フェッチ要求
本節では、バス分離結合回路500、510、520がそれぞれ結合、分離、結合という設定だったということを前提に、CPU100からの部分主記憶180及び部分主記憶280へのフェッチ要求がCPU200との間でどう制御されるかを説明する。
CPU100はload命令やstore命令でキャッシュメモリ110がミスを起こすと、信号線L100を通じてフェッチ要求パケットを出力する。最初に、この時のアドレスは、部分主記憶180へのリクエストであったとする。
アドレスのマップについては図8に本実施例のアドレスマップを示す。各部分主記憶180、280、380、480は、その半分がローカルメモリとなっており、CPU100専用のローカル領域は部分主記憶180に、CPU200専用のローカル領域は部分主記憶280に、CPU300専用のローカル領域は部分主記憶380に、CPU400専用のローカル領域は部分主記憶480に確保される。なお、図8は各部分主記憶の容量を512メガバイトであるという前提で記載してある。図8の共有メモリ(A)4100と示されるのが部分主記憶180のローカルメモリを除いた半分、共有メモリ(B)4200と示されるのが部分主記憶280のローカルメモリを除いた半分、共有メモリ(C)4300と示されるのが部分主記憶380のローカルメモリを除いた半分、共有メモリ(D)4400と示されるのが部分主記憶480のローカルメモリを除いた半分である。故に、CPU100から見て、ローカルメモリ4000へのアクセスは部分主記憶180へのアクセス、共有メモリ(A)4100へのアクセスも部分」主記憶180へのアクセス、共有メモリ(B)4200へのアクセスが部分主記憶280へのアクセスとなる。
フェッチ要求パケットについて図9にそのフォーマットを示す。図9のうち先頭はコマンド5000であり、中身0000はフェッチ要求であることを示す。更に要求元プロセッサID5010に例えばCPU100によるキャッシュミスであれば0000、CPU200によるキャッシュミスであれば0001、CPU300によるキャッシュミスであれば0010、CPU400によるキャッシュミスであれば0011の値が入る。アドレス5020はフェッチをするアドレスである。
以上、説明に戻るが、アドレスに対してCPU100から信号線L100に対してフェッチ要求パケットを出力したとする。NUMA制御回路は中身を図2に示すが、フェッチ要求はリクエストルータ600に到達したところで、バス設定レジスタ130の設定値とのチェックにより行き先の決定が行われる。バス設定レジスタ130の中身(32ビットとした)を図3に示すが、バス設定レジスタでは、下位4ビットを用いて(図中ビット132、134、136、138)、先程のメモリマップ上に見える共有メモリ(A)4100〜共有メモリ(D)4400が、当該NUMA制御回路から見て、それぞれバスで接続されているのか、バスは分割設定でバスではアクセス不可能なのかを表す。共有メモリ(A)4100に対応するのが最下位ビット138、共有メモリ(B)4200に対応するのがビット136、共有メモリ(C)4300に対応するのがビット134、共有メモリ(D)4400に対応するのがビット132である。中身は1であればバスで結合されているし0であればバスは分割されていることを表す。以上の設定値がバス設定レジスタ130からルータへと信号線L670を通じて伝播していることから、ルータは今回のパケットは部分主記憶180へのリクエストであると判定し、そのリクエストを信号線L610、L110を通じて部分バス140に出力する。
先述の通り、バス分離結合回路500は結合状態となっているので、同フェッチ要求はバス分離結合回路500を経由して部分バス240にも通達される。これにより、まずNUMA制御回路220は同リクエストを信号線L210を通じてスヌープすると、図2中(これはNUMA制御回路120の中身を示しているが、内部構成はNUMA制御回路220と同一)のセレクタ610を通してCPU200およびそのキャッシュメモリ210にフェッチ要求を通達する。
ここでスヌープした結果がミス(つまりキャッシュメモリ210には当該データが登録されていない)、もしくはメモリクリーン(つまりメモリの値が最新であったことが保障されたので、メモリからのフェッチを許可する)であれば、この情報がCPU200より信号線L200を通じてリプライされ、その信号はNUMA制御回路220内のリクエストルータ600、信号線L210を通じて部分バス240に通達され、さらにこの信号はバス分離結合回路500、部分バス140、信号線L120を通じて、当該アクセス対象となっている部分主記憶180に接続されるディレクトリ制御回路150に通知される。
ディレクトリ制御回路150の内部を図4に示す。リクエストセレクタ700までは、元々フェッチ要求パケットが部分バス140に出た時点で部分主記憶180へのリクエストとして到達し、リクエストが保留されているが、このようにリクエストが保留されると同時に信号線L720を通じてディレクトリ160を検索する動作を行う。ディレクトリ160は、CPU100、200、300、400が主記憶をアクセスする単位(キャッシュブロックと一般に言う)毎に図5に示すようなエントリを用意するものであり(つまりディレクトリ160の中には図5に示されるようなエントリが多数入っている)、図5のビット162が1であることは当該ブロックがCPU100によりキャッシュメモリに登録された(ことが過去にあり、まだキャッシュメモリに残っている可能性があるということ。正確にはキャッシュメモリから既に消滅している可能性もあるが、ディレクトリではキャッシュメモリに登録されていることになる)ことを表し、同様にビット164はCPU200に、ビット166はCPU300に、ビット168はCPU400に対応する。
図5の例ではCPU100、200、300によりアクセスされていることになるが、本節の事例では、このパタンではなく、値が0100であったとする。つまり、他CPUについては、CPU200のみ当該データをキャッシュに取り込んでいる可能性があるとする。この信号が信号線L730を通じてリクエスト生成回路710に入るとリクエスト生成回路710は別途信号線780と通じて入るグループ設定レジスタ170の値と比較する。
グループ設定レジスタ170の中身を図6に示す。グループ設定レジスタ170は32ビットのレジスタで、上位4ビットにCPU100、200、300、400に対応したビット172、174、176、178を持つ。それぞれのCPUが当該ディレクトリ制御回路から見てバスで結合されている場合は1、バスが分離されている場合は0が登録されている。
リクエスト生成回路は710は、図6のような情報から、ディレクトリ160でチェックされたCPU200がバスで結合されていることを判定できる。この場合は信号線L740を通じてリクエストセレクタ700にCPU200からのリプライを待つよう通達する。なお、もしディレクトリの値が0110でCPU300も当該データをキャッシュに登録していることになっている場合には、同時にリクエスト生成回路710は信号線740、リクエストセレクタ700、信号線L710、L150を通じてNUMAネットワーク1000経由でのキャッシュコヒーレンス制御も行うことになるが、これについては(2)節で詳しく説明するので、本節では前述の通りディレクトリの値は0100であったとして説明を続ける。
先述の通り、当該キャッシュブロックはディレクトリ160によりCPU200のキャッシュに登録された可能性があったが、CPU200よりキャッシュミスもしくはメモリクリーンのリプライがリクエストセレクタ700まで到達することで、リクエストセレクタ800は当該フェッチ要求に対しては部分主記憶180をアクセスすべきであることが判定できることから、信号線L720を通じてディレクトリ160へのCPU100分の登録を通知するとともに(これにより当該ディレクトリエントリの値は0100から1100に変更される)、信号線L750、L130を通じて部分主記憶180へフェッチリクエストを出力する。部分主記憶180はこれに対して図11に示されるフェッチリプライパケットを返答する。フェッチリプライパケットは、パケットのコマンド5200が値0010で、要求元プロセッサID5210(=リプライ送付先プロセッサID)を持ち、これとフェッチしたデータ本体5220(キャッシュブロック分のサイズを持つ)とから成る。
このフェッチリプライパケットは、信号線L130から図4中の信号線L810、リプライルータ720、信号線L790、L120、部分バス140に出力され、更に信号線L110から図2中信号線L630を通じてセレクタ610に渡り、ここから信号線L680、L100を経由してキャッシュメモリ110及びCPU100へとリプライデータが戻る。
以上は、CPU200の返答がミスもしくはメモリクリーンであり、主記憶からデータを読むケースであったが、これがCPU200が図7中のMステータス2020であり(つまり最新のデータはCPU200のキャッシュメモリ210に存在する)、CPU200のキャッシュメモリ210に登録されているデータをCPU100が読み出す必要があるケースを次に説明する。
この場合はミスもしくはメモリクリーンのステータスではなく、
CPU200からはキャストアウトパケットが出力される。キャストアウトパケットを図10に示す。コマンド5100は0001であり、その他に要求元プロセッサID5110(=書き込み元プロセッサIDであり今回の場合で言えばCPU200)、書き戻すべきアドレス5120、キャッシュブロック分のデータ5130から成る。
キャストアウトパケットはミスもしくはメモリクリーンのステータスと同様にディレクトリ制御回路150のリクエストセレクタ700に到達すると、信号線L750、L130を通じて部分主記憶180にデータを書き戻す。リクエストセレクタ700は、この書き戻し動作を待ち、後は前述ミスもしくはメモリクリーンのステータスの時と同様に部分主記憶180からデータを読み出す。(この際にディレクトリ160の当該エントリを0100から1100に変更することも前述の通りである)
なお、本節では部分主記憶180に対するアクセスについて説明したが、同様にバスで結合される部分主記憶280へのアクセスの場合も、ディレクトリ制御回路150の代わりにディレクトリ制御回路250が主体となるだけで、その動作は基本的に同一となる。
(1)−2:キャッシュ無効化要求
本節では、CPU100が既にキャッシュメモリ110に登録しているデータ(他のCPUとの共有があり、キャッシュステータスは図7のSステータス2030である)に対してストアを実行する場合、他のCPUのキャッシュメモリをキャンセルする必要が発生する。本節では、この動作について説明する。なお、本節ではキャッシュ登録データの共有はCPU100とCPU200とで行われているとし、対象となるデータは部分主記憶180中に存在するものとする。つまり、ディレクトリ160の、当該データに対するエントリの値(図5相当)は1100であるとする。
前節同様にしてキャッシュ無効化要求パケットがまずCPU100から信号線L100を通して出力される。キャッシュ無効化要求パケットを図12に示す。コマンド5300は0011、要求元プロセッサID5310は今回の場合はCPU100を示し、要求先プロセッサID5320は、CPU100から出力された時はNull(ここでは2進数でオール1とする)となる。要求先プロセッサID5310はNUMAネットワークを通じたコヒーレンス制御の際に意味のある値が入るフィールドであり、本節ではNullのままである。キャッシュ無効化要求パケットは更に無効化するアドレス5330を持つ。
キャッシュ無効化要求パケットは、前節のフェッチ要求パケット同様にCPU100からCPU200及びディレクトリ制御回路150に伝達されるが、処理内容は次の3点が異なる。一つ目の違いは、CPU200に伝達された結果はキャッシュのミスやメモリクリーンステータスの代わりに、キャッシュ無効化成功のステータスが返されること。二つ目の違いは、ディレクトリ制御回路は、ステータスが帰っても部分主記憶180へのアクセスを行わず、単にディレクトリ160の値の再設定を行うのみであること(本例では、1100から1000に変更)。三つ目の違いはCPU100へはフェッチデータが返る代わりにキャッシュ無効化完了のステータスが返ること。
なお、前節同様、部分主記憶180のデータに対するキャッシュ無効化も、同様にバスで結合される部分主記憶280のデータに対するキャッシュ無効化も、ディレクトリ制御回路150の代わりにディレクトリ制御回路250が主体となるだけで、その動作は基本的に同一となる。
(1)−3:キャストアウト要求
Mステータス2020で登録していた情報を、他の新しいデータをキャッシュメモリ110に登録するために主記憶に書き戻す必要が発生した場合の動作を説明する(ここでは前節までと同様に部分主記憶180に対する書き戻し要求であるとする)。なお、Mステータス2020でデータを所有しているということは、同一キャッシュブロックを登録している可能性のあるCPUは他に無いことを表しているので、ディレクトリ160の当該エントリの値は1000となる。
キャストアウトの場合も、最初にCPU100がキャストアウト要求パケットを信号線L100を通して出力する。キャストアウト要求パケットについては、(1)−1で図10を用いて説明した通りのフォーマットであり、今回のパタンでは要求元プロセッサIDにはCPU100が入る。
キャストアウトは基本的には主記憶に対してデータを書き戻すだけのアクションであり、CPU間でのコヒーレンス制御は不要なので、キャストアウト要求パケットはフェッチ要求パケット同様にディレクトリ制御回路150に到達した後は、他のCPUのコヒーレンス制御を待つことなく、速やかに部分主記憶180への書き戻しを行う。具体的には図4のリクエストセレクタ700でコヒーレンス操作の完了を待つことなく、信号線L750、L130を通じて速やかに部分主記憶180へ書き戻す。
なお、本アクションにおけるディレクトリ160の操作だが、キャストアウトが実行される場合は基本的には当該CPU100のキャッシュメモリ110からは当該キャッシュデータブロックは消滅するので、ディレクトリ160のエントリの値は1000から0000に変更しても良い。但し、特別の命令を使用することで、キャッシュメモリ110から消滅させずにキャストアウトが実行できるような場合には、ディレクトリ160のエントリの値は1000のままとする必要がある。本実施例では後者を前提とし、ディレクトリ160は変更しないとする。
前節同様、部分主記憶180のデータに対するキャストアウトも、同様にバスで結合される部分主記憶280のデータに対するキャストアウトも、ディレクトリ制御回路150の代わりにディレクトリ制御回路250が主体となるだけで、その動作は基本的に同一となる。
なお、本節ではCPU100が自分自身の都合でキャストアウトする場合を説明したが、他CPUからのフェッチ要求を受けてキャストアウトする場合の動作については、バスで結合された範囲については(1)−1で説明した通りである。バスが分離された範囲については次節で説明する。
(2)NUMAネットワークを通したコヒーレンス制御
前述の通り、バスで結合されたCPU同士でない場合、もしくはバスで結合されたCPU同士でも、キャッシュコヒーレンス制御対象のデータのアドレスがバスで結合された範囲の部分主記憶に対するものでない場合は、NUMAネットワーク1000を通したキャッシュコヒーレンス制御となる。
本節では、NUMAネットワーク1000を通したコヒーレンス制御について、バスを通した制御との差分を中心に説明する。
(2)−1:フェッチ要求
ここでは、まずバスで結合されていない部分主記憶に対してNUMAネットワークを経由してフェッチ要求を発行する場合を説明する。この動作はNUMA制御回路120、220、320、420にて、フェッチ要求リクエストのアドレスとバス設定レジスタ130、230、330、430の値との関係で、バスが結合されていないことをNUMA制御回路内のリクエストルータ600で判定した場合、従来バスに信号線L610、L110を経由して出力していたフェッチ要求パケットを信号線L620、L140を経由してNUMAネットワーク1000へ出力する。NUMAネットワークはパケットの要求先アドレス5020を用いて行き先を例えば部分主記憶380と判定するとその部分主記憶に対応するディレクトリ制御回路350へとパケットを伝達する。 ディレクトリ制御回路内のリクエストセレクタ700に伝達された先は、基本的にディレクトリ160の情報を用いてコヒーレンス制御を行う基本概念は(1)−1節と同一だが、フェッチ要求パケットはバス経由で入ってきたのではないことから、ディレクトリを検索した結果、全てのコヒーレンス制御パケットをディレクトリ生成回路710で生成し、リプライルータ720、信号線L820、L150を経由して、コヒーレンス制御パケットもまたNUMAネットワーク1000を用いて対象プロセッサに分配しなければならない。分配したパケットはNUMA制御回路120、220、320、420に入り、セレクタ610を経由して各CPU100、200、300、400に通達される。この結果例えばMステータスのデータを持ったCPUが存在し、キャッシュメモリ上のデータを部分主記憶に書き戻す必要が出た場合にも、NUMA制御回路120、220、320、420を経由してNUMAネットワーク1000を通って書き戻す。
要は、バスで結合されていない部分主記憶に対してNUMAネットワークを経由してフェッチ要求を発行する場合については、前節でバスを経由して実行していた動作全てが、基本的にNUMAネットワーク1000を経由して実行されることになる。
NUMAネットワークを経由するフェッチ要求については、バスで結合される部分主記憶180、280、380、480に対するフェッチ要求だったが、ディレクトリ160、260、360、460を検索した結果、バスで結合されないCPU100、200、300、400もキャッシュメモリ110、210、310、410に登録しているケースがある。この場合には、(1)−1節でディレクトリ制御回路150内で、ディレクトリ160を検索した結果、CPU200のキャッシュメモリへの登録が分かり、リクエストセレクタ700に、バス結合されたCPU200についてのキャッシュコヒーレンス制御解消を待ってフェッチ要求パケットを保留していた部分の動作に次の変更が加わる。すなわち、ディレクトリ160を検索した結果、バスで結合されないCPU,例えばCPU300がキャッシュメモリに登録していることが判明した時点で、リクエスト生成回路710よりフェッチ要求パケットを生成し、リプライルータ720、信号線820、L150、NUMAネットワーク1000を経由して、NUMA制御回路320経由でCPU300に伝達し、このCPU300からのリプライが再びNUMA制御回路320及びNUMAネットワーク1000を経由してディレクトリ制御回路150に返答されるまでリクエストセレクタ700にリクエストを保持することになる。本リクエストの結果、CPU300からキャストアウト要求が発生した場合にも、同様にNUMA制御回路320とNUMAネットワーク1000を経由して、ディレクトリ制御回路にそのキャストアウト要求が伝播し、これを部分主記憶180に書き戻してからフェッチ動作をディレクトリ制御回路150が実行することになる。
ディレクトリ160、260、360、460への設定内容については、(1)節と同様に、新たにフェッチを行ったCPUを新たにディレクトリに登録することになる。
(2)−2:キャッシュ無効化要求
NUMAネットワーク1000経由のキャッシュ無効化要求には、(2)−1と同様に、バスで結合されていない部分主記憶のデータに対するキャッシュ無効化要求の場合と、バスで結合されている部分主記憶のデータに対するキャッシュ無効化要求がバスで結合されていないCPUに対して発生するケースとがある。それぞれ基本的には(2)−1と同様であるが、但しフェッチリプライの代わりに、図13で示されるキャッシュ無効化完了パケットが返答されてくることになる。
本動作を行った場合にも(1)−2同様に、当該ディレクトリエントリの値は、キャッシュ無効化要求を行った1CPU以外は全て0に戻される。
(2)−3:キャストアウト要求
NUMAネットワーク1000経由のキャストアウトは、バスが分離されてる部分主記憶180、280、380、480への書き戻しの際に発生するが、これもCPU100、200、300、400から書き戻し要求がNUMA制御回路120、220、320、420に伝達されると、バス設定レジスタ130、230、330、430の値に応じてリクエストルータ600によりNUMAネットワーク1000への出力が選択され、このキャストアウト要求パケットはNUMAネットワーク1000からディレクトリ制御回路150、250、350、450を経由して部分主記憶180、280、380、480に書き戻される。本実施例ではキャストアウトによる書き戻しの際にディレクトリの設定値を変更しないとしたが((1)−3参照)、NUMAネットワーク1000経由のキャストアウトでもこれは同じである。
(3)バス結合の変更時の処理
(1)(2)の動作により、ディレクトリ制御回路150、250、350、450内のディレクトリ160、260、360、460には、バス分離・結合に関わらず、当該データブロックをキャッシュメモリに登録してうる全てのCPUが登録されている。これにより、バス結合の状態が変更されても、変更後のバスの結合・分離に従ってディレクトリ160、260、360、460に従ったキャッシュコヒーレンス制御(バスで接続されるCPUの組についてはバスでの制御期待でNUMAネットワーク経由の制御なし)が実現できる。
本節では、バス接続形態を変更する際の動作を図1を用いて更に説明する。例えばCPU100がバスの接続形態を変更したい場合には、まず信号線L10を通してサービスプロセッサ10に要求を通達する。サービスプロセッサは要求CPU100以外のCPU200、300、400を信号線L30、L50、L70を通じてストップさせ、これが完了するとバス分離結合回路500、510、520の設定値を変えるとともに、その変更の完了をCPU100に通知する。
CPU100は、アドレス空間上に図8の通りマップされるバス設定レジスタ(A)〜(D)、グループ設定レジスタ(A)〜(D)(実体は、バス設定レジスタ130、230、330、430およびグループ設定レジスタ170、270、370、470をバス接続形態に応じた値に変更する。
なお、各レジスタへのアクセスは、(バスの接続形態がどう変化するか設定値により変わりうるために)設定値によらず、全てNUMAネットワーク1000を経由して実行される。例えばCPU100がバス設定レジスタ230を更新する場合には、NUMA制御回路120にて当該リクエストはNUMAネットワーク経由と判定され、NUMAネットワーク経由でNUMA制御回路220中のバス設定レジスタ230を設定することになる。
以上の通り、バス分割結合回路500、510、520はサービスプロセッサ10が、バス設定レジスタ130、230、330、430及びグループ設定レジスタ170、270、370、470はCPU100、200、300、400自身が変更することにより、バスの分離結合形態に関する全ての設定が変更できる。変更後にサービスプロセッサ10を経由して全てのCPU100、200、300、400の動作を再開すると、以降変更後のバスの形態に従い、正しいキャッシュコヒーレンス制御が実行されることになる。
実施例1では、NUMA制御用に専用のNUMAネットワーク1000が存在することを前提としたが、以下にのべる実施例2では、NUMAネットワーク1000の代わりに、NUMAプロトコル用のパケットもバスを経由して実行される。
図14に実施例2のシステム構成を示す。図1に示される実施例1との違いは3点ある。
第1点目は、バス分割結合回路500、510、520をバスフィルター回路505、515、525に置き換えたことである。バスフィルター回路505、515、525は、NUMA制御用以外のパケットに対してはバス分割結合回路500、510、520と同様に機能する(つまりサービスプロセッサ10による設定により、パケットを通したり通さなくなったりする)が、NUMA制御用パケットに対しては、常にこれを通す機能を持つ。
第2点目は、実施例1では例えばフェッチ要求パケットはバス結合のCPUの間でもNUMAネットワークでの結合のCPUの間でも、同じコマンド(0000)を使用していたが、これだとバスフィルター回路505、515、525がNUMA制御用とそれ以外との分類が出来なくなることを考慮し、最上位1ビットを1とするように変更する。つまり、バス間のフェッチリクエストではコマンドは0000だが、NUMA接続のプロセッサの間でのフェッチ要求パケットはコマンドを1000とすることになる。なお、本変更はNUMA制御回路120内のリクエストルータ600、及びディレクトリ制御回路150内のリクエスト生成回路710を変更することで実現する。
第3点目は、実施例1ではNUMAネットワーク1000に対してNUMA制御パケットをやり取りしていたNUMA制御回路120、220、320、420及びNUMAディレクトリ制御回路150、250、350、450のNUMAネットワーク1000への入出力の口を全て部分バス140、240、340、440に対する口と統合することである。
なお、構成上の上記3点の変更とは別だが、実施例1でNUMA制御パケットがNUMAネットワーク1000により1対1で実行されていたことに対し、実施例2の構成では、パケットの伝達という観点だけで見れば、部分バス140、240、340、440の全てにNUMA制御パケットがブロードキャストされてしまうことがある。但し、実際にはアドレスやプロセッサIDにより各パケットは1対1で機能することから、実質的なパケットの処理については実施例1と差異はない。
NUMA制御パケットがブロードキャスト伝達されてしまうことで、バスの上での輻輳が増加する危険があるが、ジョブの実行形態(例えば、あるユーザJOBをCPU100とCPU200とで並列実行する)に即したパーティションの設定(前述の例であればCPU100とCPU200とを同一のパーティションに設定する、つまり部分バス140と部分バス240との間は完全結合し、全てのリクエストを通す。但し部分バス240と部分バス340とはフィルターをかけ、NUMA制御パケットのみを通す設定とする)をすることで、実質的にNUMA制御パケットの発生頻度は著しく低減されるので、NUMA制御パケットのブロードキャストによる性能低下は問題にならない。
上記の通り、NUMAネットワーク1000で制御していたパケットを部分バス140、240、340、440で伝達することにより、CPU間のネットワーク接続無しに本発明の特徴である性能のスケーラビリティを確保しながら、パーティション設定にも自由度があるマルチプロセッサが実現することになる。
本発明の実施例1の並列計算機の全体構成を表すブロック図である。 上記実施例のNUMA制御回路を表すブロック図である。 上記実施例のバス設定レジスタを表す図である。 上記実施例のディレクトリ制御回路を表すブロック図である。 上記実施例のディレクトリのエントリを表す図である。 上記実施例のグループ設定レジスタを表す図である。 上記実施例のキャッシュメモリの状態遷移を表す図である。 上記実施例の並列計算機のアドレスマップを表す図である。 上記実施例のフェッチ要求パケットを表す図である。 上記実施例のキャストアウト要求パケットを表す図である。 上記実施例本発明のフェッチリプライパケットを表す図である。 上記実施例本発明のキャッシュ無効化要求パケットを表す図である。 上記実施例本発明のキャッシュ無効化報告パケットを表す図である。 本発明の実施例2の並列計算機の全体構成を表ブロック図である。
符号の説明
200、300、400…CPU
210、310、410…キャッシュメモリ
220、320、420…NUMA制御回路
230、330、430…バス設定レジスタ
140、240、340、440…部分バス
250、350、450…ディレクトリ制御回路
260、360、460…ディレクトリ
270、370、470…グループ設定レジスタ
280、380、480…部分主記憶
132、134、136、138…バス設定ビット
162、164、166、168…ディレクトリビット
172、174、176、178…グループ設定ビット
500、510、520…バス分割結合回路
505、515、525…バスフィルター回路
5000、5100、5200、5300、5400…コマンド
L10〜L800…信号線。

Claims (8)

  1. それぞれキャッシュメモリを備えた複数のプロセッサと、該複数のプロセッサに共有の主記憶とを有するマルチプロセッサシステムであって、
    キャッシュコヒーレンス要求をバス経由で各プロセッサにブロードキャストすることでキャッシュコヒーレンス制御を実現する手段と、
    前記バスでのブロードキャストの範囲をシステム全体ではなくシステムの一部になるように該バスを分割設定する手段とを有し、
    前記主記憶に対応して該主記憶の各データブロック毎にそのデータブロックをキャッシュメモリに登録したプロセッサのIDを記録するディレクトリを有し、
    前記ディレクトリに記録されたIDの情報を用いて各プロセッサの間でキャッシュコヒーレンス制御を行う手段を有し、
    前記バスで結合されるプロセッサ間は前記バスを介したキャッシュコヒーレンス要求の伝達によるキャッシュコヒーレンス制御を行い、
    該バスの分割設定により互いに分断されたプロセッサ間では前記ディレクトリを用いたキャッシュコヒーレンス制御を行うことを特徴とするマルチプロセッサシステム。
  2. 前記ディレクトリには前記バスの分割設定により分断されたプロセッサのID情報とともに、バスで結合されているプロセッサのID情報も記録されることを特徴とする請求項1に記載のマルチプロセッサシステム。
  3. 前記バスで結合されているプロセッサのID情報について、該ID情報に従ったキャッシュコヒーレンス要求の生成は行わないにもかかわらず、該ID情報については該バスを介したキャッシュコヒーレンス要求の伝達によるキャッシュコヒーレンス制御が実施されたと見なし、前記ディレクトリに記録された該ID情報を変更することを特徴とする請求項2に記載のマルチプロセッサシステム。
  4. 前記バスの分割設定が動作途中で変更になったことにより該バスで元々結合されていたプロセッサ同士の結合が分断された場合に、該バスを介したキャッシュコヒーレンス要求の伝達によるキャッシュコヒーレンス制御から前記ディレクトリに記録されていたプロセッサID情報を使用したキャッシュコヒーレンス制御に切り替えることを特徴とする請求項3に記載のマルチプロセッサシステム。
  5. それぞれキャッシュメモリを備えた複数のプロセッサと、該複数のプロセッサに共有であってかつ該複数のプロセッサの各々もしくはプロセッサ群の各々に対応してそれぞれ設けられた複数の部分主記憶で構成される主記憶とを有するマルチプロセッサシステムであって、
    キャッシュコヒーレンス要求をバス経由で各プロセッサにブロードキャストすることでキャッシュコヒーレンス制御を実現する手段と、
    前記バスでのブロードキャストの範囲をシステム全体ではなくシステムの一部になるように該バスを分割設定する手段とを有し、
    前記部分主記憶の各々に対応して設けれら、各部分主記憶のデータブロック毎にそのデータブロックをキャッシュメモリに登録したプロセッサのIDを記録するディレクトリを有し、
    前記ディレクトリに記録されたIDの情報を用いて各プロセッサの間でキャッシュコヒーレンス制御を行う手段を有し、
    分割設定された前記バスで相互に結合されたプロセッサに対応する範囲の部分主記憶に含まれるデータに対するキャッシュコヒーレンス制御で、かつ該相互に結合されたプロセッサ間のキャッシュコヒーレンス制御の場合に、前記バスを用いたキャッシュコヒーレンス制御を行い、
    前記バスの分割設定で分断されたプロセッサ間、もしくは前記バスで結合されたプロセッサ間であってもキャッシュコヒーレンス制御対象のデータが前記結合されたプロセッサに対応する範囲の部分主記憶ではなく、該範囲から外れる部分主記憶に含まれる場合には該ディレクトリを用いたキャッシュコヒーレンス制御を行うことを特徴とするマルチプロセッサシステム。
  6. 前記ディレクトリには前記バスの分割設定により分断されたプロセッサのID情報とともに、該バスで結合されているプロセッサのID情報も記録することを特徴とする請求項5に記載のマルチプロセッサシステム。
  7. 前記バスを介したキャッシュコヒーレンス要求の伝達によるキャッシュコヒーレンス制御を行う場合についても、前記ID情報については該バスによるキャッシュコヒーレンス制御が実施されたと見なし、前記ディレクトリに記録された該ID情報を変更することを特徴とする請求項6に記載のマルチプロセッサシステム。
  8. 前記バスの分割設定が動作途中で変更になったことにより該バスで元々結合されていたプロセッサ同士のバスが分割された場合に、該バスを介したキャッシュコヒーレンス要求の伝達によるキャッシュコヒーレンス制御から前記ディレクトリに記録されていたプロセッサID情報を使用したキャッシュコヒーレンス制御に切り替えることを特徴とする請求項6に記載のマルチプロセッサシステム。
JP2003379294A 2003-11-10 2003-11-10 マルチプロセッサシステム Expired - Fee Related JP4507563B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2003379294A JP4507563B2 (ja) 2003-11-10 2003-11-10 マルチプロセッサシステム
US10/886,036 US7159079B2 (en) 2003-11-10 2004-07-08 Multiprocessor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003379294A JP4507563B2 (ja) 2003-11-10 2003-11-10 マルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2005141606A JP2005141606A (ja) 2005-06-02
JP4507563B2 true JP4507563B2 (ja) 2010-07-21

Family

ID=34544517

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003379294A Expired - Fee Related JP4507563B2 (ja) 2003-11-10 2003-11-10 マルチプロセッサシステム

Country Status (2)

Country Link
US (1) US7159079B2 (ja)
JP (1) JP4507563B2 (ja)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7437618B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method in a processor for dynamically during runtime allocating memory for in-memory hardware tracing
US7418629B2 (en) * 2005-02-11 2008-08-26 International Business Machines Corporation Synchronizing triggering of multiple hardware trace facilities using an existing system bus
US7437617B2 (en) * 2005-02-11 2008-10-14 International Business Machines Corporation Method, apparatus, and computer program product in a processor for concurrently sharing a memory controller among a tracing process and non-tracing processes using a programmable variable number of shared memory write buffers
JP4945200B2 (ja) * 2006-08-29 2012-06-06 株式会社日立製作所 計算機システム及びプロセッサの制御方法
US8140817B2 (en) * 2009-02-24 2012-03-20 International Business Machines Corporation Dynamic logical partition management for NUMA machines and clusters
JP5568939B2 (ja) * 2009-10-08 2014-08-13 富士通株式会社 演算処理装置及び制御方法
WO2011111215A1 (ja) 2010-03-11 2011-09-15 富士通株式会社 ソフトウェア制御装置、ソフトウェア制御方法、およびソフトウェア制御プログラム
JP5623259B2 (ja) 2010-12-08 2014-11-12 ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. 半導体装置
US9478502B2 (en) * 2012-07-26 2016-10-25 Micron Technology, Inc. Device identification assignment and total device number detection
US9237093B2 (en) * 2013-03-14 2016-01-12 Silicon Graphics International Corp. Bandwidth on-demand adaptive routing
CN105453056B (zh) * 2013-09-19 2019-05-17 英特尔公司 用于在多高速缓存环境中管理高速缓冲存储器的方法和装置
US10721185B2 (en) 2016-12-06 2020-07-21 Hewlett Packard Enterprise Development Lp Age-based arbitration circuit
US10452573B2 (en) 2016-12-06 2019-10-22 Hewlett Packard Enterprise Development Lp Scripted arbitration circuit
US10237198B2 (en) 2016-12-06 2019-03-19 Hewlett Packard Enterprise Development Lp Shared-credit arbitration circuit
US10944694B2 (en) 2016-12-06 2021-03-09 Hewlett Packard Enterprise Development Lp Predictive arbitration circuit
US10693811B2 (en) 2018-09-28 2020-06-23 Hewlett Packard Enterprise Development Lp Age class based arbitration
CN119248528B (zh) * 2022-12-27 2025-10-03 华为技术有限公司 Cc-numa服务器、锁请求的处理方法及相关装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05108578A (ja) * 1991-10-19 1993-04-30 Fuji Xerox Co Ltd 情報処理システム
JPH0816474A (ja) * 1994-06-29 1996-01-19 Hitachi Ltd マルチプロセッサシステム
JP3872118B2 (ja) * 1995-03-20 2007-01-24 富士通株式会社 キャッシュコヒーレンス装置
US5673413A (en) * 1995-12-15 1997-09-30 International Business Machines Corporation Method and apparatus for coherency reporting in a multiprocessing system
JPH09198309A (ja) * 1996-01-17 1997-07-31 Canon Inc 情報処理システム及びシステム制御方法及び情報処理装置
JP3849951B2 (ja) 1997-02-27 2006-11-22 株式会社日立製作所 主記憶共有型マルチプロセッサ
US6269428B1 (en) * 1999-02-26 2001-07-31 International Business Machines Corporation Method and system for avoiding livelocks due to colliding invalidating transactions within a non-uniform memory access system
FR2820850B1 (fr) * 2001-02-15 2003-05-09 Bull Sa Controleur de coherence pour ensemble multiprocesseur, module et ensemble multiprocesseur a architecture multimodule integrant un tel controleur

Also Published As

Publication number Publication date
US7159079B2 (en) 2007-01-02
US20050102477A1 (en) 2005-05-12
JP2005141606A (ja) 2005-06-02

Similar Documents

Publication Publication Date Title
JP3722415B2 (ja) 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム
JP3661761B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)データ処理システム
JP4507563B2 (ja) マルチプロセッサシステム
US7363462B2 (en) Performing virtual to global address translation in processing subsystem
JP3644587B2 (ja) 共用介入サポートを有する不均等メモリ・アクセス(numa)・データ処理システム
US7765381B2 (en) Multi-node system in which home memory subsystem stores global to local address translation information for replicating nodes
US7577794B2 (en) Low latency coherency protocol for a multi-chip multiprocessor system
JP4848771B2 (ja) キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
KR100465583B1 (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법
US20040093455A1 (en) System and method for providing forward progress and avoiding starvation and livelock in a multiprocessor computer system
US20030149844A1 (en) Block data mover adapted to contain faults in a partitioned multiprocessor system
US6266743B1 (en) Method and system for providing an eviction protocol within a non-uniform memory access system
US6279085B1 (en) Method and system for avoiding livelocks due to colliding writebacks within a non-uniform memory access system
JP2000010860A (ja) キャッシュメモリ制御回路及びプロセッサ及びプロセッサシステム及び並列プロセッサシステム
CN103294612A (zh) 一种在多级缓存一致性域系统局部域构造Share-F状态的方法
CN104615576A (zh) 面向cpu+gpu处理器的混合粒度一致性维护方法
WO2014146424A1 (zh) 一种基于有限数据一致性状态的服务器节点数据缓存方法
EP1611513B1 (en) Multi-node system in which global address generated by processing subsystem includes global to local translation information
US8332592B2 (en) Graphics processor with snoop filter
WO2010038301A1 (ja) メモリアクセス方法及び情報処理装置
JP2001282764A (ja) マルチプロセッサシステム
JP3626609B2 (ja) マルチプロセッサシステム
US20110138101A1 (en) Maintaining data coherence by using data domains
JPH09311820A (ja) マルチプロセッサシステム
JP6631317B2 (ja) 演算処理装置、情報処理装置および情報処理装置の制御方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060424

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061006

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100203

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100216

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100315

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: 20100413

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: 20100426

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130514

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees