JP2007183702A - キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム - Google Patents

キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム Download PDF

Info

Publication number
JP2007183702A
JP2007183702A JP2006000028A JP2006000028A JP2007183702A JP 2007183702 A JP2007183702 A JP 2007183702A JP 2006000028 A JP2006000028 A JP 2006000028A JP 2006000028 A JP2006000028 A JP 2006000028A JP 2007183702 A JP2007183702 A JP 2007183702A
Authority
JP
Japan
Prior art keywords
cache
node
processor
snoop
copy tag
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.)
Granted
Application number
JP2006000028A
Other languages
English (en)
Other versions
JP4848771B2 (ja
Inventor
Keitaro Uehara
敬太郎 上原
Jun Okitsu
潤 沖津
Shiyouki Murakami
祥基 村上
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 JP2006000028A priority Critical patent/JP4848771B2/ja
Priority to US11/513,378 priority patent/US7613885B2/en
Publication of JP2007183702A publication Critical patent/JP2007183702A/ja
Application granted granted Critical
Publication of JP4848771B2 publication Critical patent/JP4848771B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • G06F12/0822Copy directories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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)

Abstract

【課題】マルチプロセッサシステムにおいて、ブロードキャストスヌープ方式ではスヌープ結果の集計がボトルネックとなり、ディレクトリ方式では他ノードにキャッシュされているケースでレイテンシが遅くなる。
【解決手段】スヌープとキャッシュコピータグの情報を使ってメモリアクセスレイテンシの短縮を図る。自ノードのキャッシュコピータグの情報を使って可能な場合にはスヌープ結果の集計処理を省略することでメモリアクセスレイテンシの短縮を図る。また、キャッシュリプレース時のキャッシュコピータグの更新にメモリの位置情報を利用することで、自ノードから再アクセスされた場合にコピータグにヒットする確率を上げる。
【選択図】 図1

Description

