特許第6330169号(P6330169)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許6330169異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体
<>
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000002
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000003
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000004
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000005
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000006
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000007
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000008
  • 特許6330169-異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体 図000009
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6330169
(24)【登録日】2018年5月11日
(45)【発行日】2018年5月30日
(54)【発明の名称】異種コンピューティングデバイス、異種コンピューティングシステム、方法、プログラム、および非一時的機械可読記録媒体
(51)【国際特許分類】
   G06F 12/10 20160101AFI20180521BHJP
【FI】
   G06F12/10 557
   G06F12/10 505B
   G06F12/10 551B
【請求項の数】15
【外国語出願】
【全頁数】25
(21)【出願番号】特願2016-186273(P2016-186273)
(22)【出願日】2016年9月23日
(62)【分割の表示】特願2015-527456(P2015-527456)の分割
【原出願日】2013年6月13日
(65)【公開番号】特開2017-21837(P2017-21837A)
(43)【公開日】2017年1月26日
【審査請求日】2016年10月20日
(31)【優先権主張番号】13/588,453
(32)【優先日】2012年8月17日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ラオ、ジャヤンス エヌ.
(72)【発明者】
【氏名】サンダレサン、ムラリ
【審査官】 後藤 彰
(56)【参考文献】
【文献】 特表2008−525894(JP,A)
【文献】 特表2011−515001(JP,A)
【文献】 特開平01−291343(JP,A)
【文献】 米国特許出願公開第2011/0161620(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/10
(57)【特許請求の範囲】
【請求項1】
第1のプロセッサおよび第2のプロセッサを含む複数の異種プロセッサを備える異種コンピューティングデバイスであって、
前記第1のプロセッサおよび前記第2のプロセッサは同じダイ上にあって、前記第1のプロセッサまたは前記第2のプロセッサの一方はグラフィックスプロセッサであり、
前記第1のプロセッサは、前記第1のプロセッサおよび前記第2のプロセッサの間で共有される仮想メモリを割り当て、
前記第1のプロセッサは、物理メモリの少なくとも一部を、前記第1のプロセッサおよび前記第2のプロセッサのアドレス空間内で、割り当てられた仮想メモリに関連付けられた仮想メモリアドレスにマッピングし、
前記物理メモリは、前記第1のプロセッサおよび前記第2のプロセッサの間で直接的に共有されるデータを記憶し、前記データは、前記物理メモリの前記一部内でデータをコピーすることなく自動的に可視であり、
前記異種コンピューティングデバイスは、前記第1のプロセッサ、前記第2のプロセッサ、または前記第1のプロセッサおよび前記第2のプロセッサに結合された少なくとも1つのメモリ管理ユニット(MMU)をさらに備え、
前記MMUは、前記第1のプロセッサ、前記第2のプロセッサ、または前記第1のプロセッサおよび前記第2のプロセッサのための仮想メモリアドレスのセットへの、物理メモリに割り当てられたデータに対する物理メモリアドレスのセットのマッピングを管理し、
前記第1のプロセッサの前記アドレス空間内の第1の仮想メモリアドレスは、前記第2のプロセッサの前記アドレス空間内の第2の仮想メモリアドレスと同じ物理メモリアドレスにマッピングされ、
前記物理メモリは、前記第1のプロセッサおよび前記第2のプロセッサの間で直接的に共有される画像データを記憶し、
前記第1のプロセッサは、前記第2のプロセッサにオペレーションをオフロードし、
前記第2のプロセッサは前記オペレーションを実行し、
前記第2のプロセッサは完了信号を前記第1のプロセッサに送信し、前記完了信号は、前記第2のプロセッサが前記物理メモリ内のデータを変更したという指標を含む
異種コンピューティングデバイス。
【請求項2】
前記第1のプロセッサは、第1の仮想メモリアドレスから前記画像データにアクセスし、
前記第2のプロセッサは、第2の仮想メモリアドレスから前記画像データにアクセスし、
前記第1の仮想メモリアドレスおよび前記第2の仮想メモリアドレスは同じ物理アドレスにマッピングされる
請求項に記載の異種コンピューティングデバイス。
【請求項3】
前記第1のプロセッサのキャッシュメモリ内のデータは、前記第2のプロセッサのキャッシュメモリ内のデータとコヒーレントである
請求項1または2に記載の異種コンピューティングデバイス。
【請求項4】
前記第1のプロセッサの前記キャッシュメモリ内の前記データは、前記第1のプロセッサおよび前記第2のプロセッサの間で共有されるキャッシュメモリによって、前記第2のプロセッサの前記キャッシュメモリ内の前記データとコヒーレントである
請求項に記載の異種コンピューティングデバイス。
【請求項5】
第1のプロセッサおよび第2のプロセッサを含む複数の異種プロセッサであって、前記第1のプロセッサおよび前記第2のプロセッサは同じダイ上にあって、前記第1のプロセッサまたは前記第2のプロセッサの一方はグラフィックスプロセッサである、前記複数の異種プロセッサと、
出力データを表示するディスプレイデバイスと、
複数の命令を記憶する記憶デバイスと、を備え、
前記複数の命令は、実行された場合に、
前記第1のプロセッサおよび前記第2のプロセッサの間で直接的に共有される仮想メモリを割り当てる段階であって、前記仮想メモリのデータはデータをコピーすることなく自動的に可視である、割り当てる段階と、
物理メモリの少なくとも一部を、前記第1のプロセッサおよび前記第2のプロセッサのアドレス空間内の割り当てられた仮想メモリに関連付けられた仮想メモリアドレスにマッピングする段階とを、
前記第1のプロセッサ、前記第2のプロセッサ、または前記第1のプロセッサおよび前記第2のプロセッサに実行させ
前記第1のプロセッサは、第1の仮想メモリアドレスから画像データにアクセスして、前記第2のプロセッサにオペレーションをオフロードし、
前記第2のプロセッサは、第2の仮想メモリアドレスから前記画像データにアクセスし、前記オペレーションを実行して、完了信号を前記第1のプロセッサに送信し、
前記第1の仮想メモリアドレスおよび前記第2の仮想メモリアドレスは、同じ物理アドレスにマッピングされ、
前記完了信号は、前記第2のプロセッサが前記物理メモリ内のデータを変更したという指標を含む
異種コンピューティングシステム。
【請求項6】
前記第1のプロセッサ、前記第2のプロセッサ、または前記第1のプロセッサおよび前記第2のプロセッサに結合された少なくとも1つのメモリ管理ユニット(MMU)をさらに備え、
前記MMUは、前記第1のプロセッサ、前記第2のプロセッサ、または前記第1のプロセッサおよび前記第2のプロセッサのための仮想メモリアドレスのセットへの、物理メモリに割り当てられた画像データに対する物理メモリアドレスのセットのマッピングを管理する
請求項に記載の異種コンピューティングシステム。
【請求項7】
前記MMUは、メモリへの1または複数のマッピングを含み、前記マッピングは、前記第1のプロセッサに関連付けられた第1のページテーブルおよび前記第2のプロセッサに関連付けられた第2のページテーブルを含む
請求項に記載の異種コンピューティングシステム。
【請求項8】
前記記憶デバイス上の前記複数の命令は、前記第1のプロセッサまたは前記第2のプロセッサに、前記画像データを、前記第1のページテーブルの複数の仮想メモリアドレスにマッピングさせ、前記画像データを、前記第2のページテーブルの複数の仮想メモリアドレスにマッピングさせる
請求項に記載の異種コンピューティングシステム。
【請求項9】
異種コンピューティングデバイスの複数のプロセッサ間でメモリを共有する方法であって、
前記異種コンピューティングデバイスに関連付けられるメモリのプールからのメモリのブロックを割り当てる段階であって、メモリの前記プールは、前記異種コンピューティングデバイスの第1のプロセッサおよび第2のプロセッサの間で直接的に共有され、メモリの前記ブロックは、前記第1のプロセッサのメモリから前記第2のプロセッサのメモリへデータをコピーすることなく自動的に可視であり、前記第1のプロセッサまたは前記第2のプロセッサの一方はグラフィックスプロセッサである、割り当てる段階と、
メモリの前記ブロックを、前記第1のプロセッサおよび前記第2のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする段階と
前記第1のプロセッサに関連付けられた第1のページテーブルおよび前記第2のプロセッサに関連付けられた第2のページテーブルを、1または複数のメモリ管理ユニット(MMU)にマッピングする段階と、
前記第1のページテーブル内の仮想メモリアドレスの第1のセットを、複数の物理アドレスに変換する段階と、
前記第2のページテーブル内の仮想メモリアドレスの第2のセットを、複数の物理アドレスに変換する段階と、
仮想メモリアドレスの前記第1のセットおよび仮想メモリアドレスの前記第2のセットを、メモリの前記ブロック内の物理アドレスにマッピングする段階と、
前記第1のプロセッサにより、第1の仮想メモリアドレスからデータにアクセスする段階と、
前記第1のプロセッサから前記第2のプロセッサにオペレーションをオフロードする段階と、
前記第2のプロセッサにより、第2の仮想メモリアドレスからデータにアクセスする段階と、
前記第2のプロセッサにより前記オペレーションを実行する段階と、
完了信号を前記第1のプロセッサに送信する段階であって、前記完了信号は、前記第2のプロセッサがメモリの前記ブロック内のデータを変更したという指標を含む、送信する段階と、
を備え
前記第1の仮想メモリアドレスおよび前記第2の仮想メモリアドレスの各々は、メモリの前記ブロックにマッピングされる
方法。
【請求項10】
異種コンピューティングデバイスの1または複数のプロセッサに、
前記異種コンピューティングデバイスに関連付けられるメモリのプールからメモリのブロックを割り当てるオペレーションであって、メモリの前記プールは、前記異種コンピューティングデバイスの第1のプロセッサおよび第2のプロセッサの間で直接的に共有され、メモリの前記ブロックは、前記第1のプロセッサのメモリから前記第2のプロセッサのメモリへデータをコピーすることなく自動的に可視であり、前記第1のプロセッサまたは前記第2のプロセッサの一方はグラフィックスプロセッサである、割り当てるオペレーションと、
メモリの前記ブロックを、前記第1のプロセッサおよび前記第2のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングするオペレーションと、を実行させ
前記第1のプロセッサに、第1の仮想メモリアドレスから前記データにアクセスさせて、前記第2のプロセッサにオペレーションをオフロードさせ、
前記第2のプロセッサに、第2の仮想メモリアドレスから前記データにアクセスさせ、前記オペレーションを実行させ、完了信号を前記第1のプロセッサに送信させ、
前記第1の仮想メモリアドレスおよび前記第2の仮想メモリアドレスは、メモリの前記ブロックにマッピングされ、
前記完了信号は、前記第2のプロセッサがメモリの前記ブロック内のデータを変更したという指標を含む
プログラム。
【請求項11】
前記1または複数のプロセッサは、前記第1のプロセッサおよび前記第2のプロセッサを含み、物理メモリは、共有される物理メモリのデータをコピーすることなく、前記第1のプロセッサおよび前記第2のプロセッサの間で共有される
請求項10に記載のプログラム。
【請求項12】
前記1または複数のプロセッサに、前記第1のプロセッサに関連付けられた第1のページテーブルおよび前記第2のプロセッサに関連付けられた第2のページテーブルを、1または複数のメモリ管理ユニット(MMU)にマッピングさせる
請求項10または11に記載のプログラム。
【請求項13】
前記1または複数のプロセッサに、
メモリの前記ブロックを、前記第1のページテーブル内の複数の仮想メモリアドレスにマッピングさせ、
メモリの前記ブロックを、前記第2のページテーブル内の複数の仮想メモリアドレスにマッピングさせる
請求項12に記載のプログラム。
【請求項14】
第1のプロセッサおよび第2のプロセッサを含む複数の異種プロセッサの間で直接的に共有される仮想メモリを割り当てる手段であって、前記第1のプロセッサおよび前記第2のプロセッサは同じダイ上にあって、前記第1のプロセッサまたは前記第2のプロセッサの一方はグラフィックスプロセッサである、割り当てる手段と、
物理メモリの少なくとも一部を、前記第1のプロセッサおよび前記第2のプロセッサのアドレス空間内で、割り当てられた仮想メモリに関連付けられた仮想メモリアドレスにマッピングする手段であって、前記仮想メモリは、前記物理メモリの前記一部内でデータをコピーすることなく自動的に可視である、前記マッピングする手段と、
前記第1のプロセッサに関連付けられた第1のページテーブルおよび前記第2のプロセッサに関連付けられた第2のページテーブルを、1または複数のメモリ管理ユニット(MMU)へマッピングする手段と、
前記第1のページテーブル内の第1のセットの仮想メモリアドレスを複数の物理アドレスに変換する手段と、
前記第2のページテーブル内の第2のセットの仮想メモリアドレスを複数の物理アドレスに変換する手段と、
前記第1のセットの仮想メモリアドレスおよび前記第2のセットの仮想メモリアドレスを、前記物理メモリ内の物理メモリアドレスにマッピングする手段と、
前記第1のプロセッサで、第1の仮想メモリアドレスからデータにアクセスする手段と、
前記第1のプロセッサから前記第2のプロセッサにオペレーションをオフロードする手段と、
前記第2のプロセッサで、第2の仮想メモリアドレスからデータにアクセスする手段と
前記第2のプロセッサで、前記オペレーションを実行する手段と、
前記第2のプロセッサから完了信号を前記第1のプロセッサに送信する手段であって、前記完了信号は、前記第2のプロセッサが前記物理メモリ内のデータを変更したという指標を含む、前記送信する手段と、
を備え、
前記第1の仮想メモリアドレスおよび前記第2の仮想メモリアドレスの各々は、前記物理メモリアドレスにマッピングされる
異種コンピューティングデバイス。
【請求項15】
請求項10から13のいずれか1項に記載のプログラムを記録する非一時的機械可読記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、概して、コンピューティングシステム内における中央処理装置(CPU)と入出力(I/O)デバイスとの間のメモリ共有に関する。より詳細には、本発明は、CPUとI/Oデバイスとの間における物理メモリの共有に関する。
【背景技術】
【0002】
近年、複数のI/Oデバイスは、多数の中央処理装置(CPU)の複数のコンピュータ処理能力に匹敵する複数のコンピュータ処理能力を含む場合がある。結果として、伝統的にCPUによって実行されてきた複数のコンピュータタスクの一部が、コンピューティングデバイスのI/Oデバイスにオフロードされる場合がある。例えば、コンピューティングデバイスのグラフィクス処理装置(GPU)などのI/Oデバイスは、伝統的にCPUによって実行されてきた複数のタスクのいくつかを実行することができ、そのことによって、CPUの効率性が向上している。
【図面の簡単な説明】
【0003】
図1図1は、複数の実施形態に従って用いることができるコンピューティングデバイスのブロック図である。
図2A図2Aは、複数の実施形態に係るコンピューティングデバイスの中央処理装置(CPU)とグラフィクス処理装置(GPU)との間におけるメモリ共有のためのプロシージャを実装するために用いることができるユニファイドメモリアーキテクチャ(UMA)の概略である。
図2B図2Bは、複数の実施形態に係るコンピューティングデバイスの中央処理装置(CPU)とグラフィクス処理装置(GPU)との間におけるメモリ共有のためのプロシージャを実装するために用いることができるユニファイドメモリアーキテクチャ(UMA)の概略である。
図3図3は、複数の実施形態に係るコンピューティングデバイスCPUとGPUとの間におけるメモリ共有のための方法を示す処理フロー図である。
図4図4は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間における共有メモリを処理するための方法を示す処理フロー図である。
図5図5は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間におけるメモリ共有のためのコードを記憶する、有形の非一時的なコンピュータ可読媒体を示すブロック図である。
図6図6は、共有物理メモリを実装するための例示的なシステムのブロック図である。
図7図7は、図6が具現されうるシステムにおける小型フォームファクタデバイスの概略である。 本開示及び複数の図面において、同様の複数のコンポーネント及び複数の特徴を参照するために、同じ番号が用いられる。100番台の複数の番号は、図1において初出の複数の特徴を指し、200番台の複数の番号は、図2において初出の複数の特徴複数の特徴を指し、以下同様である。
【発明を実施するための形態】
【0004】
現在、複数のオペレーティングシステム及び複数のグラフィクスインターフェースは、複数のGPUをCPU同様の複数のリソースを有する複数のプロセッサとして管理するのではなく、複数のGPUを複数のI/Oデバイスとして管理する。複数のGPUを複数のI/Oデバイスとして管理することにより、複数のCPU及び複数のGPUは、別個の物理アドレスドメインを有する複数の物理メモリを有する。複数のコンピュータタスクを複数のGPUにオフロードする場合、データは、CPUの物理アドレスドメインからGPUの物理アドレスドメインにコピーされる。GPUが処理を終了した後、データは、CPUの物理アドレスドメインに再びコピーされる。
【0005】
CPUによって伝統的に実行されてきた複数のコンピュータタスクの一部を、GPUのコンピューティングデバイスにオフロードすることは、CPUの効率性を高める場合がある。上述したように、複数のタスクをGPUにオフロードするべく、データは、CPUの物理メモリからGPUの物理メモリへの間で転送される場合がある。複数のコンピュータタスクをGPUにオフロードする場合に行われる数のデータ転送は、複数のタスクをGPUにオフロードすることによって得られるいずれかの効率性を低下させることがある。従って、本明細書に記載された複数の実施形態は、コンピューティングデバイスのCPUとGPUとの間におけるメモリ共有に関する。メモリは、ユニファイドメモリアーキテクチャ(UMA)を介して共有されてもよい。
【0006】
複数の様々な実施形態において、UMAは、CPU及びGPUの両方に同じ物理メモリを付与することにより、CPUとGPUとの間におけるメモリ共有を提供する。したがって、物理メモリと、CPU及びGPUの対応する物理アドレス空間とは、全く同じである。複数の実施形態において、物理メモリは、CPUとGPUとの間で分割されてもよい。さらに、物理メモリは、コンピューティングデバイスのオペレーティングシステムによって割り当てられる、ページングされたシステムメモリとすることができる。CPUの仮想メモリアドレス空間は、GPUのグラフィクス仮想メモリアドレス空間として、同じ複数の物理メモリページにマッピングされてもよい。さらに、いくつかの実施形態において、CPU及びGPUは、物理的に同じダイに位置する。したがって、CPU及びGPUは、GPUのアドレス空間からCPUのアドレス空間にデータをコピーすることなく、物理メモリ内に保持されるデータを共有することができ、逆もまた同様である。これにより、例えば、CPUとGPUとの間におけるデータ共有のための時間及び電力消費を減少させることによって、CPUからGPUに対して複数のコンピュータタスクをオフロードするコストを低減させることができる。
【0007】
以下の説明及び特許請求の範囲において、用語「結合」及び「接続」が、これらの派生語と併せて用いられる場合がある。これらの用語は、互いの同義語であることを意図するものではないことを理解されたい。むしろ、複数の具体的実施形態において、「接続」は、2または3以上の要素が互いに、直接物理的または電気的に接触することを示すために用いられてもよい。「結合」は、2または3以上の要素が、直接物理的または電気的に接触することを意味してもよい。しかしながら、「結合」は、2または3以上の要素が互いに直接は接触してないが、互いに連携または相互作用することをさらに意味してもよい。
【0008】
いくつかの実施形態は、ハードウェア、ファームウェア及びソフトウェアの1つまたは組み合わせにおいて実装されてもよい。いくつかの実施形態は、コンピューティングプラットフォームによって読み出し及び実行されることにより、本明細書に記載されたオペレーションを実行することができる、機械可読媒体に記憶された複数の命令としてさらに実装されてもよい。機械可読媒体は、機械、例えばコンピュータによって可読な形で情報を記憶または送信するための任意のメカニズムを含んでもよい。例えば、機械可読媒体は、特に、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、もしくは電気、光、音声または他の形で伝播する複数の信号、例えば複数の搬送波、複数の赤外線信号、複数のデジタル信号、または複数の信号を送信及び/または受信する複数のインターフェースを含んでもよい。
【0009】
実施形態は、実装または例である。本明細書において言及される「実施形態」、「1つの実施形態」、「いくつかの実施形態」、「様々な複数の実施形態」または「他の複数の実施形態」は、複数の実施形態に関連して記載された具体的な特徴、構造または特性が、少なくともいくつかの実施形態に含まれているが、必ずしも本発明の全ての実施形態には含まれていないことを意味する。「実施形態」、「1つの実施形態」または「いくつかの実施形態」という様々な複数の表現は、必ずしも全てが同じ複数の実施形態を指すものではない。ある実施形態の複数の要素または複数の態様は、他の実施形態の複数の要素または複数の態様と組み合わせることができる。
【0010】
本明細書に記載または示された複数のコンポーネント、複数の特徴、複数の構造、複数の特性等の全てが、具体的な実施形態または複数の実施形態に含まれる必要はない。本明細書において、あるコンポーネント、特徴、構造または特性が含まれ「てもよい」、「る場合がある」、「ることが可能である」または「る可能性がある」と記述されている場合は、例えば、その具体的なコンポーネント、特徴、構造または特性は、含まれる必要がない。本明細書または特許請求の範囲において、「ある」要素について言及される場合は、その要素は1つだけ存在するのではないことを意味する。本明細書または特許請求の範囲が「追加的な」要素について言及する場合、「追加的な」要素が1より多く存在することが除外されるものではない。
【0011】
なお、いくつかの実施形態は、具体的な複数の実装を参照して記載されているが、いくつかの実施形態によれば、他の複数の実装も可能である。さらに、複数の回路要素、もしくは図示及び/または本明細書に記載された他の複数の特徴の構成及び/または順序は、示されかつ記載された具体的な方法で構成される必要はない。いくつかの実施形態によれば、多くの他の構成が可能である。
【0012】
図示された各システムにおいて、複数の要素は、場合によっては、表された複数の要素が異なりうる及び/または同様でありうることを示唆するべく、各々、同じ参照番号または異なる参照番号を有してもよい。しかしながら、要素は、異なる複数の実装を有するとともに、本明細書に示されまたは記載された複数のシステムのいくつかまたは全てとともにオペレーションすることができるように柔軟であてもよい。複数の図面に示された様々な複数の要素は、同一または異なっていてもよい。第1の要素としてどれを指し、どれを第2の要素と称するかは、任意である。
【0013】
図1は、複数の実施形態に従って用いることができるコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、特に、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイスまたはサーバであってもよい。コンピューティングデバイス100は、記憶された複数の命令を実行するように適合される中央処理装置(CPU)102を、CPU102によって実行可能な複数の命令を記憶するメモリデバイス108とともに含んでもよい。CPU102は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタまたは任意の数の他の構成とすることができる。さらに、コンピューティングデバイス100は、1より多くのCPU102を含んでもよい。CPU102によって実行される複数の命令は、メモリ共有プロシージャを実装するために用いられてもよい。
【0014】
コンピューティングデバイス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のユニファイドメモリアーキテクチャ内に含まれてもよい。
【0015】
GPU104は、コンピューティングデバイス100内で任意の数のグラフィクスオペレーションを実行するように構成されてもよい。例えば、GPU104は、複数のグラフィクス画像、複数のグラフィクスフレーム、複数のビデオなどを、コンピューティングデバイス100のユーザに表示させるべく、レンダリングまたは操作するように構成されてもよい。いくつかの実施形態において、GPU104は、多数のグラフィクスエンジン(図示されていない)を含み、各グラフィクスエンジンは、特定の複数のグラフィクスタスクを実行し、または特定のタイプの複数のワークロードを実行するように構成される。
【0016】
コンピューティングデバイス100は、メモリデバイス108をさらに含んでもよい。メモリデバイス108は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、フラッシュメモリまたは任意の他の適した複数のメモリシステムを含むことができる。例えば、メモリデバイス108は、ダイナミックランダムアクセスメモリ(DRAM)を含んでもよい。メモリ108は、メモリ共有プロシージャを実装するための複数の命令を実行するように構成されるデバイスドライバ110を含んでもよい。デバイスドライバ110は、ソフトウェア、アプリケーションプログラム、アプリケーションコードなどであってもよい。いくつかの実施形態において、デバイスドライバ110は、ユーザモードドライバである。
【0017】
メモリ108は、ラストレベルキャッシュ(LLC)114、レベル2キャッシュ116及びレベル1キャッシュ118を含むマルチレベルキャッシュ112をさらに含む。マルチレベルキャッシュ112は図示のために用いられているが、任意のキャッシュがコンピューティングデバイス100に含まれることができる。マルチレベルキャッシュ112は、CPU102で頻繁に用いられるデータのより小さいサブセットを記憶するより小さく、より高速のメモリであってもよい。より大きなデータセットは、記憶装置120に記憶されてもよい。記憶装置120は、ハードドライブ、光学式ドライブ、サムドライブ、複数のドライブのアレイまたはこれらの任意の組み合わせなどの物理メモリである。記憶装置120は、複数の遠隔記憶ドライブをさらに含んでもよい。CPU102が記憶装置120に記憶されたデータにアクセスするための時間長は、CPU102がメモリ104でマルチレベルキャッシュ112にアクセスするためにかかる時間長に対して、より低速であってもよい。
【0018】
いくつかの実施形態において、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において正確に反映されることを保証する。
【0019】
さらに、複数の実施形態において、CPU及びGPUは、メモリのいずれのレベルにもアクセスすることができる。しかしながら、LLC114が最新のデータを含む一方で、メモリの他の複数のレベルからのデータは陳腐化していてもよい。さらに、複数の実施形態において、CPU及びGPUは、共有仮想メモリを実行するべく、任意の相互アクセス可能な記憶場所を用いることができる。任意の相互アクセス可能な記憶場所は、限定されるものではないが、メモリデバイス104の任意の領域、記憶装置120の任意の領域、ネットワーク接続された記憶場所、サムドライブまたはこれらの任意の組み合わせを含んでもよい。
【0020】
記憶装置120は、面122を、コンピューティングデバイス100で実行されるように構成される任意の数のアプリケーション124とともに含む。面122は、デバイスドライバ110によって割り当てられる物理メモリの指定部分である。面は、面122内において物理メモリのコンテンツに実行される処理に基づいて、更新されてもよい。複数の実施形態において、アプリケーション124がCPU104によって実行される場合、アプリケーション124は、デバイスドライバ110によって面を割り当てるよう、要求してもよい。さらに、CPU102上で実行されるアプリケーション124は、面122の求められるサイズ及び複数の特性を特定することにより、アプリケーション124によって要求されたメモリ割り当てに応じて、面122を構成してもよい。さらに、面割り当ては、例えば、コンピューティングデバイス100のCPU102からの入力に応答して、実行されてもよい。さらに、複数の実施形態において、面は、LLCキャッシュ可能とマーク付けされる。LLCキャッシュ可能と指定された面122により、面122内の複数の位置からキャッシュされたデータは、LLC114にキャッシュされ、そのことによって、CPU102及びGPU104の両方によって、LLCにおいてアクセス可能であってもよい。
【0021】
メモリ管理ユニット(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仮想アドレス空間の物理アドレス空間に対するマッピングを含んでもよい。
【0022】
複数の様々な実施形態において、CPUページテーブル128からの複数の仮想メモリアドレス及びGPUページテーブル130からの複数のグラフィクス仮想メモリアドレスは、変換プロシージャを介して、面122の複数の物理メモリページにマッピングされる。変換プロシージャは、任意の複数の仮想メモリアドレスを、対応する複数の物理アドレスに変換するために用いられてもよい。例えば、変換プロシージャは、ページテーブル内の複数の仮想メモリアドレスをページテーブル内の複数の物理メモリアドレスに変換するための特定の変換テーブルに基づいて実行されうるページテーブルウォークを介して、実行されてもよい。さらに、複数の実施形態において、トランスレーションルックアサイドバッファは、CPU及びGPUの複数の仮想アドレスを、これらの個別の複数のページテーブル内における複数の物理アドレス空間に変換するために用いられてもよい。
【0023】
変換プロシージャの実行後、面122は、ピニングされてもよい。面のピニングとは、複数の物理的位置及び対応する複数の物理アドレスが変化しないように、面を保護することを指す。したがって、面122のピニングにより、複数の仮想アドレス空間と複数の物理アドレス空間との間で、「確実な」マッピングが保証される。複数のアドレス空間の間における確実なマッピングは、面のピニング後に変化しないマッピングである。面がピニングされない場合、ページフォールトが生成される場合があり、すなわち、面の物理的位置がシフトするために、誤ったデータが処理される場合がある。
【0024】
複数の実施形態において、アプリケーション124はCPU102上で実行されてもよく、データ処理などの複数のオペレーションを実行するべく、面122などの面を要求する。CPU102は、複数のオペレーションをGPU104にハンドオフしてもよい。複数のページテーブルが面122にマッピングされたことから、GPUは、他のアドレス空間にデータをコピーすることなく面にアクセスすることにより、CPU102によってオフロードされた複数のオペレーションを即座に実行開始することができる。CPU102によって複数のオペレーションが完了した場合、GPU104は、複数のオペレーションが完了したという信号をCPU102に送信してもよい。CPU102は、次に、元のアドレス空間へデータをコピーして戻すことなく、データ処理を継続してもよい。
【0025】
アプリケーション124に要求された複数のオペレーションがGPU104によって実行される場合、面122に対する複数の変更が生じてもよい。本明細書に記載されたメモリ共有プロシージャによれば、面122に対するそのような複数の変更は、CPU102から完全に可視である。したがって、データは、GPU104からCPU102へと、逆もまた同様にデータをコピーすることなく、GPU104及びCPU102間で共有されてもよい。
【0026】
CPU102は、バス106を介して、コンピューティングデバイス100を1または複数のI/Oデバイス134と接続するように適合される入出力(I/O)デバイスインターフェース132に接続されてもよい。I/Oデバイス134は、例えば、キーボード及びポインティングデバイスを含んでもよく、ポインティングデバイスは、特に、タッチパッドまたはタッチスクリーンを含んでもよい。I/Oデバイス134は、コンピューティングデバイス100のビルトインコンポーネントであってもよく、または、コンピューティングデバイス100に外部接続される複数のデバイスであってもよい。
【0027】
CPU102は、バス106を介して、コンピューティングデバイス100をディスプレイデバイス138と接続するように適合されるディスプレイインターフェース136とさらにリンクしてもよい。ディスプレイデバイス138は、コンピューティングデバイス100のビルトインコンポーネントであるディスプレイ画面を含んでもよい。ディスプレイデバイス138は、特に、コンピューティングデバイス100に外部接続されるコンピュータモニタ、テレビまたはプロジェクタをさらに含んでもよい。
【0028】
ネットワークインタフェースコントローラ(NIC)140は、バス106を介して、コンピューティングデバイス100をネットワーク142と接続するように適合されてもよい。ネットワーク142は、特に、広域ネットワーク(WAN)、ローカルエリアネットワーク(LAN)またはインターネットであってもよい。
【0029】
図1のブロック図は、コンピューティングデバイス100が、図1に示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、コンピューティングデバイス100は、特定の実装の詳細に応じて、図1に示されていない任意の数の追加的なコンポーネントを含んでもよい。
【0030】
図2A及び図2Bは、複数の実施形態に係るコンピューティングデバイス100におけるCPU102及びGPU104間のメモリ共有のためのプロシージャを実装するために用いられてもよいユニファイドメモリアーキテクチャ200の概略である。同様の数字が付けられた複数の項目は、図1に記載されたとおりである。UMA200は、例えば、コンピューティングデバイス100のCPUページテーブル128、GPUページテーブル130及び面122を含んでもよい。
【0031】
UMA200によれば、CPU102及びGPU104間で任意のタイプのデータコピーまたはデータ転送を行うことなく、CPU102及びGPU104間で直接的なメモリ共有が行われてもよい。これは、CPU102及びGPU104に面122を共有させることにより、実現されてもよい。上述のように、面122は、物理的記憶デバイスの一部であってもよい。面は、任意の数の物理メモリ位置202を含む。物理メモリ位置202は、ページングされたメモリフォーマットに構成されてもよく、ページは、面122内の物理メモリの固定長のブロックである。
【0032】
CPUページテーブル128は、多数のCPU仮想メモリアドレス204を含んでもよく、GPUページテーブル130は、多数のグラフィクス仮想メモリアドレス206を含んでもよい。複数のグラフィクス仮想メモリアドレス206がグラフィクス仮想アドレス空間を形成する一方で、複数のCPU仮想メモリアドレス204は、CPU仮想アドレス空間を形成する。各アドレス空間は、各ページテーブルの物理アドレスにマッピングされる。したがって、複数のCPU仮想メモリアドレス204及び複数のグラフィクス仮想メモリアドレス206は両方とも、複数の物理アドレス208の同じ群に対するマッピングを、CPUページテーブル128及びGPUページテーブル130内でそれぞれ行う。
【0033】
複数の物理アドレス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から可視である。
【0034】
図2A及び図2Bの概略は、UMA200が図2A及び図2Bに示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、UMA200は、特定の実装の詳細に応じて、図2A及び図2Bに示されていない任意の数の追加的なコンポーネントを含んでもよい。
【0035】
図3は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間におけるメモリ共有のための方法300を示す処理フロー図である。複数の様々な実施形態において、方法300は、CPUメモリからGPUメモリへデータをコピーすることなく、CPUとGPUとの間でメモリを共有するために用いられる。
【0036】
いくつかの実施形態において、方法300は、コンピューティングデバイス100などのコンピューティングデバイス上で実行されてもよく、CPU102及びGPU104は、バス106によって接続される。複数の他の実施形態において、CPU102及びGPU104は、図2A及び図2Bに関して説明されたUMA200などのUMAに含まれてもよい。さらに、方法300は、コンピューティングデバイス100のデバイスドライバ126などのコンピューティングデバイスのドライバによって実行されてもよい。
【0037】
方法は、始めにブロック302において、物理メモリ内で面の割り当てを行う。複数の実施形態において、面は、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、コンピューティングデバイスの物理メモリ内で割り当てられてもよい。さらに、複数の実施形態において、面は、デバイスドライバによって割り当てられてもよい。アプリケーションまたはデバイスドライバは、CPU仮想アドレスを用いて、CPUから面にアクセスしてもよい。複数の実施形態において、複数のCPU仮想アドレスは、コンピューティングデバイスのオペレーティングシステムによって、アプリケーションまたはデバイスドライバに付与される。
【0038】
ブロック304において、面内の複数の物理的位置に対応する複数の物理アドレスは、複数のCPU仮想アドレスにマッピングされる。複数のCPU仮想メモリアドレス及び複数の物理アドレス間のマッピングは、CPUページテーブル内に含まれる。複数の物理メモリページの複数の仮想メモリアドレスに対するマッピングは、システムメモリ内の対応する複数の物理メモリページを決定するべく、複数のCPU仮想アドレスの変換を含んでもよい。複数のCPU仮想アドレスが複数の物理アドレスに変換された場合、変換処理中に発見された複数のCPU仮想アドレス及び複数の物理アドレス間の複数の関連は、ロックされる。複数の関連をロックすることにより、CPUページテーブルにおける複数の物理アドレスに対応する面の複数の物理的位置は、キャッシュにページングされてもよい。面の複数の物理アドレスはデバイスドライバによる変更が防止されるため、複数のページは、複数の関連をロックしながら、キャッシュに残る。
【0039】
ブロック306において、複数のGPU仮想メモリアドレスは、面内の複数の物理的位置にマッピングされる。複数の実施形態において、面は、LLCキャッシュ可能と指定される。そのような指定により、面の複数の物理的位置が、CPU及びGPUに共有されるLLCにキャッシュされることが保証される。アプリケーションが用いる複数のグラフィクス仮想メモリアドレスは、CPUの複数の仮想アドレスにマッピングされる同じ複数の物理アドレスに変換されてもよい。複数の実施形態において、デバイスドライバは、GPUページテーブル内の複数の物理アドレスに対する複数のグラフィクス仮想メモリアドレスのマッピングを更新してもよい。
【0040】
複数のGPU仮想アドレスに対する面のマッピングは、面のピニングを含んでもよい。面のピニングにより、複数のGPU仮想アドレスと面との間のマッピングが変更されることを防止する。したがって、GPU仮想メモリは、物理メモリを変更することなく、同じ物理メモリに対応する。例えば、オペレーティングシステムは、自己のメモリ管理の一部として、割り当てられた複数の物理メモリ位置を変更してもよい。しかしながら、面が一度ピニングされると、オペレーティングシステムが面の複数の物理メモリ位置を変更することは防止される。
【0041】
図4は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間における共有メモリを処理するための方法400を示す処理フロー図である。
【0042】
ブロック402において、オペレーションは、CPUからGPUへとオフロードされてもよい。オペレーションは、アプリケーション124(図1)などのアプリケーションによる命令に従い、GPUへとオフロードされてもよい。さらに、CPUまたはGPUの制御に用いられる任意のアプリケーションプログラミングインタフェース(API)は、CPUからGPUへのオペレーションのオフロードを命令するために用いられてもよい。複数の実施形態において、CPUからGPUへのオペレーションのオフロードに先立ち、CPUによる処理中の面内に位置するデータは、LLCとコヒーレントにされてもよい。
【0043】
ブロック404において、GPUは、オフロードされたオペレーションの処理を開始してもよい。GPUは、オペレーションを実行するべく、LLC及び面内のデータにアクセスする。GPUが、LLCにはなく、CPUの他のいくつかのキャッシュにあるデータを要求した場合、LLCは、GPUによる処理のためにそのデータを他のキャッシュから取り出してもよい。
【0044】
ブロック406において、GPUは、オペレーションが完了したという信号を送信する。完了信号は、ホストに送信されてもよい。複数の実施形態において、オペレーションが完了した場合、デバイスドライバは、GPU及びCPU間のオペレーションを同期させる。さらに、複数の実施形態において、完了信号は、例えば、メールボックスの書き込みまたは割り込みであってもよい。完了信号は、GPUがいくつかの計算またはグラフィクスオペレーションを実行した結果、面内のデータが変更されたことを示してもよい。完了後、GPUの出力は、CPUによって処理されてもよい。複数の様々な実施形態において、GPUが、任意の面の複数の物理的位置に対する読み出しまたは書き出しによって面を処理する場合、処理は、GPUの複数の内部バッファ及び複数のキャッシュにおいて行われてもよい。従って、GPUの複数の内部バッファ及び複数のキャッシュ内のデータは、GPUの処理完了後、LLCとコヒーレントになる。
【0045】
図3及び図4の処理フロー図は、方法300および400の複数のブロックが任意の具体的な順序で実行されるものであり、または複数のブロックの全てがあらゆる場合に含まれるものであると示すことを意図するものではない。さらに、特定の実装の詳細に応じて、任意の数の追加的なブロックが、方法300および400内に含まれてもよい。さらに、本明細書に記載された方法がGPUを含む一方で、メモリは、他のCPUまたはダイレクトメモリアクセス(DMA)コントローラなどの任意のI/Oデバイスの間で共有されてもよい。
【0046】
図5は、複数の実施形態に係るコンピューティングデバイスのCPUとGPUとの間におけるメモリ共有のために、コードを記憶する有形の非一時的コンピュータ可読媒体500を示すブロック図である。有形の非一時的コンピュータ可読媒体500は、コンピュータバス504を通してプロセッサ502によってアクセスされてもよい。さらに、有形の非一時的コンピュータ可読媒体500は、本明細書に記載された方法の実行をプロセッサ502に命令するように構成されるコードを含んでもよい。
【0047】
本明細書で説明された様々な複数のソフトウェアコンポーネントは、図5に示すように、有形の非一時的コンピュータ可読媒体500記憶されてもよい。例えば、面割り当てモジュール506は、コンピューティングデバイスのメモリ内に多数の複数の物理メモリページを含む面を割り当てまたは生成するように構成されてもよい。マッピングモジュール508は、面内の複数の物理的位置をCPUアドレステーブル及びGPUアドレステーブル内の複数の仮想メモリアドレスにマッピングするように構成されてもよい。さらに、ピニングモジュール510は、面内の複数の物理的位置の変更が防止されるように、面をピニングするように構成されてもよい。
【0048】
図5のブロック図は、有形の非一時的コンピュータ可読媒体500が、図5に示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、有形の非一時的コンピュータ可読媒体500は、特定の実装の詳細に応じて、図5に示されていない任意の数の追加的なコンポーネントを含んでもよい。
【0049】
複数の実施形態において、CPUは、CPUアドレス空間とGPUアドレス空間との間でデータを整理する必要はない。さらに、CPUは、複数の処理コア間で処理が競合することを防止するように、CPUがGPUによる処理を求める具体的なデータ群について、他の複数の処理コアがいずれも処理を行わないことを保証する責任を負わない。
【0050】
図6は、共有物理メモリを実装するための例示的なシステム600のブロック図である。同様の数字が付けられた項目は、図1図2A及び図2Bに関して記載されたとおりである。いくつかの実施形態において、システム600は、メディアシステムである。さらに、システム600は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えばスマートフォン、スマートタブレットまたはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイスなどに組み込まれてもよい。
【0051】
複数の様々な実施形態において、システム600は、ディスプレイ604と結合されるプラットフォーム602を備える。プラットフォーム602は、コンテンツサービスデバイス606またはコンテンツ配信デバイス608、もしくは他の同様の複数のコンテンツソースなどのコンテンツデバイスからコンテンツを受信してもよい。1または複数の複数のナビゲーション機能を含むナビゲーションコントローラ610は、例えば、プラットフォーム602及び/またはディスプレイ604と情報をやりとりするために用いられてもよい。これらの複数のコンポーネントのそれぞれは、以下、より詳細に記載される。
【0052】
プラットフォーム602は、チップセット612、中央処理装置(CPU)102、メモリデバイス108、記憶デバイス120、グラフィクスサブシステム614、アプリケーション124及び無線装置616の任意の組み合わせを含んでもよい。チップセット612は、CPU102、メモリデバイス108、記憶デバイス120、グラフィクスサブシステム614、アプリケーション124及び無線装置616の間での相互通信を提供してもよい。例えば、チップセット612は、記憶デバイス120との相互通信を提供可能な記憶アダプタ(図示されていない)を含んでもよい。
【0053】
CPU102は、複合命令セットコンピュータ(CISC)または縮小命令セットコンピュータ(RISC)の複数のプロセッサ、x86命令セットと互換性のある複数のプロセッサ、マルチコアまたは任意の他のマイクロプロセッサもしくは中央処理装置(CPU)として実装されてもよい。いくつかの実施形態において、CPU102は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサなどを含む。
【0054】
メモリデバイス108は、限定されるものではないが、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)またはスタティックRAM(SRAM)などの揮発性メモリデバイスとして実装されてもよい。記憶デバイス120は、限定されるものではないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、外付け記憶デバイス、フラッシュメモリ、バッテリバックアップSDRAM(シンクロナスDRAM)及び/またはネットワークアクセス可能な記憶デバイスなどの不揮発性記憶デバイスとして実装されてもよい。いくつかの実施形態において、記憶デバイス120は、例えば、複数のハードドライブが含まれる場合に、重要なデジタルメディアのために記憶性能強化型の保護を高める技術含む。
【0055】
グラフィクスサブシステム614は、表示のために、静止画または動画など複数の画像処理を実行してもよい。グラフィクスサブシステム614は、例えば、GPU104、したがってビジュアル処理装置(VPU)などのグラフィクス処理装置(GPU)を含んでもよい。アナログまたはデジタルインターフェースは、グラフィクスサブシステム614及びディスプレイ604を通信可能に結合するために用いられてもよい。例えば、インターフェースは、高精細度マルチメディアインターフェース、DisplayPort、ワイヤレスHDMI(登録商標)及び/またはワイヤレスHD準拠の複数の技術のいずれかであってもよい。グラフィクスサブシステム614は、CPU102またはチップセット612と一体化されてもよい。代替的に、グラフィクスサブシステム614は、チップセット612と通信可能に結合されるスタンドアロンのカードであってもよい。
【0056】
本明細書に記載された複数のグラフィクス及び/またはビデオ処理技術は、様々な複数のハードウェアキテクチャで実装されてもよい。例えば、グラフィクス及び/またはビデオの機能は、チップセット612内で一体化されてもよい。代替的に、別個のグラフィクス及び/またはビデオプロセッサが用いられてもよい。さらに他の実施形態として、マルチコアプロセッサを含む一般的な汎用プロセッサによって、複数のグラフィクス及び/またはビデオ機能が実装されてもよい。さらなる実施形態において、複数の機能が家電機器に実装されてもよい。
【0057】
無線装置616は、様々な複数の無線通信技術を用いて複数の信号を送受信可能な1または複数の無線装置を含んでもよい。そのような複数の技術は、1または複数の無線ネットワークを通じた複数の通信を伴ってもよい。例示的な複数の無線ネットワークは、複数の無線ローカルエリアネットワーク(WLAN)、複数の無線パーソナルエリアネットワーク(WPAN)、無線メトロポリタンエリアネットワーク(WMAN)、複数のセルラーネットワーク、複数の衛星ネットワークなどを含む。そのような複数のネットワークを通じた通信において、無線装置616は、1または複数の適用可能な規格の任意のバージョンに従って、動作してもよい。
【0058】
ディスプレイ604は、任意のテレビ型モニタまたはディスプレイを含んでもよい。例えば、ディスプレイ604は、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビなどを含んでもよい。ディスプレイ604は、デジタル及び/またはアナログであってもよい。いくつかの実施形態において、ディスプレイ604は、ホログラフィックディスプレイである。また、ディスプレイ604は、視覚的な映像を受信し得る透明な面であってもよい。そのような複数の映像は、情報、複数の画像、複数のオブジェクトなどを様々な形で伝えてもよい。例えば、そのような複数の映像は、モバイル拡張現実(MAR)アプリケーション用の視覚的なオーバーレイであってもよい。1または複数のアプリケーション124の制御下では、プラットフォーム602は、ユーザインタフェース618をディスプレイ604上に表示する。
【0059】
コンテンツサービスデバイス606は、任意の国内的、国際的または独立計のサービスによって運営されてもよく、及び、したがって、例えば、インターネットを介してプラットフォーム602にアクセス可能であってもよい。コンテンツサービスデバイス606は、プラットフォーム602及び/またはディスプレイ604と結合されてもよい。プラットフォーム602及び/またはコンテンツサービスデバイス606は、メディア情報をネットワーク142との間で通信(例えば送信及び/または受信)するべく、ネットワーク142と結合されてもよい。コンテンツ配信デバイス608もまた、プラットフォーム602及び/またはディスプレイ604と結合されてもよい。
【0060】
コンテンツサービスデバイス606は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話またはデジタル情報を配信可能なインターネット対応デバイスを含んでもよい。さらに、コンテンツサービスデバイス606は、複数のコンテンツプロバイダとプラットフォーム602またはディスプレイ604との間で、ネットワーク142を介してまたは直接的に、一方向または双方向へのコンテンツの通信が可能な任意の他の同様の複数のデバイスを含んでもよい。コンテンツは、ネットワーク142を介して、システム600の複数のコンポーネント及びコンテンツプロバイダのいずれか1つ及びそれに対して、一方向及び/または双方向で通信されてもよいことが理解されよう。コンテンツの複数の例は、例えば、ビデオ、音楽、医療及びゲーム情報などを含む任意のメディア情報を含んでもよい。
【0061】
コンテンツサービスデバイス606は、メディア情報、デジタル情報、他のコンテンツを含むケーブルテレビプログラムなどのコンテンツを受信してもよい。コンテンツプロバイダの複数の例は、特に、任意のケーブルまたは衛星テレビもしくは無線またはインターネットの複数のコンテンツプロバイダを含んでもよい。
【0062】
いくつかの実施形態において、プラットフォーム602は、1または複数の複数のナビゲーション機能を含むナビゲーションコントローラ610から、複数の制御信号を受信する。ナビゲーションコントローラ610の複数のナビゲーション機能は、例えば、ユーザインタフェース618と情報をやりとりするために用いられてもよい。ナビゲーションコントローラ610は、ユーザが空間的な(例えば連続的かつ多次元の)データをコンピュータに入力できるようなコンピュータハードウェア要素(具体的には、ヒューマンインターフェースデバイス)となり得るポインティングデバイスであってもよい。グラフィカルユーザインタフェース(GUI)などの多数のシステム、ならびに複数のテレビ及び複数のモニタによれば、ユーザは、複数の身体的なジェスチャを用いて、データの制御及びコンピュータまたはテレビへの提供を行うことができる。複数の身体的なジェスチャは、限定されるわけではないが、複数の表情、複数の顔の動き、様々な四肢の動き、身体の動き、ボディランゲージまたはこれらの任意の組み合わせを含む。そのような複数の身体的なジェスチャは、認識されるとともに、複数のコマンドまたは複数の命令に変換することができる。
【0063】
ナビゲーションコントローラ610の複数のナビゲーション機能の動きは、ポインタ、カーソル、焦点リングまたはディスプレイ604上に表示される他の複数の視覚的なインジケータの動きによって、ディスプレイ604上に反映されてもよい。例えば、アプリケーション124の制御下で、ナビゲーションコントローラ610に位置する複数のナビゲーション機能は、ユーザインタフェース618上に表示される複数の仮想ナビゲーション機能にマッピングされてもよい。いくつかの実施形態において、ナビゲーションコントローラ610は、別個のコンポーネントとすることはできないが、むしろ、プラットフォーム602及び/またはディスプレイ604と一体化されてもよい。
【0064】
システム600は、例えば、可能な場合には、初期の起動後、ユーザがボタンのタッチによりプラットフォーム602を即座にオン及びオフすることができる技術を含む複数のドライバ(図示されていない)を含んでもよい。プログラムロジックにより、プラットフォーム602は、プラットフォームが「オフ」にされた場合、複数のメディアアダプタまたは他のコンテンツサービスデバイス606もしくはコンテンツ配信デバイス608に、コンテンツをストリーミングしてもよい。さらに、チップセット612は、例えば、5.1サラウンドサウンドオーディオ及び/または高精細度7.1サラウンドサウンドオーディオのハードウェア及び/またはソフトウェアサポートを含んでもよい。複数のドライバは、複数の一体化グラフィクスプラットフォーム用のグラフィクスドライバを含んでもよい。いくつかの実施形態において、グラフィクスドライバは、周辺要素高速相互接続(peripheral component interconnect express)(PCIe)グラフィクスカードを含む。
【0065】
複数の様々な実施形態において、システム600に示す複数のコンポーネントの任意の1つまたは複数は、一体化されてもよい。例えば、プラットフォーム602及びコンテンツサービスデバイス606は、一体化されてもよく、プラットフォーム602及びコンテンツ配信デバイス608は、一体化されてもよく、あるいは、プラットフォーム602、コンテンツサービスデバイス606及びコンテンツ配信デバイス608は、一体化されてもよい。いくつかの実施形態において、プラットフォーム602及びディスプレイ604は、一体的なユニットである。例えば、ディスプレイ604及びコンテンツサービスデバイス606は、一体化されてもよく、あるいは、ディスプレイ604及びコンテンツ配信デバイス608は、一体化されてもよい。
【0066】
システム600は、無線システムまたは有線システムとして実装されてもよい。無線システムとして実装された場合、システム600は、無線共有メディアを通じた通信に適した、1または複数のアンテナ、送信機、受信機、トランシーバ、増幅器、フィルタ、制御ロジックなどのコンポーネント及びインターフェースを含んでもよい。無線共有メディアの例は、RFスペクトルなどの無線スペクトルの一部を含んでもよい。有線システムとして実装された場合、システム600は、有線通信媒体を通じた通信に適した、複数の入出力(I/O)アダプタ、対応する有線通信媒体にI/Oアダプタを接続する複数の物理コネクタ、ネットワークインタフェースカード(NIC)、ディスクコントローラ、ビデオコントローラ、オーディオコントローラなどの複数のコンポーネント及び複数のインターフェースを含んでもよい。有線通信媒体の複数の例は、ワイヤ、ケーブル、金属リード線、プリント回路基板(PCB)、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、光ファイバなどを含んでもよい。
【0067】
プラットフォーム602は、情報を通信するべく、1または複数のロジックチャネルまたは物理チャネルを確立してもよい。情報は、メディア情報及び制御情報を含んでもよい。メディア情報は、ユーザ向けコンテンツを表す任意のデータを指してもよい。コンテンツ複数の例は、例えば、音声会話、ビデオ会議、ストリーミング配信ビデオ、電子メール(eメール)メッセージ、ボイスメールメッセージ、英数字、複数の記号、グラフィクス、複数の画像、ビデオ、テキスト等からのデータを含んでもよい。音声会話からのデータは、例えば、スピーチ情報、静寂期間、背後の雑音、快適雑音、音調等であってもよい。制御情報は、自動化システム向けの複数のコマンド、複数の命令または複数の制御用語を表す任意のデータを指してもよい。例えば、制御情報は、システムを通じたメディア情報のルーティングを行うため、またはノードに対し、メディア情報を予め定められた態様で処理することを命令するために用いられてもよい。複数の実施形態は、しかしながら、図6に記載または示された複数の要素または内容に限定されるものではない。
【0068】
図7は、図6のシステム600が具現され得る小型フォームファクタデバイス700の概略である。同様の数字が付けられた項目は、図6に関して記載されたとおりである。いくつかの実施形態において、例えば、デバイス700は、複数の無線機能を有するモバイルコンピューティングデバイスとして実装される。モバイルコンピューティングデバイスは、例えば、処理システム及び1または複数のバッテリなどのモバイル電源または供給源を有する任意のデバイスを指してもよい。
【0069】
上述のように、モバイルコンピューティングデバイスの複数の例は、パーソナルコンピュータ(PC)、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント(PDA)、携帯電話、携帯電話/PDAの組み合わせ、テレビ、スマートデバイス(例えばスマートフォン、スマートタブレットまたはスマートテレビ)、モバイルインターネットデバイス(MID)、メッセージングデバイス、データ通信デバイス等を含んでもよい。
【0070】
モバイルコンピューティングデバイスの例は、手首用コンピュータ、指用コンピュータ、リング型コンピュータ、眼鏡型コンピュータ、ベルトクリップ型コンピュータ、アームバンド型コンピュータ、靴型コンピュータ、衣服型コンピュータまたは任意の他の適したタイプのウェアラブルコンピュータなどの人が着用するよう構成されたコンピュータをさらに含んでもよい。例えば、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーションだけではなく複数の音声通信及び/または複数のデータ通信を実行可能なスマートフォンとして実装されてもよい。いくつかの実施形態は、スマートフォンとして実装されたモバイルコンピューティングデバイスを例として記載されてもよいが、他の複数の実施形態は、他の複数のワイヤレスモバイルコンピューティングデバイスを同様に用いて実装されてもよいことを理解されたい。
【0071】
図7に示すように、デバイス700は、ハウジング702、ディスプレイ704、入出力(I/O)デバイス706及びアンテナ708を含んでもよい。デバイス700は、複数のナビゲーション機能710をさらに含んでもよい。ディスプレイ704は、モバイルコンピューティングデバイスに適した情報を表示するために、任意の適切なディスプレイユニットを含んでもよい。I/Oデバイス706は、モバイルコンピューティングデバイスに情報を入力するために、任意の適切なI/Oデバイスを含んでもよい。例えば、I/Oデバイス706は、英数字キーボード、テンキーパッド、タッチパッド、複数の入力キー、複数のボタン、複数のスイッチ、複数のロッカースイッチ、複数のマイク、複数のスピーカ、音声認識デバイスおよびソフトウェアなどを含んでもよい。情報は、さらにマイクを用いて、デバイス700に入力されてもよい。そのような情報は、音声認識デバイスによりデジタル化されてもよい。
【実施例1】
【0072】
コンピューティングデバイスの中央処理装置(CPU)と入出力(I/O)デバイスとの間におけるメモリ共有のための方法が、本明細書に記載される。方法は、物理メモリ内における面の割り当てを含む。方法は、CPUページテーブル内の複数の仮想メモリアドレスに対する、面のマッピングを含む。方法は、面に基づく、I/Oデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対する、面のマッピングをさらに含む。方法は、面のピニングをさらに含む。
【0073】
メモリは、CPUメモリからI/Oデバイスメモリに対してデータをコピーすることなく、CPUとI/Oデバイスとの間で面を介して共有されてもよい。面は、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、割り当てられてもよい。さらに、方法は、コンピューティングデバイスのドライバにより実行されてもよい。
【0074】
CPUのキャッシュ及びI/Oデバイスからのデータは、CPUとI/Oデバイスとの間で共有されるラストレベルキャッシュ(LLC)とコヒーレントであってもよい。オペレーションは、CPUからI/Oデバイスに対してオフロードされてもよく、そのオペレーションは、I/Oデバイス内で実行されてもよい。完了信号は、CPUに送信されてもよく、完了信号は、I/Oデバイスがいくつかの計算を実行した結果、面内のデータが変更されたという指標を含む。さらに、デバイスドライバは、CPUとI/Oデバイスとの間で、データの処理を同期させてもよい。
【実施例2】
【0075】
コンピューティングデバイスが、本明細書に記載される。コンピューティングデバイスは、記憶された複数の命令を実行するように構成される中央処理装置(CPU)と、複数の命令を記憶する記憶デバイスとを含む。記憶デバイスは、CPUにより実行された場合に、物理メモリ内で面を割り当てるように構成されるプロセッサ実行可能コードを含む。コンピューティングデバイスは、グラフィクス処理装置(GPU)及びGPUページテーブルをさらに含む。面は、CPUページテーブル内の複数の仮想メモリアドレスにマッピングされてもよい。面は、GPUページテーブル内の複数の仮想メモリアドレスに対して、さらにマッピングされてもよい。コンピューティングデバイスは、面をピニングしてもよい。
【0076】
物理メモリは、CPUメモリからGPUメモリに対してデータをコピーすることなく、CPUとGPUとの間で共有されてもよい。さらに、CPU及びGPUは、コンピューティングデバイス内の同じダイに位置する。CPU及びGPUは、ラストレベルキャッシュ(LLC)を共有してもよく、LLCは、CPUまたはGPUの任意のキャッシュからデータを取り出すことができる。CPU及びGPUは、ユニファイドメモリアーキテクチャ(UMA)を含んでもよい。
【0077】
プロセッサ実行可能コードは、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、面を割り当てるように構成されてもよい。CPUページテーブル及びGPUページテーブルにおける複数の仮想メモリアドレスは、複数の仮想アドレスを複数の物理アドレスに変換することにより、面内の複数の物理的位置にマッピングされてもよい。ドライバは、プロセッサ実行可能コードの実行を開始するように構成されてもよい。さらに、コンピューティングデバイスは、無線装置及びディスプレイを含んでもよく、無線装置及びディスプレイは、少なくとも中央処理装置と通信可能に結合されてもよい。
【実施例3】
【0078】
内部に記憶された複数の命令を有する少なくとも1つの非一時的機械可読媒体が、本明細書に記載される。コンピューティングデバイス上で実行されたことに応答して、複数の命令により、コンピューティングデバイスは、物理メモリ内で面を生成する。複数の命令により、コンピューティングデバイスはさらに、多数の複数のCPU仮想メモリアドレスに対して面をマッピングするとともに、多数の複数のGPU仮想メモリアドレスに対して面をマッピングする。面は、さらにピニングされてもよい。
【0079】
物理メモリは、CPUメモリからGPUメモリに対してデータをコピーすることなく、CPUとGPUとの間で共有されてもよい。さらに、複数の命令により、CPU及びGPUのキャッシュからのデータは、ラストレベルキャッシュ(LLC)とコヒーレントであってもよい。さらに、複数の命令により、コンピューティングデバイスは、コンピューティングデバイスのCPU上で実行されるアプリケーションからの入力に応答して、面をさらに割り当ててもよい。
【0080】
前述された複数の例における詳細は、1または複数の複数の実施形態のいずれかの部分で用いられてもよいことが理解されよう。例えば、上述したコンピューティングデバイスの全てのオプションの機能は、本明細書に記載された方法またはコンピュータ可読媒体のいずれかに関してさらに実装されてもよい。さらに、複数のフロー図及び/または複数の状態図が、複数の実施形態を説明するために本明細書において用いられてもよいが、複数の本発明は、これらの複数の図または対応する本明細書における複数の記載に限定されるものではない。例えば、フローは、示されたボックスまたは状態の各々を通して動く必要もなければ、本明細書に示されかつ記載されたものと正確に同じ順序である必要もない。
【0081】
複数の本発明は、本明細書に列挙された具体的な複数の詳細に制限されるものではない。実際、本開示を利用する当業者によれば、上述の記載及び複数の図面からの多くの他のバリエーションが、複数の本発明の範囲内で生じ得ることを理解するであろう。従って、任意の修正を含む以下の特許請求の範囲によって、複数の本発明の範囲が画定される。
本実施形態の例を下記の各項目として示す。
[項目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つのプログラム。
図1
図2A
図2B
図3
図4
図5
図6
図7