JP2013504822A - メモリ要求を処理するためのシステム及び方法 - Google Patents

メモリ要求を処理するためのシステム及び方法 Download PDF

Info

Publication number
JP2013504822A
JP2013504822A JP2012528928A JP2012528928A JP2013504822A JP 2013504822 A JP2013504822 A JP 2013504822A JP 2012528928 A JP2012528928 A JP 2012528928A JP 2012528928 A JP2012528928 A JP 2012528928A JP 2013504822 A JP2013504822 A JP 2013504822A
Authority
JP
Japan
Prior art keywords
memory
processing unit
cache
address
request
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2012528928A
Other languages
English (en)
Other versions
JP6196445B2 (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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices Inc
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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JP2013504822A publication Critical patent/JP2013504822A/ja
Application granted granted Critical
Publication of JP6196445B2 publication Critical patent/JP6196445B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • 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
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/001Arbitration of resources in a display system, e.g. control of access to frame buffer by video controller and/or main processor
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/39Control of the bit-mapped memory
    • G09G5/393Arrangements for updating the contents of the bit-mapped memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2350/00Solving problems of bandwidth in display systems
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Human Computer Interaction (AREA)
  • Computer Graphics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Hardware Redundancy (AREA)
  • Multi Processors (AREA)
  • Digital Computer Display Output (AREA)

Abstract

【解決手段】
処理システムが提供される。処理システムは、第1のメモリに結合される第1の処理ユニットと、第2のメモリに結合される第2の処理ユニットと、を含む。第2のメモリは、コヒーレントメモリと、第2の処理ユニットにプライベートなプライベートメモリと、を備える。
【選択図】図2

Description

本発明は処理環境に関し、より特定的には多重プロセッサシステムにおいてメモリ要求を処理することに関する。
幾つかのグラフィクス処理システムは、多重処理ユニット、例えば幾つかのグラフィクス処理タスクを1つ以上のグラフィクス処理ユニット(GPU)に割り当てる中央処理ユニット(CPU)を含む。例えばCPUは、レンダリングタスク(rendering tasks)を1つ以上のGPUに割り当てることができる。
幾つかのシステムにおいては、CPU及び各GPUは、各々それら自身に関連するメモリを有している。例えばCPU及びGPUを有するシステムにおいては、CPUはシステムメモリに結合され得るし、またGPUはローカルメモリに結合され得る。システムメモリはコヒーレントメモリを含むことができる。しかし、多くのシステムにおいて、GPUローカルメモリへのアクセスはコヒーレントではない。コヒーレンシが必要とされる場合には、コヒーレンシを確実にして性能オーバヘッドを生じさせるために、ソフトウエアが用いられる必要があるかもしれない。
従って、コヒーレンシを確実にするためにソフトウエアを用いることなしにGPUのローカルメモリのコヒーレントアクセスを可能にする方法及びシステムが必要とされている。
ここに説明される実施形態は、概して、多重プロセッサシステムにおいてコヒーレントメモリを含むメモリを提供することに関連している。例えば、本発明の実施形態は、グラフィクス処理ユニット(GPU)に結合されるメモリ内にコヒーレントメモリを設けることに関連し得る。
1つの実施形態においては、処理システムが提供される。処理システムは、第1のメモリに結合される第1の処理ユニットと、第2のメモリに結合される第2の処理ユニットと、を含む。第2のメモリは、コヒーレントメモリと、第2の処理ユニットにプライベートなプライベートメモリと、を備える。
別の実施形態においては、メモリ要求を処理する方法は、メモリ要求に関連するメモリワードがどこにあるのかを決定することと、メモリ内にあるメモリワードに応答して、メモリにアクセスして要求を処理することと、を含む。メモリは、コヒーレントメモリと、第1の処理ユニットにプライベートなプライベートメモリと、を含む。
本発明の更なる特徴及び利点の他、本発明の種々の実施形態の構成及び動作は、添付の図面を参照して以下に詳細に説明される。
ここに組み込まれ且つ出願書類の一部をなす添付の図面は、本発明を示し、そして明細書と共に、本発明の原理を説明すること及び関連分野を含めた当業者が本発明を作りそして使用するのを可能にすることに更に役立つ。
図1は本発明の実施形態に従う処理システムを示す図(その1)である。 図2は本発明の実施形態に従う処理システムを示す図(その2)である。 図3は本発明の実施形態に従う処理システムを示す図(その3)である。
図4は本発明の実施形態に従うグラフィクス処理ユニットを示す図である。
図5は本発明の実施形態に従いメモリ要求を処理する例示的な方法のフローチャート(その1)である。 図6は本発明の実施形態に従いメモリ要求を処理する例示的な方法のフローチャート(その2)である。
図7は本発明の実施形態に従う処理システムを示す図(その4)である。 図8は本発明の実施形態に従う処理システムを示す図(その5)である。
添付の図面を参照して本発明が説明されることになる。概して、ある要素が最初に現れる図面は、典型的には対応する参照番号の一番左の単一又は複数の桁によって示される。
概要及び要約の欄ではなく詳細な説明の欄が特許請求の範囲を解釈するために用いられることを意図されていることが理解されるべきである。概要及び要約の欄は、発明者によって検討されているような本発明の1つ以上であるが全てではない例示的な実施形態を記述している場合があり、従って、本発明及び添付の特許請求の範囲を限定することを意図されるものでは決してない。
特定の実施形態の上述した説明は、本発明の一般的性質を十分に明らかにするであろうから、他者は、当業者の知識を適用することによって、過度の実験を必要とせず、本発明の一般的概念から逸脱することなく、そのような特定の実施形態を容易に修正し且つ/又は種々の応用に適用することができる。従って、そのような適用及び修正は、ここに提示されている教示及び指針に基いて、開示されている実施形態と均等なものの意味及び範囲の範疇にあることが意図されている。ここでの用語等は、本出願書類の用語等が教示及び指針の下で当業者によって解釈されるべきであるという点において、説明を目的としたものであって限定を目的としていないことが理解されるべきである。
図1は標準的な処理システム100を示している。処理システム100は、中央処理ユニット(CPU)102、グラフィクス処理ユニット(GPU)104、システムメモリ118、及びGPUローカルメモリ130を含む。CPU102は、実行エンジン106、アドレス処理ユニット108、キャッシュ110、及びノースブリッジ(NB)111を含む。GPU104は、実行エンジン120、キャッシュ122、アドレス処理ユニット124、及びノースブリッジ125を含む。システムメモリ118は、コヒーレントメモリ132及び非コヒーレントメモリ134を含む。GPUローカルメモリ130は、可視メモリ136及びプライベートメモリ138を含む。関連分野を含めた当業者によって理解されるであろうように、処理システム100は図1に示される要素に限定されず、図1に示されるよりも多くの要素を含み得る。
実行エンジン106は、CPU102の動作の間、種々のコマンドを実行する。これらのコマンドの幾つかは、記憶されている情報にアクセスするためのメモリ要求を発行するように実行エンジン106に要求する。実行エンジン106がメモリワードに対するメモリ要求を発行すると、アドレス処理ユニット108は、最初に、メモリ要求に対応する仮想アドレスを物理アドレスにトランスレートする。アドレス処理ユニット108はまた、仮想アドレス及び/又は物理アドレスを検査して、要求されたメモリワードがどこにあるかを決定する。要求されたメモリワードがコヒーレントメモリ132内にある場合には、キャッシュ110は、メモリ要求をサービスすることができるかどうかを決定するためにクエリされる(queried)。例えば、キャッシュ110は、要求されたメモリワードを保持しているかどうか、そして保持している場合に、要求されたメモリワードを保持しているキャッシュラインが有効であるかを決定するために、クエリされ得る。キャッシュ110がメモリ要求をサービスすることができない場合、即ちキャッシュミスの場合には、メモリ要求はコヒーレントメモリ132によってサービスされる必要がある。具体的には、NB111がコヒーレントメモリ132にアクセスして要求をサービスする。ある実施形態においては、NB111は、CPU102とシステム100の他の要素との間でのマルチプレクサとして作用し得る。幾つかの実施形態においては、NB111は「メモリ制御器」と称されることがある。要求されたメモリワードが非コヒーレントメモリ134内にあるとアドレス処理ユニット108が決定した場合、NB111は非コヒーレントメモリ134にアクセスして要求をサービスする(先ずキャッシュ110にアクセスすることなしに)。
要求されたメモリワードは、GPUローカルメモリ130内にある場合もある。例えば、要求されたメモリワードは可視メモリ136内にあることがある。ある実施形態においては、可視メモリ136へのCPU102からの要求は、メモリマッピングされた(memory mapped)I/O(MMIO)要求であり得る。その場合、NB111は要求をNB125に伝える(例えば周辺要素相互接続エクスプレス(peripheral component interconnect express)(PCIE)パスを介して)。ある実施形態においては、NB125はNB111と実質的に同様である。NB125は可視メモリ136にアクセスして要求されたメモリワードを取得し、そしてメモリワードをNB111へ戻す。
GPUプライベートメモリ138はGPU104にプライベートである(即ちCPU102はアクセスできない)。従って、要求されたメモリワードがメモリ138内にある場合には、アドレス処理ユニット108は、CPU102がプライベートメモリ138にアクセスすることを阻むためにフォールト(fault)を生じさせることになる。
CPU102と同様に、GPU104の実行エンジン120は、GPU104の動作の間、種々のコマンドを実行する。これらのコマンドの1つ以上に応答して、実行エンジン120は、メモリ要求を作成することができる。発行されるメモリ要求は、仮想要求メモリアドレスを含む。図1に示されるように、GPU104は先ず、要求されたメモリワードを保持しているかどうかをキャッシュ122にクエリする(仮想メモリアドレスを用いて)。キャッシュ122がメモリ要求を保持していない、あるいは他の理由でメモリ要求をサービスすることができない場合には、メモリワードはメモリからリトリーブされる(retrieved)必要がある。
アドレス処理ユニット124は、仮想アドレスを物理アドレスにトランスレートし、そして要求されたメモリワードがどこにあるのかを決定する。例えば、要求されたメモリワードがGPUローカルメモリ130の可視メモリ136内又はプライベートメモリ138内にあるとアドレス処理ユニット124が決定すると、NB125はGPUローカルメモリ130と協働して要求をサービスする。
要求されたメモリワードがシステムメモリ118内にある場合には、NB125は、要求されたメモリワードを取得するための要求をCPU102に送る。例えば、要求されたメモリワードがコヒーレントメモリ132内にある場合には、NB111はコヒーレントメモリ132にアクセスして要求をサービスすることができる。別の実施形態においては、NB111はキャッシュ110にアクセスしてそのような要求をサービスすることができる。要求されたメモリワードが非コヒーレントメモリ134内にある場合には、NB111は非コヒーレントメモリ134にアクセスして要求をサービスすることができる。
GPUローカルメモリ130への全てのアクセスは非コヒーレントである。コヒーレンシが要求される場合には、それはソフトウエアによって提供される必要があり、結果として相当のオーバへットをもたらす。また、GPUローカルメモリ130内に記憶される情報をキャッシュするキャッシュ122は、非コヒーレントキャッシュである。他のデバイスとのコヒーレントな共有を可能にするためにMESIプロトコル等のプロトコルを組み込んでいるCPU102のキャッシュ110とは対照的に、GPU104のキャッシュ122は、異なるデバイスの間での共有を可能にするプロトコルを実装している。
ある実施形態においては、CPU102及びGPU104の各々内には、書き込み結合(write combining)モジュールが設けられ得る。そうすることで、非コヒーレントメモリへの書き込み要求のための帯域幅がコヒーレントメモリへの書き込み要求のための帯域幅と同様になり得るように、多重書き込み要求を結合することができる。しかし、読み出し要求に対しては、同様のキャッシング最適化は多くの場合に利用可能ではない。従って、非コヒーレントメモリへの読み出し要求(例えばCPU102から可視メモリ136への)は、コヒーレントメモリへの読み出し要求よりも相当小さな帯域幅である可能性がある。幾つかの実施形態においては、非コヒーレントメモリへの読み出し要求は、「非パフォーマント(non-performant)」として指定されることがあり、また、もしあったとしても用いられるのは稀である。事実、ある実施形態においては、CPU102から可視メモリ136への読み出し要求は、アドレス処理ユニット108がフォールトを生じさせ得るほどに小さい帯域であろうから、CPU102が可視メモリ136から読み出すことを阻むかもしれない。
ここに説明される実施形態においては、コヒーレントメモリがGPUローカルメモリ内に設けられる。従って、GPUローカルメモリへの幾つかの要求はハードウエアコヒーレントであることができ、即ちソフトウエアオーバヘッドを必要とせずにハードウエアによってコヒーレンシが確保される。更なる実施形態においては、CPUのコヒーレントメモリ(例えばシステムメモリ内に含まれる)及びGPUローカルメモリ内に含まれるコヒーレントメモリは、システムに対してコードを書いているプログラマにとって本質的に区別がつかないであろう。この単純化されたメモリモデルは、コヒーレントメモリにアクセスするプログラムはもはやどのコヒーレントメモリがアクセスされるべきであるのかを指定していないことを理由として、プログラミングをより簡単にすることができる。更に、コヒーレンスを確保するのにソフトウエアオーバヘッドにはもはや依存していないし、しかも読み出し要求は、それらがコヒーレントメモリにアクセスする場合に、それらが非コヒーレントメモリにアクセスする場合よりも相当に大きな帯域幅で行われ得るので、ここに説明されるシステムはまた、性能優位性を有し得る。
図2は本発明の実施形態に従う処理システム200を示している。図2に示されるように、処理システム200は、第1のプロセッサ202、第2のプロセッサ204、システムメモリ218、及びメモリ234を含む。図2に示される実施形態においては、第1及び第2のプロセッサ202及び204は、それぞれCPU及びGPUである。
CPU202は、実行エンジン206、アドレス処理ユニット208、キャッシュ210、NB211、プローブエンジン214、及びプローブフィルタ216を含む。ある実施形態においては、実行エンジン206、アドレス処理ユニット208、キャッシュ210、及びNB211は、図1に示されるCPU102の実行エンジン106、アドレス処理ユニット108、キャッシュ110、及びNB111とそれぞれ実質的に同様である。
図2に示されるように、GPU204は、実行エンジン220、キャッシュ222、アドレス処理ユニット224、プローブエンジン228、逆ルックアップテーブル230、及びプローブフィルタ232を含む。ある実施形態においては、実行エンジン220、キャッシュ222、アドレス処理ユニット224、及びNB225は、図1に示されるGPU104の実行エンジン120、キャッシュ122、アドレス処理ユニット124、及びNB125とそれぞれ実質的に同様である。
システムメモリ218は、非コヒーレントメモリ240及びコヒーレントメモリ242を含む。GPUローカルメモリは、可視コヒーレントメモリ238、可視非コヒーレントメモリ239、及びプライベートメモリ236を含む。上述したように、非コヒーレントメモリへの書き込み要求に対する性能は、書き込み結合の使用を通して改善され得る。従って、実施形態においては、非コヒーレントメモリ240及び可視非コヒーレントメモリ239の各々は、「書き込み結合メモリ」又は「書き込み結合ヒープ(write-combining heap)」と称されることがある。システムメモリ218及びメモリ234は、従来のランダムアクセスメモリ(RAM)から形成され得る。例えば、システムメモリ218はDDR2又はDDR3のRAMメモリから形成され得るし、またメモリ234はDDR5のRAMメモリから形成され得る。
アドレス処理ユニット208及び224は、仮想アドレスを物理アドレスにトランスレートするように構成される処理ユニットである。更に、アドレス処理ユニットはまた、物理アドレスがどこにあるか(例えばシステムメモリ218及びGPUローカルメモリ234のうちで)を決定するようにも構成され得る。ある実施形態においては、アドレス処理ユニット208及び/又はアドレス処理ユニット224は、仮想アドレスを物理アドレスにトランスレートするために用いられるトランスレーションルックアサイドバッファ(translation lookaside buffer)(TLB)を含み得る。
ある実施形態においては、非コヒーレントメモリ240、可視非コヒーレントメモリ239及びプライベートメモリ236内にあるメモリワードを要求しているメモリ要求に関するCPU202の動作は、それぞれ非コヒーレントメモリ134、可視メモリ136及びプライベートメモリ138内にあるメモリワードを要求しているメモリ要求に関するCPU102の動作と実質的に同様である。また、プライベートメモリ236、可視非コヒーレントメモリ239及び非コヒーレントメモリ240内にあるメモリワードを要求しているメモリ要求に関するGPU204の動作は、それぞれプライベートメモリ138、可視メモリ136及び非コヒーレントメモリ134内にあるメモリワードを要求しているメモリ要求に関するGPU104の動作と実質的に同様である。
CPU202はプローブエンジン214及びプローブフィルタ216を含む。プローブエンジン214は、キャッシュ210及びコヒーレントメモリ242とキャッシュ222及び可視コヒーレントメモリ238との間でのコヒーレンスを確保するために用いられる。例えば、要求されたメモリワードがシステムメモリ218のコヒーレントメモリ242内にある場合、プローブエンジン214は、GPU204へ送られるプローブ(probes)を作成する。プローブは、GPU204のキャッシュ222が、要求されたメモリワードをダーティキャッシュライン(dirty cache line)内に保持しているかどうか、即ちコヒーレントメモリ242内の値に対して修正された値を保持しているキャッシュライン内に保持しているかどうかを決定するために用いられる。キャッシュ222がそのようなダーティキャッシュラインを含む場合には、GPU204は、プローブに応答して、キャッシュされている値をシステムメモリ218へ返送することになる。また、要求が書き込み要求である場合には、プローブは、要求されたメモリワードを保持しているキャッシュラインを無効にするように全てのキャッシュに要求することができる。
プローブフィルタ216は、要求されたメモリワードを他の要素がキャッシュしていなかった場合に何らかのプローブが作成されそして送信されることを防止することができる随意的な最適化である。多くの処理システムにおいて、システム内の異なる要素へプローブを送信することは、価値ある帯域幅を占有し得る。また多くの場合に、要求されたアドレスは、システム内の別の要素のキャッシュ内にはキャッシュされていないであろう。要求されたメモリワードをシステム200内の他の要素がキャッシュしていなかった場合にプローブが作成されそして送信されることを防止するために、プローブフィルタ216は、システム200の他の要素にキャッシュされているシステムメモリ218の全てのアドレスのリストを維持する。要求されたメモリワードをこのリストと比較することによって、プローブフィルタ216は、システム内の他の要素がそのメモリワードをキャッシュしていない場合にプローブが作成されそして送信されることを防止することができる。
CPU202によって要求されたメモリワードがGPUローカルメモリ234の可視コヒーレントメモリ238内にある場合、要求がキャッシュ210でミスした後に、NB211は要求をGPU204のNB225へ送る。NB225は次いで要求をプローブエンジン228へ転送し、プローブエンジン228はプローブを送り出す(プローブフィルタ232に従って)。同様に、GPU204がコヒーレントメモリ242のいずれかにアクセスする場合には、NB225は要求をCPU202のNB211へ送る。NB211は次いで要求をプローブエンジン214へ送り、プローブエンジン214はプローブを送り出す(プローブフィルタ216に従って)。GPU204によって要求されたメモリワードが可視コヒーレントメモリ238内にある場合には、GPU204のプローブエンジン228がプローブを送る(プローブフィルタ232に従って)。
GPU204がCPU202からプローブを受信すると、プローブはプローブエンジン228によって処理される。プローブに応答して、GPU204はダーティキャッシュラインをシステムメモリ218に書き戻し、そして必要であれば、要求されたメモリワードを保持しているキャッシュラインを無効にする。このように、図2の実施形態においては、GPU204のキャッシュ222は、他のデバイスとコヒーレント共有するためのプロトコル、例えばMESIプロトコルを実装しているコヒーレントキャッシュである。更なる実施形態においては、プローブエンジン214は、GPU204から受信したプローブを同様に処理する。
CPU202のキャッシュ210は物理的にタグ付けされたキャッシュ(physically tagged cache)であり、そのキャッシュ内ではキャッシュラインは物理アドレスでタグ付けされている。対照的にGPU204のキャッシュ222は、仮想アドレスでタグ付けされたキャッシュラインを伴う仮想的にタグ付けされたキャッシュ(virtually tagged cache)である。プローブが作成されてGPU204から送信される前であれば、CPU202のプローブエンジン214が、受信されたプローブを処理するために、要求されたアドレスをキャッシュ210内に保持されているアドレスと比較することができるように、要求されたアドレスは、アドレス処理ユニット224を用いて物理アドレスへとトランスレートされる。一方、CPU202のプローブエンジン214がプローブを作成する場合には、要求されたアドレスは物理アドレスである。プローブを受信する際、GPU204のプローブエンジン228は、要求されたメモリワードに対するキャッシュ222が仮想的にタグ付けされていることを理由として、即座にキャッシュ222にクエリすることはできない。そこで、GPU204は逆ルックアップテーブル230を更に含む。逆ルックアップテーブル230は、受信した物理アドレスを仮想アドレスへマッピングするために用いられる。受信した物理アドレスを仮想アドレスへマッピングした後、GPU204のプローブエンジン228は、上述したようにプローブを処理することができる。
図2に示されるように、CPU202及びGPU204は、各々、キャッシュ及びアドレス処理ユニットに結合される単一の実行エンジンを含む。代替的な実施形態においては、CPU202及び/又はGPU204は、2つ以上の実行エンジンを含む多重プロセッサシステムであってよい。そのような実施形態においては、キャッシュ及びアドレス処理ユニットは、各追加的実行エンジンのために複製され得る。更なる実施形態においては、それぞれのプローブエンジン及びプローブフィルタが各追加的実行エンジンのために複製されてもよい。例えばGPU204においては、各追加的実行エンジン220のために、追加的なキャッシュ222、アドレス処理ユニット224、プローブエンジン228及びプローブフィルタ232が設けられ得る。
システムメモリ218のコヒーレントメモリ242及びGPUローカルメモリ234の可視コヒーレントメモリ238は両方ともコヒーレントであるから、これら2つのメモリは、プログラマの視点からは区別が付かないであろう。つまり、プログラマの視点からは、システムメモリ218のコヒーレントメモリ242及びGPUローカルメモリ234の可視コヒーレントメモリ238は本質的に同じメモリの異なる部分であり、それによりプロブラミングモデルを極めて簡単にする。
図3は本発明の実施形態に従う処理システム300を示している。システム300は、システムメモリ218及びGPUローカルメモリ234がメモリ302に置き換わっている点を除き、図2に示されるシステム200と実質的に同様である。例えば、別個のダイ上に実装されていたであろうシステムメモリ218及びGPUローカルメモリ234は、メモリ302内の同じダイ上に実装され得る。別の実施形態においては、システム300の全てが単一のダイに含まれ得る。
メモリ302は、非コヒーレントメモリ301、コヒーレントメモリ304、及びプライベートメモリ306を含む。図3に示されるように、GPU204は、メモリ302にアクセスするためにCPU202のNB211にアクセスする必要がある。代替的な実施形態においては、GPU204のNB225は、メモリ302に直接アクセスすることが可能であってよい。
ある実施形態においては、プライベートメモリ306へのアクセスは、図2を参照して説明したプライベートメモリ236へのアクセスと実質的に同様である。システム300の実施形態においては、システム200のコヒーレントメモリ242及び可視コヒーレントメモリ238は、コヒーレントメモリ304としてメモリ302内に実装される。上述したように、コヒーレントメモリ242及び可視コヒーレントメモリ238は、プログラマの視点から区別が付かなくてよい。このように、システムメモリ218及びGPUローカルメモリ234がメモリ302内で効率的に結合されている実施形態においては、コヒーレントメモリ242及び可視コヒーレントメモリ238は、コヒーレントメモリ304内で結合され得る。CPU202及びGPU204からコヒーレントメモリ304へのアクセスは、CPU202及びGPU204からコヒーレントメモリ242及び可視コヒーレントメモリ238へのアクセスと実質的に同様である。同様に、別の実施形態においては、非コヒーレントメモリ240及び可視非コヒーレントメモリ239は、非コヒーレントメモリ301を形成するように結合され得る。CPU202及びGPU204と種々のコヒーレントメモリ及び非コヒーレントメモリとの間でのアクセスは、システム200とシステム300の間で同じままであるから、処理システム200のために書かれたプログラムは、処理システム300にも用いることができ、それにより、プログラムを更新する必要性なしに、同じダイ上に形成される多重要素を有するのことの利益を得ることができる。
図4は本発明の実施形態に従うGPU400を示している。GPU400は、プローブフィルタ402、プローブエンジン406、実行エンジン410、範囲チェッカ412、第1のアドレス処理ユニット414、キャッシュ416、及び第2のアドレス処理ユニット422を含む。ある実施形態においては、プローブフィルタ402、プローブエンジン406及び実行エンジン410は、図2及び3を参照して説明したそれぞれプローブフィルタ232、プローブエンジン228及び実行エンジン220と実質的に同様である。GPU400は、それがシステム200及び300におけるGPU204の代わりに用いられる実施形態を参照して説明される。しかし、関連分野を含めた当業者に理解されるであろうように、GPU400はその実施形態に限定されない。
図4に示されるように、キャッシュ416は、仮想的にタグ付けされている部分418及び物理的にタグ付けされている部分420を含むハイブリッドキャッシュである。ある実施形態においては、部分420は、CPU又はシステムの他の要素によってアクセスされるであろうメモリアドレスをキャッシュする。NB225等のNBを介して(NB225は簡素化を目的として図4では省略されている)、部分420は可視コヒーレントメモリ238内にあるメモリアドレスをキャッシュすることができ、また部分418はプライベートメモリ236内にあるメモリアドレスをキャッシュすることができる。そしてこの実施形態においては、CPU202(又はシステム内の任意の他の要素)がアクセスすることができるメモリアドレスのみ、従ってGPU400がプローブを受信することになるメモリアドレスのみが物理的にタグ付けされているので、逆ルックアップテーブルは必要とされない。
実行エンジン410がメモリ要求を作成すると、範囲チェッカ412は、要求されたアドレスを検査して、それがGPUコヒーレントメモリ238内又はGPUプライベートメモリ236内のどちらにあるのかを決定する。要求されたアドレスがGPUコヒーレントメモリ238内にあるものと知られている範囲内にある場合には、要求されたアドレスは第1のアドレス処理ユニット414を用いて即座に物理アドレスへトランスレートされ、次いで部分420がクエリされてそれが要求をサービスすることができるかどうかを決定する。一方、要求されたアドレスがGPUプライベートメモリ236内にあるものと知られている範囲内にあると範囲チェッカ412が決定すると、部分418がクエリされてそれがメモリ要求をサービスすることができるかどうか(要求されたアドレスを先ずトランスレートすることなしに)を決定する。キャッシュ416のクエリされた部分が要求をサービスすることができない場合、即ちキャッシュミスの場合には、メモリ要求をサービスすることにおけるGPU400の動作は、キャッシュミスに際してメモリ要求をサービスすることにおけるGPU204の動作と実質的に同様である。
第2のアドレス処理ユニット422は、GPUプライベートメモリ236が物理的にタグ付けされていることを理由として、部分418内の仮想アドレスをトランスレートするために用いられる。ある実施形態においては、アドレス処理ユニット414及びアドレス処理ユニット422は、GPU400内の別個の要素である。代替的な実施形態においては、アドレス処理ユニット414及びアドレス処理ユニット422は、GPU400の動作の間に異なる点でアクセスされる同じアドレス処理ユニットである。
図7及び8はそれぞれ本発明の実施形態に従う処理ユニット700及び800を示している。処理ユニット700及び800は、処理ユニット700及び800がGPU204の代わりに図4に示されるGPU400を含む点を除いて、それぞれ処理システム200及び300と実質的に同様である(簡素化のために範囲チェッカ412は図7及び8から省略されている)。図7及び8に示されるように、ハイブリッドキャッシュの使用は、CPU及びGPUの間での動作を単純化することができる。例えば、図7及び8に示されるように、CPU202のキャッシュ210によってキャッシュされ得る全てのアドレスは、ハイブリッドキャッシュ416内で物理的にタグ付けされているので、GPU400は逆ルックアップテーブルを含まない。
図2、3、7及び8の各々は、CPU及びGPUの間で通信される各信号のためのこれらの間での接続を概念的に示している。ある実施形態においては、CPU及びGPUの間で伝送される異なる複数の信号が、1つ以上のバス(又はトレース(traces))の同じセットを介して多重化され得る。別の実施形態においては、異なる複数の信号の各々に対して異なるバス又はトレースが用いられ得る。
図5は本発明の実施形態に従いメモリ要求を処理する例示的な方法500のフローチャートである。以下の議論に基づいて他の構造及び動作の実施形態が関連分野を含めた当業者には明らかなはずである。図5に示されるステップは、図示される順序で必ずしも生じる必要はない。図5のステップが以下に詳細に説明される。
ステップ502では、メモリ要求が発行される。例えば図2においては、CPU202の実行エンジン206又はGPU204の実行エンジン220が、メモリ要求を発行することができる。
ステップ504では、要求されたメモリワードがどこにあるかが決定される。例えば図2においては、要求されたメモリワードがどこにあるかをアドレス処理ユニット208又は224が決定する。
ステップ506では、ローカルキャッシュがメモリ要求をサービスすることができるかどうかが決定される。例えば、ローカルキャッシュが要求アドレスを保持しているかどうかを決定するために、そして要求されたメモリワードを保持しているキャッシュラインの状態に対して、ローカルキャッシュがクエリされ得る。例えば図2においては、要求されたメモリワードがコヒーレントメモリ242内又は可視コヒーレントメモリ238内にあるとアドレス処理ユニット208又は224がそれぞれ決定すると、それぞれキャッシュ210又は222は、それらが実行エンジン206又は実行エンジン220によってそれぞれ発行されたメモリ要求をサービスすることができるかどうかを決定するためにクエリされ得る。メモリ要求がローカルキャッシュ上でヒットすると、方法500はステップ516へ進む。ステップ516では、メモリ要求はローカルキャッシュを用いて処理される。
メモリ要求がローカルキャッシュによってサービスされ得ない場合には、方法500はステップ508へ進む。ステップ508では、要求されたアドレスがプライベートメモリ内にあるかどうかが決定される。プライベートメモリ内にある場合には、方法はステップ518へ進む。ステップ518では、メモリ要求がプライベートメモリを用いて処理される。例えば図2においては、要求されたアドレスがプライベートメモリ236内にある場合、NB225がプライベートメモリ236にアクセスして要求をサービスすることができる。
要求されたアドレスがプライベートメモリ内にない場合、処理500はステップ510へ進む。ステップ510では、要求されたアドレスが遠隔メモリ内にあるかどうかが決定される。遠隔メモリ内にある場合には、方法500はステップ520へ進む。ステップ520では、サービスのための要求が遠隔ノードへ送られる。例えば図2においては、GPU204の実行エンジン220によって要求されたメモリワードがシステムメモリ218内にある場合、NB225はサービスのための要求をCPU202へ送る。代替的な実施形態においては、CPU202の実行エンジン206によって要求されたメモリワードがGPUコヒーレントメモリ238内にある場合、NB211はサービスのための要求をGPU204へ送る。
ステップ514では、メモリ要求を処理するためにローカルメモリが用いられる。例えば図2においては、CPU202の実行エンジン206又はGPU204の実行エンジン220からの要求を処理するために、それぞれシステムメモリ218又はGPUローカルメモリ234が用いられ得る。
図6は本発明の実施形態に従いメモリ要求を処理する例示的な方法600のフローチャートである。以下の議論に基づいて他の構造及び動作の実施形態が関連分野を含めた当業者には明らかなはずである。図6に示されるステップは、図示される順序で必ずしも生じる必要はない。図6のステップが以下に詳細に説明される。
ステップ602では、サービスのための遠隔要求が受信される。例えば図2及び3においては、NB211及び225がサービスのための要求を受信することができる。
ステップ604では、ローカルメモリを用いてメモリ要求が処理される。例えば図2及び3においては、NB211及び225がシステムメモリ218又はGPUローカルメモリ234にアクセスして要求メモリワードにアクセスすることができる。
ここでの説明に基づき当業者であれば理解するであろうように、方法500及び600で説明されるメモリアクセスの幾つかは、プローブが作成されることを必要としてよい。例えばコヒーレントメモリがアクセスされる場合、プローブが作成されることを必要であろう。別の実施形態においては、システム内の他のデバイスにプローブを送信するかどうかを決定するためにプローブフィルタが用いられ得る。更に別の実施形態においては、コヒーレントメモリアクセスについてもプローブが作成される必要がなくてもよいように、プローブが作成されるのに先立ちプローブフィルタが参考にされ得る。
本発明の実施形態は、複数の同時に実行中の処理の間でレジスタ資源が管理されるべき任意のコンピューティングデバイスにおいて用いられてよい。限定はされないが、例えば実施形態は、コンピュータ、ゲームプラットフォーム、エンタテーメントプラットフォーム、パーソナルデジタルアシスタント、及びビデオプラットフォームを含んでいてよい。本発明の実施形態は、ハードウエア記述言語(HDL)、アセンブリ言語、及びC言語を含む多くのプログラミング言語において符号化されてよい。例えば、ベリログ(Verilog)等のHDLが、本発明の1つ以上の実施形態の態様を実装するデバイスを合成し、シミュレートし、そして製造するために用いられ得る。例えば、図2、3、7、8及び4をそれぞれ参照して説明されたシステム200,300,700,800及び/又はGPU400の要素をモデル化し、設計し、検証し且つ/又は実装するために用いられ得る。
結論
特定の機能の実装及びそれらの関係性を示す機能構築ブロックを補助として、本発明が上述のように説明されてきた。これらの機能構築ブロックの境界は、説明の便宜上ここでは適宜画定されてきた。特定の機能及びそれらの関係性が適切に実施される限りにおいて、代替的な境界が画定され得る。
本発明の広さ及び範囲は、上述したいかなる例示的な実施形態によっても限定されるべきではない一方で、以下の請求項及びそれらと均等なものに従ってのみ画定されるべきである。
本出願における請求項は親出願又は関連出願のそれらとは異なる。従って、出願人は、親出願又は本出願に関連する任意の先行する出願における特許請求の範囲のいかなるディスクレーマ(disclaimer)をも撤回する。従って、審査官は、任意のそのような先のディスクレーマ及び回避するためにディスクレーマがなされた引用例が再閲覧される必要があるかもしれないということを助言されている。また、審査官にあっては、本出願においてなされるいかなるディスクレーマも親出願において又は親出願に対して読まれるべきではないことを確認されたい。

Claims (19)

  1. 第1のメモリに結合される第1の処理ユニットと、第2のメモリに結合される第2の処理ユニットと、を備える処理システムであって、
    前記第2のメモリは、コヒーレントメモリと、前記第2の処理ユニットにプライベートなプライベートメモリと、を備える処理システム。
  2. 前記第1の処理ユニットは中央処理ユニット(CPU)であり、前記第2の処理ユニットはグラフィクス処理ユニット(GPU)である請求項1の処理システム。
  3. 前記第2の処理ユニットはアドレス処理ユニットを備え、前記第2の処理ユニットの実行エンジンはメモリ要求を作成するように構成され、前記アドレス処理ユニットは経路付けテーブルを用いて前記メモリ要求に関連するメモリワードのロケーションを決定するように構成される請求項1の処理ユニット。
  4. 前記第2の処理ユニットは、前記メモリワードが前記第1のメモリ内にある場合に前記第1のプロセッサに要求を送るように構成される請求項3の処理システム。
  5. 前記第2の処理ユニットはプローブエンジン及びプローブフィルタを備え、前記プローブエンジンは、当該要求されたメモリワードが前記第1の処理デバイスのキャッシュ内にキャッシュされている場合にメモリプローブを送信するように構成される請求項3の処理システム。
  6. 前記第1のメモリ及び前記第2のメモリは同じダイ上にある請求項1の処理システム。
  7. 前記第1の処理ユニットは物理的にタグ付けされているキャッシュを備え、前記第2の処理ユニットは仮想的にタグ付けされているキャッシュを備え、前記第2の処理ユニットは、物理メモリアドレスを仮想メモリアドレスにトランスレートするように構成される逆ルックアップテーブルを更に備える請求項1の処理ユニット。
  8. 前記第2の処理ユニットは第1の部分及び第2の部分を含むキャッシュを備え、前記キャッシュの前記第1の部分は前記コヒーレントメモリ内にあるメモリワードをキャッシュするように構成され、前記第1の部分は物理的にタグ付けされている請求項1の処理システム。
  9. 前記キャッシュの前記第2の部分は仮想的にタグ付けされている請求項8の処理システム。
  10. 要求されたメモリワードのアドレスを検査して前記要求されたメモリワードに対して前記第1の部分又は前記第2の部分にクエリするかどうかを決定するように構成される範囲チェッカを更に備える請求項8の処理ユニット。
  11. メモリ要求を処理する方法であって、
    前記メモリ要求に関連するメモリワードがどこにあるのかを決定することと、
    メモリ内にある前記メモリワードに応答して、前記メモリにアクセスして前記要求を処理することと、を備え、
    前記メモリは、コヒーレントメモリと、第1の処理ユニットにプライベートなプライベートメモリと、を含む方法。
  12. プローブが作成されるべきかを決定することを更に備える請求項11の方法。
  13. プローブが作成されるべきかを決定することは、第2の処理ユニットのキャッシュ内に前記メモリワードがキャッシュされているのを決定することを備える請求項12の方法。
  14. 前記メモリは第1のメモリであって、第2の処理ユニットは第2のメモリに結合され、
    メモリアドレスが前記第2のメモリ内にある場合に前記メモリワードに対する要求を前記第2の処理ユニットへ送ることを更に備える請求項11の方法。
  15. アクセスすることは前記コヒーレントメモリにアクセスすることを備える請求項11の方法。
  16. 前記第1の処理ユニットのキャッシュが前記メモリ要求をサービスすることができないことを決定することを更に備える請求項11の方法。
  17. プローブを受信することと、
    前記プローブに含まれているメモリアドレスを物理アドレスから仮想アドレスにトランスレートすることと、を更に備える請求項11の方法。
  18. 前記メモリワードに関連するメモリアドレスに基づいて、前記メモリワードに対してキャッシュの第1の部分又はキャッシュの第2の部分にクエリするかどうかを決定することを更に備える請求項11の方法。
  19. 前記メモリワードが前記コヒーレントメモリ内又は前記プライベートメモリ内にあるかどうか基づいて、前記メモリワードに対してキャッシュの第1の部分又はキャッシュの第2の部分にクエリするかどうかを決定することを更に備える請求項11の方法。
JP2012528928A 2009-09-10 2010-09-10 メモリ要求を処理するためのシステム及び方法 Active JP6196445B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US24120309P 2009-09-10 2009-09-10
US61/241,203 2009-09-10
US12/878,223 US8615637B2 (en) 2009-09-10 2010-09-09 Systems and methods for processing memory requests in a multi-processor system using a probe engine
US12/878,223 2010-09-09
PCT/US2010/048428 WO2011031969A1 (en) 2009-09-10 2010-09-10 Systems and methods for processing memory requests

Publications (2)

Publication Number Publication Date
JP2013504822A true JP2013504822A (ja) 2013-02-07
JP6196445B2 JP6196445B2 (ja) 2017-09-13

Family

ID=43648547

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012528928A Active JP6196445B2 (ja) 2009-09-10 2010-09-10 メモリ要求を処理するためのシステム及び方法

Country Status (7)

Country Link
US (1) US8615637B2 (ja)
EP (1) EP2476051B1 (ja)
JP (1) JP6196445B2 (ja)
KR (1) KR101593107B1 (ja)
CN (1) CN102576299B (ja)
IN (1) IN2012DN02863A (ja)
WO (1) WO2011031969A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015524597A (ja) * 2012-08-06 2015-08-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated リリース一貫性メモリ順序付けモデルを用いたマルチコア計算キャッシュコヒーレンシ
US9959212B2 (en) 2015-03-13 2018-05-01 Kabushiki Kaisha Toshiba Memory system
US11556469B2 (en) 2018-06-18 2023-01-17 FLC Technology Group, Inc. Method and apparatus for using a storage system as main memory
US11822474B2 (en) 2013-10-21 2023-11-21 Flc Global, Ltd Storage system and method for accessing same

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9176913B2 (en) 2011-09-07 2015-11-03 Apple Inc. Coherence switch for I/O traffic
US9430391B2 (en) * 2012-03-29 2016-08-30 Advanced Micro Devices, Inc. Managing coherent memory between an accelerated processing device and a central processing unit
US9323679B2 (en) * 2012-08-14 2016-04-26 Nvidia Corporation System, method, and computer program product for managing cache miss requests
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
CN104216837A (zh) * 2013-05-31 2014-12-17 华为技术有限公司 一种内存系统、内存访问请求的处理方法和计算机系统
US9734079B2 (en) * 2013-06-28 2017-08-15 Intel Corporation Hybrid exclusive multi-level memory architecture with memory management
US9424192B1 (en) 2015-04-02 2016-08-23 International Business Machines Corporation Private memory table for reduced memory coherence traffic
US9842050B2 (en) 2015-04-30 2017-12-12 International Business Machines Corporation Add-on memory coherence directory
CN106651748B (zh) * 2015-10-30 2019-10-22 华为技术有限公司 一种图像处理方法与图像处理装置
US11030126B2 (en) * 2017-07-14 2021-06-08 Intel Corporation Techniques for managing access to hardware accelerator memory
US10402937B2 (en) 2017-12-28 2019-09-03 Nvidia Corporation Multi-GPU frame rendering
GB2571538B (en) * 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
GB2571536B (en) 2018-02-28 2020-03-11 Imagination Tech Ltd Coherency manager
GB2571539B (en) 2018-02-28 2020-08-19 Imagination Tech Ltd Memory interface
WO2020190802A1 (en) 2019-03-15 2020-09-24 Intel Corporation Compression techniques
US11934342B2 (en) 2019-03-15 2024-03-19 Intel Corporation Assistance for hardware prefetch in cache access
EP3938888A1 (en) 2019-03-15 2022-01-19 INTEL Corporation Systolic disaggregation within a matrix accelerator architecture
US11861761B2 (en) 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
KR20220064230A (ko) * 2020-11-11 2022-05-18 삼성전자주식회사 다중 프로토콜에 기초하여 메모리에 액세스하기 위한 시스템, 장치 및 방법
CN115202892B (zh) * 2022-09-15 2022-12-23 粤港澳大湾区数字经济研究院(福田) 一种机密计算协处理器的内存扩展系统和内存扩展方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007257637A (ja) * 2006-03-23 2007-10-04 Internatl Business Mach Corp <Ibm> アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム
JP2008522320A (ja) * 2004-12-02 2008-06-26 クゥアルコム・インコーポレイテッド ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0180369B1 (en) * 1984-10-31 1992-08-19 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US4991081A (en) * 1984-10-31 1991-02-05 Texas Instruments Incorporated Cache memory addressable by both physical and virtual addresses
US5586297A (en) * 1994-03-24 1996-12-17 Hewlett-Packard Company Partial cache line write transactions in a computing system with a write back cache
US6094686A (en) * 1997-10-24 2000-07-25 Compaq Computer Corporation Multi-processor system for transferring data without incurring deadlock using hierarchical virtual channels
JP2004500667A (ja) * 2000-04-03 2004-01-08 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 改良されたメモリリクエスト調停機構を有するメモリコントローラを含むバスブリッジ
US6633960B1 (en) * 2000-08-31 2003-10-14 Hewlett-Packard Development Company, L.P. Scalable directory based cache coherence protocol
US6868481B1 (en) * 2000-10-31 2005-03-15 Hewlett-Packard Development Company, L.P. Cache coherence protocol for a multiple bus multiprocessor system
US6973543B1 (en) * 2001-07-12 2005-12-06 Advanced Micro Devices, Inc. Partial directory cache for reducing probe traffic in multiprocessor systems
US7034849B1 (en) 2001-12-31 2006-04-25 Apple Computer, Inc. Method and apparatus for image blending
US7120755B2 (en) * 2002-01-02 2006-10-10 Intel Corporation Transfer of cache lines on-chip between processing cores in a multi-core system
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US6976117B2 (en) * 2002-08-13 2005-12-13 Intel Corporation Snoopy virtual level 1 cache tag
US7296121B2 (en) * 2002-11-04 2007-11-13 Newisys, Inc. Reducing probe traffic in multiprocessor systems
US7162589B2 (en) * 2002-12-16 2007-01-09 Newisys, Inc. Methods and apparatus for canceling a memory data fetch
US7373466B1 (en) * 2004-04-07 2008-05-13 Advanced Micro Devices, Inc. Method and apparatus for filtering memory write snoop activity in a distributed shared memory computer
US8332592B2 (en) * 2004-10-08 2012-12-11 International Business Machines Corporation Graphics processor with snoop filter
US7305524B2 (en) 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
US7577794B2 (en) 2004-10-08 2009-08-18 International Business Machines Corporation Low latency coherency protocol for a multi-chip multiprocessor system
US20060112226A1 (en) * 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
US20070143546A1 (en) * 2005-12-21 2007-06-21 Intel Corporation Partitioned shared cache
US7653789B2 (en) * 2006-02-01 2010-01-26 Sun Microsystems, Inc. Multiprocessor system that supports both coherent and non-coherent memory accesses
US20090106498A1 (en) * 2007-10-23 2009-04-23 Kevin Michael Lepak Coherent dram prefetcher
US9035959B2 (en) * 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008522320A (ja) * 2004-12-02 2008-06-26 クゥアルコム・インコーポレイテッド ページ内のプログラムカウンター相対アドレスまたは絶対アドレスの分岐命令のためのtlbの抑制
JP2007257637A (ja) * 2006-03-23 2007-10-04 Internatl Business Mach Corp <Ibm> アクセラレータ用低コストのキャッシュ一貫性を維持する方法及びシステム

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015524597A (ja) * 2012-08-06 2015-08-24 クゥアルコム・インコーポレイテッドQualcomm Incorporated リリース一貫性メモリ順序付けモデルを用いたマルチコア計算キャッシュコヒーレンシ
US11822474B2 (en) 2013-10-21 2023-11-21 Flc Global, Ltd Storage system and method for accessing same
US9959212B2 (en) 2015-03-13 2018-05-01 Kabushiki Kaisha Toshiba Memory system
US11556469B2 (en) 2018-06-18 2023-01-17 FLC Technology Group, Inc. Method and apparatus for using a storage system as main memory
US11880305B2 (en) 2018-06-18 2024-01-23 FLC Technology Group, Inc. Method and apparatus for using a storage system as main memory

Also Published As

Publication number Publication date
IN2012DN02863A (ja) 2015-07-24
KR20120060230A (ko) 2012-06-11
US20110060879A1 (en) 2011-03-10
KR101593107B1 (ko) 2016-02-11
WO2011031969A1 (en) 2011-03-17
EP2476051B1 (en) 2019-10-23
CN102576299B (zh) 2015-11-25
CN102576299A (zh) 2012-07-11
JP6196445B2 (ja) 2017-09-13
EP2476051A1 (en) 2012-07-18
US8615637B2 (en) 2013-12-24

Similar Documents

Publication Publication Date Title
JP6196445B2 (ja) メモリ要求を処理するためのシステム及び方法
US6721848B2 (en) Method and mechanism to use a cache to translate from a virtual bus to a physical bus
KR100465583B1 (ko) 판독 요청을 원격 처리 노드에 추론적으로 전송하는 비정형 메모리 액세스 데이터 처리 시스템 및 이 시스템에서의 통신 방법
US9792210B2 (en) Region probe filter for distributed memory system
US6826653B2 (en) Block data mover adapted to contain faults in a partitioned multiprocessor system
US20030041212A1 (en) Distributed read and write caching implementation for optimized input//output applications
US6470429B1 (en) System for identifying memory requests as noncacheable or reduce cache coherence directory lookups and bus snoops
JP2001147903A (ja) 効率的なバス機構及びコヒーレンス制御を有する繰り返しチップ構造を有するスケーラブル共用メモリ・マルチプロセッサ・コンピュータ・システム
US11714754B2 (en) Shadow caches for level 2 cache controller
JP2000067024A (ja) 分散共有メモリマルチプロセッサシステムのための分割疎ディレクトリ
CN105488012B (zh) 一种基于独占数据的一致性协议设计方法
CN112559434B (zh) 一种多核处理器及核间数据转发方法
JP4948141B2 (ja) バス制御装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130909

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140326

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140423

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140722

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140729

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140821

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150217

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150518

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20150617

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150714

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20150908

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160108

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20160118

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20160205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170530

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170818

R150 Certificate of patent or registration of utility model

Ref document number: 6196445

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250