説明

グラフィックスプロセッサ

【課題】メモリボトルネックによる性能低下を抑制する
【解決手段】グラフィックスプロセッサは、複数の画素データそれぞれの処理を並列して行う複数のプロセッサコアと、複数のプロセッサコアにより共有されるレジスタと、レジスタを制御するレジスタ制御部と、画素データを保持する画素保持メモリとを備える。レジスタは、画素毎に、画素データと前記画素データに対応する画素座標データとを保持する。レジスタ制御部は、画素座標データを検索キーにレジスタを検索する検索部を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、グラフィックスプロセッサに関する。
【背景技術】
【0002】
車両に組み込まれた小型カメラ(以下、車載カメラともいう)から入力されるビデオ画像を加工処理して、赤外線ナイトビジョン、車線逸脱警告、死角視認補助、パーキングアシスト等の安全運転補助機構に活用するリアルタイム画像処理技術がある。
【0003】
上記の車載カメラからのビデオ画像を用いるアプリケーションでは、撮影したビデオ画像をそのままディスプレイに表示するだけでなく、ノイズ除去や輪郭抽出に代表される各種フィルタ処理や、その他高度な画像処理の適用が必要とされている。
【0004】
しかしながら、自動車業界では、部品コスト削減という観点から、高価な画像処理専用LSIの使用を歓迎していない。また、自動車に搭載されるシステムによっては、プログラマブルなグラフィックスプロセッサを用いて、通常のコンピューターグラフィックス処理が行われている。例えば、自動車に搭載されるカーナビゲーションシステムでは、プログラマブルなグラフィックスプロセッサを用いて、地図描画やGUI画面描画等の通常のコンピューターグラフィックス処理が行われている。
そこで、このプログラマブルなグラフィックスプロセッサを、通常のコンピューターグラフィックス処理だけでなく、車載カメラから入力されるビデオ画像に対する画像処理にも流用することにより、部品コストを削減したいという要求が高まっている。
【0005】
車載カメラから入力されるビデオ画像に対する画像処理の一例として、フィルタ処理を行う場合を考える。例えば3×3画素のフィルタを用いてフィルタ処理を行う場合、1つの出力画素の色を決定するためには、中心画素とそれに隣接する周辺画素からなる9画素分の入力画素が必要になる。一方、これを入力画素の視点から見ると、1つの入力画素は、対応する出力画素とそれに隣接する周辺の出力画素からなる9画素分の出力画素に必要とされる。
【0006】
このようなフィルタ処理を画像処理専用LSIを用いて実現する場合、その画像処理専用LSIは、例えば図10に示す構成を有する。図10に示したように、この画像処理専用LSIは、アレイ状に配置された9つの画素処理ユニットを用いて並列処理する方式である。この方式の場合、1つの出力画素の色を決定するために、中心画素に隣接する周辺画素のデータが必要なことは、LSI設計段階から既知である。従って、各画素処理ユニット間をハードワイヤードなデータ経路を介して直結することにより、複数の出力画素間で共用される入力画素のデータを画素処理ユニット間で直接にやりとりすることができる。また、アルゴリズムは既知なので、各画素処理ユニットが同期して一斉に処理することができ、データの供給タイミング制御に特別な工夫を必要としない。
【0007】
一方、上記のようなフィルタ処理をプログラマブルなグラフィックスプロセッサを用いて実現する場合は、通常のコンピューターグラフィックスにおけるテクスチャマッピング手法を利用する方式が考えられる。この方式では、外部グラフィックスメモリに集積されたビデオ画像(入力されたビデオ画像)をテクスチャ画像とみなし、外部グラフィックスメモリ或いは内部キャッシュメモリから、必用なテクスチャ画素を共有レジスタに取り込む。共有レジスタは、アレイ状に配置された複数のプロセッサコアに共有される。ここで、各プロセッサコア間をハードワイヤードなデータ経路を介して直結するかどうかは、LSI設計の実装に依存する。しかしながら、データがプロセッサコア間で共有されるかどうかはシェーダープログラム次第なので、LSIが暗黙的にデータをプロセッサコア間で常に横流しするような振舞いをさせることはできない。また、各プロセッサコアでは独立に様々なスレッドが実行されうるので、各プロセッサコアが同期して一斉に処理することも期待できない。
【0008】
なお、キャッシュメモリを備えたグラフィックスプロセッサに関しては、次のような装置がある。例えば、画像メモリ専用のキャッシュメモリを設け、キャッシュメモリにデータが保持されてから一定時間が経過した後、キャッシュメモリに保持されているデータを画像メモリに転送するようにした装置がある(特許文献1等参照)。また、例えば、各描画プロセッサにテクスチャキャッシュがそれぞれ接続され、テクスチャメモリは、いずれかのテクスチャキャッシュから転送要求を受けると、対応するテクスチャを全てのテクスチャキャッシュに転送するようにしたシステムがある(特許文献2等参照)。
【先行技術文献】
【特許文献】
【0009】
【特許文献1】特開平02−238490号公報
【特許文献2】特開平11−232470号公報
【発明の概要】
【発明が解決しようとする課題】
【0010】
現状では、プログラマブルなグラフィックスプロセッサを用いて画像処理を行う場合に、1つの入力画素が複数の出力画素に使い回されることを各プロセッサコアが認識できない。また、各プロセッサコアでは独立に様々なスレッドが実行されうるので、複数のプロセッサコアで並列に実行される処理の間で同期を取ることは期待できない。そのため、仮に、入力画素が他の画素の処理に使い回されると分かったとしても、都合の良いタイミングで画素データをプロセッサコア間で転送することはできない。従って、流用可能な入力画素データが共有レジスタに残っていたとしても、各プロセッサコアは、その事実を認識することなく独自に外部グラフィックスメモリ或いは内部キャッシュメモリから入力画素データを読み直していた。
この結果、外部グラフィックスメモリに対する冗長なデータ入出力が大量に発生し、演算可能な状態にデータが整うまで各プロセッサコアがストールするため、上記のようにして処理が行われる状況は、性能を低下させる要因になっていた。
【0011】
本発明は、上記実情に鑑み、メモリボトルネックによる性能低下を抑制することができるグラフィックスプロセッサを提供することを目的とする。
【課題を解決するための手段】
【0012】
装置の一観点によれば、複数のプロセッサコアと、レジスタと、レジスタ制御部と、画素保持メモリとを備えるグラフィックスプロセッサが提供される。ここで、複数のプロセッサコアは、複数の画素データそれぞれの処理を並列して行う。レジスタは、複数のプロセッサコアにより共有される。また、レジスタは、画素毎に、画素データとその画素データに対応する画素座標データとを保持する。レジスタ制御部は、レジスタを制御する。また、レジスタ制御部は、画素座標データを検索キーにレジスタを検索する検索部を含む。画素保持メモリは、画素データを保持する。
【発明の効果】
【0013】
開示の装置は、メモリボトルネックによる性能低下を抑制することができる、という効果を奏する。
【図面の簡単な説明】
【0014】
【図1】実施例1に係るグラフィックスプロセッサの構成例を示す図である。
【図2】命令検出機構が検出するテクスチャ読み出し命令のデータ構造の一例を説明する図である。
【図3】(a),(b),(c) は、グラフィックスLSIが行うフィルタ処理の一例を説明する図である。
【図4】共有レジスタのデータフィールドに保持されるテクスチャ画素データとテクスチャ画素座標データのデータ構造の一例を示す図である。
【図5】実施例1に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
【図6】実施例2に係るグラフィックスプロセッサの構成例を示す図である。
【図7】実施例2に係るグラフィックスプロセッサにおける、共有レジスタと共有レジスタ制御機構のフラグ処理機構の構成を、より詳細に示す図である。
【図8】実施例2に係るグラフィックスプロセッサにおいて、共有レジスタのデータフィールドに保持される、テクスチャ画素データとテクスチャ画素座標データと使用フラグデータのデータ構造の一例を示す図である。
【図9】実施例2に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
【図10】画像処理専用LSIの構成例を示す図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しながら本発明の実施の形態を説明する。
[実施例1]
本発明の実施例1に係るグラフィックスプロセッサは、プログラマブルなプロセッサであって、車載カメラから入力されるビデオ画像に対してフィルタ処理等の高度な画像処理を行う。
【0016】
図1は、本実施例に係るグラフィックスプロセッサの構成例を示す図である。
図1に示したように、本実施例に係るグラフィックスプロセッサは、グラフィックスLSI100と、グラフィックスメモリ200とを含む。 グラフィックスメモリ200は、図示しない車載カメラから入力されるビデオ画像のデータを記憶する。なお、本実施例に係るグラフィックスプロセッサでは、このビデオ画像のデータをテクスチャ画像のデータ(テクスチャデータ)として取り扱う。
【0017】
グラフィックスLSI100は、命令発行ユニット110と、複数(n個)のプロセッサコア120(120−1、120−2、・・・、120−n)と、テクスチャユニット130と、共有レジスタ140と、共有レジスタ制御機構150とを含む。なお、共有レジスタ140はレジスタの一例である。また、共有レジスタ制御機構150は、レジスタ制御部の一例である。
【0018】
命令発行ユニット110は、ストリームとして入力されるバイナリ命令を、通常のマルチプロセッサ制御方法により、複数のプロセッサコア120に分配して出力する。なお、ストリームとして入力されるバイナリ命令は、予め、コンパイラがシェーダープログラム等の描画プログラムをコンパイルすることによって得られたものである。
【0019】
各プロセッサコア120は、命令検出機構121と、命令変換機構122と、演算ユニット123とを含む。なお、命令検出機構121は検出部の一例である。また、命令変換機構122は命令変換部の一例である。
【0020】
命令検出機構121は、命令発行ユニット110から入力されるバイナリ命令の中からテクスチャ読み出し命令を検出する。なお、テクスチャ読み出し命令のデータ構造については、図2を用いて後述する。また、命令検出機構121は、テクスチャ読み出し命令を検出すると、そのテクスチャ読み出し命令に含まれるテクスチャ画素座標データを共有レジスタ制御機構150へ出力する。なお、共有レジスタ制御機構150へ出力するテクスチャ画素座標データには、出力元(送信元)のプロセッサコア120を後に特定可能なように、例えばプロセッサコアIDのデータが付与される。
【0021】
命令変換機構122は、共有レジスタ制御機構150から入力される、テクスチャ存在信号又はテクスチャ不在信号に応じて、テクスチャユニット130へのテクスチャ読み出し命令の破棄(キャンセル)又は発行を行う。具体的には、入力される信号がテクスチャ画素の存在を表すテクスチャ存在信号である場合には、命令検出機構121が検出したテクスチャ読み出し命令を破棄し、テクスチャユニット130へのテクスチャ読み出し命令を発行しない。一方、入力される信号がテクスチャ画素の不在を表すテクスチャ不在信号である場合には、命令検出機構121が検出したテクスチャ読み出し命令を、テクスチャユニット130へのテクスチャ読み出し命令として、発行する。
【0022】
演算ユニット123は、各種の演算を行う。例えば、共有レジスタ制御機構150から入力されるテクスチャ画素データを用いて、フィルタ処理に必要な演算を行う。なお、フィルタ処理については、図3を用いて後述する。
【0023】
テクスチャユニット130は、テクスチャキャッシュメモリ(以下、単にテクスチャキャッシュという)131を含む。なお、テクスチャユニット130はメモリ制御部の一例である。また、テクスチャキャッシュ131及び又は上記のグラフィックスメモリ200は、画素保持メモリの一例である。テクスチャキャッシュ131は、グラフィックスメモリ200に記憶されるデータの一部を保持する。テクスチャユニット130は、プロセッサコア120の命令変換機構122からテクスチャ読み出し命令が入力されると、対応するテクスチャ画素データをテクスチャキャッシュ131から通常の手順で読み出す。なお、対応するテクスチャ画素データは、テクスチャ読み出し命令に含まれるテクスチャ画素座標データに対応するテクスチャ画素データである。但し、そのテクスチャ画素データがテクスチャキャッシュ131に保持されていない場合には、それをグラフィックスメモリ200から通常の手順で読み出す。そして、読み出したテクスチャ画素データを共有レジスタ制御機構150へ出力する。
【0024】
共有レジスタ140は、テクスチャ画素データとそのテクスチャ画素データに対応するテクスチャ画素座標データとを保持するためのデータフィールド141をm個有する。各データフィールド141は、テクスチャ画素データを保持するためのビットフィールド142と、そのテクスチャ画素データに対応するテクスチャ画素座標データを保持するためのビットフィールド143とを有する。なお、データフィールド141に保持されるテクスチャ画素データとテクスチャ画素座標データのデータ構造については、図4を用いて後述する。これにより、共有レジスタ140は、テクスチャ画素毎に、テクスチャ画素データとそのテクスチャ画素データに対応するテクスチャ画素座標データとを保持することが可能である。また、共有レジスタ140は、図示はしないが、テクスチャ画素データとテクスチャ画素座標データとを保持するデータフィールド141の他、例えば頂点座標値等のデータを保持するデータフィールドも有する。また、共有レジスタ140は、図示しないリード/ライトインターフェースを備え、データフィールド141等に対するデータの読み出し及び書き込みを、そのリード/ライトインターフェースを介して行う。
【0025】
なお、共有レジスタ140、テクスチャキャッシュ131、及びグラフィックスメモリ200の中で、共有レジスタ140は、各プロセッサコア120に最も近いデータソースである。
【0026】
共有レジスタ制御機構150は、テクスチャ座標検索機構151と、テクスチャ画素テクスチャ座標ペアリング機構(以下、単にペアリング機構という)152とを含む。なお、テクスチャ座標検索機構151は検索部の一例である。また、ペアリング機構152はペアリング部(対応付け部)の一例である。
【0027】
テクスチャ座標検索機構151は、プロセッサコア120の命令検出機構121からテクスチャ画素座標データが入力されると、それを一時的に保持すると共に、そのテクスチャ画素座標データを検索キーとして共有レジスタ140を検索する。また、その検索結果に応じて、テクスチャ存在信号又はテクスチャ不在信号を、そのテクスチャ画素座標データを出力したプロセッサコア120の命令変換機構122へ出力する。ここで、テクスチャ存在信号は、テクスチャ座標検索機構151がテクスチャ画素座標データを検索できた場合に出力される信号である。また、テクスチャ不在信号は、テクスチャ画素座標データが検索できなかった場合に出力される信号である。
【0028】
なお、テクスチャ座標検索機構151がテクスチャ画素座標データを検索できた場合には、共有レジスタ制御機構150が、そのテクスチャ画素座標データに対応するテクスチャ画素データを共有レジスタ140から読み出す。そして、それを、テクスチャ画素座標データを出力したプロセッサコア120の演算ユニット123へ出力する。
【0029】
ペアリング機構152は、テクスチャ座標検索機構151がテクスチャ画素座標データを検索できなかった場合に、テクスチャ画素座標データとテクスチャ画素データとをペアリング(対応付け)し、それを共有レジスタ140へ書き込む。ここで、テクスチャ画素座標データは、テクスチャ座標検索機構151が一時的に保持していたものであって、そのテクスチャ座標検索機構151から入力されるものである。また、テクスチャ画素データは、テクスチャユニット130から入力されるものである。
【0030】
なお、ペアリング機構152は、ペアリングしたテクスチャ画素データとテクスチャ画素座標データを、共有レジスタ140の空いているデータフィールド141に書き込む。但し、共有レジスタ140に空いているデータフィールド141が無い場合には、それを、最も書き込み日時が古いテクスチャ画素データとテクスチャ画素座標データを保持しているデータフィールド141に上書きする。なお、書き込み先となるレジスタアドレスの決定は、通常の方法により行う。
【0031】
また、このようにしてテクスチャ画素データとテクスチャ画素座標データが共有レジスタ140に書き込まれると、共有レジスタ制御機構150は、そのテクスチャ画素データを読み出す。そして、そのテクスチャ画素データに対応するテクスチャ画素座標データを出力したプロセッサコア120の演算ユニット123へ、読み出したテクスチャ画素データを出力する。
【0032】
図2は、命令検出機構121が検出するテクスチャ読み出し命令のデータ構造の一例を説明する図である。
図2に示したように、テクスチャ読み出し命令301は、テクセルデータ(テクスチャ画素データ)を読み出す命令であることを表すデータ302と、そのテクセルデータのS座標を表すデータ303と、そのテクセルデータのT座標を表すデータ304とを含む。なお、S座標及びT座標は、一般的な二次元平面表現におけるX座標及びY座標に相当する、テクスチャ画像空間の座標を示すものである。本例では、S座標及びT座標の各々が32ビット浮動少数点フォーマットのデータにより表現される。命令検出機構121は、このようなテクスチャ読み出し命令301を検出すると、このテクスチャ読み出し命令301に含まれるS座標を表すデータ303とT座標を表すデータ304とを、テクスチャ画素座標データとして、共有レジスタ制御機構150へ出力する。
【0033】
図3(a),(b),(c) は、グラフィックスLSI100が行うフィルタ処理の一例を説明する図である。ここでは、3×3画素のフィルタを用いてフィルタ処理を行う場合を例に説明する。
【0034】
図3(a) に示したように、入力画像INに対して3×3画素のフィルタFを用いてフィルタ処理を行う場合、そのフィルタ処理により得られる出力画像OUTの各出力画素のデータは次のようにして求めることができる。すなわち、1つの出力画素のデータは、9つの入力画素のデータとフィルタFの9つの係数のデータとを用いて、計算により求めることができる。ここで、9つの入力画素は、出力画素に対応する入力画素と、その入力画素に隣接する8つの周辺画素である。
【0035】
例えば、図3(a) に示した出力画像OUTにおける出力画素OUT22のデータは、入力画像INにおける9つの入力画素のデータと、フィルタFの9つの係数のデータとを用いて、図3(b) に示した計算式により求めることができる。ここで、入力画像INにおける9つの入力画素のデータは、入力画素IN11乃至13と、入力画素IN21乃至23と、入力画素IN31乃至33のデータである。また、フィルタFの9つの係数のデータは、係数F00乃至02と、係数F10乃至12と、係数F20乃至22のデータである。
【0036】
一方、入力画像INの1つの入力画素に着目すると、その入力画素のデータは、9つの出力画素のデータの算出に利用される。例えば、入力画素IN22のデータは、図3(c) に示したように、出力画像OUTにおける9つの出力画素OUT11乃至13と、出力画素OUT21乃至23と、出力画素OUT31乃至33のデータの算出に利用される。
【0037】
このようなフィルタ処理をグラフィックスLSI100が行う場合、例えば、次のようにして処理を行うことができる。すなわち、フィルタFの各係数を、複数のプロセッサコア120の各々に対応付けて、各プロセッサコア120の演算ユニット123が、対応する係数を用いて、1つの出力画素のデータを求める際に必要となる計算の一部を行うようにすることができる。
【0038】
図4は、共有レジスタ140のデータフィールド141に保持されるテクスチャ画素データとテクスチャ画素座標データのデータ構造の一例を示す図である。
図4に示したように、データフィールド141のビットフィールド142に保持されるテクスチャ画素データは、RGBA(Red, Green, Blue, Alpha)各色8ビットのカラーフォーマットのデータ構造を有する。また、データフィールド141のビットフィールド143に保持されるテクスチャ画素座標データは、S座標及びT座標のデータであり、上述のとおり、各々が32ビット浮動少数点フォーマットのデータ構造を有する。
【0039】
図5は、本実施例に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
図5に示したように、本フローチャートは、ステップ1乃至5の5つのステップに大別される。
【0040】
ステップ1では、次のような動作を行う。
まず、グラフィックスLSI100の命令発行ユニット110へのバイナリ命令のストリーム入力を開始する(S101)。なお、ストリームとして入力されるバイナリ命令は、予め、コンパイラがシェーダープログラム等の描画プログラムをコンパイルすることによって得られたものである。そのストリーム入力が開始すると、命令発行ユニット110は、ストリームとして入力されるバイナリ命令を、複数のプロセッサコア120に分配して出力する(S102)。
【0041】
ステップ1に続くステップ2以降の動作は、各プロセッサコア120が、命令発行ユニット110からバイナリ命令が入力される毎に、そのバイナリ命令に応じた処理を行う動作となる。但し、各プロセッサコア120がバイナリ命令に応じて行う動作は同じとなるので、ここでは、代表してプロセッサコア120−1の動作を中心に説明する。
【0042】
ステップ2では、次のような動作を行う。
プロセッサコア120−1の命令検出機構121は、命令発行ユニット110から入力されるバイナリ命令がテクスチャ読み出し命令であるか否かを検出する(S103)。ここで、その判定結果がYesの場合には、S104(ステップ3)へ進む。一方、その判定結果がNoの場合には、図示はしないが、プロセッサコア120−1が、通常の手順で、そのバイナリ命令に応じた演算を行う。
【0043】
続いて、ステップ3では、次のような動作を行う。
命令検出機構121は、テクスチャ読み出し命令を解読し、その命令に含まれるテクスチャ画素座標データを抽出し、それを共有レジスタ制御機構150へ出力する(S104)。
【0044】
続いて、ステップ4では、次のような動作を行う。
共有レジスタ制御機構150のテクスチャ座標検索機構151は、プロセッサコア120−1の命令検出機構121から入力されるテクスチャ画素座標データを一時的に保持すると共に、それを検索キーとして、共有レジスタ140を検索する。そして、そのテクスチャ画素座標データが共有レジスタ140に保持されているか否か、すなわち、そのテクスチャ画素座標データに対応するテクスチャ画素データが共有レジスタ140に存在するか否かを判定する(S105)。
【0045】
ここで、その判定結果がYesの場合、テクスチャ座標検索機構151は、テクスチャ画素の存在を表すテクスチャ存在信号を、テクスチャ画素座標データを出力したプロセッサコア120−1へ出力する(S106)。また、これと略同時に、共有レジスタ制御機構150は、テクスチャ座標検索機構151が検索したテクスチャ画素座標データに対応するテクスチャ画素データを共有レジスタ140から読み出す。そして、それをテクスチャ画素座標データを出力したプロセッサコア120−1へ出力する。
【0046】
一方、S105の判定結果がNoの場合、テクスチャ座標検索機構151は、テクスチャ画素の不在を表すテクスチャ不在信号を、テクスチャ画素座標データを出力したプロセッサコア120−1へ出力する(S107)。また、これと略同時に、テクスチャ座標検索機構151は、一時的に保持していたテクスチャ画素座標データを、ペアリング機構152へ出力する。
【0047】
続いて、ステップ5では、次のような動作を行う。
S106の後、プロセッサコア120−1の命令変換機構122は、共有レジスタ制御機構150のテクスチャ座標検索機構151からテクスチャ存在信号が入力されると、S103で命令検出機構121が検出したテクスチャ読み出し命令を破棄する(S108)。これにより、テクスチャユニット130へのテクスチャ読み出し命令の発行がキャンセルされ、プロセッサコア120−1は、テクスチャ読み出し完了状態に遷移する。また、プロセッサコア120−1の演算ユニット123は、共有レジスタ制御機構150から入力されるテクスチャ画素データを用いて演算を実行する(S109)。例えば、図3を用いて説明したフィルタ処理に必要な演算の一部を実行する。
【0048】
一方、S107の後、プロセッサコア120−1の命令変換機構122は、共有レジスタ制御機構150のテクスチャ座標検索機構151からテクスチャ不在信号が入力されると、テクスチャユニット130へのテクスチャ読み出し命令を発行する(S110)。すなわち、S103で命令検出機構121が検出したテクスチャ読み出し命令を、テクスチャユニット130へのテクスチャ読み出し命令として、テクスチャユニット130へ出力する。
【0049】
テクスチャユニット130は、プロセッサコア120−1の命令変換機構122からテクスチャ読み出し命令が入力されると、そのテクスチャ読み出し命令に含まれるテクスチャ画素座標データに応じたテクスチャ画素データをテクスチャキャッシュ131から読み出して取得する(S111)。但し、この時に、そのテクスチャ画素データがテクスチャキャッシュ131に存在しない場合には、それをグラフィックスメモリ200から読み出して取得する。そして、テクスチャユニット130は、取得したテクスチャ画素データを、共有レジスタ制御機構150へ出力する。
【0050】
共有レジスタ制御機構150のペアリング機構152は、テクスチャユニット130から入力されるテクスチャ画素データと、テクスチャ座標検索機構151から入力されるテクスチャ画素座標データとをペアリングする。なお、このテクスチャ画素座標データは、S107でテクスチャ座標検索機構151が命令変換機構122へテクスチャ不在信号を出力したときに、テクスチャ座標検索機構151がペアリング機構152へ出力したものである。ペアリング機構152は、ペアリングしたテクスチャ画素データとテクスチャ画素座標データとを、共有レジスタ140の空いているデータフィールド141に書き込む(S112)。但し、空いているデータフィールド141が無い場合には、そのペアリングしたデータを、最も書き込み日時が古いテクスチャ画素データとテクスチャ画素座標データを保持しているデータフィールド141に上書きする。このようにしてペアリングしたデータが共有レジスタ140に書き込まれると、共有レジスタ制御機構150は、そのテクスチャ画素データを読み出す。そして、そのテクスチャ画素データに対応するテクスチャ画素座標データを出力したプロセッサコア120−1の演算ユニット123へ、読み出したテクスチャ画素データを出力する。
【0051】
このようにして、プロセッサコア120−1にテクスチャ画素データが入力されると、プロセッサコア120−1は、テクスチャ読み出し完了状態に遷移する。また、プロセッサコア120−1の演算ユニット123は、S109と同様に、このときに共有レジスタ制御機構150から入力されたテクスチャ画素データを用いて演算を実行する(S113)。例えば、図3を用いて説明したフィルタ処理に必要な演算の一部を実行する。
【0052】
以上のように、本実施例に係るグラフィックスプロセッサによれば、周辺画素を含む一連の画像処理(例えば図3を用いて説明した3×3画素のフィルタを用いた処理等)を実行するのに妥当な有限サイクル期間中に、次のようなことが可能となる。すなわち、その有限サイクル期間中に共有レジスタ140に保持されているテクスチャ画素データのうち複数のプロセッサコア120により流用可能なものについては、共有レジスタ制御機構150を介してプロセッサコア120へ転送可能となる。従って、そのようなテクスチャ画素データについては、テクスチャキャッシュ131又はグラフィックスメモリ200から読み直す必要が無くなる。そのため、テクスチャキャッシュ131又はグラフィックスメモリ200からの読み直しを抑止することができ、また、その読み直し頻度を減少させることができる。その結果、テクスチャキャッシュ131又はグラフィックスメモリ200に対するテクスチャ画素データの読み直しが大量に発生して演算可能な状態にデータが整うまで各プロセッサコア120がストールする、等といった状況が減少する。
よって、メモリボトルネックによる性能低下を抑制することが可能となる。
【0053】
なお、本実施例に係るグラフィックスプロセッサでは、次のような変形が可能である。
まず、本実施例では、命令変換機構122にテクスチャ不在信号が入力されたときに、テクスチャユニット130へのテクスチャ読み出し命令の発行が行われていた。これを、例えば、命令変換機構122にテクスチャ不在信号が入力されるのを待たずに、投機的に、テクスチャユニット130へのテクスチャ読み出し命令の発行を行うようにすることも可能である。この場合には、各プロセッサコア120とテクスチャキャッシュ131を、例えば、次のように構成しておく。まず、テクスチャユニット130が処理可能な命令セットの中に、テクスチャ読み出しキャンセル命令を予め追加定義しておく。各プロセッサコア120においては、命令検出機構121がテクスチャ読み出し命令を検出すると、更に、命令変換機構122がテクスチャキャッシュ131へのテクスチャ読み出し命令を発行するようにする。また、命令変換機構122は、テクスチャ座標検索機構151からテクスチャ存在信号が入力されると、更に、テクスチャ読み出しキャンセル命令をテクスチャキャッシュ131へ出力するようにする。テクスチャキャッシュ131においては、更に、命令変換機構122からテクスチャ読み出しキャンセル命令が入力されると、テクスチャキャッシュ131又はグラフィックスメモリ200からの、テクスチャ読み出し命令に応じたテクスチャ画素データの読み出しをキャンセルするようにする。このような変形により、テクスチャ読み出し命令に応じたテクスチャ画素データが共有レジスタ140に保持されていない場合において、プロセッサコア120は、より早く、それを取得することができる。
【0054】
また、本実施例では、命令変換機構122から入力されるテクスチャ読み出し命令に応じてテクスチャユニット130により読み出されたテクスチャ画素データが、次のようにしてプロセッサコア120へ出力されていた。すなわち、そのテクスチャ画素データは、ペアリング機構152を介して共有レジスタ140に書き込まれ、その後、それが共有レジスタ制御機構150により読み出されてプロセッサコア120へ出力されていた。これを、例えば、次のように変形することも可能である。すなわち、テクスチャユニット130は、テクスチャ読み出し命令に応じて読み出したテクスチャ画素データを、ペアリング機構152へ出力すると共に、プロセッサコア120へも出力するようにする。但し、この場合は、ペアリング機構152が、テクスチャユニット130から入力されたテクスチャ画素データを共有レジスタ140へ書き込むが、その後、それを共有レジスタ制御機構150が読み出してプロセッサコア120へ出力することは行わない。このような変形により、プロセッサコア120は、テクスチャユニット130により読み出されたテクスチャ画素データを、より早く、取得することができる。
【0055】
また、本実施例において、グラフィックスメモリ200は、グラフィックスLSI100の内部に備えることも可能であるし、本実施例に係るグラフィックスプロセッサの外部に設けることも可能である。
【0056】
[実施例2]
本発明の実施例2に係るグラフィックスプロセッサも、実施例1に係るグラフィックスプロセッサと同様に、プログラマブルなプロセッサであって、車載カメラから入力されるビデオ画像に対してフィルタ処理等の高度な画像処理を行う。
【0057】
但し、実施例2に係るグラフィックスプロセッサでは、共有レジスタに保持されているテクスチャ画素データを何れのプロセッサコアが使用中であるかを識別可能に構成されている点が、実施例1に係るグラフィックスプロセッサと異なる。そのため、実施例2に係るグラフィックスプロセッサは、構成及び動作の一部が、実施例1に係るグラフィックスプロセッサと異なる。なお、以下では、実施例1に係るグラフィックスプロセッサと同一の構成については同一の符号を付して説明する。
【0058】
図6は、実施例2に係るグラフィックスプロセッサの構成例を示す図である。
図6に示したように、実施例2に係るグラフィックスプロセッサは、主に次の点が、実施例1に係るグラフィックスプロセッサと異なる。
【0059】
まず、共有レジスタ140が、テクスチャ画素毎に、テクスチャ画素データと、そのテクスチャ画素データに対応するテクスチャ画素座標データと、更に、そのテクスチャ画素データに対応する使用フラグデータとを保持する構成を有する。ここで、使用フラグデータは、対応するテクスチャ画素データを何れのプロセッサコア120が使用中であるかを識別可能にするデータである。
【0060】
また、各プロセッサコア120は、共有レジスタ140に保持されているテクスチャ画素データを用いた演算が終了すると、そのテクスチャ画素データの使用を終了した旨を通知する使用終了信号を共有レジスタ制御機構150へ出力する。なお、この使用終了信号には、出力元(送信元)のプロセッサコア120を後に特定可能なように、例えばプロセッサコアIDのデータが含まれる。
【0061】
また、共有レジスタ制御機構150は、フラグ処理機構153を更に含む。なお、フラグ処理機構153はフラグ処理部の一例である。
フラグ処理機構153は、プロセッサコア120が共有レジスタ140に保持されているテクスチャ画素データの使用を開始するときや、その使用の終了を通知する使用終了信号がプロセッサコア120から入力されたときに、次のような動作を行う。すなわち、そのようなときには、対応する使用フラグデータが保持される、共有レジスタ140のデータフィールド141における対応するビットのフィールドに対し、対応するビットデータをフラグとして書き込む。また、フラグ処理機構153は、共有レジスタ140から読み出した使用フラグデータに応じて、書き込み先選択信号をペアリング機構152へ出力する。これに伴い、ペアリング機構152は、ペアリングされたテクスチャ画素データとテクスチャ画素座標データとを、フラグ処理機構153から入力される書き込み先選択信号に応じて、共有レジスタ140の対応するデータフィールド141へ書き込む。
【0062】
その他の構成については、実施例1に係るグラフィックスプロセッサと同様であるので、ここでは、その説明を省略する。
【0063】
図7は、本実施例に係るグラフィックスプロセッサにおける、共有レジスタ140と共有レジスタ制御機構150のフラグ処理機構153の構成を、より詳細に示す図である。
【0064】
図7に示したように、共有レジスタ140は、実施例1に係るグラフィックスプロセッサと同様に、m個のデータフィールド141を有する。但し、本実施例に係るグラフィックスプロセッサでは、各データフィールド141が、テクスチャ画素データに対応する使用フラグデータを保持するためのビットフィールド144を更に有する。なお、データフィールド141に保持されるテクスチャ画素データと、テクスチャ画素座標データと、使用フラグデータのデータ構造については、図8を用いて後述する。
【0065】
ビットフィールド144は、nビットのフィールドを有し、各ビットのフィールドは、n個のプロセッサコア120の各々に予め対応付けされている。本実施例では、ビットフィールド144において、ビット0、1、・・・、n−1のフィールドが、プロセッサコア120−1、120−2、・・・、120−nに対応するものとする。また、各ビットのフィールドにおいて、保持されるデータが「0」である場合には、対応するプロセッサコア120が、対応するテクスチャ画素データを使用していないことを示す。一方、保持されるデータが「1」である場合には、対応するプロセッサコア120が、対応するテクスチャ画素データを使用していることを示す。例えば、ビット0のフィールドに保持されているデータが「0」である場合には、プロセッサコア120−1が、対応するテクスチャ画素データを使用していないことを示す。一方、そのデータが「1」である場合には、プロセッサコア120−1が、対応するテクスチャ画素データを使用していることを示す。
【0066】
また、共有レジスタ140は、リード/ライトインターフェース145を更に備え、データフィールド141等に対するデータの読み出し及び書き込みを、そのリード/ライトインターフェース145を介して行う。
【0067】
共有レジスタ制御機構150のフラグ処理機構153は、ビット拡張機構154と、ビット分解機構155と、書き込みレジスタ選択機構156を含む。なお、ビット拡張機構154はフラグ書き込み部の一例である。また、書き込みレジスタ選択機構156は、書き込み先選択部の一例である。
【0068】
ビット拡張機構154は、共有レジスタ140のデータフィールド141におけるビットフィールド144の各ビットのフィールドに対し未使用又は使用に対応する「0」又は「1」のビットデータをフラグとして書き込む。より具体的には、プロセッサコア120が共有レジスタ140に保持されているテクスチャ画素データの使用を開始するときに、対応するデータフィールド141のビットフィールド144における、対応するビットのフィールドに「1」のビットデータを書き込む。或いは、プロセッサコア120から使用終了信号が入力されたときに、対応するデータフィールド141のビットフィールド144における、対応するビットのフィールドに「0」のビットデータを書き込む。なお、プロセッサコア120が共有レジスタ140に保持されているテクスチャ画素データの使用を開始するときとは、書き込みレジスタ選択機構156から書き込み先選択信号が入力されるときも含む。
【0069】
ビット分解機構155は、共有レジスタ140のデータフィールド141毎に、ビットフィールド144に保持されているn個のビットデータ(使用フラグデータ)を読み出し、そのn個のビットデータを入力とするn入力OR演算を行う。そして、そのOR演算の結果信号となる「0」又は「1」を表す信号を、書き込みレジスタ選択機構156へ出力する。
【0070】
なお、そのOR演算の結果信号が「0」を表す信号の場合は、そのときのOR演算の入力であった使用フラグデータを保持するデータフィールド141に保持されているテクスチャ画素データが、何れのプロセッサコア120にも使用されていないことを示す。一方、そのOR演算の結果信号が「1」を表す信号の場合は、そのときのOR演算の入力であった使用フラグデータを保持するデータフィールド141に保持されているテクスチャ画素データが、何れかのプロセッサコア120により使用されていることを示す。
【0071】
書き込みレジスタ選択機構156は、ビット分解機構155から入力される結果信号が「0」を表す信号の場合には、次のような動作を行う。すなわち、その場合には、その結果信号が出力されたときにOR演算の入力であった使用フラグデータを保持するデータフィールド141を書き込み先として選択することを指示する書き込み先選択信号を、ペアリング機構152及びビット拡張機構154へ出力する。なお、ビット分解機構155から書き込みレジスタ選択機構156に入力される結果信号が「1」を表す信号の場合には、その結果信号が出力されたときにOR演算の入力であった使用フラグデータを保持するデータフィールド141が上書き禁止として取り扱われる。
【0072】
また、このような構成に伴い、ペアリング機構152は、ペアリングしたテクスチャ画素データとテクスチャ画素座標データとを、書き込みレジスタ選択機構156から入力される書き込み先選択信号に応じて、共有レジスタ140の対応するデータフィールド141へ書き込む。
【0073】
図8は、本実施例に係るグラフィックスプロセッサにおいて、共有レジスタ140のデータフィールド141に保持される、テクスチャ画素データとテクスチャ画素座標データと使用フラグデータのデータ構造の一例を示す図である。
【0074】
図8に示したように、ビットフィールド142に保持されるテクスチャ画素データと、ビットフィールド143に保持されるテクスチャ画素座標データのデータ構造については、図4を用いて説明したものと同様であるので、ここではその説明を省略する。一方、ビットフィールド144に保持される使用フラグデータは、32個のビットデータとして表される。なお、図8に示した例では、複数のプロセッサコア120の個数を32としている。図8に示したビットフィールド144においては、ビット0とビット3の各々のフィールドに「1」のビットデータが保持され、その他のビットのフィールドに「0」のビットデータが保持されている。このことから、図8に示した例では、ビットフィールド142に保持されているテクスチャ画素データをプロセッサコア120−1、120−4が使用中であり、その他のプロセッサコア120が使用していないことを示す。
【0075】
図9は、本実施例に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
図9に示したフローチャートにおいて、図5に示したフローチャートと異なる点は、ステップ4において、S106の後に新たにS201を行う点である。また、ステップ5において、図5に示したS112の替わりにS202乃至204を行う点である。さらに、新たにステップ6が追加され、新たにS205及びS206を行う点である。
【0076】
そこで、ここでは、その異なる点を中心に図9に示したフローチャートを説明する。
図9に示したフローチャートにおいて、ステップ4では、S106の後に、新たに次のS201を行う。すなわち、S201では、フラグ処理機構153のビット拡張機構154が、共有レジスタ140の対応するデータフィールド141のビットフィールド144における対応するビットのフィールドに「1」のビットデータをフラグとして書き込む。ここで、共有レジスタ140の対応するデータフィールド141とは、テクスチャ座標検索機構151が検出したテクスチャ画素座標データを保持するデータフィールド141である。また、このときは、テクスチャ画素座標データを出力したプロセッサコアが、プロセッサコア120−1である。従って、データフィールド141のビットフィールド144における対応するビットのフィールドとは、プロセッサコア120−1に対応するビットのフィールドとなる。
【0077】
なお、S201を行う前においては、S106と略同時に、共有レジスタ制御機構150が、共有レジスタ140から読み出したテクスチャ画素データをプロセッサコア120−1へ出力している。このことから、S201を行うときは、プロセッサコア120−1が、共有レジスタ140に保持されているテクスチャ画素データの使用を開始するときと言うことができる。
【0078】
ステップ5では、S111とS113の間に、次のS202乃至204を行う。まず、S202では、フラグ処理機構153が、共有レジスタ140のデータフィールド141毎に使用フラグデータを読み出し、何れのプロセッサコア120からも使用されていないテクスチャ画素データを保持するデータフィールド141を選択する処理を行う。具体的には、この処理を次のようにして行う。まず、フラグ処理機構153のビット分解機構155が、共有レジスタ140のデータフィールド141毎に、ビットフィールド144に保持されているn個のビットデータ(使用フラグデータ)を読み出し、そのn個のビットデータを入力とするn入力OR演算を行う。そして、そのOR演算の結果信号を、書き込みレジスタ選択機構156へ出力する。書き込みレジスタ選択機構156は、ビット分解機構155から入力される結果信号が「0」を表す信号である場合に、次のような動作を行う。すなわち、その結果信号が出力されたときにOR演算の入力であった使用フラグデータを保持するデータフィールド141を書き込み先として選択することを指示する書き込み先選択信号を、ペアリング機構152及びビット拡張機構154へ出力する。また、このように、ビット分解機構155から書き込みレジスタ選択機構156へ入力される結果信号が「0」を表す信号になると、S202が終了する。なお、ビット分解機構155から書き込みレジスタ選択機構156へ入力される結果信号が「1」を表す信号の場合には、その結果信号が出力されたときにOR演算の入力であった使用フラグデータを保持するデータフィールド141が上書き禁止として取り扱われる。
【0079】
次に、S202の後は、S203とS204を略並行して行う。
S203では、ペアリング機構152が、ペアリングしたテクスチャ画素データとテクスチャ画素座標データとを、書き込みレジスタ選択機構156から入力される書き込み先選択信号に応じて、共有レジスタ140の対応するデータフィールド141へ書き込む。このようにしてペアリングしたデータが共有レジスタ140に書き込まれると、共有レジスタ制御機構150は、そのテクスチャ画素データを読み出す。そして、そのテクスチャ画素データに対応するテクスチャ画素座標データを出力したプロセッサコア120−1の演算ユニット123へ、読み出したテクスチャ画素データを出力する。
【0080】
また、S204では、フラグ処理機構153のビット拡張機構154が、書き込みレジスタ選択機構156から入力される書き込み先選択信号に応じて、次のような動作を行う。すなわち、その書き込み先選択信号に応じて、共有レジスタ140の対応するデータフィールド141のビットフィールド144における対応するビットのフィールドに「1」のビットデータをフラグとして書き込む。ここで、対応するビットのフィールドとは、このときのテクスチャ画素座標データを出力したプロセッサコアがプロセッサコア120−1であることから、プロセッサコア120−1に対応するビットのフィールドとなる。
【0081】
なお、S204と略並行して行われるS203では、共有レジスタ制御機構150が、共有レジスタ140から読み出したテクスチャ画素データをプロセッサコア120−1へ出力している。このことから、S204を行うときは、プロセッサコア120−1が、共有レジスタ140に保持されているテクスチャ画素データの使用を開始するときと言うことができる。
【0082】
ステップ6では、S109の後に新たにS205を行い、S113の後に新たにS206を行う。なお、S205及びS206の動作は基本点に同じ動作となる。
S205では、プロセッサコア120−1から使用終了信号が入力されると、ビット拡張機構154は、次のような動作を行う。すなわち、S109で実行された演算に使用されたテクスチャ画素データを保持する共有レジスタ140のデータフィールド141におけるビットフィールド144の対応するビットのフィールドに「0」のビットデータをフラグとして書き込む。ここで、使用終了信号は、S109で実行した演算を終了したプロセッサコア120−1がビット拡張機構154へ出力した信号である。また、ビットフィールド144の対応するビットのフィールドとは、使用終了信号を出力したプロセッサコア120−1に対応するビットのフィールドである。
【0083】
また、S206では、プロセッサコア120−1から使用終了信号が入力されると、ビット拡張機構154は、次のような動作を行う。すなわち、S113で実行された演算に使用されたテクスチャ画素データを保持する共有レジスタ140のデータフィールド141におけるビットフィールド144の対応するビットのフィールドに「0」のビットデータをフラグとして書き込む。ここで、使用終了信号は、S113で実行した演算を終了したプロセッサコア120−1がビット拡張機構154へ出力した信号である。また、ビットフィールド144の対応するビットのフィールドとは、使用終了信号を出力したプロセッサコア120−1に対応するビットのフィールドである。
【0084】
以上のように、本実施例に係るグラフィックスプロセッサによれば、実施例1に係るグラフィックスプロセッサと同様の効果を得ることができることに加え、次のような効果も得ることができる。
【0085】
本実施例に係るグラフィックスプロセッサによれば、共有レジスタ140に保持されているテクスチャ画素データを何れかのプロセッサコア120が使用中であるか否かを識別することができる。また、そのテクスチャ画素データを何れのプロセッサコア120が使用中であるかを識別することもできる。そのため、共有レジスタ140において、何れかのプロセッサコア120が使用中のテクスチャ画素データを保持するデータフィールド141については、書き込み禁止として取り扱うことができる。また、何れのプロセッサコア120も使用していないテクスチャ画素データを保持するデータフィールド141については、新たなテクスチャ画素データの書き込み先とすることができる。
【0086】
なお、本実施例に係るグラフィックスプロセッサでも、次のような変形が可能である。
まず、本実施例でも、実施例1と同様の変形が可能である。
また、本実施例では、使用フラグデータを保持するビットフィールド144が共有レジスタ140に設けられる構成であったが、これを、例えば、共有レジスタ制御機構150に設けるように構成することも可能である。
【0087】
また、本実施例では、S110乃至111の後にS202を実行していたが、S110乃至111とS202とを平行して実行し、テクスチャ画素データ取得のレイテンシを隠蔽することも可能である。
【0088】
また、上述の実施例1及び2に係るグラフィックスプロセッサでは、一方の実施例に係るグラフィックスプロセッサの構成及び又は動作に、他方の実施例に係るグラフィックスプロセッサの構成及び又は動作を組み合わせることも可能である。
【0089】
以上、本発明の実施例を説明したが、本発明は、上述した各実施例に限定されることなく、本発明の要旨を逸脱しない範囲内で種々の改良・変更が可能である。
【0090】
以上の実施例1及び2を含む実施形態に関し、更に以下の付記を開示する。
(付記1)
複数の画素データそれぞれの処理を並列して行う複数のプロセッサコアと、
前記複数のプロセッサコアにより共有されるレジスタと、
前記レジスタを制御するレジスタ制御部と、
前記画素データを保持する画素保持メモリと、
を備え、
前記レジスタは、画素毎に、画素データと前記画素データに対応する画素座標データとを保持し、
前記レジスタ制御部は、
画素座標データを検索キーに前記レジスタを検索する検索部、
を含む、
ことを特徴とするグラフィックスプロセッサ。
(付記2)
前記複数のプロセッサコアの各々は、
入力される命令の中から画素読み出し命令を検出する検出部、
を含み、
前記検出部は、前記画素読み出し命令を検出したときに、前記画素読み出し命令に含まれる画素座標データを前記検索部へ出力する、
ことを特徴とする付記1記載のグラフィックスプロセッサ。
(付記3)
前記検索部は、前記検出部から入力された画素座標データを検索キーに前記レジスタを検索した結果、
前記画素座標データを検索できたときには、前記画素座標データに対応する画素データが前記レジスタに保持されていることを示す存在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力し、
前記画素座標データを検索できなかったときには、前記画素座標データに対応する画素データが前記レジスタに保持されていないことを示す不在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする付記2記載のグラフィックスプロセッサ。
(付記4)
前記検索部が前記画素座標データを前記レジスタから検索することができたときに、前記レジスタ制御部は、前記画素座標データに対応する画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする付記3記載のグラフィックスプロセッサ。
(付記5)
画素読み出し命令に応じて、前記画素保持メモリから画素データを読み出すメモリ制御部、
を更に備え、
前記複数のプロセッサコアの各々は、
前記検索部から前記不在信号が入力された場合には前記検出部が検出した画素読み出し命令を前記メモリ制御部へ出力する命令変換部、
を更に含む、
ことを特徴とする付記3又は4記載のグラフィックスプロセッサ。
(付記6)
画素読み出し命令に応じて前記画素保持メモリから画素データを読み出し、画素読み出しキャンセル命令に応じて前記画素保持メモリからの画素データの読み出しをキャンセルするメモリ制御部、
を更に備え、
前記複数のプロセッサコアの各々は、
前記検出部が画素読み出し命令を検出したときに前記画素読み出し命令を前記メモリ制御部へ出力し、前記検索部から前記存在信号が入力された場合に前記画素読み出しキャンセル命令を前記メモリ制御部へ出力する命令変換部、
を更に含む、
ことを特徴とする付記3又は4記載のグラフィックスプロセッサ。
(付記7)
前記メモリ制御部は、前記命令変換部から入力される画素読み出し命令に応じて前記画素保持メモリから読み出した画素データを、前記レジスタ制御部へ出力する、
ことを特徴とする付記5又は6記載のグラフィックスプロセッサ。
(付記8)
前記レジスタ制御部は、
前記メモリ制御部から入力される画素データと、前記検索部が検索キーとした画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする付記7記載のグラフィックスプロセッサ。
(付記9)
前記対応付け部が対応付けた前記画素データと前記画素座標データとを前記レジスタに書き込んだときに、前記レジスタ制御部は、前記画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする付記8記載のグラフィックスプロセッサ。
(付記10)
前記メモリ制御部は、前記命令変換部から入力される画素読み出し命令に応じて前記画素保持メモリから読み出した画素データを、前記レジスタ制御部と前記画素読み出し命令を出力した命令変換部を含むプロセッサコアとへ出力する、
ことを特徴とする付記5又は6記載のグラフィックスプロセッサ。
(付記11)
前記レジスタ制御部は、
前記メモリ制御部から入力される画素データと、前記検索部が検索キーとした画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする付記10記載のグラフィックスプロセッサ。
(付記12)
前記レジスタは、画素毎に、画素データと、前記画素データに対応する画素座標データと、前記画素データを前記複数のプロセッサコアの何れかが使用中であるか否かを識別可能にする使用フラグデータとを保持し、
前記レジスタ制御部は、
前記使用フラグデータを処理するフラグ処理部、
を更に含み、
前記フラグ処理部は、
前記レジスタに保持されている使用フラグデータの中で前記複数のプロセッサコアの何れにも使用されていないと識別可能な使用フラグデータに対応する画素データと画素座標データとを保持するデータフィールドを書き込み先として選択する書き込み先選択部、
を含み、
前記対応付け部は、対応付けした前記画素データと前記画素座標データとを、前記書き込み先選択部により選択された書き込み先へ書き込む、
ことを特徴とする付記8、9、又は11記載のグラフィックスプロセッサ。
(付記13)
前記フラグ処理部は、
前記プロセッサコアが前記レジスタに保持されている画素データの使用を開始するとき、又は、前記プロセッサコアが前記レジスタに保持されている画素データの使用を終了したときに、前記画素データに対応する使用フラグデータが保持されているデータフィールドにおける、前記プロセッサコアに対応するビットのフィールドに、使用又は未使用に対応するビットデータをフラグとして書き込むフラグ書き込み部、
を更に含む、
ことを特徴とする付記12記載のグラフィックスプロセッサ。
(付記14)
前記複数のプロセッサコアの各々は、前記レジスタに保持されている画素データを用いた演算を終了すると、前記画素データの使用を終了した旨の信号を、前記フラグ書き込み部へ出力する、
ことを特徴とする付記13記載のグラフィックスプロセッサ。
(付記15)
グラフィックスプロセッサのデータ読み出し方法であって、
ストリームとして入力される命令を、複数の画素データそれぞれの処理を並列して行う複数のプロセッサコアへ分配して出力し、
前記複数のプロセッサコアの各々が、入力される命令の中から画素読み出し命令を検出し、
前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データをキーに、前記複数のプロセッサコアにより共有され、画素毎に、画素データと前記画素データに対応する画素座標データとを保持するレジスタを検索し、
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できたときに、前記画素座標データに対応する画素データを前記レジスタから読み出して前記プロセッサコアへ出力する、
ことを特徴とするデータ読み出し方法。
(付記16)
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できなかったときに、前記画素座標データに対応する画素データを画素保持メモリから読み出し、
読み出した画素データと、前記画素座標データとを対応付けて前記レジスタへ書き込み、
前記レジスタに書き込まれた前記画素データを読み出して前記プロセッサコアへ出力する、
ことを特徴とする付記15記載のデータ読み出し方法。
(付記17)
前記プロセッサコアにより前記画素読み出し命令が検出されたときに、画素保持メモリからの、前記画素読み出し命令に含まれる画素座標データに応じた画素データの読み出しを開始し、
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できたときに、開始した前記画素保持メモリからの読み出しをキャンセルする、
ことを特徴とする付記15記載のデータ読み出し方法。
(付記18)
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できなかったときに、前記画素座標データに対応する画素データを画素保持メモリから読み出し、
読み出した画素データを前記プロセッサコアへ出力すると共に、読み出した画素データと、前記画素座標データとを対応付けて前記レジスタへ書き込む、
ことを特徴とする付記15記載のデータ読み出し方法。
(付記19)
前記レジスタは、画素毎に、画素データと、前記画素データに対応する画素座標データと、前記画素データを前記複数のプロセッサコアの何れかが使用中であるか否かを識別可能にする使用フラグデータとを保持し、
前記レジスタに保持されている使用フラグデータの中で前記複数のプロセッサコアの何れにも使用されていないと識別可能な使用フラグデータに対応する画素データと画素座標データとを保持するデータフィールドを書き込み先として選択し、
対応付けした前記画素データと前記画素座標データとを前記レジスタへ書き込む際には、書込み先として選択した前記データフィールドに書き込む、
ことを特徴とする付記16又は18記載のデータ読み出し方法。
(付記20)
前記プロセッサコアが前記レジスタに保持されている画素データの使用を開始するとき、又は、前記プロセッサコアが前記レジスタに保持されている画素データの使用を終了したときに、前記画素データに対応する使用フラグデータが保持されているデータフィールドにおける、前記プロセッサコアに対応するビットのフィールドに、使用又は未使用に対応するビットデータをフラグとして書き込む、
ことを特徴とする付記19記載のデータ読み出し方法。
【符号の説明】
【0091】
100 グラフィックスLSI
110 命令発行ユニット
120 プロセッサコア
121 命令検出機構
122 命令変換機構
123 演算ユニット
130 テクスチャユニット
131 テクスチャキャッシュ
140 共有レジスタ
150 共有レジスタ制御機構
151 テクスチャ座標検索機構
152 ペアリング機構
153 フラグ処理機構
154 ビット拡張機構
155 ビット分解機構
156 書き込みレジスタ選択機構
200 グラフィックスメモリ

