JP6001778B2 - 共有仮想メモリ - Google Patents

共有仮想メモリ Download PDF

Info

Publication number
JP6001778B2
JP6001778B2 JP2015523093A JP2015523093A JP6001778B2 JP 6001778 B2 JP6001778 B2 JP 6001778B2 JP 2015523093 A JP2015523093 A JP 2015523093A JP 2015523093 A JP2015523093 A JP 2015523093A JP 6001778 B2 JP6001778 B2 JP 6001778B2
Authority
JP
Japan
Prior art keywords
cpu
gpu
memory
computing device
address space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2015523093A
Other languages
English (en)
Other versions
JP2015526806A (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 JP2015526806A publication Critical patent/JP2015526806A/ja
Application granted granted Critical
Publication of JP6001778B2 publication Critical patent/JP6001778B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • 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/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/126Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Description

本発明は、一般に、コンピューティングシステム内の中央処理ユニット(CPU)とグラフィクス処理ユニット(GPU)との間の共有仮想メモリに関する。より具体的には、本発明は、CPUとGPUとの間で仮想メモリを共有することに関する。
最近のI/Oデバイスは、多くのCPUのコンピュータ処理能力に匹敵するコンピュータ処理能力を含むことがある。その結果、従来はCPUによって実行されていた計算タスクの一部が、コンピューティングデバイスのGPUのようなI/Oデバイスにオフロードされることがあり、これによりCPUの効率は向上する。
現在のオペレーティングシステム及びグラフィクスインタフェースは、GPUを、CPUと同様にプロセッサとして管理するのではなく、I/Oデバイスとして管理する。GPUをI/Oデバイスとして管理することにより、CPUとGPUは、別個の物理アドレスドメイン及び別個の仮想アドレス指定スキーマを用いる物理的なメモリを有する。計算タスクをGPUにオフロードするとき、データが、CPUの物理アドレスドメインからGPUの物理アドレスドメインにコピーされる。GPUは、データ構造をトラバースするよう、データを再構造化するかコンパイラを構成することがある。加えて、GPUは、GPU自身の仮想アドレス指定スキーマを使用して、コピーされたデータにアクセスすることがある。
従来はコンピューティングデバイスのCPUによって実行されていた計算タスクの一部を、コンピューティングデバイスのGPUにオフロードすることによって、CPUの効率が向上し得る。タスクをGPUにオフロードするためには、データがCPUの物理メモリとGPUの物理メモリとの間で転送されることがある。このデータは、ツリーやリンクリストのような、CPUに適した技術を使用して構造化され得る。ツリー及びリンクリストは、ポインタベースのデータ構造であり、この場合、CPUは、様々なノードにおいてポインタを使用してツリー又はリンクリストをトラバースする。例えばリンクリストは、一群のノードを含むデータ構造である。各ノードは2つのフィールド、すなわち、整数値と、リスト内の次のノードへのリンクとを含む。最後のノードは、リストの終了を表す終端子(terminator)にリンクされる。
リンクリストをトラバースするために、GPUは典型的に、データを再構造化するか、リストをトラバースするようGPUコンパイラを構成する。GPUはまた、データがGPUメモリにコピーされた後に該データにアクセスするために、ポインタベースの構造を通じてポインタ追跡(pointer chasing)を行う。ポインタ追跡とは、所望のポインタへアクセスするためにポインタの多くのレベルをトラバースするプロセスを指す。計算タスクをGPUにオフロードするときに生じるデータの再構造化、コンパイラの構成及びポインタ追跡は、タスクをGPUにオフロードすることによって得られる効率を低下させることがある。したがって、本明細書で説明される実施形態は、コンピューティングデバイスのGPUとCPUとの間で仮想メモリを共有することに関する。仮想メモリは、データを再構造化すること、データを消費するようGPUコンパイラを構成すること及びポインタ追跡を要することなく、共有され得る。
様々な実施形態において、統合メモリアーキテクチャ(UMA)は、CPUとGPUの双方に同じ仮想メモリ及び同じ物理メモリを提供することによって、CPUとGPUとの間の共有仮想メモリを提供する。諸実施形態において、物理メモリは、CPUとGPUとの間で分割され得る。さらに、物理メモリは、コンピューティングデバイスのオペレーティングシステムによって割り当てられる、ページングされたシステムメモリとすることができる。加えて、一部の実施形態では、CPUとGPUが物理的に、同じダイス上に配置される。したがって、CPUとGPUは、GPUのアドレス空間からCPUのアドレス空間へ、又はCPUのアドレス空間からGPUのアドレス空間へデータをコピーすることなく、物理メモリ内に含まれるデータを共有することができる。これは、例えばCPUとGPUとの間でデータを共有するための時間及び電力の消費を低減させることにより、計算タスクをCPUからGPUへオフロードするコストを減らすことができる。
諸実施形態に従って使用され得るコンピューティングデバイスのブロック図である。 諸実施形態に係る共有仮想メモリのプロシージャを実装するのに使用され得る統合メモリアーキテクチャ(UMA)のスキーマ図である。 諸実施形態に係る共有仮想メモリのためのプロシージャを実装するのに使用され得る統合メモリアーキテクチャ(UMA)のスキーマ図である。 諸実施形態に係る共有仮想メモリのための方法を示す処理フロー図である。 諸実施形態に係る共有仮想メモリを処理する方法を示す処理フロー図である。 諸実施形態に係る共有仮想メモリのためのコードを格納する有形の非一時的なコンピュータ読取可能媒体を示すブロック図である。 共有物理メモリを実装するための例示のシステムを示すブロック図である。 図6のシステムが具現化され得る小さなフォームファクタデバイスのスキーマ図である。
本開示及び図面を通して同様の構成要素及び機能を示すのに同じ番号が使用される。100番台の番号は、最初に図1で見られる機能を指し、200番台の番号は、最初に図2で見られる機能を指し、以下同様である。
以下の説明及び請求項においては、「結合される」及び「接続される」という用語及びその派生語が使用されることがある。これらの用語は、互いに対する類似語として意図されていないことを理解されたい。むしろ、特定の実施形態において、「接続される」という用語は、1つ又は複数の要素が、互いに対して、直接物理的に又は電気的に接触している状態を示すのに用いられることがある。「結合される」という用語は、1つ又は複数の要素が直接物理的に又は電気的に接触している状態にあることを意味することがある。しかしながら、「結合される」という用語は、2つ又は複数の用語が互いに対して直接接触している状態ではないが、相互に協働するか対話する状態にあることを意味することもある。
一部の実施形態は、ハードウェア、ファームウェア及びソフトウェアのいずれか1つ又は組合せで実装され得る。一部の実施形態は、マシン読取可能な媒体に格納される命令として実装されてもよく、このような命令は、コンピューティングプラットフォームによって読み取られて実行され、本明細書で説明されるような演算を実施することができる。マシン読取可能媒体は、例えばコンピュータのようなマシンによって読取可能な形式で情報を格納又は伝送するための任意の機構を含み得る。例えばマシン読取可能媒体は、読取専用メモリ(ROM);ランダムアクセスメモリ(RAM);磁気ディスク記憶媒体;光記憶媒体;フラッシュメモリデバイス;又は電気、光、音響若しくは他の形式の伝搬信号、例えば特に搬送波、静外線信号、デジタル信号若しくは信号を送受信するインタフェースを含み得る。
実施形態は、実装例又は実施例である。本明細書における「実施形態」、「一実施形態」、「一部の実施形態」、「様々な実施形態」又は「他の実施形態」への参照は、その実施形態に関連して説明される特定の特徴、構造又は特性が、本発明の少なくとも一部の実施形態に含まれるが、必ずしも全ての実施形態に含まれなくてもよいことを意味する。「実施形態」、「一実施形態」又は「一部の実施形態」という用語の様々な使用は、必ずしも同じ実施形態を示していない。ある実施形態の要素又は態様を、別の実施形態の要素又は態様を組み合せることができる。
本明細書で説明され、図示される必ずしも全てのコンポーネント、特徴、構造、特性等が、特定の1つ又は複数の実施形態に含まれる必要はない。本明細書において、コンポーネント、特徴、構造又は特性が含まれる「ことがある」、「可能性がある」、「ことができる」、「かもしれない」という記載は、例えばその特定のコンポーネント、特徴、構造又は特性が含まれるべきことを必要とはしない。本明細書又は請求項において、「ある(a、an)」要素について言及する場合、これは、その要素が1つのみしか存在しないことを意味するものではない。また、本明細書又は請求項において、「追加の(additional)要素に言及する場合、これは、1つ以上の追加の要素が存在することを除外しない。
一部の実施形態は特定の実装と関連して説明されているが、一部の実施形態によると、他の実装も可能であることに留意されたい。加えて、図面に示されるか及び/又は本明細書で説明される回路要素又は他の特徴の構成及び/又は順序は、図示され説明される特定の方法で構成されなくてもよい。一部の実施形態によると、多くの他の構成も可能である。
図面に示される各システムにおいて、ある事例の要素はそれぞれ、示される要素が異なる及び/又は同様であり得ることを示唆するように、同じ参照番号又は異なる参照番号を有することがある。しかしながら、要素は、異なる実装となり、かつ本明細書で図示又は説明されるシステムの一部又は全てと協働するのに十分に柔軟なものとすることができる。図面に示される様々な要素は、同じものであってもお異なるものであってもよい。どの要素を第1の要素として参照するか、及びどの要素が第2の要素と呼ばれるかは任意である。
図1は、諸実施形態に従って使用され得るコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、例えば特に、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス又はサーバとすることができる。コンピューティングデバイス100は、格納された命令を実行するように構成される中央処理ユニット(CPU)102に加え、CPU102によって実行可能な命令を格納するメモリデバイス104を含むことができる。CPUは、バス106によってメモリデバイス104に結合され得る。加えて、CPU102は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタ又は任意の数の他の構成とすることができる。さらに、コンピューティングデバイス100は、1つより多くのCPU102を含んでもよい。CPU102によって実行される命令は、共有仮想メモリを実装するのに使用され得る。
コンピューティングデバイス100は、グラフィクス処理ユニット(GPU)108も含むことができる。GPU102は、コンピューティングデバイス100内の入出力デバイスである。図示されるように、CPU102は、バス106を通してGPU108に結合され得る。しかしながら、一部の実施形態では、GPU18は、コンピューティングデバイス100内のCPU102と同じダイス上に配置される。この手法では、CPU102とGPU108が物理的に接続されるので、CPU102とGPU108との間のバス106による接続は不要になる。さらに、諸実施形態において、CPU102とGPU108を、図2に関連して説明されるような統合メモリアーキテクチャ内に含めてもよい。
GPU108は、コンピューティングデバイス100内の任意の数のグラフィック処理を実行するように構成され得る。例えばGPU108は、コンピューティングデバイス100のユーザに表示されるよう、グラフィック画像、グラフィックフレーム、ビデオ等をレンダリング又は操作するように構成され得る。一部の実施形態において、GPU108は、複数のグラフィックエンジン(図示せず)を含み、この場合、各グラフィックエンジンが、特定のグラフィックタスクを行うか、特定のタイプのワークロードを実行するように構成される。
メモリデバイス104は、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、フラッシュメモリ又は任意の他の適切なメモリシステムを含むことができる。例えばメモリデバイス104は、動的ランダムアクセスメモリ(DRAM)を含むことがある。メモリデバイス104は、共有仮想メモリを実装するための命令を実行するように構成され得るデバイスドライバ110を含むことがある。デバイスドライバ110は、ソフトウェア、アプリケーションプログラム、アプリケーションコード等とすることができる。一部の実施形態において、デバイスドライバ110は、ユーザモードのドライバである。
メモリデバイス104は、マルチレベルキャッシュ112も含む。マルチレベルキャッシュ112は、最終レベルキャッシュ(LLC)114と、レベル2キャッシュ116と、レベル1キャッシュ118とを含む。説明のためにマルチレベルキャッシュ112を使用するが、任意のキャッシュをコンピューティングデバイス100に含めることができる。マルチレベルキャッシュ112は、CPU102に頻繁に使用されるデータの小さなサブセットを格納する、小さくかつ高速なメモリとすることができる。より大きなデータセットをストレージデバイス120に格納してもよい。ストレージデバイス120は、ハードドライブ、光学ドライブ、サム(thumb)ドライブ、ドライブのアレイ又はこれらの任意の組合せのような物理メモリである。ストレージデバイス120は、リモートストレージドライブを含んでもよい。CPU102がストレージデバイス120内に格納されたデータにアクセスする時間は、CPU102が、メモリ104内のマルチレベルキャッシュ112にアクセスするのにかかる時間に対して遅い可能性がある。
一部の実施形態において、LLC114は、CPU102とGPU108との間で共有されるが、レベル2キャッシュ116及びレベル1キャッシュ118は、GPU108がレベル2キャッシュ116及びレベル1キャッシュ118内にキャッシュされたデータに直接アクセスすることができないように、GPU108から隠される。しかしながら、LLC114は、レベル2キャッシュ116及びレベル1キャッシュ118内に格納されたデータを読み出し、書き込むことができる。これにより、GPU108が、レベル2キャッシュ116及びレベル1キャッシュ118にキャッシュされたデータを要求するとき、LLC114は、GPU108によって処理するために、レベル2キャッシュ116及びレベル1キャッシュ118からデータを取り出すことができる。このようにして、LLC114は、コンピューティングデバイス100のデータコヒーレンシを保証する。本明細書で説明されるとき、コヒーレンシは、CPU102とGPU108によってアクセスされているデータが同じであるという状況を指す。したがって、CPU102は、GPU108と正しいデータを共有することができるようにするため、ストレージデバイス120からのデータがLLC114と一貫性を有することを保証することによって、このストレージデバイス120からのデータが、LLC114、レベル2キャッシュ116及びレベル1キャッシュ118内で正確に反映されることを保証することになる。
加えて、諸実施形態において、CPUとGPUはメモリの任意のレベルにアクセスすることができる。しかしながら、LLC114は最新のデータを含むが、メモリの他のレベルからのデータは古い可能性がある。さらに、諸実施形態において、CPUとGPUは、任意の相互アクセス可能な記憶位置を用いて、共有仮想メモリを実施することができる。任意の相互アクセス可能な記憶位置には、これらに限られないが、メモリデバイス104の任意のエリア、ストレージ120の任意のエリア、ネットワーク化された記憶位置、サムドライブ又はこれらの任意の組み合わせが含まれ得る。
ストレージデバイス120は、サーフェイス(surface)122及びコンピューティングデバイス100上で実行するように構成される任意の数のアプリケーション124を含む。サーフェイス122は、デバイスドライバ110によって割り当てられる、物理メモリの指定された部分である。サーフェイスは、該サーフェイス122内の物理メモリのコンテンツ上で実行される処理に基づいて更新され得る。諸実施形態において、アプリケーション124は、CPU102によって実行されると、サーフェイスがデバイスドライバ110によって割り当てられることを要求し得る。さらに、CPU102上で動作するアプリケーション124は、サーフェイス122の所望のサイズ及び特性を指定することにより、アプリケーション124によって要求されるメモリ割り当てに応じて、サーフェイス122を構成することができる。加えて、サーフェイスの割り当ては、例えばコンピューティングデバイス100のCPU102からの入力に応答して実施され得る。さらに、諸実施形態において、サーフェイスは、LLCキャッシュ可能としてマークされる。サーフェイス122をLLCキャッシュ可能として指定することにより、サーフェイス122内の位置からキャッシュされるデータは、LLC114へキャッシュされ、これにより、LLC内でCPU102とGPU108の双方によりアクセス可能になる。
諸実施形態において、デバイスドライバは、カーネルモードドライバに、サーフェイスが、共有仮想メモリサーフェイスとなることを知らせる。カーネルモードドライバは、サーフェイスのためにCPU仮想メモリアドレスを保存することになる。カーネルモードドライバが、サーフェイスをグラフィクスメモリにページングすると、カーネルモードドライバは、元のグラフィクス仮想アドレスからのページングを、CPUアドレスに相当するグラフィクス仮想アドレスへルート変更することができる。さらに、諸実施形態において、仮想グラフィクスアドレスは、所与のアプリケーションだけに属するプライベートのグラフィクスアドレス空間である。
メモリ管理ユニット(MMU)126を使用して、サーフェイス122内に格納されるデータへのアクセスを管理することができる。MMU126は、CPU102及びGPU108の仮想アドレス空間を、アドレス空間の様々なページへと分けることができる。CPU102及びGPU108はそれぞれ、同一の仮想アドレス空間を有する。仮想アドレス空間は、コンピューティングシステム内で動作している様々なアプリケーション124を、仮想アドレスの特定のサブセットに対して分離することによって、サーフェイス122内に含まれるデータの保護を可能にする。仮想アドレス空間の使用により、あるアプリケーション124が別のアプリケーション124のデータにアクセスしないことになる。したがって、MMU126は、CPUページテーブル128及びGPUページテーブル130を含む。CPUページテーブルは、サーフェイス122内の物理アドレス位置にマップされるCPUの仮想アドレスを含む。同様に、GPUページテーブルは、サーフェイス122内の物理アドレス位置にマップされるGPUの仮想アドレスを含む。GPUの仮想アドレスは、CPUの仮想アドレスに相当する。したがって、本明細書で説明される共有仮想メモリプロシージャでは、CPUページテーブル128は、物理アドレス空間に対するCPU仮想アドレス空間のマッピングを含み得る。物理アドレス空間は、サーフェイス122内の物理的な位置に対応する。同様に、GPUページテーブル130は、同じ物理アドレス空間に対するGPU仮想アドレス空間のマッピングを含み得る。
様々な実施形態において、CPUページテーブル128からの仮想メモリアドレス及びGPUページテーブル130からのグラフィクス仮想メモリアドレスは、翻訳プロシージャを介してサーフェイス122の物理メモリページにマップされる。翻訳プロシージャを使用して、仮想メモリアドレスのいずれかを対応する物理アドレスに変換することができる。例えば翻訳プロシージャは、ページテーブルウォークを介して実行されてよい。ページテーブルウォークは、ページテーブル内の仮想メモリアドレスを、そのページテーブル内の物理メモリアドレスに変換する特定の翻訳テーブルに基づいて、実行され得る。加えて、諸実施形態において、翻訳ルックアサイド(look-aside)バッファを使用して、CPU及びGPUの仮想アドレスを、それぞれのページテーブル内における物理アドレス空間へ翻訳してもよい。
翻訳又は変換プロシージャが実行された後、サーフェイス122はピン止め(pin)される。サーフェイスをピン止めすることとは、物理的な位置及び対応する物理的なアドレスが変更されないように、サーフェイスを保護することを指す。したがって、サーフェイス122をピン止めすることは、仮想アドレス空間と物理アドレス空間との間の「ハード」マッピングを保証する。アドレス空間の間のハードマッピングは、サーフェイスがピン止めされた後は変化しないマッピングである。サーフェイスがピン止めされない場合、ページフォルトが生成されるか、サーフェイスの物理的な位置がシフトすると、誤ったデータが処理されることがある。
諸実施形態において、アプリケーション124は、データを処理すること等の演算を実行するために、CPU102において実行され、サーフェイス122のようなサーフェイスを要求する。CPU102は、演算をGPU108にハンドオフすることができる。双方の仮想メモリが等しく、ページテーブルはサーフェイス122にマップされているので、GPUは、サーフェイスにアクセスすることによって、データを別のアドレス空間へコピーすることなく、CPU102によってオフロードされた演算の即時実行を開始することができる。さらに、データを再構造化する必要がない。演算がCPU102によって完了すると、GPU108は、演算が完了したことをCPU122に伝えることができる。次いで、CPU102は、データを元のアドレス空間にコピーして戻す必要なく、データの処理を継続することができる。
アプリケーション124によって要求された演算が、GPU108によって実行されると、サーフェイス122に対する修正が生じることがある。本明細書で説明される共有仮想メモリプロシージャによると、そのようなサーフェイス122への修正は、CPU102に十分に可視である。したがって、データは、GPU108からCPU102へ又はCPU102からGPU108へデータをコピーすることなく、GPU108とCPU102との間で共有され得る。
CPU102は、バス106を通して、コンピューティングデバイス100を1つ又は複数の入出力(I/O)デバイス134に接続するように適合される入出力(I/O)デバイスインタフェース132に接続され得る。I/Oデバイス234は、例えばキーボード及びポインティングデバイスを含むことがあり、ポインティングデバイスは、特にタッチパッド又はタッチスクリーンを含み得る。I/Oデバイス134は、コンピューティングデバイス100のビルトインコンポーネントであってもよく、又はコンピューティングデバイス100に外部接続されるデバイスであってもよい。
CPU102は、バス106を通して、コンピューティングデバイス100をディスプレイデバイス138に接続するように適合されるディスプレイインタフェース136にもリンクされ得る。ディスプレイデバイス138は、コンピューティングデバイス100のビルトインコンポーネントであるディスプレイスクリーンを含み得る。ディスプレイデバイス138は、特にコンピューティングデバイス100に外部接続されるコンピュータモニタ、テレビジョン又はプロジェクタも含み得る。
ネットワークインタフェースコントローラ(NIC)140は、バス106を介して、コンピューティングデバイス100をネットワーク142に接続するように適合され得る。ネットワーク142は、特にワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)又はインターネットとすることができる。
図1のブロック図は、コンピューティングデバイス100が、図1に示されるコンポーネントの全てを含むべきことを示すようには意図されていない。さらに、コンピューティングデバイス100は、具体的な実装の詳細に応じて、図1に示されていない任意の数の追加のコンポーネントを含んでもよい。
図2A及び図2Bは、諸実施形態に従って、コンピューティングデバイス100のCPU102とGPU108との間の共有仮想メモリを実装するのに使用され得る統合メモリアーキテクチャ200のスキーマを示す。同様の番号が付されたアイテムは、図1に関連して説明されている通りである。UMA200は、例えばコンピューティングデバイス100のCPUページテーブル128、GPUページテーブル及びサーフェイス122を含み得る。
UMA200は、CPU102とGPU108との間でいずれのタイプのデータもコピーすることなく、CPU102とGPU108との間の共有仮想メモリを可能にすることができる。さらに、データの再構造化及びコンパイラの構成も行われない。これは、CPU102とGPU108がサーフェイス122を共有し、それぞれのページテーブル内で等しい仮想アドレスを有することができるようにすることによって達成され得る。上述のように、サーフェイス122は、物理的なストレージデバイスの一部であってよい。サーフェイスは、任意の数の物理的なメモリ位置202を含む。物理的なメモリ位置202は、ページングされたメモリフォーマットに編成されてよく、この場合、ページは、サーフェイス122内の物理メモリの固定長のブロックである。
CPUページテーブル128は、複数のCPU仮想メモリアドレス204を含み、GPUページテーブル130も、複数のグラフィクス仮想メモリアドレス204を含み得る。CPU仮想メモリアドレス204は、CPU仮想アドレス空間を構成し、グラフィクス仮想メモリアドレス204は、グラフィクス仮想アドレス空間を構成する。各仮想アドレス空間は、各ページテーブル内の物理アドレス206にマッピングされる。したがって、CPU仮想メモリアドレス204及びグラフィクス仮想メモリアドレス204は双方とも、それぞれCPUページテーブル128及びGPUページテーブル130内の物理アドレス206の同じセットにマップされる。
物理アドレス206は、CPU102及びGPU108(図1)が、サーフェイス122内の物理的な位置202で格納されたデータを処理するのを可能にする。様々な実施形態において、サーフェイス122は、アプリケーション124(図1)のようなアプリケーションによってアクセスされる特定のCPU仮想アドレス204に基づいて割り当てられる。サーフェイス122が割り当てられると、各物理アドレス208が、図2に示されるように、CPUページテーブル128内の対応するCPU仮想アドレス204にマップされる。サーフェイス122のCPU仮想アドレス204は、グラフィクスメモリと共有される。アプリケーション124(図1)の計算タスクがGPU108にオフロードされると、サーフェイス122は、グラフィクスメモリにページングされる。サーフェイス122がグラフィクスメモリにページングされると、該ページは、元のグラフィクス仮想アドレスから、CPU仮想アドレス204に相当するグラフィクス仮想アドレス204へルート変更されることになる。GPU仮想グラフィクスアドレス空間は、所与のアプリケーションに対してのみ属するプライベートグラフィクスアドレス空間である。
GPUページテーブル130内のグラフィクス仮想メモリアドレス204は、CPU仮想アドレス及びGPU仮想メモリアドレスが物理アドレス206の同じセットにマップされるように、CPUページテーブル128と同期化され得る。物理アドレス206は、サーフェイス122内の物理的な位置202に対応する。したがって、サーフェイス122は、CPU102とGPU108との間で直接共有され得る。諸実施形態において、GPU108が物理的な位置202のいずれかに配置されたデータを修正する場合、この修正は自動的に、データのコピー又はデータのマーシャルを行う必要なく、サーフェイス122によりCPU102に対して可視である。
図2のスキーマ図は、UMA200が図2に示されるコンポーネントの全てを含むべきであることを指示するように意図されていない。さらに、UMA200は、具体的な実装の詳細に応じて、図2に示されていない任意の数の追加のコンポーネントを含んでもよい。
図3は、諸実施形態に係るコンピューティングデバイスのCPUとGPUとの間の共有仮想メモリのための方法300を示す処理フロー図である。様々な実施形態において、方法300は、CPUメモリからGPUメモリへデータをコピーすることなく、CPUとGPUとの間でメモリを共有するのに用いられる。
一部の実施形態において、方法300は、CPU102とGPU108がバス106によって接続されるコンピューティングデバイス100のようなコンピューティングデバイスにおいて実行され得る。他の実施形態では、CPU102及びGPU108は、図2に関連して上述したUMA200のようなUMAに含まれてもよい。さらに、方法300は、コンピューティングデバイス100のデバイスドライバ126のような、コンピューティングデバイスのドライバによって実行され得る。方法は、ブロック302において開始して、物理メモリ内でサーフェイスの割り当てが行われる。諸実施形態において、サーフェイスは、コンピューティングデバイスのCPU上で実行しているアプリケーションからの入力に応答して、コンピューティングデバイスの物理メモリ内で割り当てられる。さらに、諸実施形態において、サーフェイスはデバイスドライバによって割り当てられてもよい。また、サーフェイスは、共有仮想メモリサーフェイスとしてマークされてもよい。アプリケーション又はデバイスドライバは、CPUからCPU仮想アドレスを使用してサーフェイスにアクセスすることができる。諸実施形態において、CPU仮想アドレスは、コンピューティングデバイスのオペレーティングシステムによって、アプリケーション又はデバイスドライバに提供される。
ブロック304において、CPU仮想アドレス空間が、サーフェイスに基づいて作成される。諸実施形態において、CPUアドレス空間は、アプリケーションの要求で生成される。ブロック306において、サーフェイスが、CPU仮想アドレス空間にマップされる。CPU仮想メモリアドレスと物理アドレスとの間のマッピングは、CPUページテーブル内に含まれる。
ブロック308において、CPU仮想アドレス空間に相当するGPU仮想アドレス空間が作成される。ブロック310において、サーフェイスは、GPU仮想アドレス空間にマップされる。諸実施形態において、物理メモリページを仮想メモリアドレスにマップすることは、仮想アドレスを翻訳又は変換して、システムメモリ内の対応する物理メモリページを決定することを含むことがある。仮想アドレスが物理アドレスに翻訳又は変換されると、翻訳プロセス中に見つかった仮想アドレスと物理アドレスとの間の関連付けが、ロックされる。関連付けをロックすることにより、ページテーブル内の物理アドレスに対応するサーフェイスの物理的な位置が、キャッシュにページングされ得る。関連付けがロックされている間、ページはキャッシュ内に残り、サーフェイスの物理アドレスが、デバイスドライバによって変更されることを防ぐ。
諸実施形態において、サーフェイスは、LLCキャッシュ可能として指定される。そのような指定により、サーフェイスの物理的な位置は確実に、CPUとGPUによって共有されるLLCへキャッシュされる。アプリケーションによって使用されるグラフィクス仮想メモリアドレスは、CPUの仮想アドレスにマップされる同じ物理アドレスへ翻訳され得る。諸実施形態において、デバイスドライバは、GPUページテーブル内の物理アドレスに対するグラフィクス仮想メモリアドレスのマッピングを更新してもよい。
ブロック312において、サーフェイスはピン止めされる。サーフェイスをピン止めすることによって、サーフェイス内の物理的な位置が変更されるのを防ぐ。例えばオペレーティングシステムは、物理的な位置を、そのメモリ管理の一部として変更し得る。しかしながら、サーフェイスがピン止めされると、オペレーティングシステムは、サーフェイスの物理的な位置を変更することを妨げられる。
図4は、諸実施形態に従って、コンピューティングデバイスのCPUとGPUとの間の共有メモリを処理するための方法400を示す処理フロー図である。ブロック402において、演算がCPUからGPUにオフロードされ得る。演算は、アプリケーション124(図1)のようなアプリケーションによって指示されるように、GPUへオフロードされ得る。加えて、CPU又はGPUを制御するのに使用される任意のアプリケーションプログラミングインタフェース(API)を使用して、CPUからGPUへの演算のオフロードを指示することができる。諸実施形態において、演算をCPUからGPUへオフロードするのに先立って、CPUによって処理されているサーフェイス内に配置された任意のデータは、LLCと一貫性を有するようにされる。
ブロック404において、GPUは、オフロードされた演算の処理を開始する。GPUは、その演算を実行するために、LLC及びサーフェイス内のデータにアクセスする。GPUが、LLC内にないがCPUの何らかの他のキャッシュにあるデータを要求する場合、LLCは、GPUによる処理のために、そのデータを他のキャッシュから取り出すことができる。
ブロック406において、GPUは、その演算が完了したことを信号伝達する。完了の信号は、ホストへ送信され得る。諸実施形態において、演算が完了すると、デバイスドライバは、演算をGPUとCPUとの間で同期させる。さらに、諸実施形態において、完了の信号は、例えばメールボックスの書き込み(mailbox write)又は割り込みであってもよい。完了の信号は、結果としてサーフェイス内のデータの修正につながる何らかの計算又はグラフィカル処理をGPUが実行したことを示してもよい。完了後、GPUの出力がCPUによって処理される。様々な実施形態において、GPUが、サーフェイスの物理的な位置のいずれかの位置からの読み込み又はいずれかの位置への書き込みを行うことによってサーフェイスを処理するとき、処理は、GPUの内部バッファ及びキャッシュで生じ得る。したがって、GPU処理が完了した後、GPUの内部バッファ及びキャッシュ内のデータは、LLCと一貫性がある。
図3及び図4の処理フロー図は、方法300及び方法400のブロックが、いずれかの特定の順序で実行されるべきこと及び全てのブロックが全ての場合に含まれるべきことを示すようには意図されていない。さらに、具体的な実装の詳細に応じて、任意の数の追加のブロックが方法300及び方法400に含まれてもよい。さらに、本明細書で説明される方法はCPUを含むが、メモリは、別のCPU又は直接メモリアクセス(DMA)コントローラのような任意のI/Oデバイスとの間で共有され得る。
図5は、諸実施形態に係るコンピューティングデバイスのCPUとGPUとの間の共有仮想メモリのためのコードを格納する、有形の非一時的コンピュータ読取可能媒体500を示すブロック図である。有形の非一時的コンピュータ読取可能媒体500は、コンピュータバス504を介してプロセッサ502によってアクセスされ得る。さらに、有形の非一時的コンピュータ読取可能媒体500は、本明細書で説明される方法を実行するようプロセッサ502に指示するように構成されるコードを含むことができる。
図5に示されるように、本明細書で議論される様々なソフトウェアコンポーネントが、有形の非一時的コンピュータ読取可能媒体500に格納され得る。例えばサーフェイス割り当てモジュール506は、コンピューティングデバイスのメモリ内において、複数の物理メモリページを含むサーフェイスを割り当てるように構成され得る。仮想化モジュール508は、CPU仮想アドレス空間及び該CPU仮想アドレス空間に相当するGPU仮想アドレス空間を作成するように構成され得る。GPU仮想アドレス空間は、サーフェイスがグラフィクスメモリ内にページングされると、作成され得る。マッピングモジュール510は、サーフェイス内の物理的な位置を、CPUアドレステーブル及びGPUアドレステーブル内の仮想メモリアドレスにマッピングするように構成され得る。
さらに、ピン止めモジュール512は、サーフェイス内の物理的な位置が変更されるのを防ぐように、サーフェイスをピン止めするように構成され得る。
図5のブロック図は、有形の非一時的コンピュータ読取可能媒体500が図5に示されるコンポーネント全てを含むべきことを示すようには意図されていない。具体的な実装の詳細に応じて、任意の数の追加のコンポーネントが有形の非一時的コンピュータ読取可能媒体500に含まれてもよい。
図6は、共有される物理メモリを実装するための例示のシステム600を示すブロック図である。同様の番号が付されたアイテムは、図1、図2A及び図2Bに関して説明したものである。一部の実施形態において、システム600は、メディアシステムである。加えてシステム600を、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パルムトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビジョン、スマートデバイス(例えばスマートフォン、スマートタブレット又はスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等に組み込んでもよい。
様々な実施形態において、システム600は、ディスプレイ604に結合されるプラットフォーム602を備える。プラットフォーム602は、コンテンツサービスデバイス606又はコンテンツ配信デバイス608又は他の同様のコンテンツソースのようなコンテンツデバイスから、コンテンツを受信することがある。1つ又は複数のナビゲーション機能を含むナビゲーションコントローラ610は、例えばプラットフォーム602及び/又はディスプレイ604と対話するのに使用され得る。これらのコンポーネントの各々を、以下で詳述する。
プラットフォーム602は、チップセット612、中央処理ユニット(CPU)102、メモリデバイス104、ストレージデバイス120、グラフィクスサブシステム614、アプリケーション124及び/又は無線機616の任意の組み合わせを含んでよい。チップセット612は、CPU102、メモリデバイス104、ストレージデバイス120、グラフィクスサブシステム614、アプリケーション124及び/又は無線機616の間の相互通信を提供し得る。例えばチップセット612は、ストレージデバイス120との相互通信を提供することが可能なストレージアダプタ(図示せず)を含んでもよい。
CPU102は、複数命令セットコンピュータ(CISC)又は縮小命令セットコンピュータ(RISA)プロセッサ、x86命令セット互換プロセッサ、マルチコアあるいは任意の他のマイクロプロセッサ又は中央処理ユニット(CPU)として実装され得る。一部の実施形態において、CPU102は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサ等を含む。
メモリデバイス104は、これらに限られないが、ランダムアクセスメモリ(RAM)、動的RAM(DRAM)又は静的RAM(RAM)のような揮発性メモリとして実装され得る。
ストレージデバイス120は、これらに限られないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部ストレージデバイス、外付けストレージデバイス、フラッシュメモリ、バッテリバックアップSDRAM(同期DRAM)及び/又はネットワークアクセス可能なストレージデバイスのような非揮発性ストレージデバイスとして実装され得る。一部の実施形態において、ストレージデバイス120は、例えば複数のハードドライブが含まれるときに価値あるデジタルメディアのために、保護が強化されたストレージ性能を向上させる技術を含む。
グラフィクスサブシステム614は、表示用に静止画又はビデオのような画像の処理を実行することができる。グラフィクスサブシステム614は、例えばGPU108のようなグラフィクス処理ユニット(GPU)又はビジュアル処理ユニット(VPU)を含み得る。アナログ又はデジタルインタフェースを使用して、グラフィクスサブシステム614とディスプレイ604を通信可能に結合することができる。例えばインタフェースは、高解像度マルチメディアインタフェース(HDMI(登録商標))、ディスプレイポート、無線HDMI及び/又は無線HD準拠技術のうちのいずれかとすることができる。グラフィクスサブシステム614を、CPU102又はチップセット612に統合してもよい。あるいは、グラフィクスサブシステム614は、チップセット612に通信可能に結合されるスタンドアロンのカードであってもよい。
本明細書で説明されるグラフィクス及び/又はビデオ処理技術は、様々なハードウェアアーキテクチャにいて実装され得る。例えばグラフィクス及び/又はビデオの機能性をチップセット612内に統合してもよい。あるいは、別個のグラフィクス及び/又はビデオプロセッサを使用してもよい。更に別の実施形態として、グラフィクス及び/又はビデオ機能が、マルチコアプロセッサを含め、汎用プロセッサによって実装されてもよい。更なる実施形態において、これらの機能は、家庭用電子機器において実装されてもよい。
無線機616は、様々な適切な無線通信技術を使用して信号を送受信することができる1つ又は複数の無線機を含み得る。そのような技術は、1つ又は複数の無線ネットワークにわたる通信を含むことがある。例示的な無線ネットワークには、無線ローカルエリアネットワーク(WLAN)、無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、セルラネットワーク及び衛星ネットワーク等が含まれる。そのようなネットワークにわたる通信において、無線機616は、任意のバージョンの1つ又は複数の適用可能な規格に従って動作し得る。
ディスプレイ604は、任意のテレビタイプのモニタ又はディスプレイを含み得る。例えばディスプレイ604は、コンピュータディスプレイスクリーン、タッチスクリーンティスプレイ、ビデオモニタ、テレビ等を含み得る。ディスプレイ604はデジタル及び/又はアナログであってよい。一部の実施形態において、ディスプレイ604は、ホログラフィックディスプレイである。また、ディスプレイ604は、視覚的投影を受け取ることができる透明な面としてもよい。そのような投影は、様々な形式の情報、画像及び/又は対象物等を伝達することが可能である。例えばそのような投影は、モバイル拡張現実(MAR:mobile augmented reality)アプリケーションのための視覚的オーバレイとしてもよい。1つ又は複数のアプリケーション124の制御の下、プラットフォーム602は、ユーザインタフェース618をディスプレイ604上に表示することができる。
コンテンツサービスデバイス606は、任意のナショナルサービス、インターナショナルサービス及び/又は独立サービスによってホストされることがあり、したがってプラットフォーム602から、例えばインターネットを介してアクセス可能である。コンテンツサービスデバイス606は、プラットフォーム602及び/又はディスプレイ604に結合され得る。プラットフォーム602及び/又はコンテンツサービスデバイス606は、ネットワーク142に結合されて、ネットワーク142との間でメディア情報を通信(例えば送信及び/又は受信)することができる。コンテンツ配信デバイス608も、プラットフォーム602及び/又はディスプレイ604に結合され得る。
コンテンツサービスデバイス606は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話、デジタル情報又はデジタル情報を配信することができるインターネット対応デバイスを含み得る。さらに、コンテンツサービスデバイス606は、コンテンツプロバイダとプラットフォーム602又はディスプレイ604との間で、ネットワーク142を経由するか直接に、コンテンツを一方向又は双方向で通信することができる任意の他の同様のデバイスを含み得る。コンテンツは、システム600内のコンポーネントのいずれか1つとの間で、及びネットワーク142を介してコンテンツプロバイダとの間で、一方向及び/又は双方向に通信されてよいことが認識されよう。コンテンツの例には、例えばビデオ、音楽、医療及びゲーム情報等を含め、任意のメディア情報が含まれ得る。
コンテンツサービスデバイス606は、メディア情報、デジタル情報又は他のコンテンツを含め、ケーブルテレビ番組のようなコンテンツを受信し得る。コンテンツプロバイダの例には、特に、任意のケーブル若しくは衛星テレビ又は無線又はインターネットコンテンツのプロバイダが含まれ得る。
一部の実施形態において、プラットフォーム602は、1つ又は複数のナビゲーション機能を含むナビゲーションコントローラ610から、制御信号を受信する。コントローラ610のナビゲーション機能を使用して、例えばユーザインタフェース618と対話することができる。ナビゲーションコントローラ610は、ポインティングデバイスとすることができ、該ポインティングデバイスは、ユーザが空間的(例えば連続的な多次元の)データをコンピュータに入力することができる、コンピュータハードウェアコンポーネント(特にヒューマンインタフェースデバイス)とすることができる。グラフィカルユーザインタフェース(GUI)のような多くのシステム並びにテレビ及びモニタは、ユーザが、物理的なジェスチャを使用してコンピュータ又はテレビへのデータを制御及び提供するのを可能にする。物理的なジェスチャは、これらには限られないが、顔の表情、顔の動き、様々な手足の動き、身体の動き、ボディランゲージ又はこれらの任意の組合せを含む。このような物理的なジェスチャを認識して、コマンド又は命令に変換することができる。
ナビゲーションコントローラ610のナビゲーション機能の動きは、ディスプレイ604上で、ポインタ、カーソル、フォーカスリング又はディスプレイ604上に表示される他の視覚的インジケータの動きによって返されることがある。例えばアプリケーション124の制御の下、ナビゲーションコントローラ610上に配置されるナビゲーション機能を、例えばユーザインタフェース618上に表示される仮想ナビゲーション機能にマップしてもよい。一部の実施形態において、コントローラ610を、別個のコンポーネントとするのではなく、プラットフォーム602及び/又はディスプレイ604に統合してもよい。
システム600は、ドライバ(図示せず)を含んでもよく、該ドライバは、ユーザが、プラットフォーム602を、最初のブートアップの後、例えばイネーブルされると、ボタンのタッチですぐにターンオン及びターンオフできるようにする技術を含む。プログラムロジックは、プラットフォーム602がターン「オフ」されるとき、プラットフォーム602が、コンテンツをメディアアダプタ又は他のコンテンツサービスデバイス606又はコンテンツ配信デバイス608へストリーミングするのを可能にする。加えて、チップセット612は、例えば5.1サラウンドオーディオ及び/又は高品位7.1サラウンドサウンドオーディオ用のハードウェア及び/又はソフトウェアサポートを備えてもよい。ドライバは、統一的なグラフィクスプラットフォームのためのグラフィクスドライバを含み得る。一部の実施形態において、グラフィクスドライバは、周辺コンポーネント相互接続エクスプレス(PCIe)グラフィクスカードを含む。
様々な実施形態において、システム600内に示されるコンポーネントのいずれか1つ又は複数を統合してもよい。例えばプラットフォーム602とコンテンツサービスデバイス606とを統合してもよく、プラットフォーム602とコンテンツ配信デバイス608とを統合してもよく、あるいはプラットフォーム602と、コンテンツサービスデバイス606と、コンテンツ配信デバイス608とを統合してもよい。一部の実施形態において、プラットフォーム602とディスプレイ604は一体型のユニットであってよい。例えばディスプレイ604とコンテンツサービスデバイス606とを統合してもよく、ディスプレイ604とコンテンツ配信デバイス608とを統合してもよい。 システム600は、無線システム又は有線システムとして実装され得る。無線システムとして実装されるとき、システム600は、1つ又は複数のアンテナ、送信機、受信機、送受信機、増幅器、フィルタ、制御ロジック等のような無線共有媒体を介して通信するのに適したコンポーネント及びインタフェースを含み得る。無線共有媒体の例には、RFスペクトルのような無線スペクトルの部分が含まれ得る。有線システムとして実装されるとき、システム600は、入出力(I/O)アダプタ、対応する有線通信媒体によりI/Oアダプタへ接続する物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラ等のような有線通信媒体を介して通信するのに適したコンポーネント及びインタフェースを含み得る。有線通信媒体の例には、ワイヤ、ケーブル、金属導線、プリント基板(PCB)、バックプレーン、スイッチ構成、半導体金属、ツイストペア線、同軸ケーブル、ファイバ光学等が含まれ得る。
プラットフォーム602は、情報を通信する1つまたは複数の論理又は物理チャネルを確立してもよい。この情報には、メディア情報及び制御情報が含まれ得る。メディア情報は、ユーザに向けられたコンテンツを表す任意のデータを指してよい。コンテンツの例には、例えば音声会話からのデータ、ビデオ会議、ストリーミングビデオ、電子メール(eメール)メッセージ、音声メールメッセージ、英数字文字、グラフィック、画像、ビデオ、テキスト等が含まれ得る。音声会話からのデータは、例えばスピーチ情報、無音の期間、背景雑音、快適雑音、トーン等とすることができる。制御情報は、コマンド、命令又は自動システムに向けられた制御ワードを表す任意のデータを指してよい。例えば制御情報を使用して、システム中を通じてメディア情報をルーティングするか、メディア情報を所定の手法で処理するようノードに指示してもよい。しかしながら、諸実施形態は、図6に図示され、説明される要素又はコンテキストに限定されない。
図7は、図6のシステム600が具現化され得る小さなフォームファクタデバイス700の実施形態を図示している。同様の番号が付されたアイテムは、図6に関連して説明される。一部の実施形態において、例えばデバイス700は、無線機能を有するモバイルデバイスとして実装されてよい。モバイルコンピューティングデバイスは、処理システムと、例えば1つ又は複数のバッテリのようなモバイル電力ソース又は電源とを有する任意のデバイスを指すことがある。
上述のように、モバイルコンピューティングデバイスの例には、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パルムトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビジョン、スマートデバイス(例えばスマートフォン、スマートタブレット又はスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等が含まれ得る。
モバイルコンピューティングデバイスの例には、腕時計型コンピュータ、フィンガコンピュータ、リング型コンピュータ、眼鏡型コンピュータ、ベルトクリップ型コンピュータ、アームバンド型コンピュータ、靴型コンピュータ、衣服型コンピュータ又は任意の他の適切なタイプの装着可能なコンピュータのような、人間が身に着けるように構成されるコンピュータも含まれ得る。例えばモバイルコンピューティングデバイスは、コンピュータアプリケーションを実行することができ、さらに音声通信及び/又はデータ通信も可能なスマートフォンとして実装され得る。一部の実施形態は、例としてスマートフォンとして実装されるモバイルコンピューティングデバイスを用いて説明されるが、他の実施形態は、他の無線のモバイルコンピューティングデバイスを使用して実装されてもよいことが認識されよう。
図7に示されるように、デバイス700は、ハウジング702、ディスプレイ704、入出力(I/O)デバイス706及びアンテナ708を含み得る。デバイス700はナビゲーション機能710も含み得る。ディスプレイ704は、モバイルコンピューティングデバイスに適した情報を表示するための任意の適切なディスプレイユニットを含み得る。I/Oデバイス706は、モバイルコンピューティングデバイスへ情報を入力するための任意の適切なI/Oデバイスを含むことができる。例えばI/Oデバイス706は、英数字のキーボード、数字のキーパッド、タッチパッド、入力キー、ボタン、スイッチ、ロッカースイッチ、マイクロフォン、スピーカ、音声認識デバイス及びソフトウェア等を含んでよい。情報はマイクロフォンによってデバイス700へ入力されてもよい。そのような情報は、音声認識デバイスによってデジタル化され得る。
(例1)
コンピューティングデバイスの中央処理ユニット(CPU)とグラフィクス処理ユニット(GPU)との間の共有仮想メモリのための方法を、ここで説明する。本方法は、物理メモリ内でサーフェイスを割り当てるステップを含む。CPU仮想アドレス空間が作成されると、前記サーフェイスは、CPUページテーブル内において前記CPU仮想アドレス空間にマッピングされる。本方法はまた、前記CPU仮想アドレス空間に相当するGPU仮想アドレス空間を作成するステップと、GPUページテーブル内において、前記サーフェイスを前記GPU仮想アドレス空間にマッピングするステップと、前記サーフェイスをピン止めするステップを含む。
メモリは、CPUメモリからGPUメモリへデータをコピーすることなく、CPUとGPUとの間で前記サーフェイスを介して共有される。前記サーフェイスは、コンピューティングデバイスの前記CPU上で実行しているアプリケーションからの入力に応答して割り当てられる。さらに、本方法は、コンピューティングデバイスのドライバによって実行されてよい。
CPUのキャッシュ及びGPUのキャッシュからのデータは、CPUとGPUとの間で共有される最終レベルのキャッシュ(LLC)と一貫性を有する。演算はCPUからGPUにオフロードされ、この演算は、前記GPU内において実行される。完了信号が前記CPUに送信される。前記完了信号は、結果として前記サーフェイス内のデータの修正につながる何らかの計算を前記GPUが実行したという指示を含む。さらに、デバイスドライバが、CPUとGPUとの間でデータの処理を同期させることもある。
(例2)
コンピューティングデバイスをここで説明する。当該コンピューティングデバイスは、格納された命令を実行するように適合される中央処理ユニット(CPU)と、命令を格納するストレージデバイスとを含む。ストレージデバイスは、CPUによって実行されると、物理メモリ内でサーフェイスを割り当てるように適合されるプロセッサ実行可能コードを含む。CPU仮想アドレス空間が作成されると、前記サーフェイスは、CPUページテーブル内において前記CPU仮想アドレス空間にマッピングされる。さらに、CPU仮想アドレス空間に相当するGPU仮想アドレス空間が作成され、GPUページテーブル内において、前記サーフェイスが前記GPU仮想アドレス空間にマッピングされる。前記プロセッサ実行可能なコードは、前記サーフェイスをピン止めするようにも適合される。
物理メモリは、データをCPUメモリからGPUメモリへデータをコピーすることなく、前記CPUと前記GPUとの間で共有される。さらに、前記CPUと前記GPUは、コンピューティングデバイス内の同じダイス上に配置される。前記CPUと前記GPUは、最終レベルのキャッシュ(LLC)を共有し、該LLCは、前記CPU又はGPUのいずれかのキャッシュからデータを取り出すことができる。前記CPUと前記GPUは、統合メモリアーキテクチャ(UMA)を含むことがある。
前記プロセッサ実行可能なコードは、当該コンピューティングデバイスの前記CPU上で実行しているアプリケーションからの入力に応答して、前記サーフェイスを割り当てるように適合されることがある。前記CPUページテーブル及び前記GPUページテーブル内の仮想メモリアドレスは、仮想メモリアドレスを物理アドレスへ変換することによって、前記サーフェイス内の物理的な位置にマップされ得る。ドライバが、前記プロセッサ実行可能なコードの実行を開始するように構成されることがある。さらに、当該コンピューティングデバイスは、無線機及びディスプレイを更に備え、該無線機及びディスプレイは、少なくとも前記中央処理ユニットに通信可能に結合され得る。
(例3)
命令を有する少なくとも1つの非一時的マシン読取可能媒体をここで説明する。コンピューティングデバイスにおいて実行されたことに応答して、前記命令は、前記コンピューティングデバイスに、物理メモリ内でサーフェイスを割り当てることを実行させる。CPU仮想アドレス空間が生成され、前記サーフェイスが、CPUページテーブル内において前記CPU仮想アドレス空間にマッピングされる。前記命令はまた、前記CPU仮想アドレス空間に相当するGPU仮想アドレス空間を生成し、GPUページテーブル内において、前記サーフェイスを前記GPU仮想アドレス空間にマッピングする。さらに、前記サーフェイスがピン止めされる。
前記物理メモリは、CPUメモリからGPUメモリへデータをコピーすることなく、CPUとGPUとの間で共有される。さらぶ、前記命令は、CPUのキャッシュ及びGPUのキャッシュからのデータが、最終レベルのキャッシュ(LLC)と一貫性を有するようにさせる。加えて、前記命令は、前記コンピューティングデバイスに、該コンピューティングデバイスのCPU上で実行しているアプリケーションからの入力に応答して、前記サーフェイスの割り当てを行われることもある。
上記の例における詳細は、1つ又は複数の実施形態のいずれかにおいても用いられることがあることが理解されよう。例えば上述のコンピューティングデバイスについての全てのオプションの機能が、説明される方法又はコンピュータ読取可能媒体のいずれかに対して実装されてもよい。さらに、本明細書においてフロー図及び/又は状態図を用いて実施形態を説明してきたが、本発明は、これらの図又は対応する説明に限定されない。例えばフローは、それぞれ図示されたボックス若しくは状態又は図示及び説明されたものと正確に同じ順序で進む必要はない。
本発明は、本明細書で列挙された特定の詳細に制限されない。実際、本開示の利点を享受する当業者には、上述の説明及び図面から多くの他の変更を本発明の範囲内で行うことが可能であることが認識されるであろう。したがって、いずれかの補正を含め、本発明の範囲を定義するのは特許請求の範囲である。

Claims (21)

  1. 仮想メモリを共有するための方法であって、
    物理メモリ内でサーフェイスを割り当てるステップであって、前記サーフェイスは、CPUとGPUとの間で直接共有され、前記サーフェイスにおけるデータは、データをコピーする必要なく自動的に可視である、ステップと、
    CPU仮想アドレス空間を作成するステップと、
    CPUページテーブル内において、前記サーフェイスを前記CPU仮想アドレス空間にマッピングするステップと、
    前記CPU仮想アドレス空間に相当するGPU仮想アドレス空間を作成するステップと、
    GPUページテーブル内において、前記サーフェイスを前記GPU仮想アドレス空間にマッピングするステップと、
    前記サーフェイスをピン止めするステップと
    を含む、方法。
  2. CPUメモリからGPUメモリへデータをコピーすることなく、前記サーフェイスを介して前記CPUと前記GPUとの間で物理メモリを共有するステップ
    を含む、請求項1に記載の方法。
  3. コンピューティングデバイスの前記CPU上で実行しているアプリケーションからの入力に応答して、前記サーフェイスを割り当てるステップ
    を含む、請求項1に記載の方法。
  4. 当該方法は、コンピューティングデバイスのドライバによって実行される、請求項1に記載の方法。
  5. 前記CPUのキャッシュ及び前記GPUのキャッシュからのデータが、前記CPUと記GPUとの間で共有される最終レベルのキャッシュ(LLC)と一貫性を有することを保証する、請求項1に記載の方法。
  6. 演算を前記CPUから前記GPUにオフロードするステップと、
    前記演算を前記GPUにおいて実行するステップと、
    完了信号を前記CPUに送信するステップであって、前記完了信号は、結果として前記サーフェイス内のデータの修正につながる何らかの計算を前記GPUが実行したという指示を含む、ステップと
    を含む、請求項1に記載の方法。
  7. デバイスドライバが、前記CPUと前記GPUとの間でデータの処理を同期させる、請求項1に記載の方法。
  8. 前記CPU仮想アドレス空間及び前記GPU仮想アドレス空間を翻訳して、前記サーフェイス内の対応する物理的な位置を決定するステップ
    を含む、請求項1に記載の方法。
  9. 仮想メモリを共有するためのコンピューティングデバイスであって、
    格納された命令を実行するように適合される中央処理ユニット(CPU)と、
    GPUページテーブルを含むGPUと、
    命令を格納するストレージデバイスと
    を備え、前記ストレージデバイスは、前記CPUによって実行されると、
    物理メモリ内でサーフェイスを割り当てることであって、前記サーフェイスは、前記CPUと前記GPUとの間で直接共有され、前記サーフェイスにおけるデータは、データをコピーすることなく自動的に可視であることと、
    CPU仮想アドレス空間を作成することと、
    CPUページテーブル内において、前記サーフェイスを前記CPU仮想アドレス空間にマッピングすることと、
    前記CPU仮想アドレス空間に相当するGPU仮想アドレス空間を作成することと、
    GPUページテーブル内において、前記サーフェイスを前記GPU仮想アドレス空間にマッピングすることと、
    前記サーフェイスをピン止めすることと
    を実行させるプロセッサ実行可能なコードを備える、コンピューティングデバイス。
  10. 前記CPUと前記GPUは、データをCPUメモリからGPUメモリへデータをコピーするように構成されるプロセッサ実行可能コードを必要とせずに、物理メモリを共有する
    請求項9に記載のコンピューティングデバイス。
  11. 前記CPUと前記GPUは、当該コンピューティングデバイス内の同じダイ上にある、
    請求項9に記載のコンピューティングデバイス。
  12. 前記CPUと前記GPUは、最終レベルのキャッシュ(LLC)を共有し、該LLCは、前記CPU又は前記GPUのいずれかのキャッシュからデータを取り出す、
    請求項9に記載のコンピューティングデバイス。
  13. 前記CPUと前記GPUは、統合メモリアーキテクチャ(UMA)を備える、
    請求項9に記載のコンピューティングデバイス。
  14. 前記プロセッサ実行可能なコードは、当該コンピューティングデバイスの前記CPU上で実行しているアプリケーションからの入力に応答して、前記サーフェイスを割り当てるように適合される、
    請求項9に記載のコンピューティングデバイス。
  15. 前記プロセッサ実行可能なコードは、前記CPUページテーブル内の複数の仮想メモリアドレスの物理アドレスへの変換及び前記GPUページテーブル内の複数の仮想メモリアドレスの物理アドレスへの変換によって、前記CPUページテーブル及び前記GPUページテーブル内の前記仮想メモリアドレスを、前記サーフェイス内の物理的な位置にマップするように構成される、
    請求項9に記載のコンピューティングデバイス。
  16. 前記プロセッサ実行可能なコードの実行を開始するように構成されるドライバ
    を備える、請求項9に記載のコンピューティングデバイス。
  17. 無線機及びディスプレイを更に備え、該無線機及びディスプレイは、少なくとも前記中央処理ユニットに通信可能に結合される、
    請求項9に記載のコンピューティングデバイス。
  18. 仮想メモリを共有するためのコンピュータプログラムであって、コンピューティングデバイスによって実行されると、該コンピューティングデバイスに、
    物理メモリ内でサーフェイスを割り当てることであって、前記サーフェイスは、CPUとGPUとの間で直接共有され、前記サーフェイスにおけるデータは、データをコピーすることなく自動的に可視であることと、
    CPU仮想アドレス空間を生成することと、
    CPUページテーブル内において、前記サーフェイスを前記CPU仮想アドレス空間にマッピングすることと、
    前記CPU仮想アドレス空間に相当するGPU仮想アドレス空間を生成することと、
    GPUページテーブル内において、前記サーフェイスを前記GPU仮想アドレス空間にマッピングすることと、
    前記サーフェイスをピン止めすることと
    を実行させる、コンピュータプログラム
  19. 前記物理メモリは、CPUメモリからGPUメモリへデータをコピーすることなく、前記CPUと前記GPUとの間で共有される、
    請求項18に記載のコンピュータプログラム
  20. 前記コンピューティングデバイスに、
    CPUのキャッシュ及びGPUのキャッシュからのデータが、最終レベルのキャッシュ(LLC)と一貫性を有することを保証すること
    更に実行させる、請求項18に記載のコンピュータプログラム
  21. 請求項18乃至20のいずれか一項に記載のコンピュータプログラムを記憶する、少なくとも1つのマシン読取可能媒体。
JP2015523093A 2012-08-17 2013-06-19 共有仮想メモリ Active JP6001778B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/588,308 US9378572B2 (en) 2012-08-17 2012-08-17 Shared virtual memory
US13/588,308 2012-08-17
PCT/US2013/046504 WO2014028120A1 (en) 2012-08-17 2013-06-19 Shared virtual memory

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2016170488A Division JP6559628B2 (ja) 2012-08-17 2016-09-01 共有仮想メモリ

Publications (2)

Publication Number Publication Date
JP2015526806A JP2015526806A (ja) 2015-09-10
JP6001778B2 true JP6001778B2 (ja) 2016-10-05

Family

ID=50099761

Family Applications (5)

Application Number Title Priority Date Filing Date
JP2015523093A Active JP6001778B2 (ja) 2012-08-17 2013-06-19 共有仮想メモリ
JP2016170488A Active JP6559628B2 (ja) 2012-08-17 2016-09-01 共有仮想メモリ
JP2018079012A Active JP6545861B2 (ja) 2012-08-17 2018-04-17 共有仮想メモリ
JP2018158095A Active JP6746645B2 (ja) 2012-08-17 2018-08-27 共有仮想メモリ
JP2019007556A Pending JP2019071122A (ja) 2012-08-17 2019-01-21 共有仮想メモリ

Family Applications After (4)

Application Number Title Priority Date Filing Date
JP2016170488A Active JP6559628B2 (ja) 2012-08-17 2016-09-01 共有仮想メモリ
JP2018079012A Active JP6545861B2 (ja) 2012-08-17 2018-04-17 共有仮想メモリ
JP2018158095A Active JP6746645B2 (ja) 2012-08-17 2018-08-27 共有仮想メモリ
JP2019007556A Pending JP2019071122A (ja) 2012-08-17 2019-01-21 共有仮想メモリ

Country Status (7)

Country Link
US (2) US9378572B2 (ja)
JP (5) JP6001778B2 (ja)
KR (1) KR20150031293A (ja)
CN (2) CN104471554B (ja)
DE (4) DE112013004079B4 (ja)
TW (4) TWI698747B (ja)
WO (1) WO2014028120A1 (ja)

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8850417B2 (en) * 2011-04-15 2014-09-30 International Business Machines Corporation Method and framework for invisible code rewriting
US9116809B2 (en) 2012-03-29 2015-08-25 Ati Technologies Ulc Memory heaps in a memory model for a unified computing system
US9373182B2 (en) * 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9195585B2 (en) * 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
WO2014158128A1 (en) * 2013-03-25 2014-10-02 Hewlett-Packard Development Company, L.P. Extensible firmware abstraction
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
WO2015130282A1 (en) * 2014-02-27 2015-09-03 Hewlett-Packard Development Company, L. P. Communication between integrated graphics processing units
US20150256645A1 (en) * 2014-03-10 2015-09-10 Riverscale Ltd Software Enabled Network Storage Accelerator (SENSA) - Network Server With Dedicated Co-processor Hardware Implementation of Storage Target Application
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
WO2016085463A1 (en) * 2014-11-25 2016-06-02 Hewlett Packard Enterprise Development Lp Memory controller with memory resource memory management
US20170322889A1 (en) * 2014-11-25 2017-11-09 Hewlett Packard Enterprise Development Lp Computing resource with memory resource memory management
US10019373B2 (en) * 2014-12-19 2018-07-10 Mediatek Inc. Memory management method for supporting shared virtual memories with hybrid page table utilization and related machine readable medium
US10572288B2 (en) * 2015-06-26 2020-02-25 Intel Corporation Apparatus and method for efficient communication between virtual machines
CN106683035B (zh) * 2015-11-09 2020-03-13 龙芯中科技术有限公司 Gpu加速方法和装置
GB2546343A (en) 2016-01-15 2017-07-19 Stmicroelectronics (Grenoble2) Sas Apparatus and methods implementing dispatch mechanisms for offloading executable functions
GB2547242B (en) * 2016-02-11 2018-05-23 Advanced Risc Mach Ltd Graphics processing
CN109416636B (zh) * 2016-06-17 2023-05-26 惠普发展公司,有限责任合伙企业 共享的机器学习数据结构
US20180004649A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Techniques to Format a Persistent Memory File
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
US20180081811A1 (en) * 2016-09-20 2018-03-22 Qualcomm Incorporated Dynamic cache partitioning through hill-climbing
CN108206937B (zh) * 2016-12-20 2020-05-19 浙江宇视科技有限公司 一种提升智能分析性能的方法和装置
JP2018156573A (ja) * 2017-03-21 2018-10-04 東芝メモリ株式会社 メモリ装置および情報処理システム
US10282811B2 (en) * 2017-04-07 2019-05-07 Intel Corporation Apparatus and method for managing data bias in a graphics processing architecture
US10417733B2 (en) * 2017-05-24 2019-09-17 Samsung Electronics Co., Ltd. System and method for machine learning with NVMe-of ethernet SSD chassis with embedded GPU in SSD form factor
CN107291537A (zh) * 2017-06-07 2017-10-24 江苏海平面数据科技有限公司 一种gpu片上存储空间使用的优化方法
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
CN107463510B (zh) * 2017-08-21 2020-05-08 北京工业大学 一种面向高性能的异构多核共享cache缓冲管理方法
US10445088B2 (en) * 2018-01-11 2019-10-15 Macronix International Co., Ltd. System boot code clone
CN110134370B (zh) * 2018-02-08 2023-09-12 龙芯中科技术股份有限公司 一种图形绘制的方法、装置、电子设备及存储介质
US10678705B2 (en) 2018-09-13 2020-06-09 Qualcomm Incorporated External paging and swapping for dynamic modules
TWI707272B (zh) * 2019-04-10 2020-10-11 瑞昱半導體股份有限公司 可執行指令的電子裝置以及指令執行方法
JP2020177074A (ja) * 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
JP2020177073A (ja) 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
CN110187835B (zh) * 2019-05-24 2023-02-03 北京百度网讯科技有限公司 用于管理访问请求的方法、装置、设备和存储介质
WO2020237460A1 (zh) * 2019-05-27 2020-12-03 华为技术有限公司 一种图形处理方法和装置
US10872458B1 (en) * 2019-09-06 2020-12-22 Apple Inc. Graphics surface addressing
CN111309649B (zh) * 2020-02-11 2021-05-25 支付宝(杭州)信息技术有限公司 一种数据传输和任务处理方法、装置及设备
US11366752B2 (en) * 2020-03-19 2022-06-21 Micron Technology, Inc. Address mapping between shared memory modules and cache sets
CN113377545B (zh) * 2021-07-08 2023-11-14 支付宝(杭州)信息技术有限公司 用于分配gpu物理内存的方法及装置
CN113645484B (zh) * 2021-10-16 2021-12-21 成都中科合迅科技有限公司 基于图形处理器的数据可视化加速渲染方法

Family Cites Families (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01291343A (ja) * 1988-05-18 1989-11-22 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置
JP2675961B2 (ja) 1992-05-20 1997-11-12 インターナショナル・ビジネス・マシーンズ・コーポレイション 実記憶のページをロックするための方法
US6986052B1 (en) * 2000-06-30 2006-01-10 Intel Corporation Method and apparatus for secure execution using a secure memory partition
US6684305B1 (en) * 2001-04-24 2004-01-27 Advanced Micro Devices, Inc. Multiprocessor system implementing virtual memory using a shared memory, and a page replacement method for maintaining paged memory coherence
US6891543B2 (en) 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7355601B2 (en) 2003-06-30 2008-04-08 International Business Machines Corporation System and method for transfer of data between processors using a locked set, head and tail pointers
US8493397B1 (en) * 2004-11-15 2013-07-23 Nvidia Corporation State machine control for a pipelined L2 cache to implement memory transfers for a video processor
US20060112226A1 (en) 2004-11-19 2006-05-25 Hady Frank T Heterogeneous processors sharing a common cache
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
JP4493626B2 (ja) 2006-05-25 2010-06-30 株式会社ソニー・コンピュータエンタテインメント マルチプロセッサシステム、ライブラリモジュール、および描画処理方法
US20080109795A1 (en) 2006-11-02 2008-05-08 Nvidia Corporation C/c++ language extensions for general-purpose graphics processing unit
US7865675B2 (en) * 2007-12-06 2011-01-04 Arm Limited Controlling cleaning of data values within a hardware accelerator
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
US8531471B2 (en) * 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8069446B2 (en) * 2009-04-03 2011-11-29 Microsoft Corporation Parallel programming and execution systems and techniques
US8451281B2 (en) * 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
US8484647B2 (en) * 2009-07-24 2013-07-09 Apple Inc. Selectively adjusting CPU wait mode based on estimation of remaining work before task completion on GPU
US8868848B2 (en) * 2009-12-21 2014-10-21 Intel Corporation Sharing virtual memory-based multi-version data between the heterogenous processors of a computer platform
US20110161620A1 (en) * 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
EP2619687B1 (en) * 2010-09-24 2016-04-06 Intel Corporation Sharing virtual functions in a shared virtual memory between heterogeneous processors of a computing platform
US8385140B2 (en) * 2010-11-18 2013-02-26 Advanced Micro Devices, Inc. Memory elements having shared selection signals
CN102495762B (zh) * 2011-11-16 2014-04-02 华为技术有限公司 一种线程调度方法、线程调度装置及多核处理器系统
US9009419B2 (en) * 2012-07-31 2015-04-14 Advanced Micro Devices, Inc. Shared memory space in a unified memory model
US8938602B2 (en) * 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry
US9378572B2 (en) 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory

Also Published As

Publication number Publication date
JP2018139128A (ja) 2018-09-06
CN107025183A (zh) 2017-08-08
JP2018198086A (ja) 2018-12-13
TWI666548B (zh) 2019-07-21
TW201702881A (zh) 2017-01-16
US9378572B2 (en) 2016-06-28
CN107025183B (zh) 2021-01-15
DE112013007788B4 (de) 2023-10-12
WO2014028120A1 (en) 2014-02-20
DE112013004079B4 (de) 2023-06-07
TWI624760B (zh) 2018-05-21
TWI698747B (zh) 2020-07-11
CN104471554A (zh) 2015-03-25
JP6559628B2 (ja) 2019-08-14
JP6746645B2 (ja) 2020-08-26
JP2017004556A (ja) 2017-01-05
TW201418983A (zh) 2014-05-16
JP6545861B2 (ja) 2019-07-17
DE112013004079T5 (de) 2015-06-03
DE112013007742B3 (de) 2023-06-07
US20160328823A1 (en) 2016-11-10
JP2015526806A (ja) 2015-09-10
TW201843592A (zh) 2018-12-16
US9779472B2 (en) 2017-10-03
JP2019071122A (ja) 2019-05-09
TW201921251A (zh) 2019-06-01
US20140049551A1 (en) 2014-02-20
DE112013007780B3 (de) 2023-06-07
KR20150031293A (ko) 2015-03-23
CN104471554B (zh) 2018-05-25
TWI605342B (zh) 2017-11-11

Similar Documents

Publication Publication Date Title
JP6746645B2 (ja) 共有仮想メモリ
US11531623B2 (en) Memory sharing via a unified memory architecture

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160209

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160506

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160901

R150 Certificate of patent or registration of utility model

Ref document number: 6001778

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250