JP2016517992A - 属性フィールドのマルチコアページテーブルセット - Google Patents

属性フィールドのマルチコアページテーブルセット Download PDF

Info

Publication number
JP2016517992A
JP2016517992A JP2016512914A JP2016512914A JP2016517992A JP 2016517992 A JP2016517992 A JP 2016517992A JP 2016512914 A JP2016512914 A JP 2016512914A JP 2016512914 A JP2016512914 A JP 2016512914A JP 2016517992 A JP2016517992 A JP 2016517992A
Authority
JP
Japan
Prior art keywords
page
page table
attribute data
processing unit
table entry
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2016512914A
Other languages
English (en)
Other versions
JP2016517992A5 (ja
JP6067928B2 (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2016517992A publication Critical patent/JP2016517992A/ja
Publication of JP2016517992A5 publication Critical patent/JP2016517992A5/ja
Application granted granted Critical
Publication of JP6067928B2 publication Critical patent/JP6067928B2/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/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism

Landscapes

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

Abstract

デバイスは、第1のページテーブルエントリを含む第1のページテーブルを記憶するメモリを含み、ここにおいて、第1のページテーブルエントリは、物理アドレス、ページテーブルエントリに関連付けられる代替の場所、および物理アドレスに関連付けられるメモリの物理ページをさらに含む。第1の処理ユニットは、第1のページテーブルエントリを読み取り、および第1のページテーブルエントリから物理アドレスを決定するように構成される。第2の処理ユニットは、第1のページテーブルエントリから物理アドレスを読み取り、代替の場所から第2のページ属性データを決定し、ここにおいて、第2のページ属性データは、前記第2の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、および1つまたは複数のアクセス可能性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスするように構成される。

Description

[0001]本願は、2012年8月2日に出願された米国特許出願番号13/565,434に関連し、その全体の内容はここで参照により組み込まれる。
[0002]本開示は一般的に演算(computing)に関し、さらに具体的には仮想メモリアドレス空間を物理メモリアドレス空間にマッピングするための技術に関する。
[0003]典型的な演算システムは、中央処理ユニット(CPU)およびグラフィックス処理ユニット(GPU)のような複数の処理ユニットを含み、それらは物理メモリからの読み取りおよび物理メモリへの書き込みを行う。デバイスの様々な処理ユニットは、クライアントによって実行されるアプリケーションが、連続した(contiguous)物理メモリ空間を確保する(set aside)必要なく連続した仮想アドレス空間を割り当てられ得るといった仮想アドレス方式を実行し得る。各処理ユニットは、典型的に、仮想メモリアドレスを物理メモリ内の物理アドレスに変換するためのメモリ管理ユニット(MMU)を有する物理アドレスに対して要求された仮想アドレスマッピングを実行するために、各MMUは、システムメモリに別個のページテーブルを保持し、これら別個のページテーブルの各々は数メガバイトのサイズであり得る。
[0004]一般的に、本開示で説明される技術は、仮想アドレスの物理アドレスへのマッピングを実施する演算デバイスに関する。本開示の技術にしたがって、2つ以上の処理ユニットが仮想アドレスを物理アドレスにマッピングするために共通のページテーブルを共有し得る。第1の処理ユニットは、仮想アドレスを物理アドレスにマッピングするために第1のページテーブルエントリを読み取り得る。第2の処理ユニットは、仮想アドレスから物理アドレスにマッピングするときに第1のページテーブルエントリと追加の第2のページテーブルエントリを読み取り得る。単一の第1のテーブルエントリは、第1の処理ユニットに関する物理メモリアドレスに関連付けられるメモリページの属性を含み得る。第2のページテーブルエントリは、第2の処理ユニットに関する同じ物理メモリアドレスの属性に対応する追加の属性セットを含み得る。さらに、第1のページテーブルエントリは、追加のページテーブルエントリを含む第2の処理ユニットに関する第2のページテーブルエントリを識別するデータを含み得る。属性フィールドの複数のセットを用いて、第1および第2の処理ユニットに関するメモリページの許可を備え得る属性が個々に管理され得る。例えば、本開示で説明される技術は、第1および第2の処理ユニットに関するメモリのページの読み取り/書き込み、実行、キャッシング(caching)、および他の属性および/または許可の個々の管理を可能にし得る。
[0005]一例にしたがって、装置は、第1のページテーブルエントリを含む第1のページテーブルを記憶するメモリを含み、ここにおいて、第1のページテーブルエントリは、物理アドレスと、第1のページテーブルエントリに関連付けられる代替の場所と、物理アドレスに関連付けられるメモリの物理ページとをさらに含む。第1の処理ユニットは、物理アドレスを第1のページテーブルから読み取ることと、第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、第1のページ属性データは、第1の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、および第1のページ属性データの1つまたは複数のアクセス可能性属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、を行うように構成される。第2の処理ユニットは、第1のページテーブルエントリを第1のページテーブルから読み取ることと、第1のページテーブルエントリから物理アドレスを決定することと、代替の場所から第2のページ属性データを決定することと、ここにおいて、代替の場所は、第1のページテーブルエントリに関連付けられ、第2のページ属性データは、第2の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、および第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、を行うように構成される。
[0006]別の例にしたがって、メモリにアクセスする方法は、第1の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、第1の処理ユニットを用いて、第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、第1のページ属性データは、第1の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第2の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、第2の処理ユニットを用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、代替の場所は、第1のページテーブルエントリに関連付けられ、第2のページ属性データは、第2の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第1の処理ユニットを用いて、第1のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、および第2の処理ユニットを用いて、第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、を含む。
[0007]別の例にしたがって、装置は、第1のページテーブルエントリを含む第1のページテーブルを記憶するための手段を含み、ここにおいて、第1のページテーブルエントリは、第1のページテーブルエントリに関連付けられる代替の場所の物理アドレスと物理アドレスに関連付けられるメモリの物理ページとをさらに含む。装置は、第1の処理をするための手段を含み、ここにおいて、第1の処理をするための手段は、第1のページテーブルエントリから物理アドレスを読み取るための手段と、第1のページテーブルエントリから第1のページ属性データを決定するための手段と、ここにおいて、第1のページ属性データは、第1の処理をするための手段に関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第1のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスを用いてメモリの物理ページにアクセスするための手段と、を備える。装置は、第2の処理をするための手段を含み、ここにおいて、第2の処理をするための手段は、第1のページテーブルエントリを第1のページテーブルから読み取るための手段と、第1のページテーブルエントリから物理アドレスを決定するための手段と、代替の場所から第2のページ属性データを決定するための手段と、ここにおいて、代替の場所は、第1のページテーブルエントリに関連付けられ、第2のページ属性データは、第2の処理をするための手段に関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスするための手段と、を備える。
[0008]別の例にしたがって、非一時的なコンピュータ可読記憶媒体は、実行されると、第1の処理ユニットと第2の処理ユニットに、第1の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、第1の処理ユニットを用いて、第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、第1のページ属性データは、第1の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第2の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、第2の処理ユニットを用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、代替の場所は第1のページテーブルエントリに関連付けられ、および第2のページ属性データは、第2の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第1の処理ユニットを用いて、第1のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、および第2の処理ユニットを用いて、第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、を行わせる命令を記憶する。
[0009]図1は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングする技術を実施するように構成された演算デバイスを示す概念図である。 [0010]図2は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングするための技術の例を示す概念図である。 [0011]図3は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングするための技術の例を示す概念図である。 [0012]図4は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングするための技術の例を示す概念図である。 [0013]図5は、本開示の技術にしたがって説明された仮想メモリアドレスを物理メモリアドレスにマッピングする技術を示すフロー図である。
詳細な説明
[0014]一般的に、本開示において説明される技術は、物理アドレスへの仮想アドレスのマッピングを実施する演算デバイスに関し、本開示では、仮想−物理マッピングとも称される。さらに具体的には、本開示で説明される技術は、2つ以上の処理ユニットに関する複数の属性セットをサポートする仮想メモリアーキテクチャを対象としている。いくつかの例において、共通のページテーブルの第1のページテーブルエントリは、第1の属性データのセット、例えば、第1の処理ユニット(例えばCPU)に関する属性データのセットを含み得る。第1のページテーブルエントリはまた、代替の場所に関連付けられるデータをも含み得、および代替の場所は、他の属性データと同様に、第2の処理ユニット(例えばGPU)に関する属性データを含み得る。属性データの複数のセットを使用して、2つ以上の処理ユニットに関するメモリページのアクセス可能性は別個に管理され得る。例えば、本開示で説明される技術は、第1および第2の処理ユニットに関するメモリのページの読み取り/書き込み、実行、キャッシング、および他のアクセス可能性属性の個別の管理を可能にし得る。
[0015]中央処理装置(CPU)およびグラフィックス処理ユニット(GPU)のような処理ユニットは、システムメモリにアクセス(例えば、システムメモリからの読み取りおよびシステムメモリへの書き込み)し得る。システムにアクセスするために、処理ユニットは、データがメモリ内の場所に関連付けられる物理アドレスを使用して、読み取りまたは書き込みが行われるべきシステムメモリ内の場所にアクセスする。しかし、処理ユニットにとって、メモリページ(すなわちデータが書き込みまたは読み取られるべき物理メモリの場所)の全てに関する物理アドレスを管理することは困難であり得る。この困難を克服するために、処理ユニットは仮想アドレス指定を使用し得る。仮想アドレス指定の際に、処理ユニット(すなわちクライアントアプリケーション)で実行する。アプリケーションは、連続した仮想メモリアドレスが割り当てられる。アプリケーションは、異なる処理ユニットで実行する異なるジョブを有する複数のジョブを備え得る。各処理ユニットは、それぞれメモリ管理ユニット(MMU)を含み得る。処理ユニットの各々のMMUは、仮想メモリアドレスから物理メモリアドレスとも呼ばれる実際のメモリアドレスを決定する役割を担っている。
[0016]例えば、MMUは、トランスレーション・ルックアサイド・バッファ(TLB)と呼ばれるキャッシュを含む。TLBは、最近アクセスされたメモリチャンク(memory chunks)または頻繁にアクセスされたメモリチャンクのような選択されたメモリチャンクに関する仮想−物理アドレスマッピングを記憶する。メモリの「ページ」と呼ばれるメモリチャンクにアクセスするために、処理ユニットは、そのメモリページに関する仮想メモリアドレスをMMUに供給する。代わりに、MMUはそのメモリページに関する物理メモリアドレスを識別するために、TLBにアクセスする。マッピングが(TLBヒットと呼ばれる)TLBにおいて使用可能な場合、MMUは次に物理メモリアドレスを使用してメモリページにアクセスする。あるいはMMUは、物理メモリアドレスを使用してメモリページに次にアクセスする処理ユニットの異なるユニットまたはモジュールに物理メモリアドレスを供給する。
[0017]いくつかの場合において、TLBは仮想メモリアドレス(TLB missと呼ばれる)に関するマッピングすることを含まなくても良い。例えば、メモリページが最近アクセスされたメモリページではないか、または頻繁にアクセスされたメモリページではないという理由で、処理ユニットは、物理アドレスがTLBによって記憶されたページエントリに含まれていないメモリページにアクセスする必要があり得る。このことが生じる場合、処理ユニットはシステムメモリに記憶されたページテーブルにアクセスする。
[0018]両方が、仮想メモリアドレスの物理メモリアドレスへのページエントリマッピングを記憶するという点で、ページテーブルはTLBに類似する。ページテーブルまたはTLBにおいて、1つのページテーブルエントリは、1つの仮想メモリアドレスを1つの物理メモリアドレスにマッピングする。しかし、処理ユニットのMMU内にローカルに記憶されるTLBとは対照的に、ページテーブルはシステムメモリに記憶される。同様に、ページテーブルは、TLBのように限定的された数のページエントリではなく処理ユニットに関する仮想−物理アドレスマッピング全体を記憶するため、ページテーブルのサイズは、TLBのサイズより一般的にかなり大きい。例えば、ページテーブルのサイズはメガバイトのサイズであり得る。
[0019]いくつかの技術において、システムメモリは、処理ユニットの各々に関する対応するページテーブルを記憶する。例えば、システムメモリは、CPUに関するページテーブルを記憶し、かつGPUに関する別の別個のページテーブルを記憶する。しかし、いくつかの例において、これらの異なるページテーブルは、同一のページテーブルエントリを含む。したがって、CPUページテーブル内の複数のページテーブルエントリは、GPUページテーブル内のページテーブルエントリに等しい可能性があり得る。例えば、CPUページテーブル内のページテーブルエントリは、1つの仮想メモリアドレスを物理メモリアドレスにマッピングし得、およびGPUページテーブル内のページテーブルエントリが同じ仮想メモリアドレスを同じ物理メモリアドレスにマッピングすることもあり得る。
[0020]一例として、CPUで実行するオペレーティングシステムは、連続した仮想メモリアドレスをアプリケーションに割り当てる役割を担い得る。アプリケーションは、CPUで実行するいくつかのジョブとGPUで実行するいくつかのジョブと共に複数のジョブまたはタスクを含み得る。オペレーティングシステムはまた、ページテーブル内の仮想メモリアドレスと物理メモリアドレスの間のマッピングを記憶し得る。オペレーティングシステムは、仮想メモリアドレスの割り当てとこれらの仮想メモリアドレスをCPUとGPUの両方に関する物理アドレスにマッピングする役割を担っているため、オペレーティングシステムは、CPUとGPUの両方に共通する仮想−物理マッピングを記憶する共通のページテーブルを作成し得る。
[0021]CPUおよびGPUが、共通の仮想−物理マッピングを共有する点で利点があり得る。例えば、システムメモリが複数の重複する(duplicate)ページテーブルエントリを記憶するのではなく、システムメモリは、CPUのページテーブルとGPUのページテーブル内の同一のページテーブルエントリに関する単一のページエントリを記憶することができ、その結果メモリを節約できる。さらに、これら複数の同一のページテーブルエントリに関する1つのページエントリが存在するので、2つの同一のページテーブルエントリの代わりに単一のページテーブルエントリを更新することは、コンピュータ的により効率的であり得る。
[0022]いくつかの先行技術がページテーブルの共有を実現するために開発されてきたこれらの技術において、CPU MMUおよびGPU MMUはそれぞれ、システムメモリに共通のページテーブルの場所を指すポインタを記憶する。CPUおよびGPUがメモリページにアクセスするとき、それらの各MMUは、共有されたページテーブルから物理メモリアドレスを検出するためにそれらのポインタを使用する。しかし、ページテーブルを共有するためのこれらの技術は、時々、メモリページに関する異なる処理ユニットのアクセス機能および/または許可を特定できないことに悩まされる(suffer from)。
[0023]異なるアクセス機能は異なる処理ユニットに関連付けられ得る。例えば、ページエントリは処理ユニットのワードサイズに依存して、従来32ビットまたは64ビットである。処理ユニットのアーキテクチャに依存して、ビットの数がメモリのページの物理アドレスを特定し、および残りのビットが属性データのためにリザーブされ得る。属性データは、その特定のメモリのページに関する1つまたは複数の処理ユニットのアクセス機能および/または許可を特定し得る。一例として、メモリページのうちのいくつかは、読み取り可能および書き込み可能になるように設計され得、および他のメモリページは読み取り可能にのみなるように設計され得る。同様に、属性データは、メモリページがキャッシュ可能、(TLBのように、キャッシュからメインメモリに書き戻される必要がある)ダーティ、または1つまたは複数の処理ユニットによって実行可能であるかどうかを示し得る。1つまたは複数のビットを備え得る、属性データの1つまたは複数のフィールドは、これらのアクセス可能性の制限および/または許可を実施(enforce)および示す。
[0024]メモリページを読み取り可能および書き込み可能、または読み取り可能のみと指定するフィールドに加えて、属性フィールドの他の例が存在し得る。例えば、属性データの1つまたは複数の他のフィールドは、あるメモリページ内のデータが非実行可能、内部キャッシュ可能、外部キャッシュ可能、共有可能、バッファ可能、ダーティ、および/または1つまたは複数のスーパーバイザまたはハイパーバイザによってアクセス可能であることを示し得る。ページが非実行可能である場合、1つまたは複数のプロセッサは、メモリページのコンテンツを実行し得ない。非実行可能な属性許可は、例えば悪意のあるコードがメモリページのコンテンツを実行するのを防ぐのに有益であり得る。
[0025]いくつかの例において、ページテーブルエントリの属性データは、メモリページのコンテンツが内部キャッシュ可能または外部キャッシュ可能であることを示し得る。内部キャッシュ可能と示されたメモリページのコンテンツは、1つまたは複数の「内部」キャッシュ(例えばL1キャッシュまたは処理ユニットに比較的より近いキャッシュ)に記憶されるのみであり得る。一方で、外部キャッシュ可能とマークされたページは、一例として、1つまたは複数の外部キャッシュ、すなわち、例えばL1キャッシュではなく、L2キャッシュまたはL3キャッシュによってキャッシュされ得るのみである。
[0026]ページテーブルエントリはまた、メモリページが共有可能であることを示し得る。メモリのページは、2つ以上の処理がメモリのページへのアクセスを共有し得る場合、共有可能であり得、それは、共有されたライブラリのように、共通で使用されるメモリページに関するメモリ消費量を低減するために有益であり得る。ページテーブルエントリ属性データはまたメモリページをダーティとマークし得る。ページテーブルエントリの属性データがページを「ダーティ」とマークする場合、メモリページのコンテンツが変わってしまうことがあり、第1の処理ユニット110または第2の処理ユニット120のような処理ユニットは、メモリページをシステムメモリ、例えば外部レベルキャッシュまたはシステムメモリ130に書き戻す必要があり得る。
[0027]属性データはまた、メモリページがスーパーバイザまたはハイパーバイザの許可を有しているかどうかを示し得る。メモリページがハイパーバイザ許可を有する場合、そのページ内で実行するコードは、スーパーバイザ許可またはユーザレベル許可といったより低い許可レベルを有するコードを、例えば、修正または管理し得る。ハイパーバイザ許可は、例えば仮想化されたオペレーティングシステム(「ゲストオペレーティングシステム」とも呼ばれる)または他の仮想化されたリソースを管理するために有益であり得る。同様に、スーパーバイザ許可は、管理アプリケーション、例えば1つまたは複数のオペレーティングシステムで実行するアプリケーションといったオペレーティングシステム(OS)レベルのタスクを実行するために有益であり得る。
[0028]ページテーブルエントリはまた、ページが「ライトバック」であるかまたは「ライトスルー」であるかを示す属性データを含み得る。メモリの「ライトバック」ページは、システムメモリ、例えばシステムメモリ130のより高いレベルまたはキャッシュのより高い(例えば外部または「バッキングストア」)レベルおよび内部キャッシュに同時に書き戻されなくてはならない。それとは対照的に、ページテーブル属性データがページを「ライトバック」とマークする場合、処理ユニットは、始めにメモリページをキャッシュに書き込み得るが、メモリページを含むキャッシュブロックが、新しいデータを用いて修正されるおよび/またはと交換されようとするまで、変更されたコンテンツをキャッシュのより高い(例えば外部またはバッキングストア)レベルに書き戻すのを延期し得る。
[0029]ページテーブルエントリの属性データはまた、メモリページがバッファ可能であるかどうかを示し得る。属性データが、ページがバッファ可能であることを示す場合、処理ユニットは、システムの性能を向上させるために、メモリページのコンテンツを書き込みバッファに書き込み得る。いくつかの例において、処理ユニットは、システムメモリ130の特定の領域をバッファ可能であるとマークし得、およびI/Oメモリスペース(例えばメモリマップされたI/O専用のメモリスペース)のような他の領域をバッファ可能ではないとマークし得る。
[0030]さらに別の例において、1つまたは複数のページテーブル属性データフィールドは、メモリページに関するメモリオーダリング(例えばストロングオーダリング、ウィークオーダリング、リラックスオーダリング)を示し得る。ページテーブルエントリの属性データが、メモリのページが強く順序付けられていることを示す場合、そのページと相互に作用する全ての機械命令は、取得および解放セマンティクスを暗黙的に備える(comes implicitly with acquire and release semantics)。その結果、1つの処理ユニットが一連の書き込みを実行するとき、他の全ての処理ユニットは、それらが書き込まれたのと同じ順序でそれらの値が変化することを理解する。ページテーブルエントリの属性データが、メモリページが弱く順序付けられていることを示す場合、書き込みおよび読み取りは、明白なメモリ障壁によってのみ限定されたリオーダリングによって任意に再度順序付けされ得る。
[0031]上述した属性データの任意の組み合わせは、ページテーブルエントリに含まれ得る。上述された属性データの具体例は、単にいくつかの非限定的な例である。属性データの他のタイプおよび組み合わせはまた、ページテーブルエントリに含まれ得る。上述した非限定的な具体例に記載された方法において、ページテーブルエントリの属性データフィールド値は本開示の技術にしたがって、処理ユニットに関する物理メモリページのアクセス可能性および/または許可を示し得る。
[0032]いくつかの例において、1つの処理ユニットは、メモリの同じページに関する別の処理ユニットとは異なるアクセス可能性許可(accessibility permissions)を必要とすることがある。例えば、CPUで実行するオペレーティングシステムは、メモリのいくつかのページをCPUによって書き込みおよび読み取り可能であると指定し、ならびにこれらの同じページをGPUによって読み取りのみ可能であると指定する。異なる処理ユニットに関する異なる許可を示すために、各処理ユニットは、その処理ユニットに関するメモリページのアクセス可能性許可に対応する属性データのセットに関連付けられ得る。例えば、CPUおよびGPUがそれらの各ページテーブルを含む上述の例において、物理アドレスのマッピングに対する仮想アドレスは、ページテーブルのそれぞれにおいて同一であり得るが、属性データフィールドは同一ではあり得ない。CPUおよびGPUが共通のページテーブルを共有する上述した他の例において、属性データフィールドは、CPUとGPUの両方によって共有され得る。属性データフィールドが共有される場合、オペレーティングシステムは、両方ではなく、CPUあるいはGPUのいずれかに関する属性データを定義するように強要される。
[0033]例えば、上述の例において、属性データフィールドは、CPUのアクセス可能性を定義するが、必ずしもGPUのアクセス可能性を定義しない値を含む。これは、潜在的にメモリページの誤った管理の原因となる可能性があり得る。例えば、GPUにとって読み取り可能のみであるべき(書き込み可能ではない)メモリページのアクセス可能性を制限することが望ましくあり得る。しかし、このページはCPUによって読み取り可能および書き込み可能であり、かつ属性データフィールドの値はCPUとGPUの間で差別化されないため、GPUは、ポインタが共通のページテーブル内に使用される例において、メモリページに不注意に書き込み得る。
[0034]本開示の技術は、特に異なる処理ユニットに関するページ属性データを指定することに関する。例えば、GPUのページ属性データは、GPUに関するメモリページのアクセス可能性を定義し、およびCPUのページ属性データは、CPUへのアクセス可能性を定義する。本開示の技術にしたがって、第1の処理ユニットは、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取り、第1のページテーブルエントリから第1のページ属性データを決定し得、ここにおいて、第1のページ属性データは、第1の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義する。第2の処理ユニットは第1のページ内の第1のページテーブルエントリから物理アドレスを読み取り、代替の場所から第2のページ属性データを決定し得、ここにおいて、代替の場所は、第1のページテーブルエントリに関連付けられ、および第2のページ属性データは、第2の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義する。第1の処理ユニットは、第1のページ属性データの1つまたは複数のアクセス可能性属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスし得、および第2の処理ユニットは、第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスし得る。
[0035]図1は、本開示の技術を実施し得る演算デバイス、すなわち演算デバイス100の例を示す。演算デバイス100の例は、モバイル無線電話、個人情報端末(PDA)、ビデオゲームコンソール、ハンドヘルドゲームユニット、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビジョンセット−トップボックス、デジタルメディアプレーヤー、スマート電話、タブレットコンピュータ、カメラなどを含むが、それらに限定されることはない。必ずしもリソースが限定されたデバイスのみに限定されるわけではないが、本開示の技術は、バッテリ駆動デバイスを含むリソースが限定されたデバイスに特に利点がある。
[0036]演算デバイス100は、第1の処理ユニット110、第2の処理ユニット120、およびシステムメモリ130を含む。第1の処理ユニット110はMMU112を含み、ならびに第2の処理ユニット120はMMU122を含む。MMU110は、TLB114を含み得、ならびにMMU122はTLB124を含み得る。第1の処理ユニット110は、レジスタ116を含み、ならびに第2の処理ユニット120はレジスタ126を含む。第1の処理ユニット110は、例えば、デバイス100のCPUであり得る。第2の処理ユニット120は、例えば、ディスプレイ上に提示するためのグラフィックスデータを出力するために動作可能なGPUであり得る。第1の処理ユニット110と第2の処理ユニット120は、例えば、ディスプレイコントローラを含む様々な周辺デバイス、ネットワークデバイス、またはCPUまたはGPUのようなプロセッサからの信号処理をオフロードする任意のタイプのデジタル信号処理(DSP)コアの任意のタイプに関する処理ユニットのような、他のタイプの処理ユニットをさらに表し得る。第1の処理ユニット110と第2の処理ユニット120の例は、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積またはディスクリート論理回路を含み得るがそれらに限定されるものではない。本開示の技術は、一般的に、2つの処理ユニットに関して説明されることになるが、この技術は、3つ以上の処理ユニットを用いて実施されても良い。
[0037]レジスタ116とレジスタ126は、第1の処理ユニット110または第2の処理ユニット120がその上で動作するデータ(例えばオペランド(operands))を含み得る。いくつかの例において、レジスタ116とレジスタ126は、汎用レジスタ、メモリアドレス間接レジスタ、割り込みレジスタ、SIMDレジスタ、またはいずれ他のタイプのレジスタであり得る。いくつかの例において、レジスタ116および126は、本開示の技術にしたがって、第1の処理ユニット110および/または第2の処理ユニット120に関するページ属性データを記憶するように構成され得る。
[0038]システムメモリ130はコンピュータ可読記憶媒体の例であっても良い。システムメモリ130は、例えば、ダイナミックRAM、スタティックRAM、サイリスタRAM、ゼロキャパシタRAM、ツイントランジスタRAM、またはいずれ他のタイプの揮発性メモリのようなランダムアクセスメモリ(RAM)のタイプであっても良い。システムメモリ130はまた、フラッシュメモリまたは他のタイプの不揮発性RAMのような不揮発性メモリであっても良い。システムメモリ130は、第1の処理ユニット110と処理ユニット120に本開示内のそれぞれに属する機能を実行させる命令を記憶し得る。このように、システムメモリ130は、例えば第1の処理ユニット110と処理ユニット120のような1つまたは複数のプロセッサに様々な機能を実行させる命令を備えるコンピュータ可読記憶媒体であると考えられ得る。しかし、いくつかの例において、こういった命令は、システムメモリ130以外のメモリ(図1には不図示)に記憶され得る。
[0039]第1の処理ユニット110と第2の処理ユニット120は、システムメモリ130からデータを読み取りおよびシステムメモリ130にデータを書き込むように構成される。データの読み取りまたは書き込みのために、第1の処理ユニット110と第2の処理ユニット120は、システムメモリ130内の特定の物理的な場所にアクセスするように構成される。これらの特定の場所は、例えば、4キロバイト(KB)、2メガバイト(MB)、またはいずれか他のサイズのページであり得る。各メモリのページは、関連付けられる物理アドレスを有し得る。しかし、上で紹介されたように、第1の処理ユニット110と第2の処理ユニット120は、第1の処理ユニット110または第2の処理ユニット120で実行するアプリケーションが連続した仮想メモリアドレスを割り当てられるように仮想アドレスの指定を実施し得る。しかし、これらの連続した仮想メモリアドレスに対応する物理メモリアドレスはフラグメントされおよび非連続であり得る。したがって、第1の処理ユニット110と第2の処理ユニット120は、対応する非連続物理メモリアドレスではなくこれらの連続した仮想メモリアドレスを用いてデータを処理し得る。しかし、第1の処理ユニット110と第2の処理ユニット120がシステムメモリ130にアクセスする(すなわちシステムメモリ130から読み取りまたはシステムメモリ130に書き込みを行う)場合、第1の処理ユニット110と第2の処理ユニット120はこれらの仮想メモリアドレスを対応する物理メモリアドレスに変換する。
[0040]MMU112は、第1の処理ユニット110に関する仮想メモリアドレスを物理メモリアドレスにマッピングするように構成され、およびMMU122は、第2の処理ユニット120に関する仮想メモリアドレスを物理メモリアドレスにマッピングするように構成される。ページエントリのフルセットを有する完全なページテーブルは、ページテーブル132に記憶される。いくつかの例において、ページテーブル132はまた、複数の並行するページテーブルを備え得る。他の例において、ページテーブル132は、単一のページテーブルを備え得る。TLB114とTLB124の各々は、ページテーブル132に記憶されたページテーブルエントリのサブセットを記憶する。サブセットは、例えば、最近アクセスされたページテーブルエントリ、頻繁にアクセスされたページテーブルエントリ、またはいくつかの他の基準に基づいて選択されたページテーブルエントリであり得る。TLB114に記憶されたページテーブルエントリのサブセットは、TLB124に記憶されたページエントリのサブセットとは異なっても良い。例えば、MMU112を介して第1の処理ユニット110によって最近アクセスされたまたは頻繁にアクセスされたページテーブルエントリは、MMU122を介して第2の処理ユニット120によって最近または頻繁にアクセスされたページテーブルエントリとは異なり得る。したがって、TLB114は、TLB124とは異なるページテーブルエントリのサブセットを記憶し得る。
[0041]例えば、第1の処理ユニット110が仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合、MMU112は、TLB114が当該仮想メモリアドレスに関するページエントリを記憶する時に特定の仮想メモリアドレスに対応する物理メモリアドレスを決定するために、TLB114を使用し得る。決定された物理メモリアドレスを使用して、第1の処理ユニット110は、システムメモリ130の特定の物理的な場所からの読み取りまたは物理的な場所への書き込みを可能にする。同様に、第2の処理ユニット120が仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合、MMU122は、TLB124が当該仮想メモリアドレスに関するページエントリを記憶する時に特定の仮想メモリアドレスに対応する物理メモリアドレスを決定するために、TLB124を使用し得る。決定された物理メモリアドレスを使用して、第2の処理ユニット120はシステムメモリ130からの読み取りまたはシステムメモリ130への書き込みを可能にする。
[0042]上で紹介されたように、TLB114およびTLB124は、仮想メモリアドレスのサブセットのみに関する仮想−物理マッピングを記憶するキャッシュであり得る。そのため、TLB114は、処理ユニット110に関する仮想−物理マッピング全体を記憶し得、同様に、TLB124は、第2の処理ユニット120に関する仮想−物理マッピング全体を記憶し得ない。いくつかの例において、MMU112は、TLB114に記憶されたマッピングを持たない仮想メモリアドレスに関する対応する物理メモリアドレスを決定する必要があり得る。TLB114に含まれない仮想メモリアドレスに関するマッピングを決定するために、第1の処理ユニット110は、システムメモリ130に記憶されたページテーブル132にアクセスし得る。ページテーブル132は、処理ユニット110と処理ユニット120に関する仮想−物理マッピング全体を含むため、TLB114およびTLB124よりもかなり大きい可能性がある。
[0043]MMU112と同様に、いくつかの例において、MMU122は、TLB124に記憶されたマッピングを持たない仮想メモリアドレスに関する対応する物理メモリアドレスを決定する必要があり得る。TLB124に含まれない仮想メモリアドレスに関するマッピングを決定するために、第2の処理ユニット120は、システムメモリ130に記憶されたページテーブル132にアクセスする。この方法において、MMU122は、実質的にMMU112と類似の方法で機能し得る。ページテーブル132は、処理ユニット110および第2の処理ユニット120に関する仮想−物理マッピング全体を含む。この方法において、第1の処理ユニット110と第2の処理ユニット120は、同じページテーブル(例えば、図1の例におけるページテーブル132のうちの1つ)を共有する。
[0044]様々な例において、ページテーブル132は、単一ページテーブルであっても良い。ページテーブル132はまた、複数の並行するページテーブルであり得る。ページテーブル132が単一ページテーブルである場合において、物理アドレスからメモリページに関する仮想アドレスに変換するために、第1の処理ユニット110と処理ユニット120は、第1のページテーブルエントリをページテーブル132から読み取り得る。第1のページテーブルエントリは、第1の処理ユニット、例えば第1の処理ユニット110に関する物理メモリページの属性データを含む。属性データに加えて、第1のページテーブルエントリは、同じページテーブルの第2のページテーブルエントリに関連付けられるデータをも含む。様々に、第2のページテーブルエントリに関連付けられるデータは、仮想アドレスおよび/または物理アドレスを備え得るポインタであり得る。
[0045]第2の処理ユニットに関するページ属性データを決定するために、第2の処理ユニット120は、第1のページテーブルエントリから第2のページテーブルエントリに関連付けられるデータを読み取る。第2の処理ユニット120は、ページテーブルエントリ132から第2のページテーブルエントリを読み取るために、第2のページテーブルエントリに関連付けられるデータを使用する。第2のページテーブルエントリは、第2の処理ユニット120に関するメモリページのアクセス可能性を定義する第2の処理ユニット120に関する属性データを含む。いくつかの例において、ポインタは、処理ユニット110または第2の処理ユニット120のいずれかのレジスタファイルのレジスタを指し得る。レジスタファイルのレジスタは、第2の処理ユニット120に関するページエントリの属性データを含み得る。
[0046]ページテーブル132が複数のページテーブルを備える例において、物理アドレスからメモリページに関する仮想アドレスに変換するために、第1の処理ユニット110と第2の処理ユニット120は、特定の仮想アドレスにおいて、ページテーブル132から第1のページテーブルエントリを読み取り得る。第1のページテーブルエントリは、第1の処理ユニット、例えば第1の処理ユニット110に関する仮想アドレスに関連付けられる物理メモリページの属性データを含む。第2の処理ユニット120は、第1のページテーブルエントリを読み取り得、および仮想アドレスに基づいて、ページテーブル132のうちの異なるページテーブルから第2のページテーブルエントリをも読み取り得る。第2のページテーブルエントリは、第2の処理ユニット120に関する属性データを含む。いくつかの例において、第2の処理ユニット120は、第2のページテーブルエントリを読み取る前に第1のページテーブルエントリの読み取りが完了するのを待つことを回避するために、第1のページテーブルエントリと第2のページテーブルエントリを並行して読み取り得る。
[0047]ページテーブル132が、複数のページテーブルを備える別の例において、物理アドレスからメモリページに関する仮想アドレスに変換するために、第1の処理ユニット110と第2の処理ユニット120は、特定の仮想アドレスにおいてページテーブル132から第1のページテーブルエントリを読み取り得る。第1のページテーブルエントリは、第1の処理ユニット、例えば第1の処理ユニット110に関する物理メモリページの属性データを含む。第1のページテーブルエントリはまた、第2のページエントリに関連付けられるデータを含む。第2のページテーブルエントリは、第2の処理ユニット120に関する属性データを含む。第2の処理ユニット120は、第2のページテーブルエントリに関連付けられるデータを読み取り、およびそのデータに基づいて、第2の処理ユニット120に関するページテーブル属性データを有する第2のページテーブルエントリを含む異なるページテーブルを識別する。次に第2の処理ユニット120は、仮想アドレスに基づいて第2のページテーブルから第2のページテーブルエントリを読み取り、および第2のページテーブルエントリの属性データを用いてメモリの物理ページにアクセスする。
[0048]ページテーブル132はそれぞれ、仮想メモリアドレスをメモリページの物理メモリアドレスにマッピングする複数のページエントリを含み得る。メモリページは、メモリページの物理メモリアドレスを介して個別にアクセス可能なシステムメモリ130の一部であり得る。各ページテーブルエントリは、属性データの1つまたは複数のセットを含み得る。属性データの各セットは、1つまたは複数の処理ユニットのために、例えば許可およびアクセス権などの制御を設定し得る。各ページテーブルエントリは、属性データの1つまたは複数の追加のセット、例えば第1の処理ユニット110と第2の処理ユニット120の両方のために共通の制御を設定する属性データのセットなどを任意に含み得る。
[0049]本開示の技術にしたがって、第1の処理ユニット110と第2の処理ユニット120は、第1の処理ユニット110を用いて第1のページテーブル内の第1のページテーブルエントリから読み取ることと、第1の処理ユニット110を用いて、第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、第1のページ属性データは、第1の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第2の処理ユニット120を用いて第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、第2の処理ユニット120を用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、代替の場所は第1のページテーブルエントリに関連付けられ、およびここにおいて、第2のページ属性データは、第2の処理ユニット120に関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、第1の処理ユニット110を用いて、第1のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、および第2の処理ユニット120を用いて、第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、を行うように構成され得る。
[0050]ページテーブル132のページエントリに関する属性データの第1のセットと属性データの第2のセットは、共通のページテーブルを共有する一方で、異なる許可および/またはアクセス権を持つことを第1の処理ユニット110と第2の処理ユニット120に可能にし得る。一例として、属性データの第1のセットは、第1の処理ユニット110がシステムメモリ130の特定のメモリページに読み取りおよび書き込み両方のアクセスを行うように設定され得る一方で、第2の処理ユニット120は、同じ特定のメモリページに読み取りアクセスのみ行い得る。もちろん、第2の処理ユニット120が読み取りおよび書き込み両方のアクセスを行なう一方で、第1の処理ユニット110が読み取りアクセスのみを行う、または第1の処理ユニット110と第2の処理ユニット120のうちの1つが読み取りおよび書き込み両方のアクセスを行う一方で、もう1つは読み取りアクセスも書き込みアクセスも行わないという他の構成もまた可能である。
[0051]図2は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングするための技術の例を示す概念図である。図2は、第1のページテーブルエントリ140、第2のページテーブルエントリ142および第3のページテーブルエントリ144を示す。第1のページテーブルエントリ140、第2のページテーブルエントリ142、および第3のページテーブルエントリ144はそれぞれ、ページテーブル132の異なるページテーブル内のページテーブルエントリであり得る。
[0052]第1の処理ユニット110または第2の処理ユニット120でのアプリケーションの実行は、仮想メモリアドレスに関連付けられる物理メモリのページにアクセス(読み取りまたは書き込み)することを試み得る。処理ユニットのメモリ管理ユニット(MMU)は、仮想アドレスを物理アドレスに変換し、物理アドレスに関連付けられるメモリの物理ページの任意の読み取りまたはそれへの書き込みのいずれかを操作する。トランスレーション・ルックアサイド・バッファ(TLB)は、ページテーブルからの検索待ち時間を短縮するために、メモリのページの仮想アドレスに基づいて、頻繁に使用されたメモリのページをキャッシュし得る。
[0053]図2の例において、特定の仮想アドレスにアクセスすることを試みる第1の処理ユニット110上のアプリケーションは、第1のMMU112にTLB114を使用して検索を行わせる。TLB114が要求されたページテーブルエントリ(「第1のページテーブルエントリ」と呼ばれる)のキャッシュされたコピーを有する場合、TLB114は、要求された第1のページテーブルエントリをMMU112に返す。TLB114が第1のページテーブルエントリのキャッシュされたコピーを有さない場合、MMU112は、ページテーブル132から要求された第1のページテーブルエントリを検出する。
[0054]MMU112は、第1の処理ユニット110に関連付けられるページテーブルエントリを含む特定のページテーブルからページテーブルエントリ140を検出し得る。要求されたページテーブルエントリを検出するために、MMU112またはTLB114は、ページテーブルへのインデックスとして要求中のアプリケーションの仮想アドレスを使用し、およびその仮想アドレスに関連付けられる要求されたページテーブルエントリを検出する。
[0055]MMU112がページテーブルエントリを検出した後、MMU112は、仮想アドレスを物理アドレスに変換する。MMU112はまた、ページテーブルエントリから属性データを決定する。属性データは第1の処理ユニット110へのアクセス可能性許可を定義する。アクセス可能性許可とメモリの物理ページの仮想アドレスに関連付けられる物理アドレスを決定した後、MMU112は、現在実行しているアプリケーションによって要求されたメモリアクセスを行う。
[0056]第1のページテーブルエントリ140は、物理アドレス146、属性データ148、および有効ビット150を含む。物理アドレス146は、物理メモリページ152の物理アドレスを示す。MMU112は、物理アドレス146に基づいて物理メモリページ152に対して任意の読み取りまたは書き込みのいずれかを行う。この例において、属性データ148は、「R」(読み取り可能)、「W」(書き込み可能)、「X」(実行可能)および「C」(キャッシュ可能)と表された4つのフィールドを含む。各フィールドは、処理ユニット110と処理ユニット120のアーキテクチャに依存する1つまたは複数のビットのサイズである。可読フィールド値と書き込み可能フィールド値は、処理ユニット110が物理メモリページ152からの読み取りまたはそれへの書き込みが可能かどうかを示す。実行可能フィールド値は、処理ユニット110が物理メモリページ152のコンテンツを実行できるかどうかを示す。キャッシュ可能フィールド値は、処理ユニット110が例えばL1またはL2キャッシュにおいて、物理メモリページ152のコンテンツをキャッシュし得るかどうかを示す。
[0057]MMU112がページテーブルエントリ140を読み取ると、MMU112は、ページテーブルエントリの仮想アドレスを物理アドレス146に変換し、MMU112は、物理アドレス146に基づいて物理メモリページ142にアクセスし得る。MMU112は、例えば読み取り、書き込み、または実行などのアクセスのタイプが属性データ148のフィールド値に基づいて許可されることを確実にする。MMU112はまた、キャッシュできないように設計されたメモリページが第1の処理ユニット110によってキャッシュされないことを確実にする役割を担っている。属性データフィールドの値が要求されたアクセスタイプが許可されないことを示す場合、MMU112は、オペレーティングシステムまたはクライアントアプリケーションのいずれかが操作し得る例外をスローし得る。
[0058]読み取り可能、書き込み可能、実行可能、およびキャッシュ可能フィールドは、第1のページテーブルエントリ140が含み得るフィールド値の単なるいくつかの例である。ページテーブルエントリ140は、属性データフィールドの任意の組み合わせおよび数を含み得る。第1のページテーブルエントリ140はまた、1つまたは複数の追加の値を含み得る。前述のフィールドに加えて、第1のページテーブルエントリ140はまた、1つまたは複数の有効ビットを含み得る。各有効ビットは、例えば第2の処理ユニット120のように追加の処理ユニットに関する属性データを含む追加のページテーブルエントリが有効であるかどうかを示す。有効ビットが、追加のページテーブルエントリが有効であることを示す場合、第2の処理ユニット120は、有効ビットに関連付けられるページテーブルエントリの属性データを読み取り得る。有効ビットが、追加のページテーブルエントリが有効でないことを示す場合、第2の処理ユニット120は、いくつかの例において、追加のページテーブルエントリを読み取らない可能性がある。代わりに、第2の処理ユニット120は、第1のページテーブルエントリ140の属性データを使用し得る。
[0059]第1の処理ユニット110で実行する同じアプリケーションはまた、第2の処理ユニット120で実行し得、および同じ仮想メモリアドレスにアクセスすることを試み得る。しかし、アクセス可能性値の異なるセットに物理メモリページを割り当てることが望ましくあり得る。例えば、第1の処理ユニット110は、実行するために第2の処理ユニット120に関するGPUコマンドを用いて、GPU、例えば第2の処理ユニット120のコマンドバッファを満たすCPUであり得る。GPUコマンドは、第1の処理ユニット110によって実行可能で無いはずだが、第2の処理ユニット120によって実行可能であるはずである。
[0060]第1の処理ユニット110および112に関する属性データの異なるセットを適用するために、第2の処理ユニット120に関する物理メモリページ142の追加の属性データを含み得る1つまたは複数の代替の場所が存在し得る。システムメモリ130は、追加の処理ユニットに関する属性情報を含む追加のページテーブルを含み得る。例えば、第1のページテーブルエントリ140は、第1のページテーブルに属し得る。第2のページテーブルエントリ142は、第2のページテーブルに属し得、および第3のページテーブルエントリ144は、第3のページテーブルに属し得る。
[0061]本開示の技術にしたがってメモリのページにアクセスしているときに、第2の処理ユニット120のMMU122は、第1の処理ユニット110に関して上で説明した方法で、第1のページテーブルエントリ140にアクセスする。第1のページテーブルエントリ140は、処理ユニット110に関する属性データ148と同じく、仮想アドレスから物理メモリページ152の物理アドレス146へのマッピングを含む。いくつかの例において、第1のページテーブルエントリ140はまた、有効ビット150を含み得る。MMU122はまた、例えば、第2のページテーブルエントリまたは第2の処理ユニット120に関する追加の属性情報を含むレジスタなどの代替の場所にアクセスする。
[0062]1つの例において、第2の処理ユニット120が、第2の処理ユニット120に関する属性データを決定するためにアクセスする代替の場所は、ページテーブルエントリ142であり得る。MMU122は、ページテーブルエントリ140を記憶するページテーブルではなくページテーブルエントリ132の第2の異なるページテーブルからページテーブルエントリ142を読み取る。MMU122は、ページテーブルエントリ140のページテーブルに索引を付けるのに用いられたのと同じ仮想アドレスを使って、代替の場所、すなわち第2のページテーブルに索引を付ける。ページテーブルエントリ142は、第2の属性データ154を含む。属性データは、第2の処理ユニット120が物理メモリページ152を読み取り、書き込み、実行、およびキャッシュし得るかどうかを示すフィールド値を含み得る。いくつかの例において、処理ユニットは、並行してページテーブルエントリ140とページテーブルエントリ142を読み取る。並行して2つのページテーブルエントリを読み取ることは、ページテーブルエントリ142を読み取る前に、ページテーブルエントリ140の読み取りが完了するのを待つことによって生じる待ち時間を回避する。
[0063]別の例において、代替の場所は、ページテーブルエントリ144であり得る。この例において、第2の処理ユニット120のMMU122は、第2の処理ユニット120に関する物理メモリページ152の第2の属性データを決定するために、ページテーブルエントリ144を読み取り得る。ページテーブルエントリ144は、例えば2つの異なる処理ユニットに関する属性データの2つのセットを含む。属性データの一方のセットは、第2の処理ユニット120に関するものであり得、および属性データのもう一方のセットは第3の処理ユニットに関するものであり得る。MMU122は、ページテーブルエントリ140を記憶するページテーブルとは異なるページテーブルエントリ132のページテーブルからページテーブルエントリ144を読み取る。MMU122は、ページテーブルエントリ140を含むページテーブルに索引を付けるために使用された同じ仮想アドレスを用いてページテーブル132の異なるページテーブルに索引を付ける。ページテーブルエントリ144の属性データに基づいて、MMU122は、第2の処理ユニット120に関する物理メモリページ152のアクセス可能性許可を決定する。
[0064]ページテーブルエントリ140、142、および144は、同じ属性フィールドを持つように示されているが、ページテーブルエントリの各々は、異なる数またはタイプの属性フィールドを有し得る。一例として、ページテーブルエントリ142は、単一の実行可能属性フィールドを含むのみであり得る。ページテーブルエントリ142は、全ての属性フィールドに関する値を含まないので、MMU122は、第2の処理ユニット120に関する物理メモリページ152のアクセス可能性許可を決定するために、ページテーブルエントリ142の属性フィールド値を用いて、ページテーブルエントリ140からの属性フィールド値を引き継ぐか、または組み合わせ得る。例えば、MMU122は、物理メモリページ152に関する第2の処理ユニット120の最後の許可を決定するために、ページテーブルエントリ140からの読み取り可能、書き込み可能、およびキャッシュ可能な属性フィールド値およびページテーブルエントリ142からの実行可能な属性フィールド値を使用し得る。
[0065]図3は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングする技術の例を示す概念図である。図3は、第1のページテーブルエントリ160、第2のページテーブルエントリ162および第3のページテーブルエントリ164を示す。第1のページテーブルエントリ160、第2のページテーブルエントリ162、および第3のページテーブルエントリ164はそれぞれ、ページテーブル132の異なるページテーブルにおけるページテーブルエントリであり得る。
[0066]第1の処理ユニット110または第2の処理ユニット120でのアプリケーションの実行は、仮想メモリアドレスに関連付けられる物理メモリのページにアクセスすることを試み得る。処理ユニットのメモリ管理ユニット(MMU)は、仮想アドレスを物理アドレスに変換し、物理アドレスに関連付けられるメモリの物理ページに対する任意の読み取りまたはそれへの書き込みのいずれかを操作する。トランスレーション・ルックアサイド・バッファ(TLB)は、ページテーブルから検索待ち時間を短縮するために、それらの仮想アドレスに基づいて頻繁に使用されたメモリのページをキャッシュし得る。
[0067]図3の例において、特定の仮想アドレスにアクセスすることを試みる第1の処理ユニット110上のアプリケーションは、TLB114を使用して、第1のMMU112に検索を行わせる。TLB114が要求されたページテーブルエントリのキャッシュされたコピーを有する場合、TLB114は、要求されたページテーブルエントリをMMU112に返す。TLB114が第1のページテーブルエントリのキャッシュされたコピーを有さない場合、MMU112は、第1の処理ユニットに関連付けられるページテーブル132のうちの1つのページテーブルから要求されたページテーブルエントリを検出する。
[0068]MMU112は、第1の処理ユニット110に関連付けられるページテーブルエントリを含む特定のページテーブルからページテーブルエントリ160を検出し得る。要求されたページテーブルエントリを検出するために、MMU112またはTLB114は、第1の処理ユニットに関連付けられるページテーブルへのインデックスとして要求中のアプリケーションの仮想アドレスを使用し、およびその仮想アドレスに関連付けられる要求されたページテーブルエントリを検出する。
[0069]ページテーブルエントリ160は、物理アドレス166、属性データ168、および識別子170を含む。物理アドレス166は、物理メモリページ172の物理アドレスを示す。MMU112は、物理アドレス166に基づいて物理メモリページ172に対して任意の読み取りまたはそれへの書き込みのいずれかを行う。この例において、属性データ168は、「R」(読み取り可能)、「W」(書き込み可能)、「X」(実行可能)および「C」(キャッシュ可能)と表された4つのフィールドを含む。各フィールドは、処理ユニット110と処理ユニット120のアーキテクチャに依存する1つまたは複数のビットのサイズである。可読フィールド値と書き込み可能フィールド値は、処理ユニット110が物理メモリページ172からの読み取りまたは物理メモリページ172への書き込みが可能かどうかを示す。実行可能フィールド値は、処理ユニット110が物理メモリページ172のコンテンツを実行可能かどうか示す。キャッシュ可能フィールド値は、処理ユニット110が例えばL1またはL2キャッシュにおいて、物理メモリページ172のコンテンツをキャッシュし得るかどうかを示す。
[0070]MMU112がページテーブルエントリ160を読み取ると、MMU112は、仮想アドレスを物理アドレス166に変換し、MMU112は、物理アドレス166に基づいて物理メモリページ172にアクセスし得る。MMU112は、アクセスのタイプが属性データ168のフィールド値に基づいて許可されることを確実にする。MMU112はまた、キャッシュできないように設計されたメモリページが、第1の処理ユニット110によってキャッシュされないことを確実にする役割を担っている。属性データフィールドの値が要求されたアクセスタイプが許可されないことを示す場合、MMU112は、オペレーティングシステムまたはクライアントアプリケーションのいずれかが操作し得る例外をスローし得る。
[0071]読み取り可能、書き込み可能、実行可能、およびキャッシュ可能フィールドは第1のページテーブルエントリ160が含み得るいくつかのフィールド値の単なる例である。第1のページテーブルエントリ160はまた、1つまたは複数の追加の値および/または追加の値の組み合わせを含み得る。前述のフィールドに加えて、ページテーブルエントリ160はまた、1つまたは複数の有効ビットを含み得る。各有効ビットは、異なる処理ユニットに関する属性データを含む特定のページテーブルエントリが有効であるかどうかを示す。
[0072]第1の処理ユニット110で実行する同じアプリケーションのいくつかまたは全ての部分はまた、処理ユニット120で実行し得、および同じ物理および仮想メモリアドレスにおいて同じ物理メモリページ172にアクセスすることを試み得る。しかし、いくつかの環境においては、物理メモリページ172をアクセス可能性データ、例えば物理メモリページ172への異なる許可の異なるセットに割り当てることが望ましくあり得る。例えば、第1の処理ユニット110は、実行するために、第2の処理ユニット120に関するGPUコマンドを用いて、GPU、例えば第2の処理ユニット120のコマンドバッファを満たすCPUであっても良い。GPUコマンドは、第1の処理ユニット110によって実行可能では無いはずであるが、第2の処理ユニット120によっては実行可能であるはずである。したがって、実行可能な属性フィールド値は、処理ユニット110と処理ユニット120では異なるはずである。
[0073]第1の処理ユニット110および112に異なる属性データのセットを適用するために、第2の処理ユニットのMMU114は、代替の場所からページ属性データの第2のセットを読み取り得る。図3の例において、システムメモリ130は、追加の処理ユニットに関する属性情報を含む追加のページテーブルを含み得、それは、代替の場所を備え得る。例えば、第1のページテーブルエントリ160は、第1のページテーブルに属し得る。第2のページテーブルエントリ162は、第2のページテーブルに属し得、および第3のページテーブルエントリ164は、第3のページテーブルに属し得る。
[0074]本開示の技術にしたがってメモリのページにアクセスしているときに、第2の処理ユニット120は、第1の処理ユニット110に関して上で説明された方法において、第1のページテーブルエントリ160にアクセスする。ページテーブルエントリ160は、処理ユニット110に関する属性データ168と同様に、物理メモリページ172の物理アドレス166と識別子(ID)170を含む。識別子170は、代替の場所に関連付けられても良く、図3の例において、それは、複数の並行するページテーブル内の第2のページテーブルエントリであり得る。いくつかの例において、第1のページテーブルエントリ160はまた、1つまたは複数の追加のページテーブルエントリに対応する1つまたは複数の有効ビットを含み得る。第2の処理ユニット120はまた、代替の場所にアクセスし、図3の例において、それは、第2の処理ユニット120に関する属性データを含む追加のページテーブルエントリである。
[0075]図3の例において、第2の処理ユニット120は、ページテーブルエントリ160のID170に基づいて、追加のページテーブルエントリ、例えばページテーブルエントリ162を決定する。MMU122がID170を決定すると、第2の処理ユニット120は、ID170に基づいて、追加のページテーブルエントリ、すなわちページテーブルエントリ162を読み取る。いくつかの例において、ID170の値は、ページテーブルエントリ162を含むページテーブル132の特定のページテーブルを示すか、あるいは識別し得る。MMU122は、ページテーブルエントリ166を読み取るために使用された同じ仮想アドレスに基づくだけでなく、ID170によって示されたページテーブルからもページテーブルエントリ162を読み取る。
[0076]ページテーブルエントリ162は、第2の処理ユニット120に関するページ属性データを含む。ページテーブルエントリ162のページ属性データは、第2の処理ユニット120が、物理メモリページ172を読み取り、書き込み、実行、およびキャッシュし得るかどうかを示すフィールド値を含み得る。いくつかの例において、ページテーブルエントリ162の属性データは、ページテーブルエントリ160より少ない属性フィールドを含み得る。この場合、MMU122は、ページテーブルエントリ162が対応する属性フィールド値を含むときにページテーブルエントリ160から属性フィールド値を決定し得る。
[0077]いくつかの例において、ページテーブルエントリ160のID170は2つ以上の識別子値を含み得る。例として、3つのプロセッサを有するシステムにおいて、ID170は、2つの値を備え得る。第1の値は、第2の処理ユニット120に関するページテーブルを示し、ならびに第2の値は、第3の処理ユニットに関する属性データを有するページテーブルを示す。ID170によって示された第1のおよび第2のページテーブルの両方は、ページテーブル132に含まれ得る。
[0078]図4は、本開示の技術にしたがって、仮想メモリアドレスを物理メモリアドレスにマッピングするための技術の例を示す概念図である。図4は、第1のページテーブルエントリ180と第2のページテーブルエントリ182を含む。第1のページテーブルエントリ180と第2のページテーブルエントリ182はそれぞれ、ページテーブルエントリ132の単一ページテーブル内のページテーブルエントリであり得る。図4の例において、ページテーブルエントリ132は単一ページテーブルを備え得る。
[0079]図4の例において、第1の処理ユニット110または第2の処理ユニット120で実行するアプリケーションは、仮想メモリアドレスに関連付けられる物理メモリのページにアクセスすることを試み得る。処理ユニットのMMUは、仮想アドレスを物理アドレスに変換し、物理アドレスに関連付けられるメモリの物理ページの任意の読み取りまたはそれへの書き込みのいずれかを操作する。TLBは、ページテーブルからの検索待ち時間を短縮するために、それらの仮想アドレスに基づいて、頻繁に使用されたメモリのページをキャッシュし得る。
[0080]図4の例において、特定の仮想アドレスにアクセスすることを試みる第1の処理ユニット110で実行するアプリケーションは、第1のMMU112にTLB114を使用して検索を行わせる。TLB114が要求されたページテーブルエントリ(「第1のページテーブルエントリ」と呼ばれる)のキャッシュされたコピーを有する場合、TLB114は、要求されたページテーブルエントリをMMU112に返す。TLB114が第1のページテーブルエントリのキャッシュされたコピーを有さない場合、MMU112は、ページテーブルから要求されたページテーブルエントリを検出する。
[0081]MMU112は、第1の処理ユニット110に関連付けられるページテーブルエントリを含む特定のページテーブルからページテーブルエントリ180を検出し得る。要求されたページテーブルエントリを検出するために、MMU112またはTLB114は、ページテーブルへのインデックスとして要求中のアプリケーションの仮想アドレスを使用し、仮想アドレスに関連付けられる要求されたページテーブルエントリ、すなわち、この例においてはページテーブルエントリ180、を検出する。
[0082]ページテーブルエントリ180は、物理アドレス184、属性データ186、およびポインタ188を含む。物理アドレス184は、物理メモリページ190の物理アドレスを示す。MMU112は、物理アドレス184に基づいて物理メモリページ190に対して任意の読み取りまたはそれへの書き込みのいずれかを行う。この例において、属性データ188は、「R」(読み取り可能)、「W」(書き込み可能)、「X」(実行可能)および「C」(キャッシュ可能)と表された4つのフィールドを含む。各フィールドは、第1の処理ユニット110と第2の処理ユニット120のアーキテクチャに依存する1つまたは複数のビットのサイズである。可読フィールド値と書き込み可能フィールド値は、処理ユニット110が物理メモリページ190に対する読み取り、または物理メモリページ190への書き込みが可能かどうかを示す。実行可能フィールド値は、処理ユニット110が物理メモリページ190のコンテンツを実行できるかどうかを示す。キャッシュ可能フィールド値は、処理ユニット110が例えばL1またはL2キャッシュにおいて、物理メモリページ190のコンテンツをキャッシュし得るかどうかを示す。
[0083]MMU112がページテーブルエントリ180を読み取ると、MMU112は、仮想アドレスを物理アドレス184に変換し、MMU112は、物理アドレス184に基づいて物理メモリページ190にアクセスし得る。MMU112は、例えば読み取り、書き込み、または実行などのアクセスのタイプが属性データ186のフィールド値に基づいて許可されることを確実にする。MMU112はまた、キャッシュできないように設計されたメモリページが第1の処理ユニット110によってキャッシュされないことを確実にする役割を担っている。属性データフィールドの値が要求されたアクセスタイプが許可されないことを示す場合、MMU112は、オペレーティングシステムまたはクライアントアプリケーションのいずれかが操作し得る例外をスローし得る。
[0084]読み取り可能、書き込み可能、実行可能、およびキャッシュ可能なフィールドは、ページテーブルエントリ180が含み得るフィールド値の単なるいくつかの例である。第1のページテーブルエントリ180はまた、1つまたは複数の追加の値を含み得る。前述のフィールドに加えて、ページテーブルエントリ180はまた、1つまたは複数の有効ビットを含み得る。各有効ビットは、異なる処理ユニットに関する属性データを含む特定のページテーブルエントリが有効であるかどうかを示す。
[0085]第1の処理ユニット110で実行する同じアプリケーションのいくつかまたは全ての部分は第2の処理ユニット120でも実行し得、かつ同じ物理および仮想メモリアドレスにおける同じ物理メモリページ190にアクセスしようとも試み得る。しかし、物理メモリページ190を、例えば、読み取り、書き込み、キャッシュ可能などの許可、および実行許可などのページ属性データの異なるセットに割り当てることが望ましいかもしれない。例えば、第1の処理ユニット110は、実行するために第2の処理ユニット120に関するGPUコマンドを用いて、GPU、例えば第2の処理ユニット120のコマンドバッファを満たすCPUであり得る。GPUコマンドは、第1の処理ユニット110によって実行可能で無いはずだが、第2の処理ユニット120によって実行可能であるはずである。したがって、実行可能な属性フィールド値は、処理ユニット110と処理ユニット120では異なるはずである。
[0086]処理ユニット110と112に異なる属性データのセットを適用するために、追加の処理ユニットに関する追加の属性データを含むシステムメモリ130のような代替の場所が存在し得る。本開示の技術にしたがって、メモリのページにアクセスしているときに、第2の処理ユニット120のMMU122は、第1の処理ユニット110に関して上で説明した方法で、ページテーブルエントリ180にアクセスする。ページテーブルエントリ180は、処理ユニット110に関する属性データ168と同様に、物理メモリページ190の物理アドレス184とポインタ188を含む。いくつかの例において、ページテーブルエントリ180は、1つまたは複数の追加のページテーブルエントリに対応する1つまたは複数の有効ビットを含み得る。本開示の技術にしたがって、第2の処理ユニット120はまた、代替の場所、すなわち第2の処理ユニット120に関する追加の属性データを含むページテーブルエントリにアクセスする。
[0087]図4の例において、第2の処理ユニット120は、ポインタ188の値に基づいて、例えばページテーブルエントリ182のような代替の場所を決定する。MMU122がポインタ188を決定すると、第2の処理ユニット120は、ポインタ188の値に基づいて、例えばページテーブルエントリ182のような追加のページテーブルエントリを読み取る。いくつかの例において、ポインタ188の値は、ページテーブルエントリ184と同じページテーブル内の例えば特定のページテーブルのような代替の場所の仮想アドレスおよび/または物理アドレスを示し得る。ポインタ188が仮想アドレスを含む場合、MMU112またはMMU112のようなMMUは、仮想アドレスから物理アドレスへの第2の変換を実行し得る。
[0088]ページテーブルエントリ182は、第2の処理ユニット120に関連する属性データを含む。ページテーブルエントリ182の属性データは、第2の処理ユニット120が物理メモリページ190を読み取り、書き込み、実行、およびキャッシュし得るかどうかを示すフィールド値を含み得る。いくつかの例において、ページテーブルエントリ182の属性データは、ページテーブルエントリ180より少ない属性フィールドを含み得る。この場合、MMU122は、ページテーブルエントリ182が対応する属性フィールド値を含む場合、ページテーブルエントリ180から属性フィールド値を決定し得る。
[0089]いくつかの例において、ページテーブルエントリ180のポインタ188は2つ以上の値を含み得る。例として、3つのプロセッサを有するシステムにおいて、ポインタ188は、2つの値(例えば、仮想アドレスおよび/または物理アドレス)を備え得る。第1の値は、第2の処理ユニット120に関するページテーブルを示し、ならびに第2の値は、第3の処理ユニットに関する属性データを有するページテーブルを示す。ポインタ188によって示された第1のおよび第2のページテーブルの両方は、ページテーブル180と同じページテーブルに含まれ得る。さらに、ポインタの値188は、2つ以上の処理ユニットに関する属性データを含む例えばページテーブルエントリなどの単一の代替の場所の値を示し得る単一の値を備え得る。いくつかの例において、複数のプロセッサに関する属性データを特定するために単一のページテーブルエントリを使用することで、ページテーブルに関するメモリの必要性が低くなり得る。
[0090]別の例において、ポインタ188は、別個のページテーブルエントリを示すのではなく、例えば、処理ユニット120のような第2の処理ユニットに関する追加のページ属性データを含む図1のレジスタ116またはレジスタ126のうちの1つのようなレジスタを備える代替の場所を示し得る。ポインタ188の値が、第2の処理ユニット120に関する属性データが例えば複数のレジスタ116または複数のレジスタ126内の1つのレジスタのようなレジスタファイルに記憶されることを示す場合、MMU122は、レジスタファイルの特定のレジスタから属性データを読み取り得る。第1の処理ユニット110または第2の処理ユニット120がARMアーキテクチャに準拠する場合の例において、ポインタが指し示すレジスタは、属性メモリ間接レジスタ(Memory Attribute Indirection Registers)(「MAIRnレジスタ」)であり得る。他の例において、演算デバイス110の任意の処理ユニット(例えば第1の処理ユニット110または第2の処理ユニット120)の任意のレジスタは、1つまたは複数のプロセッサに関する属性データを記憶するために使用され得る。
[0091]図5は、本開示の技術にしたがって説明された仮想メモリアドレスを物理メモリアドレスにマッピングする技術を示すフロー図である。図5の技術は、図1の演算デバイス100のような2つ以上の処理ユニットを有する演算デバイスによって実行され得る。図5の技術は、演算デバイス100に関連して説明されるが、図5の技術は、広いアレイの演算デバイスに適用可能であり、および演算デバイス100として構成されたデバイスのみに限定されるものではないことが理解されるべきである。図5の例において、第1の処理ユニット110はCPUであっても良くならびに第2の処理ユニット120はGPUであっても良い。様々な例において、第1の処理ユニット110および/または第2の処理ユニット120は、演算デバイス100に含まれ得るビデオまたは静止カメラ、ネットワークカード、デジタル信号プロセッサ(DSP)、I/Oプロセッサまたはコントローラ、または任意の他の処理ユニットのような任意のIOデバイスを備え得る。
[0092]第1の処理ユニット110は、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取る(410)。第1の処理ユニット110は、第1のページテーブルエントリから第1のページ属性データを決定し、ここにおいて、第1のページ属性データが第1の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義する(420)。第2の処理ユニット120はまた、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取る(430)。いくつかの例において、第2の処理ユニット120は、第1のページテーブルエントリを読み取るのと並行して第2のページテーブルから第2のページテーブルエントリを読み取り得る。
[0093]第2の処理ユニット120は、代替の場所から第2のページ属性データを決定し、ここにおいて、代替の場所は、第1のページテーブルエントリに関連付けられ、および第2のページ属性データは、第2の処理ユニットに関するメモリの物理ページの1つまたは複数のアクセス可能性属性を定義する(440)。次に、第1の処理ユニット110は第1のページ属性データの1つまたは複数アクセス可能性の属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスし(450)、および第2のページ属性データの1つまたは複数のアクセス可能性属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスする(460)。いくつかの例において、第1および第2のページ属性データは、メモリのページが読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する。いくつかの例において、第2のページテーブルエントリは、第1のページテーブルの第2のページテーブルエントリを備え、およびページテーブルエントリを読み取るために、第2の処理ユニット120は、第1のページテーブルエントリのポインタ値に基づいて、第1のページテーブルから第2のページテーブルエントリを読み取る。いくつかの例において、ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備え得る。他の例において、代替の場所はレジスタを備え得、ここにおいて、レジスタは、第1のページテーブルエントリにおけるポインタ値に基づいて第1のページテーブルエントリに関連付けられる。
[0094]一例において、第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、ならびに第2の処理ユニットは第2のMMUを備え得、ここにおいて、第1のMMUは、第1のページテーブルおよび代替の場所のうちの少なくとも1つにアクセスするように構成され、および第2のMMUは、第1のページテーブルおよび代替の場所のうちの少なくとも1つにアクセスするように構成される。
[0095]一例において、代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり得、および第2の処理ユニット120は第1のページテーブルエントリから第2のページテーブルに関連付けられるデータを読み取り得る。第2の処理ユニット120は、第1のページテーブルエントリから第2のページテーブルに関連付けられるデータを読み取り得る。第2のページ属性データを読み取ることは、第2のページテーブルに関連付けられるデータに基づいて、第2のページテーブルを第2の処理ユニット120を用いて識別することを備え得る。いくつかの例において、第2のページテーブルに関連付けられるデータは、複数の並行するページテーブルから第2のページテーブルを識別する識別子を備える。
[0096]図5に示されたプロセスは、第2の処理ユニット120を用いて、第1のページ属性データを第2のページ属性データと結合し、結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成することをさらに含み得る。第2の処理ユニット120は、結合されたページ属性データの1つまたは複数の属性にしたがって、物理アドレスに関連付けられるメモリの物理ページにアクセスする。いくつかの例において、第2のページ属性データは、第1のページ属性データの1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む。
[0097]図5のプロセスは、第1の処理ユニット110を用いて、第2のページ属性データが有効であるかどうかを示す第1のページテーブルエントリから有効データを読み取ることをさらに含み得る。第2のページ属性データを決定するために、第1のページテーブルエントリからの有効データが、第2のページ属性データが有効であることを示す場合、第2の処理ユニット120は第2のページ属性データを決定し得る。
[0098]システムメモリ130の例は、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM(登録商標))、CD−ROMまたは他の光学ディスクストレージ、磁気ディスクストレージ、または他の磁気記憶デバイス、フラッシュメモリ、または命令またはデータ構造の形式で所望のプログラムコードを搬送または記憶するために用いられ得るおよびコンピュータまたはプロセッサによってアクセスされ得る任意の他の媒体を含むが、それらに限定されることはない。システムメモリ130は、いくつかの例において、非一時的な記憶媒体として考えられ得る。用語「非一時的な」は、記憶媒体が、搬送波または伝播信号に組み込まれないことを示し得る。しかし、用語「非一時的な」は、システムメモリ130が非可動であることを意味すると解釈されるべきではない。一例として、システムメモリ130は、デバイス100から取り除かれ、および別のデバイスへと移動され得る。別の例として、実質的にシステムメモリ130に類似する記憶デバイスは、デバイス100に挿入され得る。特定の例において、非一時的な記憶媒体は、(例えばRAMにおいて)経時的に変化することが可能なデータを記憶し得る。
[0099]1つまたは複数の例において、説明された機能は、ハードウェア、ソフトウェア、ファ−ムウェア、またはそれらの任意の組み合わせにおいて実装され得る。ソフトウェアで実装される場合、この機能は、1つまた複数の命令またはコードとして、コンピュータ可読媒体に記憶されるかまたはコンピュータ可読媒体を介して送信され、およびハードウェアベースの処理ユニットによって実行され得る。コンピュータ可読媒体は、データ記憶媒体、または、例えば通信プロトコルにしたがって、ある場所から別の場所へコンピュータプログラムの転送を容易にする任意の媒体を含む通信媒体などの実体のある媒体に対応するコンピュータ可読記憶媒体を含み得る。この方法において、コンピュータ可読媒体は一般的に、(1)非一時的な実体のあるコンピュータ可読記憶媒体、または(2)信号または搬送波のような通信媒体に対応し得る。データ記憶媒体は、本開示で説明された技術の実施のための命令、コード、および/またはデータ構造を検出するために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされ得るいずれかの使用可能な媒体であり得る。コンピュータ・プログラム・プロダクトは、コンピュータ可読媒体を含み得る。
[0100]限定ではなく例として、こういったコンピュータ可読媒体は、RAM、ROM、EEPROM、CD−ROMまたは他の光学ディスクストレージ、磁気ディスクストレージまたは他の磁気記憶デバイス、フラッシュメモリ、または命令またはデータ構造の形式で所望のプログラムコードを記憶するように用いられ得るおよびコンピュータによってアクセスされ得る任意の他の媒体を備えることが可能である。同様に、任意の接続は、コンピュータ可読媒体と適切に呼ばれ得る。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者線(DSL)、または赤外線、無線およびマイクロ波のような無線技術を用いるウェブサイト、サーバ、または他の遠隔ソースから送信される場合、同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、無線およびマイクロ波のような無線技術が、媒体の定義に含まれる。しかし、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりに非一時的な実体のある記憶媒体を対象にしていることが理解されるべきである。ここで用いられたようなディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光学ディスク、(CD)、デジタル多用途ディスク(DVD)、フロッピー(登録商標)ディスク、およびBlu−ray(登録商標)ディスクを含み、ここにおいて、ディスク(disk)が通常データを磁気的に再生する一方で、ディスク(disc)はレーザを使用して光学的にデータを再生する。上記の組み合わせはまた、コンピュータ可読媒体の範囲に含まれるべきである。
[0101]命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の等価の集積またはディスクリート論理回路のような1つまたは複数のプロセッサによって実行可能であり得る。したがって、ここで用いられる用語「プロセッサ」は、ここで説明された技術の実施に適した前述の構造または任意の他の構造のいずれかを指し得る。さらに、いくつかの態様において、ここに記載された機能は、符号化および復号のために構成された専用のハードウェアおよび/またはソフトウェアモジュール内に提供されるか、または一体化されたコーデックに組み込まれ得る。同様に、この技術は、1つまたは複数の回路または論理要素において十分に実施され得る。
[0102]本開示の技術は、ワイヤレスハンドセット、集積回路(IC)、またはICのセット(例えばチップセット)を含む多種多様なデバイスまたは装置において実施され得る種々の構成要素、モジュール、またはユニットは、開示された技術を実行するように構成されたデバイスの機能的態様を強調するように本開示において説明されてきたが、必ずしも異なるハードウェアユニットによる実現を必要とするわけではない。むしろ、上述されたように、様々なユニットがコーデックハードウェアユニットに組み合わされ得るか、あるいは適切なソフトウェアおよび/またはファームウェアと共に、上に記載した1つまたは複数のプロセッサを含む相互に動作可能なハードウェアユニットの集合によって提供され得る。
[0103]様々な例が説明されてきた。これらおよび他の例は、下記の請求項の範囲内である。
[0103]様々な例が説明されてきた。これらおよび他の例は、下記の請求項の範囲内である。
以下に、本願出願の当初の特許請求の範囲に記載された発明を付記する。
[C1]
第1の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、
前記第1の処理ユニットを用いて、前記第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、前記第1のページ属性データは、前記第1の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第2の処理ユニットを用いて、前記第1のページテーブル内の前記第1のページテーブルエントリから前記物理アドレスを読み取ることと、
前記第2の処理ユニットを用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、前記第2の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第1の処理ユニットを用いて、前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、
前記第2の処理ユニットを用いて、前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
を備える、メモリにアクセスする方法。
[C2]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2のページ属性データを決定することは、
前記第2の処理ユニットを用いて、前記第1のページテーブルエントリを読み取ることと並行して、前記第2のページテーブルエントリから前記第2のページ属性データを決定することをさらに備える、C1に記載の方法。
[C3]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、前記方法は、
前記第2の処理ユニットを用いて、前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取ることをさらに備え、
ここにおいて、前記第2のページ属性データを決定することは、
前記第2の処理ユニットを用いて、前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別することをさらに備える、C1に記載の方法。
[C4]
前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、C3に記載の方法。
[C5]
前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C1に記載の方法。
[C6]
前記ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備える、C5に記載の方法。
[C7]
結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第2の処理ユニットを用いて、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせることをさらに備え、
ここにおいて、前記第2の処理ユニットは、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、C1に記載の方法。
[C8]
前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、C7に記載の方法。
[C9]
前記第1の処理ユニットを用いて、前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取ることをさらに備え、
ここにおいて、前記第2のページ属性データを決定することは、前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2の処理ユニットを用いて、前記第2のページ属性データを決定することをさらに備える、C1に記載の方法。
[C10]
前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、C1に記載の方法。
[C11]
前記代替の場所はレジスタを備え、
ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C1に記載の方法。
[C12]
前記第1の処理ユニットはCPUであり、ならびに前記第2の処理ユニットはGPUである、C1に記載の方法。
[C13]
前記第1の処理ユニットは第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理ユニットは第2のMMUを備え、ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成され、および前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成される、C12に記載の方法。
[C14]
第1のページテーブルエントリを含む第1のページテーブルと、ここにおいて、前記第1のページテーブルエントリは物理アドレスをさらに含み、
前記第1のページテーブルエントリに関連付けられる代替の場所と、
前記物理アドレスに関連付けられるメモリの物理ページと、
を記憶するための手段と、
第1の処理をするための手段と、ここにおいて、前記第1の処理をするための手段は、
前記物理アドレスを前記第1のページテーブルエントリから読み取るための手段と、
前記第1のページテーブルエントリから第1のページ属性データを決定するための手段と、ここにおいて、前記第1のページ属性データは、前記第1の処理をするための手段に関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスを用いてメモリの物理ページにアクセスするための手段と、
を備え、
第2の処理をするための手段と、ここにおいて、前記第2の処理をするための手段は、
前記第1のページテーブルエントリを前記第1のページテーブルから読み取るための手段と、
前記第1のページテーブルエントリから前記物理アドレスを決定するための手段と、
前記代替の場所から第2のページ属性データを決定するための手段と、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、前記第2の処理をするための手段に関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスするための手段と、
を備え、
を備える装置。
[C15]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2のページ属性データを決定するための前記手段は、
前記第1のページ属性データを決定するための前記手段と並行して、前記第2のページテーブルエントリから前記第2のページ属性データを決定するための手段をさらに備える、C14に記載の装置。
[C16]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、前記第2の処理をするための手段は、
前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取るための手段をさらに備え、
ここにおいて、前記第2のページ属性データを決定するための前記手段は、
前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別するための手段をさらに備える、C14に記載の装置。
[C17]
前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、C16に記載の装置。
[C18]
前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C14に記載の装置。
[C19]
前記ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備える、C18に記載の装置。
[C20]
前記第2の処理をするための手段は、
結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせるための手段をさらに備え、
ここにおいて、前記第2の処理をするための手段が、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、C14に記載の装置。
[C21]
前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、C20に記載の装置。
[C22]
前記第1の処理をするための手段は、前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取るための手段をさらに備え、
ここにおいて、前記第2のページ属性データを決定するための前記手段は、
前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2のページ属性データを決定するための手段をさらに備える、C14に記載の装置。
[C23]
前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、C14に記載の装置。
[C24]
前記代替の場所はレジスタを備え、
ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C14に記載の装置。
[C25]
前記第1の処理をするための手段はCPUであり、ならびに前記第2の処理をするための手段はGPUである、C14に記載の装置。
[C26]
前記第1の処理をするための手段は第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理をするための手段は第2のMMUを備え、
ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするために構成された手段を備え、および前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするための手段を備える、C25に記載の装置。
[C27]
第1のページテーブルエントリを含む第1のページテーブルと、ここにおいて、前記第1のページテーブルエントリは物理アドレスをさらに含み、
前記第1のページテーブルエントリに関連付けられる代替の場所と、
前記物理アドレスに関連付けられるメモリの物理ページと、
を記憶するメモリと、
前記物理アドレスを前記第1のページテーブルから読み取ることと、
前記第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、前記第1のページ属性データは、第1の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
を行うように構成された前記第1の処理ユニットと、
前記第1のページテーブルエントリを前記第1のページテーブルから読み取ることと、
前記第1のページテーブルエントリから前記物理アドレスを決定することと、
前記代替の場所から第2のページ属性データを決定することと、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、第2の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
を行うように構成された前記第2の処理ユニットと、
を備える、装置。
[C28]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2のページ属性データを決定するために、前記第2の処理ユニットは、前記第2のページテーブルエントリから前記第2のページ属性データを決定することと前記第1のページテーブルエントリを読み取ることを並行して行うようにさらに構成される、C27に記載の装置。
[C29]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、前記第2の処理ユニットは、
前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取るようにさらに構成され、
ここにおいて、前記第2のページ属性データを決定するために、前記第2の処理ユニットは、前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別するようにさらに構成される、C27に記載の装置。
[C30]
前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、C29に記載の装置。
[C31]
前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C27に記載の装置。
[C32]
前記ポインタ値は、仮想アドレスおよび物理アドレスのうちの少なくとも1つを備える、C31に記載の装置。
[C33]
前記第2の処理ユニットは、
結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせるようにさらに構成され、
ここにおいて、前記第2の処理ユニットは、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、C27に記載の装置。
[C34]
前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、C33に記載の装置。
[C35]
前記第1の処理ユニットは、前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取るようにさらに構成され、
ここにおいて、前記第2のページ属性データを決定するために、前記第2の処理ユニットは、
前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2のページ属性データを決定するようにさらに構成される、C27に記載の装置。
[C36]
前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、C27に記載の装置。
[C37]
前記代替の場所はレジスタを備え、
ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C27に記載の装置。
[C38]
前記第1の処理ユニットはCPUであり、ならびに前記第2の処理ユニットはGPUである、C27に記載の装置。
[C39]
前記第1の処理をするための手段は、第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理をするための手段は第2のMMUを備え、
ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするために構成された手段を備え、および
前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするための手段を備える、C38に記載の装置。
[C40]
命令を記憶した非一時的なコンピュータ可読記憶媒体であって、実行されると、第1の処理ユニットと第2の処理ユニットに、
第1の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、
前記第1の処理ユニットを用いて、前記第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、前記第1のページ属性データは、前記第1の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第2の処理ユニットを用いて、前記第1のページテーブル内の前記第1のページテーブルエントリから前記物理アドレスを読み取ることと、
前記第2の処理ユニットを用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、前記第2の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
前記第1の処理ユニットを用いて、前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、
前記第2の処理ユニットを用いて、前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
を行わせる、非一時的なコンピュータ可読記憶媒体。
[C41]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2の処理ユニットに前記第2のページ属性データを決定させる命令は、実行されると、前記第2の処理ユニットに、
前記第2のページテーブルエントリから前記第2のページ属性データを決定することと前記第1のページテーブルエントリを読み取ることを並行して行わせる命令をさらに備える、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C42]
前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、
実行されると、前記第2の処理ユニットに、
前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取らせる命令をさらに備え、
ここにおいて、前記第2の処理ユニットに、前記第2のページ属性データを決定させる命令は、実行されると、前記第2の処理ユニットに、
前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別させる命令をさらに備える、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C43]
前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、C42に記載の非一時的なコンピュータ可読記憶媒体。
[C44]
前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C45]
前記ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備える、C44に記載の非一時的なコンピュータ可読記憶媒体。
[C46]
実行されると、前記第2の処理ユニットに、
結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせること行わせる命令をさらに備え、
ここにおいて、前記第2の処理ユニットは、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C47]
前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、C46に記載の非一時的なコンピュータ可読記憶媒体。
[C48]
実行されると、前記第1の処理ユニットに、
前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取らせる命令をさらに備え、
ここにおいて、前記第2の処理ユニットに前記第2のページ属性データを決定することを行わせる命令は、実行されると、前記第2の処理ユニットに、
前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2のページ属性データを決定させる命令をさらに備える、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C49]
前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C50]
前記代替の場所はレジスタを備え、
ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C51]
前記第1の処理ユニットはCPUであり、ならびに前記第2の処理ユニットはGPUである、C40に記載の非一時的なコンピュータ可読記憶媒体。
[C52]
前記第1の処理ユニットは第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理ユニットは第2のMMUを備え、ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成され、および前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成される、C51に記載の非一時的なコンピュータ可読記憶媒体。

Claims (52)

  1. 第1の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、
    前記第1の処理ユニットを用いて、前記第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、前記第1のページ属性データは、前記第1の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第2の処理ユニットを用いて、前記第1のページテーブル内の前記第1のページテーブルエントリから前記物理アドレスを読み取ることと、
    前記第2の処理ユニットを用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、前記第2の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第1の処理ユニットを用いて、前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、
    前記第2の処理ユニットを用いて、前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
    を備える、メモリにアクセスする方法。
  2. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2のページ属性データを決定することは、
    前記第2の処理ユニットを用いて、前記第1のページテーブルエントリを読み取ることと並行して、前記第2のページテーブルエントリから前記第2のページ属性データを決定することをさらに備える、請求項1に記載の方法。
  3. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、前記方法は、
    前記第2の処理ユニットを用いて、前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取ることをさらに備え、
    ここにおいて、前記第2のページ属性データを決定することは、
    前記第2の処理ユニットを用いて、前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別することをさらに備える、請求項1に記載の方法。
  4. 前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、請求項3に記載の方法。
  5. 前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
    ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項1に記載の方法。
  6. 前記ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備える、請求項5に記載の方法。
  7. 結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第2の処理ユニットを用いて、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせることをさらに備え、
    ここにおいて、前記第2の処理ユニットは、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、請求項1に記載の方法。
  8. 前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、請求項7に記載の方法。
  9. 前記第1の処理ユニットを用いて、前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取ることをさらに備え、
    ここにおいて、前記第2のページ属性データを決定することは、前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2の処理ユニットを用いて、前記第2のページ属性データを決定することをさらに備える、請求項1に記載の方法。
  10. 前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、請求項1に記載の方法。
  11. 前記代替の場所はレジスタを備え、
    ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項1に記載の方法。
  12. 前記第1の処理ユニットはCPUであり、ならびに前記第2の処理ユニットはGPUである、請求項1に記載の方法。
  13. 前記第1の処理ユニットは第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理ユニットは第2のMMUを備え、ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成され、および前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成される、請求項12に記載の方法。
  14. 第1のページテーブルエントリを含む第1のページテーブルと、ここにおいて、前記第1のページテーブルエントリは物理アドレスをさらに含み、
    前記第1のページテーブルエントリに関連付けられる代替の場所と、
    前記物理アドレスに関連付けられるメモリの物理ページと、
    を記憶するための手段と、
    第1の処理をするための手段と、ここにおいて、前記第1の処理をするための手段は、
    前記物理アドレスを前記第1のページテーブルエントリから読み取るための手段と、
    前記第1のページテーブルエントリから第1のページ属性データを決定するための手段と、ここにおいて、前記第1のページ属性データは、前記第1の処理をするための手段に関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスを用いてメモリの物理ページにアクセスするための手段と、
    を備え、
    第2の処理をするための手段と、ここにおいて、前記第2の処理をするための手段は、
    前記第1のページテーブルエントリを前記第1のページテーブルから読み取るための手段と、
    前記第1のページテーブルエントリから前記物理アドレスを決定するための手段と、
    前記代替の場所から第2のページ属性データを決定するための手段と、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、前記第2の処理をするための手段に関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスするための手段と、
    を備え、
    を備える装置。
  15. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2のページ属性データを決定するための前記手段は、
    前記第1のページ属性データを決定するための前記手段と並行して、前記第2のページテーブルエントリから前記第2のページ属性データを決定するための手段をさらに備える、請求項14に記載の装置。
  16. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、前記第2の処理をするための手段は、
    前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取るための手段をさらに備え、
    ここにおいて、前記第2のページ属性データを決定するための前記手段は、
    前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別するための手段をさらに備える、請求項14に記載の装置。
  17. 前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、請求項16に記載の装置。
  18. 前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
    ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項14に記載の装置。
  19. 前記ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備える、請求項18に記載の装置。
  20. 前記第2の処理をするための手段は、
    結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせるための手段をさらに備え、
    ここにおいて、前記第2の処理をするための手段が、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、請求項14に記載の装置。
  21. 前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、請求項20に記載の装置。
  22. 前記第1の処理をするための手段は、前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取るための手段をさらに備え、
    ここにおいて、前記第2のページ属性データを決定するための前記手段は、
    前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2のページ属性データを決定するための手段をさらに備える、請求項14に記載の装置。
  23. 前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、請求項14に記載の装置。
  24. 前記代替の場所はレジスタを備え、
    ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項14に記載の装置。
  25. 前記第1の処理をするための手段はCPUであり、ならびに前記第2の処理をするための手段はGPUである、請求項14に記載の装置。
  26. 前記第1の処理をするための手段は第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理をするための手段は第2のMMUを備え、
    ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするために構成された手段を備え、および前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするための手段を備える、請求項25に記載の装置。
  27. 第1のページテーブルエントリを含む第1のページテーブルと、ここにおいて、前記第1のページテーブルエントリは物理アドレスをさらに含み、
    前記第1のページテーブルエントリに関連付けられる代替の場所と、
    前記物理アドレスに関連付けられるメモリの物理ページと、
    を記憶するメモリと、
    前記物理アドレスを前記第1のページテーブルから読み取ることと、
    前記第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、前記第1のページ属性データは、第1の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
    を行うように構成された前記第1の処理ユニットと、
    前記第1のページテーブルエントリを前記第1のページテーブルから読み取ることと、
    前記第1のページテーブルエントリから前記物理アドレスを決定することと、
    前記代替の場所から第2のページ属性データを決定することと、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、第2の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
    を行うように構成された前記第2の処理ユニットと、
    を備える、装置。
  28. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2のページ属性データを決定するために、前記第2の処理ユニットは、前記第2のページテーブルエントリから前記第2のページ属性データを決定することと前記第1のページテーブルエントリを読み取ることを並行して行うようにさらに構成される、請求項27に記載の装置。
  29. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、前記第2の処理ユニットは、
    前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取るようにさらに構成され、
    ここにおいて、前記第2のページ属性データを決定するために、前記第2の処理ユニットは、前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別するようにさらに構成される、請求項27に記載の装置。
  30. 前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、請求項29に記載の装置。
  31. 前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
    ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項27に記載の装置。
  32. 前記ポインタ値は、仮想アドレスおよび物理アドレスのうちの少なくとも1つを備える、請求項31に記載の装置。
  33. 前記第2の処理ユニットは、
    結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせるようにさらに構成され、
    ここにおいて、前記第2の処理ユニットは、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、請求項27に記載の装置。
  34. 前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、請求項33に記載の装置。
  35. 前記第1の処理ユニットは、前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取るようにさらに構成され、
    ここにおいて、前記第2のページ属性データを決定するために、前記第2の処理ユニットは、
    前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2のページ属性データを決定するようにさらに構成される、請求項27に記載の装置。
  36. 前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、請求項27に記載の装置。
  37. 前記代替の場所はレジスタを備え、
    ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項27に記載の装置。
  38. 前記第1の処理ユニットはCPUであり、ならびに前記第2の処理ユニットはGPUである、請求項27に記載の装置。
  39. 前記第1の処理をするための手段は、第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理をするための手段は第2のMMUを備え、
    ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするために構成された手段を備え、および
    前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするための手段を備える、請求項38に記載の装置。
  40. 命令を記憶した非一時的なコンピュータ可読記憶媒体であって、実行されると、第1の処理ユニットと第2の処理ユニットに、
    第1の処理ユニットを用いて、第1のページテーブル内の第1のページテーブルエントリから物理アドレスを読み取ることと、
    前記第1の処理ユニットを用いて、前記第1のページテーブルエントリから第1のページ属性データを決定することと、ここにおいて、前記第1のページ属性データは、前記第1の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第2の処理ユニットを用いて、前記第1のページテーブル内の前記第1のページテーブルエントリから前記物理アドレスを読み取ることと、
    前記第2の処理ユニットを用いて、代替の場所から第2のページ属性データを決定することと、ここにおいて、前記代替の場所は、前記第1のページテーブルエントリに関連付けられ、前記第2のページ属性データは、前記第2の処理ユニットに関する前記メモリの物理ページの1つまたは複数のアクセス可能性属性を定義し、
    前記第1の処理ユニットを用いて、前記第1のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられるメモリの物理ページにアクセスすることと、
    前記第2の処理ユニットを用いて、前記第2のページ属性データの前記1つまたは複数のアクセス可能性属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスすることと、
    を行わせる、非一時的なコンピュータ可読記憶媒体。
  41. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリを備え、ここにおいて、前記第2の処理ユニットに前記第2のページ属性データを決定させる命令は、実行されると、前記第2の処理ユニットに、
    前記第2のページテーブルエントリから前記第2のページ属性データを決定することと前記第1のページテーブルエントリを読み取ることを並行して行わせる命令をさらに備える、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  42. 前記代替の場所は、第2のページテーブル内の第2のページテーブルエントリであり、
    実行されると、前記第2の処理ユニットに、
    前記第1のページテーブルエントリから前記第2のページテーブルに関連付けられるデータを読み取らせる命令をさらに備え、
    ここにおいて、前記第2の処理ユニットに、前記第2のページ属性データを決定させる命令は、実行されると、前記第2の処理ユニットに、
    前記第2のページテーブルに関連付けられる前記データに基づいて、前記第2のページテーブルを識別させる命令をさらに備える、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  43. 前記第2のページテーブルに関連付けられる前記データは、複数の並行するページテーブルから前記第2のページテーブルを識別する識別子を備える、請求項42に記載の非一時的なコンピュータ可読記憶媒体。
  44. 前記代替の場所は、前記第1のページテーブル内の第2のページテーブルエントリを備え、
    ここにおいて、前記第1のページテーブル内の前記第2のページテーブルエントリは、前記第1のページテーブルエントリのポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  45. 前記ポインタ値は、仮想アドレスと物理アドレスのうちの少なくとも1つを備える、請求項44に記載の非一時的なコンピュータ可読記憶媒体。
  46. 実行されると、前記第2の処理ユニットに、
    結合されたページ属性データの1つまたは複数のアクセス可能性属性を形成するために、前記第1のページ属性データの前記1つまたは複数の属性と前記第2のページ属性データの1つまたは複数の属性を組み合わせること行わせる命令をさらに備え、
    ここにおいて、前記第2の処理ユニットは、前記結合されたページ属性データの前記1つまたは複数の属性にしたがって、前記物理アドレスに関連付けられる前記メモリの物理ページにアクセスする、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  47. 前記第2のページ属性データは、前記第1のページ属性データの前記1つまたは複数の属性値とは異なる1つまたは複数の属性値を含む、請求項46に記載の非一時的なコンピュータ可読記憶媒体。
  48. 実行されると、前記第1の処理ユニットに、
    前記第2のページ属性データが有効であるかどうかを示す前記第1のページテーブルエントリから有効データを読み取らせる命令をさらに備え、
    ここにおいて、前記第2の処理ユニットに前記第2のページ属性データを決定することを行わせる命令は、実行されると、前記第2の処理ユニットに、
    前記第1のページテーブルエントリからの前記有効データが、前記第2のページ属性データが有効であることを示す場合、前記第2のページ属性データを決定させる命令をさらに備える、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  49. 前記第1のページ属性データと前記第2のページ属性データは、前記メモリのページが、読み取り可能、書き込み可能、キャッシュ可能、実行可能、およびダーティのうちの少なくとも1つであるかどうかを定義する、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  50. 前記代替の場所はレジスタを備え、
    ここにおいて、前記レジスタは、前記第1のページテーブルエントリ内のポインタ値に基づいて、前記第1のページテーブルエントリに関連付けられる、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  51. 前記第1の処理ユニットはCPUであり、ならびに前記第2の処理ユニットはGPUである、請求項40に記載の非一時的なコンピュータ可読記憶媒体。
  52. 前記第1の処理ユニットは第1のメモリ管理ユニット(MMU)を備え、ならびに前記第2の処理ユニットは第2のMMUを備え、ここにおいて、前記第1のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成され、および前記第2のMMUは、前記第1のページテーブルおよび前記代替の場所のうちの少なくとも1つにアクセスするように構成される、請求項51に記載の非一時的なコンピュータ可読記憶媒体。
JP2016512914A 2013-05-06 2014-04-22 属性フィールドのマルチコアページテーブルセット Active JP6067928B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/888,069 US9436616B2 (en) 2013-05-06 2013-05-06 Multi-core page table sets of attribute fields
US13/888,069 2013-05-06
PCT/US2014/035036 WO2014182443A1 (en) 2013-05-06 2014-04-22 Multi-core page table sets of attribute fields

Publications (3)

Publication Number Publication Date
JP2016517992A true JP2016517992A (ja) 2016-06-20
JP2016517992A5 JP2016517992A5 (ja) 2016-12-15
JP6067928B2 JP6067928B2 (ja) 2017-01-25

Family

ID=50884497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016512914A Active JP6067928B2 (ja) 2013-05-06 2014-04-22 属性フィールドのマルチコアページテーブルセット

Country Status (8)

Country Link
US (1) US9436616B2 (ja)
EP (1) EP2994837B1 (ja)
JP (1) JP6067928B2 (ja)
KR (1) KR101708142B1 (ja)
CN (1) CN105164653B (ja)
ES (1) ES2642347T3 (ja)
HU (1) HUE035960T2 (ja)
WO (1) WO2014182443A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
US9817689B2 (en) 2015-02-27 2017-11-14 Red Hat, Inc. Dirty page tracking of guest-uncached memory
US10114768B2 (en) * 2016-08-29 2018-10-30 Intel Corporation Enhance memory access permission based on per-page current privilege level
US10713177B2 (en) 2016-09-09 2020-07-14 Intel Corporation Defining virtualized page attributes based on guest page attributes
CN110007987B (zh) * 2018-01-05 2022-03-25 武汉斗鱼网络科技有限公司 一种视图对象的层级管理方法及系统
US10713746B2 (en) 2018-01-29 2020-07-14 Microsoft Technology Licensing, Llc FIFO queue, memory resource, and task management for graphics processing
US10719268B2 (en) * 2018-06-29 2020-07-21 Microsoft Technology Licensing, Llc Techniques for safely and efficiently enqueueing and dequeueing data on a graphics processor
US11914726B2 (en) 2018-08-30 2024-02-27 Micron Technology, Inc. Access control for processor registers based on execution domains
US10915457B2 (en) * 2018-08-30 2021-02-09 Micron Technology, Inc. Memory access control through permissions specified in page table entries for execution domains
US10691592B2 (en) * 2018-10-30 2020-06-23 Micron Technology, Inc. Error-checking in namespaces on storage devices using a namespace table and metadata
US11216385B2 (en) 2019-05-15 2022-01-04 Samsung Electronics Co., Ltd. Application processor, system-on chip and method of operating memory management unit
US11119914B2 (en) * 2019-11-15 2021-09-14 Micron Technology, Inc. Method of operating a memory with dynamically changeable attributes
GB2604629B (en) * 2021-03-10 2023-06-07 Imagination Tech Ltd A computer system and method using a first page table and a second page table
KR20220147277A (ko) 2021-04-27 2022-11-03 삼성전자주식회사 제어 장치, 이를 포함하는 컴퓨팅 시스템, 및 이의 페이지 테이블 엔트리 생성 및 탐색 방법

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127146A (ja) * 1989-10-12 1991-05-30 Koufu Nippon Denki Kk 情報処理装置
JPH0793220A (ja) * 1993-09-20 1995-04-07 Agency Of Ind Science & Technol 仮想記憶管理方式
JP2003067357A (ja) * 2001-06-21 2003-03-07 Internatl Business Mach Corp <Ibm> 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法
US20070168644A1 (en) * 2006-01-17 2007-07-19 Hummel Mark D Using an IOMMU to Create Memory Archetypes

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446034B1 (en) 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
US6286092B1 (en) 1999-05-12 2001-09-04 Ati International Srl Paged based memory address translation table update method and apparatus
US7444636B2 (en) 2002-07-15 2008-10-28 Hewlett-Packard Development Company, L.P. Method and system of determining attributes of a functional unit in a multiple processor computer system
US7111145B1 (en) 2003-03-25 2006-09-19 Vmware, Inc. TLB miss fault handler and method for accessing multiple page tables
US7366869B2 (en) * 2005-03-17 2008-04-29 Qualcomm Incorporated Method and system for optimizing translation lookaside buffer entries
US7539842B2 (en) 2006-08-15 2009-05-26 International Business Machines Corporation Computer memory system for selecting memory buses according to physical memory organization information stored in virtual address translation tables
US7865675B2 (en) 2007-12-06 2011-01-04 Arm Limited Controlling cleaning of data values within a hardware accelerator
US8015361B2 (en) 2007-12-14 2011-09-06 International Business Machines Corporation Memory-centric page table walker
US8620880B2 (en) 2008-05-30 2013-12-31 Nec Corporation Database system, method of managing database, and computer-readable storage medium
US8244981B2 (en) 2009-07-10 2012-08-14 Apple Inc. Combined transparent/non-transparent cache
US20110016290A1 (en) 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
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
US20120233439A1 (en) 2011-03-11 2012-09-13 Boris Ginzburg Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices
US8938602B2 (en) 2012-08-02 2015-01-20 Qualcomm Incorporated Multiple sets of attribute fields within a single page table entry

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03127146A (ja) * 1989-10-12 1991-05-30 Koufu Nippon Denki Kk 情報処理装置
JPH0793220A (ja) * 1993-09-20 1995-04-07 Agency Of Ind Science & Technol 仮想記憶管理方式
JP2003067357A (ja) * 2001-06-21 2003-03-07 Internatl Business Mach Corp <Ibm> 不均一メモリ・アクセス(numa)データ処理システムおよびその操作方法
US20070168644A1 (en) * 2006-01-17 2007-07-19 Hummel Mark D Using an IOMMU to Create Memory Archetypes