【特許請求の範囲】
【請求項1】
複数の画素データそれぞれの処理を並列して行う複数のプロセッサコアと、
前記複数のプロセッサコアにより共有されるレジスタと、
前記レジスタを制御するレジスタ制御部と、
前記画素データを保持する画素保持メモリと、
を備え、
前記レジスタは、画素毎に、画素データと前記画素データに対応する画素座標データとを保持し、
前記レジスタ制御部は、
画素座標データを検索キーに前記レジスタを検索する検索部、
を含む、
ことを特徴とするグラフィックスプロセッサ。
【請求項2】
前記複数のプロセッサコアの各々は、
入力される命令の中から画素読み出し命令を検出する検出部、
を含み、
前記検出部は、前記画素読み出し命令を検出したときに、前記画素読み出し命令に含まれる画素座標データを前記検索部へ出力する、
ことを特徴とする請求項1記載のグラフィックスプロセッサ。
【請求項3】
前記検索部は、前記検出部から入力された画素座標データを検索キーに前記レジスタを検索した結果、
前記画素座標データを検索できたときには、前記画素座標データに対応する画素データが前記レジスタに保持されていることを示す存在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力し、
前記画素座標データを検索できなかったときには、前記画素座標データに対応する画素データが前記レジスタに保持されていないことを示す不在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする請求項2記載のグラフィックスプロセッサ。
【請求項4】
前記検索部が前記画素座標データを前記レジスタから検索することができたときに、前記レジスタ制御部は、前記画素座標データに対応する画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする請求項3記載のグラフィックスプロセッサ。
【請求項5】
画素読み出し命令に応じて、前記画素保持メモリから画素データを読み出すメモリ制御部、
を更に備え、
前記複数のプロセッサコアの各々は、
前記検索部から前記不在信号が入力された場合には前記検出部が検出した画素読み出し命令を前記メモリ制御部へ出力する命令変換部、
を更に含む、
ことを特徴とする請求項3又は4記載のグラフィックスプロセッサ。
【請求項6】
画素読み出し命令に応じて前記画素保持メモリから画素データを読み出し、画素読み出しキャンセル命令に応じて前記画素保持メモリからの画素データの読み出しをキャンセルするメモリ制御部、
を更に備え、
前記複数のプロセッサコアの各々は、
前記検出部が画素読み出し命令を検出したときに前記画素読み出し命令を前記メモリ制御部へ出力し、前記検索部から前記存在信号が入力された場合に前記画素読み出しキャンセル命令を前記メモリ制御部へ出力する命令変換部、
を更に含む、
ことを特徴とする請求項3又は4記載のグラフィックスプロセッサ。
【請求項7】
前記メモリ制御部は、前記命令変換部から入力される画素読み出し命令に応じて前記画素保持メモリから読み出した画素データを、前記レジスタ制御部へ出力する、
ことを特徴とする請求項5又は6記載のグラフィックスプロセッサ。
【請求項8】
前記レジスタ制御部は、
前記メモリ制御部から入力される画素データと、前記検索部が検索キーとした画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする請求項7記載のグラフィックスプロセッサ。
【請求項9】
前記対応付け部が対応付けた前記画素データと前記画素座標データとを前記レジスタに書き込んだときに、前記レジスタ制御部は、前記画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする請求項8記載のグラフィックスプロセッサ。
【請求項10】
前記メモリ制御部は、前記命令変換部から入力される画素読み出し命令に応じて前記画素保持メモリから読み出した画素データを、前記レジスタ制御部と前記画素読み出し命令を出力した命令変換部を含むプロセッサコアとへ出力する、
ことを特徴とする請求項5又は6記載のグラフィックスプロセッサ。
【請求項11】
前記レジスタ制御部は、
前記メモリ制御部から入力される画素データと、前記検索部が検索キーとした画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする請求項10記載のグラフィックスプロセッサ。
【請求項12】
前記レジスタは、画素毎に、画素データと、前記画素データに対応する画素座標データと、前記画素データを前記複数のプロセッサコアの何れかが使用中であるか否かを識別可能にする使用フラグデータとを保持し、
前記レジスタ制御部は、
前記使用フラグデータを処理するフラグ処理部、
を更に含み、
前記フラグ処理部は、
前記レジスタに保持されている使用フラグデータの中で前記複数のプロセッサコアの何れにも使用されていないと識別可能な使用フラグデータに対応する画素データと画素座標データとを保持するデータフィールドを書き込み先として選択する書き込み先選択部、
を含み、
前記対応付け部は、対応付けした前記画素データと前記画素座標データとを、前記書き込み先選択部により選択された書き込み先へ書き込む、
ことを特徴とする請求項8、9、又は11記載のグラフィックスプロセッサ。
【請求項13】
前記フラグ処理部は、
前記プロセッサコアが前記レジスタに保持されている画素データの使用を開始するとき、又は、前記プロセッサコアが前記レジスタに保持されている画素データの使用を終了したときに、前記画素データに対応する使用フラグデータが保持されているデータフィールドにおける、前記プロセッサコアに対応するビットのフィールドに、使用又は未使用に対応するビットデータをフラグとして書き込むフラグ書き込み部、
を更に含む、
ことを特徴とする請求項12記載のグラフィックスプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2012−128805(P2012−128805A)
【公開日】平成24年7月5日(2012.7.5)
【国際特許分類】
【出願番号】特願2010−282144(P2010−282144)
【出願日】平成22年12月17日(2010.12.17)
【出願人】(308014341)富士通セミコンダクター株式会社 (2,507)
【Fターム(参考)】