JP6728419B2 - 単一のページテーブルエントリ内の複数のセットの属性フィールド - Google Patents

単一のページテーブルエントリ内の複数のセットの属性フィールド Download PDF

Info

Publication number
JP6728419B2
JP6728419B2 JP2019016836A JP2019016836A JP6728419B2 JP 6728419 B2 JP6728419 B2 JP 6728419B2 JP 2019016836 A JP2019016836 A JP 2019016836A JP 2019016836 A JP2019016836 A JP 2019016836A JP 6728419 B2 JP6728419 B2 JP 6728419B2
Authority
JP
Japan
Prior art keywords
processing unit
memory
chunk
attribute bits
page table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2019016836A
Other languages
English (en)
Other versions
JP2019109906A (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 JP2019109906A publication Critical patent/JP2019109906A/ja
Application granted granted Critical
Publication of JP6728419B2 publication Critical patent/JP6728419B2/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/656Address space sharing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Description

[0001] 本開示は、一般的には、コンピューティングに関し、より詳細には、仮想メモリアドレス空間を物理メモリアドレス空間にマッピングするための技法に関する。
[0002] 典型的なコンピューティングシステムは、物理メモリから読み取ったり、それに書き込んだりする、中央処理ユニット(CPU)およびグラフィックス処理ユニット(GPU)などの、複数の処理ユニットを含む。デバイスの様々な処理ユニットは、連続した物理メモリ空間を確保しておく(set aside)必要なしに、クライアントにより実行されているアプリケーションが連続した仮想アドレス空間に割り当てられることができるように、仮想アドレス指定スキームをインプリメントすることができる。各処理ユニットは、典型的に、仮想メモリアドレスを物理メモリにおける物理アドレスに変換する(translate)ためのメモリ管理ユニット(MMU)を有する。必要とされる仮想アドレスから物理アドレスへのマッピングを実行するために、各MMUは、システムメモリ中に個別のページテーブルを維持し、これらの個別のページテーブルの各々は、サイズにおいて数メガバイトになりうる。
[0003] 一般に、本開示で説明される技法は、仮想アドレスから物理アドレスへのマッピングをインプリメントするコンピューティングデバイスに関する。本開示の技法によると、2つ以上の処理ユニットが、仮想アドレスを物理アドレスにマッピングするための共通ページテーブルを共有しうる。共通ページテーブルのページテーブルエントリは、第1の処理ユニットのための属性セット、第2の処理ユニットのための属性セット、ならびにその他の属性セットなどの、複数のセットの属性フィールドを含みうる。複数のセットの属性フィールドを使用して、2つ以上の処理ユニットのための属性は、個別に管理されうる。例えば、本開示で説明される技法は、1つの処理ユニットのための読み取り/書き込みアクセスが、第2の処理ユニットのための読み取り/書き込みアクセスとは異なりうるように、第1および第2の処理ユニットの読み取り/書き込みアクセスの個別管理を可能にしうる。
[0004] 1つの例によると、装置が、第1の処理ユニット、第2の処理ユニット、およびメモリを含む。メモリは、第1の処理ユニットと第2の処理ユニットに共通であり、ジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納する共通ページテーブルを格納する。メモリはまた、共通ページテーブル内に、第1の処理ユニットおよび第2の処理ユニットが、複数のメモリチャンクのうちの1つのメモリチャンクにアクセスするために使用するページエントリを格納し、ここで、ページエントリは、第1の処理ユニットによるメモリチャンクのアクセシビリティ(accessibility)を定義する第1のセットの属性ビットと、第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える。
[0005] 別の例によると、方法が、第1の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、第1の処理ユニットによって、物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、第2の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、第2の処理ユニットによって、物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、を含む。共通ページテーブルは、第1の処理ユニットと第2の処理ユニットに共通であり、ジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納する。共通ページテーブルは、第1の処理ユニットおよび第2の処理ユニットが、メモリチャンクにアクセスするために使用するページエントリを備え、ページエントリは、第1の処理ユニットによるメモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える。
[0006] 別の例によると、装置が、第1の処理手段、第2の処理手段、およびメモリを含む。第1の処理手段は、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換するための手段と、物理メモリアドレスによって識別されるメモリチャンクにアクセスするための手段とを備え、第2の処理手段は、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換するための手段と、物理メモリアドレスによって識別されるメモリチャンクにアクセスするための手段とを含む。共通ページテーブルは、第1の処理手段と第2の処理手段に共通であり、ジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納する。共通ページテーブルは、第1の処理手段および第2の処理手段が、メモリチャンクにアクセスするために使用するページエントリを備え、ページエントリは、第1の処理手段によるメモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、第2の処理手段による同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える。
[0007] 別の例によると、コンピュータ可読記憶媒体が命令を記憶し、該命令は実行されると、第1の処理ユニットおよび第2の処理ユニットに、第1の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、第1の処理ユニットによって、物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、第2の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、第2の処理ユニットによって、物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、を行わせる。共通ページテーブルは、第1の処理ユニットと第2の処理ユニットに共通であり、ジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納する。共通ページテーブルは、第1の処理ユニットおよび第2の処理ユニットが、メモリチャンクにアクセスするために使用するページエントリを備える。ページエントリは、第1の処理ユニットによるメモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える。
図1は、本開示で説明される仮想メモリアドレスから物理メモリアドレスへのマッピング技法をインプリメントするように構成されたコンピューティングデバイスの例を示す。 図2は、本開示で説明される仮想メモリアドレスから物理メモリアドレスへのマッピング技法をインプリメントするように構成されたコンピューティングデバイスの別の例を示す。 図3は、本開示で説明される技法による、単一のページテーブルエントリ内に複数のセットの属性フィールドを有する共通ページテーブルの概念図を示す。 図4は、本開示で説明される仮想メモリアドレスから物理メモリアドレスへのマッピング技法を例示するフロー図を示す。
[0012] 一般に、本開示で説明される技法は、本開示において仮想から物理への(virtual-to-physical)マッピングとも称される、仮想アドレスから物理アドレスへのマッピングをインプリメントするコンピューティングデバイスに関する。より詳細には、本開示で説明される技法は、2つ以上の処理ユニットによって共有されうる共通ページテーブルに向けられる。共通ページテーブルのページテーブルエントリは、第1の処理ユニットのための属性セット、第2の処理ユニットのための属性セット、ならびにその他の属性セットなどの、複数のセットの属性フィールドを含みうる。複数のセットの属性フィールドを使用して、2つ以上の処理ユニットのための属性は、個別に管理されうる。例えば、1つの処理ユニットのための読み取り/書き込みアクセスは、第2の処理ユニットのための読み取り/書き込みアクセスとは異なりうる。
[0013] 中央処理ユニット(CPU)およびグラフィックス処理ユニット(GPU)などの処理ユニットは、物理メモリにアクセスすること(すなわち、物理メモリからデータを読み取ったり、それにデータを書き込んだりすること)を必要とする。データを読み取るまたは書き込むために、処理ユニットは、メモリ内のロケーションの物理アドレスにより、そこからデータが読み取られ、またはそこにデータが書き込まれる物理メモリ内のロケーションにアクセスする。しかしながら、処理ユニットにとって、すべてのメモリチャンクの物理アドレス(すなわち、そこにデータが書き込まれ、またはそこからデータが読み取られうる物理メモリのロケーション)を管理することは困難でありうる。この困難を克服するために、処理ユニットは、仮想アドレス指定を使用しうる。仮想アドレス指定では、処理ユニットで実行中の(executing on)アプリケーション(すなわち、クライアント)は、連続した仮想メモリアドレスを割り当てられる。アプリケーションは、異なる処理ユニットで実行中の異なるジョブを有する、複数のジョブを備えうる。処理ユニットの各々は、それぞれのメモリ管理ユニット(MMU)を含む。処理ユニットの各々のMMUは、仮想メモリアドレスから、物理メモリアドレスとも称される、実メモリアドレスを決定することを課される(tasked with)。
[0014] 例えば、MMUは、変換索引バッファ(TLB)と称されるキャッシュを含む。TLBは、最近アクセスされたメモリチャンクまたは頻繁にアクセスされたメモリチャンクなどの、選択されたメモリチャンクのための仮想から物理へのマッピングを格納する。メモリチャンクにアクセスするために、処理ユニットは、MMUにそのメモリチャンクのための仮想メモリアドレスを供給する。MMUは、順に(in turn)、そのメモリチャンクのための物理メモリアドレスを識別するためにTLBにアクセスする。(TLBヒットと称される)TLBにおいてマッピングが利用可能である場合には、MMUは、物理メモリアドレスを使用してメモリチャンクにアクセスする。代替として、MMUは、物理メモリアドレスを処理ユニットの異なるユニットまたはモジュールに供給し、それはその後、物理メモリアドレスを使用してメモリチャンクにアクセスする。
[0015] いくつかのケースでは、TLBは、仮想メモリアドレスのためのマッピングを含まないことがありうる(TLBミスと称される)。例えば、処理ユニットは、そのメモリチャンクが、最近アクセスされたメモリチャンクまたは頻繁にアクセスされたメモリチャンクではないので、その物理アドレスが、TLBによって格納されたページエントリに含まれていないメモリチャンクにアクセスする必要がありうる。これが起こった場合、処理ユニットは、システムメモリに格納されたページテーブルにアクセスする。
[0016] ページテーブルは、両方が仮想メモリアドレスを物理メモリアドレスにマッピングするページエントリを格納するという点で、TLBに類似している。ページテーブル中またはTLB中の1つのページテーブルエントリは、1つの仮想メモリアドレスを1つの物理メモリアドレスにマッピングする。しかしながら、ページテーブルは、処理ユニットのMMU内にローカルに格納されるTLBとは対照的に、システムメモリに格納される。また、ページテーブルは、TLBのような限られた数のページエントリの代わりに、処理ユニットのための仮想から物理へのアドレスマッピング全体を格納するので、ページテーブルのサイズは、一般的に、TLBのサイズよりもはるかに大きい。例えば、ページテーブルのサイズは、数メガバイトの範囲(megabytes range)になりうる。
[0017] いくつかの技法では、システムメモリは、処理ユニットの各々のための対応するページテーブルを格納する。例えば、システムメモリは、CPUのためのページテーブルを格納し、かつGPUのための別の個別のページテーブルを格納する。しかしながら、いくつかの事例では、これらの異なるページテーブルは、同一のページテーブルエントリを含む。したがって、CPUページテーブル中の複数のページテーブルエントリが、GPUページテーブル中のページテーブルエントリと同一であることが可能でありうる。例えば、CPUページテーブル中のページテーブルエントリは、1つの仮想メモリアドレスを物理メモリアドレスにマッピングすることができ、また、GPUページテーブル中のページテーブルエントリは、同じ仮想メモリアドレスを同じ物理メモリアドレスにマッピングすることができる。
[0018] 1つの例として、CPUで実行中のオペレーティングシステムは、アプリケーションに連続した仮想メモリアドレスを割り当てることを課されうる。アプリケーションは、CPUで実行中のいくつかのジョブと、GPUで実行中のいくつかのジョブとを有する、複数のジョブまたはタスクを含みうる。オペレーティングシステムはまた、ページテーブルにおいて、仮想メモリアドレスと物理メモリアドレスとの間のマッピングを格納しうる。オペレーティングシステムは、仮想メモリアドレスを割り当てることと、CPUとGPUの両方のためにこれら仮想メモリアドレスを物理アドレスにマッピングすることとを課されるので、オペレーティングシステムは、CPUとGPUの両方のための仮想から物理へのマッピングを格納する共通ページテーブルを作成しうる。
[0019] CPUとGPUがこのような共通ページテーブルを共有することにおいて利益が存在しうる。例えば、システムメモリは、重複するページテーブルエントリを格納するのではなく、システムメモリは、CPUページテーブルとGPUページテーブルにおける同一のページテーブルエントリのために単一のページエントリを格納することができ、これは、メモリの節約をもたらす。さらに、これらの同一のページテーブルエントリについては1つのページエントリが存在するので、2つの同一のページテーブルエントリの代わりに、単一のページテーブルエントリを更新することは、計算的により効率的になりうる。
[0020] いくつかの従前の技法が、ページテーブル共有を達成するために開発されてきた。これらの技法では、CPU MMUおよびGPU MMUは、システムメモリにおける共通ページテーブルのロケーションを指し示すポインタをそれぞれ格納する。CPUおよびGPUがメモリチャンクにアクセスする場合、それらのそれぞれのMMUは、共有ページテーブルから物理メモリアドレスを取り出すためにそれらのポインタを使用する。しかしながら、ページテーブルを共有するためのこれらの技法は、時に、メモリチャンクについての異なる処理ユニットの異なるアクセス能力を識別していないことから苦しむ(suffer from)ことがありうる。
[0021] 異なるアクセス能力は、異なる処理ユニットと関連づけられうる。例えば、ページエントリは、従来、32ビットである。最初の12ビットは、属性ビットとして予約され、残りの20ビットは、物理メモリアドレスを識別する。これらの属性ビットは、処理ユニットのアクセス能力を識別する。1つの例として、メモリチャンクのうちのいくつかは、読み取り可能および書き込み可能であるとして指定されることができ、他のメモリチャンクは、読み取りのみ可能であるとして指定されることができる。属性ビットのうちの1つまたは複数のビットが、このアクセシビリティの制限を実施する(enforce)。読み取り可能および書き込み可能、または読み取りのみ可能であるとしてメモリチャンクを指定するビットに加えて、属性ビットにおけるビットの他の例が存在する。例えば、属性ビットのうちの1つまたは複数の他のビットは、ある特定のメモリチャンク内のデータが、処理ユニットのL2キャッシュのようなキャッシュにも格納されるべきであることを示しうる。このように、ページエントリの属性ビットは、ページエントリにおけるアドレスビットによってアドレス指定されたメモリチャンクを記述しうる。
[0022] いくつかの事例では、1つの処理ユニットのための属性ビットは、別の処理ユニットのための属性ビットと異なる必要がありうる。例えば、CPUで実行中のオペレーティングシステムは、いくつかのチャンクを、CPUによって書き込み可能および読み取り可能であるとして指定し、これらの同じチャンクを、GPUによって読み取りのみ可能であるとして指定しうる。例えば、CPUおよびGPUがそれら自体のそれぞれのページテーブルを含む上述された例では、仮想アドレスから物理アドレスへのマッピングは、これらページテーブルの各々において同一でありうるが、属性ビットは、同一でないことがありうる。CPUおよびGPUが共通ページテーブルを共有する上述された他の例では、属性ビットは、CPUとGPUの両方によって共有されうる。これは、オペレーティングシステムに、両方ではなく、CPUまたはGPUのいずれかのために属性ビットを定義するように強制する。
[0023] 例えば、上記例での属性ビットは、CPUのアクセシビリティを定義する属性ビットであるが、必ずしもGPUのアクセシビリティとは限らない。これは、チャンクの誤った管理を潜在的にもたらしうる。例えば、GPUにとっては読み取りのみ可能になるように、メモリチャンクのアクセシビリティを制限することが望ましくありうる。しかしながら、このチャンクがCPUによって読み取り可能および書き込み可能であり、属性ビットがCPUとGPUを区別しないので、ポインタが共通ページテーブル内に用いられる(used into)例では、GPUは、メモリチャンクに不注意に(inadvertently)書き込みうる。
[0024] 本開示の技法は、特に、異なる処理ユニットのために、属性ビットを指定することに向けられる。例えば、GPU属性ビットは、GPUのためのアクセシビリティを定義し、CPU属性ビットは、CPUのためのアクセシビリティを定義する。このように、異なる処理ユニットは、共通ページテーブルを共有することができ、GPUのための属性ビットは、GPUのためのメモリチャンクのアクセシビリティを記述し、CPUのための属性ビットは、CPUのためのメモリチャンクのアクセシビリティを記述する。これら属性ビットはCPUおよびGPU用に明確に(specifically)指定されているので、GPUがメモリチャンクに誤って書き込む可能性が低減されるとともに、CPUおよびGPUのために異なるページテーブルを必要としないことによって、メモリの節約が達成されうる。
[0025] 異なる処理ユニットのために属性ビットを指定するための様々な技法が存在しうる。例えば、上述されたように、典型的に、ページエントリにおける32ビットのうちの12ビットが、属性ビットのために予約されている。これらの12ビットのうちの多数についての値が、GPUとCPUの両方について同一でありうる。その値がCPUとGPUについて異なりうる残りのビットについては、オペレーティングシステムは、どのビットがCPU用であり、どのビットがGPU用であるかを明確に指定しうる。例えば、12個の属性ビットのうちの最初の2ビットは、メモリチャンクが、CPUによって書き込み可能、読み取り可能、または、書き込み可能および読み取り可能であるかどうかを示すために予約されることができ、12個の属性ビットの次の2ビットは、このメモリチャンクが、GPUによって書き込み可能、読み取り可能、または、書き込み可能および読み取り可能であるかどうかを示すために予約されることができ、残りの8ビットは、GPUとCPUの両方に共通であることができる。
[0026] 別の例として、ページエントリは、32ビットより多く(例えば、40ビット)を含みうる。この例では、最後の20ビットは、アドレスマッピングのために予約されることができ、最初の20ビットは、属性ビットとして予約されることができる。これらの20ビットのちの最初の10ビットは、CPUのために予約されることができ、これら20ビットのうちの最後の10ビットは、GPUのために予約されることができる。代替として、最初の6ビットは、CPUのために予約されうる。その次の6ビットは、GPUのために予約されることができ、その次の8ビットは、CPUとGPUによって共有されることができる。これらビットの割り当ては、例として意図される。本開示の技法は、上記の例に限定されるようには考えられるべきではない。説明の目的のために、本開示のいくつかの技法は、CPUおよびGPUに関連して説明されているが、本開示のこれらの技法はまた、他のタイプの処理ユニットでインプリメントされうることが理解されるべきである。
[0027] 図1は、本開示の技法をインプリメントしうる、実例的なコンピューティングデバイス、コンピューティングデバイス100、を示す。コンピューティングデバイス100の例は、それに限定されるものではないが、モバイル無線電話、携帯情報端末(PDA)、ビデオゲーミングコンソール、ハンドヘルドゲーミングユニット、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビジョンセットトップボックス、デジタルメディアプレーヤ、スマートフォン、タブレットコンピュータ、カメラなどを含む。リソースの限られたデバイスにのみ限定されるものではないが、本開示の技法は、バッテリ式のデバイスを含むリソースの限られたデバイスに特定の利益をもたらしうる。本開示の技法は、例えば、限られたデバイスメモリをより効率的に使用することによってデバイスのパフォーマンス全体を改善することができ、より少ないページテーブルを維持することによって、計算の複雑さを低減させることができ、これは、順に、デバイスの応答性を改善するのみならず、電力消費を低減させることができる。
[0028] コンピューティングデバイス100は、第1の処理ユニット110、第2の処理ユニット120、およびシステムメモリ130を含む。第1の処理ユニット110は、MMU 112を含み、第2の処理ユニット120は、MMU 122を含む。MMU 110は、TLB 114を含むことができ、MMU 122は、TLB 124を含むことができる。第1の処理ユニット110は、例えば、デバイス100のCPUでありうる。第2の処理ユニット120は、例えば、ディスプレイ上での表示(presentation)ためにグラフィックスデータを出力するように動作可能なGPUでありうる。第1の処理ユニット110および第2の処理ユニット120は、さらに、CPUまたはGPUのようなプロセッサから信号処理をオフロード(offloads)するディスプレイコントローラ、ネットワーキングデバイス、または任意のタイプのデジタル信号処理(DSP)コアを含む様々な周辺デバイスのための処理ユニットのような他のタイプの処理ユニットを表しうる。第1の処理ユニット110および第2の処理ユニット120の例は、それに限定されるものではないが、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等な集積されたまたはディスクリートな論理回路を含みうる。本開示の技法は、概して、2つの処理ユニットに関連して説明されるが、これら技法は、2つよりも多くの処理ユニットでインプリメントされうる。
[0029] システムメモリ130は、コンピュータ可読記憶媒体の例でありうる。システムメモリ130は、例えば、ダイナミックRAM、スタティックRAM、サイリスタ(thyrisistor)RAM、ゼロ−キャパシタ(zero-capacitor)RAM、ツイントランジスタRAMのようなランダムアクセスメモリ(RAM)のタイプ、または何らかの他のタイプの揮発性メモリでありうる。システムメモリ130はまた、フラッシュメモリまたは他のタイプの不揮発性RAMのような、不揮発性メモリでありうる。システムメモリ130は、処理ユニット110および処理ユニット120に、本開示においてそれぞれに属する(ascribed)機能を実行させる命令を記憶しうる。このように、システムメモリ130は、1つまたは複数のプロセッサ、例えば、処理ユニット110および処理ユニット120に、様々な機能を実行させる命令を備えたコンピュータ可読記憶媒体であると考えられうる。しかしながら、いくつかの例では、このような命令は、システムメモリ130以外のメモリ(図1に図示せず)に記憶されうる。
[0030] 第1の処理ユニット110および第2の処理ユニット120は、システムメモリ130からデータを読み取り、また、それにデータを書き込むように構成される。データを読み取るまたは書き込むために、第1の処理ユニット110および第2の処理ユニット120は、システムメモリ130における特定の物理ロケーションにアクセスするように構成される。これらの特定のロケーションは、例えば、4KBのチャンクであることができ、各チャンクは、それ自体の固有の物理アドレスを有しうる。しかしながら、上述されたように、第1の処理ユニット110および第2の処理ユニット120は、第1の処理ユニット110または第2の処理ユニット120で実行中のアプリケーションが、連続した仮想メモリアドレスを割り当てられるように、仮想アドレス指定をインプリメントしうる。しかしながら、これらの連続した仮想メモリアドレスに対応する物理メモリアドレスは、断片化され、不連続でありうる。したがって、処理ユニット110および処理ユニット120は、対応する不連続な物理メモリアドレスではなく、これらの連続した仮想メモリアドレスを使用して、データを処理しうる。処理ユニット110および処理ユニット120がシステムメモリ130にアクセスする(すなわち、システムメモリ130から読み取るまたはそれに書き込む)必要がある場合、しかしながら、これらの仮想メモリアドレスは、物理メモリアドレスに変換される必要がある。
[0031] MMU 112は、第1の処理ユニット110のために、仮想メモリアドレスを物理メモリアドレスにマッピングするように構成され、MMU 122は、第2の処理ユニット120のために、仮想メモリアドレスを物理メモリアドレスにマッピングするように構成される。フルセット(full set)のページエントリを有する完全なページテーブルが、共通ページテーブル132に格納される。TLB 114およびTLB 124の各々は、共通ページテーブル132に格納されたページエントリのサブセットを格納する。このサブセットは、例えば、最近アクセスされたページエントリ、頻繁にアクセスされたページエントリ、または何らかの他の基準に基づいて選択されたページエントリでありうる。TLB 114に格納されたページエントリのサブセットは、TLB 124に格納されたページエントリのサブセットとは異なりうる。例えば、MMU 112を介して、第1の処理ユニット110によって最近アクセスされたまたは頻繁にアクセスされたページテーブルエントリは、MMU 122を介して、第2の処理ユニット120によって最近または頻繁にアクセスされたページテーブルエントリとは異なりうる。したがって、TLB 114は、TLB 124とは異なるページテーブルエントリのサブセットを格納しうる。
[0032] 例えば、第1の処理ユニット110が、仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合には、MMU 112は、TLB 114がその仮想メモリアドレスのためのページエントリを格納しているとき、特定の仮想メモリアドレスに対応する物理メモリアドレスを決定するためにTLB 114を使用しうる。決定された物理メモリアドレスを使用して、処理ユニット110は、システムメモリ130の特定の物理ロケーションから読み取るまたはそこに書き込むことができる。同様に、第2の処理ユニット120が、仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合には、MMU 122は、TLB 124がその仮想メモリアドレスのためのページエントリを格納しているとき、特定の仮想メモリアドレスに対応する物理メモリアドレスを決定するためにTLB 124を使用しうる。決定された物理メモリアドレスを使用して、処理ユニット120は、システムメモリ130から読み取るまたはそれに書き込むことができる。
[0033] 上述されたように、TLB 114およびTLB 124は、仮想メモリアドレスのサブセットのみのために、仮想から物理へのマッピングを格納するキャッシュでありうる。したがって、TLB 114は、処理ユニット110のための仮想から物理へのマッピング全体を格納しないことができ、同様に、TLB 124は、処理ユニット120のための仮想から物理へのマッピング全体を格納しないことができる。いくつかの事例では、MMU 112は、TLB 114にマッピングが格納されていない仮想メモリアドレスのための対応する物理メモリアドレスを決定する必要がありうる。TLB 114に含まれていない仮想メモリアドレスのためのマッピングを決定するために、第1の処理ユニット110は、システムメモリ130に格納された共通ページテーブル132にアクセスしうる。共通ページテーブル132は、処理ユニット110のための仮想から物理へのマッピング全体を含み、したがって、TLB 114およびTLB 124よりもはるかに大きくなりうる。
[0034] MMU 112と同様に、いくつかの事例では、MMU 122は、TLB 124にマッピングが格納されていない仮想メモリアドレスのための対応する物理メモリアドレスを決定する必要がありうる。TLB 124に含まれていない仮想メモリアドレスのためのマッピングを決定するために、第2の処理ユニット120は、システムメモリ130に格納された共通ページテーブル132にアクセスする。このように、MMU 122は、MMU 112と実質的に同様の方法で機能しうる。共通ページテーブル132は、処理ユニット120のためのみならず、処理ユニット110のための仮想から物理へのマッピング全体を含む。このように、第1の処理ユニット110および第2の処理ユニット120は、同じページテーブル(すなわち、図1の例における共通ページテーブル132)を共有する。MMU 112およびMMU 122が、処理ユニット110および処理ユニット120のために別々のページテーブルを維持した場合、処理ユニット110と処理ユニット120によって共有される共通ページテーブル132は、2つのページテーブルの組み合わされたサイズよりも小さくなりうる。共通ページテーブル132のページテーブルエントリのうちのいくつかは、MMU 112とMMU 122の両方によって共有されるので、共通ページテーブル132は、2つの個別のページテーブルの組み合わされたサイズよりも小さくなりうる。
[0035] 共通ページテーブル132は、仮想メモリアドレスを、メモリチャンクの物理メモリアドレスにマッピングする複数のページエントリを含みうる。メモリチャンクは、その物理メモリアドレスを介して個別にアクセス可能であるシステムメモリ130の一部分でありうる。各ページエントリは、第1のセットの属性ビットと第2のセットの属性ビットを含みうる。第1のセットの属性ビットは、第1の処理ユニット110のための、許可およびアクセス権などの、制御を設定することができ、一方、第2のセットの属性ビットは、第2の処理ユニット120のための制御を設定する。各ページエントリは、第1の処理ユニット110と第2の処理ユニット120の両方のための共通制御を設定する1セットの属性ビットのような、1つまたは複数の追加のセットの属性ビットをオプションで含みうる。
[0036] 共通ページテーブル132のページエントリのための第1のセットの属性ビットおよび第2のセットの属性ビットは、第1の処理ユニット110および第2の処理ユニット120が、共通ページテーブルを共有しながら、異なる許可およびアクセス権を有することを可能にしうる。1つの例として、第1のセットの属性ビットは、第1の処理ユニット110が、システムメモリ130の特定のメモリチャンクへの読み取りと書き込みの両方のアクセスを有するように設定されることができ、一方、第2の処理ユニット120は、同じ特定のメモリチャンクへの読み取りのみのアクセスを有することができる。当然のことながら、第2の処理ユニット120が、読み取りと書き込みの両方のアクセスを有し、一方、第1の処理ユニット110は、読み取りのみのアクセスを有する、または、第1の処理ユニット110および第2の処理ユニット120のうちの一方が、読み取りと書き込みの両方のアクセスを有し、一方、他方は、読み取りアクセスも書き込みアクセスも有していないなどの、他の構成もまた可能である。
[0037] 図2は、本開示の技法をインプリメントしうる、別の実例的なコンピューティングデバイス、コンピューティングデバイス200、を示す。コンピューティングデバイス200の例は、それに限定されるものではないが、モバイル無線電話、携帯情報端末(PDA)、ビデオゲーミングコンソール、ハンドヘルドゲーミングユニット、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、テレビジョンセットトップボックス、デジタルメディアプレーヤ、スマートフォン、タブレットコンピュータなどを含む。コンピューティングデバイス200は、第1の処理ユニット210、第2の処理ユニット220、第3の処理ユニット240、入力/出力メモリ管理ユニット(IOMMU)222、およびシステムメモリ230を含む。第1の処理ユニット210は、MMU 212を含む。第2の処理ユニット220および第3の処理ユニット240は、専用のMMUをそれぞれ有していないが、その代りに、共通のMMU(すなわち、図2のIOMMU 222)を共有する。第1の処理ユニット210は、例えば、デバイス200のCPUでありうる。第2の処理ユニット120は、例えば、ディスプレイ上での表示ためにグラフィックスデータを出力するように動作可能なGPUでありうる。第3の処理ユニット240は、例えば、周辺デバイスのための処理ユニットのような第3のタイプの処理ユニットでありうる。第1の処理ユニット210、第2の処理ユニット220、および第3の処理ユニット240の例は、それに限定されるものではないが、デジタル信号プロセッサ(DSP)、汎用マイクロプロッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等な集積されたまたはディスクリートな論理回路を含みうる。
[0038] システムメモリ230は、コンピュータ可読記憶媒体の例でありうる。システムメモリ230は、例えば、ダイナミックRAM、スタティックRAM、サイリスタRAM、ゼロ−キャパシタRAM、ツイントランジスタRAMのようなランダムアクセスメモリ(RAM)のタイプ、または何らかの他のタイプの揮発性メモリでありうる。システムメモリ230はまた、フラッシュメモリまたは他のタイプの不揮発性RAMのような、不揮発性メモリでありうる。システムメモリ230は、処理ユニット210および処理ユニット220に、本開示においてそれぞれに属する機能を実行させる命令を記憶しうる。このように、システムメモリ230は、1つまたは複数のプロセッサ、例えば、処理ユニット210、処理ユニット220、および/または処理ユニット240に、様々な機能を実行させる命令を備えたコンピュータ可読記憶媒体であると考えられうる。しかしながら、いくつかの例では、このような命令は、システムメモリ230以外のメモリ(図2に図示せず)に記憶されうる。
[0039] 第1の処理ユニット210、第2の処理ユニット220、および第3の処理ユニット240は、システムメモリ230からデータを読み取り、また、それにデータを書き込むように構成される。データを読み取るまたは書き込むために、第1の処理ユニット210、第2の処理ユニット220、および第3の処理ユニット240は、システムメモリ230における特定の物理ロケーションにアクセスするように構成される。これらの特定のロケーションは、例えば、4KBのチャンクであることができ、各チャンクは、それ自体の固有の物理アドレスを有しうる。しかしながら、上述されたように、第1の処理ユニット210、第2の処理ユニット220、および第3の処理ユニット240は、第1の処理ユニット210、第2の処理ユニット220、および/または第3の処理ユニット240で実行中のアプリケーションのジョブが、連続した仮想メモリアドレスを割り当てられるように、仮想アドレス指定をインプリメントしうる。しかしながら、これらの連続した仮想メモリアドレスに対応する物理メモリアドレスは、断片化され、不連続でありうる。したがって、処理ユニット210、処理ユニット220、および第3の処理ユニット240は、対応する不連続な物理メモリアドレスではなく、これらの連続した仮想メモリアドレスを使用して、データを処理しうる。処理ユニット210、処理ユニット220、および処理ユニット240がシステムメモリ230にアクセスする(すなわち、システムメモリ230から読み取るまたはそれに書き込む)必要がある場合、しかしながら、これらの仮想メモリアドレスは、物理メモリアドレスに変換される必要がある。
[0040] MMU 212は、第1の処理ユニット210のために、仮想メモリアドレスを物理メモリアドレスにマッピングするように構成される。IOMMU 222は、第2の処理ユニット220と第3の処理ユニット230の両方のために、仮想メモリアドレスを物理メモリアドレスにマッピングするように構成される。フルセットのページエントリを有する完全なページテーブルが、共通ページテーブル232に格納される。TLB 214およびTLB 224の各々は、共通ページテーブル232に格納されたページエントリのサブセットを格納する。このサブセットは、例えば、最近アクセスされたページエントリ、頻繁にアクセスされたページエントリ、または何らかの他の基準に基づいて選択されたページエントリでありうる。
[0041] 例えば、第1の処理ユニット210が、仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合には、MMU 212は、TLB 214がその仮想メモリアドレスのためのページエントリを格納しているとき、特定の仮想メモリアドレスに対応する物理メモリアドレスを決定するためにTLB 214を使用しうる。決定された物理メモリアドレスを使用して、処理ユニット210は、システムメモリ230のから読み取るまたはそれに書き込むことができる。同様に、第2の処理ユニット220または第3の処理ユニット240が、仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合には、MMU 222は、TLB 224がその仮想メモリアドレスのためのページエントリを格納しているとき、特定の仮想メモリアドレスに対応する物理メモリアドレスを決定するためにTLB 224を使用しうる。決定された物理メモリアドレスを使用して、第2の処理ユニット220および第3の処理ユニット240は、システムメモリ230から読み取るまたはそれに書き込むことができる。
[0042] 上述されたように、TLB 214およびTLB 224は、仮想メモリアドレスのサブセットのみのために、仮想から物理へのマッピングを格納するキャッシュでありうる。したがって、TLB 214は、第1の処理ユニット210のための仮想から物理へのマッピング全体を格納しないことができ、同様に、TLB 224は、第2の処理ユニット220および第3の処理ユニット240のための仮想から物理へのマッピング全体を格納しないことができる。いくつかの事例では、MMU 212は、TLB 214にマッピングが格納されていない仮想メモリアドレスのための対応する物理メモリアドレスを決定する必要がありうる。TLB 214に含まれていない仮想メモリアドレスのためのマッピングを決定するために、MMU 212は、システムメモリ230に格納された共通ページテーブル232にアクセスする。共通ページテーブル232は、処理ユニット210のための仮想から物理へのマッピング全体を含み、したがって、TLB 214よりもはるかに大きくなりうる。
[0043] 第1の処理ユニット210と同様に、いくつかの事例では、第2の処理ユニット220は、TLB 224にマッピングが格納されていない仮想メモリアドレスのための対応する物理メモリアドレスを決定する必要がありうる。TLB 224に含まれていない仮想メモリアドレスのためのマッピングを決定するために、MMU 222は、システムメモリ230に格納された共通ページテーブル232にアクセスする。共通ページテーブル232は、第1の処理ユニット210のためのみならず、第2の処理ユニット220および第3の処理ユニット240のための仮想から物理へのマッピング全体を含む。このように、第1の処理ユニット210、第2の処理ユニット220、および第3の処理ユニット240は、同じページテーブル(すなわち、図2の例における共通ページテーブル232)を共有する。
[0044] 共通ページテーブル232は、仮想メモリアドレスを、メモリチャンクの物理メモリアドレスにマッピングする複数のページエントリを含みうる。各ページエントリは、第1のセットの属性ビットと第2のセットの属性ビットを含みうる。第1のセットの属性ビットは、第1の処理ユニット210のための、許可およびアクセス権などの、制御を設定することができ、一方、第2のセットの属性ビットは、第2の処理ユニット220および第3の処理ユニット240のための制御を設定する。各ページエントリは、第1の処理ユニット210、第2の処理ユニット220、および第3の処理ユニット240のすべてのための共通制御を設定する1セットの属性ビットのような、1つまたは複数の追加のセットの属性ビットをオプションで含みうる。
[0045] いくつかの例では、第2のセットの属性は、IOMMU 222を共有するすべての処理ユニットのための制御を設定しうる。したがって、このような例では、第2のセットの属性ビットは、第2の処理ユニット220と第3の処理ユニット240の両方のための制御を定義する。しかしながら、他の例では、第2の処理ユニット220および第3の処理ユニット240は、専用のセットの属性ビットをそれぞれ有しうる。このような例では、第2のセットの属性は、第2の処理ユニット220のための制御を設定することができ、一方、第3のセットの属性ビットは、第3の処理ユニット240のための制御を設定することができる。
[0046] 共通ページテーブル232のページエントリのための第1のセットの属性ビットおよび第2のセットの属性ビットは、第1の処理ユニット210が、第2の処理ユニット220および第3の処理ユニット240と共通ページテーブルを共有しながら、第2の処理ユニット220および第3の処理ユニット240とは異なる許可およびアクセス権を有することを可能にしうる。1つの例として、第1のセットの属性ビットは、第1の処理ユニット210が、システムメモリ230の特定のメモリチャンクへの読み取りと書き込みの両方のアクセスを有するように設定されることができ、一方、第2の処理ユニット220および第3の処理ユニット240は、同じ特定のメモリチャンクへの読み取りのみのアクセスを有することができる。当然のことながら、第2の処理ユニット220および第3の処理ユニット240が、読み取りと書き込みの両方のアクセスを有し、一方、第1の処理ユニット210は、読み取りのみのアクセスを有する、または、第2の処理ユニット220および第3の処理ユニット240が、読み取りと書き込みの両方のアクセスを有し、一方、第1の処理ユニット210は、読み取りアクセスも書き込みアクセスも有していないなどの、他の構成もまた可能である。
[0047] 図3は、共通ページテーブル332の態様を例示する概念図である。共通ページテーブルは、図1の共通ページテーブル132または図2の共通ページテーブル232のいずれかを表しうる。図3は、説明の目的のために概念的であることが意図され、実際のデータ構造を表していると解釈されるべきでない。共通ページテーブル332は、複数のページエントリを含む。各ページエントリは、第1のセットの属性ビット352A−N、第2のセットの属性ビット354A−N、第3のセットの属性ビット356A−N、および物理メモリアドレスビット358A−Nを含む。したがって、第1のセットの属性ビット352A、第2のセットの属性ビット354A、第3のセットの属性ビット356A、および物理メモリアドレスビット358Aは、ページエントリAを集合的に構成する。第1のセットの属性ビット352B、第2のセットの属性ビット354B、第3のセットの属性ビット356B、および物理メモリアドレスビット358Bは、ページエントリBを集合的に構成し、以下同様である。上述されたように、ページエントリ356A−Nの各々は、32ビット、40ビット、または何らかの他のサイズでありうる。物理メモリアドレスビット358A−Nは、それぞれ20ビットまたは何らかの他のサイズであることができ、様々なサイズが、第1のセットの属性ビット352A−N、第2のセットの属性ビット354A−N、および第3のセットの属性ビット356A−Nの各々のために使用されることができる。
[0048] 図3のシステムメモリ334は、メモリチャンク134A−Nを有する物理メモリを表す。システムメモリ334は、例えば、図1のシステムメモリ130または図2のシステムメモリ230に対応しうる。メモリチャンク134A−Nは、メモリ334の不連続なチャンクを表すように意図され、メモリチャンク334A−Nの物理メモリアドレスが、不連続になりうることを意味する。ページエントリA−Nの各々は、物理メモリアドレスビット358A−Nにおいて、メモリチャンク334A−Nのうちの1つの物理アドレスを含む。
[0049] ページエントリA−Nの各々は、仮想メモリアドレスに対応する。図1の第1の処理ユニット110または第2の処理ユニット120のような処理ユニットが、システムメモリにアクセスする必要がある場合、それは、仮想メモリアドレスのための対応する物理メモリアドレスを見つけるためにページテーブル332を使用しうる。例えば、第1の処理ユニット110が、特定の仮想メモリアドレスを物理メモリアドレスに変換する必要がある場合には、第1の処理ユニット110は、その特定の仮想メモリアドレスに対応するページエントリを読み取る。
[0050] この例では、ページエントリAが、特定の仮想メモリアドレスに対応すると仮定する。したがって、第1の処理ユニット110は、ページエントリAを読み取って、対応する物理メモリアドレスを決定することができ、それは、物理メモリアドレスビット358Aに格納されている。図3の例では、エントリAは、物理メモリチャンク334Bが格納されている物理メモリアドレスにマッピングする。したがって、物理メモリアドレスビット358Aは、システムメモリ334内でメモリチャンク334Bが位置する場所への物理アドレスを格納する。第1の属性ビット352Aは、物理メモリチャンク334Bにアクセスするときの第1の処理ユニット110のための許可を設定する。例えば、第1のビットは、第1の処理ユニット110が、メモリチャンク334Bについての読み取り特権を有するかどうかを決定しうる。第2のビットは、第1の処理ユニット110が、メモリチャンク334Bについての書き込み特権を有するかどうかを決定しうる。
[0051] いくつかの事例では、第2の処理ユニット120は、第1の処理ユニット110によって変換されたのと同じ特定の仮想メモリアドレスを変換する必要がありうる。それを行うには、第2の処理ユニット120は、特定の仮想メモリアドレスを変換するときに、第1の処理ユニット110が読み取ったその特定の仮想メモリアドレスに対応する同じページエントリを読み取りうる。
[0052] この例でも、先と同様に、ページエントリAが、特定の仮想メモリアドレスに対応すると仮定する。したがって、第2の処理ユニット120は、ページエントリAを読み取って、対応する物理メモリアドレスを決定することができ、それは、物理メモリビット358Aに格納されている。図3の例では、エントリAは、物理メモリチャンク334Bにマッピングする。したがって、物理メモリアドレスビット358Aは、メモリチャンク334Bの物理アドレスを格納する。第2の属性ビット354Aは、物理メモリチャンク334Bにアクセスするときの第2の処理ユニット120のための許可を定義する。例えば、第2の属性ビット356Aの第1のビットは、第2の処理ユニット120が、メモリチャンク334Bについての読み取り特権を有するかどうかを決定しうる。第2の属性ビット356Aの第2のビットは、第2の処理ユニット120が、メモリチャンク334Bについての書き込み特権を有するかどうかを決定しうる。このように、第1の処理ユニット110および第2の処理ユニット120は、仮想メモリアドレスを物理メモリアドレスに変換するために同じページテーブルにおける同じページエントリにアクセスしているにもかかわらず、第1の処理ユニット110および第2の処理ユニット120は、同じメモリチャンクについての、異なる読み取りおよび書き込みのアクセスのような、異なる特権を有しうる。
[0053] 別の例では、図2の第1の処理ユニット210、または第2の処理ユニット220または第3の処理ユニット240のうちの1つのなどの処理ユニットが、システムメモリにアクセスする必要がある場合、それは、仮想メモリアドレスのための対応する物理メモリアドレスを見つけるためにページテーブル332を使用しうる。このような例では、第1の属性ビット352A−Nは、第1の処理ユニット210のための許可を定義することができ、一方、第2の属性ビット354A−Nは、第2の処理ユニット220と第3の処理ユニット240の両方のための許可を定義することができる。したがって、第2の処理ユニット220が、メモリ334の物理メモリチャンクにアクセスする必要がある場合、第2の属性ビット354A−Nは、第2の処理ユニット220のための許可を定義する。同様に、第3の処理ユニット240が、メモリ334の物理メモリチャンクにアクセスする必要がある場合、第2の属性ビット354A−Nはまた、第3の処理ユニット240のための許可を定義する。
[0054] 図4は、本開示で説明される仮想から物理へのマッピング技法を例示するフロー図を示す。図4の技法は、図1のコンピューティングデバイス100または図2のコンピューティングデバイス200のような、2つ以上の処理ユニットを備えたコンピューティングデバイスによって実行されうる。図4の技法は、コンピューティングデバイス100に関連して説明されるが、図4のこれらの技法は、幅広いコンピューティングデバイスに適用可能であり、コンピューティングデバイス100として構成されるデバイスのみに限定されないことが理解されるべきである。
[0055] 第1の処理ユニット110は、MMU 112を介して、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換する(410)。共通ページテーブルは、第1の処理ユニット110と第2の処理ユニット120に共通であり、アプリケーションによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納する。アプリケーションは、第1の処理ユニット110と第2の処理ユニット120の両方で実行中でありうる。共通ページテーブルは、第1の処理ユニット110および第2の処理ユニット120がメモリチャンクにアクセスするために使用するページエントリを含む。ページエントリはまた、メモリチャンクの物理アドレスを定義する物理アドレスビットを含む。
[0056] 第1の処理ユニット120は、物理メモリアドレスによって識別されるメモリチャンクにアクセスする(420)。ページエントリは、第1の処理ユニットによるメモリチャンクのアクセシビリティを定義する第1のセットの属性ビットを含む。第2の処理ユニット120は、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換する(430)。このように、第1の処理ユニット110および第2の処理ユニット120は、仮想メモリアドレスを物理メモリアドレスに変換するときに、同じ共通ページテーブルにアクセスする。第2の処理ユニット120は、物理メモリアドレスによって識別されるメモリチャンクにアクセスする(440)。ページエントリは、第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットを含む。この例では、第1の処理ユニット110および第2の処理ユニット120は、特定の仮想メモリアドレスを物理メモリアドレスに変換するとき、同じページエントリにアクセスするが、このページエントリは、第1の処理ユニット110および第2の処理ユニット120のための個別の属性ビットを有しうる。ページエントリはまた、第1の処理ユニット110と第2の処理ユニット120の両方に共通である属性を定義する第3のセットの属性ビットを含む。
[0057] 図4の例では、第1の処理ユニット110は、CPUであることができ、第2の処理ユニット120は、GPUであることができる。第1のセットの属性ビットは、第1の処理ユニット110がメモリチャンクへの書き込みアクセスを有するかどうかを定義し、また、第1の処理ユニット110がメモリチャンクへの読み取りアクセスを有するかどうかを定義しうる。第2のセットの属性ビットは、第2の処理ユニット120がメモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ第2の処理ユニット120がメモリチャンクへの読み取りアクセスを有するかどうかを定義しうる。第1の処理ユニット110によるメモリチャンクのアクセシビリティは、第2の処理ユニット120によるメモリチャンクのアクセシビリティとは異なりうる。例えば、第1のセットの属性に基づいて、第1の処理ユニット110は、メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有することができ、一方で、第2のセットの属性に基づいて、第2の処理ユニット120は、メモリチャンクへの読み取りのみのアクセスを有する。
[0058] 第1の処理ユニット110は、第1のMMU(例えば、MMU 112)を含むことができ、第2の処理ユニット120は、第2のMMU(例えば、MMU 122)を含むことができる。第1のMMUは、共通ページテーブルにアクセスするように構成されることができ、第2のMMUもまた、同じ共通ページテーブルにアクセスするように構成されることができる。
[0059] システムメモリ26の例は、それに限定されるものではないが、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM(登録商標))、CD−ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置、またはその他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶または搬送するために使用可能であり、かつコンピュータまたはプロセッサによってアクセスされうるその他任意の媒体を含む。システムメモリ26は、いくつかの例では、非一時的な記憶媒体とみなされる。「非一時的な」という用語は、記憶媒体が、搬送波または伝播信号で具現化されないことを示しうる。しかしながら、「非一時的な」という用語は、システムメモリ26が移動不可能な(non-movable)ことを意味するように解釈されるべきではない。1つの例として、システムメモリ26は、デバイス10から取り除かれ、別のデバイスへ移動されうる。別の例として、システムメモリ26と実質的に同様の記憶デバイスが、デバイス10に挿入されうる。ある特定の例では、非一時的な記憶媒体は、(例えば、RAMにおいて)経時的に変化しうるデータを記憶しうる。
[0060] 1つまたは複数の例では、説明された機能は、ハードウェア、ソフトウェア、ファームウェア、またはこれらの任意の組み合わせでインプリメントされうる。ソフトウェアでインプリメントされる場合、これら機能は、コンピュータ可読媒体上で1つまたは複数の命令またはコードとして記憶または送信され、ハードウェアベースの処理ユニットによって実行されうる。コンピュータ可読媒体は、例えば、通信プロトコルにしたがって、コンピュータプログラムの1つの場所から別の場所への移送を容易にする任意の媒体を含む通信媒体、またはデータ記憶媒体のような有形の媒体に対応するコンピュータ可読記憶媒体を含みうるこのように、コンピュータ可読媒体は一般的に、(1)非一時的である有形のコンピュータ可読記憶媒体、または(2)信号または搬送波のような通信媒体に対応しうる。データ記憶媒体は、本開示で説明された技法のインプリメンテーションのための命令、コード、および/またはデータ構造を取り出すために、1つまたは複数のコンピュータまたは1つまたは複数のプロセッサによってアクセスされうる任意の利用可能な媒体でありうる。コンピュータプログラム製品は、コンピュータ可読媒体を含みうる。
[0061] 限定ではなく例として、このようなコンピュータ可読記憶媒体は、RAM、ROM、EEPROM、CD−ROMまたはその他の光ディスク記憶装置、磁気ディスク記憶装置、またはその他の磁気記憶デバイス、フラッシュメモリ、あるいは、データ構造または命令の形式で所望のプログラムコードを記憶するために使用可能であり、かつコンピュータによってアクセスされうるその他任意の媒体を備えうる。また、任意の接続は、厳密にはコンピュータ可読媒体と称される。例えば、命令が、同軸ケーブル、光ファイバーケーブル、ツイストペア、デジタル加入者回線(DSL)、または赤外線、電波、およびマイクロ波のような無線技術を使用して、ウェブサイト、サーバ、またはその他の遠隔ソースから送信される場合には、この同軸ケーブル、光ファイバーケーブル、ツイストペア、DSL、または赤外線、電波、およびマイクロ波のような無線技術は、媒体の定義に含まれる。しかしながら、コンピュータ可読記憶媒体およびデータ記憶媒体は、接続、搬送波、信号、または他の一時的な媒体を含まないが、代わりとして非一時的な有形の記憶媒体を対象にすることが理解されるべきである。ここで使用される場合、ディスク(disk)およびディスク(disc)は、コンパクトディスク(CD)、レーザーディスク(登録商標)、光ディスク、デジタル多目的ディスク(DVD)、フロッピー(登録商標)ディスクおよびブルーレイ(登録商標)ディスクを含み、ここで、ディスク(disks)は、通常磁気的にデータを再生し、一方ディスク(discs)は、レーザーを用いて光学的にデータを再生する。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に含まれるべきである。
[0062] 命令は、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブル論理アレイ(FPGA)、または他の同等な集積されたまたはディスクリートな論理回路などの、1つまたは複数のプロセッサによって実行されうる。したがって、ここで使用される場合、「プロセッサ」という用語は、前述の構造、またはここで説明された技法のインプリメンテーションに適したその他任意の構造のいずれを称しうる。これに加えて、いくつかの態様では、ここで説明された機能は、符号化および復号のために構成された専用のハードウェアモジュールおよび/またはソフトウェアモジュール内で提供されることができ、または、組み合わされたコーデックに組み込まれることができる。また、これら技法は、1つまたは複数の回路または論理要素において完全にインプリメントされうる。
[0063] 本開示の技法は、無線ハンドセット、集積回路(IC)またはICのセット(例えば、チップセット)を含む、幅広い様々なデバイスまたは装置でインプリメントされうる。様々な構成要素、モジュール、またはユニットは、本開示において、開示された技法を実行するように構成されたデバイスの機能的な態様を強調するために説明されているが、それらは、異なるハードウェアユニットによる実現を必ずしも必要とするわけではない。むしろ、上述されたように、様々なユニットは、コーデックハードウェアユニットにおいて組み合わされうるか、または適切なソフトウェアおよび/またはファームウェアと併せて、上述のような1つまたは複数のプロセッサを含む、相互運用ハードウェアユニットの集合によって提供されうる。
[0064] 様々な例が説明された。これらの例および他の例は、以下の特許請求の範囲の範囲内にある。
以下に本願の出願当初の特許請求の範囲に記載された発明を付記する。
[C1]
第1の処理ユニットと、
第2の処理ユニットと、
前記第1の処理ユニットと前記第2の処理ユニットに共通であり、アプリケーションのジョブによってアクセスされる、メモリ内のメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納する共通ページテーブルと、
前記共通ページテーブル内に、前記第1の処理ユニットおよび前記第2の処理ユニットが、前記メモリチャンクのうちの1つのメモリチャンクにアクセスするために使用するページエントリと、ここにおいて、前記ページエントリは、前記第1の処理ユニットによる前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記メモリ内の前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える、
を格納する前記メモリと
を備える装置。
[C2]
前記ページエントリは、前記第1の処理ユニットと前記第2の処理ユニットの両方に共通である属性を定義する第3のセットの属性ビットを備える、C1に記載の装置。
[C3]
前記第1の処理ユニットは、中央処理ユニット(CPU)を備え、前記第2の処理ユニットは、グラフィックス処理ユニット(GPU)を備える、C1に記載の装置。
[C4]
前記第1のセットの属性ビットは、前記第1の処理ユニットが前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第1の処理ユニットが前記メモリチャンクへの読み取りアクセスを有するかどうかを定義し、
前記第2のセットの属性ビットは、前記第2の処理ユニットが前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第2の処理ユニットが前記メモリチャンクへの読み取りアクセスを有するかどうかを定義する、
C1に記載の装置。
[C5]
前記第1の処理ユニットによる前記メモリチャンクの前記アクセシビリティは、前記第2の処理ユニットによる前記メモリチャンクの前記アクセシビリティとは異なる、C1に記載の装置。
[C6]
前記第1のセットの属性ビットは、前記第1の処理ユニットが、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有することを定義し、前記第2のセットの属性ビットは、前記第2の処理ユニットが、前記メモリチャンクへの読み取りのみのアクセスを有することを定義する、C1に記載の装置。
[C7]
前記第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、前記第2の処理ユニットは、第2のMMUを備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2のMMUは、前記共通ページテーブルにアクセスするように構成される、C1に記載の装置。
[C8]
第1のメモリ管理ユニット(MMU)と、ここにおいて、前記第1の処理ユニットは、前記第1のMMUを備える、
第3の処理ユニットと、
入力/出力MMU(IOMMU)と、ここにおいて、前記IOMMUは、前記第2の処理ユニットと前記第3の処理ユニットによって共有される、
をさらに備え、
ここにおいて、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記IOMMUは、前記共通ページテーブルにアクセスするように構成される、C1に記載の装置。
[C9]
前記アプリケーションは、前記第1の処理ユニットと前記第2の処理ユニットの両方で実行中である、C1に記載の装置。
[C10]
第1の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、
前記第1の処理ユニットによって、前記物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、
第2の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、前記仮想メモリアドレスを前記物理メモリアドレスに変換することと、
前記第2の処理ユニットによって、前記物理メモリアドレスによって識別される前記メモリチャンクにアクセスすることと
を備え、
ここにおいて、前記共通ページテーブルは、前記第1の処理ユニットと前記第2の処理ユニットに共通であり、アプリケーションのジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納し、
ここにおいて、前記共通ページテーブルは、前記第1の処理ユニットおよび前記第2の処理ユニットが、前記メモリチャンクにアクセスするために使用するページエントリを備え、前記ページエントリは、前記第1の処理ユニットによる前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える、方法。
[C11]
前記ページエントリは、前記第1の処理ユニットと前記第2の処理ユニットの両方に共通である属性を定義する第3のセットの属性ビットを備える、C10に記載の方法。
[C12]
前記第1の処理ユニットは、中央処理ユニット(CPU)を備え、前記第2の処理ユニットは、グラフィックス処理ユニット(GPU)を備える、C10に記載の方法。
[C13]
前記第1のセットの属性ビットは、前記第1の処理ユニットが前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第1の処理ユニットが前記メモリチャンクへの読み取りアクセスを有するかどうかを定義し、
前記第2のセットの属性ビットは、前記第2の処理ユニットが前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第2の処理ユニットが前記メモリチャンクへの読み取りアクセスを有するかどうかを定義する、
C10に記載の方法。
[C14]
前記第1の処理ユニットによる前記メモリチャンクの前記アクセシビリティは、前記第2の処理ユニットによる前記メモリチャンクの前記アクセシビリティとは異なる、C10に記載の方法。
[C15]
前記第1のセットの属性に基づいて、前記第1の処理ユニットは、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有し、前記第2のセットの属性に基づいて、前記第2の処理ユニットは、前記メモリチャンクへの読み取りのみのアクセスを有する、C10に記載の方法。
[C16]
前記第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、前記第2の処理ユニットは、第2のMMUを備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2のMMUは、前記共通ページテーブルにアクセスするように構成される、C10に記載の方法。
[C17]
第3の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、第2の仮想メモリアドレスを第2の物理メモリアドレスに変換することと、
前記第3の処理ユニットによって、前記第2の物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと
をさらに備え、
ここにおいて、前記第2の処理ユニットと前記第3の処理ユニットは、入力/出力MMU(IOMMU)を共有し、前記IOMMUは、前記共通ページテーブルにアクセスするように構成される、C10に記載の方法。
[C18]
前記アプリケーションは、前記第1の処理ユニットと前記第2の処理ユニットの両方で実行中である、C10に記載の方法。
[C19]
第1の処理手段と、
第2の処理手段と、
メモリと
を備え、
ここにおいて、前記第1の処理手段は、
前記メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換するための第1の手段と、
前記物理メモリアドレスによって識別されるメモリチャンクにアクセスするための第1の手段と、を備え、
ここにおいて、前記第2の処理手段は、
前記メモリに格納された前記共通ページテーブルを使用して、前記仮想メモリアドレスを前記物理メモリアドレスに変換するための第2の手段と、
前記物理メモリアドレスによって識別される前記メモリチャンクにアクセスするための第2の手段と、を備え、
ここにおいて、前記共通ページテーブルは、前記第1の処理手段と前記第2の処理手段に共通であり、アプリケーションのジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納し、
ここにおいて、前記共通ページテーブルは、前記第1の処理手段および前記第2の処理手段が、前記メモリチャンクにアクセスするために使用するページエントリを備え、前記ページエントリは、前記第1の処理手段による前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理手段による同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える、装置。
[C20]
前記ページエントリは、前記第1の処理手段と前記第2の処理手段の両方に共通である属性を定義する第3のセットの属性ビットを備える、C19に記載の装置。
[C21]
前記第1の処理手段は、中央処理ユニット(CPU)を備え、前記第2の処理手段は、グラフィックス処理ユニット(GPU)を備える、C19に記載の装置。
[C22]
前記第1のセットの属性ビットは、前記第1の処理手段が前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第1の処理手段が前記メモリチャンクへの読み取りアクセスを有するかどうかを定義し、
前記第2のセットの属性ビットは、前記第2の処理手段が前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第2の処理手段が前記メモリチャンクへの読み取りアクセスを有するかどうかを定義する、
C19に記載の装置。
[C23]
前記第1の処理手段による前記メモリチャンクの前記アクセシビリティは、前記第2の処理手段による前記メモリチャンクの前記アクセシビリティとは異なる、C19に記載の装置。
[C24]
前記第1のセットの属性に基づいて、前記第1の処理手段は、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有し、前記第2のセットの属性に基づいて、前記第2の処理手段は、前記メモリチャンクへの読み取りのみのアクセスを有する、C19に記載の装置。
[C25]
前記第1の処理手段は、第1のメモリ管理ユニット(MMU)を備え、前記第2の処理手段は、第2のMMUを備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2のMMUは、前記共通ページテーブルにアクセスするように構成される、C19に記載の装置。
[C26]
第3の処理手段をさらに備え、
ここにおいて、前記第3の処理手段は、
前記メモリに格納された前記共通ページテーブルを使用して、第2の仮想メモリアドレスを第2の物理メモリアドレスに変換するための第2の手段と、
前記第2の物理メモリアドレスによって識別される前記メモリチャンクにアクセスするための前記第2の手段と
を備える、C19に記載の装置。
[C27]
前記アプリケーションは、前記第1の処理手段と前記第2の処理手段の両方で実行中である、C19に記載の装置。
[C28]
命令を記憶したコンピュータ可読記憶媒体であって、前記命令は、実行されると、第1の処理ユニットおよび第2の処理ユニットに、
前記第1の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、
前記第1の処理ユニットによって、前記物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、
前記第2の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、前記仮想メモリアドレスを前記物理メモリアドレスに変換することと、
前記第2の処理ユニットによって、前記物理メモリアドレスによって識別される前記メモリチャンクにアクセスすることと
を行わせ、
ここにおいて、前記共通ページテーブルは、前記第1の処理ユニットと前記第2の処理ユニットに共通であり、アプリケーションのジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納し、
ここにおいて、前記共通ページテーブルは、前記第1の処理ユニットおよび前記第2の処理ユニットが、前記メモリチャンクにアクセスするために使用するページエントリを備え、前記ページエントリは、前記第1の処理ユニットによる前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備える、コンピュータ可読記憶媒体。
[C29]
前記ページエントリは、前記第1の処理ユニットと前記第2の処理ユニットの両方に共通である属性を定義する第3のセットの属性ビットを備える、C28に記載のコンピュータ可読記憶媒体。
[C30]
前記第1の処理ユニットは、中央処理ユニット(CPU)を備え、前記第2の処理ユニットは、グラフィックス処理ユニット(GPU)を備える、C28に記載のコンピュータ可読記憶媒体。
[C31]
前記第1のセットの属性ビットは、前記第1の処理ユニットが前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第1の処理ユニットが前記メモリチャンクへの読み取りアクセスを有するかどうかを定義し、
前記第2のセットの属性ビットは、前記第2の処理ユニットが前記メモリチャンクへの書き込みアクセスを有するかどうかを定義し、かつ前記第2の処理ユニットが前記メモリチャンクへの読み取りアクセスを有するかどうかを定義する、
C28に記載のコンピュータ可読記憶媒体。
[C32]
前記第1の処理ユニットによる前記メモリチャンクの前記アクセシビリティは、前記第2の処理ユニットによる前記メモリチャンクの前記アクセシビリティとは異なる、C28に記載のコンピュータ可読記憶媒体。
[C33]
前記第1のセットの属性に基づいて、前記第1の処理ユニットは、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有し、前記第2のセットの属性に基づいて、前記第2の処理ユニットは、前記メモリチャンクへの読み取りのみのアクセスを有する、C28に記載のコンピュータ可読記憶媒体。
[C34]
前記第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、前記第2の処理ユニットは、第2のMMUを備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2のMMUは、前記共通ページテーブルにアクセスするように構成される、C28に記載のコンピュータ可読記憶媒体。
[C35]
実行されると、第3の処理ユニットに、
前記第3の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、第2の仮想メモリアドレスを第2の物理メモリアドレスに変換することと、
前記第3の処理ユニットによって、前記第2の物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと
を行わせるさらなる命令を記憶し、
ここにおいて、前記第2の処理ユニットと前記第3の処理ユニットは、入力/出力MMU(IOMMU)を共有し、前記IOMMUは、前記共通ページテーブルにアクセスするように構成される、C28に記載のコンピュータ可読記憶媒体。
[C36]
前記アプリケーションは、前記第1の処理ユニットと前記第2の処理ユニットの両方で実行中である、C28に記載のコンピュータ可読記憶媒体。

Claims (20)

  1. 第1の処理ユニットと、ここにおいて、前記第1の処理ユニットは、中央処理ユニット(CPU)を備える、
    第2の処理ユニットと、ここにおいて、前記第2の処理ユニットは、グラフィックス処理ユニット(GPU)を備える、
    第3の処理ユニットと、
    共通ページテーブル内に、前記第1の処理ユニット前記第2の処理ユニット、および前記第3の処理ユニットが、1つのメモリチャンクにアクセスするために使用するページエントリを格納するメモリと、ここにおいて、前記第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2の処理ユニットおよび前記第3の処理ユニットは、入出力MMU(IOMMU)を共有し、前記IOMMUは、前記共通ページテーブルにアクセスするように構成され、前記ページエントリは、前記第1の処理ユニットによる前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記第1の処理ユニットと前記第2の処理ユニットの両方に共通である属性を定義する第3のセットの属性ビットと、前記メモリ内の前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備え、前記第3のセットの属性ビットの数は、前記第1のセットの属性ビットの数、および前記第2のセットの属性ビットの数よりも多く、前記第1のセットの属性ビットによって定義される、前記第1の処理ユニットによる前記メモリチャンクの前記アクセシビリティは、前記第2のセットの属性ビットによって定義される、前記第2の処理ユニットによる前記メモリチャンクの前記アクセシビリティとは異なり、前記第1のセットの属性ビットは、前記第1の処理ユニットが、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有することを定義し、前記第2のセットの属性ビットは、前記第2の処理ユニットが、前記メモリチャンクへの読み取りのみのアクセスを有することを定義する、
    を備える装置。
  2. 前記第3の処理ユニットは、デジタル信号プロセッサである、請求項1に記載の装置。
  3. 前記第3の処理ユニットは、フィールドプログラマブル論理アレイである、請求項1に記載の装置。
  4. 前記第3の処理ユニットは、特定用途向け集積回路である、請求項1に記載の装置。
  5. アプリケーションは、前記第1の処理ユニットと前記第2の処理ユニットの両方で実行中である、請求項1に記載の装置。
  6. 第1の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、ここにおいて、前記第1の処理ユニットは、中央処理ユニット(CPU)を備える、
    前記第1の処理ユニットによって、前記物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、
    第2の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、前記仮想メモリアドレスを前記物理メモリアドレスに変換することと、ここにおいて、前記第2の処理ユニットは、グラフィックス処理ユニット(GPU)を備える、
    前記第2の処理ユニットによって、前記物理メモリアドレスによって識別される前記メモリチャンクにアクセスすることと
    第3の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、第2の仮想メモリアドレスを第2の物理メモリアドレスに変換することと、
    前記第3の処理ユニットによって、前記第2の物理メモリアドレスによって識別される前記メモリチャンクにアクセスすることと、
    を備え、
    ここにおいて、前記共通ページテーブルは、前記第1の処理ユニット前記第2の処理ユニット、および第3の処理ユニットに共通であり、前記第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2の処理ユニットおよび前記第3の処理ユニットは、入出力MMU(IOMMU)を共有し、前記IOMMUは、前記共通ページテーブルにアクセスするように構成され、アプリケーションのジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納し、
    ここにおいて、前記共通ページテーブルは、前記第1の処理ユニット前記第2の処理ユニット、および前記第3の処理ユニットが、前記メモリチャンクにアクセスするために使用するページエントリを備え、前記ページエントリは、前記第1の処理ユニットによる前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記第1の処理ユニットと前記第2の処理ユニットの両方に共通である属性を定義する第3のセットの属性ビットと、前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備え、前記第3のセットの属性ビットの数は、前記第1のセットの属性ビットの数、および前記第2のセットの属性ビットの数よりも多く、前記第1のセットの属性ビットによって定義される、前記第1の処理ユニットによる前記メモリチャンクの前記アクセシビリティは、前記第2のセットの属性ビットによって定義される、前記第2の処理ユニットによる前記メモリチャンクの前記アクセシビリティとは異なり、前記第1のセットの属性ビットは、前記第1の処理ユニットが、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有することを定義し、前記第2のセットの属性ビットは、前記第2の処理ユニットが、前記メモリチャンクへの読み取りのみのアクセスを有することを定義する、方法。
  7. 前記第3の処理ユニットは、デジタル信号プロセッサである、請求項6に記載の方法。
  8. 前記第3の処理ユニットは、フィールドプログラマブル論理アレイである、請求項6に記載の方法。
  9. 前記第3の処理ユニットは、特定用途向け集積回路である、請求項6に記載の方法。
  10. 前記アプリケーションは、前記第1の処理ユニットと前記第2の処理ユニットの両方で実行中である、請求項に記載の方法。
  11. 第1の処理手段と、
    第2の処理手段と、
    第3の処理手段と、
    メモリと
    を備え、
    ここにおいて、前記第1の処理手段は、
    前記メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換するための第1の手段と、
    前記物理メモリアドレスによって識別されるメモリチャンクにアクセスするための第1の手段と、
    を備え、前記第1の処理手段は、中央処理ユニット(CPU)を備え、
    ここにおいて、前記第2の処理手段は、
    前記メモリに格納された前記共通ページテーブルを使用して、前記仮想メモリアドレスを前記物理メモリアドレスに変換するための第2の手段と、
    前記物理メモリアドレスによって識別される前記メモリチャンクにアクセスするための第2の手段と、
    を備え、前記第2の処理手段は、グラフィックス処理ユニット(GPU)を備え、
    ここにおいて、前記第3の処理手段は、
    前記メモリに格納された前記共通ページテーブルを使用して、第2の仮想メモリアドレスを第2の物理メモリアドレスに変換するための第3の手段と、
    前記第2の物理メモリアドレスによって識別される前記メモリチャンクにアクセスするための第3の手段と、
    を備え、
    ここにおいて、前記共通ページテーブルは、前記第1の処理手段前記第2の処理手段、および第3の処理手段に共通であり、前記第1の処理手段は、第1のメモリ管理ユニット(MMU)を備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2の処理手段および前記第3の処理手段は、入出力MMU(IOMMU)を共有し、前記IOMMUは、前記共通ページテーブルにアクセスするように構成され、アプリケーションのジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納し、
    ここにおいて、前記共通ページテーブルは、前記第1の処理手段前記第2の処理手段、および第3の処理手段が、前記メモリチャンクにアクセスするために使用するページエントリを備え、前記ページエントリは、前記第1の処理手段による前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理手段による同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記第1の処理手段と前記第2の処理手段の両方に共通である属性を定義する第3のセットの属性ビットと、前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備え、前記第3のセットの属性ビットの数は、前記第1のセットの属性ビットの数、および前記第2のセットの属性ビットの数よりも多く、前記第1のセットの属性ビットによって定義される、前記第1の処理手段による前記メモリチャンクの前記アクセシビリティは、前記第2のセットの属性ビットによって定義される、前記第2の処理手段による前記メモリチャンクの前記アクセシビリティとは異なり、前記第1のセットの属性ビットは、前記第1の処理手段が、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有することを定義し、前記第2のセットの属性ビットは、前記第2の処理手段が、前記メモリチャンクへの読み取りのみのアクセスを有することを定義する、装置。
  12. 前記第3の処理手段は、デジタル信号プロセッサである、請求項11に記載の装置。
  13. 前記第3の処理手段は、フィールドプログラマブル論理アレイである、請求項11に記載の装置。
  14. 前記第3の処理手段は、特定用途向け集積回路である、請求項11に記載の装置。
  15. 前記アプリケーションは、前記第1の処理手段と前記第2の処理手段の両方で実行中である、請求項1に記載の装置。
  16. 命令を記憶した非一時的なコンピュータ可読記憶媒体であって、前記命令は、実行されると、第1の処理ユニット第2の処理ユニット、および第3の処理ユニットに、
    前記第1の処理ユニットによって、メモリに格納された共通ページテーブルを使用して、仮想メモリアドレスを物理メモリアドレスに変換することと、ここにおいて、前記第1の処理ユニットは、中央処理ユニット(CPU)を備える、
    前記第1の処理ユニットによって、前記物理メモリアドレスによって識別されるメモリチャンクにアクセスすることと、
    前記第2の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、前記仮想メモリアドレスを前記物理メモリアドレスに変換することと、ここにおいて、前記第2の処理ユニットは、グラフィックス処理ユニット(GPU)を備える、
    前記第2の処理ユニットによって、前記物理メモリアドレスによって識別される前記メモリチャンクにアクセスすることと、
    前記第3の処理ユニットによって、前記メモリに格納された前記共通ページテーブルを使用して、第2の仮想メモリアドレスを第2の物理メモリアドレスに変換することと、
    前記第3の処理ユニットによって、前記第2の物理メモリアドレスによって識別される前記メモリチャンクにアクセスすることと、
    を行わせ、
    ここにおいて、前記共通ページテーブルは、前記第1の処理ユニット前記第2の処理ユニット、および前記第3の処理ユニットに共通であり、前記第1の処理ユニットは、第1のメモリ管理ユニット(MMU)を備え、前記第1のMMUは、前記共通ページテーブルにアクセスするように構成され、前記第2の処理ユニットおよび前記第3の処理ユニットは、入出力MMU(IOMMU)を共有し、前記IOMMUは、前記共通ページテーブルにアクセスするように構成され、アプリケーションのジョブによってアクセスされるメモリチャンクのための仮想メモリアドレスから物理メモリアドレスへのマッピングを格納し、
    ここにおいて、前記共通ページテーブルは、前記第1の処理ユニット前記第2の処理ユニット、および前記第3の処理ユニットが、前記メモリチャンクにアクセスするために使用するページエントリを備え、前記ページエントリは、前記第1の処理ユニットによる前記メモリチャンクのアクセシビリティを定義する第1のセットの属性ビットと、前記第2の処理ユニットによる同じメモリチャンクのアクセシビリティを定義する第2のセットの属性ビットと、前記第1の処理ユニットと前記第2の処理ユニットの両方に共通である属性を定義する第3のセットの属性ビットと、前記メモリチャンクの物理アドレスを定義する物理アドレスビットとを備え、前記第3のセットの属性ビットの数は、前記第1のセットの属性ビットの数、および前記第2のセットの属性ビットの数よりも多く、前記第1のセットの属性ビットによって定義される、前記第1の処理ユニットによる前記メモリチャンクの前記アクセシビリティは、前記第2のセットの属性ビットによって定義される、前記第2の処理ユニットによる前記メモリチャンクの前記アクセシビリティとは異なり、前記第1のセットの属性ビットは、前記第1の処理ユニットが、前記メモリチャンクへの読み取りアクセスおよび書き込みアクセスを有することを定義し、前記第2のセットの属性ビットは、前記第2の処理ユニットが、前記メモリチャンクへの読み取りのみのアクセスを有することを定義する、非一時的なコンピュータ可読記憶媒体。
  17. 前記第3の処理ユニットは、デジタル信号プロセッサである、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
  18. 前記第3の処理ユニットは、フィールドプログラマブル論理アレイである、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
  19. 前記第3の処理ユニットは、特定用途向け集積回路である、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
  20. 前記アプリケーションは、前記第1の処理ユニットと前記第2の処理ユニットの両方で実行中である、請求項16に記載の非一時的なコンピュータ可読記憶媒体。