Also Published As

Publication number Publication date
CN105164653A (zh) 2015-12-16
EP2994837A1 (en) 2016-03-16
US9436616B2 (en) 2016-09-06
EP2994837B1 (en) 2017-07-12
KR101708142B1 (ko) 2017-02-27
KR20160008176A (ko) 2016-01-21
HUE035960T2 (en) 2018-05-28
US20140331023A1 (en) 2014-11-06
ES2642347T3 (es) 2017-11-16
CN105164653B (zh) 2018-06-19
WO2014182443A1 (en) 2014-11-13
JP6067928B2 (ja) 2017-01-25

Similar Documents

Publication Publication Date Title
JP6067928B2 (ja) 属性フィールドのマルチコアページテーブルセット
JP6728419B2 (ja) 単一のページテーブルエントリ内の複数のセットの属性フィールド
US7613898B2 (en) Virtualizing an IOMMU
JP5680642B2 (ja) 周辺相互接続におけるi/o及び計算負荷軽減デバイスのための2レベルのアドレストランスレーションを用いるiommu
KR101614865B1 (ko) I/o 및 계산 오프로드를 위해 복수레벨 어드레스 변환을 포함하는 i/o 메모리 관리 유닛
US8631170B2 (en) Memory overcommit by using an emulated IOMMU in a computer system with a host IOMMU
JP2015503805A (ja) 物理アドレスを用いる非割当てメモリアクセス
US10459852B1 (en) Memory utilization analysis for memory management systems
US20160188251A1 (en) Techniques for Creating a Notion of Privileged Data Access in a Unified Virtual Memory System
US8347064B1 (en) Memory access techniques in an aperture mapped memory space
CN114063934B (zh) 数据更新装置、方法及电子设备
WO2023064590A1 (en) Software indirection level for address translation sharing
WO2023064609A1 (en) Translation tagging for address translation caching

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161026

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20161026

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20161026

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20161116

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161221

R150 Certificate of patent or registration of utility model

Ref document number: 6067928

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