JP6136033B2 - 方法、コンピューティングデバイス、およびプログラム - Google Patents

方法、コンピューティングデバイス、およびプログラム Download PDF

Info

Publication number
JP6136033B2
JP6136033B2 JP2015527456A JP2015527456A JP6136033B2 JP 6136033 B2 JP6136033 B2 JP 6136033B2 JP 2015527456 A JP2015527456 A JP 2015527456A JP 2015527456 A JP2015527456 A JP 2015527456A JP 6136033 B2 JP6136033 B2 JP 6136033B2
Authority
JP
Japan
Prior art keywords
cpu
gpu
memory
computing device
plane
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
JP2015527456A
Other languages
English (en)
Other versions
JP2015524979A (ja
Inventor
エヌ. ラオ、ジャヤンス
エヌ. ラオ、ジャヤンス
サンダレサン、ムラリ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of JP2015524979A publication Critical patent/JP2015524979A/ja
Application granted granted Critical
Publication of JP6136033B2 publication Critical patent/JP6136033B2/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/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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • 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/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • 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/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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/455Image or video data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/6042Allocation of cache space to multiple users or processors
    • 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
    • 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

Landscapes

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

Description

本発明は、概して、コンピューティングシステム内における中央処理装置(CPU)と入出力(I/O)デバイスとの間のメモリ共有に関する。より詳細には、本発明は、CPUとI/Oデバイスとの間における物理メモリの共有に関する。
近年、複数のI/Oデバイスは、多数の中央処理装置(CPU)の複数のコンピュータ処理能力に匹敵する複数のコンピュータ処理能力を含む場合がある。結果として、伝統的にCPUによって実行されてきた複数のコンピュータタスクの一部が、コンピューティングデバイスのI/Oデバイスにオフロードされる場合がある。例えば、コンピューティングデバイスのグラフィクス処理装置(GPU)などのI/Oデバイスは、伝統的にCPUによって実行されてきた複数のタスクのいくつかを実行することができ、そのことによって、CPUの効率性が向上している。
図1は、複数の実施形態に従って用いることができるコンピューティングデバイスのブロック図である。 図2Aは、複数の実施形態に係るコンピューティングデバイスの中央処理装置(CPU)とグラフィクス処理装置(GPU)との間におけるメモリ共有のためのプロシージャを実装するために用いることができるユニファイドメモリアーキテクチャ(UMA)の概略である。 図2Bは、複数の実施形態に係るコンピューティングデバイスの中央処理装置(CPU)とグラフィクス処理装置(GPU)との間におけるメモリ共有のためのプロシージャを実装するために用いることができるユニファイドメモリアーキテクチャ(UMA)の概略である。 図3は、複数の実施形態に係るコンピューティングデバイスCPUとGPUとの間におけるメモリ共有のための方法を示す処理フロー図である。 図4は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間における共有メモリを処理するための方法を示す処理フロー図である。 図5は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間におけるメモリ共有のためのコードを記憶する、有形の非一時的なコンピュータ可読媒体を示すブロック図である。 図6は、共有物理メモリを実装するための例示的なシステムのブロック図である。 図7は、図6が具現されうるシステムにおける小型フォームファクタデバイスの概略である。 本開示及び複数の図面において、同様の複数のコンポーネント及び複数の特徴を参照するために、同じ番号が用いられる。100番台の複数の番号は、図1において初出の複数の特徴を指し、200番台の複数の番号は、図2において初出の複数の特徴複数の特徴を指し、以下同様である。
現在、複数のオペレーティングシステム及び複数のグラフィクスインターフェースは、複数のGPUをCPU同様の複数のリソースを有する複数のプロセッサとして管理するのではなく、複数のGPUを複数のI/Oデバイスとして管理する。複数のGPUを複数のI/Oデバイスとして管理することにより、複数のCPU及び複数のGPUは、別個の物理アドレスドメインを有する複数の物理メモリを有する。複数のコンピュータタスクを複数のGPUにオフロードする場合、データは、CPUの物理アドレスドメインからGPUの物理アドレスドメインにコピーされる。GPUが処理を終了した後、データは、CPUの物理アドレスドメインに再びコピーされる。
CPUによって伝統的に実行されてきた複数のコンピュータタスクの一部を、GPUのコンピューティングデバイスにオフロードすることは、CPUの効率性を高める場合がある。上述したように、複数のタスクをGPUにオフロードするべく、データは、CPUの物理メモリからGPUの物理メモリへの間で転送される場合がある。複数のコンピュータタスクをGPUにオフロードする場合に行われる数のデータ転送は、複数のタスクをGPUにオフロードすることによって得られるいずれかの効率性を低下させることがある。従って、本明細書に記載された複数の実施形態は、コンピューティングデバイスのCPUとGPUとの間におけるメモリ共有に関する。メモリは、ユニファイドメモリアーキテクチャ(UMA)を介して共有されてもよい。
複数の様々な実施形態において、UMAは、CPU及びGPUの両方に同じ物理メモリを付与することにより、CPUとGPUとの間におけるメモリ共有を提供する。したがって、物理メモリと、CPU及びGPUの対応する物理アドレス空間とは、全く同じである。複数の実施形態において、物理メモリは、CPUとGPUとの間で分割されてもよい。さらに、物理メモリは、コンピューティングデバイスのオペレーティングシステムによって割り当てられる、ページングされたシステムメモリとすることができる。CPUの仮想メモリアドレス空間は、GPUのグラフィクス仮想メモリアドレス空間として、同じ複数の物理メモリページにマッピングされてもよい。さらに、いくつかの実施形態において、CPU及びGPUは、物理的に同じダイに位置する。したがって、CPU及びGPUは、GPUのアドレス空間からCPUのアドレス空間にデータをコピーすることなく、物理メモリ内に保持されるデータを共有することができ、逆もまた同様である。これにより、例えば、CPUとGPUとの間におけるデータ共有のための時間及び電力消費を減少させることによって、CPUからGPUに対して複数のコンピュータタスクをオフロードするコストを低減させることができる。
以下の説明及び特許請求の範囲において、用語「結合」及び「接続」が、これらの派生語と併せて用いられる場合がある。これらの用語は、互いの同義語であることを意図するものではないことを理解されたい。むしろ、複数の具体的実施形態において、「接続」は、2または3以上の要素が互いに、直接物理的または電気的に接触することを示すために用いられてもよい。「結合」は、2または3以上の要素が、直接物理的または電気的に接触することを意味してもよい。しかしながら、「結合」は、2または3以上の要素が互いに直接は接触してないが、互いに連携または相互作用することをさらに意味してもよい。
いくつかの実施形態は、ハードウェア、ファームウェア及びソフトウェアの1つまたは組み合わせにおいて実装されてもよい。いくつかの実施形態は、コンピューティングプラットフォームによって読み出し及び実行されることにより、本明細書に記載されたオペレーションを実行することができる、機械可読媒体に記憶された複数の命令としてさらに実装されてもよい。機械可読媒体は、機械、例えばコンピュータによって可読な形で情報を記憶または送信するための任意のメカニズムを含んでもよい。例えば、機械可読媒体は、特に、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、もしくは電気、光、音声または他の形で伝播する複数の信号、例えば複数の搬送波、複数の赤外線信号、複数のデジタル信号、または複数の信号を送信及び/または受信する複数のインターフェースを含んでもよい。
実施形態は、実装または例である。本明細書において言及される「実施形態」、「1つの実施形態」、「いくつかの実施形態」、「様々な複数の実施形態」または「他の複数の実施形態」は、複数の実施形態に関連して記載された具体的な特徴、構造または特性が、少なくともいくつかの実施形態に含まれているが、必ずしも本発明の全ての実施形態には含まれていないことを意味する。「実施形態」、「1つの実施形態」または「いくつかの実施形態」という様々な複数の表現は、必ずしも全てが同じ複数の実施形態を指すものではない。ある実施形態の複数の要素または複数の態様は、他の実施形態の複数の要素または複数の態様と組み合わせることができる。
本明細書に記載または示された複数のコンポーネント、複数の特徴、複数の構造、複数の特性等の全てが、具体的な実施形態または複数の実施形態に含まれる必要はない。本明細書において、あるコンポーネント、特徴、構造または特性が含まれ「てもよい」、「る場合がある」、「ることが可能である」または「る可能性がある」と記述されている場合は、例えば、その具体的なコンポーネント、特徴、構造または特性は、含まれる必要がない。本明細書または特許請求の範囲において、「ある」要素について言及される場合は、その要素は1つだけ存在するのではないことを意味する。本明細書または特許請求の範囲が「追加的な」要素について言及する場合、「追加的な」要素が1より多く存在することが除外されるものではない。
なお、いくつかの実施形態は、具体的な複数の実装を参照して記載されているが、いくつかの実施形態によれば、他の複数の実装も可能である。さらに、複数の回路要素、もしくは図示及び/または本明細書に記載された他の複数の特徴の構成及び/または順序は、示されかつ記載された具体的な方法で構成される必要はない。いくつかの実施形態によれば、多くの他の構成が可能である。
図示された各システムにおいて、複数の要素は、場合によっては、表された複数の要素が異なりうる及び/または同様でありうることを示唆するべく、各々、同じ参照番号または異なる参照番号を有してもよい。しかしながら、要素は、異なる複数の実装を有するとともに、本明細書に示されまたは記載された複数のシステムのいくつかまたは全てとともにオペレーションすることができるように柔軟であてもよい。複数の図面に示された様々な複数の要素は、同一または異なっていてもよい。第1の要素としてどれを指し、どれを第2の要素と称するかは、任意である。
図1は、複数の実施形態に従って用いることができるコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、特に、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイスまたはサーバであってもよい。コンピューティングデバイス100は、記憶された複数の命令を実行するように適合される中央処理装置(CPU)102を、CPU102によって実行可能な複数の命令を記憶するメモリデバイス108とともに含んでもよい。CPU102は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタまたは任意の数の他の構成とすることができる。さらに、コンピューティングデバイス100は、1より多くのCPU102を含んでもよい。CPU102によって実行される複数の命令は、メモリ共有プロシージャを実装するために用いられてもよい。
コンピューティングデバイス100は、グラフィクス処理装置(GPU)104をさらに含んでもよい。GPUは、コンピューティングデバイス100内の入出力(I/O)デバイスである。I/Oデバイスは、入力、出力またはこれらの任意の組み合わせを用いて、コンピュータと通信を行うために用いることができるデバイスである。図示したように、CPU102は、バス106を介してGPU104と接続されてもよい。しかしながら、いくつかの実施形態において、GPU104は、コンピューティングデバイス100内で、CPU102と同じダイに位置する。このように、CPU102及びGPUは、バス106を介したCPU102及びGPU104間の接続を除いてもよい態様で、物理的に接続される。さらに、複数の実施形態において、CPU102及びGPU104は、図2A及び図2Bに関して説明されたように、コンピューティングデバイス100のユニファイドメモリアーキテクチャ内に含まれてもよい。
GPU104は、コンピューティングデバイス100内で任意の数のグラフィクスオペレーションを実行するように構成されてもよい。例えば、GPU104は、複数のグラフィクス画像、複数のグラフィクスフレーム、複数のビデオなどを、コンピューティングデバイス100のユーザに表示させるべく、レンダリングまたは操作するように構成されてもよい。いくつかの実施形態において、GPU104は、多数のグラフィクスエンジン(図示されていない)を含み、各グラフィクスエンジンは、特定の複数のグラフィクスタスクを実行し、または特定のタイプの複数のワークロードを実行するように構成される。
コンピューティングデバイス100は、メモリデバイス108をさらに含んでもよい。メモリデバイス108は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリまたは任意の他の適した複数のメモリシステムを含むことができる。例えば、メモリデバイス108は、ダイナミックランダムアクセスメモリ(DRAM)を含んでもよい。メモリ108は、メモリ共有プロシージャを実装するための複数の命令を実行するように構成されるデバイスドライバ110を含んでもよい。デバイスドライバ110は、ソフトウェア、アプリケーションプログラム、アプリケーションコードなどであってもよい。いくつかの実施形態において、デバイスドライバ110は、ユーザモードドライバである。
メモリ108は、ラストレベルキャッシュ(LLC)114、レベル2キャッシュ116及びレベル1キャッシュ118を含むマルチレベルキャッシュ112をさらに含む。マルチレベルキャッシュ112は図示のために用いられているが、任意のキャッシュがコンピューティングデバイス100に含まれることができる。マルチレベルキャッシュ112は、CPU102で頻繁に用いられるデータのより小さいサブセットを記憶するより小さく、より高速のメモリであってもよい。より大きなデータセットは、記憶装置120に記憶されてもよい。記憶装置120は、ハードドライブ、光学式ドライブ、サムドライブ、複数のドライブのアレイまたはこれらの任意の組み合わせなどの物理メモリである。記憶装置120は、複数の遠隔記憶ドライブをさらに含んでもよい。CPU102が記憶装置120に記憶されたデータにアクセスするための時間長は、CPU102がメモリ104でマルチレベルキャッシュ112にアクセスするためにかかる時間長に対して、より低速であってもよい。
いくつかの実施形態において、LLC114は、GPU104がレベル2キャッシュ116及びレベル1キャッシュ118にキャッシュされたデータに直接アクセスできないよう、レベル2キャッシュ116及びレベル1キャッシュ118をGPU104から隠しながら、CPU102及びGPU104間で共有される。しかしながら、LLC114は、レベル2キャッシュ116及びレベル1キャッシュ118に記憶されたデータの読み出し及び書き出しができる。そのことによって、GPU104がレベル2キャッシュ116またはレベル1キャッシュ118にキャッシュされたデータを要求する場合、LLC114は、GPU104による処理のために、レベル2キャッシュ116及びレベル1キャッシュ118からデータを取り出すことができる。このように、LLC114により、コンピューティングデバイス100内のデータコヒーレンシが保証される。本明細書で用いられるように、コヒーレンシとは、CPU102及びGPU104によってアクセスされたデータが同じである状態を指す。従って、CPU102は、正確なデータをGPU104と共有することを目的として、LLC114に対してデータがコヒーレントであることを保証することにより、記憶デバイス120からのデータが、LLC114、レベル2キャッシュ116及びレベル1キャッシュ118において正確に反映されることを保証する。
さらに、複数の実施形態において、CPU及びGPUは、メモリのいずれのレベルにもアクセスすることができる。しかしながら、LLC114が最新のデータを含む一方で、メモリの他の複数のレベルからのデータは陳腐化していてもよい。さらに、複数の実施形態において、CPU及びGPUは、共有仮想メモリを実行するべく、任意の相互アクセス可能な記憶場所を用いることができる。任意の相互アクセス可能な記憶場所は、限定されるものではないが、メモリデバイス104の任意の領域、記憶装置120の任意の領域、ネットワーク接続された記憶場所、サムドライブまたはこれらの任意の組み合わせを含んでもよい。
記憶装置120は、面122を、コンピューティングデバイス100で実行されるように構成される任意の数のアプリケーション124とともに含む。面122は、デバイスドライバ110によって割り当てられる物理メモリの指定部分である。面は、面122内において物理メモリのコンテンツに実行される処理に基づいて、更新されてもよい。複数の実施形態において、アプリケーション124がCPU102によって実行される場合、アプリケーション124は、デバイスドライバ110によって面を割り当てるよう、要求してもよい。さらに、CPU102上で実行されるアプリケーション124は、面122の求められるサイズ及び複数の特性を特定することにより、アプリケーション124によって要求されたメモリ割り当てに応じて、面122を構成してもよい。さらに、面割り当ては、例えば、コンピューティングデバイス100のCPU102からの入力に応答して、実行されてもよい。さらに、複数の実施形態において、面は、LLCキャッシュ可能とマーク付けされる。LLCキャッシュ可能と指定された面122により、面122内の複数の位置からキャッシュされたデータは、LLC114にキャッシュされ、そのことによって、CPU102及びGPU104の両方によって、LLCにおいてアクセス可能であってもよい。
メモリ管理ユニット(MMU)126は、面122内に記憶されたデータへのアクセスを管理するために用いられてもよい。MMU126は、CPU102及びGPU104の仮想アドレス空間を、アドレス空間の様々な複数のページに分割することができる。CPU102及びGPU104は、各々が自己の複数の仮想アドレス空間を有する。仮想アドレス空間は、コンピューティングシステム内で実行される様々なアプリケーション124を、複数の仮想アドレスの具体的なサブセットに分離することにより、面122内で保持されるデータの保護を可能とする。複数の仮想アドレス空間の利用により、1のアプリケーション124は、他のアプリケーション124のデータにアクセスしない。従って、MMU126は、CPUページテーブル128及びGPUページテーブル130を含む。CPUページテーブルは、面122内の物理アドレス位置にマッピングされた、CPUの複数の仮想アドレスを含む。同様に、GPUページテーブルは、面122内の物理アドレス位置にマッピングされた、GPUの複数の仮想アドレスを含む。本明細書に記載されたメモリ共有プロシージャにおいて、CPUページテーブル128は、CPU仮想アドレス空間の物理アドレス空間に対するマッピングを含んでもよい。物理アドレス空間は、面122内における複数の物理的位置に対応する。同様に、GPUページテーブル130は、GPU仮想アドレス空間の物理アドレス空間に対するマッピングを含んでもよい。
複数の様々な実施形態において、CPUページテーブル128からの複数の仮想メモリアドレス及びGPUページテーブル130からの複数のグラフィクス仮想メモリアドレスは、変換プロシージャを介して、面122の複数の物理メモリページにマッピングされる。変換プロシージャは、任意の複数の仮想メモリアドレスを、対応する複数の物理アドレスに変換するために用いられてもよい。例えば、変換プロシージャは、ページテーブル内の複数の仮想メモリアドレスをページテーブル内の複数の物理メモリアドレスに変換するための特定の変換テーブルに基づいて実行されうるページテーブルウォークを介して、実行されてもよい。さらに、複数の実施形態において、トランスレーションルックアサイドバッファは、CPU及びGPUの複数の仮想アドレスを、これらの個別の複数のページテーブル内における複数の物理アドレス空間に変換するために用いられてもよい。
変換プロシージャの実行後、面122は、ピニングされてもよい。面のピニングとは、複数の物理的位置及び対応する複数の物理アドレスが変化しないように、面を保護することを指す。したがって、面122のピニングにより、複数の仮想アドレス空間と複数の物理アドレス空間との間で、「確実な」マッピングが保証される。複数のアドレス空間の間における確実なマッピングは、面のピニング後に変化しないマッピングである。面がピニングされない場合、ページフォールトが生成される場合があり、すなわち、面の物理的位置がシフトするために、誤ったデータが処理される場合がある。
複数の実施形態において、アプリケーション124はCPU102上で実行されてもよく、データ処理などの複数のオペレーションを実行するべく、面122などの面を要求する。CPU102は、複数のオペレーションをGPU104にハンドオフしてもよい。複数のページテーブルが面122にマッピングされたことから、GPUは、他のアドレス空間にデータをコピーすることなく面にアクセスすることにより、CPU102によってオフロードされた複数のオペレーションを即座に実行開始することができる。CPU102によって複数のオペレーションが完了した場合、GPU104は、複数のオペレーションが完了したという信号をCPU102に送信してもよい。CPU102は、次に、元のアドレス空間へデータをコピーして戻すことなく、データ処理を継続してもよい。
アプリケーション124に要求された複数のオペレーションがGPU104によって実行される場合、面122に対する複数の変更が生じてもよい。本明細書に記載されたメモリ共有プロシージャによれば、面122に対するそのような複数の変更は、CPU102から完全に可視である。したがって、データは、GPU104からCPU102へと、逆もまた同様にデータをコピーすることなく、GPU104及びCPU102間で共有されてもよい。
CPU102は、バス106を介して、コンピューティングデバイス100を1または複数のI/Oデバイス134と接続するように適合される入出力(I/O)デバイスインターフェース132に接続されてもよい。I/Oデバイス134は、例えば、キーボード及びポインティングデバイスを含んでもよく、ポインティングデバイスは、特に、タッチパッドまたはタッチスクリーンを含んでもよい。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及びGPU104間のメモリ共有のためのプロシージャを実装するために用いられてもよいユニファイドメモリアーキテクチャ200の概略である。同様の数字が付けられた複数の項目は、図1に記載されたとおりである。UMA200は、例えば、コンピューティングデバイス100のCPUページテーブル128、GPUページテーブル130及び面122を含んでもよい。
UMA200によれば、CPU102及びGPU104間で任意のタイプのデータコピーまたはデータ転送を行うことなく、CPU102及びGPU104間で直接的なメモリ共有が行われてもよい。これは、CPU102及びGPU104に面122を共有させることにより、実現されてもよい。上述のように、面122は、物理的記憶デバイスの一部であってもよい。面は、任意の数の物理メモリ位置202を含む。物理メモリ位置202は、ページングされたメモリフォーマットに構成されてもよく、ページは、面122内の物理メモリの固定長のブロックである。
CPUページテーブル128は、多数のCPU仮想メモリアドレス204を含んでもよく、GPUページテーブル130は、多数のグラフィクス仮想メモリアドレス206を含んでもよい。複数のグラフィクス仮想メモリアドレス206がグラフィクス仮想アドレス空間を形成する一方で、複数のCPU仮想メモリアドレス204は、CPU仮想アドレス空間を形成する。各アドレス空間は、各ページテーブルの物理アドレスにマッピングされる。したがって、複数のCPU仮想メモリアドレス204及び複数のグラフィクス仮想メモリアドレス206は両方とも、複数の物理アドレス208の同じ群に対するマッピングを、CPUページテーブル128及びGPUページテーブル130内でそれぞれ行う。
複数の物理アドレス208により、CPU102及びGPU104(図1)は、面122内の複数の物理的位置202に記憶されたデータを処理することができる。複数の様々な実施形態において、面122は、アプリケーション124(図1)などのアプリケーションによってアクセスされた特定の複数のCPU仮想アドレス204に基づいて、割り当てられる。一度、面122が割り当てられると、各物理アドレス208は、図2A及び図2Bに示すようにCPUページテーブル128内の対応するCPU仮想アドレス204にマッピングされる。GPUページテーブル130内の複数のグラフィクス仮想メモリアドレス206は、複数のCPU仮想アドレス及び複数のGPU仮想メモリアドレスが複数の物理アドレス208の同じ群にマッピングされるように、CPUページテーブル128と同期してもよい。複数の物理アドレス208は、面122内の複数の物理的位置202に対応する。従って、面122は、CPU102及びGPU104間で直接共有されてもよい。複数の実施形態において、GPU104が複数の物理的位置202のいずれかに位置するデータを修正する場合は、複数の変更は、データコピーまたはデータ整列をいずれも行うことなく、面122を介して自動的にCPU102から可視である。
図2A及び図2Bの概略は、UMA200が図2A及び図2Bに示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、UMA200は、特定の実装の詳細に応じて、図2A及び図2Bに示されていない任意の数の追加的なコンポーネントを含んでもよい。
図3は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間におけるメモリ共有のための方法300を示す処理フロー図である。複数の様々な実施形態において、方法300は、CPUメモリからGPUメモリへデータをコピーすることなく、CPUとGPUとの間でメモリを共有するために用いられる。
いくつかの実施形態において、方法300は、コンピューティングデバイス100などのコンピューティングデバイス上で実行されてもよく、CPU102及びGPU104は、バス106によって接続される。複数の他の実施形態において、CPU102及びGPU104は、図2A及び図2Bに関して説明されたUMA200などのUMAに含まれてもよい。さらに、方法300は、コンピューティングデバイス100のデバイスドライバ126などのコンピューティングデバイスのドライバによって実行されてもよい。
方法は、始めにブロック302において、物理メモリ内で面の割り当てを行う。複数の実施形態において、面は、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、コンピューティングデバイスの物理メモリ内で割り当てられてもよい。さらに、複数の実施形態において、面は、デバイスドライバによって割り当てられてもよい。アプリケーションまたはデバイスドライバは、CPU仮想アドレスを用いて、CPUから面にアクセスしてもよい。複数の実施形態において、複数のCPU仮想アドレスは、コンピューティングデバイスのオペレーティングシステムによって、アプリケーションまたはデバイスドライバに付与される。
ブロック304において、面内の複数の物理的位置に対応する複数の物理アドレスは、複数のCPU仮想アドレスにマッピングされる。複数のCPU仮想メモリアドレス及び複数の物理アドレス間のマッピングは、CPUページテーブル内に含まれる。複数の物理メモリページの複数の仮想メモリアドレスに対するマッピングは、システムメモリ内の対応する複数の物理メモリページを決定するべく、複数のCPU仮想アドレスの変換を含んでもよい。複数のCPU仮想アドレスが複数の物理アドレスに変換された場合、変換処理中に発見された複数のCPU仮想アドレス及び複数の物理アドレス間の複数の関連は、ロックされる。複数の関連をロックすることにより、CPUページテーブルにおける複数の物理アドレスに対応する面の複数の物理的位置は、キャッシュにページングされてもよい。面の複数の物理アドレスはデバイスドライバによる変更が防止されるため、複数のページは、複数の関連をロックしながら、キャッシュに残る。
ブロック306において、複数のGPU仮想メモリアドレスは、面内の複数の物理的位置にマッピングされる。複数の実施形態において、面は、LLCキャッシュ可能と指定される。そのような指定により、面の複数の物理的位置が、CPU及びGPUに共有されるLLCにキャッシュされることが保証される。アプリケーションが用いる複数のグラフィクス仮想メモリアドレスは、CPUの複数の仮想アドレスにマッピングされる同じ複数の物理アドレスに変換されてもよい。複数の実施形態において、デバイスドライバは、GPUページテーブル内の複数の物理アドレスに対する複数のグラフィクス仮想メモリアドレスのマッピングを更新してもよい。
複数のGPU仮想アドレスに対する面のマッピングは、面のピニングを含んでもよい。面のピニングにより、複数のGPU仮想アドレスと面との間のマッピングが変更されることを防止する。したがって、GPU仮想メモリは、物理メモリを変更することなく、同じ物理メモリに対応する。例えば、オペレーティングシステムは、自己のメモリ管理の一部として、割り当てられた複数の物理メモリ位置を変更してもよい。しかしながら、面が一度ピニングされると、オペレーティングシステムが面の複数の物理メモリ位置を変更することは防止される。
図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間のオペレーションを同期させる。さらに、複数の実施形態において、完了信号は、例えば、メールボックスの書き込みまたは割り込みであってもよい。完了信号は、GPUがいくつかの計算またはグラフィクスオペレーションを実行した結果、面内のデータが変更されたことを示してもよい。完了後、GPUの出力は、CPUによって処理されてもよい。複数の様々な実施形態において、GPUが、任意の面の複数の物理的位置に対する読み出しまたは書き出しによって面を処理する場合、処理は、GPUの複数の内部バッファ及び複数のキャッシュにおいて行われてもよい。従って、GPUの複数の内部バッファ及び複数のキャッシュ内のデータは、GPUの処理完了後、LLCとコヒーレントになる。
図3及び図4の処理フロー図は、方法300および400の複数のブロックが任意の具体的な順序で実行されるものであり、または複数のブロックの全てがあらゆる場合に含まれるものであると示すことを意図するものではない。さらに、特定の実装の詳細に応じて、任意の数の追加的なブロックが、方法300および400内に含まれてもよい。さらに、本明細書に記載された方法がGPUを含む一方で、メモリは、他のCPUまたはダイレクトメモリアクセス(DMA)コントローラなどの任意のI/Oデバイスの間で共有されてもよい。
図5は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間におけるメモリ共有のために、コードを記憶する有形の非一時的コンピュータ可読媒体500を示すブロック図である。有形の非一時的コンピュータ可読媒体500は、コンピュータバス504を通してプロセッサ502によってアクセスされてもよい。さらに、有形の非一時的コンピュータ可読媒体500は、本明細書に記載された方法の実行をプロセッサ502に命令するように構成されるコードを含んでもよい。
本明細書で説明された様々な複数のソフトウェアコンポーネントは、図5に示すように、有形の非一時的コンピュータ可読媒体500記憶されてもよい。例えば、面割り当てモジュール506は、コンピューティングデバイスのメモリ内に多数の複数の物理メモリページを含む面を割り当てまたは生成するように構成されてもよい。マッピングモジュール508は、面内の複数の物理的位置をCPUアドレステーブル及びGPUアドレステーブル内の複数の仮想メモリアドレスにマッピングするように構成されてもよい。さらに、ピニングモジュール510は、面内の複数の物理的位置の変更が防止されるように、面をピニングするように構成されてもよい。
図5のブロック図は、有形の非一時的コンピュータ可読媒体500が、図5に示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、有形の非一時的コンピュータ可読媒体500は、特定の実装の詳細に応じて、図5に示されていない任意の数の追加的なコンポーネントを含んでもよい。
複数の実施形態において、CPUは、CPUアドレス空間とGPUアドレス空間との間でデータを整理する必要はない。さらに、CPUは、複数の処理コア間で処理が競合することを防止するように、CPUがGPUによる処理を求める具体的なデータ群について、他の複数の処理コアがいずれも処理を行わないことを保証する責任を負わない。
図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、メモリデバイス108、記憶デバイス120、グラフィクスサブシステム614、アプリケーション124及び無線装置616の任意の組み合わせを含んでもよい。チップセット612は、CPU102、メモリデバイス108、記憶デバイス120、グラフィクスサブシステム614、アプリケーション124及び無線装置616の間での相互通信を提供してもよい。例えば、チップセット612は、記憶デバイス120との相互通信を提供可能な記憶アダプタ(図示されていない)を含んでもよい。
CPU102は、複合命令セットコンピュータ(CISC)または縮小命令セットコンピュータ(RISC)の複数のプロセッサ、x86命令セットと互換性のある複数のプロセッサ、マルチコアまたは任意の他のマイクロプロセッサもしくは中央処理装置(CPU)として実装されてもよい。いくつかの実施形態において、CPU102は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサなどを含む。
メモリデバイス108は、限定されるものではないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)またはスタティックRAM(SRAM)などの揮発性メモリデバイスとして実装されてもよい。記憶デバイス120は、限定されるものではないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、外付け記憶デバイス、フラッシュメモリ、バッテリバックアップSDRAM(シンクロナスDRAM)及び/またはネットワークアクセス可能な記憶デバイスなどの不揮発性記憶デバイスとして実装されてもよい。いくつかの実施形態において、記憶デバイス120は、例えば、複数のハードドライブが含まれる場合に、重要なデジタルメディアのために記憶性能強化型の保護を高める技術含む。
グラフィクスサブシステム614は、表示のために、静止画または動画など複数の画像処理を実行してもよい。グラフィクスサブシステム614は、例えば、GPU104、したがってビジュアル処理装置(VPU)などのグラフィクス処理装置(GPU)を含んでもよい。アナログまたはデジタルインターフェースは、グラフィクスサブシステム614及びディスプレイ604を通信可能に結合するために用いられてもよい。例えば、インターフェースは、高精細度マルチメディアインターフェース、DisplayPort、ワイヤレスHDMI(登録商標)及び/またはワイヤレスHD準拠の複数の技術のいずれかであってもよい。グラフィクスサブシステム614は、CPU102またはチップセット612と一体化されてもよい。代替的に、グラフィクスサブシステム614は、チップセット612と通信可能に結合されるスタンドアロンのカードであってもよい。
本明細書に記載された複数のグラフィクス及び/またはビデオ処理技術は、様々な複数のハードウェアキテクチャで実装されてもよい。例えば、グラフィクス及び/またはビデオの機能は、チップセット612内で一体化されてもよい。代替的に、別個のグラフィクス及び/またはビデオプロセッサが用いられてもよい。さらに他の実施形態として、マルチコアプロセッサを含む一般的な汎用プロセッサによって、複数のグラフィクス及び/またはビデオ機能が実装されてもよい。さらなる実施形態において、複数の機能が家電機器に実装されてもよい。
無線装置616は、様々な複数の無線通信技術を用いて複数の信号を送受信可能な1または複数の無線装置を含んでもよい。そのような複数の技術は、1または複数の無線ネットワークを通じた複数の通信を伴ってもよい。例示的な複数の無線ネットワークは、複数の無線ローカルエリアネットワーク(WLAN)、複数の無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、複数のセルラーネットワーク、複数の衛星ネットワークなどを含む。そのような複数のネットワークを通じた通信において、無線装置616は、1または複数の適用可能な規格の任意のバージョンに従って、動作してもよい。
ディスプレイ604は、任意のテレビ型モニタまたはディスプレイを含んでもよい。例えば、ディスプレイ604は、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビなどを含んでもよい。ディスプレイ604は、デジタル及び/またはアナログであってもよい。いくつかの実施形態において、ディスプレイ604は、ホログラフィックディスプレイである。また、ディスプレイ604は、視覚的な映像を受信し得る透明な面であってもよい。そのような複数の映像は、情報、複数の画像、複数のオブジェクトなどを様々な形で伝えてもよい。例えば、そのような複数の映像は、モバイル拡張現実(MAR)アプリケーション用の視覚的なオーバーレイであってもよい。1または複数のアプリケーション124の制御下では、プラットフォーム602は、ユーザインタフェース618をディスプレイ604上に表示する。
コンテンツサービスデバイス606は、任意の国内的、国際的または独立計のサービスによって運営されてもよく、及び、したがって、例えば、インターネットを介してプラットフォーム602にアクセス可能であってもよい。コンテンツサービスデバイス606は、プラットフォーム602及び/またはディスプレイ604と結合されてもよい。プラットフォーム602及び/またはコンテンツサービスデバイス606は、メディア情報をネットワーク142との間で通信(例えば送信及び/または受信)するべく、ネットワーク142と結合されてもよい。コンテンツ配信デバイス608もまた、プラットフォーム602及び/またはディスプレイ604と結合されてもよい。
コンテンツサービスデバイス606は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話またはデジタル情報を配信可能なインターネット対応デバイスを含んでもよい。さらに、コンテンツサービスデバイス606は、複数のコンテンツプロバイダとプラットフォーム602またはディスプレイ604との間で、ネットワーク142を介してまたは直接的に、一方向または双方向へのコンテンツの通信が可能な任意の他の同様の複数のデバイスを含んでもよい。コンテンツは、ネットワーク142を介して、システム600の複数のコンポーネント及びコンテンツプロバイダのいずれか1つ及びそれに対して、一方向及び/または双方向で通信されてもよいことが理解されよう。コンテンツの複数の例は、例えば、ビデオ、音楽、医療及びゲーム情報などを含む任意のメディア情報を含んでもよい。
コンテンツサービスデバイス606は、メディア情報、デジタル情報、他のコンテンツを含むケーブルテレビプログラムなどのコンテンツを受信してもよい。コンテンツプロバイダの複数の例は、特に、任意のケーブルまたは衛星テレビもしくは無線またはインターネットの複数のコンテンツプロバイダを含んでもよい。
いくつかの実施形態において、プラットフォーム602は、1または複数の複数のナビゲーション機能を含むナビゲーションコントローラ610から、複数の制御信号を受信する。ナビゲーションコントローラ610の複数のナビゲーション機能は、例えば、ユーザインタフェース618と情報をやりとりするために用いられてもよい。ナビゲーションコントローラ610は、ユーザが空間的な(例えば連続的かつ多次元の)データをコンピュータに入力できるようなコンピュータハードウェア要素(具体的には、ヒューマンインターフェースデバイス)となり得るポインティングデバイスであってもよい。グラフィカルユーザインタフェース(GUI)などの多数のシステム、ならびに複数のテレビ及び複数のモニタによれば、ユーザは、複数の身体的なジェスチャを用いて、データの制御及びコンピュータまたはテレビへの提供を行うことができる。複数の身体的なジェスチャは、限定されるわけではないが、複数の表情、複数の顔の動き、様々な四肢の動き、身体の動き、ボディランゲージまたはこれらの任意の組み合わせを含む。そのような複数の身体的なジェスチャは、認識されるとともに、複数のコマンドまたは複数の命令に変換することができる。
ナビゲーションコントローラ610の複数のナビゲーション機能の動きは、ポインタ、カーソル、焦点リングまたはディスプレイ604上に表示される他の複数の視覚的なインジケータの動きによって、ディスプレイ604上に反映されてもよい。例えば、アプリケーション124の制御下で、ナビゲーションコントローラ610に位置する複数のナビゲーション機能は、ユーザインタフェース618上に表示される複数の仮想ナビゲーション機能にマッピングされてもよい。いくつかの実施形態において、ナビゲーションコントローラ610は、別個のコンポーネントとすることはできないが、むしろ、プラットフォーム602及び/またはディスプレイ604と一体化されてもよい。
システム600は、例えば、可能な場合には、初期の起動後、ユーザがボタンのタッチによりプラットフォーム602を即座にオン及びオフすることができる技術を含む複数のドライバ(図示されていない)を含んでもよい。プログラムロジックにより、プラットフォーム602は、プラットフォームが「オフ」にされた場合、複数のメディアアダプタまたは他のコンテンツサービスデバイス606もしくはコンテンツ配信デバイス608に、コンテンツをストリーミングしてもよい。さらに、チップセット612は、例えば、5.1サラウンドサウンドオーディオ及び/または高精細度7.1サラウンドサウンドオーディオのハードウェア及び/またはソフトウェアサポートを含んでもよい。複数のドライバは、複数の一体化グラフィクスプラットフォーム用のグラフィクスドライバを含んでもよい。いくつかの実施形態において、グラフィクスドライバは、周辺要素高速相互接続(peripheral component interconnect express)(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に入力されてもよい。そのような情報は、音声認識デバイスによりデジタル化されてもよい。
コンピューティングデバイスの中央処理装置(CPU)と入出力(I/O)デバイスとの間におけるメモリ共有のための方法が、本明細書に記載される。方法は、物理メモリ内における面の割り当てを含む。方法は、CPUページテーブル内の複数の仮想メモリアドレスに対する、面のマッピングを含む。方法は、面に基づく、I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対する、面のマッピングをさらに含む。方法は、面のピニングをさらに含む。
メモリは、CPUメモリからI/Oデバイスメモリに対してデータをコピーすることなく、CPUとI/Oデバイスとの間で面を介して共有されてもよい。面は、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、割り当てられてもよい。さらに、方法は、コンピューティングデバイスのドライバにより実行されてもよい。
CPUのキャッシュ及びI/Oデバイスからのデータは、CPUとI/Oデバイスとの間で共有されるラストレベルキャッシュ(LLC)とコヒーレントであってもよい。オペレーションは、CPUからI/Oデバイスに対してオフロードされてもよく、そのオペレーションは、I/Oデバイス内で実行されてもよい。完了信号は、CPUに送信されてもよく、完了信号は、I/Oデバイスがいくつかの計算を実行した結果、面内のデータが変更されたという指標を含む。さらに、デバイスドライバは、CPUとI/Oデバイスとの間で、データの処理を同期させてもよい。
コンピューティングデバイスが、本明細書に記載される。コンピューティングデバイスは、記憶された複数の命令を実行するように構成される中央処理装置(CPU)と、複数の命令を記憶する記憶デバイスとを含む。記憶デバイスは、CPUにより実行された場合に、物理メモリ内で面を割り当てるように構成されるプロセッサ実行可能コードを含む。コンピューティングデバイスは、グラフィクス処理装置(GPU)及びGPUページテーブルをさらに含む。面は、CPUページテーブル内の複数の仮想メモリアドレスにマッピングされてもよい。面は、GPUページテーブル内の複数の仮想メモリアドレスに対して、さらにマッピングされてもよい。コンピューティングデバイスは、面をピニングしてもよい。
物理メモリは、CPUメモリからGPUメモリに対してデータをコピーすることなく、CPUとGPUとの間で共有されてもよい。さらに、CPU及びGPUは、コンピューティングデバイス内の同じダイに位置する。CPU及びGPUは、ラストレベルキャッシュ(LLC)を共有してもよく、LLCは、CPUまたはGPUの任意のキャッシュからデータを取り出すことができる。CPU及びGPUは、ユニファイドメモリアーキテクチャ(UMA)を含んでもよい。
プロセッサ実行可能コードは、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、面を割り当てるように構成されてもよい。CPUページテーブル及びGPUページテーブルにおける複数の仮想メモリアドレスは、複数の仮想アドレスを複数の物理アドレスに変換することにより、面内の複数の物理的位置にマッピングされてもよい。ドライバは、プロセッサ実行可能コードの実行を開始するように構成されてもよい。さらに、コンピューティングデバイスは、無線装置及びディスプレイを含んでもよく、無線装置及びディスプレイは、少なくとも中央処理装置と通信可能に結合されてもよい。
内部に記憶された複数の命令を有する少なくとも1つの非一時的機械可読媒体が、本明細書に記載される。コンピューティングデバイス上で実行されたことに応答して、複数の命令により、コンピューティングデバイスは、物理メモリ内で面を生成する。複数の命令により、コンピューティングデバイスはさらに、多数の複数のCPU仮想メモリアドレスに対して面をマッピングするとともに、多数の複数のGPU仮想メモリアドレスに対して面をマッピングする。面は、さらにピニングされてもよい。
物理メモリは、CPUメモリからGPUメモリに対してデータをコピーすることなく、CPUとGPUとの間で共有されてもよい。さらに、複数の命令により、CPU及びGPUのキャッシュからのデータは、ラストレベルキャッシュ(LLC)とコヒーレントであってもよい。さらに、複数の命令により、コンピューティングデバイスは、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、面をさらに割り当ててもよい。
前述された複数の例における詳細は、1または複数の複数の実施形態のいずれかの部分で用いられてもよいことが理解されよう。例えば、上述したコンピューティングデバイスの全てのオプションの機能は、本明細書に記載された方法またはコンピュータ可読媒体のいずれかに関してさらに実装されてもよい。さらに、複数のフロー図及び/または複数の状態図が、複数の実施形態を説明するために本明細書において用いられてもよいが、複数の本発明は、これらの複数の図または対応する本明細書における複数の記載に限定されるものではない。例えば、フローは、示されたボックスまたは状態の各々を通して動く必要もなければ、本明細書に示されかつ記載されたものと正確に同じ順序である必要もない。
複数の本発明は、本明細書に列挙された具体的な複数の詳細に制限されるものではない。実際、本開示を利用する当業者によれば、上述の記載及び複数の図面からの多くの他のバリエーションが、複数の本発明の範囲内で生じ得ることを理解するであろう。従って、任意の修正を含む以下の特許請求の範囲によって、複数の本発明の範囲が画定される。
本実施形態の例を下記の各項目として示す。
[項目1]
コンピューティングデバイスの中央処理装置(CPU)と入出力(I/O)デバイスとの間におけるメモリ共有のための方法であって、
物理メモリ内で面を割り当てる段階と、
CPUページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングする段階と、
I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階とを備える、方法。
[項目2]
I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階は、前記面のピニングを含む、項目1に記載の方法。
[項目3]
CPUメモリからI/Oデバイスメモリに対してデータをコピーすることなく、前記CPUと前記I/Oデバイスとの間で、前記面を介して、物理メモリを共有する段階を備える、項目1または2に記載の方法。
[項目4]
前記コンピューティングデバイスの前記CPU上で実行されるアプリケーションからの入力に応答して、前記面を割り当てる段階を備える、項目1から3のいずれか1項に記載の方法。
[項目5]
前記方法は、前記コンピューティングデバイスのドライバにより実行される、項目1から4のいずれか1項に記載の方法。
[項目6]
前記CPUのキャッシュ及び前記I/Oデバイスのキャッシュからのデータが、前記CPUと前記I/Oデバイスとの間で共有されるラストレベルキャッシュ(LLC)とコヒーレントであることを確保する段階を備える、項目1から5のいずれか1項に記載の方法。
[項目7]
前記CPUから前記I/Oデバイスに対して、オペレーションをオフロードする段階と、
前記I/Oデバイス内で前記オペレーションを実行する段階と、
前記CPUに完了信号を送信する段階とを備え、
前記完了信号は、前記I/Oデバイスがいくつかの計算を実行した結果、前記面内のデータが変更されたという指標を備える、項目1から6のいずれか1項に記載の方法。
[項目8]
デバイスドライバは、前記CPUと前記I/Oデバイスとの間でデータの前記処理を同期させる、項目1から7のいずれか1項に記載の方法。
[項目9]
前記面内で対応する複数の物理的位置を決定するべく、前記複数のグラフィクス仮想メモリアドレスのいずれかまたは前記複数の仮想メモリアドレスのいずれか、もしくは両方を変換する段階を備える、項目1から8のいずれか1項に記載の方法。
[項目10]
記憶された複数の命令を実行する中央処理装置(CPU)と、
グラフィクス処理装置(GPU)及びGPUページテーブルと、
複数の命令を記憶する記憶デバイスとを備え、
前記記憶デバイスは、プロセッサ実行可能コードを備え、前記プロセッサ実行可能コードは、前記CPUに実行された場合に、
物理メモリ内における面の割り当てと、
CPUページテーブル内の複数の仮想メモリアドレスに対する前記面のマッピングと、
前記GPUページテーブル内の複数の仮想メモリアドレスに対する前記面のマッピングとを行う、コンピューティングデバイス。
[項目11]
前記プロセッサ実行可能コードは、前記面をピニングする、項目10に記載のコンピューティングデバイス。
[項目12]
前記プロセッサ実行可能コードは、前記プロセッサ実行可能コードがCPUメモリからGPUメモリに対してデータをコピーすることなく、前記CPUと前記GPUとの間で前記物理メモリを共有する、項目10または11に記載のコンピューティングデバイス。
[項目13]
前記CPU及び前記GPUは、前記コンピューティングデバイス内の同じダイ上にある、項目10から12のいずれか1項に記載のコンピューティングデバイス。
[項目14]
前記CPU及び前記GPUは、ラストレベルキャッシュ(LLC)を共有し、前記LLCは、前記CPUまたは前記GPUの任意のキャッシュからデータを取り出す、項目10から13のいずれか1項に記載のコンピューティングデバイス。
[項目15]
前記CPU及び前記GPUは、ユニファイドメモリアーキテクチャ(UMA)を備える、項目10から14のいずれか1項に記載のコンピューティングデバイス。
[項目16]
前記プロセッサ実行可能コードは、
前記CPUページテーブル内の前記複数の仮想メモリアドレスを、複数の物理アドレスに変換し、
前記GPUページテーブル内の前記複数の仮想メモリアドレスを複数の物理アドレス変換し、
前記CPUページテーブル及び前記GPUページテーブル内の前記複数の仮想メモリアドレスを、前記面内の複数の物理的位置に対してマッピングする、項目10から15のいずれか1項に記載のコンピューティングデバイス。
[項目17]
前記プロセッサ実行可能コードの実行を開始するドライバを備える、項目10から16のいずれか1項に記載のコンピューティングデバイス。
[項目18]
無線装置及びディスプレイをさらに備え、前記無線装置及びディスプレイは、少なくとも前記中央処理装置と通信可能に結合される、項目10から17のいずれか1項に記載のコンピューティングデバイス。
[項目19]
複数の命令を有する少なくとも1つのプログラムであって、前記複数の命令がコンピューティングデバイス上で実行されたことに応答して、前記コンピューティングデバイスは、
物理メモリ内で面を生成し、
CPUページテーブル内の複数の仮想メモリアドレスに対して前記面をマッピングし、
前記面に基づいて、GPUページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングする、少なくとも1つのプログラム。
[項目20]
前記物理メモリは、CPUメモリからGPUメモリに対してデータをコピーすることなく、前記CPUと前記GPUとの間で共有される、項目19に記載の、少なくとも1つのプログラム。

Claims (19)

  1. コンピューティングデバイスの中央処理装置(CPU)と入出力(I/O)デバイスとの間におけるメモリ共有のための方法であって、
    物理メモリ内で面を割り当てる段階と、
    CPUページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングする段階と、
    I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階と、
    前記CPUのキャッシュ及び前記I/Oデバイスのキャッシュからのデータが、前記CPUと前記I/Oデバイスとの間で共有されるラストレベルキャッシュ(LLC)とコヒーレントであることを確保する段階とを備える
    方法。
  2. コンピューティングデバイスの中央処理装置(CPU)と入出力(I/O)デバイスとの間におけるメモリ共有のための方法であって、
    物理メモリ内で面を割り当てる段階と、
    CPUページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングする段階と、
    I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階と、
    前記CPUから前記I/Oデバイスに対して、オペレーションをオフロードする段階と、
    前記I/Oデバイス内で前記オペレーションを実行する段階と、
    前記CPUに完了信号を送信する段階とを備え、
    前記完了信号は、前記I/Oデバイスがいくつかの計算を実行した結果、前記面内のデータが変更されたという指標を備える
    方法。
  3. I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階は、前記面のピニングを含む、請求項1または2に記載の方法。
  4. CPUメモリからI/Oデバイスメモリに対してデータをコピーすることなく、前記CPUと前記I/Oデバイスとの間で、前記面を介して、物理メモリを共有する段階を備える、請求項1からのいずれか1項に記載の方法。
  5. 前記コンピューティングデバイスの前記CPU上で実行されるアプリケーションからの入力に応答して、前記面を割り当てる段階を備える、請求項1からのいずれか1項に記載の方法。
  6. 前記方法は、前記コンピューティングデバイスのドライバにより実行される、請求項1からのいずれか1項に記載の方法。
  7. デバイスドライバは、前記CPUと前記I/Oデバイスとの間でデータの処理を同期させる、請求項1からのいずれか1項に記載の方法。
  8. 前記面内で対応する複数の物理的位置を決定するべく、前記複数のグラフィクス仮想メモリアドレスのいずれかまたは前記複数の仮想メモリアドレスのいずれか、もしくは両方を変換する段階を備える、請求項1からのいずれか1項に記載の方法。
  9. 記憶された複数の命令を実行する中央処理装置(CPU)と、
    グラフィクス処理装置(GPU)及びGPUページテーブルと、
    複数の命令を記憶する記憶デバイスとを備え、
    前記記憶デバイスは、プロセッサ実行可能コードを備え、前記プロセッサ実行可能コードは、前記CPUに実行された場合に、
    物理メモリ内における面の割り当てと、
    CPUページテーブル内の複数の仮想メモリアドレスに対する前記面のマッピングと、
    前記GPUページテーブル内の複数の仮想メモリアドレスに対する前記面のマッピングとを行い、
    前記CPUから前記GPUに対して、オペレーションをオフロードし、
    前記GPU内で前記オペレーションを実行し、
    前記CPUに完了信号を送信し、
    前記完了信号は、前記GPUがいくつかの計算を実行した結果、前記面内のデータが変更されたという指標を備える
    コンピューティングデバイス。
  10. 前記プロセッサ実行可能コードは、前記面をピニングする、請求項に記載のコンピューティングデバイス。
  11. 前記プロセッサ実行可能コードは、前記プロセッサ実行可能コードがCPUメモリからGPUメモリに対してデータをコピーすることなく、前記CPUと前記GPUとの間で前記物理メモリを共有する、請求項9または10に記載のコンピューティングデバイス。
  12. 前記CPU及び前記GPUは、前記コンピューティングデバイス内の同じダイ上にある、請求項から11のいずれか1項に記載のコンピューティングデバイス。
  13. 前記CPU及び前記GPUは、ラストレベルキャッシュ(LLC)を共有し、前記LLCは、前記CPUまたは前記GPUの任意のキャッシュからデータを取り出す、請求項から12のいずれか1項に記載のコンピューティングデバイス。
  14. 前記CPU及び前記GPUは、ユニファイドメモリアーキテクチャ(UMA)を備える、請求項から13のいずれか1項に記載のコンピューティングデバイス。
  15. 前記プロセッサ実行可能コードは、
    前記CPUページテーブル内の前記複数の仮想メモリアドレスを、複数の物理アドレスに変換し、
    前記GPUページテーブル内の前記複数の仮想メモリアドレスを複数の物理アドレス変換し、
    前記CPUページテーブル及び前記GPUページテーブル内の前記複数の仮想メモリアドレスを、前記面内の複数の物理的位置に対してマッピングする、請求項から14のいずれか1項に記載のコンピューティングデバイス。
  16. 前記プロセッサ実行可能コードの実行を開始するドライバを備える、請求項から15のいずれか1項に記載のコンピューティングデバイス。
  17. 無線装置及びディスプレイをさらに備え、前記無線装置及びディスプレイは、少なくとも前記中央処理装置と通信可能に結合される、請求項から16のいずれか1項に記載のコンピューティングデバイス。
  18. 複数の命令を有する少なくとも1つのプログラムであって、前記複数の命令がコンピューティングデバイス上で実行されたことに応答して、前記コンピューティングデバイスは、
    物理メモリ内で面を生成し、
    CPUページテーブル内の複数の仮想メモリアドレスに対して前記面をマッピングし、
    前記面に基づいて、GPUページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングし、
    前記コンピューティングデバイスのCPUからGPUに対して、オペレーションをオフロードし、
    前記GPU内で前記オペレーションを実行し、
    前記CPUに完了信号を送信し、
    前記完了信号は、前記GPUがいくつかの計算を実行した結果、前記面内のデータが変更されたという指標を備える
    少なくとも1つのプログラム。
  19. 前記物理メモリは、CPUメモリからGPUメモリに対してデータをコピーすることなく、前記CPUと前記GPUとの間で共有される、請求項18に記載の、少なくとも1つのプログラム。
JP2015527456A 2012-08-17 2013-06-13 方法、コンピューティングデバイス、およびプログラム Active JP6136033B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/588,453 2012-08-17
US13/588,453 US9373182B2 (en) 2012-08-17 2012-08-17 Memory sharing via a unified memory architecture
PCT/US2013/045657 WO2014028109A2 (en) 2012-08-17 2013-06-13 Memory sharing via a unified memory architecture

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP2016068954A Division JP6478119B2 (ja) 2012-08-17 2016-03-30 コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム
JP2016186273A Division JP6330169B2 (ja) 2012-08-17 2016-09-23 異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体

Publications (2)

Publication Number Publication Date
JP2015524979A JP2015524979A (ja) 2015-08-27
JP6136033B2 true JP6136033B2 (ja) 2017-05-31

Family

ID=50099759

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2015527456A Active JP6136033B2 (ja) 2012-08-17 2013-06-13 方法、コンピューティングデバイス、およびプログラム
JP2016068954A Active JP6478119B2 (ja) 2012-08-17 2016-03-30 コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム
JP2016186273A Active JP6330169B2 (ja) 2012-08-17 2016-09-23 異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体
JP2017144418A Active JP6391077B2 (ja) 2012-08-17 2017-07-26 コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2016068954A Active JP6478119B2 (ja) 2012-08-17 2016-03-30 コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム
JP2016186273A Active JP6330169B2 (ja) 2012-08-17 2016-09-23 異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体
JP2017144418A Active JP6391077B2 (ja) 2012-08-17 2017-07-26 コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム

Country Status (6)

Country Link
US (5) US9373182B2 (ja)
JP (4) JP6136033B2 (ja)
KR (3) KR101741598B1 (ja)
CN (5) CN104471540B (ja)
DE (3) DE112013007658B4 (ja)
WO (1) WO2014028109A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198361B2 (en) 2012-08-17 2019-02-05 Intel Corporation Memory sharing via a unified memory architecture

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10445243B2 (en) 2013-03-14 2019-10-15 Nvidia Corporation Fault buffer for resolving page faults in unified virtual memory system
DE102013022169A1 (de) 2013-03-14 2014-09-18 Nvidia Corporation Fehlerpuffer zur verfolgung von seitenfehlern in einem vereinheitlichten virtuellen speichersystem
US9323684B2 (en) * 2014-03-21 2016-04-26 Intel Corporation Dynamic cache and memory allocation for memory subsystems
CN105302765A (zh) * 2014-07-22 2016-02-03 电信科学技术研究院 一种系统级芯片及其内存访问管理方法
US9779471B2 (en) * 2014-10-01 2017-10-03 Qualcomm Incorporated Transparent pixel format converter
US10542233B2 (en) * 2014-10-22 2020-01-21 Genetec Inc. System to dispatch video decoding to dedicated hardware resources
DE102016106939B4 (de) 2015-04-17 2024-05-02 Suunto Oy Eingebettetes Rechengerät
US10572288B2 (en) * 2015-06-26 2020-02-25 Intel Corporation Apparatus and method for efficient communication between virtual machines
KR102651425B1 (ko) 2016-06-30 2024-03-28 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
JP6756177B2 (ja) * 2016-07-20 2020-09-16 コニカミノルタ株式会社 画像形成装置
CN106909515B (zh) * 2017-02-11 2020-09-18 苏州浪潮智能科技有限公司 面向混合主存的多核共享末级缓存管理方法及装置
US10380039B2 (en) * 2017-04-07 2019-08-13 Intel Corporation Apparatus and method for memory management in a graphics processing environment
US10725929B2 (en) 2017-04-10 2020-07-28 Intel Corporation Graphics memory extended with nonvolatile memory
US10872394B2 (en) * 2017-04-27 2020-12-22 Daegu Gyeongbuk Institute Of Science And Technology Frequent pattern mining method and apparatus
CN107391431B (zh) * 2017-06-29 2020-05-05 北京金石智信科技有限公司 一种多个处理器共享访问存储器的方法、装置及系统
US10489881B2 (en) * 2017-06-30 2019-11-26 H3 Platform Inc. Direct memory access for co-processor memory
US11243790B2 (en) * 2017-09-20 2022-02-08 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
US10474568B2 (en) * 2017-09-20 2019-11-12 Huawei Technologies Co., Ltd. Re-playable execution optimized for page sharing in a managed runtime environment
KR102533241B1 (ko) * 2018-01-25 2023-05-16 삼성전자주식회사 적응적으로 캐시 일관성을 제어하도록 구성된 이종 컴퓨팅 시스템
US11461869B2 (en) * 2018-03-14 2022-10-04 Samsung Electronics Co., Ltd. Slab based memory management for machine learning training
CN108459912B (zh) * 2018-04-10 2021-09-17 郑州云海信息技术有限公司 一种末级缓存管理方法及相关装置
CN110377534B (zh) * 2018-04-13 2023-11-17 华为技术有限公司 数据处理方法及装置
JP7017650B2 (ja) * 2018-06-12 2022-02-08 華為技術有限公司 メモリ管理の方法、装置、およびシステム
US11442628B2 (en) 2018-07-31 2022-09-13 SK Hynix Inc. Apparatus and method for engaging a plurality of memory systems with each other
US11249919B2 (en) 2018-07-31 2022-02-15 SK Hynix Inc. Apparatus and method for managing meta data for engagement of plural memory system to store data
CN110780810B (zh) 2018-07-31 2023-06-27 爱思开海力士有限公司 用于彼此接合多个存储器系统以存储数据的设备和方法
CN109547531B (zh) * 2018-10-19 2021-04-09 华为技术有限公司 数据处理的方法、装置和计算设备
KR20200109973A (ko) * 2019-03-15 2020-09-23 에스케이하이닉스 주식회사 메모리 공유를 위한 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
US10698842B1 (en) 2019-04-10 2020-06-30 Xilinx, Inc. Domain assist processor-peer for coherent acceleration
JP2020177073A (ja) 2019-04-16 2020-10-29 株式会社デンソー 車両用装置、車両用装置の制御方法
US10853263B1 (en) * 2019-07-23 2020-12-01 Ati Technologies Ulc Unified kernel virtual address space for heterogeneous computing
US11385941B2 (en) * 2019-07-31 2022-07-12 EMC IP Holding Company, LLC System and method for address space slicing with strong CPU core affinity
US11321068B2 (en) * 2019-09-05 2022-05-03 International Business Machines Corporation Utilizing memory coherency to improve bandwidth performance
US11507527B2 (en) 2019-09-27 2022-11-22 Advanced Micro Devices, Inc. Active bridge chiplet with integrated cache
CN113515483A (zh) * 2020-04-10 2021-10-19 华为技术有限公司 一种数据传输方法及装置
CN112463714B (zh) * 2020-11-30 2022-12-16 成都海光集成电路设计有限公司 远程直接内存访问方法、异构计算系统及电子设备
CN113190346A (zh) * 2021-03-30 2021-07-30 联想(北京)有限公司 一种内存管理方法、装置及电子设备
CN114691385A (zh) * 2021-12-10 2022-07-01 全球能源互联网研究院有限公司 一种电力异构计算系统
CN115454358B (zh) * 2022-11-09 2023-03-24 摩尔线程智能科技(北京)有限责任公司 数据的存储控制方法及其装置、图像处理系统
CN116185910B (zh) * 2023-04-25 2023-07-11 北京壁仞科技开发有限公司 访问设备内存、管理设备内存的方法、设备和介质

Family Cites Families (52)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5421433A (en) 1977-07-18 1979-02-17 Murata Manufacturing Co Conductive silver coating
JPH01291343A (ja) * 1988-05-18 1989-11-22 Nippon Telegr & Teleph Corp <Ntt> メモリ管理装置
GB2283596B (en) * 1993-11-01 1998-07-01 Ericsson Ge Mobile Communicat Multiprocessor data memory sharing
JPH08328994A (ja) * 1995-05-30 1996-12-13 Toshiba Corp 情報処理装置
US6104417A (en) 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
FR2806170B1 (fr) 2000-03-07 2003-06-20 Michel Paramythioti Relais optique correcteur d'aberrations pour systeme optique , notamment telescope a miroirs
US6891543B2 (en) * 2002-05-08 2005-05-10 Intel Corporation Method and system for optimally sharing memory between a host processor and graphics processor
US7421694B2 (en) 2003-02-18 2008-09-02 Microsoft Corporation Systems and methods for enhancing performance of a coprocessor
JP4446373B2 (ja) * 2003-03-19 2010-04-07 パナソニック株式会社 プロセッサ、データ共有装置
US6981072B2 (en) * 2003-06-05 2005-12-27 International Business Machines Corporation Memory management in multiprocessor system
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
GB2417105B (en) * 2004-08-13 2008-04-09 Clearspeed Technology Plc Processor memory system
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7305524B2 (en) * 2004-10-08 2007-12-04 International Business Machines Corporation Snoop filter directory mechanism in coherency shared memory system
KR100633420B1 (ko) 2004-11-12 2006-10-16 (주)캠퍼스라인 책걸상의 높낮이 조절장치
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
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7487271B2 (en) 2005-09-22 2009-02-03 Motorola, Inc. Method and apparatus using buffer pools and arrays of buffer pointers for sharing memory in a multiprocessor system
CN101356510B (zh) * 2005-11-15 2013-04-03 太阳微系统有限公司 当处理器处于低功率状态时可为后台dma装置提供数据的小型高功效高速缓冲存储器
US20070174429A1 (en) * 2006-01-24 2007-07-26 Citrix Systems, Inc. Methods and servers for establishing a connection between a client system and a virtual machine hosting a requested computing environment
JP4208895B2 (ja) * 2006-05-30 2009-01-14 株式会社東芝 キャッシュメモリ装置および処理方法
US7623134B1 (en) * 2006-06-15 2009-11-24 Nvidia Corporation System and method for hardware-based GPU paging to system memory
US7636800B2 (en) 2006-06-27 2009-12-22 International Business Machines Corporation Method and system for memory address translation and pinning
US8860741B1 (en) * 2006-12-08 2014-10-14 Nvidia Corporation Graphics processor with memory management unit and cache coherent link
US8274520B2 (en) * 2007-06-08 2012-09-25 Apple Inc. Facilitating caching in an image-processing system
US7996628B2 (en) * 2008-02-14 2011-08-09 International Business Machines Corporation Cross adapter shared address translation tables
US8209493B2 (en) * 2008-03-26 2012-06-26 Intel Corporation Systems and methods for scheduling memory requests during memory throttling
US9035959B2 (en) 2008-03-28 2015-05-19 Intel Corporation Technique to share information among different cache coherency domains
CA2734613C (en) * 2008-08-19 2020-06-09 Digimarc Corporation Methods and systems for content processing
GB2462860B (en) 2008-08-22 2012-05-16 Advanced Risc Mach Ltd Apparatus and method for communicating between a central processing unit and a graphics processing unit
US8531471B2 (en) * 2008-11-13 2013-09-10 Intel Corporation Shared virtual memory
US8589629B2 (en) * 2009-03-27 2013-11-19 Advanced Micro Devices, Inc. Method for way allocation and way locking in a cache
US8219758B2 (en) * 2009-07-10 2012-07-10 Apple Inc. Block-based non-transparent cache
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
US8412885B2 (en) 2009-11-12 2013-04-02 Intel Corporation Searching a shared cache by using search hints and masked ways
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
US8719543B2 (en) 2009-12-29 2014-05-06 Advanced Micro Devices, Inc. Systems and methods implementing non-shared page tables for sharing memory resources managed by a main operating system with accelerator devices
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
US9128849B2 (en) * 2010-04-13 2015-09-08 Apple Inc. Coherent memory scheme for heterogeneous processors
US8650349B2 (en) * 2010-05-26 2014-02-11 International Business Machines Corporation Memory mapped input/output bus address range translation for virtual bridges
US8392628B2 (en) * 2010-07-16 2013-03-05 Hewlett-Packard Development Company, L.P. Sharing memory spaces for access by hardware and software in a virtual machine environment
JP2012037971A (ja) 2010-08-04 2012-02-23 Tdk Corp メモリコントローラ及びメモリコントローラを備える不揮発性メモリシステム、並びに不揮発性メモリの制御方法
US9189297B2 (en) * 2010-12-14 2015-11-17 Hewlett-Packard Development Company, L.P. Managing shared memory
US20120159090A1 (en) * 2010-12-16 2012-06-21 Microsoft Corporation Scalable multimedia computer system architecture with qos guarantees
US8917279B2 (en) * 2011-01-24 2014-12-23 Nec Laboratories America, Inc. Method and system to dynamically bind and unbind applications on a general purpose graphics processing unit
US9471532B2 (en) * 2011-02-11 2016-10-18 Microsoft Technology Licensing, Llc Remote core operations in a multi-core computer
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
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
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198361B2 (en) 2012-08-17 2019-02-05 Intel Corporation Memory sharing via a unified memory architecture
US10929304B2 (en) 2012-08-17 2021-02-23 Intel Corporation Memory sharing via a unified memory architecture
US11531623B2 (en) 2012-08-17 2022-12-20 Intel Corporation Memory sharing via a unified memory architecture

Also Published As

Publication number Publication date
WO2014028109A2 (en) 2014-02-20
CN111522754B (zh) 2023-12-12
WO2014028109A3 (en) 2014-06-26
US10198361B2 (en) 2019-02-05
KR20160105926A (ko) 2016-09-07
CN111522754A (zh) 2020-08-11
CN106021132B (zh) 2020-02-21
DE112013004078T5 (de) 2015-06-25
CN106294214A (zh) 2017-01-04
CN106021132A (zh) 2016-10-12
JP2015524979A (ja) 2015-08-27
JP2017021837A (ja) 2017-01-26
CN106294214B (zh) 2021-02-09
US9373182B2 (en) 2016-06-21
US20210286733A1 (en) 2021-09-16
US20140049548A1 (en) 2014-02-20
KR20160042159A (ko) 2016-04-18
JP2016146201A (ja) 2016-08-12
US20190114267A1 (en) 2019-04-18
US11531623B2 (en) 2022-12-20
US20160203580A1 (en) 2016-07-14
JP6478119B2 (ja) 2019-03-06
DE112013007741B4 (de) 2023-11-09
DE112013004078B4 (de) 2023-11-09
JP6330169B2 (ja) 2018-05-30
KR20150032556A (ko) 2015-03-26
KR101741598B1 (ko) 2017-05-30
CN104471540A (zh) 2015-03-25
US9514559B2 (en) 2016-12-06
JP6391077B2 (ja) 2018-09-19
KR101721499B1 (ko) 2017-03-30
KR101964917B1 (ko) 2019-04-02
CN110069421A (zh) 2019-07-30
US20160314077A1 (en) 2016-10-27
CN104471540B (zh) 2018-07-10
DE112013007658B4 (de) 2023-11-09
CN110069421B (zh) 2023-03-14
US10929304B2 (en) 2021-02-23
JP2017208124A (ja) 2017-11-24

Similar Documents

Publication Publication Date Title
JP6391077B2 (ja) コンピューティングデバイス、コンピューティングシステム、方法、データ処理システム、非一時的な機械可読媒体、およびプログラム
JP6746645B2 (ja) 共有仮想メモリ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150224

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160301

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160524

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160628

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160923

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20161018

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170217

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20170301

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170413

R150 Certificate of patent or registration of utility model

Ref document number: 6136033

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