(57)【特許請求の範囲】
【請求項１】
画素データを保持する画素保持メモリと、
前記画素保持メモリを制御するメモリ制御部と、
複数の前記画素データそれぞれの処理を行う複数のプロセッサコアと、
前記複数のプロセッサコアにより共有して使用され、前記画素データに対応する画素毎に、前記画素データと前記画素データに対応する画素座標データとを保持するレジスタと、
前記レジスタを制御するレジスタ制御部と、
を備え、
前記複数のプロセッサコア各々は検出部と命令変換部を有し、
前記レジスタ制御部は検索部を有し、
前記検出部は、入力された命令の中から画素読み出し命令を検出したとき、前記画素読み出し命令に含まれる前記画素座標データを前記検索部へ出力し、
前記検索部は、前記検出部から入力された前記画素座標データを検索キーとして前記レジスタを検索した結果、前記画素座標データを検索できたとき、前記画素座標データに対応する前記画素データが前記レジスタに保持されていることを示す存在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力し、前記画素座標データを検索できないとき、前記画素座標データに対応する前記画素データが前記レジスタに保持されていないことを示す不在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力し、
前記命令変換部は、前記検索部から前記不在信号が入力されたときあるいは前記検出部が前記画素読み出し命令を検出したときに前記画素読み出し命令を前記メモリ制御部へ出力し、前記検索部から前記存在信号が入力されたときに画素読み出しキャンセル命令を前記メモリ制御部へ出力し、
前記メモリ制御部は、前記画素読み出し命令に応じて前記画素保持メモリから前記画素データを読み出し、前記画素読み出しキャンセル命令に応じて前記画素保持メモリからの前記画素データの読み出しをキャンセルする、
ことを特徴とするグラフィックスプロセッサ。
【請求項２】
前記レジスタ制御部は、前記画素座標データを前記レジスタから検索することができたときに、前記画素座標データに対応する前記画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする請求項１記載のグラフィックスプロセッサ。
【請求項３】
前記メモリ制御部は、前記画素読み出し命令に応じて前記画素保持メモリから読み出した前記画素データを、前記レジスタ制御部へ出力する、
ことを特徴とする請求項１又は２記載のグラフィックスプロセッサ。
【請求項４】
前記レジスタ制御部は、
前記画素データと、前記画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする請求項３記載のグラフィックスプロセッサ。
【請求項５】
前記レジスタ制御部は、前記対応付け部が対応付けた前記画素データと前記画素座標データとを前記レジスタに書き込んだときに、前記画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする請求項４記載のグラフィックスプロセッサ。
【請求項６】
前記メモリ制御部は、前記画素読み出し命令に応じて前記画素保持メモリから読み出した前記画素データを、前記レジスタ制御部と前記画素読み出し命令を出力した前記命令変換部を含むプロセッサコアとへ出力する、
ことを特徴とする請求項１又は２記載のグラフィックスプロセッサ。
【請求項７】
前記レジスタ制御部は、
前記画素データと、前記画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする請求項６記載のグラフィックスプロセッサ。
【請求項８】
前記レジスタは、前記画素毎に、前記画素データと、前記画素データに対応する前記画素座標データと、前記画素データを前記複数のプロセッサコアの何れかが使用中であるか否かを識別可能にする使用フラグデータとを保持し、
前記レジスタ制御部は、
前記使用フラグデータを処理するフラグ処理部、
を更に含み、
前記フラグ処理部は、
前記レジスタに保持されている前記使用フラグデータの中で前記複数のプロセッサコアの何れにも使用されていないと識別可能な前記使用フラグデータに対応する画素データと前記画素座標データとを保持するデータフィールドを書き込み先として選択する書き込み先選択部、
を含み、
前記対応付け部は、対応付けした前記画素データと前記画素座標データとを、前記書き込み先選択部により選択された書き込み先へ書き込む、
ことを特徴とする請求項４又は５記載のグラフィックスプロセッサ。
【請求項９】
前記フラグ処理部は、
前記プロセッサコアが前記レジスタに保持されている前記画素データの使用を開始するとき、又は、前記プロセッサコアが前記レジスタに保持されている前記画素データの使用を終了したときに、前記画素データに対応する前記使用フラグデータが保持されている前記データフィールドにおける、前記プロセッサコアに対応するビットのフィールドに、使用又は未使用に対応するビットデータをフラグとして書き込むフラグ書き込み部、
を更に含む、
ことを特徴とする請求項８記載のグラフィックスプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフィックスプロセッサに関する。
【背景技術】
【０００２】
車両に組み込まれた小型カメラ（以下、車載カメラともいう）から入力されるビデオ画像を加工処理して、赤外線ナイトビジョン、車線逸脱警告、死角視認補助、パーキングアシスト等の安全運転補助機構に活用するリアルタイム画像処理技術がある。
【０００３】
上記の車載カメラからのビデオ画像を用いるアプリケーションでは、撮影したビデオ画像をそのままディスプレイに表示するだけでなく、ノイズ除去や輪郭抽出に代表される各種フィルタ処理や、その他高度な画像処理の適用が必要とされている。
【０００４】
しかしながら、自動車業界では、部品コスト削減という観点から、高価な画像処理専用ＬＳＩの使用を歓迎していない。また、自動車に搭載されるシステムによっては、プログラマブルなグラフィックスプロセッサを用いて、通常のコンピューターグラフィックス処理が行われている。例えば、自動車に搭載されるカーナビゲーションシステムでは、プログラマブルなグラフィックスプロセッサを用いて、地図描画やＧＵＩ画面描画等の通常のコンピューターグラフィックス処理が行われている。
そこで、このプログラマブルなグラフィックスプロセッサを、通常のコンピューターグラフィックス処理だけでなく、車載カメラから入力されるビデオ画像に対する画像処理にも流用することにより、部品コストを削減したいという要求が高まっている。
【０００５】
車載カメラから入力されるビデオ画像に対する画像処理の一例として、フィルタ処理を行う場合を考える。例えば３×３画素のフィルタを用いてフィルタ処理を行う場合、１つの出力画素の色を決定するためには、中心画素とそれに隣接する周辺画素からなる９画素分の入力画素が必要になる。一方、これを入力画素の視点から見ると、１つの入力画素は、対応する出力画素とそれに隣接する周辺の出力画素からなる９画素分の出力画素に必要とされる。
【０００６】
このようなフィルタ処理を画像処理専用ＬＳＩを用いて実現する場合、その画像処理専用ＬＳＩは、例えば図１０に示す構成を有する。図１０に示したように、この画像処理専用ＬＳＩは、アレイ状に配置された９つの画素処理ユニットを用いて並列処理する方式である。この方式の場合、１つの出力画素の色を決定するために、中心画素に隣接する周辺画素のデータが必要なことは、ＬＳＩ設計段階から既知である。従って、各画素処理ユニット間をハードワイヤードなデータ経路を介して直結することにより、複数の出力画素間で共用される入力画素のデータを画素処理ユニット間で直接にやりとりすることができる。また、アルゴリズムは既知なので、各画素処理ユニットが同期して一斉に処理することができ、データの供給タイミング制御に特別な工夫を必要としない。
【０００７】
一方、上記のようなフィルタ処理をプログラマブルなグラフィックスプロセッサを用いて実現する場合は、通常のコンピューターグラフィックスにおけるテクスチャマッピング手法を利用する方式が考えられる。この方式では、外部グラフィックスメモリに集積されたビデオ画像（入力されたビデオ画像）をテクスチャ画像とみなし、外部グラフィックスメモリ或いは内部キャッシュメモリから、必用なテクスチャ画素を共有レジスタに取り込む。共有レジスタは、アレイ状に配置された複数のプロセッサコアに共有される。ここで、各プロセッサコア間をハードワイヤードなデータ経路を介して直結するかどうかは、ＬＳＩ設計の実装に依存する。しかしながら、データがプロセッサコア間で共有されるかどうかはシェーダープログラム次第なので、ＬＳＩが暗黙的にデータをプロセッサコア間で常に横流しするような振舞いをさせることはできない。また、各プロセッサコアでは独立に様々なスレッドが実行されうるので、各プロセッサコアが同期して一斉に処理することも期待できない。
【０００８】
なお、キャッシュメモリを備えたグラフィックスプロセッサに関しては、次のような装置がある。例えば、画像メモリ専用のキャッシュメモリを設け、キャッシュメモリにデータが保持されてから一定時間が経過した後、キャッシュメモリに保持されているデータを画像メモリに転送するようにした装置がある（特許文献１等参照）。また、例えば、各描画プロセッサにテクスチャキャッシュがそれぞれ接続され、テクスチャメモリは、いずれかのテクスチャキャッシュから転送要求を受けると、対応するテクスチャを全てのテクスチャキャッシュに転送するようにしたシステムがある（特許文献２等参照）。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平０２−２３８４９０号公報
【特許文献２】特開平１１−２３２４７０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
現状では、プログラマブルなグラフィックスプロセッサを用いて画像処理を行う場合に、１つの入力画素が複数の出力画素に使い回されることを各プロセッサコアが認識できない。また、各プロセッサコアでは独立に様々なスレッドが実行されうるので、複数のプロセッサコアで並列に実行される処理の間で同期を取ることは期待できない。そのため、仮に、入力画素が他の画素の処理に使い回されると分かったとしても、都合の良いタイミングで画素データをプロセッサコア間で転送することはできない。従って、流用可能な入力画素データが共有レジスタに残っていたとしても、各プロセッサコアは、その事実を認識することなく独自に外部グラフィックスメモリ或いは内部キャッシュメモリから入力画素データを読み直していた。
この結果、外部グラフィックスメモリに対する冗長なデータ入出力が大量に発生し、演算可能な状態にデータが整うまで各プロセッサコアがストールするため、上記のようにして処理が行われる状況は、性能を低下させる要因になっていた。
【００１１】
本発明は、上記実情に鑑み、メモリボトルネックによる性能低下を抑制することができるグラフィックスプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１２】
装置の一観点によれば、複数のプロセッサコアと、レジスタと、レジスタ制御部と、画素保持メモリとを備えるグラフィックスプロセッサが提供される。ここで、複数のプロセッサコアは、複数の画素データそれぞれの処理を並列して行う。レジスタは、複数のプロセッサコアにより共有される。また、レジスタは、画素毎に、画素データとその画素データに対応する画素座標データとを保持する。レジスタ制御部は、レジスタを制御する。また、レジスタ制御部は、画素座標データを検索キーにレジスタを検索する検索部を含む。画素保持メモリは、画素データを保持する。
【発明の効果】
【００１３】
開示の装置は、メモリボトルネックによる性能低下を抑制することができる、という効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】実施例１に係るグラフィックスプロセッサの構成例を示す図である。
【図２】命令検出機構が検出するテクスチャ読み出し命令のデータ構造の一例を説明する図である。
【図３】(a),(b),(c) は、グラフィックスＬＳＩが行うフィルタ処理の一例を説明する図である。
【図４】共有レジスタのデータフィールドに保持されるテクスチャ画素データとテクスチャ画素座標データのデータ構造の一例を示す図である。
【図５】実施例１に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
【図６】実施例２に係るグラフィックスプロセッサの構成例を示す図である。
【図７】実施例２に係るグラフィックスプロセッサにおける、共有レジスタと共有レジスタ制御機構のフラグ処理機構の構成を、より詳細に示す図である。
【図８】実施例２に係るグラフィックスプロセッサにおいて、共有レジスタのデータフィールドに保持される、テクスチャ画素データとテクスチャ画素座標データと使用フラグデータのデータ構造の一例を示す図である。
【図９】実施例２に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
【図１０】画像処理専用ＬＳＩの構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下、図面を参照しながら本発明の実施の形態を説明する。
[実施例１]
本発明の実施例１に係るグラフィックスプロセッサは、プログラマブルなプロセッサであって、車載カメラから入力されるビデオ画像に対してフィルタ処理等の高度な画像処理を行う。
【００１６】
図１は、本実施例に係るグラフィックスプロセッサの構成例を示す図である。
図１に示したように、本実施例に係るグラフィックスプロセッサは、グラフィックスＬＳＩ１００と、グラフィックスメモリ２００とを含む。  グラフィックスメモリ２００は、図示しない車載カメラから入力されるビデオ画像のデータを記憶する。なお、本実施例に係るグラフィックスプロセッサでは、このビデオ画像のデータをテクスチャ画像のデータ（テクスチャデータ）として取り扱う。
【００１７】
グラフィックスＬＳＩ１００は、命令発行ユニット１１０と、複数（ｎ個）のプロセッサコア１２０（１２０−１、１２０−２、・・・、１２０−ｎ）と、テクスチャユニット１３０と、共有レジスタ１４０と、共有レジスタ制御機構１５０とを含む。なお、共有レジスタ１４０はレジスタの一例である。また、共有レジスタ制御機構１５０は、レジスタ制御部の一例である。
【００１８】
命令発行ユニット１１０は、ストリームとして入力されるバイナリ命令を、通常のマルチプロセッサ制御方法により、複数のプロセッサコア１２０に分配して出力する。なお、ストリームとして入力されるバイナリ命令は、予め、コンパイラがシェーダープログラム等の描画プログラムをコンパイルすることによって得られたものである。
【００１９】
各プロセッサコア１２０は、命令検出機構１２１と、命令変換機構１２２と、演算ユニット１２３とを含む。なお、命令検出機構１２１は検出部の一例である。また、命令変換機構１２２は命令変換部の一例である。
【００２０】
命令検出機構１２１は、命令発行ユニット１１０から入力されるバイナリ命令の中からテクスチャ読み出し命令を検出する。なお、テクスチャ読み出し命令のデータ構造については、図２を用いて後述する。また、命令検出機構１２１は、テクスチャ読み出し命令を検出すると、そのテクスチャ読み出し命令に含まれるテクスチャ画素座標データを共有レジスタ制御機構１５０へ出力する。なお、共有レジスタ制御機構１５０へ出力するテクスチャ画素座標データには、出力元（送信元）のプロセッサコア１２０を後に特定可能なように、例えばプロセッサコアＩＤのデータが付与される。
【００２１】
命令変換機構１２２は、共有レジスタ制御機構１５０から入力される、テクスチャ存在信号又はテクスチャ不在信号に応じて、テクスチャユニット１３０へのテクスチャ読み出し命令の破棄（キャンセル）又は発行を行う。具体的には、入力される信号がテクスチャ画素の存在を表すテクスチャ存在信号である場合には、命令検出機構１２１が検出したテクスチャ読み出し命令を破棄し、テクスチャユニット１３０へのテクスチャ読み出し命令を発行しない。一方、入力される信号がテクスチャ画素の不在を表すテクスチャ不在信号である場合には、命令検出機構１２１が検出したテクスチャ読み出し命令を、テクスチャユニット１３０へのテクスチャ読み出し命令として、発行する。
【００２２】
演算ユニット１２３は、各種の演算を行う。例えば、共有レジスタ制御機構１５０から入力されるテクスチャ画素データを用いて、フィルタ処理に必要な演算を行う。なお、フィルタ処理については、図３を用いて後述する。
【００２３】
テクスチャユニット１３０は、テクスチャキャッシュメモリ（以下、単にテクスチャキャッシュという）１３１を含む。なお、テクスチャユニット１３０はメモリ制御部の一例である。また、テクスチャキャッシュ１３１及び又は上記のグラフィックスメモリ２００は、画素保持メモリの一例である。テクスチャキャッシュ１３１は、グラフィックスメモリ２００に記憶されるデータの一部を保持する。テクスチャユニット１３０は、プロセッサコア１２０の命令変換機構１２２からテクスチャ読み出し命令が入力されると、対応するテクスチャ画素データをテクスチャキャッシュ１３１から通常の手順で読み出す。なお、対応するテクスチャ画素データは、テクスチャ読み出し命令に含まれるテクスチャ画素座標データに対応するテクスチャ画素データである。但し、そのテクスチャ画素データがテクスチャキャッシュ１３１に保持されていない場合には、それをグラフィックスメモリ２００から通常の手順で読み出す。そして、読み出したテクスチャ画素データを共有レジスタ制御機構１５０へ出力する。
【００２４】
共有レジスタ１４０は、テクスチャ画素データとそのテクスチャ画素データに対応するテクスチャ画素座標データとを保持するためのデータフィールド１４１をｍ個有する。各データフィールド１４１は、テクスチャ画素データを保持するためのビットフィールド１４２と、そのテクスチャ画素データに対応するテクスチャ画素座標データを保持するためのビットフィールド１４３とを有する。なお、データフィールド１４１に保持されるテクスチャ画素データとテクスチャ画素座標データのデータ構造については、図４を用いて後述する。これにより、共有レジスタ１４０は、テクスチャ画素毎に、テクスチャ画素データとそのテクスチャ画素データに対応するテクスチャ画素座標データとを保持することが可能である。また、共有レジスタ１４０は、図示はしないが、テクスチャ画素データとテクスチャ画素座標データとを保持するデータフィールド１４１の他、例えば頂点座標値等のデータを保持するデータフィールドも有する。また、共有レジスタ１４０は、図示しないリード／ライトインターフェースを備え、データフィールド１４１等に対するデータの読み出し及び書き込みを、そのリード／ライトインターフェースを介して行う。
【００２５】
なお、共有レジスタ１４０、テクスチャキャッシュ１３１、及びグラフィックスメモリ２００の中で、共有レジスタ１４０は、各プロセッサコア１２０に最も近いデータソースである。
【００２６】
共有レジスタ制御機構１５０は、テクスチャ座標検索機構１５１と、テクスチャ画素テクスチャ座標ペアリング機構（以下、単にペアリング機構という）１５２とを含む。なお、テクスチャ座標検索機構１５１は検索部の一例である。また、ペアリング機構１５２はペアリング部（対応付け部）の一例である。
【００２７】
テクスチャ座標検索機構１５１は、プロセッサコア１２０の命令検出機構１２１からテクスチャ画素座標データが入力されると、それを一時的に保持すると共に、そのテクスチャ画素座標データを検索キーとして共有レジスタ１４０を検索する。また、その検索結果に応じて、テクスチャ存在信号又はテクスチャ不在信号を、そのテクスチャ画素座標データを出力したプロセッサコア１２０の命令変換機構１２２へ出力する。ここで、テクスチャ存在信号は、テクスチャ座標検索機構１５１がテクスチャ画素座標データを検索できた場合に出力される信号である。また、テクスチャ不在信号は、テクスチャ画素座標データが検索できなかった場合に出力される信号である。
【００２８】
なお、テクスチャ座標検索機構１５１がテクスチャ画素座標データを検索できた場合には、共有レジスタ制御機構１５０が、そのテクスチャ画素座標データに対応するテクスチャ画素データを共有レジスタ１４０から読み出す。そして、それを、テクスチャ画素座標データを出力したプロセッサコア１２０の演算ユニット１２３へ出力する。
【００２９】
ペアリング機構１５２は、テクスチャ座標検索機構１５１がテクスチャ画素座標データを検索できなかった場合に、テクスチャ画素座標データとテクスチャ画素データとをペアリング（対応付け）し、それを共有レジスタ１４０へ書き込む。ここで、テクスチャ画素座標データは、テクスチャ座標検索機構１５１が一時的に保持していたものであって、そのテクスチャ座標検索機構１５１から入力されるものである。また、テクスチャ画素データは、テクスチャユニット１３０から入力されるものである。
【００３０】
なお、ペアリング機構１５２は、ペアリングしたテクスチャ画素データとテクスチャ画素座標データを、共有レジスタ１４０の空いているデータフィールド１４１に書き込む。但し、共有レジスタ１４０に空いているデータフィールド１４１が無い場合には、それを、最も書き込み日時が古いテクスチャ画素データとテクスチャ画素座標データを保持しているデータフィールド１４１に上書きする。なお、書き込み先となるレジスタアドレスの決定は、通常の方法により行う。
【００３１】
また、このようにしてテクスチャ画素データとテクスチャ画素座標データが共有レジスタ１４０に書き込まれると、共有レジスタ制御機構１５０は、そのテクスチャ画素データを読み出す。そして、そのテクスチャ画素データに対応するテクスチャ画素座標データを出力したプロセッサコア１２０の演算ユニット１２３へ、読み出したテクスチャ画素データを出力する。
【００３２】
図２は、命令検出機構１２１が検出するテクスチャ読み出し命令のデータ構造の一例を説明する図である。
図２に示したように、テクスチャ読み出し命令３０１は、テクセルデータ（テクスチャ画素データ）を読み出す命令であることを表すデータ３０２と、そのテクセルデータのＳ座標を表すデータ３０３と、そのテクセルデータのＴ座標を表すデータ３０４とを含む。なお、Ｓ座標及びＴ座標は、一般的な二次元平面表現におけるＸ座標及びＹ座標に相当する、テクスチャ画像空間の座標を示すものである。本例では、Ｓ座標及びＴ座標の各々が３２ビット浮動少数点フォーマットのデータにより表現される。命令検出機構１２１は、このようなテクスチャ読み出し命令３０１を検出すると、このテクスチャ読み出し命令３０１に含まれるＳ座標を表すデータ３０３とＴ座標を表すデータ３０４とを、テクスチャ画素座標データとして、共有レジスタ制御機構１５０へ出力する。
【００３３】
図３(a),(b),(c) は、グラフィックスＬＳＩ１００が行うフィルタ処理の一例を説明する図である。ここでは、３×３画素のフィルタを用いてフィルタ処理を行う場合を例に説明する。
【００３４】
図３(a) に示したように、入力画像ＩＮに対して３×３画素のフィルタＦを用いてフィルタ処理を行う場合、そのフィルタ処理により得られる出力画像ＯＵＴの各出力画素のデータは次のようにして求めることができる。すなわち、１つの出力画素のデータは、９つの入力画素のデータとフィルタＦの９つの係数のデータとを用いて、計算により求めることができる。ここで、９つの入力画素は、出力画素に対応する入力画素と、その入力画素に隣接する８つの周辺画素である。
【００３５】
例えば、図３(a) に示した出力画像ＯＵＴにおける出力画素ＯＵＴ２２のデータは、入力画像ＩＮにおける９つの入力画素のデータと、フィルタＦの９つの係数のデータとを用いて、図３(b) に示した計算式により求めることができる。ここで、入力画像ＩＮにおける９つの入力画素のデータは、入力画素ＩＮ１１乃至１３と、入力画素ＩＮ２１乃至２３と、入力画素ＩＮ３１乃至３３のデータである。また、フィルタＦの９つの係数のデータは、係数Ｆ００乃至０２と、係数Ｆ１０乃至１２と、係数Ｆ２０乃至２２のデータである。
【００３６】
一方、入力画像ＩＮの１つの入力画素に着目すると、その入力画素のデータは、９つの出力画素のデータの算出に利用される。例えば、入力画素ＩＮ２２のデータは、図３(c) に示したように、出力画像ＯＵＴにおける９つの出力画素ＯＵＴ１１乃至１３と、出力画素ＯＵＴ２１乃至２３と、出力画素ＯＵＴ３１乃至３３のデータの算出に利用される。
【００３７】
このようなフィルタ処理をグラフィックスＬＳＩ１００が行う場合、例えば、次のようにして処理を行うことができる。すなわち、フィルタＦの各係数を、複数のプロセッサコア１２０の各々に対応付けて、各プロセッサコア１２０の演算ユニット１２３が、対応する係数を用いて、１つの出力画素のデータを求める際に必要となる計算の一部を行うようにすることができる。
【００３８】
図４は、共有レジスタ１４０のデータフィールド１４１に保持されるテクスチャ画素データとテクスチャ画素座標データのデータ構造の一例を示す図である。
図４に示したように、データフィールド１４１のビットフィールド１４２に保持されるテクスチャ画素データは、ＲＧＢＡ(Red, Green, Blue, Alpha)各色８ビットのカラーフォーマットのデータ構造を有する。また、データフィールド１４１のビットフィールド１４３に保持されるテクスチャ画素座標データは、Ｓ座標及びＴ座標のデータであり、上述のとおり、各々が３２ビット浮動少数点フォーマットのデータ構造を有する。
【００３９】
図５は、本実施例に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
図５に示したように、本フローチャートは、ステップ１乃至５の５つのステップに大別される。
【００４０】
ステップ１では、次のような動作を行う。
まず、グラフィックスＬＳＩ１００の命令発行ユニット１１０へのバイナリ命令のストリーム入力を開始する（Ｓ１０１）。なお、ストリームとして入力されるバイナリ命令は、予め、コンパイラがシェーダープログラム等の描画プログラムをコンパイルすることによって得られたものである。そのストリーム入力が開始すると、命令発行ユニット１１０は、ストリームとして入力されるバイナリ命令を、複数のプロセッサコア１２０に分配して出力する（Ｓ１０２）。
【００４１】
ステップ１に続くステップ２以降の動作は、各プロセッサコア１２０が、命令発行ユニット１１０からバイナリ命令が入力される毎に、そのバイナリ命令に応じた処理を行う動作となる。但し、各プロセッサコア１２０がバイナリ命令に応じて行う動作は同じとなるので、ここでは、代表してプロセッサコア１２０−１の動作を中心に説明する。
【００４２】
ステップ２では、次のような動作を行う。
プロセッサコア１２０−１の命令検出機構１２１は、命令発行ユニット１１０から入力されるバイナリ命令がテクスチャ読み出し命令であるか否かを検出する（Ｓ１０３）。ここで、その判定結果がＹｅｓの場合には、Ｓ１０４（ステップ３）へ進む。一方、その判定結果がＮｏの場合には、図示はしないが、プロセッサコア１２０−１が、通常の手順で、そのバイナリ命令に応じた演算を行う。
【００４３】
続いて、ステップ３では、次のような動作を行う。
命令検出機構１２１は、テクスチャ読み出し命令を解読し、その命令に含まれるテクスチャ画素座標データを抽出し、それを共有レジスタ制御機構１５０へ出力する（Ｓ１０４）。
【００４４】
続いて、ステップ４では、次のような動作を行う。
共有レジスタ制御機構１５０のテクスチャ座標検索機構１５１は、プロセッサコア１２０−１の命令検出機構１２１から入力されるテクスチャ画素座標データを一時的に保持すると共に、それを検索キーとして、共有レジスタ１４０を検索する。そして、そのテクスチャ画素座標データが共有レジスタ１４０に保持されているか否か、すなわち、そのテクスチャ画素座標データに対応するテクスチャ画素データが共有レジスタ１４０に存在するか否かを判定する（Ｓ１０５）。
【００４５】
ここで、その判定結果がＹｅｓの場合、テクスチャ座標検索機構１５１は、テクスチャ画素の存在を表すテクスチャ存在信号を、テクスチャ画素座標データを出力したプロセッサコア１２０−１へ出力する（Ｓ１０６）。また、これと略同時に、共有レジスタ制御機構１５０は、テクスチャ座標検索機構１５１が検索したテクスチャ画素座標データに対応するテクスチャ画素データを共有レジスタ１４０から読み出す。そして、それをテクスチャ画素座標データを出力したプロセッサコア１２０−１へ出力する。
【００４６】
一方、Ｓ１０５の判定結果がＮｏの場合、テクスチャ座標検索機構１５１は、テクスチャ画素の不在を表すテクスチャ不在信号を、テクスチャ画素座標データを出力したプロセッサコア１２０−１へ出力する（Ｓ１０７）。また、これと略同時に、テクスチャ座標検索機構１５１は、一時的に保持していたテクスチャ画素座標データを、ペアリング機構１５２へ出力する。
【００４７】
続いて、ステップ５では、次のような動作を行う。
Ｓ１０６の後、プロセッサコア１２０−１の命令変換機構１２２は、共有レジスタ制御機構１５０のテクスチャ座標検索機構１５１からテクスチャ存在信号が入力されると、Ｓ１０３で命令検出機構１２１が検出したテクスチャ読み出し命令を破棄する（Ｓ１０８）。これにより、テクスチャユニット１３０へのテクスチャ読み出し命令の発行がキャンセルされ、プロセッサコア１２０−１は、テクスチャ読み出し完了状態に遷移する。また、プロセッサコア１２０−１の演算ユニット１２３は、共有レジスタ制御機構１５０から入力されるテクスチャ画素データを用いて演算を実行する（Ｓ１０９）。例えば、図３を用いて説明したフィルタ処理に必要な演算の一部を実行する。
【００４８】
一方、Ｓ１０７の後、プロセッサコア１２０−１の命令変換機構１２２は、共有レジスタ制御機構１５０のテクスチャ座標検索機構１５１からテクスチャ不在信号が入力されると、テクスチャユニット１３０へのテクスチャ読み出し命令を発行する（Ｓ１１０）。すなわち、Ｓ１０３で命令検出機構１２１が検出したテクスチャ読み出し命令を、テクスチャユニット１３０へのテクスチャ読み出し命令として、テクスチャユニット１３０へ出力する。
【００４９】
テクスチャユニット１３０は、プロセッサコア１２０−１の命令変換機構１２２からテクスチャ読み出し命令が入力されると、そのテクスチャ読み出し命令に含まれるテクスチャ画素座標データに応じたテクスチャ画素データをテクスチャキャッシュ１３１から読み出して取得する（Ｓ１１１）。但し、この時に、そのテクスチャ画素データがテクスチャキャッシュ１３１に存在しない場合には、それをグラフィックスメモリ２００から読み出して取得する。そして、テクスチャユニット１３０は、取得したテクスチャ画素データを、共有レジスタ制御機構１５０へ出力する。
【００５０】
共有レジスタ制御機構１５０のペアリング機構１５２は、テクスチャユニット１３０から入力されるテクスチャ画素データと、テクスチャ座標検索機構１５１から入力されるテクスチャ画素座標データとをペアリングする。なお、このテクスチャ画素座標データは、Ｓ１０７でテクスチャ座標検索機構１５１が命令変換機構１２２へテクスチャ不在信号を出力したときに、テクスチャ座標検索機構１５１がペアリング機構１５２へ出力したものである。ペアリング機構１５２は、ペアリングしたテクスチャ画素データとテクスチャ画素座標データとを、共有レジスタ１４０の空いているデータフィールド１４１に書き込む（Ｓ１１２）。但し、空いているデータフィールド１４１が無い場合には、そのペアリングしたデータを、最も書き込み日時が古いテクスチャ画素データとテクスチャ画素座標データを保持しているデータフィールド１４１に上書きする。このようにしてペアリングしたデータが共有レジスタ１４０に書き込まれると、共有レジスタ制御機構１５０は、そのテクスチャ画素データを読み出す。そして、そのテクスチャ画素データに対応するテクスチャ画素座標データを出力したプロセッサコア１２０−１の演算ユニット１２３へ、読み出したテクスチャ画素データを出力する。
【００５１】
このようにして、プロセッサコア１２０−１にテクスチャ画素データが入力されると、プロセッサコア１２０−１は、テクスチャ読み出し完了状態に遷移する。また、プロセッサコア１２０−１の演算ユニット１２３は、Ｓ１０９と同様に、このときに共有レジスタ制御機構１５０から入力されたテクスチャ画素データを用いて演算を実行する（Ｓ１１３）。例えば、図３を用いて説明したフィルタ処理に必要な演算の一部を実行する。
【００５２】
以上のように、本実施例に係るグラフィックスプロセッサによれば、周辺画素を含む一連の画像処理（例えば図３を用いて説明した３×３画素のフィルタを用いた処理等）を実行するのに妥当な有限サイクル期間中に、次のようなことが可能となる。すなわち、その有限サイクル期間中に共有レジスタ１４０に保持されているテクスチャ画素データのうち複数のプロセッサコア１２０により流用可能なものについては、共有レジスタ制御機構１５０を介してプロセッサコア１２０へ転送可能となる。従って、そのようなテクスチャ画素データについては、テクスチャキャッシュ１３１又はグラフィックスメモリ２００から読み直す必要が無くなる。そのため、テクスチャキャッシュ１３１又はグラフィックスメモリ２００からの読み直しを抑止することができ、また、その読み直し頻度を減少させることができる。その結果、テクスチャキャッシュ１３１又はグラフィックスメモリ２００に対するテクスチャ画素データの読み直しが大量に発生して演算可能な状態にデータが整うまで各プロセッサコア１２０がストールする、等といった状況が減少する。
よって、メモリボトルネックによる性能低下を抑制することが可能となる。
【００５３】
なお、本実施例に係るグラフィックスプロセッサでは、次のような変形が可能である。
まず、本実施例では、命令変換機構１２２にテクスチャ不在信号が入力されたときに、テクスチャユニット１３０へのテクスチャ読み出し命令の発行が行われていた。これを、例えば、命令変換機構１２２にテクスチャ不在信号が入力されるのを待たずに、投機的に、テクスチャユニット１３０へのテクスチャ読み出し命令の発行を行うようにすることも可能である。この場合には、各プロセッサコア１２０とテクスチャキャッシュ１３１を、例えば、次のように構成しておく。まず、テクスチャユニット１３０が処理可能な命令セットの中に、テクスチャ読み出しキャンセル命令を予め追加定義しておく。各プロセッサコア１２０においては、命令検出機構１２１がテクスチャ読み出し命令を検出すると、更に、命令変換機構１２２がテクスチャキャッシュ１３１へのテクスチャ読み出し命令を発行するようにする。また、命令変換機構１２２は、テクスチャ座標検索機構１５１からテクスチャ存在信号が入力されると、更に、テクスチャ読み出しキャンセル命令をテクスチャキャッシュ１３１へ出力するようにする。テクスチャキャッシュ１３１においては、更に、命令変換機構１２２からテクスチャ読み出しキャンセル命令が入力されると、テクスチャキャッシュ１３１又はグラフィックスメモリ２００からの、テクスチャ読み出し命令に応じたテクスチャ画素データの読み出しをキャンセルするようにする。このような変形により、テクスチャ読み出し命令に応じたテクスチャ画素データが共有レジスタ１４０に保持されていない場合において、プロセッサコア１２０は、より早く、それを取得することができる。
【００５４】
また、本実施例では、命令変換機構１２２から入力されるテクスチャ読み出し命令に応じてテクスチャユニット１３０により読み出されたテクスチャ画素データが、次のようにしてプロセッサコア１２０へ出力されていた。すなわち、そのテクスチャ画素データは、ペアリング機構１５２を介して共有レジスタ１４０に書き込まれ、その後、それが共有レジスタ制御機構１５０により読み出されてプロセッサコア１２０へ出力されていた。これを、例えば、次のように変形することも可能である。すなわち、テクスチャユニット１３０は、テクスチャ読み出し命令に応じて読み出したテクスチャ画素データを、ペアリング機構１５２へ出力すると共に、プロセッサコア１２０へも出力するようにする。但し、この場合は、ペアリング機構１５２が、テクスチャユニット１３０から入力されたテクスチャ画素データを共有レジスタ１４０へ書き込むが、その後、それを共有レジスタ制御機構１５０が読み出してプロセッサコア１２０へ出力することは行わない。このような変形により、プロセッサコア１２０は、テクスチャユニット１３０により読み出されたテクスチャ画素データを、より早く、取得することができる。
【００５５】
また、本実施例において、グラフィックスメモリ２００は、グラフィックスＬＳＩ１００の内部に備えることも可能であるし、本実施例に係るグラフィックスプロセッサの外部に設けることも可能である。
【００５６】
[実施例２]
本発明の実施例２に係るグラフィックスプロセッサも、実施例１に係るグラフィックスプロセッサと同様に、プログラマブルなプロセッサであって、車載カメラから入力されるビデオ画像に対してフィルタ処理等の高度な画像処理を行う。
【００５７】
但し、実施例２に係るグラフィックスプロセッサでは、共有レジスタに保持されているテクスチャ画素データを何れのプロセッサコアが使用中であるかを識別可能に構成されている点が、実施例１に係るグラフィックスプロセッサと異なる。そのため、実施例２に係るグラフィックスプロセッサは、構成及び動作の一部が、実施例１に係るグラフィックスプロセッサと異なる。なお、以下では、実施例１に係るグラフィックスプロセッサと同一の構成については同一の符号を付して説明する。
【００５８】
図６は、実施例２に係るグラフィックスプロセッサの構成例を示す図である。
図６に示したように、実施例２に係るグラフィックスプロセッサは、主に次の点が、実施例１に係るグラフィックスプロセッサと異なる。
【００５９】
まず、共有レジスタ１４０が、テクスチャ画素毎に、テクスチャ画素データと、そのテクスチャ画素データに対応するテクスチャ画素座標データと、更に、そのテクスチャ画素データに対応する使用フラグデータとを保持する構成を有する。ここで、使用フラグデータは、対応するテクスチャ画素データを何れのプロセッサコア１２０が使用中であるかを識別可能にするデータである。
【００６０】
また、各プロセッサコア１２０は、共有レジスタ１４０に保持されているテクスチャ画素データを用いた演算が終了すると、そのテクスチャ画素データの使用を終了した旨を通知する使用終了信号を共有レジスタ制御機構１５０へ出力する。なお、この使用終了信号には、出力元（送信元）のプロセッサコア１２０を後に特定可能なように、例えばプロセッサコアＩＤのデータが含まれる。
【００６１】
また、共有レジスタ制御機構１５０は、フラグ処理機構１５３を更に含む。なお、フラグ処理機構１５３はフラグ処理部の一例である。
フラグ処理機構１５３は、プロセッサコア１２０が共有レジスタ１４０に保持されているテクスチャ画素データの使用を開始するときや、その使用の終了を通知する使用終了信号がプロセッサコア１２０から入力されたときに、次のような動作を行う。すなわち、そのようなときには、対応する使用フラグデータが保持される、共有レジスタ１４０のデータフィールド１４１における対応するビットのフィールドに対し、対応するビットデータをフラグとして書き込む。また、フラグ処理機構１５３は、共有レジスタ１４０から読み出した使用フラグデータに応じて、書き込み先選択信号をペアリング機構１５２へ出力する。これに伴い、ペアリング機構１５２は、ペアリングされたテクスチャ画素データとテクスチャ画素座標データとを、フラグ処理機構１５３から入力される書き込み先選択信号に応じて、共有レジスタ１４０の対応するデータフィールド１４１へ書き込む。
【００６２】
その他の構成については、実施例１に係るグラフィックスプロセッサと同様であるので、ここでは、その説明を省略する。
【００６３】
図７は、本実施例に係るグラフィックスプロセッサにおける、共有レジスタ１４０と共有レジスタ制御機構１５０のフラグ処理機構１５３の構成を、より詳細に示す図である。
【００６４】
図７に示したように、共有レジスタ１４０は、実施例１に係るグラフィックスプロセッサと同様に、ｍ個のデータフィールド１４１を有する。但し、本実施例に係るグラフィックスプロセッサでは、各データフィールド１４１が、テクスチャ画素データに対応する使用フラグデータを保持するためのビットフィールド１４４を更に有する。なお、データフィールド１４１に保持されるテクスチャ画素データと、テクスチャ画素座標データと、使用フラグデータのデータ構造については、図８を用いて後述する。
【００６５】
ビットフィールド１４４は、ｎビットのフィールドを有し、各ビットのフィールドは、ｎ個のプロセッサコア１２０の各々に予め対応付けされている。本実施例では、ビットフィールド１４４において、ビット０、１、・・・、ｎ−１のフィールドが、プロセッサコア１２０−１、１２０−２、・・・、１２０−ｎに対応するものとする。また、各ビットのフィールドにおいて、保持されるデータが「０」である場合には、対応するプロセッサコア１２０が、対応するテクスチャ画素データを使用していないことを示す。一方、保持されるデータが「１」である場合には、対応するプロセッサコア１２０が、対応するテクスチャ画素データを使用していることを示す。例えば、ビット０のフィールドに保持されているデータが「０」である場合には、プロセッサコア１２０−１が、対応するテクスチャ画素データを使用していないことを示す。一方、そのデータが「１」である場合には、プロセッサコア１２０−１が、対応するテクスチャ画素データを使用していることを示す。
【００６６】
また、共有レジスタ１４０は、リード／ライトインターフェース１４５を更に備え、データフィールド１４１等に対するデータの読み出し及び書き込みを、そのリード／ライトインターフェース１４５を介して行う。
【００６７】
共有レジスタ制御機構１５０のフラグ処理機構１５３は、ビット拡張機構１５４と、ビット分解機構１５５と、書き込みレジスタ選択機構１５６を含む。なお、ビット拡張機構１５４はフラグ書き込み部の一例である。また、書き込みレジスタ選択機構１５６は、書き込み先選択部の一例である。
【００６８】
ビット拡張機構１５４は、共有レジスタ１４０のデータフィールド１４１におけるビットフィールド１４４の各ビットのフィールドに対し未使用又は使用に対応する「０」又は「１」のビットデータをフラグとして書き込む。より具体的には、プロセッサコア１２０が共有レジスタ１４０に保持されているテクスチャ画素データの使用を開始するときに、対応するデータフィールド１４１のビットフィールド１４４における、対応するビットのフィールドに「１」のビットデータを書き込む。或いは、プロセッサコア１２０から使用終了信号が入力されたときに、対応するデータフィールド１４１のビットフィールド１４４における、対応するビットのフィールドに「０」のビットデータを書き込む。なお、プロセッサコア１２０が共有レジスタ１４０に保持されているテクスチャ画素データの使用を開始するときとは、書き込みレジスタ選択機構１５６から書き込み先選択信号が入力されるときも含む。
【００６９】
ビット分解機構１５５は、共有レジスタ１４０のデータフィールド１４１毎に、ビットフィールド１４４に保持されているｎ個のビットデータ（使用フラグデータ）を読み出し、そのｎ個のビットデータを入力とするｎ入力ＯＲ演算を行う。そして、そのＯＲ演算の結果信号となる「０」又は「１」を表す信号を、書き込みレジスタ選択機構１５６へ出力する。
【００７０】
なお、そのＯＲ演算の結果信号が「０」を表す信号の場合は、そのときのＯＲ演算の入力であった使用フラグデータを保持するデータフィールド１４１に保持されているテクスチャ画素データが、何れのプロセッサコア１２０にも使用されていないことを示す。一方、そのＯＲ演算の結果信号が「１」を表す信号の場合は、そのときのＯＲ演算の入力であった使用フラグデータを保持するデータフィールド１４１に保持されているテクスチャ画素データが、何れかのプロセッサコア１２０により使用されていることを示す。
【００７１】
書き込みレジスタ選択機構１５６は、ビット分解機構１５５から入力される結果信号が「０」を表す信号の場合には、次のような動作を行う。すなわち、その場合には、その結果信号が出力されたときにＯＲ演算の入力であった使用フラグデータを保持するデータフィールド１４１を書き込み先として選択することを指示する書き込み先選択信号を、ペアリング機構１５２及びビット拡張機構１５４へ出力する。なお、ビット分解機構１５５から書き込みレジスタ選択機構１５６に入力される結果信号が「１」を表す信号の場合には、その結果信号が出力されたときにＯＲ演算の入力であった使用フラグデータを保持するデータフィールド１４１が上書き禁止として取り扱われる。
【００７２】
また、このような構成に伴い、ペアリング機構１５２は、ペアリングしたテクスチャ画素データとテクスチャ画素座標データとを、書き込みレジスタ選択機構１５６から入力される書き込み先選択信号に応じて、共有レジスタ１４０の対応するデータフィールド１４１へ書き込む。
【００７３】
図８は、本実施例に係るグラフィックスプロセッサにおいて、共有レジスタ１４０のデータフィールド１４１に保持される、テクスチャ画素データとテクスチャ画素座標データと使用フラグデータのデータ構造の一例を示す図である。
【００７４】
図８に示したように、ビットフィールド１４２に保持されるテクスチャ画素データと、ビットフィールド１４３に保持されるテクスチャ画素座標データのデータ構造については、図４を用いて説明したものと同様であるので、ここではその説明を省略する。一方、ビットフィールド１４４に保持される使用フラグデータは、３２個のビットデータとして表される。なお、図８に示した例では、複数のプロセッサコア１２０の個数を３２としている。図８に示したビットフィールド１４４においては、ビット０とビット３の各々のフィールドに「１」のビットデータが保持され、その他のビットのフィールドに「０」のビットデータが保持されている。このことから、図８に示した例では、ビットフィールド１４２に保持されているテクスチャ画素データをプロセッサコア１２０−１、１２０−４が使用中であり、その他のプロセッサコア１２０が使用していないことを示す。
【００７５】
図９は、本実施例に係るグラフィックスプロセッサの動作の一例を示すフローチャートである。
図９に示したフローチャートにおいて、図５に示したフローチャートと異なる点は、ステップ４において、Ｓ１０６の後に新たにＳ２０１を行う点である。また、ステップ５において、図５に示したＳ１１２の替わりにＳ２０２乃至２０４を行う点である。さらに、新たにステップ６が追加され、新たにＳ２０５及びＳ２０６を行う点である。
【００７６】
そこで、ここでは、その異なる点を中心に図９に示したフローチャートを説明する。
図９に示したフローチャートにおいて、ステップ４では、Ｓ１０６の後に、新たに次のＳ２０１を行う。すなわち、Ｓ２０１では、フラグ処理機構１５３のビット拡張機構１５４が、共有レジスタ１４０の対応するデータフィールド１４１のビットフィールド１４４における対応するビットのフィールドに「１」のビットデータをフラグとして書き込む。ここで、共有レジスタ１４０の対応するデータフィールド１４１とは、テクスチャ座標検索機構１５１が検出したテクスチャ画素座標データを保持するデータフィールド１４１である。また、このときは、テクスチャ画素座標データを出力したプロセッサコアが、プロセッサコア１２０−１である。従って、データフィールド１４１のビットフィールド１４４における対応するビットのフィールドとは、プロセッサコア１２０−１に対応するビットのフィールドとなる。
【００７７】
なお、Ｓ２０１を行う前においては、Ｓ１０６と略同時に、共有レジスタ制御機構１５０が、共有レジスタ１４０から読み出したテクスチャ画素データをプロセッサコア１２０−１へ出力している。このことから、Ｓ２０１を行うときは、プロセッサコア１２０−１が、共有レジスタ１４０に保持されているテクスチャ画素データの使用を開始するときと言うことができる。
【００７８】
ステップ５では、Ｓ１１１とＳ１１３の間に、次のＳ２０２乃至２０４を行う。まず、Ｓ２０２では、フラグ処理機構１５３が、共有レジスタ１４０のデータフィールド１４１毎に使用フラグデータを読み出し、何れのプロセッサコア１２０からも使用されていないテクスチャ画素データを保持するデータフィールド１４１を選択する処理を行う。具体的には、この処理を次のようにして行う。まず、フラグ処理機構１５３のビット分解機構１５５が、共有レジスタ１４０のデータフィールド１４１毎に、ビットフィールド１４４に保持されているｎ個のビットデータ（使用フラグデータ）を読み出し、そのｎ個のビットデータを入力とするｎ入力ＯＲ演算を行う。そして、そのＯＲ演算の結果信号を、書き込みレジスタ選択機構１５６へ出力する。書き込みレジスタ選択機構１５６は、ビット分解機構１５５から入力される結果信号が「０」を表す信号である場合に、次のような動作を行う。すなわち、その結果信号が出力されたときにＯＲ演算の入力であった使用フラグデータを保持するデータフィールド１４１を書き込み先として選択することを指示する書き込み先選択信号を、ペアリング機構１５２及びビット拡張機構１５４へ出力する。また、このように、ビット分解機構１５５から書き込みレジスタ選択機構１５６へ入力される結果信号が「０」を表す信号になると、Ｓ２０２が終了する。なお、ビット分解機構１５５から書き込みレジスタ選択機構１５６へ入力される結果信号が「１」を表す信号の場合には、その結果信号が出力されたときにＯＲ演算の入力であった使用フラグデータを保持するデータフィールド１４１が上書き禁止として取り扱われる。
【００７９】
次に、Ｓ２０２の後は、Ｓ２０３とＳ２０４を略並行して行う。
Ｓ２０３では、ペアリング機構１５２が、ペアリングしたテクスチャ画素データとテクスチャ画素座標データとを、書き込みレジスタ選択機構１５６から入力される書き込み先選択信号に応じて、共有レジスタ１４０の対応するデータフィールド１４１へ書き込む。このようにしてペアリングしたデータが共有レジスタ１４０に書き込まれると、共有レジスタ制御機構１５０は、そのテクスチャ画素データを読み出す。そして、そのテクスチャ画素データに対応するテクスチャ画素座標データを出力したプロセッサコア１２０−１の演算ユニット１２３へ、読み出したテクスチャ画素データを出力する。
【００８０】
また、Ｓ２０４では、フラグ処理機構１５３のビット拡張機構１５４が、書き込みレジスタ選択機構１５６から入力される書き込み先選択信号に応じて、次のような動作を行う。すなわち、その書き込み先選択信号に応じて、共有レジスタ１４０の対応するデータフィールド１４１のビットフィールド１４４における対応するビットのフィールドに「１」のビットデータをフラグとして書き込む。ここで、対応するビットのフィールドとは、このときのテクスチャ画素座標データを出力したプロセッサコアがプロセッサコア１２０−１であることから、プロセッサコア１２０−１に対応するビットのフィールドとなる。
【００８１】
なお、Ｓ２０４と略並行して行われるＳ２０３では、共有レジスタ制御機構１５０が、共有レジスタ１４０から読み出したテクスチャ画素データをプロセッサコア１２０−１へ出力している。このことから、Ｓ２０４を行うときは、プロセッサコア１２０−１が、共有レジスタ１４０に保持されているテクスチャ画素データの使用を開始するときと言うことができる。
【００８２】
ステップ６では、Ｓ１０９の後に新たにＳ２０５を行い、Ｓ１１３の後に新たにＳ２０６を行う。なお、Ｓ２０５及びＳ２０６の動作は基本点に同じ動作となる。
Ｓ２０５では、プロセッサコア１２０−１から使用終了信号が入力されると、ビット拡張機構１５４は、次のような動作を行う。すなわち、Ｓ１０９で実行された演算に使用されたテクスチャ画素データを保持する共有レジスタ１４０のデータフィールド１４１におけるビットフィールド１４４の対応するビットのフィールドに「０」のビットデータをフラグとして書き込む。ここで、使用終了信号は、Ｓ１０９で実行した演算を終了したプロセッサコア１２０−１がビット拡張機構１５４へ出力した信号である。また、ビットフィールド１４４の対応するビットのフィールドとは、使用終了信号を出力したプロセッサコア１２０−１に対応するビットのフィールドである。
【００８３】
また、Ｓ２０６では、プロセッサコア１２０−１から使用終了信号が入力されると、ビット拡張機構１５４は、次のような動作を行う。すなわち、Ｓ１１３で実行された演算に使用されたテクスチャ画素データを保持する共有レジスタ１４０のデータフィールド１４１におけるビットフィールド１４４の対応するビットのフィールドに「０」のビットデータをフラグとして書き込む。ここで、使用終了信号は、Ｓ１１３で実行した演算を終了したプロセッサコア１２０−１がビット拡張機構１５４へ出力した信号である。また、ビットフィールド１４４の対応するビットのフィールドとは、使用終了信号を出力したプロセッサコア１２０−１に対応するビットのフィールドである。
【００８４】
以上のように、本実施例に係るグラフィックスプロセッサによれば、実施例１に係るグラフィックスプロセッサと同様の効果を得ることができることに加え、次のような効果も得ることができる。
【００８５】
本実施例に係るグラフィックスプロセッサによれば、共有レジスタ１４０に保持されているテクスチャ画素データを何れかのプロセッサコア１２０が使用中であるか否かを識別することができる。また、そのテクスチャ画素データを何れのプロセッサコア１２０が使用中であるかを識別することもできる。そのため、共有レジスタ１４０において、何れかのプロセッサコア１２０が使用中のテクスチャ画素データを保持するデータフィールド１４１については、書き込み禁止として取り扱うことができる。また、何れのプロセッサコア１２０も使用していないテクスチャ画素データを保持するデータフィールド１４１については、新たなテクスチャ画素データの書き込み先とすることができる。
【００８６】
なお、本実施例に係るグラフィックスプロセッサでも、次のような変形が可能である。
まず、本実施例でも、実施例１と同様の変形が可能である。
また、本実施例では、使用フラグデータを保持するビットフィールド１４４が共有レジスタ１４０に設けられる構成であったが、これを、例えば、共有レジスタ制御機構１５０に設けるように構成することも可能である。
【００８７】
また、本実施例では、Ｓ１１０乃至１１１の後にＳ２０２を実行していたが、Ｓ１１０乃至１１１とＳ２０２とを平行して実行し、テクスチャ画素データ取得のレイテンシを隠蔽することも可能である。
【００８８】
また、上述の実施例１及び２に係るグラフィックスプロセッサでは、一方の実施例に係るグラフィックスプロセッサの構成及び又は動作に、他方の実施例に係るグラフィックスプロセッサの構成及び又は動作を組み合わせることも可能である。
【００８９】
以上、本発明の実施例を説明したが、本発明は、上述した各実施例に限定されることなく、本発明の要旨を逸脱しない範囲内で種々の改良・変更が可能である。
【００９０】
以上の実施例１及び２を含む実施形態に関し、更に以下の付記を開示する。
（付記１）
複数の画素データそれぞれの処理を並列して行う複数のプロセッサコアと、
前記複数のプロセッサコアにより共有されるレジスタと、
前記レジスタを制御するレジスタ制御部と、
前記画素データを保持する画素保持メモリと、
を備え、
前記レジスタは、画素毎に、画素データと前記画素データに対応する画素座標データとを保持し、
前記レジスタ制御部は、
画素座標データを検索キーに前記レジスタを検索する検索部、
を含む、
ことを特徴とするグラフィックスプロセッサ。
（付記２）
前記複数のプロセッサコアの各々は、
入力される命令の中から画素読み出し命令を検出する検出部、
を含み、
前記検出部は、前記画素読み出し命令を検出したときに、前記画素読み出し命令に含まれる画素座標データを前記検索部へ出力する、
ことを特徴とする付記１記載のグラフィックスプロセッサ。
（付記３）
前記検索部は、前記検出部から入力された画素座標データを検索キーに前記レジスタを検索した結果、
前記画素座標データを検索できたときには、前記画素座標データに対応する画素データが前記レジスタに保持されていることを示す存在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力し、
前記画素座標データを検索できなかったときには、前記画素座標データに対応する画素データが前記レジスタに保持されていないことを示す不在信号を、前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする付記２記載のグラフィックスプロセッサ。
（付記４）
前記検索部が前記画素座標データを前記レジスタから検索することができたときに、前記レジスタ制御部は、前記画素座標データに対応する画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする付記３記載のグラフィックスプロセッサ。
（付記５）
画素読み出し命令に応じて、前記画素保持メモリから画素データを読み出すメモリ制御部、
を更に備え、
前記複数のプロセッサコアの各々は、
前記検索部から前記不在信号が入力された場合には前記検出部が検出した画素読み出し命令を前記メモリ制御部へ出力する命令変換部、
を更に含む、
ことを特徴とする付記３又は４記載のグラフィックスプロセッサ。
（付記６）
画素読み出し命令に応じて前記画素保持メモリから画素データを読み出し、画素読み出しキャンセル命令に応じて前記画素保持メモリからの画素データの読み出しをキャンセルするメモリ制御部、
を更に備え、
前記複数のプロセッサコアの各々は、
前記検出部が画素読み出し命令を検出したときに前記画素読み出し命令を前記メモリ制御部へ出力し、前記検索部から前記存在信号が入力された場合に前記画素読み出しキャンセル命令を前記メモリ制御部へ出力する命令変換部、
を更に含む、
ことを特徴とする付記３又は４記載のグラフィックスプロセッサ。
（付記７）
前記メモリ制御部は、前記命令変換部から入力される画素読み出し命令に応じて前記画素保持メモリから読み出した画素データを、前記レジスタ制御部へ出力する、
ことを特徴とする付記５又は６記載のグラフィックスプロセッサ。
（付記８）
前記レジスタ制御部は、
前記メモリ制御部から入力される画素データと、前記検索部が検索キーとした画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする付記７記載のグラフィックスプロセッサ。
（付記９）
前記対応付け部が対応付けた前記画素データと前記画素座標データとを前記レジスタに書き込んだときに、前記レジスタ制御部は、前記画素データを前記レジスタから読み出して前記画素座標データを出力した前記検出部を含むプロセッサコアへ出力する、
ことを特徴とする付記８記載のグラフィックスプロセッサ。
（付記１０）
前記メモリ制御部は、前記命令変換部から入力される画素読み出し命令に応じて前記画素保持メモリから読み出した画素データを、前記レジスタ制御部と前記画素読み出し命令を出力した命令変換部を含むプロセッサコアとへ出力する、
ことを特徴とする付記５又は６記載のグラフィックスプロセッサ。
（付記１１）
前記レジスタ制御部は、
前記メモリ制御部から入力される画素データと、前記検索部が検索キーとした画素座標データとを対応付けて前記レジスタに書き込む対応付け部、
を更に含む、
ことを特徴とする付記１０記載のグラフィックスプロセッサ。
（付記１２）
前記レジスタは、画素毎に、画素データと、前記画素データに対応する画素座標データと、前記画素データを前記複数のプロセッサコアの何れかが使用中であるか否かを識別可能にする使用フラグデータとを保持し、
前記レジスタ制御部は、
前記使用フラグデータを処理するフラグ処理部、
を更に含み、
前記フラグ処理部は、
前記レジスタに保持されている使用フラグデータの中で前記複数のプロセッサコアの何れにも使用されていないと識別可能な使用フラグデータに対応する画素データと画素座標データとを保持するデータフィールドを書き込み先として選択する書き込み先選択部、
を含み、
前記対応付け部は、対応付けした前記画素データと前記画素座標データとを、前記書き込み先選択部により選択された書き込み先へ書き込む、
ことを特徴とする付記８、９、又は１１記載のグラフィックスプロセッサ。
（付記１３）
前記フラグ処理部は、
前記プロセッサコアが前記レジスタに保持されている画素データの使用を開始するとき、又は、前記プロセッサコアが前記レジスタに保持されている画素データの使用を終了したときに、前記画素データに対応する使用フラグデータが保持されているデータフィールドにおける、前記プロセッサコアに対応するビットのフィールドに、使用又は未使用に対応するビットデータをフラグとして書き込むフラグ書き込み部、
を更に含む、
ことを特徴とする付記１２記載のグラフィックスプロセッサ。
（付記１４）
前記複数のプロセッサコアの各々は、前記レジスタに保持されている画素データを用いた演算を終了すると、前記画素データの使用を終了した旨の信号を、前記フラグ書き込み部へ出力する、
ことを特徴とする付記１３記載のグラフィックスプロセッサ。
（付記１５）
グラフィックスプロセッサのデータ読み出し方法であって、
ストリームとして入力される命令を、複数の画素データそれぞれの処理を並列して行う複数のプロセッサコアへ分配して出力し、
前記複数のプロセッサコアの各々が、入力される命令の中から画素読み出し命令を検出し、
前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データをキーに、前記複数のプロセッサコアにより共有され、画素毎に、画素データと前記画素データに対応する画素座標データとを保持するレジスタを検索し、
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できたときに、前記画素座標データに対応する画素データを前記レジスタから読み出して前記プロセッサコアへ出力する、
ことを特徴とするデータ読み出し方法。
（付記１６）
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できなかったときに、前記画素座標データに対応する画素データを画素保持メモリから読み出し、
読み出した画素データと、前記画素座標データとを対応付けて前記レジスタへ書き込み、
前記レジスタに書き込まれた前記画素データを読み出して前記プロセッサコアへ出力する、
ことを特徴とする付記１５記載のデータ読み出し方法。
（付記１７）
前記プロセッサコアにより前記画素読み出し命令が検出されたときに、画素保持メモリからの、前記画素読み出し命令に含まれる画素座標データに応じた画素データの読み出しを開始し、
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できたときに、開始した前記画素保持メモリからの読み出しをキャンセルする、
ことを特徴とする付記１５記載のデータ読み出し方法。
（付記１８）
前記検索の結果、前記プロセッサコアにより検出された画素読み出し命令に含まれる画素座標データを検索できなかったときに、前記画素座標データに対応する画素データを画素保持メモリから読み出し、
読み出した画素データを前記プロセッサコアへ出力すると共に、読み出した画素データと、前記画素座標データとを対応付けて前記レジスタへ書き込む、
ことを特徴とする付記１５記載のデータ読み出し方法。
（付記１９）
前記レジスタは、画素毎に、画素データと、前記画素データに対応する画素座標データと、前記画素データを前記複数のプロセッサコアの何れかが使用中であるか否かを識別可能にする使用フラグデータとを保持し、
前記レジスタに保持されている使用フラグデータの中で前記複数のプロセッサコアの何れにも使用されていないと識別可能な使用フラグデータに対応する画素データと画素座標データとを保持するデータフィールドを書き込み先として選択し、
対応付けした前記画素データと前記画素座標データとを前記レジスタへ書き込む際には、書込み先として選択した前記データフィールドに書き込む、
ことを特徴とする付記１６又は１８記載のデータ読み出し方法。
（付記２０）
前記プロセッサコアが前記レジスタに保持されている画素データの使用を開始するとき、又は、前記プロセッサコアが前記レジスタに保持されている画素データの使用を終了したときに、前記画素データに対応する使用フラグデータが保持されているデータフィールドにおける、前記プロセッサコアに対応するビットのフィールドに、使用又は未使用に対応するビットデータをフラグとして書き込む、
ことを特徴とする付記１９記載のデータ読み出し方法。
【符号の説明】
【００９１】
１００      グラフィックスＬＳＩ
１１０      命令発行ユニット
１２０      プロセッサコア
１２１      命令検出機構
１２２      命令変換機構
１２３      演算ユニット
１３０      テクスチャユニット
１３１      テクスチャキャッシュ
１４０      共有レジスタ
１５０      共有レジスタ制御機構
１５１      テクスチャ座標検索機構
１５２      ペアリング機構
１５３      フラグ処理機構
１５４      ビット拡張機構
１５５      ビット分解機構
１５６      書き込みレジスタ選択機構
２００      グラフィックスメモリ
【図１】
0005648465.tif 000002
【図２】
0005648465.tif 000003
【図３】
0005648465.tif 000004
【図４】
0005648465.tif 000005
【図５】
0005648465.tif 000006
【図６】
0005648465.tif 000007
【図７】
0005648465.tif 000008
【図８】
0005648465.tif 000009
【図９】
0005648465.tif 000010
【図１０】
0005648465.tif 000011