本発明は、マルチプロセッサシステム、およびチップセット、およびキャッシュ一貫性制御方法に関係し、キャッシュコピータグを利用したメモリアクセスレイテンシの短縮技術に関する。
近年の計算機機能の向上とそれに伴い計算機に求められる要求の増大に伴い、特にサーバの分野では複数のプロセッサを搭載したマルチプロセッサシステムが多く見られるようになってきた。同一のメモリユニットやプロセッサバスに全てのCPUが結合されていると、メモリインタフェースやプロセッサバスがボトルネックとなり性能が向上しないという問題点がある。そこで4CPUを超えるような中〜大規模なマルチプロセッサシステムを構成する場合、2〜4程度のCPUを搭載したノードを複数並べることで負荷がノード間で分散するようにして性能向上を図ることが多い。この時各CPUから全てのメモリユニットが等距離になるように配置する構成をUMA(Uniform Memory Access)と呼ぶ。一方、各ノードにメモリユニットを搭載したような構成では、ノード内のメモリをアクセスするのにかかる時間と他ノードのメモリにアクセスするのにかかる時間に差が出ることが多い。このような構成をNUMA(Non-Uniform Memory Access)と呼び、特にハードウェアにより各プロセッサのキャッシュ一貫性制御が行われる場合をccNUMA(Cache Coherent Non-Uniform Memory Access)と呼ぶ。UMAについては非特許文献1の61ページに詳しい。ccNUMAについては非特許文献2に詳しい。従来ccNUMAはUMAに比べ、ローカルメモリとリモートメモリのアクセスの差が大きいために、性能を出すのが難しいと言われてきた。しかし近年ではキャッシュ容量の向上(メモリアクセスの減少)、高速なシステム結合網の開発などにより、ローカルとリモートのアクセス時間の差は縮まり、またOSやアプリケーションでもccNUMAを意識してよく使うデータをローカルメモリへと配置する、などの工夫がなされることによりccNUMAでも性能が出し易くなってきた。
一方複数ノードから構成されるマルチプロセッサシステムでは、プロセッサ間のキャッシュ一貫性制御が大きな課題となる。キャッシュ一貫性制御方式として代表的な方式としてはブロードキャストスヌープ方式とディレクトリ方式がある。ブロードキャストスヌープ方式は、通常はバスを介して行われるスヌープをブロードキャストによって擬似的に行う方式である。要求元のノードから全てのノードに対してスヌープ要求がブロードキャストされ、キャッシュを持っているかどうかを応答する。どのノードもキャッシュしていない場合でも必ずスヌープ要求がブロードキャストされるため、無駄なトラフィックが生じる可能性がある。もし最新データのキャッシュを持っていた場合には直接要求元のノードへと応答される。一方、ディレクトリ方式は、要求されたアドレスのホームノードにあるディレクトリでどのノードがキャッシュしているかどうかを管理し、ディレクトリの情報に従ってスヌープを行う方式である。ディレクトリ方式の場合、キャッシュしているノードがいない場合にはスヌープを送らないため効率的である。しかし一方、他のノードがキャッシュしていた場合、要求元ノード→ホームノード→キャッシュしているノード、の順にスヌープ要求が渡るため、応答が返るまでのレイテンシが伸びるという問題点がある。まとめると、ブロードキャストスヌープ方式は、スヌープ要求が常にブロードキャストされるためトラフィックで無駄が出る可能性があるが、他ノードがキャッシュを持っていた場合の応答は速い。一方、ディレクトリ方式は、スヌープ要求を適切なノードにしか送らないためトラフィックの効率は良いが、他ノードがキャッシュを持っていたい場合の応答が遅れるという問題点がある。
ブロードキャストスヌープ方式では、キャッシュコピータグを利用してスヌープフィルタを行う改良方式が考えられる。たとえば特許文献1で示されている。キャッシュコピータグとは、そのノードのプロセッサキャッシュが保持している全てのラインのアドレスタグとキャッシュ状態のみを管理している(ディレクトリの場合は、そのノードだけでなく、全てのノードの全てのプロセッサでキャッシュされている可能性のあるアドレス全てを保持する必要がある)。プロセッサからの要求に従って新たなデータをメモリから取って来た場合、必ず要求元ノードのキャッシュコピータグへと登録した上でプロセッサにデータを応答する。他ノードからブロードキャストされたスヌープ要求を受けたノードでは、まずキャッシュコピータグを検索し、該当するラインが登録されているかどうかを見る。もし検索して見つからない場合や、あるいはキャッシュ状態が無効(I)である場合には、当該ラインはプロセッサによってキャッシュされていないことになるので、プロセッサバスにスヌープ要求を上げる必要なく応答することができる。もし検索して当該ラインが見つかり、スヌープを上げる必要のあるキャッシュ状態だった場合には、プロセッサバスへとスヌープ要求を上げ、キャッシュの無効化が終わってからスヌープ応答を返す。キャッシュコピータグを利用することで、プロセッサバスに対するトラフィックの削減とスヌープ応答にかかる時間の短縮の2つの効果を得ることができる。
特開平10−222423号公報
Unisys Technology Review,第84号,FEB.2005、55〜69頁、「ES7000によるミッション・クリティカルLinuxの実現」 インターネット、hppt://phase.phase/o2k/technical_doc_library/、「Origin ccNUMAサーバ 真のスケーラビリティ」
ccNUMA構成のSMP機において、ブロードキャストスヌープ方式を採用した場合にメモリアクセスにかかる時間(レイテンシ)を考える。一般的にメモリの読み出しにはスヌープ処理よりも大きな時間がかかる。また、ccNUMA構成ではリモートノードに対する処理は、ローカルノードに対する処理よりも時間がかかる。すなわち、メモリアクセスに必要な処理の時間を短い順に並べると次の2つの順のどちらかとなる場合が多い:
(1) ローカルスヌープ<ローカルメモリデータ<リモートスヌープ<リモートメモリデータ
(2) ローカルスヌープ<リモートスヌープ<ローカルメモリデータ<リモートメモリデータ
ローカルメモリデータとリモートスヌープのどちらが速いかは、ノード間接続やメモリのつくりによって変わってくる。
上記の2つのケースにおいて、ブロードキャストスヌープ方式でメモリアクセスする場合を考える。ここでは他ノードでキャッシュされていないと仮定する。すると、メモリノードが他ノードの場合には、(1)(2)どちらのケースでもリモートメモリデータがボトルネックとなる。一方、メモリノードが自ノード場合には、(1)ではリモートスヌープがボトルネックとなり、(2)ではローカルメモリデータがボトルネックとなる。(2)のケースは結局ローカルメモリデータがボトルネックとなっているため、これ以上速くはできない。仮にディレクトリ方式を採用していたとしてもやはり同じだけの時間がかかる。しかし(1)のケースでは、ローカルメモリデータが既に返っているにも関わらず、リモートスヌープが返ってきていないために待たされる、という時間が発生している。このケースでは、仮にディレクトリ方式を採用していた場合には、データがメモリから返った時点でプロセッサに返せるため、明らかにディレクトリ方式に比べて余計に時間がかかってしまっている。
本発明の目的は、ディレクトリ方式のように最悪ケース(他ノードでキャッシュされているケース)のメモリアクセスレイテンシを悪化させることなく、自ノードメモリアクセス時のレイテンシを改善することにある。
ブロードキャストスヌープ方式では、キャッシュコピータグを他ノードからブロードキャストされたスヌープ要求に対してのみ使っていた。本発明の方式では、自ノードからブロードキャストされたスヌープ要求が順序付けされた時点で、自ノードのキャッシュコピータグを検索する。もし当該ラインが自ノードのキャッシュコピータグに登録されており、かつ(1)キャッシュ状態が占有(E)であるまたは(2)キャッシュ状態が共有(S)でありかつリード要求である、場合には、スヌープ応答結果集計部に対して先行応答通知を発行する。先行応答通知を受けたスヌープ応答結果集計部は、他ノードからのスヌープ応答を待つことなくスヌープ処理を完了できる。すなわち、自ノードのメモリデータが返ってきた時点で、他ノードからのスヌープ応答が返る前にプロセッサに対してデータを返すことができる。
さらにローカルメモリ上のデータ読み出しの際に、自ノードのキャッシュコピータグのヒット率を高めるために、自ノードでキャッシュからラインがリプレースされた場合に、キャッシュコピータグを更新する処理に変更を加える。リプレースされたラインのメモリが他ノードだった場合には、リプレースされた結果をキャッシュコピータグに反映する。すなわち当該ラインのキャッシュ状態を無効(I)とする。もしリプレースされたラインのメモリが自ノードだった場合には、リプレースされたラインを更新しない。このようにすることで、自ノードのキャッシュからリプレースされたラインに対して、他ノードからアクセスされる前に再び自ノードのプロセッサがアクセスした場合に、キャッシュコピータグへとヒットし、メモリアクセスレイテンシを短縮できる効果がある。
あるいはキャッシュコピータグに、リプレースフラグを新たに設け、キャッシュがリプレースされた際にはリプレースフラグをセットする。リプレースフラグのセットされたラインは、他ノードからのスヌープ要求に対しては無効(I)として振舞う。すなわち、プロセッサバスに対して余計なスヌープを上げる必要はない。一方、自ノードにおけるスヌープ要求に対しては元のキャッシュ状態として振舞う。このようにすることで、自ノードのキャッシュからリプレースされたラインに対して再び自ノードのプロセッサがアクセスした場合に、キャッシュコピータグへとヒットし、メモリアクセスレイテンシを短縮できる効果がある。
本発明により、自ノードキャッシュコピータグにヒットした場合、他ノードのスヌープ応答を待たずにデータを応答することが可能になる。各ノードにメモリが分散したccNUMAのシステムでは、ローカルメモリとリモートメモリのアクセス時間に差があることが多く、特に本発明は、ローカルメモリ上のデータ読み出しの際に効果が大きい。またローカルメモリのヒット率を高めるための方法を併用することで、さらにキャッシュコピータグのヒット率を上げることも可能となる。
図11に本発明の方式とブロードキャストスヌープ方式、ディレクトリ方式を比較した表を示す。自ノードメモリのデータに対して自ノードコピータグにヒットした場合、ディレクトリ方式と比べるとブロードキャストスヌープ方式ではスヌープ応答を待つ必要があるため遅くなる。本発明ではその場合ディレクトリ方式と同等のレイテンシでデータを返せる。一方、他ノードメモリで他ノードにキャッシュされていた場合、ディレクトリ方式では要求元ノード→ホームノード→キャッシュノード→要求元ノードの順に渡る必要があるため、レイテンシが悪化する。本発明ではその場合でもブロードキャストスヌープ方式と同等のレイテンシで済む。このように本発明はレイテンシの面においてブロードキャストスヌープ方式とディレクトリ方式の両方の利点を兼ね備えている(ただし、常にスヌープをブロードキャストする分トラフィックはディレクトリ方式に比べて増加する)。
本発明の効果を定量的に示す。仮に自ノードのスヌープ処理に100ns、自ノードのメモリデータ応答に130ns、他ノードのスヌープ処理に160ns、他ノードのメモリデータ応答に190nsかかるシステムがあったとする。本発明を採用しない場合の自ノードメモリアクセスレイテンシは160nsであり、一方、本発明を採用した場合、自ノードメモリアクセスレイテンシはヒット時に130nsとなる。ヒット時には自ノードメモリアクセスレイテンシで30ns、すなわち20%弱の性能改善効果が得られることになる。
〔概要〕
図1は本発明の実施例1であるキャッシュ一貫性制御機能を備えたノードコントローラによって構成されたマルチプロセッサシステムを示す概略図である。
1つ以上のノードコントーラ200、メモリユニット300が、システム結合網400を介して相互接続されている。ここでメモリユニット300はノードコントローラ200と同一のノードやシステムボード上にあっても良い。すなわち、ノードコントローラ200aとメモリユニット300aがあるノードを構成し、ノードコントローラ200bとメモリユニット300bが別のあるノードを構成する。なお、本図には明示的に図示していないが、メモリユニット300はメモリコントローラと主記憶とから構成される。また、本図には図示していないI/Oユニットがやはりノードコントローラ200あるいはシステム結合網400を介して接続されており、その先には複数のI/Oデバイスが接続されている。
ノードコントローラ200はプロセッサバス120を介して1つ以上のプロセッサ100が接続される。プロセッサ100はキャッシュ110を備える。また、ここではプロセッサとしたが、それぞれのプロセッサは1つのプロセッサ内に2つ以上のプロセッサコアを含むマルチコア構成であっても良い。以下の説明はプロセッサをプロセッサコアと読み替えても差異を生じない。
ノードコントローラ200内には、プロセッサバス120から発行されたトランザクションを受け付けるトランザクション発行部220と、システム結合網400から入ってきたトランザクションを受け付けるトランザクション受信部230と、キャッシュコピータグ210を管理するキャッシュコピータグ管理部215と、スヌープ結果を集計しデータ応答を制御するデータ応答制御部240、および設定用スイッチ250を持つ。
トランザクション発行部220が受け付けるトランザクションとしては、キャッシュミス要求500、キャッシュリプレース要求510、ライトバック要求515などがある。キャッシュミス要求500には図7に示すように、リードとリードインバリデートの2種類がある(実際にはもっとたくさんの種類が考えられるが、ここでは2種類だけ考える)。キャッシュリプレース要求510には図8に示すように、ライトバックとクリーンリプレースの2種類がある。この内クリーンリプレースに関してはプロセッサの設定によっては発行されないこともある。
図2はキャッシュコピータグ210の構成を示す。キャッシュコピータグ210の各エントリはキャッシュ状態211とアドレスタグ212から構成される。キャッシュコピータグ210の構成はアドレスのインデックスを1つのエントリに直接マップするダイレクトマップから、任意の空きエントリを使用できるフルアソシアティブまで様々な構成が考えられる。ここでは例として4ウェイセットアソシアティブの例を示す。プロセッサバス120にトランザクション505が発行されると、トランザクション505は図6に示すように対象のアドレス700を持つ。アドレス700は図4に示すようにアドレスタグ701、インデックス702、オフセット703に分解される。4ウェイセットアソシアティブのキャッシュコピータグの場合、図3に示すように、1つのインデックスに対して4つのエントリが対応する。インデックス702に該当する4つのエントリの内、アドレスタグ701と一致するアドレスタグ212を持つエントリがあれば、対象のアドレスはキャッシュコピータグにヒットしたことになる。この時対応するキャッシュ状態211が、該当するアドレスのキャッシュ状態となる。
キャッシュコピータグ210のキャッシュ状態211は図5に示す3種類の状態のいずれかに分類される。I(無効)は該当アドレスが当該ノードではキャッシュされていないことを示す。S(共有)は該当アドレスが当該ノードでクリーンな共有状態でキャッシュされていることを示す。E(占有)は該当アドレスが当該ノードでのみ占有されており、書き換えられている可能性があることを示す。なお一般的なMESIプロトコルではI、S、Eに加えてMという状態を持つが、キャッシュコピータグの場合はE状態のキャッシュをプロセッサが書き換えたかどうかはノードコントローラには通知されないため、キャッシュの状態EとMの両方がキャッシュコピータグのキャッシュ状態Eへと対応する。
プロセッサ100からプロセッサバス120にキャッシュミス要求500が発行された場合、あるいはノードコントローラ200からプロセッサバス120に対してスヌープ要求520を上げた場合、プロセッサバス120上に接続されたプロセッサ100はスヌープ応答530を返す。また、ノードコントローラ200中のトランザクション発行部220が他のノードコントローラ200に対してスヌープ要求をブロードキャストした場合、各ノードコントローラは、要求元のノードコントローラに対してスヌープ結果630を返す。スヌープ応答530およびスヌープ結果630は図9に示す3種類が定義される。OKはキャッシュを持っていない(あるいは持っていても捨てた)ことを示す。HITはキャッシュを共有状態(S)で保持していることを示す。HITMは書き換えた最新のキャッシュを持っていることを示す。スヌープ応答530がHITMの場合は、スヌープ応答530に続いてライトバック要求515が発行される。
図10にトランザクション発行部220が発行する、あるいはトランザクション受信部230が発行または受信するシステムトランザクションの一部を示す。スヌープ要求は要求元のノードコントローラ200から全ノードコントローラ200へとブロードキャストされる。スヌープ結果はブロードキャストされた全ノードコントローラ200から、要求元のノードコントローラ200へと返される。メモリリート要求は要求元のノードコントローラ200からアドレスが対応するノードのメモリユニット300に向かって発行される。メモリライト要求はキャッシュリプレース通知があった場合やスヌープの結果がHITMだった場合に、ノードコントローラ200からアドレスが対応するノードのメモリユニット300に向かって発行される。データ応答は、メモリリード要求の結果としてメモリユニット300から、あるいはスヌープ後のキャッシュ間転送の結果としてノードコントローラ200から、要求元のノードコントローラ200に対して返される。
〔キャッシュミス要求発生時の動作〕
図1を主に参照して実施例1のキャッシュミス要求発生時の動作を説明する。
まず要求元ノードの動作を説明する。プロセッサ100a0がキャッシュ110a0にないラインに対してアクセスするとキャッシュミス要求500がプロセッサバス120aを介して発行される。トランザクション発行部220はキャッシュミス要求500を受け、発行元識別子720等をトランザクション登録通知550としてデータ応答制御部240に通知する。トランザクション発行部220はトランザクションに含まれるアドレス700から宛先メモリのノードを特定し、そのノードのメモリユニット300を対象にメモリリード要求をトランザクション発行パス560aを介して発行する。
一方、キャッシュミス要求500に対するスヌープ応答530がトランザクション受信部230へと通知される。スヌープの結果プロセッサ100a1が最新のデータを持っていた場合、キャッシュ間転送によってプロセッサバス120a上でキャッシュミス要求は完了する。キャッシュ間転送が起こらなかった場合、トランザクション発行部220はスヌープ要求を全ノードのノードコントローラ200に向けて発行する。
トランザクション発行部220は続いてキャッシュコピータグ管理部215に対して自ノードキャッシュコピータグの探索を要求する。キャッシュコピータグ管理部215では、該当するアドレスがキャッシュコピータグ210に登録されているかどうかを検索する。該当アドレスが登録されておりかつキャッシュ状態211がE(占有)だった場合、キャッシュコピータグ管理部215は先行応答通知620をデータ応答制御部240へと通知する。キャッシュ状態211がS(共有)であり、かつキャッシュミス要求500がリードだった場合、やはりキャッシュコピータグ管理部215は先行応答通知620をデータ応答制御部240へと通知する。キャッシュコピータグ210に登録されていない場合、新たなエントリを確保し、キャッシュ状態をI(無効)に初期化しておく。
ここで、ブロードキャストされたスヌープ要求を受け取ったノードの動作を説明する。
トランザクション受信パス570を通じてスヌープ要求を受け取ったトランザクション受信部230では、キャッシュコピータグ管理部215に対してキャッシュコピータグ210の探索を要求する。キャッシュコピータグ管理部215では、スヌープ要求の該当するアドレスがキャッシュコピータグ210に登録されていない場合、あるいは登録されていて、キャッシュ状態211がI(無効)の場合、あるいは登録されていて、キャッシュ状態211がS(共有)でかつスヌープ要求がリードだった場合、ヒットしなかったと応答する。キャッシュ状態211がE(占有)の場合、あるいはキャッシュ状態211がS(共有)でかつスヌープ要求がリードインバリデートだった場合、ヒットしたと応答する。
トランザクション受信部230では、キャッシュコピータグ探索の結果ヒットしなった場合、スヌープ結果630を要求元ノードに対して発行する。この時、登録されていないかキャッシュ状態がI(無効)だった場合にはOK、キャッシュ状態がS(共有)でかつスヌープ要求がリードだった場合はHITと応答する。
トランザクション受信部230では、キャッシュコピータグ探索の結果ヒットした場合、スヌープ要求520をプロセッサバス120に対して発行し、スヌープ応答530を受け取る。スヌープ応答530がHITMだった場合、キャッシュ間転送によって最新データを要求元ノードへと返す必要がある。ライトバック要求515によって受け取った最新データをトランザクション発行部220はデータ応答として要求元ノードに向けて発行する。キャッシュコピータグ210のキャッシュ状態211をI(無効)へと更新する。また、トランザクション受信部230はスヌープ結果630としてHITMを要求元ノードに向けて発行する。
スヌープ応答530がHITMではなかった場合、スヌープ応答530をそのままスヌープ結果630として要求元ノードに向けて発行する。キャッシュコピータグ210のキャッシュ状態211は、スヌープ応答530がHITだった場合にはS(共有)に、そうでない場合はI(無効)に変更する。
以上のスヌープ要求を受け取ったノードの動作をフローチャートにまとめたのが図22および図23である。これらに沿って再度説明する。
図22は他ノードスヌープ処理の基本フローである。他ノードスヌープ処理はトランザクション受信パス570を介してトランザクション受信部230がスヌープ要求を受け取ることで開始され、まずステップ1400では他ノードコピータグ探索する。ステップ14000の詳細は本実施例では24図のステップ1500からステップ1580までであるが、その詳細な説明はここでは省略する。続くステップ1410では、他ノードコピータグ検索の結果、ヒットしたかどうかを判定する。ヒットした場合はステップ1420へ進む。ヒットしなかった場合はステップ1450へと進む。ステップ1420では、スヌープ要求520をプロセッサバス120へと発行する。スヌープ要求発行後、スヌープ応答530を受け取り、ステップ1430へと進む。ステップ1430では、スヌープ応答530の結果がHITMかどうかを判定する。スヌープ応答530がHITM、すなわち最新データがキャッシュにあった場合には、ステップ1440を経てステップ1445へと進む。HITMでない場合は直接ステップ1445へと進む。ステップ1440は、キャッシュ間転送によって最新データを応答するステップである。スヌープの結果発生したライトバック要求515を受け取り、要求元ノードに対してキャッシュ間転送データとして発行する。ステップ1445は他ノードコピータグを更新するステップである。その詳細は図23を参照して後述する。
ステップ1450はスヌープ結果を応答するステップである。キャッシュ間転送が起きた場合にはHITM、スヌープ応答の結果HITだった場合や、キャッシュ状態をSに変更した場合にはHIT、スヌープ応答の結果OKだった場合や他ノードコピータグにヒットしなかった場合にはOKと応答する。これでスヌープ処理は完了する。
図23は他ノードコピータグ更新1445の詳細ステップを示す。まずステップ1460ではスヌープ結果がHITMかどうかを判定する。HITMだった場合はステップ1480へ進み、そうでない場合はステップ1465へ進む。ステップ1465ではスヌープ結果がHITかどうかを判定する。HITだった場合はステップ1470へ進む。そうでない場合はステップ1480へ進む。ステップ1470ではコピータグのキャッシュ状態をS(共有)へと変更する。一方、ステップ1480では、コピータグのキャッシュ状態をI(無効)へと変更する。これによって他ノードコピータグ更新1445は完了する。
続いて、メモリユニット300の動作を説明する。メモリ要求パス580を介してメモリリード要求を受け取ったメモリユニット300は、アドレスの対応するメモリの内容を読み出し、メモリ応答バス590を介して要求元ノードに向けてデータ応答を発行する。一方、メモリ要求パス580を介してメモリライト要求を受け取ったメモリユニット300は、メモリライト要求に付随するデータをアドレスの対応するメモリへと書き込む。メモリライトの完了時にACKを要求元ノードに返すこともできる。以上がメモリユニット300の動作である。
続いて、再び要求元ノードの動作を説明する。トランザクション受信部230には、ブロードキャストしたスヌープ要求に対するスヌープ結果630、メモリユニットに対して発行したメモリリード要求に対するデータ応答、キャッシュ間転送が起こった場合にはキャッシュ間転送のデータ応答、などが到着する。トランザクション受信部230では、発行したスヌープ要求に対する全てのスヌープ結果630が集まった時点で、スヌープ集計結果600をデータ応答制御部240へと通知する。スヌープ集計結果600は次のようにして決定される。スヌープ結果630のうち、1つでもHITMがあればスヌープ集計結果600もHITMとする。そうでなくて、スヌープ結果630のうち、1つでもHITがある場合、あるいは自ノードのスヌープ応答530がHITだった場合は、スヌープ集計結果600もHITとする。そうでない場合はスヌープ集計結果600をOKとする。
メモリまたはキャッシュ間転送によるデータ応答を受け取ったトランザクション受信部230はデータ応答610をデータ応答制御部240へと通知する。データ応答制御部240は、スヌープ集計結果600または先行応答通知620と、データ応答610が揃うまで待つ。ただしスヌープ集計結果600がHITMだった場合には、メモリからのデータ応答ではなくキャッシュ間転送のデータ応答を待つ。スヌープ集計結果600または先行応答通知620と、データ応答610が揃った次点で、データ応答制御部240はデータ応答540をプロセッサバス120a経由で要求元プロセッサ100a0に返す。
最後にキャッシュコピータグ管理部215では、対応するアドレスのキャッシュコピータグ210のキャッシュ状態211を更新する。キャッシュミス要求がリードインバリデートの場合や、スヌープ集計結果600がHITMやOKの場合には、キャッシュ状態をE(占有)に更新する。キャッシュミス要求がリードでかつスヌープ集計結果600がHITの場合にはキャッシュ状態をS(共有)に更新する。
以上でキャッシュミス要求時の動作が完了する。
以上に示した実施例1のキャッシュミス要求時の動作をフローチャートにまとめたのが図15である。図16は図15のステップ1100の詳細フローを示す。また図17は図15のステップ1090の詳細フローを示す。これらフローチャートに沿って、実施例1のキャッシュミス要求時の動作を再度説明する。
図15のキャッシュミス要求時の一連の動作は、プロセッサバス120を介してプロセッサ100a0からキャッシュミス要求500が到着したことによってスタートする。ステップ1000では、ノードコントローラ200のトランザクション発行部220は、キャッシュミス要求500のアドレスに従って適切なノードのメモリユニット300に対してメモリリードを発行する。続くステップ1010では、自ノードのプロセッサバス120上で他のプロセッサ100のスヌープ応答530を受け、判定する。もしスヌープ応答530がHITM、すなわち自ノードでキャッシュ間転送が起こった場合は、ステップ1020へと進む。一方、HITM以外だった場合にはステップ1030へと進む。ステップ1020では、自ノードでキャッシュ間転送が起こった場合の処理が行われる。すなわち、プロセッサバス120を介してデータが要求元プロセッサへ100a0へと返される。この場合キャッシュミス要求は完了となる。一方、ステップ1030では全ノードへスヌープ要求をブロードキャストする。すなわち、トランザクション発行パス560を介して全ノードへとスヌープ要求がブロードキャストされる。次にステップ1100にて自ノードのコピータグを検索する。このステップ1100の詳細は図16に示すとおりであり、後に詳述する。続くステップ1110では自ノードコピータグ検索1100の結果、自ノードタグヒットしたかどうかを判定する。自ノードタグヒットした場合にはステップ1060へ進む。自ノードタグヒットしなかった場合にはステップ1040へ進む。
ステップ1040は全ノードにブロードキャストしたスヌープ要求に対するスヌープ結果630が全て返ってくるまで待つステップである。トランザクション受信部230はトランザクション受信パス570を介してスヌープ結果を受け取り、全てのスヌープ結果が集まったらスヌープ集計結果600をデータ応答制御部240へと通知する。
続くステップ1050では、スヌープ集計結果600を受けてHITMかどうかを判定する。スヌープ結果のうちどれか一つでもHITM、すなわち最新のデータを持っているノードがいれば、最新データはメモリ上にはない。この場合はステップ1070へと進む。どのスヌープ結果もHITMでない場合は、最新のデータはメモリ上にある。この場合はステップ1060へと進む。
ステップ1060はメモリからデータが返るのを待つステップである。データ応答制御部240はメモリデータ応答610を受けて、ステップ1080へと進む。一方、ステップ1070はキャッシュ間転送データが返るのを待つステップである。データ応答制御部は、キャッシュ間転送データを受けて、ステップ1080へと進む。
ステップ1080ではデータ応答540を要求元のプロセッサ100a0へと返す。続くステップ1090では、自ノードコピータグ更新を行う。詳細は図17に示すとおりであり、後に詳述する。以上でキャッシュミス要求は完了する。
図16は自ノードコピータグ検索ステップ1100の詳細フローを示す。まずステップ1120では自ノードのコピータグを検索する。続くステップ1130では要求キャッシュラインがコピータグ中にあるかどうかを判定する。要求キャッシュラインがコピータグ中になかった場合はステップ1160へ進む。コピータグ中にあった場合はステップ1140へと進む。
ステップ1160ではエントリを確保し、キャッシュ状態をI(無効)に初期化する。もし該当するインデックスのエントリが全て使用中だった場合には任意の一つを選んでキャッシュを無効化するためのスヌープ要求520をプロセッサバス120に対して発行する必要があるが、ここでは詳細な記述は省略する。これが完了すると、ステップ1170へ進む。
一方、ステップ1140ではコピータグ中のキャッシュ状態がE(占有)かどうかを判定する。E(占有)だった場合にはステップ1180へ進む。そうでない場合はステップ1150へ進む。ステップ1150では、コピータグ中のキャッシュ状態がS(共有)でかつ要求がリード要求であるかどうかを判定する。S(共有)でありかつリード要求だった場合はステップ1180へ進む。そうでない場合、すなわちキャッシュ状態がI(無効)であるか、あるいは要求がリードインバリデート要求だった場合はステップ1170へ進む。
ステップ1170では、自ノードコピータグにヒットしなかった、と応答する。これにより自ノードコピータグ検索は完了する。
一方、ステップ1180は、自ノードコピータグにヒットした、と応答するステップである。これにより自ノードコピータグ検索は完了する。
続いて、自ノードコピータグ更新1090の詳細を図17を参照して説明する。まずステップ1200では、キャッシュミス要求がリードかどうかを判定する。リードだった場合にはステップ1210へ進む。リードでない、すなわちリードインバリデートだった場合はステップ1240へ進む。
ステップ1210では、スヌープ集計結果がHITMかどうかを判定する。スヌープ結果のうち一つでもHITMがあった場合にはステップ1240へ進む。HITMでない場合にはステップ1220へ進む。ステップ1220ではスヌープ集計結果がHITかどうかを判定する。スヌープ結果のうち一つでもHITがあった場合や、自ノードのスヌープ応答がHITだった場合にはステップ1250へ進む。そうでない場合はステップ1240へ進む。
ステップ1240はキャッシュ状態をE(占有)に更新するステップである。これが完了するとステップ1260へ進む。一方、ステップ1250はキャッシュ状態をS(共有)に更新するステップであり、これが完了するとステップ1260へ進む。ステップ1260では、もしキャッシュコピータグのエントリにリプレースフラグがある場合に、これをクリアする。リプレースフラグがない場合には何もしない。以上で自ノードコピータグ更新は完了する。
〔キャッシュリプレース処理の動作〕
次に実施例1のキャッシュリプレース処理の動作を説明する。
プロセッサ100a0のキャッシュ110a0にラインが入りきらなくなった場合、古いラインが追い出される。これがキャッシュリプレースである。キャッシュリプレースはプロセッサバス120aを介してノードコントローラ200aのトランザクション発行部220にキャッシュリプレース通知510として通知される。キャッシュリプレース通知510には図8に示す2種類の通知がある。このうち、ライトバックだった場合、ライトバックに伴う最新のデータが続けてプロセッサバス120aから発行される。トランザクション発行部220は、キャッシュコピータグ管理部215にキャッシュリプレースの通知を行う。キャッシュコピータグ管理部215では、キャッシュコピータグ210中の該当するエントリのキャッシュ状態をI(無効)へと更新する。キャッシュリプレース通知がライトバックだった場合、トランザクション発行部220は、アドレスに対応するノードを特定し、そのノードのメモリユニット300を対象としたメモリライト要求を発行する。以上でキャッシュリプレース処理が完了する。
以上に示したキャッシュリプレース処理の典型的な例をフローチャートにまとめたのが図18である。このフローチャートに沿うキャッシュリプレース処理を再度説明する。
図18のキャッシュリプレース処理は、プロセッサバス120を介してプロセッサ100a0からキャッシュリプレース通知510が到着したことによって開始される。まずステップ1300では、キャッシュコピータグ210を検索し、対応するエントリ(必ず存在するはず)のキャッシュ状態をI(無効)に更新する。続くステップ1310では、キャッシュリプレースの結果、データが更新されていた場合にメモリへとデータを書き戻す。データが更新されていた場合は、トランザクション発行パス560を介してライトバックトランザクションがキャッシュラインのアドレスに該当するノードのメモリユニット300に向かって発行される。これによってキャッシュリプレースは完了する。以上の一連の動作によって、自ノードコピータグヒット時にレイテンシを短縮するブロードキャストスヌープ方式が実現する。

〔実施例1の変形例1〕
変形例1のキャッシュミス要求時の動作は実施例1と同じである。一方、変形例1ではキャッシュリプレース処理の動作が上記の実施例1とやや異なる。すなわち、キャッシュコピータグ管理部215では、トランザクション発行部220からキャッシュリプレースの通知を受けた時、同時にキャッシュリプレース対象のアドレスのメモリのあるノードを通知してもらう。もし対象アドレスが他ノードである場合、上記の実施例1と同じようにキャッシュコピータグの更新を行う。一方、対象アドレスが自ノードである場合、キャッシュコピータグの更新は行わない。以上が実施例1の変形例1である。
図19に変形例1のキャッシュリプレース処理のフローを示す。このフローは図18のフローに代えて採用される。キャッシュリプレース要求が発生すると、まずステップ1320にて該当するキャッシュラインのアドレスの宛先メモリが自ノードかどうかを判定する。他ノードだった場合はステップ1300へ進み、以降は図18に示す実施例3のキャッシュリプレース処理のフローと同じとなる。一方、あて先メモリが自ノードだった場合はステップ1310へ進む。したがって、キャッシュ状態の変更がスキップされる。
以上のような変形例1では、自ノードキャッシュコピータグにヒットする確率を上げることができる
〔実施例1の変形例2〕
変形例2の構成の大部分は上記実施例1と共通であり、つまり図1で示されるとおりである。ただし変形例2では、ノードコントローラ200の設定用スイッチ250が図12に示すようにキャッシュリプレース制御スイッチ270を含む。キャッシュリプレース制御スイッチ270を含む。キャッシュリプレース制御スイッチ270はリプレース有効かリプレース無効かのどちらかの状態を取る。
キャッシュコピータグ管理部215では、トランザクション発行部220からキャッシュリプレースの通知を受けた時、キャッシュリプレース制御スイッチ270の状態を見る。キャッシュリプレース制御スイッチ270がリプレース有効となっている場合、実施例1の基本例と同じようにキャッシュコピータグの更新を行う。一方、キャッシュリプレース制御スイッチ270がリプレース無効となっている場合、キャッシュコピータグの更新は行わない。
図20に変形例2におけるキャッシュリプレース処理のフローを示す。このフローは図18のフローに代えて採用される。
キャッシュリプレース処理が発生すると、まずステップ1330にてキャッシュリプレース制御スイッチ270がリプレース有効となっているかどうかを判定する。リプレース有効である場合にはステップ1300へ進み、以降は図18に示す実施例3のキャッシュリプレース処理のフローと同じとなる。一方キャッシュリプレース制御スイッチがリプレース無効であった場合には直接ステップ1310に進み、すなわちキャッシュ状態をI(無効)に更新する変更がスキップされる。
以上のように、変形例2では、キャッシュリプレース処理の動作に上記実施例1と違いがある。キャッシュミス要求時の動作は実施例1と全く同じである。
以上の変形例2でも、変形例1と同様にキャッシュコピータグにヒットする確率を上げることができる。
なお、キャッシュリプレース制御スイッチ270及び他の設定用スイッチ250は物理的なスイッチである必要はなく、電子的・論理的・プログラム的に設定されても良い。キャッシュリプレース制御スイッチは、自ノードからメモリアクセスする可能性の方が高いと判定されたようなケース(OSやファームウェアによってccNUMA対応のメモリ配置にした場合など)ではリプレース無効にし、そうでない場合にはリプレース有効にするといった使い方が考えられる。
〔実施例1の変形例3〕
変形例3の構成も実施例1とほぼ同様であり、図1に示される。ただし、変形例3におけるキャッシュコピータグ210は、図13に示すようにキャッシュ状態211、アドレスタグ212に加え、リプレースフラグ213を持つ。キャッシュミス要求の最後に自ノードコピータグを更新する時、リプレースフラグ213はクリアされる。
キャッシュミス要求発生時の動作で上記実施例1と異なる点を述べると、他ノードでスヌープ要求を受けた他ノードコピータグ探索処理で、要求キャッシュラインに対応するエントリがキャッシュコピータグ210中にあった場合の動作が上記実施例1と変わってくる。すなわち、要求キャッシュラインに対応するエントリがキャッシュコピータグ210中にあった場合、キャッシュコピータグ管理部215はリプレースフラグ213がセットされているかどうかを判定する。セットされていない場合は、以降は上記実施例1と同様にキャッシュ状態211やスヌープ要求がリードかリードインバリデートかに従って処理を行う。リプレースフラグ213がセットされていた場合、対応するキャッシュ状態211はIに変更され、リプレースフラグ213はクリアされる。そして他ノードコピータグにはヒットしなかったと応答される。
続いて変形例3におけるキャッシュリプレース処理の動作について説明する。トランザクション発行部220からキャッシュリプレースを通知されたキャッシュコピータグ管理部215は、キャッシュコピータグ210中の対応するエントリのリプレースフラグ213をセットする。キャッシュ状態211の変更は行わない。すなわち、実施例1で採用されていた図18のフローに変えて、図21のフローによりキャッシュリプレース処理を行う。まずステップ1340でキャッシュコピータグの対応するエントリ(必ず存在するはず)のリプレースフラグ213をセットし、次にステップ1310でキャッシュリプレースの結果、データが更新されていた場合にメモリへとデータを書き戻す。
以上の一連の動作によって、キャッシュリプレースが起こったエントリに関しては、自ノードコピータグ検索に対してはヒットし、他ノードコピータグ検索に対してはヒットしない、という状態となる。これにより、先に自ノードからキャッシュミス要求が再発行された場合にはレイテンシを短縮でき、先に他ノードからスヌープ要求が来た場合にはプロセッサバスにスヌープを上げることなくスヌープ結果を応答できるという利点を持つ。
なお、リプレースフラグ213を設ける代わりにキャッシュ状態211の状態を拡張し、たとえばE'やS'といった状態を追加する方法も考えられる。キャッシュ状態Eのラインがリプレースされた場合にはキャッシュ状態をE'としておき、再び自ノードからアクセスされた場合にはキャッシュ状態をEに戻す、などである。この拡張は本質的にリプレースフラグを設けた場合と同等であるため、ここでは説明を省略する。
次に本発明の実施例2を、図14およびを図1〜図13を用いて説明する。なお、図14中に出てくる各記号は図1〜図13で説明した各要素と対応している。
実施例2は複数ノードから構成されるccNUMA構成のマルチプロセッサシステムである。各ノードはノードコントローラ200とメモリユニット200、プロセッサバス110とから構成され、プロセッサバス110には1つ以上のプロセッサ100が接続されている。各ノードはシステム結合部400を介して接続され、ccNUMAのSMPを構成している。
各ノードコントローラ200は設定用スイッチ250を含む。設定用スイッチ250は図12に示すスヌープフィルタスイッチ260を含む。スヌープフィルタスイッチ260はスヌープフィルタを制御するためのスイッチで、無効にするとスヌープフィルタが効かなくなり全てのスヌープ要求がプロセッサバス500上に発行されるようになる。
図14では、ノードコントローラ200a、200b、200cをそれぞれ中心とする3つのノードがある。この3つのノードをそれぞれノードa、ノードb、ノードcと呼び、今後の説明では、各記号の後ろにa、b、cをつけることでノードの違いを示す(何もついていない場合はノードを特定していないことを示す)。
今、ノードaとノードcのスヌープフィルタスイッチ260a、260cは有効と設定し、ノードbのスヌープフィルタスイッチ260bのみ無効と設定する。全てのラインはキャッシュされていない状態からスタートする。また、ノードaは少なくとも2つのプロセッサ、100a0と100a1を持つとする。
その上でノードa上のプロセッサ100a0から、ノードa上のメモリユニット300aに対応するアドレスに対して、リード要求を発行する。キャッシュミス要求500aがプロセッサバス110a上に発行される。ノードコントローラ200aはメモリユニット300aに対してメモリリード要求を発行すると共に、スヌープ要求をノードb、ノードcに対してブロードキャストする。ノードbのノードコントローラ200bは、スヌープフィルタスイッチ260bが無効と設定されていることから、受けたスヌープ要求をそのままプロセッサバス110b上にスヌープ要求520bとして発行する。
ノードコントローラ200aでは、ノードb、ノードcからのスヌープ結果を待ってからデータ応答540aをプロセッサバス110a上に返す。これにより最初のリード要求が完了する。
続けて、ノードa上のプロセッサ100a1から先ほどと同一のアドレスに対してリード命令を発行する。この時、先ほどと同様にキャッシュミス要求500aが発行され、ノードコントローラ200aはメモリユニット300aに対してメモリリード要求を発行すると共に、ノードb、ノードcに対してスヌープ要求をブロードキャストする。しかし本発明によりノードaのキャッシュコピータグにヒットするため、ノードコントローラ200aはスヌープ結果を待たずにデータ応答540aをプロセッサバス110aに対して返すことができる。結果として、第一のリード命令よりも、第二のリード命令の方が速く完了する。
ただし、この条件だけだと単にノードコントローラ200a内に最初のリードデータがキャッシュされた場合と同様になる。そこで次は、ノードbのメモリユニット300bに対応するアドレスに対して、ノードa上のプロセッサ100a0がリード命令を発行し、それが完了した後にノードa上の別のプロセッサ100a1がリード命令を発行し、完了するまでの時間を計測する。この場合、本発明では両方とも他ノードメモリに対するアクセスとなる。従って自ノードコピータグにヒットしても、結局スヌープ結果よりもメモリからのデータ応答の方が遅くなるため、完了までの時間は変わらない。もしリードデータがノードコントローラ200a内にキャッシュされている場合ならば、他ノードメモリアクセスのケースでも速くなるはずである。このように、自ノードアクセスの場合にのみ効果があるのが実施例2の特徴である。
上記した効果について、ディレクトリ方式を採っている場合との差を説明する。まず、ディレクトリ方式の場合には、自ノードメモリアクセス時に、他ノードにはキャッシュされていないことがわかるため、スヌープ要求はブロードキャストされない。従って、他ノードのプロセッサバス110bにスヌープ要求520bが上がることはない。
さらにディレクトリ方式との違いを明確にするため、ノードcのメモリユニット300cに対応するアドレスに対して、ノードa上のプロセッサ100a0がリードインバリデート命令を発行する。ノードコントローラ200aはキャッシュミス要求500aを受けて、メモリユニット300cに対してメモリリード要求を、ノードb、ノードcに対してスヌープ要求をブロードキャストする。ノードbのノードコントローラ200bではスヌープフィルタスイッチ260bが無効とされているため、スヌープ要求520bがプロセッサバス110b上に発行される。そしてノードb、ノードcからのスヌープ応答とデータ応答を受けて、データ応答540aがプロセッサバス110a上へと返される。命令の発行から完了までの時間を計測しておく。
最初のリードインバリデート命令が完了した後、ノードbに属するプロセッサ100b0から、先ほどと同一のアドレスに対してリード命令を発行する。ノードコントローラ200bからメモリユニット300cに対するメモリリード要求と、ノードa、ノードcに対するスヌープ要求が発行される。ノードコントローラ200bはスヌープ結果とデータ応答を受けて、データ応答540bをプロセッサバス110bに対して発行する。
さらに二度目のリードインバリデート命令が完了後、ノードaに属する先ほどとは別のプロセッサ100a1から、先ほどと同一のアドレスに対して、リードインバリデート命令を発行し、完了までにかかる時間をプロセッサ100a0が発行したリードインバリデートの完了時間と比較する。本発明を利用している場合、スヌープフィルタスイッチが無効なノードbに対するスヌープの完了時間はプロセッサ100a0の場合もプロセッサ100a1の場合も同一なので、完了時間はほぼ同一となる。一方、仮にディレクトリ方式だった場合、プロセッサ100a0が発行した場合にはどのノードにもキャッシュされていないため、完了までの時間は速く済むが、プロセッサ100a1が発行した場合にはプロセッサ100b0によって既にキャッシュされているため、スヌープによってインバリデートする分の時間が余計にかかる。従ってプロセッサ100a1が発行したリードインバリデートの方が完了までに多くの時間を要する。
このように、他ノードのキャッシュの状態によってメモリアクセスの時間が変化しないのが実施例2の第二の特徴である。
実施例2ではキャッシュヒットを制御するキャッシュヒット制御スイッチ280を設定用スイッチ250内に有する。ノードコントローラ200a内のキャッシュヒット制御スイッチ280aを有効とした上で、一旦キャッシュをクリアした状態から始める。ノードa上のメモリユニット300aに対応するアドレスに対して、ノードa上のプロセッサ100a0からリード命令を発行し、それが完了した後にノードa上の異なるプロセッサ100a1から同一のアドレスに対してリード命令を発行し、2つのリード命令が完了するまでの時間を計測する。本発明を適用している場合、自ノードのキャッシュコピータグにヒットすることによって、二度目のリード命令の方が短い時間で完了する。
次にノードコントローラ200a内のキャッシュヒット制御スイッチ280aを無効とした上で、再びキャッシュをクリアした状態から始める。ノードa上のメモリユニット300aに対応するアドレスに対して、ノードa上のプロセッサ100a0からリード命令を発行し、それが完了した後にノードa上の異なるプロセッサ100a1から同一のアドレスに対してリード命令を発行し、2つのリード命令が完了するまでの時間を計測する。すると本発明が無効となっているため、どちらのリード命令ともノードbのプロセッサバス110bに対するスヌープ要求の結果を待たなくてはデータ応答540aが返せない。結果として、2つのリード命令が完了するまでの時間はほぼ同一となる。
以上のように、キャッシュヒット制御スイッチの状態によって、キャッシュヒットの動作を変更できることが実施例2の第三の特徴である。
実施例3は基本的には実施例1と同様なシステム構成を有する。ただし実施例2と同様に設定用スイッチには図12に示すスヌープフィルタスイッチ2600を含む。スヌープフィルタスイッチにより、スヌープフィルタ無効にする設定、つまり、スヌープ要求があった場合はコピータグのチェックなど行わずに全てのスヌープ要求がプロセッサバス500に発行される設定が可能となる。したがって図22に示す他ノードスヌープ処理のフローのうちのステップ1400の他ノードコピータグ検索の詳細が実施例1と変わってくる。
図24は実施例3における他ノードコピータグ検索1400の詳細フローを示す。他ノードコピータグ検索の目的は、プロセッサバス120にスヌープ要求520を発行する必要があるかどうかを判定することにある。ステップ1490ではスヌープフィルタスイッチが有効かどうかを判定する。スヌープフィルタスイッチが有効でない場合はステップ1580へ進む。有効である場合にはステップ1500へ進む。ステップ1500は他ノードコピータグを検索するステップである。続くステップ1510では要求キャッシュラインがコピータグ中にあるかどうかを判定する。ある場合にはステップ1520へ進む。ない場合にはステップ1570へ進む。
ステップ1520では、要求がリード要求かどうかを判定するステップである。リードだった場合はステップ1530へ進む。そうでない場合はステップ1540へ進む。
ステップ1530ではキャッシュ状態がE(占有)かどうかを判定する。E(占有)だった場合はステップ1550にてキャッシュ状態をSに変更した後にステップ1580へ進む。そうでない場合はステップ1570へ進む。
ステップ1540ではキャッシュ状態がS(共有)またはE(占有)かどうかを判定する。SまたはEであればステップ1560でキャッシュ状態をIに変更してステップ1580へ進む。どちらでもなかった場合はステップ1570へ進む。
ステップ1570では、他ノードコピータグにヒットしなかったと応答する。一方、ステップ1580では他ノードコピータグにヒットしたと応答する。これらのいずれかで他ノードコピータグ検索1400は完了する。
〔実施例3の変形例〕
先に述べた実施例1の変形例3と同様に、実施例3もリプレースフラグ213(図13)を持つようにキャッシュコピータグ210を変形することができる。この変形を採用した場合、キャッシュリプレース処理の基本フローが図18に代えて図21になるのは実施例1の変形例3と同様である。さらに他ノードコピータグ検索(図22のステップ1400)の詳細フローは図25に示すとおりとなる。
図25のフローではステップ1510の要求キャッシュラインがコピータグ中にあるかどうかを判定するステップの動作が図24のフローに対して変更されている。コピータグ中にない場合には基本フローと同じくステップ1570へと進む。コピータグ中にあった場合にはステップ1590へと進む。ステップ1590では該当エントリのリプレースフラグ213がセットされているかどうかを判定する。リプレースフラグがセットされている場合はステップ1600へ進む。そうでない場合はステップ1520へと進み、以降は図24のフローと同じ動作をする。ステップ1600はキャッシュ状態をI(無効)に変更し、リプレースフラグ213をクリアするステップである。以降はステップ1570へと進み、他ノードコピータグにヒットしなかったと応答する。
以上の一連の動作により、リプレースフラグがセットされたエントリは、自ノードコピータグ探索に対してはヒットし、他ノードコピータグ探索に対してはヒットしないように振舞う。これにより、他ノードからキャッシュを要求された場合に余計なスヌープ要求をプロセッサバスへと上げずに、自ノードからリプレースされたキャッシュラインに対して再びキャッシュミスが起きた場合のレイテンシを短縮する効果があるのも実施例1の変形例3と同様である
以上のように、本発明は複数のノードから構成されるマルチプロセッサシステムに対して適用できる。
本発明の実施例1、実施例3の全体構成図を示すブロック図である。 図1のキャッシュコピータグ210の構成図である。 キャッシュコピータグ210が4ウェイセットアソシアティブの場合の構成図である。 トランザクション500のアドレス700の構成を示す構成図である。 キャッシュ状態211の分類を示す表である。 トランザクション500の構成を示すデータ構成図である。 キャッシュミス要求500の分類を示す表である。 キャッシュリプレース通知510の分類を示す表である。 スヌープ応答530・スヌープ結果630の分類を示す表である。 システムトランザクションの分類を示す表である。 各方式の比較を示す表である。 実施例1の変形例2、実施例2、及び実施例3の設定用スイッチ250を示す概念図である。 実施例1の変形例3および実施例3の変形例におけるキャッシュコピータグ210の構成を示す概念図である。 本発明の実施例2の全体構成を示すブロック図である。 実施例1におけるキャッシュミス要求の基本フローチャートである。 ステップ1100「自ノードコピータグ探索」の詳細フローチャートである。 ステップ1090「自ノードコピータグ更新」の詳細フローチャートである。 実施例1におけるキャッシュリプレース処理の基本フローチャートである。 実施例1の変形例1におけるキャッシュリプレース処理のフローチャートである。 実施例1の変形例2におけるキャッシュリプレース処理のフローチャートである。 実施例1の変形例3におけるキャッシュリプレース処理のフローチャートである。 実施例1における他ノードスヌープ処理の基本フローチャートである。 ステップ1445「他ノードコピータグ更新」の詳細フローチャートである。 実施例3におけるステップ1400「他ノードコピータグ探索」の詳細フローチャートである。 実施例3の変形例におけるステップ1400「他ノードコピータグ探索」の詳細フローチャートである。
符号の説明
100 プロセッサ
110 キャッシュ
120 プロセッサバス
200 ノードコントローラ
210 キャッシュコピータグ
211 キャッシュ状態
212 アドレスタグ
213 リプレースフラグ
215 キャッシュコピータグ管理部
220 トランザクション発行部
230 トランザクション受信部
240 データ応答制御部
250 設定用スイッチ
260 スヌープフィルタスイッチ
270 キャッシュリプレース制御スイッチ
280 キャッシュヒット制御スイッチ
300 メモリユニット
400 システム結合網
500 キャッシュミス要求
505 トランザクション
510 キャッシュリプレース通知
515 ライトバックデータ
520 スヌープ要求
530 スヌープ応答
540 データ応答
550 トランザクション登録通知
560 トランザクション発行パス
570 トランザクション受信パス
580 メモリ要求パス
590 メモリ応答パス
600 スヌープ集計結果
610 メモリデータ応答
620 先行応答通知
630 スヌープ結果
700 アドレス
701 アドレスタグ
702 インデックス
703 オフセット
710 トランザクション種別
720 発行元識別子
1000 メモリリードを発行するステップ
1010 自ノードスヌープ結果がHITMかどうかを判定するステップ
1020 バス上でキャッシュ間転送するステップ
1030 全ノードへスヌープ要求をブロードキャストするステップ
1040 スヌープ結果が全てのノードから返るまで待つステップ
1050 スヌープ集計結果がHITMかどうかを判定するステップ
1060 メモリからデータが返るまで待つステップ
1070 キャッシュ間転送データが返るまで待つステップ
1080 データ応答をプロセッサに返すステップ
1090 自ノードコピータグ更新を行うステップ
1100 自ノードコピータグ探索を行うステップ
1110 自ノードタグヒットしたかどうかを判定するステップ
1120 自ノードのコピータグを検索するステップ
1130 要求キャッシュラインがコピータグ中にあるかどうかを判定するステップ
1140 キャッシュ状態がEであるかどうか判定するステップ
1150 キャッシュ状態がSでかつ要求がリード要求かどうかを判定するステップ
1160 エントリを確保し、キャッシュ状態はIに初期化するステップ
1170 自ノードコピータグにヒットしなかった、と応答するステップ
1180 自ノードコピータグにヒットした、と応答するステップ
1200 キャッシュミス要求はリード要求かどうかを判定するステップ
1210 スヌープ集計結果がHITMかどうかを判定するステップ
1220 スヌープ集計結果がHITかどうかを判定するステップ
1240 キャッシュ状態をEに更新するステップ
1250 キャッシュ状態をSに更新するステップ
1260 リプレースフラグをクリアするステップ
1300 キャッシュコピータグの対応するエントリのキャッシュ状態をIに変更するステップ
1310 データが変更されていればメモリへとデータの書き戻しを行うステップ
1320 アドレスの宛先メモリが自ノードであるかどうかを判定するステップ
1330 キャッシュリプレース制御スイッチがリプレース有効になっているかどうかを判定するステップ
1340 キャッシュコピータグの対応するエントリのリプレースフラグをセットするステップ
1400 他ノードコピータグ探索を行うステップ
1410 他ノードコピータグにヒットしたかどうかを判定するステップ
1420 スヌープ要求をプロセッサバスへ発行するステップ
1430 スヌープの結果最新データがキャッシュされていたかどうかを判定するステップ
1440 キャッシュ間転送により最新データを応答するステップ
1445 他ノードコピータグ更新を行うステップ
1450 スヌープ結果を応答するステップ
1460 スヌープ応答がHITMかどうかを判定するステップ
1465 スヌープ応答がHITかどうかを判定するステップ
1470 キャッシュ状態をSに更新するステップ
1480 キャッシュ状態をIに更新するステップ
1490 スヌープフィルタスイッチが有効かどうかを判定するステップ
1500 他ノードのコピータグを検索するステップ
1510 要求キャッシュラインがコピータグ中にあるかどうかを判定するステップ
1520 要求はリードかどうかを判定するステップ
1530 キャッシュ状態はEかどうかを判定するステップ
1540 キャッシュ状態はSまたはEかどうかを判定するステップ
1550 キャッシュ状態をSに変更するステップ
1560 キャッシュ状態をIに変更するステップ
1570 他ノードコピータグにヒットしなかったと応答するステップ
1580 他ノードコピータグにヒットしたと応答するステップ
1590 リプレースフラグがセットされているかどうかを判定するステップ
1600 キャッシュ状態をIに変更し、リプレースフラグをクリアするステップ。

Claims (17)

1つ以上のプロセッサとノードコントローラとメモリユニットとをそれぞれ含み、相互にシステム結合網で結合された複数のノードを有し、
各メモリユニットは、それぞれ該複数のノードのプロセッサ間で共有される主記憶の一部分を構成する複数の主記憶部分の一つを有し、
該プロセッサは該メモリユニットから取ってきたデータを保持するキャッシュを有し、
該ノードコントローラには該プロセッサの該キャッシュに保持されたデータのアドレスタグとキャッシュ状態を保持するキャッシュコピータグと該キャッシュコピータグを管理するキャッシュコピータグ管理部を有するマルチプロセッサシステムのキャッシュ一貫性制御方法であって、
該プロセッサからのキャッシュミスの要求に従ってメモリユニットへのアクセスを行う時に該要求元のノードコントローラは他のノードコントローラに対してスヌープ要求を該システム結合網を介してブロードキャストし、
同時に該要求元ノードの該キャッシュコピータグを検索し、
該アドレスが自ノードのキャッシュコピータグに登録されていた時に、該キャッシュコピータグ管理部は先行応答通知を発行し、
ブロードキャストした該スヌープ要求に対するスヌープ結果の集計を待たずに該メモリユニットから返ってきた応答データを該プロセッサへと返すことを特徴とするマルチプロセッサシステムのキャッシュ一貫性制御方法。
該キャッシュコピータグのキャッシュ状態にはキャッシュがないことを示すI、共有状態であることを示すS、占有状態であることを示すEの少なくとも3通りの状態を有し、
該プロセッサからのキャッシュミス要求が共有状態を許す要求だった時、該要求元ノードの該キャッシュコピータグを検索した結果、当該アドレスのキャッシュ状態がSまたはEであった場合、あるいは該プロセッサからのキャッシュミス要求が占有状態のみを許す要求だった時、該要求元ノードの該キャッシュコピータグを検索した結果、当該アドレスのキャッシュ状態がEであった場合に、該キャッシュコピータグにヒットしたとして、ブロードキャストした該スヌープ要求に対するスヌープ結果の集計を待たずに該メモリユニットから返ってきた応答データを該プロセッサへと返すことを特徴とする請求項1に記載のマルチプロセッサシステムのキャッシュ一貫性制御方法。
該プロセッサの該キャッシュからデータが追い出された場合に、
該データを保持するメモリユニットがどのノードに属するかを識別する手段を有し、
該メモリユニットが該キャッシュから追い出されたノードに属さない場合には、該キャッシュコピータグの該当するエントリのキャッシュ状態をIへと変更し、
該メモリユニットが該キャッシュから追い出されたノードに属する場合には、該キャッシュコピータグの該当するエントリのキャッシュ状態を変更しないことを特徴とする、請求項2に記載のマルチプロセッサシステムのキャッシュ一貫性制御方法。
該ノードコントローラ内にキャッシュリプレース制御スイッチを有し、
該プロセッサの該キャッシュからデータが追い出された場合に、該キャッシュコピータグの該当するエントリのキャッシュ状態を変更するかどうかを、該キャッシュリプレース制御スイッチの状態によって切り替えることを特徴とする、請求項2に記載のマルチプロセッサシステムのキャッシュ一貫性制御方法。
該キャッシュコピータグの各エントリには、アドレスタグとキャッシュ状態に加えて追い出されたことを示すリプレースフラグを有し、
該プロセッサのキャッシュミスの要求に従ってデータをプロセッサがキャッシュした場合には、
該エントリのリプレースフラグはクリアされ、
該プロセッサの該キャッシュからデータが追い出された場合に、該キャッシュコピータグ内の該データに対応するエントリの該リプレースフラグをセットし、
他ノードからのスヌープ要求に従って該キャッシュコピータグを検索する場合に、該リプレースフラグがセットされていた場合には、キャッシュ状態によらずIであると応答し、
自ノードのキャッシュミス要求に従って該キャッシュコピータグを検索する場合には、該リプレースフラグがセットされていても該キャッシュ状態を応答することを特徴とする、請求項2に記載のマルチプロセッサシステムのキャッシュ一貫性制御方法。
1つ以上のプロセッサの接続されたプロセッサバスとメモリユニットとシステム結合網とを接続するためのノードコントローラであって、
各ノードは該1つ以上のプロセッサバスと1つ以上のメモリユニットと1つのノードコントローラから構成されており、
各メモリユニットは、それぞれ該複数のプロセッサにより共有される主記憶の一部分を構成する複数の主記憶部分の一つを有し、
該プロセッサは該メモリユニットから取ってきたデータを保持するキャッシュを有し、
該ノードコントローラには該プロセッサの該キャッシュに保持されたデータのアドレスタグとキャッシュ状態を保持するキャッシュコピータグと該キャッシュコピータグを管理するキャッシュコピータグ管理部を有し、
該プロセッサからのキャッシュミスの要求に従ってメモリユニットへのアクセスを行う時に該要求元のノードコントローラは他のノードコントローラに対してスヌープ要求を該システム結合網を介してブロードキャストし、
同時に該要求元ノードの該キャッシュコピータグを検索し、該アドレスが自ノードのキャッシュコピータグに登録されていた場合に、
該キャッシュコピータグ管理部は先行応答通知を発行し、ブロードキャストした該スヌープ要求に対するスヌープ結果の集計を待たずに該メモリユニットから返ってきた応答データを該プロセッサへと返すことを特徴とするノードコントローラ。
前記キャッシュコピータグのキャッシュ状態にはキャッシュがないことを示すI、共有状態であることを示すS、占有状態であることを示すEの少なくとも3通りの状態を有し、
前記プロセッサからのキャッシュミス要求が共有状態を許す要求だった時、要求元ノードのキャッシュコピータグを検索した結果、当該アドレスのキャッシュ状態がSまたはEであった場合、あるいはプロセッサからのキャッシュミス要求が占有状態のみをゆする要求だった時、要求元ノードの該キャッシュコピータグを検索した結果、当該アドレスのキャッシュ状態がEであった場合に、該キャッシュコピータグにヒットしたとして、ブロードキャストした前記スヌープ要求に対するスヌープ結果の集計を待たずに前記メモリユニットから返ってきた応答データを該プロセッサへと返すことを特徴とする請求項6に記載のノードコントローラ。
前記プロセッサのキャッシュからデータが追い出された場合に、該データを保持するメモリユニットがどのノードに属するかを識別する手段を有し、
前記メモリユニットが前記キャッシュから追い出されたノードに属さない場合には、前記キャッシュコピータグの該当するエントリのキャッシュ状態をIへと変更し、前記メモリユニットが前記キャッシュから追い出されたノードに属する場合には、前記キャッシュコピータグの該当するエントリのキャッシュ状態を変更しないことを特徴とする請求項7に記載のノードコントローラ。
前記ノードコントローラ内にキャッシュリプレース制御スイッチを有し、
前記プロセッサのキャッシュからデータが追い出された場合に、前期キャッシュコピータグの該当するエントリのキャッシュ状態を変更するかどうかを、前記キャッシュリプレース制御スイッチの状態によって切り替えることを特徴とする請求項7に記載のノードコントローラ。
前記キャッシュコピータグの各エントリには、アドレスタグとキャッシュ状態に加えて追い出されたことを示すリプレースフラグを有し、
前記プロセッサのキャッシュミスの要求に従ってデータをプロセッサがキャッシュした場合には、該当するエントリの前記リプレースフラグはクリアされ、
前記プロセッサの該キャッシュからデータが追い出された場合に、該キャッシュコピータグ内の該データに対応するエントリの前記リプレースフラグをセットし、
他ノードからのスヌープ要求に従って前記キャッシュコピータグを検索する場合に、前記リプレースフラグがセットされていた場合には、キャッシュ状態によらずIであると応答し、
自ノードのキャッシュミス要求に従って前記キャッシュコピータグを検索する場合には、前記リプレースフラグがセットされていても前記キャッシュ状態を応答することを特徴とする請求項7に記載のノードコントローラ。
一つ以上のプロセッサと、一つ以上のメモリユニットと、それらの間を接続するノードコントローラとを含み、相互にシステム結合部を介して接続された複数のノードを有し、
各メモリユニットは、それぞれ該複数のノードのプロセッサにより共有される主記憶の一部分を構成する複数の主記憶部分の一つを有し、
該プロセッサから発行される該メモリユニットへのアクセス命令には、プロセッサのキャッシュ上で他のプロセッサキャッシュとのデータの共有が可能なリード命令と、他のプロセッサのキャッシュとの共有が不可能なリードインバリデート命令の少なくとも2種類の命令を含み、
各ノードコントローラは1つ以上の設定用スイッチを有し、該設定用スイッチは該ノードに含まれる該プロセッサに対するスヌープ動作をコントロールするスヌープフィルタスイッチを有し、
該スヌープフィルタスイッチは、有効な場合には他ノード発のスヌープトランザクションに対して該ノード上のプロセッサに対するスヌープが必要ない場合にはスヌープを該プロセッサバス上に発行せず、無効な場合には必ずスヌープをプロセッサバス上に発行する効果を持つマルチプロセッサシステムであって、
第一のノードは少なくとも二つのプロセッサを有し、第二のノードのスヌープフィルタスイッチのみをスヌープフィルタ無効と設定した上で、
前記第一のノードの該メモリユニットに対応するアドレスに対して、前記第一のノードに属する第一のプロセッサからリード命令を発行し、前期第二のノードの該プロセッサバス上に対応するアドレスのスヌープトランザクションが発行され、その後前記第一のノードの該プロセッサバス上に要求したリードに対するデータが応答された後に、続けて第一のノードに属する第二のプロセッサから同一のアドレスに対してリード命令を発行した場合に、
前記第一のプロセッサが発行したリード命令にかかった時間よりも早く前記第二のプロセッサが発行したリードに対するデータが前記第一のノードの該プロセッサバス上に応答されることを特徴とし、
さらに一方、前記第二のノードの該メモリユニットに対応するアドレスに対して、前記第一のノードに属する前記第一のプロセッサからリード命令を発行し、前記第二のノードの該プロセッサバス上に対応するアドレスのスヌープトランザクションが発行され、その後第一のノードの該プロセッサバス上に要求したリードに対するデータが応答された後に、続けて前記第一のノードに属する第二のプロセッサから同一のアドレスに対してリード命令を発行した場合に、
前記第一のプロセッサが発行したリード命令にかかった時間と同一の時間で、前記第二のプロセッサが発行したリードに対するデータが第一のノードの該プロセッサバス上に応答されることを特徴とするマルチプロセッサシステム。
該第一のノード、第二のノードに加えて第三のノードが存在し、第三のノードの該メモリユニット上に対応するアドレスに対して、第一のノードに属する第一のプロセッサからリードインバリデート命令が発行され、その後第二のノードの該プロセッサバス上に対応するアドレスのスヌープトランザクションが発行され、その後第一のノードの該プロセッサバス上に要求したリードインバリデートに対するデータが応答された後に、
続けて第二のノードに属する一つのプロセッサから、該リードインバリデート命令と同一のアドレスに対してリード命令を発行し、第二のノードの該プロセッサバス上に要求したリードに対するデータが応答された後に、
さらに続けて第一のノードに属する第二のプロセッサから、第一のプロセッサが発行したのと同一のアドレスに対してリードインバリデート要求を発行した場合に、
第一のプロセッサが発行したリードインバリデートにかかった時間と同一の時間で、第二のプロセッサが発行したリードインバリデートに対するデータが第一のノードの該プロセッサバス上に応答されることを特徴とする請求項11に記載のマルチプロセッサシステム。
該ノードコントローラ内の該設定スイッチにキャッシュヒット制御スイッチを有し、
第一のノードと第二のノードがあった時に、第一のノードは少なくとも二つのプロセッサを有し、第二のノードのスヌープフィルタスイッチのみをスヌープフィルタ無効と設定し、
第一のノードの該メモリユニットに対応するアドレスに対して、第一のノードに属する第一のプロセッサからリード命令を発行し、第二のノードの該プロセッサバス上に対応するアドレスのスヌープトランザクションが発行され、その後第一のノードの該プロセッサバス上に要求したリードに対するデータが応答された後に、
続けて第一のノードに属する第二のプロセッサから同一のアドレスに対してリード命令を発行した場合に、
該キャッシュヒット制御スイッチが有効な時には、第一のプロセッサが発行したリード命令にかかった時間よりも早く第二のプロセッサが発行したリードに対するデータが第一のノードの該プロセッサバス上に応答され、
該キャッシュヒット制御スイッチが無効な時には、第一のプロセッサが発行したリード命令にかかった時間と同一の時間で第二のプロセッサが発行したリードに対するデータが第一のノードの該プロセッサバス上に応答されることを特徴とする請求項11に記載のマルチプロセッサシステム。
システム結合部を解して相互に接続され、1つ以上のプロセッサが接続されたプロセッサバスと、1つ以上のメモリユニットとを結合するノードコントローラをそれぞれ含む複数のノードを有するマルチプロセッサシステムにおけるキャッシュ一貫性制御方法であって、
各ノードコントローラは、自ノードに属するプロセッサがキャッシュしている全てのアドレスのアドレスタグとキャッシュ状態を保持するキャッシュコピータグを有し、
キャッシュミスによりプロセッサバスへとメモリアクセス要求が発行された際に、自ノードのスヌープ結果キャッシュ間転送があったかどうかを判定するステップと、
キャッシュ間転送がなかった場合に該当アドレスに対するメモリリード要求をメモリに発行し、スヌープ要求を各ノードへブロードキャストするステップと、
自ノードの該キャッシュコピータグを検索し、当該アドレスに対応するエントリがあるかどうかを判定するステップと、
エントリが存在した場合にはキャッシュ状態が占有状態を示すかどうかを判定するステップと、
キャッシュ状態が占有状態ではなかった場合には共有状態を示していてかつ要求されたキャッシュミスが共有状態を許すかどうかを判定するステップと、
当該エントリが存在していた場合には各ノードからのスヌープ結果を待つステップをスキップしてメモリからデータが返るのを待つステップと、
各ノードからのスヌープ結果を待つステップと、
各ノードからのスヌープ結果により最新データがメモリにあるかどうかを判定するステップと、
最新データがメモリにある場合にメモリからデータが返るのを待つステップと、
最新データがメモリにない場合にはキャッシュ間転送のデータが返るのを待つステップと、
返ってきたデータをプロセッサに返すステップを含むことを特徴とするキャッシュ一貫性制御方法。
前記ノードコントローラはキャッシュリプレースが有効か無効かを設定するキャッシュリプレース制御スイッチを有し、
前記キャッシュからのリプレース時に、前記キャッシュリプレース制御スイッチが有効だった場合に、前記キャッシュコピータグの対応するエントリのキャッシュ状態を無効へと変更するステップを含むことを特徴とする請求項14に記載のキャッシュ一貫性制御方法。
前記キャッシュからのリプレース時に、前記キャッシュのメモリ位置を判定するステップと、
前記メモリ位置が他ノードだった場合に、前記キャッシュコピータグの対応するエントリのキャッシュ状態を無効へと変更するステップを含むことを特徴とする請求項14に記載のキャッシュ一貫性制御方法。
前記キャッシュコピータグのエントリにはリプレースされたラインであることを示すリプレースフラグを有し、
キャッシュコピータグにエントリを確保する時に該リプレースフラグをクリアするステップと、
前記キャッシュからのリプレース時に、前記キャッシュコピータグの対応するエントリのリプレースフラグをセットするステップと、
他ノードからキャッシュコピータグ探索の要求が来た時に、要求キャッシュラインが前記キャッシュコピータグ中にあるかどうかを判定するステップと、
要求キャッシュラインが前記キャッシュコピータグ中にあった場合に、前記リプレースフラグがセットされているかどうかを判定するステップと、
前記リプレースフラグがセットされていた場合にはキャッシュ状態を無効に変更し、前記リプレースフラグをクリアし、かつ探索にはヒットしなかったと応答するステップと、
前記リプレースフラグがセットされていない場合には、探索にヒットしたと応答するステップを含むことを特徴とする請求項14に記載のキャッシュ一貫性制御方法。
JP2006000028A 2006-01-04 2006-01-04 キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム Expired - Fee Related JP4848771B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2006000028A JP4848771B2 (ja) 2006-01-04 2006-01-04 キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
US11/513,378 US7613885B2 (en) 2006-01-04 2006-08-31 Cache coherency control method, chipset, and multi-processor system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2006000028A JP4848771B2 (ja) 2006-01-04 2006-01-04 キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム

Publications (2)

Publication Number Publication Date
JP2007183702A true JP2007183702A (ja) 2007-07-19
JP4848771B2 JP4848771B2 (ja) 2011-12-28

Family

ID=38226029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006000028A Expired - Fee Related JP4848771B2 (ja) 2006-01-04 2006-01-04 キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム

Country Status (2)

Country Link
US (1) US7613885B2 (ja)
JP (1) JP4848771B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046890A (ja) * 2006-08-17 2008-02-28 Fujitsu Ltd マルチプロセッサシステム
JP2008123333A (ja) * 2006-11-14 2008-05-29 Renesas Technology Corp 半導体集積回路装置
US8464004B2 (en) 2008-03-18 2013-06-11 Fujitsu Limited Information processing apparatus, memory control method, and memory control device utilizing local and global snoop control units to maintain cache coherency
JP2013205985A (ja) * 2012-03-27 2013-10-07 Fujitsu Ltd 情報処理装置及び情報処理装置の制御方法
WO2017023252A1 (en) * 2015-07-31 2017-02-09 Hewlett Packard Enterprise Development Lp Using a directory-based cache coherence system to regulate snooping

Families Citing this family (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797495B1 (en) * 2005-08-04 2010-09-14 Advanced Micro Devices, Inc. Distributed directory cache
JP4572169B2 (ja) * 2006-01-26 2010-10-27 エヌイーシーコンピュータテクノ株式会社 マルチプロセッサシステム及びその動作方法
US7493451B2 (en) * 2006-06-15 2009-02-17 P.A. Semi, Inc. Prefetch unit
JP4912790B2 (ja) * 2006-08-18 2012-04-11 富士通株式会社 システムコントローラ,スヌープタグ更新方法および情報処理装置
US9104483B2 (en) * 2007-01-18 2015-08-11 International Business Machines Corporation System and method for automating and scheduling remote data transfer and computation for high performance computing
CN101216815B (zh) * 2008-01-07 2010-11-03 浪潮电子信息产业股份有限公司 一种双翼可扩展多处理器紧耦合共享存储器体系结构
US8612559B2 (en) * 2008-12-10 2013-12-17 Cisco Technology, Inc. Central controller for coordinating multicast message transmissions in distributed virtual network switch environment
US8656115B2 (en) 2010-08-20 2014-02-18 Intel Corporation Extending a cache coherency snoop broadcast protocol with directory information
US9418016B2 (en) * 2010-12-21 2016-08-16 Intel Corporation Method and apparatus for optimizing the usage of cache memories
US8935485B2 (en) 2011-08-08 2015-01-13 Arm Limited Snoop filter and non-inclusive shared cache memory
US9477600B2 (en) 2011-08-08 2016-10-25 Arm Limited Apparatus and method for shared cache control including cache lines selectively operable in inclusive or non-inclusive mode
CN102439571B (zh) * 2011-10-27 2013-08-28 华为技术有限公司 一种防止节点控制器死锁的方法及装置
US10095663B2 (en) 2012-11-14 2018-10-09 Amazon Technologies, Inc. Delivery and display of page previews during page retrieval events
US10339059B1 (en) * 2013-04-08 2019-07-02 Mellanoz Technologeis, Ltd. Global socket to socket cache coherence architecture
WO2014205845A1 (zh) * 2013-06-29 2014-12-31 华为技术有限公司 一种numa系统内存镜像配置方法、解除方法、系统和主节点
CN103488606B (zh) * 2013-09-10 2016-08-17 华为技术有限公司 基于节点控制器的请求响应方法和装置
US9336110B2 (en) 2014-01-29 2016-05-10 Red Hat, Inc. Identifying performance limiting internode data sharing on NUMA platforms
US9836326B2 (en) * 2014-03-31 2017-12-05 Oracle International Corporation Cache probe request to optimize I/O directed caching
US9563928B1 (en) 2014-05-22 2017-02-07 Amazon Technlogies, Inc. Bandwidth reduction through delivery of hardware-independent graphics commands for portions of content pages
US11169666B1 (en) 2014-05-22 2021-11-09 Amazon Technologies, Inc. Distributed content browsing system using transferred hardware-independent graphics commands
US10042521B1 (en) 2014-05-22 2018-08-07 Amazon Technologies, Inc. Emulation of control resources for use with converted content pages
US9922007B1 (en) 2014-05-22 2018-03-20 Amazon Technologies, Inc. Split browser architecture capable of determining whether to combine or split content layers based on the encoding of content within each layer
US9563929B1 (en) * 2014-05-22 2017-02-07 Amazon Technologies, Inc. Caching of content page layers
US9720888B1 (en) 2014-05-22 2017-08-01 Amazon Technologies, Inc. Distributed browsing architecture for the delivery of graphics commands to user devices for assembling a plurality of layers of a content page
US9454515B1 (en) 2014-06-17 2016-09-27 Amazon Technologies, Inc. Content browser system using graphics commands and native text intelligence
CN104331377B (zh) * 2014-11-12 2018-06-26 浪潮(北京)电子信息产业有限公司 一种多核处理器系统的目录缓存管理方法
FR3058608A1 (fr) * 2016-11-04 2018-05-11 Orange Basculement d'une premiere interface de communication vers une deuxieme pour ameliorer la qualite percue de la communication
US10521112B2 (en) 2017-03-17 2019-12-31 International Business Machines Corporation Layered clustered scale-out storage system
CN109309615B (zh) * 2017-07-27 2020-07-07 华为技术有限公司 传输数据的方法和设备
US10372638B2 (en) 2017-10-20 2019-08-06 Hewlett Packard Enterprise Development Lp Interconnect agent
US11119926B2 (en) 2017-12-18 2021-09-14 Advanced Micro Devices, Inc. Region based directory scheme to adapt to large cache sizes
US10705959B2 (en) 2018-08-31 2020-07-07 Advanced Micro Devices, Inc. Region based split-directory scheme to adapt to large cache sizes
US10922237B2 (en) 2018-09-12 2021-02-16 Advanced Micro Devices, Inc. Accelerating accesses to private regions in a region-based cache directory scheme
CN111818108B (zh) * 2019-04-10 2022-07-19 阿里巴巴集团控股有限公司 一种确保数据获取一致性的方法和装置
GB2620198A (en) * 2022-07-01 2024-01-03 Advanced Risc Mach Ltd Coherency control
CN116962259B (zh) * 2023-09-21 2024-02-13 中电科申泰信息科技有限公司 一种基于监听-目录两层协议的一致性处理方法及系统
CN117349199A (zh) * 2023-11-30 2024-01-05 摩尔线程智能科技(北京)有限责任公司 缓存管理装置及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132531A (ja) * 1998-10-23 2000-05-12 Pfu Ltd マルチプロセッサ
JP2001167077A (ja) * 1999-12-09 2001-06-22 Nec Kofu Ltd ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体
WO2004042585A2 (en) * 2002-11-04 2004-05-21 Newisys, Inc. Methods and apparatus for managing probe requests
JP2006072509A (ja) * 2004-08-31 2006-03-16 Fujitsu Ltd 情報処理装置及びローカルスヌープ制御方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10222423A (ja) 1997-02-07 1998-08-21 Nec Corp キャッシュメモリ制御方式
US6598123B1 (en) * 2000-06-28 2003-07-22 Intel Corporation Snoop filter line replacement for reduction of back invalidates in multi-node architectures
US6901485B2 (en) * 2001-06-21 2005-05-31 International Business Machines Corporation Memory directory management in a multi-node computer system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000132531A (ja) * 1998-10-23 2000-05-12 Pfu Ltd マルチプロセッサ
JP2001167077A (ja) * 1999-12-09 2001-06-22 Nec Kofu Ltd ネットワークシステムにおけるデータアクセス方法、ネットワークシステムおよび記録媒体
WO2004042585A2 (en) * 2002-11-04 2004-05-21 Newisys, Inc. Methods and apparatus for managing probe requests
JP2006072509A (ja) * 2004-08-31 2006-03-16 Fujitsu Ltd 情報処理装置及びローカルスヌープ制御方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008046890A (ja) * 2006-08-17 2008-02-28 Fujitsu Ltd マルチプロセッサシステム
JP2008123333A (ja) * 2006-11-14 2008-05-29 Renesas Technology Corp 半導体集積回路装置
US8464004B2 (en) 2008-03-18 2013-06-11 Fujitsu Limited Information processing apparatus, memory control method, and memory control device utilizing local and global snoop control units to maintain cache coherency
JP2013205985A (ja) * 2012-03-27 2013-10-07 Fujitsu Ltd 情報処理装置及び情報処理装置の制御方法
WO2017023252A1 (en) * 2015-07-31 2017-02-09 Hewlett Packard Enterprise Development Lp Using a directory-based cache coherence system to regulate snooping
US10740235B2 (en) 2015-07-31 2020-08-11 Hewlett Packard Enterprise Development Lp Using a directory-based cache coherence system to regulate snooping
US11481328B2 (en) 2015-07-31 2022-10-25 Hewlett Packard Enterprise Development Lp Using a directory-based cache coherence system to regulate snooping

Also Published As

Publication number Publication date
US20070156972A1 (en) 2007-07-05
JP4848771B2 (ja) 2011-12-28
US7613885B2 (en) 2009-11-03

Similar Documents

Publication Publication Date Title
JP4848771B2 (ja) キャッシュ一貫性制御方法およびチップセットおよびマルチプロセッサシステム
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
EP3427154B1 (en) Self-healing coarse-grained snoop filter
JP3269967B2 (ja) キャッシュコヒーレンシ制御方法、および、これを用いたマルチプロセッサシステム
US7669018B2 (en) Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US7581068B2 (en) Exclusive ownership snoop filter
US8812786B2 (en) Dual-granularity state tracking for directory-based cache coherence
US20150058570A1 (en) Method of constructing share-f state in local domain of multi-level cache coherency domain system
JP5445581B2 (ja) コンピュータシステム、制御方法、記録媒体及び制御プログラム
JP2013058225A (ja) マルチプロセッサ・システムにおけるキャッシュ・コヒーレンスにおいて用いるフォワード状態
JP3661764B2 (ja) 不均等メモリ・アクセス・コンピュータ・システムにおいてエヴィクション・プロトコルを提供するための方法およびシステム
JP2001282764A (ja) マルチプロセッサシステム
JP2000322318A (ja) コンピュータキャッシュ用コヒーレンシープロトコル
US8332592B2 (en) Graphics processor with snoop filter
KR20090079964A (ko) 능동적 프리페치들로 향상된 호버 상태를 실시하는 시스템 및 방법
JP2005141606A (ja) マルチプロセッサシステム
US7725660B2 (en) Directory for multi-node coherent bus
US7669013B2 (en) Directory for multi-node coherent bus
US8397029B2 (en) System and method for cache coherency in a multiprocessor system
CN115858420B (zh) 用于支持多处理器架构的系统缓存架构和芯片
JP3732397B2 (ja) キャッシュシステム
US10489292B2 (en) Ownership tracking updates across multiple simultaneous operations
JP2000267935A (ja) キヤッシュメモリ装置
JP2002024198A (ja) 分散共有メモリ型並列計算機
JPH10232831A (ja) キャッシュ・タグ維持装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080908

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110607

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110728

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

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

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

Free format text: PAYMENT UNTIL: 20141028

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees