JP3840966B2 - 画像処理装置およびその方法 - Google Patents
画像処理装置およびその方法 Download PDFInfo
- Publication number
- JP3840966B2 JP3840966B2 JP2001379350A JP2001379350A JP3840966B2 JP 3840966 B2 JP3840966 B2 JP 3840966B2 JP 2001379350 A JP2001379350 A JP 2001379350A JP 2001379350 A JP2001379350 A JP 2001379350A JP 3840966 B2 JP3840966 B2 JP 3840966B2
- Authority
- JP
- Japan
- Prior art keywords
- local
- module
- global
- data
- cache
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/60—Memory management
-
- 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/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/005—General purpose rendering architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/52—Parallel processing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Description
【発明の属する技術分野】
本発明は、複数の演算処理装置が処理データを共有して並列処理を行う画像処理装置およびその方法に関するものである。
【0002】
【従来の技術】
近年、3次元コンピュータグラフィックス(3D Computer Graphics)をハードウェアで高速に実行するグラフィックスLSIの普及は著しく、特にゲーム機やパーソナルコンピュータ(PC)では、このグラフィックスLSIを標準で搭載しているものが多い。
また、グラフィックスLSIにおける技術的進歩は早く、「DirectX」で採用された「Vertex Shader」や「Pixe1 Shader」に代表される機能面での拡張が続けられているとともに、CPUを上回るペースで性能が向上している。
【0003】
グラフィックスLSIの性能を向上させるには、LSIの動作周波数を上げるだけではなく、並列処理の手法を利用することが有効である。並列処理の手法を大別すると以下のようになる。
第1は領域分割による並列処理法であり、第2はプリミティブレベルでの並列処理法であり、第3はピクセルレベルでの並列処理法である。
【0004】
上記分類は並列処理の粒度に基づいており、領域分割並列処理の粒度が最もあらく、ピクセル・レベル並列処理の粒度が最も細かい。それぞれの手法の概要を以下に述べる。
【0005】
領域分割による並列処理
画面を複数の矩形領域に分割し、複数の処理ユニットそれぞれが担当する領域を割り当てながら並列処理する手法である。
【0006】
プリミティブレベルでの並列処理
複数の処理ユニットに別々のプリミティブ(たとえば三角形)を与えて並列動作させる手法である。
プリミティブレベルでの並列化処理について概念的に示したものを図1に示す。
図1において、PM0〜PMn−1がそれぞれ異なるプリミティブを示し、PU0〜PUn−1が処理ユニット、MM0〜MMn−1がメモリモジュールをそれぞれ示している。
各処理ユニットPU0〜PUn−1に比較的均等な大きさのプリミティブPM0〜PMn−1が与えられているときには、各処理ユニットPU0〜PUn−1に対する負荷のバランスがとれ、効率的並列処理が行える。
【0007】
ピクセルレベルでの並列処理
最も粒度の細かい並列処理の手法である。
図2は、ピクセルレベルでの並列処理の手法に基づくプリミティブ・レベルでの並列化処理について概念的に示す図である。
図2のように、ピクセルレベルでの並列処理の手法では三角形をラスタライズする際に、2×8のマトリクス状に配列されたピクセルからなるピクセルスタンプ(Pixel Stamp)PSと呼ばれる矩形領域単位にピクセルが生成される。
図2の例では、ピクセルスタンプPS0からからピクセルスタンプPS7までの合計8個のピクセルスタンプが生成されている。これらピクセルスタンプPS0〜PS7に含まれる最大16個のピクセルが同時に処理される。
この手法は、他の手法に比べ粒度が細かい分、並列処理の効率が良い。
【0008】
【発明が解決しようとする課題】
しかしながら、上述した領域分割による並列処理の場合、各処理ユニットを効率良く並列動作させるためには、各領域に描画されるべきオブジェクトをあらかじめ分類する必要があり、シーンデータ解析の負荷が重い。
また、1フレーム分のシーンデータが全て揃った上で描画を開始するのではなく、オブジェクトデータが与えられると即描画を開始するいわゆるイミーディエートモードでの描画を行う際には並列性を引き出すことができない。
【0009】
また、プリミティブレベルでの並列処理の場合、実際には、オブジェクトを構成するプリミティブPM0〜PMn−1の大きさにはバラツキがあることから、処理ユニットPU0〜PUn−1ごとに一つのプリミティブを処理する時間に差が生じる。この差が大きくなった際には、処理ユニットが描画する領域も大きく異なり、データのローカリティが失われるので、メモリモジュールを構成するたとえばDRAMのページミスが頻発し性能が低下する。
また、この手法の場合には、配線コストが高いという問題点もある。一般に、グラフィックス処理を行うハードウェアでは、メモリのバンド幅を広げるために、複数メモリモジュールを用いてメモリインターリーブを行う。
その際、図1に示すように、各処理ユニットPU0〜PUn−1と各内蔵メモリモジュールMM0〜MMn−1を全て結ぶ必要がある。
【0010】
また、ピクセルレベルでの並列処理の場合、グラフィックスで処理されるプリミティブの大きさは小さくなる傾向にあることから、ピクセルスタンプのサイズを大きくしても無効なピクセルが増えるだけで実行効率が上がらない。
したがって、この手法によって並列処理できるピクセルの数には限界がある。
【0011】
そこで、上述した各並列処理手法の特性に基づき、以下のような並列処理手法をとることが考えられる。
すなわち、並列処理の粒度という観点からはピクセルレベルの並列処理を採用する。
ただし、ピクセルレベルの並列処理では並列度に限界があるので、複数のプリミティブを同時処理する。
また、処理ユニットとメモリモジュールを直結できる処理分配とし、配線コストを低減する。
【0012】
図3は、ピクセルレベルの並列処理を採用し、複数のプリミティブを同時処理し、処理ユニットとメモリモジュールを直結できる処理分配とする画像処理装置の構成を概念的に示す図である。
【0013】
画像処理装置1は、図3に示すように、ストリームデータコントローラ(Streaming Data Contro11er:SDC)2、およびSDC2に対して並列に接続されたn個のモジュール3−0〜3−n−1を有している。
各モジュール3−0〜3−n−1は、それぞれ処理ユニットPU(0〜n−1)およびメモリモジュールMM(0〜n−1)を含む。
【0014】
図3において、各メモリモジュールMM0〜MMn−1はインターリーブされているとする。
また、SDC2は、CPUや外部メモリとのデータの授受を司るとともに、処理ユニットPU0〜PUn−1におけるラスタライゼーションに必要なパラメータを生成する。これらのパラメータは、全処理ユニットPU0〜PUn−1に対して供給される。
各処理ユニットPU0〜PUn−1は、あらかじめ対応するメモリインターリーブが決められており、それぞれ担当するピクセルのみを生成する。
【0015】
図4は、図3の画像処理装置におけるピクセル生成について説明するための図である。
【0016】
図4の例では、メモリが4×4の矩形領域単位にインターリーブされている。それぞれの矩形領域をLstamp(Large stamp)と呼ぶこととする。ここでは、図3で示した処理ユニットPUとメモリモジュールMMで構成されるモジュールの数は4個(3−0〜3−3)を想定している。また、モジュールの番号と図4における矩形領域に付与した番号とが対応している。
したがって、図4に示した三角形の場合、モジュール3−0は2個のLstamp、モジュール3−1から3−3はそれぞれ3個のLstampを担当している。
図4からもわかるように、Lstamp内には多くの無効ピクセルが含まれている。そこで、図3の画像処理装置1において、Lstampをさらに2×2の矩形領域4個に分割し(スモールスタンプ:Small stamp:Sstamp)、有効ピクセルを含むスモールスタンプSstampのみ後段で処理することにより演算リソースを有効利用することも可能である。
【0017】
上述した図3の並列化手法により、グラフィックス処理の描画系に関しては、処理ユニットとメモリモジュールを直結できる処理分配が可能で、配線コストを低減できる。
【0018】
しかしながら、テクスチャリード系のメモリアクセスは、描画系のメモリアクセスとは異なるため、他のモジュールに属すメモリからの読み出しが必要となる。
したがって、テクスチャリード系のメモリアクセスに関しては何らかのクロスバーのような配線を必要とするが、それを実現する際には以下の重複アクセス、およびスケーラビリティの各課題を解決しなければならない。
【0019】
重複アクセス
一般に、スクリーン上の矩形領域をテクスチャ空間に投影すると形状と大きさが異なる領域を占める。
図5(A),(B)は、スクリーン上の矩形領域をテクスチャ空間に投影する様子を概念的に示す図である。
ここで、テクスチャデータは、フレームバッファやZバッファのデータと同様に、インターリーブされたメモリに均等に格納されているとする。
すなわち、4×4の矩形領域は、付与された番号に対応するモジュール内のメモリに格納される。図では、図5(A)に示すスクリーン空間(ScreenSpace)上で隣接する4×4の矩形領域4つが、図5(B)に示すテクスチャ空間(Texture Space)上に投影されている様子を示している。
たとえば、図5(B)において“モジュール3−0の領域(Region for Module3−0)”と記載された領域は、モジュール3−0が担当するスクリーン空間上で4×4の矩形領域に対してマッピングされるテクスチャデータを示す。
【0020】
この場合、図5(A),(B)に示すように、あるモジュール内に格納されているテクスチャデータに対して、他の複数のモジュールがアクセスを行う。しかもアクセスするタイミングは、それぞれ異なってくる。
したがって、モジュール間の転送単位が4×4テクセル単位であるとすると、図5(B)のテクスチャ空間において網掛けで示されたデータは、4回転送されることになる。
このように、同一のデータを複数回転送することは、電気的、物理的条件で制約されるメモリバンド幅を浪費し、性能低下を招く。
【0021】
スケーラビリティ
図6は、複数の処理ユニットで並列処理を行うシステムにおいて、テクスチャリード系のメモリアクセスに必要となるクロスバーを最も直接的な形で実現した例を示す図である。
図6において、GABで示すグローバルアクセスバス(Global Access Bus)がテクスチャアクセス用のクロスバーに相当する。
【0022】
1つのメモリモジュールから読み出されるデータのビット数をMビット、並列処理するモジュールの数をn個とすると、テクスチャアクセスに必要なデータ配線本数は、M×n本である。
図6に示したシステムをLSI化する際には、前記本数(M×n本)のデータ線が全モジュールに亘って横方向に配線されるのみならず、各処理ユニットに引き込むための縦方向の配線も必要となる。
このような形態でのクロスバーは、スケーラビリティを実現する上で以下の、処理ユニットのインターフェース、配線コスト、および配線遅延という不利益をもたらす。
【0023】
処理ユニットインターフェース
図6において破線の楕円で示すように、各モジュール3−0〜3−n−1における処理ユニットPU0〜PUn−1は、n個のメモリモジュールMM0〜MMn−1から読み出されたデータを受取り、必要なデータを選択するためのインターフェースを必要とする。
このインターフェースは、集積されるモジュールの個数に依存するため、並列度を変えるたびに再設計しなければならない。
【0024】
配線コスト
前述した重複アクセスやフィルタリング処理に起因するバンド幅増大を考慮せず、読み出されたテクスチャ・データが100%有効利用される理想的状態において、最低限必要とされるグローバルアクセスバスGABの配線本数を算出してみる。
今、各処理ユニットでは、1サイクル当たり4ピクセルの処理を行い、4つのテクスチャを同時アクセス可能とする。
このとき、1ピクセルあたり平均して1テクセルしか必要としない状態でも、1モジュール当たり4×4×32=512ビットのバンド幅を必要とする。したがって、n個のモジュールを集積したシステムの場合のグローバルアクセスバスGABの配線幅WB は以下のように求まる。
【0025】
【数1】
WB =(512×N×Wp )/NL
【0026】
ここで、Wp は配線ピッチ、NL は配線に使うレイヤ数である。たとえば、想定する0.07μプロセスでの参考値として、Wp =0.9μ、NL =2を適用すると、モジュール数を変えたときの配線幅は以下のようになる。
【0027】
4モジュール :0.9mm、
8モジュール :1.8mm、
16モジュール:3.6mm
【0028】
チップサイズが10mm角だとすると、8モジュールの場合で、チップサイズの20%をグローバルアクセスバスGABの横配線のみで使用してしまう。
しかも、理想状態における最低限必要な配線であり、実際にはその倍以上はないと実行性能がでない。
【0029】
配線遅延
プロセスが微細化し、動作周波数も上がってくると、配線による遅延が支配的となる。たとえば、1GHz動作の場合、配線できる長さは1mmから2mm程度と言われる。
したがって、図6に示したようなグローバルアクセスバスGABの場合、バスの端から端までが10mmを越えることもある。その結果、配線にパイプラインレジスタを必要とし、読み出しレイテンシーが増大する。
しかも、処理ユニットとメモリモジュールの組み合わせによって配線長が異なるため、組み合わせごとのタイミングの最適化を行わなければならず、設計しにくいという問題もある。
【0030】
本発明は、かかる事情に鑑みてなされたものであり、その目的、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要で、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置およびその方法を提供することにある。
【0031】
【課題を解決するための手段】
上記目的を達成するため、本発明の第1の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、複数のローカルモジュールとを含み、上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールは、画像に関するデータが記憶されるメモリモジュールと、少なくとも上記処理データを記憶するローカルキャッシュと、演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する。
【0032】
本発明の第2の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、グローバルモジュールと、複数のローカルモジュールとを含む複数のクラスタを有し、上記各クラスタの上記グローバルモジュールは、上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールは、画像に関するデータが記憶されるメモリモジュールと、少なくとも上記処理データを記憶するローカルキャッシュと、演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新し、各クラスタのグローバルモジュールが互いにデータの授受を行う。
【0033】
また、本発明の第2の観点では、上記複数のクラスタは、マトリクス状に配置され、各クラスタのグローバルモジュールはリング状に接続されている。
【0034】
本発明の第1または第2の観点では、上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する。
【0035】
本発明の第1または第2の観点では、上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【0036】
本発明の第1または第2の観点では、上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【0037】
好適には、上記演算用パラメータを生成するコントローラを有し、上記グローバルモジュールは、上記コントローラで生成された演算用パラメータを上記複数のローカルモジュールに供給する。
【0038】
本発明の第1または第2の観点では、上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエストおよびデータの授受を行う。
【0039】
好適には、上記複数のローカルモジュールは、上記グローバルモジュールを中心として、当該グローバルモジュールの周辺近傍に配置されている。
また、好適には、上記複数のローカルモジュールは、上記グローバルモジュールを中心として、当該グローバルモジュールの周辺近傍で、かつ、対応するチャネルブロックの近傍にそれぞれ配置されている。
【0040】
本発明の第1または第2の観点では、上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエスト、グローバルキャッシュフィルリクエストおよびデータの授受を行う。
【0041】
好適には、上記並列処理は、ピクセルレベルでの並列処理である。
また、上記並列処理はテクスチャに関する処理である。
【0042】
本発明の第3の観点は、複数のモジュールが処理データを共有して並列処理を行う画像処理方法であって、一つのグローバルモジュールに対して複数のローカルモジュールを並列に接続し、キャッシュの階層として、複数のローカルモジュールが共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層とし、グローバルモジュールにおいて、グローバルキャッシュにローカルモジュールで必要な処理データを記憶して、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、上記複数のローカルモジュールにおいて、上記ローカルキャッシュに少なくとも上記処理データを記憶して、演算用パラメータおよびローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する。
【0043】
本発明の第3の観点では、上記グローバルモジュールがローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する。
【0044】
本発明の第3の観点では、上記ローカルモジュールがグローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールが、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【0045】
本発明の第3の観点では、上記ローカルモジュールがグローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、上記グローバルモジュールがローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する。
【0046】
本発明によれば、たとえばテクスチャ系の処理に場合には、コントローラにおいて演算用パラメータが生成され、生成されたパラメータはたとえばグローバルモジュールを介してローカルモジュールにブロードキャストされる。
各ローカルモジュールでは、処理ユニットにおいて、たとえば以下の処理が行われる。
すなわち、処理ユニットにおいては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピルセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュールの処理ユニットでは、テクスチャリードの際に、まず、ローカルキャッシュのエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ内に無い場合には、各処理ユニットでは、グローバルモジュールに対してローカルキャッシュフィルのリクエストが送出される。
【0047】
グローバルモジュールにおいては、要求されたブロックデータがグローバルキャッシュにあると、対応するグローバルキャッシュのアドレスから読み出されてチャネルを通してリクエストを送出したローカルモジュールに送り返される。
一方、要求されたブロックデータがグローバルキャッシュにないと当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュールに送出される。
その後、グローバルモジュールでは、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【0048】
グローバルモジュールから要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
次に、ローカルモジュールでは、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータは、メモリモジュール、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0049】
【発明の実施の形態】
図7は、本発明の係る画像処理装置の一実施形態を示すブロック構成図である。
【0050】
本実施形態に係る画像処理装置10は、図7に示すように、ストリームデータコントローラ(SDC)11、グローバルモジュール12、およびローカルモジュール13−0〜13−3を有している。
【0051】
本画像処理装置10では、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個、本実施形態では4個のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理する。
そして、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、グローバルアクセスバスの形態をとる代わりに、ルータとしての機能を有する一つのグローバルモジュール12を介したアクセスを行う。
また、後で詳述するように、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有する。
すなわち、本画像処理装置10は、キャッシュの階層として、たとえば4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有する。
【0052】
以下に各構成要素の構成および機能について、図面に関連付けて順を追って説明する。
【0053】
SDC11は、CPUや外部メモリとのデータの授受、並びにグローバルモジュール12とのデータの授受を司るとともに、頂点データに対する演算、各ローカルモジュール13−0〜13−3の処理ユニットにおけるラスタライゼーションに必要なパラメータの生成等の処理を行う。
【0054】
SDC11における具体的な処理内容は以下の通りである。また、SDC11の処理手順を図8に示す。
【0055】
SDC11は、まず、データが入力されると(ST1)、Per−Vertexオペレーションを行う(ST2)。
この処理においては、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。代表的な演算としては、物体の変形やスクリーンへの投影などを行う座標変換の演算処理、ライティング(Lighting)の演算処理、クリッピング(Clipping)の演算処理がある。
ここで行われる処理は、いわゆるVertex Shaderの実行に相当する。
【0056】
次に、DDA(Digital Differential Anarizer)パラメータを計算する(ST3)。
この処理では、ラスタライゼーション(Rasterization)に必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータを算出する。
【0057】
次に、算出したDDAパラメータをグローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストする(ST4)。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0058】
グローバルモジュール12は、ルータ機能および全ローカルモジュールで共用するグローバルキャッシュ121を有する。
グローバルモジュール12は、SDC11によるDDAパラメータを並列に接続された全ローカルモジュール13−0〜13−3にブロードキャストする。
【0059】
また、グローバルモジュール12は、あるローカルモジュールからローカルキャッシュフィル(Local Cache Fill)LCFのリクエストを受けると、図9に示すように、グローバルキャッシュのエントリーをチェックし(ST11)、エントリーがあった場合には(ST12)、要求されたブロックデータを読み出し(ST13)、読み出したデータをリクエストを送出したローカルモジュールに送出し(ST14)、エントリーがなかった場合には(ST12)、当該ブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィル(Global Cache Fill)GCFのリクエストを送り(ST15)、その後送られてきたブロックデータでグローバルキャッシュを更新するとともに(ST16,ST17)、ブロックデータを読み出し(ST13)、読み出したデータをローカルキャッシュフィルLDFのリクエストを送ってきたローカルモジュールに対して送出する(ST14)。
【0060】
図10は、図7のグローバルモジュールの具体的な構成例を示す回路図である。
【0061】
本グローバルモジュール12は、主としてローカルモジュール13−0とのデータの授受を行うチャネルブロックCBLK0と、主としてローカルモジュール13−1とのデータの授受を行うチャネルブロックCBLK1と、主としてローカルモジュール13−2とのデータの授受を行うチャネルブロックCBLK2と、主としてローカルモジュール13−3とのデータの授受を行うチャネルブロックCBLK3とを有する。
そして、本実施形態においては、各チャネルブロックCBLK0〜CBLK3にそれぞれ所定容量のグローバルキャッシュ121−0〜121−3が配置されている。
【0062】
チャネルブロックCBLK0は、グローバルキャッシュ121−0に加えて、ローカルキャッシュフィル用チャネル1201−0、グローバルキャッシュフィル用チャネル1202−0、セレクタ1203−0、タグ回路(Tag)1204−0、アービタ(Arbitor)1205−0、およびたとえばFIFO(Fistt−In First−Out)からなるキュー(Queue)レジスタ1206−0〜1210−0を有している。
【0063】
同様に、チャネルブロックCBLK1は、グローバルキャッシュ121−1に加えて、ローカルキャッシュフィル用チャネル1201−1、グローバルキャッシュフィル用チャネル1202−1、セレクタ1203−1、タグ回路(Tag)1204−1、アービタ(Arbitor)1205−1、およびキュー(Queue)レジスタ1206−1〜1210−1を有している。
【0064】
チャネルブロックCBLK2は、グローバルキャッシュ121−2に加えて、ローカルキャッシュフィル用チャネル1201−2、グローバルキャッシュフィル用チャネル1202−2、セレクタ1203−2、タグ回路(Tag)1204−2、アービタ(Arbitor)1205−2、およびキュー(Queue)レジスタ1206−2〜1210−2を有している。
【0065】
チャネルブロックCBLK3は、グローバルキャッシュ121−3に加えて、ローカルキャッシュフィル用チャネル1201−3、グローバルキャッシュフィル用チャネル1202−3、セレクタ1203−3、タグ回路(Tag)1204−3、アービタ(Arbitor)1205−3、およびキュー(Queue)レジスタ1206−3〜1210−3を有している。
【0066】
チャネルブロックCBLK0におけるローカルキャッシュフィル用チャネル1201−0は、リクエスト用キューレジスタ12011−0およびデータ用キューレジスタ12012−0を有している。
リクエスト用キューレジスタ12011−0は、ローカルモジュール13−0から転送されたローカルキャッシュフィルLCFのリクエストを入力し、キューレジスタ1206−0およびチャネルブロックCBLK1のキューレジスタ1206−1、チャネルブロックCBLK2のキューレジスタ1206−2、およびチャネルブロックCBLK3のキューレジスタ1206−3に出力する。
データ用キューレジスタ12012−0は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されセレクタ1203−0で選択されたブロックデータを受けて、ローカルモジュール13−0に出力する。
【0067】
チャネルブロックCBLK0におけるグローバルキャッシュフィル用チャネル1202−0は、リクエスト用キューレジスタ12021−0およびデータ用キューレジスタ12022−0を有している。
リクエスト用キューレジスタ12021−0は、タグ回路1204−0によるグローバルキャッシュフィルGCFのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール13−0に出力する。
データ用キューレジスタ12022−0は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール13−0から転送されたブロックデータを受けて、グローバルキャッシュ121−0に供給する。
【0068】
チャネルブロックCBLK0におけるセレクタ1203−0は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル1201−0のデータ用キューレジスタ12012−0に供給する。
【0069】
チャネルブロックCBLK0におけるタグ回路1204−0は、グロ−バルキャッシュ121−0に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ1206−0〜1209−0に保持されている各チャネルプロックCBLK〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエストの中からアービタ1205−0により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路1204−0内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ121−0のデータが読み出され、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックCBLK0のグローバルキャッシュ121−0から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路1204−0は、アドレスタグとの比較の結果、グローバルキャッシュ121−0に、ローカルモジュール13−0〜12−3のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ121−0のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ1210−0にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル1202−0のリクエスト用キューレジスタ12021−0に供給する。グローバルキャッシュ121−0においては、グローバルキャッシュ用チャネル1202−0用キューレジスタ12022−0にローカルモジュール13−0から要求したデータが送られてくると、キューレジスタ1210−0にセットされたアドレスに基づいて当該データでグローバルキャッシュ121−0の内容を更新するとともに、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3にローカルキャッシュフィルリクエストで要求されていたデータを供給する。
【0070】
チャネルブロックCBLK0のアービタ1205−0は、キューレジスタ1206−0〜1209−0に保持されている各チャネルブロックCBLK0〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエストを受けて調停作業を行い、グローバルキャッシュ121−0から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路1204−0に出力する。
【0071】
チャネルブロックCBLK0のキューレジスタ1206−0は、チャネル1201−0を介したローカルモジュール13−0によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−0のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1207−0は、チャネルブロックCBLK1のチャネル1201−1を介したローカルモジュール13−1によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−0のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1208−0は、チャネルブロックCBLK2のチャネル1201−2を介したローカルモジュール13−2によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−0のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1209−0は、チャネルブロックCBLK3のチャネル1201−3を介したローカルモジュール13−3によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−0のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【0072】
チャネルブロックCBLK1におけるローカルキャッシュフィル用チャネル1201−1は、リクエスト用キューレジスタ12011−1およびデータ用キューレジスタ12012−1を有している。
リクエスト用キューレジスタ12011−1は、ローカルモジュール13−1から転送されたローカルキャッシュフィルLCFのリクエストを入力し、キューレジスタ1207−1およびチャネルブロックCBLK0のキューレジスタ1207−0、チャネルブロックCBLK2のキューレジスタ1207−2、およびチャネルブロックCBLK3のキューレジスタ1207−3に出力する。
データ用キューレジスタ12012−1は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されセレクタ1203−1で選択されたブロックデータを受けて、ローカルモジュール13−1に出力する。
【0073】
チャネルブロックCBLK1におけるグローバルキャッシュフィル用チャネル1202−1は、リクエスト用キューレジスタ12021−1およびデータ用キューレジスタ12022−1を有している。
リクエスト用キューレジスタ12021−1は、タグ回路1204−1によるグローバルキャッシュフィルGCFのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール13−1に出力する。
データ用キューレジスタ12022−1は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール13−1から転送されたブロックデータを受けて、グローバルキャッシュ121−1に供給する。
【0074】
チャネルブロックCBLK1におけるセレクタ1203−1は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル1201−1のデータ用キューレジスタ12012−1に供給する。
【0075】
チャネルブロックCBLK1におけるタグ回路1204−1は、グロ−バルキャッシュ121−1に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ1206−1〜1209−1に保持されている各チャネルプロックCBLK〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエストの中からアービタ1205−1により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路1204−1内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ121−1のデータが読み出され、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックCBLK1のグローバルキャッシュ121−1から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路1204−1は、アドレスタグとの比較の結果、グローバルキャッシュ121−1に、ローカルモジュール13−0〜12−3のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ121−1のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ1210−1にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル1202−1のリクエスト用キューレジスタ12021−1に供給する。グローバルキャッシュ121−1においては、グローバルキャッシュ用チャネル1202−1用キューレジスタ12022−1にローカルモジュール13−0から要求したデータが送られてくると、キューレジスタ1210−1にセットされたアドレスに基づいて当該データでグローバルキャッシュ121−1の内容を更新するとともに、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3にローカルキャッシュフィルリクエストで要求されていたデータを供給する
【0076】
チャネルブロックCBLK1のアービタ1205−1は、キューレジスタ1206−1〜1209−1に保持されている各チャネルブロックCBLK0〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエストを受けて調停作業を行い、グローバルキャッシュ121−1から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路1204−1に出力する。
【0077】
チャネルブロックCBLK1のキューレジスタ1206−1は、チャネルブロックCBLK0のチャネル1201−0を介したローカルモジュール13−0によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−1のメモリモジュールに記憶されているものと判断されたリクエストを保持する。キューレジスタ1207−1は、チャネルブロックCBLK1のチャネル1201−1を介したローカルモジュール13−1によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−1のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1208−1は、チャネルブロックCBLK2のチャネル1201−2を介したローカルモジュール13−2によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−1のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1209−1は、チャネルブロックCBLK3のチャネル1201−3を介したローカルモジュール13−3によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−1のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【0078】
チャネルブロックCBLK2におけるローカルキャッシュフィル用チャネル1201−2は、リクエスト用キューレジスタ12011−2およびデータ用キューレジスタ12012−2を有している。
リクエスト用キューレジスタ12011−2は、ローカルモジュール13−2から転送されたローカルキャッシュフィルLCFのリクエストを入力し、キューレジスタ1208−2およびチャネルブロックCBLK0のキューレジスタ1208−0、チャネルブロックCBLK1のキューレジスタ1208−1、およびチャネルブロックCBLK3のキューレジスタ1208−3に出力する。
データ用キューレジスタ12012−2は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されセレクタ1203−2で選択されたブロックデータを受けて、ローカルモジュール13−2に出力する。
【0079】
チャネルブロックCBLK2におけるグローバルキャッシュフィル用チャネル1202−2は、リクエスト用キューレジスタ12021−2およびデータ用キューレジスタ12022−2を有している。
リクエスト用キューレジスタ12021−2は、タグ回路1204−2によるグローバルキャッシュフィルGCFのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール13−2に出力する。
データ用キューレジスタ12022−2は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール13−2から転送されたブロックデータを受けて、グローバルキャッシュ121−2に供給する。
【0080】
チャネルブロックCBLK2におけるセレクタ1203−2は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル1201−2のデータ用キューレジスタ12012−2に供給する。
【0081】
チャネルブロックCBLK2におけるタグ回路1204−2は、グロ−バルキャッシュ121−2に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ1206−2〜1209−2に保持されている各チャネルプロックCBLK〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエストの中からアービタ1205−2により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路1204−2内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ121−2のデータが読み出され、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックCBLK2のグローバルキャッシュ121−2から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路1204−2は、アドレスタグとの比較の結果、グローバルキャッシュ121−2に、ローカルモジュール13−0〜12−3のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ121−2のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ1210−2にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル1202−2のリクエスト用キューレジスタ12021−2に供給する。グローバルキャッシュ121−2においては、グローバルキャッシュ用チャネル1202−2用キューレジスタ12022−2にローカルモジュール13−0から要求したデータが送られてくると、キューレジスタ1210−2にセットされたアドレスに基づいて当該データでグローバルキャッシュ121−2の内容を更新するとともに、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3にローカルキャッシュフィルリクエストで要求されていたデータを供給する。
【0082】
チャネルブロックCBLK2のアービタ1205−2は、キューレジスタ1206−2〜1209−2に保持されている各チャネルブロックCBLK0〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエスト調停作業を行い、グローバルキャッシュ121−2から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路1204−2に出力する。
【0083】
チャネルブロックCBLK2のキューレジスタ1206−2は、チャネルブロックCBLK0のチャネル1201−0を介したローカルモジュール13−0によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−2のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1207−2は、チャネルブロックCBLK1のチャネル1201−1を介したローカルモジュール13−1によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−2のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1208−2は、チャネルブロックCBLK2のチャネル1201−2を介したローカルモジュール13−2によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−2のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1209−2は、チャネルブロックCBLK3のチャネル1201−3を介したローカルモジュール13−3によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−2のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【0084】
チャネルブロックCBLK3におけるローカルキャッシュフィル用チャネル1201−3は、リクエスト用キューレジスタ12011−3およびデータ用キューレジスタ12012−3を有している。
リクエスト用キューレジスタ12011−3は、ローカルモジュール13−3から転送されたローカルキャッシュフィルLCFのリクエストを入力し、キューレジスタ1209−3およびチャネルブロックCBLK0のキューレジスタ1209−0、チャネルブロックCBLK1のキューレジスタ1209−1、およびチャネルブロックCBLK2のキューレジスタ1209−2に出力する。
データ用キューレジスタ12012−3は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されセレクタ1203−3で選択されたブロックデータを受けて、ローカルモジュール13−3に出力する。
【0085】
チャネルブロックCBLK3におけるグローバルキャッシュフィル用チャネル1202−3は、リクエスト用キューレジスタ12021−3およびデータ用キューレジスタ12022−3を有している。
リクエスト用キューレジスタ12021−3は、タグ回路1204−3によるグローバルキャッシュフィルGCFのリクエストを受けて、要求するブロックデータを保持するターゲットのローカルモジュール13−3に出力する。
データ用キューレジスタ12022−3は、グローバルキャッシュフィルリクエストを受けたターゲットのローカルモジュール13−3から転送されたブロックデータを受けて、グローバルキャッシュ121−3に供給する。
【0086】
チャネルブロックCBLK3におけるセレクタ1203−3は、グローバルキャッシュ121−0、121−1、121−2、または121−3から読み出されブロックデータを図示しない制御系の指示に応じて選択し、ローカルキャッシュフィル用チャネル1201−3のデータ用キューレジスタ12012−3に供給する。
【0087】
チャネルブロックCBLK3におけるタグ回路1204−3は、グロ−バルキャッシュ121−3に記憶されているブロックデータのアドレスタグを記憶するメモリを有し、キューレジスタ1206−3〜1209−3に保持されている各チャネルプロックCBLK〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエストの中からアービタ1205−3により選択されたリクエストが要求するブロックデータのアドレスと前記タグ回路1204−3内に記憶されたアドレスタグを比較し、一致するものがあれば当該アドレスタグに対応するグローバルキャッシュ121−2のデータが読み出され、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3に供給される。
このとき、ローカルキャッシュフィルリクエストを送って来たローカルモジュールとデータの授受を行うチャネルブロックのセレクタにおいてチャネルブロックCBLK3のグローバルキャッシュ121−3から読み出されたデータを選択するように、図示しない制御系により指示される。
一方、タグ回路1204−3は、アドレスタグとの比較の結果、グローバルキャッシュ121−3に、ローカルモジュール13−0〜12−3のいずれかから要求されたブロックデータが記憶されていないことが判明した場合には、グローバルキャシュ121−3のどのアドレスにデータが有るかを示すフラグをセットし、そのアドレスをキューレジスタ1210−3にセットするとともに、グローバルキャッシュフィルリクエストをグローバルキャッシュ用チャネル1202−3のリクエスト用キューレジスタ12021−3に供給する。グローバルキャッシュ121−3においては、グローバルキャッシュ用チャネル1202−3用キューレジスタ12022−3にローカルモジュール13−0から要求したデータが送られてくると、キューレジスタ1210−3にセットされたアドレスに基づいて当該データでグローバルキャッシュ121−3の内容を更新するとともに、各チャネルブロックCBLK0〜CBLK3のセレクタ1203−0〜1203−3にローカルキャッシュフィルリクエストで要求されていたデータを供給する。
【0088】
チャネルブロックCBLK3のアービタ1205−3は、キューレジスタ1206−3〜1209−3に保持されている各チャネルブロックCBLK0〜CBLK3を介した各ローカルモジュール13−0〜13−3によるローカルキャッシュフィルリクエスト調停作業を行い、グローバルキャッシュ121−3から同時読み出し可能なブロックデータの数に応じてリクエストを選択し、タグ回路1204−3に出力する。
【0089】
チャネルブロックCBLK3のキューレジスタ1206−3は、チャネルブロックCBLK0のチャネル1201−0を介したローカルモジュール13−0によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−3のメモリモジュールに記憶されているものと判断されたリクエストを保持する。キューレジスタ1207−3は、チャネルブロックCBLK1のチャネル1201−1を介したローカルモジュール13−1によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−3のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1208−3は、チャネルブロックCBLK2のチャネル1201−2を介したローカルモジュール13−2によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−3のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
キューレジスタ1209−3は、チャネルブロックCBLK3のチャネル1201−3を介したローカルモジュール13−3によるローカルキャッシュフィルリクエストのうち、ローカルモジュール13−3のメモリモジュールに記憶されているものと判断されたリクエストを保持する。
【0090】
なお、図10の構成は一例であり、グローバルキャッシュ121を各チャネルブロック毎にそれぞれ配置した構成の代わりに、一つのキャッシュを設けて各チャネルブロックからアクセスする等、種々の態様が可能である。
【0091】
ローカルモジュール13−0は、処理ユニット131−0、たとえばDRARMからなるメモリモジュール132−0、モジュール固有のローカルキャッシュ133−0、およびグローバルモジュール12のチャネルブロックCBLK0とのインターフェースを司るグローバルインターフェース(Global AccessInterface:GAIF))134−0を有している。
【0092】
同様に、ローカルモジュール13−1は、処理ユニット131−1、たとえばDRARMからなるメモリモジュール132−1、モジュール固有のローカルキャッシュ133−1、およびグローバルモジュール12のチャネルブロックCBLK1とのインターフェースを司るグローバルインターフェース(GAIF)134−1を有している。
ローカルモジュール13−2は、処理ユニット131−2、たとえばDRARMからなるメモリモジュール132−2、モジュール固有のローカルキャッシュ133−2、およびグローバルモジュール12のチャネルブロックCBLK2とのインターフェースを司るグローバルインターフェース(GAIF)134−2を有している。
ローカルモジュール13−3は、処理ユニット131−3、たとえばDRARMからなるメモリモジュール132−3、モジュール固有のローカルキャッシュ133−3、およびグローバルモジュール12のチャネルブロックCBLK3とのインターフェースを司るグローバルインターフェース(GAIF)134−3を有している。
【0093】
各ローカルモジュール13−0〜13−3は、メモリモジュール132−0〜132−3が所定の大きさ、たとえば4×4の矩形領域単位にインターリーブされており、メモリモジュール132−0と処理ユニット131−0、メモリモジュール132−1と処理ユニット131−1、メモリモジュール132−2と処理ユニット131−2、およびメモリモジュール132−3と処理ユニット131−3は、担当領域は1対1に対応しており、描画系については他のローカルモジュールに対するメモリアクセスが発生しない
一方、各ローカルモジュール13−0〜13−3は、テクスチャリード系に関しては、他のローカルモジュールに対するメモリアクセスを必要とするが、この場合、グローバルモジュール12を介したアクセスを行う。
【0094】
各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3はそれぞれ以下の処理を行う。また、処理ユニット131−0〜131−3の処理手順を図11に示す。
【0095】
処理ユニット131は、ブロードキャストされたパラメータデータが入力されると(ST21)、三角形が自分が担当する領域であるか否かを判断し(ST22)、担当領域である場合には、ラスタライゼーション(Rasterization)を行う(ST23)。
すなわち、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピクセルの矩形領域単位でインターリーブされた領域に属しているか否かを判断し、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)をラスタライズする。この場合、生成単位は、1ローカルモジュール当たり1サイクルで2×2ピクセルである。
【0096】
次に、テクスチャ座標のパースペクティブコレクション(Perspective Correction)を行う(ST24)。また、この処理ステージにはLOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算も含まれる。
【0097】
次に、テクスチャの読み出しを行う(ST25)。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3は、図12に示すように、テクスチャリードの際に、まずは、ローカルキャッシュ133−0〜133−3のエントリーをチェックし(ST31)、エントリーがあった場合には(ST32)、必要なテクスチャデータを読み出す(ST33)。
必要とするテクスチャ・データがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3は、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストを送る(ST34)。
そして、グローバルモジュール12は、要求されたブロックをリクエストを送出したローカルモジュールに返すが、なかった場合には上述したように(図9に関連付けて説明)、当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストを送る。その後ブロックデータをグローバルキャッシュにフィルするとともに、リクエストを送ってきたローカルモジュールに対してデータを送出する。
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールは、ローカルキャッシュを更新し(ST35,ST36)、処理ユニットはブロックデータを読み出す(ST33)。
なお、ここでは、最大4テクスチャの同時処理を想定しており、読み出すテクスチャデータの数は、1ピクセルにつき16テクセルである。
【0098】
次に、テクスチャフィルタリング(Texture Filtering)を行う(ST26)。
この場合、処理ユニット133−0〜133−3は、読み出されたテクスチャデータと、(u,v)アドレスを算出時に得た小数部を使って4近傍補間などのフィルタリング処理を行う。
【0099】
次に、ピクセルレベルの処理(Per−Pixel Operation)を行う(ST27)。
この処理においては、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。ここで行われる処理は、ピクセルレベルでのライティング(Per−Pixel Lighting)などいわゆるPixel Shaderに相当する。また、それ以外にも以下の処理が含まれる。
すなわち、アルファテスト、シザリング、Zバッファテスト、ステンシルテスト、アルファブレンディング、ロジカルオペレーション、ディザリングの各処理である。
【0100】
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる(ST28:MemoryWrite)。
【0101】
各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3は、処理ユニット131−0〜131−3の処理に必要な描画データやテクスチャデータを格納し、処理ユニット131−0〜131−3とのデータの授受、並びにメモリモジュール132−0〜132−3とのデータの授受(書き込み、読み出し)を行う。
【0102】
図13は、各ローカルモジュール13−0〜13−3のローカルキャッシュ133−0〜133−3の構成例を示すブロック図である。
【0103】
ローカルキャッシュ133は、図13に示すように、リードオンリーキャッシュ1331、リード・ライトキャッシュ1332、リオーダバッファ(Reorder Buffer)1333、およびメモリコントローラ1334を含む。
リードオンリーキャッシュ1331はテクスチャ系データの記憶に用いられ、リード・ライトキャッシュ1332は描画系データの記憶に用いられる。
【0104】
また、図14は、テクスチャ系に用いられるリードオンリーキャッシュ1331の構成例を示す図である。
図14に示すように、このリードオンリーキャッシュ1331は、1つのローカルモジュールで4つのテクスチャを処理することから、これに対応して4個のキャッシュCSH0〜CSH3が設けられている。
また、各キャッシュCSH0〜CSH3には、4近傍補間などのフィルタリング処理を行うために、ピクセル毎に4つのデータを必要とすることから、それぞれ4つのメモリバンクBK0〜BK3が設けられる。
【0105】
リオーダバッファ1333は、いわゆる待ち合わせバッファであり、ローカルキャッシュの必要なデータがない場合、ローカルキャッシュフィルのリクエストを出したときに、グローバルモジュール12が送られてくるデータの順番が異なる場合があるので、この順番を遵守し、処理ユニット131−0〜131−3に要求順に戻すようにデータの順番を調整する。
【0106】
また、図15は、メモリコントローラ1334のテクスチャ系の構成例を示すブロック図である。
このメモリコントローラ1334は、図15に示すように、4つのキャッシュCSH0〜CSH3に対応するキャッシュコントローラ13340〜13343と、各キャッシュコントローラ13340〜13343から出力されるローカルキャッシュフィルリクエストを調停しグローバルインターフェース134{−0〜3}に出力するアービタ13344と、グローバルインターフェース134{−0〜3}を介して入力したグローバルキャッシュフィルリクエストを受けて、データ転送の制御を行うメモリインターフェース13345を含む。
【0107】
また、キャッシュコントローラ13340〜13343は、4つのピクセルPX0〜PX3それぞれに対応するデータに対して4近傍補間を行う際に必要な各データの2次元アドレスCOuv00〜COuv03、COuv10〜COuv13、COuv20〜COuv23、COuv30〜COuv33を受けてアドレスの競合をチェックし分配するコンフリクトチェッカCC10と、コンフリクトチェッカCC10で分配されたアドレスをチェックしリードオンリーキャッシュ1331にアドレスで示されたデータが存在するか否かを判断するタグ回路TAG10と、キューレジスタQR10を有している。
タグ回路TAG10内は後述するバンクのインターリーブに関するアドレッシングに対応する4つのタグメモリBX10〜BX13を有し、リードオンリーキャッシュ1331に記憶されている。
ブロックデータのアドレスタグを保持するコンフリクトチェッカCC10で分配されたアドレスと上記アドレスタグを比較し、一致したか否かのフラグと前記アドレスをキューレジスタQR10にセットするとともに、一致しなかった場合には前記アドレスをアービタ13344に送出する。
アービタ13344は、キャッシュコントローラ13340〜13343から送出されるアドレスを受けて調停作業を行い、グローバルインターフェース(GAIF)134を介して同時に送出できるリクエストの数に応じてアドレスを選択し、ローカルキャッシュフィルリクエストとしてグローバルインターフェース(GAIF)134に出力する。
グローバルインターフェース(GAIF)134を介して送出されたローカルキャッシュフィルリクエストに対応してグローバルキャッシュ12からデータが送られてくると、リオーダバッファ1333にセットされる。
キャッシュコントローラ13340〜13343は、キューレジスタQRL0の先頭にあるフラグをチェックし、一致したことを示すフラグがセットされていた場合には、キューレジスタQRL0の先頭にあるアドレスに基づいて、リードオンリーキャッシュ1331のデータを読み出し、処理ユニット131に与える。一方、一致したことを示すフラグがセットされていなかった場合には、対応するデータがリオーダバッファ1333にセットされた時点でリオーダバッファ1333から読み出し、キューレジスタQRL0のアドレスに基づいて当該ブロックデータでリードオンリーキャッシュ1331を更新するとともに、処理ユニット131に出力する。
【0108】
次に、本実施形態に係るバンクのインターリーブに関するアドレッシングについて、図16および図17に関連付けて説明する(文献:Stanford University 「Prefetching in a TextureCashe Architecture」 参照)。
【0109】
この場合、図16(A)に示すように、2次元画像データを、たとえば4×4のマトリクスとして図中縦方向をVsuper 、横方向をUsuper とする。
そして、一つのブロックを図16(B)に示すように、8×8のキャッシュサイズのスーパーブロックのマトリクスとして、図中縦方向Vblock を、横方向をUblock とする。
このスーパーブロックに、図16(C)に示すように、4近傍のブロックに0〜3の番号を付与する。
また、スーパーブロックの一つを図16(D)に示すように、4×4のブロックのマトリクスとして、図中縦方向をVoffset、横方向をUoffsetとする。
このブロックに、図16(E)に示すように、4近傍のブロックに0〜3の番号を付与する。
そして、図17(A)に示すような、V方向に関するVsuper 、Vblock 、およびVoffsetと、U方向に関する係るUsuper 、Ublock 、およびUoffsetとを合体して、図17(B)に示すように、各0フィールドの後続して、Vsuper フィールド、Usuper フィールド、Vblock フィールド、Ublock フィールド、Voffsetフィールド、Uoffsetフィールドとなるようにソートする。
さらに、図17(C)に示すような、0フィールド〜Ublock フィールドに対応する領域をベースアドレスフィールドとを合体して、図17(D)に示すように、タグフィールド、ブロックインデックスフィールド、ブロックオフセットフィールドからなるアドレスが生成される。
【0110】
次に、メモリモジュールとしてのDRRAMと、ローカルキャッシュと、グローバルキャッシュのメモリ容量について説明する。
メモリ容量の関係は、当然のことながらDRAM>グローバルキャッシュ>ローカルキャッシュであるが、その割合については、アプリケーションに依存する。
キャッシュブロックサイズとしては、キャッシュフィル時に下位階層のメモリから読み出すデータサイズに相当する。
DRAMの特性として、ランダムアクセス時には性能が低下するが、同一行(ROW)に属するデータの連続アクセスは速いという点をあげることができる。
【0111】
グローバルキャッシュは、DRAMからデータを読み出す関係上、前記連続アクセスを行う方が性能上好ましい。
したがって、キャッシュブロックのサイズを大きく設定する。
たとえば、グローバルキャッシュのキャッシュブロックのサイズはDRAMマクロの1行分(8292bit)をブロックサイズにすることができる。
【0112】
一方、ローカルキャッシュの場合には、ブロックサイズを大きくすると、キャッシュに入れても、使われないデータの割合が増えるのと、下位階層がグローバルキャッシュでDRAMでなく連続アクセスに必要性がないことから、ブロックサイズは小さく設定する。
ローカルキャッシュのブロックサイズとしては、メモリインターリーブの矩形領域のサイズに近い値が適当で、本実施形態の場合、4×4ピクセル分、すなわち512ビットとする。
【0113】
次に、テクスチャ圧縮について説明する。
1ピクセルの処理を行うのに複数のテクスチャデータを必要とするので、テクスチャ読み出しバンド幅がボトルネックになる場合が多いが、これを軽減するためテクスチャを圧縮する方法がよく採用される。
圧縮方法には、いろいろあるが、4×4ピクセルのように小さな矩形領域単位で圧縮/伸長できる方法の場合には、グローバルキャッシュには圧縮されたままのデータを置き、ローカルキャッシュには、伸長後のデータを置くことが好ましい。
【0114】
また、グローバルモジュール12と各ローカルモジュール13−0〜13−3との配置関係としては、図7に示すように、グローバルモジュール12を中心として各ローカルモジュール13−0〜13−3をその周辺近傍に配置することが望ましい。
具体的には、グローバルモジュール12のチャネルブロックCBLK0の近傍にチャネルブロックCBLK0とデータの授受を行うローカルモジュール13−0を配置し、グローバルモジュール12のチャネルブロックCBLK1の近傍にチャネルブロックCBLK1とデータの授受を行うローカルモジュール13−1を配置し、グローバルモジュール12のチャネルブロックCBLK2の近傍にチャネルブロックCBLK2とデータの授受を行うローカルモジュール13−2を配置し、グローバルモジュール12のチャネルブロックCBLK3の近傍にチャネルブロックCBLK3とデータの授受を行うローカルモジュール13−3を配置する。
これにより、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【0115】
次に、上記構成による動作を説明する。
ここでは、テクスチャ系の処理について説明する。
【0116】
まず、SDC11において、3次元座標、法線ベクトル、テクスチャ座標の各頂点データが入力されると、頂点データに対する演算が行われる。
次に、ラスタライゼーション(Rasterization)に必要な各種データ(Z、テクスチャ座標、カラーなど)の傾き等のDDAパラメータが算出される。
そして、SDC11においては、算出したDDAパラメータをグローバルモジュール12を介して全ローカルモジュール13−0〜13−3にブロードキャストされる。
この処理において、ブロードキャストされたパラメータは、後述するキャッシュフィルとは別のチャネルを用いて、グローバルモジュール12を介して各ローカルモジュール13−0〜13−3に渡される。ただし、グローバルキャッシュの内容には影響を与えない。
【0117】
各ローカルモジュール13−0〜13−3では、処理ユニット131−0〜131−3において、以下の処理が行われる。
すなわち、処理ユニット131(−0〜3)においては、ブロードキャストされたパラメータを受け取ると、その三角形が自分が担当する領域、たとえば4×4ピルセルの矩形領域単位でインターリーブされた領域に属しているか否かが判断される。その結果、属している場合には、各種データ(Z、テクスチャ座標、カラーなど)がラスタライズされる。
次に、LOD(Level of Detail)計算によるミップマップ(MipMap)レベルの算出や、テクスチャアクセスのための(u,v)アドレス計算が行われる。
【0118】
そして、次に、テクスチャの読み出しが行われる。
この場合、各ローカルモジュール13−0〜13−3の処理ユニット131−0〜131−3では、テクスチャリードの際に、まず、ローカルキャッシュ133−0〜133−3のエントリーがチェックされる。
その結果、エントリーがあった場合には、必要なテクスチャデータが読み出される。
必要とするテクスチャデータがローカルキャッシュ133−0〜133−3内に無い場合には、各処理ユニット131−0〜131−3では、グローバルインターフェース134−0〜134−3を通して、グローバルモジュール12に対してローカルキャッシュフィルのリクエストが送出される。
【0119】
グローバルモジュール12においては、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにあると各チャネルブロックCBLK0〜CBLK3のタグ回路1204−0〜1204−3のうちのいずれかで判断されると、対応するグローバルキャッシュ121−0〜121−3のいずれかから読み出されてチャネル1201−0〜1201−3を通してリクエストを送出したローカルモジュールに送り返される。
【0120】
一方、要求されたブロックデータがグローバルキャッシュ121−0〜121−3のいずれかにもないと各チャネルブロックCBLK0〜CBLK3のタグ回路1204−0〜1204−3で判断されると、所望のチャネル1202−0〜1202−3のいずれかから当該ブロックを保持するローカルモジュールに対してグローバルキャッシュフィルのリクエストが送られる。
グローバルキャッシュフィルのリクエストを受けたローカルモジュールにおいては、メモリから該当するブロックデータが読み出され、グローバルインターフェースを通してグローバルモジュール12に送出される。
その後、グローバルモジュール12では、ブロックデータが所望のグローバルキャッシュにフィルされるとともに、リクエストを送ってきたローカルモジュールに対して所望のチャネルからデータが送出される。
【0121】
グローバルモジュール12から要求したブロックデータが送られてくると、該当するローカルモジュールでは、ローカルキャッシュが更新され、処理ユニットによりブロックデータが読み出される。
【0122】
次に、ローカルモジュール13−0〜13−3では、読み出されたテクスチャデータと、(u,v)アドレスは算出時に得た小数部を使って4近傍補間などのフィルタリング処理が行われる。
次に、フィルタリング後のテクスチャデータと、ラスタライズ後の各種データを用いて、ピクセル単位の演算が行われる。
そして、ピクセルレベルの処理における各種テストをパスしたピクセルデータを、メモリモジュール132−0〜132−3、たとえば内蔵DRAMメモリ上のフレームバッファおよびZバッファに書き込まれる。
【0123】
以上説明したように、本実施形態によれば、SDC11とグローバルモジュール12とがデータの授受を行い、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続されて、複数のローカルモジュール13−0〜13−3で処理データを共有し並列に処理し、グローバルモジュール12はグローバルキャッシュを有し、各ローカルモジュール13−0〜13−3はローカルキャッシュをそれぞれ有し、キャッシュの階層として、4つのローカルモジュール13−0〜13−3が共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層を有することから、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【0124】
また、本実施形態によれば、グローバルモジュール12と各ローカルモジュール13−0〜13−3との配置関係としては、図7に示すように、グローバルモジュール12を中心として各ローカルモジュール13−0〜13−3をその周辺近傍に配置することから、各対応するチャネルブロックとローカルモジュールまでの距離を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることができる利点がある。
【0125】
なお、本実施形態においては、テクスチャデータが内蔵DRAM上にあるケースを例に述べているが、他のケースとして、内蔵DRAMには、カラーデータおよびzデータのみが置かれ、テクスチャデータは外部メモリに置かれることも可能である。この場合には、グローバルキャッシュでミスが発生すると、外部DRAMに対してキャッシュフィル要求が出されることになる。
【0126】
また、上述の説明では、図7の構成、すなわち、一つのグローバルモジュール12に対して複数個(本実施形態では4個)のローカルモジュール13−0〜13−3が並列に接続した画像処理装置10を例に並列処理を行う場合に特化した形態となっているが、図7の構成を一つのクラスタCLSTとして、たとえば図18に示すように、4つのクラスタCLST0〜CLST4をマトリクス状に配置して、各クラスタCLST0〜CLST4のグローバルモジュール12−0〜12−3間でデータの授受を行うように構成することも可能である。
図18の例では、クラスタCLST0のグローバルモジュール12−0とクラスタCLST1のグローバルモジュール12−1とを接続し、クラスタCLST1のグローバルモジュール12−1とクラスタCLST3のグローバルモジュール12−3とを接続し、クラスタCLST3のグローバルモジュール12−3とクラスタCLST2のグローバルモジュール12−2とを接続し、クラスタCLST2のグローバルモジュール12−2とクラスタCLST0のグローバルモジュール12−0とを接続している。
すなわち、複数のクラスタCLST0〜CLST4のグローバルモジュール12−0〜12−3をリング状に接続している。
なお、図18の構成の場合には、一つのSDCからパラメータがCLST0〜CLST4のグローバルモジュール12−0〜12−3にブロドキャストされるように構成することが可能である。
【0127】
このような構成を採用することにより、より精度の高い画像処理を実現でき、また、各クラスタ間の配線も単純に双方向として一系統で接続するので、各クラスタ間の負荷を均一に保つことができ、配線領域を整然と並べることができ、平均配線長を短くできる。したがって、配線遅延や配線コストを低減でき、処理速度の向上を図ることが可能となる。
【0128】
【発明の効果】
以上説明したように、本発明によれば、複数の処理装置が処理データを共有して並列処理する際に、重複アクセスを低減でき、配線本数の多いクロスバーが不要となる。その結果、設計が容易で、配線コスト、配線遅延を低減できる画像処理装置を実現できる利点がある。
【図面の簡単な説明】
【図1】プリミティブレベルでの並列化処理について概念的に示す図である。
【図2】ピクセルレベルでの並列処理の手法に基づくプリミティブ・レベルでの並列化処理について概念的に示す図である。
【図3】ピクセルレベルの並列処理を採用し、複数のプリミティブを同時処理し、処理ユニットとメモリ・モジュールを直結できる処理分配とする画像処理装置の構成を概念的に示す図である。
【図4】図3の画像処理装置におけるピクセル生成について説明するための図である。
【図5】スクリーン上の矩形領域をテクスチャ空間に投影する様子を概念的に示す図である。
【図6】複数の処理ユニットで並列処理を行うシステムにおいて、テクスチャリード系のメモリアクセスに必要となるクロスバーを最も直接的な形で実現した例を示す図である。
【図7】本発明の係る画像処理装置の一実施形態を示すブロック構成図である。
【図8】本実施形態に係るストリームデータコントローラ(SDC)の主な処理を説明するためのフローチャートである。
【図9】本実施形態に係るグローバルモジュールの機能を説明するためのフローチャートである。
【図10】図7のグローバルモジュールの具体的な構成例を示す回路図である。
【図11】本実施形態に係るローカルモジュールにおける処理ユニットの主な処理を説明するための図である。
【図12】本実施形態に係るテクスチャリード時のローカルモジュールの動作を説明するためのフローチャートである。
【図13】本実施形態に係るローカルモジュールにおけるローカルキャッシュの構成例を示すブロック図である。
【図14】本実施形態に係るローカルキャッシュのリードオンリーキャッシュの構成例を示すブロック図である。
【図15】本実施形態に係るローカルキャッシュのメモリコントローラの構成例を示すブロック図である。
【図16】本実施形態に係るバンクのインターリーブに関するアドレッシングについて説明するための図である。
【図17】本実施形態に係るバンクのインターリーブに関するアドレッシングについて説明するための図である。
【図18】本発明の係る画像処理装置の他の実施形態を示すブロック構成図である。
【符号の説明】
10,10A…画像処理装置、11…ストリームデータコントローラ(SDC)、12−0〜12−3…グローバルモジュール、121−0〜121−3…グローバルキャッシュ、13−0〜13−3…ローカルモジュール、131−0〜131−3…処理ユニット、132−0〜132−3…メモリモジュール、133−0〜133−3…ローカルキャッシュ、134−0〜134−3…グローバルインターフェース(GAIF)、CLST0〜CLST…クラスタ、1201−0〜1201−3…ローカルキャッシュフィル用チャネル、1202−0〜1202−3…グローバルキャッシュフィル用チャネル、1203−0〜1203−3…セレクタ、1204−0〜1204−3…タグ回路、1205−0〜1205−3…アービタ。
Claims (16)
- 複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、複数のローカルモジュールとを含み、
上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールは、
画像に関するデータが記憶されるメモリモジュールと、
少なくとも上記処理データを記憶するローカルキャッシュと、
演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する
画像処理装置。 - 上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する
請求項1記載の画像処理装置。 - 上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項1記載の画像処理装置。 - 上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項1記載の画像処理装置。 - 上記演算用パラメータを生成するコントローラを有し、
上記グローバルモジュールは、上記コントローラで生成された演算用パラメータを上記複数のローカルモジュールに供給する
請求項1記載の画像処理装置。 - 上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエストおよびデータの授受を行う
請求項1記載の画像処理装置。 - 上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエスト、グローバルキャッシュフィルリクエストおよびデータの授受を行う
請求項4記載の画像処理装置。 - 複数のモジュールが処理データを共有して並列処理を行う画像処理装置であって、
グローバルモジュールと、複数のローカルモジュールとを含む複数のクラスタを有し、
上記各クラスタの上記グローバルモジュールは、
上記複数のローカルモジュールが並列に接続され、上記ローカルモジュールで必要な処理データが記憶されるグローバルキャッシュを有し、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールは、
画像に関するデータが記憶されるメモリモジュールと、
少なくとも上記処理データを記憶するローカルキャッシュと、
演算用パラメータおよび上記ローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行う処理ユニットとを有し、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新し、
各クラスタのグローバルモジュールが互いにデータの授受を行う
画像処理装置。 - 上記複数のクラスタは、マトリクス状に配置され、各クラスタのグローバルモジュールはリング状に接続されている
請求項8記載の画像処理装置。 - 上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出する
請求項8記載の画像処理装置。 - 上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項8記載の画像処理装置。 - 上記ローカルモジュールは、グローバルキャッシュフィルリクエストを受けると、要求されたブロックデータを上記グローバルモジュールに出力し、
上記グローバルモジュールは、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、グローバルキャッシュのエントリーをチェックし、エントリーがあった場合には、要求されたブロックデータを読み出し、読み出したデータをリクエストを送出したローカルモジュールに送出し、エントリーがなかった場合には、要求されたブロックデータを保持するターゲットのローカルモジュールに対してグローバルキャッシュフィルリクエストを送り、その後ターゲットのローカルモジュールから送られてきたブロックデータでグローバルキャッシュを更新するとともに、当該ブロックデータを読み出し、読み出したデータをローカルキャッシュフィルリクエストを送ってきたローカルモジュールに対して送出する
請求項8記載の画像処理装置。 - 上記演算用パラメータを生成するコントローラを有し、
上記グローバルモジュールは、上記コントローラで生成された演算用パラメータを上記複数のローカルモジュールに供給する
請求項1記載の画像処理装置。 - 上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエストおよびデータの授受を行う
請求項8記載の画像処理装置。 - 上記グローバルモジュールは、各ローカルモジュール対応に設けられた複数のチャネルブロックを有し、
上記複数のチャネルブロックは、対応するローカルモジュールとローカルキャッシュフィルリクエスト、グローバルキャッシュフィルリクエストおよびデータの授受を行う
請求項12記載の画像処理装置。 - 複数のモジュールが処理データを共有して並列処理を行う画像処理方法であって、
一つのグローバルモジュールに対して複数のローカルモジュールを並列に接続し、
キャッシュの階層として、複数のローカルモジュールが共有するグローバルキャッシュと、各ローカルモジュールがローカルに持つローカルキャッシュの2階層とし、
グローバルモジュールにおいて、
グローバルキャッシュにローカルモジュールで必要な処理データを記憶して、ローカルモジュールからローカルキャッシュフィルリクエストを受けると、上記グローバルキャッシュにある要求に応じたデータを当該リクエストを出したローカルモジュールに出力し、
上記複数のローカルモジュールにおいて、
上記ローカルキャッシュに少なくとも上記処理データを記憶して、演算用パラメータおよびローカルキャッシュに記憶されている処理データに基づいてあらかじめ対応するメモリインターリーブで決められた担当する処理を行い、
処理に必要な処理データが上記ローカルキャッシュに無い場合には、必要なデータを要求するローカルキャッシュフィルリクエストを出力し、当該リクエストに応じて送られてきたデータで上記ローカルキャッシュを更新する
画像処理方法。
Priority Applications (7)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001379350A JP3840966B2 (ja) | 2001-12-12 | 2001-12-12 | 画像処理装置およびその方法 |
KR1020037010543A KR100857657B1 (ko) | 2001-12-12 | 2002-12-11 | 화상 처리 장치 및 그 방법 |
DE60222175T DE60222175T2 (de) | 2001-12-12 | 2002-12-11 | Bildverarbeitungsvorrichtung und dazugehöriges verfahren |
CNB028048873A CN1297939C (zh) | 2001-12-12 | 2002-12-11 | 图像处理装置及图像处理方法 |
PCT/JP2002/012965 WO2003050759A1 (fr) | 2001-12-12 | 2002-12-11 | Appareil de traitement d'images et procede associe |
US10/467,542 US7333115B2 (en) | 2001-12-12 | 2002-12-11 | Image processing apparatus and method thereof |
EP02788789A EP1460581B1 (en) | 2001-12-12 | 2002-12-11 | Image processing apparatus and method thereof |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001379350A JP3840966B2 (ja) | 2001-12-12 | 2001-12-12 | 画像処理装置およびその方法 |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2003178294A JP2003178294A (ja) | 2003-06-27 |
JP2003178294A5 JP2003178294A5 (ja) | 2005-04-07 |
JP3840966B2 true JP3840966B2 (ja) | 2006-11-01 |
Family
ID=19186758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001379350A Expired - Fee Related JP3840966B2 (ja) | 2001-12-12 | 2001-12-12 | 画像処理装置およびその方法 |
Country Status (7)
Country | Link |
---|---|
US (1) | US7333115B2 (ja) |
EP (1) | EP1460581B1 (ja) |
JP (1) | JP3840966B2 (ja) |
KR (1) | KR100857657B1 (ja) |
CN (1) | CN1297939C (ja) |
DE (1) | DE60222175T2 (ja) |
WO (1) | WO2003050759A1 (ja) |
Families Citing this family (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6937244B2 (en) * | 2003-09-23 | 2005-08-30 | Zhou (Mike) Hong | Apparatus and method for reducing the memory traffic of a graphics rendering system |
JP4030519B2 (ja) * | 2004-04-15 | 2008-01-09 | 株式会社東芝 | 画像処理装置および画像処理システム |
US8427490B1 (en) | 2004-05-14 | 2013-04-23 | Nvidia Corporation | Validating a graphics pipeline using pre-determined schedules |
US7750914B2 (en) | 2004-08-26 | 2010-07-06 | Intel Corporation | Subdividing geometry images in graphics hardware |
KR100868396B1 (ko) * | 2004-08-26 | 2008-11-11 | 인텔 코오퍼레이션 | 기하 이미지 분할을 위한 그래픽 처리 시스템 및 방법 |
US8624906B2 (en) | 2004-09-29 | 2014-01-07 | Nvidia Corporation | Method and system for non stalling pipeline instruction fetching from memory |
US9111368B1 (en) | 2004-11-15 | 2015-08-18 | Nvidia Corporation | Pipelined L2 cache for memory transfers for a video processor |
KR101002485B1 (ko) * | 2004-11-15 | 2010-12-17 | 엔비디아 코포레이션 | 비디오 처리 |
JP2006202211A (ja) * | 2005-01-24 | 2006-08-03 | Fujitsu Ltd | 画像描画装置および画像描画方法 |
US9092170B1 (en) | 2005-10-18 | 2015-07-28 | Nvidia Corporation | Method and system for implementing fragment operation processing across a graphics bus interconnect |
US8243069B1 (en) | 2006-11-03 | 2012-08-14 | Nvidia Corporation | Late Z testing for multiple render targets |
US8265169B2 (en) | 2006-12-29 | 2012-09-11 | Intel Corporation | Video block memory read request translation and tagging |
CN100533485C (zh) * | 2007-01-17 | 2009-08-26 | 威盛电子股份有限公司 | 影像描绘方法 |
US8683126B2 (en) | 2007-07-30 | 2014-03-25 | Nvidia Corporation | Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory |
US8698819B1 (en) | 2007-08-15 | 2014-04-15 | Nvidia Corporation | Software assisted shader merging |
US9024957B1 (en) | 2007-08-15 | 2015-05-05 | Nvidia Corporation | Address independent shader program loading |
US8411096B1 (en) | 2007-08-15 | 2013-04-02 | Nvidia Corporation | Shader program instruction fetch |
US8659601B1 (en) | 2007-08-15 | 2014-02-25 | Nvidia Corporation | Program sequencer for generating indeterminant length shader programs for a graphics processor |
US9064333B2 (en) | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8923385B2 (en) | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
US8681861B2 (en) | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
WO2009145919A1 (en) * | 2008-05-30 | 2009-12-03 | Advanced Micro Devices, Inc. | Shader complex with distributed level one cache system and centralized level two cache |
US8489851B2 (en) | 2008-12-11 | 2013-07-16 | Nvidia Corporation | Processing of read requests in a memory controller using pre-fetch mechanism |
US8314949B2 (en) * | 2008-12-23 | 2012-11-20 | Infoprint Solutions Company Llc | Distributed global object cache |
US7924860B1 (en) * | 2008-12-23 | 2011-04-12 | Juniper Networks, Inc. | Maintaining data unit order in a network switching device |
JP5404433B2 (ja) * | 2010-01-08 | 2014-01-29 | 株式会社東芝 | マルチコアシステム |
US20140176550A1 (en) * | 2010-08-27 | 2014-06-26 | Industry-Academia Cooperation Group Of Sejong University | Roy tracing appratus and method |
AU2010241218B2 (en) * | 2010-11-03 | 2013-10-31 | Canon Kabushiki Kaisha | Method, apparatus and system for associating an intermediate fill with a plurality of objects |
US9552206B2 (en) * | 2010-11-18 | 2017-01-24 | Texas Instruments Incorporated | Integrated circuit with control node circuitry and processing circuitry |
CN102542525B (zh) * | 2010-12-13 | 2014-02-12 | 联想(北京)有限公司 | 一种信息处理设备以及信息处理方法 |
US20130007369A1 (en) * | 2011-06-29 | 2013-01-03 | International Business Machines Corporation | Transparent Cache for Mobile Users |
CN103034465B (zh) * | 2011-09-29 | 2016-04-27 | 腾讯科技(深圳)有限公司 | 图像浏览方法及浏览系统 |
US10055810B2 (en) * | 2016-03-04 | 2018-08-21 | Samsung Electronics Co., Ltd. | Cache architecture for efficiently accessing texture data using buffers |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5882357A (ja) * | 1981-11-11 | 1983-05-17 | Hitachi Ltd | プロセツサ間通信方式 |
JPH0348979A (ja) * | 1989-07-17 | 1991-03-01 | Nec Corp | 並列画像処理装置 |
KR0140674B1 (ko) * | 1993-04-12 | 1998-06-15 | 모리시다 요이치 | 영상신호처리장치 및 처리방법 |
US5832534A (en) | 1994-01-04 | 1998-11-03 | Intel Corporation | Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories |
CN1081368C (zh) * | 1997-06-27 | 2002-03-20 | 清华大学 | 实现邻域图象数据并行存取的方法及邻域图象帧存储体 |
US6662173B1 (en) * | 1998-12-31 | 2003-12-09 | Intel Corporation | Access control of a resource shared between components |
JP2001273191A (ja) * | 2000-03-24 | 2001-10-05 | Seiko Epson Corp | コンピュータシステム |
US6904499B2 (en) * | 2001-03-30 | 2005-06-07 | Intel Corporation | Controlling cache memory in external chipset using processor |
-
2001
- 2001-12-12 JP JP2001379350A patent/JP3840966B2/ja not_active Expired - Fee Related
-
2002
- 2002-12-11 WO PCT/JP2002/012965 patent/WO2003050759A1/ja active IP Right Grant
- 2002-12-11 DE DE60222175T patent/DE60222175T2/de not_active Expired - Lifetime
- 2002-12-11 US US10/467,542 patent/US7333115B2/en not_active Expired - Fee Related
- 2002-12-11 CN CNB028048873A patent/CN1297939C/zh not_active Expired - Fee Related
- 2002-12-11 KR KR1020037010543A patent/KR100857657B1/ko not_active IP Right Cessation
- 2002-12-11 EP EP02788789A patent/EP1460581B1/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
DE60222175T2 (de) | 2008-05-21 |
EP1460581A4 (en) | 2006-07-12 |
US20040111489A1 (en) | 2004-06-10 |
US7333115B2 (en) | 2008-02-19 |
KR20040080920A (ko) | 2004-09-20 |
JP2003178294A (ja) | 2003-06-27 |
DE60222175D1 (de) | 2007-10-11 |
EP1460581A1 (en) | 2004-09-22 |
EP1460581B1 (en) | 2007-08-29 |
WO2003050759A1 (fr) | 2003-06-19 |
CN1297939C (zh) | 2007-01-31 |
KR100857657B1 (ko) | 2008-09-08 |
CN1491401A (zh) | 2004-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3840966B2 (ja) | 画像処理装置およびその方法 | |
US6591347B2 (en) | Dynamic replacement technique in a shared cache | |
US6426753B1 (en) | Cache memory for high latency and out-of-order return of texture data | |
US10515011B2 (en) | Compression status bit cache and backing store | |
US10365930B2 (en) | Instructions for managing a parallel cache hierarchy | |
US8868838B1 (en) | Multi-class data cache policies | |
US8244984B1 (en) | System and method for cleaning dirty data in an intermediate cache using a data class dependent eviction policy | |
US8266383B1 (en) | Cache miss processing using a defer/replay mechanism | |
US6650333B1 (en) | Multi-pool texture memory management | |
EP1498824A2 (en) | System and method for parallel execution of data generation tasks | |
US6795078B2 (en) | Parallel read with source-clear operation | |
US7948498B1 (en) | Efficient texture state cache | |
US8195858B1 (en) | Managing conflicts on shared L2 bus | |
US8341358B1 (en) | System and method for cleaning dirty data in a cache via frame buffer logic | |
US20210255963A1 (en) | Addressing cache slices in a last level cache | |
CN112749120A (zh) | 将数据有效地传输至处理器的技术 | |
US8656093B1 (en) | Supporting late DRAM bank hits | |
US8321618B1 (en) | Managing conflicts on shared L2 bus | |
US8862823B1 (en) | Compression status caching | |
US8570916B1 (en) | Just in time distributed transaction crediting | |
US8624916B2 (en) | Processing global atomic operations using the bending unit datapath | |
US8489839B1 (en) | Increasing memory capacity of a frame buffer via a memory splitter chip | |
JP4264530B2 (ja) | 画像処理装置およびその方法 | |
US8874844B1 (en) | Padding buffer requests to avoid reads of invalid data | |
JP4186561B2 (ja) | 画像処理装置およびその方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040519 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040519 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060718 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060731 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100818 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110818 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110818 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120818 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130818 Year of fee payment: 7 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |