(57)【特許請求の範囲】
【請求項１】
幾何学演算に必要なデータが保持される複数の演算用メモリと、前記演算用メモリに接続され、前記各演算用メモリに保持されたデータを用いて幾何学演算を実行する複数の演算ユニットとを有する演算装置と、
データメモリに格納された前記幾何学演算に必要なデータの読み出しアドレスを算出するアドレス生成器と、算出結果のアドレスに基づいて前記データメモリから入力したデータを型変換する型変換器と、前記演算装置の複数の演算ユニットに並列演算させる入力データ数が前記演算用メモリ数に満たない場合、自己が保持する一定値を前記演算用メモリに設定する補充用レジスタとを有する入力処理部を備え、
前記入力処理部は、入力データの型を指定する情報を保持するタイプレジスタと、入力データの個数を保持するサイズレジスタと、前記データメモリの格納順に応じて各データに規定した通し番号が計数されるカウンタと、前記データメモリにおける前記データの先頭アドレスを保持するポインタレジスタと、前記データメモリにおけるデータ間のアドレス間隔を保持するストライドレジスタとを備え、
前記型変換器は、前記タイプレジスタの内容に応じて入力データの型を変換し、
前記補充用レジスタは、前記サイズレジスタの内容から入力データ数が演算用メモリ数に満たない場合に自己が保持する値を前記演算用メモリに設定し、
前記アドレス生成器は、前記ポインタレジスタに保持された先頭アドレスに対し、前記カウンタと前記ストライドレジスタの値を用いて求めたアドレス間隔を加算することにより、所望のデータの読み出しアドレスを算出することを特徴とするラフィックスシステム。
【請求項２】
通し番号をインデックスデータとしてその番号順に格納したインデックスバッファの先頭アドレスを保持するインデックスポインタレジスタと、
カウンタと前記インデックスポインタレジスタの値を用いてインデックスアドレスを算出するインデックスアドレス生成器と、
アドレス生成器への入力を、前記インデックスアドレスに基づいてインデックスバッファから読み出されたインデックスデータと前記カウンタの出力とのいずれか一方に切り替える第１の切替器と、
前記アドレス生成器と前記インデックスアドレス生成器とのいずれか一方に前記カウンタからの出力先を切り替える第２の切替器とを備えたことを特徴とする請求項１記載のグラフィックスシステム。
【請求項３】
演算装置は、演算内容を指定する動作命令を保持する命令メモリと、前記命令メモリの保持内容に応じて演算ユニットによる演算を制御するシーケンサとを備えたことを特徴とする請求項１から請求項２のうちのいずれか１項記載のグラフィックスシステム。
【請求項４】
命令メモリをキャッシュとして動作させる外部命令メモリと、演算用メモリをキャッシュとして動作させる外部演算メモリとを備えたことを特徴とする請求項３記載のグラフィックスシステム。
【請求項５】
命令メモリ及びシーケンサを複数組備え、前記命令メモリと前記シーケンサの組毎の制御により演算ユニットに演算処理を実行させることを特徴とする請求項３又は請求項４記載のグラフィックスシステム。
【請求項６】
演算ユニットと接続し、その演算結果を用いてグラフィックス処理を実行するレンダリングコントローラと、
前記レンダリングコントローラによる処理結果を前記演算装置の演算ユニットによる処理対象として入力するデータ入力部とを備えたことを特徴とする請求項１から請求項５のうちのいずれか１項記載のグラフィックスシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、３次元グラフィックス処理を実行するＳＩＭＤ（Single Instruction／Multiple Data）型演算装置を備えたグラフィックスシステムに関するものである。
【背景技術】
【０００２】
３次元グラフィックス処理を実行する、従来のグラフィックスシステムとして、例えば特許文献１に開示される幾何学演算装置がある。この幾何学演算装置は、入力データを保持する入力メモリと、これに接続された複数の浮動小数点演算用メモリと、浮動小数点演算用メモリに接続されてＳＩＭＤ型に動作する浮動小数点ユニットと、演算に必要なデータをメモリに転送する制御と演算制御を行うシーケンサと、クリッピング計算を高速化するためのクリッピング状態コード生成器と、クリップの状態を記憶するクリップコードレジスタとを備え、入力メモリから取り出した演算に必要なデータをＳＩＭＤ型の演算器で並列演算することにより３次元グラフィックスの座標変換等の幾何学演算を高速に処理することができる。
【０００３】
【特許文献１】特許第３２０３１８０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来では、幾何学演算に際しメモリから単純にデータを読み込む構成になっていた。このため、３次元グラフィックスの頂点に関する座標データ、法線データ、カラーデータ等について、これらが個別の領域に設定され、頂点の並び順にデータを入力する場合においても、また頂点インデックス等を介してランダムにアクセスするような場合においても、高速にデータを入力することができなかった。
【０００５】
また、特許文献１の装置ではデータ入力部分をソフトウェアで記述する必要があり、インデックスが格納されているメモリのアドレスを計算により求め、これに基づいてインデックス値を取り出してから次に座標、法線、カラーなどの必要なデータが格納されているメモリのアドレスをそれぞれ算出する必要があった。
【０００６】
メモリから取り出したデータには、Ｆｌｏａｔ型、符号付３２ビット整数型、符号付１６ビット整数型等のようにデータにバリエーションがある。これに対して、特許文献１の装置では、このようなデータのバリエーションに応じてソフトウェアにより型変換を実行する必要があった。
【０００７】
また、座標データではＸ，Ｙ，Ｚ，Ｗという４つの座標を１組とするが、場合によってはＸ，Ｙ座標の値だけがメモリに格納され、Ｚ，Ｗ座標の値はデフォルト値としてＺ＝０、Ｗ＝１と決められていることがある。このような入力処理は複雑であり、ソフトウェアで頂点毎に実行する場合にはグラフィックスシステムの性能向上を妨げる要因になる。
【０００８】
この他、従来の装置では、命令メモリやローカルメモリを内部に持つため、機能を拡張する毎に回路規模が大きくなるという課題があった。
【０００９】
また、従来の装置は、シーケンサが一つのＳＩＭＤ型演算のみにサポートされており、実行ステージが長い命令を使用した場合に計算結果待ちの時間が無駄になっていた。さらに、整数演算と４つのＳＩＭＤ演算とを同時に実行できず、分岐処理等の整数演算処理とＳＩＭＤの浮動小数点演算を使用する数値演算処理とを並列処理できなかったため、これら演算処理を高速化できなかった。
【００１０】
特許文献１の幾何学演算装置はＳＩＭＤ型の構成をとっているため、３次元グラフィックスにおける一連の処理がグラフィックスパイプラインと呼ばれる順序に従って実行されるだけであった。近年のグラフィックス処理はプログラム可能な処理に移行しており、多くは頂点単位の幾何学処理を行うジオメトリエンジンに相当する頂点シェーダとレンダリング処理の一部をプログラム可能にしたフラグメントシェーダとから構成されている。また、携帯電話等の小型な組み込み向けのグラフィックスシステムにおいてもシェーダ化が進んでいる。しかしながら、頂点シェーダとフラグメントシェーダに対応可能な２つのプロセッサを搭載にはシステム規模が大きくなり過ぎるという課題があった。
【００１１】
この発明は、上記のような課題を解決するためになされたもので、システム規模を大きくすることなくデータ入力や演算処理の高速化を図ることができ、かつシェーダに容易に対応することができるグラフィックスシステムを得ることを目的とする。
【課題を解決するための手段】
【００１２】
この発明に係るグラフィックスシステムは、幾何学演算に必要なデータが保持される複数の演算用メモリと、前記演算用メモリに接続され、前記各演算用メモリに保持されたデータを用いて幾何学演算を実行する複数の演算ユニットとを有する演算装置と、データメモリに格納された前記幾何学演算に必要なデータの読み出しアドレスを算出するアドレス生成器と、算出結果のアドレスに基づいて前記データメモリから入力したデータを型変換する型変換器と、前記演算装置の複数の演算ユニットに並列演算させる入力データ数が前記演算用メモリ数に満たない場合、自己が保持する一定値を前記演算用メモリに設定する補充用レジスタとを有する入力処理部を備え、前記入力処理部は、入力データの型を指定する情報を保持するタイプレジスタと、入力データの個数を保持するサイズレジスタと、前記データメモリの格納順に応じて各データに規定した通し番号が計数されるカウンタと、前記データメモリにおける前記データの先頭アドレスを保持するポインタレジスタと、前記データメモリにおけるデータ間のアドレス間隔を保持するストライドレジスタとを備え、  前記型変換器は、前記タイプレジスタの内容に応じて入力データの型を変換し、前記補充用レジスタは、前記サイズレジスタの内容から入力データ数が演算用メモリ数に満たない場合に自己が保持する値を前記演算用メモリに設定し、前記アドレス生成器は、前記ポインタレジスタに保持された先頭アドレスに対し、前記カウンタと前記ストライドレジスタの値を用いて求めたアドレス間隔を加算することにより、所望のデータの読み出しアドレスを算出するものである。
【発明の効果】
【００１３】
この発明によれば、データの読み出し処理をソフトウェアで読み出しアドレスを計算することなく、アドレス生成器のハードウェア処理にて実行することができ、データ入力や演算処理を高速化することができるという効果がある。また、データの型変換を実行する専用のハードウェアである型変換器を設け、演算ユニットに並列演算させるデータの不足分を代替する初期値を演算用メモリに設定するので、データの型変換や不足分のデータの生成を高速に処理することができる。
【発明を実施するための最良の形態】
【００１４】
実施の形態１．
図１は、この発明の実施の形態１によるグラフィックスシステムの構成を示すブロック図である。実施の形態１によるグラフィックスシステム１は、主な構成要素としてＳＩＭＤ型演算装置（演算装置）２及び入力処理部３を有する。ＳＩＭＤ（Single Instruction／Multiple Data）型演算装置２は、特許文献１のように複数の浮動小数点演算器を含んで構成され、３次元グラフィックスの演算処理を行う。
【００１５】
入力処理部３は、ＳＩＭＤ型演算装置２と並列に動作してデータの読み出しアドレスを計算し、計算結果のアドレスに基づいてメモリから３次元グラフィックスの幾何学演算に必要なデータを入力する。ここで、入力処理部３は、入力したデータを型変換し、型変換したデータをＳＩＭＤ型演算装置２内の浮動小数点演算用メモリへ並列に入力する。そして、ＳＩＭＤ型演算装置２を構成する浮動小数点演算用のメモリ数よりも入力データが少ない場合、初期値を選択して浮動小数点演算用メモリに入力することによりデータ数を合わせる。
【００１６】
図中で頂点データと表記した外部メモリ（データメモリ）４は、３次元グラフィックスの描画オブジェクトの頂点データを格納するメモリである。この頂点データには、座標データとしてＸ，Ｙ，Ｚ，Ｗ座標、カラーデータとしてＲ，Ｇ，Ｂ，Ａ、テクスチャ座標としてＳ，Ｔ，Ｒ，Ｑ等の４つのパラメータが使用される。なお、外部メモリ４は、例えばバス５を介して入力処理部３に接続し、データの読み出しが可能である。
【００１７】
図２は、図１中のＳＩＭＤ型演算装置及び入力処理部の内部構成を示すブロック図である。図に示すＳＩＭＤ型演算装置２は、複数の浮動小数点演算用メモリとして、例えば４並列の浮動小数点演算用のローカルメモリ（演算用メモリ）ＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３を有し、その各々に浮動小数点演算器（演算ユニット）ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３が接続されており、さらに整数演算用のローカルメモリＩＬＭ、これに接続された整数演算器ＩＰＵ、命令メモリ９、シーケンサ１０を有して構成される。
【００１８】
命令メモリ９には、ＳＩＭＤ型の浮動小数点演算器ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３と整数演算器ＩＰＵを制御するための動作命令が保持される。シーケンサ１０は、命令メモリ９から読み出された命令に応じて、浮動小数点演算器ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３と整数演算器ＩＰＵによって並行してなされる、演算、ローカルメモリからのデータの読み出しや書き込み等の動作を制御する回路である。
【００１９】
レンダリングコントローラ６は、ＳＩＭＤ型演算装置２による演算結果を用いた３次元グラフィックス処理を実行する。バス７は、ローカルメモリＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３及びＩＬＭと入力処理部３とを結ぶグローバルバスである。バス８は、浮動小数点演算器ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３及び整数演算器ＩＰＵとレンダリングコントローラ６とを結ぶ出力バスである。
【００２０】
入力処理部３は、本発明に特有の構成要素であり、タイプレジスタ１１、型変換器１２、サイズレジスタ１３、初期値レジスタ１４、カウンタ１５、ポインタレジスタ１６、ストライドレジスタ１７及びアドレス生成器１８を含んで構成される。タイプレジスタ１１では、入力処理部３が入力するデータの型（タイプ）を特定する所定の値が保持される。データ型としては、例えば整数型、浮動小数点型、固定小数点型などがある。
【００２１】
型変換器１２は、タイプレジスタ１１が保持するデータの型に関するビット値に応じて入力したデータについて整数型、浮動小数点型、固定小数点型などの型変換を行う回路である。サイズレジスタ１３は、入力データのデータブロック毎の個数を保持するレジスタである。初期値レジスタ（補充用レジスタ）１４は初期値を保持するレジスタである。この初期値は、入力処理部３が入力したデータのデータブロック毎の個数がＳＩＭＤ型演算装置２のローカルメモリ数よりも少ない場合にその不足分を補うためにローカルメモリへ設定する所定の値である。
【００２２】
カウンタ１５は、外部メモリ４から取得する頂点データ番号を示す値が保持され、頂点データの読み出しに伴ってその番号が増減されるカウンタである。ポインタレジスタ１６は、外部メモリ４において頂点データが格納されるアドレスを保持するレジスタである。ストライドレジスタ１７は、外部メモリ４における頂点データの配置された間隔を保持するレジスタである。アドレス生成器１８は、ポインタレジスタ１６、ストライドレジスタ１７及びカウンタ１５のそれぞれに設定された値から外部メモリにおける頂点データのアドレスを算出する回路である。
【００２３】
次に動作について説明する。
３次元グラフィックスにおける頂点データは、座標データとしてＸ，Ｙ，Ｚ，Ｗ座標、カラーデータとしてＲ，Ｇ，Ｂ，Ａ、テクスチャ座標としてＳ，Ｔ，Ｒ，Ｑなど４つのパラメータが使用される。しかし、メモリ配置の効率化やメモリ転送量削減のため、４つのパラメータを使用せずＸ，Ｙ，Ｚを指定し、Ｗは例えば１に固定することがある。また、使用する変数の型を浮動小数点から１６ビット整数などに変更することでメモリの消費を抑えることがある。
【００２４】
頂点データを構成するデータとして、座標データと法線データを考える場合、頂点データは、図２中の外部メモリ４において例えば下記のように配置される。
図３及び図４は、頂点データを構成する座標データ及び法線データの外部メモリ上での配置例を示す図である。図３に示す例では、座標データと法線データを外部メモリ４の全く別の記憶領域にそれぞれ配置した場合を示している。また、図４では、座標データと法線データを同一の記憶領域に混在させた場合を示しており、例えば座標データと法線データを交互に配置している。
【００２５】
図３及び図４において、ＶＰｏｉｎｔｅｒは記憶領域における座標データのアドレスであり、ＮＰｏｉｎｔｅｒは記憶領域における法線データのアドレスである。また、ＶＳｔｒｉｄｅは、外部メモリ４における座標データの配置された間隔を示しており、図３のように各頂点データの座標データが交互に配置されている場合であれば、座標データを構成する変数データの個数に相当する。また、図４のように頂点データの座標データと法線データが交互に配置されている場合であれば、ＶＳｔｒｉｄｅは、法線データを挟んだ次の座標データまで間隔であり、法線データを構成する変数データの個数に相当する。
【００２６】
同様に、ＮＳｔｒｉｄｅは、外部メモリ４における法線データの配置された間隔を示しており、図３のように各頂点データの法線データが交互に配置されている場合であれば、法線データを構成する変数データの個数に相当する。また、図４のように頂点データの座標データと法線データが交互に配置されている場合であれば、ＮＳｔｒｉｄｅは、座標データを挟んだ次の法線データまで間隔であり、座標データを構成する変数データの個数に相当する。なお、座標データ及び法線データを構成する変数データは、例えば外部メモリのアドレスを構成する１アドレス単位で規定される記憶領域に配置される。
【００２７】
本発明は、上述のようにデータの配置やデータ型のバリエーションの組み合わせが多い中でデータ取り込み処理を高速化するものである。以下に具体例を挙げて説明する。
説明の前提として、ＳＩＭＤ型演算装置は、図２に示すように、４つの浮動小数点演算器ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３とこれらにそれぞれ接続するローカルメモリＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３で構成されているものとする。また、図３に示すように各頂点データの座標データのみを外部メモリ４の所定の領域に格納した場合において、指定したアドレスから頂点データが格納された順番で座標データを取り出していく動作を説明する。
【００２８】
先ず、外部メモリ４における座標データが格納されている領域のアドレスをポインタレジスタ１６に設定し、外部メモリ４に格納された何番目の頂点データから読み出すのかを示す値をカウンタ１５に設定する。例えば、ポインタレジスタ１６に設定したアドレスから座標データを逐次読み出す場合であれば、カウンタ１５に「０」を設定（つまり、最初の０番目の頂点データ）し、２番目の頂点データの座標データを読み出す場合は、カウンタ１５に「２」を設定する。
【００２９】
さらに、ストライドレジスタ１７には、１頂点データ分の座標データを構成する変数データの個数を設定する。例えば、１頂点データあたりＸ，Ｙ，Ｚ，Ｗの座標データのみが隙間なく設定されている場合、４つの変数データより「４」をＶＳｔｒｉｄｅとしてストライドレジスタ１７に設定する。この場合、座標データは４アドレス単位毎に外部メモリの記憶領域に配置される。
【００３０】
アドレス生成器１８では、カウンタ１５に設定されたｃｏｕｎｔｅｒ値、ポインタレジスタ１６に設定されたＶＰｏｉｎｔｅｒ値及びストライドレジスタ１７に設定されたＶＳｔｒｉｄｅ値に基づいて下記式（１）に従い、外部メモリ４から読み出すべき座標データのアドレスａｄｄを決定する。なお、＊は乗算を示す。
ａｄｄ＝ＶＰｏｉｎｔｅｒ＋ＶＳｔｒｉｄｅ＊ｃｏｕｎｔｅｒ      （１）
【００３１】
このように、アドレス生成器１８は、ｃｏｕｎｔｅｒ値とＶＳｔｒｉｄｅ値を乗算する乗算器と、この乗算結果とＶＰｏｉｎｔｅｒ値を加算する加算器とから構成することができる。つまり、ポインタレジスタ１６に最初に読み出すデータのアドレスを設定することにより、アドレス生成器１８のハードウェア処理で次回のデータのアドレスが逐次算出される。
【００３２】
入力処理部３は、アドレス生成器１８で算出されたアドレスにより示されるメモリから座標データをサイズレジスタ１３に設定される個数分だけ読み出し、型変換器１２に入力する。型変換器１２では、入力データに対してタイプレジスタ１１で示される型変換が行われる。例えば、タイプレジスタ１１に設定された有効ビット幅となるようにビット拡張する型変換や、１６ビット固定小数点から浮動小数点への変換等が実行される。型変換の方法については既存の技術を用いる。
【００３３】
ここで、サイズレジスタ１３に設定された値が「４」であり４データを取り出す場合、型変換後のデータが、バス７を介してＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３へ各々入力される。また、サイズレジスタ１３で設定されている値が４未満の場合、入力すべきデータがないＦＬＭに対して初期値レジスタ１４に設定された初期値を入力する。
【００３４】
ＦＬＭ０〜ＦＬＭ３に入力されたデータは、命令メモリ９に設定された命令で指定される演算をシーケンサ１０により制御してＦＰＵ０〜ＦＰＵ３が並行に処理を実行する。次の頂点データの座標データを読み出す場合、カウンタ１５の設定値がインクリメントされ、アドレス生成器１８において次の座標データの場所を示すアドレスが算出される。これにより、上述と同様の処理にて次の頂点データの座標データが読み出され、ＳＩＭＤ型演算装置２により演算処理される。この処理結果は、バス８を介してレンダリングコントローラ６に入力され、ＳＩＭＤ型演算装置２による３次元グラフィックスの演算結果を用いた処理が実行される。
【００３５】
なお、上記説明では頂点データの座標データのみを読み出す場合を例を挙げたが、座標データ以外の頂点データである、法線データ等を読み出す場合には、タイプレジスタ１１、型変換器１２、サイズレジスタ１３、初期値レジスタ１４、カウンタ１５、ポインタレジスタ１６、ストライドレジスタ１７及びアドレス生成器１８で構成される入力処理部３を、頂点データを構成するデータのバリエーション毎に複数用意する。これにより、それぞれの頂点データの読み出しに対応することができる。
【００３６】
例えば、図４のように頂点データの座標データと法線データが交互に配置されている場合を説明する。この場合、座標データについての入力処理部３と法線データについての入力処理部３が設けられ、これらのポインタレジスタ１６には法線データが格納されているアドレスが設定され、カウンタ１５には何番目の頂点データから読み出すのかを示す値が設定される。
【００３７】
ここで、座標データのみの場合と異なり、座標データについての入力処理部３のストライドレジスタ１７には、１頂点データ分の法線データを構成する変数データの個数がＶＳｔｒｉｄｅとして設定される。また、法線データについての入力処理部３のストライドレジスタ１７には、１頂点データ分の座標データを構成する変数データの個数がＮＳｔｒｉｄｅとして設定される。
【００３８】
これにより、各入力処理部３のアドレス生成器１８は、カウンタ１５に設定されたｃｏｕｎｔｅｒ値、ポインタレジスタ１６の設定値及びストライドレジスタ１７の設定値に基づいて上記式（１）に従い、外部メモリから読み出すべき座標データ及び法線データのアドレスａｄｄをそれぞれ決定する。以降の処理は、座標データのみの場合と同様である。
【００３９】
以上のように、この実施の形態１によれば、幾何学演算に必要なデータが保持されるローカルメモリＦＬＭ０〜ＦＬＭ３と、ＦＬＭ０〜ＦＬＭ３に保持されたデータを用いて幾何学演算を実行する演算器ＦＰＵ０〜ＦＰＵ３とを有するＳＩＭＤ型演算装置２と、データの読み出しアドレスを算出するアドレス生成器１８と、入力データの型を変換する型変換器１２と、ＦＰＵ０〜ＦＰＵ３に並列演算させる入力データ数がＦＬＭ数に満たない場合にＦＬＭに設定される初期値を保持する初期値レジスタ１４とを備えた入力処理部３とを備えるので、３次元グラフィックスの頂点データとして座標、法線、カラー、４つのマルチテクスチャ対応のテクスチャ座標、マトリックスパレット、マトリックスウエイト、点サイズなど１０種類にも及ぶデータの読み出し処理をソフトウェアで読み出しアドレスを計算することなく、アドレス生成器１８のハードウェア処理により高速化することができる。
【００４０】
また、タイプレジスタ１１の設定値に基づいて型変換を実行する専用のハードウェアである型変換器１２やサイズレジスタ１３の設定値に基づいて不足分データを代替する初期値をＦＬＭに設定する専用のハードウェアである初期値レジスタ１４を設けたので、データの型変換や不足分のデータの生成を高速に処理することができる。
【００４１】
上述の構成で、データ読み出しの終了に伴ってカウンタ１５をインクリメントして次のデータの読み出し処理を実行することにより、ソフトウェアによるグラフィックス処理とデータ読み出し処理を並列して動作させることが可能になり処理を高速化できる。
【００４２】
実施の形態２．
上記実施の形態１では取り込みデータを順番に取り込む場合を示したが、本実施の形態２は頂点データを読み出す順番を格納したインデックスバッファを設け、インデックスバッファで示される頂点データを取り出すものである。
【００４３】
図５は、この発明の実施の形態２によるグラフィックスシステムの構成を示すブロック図である。図中でインデックスデータと表記したインデックスバッファ１９は、頂点データの読み出し順を示すインデックスデータを格納し、バス５を介して実施の形態２による入力処理部３Ａからデータ読み出しが可能である。実施の形態２による入力処理部３Ａは、上記実施の形態１で示した構成に加え、インデックスポインタレジスタ２０、インデックスアドレス生成器２１及び切替器２２，２３を有する。
【００４４】
インデックスポインタレジスタ２０は、頂点データを読み出す順番を格納したインデックスバッファの先頭アドレスを保持するレジスタである。インデックスアドレス生成器２１は、インデックスポインタレジスタ２０の設定値とカウンタ１５のカウント値に基づいてインデックスバッファのアドレスを生成する回路である。
【００４５】
切替器（第１の切替器）２２は、アドレス生成器１８への入力としてインデックスバッファ１９のインデックスデータとカウンタ１５の設定値のいずれかに切り替える回路である。また、切替器（第２の切替器）２３は、カウンタ１５の出力先をインデックスアドレス生成器２１と切替器２２のいずれかに切り替える回路である。なお、図２と同一又はこれに相当する構成要素には同一符号を付し重複する説明を省略している。
【００４６】
上述のように、本実施の形態２では、何番目の頂点データを読み出すかを示す情報を、カウンタ１５によるシーケンシャルな順番だけでなく、インデックスバッファ１９を使ったランダムな指定を可能にしている。
【００４７】
次に動作について説明する。
先ず、インデックスバッファ１９のインデックスデータをアドレス生成器１８へ入力するように切替器２２のセレクタを設定し、切替器２３のセレクタをインデックスアドレス生成器２１へ出力するように設定する。次に、インデックスバッファ１９の開始アドレスをｉＰｏｉｎｔｅｒとしてインデックスポインタレジスタ２０に設定し、参照開始するインデックスバッファ番号をｃｏｕｎｔｅｒ値としてカウンタ１５に設定する。
【００４８】
インデックスアドレス生成器２１は、カウンタ１５の設定値であるｃｏｕｎｔｅｒとインデックスポインタレジスタ２０の値であるｉＰｏｉｎｔｅｒとの値から下記式（２）に従い、インデックスバッファ１９のアドレスｉｎｄｅｘ＿ａｄｄを計算する。
ｉｎｄｅｘ＿ａｄｄ＝ｉＰｏｉｎｔｅｒ＊ｃｏｕｎｔｅｒ      ・・・（２）
【００４９】
インデックスアドレス生成器２１が算出したアドレスｉｎｄｅｘ＿ａｄｄに基づいて、インデックスバッファ１９から読み出されたインデックス値ｉｎｄｅｘは、切替器２２に入力される。切替器２２は、入力したインデックス値ｉｎｄｅｘをアドレス生成器１８へ出力する。これにより、アドレス生成器１８は、下記式（３）に従って外部メモリ４における頂点データのアドレスを計算する。以降の動作は、上記実施の形態１と同様である。
ａｄｄ＝ＶＰｏｉｎｔｅｒ＋ＶＳｔｒｉｄｅ＊ｉｎｄｅｘ      ・・・（３）
【００５０】
以上のように、この実施の形態２によれば、入力処理部３Ａが、インデックスポインタレジスタ２０の設定値とカウンタ１５のカウント値に基づいてインデックスバッファのアドレスを生成するインデックスアドレス生成器２１、アドレス生成器１８への入力としてインデックスバッファ１９のインデックスデータとカウンタ１５の設定値のいずれかに切り替える切替器２２、及びカウンタ１５の出力先をインデックスアドレス生成器２１と切替器２２のいずれかに切り替える切替器２３を有する。
【００５１】
これにより、２つのメモリ（頂点データを格納する外部メモリ４、インデックスバッファ１９）からのデータ読み出しをハードウェア処理にて実行させることができ、頂点データの読み出しをカウンタ１５の設定値によるシーケンシャルな順番だけでなく、インデックスバッファ１９を使ってランダムに指定することができる。
【００５２】
また、上記実施の形態１と同様に、タイプレジスタ１１の設定値に基づいて型変換を実行する専用のハードウェアである型変換器１２やサイズレジスタ１３の設定値に基づいて不足分データを代替する初期値をＦＬＭに設定する専用のハードウェアである初期値レジツタ１４を設けたので、データの型変換や不足分のデータの生成を高速に処理することができる。
【００５３】
上述の構成で、データ読み出しの終了に伴ってカウンタ１５をインクリメントして次のデータの読み出し処理を実行することにより、ソフトウェアによるグラフィックス処理とデータ読み出し処理を並列して動作させることが可能になり処理を高速化できる。
【００５４】
実施の形態３．
図６は、この発明の実施の形態３によるグラフィックスシステムの構成を示すブロック図である。外部命令メモリ２４は、命令メモリ９を内部キャッシュメモリとして機能する外付けメモリである。また、外部命令メモリ２４は、バス５を介して入力処理部３からデータの読み出し及び書き込みが可能である。
【００５５】
外部演算メモリ２５は、ＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３，ＩＬＭを内部キャッシュメモリとして機能する外付けメモリである。この外部演算メモリ２５は、バス５を介して入力処理部３からデータの読み出し及び書き込みが可能である。なお、図２と同一又はこれに相当する構成要素には同一符号を付し重複する説明を省略している。
【００５６】
ここで、命令メモリ９とローカルメモリＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３，ＩＬＭで通常の演算処理において使用される記憶容量をキャッシュ容量とする。そして、外部命令メモリ２４と外部演算メモリ２５には、通常の演算処理に加え、付加的な処理や希な処理などにおける動作命令や処理対象データを格納する。
【００５７】
以上のように、この実施の形態３によれば、命令メモリ９を内部キャッシュメモリとして機能する外部命令メモリ２４と、ＦＬＭ０，ＦＬＭ１，ＦＬＭ２，ＦＬＭ３，ＩＬＭを内部キャッシュメモリとして機能する外部演算メモリ２５とを備えたので、通常の３次元グラフィックス処理の性能劣化は発生せず、付加的な処理や希な処理などを実行する場合に命令メモリ９の容量やローカルメモリＦＬＭ，ＩＬＭの容量を意識することなく機能を拡張することができる。
【００５８】
実施の形態４．
図７は、この発明の実施の形態４によるグラフィックスシステムの構成を示すブロック図である。再データ入力部（データ入力部）２６は、バス８を介して浮動小数点演算器ＦＰＵ０〜ＦＰＵ３に接続されたレンダリングコントローラ６からの出力データをローカルメモリＦＬＭ０〜ＦＬＭ３に再び入力するための回路である。この再データ入力部２６により、本実施の形態４によるグラフィックスシステム１を、組み込み用の３次元グラフィックスのシェーダとして利用することが可能となる。なお、図２と同一又はこれに相当する構成要素には同一符号を付し重複する説明を省略している。
【００５９】
３次元グラフィックスの処理は、頂点単位に座標変換やライティング計算を行う幾何学演算処理と、塗りつぶすピクセル単位に色補間、テクスチャ付けを行うフラグメント処理に分けることができる。これらの処理は、グラフィックスライブラリ毎に決められた処理で実行されていたが、近年これらの処理をプログラム化してユーザが自由に処理を記述できる傾向にある。このプログラム可能な処理を実現する部分はシェーダと一般に呼ばれている。実際にはシェーダは、アセンブラや高級言語によって記述されたソースをコンパイルあるいはアセンブルしたコードを実行することで実現される。
【００６０】
本実施の形態４によるグラフィックスシステム１は、幾何学演算を行うことを目的としているため、頂点シェーダプログラムの動作命令を命令メモリ９に保持することで容易に対応可能である。上述した課題に挙げたように、携帯電話等の小型な組み込み向けの３次元グラフィックスの場合、頂点シェーダに加えてフラグメントシェーダを搭載することは回路規模的に難しい。
【００６１】
これに対して、本実施の形態４によるグラフィックスシステム１は、レンダリングコントローラ６から出力されるピクセル毎のデータを、再データ入力部２６によりグラフィックスシステム１に再度取り込むことを可能にしたことにより、頂点シェーダとフラグメントシェーダに対応することができる。
【００６２】
次に動作について説明する。
図８は実施の形態４によるグラフィックスシステムの動作を示すフローチャートであり、図９は実施の形態４によるグラフィックスシステムとレンダリングコントローラの動作関係を説明するためのブロック図である。図９に示すように、本実施の形態４によるグラフィックスシステム１は、幾何学演算処理を実行する頂点シェーダとして動作する。
【００６３】
先ず、グラフィックスシステム１の入力処理部３は、上記実施の形態１と同様な処理により、バス５を介して外部メモリ４から頂点データを入力する（ステップＳＴ１）。この頂点データは、ＳＩＭＤ型演算装置２に入力され、頂点単位の座標変換やライティング演算等の幾何学処理が実行される（ステップＳＴ２）。
【００６４】
この後、図９に示すように、ＳＩＭＤ型演算装置２による頂点毎の演算結果が、バス８を介してレンダリングコントローラ６に設定される。レンダリングコントローラ６では、例えば三角形を描画する場合であれば、ＳＩＭＤ型演算装置２からレンダリングコントローラ６へ三角形の３頂点のデータが逐一設定され、これら３頂点で構成される三角形の内部のピクセルを生成するラスタライズ処理が実行される。
【００６５】
再データ入力部２６は、レンダリングコントローラ６によるラスタライズ処理結果のピクセル情報である座標、カラー、テクスチャ座標等のデータを、バス７を介してグラフィックスシステム１にピクセル単位で入力する。グラフィックスシステム１のＳＩＭＤ型演算装置２は、入力したラスタライズ処理結果に基づいて、上述した３頂点の三角形内を塗りつぶすピクセル単位の色補間やテクスチャ付けを行うフラグメント処理を実行する（ステップＳＴ３）。１ピクセルの処理が終了すると、その処理結果はバス８を介してレンダリングコントラーラ６に入力される。レンダリングコントラーラ６では、図９に示すように、入力した処理結果に基づいてフレームメモリへの描画処理を実行する。
【００６６】
次に、グラフィックスシステム１のＳＩＭＤ型演算装置２は、三角形を構成する全ピクセル分を処理したか否かを判定し（ステップＳＴ４）、未処理のピクセルがあれば、ステップＳＴ３の処理に戻って再データ入力部２６によりレンダリングコントローラ６から次の１ピクセルのラスタライズ処理結果を読み込みフラグメント処理を実行する。このピクセル単位のフラグメント処理結果が、バス８を介してレンダリングコントラーラ６に逐次入力され、フレームメモリへの描画処理が実行される。
【００６７】
一方、三角形を構成する全ピクセルの処理を完了すると、ＳＩＭＤ型演算装置２は、外部メモリ４における処理対象となる全ての頂点データを処理したか否かを判定し（ステップＳＴ５）、次に処理すべき頂点がある場合であれば、ステップＳＴ１の処理に戻って入力処理部３によりその頂点データを外部メモリ４から読み込んで幾何学演算処理を行う。また、処理対象の頂点がなければ処理を終了する。このような処理を繰り返すことで、頂点シェーダとフラグメントシェーダに対応することが可能になる。
【００６８】
以上のように、この実施の形態４によれば、レンダリングコントローラ６から出力されるピクセル毎のデータをグラフィックスシステム１に再度取り込む再データ入力部２６を設けたので、レンダリングコントローラ６を別個のプロセッサで実現し、本実施の形態４によるグラフィックスシステム１との間でのデータ送受が可能となったことから、組み込み用の３次元グラフィックスのシェーダとして処理をレンダリングコントローラ６との分散して実行することができる。これにより、回路規模を大きくすることなく、本実施の形態４によるグラフィックスシステム１を、組み込み用の３次元グラフィックスのシェーダとして利用することが可能となる。
【００６９】
実施の形態５．
本実施の形態５は、上記実施の形態４のグラフィックスシステム１に命令メモリとシーケンサをさらに追加することで、複数のＦＰＵを各命令メモリ及びシーケンサ毎のグループに分けて動作させるようにしたものである。
【００７０】
図１０は、この発明の実施の形態５によるグラフィックスシステムの構成を示すブロック図である。実施の形態５のＳＩＭＤ型演算装置２Ａは、上記実施の形態４で示した構成に命令メモリ９ａとシーケンサ１０ａを追加している。命令メモリ９ａは、上記実施の形態１と同様に、ＳＩＭＤ型の浮動小数点演算器ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３と整数演算器ＩＰＵを制御するための動作命令が保持される。また、シーケンサ１０ａも、上記実施の形態１と同様に、命令メモリ９ａから読み出された命令に応じて、浮動小数点演算器ＦＰＵ０，ＦＰＵ１，ＦＰＵ２，ＦＰＵ３と整数演算器ＩＰＵにより並行してなされる、演算、ローカルメモリからのデータの読み出しや書き込み等の動作を制御する。なお、図７と同一又はこれに相当する構成要素には同一符号を付し重複する説明を省略している。
【００７１】
次に動作について説明する。
命令メモリ９とシーケンサ１０、命令メモリ９ａとシーケンサ１０ａによって複数のＦＰＵを２つの処理グループに分けて動作させる例を説明する。ここでは、幾何学処理とフラグメント処理を実行するＦＰＵを分離させて並列して動作させる。
【００７２】
先ず、グラフィックスシステム１の入力処理部３は、上記実施の形態１と同様な処理により、バス５を介して外部メモリ４から頂点データを入力する。この頂点データは、ＳＩＭＤ型演算装置２に入力される。ＳＩＭＤ型演算装置２では、例えば命令メモリ９に格納された動作命令に従うシーケンサ１０の制御の下で、頂点単位の座標変換やライティング演算等の幾何学処理が実行される。
【００７３】
この後、ＳＩＭＤ型演算装置２による頂点毎の演算結果が、バス８を介してレンダリングコントローラ６に設定される。レンダリングコントローラ６では、例えば三角形を描画する場合であれば、ＳＩＭＤ型演算装置２からレンダリングコントローラ６へ三角形の３頂点のデータが逐一設定され、これら３頂点で構成される三角形の内部のピクセルを生成するラスタライズ処理が実行される。
【００７４】
再データ入力部２６は、レンダリングコントローラ６によるラスタライズ処理結果のピクセル情報である座標、カラー、テクスチャ座標等のデータを、バス７を介してグラフィックスシステム１にピクセル単位で入力する。グラフィックスシステム１のＳＩＭＤ型演算装置２は、入力したラスタライズ処理結果に基づいて、例えば命令メモリ９ａ及びシーケンサ１０ａによりフラグメント処理を実行する。１ピクセルの処理が終了すると、その処理結果はバス８を介してレンダリングコントラーラ６に入力される。レンダリングコントラーラ６では、入力した処理結果に基づいてフレームメモリへの描画処理を実行する。
【００７５】
次に、グラフィックスシステム１のＳＩＭＤ型演算装置２では、命令メモリ９ａに格納された動作命令に従うシーケンサ１０ａの制御の下、三角形を構成する全ピクセル分を処理したか否かを判定し、未処理のピクセルがあれば、再データ入力部２６によりレンダリングコントローラ６から次の１ピクセルのラスタライズ処理結果を読み込みフラグメント処理を実行する。このピクセル単位のフラグメント処理結果が、バス８を介してレンダリングコントラーラ６に逐次入力され、フレームメモリへの描画処理が実行される。
【００７６】
一方、三角形を構成する全ピクセルの処理を完了すると、ＳＩＭＤ型演算装置２は、命令メモリ９に格納された動作命令に従うシーケンサ１０の制御の下、外部メモリ４における処理対象となる全ての頂点データを処理したか否かを判定し、次に処理すべき頂点がある場合であれば、入力処理部３によりその頂点データを外部メモリ４から読み込んで幾何学演算処理を行う。また、処理対象の頂点がなければ処理を終了する。このような処理を繰り返すことで、頂点シェーダとフラグメントシェーダに対応することが可能になる。
【００７７】
以上のように、この実施の形態５によれば、ＳＩＭＤ型演算装置２Ａが、命令メモリ９，９ａとシーケンサ１０，１０ａを備え、命令メモリ９及びシーケンサ１０に対して、命令メモリ９ａ及びシーケンサ１０ａとによってＦＰＵ０〜ＦＰＵ３を２つの処理内容（例えば、幾何学処理とフラグメント処理）に分けて並列して動作させるので、処理の高速化を実現することができる。
【図面の簡単な説明】
【００７８】
【図１】この発明の実施の形態１によるグラフィックスシステムの構成を示すブロック図である。
【図２】図１中のＳＩＭＤ型演算装置及び入力処理部の内部構成を示すブロック図である。
【図３】頂点データを構成する座標データ及び法線データの外部メモリ上での配置例を示す図である。
【図４】頂点データを構成する座標データ及び法線データの外部メモリ上での配置例を示す図である。
【図５】この発明の実施の形態２によるグラフィックスシステムの構成を示すブロック図である。
【図６】この発明の実施の形態３によるグラフィックスシステムの構成を示すブロック図である。
【図７】この発明の実施の形態４によるグラフィックスシステムの構成を示すブロック図である。
【図８】実施の形態４によるグラフィックスシステムの動作を示すフローチャートである。
【図９】実施の形態４によるグラフィックスシステムとレンダリングコントローラの動作関係を説明するためのブロック図である。
【図１０】この発明の実施の形態５によるグラフィックスシステムの構成を示すブロック図である。
【符号の説明】
【００７９】
１  グラフィックスシステム、２  ＳＩＭＤ型演算装置（演算装置）、３  入力処理部、４  頂点データ（外部メモリ、データメモリ）、５，７，８  バス、６  レンダリングコントローラ、９，９ａ  命令メモリ、１０，１０ａ  シーケンサ、１１  タイプレジスタ、１２  型変換器、１３  サイズレジスタ、１４  初期値レジスタ（補充用レジスタ）、１５  カウンタ、１６  ポインタレジスタ、１７  ストライドレジスタ、１８  アドレス生成器、１９  インデックスバッファ、２０  インデックスポインタレジスタ、２１  インデックスアドレス生成器、２２，２３  切替器（第１の切替器、第２の切替器）、２４  外部命令メモリ、２５  外部演算メモリ、２６  再データ入力部（データ入力部）。
【図１】
0004749824.tif 000002
【図２】
0004749824.tif 000003
【図３】
0004749824.tif 000004
【図４】
0004749824.tif 000005
【図５】
0004749824.tif 000006
【図６】
0004749824.tif 000007
【図７】
0004749824.tif 000008
【図８】
0004749824.tif 000009
【図９】
0004749824.tif 000010
【図１０】
0004749824.tif 000011