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

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

Info

Publication number
JP2007257637A
JP2007257637A JP2007071882A JP2007071882A JP2007257637A JP 2007257637 A JP2007257637 A JP 2007257637A JP 2007071882 A JP2007071882 A JP 2007071882A JP 2007071882 A JP2007071882 A JP 2007071882A JP 2007257637 A JP2007257637 A JP 2007257637A
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.)
Granted
Application number
JP2007071882A
Other languages
English (en)
Other versions
JP5153172B2 (ja
Inventor
Andrew Henry Wottreng
アンドリュー、ヘンリー、ウォットレング
Scott Douglas Clark
スコット、ダグラス、クラーク
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 JP2007257637A publication Critical patent/JP2007257637A/ja
Application granted granted Critical
Publication of JP5153172B2 publication Critical patent/JP5153172B2/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)

Abstract

【課題】アクセラレータとCPUとの一貫性を維持しながら通信によるノード間の帯域幅の消費を低減する。
【解決手段】CPUおよびアクセラレータはマルチプロセッシング環境において個別のノードにクラスターできる。共有メモリ・デバイスを収容する各ノードは、他のノードでキャッシュされたかもしれない共有メモリのブロックを追跡するディレクトリを維持できる。そのため、コマンドとアドレスは、メモリ位置があるノード以外でキャッシュされたときに限り、他のノードのプロセッサおよびアクセラレータに送信できる。加えて、アクセラレータは一般的にCPUと同じデータにはアクセスしないため、最初の読み出し、書き込み、および同期の操作のみを他のノードに送信できる。データへの中間アクセスは一貫性を保たないで行える。その結果、一貫性を維持するために消費するチップ間の帯域幅を低減できる。
【選択図】図2

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 (20)

  1. 一又は複数の中央処理装置(CPU)、
    一又は複数のCPUの各々に対応するキャッシュ・メモリ、
    共有メモリ、および
    第1ノードの共有メモリに存在し、他のノードでキャッシュされる位置を特定するノード・ディレクトリを有する、
    少なくとも1つの第1ノードと、
    一又は複数のアクセラレータ、
    一又は複数のアクセラレータの各々に対応するキャッシュ・メモリ、および
    一又は複数のアクセラレータの各々に対応するローカル・ストアを有する、
    少なくとも1つの第2ノードとのメモリ一貫性を維持する方法であって、該方法が
    前記共有メモリのブロックを前記第1ノードから前記第2ノードの前記アクセラレータのローカル・ストアまたはキャッシュ・メモリの1つに一貫性を保って転送するステップと、
    前記ローカル・ストアの転送されたブロックで一又は複数の操作を一貫性を保たないで行うステップと、
    前記一又は複数の操作を行った後、前記メモリのブロックを前記共有メモリ・デバイスに一貫性を保ってライトバックするステップとを有する、
    方法。
  2. 前記第1ノードの共有メモリのブロックを前記第2ノードに一貫性を保って転送するステップが、
    前記メモリ・ブロックが前記第2ノードの前記キャッシュ・メモリまたは前記第2ノードの前記ローカル・ストアに転送するかどうかを判定するステップと、
    前記メモリ・ブロックを前記キャッシュ・メモリに転送するべきと判定される場合、前記メモリ・ブロックのアドレスと前記キャッシュ・メモリの位置を前記第1ノードの前記ノード・ディレクトリに入力するステップとを有する、
    請求項1の方法。
  3. 前記メモリ・ブロックを前記第2ノードの前記キャッシュ・メモリに転送する、または前記第2ノードの前記ローカル・ストアにするかどうかを、転送の位置を示す第2ノードからの信号に基づいて判定するステップを有する、請求項2の方法。
  4. 前記第1ノードの前記共有メモリの一又は複数のブロックを前記第2ノードの一又は複数の前記ローカル・ストアに一貫性を保って転送するステップが、
    前記第2ノードにより、前記第1ノードに、前記共有メモリから所望のメモリ・ブロックのアドレスを送るステップと、
    前記第1ノードの一又は複数のキャッシュ・メモリでアドレスをスヌープして、前記メモリ・ブロックが第1ノード内でキャッシュされるかどうかを判定するステップと、
    前記ノード・ディレクトリを調べて、前記メモリ・ブロックがキャッシュされうる前記第1ノード以外の位置を見つけるステップと、
    前記メモリ・ブロックが前記第1ノード以外の位置でキャッシュされる場合、前記第1ノード以外の位置にブロックのアドレスを送るステップと、
    キャッシュされた位置で前記メモリ・ブロックが変更されるかどうかを判定するステップと、
    前記メモリブロックが変更されている場合、最も最近変更したブロックを検索するステップとを有する、
    請求項1の方法。
  5. 一又は複数の操作を行った後、メモリの前記ブロックを共有メモリ・デバイスに一貫性を保ってライトバックするステップが、
    前記第2ノードにより、前記第1ノードに、前記共有メモリに書き込むべき前記メモリ・ブロックのアドレスを送るステップと、
    前記第1ノードの一又は前記複数のキャッシュ・メモリでアドレスをスヌープして、前記メモリ・ブロックが前記第1ノード内でキャッシュされるかどうかを判定するステップと、
    前記ノード・ディレクトリを調べて、前記メモリ・ブロックが前記第1ノード以外の位置でキャッシュされるかどうかを判定するステップと、
    前記メモリ・ブロックが前記第1ノード以外の位置でキャッシュされる場合、前記ブロックのアドレスを前記第1ノード以外の位置に送るステップと、
    キャッシュされた位置に前記ブロックを書き込んで、キャッシュを更新するステップと、
    前記ブロックを前記第1ノードの前記共有メモリに書き込むステップとを有する、
    請求項1の方法。
  6. 一又は複数の中央処理装置(CPU)、
    一又は複数のCPUの各々に対応するキャッシュ・メモリ、
    共有メモリ、および
    第1ノードの共有メモリに存在し、他のノードでキャッシュされる位置を特定するノード・ディレクトリを有する、
    少なくとも1つの第1ノードと、
    一又は複数のアクセラレータ、
    一又は複数のアクセラレータの各々に対応するキャッシュ・メモリ、および
    一又は複数のアクセラレータの各々と対応するローカル・ストアを有する、
    少なくとも1つの第2ノードとの間にメモリ一貫性を維持する方法であって、該方法が、
    一又は複数の中央処理装置の1つによって、前記共有メモリのブロックへのアクセス要求を受け取るステップと、
    要求の受け取りに応答して、前記ブロックが別の位置でキャッシュされるかどうか、および前記ブロックが変更されているかどうかを判定するステップと、
    前記ブロックが前記第2ノードでキャッシュされ変更されている場合、前記ブロックのアドレスを第2ノードに送信するステップとを有する、
    方法。
  7. 前記ブロックが別の位置でキャッシュされているかどうかを判定するステップが、
    一又は複数のCPUに対応する前記キャッシュ・メモリで前記ブロックのアドレスをスヌープして、前記ブロックが前記第1ノード内でキャッシュされているかどうかを判定するステップと、
    前記ノード・ディレクトリを調べて、前記ブロックが前記第1ノード以外のノードでキャッシュされるかどうか、および前記ブロックが変更されるかどうかを判定するステップとを有する、
    請求項6の方法。
  8. さらに、前記変更ブロックを収容するキャッシュから前記変更ブロックを検索するステップを有する、請求項6の方法。
  9. さらに、要求が書き込み操作だった場合に、前記ブロックを収容する一又は複数のキャッシュのブロックを無効にするステップを有する、請求項6の方法。
  10. 一又は複数の中央処理装置(CPU)、
    一又は複数のCPUの各々に対応するキャッシュ・メモリ、
    共有メモリ、および
    第1ノードの共有メモリに存在し、他のノードでキャッシュされる位置特定するノード・ディレクトリとを有する少なくとも1つの第1ノードと、
    一又は複数のアクセラレータ、
    一又は複数のアクセラレータの各々に対応するキャッシュ・メモリ、および
    一又は複数のアクセラレータの各々に対応するローカル・ストアとを有する少なくとも1つの第2ノードとを有するシステムであって、
    前記第1ノードが、
    前記共有メモリの前記ブロックへのアクセス要求を受け取り、
    前記要求の受け取りに応答して、前記ブロックが第1ノード内でキャッシュされる、または別のノードでキャッシュされるかどうか、および前記ブロックが変更されるかどうかを判定し、
    アクセスが読み出しアクセスの場合、前記共有メモリの最も最近変更したブロックを提供し、および
    アクセスが書き込みアクセスの場合、前記メモリ・ブロックがキャッシュされる位置を更新または無効にするように構成され、
    前記第2ノードが、
    前記第1ノードの共有メモリのブロックへのアクセス要求を一貫性を保って発行し、および
    前記ブロックがローカル・ストアに転送される場合、ブロックで一貫性を保たないで操作を行うように構成される、
    システム。
  11. 前記共有メモリの前記ブロックにアクセスするために、前記第2ノードがさらに、前記ブロックがキャッシュ・メモリに転送される、またはローカル・ストアに転送されるかどうかを示す信号を生成するように構成され、前記第1ノードがさらに信号に基づいてブロックを転送するように構成される、請求項10のシステム。
  12. 前記ブロックが前記第2ノードのキャッシュ・メモリに転送される場合、第1ノードがさらに、前記ノード・ディレクトリに、前記ブロックのアドレスとキャッシュ・メモリの位置を入力するように構成される、請求項11のシステム。
  13. 前記メモリ・ブロックの最も最近変更したコピーを提供するために、前記第1ノードが、
    前記ブロックの変更コピーが前記第1ノードでキャッシュされるかどうかを判定し、
    前記メモリ・ブロックの変更コピーがシステムの他のいずれかのノードでキャッシュされるかどうかを判定し、
    変更コピーが存在する場合、前記ブロックの最も最近変更したコピーを第2ノードに転送するように構成される、請求項10のシステム。
  14. 前記ブロックの変更コピーが第1ノードでキャッシュされるかどうかを判定するために、第1ノードのキャッシュが、
    要求に対応する前記ブロックのアドレスをスヌープして、前記ブロックが第1ノードでキャッシュされるかどうかを判定し、
    前記ブロックがキャッシュされる場合、前記ブロックが変更されているかどうかを判定するように構成される、請求項13のシステム。
  15. 前記ブロックの変更コピーがシステムの他のいずれかのノードでキャッシュされるかどうかを判定するために、第1ノードが、
    前記ノード・ディレクトリを調べて、前記ブロックが他のいずれかのノードでキャッシュされるかどうかを判定し、
    前記ブロックが他のいずれかのノードでキャッシュされる場合、前記ブロックが他のノードで変更されていれば、他のノードから前記ブロックを検索するように構成される、請求項13のシステム。
  16. 書き込みアクセスに応答してメモリ・ブロックを無効または更新するために、前記第1ノードが、
    前記ブロックが前記第1ノードでキャッシュされるかどうかを判定し、
    前記ブロックがシステムの他のいずれかのノードでキャッシュされるかどうかを判定する、請求項10のシステム。
  17. 前記ブロックが前記第1ノードでキャッシュされるかどうかを判定するために、前記第1ノードのキャッシュを書き込みアクセスをスヌープするように構成される、請求項16のシステム。
  18. 前記ブロックがシステムの他のいずれかのノードでキャッシュされるかどうかを判定するために、前記第1ノードがノード・ディレクトリを調べるように構成される、請求項16のシステム。
  19. 前記第1ノードがさらに、
    前記ブロックが第3ノードでキャッシュされて変更されたという判定に応答して、前記ブロックのアドレスと前記第2ノードに関連する数を前記第3ノードに送信するように構成され、
    前記第3ノードがブロックを前記第2ノードに送信するように構成される、
    請求項10のシステム。
  20. 前記第1ノードが、前記ノード・ディレクトリを調べて、前記ブロックが前記第3ノードでキャッシュされるかどうか、および前記ブロックが変更されるかどうかを判定するように構成される、
    請求項19のシステム。
JP2007071882A 2006-03-23 2007-03-20 アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム Active JP5153172B2 (ja)

Applications Claiming Priority (2)

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

Related Child Applications (1)

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

Publications (2)

Publication Number Publication Date
JP2007257637A true JP2007257637A (ja) 2007-10-04
JP5153172B2 JP5153172B2 (ja) 2013-02-27

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 After (1)

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

Country Status (4)

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

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011515001A (ja) * 2008-03-28 2011-05-12 インテル コーポレイション 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
JP2012203911A (ja) * 2011-03-24 2012-10-22 Arm Ltd 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP2013504822A (ja) * 2009-09-10 2013-02-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ要求を処理するためのシステム及び方法
JP2015135696A (ja) * 2009-09-18 2015-07-27 インテル コーポレイション ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
JP2019175006A (ja) * 2018-03-27 2019-10-10 日本電気株式会社 計算機、半導体装置、制御方法及びプログラム

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8561037B2 (en) 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US8095735B2 (en) 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US9015399B2 (en) 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
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
US9710384B2 (en) * 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
US7925836B2 (en) * 2008-01-25 2011-04-12 Arm Limited Selective coherency control
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
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
CN104321750B (zh) * 2012-04-25 2019-03-08 英特尔公司 在共享存储器编程中保持释放一致性的方法和系统
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
WO2014087654A1 (ja) * 2012-12-07 2014-06-12 日本電気株式会社 データ送信装置、データ送信方法、及び記録媒体
US9501408B2 (en) 2013-02-19 2016-11-22 Globalfoundries Inc. Efficient validation of coherency between processor cores and accelerators in computer systems
WO2014163612A1 (en) * 2013-04-01 2014-10-09 Hewlett-Packard Development Company, L.P. External memory controller
US11126372B2 (en) * 2013-04-01 2021-09-21 Hewlett Packard Enterprise Development Lp External memory controller
CN105556493B (zh) 2013-09-27 2018-12-11 英特尔公司 用于跨设备组合存储器资源的设备、方法
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 华为技术有限公司 数据移动、将数据设置为无效的方法、处理器及系统
CN107533512B (zh) * 2015-06-29 2020-07-28 华为技术有限公司 目录中表项合并的方法以及设备
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
CN108733315B (zh) 2017-04-17 2021-06-04 伊姆西Ip控股有限责任公司 用于存储管理的方法、设备和计算机可读存储介质
CN109101439B (zh) * 2017-06-21 2024-01-09 深圳市中兴微电子技术有限公司 一种报文处理的方法及装置
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一致性的软硬件交互方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160892A (ja) * 1995-11-06 1997-06-20 Internatl Business Mach Corp <Ibm> データ変更要求を処理するための方法及びシステム
JP2003508850A (ja) * 1999-08-30 2003-03-04 インテル・コーポレーション ローカルi/oバスに近接するブリッジでの入出力(i/o)アドレス変換
JP2005025726A (ja) * 2003-07-02 2005-01-27 Arm Ltd コヒーレント多重処理システムにおける電力制御
JP2005056401A (ja) * 2003-07-31 2005-03-03 Internatl Business Mach Corp <Ibm> キャッシュ可能なdma
JP2005234854A (ja) * 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム
JP2006120147A (ja) * 2004-10-15 2006-05-11 Sony Computer Entertainment Inc マルチプロセッサシステムで多重構成をサポートする方法及び装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000330965A (ja) * 1999-03-17 2000-11-30 Hitachi Ltd マルチプロセッサシステム及びそのメモリアクセストランザクションの転送方法
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
US20060179277A1 (en) * 2005-02-04 2006-08-10 Flachs Brian K System and method for instruction line buffer holding a branch target buffer

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09160892A (ja) * 1995-11-06 1997-06-20 Internatl Business Mach Corp <Ibm> データ変更要求を処理するための方法及びシステム
JP2003508850A (ja) * 1999-08-30 2003-03-04 インテル・コーポレーション ローカルi/oバスに近接するブリッジでの入出力(i/o)アドレス変換
JP2005025726A (ja) * 2003-07-02 2005-01-27 Arm Ltd コヒーレント多重処理システムにおける電力制御
JP2005056401A (ja) * 2003-07-31 2005-03-03 Internatl Business Mach Corp <Ibm> キャッシュ可能なdma
JP2005234854A (ja) * 2004-02-19 2005-09-02 Hitachi Ltd マルチプロセッサシステム
JP2006120147A (ja) * 2004-10-15 2006-05-11 Sony Computer Entertainment Inc マルチプロセッサシステムで多重構成をサポートする方法及び装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
CSND200100602002; 鈴置 雅一: 'CPUのトレンド PlayStation2用マイクロプロセッサEmotion Engine' bit Vol.32 No.1 第32巻, 20000101, p.11-18, 共立出版株式会社 *
JPN6012020590; 鈴置 雅一: 'CPUのトレンド PlayStation2用マイクロプロセッサEmotion Engine' bit Vol.32 No.1 第32巻, 20000101, p.11-18, 共立出版株式会社 *

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10078590B2 (en) 2008-03-28 2018-09-18 Intel Corporation Technique to share information among different cache coherency domains
JP2014032708A (ja) * 2008-03-28 2014-02-20 Intel Corp 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US10204051B2 (en) 2008-03-28 2019-02-12 Intel Corporation Technique to share information among different cache coherency domains
JP2013054789A (ja) * 2008-03-28 2013-03-21 Intel Corp 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
JP2016085766A (ja) * 2008-03-28 2016-05-19 インテル コーポレイション 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
JP2014096176A (ja) * 2008-03-28 2014-05-22 Intel Corp 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
JP2014167831A (ja) * 2008-03-28 2014-09-11 Intel Corp 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US9665488B2 (en) 2008-03-28 2017-05-30 Intel Corporation Technique to share information among different cache coherency domains
JP2019012563A (ja) * 2008-03-28 2019-01-24 インテル コーポレイション 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
JP2011515001A (ja) * 2008-03-28 2011-05-12 インテル コーポレイション 異なるキャッシュ・コヒーレンス・ドメインの間の情報共有技法
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9946650B2 (en) 2008-03-28 2018-04-17 Intel Corporation Technique to share information among different cache coherency domains
JP2013504822A (ja) * 2009-09-10 2013-02-07 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド メモリ要求を処理するためのシステム及び方法
JP2015135696A (ja) * 2009-09-18 2015-07-27 インテル コーポレイション ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
JP2012203911A (ja) * 2011-03-24 2012-10-22 Arm Ltd 非同期のデバイスによって実行されるタスクのスケジューリングの向上
JP2019175006A (ja) * 2018-03-27 2019-10-10 日本電気株式会社 計算機、半導体装置、制御方法及びプログラム
JP7238262B2 (ja) 2018-03-27 2023-03-14 日本電気株式会社 計算機、半導体装置、及び制御方法

Also Published As

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

Similar Documents

Publication Publication Date Title
JP5431525B2 (ja) アクセラレータ用低コストのキャッシュ一貫性を維持するシステム
US6694409B2 (en) Cache states for multiprocessor cache coherency protocols
KR100318104B1 (ko) 공유 인터벤션을 지원하는 비균등 메모리접근 데이터처리시스템
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
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
KR101497002B1 (ko) 스누프 필터링 메커니즘
US6272602B1 (en) Multiprocessing system employing pending tags to maintain cache coherence
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
JP2006277762A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
US6922755B1 (en) Directory tree multinode computer system
US7308538B2 (en) Scope-based cache coherence
US8732410B2 (en) Method and apparatus for accelerated shared data migration
US20080082756A1 (en) Mechanisms and methods of using self-reconciled data to reduce cache coherence overhead in multiprocessor systems
US6546469B2 (en) Multiprocessor system snoop scheduling mechanism for limited bandwidth snoopers
US6636948B2 (en) Method and system for a processor to gain assured ownership of an up-to-date copy of data

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120424

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120507

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120724

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120827

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120925

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121018

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121204

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

Free format text: PAYMENT UNTIL: 20151214

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5153172

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150