(57)【要約】  本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、特定の非常駐ページがページフォールトを生成すべきでないことを示すインジケータに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを含み得る、非常駐ページを処理するためのシステムおよび方法を提供する。別の例は、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止し得る。
2016534486.tif 000002
【特許請求の範囲】
【請求項１】
非常駐ページを処理する方法であって、
前記方法は、前記非常駐ページにアクセスしようと試みることを備え、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記方法は、
前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと
を備える方法。
【請求項２】
前記インジケータがビットまたはフラグを備える、請求項１に記載の方法。
【請求項３】
前記デフォルト値が返されるとき、常駐検査を実行することをさらに備える、請求項１に記載の方法。
【請求項４】
前記アクセスが、一部常駐テクスチャへの読み出しを備える、請求項１に記載の方法。
【請求項５】
前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことをさらに備える、請求項４に記載の方法。
【請求項６】
前記アクセスを試みることが、カラーバッファリングのために前記非常駐ページへのアクセスを試みることを備える、請求項１に記載の方法。
【請求項７】
非常駐ページを処理する方法であって、
前記方法は、前記非常駐ページにアクセスしようと試みることを備え、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、
前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することと
を備える方法。
【請求項８】
物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することをさらに備える、請求項７に記載の方法。
【請求項９】
デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、
前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定する、
請求項８に記載の方法。
【請求項１０】
ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、請求項７に記載の方法。
【請求項１１】
中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することをさらに備える、請求項７に記載の方法。
【請求項１２】
非常駐ページを処理するための装置であって、
前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記プロセッサは、
前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと
を行うように構成される、
装置。
【請求項１３】
前記インジケータがビットまたはフラグを備える、請求項１２に記載の装置。
【請求項１４】
前記プロセッサは、デフォルト値が返されるとき、常駐検査を実行することを行うようにさらに構成された、請求項１２に記載の装置。
【請求項１５】
前記非常駐ページにアクセスするためにアクセスしようと試みるために、前記プロセッサが、一部常駐テクスチャへの読み出しを実行することを行うようにさらに構成された、請求項１２に記載の装置。
【請求項１６】
前記プロセッサは、前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことを行うようにさらに構成された、請求項１５に記載の装置。
【請求項１７】
前記非常駐ページにアクセスしようと試みるために、前記プロセッサが、カラーバッファリングのために前記非常駐ページにアクセスすることを行うようにさらに構成された、請求項１２に記載の装置。
【請求項１８】
非常駐ページを処理するための装置であって、
前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、
前記非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指し、
前記プロセッサは、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、
前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することと
を行うように構成される、
装置。
【請求項１９】
前記プロセッサが、物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することを行うようにさらに構成された、請求項１８に記載の装置。
【請求項２０】
デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、
前記プロセッサが、前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定することを行うようにさらに構成された、
請求項１９に記載の装置。
【請求項２１】
ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、請求項１８に記載の装置。
【請求項２２】
前記プロセッサは、中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することを行うようにさらに構成された、請求項１８に記載の装置。
【請求項２３】
非常駐ページを処理するための装置であって、
前記装置は、前記非常駐ページにアクセスしようと試みるための手段を備え、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記装置は、
前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定するための手段と、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、デフォルト値を返すための手段と
を備える、装置。
【請求項２４】
前記インジケータがビットまたはフラグを備える、請求項２３に記載の装置。
【請求項２５】
デフォルト値が返されるとき、常駐検査を実行するための手段をさらに備える、請求項２３に記載の装置。
【請求項２６】
ページが非常駐ページであることをクライアントに通知するための装置であって、
前記装置は、非常駐ページにアクセスするための手段を備え、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記装置は、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すための手段と、
前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止するための手段と
を備える、装置。
【請求項２７】
物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較するための手段をさらに備える、請求項２６に記載の装置。
【請求項２８】
デフォルト値を含んでいる前記メモリページの前記アドレス値を記憶するためのレジスタ手段と、
前記レジスタ手段の中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定するための手段と
をさらに備える、請求項２７に記載の装置。
【請求項２９】
中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算するための手段をさらに備える、請求項２６に記載の装置。
【請求項３０】
非一時的コンピュータ可読記憶媒体であって、
前記非一時的コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記非一時的コンピュータ可読記憶媒体は、前記１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、
前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、
前記非常駐ページの前記アクセスが読み出しであり、前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと
を行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
【請求項３１】
非一時的コンピュータ可読記憶媒体であって、
前記非一時的コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、
前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記非一時的コンピュータ可読記憶媒体は、前記１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、
前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという、前記デフォルト値を返す指示を返すことと、
前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することと
を行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、グラフィックスメモリ中の常駐および非常駐ページに関し、より詳細には、ページフォールト制御のための技法に関する。
【背景技術】
【０００２】
[0002]概して、いくつかのシステムにおける非常駐ページへのアクセスはページフォールトを生じる。非常駐ページは、それに関連する物理的メモリロケーションを有しないページである。逆に、常駐ページは、それに関連する物理的メモリロケーションを有するページである。たとえば、非常駐ページは、仮想アドレスを有するが、そのアドレスに関連する実際の物理的メモリを有しないことがある。いくつかの例では、ソフトウェアは、たとえば、ページテーブルを使用して常駐ページの物理アドレスに仮想アドレスをマッピングし得る。概して、非常駐ページは、それに割り当てられた物理的メモリを有しないので、マッピングは、非常駐ページについて発生し得ない。メモリ管理ユニット（ＭＭＵ）は、メモリ読み出しまたはメモリ書き込みなどのメモリトランザクションを実行するために、仮想アドレスと物理アドレスとの間のマッピングを決定するためにルックアップを実行し得る。
【発明の概要】
【０００３】
[0003]たとえば、マルチメディアに関するタスクを扱うためのいくつかのアプリケーションプログラミングインターフェース（ＡＰＩ）は、非常駐ページにフォールトなしにアクセスすることを可能にし得る。本開示は、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法に関するシステムおよび方法を提供する。一例では、非常駐タイルがアクセスされると、読み出し命令に応答して所定のビット値が返され得、非常駐タイルへの書き込み命令に応答して、書き込みがドロップされ得る。別の例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。いくつかの例では、メモリ読み出しが変換しなかったという、信号などの指示も返され得る。仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。言い換えれば、ページ、仮想アドレスが非常駐であるページを指すとき、メモリアドレスは変換しない。ページが非常駐であるとき、仮想アドレスのための物理アドレスは存在しないので、仮想アドレスは、物理アドレスに変換され得ない。
【０００４】
[0004]非常駐ページは、物理的メモリロケーションがない、したがって、物理アドレスへの仮想アドレスのマッピングがないページである。常駐ページは、逆に、物理的メモリロケーションを有する、したがって、物理アドレスへの仮想アドレスのマッピングであり得るページである。さらに、本開示は、ページが非常駐であるときを、メモリ中のページに読み出しまたは書き込みを行おうと試み得るクライアント、すなわち、デバイスに知らせる様々な方法について説明する。
【０００５】
[0005]一例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを含む非常駐ページを処理する方法について説明する。
【０００６】
[0006]一例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すことと、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを含む非常駐ページを処理する方法について説明する。
【０００７】
[0007]別の例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを行うように構成されたプロセッサを含む非常駐を処理するための装置について説明する。
【０００８】
[0008]別の例では、本開示は、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すことと、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行うように構成されたプロセッサを含む非常駐を処理するための装置について説明する。
【０００９】
[0009]別の例では、本開示は、非常駐ページにアクセスしようと試みるための手段と、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定するための手段と、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、デフォルト値を返すための手段とを含む非常駐を処理するための装置について説明する。
【００１０】
[0010]別の例では、本開示は、非常駐ページにアクセスするための手段と、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返すための手段およびデフォルト値を返すための手段と、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止するための手段とを含む、ページが非常駐であることをクライアントに通知するための装置について説明する。
【００１１】
[0011]別の例では、本開示はコンピュータ可読記憶媒体について説明する。実行時に、１つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて非常駐ページがページフォールトを生じるべきでないと決定することと、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、デフォルト値を返すこととを行わせる命令を記憶するコンピュータ可読記憶媒体。
【００１２】
[0012]別の例では、本開示はコンピュータ可読記憶媒体について説明する。実行時に、１つまたは複数のプロセッサに、１つまたは複数のプロセッサによる実行時に、１つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることと、非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指す、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという、デフォルト値を返す指示を返すことと、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行わせる命令を記憶する非一時的コンピュータ可読記憶媒体、という命令を記憶するコンピュータ可読記憶媒体。
【００１３】
[0013]１つまたは複数の例の詳細が以下の添付の図面および説明において記載されている。他の特徴、目的、および利点は、説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１４】
【図１】[0014]本開示で説明する技法を実装するために使用され得る例示的なコンピューティングデバイスを示すブロック図。
【図２】[0015]本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する例示的なコンピューティングデバイスを示すブロック図。
【図３】[0016]本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する別の例示的なコンピューティングデバイスを示すブロック図。
【図４】[0017]本開示の、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実行し得るユニットを含む例示的なグラフィックスパイプラインを示す概念図。
【図５】[0018]本開示で説明する１つまたは複数の例による、例示的な方法を示すフローチャート。
【図６】[0019]本開示で説明する１つまたは複数の例による、例示的な方法を示すフローチャート。
【発明を実施するための形態】
【００１５】
[0020]上記で説明したように、いくつかのＡＰＩは、非常駐ページにフォールトなしにアクセスすることを可能にし得る。一例は、タイルリソースと呼ばれるＤｉｒｅｃｔＸ１１（ＤＸ１１）における新しい特徴である。タイルリソースは、フォールトを生じることなしにグラフィックス動作（たとえば、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にする。
【００１６】
[0021]本開示は、ページフォールト制御のための技法に関する。本開示は、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法に関するシステムおよび方法を提供する。たとえば、本開示は、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する様々な技法について説明する。ページフォールトは、概して、プロセッサまたはメモリ管理ユニットが非常駐ページのメモリアドレスに読み出しまたは書き込みを行おうと試みるときに発生する。上記で説明したように、非常駐ページは、物理的メモリロケーションがない、したがって、物理アドレスへの仮想アドレスのマッピングがないページである。常駐ページは、逆に、物理的メモリロケーションを有する、したがって、物理アドレスへの仮想アドレスのマッピングであり得るページである。
【００１７】
[0022]さらに、本開示は、ページが非常駐ページであるときをクライアントに知らせる様々な方法について説明する。たとえば、本開示で説明する技法により、クライアントは、それが非常駐ページにアクセスしていると決定することが可能になり得る。本開示で説明する技法のうちのいくつかでは、後続のコマンドの実行を停止するのではなく、クライアントは、非常駐ページへのそのようなアクセスを扱うように構成され得る。クライアントは、メモリ中のページに読み出しまたは書き込みを行おうと試み得るデバイスである。いくつかの例では、プロセッサがクライアントであり得る。たとえば、グラフィックス処理ユニットがクライアントであり得る。そのような例では、ＧＰＵ内の複数のサブクライアントがアクセスを要求し得る（たとえば、ラスタユニットが書き込みを要求し得る間に、テクスチャサブクライアントがアドレスからの読み出しを要求し得る）。そのような例では、ＧＰＵは、読み出しおよび書き込み要求を行っている。いくつかの例では、クライアントは、テクスチャユニット、ブレンダユニット、またはシェーダユニットなど、ＧＰＵ内の要求側であり得る。メモリ管理ユニット（ＭＭＵ）がクライアントであり得る。ただし、ＭＭＵは、概して、上記のクライアントのうちの１つまたは複数に対してスレーブである。一例では、非常駐タイルがクライアントによってアクセスされると、読み出し動作に応答して所定のビット値が返され得、書き込みに応答して、動作がドロップされ得る。別の例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、適切なデフォルト値で満たされた単一のメモリページであり得る。クライアントが、非常駐ページへの任意のメモリアドレスにアクセスすると、ダミーページ中の値がクライアントに返され得る。
【００１８】
[0023]上記で説明したように、タイルリソースと呼ばれるＤＸ１１における新しい特徴は、フォールトを生じることなしにグラフィックス動作（すなわち、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にする。したがって、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別することが必要であり得る。さらに、ページが非常駐であるときをクライアントに知らせる方法を見つけるべきである。
【００１９】
[0024]一例では、読み出し許可（Ｒ）、書き込み許可（Ｗ）、キャッシュ可能メモリロケーション（Ｃ）、および共有メモリロケーション（Ｓ）などのＤＸ１１ページ属性は、非常駐ページへのアクセスがページフォールトを生成すべきでないことを指定する追加のビット、フラグまたは他の指示を含み得る。本明細書で説明するシステムおよび方法のいくつかの例は、既存のＡＲＭビットの上にＮＦ（フォールトなし）ビットを追加し得る。他のビットの上記リストは、他の属性に関して網羅的なものではない。他のものがあり得る。ページ属性Ｒ、Ｗ、Ｃ、およびＳは、ＡＲＭに基づいて、例として与えられているにすぎない。
【００２０】
[0025]いくつかの例では、フォールトなし（ＮＦ）ビット（フラグなど）は、この非常駐ページへのアクセスがページフォールトを生成すべきでないことを示し得る。たとえば、所与の仮想アドレスについて、ページテーブルは、仮想アドレスに関連付けられる物理アドレスならびに物理アドレスによって識別されるページ中に記憶されたデータのページ属性を記憶し得る。ページ属性は、ページテーブル中でバイナリビットとして記憶され得る。ページテーブルは、（一例として）物理アドレスにマッピングされ得る。ＮＦビット２０８は、この非常駐ページへのアクセスがページフォールトを生成すべきでないことを指定するページ属性への追加であり得る。これらのシステムおよび方法を実装する例示的なデバイスは、次いで、読み出しのデフォルト値を返すか、または書き込みをドロップし得る。したがって、ＮＦビット２０８は、非常駐素材へのアクセスがフォールトを生じるべきでないことを示し得る。一例では、そのようなデバイスは、読み出しまたは書き込みについてフォールトが発生すべきかどうかを決定し得る。フォールトが発生しない場合、読み出しまたは書き込みは変換され得る。フォールトが発生する場合、デバイスは、フォールトがフォールトに関してオペレーティングシステム（ＯＳ）にフォールトを報告されるべきかどうかを決定するためにＮＦビット２０８を使用し得る。デバイスは、様々な典型的なページフォールト訂正を実行し得る。代替的に、フォールトがＯＳに報告されるべきでないことをＮＦビット２０８が示す場合、デバイスは、読み出しに対して０ｘ０などの値を返し得るか、またはデバイスは、書き込みをアボートして、継続し得る。
【００２１】
[0026]上記で説明したように、いくつかの例では、メモリ読み出しが変換しなかったという、信号などの指示も返され得る。仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。言い換えれば、ページ、すなわち仮想アドレスが非常駐であるページを指すとき、メモリアドレスは変換しない。ページが非常駐であるとき、仮想アドレスのための物理アドレスは存在しないので、仮想アドレスは、物理アドレスに変換され得ない。
【００２２】
[0027]ＮＦビット２０８の１つの目的は、非常駐素材がフォールトを生じるべきでないことを指定することであり得るが、ＮＦビット２０８はまた、非常駐ページの決定に影響を及ぼし得る。たとえば、ＮＦビット２０８は、タイルリソース中のページが、ここで説明したように常駐であるかどうかを決定するために使用され得る。本明細書で説明する様々な例では、ＮＦビット２０８は、タイルリソース中のページが常駐であるかどうかを決定するためにデフォルト値、常駐検査などと連携して使用され得る。
【００２３】
[0028]一例では、フォールトが発生する場合、非常駐ページへのメモリアクセスが発生しており、ＮＦビット２０８は、フォールトを可能にするように設定されていなければならない。フォールトが発生せず、メモリアクセスが発生しており、ＮＦビット２０８はフォールトが発生することを可能にするようなものである場合、試みられたメモリアクセスは常駐ページに対するものであるはずである。ＮＦビット２０８が設定され、したがって、フォールトが発生しないことになることを除いて、フォールトが発生した場合、デフォルト値を返す、常駐検査など、本開示の他の態様が行われ得る。
【００２４】
[0029]いくつかの例は、既存のページテーブル属性を使用し得る。言い換えれば、そのような例では、ＮＦビット２０８が存在する必要がないことがある。そのような例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。そのような例は、特定の物理的メモリアドレスにダミーページを記憶し、レジスタ中に物理的メモリアドレスの値を記憶し得る。非常駐ページの仮想アドレスは、ダミーページの物理的メモリアドレスにマッピングされ得る。さらに、ページがアクセスされているとき、ページテーブル中のそれの物理メモリが、レジスタ中に記憶された物理的メモリ値と比較され得る。２つの値が同じである場合、クライアントは、それが非常駐ページにアクセスしていると決定する。２つの値が異なる場合、クライアントは、それが常駐ページにアクセスしていると決定する。
【００２５】
[0030]ページが非常駐であるときをプロセッサなどのクライアント、たとえば、メモリにアクセスし得るデバイスに知らせるためのいくつかの例を提供する。これは、常駐検査と呼ばれる。デフォルト値またはダミー値は、ページが非常駐であるという指示を与え得るが、メモリ中に記憶されたこれらの値を、たとえば、実データとして常駐ページが偶然有する可能性が常にあるので、常駐検査が使用され得る。一例では、メモリ管理ユニット（ＭＭＵ）は、ページが非常駐であることを示し得るビット、フラグ、または他の指示を返し得る。このビット、フラグ、または他の指示は、ＮＦビット２０８またはフラグとは別個のものであり得る。ＮＦビット２０８は、必ずしもクライアントに返されるビットと同じであるとは限らない。一例では、クライアント、たとえば、ＧＰＵは、タイルリソース中のページが常駐であるかどうかを決定するためにＭＭＵからビットを読み出し得る。タイルリソースは、メガテクスチャ、仮想テクスチャ、スパーステクスチャ、および一部常駐テクスチャとしても知られる。タイルは、同じ基本テクスチャの異なる粒状度を記憶する複数のメモリページであり得る。この機能は、より迅速なアクセスのためにメモリ中に部分的にロードされるべきテクスチャに備えており、たとえば、テクスチャが、複数のメモリページ上にタイルを張られ、または、記憶され得る。これにより、より大きいテクスチャをより効率的に使用することが可能になり得る。他の例では、フラグまたは他のインジケータがクライアントによって読み取られ得る。
【００２６】
[0031]いくつかの例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する本技法の利点は、グラフィックス処理システムが、フォールトを生じるべきである非常駐ページへのアクセスが試みられるときに依然としてフォールトを発生しながら、フォールトを生じるべきでない非常駐ページを可能にし得ることである。
【００２７】
[0032]したがって、アクセスが試みられ、アクセスされているページが非常駐ページである場合に、すべての他のリソース（たとえば、非タイルリソース）がページフォールトを生じるように、これらの他のリソースへのアクセスに対するページフォールトを依然としてサポートしながら、フォールトを生じることなしにグラフィックス動作（すなわち、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にするＤＸ１１タイルリソース特徴がサポートされ得る。非タイルリソースへの非常駐ページにアクセスしようとする試みが行われるとき、ダミーページに非タイルリソース中のすべての非常駐ページの仮想アドレスをマッピングする必要がなく、むしろ、代わりにフォールトが発生することになる。したがって、グラフィックス処理システムは、フォールトを生じる非常駐ページのためのページフォールトを返し得る。概して、非常駐ページへのいかなるメモリ動作、たとえば、メモリ読み出しまたはメモリ書き込みも、ページフォールトを返すことになる。ただし、ＤＸ１１におけるタイルリソースは、フォールトを生じることなしにグラフィックス動作（すなわち、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にする特徴の一例である。非常駐について。他の可能な例としては、ＯｐｅｎＧＬにおける「一部常駐テクスチャ」拡張があり得る。
【００２８】
[0033]デフォルト値を含んでいるメモリページは、ダミーページと呼ばれることもあり、ダミー値を含んでいると言われ得る。たとえば、場合によっては、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、ＮＦビット２０８は、フォールトを可能にするように設定され得る。言い換えれば、非常駐ページへの読み出しまたは書き込みは、すべての他のリソースへのアクセスにページフォールトを生じるべきである。したがって、フォールトを生じることなしにグラフィックス動作（すなわち、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にするＤＸ１１タイルリソースに関係しないリソースの場合、ＮＦビット２０８は、フォールトを可能にするように設定され得る。一例では、ＮＦがシングルビットであり、ＮＦ＝「１」は、フォールトが発生すべきでないことを示す場合、ＮＦ＝「０」は、フォールトが正常に処理されるべきであることを示す。言い換えれば、非常駐ページでは、読み出しまたは書き込みを行うＧＰＵまたはＭＭＵのための実際のメモリがないので、非常駐ページへのいかなるメモリ動作、たとえば、メモリ読み出しまたはメモリ書き込みも、ページフォールトを返すことになる。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、ＮＦビット２０８は、「０」になることになる。逆も真である。したがって、ＮＦがシングルビットであり、ＮＦ＝「０」、たとえば、負論理は、フォールトが発生すべきでないことを示す場合、ＮＦ＝「１」は、フォールトが通常通り処理されるべきであることを示す。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、ＮＦビット２０８は、「１」になることになる。同様に、プロセッサまたはメモリ管理ユニットが非常駐ページのメモリアドレスに読み出しまたは書き込みを行おうと試みるときに、概して、ページフォールトが発生するので、ダミーページに、非タイル非常駐ページの仮想アドレスをマッピングするのではなく、ページフォールトを単に返すことによってすべての非タイルリソースへのアクセスに対するページフォールトをサポートするために、グラフィックス処理システム、たとえば、ＧＰＵ、ＭＭＵ、メモリなどのためのフラグおよび他の指示も可能であり得る。たとえば、１つのフラグ設定がフォールトがないことを示し得、一方、別のフラグ設定が、フォールトが発生することを可能にする。
【００２９】
[0034]一例では、グラフィックスプロセッサ、メモリ管理ユニット（ＭＭＵ）または他のプロセッサが、フォールトを生じるべきでない非常駐ページを読み出すとき、読み出しによって、デフォルト値、たとえば、すべて０の値、すべて１の値などの所定のビット値が返され得る。デフォルト値は、すべての非常駐ページのアクセスのために使用され得るあらかじめ定義する値を与える。一例では、非常駐ページへの読み出しが発生する場合、値は０になる。ただし、これは、ページが非常駐であることを決定的に示さない。デフォルト値、たとえば、０は、ありがちな値であり得、常駐ページがデフォルト値を偶然に含んでいる可能性があり得る。ＭＭＵまたは他のプロセッサは、たとえば、ＧＰＵなどの、読み出しを実行し得るか、またはＭＭＵが読み出しを実行することを要求したデバイスに、非常駐ページがアクセスされたことを示すために、ステータスまたは肯定応答（ＡＣＫ）を使用し得る。ＡＣＫは、メモリ読み出しが変換しなかったという指示を与え得る。上記で説明したように、仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。いくつかの例は、メモリ読み出しが変換したかどうかを決定するために、ＡＣＫ（あるいは別の指示または信号）を使用し得る。ＮＦビット２０８またはデフォルト値は、それがアクセスされたときにメモリ読み出しがフォールトを生じるべきでないという指示を与え得る。別の例では、読み出しを実行し得るが、概して書き込みを実行しないテクスチャユニットは、フォールトを生じるべきでない非常駐ページをそれまたは別のプロセッサが読み出すときにデフォルト値を受信し得る。さらに、一例では、クライアント、たとえば、ＧＰＵは、ＭＭＵに常駐情報を要求することによって常駐検査を実行し得る。たとえば、ＧＰＵは、ＭＭＵにページが常駐であるという指示を与えさせるためにＭＭＵに信号を送り得る。たとえば、ＧＰＵは変換すべき信号としてアドレスを与え得、ＭＭＵは、常駐についての検査を実行する。ＭＭＵは、ページが常駐ページであるか、または非常駐ページであるかを示す肯定応答を返し得る。ＭＭＵはメモリを管理し、それに応じて、常駐および非常駐であるページに関する情報が、ＭＭＵ中に、またはＭＭＵの内部または外部のものであり得るページテーブル中に記憶され得る。いくつかの例では、ページテーブルは、メモリ、たとえば、ＤＲＡＭの一部中に記憶され得る。
【００３０】
[0035]一例では、ＧＰＵが非常駐ページに書き込もうと試みるとき、非常駐ページは物理的ロケーションにマッピングせず、したがって、データを書き込む場所がないので、その書き込みの試みはドロップされるべきである。試みられた書き込みについてのデータは、失われることになり、プロセッサまたは他の回路は、それが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。より詳細に説明するように、一例では、たとえば、書き込みが非常駐ページに対するものであるとＭＭＵが決定すると、ＭＭＵは書き込みをドロップし得る。またより詳細に説明するように、いくつかの例では、グラフィックス処理ユニットのピクセルシェーダ、形状シェーダ、または他のシェーダユニットが、書き込みを実行し得、非常駐ページへの書き込みをドロップするようにプログラムされ得る。
【００３１】
[0036]上記で説明したように、タイルリソースと呼ばれるＤＸ１１における新しい特徴は、フォールトを生じることなしにグラフィックス動作（すなわち、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にする。したがって、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別することが必要であり得る。さらに、いくつかの例では、プロセッサ、グラフィックスプロセッサ、またはＭＭＵは、デプステストのために読み出しおよび／または書き込みを実行し得る。デプステストは、レンダリングされた場面のどの要素が可視であり、どれが隠れているかを決定するために、３次元（３Ｄ）グラフィックス中の画像デプス座標に関して、使用され得るグラフィックス動作である。プロセッサ、グラフィックスプロセッサ、またはＭＭＵはまた、カラーブレンディンググラフィックス動作の一部として読み出しを実行し得る。これらの機能は、デプステスト、カラーブレンディングなどに関係する常駐ページおよび非常駐ページに対処することを可能にするために、本明細書で提供する例を使用し得る。例示的なカラーブレンディング動作は、新しい色（「Ｎｅｗ＿ｃｏｌｏｒ）を形成するために描画する色（「ｉｎｃｏｍｉｎｇ＿ｃｏｌｏｒ」）とブレンドするための前の色（「ｏｌｄ＿ｃｏｌｏｒ」）を読み出し得る。言い換えれば、たとえば、ビデオディスプレイ上に以前に表示された色が、新しい色を形成するために描画する色とブレンドされ得る。新しい色は、実際に表示される色であり得る。前の色は、ブレンディングを実行するプロセッサによって読み取られ、以下を使用してブレンドされ得る。  
Ｎｅｗ＿ｃｏｌｏｒ＝ｏｌｄ＿ｃｏｌｏｒ＊（１−ｂｌｅｎｄ＿ｖａｌｕｅ）  
＋ｉｎｃｏｍｉｎｇ＿ｃｏｌｏｒ＊（ｂｌｅｎｄ＿ｖａｌｕｅ）。
【００３２】
[0037]別の例では、ダミーページは、ページが常駐であるかどうかを示すダミー値を含んでいる。ダミーページは、非常駐ページへの任意の読み出しにマッピングされ得る情報のページを形成する単一のメモリロケーションまたは一連のメモリロケーションであり得る。たとえば、（比較ユニットなどの）システムは、物理アドレスがレジスタ中に記憶されたダミーページのアドレス値と同じであるかどうかを決定するために、アドレス、たとえば、ページテーブル中の物理アドレスを、レジスタ中に記憶されたダミーページのアドレスと比較し得る。このようにして、システムは、ページが常駐であるかどうかを決定し得る。いくつかの例では、入力アドレスは、ページテーブル中に記憶された仮想アドレスであり得る。ステータスビットも、ページテーブル中に記憶され得る。仮想アドレスおよびステータスビットは、所与の仮想アドレスがマッピングすることになる物理アドレスを生成するために組み合わされ得る。たとえば、ＭＭＵは、仮想アドレスを物理アドレスにマッピングするように構成され得る。ＭＭＵは、仮想アドレスをタイルの物理アドレスにマッピングするために使用されるページテーブルエントリのセットを含み得る。いくつかの例では、ＭＭＵは、キャッシュラインについての要求がヒットまたはミスであるか否かを決定するために使用され得るキャッシュラインインデックスを含み得る。参照されるダミーページは物理アドレスを有し、同じ物理アドレスが、複数の仮想アドレスのために使用され得る。この例では、存在せず、ＰＲＴの一部であるすべての仮想アドレステーブルエントリのためにダミーページの物理アドレスが使用され得る。
【００３３】
[0038]アクセスされているページがレジスタ中の値に一致する場合、ページは非常駐である。ページに対する読み出しは、通常通り進行し得る。これは、プロセッサまたはグラフィックスプロセッサが、ダミーページに適切なデフォルト値を書き込むことになり、これらの値が、非常駐ページにアクセスしようと試みるシステムによって読み取られることになるからである。試みられた書き込みはドロップされるべきである。この場合も、試みられた書き込みについてのデータは、失われることになり、データが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、複数の非常駐ページによって使用され得るダミー値を含むページ以外の非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。さらに、一例では、ページが非常駐ページであることを示すレジスタ中の値に、アクセスされているページが一致するとき、常駐検査は偽を返すべきである。
【００３４】
[0039]この解決策のいくつかの例の利点は、読み出しに対してページフォールトを作成するのではなく、非常駐ページが「ダミーページ」に透過的にマッピングされること、および「特殊な」処理が書き込みに対してのみ必要とされることである。この解決策のいくつかの例の別の利点は、デフォルト値でページを満たすことをソフトウェアが担当し得るので、デフォルト値がプログラム可能であり得ることである。
【００３５】
[0040]いくつかの例では、ＤＸ１１特徴はまた、タイルリソースが常駐であるか、または非常駐であるかをグラフィックスシェーダプログラムが決定する方法を必要とし得る。すべての非常駐ページのために、適切なデフォルト値で満たされたダミーページが使用され得る。ダミーページ中に記憶されたデフォルト値は、ページが非常駐であるという指示を与え得る。ただし、単に、記憶されたデータがデフォルト値と偶然同じ値であるので、そのような値がページ中に記憶され得る。ただし、さらに、場合によっては、これらの非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、たとえば、書き込みを続けることが可能になる場合、正しいデフォルト値を常に返すことをダミーページに依拠し得ない。したがって、メモリ読み出しが変換しなかったという、信号などの別の指示も、本明細書で説明するダミー値と併せて使用され得る。さらに、別の例では、ページが常駐であるかどうかをシェーダプログラムが決定することを可能にするために別個の常駐マップが使用され得る。そのような例は、そのテクスチャからの読み出しが発生し得るかどうかを決定するために常駐マップを検査し得る。たとえば、シェーダプログラムを実行しているＧＰＵは、ＭＭＵに常駐検査を要求し得る。ＧＰＵが常駐検査を要求すると、ＭＭＵは、たとえば、タイル（複数のメモリページ）がメモリ中で常駐であるかどうかを決定するために、常駐マップを検査し得る。タイルが非常駐であると常駐マップの検査が返す場合、メモリから値をフェッチするのではなく、シェーダ中のデフォルト値が使用され得る。一例では、要求されたメモリアクセスは、タイルテクスチャへのアクセスをし得る。タイルテクスチャまたはタイルテクスチャの１つの粗さレベルがメモリ中に記憶されないことがある。したがって、デフォルト値が代わりに返され得るか、または、以下でより詳細に説明するように、テクスチャのより粗いバージョンが利用可能であり得る。
【００３６】
[0041]様々な例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法が提供される。さらに、ページが非常駐であるときをクライアントに知らせる様々な方法が提供される。非常駐であるページがアクセスされているときにクライアントが何を行うかは、変動し得、概して、クライアントの必要によって規定され得る。
【００３７】
[0042]たとえば、ある場合には、一部常駐テクスチャが使用され得る。一部常駐テクスチャは、メモリ中に部分的に記憶される。たとえば、テクスチャの粒状度レベルの全部ではないが一部がメモリ中に記憶され得る。粒状度は、特定のレンダリングのために与えられ得るテクスチャのための詳細さのレベルを指す。概して、所与のテクスチャが、３Ｄピクチャの２Ｄレンダリングにおいてより遠く離れていると考えられれば考えられるほど、テクスチャにおいてより低い詳細さが使用され得る。テクスチャ全体、すなわち、粒状度のあらゆるレベルは、それの一部、たとえば、１つまたは複数の粒状度レベルを記憶するために使用されるメモリのサイズよりも大きくなり得る。テクスチャの一部、たとえば、１つまたは複数の粒状度レベルがメモリ中に記憶され得る。したがって、常駐検査は、テクスチャの一部、たとえば、ピクチャの所与のレンダリングのために使用され得るテクスチャの粒状度レベルが常駐であるか、または非常駐であるかを決定するために使用され得る。たとえば、ＧＰＵは、たとえば、テクスチャの特定の粒状度レベルがメモリ中で利用可能であるかどうかを決定するために常駐検査を要求し得、メモリコントローラ８またはＩＯＭＭＵは、常駐検査の結果、たとえば、テクスチャの特定の粒状度レベルがメモリ中で利用可能であるかどうかを示す常駐肯定応答を返し得る。テクスチャの非常駐部分がピクチャのレンダリングのために必要とされると、メモリコントローラ８またはＩＯＭＭＵはデフォルト値を返し得る。
【００３８】
[0043]いくつかの例では、ピクチャをレンダリングするために必要とされるテクスチャがメモリ中で利用可能でないとき、クライアントは、より高いミップマップレベル（ＭＩＰレベル）をもつより粗いテクスチャにフォールバックし得、ここで、ピクセルのサイズは、所与のテクスチャについてより小さくなり、したがって、テクスチャはより粗くなる。ミップマップは、同じ画像を表すアレイの順序集合であり、各アレイは、前のアレイよりも低い解像度を有する。たとえば、０のミップマップレベル（ＭＩＰレベル）は、最も高い解像度の画像のためのものであり得、１のＭＩＰレベルは、２番目に高い解像度の画像のためのものであり得、以下同様であり、ここで、最高のＭＩＰレベルは、最も粗い解像度をもつ画像のためのものである（表１を参照）。より粗いテクスチャは、プロセッサによって記憶され得るテクスチャの詳細さがより低いバージョンであり、テクスチャの詳細さがより低いバージョンを記憶するためにより少ないメモリが必要になり得る。したがって、テクスチャの詳細なバージョンを記憶するのではなく、１つまたは複数のテクスチャの詳細さがより低いバージョンを記憶することがより効率的であり得る。一部常駐テクスチャのより粗いバージョンは、常駐である可能性が高くなり得る。いくつかの例では、所与のテクスチャのために必要とされる詳細さのレベル（ＬＯＤ：level of detail）に応じて、一部常駐テクスチャのより粗いバージョンが許容され得る。いくつかの例では、テクスチャユニットは、表示される粗さレベルを選択し得る。たとえば、テクスチャユニットは、非常駐であるより詳細なテクスチャではなく常駐であるより粗いテクスチャを選択し得る。テクスチャユニットは、別個のハードウェアであり得るか、またはピクセルシェーダまたは他のシェーダの一部であり得る。
【００３９】
【表１】
2016534486.tif 000003
【００４０】
[0044]本明細書で説明する例は、概して、「フェイルセーフ」を提供し、したがって、非常駐ページについてページフォールトは発生しない。たとえば、ピクチャをレンダリングするために必要とされるテクスチャがメモリ中で利用可能でないとき、より高いミップマップレベル（ＭＩＰレベル）をもつより粗いテクスチャにフォールバックすることによる。いくつかの例では、読み出しは必要とされないことがある。これは、たとえば、メモリ中にロードされるものよりもより詳細なテクスチャレベルを読み出すときに発生し得る。その場合、アプリケーションは、テクスチャが常駐でないと示され得、詳細さがより低いバージョンを使用し得る。テクスチャは、メモリを節約するためにロードされないことがある。色の書き込みの場合、ページは、物理的メモリを節約するために消失していることがある。
【００４１】
[0045]いくつかの例は、カラーバッファリングのために非常駐ページにアクセスし得る。カラーバッファリングは、読み出しのみの動作、書き込みのみの動作、または読み出しと書き込みとの両方の動作を含み得る。プロセッサ（たとえば、ＧＰＵ）は、たとえば、目標アルファチャネル情報が使用され、アルファチャネル情報の現在の値を保持すべきであり、書き込みがアボートされるときに読み出しのみの動作を実行し得る。これは、たとえば、ブレンディング事例で発生し得る。アルファチャネルは、画像に追加され得る追加のチャネルである。アルファチャネル情報は、画像に関する透明度情報を含んでおり、アルファのタイプに応じて、様々なレベルの透明度を含むことができる。アルファチャネルは、概して、すべての他のチャネルの透明度を制御する。画像にアルファチャネル情報を追加することによって、赤チャネル、緑色チャネルおよび青色チャネルの透明度が制御され得る。書き込みのみは、一般に、メモリに色値を（たとえば、ピクセルごとに１つ）書き込むために使用され得る。読み出しおよび書き込みは、概して、ブレンディングのために使用され得る。たとえば、プロセッサは、目標色とピクセルのための目標アルファとを読み出し、たとえば、ポーターダフ型のブレンディングを使用して、ピクセルについてのその情報を、描画するソース色およびピクセルのためのソースアルファとマージし得る。したがって、プロセッサは、データをブレンドするために関係したデータを、読み出し、次いで、書き込み得る。場合によっては、アボートされた書き込みがあり得、その場合、読み出しのみが行われる。（ポーターダフブレンディングルールは、目標ピクセルに対する２つのソースピクセルの寄与を制御するためのブレンディング式のペアを定義する）。
【００４２】
[0046]図１は、本開示で説明する技法を実装するために使用され得る例示的なコンピューティングデバイス２を示すブロック図である。コンピューティングデバイス２は、パーソナルコンピュータ、デスクトップコンピュータ、ラップトップコンピュータ、コンピュータワークステーション、ビデオゲームプラットフォームもしくはコンソール、（たとえば、携帯電話、セルラー電話、衛星電話、および／もしくは携帯電話ハンドセットのような）ワイヤレス通信デバイス、固定電話、インターネット電話、ポータブルビデオゲームデバイスもしくは携帯情報端末（ＰＤＡ）のようなハンドヘルドデバイス、パーソナル音楽プレーヤー、ビデオプレーヤー、ディスプレイデバイス、テレビジョン、テレビジョンセットトップボックス、サーバ、中間ネットワークデバイス、メインフレームコンピュータ、またはグラフィカルデータを処理および／もしくは表示する任意の他のタイプのデバイスを備え得る。
【００４３】
[0047]図１の例に示すように、コンピューティングデバイス２は、ユーザインターフェース４と、ＣＰＵ６と、メモリコントローラ８と、メモリ１０と、グラフィックス処理ユニット（ＧＰＵ）１２と、ＧＰＵキャッシュ１４と、ディスプレイインターフェース１６と、ディスプレイ１８と、バス２０とを含む。ユーザインターフェース４、ＣＰＵ６、メモリコントローラ８、ＧＰＵ１２、およびディスプレイインターフェース１６は、バス２０を使用して互いと通信し得る。図１に示す異なる構成要素同士の間のバスおよび通信インターフェースの特定の構成は単なる例示であり、本開示の本技法を実装するために、同じもしくは異なる構成要素を備えたコンピューティングデバイスおよび／または他のグラフィックス処理システムの他の構成が使用され得ることに留意されたい。
【００４４】
[0048]ＣＰＵ６は、コンピューティングデバイス２の動作を制御する汎用または特殊用途プロセッサを備え得る。ユーザは、ＣＰＵ６に１つまたは複数のソフトウェアアプリケーションを実行させるために、コンピューティングデバイス２に入力を提供し得る。ＣＰＵ６上で実行されるそれらのソフトウェアアプリケーションは、たとえば、オペレーティングシステム、ワードプロセッサアプリケーション、電子メールアプリケーション、スプレッドシートアプリケーション、メディアプレーヤアプリケーション、ビデオゲームアプリケーション、グラフィカルユーザインターフェースアプリケーション、または別のプログラムを含み得る。ユーザは、ユーザインターフェース４を介してコンピューティングデバイス２に結合される、キーボード、マウス、マイクロフォン、タッチパッドまたは別の入力デバイスなど、１つもしくは複数の入力デバイス（図示せず）を介してコンピューティングデバイス２に入力を与え得る。
【００４５】
[0049]ＣＰＵ６上で実行するソフトウェアアプリケーションは、グラフィックスデータをディスプレイ１８にレンダリングさせるようにＧＰＵ１２に命令する、１つまたは複数のグラフィックスレンダリング命令を含み得る。いくつかの例では、ソフトウェア命令は、たとえば、Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ（ＯｐｅｎＧＬ（商標登録））アプリケーションプログラミングインターフェース（ＡＰＩ）、Ｏｐｅｎ  Ｇｒａｐｈｉｃｓ  Ｌｉｂｒａｒｙ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍ（ＯｐｅｎＧＬ  ＥＳ）ＡＰＩ、Ｄｉｒｅｃｔ３Ｄ  ＡＰＩ、ＤｉｒｅｃｔＸ  ＡＰＩ、ＲｅｎｄｅｒＭａｎ  ＡＰＩ、ＷｅｂＧＬ  ＡＰＩ、または任意の他の公開の、もしくはプロプライエタリの標準的なグラフィックスＡＰＩのような、グラフィックスＡＰＩに準拠し得る。グラフィックスレンダリング命令を処理するために、ＣＰＵ６は、グラフィックスデータのレンダリングの一部または全部をＧＰＵ１２に実行させるために、１つまたは複数のグラフィックスレンダリングコマンドをＧＰＵ１２に発行し得る。いくつかの例では、レンダリングされるべきグラフィックスデータは、グラフィックスプリミティブのリスト、たとえば、点、線、三角形、四角形、トライアングルストリップ、パッチなどを含み得る。
【００４６】
[0050]本開示は、メモリページ、たとえば、仮想メモリの固定長連続ブロックがメモリ１０中に非常駐であることを、クライアント、たとえば、ＣＰＵ６、ＧＰＵ１２、またはメモリコントローラ８に通知するためのシステムおよび方法を提供する。いくつかの例としては、非常駐ページにアクセスしようと試みることと、非常駐ページがページフォールトを生じるべきでないと決定することとがあり得る。この決定は、特定の非常駐ページがページフォールトを生成すべきでないことを示すビットに基づき得る。非常駐ページのアクセスが読み出しであるとき、いくつかの例はデフォルト値を返し得る。いくつかの例では、非常駐ページのアクセスが書き込みであるとき、非常駐ページは、ページフォールトおよび書き込みを中止することを生じるべきでない。非常駐ページは、ページフォールトを生じるべきでない。別の例では、プロセッサ、たとえば、ＧＰＵ１２は、非常駐ページ、すなわち、メモリ１０などのメモリ中に記憶されていないページにアクセスしようと試み得る。非常駐ページのアドレスは、代わりに、デフォルト値を含んでいる、たとえば、メモリ１０中のメモリページを指し得る。非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、デフォルト値は、メモリコントローラ８を通してメモリ１０によってＧＰＵ１２に返され得る。ＧＰＵ１２などのプロセッサによる書き込みが、非常駐ページに対するものであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みは中止され得る。いくつかの例では、プロセッサ、たとえば、ＧＰＵ１２は、データが後で必要とされる場合、中止された書き込みから失われたデータを再計算し得る。
【００４７】
[0051]メモリコントローラ８は、メモリ１０に出入りするデータの転送を容易にする。たとえば、メモリコントローラ８は、メモリ読み出し要求とメモリ書き込み要求とをＣＰＵ６および／またはＧＰＵ１２から受信し、コンピューティングデバイス２内の構成要素にメモリサービスを提供するために、メモリ１０に関するそのような要求にサービス提供し得る。メモリコントローラ８はメモリ１０に通信可能に結合される。メモリコントローラ８は、図１の例示的なコンピューティングデバイス２では、ＣＰＵ６とメモリ１０の両方とは別の処理モジュールとして示されているが、他の例では、メモリコントローラ８の機能の一部または全部は、ＣＰＵ６、ＧＰＵ１２、およびメモリ１０の１つまたは複数の上に実装され得る。いくつかの例では、メモリ管理ユニット（ＭＭＵ）は、たとえば、ＧＰＵ１２または他のクライアントの一部であり得る。他の例では、ＭＭＵ（図示せず）は、あらゆるクライアント、たとえば、ＧＰＵ１２とメモリコントローラ８との間にあり得る。
【００４８】
[0052]メモリ１０は、ＣＰＵ６による実行のためにアクセス可能なプログラムモジュールおよび／もしくは命令ならびに／またはＣＰＵ６上で実行されるプログラムが使用するためのデータを記憶し得る。たとえば、メモリ１０は、ユーザアプリケーションと、それらのアプリケーションに関連するグラフィックスデータとを記憶し得る。メモリ１０は、コンピューティングデバイス２の他の構成要素が使用するための情報、および／またはそれらによって生成された情報を記憶し得る。たとえば、メモリ１０は、ＧＰＵ１２のデバイスメモリとして働き得、ＧＰＵ１２によって演算されることになるデータ、ならびにＧＰＵ１２によって実行される演算の結果生じるデータを記憶し得る。たとえば、メモリ１０は、パスデータ、パスセグメントデータ、表面、テクスチャバッファ、デプスバッファ、セルバッファ、頂点バッファ、フレームバッファなどの任意の組合せを記憶し得る。さらに、メモリ１０は、ＧＰＵ１２によって処理するためのコマンドストリームを記憶し得る。メモリ１０は、たとえば、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、同期式ダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ（登録商標））、フラッシュメモリ、磁気データ媒体または光記憶媒体のような、１つもしくは複数の揮発性または不揮発性のメモリあるいはストレージデバイスを含み得る。
【００４９】
[0053]ＧＰＵ１２は、ＣＰＵ６によってＧＰＵ１２に発行されたコマンドを実行するように構成され得る。ＧＰＵ１２によって実行されるコマンドは、グラフィックスコマンド、描画呼出しコマンド、ＧＰＵ状態プログラミングコマンド、メモリ転送コマンド、汎用コンピューティングコマンド、カーネル実行コマンドなどを含み得る。メモリ転送コマンドは、たとえば、メモリ複製コマンド、メモリ合成コマンド、およびブロック転送（ブリット）コマンドを含み得る。
【００５０】
[0054]いくつかの例で、ＧＰＵ１２は、ディスプレイ１８に１つまたは複数のグラフィックスプリミティブをレンダリングするためにグラフィックス動作を実行するように構成され得る。そのような例では、ＣＰＵ６上で実行するソフトウェアアプリケーションの１つがグラフィックス処理を必要とするとき、ＣＰＵ６は、ディスプレイ１８にレンダリングするためのグラフィックスデータをＧＰＵ１２に提供し、ＧＰＵ１２に１つまたは複数のグラフィックスコマンドを発行し得る。グラフィックスコマンドは、たとえば、描画呼出しコマンド、ＧＰＵ状態プログラミングコマンド、メモリ転送コマンド、ブリットコマンドなどを含み得る。グラフィックスデータは、頂点バッファ、テクスチャデータ、面データなどを含み得る。いくつかの例では、ＣＰＵ６は、コマンドとグラフィックスデータとをＧＰＵ１２によってアクセスされ得るメモリ１０に書き込むことによって、コマンドとグラフィックスデータとをＧＰＵ１２に提供し得る。
【００５１】
[0055]さらなる例では、ＧＰＵ１２は、ＣＰＵ６上で実行されるアプリケーションのために汎用コンピューティングを実行するように構成され得る。そのような例では、ＣＰＵ６上で実行されるソフトウェアアプリケーションの１つが計算タスクをＧＰＵ１２にオフロードすることを決定するとき、ＣＰＵ６は、汎用コンピューティングデータをＧＰＵ１２に提供し、ＧＰＵ１２に１つまたは複数の汎用コンピューティングコマンドを発行し得る。汎用コンピューティングコマンドは、たとえば、カーネル実行コマンド、メモリ転送コマンドなどを含み得る。いくつかの例では、ＣＰＵ６は、コマンドとグラフィックスデータとをＧＰＵ１２によってアクセスされ得るメモリ１０に書き込むことによって、コマンドと汎用コンピューティングデータとをＧＰＵ１２に提供し得る。
【００５２】
[0056]ＧＰＵ１２は、いくつかの例では、ＣＰＵ６よりも効率的な処理を行う高並列構造を用いて構築され得る。たとえば、ＧＰＵ１２は、複数の頂点、制御点、画素および／または他のデータについて並列の方式で演算するように構成された複数の処理要素を含み得る。ＧＰＵ１２の高度に並列な性質は、いくつかの例では、ＧＰＵ１２が、ＣＰＵ６を使用して画像をレンダリングするよりも迅速にグラフィックス画像（たとえば、ＧＵＩおよび２次元（２Ｄ）ならびに／または３次元（３Ｄ）のグラフィックスシーン）をディスプレイ１８上にレンダリングするのを可能にし得る。さらに、ＧＰＵ１２の高並列な性質は、ＧＰＵ１２が、汎用コンピューティングアプリケーションに関するある種のタイプのベクトル演算と行列演算とをＣＰＵ６よりすばやく処理することを可能にし得る。
【００５３】
[0057]いくつかの例では、ＧＰＵ１２は、コンピューティングデバイス２のマザーボードに統合され得る。他の例では、ＧＰＵ１２は、コンピューティングデバイス２のマザーボードにおけるポートに差し込まれたグラフィックスカード上に存在し得、またはコンピューティングデバイス２と相互動作するように構成された周辺デバイス内に組み込まれ得る。さらなる例では、ＧＰＵ１２は、システムオンチップ（ＳｏＣ）を形成するＣＰＵ６と同じマイクロチップ上に配置され得る。ＧＰＵ１２は、１つもしくは複数のマイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、デジタルシグナルプロセッサ（ＤＳＰ）、または他の同等の集積もしくは個別論理回路などの１つまたは複数のプロセッサを含み得る。
【００５４】
[0058]いくつかの例では、ＧＰＵ１２はＧＰＵキャッシュ１４に直接結合され得る。したがって、ＧＰＵ１２は、必ずしもバス２０を使用せずに、ＧＰＵキャッシュ１４からデータを読み出し、ＧＰＵキャッシュ１４にデータを書き込み得る。言い換えると、ＧＰＵ１２は、オフチップメモリの代わりに、ローカルストレージを使用してデータをローカルに処理し得る。これにより、ＧＰＵ１２は、大量のバストラフィックを受けることがある、バス２０を介したデータの読み出しおよび書き込みの必要がなくなるので、より効率的な方法で動作することが可能になる。しかしながら、いくつかの例では、ＧＰＵ１２は、別個のキャッシュを含まず、代わりに、バス２０を介してメモリ１０を利用し得る。ＧＰＵキャッシュ１４は、たとえば、ランダムアクセスメモリ（ＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、磁気データ媒体または光学記憶媒体のような、１つもしくは複数の揮発性または不揮発性のメモリあるいはストレージデバイスを含み得る。
【００５５】
[0059]ＣＰＵ６および／またはＧＰＵ１２は、レンダリングされた画像データをメモリ１０内に割り振られたフレームバッファ内に記憶し得る。ディスプレイインターフェース１６は、データをフレームバッファから取り出し、レンダリングされた画像データによって表される画像を表示するようにディスプレイ１８を構成し得る。いくつかの例では、ディスプレイインターフェース１６は、フレームバッファから取り出されたデジタル値を、ディスプレイ１８によって消費可能なアナログ信号に変換するように構成されたデジタルアナログコンバータ（ＤＡＣ）を含み得る。他の例では、ディスプレイインターフェース１６は、処理のために、デジタル値をディスプレイ１８に直接的にパスし得る。
【００５６】
[0060]ディスプレイ１８は、モニタ、テレビジョン、映写デバイス、液晶ディスプレイ（ＬＣＤ）、プラズマディスプレイパネル、発光ダイオード（ＬＥＤ）アレイ、陰極線管（ＣＲＴ）ディスプレイ、電子ペーパー、表面電界ディスプレイ（ＳＥＤ：surface-conduction electron-emitted display）、レーザーテレビジョンディスプレイ、ナノ結晶ディスプレイ、または別のタイプのディスプレイユニットを含み得る。ディスプレイ１８はコンピューティングデバイス２内に統合され得る。たとえば、ディスプレイ１８は、携帯電話ハンドセットまたはタブレットコンピュータのスクリーンであり得る。代替的に、ディスプレイ１８は、有線またはワイヤレス通信リンクを介してコンピューティングデバイス２に結合されたスタンドアロンデバイスであり得る。たとえば、ディスプレイ１８は、ケーブルまたはワイヤレスリンクを介してパーソナルコンピュータに接続されたコンピュータモニタまたはフラットパネルディスプレイであり得る。
【００５７】
[0061]バス２０は、第１世代、第２世代、および第３世代のバス構造およびバスプロトコル、共有バス構造および共有バスプロトコル、ポイントツーポイントバス構造およびポイントツーポイントバスプロトコル、単一方向バス構造および単一方向バスプロトコル、ならびに両方向バス構造および両方向プロトコルを含む、バス構造とバスプロトコルとの任意の組合せを使用して実施され得る。バス２０を実装するために使用され得る様々なバス構造およびバスプロトコルの例としては、たとえば、ＨｙｐｅｒＴｒａｎｓｐｏｒｔバス、ＩｎｆｉｎｉＢａｎｄバス、Ａｄｖａｎｃｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔバス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＰＣＩ  Ｅｘｐｒｅｓｓバス、Ａｄｖａｎｃｅｄ  Ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ  Ｂｕｓ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＡＭＢＡ）Ａｄｖａｎｃｅｄ  Ｈｉｇｈ−ｐｅｒｆｏｒｍａｎｃｅ  Ｂｕｓ（ＡＨＢ）、ＡＭＢＡ  Ａｄｖａｎｃｅｄ  Ｐｅｒｉｐｈｅｒａｌ  Ｂｕｓ（ＡＰＢ）、およびＡＭＢＡ  Ａｄｖａｎｃｅｄ  ｅＸｅｎｔｉｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ（ＡＸＩ）バスがある。他のタイプのバス構造およびプロトコルも使用され得る。
【００５８】
[0062]本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する技法は、たとえば、ＣＰＵ６、ＧＰＵ１２、およびメモリ１０を含む、図１に示すコンピューティングデバイス２中の構成要素のいずれか中に実装され得る。ページは、メモリページまたは仮想ページと呼ばれることもある。ページは、仮想メモリの固定長連続ブロックであり得る。ページは、仮想であるので、メモリ１０などのメモリ中に記憶されることも、記憶されないこともある。特定のページは、たとえば、メモリ１０中に記憶されると、常駐ページと呼ばれることがある。逆に、特定のページは、たとえば、メモリ１０中に記憶されないと、非常駐ページと呼ばれることがある。常駐でないと呼ばれることもある。いくつかの例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法のすべてまたはほぼすべてが、ＧＰＵ１２中に（たとえば、ＧＰＵ１２のグラフィックスパイプライン中に）実装され得る。
【００５９】
[0063]図２および図３に、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別する様々な技法について説明する本開示の２つの例示的なシステムのさらなる詳細さを示す。さらに、図２および図３に、ページが非常駐であるときをクライアント、たとえば、ＧＰＵ１２に知らせる様々な方法を示す。言い換えれば、ページがメモリ１０などのメモリ中に記憶されないときである。フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するためのいくつかの例を提供する。
【００６０】
[0064]図２は、本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する例示的なコンピューティングデバイスを示すブロック図である。コンピューティングデバイスは、ＧＰＵ１２と、入出力メモリ管理ユニット（ＩＯＭＭＵ）であり得るメモリコントローラ８と、動的ランダムアクセスメモリ（ＤＲＡＭ）であり得るメモリ１０と、ページテーブル（ＰＴＥ）２０６とを含む。
【００６１】
[0065]図２に示すように、例示的なコンピューティングデバイスは、メモリコントローラ８を含む。メモリコントローラ８は、メモリコントローラの形態であり得る。さらに、メモリコントローラ８は、読み出し許可（Ｒ）、書き込み許可（Ｗ）、キャッシュ可能メモリロケーション（Ｃ）、および共有メモリロケーション（Ｓ）などの様々なページ属性２１０を処理するように構成され得る。図示のように、図２の例では、ページ属性２１０は、ページフォールトを生成すべきでない非常駐ページへのアクセスを指定する追加のビットを含み得る。したがって、メモリコントローラ８は、非常駐ページへのアクセスがページフォールトを生成すべきでないことを示す「フォールトなし」（ＮＦ）ビット２０８を処理するように構成され得る。ＮＦビット２０８は、非常駐ページへのアクセスがフォールトを生成すべきでないことを示し得る。
【００６２】
[0066]ＮＦビット２０８の１つの目的は、非常駐素材がフォールトを生じるべきでないことを指定することであり得る。ＮＦビット２０８はまた、非常駐ページの決定に影響を及ぼし得る。ＮＦビット２０８は、タイルリソース中のページが、ここで説明したように常駐であるかどうかを決定するために使用され得る。たとえば、ＮＦビット２０８は、タイルリソース中のページが常駐であるかどうかを決定するためにデフォルト値、常駐検査などと連携して使用され得る。
【００６３】
[0067]一例では、ＧＰＵ１２、メモリコントローラ８、または他のプロセッサが、フォールトを発生させるメモリアクセス（たとえば、読み出し、書き込み）を実行する場合、メモリアクセスは、非常駐ページに対するものであって、ＮＦビット２０８は、そのメモリアクセスについてフォールトを可能にするように設定されていなければならない。メモリアクセスについてフォールトが発生せず、ＮＦビット２０８はフォールトが発生することが可能になるようなものである場合、ＧＰＵ１２、メモリコントローラ８、または他のプロセッサによって試みられたメモリアクセスは常駐ページに対するものでなければならない。ＮＦビット２０８が設定され、したがって、フォールトが発生しないことになることを除いて、フォールトが発生した場合、デフォルト値を返す、常駐検査など、本開示の他の態様が行われ得る。
【００６４】
[0068]図２に、「ＮＦ」２０８と呼ばれる「フォールトなし」、「常駐でないビット」、または「非常駐ビット」を含む例を示す。所与の仮想アドレスについて、ページテーブルは、仮想アドレスに関連付けられる物理アドレス２１２ならびに物理アドレスによって識別されるページ中に記憶されたデータのページ属性２１０を記憶し得る。ページ属性２１０は、（一例として）物理アドレス２１２にプリペンドされたバイナリビットとして記憶され得る。これらのページ属性２１０のうちの１つは、図２に示すようにＮＦビット２０８である。
【００６５】
[0069]ページが非常駐であるときをクライアント、たとえば、ＧＰＵ１２に知らせるためのいくつかの例を提供する。本明細書で説明するように、ページは、メモリ１０などのメモリ中に記憶されないとき、非常駐である。ページは、仮想であるので、メモリ１０などのメモリ中に記憶されることも、記憶されないこともある。特定のページは、たとえば、メモリ１０中に記憶されると、常駐ページと呼ばれることがある。逆に、特定のページは、たとえば、メモリ１０中に記憶されないと、非常駐ページと呼ばれることがある。常駐でないと呼ばれることもある。
【００６６】
[0070]ページは、仮想メモリの固定長連続ブロックであり得る。概して、仮想メモリにより、メインメモリ中に現在常駐していないページをアドレス指定し、使用することが可能になる。場合によっては、たとえば、ＧＰＵ１２上で動作するプログラムが、メモリ中にない（すなわち、常駐していないまたは非常駐である）ページ中のロケーションにアクセスしようと試みる場合、ページフォールトと呼ばれる例外が生成される。場合によっては、オペレーティングシステムまたはハードウェアは、補助記憶装置から必要なページを自動的にロードし得る。本出願では、しかしながら、非常駐ページへの一部の試みられたアクセスがページフォールトを生じ、他のものはフォールトを生じない。上記で説明したように、ＤＸ１１タイルにより、非常駐メモリアクセスが、フォールトを生じることなしに発生することが可能になり得、むしろ、本明細書で説明する態様のうちの１つまたは複数が代わりに発生し得る。
【００６７】
[0071]図２に示す例では、ＮＦビット２０８は、非常駐であるページがフォールトを生じるべきでないという指示を与え得る。たとえば、ＮＦビット２０８は、非常駐であるタイルリソース中のページがフォールトを生じるべきであるかどうかを決定するために使用され得る。この解決策の利点は、いくつかの例では、プロセッサまたはメモリ管理ユニットが非常駐ページのメモリアドレスに読み出しまたは書き込みを行おうと試みるときに、概して、ページフォールトが発生するので、ダミーページに、非タイル非常駐ページの仮想アドレスをマッピングするのではなく、ページフォールトを単に返すことによってすべての他のリソース（非タイル）へのアクセスに対してページフォールトをサポートし得ることであり得る。
【００６８】
[0072]一例では、タイルリソースにアクセスされる場合、ＮＦビット２０８は、フォールトが可能でないように設定され得る。逆に、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、ＮＦビット２０８は、フォールトを可能にするように設定され得る。言い換えれば、非常駐ページへの読み出しまたは書き込みは、すべての他のリソースへのアクセスにページフォールトを生じるべきである。したがって、ＮＦ２０８がシングルビットであり、ＮＦ＝「１」は、フォールトが発生すべきでないことを示す場合、ＮＦ＝「０」は、フォールトが通常通り処理されるべきであることを示す。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、ＮＦビット２０８は、「０」になることになる。逆も真である。したがって、ＮＦ２０８がシングルビットであり、ＮＦ＝「０」、たとえば、負論理は、フォールトが発生すべきでないことを示す場合、ＮＦ＝「１」は、フォールトが通常通り処理されるべきであることを示す。したがって、すべての他のリソース、たとえば、非タイルリソースへのアクセスの場合、ＮＦビット２０８は、「１」になることになる。
【００６９】
[0073]図２の例では、フォールトを生じるべきでない非常駐ページが読み取られるとき、読み出しに対して、デフォルト値、たとえば、すべて０の値、すべて１の値などの所定のビット値が返され得る。デフォルト値は、すべての非常駐ページのアクセスのために使用され得るあらかじめ定義する値を与える。図示の例では、非常駐ページへの読み出しが発生する場合、値は０になる。デフォルト値は、たとえば、メモリコントローラ８中に記憶された値であり得る。メモリ１０を読み出すのではなく、メモリコントローラ８は、代わりにデフォルト値を返し得る。ただし、デフォルト値は、ページが非常駐であることを決定的に示さない。デフォルト値、たとえば、０は、ありがちな値であり得、常駐ページのメモリ１０中のメモリロケーションがデフォルト値を偶然に含んでいる可能性があり得る。したがって、メモリコントローラ８は、読み出しを実行するデバイス、たとえば、ＧＰＵ１２に、フォールトを生じるべきでない非常駐ページがアクセスされていることを示すためにステータスまたは肯定応答（ＡＣＫ）を与え得る。
【００７０】
[0074]一例では、読み出しを実行し得るが、概して書き込みを実行しないテクスチャユニットは、フォールトを生じるべきでない非常駐ページが読み出しであるときにデフォルト値を返し得る。テクスチャユニットは、別個のハードウェアであり得るか、またはピクセルシェーダまたは他のシェーダの一部であり得る。テクスチャユニットは、表示される粗さレベルを選択し得る。たとえば、テクスチャユニットは、非常駐であるより詳細なテクスチャではなく常駐であるより粗いテクスチャを選択し得る。
【００７１】
[0075]図２の例に示すように、常駐検査は、クライアント、たとえば、ＧＰＵ１２によって実行（または要求）され得る。図２の例では、ＧＰＵ１２は、常駐検査を要求し、メモリコントローラ８は、仮想メモリロケーションが常駐であるか、または非常駐であるかを示す常駐肯定応答を返す。
【００７２】
[0076]図２の例では、非常駐ページに書き込もうとする試みが行われるとき、書き込みの試みがメモリ中に記憶されないページに対するものであるので、その書き込みの試みはドロップされるべきである。言い換えれば、非常駐ページの仮想アドレスは、実際の物理的メモリアドレスにマッピングしない。試みられた書き込みについてのデータは、失われることになり、データが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。一例では、たとえば、メモリコントローラ８は、書き込みが非常駐ページに対するものであると決定すると、メモリコントローラ８、たとえば、メモリ管理ユニット（ＭＭＵ）または入出力ＭＭＵ（ＩＯＭＭＵ）は、書き込みをドロップし得る。他の例では、ピクセルシェーダ、形状シェーダ、または他のシェーダユニットが、書き込みを実行し得、非常駐ページへの書き込みをドロップするようにプログラムされ得る。
【００７３】
[0077]いくつかの例では、読み出しおよび／または書き込みは、デプステストのために実行され得る。デプステストは、レンダリングされた場面のどの要素が可視であり、どれが隠れているかを決定するために、画像デプスに関して、３次元（３Ｄ）グラフィックス中の座標に使用され得るグラフィックス動作である。読み出しはまた、カラーブレンディングの一部として実行され得、カラーブレンディングは、新しい色値を割り当てるために演算、Ｎｅｗ＿ｃｏｌｏｒ＝ｏｌｄ＿ｃｏｌｏｒ＊（１−ｂｌｅｎｄ＿ｖａｌｕｅ）＋ｉｎｃｏｍｉｎｇ＿ｃｏｌｏｒ＊（ｂｌｅｎｄ＿ｖａｌｕｅ）、を使用し得る。これらの機能は、デプステスト、カラーブレンディングなどに関係する常駐ページおよび非常駐ページに対処することを可能にするために、本明細書で提供する例を使用し得る。
【００７４】
[0078]上記で説明したように、いくつかの例は、既存のページテーブル属性を使用し得る。言い換えれば、そのような例では、ＮＦビット２０８である必要がないことがある。そのような例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。
【００７５】
[0079]図３は、本開示で説明する、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実装する例示的なコンピューティングデバイスを示すブロック図である。図３の例は、既存のページテーブル属性を使用し、ＮＦビット２０８を使用しない。そのような例では、すべての非常駐ページのために適切なデフォルト値で満たされた「ダミーページ」が使用され得る。コンピューティングデバイスは、ＧＰＵ１２と、メモリコントローラ８と、メモリ１０と、ＰＴＥ３０６と、比較ユニット３０８とを含む。フォールトなしビット／非常駐ビットは使用されない。
【００７６】
[0080]図３に示す代替解決策では、ダミーページは、ページが常駐であるかどうかを示すダミー値を含んでいる。ダミーページは、たとえば、非常駐ページへの任意のメモリアドレスが読み取られるときにアクセスされ得る適切なデフォルト値で満たされた単一のメモリページであり得る。ダミー値は、たとえば、すべて０の値、すべて１の値、または何らかの他の既知の値などの所定のビット値であり得る。他の例では、ダミーページは、ランダムな値または未知の値を含み得る。ただし、そのような例では、ダミーページ中の値は、ページが常駐であるか、または非常駐であるかの指示を与えないことになる。そのような例は、メモリ１０中の特定の物理的メモリアドレスにダミーページを記憶し、たとえば、メモリコントローラ８またはＰＴＥ３０６中のレジスタ中に物理的メモリアドレスの値を記憶し得る。たとえば、ＰＴＥ３０６は、物理アドレスレジスタ３１２を含み得る。非常駐ページの仮想アドレスは、ダミーページの物理的メモリアドレスにマッピングされ得る。さらに、ページがアクセスされているとき、ページテーブル中のそれの物理メモリが、物理アドレスレジスタ３１２中に記憶された物理的メモリ値と、比較ユニット３０８を使用して比較され得る。２つの値が同じである場合、クライアントは、それが非常駐ページにアクセスしていると決定する。たとえば、クライアントは、ＧＰＵ１２であり得、それがメモリコントローラ８を通して非常駐ページにアクセスしていると決定し得る。２つの値が異なる場合、クライアントは、それが常駐ページにアクセスしていると決定し得る。ただし、特定のメモリロケーション中に記憶された値がデフォルト値に単に偶然に等しくなり得るので、この比較は、単独で、ページが常駐であるという指示を与え得ることを理解されよう。したがって、本開示の他の態様は、指示が正しいこと、たとえば、本明細書で説明する常駐検査を検証するために使用され得る。
【００７７】
[0081]一例では、（図３に示す比較ユニット３０８などの）システムは、物理アドレスがレジスタ中に記憶されたダミーページのアドレス値と同じであるかどうかを決定するために、アドレス、たとえば、ページテーブル（ＰＴＥ３０６）中の物理アドレスレジスタ３１２を、レジスタ、たとえば、フォールトなし／常駐でないページアドレスレジスタＮＦアドレスレジスタ３１０）中に記憶されたダミーページのアドレス値と比較し得る。このようにして、システムは、ページが常駐であるか、または非常駐であるかを決定し得る。
【００７８】
[0082]概して、すべての非常駐ページのために、単一の共通のダミーページが使用され得る。したがって、アクセスされているページの物理アドレスがＮＦアドレスレジスタ３１０で中のアドレス値のうちの１つに一致する場合、ページは非常駐である。ページに対する読み出しは、通常通り進行し得る。言い換えれば、ダミーページ中に記憶されたデータ、たとえば、デフォルト値が、たとえば、メモリ１０中にダミーページのために確保されたメモリから読み取られ得る。これは、適切なデフォルト値が、概して、ダミーページに書き込まれており、これらの値が、非常駐ページにアクセスしようと試みるシステムによって読み取られることになるからである。試みられた書き込みはドロップされるべきである。この場合も、試みられた書き込みについてのデータは、失われることになり、データが後で必要とされる場合、データを再計算する必要があり得る。しかしながら、複数の非常駐ページによって使用され得るダミー値を含むページ以外の非常駐ページについての情報を記憶するためにメモリロケーションが割り振られていないので、これは、概して必要である。さらに、一例では、ページが非常駐ページであることを示すレジスタ中の値に、アクセスされているページが一致するとき、常駐検査は偽を返すべきである。たとえば、シェーダプログラムを実行しているＧＰＵは、ＭＭＵに常駐検査を要求し得る。ＧＰＵが常駐検査を要求すると、ＭＭＵは、たとえば、タイル（複数のメモリページ）がメモリ中で常駐であるかどうかを決定するために、常駐マップを検査し得る。タイルが非常駐であると常駐マップの検査が返す場合、メモリから値をフェッチするのではなく、シェーダ中のデフォルト値が使用され得る。
【００７９】
[0083]この解決策のいくつかの例の利点は、読み出しに対してページフォールトを作成するのではなく、非常駐ページが「ダミーページ」に透過的にマッピングされること、および「特殊な」処理が書き込みに対してのみ必要とされることである。この解決策のいくつかの例の別の利点は、デフォルト値でページを満たすことをソフトウェアが担当し得るので、デフォルト値がプログラム可能であり得ることである。
【００８０】
[0084]いくつかの例では、ＤＸ１１特徴、すなわち、タイルリソースはまた、リソースのタイル（複数のメモリページ）が常駐であるかどうかをグラフィックスシェーダプログラムが決定する方法を必要とし得る。上記で説明したように、すべての非常駐ページのために、適切なデフォルト値で満たされたダミーページが使用され得る。場合によっては、ただし、これらの非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、正しいデフォルト値を常に返すことをダミーページに依拠し得ない。ページが常駐であるかどうかをシェーダプログラムが決定することを可能にするために別個の常駐マップも必要とされる。そのような例は、そのテクスチャからの読み出しが発生し得るかどうかを決定するために常駐マップを検査し得る。タイルが非常駐であると常駐マップの検査が返す場合、タイルテクスチャから値をフェッチするのではなく、シェーダ中のデフォルト値が使用され得る。
【００８１】
[0085]様々な例では、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法が提供される。さらに、ページが非常駐であるときをクライアント、たとえば、ＧＰＵ１２に知らせる様々な方法が提供される。非常駐であるページがアクセスされているときにクライアントが何を行うかは、変動し得、概して、クライアントの必要によって規定され得る。
【００８２】
[0086]たとえば、ある場合には、一部常駐テクスチャが使用され得る。一部常駐テクスチャは、メモリ中に部分的に記憶される。たとえば、テクスチャの粒状度レベルの全部ではないが一部がメモリ中に記憶され得る。粒状度は、特定のレンダリングのために与えられ得るテクスチャのための詳細さのレベルを指す。概して、所与のテクスチャが、３Ｄピクチャの２Ｄレンダリングにおいてより遠く離れていると考えられれば考えられるほど、テクスチャにおいてより低い詳細さが使用され得る。
【００８３】
[0087]テクスチャは、それの一部を記憶するために使用されるメモリのサイズよりも大きくなり得る。たとえば、粒状度のあらゆるレベルは、全体として、それの一部、たとえば、１つまたは複数の粒状度レベルを記憶するために使用されるメモリのサイズよりも大きくなり得る。ただし、テクスチャの一部、たとえば、１つまたは複数の粒状度レベルがメモリ中に記憶され得る。したがって、テクスチャの一部が常駐であるか、または非常駐であるのかを決定するために常駐検査が使用され得る。テクスチャの非常駐部分はデフォルト値を返し得る。
【００８４】
[0088]場合によっては、非常駐であるテクスチャ粒状度レベルではなく、常駐であるテクスチャ粒状度レベルが使用され得る。したがって、そのような例では、クライアントは、より高いミップマップレベル（ＭＩＰレベル）をもつより粗いテクスチャにフォールバックし得、ここで、ピクセルのサイズは、所与のテクスチャについてより小さくなり、したがって、テクスチャはより粗くなる。ミップマップは、同じ画像を表すアレイの順序集合であり、各アレイは、前のアレイよりも低い解像度を有する。たとえば、０のミップマップレベル（ＭＩＰレベル）は、最も高い解像度の画像のためのものであり得、１のＭＩＰレベルは、２番目に高い解像度の画像のためのものであり得、以下同様であり、ここで、最高のＭＩＰレベルは、最も粗い解像度をもつ画像のためのものである（上記の表１を参照）。より粗いテクスチャを使用することによって、テクスチャの詳細さがより低いバージョンが、より少ないメモリを使用して記憶され得る。したがって、一部常駐テクスチャのより粗いバージョン自体が、テクスチャの常駐部分であり得る。いくつかの例では、所与のテクスチャのために必要とされる詳細さのレベル（ＬＯＤ）に応じて、一部常駐テクスチャのより粗いバージョンが許容され得る。いくつかの例では、テクスチャユニットは、所与のテクスチャについて複数の異なる粗さレベルから表示される粗さのレベルを選択し得る。テクスチャユニットは、別個のハードウェアであり得るか、またはピクセルシェーダまたは他のシェーダの一部であり得る。本明細書で説明する例は、概して、「フェイルセーフ」を提供し、したがって、非常駐ページについてページフォールトは発生しない。
【００８５】
[0089]図４は、本開示の、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別するための技法を実行し得る例示的なグラフィックスパイプラインを示す概念図である。いくつかの例では、グラフィックスパイプラインは、Ｍｉｃｒｏｓｏｆｔ（登録商標）ＤｉｒｅｃｔＸ（ＤＸ）１１グラフィックスパイプラインに対応し得る。図４に示すように、例示的なグラフィックスパイプラインは、リソースブロック４２と複数の処理段階とを含む。複数の処理段階は、入力アセンブラ（ＩＡ）段階４４と、頂点シェーダ（ＶＳ）段階４６と、ハルシェーダ（ＨＳ）段階４８と、テッセレータ段階５０と、ドメインシェーダ（ＤＳ）段階５２と、形状シェーダ（ＧＳ）段階５４と、ラスタライザ段階５６と、ピクセルシェーダ（ＰＳ）段階５８と、出力統合器段階６０とを含む。ＨＳ段階４８、テッセレータ段階５０、およびドメインシェーダ段階５２は、グラフィックスパイプラインのテッセレーション段階６２を形成し得る。
【００８６】
[0090]本明細書で説明するように、いくつかの例は、グラフィックスシェーダプログラム、たとえば、ＶＳ段階４６、ＨＳ段階４８、ＤＳ段階５２、ＧＳ段階５４、ＰＳ段階５８、または他の段階が、リソースのタイル（複数のメモリページ）が常駐であるかどうかを決定するための方法を与える。リソースのタイルは、メモリ１０などのメモリ中に記憶されるとき、常駐である。リソースのタイルは、メモリ中に記憶されないとき、非常駐である。
【００８７】
[0091]いくつかの例では、すべての非常駐ページのために、適切なデフォルト値で満たされたダミーページが使用され得る。ダミーページは、任意の非常駐ページへの読み出しが試みられるときに読み取られ得るメモリ、たとえば、メモリ１０の領域を与えるために使用され得るメモリページである。ダミーページ中に記憶され得るデフォルト値は、すべての０の値、すべて１の値、または任意の他の所定の値などの任意の所定の値であり得る。既知の所定の値をデフォルト値として使用することによって、ページが非常駐ページであり得るという指示を読み出しが与えることが可能になり得る。いくつかの例では、ランダム値、前の書き込みからの残った値、または任意の他の値が代わりに使用され得る。そのような例では、所定の値が使用されないので、指示が与えられないことがある。
【００８８】
[0092]場合によっては、非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、たとえば、書き込みを競合することが可能になる場合、正しいデフォルト値を常に返すことをダミーページに依拠し得ない。また、ページが常駐であるかどうかを決定するために、シェーダプログラム、たとえば、シェーダ段階４６、４８、５２、５４、５８が、たとえば、ＧＰＵ１２上で動作することを可能にするために、別個の常駐マップが使用され得る。概して、ページが常駐であるかどうかを決定するために、任意のシェーダプログラムが本明細書で説明するように相互作用し得る。一般に、すべてのシェーダプログラムは、メモリアクセスを有する。常駐マップは、メモリコントローラ８の一部であり得、または、たとえば、メモリコントローラ８によってメモリ１０中に記憶され得る。そのような例では、ＧＰＵ１２または、たとえば、ＧＰＵ１２上で動作するシェーダプログラムは、特定のページからの読み出しが常駐であるか、または非常駐であるかを決定するために常駐マップを検査し得る。いくつかの例では、テクスチャの全部または一部が、メモリ１０中に記憶され得る。テクスチャの一部のみが、たとえば、メモリ１０中に保存される場合、テクスチャの一部が常駐であり、テクスチャプログラムの一部が非常駐である。たとえば、テクスチャの異なる粗さレベルがメモリ１０中に記憶され得るが、テクスチャの他の粗さレベルがメモリ１０中に記憶されないことがある。したがって、常駐マップは、特定のピクチャのレンダリングのために必要とされ得る特定のテクスチャの特定の粗さレベルが発生するかどうかを決定するために常駐検査を実行するために使用され得る。テクスチャの必要とされる粗さレベルを含んでいるタイルが非常駐であると常駐マップの検査が返す場合、タイルテクスチャから値をフェッチするのではなく、シェーダ段階４６、４８、５２、５４、５８中のデフォルト値が使用され得る。いくつかの例は、読み出しが非常駐ページに対するものであるとき、一部常駐テクスチャの異なる粗さレベルを読み出し得る。
【００８９】
[0093]図４に示すように、パイプライン段階の多くもリソースブロックに通信可能に結合され得る。リソースブロックは、バッファおよびテクスチャなどのメモリリソースを含み得る。残りのブロックは、パイプラインステージを示す。角が直線のブロックは、固定機能のパイプライン段階を表し、角が丸いブロックは、プログラマブル段階を表す。プログラマブル段階の各々は、特定のタイプのシェーダプログラムを実行するように構成され得る。たとえば、頂点シェーダ段階４６は、頂点シェーダプログラムを実行するように構成され得、ハルシェーダ段階４８は、ハルシェーダプログラムを実行するように構成され得る、等々である。異なるタイプのシェーダプログラムの各々は、ＧＰＵの共通シェーダユニット上、または１つもしくは複数の特定のタイプのシェーダプログラムを実行するための専用である１つもしくは複数の専用シェーダユニット上のいずれかで実行し得る。ハルシェーダ段階４８、テッセレータ段階５０、およびドメインシェーダ段階５２は、テッセレーション段階６２と総称され得る。
【００９０】
[0094]ＤｉｒｅｃｔＸ１１グラフィックスパイプラインの一般的な動作に関する追加の背景情報は、２０１３年５月９日現在、ｈｔｔｐ：／／ｍｓｄｎ．ｍｉｃｒｏｓｏｆｔ．ｃｏｍ／ｅｎ−ｕｓ／ｌｉｂｒａｒｙ／ｗｉｎｄｏｗｓ／ｄｅｓｋｔｏｐ／ｆｆ４７６８８２％２８ｖ＝ｖｓ．８５％２９．ａｓｐｘに発見され得、参照により本明細書に組み込まれる。ＤｉｒｅｃｔＸ１１グラフィックスパイプラインの一般的な動作に関するさらなる情報は、Ｚｉｎｋら、「Ｐｒａｃｔｉｃａｌ  Ｒｅｎｄｅｒｉｎｇ  ＆  Ｃｏｍｐｕｔａｔｉｏｎ  ｗｉｔｈ  Ｄｉｒｅｃｔ３Ｄ  １１」、ＣＲＣ  Ｐｒｅｓｓ（２０１１年）に発見され得、その内容の全体が参照により本明細書に組み込まれる。
【００９１】
[0095]図５は、本開示で説明する１つまたは複数の例による、例示的な方法を示すフローチャートである。いくつかの例では、メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、非常駐ページにアクセスしようと試み得る。非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し得る。いくつかの例では、アクセスは、たとえば、読み出しを実行するものであり得る（５５０）。非常駐ページは、それに関連する物理的メモリロケーションを有しないページである。逆に、常駐ページは、それに関連する物理的メモリロケーションを有するページである。
【００９２】
[0096]メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、特定の非常駐ページがページフォールトを生成すべきでないことを示すビットまたはフラグに基づいて非常駐ページがページフォールトを生じるべきでないことを決定し得る（５５２）。タイルリソースと呼ばれるＤＸ１１における新しい特徴は、フォールトを生じることなしにグラフィックス動作（すなわち、テクスチャの読み出し、カラーバッファの書き込み）を介してリソースの非常駐ページにアクセスすることを可能にする。したがって、フォールトを生じる非常駐ページとフォールトを生じない非常駐ページとの間を識別することが必要であり得る。ビットにより、クライアントは、ページが非常駐であるときを知ることが可能になる。
【００９３】
[0097]メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、非常駐ページのアクセスが読み出しであり、非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示の返信を受信し、またデフォルト値を返し得る（５５４）。デフォルト値は、レジスタ、メモリ、または他のロケーションからのものであり得る。デフォルト値は、すべて０の値、すべて１の値、または何らかの他のデフォルト値などの所定のビット値であり得る。これらのデフォルト値は、読み出しによって返され得る。デフォルト値は、すべての非常駐ページのアクセスのために使用され得るあらかじめ定義する値を与える。図示の例では、非常駐ページへの読み出しが発生する場合、値は０になる。ただし、これは、ページが非常駐であることを決定的に示さない。デフォルト値、たとえば、０、１などは、ありがちな値であり得、常駐ページがデフォルト値を偶然に含んでいる可能性があり得る。ＭＭＵまたは他のプロセッサは、たとえば、フォールトを生じるべきでない非常駐ページがアクセスされたことを、読み出しを実行するデバイスに示すためにステータスまたは肯定応答（ＡＣＫ）を使用し得る。一例では、読み出しを実行し得るが、概して書き込みを実行しないテクスチャユニットは、フォールトを生じるべきでない非常駐ページをそれまたは別のプロセッサが読み出すときにデフォルト値を返し得る。さらに、一例では、クライアントは、常駐検査を実行し得る。
【００９４】
[0098]いくつかの例では、メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止し得る（５５６）。いくつかの例では、非常駐ページのためにメモリが与えられないので、書き込みが中止し得る。
【００９５】
[0099]図６は、本開示で説明する１つまたは複数の例による、例示的な方法を示すフローチャートである。メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、非常駐ページにアクセスし得る（６５０）。非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し得る。デフォルト値を含んでいるメモリページは、ダミーページと呼ばれることもあり、ダミー値を含んでいると言われ得る。これらのダミー値は、ページが常駐であるかどうかを示し得る。たとえば、ダミーページにアクセスするとき、読み出し要求のバイトアドレスがダミーページにマッピングされ得、それがダミー値でない限り、たとえば０ｘ０の代わりに、そこに記憶された値が返されることになる。
【００９６】
[0100]メモリコントローラ８、ＧＰＵ１２、または他のプロセッサが非常駐ページにアクセスしようと試み得るとき、メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、メモリ読み出しが変換しなかったこと、およびデフォルト値を返すこと、の返された指示を受信し得る（６５２）。これは、たとえば、メモリコントローラ８、ＧＰＵ１２、または他のプロセッサが非常駐ページからの読み出しを試みるときに発生し得る。非常駐ページは、ページフォールトを生じるべきでない。ページに対する読み出しは、通常通り進行し得る。これは、適切なデフォルト値が、ダミーページにすでに書き込まれることになり、これらの値が、非常駐ページにアクセスしようと試みるシステムによって読み取られることになるからである。仮想アドレスが物理アドレスにマッピングしないとき、メモリ読み出しは変換しない。
【００９７】
[0101]メモリコントローラ８、ＧＰＵ１２、または他のプロセッサは、あるいは、場合によっては、メモリ自体は、非常駐ページのアクセスが書き込みであり、非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止し得る（６５４）。場合によっては、ただし、これらの非常駐ページのいずれかに書き込みが発生する場合、それはデフォルト値を上書きすることになる。したがって、書き込みを続けることが可能になる場合、正しいデフォルト値を常に返すことをダミーページに依拠することができなくなるであろう。
【００９８】
[0102]本開示で説明した技法は、少なくとも部分的に、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。たとえば、説明する技法の様々な態様は、１つまたは複数のマイクロプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路を含む、１つまたは複数のプロセッサ、ならびにそのような構成要素の任意の組合せ内で実装され得る。「プロセッサ」または「処理回路」という用語は、概して、単独で、あるいは他の論理回路、または処理を実施する個別ハードウェアなどの他の等価回路との組合せで上記の論理回路のいずれかを指すことがある。
【００９９】
[0103]そのようなハードウェア、ソフトウェア、およびファームウェアは、本開示で説明した様々な動作および機能をサポートするために、同じデバイス内で、または別々のデバイス内で実装され得る。さらに、説明したユニット、モジュールまたは構成要素のいずれも、個別であるが相互運用可能な論理デバイスとして、一緒にまたは別々に実装され得る。モジュールまたはユニットとしての様々な機能の図は、様々な機能的態様を強調するものであり、そのようなモジュールまたはユニットが別々のハードウェアまたはソフトウェア構成要素によって実現されなければならないことを必ずしも暗示するとは限らない。そうではなく、１つまたは複数のモジュールあるいはユニットに関連する機能は、別々のハードウェア、ファームウェア、および／またはソフトウェア構成要素によって実行されるか、あるいは共通または別々のハードウェアもしくはソフトウェア構成要素内に組み込まれることがある。
【０１００】
[0104]また、本開示で説明した技法は、命令を記憶するコンピュータ可読記憶媒体などのコンピュータ可読媒体中に記憶、実施または符号化され得る。コンピュータ可読媒体中に埋め込まれたまたは符号化された命令は、たとえば、その命令が１つまたは複数のプロセッサによって実行されたとき、１つまたは複数のプロセッサに本明細書で説明した技法を実施させ得る。コンピュータ可読記憶媒体は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、プログラマブル読み出し専用メモリ（ＰＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ）、電子的に消去可能なプログラマブル読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、ハードディスク、ＣＤ−ＲＯＭ、フロッピー（登録商標）ディスク、カセット、磁気媒体、光媒体、または有形である他のコンピュータ可読記憶媒体を含み得る。
【０１０１】
[0105]コンピュータ可読媒体は、上記に記載した有形記憶媒体などの有形記憶媒体に対応するコンピュータ可読記憶媒体を含み得る。コンピュータ可読媒体はまた、たとえば、通信プロトコルに従ってある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む通信媒体を備え得る。このようにして、「コンピュータ可読媒体」という句は、概して、（１）非一時的である有形コンピュータ可読記憶媒体、および（２）一時的な信号または搬送波などの非有形コンピュータ可読通信媒体に対応し得る。
【０１０２】
[0106]様々な態様および例について説明した。しかしながら、以下の特許請求の範囲から逸脱することなく本開示の構造または技法に変更を行うことができる。
【図１】
2016534486.tif 000004
【図２】
2016534486.tif 000005
【図３】
2016534486.tif 000006
【図４】
2016534486.tif 000007
【図５】
2016534486.tif 000008
【図６】
2016534486.tif 000009
【手続補正書】
【提出日】平成28年6月3日(2016.6.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
非常駐ページを処理する方法であって、
前記方法は、メモリ管理ユニット（ＭＭＵ）を用いて、プロセッサが前記非常駐ページにアクセスしようと試みたと決定することを備え、
前記非常駐ページは、メモリ内のページにマッピングしないページを備え、
前記方法は、
前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記ＭＭＵを用いて、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定することと、
前記ページフォールトが生じないとの決定に応じて、前記ＭＭＵを用いて、前記プロセッサへと、メモリ読み出しが変換しなかったという指示と、前記非常駐ページへのアクセスが読み出しであるときにはデフォルト値へのアドレスとを返すことと、
前記ページフォールトが生じるとの決定に応じて、前記プロセッサを用いて、前記ページフォールトを示す情報を受け取ることと
を備える方法。
【請求項２】
前記ページフォールトが生じるかどうかを決定することは、前記ページフォールトが生じるかどうかをビットまたはフラグに基づいて決定することを備える、請求項１に記載の方法。
【請求項３】
前記デフォルト値が返されるとき、常駐検査を実行することをさらに備える、請求項１に記載の方法。
【請求項４】
前記アクセスが、一部常駐テクスチャへの読み出しを備える、請求項１に記載の方法。
【請求項５】
前記一部常駐テクスチャの粗さレベルを読み出すことをさらに備える、請求項４に記載の方法。
【請求項６】
前記プロセッサがアクセスしようと試みたと決定することが、前記プロセッサがカラーバッファリングのために前記非常駐ページにアクセスしようと試みたと決定することを備える、請求項１に記載の方法。
【請求項７】
非常駐ページを処理する方法であって、
前記方法は、メモリ管理ユニット（ＭＭＵ）を用いて、プロセッサが前記非常駐ページにアクセスしようと試みたと決定することを備え、
前記非常駐ページは、メモリ内のページにマッピングしないページを備え、
前記方法は、
前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記ＭＭＵを用いて、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定することと、
前記ページフォールトが生じないとの決定に応じて、前記プロセッサによる前記非常駐ページの書き込みアクセスを中止することと、
前記ページフォールトが生じるとの決定に応じて、前記プロセッサを用いて、前記ページフォールトを示す情報を受け取ることと
を備える方法。
【請求項８】
前記非常駐ページへのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記方法は、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することをさらに備え、
前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定することは、前記プロセッサが前記非常駐ページにアクセスしようと試みたと前記比較に基づいて決定することを備える、
請求項７に記載の方法。
【請求項９】
デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され
る、請求項８に記載の方法。
【請求項１０】
前記非常駐ページへのアドレスは、デフォルト値を含んでいるメモリページを指し、
ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、
請求項７に記載の方法。
【請求項１１】
中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することをさらに備える、請求項７に記載の方法。
【請求項１２】
非常駐ページを処理するための装置であって、
前記装置は、
複数のページを備えるメモリと、
前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサとを備え、
前記非常駐ページは、前記メモリ内のページにマッピングしないページを備え、
前記装置は、メモリ管理ユニット（ＭＭＵ）を備え、
前記ＭＭＵは、
前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定することと、
前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定することと、
前記ページフォールトが生じないとの決定に応じて、前記プロセッサへと、メモリ読み出しが変換しなかったという指示と、前記非常駐ページのアクセスが読み出しであるときにはデフォルト値へのアドレスとを返すことと
を行うように構成され、
前記プロセッサは、前記ページフォールトが生じるとの決定に応じて、前記ページフォールトを示す情報を受け取るように構成される、
装置。
【請求項１３】
前記ＭＭＵは、前記ページフォールトが生じるかどうかをビットまたはフラグに基づいて決定するように構成される、請求項１２に記載の装置。
【請求項１４】
前記プロセッサは、前記デフォルト値が返されるとき、常駐検査を実行することを行うようにさらに構成された、請求項１２に記載の装置。
【請求項１５】
前記非常駐ページにアクセスしようと試みるために、前記プロセッサが、一部常駐テクスチャへの読み出しを実行することを行うようにさらに構成された、請求項１２に記載の装置。
【請求項１６】
前記プロセッサは、前記一部常駐テクスチャの粗さレベルを読み出すことを行うようにさらに構成された、請求項１５に記載の装置。
【請求項１７】
前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定するために、前記プロセッサが、カラーバッファリングのために前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定することを行うようにさらに構成された、請求項１２に記載の装置。
【請求項１８】
非常駐ページを処理するための装置であって、
前記装置は、
複数のページを備えるメモリと、
前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサとを備え、
前記非常駐ページは、前記メモリ内のページにマッピングしないページを備え、
前記装置は、メモリ管理ユニット（ＭＭＵ）を備え、
前記ＭＭＵは、
前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定することと、
前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定することと
を行うように構成され、
前記プロセッサは、前記ページフォールトが生じないとの決定に応じて、前記非常駐ページの前記アクセスが書き込みであるときには、書き込みを中止するように構成され、
前記プロセッサは、前記ページフォールトが生じるとの決定に応じて、前記ページフォールトを示す情報を受け取るように構成される、
装置。
【請求項１９】
前記非常駐ページへのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記ＭＭＵが、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することを行うようにさらに構成され、
前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定するために、前記ＭＭＵは、前記プロセッサが前記非常駐ページにアクセスしようと試みたと前記比較に基づいて決定するように構成される、
請求項１８に記載の装置。
【請求項２０】
デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶される、請求項１９に記載の装置。
【請求項２１】
前記非常駐ページへのアドレスは、デフォルト値を含んでいるメモリページを指し、
ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、
請求項１８に記載の装置。
【請求項２２】
前記プロセッサは、中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することを行うようにさらに構成された、請求項１８に記載の装置。
【請求項２３】
非常駐ページを処理するための装置であって、
前記装置は、
プロセッサと、
メモリ管理ユニット（ＭＭＵ）と
を備え、
前記ＭＭＵは、前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定するための手段を備え、
前記非常駐ページは、メモリ内のページにマッピングしないページを備え、
前記ＭＭＵは、
前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定するための手段と、
前記ページフォールトが生じないとの決定に応じて、前記プロセッサへと、メモリ読み出しが変換しなかったという指示と、前記非常駐ページの前記アクセスが読み出しであるときには前記プロセッサに対するデフォルト値のためのアドレスとを返すための手段と
を備え、
前記プロセッサは、前記ページフォールトが生じるとの決定に応じて前記ページフォールトを示す情報を受け取るための手段を備える、装置。
【請求項２４】
前記ページフォールトが生じるかどうかを決定するための手段が前記ページフォールトが生じるかどうかをビットまたはフラグに基づいて決定するための手段を備える、請求項２３に記載の装置。
【請求項２５】
デフォルト値が返されるとき、常駐検査を実行するための手段をさらに備える、請求項２３に記載の装置。
【請求項２６】
非常駐ページを処理するための装置であって、
前記装置は、
プロセッサと、
メモリ管理ユニット（ＭＭＵ）と
を備え、
前記ＭＭＵは、前記プロセッサが非常駐ページにアクセスしようと試みたと決定するための手段を備え、
前記非常駐ページは、メモリ内のページにマッピングしないページを備え、
前記ＭＭＵは、前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定するための手段を備え、
前記プロセッサは、
前記ページフォールトが生じないとの決定に応じて、前記非常駐ページの書き込みアクセスを中止するための手段と、
前記ページフォールトが生じるとの決定に応じて、前記ページフォールトを示す情報を受け取るための手段と
を備える、装置。
【請求項２７】
前記非常駐ページへのアドレスは、デフォルト値を含んでいるメモリページを指し、
前記装置は、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較するための手段をさらに備え、
前記プロセッサが前記非常駐ページにアクセスしようと試みたと決定するための手段は、前記プロセッサが前記非常駐ページにアクセスしようと試みたと前記比較に基づいて決定するための手段を備える、
請求項２６に記載の装置。
【請求項２８】
デフォルト値を含んでいる前記メモリページの前記アドレス値を記憶するための手段をさらに備える、請求項２７に記載の装置。
【請求項２９】
中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算するための手段をさらに備える、請求項２６に記載の装置。
【請求項３０】
非一時的コンピュータ可読記憶媒体であって、
前記非一時的コンピュータ可読記憶媒体は、実行時に、メモリ管理ユニット（ＭＭＵ）に、プロセッサが非常駐ページにアクセスしようと試みたと決定させる命令を記憶し、
前記非常駐ページは、メモリ内のページにマッピングしないページを備え、
前記非一時的コンピュータ可読記憶媒体は、実行時に、
前記プロセッサが前記非常駐ページにアクセス使用と試みたとの決定に応じて、前記ＭＭＵに、前記非常駐ページへのアクセスからページフォールトが生じるかどうかを決定させ、
前記ページフォールトが生じないとの決定に応じて、前記ＭＭＵに、前記プロセッサへと、メモリ読み出しが変換しなかったという指示と、前記非常駐ページの前記アクセスが読み出しであるときにはデフォルト値へのアドレスを返させ、
前記ページフォールトが生じるとの決定に応じて、前記プロセッサに、前記ページフォールトを示す情報を受け取らせる、
命令を記憶する、非一時的コンピュータ可読記憶媒体。
【請求項３１】
非一時的コンピュータ可読記憶媒体であって、
前記非一時的コンピュータ可読記憶媒体は、実行時に、メモリ管理ユニット（ＭＭＵ）に、プロセッサが非常駐ページにアクセスしようと試みたと決定させる命令を記憶し、
前記非常駐ページは、メモリ内のページにマッピングしないページを備え、
前記非一時的コンピュータ可読記憶媒体は、実行時に、
前記プロセッサが前記非常駐ページにアクセスしようと試みたとの決定に応じて、前記ＭＭＵに、前記非常駐ページのアクセスからページフォールトが生じるかどうかを決定させ、
前記ページフォールトが生じないとの決定に応じて、前記プロセッサに、前記非常駐ページの書き込みアクセスを中止させ、
前記ページフォールトが生じるとの決定に応じて、前記プロセッサに、前記ページフォールトを示す情報を受け取らせる、
命令を記憶する、非一時的コンピュータ可読記憶媒体。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０２
【補正方法】変更
【補正の内容】
【０１０２】
[0106]様々な態様および例について説明した。しかしながら、以下の特許請求の範囲か
ら逸脱することなく本開示の構造または技法に変更を行うことができる。  
以下に、本願の出願当初の特許請求の範囲に記載された発明が付記される。 
［１］非常駐ページを処理する方法であって、前記方法は、前記非常駐ページにアクセスしようと試みることを備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記方法は、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すこととを備える方法。
［２］前記インジケータがビットまたはフラグを備える、［１］に記載の方法。
［３］前記デフォルト値が返されるとき、常駐検査を実行することをさらに備える、［１］に記載の方法。
［４］前記アクセスが、一部常駐テクスチャへの読み出しを備える、［１］に記載の方法。
［５］前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことをさらに備える、［４］に記載の方法。
［６］前記アクセスを試みることが、カラーバッファリングのために前記非常駐ページへのアクセスを試みることを備える、［１］に記載の方法。
［７］非常駐ページを処理する方法であって、前記方法は、前記非常駐ページにアクセスしようと試みることを備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを備える方法。
［８］物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することをさらに備える、［７］に記載の方法。
［９］デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定する、［８］に記載の方法。
［１０］ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、［７］に記載の方法。
［１１］中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することをさらに備える、［７］に記載の方法。
［１２］非常駐ページを処理するための装置であって、前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記プロセッサは、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すこととを行うように構成される、装置。
［１３］前記インジケータがビットまたはフラグを備える、［１２］に記載の装置。
［１４］前記プロセッサは、デフォルト値が返されるとき、常駐検査を実行することを行うようにさらに構成された、［１２］に記載の装置。
［１５］前記非常駐ページにアクセスするためにアクセスしようと試みるために、前記プロセッサが、一部常駐テクスチャへの読み出しを実行することを行うようにさらに構成された、［１２］に記載の装置。
［１６］前記プロセッサは、前記読み出しが非常駐ページに対するものであるとき、前記一部常駐テクスチャの異なる粗さレベルを読み出すことを行うようにさらに構成された、［１５］に記載の装置。
［１７］前記非常駐ページにアクセスしようと試みるために、前記プロセッサが、カラーバッファリングのために前記非常駐ページにアクセスすることを行うようにさらに構成された、［１２］に記載の装置。
［１８］非常駐ページを処理するための装置であって、前記装置は、前記非常駐ページにアクセスしようと試みることを行うように構成されたプロセッサを備え、前記非常駐ページのアドレスがデフォルト値を含んでいるメモリページを指し、前記プロセッサは、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すことと、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行うように構成される、装置。
［１９］前記プロセッサが、物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較することを行うようにさらに構成された、［１８］に記載の装置。
［２０］デフォルト値を含んでいる前記メモリページの前記アドレス値がレジスタ中に記憶され、前記プロセッサが、前記レジスタ中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定することを行うようにさらに構成された、［１９］に記載の装置。
［２１］ページが常駐であるか、または非常駐であるかを前記デフォルト値が示す、［１８］に記載の装置。
［２２］前記プロセッサは、中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算することを行うようにさらに構成された、［１８］に記載の装置。
［２３］非常駐ページを処理するための装置であって、前記装置は、前記非常駐ページにアクセスしようと試みるための手段を備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記装置は、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定するための手段と、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、デフォルト値を返すための手段とを備える、装置。
［２４］前記インジケータがビットまたはフラグを備える、［２３］に記載の装置。
［２５］デフォルト値が返されるとき、常駐検査を実行するための手段をさらに備える、［２３］に記載の装置。
［２６］ページが非常駐ページであることをクライアントに通知するための装置であって、前記装置は、非常駐ページにアクセスするための手段を備え、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記装置は、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すための手段と、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止するための手段とを備える、装置。
［２７］物理アドレスがデフォルト値を含んでいる前記メモリページのアドレス値と同じであるかどうかを決定するために、ページテーブル中のアドレスを、デフォルト値を含んでいる前記メモリページの前記アドレス値と比較するための手段をさらに備える、［２６］に記載の装置。
［２８］デフォルト値を含んでいる前記メモリページの前記アドレス値を記憶するためのレジスタ手段と、前記レジスタ手段の中に記憶された前記デフォルト値とデフォルト値を含んでいる前記メモリページの前記アドレス値との間の一致に基づいて、アクセスされているページが非常駐であると決定するための手段とをさらに備える、［２７］に記載の装置。
［２９］中止された書き込みから失われたデータが後で必要とされる場合、前記データを再計算するための手段をさらに備える、［２６］に記載の装置。
［３０］非一時的コンピュータ可読記憶媒体であって、前記非一時的コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記非一時的コンピュータ可読記憶媒体は、前記１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、前記非常駐ページがページフォールトを生成すべきでないことを示すインジケータを検査することに基づいて前記非常駐ページがページフォールトを生じるべきでないと決定することと、前記非常駐ページの前記アクセスが読み出しであり、前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという指示を返し、前記デフォルト値を返すこととを行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
［３１］非一時的コンピュータ可読記憶媒体であって、前記非一時的コンピュータ可読記憶媒体は、１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、非常駐ページにアクセスしようと試みることを行わせる命令を記憶し、前記非常駐ページのアドレスは、デフォルト値を含んでいるメモリページを指し、前記非一時的コンピュータ可読記憶媒体は、前記１つまたは複数のプロセッサによる実行時に、前記１つまたは複数のプロセッサに、前記非常駐ページの前記アクセスが読み出しであって前記非常駐ページがページフォールトを生じるべきでないとき、メモリ読み出しが変換しなかったという、前記デフォルト値を返す指示を返すことと、前記非常駐ページの前記アクセスが書き込みであって前記非常駐ページがページフォールトを生じるべきでないとき、書き込みを中止することとを行わせる命令を記憶する、非一時的コンピュータ可読記憶媒体。
【国際調査報告】
2016534486.tif 000010
2016534486.tif 000011
2016534486.tif 000012