JP2019016836A 2012-08-02 2019-02-01 単一のページテーブルエントリ内の複数のセットの属性フィールド Active JP6728419B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/565,434 2012-08-02
US13/565,434 US8938602B2 (en) 2012-08-02 2012-08-02 Multiple sets of attribute fields within a single page table entry

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017202603A Division JP2018041485A (ja) 2012-08-02 2017-10-19 単一のページテーブルエントリ内の複数のセットの属性フィールド

Publications (2)

Publication Number Publication Date
JP2019109906A JP2019109906A (ja) 2019-07-04
JP6728419B2 true JP6728419B2 (ja) 2020-07-22

Family

ID=48916200

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2015525447A Withdrawn JP2015527661A (ja) 2012-08-02 2013-07-18 単一のページテーブルエントリ内の複数のセットの属性フィールド
JP2017202603A Withdrawn JP2018041485A (ja) 2012-08-02 2017-10-19 単一のページテーブルエントリ内の複数のセットの属性フィールド
JP2019016836A Active JP6728419B2 (ja) 2012-08-02 2019-02-01 単一のページテーブルエントリ内の複数のセットの属性フィールド

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2015525447A Withdrawn JP2015527661A (ja) 2012-08-02 2013-07-18 単一のページテーブルエントリ内の複数のセットの属性フィールド
JP2017202603A Withdrawn JP2018041485A (ja) 2012-08-02 2017-10-19 単一のページテーブルエントリ内の複数のセットの属性フィールド

