JP2016534486A - ページ常駐に関する条件付きページフォールト制御 - Google Patents

ページ常駐に関する条件付きページフォールト制御 Download PDF

Info

Publication number
JP2016534486A
JP2016534486A JP2016544342A JP2016544342A JP2016534486A JP 2016534486 A JP2016534486 A JP 2016534486A JP 2016544342 A JP2016544342 A JP 2016544342A JP 2016544342 A JP2016544342 A JP 2016544342A JP 2016534486 A JP2016534486 A JP 2016534486A
Authority
JP
Japan
Prior art keywords
page
resident
memory
default value
access
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
JP2016544342A
Other languages
English (en)
Other versions
JP6110044B2 (ja
JP2016534486A5 (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 JP2016534486A publication Critical patent/JP2016534486A/ja
Publication of JP2016534486A5 publication Critical patent/JP2016534486A5/ja
Application granted granted Critical
Publication of JP6110044B2 publication Critical patent/JP6110044B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/30Providing cache or TLB in specific location of a processing system
    • G06F2212/302In image processor or graphics adapter

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、特定の非常駐ページがページフォールトを生成すべきでないことを示すインジケータに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを含み得る、非常駐ページを処理するためのシステムおよび方法を提供する。別の例は、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止し得る。

Description

[0001]本開示は、グラフィックスメモリ中の常駐および非常駐ページに関し、より詳細には、ページフォールト制御のための技法に関する。
[0002]概して、いくつかのシステムにおける非常駐ページへのアクセスはページフォールトを生じる。非常駐ページは、それに関連する物理的メモリロケーションを有しないページである。逆に、常駐ページは、それに関連する物理的メモリロケーションを有するページである。たとえば、非常駐ページは、仮想アドレスを有するが、そのアドレスに関連する実際の物理的メモリを有しないことがある。いくつかの例では、ソフトウェアは、たとえば、ページテーブルを使用して常駐ページの物理アドレスに仮想アドレスをマッピングし得る。概して、非常駐ページは、それに割り当てられた物理的メモリを有しないので、マッピングは、非常駐ページについて発生し得ない。メモリ管理ユニット(MMU)は、メモリ読み出しまたはメモリ書き込みなどのメモリトランザクションを実行するために、仮想アドレスと物理アドレスとの間のマッピングを決定するためにルックアップを実行し得る。
[0003]たとえば、マルチメディアに関するタスクを扱うためのいくつかのアプリケーションプログラミングインターフェース(API)は、非常駐ページにフォールトなしにアクセスすることを可能にし得る。本開示は、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法に関するシステムおよび方法を提供する。一例では、非常駐タイルがアクセスされると、読み出し命令に応答して所定のビット値が返され得、非常駐タイルへの書き込み命令に応答して、書き込みがドロップされ得る。別の例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。いくつかの例では、メモリ読み出しが変換しなかったという、信号などの指示も返され得る。仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。言い換えれば、ページ、仮想アドレスが非常駐であるページを指すとき、メモリアドレスは変換しない。ページが非常駐であるとき、仮想アドレスのための物理アドレスは存在しないので、仮想アドレスは、物理アドレスに変換され得ない。
[0004]非常駐ページは、物理的メモリロケーションがない、したがって、物理アドレスへの仮想アドレスのマッピングがないページである。常駐ページは、逆に、物理的メモリロケーションを有する、したがって、物理アドレスへの仮想アドレスのマッピングであり得るページである。さらに、本開示は、ページが非常駐であるときを、メモリ中のページに読み出しまたは書き込みを行おうと試み得るクライアント、すなわち、デバイスに知らせる様々な方法について説明する。
[0005]一例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを含む非常駐ページを処理する方法について説明する。
[0006]一例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すことと、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを含む非常駐ページを処理する方法について説明する。
[0007]別の例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを行うように構成されたプロセッサを含む非常駐を処理するための装置について説明する。
[0008]別の例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すことと、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行うように構成されたプロセッサを含む非常駐を処理するための装置について説明する。
[0009]別の例では、本開示は、非常駐ページにアクセスしようと試みるための手段と、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定するための手段と、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、デフォルト値を返すための手段とを含む非常駐を処理するための装置について説明する。
[0010]別の例では、本開示は、非常駐ページにアクセスするための手段と、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返すための手段およびデフォルト値を返すための手段と、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止するための手段とを含む、ページが非常駐であることをクライアントに通知するための装置について説明する。
[0011]別の例では、本開示はコンピュータ可読記憶媒体について説明する。実行時に、1つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを行わせる命令を記憶するコンピュータ可読記憶媒体。
[0012]別の例では、本開示はコンピュータ可読記憶媒体について説明する。実行時に、1つまたは複数のプロセッサに、1つまたは複数のプロセッサによる実行時に、1つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという、デフォルト値を返す指示を返すことと、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行わせる命令を記憶する非一時的コンピュータ可読記憶媒体、という命令を記憶するコンピュータ可読記憶媒体。
[0013]1つまたは複数の例の詳細が以下の添付の図面および説明において記載されている。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
[0014]本開示で説明する技法を実装するために使用され得る例示的なコンピューティングデバイスを示すブロック図。 [0015]本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する例示的なコンピューティングデバイスを示すブロック図。 [0016]本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する別の例示的なコンピューティングデバイスを示すブロック図。 [0017]本開示の、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実行し得るユニットを含む例示的なグラフィックスパイプラインを示す概念図。 [0018]本開示で説明する1つまたは複数の例による、例示的な方法を示すフローチャート。 [0019]本開示で説明する1つまたは複数の例による、例示的な方法を示すフローチャート。
[0020]上記で説明したように、いくつかのAPIは、非常駐ページにフォールトなしにアクセスすることを可能にし得る。一例は、タイルリソースと呼ばれるDirectX11(DX11)における新しい特徴である。タイルリソースは、フォールトを生じることなしにグラフィックス動作(たとえば、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にする。
[0021]本開示は、ページフォールト制御のための技法に関する。本開示は、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法に関するシステムおよび方法を提供する。たとえば、本開示は、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する様々な技法について説明する。ページフォールトは、概して、プロセッサまたはメモリ管理ユニットが非常駐ページのメモリアドレスに読み出しまたは書き込みを行おうと試みるときに発生する。上記で説明したように、非常駐ページは、物理的メモリロケーションがない、したがって、物理アドレスへの仮想アドレスのマッピングがないページである。常駐ページは、逆に、物理的メモリロケーションを有する、したがって、物理アドレスへの仮想アドレスのマッピングであり得るページである。
[0022]さらに、本開示は、ページが非常駐ページであるときをクライアントに知らせる様々な方法について説明する。たとえば、本開示で説明する技法により、クライアントは、それが非常駐ページにアクセスしていると決定することが可能になり得る。本開示で説明する技法のうちのいくつかでは、後続のコマンドの実行を停止するのではなく、クライアントは、非常駐ページへのそのようなアクセスを扱うように構成され得る。クライアントは、メモリ中のページに読み出しまたは書き込みを行おうと試み得るデバイスである。いくつかの例では、プロセッサがクライアントであり得る。たとえば、グラフィックス処理ユニットがクライアントであり得る。そのような例では、GPU内の複数のサブクライアントがアクセスを要求し得る(たとえば、ラスタユニットが書き込みを要求し得る間に、テクスチャサブクライアントがアドレスからの読み出しを要求し得る)。そのような例では、GPUは、読み出しおよび書き込み要求を行っている。いくつかの例では、クライアントは、テクスチャユニット、ブレンダユニット、またはシェーダユニットなど、GPU内の要求側であり得る。メモリ管理ユニット(MMU)がクライアントであり得る。ただし、MMUは、概して、上記のクライアントのうちの1つまたは複数に対してスレーブである。一例では、非常駐タイルがクライアントによってアクセスされると、読み出し動作に応答して所定のビット値が返され得、書き込みに応答して、動作がドロップされ得る。別の例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、適切なデフォルト値で満たされた単一のメモリページであり得る。クライアントが、非常駐ページへの任意のメモリアドレスにアクセスすると、ダミーページ中の値がクライアントに返され得る。
[0023]上記で説明したように、タイルリソースと呼ばれるDX11における新しい特徴は、フォールトを生じることなしにグラフィックス動作(すなわち、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にする。したがって、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別することが必要であり得る。さらに、ページが非常駐であるときをクライアントに知らせる方法を見つけるべきである。
[0024]一例では、読み出し許可(R)、書き込み許可(W)、キャッシュ可能メモリロケーション(C)、および共有メモリロケーション(S)などのDX11ページ属性は、非常駐ページへのアクセスがページフォールトを生成すべきでないことを指定する追加のビット、フラグまたは他の指示を含み得る。本明細書で説明するシステムおよび方法のいくつかの例は、既存のARMビットの上にNF(フォールトなし)ビットを追加し得る。他のビットの上記リストは、他の属性に関して網羅的なものではない。他のものがあり得る。ページ属性R、W、C、およびSは、ARMに基づいて、例として与えられているにすぎない。
[0025]いくつかの例では、フォールトなし(NF)ビット(フラグなど)は、この非常駐ページへのアクセスがページフォールトを生成すべきでないことを示し得る。たとえば、所与の仮想アドレスについて、ページテーブルは、仮想アドレスに関連付けられる物理アドレスならびに物理アドレスによって識別されるページ中に記憶されたデータのページ属性を記憶し得る。ページ属性は、ページテーブル中でバイナリビットとして記憶され得る。ページテーブルは、(一例として)物理アドレスにマッピングされ得る。NFビット208は、この非常駐ページへのアクセスがページフォールトを生成すべきでないことを指定するページ属性への追加であり得る。これらのシステムおよび方法を実装する例示的なデバイスは、次いで、読み出しのデフォルト値を返すか、または書き込みをドロップし得る。したがって、NFビット208は、非常駐素材へのアクセスがフォールトを生じるべきでないことを示し得る。一例では、そのようなデバイスは、読み出しまたは書き込みについてフォールトが発生すべきかどうかを決定し得る。フォールトが発生しない場合、読み出しまたは書き込みは変換され得る。フォールトが発生する場合、デバイスは、フォールトがフォールトに関してオペレーティングシステム(OS)にフォールトを報告されるべきかどうかを決定するためにNFビット208を使用し得る。デバイスは、様々な典型的なページフォールト訂正を実行し得る。代替的に、フォールトがOSに報告されるべきでないことをNFビット208が示す場合、デバイスは、読み出しに対して0x0などの値を返し得るか、またはデバイスは、書き込みをアボートして、継続し得る。
[0026]上記で説明したように、いくつかの例では、メモリ読み出しが変換しなかったという、信号などの指示も返され得る。仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。言い換えれば、ページ、すなわち仮想アドレスが非常駐であるページを指すとき、メモリアドレスは変換しない。ページが非常駐であるとき、仮想アドレスのための物理アドレスは存在しないので、仮想アドレスは、物理アドレスに変換され得ない。
[0027]NFビット208の1つの目的は、非常駐素材がフォールトを生じるべきでないことを指定することであり得るが、NFビット208はまた、非常駐ページの決定に影響を及ぼし得る。たとえば、NFビット208は、タイルリソース中のページが、ここで説明したように常駐であるかどうかを決定するために使用され得る。本明細書で説明する様々な例では、NFビット208は、タイルリソース中のページが常駐であるかどうかを決定するためにデフォルト値、常駐検査などと連携して使用され得る。
[0028]一例では、フォールトが発生する場合、非常駐ページへのメモリアクセスが発生しており、NFビット208は、フォールトを可能にするように設定されていなければならない。フォールトが発生せず、メモリアクセスが発生しており、NFビット208はフォールトが発生することを可能にするようなものである場合、試みられたメモリアクセスは常駐ページに対するものであるはずである。NFビット208が設定され、したがって、フォールトが発生しないことになることを除いて、フォールトが発生した場合、デフォルト値を返す、常駐検査など、本開示の他の態様が行われ得る。
[0029]いくつかの例は、既存のページテーブル属性を使用し得る。言い換えれば、そのような例では、NFビット208が存在する必要がないことがある。そのような例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。そのような例は、特定の物理的メモリアドレスにダミーページを記憶し、レジスタ中に物理的メモリアドレスの値を記憶し得る。非常駐ページの仮想アドレスは、ダミーページの物理的メモリアドレスにマッピングされ得る。さらに、ページがアクセスされているとき、ページテーブル中のそれの物理メモリが、レジスタ中に記憶された物理的メモリ値と比較され得る。2つの値が同じである場合、クライアントは、それが非常駐ページにアクセスしていると決定する。2つの値が異なる場合、クライアントは、それが常駐ページにアクセスしていると決定する。
[0030]ページが非常駐であるときをプロセッサなどのクライアント、たとえば、メモリにアクセスし得るデバイスに知らせるためのいくつかの例を提供する。これは、常駐検査と呼ばれる。デフォルト値またはダミー値は、ページが非常駐であるという指示を与え得るが、メモリ中に記憶されたこれらの値を、たとえば、実データとして常駐ページが偶然有する可能性が常にあるので、常駐検査が使用され得る。一例では、メモリ管理ユニット(MMU)は、ページが非常駐であることを示し得るビット、フラグ、または他の指示を返し得る。このビット、フラグ、または他の指示は、NFビット208またはフラグとは別個のものであり得る。NFビット208は、必ずしもクライアントに返されるビットと同じであるとは限らない。一例では、クライアント、たとえば、GPUは、タイルリソース中のページが常駐であるかどうかを決定するためにMMUからビットを読み出し得る。タイルリソースは、メガテクスチャ、仮想テクスチャ、スパーステクスチャ、および一部常駐テクスチャとしても知られる。タイルは、同じ基本テクスチャの異なる粒状度を記憶する複数のメモリページであり得る。この機能は、より迅速なアクセスのためにメモリ中に部分的にロードされるべきテクスチャに備えており、たとえば、テクスチャが、複数のメモリページ上にタイルを張られ、または、記憶され得る。これにより、より大きいテクスチャをより効率的に使用することが可能になり得る。他の例では、フラグまたは他のインジケータがクライアントによって読み取られ得る。
[0031]いくつかの例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する本技法の利点は、グラフィックス処理システムが、フォールトを生じるべきである非常駐ページへのアクセスが試みられるときに依然としてフォールトを発生しながら、フォールトを生じるべきでない非常駐ページを可能にし得ることである。
[0032]したがって、アクセスが試みられ、アクセスされているページが非常駐ページである場合に、すべての他のリソース(たとえば、非タイルリソース)がページフォールトを生じるように、これらの他のリソースへのアクセスに対するページフォールトを依然としてサポートしながら、フォールトを生じることなしにグラフィックス動作(すなわち、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にするDX11タイルリソース特徴がサポートされ得る。非タイルリソースへの非常駐ページにアクセスしようとする試みが行われるとき、ダミーページに非タイルリソース中のすべての非常駐ページの仮想アドレスをマッピングする必要がなく、むしろ、代わりにフォールトが発生することになる。したがって、グラフィックス処理システムは、フォールトを生じる非常駐ページのためのページフォールトを返し得る。概して、非常駐ページへのいかなるメモリ動作、たとえば、メモリ読み出しまたはメモリ書き込みも、ページフォールトを返すことになる。ただし、DX11におけるタイルリソースは、フォールトを生じることなしにグラフィックス動作(すなわち、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にする特徴の一例である。非常駐について。他の可能な例としては、OpenGLにおける「一部常駐テクスチャ」拡張があり得る。
[0033]デフォルト値を含んでいるメモリページは、ダミーページと呼ばれることもあり、ダミー値を含んでいると言われ得る。たとえば、場合によっては、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、NFビット208は、フォールトを可能にするように設定され得る。言い換えれば、非常駐ページへの読み出しまたは書き込みは、すべての他のリソースへのアクセスにページフォールトを生じるべきである。したがって、フォールトを生じることなしにグラフィックス動作(すなわち、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にするDX11タイルリソースに関係しないリソースの場合、NFビット208は、フォールトを可能にするように設定され得る。一例では、NFがシングルビットであり、NF=「1」は、フォールトが発生すべきでないことを示す場合、NF=「0」は、フォールトが正常に処理されるべきであることを示す。言い換えれば、非常駐ページでは、読み出しまたは書き込みを行うGPUまたはMMUのための実際のメモリがないので、非常駐ページへのいかなるメモリ動作、たとえば、メモリ読み出しまたはメモリ書き込みも、ページフォールトを返すことになる。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、NFビット208は、「0」になることになる。逆も真である。したがって、NFがシングルビットであり、NF=「0」、たとえば、負論理は、フォールトが発生すべきでないことを示す場合、NF=「1」は、フォールトが通常通り処理されるべきであることを示す。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、NFビット208は、「1」になることになる。同様に、プロセッサまたはメモリ管理ユニットが非常駐ページのメモリアドレスに読み出しまたは書き込みを行おうと試みるときに、概して、ページフォールトが発生するので、ダミーページに、非タイル非常駐ページの仮想アドレスをマッピングするのではなく、ページフォールトを単に返すことによってすべての非タイルリソースへのアクセスに対するページフォールトをサポートするために、グラフィックス処理システム、たとえば、GPU、MMU、メモリなどのためのフラグおよび他の指示も可能であり得る。たとえば、1つのフラグ設定がフォールトがないことを示し得、一方、別のフラグ設定が、フォールトが発生することを可能にする。
[0034]一例では、グラフィックスプロセッサ、メモリ管理ユニット(MMU)または他のプロセッサが、フォールトを生じるべきでない非常駐ページを読み出すとき、読み出しによって、デフォルト値、たとえば、すべて0の値、すべて1の値などの所定のビット値が返され得る。デフォルト値は、すべての非常駐ページのアクセスのために使用され得るあらかじめ定義する値を与える。一例では、非常駐ページへの読み出しが発生する場合、値は0になる。ただし、これは、ページが非常駐であることを決定的に示さない。デフォルト値、たとえば、0は、ありがちな値であり得、常駐ページがデフォルト値を偶然に含んでいる可能性があり得る。MMUまたは他のプロセッサは、たとえば、GPUなどの、読み出しを実行し得るか、またはMMUが読み出しを実行することを要求したデバイスに、非常駐ページがアクセスされたことを示すために、ステータスまたは肯定応答(ACK)を使用し得る。ACKは、メモリ読み出しが変換しなかったという指示を与え得る。上記で説明したように、仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。いくつかの例は、メモリ読み出しが変換したかどうかを決定するために、ACK(あるいは別の指示または信号)を使用し得る。NFビット208またはデフォルト値は、それがアクセスされたときにメモリ読み出しがフォールトを生じるべきでないという指示を与え得る。別の例では、読み出しを実行し得るが、概して書き込みを実行しないテクスチャユニットは、フォールトを生じるべきでない非常駐ページをそれまたは別のプロセッサが読み出すときにデフォルト値を受信し得る。さらに、一例では、クライアント、たとえば、GPUは、MMUに常駐情報を要求することによって常駐検査を実行し得る。たとえば、GPUは、MMUにページが常駐であるという指示を与えさせるためにMMUに信号を送り得る。たとえば、GPUは変換すべき信号としてアドレスを与え得、MMUは、常駐についての検査を実行する。MMUは、ページが常駐ページであるか、または非常駐ページであるかを示す肯定応答を返し得る。MMUはメモリを管理し、それに応じて、常駐および非常駐であるページに関する情報が、MMU中に、またはMMUの内部または外部のものであり得るページテーブル中に記憶され得る。いくつかの例では、ページテーブルは、メモリ、たとえば、DRAMの一部中に記憶され得る。
[0035]一例では、GPUが非常駐ページに書き込もうと試みるとき、非常駐ページは物理的ロケーションにマッピングせず、したがって、データを書き込む場所がないので、その書き込みの試みはドロップされるべきである。試みられた書き込みについてのデータは、失われることになり、プロセッサまたは他の回路は、それが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。より詳細に説明するように、一例では、たとえば、書き込みが非常駐ページに対するものであるとMMUが決定すると、MMUは書き込みをドロップし得る。またより詳細に説明するように、いくつかの例では、グラフィックス処理ユニットのピクセルシェーダ、形状シェーダ、または他のシェーダユニットが、書き込みを実行し得、非常駐ページへの書き込みをドロップするようにプログラムされ得る。
[0036]上記で説明したように、タイルリソースと呼ばれるDX11における新しい特徴は、フォールトを生じることなしにグラフィックス動作(すなわち、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にする。したがって、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別することが必要であり得る。さらに、いくつかの例では、プロセッサ、グラフィックスプロセッサ、またはMMUは、デプステストのために読み出しおよび/または書き込みを実行し得る。デプステストは、レンダリングされた場面のどの要素が可視であり、どれが隠れているかを決定するために、3次元(3D)グラフィックス中の画像デプス座標に関して、使用され得るグラフィックス動作である。プロセッサ、グラフィックスプロセッサ、またはMMUはまた、カラーブレンディンググラフィックス動作の一部として読み出しを実行し得る。これらの機能は、デプステスト、カラーブレンディングなどに関係する常駐ページおよび非常駐ページに対処することを可能にするために、本明細書で提供する例を使用し得る。例示的なカラーブレンディング動作は、新しい色(「New_color)を形成するために描画する色(「incoming_color」)とブレンドするための前の色(「old_color」)を読み出し得る。言い換えれば、たとえば、ビデオディスプレイ上に以前に表示された色が、新しい色を形成するために描画する色とブレンドされ得る。新しい色は、実際に表示される色であり得る。前の色は、ブレンディングを実行するプロセッサによって読み取られ、以下を使用してブレンドされ得る。
New_color=old_color*(1−blend_value)
+incoming_color*(blend_value)。
[0037]別の例では、ダミーページは、ページが常駐であるかどうかを示すダミー値を含んでいる。ダミーページは、非常駐ページへの任意の読み出しにマッピングされ得る情報のページを形成する単一のメモリロケーションまたは一連のメモリロケーションであり得る。たとえば、(比較ユニットなどの)システムは、物理アドレスがレジスタ中に記憶されたダミーページのアドレス値と同じであるかどうかを決定するために、アドレス、たとえば、ページテーブル中の物理アドレスを、レジスタ中に記憶されたダミーページのアドレスと比較し得る。このようにして、システムは、ページが常駐であるかどうかを決定し得る。いくつかの例では、入力アドレスは、ページテーブル中に記憶された仮想アドレスであり得る。ステータスビットも、ページテーブル中に記憶され得る。仮想アドレスおよびステータスビットは、所与の仮想アドレスがマッピングすることになる物理アドレスを生成するために組み合わされ得る。たとえば、MMUは、仮想アドレスを物理アドレスにマッピングするように構成され得る。MMUは、仮想アドレスをタイルの物理アドレスにマッピングするために使用されるページテーブルエントリのセットを含み得る。いくつかの例では、MMUは、キャッシュラインについての要求がヒットまたはミスであるか否かを決定するために使用され得るキャッシュラインインデックスを含み得る。参照されるダミーページは物理アドレスを有し、同じ物理アドレスが、複数の仮想アドレスのために使用され得る。この例では、存在せず、PRTの一部であるすべての仮想アドレステーブルエントリのためにダミーページの物理アドレスが使用され得る。
[0038]アクセスされているページがレジスタ中の値に一致する場合、ページは非常駐である。ページに対する読み出しは、通常通り進行し得る。これは、プロセッサまたはグラフィックスプロセッサが、ダミーページに適切なデフォルト値を書き込むことになり、これらの値が、非常駐ページにアクセスしようと試みるシステムによって読み取られることになるからである。試みられた書き込みはドロップされるべきである。この場合も、試みられた書き込みについてのデータは、失われることになり、データが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、複数の非常駐ページによって使用され得るダミー値を含むページ以外の非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。さらに、一例では、ページが非常駐ページであることを示すレジスタ中の値に、アクセスされているページが一致するとき、常駐検査は偽を返すべきである。
[0039]この解決策のいくつかの例の利点は、読み出しに対してページフォールトを作成するのではなく、非常駐ページが「ダミーページ」に透過的にマッピングされること、および「特殊な」処理が書き込みに対してのみ必要とされることである。この解決策のいくつかの例の別の利点は、デフォルト値でページを満たすことをソフトウェアが担当し得るので、デフォルト値がプログラム可能であり得ることである。
[0040]いくつかの例では、DX11特徴はまた、タイルリソースが常駐であるか、または非常駐であるかをグラフィックスシェーダプログラムが決定する方法を必要とし得る。すべての非常駐ページのために、適切なデフォルト値で満たされたダミーページが使用され得る。ダミーページ中に記憶されたデフォルト値は、ページが非常駐であるという指示を与え得る。ただし、単に、記憶されたデータがデフォルト値と偶然同じ値であるので、そのような値がページ中に記憶され得る。ただし、さらに、場合によっては、これらの非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、たとえば、書き込みを続けることが可能になる場合、正しいデフォルト値を常に返すことをダミーページに依拠し得ない。したがって、メモリ読み出しが変換しなかったという、信号などの別の指示も、本明細書で説明するダミー値と併せて使用され得る。さらに、別の例では、ページが常駐であるかどうかをシェーダプログラムが決定することを可能にするために別個の常駐マップが使用され得る。そのような例は、そのテクスチャからの読み出しが発生し得るかどうかを決定するために常駐マップを検査し得る。たとえば、シェーダプログラムを実行しているGPUは、MMUに常駐検査を要求し得る。GPUが常駐検査を要求すると、MMUは、たとえば、タイル(複数のメモリページ)がメモリ中で常駐であるかどうかを決定するために、常駐マップを検査し得る。タイルが非常駐であると常駐マップの検査が返す場合、メモリから値をフェッチするのではなく、シェーダ中のデフォルト値が使用され得る。一例では、要求されたメモリアクセスは、タイルテクスチャへのアクセスをし得る。タイルテクスチャまたはタイルテクスチャの1つの粗さレベルがメモリ中に記憶されないことがある。したがって、デフォルト値が代わりに返され得るか、または、以下でより詳細に説明するように、テクスチャのより粗いバージョンが利用可能であり得る。
[0041]様々な例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法が提供される。さらに、ページが非常駐であるときをクライアントに知らせる様々な方法が提供される。非常駐であるページがアクセスされているときにクライアントが何を行うかは、変動し得、概して、クライアントの必要によって規定され得る。
[0042]たとえば、ある場合には、一部常駐テクスチャが使用され得る。一部常駐テクスチャは、メモリ中に部分的に記憶される。たとえば、テクスチャの粒状度レベルの全部ではないが一部がメモリ中に記憶され得る。粒状度は、特定のレンダリングのために与えられ得るテクスチャのための詳細さのレベルを指す。概して、所与のテクスチャが、3Dピクチャの2Dレンダリングにおいてより遠く離れていると考えられれば考えられるほど、テクスチャにおいてより低い詳細さが使用され得る。テクスチャ全体、すなわち、粒状度のあらゆるレベルは、それの一部、たとえば、1つまたは複数の粒状度レベルを記憶するために使用されるメモリのサイズよりも大きくなり得る。テクスチャの一部、たとえば、1つまたは複数の粒状度レベルがメモリ中に記憶され得る。したがって、常駐検査は、テクスチャの一部、たとえば、ピクチャの所与のレンダリングのために使用され得るテクスチャの粒状度レベルが常駐であるか、または非常駐であるかを決定するために使用され得る。たとえば、GPUは、たとえば、テクスチャの特定の粒状度レベルがメモリ中で利用可能であるかどうかを決定するために常駐検査を要求し得、メモリコントローラ8またはIOMMUは、常駐検査の結果、たとえば、テクスチャの特定の粒状度レベルがメモリ中で利用可能であるかどうかを示す常駐肯定応答を返し得る。テクスチャの非常駐部分がピクチャのレンダリングのために必要とされると、メモリコントローラ8またはIOMMUはデフォルト値を返し得る。
[0043]いくつかの例では、ピクチャをレンダリングするために必要とされるテクスチャがメモリ中で利用可能でないとき、クライアントは、より高いミップマップレベル(MIPレベル)をもつより粗いテクスチャにフォールバックし得、ここで、ピクセルのサイズは、所与のテクスチャについてより小さくなり、したがって、テクスチャはより粗くなる。ミップマップは、同じ画像を表すアレイの順序集合であり、各アレイは、前のアレイよりも低い解像度を有する。たとえば、0のミップマップレベル(MIPレベル)は、最も高い解像度の画像のためのものであり得、1のMIPレベルは、2番目に高い解像度の画像のためのものであり得、以下同様であり、ここで、最高のMIPレベルは、最も粗い解像度をもつ画像のためのものである(表1を参照)。より粗いテクスチャは、プロセッサによって記憶され得るテクスチャの詳細さがより低いバージョンであり、テクスチャの詳細さがより低いバージョンを記憶するためにより少ないメモリが必要になり得る。したがって、テクスチャの詳細なバージョンを記憶するのではなく、1つまたは複数のテクスチャの詳細さがより低いバージョンを記憶することがより効率的であり得る。一部常駐テクスチャのより粗いバージョンは、常駐である可能性が高くなり得る。いくつかの例では、所与のテクスチャのために必要とされる詳細さのレベル(LOD:level of detail)に応じて、一部常駐テクスチャのより粗いバージョンが許容され得る。いくつかの例では、テクスチャユニットは、表示される粗さレベルを選択し得る。たとえば、テクスチャユニットは、非常駐であるより詳細なテクスチャではなく常駐であるより粗いテクスチャを選択し得る。テクスチャユニットは、別個のハードウェアであり得るか、またはピクセルシェーダまたは他のシェーダの一部であり得る。
Figure 2016534486
[0044]本明細書で説明する例は、概して、「フェイルセーフ」を提供し、したがって、非常駐ページについてページフォールトは発生しない。たとえば、ピクチャをレンダリングするために必要とされるテクスチャがメモリ中で利用可能でないとき、より高いミップマップレベル(MIPレベル)をもつより粗いテクスチャにフォールバックすることによる。いくつかの例では、読み出しは必要とされないことがある。これは、たとえば、メモリ中にロードされるものよりもより詳細なテクスチャレベルを読み出すときに発生し得る。その場合、アプリケーションは、テクスチャが常駐でないと示され得、詳細さがより低いバージョンを使用し得る。テクスチャは、メモリを節約するためにロードされないことがある。色の書き込みの場合、ページは、物理的メモリを節約するために消失していることがある。
[0045]いくつかの例は、カラーバッファリングのために非常駐ページにアクセスし得る。カラーバッファリングは、読み出しのみの動作、書き込みのみの動作、または読み出しと書き込みとの両方の動作を含み得る。プロセッサ(たとえば、GPU)は、たとえば、目標アルファチャネル情報が使用され、アルファチャネル情報の現在の値を保持すべきであり、書き込みがアボートされるときに読み出しのみの動作を実行し得る。これは、たとえば、ブレンディング事例で発生し得る。アルファチャネルは、画像に追加され得る追加のチャネルである。アルファチャネル情報は、画像に関する透明度情報を含んでおり、アルファのタイプに応じて、様々なレベルの透明度を含むことができる。アルファチャネルは、概して、すべての他のチャネルの透明度を制御する。画像にアルファチャネル情報を追加することによって、赤チャネル、緑色チャネルおよび青色チャネルの透明度が制御され得る。書き込みのみは、一般に、メモリに色値を(たとえば、ピクセルごとに1つ)書き込むために使用され得る。読み出しおよび書き込みは、概して、ブレンディングのために使用され得る。たとえば、プロセッサは、目標色とピクセルのための目標アルファとを読み出し、たとえば、ポーターダフ型のブレンディングを使用して、ピクセルについてのその情報を、描画するソース色およびピクセルのためのソースアルファとマージし得る。したがって、プロセッサは、データをブレンドするために関係したデータを、読み出し、次いで、書き込み得る。場合によっては、アボートされた書き込みがあり得、その場合、読み出しのみが行われる。(ポーターダフブレンディングルールは、目標ピクセルに対する2つのソースピクセルの寄与を制御するためのブレンディング式のペアを定義する)。
[0046]図1は、本開示で説明する技法を実装するために使用され得る例示的なコンピューティングデバイス2を示すブロック図である。コンピューティングデバイス2は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、コンピュータワークステーション、ビデオゲームプラットフォームもしくはコンソール、(たとえば、携帯電話、セルラー電話、衛星電話、および/もしくは携帯電話ハンドセットのような)ワイヤレス通信デバイス、固定電話、インターネット電話、ポータブルビデオゲームデバイスもしくは携帯情報端末(PDA)のようなハンドヘルドデバイス、パーソナル音楽プレーヤー、ビデオプレーヤー、ディスプレイデバイス、テレビジョン、テレビジョンセットトップボックス、サーバ、中間ネットワークデバイス、メインフレームコンピュータ、またはグラフィカルデータを処理および/もしくは表示する任意の他のタイプのデバイスを備え得る。
[0047]図1の例に示すように、コンピューティングデバイス2は、ユーザインターフェース4と、CPU6と、メモリコントローラ8と、メモリ10と、グラフィックス処理ユニット(GPU)12と、GPUキャッシュ14と、ディスプレイインターフェース16と、ディスプレイ18と、バス20とを含む。ユーザインターフェース4、CPU6、メモリコントローラ8、GPU12、およびディスプレイインターフェース16は、バス20を使用して互いと通信し得る。図1に示す異なる構成要素同士の間のバスおよび通信インターフェースの特定の構成は単なる例示であり、本開示の本技法を実装するために、同じもしくは異なる構成要素を備えたコンピューティングデバイスおよび/または他のグラフィックス処理システムの他の構成が使用され得ることに留意されたい。
[0048]CPU6は、コンピューティングデバイス2の動作を制御する汎用または特殊用途プロセッサを備え得る。ユーザは、CPU6に1つまたは複数のソフトウェアアプリケーションを実行させるために、コンピューティングデバイス2に入力を提供し得る。CPU6上で実行されるそれらのソフトウェアアプリケーションは、たとえば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインターフェースアプリケーション、または別のプログラムを含み得る。ユーザは、ユーザインターフェース4を介してコンピューティングデバイス2に結合される、キーボード、マウス、マイクロフォン、タッチパッドまたは別の入力デバイスなど、1つもしくは複数の入力デバイス(図示せず)を介してコンピューティングデバイス2に入力を与え得る。
[0049]CPU6上で実行するソフトウェアアプリケーションは、グラフィックスデータをディスプレイ18にレンダリングさせるようにGPU12に命令する、1つまたは複数のグラフィックスレンダリング命令を含み得る。いくつかの例では、ソフトウェア命令は、たとえば、Open Graphics Library(OpenGL(商標登録))アプリケーションプログラミングインターフェース(API)、Open Graphics Library Embedded System(OpenGL ES)API、Direct3D API、DirectX API、RenderMan API、WebGL API、または任意の他の公開の、もしくはプロプライエタリの標準的なグラフィックスAPIのような、グラフィックスAPIに準拠し得る。グラフィックスレンダリング命令を処理するために、CPU6は、グラフィックスデータのレンダリングの一部または全部をGPU12に実行させるために、1つまたは複数のグラフィックスレンダリングコマンドをGPU12に発行し得る。いくつかの例では、レンダリングされるべきグラフィックスデータは、グラフィックスプリミティブのリスト、たとえば、点、線、三角形、四角形、トライアングルストリップ、パッチなどを含み得る。
[0050]本開示は、メモリページ、たとえば、仮想メモリの固定長連続ブロックがメモリ10中に非常駐であることを、クライアント、たとえば、CPU6、GPU12、またはメモリコントローラ8に通知するためのシステムおよび方法を提供する。いくつかの例としては、非常駐ページにアクセスしようと試みることと、非常駐ページがページフォールトを生じるべきでないと決定することとがあり得る。この決定は、特定の非常駐ページがページフォールトを生成すべきでないことを示すビットに基づき得る。非常駐ページのアクセスが読み出しであるとき、いくつかの例はデフォルト値を返し得る。いくつかの例では、非常駐ページのアクセスが書き込みであるとき、非常駐ページは、ページフォールトおよび書き込みを中止することを生じるべきでない。非常駐ページは、ページフォールトを生じるべきでない。別の例では、プロセッサ、たとえば、GPU12は、非常駐ページ、すなわち、メモリ10などのメモリ中に記憶されていないページにアクセスしようと試み得る。非常駐ページのアドレスは、代わりに、デフォルト値を含んでいる、たとえば、メモリ10中のメモリページを指し得る。非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、デフォルト値は、メモリコントローラ8を通してメモリ10によってGPU12に返され得る。GPU12などのプロセッサによる書き込みが、非常駐ページに対するものであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みは中止され得る。いくつかの例では、プロセッサ、たとえば、GPU12は、データが後で必要とされる場合、中止された書き込みから失われたデータを再計算し得る。
[0051]メモリコントローラ8は、メモリ10に出入りするデータの転送を容易にする。たとえば、メモリコントローラ8は、メモリ読み出し要求とメモリ書き込み要求とをCPU6および/またはGPU12から受信し、コンピューティングデバイス2内の構成要素にメモリサービスを提供するために、メモリ10に関するそのような要求にサービス提供し得る。メモリコントローラ8はメモリ10に通信可能に結合される。メモリコントローラ8は、図1の例示的なコンピューティングデバイス2では、CPU6とメモリ10の両方とは別の処理モジュールとして示されているが、他の例では、メモリコントローラ8の機能の一部または全部は、CPU6、GPU12、およびメモリ10の1つまたは複数の上に実装され得る。いくつかの例では、メモリ管理ユニット(MMU)は、たとえば、GPU12または他のクライアントの一部であり得る。他の例では、MMU(図示せず)は、あらゆるクライアント、たとえば、GPU12とメモリコントローラ8との間にあり得る。
[0052]メモリ10は、CPU6による実行のためにアクセス可能なプログラムモジュールおよび/もしくは命令ならびに/またはCPU6上で実行されるプログラムが使用するためのデータを記憶し得る。たとえば、メモリ10は、ユーザアプリケーションと、それらのアプリケーションに関連するグラフィックスデータとを記憶し得る。メモリ10は、コンピューティングデバイス2の他の構成要素が使用するための情報、および/またはそれらによって生成された情報を記憶し得る。たとえば、メモリ10は、GPU12のデバイスメモリとして働き得、GPU12によって演算されることになるデータ、ならびにGPU12によって実行される演算の結果生じるデータを記憶し得る。たとえば、メモリ10は、パスデータ、パスセグメントデータ、表面、テクスチャバッファ、デプスバッファ、セルバッファ、頂点バッファ、フレームバッファなどの任意の組合せを記憶し得る。さらに、メモリ10は、GPU12によって処理するためのコマンドストリームを記憶し得る。メモリ10は、たとえば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、同期式ダイナミックランダムアクセスメモリ(SDRAM)、読み出し専用メモリ(ROM)、消去可能プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM(登録商標))、フラッシュメモリ、磁気データ媒体または光記憶媒体のような、1つもしくは複数の揮発性または不揮発性のメモリあるいはストレージデバイスを含み得る。
[0053]GPU12は、CPU6によってGPU12に発行されたコマンドを実行するように構成され得る。GPU12によって実行されるコマンドは、グラフィックスコマンド、描画呼出しコマンド、GPU状態プログラミングコマンド、メモリ転送コマンド、汎用コンピューティングコマンド、カーネル実行コマンドなどを含み得る。メモリ転送コマンドは、たとえば、メモリ複製コマンド、メモリ合成コマンド、およびブロック転送(ブリット)コマンドを含み得る。
[0054]いくつかの例で、GPU12は、ディスプレイ18に1つまたは複数のグラフィックスプリミティブをレンダリングするためにグラフィックス動作を実行するように構成され得る。そのような例では、CPU6上で実行するソフトウェアアプリケーションの1つがグラフィックス処理を必要とするとき、CPU6は、ディスプレイ18にレンダリングするためのグラフィックスデータをGPU12に提供し、GPU12に1つまたは複数のグラフィックスコマンドを発行し得る。グラフィックスコマンドは、たとえば、描画呼出しコマンド、GPU状態プログラミングコマンド、メモリ転送コマンド、ブリットコマンドなどを含み得る。グラフィックスデータは、頂点バッファ、テクスチャデータ、面データなどを含み得る。いくつかの例では、CPU6は、コマンドとグラフィックスデータとをGPU12によってアクセスされ得るメモリ10に書き込むことによって、コマンドとグラフィックスデータとをGPU12に提供し得る。
[0055]さらなる例では、GPU12は、CPU6上で実行されるアプリケーションのために汎用コンピューティングを実行するように構成され得る。そのような例では、CPU6上で実行されるソフトウェアアプリケーションの1つが計算タスクをGPU12にオフロードすることを決定するとき、CPU6は、汎用コンピューティングデータをGPU12に提供し、GPU12に1つまたは複数の汎用コンピューティングコマンドを発行し得る。汎用コンピューティングコマンドは、たとえば、カーネル実行コマンド、メモリ転送コマンドなどを含み得る。いくつかの例では、CPU6は、コマンドとグラフィックスデータとをGPU12によってアクセスされ得るメモリ10に書き込むことによって、コマンドと汎用コンピューティングデータとをGPU12に提供し得る。
[0056]GPU12は、いくつかの例では、CPU6よりも効率的な処理を行う高並列構造を用いて構築され得る。たとえば、GPU12は、複数の頂点、制御点、画素および/または他のデータについて並列の方式で演算するように構成された複数の処理要素を含み得る。GPU12の高度に並列な性質は、いくつかの例では、GPU12が、CPU6を使用して画像をレンダリングするよりも迅速にグラフィックス画像(たとえば、GUIおよび2次元(2D)ならびに/または3次元(3D)のグラフィックスシーン)をディスプレイ18上にレンダリングするのを可能にし得る。さらに、GPU12の高並列な性質は、GPU12が、汎用コンピューティングアプリケーションに関するある種のタイプのベクトル演算と行列演算とをCPU6よりすばやく処理することを可能にし得る。
[0057]いくつかの例では、GPU12は、コンピューティングデバイス2のマザーボードに統合され得る。他の例では、GPU12は、コンピューティングデバイス2のマザーボードにおけるポートに差し込まれたグラフィックスカード上に存在し得、またはコンピューティングデバイス2と相互動作するように構成された周辺デバイス内に組み込まれ得る。さらなる例では、GPU12は、システムオンチップ(SoC)を形成するCPU6と同じマイクロチップ上に配置され得る。GPU12は、1つもしくは複数のマイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、デジタルシグナルプロセッサ(DSP)、または他の同等の集積もしくは個別論理回路などの1つまたは複数のプロセッサを含み得る。
[0058]いくつかの例では、GPU12はGPUキャッシュ14に直接結合され得る。したがって、GPU12は、必ずしもバス20を使用せずに、GPUキャッシュ14からデータを読み出し、GPUキャッシュ14にデータを書き込み得る。言い換えると、GPU12は、オフチップメモリの代わりに、ローカルストレージを使用してデータをローカルに処理し得る。これにより、GPU12は、大量のバストラフィックを受けることがある、バス20を介したデータの読み出しおよび書き込みの必要がなくなるので、より効率的な方法で動作することが可能になる。しかしながら、いくつかの例では、GPU12は、別個のキャッシュを含まず、代わりに、バス20を介してメモリ10を利用し得る。GPUキャッシュ14は、たとえば、ランダムアクセスメモリ(RAM)、スタティックRAM(SRAM)、ダイナミックRAM(DRAM)、消去可能プログラマブルROM(EPROM)、電気消去可能プログラマブルROM(EEPROM)、フラッシュメモリ、磁気データ媒体または光学記憶媒体のような、1つもしくは複数の揮発性または不揮発性のメモリあるいはストレージデバイスを含み得る。
[0059]CPU6および/またはGPU12は、レンダリングされた画像データをメモリ10内に割り振られたフレームバッファ内に記憶し得る。ディスプレイインターフェース16は、データをフレームバッファから取り出し、レンダリングされた画像データによって表される画像を表示するようにディスプレイ18を構成し得る。いくつかの例では、ディスプレイインターフェース16は、フレームバッファから取り出されたデジタル値を、ディスプレイ18によって消費可能なアナログ信号に変換するように構成されたデジタルアナログコンバータ(DAC)を含み得る。他の例では、ディスプレイインターフェース16は、処理のために、デジタル値をディスプレイ18に直接的にパスし得る。
[0060]ディスプレイ18は、モニタ、テレビジョン、映写デバイス、液晶ディスプレイ(LCD)、プラズマディスプレイパネル、発光ダイオード(LED)アレイ、陰極線管(CRT)ディスプレイ、電子ペーパー、表面電界ディスプレイ(SED:surface-conduction electron-emitted display)、レーザーテレビジョンディスプレイ、ナノ結晶ディスプレイ、または別のタイプのディスプレイユニットを含み得る。ディスプレイ18はコンピューティングデバイス2内に統合され得る。たとえば、ディスプレイ18は、携帯電話ハンドセットまたはタブレットコンピュータのスクリーンであり得る。代替的に、ディスプレイ18は、有線またはワイヤレス通信リンクを介してコンピューティングデバイス2に結合されたスタンドアロンデバイスであり得る。たとえば、ディスプレイ18は、ケーブルまたはワイヤレスリンクを介してパーソナルコンピュータに接続されたコンピュータモニタまたはフラットパネルディスプレイであり得る。
[0061]バス20は、第1世代、第2世代、および第3世代のバス構造およびバスプロトコル、共有バス構造および共有バスプロトコル、ポイントツーポイントバス構造およびポイントツーポイントバスプロトコル、単一方向バス構造および単一方向バスプロトコル、ならびに両方向バス構造および両方向プロトコルを含む、バス構造とバスプロトコルとの任意の組合せを使用して実施され得る。バス20を実装するために使用され得る様々なバス構造およびバスプロトコルの例としては、たとえば、HyperTransportバス、InfiniBandバス、Advanced Graphics Portバス、Peripheral Component Interconnect(PCI)バス、PCI Expressバス、Advanced Microcontroller Bus Architecture(AMBA)Advanced High−performance Bus(AHB)、AMBA Advanced Peripheral Bus(APB)、およびAMBA Advanced eXentisible Interface(AXI)バスがある。他のタイプのバス構造およびプロトコルも使用され得る。
[0062]本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する技法は、たとえば、CPU6、GPU12、およびメモリ10を含む、図1に示すコンピューティングデバイス2中の構成要素のいずれか中に実装され得る。ページは、メモリページまたは仮想ページと呼ばれることもある。ページは、仮想メモリの固定長連続ブロックであり得る。ページは、仮想であるので、メモリ10などのメモリ中に記憶されることも、記憶されないこともある。特定のページは、たとえば、メモリ10中に記憶されると、常駐ページと呼ばれることがある。逆に、特定のページは、たとえば、メモリ10中に記憶されないと、非常駐ページと呼ばれることがある。常駐でないと呼ばれることもある。いくつかの例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法のすべてまたはほぼすべてが、GPU12中に(たとえば、GPU12のグラフィックスパイプライン中に)実装され得る。
[0063]図2および図3に、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する様々な技法について説明する本開示の2つの例示的なシステムのさらなる詳細さを示す。さらに、図2および図3に、ページが非常駐であるときをクライアント、たとえば、GPU12に知らせる様々な方法を示す。言い換えれば、ページがメモリ10などのメモリ中に記憶されないときである。フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するためのいくつかの例を提供する。
[0064]図2は、本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する例示的なコンピューティングデバイスを示すブロック図である。コンピューティングデバイスは、GPU12と、入出力メモリ管理ユニット(IOMMU)であり得るメモリコントローラ8と、動的ランダムアクセスメモリ(DRAM)であり得るメモリ10と、ページテーブル(PTE)206とを含む。
[0065]図2に示すように、例示的なコンピューティングデバイスは、メモリコントローラ8を含む。メモリコントローラ8は、メモリコントローラの形態であり得る。さらに、メモリコントローラ8は、読み出し許可(R)、書き込み許可(W)、キャッシュ可能メモリロケーション(C)、および共有メモリロケーション(S)などの様々なページ属性210を処理するように構成され得る。図示のように、図2の例では、ページ属性210は、ページフォールトを生成すべきでない非常駐ページへのアクセスを指定する追加のビットを含み得る。したがって、メモリコントローラ8は、非常駐ページへのアクセスがページフォールトを生成すべきでないことを示す「フォールトなし」(NF)ビット208を処理するように構成され得る。NFビット208は、非常駐ページへのアクセスがフォールトを生成すべきでないことを示し得る。
[0066]NFビット208の1つの目的は、非常駐素材がフォールトを生じるべきでないことを指定することであり得る。NFビット208はまた、非常駐ページの決定に影響を及ぼし得る。NFビット208は、タイルリソース中のページが、ここで説明したように常駐であるかどうかを決定するために使用され得る。たとえば、NFビット208は、タイルリソース中のページが常駐であるかどうかを決定するためにデフォルト値、常駐検査などと連携して使用され得る。
[0067]一例では、GPU12、メモリコントローラ8、または他のプロセッサが、フォールトを発生させるメモリアクセス(たとえば、読み出し、書き込み)を実行する場合、メモリアクセスは、非常駐ページに対するものであって、NFビット208は、そのメモリアクセスについてフォールトを可能にするように設定されていなければならない。メモリアクセスについてフォールトが発生せず、NFビット208はフォールトが発生することが可能になるようなものである場合、GPU12、メモリコントローラ8、または他のプロセッサによって試みられたメモリアクセスは常駐ページに対するものでなければならない。NFビット208が設定され、したがって、フォールトが発生しないことになることを除いて、フォールトが発生した場合、デフォルト値を返す、常駐検査など、本開示の他の態様が行われ得る。
[0068]図2に、「NF」208と呼ばれる「フォールトなし」、「常駐でないビット」、または「非常駐ビット」を含む例を示す。所与の仮想アドレスについて、ページテーブルは、仮想アドレスに関連付けられる物理アドレス212ならびに物理アドレスによって識別されるページ中に記憶されたデータのページ属性210を記憶し得る。ページ属性210は、(一例として)物理アドレス212にプリペンドされたバイナリビットとして記憶され得る。これらのページ属性210のうちの1つは、図2に示すようにNFビット208である。
[0069]ページが非常駐であるときをクライアント、たとえば、GPU12に知らせるためのいくつかの例を提供する。本明細書で説明するように、ページは、メモリ10などのメモリ中に記憶されないとき、非常駐である。ページは、仮想であるので、メモリ10などのメモリ中に記憶されることも、記憶されないこともある。特定のページは、たとえば、メモリ10中に記憶されると、常駐ページと呼ばれることがある。逆に、特定のページは、たとえば、メモリ10中に記憶されないと、非常駐ページと呼ばれることがある。常駐でないと呼ばれることもある。
[0070]ページは、仮想メモリの固定長連続ブロックであり得る。概して、仮想メモリにより、メインメモリ中に現在常駐していないページをアドレス指定し、使用することが可能になる。場合によっては、たとえば、GPU12上で動作するプログラムが、メモリ中にない(すなわち、常駐していないまたは非常駐である)ページ中のロケーションにアクセスしようと試みる場合、ページフォールトと呼ばれる例外が生成される。場合によっては、オペレーティングシステムまたはハードウェアは、補助記憶装置から必要なページを自動的にロードし得る。本出願では、しかしながら、非常駐ページへの一部の試みられたアクセスがページフォールトを生じ、他のものはフォールトを生じない。上記で説明したように、DX11タイルにより、非常駐メモリアクセスが、フォールトを生じることなしに発生することが可能になり得、むしろ、本明細書で説明する態様のうちの1つまたは複数が代わりに発生し得る。
[0071]図2に示す例では、NFビット208は、非常駐であるページがフォールトを生じるべきでないという指示を与え得る。たとえば、NFビット208は、非常駐であるタイルリソース中のページがフォールトを生じるべきであるかどうかを決定するために使用され得る。この解決策の利点は、いくつかの例では、プロセッサまたはメモリ管理ユニットが非常駐ページのメモリアドレスに読み出しまたは書き込みを行おうと試みるときに、概して、ページフォールトが発生するので、ダミーページに、非タイル非常駐ページの仮想アドレスをマッピングするのではなく、ページフォールトを単に返すことによってすべての他のリソース(非タイル)へのアクセスに対してページフォールトをサポートし得ることであり得る。
[0072]一例では、タイルリソースにアクセスされる場合、NFビット208は、フォールトが可能でないように設定され得る。逆に、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、NFビット208は、フォールトを可能にするように設定され得る。言い換えれば、非常駐ページへの読み出しまたは書き込みは、すべての他のリソースへのアクセスにページフォールトを生じるべきである。したがって、NF208がシングルビットであり、NF=「1」は、フォールトが発生すべきでないことを示す場合、NF=「0」は、フォールトが通常通り処理されるべきであることを示す。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、NFビット208は、「0」になることになる。逆も真である。したがって、NF208がシングルビットであり、NF=「0」、たとえば、負論理は、フォールトが発生すべきでないことを示す場合、NF=「1」は、フォールトが通常通り処理されるべきであることを示す。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、NFビット208は、「1」になることになる。
[0073]図2の例では、フォールトを生じるべきでない非常駐ページが読み取られるとき、読み出しに対して、デフォルト値、たとえば、すべて0の値、すべて1の値などの所定のビット値が返され得る。デフォルト値は、すべての非常駐ページのアクセスのために使用され得るあらかじめ定義する値を与える。図示の例では、非常駐ページへの読み出しが発生する場合、値は0になる。デフォルト値は、たとえば、メモリコントローラ8中に記憶された値であり得る。メモリ10を読み出すのではなく、メモリコントローラ8は、代わりにデフォルト値を返し得る。ただし、デフォルト値は、ページが非常駐であることを決定的に示さない。デフォルト値、たとえば、0は、ありがちな値であり得、常駐ページのメモリ10中のメモリロケーションがデフォルト値を偶然に含んでいる可能性があり得る。したがって、メモリコントローラ8は、読み出しを実行するデバイス、たとえば、GPU12に、フォールトを生じるべきでない非常駐ページがアクセスされていることを示すためにステータスまたは肯定応答(ACK)を与え得る。
[0074]一例では、読み出しを実行し得るが、概して書き込みを実行しないテクスチャユニットは、フォールトを生じるべきでない非常駐ページが読み出しであるときにデフォルト値を返し得る。テクスチャユニットは、別個のハードウェアであり得るか、またはピクセルシェーダまたは他のシェーダの一部であり得る。テクスチャユニットは、表示される粗さレベルを選択し得る。たとえば、テクスチャユニットは、非常駐であるより詳細なテクスチャではなく常駐であるより粗いテクスチャを選択し得る。
[0075]図2の例に示すように、常駐検査は、クライアント、たとえば、GPU12によって実行(または要求)され得る。図2の例では、GPU12は、常駐検査を要求し、メモリコントローラ8は、仮想メモリロケーションが常駐であるか、または非常駐であるかを示す常駐肯定応答を返す。
[0076]図2の例では、非常駐ページに書き込もうとする試みが行われるとき、書き込みの試みがメモリ中に記憶されないページに対するものであるので、その書き込みの試みはドロップされるべきである。言い換えれば、非常駐ページの仮想アドレスは、実際の物理的メモリアドレスにマッピングしない。試みられた書き込みについてのデータは、失われることになり、データが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。一例では、たとえば、メモリコントローラ8は、書き込みが非常駐ページに対するものであると決定すると、メモリコントローラ8、たとえば、メモリ管理ユニット(MMU)または入出力MMU(IOMMU)は、書き込みをドロップし得る。他の例では、ピクセルシェーダ、形状シェーダ、または他のシェーダユニットが、書き込みを実行し得、非常駐ページへの書き込みをドロップするようにプログラムされ得る。
[0077]いくつかの例では、読み出しおよび/または書き込みは、デプステストのために実行され得る。デプステストは、レンダリングされた場面のどの要素が可視であり、どれが隠れているかを決定するために、画像デプスに関して、3次元(3D)グラフィックス中の座標に使用され得るグラフィックス動作である。読み出しはまた、カラーブレンディングの一部として実行され得、カラーブレンディングは、新しい色値を割り当てるために演算、New_color=old_color*(1−blend_value)+incoming_color*(blend_value)、を使用し得る。これらの機能は、デプステスト、カラーブレンディングなどに関係する常駐ページおよび非常駐ページに対処することを可能にするために、本明細書で提供する例を使用し得る。
[0078]上記で説明したように、いくつかの例は、既存のページテーブル属性を使用し得る。言い換えれば、そのような例では、NFビット208である必要がないことがある。そのような例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。
[0079]図3は、本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する例示的なコンピューティングデバイスを示すブロック図である。図3の例は、既存のページテーブル属性を使用し、NFビット208を使用しない。そのような例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。コンピューティングデバイスは、GPU12と、メモリコントローラ8と、メモリ10と、PTE306と、比較ユニット308とを含む。フォールトなしビット/非常駐ビットは使用されない。
[0080]図3に示す代替解決策では、ダミーページは、ページが常駐であるかどうかを示すダミー値を含んでいる。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。ダミー値は、たとえば、すべて0の値、すべて1の値、または何らかの他の既知の値などの所定のビット値であり得る。他の例では、ダミーページは、ランダムな値または未知の値を含み得る。ただし、そのような例では、ダミーページ中の値は、ページが常駐であるか、または非常駐であるかの指示を与えないことになる。そのような例は、メモリ10中の特定の物理的メモリアドレスにダミーページを記憶し、たとえば、メモリコントローラ8またはPTE306中のレジスタ中に物理的メモリアドレスの値を記憶し得る。たとえば、PTE306は、物理アドレスレジスタ312を含み得る。非常駐ページの仮想アドレスは、ダミーページの物理的メモリアドレスにマッピングされ得る。さらに、ページがアクセスされているとき、ページテーブル中のそれの物理メモリが、物理アドレスレジスタ312中に記憶された物理的メモリ値と、比較ユニット308を使用して比較され得る。2つの値が同じである場合、クライアントは、それが非常駐ページにアクセスしていると決定する。たとえば、クライアントは、GPU12であり得、それがメモリコントローラ8を通して非常駐ページにアクセスしていると決定し得る。2つの値が異なる場合、クライアントは、それが常駐ページにアクセスしていると決定し得る。ただし、特定のメモリロケーション中に記憶された値がデフォルト値に単に偶然に等しくなり得るので、この比較は、単独で、ページが常駐であるという指示を与え得ることを理解されよう。したがって、本開示の他の態様は、指示が正しいこと、たとえば、本明細書で説明する常駐検査を検証するために使用され得る。
[0081]一例では、(図3に示す比較ユニット308などの)システムは、物理アドレスがレジスタ中に記憶されたダミーページのアドレス値と同じであるかどうかを決定するために、アドレス、たとえば、ページテーブル(PTE306)中の物理アドレスレジスタ312を、レジスタ、たとえば、フォールトなし/常駐でないページアドレスレジスタNFアドレスレジスタ310)中に記憶されたダミーページのアドレス値と比較し得る。このようにして、システムは、ページが常駐であるか、または非常駐であるかを決定し得る。
[0082]概して、すべての非常駐ページのために、単一の共通のダミーページが使用され得る。したがって、アクセスされているページの物理アドレスがNFアドレスレジスタ310で中のアドレス値のうちの1つに一致する場合、ページは非常駐である。ページに対する読み出しは、通常通り進行し得る。言い換えれば、ダミーページ中に記憶されたデータ、たとえば、デフォルト値が、たとえば、メモリ10中にダミーページのために確保されたメモリから読み取られ得る。これは、適切なデフォルト値が、概して、ダミーページに書き込まれており、これらの値が、非常駐ページにアクセスしようと試みるシステムによって読み取られることになるからである。試みられた書き込みはドロップされるべきである。この場合も、試みられた書き込みについてのデータは、失われることになり、データが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、複数の非常駐ページによって使用され得るダミー値を含むページ以外の非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。さらに、一例では、ページが非常駐ページであることを示すレジスタ中の値に、アクセスされているページが一致するとき、常駐検査は偽を返すべきである。たとえば、シェーダプログラムを実行しているGPUは、MMUに常駐検査を要求し得る。GPUが常駐検査を要求すると、MMUは、たとえば、タイル(複数のメモリページ)がメモリ中で常駐であるかどうかを決定するために、常駐マップを検査し得る。タイルが非常駐であると常駐マップの検査が返す場合、メモリから値をフェッチするのではなく、シェーダ中のデフォルト値が使用され得る。
[0083]この解決策のいくつかの例の利点は、読み出しに対してページフォールトを作成するのではなく、非常駐ページが「ダミーページ」に透過的にマッピングされること、および「特殊な」処理が書き込みに対してのみ必要とされることである。この解決策のいくつかの例の別の利点は、デフォルト値でページを満たすことをソフトウェアが担当し得るので、デフォルト値がプログラム可能であり得ることである。
[0084]いくつかの例では、DX11特徴、すなわち、タイルリソースはまた、リソースのタイル(複数のメモリページ)が常駐であるかどうかをグラフィックスシェーダプログラムが決定する方法を必要とし得る。上記で説明したように、すべての非常駐ページのために、適切なデフォルト値で満たされたダミーページが使用され得る。場合によっては、ただし、これらの非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、正しいデフォルト値を常に返すことをダミーページに依拠し得ない。ページが常駐であるかどうかをシェーダプログラムが決定することを可能にするために別個の常駐マップも必要とされる。そのような例は、そのテクスチャからの読み出しが発生し得るかどうかを決定するために常駐マップを検査し得る。タイルが非常駐であると常駐マップの検査が返す場合、タイルテクスチャから値をフェッチするのではなく、シェーダ中のデフォルト値が使用され得る。
[0085]様々な例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法が提供される。さらに、ページが非常駐であるときをクライアント、たとえば、GPU12に知らせる様々な方法が提供される。非常駐であるページがアクセスされているときにクライアントが何を行うかは、変動し得、概して、クライアントの必要によって規定され得る。
[0086]たとえば、ある場合には、一部常駐テクスチャが使用され得る。一部常駐テクスチャは、メモリ中に部分的に記憶される。たとえば、テクスチャの粒状度レベルの全部ではないが一部がメモリ中に記憶され得る。粒状度は、特定のレンダリングのために与えられ得るテクスチャのための詳細さのレベルを指す。概して、所与のテクスチャが、3Dピクチャの2Dレンダリングにおいてより遠く離れていると考えられれば考えられるほど、テクスチャにおいてより低い詳細さが使用され得る。
[0087]テクスチャは、それの一部を記憶するために使用されるメモリのサイズよりも大きくなり得る。たとえば、粒状度のあらゆるレベルは、全体として、それの一部、たとえば、1つまたは複数の粒状度レベルを記憶するために使用されるメモリのサイズよりも大きくなり得る。ただし、テクスチャの一部、たとえば、1つまたは複数の粒状度レベルがメモリ中に記憶され得る。したがって、テクスチャの一部が常駐であるか、または非常駐であるのかを決定するために常駐検査が使用され得る。テクスチャの非常駐部分はデフォルト値を返し得る。
[0088]場合によっては、非常駐であるテクスチャ粒状度レベルではなく、常駐であるテクスチャ粒状度レベルが使用され得る。したがって、そのような例では、クライアントは、より高いミップマップレベル(MIPレベル)をもつより粗いテクスチャにフォールバックし得、ここで、ピクセルのサイズは、所与のテクスチャについてより小さくなり、したがって、テクスチャはより粗くなる。ミップマップは、同じ画像を表すアレイの順序集合であり、各アレイは、前のアレイよりも低い解像度を有する。たとえば、0のミップマップレベル(MIPレベル)は、最も高い解像度の画像のためのものであり得、1のMIPレベルは、2番目に高い解像度の画像のためのものであり得、以下同様であり、ここで、最高のMIPレベルは、最も粗い解像度をもつ画像のためのものである(上記の表1を参照)。より粗いテクスチャを使用することによって、テクスチャの詳細さがより低いバージョンが、より少ないメモリを使用して記憶され得る。したがって、一部常駐テクスチャのより粗いバージョン自体が、テクスチャの常駐部分であり得る。いくつかの例では、所与のテクスチャのために必要とされる詳細さのレベル(LOD)に応じて、一部常駐テクスチャのより粗いバージョンが許容され得る。いくつかの例では、テクスチャユニットは、所与のテクスチャについて複数の異なる粗さレベルから表示される粗さのレベルを選択し得る。テクスチャユニットは、別個のハードウェアであり得るか、またはピクセルシェーダまたは他のシェーダの一部であり得る。本明細書で説明する例は、概して、「フェイルセーフ」を提供し、したがって、非常駐ページについてページフォールトは発生しない。
[0089]図4は、本開示の、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実行し得る例示的なグラフィックスパイプラインを示す概念図である。いくつかの例では、グラフィックスパイプラインは、Microsoft(登録商標)DirectX(DX)11グラフィックスパイプラインに対応し得る。図4に示すように、例示的なグラフィックスパイプラインは、リソースブロック42と複数の処理段階とを含む。複数の処理段階は、入力アセンブラ(IA)段階44と、頂点シェーダ(VS)段階46と、ハルシェーダ(HS)段階48と、テッセレータ段階50と、ドメインシェーダ(DS)段階52と、形状シェーダ(GS)段階54と、ラスタライザ段階56と、ピクセルシェーダ(PS)段階58と、出力統合器段階60とを含む。HS段階48、テッセレータ段階50、およびドメインシェーダ段階52は、グラフィックスパイプラインのテッセレーション段階62を形成し得る。
[0090]本明細書で説明するように、いくつかの例は、グラフィックスシェーダプログラム、たとえば、VS段階46、HS段階48、DS段階52、GS段階54、PS段階58、または他の段階が、リソースのタイル(複数のメモリページ)が常駐であるかどうかを決定するための方法を与える。リソースのタイルは、メモリ10などのメモリ中に記憶されるとき、常駐である。リソースのタイルは、メモリ中に記憶されないとき、非常駐である。
[0091]いくつかの例では、すべての非常駐ページのために、適切なデフォルト値で満たされたダミーページが使用され得る。ダミーページは、任意の非常駐ページへの読み出しが試みられるときに読み取られ得るメモリ、たとえば、メモリ10の領域を与えるために使用され得るメモリページである。ダミーページ中に記憶され得るデフォルト値は、すべての0の値、すべて1の値、または任意の他の所定の値などの任意の所定の値であり得る。既知の所定の値をデフォルト値として使用することによって、ページが非常駐ページであり得るという指示を読み出しが与えることが可能になり得る。いくつかの例では、ランダム値、前の書き込みからの残った値、または任意の他の値が代わりに使用され得る。そのような例では、所定の値が使用されないので、指示が与えられないことがある。
[0092]場合によっては、非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、たとえば、書き込みを競合することが可能になる場合、正しいデフォルト値を常に返すことをダミーページに依拠し得ない。また、ページが常駐であるかどうかを決定するために、シェーダプログラム、たとえば、シェーダ段階46、48、52、54、58が、たとえば、GPU12上で動作することを可能にするために、別個の常駐マップが使用され得る。概して、ページが常駐であるかどうかを決定するために、任意のシェーダプログラムが本明細書で説明するように相互作用し得る。一般に、すべてのシェーダプログラムは、メモリアクセスを有する。常駐マップは、メモリコントローラ8の一部であり得、または、たとえば、メモリコントローラ8によってメモリ10中に記憶され得る。そのような例では、GPU12または、たとえば、GPU12上で動作するシェーダプログラムは、特定のページからの読み出しが常駐であるか、または非常駐であるかを決定するために常駐マップを検査し得る。いくつかの例では、テクスチャの全部または一部が、メモリ10中に記憶され得る。テクスチャの一部のみが、たとえば、メモリ10中に保存される場合、テクスチャの一部が常駐であり、テクスチャプログラムの一部が非常駐である。たとえば、テクスチャの異なる粗さレベルがメモリ10中に記憶され得るが、テクスチャの他の粗さレベルがメモリ10中に記憶されないことがある。したがって、常駐マップは、特定のピクチャのレンダリングのために必要とされ得る特定のテクスチャの特定の粗さレベルが発生するかどうかを決定するために常駐検査を実行するために使用され得る。テクスチャの必要とされる粗さレベルを含んでいるタイルが非常駐であると常駐マップの検査が返す場合、タイルテクスチャから値をフェッチするのではなく、シェーダ段階46、48、52、54、58中のデフォルト値が使用され得る。いくつかの例は、読み出しが非常駐ページに対するものであるとき、一部常駐テクスチャの異なる粗さレベルを読み出し得る。
[0093]図4に示すように、パイプライン段階の多くもリソースブロックに通信可能に結合され得る。リソースブロックは、バッファおよびテクスチャなどのメモリリソースを含み得る。残りのブロックは、パイプラインステージを示す。角が直線のブロックは、固定機能のパイプライン段階を表し、角が丸いブロックは、プログラマブル段階を表す。プログラマブル段階の各々は、特定のタイプのシェーダプログラムを実行するように構成され得る。たとえば、頂点シェーダ段階46は、頂点シェーダプログラムを実行するように構成され得、ハルシェーダ段階48は、ハルシェーダプログラムを実行するように構成され得る、等々である。異なるタイプのシェーダプログラムの各々は、GPUの共通シェーダユニット上、または1つもしくは複数の特定のタイプのシェーダプログラムを実行するための専用である1つもしくは複数の専用シェーダユニット上のいずれかで実行し得る。ハルシェーダ段階48、テッセレータ段階50、およびドメインシェーダ段階52は、テッセレーション段階62と総称され得る。
[0094]DirectX11グラフィックスパイプラインの一般的な動作に関する追加の背景情報は、2013年5月9日現在、http://msdn.microsoft.com/en−us/library/windows/desktop/ff476882%28v=vs.85%29.aspxに発見され得、参照により本明細書に組み込まれる。DirectX11グラフィックスパイプラインの一般的な動作に関するさらなる情報は、Zinkら、「Practical Rendering & Computation with Direct3D 11」、CRC Press(2011年)に発見され得、その内容の全体が参照により本明細書に組み込まれる。
[0095]図5は、本開示で説明する1つまたは複数の例による、例示的な方法を示すフローチャートである。いくつかの例では、メモリコントローラ8、GPU12、または他のプロセッサは、非常駐ページにアクセスしようと試み得る。非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し得る。いくつかの例では、アクセスは、たとえば、読み出しを実行するものであり得る(550)。非常駐ページは、それに関連する物理的メモリロケーションを有しないページである。逆に、常駐ページは、それに関連する物理的メモリロケーションを有するページである。
[0096]メモリコントローラ8、GPU12、または他のプロセッサは、特定の非常駐ページがページフォールトを生成すべきでないことを示すビットまたはフラグに基づいて非常駐ページがページフォールトを生じるべきでないことを決定し得る(552)。タイルリソースと呼ばれるDX11における新しい特徴は、フォールトを生じることなしにグラフィックス動作(すなわち、テクスチャの読み出し、カラーバッファの書き込み)を介してリソースの非常駐ページにアクセスすることを可能にする。したがって、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別することが必要であり得る。ビットにより、クライアントは、ページが非常駐であるときを知ることが可能になる。
[0097]メモリコントローラ8、GPU12、または他のプロセッサは、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示の返信を受信し、またデフォルト値を返し得る(554)。デフォルト値は、レジスタ、メモリ、または他のロケーションからのものであり得る。デフォルト値は、すべて0の値、すべて1の値、または何らかの他のデフォルト値などの所定のビット値であり得る。これらのデフォルト値は、読み出しによって返され得る。デフォルト値は、すべての非常駐ページのアクセスのために使用され得るあらかじめ定義する値を与える。図示の例では、非常駐ページへの読み出しが発生する場合、値は0になる。ただし、これは、ページが非常駐であることを決定的に示さない。デフォルト値、たとえば、0、1などは、ありがちな値であり得、常駐ページがデフォルト値を偶然に含んでいる可能性があり得る。MMUまたは他のプロセッサは、たとえば、フォールトを生じるべきでない非常駐ページがアクセスされたことを、読み出しを実行するデバイスに示すためにステータスまたは肯定応答(ACK)を使用し得る。一例では、読み出しを実行し得るが、概して書き込みを実行しないテクスチャユニットは、フォールトを生じるべきでない非常駐ページをそれまたは別のプロセッサが読み出すときにデフォルト値を返し得る。さらに、一例では、クライアントは、常駐検査を実行し得る。
[0098]いくつかの例では、メモリコントローラ8、GPU12、または他のプロセッサは、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止し得る(556)。いくつかの例では、非常駐ページのためにメモリが与えられないので、書き込みが中止し得る。
[0099]図6は、本開示で説明する1つまたは複数の例による、例示的な方法を示すフローチャートである。メモリコントローラ8、GPU12、または他のプロセッサは、非常駐ページにアクセスし得る(650)。非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し得る。デフォルト値を含んでいるメモリページは、ダミーページと呼ばれることもあり、ダミー値を含んでいると言われ得る。これらのダミー値は、ページが常駐であるかどうかを示し得る。たとえば、ダミーページにアクセスするとき、読み出し要求のバイトアドレスがダミーページにマッピングされ得、それがダミー値でない限り、たとえば0x0の代わりに、そこに記憶された値が返されることになる。
[0100]メモリコントローラ8、GPU12、または他のプロセッサが非常駐ページにアクセスしようと試み得るとき、メモリコントローラ8、GPU12、または他のプロセッサは、メモリ読み出しが変換しなかったこと、およびデフォルト値を返すこと、の返された指示を受信し得る(652)。これは、たとえば、メモリコントローラ8、GPU12、または他のプロセッサが非常駐ページからの読み出しを試みるときに発生し得る。非常駐ページは、ページフォールトを生じるべきでない。ページに対する読み出しは、通常通り進行し得る。これは、適切なデフォルト値が、ダミーページにすでに書き込まれることになり、これらの値が、非常駐ページにアクセスしようと試みるシステムによって読み取られることになるからである。仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。
[0101]メモリコントローラ8、GPU12、または他のプロセッサは、あるいは、場合によっては、メモリ自体は、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止し得る(654)。場合によっては、ただし、これらの非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、書き込みを続けることが可能になる場合、正しいデフォルト値を常に返すことをダミーページに依拠することができなくなるであろう。
[0102]本開示で説明した技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。たとえば、説明する技法の様々な態様は、1つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他の等価な集積回路またはディスクリート論理回路を含む、1つまたは複数のプロセッサ、ならびにそのような構成要素の任意の組合せ内で実装され得る。「プロセッサ」または「処理回路」という用語は、概して、単独で、あるいは他の論理回路、または処理を実施する個別ハードウェアなどの他の等価回路との組合せで上記の論理回路のいずれかを指すことがある。
[0103]そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明した様々な動作および機能をサポートするために、同じデバイス内で、または別々のデバイス内で実装され得る。さらに、説明したユニット、モジュールまたは構成要素のいずれも、個別であるが相互運用可能な論理デバイスとして、一緒にまたは別々に実装され得る。モジュールまたはユニットとしての様々な機能の図は、様々な機能的態様を強調するものであり、そのようなモジュールまたはユニットが別々のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを必ずしも暗示するとは限らない。そうではなく、1つまたは複数のモジュールあるいはユニットに関連する機能は、別々のハードウェア、ファームウェア、および/またはソフトウェア構成要素によって実行されるか、あるいは共通または別々のハードウェアもしくはソフトウェア構成要素内に組み込まれることがある。
[0104]また、本開示で説明した技法は、命令を記憶するコンピュータ可読記憶媒体などのコンピュータ可読媒体中に記憶、実施または符号化され得る。コンピュータ可読媒体中に埋め込まれたまたは符号化された命令は、たとえば、その命令が1つまたは複数のプロセッサによって実行されたとき、1つまたは複数のプロセッサに本明細書で説明した技法を実施させ得る。コンピュータ可読記憶媒体は、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、プログラマブル読み出し専用メモリ(PROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電子的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)、フラッシュメモリ、ハードディスク、CD−ROM、フロッピー(登録商標)ディスク、カセット、磁気媒体、光媒体、または有形である他のコンピュータ可読記憶媒体を含み得る。
[0105]コンピュータ可読媒体は、上記に記載した有形記憶媒体などの有形記憶媒体に対応するコンピュータ可読記憶媒体を含み得る。コンピュータ可読媒体はまた、たとえば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を備え得る。このようにして、「コンピュータ可読媒体」という句は、概して、(1)非一時的である有形コンピュータ可読記憶媒体、および(2)一時的な信号または搬送波などの非有形コンピュータ可読通信媒体に対応し得る。
[0106]様々な態様および例について説明した。しかしながら、以下の特許請求の範囲から逸脱することなく本開示の構造または技法に変更を行うことができる。
[0106]様々な態様および例について説明した。しかしながら、以下の特許請求の範囲か
ら逸脱することなく本開示の構造または技法に変更を行うことができる。
以下に、本願の出願当初の特許請求の範囲に記載された発明が付記される。
[1]非常駐ページを処理する方法であって、前記方法は、前記非常駐ページにアクセスしようと試みることを備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記方法は、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すこととを備える方法。
[2]前記インジケータがビットまたはフラグを備える、[1]に記載の方法。
[3]前記デフォルト値が返されるとき、常駐検査を実行することをさらに備える、[1]に記載の方法。
[4]前記アクセスが、一部常駐テクスチャへの読み出しを備える、[1]に記載の方法。
[5]前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことをさらに備える、[4]に記載の方法。
[6]前記アクセスを試みることが、カラーバッファリングのために前記非常駐ページへのアクセスを試みることを備える、[1]に記載の方法。
[7]非常駐ページを処理する方法であって、前記方法は、前記非常駐ページにアクセスしようと試みることを備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを備える方法。
[8]物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することをさらに備える、[7]に記載の方法。
[9]デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定する、[8]に記載の方法。
[10]ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、[7]に記載の方法。
[11]中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することをさらに備える、[7]に記載の方法。
[12]非常駐ページを処理するための装置であって、前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記プロセッサは、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すこととを行うように構成される、装置。
[13]前記インジケータがビットまたはフラグを備える、[12]に記載の装置。
[14]前記プロセッサは、デフォルト値が返されるとき、常駐検査を実行することを行うようにさらに構成された、[12]に記載の装置。
[15]前記非常駐ページにアクセスするためにアクセスしようと試みるために、前記プロセッサが、一部常駐テクスチャへの読み出しを実行することを行うようにさらに構成された、[12]に記載の装置。
[16]前記プロセッサは、前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことを行うようにさらに構成された、[15]に記載の装置。
[17]前記非常駐ページにアクセスしようと試みるために、前記プロセッサが、カラーバッファリングのために前記非常駐ページにアクセスすることを行うようにさらに構成された、[12]に記載の装置。
[18]非常駐ページを処理するための装置であって、前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、前記非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指し、前記プロセッサは、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行うように構成される、装置。
[19]前記プロセッサが、物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することを行うようにさらに構成された、[18]に記載の装置。
[20]デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、前記プロセッサが、前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定することを行うようにさらに構成された、[19]に記載の装置。
[21]ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、[18]に記載の装置。
[22]前記プロセッサは、中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することを行うようにさらに構成された、[18]に記載の装置。
[23]非常駐ページを処理するための装置であって、前記装置は、前記非常駐ページにアクセスしようと試みるための手段を備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記装置は、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定するための手段と、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、デフォルト値を返すための手段とを備える、装置。
[24]前記インジケータがビットまたはフラグを備える、[23]に記載の装置。
[25]デフォルト値が返されるとき、常駐検査を実行するための手段をさらに備える、[23]に記載の装置。
[26]ページが非常駐ページであることをクライアントに通知するための装置であって、前記装置は、非常駐ページにアクセスするための手段を備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記装置は、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すための手段と、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止するための手段とを備える、装置。
[27]物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較するための手段をさらに備える、[26]に記載の装置。
[28]デフォルト値を含んでいる前記メモリページの前記アドレス値を記憶するためのレジスタ手段と、前記レジスタ手段の中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定するための手段とをさらに備える、[27]に記載の装置。
[29]中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算するための手段をさらに備える、[26]に記載の装置。
[30]非一時的コンピュータ可読記憶媒体であって、前記非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記非一時的コンピュータ可読記憶媒体は、前記1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、前記非常駐ページの前記アクセスが読み出しであり、前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すこととを行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
[31]非一時的コンピュータ可読記憶媒体であって、前記非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記非一時的コンピュータ可読記憶媒体は、前記1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという、前記デフォルト値を返す指示を返すことと、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。

Claims (31)

  1. 非常駐ページを処理する方法であって、
    前記方法は、前記非常駐ページにアクセスしようと試みることを備え、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記方法は、
    前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと
    を備える方法。
  2. 前記インジケータがビットまたはフラグを備える、請求項1に記載の方法。
  3. 前記デフォルト値が返されるとき、常駐検査を実行することをさらに備える、請求項1に記載の方法。
  4. 前記アクセスが、一部常駐テクスチャへの読み出しを備える、請求項1に記載の方法。
  5. 前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことをさらに備える、請求項4に記載の方法。
  6. 前記アクセスを試みることが、カラーバッファリングのために前記非常駐ページへのアクセスを試みることを備える、請求項1に記載の方法。
  7. 非常駐ページを処理する方法であって、
    前記方法は、前記非常駐ページにアクセスしようと試みることを備え、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、
    前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することと
    を備える方法。
  8. 物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することをさらに備える、請求項7に記載の方法。
  9. デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、
    前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定する、
    請求項8に記載の方法。
  10. ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、請求項7に記載の方法。
  11. 中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することをさらに備える、請求項7に記載の方法。
  12. 非常駐ページを処理するための装置であって、
    前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記プロセッサは、
    前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと
    を行うように構成される、
    装置。
  13. 前記インジケータがビットまたはフラグを備える、請求項12に記載の装置。
  14. 前記プロセッサは、デフォルト値が返されるとき、常駐検査を実行することを行うようにさらに構成された、請求項12に記載の装置。
  15. 前記非常駐ページにアクセスするためにアクセスしようと試みるために、前記プロセッサが、一部常駐テクスチャへの読み出しを実行することを行うようにさらに構成された、請求項12に記載の装置。
  16. 前記プロセッサは、前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことを行うようにさらに構成された、請求項15に記載の装置。
  17. 前記非常駐ページにアクセスしようと試みるために、前記プロセッサが、カラーバッファリングのために前記非常駐ページにアクセスすることを行うようにさらに構成された、請求項12に記載の装置。
  18. 非常駐ページを処理するための装置であって、
    前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、
    前記非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指し、
    前記プロセッサは、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、
    前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することと
    を行うように構成される、
    装置。
  19. 前記プロセッサが、物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することを行うようにさらに構成された、請求項18に記載の装置。
  20. デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、
    前記プロセッサが、前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定することを行うようにさらに構成された、
    請求項19に記載の装置。
  21. ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、請求項18に記載の装置。
  22. 前記プロセッサは、中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することを行うようにさらに構成された、請求項18に記載の装置。
  23. 非常駐ページを処理するための装置であって、
    前記装置は、前記非常駐ページにアクセスしようと試みるための手段を備え、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記装置は、
    前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定するための手段と、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、デフォルト値を返すための手段と
    を備える、装置。
  24. 前記インジケータがビットまたはフラグを備える、請求項23に記載の装置。
  25. デフォルト値が返されるとき、常駐検査を実行するための手段をさらに備える、請求項23に記載の装置。
  26. ページが非常駐ページであることをクライアントに通知するための装置であって、
    前記装置は、非常駐ページにアクセスするための手段を備え、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記装置は、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すための手段と、
    前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止するための手段と
    を備える、装置。
  27. 物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較するための手段をさらに備える、請求項26に記載の装置。
  28. デフォルト値を含んでいる前記メモリページの前記アドレス値を記憶するためのレジスタ手段と、
    前記レジスタ手段の中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定するための手段と
    をさらに備える、請求項27に記載の装置。
  29. 中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算するための手段をさらに備える、請求項26に記載の装置。
  30. 非一時的コンピュータ可読記憶媒体であって、
    前記非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記非一時的コンピュータ可読記憶媒体は、前記1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、
    前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、
    前記非常駐ページの前記アクセスが読み出しであり、前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと
    を行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
  31. 非一時的コンピュータ可読記憶媒体であって、
    前記非一時的コンピュータ可読記憶媒体は、1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、
    前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
    前記非一時的コンピュータ可読記憶媒体は、前記1つまたは複数のプロセッサによる実行時に、前記1つまたは複数のプロセッサに、
    前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという、前記デフォルト値を返す指示を返すことと、
    前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することと
    を行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
JP2016544342A 2013-09-24 2014-08-27 ページ常駐に関する条件付きページフォールト制御 Active JP6110044B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/035,643 US9489313B2 (en) 2013-09-24 2013-09-24 Conditional page fault control for page residency
US14/035,643 2013-09-24
PCT/US2014/053016 WO2015047642A1 (en) 2013-09-24 2014-08-27 Conditional page fault control for page residency

Publications (3)

Publication Number Publication Date
JP2016534486A true JP2016534486A (ja) 2016-11-04
JP2016534486A5 JP2016534486A5 (ja) 2017-02-09
JP6110044B2 JP6110044B2 (ja) 2017-04-05

Family

ID=51619268

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016544342A Active JP6110044B2 (ja) 2013-09-24 2014-08-27 ページ常駐に関する条件付きページフォールト制御

Country Status (5)

Country Link
US (1) US9489313B2 (ja)
EP (1) EP3049939A1 (ja)
JP (1) JP6110044B2 (ja)
CN (1) CN105556487B (ja)
WO (1) WO2015047642A1 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4447977B2 (ja) * 2004-06-30 2010-04-07 富士通マイクロエレクトロニクス株式会社 セキュアプロセッサ、およびセキュアプロセッサ用プログラム。
US9754561B2 (en) * 2013-10-04 2017-09-05 Nvidia Corporation Managing memory regions to support sparse mappings
US10310854B2 (en) 2015-06-30 2019-06-04 International Business Machines Corporation Non-faulting compute instructions
US10061539B2 (en) * 2015-06-30 2018-08-28 International Business Machines Corporation Inaccessibility status indicator
US10282808B2 (en) * 2016-05-27 2019-05-07 Intel Corporation Hierarchical lossless compression and null data support
US20180005349A1 (en) * 2016-07-03 2018-01-04 Intel Corporation Buffering graphics tiled resource translations in a data port controller tlb
US20180024938A1 (en) * 2016-07-21 2018-01-25 Advanced Micro Devices, Inc. Allocating physical pages to sparse data sets in virtual memory without page faulting
US10380342B2 (en) 2016-07-29 2019-08-13 Qualcomm Incorporated Kernel-based detection of target application functionality using virtual address mapping
US10388058B2 (en) 2017-02-16 2019-08-20 Microsoft Technology Licensing, Llc Texture residency hardware enhancements for graphics processors
US10248574B2 (en) * 2017-05-30 2019-04-02 Intel Corporation Input/output translation lookaside buffer prefetching
US10489308B2 (en) * 2017-06-29 2019-11-26 Intel Corporation Mitigating attacks on kernel address space layout randomization
GB2575689B (en) * 2018-07-20 2021-04-28 Advanced Risc Mach Ltd Using textures in graphics processing systems
US10540802B1 (en) * 2019-01-31 2020-01-21 Advanced Micro Devices, Inc. Residency map descriptors
US11392698B2 (en) * 2019-03-15 2022-07-19 Intel Corporation Active side-channel attack prevention
CN113674133B (zh) * 2021-07-27 2023-09-05 阿里巴巴新加坡控股有限公司 Gpu集群共享显存系统、方法、装置及设备
GB2616643B (en) * 2022-03-16 2024-07-10 Advanced Risc Mach Ltd Read-as-X property for page of memory address space

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073996A1 (en) * 2005-04-07 2007-03-29 Ati Technologies Inc. Virtual memory fragment aware cache
US20080106552A1 (en) * 2006-11-03 2008-05-08 Nvidia Corporation Deferred page faulting in virtual memory based sparse texture representations
US20110157205A1 (en) * 2009-12-31 2011-06-30 Nvidia Corporation Sparse texture systems and methods
US20120147028A1 (en) * 2010-12-13 2012-06-14 Advanced Micro Devices, Inc. Partially Resident Textures

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6650333B1 (en) 1999-06-09 2003-11-18 3Dlabs Inc., Ltd. Multi-pool texture memory management
US7710424B1 (en) 2004-11-18 2010-05-04 Nvidia Corporation Method and system for a texture-aware virtual memory subsystem
US20070055843A1 (en) 2005-09-02 2007-03-08 Silicon Graphics, Inc. Predictive prefaulting in the page fault handler
US8451281B2 (en) 2009-06-23 2013-05-28 Intel Corporation Shared virtual memory between a host and discrete graphics device in a computing system
US9208084B2 (en) * 2009-06-29 2015-12-08 Oracle America, Inc. Extended main memory hierarchy having flash memory for page fault handling
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070073996A1 (en) * 2005-04-07 2007-03-29 Ati Technologies Inc. Virtual memory fragment aware cache
US20080106552A1 (en) * 2006-11-03 2008-05-08 Nvidia Corporation Deferred page faulting in virtual memory based sparse texture representations
US20110157205A1 (en) * 2009-12-31 2011-06-30 Nvidia Corporation Sparse texture systems and methods
US20120147028A1 (en) * 2010-12-13 2012-06-14 Advanced Micro Devices, Inc. Partially Resident Textures

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JURAJ OBERT: "Virtual Texturing in Software and Hardware", PROCEEDINGS OF SIGGRAPH '12, JPN7017000374, 9 August 2012 (2012-08-09), ISSN: 0003494299 *

Also Published As

Publication number Publication date
US9489313B2 (en) 2016-11-08
CN105556487A (zh) 2016-05-04
WO2015047642A1 (en) 2015-04-02
US20150089146A1 (en) 2015-03-26
CN105556487B (zh) 2019-04-02
EP3049939A1 (en) 2016-08-03
JP6110044B2 (ja) 2017-04-05

Similar Documents

Publication Publication Date Title
JP6110044B2 (ja) ページ常駐に関する条件付きページフォールト制御
KR101672150B1 (ko) 페이지-폴트를 방지하기 위한 gpu 메모리 버퍼 프리-페치 및 프리-백 시그널링
JP5844485B2 (ja) グラフィックス処理システムにおけるメモリアクセス帯域幅をデスティネーションアルファ値に基づいて減少させるための技法
US9311743B2 (en) Selectively merging partially-covered tiles to perform hierarchical z-culling
US9530245B2 (en) Packing multiple shader programs onto a graphics processor
US9569862B2 (en) Bandwidth reduction using texture lookup by adaptive shading
US9047686B2 (en) Data storage address assignment for graphics processing
US8823724B2 (en) Sparse texture systems and methods
US9135172B2 (en) Cache data migration in a multicore processing system
US10078883B2 (en) Writing graphics data from local memory to system memory
US10114760B2 (en) Method and system for implementing multi-stage translation of virtual addresses
JP2016516224A (ja) グラフィックス処理ユニットのためのハードウェアによるコンテンツ保護
US20180293761A1 (en) Multi-step texture processing with feedback in texture unit
US20180189179A1 (en) Dynamic memory banks
US20190172213A1 (en) Tile-based low-resolution depth storage
US8681169B2 (en) Sparse texture systems and methods
US8860743B2 (en) Sparse texture systems and methods

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170105

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20170105

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20170117

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170308

R150 Certificate of patent or registration of utility model

Ref document number: 6110044

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