JP5431525B2 - アクセラレータ用低コストのキャッシュ一貫性を維持するシステム - Google Patents

アクセラレータ用低コストのキャッシュ一貫性を維持するシステム Download PDF

Info

Publication number
JP5431525B2
JP5431525B2 JP2012106285A JP2012106285A JP5431525B2 JP 5431525 B2 JP5431525 B2 JP 5431525B2 JP 2012106285 A JP2012106285 A JP 2012106285A JP 2012106285 A JP2012106285 A JP 2012106285A JP 5431525 B2 JP5431525 B2 JP 5431525B2
Authority
JP
Japan
Prior art keywords
node
block
memory
cached
cache
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.)
Active
Application number
JP2012106285A
Other languages
English (en)
Other versions
JP2012181860A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2012181860A publication Critical patent/JP2012181860A/ja
Application granted granted Critical
Publication of JP5431525B2 publication Critical patent/JP5431525B2/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement

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)

Description

本発明は一般的にマルチプロセッサに関係する。さらに具体的には、本発明は、同じチップもしくは異なるチップ上にあるアクセラレータとCPU間の一貫性(coherence)を維持しながら通信による帯域幅の消費を低減することに関係する。
初期のコンピュータ・システムは、単一の中央処理装置(CPU)と、CPUの関連メモリ、入出力(I/O)デバイス、およびディスク・ドライブ、光学ストレージ、磁気テープ・ドライブ、およびその種の他のものなどの大容量ストレージ・システムを有していた。
しかし、単一のプロセッサの容量を超える処理能力に対する要求が高まり、プロセッサに対する要求から増え続ける負担を緩和する多数のソリューションがでてきている。当該ソリューションの1つが、CPUに連結してアクセラレータを使用することである。アクセラレータはプログラム可能である、または特定の機能を行う独立型である。このような機能の実行の要求をCPUが受けると、機能の実行はアクセラレータに委譲することができる。アクセラレータは割り当てられるタスクを処理する一方で、CPUは別のタスクを処理できるので、CPUに対する負担が減り、効率が高まる。
図1は、インターコネクト・バス120でアクセラレータ110に連結された例示的なCPU100を表す。CPU100はメモリ・デバイス102に接続できる。メモリ・デバイス102は、例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイスである。加えて、CPU100は処理するデータに高速アクセスしやすくするローカル・キャッシュ・メモリ101を含んでもよい。アクセラレータ110はインターコネクト・バス120でCPUに接続して、特定の機能を行うことができる。例えば、アクセラレータ110は、特殊な座標演算および変換を行うグラフィックス・アクセラレータである。アクセラレータは独自のメモリ112およびキャッシュ111をもつこともある。
画像を処理する要求をCPU100が受け取ると、アクセラレータ110に画像データを処理するタスクを委譲できる。例えば、メモリ102に収容されるブロック1には処理の必要な画像データを入れることができる。処理要求がCPUに送られると、ブロック1はアクセラレータによる処理のためにキャッシュ111(またはアクセラレータのメモリ112)に転送できる。ブロック1の処理が完了すると、アクセラレータによってメモリ102にライトバックできる。
先行技術に伴う問題の1つに、アクセラレータとCPUがメモリの一貫性なく接続されることがある。プロセッサとアクセラレータはメモリ102および112に入れられたデータを共有できるため、共有データで作業するときにはアクセラレータとCPU間での協調が必要である。アクセラレータとCPUが同じメモリ位置でアドレス割り当てされる異なるデータに絶対にアクセスしないように一貫性が求められる。例えば、図1では、CPUは、ブロック1が処理のためにアクセラレータ110に送られた後で、ブロック1を処理する要求を受け取ることができる。新たな要求が画像処理の要求ではない場合、CPUは処理のためにブロック1をキャッシュできる。CPUがブロックを処理する前にアクセラレータがそのブロックの処理を完了すると、CPUがキャッシュしたデータは古いものになる。そのため、CPUは正しくないデータを処理することになる。メモリ一貫性は、最も最近に変更されたデータのコピーをすべての処理デバイスに使えるようにすることを要求する。
この問題の1つのソリューションが、キャッシュの古いデータを更新するスヌープ・プロトコルを実装することである。各プロセッサに発行されるアドレスとコマンドは、他のすべてのプロセッサおよびアクセラレータもしくは他のすべてのプロセッサまたはアクセラレータに送信できる。バス・モニタを使用して、メモリ・アクセスのためのアドレスラインを監視できる。キャッシュにバスでアドレス割り当てされるメモリ・ブロックのコピーが収容される場合、キャッシュはそのメモリ・ブロックのコピーを更新できる。例えば、図1では、バス・モニタはバス120を監視できる。キャッシュ101にブロック1のコピーが収容されるときに、アクセラレータ110により書き込み操作をキャッシュ101が検出した場合、キャッシュ101は独自のブロック1のコピーを更新して、CPUによる処理のために最新かつ正確なブロック1のコピーを収容できる。
他の実施例では、キャッシュ101はメモリ102でのブロック1へのメモリ書き込みの検出に応答して、そのブロック1のコピーを無効にできる。そのため、CPUがキャッシュからブロック1へのアクセスを試みると、ブロック1の最新のコピーをメモリから検索できる。
しかし、複数のアクセラレータ、CPU、共有メモリをもつマルチプロセッシング環境では、キャッシュ一貫性を守らせることは、すべてのメモリ・アクセスを一貫性ユニットのすべてに伝播しなければならないことを意味する。各一貫性ユニットはさらにメモリ・アクセスをスヌープし、アクセスのイニシエータに応答して更新が必要かどうかを示すことができる。共有メモリへのアクセスのたびに、この種のデバイス間の通信は多大なノード間の帯域幅を消費し、システムの効率を大幅に下げることがある。ノードは、CPUおよびアクセラレータが一貫的なメモリ・アクセスを行う共通の物理的なバスを共有するCPUまたはアクセラレータのグループからなる。必ずしもそうではないが、多くの場合、ノードは異なるチップ上にある。
そのため、複数のCPUおよびアクセラレータ間のキャッシュ一貫性を効率的に維持する方法およびシステムが必要である。
本発明の実施例は、一般的にアクセラレータとCPU間の一貫性を維持しながら、通信によるチップ間の帯域幅の消費を低減する方法およびシステムを提供する。
発明のある実施例は、マルチプロセッシング・システムにおいて、少なくとも1つの第1ノードと少なくとも1つの第2ノードの間のメモリ一貫性を維持する方法を提供する。第1ノードは一般的に、一又は複数の中央処理装置(CPU)と、一又は複数のCPUの各々に対応するキャッシュ・メモリと、共有メモリと、他のノードの共有メモリ位置を特定するディレクトリとを有する。第2ノードは一般的に、一又は複数のアクセラレータと、一又は複数のアクセラレータの各々に対応するキャッシュ・メモリと、一又は複数のアクセラレータの各々に対応するローカル・ストアとを有する。方法は一般的に、共有メモリのブロックを第1ノードから第2ノードのローカル・ストアまたはキャッシュ・メモリの1つに一貫性を保って転送するステップと、ローカル・ストアの転送されたブロックで一又は複数の操作を一貫性を保たないで行うステップと、一又は複数の操作を行った後、メモリのブロックを共有メモリ・デバイスに一貫性を保ってライトバックするステップとを含む。
発明の別の実施例は、マルチプロセッシング・システムにおいて、少なくとも1つの第1ノードと第2ノードとの間のメモリ一貫性を維持する方法を提供する。第1ノードは一般的に、一又は複数の中央処理装置(CPU)と、一又は複数のCPUの各々に対応するキャッシュ・メモリと、共有メモリと、他のノードでキャッシュされる共有メモリ位置を特定するノード・ディレクトリから構成される。第2ノードは一般的に、一又は複数のアクセラレータと、一又は複数のアクセラレータの各々に対応するキャッシュ・メモリと、一又は複数のアクセラレータの各々に対応するローカル・ストアから構成される。方法は一般的に、一又は複数の中央処理装置の1つで共有メモリのブロックへのアクセス要求を受け取るステップと、要求の受取に応答して、ブロックが別の位置でキャッシュされているかどうか、およびブロックが変更されているかどうかを判定するステップと、ブロックが第2ノードでキャッシュされ変更されている場合には、ブロックのアドレスを第2ノードに送信するステップとを有する。
さらに別の実施例は、マルチプロセッシング環境で少なくとも1つの第1ノードと少なくとも1つの第2ノードとのメモリ一貫性を維持するシステムを提供する。システムは、少なくとも1つの第1ノードと少なくとも1つの第2ノードを有する。第1ノードは一般的に、一又は複数の中央処理装置(CPU)と、一又は複数のCPUの各々に対応するキャッシュ・メモリと、他のノードの共有メモリ位置を特定するディレクトリとを有する。第2ノードは一般的に、一又は複数のアクセラレータと、一又は複数のアクセラレータの各々に対応するキャッシュ・メモリと、一又は複数のアクセラレータの各々に対応するローカル・ストアとを有する。第1ノードは一般的に、共有メモリのブロックへのアクセス要求を受け取って、要求の受け取りに応答して、ブロックが第1ノードまたは別のノードでキャッシュされているか、およびブロックが変更されているかどうかを判定するように構成される。アクセスが読み出しアクセスの場合、第1ノードは最も最近に変更された共有メモリのブロックを提供し、アクセスが書き込みアクセスの場合、メモリのブロックがキャッシュされる位置を更新もしくは無効にするように構成される。第2ノードは一般的に、第1ノードで共有メモリのブロックへのアクセス要求を一貫性を保って発行し、ブロックがローカル・ストアに転送されている場合、そのブロックで操作を一貫性を保たないで行うように構成される。
上記あげた本発明の特徴、利点、および目的が達成され、詳細に理解できるように、上記簡単にまとめた発明を、添付の図面に図示するその実施例を参照してより具体的に説明する。
ただし、添付の図面は本発明の代表的な実施例のみを図示しており、そのため発明は同様に効果的な他の実施例にも適用できるため、その範囲を制限すると見なしてはならないことに留意するべきである。
本発明は、一般的にアクセラレータとCPUの一貫性を維持しながら通信によるチップ間の帯域幅の消費を低減することに関係する。CPUおよびアクセラレータはマイクロプロセッシング環境で個々のノードにクラスターしてもよい。共有メモリ・デバイスを収容する各ノードは、他のノードでキャッシュされた共有メモリのブロックを追跡するノード・ディレクトリを維持できる。そのため、コマンドおよびアドレスは、メモリ位置がノード以外でキャッシュされた場合に限り、他のノードのプロセッサおよびアクセラレータに送信できる。加えて、アクセラレータは一般的にCPUと同じデータにはアクセスできないため、最初の読み出し、書き込み、および同期の操作だけが他のノードに送信できる。データへの中間アクセスは一貫性を保つことなく行える。その結果、一貫性を維持するために消費されるチップ間の帯域幅を低減できる。
以下に、発明の実施例を参照する。ただし、発明は具体的に記載される実施例に制限されないことは理解されるべきである。
システムの例
図2は、発明のある実施例によるCPU210とアクセラレータ220を収容する例示的なマイクロプロセッサシステム200を表す。システム200のCPU210とアクセラレータ220は、2つ以上のノードに編成できる。各ノードはプロセッサまたはアクセラレータおよび共有メモリ・デバイスのあらゆる組み合わせを収容することができる。共有メモリは、ノード内のプロセッサおよびアクセラレータもしくはプロセッサまたはアクセラレータでアクセス可能であり、またリモート・ノードのプロセッサおよびアクセラレータもしくはプロセッサまたはアクセラレータでアクセス可能である。メモリのアクセス時間は、要求するデバイスに対するメモリの位置によって変わる。当該メモリ・アクセスはノンユニフォーム・メモリ・アクセス(NUMA)と呼ばれる。例えば、プロセッサによるそのホーム・ノード内のメモリへのアクセスは、リモート・ノードのメモリへのアクセスよりも速いであろう。
効率を高めるために、プロセッサと共有メモリは各ノードに選択的にクラスターして、メモリのアクセス時間を短縮できる。例えば、あるメモリ・デバイスのデータに頻繁にアクセスするプロセッサとアクセラレータを同じノードのメモリ・デバイスと一緒にクラスターできる。また、オペレーティング・システムのサポートは、プロセッサをプロセッサが実行するたびに同じノードで実行するようスケジューリングすることによって、ノード間のアクセス頻度を減少できる。
アクセラレータはCPUの要求により専門のタスクのみを行うため、アクセラレータはCPUを収容するノードとは別のノードにクラスターできる。したがって、システム200では、CPU210はノード0にクラスターし、アクセラレータ220はノード1にクラスターしている。2つのノードを図示しているが、当業者には、システムにあらゆる数のノードを実装できることは認識されるであろう。複数のノードの各々をリンク230で相互接続できる。
図示するように、ノード0は1組のCPU210(図2では4つ示される)を収容する。各CPUはローカライズしたキャッシュ・メモリ211をもつことができる。図では専用のローカライズしたキャッシュを図示しているが、当業者には、複数のレベルのキャッシュ・メモリも実装できることは認識されるであろう。また、一又は複数のレベルのキャッシュをCPU間で共有してもよい。
ノード0は各CPUに通信可能に接続される非ローカル・メモリ212も収容できる。メモリ212はダイナミック・ランダム・アクセス・メモリ(DRAM)などのランダム・アクセス・メモリであることが好ましい。メモリ212はCPUにより処理が必要なデータを収容するのに十分な大きさであろう。キャッシュ・メモリ211のようなローカライズしたキャッシュ・メモリへのCPUのアクセスは、メモリ212のような非ローカル・メモリへのアクセスよりも速いため、各CPUで処理するデータのブロックは処理のためにメモリ212からローカル・キャッシュ・メモリ211にコピーできる。メモリ212は、リンク230を介して他のノードのCPUおよびアクセラレータもしくはCPUまたはアクセラレータからアクセスできる共有メモリでもよい。
メモリ212は他のノードからアクセス可能な共有メモリであるため、ノード0はノード・ディレクトリ213を収容して、他のノードでキャッシュされるメモリ212からブロックのコピーを追跡することもできる。ノード・ディレクトリ213を使用する利点は、システムがある操作についてあるアドレスの使用で能動的な役割を現在果たしているプロセッサだけをそのアドレスに通知できることである。例えば、ノード・ディレクトリは、他のノードでキャッシュされる共有メモリのアドレス、そのノードの位置、およびそのデータのステータスに関する情報を収容できる。そのため、メモリ・アクセスは、ある特定のアドレスが別のノードでキャッシュされ、データが変更されている場合に限り、他のノードに送信できる。そのため、ノード・ディレクトリを使用することにより、すべてのアドレスおよびコマンドをすべてのノードに送信する必要がなく、それによってシステムのオーバーヘッド、レイテンシ、およびリンク全体の帯域幅消費を低減する。
ノード1は一又は複数のアクセラレータ220を含むことができる。CPUと同様、各アクセラレータ220は対応する専用のキャッシュ・メモリ221をもつことができる。図面には図示していないが、それでも当業者には複数のキャッシュ・レベルを実装することもできることは認識されるであろう。また、一又は複数のキャッシュ・レベルはノードのアクセラレータ間で共有してもよい。ノード内のアクセスはリンク230で他のノードにアクセスするよりも速いため、アクセラレータで処理するデータは処理のために各キャッシュ・メモリ221にコピーできる。
ノード1は非ローカル・メモリ222を収容できる。メモリ222は他のノードでアクセス可能な共有メモリでもよい。メモリ212と同様、メモリ222はDRAMデバイスなどのランダム・アクセス・メモリ・デバイスでもよい。共有メモリ222がノード1に含まれる場合、ディレクトリ223も含めて、他のノードでキャッシュされるメモリ222からブロックのコピーを追跡してもよい。
各アクセラレータは対応するオプションのローカル・ストア224ももつことができる。ローカル・ストア224は主にそれに付加されるアクセラレータからアクセスされる一貫的でないメモリでよい。ローカル・ストア224はその各アクセラレータからしかアクセスできないため、ローカル・ストアは一貫性を保たなくてもよい。そのため、アクセラレータと対応するローカル・ストアとのトランザクションは、他のノードに伝播して一貫性を確保したり、または同じノード内でキャッシュする必要はない。
アクセラレータで処理するデータはローカル・ストア224に収容できる。そのため、初期データおよび中間結果のために各アクセラレータによるそのローカル・ストアへのアクセスは、リンク230の帯域幅の要求に追加されない。最終結果は、CPU210からアクセスされる前に、ソフトウェアでローカル・ストアからメモリ212または222にコピーできる。ソフトウェアはアクセラレータとCPUのこの種の共有データへのアクセスを協調および同期することもできる。
実施例には、メモリ222、キャッシュ221、およびローカル・ストア224をオプションにでき、そのためノード1から省けるものもある。上記デバイスの一又は複数のを含めることには、いくつかの要因が影響するであろう。例えば、前述したように、ノード全体のメモリ・アクセスはローカル・メモリへのアクセスよりも遅くなるので、キャッシュ221およびローカル・ストア224を含めることは有利になるであろう。そのため、キャッシュとローカル・ストアを含めることで、レイテンシとチップ間の帯域幅消費を低減できる。アクセラレータが大量のデータを処理する場合、他のノードの共有メモリへのアクセスはノード内の共有メモリへのアクセスよりも遅くなるため、メモリ222を含めるのが有利であろう。キャッシュと同様、メモリを含めることはレイテンシおよびチップ間の帯域幅を低減できる。さらに別の要因は、メモリが含まれる場合に必要となるかもしれないディレクトリのサイズと複雑さであろう。大容量のメモリはより大きく、より複雑なディレクトリを必要とし、それが性能を低下させる障害となりうる。
図3は、共有メモリ222を省いた発明の代替実施例である。したがって、追跡すべき共有位置がないため、ノード・ディレクトリ223も省かれている。実施例には、図3のキャッシュ221はごく少量のデータだけをキャッシュできるものもある。例えば、各キャッシュ221は6つのキャッシュラインしか収容できない。その結果、ノード・ディレクトリ213は、4つのキャッシュ221の各々の6つのアドレスに対応する24アドレスしか追跡できない。そのため、CPUのメモリ212へのアクセスは、アドレスがノード1の24つの位置の1つでキャッシュされない限り、ノード1に送信する必要はなく、それによってノード全体の一貫性を維持するための帯域幅の消費を低減できる。
ローカル・キャッシュ・メモリ211および221は、別のノードの共有メモリ・デバイス(メモリ212および222など)からのデータのコピーを収容できるため、一貫性がとれる。そのため、キャッシュ211および221のブロックの変更状態を追跡して、一貫性を確保できる。例えば、アクセラレータがすでにそのキャッシュにあるブロックに書き込み、そのブロックが変更されない場合、ブロックを収容するすべてのノードの少なくとも1つのキャッシュの状態は移行する必要があろう。この場合、ブロックのアドレスは当該キャッシュのすべてに送信する必要がある。アドレス割り当てされるブロックは他のキャッシュで無効な状態に移行でき、アクセラレータのキャッシュだけが変更された状態に移行されるであろう。同時に、ブロックのメモリ位置がアクセラレータとは別のノードにある場合、そのノードのノード・ディレクトリを更新して、ブロックがアクセラレータのリモート・ノードで変更されたことを示すこともできる。
同様に、メモリ・ブロックが共有メモリで更新される場合、ブロックをキャッシュしたすべての位置も更新または無効にしなければならない。ただし、本発明の利点は、アクセラレータによる最初の読み出し操作、書き込み操作、および同期だけを送信すればよいことである。
読み出し操作
最初の読み出し操作とは、アクセラレータによる処理が必要なデータをノード0の共有メモリ位置からノード1に転送する操作である。このアクセスを一貫性を維持するように行って、確実にアクセラレータがシステムで利用できる最新版のデータをもつようにできる。読み出し操作は各アクセラレータのDMAコントローラでリンク230にわたるダイナミック・メモリ・アクセス(DMA)で行える。ノード1のアクセラレータによるメモリ212のような共有メモリ位置へのDMAアクセスは、データが一貫的でないローカル・ストアに転送される、または一貫的なキャッシュもしくはメモリに転送されるかを示すことができる。データが一貫性ユニットに転送される場合、データの位置、アドレス、およびステータスを示すエントリをノード・ディレクトリ213に行う。しかし、データがローカル・ストアに転送される場合、ノード・ディレクトリにエントリしない。
一般に、リモート共有メモリから読み出されるデータは、アクセラレータに対応するローカル・ストアに格納できる。ローカル・ストアは一貫性を維持しないため、アクセラレータは操作を行って、ローカル・ストアのデータを変更できる。ローカル・ストアへのアクセスは他のノードには送信されず、それにより帯域幅の消費を低減する。また、ノード0のノード・ディレクトリにエントリしないため、ローカル・ストアに転送されるメモリ位置へのCPUアクセスはノード1に送信する必要がない。
しかし、読み出し操作の中にはデータをローカル・ストア以外の一貫性ユニットに転送させるものもある。例えば、仮想アドレスのハードウェア翻訳に使うアトミック操作およびページ・テーブル・エントリをキャッシュすることがある。これらキャッシュのデータでのアクセラレータによる操作は一貫的(coherent)であり、他のノードにアドレスを送信する必要がある。同様に、この同じデータに関して他のノードのCPUまたはアクセラレータによる操作は一貫的であり、他のノードからアドレスを送信する必要がある。
図5は、共有メモリを収容するノードのノード・ディレクトリにエントリを行うかどうかを判定するために行う操作のフロー図である。操作はステップ401でアクセラレータを収容するノードから読み出し要求を受け取ることによって開始する。ステップ402で、読み出し要求が、データ読み出しがローカル・ストアに転送されることを示す場合、ステップ403でノード・ディレクトリへのエントリは行わない。他方、読み出し要求が、データをキャッシュまたはメモリ・ユニットなどの一貫性ユニットに転送することを示す場合には、ステップ404で転送されるアドレス、転送の位置、およびデータのステータスを示すエントリをノード・ディレクトリに行える。
図4は、ノード0のCPU210とノード1のアクセラレータ220が一貫性を保ってアクセスする共有メモリ212のメモリ(ブロック1)のブロックを表す。例えば、ブロック1はノード0のCPU210aで処理するためにキャッシュ・メモリ211にキャッシュできる。その後、ブロック1のコピーをノード1に送ることを要求するとともに、ブロック1に関わるタスクはノード1のアクセラレータ220aに委譲できる。ブロック1はCPU210aで変更されているかもしれないため、ブロックをノード1に送る前に、キャッシュ211aはブロック1のコピーが更新されているかを点検しなければならない。ノード・ディレクトリ213も、ブロック1がある他のノードでキャッシュされて、変更されているかどうかを判定するために点検する。実施例には、ノード・ディレクトリはキャッシュ211aのスヌープと同時に点検するものもある。ノード・ディレクトリ213が、ブロック1がノード2でキャッシュされて変更されていることを示す場合、ブロック1のアドレスをノード2に送る。ブロックの宛先ノード番号0もノード2に送る。ノード2のキャッシュはアドレスをスヌープして、キャッシュ231にブロック1を見つける。これでブロック1をノード0に転送できる。当業者には、ノード0によりノード1の宛先ノード番号をノード2に提供できることも認識されるであろう。そのため、ノード2で変更されたブロックはノード1に直接転送できる。
図6は、第1リモート・ノードの共有メモリ(メモリ212など)でアクセラレータが読み出し操作中に、メモリ・ブロックの最新のコピーが確実に提供されるために行う例示的な操作のフロー図である。操作はステップ501で、要求されるメモリのブロックが第1リモート・ノード内でキャッシュされるかどうかを判定することによって開始する。ブロックが第1リモート・ノード内でキャッシュされる場合、ステップ502でブロックはデータに変更が行われているかを点検する。ブロックが変更されている場合、ブロックは変更されたブロックを収容するキャッシュから直接読み出される。
要求されるブロックが第1リモート・ノードでキャッシュされていない場合、またはブロックはキャッシュされたが変更されていない場合、ステップ504で、ブロックが第2リモート・ノードでキャッシュされたかどうか、およびブロックが変更されているかどうかを判定する。これは、例えば、ブロックがキャッシュされ変更される位置を示すことのできるノード・ディレクトリを調べることによって行える。ブロックが第2リモート・ノードでキャッシュされ、変更されている場合、ステップ508でブロックのアドレスを第2リモート・ノードに送ってスヌープできる。ステップ506で、変更されたブロックは第2リモート・ノードの変更ブロックを収容するキャッシュから読み出すことができる。
メモリ・ブロックが第2リモート・ノードでキャッシュされていない場合、または第2リモート・ノードでキャッシュされたブロックが変更されていない場合、ステップ507で、ブロックは第1リモート・ノードの共有メモリ・デバイスから読み出せる。当業者には、メモリのブロックが第1リモート・ノードのキャッシュと第2リモート・ノードのキャッシュの両方でキャッシュされる場合、最も最近に変更されたブロックを読み出せることも認識されるであろう。
アクセラレータとは対照的に、CPUによるほとんどの読み出し操作はリモート・ノードでキャッシュされない位置および、CPUのノードのメモリに行うであろう。このような場合、読み出されるブロックのアドレスはリモート・ノードに送信する必要はない。また、ブロックがリモート・ノードでキャッシュされているが変更されていない場合でも、アドレスを送信する必要はない。これらすべての場合において、CPUのノードのノード・ディレクトリを使用して、他のノードのブロックの状態を判定できる。このように、ノード・ディレクトリを使って、他のノードへのほとんどのアドレスの送信を避けることができる。
CPUが独自のノードの共有メモリのある位置で読み出しを行う場合、アドレスはそのノードの他のキャッシュでスヌープする。当該キャッシュが変更ブロックを収容する場合、ブロックは変更ブロックを収容するキャッシュから直接読み出せる。要求されるブロックがそのノードでキャッシュされていない場合、またはブロックはキャッシュされているが変更されていない場合、ノード・ディレクトリを点検する。ブロックがリモート・ノードでキャッシュされ、かつ変更されている場合、アドレスがリモート・ノードに送信され、そこでスヌープされる。変更データは、さらにリモート・ノードの変更ブロックを収容するキャッシュから読み出しされる。実施例には、リモート・キャッシュとノード・ディレクトリのステータスを、キャッシュラインが変更されていないことを示すように変えるものもある。変更データはメモリにも書き込める。当業者によく知られる代替キャッシュ・プロトコルを使えば、メモリの書き込みを避けることができるであろうし、他のキャッシュの状態が起こりうる。
書き込み操作
書き込み操作とは、アクセラレータによる処理の後、ノード1のアクセラレータからノード0の共有メモリにデータを戻す操作といえる。読み出し操作と同様に、書き込み操作もリモート・ノードの共有メモリへのDMAアクセスにより行える。このデータの古くなったコピーをシステムの他のキャッシュで使用しているかもしれないので、この操作も一貫性を保つように行って、古くなったデータを収容するキャッシュを更新できる。
図4に戻ると、ブロック1はまずノード1のアクセラレータ220aで処理するために、キャッシュ221aでキャッシュされているかもしれない。また、CPU210aで処理するためにキャッシュ211aで、またはノード2のアクセラレータ230で処理するためにキャッシュ231でキャッシュされるかもしれない。CPU210aがブロックを処理する前に、ブロック1はアクセラレータ220aで変更されて、共有メモリ212にライトバックすることができる。実施例には、アクセラレータ220aがブロック1に書き込むとき、ブロック1をキャッシュ211aおよびキャッシュ231で無効にできるものもある。無効化は、CPU210aが古いデータにアクセスしないように行える。他の実施例では、アクセラレータ220aがブロック1に書き込むとき、ブロック1はキャッシュ211aおよびキャッシュ231で最新データに更新できる。いずれにしても、CPU210aとアクセラレータ230は、アクセラレータ220aがブロック1に書き込んだ後は、古いデータへのアクセスを防止される。そのため、アクセラレータによる書き込み操作を一貫的に行える。
図7は、アクセラレータがデータ処理を完了した後、すべてのキャッシュが確実に更新されるように行える例示的な操作を表す。操作はステップ606で、アクセラレータが第1リモート・ノードの共有メモリ(メモリ212など)位置にDMA書き込み操作を行って開始する。ステップ601で、第1リモート・ノードのキャッシュは書き込み操作のアドレスをスヌープして、アドレスがローカルにキャッシュされているかどうかを判定できる。アドレスがキャッシュされている場合、ステップ602でそのキャッシュはメモリ・ブロックのその各コピーを新たな書き込みデータに更新できる。前述したように、実施例には、キャッシュがそのコピーを更新する代わりに、メモリ・ブロックのその各コピーを無効にできるものもある。
ステップ603で、書き込みのアドレスが第2リモート・ノードでキャッシュされているかどうかを判定する。これは、アドレス割り当てされるメモリ・ブロックがキャッシュされている他のノードの位置を見つけるノード・ディレクトリを調べることによって行える。メモリ・ブロックが第2リモート・ノードでキャッシュされている場合、ステップ607でそのアドレスを第2リモート・ノードに送信できる。ステップ604で、アドレスは第2リモート・ノードのキャッシュによりスヌープでき、アドレス割り当てされるメモリ・ブロックを収容するキャッシュを新たな書き込みデータに更新できる。他の実施例では、アドレス・ブロックを第2リモート・ノードのキャッシュで無効にしてもよい。ステップ605で、データは第1リモート・ノードの共有メモリに書き込める。
CPUによる書き込み操作は、主にCPUのノードの共有メモリの位置に行われる。このような場合、書き込みされるブロックのアドレスはリモート・ノードに送信する必要はない。CPUのノードのノード・ディレクトリを使って、他のノードのブロックの状態を判定できる。このため、ノード・ディレクトリを使って、ほとんどのアドレスを他のノードに送信することを回避できる。
CPUが独自のノードのメモリの位置に書き込みを行う場合、考慮すべきいくつかのケースがある。1つには、アドレス割り当てされるブロックがCPUに付加するキャッシュにすでにあり、ブロックがすでに変更されていることがある。この場合、キャッシュは単に新たなデータに更新すればよい。
2番目のケースでは、アドレス割り当てされるブロックがCPUに付加するキャッシュにすでにあるが、ブロックが変更されていない場合である。この場合、アドレスはそのノードの他のキャッシュでスヌープできる。当該キャッシュが変更ブロックを収容する場合、ブロックを無効化できる。ノード・ディレクトリも点検できる。ブロックがリモート・ノードでキャッシュされる場合、アドレスはリモート・ノードに送信されて、そこでスヌープできる。ブロックはリモート・キャッシュで無効化してもよい。さらにCPUのキャッシュは書き込みデータに更新できる。
3番目のケースでは、アドレス割り当てされるブロックがCPUに付加されるキャッシュにない。この場合、アドレスはノードの他のキャッシュでスヌープできる。いずれかの当該キャッシュがブロックを収容し、それが変更されている場合、データはこのキャッシュから読み出せる。ノード・ディレクトリも点検できる。ブロックがリモート・ノードでキャッシュされる場合、アドレスをリモート・ノードに送信して、そこでスヌープできる。いずれかのリモート・キャッシュがブロックを収容し、それが変更されている場合、データはそのキャッシュから読み出せる。どのキャッシュもブロックの変更コピーをもたない場合、ブロックはメモリから読み出せる。ブロックはCPUのキャッシュを除くすべてのキャッシュで無効にできる。またCPUのキャッシュは書き込みデータで更新できる。
始めに一貫的にアクセスしたデータで一貫的でないアクセスを行うことにより、システムの他のノードへのアドレスおよびコマンドの送信は一貫的でないアクセスのためになくすことができる。データ処理が完了した後、アクセラレータはデータを一貫的にライトバックできる。そのため、マルチプロセッシング・システムのノード全体のメモリ一貫性を維持するための帯域幅の消費を低減しながら、データの一貫性を維持できる。
上記述べたことは本発明の実施例に関係するが、発明の他の実施例および別の実施例もその基本的な範囲を逸脱することなく考えられ、その範囲は請求項によって判断される。
中央処理装置(CPU)に連結したアクセラレータを表す先行技術の図である。 発明のある実施例による例示的なマルチプロセッシング・システムの図である。 発明のある実施例による例示的なマルチプロセッシング・システムの別の図である。 あるノード内のCPUと別のノード内のアクセラレータによりアクセスされる共有メモリのブロックの図である。 共有メモリを収容するノードのディレクトリにエントリを行わなければならないかどうかを判定するために行う例示的な操作のフロー図である。 要求されるメモリ・ブロックの最も最近に変更されたコピーをアクセラレータに提供するために行う例示的な操作のフロー図である。 アクセラレータが共有メモリにライトバックするメモリのキャッシュしたコピーのすべてを更新するために行う例示的な操作のフロー図である。

Claims (6)

  1. 一又は複数の中央処理装置(CPU)、
    一又は複数のCPUの各々に対応するキャッシュ・メモリ、
    共有メモリ、および
    第1ノードの共有メモリに存在し、他のノードでキャッシュされる位置を特定するノード・ディレクトリとを有する少なくとも1つの第1ノードと、
    一又は複数のアクセラレータ、
    一又は複数のアクセラレータの各々に対応するキャッシュ・メモリ、および
    一又は複数のアクセラレータの各々に対応するローカル・ストアとを有する少なくとも1つの第2ノードとを有するシステムであって、
    前記第1ノードが、
    前記共有メモリの前記ブロックへのアクセス要求を受け取り、
    前記要求の受け取りに応答して、前記ブロックが第1ノード内でキャッシュされる、または別のノードでキャッシュされるかどうか、および前記ブロックが変更されるかどうかを判定し、
    アクセスが読み出しアクセスの場合、前記共有メモリの最も最近変更したブロックを提供し、および
    アクセスが書き込みアクセスの場合、前記メモリ・ブロックがキャッシュされる位置を更新または無効にするように構成され、
    前記第2ノードが、前記第1ノードの共有メモリのブロックへのアクセス要求を発行し、
    前記メモリ・ブロックの最も最近変更したコピーを提供するために、前記第1ノードが、
    前記ブロックの変更コピーが前記第1ノードでキャッシュされるかどうかを判定し、
    前記メモリ・ブロックの変更コピーがシステムの他のいずれかのノードでキャッシュされるかどうかを判定し、
    変更コピーが存在する場合、前記ブロックの最も最近変更したコピーを第2ノードに転送するように構成され、
    前記ブロックの変更コピーが前記第1ノードでキャッシュされるかどうかを判定するために、前記第1ノードのキャッシュが、
    要求に対応する前記ブロックのアドレスをスヌープして、前記ブロックが前記第1ノードでキャッシュされるかどうかを判定し、
    前記ブロックがキャッシュされる場合、前記ブロックが変更されているかどうかを判定するように構成され
    前記共有メモリの前記ブロックにアクセスするために、前記第2ノードがさらに、前記ブロックがキャッシュ・メモリに転送される、またはローカル・ストアに転送されるかどうかを示す信号を生成するように構成され、前記第1ノードがさらに信号に基づいてブロックを転送するように構成され、
    前記ブロックが前記第2ノードのキャッシュ・メモリに転送される場合、第1ノードがさらに、前記ノード・ディレクトリに、前記ブロックのアドレスとキャッシュ・メモリの位置を入力するように構成され、
    前記ブロックの変更コピーがシステムの他のいずれかのノードでキャッシュされるかどうかを判定するために、第1ノードが、
    前記ノード・ディレクトリを調べて、前記ブロックが他のいずれかのノードでキャッシュされるかどうかを判定し、
    前記ブロックが他のいずれかのノードでキャッシュされる場合、前記ブロックが他のノードで変更されていれば、他のノードから前記ブロックを検索するように構成される、
    システム。
  2. 書き込みアクセスに応答してメモリ・ブロックを無効または更新するために、前記第1ノードが、
    前記ブロックが前記第1ノードでキャッシュされるかどうかを判定し、
    前記ブロックがシステムの他のいずれかのノードでキャッシュされるかどうかを判定する、請求項1のシステム。
  3. 前記ブロックが前記第1ノードでキャッシュされるかどうかを判定するために、前記第1ノードのキャッシュを書き込みアクセスをスヌープするように構成される、請求項2のシステム。
  4. 前記ブロックがシステムの他のいずれかのノードでキャッシュされるかどうかを判定するために、前記第1ノードがノード・ディレクトリを調べるように構成される、請求項2のシステム。
  5. 前記第1ノードがさらに、
    前記ブロックが第3ノードでキャッシュされて変更されたという判定に応答して、前記ブロックのアドレスと前記第2ノードに関連する数を前記第3ノードに送信するように構成され、
    前記第3ノードがブロックを前記第2ノードに送信するように構成される、
    請求項1のシステム。
  6. 前記第1ノードが、前記ノード・ディレクトリを調べて、前記ブロックが前記第3ノードでキャッシュされるかどうか、および前記ブロックが変更されるかどうかを判定するように構成される、
    請求項5のシステム。
JP2012106285A 2006-03-23 2012-05-07 アクセラレータ用低コストのキャッシュ一貫性を維持するシステム Active JP5431525B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/388013 2006-03-23
US11/388,013 US7814279B2 (en) 2006-03-23 2006-03-23 Low-cost cache coherency for accelerators

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2007071882A Division JP5153172B2 (ja) 2006-03-23 2007-03-20 アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム

Publications (2)

Publication Number Publication Date
JP2012181860A JP2012181860A (ja) 2012-09-20
JP5431525B2 true JP5431525B2 (ja) 2014-03-05

Family

ID=38534940

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2007071882A Active JP5153172B2 (ja) 2006-03-23 2007-03-20 アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
JP2012106285A Active JP5431525B2 (ja) 2006-03-23 2012-05-07 アクセラレータ用低コストのキャッシュ一貫性を維持するシステム

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2007071882A Active JP5153172B2 (ja) 2006-03-23 2007-03-20 アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム

Country Status (4)

Country Link
US (2) US7814279B2 (ja)
JP (2) JP5153172B2 (ja)
CN (1) CN100495361C (ja)
TW (1) TWI432963B (ja)

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8156307B2 (en) * 2007-08-20 2012-04-10 Convey Computer Multi-processor system having at least one processor that comprises a dynamically reconfigurable instruction set
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US7925836B2 (en) * 2008-01-25 2011-04-12 Arm Limited Selective coherency control
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US20100115233A1 (en) * 2008-10-31 2010-05-06 Convey Computer Dynamically-selectable vector register partitioning
US8205066B2 (en) * 2008-10-31 2012-06-19 Convey Computer Dynamically configured coprocessor for different extended instruction set personality specific to application program with shared memory storing instructions invisibly dispatched from host processor
US8151061B2 (en) * 2009-03-10 2012-04-03 Intel Corporation Ensuring coherence between graphics and display domains
CN101853149A (zh) * 2009-03-31 2010-10-06 张力 多核系统中单生产者/单消费者队列的处理方法及装置
GB2470589A (en) * 2009-05-29 2010-12-01 Vestas Wind Sys As Branching spar wind turbine blade
US8615637B2 (en) * 2009-09-10 2013-12-24 Advanced Micro Devices, Inc. Systems and methods for processing memory requests in a multi-processor system using a probe engine
US8719547B2 (en) * 2009-09-18 2014-05-06 Intel Corporation Providing hardware support for shared virtual memory between local and remote physical memory
US8423745B1 (en) 2009-11-16 2013-04-16 Convey Computer Systems and methods for mapping a neighborhood of data to general registers of a processing element
CN102207919A (zh) 2010-03-30 2011-10-05 国际商业机器公司 加速数据传输的处理单元、芯片、计算设备和方法
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8745329B2 (en) * 2011-01-20 2014-06-03 Google Inc. Storing data across a plurality of storage nodes
US20120233410A1 (en) * 2011-03-13 2012-09-13 National Tsing Hua University Shared-Variable-Based (SVB) Synchronization Approach for Multi-Core Simulation
GB2489278B (en) * 2011-03-24 2019-12-25 Advanced Risc Mach Ltd Improving the scheduling of tasks to be performed by a non-coherent device
WO2013159288A1 (en) * 2012-04-25 2013-10-31 Intel Corporation Method and system for maintaining release consistency in shared memory programming
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
JPWO2014087654A1 (ja) * 2012-12-07 2017-01-05 日本電気株式会社 データ送信装置、データ送信方法、及び記録媒体
US9501408B2 (en) 2013-02-19 2016-11-22 Globalfoundries Inc. Efficient validation of coherency between processor cores and accelerators in computer systems
US11126372B2 (en) * 2013-04-01 2021-09-21 Hewlett Packard Enterprise Development Lp External memory controller
EP2981900B1 (en) * 2013-04-01 2022-02-09 Hewlett Packard Enterprise Development LP External memory controller
WO2015047314A1 (en) * 2013-09-27 2015-04-02 Intel Corporation Techniques to compose memory resources across devices
US9766916B2 (en) 2014-05-05 2017-09-19 International Business Machines Corporation Implementing coherent accelerator function isolation for virtualization
US9916259B1 (en) 2015-02-02 2018-03-13 Waymo Llc System and method for low latency communication
US10275853B2 (en) * 2015-04-15 2019-04-30 Intel Corporation Media hub device and cache
CN106293637B (zh) * 2015-05-28 2018-10-30 华为技术有限公司 数据移动、将数据设置为无效的方法、处理器及系统
WO2017000124A1 (zh) * 2015-06-29 2017-01-05 华为技术有限公司 目录中表项合并的方法以及设备
CN105094840B (zh) * 2015-08-14 2019-01-29 浪潮(北京)电子信息产业有限公司 一种基于缓存一致性原理的原子操作实现方法及装置
US10450859B2 (en) * 2015-08-24 2019-10-22 Bitswave Inc. Mud pulser with vertical rotational actuator
CN106250350A (zh) * 2016-07-28 2016-12-21 浪潮(北京)电子信息产业有限公司 一种基于numa架构的页缓存读取方法及系统
US9715470B1 (en) 2016-09-26 2017-07-25 International Business Machines Corporation Direct memory access between an accelerator and a processor using a coherency adapter
GB2554442B (en) * 2016-09-28 2020-11-11 Advanced Risc Mach Ltd Apparatus and method for providing an atomic set of data accesses
US10310897B2 (en) * 2016-09-30 2019-06-04 Intel Corporation Hardware accelerators and methods for offload operations
CN113157216B (zh) 2017-04-17 2024-02-06 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机可读存储介质
CN109101439B (zh) * 2017-06-21 2024-01-09 深圳市中兴微电子技术有限公司 一种报文处理的方法及装置
JP7238262B2 (ja) * 2018-03-27 2023-03-14 日本電気株式会社 計算機、半導体装置、及び制御方法
US10846235B2 (en) * 2018-04-28 2020-11-24 International Business Machines Corporation Integrated circuit and data processing system supporting attachment of a real address-agnostic accelerator
US10915445B2 (en) * 2018-09-18 2021-02-09 Nvidia Corporation Coherent caching of data for high bandwidth scaling
US11409654B2 (en) * 2019-09-05 2022-08-09 Micron Technology, Inc. Intelligent optimization of caching operations in a data storage device
KR20220049978A (ko) 2020-10-15 2022-04-22 삼성전자주식회사 장치-부착 메모리에 대한 액세스를 위한 시스템, 장치 및 방법
CN112765086B (zh) * 2020-12-30 2023-09-08 北京泽石科技有限公司 固态存储中一种基于cache一致性的软硬件交互方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW469376B (en) * 1995-11-06 2001-12-21 Ibm A method and apparatus for modifying data in a multi-processor data processing system
JP2000330965A (ja) * 1999-03-17 2000-11-30 Hitachi Ltd マルチプロセッサシステム及びそのメモリアクセストランザクションの転送方法
US6457068B1 (en) * 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
US6779049B2 (en) * 2000-12-14 2004-08-17 International Business Machines Corporation Symmetric multi-processing system with attached processing units being able to access a shared memory without being structurally configured with an address translation mechanism
US6760819B2 (en) * 2001-06-29 2004-07-06 International Business Machines Corporation Symmetric multiprocessor coherence mechanism
JP2003216597A (ja) * 2002-01-23 2003-07-31 Hitachi Ltd マルチプロセッサシステム
US7085897B2 (en) * 2003-05-12 2006-08-01 International Business Machines Corporation Memory management for a symmetric multiprocessor computer system
GB2403561A (en) * 2003-07-02 2005-01-05 Advanced Risc Mach Ltd Power control within a coherent multi-processor system
US7200689B2 (en) * 2003-07-31 2007-04-03 International Business Machines Corporation Cacheable DMA
JP4119380B2 (ja) * 2004-02-19 2008-07-16 株式会社日立製作所 マルチプロセッサシステム
CN101057223B (zh) * 2004-10-15 2011-09-14 索尼计算机娱乐公司 支持多处理器系统中的多个配置的方法和设备
US20060179277A1 (en) * 2005-02-04 2006-08-10 Flachs Brian K System and method for instruction line buffer holding a branch target buffer

Also Published As

Publication number Publication date
US20110029738A1 (en) 2011-02-03
JP2012181860A (ja) 2012-09-20
CN100495361C (zh) 2009-06-03
US8103835B2 (en) 2012-01-24
TWI432963B (zh) 2014-04-01
JP2007257637A (ja) 2007-10-04
US20070226424A1 (en) 2007-09-27
CN101042679A (zh) 2007-09-26
US7814279B2 (en) 2010-10-12
JP5153172B2 (ja) 2013-02-27
TW200821832A (en) 2008-05-16

Similar Documents

Publication Publication Date Title
JP5431525B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
US6694409B2 (en) Cache states for multiprocessor cache coherency protocols
KR100318104B1 (ko) 공유 인터벤션을 지원하는 비균등 메모리접근 데이터처리시스템
JP5714733B2 (ja) キャッシュ競合の解決
US6289420B1 (en) System and method for increasing the snoop bandwidth to cache tags in a multiport cache memory subsystem
US9170946B2 (en) Directory cache supporting non-atomic input/output operations
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
KR101497002B1 (ko) 스누프 필터링 메커니즘
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
US20110004729A1 (en) Block Caching for Cache-Coherent Distributed Shared Memory
GB2439650A (en) Snoop filter that maintains data coherency information for caches in a multi-processor system by storing the exclusive ownership state of the data
JPH08115260A (ja) データ処理システムのi/oチャネル・コントローラのコヒーレンシと同期化装置及び方法
JP2006277762A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
JPH08328957A (ja) マルチプロセッシング・システムにおけるキャッシュ・パフォーマンス向上のためのシステムおよび方法
US6922755B1 (en) Directory tree multinode computer system
US7308538B2 (en) Scope-based cache coherence
US6807608B2 (en) Multiprocessor environment supporting variable-sized coherency transactions
US20080082756A1 (en) Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems
CN111414318B (zh) 一种基于提前更新的数据一致性实现方法
CN117529899A (zh) 共享存储系统、装置和用于无效缓存数据的方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130326

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130409

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130709

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130719

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131009

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131204

R150 Certificate of patent or registration of utility model

Ref document number: 5431525

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150