Country Status (8)

Country Link
US (1) US8938602B2 (ja)
EP (1) EP2880540B1 (ja)
JP (3) JP2015527661A (ja)
KR (1) KR102051698B1 (ja)
BR (1) BR112015001988B1 (ja)
ES (1) ES2763545T3 (ja)
HU (1) HUE047108T2 (ja)
WO (1) WO2014022110A1 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141559B2 (en) 2012-01-04 2015-09-22 Intel Corporation Increasing virtual-memory efficiencies
US9378572B2 (en) * 2012-08-17 2016-06-28 Intel Corporation Shared virtual memory
US9373182B2 (en) 2012-08-17 2016-06-21 Intel Corporation Memory sharing via a unified memory architecture
US20140331019A1 (en) * 2013-05-06 2014-11-06 Microsoft Corporation Instruction set specific execution isolation
US9436616B2 (en) 2013-05-06 2016-09-06 Qualcomm Incorporated Multi-core page table sets of attribute fields
US9530000B2 (en) * 2013-06-14 2016-12-27 Microsoft Technology Licensing, Llc Secure privilege level execution and access protection
US9507726B2 (en) * 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9921897B2 (en) 2016-01-06 2018-03-20 International Business Machines Corporation Testing a non-core MMU
GB2547242B (en) 2016-02-11 2018-05-23 Advanced Risc Mach Ltd Graphics processing
US10019377B2 (en) * 2016-05-23 2018-07-10 Advanced Micro Devices, Inc. Managing cache coherence using information in a page table
KR101942663B1 (ko) * 2017-09-28 2019-01-25 한국과학기술원 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템
US10747679B1 (en) * 2017-12-11 2020-08-18 Amazon Technologies, Inc. Indexing a memory region
CN110198331B (zh) * 2018-03-28 2022-11-25 腾讯科技(上海)有限公司 一种同步数据的方法及系统

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3454854B2 (ja) * 1992-01-16 2003-10-06 株式会社東芝 メモリ管理装置及び方法
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
US7673116B2 (en) 2006-01-17 2010-03-02 Advanced Micro Devices, Inc. Input/output memory management unit that implements memory attributes based on translation data
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
US8099541B2 (en) * 2008-01-22 2012-01-17 Globalfoundries Inc. Minivisor entry point in virtual machine monitor address space
US8397049B2 (en) * 2009-07-13 2013-03-12 Apple Inc. TLB prefetching
US20110016290A1 (en) 2009-07-14 2011-01-20 Arie Chobotaro Method and Apparatus for Supporting Address Translation in a Multiprocessor Virtual Machine Environment
US8386745B2 (en) * 2009-07-24 2013-02-26 Advanced Micro Devices, Inc. I/O memory management unit including multilevel address translation for I/O and computation offload
US20110161620A1 (en) 2009-12-29 2011-06-30 Advanced Micro Devices, Inc. Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices
US8669990B2 (en) * 2009-12-31 2014-03-11 Intel Corporation Sharing resources between a CPU and GPU
US20120233439A1 (en) 2011-03-11 2012-09-13 Boris Ginzburg Implementing TLB Synchronization for Systems with Shared Virtual Memory Between Processing Devices

