(57)【要約】  本開示は、表面の1つまたは複数のプロパティに基づいて、特定の表面に使用されるアドレススキャニングパターンを定義する適応メモリアドレススキャニング技法について説明する。さらに、並列に処理すべき表面のサブプリミティブの個数、形状、および配置が、判定され得る。本開示の一例において、グラフィックス処理のためのメモリアクセス方法は、グラフィックス処理ユニット(GPU)によって、表面のプロパティを判定するステップと、GPUによって、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定するステップと、GPUによって、判定されたメモリアドレススキャニング技法に基づいて、メモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するステップとを含む。
2018522307.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理のためのメモリアクセス方法であって、
グラフィックス処理ユニット(GPU)によって、表面のプロパティを判定するステップと、
前記GPUによって、前記表面の前記判定されたプロパティに基づいてメモリアドレススキャニング技法を判定するステップと、
前記GPUによって、前記判定されたメモリアドレススキャニング技法に基づいて、メモリ内の前記表面に関連するデータの読取または書込のうちの少なくとも1つを実行するステップと
を含む方法。
【請求項２】
前記表面の前記プロパティは、記憶モード、表面高さ、表面幅、画素圧縮の使用、マルチサンプルアンチエイリアシングの使用、画素サイズ、または画素フォーマットのうちの少なくとも1つを含む、請求項1に記載の方法。
【請求項３】
前記メモリアドレススキャニング技法を判定するステップは、
前記GPUによって、前記表面の前記プロパティに基づいて、前記表面をそれに分割すべきサブプリミティブの個数および形状を判定するステップと、
前記GPUによって、サブプリミティブの前記判定された個数および形状に基づいて、前記表面を1つまたは複数のサブプリミティブに分割するステップと
を含む、請求項2に記載の方法。
【請求項４】
前記メモリアドレススキャニング技法を判定するステップは、
前記GPUによって、前記表面の前記プロパティに基づいて、前記判定された個数のサブプリミティブの配置を判定するステップと、
前記GPUによって、前記表面を前記判定された個数のサブプリミティブの前記判定された配置に分割するステップと
をさらに含む、請求項3に記載の方法。
【請求項５】
前記表面に関連する前記データの前記読取または前記書込のうちの前記少なくとも1つを実行するステップは、
前記GPUによって、前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを実行するステップ
を含む、請求項3に記載の方法。
【請求項６】
前記表面の前記プロパティに基づいて、データの前記読取または前記書込のうちの前記少なくとも1つを実行するのに使用される並列アドレススキャニングエンジンの個数を判定するステップと、
前記判定された個数の並列アドレススキャニングエンジンを用いて、前記データの前記読取または前記書込のうちの前記少なくとも1つを実行するステップと
をさらに含む、請求項5に記載の方法。
【請求項７】
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを実行するステップは、前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを並列に実行するステップを含む、請求項5に記載の方法。
【請求項８】
前記メモリアドレススキャニング技法を判定するステップは、
前記GPUによって、前記表面の前記プロパティに基づいて、前記表面をそれに分割すべきサブプリミティブの個数および形状を判定するステップと、
前記GPUによって、前記表面の前記プロパティに基づいて、サブプリミティブの前記判定された個数および前記形状に関するスキャニングパターンを判定するステップと
を含む、請求項2に記載の方法。
【請求項９】
前記表面の前記プロパティに基づいて、サブプリミティブの前記判定された個数に関する前記スキャニングパターンを判定するステップは、前記GPUによって、前記判定された個数のサブプリミティブごとに独立に前記スキャニングパターンを判定するステップを含む、請求項8に記載の方法。
【請求項１０】
グラフィックス処理のためにメモリにアクセスするように構成された電子デバイスであって、
表面に関連するデータを記憶するように構成されたメモリと、
前記メモリと通信しているグラフィックス処理ユニット(GPU)であって、
前記表面のプロパティを判定し、
前記表面の前記判定されたプロパティに基づいてメモリアドレススキャニング技法を判定し、
前記判定されたメモリアドレススキャニング技法に基づいて、前記メモリ内の前記表面に関連するデータの読取または書込のうちの少なくとも1つを実行する
ように構成された、GPUと
を含む電子デバイス。
【請求項１１】
前記表面の前記プロパティは、記憶モード、表面高さ、表面幅、画素圧縮の使用、マルチサンプルアンチエイリアシングの使用、画素サイズ、または画素フォーマットのうちの少なくとも1つを含む、請求項10に記載の電子デバイス。
【請求項１２】
前記メモリアドレススキャニング技法を判定するために、前記GPUは、
前記表面の前記プロパティに基づいて、前記表面をそれに分割すべきサブプリミティブの個数および形状を判定し、
サブプリミティブの前記判定された個数および前記形状に基づいて、前記表面を1つまたは複数のサブプリミティブに分割する
ようにさらに構成される、請求項11に記載の電子デバイス。
【請求項１３】
前記メモリアドレススキャニング技法を判定するために、前記GPUは、
前記表面の前記プロパティに基づいて、前記判定された個数のサブプリミティブの配置を判定し、
前記表面を前記判定された個数のサブプリミティブの前記判定された配置に分割する
ようにさらに構成される、請求項12に記載の電子デバイス。
【請求項１４】
前記表面に関連する前記データの前記読取または前記書込のうちの前記少なくとも1つを実行するために、前記GPUは、
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを実行する
ようにさらに構成される、請求項12に記載の電子デバイス。
【請求項１５】
前記GPUは、
前記表面の前記プロパティに基づいて、データの前記読取または前記書込のうちの前記少なくとも1つを実行するのに使用される前記GPUの並列アドレススキャニングエンジンの個数を判定し、
前記判定された個数の並列アドレススキャニングエンジンを用いて、前記データの前記読取または前記書込のうちの前記少なくとも1つを実行する
ようにさらに構成される、請求項14に記載の電子デバイス。
【請求項１６】
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを実行するために、前記GPUは、
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを並列に実行する
ようにさらに構成される、請求項14に記載の電子デバイス。
【請求項１７】
前記メモリアドレススキャニング技法を判定するために、前記GPUは、
前記表面の前記プロパティに基づいて、前記表面をそれに分割すべきサブプリミティブの個数および形状を判定し、
前記表面の前記プロパティに基づいて、サブプリミティブの前記判定された個数および前記形状に関するスキャニングパターンを判定する
ようにさらに構成される、請求項11に記載の電子デバイス。
【請求項１８】
前記表面の前記プロパティに基づいて、サブプリミティブの前記判定された個数に関する前記スキャニングパターンを判定するために、前記GPUは、
前記判定された個数のサブプリミティブごとに独立に前記スキャニングパターンを判定する
ようにさらに構成される、請求項17に記載の電子デバイス。
【請求項１９】
前記メモリおよび前記GPUは、モバイル通信デバイスの一部である、請求項11に記載の電子デバイス。
【請求項２０】
前記GPUに前記表面をレンダリングさせるアプリケーションを実行するプロセッサと、
前記アプリケーションに従って前記レンダリングされた表面を表示するように構成されたディスプレイと
をさらに含む、請求項19に記載の電子デバイス。
【請求項２１】
グラフィックス処理のためにメモリにアクセスするように構成されたグラフィックス処理ユニット(GPU)であって、
表面のプロパティを判定し、
前記表面の前記判定されたプロパティに基づいてメモリアドレススキャニング技法を判定する
ように構成された2Dディスパッチプロセッサと、
前記判定されたメモリアドレススキャニング技法に基づいて、メモリ内の前記表面に関連するデータの読取または書込のうちの少なくとも1つを実行する
ように構成された少なくとも1つの2Dサブエンジンと
を含むGPU。
【請求項２２】
前記表面の前記プロパティは、記憶モード、表面高さ、表面幅、画素圧縮の使用、マルチサンプルアンチエイリアシングの使用、画素サイズ、または画素フォーマットのうちの少なくとも1つを含む、請求項21に記載のGPU。
【請求項２３】
前記メモリアドレススキャニング技法を判定するために、前記2Dディスパッチプロセッサは、
前記表面の前記プロパティに基づいて、前記表面をそれに分割すべきサブプリミティブの個数および形状を判定し、
サブプリミティブの前記判定された個数および前記形状に基づいて、前記表面を1つまたは複数のサブプリミティブに分割する
ようにさらに構成される、請求項22に記載のGPU。
【請求項２４】
前記メモリアドレススキャニング技法を判定するために、前記2Dディスパッチプロセッサは、
前記表面の前記プロパティに基づいて、前記判定された個数のサブプリミティブの配置を判定し、
前記表面を前記判定された個数のサブプリミティブの前記判定された配置に分割する
ようにさらに構成される、請求項23に記載のGPU。
【請求項２５】
前記表面に関連する前記データの前記読取または前記書込のうちの前記少なくとも1つを実行するために、前記少なくとも1つの2Dサブエンジンは、
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを実行する
ようにさらに構成される、請求項23に記載のGPU。
【請求項２６】
前記2Dディスパッチプロセッサは、
前記表面の前記プロパティに基づいて、データの前記読取または前記書込のうちの前記少なくとも1つを実行するのに使用される前記GPUの前記少なくとも1つの2Dサブエンジンの個数を判定し、
前記判定された個数の前記少なくとも1つの2Dサブエンジンを用いて、前記データの前記読取または前記書込のうちの前記少なくとも1つを実行する
ようにさらに構成される、請求項25に記載のGPU。
【請求項２７】
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを実行するために、前記少なくとも1つの2Dサブエンジンは、
前記1つまたは複数のサブプリミティブの各々に関連するデータの前記読取または前記書込のうちの前記少なくとも1つを並列に実行する
ようにさらに構成される、請求項25に記載のGPU。
【請求項２８】
前記メモリアドレススキャニング技法を判定するために、前記2Dディスパッチプロセッサは、
前記表面の前記プロパティに基づいて、前記表面をそれに分割すべきサブプリミティブの個数および形状を判定し、
前記表面の前記プロパティに基づいて、サブプリミティブの前記判定された個数および前記形状に関するスキャニングパターンを判定する
ようにさらに構成される、請求項22に記載のGPU。
【請求項２９】
前記表面の前記プロパティに基づいて、サブプリミティブの前記判定された個数に関する前記スキャニングパターンを判定するために、前記2Dディスパッチプロセッサは、
前記判定された個数のサブプリミティブごとに独立に前記スキャニングパターンを判定する
ようにさらに構成される、請求項28に記載のGPU。
【請求項３０】
グラフィックス処理のためにメモリにアクセスするように構成された装置であって、
表面のプロパティを判定するための手段と、
前記表面の前記判定されたプロパティに基づいてメモリアドレススキャニング技法を判定するための手段と、
前記判定されたメモリアドレススキャニング技法に基づいて、メモリ内の前記表面に関連するデータの読取または書込のうちの少なくとも1つを実行するための手段と
を含む装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、グラフィックス処理のためのメモリ動作に関し、より具体的には、コンピュータメモリシステム内のアドレススキャニングに関する。
【背景技術】
【０００２】
グラフィックス処理ユニット(GPU)を使用するシステムを含むコンピューティングシステムは、使用可能メモリ帯域幅の量を増加させることによってメモリボトルネックを軽減するためにマルチチャネルメモリシステムを使用する場合がある。たとえば、マルチチャネルメモリシステムは、それぞれが別々のメモリユニットを制御する複数のメモリコントローラを含むことができる。複数のメモリコントローラは、単一のメモリコントローラよりも多数のメモリ要求をハンドリングできることによって、単一メモリコントローラのみを含むメモリシステムと比較して、マルチチャネルメモリシステムの使用可能帯域幅を増加させる。
【０００３】
マルチチャネルメモリシステムの性能は、メモリシステムのメモリチャネルにまたがる使用可能帯域幅の利用を最大にするために、マルチチャネルメモリシステム内のメモリチャネルの作業負荷をよく平衡化された状態に保つことによって最適化され得る。よく平衡化されたマルチチャネルメモリシステム内で、メモリ負荷は、メモリシステム内のメモリコントローラにまたがって分散され得る。逆に、マルチチャネルメモリシステムのメモリチャネル内の不平衡なメモリ負荷は、マルチチャネルメモリシステムの利点を減少させる可能性がある。たとえば、メモリシステムが不平衡であり、その結果、メモリシステム内のメモリチャネルの一部が、メモリシステム内の他のメモリチャネルと比較して不釣り合いな量のメモリ負荷を引き受ける場合に、メモリシステム内のこれらの他のメモリチャネルは、十分に利用されない使用可能メモリ帯域幅を有する可能性があり、これによってメモリシステムの性能を低下させる。
【発明の概要】
【課題を解決するための手段】
【０００４】
全般的に、本開示は、グラフィックス処理システム内でメモリにアクセスする技法について説明する。具体的には、本開示は、表面の1つまたは複数のプロパティに基づいて、特定の表面に使用されるアドレススキャニングパターンを定義する適応メモリアドレススキャニング技法について説明する。
【０００５】
本開示の一例において、グラフィックス処理のためのメモリアクセス方法は、グラフィックス処理ユニット(GPU)によって、表面のプロパティを判定するステップと、GPUによって、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定するステップと、GPUによって、判定されたメモリアドレススキャニング技法に基づいて、メモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するステップとを含む。
【０００６】
本開示の別の例において、グラフィックス処理のためにメモリにアクセスするように構成された電子デバイスは、表面に関連するデータを記憶するように構成されたメモリと、メモリと通信しているGPUであって、表面のプロパティを判定し、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定し、判定されたメモリアドレススキャニング技法に基づいて、メモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するように構成された、GPUとを含む。
【０００７】
本開示の別の例において、グラフィックス処理のためにメモリにアクセスするように構成されたグラフィックス処理ユニット(GPU)は、表面のプロパティを判定し、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定するように構成された2Dディスパッチプロセッサと、判定されたメモリアドレススキャニング技法に基づいて、メモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するように構成された少なくとも1つの2Dサブエンジンとを含む。
【０００８】
本開示の別の例において、グラフィックス処理のためにメモリにアクセスするように構成された装置は、表面のプロパティを判定するための手段と、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定するための手段と、判定されたメモリアドレススキャニング技法に基づいて、メモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するための手段とを含む。
【０００９】
1つまたは複数の例の詳細が、添付図面および下の説明において示される。他の特徴、目的、および利点は、説明および図面から、ならびに特許請求の範囲から明らかになろう。
【図面の簡単な説明】
【００１０】
【図１】本開示の諸態様による例のコンピューティングデバイスを示すブロック図である。
【図２】本開示のいくつかの例による図1のコンピューティングデバイスの例を示すブロック図である。
【図３】本開示のいくつかの例による図1のコンピューティングデバイスの別の例を示すブロック図である。
【図４】図1のコンピューティングデバイスの例のグラフィックス処理ユニット(GPU)および他のハードウェアをより詳細に示すブロック図である。
【図５】本開示の一例による2次元(2D)表面を示す概念図である。
【図６】アドレススキャニングの一例を示す概念図である。
【図７】本開示の例による例の表面形状配置を示す概念図である。
【図８】例のメモリバンク配置を示す概念図である。
【図９】本開示の一例による例のアドレススキャニング順序を示す概念図である。
【図１０】本開示の一例によるスーパーブロックの例のサイズを示す表である。
【図１１】本開示の一例による例のスーパーブロックアドレススキャニング順序を示す概念図である。
【図１２】本開示の別の例による例のスーパーブロックアドレススキャニング順序を示す概念図である。
【図１３】本開示の一例による基本ブロックの例のサイズを示す表である。
【図１４】本開示の一例による例の基本ブロックアドレススキャニング順序を示す概念図である。
【図１５】本開示の別の例による例の基本ブロックアドレススキャニング順序を示す概念図である。
【図１６】本開示の一例による例の読取/書込アドレススキャニング順序を示す概念図である。
【図１７】本開示のいくつかの例による例の方法を示す流れ図である。
【発明を実施するための形態】
【００１１】
モバイルデバイスにおいて、メモリ効率は、モバイルデバイスの性能および電力効率にとって重要な態様である。イメージまたは表面のレンダリングが、多数のメモリアクセスを必要とする可能性があるので、メモリ効率は、グラフィックス処理ユニットの動作にとって特に重要である可能性がある。いくつかの例において、低いメモリ効率は、非効率なアドレッシングパターン(すなわち、イメージまたは表面の画素がメモリ内でアクセスされる順序)によって引き起こされる可能性があり、この非効率なアドレッシングパターンは、多数のページミス、バンク衝突、読取/書込切替、および他の同様のアドレッシング問題をもたらす可能性がある。多くの現代のメモリシステムは、単一のより最適のアドレッシング方式を設計することによってメモリ効率を改善することを試みる。しかしながら、イメージおよび表面のデータサイズおよびデータ編成フォーマットは、通常、様々なアプリケーションに関して異なる。したがって、1つのアドレッシング方式がすべてのユースケースに関して効率的になることは、困難である。
【００１２】
GPU内では、いわゆる「2Dエンジン」が、データ移動、データコピー、データ変換、アドレス再配置、スケーリング、および、これによってデータがメモリからアクセスされまたはメモリに書き込まれる他の機能の責任を負う場合がある。そのような2Dエンジンの効率は、GPUの総合性能および電力効率に対する影響を有する。2Dエンジンは、様々なイメージ/表面フォーマットにおいてデータをハンドリングする責任を負う場合がある。たとえば、イメージ/表面は、1次元、2次元、または3次元において編成され得る。イメージ/表面を表すデータは、リニアモード(データが直線内に配置される)、タイリングモード(データが長方形ブロック内に配置される)、およびマクロタイルモード(データが複数の長方形サブブロックを有するブロック内に配置される)を含む様々な異なるモード(すなわち、記憶モード)においても記憶され得る。さらに、イメージ/表面内の画素は、異なるビット長を有する場合がある。メモリ効率をよりよく改善するために、2Dエンジンの読取アクションおよび書込アクションは、タイプライタースキャニング、タイルベースのスキャニング、ヒルベルトスキャニング、特殊なスキャニングなどを含む特定のメモリアドレッシングパターンを使用することができる。しかしながら、そのようなパターンは、いくつかのイメージ/表面フォーマットに関する効率的なメモリ使用だけを可能にすることができ、他のイメージ/表面フォーマットに関して、全般的に劣悪な選択である可能性がある。
【００１３】
これらの短所に鑑みて、本開示は、適応メモリアドレススキャニング技法を提案する。本開示の適応メモリアドレススキャニング技法は、表面の1つまたは複数のプロパティに基づいて特定の表面に使用されるアドレススキャニングパターンを定義することができる。
【００１４】
図1は、本開示の適応メモリアドレススキャニング技法を実施するように構成された例のコンピューティングデバイスを示すブロック図である。図1内に示されているように、デバイス100は、ディスプレイ103、処理ユニット102、グラフィックス処理ユニット(GPU)114、メモリシステム107、ディスプレイプロセッサ113、トランシーバモジュール115、およびユーザインターフェース117を含むことができる。デバイス100の例は、メディアプレイヤ、セットトップボックスなどのビデオデバイス、携帯電話機などのワイヤレスハンドセット、携帯情報端末(PDA)、デスクトップコンピュータ、ラップトップコンピュータ、ゲーム機、ビデオ会議ユニット、タブレットコンピューティングデバイス、および類似物を含むことができるが、これに限定はされない。
【００１５】
処理ユニット102は、中央処理装置(CPU)、コプロセッサ、および類似物などであるがこれに限定されない1つまたは複数のプログラマブルプロセッサを含むことができる。GPU 114は、デバイス100の一部とされまたはデバイス100に結合され得るディスプレイ103の画素の画素値を判定することなどのグラフィックス関連機能を実行し、ディスプレイの画素をレンダリングするように構成され得る。たとえば、処理ユニット102は、ビデオゲーム、ウェブブラウザ、電子メールアプリケーション、または提示されるグラフィックスを作成する任意の他のアプリケーションなど、メモリシステム107内に記憶されたアプリケーションを実行することができる。処理ユニット102は、カラー値、不透明度値、およびアプリケーションの実行によって作成されるグラフィックスの他のそのような値などの画素値を判定するためにグラフィックス関連機能を実行するようにGPU 114に命令することができる。それに応答して、GPU 114は、グラフィックス関連機能を実行し、判定された画素値に基づいてディスプレイの画素をレンダリングすることができる。
【００１６】
グラフィックス処理ユニット(GPU)ドライバ116は、処理ユニット102がグラフィックス関連機能を実行するようにGPU 114に命令することを可能にする、処理ユニット102とGPU 114との間のインターフェースとして機能することができる。たとえば、処理ユニット102が、GPU 114にコマンドまたは命令を送信する必要がある場合に、処理ユニット102は、GPUドライバ116を介してGPU 114にコマンドまたは命令を送信することができる。処理ユニット102がGPU 114に送信することのできるコマンドまたは命令は、頂点シェーダおよびフラグメントシェーダなどのシェーダプログラムの命令をロードし、実行するコマンドと、GPU 114がメモリシステム107から画素値を取り出しまたはメモリシステム107に画素値を記憶することのできる仮想メモリアドレスを示すコマンドとを含むことができる。この形において、処理ユニット102は、GPU 114の動作を制御することができる。
【００１７】
GPU 114が画素値を取り出しまたは記憶するのに利用する仮想アドレスは、画素値が記憶されまたは取り出される場所の実際の位置をGPU 114から「隠された」状態に保つ仮想メモリ方式の一部とすることができる。たとえば、仮想メモリは、GPU 114が画素値を取り出し、記憶するために仮想アドレスを参照することだけを必要とすることができるようにするために、メモリシステム107を仮想化するメモリ管理技法である。これらの例において、処理ユニット102のGPUドライバ116は、画素値をどこに記憶すべきかまたは画素値をどこから取り出すべきかをGPU 114に示す仮想アドレスを、GPU 114に送信することができる。
【００１８】
メモリシステム107の例は、ランダムアクセスメモリ(RAM)、シンクロナスダイナミックRAM(SDRAM)、ダブルデータレートSDRAM(DDR SDRAM)、読取専用メモリ(ROM)、電気的消去可能プログラマブル読取専用メモリ(EEPROM)、フラッシュメモリ、またはデータ(たとえば、GPU 114によってレンダリングされる表面に関連するデータ)を記憶するのに使用できる任意の他の媒体を含む1つまたは複数のメモリユニットを含むが、これに限定はされない。メモリシステム107は、命令またはデータ構造の形において、処理ユニット102およびGPU 114によってアクセスされ得るプログラムコードを記憶するようにも構成され得る。いくつかの例において、メモリシステム107は、コンピュータ可読記憶デバイスなど、1つまたは複数のコンピュータ可読記憶媒体を含むことができる。たとえば、メモリシステム107は、処理ユニット102およびGPU 114に、本明細書内でそれらに帰せられる機能を実行させる命令を含むことができる。
【００１９】
メモリシステム107は、いくつかの例において、非一時的記憶媒体と考えられ得る。「非一時的」という用語は、記憶媒体が、搬送波または伝搬される信号内で実施されないことを示すことができる。しかしながら、「非一時的」という用語は、メモリシステム107が移動不可能であることを意味すると解釈されるべきではない。一例として、メモリシステム107は、デバイス100から取り外され、別のデバイスに移動され得る。別の例として、メモリシステム107に実質的に類似する記憶デバイスが、デバイス100内に挿入され得る。ある種の例において、非一時的記憶媒体は、経時的に変化し得るデータを(たとえば、RAM内に)記憶することができる。
【００２０】
GPUドライバ116は、処理ユニット102上で実行しているソフトウェアとすることができる。この例において、メモリシステム107は、処理ユニット102が実行のために取り出す、GPUドライバ116のソースコードまたはオブジェクトコードを記憶する。代替案では、GPUドライバ116は、処理ユニット102内に組み込まれたハードウェア、または処理ユニット102およびGPU 114を結合する、処理ユニット102の外部のハードウェアとすることができる。いくつかの例において、GPUドライバ116は、ハードウェア、ソフトウェア、ファームウェア、および類似物(その任意の組合せを含む)とすることができる。例示および明瞭さのために、本開示において説明される例は、GPUドライバ116が処理ユニット102上で実行中のソフトウェアであるという文脈において説明される。
【００２１】
デバイス100は、明瞭さのために図1内には示されていない追加のモジュールまたはユニットを含むことができる。たとえば、デバイス100は、デバイス100が携帯ワイヤレス電話である例において電話通信をもたらすために、いずれもが図1内に示されていないスピーカおよびマイクロフォンを、あるいは、デバイス100がメディアプレイヤである場合にはスピーカを含むことができる。デバイス100は、ビデオカメラも含むことができる。さらに、デバイス100内に示された様々なモジュールおよびユニットは、デバイス100のすべての例において必要とは限らない。たとえば、ユーザインターフェース117およびディスプレイ103は、デバイス100が、デスクトップコンピュータであるか、外部のユーザインターフェースもしくはディスプレイとインターフェースするために装備された他のデバイスである例において、デバイス100の外部とすることができる。
【００２２】
ユーザインターフェース117の例は、トラックボール、マウス、キーボード、および他のタイプの入力デバイスを含むが、これに限定はされない。ユーザインターフェース117は、タッチスクリーンとすることもでき、ディスプレイ103の一部として組み込まれ得る。トランシーバモジュール115は、デバイス100と別のデバイスまたはネットワークとの間のワイヤレス通信または有線通信を可能にするための回路網を含むことができる。トランシーバモジュール115は、変調器、復調器、増幅器、および有線通信またはワイヤレス通信用の他のそのような回路網を含むことができる。
【００２３】
ディスプレイ103は、GPU 114によって生成されたイメージコンテンツを表示する、デバイス100のディスプレイとすることができる。たとえば、ラスタ化プロセス中に、GPU 114は、ディスプレイ103をディスプレイタイルに分割し、ディスプレイタイルの各1つ内にイメージの対応する部分をレンダリングすることができる。ディスプレイ103は、液晶ディスプレイ(LCD)、有機発光ダイオードディスプレイ(OLED)、陰極線管(CRT)ディスプレイ、プラズマディスプレイ、または別のタイプのディスプレイデバイスとすることができる。
【００２４】
本開示の技法によれば、GPU 114を含むデバイス100は、グラフィックス処理のためのメモリアクセス方法を実行するように構成され得る。一例において、GPU 114は、表面のプロパティを判定し、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定し、判定されたメモリアドレススキャニング技法に基づいてメモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するように構成され得る。
【００２５】
図2は、本開示のいくつかの例による図1のコンピューティングデバイスの態様の例を示すブロック図である。たとえば、図2は、図1のデバイス100をさらに詳細に示す場合がある。簡潔さのために、図1内に示されたデバイス100の構成要素ではなく図2内に示されたデバイス100の構成要素だけが、下で詳細に説明される。図2内に示されているように、デバイス100は、メモリインターフェースユニット(MIF)104、メモリ管理ユニット(MMU)105、メモリコントローラ106A、およびメモリコントローラ106Bをさらに含むことができる。処理ユニット102およびGPU 114は、MIF 104、MMU 105、ならびにメモリコントローラ106Aおよび106Bを介してメモリシステム107内にデータを記憶し、これからデータを取り出すことができる。処理ユニット102、GPU 114、およびメモリシステム107は、図2内に示されているように、図1内に示されたものに実質的に類似することができる。
【００２６】
いくつかの例において、デバイス100は、集積回路(IC)101を含むことができ、IC 101は、処理ユニット102、GPU 114、MIF 104、MMU 105、メモリコントローラ106A、およびメモリコントローラ106Bを含むことができる。いくつかの例において、図1のトランシーバモジュール115およびディスプレイプロセッサ113は、両方ともIC 101の一部とすることができ、両方ともIC 101の外部とすることができ、あるいは、一方はIC 101の一部、他方はIC 101の外部とすることができる。図2は、共通のパッケージ(たとえば、共通のハードウェアチップまたは集積回路)内に存在するものとしてGPU 114および処理ユニット102を示すが、本開示の諸態様は、それに限定されない。いくつかの例において、処理ユニット102は、IC 101の外部とすることができる。さらに、処理ユニット102がIC 101の外部にある例において、GPU 114は、MIF 104とメモリコントローラ106Aおよび106Bとを含むことができるが、これは、処理ユニット102がパッケージの外部にあるすべての例における要件ではない。
【００２７】
したがって、いくつかの例において、処理ユニット102、GPU 114、MIF 104、ならびにメモリコントローラ106Aおよび106Bは、個々のハードウェアチップとすることができ、IC 101は、これらのハードウェアチップの組合せを含むことができる。他の例において、1つのハードウェアチップが、処理ユニット102、MIF 104、ならびにメモリコントローラ106Aおよび106Bのうちの1つまたは複数を含むことができ、別のハードウェアチップが、GPU 114を含むことができる。そのような例において、IC 101は、この2つのハードウェアチップの両方を含むことができる。処理ユニット102、GPU 114、MIF 104、ならびにメモリコントローラ106Aおよび106Bが共通のパッケージ内に図示されている図2に示された例を含む、他のそのような置換および組合せが可能である場合がある。さらに、IC 101は、ビデオコーダまたは他の適切な構成要素など、図2内に示されたもの以外の追加構成要素を含むことができる。
【００２８】
IC 101は、加速された形においてグラフィックスをレンダリングする超並列処理能力など、特定の性能判断基準を伴うグラフィックスのレンダリングなど、特定の目的のために設計された特殊化されたハードウェアユニットとすることができる。場合によっては、IC 101は、デジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積回路もしくはディスクリート論理回路網と組み合わされた特殊化されたハードウェアを含むことができる。たとえば、GPU 114は、特殊化されたハードウェアとすることができ、処理ユニット102は、DSP、汎用マイクロプロセッサ、ASIC、FPGA、または任意の他の適切なハードウェアとすることができる。
【００２９】
上で示したように、GPU 114は、メモリシステム107内に画素値を記憶し、メモリシステム107から画素値を取り出すことができる。メモリシステム107にアクセスするために、GPU 114は、MIF 104とメモリコントローラ106Aおよび106Bとを使用することができる。MIF 104とメモリコントローラ106Aおよび106Bとは、ハードウェア、ソフトウェア、ファームウェア、および類似物(その任意の組合せを含む)とすることができる。
【００３０】
いくつかの例において、MIF 104は、処理ユニット102およびGPU 114などのプロセッサとメモリシステム107との間のインターフェースを提供することができる。MIF 104は、MMU 105を含むことができ、MMU 105は、メモリシステム107内の物理メモリアドレスへの論理メモリアドレスの変換の実行ならびに他のタスクの実行を含む、処理ユニット102からメモリシステム107へのアクセスの要求をハンドリングすることができる。メモリコントローラ106Aおよび106Bは、それぞれのメモリユニット108Aおよび108Bに出入りするデータの流れを調整することができる。メモリコントローラ106Aおよび106Bの各1つは、メモリシステム107のメモリユニット108Aおよび108Bの対応する1つへのアクセスを提供することができる。メモリユニット108Aおよび108Bの各1つは、別々にアクセス可能である、メモリシステム107の別個の部分とすることができる。この文脈において、メモリユニット108Aは、メモリユニット108Bとは別々のメモリ「チャネル」と考えられ得る。メモリシステム107は、複数のメモリユニット108Aおよび108Bを含むことができ、メモリユニット108Aおよび108Bへのアクセスは、メモリコントローラ106Aおよび106Bの対応する1つによって提供される。
【００３１】
いくつかの例において、メモリユニット108Aおよび108Bのうちの1つは、メモリコントローラ106Aおよび106Bのその対応する1つだけを介し、他のメモリコントローラを介さずにアクセス可能とすることができる。たとえば、メモリコントローラ106Aがメモリユニット108Aに対応する場合に、メモリユニット108Aは、メモリコントローラ106Aを介してアクセス可能であるのみとすることができ、メモリコントローラ106Bは、メモリユニット108Aにアクセスできないものとすることができる。この形において、メモリコントローラ106Aおよび106Bの各1つは、その対応するメモリユニット108Aおよび108Bを介してメモリシステム107へのメモリチャネルを提供する。
【００３２】
本開示の態様は、2つのメモリコントローラ106Aおよび106Bを含むデバイス100と、2つのメモリユニット108Aおよび108Bを含むメモリシステム107とを用いて説明されるが、いくつかの他の例において、デバイス100は、4つのメモリコントローラなど、3つ以上のメモリコントローラを含むことができる。他の例において、メモリシステム107は、4つのメモリユニットなど、3つ以上のメモリユニットを含むことができ、本開示内で説明される技法は、そのような例にも拡張可能とすることができる。メモリシステム107が、2つのメモリユニットを含む例において、それぞれメモリシステム107内の2つのメモリユニット108Aおよび108Bへの2つのメモリコントローラ106Aおよび106Bによって提供される2つのチャネルがあるので、メモリシステム107は、デュアルチャネルメモリシステムと呼ばれる場合がある。
【００３３】
MIF 104は、GPU 114および処理ユニット102が、それぞれメモリコントローラ106Aおよび106Bを介してメモリユニット108Aおよび108Bからのデータ(たとえば、画素値)にアクセスすることを可能にするインターフェースとすることができる。たとえば、MIF 104は、仮想メモリアドレスを物理メモリアドレスにマッピングするMMU 105を含むことができる。たとえば、メモリシステム107内の特定のメモリアドレスに画素値を記憶し、またはそこから画素値を取り出すために、GPU 114は、その特定のメモリアドレスに関連する仮想メモリアドレスをMIF 104に出力することができる。MIF 104のMMU 105は、仮想メモリアドレスから特定のメモリアドレスを判定し、メモリシステム107内のその特定のメモリアドレスにアクセスすることができる。本開示において、「論理」および「仮想」という用語は、メモリおよびメモリアドレスに言及する時に交換可能に使用され得、その結果、仮想ページは、論理ページとも呼ばれ得るようになり、仮想メモリアドレスは、論理メモリアドレスとも呼ばれ得るようになり、仮想メモリ空間は、論理メモリ空間とも呼ばれ得るようになり、以下同様である。
【００３４】
仮想メモリ空間は、複数の仮想ページに分割され得る。これらの仮想ページは、連続的とすることができるが、これらの仮想ページが対応するメモリシステム107内の物理ページ(たとえば、ページ0およびページ1)は、メモリシステム107内で連続しない場合がある。ページは、MIF 104が管理できる最小単位と考えられ得る。各仮想ページは、複数のバンクにさらに副分割され得る。各バンクは、ページ内のストレージの論理単位を表す。バンクは、ストレージユニットの複数の行および列を含むことができ、1つまたは複数の異なるメモリユニットをポイントすることができる(たとえば、複数のメモリチャネルにまたがって)。通常、単一の読取アクションまたは単一の書込アクションにおいて、メモリの仮想ページの1つのバンクだけが、一時にアクセスされる。いくつかの例において、バンクのサイズは、メモリバス幅のサイズと同一である。
【００３５】
グラフィックス関連機能の一部として、GPU 114は、デバイス100に関連するかデバイス100上にあるディスプレイ上に示される、表面120などのグラフィックスイメージまたはグラフィックスコンテンツの表面を生成することができる。GPUドライバ116は、GPU 114にメモリシステム107内に表面を記憶させる命令と、GPU 114が表面を記憶する仮想アドレスとを送信することができる。各表面は、メモリシステム107内に記憶される画素値を含むことができる。
【００３６】
表面120は、画素値の2次元(2D)アレイとして配置され得、GPU 114は、表面120または複数の表面を、メモリシステム107内にリニア記憶モード、タイルド記憶モード、またはマクロタイルド記憶モードにおいて記憶するようにMIF 104に命令することができる。リニア記憶モードにおいて、データ(たとえば画素データ)は、直線内に配置される。タイリング記憶モードにおいて、画素データは、長方形ブロック内に配置される。マクロタイリング記憶モードにおいて、画素データは、ブロック内に配置され、各ブロックは、複数の長方形サブブロック(すなわち、タイル内のタイル)を含む。一般に、タイリング記憶モードまたはマクロタイリング記憶モードは、一般に、タイリング記憶モードであると呼ばれる場合がある。いくつかの例において、表面120の画素値の2Dアレイは、ディスプレイ上の画素の個数とほぼ同一のサイズとすることができる。たとえば、表面120の画素値は、GPU 114によって生成されたグラフィックスイメージを表すことができる。他の例において、表面120は、表示されるイメージの一部とすることができる。すなわち、表示されるイメージは、1つまたは複数の表面を含むことができる。
【００３７】
一例として、処理ユニット102上で実行するGPUドライバ116は、GPU 114に表面120の各ラインを記憶させる命令を送信することができ、この各ラインは、その後、メモリシステム107内に記憶され、ここで、1つのラインは、表面120の1つの行にまたがる画素値を包含する。別の例として、GPUドライバ116は、GPU 114に表面タイルと呼ばれる表面の各タイルを記憶させる命令を送信することができ、この各タイルは、その後、メモリシステム107内に記憶され、ここで、1つのタイルは、表面のM×N画素値を包含する。本開示の他の例においては、GPU 114自体が、GPUドライバ116からの入力なしで、画素データを記憶するのに使用される記憶モードを判定することができる。一般に、本開示は、リニアまたはタイルドの形において表面を記憶することを指すことができる、表面の部分の記憶に言及する場合がある。一例において、リニアまたはタイルドのいずれかの形において表面を記憶するために、GPUドライバ116は、GPU 114に仮想アドレスに画素値を記憶させる命令を送信することができる。MIF 104のMMU 105は、仮想アドレスに対応する物理アドレスを判定することができ、GPU 114は、MIF 104を介して、物理アドレスに対応するメモリシステム107のページにおいて画素値を記憶することができる。
【００３８】
本開示の諸態様において、仮想ページからマッピングされた物理ページは、図3内に詳細に示されているように、メモリユニット108Aとメモリユニット108Bとの両方を包含することができる。図3は、メモリシステム107の例の物理ページを示すブロック図である。たとえば、図3は、4つのセクション(セクション0〜セクション3)を含む仮想ページ130を含むMIF 104を示す。仮想ページ130が、理解のしやすさのために図3内に示された仮想構成概念であることを理解されたい。図3内では、メモリシステム107は、仮想ページ130に対応する物理ページ132を含むことができる。
【００３９】
物理ページ132は、メモリユニット108Aとメモリユニット108Bとの両方を包含することができる。たとえば、メモリユニット108Aは、部分132Aとして示された、物理ページ132の一部を記憶することができ、メモリユニット108Bは、部分132Bとして示された、物理ページ132の一部を記憶することができる。図示されているように、メモリユニット108Aは、物理ページ132のセクション0およびセクション2を記憶し、メモリユニット108Bは、物理ページ132のセクション1およびセクション3を記憶する。
【００４０】
IC 101が、インターリーブする形においてデータを記憶するので、メモリユニット108Aは、セクション0およびセクション2を記憶することができ、メモリユニット108Bは、セクション1およびセクション3を記憶することができる。たとえば、戻って図1を参照すると、GPUドライバ116は、GPU 114に画素値を記憶させる命令を送信することができ、画素値が記憶されるところに関する仮想アドレスを送信することができる。GPU 114は、仮想アドレスに従って画素値を記憶するようにMIF 104に要求することができる。MIF 104は、仮想アドレスを物理アドレスにマッピングし、その物理アドレスに基づいて、インターリーブする形においてメモリシステム107のページ内に画素値を記憶することができる。
【００４１】
MIF 104は、インターリーブする形において画素値を記憶するように構成され得る。一例として、MIF 104は、インターリーブする形において画素値を記憶するように事前にプログラムされ得る。別の例として、MIF 104は、インターリーブする形において画素値を記憶するようにMIF 104に命令する命令を受信することができる。MIF 104は、メモリシステム107のページ内に画素値を記憶するために、メモリコントローラ106Aと106Bとの間でインターリーブすることができる。記憶のインターリーブする形は、メモリコントローラ106Aを介してメモリユニット108A内にバイトの第1のセット(1バイトは8ビットである)を記憶することと、これに続いて、メモリコントローラ106Bを介してメモリユニット108B内にバイトの第2のセットを記憶することと、これに続いて、メモリコントローラ106Aを介してメモリユニット108A内にバイトの第3のセットを記憶することと、これに続いて、メモリコントローラ106Bを介してメモリユニット108B内にバイトの第4のセットを記憶することと、などを指す。言い換えると、記憶のインターリーブされる形は、それぞれのメモリコントローラ106Aおよび106Bを介するメモリユニット108Aおよび108B内のバイトの記憶を交番させることと考えられ得る。1インターリーブサイクルあたりに記憶されるバイトの個数は、インターリーブ粒度(interleave granularity)と呼ばれる場合があり、GPUドライバ116によって定義され得、あるいは、MIF 104が、インターリーブ粒度を用いて事前にプログラムされ得る。
【００４２】
たとえば、図3内に示された例において、物理ページ132 (仮想ページ130からマッピングされた)は、4096バイトの画素値(たとえば、4キロバイト(kB)の画素値)を記憶できる場合があり、これは、セクション0〜セクション3の各1つが、1024バイトの画素値(たとえば、1kBの画素値)を記憶できることを意味する。また、インターリーブ粒度が1024バイトであると仮定する。この例において、GPU 114は、1kBのインターリーブ粒度に起因して、表面の直線またはタイルの第1の1kBの画素値が、メモリコントローラ106Aを介してメモリユニット108A内のセクション0内に記憶され、表面の直線またはタイルの第2の1kBの画素値が、メモリコントローラ106Bを介してメモリユニット108B内のセクション1内に記憶されるように、MIF 104を介して画素値を記憶することができる。また、GPU 114は、1kBのインターリーブ粒度に起因して、表面の直線またはタイルの第3の1kBの画素値が、メモリコントローラ106Aを介してメモリユニット108A内のセクション2内に記憶され、表面の直線またはタイルの第4の1kBの画素値が、メモリコントローラ106Bを介してメモリユニット108B内のセクション3内に記憶されるように、MIF 104を介して画素値を記憶することができる。
【００４３】
上の例は、ページ(たとえば、物理ページ132または仮想ページ130)内の画素値の記憶について説明するが、本開示の諸態様は、それに限定されない。たとえば、メモリシステム107が、複数の物理ページに分割されることが、必要ではない場合がある。これらの例においても、GPUドライバ116は、GPU 114に、インターリーブする形において画素値をMIF 104を介して記憶させることができる。これらの例において、メモリシステム107内のストレージビットは、連続するストレージ位置と考えられ得るが、連続するストレージが、すべての例において必要とは限らない。一例として、メモリシステム107が、必ずしも物理ページに分割されない場合に、GPU 114は、1kBのインターリーブ粒度に起因して、表面の直線またはタイルの第1の1kBの画素値が、メモリコントローラ106Aを介してメモリユニット108A内に記憶され、表面の直線またはタイルの第2の1kBの画素値が、メモリコントローラ106Bを介してメモリユニット108B内に記憶されるように、MIF 104を介して画素値を記憶することができる。また、GPU 114は、1kBのインターリーブ粒度に起因して、表面の直線またはタイルの第3の1kBの画素値が、メモリコントローラ106Aを介してメモリユニット108A内に記憶され、表面の直線またはタイルの第4の1kBの画素値が、メモリコントローラ106Bを介してメモリユニット108B内に記憶されるように、MIF 104を介して画素値を記憶することができる。説明の簡単さのために、様々な例は、メモリシステム107が物理ページ132などのページを含む例を用いて説明される。
【００４４】
例示のために、本開示は、画素値のバイトの記憶について説明する。1バイトは、8ビットと等しい。したがって、1024バイトの記憶は、8192ビットの記憶と同等であり、1ビットは、0のデジタル値または1のデジタル値とすることができる。したがって、本開示は、画素値のバイトの記憶について説明するが、本開示において説明される技法は、画素値のビットの記憶と同等であり、各バイトは8ビットである。
【００４５】
メモリシステム107が物理ページ132を含む例において、インターリーブ粒度は、物理ページ132の半分がメモリユニット108A内に記憶され、物理ページ132の他方の半分がメモリユニット108B内に記憶されることを引き起こす。そのようなインターリーブ記憶は、効率的なチャネル利用を促進することができる。たとえば、インターリーブ粒度は、MIF 104に、メモリコントローラ106Aによって確立されるチャネルを使用して画素値の半分を記憶させ、メモリコントローラ106Bによって確立されるチャネルを使用して画素値の半分を記憶させることができる。そのような、メモリコントローラ106Aによって確立されるチャネルを使用する画素値の半分の記憶およびメモリコントローラ106Bによって確立されるチャネルを使用する画素値の半分の記憶は、メモリシステム107がページに分割されない例においても発生することができる。
【００４６】
また、インターリーブされた記憶の形において画素値を記憶することは、GPU 114が、MIF 104を介してメモリシステム107内に画素値を並列に記憶することを可能にすることができる。たとえば、GPU 114は、GPU 114がメモリコントローラ106Bを介してメモリユニット108B内の物理ページ132の部分132Bのセクション1内にMIF 104を介して画素値を記憶できるものとされ得るのと同時または実質的に同時に(たとえば、並列に)、メモリコントローラ106Aを介してメモリユニット108A内の物理ページ132の部分132Aのセクション0内にMIF 104を介して画素値を記憶できるものとされ得る。上記と同様に、メモリコントローラ106Bを介するメモリユニット108B内の画素値の記憶と同時に発生するメモリコントローラ106Aを介するメモリユニット108A内の画素値の記憶は、メモリシステム107がページに分割されない例においても発生することができる。
【００４７】
上で言及したように、グラフィックス処理におけるメモリの効率的な使用のための従来の技法は、全般的に、出会う可能性がある異なる表面タイプに関して準最適である。これらの短所に鑑みて、本開示は、メモリ効率を改善する適応メモリアドレススキャニング技法の使用を提案する。本開示の適応メモリアドレススキャニング技法は、表面の1つまたは複数のプロパティに基づいて特定の表面に使用されるアドレススキャニングパターンを定義することができる。
【００４８】
図4は、図1のデバイス100の例のグラフィックス処理ユニット(GPU)および他のハードウェアをより詳細に示すブロック図である。具体的には、図4は、本開示の技法を実施するように構成され得るGPU 114のハードウェアユニットをより詳細に示す。
【００４９】
GPU 114は、2Dディスパッチプロセッサ140、2Dサブエンジン142A〜142D(「2Dサブエンジン142」)、キャッシュ144A〜144D(「キャッシュ144」)、およびバスインターフェース146を含むことができる。2Dディスパッチプロセッサ140は、表面に対して様々な2D動作を実行するように2Dサブエンジン142に命令し、かつ/またはそうでなくその動作を制御するように構成され得る、GPU 114内のプロセッサである。例の2D動作は、ブロック転送(BLT動作)、クリア動作、ブレンディング動作、フォーマット変換、回転、スケーリング、および他の幾何学的動作を含む。BLT動作は、データがあるメモリから別のメモリにコピーされる動作である。クリア動作は、特定のカラー値を表面の画素に割り当てることによって表面を初期化するのに使用される。ブレンディング動作は、2つの表面からの画素値が、新しい表面を作成する形(たとえば、透明度値に基づく)において組み合わされる動作である。フォーマット変換は、あるカラーフォーマット(たとえば、RGB)の画素値が別のカラーフォーマット(たとえば、YUV)の画素値に変換される動作である。回転動作は、表面がある角度量(たとえば、90°、180°など)だけ回転される動作である。スケーリング動作は、表面のサイズがより大きくまたはより小さくされ得る動作である。いくつかの例において、スケーリング動作は、表面の元のアスペクト比を維持することができる。他の例において、スケーリング動作は、表面の元のアスペクト比を変更することができる。上で議論された2D動作は、メモリからの読取(たとえば、読取専用動作)、メモリへの書込(たとえば、書込専用動作)、および/または読取動作と書込動作との両方(たとえば、メモリからの読取とメモリへの書込との両方を伴う動作)を伴うことができる。
【００５０】
2Dサブエンジン142は、表面に対して2D動作を実行するように構成された特殊化されたハードウェアユニットである。一般に、図4内に示された2Dサブエンジン142の並列配置は、単一2Dエンジン(すなわち、2Dディスパッチプロセッサ140およびキャッシュ144と一緒に)と呼ばれる場合がある。より包括的に、本開示の文脈において、2Dサブエンジン142の各々は、並列アドレススキャニングエンジンと呼ばれる場合がある。本開示の技法は、ソース表面および/または宛先表面に適用され得る。ソース表面は、2Dサブエンジン142がそれに対して動作を実行している表面である。宛先表面は、ソース表面に対する動作の実行を介して2Dサブエンジンによって作成される表面である。2Dサブエンジン142は、メモリシステム107内に画素データを記憶する前に画素データを一時的に記憶するのにそれぞれのキャッシュ144を使用することができる。キャッシュ144は、GPU 114と同一のIC上に物理的に配置された高速グラフィックスメモリ(GMEM)として構成され得る。一例において、キャッシュ144の各々は、2kビットのデータを記憶できる、複数のキャッシュライン(たとえば、32個のキャッシュライン)を有することができる。しかしながら、他のサイズのキャッシュ144が使用され得る。いくつかの例において、キャッシュ144のサイズは、圧縮された画素ブロックのビット単位のサイズに基づいて選択され得る。もちろん、ビット単位の圧縮された画素ブロックのサイズは、画素密度(ビット毎画素単位)および使用される圧縮アルゴリズムに依存する可能性がある。
【００５１】
図4の例において、4つの2Dサブエンジン142および4つのキャッシュ144が図示されている。この例において、4つのセクション(または表面のサブプリミティブ)が、2Dサブエンジン142によって並列に動作させられ得る。別の例において、2Dサブエンジン142は、4つの異なる表面に対して動作するように構成され得る。しかしながら、より多数またはより少数の2Dサブエンジンが使用され得る。図5は、4つのサブプリミティブ(すなわち、サブプリミティブ0、サブプリミティブ1、サブプリミティブ2、およびサブプリミティブ3)に分割された2次元(2D)表面150の概念図である。
【００５２】
図4に戻って、2Dサブエンジン142は、メモリシステム107内の表面に関連する画素データを読み取り、かつ/または記憶するように構成され得る。一例において、2Dサブエンジン142は、MIF 104を介して画素データを記憶する。MIF 104は、バスインターフェース146を介してアクセスされ得る。記憶動作に関して、バスインターフェース146は、2Dサブエンジン142のすべてから画素データを収集し、記憶のために画素データをMIF 104に送る。読取動作に関して、バスインターフェース146は、読取要求をMIF 104に転送し、読取要求に応答して画素データを戻りとして受信する。次いで、バスインターフェース146は、2Dサブエンジン142のうちのそれぞれの1つによるさらなる動作のために、取り出された画素データをキャッシュ144のうちの適当な1つにルーティングすることができる。
【００５３】
本開示の特徴によれば、GPU 114は、表面のプロパティを判定し、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定し、判定されたメモリアドレススキャニング技法に基づいてメモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行するように構成され得る。具体的には、2Dディスパッチプロセッサ140またはGPU 114の別のハードウェアユニットは、表面フォーマットおよびメモリ編成情報141から表面のプロパティを判定するように構成され得る。表面フォーマットおよびメモリ編成情報141は、表面のプロパティを示す、レジスタ、バッファ、または他のタイプのメモリ内に記憶された情報とすることができる。いくつかの例において、表面プロパティは、表面に関連するメタデータ(たとえば、表面記述)から読み取られ得る。
【００５４】
表面プロパティの例は、表面に対して実行されるべき2D動作(または他のグラフィックス動作)、記憶モード、表面高さ、表面幅、画素圧縮が使用されるか否か、マルチサンプルアンチエイリアシング(MSAA)の使用、画素サイズ、または画素カラーフォーマットを含むことができるが、これに限定はされない。記憶モードは、上で説明したように、リニア記憶モードと、マクロタイリングを含むタイリング記憶モードとのうちの1つまたは複数を含むことができる。表面高さは、画素単位の表面の高さである。表面幅は、画素単位の表面の幅である。画素圧縮の使用に関する情報は、表面の画素データが圧縮されるか否かを示す。画素圧縮の使用に関する情報は、使用される圧縮のタイプをも示すことができる。通常、画素値を圧縮する方式は、一時に画素のブロックを圧縮する。使用される圧縮のタイプは、圧縮を実行するのに使用される画素のブロックのサイズ(すなわち、圧縮ブロックサイズ)を示すことができる。次いで、2Dサブエンジン142は、1圧縮ブロックサイズあたりの圧縮される画素にアクセスする。MSAAは、これによって異なる位置にある複数の値(すなわち、サンプル)が画素ごとに記憶されるグラフィックス処理技法である(たとえば、それぞれが異なる位置にある、1画素あたり4つの画素値)。画素サイズは、各画素を表すのに何ビットが使用されるのかを示す(たとえば、8ビット毎画素(bpp)、16bpp、32bppなど)。画素フォーマットは、画素のカラーフォーマットを指すことができる。例のカラーフォーマットは、RGB、YCbCr、YUV、YUY2、AYB、NV12-4R、NV21-4R、およびIYUVを含む。
【００５５】
2Dディスパッチプロセッサ140は、前述の表面プロパティのうちの1つまたは複数を判定し、判定された1つまたは複数の表面プロパティに基づいてメモリアドレススキャニング技法を判定するように構成され得る。下で議論される開示の例において、メモリアドレススキャニング技法は、表面を1つまたは複数のサブプリミティブと呼ばれるブロックに分割し、1つまたは複数のサブプリミティブの各々内の開始スキャン位置を判定すること、1つまたは複数のサブプリミティブのスキャニングパターンを選択すること、および/または特定の2D動作を実行するために複数の2Dサブエンジン142を選択することを含むことができる。
【００５６】
以下は、2Dディスパッチプロセッサ140が、2Dサブエンジンによって使用されるメモリアドレススキャニング技法を判定するために判定することのできる表面の例のプロパティである。第1の例として、2Dディスパッチプロセッサ140は、表面の幅および/または高さを判定するように構成され得る。判定された表面の幅および/または高さに依存して、2Dディスパッチプロセッサ140は、表面をより小さいサブプリミティブに分割するように2Dサブエンジン142に命令することができる。メモリ内の単一の開始点から最後まで表面の画素データを読み取るのではなく、2Dサブエンジン142は、メモリ内の複数の開始点から表面データの画素データを読み取り、かつ/または書き込むように構成され得る。複数のサブプリミティブ、したがって複数の開始アドレスは、読取/書込が並列に発生し、したがって使用可能なメモリ帯域幅をより完全に利用することを可能にする。
【００５７】
本開示の別の例において、2Dサブエンジン142は、サイズ(たとえば、画素の総数)および/または画素フォーマット(すなわち、1画素あたりのビット数)に基づいて、表面を変化する個数のサブプリミティブに適応的に分割するように構成され得る。この形において、表面のサブプリミティブは、異なるメモリページおよび/またはメモリバンクに割り当てられ得る。
【００５８】
本開示の別の例において、記憶モードおよび表面サイズに基づいて、2Dサブエンジン142は、表面を、水平に配置されたサブプリミティブ(たとえば、4×1配置または2×1配置)、垂直に配置されたサブプリミティブ(たとえば、1×4配置または1×2配置)、正方形に配置されたサブプリミティブ(たとえば、2×2配置)を含む様々な形状のサブプリミティブまたは単一の表面(すなわち、サブプリミティブなし)に分割するように構成され得る。配置の形状は、よりよいメモリ効率を達成するために変更され得る。
【００５９】
別の例において、上で言及した表面プロパティのうちの1つまたは複数に基づいて、2Dサブエンジン142は、上で説明した技法のうちの1つを使用して判定されたサブプリミティブの各々のスキャニングパターンを適用するように構成される。この文脈において、スキャニングパターンは、各サブプリミティブ内でスキャンすべき開始アドレスならびに各プリミティブ内の残りのアドレスをスキャンする順序を示すことができる。判定された表面プロパティがメモリアドレススキャニング技法を判定するのにどのように使用されるのかの全般的なガイドラインおよび特定の例は、下で図6〜図14を参照して説明される。
【００６０】
図6は、アドレススキャニングの一例を示す概念図である。図6内に示されているように、表面155は、2×2配置の4つのサブプリミティブに分割されている。この例において、表面155は、表面の幅が4kバイトになる表面サイズおよび画素サイズを有する。したがって、サブプリミティブ0〜サブプリミティブ3の各々は、2kバイトの幅を有する。表面155は、図1のメモリシステム107内に記憶される。図2の例と同様に、図6の例におけるメモリシステム107は、2チャネルメモリシステムである。図6の例において、2チャネルメモリシステムは、1kバイトのインターリーブするパターンにおいてデータを記憶する。したがって、図6のサブプリミティブの各々内に示されているように、サブプリミティブの各々の左半分は、メモリチャネルA(たとえば、図2のメモリユニット108A)内に記憶され、サブプリミティブの各々の右半分は、メモリチャネルB(たとえば、図2のメモリユニット108B)内に記憶される。
【００６１】
従来のメモリアドレススキャニング技法を使用すると、表面155のそのような分割は、劣悪なメモリ効率につながる。これは、2Dサブエンジン142の各々が、サブプリミティブの左上角においてそれぞれのサブプリミティブのスキャンを開始するからである。したがって、図6の例において、2Dサブエンジン142の各々は、メモリチャネルAを使用する表面155のデータを同時に読み取りまたは書き込む。2Dサブエンジン142がメモリチャネルBのデータに達する時までに、2Dサブエンジン142のすべてが、メモリチャネルBから読み取っており、かつ/または書き込んでいる。したがって、メモリシステム107内のメモリユニットの50%だけが、任意の一時に使用されるので、チャネル平衡は非効率的である。
【００６２】
この問題を軽減するために、本開示の技法は、サブプリミティブへの表面のより最適な分割を判定するために、表面の上で言及したプロパティを使用する。具体的には、本開示は、サブプリミティブへの表面の1つまたは複数の最適な分割を判定するために、表面サイズならびに記憶モードを使用すること(圧縮の使用を含む)を提案する。可能な分割は、サブプリミティブの個数ならびに配置の形状を含む。下の図7内に示された例は、1つのサブプリミティブ(すなわち、分割なし)、2つのサブプリミティブ、および4つのサブプリミティブへの表面の分割を含む。しかしながら、表面は、下で議論するガイドラインと一貫する任意の個数のサブプリミティブに分割され得る。
【００６３】
一般に、2Dディスパッチプロセッサ140は、表面のプロパティを判定し、表面をどのようにサブプリミティブに分割すべきかを判定するように構成され得る。サブプリミティブへの表面の分割は、サブプリミティブの個数とサブプリミティブの配置の形状との両方を含むことができる。サブプリミティブの個数および形状は、判定されるメモリアドレススキャニング技法の一例である。本開示の技法によれば、GPU 114は(たとえば、2Dディスパッチプロセッサ140を介して)、各サブプリミティブの開始スキャン位置が同一のメモリチャネルを使用しないように、サブプリミティブの個数および配置を判定するように構成され得る。したがって、表面プロパティに加えて、2Dディスパッチプロセッサ140は、サブプリミティブの個数および配置を判定するためにメモリチャネル幅をさらに考慮することができる。
【００６４】
本開示のさらなる例において、2Dディスパッチプロセッサ140は、表面を分割する時にサブプリミティブの個数および配置を判定する時にキャッシュ144のサイズをさらに考慮することができる。たとえば、2Dディスパッチプロセッサ140は、サブプリミティブの結果のサイズがキャッシュ144を効率的に利用するように、表面をサブプリミティブに分割するように構成され得る。すなわち、サブプリミティブのバイト単位のデータのサイズが、キャッシュ144のサイズに対して相対的に小さい場合には、そのような分割は、劣悪なキャッシュ効率をもたらす。たとえば、表面が、4つのサブプリミティブに分割され、サブプリミティブの各々が、それぞれの2Dサブエンジン142のためのキャッシュ144のサイズの半分未満である画素データを含む場合に、キャッシュ効率は、劣悪になる。すなわち、各キャッシュ144の半分超が、各動作に関して未使用になる。このシナリオにおいて、2つのサブプリミティブへの表面の分割は、使用される2つのキャッシュ144の各々がより十分に利用されるので、より最適である。さらに、2Dサブエンジン142だけが必要とされ、すべての追加の2Dサブエンジン142を、追加の動作を実行するために解放する。
【００６５】
図7は、本開示の例による例の表面形状配置を示す概念図である。図7の例において、2Dディスパッチプロセッサ140は、下に示された擬似コードに基づいて、表面の各々をサブプリミティブのある個数および配置に分割するように構成され得る。
if(圧縮が使用可能にされている)
if     (幅>256)
縦4;
else if(高さ>128)
水平4;
else if(幅>64&高さ>16)
垂直2,水平2
else if(幅>64)
垂直2;
else if(高さ>16)
水平2;
else
オリジナル;
else if(マクロタイリングまたはタイリング)
if(クリア|BLT)
オリジナル;
else
if(幅>64)
垂直2;
else if(高さ>16)
水平2;
else
オリジナル;
else//(リニア)
if((表面のエッジ=チャネル境界)&&幅>256)
垂直4;
else
if(クリア|BLT)
オリジナル;
else
if     (幅>64)
垂直2;
else if(高さ>16)
水平2;
else
オリジナル;
【００６６】
上の擬似コードの最初の行から開始すると、サブプリミティブの分割は、まず、表面の画素データが圧縮されている場合に実行される。そうである場合には、2Dディスパッチプロセッサ140は、表面の幅があるしきい値を超えるかどうかを判定する(たとえば、表面の高さおよび/または幅内の画素数に関して)。この例において、しきい値は256画素である。表面の幅が256画素を超える場合に、2Dディスパッチプロセッサ140は、図7内に示された表面160によって示されるものなど、表面を、4つの垂直サブプリミティブに分割する(垂直4)。やはり、上で言及したように、しきい値は、結果のサブプリミティブがキャッシュ144を効率的に利用するのに十分に大きくなるように選択され得る。図7の例において、表面160は、4つの垂直サブプリミティブに分割され、ここで、サブプリミティブの各々の境界は、2チャネルメモリシステムの1つのチャネル(AおよびBによって表される)の境界線上にある。この例において、2Dサブエンジン142のうちの2つが、メモリチャネルA内でスキャニングを開始し、他の2つの2Dサブエンジン142は、メモリチャネルB内でスキャニングを開始する。表面160の例が、最適の例であり、そのような結果が、すべての表面サイズに関して達成されるとは限らないことに留意されたい。すなわち、メモリチャネル境界は、必ずサブプリミティブの境界と整列するとは限らない。
【００６７】
擬似コードの次の行に移ると、表面の幅が256を超えないが、表面の高さが128画素を超える場合には、2Dディスパッチプロセッサ140は、表面を4つの水平サブプリミティブに分割する(水平4)ように構成され得る。図7の表面162が、そのような分割の例である。やはり、128というしきい値は、結果のサブプリミティブがキャッシュ144を効率的に利用するのに十分に大きくなるように選択され得る。上の例の擬似コード内では、サブプリミティブの個数および配置の判定を行う時に、表面の幅が、表面の高さの前にチェックされる。しかしながら、幅判定および高さ判定が、任意の順序で行われ得ることを理解されたい。
【００６８】
表面の幅または高さのいずれもが、それぞれ256および128を超えない場合には、2Dディスパッチプロセッサ140は、次に、表面の幅と高さとの両方がそれぞれ64および16を超えるかどうかを判定する。そうである場合には、2Dディスパッチプロセッサ140は、表面を2×2配置の4つのサブプリミティブに分割する(垂直2,水平2)。図7の表面164が、そのような2×2配置を示す。
【００６９】
表面の幅が64を超えるが、表面の高さが16を超えない場合には、2Dディスパッチプロセッサ140は、表面を垂直配置の2つのサブプリミティブに分割する(垂直2)。図7の表面166が、そのような2サブプリミティブ垂直配置を示す。表面の幅が64を超えないが、表面の高さが16を超える場合には、2Dディスパッチプロセッサ140は、表面を水平配置の2つのサブプリミティブに分割する(水平2)。図7の表面168が、そのような2サブプリミティブ水平配置を示す。
【００７０】
表面が、前述のしきい値のすべてよりも小さい場合には、2Dディスパッチプロセッサ140は、表面を分割しない(オリジナル)。その代わりに、表面全体が、全体として処理される。図7の表面170が、表面が分割されない場合の例を示す。いくつかの例において、2Dサブエンジン142の各々は、異なる分割されない表面(たとえば、表面170)に対して並列に動作するように構成され得る。この例において、2Dサブエンジン142の各々は、異なる分割されない表面に対して同一の2D動作を実行するように構成され得、あるいは、分割されない表面の各々に対して異なる2D動作を実行するように構成され得る。
【００７１】
圧縮が使用可能にされていなかった場合に、2Dディスパッチプロセッサ140は、次に、表面がマクロタイリング記憶モードまたはタイリング記憶モードにおいて記憶されているかどうかを判定する。マクロタイリング記憶モードまたはタイリング記憶モードのいずれかが使用される場合に、2Dディスパッチプロセッサ140は、次に、表面に対して実行される動作のタイプを判定する。動作が、クリア動作またはBLT動作である場合には、表面170によって示されるものなど、表面は副分割されない。すべての他のタイプの動作に関して、2Dディスパッチプロセッサ140は、次いで、副分割を判定するために表面の幅および/または高さを判定する。しかしながら、タイリング記憶モードまたはマクロタイリング記憶モードに使用される幅しきい値および高さしきい値は、一般に、表面の画素データが圧縮されている時に使用されるしきい値よりも小さい。これは、圧縮が使用されない時に1画素あたりのデータの量がより多くなり、したがって、キャッシュ144をより最適に使用するために、サブプリミティブごとにより少数の画素が必要になるからである。たとえば、上の擬似コード内に示されているように、マクロタイリング記憶モードとクリアまたはBLT以外の動作とに関して、表面の幅が64画素を超える時には垂直2配置(たとえば、表面166)が使用され、表面の高さが16を超える時には水平2配置(たとえば、表面168)が使用される。そうではない場合には、オリジナル表面が使用され、分割されない(たとえば、表面170)。
【００７２】
2Dディスパッチプロセッサ140は、表面がリニア記憶モード(たとえば、タイリング記憶モードまたはマクロタイリング記憶モードではなく)において記憶される時に、表面プロパティおよびしきい値のさらに異なるセットを使用することができる。たとえば、表面のエッジがチャネル境界と整列し、表面の幅が256画素を超える場合に、2Dディスパッチプロセッサ140は、垂直4配置(たとえば、表面160)を使用する。そうではない場合には、2Dディスパッチプロセッサ140は、次に、表面に対して実行される動作のタイプを判定する。動作が、クリア動作またはBLT動作である場合には、表面170によって示されるものなど、表面は副分割されない。すべての他のタイプの動作に関して、2Dディスパッチプロセッサ140は、次いで、副分割を判定するために表面の幅および/または高さを判定する。やはり、リニア記憶モードに使用される幅しきい値および高さしきい値は、一般に、表面の画素データが圧縮されている時に使用されるしきい値よりも小さい。これは、圧縮が使用されない時に1画素あたりのデータの量がより多くなり、したがって、キャッシュ144をより最適に使用するために、サブプリミティブごとにより少数の画素が必要になるからである。たとえば、上の擬似コード内に示されているように、リニア記憶モードとクリアまたはBLT以外の動作とに関して、表面の幅が64画素を超える時には垂直2配置(たとえば、表面166)が使用され、表面の高さが16を超える時には水平2配置(たとえば、表面168)が使用される。そうではない場合には、オリジナル表面が使用され、分割されない(たとえば、表面170)。
【００７３】
図7の上で議論された例は、メモリチャネル効率を改善するように働く。スキャニングパターンを適応的に判定するための追加の技法が、バンク衝突を伴う問題を軽減するのに使用され得る。下で議論される技法は、単独でまたは上で説明された技法のいずれかに関連して、使用され得る。
【００７４】
図8は、例のメモリバンク配置を示す概念図である。図8の例において、表面180の4つのサブプリミティブの各々内の画素データは、仮想メモリの2つのページ内に配置され、各ページは、8つのバンクを有する。スキャンが、各サブプリミティブの左上角において開始する場合に、表面180の画素データを読み取るか書き込む各2Dサブエンジン142は、同一のバンクにアクセスしている。バンクが異なるページ内にある場合であっても、一時に、メモリの1つのバンクだけがアクセスされ得る。したがって、4つの2Dサブエンジン142が、並列に画素データを読み取るか書き込むことを試みる場合には、バンク衝突が発生する。バンク衝突が発生する時に、2Dサブエンジンの各々は、そのバンクへの任意の他のメモリアクセスが発生する前に、別の2Dサブエンジンが衝突するバンクへのアクセスを終了するまで待たなければならない。
【００７５】
バンク衝突に関するそのような問題を軽減するために、本開示は、表面のサブプリミティブのスキャニングパターンを適応的に判定することを提案する。2Dディスパッチプロセッサ140は、判定された表面プロパティを使用して、各サブプリミティブのスキャニングパターンを独立に判定することができる。すなわち、各サブプリミティブは、異なるスキャニングパターンを有することができる。この文脈において、スキャニングパターンは、サブプリミティブ内の開始スキャンアドレスと後続メモリアドレスがアクセスされる順序との両方を指すことができる。図9は、本開示の一例による例のアドレススキャニングパターンを示す概念図である。図9は、メモリバンクが取り除かれた状態の図8の表面180を示す。サブプリミティブ0〜サブプリミティブ3の各々内の矢印は、各サブプリミティブ内で使用される全般的なスキャニングパターンを示す。全般的なスキャン方向と一緒に、スキャンの開始メモリアドレスが、バンク衝突を回避する限り、任意の特定のスキャンパターンが使用され得る。
【００７６】
図9内に示されているように、サブプリミティブ0のスキャンパターンは、左上角において開始し、全般的に右下角に向かって進む(たとえば、ラスタスキャンパターンにおいて)。サブプリミティブ1のスキャンパターンは、右上角において開始し、全般的に左下角に向かって進む。サブプリミティブ2のスキャンパターンは、左下角において開始し、全般的に右上角に向かって進む。サブプリミティブ3のスキャンパターンは、右下角において開始し、全般的に左上角に向かって進む。この形において、戻って図8を参照すると、表面180の4つのサブプリミティブのスキャンパターンの各々は、異なるメモリバンクから読取および書込を開始する。本開示の一例において、図9内に示されたスキャンパターンを適用することは、表面がマクロタイリングモードを使用して記憶され、表面180に対して実行される動作が、スケーリングまたは回転などの幾何学的動作ではない状況において、バンク衝突を低減するのに有効であることが示されている。しかしながら、下の追加の詳細な例において示されるように、他の表面プロパティが、スキャニングパターンの選択において使用され得る。
【００７７】
テストが、上で議論した特徴がDDRメモリ効率の改善を提供したことを示した。平均して、DDRメモリアクセス効率は、従来のメモリアクセス技法に対して3%を超えて改善した。メモリ効率におけるほぼ8%の向上が、リニア記憶モードを使用して記憶された表面に関して実現された。メモリ効率におけるほぼ11%の向上が、YUVカラーフォーマットにおいて記憶された表面の画素に関して見られた。メモリ効率におけるほぼ9%の向上が、RGBカラーフォーマットとYUVカラーフォーマットとの間のカラー変換に関して見られた。
【００７８】
2Dサブエンジン142が読取動作および書込動作を実行するために必要なクロックサイクル数に関する改善も、実現された。上で説明した技法を使用して、平均して、クロックサイクルにおける3%の減少が実現された。リニア記憶モードにおいて記憶された画素の読取および/または書込に必要なクロックサイクル数におけるほぼ9%の減少が、実現された。YUVカラーフォーマットの画素の読取および/または書込に必要なクロックサイクル数における11%を超える減少が、実現された。RGBカラーフォーマットとYUVカラーフォーマットとの間のカラー変換に関する画素の読取および/または書込に必要なクロックサイクル数における11%を超える減少が、実現された。
【００７９】
下の図10〜図14および関連する説明は、本開示の技法を実施するための特定の例を示す。下で議論される例の実施態様において、「スーパーブロック」という用語が、サブプリミティブの代わりに使用される。下の例は、表面をスーパーブロックの特定の個数および配置に分割するための技法を提供する。下の技法は、スーパーブロックの間のスキャニングのためのパターンをも説明する。さらに、下の技法は、スーパーブロック自体が、どのようにして基本ブロックに分割され得るのかについて説明する。表面をスーパーブロックに分割し、配置する技法は、スーパーブロックを基本ブロックに分割し、配置することにも適用され得る。
【００８０】
上で説明された全般的な技法と同様に、ここで説明される例の実施態様は、表面を1つまたは複数のサブプリミティブ(「スーパーブロック」とも呼ばれる)に分割するのに表面プロパティ(画素単位の表面幅および表面高さを含む)を使用する。スーパーブロックの配置は、表面の記憶モード(たとえば、リニア記憶モードまたはタイリング記憶モード)に基づいて変化することができる。
【００８１】
この例の実施態様において、スーパーブロックの各々の形状は、「正方形」形状、「最小高さ」形状、または「平衡」形状のうちの1つとすることができる。正方形形状は、ソース表面と宛先表面との両方が、タイリング記憶モードにおいて記憶され、宛先表面が、たとえば64画素未満の幅を有する場合に使用される。上で議論したように、ソース表面は、2Dサブエンジン142がそれに対して動作を実行している表面である。宛先表面は、ソース表面に対する動作の実行を介して2Dサブエンジンによって作成される表面である。ソース表面が、タイリング記憶モードであり、宛先表面が、特定のしきい値(たとえば、アクティブな2Dサブエンジン142の個数の15倍)よりも幅広い場合に、ディスパッチプロセッサ140は、表面を、最小高さ形状を有するスーパーブロックに分割する。そうではない場合には、ディスパッチプロセッサ140は、表面を、平衡形状を有するスーパーブロックに分割する。
【００８２】
スーパーブロックの最小高さ形状は、2つの画素高さすなわち4または8のうちの1つをとることができる。例の実施態様において、最小高さスーパーブロック形状に使用される画素数は、下のTable 1(表1)内に示されているように、ソース表面と宛先表面との画素カラーフォーマットによって決定される。
【００８３】
【表１】
2018522307.tif 000003
【００８４】
上のTable 1(表1)内で、M1は、クリア動作を使用するテストモデルを指す。M2は、2Dフォーマット変換を使用するテストモデルを指す。スーパーブロックの実際のサイズは、判定された形状とbpp単位の画素サイズおよび/またはカラーフォーマットとを使用して判定される。この例の実施態様のスーパーブロックの例のサイズは、図10内の表内に示されている。
【００８５】
本開示の技法は、特定の動作に何個の2Dサブエンジン142を使用すべきかを判定するのにも使用され得る。すなわち、ソース表面および/または宛先表面が圧縮されているか否かに依存して、異なる個数の2Dサブエンジン142が、クリア動作、BLT動作、またはブレンド動作を実行するのに必要になる可能性がある。下のTable 2(表2)は、動作のセットに使用される2Dサブエンジン142の個数の一例を示す。
【００８６】
【表２】
2018522307.tif 000004
【００８７】
スーパーブロックのアドレスをスキャンする時に、2Dサブエンジン142は、スーパーブロックのスキャニング方向を示す、たとえば2Dディスパッチプロセッサ140によってセットされるレジスタにアクセスすることができる。スーパーブロックが処理される順序は、ループするスタイルに従い、その例は、図11および図12内に示されている。ソースフォーマットがタイリングである場合に、スーパーブロックは、垂直に64画素の高さで処理され、その後、スーパーブロックの次のセクションに移動する。図11は、本開示の一例による例のスーパーブロックアドレススキャニング順序を示す概念図である。図11において、ソースフォーマットはタイリングであり、スーパーブロックの形状は、64×16「平衡」形状である。表面全体のサイズは、128bppを有する256×256画素である。
【００８８】
ソースフォーマットがリニアである場合には、水平ループが、スーパーブロックを処理するのに使用される。図12は、本開示の別の例による例のスーパーブロックアドレススキャニング順序を示す概念図である。図12において、ソースフォーマットはリニアであり、スーパーブロックの形状は、256×4「最小高さ」形状である。表面全体のサイズは、128bppを有する1024×64画素である。
【００８９】
図11および図12内のループするスタイルに関して、スーパーブロックが、必ずしも順次処理されないことを理解されたい。いくつかの例において、2Dサブエンジン142のうちの1つまたは複数は、表面のスーパーブロックのグループを並列に処理することができる。上で議論した図9の例と同様に、各スーパーブロック内のスキャニングパターンは、異なるものとすることができる。
【００９０】
各スーパーブロックは、基本ブロックにさらに分割され得る。基本ブロックは、キャッシュ144のサイズによって定義される。たとえば、タイリングモードにおいて記憶された表面に関して、各基本ブロックは、1つのタイルまたは1つの圧縮されたブロックを含む。リニア記憶モードを用いて記憶された表面に関して、各記憶ブロックは、2kビットのデータを含むことができ、2kビットは、キャッシュ144のサイズである。もちろん、基本ブロックの異なるサイズが、キャッシュ144の異なるサイズに関して使用され得る。スーパーブロックと同様に、基本ブロックのサイズおよび形状は、表面記憶フォーマットならびにbpp単位の画素サイズおよび/またはカラーフォーマットの両方によって定義され得る。図13は、本開示の一例による基本ブロックの例のサイズを示す表である。
【００９１】
ループするパターンは、各スーパーブロック内の基本ブロックを通ってループするためにも定義され得る。基本ブロックの間のループするパターンは、スーパーブロックの間のループするパターンとは独立に定義され得る。図14は、本開示の一例による例の基本ブロックアドレススキャニング順序を示す概念図である。図14の例において、表面は、タイリング記憶モードにおいて記憶され、画素サイズは、32bppである。したがって、図13内の表によれば、基本ブロックのサイズは、16×4画素である。そのような表面の各スーパーブロックのサイズおよび形状は、図10内の表によれば、64×64正方形形状である。図14の例において、基本ブロックは、画素位置y=8において開始する。
【００９２】
図15は、本開示の別の例による例の基本ブロックアドレススキャニング順序を示す概念図である。図15の例において、表面は、リニア記憶モードにおいて記憶され、画素サイズは、32bppである。したがって、図13内の表によれば、基本ブロックのサイズは、16×4画素である。そのような表面の各スーパーブロックのサイズおよび形状は、図10内の表によれば、256×16平衡形状である。図15の例において、基本ブロックは、画素位置y=8において開始する。
【００９３】
本開示の別の例において、2Dサブエンジン142は、表面内の2つの異なる方向から表面を読み取りまたは書き込むように構成され得る。そのような技法は、2つのメモリチャネルの間でバスインターフェース146の作業負荷を平衡化するのに使用され得る。2つの異なる方向において読み取り、書き込むための本開示の技法は、読み取られ書き込まれる表面が、リニア記憶モードにおいて記憶され、2kバイト整列されたピッチを有する(すなわち、表面のエッジがメモリチャネル幅と合わせられている)状況において有用になる可能性がある。さらに、2つの異なる方向において読み取り、書き込むための本開示の技法は、スーパーブロック形状が最小高さ形状である状況において有用になる可能性がある。
【００９４】
図15内に示されているように、リニア記憶モードにおいて記憶された表面に関して、水平にループするスタイルが、スーパーブロック内の基本ブロックの間でループするのに使用される。リニア表面が、最小高さ形状スーパーブロック内で2kバイト整列される状況において、スーパーブロック内の1つの画素ラインは、2k/4kバイトのデータを有する(4または8の最小高さに依存する)。この画素ラインは、2つの異なるメモリチャネルを、したがって、バスインターフェース146内の2つのチャネルをカバーする。この状況において、本開示は、2つの異なる方向を使用して基本ブロック内で読取または書込を実行することを提案する。図16は、本開示の一例による例の読取/書込アドレススキャニング順序を示す概念図である。
【００９５】
図16内に示されているように、基本ブロックの間でループするパターンは、1024×4最小高さスーパーブロックに関して両方の方向から進む。そのようなパターンは、スーパーブロックの左半分が、バスインターフェース146の1つのチャネルを使用し、スーパーブロックの右半分が、バスインターフェース146の別のチャネルを使用するという事実を活用する。図16内に示されたスキャニングパターンに関して、2Dサブエンジン142は、基本ブロック0(BB0)においてスキャンを開始する。BB1に進むのではなく、2Dサブエンジン142は、次に、スーパーブロックの右端側にあるBB63をスキャンする。次いで、次のスキャンは、スーパーブロックの左側のBB1に戻って進む。この形において、基本ブロックに対する交番する読取または書込が、バスインターフェース146の異なるチャネルを交互に介して実行される。
【００９６】
図17は、本開示のいくつかの例による例の方法を示す流れ図である。図17の技法は、2Dディスパッチプロセッサ140および2Dサブエンジン142を含むGPU 114の1つまたは複数のハードウェアユニットによって実行され得る。
【００９７】
本開示の一例において、GPU 114は、グラフィックス処理のためにメモリにアクセスするように構成され得る。GPU 114は、表面のプロパティを判定し(902)、表面の判定されたプロパティに基づいてメモリアドレススキャニング技法を判定する(904)ように構成された2Dディスパッチプロセッサ140を含むことができる。GPU 114は、判定されたメモリアドレススキャニング技法に基づいて、メモリ内の表面に関連するデータの読取または書込のうちの少なくとも1つを実行する(906)ように構成された少なくとも1つの2Dサブエンジン142をさらに含むことができる。本開示の一例において、表面のプロパティは、記憶モード、表面高さ、表面幅、画素圧縮の使用、マルチサンプルアンチエイリアシングの使用、画素サイズ、または画素フォーマットのうちの少なくとも1つを含む。
【００９８】
本開示の別の例において、2Dディスパッチプロセッサ140は、表面のプロパティに基づいて、表面をそれに分割すべきサブプリミティブの個数および形状を判定し、サブプリミティブの判定された個数および形状に基づいて、表面を1つまたは複数のサブプリミティブに分割するようにさらに構成される。本開示の別の例において、2Dディスパッチプロセッサ140は、表面のプロパティに基づいて、判定された個数のサブプリミティブの配置を判定し、表面を判定された個数のサブプリミティブの判定された配置に分割するようにさらに構成される。
【００９９】
本開示の別の例において、少なくとも1つの2Dサブエンジン142は、1つまたは複数のサブプリミティブの各々に関連するデータの読取または書込のうちの少なくとも1つを実行するようにさらに構成される。
【０１００】
本開示の別の例において、2Dディスパッチプロセッサ140は、表面のプロパティに基づいて、データの読取または書込のうちの少なくとも1つを実行するのに使用されるGPU 114の少なくとも1つの2Dサブエンジン142の個数を判定するようにさらに構成される。判定された個数の2Dサブエンジンは、データの読取または書込のうちの少なくとも1つを実行するように構成される。本発明の別の例において、少なくとも1つの2Dサブエンジン142は、1つまたは複数のサブプリミティブの各々に関連するデータの読取または書込のうちの少なくとも1つを並列に実行するようにさらに構成される。
【０１０１】
本開示の別の例において、2Dディスパッチプロセッサ140は、表面のプロパティに基づいて、表面をそれに分割すべきサブプリミティブの個数および形状を判定し、表面のプロパティに基づいて、サブプリミティブの判定された個数および形状に関するスキャニングパターンを判定するようにさらに構成される。本開示の別の例において、2Dディスパッチプロセッサ140は、表面のプロパティに基づいて、判定された個数のサブプリミティブごとに独立にスキャニングパターンを判定するようにさらに構成される。
【０１０２】
例に依存して、本明細書で説明される技法のいずれかのある種の行為またはイベントが、異なるシーケンスで実行され得、追加され、合併され、または完全に除外され得る(たとえば、すべての説明された行為またはイベントが、技法の実践のために必要とは限らない)ことを了解されたい。さらに、ある種の例において、行為またはイベントは、順次的にではなく、たとえばマルチスレッド処理、割り込み処理、または複数のプロセッサを介して、同時に実行され得る。
【０１０３】
1つまたは複数の例において、説明される機能は、ハードウェア、ソフトウェア、ファームウェア、またはその任意の組合せにおいて実施され得る。ソフトウェアにおいて実施される場合に、機能は、コンピュータ可読媒体上に記憶されまたはコンピュータ可読媒体上の1つまたは複数の命令またはコードとして送信され得る。コンピュータ可読媒体は、コンピュータデータ記憶媒体または、ある場所から別の場所へのコンピュータプログラムの転送を容易にするすべての媒体を含む通信媒体を含むことができる。データ記憶媒体は、本開示内で説明される技法の実施のために命令、コード、および/またはデータ構造を取り出すために1つもしくは複数のコンピュータまたは1つもしくは複数のプロセッサによってアクセスされ得る任意の使用可能な媒体とすることができる。限定ではなく例として、そのようなコンピュータ可読媒体は、RAM、ROM、EEPROM、CD-ROM、もしくは他の光ディスク(disc)ストレージ、磁気ディスク(disk)ストレージもしくは他の磁気記憶デバイス、または命令もしくはデータ構造の形において所望のプログラムコードを担持しもしくは記憶するのに使用され得、コンピュータによってアクセスされ得る任意の他の媒体を含むことができる。また、任意の接続も、当然コンピュータ可読媒体と呼ばれる。たとえば、ソフトウェアが、ウェブサイト、サーバ、または他のリモートソースから同軸ケーブル、光ファイバケーブル、より対線、デジタル加入者回線(DSL)、または赤外線、無線、およびマイクロ波などのワイヤレス技術を使用して送信される場合に、同軸ケーブル、光ファイバケーブル、より対線、DSL、または赤外線、無線、およびマイクロ波などのワイヤレス技術は、媒体の定義内に含まれる。ディスク(disk)およびディスク(disc)は、本明細書で使用される時に、コンパクトディスク(disc)(CD)、レーザディスク(disc)、光ディスク(disc)、デジタル多用途ディスク(disc)(DVD)、フロッピディスク(disk)、およびブルーレイディスク(disc)を含み、ディスク(disk)は、通常はデータを磁気的に再生し、ディスク(disc)は、レーザを用いてデータを光学的に再生する。上記の組合せも、コンピュータ可読媒体の範囲内に含まれなければならない。
【０１０４】
コードは、1つまたは複数のデジタル信号プロセッサ(DSP)、汎用マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または他の同等の集積回路網もしくはディスクリート論理回路網など、1つまたは複数のプロセッサによって実行され得る。したがって、「プロセッサ」という用語は、本明細書で使用される時に、前述の構造のいずれか、または本明細書で説明された技法の実施に適した任意の他の構造を指すことができる。さらに、いくつかの態様において、本明細書で説明された機能性は、専用のハードウェア内で、および/または符号化および復号のために構成されたソフトウェアモジュール内で提供され、あるいは、組み合わされたコーデック内に組み込まれ得る。また、本技法は、1つまたは複数の回路または論理要素において完全に実施され得る。
【０１０５】
本開示の技法は、ワイヤレスハンドセット、集積回路(IC)またはICのセット(すなわち、チップセット)を含む様々なデバイスまたは装置内で実施され得る。開示される技法を実行するように構成されたデバイスの機能的態様を強調するために、様々な構成要素、モジュール、またはユニットについて本開示内で説明したが、これらの構成要素、モジュール、またはユニットは、必ずしも異なるハードウェアユニットによる実現を必要とするとは限らない。そうではなく、上で説明したように、様々なユニットは、コーデックハードウェアユニット内に組み合わされ、あるいは、適切なソフトウェアおよび/またはファームウェアに関連する、上で説明された1つまたは複数のプロセッサを含む相互動作可能なハードウェアユニットの集合によって提供され得る。
【０１０６】
様々な例について説明した。これらおよび他の例は、以下の特許請求の範囲内にある。
【符号の説明】
【０１０７】
100  デバイス
101  集積回路(IC)
102  処理ユニット
103  ディスプレイ
104  メモリインターフェースユニット(MIF)
105  メモリ管理ユニット(MMU)
106A  メモリコントローラ
106B  メモリコントローラ
107  メモリシステム
108A  メモリユニット
108B  メモリユニット
113  ディスプレイプロセッサ
114  グラフィックス処理ユニット(GPU)
115  トランシーバモジュール
116  グラフィックス処理ユニット(GPU)ドライバ
117  ユーザインターフェース
120  表面
130  仮想ページ
132  物理ページ
132A  部分
132B  部分
140  2Dディスパッチプロセッサ
142  2Dサブエンジン
142A  2Dサブエンジン
142B  2Dサブエンジン
142C  2Dサブエンジン
142D  2Dサブエンジン
144  キャッシュ
144A  キャッシュ
144B  キャッシュ
144C  キャッシュ
144D  キャッシュ
146  バスインターフェース
150  2次元(2D)表面
155  表面
160  表面
162  表面
164  表面
166  表面
168  表面
170  表面
180  表面
【図１】
2018522307.tif 000005
【図２】
2018522307.tif 000006
【図３】
2018522307.tif 000007
【図４】
2018522307.tif 000008
【図５】
2018522307.tif 000009
【図６】
2018522307.tif 000010
【図７】
2018522307.tif 000011
【図８】
2018522307.tif 000012
【図９】
2018522307.tif 000013
【図１０】
2018522307.tif 000014
【図１１】
2018522307.tif 000015
【図１２】
2018522307.tif 000016
【図１３】
2018522307.tif 000017
【図１４】
2018522307.tif 000018
【図１５】
2018522307.tif 000019
【図１６】
2018522307.tif 000020
【図１７】
2018522307.tif 000021
【国際調査報告】
2018522307.tif 000022
2018522307.tif 000023