JP2005524907A - ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム - Google Patents

ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム Download PDF

Info

Publication number
JP2005524907A
JP2005524907A JP2004504123A JP2004504123A JP2005524907A JP 2005524907 A JP2005524907 A JP 2005524907A JP 2004504123 A JP2004504123 A JP 2004504123A JP 2004504123 A JP2004504123 A JP 2004504123A JP 2005524907 A JP2005524907 A JP 2005524907A
Authority
JP
Japan
Prior art keywords
memory area
cpu
shared memory
graphics processor
attribute
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
JP2004504123A
Other languages
English (en)
Other versions
JP4489580B2 (ja
Inventor
ワイアット,デイヴィッド
Original Assignee
インテル コーポレイション
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 インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2005524907A publication Critical patent/JP2005524907A/ja
Application granted granted Critical
Publication of JP4489580B2 publication Critical patent/JP4489580B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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/0888Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using selective caching, e.g. bypass
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

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

Abstract

本発明による方法及びシステムは、1以上のCPU上で実行されるアプリケーションと、
グラフィックプロセッサなどのコンピュータシステムのアクセラレーションコプロセッサとの間のメモリの共有化を提供するものであり、当該コンピュータシステムでは、共有されたメモリは、CPUとグラフィックプロセッサの両方の最大パフォーマンスに有利なそれの最適なキャッシュ及びアクセス属性を維持する。本方法は、ビュー状態にある共有されたメモリの配置を次のオーナーにわたす前に、共有されたメモリが前のオーナーに関して一貫性を有するようにされるオーナー権限の分割に関する。この調停は、オーナー権限があるクライアントから他のクライアントに移行されるインタフェースに関する。このようなオーナー権限の移行において、プロセッサ低レベルキャッシュ制御指示の利用を介し共有メモリのプロセッサキャッシュ属性をアクティブに変更することにより、メモリはあるビューから他のビューに変更され、及び/またはグラフィックプロセッサはデータ一貫性の実施に用いられるフラッシュアルゴリズムを提供する。本発明の実施例は、クライアント間のデータの移動または複製によるオーバヘッドなしで、データを共有するすべてのクライアントに対する最大アクセス効率を向上させる。

Description

発明の詳細な説明
[発明の技術分野]
本発明は、コンピュータグラフィックシステムに関し、より詳細には、CPU(中央処理ユニット)とグラフィックプロセッサにより共有されるメモリの使用を最適化することに関する。
[背景]
既知の多くのコンピュータシステムにおいて、ホストCPUは、実行対象のグラフィック処理を呼び出すアプリケーションを実行するかもしれない。そのようなグラフィック処理を実現するため、典型的には、アプリケーションは(以下に限定されるものではないが、ネットワーク、CDあるいはハードドライブディスク記憶装置を含む)オフラインの記憶装置から(以下に限定されるものではないが、テクスチャ、ジオメトリ、モデルなどを含む)初期的グラフィックデータ及びプリミティブ(primitive)をフェッチし、オンラインシステムメモリに当該グラフィックデータ及びプリミティブのコピーを生成する。アプリケーションは、オンラインシステムメモリのグラフィック画素、データモデル及びプリミティブ上で動作し、その後ある時点で、典型的にはホストCPUから低レベルのレンダリングタスクをオフロードするため、グラフィックデータとプリミティブ上で動作するため、コンピュータシステムのグラフィックプロセッサを呼び出すようにしてもよい。
既知の実現形態によると、グラフィックプロセッサにより処理が呼び出されると、アプリケーションはオフライン記憶装置からオンラインシステムメモリに初期的にロードされるコピーとは別に、グラフィックプロセッサが動作するグラフィックデータ及びプリミティブの第2コピーを生成する。この別の第2コピー(ここでは、「エイリアス(aliased)」コピーと呼ばれる)は、典型的には、グラフィックプロセッサによる利用のため用意されるという理由から、「グラフィックメモリ」と呼ばれるオンラインシステムメモリの一領域に配置されてもよい。グラフィックメモリの各種実現形態が当該技術分野において知られている。例えば、個別のアドイングラフィックアダプタカードは、当該カード上のプライベートメモリバスによりローカルに接続されるグラフィックメモリを含んでもよく、これは「ローカルビデオメモリ」と典型的に呼ばれる。他の例では、既知のインテル(登録商標)ハブアーキテクチャを有するチップセットでは、システムメモリの一領域が指定されたAGP(Advanced Graphics Port)メモリがグラフィックメモリとして利用される。AGPメモリはまた、「非ローカルビデオメモリ」と呼ばれるかもしれない。
グラフィックプロセッサは、典型的には、ある期間グラフィックメモリのグラフィックデータのエイリアスコピー上で動作する。典型的には、このグラフィックデータのエイリアスコピーを有するグラフィックメモリが、ホストCPUのメモリページ属性テーブルのアンキャッシュ属性に割り当てられ、このことはグラフィックデータへのアプリケーションアクセスは、当該データがグラフィックプロセッサにより処理されるアンキャッシュグラフィックメモリ領域にある間、ホストCPUのキャッシュを利用しないということを意味する。このアンキャッシュエイリアスコピーはある期間グラフィックプロセッサにより処理された後、グラフィックデータのさらなる処理のため、典型的にはアプリケーションに戻す必要がある。しかしながら、上述の実現形態によると、アプリケーションは、システムメモリのグラフィックデータのコピー上で動作する。このシステムメモリは、典型的には、CPUがキャッシュモードでアプリケーションの処理を実行できるように、キャッシュ属性に割り当てられていた。周知のように、CPUによるキャッシュ処理はアンキャッシュ処理よりCPUがより効率的になることを可能にする。
アプリケーションがグラフィックプロセッサの後のグラフィックデータ上での動作を継続できるように、もちろん、グラフィックプロセッサによるエイリアスコピーへの変更はアプリケーションにより使用されるシステムメモリのコピーに反映する必要がある。
アプリケーションは、キャッシュモードではある期間においてシステムメモリのコピーの処理を継続し、その後再び処理をグラフィックプロセッサに引き継ぐかもしれない。当然のことながら、システムメモリのコピーに対する変更は、グラフィックプロセッサが再び引き継ぐとき、グラフィックメモリのエイリアスコピーに反映されねばならない。アプリケーションとグラフィックプロセッサとの間の上記やりとりは何回も繰り返されるかもしれない。
上記構成は問題点を有すると認識されるであろう。1つの問題点は、同一のグラフィックデータの2つのコピーが維持される必要があり、貴重なシステムメモリリソースが消費されるというものである。さらに、これら2つの別々のコピーの生成及び維持において、特に複数のインタフェース間のバスを介した2つのコピー間の各更新の伝搬において、貴重なCPU帯域幅が消費される。
上述の2つのグラフィックデータのコピーの維持を伴わない実現形態が知られている。そのような実現形態の1つによると、キャッシュ可能なシステムメモリがグラフィックメモリとして利用するためグラフィックプロセッサに利用可能となり、グラフィックプロセッサとホストCPUは、グラフィックメモリのグラフィックデータに対して処理を実行する。前述のように、グラフィックプロセッサとホストCPUは、交替でグラフィックデータに対する処理を行う。当該メモリはキャッシュ可能であるため、CPUは効率性の向上のためキャッシュモードでの動作が可能である。
しかしながら、このアプローチはデータ「一貫性の欠如(incoherency)」の可能性を生じる。すなわち、CPUはキャッシュモードでグラフィックメモリを利用するため、グラフィックプロセッサが処理の実行を依頼されたデータはまだフラッシュ(すなわち、キャッシュから消去され、グラフィックメモリに書き込まれる)されていないかもしれない。むしろ、データはCPU内部とL1及びL2キャッシュ間頂点のどこかに配置され、実際にはグラフィックメモリにはまだ届いていないかもしれない。従って、グラフィックプロセッサが必要なデータに処理を実行するためグラフィックメモリにアクセスするとき、この必要なデータの最も最近のものを検出することができないかもしれない。代わりに、グラフィックメモリのデータは「古い(stale)」ものであるかもしれない。さらに悪いことに、グラフィックプロセッサがデータ位置へのアクセスを完了した直後に、キャッシュからデータが除去され、これにより当該処理が無効となるかもしれない。
一貫性欠如の問題を処理するため、チップセットの「スヌープサイクル(snoop cycle)が利用されてきた。スヌープサイクルは、グラフィックプロセッサがグラフィックメモリへのアクセスを許可される前に、グラフィックプロセッサがチップセットにグラフィックメモリに関するCPUキャッシュの一貫的にすることに関するものである。しかしながら、スヌープサイクルは、システムパフォーマンスを低下させるかなりのオーバヘッド量を必要とする欠点を伴う。スヌープサイクルは、位置単位でメモリデータを調べ、必要とされる位置のデータが依然としてCPUのキャッシュにある場合、それは抽出され、一貫的とされる。このような処理はインタフェース間の多くの「ハンドシェイク(handshake)」を必要とし、それらは位置単位あるいはライン単位で実行されなければならないため非効率である。
他の実現形態によると、グラフィックメモリは厳密にアンキャッシュモードで使用される。この方法では、グラフィックメモリのデータは、CPUがグラフィックメモリに対してデータの読み出しまたは書き込みを所望するときはいつでも、この書き込み処理は常に直接的に即座にグラフィックメモリに行われ、キャッシュ処理されないため、一貫性を維持する。しかしながら、この方法に関する1つの欠点は、キャッシュ処理によるCPUパフォーマンスの向上が利用できないということである。
上記考察により、既存の実現形態の問題点を解消する方法及びシステムが求められる。
[詳細な説明]
本発明による方法及びシステムの実施例において、最適に共有化されたグラフィックメモリがホストCPUあるいはグラフィックプロセッサにより使用されるかどうかに依存して割り当てられるキャッシュ属性を有する最適共有化グラフィックメモリが提供される。最適共有化メモリに割り当てられる属性は、当該メモリがCPUにより使用されているときにはCPUのパフォーマンスに有利に、また当該メモリがグラフィックプロセッサにより使用されているときにはグラフィックプロセッサのパフォーマンスに有利となるよう選択される。
この実施例によると、最適共有化メモリの割り当てられたキャッシュ属性は、当該メモリをホストCPUが使用しているモードと、当該メモリをグラフィックプロセッサが使用しているモードとの間の移行中に変更されるかもしれない。
CPUによる使用中に最適共有化メモリに割り当てられる属性は、キャッシュ属性であるかもしれない。ここで、「キャッシュ属性」とは、CPUによる動作をそれの内部クロック速度で可能にするため、最適共有化メモリ宛のデータ部分がまずCPUのキャッシュに転送され、そこで機能するようにされる。グラフィックプロセッサが最適共有化メモリのデータ上で動作するモードへの移行の発生時には、CPUキャッシュのデータは一貫性を有するようにされ、最適共有化メモリの割り当てられたキャッシュ属性はアンキャッシュ属性に変更される。ここで、「アンキャッシュ属性」とは、読み出し及び書き込み動作に対して、CPUのキャッシュからデータをフェッチしないということを意味する。むしろ、データは、キャッシュが存在しなかったかのように、外部のシステムメモリバスを介してシステムメモリに直接流出する。
他の実施例では、最適共有化メモリは常にキャッシュ属性に割り当てられるが、グラフィックプロセッサが最適共有化メモリのデータ上で動作するモードへの移行の発生時には、CPUのキャッシュのデータは一貫性を有するようにされる。この移行が行われる前に一貫性を確立することの効果は、グラフィックプロセッサのDMA(Direct Memory Access)はそれがあたかもすでに一貫性を備えているかのように最適共有化メモリを扱うことが可能であるため、スヌープサイクルとそれに関するパフォーマンスの低下が回避されうるということである。これにより、グラフィックコントローラからのCPUキャッシュのサイクルのスヌープ処理の実行が不要となり、最適共有化メモリはあたかもそれがアンキャッシュ属性により使用されていたかのように効果的に扱われるかもしれない。
図1及び図2の以下の説明は、従来技術により「共有可能な(shareable)」グラフィックメモリ領域がどのように与えられるかを説明するものである。以下で用いられる「共有可能」とは、以降においてより詳細に説明されるように、本発明の実施例による「最適共有化(optimally shared)」と区別するためのものであるということは理解されるべきである。
図1は、商業的に入手可能であり、本発明の実施例の実現に適したインテルコーポレーションにより製造されるコンピュータシステムの各種要素を示す。図1に示されるブロック110は、グラフィック機能がシステム全体に統合されている「統合グラフィック」システムの要素を示す。より詳細には、グラフィックプロセッサは、チップセットのメモリコントローラハブ(MCH)コンポーネントに統合されてもよい。
図1に示されるシステムでは、共有可能なグラフィックメモリは以下のように与えられる。グラフィックプロセッサページトランスレーションテーブル(GTT)107は、グラフィックプロセッサユニット(GPU)パイプライン109を介しグラフィックプロセッサにアクセス可能である。GTT107は、トランスレーションルックアサイドバッファ(TLB)108を用いて、物理的アドレス空間100のグラフィックアパーチャ(graphics aperture)106にシステムメモリページ102をマッピングする。グラフィックアパーチャ106のアドレスは、システムメモリの最上位より高位なものである。グラフィックアパーチャ106は、グラフィックプロセッサにとって「可視的(visible)」なものである(すなわち、対応するシステムメモリページへのアクセスに利用することができる)。
グラフィックアパーチャ106はまた、ホストCPUページテーブル104に保持されるマッピング(GTT107のマッピングに対応する)を介してホストCPUに可視的なものである。ホストCPUページテーブル104は、ホストCPUパイプライン103を介しホストCPUにアクセス可能である。ページテーブル104は、トランスレーションルックアサイドバッファ(TLB)105を利用し、システムメモリページ102の直接的マッピングを維持する。ここで、このマッピングは「バーチャルマッピング(virtual mapping)」と呼ばれる。グラフィックアパーチャに対してGTT107により維持されるマッピングと、ホストCPUページテーブル104により維持されるバーチャルマッピングは、各自が物理的アドレス空間の非重複領域のアドレスにマッピングするため互いに異なるが、各々は同一のシステムメモリページに対応している。何れのマッピングもホストCPUにより実行されるアプリケーションにとって可視的なものである。従って、グラフィックプロセッサとホストCPUの両方に可視的な共有可能なメモリの領域が提供されてもよい。
統合されたグラフィックを利用する他の実施例では、グラフィックプロセッサとホストCPUの両方に可視的なグラフィックアパーチャのマッピングのみが提供されるかもしれない。
図2は、共有可能なグラフィックメモリを提供するシステムの他の可能な実施例を示す。図2の実施例では、グラフィック機能はシステム全体に統合されてはいないが、代わりに独立した「アドイン(add−in)」グラフィックカードにより提供されている。このアドインカードは、コンピュータシステム全体のAGP(Advanced Graphics Port(1.Accelerated Graphics Portインタフェース仕様書,改訂版1.0,インテルコーポレーション,1996年7月31日、2.Accelerated Graphics Portインタフェース仕様書,改訂版2.0,インテルコーポレーション,1998年5月4日、3.改訂版3.0起案0.95,インテルコーポレーション,2001年6月12日、等を参照せよ))、PCI(Peripheral Component Interconnect Port(PCI SGI(Special Interest Group)PCIローカルバス仕様書,改訂版2.2,1998年12月18日発行、BCPRサービス印コーポレーションEISA仕様書,3.12版,1992年発行、USB仕様書,1.1版,1998年9月23日発行、または他の同様の周辺バスに関する仕様書などを参照せよ))、他の「ソケット」、あるいはアダプタインタフェースにプラグインされてもよい。
図2に示されるアドインカードシステムでは、共有可能なグラフィックメモリは以下のように与えられる。GART(Graphics Aperture Relocation Table)209は、システムメモリページ202を物理的アドレス空間200のAGP(Advanced Graphics Port)メモリエリア205にマッピングする。AGPメモリエリア205は、グラフィックプロセッサユニット(GPU)パイプライン206とAGPバスを介してグラフィックプロセッサに可視的なものである。
AGPメモリエリア205はまた、CPUパイプラインに関連したホストCPUに対し可視的なものである。CPUパイプライン203にアクセス可能なホストCPUページテーブル204は、AGPメモリ205の(GART209のマッピングに対応する)マッピングを維持する。ページテーブル204はまた、システムメモリページ202の直接的なマッピング(すなわち、上述のような「バーチャルマッピング」)を維持する。AGPメモリエリア205に対してGART209により維持されるマッピングと、ホストCPUページテーブル204により維持されるバーチャルマッピングは、各自が物理的アドレス空間の非重複領域のアドレスをマッピングするため互いに異なるものであるが、各々は同一のシステムメモリページに対応する。両方のマッピングは、ホストCPUにより実行されるアプリケーションにより可視的なものである。従って、グラフィックプロセッサとホストCPUの両方に可視的な共有可能なメモリが与えられてもよい。
図2に示されるようなアドインカードシステムはまた、グラフィックアパーチャ207にマッピングされるローカルビデオメモリ208を有するようにしてもよい。
前述のように、CPUとグラフィックプロセッサは、メモリの同一領域のデータに対して処理を実行するようにしてもよい。各アクセスは、典型的には、同時でなく逐次的に実行される。すなわち、典型的には、CPUにより実行されるアプリケーションは、グラフィックプロセッサによる処理を必要となするデータを生成し、CPUが当該データをグラフィックメモリに書き込むようにしてもよい。そのとき、アプリケーションは、グラフィックプロセッサに当該データによるレンダリング機能の実行を要求し、グラフィックプロセッサに対する処理を「ハンドオフ(hand off)」してもよい。グラフィックプロセッサが要求された処理の実行を完了すると、次にアプリケーションに処理をハンドオフするようにしてもよい。
上記ハンドオフ処理を考慮するに、本発明の実施例は共有可能なメモリを最適な方法により利用することを可能にする。従って、以降では、共有可能なメモリが本発明の実施例に従って生成または修正される場合には、当該メモリは「最適共有化メモリ」と呼ばれる。
図3は、本発明の実施例によるCPUとグラフィックプロセッサとの間のハンドオフ処理を示す状態図である。図3は、最適共有化メモリをホストCPUが使用しているモードと、最適共有化メモリをグラフィックプロセッサが使用しているモードとの間の移行を示している。便宜上、CPUが最適共有化メモリを使用しているとき、当該メモリは「CPUビュー(CPU view)」、「CPU最適化ビュー(CPU optimized view)」または「CPU最適ビュー(CPU optimal view)」にあると呼ばれ、グラフィックプロセッサが最適共有化メモリを使用しているとき、当該メモリは「グラフィックビュー(graphics view)」、「グラフィック最適化ビュー(graphics optimized view)」または「グラフィック最適ビュー(graphics optimal view)」にあると呼ばれるかもしれない。
楕円302は、最適共有化メモリがグラフィックプロセッサビューにある期間を表す。当該ビューは、最適共有化メモリのキャッシュ属性がグラフィックプロセッサのパフォーマンスに有利となるように割り当てられているという点で「最適化」されているかもしれない。
最適共有化メモリのグラフィック最適化ビューとCPU最適化ビューとの間の移行段階が存在するかもしれない。本発明の実施例によると、CPUのパフォーマンスに有利な最適共有化メモリの属性は、グラフィック最適化ビューとCPU最適化ビューとの間の移行段階において割り当てられてもよい。
この移行段階は、楕円303に示されるような「ロック(Lock)」処理を含むものであってもよい。このロック処理は、本発明の実施例により利用される既知のAPI(Application Program Interface)を参照する。LockAPIは、CPUにより実行されるアプリケーションにより呼び出されてもよい。一般に、LockAPIは、当該ロックを発したアプリケーションの排他的使用のためメモリ領域を予約する。
楕円300は、最適共有化メモリがCPUビューにある期間を表す。本発明の実施例によると、このCPUビューは、最適共有化メモリのキャッシュ属性がCPUのパフォーマンスに有利となるよう割り当てられているという点で「最適化」されている(例えば、最適共有化メモリがキャッシュ処理されてもよい)。特に、例えば、最適共有化メモリはホワイト−ブラック(White−Black)属性に割り当てられてもよい。
最適共有化メモリのCPU最適化ビューとグラフィック最適化ビューとの間には移行段階があってもよい。本発明の実施例によると、グラフィックプロセッサのパフォーマンスに有利な最適共有化メモリの属性は、CPU最適化ビューとグラフィック最適化ビューとの間の移行段階中において割り当てられてもよい。
この移行段階は、楕円301に示されるような「アンロック(Unlock)」処理を含むものであってもよい。アンロック処理は、本発明の実施例により利用される既知のAPIを参照する。UnlockAPIは、CPUにより実行されるアプリケーションにより呼び出されてもよい。一般に、UnlockAPIは、以前に実行されたLockAPIのアンドゥまたはリバースを行う。アプリケーションは、グラフィックプロセッサに当座はCPUが最適共有かメモリを使用しておらず、最適共有化が現在グラフィックプロセッサによりアクセス可能であるということを通知するため、UnlockAPIを呼び出すようにしてもよい。
本発明の実施例によると、CPU最適化ビューからグラフィック最適化ビューへの移行段階中に、キャッシュ一貫性が、以降においてより詳細に説明されるように、最適共有化メモリに課されるかもしれない(すなわち、CPUキャッシュの必要なデータがメモリに戻されるということが保証されるかもしれない)。
グラフィック「サーファスまたは面(surface)」は、上述のようなCPU最適化ビューとグラフィック最適化ビューとの間の移行が行われた最適共有化メモリにあるデータの一種である。しかしながら、一般に、グラフィックサーファスは、共有化メモリに配置される必要はない。
グラフィックサーファスは、様々な目的から利用される。サーファスは、アプリケーションからグラフィックプロセッサに送信されるコマンド、画素または頂点などのデータのバッファであるかもしれない。サーファスは、出力表示装置に表示されるか、あるいは単にアプリケーションに返すレンダリングの結果を含んでもよい。サーファスは、グラフィックプロセッサの中間結果の一時的格納のため生成され、それ自体グラフィックプロセッサに可視的なものである必要はない。
図4Aは、「矩形サーファス」と通常呼ばれるグラフィックサーファス400の一例を示す。矩形サーファスは、典型的には、画素からなる所定のピッチと幅により走査線に水平に構成されるグラフィック画素を有する。複数の走査線がサーファスを形成するため垂直的に結合されてもよい。このようなグラフィックサーファスは、典型的には、所与の水平方向の幅と垂直方向の走査線カウントを有する出力表示装置への伝達を可能にするように、あるいは以降の処理において表示または利用される他のサーファス上へのテクスチャパッチなどのサーファスのレンダリングを可能にするように構成されてもよい。
グラフィックサーファスのエリアは、ベースメモリアドレス401からのそれのオフセットと、サーファスのベースメモリ位置401からのエンドポイント402のオフセットに関して通常定義されるそれのサイズにより定義されるかもしれない。画成されたサブエリアが、画成されたサブエリア403などのサーファス内に定義されてもよい。画成されたサブエリアは、グラフィックアプリケーションやグラフィックプロセッサが当該サブエリア上で動作しているとき、「アクティブ状態」であるといわれる。画成されたサブエリアのメモリ位置は、当該サブエリアのベース座標xとy、これらベース座標からのオフセットwとhに関して定義されてもよいし、あるいは画成されたサブエリアの上端、左端、右端及び下端の座標として表現されてもよい。上記座標システムはまた、サーファス原点に対する矩形の四方の座標によりサーファス全体を記述するのに利用することができる。以降では、矩形サーファスやサブエリアの表現は、パラメータの略記であるRECT(t,l,b,r)により参照されるであろう。ここで、t,l,b,rはそれぞれ、サーファス原点に対する矩形の上端、左端、右端及び下端の座標を示す。
図4Bは、「リニアサーファス」と通常呼ばれるグラフィックサーファス410の他の可能な構成を示す。グラフィックサーファス410では、画成されたサブエリア411が当該サーファスのピッチに沿って伸びている。画成されたサブエリア411に対して、Start OffsetアドレスとLengthが指定されてもよい。サーファスの画素のアドレス位置は、Start OffestアドレスからEndアドレスまで線形にインクリメントされる。以降では、サブエリアの表現は、パラメータの略称であるLIN(o,l)により参照される。ここで、oとlはそれぞれ、サーファスの原点に対するStart−Offsetと、Start−Offsetに対するサブエリアの長さを表す。このようなサーファスは、典型的には、レンダリングコマンドのリスト、頂点あるいは頂点インデックスのリスト、あるいは映像またはテクスチャ圧縮技術を用いた圧縮画素データなどのグループ化されたグラフィカルデータを伝達するバッファに対して利用される。
図3に関して説明されたLockAPI及びUnlockAPIは、特定のパラメータが指定されることを可能とするものであってもよい。これらのパラメータは、例えば、ロックまたはアンロック対象のサーファス内の画成されたサブエリアのみの詳細、ロックまたはアンロック対象のサーファス全体の詳細を含むものであってもよい。通常、LockAPIとそれに続くUnlockAPIは、ロックまたはその後のアンロック対象の同一の画成されたサブエリアまたはサーファス全体を指定する。
グラフィックサーファスが生成され、アプリケーションが当該サーファス内部の画素を処理するとき、サーファスの一部はある期間においてホストCPUのキャッシュに置かれるかもしれない。当該キャッシュ内部では、ユニットとして扱われるサーファスデータの一部は当該データの「粒度(granularity)」と呼ばれる。図5は、画成されたサブエリア403などの画成されたサブエリアがキャッシュには位置されている間での画成されたサブエリアの一例を示す。走査線N及びN+1は画素を有し、画成されたサブエリア403の上に位置する。
さらに、画成されたサブエリア内の走査線N+1の範囲は、走査線が「上部(upper)」セグメント、「全体(whole)」セグメント及び「下部(lower)」セグメントにより構成されるものとしてどのようにみることができるか示す。「上部」及び「下部」の各セグメントは、キャッシュラインの長さより小さい範囲を有し、「全体」セグメントはキャッシュラインの長さに等しい範囲を有する。
1つのキャッシュラインからすべてのラインまでの特定の粒度に基づきキャッシュ内のデータラインの低レベルでの制御を可能にするキャッシュ制御「プリミティブ(primitives)」が存在する。このようなプリミティブは、キャッシュ内のデータ領域またはキャッシュ全体上でのキャッシュの一貫性を課すため利用されてもよい。例えば、「Cache−Line Flush(CLFLUSH)」と呼ばれる既知のインテル(登録商標)Pentium(登録商標)4プロセッサキャッシュ制御指示プリミティブは、供給される論理メモリアドレスパラメータに関するすべてのキャッシュラインに対して、キャッシュラインの長さに等しい粒度によりキャッシュデータをフラッシュする。
好ましくは、本発明の実施例によると、サーファスの画成されたサブエリアは、CLFLUSHなどのプリミティブを用いることにより、キャッシュラインの長さあるいはそれ以下のセグメントにおいて一貫性を備えるようにしてもよい。そのようなアプローチは、画成されたサブエリアをキャッシュラインの長さあるいはそれ以下のセグメントにおいて一貫性を備えるようにするための時間が、より粗い粒度を有するプリミティブを利用することにより、あるいはL1/L2キャッシュ全体をフラッシュすることにより画成されたサブエリアを一貫性を備えるようにするための時間より少ない場合には、特に効果的である。
他方、上述のような画成されたサブエリアをセグメントにおいて一貫性を有するようにするのに要する時間が、単にL1/L2キャッシュ全体をフラッシュするのに要する時間を超えるようにすることができる。与えられた画成されたサブエリアをセグメントにおいて一貫性を有するようにするために必要な最大時間が、外部のメモリバスのスピードと幅及び外部バスの幅単位で一貫性を課す対象となるキャッシュエリアのサイズに基づき計算することができる。キャッシュ全体をフラッシュするのに要する最大時間は、キャッシュサイズ及び外部のメモリバススピードと幅、それらと共に他のプロセッサのオーバヘッドに基づき同様にして計算することができる。以下で詳細に説明されるような本発明の実施例によると、所与の画成されたサブエリアをセグメントにおいて一貫性を有するようにするのに必要な最大時間が、キャッシュ全体をフラッシュするのに要する最大時間と比較され、最小時間で済むアプローチを用いて、この画成されたサブエリアを一貫性を有するようにしてもよい。
他のプリミティブとして、ページの粒度によりキャッシュデータをフラッシュする「Cache Page Flush(CPFLUSH)」が知られている。所与の状況下において、Cache Page Flushは、Cache−Line Flushより高速かつ効率的であるかもしれない。同様に、より大きな粒度のキャッシュフラッシュが容易に考えられるであろう。例えば、「Physical Address Region Cache−Flush」プリミティブは、メモリなどの物理的ページ(例えば、4KB)に関するグラフィック画素データのすべてのラインに対して一貫性を効率的に課すことができる。
本発明の実施例による最適共有化メモリが、異なる状況下において生成及び利用されてもよい。アプリケーションは、それが最適共有化メモリの生成及び利用を所望していることを明示的に指定するようにしてもよい。他方、最適共有化メモリは、意識することなく、すなわち、アプリケーションが最適共有化メモリを使用しているということを意識することなくアプリケーションに与えられているようにしてもよい。
前者の場合、グラフィックドライバは、まずアプリケーションに対してグラフィックサブシステムによりサポートされているサーファスタイプのリストを列挙または「アドバイス」し、その後、アプリケーションはこのリストから「最適共有化」タイプを選択し、この最適共有化タイプのメモリ領域の割り当てをリクエストする。最適共有化メモリ領域を割り当てるため、アプリケーションはグラフィックドライバに対するAPIを介して、以前に列挙された最適共有化タイプを有するメモリ領域を要求するようにしてもよい。例えば、アプリケーションは、最適共有化メモリタイプを有するグラフィックサーファスの生成をリクエストするようにしてもよい。
後者の場合には、アプリケーションには上述のような列挙されたリストは提示されず、代わりに、最適共有化メモリがアプリケーションのためのグラフィックドライバにより意識することなく、あるいは「水サーファス下で」提供されてもよい。グラフィックドライバは、アプリケーションから受信する情報に基づく「利用ポリシー」に従って最適共有化メモリの使用を決定するようにしてもよい。例えば、列挙されたリストから最適共有化メモリタイプを明示的に選択する代わりに、アプリケーションはグラフィカルAPIのアプリケーションからグラフィックドライバにわたされる「ヒント」を通じてグラフィックサーファスをどのように使用するか示すようにしてもよい。ヒントの例としては、例えば、アプリケーションがサーファスから読み出し/書き込みを行っていること、あるいはサーファスが不透明であることを示す情報があげられる(書き込み専用、すなわち例えば、グラフィックプロセッサのレンダリングのターゲットとしてのみ利用され、アプリケーションによっては読み返されない)。ヒントに基づき、グラフィックドライバは、アプリケーションに対して意識させることなく、最適共有化メモリサーファスを割り当て、どのようにしてパフォーマンスを最も良く向上させられるかの評価に基づきそれのキャッシュ属性を割り当てるようにしてもよい。
他の実施例では、グラフィックドライバは、利用と要求を判断することにより、一つのメモリタイプまたは位置で以前に生成されたグラフィックメモリが最適共有化タイプへの変更により良好に適しているということを決定するようにしてもよい。それ以降のある時点で、アプリケーションのアクセス利用パターンにおける転換に基づき、当該グラフィックメモリタイプはもとのタイプ及び/または位置に戻るように変更されてもよい。
前述のように、本発明の実施例では、最適共有化メモリは、それがCPUまたはグラフィックプロセッサにより使用されるかに依存して割り当てられるキャッシュ属性を有するようにしてもよい。CPUビューとグラフィックプロセッサビューとの間の移行が発生すると、割り当てられた属性が変更されるかもしれない。この移行がCPUビューからグラフィックプロセッサビューへのものであるとき、CPUのキャッシュの中のデータは、最適共有化メモリがグラフィックプロセッサに対してハンドオフされる前に、一貫性を有するようにしてもよい。このような実施例は、例えば、アプリケーションが最適共有化メモリを所望することを明示的に指定せず、代わりにグラフィックドライバが最適共有化メモリの使用を動的に決定するとき(例えば、上述のヒントを通じて)、効果的に利用されるかもしれない。このような場合、グラフィックメモリはすでに「古い」、すなわち、他のタイプとして使用されていることになるであろう。
他方、他の実施例によると、最適共有化メモリは常にキャッシュ属性を有するかもしれない(すなわち、割り当てられた属性に変更がない)。このような実施例は、例えば、アプリケーションが最適共有化メモリの生成及び利用を所望しているということを発生から決定するとき、効果的に利用されるかもしれない。そのような実施例は、CPUビューからグラフィックプロセッサビューへの移行が発生すると、CPUのキャッシュの中のデータが、最適共有化メモリがグラフィックプロセッサに対してハンドオフされる前に、一貫性を有するようにされてもよい。スヌープサイクルをトリガーしないために、グラフィックプロセッサのメモリインタフェースエンジンは、プログラム可能なDMAレジスタ設定、グラフィックプロセッサページテーブルエントリのページ属性、あるいは他の手段を通じて、最適共有化メモリがグラフィックプロセッサビューにあるとき、あたかもこの最適共有化メモリがアンキャッシュされているかのように最適共有化メモリを扱うよう指示されてもよい。ほとんどのプロセッサは、一貫性の問題に対する大部分の解決法がグラフィックメモリをアンキャッシュとして利用することに関するものであるため、典型的には、CPUのページテーブルキャッシュ属性設定とは独立に、グラフィックメモリをアンキャッシュとして扱うことをサポートしている。しかしながら、このメモリに対するCPUのページテーブルエントリでは、当該メモリはキャッシュ属性を継続して有する。
割り当てられた属性がCPUビューとグラフィックプロセッサビューとの間の移行中に変更される実施例が、以下においてより詳細に説明される。
図6は、サーファスがどちらのビューにあるかに依存して最適共有化メモリサーファスのキャッシュ属性を設定するプロセスフローを示す。
ブロック600に示されるように、最適共有化サーファスが初期的に生成される。サーファスの生成時に、処理を容易にするため各種データ構造が当該サーファスと関連付けされる。例えば、一実施例によると、一意的な識別子または「Surface handle」がサーファスに関連付けされ、当該サーファスへのポインタとして機能する。この「Surface handle」はさらに、「Surface−Object handle」にポインタ指定され、次に「Surface−Object」にポインタ指定される。「Surface−Object」は、メモリタイプ記述子(例えば、当該メモリが最適に共有化されているかなど)、サーファスのメモリベースオフセット、画素深さ、サイズ(幅、高さ)及び当該サーファスの他の特性などの情報を含むプライベートデータ構造を含むものであってもよい。このプライベートデータ構造はまた、「Surface−Object」に関する情報を有する「メンバー」を含むものであってもよい。
最適共有化メモリサーファスがブロック600に示されるように生成された後、ブロック601において決定されるように、当該メモリの属性がこのサーファスがどちらのビューにあるかに依存して設定されてもよい。
サーファスがグラフィックプロセッサのビューにある場合、ブロック602に示されるように、当該サーファスの属性は「Write−Combine」(またはアンキャッシュ)属性に設定されてもよい。その後、「Surface−Object」内で、ブロック604に示されるように、このメモリがグラフィックプロセッサの使用のため現在最適にマッピングされているということを示すタイプ記述子「tag」が設定される。
他方、サーファスがCPUのビューにある場合、当該サーファスの属性は、ブロック603に示されるように、「Write−Back」(キャッシュ)属性に設定され、そしてブロック605に示されるように、当該サーファスがCPUの利用に対して現在最適にマッピングされていることを示す「Surface−Object」タイプ記述子がタグ付けされる。
サーファスが生成されると、アプリケーションは、LockAPIまたはUnlockAPIを呼び出すことにより、サーファスのロックまたはアンロックを要求するかもしれない。LockAPIとUnlockAPIは、典型的には、Surface−Objectのhandleや「Bounded Area」パラメータなどのパラメータを含む。「Bounded Area」パラメータは、前述のようなサーファスのサブエリアを記述するものである。サーファスのロック処理は、アプリケーションによるサーファスへのデータの書き込みを可能にする。
最適共有化メモリがCPUにより初期的に使用され、当該最適共有化メモリが初期的にキャッシュモードで使用されていたと仮定すると、アプリケーションが最適共有化メモリへのさらなるアクセスを少なくとも当座は実行しない処理のあるポイントに到達すると、その後アプリケーションはグラフィックプロセッサに処理をハンドオフするかもしれない。そうするため、アプリケーションは、UnlockAPIを呼び出し、グラフィックプロセッサに最適共有化メモリ領域が現在アクセス可能であるということを通知する。Unlock処理では、グラフィックドライバは、アプリケーションがサーファスの変更処理を完了し、当該サーファスがもはやCPUによりアクセスされないということを暗黙的に知る。このため、CPUビューに有利なキャッシュ属性を有するサーファスに割り当てられた最適共有化メモリは、グラフィックプロセッサビューに有利なものに変更されたキャッシュ属性を有するかもしれない。
共有化メモリのキャッシュ属性がCPU最適化モード(すなわち、キャッシュ)からグラフィックプロセッサ最適化モード(すなわち、アンキャッシュ)に変更されるため、最適共有化メモリは一貫性を有するようにされるべきである。
図7Aは、プロセスが一貫性を課すようにメモリのキャッシュ属性の変更を含むときに、CPUビューからグラフィックプロセッサビューに最適共有化メモリを変換するプロセスフローを示す。ブロック701に示されるように、まずCPUにより処理される共有化メモリの一領域がサーファス全体であるか、あるいは単なるサーファスのサブエリアであるか判断される。このサブエリアまたはサーファス全体は、上述のLockAPIとUnlockAPIにわたされる「Bounded Area」または「Surface−Object」パラメータに対応するかもしれない。
最適共有化メモリ領域がサブエリアである場合、ブロック702に示されるように、当該サブエリアのスタート及びエンドアドレスが計算される。図4Aに関して説明されたように、サブエリアは、当該サブエリアの位置とサイズを記述するRECT(t,l,b,r)パラメータにより記述されてもよい。あるいは、図4Bで説明されたように、サブエリアは、サーファスベースアドレスとLengthパラメータからのStart Offsetにより記述されてもよい。その後、当該プロセスフローはブロック703に進む。
他方、最適共有化メモリ領域がサブエリアでない(すなわち、それがサーファス全体である)場合、プロセスフローはブロック703に直接進む。ブロック703において、開始ページがメモリの開始アドレスから、当該アドレスをページにより揃えられたスタートにダウン調整することにより導出されてもよい。これは、典型的には、当該アドレスの最下位ビットをページサイズまで破棄することにより行われる。例えば、ページが4KBである場合、当該アドレスと(4KB−1)のページ粒状スタートアドレスの1の補数逆元とのビット単位のAND演算により、「addr」が導出できる。
次に、ブロック704に示されるように、アドレス「addr」を有するキャッシュラインが、例えば、「addr」パラメータを「CLFLUSH」のようなキャッシュラインフラッシュプリミティブにわたすことによりフラッシュされてもよい。
キャッシュラインのフラッシュ処理は、ブロック705と706に示されるように、すべてのキャッシュラインがフラッシュされるまで継続されてもよい。ブロック705において、フラッシュされるべきキャッシュラインが残っているか判断される。ブロック705の判定結果が肯定的なものである場合、サブエリアの次のラインが、ブロック706に示されるように、「addr」パラメータをインクリメントすることによりフラッシュされ、ブロック704に戻るようにしてもよい。
すべてのキャッシュラインがフラッシュされると、プロセスフローはブロック707に進み、最適共有化メモリのキャッシュ属性がキャッシュ(Write−Backなど)からアンキャッシュ(Write−Combineなど)に変更される。その後、ブロック708に示されるように、当該プロセスは、INVLPGなどの既知のインテル(登録商標)プロセッサキャッシュ制御指示を用いて、前のキャッシュ属性を有するページTLB(Translation Lookaside Buffer)エントリを無効にするようにしてもよい。この処理は、メモリ属性の変更が実効され、インテルプロセッサ通信バスを用いてシステム内の他のCPUへの伝達を可能にするよう実行される。
当該プロセスは、ブロック709と710に示されるように、最適共有化メモリの各ページに対して継続されるかもしれない。ブロック709において、フラッシュされるべきページが残っているか判断される。ブロック709の判定結果が肯定的なものである場合、ブロック710に示されるように、「addr」パラメータをインクリメントすることにより次のページがフラッシュされ、ブロック704に戻る。
フラッシュされるべきページがもはや残っていない場合、プロセスフローはブロック711に進み、当該サーファスに対する以降の処理においてサーファスの現在のビューの追跡を可能にするため、最適共有かメモリが現在グラフィックプロセッサビューにあることを示すSurface−Objectのメモリタイプ記述子がタグ付けされる。
ある期間最適共有化メモリのデータ上での処理後、グラフィックプロセッサはCPUに最適共有メモリをハンドオフしてもよい。このハンドオフ中、最適共有化メモリのキャッシュ属性がグラフィックプロセッサに有利なものからCPUに有利なものへ変更されてもよい。本発明の実施例によると、CPUへのハンドオフの移行段階の最中、最適共有化メモリがグラフィック最適化ビューにある間に、グラフィックプロセッサが以前に動作していたサーファスまたはサブエリアが、当該サーファス上のラスタ処理のためアクティブまたはキューされる任意のペンディングレンダリングコマンドに関して、これらコマンドが完了するまで待機することにより同期されてもよい。さらに、グラフィックドライバは、ペンディングされているラスタ処理を追跡し、グラフィックプロセッサに残っているすべての関連する画素にサーファスに移動させ、レンダキャッシュ(render cache)をフラッシュする。
図7Bは、上述のような任意のペンディングされているレンダリングコマンドに関して最適共有化メモリを同期化するため、グラフィックプロセッサビューからCPUビューへの移行段階中に実現される方法の可能な一実施例を示すフロー図である。
ブロック721に示されるように、グラフィックプロセッサにより以前に用いられたサーファスが、それに関するペンディングされている処理を有するものとして特定される。これらペンディングされている処理は、当該サーファスに対するグラフィック処理が開始されるとき、以前に設定されたSurface−Object内の記述子とメンバーにより示されてもよい。その後、ブロック722に示されるように、当該サーファスに対する任意のレンダリングの出力が緯線としてペンディング状態であるか決定され、この場合、CPUに戻される前に、サーファスはグラフィックプロセッサに関して一貫性を有するようにされねばならない。ブロック722の判定結果が否定的なものである場合、さらなる処理は必要とされない。当該プロセスフローはブロック727に進む。
他方、サーファスに対するレンダリングがペンディングされ、まだ完全にはレンダリングされていないサーファス画素とまだメモリに書き戻されていないデータが存在することを示す場合、当該プロセスフローはブロック723に進む。ブロック723において、当該サーファス内の任意のサブエリアに対するレンダリングがペンディングされているか、グラフィックドライバによりSurface−Objectのメンバーまたは記述子により蓄積されたプライベートデータを用いて判断される。レンダリングがペンディングされていない場合、当該プロセスフローはブロック727に進む。
他方、ブロック723の判定結果が肯定的なものである場合、当該プロセスフローはブロック724に進む。ブロック724において、グラフィックプロセッサにおいて依然としてペンディング中のハンドオフされているサーファスに適用される任意のレンダリングコマンドが処理される。これには、最適共有化サーファスにレンダリングするコマンドと、無関係なサーファスにレンダリングするコマンドの両方を含む。ここでは、最適共有化サーファスの画素が無関係なサーファスに至る結果の生成に利用される。
その後、当該プロセスフローはブロック725に進み、以前に特定されたレンダリングコマンドの実行結果、すなわち、レンダリングされた画素が、当該サーファスがグラフィックプロセッサに関して一貫性を有することを保証するため、任意の内部レンダリングキューからフラッシュされる。当該プロセスフローはブロック726に続き、レンダリングコマンドとレンダリングした出力が完全に完了したと保証されるまで、ブロック723〜726の繰返しの処理が継続される。ブロック723〜726は、関連するレンダリング出力が残らなくなるまで、連続的に繰返される。
ブロック722の判定結果が否定的なものである場合、当該プロセスフローはブロック727に進み、共有化メモリのキャッシュ属性がアンキャッシュ(Write−Combineなど)からキャッシュ(Write−Backなど)に変更される。その後、ブロック728に示されるように、INVLPGなどの既知のインテル(登録商標)プロセッサキャッシュ制御指示を用いて、前のキャッシュ属性を有するページTLBを無効にする。この処理は、ページ属性の変更を実効化し、プロセッサ間の通信バスを通じてシステム内の他のプロセッサに伝達することを可能にするよう実行される。
当該プロセスは、共有化メモリの各ページに対して継続されてもよい。ブロック729において、キャッシュ属性を変更させるページが残っているか判断される。ブロック729の判定結果が肯定的なものである場合、当該プロセスはブロック727と728を繰り返す。
キャッシュ属性の変更対象となるページがもはや残っていない場合、当該プロセスフローはブロック730に進み、Surface−Object記述子が、最適共有化メモリが現在CPU及びアプリケーションソフトウェアのビューにあることを示すためタグ付けされる。
最適共有化メモリには常にCPU最適キャッシュ属性が割り当てられ、CPUビューからグラフィックプロセッサビューへの移行が発生するとき、グラフィックプロセッサが最適共有かメモリをアンキャッシュと扱うことができるように、CPUのキャッシュのデータが一貫性を有するようにされる。グラフィックプロセッサビューからホストCPUビューへの移行時に、グラフィックデータはグラフィックプロセッサのキャッシュに関して一貫性を有するようにされる。
図8は、後者の実施例による最適共有化メモリサーファスの生成または割り当てを行う可能な一実施例によるプロセスフローを示す。図8に示されるプロセスでは、最適共有化サーファスが、キャッシュ(Write−Backなど)属性を常に有するように生成される。すなわち、最適共有化メモリのキャッシュ属性は、CPUが当該メモリを使用しているか、あるいはグラフィックプロセッサが当該メモリを使用しているかに依存しない。むしろ、メモリがグラフィックプロセッサビューにあるとき、あたかもグラフィックプロセッサがアンキャッシュされているかのように、最適共有化メモリを扱うようグラフィックプロセッサは指示される。典型的には、グラフィックプロセッサは、グラフィックプロセッサのメモリにインタフェースを示し、当該メモリがプロセッサによりキャッシュされているか論理を送信するインタフェース制御レジスタまたはページテーブル記述子(図1の107のような)を有し、アクセスはスヌープ処理を必要とする。しかしながら、本発明の実施例による方法を適用することにより、最適共有化サーファスは、CPUビューとグラフィックプロセッサビューとの間の移行段階において一貫性を有するようにされ、スヌープ処理の必要性が回避される。
ブロック800と801に示されるように、最適共有化メモリサーファスがWrite−Back(WB)キャッシュ属性に割り当てられたページに割り当てられる。その後、ブロック802に示されるように、タイプ記述子またはヒントから、新たに割り当てられたメモリがどのように使用されるか、例えば、CPUによる読み出し/書き込み、または単なるオパーク(opaque)(グラフィックプロセッサによる使用のみ)などが判断される。
CPUが初期的に当該サーファスを使用している場合、プロセスフローは直接ブロック804に進み、この新たに割り当てられたサーファスがそれの現在のビューを示すように、Surface−Objectのメモリタイプ記述子にタグ付けされる。他方、グラフィックプロセッサが初期的に当該サーファスを使用している場合、メモリの以前及び/または無関係なアプリケーションの利用から依然としてキャッシュにあるサーファスに関する任意のデータを消去するようサーファスは一貫性を有するようにされる。この処理はブロック803に示され、インテル(登録商標)プロセッサキャッシュ制御指示WBINVD(Write−Back Invalidate Cache)、INVD(Invalidate Cache)あるいはCLFLUSHなどの既知の一貫性実施プリミティブによるキャッシュの任意のページのフラッシュ処理から構成される。CPFLUSH(Cache Page Flush)あるいは他のプロセッサキャッシュ制御プリミティブがこの目的のため利用することが可能である。その後、ブロック804に示されるように、新たに割り当てられたサーファスがそれの現在のビューを示すため、Surface−Object内のメモリタイプ記述子を介し特定またはタグ付けされるかもしれない。
当該サーファスが初期的にCPUビューに割り当てられる場合、アプリケーションは、グラフィックドライバによりアプリケーションにわたされたサーファスに対してハンドルを用いて、サーファスをロックするよう要求する。このサーファスのロックにより、アプリケーションがサーファスにデータを書き込むことを可能にする。アプリケーションは、上述のように、LockAPIを呼び出すことにより、このロックを要求してもよい。
当該サーファスのビューがグラフィックプロセッサビューに変更すると、CPUは使用時に最適共有化メモリに対し読み出し及び書き込みを行っていたかもしれないため、最適共有化メモリはグラフィックプロセッサに関して一貫性を有するようにされる必要がある。図9Aは、一貫性を実施するための方法の可能な一実施例を示すフロー図である。
ブロック901に示されるように、まず、CPU上で実行するアプリケーションソフトウェアにより使用されている最適共有化メモリの一領域がサーファス全体をカバーしているか、あるいは単にサーファス内部の画成されたサブエリアをカバーしているか決定される。この画成されたサブエリアあるいはサーファス全体のエリアは、上述のようなLock及びUnlockに従う画成されたエリアまたはサーファス全体のエリアに対応する。
最適共有化メモリの当該領域がサブエリアでない(すなわち、サーファス全体である)と判断されると、ブロック902に示されるように、このサーファスを一貫性を有するようにするための時間が、(本発明の実施例はマルチCPUシステムで利用されているため)すべてのCPUのすべてのキャッシュのフラッシュを実行するのに要する時間の1/2以上かかるか判断するため計算が行われる。
ブロック902の計算結果が肯定的なものである場合、ブロック903に示されるように、CPUのL1及びL2キャッシュ全体のフラッシュが、最適共有化メモリのこれらキャッシュのコンテンツを格納し、当該メモリを一貫性を有するようにするため実行される。その後、ブロック912に示されるように、サーファスがグラフィックプロセッサの使用に最適なビューであることを示すSurface−Objectのメモリタイプ記述子がタグ付けされる。ブロック902の計算結果が否定的なものである場合、プロセスフローは後述されるブロック905に進む。
最適共有化メモリ領域がサブエリアである場合、ブロック904に示されるように、当該サブエリアのスタート及びエンドアドレスが計算されてもよい。このサブエリアは図4Aと同様にRECT(t,l,b,r)パラメータにより記述されてもよい。ここで、サブエリアの画成された形状は、当該サブエリアの位置とサイズを示す矩形の上下左右の座標を用いて記述される。あるいは、サブエリアは、図4Bと同様にStart OffsetアドレスとLengthにより記述される線形サーファスであってもよい。
サブエリアのスタート及びエンドアドレスが計算されると、プロセスフローはブロック905に進み、当該サブエリアがキャッシュラインの途中から始まるか検出される。ブロック905の判定結果が肯定的なものである場合、ブロック906が実行され、一貫性が課されるエリアのスタートが再び揃えられ、ダーティ(dirty)なキャッシュラインがキャッシュラインフラッシュにより一貫性が課される特定アドレスで無効にされ、プロセスフローはブロック907に進む。
ブロック905の判定結果が否定的なものである場合、プロセスフローはブロック907に進む。ブロック907において、アドレス「addr」に対応するキャッシュデータを有するキャッシュラインは、例えば、「addr」パラメータを「CLFLUSH」などのキャッシュラインフラッシュプリミティブにわたすことによりフラッシュされてもよい。
その後、ブロック909に示されるように、矩形または線形サブエリアのラインのエンドに到達したか判断される。ブロック909の判定結果が否定的なものである場合、ブロック908に示されるように、キャッシュラインのサイズに等しい分だけ「addr」パラメータをインクリメントすることにより、次のキャッシュラインがフラッシュされ、ブロック907に戻る。
ブロック909の判定結果が肯定的なものである場合、プロセスフローはブロック910に進む。ブロック910において、サブエリアのエンドに到達したか判断される。サブエリアのエンドに到達していれば、グラフィックプロセッサによる利用のため最適メモリ領域を一貫性を有するようにするため、サブエリア全体がフラッシュされ、プロセスフローはブロック912に進む。
そうでない場合には、矩形のサブエリアの次のラインが、ブロック911に示されるように、任意の位置合わせのため調整されるサブエリアのサーファスピッチから幅を差し引いたサイズに等しい分だけ「addr」パラメータをインクリメントすることによりフラッシュされ、ブロック905に戻る。
上記プロセスに用いられるキャッシュラインフラッシュ(CLFLUSH)は、相対的に小さな粒度を有する(すなわち、相対的に小さなデータ部分を扱う)。対照的に、ページフラッシュ(CPFLUSH)は、メモリの一ページに関するキャッシュラインのすべてをフラッシュする。従って、実施例によると、最適共有化メモリが後述のグラフィックプロセッサに対しハンドオフされるとき、一貫性を実施するプロセスは、最小のプロセッサオーバヘッドによりグラフィカルデータのより大きな部分に対して一貫性を実施するため、キャッシュラインフラッシュでなくページフラッシュを利用するようにしてもよい。所与の条件の下、ページフラッシュ用いたプロセスは、共有領域をラインに分割するオーバヘッドを行うよりも高速かつ効率的であるかもしれない。
あるいは、メモリ領域をパラメータとし、当該領域のすべてのデータがキャッシュ一貫性を有することを保証することにより、与えられたメモリ領域を効率的に処理するCPU指示が考えられる。
最適共有化メモリが上記プロセスにより一貫性を有するようにされると、この最適共有化メモリのデータは、あたかもそれがアンキャッシュまたはWrite−Combineページキャッシュ属性を使用しているかのように、グラフィックプロセッサにより処理されることが可能である。
ある期間において最適共有化メモリのサーファス及びデータの使用後、グラフィックプロセッサは、共有メモリをCPUにハンドオフしてもよい。本発明の実施例によると、CPUへのハンドオフの移行段階中に、共有メモリがグラフィック最適化ビューにある間に、グラフィックプロセッサにより以前に処理されたサーファスまたはサブエリアは、当該サーファス上でラスタ処理されるためアクティブまたはキューされる任意のペンディングレンダリングコマンドの完了を含む、グラフィックプロセッサに関して同期化される。さらに、グラフィックドライバは、これらのレンダリングコマンドのペンディングされているラスタ処理を追跡し、当該サーファスが一貫性を有することを保証するためレンダキャッシュをフラッシュする。
図9Bは、上記処理を実現する方法の可能な一実施例を示すフロー図である。
ブロック921に示されるように、グラフィックプロセッサにより以前に利用されたサーファスが、それに関連するペンディングされている処理を有するものとして特定される。これらのペンディングされている処理は、当該サーファスに対するグラフィック処理の開始時に設定されたSurface−Object内の記述子とメンバーにより示されるかもしれない。その後、ブロック922に示されるように、その後、ブロック922に示されるように、サーファスに対する任意のレンダリングの出力が依然としてペンディングされているか判断される。その場合、当該サーファスは、CPUに戻すことが可能となる前に、グラフィックプロセッサに関して一貫性を有するようにされねばならない。ブロック922の判定結果が否定的なものである場合、さらなる処理は必要とされない。プロセスフローはブロック927に進み、当該サーファスがCPU及びアプリケーションのビューにおいて現在最適であるということを示すSurface−Objectのメモリタイプ記述子がタグ付けされる。
他方、サーファスに対するレンダリングがペンディングされ、まだ完全にレンダリングされていないサーファス画素と、まだメモリに書き改めていないデータがあると示している場合、プロセスフローはブロック923に進む。ブロック923において、当該サーファスの中の任意のサブエリアに対するレンダリングがペンディングされているか、グラフィックドライバによりSurface−Objectのメンバーまたは記述子に蓄積されているプライベートデータを用いて判断される。レンダリングがペンディングされていない場合、プロセスフローはブロック927に進む。
他方、ブロック923の判定結果が肯定的なものである場合、プロセスフローはブロック924に進む。ブロック924において、グラフィックプロセッサにおいて依然としてペンディングされている、ハンドオフされているサーファスに適用される任意のレンダリングコマンドが処理される。これには、最適共有化サーファスに対するコマンドと、無関係なサーファスに対するコマンドの両方が含まれるが、最適共有化サーファスの画素は無関係なサーファスにもたらされる結果を生成するのに利用される。
その後、プロセスフローはブロック925に進み、以前に特定されたレンダリングコマンドの実行結果、すなわち、レンダリングされた画素が、当該サーファスがグラフィックプロセッサに関して一貫性を有することを保証するため、内部の任意のレンダリングキューからフラッシュされる。プロセスフローはブロック926に進み、レンダリングコマンドとレンダリングの出力が完全に完了したことが確認されるまで、ブロック923〜926の繰り返しが継続される。ブロック923〜926は、関連するレンダリング出力が残らなくなるまで、連続的に繰り返される。
本発明の実施例によると、CPUに有利なキャッシュ属性を有するようにするための最適共有化メモリの変換は、LockAPIまたは意味的に等価なインタフェース内で行われるが、グラフィックプロセッサに有利な属性を有するようにするための最適共有化メモリの変換は、UnlockAPIまたは意味的に等価なインタフェース内で行われる。いくつかの実施例では、Lock及びUnlockAPIはグラフィック装置ドライバレベルで実行されるかもしれない。しかしながら、本発明の実施例はこの変換をLock及びUnlockAPI内で実行することに限定されるものではない。例えば、共有されたオーナー権限を容易にする上でのアクセスの開始と終了を交渉する意味的に等価なアクションを示す、BeginAccessやEndAccessAPIなどの同様のインタフェースAPIが知られている。この変換は、例えば、他のインタフェース、内部のメモリ管理及び他の動作内の各種他のコードレベルで実行することができる。
より一般的には、例示されたプロセスフローなどの開示されたプログラミング構造、及び特定されたAPIやキャッシュ制御プリミティブは、任意なものであり、任意に割り当てられた記憶法により呼び出された広範なコンピュータ指示シーケンスにおいて実現することが可能な機能を代表するものである。
本発明の実現形態は、ディスケット、磁気テープ、ディスクあるいはCD−ROMなどのコンピュータ使用可能な媒体上に格納及び搬送されるコンピュータ実行可能な指示として具体的に実現されてもよい。これらの指示は、例えば、グラフィック装置ドライバにおいて実現することが可能である。これらの指示は、適切な読取装置を介してコンピュータメモリにダウンロードされ、そこから本発明の効果的特徴を実効化するようプロセッサにより指示はフェッチ及び実行される。
本発明の実施例は、様々な用途に効果的である。例えば、MPEG(Moving Pictures Expert Group Port(1.ISO/IEC11172−1/2/3(パート1:システム/2:映像/3:音声):約1.5メガビット/秒までのデジタル記憶媒体に対する動画及びそれに関する音声の符号化、2.ISO/IEC13818−1/2/3(パート1:システム/2:映像/3:音声):動画とそれに関する音声情報の汎用的符号化、を参照せよ)アプリケーションは、メモリに格納され、以降においてCPUにより読み出される「キーフレーム」を生成し、このキーフレームに基づき補間された中間フレームを生成する。キーフレームをCPUによる読み出しに実質的に最適な共有メモリに格納することを可能にすることにより、エイリアシング、スヌープサイクル及び従来アプローチによる同様のものを回避しながら、MPEGアプリケーションのパフォーマンスを実質的に向上させることができる。
本発明の他の用途は、3Dアプリケーションに関するものである。そのようなアプリケーションでは、頂点バッファが典型的には生成される。頂点バッファは、ポリゴンの点または頂点により満たされたバッファであり、これらの頂点はインデックス付けを行うことが可能である。アプリケーションによる生成後、典型的には、頂点バッファはレンダリング対象のグラフィックプロセッサにハンドオフされる。アプリケーションは、例えば、グラフィカルオブジェクトが互いに「衝突」するか検出するため、頂点バッファのデータを読み出す必要がある。あるいは、例えば、アプリケーションは、グラフィカルオブジェクトに「モーフィング(morph)」、屈曲などを行わせるためグラフィカルオブジェクトを操作できるように、頂点の変更をする必要ができる。
本発明の実施例によると、頂点バッファは共有メモリタイプを有するように生成することができる。その後、頂点バッファは、CPUビュー(アプリケーションによる頂点データの読み出しのため)とグラフィックビュー(頂点データに対するレンダリング処理を実行するため)の両方からバッファに効率的にアクセスすることを可能にするフォーマットを有するようになる。
本発明の他の有用な用途は、従来の3Dパイプラインにおけるグラフィックスの「変形及びライティング」処理に関するものであったり、あるいは最新の「プログラム可能な頂点シェーダ(Vertex Shaders)」における複雑な頂点操作に関するものである。何れの例でも、アプリケーションは、レンダリング対象のオブジェクトの頂点を含む幾何のバッファを生成するようにしてもよい。これらの頂点は、他のオブジェクト共に画サーファス上にレンダリングすることが可能な可視空間にモデルが生成される「ワールドスペース(world space)」から変形及びライティングする必要があるポリゴンを記述する。このプロセスでは、頂点は、頂点データの読み出し、変更及び書き込みに関する操作が行われる必要がある。
コンピュータチップセットの中には、変形及びライティングアプリケーションの実行に特化したグラフィックハードウェアを含むものもある。あるいは、CPUの特殊命令セットの一部は、変形及びライティング処理の高速化のために利用されてもよい。
後者の場合には、プロセッサメーカーは、ソフトウェアベンダが特殊な変形及びライティングハードウェアを含まないグラフィックチップセットを利用できるように、「PSGP(Processor−Specific Graphics Pipeline)」としてCPUのパイプラインの一部を提供する。PSGPパイプラインは、ホストCPUを用いて、変形及びライティング処理を実行し、これにより変形及びライティング処理された頂点データはレンダリングでの利用のためグラフィックプロセッサに以降でわたされる。
CPUにより変形及びライティング処理が実行されている期間においては、当該処理がキャッシュモードで実行することが可能である場合に最も効率的である。「クリッピング(clipping)」を伴う場合、CPUによりデータが読み出され、操作される必要がある。これにはメモリバッファからのデータの読み出し、操作及びバッファへの書き込みを要するため、メモリがキャッシュモードであるときにこれらの処理は最適に実行することができる。さらに、頂点に対し実行される処理がプログラム的に複雑である場合、フルにプログラム可能な頂点シェーダから明らかに可能である。1つの頂点の処理は、オブジェクトサーファス移動マッピングや環境ライティング効果などの複雑な効果を行うため、各頂点と共に他の多数の頂点の多数の読み出し及び書き込みを伴う。
本発明によると、共有メモリは何れのビューに対しても最適にフォーマット化されるため、変形及びライティング処理をとても効率的に実行することができ、バッファやデータのエイリアシングは必要でない。
本発明の他の可能な用途は、ハードウェアによって直接的には必ずしもサポートされる必要のない高度なレンダリングを実行することができるグラフィックのAPIの実現に関するものである。APIにより与えられるレンダリングの一部は、「ハードウェア高速化可能」(グラフィックプロセッサによる実行が可能な)であり、また他の部分はそうでなくてもよい。高速化可能な処理をグラフィックプロセッサ上で可能な限りCPU処理とパラレルに実行する効率性を向上させるかもしれない。これは、グラフィックプロセッサにより実行される場合には、CPUがベジエ曲線などの複雑な形状の次の頂点を自由に生成したり、あるいはレンダリング効果の複雑なラスタ処理工程を実行することができるようにMove、Fillまたは整数とブール処理などのレンダリングプロセス内のよくあるレンダリング処理に対して特に真である。
本発明のいくつかの実施例が具体的に例示及び説明された。しかしながら、本発明の変更及び変形が、上記教示によりカバーされ、本発明の趣旨及び範囲から逸脱することなく添付したクレームの範囲内にあるということは理解されるであろう。
図1は、CPUとグラフィックプロセッサとの間で共有されるコンピュータメモリの可能な一実施例を示す。 図2は、CPUとグラフィックプロセッサとの間で共有されるコンピュータメモリの可能な他の実施例を示す。 図3は、CPUにより最適共有化メモリが使用されているモードと、グラフィックプロセッサにより最適共有化メモリが使用されているモードとの間の移行を示す状態図を示す。 図4Aは、グラフィックサーファスとバッファと共に、サーファスパラメータを介し記述可能なサーファスのサブエリアのタイプの例を示す。 図4Bは、グラフィックサーファスとバッファと共に、サーファスパラメータを介し記述可能なサーファスのサブエリアのタイプの例を示す。 図5は、グラフィックサーファスの画成されたエリアの走査線を示す。 図6は、一実施例による最適共有メモリ領域を割り当てるプロセスのフロー図を示す。 図7Aは、図6の実施例によるサーファスまたはサーファスの画成されたサブエリアを一貫性を有するようにするためのプロセスのフロー図を示す。 図7Bは、図6の実施例によるグラフィックサーファスに対するペンディングされているレンダリング処理の完了及び当該グラフィックサーファスのキャッシュ属性の変更のためのフロー図を示す。 図8は、他の実施例による最適共有化メモリ領域を割り当てるプロセスのフロー図を示す。 図9Aは、図8の実施例によるサーファスまたはサーファスの画成されたサブエリアを一貫性を有するようにするためのプロセスのフロー図を示す。 図9Bは、図8の実施例によるグラフィックサーファスに対するペンディングされているレンダリング処理の完了及び当該グラフィックサーファスのキャッシュ属性の変更のためのフロー図を示す。

Claims (40)

  1. CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記共有化されたメモリ領域に前記CPUの処理効率に有利な属性を割り当てるステップと、
    前記CPUが前記メモリ領域を使用している第1モードから、前記グラフィックプロセッサが前記メモリ領域を使用している第2モードへの移行を実行するステップと、
    前記第1モードから前記第2モードへの移行中、前記属性を前記グラフィックプロセッサの処理効率に有利な属性に変更するステップとから構成される方法。
  2. 請求項1記載の方法であって、前記CPUの処理効率に有利な属性は、キャッシュ属性であることを特徴とする方法。
  3. 請求項1記載の方法であって、前記グラフィックプロセッサの処理効率に有利な属性は、アンキャッシュ属性であることを特徴とする方法。
  4. 請求項1記載の方法であって、前記第1モードから前記第2モードへの移行中、前記共有化されたメモリ領域は一貫性を有するようにされることを特徴とする方法。
  5. 請求項1記載の方法であって、さらに、
    前記第2モードから前記第1モードへの移行を実行するステップと、
    前記第2モードから前記第1モードへの移行中、前記属性を前記CPUの処理効率に有利な属性に変更するステップとを有することを特徴とする方法。
  6. 請求項1記載の方法であって、前記共有化されたメモリ領域は、グラフィックサーファスに配分されることを特徴とする方法。
  7. 請求項6記載の方法であって、前記CPUにより実行されるアプリケーションは、前記グラフィックサーファスの画成されたエリアのデータに対して処理を実行することを特徴とする方法。
  8. 請求項7記載の方法であって、前記第1モードから前記第2モードへの移行中、前記画成されたエリアを一貫性を有するようにするため、キャッシュフラッシュのどの粒度が使用されるべきか決定することを特徴とする方法。
  9. 請求項8記載の方法であって、前記粒度は、キャッシュライン、キャッシュページ及びキャッシュ全体の何れかであることを特徴とする方法。
  10. (a)CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    (b)前記CPUの処理効率に有利な第1モードで前記共有化されたメモリ領域を使用するステップと、
    (c)前記グラフィックプロセッサの処理効率に有利な第2モードで前記共有化されたメモリ領域を使用するステップとから構成される方法。
  11. 請求項10記載の方法であって、さらに、
    前記ステップ(b)と(c)との間に、前記共有化されたメモリ領域のデータを一貫性を有するようにするステップを有することを特徴とする方法。
  12. 請求項11記載の方法であって、前記共有化されたメモリ領域は、高々キャッシュラインの長さを単位にして一貫性を有するようにされることを特徴とする方法。
  13. 請求項11記載の方法であって、前記共有化されたメモリ領域は、高々ページを単位にして一貫性を有するようにされることを特徴とする方法。
  14. CPUとグラフィックプロセッサとの共有使用のためメモリ領域を配分するステップと、
    前記メモリ領域に前記CPUと前記グラフィックプロセッサのそれぞれのパフォーマンスに有利な2つの代替的属性の1つを割り当てるステップと、
    前記CPUあるいは前記グラフィックプロセッサの何れかを用いて、前記メモリ領域が対応する前記有利な属性を有する間、前記メモリ領域にアクセスするステップと、
    前記メモリ領域の使用が前記CPUと前記グラフィックプロセッサとの間で変更するとき、前記割り当てられた属性を前記代替的属性に変更するステップとからなる方法。
  15. 請求項14記載の方法であって、前記2つの代替的属性は、前記CPUに対するキャッシュ属性と前記グラフィックプロセッサに対するアンキャッシュ属性であることを特徴とする方法。
  16. CPUとグラフィックプロセッサとの共有使用のためメモリ領域を配分するステップと、
    前記メモリ領域にキャッシュ属性を割り当てるステップと、
    前記CPUを用いて前記共有化されたメモリ領域にアクセスするステップと、
    前記共有化されたメモリ領域を一貫性を有するようにするステップと、
    前記グラフィックプロセッサによる使用のため前記共有化されたメモリ領域をハンドオフするステップとからなることを特徴とする方法。
  17. 請求項16記載の方法であって、前記共有化されたメモリ領域は、高々キャッシュラインの長さを単位にして一貫性を有するようにされることを特徴とする方法。
  18. CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記メモリ領域にキャッシュ属性を割り当てるステップと、
    前記CPU上で前記共有化されたメモリ領域のデータの読み出し、変更あるいは書き込みを行うアプリケーションを実行するステップと、
    前記共有化されたメモリ領域を一貫性を有するようにするステップと、
    前記キャッシュ属性をアンキャッシュ属性に変更するステップと、
    前記データのレンダリングのため前記グラフィックプロセッサに対して前記共有化されたメモリ領域をハンドオフするステップとからなることを特徴とする方法。
  19. 請求項18記載の方法であって、さらに、
    前記グラフィックプロセッサにより前記データに対してレンダリング処理を実行するステップと、
    前記アンキャッシュ属性をキャッシュ属性に再変更するステップと、
    さらなる処理のため前記CPUに対して前記共有化されたメモリ領域をハンドオフするステップとを有することを特徴とする方法。
  20. 請求項18記載の方法であって、前記メモリ領域はグラフィックサーファスであることを特徴とする方法。
  21. CPUと、
    グラフィックプロセッサと、
    前記CPUと前記グラフィックプロセッサとの間で共有されるメモリ領域と、
    前記メモリ領域を使用しているのが前記CPUか前記グラフィックプロセッサかに依存して、前記メモリ領域のキャッシュ属性を変更するコンピュータ実行可能な指示とからなることを特徴とするシステム。
  22. 請求項21記載のシステムであって、前記指示は、グラフィックドライバソフトウェアに含まれることを特徴とするシステム。
  23. 請求項21記載のシステムであって、前記グラフィックプロセッサは、前記CPUを含むチップセットに一体化されていることを特徴とするシステム。
  24. 請求項21記載のシステムであって、前記グラフィックプロセッサは、セパレート型のアドインカードに含まれることを特徴とするシステム。
  25. CPUとグラフィックプロセッサとの間で共有されるメモリ領域の属性を、前記メモリ領域を使用しているのが前記CPUか前記グラフィックプロセッサかに依存して変更するコンピュータ実行可能な指示を有するコンピュータ利用可能な媒体に具体的に実現されるプログラム。
  26. 請求項25記載のプログラムであって、前記指示は、前記CPUによる前記メモリ領域の使用から前記グラフィックプロセッサによる前記メモリ領域の使用への移行中、前記メモリ領域を一貫性を有するようにさせることを特徴とするプログラム。
  27. 請求項26記載のプログラムであって、前記移行中、前記メモリ領域を一貫性を有するようにするためどの粒度のキャッシュフラッシュが利用されるべきか決定することを特徴とするプログラム。
  28. プロセスを実現するプロセッサによる実行時にコンピュータ実行可能な指示を格納するコンピュータ利用可能な媒体であって、
    前記プロセスは、
    CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記共有化されたメモリ領域に前記CPUの処理効率に有利な属性を割り当てるステップと、
    前記CPUが前記メモリ領域を使用している第1モードから、前記グラフィックプロセッサが前記メモリ領域を使用している第2モードへの移行を実行するステップと、
    前記第1モードから前記第2モードへの移行中、前記属性を前記グラフィックプロセッサの処理効率に有利な属性に変更するステップとからなることを特徴とする媒体。
  29. 請求項28記載のコンピュータ利用可能な媒体であって、前記CPUの処理効率に有利な属性は、キャッシュ属性であることを特徴とする媒体。
  30. 請求項28記載のコンピュータ利用可能な媒体であって、前記グラフィックプロセッサの処理効率に有利な属性は、アンキャッシュ属性であることを特徴とする媒体。
  31. CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記共有化されたメモリ領域にキャッシュ属性を割り当てるステップと、
    前記CPUが前記メモリ領域を使用している第1モードから、前記グラフィックプロセッサが前記メモリ領域を使用している第2モードへの移行を実行するステップと、
    前記第2モードにおいて、前記グラフィックプロセッサに前記共有化されたメモリ領域をあたかもアンキャッシュであるかのように扱わせるステップとからなることを特徴とする方法。
  32. 請求項31記載の方法であって、前記第1モードから前記第2モードへの移行中、前記共有化されたメモリ領域は一貫性を有するようにされることを特徴とする方法。
  33. CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記メモリ領域にキャッシュ属性を割り当てるステップと、
    前記CPU上で前記共有化されたメモリ領域のデータの読み出し、変更あるいは書き込みを行うアプリケーションを実行するステップと、
    前記共有化されたメモリ領域を一貫性を有するようにするステップと、
    前記データのレンダリングのため前記グラフィックプロセッサに対して前記共有化されたメモリ領域をハンドオフするステップと、
    前記グラフィックプロセッサに前記共有化されたメモリ領域をあたかもアンキャッシュであるかのように扱わせるステップとからなることを特徴とする方法。
  34. 請求項33記載の方法であって、さらに、
    前記グラフィックプロセッサにより前記データに対してレンダリング処理を実行するステップと、
    さらなる処理のため前記CPUに対して前記共有化されたメモリ領域をハンドオフするステップとを有することを特徴とする方法。
  35. 請求項33記載の方法であって、前記メモリ領域は、グラフィックサーファスであることを特徴とする方法。
  36. プロセスを実現するプロセッサによる実行時にコンピュータ実行可能な指示を格納するコンピュータ利用可能な媒体であって、
    前記プロセスは、
    CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記共有化されたメモリ領域にキャッシュ属性を割り当てるステップと、
    前記CPUが前記メモリ領域を使用している第1モードから、前記グラフィックプロセッサが前記メモリ領域を使用している第2モードへの移行を実行するステップと、
    前記第2モードにおいて、前記グラフィックプロセッサに前記共有化されたメモリ領域をあたかもアンキャッシュであるかのように扱わせるステップとからなることを特徴とするコンピュータ利用可能な媒体。
  37. 請求項36記載のコンピュータ利用可能な媒体であって、前記第1モードから前記第2モードへの移行中、前記共有化されたメモリ領域は一貫性を有するようにされることを特徴とする媒体。
  38. プロセスを実現するプロセッサによる実行時にコンピュータ実行可能な指示を格納するコンピュータ利用可能な媒体であって、
    前記プロセスは、
    CPUとグラフィックプロセッサとの間の共有化のためメモリ領域を配分するステップと、
    前記メモリ領域にキャッシュ属性を割り当てるステップと、
    前記CPU上で前記共有化されたメモリ領域のデータの読み出し、変更あるいは書き込みを行うアプリケーションを実行するステップと、
    前記共有化されたメモリ領域を一貫性を有するようにするステップと、
    前記データのレンダリングのため前記グラフィックプロセッサに対して前記共有化されたメモリ領域をハンドオフするステップと、
    前記グラフィックプロセッサに前記共有化されたメモリ領域をあたかもアンキャッシュであるかのように扱わせるステップとからなることを特徴とする媒体。
  39. 請求項38記載のコンピュータ利用可能な媒体であって、前記プロセスはさらに、
    前記グラフィックプロセッサによる前記データに対するレンダリング処理を実行するステップと、
    さらなる処理のため前記CPUに対して前記共有化されたメモリ領域をハンドオフするステップとを有することを特徴とする媒体。
  40. 請求項38記載のコンピュータ利用可能な媒体であって、前記メモリ領域はグラフィックサーファスであることを特徴とする媒体。
JP2004504123A 2002-05-08 2003-04-24 ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム Expired - Lifetime JP4489580B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/140,263 US6891543B2 (en) 2002-05-08 2002-05-08 Method and system for optimally sharing memory between a host processor and graphics processor
PCT/US2003/012908 WO2003096197A1 (en) 2002-05-08 2003-04-24 Method and system for optimally sharing memory between a host processor and graphic processor

Publications (2)

Publication Number Publication Date
JP2005524907A true JP2005524907A (ja) 2005-08-18
JP4489580B2 JP4489580B2 (ja) 2010-06-23

Family

ID=29399416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004504123A Expired - Lifetime JP4489580B2 (ja) 2002-05-08 2003-04-24 ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム

Country Status (8)

Country Link
US (1) US6891543B2 (ja)
EP (1) EP1502194A1 (ja)
JP (1) JP4489580B2 (ja)
KR (1) KR100655355B1 (ja)
CN (1) CN1317648C (ja)
AU (1) AU2003225168A1 (ja)
TW (1) TWI249103B (ja)
WO (1) WO2003096197A1 (ja)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011065650A (ja) * 2009-09-18 2011-03-31 Intel Corp ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
KR20140001970A (ko) * 2010-12-15 2014-01-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
JP2014504416A (ja) * 2010-12-15 2014-02-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
CN104471554A (zh) * 2012-08-17 2015-03-25 英特尔公司 共享虚拟存储器
JP2015121945A (ja) * 2013-12-24 2015-07-02 Necプラットフォームズ株式会社 キャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法
JP2015524979A (ja) * 2012-08-17 2015-08-27 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
JP2015530683A (ja) * 2012-10-05 2015-10-15 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 異種計算システムにおけるコールド変換索引バッファミスを低減させること
KR101639943B1 (ko) * 2015-03-12 2016-07-15 성균관대학교산학협력단 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서
US9626234B2 (en) 2010-09-20 2017-04-18 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
KR20180085679A (ko) * 2017-01-19 2018-07-27 서울대학교산학협력단 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템
WO2020213400A1 (ja) * 2019-04-16 2020-10-22 株式会社デンソー 車両用装置、車両用装置の制御方法

Families Citing this family (163)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7268785B1 (en) * 2002-12-19 2007-09-11 Nvidia Corporation System and method for interfacing graphics program modules
GB0301448D0 (en) * 2003-01-22 2003-02-19 Falanx Microsystems As Microprocessor systems
US7549023B2 (en) * 2003-04-21 2009-06-16 Intel Corporation Method and apparatus to update a cache for security records
US8471852B1 (en) 2003-05-30 2013-06-25 Nvidia Corporation Method and system for tessellation of subdivision surfaces
US20050190193A1 (en) * 2004-03-01 2005-09-01 Freker David E. Apparatus and a method to adjust signal timing on a memory interface
US7023445B1 (en) * 2004-04-12 2006-04-04 Advanced Micro Devices, Inc. CPU and graphics unit with shared cache
US8134561B2 (en) 2004-04-16 2012-03-13 Apple Inc. System for optimizing graphics operations
US8704837B2 (en) 2004-04-16 2014-04-22 Apple Inc. High-level program interface for graphics operations
US7644239B2 (en) 2004-05-03 2010-01-05 Microsoft Corporation Non-volatile memory cache performance improvement
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US8044951B1 (en) * 2004-07-02 2011-10-25 Nvidia Corporation Integer-based functionality in a graphics shading language
TWI245560B (en) * 2004-08-19 2005-12-11 Realtek Semiconductor Corp Video data processing method and apparatus capable of saving bandwidth
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US7852341B1 (en) 2004-10-05 2010-12-14 Nvidia Corporation Method and system for patching instructions in a shader for a 3-D graphics pipeline
US7490197B2 (en) 2004-10-21 2009-02-10 Microsoft Corporation Using external memory devices to improve system performance
US8493396B2 (en) 2004-11-15 2013-07-23 Nvidia Corporation Multidimensional datapath processing in a video processor
US7490215B2 (en) * 2004-12-22 2009-02-10 Intel Corporation Media memory system and method for providing concurrent memory access to a plurality of processors through separate translation table information
US8667249B2 (en) 2004-12-22 2014-03-04 Intel Corporation Systems and methods exchanging data between processors through concurrent shared memory
US7663635B2 (en) * 2005-05-27 2010-02-16 Ati Technologies, Inc. Multiple video processor unit (VPU) memory mapping
US7486290B1 (en) * 2005-06-10 2009-02-03 Nvidia Corporation Graphical shader by using delay
US7831780B2 (en) * 2005-06-24 2010-11-09 Nvidia Corporation Operating system supplemental disk caching system and method
US7725609B2 (en) * 2005-08-05 2010-05-25 Qimonda Ag System memory device having a dual port
US7426607B2 (en) * 2005-08-05 2008-09-16 Infineon Technologies Ag Memory system and method of operating memory system
US7616202B1 (en) 2005-08-12 2009-11-10 Nvidia Corporation Compaction of z-only samples
US7817151B2 (en) * 2005-10-18 2010-10-19 Via Technologies, Inc. Hardware corrected software vertex shader
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US8571346B2 (en) 2005-10-26 2013-10-29 Nvidia Corporation Methods and devices for defective pixel detection
US7750956B2 (en) 2005-11-09 2010-07-06 Nvidia Corporation Using a graphics processing unit to correct video and audio data
US7873788B1 (en) 2005-11-15 2011-01-18 Oracle America, Inc. Re-fetching cache memory having coherent re-fetching
US7958312B2 (en) * 2005-11-15 2011-06-07 Oracle America, Inc. Small and power-efficient cache that can provide data for background DMA devices while the processor is in a low-power state
US7516274B2 (en) * 2005-11-15 2009-04-07 Sun Microsystems, Inc. Power conservation via DRAM access reduction
US7899990B2 (en) * 2005-11-15 2011-03-01 Oracle America, Inc. Power conservation via DRAM access
US7934054B1 (en) * 2005-11-15 2011-04-26 Oracle America, Inc. Re-fetching cache memory enabling alternative operational modes
US7768507B2 (en) * 2005-11-17 2010-08-03 Ati Technologies Ulc Methods and apparatus for driving a display device
US8212832B2 (en) * 2005-12-08 2012-07-03 Ati Technologies Ulc Method and apparatus with dynamic graphics surface memory allocation
US8588542B1 (en) 2005-12-13 2013-11-19 Nvidia Corporation Configurable and compact pixel processing apparatus
US8914557B2 (en) 2005-12-16 2014-12-16 Microsoft Corporation Optimizing write and wear performance for a memory
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
US8737832B1 (en) 2006-02-10 2014-05-27 Nvidia Corporation Flicker band automated detection system and method
JP4129693B2 (ja) * 2006-05-18 2008-08-06 コニカミノルタビジネステクノロジーズ株式会社 メモリ管理方法
US7412554B2 (en) * 2006-06-15 2008-08-12 Nvidia Corporation Bus interface controller for cost-effective high performance graphics system with two or more graphics processing units
US8112755B2 (en) * 2006-06-30 2012-02-07 Microsoft Corporation Reducing latencies in computing systems using probabilistic and/or decision-theoretic reasoning under scarce memory resources
US8154554B1 (en) * 2006-07-28 2012-04-10 Nvidia Corporation Unified assembly instruction set for graphics processing
US7952588B2 (en) * 2006-08-03 2011-05-31 Qualcomm Incorporated Graphics processing unit with extended vertex cache
US9099050B1 (en) 2006-08-24 2015-08-04 Nvidia Corporation Method and apparatus for dynamically modifying the graphics capabilities of a mobile device
US8594441B1 (en) 2006-09-12 2013-11-26 Nvidia Corporation Compressing image-based data using luminance
JP4369471B2 (ja) * 2006-12-27 2009-11-18 富士通株式会社 ミラーリングプログラム、ミラーリング方法、情報記憶装置
US7907138B2 (en) * 2006-12-29 2011-03-15 Intel Corporation System co-processor
US7949834B2 (en) * 2007-01-24 2011-05-24 Qualcomm Incorporated Method and apparatus for setting cache policies in a processor
US8723969B2 (en) 2007-03-20 2014-05-13 Nvidia Corporation Compensating for undesirable camera shakes during video capture
US8724895B2 (en) 2007-07-23 2014-05-13 Nvidia Corporation Techniques for reducing color artifacts in digital images
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8561037B2 (en) * 2007-08-29 2013-10-15 Convey Computer Compiler for generating an executable comprising instructions for a plurality of different instruction sets
US9710384B2 (en) 2008-01-04 2017-07-18 Micron Technology, Inc. Microprocessor architecture having alternative memory access paths
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
US9015399B2 (en) * 2007-08-20 2015-04-21 Convey Computer Multiple data channel memory module architecture
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8122229B2 (en) * 2007-09-12 2012-02-21 Convey Computer Dispatch mechanism for dispatching instructions from a host processor to a co-processor
US7941594B2 (en) * 2007-09-21 2011-05-10 Freescale Semiconductor, Inc. SDRAM sharing using a control surrogate
US8570634B2 (en) 2007-10-11 2013-10-29 Nvidia Corporation Image processing of an incoming light field using a spatial light modulator
US9177368B2 (en) 2007-12-17 2015-11-03 Nvidia Corporation Image distortion correction
US8780128B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Contiguously packed data
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US9064333B2 (en) 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8698908B2 (en) 2008-02-11 2014-04-15 Nvidia Corporation Efficient method for reducing noise and blur in a composite still image from a rolling shutter camera
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US9379156B2 (en) 2008-04-10 2016-06-28 Nvidia Corporation Per-channel image intensity correction
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US8390631B2 (en) * 2008-06-11 2013-03-05 Microsoft Corporation Synchronizing queued data access between multiple GPU rendering contexts
JP5395383B2 (ja) * 2008-08-21 2014-01-22 株式会社東芝 パイプライン演算プロセッサを備える制御システム
US9032151B2 (en) 2008-09-15 2015-05-12 Microsoft Technology Licensing, Llc Method and system for ensuring reliability of cache data and metadata subsequent to a reboot
US7953774B2 (en) 2008-09-19 2011-05-31 Microsoft Corporation Aggregation of write traffic to a data store
US8838850B2 (en) * 2008-11-17 2014-09-16 Violin Memory, Inc. Cluster control protocol
US8442059B1 (en) 2008-09-30 2013-05-14 Gridiron Systems, Inc. Storage proxy with virtual ports configuration
US8417895B1 (en) 2008-09-30 2013-04-09 Violin Memory Inc. System for maintaining coherency during offline changes to storage media
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
US8443150B1 (en) 2008-11-04 2013-05-14 Violin Memory Inc. Efficient reloading of data into cache resource
US8788758B1 (en) 2008-11-04 2014-07-22 Violin Memory Inc Least profitability used caching scheme
US8397241B2 (en) 2008-11-13 2013-03-12 Intel Corporation Language level support for shared virtual memory
US8373718B2 (en) 2008-12-10 2013-02-12 Nvidia Corporation Method and system for color enhancement with color volume adjustment and variable shift along luminance axis
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US9865233B2 (en) * 2008-12-30 2018-01-09 Intel Corporation Hybrid graphics display power management
CN102301341A (zh) * 2009-01-30 2011-12-28 三菱电机株式会社 状态显示装置
US8151061B2 (en) * 2009-03-10 2012-04-03 Intel Corporation Ensuring coherence between graphics and display domains
US8749662B2 (en) 2009-04-16 2014-06-10 Nvidia Corporation System and method for lens shading image correction
US8667366B1 (en) 2009-04-17 2014-03-04 Violin Memory, Inc. Efficient use of physical address space for data overflow and validation
US8650362B2 (en) 2009-04-17 2014-02-11 Violin Memory Inc. System for increasing utilization of storage media
US9547535B1 (en) * 2009-04-30 2017-01-17 Nvidia Corporation Method and system for providing shared memory access to graphics processing unit processes
US8395631B1 (en) * 2009-04-30 2013-03-12 Nvidia Corporation Method and system for sharing memory between multiple graphics processing units in a computer system
US8713252B1 (en) 2009-05-06 2014-04-29 Violin Memory, Inc. Transactional consistency scheme
US9069676B2 (en) 2009-06-03 2015-06-30 Violin Memory, Inc. Mapping engine for a storage device
US8402198B1 (en) 2009-06-03 2013-03-19 Violin Memory, Inc. Mapping engine for a storage device
US20110043518A1 (en) * 2009-08-21 2011-02-24 Nicolas Galoppo Von Borries Techniques to store and retrieve image data
US8402246B1 (en) * 2009-08-28 2013-03-19 Violin Memory, Inc. Alignment adjustment in a tiered storage system
US8675003B2 (en) * 2009-09-09 2014-03-18 Advanced Micro Devices, Inc. Efficient data access for unified pixel interpolation
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
US8933947B2 (en) * 2009-09-10 2015-01-13 Ati Technologies Ulc Reading a local memory of a processing unit
US9245371B2 (en) * 2009-09-11 2016-01-26 Nvidia Corporation Global stores and atomic operations
US8698918B2 (en) 2009-10-27 2014-04-15 Nvidia Corporation Automatic white balancing for photography
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
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US8832384B1 (en) 2010-07-29 2014-09-09 Violin Memory, Inc. Reassembling abstracted memory accesses for prefetching
US8959288B1 (en) 2010-07-29 2015-02-17 Violin Memory, Inc. Identifying invalid cache data
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US8972689B1 (en) 2011-02-02 2015-03-03 Violin Memory, Inc. Apparatus, method and system for using real-time performance feedback for modeling and improving access to solid state media
US8635416B1 (en) 2011-03-02 2014-01-21 Violin Memory Inc. Apparatus, method and system for using shadow drives for alternative drive commands
CN103108197A (zh) 2011-11-14 2013-05-15 辉达公司 一种用于3d视频无线显示的优先级压缩方法和系统
US9304570B2 (en) 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
CN104025013B (zh) 2011-12-29 2017-08-08 英特尔公司 在线性存储格式和y瓦片化存储格式之间转置图像数据
US9829715B2 (en) 2012-01-23 2017-11-28 Nvidia Corporation Eyewear device for transmitting signal and communication method thereof
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
US20130262736A1 (en) * 2012-03-30 2013-10-03 Ati Technologies Ulc Memory types for caching policies
US8898397B2 (en) 2012-04-11 2014-11-25 Moon J. Kim Memory and process sharing across multiple chipsets via input/output with virtualization
US10387331B2 (en) * 2012-06-05 2019-08-20 Vmware, Inc. Process for maintaining data write ordering through a cache
US10430190B2 (en) 2012-06-07 2019-10-01 Micron Technology, Inc. Systems and methods for selectively controlling multithreaded execution of executable code segments
US9864638B2 (en) 2012-06-22 2018-01-09 Intel Corporation Techniques for accessing a graphical processing unit memory by an application
US9105250B2 (en) 2012-08-03 2015-08-11 Nvidia Corporation Coverage compaction
US9798698B2 (en) 2012-08-13 2017-10-24 Nvidia Corporation System and method for multi-color dilu preconditioner
US9578224B2 (en) 2012-09-10 2017-02-21 Nvidia Corporation System and method for enhanced monoimaging
US9508318B2 (en) 2012-09-13 2016-11-29 Nvidia Corporation Dynamic color profile management for electronic devices
US9002125B2 (en) 2012-10-15 2015-04-07 Nvidia Corporation Z-plane compression with z-plane predictors
US9307213B2 (en) 2012-11-05 2016-04-05 Nvidia Corporation Robust selection and weighting for gray patch automatic white balancing
US9292414B2 (en) 2012-11-26 2016-03-22 Nvidia Corporation System, method, and computer program product for debugging graphics programs locally utilizing a system with a single GPU
CN103927254B (zh) * 2013-01-14 2017-04-05 北大方正集团有限公司 一种pdf光栅化处理模块的测试方法和装置
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
KR101442643B1 (ko) * 2013-04-30 2014-09-19 전자부품연구원 Cpu와 gpu 간의 협업 시스템 및 그 방법
US9418400B2 (en) 2013-06-18 2016-08-16 Nvidia Corporation Method and system for rendering simulated depth-of-field visual effect
US9756222B2 (en) 2013-06-26 2017-09-05 Nvidia Corporation Method and system for performing white balancing operations on captured images
US9826208B2 (en) 2013-06-26 2017-11-21 Nvidia Corporation Method and system for generating weights for use in white balancing an image
US9478000B2 (en) 2013-09-27 2016-10-25 Intel Corporation Sharing non-page aligned memory
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US10935788B2 (en) 2014-01-24 2021-03-02 Nvidia Corporation Hybrid virtual 3D rendering approach to stereovision
KR102100161B1 (ko) * 2014-02-04 2020-04-14 삼성전자주식회사 Gpu 데이터 캐싱 방법 및 그에 따른 데이터 프로세싱 시스템
US9436395B2 (en) 2014-03-14 2016-09-06 Advanced Micro Devices, Inc. Mechanisms to save user/kernel copy for cross device communications
US9436972B2 (en) * 2014-03-27 2016-09-06 Intel Corporation System coherency in a distributed graphics processor hierarchy
US9740611B2 (en) * 2014-10-29 2017-08-22 Advanced Micro Devices, Inc. Memory management for graphics processing unit workloads
US20170154403A1 (en) * 2015-11-30 2017-06-01 Intel Corporation Triple buffered constant buffers for efficient processing of graphics data at computing devices
US9892058B2 (en) 2015-12-16 2018-02-13 Advanced Micro Devices, Inc. Centrally managed unified shared virtual address space
US9906981B2 (en) 2016-02-25 2018-02-27 Nvidia Corporation Method and system for dynamic regulation and control of Wi-Fi scans
US10572399B2 (en) * 2016-07-13 2020-02-25 Qualcomm Incorporated Memory request arbitration
US10346307B2 (en) 2016-09-28 2019-07-09 Samsung Electronics Co., Ltd. Power efficient snoop filter design for mobile platform
US10296338B2 (en) * 2016-12-09 2019-05-21 Intel Corporation System, apparatus and method for low overhead control transfer to alternate address space in a processor
US10503652B2 (en) * 2017-04-01 2019-12-10 Intel Corporation Sector cache for compression
US10373285B2 (en) 2017-04-09 2019-08-06 Intel Corporation Coarse grain coherency
US10970118B2 (en) 2017-08-02 2021-04-06 Advanced Micro Devices, Inc. Shareable FPGA compute engine
US10452549B2 (en) * 2017-08-17 2019-10-22 Intel Corporation Method and apparatus for page table management
CN109509139B (zh) * 2017-09-14 2023-06-27 龙芯中科技术股份有限公司 顶点数据处理方法、装置及设备
CN110134370B (zh) * 2018-02-08 2023-09-12 龙芯中科技术股份有限公司 一种图形绘制的方法、装置、电子设备及存储介质
US11169953B2 (en) * 2018-02-28 2021-11-09 SK Hynix Inc. Data processing system accessing shared memory by using mailbox
US10599568B2 (en) * 2018-04-09 2020-03-24 Intel Corporation Management of coherent links and multi-level memory
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
US11436151B2 (en) * 2018-08-29 2022-09-06 Seagate Technology Llc Semi-sequential drive I/O performance
CN109242758A (zh) * 2018-09-18 2019-01-18 珠海金山网络游戏科技有限公司 一种材质参数存储、材质参数获取方法及装置
CN109542628B (zh) * 2018-12-12 2023-03-14 中国航空工业集团公司西安航空计算技术研究所 一种基于状态机的层次化gpu资源管理系统
US11422812B2 (en) 2019-06-25 2022-08-23 Advanced Micro Devices, Inc. Method and apparatus for efficient programmable instructions in computer systems
CN113190350B (zh) * 2021-04-30 2022-06-14 华南理工大学 一种面向在离线容器混合部署的llc分配方法
US20240037026A1 (en) * 2022-08-01 2024-02-01 Memverge, Inc. Memory pooling, provisioning, and sharing

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2819982B2 (ja) * 1993-03-18 1998-11-05 株式会社日立製作所 範囲指定可能なキャッシュ一致保証機能を有するマルチプロセッサシステム
US5557733A (en) * 1993-04-02 1996-09-17 Vlsi Technology, Inc. Caching FIFO and method therefor
US5706407A (en) * 1993-12-28 1998-01-06 Kabushiki Kaisha Toshiba System for reallocation of memory banks in memory sized order
US5941968A (en) * 1997-04-14 1999-08-24 Advanced Micro Devices, Inc. Computer system for concurrent data transferring between graphic controller and unified system memory and between CPU and expansion bus device
US6052133A (en) * 1997-06-27 2000-04-18 S3 Incorporated Multi-function controller and method for a computer graphics display system
US5990913A (en) * 1997-07-30 1999-11-23 Intel Corporation Method and apparatus for implementing a flush command for an accelerated graphics port device
GB2331379A (en) 1997-11-13 1999-05-19 Advanced Telecommunications Mo Controlling access to a shared memory by dual mapping
US6141021A (en) * 1997-12-12 2000-10-31 Intel Corporation Method and apparatus for eliminating contention on an accelerated graphics port
US6157397A (en) * 1998-03-30 2000-12-05 Intel Corporation AGP read and CPU wire coherency
US6483516B1 (en) * 1998-10-09 2002-11-19 National Semiconductor Corporation Hierarchical texture cache
US6728839B1 (en) * 1998-10-28 2004-04-27 Cisco Technology, Inc. Attribute based memory pre-fetching technique
DE69935852T2 (de) 1999-06-09 2007-12-20 Texas Instruments Inc., Dallas Host-Zugriff zu gemeinschaftlichem Speicher mit Hochprioritätsbetriebsart
US6665775B1 (en) * 2000-09-22 2003-12-16 Intel Corporation Cache dynamically configured for simultaneous accesses by multiple computing engines
US6832269B2 (en) * 2002-01-04 2004-12-14 Silicon Integrated Systems Corp. Apparatus and method for supporting multiple graphics adapters in a computer system

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011065650A (ja) * 2009-09-18 2011-03-31 Intel Corp ローカル物理メモリとリモート物理メモリとの間で共有されるバーチャルメモリのためのハードウェアサポートの提供
US9626234B2 (en) 2010-09-20 2017-04-18 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
US9645866B2 (en) 2010-09-20 2017-05-09 Qualcomm Incorporated Inter-processor communication techniques in a multiple-processor computing platform
KR101900436B1 (ko) * 2010-12-15 2018-09-20 어드밴스드 마이크로 디바이시즈, 인코포레이티드 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
JP2014504416A (ja) * 2010-12-15 2014-02-20 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 組み合わせたcpu/gpuアーキテクチャシステムにおけるデバイスの発見およびトポロジーのレポーティング
KR20140001970A (ko) * 2010-12-15 2014-01-07 어드밴스드 마이크로 디바이시즈, 인코포레이티드 결합된 cpu/gpu 아키텍처 시스템에서의 디바이스의 발견 및 토폴로지 보고
US9779472B2 (en) 2012-08-17 2017-10-03 Intel Corporation Shared virtual memory
US10198361B2 (en) 2012-08-17 2019-02-05 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US11531623B2 (en) 2012-08-17 2022-12-20 Intel Corporation Memory sharing via a unified memory architecture
CN104471554A (zh) * 2012-08-17 2015-03-25 英特尔公司 共享虚拟存储器
JP2015526806A (ja) * 2012-08-17 2015-09-10 インテル コーポレイション 共有仮想メモリ
US10929304B2 (en) 2012-08-17 2021-02-23 Intel Corporation Memory sharing via a unified memory architecture
JP2015524979A (ja) * 2012-08-17 2015-08-27 インテル・コーポレーション ユニファイドメモリアーキテクチャを介したメモリ共有
JP2018139128A (ja) * 2012-08-17 2018-09-06 インテル コーポレイション 共有仮想メモリ
JP2015530683A (ja) * 2012-10-05 2015-10-15 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 異種計算システムにおけるコールド変換索引バッファミスを低減させること
JP2015121945A (ja) * 2013-12-24 2015-07-02 Necプラットフォームズ株式会社 キャッシュ装置、キャッシュ装置を備えるコンピュータ、および、キャッシュ制御方法
KR101639943B1 (ko) * 2015-03-12 2016-07-15 성균관대학교산학협력단 범용 그래픽 프로세서의 공유 메모리를 캐시로 동작시키기 위한 공유 메모리 제어 방법 및 이를 이용한 범용 그래픽 프로세서
KR20180085679A (ko) * 2017-01-19 2018-07-27 서울대학교산학협력단 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템
KR102066212B1 (ko) 2017-01-19 2020-01-14 서울대학교산학협력단 병렬 시스템에서의 데이터 복사 방법 및 이를 수행하기 위한 병렬 시스템
WO2020213400A1 (ja) * 2019-04-16 2020-10-22 株式会社デンソー 車両用装置、車両用装置の制御方法
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法

Also Published As

Publication number Publication date
TWI249103B (en) 2006-02-11
WO2003096197A1 (en) 2003-11-20
CN1666182A (zh) 2005-09-07
TW200405170A (en) 2004-04-01
AU2003225168A1 (en) 2003-11-11
CN1317648C (zh) 2007-05-23
US6891543B2 (en) 2005-05-10
EP1502194A1 (en) 2005-02-02
KR20040106472A (ko) 2004-12-17
JP4489580B2 (ja) 2010-06-23
KR100655355B1 (ko) 2006-12-08
US20030210248A1 (en) 2003-11-13

Similar Documents

Publication Publication Date Title
JP4489580B2 (ja) ホストプロセッサとグラフィックプロセッサとの間のメモリの最適共有を行うための方法及びシステム
US10365930B2 (en) Instructions for managing a parallel cache hierarchy
US8341380B2 (en) Efficient memory translator with variable size cache line coverage
US9218289B2 (en) Multi-core compute cache coherency with a release consistency memory ordering model
US20110078381A1 (en) Cache Operations and Policies For A Multi-Threaded Client
CN109978977B (zh) 使用预取的图形数据执行基于图块的渲染的装置和方法
US6587113B1 (en) Texture caching with change of update rules at line end
US7061500B1 (en) Direct-mapped texture caching with concise tags
JPH10116346A (ja) テクスチャの高速ダウンロード方法
TW200303493A (en) Depth write disable for zone rendering
TW201626218A (zh) 傳遞api的相依性的技術
KR20060116916A (ko) 텍스쳐 캐쉬 및 이를 구비한 3차원 그래픽 시스템, 그리고그것의 제어 방법
US6683615B1 (en) Doubly-virtualized texture memory
US11782838B2 (en) Command processor prefetch techniques
US11620724B2 (en) Cache replacement policy for ray tracing
US7050061B1 (en) Autonomous address translation in graphic subsystem
US7710425B1 (en) Graphic memory management with invisible hardware-managed page faulting
US11321241B2 (en) Techniques to improve translation lookaside buffer reach by leveraging idle resources
US10956338B2 (en) Low latency dirty RAM for cache invalidation speed improvement
JP2023530428A (ja) 処理と同時のダーティキャッシュラインの選択的書き戻し

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080716

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080812

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081112

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081212

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090512

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090914

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090924

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20091117

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100216

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100331

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20130409

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140409

Year of fee payment: 4

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250