Also Published As

Publication number Publication date
HUE047108T2 (hu) 2020-04-28
CN104508641A (zh) 2015-04-08
BR112015001988B1 (pt) 2022-03-15
EP2880540B1 (en) 2019-09-25
US8938602B2 (en) 2015-01-20
KR20150038513A (ko) 2015-04-08
JP2019109906A (ja) 2019-07-04
JP2015527661A (ja) 2015-09-17
EP2880540A1 (en) 2015-06-10
ES2763545T3 (es) 2020-05-29
BR112015001988A2 (pt) 2017-07-04
KR102051698B1 (ko) 2019-12-03
JP2018041485A (ja) 2018-03-15
US20140040593A1 (en) 2014-02-06
WO2014022110A1 (en) 2014-02-06

Similar Documents

Publication Publication Date Title
JP6728419B2 (ja) 単一のページテーブルエントリ内の複数のセットの属性フィールド
US9436616B2 (en) Multi-core page table sets of attribute fields
US20130013889A1 (en) Memory management unit using stream identifiers
JP2018521385A (ja) 共有システムキャッシュの仮想化制御のための方法および装置
JP2013500525A (ja) I/oのための多重レベルアドレストランスレーションを含むi/oメモリ管理ユニット及び計算負荷軽減
US8521919B2 (en) Direct memory access in a computing environment
JP2008033928A (ja) Gpuにおけるページマッピングのための専用機構
KR20080080594A (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
TWI526832B (zh) 用於減少執行硬體表搜尋(hwtw)所需的時間和計算資源量的方法和系統
US20160188251A1 (en) Techniques for Creating a Notion of Privileged Data Access in a Unified Virtual Memory System
CN112241310B (zh) 页表管理、信息获取方法、处理器、芯片、设备及介质
US8898429B2 (en) Application processor and a computing system having the same
US20140040577A1 (en) Automatic Use of Large Pages
JP2022544791A (ja) ネットワーク化された入出力メモリ管理ユニット
US8347064B1 (en) Memory access techniques in an aperture mapped memory space
US8612691B2 (en) Assigning memory to on-chip coherence domains
JP7106775B2 (ja) グラフィックス表面アドレス指定
TWI497296B (zh) 記憶體配置與分頁位址轉換系統及方法
US9916255B2 (en) Data storage based on memory persistency
US20170322891A1 (en) Device and method for secure data storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190228

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20191127

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200217

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200701

R150 Certificate of patent or registration of utility model

Ref document number: 6728419

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250