(57)【特許請求の範囲】
【請求項１】
処理ユニットによって、グラフィックス処理のための第１のデータタイプの複数のグラフィクスデータのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプの複数のグラフィクスデータのためにアドレスの第２の連続範囲を割り当てることであって、前記第１のデータタイプと前記第２のデータタイプとが異なるデータタイプである、割り当てることと、
前記処理ユニットによって、前記アドレスの第１の連続範囲内にアドレスがある複数のブロック内に、前記第１のデータタイプのグラフィックスデータ、または前記第１のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、
前記処理ユニットによって、前記アドレスの第２の連続範囲内にアドレスがある複数のブロック内に、前記第２のデータタイプのグラフィックスデータ、または前記第２のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、
前記処理ユニットによって、共通メモリキャッシュの複数のキャッシュラインに前記第１のデータタイプの前記グラフィックスデータと前記第２のデータタイプの前記グラフィックスデータとを記憶することとを備える方法。
【請求項２】
前記アドレスの第１の連続範囲および第２の連続範囲が、ストレージデバイスアドレスの第１の連続範囲および第２の連続範囲と、入出力メモリ管理ユニット（ＩＯＭＭＵ）アドレスの第１の連続範囲および第２の連続範囲とのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項３】
前記アドレスの第１の連続範囲内にアドレスがある前記ブロックと、前記アドレスの第２の連続範囲内にアドレスがある前記ブロックとが、ストレージデバイス内のストレージブロックと、入出力メモリ管理ユニット（ＩＯＭＭＵ）内のアドレスブロックとのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項４】
前記処理ユニットによって、前記アドレスの第１の連続範囲に基づいて前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にすることをさらに備える、請求項１に記載の方法。
【請求項５】
前記処理ユニットによって、前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にあるアドレスを含むかを判断することをさらに備え、
１つまたは複数のキャッシュラインを無効にすることが、前記アドレスの第１の連続範囲内にある前記アドレスを含むと判断された１つまたは複数のキャッシュラインを無効にすることを備える、請求項４に記載の方法。
【請求項６】
前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にある前記アドレスを含むかを判断することが、前記複数のキャッシュラインのうちの前記キャッシュラインの各々のアドレスフィールドを前記アドレスの第１の連続範囲と比較することを備える、請求項５に記載の方法。
【請求項７】
前記処理ユニットによって、前記第１のデータタイプの前記グラフィックスデータが変化したかどうかを判断することをさらに備え、
前記アドレスの第１の連続範囲に基づいて前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にすることは、前記第１のデータタイプの前記グラフィックスデータが変化したときに前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にすることを備える、請求項４に記載の方法。
【請求項８】
前記第１のデータタイプおよび前記第２のデータタイプがそれぞれ、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータのうちの少なくとも１つを備える、請求項１に記載の方法。
【請求項９】
前記処理ユニットによって、前記第１のデータタイプの前記グラフィックスデータおよび前記第２のデータタイプの前記グラフィックスデータのうちの少なくとも１つについての要求を受信することであって、前記要求が前記第１のデータタイプまたは前記第２のデータタイプのアドレスを含む、受信することと、
前記処理ユニットによって、前記第１のデータタイプの前記アドレスまたは前記第２のデータタイプの前記アドレスがそれぞれ前記アドレスの第１の連続範囲または前記アドレスの第２の連続範囲内にあるかどうかを判断することと、
前記処理ユニットによって、前記判断に基づいて前記要求を処理することとをさらに備える、請求項１に記載の方法。
【請求項１０】
複数のキャッシュラインを含む共通メモリキャッシュと、
処理ユニットであって、
グラフィックス処理のための第１のデータタイプの複数のグラフィックスデータのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプの複数のグラフィックスデータのためにアドレスの第２の連続範囲を割り当てることであって、前記第１のデータタイプと前記第２のデータタイプとが異なるデータタイプである、割り当てることと、
前記アドレスの第１の連続範囲内にアドレスがある複数のブロック内に、前記第１のデータタイプのグラフィックスデータ、または前記第１のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶し、前記アドレスの第２の連続範囲内にアドレスがある複数のブロック内に、前記第２のデータタイプのグラフィックスデータ、または前記第２のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、
前記共通メモリキャッシュの前記複数のキャッシュラインに前記第１のデータタイプの前記グラフィックスデータと前記第２のデータタイプの前記グラフィックスデータとを記憶することと
を行うように構成された処理ユニットとを備える装置。
【請求項１１】
前記処理ユニットが、プロセッサおよびグラフィックス処理ユニット（ＧＰＵ）のうちの少なくとも１つを備える、請求項１０に記載の装置。
【請求項１２】
前記アドレスの第１の連続範囲および第２の連続範囲が、ストレージデバイスアドレスの第１の連続範囲および第２の連続範囲と、入出力メモリ管理ユニット（ＩＯＭＭＵ）アドレスの第１の連続範囲および第２の連続範囲とのうちの少なくとも１つを備える、請求項１０に記載の装置。
【請求項１３】
ストレージデバイスをさらに備え、
前記アドレスの第１の連続範囲内にアドレスがある前記ブロックと、前記アドレスの第２の連続範囲内にアドレスがある前記ブロックとが、前記ストレージデバイス内のストレージブロックを備える、請求項１０に記載の装置。
【請求項１４】
入出力メモリ管理ユニット（ＩＯＭＭＵ）をさらに備え、
前記アドレスの第１の連続範囲内にアドレスがある前記ブロックと、前記アドレスの第２の連続範囲内にアドレスがある前記ブロックとが、前記ＩＯＭＭＵ内のアドレスブロックを備える、請求項１０に記載の装置。
【請求項１５】
前記処理ユニットが、前記アドレスの第１の連続範囲に基づいて前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にするようにさらに構成された、請求項１０に記載の装置。
【請求項１６】
前記処理ユニットは、前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にあるアドレスを含むかを判断するようにさらに構成され、前記処理ユニットが、前記アドレスの第１の連続範囲内にある前記アドレスを含むと判断された前記１つまたは複数のキャッシュラインを無効にする、請求項１５に記載の装置。
【請求項１７】
前記処理ユニットは、前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にある前記アドレスを含むかを判断するために、前記キャッシュラインのうちの各１つのアドレスフィールドを前記アドレスの第１の連続範囲と比較する、請求項１６に記載の装置。
【請求項１８】
前記処理ユニットは、前記第１のデータタイプの前記グラフィックスデータが変化したかどうかを判断し、前記第１のデータタイプの前記グラフィックスデータが変化したときに前記１つまたは複数のキャッシュラインを無効にする、請求項１５に記載の装置。
【請求項１９】
前記第１のデータタイプおよび前記第２のデータタイプがそれぞれ、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータのうちの少なくとも１つを備える、請求項１０に記載の装置。
【請求項２０】
前記処理ユニットが、前記第１のデータタイプの前記データおよび前記第２のデータタイプの前記データのうちの少なくとも１つについての要求を受信し、前記要求が前記第１のデータタイプまたは前記第２のデータタイプのアドレスを含み、前記処理ユニットは、前記第１のデータタイプの前記アドレスまたは前記第２のデータタイプの前記アドレスがそれぞれ前記アドレスの第１の連続範囲または前記アドレスの第２の連続範囲内にあると判断し、前記処理ユニットが前記判断に基づいて前記要求を処理する、請求項１０に記載の装置。
【請求項２１】
グラフィックス処理のための第１のデータタイプの複数のグラフィックスデータのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプの複数のグラフィックスデータのためにアドレスの第２の連続範囲を割り当てることであって、前記第１のデータタイプと前記第２のデータタイプとが異なるデータタイプである、割り当てることと、
前記アドレスの第１の連続範囲内にアドレスがあるブロック内に、前記第１のデータタイプのグラフィックスデータ、または前記第１のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、
前記アドレスの第２の連続範囲内にアドレスがあるブロック内に、前記第２のデータタイプのグラフィックスデータ、または前記第２のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、
共通メモリキャッシュの複数のキャッシュラインに前記第１のデータタイプの前記グラフィックスデータと前記第２のデータタイプの前記グラフィックスデータとを記憶することとを１つまたは複数の処理ユニットに行わせる命令を備えるコンピュータ可読記憶媒体。
【請求項２２】
前記アドレスの第１の連続範囲および第２の連続範囲が、ストレージデバイスアドレスの第１の連続範囲および第２の連続範囲と、入出力メモリ管理ユニット（ＩＯＭＭＵ）アドレスの第１の連続範囲および第２の連続範囲とのうちの少なくとも１つを備える、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２３】
前記アドレスの第１の連続範囲内にアドレスがある前記ブロックと、前記アドレスの第２の連続範囲内にアドレスがある前記ブロックとが、ストレージデバイス内のストレージブロックと、入出力メモリ管理ユニット（ＩＯＭＭＵ）内のアドレスブロックとのうちの少なくとも１つを備える、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２４】
前記アドレスの第１の連続範囲に基づいて前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にすることを前記１つまたは複数の処理ユニットに行わせる命令をさらに備える、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２５】
前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にあるアドレスを含むかを判断することを前記１つまたは複数の処理ユニットに行わせる命令をさらに備え、
１つまたは複数のキャッシュラインを無効にすることを前記１つまたは複数のプロセッサに行わせる前記命令が、前記アドレスの第１の連続範囲内にある前記アドレスを含むと判断された１つまたは複数のキャッシュラインを無効にすることを前記１つまたは複数の処理ユニットに行わせる命令を備える、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２６】
前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にある前記アドレスを含むかを判断することを前記１つまたは複数の処理ユニットに行わせる前記命令が、前記キャッシュラインのうちの各１つのアドレスフィールドを前記アドレスの第１の連続範囲と比較することを前記１つまたは複数の処理ユニットに行わせる命令を備える、請求項２５に記載のコンピュータ可読記憶媒体。
【請求項２７】
前記第１のデータタイプの前記グラフィックスデータが変化したかどうかを判断することを前記１つまたは複数の処理ユニットに行わせる命令をさらに備え、
前記アドレスの第１の連続範囲に基づいて１つまたは複数のキャッシュラインを無効にすることを前記１つまたは複数の処理ユニットに行わせる前記命令は、前記第１のデータタイプの前記グラフィックスデータが変化したときに前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にすることを前記１つまたは複数の処理ユニットに行わせる命令を備える、請求項２４に記載のコンピュータ可読記憶媒体。
【請求項２８】
前記第１のデータタイプおよび前記第２のデータタイプがそれぞれ、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータのうちの少なくとも１つを備える、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項２９】
前記第１のデータタイプの前記グラフィックスデータおよび前記第２のデータタイプの前記グラフィックスデータのうちの少なくとも１つについての要求を受信することを前記１つまたは複数の処理ユニットに行わせる命令であって、前記要求が前記第１のデータタイプまたは前記第２のデータタイプのアドレスを含む、命令と、
前記第１のデータタイプの前記アドレスまたは前記第２のデータタイプの前記アドレスがそれぞれ前記アドレスの第１の連続範囲または前記アドレスの第２の連続範囲内にあるかどうかを判断することを前記１つまたは複数の処理ユニットに行わせる命令と、
前記判断に基づいて前記要求を処理することを前記１つまたは複数の処理ユニットに行わせる命令とをさらに備える、請求項２１に記載のコンピュータ可読記憶媒体。
【請求項３０】
グラフィックス処理のための第１のデータタイプの複数のグラフィックスデータのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプの複数のグラフィックスデータのためにアドレスの第２の連続範囲を割り当てるための手段であって、前記第１のデータタイプと前記第２のデータタイプとが異なるデータタイプである、割り当てるための手段と、
前記アドレスの第１の連続範囲内にアドレスがあるブロック内に、前記第１のデータタイプのグラフィックスデータ、または前記第１のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶するための手段と、
前記アドレスの第２の連続範囲内にアドレスがあるブロック内に、前記第２のデータタイプのグラフィックスデータ、または前記第２のデータタイプの前記グラフィックスデータのアドレスのうちの少なくとも１つを記憶するための手段と、
共通メモリキャッシュの複数のキャッシュラインに前記第１のデータタイプの前記グラフィックスデータと前記第２のデータタイプの前記グラフィックスデータとを記憶するための手段とを備える装置。
【請求項３１】
前記アドレスの第１の連続範囲および第２の連続範囲が、ストレージデバイスアドレスの第１の連続範囲および第２の連続範囲と、入出力メモリ管理ユニット（ＩＯＭＭＵ）アドレスの第１の連続範囲および第２の連続範囲とのうちの少なくとも１つを備える、請求項３０に記載の装置。
【請求項３２】
前記アドレスの第１の連続範囲内にアドレスがある前記ブロックと、前記アドレスの第２の連続範囲内にアドレスがある前記ブロックとが、ストレージデバイス内のストレージブロックと、入出力メモリ管理ユニット（ＩＯＭＭＵ）内のアドレスブロックとのうちの少なくとも１つを備える、請求項３０に記載の装置。
【請求項３３】
前記アドレスの第１の連続範囲に基づいて前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にするための手段をさらに備える、請求項３０に記載の装置。
【請求項３４】
前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にあるアドレスを含むかを判断するための手段をさらに備え、
１つまたは複数のキャッシュラインを無効にするための前記手段が、前記アドレスの第１の連続範囲内にある前記アドレスを含むと判断された１つまたは複数のキャッシュラインを無効にするための手段を備える、請求項３３に記載の装置。
【請求項３５】
前記共通メモリキャッシュの前記複数のキャッシュラインのうちのどのキャッシュラインが、前記アドレスの第１の連続範囲内にある前記アドレスを含むかを判断するための前記手段が、前記複数のキャッシュラインのうちの前記キャッシュラインの各々のアドレスフィールドを前記アドレスの第１の連続範囲と比較するための手段を備える、請求項３４に記載の装置。
【請求項３６】
前記第１のデータタイプの前記グラフィックスデータが変化したかどうかを判断するための手段をさらに備え、
前記アドレスの第１の連続範囲に基づいて前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にするための前記手段は、前記第１のデータタイプの前記グラフィックスデータが変化したときに前記複数のキャッシュラインのうちの１つまたは複数のキャッシュラインを無効にするための手段を備える、請求項３３に記載の装置。
【請求項３７】
前記第１のデータタイプおよび前記第２のデータタイプがそれぞれ、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータのうちの少なくとも１つを備える、請求項３０に記載の装置。
【請求項３８】
前記第１のデータタイプの前記グラフィックスデータおよび前記第２のデータタイプの前記グラフィックスデータのうちの少なくとも１つについての要求を受信するための手段であって、前記要求が前記第１のデータタイプまたは前記第２のデータタイプのアドレスを含む、受信するための手段と、
前記第１のデータタイプの前記アドレスまたは前記第２のデータタイプの前記アドレスがそれぞれ前記アドレスの第１の連続範囲または前記アドレスの第２の連続範囲内にあるかどうかを判断するための手段と、
前記判断に基づいて前記要求を処理するための手段とをさらに備える、請求項３０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データストレージに関し、より詳細には、グラフィックス処理のためのデータストレージアドレスの割当てに関する。
【背景技術】
【０００２】
視覚的提示のためのコンテンツを提供するデバイスは、概してグラフィックス処理ユニット（ＧＰＵ）を含む。ＧＰＵは、画像のコンテンツを表すピクセルを処理し、ディスプレイ上にレンダリングする。ディスプレイ上にピクセルをレンダリングするために、ＧＰＵは様々なデータタイプを処理する。様々なタイプのデータは１つまたは複数のデータストレージデバイスに記憶される。ＧＰＵは、１つまたは複数のストレージデバイスからデータを取り出し、ディスプレイ上にピクセルをレンダリングするためにデータを処理する。
【発明の概要】
【０００３】
概して、本開示では、グラフィックス処理のための様々なデータタイプのデータの効率的なストレージのための技法について説明する。グラフィックス処理ユニット（ＧＰＵ）は、表示するための画像をレンダリングするために様々なデータタイプのデータを処理し得る。プロセッサは、様々なデータタイプのデータをストレージデバイスに記憶し、様々なデータタイプのデータがストレージデバイスに記憶されたセグメントを定義するか、または様々なデータタイプのデータのアドレスがストレージデバイスに記憶されたセグメントを定義し得る。各セグメントは、連続アドレスによってアドレス指定可能である複数のブロックを含み得る。
【０００４】
デバイスはまた、共通メモリキャッシュを含み得る。共通メモリキャッシュは様々なデータタイプのデータを記憶し得る。ＧＰＵは、共通メモリキャッシュからデータを迅速に取り出すことが可能であり得る。いくつかの例では、ＧＰＵおよびプロセッサが、共通メモリキャッシュからデータを迅速に取り出すことが可能であり得る。本開示で説明する例示的な実装形態のうちのいくつかでは、共通メモリキャッシュは、グラフィックス処理のための様々なデータタイプのすべてについてのデータを記憶し得る。たとえば、共通メモリキャッシュは、第１のデータタイプのデータと、第２のデータタイプのデータとを記憶し得、第１のデータタイプと第２のデータタイプとは、グラフィックス処理のための異なるデータタイプである。
【０００５】
一例では、本開示は、処理ユニットを用いて、グラフィックス処理のための第１のデータタイプのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプのためにアドレスの第２の連続範囲を割り当てることであって、第１のデータタイプと第２のデータタイプとが異なるデータタイプである、割り当てることと、処理ユニットを用いて、アドレスの第１の連続範囲内にアドレスがあるブロック内に、第１のデータタイプのグラフィックスデータ、または第１のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、処理ユニットを用いて、アドレスの第２の連続範囲内にアドレスがあるブロック内に、第２のデータタイプのグラフィックスデータ、または第２のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、共通メモリキャッシュの複数のキャッシュラインに第１のデータタイプのグラフィックスデータと第２のデータタイプのグラフィックスデータとを記憶することとを備える方法について説明する。
【０００６】
別の例では、本開示は、複数のキャッシュラインを含む共通メモリキャッシュと、処理ユニットであって、グラフィックス処理のための第１のデータタイプのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプのためにアドレスの第２の連続範囲を割り当てることであって、第１のデータタイプと第２のデータタイプとが異なるデータタイプである、割り当てることと、アドレスの第１の連続範囲内にアドレスがあるブロック内に、第１のデータタイプのグラフィックスデータ、または第１のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶し、アドレスの第２の連続範囲内にアドレスがあるブロック内に、第２のデータタイプのグラフィックスデータ、または第２のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、共通メモリキャッシュの複数のキャッシュラインに第１のデータタイプのグラフィックスデータと第２のデータタイプのグラフィックスデータとを記憶することとを行うように構成された処理ユニットとを備える装置について説明する。
【０００７】
別の例では、本開示は、グラフィックス処理のための第１のデータタイプのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプのためにアドレスの第２の連続範囲を割り当てることであって、第１のデータタイプと第２のデータタイプとが異なるデータタイプである、割り当てることと、アドレスの第１の連続範囲内にアドレスがあるブロック内に、第１のデータタイプのグラフィックスデータ、または第１のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、アドレスの第２の連続範囲内にアドレスがあるブロック内に、第２のデータタイプのグラフィックスデータ、または第２のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶することと、共通メモリキャッシュの複数のキャッシュラインに第１のデータタイプのグラフィックスデータと第２のデータタイプのグラフィックスデータとを記憶することとを１つまたは複数の処理ユニットに行わせる命令を備えるコンピュータ可読記憶媒体について説明する。
【０００８】
別の例では、本開示は、グラフィックス処理のための第１のデータタイプのためにアドレスの第１の連続範囲を割り当て、グラフィックス処理のための第２のデータタイプのためにアドレスの第２の連続範囲を割り当てるための手段であって、第１のデータタイプと第２のデータタイプとが異なるデータタイプである、割り当てるための手段と、アドレスの第１の連続範囲内にアドレスがあるブロック内に、第１のデータタイプのグラフィックスデータ、または第１のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶するための手段と、アドレスの第２の連続範囲内にアドレスがあるブロック内に、第２のデータタイプのグラフィックスデータ、または第２のデータタイプのグラフィックスデータのアドレスのうちの少なくとも１つを記憶するための手段と、共通メモリキャッシュの複数のキャッシュラインに第１のデータタイプのグラフィックスデータと第２のデータタイプのグラフィックスデータとを記憶するための手段とを備える装置について説明する。
【０００９】
１つまたは複数の例の詳細を添付の図面および以下の説明に記載する。他の特徴、目的、および利点は、その説明および図面、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１０】
【図１】本開示の態様を実装するように構成され得るデバイスを示すブロック図。
【図２】図１の構成要素のうちのいくつかをより詳細に示すブロック図。
【図３】図１の構成要素のうちのいくつかをより詳細に示す別のブロック図。
【図４】本開示の態様を実装するように構成され得るデバイスの例示的な動作を示す流れ図。
【図５】共通メモリキャッシュの複数のキャッシュラインのうちのどの１つが特定のデータタイプに関連するかを判断するための例示的な技法を示す流れ図。
【図６】処理ユニットによって実行される例示的な技法を示す流れ図。
【発明を実施するための形態】
【００１１】
本開示の態様は、グラフィックス処理のための様々なデータタイプのグラフィックスデータの効率的なストレージに関し得る。例示のために、本開示の態様について、データがグラフィックス処理のために使用されるコンテキストにおいて説明する。しかしながら、本開示の態様は、グラフィックス処理システム以外のシステムに拡張可能であり得る。本開示の技法は、概して、ビデオまたは画像コンテンツを提供するデスクトップコンピュータおよびラップトップコンピュータ、デジタルメディアプレーヤ、セットトップボックス、携帯電話、携帯情報端末（ＰＤＡ）などのモバイルビデオ受信デバイス、ビデオディスプレイを含むビデオゲーミングコンソール、モバイルビデオ会議ユニットなど、コンピュータグラフィックシステムに適用可能であり得る。
【００１２】
デバイス内のグラフィックス処理ユニット（ＧＰＵ）は、デバイス上で表示される可視コンテンツを生成するために様々なデータタイプのグラフィックスデータを処理し得る。ＧＰＵは処理ユニットの一例である。グラフィックス処理のための様々なデータタイプは、限定はしないが、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータを含み得る。様々なデータタイプのグラフィックスデータはデバイスのストレージデバイスに記憶され得る。グラフィックス処理のために上記で与えた例よりも多くのデータタイプが存在し得る。
【００１３】
いくつかの非限定的な例では、デバイスはまた、入出力メモリ管理ユニット（ＩＯＭＭＵ：input/output memory management unit）を含む。ＩＯＭＭＵは、ストレージデバイスのストレージブロックへの仮想アドレス空間をＧＰＵに与え得る。ＩＯＭＭＵは複数のアドレスブロックを含み得る。各アドレスブロックは、様々なデータタイプのグラフィックスデータがストレージデバイスに記憶された場所のアドレスを記憶し得る。ＩＯＭＭＵの各アドレスブロックは、ＧＰＵによって個々にアクセス可能であり得る。
【００１４】
デバイス内のプロセッサは、ＩＯＭＭＵのアドレス空間を複数のセグメントに断片化し得る。プロセッサは処理ユニットの一例であり得る。各セグメントは、連続アドレスを用いてアドレス指定可能であり得る複数のアドレスブロックを含み得る。プロセッサは、特定のデータタイプのグラフィックスデータがストレージデバイスに記憶された場所のアドレスを記憶するために各セグメントを割り当て得る。たとえば、ＩＯＭＭＵのアドレス空間の第１のセグメントは、連続アドレス０〜１５を用いてアドレス指定可能であるアドレスブロックを含み得、ＩＯＭＭＵのアドレス空間の第２のセグメントは、連続アドレス１６〜３１を用いてアドレス指定可能であるアドレスブロックを含み得、以下同様である。
【００１５】
この例では、プロセッサは、グラフィックステクスチャデータがストレージデバイスに記憶された場所のアドレスを記憶するために、第１のセグメントの連続アドレス０〜１５によってアドレス指定可能なアドレスブロックを割り当て得る。プロセッサは、グラフィックス頂点データがストレージデバイスに記憶された場所のアドレスを記憶するために、第２のセグメントの連続アドレス１６〜３１によってアドレス指定可能なアドレスブロックを割り当て得、以下同様である。アドレスブロックのための連続アドレス、たとえば、０〜１５および１６〜３１は、例示のために与えたものにすぎず、限定的でない。
【００１６】
プロセッサおよびＧＰＵの観点から、ＩＯＭＭＵは、グラフィックス処理のための様々なデータタイプのグラフィックスデータを記憶するデバイスであるように見え得る。たとえば、プロセッサまたはＧＰＵがデータを読み取るかまたは書き込むとき、プロセッサまたはＧＰＵは、データがＩＯＭＭＵから読み取られているかまたはＩＯＭＭＵに書き込まれているかのようにデータを読み取るかまたは書き込む。ＩＯＭＭＵは、読み取られたまたは書き込まれたデータがストレージデバイスに実際に記憶された場所のマップを維持し得る。データがストレージデバイスに実際に記憶された場所のマップは仮想アドレス空間と見なされ得る。
【００１７】
いくつかの代替例では、デバイス内のプロセッサは、ＩＯＭＭＵではなく、ストレージデバイスのストレージ空間を複数のセグメントに断片化し得る。これらの例では、ＩＯＭＭＵが必要とされないことがあるが、本開示の態様はそのように限定されると考えられるべきでない。各セグメントは、連続アドレスによってアドレス指定可能であり得る複数のストレージブロックを含み得る。プロセッサは、特定のデータタイプのグラフィックスデータを記憶するために各セグメントを割り当て得る。たとえば、ストレージデバイスの第１のセグメントは、連続アドレス０〜１５によってアドレス指定可能であり得るストレージブロックを含み得、ストレージデバイスの第２のセグメントは、連続アドレス１６〜３１によってアドレス指定可能であり得るストレージブロックを含み得、以下同様である。この例では、プロセッサは、グラフィックスピクセルデータを記憶するために、第１のセグメントの連続アドレス０〜１５によってアドレス指定可能なアドレスブロックを割り当て得る。プロセッサは、グラフィックス処理のための命令を記憶するために、第２のセグメントの連続アドレス１６〜３１によってアドレス指定可能なアドレスブロックを割り当て得、以下同様である。ストレージブロックのための連続アドレス、たとえば、０〜１５および１６〜３１は、例示のために与えたものにすぎず、限定的でない。
【００１８】
デバイスはまた、共通メモリキャッシュを含み得る。共通メモリキャッシュは複数のキャッシュラインを含み得、各キャッシュラインは、グラフィックス処理のためのデータタイプのいずれかについてのグラフィックスデータを記憶するように構成され得る。たとえば、共通メモリキャッシュは、共通メモリキャッシュの１つまたは複数のキャッシュライン内に、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータを記憶するように構成され得る。キャッシュラインは、ストレージのためのメモリの固定サイズブロックと見なされ得る。
【００１９】
共通メモリキャッシュは、プロセッサまたはＧＰＵによる高速アクセスのためにグラフィックスデータを記憶し得る。共通メモリキャッシュ内の各キャッシュラインは少なくとも２つのフィールドを含み得る。第１のフィールドは、ＩＯＭＭＵのアドレスブロックのうちの１つへのアドレス、またはストレージデバイスのストレージブロックのうちの１つへのアドレスを記憶し得る。第１のフィールドがＩＯＭＭＵのアドレスブロックのうちの１つへのアドレスを記憶する例では、ＩＯＭＭＵのアドレスブロックは、データタイプのグラフィックスデータが記憶されたストレージデバイス内のアドレスを含み得る。キャッシュラインの第２のフィールドは、実際のグラフィックスデータを記憶し得る。
【００２０】
データタイプのグラフィックスデータが変化した、たとえば、リライトまたは消去されたとき、プロセッサは、そのデータタイプのグラフィックスデータを記憶している共通メモリキャッシュ内のキャッシュラインのうちのいくつかを無効にする必要があり得る。キャッシュラインを無効にするために、プロセッサは、そのキャッシュラインの第２のフィールドにヌルデータ値を記憶し得る。共通メモリキャッシュ内のキャッシュラインを無効にすることにより、無効にされたキャッシュラインに記憶されたグラフィックスデータが最新でないことがＧＰＵに示され得る。グラフィックスデータを記憶するキャッシュラインが最新のデータを記憶していないので、これは、ＧＰＵが、共通メモリキャッシュからではなく、ストレージデバイスからデータタイプのグラフィックスデータを取り出すことを引き起こし得る。
【００２１】
データタイプのグラフィックスデータを記憶しているキャッシュラインのうちのいくつかを無効にするために、ＧＰＵは、どのキャッシュラインがそのデータタイプのグラフィックスデータを記憶しているかを判断し得る。どのキャッシュラインがそのデータタイプのグラフィックスデータを記憶しているかを判断するために、ＧＰＵは、キャッシュラインのうちの各々の第１のデータフィールドが、そのデータタイプについて、ＩＯＭＭＵまたはストレージデバイス内に、それぞれアドレスブロックまたはストレージブロックのアドレスの割り当てられた連続範囲内にあるアドレスを記憶しているかどうかを判断するために、キャッシュラインのうちの各々の第１のデータフィールドを照会し得る。
【００２２】
たとえば、グラフィックスデータタイプが、グラフィックス処理のためのテクスチャデータであると仮定する。さらに、プロセッサは、テクスチャデータがストレージデバイスに記憶された場所のアドレスのストレージのために、アドレスブロック、すなわち、ＩＯＭＭＵ内の連続アドレス０〜１５を割り当てたと仮定する。テクスチャデータが変化したとき、プロセッサは、共通メモリキャッシュにおいて、テクスチャデータを記憶している各キャッシュラインを無効にし得る。ＧＰＵは、キャッシュラインのうちの各々の第１のフィールドが、０〜１５内にあるアドレスを記憶しているかどうかを判断し得る。キャッシュラインが０〜１５内にあるアドレスを記憶している場合、ＧＰＵはそのキャッシュラインを無効にし得る。本開示の態様では、ＧＰＵは、その特定のデータタイプのグラフィックスデータを記憶しているキャッシュラインのうちの１つまたは複数を無効にし得る。ＧＰＵは、共通メモリキャッシュ中の他のキャッシュラインのいずれをも無効にしないことがある。たとえば、ＧＰＵは、その特定のデータタイプのデータを記憶していないキャッシュラインのいずれをも無効にしないことがある。
【００２３】
図１は、本開示の態様を実装するように構成され得るデバイス１０を示すブロック図である。デバイス１０の例には、限定はしないが、モバイルワイヤレス電話、携帯情報端末（ＰＤＡ）、ビデオディスプレイを含むビデオゲーミングコンソール、モバイルビデオ会議ユニット、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、テレビジョンセットトップボックス、デジタルメディアプレーヤなどがある。デバイス１０は、プロセッサ１２と、グラフィックス処理ユニット（ＧＰＵ）１４と、ディスプレイ１６と、ディスプレイバッファ１８と、ストレージデバイス２０と、トランシーバモジュール２２と、ユーザインターフェース２４と、共通メモリキャッシュ２６と、入出力メモリ管理ユニット（ＩＯＭＭＵ）２８とを含み得る。プロセッサ１２およびＧＰＵ１４はそれぞれ処理ユニットの例であり得る。
【００２４】
デバイス１０は、明快のために図１に示されていない追加のモジュールまたはユニットを含み得る。たとえば、デバイス１０は、デバイス１０がモバイルワイヤレス電話である例において電話通信を実現するために、そのいずれも図１に示されていないスピーカーおよびマイクロフォンを含み得る。さらに、デバイス１０に示す様々なモジュールおよびユニットは、デバイス１０のあらゆる例において必要であるとは限らない。たとえば、デバイス１０がデスクトップコンピュータである例では、ユーザインターフェース２４およびディスプレイ１６はデバイス１０の外部にあり得る。別の例として、ＩＯＭＭＵ２８は、以下でより詳細に説明するように、あらゆる例において必要であるとは限らない。
【００２５】
プロセッサ１２、ＧＰＵ１４、共通メモリキャッシュ２６、およびＩＯＭＭＵ２８は別個のユニットとして示されているが、本開示の態様はそのように限定されない。一例として、ＧＰＵ１４、共通メモリキャッシュ２６、およびＩＯＭＭＵ２８はプロセッサ１２内に形成され得、たとえば、１つの処理ユニットが、プロセッサ１２およびＧＰＵ１４、ならびに、共通メモリキャッシュ２６およびＩＯＭＭＵ２８を含み得る。別の例として、プロセッサ１２はＩＯＭＭＵ２８を含み得、ＧＰＵ１４は共通メモリキャッシュ２６を含み得る。プロセッサ１２と、ＧＰＵ１４と、共通メモリキャッシュ２６と、ＩＯＭＭＵ２８との構成の様々な組合せが可能であり得、本開示の態様はこれらの様々な組合せを企図する。
【００２６】
処理ユニットとそれぞれ見なされ得るプロセッサ１２およびＧＰＵ１４の例には、限定はしないが、デジタル信号プロセッサ（ＤＳＰ）、汎用マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブル論理アレイ（ＦＰＧＡ）、あるいは他の等価な集積回路またはディスクリート論理回路がある。ストレージデバイス２０は１つまたは複数のコンピュータ可読記憶媒体を備え得る。ストレージデバイス２０の例には、限定はしないが、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気消去可能プログラマブル読取り専用メモリ（ＥＥＰＲＯＭ）、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータまたはプロセッサによってアクセスされ得る、任意の他の媒体がある。いくつかの態様では、ストレージデバイス２０は、本開示においてプロセッサ１２およびＧＰＵ１４に起因する機能を実行することをプロセッサ１２および／またはＧＰＵ１４に行わせる命令を含み得る。
【００２７】
ユーザインターフェース２４の例には、限定はしないが、トラックボール、マウス、キーボード、および他のタイプの入力デバイスがある。ユーザインターフェース２４はまた、タッチスクリーンであり得、ディスプレイ１６の一部として組み込まれ得る。トランシーバモジュール２２は、デバイス１０と別のデバイスまたはネットワークとの間のワイヤレスまたはワイヤード通信を可能にするための回路を含み得る。トランシーバモジュール２２は、ワイヤードまたはワイヤレス通信のための変調器、復調器、増幅器および他のそのような回路を含み得る。
【００２８】
プロセッサ１２は１つまたは複数のアプリケーションを実行し得る。アプリケーションの例には、ウェブブラウザ、電子メールアプリケーション、スプレッドシート、ビデオゲーム、またはプレゼントメントのために可視画像を生成する他のアプリケーションがある。これらの１つまたは複数のアプリケーションはストレージデバイス２０内に記憶され得る。いくつかの事例では、プロセッサ１２は、トランシーバモジュール２２を介して１つまたは複数のアプリケーションをダウンロードし得る。プロセッサ１２は、ユーザインターフェース２４を介したユーザによる選択に基づいて１つまたは複数のアプリケーションを実行し得る。いくつかの例では、プロセッサ１２は、ユーザ対話なしに１つまたは複数のアプリケーションを実行し得る。
【００２９】
プロセッサ１２によって生成される可視画像の各々は、プリミティブと呼ばれることがある複数のポリゴンを用いて形成された２次元（２Ｄ）または３次元（３Ｄ）画像であり得る。プロセッサ１２は、ポリゴンの頂点の座標を判断し得る。ポリゴンの一例は三角形であるが、ポリゴンは三角形に限定されると考えられるべきでない。例示のために、本開示における例について、ポリゴンが三角形であるコンテキストにおいて説明する。たとえば、プロセッサ１２は、各三角形について３つの頂点の座標を判断し得る。２Ｄ画像では、各三角形の各頂点の座標はｘ座標およびｙ座標を備え得る。３Ｄ画像では、各三角形の各頂点の座標は、ｘ、ｙ、ｚ、およびｗ座標を備え得、ｗ座標は、無限に遠くにある頂点を識別するために有益であり得る同次座標である。ポリゴンについて判断された頂点座標は頂点データと呼ばれる。プロセッサ１２は頂点データをストレージデバイス２０に記憶し得る。
【００３０】
プロセッサ１２はまた、判断された頂点について様々な他の属性を判断し得る。たとえば、各頂点について、プロセッサ１２は、ピクセルデータと呼ばれるカラー値を判断し得る。各カラー値は、３つまたは４つの成分、たとえば、赤、緑、および青成分、または赤、緑、青、および透明度ファクタを含み得る。いくつかのデバイスでは追加のカラー座標が使用され得る。プロセッサ１２は、ストレージデバイス２０にピクセルデータを記憶し得る。
【００３１】
プロセッサ１２はまた、ストレージデバイス２０にテクスチャ画像を記憶し得る。テクスチャ画像は、ポリゴンをより現実的に見えさせるためにポリゴンに適用される画像であり得る。テクスチャ画像は、概してテクスチャデータの２次元アレイであり得るが、テクスチャ画像はテクスチャデータの１次元または３次元アレイでもあり得る。例示のために、本開示の態様について、テクスチャデータの２次元アレイのコンテキストにおいて説明する。プロセッサ１２は、アレイの座標に基づいて２次元アレイ内にテクスチャデータを記憶し得る。アレイの座標は（ｕ，ｖ）であり得、座標ｕは２次元アレイのｘ軸に沿い、座標ｖは２次元アレイのｙ軸に沿う。たとえば、プロセッサ１２は、ポリゴンの座標に対応するアレイ内のロケーションにおいてポリゴンに適用されるべきテクスチャ画像のテクスチャデータをストレージデバイス２０に記憶し得る。
【００３２】
頂点データ、ピクセルデータ、およびテクスチャデータは、ＧＰＵ１４がディスプレイ１６上に画像をレンダリングするために使用し得るグラフィックス処理のための異なるデータタイプの例である。頂点データ、ピクセルデータ、およびテクスチャデータに加えて、ＧＰＵ１４はまた、ディスプレイ１６上に画像をレンダリングするためにグラフィックス処理のための他のデータタイプのグラフィックスデータを利用し得る。一例として、ＧＰＵ１６は、ディスプレイ１６上に画像をレンダリングするために、ストレージデバイス２０に記憶されたレンダリング命令を利用し得る。ストレージデバイス２０に記憶された命令は、グラフィックス処理のためのデータタイプの別の例であり得る。別の例として、ＧＰＵ１６は、ディスプレイ１６上に画像をレンダリングするために、ストレージデバイス２０に記憶された定数を利用し得る。ストレージデバイス２０に記憶された定数は、グラフィックス処理のためのデータタイプの別の例であり得る。
【００３３】
ＧＰＵ１４は、画像をレンダリングするために様々なデータタイプからのグラフィックスデータを使用するグラフィックスパイプラインを実装し得る。グラフィックスパイプラインは、少なくとも何らかのハードウェアを介して実装され得る。たとえば、グラフィックスパイプラインは、ＧＰＵ１４上で実行されるソフトウェア、ＧＰＵ１４上で実行されるファームウェア、ＧＰＵ１４上に形成された１つまたは複数のハードウェアユニット、あるいはそれらの組合せとして実装され得る。グラフィックスパイプラインは複数の構成要素を含み得る。たとえば、ＧＰＵ１４のグラフィックスパイプラインは、頂点データを取り出し、頂点の座標を別の座標系に変換し、頂点の光値を計算する頂点シェーダを含み得る。ＧＰＵ１４のグラフィックスパイプラインはまた、ポリゴン内のピクセルの深さ（ｚ）を判断するプリミティブアセンブラを含み得る。ＧＰＵ１４のグラフィックスパイプラインはまた、ポリゴン内のピクセルがその後他のピクセルによって遮られた場合、さらなる処理からそれらのポリゴン内のピクセルを除去する、初期深さテストエンジンを含み得る。ＧＰＵ１４のグラフィックスパイプラインはまた、ポリゴンの頂点のカラー値に基づいてポリゴン内のピクセルのカラー値を補間するピクセルシェーダを含み得る。
【００３４】
グラフィックスパイプラインの様々な構成要素は、例示のために与えたものであり、限定的であると考えられるべきでない。代替例では、グラフィックスパイプラインは、上記で説明した構成要素よりも多くの構成要素を含み得る。グラフィックスパイプラインはまた、上記で説明した構成要素よりも少ない構成要素を含み得る。
【００３５】
いくつかの例では、ＧＰＵ１４が画像をレンダリングするとき、ＧＰＵ１４は、画像のレンダリングされた部分をディスプレイバッファ１８に出力し得る。ディスプレイバッファ１８は、画像全体がレンダリングされるまで、レンダリングされた画像を一時的に記憶し得る。ディスプレイバッファ１８はフレームバッファと見なされ得る。ディスプレイバッファ１８は、次いで、ディスプレイ１６上に表示されるべきレンダリングされた画像を送信し得る。いくつかの代替例では、ＧＰＵ１４は、画像をディスプレイバッファ１８に一時的に記憶するのではなく、画像のレンダリングされた部分を表示のためにディスプレイ１６に直接出力し得る。ディスプレイ１６は、液晶ディスプレイ（ＬＣＤ）、陰極線管（ＣＲＴ）ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスを備え得る。
【００３６】
ストレージデバイス２０は、複数のストレージブロックを含み得る。各ストレージブロックは、グラフィックス処理のための様々なデータタイプのグラフィックスデータを記憶し得る。各ストレージブロックは個々にアドレス指定可能であり得る。いくつかの例では、プロセッサ１２は、ストレージデバイス２０によって与えられるストレージ空間をデータストレージセグメントに断片化し得る。各セグメントは、連続メモリアドレスによってそれぞれアドレス指定可能である複数のデータストレージブロックを含み得る。したがって、各データストレージセグメントは、連続メモリアドレスの範囲によって定義され得る。
【００３７】
プロセッサ１２は、特定のデータタイプのために各データストレージセグメントを割り当て得る。たとえば、プロセッサ１２は、第１のデータタイプのグラフィックスデータを記憶するために第１のセグメントを割り当て、第２のデータタイプのグラフィックスデータを記憶するために第２のセグメントを割り当て得る。この例では、第１のセグメントのストレージブロックは連続アドレスによってアドレス指定可能であり得る。たとえば、プロセッサ１２は、第１のセグメント中のブロックに連続アドレスの第１の範囲を割り当て得る。第１のセグメントの各ストレージブロックのアドレスは、連続アドレスの第１の範囲内にあり得る。同様に、第２のセグメントのストレージブロックのアドレスは、プロセッサ１２によって割り当てられた連続アドレスの第２の範囲内にあり得る。
【００３８】
いくつかの例では、デバイス１０はＩＯＭＭＵ２８を含み得る。ＩＯＭＭＵ２８は、デバイス１０のあらゆる例において必要であるとは限らない。たとえば、ＩＯＭＭＵ２８は、プロセッサ１２がストレージデバイス２０に記憶された様々なデータタイプのグラフィックスデータに連続アドレスを割り当てる例では、必要でないことがある。ただし、本開示の態様はそのように限定されると考えられるべきでない。デバイス１０は、プロセッサ１２がストレージデバイス２０に記憶された様々なデータタイプのグラフィックスデータに連続アドレスを割り当てる例においてさえ、ＩＯＭＭＵ２８を含み得る。
【００３９】
ＩＯＭＭＵ２８は、１つまたは複数のハードウェアユニット、ハードウェアユニット上で実行されるソフトウェア、ハードウェアユニット上で実行されるファームウェア、あるいはそれらの任意の組合せとして実装され得る。ＩＯＭＭＵ２８が１つまたは複数のハードウェアユニットである例では、ＩＯＭＭＵ２８の例には、限定はしないが、ＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、あるいは他の等価な集積回路またはディスクリート論理回路があり得る。
【００４０】
ＩＯＭＭＵ２８は、ＩＯＭＭＵ２８が、たとえば、ＧＰＵ１４に対して、様々なデータタイプのグラフィックスデータを記憶するデバイスであるように見えるように、ストレージデバイス２０のストレージブロックへの仮想アドレス空間をＧＰＵ１４に与え得る。たとえば、ＩＯＭＭＵ２８は、プロセッサ１２および／またはＧＰＵ１４によって要求されたストレージデバイス２０へのアクセスを処理することを担当するハードウェア構成要素であり得る。たとえば、ＩＯＭＭＵ２８は、複数のアドレスブロックを示すテーブルまたは他のデータ構造、たとえば、レジスタを含み得る。各アドレスブロックは、ストレージデバイス２０のストレージブロックのうちの１つのアドレスを記憶し得る。各アドレスブロックは個々にアドレス指定可能であり得る。
【００４１】
プロセッサ１２またはＧＰＵ１４がデータを読み取るかまたは書き込むことを望むとき、プロセッサ１２またはＧＰＵ１４上で実行されているソフトウェアは、プロセッサ１２またはＧＰＵ１４が、アドレスによってコールアウトされたアドレスブロックから読み取っているかまたはそのアドレスブロックに書き込んでいるかのように、ＩＯＭＭＵ２８のアドレスブロックのうちの１つのアドレスをコールアウトする。ＩＯＭＭＵ２８は、次いで、どのストレージブロックが、ＩＯＭＭＵ２８のアドレスブロックに記憶されたアドレスに対応するかを判断し得る。ＩＯＭＭＵ２８は、次いで、ＩＯＭＭＵ２８のアドレスブロックに記憶されたアドレスに対応するストレージブロックに書き込むかまたはそのストレージブロックから読み取り得る。
【００４２】
明快のために、（１つまたは複数の）ストレージデバイスアドレスという用語は、ストレージデバイス２０内のストレージブロックの（１つまたは複数の）アドレスを指し得る。また、（１つまたは複数の）ＩＯＭＭＵアドレスという用語は、ＩＯＭＭＵ２８内のアドレスブロックの（１つまたは複数の）アドレスを指し得る。上記で説明したように、ＩＯＭＭＵ２８の各アドレスブロックはストレージデバイスアドレスを記憶し得る。概して、ＩＯＭＭＵ２８はＩＯＭＭＵアドレスをストレージデバイスアドレスにマッピングし得る。このようにして、プロセッサ１２またはＧＰＵ１４がＩＯＭＭＵアドレスをコールアウトしたとき、ＩＯＭＭＵ２８は、たとえば、テーブル、レジスタ、行列または他のデータ構造によって示される、ＩＯＭＭＵアドレスに対応するストレージデバイスアドレスを判断することによって、マッピングに基づいてグラフィックスデータを記憶しているストレージブロックのストレージデバイスアドレスを判断し得る。
【００４３】
上記で説明したように、プロセッサ１２は、ストレージデバイス２０のメモリ空間をセグメントに断片化し得る。各セグメントは、連続ストレージデバイスアドレスによってそれぞれアドレス指定可能である複数のストレージブロックを含み得る。いくつかの例では、プロセッサ１２は、ＩＯＭＭＵ２８のアドレス空間をセグメントに断片化し得る。各セグメントは、連続ＩＯＭＭＵアドレスによってそれぞれアドレス指定可能である複数のアドレスブロックを含み得る。
【００４４】
いくつかの例では、プロセッサ１２は、ＩＯＭＭＵ２８内のアドレスブロックに連続ＩＯＭＭＵアドレスの第１の範囲を割り当て得る。これらの例では、連続ＩＯＭＭＵアドレスの第１の範囲は、第１のデータタイプのグラフィックスデータがストレージデバイス２０に記憶された場所のアドレスを記憶するアドレスブロックのためのものである。プロセッサ１２はまた、ＩＯＭＭＵ２８内のアドレスブロックに連続ＩＯＭＭＵアドレスの第２の範囲を割り当て得る。これらの例では、連続ＩＯＭＭＵアドレスの第２の範囲は、第２のデータタイプのグラフィックスデータがストレージデバイス２０に記憶された場所のアドレスを記憶するアドレスブロックのためのものである。プロセッサ１２は、グラフィックス処理のための様々なデータタイプの連続ＩＯＭＭＵアドレスの範囲を同様に割り当て得る。
【００４５】
いくつかの事例では、各データタイプのグラフィックスデータに連続ストレージデバイスアドレスを割り当てること、または各データタイプのグラフィックスデータに連続ＩＯＭＭＵアドレスを割り当てることが有利であり得る。一例として、プロセッサ１２およびＧＰＵ１４は、データタイプの各々についてのグラフィックスデータがストレージデバイス２０に記憶された正確なアドレスを追跡する必要がないことがある。プロセッサ１２およびＧＰＵ１４は、連続ストレージデバイスアドレスまたはＩＯＭＭＵアドレスの範囲を追跡するだけでよい。連続ストレージデバイスアドレスまたはＩＯＭＭＵアドレスの各範囲はサブヒープと見なされ得る。プロセッサ１２は、ストレージデバイス２０内のストレージブロックまたはＩＯＭＭＵ２８内のアドレスブロックに、サブヒープ、たとえば、連続ストレージデバイスアドレスまたはＩＯＭＭＵアドレスの範囲を割り当てるアロケータと見なされ得る。
【００４６】
たとえば、ＧＰＵ１４が、グラフィックス処理のためのテクスチャデータを取り出すことを望むと仮定する。また、テクスチャデータが、従来のヒープアロケータでは発生するように、連続してアドレス指定可能であるストレージブロックに記憶されないと仮定する。この場合、ＧＰＵ１４は、テクスチャデータの各１つについてストレージデバイスアドレスを追跡する必要があり得、これは非効率的な処理であり得る。本開示の態様では、ＧＰＵ１４は、各個々のストレージデバイスアドレスを追跡することが不要であり得、ストレージデバイスアドレスの範囲を追跡し得、これにより、効率的な処理が促進され得る。
【００４７】
別の例として、各データタイプのグラフィックスデータに連続ストレージデバイスアドレスまたはＩＯＭＭＵアドレスを割り当てる潜在的な利益のために、プロセッサ１２およびＧＰＵ１４は、不正確なデータを取り出す可能性が低くなり得る。たとえば、シェーダプログラムなど、ＧＰＵ１４上で実行されるソフトウェアは、特定のデータタイプのデータ、たとえば、テクスチャデータをＧＰＵ１４に取り出させ得る。シェーダプログラムは、１つの非限定的な例として、アプリケーション開発者によってＯｐｅｎＣＬバージョン１．１仕様のシンタックスを使用して書かれ得る。ただし、本開示の態様は、シェーダプログラムがＯｐｅｎＣＬバージョン１．１仕様に従って書かれた例に限定されると考えられるべきでない。ＧＰＵ１４上で実行されるソフトウェアは、テクスチャデータをそこから取り出すべきアドレスをＧＰＵ１４に与え得る。この例では、プロセッサ１２は、テクスチャデータの連続ＩＯＭＭＵアドレスの範囲を用いてＧＰＵ１４に命令し得る。ＧＰＵ１４上で実行されるソフトウェアは、次いで、テクスチャデータを取り出すためにそのソフトウェアがＧＰＵ１４に与えるアドレスが連続ＩＯＭＭＵアドレスの範囲内にあることを保証し得る。たとえば、シェーダプログラムは、シェーダプログラムが要求したデータのタイプの範囲外にあるデータにアクセスすることをＧＰＵ１４が試みないことを保証し得る。
【００４８】
図１に示すように、デバイス１０はまた、共通メモリキャッシュ２６を含み得る。共通メモリキャッシュ２６はプロセッサ１２およびＧＰＵ１４の外部にあるものとして示されているが、いくつかの例では、共通メモリキャッシュ２６は、処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４の内部に形成されるか、あるいは部分的にプロセッサ１２とＧＰＵ１４の両方の中に形成され得る。共通メモリキャッシュ２６は、プロセッサ１２またはＧＰＵ１４による高速アクセスのためにグラフィックスデータを記憶し得る。たとえば、処理ユニット、たとえば、プロセッサ１２およびＧＰＵ１４は、ストレージデバイス２０からグラフィックスデータを取り出すよりも高速に共通メモリキャッシュ２６からグラフィックスデータを取り出すことが可能であり得る。
【００４９】
共通メモリキャッシュ２６は複数のキャッシュラインを含み得、各キャッシュラインは、グラフィックス処理のためのグラフィックスデータタイプのいずれかについてのグラフィックスデータを記憶するように構成され得る。たとえば、共通メモリキャッシュ２６は、共通メモリキャッシュ２６の１つまたは複数のキャッシュライン内に、テクスチャデータ、頂点データ、命令、定数、およびピクセルデータを記憶し得る。共通メモリキャッシュ２６は、単一のデータタイプのグラフィックスデータを記憶する複数のキャッシュではなく、様々なデータタイプのグラフィックスデータを記憶するように構成されるので、共通メモリキャッシュ２６は効率的なストレージを促進し得る。たとえば、共通メモリキャッシュ２６がテクスチャデータ、ピクセルデータ、頂点データ、命令、および定数を同じキャッシュに記憶することができるので、デバイス１０は、テクスチャデータキャッシュ、ピクセルデータキャッシュ、頂点データキャッシュ、命令キャッシュ、および定数キャッシュを含む必要がないことがある。
【００５０】
キャッシュラインは、ストレージのためのメモリの固定サイズブロックと見なされ得る。各キャッシュラインは２つのフィールドを含み得る。第１のフィールドは、ストレージデバイスアドレスまたはＩＯＭＭＵアドレスのうちの１つへのアドレス、たとえば、ストレージデバイス２０のストレージブロックのうちの１つへのアドレス、またはＩＯＭＭＵ２８のアドレスブロックのうちの１つへのアドレスを記憶し得る。第２のフィールドは、様々なデータタイプの実際のグラフィックスデータを記憶し得る。
【００５１】
データタイプのグラフィックスデータが変化した、たとえば、リライトまたは消去されたとき、プロセッサ１２は、そのデータタイプのグラフィックスデータを記憶している共通メモリキャッシュ２６内のキャッシュラインを無効にする必要があり得る。たとえば、共通メモリキャッシュ２６内のキャッシュラインのうちのいくつかが、現在のテクスチャ画像のテクスチャデータを記憶していることがある。プロセッサ１２が新しいテクスチャ画像を記憶したとき、プロセッサ１２は、テクスチャ画像が変化したので、テクスチャデータを記憶している共通メモリキャッシュ２６内のこれらのキャッシュラインを無効にする必要があり得る。別の例として、共通メモリキャッシュ２６内のキャッシュラインのうちのいくつかが、処理されている現在のポリゴンの頂点データを記憶していることがある。ＧＰＵ１４が別のポリゴンを処理する必要があるとき、プロセッサ１２は、現在のポリゴンの頂点がもはや処理されていないので、頂点データを記憶する共通メモリキャッシュ２６内のこれらのキャッシュラインを無効にする必要があり得る。
【００５２】
一例として、キャッシュラインを無効にするために、プロセッサ１２またはＧＰＵ１４は、そのキャッシュラインの第２のフィールドにヌルデータ値を記憶し得る。共通メモリキャッシュ２６内のキャッシュラインを無効にすることにより、無効にされたキャッシュラインに記憶されたデータが最新でないことがプロセッサ１２およびＧＰＵ１４に示され得る。プロセッサ１２またはＧＰＵ１４が無効にされたキャッシュラインからデータを取り出すとき、「キャッシュミス」が発生し得る。キャッシュミスが発生したとき、共通メモリキャッシュ２６中の無効にされたキャッシュラインは最新のデータを記憶していないので、プロセッサ１２またはＧＰＵ１４はストレージデバイス２０からグラフィックスデータを取り出し得る。いくつかの例では、ストレージデバイス２０からグラフィックスデータを取り出すことに加えて、プロセッサ１２またはＧＰＵ１４はまた、高速な後続アクセスのために、取り出されたグラフィックスデータを共通メモリキャッシュ２６のキャッシュラインに記憶し得る。
【００５３】
プロセッサ１２またはＧＰＵ１４は、どのデータタイプが変化したかに基づいて共通メモリキャッシュ２６のどのキャッシュラインが無効にされるべきかを判断し得る。たとえば、テクスチャ画像が変化した場合、ＧＰＵ１４は、共通メモリキャッシュ２６のどのキャッシュラインがテクスチャデータを記憶しているかを判断し得る。この例では、ＧＰＵ１４は、テクスチャデータを記憶している１つまたは複数のキャッシュラインを無効にし得、テクスチャデータ以外のデータタイプのデータを記憶しているキャッシュラインのいずれをも無効にしなくてよい。
【００５４】
このようにして、プロセッサ１２またはＧＰＵ１４は、共通メモリキャッシュ２６のキャッシュラインのうちのいくつかのみを無効にし得、特定のデータタイプのグラフィックスデータが変化するたびに共通メモリキャッシュ２６のすべてを無効にしなくてよい。プロセッサ１２またはＧＰＵ１４は、各無効化の後に共通メモリキャッシュ２６に以前は記憶されていたグラフィックスデータのすべてを取り出すことが不要であり得るので、共通メモリキャッシュ２６のキャッシュラインのすべてを無効にしないことにより、効率的なストレージがさらに促進され得る。プロセッサ１２またはＧＰＵ１４は、変化したグラフィックスデータのみを取り出し、変化したデータのみを共通メモリキャッシュ２６に記憶する必要があり得る。
【００５５】
変化したデータタイプのグラフィックスデータを記憶しているキャッシュラインを無効にするために、プロセッサ１２またはＧＰＵ１４は、共通メモリキャッシュ２６のどのキャッシュラインがそのデータタイプのグラフィックスデータを記憶しているかを判断し得る。たとえば、ＧＰＵ１４は、キャッシュラインのうちの各々の第１のデータフィールドが、そのデータタイプのストレージデバイスアドレスまたはＩＯＭＭＵアドレスの割り当てられた連続範囲内にあるアドレスを記憶しているかどうかを判断するために、キャッシュラインのうちの各々の第１のデータフィールドを照会し得る。たとえば、グラフィックスデータタイプがピクセルデータであると仮定する。さらに、プロセッサ１２が、ＩＯＭＭＵ２８内に、アドレスブロック、すなわち、連続ＩＯＭＭＵアドレス１６〜３１を割り当てたと仮定する。連続ＩＯＭＵアドレス１６〜３１は、それぞれ、この例では、ピクセルデータが記憶されたストレージデバイス２０のストレージブロックのアドレスを記憶し得る。
【００５６】
ＧＰＵ１４が共通メモリキャッシュ２６に記憶されたピクセルデータ以外のピクセルデータにアクセスする必要があるとき、ＧＰＵ１４は、ストレージデバイス２０からピクセルデータを取り出す必要があり得る。共通メモリキャッシュに新しい取り出されたピクセルデータを記憶するために、プロセッサ１２は、プロセッサ１２が取り出されたピクセルデータを記憶することができるように、共通メモリキャッシュ２６において、ピクセルデータを記憶している十分な数のキャッシュラインを無効にし得る。プロセッサは、キャッシュラインのうちの各々の第１のフィールドが、１６〜３１内にあるアドレスを記憶しているかどうかを判断し得る。キャッシュラインが１６〜３１内にあるアドレスを記憶している場合、プロセッサ１２はそのキャッシュラインを無効にし得る。
【００５７】
プロセッサ１２は連続ストレージデバイスアドレスまたはＩＯＭＭＵアドレスを割り当て得るので、プロセッサ１２は、キャッシュラインが特定のデータタイプのグラフィックスデータを記憶しているかどうかをより容易に判断し得る。たとえば、ストレージデバイスアドレスまたはＩＯＭＭＵアドレスが連続でなかった場合、プロセッサ１２は、その特定のデータタイプについてあらゆる単一のストレージデバイスアドレスまたはＩＯＭＭＵアドレスを追跡する必要があろう。プロセッサ１２は、次いで、キャッシュラインがその特定のデータタイプのグラフィックスデータを記憶しているかどうかを判断するために、キャッシュラインの第１のデータフィールドに記憶されたアドレスを、その特定のデータタイプについてあらゆる単一のストレージデバイスアドレスまたはＩＯＭＭＵアドレスと比較する必要があろう。本開示の態様では、プロセッサ１２は、キャッシュラインが特定のデータタイプのグラフィックスデータを記憶しているかどうかを判断するために、各キャッシュラインの第１のフィールドに記憶されたアドレスを、個々のストレージデバイスアドレスまたはＩＯＭＭＵアドレスではなく、連続ストレージデバイスアドレスまたはＩＯＭＭＵアドレスの範囲と比較し得る。
【００５８】
図２は、図１の構成要素のうちのいくつかをより詳細に示すブロック図である。たとえば、図２は、図１の共通メモリキャッシュ２６およびストレージデバイス２０をより詳細に示している。図２に示すように、ストレージデバイス２０は、１２個のストレージブロック０〜１１（「ストレージブロック」と総称される）を含む。ストレージデバイス２０は、１２個のストレージブロックよりも多いまたは少ないストレージブロックを含み得る。いくつかの例では、ストレージデバイス２０は４ギガバイト（ＧＢ）ストレージデバイスであり得るが、本開示の態様はそのように限定されない。
【００５９】
図２に示すように、ストレージブロック０〜１１は連続的に順序付けられていない。これは、ストレージブロック０〜１１がストレージデバイス２０上で連続することは可能であり得るが、いくつかの例では、ストレージブロック０〜１１がストレージデバイス２０上で必ずしも連続する必要があるとは限らないことを示すためである。ストレージブロック０〜１１のうちの各１つは、それのアドレスによって個々にアドレス指定可能であり得る。たとえば、図２はストレージデバイスアドレス０〜１１を示している。ストレージデバイスアドレス０〜１１はセグメントに断片化、すなわち、分割され得、各セグメントはストレージデバイスアドレスの範囲を備える。プロセッサ１２は、ストレージデバイスアドレスの各範囲を特定のデータタイプに割り当て得る。ストレージデバイスアドレスの範囲は、各データタイプについて連続し得る。
【００６０】
たとえば、図２に示すように、ストレージデバイスアドレス３２の範囲は、テクスチャデータを記憶しているストレージブロック、たとえば、ストレージブロック４、８、および１のための連続ストレージデバイスアドレスであり得る。ストレージデバイスアドレス３２の範囲はストレージアドレス０〜２を含み得る。ストレージデバイスアドレス３４の範囲は、頂点データを記憶しているストレージブロック、たとえば、ストレージブロック１０および５のための連続ストレージデバイスアドレスであり得る。ストレージデバイスアドレス３４の範囲はストレージアドレス３および４を含み得る。ストレージデバイスアドレス３６の範囲は、命令を記憶しているストレージブロック、たとえば、ストレージブロック２および９のための連続ストレージデバイスアドレスであり得る。ストレージデバイスアドレス３６の範囲はストレージアドレス５および６を含み得る。ストレージデバイスアドレス３８の範囲は、定数を記憶しているストレージブロック、たとえば、ストレージブロック０および６のための連続ストレージデバイスアドレスであり得る。ストレージデバイスアドレス３８の範囲はストレージアドレス７および８を含み得る。ストレージデバイスアドレス４０の範囲は、ピクセルデータを記憶しているストレージブロック、たとえば、ストレージブロック１１、３、および７のための連続ストレージデバイスアドレスであり得る。ストレージデバイスアドレス４０の範囲はストレージアドレス９〜１１を含み得る。図２に示すよりも多いまたは少ないテクスチャデータ、頂点データ、命令、定数、およびピクセルデータが存在し得る。
【００６１】
図２に示すように、共通メモリキャッシュ２６はキャッシュライン４２Ａ〜４２Ｆ（「キャッシュライン４２」と総称される）を含み得る。図２に示すよりも多いまたは少ないキャッシュライン４２が存在し得る。いくつかの例では、共通メモリキャッシュ２６はレベル２（Ｌ２）キャッシュであり得る。いくつかの例では、共通メモリキャッシュ２６は、高速範囲無効化を伴う３２キロバイト（ＫＢ）８ウェイセット連想Ｌ２キャッシュであり得る。
【００６２】
キャッシュライン４２のうちの各１つは、アドレスフィールド３０Ａと、データフィールド３０Ｂとを含み得る。アドレスフィールド３０Ａは、データフィールド３０Ｂに記憶されたグラフィックスデータのストレージデバイスアドレスを示し得る。たとえば、キャッシュライン４２Ａのアドレスフィールド３０Ａは、データフィールド３０Ｂに記憶されたグラフィックスデータのアドレスが１であることを示す。図２に示すように、ストレージブロック８のストレージデバイスアドレスが１であるので、キャッシュライン４２Ａのデータフィールド３０Ｂは、ストレージブロック８に対応する第２のテクスチャデータを記憶している。
【００６３】
同じデータタイプを記憶している共通メモリキャッシュ２６のキャッシュライン４２はキャッシュライン４２のセットと見なされ得る。たとえば、図２に示すように、キャッシュライン４２Ｂおよびキャッシュライン４２Ｅはそれぞれ頂点データを記憶している。この例では、キャッシュライン４２Ｂおよびキャッシュライン４２Ｅは、頂点データを記憶しているキャッシュラインのセットを形成し得る。別の例として、図２に示すように、キャッシュライン４２Ｃ、キャッシュライン４２Ｄ、およびキャッシュライン４２Ｆは、それぞれピクセルデータを記憶している。この例では、キャッシュライン４２Ｃ、キャッシュライン４２Ｄ、およびキャッシュライン４２Ｆは、ピクセルデータを記憶しているキャッシュラインのセットを形成し得る。
【００６４】
「キャッシュラインのセット」は、そのセット中のキャッシュラインのみが特定のグラフィックスデータタイプを記憶することができることを暗示するわけではないことを理解されたい。たとえば、図２に示すように、キャッシュライン４２Ａおよび４２Ｅは頂点データを記憶している。しかしながら、代替例では、キャッシュライン４２Ａおよび４２Ｅは、他のグラフィックスデータタイプ、たとえば、テクスチャデータ、ピクセルデータ、命令データ、および定数データを記憶し得る。「キャッシュラインのセット」という句は、同様のグラフィックスデータタイプを記憶しているキャッシュライン４２のグループを示すために使用される。
【００６５】
いくつかの例では、キャッシュラインのセットは連続でないことがある。たとえば、キャッシュライン４２Ｂおよび４２Ｅはキャッシュラインのセットを形成するが、連続ではない。別の例として、キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆは、キャッシュラインのセットを形成するが、連続ではない。代替例では、キャッシュラインのセットが連続であることが可能であり得る。
【００６６】
上記で説明したように、いくつかの例では、キャッシュライン４２のうちの１つが記憶しているデータのタイプのグラフィックスデータが変化した場合、プロセッサ１２は、キャッシュライン４２のうちのその１つを無効にし得る。たとえば、テクスチャ画像が変化した場合、プロセッサ１２は、テクスチャデータを記憶しているキャッシュライン４２のうちの１つまたは複数のキャッシュラインを無効にし得る。キャッシュライン４２のうちの１つがテクスチャデータを記憶しているかどうかを判断するために、プロセッサ１２は、キャッシュライン４２のうちの各々のアドレスフィールド３０Ａを、テクスチャデータに割り当てられたストレージデバイスアドレスの連続範囲と比較し得る。
【００６７】
たとえば、図２の例では、プロセッサ１２は、連続ストレージデバイスアドレス０〜２を含むストレージデバイスアドレス３２の連続範囲をテクスチャデータに割り当てた。この例では、プロセッサ１２は、キャッシュライン４２のうちの各々のアドレスフィールド３０Ａを比較して、それがストレージデバイスアドレス３２の連続範囲内にあるかどうかを判断し得る。キャッシュライン４２Ａのアドレスフィールド３０Ａはストレージデバイスアドレス３２の連続範囲内にあり、たとえば、１が０〜２内にある。この例では、プロセッサ１２は、キャッシュライン４２Ａのデータフィールド３０Ｂに記憶された第２のテクスチャデータをヌルデータと置き換え得る。プロセッサ１２は、次いで、ストレージデバイス２０から新しいテクスチャデータを取り出し得、そのテクスチャデータをキャッシュライン４２Ａに記憶し得る。プロセッサ１２は、あらゆる例においてキャッシュライン４２Ａにテクスチャデータを記憶する必要があるとは限らない。いくつかの例では、取り出された新しいテクスチャデータのストレージデバイスアドレスが、１とは異なるストレージデバイスアドレスに記憶された場合、プロセッサ１２はまた、キャッシュライン４２Ａのアドレスフィールド３０Ａを更新し得る。
【００６８】
図３は、図１の構成要素のうちのいくつかをより詳細に示す別のブロック図である。たとえば、図３は、図１の共通メモリキャッシュ２６、ＩＯＭＭＵ２８、およびストレージデバイス２０をより詳細に示している。図３に示すストレージデバイス２０は、図２に示すストレージデバイス２０と同様であり得る。ただし、図３の例では、プロセッサ１２は、連続ストレージデバイスアドレスの範囲を割り当てないことがある。たとえば、図３に示すように、ストレージデバイス２０のストレージブロックのうちの各１つのアドレスは連続的に順序付けられていない。説明しやすいように、図３の例では、ストレージブロックのストレージデバイスアドレスはストレージブロックの識別子に対応する。たとえば、ストレージデバイス２０のストレージブロック４のストレージデバイスアドレスは４であり、ストレージデバイス２０のストレージブロック８のストレージデバイスアドレスは８であり、以下同様である。ただし、本開示の態様はそのように限定されない。ストレージブロックのストレージデバイスアドレスはストレージブロックの識別子に限定されない。
【００６９】
図３は、ＩＯＭＭＵ２８をより詳細に示している。図３の例では、ＩＯＭＭＵ２８は１２個のアドレスブロック０〜１１を含む。ＩＯＭＭＵ２８は、１２個のアドレスブロックよりも多いまたは少ないアドレスブロックを含み得る。いくつかの例では、ＩＯＭＭＵ２８は、ストレージデバイス２０のストレージブロック０〜１１への仮想アドレス空間をＧＰＵ１４に与え得る。
【００７０】
アドレスブロック０〜１１のうちの各１つは、それのアドレスによって個々にアドレス指定可能であり得る。たとえば、図３はＩＯＭＭＵアドレス０〜１１を示している。ＩＯＭＭＵアドレス０〜１１はセグメントに断片化され得、各セグメントはＩＯＭＭＵアドレスの範囲を備える。プロセッサ１２は、ＩＯＭＭＵアドレスの各範囲を特定のデータタイプに割り当て得る。ＩＯＭＭＵアドレスの範囲は、各データタイプについて連続し得る。
【００７１】
たとえば、図３に示すように、ＩＯＭＭＵアドレス４４の範囲は、テクスチャデータを記憶しているストレージデバイス２０のストレージブロックのストレージデバイスアドレス、たとえば、ストレージデバイスアドレス４、８、および１を記憶しているアドレスブロックの連続ＩＯＭＭＵアドレスであり得る。ＩＯＭＭＵアドレス４４の範囲はＩＯＭＭＵアドレス０〜２を含み得る。ＩＯＭＭＵアドレス４６の範囲は、頂点データを記憶しているストレージデバイス２０のストレージブロックのストレージデバイスアドレス、たとえば、ストレージデバイスアドレス１０および５を記憶しているアドレスブロックの連続ＩＯＭＭＵアドレスであり得る。ＩＯＭＭＵアドレス４６の範囲はＩＯＭＭＵアドレス３および４を含み得る。ＩＯＭＭＵアドレス４８の範囲は、命令を記憶しているストレージデバイス２０のストレージブロックのストレージデバイスアドレス、たとえば、ストレージデバイスアドレス２および９を記憶しているアドレスブロックの連続ＩＯＭＭＵアドレスであり得る。ＩＯＭＭＵアドレス４８の範囲はＩＯＭＭＵアドレス５および６を含み得る。ＩＯＭＭＵアドレス５０の範囲は、定数を記憶しているストレージデバイス２０のストレージブロックのストレージデバイスアドレス、たとえば、ストレージデバイスアドレス０および６を記憶しているアドレスブロックの連続ＩＯＭＭＵアドレスであり得る。ＩＯＭＭＵアドレス５０の範囲はＩＯＭＭＵアドレス７および８を含み得る。ＩＯＭＭＵアドレス５２の範囲は、ピクセルデータを記憶しているストレージデバイス２０のストレージブロックのストレージデバイスアドレス、たとえば、ストレージデバイスアドレス１１、３、および７を記憶しているアドレスブロックの連続ＩＯＭＭＵアドレスであり得る。ＩＯＭＭＵアドレス５２の範囲はＩＯＭＭＵアドレス９〜１１を含み得る。図２の場合と同様に、図３に示すよりも多いまたは少ないテクスチャデータ、頂点データ、命令、定数、およびピクセルデータが存在し得る。
【００７２】
図３に示すように、図２と同様に、共通メモリキャッシュ２６はキャッシュライン４２を含み得る。また、図２と同様に、キャッシュライン４２のうちの各１つは、アドレスフィールド３０Ａと、データフィールド３０Ｂとを含み得る。図３に示す例では、アドレスフィールド３０Ａは、データフィールド３０Ｂに記憶されたグラフィックスデータがストレージデバイス２０に記憶されている場所のアドレスを記憶しているＩＯＭＭＵ２８のアドレスブロックのＩＯＭＭＵアドレスを示し得る。たとえば、図３中のキャッシュライン４２Ａのアドレスフィールド３０Ａは、ＩＯＭＭＵ２８のアドレスブロックのアドレスが１であることを示している。図３に示すように、ＩＯＭＭＵアドレス１はＩＯＭＭＵ２８のアドレスブロック１のためのものである。ＩＯＭＭＵのアドレスブロック１はストレージデバイスアドレス８を記憶している。ストレージデバイスアドレス８はストレージデバイス２０中のストレージブロック８に対応する。図３に示すように、ストレージデバイス２０のストレージブロック８は第２のテクスチャデータを記憶している。キャッシュライン４２Ａのデータフィールド３０Ｂは第２のテクスチャデータを記憶しており、その第２のテクスチャデータは、ストレージデバイスアドレス８をもつストレージブロック８に対応する。ストレージデバイスアドレス８はＩＯＭＭＵ２８のアドレスブロック１に対応し、アドレスブロック１のＩＯＭＭＵアドレスは１であり、その１はキャッシュライン４２Ａのデータフィールド３０Ａに対応する。
【００７３】
上記のように、いくつかの例では、キャッシュライン４２のうちの１つが記憶しているデータのタイプのグラフィックスデータが変化した場合、プロセッサ１２は、図３のキャッシュライン４２のうちのその１つを無効にし得る。前述のように、テクスチャ画像が変化し、プロセッサ１２は、テクスチャデータを記憶しているキャッシュライン４２のうちの１つまたは複数のキャッシュラインを無効にする必要があり得ると仮定する。キャッシュライン４２のうちの１つがテクスチャデータを記憶しているかどうかを判断するために、プロセッサ１２は、キャッシュラインのうちの各々のアドレスフィールド３０Ａを、テクスチャデータに割り当てられたＩＯＭＭＵアドレスの連続範囲と比較し得る。
【００７４】
たとえば、図２の例と同様に、プロセッサ１２は、連続ＩＯＭＭＵアドレス０〜２を含むＩＯＭＭＵアドレス４４の連続範囲をテクスチャデータに割り当てた。この例では、プロセッサ１２は、キャッシュライン４２のうちの各々のアドレスフィールド３０Ａを比較して、それがＩＯＭＭＵアドレス４４の連続範囲内にあるかどうかを判断し得る。図３中のキャッシュライン４２Ａのアドレスフィールド３０Ａは、ＩＯＭＭＵアドレス４４の連続範囲内にある。この例では、プロセッサ１２はキャッシュライン４２Ａを無効にし得る。
【００７５】
図４は、本開示の態様を実装するように構成され得るデバイス１０の例示的な動作を示す流れ図である。説明のために、図１、図２、および図３への参照を行う。上記で説明したように、処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４は、ストレージデバイス２０のストレージ空間を、複数のストレージブロックをそれぞれ含むセグメントに断片化するか、または、ＩＯＭＭＵ２８のアドレス空間を、複数のアドレスブロックをそれぞれ含むセグメントに断片化し得る。説明のために、ストレージデバイス２０のストレージブロック、およびＩＯＭＭＵ２８のアドレスブロックを、概してブロックと呼ぶことがある。
【００７６】
処理ユニットが、第１のデータタイプのためにアドレスの第１の連続範囲を割り当て、第２のデータタイプのためにアドレスの第２の連続範囲を割り当てる（５４）。第１のデータタイプと、第２のデータタイプとは、グラフィックス処理のための異なるデータタイプであり得る。たとえば、図２に示すように、ストレージデバイスアドレス３２、３４、３６、３８、および４０の連続範囲のうちの１つが、アドレスの第１の連続範囲を備え得る。ストレージデバイスアドレス３２、３４、３６、３８、および４０の連続範囲のうちの別の１つが、アドレスの第２の連続範囲を備え得る。また、図２に示すように、ストレージデバイスアドレス３２、３４、３６、３８、および４０の連続範囲のうちの各１つは、特定のデータタイプのために割り当てられる。ストレージデバイスアドレス３２、３４、３６、３８、および４０の連続範囲のうちの各１つの割り当てられたデータタイプは、第１のデータタイプを備え得る。ストレージデバイスアドレス３２、３４、３６、３８、および４０の連続範囲のうちの別の１つの割り当てられたデータタイプは、第２のデータタイプを備え得る。
【００７７】
別の例として、図４に示すように、ＩＯＭＭＵアドレス４４、４６、４８、５０、および５２の連続範囲のうちの１つが、アドレスの第１の連続範囲を備え得る。ＩＯＭＭＵアドレス４４、４６、４８、５０、および５２の連続範囲のうちの別の１つが、アドレスの第２の連続範囲を備え得る。また、図３に示すように、ＩＯＭＭＵアドレス４４、４６、４８、５０、および５２の連続範囲のうちの各１つは、特定のデータタイプのために割り当てられる。ＩＯＭＭＵアドレス４４、４６、４８、５０、および５２の連続範囲のうちの各１つの割り当てられたデータタイプは、第１のデータタイプを備え得る。ＩＯＭＭＵアドレス４４、４６、４８、５０、および５２の連続範囲のうちの別の１つの割り当てられたデータタイプは、第２のデータタイプを備え得る。
【００７８】
処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４は、アドレスの第１の連続範囲内にアドレスがあるブロック内に、第１のデータタイプのグラフィックスデータ、または第１のデータタイプのグラフィックスデータのアドレスを記憶し、アドレスの第２の連続範囲内にアドレスがあるブロック内に、第２のデータタイプのグラフィックスデータ、または第２のデータタイプのグラフィックスデータのアドレスを記憶する（５６）。たとえば、図２に示すように、プロセッサ１２またはＧＰＵ１４は、ストレージデバイスアドレス３２の連続範囲内にアドレスがあるストレージデバイス２０のストレージブロック内にテクスチャデータを記憶し得る。図２に示すように、プロセッサ１２またはＧＰＵ１４は、特定のデータタイプのために割り当てられたアドレスの連続範囲内にアドレスがあるストレージデバイス２０のストレージブロック内にその特定のデータタイプのグラフィックスデータを記憶し得る。
【００７９】
別の例として、図３に示すように、処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４は、ＩＯＭＭＵアドレス４４の連続範囲内にアドレスがあるＩＯＭＭＵ２８のアドレスブロック内に、テクスチャデータがストレージデバイス２０に記憶されている場所のアドレスを記憶し得る。図３に示すように、プロセッサ１２またはＧＰＵ１４は、特定のデータタイプのために割り当てられたアドレスの連続範囲内にアドレスがあるストレージデバイス２０のストレージブロック内に、その特定のデータタイプのグラフィックスデータの記憶されている場所のアドレスを記憶し得る。
【００８０】
プロセッサ１２またはＧＰＵ１４は、共通メモリキャッシュ２６の複数のキャッシュラインのうちのキャッシュラインのいくつかに第１のデータタイプのグラフィックスデータを記憶し、共通メモリキャッシュ２６の複数のキャッシュラインのうちのキャッシュラインのいくつかに第２のデータタイプのグラフィックスデータを記憶する（５８）。たとえば、図２および図３に示すように、共通メモリキャッシュ２６はキャッシュライン４２を含む。また、図２および図３に示すように、キャッシュライン４２Ｂおよび４２Ｅは、特定のデータタイプのグラフィックスデータ、たとえば、頂点データを記憶しているキャッシュラインのグループと見なされ得る。キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆは、特定のデータタイプのグラフィックスデータ、たとえば、ピクセルデータを記憶しているキャッシュラインの別のグループと見なされ得る。
【００８１】
図５は、共通メモリキャッシュ２６の複数のキャッシュラインのうちのどの１つが特定のデータタイプに関連するかを判断するための例示的な技法を示す流れ図である。説明のために、図１、図２、および図３への参照を行う。処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４が、各キャッシュラインのアドレスフィールドをアドレスの連続範囲と比較する（６０）。たとえば、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２のアドレスフィールド３０Ａを、図２のストレージデバイスアドレス３２、３４、３６、３８、および４０の連続範囲のうちの各１つと比較し得る。別の例として、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２のアドレスフィールド３０Ａを、図３のＩＯＭＭＵアドレス４４、４６、４８、５０、および５２の連続範囲のうちの各１つと比較し得る。
【００８２】
プロセッサ１２またはＧＰＵ１４は、その比較に基づいて、キャッシュライン４２のうちのどのキャッシュラインがどのデータタイプに関連するかを判断する（６２）。たとえば、プロセッサ１２またはＧＰＵ１４は、図２および図３に示すように、キャッシュライン４２Ａがテクスチャデータに関連し、キャッシュライン４２Ｂおよび４２Ｅが頂点データに関連し、キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆがピクセルデータに関連すると判断し得る。図２の例では、キャッシュライン４２Ａのアドレスフィールド３０Ａが、テクスチャデータを記憶しているストレージデバイス２０のストレージブロックのアドレスに対応するので、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２Ａがテクスチャデータに関連すると判断し得る。キャッシュライン４２Ｂおよび４２Ｅのアドレスフィールド３０Ａが、頂点データを記憶しているストレージデバイス２０のストレージブロックのアドレスに対応するので、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２Ｂおよび４２Ｅが頂点データに関連すると判断し得る。キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆのアドレスフィールド３０Ａが、ピクセルデータを記憶しているストレージデバイス２０のストレージブロックのアドレスに対応するので、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆがピクセルデータに関連すると判断し得る。
【００８３】
図３の例では、キャッシュライン４２Ａのアドレスフィールド３０Ａは、テクスチャデータがストレージブロック２０に記憶されている場所のアドレスを記憶しているＩＯＭＭＵ２８のアドレスブロックのアドレスに対応するので、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２Ａがテクスチャデータに関連すると判断し得る。キャッシュライン４２Ｂおよび４２Ｅのアドレスフィールド３０Ａは、頂点データがストレージブロック２０に記憶されている場所のアドレスを記憶しているＩＯＭＭＵ２８のアドレスブロックのアドレスに対応するので、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２Ｂおよび４２Ｅが頂点データに関連すると判断し得る。キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆのアドレスフィールド３０Ａは、ピクセルデータがストレージブロック２０に記憶されている場所のアドレスを記憶しているＩＯＭＭＵ２８のアドレスブロックのアドレスに対応するので、プロセッサ１２またはＧＰＵ１４は、キャッシュライン４２Ｃ、４２Ｄ、および４２Ｆがピクセルデータに関連すると判断し得る。
【００８４】
図６は、処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４によって実行される例示的な技法を示す流れ図である。説明のために、図１、図２、および図３への参照を行う。処理ユニット、たとえば、プロセッサ１２またはＧＰＵ１４が、第１のデータタイプのグラフィックスデータまたは第２のデータタイプのグラフィックスデータについての要求を受信する（６４）。この要求は、第１のデータタイプまたは第２のデータタイプのアドレスを含み得る。たとえば、シェーダプログラムなど、ＧＰＵ１４上で実行されるソフトウェアは、特定のデータタイプのグラフィックスデータ、たとえば、第１のデータタイプのグラフィックスデータまたは第２のデータタイプのグラフィックスデータをＧＰＵ１４に取り出させる要求を生成し得る。ＧＰＵ１４上で実行されるソフトウェアは、要求中の第１または第２のデータタイプのグラフィックスデータをそこから取り出すべきアドレスをＧＰＵ１４に与え得る。
【００８５】
プロセッサ１２またはＧＰＵ１４は、第１のデータタイプまたは第２のデータタイプのグラフィックスデータについての要求内のアドレスが、それぞれアドレスの第１の連続範囲またはアドレスの第２の連続範囲内にあると判断する（６６）。たとえば、シェーダプログラムが、テクスチャデータを要求し、ストレージデバイスアドレスまたはＩＯＭＭＵアドレスを含んだと仮定する。この例では、ＧＰＵ１４は、ストレージデバイスアドレスが図２のストレージデバイスアドレス３２の連続範囲内にあるかどうかを判断するか、またはＩＯＭＭＵアドレスが図３のＩＯＭＭＵアドレス４４の連続範囲内にあるかどうかを判断し得る。要求中のアドレスがアドレスの連続範囲内にあるかどうかを判断することによって、プロセッサ１２またはＧＰＵ１４は、プロセッサ１２またはＧＰＵ１４が不正確なデータを不注意に取り出さないことを保証し得る。
【００８６】
プロセッサ１２またはＧＰＵ１４は、次いで、その判断に基づいて要求を処理する（６８）。たとえば、第１のデータタイプまたは第２のデータタイプのグラフィックスデータについての要求が、それぞれアドレスの第１の連続範囲またはアドレスの第２の連続範囲内にある場合、プロセッサ１２またはＧＰＵ１４はその要求を処理し得る。しかしながら、第１のデータタイプまたは第２のデータタイプのグラフィックスデータについての要求が、それぞれアドレスの第１の連続範囲またはアドレスの第２の連続範囲内にない場合、プロセッサ１２またはＧＰＵ１４はその要求を処理しないことがある。
【００８７】
１つまたは複数の例では、説明した機能は、ハードウェア、ソフトウェア、ファームウェア、またはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、機能は、非一時的コンピュータ可読媒体を備える製造品に１つまたは複数の命令またはコードとして記憶され得る。コンピュータ可読媒体は、ある場所から別の場所へのコンピュータプログラムの転送を可能にする任意の媒体を含む、コンピュータデータストレージ媒体または通信媒体を含み得る。データストレージデバイスは、本開示で説明した技法の実装のための命令、コードおよび／またはデータ構造を取り出すために１つまたは複数のコンピュータあるいは１つまたは複数のプロセッサによってアクセスされ得る任意の利用可能な媒体であり得る。限定ではなく例として、そのようなコンピュータ可読媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭまたは他の光ディスクストレージ、磁気ディスクストレージ、または他の磁気ストレージデバイス、フラッシュメモリ、あるいは命令またはデータ構造の形態の所望のプログラムコードを搬送または記憶するために使用され得、コンピュータによってアクセスされ得る、任意の他の媒体を備えることができる。本明細書で使用するディスク（disk）およびディスク（disc）は、コンパクトディスク（disc）（ＣＤ）、レーザディスク（disc）、光ディスク（disc）、デジタル多用途ディスク（disc）（ＤＶＤ）、フロッピー（登録商標）ディスク（disk）およびブルーレイ（登録商標）ディスク（disc）を含み、ディスク（disk）は、通常、データを磁気的に再生し、ディスク（disc）は、データをレーザで光学的に再生する。上記の組合せもコンピュータ可読媒体の範囲内に含まれるべきである。
【００８８】
コードは、１つまたは複数のＤＳＰ、汎用マイクロプロセッサ、ＡＳＩＣ、ＦＰＧＡ、あるいは他の等価な集積回路またはディスクリート論理回路など、１つまたは複数のプロセッサによって実行され得る。さらに、いくつかの態様では、本明細書で説明した機能は、符号化および復号のために構成された専用のハードウェアおよび／またはソフトウェアモジュール内に与えられ得、あるいは複合コーデックに組み込まれ得る。また、本技法は、１つまたは複数の回路または論理要素中に十分に実装され得る。
【００８９】
本開示の技法は、ワイヤレスハンドセット、集積回路（ＩＣ）、またはＩＣのセット（たとえば、チップセット）を含む、多種多様なデバイスまたは装置において実装され得る。本開示では、開示する技法を実行するように構成されたデバイスの機能的態様を強調するために様々な構成要素、モジュール、またはユニットについて説明したが、それらの構成要素、モジュール、またはユニットを、必ずしも異なるハードウェアユニットによって実現する必要はない。むしろ、上記で説明したように、様々なユニットが、好適なソフトウェアおよび／またはファームウェアとともに、上記で説明した１つまたは複数のプロセッサを含めて、ハードウェアユニットにおいて組み合わせられるか、または相互動作ハードウェアユニットの集合によって与えられ得る。
【００９０】
様々な例について説明した。これらおよび他の例は以下の特許請求の範囲内に入る。
【図１】
0005694570.tif 000002
【図２】
0005694570.tif 000003
【図３】
0005694570.tif 000004
【図４】
0005694570.tif 000005
【図５】
0005694570.tif 000006
【図６】
0005694570.tif 000007