(57)【特許請求の範囲】
【請求項１】
第１のプロセッサと、
前記第１のプロセッサに結合された第２のプロセッサと、
前記第１のプロセッサと前記第２のプロセッサとの間で共有されたラストレベルキャッシュ（ＬＬＣ）とを備え、
前記第１のプロセッサと前記第２のプロセッサとは同じダイ上にあり、
前記第１のプロセッサまたは前記第２のプロセッサの一方は、グラフィックスプロセッサであり、
前記第１のプロセッサは、物理メモリ内で面を割り当て、
前記面は、前記第１のプロセッサと前記第２のプロセッサとの間で直接共有され、
前記面上のデータは、データをコピーすることなく、自動的に可視とされ、
前記第１のプロセッサは、前記面を、前記第１のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングし、前記面を、前記第２のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングし、
前記面内の複数の位置から前記ＬＬＣにキャッシュされたデータは、前記第１のプロセッサと前記第２のプロセッサとによりアクセス可能である
コンピューティングデバイス。
【請求項２】
前記第１のプロセッサは、第１の仮想メモリアドレスから前記データにアクセスし、
前記第２のプロセッサは、第２の仮想メモリアドレスから前記データにアクセスし、
前記第１の仮想メモリアドレスおよび前記第２の仮想メモリアドレスは、前記面にマッピングされ、
前記第２の仮想メモリアドレスから前記データに対する前記第２のプロセッサによる要求に応じて、前記ＬＬＣは、前記ＬＬＣに前記データが格納されていない場合に、他のキャッシュから前記データを取り出すためのものであり、前記他のキャッシュは、前記第２のプロセッサによりアクセス可能ではない
請求項１に記載のコンピューティングデバイス。
【請求項３】
前記第１のプロセッサ、前記第２のプロセッサ、または前記第１および前記第２のプロセッサに結合された少なくとも１つのメモリ管理ユニット（ＭＭＵ）をさらに備え、
前記ＭＭＵは、前記第１のプロセッサ、前記第２のプロセッサ、または前記第１および前記第２のプロセッサのための仮想メモリアドレスのセットへの、物理メモリに割り当てられたデータに対する物理メモリアドレスのセットのマッピングを管理する
請求項１に記載のコンピューティングデバイス。
【請求項４】
前記少なくとも１つのＭＭＵは、前記第１のプロセッサに関連付けられた第１のページテーブルおよび前記第２のプロセッサに関連付けられた第２のページテーブルへの１または複数のマッピングを含む
請求項３に記載のコンピューティングデバイス。
【請求項５】
前記第１のプロセッサは、前記面を、前記第１のページテーブルの複数の仮想メモリアドレスにマッピングし、前記面を、前記第２のページテーブルの複数の仮想メモリアドレスにマッピングする
請求項４に記載のコンピューティングデバイス。
【請求項６】
第１のプロセッサと、
前記第１のプロセッサに結合された第２のプロセッサであって、前記第１のプロセッサと前記第２のプロセッサとは同じダイ上にあり、前記第１のプロセッサまたは前記第２のプロセッサの一方は、グラフィックスプロセッサである、前記第２のプロセッサと、
前記第１のプロセッサと前記第２のプロセッサとの間で共有されたラストレベルキャッシュ（ＬＬＣ）であって、前記ＬＬＣ内のデータは、前記第１のプロセッサと前記第２のプロセッサとによりアクセス可能である、前記ＬＬＣと、
出力データを表示するディスプレイデバイスと、
複数の命令を記憶する記憶デバイスと、を備え、
前記複数の命令は、実行された場合に、
物理メモリ内で面を割り当てる段階であって、前記面は、前記第１のプロセッサと前記第２のプロセッサとの間で直接共有され、前記面上のデータは、データをコピーすることなく、自動的に可視とされる、前記割り当てる段階と、
前記面を、前記第１のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする段階と、
前記面を、前記第２のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする段階と、
前記面内の複数の位置からキャッシュされたデータが前記ＬＬＣにキャッシュされるように、前記面を、ＬＬＣキャッシュ可能と指定する段階と、
前記面内の複数の位置から前記ＬＬＣへデータをキャッシュする段階とを、
前記第１のプロセッサ、前記第２のプロセッサ、または前記第１および前記第２のプロセッサに実行させる
コンピューティングシステム。
【請求項７】
前記第１のプロセッサは、第１の仮想メモリアドレスから前記データにアクセスし、
前記第２のプロセッサは、第２の仮想メモリアドレスから前記データにアクセスし、
前記第１の仮想メモリアドレスおよび前記第２の仮想メモリアドレスは、前記面にマッピングされ、
前記第２の仮想メモリアドレスからデータに対する前記第２のプロセッサによる要求に応じて、前記ＬＬＣは、前記ＬＬＣに前記データが格納されていない場合に、他のキャッシュから前記データを取り出すためのものであり、前記他のキャッシュは、前記第２のプロセッサによりアクセス可能ではない
請求項６に記載のコンピューティングシステム。
【請求項８】
前記第１のプロセッサ、前記第２のプロセッサ、または前記第１および前記第２のプロセッサに結合された少なくとも１つのメモリ管理ユニット（ＭＭＵ）をさらに備え、
前記ＭＭＵは、前記第１のプロセッサ、前記第２のプロセッサ、または前記第１および前記第２のプロセッサのための仮想メモリアドレスのセットへの、物理メモリに割り当てられたデータに対する物理メモリアドレスのセットのマッピングを管理する
請求項６に記載のコンピューティングシステム。
【請求項９】
前記少なくとも１つのＭＭＵは、前記第１のプロセッサに関連付けられた第１のページテーブルおよび前記第２のプロセッサに関連付けられた第２のページテーブルを含むメモリへの１または複数のマッピングを含む
請求項８に記載のコンピューティングシステム。
【請求項１０】
前記記憶デバイス上の前記複数の命令は、前記第１のプロセッサまたは前記第２のプロセッサに、前記面を、前記第１のページテーブルの複数の仮想メモリアドレスにマッピングさせ、前記面を、前記第２のページテーブルの複数の仮想メモリアドレスにマッピングさせる
請求項９に記載のコンピューティングシステム。
【請求項１１】
コンピューティングデバイスの複数のプロセッサ間でメモリを共有する方法であって、
前記コンピューティングデバイスに関連付けられたメモリ内で面を割り当てる段階であって、前記面は、前記コンピューティングデバイスの第１のプロセッサと第２のプロセッサとの間で直接共有され、前記面上のデータは、前記第１のプロセッサのメモリから前記第２のプロセッサのメモリへデータをコピーすることなく自動的に可視とされ、前記第１のプロセッサまたは前記第２のプロセッサの一方は、グラフィックスプロセッサである、前記割り当てる段階と、
前記面を、前記第１のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする段階と、
前記面を、前記第２のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする段階と、
前記面内の複数の位置からキャッシュされたデータがラストレベルキャッシュ（ＬＬＣ）にキャッシュされるように、前記面を、ＬＬＣキャッシュ可能と指定する段階と、
前記ＬＬＣへ、前記面内の複数の位置からデータをキャッシュする段階であって、前記ＬＬＣ内のデータは、前記第１のプロセッサと前記第２のプロセッサとによりアクセス可能である、段階と
を備える方法。
【請求項１２】
前記第１のプロセッサに関連付けられた第１のページテーブルおよび前記第２のプロセッサに関連付けられた第２のページテーブルを、１または複数のメモリ管理ユニット（ＭＭＵ）へマッピングする段階をさらに備える
請求項１１に記載の方法。
【請求項１３】
前記第１のページテーブル内の第１のセットの仮想メモリアドレスを複数の物理アドレスに変換する段階と、
前記第２のページテーブル内の第２のセットの仮想メモリアドレスを複数の物理アドレスに変換する段階と、
前記第１のセットの仮想メモリアドレスおよび前記第２のセットの仮想メモリアドレスを、前記面内の物理アドレスにマッピングする段階と
をさらに備える
請求項１２に記載の方法。
【請求項１４】
前記第１のプロセッサで、第１の仮想メモリアドレスからデータにアクセスする段階と、
前記第２のプロセッサで、第２の仮想メモリアドレスからデータにアクセスする段階と、
前記第２の仮想メモリアドレスから前記第２のプロセッサによりアクセスされたデータが前記ＬＬＣに格納されていない場合に、他のキャッシュからデータを取り出す段階と、
前記第２のプロセッサによるアクセスのために、前記他のキャッシュから取り出された前記データを、前記ＬＬＣに格納する段階であって、前記他のキャッシュは、前記第２のプロセッサによりアクセス可能ではない、段階と
をさらに備え、
前記第１の仮想メモリアドレスおよび前記第２の仮想メモリアドレスの各々は、前記面にマッピングされる
請求項１３に記載の方法。
【請求項１５】
請求項１１から１４のいずれか１項に記載の方法を実行するための手段を備えるデータ処理システム。
【請求項１６】
コンピューティングデバイスの１または複数のプロセッサによって実行された場合に、請求項１１から１４のいずれか１項に記載の方法を、前記１または複数のプロセッサに実行させる複数の命令を格納する、非一時的な機械可読媒体。
【請求項１７】
面を割り当てる手段であって、前記面は、第１のプロセッサと第２のプロセッサとの間で直接共有され、前記面上のデータは、前記第１のプロセッサのメモリから前記第２のプロセッサのメモリへデータをコピーすることなく自動的に可視とされ、前記第１のプロセッサまたは前記第２のプロセッサの一方は、グラフィックスプロセッサである、前記割り当てる手段と、
前記面を、前記第１のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする手段と、
前記面を、前記第２のプロセッサのアドレス空間内の複数の仮想メモリアドレスにマッピングする手段と、
前記面内の複数の位置からキャッシュされたデータがラストレベルキャッシュ（ＬＬＣ）にキャッシュされるように、前記面を、ＬＬＣキャッシュ可能と指定する手段と、
前記ＬＬＣへ、前記面内の複数の位置からデータをキャッシュする手段であって、前記ＬＬＣ内のデータは、前記第１のプロセッサと前記第２のプロセッサとによりアクセス可能である、手段と
を備えるコンピューティングデバイス。
【請求項１８】
前記第１のプロセッサに関連付けられた第１のページテーブルおよび前記第２のプロセッサに関連付けられた第２のページテーブルを、１または複数のメモリ管理ユニット（ＭＭＵ）へマッピングする手段をさらに備える
請求項１７に記載のコンピューティングデバイス。
【請求項１９】
前記第１のページテーブル内の第１のセットの仮想メモリアドレスを複数の物理アドレスに変換する手段と、
前記第２のページテーブル内の第２のセットの仮想メモリアドレスを複数の物理アドレスに変換する手段と、
前記第１のセットの仮想メモリアドレスおよび前記第２のセットの仮想メモリアドレスを、前記面内の物理アドレスにマッピングする手段と、
をさらに備える
請求項１８に記載のコンピューティングデバイス。
【請求項２０】
前記第１のプロセッサで、第１の仮想メモリアドレスからデータにアクセスする手段と、
前記第２のプロセッサで、第２の仮想メモリアドレスからデータにアクセスする手段と
前記第２の仮想メモリアドレスから前記第２のプロセッサによりアクセスされたデータが前記ＬＬＣに格納されていない場合に、他のキャッシュからデータを取り出す手段と、
前記第２のプロセッサによるアクセスのために、前記他のキャッシュから取り出された前記データを、前記ＬＬＣに格納する手段であって、前記他のキャッシュは、前記第２のプロセッサによりアクセス可能ではない、手段と
をさらに備え、
前記第１の仮想メモリアドレスおよび前記第２の仮想メモリアドレスの各々は、前記面にマッピングされる
請求項１９に記載のコンピューティングデバイス。
【請求項２１】
コンピューティングデバイスに、請求項１１から１４のいずれか１項に記載の方法を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、コンピューティングシステム内における中央処理装置（ＣＰＵ）と入出力（Ｉ／Ｏ）デバイスとの間のメモリ共有に関する。より詳細には、本発明は、ＣＰＵとＩ／Ｏデバイスとの間における物理メモリの共有に関する。
【背景技術】
【０００２】
近年、複数のＩ／Ｏデバイスは、多数の中央処理装置（ＣＰＵ）の複数のコンピュータ処理能力に匹敵する複数のコンピュータ処理能力を含む場合がある。結果として、伝統的にＣＰＵによって実行されてきた複数のコンピュータタスクの一部が、コンピューティングデバイスのＩ／Ｏデバイスにオフロードされる場合がある。例えば、コンピューティングデバイスのグラフィクス処理装置（ＧＰＵ）などのＩ／Ｏデバイスは、伝統的にＣＰＵによって実行されてきた複数のタスクのいくつかを実行することができ、そのことによって、ＣＰＵの効率性が向上している。
【図面の簡単な説明】
【０００３】
【図１】図１は、複数の実施形態に従って用いることができるコンピューティングデバイスのブロック図である。
【図２Ａ】図２Ａは、複数の実施形態に係るコンピューティングデバイスの中央処理装置（ＣＰＵ）とグラフィクス処理装置（ＧＰＵ）との間におけるメモリ共有のためのプロシージャを実装するために用いることができるユニファイドメモリアーキテクチャ（ＵＭＡ）の概略である。
【図２Ｂ】図２Ｂは、複数の実施形態に係るコンピューティングデバイスの中央処理装置（ＣＰＵ）とグラフィクス処理装置（ＧＰＵ）との間におけるメモリ共有のためのプロシージャを実装するために用いることができるユニファイドメモリアーキテクチャ（ＵＭＡ）の概略である。
【図３】図３は、複数の実施形態に係るコンピューティングデバイスＣＰＵとＧＰＵとの間におけるメモリ共有のための方法を示す処理フロー図である。
【図４】図４は、複数の実施形態に係るコンピューティングデバイスのＣＰＵとＧＰＵとの間における共有メモリを処理するための方法を示す処理フロー図である。
【図５】図５は、複数の実施形態に係るコンピューティングデバイスのＣＰＵとＧＰＵとの間におけるメモリ共有のためのコードを記憶する、有形の非一時的なコンピュータ可読媒体を示すブロック図である。
【図６】図６は、共有物理メモリを実装するための例示的なシステムのブロック図である。
【図７】図７は、図６が具現されうるシステムにおける小型フォームファクタデバイスの概略である。  本開示及び複数の図面において、同様の複数のコンポーネント及び複数の特徴を参照するために、同じ番号が用いられる。１００番台の複数の番号は、図１において初出の複数の特徴を指し、２００番台の複数の番号は、図２において初出の複数の特徴複数の特徴を指し、以下同様である。
【発明を実施するための形態】
【０００４】
現在、複数のオペレーティングシステム及び複数のグラフィクスインターフェースは、複数のＧＰＵをＣＰＵ同様の複数のリソースを有する複数のプロセッサとして管理するのではなく、複数のＧＰＵを複数のＩ／Ｏデバイスとして管理する。複数のＧＰＵを複数のＩ／Ｏデバイスとして管理することにより、複数のＣＰＵ及び複数のＧＰＵは、別個の物理アドレスドメインを有する複数の物理メモリを有する。複数のコンピュータタスクを複数のＧＰＵにオフロードする場合、データは、ＣＰＵの物理アドレスドメインからＧＰＵの物理アドレスドメインにコピーされる。ＧＰＵが処理を終了した後、データは、ＣＰＵの物理アドレスドメインに再びコピーされる。
【０００５】
ＣＰＵによって伝統的に実行されてきた複数のコンピュータタスクの一部を、ＧＰＵのコンピューティングデバイスにオフロードすることは、ＣＰＵの効率性を高める場合がある。上述したように、複数のタスクをＧＰＵにオフロードするべく、データは、ＣＰＵの物理メモリからＧＰＵの物理メモリへの間で転送される場合がある。複数のコンピュータタスクをＧＰＵにオフロードする場合に行われる数のデータ転送は、複数のタスクをＧＰＵにオフロードすることによって得られるいずれかの効率性を低下させることがある。従って、本明細書に記載された複数の実施形態は、コンピューティングデバイスのＣＰＵとＧＰＵとの間におけるメモリ共有に関する。メモリは、ユニファイドメモリアーキテクチャ（ＵＭＡ）を介して共有されてもよい。
【０００６】
複数の様々な実施形態において、ＵＭＡは、ＣＰＵ及びＧＰＵの両方に同じ物理メモリを付与することにより、ＣＰＵとＧＰＵとの間におけるメモリ共有を提供する。したがって、物理メモリと、ＣＰＵ及びＧＰＵの対応する物理アドレス空間とは、全く同じである。複数の実施形態において、物理メモリは、ＣＰＵとＧＰＵとの間で分割されてもよい。さらに、物理メモリは、コンピューティングデバイスのオペレーティングシステムによって割り当てられる、ページングされたシステムメモリとすることができる。ＣＰＵの仮想メモリアドレス空間は、ＧＰＵのグラフィクス仮想メモリアドレス空間として、同じ複数の物理メモリページにマッピングされてもよい。さらに、いくつかの実施形態において、ＣＰＵ及びＧＰＵは、物理的に同じダイに位置する。したがって、ＣＰＵ及びＧＰＵは、ＧＰＵのアドレス空間からＣＰＵのアドレス空間にデータをコピーすることなく、物理メモリ内に保持されるデータを共有することができ、逆もまた同様である。これにより、例えば、ＣＰＵとＧＰＵとの間におけるデータ共有のための時間及び電力消費を減少させることによって、ＣＰＵからＧＰＵに対して複数のコンピュータタスクをオフロードするコストを低減させることができる。
【０００７】
以下の説明及び特許請求の範囲において、用語「結合」及び「接続」が、これらの派生語と併せて用いられる場合がある。これらの用語は、互いの同義語であることを意図するものではないことを理解されたい。むしろ、複数の具体的実施形態において、「接続」は、２または３以上の要素が互いに、直接物理的または電気的に接触することを示すために用いられてもよい。「結合」は、２または３以上の要素が、直接物理的または電気的に接触することを意味してもよい。しかしながら、「結合」は、２または３以上の要素が互いに直接は接触してないが、互いに連携または相互作用することをさらに意味してもよい。
【０００８】
いくつかの実施形態は、ハードウェア、ファームウェア及びソフトウェアの１つまたは組み合わせにおいて実装されてもよい。いくつかの実施形態は、コンピューティングプラットフォームによって読み出し及び実行されることにより、本明細書に記載されたオペレーションを実行することができる、機械可読媒体に記憶された複数の命令としてさらに実装されてもよい。機械可読媒体は、機械、例えばコンピュータによって可読な形で情報を記憶または送信するための任意のメカニズムを含んでもよい。例えば、機械可読媒体は、特に、読み出し専用メモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイス、もしくは電気、光、音声または他の形で伝播する複数の信号、例えば複数の搬送波、複数の赤外線信号、複数のデジタル信号、または複数の信号を送信及び／または受信する複数のインターフェースを含んでもよい。
【０００９】
実施形態は、実装または例である。本明細書において言及される「実施形態」、「１つの実施形態」、「いくつかの実施形態」、「様々な複数の実施形態」または「他の複数の実施形態」は、複数の実施形態に関連して記載された具体的な特徴、構造または特性が、少なくともいくつかの実施形態に含まれているが、必ずしも本発明の全ての実施形態には含まれていないことを意味する。「実施形態」、「１つの実施形態」または「いくつかの実施形態」という様々な複数の表現は、必ずしも全てが同じ複数の実施形態を指すものではない。ある実施形態の複数の要素または複数の態様は、他の実施形態の複数の要素または複数の態様と組み合わせることができる。
【００１０】
本明細書に記載または示された複数のコンポーネント、複数の特徴、複数の構造、複数の特性等の全てが、具体的な実施形態または複数の実施形態に含まれる必要はない。本明細書において、あるコンポーネント、特徴、構造または特性が含まれ「てもよい」、「る場合がある」、「ることが可能である」または「る可能性がある」と記述されている場合は、例えば、その具体的なコンポーネント、特徴、構造または特性は、含まれる必要がない。本明細書または特許請求の範囲において、「ある」要素について言及される場合は、その要素は１つだけ存在するのではないことを意味する。本明細書または特許請求の範囲が「追加的な」要素について言及する場合、「追加的な」要素が１より多く存在することが除外されるものではない。
【００１１】
なお、いくつかの実施形態は、具体的な複数の実装を参照して記載されているが、いくつかの実施形態によれば、他の複数の実装も可能である。さらに、複数の回路要素、もしくは図示及び／または本明細書に記載された他の複数の特徴の構成及び／または順序は、示されかつ記載された具体的な方法で構成される必要はない。いくつかの実施形態によれば、多くの他の構成が可能である。
【００１２】
図示された各システムにおいて、複数の要素は、場合によっては、表された複数の要素が異なりうる及び／または同様でありうることを示唆するべく、各々、同じ参照番号または異なる参照番号を有してもよい。しかしながら、要素は、異なる複数の実装を有するとともに、本明細書に示されまたは記載された複数のシステムのいくつかまたは全てとともにオペレーションすることができるように柔軟であてもよい。複数の図面に示された様々な複数の要素は、同一または異なっていてもよい。第１の要素としてどれを指し、どれを第２の要素と称するかは、任意である。
【００１３】
図１は、複数の実施形態に従って用いることができるコンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、特に、例えば、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイスまたはサーバであってもよい。コンピューティングデバイス１００は、記憶された複数の命令を実行するように適合される中央処理装置（ＣＰＵ）１０２を、ＣＰＵ１０２によって実行可能な複数の命令を記憶するメモリデバイス１０８とともに含んでもよい。ＣＰＵ１０２は、シングルコアプロセッサ、マルチコアプロセッサ、コンピューティングクラスタまたは任意の数の他の構成とすることができる。さらに、コンピューティングデバイス１００は、１より多くのＣＰＵ１０２を含んでもよい。ＣＰＵ１０２によって実行される複数の命令は、メモリ共有プロシージャを実装するために用いられてもよい。
【００１４】
コンピューティングデバイス１００は、グラフィクス処理装置（ＧＰＵ）１０４をさらに含んでもよい。ＧＰＵは、コンピューティングデバイス１００内の入出力（Ｉ／Ｏ）デバイスである。Ｉ／Ｏデバイスは、入力、出力またはこれらの任意の組み合わせを用いて、コンピュータと通信を行うために用いることができるデバイスである。図示したように、ＣＰＵ１０２は、バス１０６を介してＧＰＵ１０４と接続されてもよい。しかしながら、いくつかの実施形態において、ＧＰＵ１０４は、コンピューティングデバイス１００内で、ＣＰＵ１０２と同じダイに位置する。このように、ＣＰＵ１０２及びＧＰＵは、バス１０６を介したＣＰＵ１０２及びＧＰＵ１０４間の接続を除いてもよい態様で、物理的に接続される。さらに、複数の実施形態において、ＣＰＵ１０２及びＧＰＵ１０４は、図２Ａ及び図２Ｂに関して説明されたように、コンピューティングデバイス１００のユニファイドメモリアーキテクチャ内に含まれてもよい。
【００１５】
ＧＰＵ１０４は、コンピューティングデバイス１００内で任意の数のグラフィクスオペレーションを実行するように構成されてもよい。例えば、ＧＰＵ１０４は、複数のグラフィクス画像、複数のグラフィクスフレーム、複数のビデオなどを、コンピューティングデバイス１００のユーザに表示させるべく、レンダリングまたは操作するように構成されてもよい。いくつかの実施形態において、ＧＰＵ１０４は、多数のグラフィクスエンジン（図示されていない）を含み、各グラフィクスエンジンは、特定の複数のグラフィクスタスクを実行し、または特定のタイプの複数のワークロードを実行するように構成される。
【００１６】
コンピューティングデバイス１００は、メモリデバイス１０８をさらに含んでもよい。メモリデバイス１０８は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリまたは任意の他の適した複数のメモリシステムを含むことができる。例えば、メモリデバイス１０８は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含んでもよい。メモリ１０８は、メモリ共有プロシージャを実装するための複数の命令を実行するように構成されるデバイスドライバ１１０を含んでもよい。デバイスドライバ１１０は、ソフトウェア、アプリケーションプログラム、アプリケーションコードなどであってもよい。いくつかの実施形態において、デバイスドライバ１１０は、ユーザモードドライバである。
【００１７】
メモリ１０８は、ラストレベルキャッシュ（ＬＬＣ）１１４、レベル２キャッシュ１１６及びレベル１キャッシュ１１８を含むマルチレベルキャッシュ１１２をさらに含む。マルチレベルキャッシュ１１２は図示のために用いられているが、任意のキャッシュがコンピューティングデバイス１００に含まれることができる。マルチレベルキャッシュ１１２は、ＣＰＵ１０２で頻繁に用いられるデータのより小さいサブセットを記憶するより小さく、より高速のメモリであってもよい。より大きなデータセットは、記憶装置１２０に記憶されてもよい。記憶装置１２０は、ハードドライブ、光学式ドライブ、サムドライブ、複数のドライブのアレイまたはこれらの任意の組み合わせなどの物理メモリである。記憶装置１２０は、複数の遠隔記憶ドライブをさらに含んでもよい。ＣＰＵ１０２が記憶装置１２０に記憶されたデータにアクセスするための時間長は、ＣＰＵ１０２がメモリ１０４でマルチレベルキャッシュ１１２にアクセスするためにかかる時間長に対して、より低速であってもよい。
【００１８】
いくつかの実施形態において、ＬＬＣ１１４は、ＧＰＵ１０４がレベル２キャッシュ１１６及びレベル１キャッシュ１１８にキャッシュされたデータに直接アクセスできないよう、レベル２キャッシュ１１６及びレベル１キャッシュ１１８をＧＰＵ１０４から隠しながら、ＣＰＵ１０２及びＧＰＵ１０４間で共有される。しかしながら、ＬＬＣ１１４は、レベル２キャッシュ１１６及びレベル１キャッシュ１１８に記憶されたデータの読み出し及び書き出しができる。そのことによって、ＧＰＵ１０４がレベル２キャッシュ１１６またはレベル１キャッシュ１１８にキャッシュされたデータを要求する場合、ＬＬＣ１１４は、ＧＰＵ１０４による処理のために、レベル２キャッシュ１１６及びレベル１キャッシュ１１８からデータを取り出すことができる。このように、ＬＬＣ１１４により、コンピューティングデバイス１００内のデータコヒーレンシが保証される。本明細書で用いられるように、コヒーレンシとは、ＣＰＵ１０２及びＧＰＵ１０４によってアクセスされたデータが同じである状態を指す。従って、ＣＰＵ１０２は、正確なデータをＧＰＵ１０４と共有することを目的として、ＬＬＣ１１４に対してデータがコヒーレントであることを保証することにより、記憶デバイス１２０からのデータが、ＬＬＣ１１４、レベル２キャッシュ１１６及びレベル１キャッシュ１１８において正確に反映されることを保証する。
【００１９】
さらに、複数の実施形態において、ＣＰＵ及びＧＰＵは、メモリのいずれのレベルにもアクセスすることができる。しかしながら、ＬＬＣ１１４が最新のデータを含む一方で、メモリの他の複数のレベルからのデータは陳腐化していてもよい。さらに、複数の実施形態において、ＣＰＵ及びＧＰＵは、共有仮想メモリを実行するべく、任意の相互アクセス可能な記憶場所を用いることができる。任意の相互アクセス可能な記憶場所は、限定されるものではないが、メモリデバイス１０４の任意の領域、記憶装置１２０の任意の領域、ネットワーク接続された記憶場所、サムドライブまたはこれらの任意の組み合わせを含んでもよい。
【００２０】
記憶装置１２０は、面１２２を、コンピューティングデバイス１００で実行されるように構成される任意の数のアプリケーション１２４とともに含む。面１２２は、デバイスドライバ１１０によって割り当てられる物理メモリの指定部分である。面は、面１２２内において物理メモリのコンテンツに実行される処理に基づいて、更新されてもよい。複数の実施形態において、アプリケーション１２４がＣＰＵ１０４によって実行される場合、アプリケーション１２４は、デバイスドライバ１１０によって面を割り当てるよう、要求してもよい。さらに、ＣＰＵ１０２上で実行されるアプリケーション１２４は、面１２２の求められるサイズ及び複数の特性を特定することにより、アプリケーション１２４によって要求されたメモリ割り当てに応じて、面１２２を構成してもよい。さらに、面割り当ては、例えば、コンピューティングデバイス１００のＣＰＵ１０２からの入力に応答して、実行されてもよい。さらに、複数の実施形態において、面は、ＬＬＣキャッシュ可能とマーク付けされる。ＬＬＣキャッシュ可能と指定された面１２２により、面１２２内の複数の位置からキャッシュされたデータは、ＬＬＣ１１４にキャッシュされ、そのことによって、ＣＰＵ１０２及びＧＰＵ１０４の両方によって、ＬＬＣにおいてアクセス可能であってもよい。
【００２１】
メモリ管理ユニット（ＭＭＵ）１２６は、面１２２内に記憶されたデータへのアクセスを管理するために用いられてもよい。ＭＭＵ１２６は、ＣＰＵ１０２及びＧＰＵ１０４の仮想アドレス空間を、アドレス空間の様々な複数のページに分割することができる。ＣＰＵ１０２及びＧＰＵ１０４は、各々が自己の複数の仮想アドレス空間を有する。仮想アドレス空間は、コンピューティングシステム内で実行される様々なアプリケーション１２４を、複数の仮想アドレスの具体的なサブセットに分離することにより、面１２２内で保持されるデータの保護を可能とする。複数の仮想アドレス空間の利用により、１のアプリケーション１２４は、他のアプリケーション１２４のデータにアクセスしない。従って、ＭＭＵ１２６は、ＣＰＵページテーブル１２８及びＧＰＵページテーブル１３０を含む。ＣＰＵページテーブルは、面１２２内の物理アドレス位置にマッピングされた、ＣＰＵの複数の仮想アドレスを含む。同様に、ＧＰＵページテーブルは、面１２２内の物理アドレス位置にマッピングされた、ＧＰＵの複数の仮想アドレスを含む。本明細書に記載されたメモリ共有プロシージャにおいて、ＣＰＵページテーブル１２８は、ＣＰＵ仮想アドレス空間の物理アドレス空間に対するマッピングを含んでもよい。物理アドレス空間は、面１２２内における複数の物理的位置に対応する。同様に、ＧＰＵページテーブル１３０は、ＧＰＵ仮想アドレス空間の物理アドレス空間に対するマッピングを含んでもよい。
【００２２】
複数の様々な実施形態において、ＣＰＵページテーブル１２８からの複数の仮想メモリアドレス及びＧＰＵページテーブル１３０からの複数のグラフィクス仮想メモリアドレスは、変換プロシージャを介して、面１２２の複数の物理メモリページにマッピングされる。変換プロシージャは、任意の複数の仮想メモリアドレスを、対応する複数の物理アドレスに変換するために用いられてもよい。例えば、変換プロシージャは、ページテーブル内の複数の仮想メモリアドレスをページテーブル内の複数の物理メモリアドレスに変換するための特定の変換テーブルに基づいて実行されうるページテーブルウォークを介して、実行されてもよい。さらに、複数の実施形態において、トランスレーションルックアサイドバッファは、ＣＰＵ及びＧＰＵの複数の仮想アドレスを、これらの個別の複数のページテーブル内における複数の物理アドレス空間に変換するために用いられてもよい。
【００２３】
変換プロシージャの実行後、面１２２は、ピニングされてもよい。面のピニングとは、複数の物理的位置及び対応する複数の物理アドレスが変化しないように、面を保護することを指す。したがって、面１２２のピニングにより、複数の仮想アドレス空間と複数の物理アドレス空間との間で、「確実な」マッピングが保証される。複数のアドレス空間の間における確実なマッピングは、面のピニング後に変化しないマッピングである。面がピニングされない場合、ページフォールトが生成される場合があり、すなわち、面の物理的位置がシフトするために、誤ったデータが処理される場合がある。
【００２４】
複数の実施形態において、アプリケーション１２４はＣＰＵ１０２上で実行されてもよく、データ処理などの複数のオペレーションを実行するべく、面１２２などの面を要求する。ＣＰＵ１０２は、複数のオペレーションをＧＰＵ１０４にハンドオフしてもよい。複数のページテーブルが面１２２にマッピングされたことから、ＧＰＵは、他のアドレス空間にデータをコピーすることなく面にアクセスすることにより、ＣＰＵ１０２によってオフロードされた複数のオペレーションを即座に実行開始することができる。ＣＰＵ１０２によって複数のオペレーションが完了した場合、ＧＰＵ１０４は、複数のオペレーションが完了したという信号をＣＰＵ１０２に送信してもよい。ＣＰＵ１０２は、次に、元のアドレス空間へデータをコピーして戻すことなく、データ処理を継続してもよい。
【００２５】
アプリケーション１２４に要求された複数のオペレーションがＧＰＵ１０４によって実行される場合、面１２２に対する複数の変更が生じてもよい。本明細書に記載されたメモリ共有プロシージャによれば、面１２２に対するそのような複数の変更は、ＣＰＵ１０２から完全に可視である。したがって、データは、ＧＰＵ１０４からＣＰＵ１０２へと、逆もまた同様にデータをコピーすることなく、ＧＰＵ１０４及びＣＰＵ１０２間で共有されてもよい。
【００２６】
ＣＰＵ１０２は、バス１０６を介して、コンピューティングデバイス１００を１または複数のＩ／Ｏデバイス１３４と接続するように適合される入出力（Ｉ／Ｏ）デバイスインターフェース１３２に接続されてもよい。Ｉ／Ｏデバイス１３４は、例えば、キーボード及びポインティングデバイスを含んでもよく、ポインティングデバイスは、特に、タッチパッドまたはタッチスクリーンを含んでもよい。Ｉ／Ｏデバイス１３４は、コンピューティングデバイス１００のビルトインコンポーネントであってもよく、または、コンピューティングデバイス１００に外部接続される複数のデバイスであってもよい。
【００２７】
ＣＰＵ１０２は、バス１０６を介して、コンピューティングデバイス１００をディスプレイデバイス１３８と接続するように適合されるディスプレイインターフェース１３６とさらにリンクしてもよい。ディスプレイデバイス１３８は、コンピューティングデバイス１００のビルトインコンポーネントであるディスプレイ画面を含んでもよい。ディスプレイデバイス１３８は、特に、コンピューティングデバイス１００に外部接続されるコンピュータモニタ、テレビまたはプロジェクタをさらに含んでもよい。
【００２８】
ネットワークインタフェースコントローラ（ＮＩＣ）１４０は、バス１０６を介して、コンピューティングデバイス１００をネットワーク１４２と接続するように適合されてもよい。ネットワーク１４２は、特に、広域ネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）またはインターネットであってもよい。
【００２９】
図１のブロック図は、コンピューティングデバイス１００が、図１に示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、コンピューティングデバイス１００は、特定の実装の詳細に応じて、図１に示されていない任意の数の追加的なコンポーネントを含んでもよい。
【００３０】
図２Ａ及び図２Ｂは、複数の実施形態に係るコンピューティングデバイス１００におけるＣＰＵ１０２及びＧＰＵ１０４間のメモリ共有のためのプロシージャを実装するために用いられてもよいユニファイドメモリアーキテクチャ２００の概略である。同様の数字が付けられた複数の項目は、図１に記載されたとおりである。ＵＭＡ２００は、例えば、コンピューティングデバイス１００のＣＰＵページテーブル１２８、ＧＰＵページテーブル１３０及び面１２２を含んでもよい。
【００３１】
ＵＭＡ２００によれば、ＣＰＵ１０２及びＧＰＵ１０４間で任意のタイプのデータコピーまたはデータ転送を行うことなく、ＣＰＵ１０２及びＧＰＵ１０４間で直接的なメモリ共有が行われてもよい。これは、ＣＰＵ１０２及びＧＰＵ１０４に面１２２を共有させることにより、実現されてもよい。上述のように、面１２２は、物理的記憶デバイスの一部であってもよい。面は、任意の数の物理メモリ位置２０２を含む。物理メモリ位置２０２は、ページングされたメモリフォーマットに構成されてもよく、ページは、面１２２内の物理メモリの固定長のブロックである。
【００３２】
ＣＰＵページテーブル１２８は、多数のＣＰＵ仮想メモリアドレス２０４を含んでもよく、ＧＰＵページテーブル１３０は、多数のグラフィクス仮想メモリアドレス２０６を含んでもよい。複数のグラフィクス仮想メモリアドレス２０６がグラフィクス仮想アドレス空間を形成する一方で、複数のＣＰＵ仮想メモリアドレス２０４は、ＣＰＵ仮想アドレス空間を形成する。各アドレス空間は、各ページテーブルの物理アドレスにマッピングされる。したがって、複数のＣＰＵ仮想メモリアドレス２０４及び複数のグラフィクス仮想メモリアドレス２０６は両方とも、複数の物理アドレス２０８の同じ群に対するマッピングを、ＣＰＵページテーブル１２８及びＧＰＵページテーブル１３０内でそれぞれ行う。
【００３３】
複数の物理アドレス２０８により、ＣＰＵ１０２及びＧＰＵ１０４（図１）は、面１２２内の複数の物理的位置２０２に記憶されたデータを処理することができる。複数の様々な実施形態において、面１２２は、アプリケーション１２４（図１）などのアプリケーションによってアクセスされた特定の複数のＣＰＵ仮想アドレス２０４に基づいて、割り当てられる。一度、面１２２が割り当てられると、各物理アドレス２０８は、図２Ａ及び図２Ｂに示すようにＣＰＵページテーブル１２８内の対応するＣＰＵ仮想アドレス２０４にマッピングされる。ＧＰＵページテーブル１３０内の複数のグラフィクス仮想メモリアドレス２０６は、複数のＣＰＵ仮想アドレス及び複数のＧＰＵ仮想メモリアドレスが複数の物理アドレス２０８の同じ群にマッピングされるように、ＣＰＵページテーブル１２８と同期してもよい。複数の物理アドレス２０８は、面１２２内の複数の物理的位置２０２に対応する。従って、面１２２は、ＣＰＵ１０２及びＧＰＵ１０４間で直接共有されてもよい。複数の実施形態において、ＧＰＵ１０４が複数の物理的位置２０２のいずれかに位置するデータを修正する場合は、複数の変更は、データコピーまたはデータ整列をいずれも行うことなく、面１２２を介して自動的にＣＰＵ１０２から可視である。
【００３４】
図２Ａ及び図２Ｂの概略は、ＵＭＡ２００が図２Ａ及び図２Ｂに示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、ＵＭＡ２００は、特定の実装の詳細に応じて、図２Ａ及び図２Ｂに示されていない任意の数の追加的なコンポーネントを含んでもよい。
【００３５】
図３は、複数の実施形態に係るコンピューティングデバイスのＣＰＵとＧＰＵとの間におけるメモリ共有のための方法３００を示す処理フロー図である。複数の様々な実施形態において、方法３００は、ＣＰＵメモリからＧＰＵメモリへデータをコピーすることなく、ＣＰＵとＧＰＵとの間でメモリを共有するために用いられる。
【００３６】
いくつかの実施形態において、方法３００は、コンピューティングデバイス１００などのコンピューティングデバイス上で実行されてもよく、ＣＰＵ１０２及びＧＰＵ１０４は、バス１０６によって接続される。複数の他の実施形態において、ＣＰＵ１０２及びＧＰＵ１０４は、図２Ａ及び図２Ｂに関して説明されたＵＭＡ２００などのＵＭＡに含まれてもよい。さらに、方法３００は、コンピューティングデバイス１００のデバイスドライバ１２６などのコンピューティングデバイスのドライバによって実行されてもよい。
【００３７】
方法は、始めにブロック３０２において、物理メモリ内で面の割り当てを行う。複数の実施形態において、面は、コンピューティングデバイスのＣＰＵ上で実行されるアプリケーションからの入力に応答して、コンピューティングデバイスの物理メモリ内で割り当てられてもよい。さらに、複数の実施形態において、面は、デバイスドライバによって割り当てられてもよい。アプリケーションまたはデバイスドライバは、ＣＰＵ仮想アドレスを用いて、ＣＰＵから面にアクセスしてもよい。複数の実施形態において、複数のＣＰＵ仮想アドレスは、コンピューティングデバイスのオペレーティングシステムによって、アプリケーションまたはデバイスドライバに付与される。
【００３８】
ブロック３０４において、面内の複数の物理的位置に対応する複数の物理アドレスは、複数のＣＰＵ仮想アドレスにマッピングされる。複数のＣＰＵ仮想メモリアドレス及び複数の物理アドレス間のマッピングは、ＣＰＵページテーブル内に含まれる。複数の物理メモリページの複数の仮想メモリアドレスに対するマッピングは、システムメモリ内の対応する複数の物理メモリページを決定するべく、複数のＣＰＵ仮想アドレスの変換を含んでもよい。複数のＣＰＵ仮想アドレスが複数の物理アドレスに変換された場合、変換処理中に発見された複数のＣＰＵ仮想アドレス及び複数の物理アドレス間の複数の関連は、ロックされる。複数の関連をロックすることにより、ＣＰＵページテーブルにおける複数の物理アドレスに対応する面の複数の物理的位置は、キャッシュにページングされてもよい。面の複数の物理アドレスはデバイスドライバによる変更が防止されるため、複数のページは、複数の関連をロックしながら、キャッシュに残る。
【００３９】
ブロック３０６において、複数のＧＰＵ仮想メモリアドレスは、面内の複数の物理的位置にマッピングされる。複数の実施形態において、面は、ＬＬＣキャッシュ可能と指定される。そのような指定により、面の複数の物理的位置が、ＣＰＵ及びＧＰＵに共有されるＬＬＣにキャッシュされることが保証される。アプリケーションが用いる複数のグラフィクス仮想メモリアドレスは、ＣＰＵの複数の仮想アドレスにマッピングされる同じ複数の物理アドレスに変換されてもよい。複数の実施形態において、デバイスドライバは、ＧＰＵページテーブル内の複数の物理アドレスに対する複数のグラフィクス仮想メモリアドレスのマッピングを更新してもよい。
【００４０】
複数のＧＰＵ仮想アドレスに対する面のマッピングは、面のピニングを含んでもよい。面のピニングにより、複数のＧＰＵ仮想アドレスと面との間のマッピングが変更されることを防止する。したがって、ＧＰＵ仮想メモリは、物理メモリを変更することなく、同じ物理メモリに対応する。例えば、オペレーティングシステムは、自己のメモリ管理の一部として、割り当てられた複数の物理メモリ位置を変更してもよい。しかしながら、面が一度ピニングされると、オペレーティングシステムが面の複数の物理メモリ位置を変更することは防止される。
【００４１】
図４は、複数の実施形態に係るコンピューティングデバイスのＣＰＵとＧＰＵとの間における共有メモリを処理するための方法４００を示す処理フロー図である。
【００４２】
ブロック４０２において、オペレーションは、ＣＰＵからＧＰＵへとオフロードされてもよい。オペレーションは、アプリケーション１２４（図１）などのアプリケーションによる命令に従い、ＧＰＵへとオフロードされてもよい。さらに、ＣＰＵまたはＧＰＵの制御に用いられる任意のアプリケーションプログラミングインタフェース（ＡＰＩ）は、ＣＰＵからＧＰＵへのオペレーションのオフロードを命令するために用いられてもよい。複数の実施形態において、ＣＰＵからＧＰＵへのオペレーションのオフロードに先立ち、ＣＰＵによる処理中の面内に位置するデータは、ＬＬＣとコヒーレントにされてもよい。
【００４３】
ブロック４０４において、ＧＰＵは、オフロードされたオペレーションの処理を開始してもよい。ＧＰＵは、オペレーションを実行するべく、ＬＬＣ及び面内のデータにアクセスする。ＧＰＵが、ＬＬＣにはなく、ＣＰＵの他のいくつかのキャッシュにあるデータを要求した場合、ＬＬＣは、ＧＰＵによる処理のためにそのデータを他のキャッシュから取り出してもよい。
【００４４】
ブロック４０６において、ＧＰＵは、オペレーションが完了したという信号を送信する。完了信号は、ホストに送信されてもよい。複数の実施形態において、オペレーションが完了した場合、デバイスドライバは、ＧＰＵ及びＣＰＵ間のオペレーションを同期させる。さらに、複数の実施形態において、完了信号は、例えば、メールボックスの書き込みまたは割り込みであってもよい。完了信号は、ＧＰＵがいくつかの計算またはグラフィクスオペレーションを実行した結果、面内のデータが変更されたことを示してもよい。完了後、ＧＰＵの出力は、ＣＰＵによって処理されてもよい。複数の様々な実施形態において、ＧＰＵが、任意の面の複数の物理的位置に対する読み出しまたは書き出しによって面を処理する場合、処理は、ＧＰＵの複数の内部バッファ及び複数のキャッシュにおいて行われてもよい。従って、ＧＰＵの複数の内部バッファ及び複数のキャッシュ内のデータは、ＧＰＵの処理完了後、ＬＬＣとコヒーレントになる。
【００４５】
図３及び図４の処理フロー図は、方法３００および４００の複数のブロックが任意の具体的な順序で実行されるものであり、または複数のブロックの全てがあらゆる場合に含まれるものであると示すことを意図するものではない。さらに、特定の実装の詳細に応じて、任意の数の追加的なブロックが、方法３００および４００内に含まれてもよい。さらに、本明細書に記載された方法がＧＰＵを含む一方で、メモリは、他のＣＰＵまたはダイレクトメモリアクセス（ＤＭＡ）コントローラなどの任意のＩ／Ｏデバイスの間で共有されてもよい。
【００４６】
図５は、複数の実施形態に係るコンピューティングデバイスのＣＰＵとＧＰＵとの間におけるメモリ共有のために、コードを記憶する有形の非一時的コンピュータ可読媒体５００を示すブロック図である。有形の非一時的コンピュータ可読媒体５００は、コンピュータバス５０４を通してプロセッサ５０２によってアクセスされてもよい。さらに、有形の非一時的コンピュータ可読媒体５００は、本明細書に記載された方法の実行をプロセッサ５０２に命令するように構成されるコードを含んでもよい。
【００４７】
本明細書で説明された様々な複数のソフトウェアコンポーネントは、図５に示すように、有形の非一時的コンピュータ可読媒体５００記憶されてもよい。例えば、面割り当てモジュール５０６は、コンピューティングデバイスのメモリ内に多数の複数の物理メモリページを含む面を割り当てまたは生成するように構成されてもよい。マッピングモジュール５０８は、面内の複数の物理的位置をＣＰＵアドレステーブル及びＧＰＵアドレステーブル内の複数の仮想メモリアドレスにマッピングするように構成されてもよい。さらに、ピニングモジュール５１０は、面内の複数の物理的位置の変更が防止されるように、面をピニングするように構成されてもよい。
【００４８】
図５のブロック図は、有形の非一時的コンピュータ可読媒体５００が、図５に示す複数のコンポーネントの全てを含むものであると示すことを意図するものではない。さらに、有形の非一時的コンピュータ可読媒体５００は、特定の実装の詳細に応じて、図５に示されていない任意の数の追加的なコンポーネントを含んでもよい。
【００４９】
複数の実施形態において、ＣＰＵは、ＣＰＵアドレス空間とＧＰＵアドレス空間との間でデータを整理する必要はない。さらに、ＣＰＵは、複数の処理コア間で処理が競合することを防止するように、ＣＰＵがＧＰＵによる処理を求める具体的なデータ群について、他の複数の処理コアがいずれも処理を行わないことを保証する責任を負わない。
【００５０】
図６は、共有物理メモリを実装するための例示的なシステム６００のブロック図である。同様の数字が付けられた項目は、図１、図２Ａ及び図２Ｂに関して記載されたとおりである。いくつかの実施形態において、システム６００は、メディアシステムである。さらに、システム６００は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えばスマートフォン、スマートタブレットまたはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイスなどに組み込まれてもよい。
【００５１】
複数の様々な実施形態において、システム６００は、ディスプレイ６０４と結合されるプラットフォーム６０２を備える。プラットフォーム６０２は、コンテンツサービスデバイス６０６またはコンテンツ配信デバイス６０８、もしくは他の同様の複数のコンテンツソースなどのコンテンツデバイスからコンテンツを受信してもよい。１または複数の複数のナビゲーション機能を含むナビゲーションコントローラ６１０は、例えば、プラットフォーム６０２及び／またはディスプレイ６０４と情報をやりとりするために用いられてもよい。これらの複数のコンポーネントのそれぞれは、以下、より詳細に記載される。
【００５２】
プラットフォーム６０２は、チップセット６１２、中央処理装置（ＣＰＵ）１０２、メモリデバイス１０８、記憶デバイス１２０、グラフィクスサブシステム６１４、アプリケーション１２４及び無線装置６１６の任意の組み合わせを含んでもよい。チップセット６１２は、ＣＰＵ１０２、メモリデバイス１０８、記憶デバイス１２０、グラフィクスサブシステム６１４、アプリケーション１２４及び無線装置６１６の間での相互通信を提供してもよい。例えば、チップセット６１２は、記憶デバイス１２０との相互通信を提供可能な記憶アダプタ（図示されていない）を含んでもよい。
【００５３】
ＣＰＵ１０２は、複合命令セットコンピュータ（ＣＩＳＣ）または縮小命令セットコンピュータ（ＲＩＳＣ）の複数のプロセッサ、ｘ８６命令セットと互換性のある複数のプロセッサ、マルチコアまたは任意の他のマイクロプロセッサもしくは中央処理装置（ＣＰＵ）として実装されてもよい。いくつかの実施形態において、ＣＰＵ１０２は、デュアルコアプロセッサ、デュアルコアモバイルプロセッサなどを含む。
【００５４】
メモリデバイス１０８は、限定されるものではないが、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）などの揮発性メモリデバイスとして実装されてもよい。記憶デバイス１２０は、限定されるものではないが、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、内部記憶デバイス、外付け記憶デバイス、フラッシュメモリ、バッテリバックアップＳＤＲＡＭ（シンクロナスＤＲＡＭ）及び／またはネットワークアクセス可能な記憶デバイスなどの不揮発性記憶デバイスとして実装されてもよい。いくつかの実施形態において、記憶デバイス１２０は、例えば、複数のハードドライブが含まれる場合に、重要なデジタルメディアのために記憶性能強化型の保護を高める技術含む。
【００５５】
グラフィクスサブシステム６１４は、表示のために、静止画または動画など複数の画像処理を実行してもよい。グラフィクスサブシステム６１４は、例えば、ＧＰＵ１０４、したがってビジュアル処理装置（ＶＰＵ）などのグラフィクス処理装置（ＧＰＵ）を含んでもよい。アナログまたはデジタルインターフェースは、グラフィクスサブシステム６１４及びディスプレイ６０４を通信可能に結合するために用いられてもよい。例えば、インターフェースは、高精細度マルチメディアインターフェース、ＤｉｓｐｌａｙＰｏｒｔ、ワイヤレスＨＤＭＩ（登録商標）及び／またはワイヤレスＨＤ準拠の複数の技術のいずれかであってもよい。グラフィクスサブシステム６１４は、ＣＰＵ１０２またはチップセット６１２と一体化されてもよい。代替的に、グラフィクスサブシステム６１４は、チップセット６１２と通信可能に結合されるスタンドアロンのカードであってもよい。
【００５６】
本明細書に記載された複数のグラフィクス及び／またはビデオ処理技術は、様々な複数のハードウェアキテクチャで実装されてもよい。例えば、グラフィクス及び／またはビデオの機能は、チップセット６１２内で一体化されてもよい。代替的に、別個のグラフィクス及び／またはビデオプロセッサが用いられてもよい。さらに他の実施形態として、マルチコアプロセッサを含む一般的な汎用プロセッサによって、複数のグラフィクス及び／またはビデオ機能が実装されてもよい。さらなる実施形態において、複数の機能が家電機器に実装されてもよい。
【００５７】
無線装置６１６は、様々な複数の無線通信技術を用いて複数の信号を送受信可能な１または複数の無線装置を含んでもよい。そのような複数の技術は、１または複数の無線ネットワークを通じた複数の通信を伴ってもよい。例示的な複数の無線ネットワークは、複数の無線ローカルエリアネットワーク（ＷＬＡＮ）、複数の無線パーソナルエリアネットワーク（ＷＰＡＮ）、無線メトロポリタンエリアネットワーク（ＷＭＡＮ）、複数のセルラーネットワーク、複数の衛星ネットワークなどを含む。そのような複数のネットワークを通じた通信において、無線装置６１６は、１または複数の適用可能な規格の任意のバージョンに従って、動作してもよい。
【００５８】
ディスプレイ６０４は、任意のテレビ型モニタまたはディスプレイを含んでもよい。例えば、ディスプレイ６０４は、コンピュータディスプレイ画面、タッチスクリーンディスプレイ、ビデオモニタ、テレビなどを含んでもよい。ディスプレイ６０４は、デジタル及び／またはアナログであってもよい。いくつかの実施形態において、ディスプレイ６０４は、ホログラフィックディスプレイである。また、ディスプレイ６０４は、視覚的な映像を受信し得る透明な面であってもよい。そのような複数の映像は、情報、複数の画像、複数のオブジェクトなどを様々な形で伝えてもよい。例えば、そのような複数の映像は、モバイル拡張現実（ＭＡＲ）アプリケーション用の視覚的なオーバーレイであってもよい。１または複数のアプリケーション１２４の制御下では、プラットフォーム６０２は、ユーザインタフェース６１８をディスプレイ６０４上に表示する。
【００５９】
コンテンツサービスデバイス６０６は、任意の国内的、国際的または独立計のサービスによって運営されてもよく、及び、したがって、例えば、インターネットを介してプラットフォーム６０２にアクセス可能であってもよい。コンテンツサービスデバイス６０６は、プラットフォーム６０２及び／またはディスプレイ６０４と結合されてもよい。プラットフォーム６０２及び／またはコンテンツサービスデバイス６０６は、メディア情報をネットワーク１４２との間で通信（例えば送信及び／または受信）するべく、ネットワーク１４２と結合されてもよい。コンテンツ配信デバイス６０８もまた、プラットフォーム６０２及び／またはディスプレイ６０４と結合されてもよい。
【００６０】
コンテンツサービスデバイス６０６は、ケーブルテレビボックス、パーソナルコンピュータ、ネットワーク、電話またはデジタル情報を配信可能なインターネット対応デバイスを含んでもよい。さらに、コンテンツサービスデバイス６０６は、複数のコンテンツプロバイダとプラットフォーム６０２またはディスプレイ６０４との間で、ネットワーク１４２を介してまたは直接的に、一方向または双方向へのコンテンツの通信が可能な任意の他の同様の複数のデバイスを含んでもよい。コンテンツは、ネットワーク１４２を介して、システム６００の複数のコンポーネント及びコンテンツプロバイダのいずれか１つ及びそれに対して、一方向及び／または双方向で通信されてもよいことが理解されよう。コンテンツの複数の例は、例えば、ビデオ、音楽、医療及びゲーム情報などを含む任意のメディア情報を含んでもよい。
【００６１】
コンテンツサービスデバイス６０６は、メディア情報、デジタル情報、他のコンテンツを含むケーブルテレビプログラムなどのコンテンツを受信してもよい。コンテンツプロバイダの複数の例は、特に、任意のケーブルまたは衛星テレビもしくは無線またはインターネットの複数のコンテンツプロバイダを含んでもよい。
【００６２】
いくつかの実施形態において、プラットフォーム６０２は、１または複数の複数のナビゲーション機能を含むナビゲーションコントローラ６１０から、複数の制御信号を受信する。ナビゲーションコントローラ６１０の複数のナビゲーション機能は、例えば、ユーザインタフェース６１８と情報をやりとりするために用いられてもよい。ナビゲーションコントローラ６１０は、ユーザが空間的な（例えば連続的かつ多次元の）データをコンピュータに入力できるようなコンピュータハードウェア要素（具体的には、ヒューマンインターフェースデバイス）となり得るポインティングデバイスであってもよい。グラフィカルユーザインタフェース（ＧＵＩ）などの多数のシステム、ならびに複数のテレビ及び複数のモニタによれば、ユーザは、複数の身体的なジェスチャを用いて、データの制御及びコンピュータまたはテレビへの提供を行うことができる。複数の身体的なジェスチャは、限定されるわけではないが、複数の表情、複数の顔の動き、様々な四肢の動き、身体の動き、ボディランゲージまたはこれらの任意の組み合わせを含む。そのような複数の身体的なジェスチャは、認識されるとともに、複数のコマンドまたは複数の命令に変換することができる。
【００６３】
ナビゲーションコントローラ６１０の複数のナビゲーション機能の動きは、ポインタ、カーソル、焦点リングまたはディスプレイ６０４上に表示される他の複数の視覚的なインジケータの動きによって、ディスプレイ６０４上に反映されてもよい。例えば、アプリケーション１２４の制御下で、ナビゲーションコントローラ６１０に位置する複数のナビゲーション機能は、ユーザインタフェース６１８上に表示される複数の仮想ナビゲーション機能にマッピングされてもよい。いくつかの実施形態において、ナビゲーションコントローラ６１０は、別個のコンポーネントとすることはできないが、むしろ、プラットフォーム６０２及び／またはディスプレイ６０４と一体化されてもよい。
【００６４】
システム６００は、例えば、可能な場合には、初期の起動後、ユーザがボタンのタッチによりプラットフォーム６０２を即座にオン及びオフすることができる技術を含む複数のドライバ（図示されていない）を含んでもよい。プログラムロジックにより、プラットフォーム６０２は、プラットフォームが「オフ」にされた場合、複数のメディアアダプタまたは他のコンテンツサービスデバイス６０６もしくはコンテンツ配信デバイス６０８に、コンテンツをストリーミングしてもよい。さらに、チップセット６１２は、例えば、５．１サラウンドサウンドオーディオ及び／または高精細度７．１サラウンドサウンドオーディオのハードウェア及び／またはソフトウェアサポートを含んでもよい。複数のドライバは、複数の一体化グラフィクスプラットフォーム用のグラフィクスドライバを含んでもよい。いくつかの実施形態において、グラフィクスドライバは、周辺要素高速相互接続（peripheral component interconnect express）（ＰＣＩｅ）グラフィクスカードを含む。
【００６５】
複数の様々な実施形態において、システム６００に示す複数のコンポーネントの任意の１つまたは複数は、一体化されてもよい。例えば、プラットフォーム６０２及びコンテンツサービスデバイス６０６は、一体化されてもよく、プラットフォーム６０２及びコンテンツ配信デバイス６０８は、一体化されてもよく、あるいは、プラットフォーム６０２、コンテンツサービスデバイス６０６及びコンテンツ配信デバイス６０８は、一体化されてもよい。いくつかの実施形態において、プラットフォーム６０２及びディスプレイ６０４は、一体的なユニットである。例えば、ディスプレイ６０４及びコンテンツサービスデバイス６０６は、一体化されてもよく、あるいは、ディスプレイ６０４及びコンテンツ配信デバイス６０８は、一体化されてもよい。
【００６６】
システム６００は、無線システムまたは有線システムとして実装されてもよい。無線システムとして実装された場合、システム６００は、無線共有メディアを通じた通信に適した、１または複数のアンテナ、送信機、受信機、トランシーバ、増幅器、フィルタ、制御ロジックなどのコンポーネント及びインターフェースを含んでもよい。無線共有メディアの例は、ＲＦスペクトルなどの無線スペクトルの一部を含んでもよい。有線システムとして実装された場合、システム６００は、有線通信媒体を通じた通信に適した、複数の入出力（Ｉ／Ｏ）アダプタ、対応する有線通信媒体にＩ／Ｏアダプタを接続する複数の物理コネクタ、ネットワークインタフェースカード（ＮＩＣ）、ディスクコントローラ、ビデオコントローラ、オーディオコントローラなどの複数のコンポーネント及び複数のインターフェースを含んでもよい。有線通信媒体の複数の例は、ワイヤ、ケーブル、金属リード線、プリント回路基板（ＰＣＢ）、バックプレーン、スイッチファブリック、半導体材料、ツイストペアワイヤ、同軸ケーブル、光ファイバなどを含んでもよい。
【００６７】
プラットフォーム６０２は、情報を通信するべく、１または複数のロジックチャネルまたは物理チャネルを確立してもよい。情報は、メディア情報及び制御情報を含んでもよい。メディア情報は、ユーザ向けコンテンツを表す任意のデータを指してもよい。コンテンツ複数の例は、例えば、音声会話、ビデオ会議、ストリーミング配信ビデオ、電子メール（ｅメール）メッセージ、ボイスメールメッセージ、英数字、複数の記号、グラフィクス、複数の画像、ビデオ、テキスト等からのデータを含んでもよい。音声会話からのデータは、例えば、スピーチ情報、静寂期間、背後の雑音、快適雑音、音調等であってもよい。制御情報は、自動化システム向けの複数のコマンド、複数の命令または複数の制御用語を表す任意のデータを指してもよい。例えば、制御情報は、システムを通じたメディア情報のルーティングを行うため、またはノードに対し、メディア情報を予め定められた態様で処理することを命令するために用いられてもよい。複数の実施形態は、しかしながら、図６に記載または示された複数の要素または内容に限定されるものではない。
【００６８】
図７は、図６のシステム６００が具現され得る小型フォームファクタデバイス７００の概略である。同様の数字が付けられた項目は、図６に関して記載されたとおりである。いくつかの実施形態において、例えば、デバイス７００は、複数の無線機能を有するモバイルコンピューティングデバイスとして実装される。モバイルコンピューティングデバイスは、例えば、処理システム及び１または複数のバッテリなどのモバイル電源または供給源を有する任意のデバイスを指してもよい。
【００６９】
上述のように、モバイルコンピューティングデバイスの複数の例は、パーソナルコンピュータ（ＰＣ）、ラップトップコンピュータ、ウルトララップトップコンピュータ、タブレット、タッチパッド、ポータブルコンピュータ、ハンドヘルドコンピュータ、パームトップコンピュータ、パーソナルデジタルアシスタント（ＰＤＡ）、携帯電話、携帯電話／ＰＤＡの組み合わせ、テレビ、スマートデバイス（例えばスマートフォン、スマートタブレットまたはスマートテレビ）、モバイルインターネットデバイス（ＭＩＤ）、メッセージングデバイス、データ通信デバイス等を含んでもよい。
【００７０】
モバイルコンピューティングデバイスの例は、手首用コンピュータ、指用コンピュータ、リング型コンピュータ、眼鏡型コンピュータ、ベルトクリップ型コンピュータ、アームバンド型コンピュータ、靴型コンピュータ、衣服型コンピュータまたは任意の他の適したタイプのウェアラブルコンピュータなどの人が着用するよう構成されたコンピュータをさらに含んでもよい。例えば、モバイルコンピューティングデバイスは、複数のコンピュータアプリケーションだけではなく複数の音声通信及び／または複数のデータ通信を実行可能なスマートフォンとして実装されてもよい。いくつかの実施形態は、スマートフォンとして実装されたモバイルコンピューティングデバイスを例として記載されてもよいが、他の複数の実施形態は、他の複数のワイヤレスモバイルコンピューティングデバイスを同様に用いて実装されてもよいことを理解されたい。
【００７１】
図７に示すように、デバイス７００は、ハウジング７０２、ディスプレイ７０４、入出力（Ｉ／Ｏ）デバイス７０６及びアンテナ７０８を含んでもよい。デバイス７００は、複数のナビゲーション機能７１０をさらに含んでもよい。ディスプレイ７０４は、モバイルコンピューティングデバイスに適した情報を表示するために、任意の適切なディスプレイユニットを含んでもよい。Ｉ／Ｏデバイス７０６は、モバイルコンピューティングデバイスに情報を入力するために、任意の適切なＩ／Ｏデバイスを含んでもよい。例えば、Ｉ／Ｏデバイス７０６は、英数字キーボード、テンキーパッド、タッチパッド、複数の入力キー、複数のボタン、複数のスイッチ、複数のロッカースイッチ、複数のマイク、複数のスピーカ、音声認識デバイスおよびソフトウェアなどを含んでもよい。情報は、さらにマイクを用いて、デバイス７００に入力されてもよい。そのような情報は、音声認識デバイスによりデジタル化されてもよい。
【実施例１】
【００７２】
コンピューティングデバイスの中央処理装置（ＣＰＵ）と入出力（Ｉ／Ｏ）デバイスとの間におけるメモリ共有のための方法が、本明細書に記載される。方法は、物理メモリ内における面の割り当てを含む。方法は、ＣＰＵページテーブル内の複数の仮想メモリアドレスに対する、面のマッピングを含む。方法は、面に基づく、Ｉ／Ｏデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対する、面のマッピングをさらに含む。方法は、面のピニングをさらに含む。
【００７３】
メモリは、ＣＰＵメモリからＩ／Ｏデバイスメモリに対してデータをコピーすることなく、ＣＰＵとＩ／Ｏデバイスとの間で面を介して共有されてもよい。面は、コンピューティングデバイスのＣＰＵ上で実行されるアプリケーションからの入力に応答して、割り当てられてもよい。さらに、方法は、コンピューティングデバイスのドライバにより実行されてもよい。
【００７４】
ＣＰＵのキャッシュ及びＩ／Ｏデバイスからのデータは、ＣＰＵとＩ／Ｏデバイスとの間で共有されるラストレベルキャッシュ（ＬＬＣ）とコヒーレントであってもよい。オペレーションは、ＣＰＵからＩ／Ｏデバイスに対してオフロードされてもよく、そのオペレーションは、Ｉ／Ｏデバイス内で実行されてもよい。完了信号は、ＣＰＵに送信されてもよく、完了信号は、Ｉ／Ｏデバイスがいくつかの計算を実行した結果、面内のデータが変更されたという指標を含む。さらに、デバイスドライバは、ＣＰＵとＩ／Ｏデバイスとの間で、データの処理を同期させてもよい。
【実施例２】
【００７５】
コンピューティングデバイスが、本明細書に記載される。コンピューティングデバイスは、記憶された複数の命令を実行するように構成される中央処理装置（ＣＰＵ）と、複数の命令を記憶する記憶デバイスとを含む。記憶デバイスは、ＣＰＵにより実行された場合に、物理メモリ内で面を割り当てるように構成されるプロセッサ実行可能コードを含む。コンピューティングデバイスは、グラフィクス処理装置（ＧＰＵ）及びＧＰＵページテーブルをさらに含む。面は、ＣＰＵページテーブル内の複数の仮想メモリアドレスにマッピングされてもよい。面は、ＧＰＵページテーブル内の複数の仮想メモリアドレスに対して、さらにマッピングされてもよい。コンピューティングデバイスは、面をピニングしてもよい。
【００７６】
物理メモリは、ＣＰＵメモリからＧＰＵメモリに対してデータをコピーすることなく、ＣＰＵとＧＰＵとの間で共有されてもよい。さらに、ＣＰＵ及びＧＰＵは、コンピューティングデバイス内の同じダイに位置する。ＣＰＵ及びＧＰＵは、ラストレベルキャッシュ（ＬＬＣ）を共有してもよく、ＬＬＣは、ＣＰＵまたはＧＰＵの任意のキャッシュからデータを取り出すことができる。ＣＰＵ及びＧＰＵは、ユニファイドメモリアーキテクチャ（ＵＭＡ）を含んでもよい。
【００７７】
プロセッサ実行可能コードは、コンピューティングデバイスのＣＰＵ上で実行されるアプリケーションからの入力に応答して、面を割り当てるように構成されてもよい。ＣＰＵページテーブル及びＧＰＵページテーブルにおける複数の仮想メモリアドレスは、複数の仮想アドレスを複数の物理アドレスに変換することにより、面内の複数の物理的位置にマッピングされてもよい。ドライバは、プロセッサ実行可能コードの実行を開始するように構成されてもよい。さらに、コンピューティングデバイスは、無線装置及びディスプレイを含んでもよく、無線装置及びディスプレイは、少なくとも中央処理装置と通信可能に結合されてもよい。
【実施例３】
【００７８】
内部に記憶された複数の命令を有する少なくとも１つの非一時的機械可読媒体が、本明細書に記載される。コンピューティングデバイス上で実行されたことに応答して、複数の命令により、コンピューティングデバイスは、物理メモリ内で面を生成する。複数の命令により、コンピューティングデバイスはさらに、多数の複数のＣＰＵ仮想メモリアドレスに対して面をマッピングするとともに、多数の複数のＧＰＵ仮想メモリアドレスに対して面をマッピングする。面は、さらにピニングされてもよい。
【００７９】
物理メモリは、ＣＰＵメモリからＧＰＵメモリに対してデータをコピーすることなく、ＣＰＵとＧＰＵとの間で共有されてもよい。さらに、複数の命令により、ＣＰＵ及びＧＰＵのキャッシュからのデータは、ラストレベルキャッシュ（ＬＬＣ）とコヒーレントであってもよい。さらに、複数の命令により、コンピューティングデバイスは、コンピューティングデバイスのＣＰＵ上で実行されるアプリケーションからの入力に応答して、面をさらに割り当ててもよい。
【００８０】
前述された複数の例における詳細は、１または複数の複数の実施形態のいずれかの部分で用いられてもよいことが理解されよう。例えば、上述したコンピューティングデバイスの全てのオプションの機能は、本明細書に記載された方法またはコンピュータ可読媒体のいずれかに関してさらに実装されてもよい。さらに、複数のフロー図及び／または複数の状態図が、複数の実施形態を説明するために本明細書において用いられてもよいが、複数の本発明は、これらの複数の図または対応する本明細書における複数の記載に限定されるものではない。例えば、フローは、示されたボックスまたは状態の各々を通して動く必要もなければ、本明細書に示されかつ記載されたものと正確に同じ順序である必要もない。
【００８１】
複数の本発明は、本明細書に列挙された具体的な複数の詳細に制限されるものではない。実際、本開示を利用する当業者によれば、上述の記載及び複数の図面からの多くの他のバリエーションが、複数の本発明の範囲内で生じ得ることを理解するであろう。従って、任意の修正を含む以下の特許請求の範囲によって、複数の本発明の範囲が画定される。
本実施形態の例を下記の各項目として示す。
［項目１］
コンピューティングデバイスの中央処理装置（ＣＰＵ）と入出力（Ｉ／Ｏ）デバイスとの間におけるメモリ共有のための方法であって、
物理メモリ内で面を割り当てる段階と、
ＣＰＵページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングする段階と、
Ｉ／Ｏデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階とを備える、方法。
［項目２］
Ｉ／Ｏデバイスページテーブル内の複数のグラフィクス仮想メモリアドレスに対して前記面をマッピングする段階は、前記面のピニングを含む、項目１に記載の方法。
［項目３］
ＣＰＵメモリからＩ／Ｏデバイスメモリに対してデータをコピーすることなく、前記ＣＰＵと前記Ｉ／Ｏデバイスとの間で、前記面を介して、物理メモリを共有する段階を備える、項目１または２に記載の方法。
［項目４］
前記コンピューティングデバイスの前記ＣＰＵ上で実行されるアプリケーションからの入力に応答して、前記面を割り当てる段階を備える、項目１から３のいずれか１項に記載の方法。
［項目５］
前記方法は、前記コンピューティングデバイスのドライバにより実行される、項目１から４のいずれか１項に記載の方法。
［項目６］
前記ＣＰＵのキャッシュ及び前記Ｉ／Ｏデバイスのキャッシュからのデータが、前記ＣＰＵと前記Ｉ／Ｏデバイスとの間で共有されるラストレベルキャッシュ（ＬＬＣ）とコヒーレントであることを確保する段階を備える、項目１から５のいずれか１項に記載の方法。
［項目７］
前記ＣＰＵから前記Ｉ／Ｏデバイスに対して、オペレーションをオフロードする段階と、
前記Ｉ／Ｏデバイス内で前記オペレーションを実行する段階と、
前記ＣＰＵに完了信号を送信する段階とを備え、
前記完了信号は、前記Ｉ／Ｏデバイスがいくつかの計算を実行した結果、前記面内のデータが変更されたという指標を備える、項目１から６のいずれか１項に記載の方法。
［項目８］
デバイスドライバは、前記ＣＰＵと前記Ｉ／Ｏデバイスとの間でデータの前記処理を同期させる、項目１から７のいずれか１項に記載の方法。
［項目９］
前記面内で対応する複数の物理的位置を決定するべく、前記複数のグラフィクス仮想メモリアドレスのいずれかまたは前記複数の仮想メモリアドレスのいずれか、もしくは両方を変換する段階を備える、項目１から８のいずれか１項に記載の方法。
［項目１０］
記憶された複数の命令を実行する中央処理装置（ＣＰＵ）と、
グラフィクス処理装置（ＧＰＵ）及びＧＰＵページテーブルと、
複数の命令を記憶する記憶デバイスとを備え、
前記記憶デバイスは、プロセッサ実行可能コードを備え、前記プロセッサ実行可能コードは、前記ＣＰＵに実行された場合に、
物理メモリ内における面の割り当てと、
ＣＰＵページテーブル内の複数の仮想メモリアドレスに対する前記面のマッピングと、
前記ＧＰＵページテーブル内の複数の仮想メモリアドレスに対する前記面のマッピングとを行う、コンピューティングデバイス。
［項目１１］
前記プロセッサ実行可能コードは、前記面をピニングする、項目１０に記載のコンピューティングデバイス。
［項目１２］
前記プロセッサ実行可能コードは、前記プロセッサ実行可能コードがＣＰＵメモリからＧＰＵメモリに対してデータをコピーすることなく、前記ＣＰＵと前記ＧＰＵとの間で前記物理メモリを共有する、項目１０または１１に記載のコンピューティングデバイス。
［項目１３］
前記ＣＰＵ及び前記ＧＰＵは、前記コンピューティングデバイス内の同じダイ上にある、項目１０から１２のいずれか１項に記載のコンピューティングデバイス。
［項目１４］
前記ＣＰＵ及び前記ＧＰＵは、ラストレベルキャッシュ（ＬＬＣ）を共有し、前記ＬＬＣは、前記ＣＰＵまたは前記ＧＰＵの任意のキャッシュからデータを取り出す、項目１０から１３のいずれか１項に記載のコンピューティングデバイス。
［項目１５］
前記ＣＰＵ及び前記ＧＰＵは、ユニファイドメモリアーキテクチャ（ＵＭＡ）を備える、項目１０から１４のいずれか１項に記載のコンピューティングデバイス。
［項目１６］
前記プロセッサ実行可能コードは、
前記ＣＰＵページテーブル内の前記複数の仮想メモリアドレスを、複数の物理アドレスに変換し、
前記ＧＰＵページテーブル内の前記複数の仮想メモリアドレスを複数の物理アドレス変換し、
前記ＣＰＵページテーブル及び前記ＧＰＵページテーブル内の前記複数の仮想メモリアドレスを、前記面内の複数の物理的位置に対してマッピングする、項目１０から１５のいずれか１項に記載のコンピューティングデバイス。
［項目１７］
前記プロセッサ実行可能コードの実行を開始するドライバを備える、項目１０から１６のいずれか１項に記載のコンピューティングデバイス。
［項目１８］
無線装置及びディスプレイをさらに備え、前記無線装置及びディスプレイは、少なくとも前記中央処理装置と通信可能に結合される、項目１０から１７のいずれか１項に記載のコンピューティングデバイス。
［項目１９］
複数の命令を有する少なくとも１つのプログラムであって、前記複数の命令がコンピューティングデバイス上で実行されたことに応答して、前記コンピューティングデバイスは、
物理メモリ内で面を生成し、
ＣＰＵページテーブル内の複数の仮想メモリアドレスに対して前記面をマッピングし、
前記面に基づいて、ＧＰＵページテーブル内の複数の仮想メモリアドレスに対して、前記面をマッピングする、少なくとも１つのプログラム。
［項目２０］
前記物理メモリは、ＣＰＵメモリからＧＰＵメモリに対してデータをコピーすることなく、前記ＣＰＵと前記ＧＰＵとの間で共有される、項目１９に記載の、少なくとも１つのプログラム。
【図１】
0006478119.tif 000002
【図２Ａ】
0006478119.tif 000003
【図２Ｂ】
0006478119.tif 000004
【図３】
0006478119.tif 000005
【図４】
0006478119.tif 000006
【図５】
0006478119.tif 000007
【図６】
0006478119.tif 000008
【図７】
0006478119.tif 000009