JP2016524740A - キャッシュ要求を調停するシステムおよび方法 - Google Patents
キャッシュ要求を調停するシステムおよび方法 Download PDFInfo
- Publication number
- JP2016524740A JP2016524740A JP2016511753A JP2016511753A JP2016524740A JP 2016524740 A JP2016524740 A JP 2016524740A JP 2016511753 A JP2016511753 A JP 2016511753A JP 2016511753 A JP2016511753 A JP 2016511753A JP 2016524740 A JP2016524740 A JP 2016524740A
- Authority
- JP
- Japan
- Prior art keywords
- cache
- requests
- request
- different types
- arbiter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0842—Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0844—Multiple simultaneous or quasi-simultaneous cache accessing
- G06F12/0855—Overlapped cache accessing, e.g. pipeline
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/30—Providing cache or TLB in specific location of a processing system
- G06F2212/302—In image processor or graphics adapter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/45—Caching of specific data in cache memory
- G06F2212/455—Image or video data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Image Processing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Bus Control (AREA)
Abstract
本開示は、キャッシュにアクセスするための、異なるタイプの要求の調停に関する。本開示の特徴は、グラフィックス・プロセッシング・ユニット(GPU)により実装され得る。一実施形態では、アービタは、色プロセッサおよび深度プロセッサから要求を受信して、受信された要求のうちのいずれが最も高い優先順位を有するかを決定することができる。次いで、最も高い優先順位を有する要求がキャッシュに提供され得る。優先順位は設定可能であり得る。アービタは、たとえば、要求に関連するキャッシュ内のロケーションが利用可能かどうか、要求に関連する重み、アービタによって処理される特定のタイプの要求の数、またはそれらの任意の組合せに基づいて、優先順位を決定し得る。
Description
[0001]本発明の実施形態は、一般にエレクトロニクスに関し、具体的には、キャッシュ要求の調停(arbitration)に関する。
[0002]多種多様な目的のために、スマートフォンなどのモバイルデバイスが使用されているので、モバイルデバイス用のプロセッサは、ますます増加する機能を有するように設計されている。たとえば、モバイルデバイス用のプロセッサは、中央処理装置(CPU)、グラフィックス・プロセッシング・ユニット(GPU)、デジタル信号プロセッサ(DSP)などの、別々の機能を有するいくつかの構成要素を含み得る。GPUは、様々なアプリケーションのための2次元(2D)および3次元(3D)画像をレンダリングするために広く使用されている。GPUは、静止画像および/またはビデオ画像をレンダリングするために使用され得る。
[0003]画像をレンダリングするために、GPUは、色プロセッサ(a color processor)と深度プロセッサ(a depth processor)とを含み得る。色プロセッサは、画像データを処理して、ディスプレイ上にレンダリングされるべきシーンの画素(pixels)の色を示す色データを生成することができる。深度プロセッサは、画像データを処理して、シーン内の画素の距離値を示す深度データを生成することができる。色プロセッサと深度プロセッサとは、色データと深度データとを記憶するために、メモリを共有することができる。共有メモリにアクセスするための複数の要求がある場合、要求が処理される順序は調停に基づき得る。共有メモリにアクセスするための要求間を調停する(arbitrating)既存の方法は、GPUパイプラインにおける準最適な性能とボトルネックとをもたらした。
[0004]本開示の一態様は、キャッシュとアービタ(an arbiter)とを含む装置である。キャッシュは、データを記憶するように構成されている。アービタは、電子ハードウェアを含む。アービタは、アービタによって受信されたデータに基づいて、異なるタイプのキャッシュ要求に重みを割り当てるように構成されている。異なるタイプのキャッシュ要求は、少なくとも第1のタイプのキャッシュ要求と、第2のタイプのキャッシュ要求とを含む。アービタはまた、深度プロセッサからキャッシュにアクセスするための第1の要求を受信するように構成されている。第1の要求は、第1のタイプのキャッシュ要求である。アービタはまた、色プロセッサからキャッシュにアクセスするための第2の要求を受信するように構成されている。第2の要求は、第2のタイプのキャッシュ要求である。アービタは、第1のタイプの要求と第2のタイプの要求とに関連する重みに少なくとも部分的に基づいて、受信された要求のうちのいずれが最も高い優先順位を有するかを決定するように構成されている。アービタは、最も高い優先順位を有すると決定された、受信された要求を、キャッシュに提供するようにさらに構成されている。
[0005]本開示の別の態様は、データを記憶するように構成されたキャッシュと、異なるタイプのキャッシュ要求に関連する重みと、異なるタイプのキャッシュ要求の、要求のカウントとに少なくとも部分的に基づいて、異なるタイプのキャッシュ要求の相対的優先順位(a relative priority)を決定するための調停手段(arbitration means)と、を含む装置である。調停手段は、相対的優先順位に基づいて、異なるタイプのキャッシュ要求をキャッシュに提供するように構成されている。本装置はまた、調停手段にキャッシュ要求を提供するように構成された色プロセッサと、調停手段にキャッシュ要求を提供するように構成された深度プロセッサとを含む。
[0006]本開示の別の態様は、選択されたキャッシュ要求をキャッシュに提供する電子的実装である。本方法は、深度プロセッサから、および色プロセッサから、深度プロセッサと色プロセッサとによって共有されるキャッシュにアクセスするための、複数の異なるタイプのキャッシュ要求を受信することと、異なるタイプのキャッシュ要求に関連する1つまたは複数の重みと、異なるタイプのキャッシュ要求に関連する1つまたは複数のカウントとに少なくとも部分的に基づいて、受信されたキャッシュ要求のうちの選択されたキャッシュ要求が、受信されたキャッシュ要求のうちの最も高い優先順位を有すると決定することと、受信されたキャッシュ要求のうちの他のキャッシュ要求をキャッシュに提供する前に、選択されたキャッシュ要求をキャッシュに提供することと、を含む。
[0007]本開示の別の態様は、実行されたとき、グラフィックス・プロセッシング・ユニットに、方法を実行するよう指示する命令を含む、非一時的コンピュータ可読ストレージである。本方法は、異なるタイプのキャッシュ要求に関連する重みと、異なるタイプのキャッシュ要求に関連するカウントとに少なくとも部分的に基づいて、キャッシュにアクセスするための複数の異なるタイプのキャッシュ要求からキャッシュ要求を選択することと、なお、異なるタイプのキャッシュ要求は、色プロセッサと深度プロセッサとによって提供される、選択されたキャッシュ要求をキャッシュに提供することとを含む。
[0008]本開示を要約する目的のために、本発明の特定の態様、利点、および新規な特徴が、本明細書に記載されている。必ずしもすべてのそのような利点が、本発明の任意の特定の実施形態に従って達成され得るとは限らないことが理解されるべきである。したがって、本発明は、本明細書に教示または示唆され得るような他の利点を必ずしも達成することなしに、本明細書に教示されるような1つの利点または利点のグループを達成または最適化する方法で具現化または実行され得る。
[0013]説明の重複を避けるために、同じまたは類似の機能を有する構成要素は、同じ参照番号によって参照され得る。
[0014]本明細書に特定の実施形態が記載されているが、本明細書で説明されるすべての利点および特徴を提供するとは限らない実施形態を含む他の実施形態は、当業者には明らかであろう。
[0015]一般的に、本開示の態様は、共有キャッシュにアクセスするための深度要求と色要求との間の調停に関する。アービタは、深度プロセッサから、深度書込みおよび深度読取り(a depth write and a depth read)などの深度要求(depth requests)を、ならびに色プロセッサから、色書込みおよび色読取り(a color write and a color read)などの色要求(color requests)を受信することができる。アービタは、共有キャッシュへの様々な要求間で設定可能な優先順位を有することができる。したがって、様々な要求間の優先順位は、システムの性能を向上させるために調整され得る。
[0016]本明細書に記載されるアービタの実施形態は、様々なタイプのキャッシュ要求間の優先順位を決定するための設定可能な重みを有することができる。これらの重みは、ドライバおよび/またはハードウェアによってプログラムされ得る。そのようなアービタは、共有キャッシュを効率的に使用するために、および/またはパイプラインにおけるボトルネックを避けるために、異なるタイプのキャッシュ要求間の相対的優先順位に基づく順序で、共有キャッシュに要求を提供することができる。いくつかの例では、異なるタイプのキャッシュ要求間の相対的優先順位は、たとえ、異なるタイプのキャッシュ要求のうちの1つまたは複数が、アービタによって比較的長期間にわたって受信されない、または、他のタイプのキャッシュ要求と比較して比較的頻度が低い(たとえば、特定のタイプのキャッシュ要求を受信することなしに20のキャッシュ要求)時でも、同じままであり得る。キャッシュ要求キューは、特定の実装形態に応じて、必要とされない場合がある。
[0017]キャッシュ要求の調停は、共有キャッシュ内のロケーション(a location)の可用性に基づいて決定され得る。優先順位は、特定のタイプのキャッシュ要求のカウンタのカウント値を、特定のタイプのキャッシュ要求の重みレジスタに記憶されたそれぞれの重みと比較することに基づいて決定され得る。1つまたは複数の条件が検出されると、特定のタイプのキャッシュ要求のカウンタはクリアされ得る。
[0018]本開示に記載される主題の特定の実装形態は、とりわけ、以下の潜在的な利点のうちの1つまたは複数を実現するために実装され得る。異なるタイプのキャッシュ要求の相対的優先順位は、より良好な性能を実現するために、異なるシーンに基づいて設定され得る。可能な場合、利用可能な宛先ロケーション(available destination locations)を有するキャッシュ要求は、より良い性能を実現するために、利用可能な宛先ロケーションを持たない他のキャッシュ要求の前に供給され(served)得る。本明細書に記載される調停スキーム(arbitration schemes)は、たとえ1つまたは複数のタイプのキャッシュ要求が比較的長期間にわたって受信されない場合でも、異なるタイプのキャッシュ要求の適切な優先順位評価(priority ratings)を維持することができる。本明細書に記載されるアービタは、比較的少量のハードウェアで実装され得る。たとえば、1つの例示的なアービタは、24の1ビットフリップフロップだけを用いて(with only 24 one bit flip−flops)4つの異なるタイプのキャッシュ要求に優先順位を割り当てることができる。この例では、アービタは、約1000μm2未満の領域を消費することができる。本明細書に記載されるアービタは、比較的高速で実装され得る。たとえば、28ナノメートルの処理技術で0.855vの電源電圧で動作するときに、アービタにおける最長パスは、約500ピコ秒以下でトラバースされ得る。
[0019]いくつかの実施形態では、本明細書に記載されるシステムおよび装置は、本明細書に記載される1つまたは複数の機能を実装するための、グラフィックス・プロセッシング・ユニット(GPU)などの集積回路を含む。そのようなグラフィックス・プロセッシング・ユニットの1つの非限定的な例は、カリフォルニア州サンディエゴのQualcomm社から提供される、チップセットのSNAPDRAGON(登録商標)ラインの一部であるADRENO(登録商標)統合グラフィックス・ソリューションである。これらの実施形態では、GPUは、本明細書に記載される機能のうちの1つまたは複数を実行するための命令を記憶したメモリを含み得る。
[0020]図1は、実例となるグラフィックス・プロセッシング・ユニット(GPU)100の概略ブロック図である。そのようなGPUは、たとえば、スマートフォン用に設計された集積回路に含まれ得る。図示されたGPU100は、シェーダシステム(a shader system)110と、色/深度ブロック120a〜120dと、メモリ調停(MARB:memory arbitration)ブロック130a〜130dとを含む。GPU100は図示されるよりも多数の、またはより少数のブロックを含み得ることが理解されよう。GPU100は、GPUの外部にあるグラフィックス・メモリ(Gmem)140a〜140dと通信し得る。GPU100は中央処理装置(CPU)150と通信し得る。Gmem140a〜140d、および/またはCPU150は、GPU100を含むチップセットまたはプロセッサに含まれ得る。
[0021]シェーダシステム110は、レンダリングされるべき画像における適切なレベルの光および/または色を生成するために、グラフィックス・データを処理することができる。シェーダシステム110は、レンダリングされるべき画像のいくつかまたはすべての位置(position)、色相(hue)、彩度(saturation)、輝度(brightness)、コントラスト等、またはそれらの任意の組合せを調整することができる。シェーダシステム110は、色/深度ブロック120a〜120dに画像データを提供することができる。
[0022]各色/深度ブロック120a〜120dは、色プロセッサ220a〜220dと、深度プロセッサ210a〜210dとを含む。色プロセッサ220a〜220dは、画像データを処理して、ディスプレイ上にレンダリングされるべきシーンの画素の色を示す色データを生成することができる。深度プロセッサ210a〜210dは、画像データを処理して、シーン内の画素の距離値を示す深度データを生成することができる。深度プロセッサと色プロセッサとは、任意の適切な回路によって実装され得る。いくつかの実施形態では、深度プロセッサは色プロセッサから離れていてよい。深度プロセッサと色プロセッサとは異なる機能を実装するが、特定の実施形態では、これらのプロセッサは、いくつかの共通回路を共有することができる。色/深度ブロック120a〜120dの各々は、ディスプレイの異なる部分に対応し得る。たとえば、ディスプレイは、4つの象限(quadrants)に分割されてよく、色/深度ブロック120a〜120dの各々はその4つの象限のうちの1つに対応し得る。図1に示されるGPU100は、それぞれがディスプレイの異なる部分に対応する4つの色/深度ブロック120a〜120dを含むが、特定のアプリケーションのために任意の適切な数の色/深度ブロックがGPUに実装され得ることが理解されよう。たとえば、特定のアプリケーションに単一の色/深度ブロックが実装され得る。いくつかの実装形態では、1つのMARBブロックは、複数のRBブロック間で共有され得る。
[0023]図1に示されるように、各色/深度ブロック120a〜120dは、それぞれのMARBブロック130a〜130dと通信し得る。いくつかの他の実装形態では、色/深度ブロック120a〜120dのうちの2つ以上が、単一のMARBブロック130aと通信し得る。各MARBブロックは、アービタとキャッシュとを含む。MARBブロック130aのキャッシュからのデータは、Gmem140aに提供され得る。図1では、各MARBブロック130a〜130dは、アービタとキャッシュとを含む。
[0024]図2は、MARBブロック130に含まれるアービタとキャッシュとへの、またはそこからのデータフローを示す概略ブロック図である。MARBブロック130は、図1からのMARBブロック130a〜130dのうちの1つであり得る。ラスタライザ(a rasterizer)からのデータは、深度プロセッサ210に提供され得る。深度プロセッサ210は、キャッシュ250にアクセスするための深度読取り要求と深度書込み要求とを生成することができる。深度プロセッサ210は、アービタ240に、深度読取り要求と深度書込み要求とを提供することができる。色プロセッサ220は、深度プロセッサ210からデータを受信することができる。特定の実装形態では、色プロセッサ220は、ストリームプロセッサ230を介して深度プロセッサ210からいくつかのデータを受信することができる。色プロセッサ220は、キャッシュ250にアクセスするための色読取り要求と色書込み要求とを生成することができる。色プロセッサ220は、アービタ240に、色読取り要求と色書込み要求とを提供することができる。深度プロセッサ210と色プロセッサ220とは、図1の色/深度ブロック120a〜120dのうちの1つに含まれ得る。
[0025]アービタ240は、深度プロセッサ210と色プロセッサ220とからキャッシュ要求を受信して、キャッシュ要求をキャッシュ250に提供することができる。キャッシュ250は、深度プロセッサ210と色プロセッサ220とによって共有され得る。深度プロセッサ210と色プロセッサ220との両方は、それぞれ読取りおよび書込み要求をキャッシュ250に送信することができる。したがって、特定の実施形態では、キャッシュ250に、深度読取り、深度書込み、色読取り、および色書込みの4つの異なるタイプのキャッシュ要求が提供され得る。
[0026]グラフィックス・パイプラインでは、色命令よりも深度命令が優先され得る。対応する色要求が供給されていない場合、キャッシュへの深度読取りまたは深度書込み要求がブロックされ得る。深度要求が十分に供給されていない場合、アイドル命令が実行されるボトルネックがパイプラインにおいて発生し得る。したがって、アービタ240は、複数のキャッシュ要求がある場合、そのような手順を制定しないデバイスと比較してより高い性能を実現するために、どの要求を最初にキャッシュ250に提供するべきかを決定することができる。
[0027]アービタ240は、1つまたは複数の深度プロセッサ210と1つまたは複数の色プロセッサ220とから異なるタイプのキャッシュ要求を受信して、受信した要求のうちのいずれが最も高い優先順位を有するかを決定することができる。たとえば、アービタ240は、深度読取り、深度書込み、色読取り、および色書込みのうちの2つ以上を受信して、どの要求が最も高い優先順位を有するかを決定することができる。次いで、最も高い優先順位を有するキャッシュ要求が、他の受信された要求がキャッシュ250に提供される前に、アービタ240によってキャッシュ250に提供され得る。アービタ240は、複数の入力を受信して、特定の時点で選択されたキャッシュ要求をキャッシュ250に提供するための単一の出力を生成することができる。アービタ240の複数の入力の各々は、異なるタイプのキャッシュ要求に対応し得る。たとえば、図2に示されるように、アービタ240の4つの入力は、それぞれ深度読取り、深度書込み、色読取り、および色書込みに対応し得る。要求の優先順位は、設定可能であり得る。
[0028]アービタ240は、どのキャッシュ要求が最も高い優先順位を有するかを決定する際に、受信されたキャッシュ要求に関連するキャッシュ250内のロケーションの可用性を調べることができる。たとえば、キャッシュ250から受信されたキャッシュ情報が、選択されたキャッシュ要求に関連するキャッシュ250のロケーションが利用可能ではないことを示す場合、選択されたキャッシュ要求は、より低い優先順位を有すると決定され得る。要求されたデータ以外のデータがキャッシュロケーションに記憶されている場合、および/または有効なデータがキャッシュロケーションに記憶されていない場合、そのキャッシュロケーション(cache location)は、利用可能ではない場合がある。
[0029]図示されるように、アービタ240は、単一の要求を一度にキャッシュ250に提供することができる。キャッシュ250はまた、図1のGmem140a〜140dのうちの1つであり得る、Gmem140、および統合キャッシュ(Ucache:a unified cache)260とインターフェースすることができる。キャッシュ250は、Gmem要求をGmem140に提供して、Gmem140からGmemデータを受信することができる。同様に、キャッシュ250は、Ucache要求をUcache260に提供して、Ucache260からUcacheデータを受信することができる。Gmem140とUcache260とは、それぞれシステムメモリ270と通信し得る。
[0030]図3は、一実施形態による、アービタ240の実例となる例の概略ブロック図である。図3では、「Z」は深度を指し、「C」は色を指す。アービタ240は、深度読取り(Z読取り)、深度書込み(Z書込み)、色読取り(C読取り)、および色書込み(C書込み)を含む、異なるタイプのキャッシュ要求を受信して、異なるタイプのキャッシュ要求の相対的優先順位に基づいて、異なるタイプのキャッシュ要求のうちの選択された要求を提供するように構成されている。アービタ240は、電子ハードウェアを備え、デジタル回路などの任意の適切な回路によって実装され得る。アービタ240は、重みレジスタ320〜326と、入力カウンタ330〜336と、出力カウンタ338と、調停回路(an arbitration circuit)340と、マルチプレクサ360とを含み得る。いくつかの実装形態では、アービタ240は、図示されるよりも多数の、またはより少数の構成要素を含み得ることが理解されよう。
[0031]アービタ240は、キャッシュ要求のタイプごとに重みレジスタを含み得る。たとえば、図3に示されるように、重みレジスタは、深度読取り重みレジスタ320と、深度書込み重みレジスタ322と、色読取り重みレジスタ324と、色書込み重みレジスタ326とを含む。重みレジスタの各々は、1つまたは複数の重みから特定のタイプのキャッシュ要求の相対的優先順位が決定され得る、その1つまたは複数の重みを含み得る。重みレジスタは設定可能であり、様々な方法で設定され得る。たとえば、特定の重みレジスタの重みは、ドライバによって設定され得る。代替で、または追加で、重みレジスタのうちの1つまたは複数のものの重みは、異なるタイプのキャッシュ要求に重みを割り当てるためにアービタ240によって受信されるデータを生成するように構成された重み付け回路(a weighting circuit)などのハードウェアによってプログラムされ得る。重みレジスタの重みは、先入れ先出し(FIFO:a first in first out)カウンタからの情報などの、パイプライン情報に基づいて設定され得る。重みレジスタ320〜326内の1つまたは複数の重みを調整することによって、異なるタイプのキャッシュ要求間の相対的優先順位を変更することができる。たとえば、色要求よりも多くの実行するべき複数の深度要求がある場合、一実施形態によれば、深度重みレジスタは色重みレジスタよりも高い重みを割り当てられ得る。重みは、たとえば、異なるシーンまたはシーンのタイプに対応する、割り当てられた値であり得る。したがって、優先順位は、特定のシーンまたはシーンのグループにカスタマイズされ得る。
[0032]アービタ240は、異なるタイプのキャッシュ要求ごとに1つの入力カウンタを含み得る。入力カウンタは、許可されたキャッシュ要求の数を数えることができる。したがって、入力カウンタは許可カウンタ(grant counters)と呼ばれ得る。図3に示されるように、深度読取りカウンタ330と、深度書込みカウンタ332と、色読取りカウンタ334と、色書込みカウンタ336との4つの入力カウンタがあり得る。入力カウンタ330〜336の各々は、異なるタイプのキャッシュ要求に対応し得る。各入力カウンタ330〜336は、特定のタイプのキャッシュ要求が何回処理されたかを数えることができる。たとえば、各入力カウンタ330〜336は、それぞれのタイプのキャッシュ要求が、アービタ240によって何回受信されたかを、および/またはキャッシュ250に何回提供されたかを追跡することができる。入力カウンタ330〜336は、カウント値をインクリメントすること、および/またはデクリメントすることによって、キャッシュ要求が許可された回数を追跡することができる。いくつかの他の実施形態では、異なる数の入力カウンタ330〜336が実装され得る、および/または異なる数のタイプのキャッシュ要求が処理され得ることが理解されよう。入力カウンタ330〜336のうちの1つが特定のカウント値に到達すると、キャッシュ要求の相対的優先順位は変化することができる。たとえば、特定の入力カウンタのカウント値が、対応する重みレジスタ内の重み以上である場合、対応するタイプのキャッシュ要求は、他のタイプのキャッシュ要求と比較してより低い優先順位を有し得る。
[0033]アービタ240はまた、合計でいくつのキャッシュがアービタ240によって処理されたかを数えるための出力カウンタ338を含み得る。たとえば、出力カウンタ338は、合計でいくつのキャッシュ要求がアービタ240によって受信されたか、および/またはアービタ240によってキャッシュ250に提供されたかを追跡することができる。一実施形態(図示せず)では、加算回路は、出力カウンタ338の代わりに合計カウント値を生成するために、入力レジスタ330〜336のカウント値を加算することができる。
[0034]アービタの入力カウンタ330〜336および/または出力カウンタ338は、アービタ240が1つまたは複数の条件を検出することに応答してリセットされ得る。アービタ240の1つまたは複数のカウンタをリセットするための1つの例示的な条件は、指定された数のキャッシュ要求がアービタ240によって処理されたことである。たとえば、出力カウンタ338は、キャッシュ250に提供されたキャッシュ要求の数を数えることができ、調停回路340は、出力カウンタ338が特定のカウント値に到達したと検出することに応答して1つまたは複数のカウンタをリセットすることができる。したがって、カウンタは、キャッシュ要求が指定された数のキャッシュ要求(たとえば、10、15、20、30のキャッシュ要求)を超えてバランスを取られる(balanced over)ようにリセットされ得る。アービタ240の1つまたは複数のカウンタをリセットするための別の例示的な条件は、入力カウンタ330〜336のうちの1つまたは複数がしきい値カウント値に到達することである。そのようなしきい値カウント値は、入力カウンタによって異なる(different for different input counters)場合がある。ある例では、アービタ240の各入力カウンタ330〜336が、ゼロ、または対応する優先順位レジスタにおける重み以上、であるカウント値を有する場合、アービタ240内のすべてのカウンタが0などの初期値にクリアされ得る。代替で、または追加で、キャッシュ250に提供されたキャッシュ要求の合計数が、アービタ240の重みレジスタ320〜326の重みのすべての合計以上である場合(たとえば、出力カウンタ338によって数えられるように)、入力カウンタ330〜336と出力カウンタ338とを含むすべてのカウンタが0などの初期値にクリアされ得る。したがって、アービタ240は、アービタ240のカウンタ330〜338のうちの1つまたは複数における値がクリアされるようにすることができる。
[0035]調停回路340は、異なるタイプのキャッシュ要求間の相対的優先順位を決定することができる。特定の実装形態では、調停回路340は、デジタル回路によって実装され得る。調停回路340は、異なるタイプのキャッシュ要求を受信することができる。調停回路340の異なる入力は、各タイプのキャッシュ要求を受信することができる。たとえば、図3に示されるように、調停回路340の異なる入力は、それぞれ深度読取り要求と、深度書込み要求と、色読取り要求と、色書込み要求とを受信する。調停回路340は、重みレジスタ320〜326からの情報、入力カウンタ330〜336からの情報、キャッシュ250からの情報、またはそれらの任意の組合せに基づいて、異なるタイプのキャッシュ要求に優先順位を割り当てることができる。最も高い優先順位を有するキャッシュ要求が、キャッシュ250に提供され得る。調停回路340は、どのタイプのキャッシュ要求をキャッシュ250に提供するべきかを示すセレクト信号(a select signal)を生成することができる。マルチプレクサ360は、調停回路340から選択信号を受信して、選択信号に基づいて、選択されたキャッシュ要求をキャッシュ250に提供することができる。
[0036]優先順位付きキュー(priority queue)は、最初の優先順位を設定するために初期化され得る。たとえば、優先順位付きキューは、以下の相対的優先順位を有するために初期化され得る:最も高い優先順位を有する深度読取り、次に最も高い優先順位を有する深度書込み、次に最も高い優先順位を有する色読取り、および最も低い優先順位を有する色書込み。優先順位付きキューは、重みレジスタ320〜326に割り当てられた値に少なくとも部分的に基づいて設定され得る。調停回路340は、優先順位付きキューおよび/または他の機能を実装するためにステートマシンを含み得る。
[0037]調停回路340は、優先順位付きキューを管理することができる。一実施形態では、有効な要求を有する優先順位付きキューにおける最も高い相対的優先順位を有するタイプのアービタ240によって受信されるキャッシュ要求、キャッシュ250内の要求に関連する利用可能なロケーション(たとえば、キャッシュ250によって提供された情報から決定される)、および、対応する重みレジスタ値未満のカウント値を有する対応する入力カウンタが、キャッシュ250に提供されることによって供給され得る。次いで、キャッシュ要求の優先順位付きキューは、まず、キューの末尾に供給されるタイプのキャッシュ要求を移動することによって変化することができる。次いで、それの入力カウンタが、それの対応する重みレジスタ内の値以上であるカウント値を有する場合、先頭タイプのキャッシュ要求(the leading type of cache request)がキューの末尾に移動され得る。キューの先頭の要求は、キュー内の先頭タイプのキャッシュ要求の入力カウンタが、それの対応する入力カウンタ内に、それの対応する重みレジスタ内の値未満であるカウント値を有する、またはすべての入力カウンタのカウント値が、それらの対応する重みレジスタ内の値以上であると決定されるまで、末尾に移動され得る。いくつかの他の実施形態では、重みレジスタ内の値とカウンタ内の値との間の異なる比較が実行され得ることが理解されよう。たとえば、カウント値が対応する重みレジスタ値を超えるかどうかを調べる代わりに、調停回路は、カウント値が対応する重み値未満かどうかを調べることができる。優先順位付きキューは、代替で、または追加で、キャッシュ要求に関連するキャッシュ内のロケーションが利用可能ではない場合、先頭タイプのキャッシュ要求をキューの末尾に移動させることができる。
[0038]図4は、一実施形態による、複数の異なるタイプのキャッシュ要求から選択されたキャッシュ要求をキャッシュに提供するプロセス400の実例となる流れ図である。処理400において、異なるタイプのキャッシュ要求が受信されて、最も高い優先順位を有する選択されたキャッシュ要求がキャッシュに提供される。GPU内のアービタは、深度プロセッサと色プロセッサとによって共有されるキャッシュに特定のタイプのキャッシュ要求を選択的に提供するために、プロセス400のうちのいくつかまたはすべてを実行することができる。プロセス400は、たとえば、本明細書に記載される装置、たとえば、図1、図2、および/または図3の装置、のうちのいずれかによって実装され得る。さらに、本明細書に記載される装置のうちのいずれかは、プロセス400の特徴の任意の組合せを実装することができる。
[0039]ブロック410で、異なるタイプのキャッシュ要求に関連する重みが割り当てられ得る。たとえば、重みレジスタは、それぞれ色読取り、色書込み、深度読取り、および深度書込みに対応する値でプログラムされ得る。このように、様々なタイプのキャッシュ要求間の優先順位が初期化され得る。重みレジスタは、ハードウェア、ファームウェア、またはそれらの任意の組合せの指示でプログラムされ得る。重みは、初期プログラミングの後に異なる値でプログラムされ得る。いくつかの実装形態では、重みの値はキャッシュ要求を受信した後に調整され得る。異なる重み値を割り当てることによって、異なるタイプのキャッシュ要求の相対的優先順位を調整することができる。
[0040]ブロック420で、キャッシュ要求が受信され得る。たとえば、アービタは、深度プロセッサからのキャッシュ要求と、色プロセッサからのキャッシュ要求とを受信することができる。したがって、アービタは、異なるプロセッサから異なるタイプのキャッシュ要求を、および/または、同じプロセッサから異なるタイプのキャッシュ要求を受信することができる。異なるタイプのキャッシュ要求は、アービタの異なる入力接点(input contacts)で受信され得る。2つ以上の異なるタイプのキャッシュ要求がアービタによって受信されると、アービタは、どのタイプの要求が最も高い相対的優先順位を有するかを決定して、次いで、最も高い相対的優先順位を有するタイプの要求を最初にキャッシュに提供することができる。
[0041]ブロック430で、キャッシュ要求に関連するキャッシュロケーションは利用可能かどうかが決定され得る。たとえば、アービタは、キャッシュへの読取りまたは書込みに関連するキャッシュロケーションが利用可能か否かを示すキャッシュから情報を受信することができる。より具体的には、特定の実施形態では、アービタは、色読取り、色書込み、深度読取り、または深度書込みのうちの1つまたは複数に関連するキャッシュロケーションが利用可能かどうかを示す情報を受信することができる。次いで、アービタは、特定のキャッシュ要求に関連するキャッシュロケーションが利用可能かどうかを決定することができる。
[0042]ブロック440で、特定のタイプのキャッシュ要求の、処理されたキャッシュ要求の数が、特定のタイプに関連する重みと比較され得る。一例では、カウンタは、特定のタイプのキャッシュ要求が処理されるたびに追跡することができ、カウンタのカウント値は、特定のタイプのキャッシュ要求の対応する重みレジスタに記憶された重みと比較され得る。そのような比較は、アービタによって受信された異なるタイプのキャッシュ要求のうちの1つまたは複数のために実行され得る。カウンタは、アービタが、たとえば上述した条件を検出することに応答してクリアされ得る。
[0043]ブロック450で、最も高い優先順位を有すると決定されたタイプのキャッシュ要求がキャッシュに提供され得る。最も高い優先順位は、キャッシュ内の関連ロケーションが利用可能かどうかに基づいて、および/または、処理された特定のタイプのキャッシュ要求の数のカウントと、その特定のタイプのキャッシュ要求の重みとの比較に基づいて、決定され得る。最も高い優先順位は、たとえば、要求が有効かどうかを決定することと、その要求に関連するキャッシュロケーションが利用可能かどうかを調べることと、次いで、優先順位付きキューの先頭のキャッシュ要求のタイプに関連するカウント値を重みレジスタ内の対応する値と比較することと、によって決定され得る。たとえば、カウント値は、最初に、優先順位付きキューの先頭のタイプのキャッシュ要求の重みレジスタ内の対応する値と比較され得る。次いで、そのような比較が、そのタイプのキャッシュ要求をキャッシュに提供しないことを示す場合、カウント値は、優先順位付きキュー内の次の異なるタイプのキャッシュ要求の重みレジスタ内の対応する値と比較され得る。これは、カウント値と、重みレジスタ内の対応する値との比較が、特定のタイプのキャッシュ要求をキャッシュに提供することを示すまで繰り返され得る。
[0044]キャッシュ要求がキャッシュに提供された後、プロセス400は、キャッシュ要求を受信すること、そのような要求に関連するロケーションが利用可能かどうかを決定すること、特定のタイプの要求の数を対応する重みと比較すること、キャッシュ要求をキャッシュに提供すること、またはそれらの任意の組合せを継続することができる。
[0045]上記に記載された実施形態のうちのいくつかは、グラフィックス・プロセッシング・ユニットに関連する例を提供している。本明細書で論じられた技術の実施形態の原理および利点は、多数の汎用または専用コンピューティングシステム環境または構成で動作可能である。本明細書に記載される技術で使用するのに適し得る、そのようなコンピューティングシステム、環境、および/または構成の例としては、これらに限定されないが、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、タブレットコンピュータ、マルチプロセッサシステム、プロセッサベースのシステム、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのうちのいずれかを含む分散コンピューティング環境などがある。
[0046]当業者は、本明細書に開示された実施形態に関連して説明される様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムの動作は、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装され得ることをさらに理解するであろう。ハードウェアとソフトウェアのこの互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、および動作を、上記では概してそれらの機能に関して説明した。そのような機能性がハードウェアとして実装されるか、またはソフトウェアとして実装されるかは、システム全体に課される設計制約および特定のアプリケーションに依存する。当業者は、各特定のアプリケーションごとに様々な方法で説明された機能性を実装することができるが、そのような実装形態の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
[0047]本明細書で開示された実施形態に関連して説明された、様々な例示的な論理ブロック、モジュール、および回路は、任意の適切な汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)または他のプログラマブル論理デバイス、ディスクリートゲートまたはトランジスタ論理、ディスクリートハードウェアコンポーネント、あるいは本明細書に記載された機能を実行するように設計されたそれらの任意の組合せで、実装または実行され得る。汎用プロセッサはマイクロプロセッサであり得るが、代替では、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、またはステートマシンであり得る。プロセッサはまた、コンピューティングデバイスの組合せとして、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと関連する1つまたは複数のマイクロプロセッサ、あるいは他の任意のそのような構成として実装され得る。さらに、プロセッサは、単一のコアまたは複数のコアを有し得る。さらに、プロセッサは、グラフィックス・プロセッサなどの任意の専用プロセッサであり得る。
[0048]1つまたは複数の例示的な実施形態では、説明された機能および方法は、ハードウェア、ソフトウェア、またはプロセッサ上で実行されるファームウェア、あるいはそれらの任意の組合せで実装され得る。ソフトウェアで実装される場合、その機能は非一時的コンピュータ可読ストレージに記憶され得る。限定ではなく例として、そのような非一時的コンピュータ可読ストレージは、RAM、ROM、EEPROM(登録商標)、CD−ROMまたは他の光学ディスクストレージ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは命令またはデータ構造の形態で所望のプログラムコードを記憶するために使用され得てコンピュータによってアクセスされ得る他の任意の非一時的媒体、を備え得る。さらに、本明細書で論じられた方法は、少なくとも物理的な回路によって実行されることが理解されよう。したがって、特許請求の範囲は、純粋な金属プロセス(purely metal processes)または抽象的概念をカバーすることを意図されない。実際、開示された技法は、精神的なステップには適用されず、人間の心の中で、または一枚の紙の上に書いている人間によって、実行されない。
[0049]文脈が明らかに要求しない限り、記述および特許請求の範囲を通して、「備える(comprise)」、「備えている(comprising)」などの用語は、排他的または網羅的な意味とは反対に、包括的な意味、すなわち、「含むが、それに限定されない(including, but not limited to)」の意味で解釈されるべきである。本明細書で一般的に使用される「結合された(coupled)」、「接続された(connected)」などの用語は、直接接続され得る、または1つまたは複数の中間要素によって接続され得る、2つ以上の要素を指す。さらに、「本明細書で(herein)」、「上記で(above)」、「以下で(below)」などの用語、および同様の意味の用語は、本明細書で使用される場合、本明細書の任意の特定の部分ではなく、本明細書を全体として指すものとする。文脈が許せば、単数または複数を使用する、上記の詳細な説明における用語は、それぞれ複数または単数も含み得る。2つ以上の項目のリストに関連した「または(or)」という用語は、その用語が用語の以下の解釈:リスト内の項目のうちのいずれか、リスト内の項目のうちのすべて、およびリスト内の項目の任意の組合せ、のうちのすべてをカバーする。本明細書で提供されるすべての数値は、測定誤差内の類似した値を含むことが意図される。
[0050]さらに、本明細書で使用される、とりわけ「できる(can)」、「できた(could)」、「かもしれない(might)」、「たとえば(e.g.)」、「たとえば(for example)」、「などの(such as)」などの条件付き言語は、特に異なるように明記されない限り、または使用される際に文脈内で違ったふうに理解されない限り、一般に、特定の実施形態は、特定の特徴、要素、および/または状態を含むが、他の実施形態はこれらを含まない、ことを伝えることが意図される。したがって、そのような条件付き言語は、一般的に、特徴、要素、および/または状態が、1つまたは複数の実施形態にとって多少なりとも必要である(in any way required for)ことを、あるいは、1つまたは複数の実施形態が、作成者の入力(author input)またはプロンプティングの有無にかかわらず、これらの特徴、要素、および/または状態は任意の特定の実施形態に含まれているかどうか、または任意の特定の実施形態で実行されるべきかどうかを決定するためのロジックを必ず含むことを、暗示することを意図していない。
[0051]実施形態の上記の詳細な説明は、包括的であること、または本発明を上記で開示された正確な形態に限定すること、が意図されるものではない。本発明の特定の実施形態、および本発明の例が、例示の目的のために上記に記載されているが、たとえば、プロセスまたはブロックが所与の順序で提示されているが、代替の実施形態は、異なる順序で、動作を有するルーチンを実行してもよく、ブロックを有するシステムを使用してもよく、また、いくつかのプロセスまたはブロックは削除、移動、追加、細分化、結合、および/または修正され得る。これらのプロセスまたはブロックの各々は、様々な異なる方法で実装され得る。また、プロセスまたはブロックは、順番に実行されているように時々示されているが、これらのプロセスまたはブロックは、代わりに並行して実行されてもよく、異なる時間に実行されてもよい。
[0052]特定の実施形態が説明されたが、これらの実施形態は例としてのみ提示されており、本開示の範囲を限定することが意図されるものではない。たとえば、関連分野の当業者が認識するように、本発明の範囲内で様々な同等の修正が可能である。さらに、上記に記載された様々な実施形態の要素および行為は、さらなる実施形態を提供するために結合され得る。実際、本明細書に記載された方法、システム、装置、および製品は、他の様々な形態で具現化され得る。さらに、本明細書に記載された方法、システム、装置、および製品の形態の様々な省略、置換、および変更は、本開示の精神から逸脱することなしになされ得る。
Claims (22)
- データを記憶するように構成されたキャッシュと、
電子ハードウェアを備えるアービタとを備え、前記アービタが、
前記アービタによって受信されたデータに基づいて、異なるタイプのキャッシュ要求に重みを割り当て、前記異なるタイプのキャッシュ要求が、少なくとも第1のタイプのキャッシュ要求と、第2のタイプのキャッシュ要求とを含み、
深度プロセッサから前記キャッシュにアクセスするための第1の要求を受信し、前記第1の要求が、前記第1のタイプのキャッシュ要求であり、
色プロセッサから前記キャッシュにアクセスするための第2の要求を受信し、前記第2の要求が、前記第2のタイプのキャッシュ要求であり、
前記第1のタイプの要求と前記第2のタイプの要求とに関連する前記重みに少なくとも部分的に基づいて、前記受信された要求のうちのいずれが最も高い優先順位を有するかを決定し、
前記最も高い優先順位を有すると決定された、前記受信された要求を、前記キャッシュに提供する、ように構成されている、
装置。 - 前記アービタが、前記第1の要求に関連する前記キャッシュ内のロケーションが利用可能かどうかのインジケーションに少なくとも部分的に基づいて、前記最も高い優先順位を決定するように構成される、請求項1に記載の装置。
- 前記アービタが、複数の入力カウンタを備え、前記複数の入力カウンタの各々が、前記アービタによって処理された前記異なるタイプのキャッシュ要求のそれぞれの要求の数を数えるように構成されている、請求項1に記載の装置。
- 前記アービタが、異なるタイプのキャッシュ要求に割り当てられた前記重みのうちの選択された重みと、対応する入力カウンタによって数えられた要求の前記数との比較に少なくとも部分的に基づいて、前記最も高い優先順位を決定するように構成される、請求項3に記載の装置。
- 前記アービタが、いくつの要求が前記キャッシュに提供されたかを追跡するように構成された出力カウンタを備える、請求項3に記載の装置。
- 前記アービタが、条件を検出することに応答して、前記入力カウンタをクリアするように構成される、請求項3に記載の装置。
- 前記装置が、グラフィックス・プロセッシング・ユニットを備え、前記グラフィックス・プロセッシング・ユニットが、前記キャッシュと、前記アービタと、前記深度プロセッサと、前記色プロセッサとを備える、請求項1に記載の装置。
- 前記異なるタイプのキャッシュ要求が、色読取りと、色書込みと、深度読取りと、深度書込みとを備える、請求項1に記載の装置。
- 前記異なるタイプのキャッシュ要求に重みを割り当てるための前記アービタによって受信された前記データを生成するように構成された重み付け回路をさらに備える、請求項1に記載の装置。
- 前記異なるタイプのキャッシュ要求に重みを割り当てるための前記アービタによって受信された前記データが、ドライバによって生成される、請求項1に記載の装置。
- データを記憶するように構成されたキャッシュと、
異なるタイプのキャッシュ要求に関連する重みと、前記異なるタイプのキャッシュ要求の、要求のカウントとに少なくとも部分的に基づいて、前記異なるタイプのキャッシュ要求の相対的優先順位を決定するための調停手段と、前記調停手段が、前記相対的優先順位に基づいて、前記異なるタイプのキャッシュ要求を前記キャッシュに提供するように構成される、
前記調停手段にキャッシュ要求を提供するように構成された色プロセッサと、
前記調停手段にキャッシュ要求を提供するように構成された深度プロセッサと
を備える、装置。 - 選択されたキャッシュ要求をキャッシュに提供することを電子的に実装される、方法が、
深度プロセッサから、および色プロセッサから、前記深度プロセッサと前記色プロセッサとによって共有されるキャッシュにアクセスするための、複数の異なるタイプのキャッシュ要求を受信することと、
前記異なるタイプのキャッシュ要求に関連する1つまたは複数の重みと、前記異なるタイプのキャッシュ要求に関連する1つまたは複数のカウントとに少なくとも部分的に基づいて、受信されたキャッシュ要求のうちの選択されたキャッシュ要求が、前記受信されたキャッシュ要求のうちの最も高い優先順位を有すると決定することと、
前記受信されたキャッシュ要求のうちの他のキャッシュ要求を前記キャッシュに提供する前に、前記選択されたキャッシュ要求を前記キャッシュに提供することと、
を備える、
方法。 - 前記複数の異なるタイプのキャッシュ要求が、色読取りと、色書込みと、深度読取りと、深度書込みとを備える、請求項12に記載の方法。
- 前記1つまたは複数の重みを設定することをさらに備える、請求項12に記載の方法。
- 前記設定することが、ドライバの指示で実行される、請求項14に記載の方法。
- 前記異なるタイプのキャッシュ要求の相対的優先順位を決定することが、前記受信された要求のうちの少なくとも1つに関連する前記キャッシュ内のロケーションが利用可能かどうかに少なくとも部分的に基づく、請求項12に記載の方法。
- 前記異なるタイプのキャッシュ要求の各々のカウンタで前記異なるタイプのキャッシュ要求の各々のキャッシュ要求の前記カウントを生成することをさらに備える、請求項12に記載の方法。
- 条件を検出することに少なくとも部分的に基づいて、前記異なるタイプのキャッシュ要求の数の前記カウントをクリアすることをさらに備える、請求項17に記載の方法。
- 前記条件が、あらかじめ定められた数のキャッシュ要求が受信されていることを示す、請求項18に記載の方法。
- 実行されたとき、グラフィックス・プロセッシング・ユニットに、方法を実行するよう指示する命令を備える非一時的コンピュータ可読ストレージであって、前記方法が、
異なるタイプのキャッシュ要求に関連する重みと、前記異なるタイプのキャッシュ要求に関連するカウントとに少なくとも部分的に基づいて、キャッシュにアクセスするための複数の前記異なるタイプのキャッシュ要求からキャッシュ要求を選択することと、ここにおいて、前記異なるタイプのキャッシュ要求は、色プロセッサと深度プロセッサとによって提供される、
前記選択されたキャッシュ要求を前記キャッシュに提供することと
を備える、
非一時的コンピュータ可読ストレージ。 - 前記方法が、アービタのレジスタ内の前記重みを設定することをさらに備え、前記重みが設定可能である、請求項20に記載の非一時的コンピュータ可読ストレージ。
- 選択することが、前記キャッシュ要求に関連する前記キャッシュ内のロケーションが利用可能かどうかに少なくとも部分的に基づく、請求項21に記載の非一時的コンピュータ可読ストレージ。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361818358P | 2013-05-01 | 2013-05-01 | |
US61/818,358 | 2013-05-01 | ||
US13/928,169 | 2013-06-26 | ||
US13/928,169 US9135179B2 (en) | 2013-05-01 | 2013-06-26 | System and method of arbitrating cache requests |
PCT/US2014/034210 WO2014179059A1 (en) | 2013-05-01 | 2014-04-15 | System and method of arbitrating cache requests |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017023095A Division JP6411557B2 (ja) | 2013-05-01 | 2017-02-10 | キャッシュ要求を調停するシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2016524740A true JP2016524740A (ja) | 2016-08-18 |
Family
ID=51842136
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016511753A Pending JP2016524740A (ja) | 2013-05-01 | 2014-04-15 | キャッシュ要求を調停するシステムおよび方法 |
JP2017023095A Expired - Fee Related JP6411557B2 (ja) | 2013-05-01 | 2017-02-10 | キャッシュ要求を調停するシステムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017023095A Expired - Fee Related JP6411557B2 (ja) | 2013-05-01 | 2017-02-10 | キャッシュ要求を調停するシステムおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (2) | US9135179B2 (ja) |
EP (1) | EP2992432B1 (ja) |
JP (2) | JP2016524740A (ja) |
KR (1) | KR101645152B1 (ja) |
CN (1) | CN105164652B (ja) |
WO (1) | WO2014179059A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135179B2 (en) * | 2013-05-01 | 2015-09-15 | Qualcomm, Incorporated | System and method of arbitrating cache requests |
US9940244B2 (en) * | 2013-11-19 | 2018-04-10 | Netapp, Inc. | System and method for improved storage request handling in host-side caches |
US10572399B2 (en) * | 2016-07-13 | 2020-02-25 | Qualcomm Incorporated | Memory request arbitration |
US10169233B2 (en) * | 2017-06-05 | 2019-01-01 | International Business Machines Corporation | Translation lookaside buffer purging with concurrent cache updates |
US10963392B1 (en) | 2018-07-30 | 2021-03-30 | Apple Inc. | Victim allocations in shared system cache |
US10649922B2 (en) | 2018-08-06 | 2020-05-12 | Apple Inc. | Systems and methods for scheduling different types of memory requests with varying data sizes |
CN110223214B (zh) * | 2019-06-10 | 2023-04-11 | 西安芯瞳半导体技术有限公司 | 一种降低纹理单元访问量的方法、装置及计算机存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06501123A (ja) * | 1991-07-08 | 1994-01-27 | セイコーエプソン株式会社 | 複数の異種プロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャ |
US20060090046A1 (en) * | 2004-10-22 | 2006-04-27 | Intel Corporation | Banking render cache for multiple access |
US20080091883A1 (en) * | 2006-10-12 | 2008-04-17 | International Business Machines Corporation | Load starvation detector and buster |
US20080091866A1 (en) * | 2006-10-12 | 2008-04-17 | International Business Machines Corporation | Maintaining forward progress in a shared L2 by detecting and breaking up requestor starvation |
JP2010049708A (ja) * | 1999-01-19 | 2010-03-04 | Arm Ltd | データ処理システムに於けるメモリ制御 |
US20120059962A1 (en) * | 2010-09-08 | 2012-03-08 | Siaw Kang Lai | Providing a fine-grained arbitration system |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3099940B2 (ja) | 1995-12-25 | 2000-10-16 | 日本電気株式会社 | 3次元グラフィックス制御装置 |
US6385678B2 (en) | 1996-09-19 | 2002-05-07 | Trimedia Technologies, Inc. | Method and apparatus for bus arbitration with weighted bandwidth allocation |
US6798420B1 (en) | 1998-11-09 | 2004-09-28 | Broadcom Corporation | Video and graphics system with a single-port RAM |
JP2002043544A (ja) * | 2000-07-21 | 2002-02-08 | Mitsubishi Electric Corp | 半導体装置およびその製造方法 |
US6643747B2 (en) * | 2000-12-27 | 2003-11-04 | Intel Corporation | Processing requests to efficiently access a limited bandwidth storage area |
US6778175B2 (en) | 2002-02-05 | 2004-08-17 | Xgi Technology Inc. | Method of arbitration of memory request for computer graphics system |
JP2005309653A (ja) * | 2004-04-20 | 2005-11-04 | Hitachi Global Storage Technologies Netherlands Bv | ディスク装置及びキャッシュ制御方法 |
US8203564B2 (en) * | 2007-02-16 | 2012-06-19 | Qualcomm Incorporated | Efficient 2-D and 3-D graphics processing |
DE102007023737B4 (de) | 2007-05-16 | 2009-01-02 | Seereal Technologies S.A. | Verfahren zum Generieren von Videohologrammen in Echtzeit zur Erweiterung einer 3D-Rendering-Graphikpipeline |
US8312071B2 (en) * | 2008-04-11 | 2012-11-13 | International Business Machines Corporation | Method and structure for provably fair random number generator |
JP2008234681A (ja) | 2008-04-30 | 2008-10-02 | Sega Corp | ビデオゲーム装置、画像表示装置及び方法、動画表示装置及び方法並びに記録媒体 |
US8099528B2 (en) * | 2008-09-30 | 2012-01-17 | Apple Inc. | Data filtering using central DMA mechanism |
US20120054439A1 (en) * | 2010-08-24 | 2012-03-01 | Walker William L | Method and apparatus for allocating cache bandwidth to multiple processors |
US8314807B2 (en) | 2010-09-16 | 2012-11-20 | Apple Inc. | Memory controller with QoS-aware scheduling |
JP2012169916A (ja) | 2011-02-15 | 2012-09-06 | Ricoh Co Ltd | 画像処理装置および画像形成装置 |
US9135179B2 (en) * | 2013-05-01 | 2015-09-15 | Qualcomm, Incorporated | System and method of arbitrating cache requests |
-
2013
- 2013-06-26 US US13/928,169 patent/US9135179B2/en active Active
-
2014
- 2014-04-15 CN CN201480024513.4A patent/CN105164652B/zh not_active Expired - Fee Related
- 2014-04-15 WO PCT/US2014/034210 patent/WO2014179059A1/en active Application Filing
- 2014-04-15 EP EP14724283.8A patent/EP2992432B1/en not_active Not-in-force
- 2014-04-15 JP JP2016511753A patent/JP2016524740A/ja active Pending
- 2014-04-15 KR KR1020157031385A patent/KR101645152B1/ko active IP Right Grant
-
2015
- 2015-09-14 US US14/853,891 patent/US10289574B2/en not_active Expired - Fee Related
-
2017
- 2017-02-10 JP JP2017023095A patent/JP6411557B2/ja not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06501123A (ja) * | 1991-07-08 | 1994-01-27 | セイコーエプソン株式会社 | 複数の異種プロセッサをサポートすることのできるマイクロプロセッサ・アーキテクチャ |
JP2010049708A (ja) * | 1999-01-19 | 2010-03-04 | Arm Ltd | データ処理システムに於けるメモリ制御 |
US20060090046A1 (en) * | 2004-10-22 | 2006-04-27 | Intel Corporation | Banking render cache for multiple access |
US20080091883A1 (en) * | 2006-10-12 | 2008-04-17 | International Business Machines Corporation | Load starvation detector and buster |
US20080091866A1 (en) * | 2006-10-12 | 2008-04-17 | International Business Machines Corporation | Maintaining forward progress in a shared L2 by detecting and breaking up requestor starvation |
US20120059962A1 (en) * | 2010-09-08 | 2012-03-08 | Siaw Kang Lai | Providing a fine-grained arbitration system |
Also Published As
Publication number | Publication date |
---|---|
EP2992432B1 (en) | 2017-08-16 |
JP2017134842A (ja) | 2017-08-03 |
US20140331012A1 (en) | 2014-11-06 |
CN105164652B (zh) | 2018-07-10 |
KR20150127742A (ko) | 2015-11-17 |
EP2992432A1 (en) | 2016-03-09 |
WO2014179059A1 (en) | 2014-11-06 |
US20160004651A1 (en) | 2016-01-07 |
US10289574B2 (en) | 2019-05-14 |
US9135179B2 (en) | 2015-09-15 |
CN105164652A (zh) | 2015-12-16 |
KR101645152B1 (ko) | 2016-08-02 |
JP6411557B2 (ja) | 2018-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6411557B2 (ja) | キャッシュ要求を調停するシステムおよび方法 | |
US9483270B2 (en) | Distributed tiled caching | |
US10032243B2 (en) | Distributed tiled caching | |
JP5963282B2 (ja) | 割り込み分配スキーム | |
US9639466B2 (en) | Control mechanism for fine-tuned cache to backing-store synchronization | |
US10275275B2 (en) | Managing copy operations in complex processor topologies | |
US20150378919A1 (en) | Selective prefetching for a sectored cache | |
US9626216B2 (en) | Graphics processing unit sharing between many applications | |
US8447897B2 (en) | Bandwidth control for a direct memory access unit within a data processing system | |
CN107636630B (zh) | 中断控制器 | |
US11880925B2 (en) | Atomic memory update unit and methods | |
US20180081715A1 (en) | Network interface controller-based scheduling of processing tasks in a distributed computing system | |
US11709711B2 (en) | Allocation of memory access bandwidth to clients in an electronic device | |
US9754561B2 (en) | Managing memory regions to support sparse mappings | |
US20180285277A1 (en) | Hot cache line arbitration | |
US8963938B2 (en) | Modified quality of service (QoS) thresholds | |
CN114327245A (zh) | 内存管理的方法及其装置 | |
US20140379846A1 (en) | Technique for coordinating memory access requests from clients in a mobile device | |
US10579428B2 (en) | Data token management in distributed arbitration systems | |
WO2022271248A1 (en) | Methods and apparatus to align media workloads | |
US8959296B2 (en) | Method and apparatus for centralized timestamp processing | |
US20140143456A1 (en) | Determining a mapping mode for a dma data transfer | |
US9361105B2 (en) | Technique for counting values in a register | |
JP2013200827A (ja) | プロセススケジューリング装置、プロセススケジューリング方法、及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20160713 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20161011 |