(57)【要約】【課題】レジスタ、演算部などを備えたデータ処理部において、効率的なデータ処理および実装面積の削減を実現した構成を提供する。【解決手段】レジスタ、演算部などを備えたデータ処理部において、複数の命令テーブルの切り替えや命令の多重化により効率的に命令を実行し、またダブルバッファ構成とした入出力レジスタを利用したデータ格納制御により入出力のオーバーヘッドや命令のレイテンシの解消を図り処理の高速化を実現した。本構成により、命令の圧縮・伸長によるバスバンド幅、外部ＩＯ、メモリ容量の小型化が実現され、データ処理部を構成するＬＳＩの論理回路の実装面積の削減、さらに消費電力の低減が実現される。【選択図】図１
2008299475.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であり、
オペランドを入力する入力レジスタと、
前記オペランドを適用した演算を実行する演算実行部と、
データ処理における設定情報（Ｃｏｎｆｉｇ）と命令テーブルに格納されたデータ処理プログラムに基づいてデータ処理制御を実行する制御部と、
を有するデータ処理部を備え、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記制御部は、プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行う構成であることを特徴とする情報処理装置。
【請求項２】
前記制御部は、
分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行う構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御部は、
前記命令テーブルに記録された１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記制御部は、
前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記制御部は、
１つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行う構成であることを特徴とする請求項３に記載の情報処理装置。
【請求項６】
前記制御部は、
前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて１つのニーモニックに対応する同一コードの繰り返し回数を決定する構成であることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記制御部は、
多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成する構成であることを特徴とする請求項３に記載の情報処理装置。
【請求項８】
前記制御部は、
順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得する構成であることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、
前記制御部の制御に基づいて前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行う構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記情報処理装置は、さらに、
データ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、
前記制御部の制御に基づいて前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行う構成であることを特徴とする請求項１に記載の情報処理装置。
【請求項１１】
前記データ処理部は、
３ＤＣＧ処理およびＣＯＤＥＣ処理を実行する構成であることを特徴とする請求項１〜１０いずれかに記載の情報処理装置。
【請求項１２】
前記演算実行部は、
並列処理可能な複数の演算部によって構成され、３ＤＣＧ処理およびＣＯＤＥＣ処理において、各処理に応じた入力データを適用した並列演算を実行する構成であることを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記演算実行部は、
３ＤＣＧ処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理の入力値（ｘ，ｙ，ｚ，ｗ）を各々利用した並列演算と、
３ＤＣＧ処理におけるフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理の入力値（ｒ，ｇ，ｂ，ａ）を各々利用した並列演算と、
ＣＯＤＥＣ処理におけるＤＣＴ処理の入力値（ａ０，ａ１，ａ２，ａ３）を各々利用した並列演算を切り替えて実行する構成であることを特徴とする請求項１１に記載の情報処理装置。
【請求項１４】
情報処理装置において実行する情報処理方法であり、
制御部が、予め設定された設定情報（Ｃｏｎｆｉｇ）と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行するデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行うステップを含むことを特徴とする情報処理方法。
【請求項１５】
前記データ処理ステップは、
分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行うステップを含むことを特徴とする請求項１４に記載の情報処理方法。
【請求項１６】
前記データ処理ステップは、
前記命令テーブルに記録された１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする請求項１４に記載の情報処理方法。
【請求項１７】
前記データ処理ステップは、
前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする請求項１６に記載の情報処理方法。
【請求項１８】
前記データ処理ステップは、
１つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行うステップを含むことを特徴とする請求項１６に記載の情報処理方法。
【請求項１９】
前記データ処理ステップは、
前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて１つのニーモニックに対応する同一コードの繰り返し回数を決定するステップを含むことを特徴とする請求項１８に記載の情報処理方法。
【請求項２０】
前記データ処理ステップは、
多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成するステップを含むことを特徴とする請求項１６に記載の情報処理方法。
【請求項２１】
前記データ処理ステップは、
順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得するステップを含むことを特徴とする請求項２０に記載の情報処理方法。
【請求項２２】
前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、
前記制御部は、前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行うことを特徴とする請求項１４に記載の情報処理方法。
【請求項２３】
前記情報処理装置は、さらにデータ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、
前記制御部は、前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行うことを特徴とする請求項１４に記載の情報処理方法。
【請求項２４】
前記データ処理ステップは、
３ＤＣＧ処理およびＣＯＤＥＣ処理を実行するステップであることを特徴とする請求項１４〜２３いずれかに記載の情報処理方法。
【請求項２５】
前記データ処理ステップは、
並列処理可能な複数の演算部によって構成され演算実行部において、３ＤＣＧ処理およびＣＯＤＥＣ各処理に応じた入力データを適用した並列演算を実行するステップを含むことを特徴とする請求項２４に記載の情報処理方法。
【請求項２６】
前記データ処理ステップは、
並列処理可能な複数の演算部によって構成され演算実行部において、
３ＤＣＧ処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理の入力値（ｘ，ｙ，ｚ，ｗ）を各々利用した並列演算と、
３ＤＣＧ処理におけるフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理の入力値（ｒ，ｇ，ｂ，ａ）を各々利用した並列演算と、
ＣＯＤＥＣ処理におけるＤＣＴ処理の入力値（ａ０，ａ１，ａ２，ａ３）を各々利用した並列演算を切り替えて実行するステップを含むことを特徴とする請求項２４に記載の情報処理方法。
【請求項２７】
情報処理装置においで情報処理を実行させるコンピュータ・プログラムであり、
制御部に、予め設定された設定情報（Ｃｏｎｆｉｇ）と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行させるデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行わせるステップを含むことを特徴とするコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、例えば３ＤＣＧやＣＯＤＥＣ処理を伴う３次元グラフィック処理を行なう情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【０００２】
３ＤＣＧ（３−Ｄｉｍｅｎｓｉｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｇｒａｐｈｉｃｓ）技術は、コンピュータ内部に格納されている３次元形状のデータを座標変換や陰影付けを行うことにより視覚的にわかりやすく表示する役割を果たし、ビデオゲームやユーザーインターフェースなどで幅広く活用されている。また、画像ＣＯＤＥＣ処理は、コンピュータ内部に格納されている圧縮された画像を伸長し表示する処理や、その逆処理としての画像圧縮処理であり、デジタルビデオカメラ、デジタルスチルカメラ、携帯電話などで画像データを表示または保存する上で幅広く活用されている。
【０００３】
このようにビデオゲーム、デジタルスチルカメラ、デジタルカメラ、携帯電話などの様々なデジタル機器において、３ＤＣＧおよび画像ＣＯＤＥＣ処理は頻繁に活用される。この３ＤＣＧ処理やＣＯＤＥＣ処理を実行する一般的なハードウェア構成例を図２７に示す。
【０００４】
図２７に示す例は、ＣＰＵ１１、ＤＳＰ１２、ＲＡＭ１３、ＲＯＭ１４、外部ＩＦ１５に、さらに、各処理機能毎のメディア処理ブロック２０、例えば図に示す例では、ＪＰＥＧに対応するＣＯＤＥＣ処理を実行するＪＰＥＧ処理ブロック２１、ＭＰＥＧに対応するＣＯＤＥＣ処理を実行するＭＰＥＧ処理ブロック２２、３ＤＣＧ機能を実行する３ＤＣＧ処理ブロック２３を設定した例を示している。
【０００５】
ＪＰＥＧ処理ブロック２１、ＭＰＥＧ処理ブロック２２、３ＤＣＧ処理ブロック２３は、各処理に応じた専用の処理回路を有している。なお、このような専用処理ブロックは機能ＩＰ（Ｉｎｔｅｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）と呼ばれる。
【０００６】
このような機能ＩＰ（専用処理ブロック）を用いず、高速の汎用ＣＰＵによってソフトウェア処理を行うという手法も存在するが、一般的に画像の描画処理はリアルタイム性が求められるために、通常デジタル機器に搭載されるＣＰＵでは能力的に不足する。このため、専用の処理回路を採用するのが一般的であるが、この場合、それぞれの機能ＩＰ（専用処理ブロック）を搭載するためにＬＳＩ上の面積が増大するという問題が発生する。
【０００７】
それでも近年までは、各機能ＩＰは性能要求が現在に比べると低く、機能毎に論理回路を搭載してもあまり問題とはならなかったが、３ＤＣＧにおいてはその表現をより豊かにするためのデータ処理が求められている。例えばシェーダ（Ｓｈａｄｅｒ）と呼ばれるプログラムによる陰影付け処理を施してより豊かな表現が行われるようになっている。シェーディングは３ＤＣＧにおける陰影付けの手法であり、例えば面を構成する頂点の明るさを計算し、各点の明るさを頂点の明るさの線形補間によって求めるといった処理により陰影付けが行われる。この他にも３ＤＣＧは性能・機能要求ともに高度になってきている。また、画像ＣＯＤＥＣもＭＰＥＧ−２−＞ＭＰＥＧ−４−＞ＭＰＥＧ−４ＡＶＣ／Ｈ．２６４のように、コーデックのアルゴリズムがより複雑かつ多様になってきている。
【０００８】
３ＤＣＧおよび画像ＣＯＤＥＣの一般的な処理構成について、図２８、図２９を参照して説明する。３ＤＣＧの処理を代表的なＡＰＩであるＯｐｅｎＧＬを例にして説明する。図２８は、ＯｐｅｎＧＬ  ２．０  Ｏｖｅｒｖｉｅｗ  ２００３  ３Ｄｌａｂｓ，Ｉｎｃに紹介されている３ＤＣＧの処理構成である。
【０００９】
メモリ３１上から、あらかじめ用意されているオブジェクト座標系の頂点情報（Ｖｅｒｔｉｃｅｓ）が頂点プロセッサ（Ｖｅｒｔｅｘ  Ｐｒｏｃｅｓｓｏｒ）３２に入力され、頂点プロセッサ（Ｖｅｒｔｅｘ  Ｐｒｏｃｅｓｓｏｒ）３２は予め用意されたプログラムで頂点処理を行い、クリップ座標系に設定した頂点情報を出力する。その結果は、頂点情報処理実行部３５，３６において、Ｐｒｉｍｉｔｉｖｅ  Ａｓｓｅｍｂｌｙ、Ｃｌｉｐ、Ｐｒｏｊｅｃｔ  Ｖｉｅｗｐｏｒｔ  Ｃｕｌｌ等の処理を実行した後、ラスタライズ（Ｒａｓｔｅｒｉｚｅ）３７が行われる。
【００１０】
ラスタライズ（Ｒａｓｔｅｒｉｚｅ）された結果のフラグメント（Ｆｒａｇｍｅｎｔｓ）はフラグメントプロセッサ（Ｆｒａｇｍｅｎｔ  Ｐｒｏｃｅｓｓｏｒ）３８  に入力されてＦｒａｇｍｅｎｔ処理を行う。この際テクスチャ（Ｔｅｘｔｕｒｅ）メモリ４０から読み出されたＴｅｘｔｕｒｅとの各種ブレンド処理も行われる場合がある。Ｆｒａｇｍｅｎｔ処理された結果はＰｅｒ  Ｆｒａｇｍｅｎｔ  Ｏｐｅｒａｔｉｏｎ３９が行われフレームバッファ（Ｆｒａｍｅ  Ｂｕｆｆｅｒ）４１へ書き込み、１フレーム分の処理が行われた結果が読み出されて表示が行われる。なお、この処理の詳細は、ＯｐｅｎＧＬ２．０規格書Ｔｈｅ  ＯｐｅｎＧＬ  Ｇｒａｐｈｉｃｓ  Ｓｙｓｅｍ：  Ａ  Ｓｐｅｃｉｆｉｃａｔｉｏｎに記載されている。
【００１１】
また、画像ＣＯＤＥＣの圧縮処理は、例えば図２９に示すＣＯＤＥＣ処理構成によって実行される。入力画像は、フレーム内予測、もしくは異なるフレームの動き補償の結果を差分され、直交変換、量子化をされてエントロピー符号化される。また、量子化後に逆量子化、逆直交変換された結果からフレーム内予測、もしくは動き補償された結果を加算された結果がループフィルタでフィルタされ、フレームメモリに蓄積される。前述の動き補償は、この蓄積されたフレームメモリ上の画像から動き予測されて行われる。また、動き予測のベクタやフレーム内予測の方式も上と同様にエントロピー符号化される。この結果がストリーム化されて出力される。復号化処理は、符号化処理と基本的に逆のシーケンスで処理が実効される。ただし、動き予測や、逆変換（量子化、直交変換）がない処理として処理が行われる。
【００１２】
図２８には３ＤＣＧ処理、図２９にはＣＯＤＥＣ処理の処理構成を示したが、一般的な従来構成においては、これらの各処理は、それぞれ独自の機能ＩＰ、すなわち処理ブロックを設定して実行している、すなわち、図２７を参照して説明したＣＯＤＥＣ処理を実行するＭＰＥＧ処理ブロック２２、３ＤＣＧ機能を実行する３ＤＣＧ処理ブロック２３などである。
【００１３】
画像ＣＯＤＥＣ処理において複数の規格をサポートする場合は動き検出や動き補償などの一部の回路を共有化する場合はあるが、異なる部分も多く、更に３ＤＣＧ回路などの他の機能の論理回路との共有化は行われておらず、図２７に示すように、ＪＰＥＧに対応するＣＯＤＥＣ処理を実行するＪＰＥＧ処理ブロック２１、ＭＰＥＧに対応するＣＯＤＥＣ処理を実行するＭＰＥＧ処理ブロック２２など、別々の機能ＩＰ（専用処理ブロック）として実現されている。
【００１４】
このような手法によると、それぞれの機能ＩＰ（専用処理ブロック）を搭載することとなり回路規模が増大することになる。また各処理における高度化要求、データ処理量の増大に伴い機能ＩＰ（専用処理ブロック）を論理回路として実装するゲート規模がさらに増大し、結果としてデジタル機器に搭載されるＬＳＩの面積の増大、製造コストの上昇が加速する要因となっている。また機器の実用上もＬＳＩ面積が大きいと、個々の機能を使用していなくてもリーク電流の消費によりＬＳＩおよび機器の電力消費が増大するという問題が発生する。
【発明の開示】
【発明が解決しようとする課題】
【００１５】
本発明は、上述の問題点に鑑みてなされたものであり、例えば、３ＤＣＧ処理やＣＯＤＥＣ処理などの様々なデータ処理に応じてレジスタ設定や演算部による演算処理を適宜変更してデータ処理を実行する構成として、ＬＳＩ上の面積削減および電力削減を実現する情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の第１の側面は、
情報処理装置であり、
オペランドを入力する入力レジスタと、
前記オペランドを適用した演算を実行する演算実行部と、
データ処理における設定情報（Ｃｏｎｆｉｇ）と命令テーブルに格納されたデータ処理プログラムに基づいてデータ処理制御を実行する制御部と、
を有するデータ処理部を備え、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記制御部は、プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行う構成であることを特徴とする情報処理装置にある。
【００１７】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行う構成であることを特徴とする。
【００１８】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記命令テーブルに記録された１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする。
【００１９】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする。
【００２０】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、１つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行う構成であることを特徴とする。
【００２１】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて１つのニーモニックに対応する同一コードの繰り返し回数を決定する構成であることを特徴とする。
【００２２】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成する構成であることを特徴とする。
【００２３】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得する構成であることを特徴とする。
【００２４】
さらに、本発明の情報処理装置の一実施態様において、前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、前記制御部の制御に基づいて前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行う構成であることを特徴とする。
【００２５】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、データ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、前記制御部の制御に基づいて前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行う構成であることを特徴とする。
【００２６】
さらに、本発明の情報処理装置の一実施態様において、前記データ処理部は、３ＤＣＧ処理およびＣＯＤＥＣ処理を実行する構成であることを特徴とする。
【００２７】
さらに、本発明の情報処理装置の一実施態様において、前記演算実行部は、並列処理可能な複数の演算部によって構成され、３ＤＣＧ処理およびＣＯＤＥＣ処理において、各処理に応じた入力データを適用した並列演算を実行する構成であることを特徴とする。
【００２８】
さらに、本発明の情報処理装置の一実施態様において、前記演算実行部は、３ＤＣＧ処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理の入力値（ｘ，ｙ，ｚ，ｗ）を各々利用した並列演算と、３ＤＣＧ処理におけるフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理の入力値（ｒ，ｇ，ｂ，ａ）を各々利用した並列演算と、ＣＯＤＥＣ処理におけるＤＣＴ処理の入力値（ａ０，ａ１，ａ２，ａ３）を各々利用した並列演算を切り替えて実行する構成であることを特徴とする。
【００２９】
さらに、本発明の第２の側面は、
情報処理装置において実行する情報処理方法であり、
制御部が、予め設定された設定情報（Ｃｏｎｆｉｇ）と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行するデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行うステップを含むことを特徴とする情報処理方法にある。
【００３０】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行うステップを含むことを特徴とする。
【００３１】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、前記命令テーブルに記録された１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする。
【００３２】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする。
【００３３】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、１つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行うステップを含むことを特徴とする。
【００３４】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、前記設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて１つのニーモニックに対応する同一コードの繰り返し回数を決定するステップを含むことを特徴とする。
【００３５】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成するステップを含むことを特徴とする。
【００３６】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得するステップを含むことを特徴とする。
【００３７】
さらに、本発明の情報処理方法の一実施態様において、前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、前記制御部は、前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行うことを特徴とする。
【００３８】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理装置は、さらにデータ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、前記制御部は、前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行うことを特徴とする。
【００３９】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、３ＤＣＧ処理およびＣＯＤＥＣ処理を実行するステップであることを特徴とする。
【００４０】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、並列処理可能な複数の演算部によって構成され演算実行部において、３ＤＣＧ処理およびＣＯＤＥＣ各処理に応じた入力データを適用した並列演算を実行するステップを含むことを特徴とする。
【００４１】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、並列処理可能な複数の演算部によって構成され演算実行部において、３ＤＣＧ処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理の入力値（ｘ，ｙ，ｚ，ｗ）を各々利用した並列演算と、３ＤＣＧ処理におけるフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理の入力値（ｒ，ｇ，ｂ，ａ）を各々利用した並列演算と、ＣＯＤＥＣ処理におけるＤＣＴ処理の入力値（ａ０，ａ１，ａ２，ａ３）を各々利用した並列演算を切り替えて実行するステップを含むことを特徴とする。
【００４２】
さらに、本発明の第３の側面は、
情報処理装置においで情報処理を実行させるコンピュータ・プログラムであり、
制御部に、予め設定された設定情報（Ｃｏｎｆｉｇ）と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行させるデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行わせるステップを含むことを特徴とするコンピュータ・プログラムにある。
【００４３】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【００４４】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【００４５】
本発明の一実施例の構成によれば、複数の命令テーブルの切り替えや命令の多重化による効率的な命令の実行を実現し、またダブルバッファ構成とした入出力レジスタを利用したデータ格納制御により入出力のオーバーヘッドや命令のレイテンシの解消を図り処理の高速化を実現した。本発明の構成により、命令の圧縮・伸長によるバスバンド幅、外部ＩＯ、メモリ容量の小型化が実現され、データ処理部を構成するＬＳＩの論理回路の実装面積の削減、さらに消費電力の低減が実現される。
【発明を実施するための最良の形態】
【００４６】
以下、図面を参照しながら、本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。まず、本発明の概要について説明する。本発明の情報処理装置では、例えば３ＤＣＧ処理や、ＭＰＥＧ，ＪＰＥＧなどの様々な規格のＣＯＤＥＣ処理の少なくとも一部の処理について共通のハードウェアを利用して実行する。例えば、３ＤＣＧ処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理、３ＤＣＧ処理におけるフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理、ＣＯＤＥＣ処理におけるＤＣＴ処理などを共通の演算部を用いて実行する。
【００４７】
３ＤＣＧ処理における頂点処理やフラグメント処理はユーザとしてのプログラマにプログラムを開放する必要があり、また、画像ＣＯＤＥＣ処理において実行されるマクロブロックの直交変換や量子化（またはそれらの逆変換）やブロック内フィルタ処理は、ＪＰＥＧ、様々なＭＰＥＧなど各種のＣＯＤＥＣ規格によって処理が異なるためにプロセッサによって行うことが望ましい。
【００４８】
しかし、これらの処理を一般的なプロセッサで行う場合、処理データのメモリからの取得や書き込みを行う場合、データ入出力をロード／ストア命令で読み込み／書き出すということが必要となる。汎用の処理を行う場合にはロードストアによる入出力が適切であるが、命令を実行する時間およびロード命令の場合は、命令を発行してからデータが到達するまでのオーバーヘッドがかかってしまう。３ＤＣＧや画像ＣＯＤＥＣ処理のようなメディア処理の場合には、データはストリーム型、あるいはパイプライン型に流れていく処理であり、外部で処理を行う入出力データが規定されるため、プロセッサが自由かつ能動的にメモリ上のデータの入出力を行うためのロードストアによりデータを入出力する必要はなく、かえって効率が悪い。
【００４９】
プロセッサでの処理に必要なデータを外部から受動的かつ固定的に取得する構成とすれば、このオーバーヘッドは小さくすることが可能である。また、外部で処理するデータを、例えば入出力ＦＩＦＯに供給して、命令に基づく入出力ＦＩＦＯへのアクセスを可能とする構成も存在するが、このような手法では、外部から入力データをＦＩＦＯに書き込み、出力データを出力ＦＩＦＯから書き出す実装手法が考えられるが、ＦＩＦＯ実装の場合、ＦＩＦＯからのデータ読み取り処理として実行されるＰＯＰを行うとＦＩＦＯ上からは元のデータが無くなるために同じデータを２回以上使用するような場合には、このＰＯＰデータを内部の一時保存領域に移動させる必要があり、この実行時間もオーバーヘッドになる。
【００５０】
さらに、３ＤＣＧや画像ＣＯＤＥＣ処理のようなメディア処理においては、単一のプログラム処理に対して大量の処理対象データが存在するため、プログラムを複数回繰り返して処理を行うことが多い。このような同一処理プログラムの繰り返しを行う場合、１回の処理が終了した段階で分岐命令によりプログラムの開始地点へ戻ることが一般的である。しかし、この時、命令を保持する領域・容量が限られているために既に一度実行した命令で、かつ再度実行されるにもかかわらず保持領域に存在しない場合が多い。このために、命令の再度読み出しが起こりオーバーヘッドとなる。
【００５１】
また、３ＤＣＧ処理においては、頂点要素やフラグメント要素に対して浮動小数点演算を行うことが殆どであるが、一般的に同期論理回路において浮動小数点演算は通常２サイクル以上のレイテンシ（遅延）が発生する場合が多い。このために一つの命令の結果を使用した命令はすぐには実行できず、実行時間を多くする要因となっている。もしくは、ＣＯＤＥＣのマクロブロック処理においてはプログラムが長大であり、命令が再利用されずキャッシュにヒットしないために、ほぼ１サイクルに１命令の読み込みが必要であり、例えば１命令のｂｉｔ幅が３２ｂｉｔ＝４Ｂｙｔｅの場合、毎サイクル４Ｂｙｔｅのバンド幅を必要とすることになり、これはシステムとしては無視できる大きさではない。
【００５２】
本発明の情報処理装置は、３ＤＣＧ処理や異なる規格のＣＯＤＥＣ処理を共有化した機能ブロックで実現し、例えば、上述の入出力操作のオーバーヘッド、複数回処理でのオーバーヘッド、演算レイテンシによるオーバーヘッドを解消し高速に処理を行い、必要とする回路を削減してＬＳＩ上の面積削減および電力削減を実現するものである。
【００５３】
本発明の情報処理装置は、３ＤＣＧ処理や異なる規格のＣＯＤＥＣ処理の少なくとも一部を共有するものであり、特に、それぞれの処理における類似処理について、プログラマブル回路を適用して、各処理に併せて実行する処理を変更することでより多くの共通部分を持つメディア処理プロセッサを実現している。
【００５４】
例えば、３ＤＣＧにおいては、先に図２８を参照して説明したように、頂点（Ｖｅｒｔｅｘ）処理、フラグメント（Ｆｒａｇｍｅｎｔ）処理などが実行されるが、
頂点処理としての頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理では、頂点の座標値＝（ｘ，ｙ，ｚ，ｗ）を適用したデータ処理として、
（ｘ'，ｙ'，ｚ'，ｗ'）＝ＭｏｄｅｌＶｉｅｗ＆Ｐｒｏｊｅｃｔｉｏｎ行列＊（ｘ，ｙ，ｚ，ｗ）
上記の式に従った処理が実行される。
また、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理においては、ピクセルのカラー値の赤、緑、青、アルファ（ｒ，ｇ，ｂ，ａ）を適用したデータ処理として、
（ｒ，ｇ，ｂ，ａ）＝（ｒ１，ｇ１，ｂ１，ａ１）＋（ｒ２，ｇ２，ｂ２，ａ２
上記の式に従った処理が実行される。
【００５５】
一方、画像ＣＯＤＥＣ処理においては、例えばＭＰＥＧ−４ＡＶＣ／Ｈ．２６４の一次元整数ＤＣＴ処理が実行されるが、このＤＣＴ処理においては、変換対象とする入力値（ａ０，ａ１，ａ２，ａ３）に対して、
（Ａ０，Ａ１，Ａ２，Ａ３）＝変換行列＊（ａ０，ａ１，ａ２，ａ３）という式に従ったＤＣＴ変換が実行される。
【００５６】
このように、３ＤＣＧの頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理やフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理、そしてＣＯＤＥＣのマクロブロック処理はベクタ型の演算が多く、ＳＩＭＤ演算プロセッサ処理に向いている。更に、３ＤＣＧのシェーダ（Ｓｈａｄｅｒ）処理は、前述したように、ユーザとしてのデザイナー（クリエイター）がプログラム可能なように解放されている必要があるため、プロセッサ処理であることを前提としており、ＣＯＤＥＣのマクロブロック処理は、ＪＰＥＧ、ＭＰＥＧ−４、ＭＰＥＧ−４ＡＶＣ／Ｈ．２６４などの規格各々で異なった処理として実行されるため、固定論理回路で実現するよりも、可変可能なプロセッサ処理が望ましく、前述の理由も含めてシェーダーエレメント（ＳＥ）のように、１命令で複数のデータを処理するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ／Ｍｕｌｔｉｐｌｅ  Ｄａｔａ）型のプロセッサで処理を行うことが適切である。
【００５７】
本発明の情報処理装置では、入出力機構としての竜力レジスタ（ＩＲ）を、ＦＩＦＯでなくダブルバッファ形式としている。さらにプログラム上ではダブルバッファの切り替えを意識することなく入出力を可能としている。また、複数回の繰り返しでのオーバーヘッドを解消するために、本発明ではプログラムの実行自体がこれらメディア処理に向くように、
開始ＰＣ（プログラムカウンタ）−＞複数の命令−＞終了命令
という構成で終了命令により開始ＰＣ（プログラムカウンタ）に戻るようにしている。その上で開始ＰＣ近辺の命令群が保持されるような機構を持つ構成とすることにより、複数回の繰り返しの繰り返し時点でのオーバーヘッドを解消することを可能としている。
【００５８】
ＳＩＭＤ処理を行う場合、分岐自体があまり存在しないが、少なくとも１個の分岐先命令群を固定的に命令テーブル上に保持する設定とすることによりループ処理等での分岐のオーバーヘッドを解消することを可能としている。また、演算のレイテンシによるオーバーヘッドを解消するために、本発明においては、複数のデータのまとまりを一回のプログラムで処理を行う手法を採っている。この場合、同じ操作を行う命令を複数回実行するために命令の長さが回数倍になる。このために、本発明では更に、複数回の命令を代表とする１つの命令に圧縮して実行時に伸長する機構を持つことにより命令量を削減している。これにより、命令を保持する内部および外部の領域を削減することにより、ＬＳＩの実装面積を削減することが可能となる。また、命令の入出力量も少なくなり、外部メモリとのバンド幅の削減となるため消費電力を低減する。
【００５９】
以下、本発明の実施の形態について、詳細に説明する。
本発明の一実施形態に係る情報処理装置は、３ＤＣＧの描画および画像ＣＯＤＥＣ処理を行う。本発明の情報処理装置は、オペランドを入力する入力レジスタと、オペランドを適用した演算を実行する演算実行部と、データ処理における設定情報（Ｃｏｎｆｉｇ）と命令テーブルに格納されたデータ処理プログラムに基づいてデータ処理制御を実行する制御部を有するデータ処理部を有する。図１に本発明の一実施形態に係る情報処理装置のデータ処理部１００の構成例を示す。
【００６０】
制御部（ＳＥＱ＆ＩＳＥＱ）１０１は、データ処理部１００の各種のデータ処理の制御を行う制御部であり、外部から設定されるレジスタ（以下Ｃｏｎｆｉｇ）および命令により、本装置の動作を規定する制御部としてのブロックである。
制御部（ＳＥＱ＆ＩＳＥＱ）１０１は、以下の構成要素（ａ）〜（ｃ）を含む。
（ａ）ＣＦＧ
レジスタ設定などの設定情報であるＣｏｎｆｉｇを保持するレジスタである。
（ｂ）ＩＦＵ
命令テーブルに命令を書き込み登録（フェッチ）する処理を実行するブロックである。
（ｃ）ＩＴＢＬ
ＩＦＵによってフェッチされた命令を保持する命令テーブルである。なお、詳細は後述するが、命令テーブルは、例えば４つの分割された命令テーブル［ＩＴＢＬ０〜ＩＴＢＬ３］によって構成される。
【００６１】
図１に示すＳＵ，ＡＵ００〜ＡＵ０３は演算部であり、例えば、
３ＤＣＧ処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理の入力値（ｘ，ｙ，ｚ，ｗ）を各々利用した並列演算や、
３ＤＣＧ処理におけるフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理の入力値（ｒ，ｇ，ｂ，ａ）を各々利用した並列演算や、
ＣＯＤＥＣ処理におけるＤＣＴ処理の入力値（ａ０，ａ１，ａ２，ａ３）を各々利用した並列演算を実行する。
これらの演算は制御部によって適宜、切り替えて実行される。
【００６２】
ＳＵは、スカラ型の算術回路であり、浮動小数点の逆数、平方根、逆平方根、ｌｏｇ／ｅｘｐ／ｓｉｎ／ｃｏｓなどの初等関数を演算する。
ＡＵ００−ＡＵ０３は、それぞれＩＡＬＵとＦ／Ｉ−ＡＬＵを一つずつ保持するブロックである。
ＩＡＬＵは、整数の算術論理演算回路である。
Ｆ／Ｉ−ＡＬＵは、整数算術論理演算および単精度浮動小数点算術演算を行う回路である。
【００６３】
ＧＰＲ／ＣＲ／ＦＲは、内部で一時的にデータを保存するレジスタファイルである。
ＳＰＲは、定数や演算エラー結果等を保持する。
ＬＵＴはスカラ型のデータを保持する。
ＰＲ／ＺＲは、フラグメント情報を入力し保持する。
ＩＲは、入力データを保持する入力レジスタ１０２。
ＯＲは、出力データを保持する出力レジスタ１０３。
ＤＲはロードストアデータを保持するデータレジスタ。
ＴＲＵはＴＵ（Ｔｅｘｔｕｒｅ  Ｕｎｉｔ）へのリクエストを行う。
【００６４】
図１に示す情報処理装置のデータ処理部１００の構成を適用した情報処理の動作の概略について説明する。情報処理の大枠の処理フローについて、図２を参照して説明する。
【００６５】
図１の情報処理装置のデータ処理部１００を適用した処理を行う場合、まずは、外部からレジスタ設定情報等の設定情報（Ｃｏｎｆｉｇ）の書き込み処理であるＣｏｎｆｉｇ書き込み処理（ライト）が実行される。すなわち、レジスタ設定情報（Ｃｏｎｆｉｇ）が図１に示すＳＥＱ＆ＩＳＥＱ内のＣＦＧブロックに保持され、このＣｏｎｆｉｇデータに基づいて全体の動作が規定される。図２に示す例では、レジスタ設定情報（Ｃｏｎｆｉｇ）２０１，２０２として、
ＳＨ＿ＩＮＳＴ＿ＢＡＳＥ
ＳＨ＿ＩＲ
ＳＨ＿ＯＲ
ＳＨ＿ＣＳＲ  ＲＵＮ
これらの情報の書き込み例を示している。
【００６６】
このようなレジスタ設定情報を含む設定情報（Ｃｏｎｆｉｇ）の設定により、一まとまりのデータの処理の動作が規定される。設定情報（Ｃｏｎｆｉｇ）２０１に従って処理対象データ２１１のデータ処理が実行され、次に、設定情報（Ｃｏｎｆｉｇ）２０２が設定されて、設定情報（Ｃｏｎｆｉｇ）２０２に従って処理対象データ２１２のデータ処理が実行される。以下、この繰り返しが行われる。
【００６７】
設定情報（Ｃｏｎｆｉｇ）２０１，２０２の構成について説明する。
ＳＨ＿ＩＮＳＴ＿ＢＡＳＥ
というＣｏｎｆｉｇデータはプログラムの開始ＰＣ（プログラムカウンタ）を設定するＣｏｎｆｉｇであり、命令の読み出しや実行の情報として使用する。
また、
ＳＨ＿ＩＲ
これは、ＩＲ入力レジスタから入力するデータの種類や個数の設定情報であり、
ＳＨ＿ＯＲ
これは、ＯＲ出力レジスタに関する同様の情報である。
ＳＨ＿ＣＳＲ
は、起動・停止を行うためのＣｏｎｆｉｇデータであり、一連のＣｏｎｆｉｇ設定の最後にＳＨ＿ＣＳＲで起動（ＲＵＮ）がかけられる。
【００６８】
初期状態では本装置は停止しており、一連のＣｏｎｆｉｇを設定後、ＳＨ＿ＣＳＲによって起動し、１まとまりの処理対象データを入力して、最後のデータの入力が終わるとＳＨ＿ＣＳＲで停止（ＳＴＯＰ）をかけ、次のＣｏｎｆｉｇ設定が行われる。つまり、Ｃｏｎｆｉｇは対象データに先行して設定され、初期状態では最後に起動、２回目以降は、最初に停止、最後に起動がかけられる。
【００６９】
起動がかけられると、まずは、図１に示す情報処理装置のデータ処理部１００のＳＥＱ＆ＩＳＥＱ内のＩＦＵからＳＨ＿ＩＮＳＴ＿ＢＡＳＥの設定の開始ＰＣ（プログラムカウンタ）の命令を外部にフェッチし取得しＩＴＢＬに保持する。また、同様に入力の設定に従い、データを取得してＩＲへ保持する。
【００７０】
図１に示す情報処理装置のデータ処理部１００は、３ＤＣＧ処理における頂点（Ｖｅｒｔｅｘ）処理、フラグメント処理やＣＯＤＥＣ処理におけるＤＣＴ処理などを実行する。これらの処理の種類に応じてレジスタ設定情報（Ｃｏｎｆｉｇ）が書き込まれることになり、書き込まれた設定情報に従った処理が図１に示す構成を利用して行われることになる。
【００７１】
例えば、本装置がフラグメント（Ｆｒａｇｍｅｎｔ）処理を行う設定の場合には、フラグメント情報を入力し保持するレジスタである図１に示すＰＲやＺＲへフラグメントの情報も取得する。命令とデータが到達すると、シーケンサ（ＳＥＱ）により、先頭ＰＣから命令が実行される。命令は基本的には、入力レジスタ（ＩＲ）から入力したデータに対して、ＡＵ００−ＡＵ０３やＳＵの演算器を使用して演算命令を実行し、ＧＰＲ／ＣＲ／ＦＲ／ＳＰＲ／ＬＵＴ等のレジスタファイルにデータを一時保存しながら最終結果を出力レジスタ（ＯＲ）から外部へ出力する。
【００７２】
また、処理の内容により、外部メモリへ一時保存、取得を行う場合には通常のロードストア命令を実行する機構を持ち、データレジスタ（ＤＲ）を経由して入出力を行い、更に外部のハードウェア（ＨＷ）演算ブロックであるテクスチャユニット（Ｔｅｘｔｕｒｅ  Ｕｎｉｔ）へのリクエストを行うＴＲＵブロックも機構として持っている。
【００７３】
３ＤＣＧの典型的な動作シーケンスは、図３（ａ）に示すように、頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理、ラスタライズ（Ｒａｓｔｅｒｉｚｅ）処理、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理となる。図１に示す情報処理装置のデータ処理部１００では、この３つの処理のうち、頂点処理を行う頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理およびフラグメント処理を行うフラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理を行うことになる。
【００７４】
図１に示す情報処理装置のデータ処理部１００によって、頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理を行う場合には、外部メモリからＩＲを介して頂点情報を取得して頂点処理を行い、頂点処理後のデータを、出力レジスタ（ＯＲ）を介してラスタライザ（Ｒａｓｔｅｒｉｚｅｒ）へ出力する。
【００７５】
また、図１に示す情報処理装置のデータ処理部１００によって、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理を行う場合にはラスタライザ（Ｒａｓｔｅｒｉｚｅｒ）からフラグメント情報を受け取り処理結果を外部メモリへと出力する。
【００７６】
また、画像ＣＯＤＥＣ処理におけるマクロブロック処理は、図３（ｂ）に示すように、直交変換、量子化、ループ内フィルタ処理を行うことになる。図１に示す情報処理装置のデータ処理部１００によってこの直交変換、量子化、ループ内フィルタ処理を含むマクロブロック処理を行う場合、図３（ｂ）に示すように、入出力は全て外部メモリとのやり取りになる。
【００７７】
図１に示す情報処理装置のデータ処理部１００によって実行する様々な処理におけるプログラムの進行例について図４を参照して説明する。図４（ａ）は、分岐命令がない場合のプログラム進行例であり、図４（ｂ）は分岐命令がある場合のプログラム進行例を示している。
【００７８】
プログラムの進行は、先に図２を参照して説明したレジスタ設定情報（Ｃｏｎｆｉｇ）の
ＳＨ＿ＩＮＳＴ＿ＢＡＳＥ
で設定される開始ＰＣ（プログラムカウンタ）から実行を開始し、分岐命令が入らない限りは、
開始ＰＣ−＞開始ＰＣ＋１−＞開始ＰＣ＋２−＞，，，
というようにＰＣがインクリメントして進行する。
プログラムの終了は、ＥＮＤ命令という終了専用の命令によって行われる。このＥＮＤ命令は、開始ＰＣへの絶対分岐命令であり、ＥＮＤ命令が発行すると開始ＰＣに戻るような大きなループ構造で動作する。
【００７９】
この開始ＰＣからＥＮＤ命令間で操作の単位を行う。また、プログラム中に分岐命令が有る場合には、分岐命令に到達すると分岐先ＰＣへと分岐するが、この場合も最終的にＥＮＤ命令に到達すると、開始ＰＣへと戻る。このようにプログラムの処理として、１プログラムでのデータ処理を複数回行い、大量のデータ処理を行う。
【００８０】
次に、本発明の装置における処理の詳細について順を追って説明する。
まずは、入出力機構の詳細について説明する。入力レジスタ（ＩＲ）１０２と出力レジスタ（ＯＲ）１０３はそれぞれ入力用と出力用のレジスタである。
【００８１】
入力レジスタ（ＩＲ）１０２は、図５に示すように、
各々が１２８ｂｉｔ＊１６本のレジスタ領域を持つフロント（ｆｒｏｎｔ）とバック（ｂａｃｋ）の２つのバッファからなるダブルバッファで構成される。
【００８２】
バック（ｂａｃｋ）側は、図１に示す情報処理装置のデータ処理部１００の外部からの書き込み（ライト）に利用され、フロント（ｆｒｏｎｔ）側は情報処理装置のデータ処理部１００内部からプログラムでリードされる。初期状態では、バック（ｂａｃｋ）側にデータが書き込まれ、全てのデータが揃い開始ＰＣの命令が動作可能な時点で、バック（ｂａｃｋ）とフロント（ｆｒｏｎｔ）がフリップ（入れ替え）する。プログラムが動作している間はフロント（ｆｒｏｎｔ）側がリードされ、同時にバック（ｂａｃｋ）側に、次の処理データがライトされる。プログラムが終了命令を発行し再度開始ＰＣ（プログラムウンタ）に到達して、かつバック（ｂａｃｋ）側のデータが揃っている場合にはフリップして次のデータセットの処理が実行される。
【００８３】
このように、入力レジスタ（ＩＲ）１０２は、図１に示すデータ処理部１００外からのデータ入力用バッファと、データ処理部１００内部からのデータ取得用バッファからなるダブルバッファ構成を有し、制御部の制御に基づいてデータ入力用バッファとデータ取得用バッファとの入れ替え処理を行う構成となっている。
【００８４】
次に出力レジスタ（ＯＲ）１０３の構造と動作について、図６を参照して説類する。出力レジスタ（ＯＲ）は図６に示すように、図５に示す入力レジスタ（ＩＲ）１０２と同様、
各々が１２８ｂｉｔ＊１６本のレジスタ領域を持つフロント（ｆｒｏｎｔ）とバック（ｂａｃｋ）の２つのバッファからなるダブルバッファで構成する。
【００８５】
フロント（ｆｒｏｎｔ）側は情報処理装置のデータ処理部１００内部からプログラムで書き込み（ライト）処理が実行され、バック（ｂａｃｋ）側は、図１に示す情報処理装置のデータ処理部１００の外部への出力データの記録領域として利用される。
【００８６】
初期状態から開始ＰＣ（プログラムカウンタ）に到達してプログラムにより出力レジスタ（ＯＲ）１０３へのデータ書き込み（ライト）が行われ、終了命令に到達すると、フロント（ｆｒｏｎｔ）とバック（ｂａｃｋ）とがフリップ（入れ替え）する。次に２回目のデータセットに対するプログラム実行中は、同様にフロント（ｆｒｏｎｔ）側にデータ書き込み（ライト）が行われると同時にバック（ｂａｃｋ）側からデータが出力される。
【００８７】
上述のようにデータ処理部１００での処理結果を保持する出力レジスタ（ＯＲ）１０３は、データ処理部１００内部からのデータ書き込み用バッファと、データ処理部１００外へのデータ出力用バッファとからなるダブルバッファ構成を有し、制御部１０１の制御に基づいてデータ書き込み用バッファとデータ出力用バッファとの入れ替え処理を行う構成となっている。
【００８８】
このように情報処理装置のデータ処理部１００の実行する命令単位でのデータ入出力の操作は行わずにデータが設定される。この手法の利点としては入出力のオーバーヘッドを解消するとともに、ＦＩＦＯ実装と比較して１組のレジスタではライトとリードが同時には起きないために１ポートのメモリとして実装可能であるという点がある。通常、このような保持をＳＲＡＭで行った場合、ポート数に比例して面積が増大するが、本装置は１ポートで良いために面積を削減できる。もしＦＩＦＯでも現在実行中の容量と次の実行する容量とを保持すると２面分は必要であり、もし、これを１ポートで構成すると、現在の処理が終了しないと次の分が取得できないために実行が遅くなる。
【００８９】
また、情報処理装置のデータ処理部１００の実行するプログラムの実行に際してはこの入出力レジスタのデータのリードライト処理が行われるが、本装置の命令セットでは、オペランドにＩＲ／ＯＲを直接指定可能となる。
【００９０】
図７を参照してプログラム例について説明する。図７には、
（ａ）本発明のダブルバッファ型の入力レジスタ（ＩＲ）と出力レジスタ（ＯＲ）を利用した場合のプログラムシーケンス
（ｂ）ＦＩＦＯレジスタを利用した場合のプログラムシーケンス
（ｃ）ＦＩＦＯレジスタと特殊オペランドを利用した場合のプログラムシーケンス
これらのプログラムシーケンスを示している。（ａ）〜（ｃ）のいずれも同じデータ処理を実行するシーケンスである。
【００９１】
例えば（ａ）に示す命令中の
「ｍａｄｄ  ｒ０  ｉ０  ｃ０  ０」という命令は、ｉ０、ｃ０のベクタ要素を乗算し、０を加算してｒ０レジスタに書き込み（ライト）を行う、という操作を表す命令である。なお、
ｒ０：図１に示す装置中のＧＰＲの格納データ、
ｉ０：入力レジスタ（ＩＲ）の格納データ、
ｃ０〜ｃ３：定数、
ｏ０：出力レジスタ（ＯＲ）の格納データ、
を意味している。
（ａ）に示す最後の命令は、最終の結果をｏ０レジスタ（出力レジスタ（ＯＲ）に書き込む（記録）処理を行われる命令である。
【００９２】
（ａ）に示す命令は、
ｒ０←ｉ０×ｃ０＋０
ｒ０←ｉ０×ｒ０＋ｃ１
ｒ０←ｉ０×ｒ０＋ｃ２
ｏ０←ｉ０×ｒ０＋ｃ３
これらの演算を順次実行する命令である。
【００９３】
（ｂ）は入力レジスタとしてＦＩＦＯを適用した場合のプログラムシーケンスを示している。（ａ）と同じ演算を行う例を示している。なお、
ｒ０，ｒ１：計算に適用する値を格納するレジスタにおける格納値
ｉｆｉｆｏ：ＦＩＦＯレジスタの格納データ（入力値）
ｃ０〜ｃ３：定数、
ｏｆｉｆｏ：ＦＩＦＯレジスタの格納データ（出力値）、
を意味している。
【００９４】
（ｂ）に示すＦＩＦＯ実装においては、
（ａ）に示す命令である「ｍａｄｄ  ｒ０  ｉ０  ｃ０  ０」という命令に対応させて入力レジスタ（ＩＯ）をＦＩＦＯレジスタに置き換えると、
「ｍａｄｄ  ｒ０  ｆｉｆｏ  ｃ０  ０」
というような命令セットが想定されるが、ＦＩＦＯの場合、ＦＩＦＯからのリードデータはＰＯＰ、すなわち、ＦＩＦＯレジスタのデータ読み取り部に次のデータが自動的に書き込まれてしまうため、後続の命令ではＦＩＦＯから同一のデータを読み取ることが出来なくなってしまう。
【００９５】
従って、図７（ｂ）に示すように、まず、
「ｍｏｖ  ｒ１  ｆｉｆｏ」という命令を実行して、ＦＩＦＯから読み取られるデータを他のレジスタに移動（ｍｏｖｅ）させて書き込む処理をおこなわなければならない。この結果、実行サイクルが１つ増加してしまう。
【００９６】
このような実行サイクルの増加を防止するため、ＦＩＦＯからのデータ読み出しに際して、ＦＩＦＯのデータ読み出し部のデータの入れ替えを停止させる処理（Ｎｏｔ  Ｉｎｃｒｅｍｅｎｔ）をオペランドによって実行させる構成とすることもできる。例えば、
ｆｉｆｏ−ｉ：Ｉｎｃｒｅｍｅｎｔ実行
ｆｉｆｏ−ｎ：Ｉｎｃｒｅｍｅｎｔ非実行、
これらのオペランドを準備して、ｆｉｆｏをＰＯＰする／しないという制御を行う実装も考えられる。この実装によれば、図７（ｃ）のように、実行サイクルは増加することなく、（ａ）の場合と同一のサイクル数となる。
【００９７】
しかし、この図７（ｃ）に示すｆｉｆｏをＰＯＰする／しないという制御を行う場合でも、ある命令の処理結果を再利用する演算を行うといった場合は、やはり移動命令（Ｍｏｖｅ）を実行してＦＩＦＯ以外の例えばＧＰＲ等のレジスタにデータを保存する必要がある。この令について図８を参照して説明する。
【００９８】
図８は、
（ａ）本発明のダブルバッファ型の入力レジスタ（ＩＲ）と出力レジスタ（ＯＲ）を利用した場合のプログラムシーケンス
（ｃ）ＦＩＦＯレジスタと特殊オペランドを利用した場合のプログラムシーケンス
これらのプログラムシーケンスを示している。（ａ），（ｃ）のいずれも同じデータ処理を実行するシーケンスである。
【００９９】
（ａ）のシーケンスについて説明する。
ａｄｄ  ｒ０  ｉ０  ｃ０は、ｉ０＋ｃ０の結果をｒ０に書き込む処理、
ａｄｄ  ｒ０  ｉ１  ｒ０は、ｉ１＋ｒ０の結果をｒ０に書き込む処理、
ａｄｄ  ｒ０  ｉ２  ｒ０は、ｉ２＋ｒ０の結果をｒ０に書き込む処理、
ａｄｄ  ｒ０  ｉ３  ｒ０は、ｉ３＋ｒ０の結果をｒ０に書き込む処理、
ｓｕｂ  ｏ０  ｒ０  ｃ４は、ｒ０−ｃ４の結果をｒ０に書き込む処理、
ｂｒｃ：ｂｒ＿ｐｃは、条件分岐処理、
ｍｕｌ  ｒ１  ｉ０  ｒ０は、ｉ０×ｒ０の結果をｒ１に書き込む処理、
ｍｕｌ  ｒ１  ｉ１  ｒ１は、ｉ１×ｒ１の結果をｒ１に書き込む処理、
ｍｕｌ  ｒ１  ｉ２  ｒ１は、ｉ２×ｒ１の結果をｒ１に書き込む処理、
ｍｕｌ  ｏ０  ｉ３  ｒ１は、ｉ３×ｒ１の結果をｏ１に書き込む処理、
これらの処理を示している。
【０１００】
条件分岐処理以降の処理では、条件分岐処理前において利用している入力レジスタの複数の設定値［ｉ０〜ｉ３］を利用した演算として実行されている。このように複数の入力レジスタの値を後続のプログラム命令において利用する場合は、ＦＩＦＯを利用してかつ、
ｆｉｆｏ−ｉ：Ｉｎｃｒｅｍｅｎｔ実行
ｆｉｆｏ−ｎ：Ｉｎｃｒｅｍｅｎｔ非実行、
このようなオペランドを利用しても、結局、複数の値［ｉ０〜ｉ３］をＦＩＦＯから繰り返して再読み込みすることはできないので、結果として、図８（ｃ）に示すように、命令の実行前にＦＩＦＯから４つの値を読み出して他のレジスタ（例えばＧＰＲ）に保持するといった処理が必要となり、命令サイクル数が増加してしまうことになる。
【０１０１】
ダブルバッファ型のレジスタを利用する構成では、ダブルバッファ型のレジスタ（ＩＲ）から任意のタイミングでデータ読み込みが可能となり、図８（ａ）に示すように余分な命令サイクルを追加する必要がなく効率的な処理が実現される。すなわち、自由に入力要素にアクセス可能であるため、命令サイクルを消費することがなく高速に処理が行える。
【０１０２】
次に命令を保持する命令テーブル［ＩＴＢＬ］について図９を参照して説明する。本装置は図９に示すように命令テーブル［ＩＴＢＬ］としてＩＴＢＬ０、ＩＴＢＬ１、ＩＴＢＬ２、ＩＴＢＬ３の４つのテーブルを保持する。各命令テーブルは連続する１６個分の命令を保持し、全体で６４命令個分の命令を保持する。また、各命令テーブルは先頭ＰＣ（プログラムカウンタ）の値ＰＣ０、ＰＣ１、ＰＣ２、ＰＣ３をタグとして持つ。また、各命令テーブルは有効／無効を示すレジスタＶ０、Ｖ１、Ｖ２、Ｖ３を保持する。
【０１０３】
個々の命令テーブルの命令のリクエストとフィルを状態遷移図を示す図１０を参照して説明する。リセット直後の初期状態では、ＩＮＶＬＤ（無効）状態にあり、命令テーブル［ＩＴＢＬ］の命令の内容は無効である。Ｃｏｎｆｉｇの設定もしくは、フィルの要求が先頭ＰＣを与えられて起動すると、外部メモリに命令をＦＩＬＬするリクエストを行っているＢＵＳＹ（ビジー）状態となり、この段階でも命令は無効である。外部から命令が供給されてＦＩＬＬが完了するとＲＤＹ（レディ）状態となり、この状態で初めて命令テーブル［ＩＴＢＬ］に記録された命令が有効になりＶ０−Ｖ３レジスタを有効にする。
【０１０４】
命令テーブル全体としての動作について図１１を参照して説明する。図１１には３つの命令テーブル（ＩＴＢＬ０〜ＩＴＢＬ２）の利用例を示している。
【０１０５】
まず、Ｃｏｎｆｉｇ設定により、プログラムの先頭ＰＣ（プログラムカウンタ）が指定され起動されると外部メモリへプログラムの開始ＰＣから連続した１６命令がリクエストされて第１の命令テーブル［ＩＴＢＬ０］にフィルされる。ＰＣがＩＴＢＬ０の先頭ＰＣ（ここではプログラムの開始ＰＣと等しい）に到達してＩＴＢＬ０の先頭ＰＣの命令の実行を開始すると、第２の命令テーブル［ＩＴＢＬ１］へ（ＩＴＢＬ０の先頭ＰＣ＋１６）から連続する１６命令のフィルリクエストがなされて、１６命令が第２の命令テーブル［ＩＴＢＬ１］へ書き込み（フィル）される。分岐命令が無い場合、ＩＴＢＬ０の最終命令からＩＴＢＬ１の先頭ＰＣの命令へとＰＣが進行する。
【０１０６】
次に、ＰＣ（プログラムカウンタ）が第２の命令テーブル［ＩＴＢＬ１］の先頭ＰＣに到達すると、第２の命令テーブル［ＩＴＢＬ１］の先頭ＰＣ＋１６から連続した１６命令がリクエストされて第３の命令テーブル［ＩＴＢＬ２］にフィルされる。ここで、プログラムの開始ＰＣから連続する１６命令を保持するＩＴＢＬ０はロックして、新たな命令の書き込みを行わず、書き込みがなされた命令を保持する設定としている。
【０１０７】
図１２は、プログラムの進行に従った３つの命令テーブル（ＩＴＢＬ０〜ＩＴＢＬ２）の利用例を簡略化して示した図である。左から、（ａ）（ｂ）（ｃ）（ｄ）と時間経過に従った、テーブル利用例を示している。なお、図９を参照して説明したように本実施例では４つの命令テーブル（ＩＴＢＬ０〜ＩＴＢＬ３）を利用する設定であるが、このうちの１つの命令テーブル［ＩＴＢＬ３］は、分岐用の命令テーブルとして利用する設定としており、通常のシーケンスでは、図１１、図１２に示すように３つの命令テーブル（ＩＴＢＬ０〜ＩＴＢＬ２）を利用して処理を行う。
【０１０８】
図１２に示す黒丸３０１の位置が現在実行中のＰＣ（プログラムカウンタ）の位置を示している。
図１２（ａ）に示すように、実行中のＰＣ（プログラムカウンタ）が、ＩＴＢＬ２の先頭ＰＣに到達すると、ＰＣ２＋１６から連続する１６命令をＩＴＢＬ１に対してフィルを実行する。
図１２（ｂ）に示すように、実行中のＰＣ（プログラムカウンタ）が次のＩＴＢＬ１の先頭ＰＣに到達するとＩＴＢ１＋１６から連続する１６命令をＩＴＢＬ２に対してフィルを実行する。
以下、同様の処理を２つの命令テーブル（ＩＴＢＬ１〜２）を繰り返して利用した処理を実行する。
【０１０９】
このように、命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、制御部１０１は、プログラムカウンタの進行に応じて複数の命令テーブルを切り替えて命令書き込みを実行し、命令の書き込まれた命令テーブルを順次切り替えて命令の取得を実行する。
【０１１０】
図１２（ｄ）に示すようにＥＮＤ命令が発行されると、プログラムの先頭ＰＣへ戻る。この時、第１の命令テーブル［ＩＴＢＬ０］はロックして、初期の設定命令が保存されたままとしているために命令のフィルは行わない。しかし、本方式は先読み方式のため、本来必要がない命令まで読み出すことになる。
【０１１１】
もし長大なプログラムを実行する場合は、全体の長さに比べればその先読み分は小さいが、例えばＯｐｅｎＧＬ  ＥＳ  １．１系の固定グラフィックス処理においては、命令の長さは高々２０−４０命令程度である。例えば、４０命令のプログラムである場合、本処理例では、各テーブルについて１６命令単位の読み出しを繰り返し実行するので、１６×３＝４８命令の読み出しを行えば良い。テーブルを分割しない設定では、６４命令の読み出しを行うことになり、オーバーヘッドが大きくなる。
【０１１２】
また、１６命令単位の分割した命令テーブルを利用した構成において、ＰＣ（プログラムカウンタ）が、フィル済みの最後尾の命令テーブルの先頭にいたった場合に次のテーブルへのフィル処理を行うと、無駄なフィルが実行される場合がある。例えば、図１３に示すように、ＰＣ（プログラムカウンタ）が命令テーブル［ＩＴＢＬ２］３１１の先頭に到達した時に、本来は必要のない命令を命令テーブル［ＩＴＢＬ１］３１２にフィルし、命令テーブル［ＩＴＢＬ２］３１１に含まれるＥＮＤ命令に到達すると、命令テーブル［ＩＴＢＬ０］３１３の先頭ＰＣに戻る。すると、さらに、必要のない命令を命令テーブル［ＩＴＢＬ１］３１４にロードすることになり、不要な命令の読み出しが継続して実行されることになってしまう。このような無駄な処理を防止するため、予め命令長に関する情報を取得してレジスタに保持して、保持した命令長情報に応じて命令テーブルに対するフィル処理、すなわちロードの実行および停止制御を行う構成とすることが好ましい。
【０１１３】
さらに分岐命令が存在する場合の処理を説明する。例えば、ｆｏｒ／ｗｈｉｌｅ文のような繰り返しの命令列が存在するような場合には、図１４（ａ）に示すようにＰＣ（プログラムカウンタ）が後方に分岐する。例えばＰＣ＝１００で分岐命令があり、条件分岐でＰＣ＝２０番地に分岐する命令列があった場合に、分岐命令に到達した時点で分岐先のＰＣ＝２０は命令テーブル内に存在しないため、ＰＣ＝２０から連続する１６命令を外部メモリにリクエストして、命令テーブル［ＩＴＢＬ３］３２１にフィルする。
【０１１４】
この命令テーブル［ＩＴＢＬ３］３２１は前述の命令テーブル［ＩＴＢＬ０］と同様にロックを行い、内容を変更しない設定とする。この設定とすると分岐直後は命令フェッチミスのペナルティーが発生するが、以降の分岐処理ではヒットするためにペナルティーは発生しない。また、ループ後もループの先の命令はＩＴＢＬ２とＩＴＢＬ１に存在するためにペナルティーは発生しない。これにより、プログラム中のループ処理については、１回のミスヒットのみのペナルティーとなる。このように分岐先の命令を保持したテーブルをロックして内容の書き換えを停止することにより、スムーズな命令の実行が可能となる。
【０１１５】
次にｉｆ−ｅｌｓｅ文のような条件実行の命令列がある場合について、図１４（ｂ）を参照して説明する。ｉｆ−ｅｌｓｅ文のような条件実行の命令列がある場合、ＰＣ（プログラムカウンタ）は前方へと分岐する。例えば図１４（ｂ）に示すようにＰＣ＝１００で分岐命令があり、ＰＣ＝２００へ分岐する命令列があった場合に、分岐命令に到達した時点で分岐先のＰＣ＝２００は命令テーブル内に存在しないため、ＰＣ＝２００から連続する１６命令を外部メモリにリクエストして分岐テーブル［ＩＴＢＬ３］３３１に命令をロード（フィル）してロックする。このように、分岐先の命令の先頭を含む命令をロードしたテーブルについては、その後の書き換え停止の処置、すなわちロックする設定とする。このように、本発明のデータ処理部の制御部１０１は、分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック処理を行う。
【０１１６】
プログラム中に分岐命令が一つしかないとすると、ｓｔａｒｔ＿ｐｃ−ｅｎｄ命令間のループで何回かの処理が行われた中で次のｉｆ／ｅｌｓｅの実行で分岐条件が同じ場合には、ミスヒットしない。本機構では、ｉｆ−ｅｌｓｅで分岐が双方に起きるような場合には効率は悪い。しかし本装置は、データをＳＩＭＤ処理するため、そもそもｉｆ−ｅｌｓｅのような分岐自体は殆ど存在しない。これは、並列処理を行うためデータ要素毎に処理を変えることをプログラムの分岐によって行うと非常に効率が悪いためである。前述のｉｆ／ｅｌｓｅのような場合は、両方実行して結果を選択する手法で行う場合が殆どである。このため、分岐命令は殆どないか１回程度であるために本機構で十分である。
【０１１７】
本発明に従った命令テーブルのフェッチおよびロック処理についての状態遷移表を図１５、図１６に示す。図１５は６５命令以上もしくは、分岐命令が存在する場合の状態遷移図であり、命令をリクエストする際の条件と、各条件に対応するリクエストされた命令のロード（フィル）先と、ロックするテーブルの対応を示している。例えばエントリ３４１では、ＰＣ（プログラムカウンタ）が命令テーブル［ＩＴＢＬ２］の先頭に至った時点の処理であり、この時点ではロックされたテーブルは命令テーブル［ＩＴＢＬ０］のみであるが、次に、ＰＣ（プログラムカウンタ）が命令テーブル［ＩＴＢＬ０］に設定されると、エントリ３４２に示すように命令テーブル［ＩＴＢＬ３］もロックされる。また、命令テーブル［ＩＴＢＬ０〜３］のいずれかにおいて分岐命令が発生した場合には、その分岐命令の格納（フィル先）テーブルとして命令テーブル［ＩＴＢＬ３］が利用されてこの命令テーブル［ＩＴＢＬ３］がロックされる。
【０１１８】
図１６は６４命令以下で分岐命令が存在しない場合の状態遷移図であり、命令をリクエストする際の条件と、各条件に対応するリクエストされた命令のロード（フィル）先の対応を示している。この場合には、命令長に応じて利用するテーブルが決定され、いずれのテーブルのロックも発生しない。例えば、
３２命令以内では、命令テーブル［ＩＴＢＬ０］，［ＩＴＢＬ１］、
３２〜４７命令では、命令テーブル［ＩＴＢＬ０］，［ＩＴＢＬ１］，［ＩＴＢＬ２］、
４７〜６４命令では、命令テーブル［ＩＴＢＬ０］，［ＩＴＢＬ１］，［ＩＴＢＬ２］，［ＩＴＢＬ３］、
これらの命令テーブルが利用される。
【０１１９】
命令保持のために必要とする記憶容量について、上述した本発明に従った命令保持機構（ＩＴＢＬ方式）と、従来方式との比較について図１７を参照して説明する。従来方式としては、本発明の方式と同数（１６×４＝６４命令）の命令保存量を４−ｗａｙのキャッシュで実装した構成とする。本発明のＩＴＢＬ方式では、図１７（ａ）に示すように、命令の実態データ以外に必要な属性データは、タグ（ＴＡＧ）情報としてのＰＣ（プログラムカウンタ）は１６ｂｉｔ、有効、無効等を示すバリッド情報（Ｖ）が１ｂｉｔ、インデックス情報（ＩＤＸ）が４ｂｉｔの計２１ｂｉｔである。１つのテーブルに対してこれらの属性情報を記録することが必要であり、４テーブルを利用する場合には、
２１×４＝４８ｂｉｔ
の属性データを記録することが必要となる。
【０１２０】
一方、一般的な４−ｗａｙキャッシュで実装した場合、図１７（ｂ）に示すように、インデックス（ＩＤＸ）は同じ４ｂｉｔであるが、命令それぞれにタグ（ＴＡＧ）とバリッド（Ｖ）が必要なため、１６命令あたり、
４＋（１２＋１）＊１６＝２１２ｂｉｔ、
６４命令に対して、
２１２×４＝４８４ｂｉｔ
これらの属性データの記録容量が必要となる。
【０１２１】
このように本発明に従った命令テーブルを利用した方式では、通常の命令キャッシュで構成するよりも、命令データ要素以外の属性データの必要記憶容量が、１／１０程度に削減され、テーブルに対するデータロード処理が効率的になり、処理の高速化、および消費電力の削減が実現される。
【０１２２】
次に、多重化の処理について説明を行う。前述のように、レイテンシ削減と命令のバンド幅削減を目的として多重化の機構を保持する。図１８に示すプログラムは３ＤＣＧの処理において実行される頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理に含まれる座標変換、ＭｏｄｅｌＶｉｅｗ＆Ｐｒｏｊｅｃｔｉｏｎ変換処理、およびカラー要素を無変換で出力する処理のプログラムである。
【０１２３】
図１８に示すプログラムはコメント部３５１と命令部３５２によって構成されている。図１８に示すプログラムの命令部３５２には、［ｓｔａｒｔ＿ｐｃ］から［ｍｏｖ  ｏ  １  ｉ１］まで、６命令あるので、１命令が１サイクルとすると、６サイクルでの実行に見える。しかし、実際には浮動小数点演算はレイテンシが３サイクル必要であり、直前の命令の結果を使用して次の命令が実行される。
【０１２４】
従って、実際には図１９（ａ）に示すプログラムの実行を行っていることになる。［ｎｏｐ］は、何もしないオペレーションなしの命令サイクルである。このように１２サイクル必要となる。この処理は１頂点に対しての処理を行っているが、これを３頂点分の処理を同時に行う場合には、図１９（ｂ）に示すプログラムとなる。
【０１２５】
この図１９（ｂ）に示すプログラムの場合、例えば最初の命令［ｆｍａｄｄ  ｒ００．ｘ  ｃ０  ｚｅｒｏ］の結果が使用されるのは３命令先の［ｆｍａｄｄ  ｒ０  ｉ０．ｙ  ｃ１  ｒ０］となり、以下、各命令の結果は３命令先において利用されハザードは起こさない。この図１９（ｂ）に示すプログラムの場合、命令数＝実行サイクル数であるために１６サイクル／３頂点＝約５．３サイクル／頂点となり、１頂点処理と比較して２倍以上の高速化が可能である。但し、この場合は命令数も約３倍あり、命令のバスバンド幅を上げてしまう。本例は簡単な処理であるために３倍になっても命令テーブル内に収まるが、３ＤＣＧ処理においてプログラム長は通常２０−４０命令程度のため、これが３倍になると命令テーブル内に収まらなくなる、というジレンマが発生する。
【０１２６】
本発明に従った装置においては、この問題を解決するため、命令テーブル内に記録する命令を削減する。１つの命令で複数の処理を実行させる多重化を行う。予め設定する設定情報であるＣｏｎｆｉｇにより多重度数を指定する。この多重時指定情報により、命令テーブルに記録された１つの代表の命令から他の命令を生成させる。この結果として、図１９（ｂ）に示すプログラムの実行は、図１９（ｃ）に示すプログラムの実行に置き換えられる。
【０１２７】
図１９（ｃ）のプログラムは、図１８に示す命令列の実行における命令のデコード時に他の命令を生成し、図１９（ｂ）に示すプログラムの実行をさせるものである。
すなわち、例えば、図１８に示す命令列に含まれる
［ｆｍａｄｄ  ｒ０  ｉ０．ｘ  ｃ０  ｚｅｒｏ］
この命令の実行時に、この命令のデコード処理を実行して、
［ｆｍａｄｄ  ｒ１  ｉ１．ｘ  ｃ０  ｚｅｒｏ］
［ｆｍａｄｄ  ｒ２  ｉ２．ｘ  ｃ０  ｚｅｒｏ］
この２つの命令を生成して実行する。すなわち、１つの命令から、他の類似する命令を生成する多重化処理を実行する。多重化に必要な情報、例えば多重度情報などは、予めＣｏｎｆｉｇの設定として登録する。
【０１２８】
例えば、Ｃｏｎｆｉｇに設定する多重度情報としては、
［ＳＨ＿ＭＵＬＴＩ］という設定を用いる。
また、各レジスタファイル、例えばＧＰＲ、ＣＲ、ＦＲの多重度を設定するコンフィグ情報は、
［ＳＨ＿ＭＵＬＴＩＲ＿ＧＰＲ］、［ＳＨ＿ＭＵＬＴＩＲ＿ＣＲ］、［ＳＨ＿ＭＵＬＴＩＲ＿ＦＲ］等の設定を用いる。
【０１２９】
図１９（ｃ）に示すプログラムの動作の場合には、
ＳＨ＿ＭＵＬＴＩ＝３、
ＳＨ＿ＭＵＬＴＩＲ＿ＧＰＲ＝３、
ＳＨ＿ＭＵＬＴＩＲ＿ＣＲ＝１
というように設定を行うと、
命令の生成は３多重化し、ＧＰＲも３多重化し、ＣＲは多重化しない（多重度１）設定となる。
【０１３０】
このように、本発明の情報処理装置のデータ処理部１００における制御部１０１は、命令テーブルに記録された１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う。制御部１０１は、設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、１つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う。
【０１３１】
次に、命令の進行およびデコード時の命令の伸長の機構について図２０を参照して説明する。命令テーブル３６６から命令３６７を取り出す命令を管理するシーケンサでは、多重化を行わない場合は、図中のプログラムカウンタ（ＰＣ）３６１に初期値として開始ＰＣを設定し、分岐でない通常の命令の場合には図中の加算器３６２によりインクリメントしてＰＣを進行し、分岐の場合、分岐先ＰＣである分岐ＰＣへと進行する。ここまでは、一般の構成と同じである。
【０１３２】
多重化を行う場合には事前設定データであるコンフィグＣｏｎｆｉｇの［ＳＨ＿ＭＵＬＴＩ］３６３の設定情報を入力して、更にＰＣをインクリメントしないパス３６４を選択し、多重度回同じＰＣを繰り返す。また、シーケンサに従って命令をデコードする時には、オペランドレジスタの番号をインクリメントする必要がある。この多重化処理により図に示すプログラムカウンタ列３６５が生成され、同一のＰＣを複数回（図の場合は３回）繰り返し利用した多重化処理が実現される。図２１に本実装によるオペランドの一例を挙げる。図２１に示すようにオペランドはニーモニックがインクリメントすると同時にコードがインクリメントするようにしている。
【０１３３】
図２２にＧＰＲを例にオペランドの展開の機構例を示す。例えば、図１８を参照して説明したプログラムの実行にはＧＰＲの格納値［ｒ０］を取り出して演算を実行することが必要となるが、１つの命令を多重化して演算を繰り返して実行する場合、同一のプログラムカウンタによって、複数回ＧＰＲの格納値を取得することが必要となる。図２２はこのＧＰＲ３７１からのデータ取得の多重化処理のための構成であり、図２０を参照して説明した命令の多重化構成と同様、事前の設定データであるＣｏｎｆｉｇの［ＳＨ＿ＭＵＬＴＩＲ＿ＧＰＲ］３７２の設定情報を入力して、繰り返しＧＰＲのデータを出力するパス３７３を選択する設定としている。加算器３７４とパス３７５が設定され加算器３７４によりインデックスが１つずつインクリメントされる構成となっている。
【０１３４】
先に図２０を参照して説明した構成によって命令テーブル３６６から発行されている命令３６７の各オペランドフィールドのコードから、オペランドのインデックスを生成するために、通常はオペランドコード自体をインデックス（ＩＮＤＥＸ）とするところを、事前の設定データであるＣｏｎｆｉｇのＳＨ＿ＭＵＬＴＩＲ＿ＧＰＲというＧＰＲの多重度設定に従って、同一のオペランドＲ０＝０００００００から、多重回インクリメントを繰り返しながら、インデックスを生成する。図２２に示す例では、パス３７３の利用により、１つのニーモニックに対応するコードＲ０＝０００００００が３回繰り返し実行されて、この繰り返し実行に対応して、ＧＰＲ３７１のデータ出力が繰り返し実行される。これらの機構により、図１９（ｃ）に示すプログラムが展開されることになる。
【０１３５】
このように、本発明の情報処理装置におけるデータ処理部１００の制御部１０１は、１つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行う。制御部１０１は、設定情報（Ｃｏｎｆｉｇ）に記録された多重化情報に基づいて１つのニーモニックに対応する同一コードの繰り返し回数を決定する。
【０１３６】
しかし、外部からのデータ供給は１頂点ずつの供給であり変更されていない。前述のような例、すなわち１頂点あたりの処理要素が１ベクタ要素の場合には問題はないが、１頂点あたりの処理要素が２ベクタ以上になった場合、外部からの供給データの順に従って入力レジスタ（ＩＲ）に入力データを配置すると図２３に示すようになり、処理が命令の順序と関連付けられない。
【０１３７】
すなわち、図２３に示す入力レジスタ（ＩＲ）は、下段［Ｉ０］から順番に外部から入力されるデータを示している。最初の［Ｉ０］のエントリには、ある１つの頂点に対応する頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理に適用するデータである頂点の座標値＝（ｘ０，ｙ０，ｚ０，ｗ０）が入力され、次の入力は［Ｉ１］のエントリに示すように、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理に適用するデータであるピクセルのカラー値の赤、緑、青、アルファ＝（ｒ０，ｇ０，ｂ０，ａ０）が入力され、次の［Ｉ２］には、次の頂点に対応する頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理に適用するデータである頂点の座標値＝（ｘ１，ｙ１，ｚ１，ｗ１）というように外部から入力される。出力レジスタ（ＯＲ）に対する出力データの設定も同様となる。
【０１３８】
このような設定とすると、前述した多重化処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理をまとめて実行し、その後、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理をまとめて実行するといった処理順に対応できないことになり、処理に対応した入力レジスタ（ＩＲ）からのデータ取得ができなくなる。
【０１３９】
これを解決するため、入出力レジスタ（ＩＲ／ＯＲ）の入出力機構として、前述した命令の拡張、すなわち多重化に合わせてデータ配置を制御する。図２４に入力レジスタ（ＩＲ）のインデックス（０−１５）を規定する機構を示す。図２４中のカウンタ（ＣＮＴ）レジスタ３８１は、１回のプログラムの開始ＰＣ（プログラムカウンタ）毎に０にリセットされ、データの到達する度に１つずつインクリメントし、０，１，２，３・・・のカウント値を出力する。カウンタ（ＣＮＴ）３８１のカウント値に基づいて、ルックアップテーブル（ＬＵＴ）３８２が参照されルックアップテーブル（ＬＵＴ）３８２からインデックス（ＩＮＤＥＸ）３８５が取得されて、入力レジスタ（ＩＲ）３８６に入力される。
【０１４０】
ルックアップテーブル（ＬＵＴ）３８２では、カウンタ（ＣＮＴ）３８１のカウント値に併せて、事前の設定データであるＣｏｎｆｉｇの多重度を規定するＳＨ＿ＭＵＬＴＩＲ＿ＩＲ３８３、および入力レジスタ（ＩＲ）に対する入力要素数を規定するＳＨ＿ＩＲ３８４の各レジスタ設定に従ってインデックス（ＩＮＤＥＸ）３８５が取得されて、入力レジスタ（ＩＲ）３８６に入力される。入力レジスタ（ＩＲ）３８６に対して入力されるデータ（ＤＡＴＡ）３８７は、インデックス（ＩＮＤＥＸ）３８５の指定する位置へ書き込まれる。
【０１４１】
図２５に、ルックアップテーブル（ＬＵＴ）３８２の構成例を示す。ルックアップテーブル（ＬＵＴ）３８２は、カウンタ（ＣＮＴ）３８１のカウント値３９１と、Ｃｏｎｆｉｇの多重度を規定するＳＨ＿ＭＵＬＴＩＲ＿ＩＲレジスタ３８３の多重度値３９２と、入力レジスタ（ＩＲ）に対する入力要素数を規定するＳＨ＿ＩＲ３８４レジスタの設定値３９３に対応するインデックス値データを取得する構成となっている。
【０１４２】
例えば、
多重度＝３
入力要素数＝６
である場合、
カウント（ＣＮＴ）値＝０〜５に対応するインデックスとして、
インデックス０，３，１，４，２，５が順次出力される。図２５に示すインデックス列４０１である。
【０１４３】
図２４に示す構成において、入力レジスタ（ＩＲ）３８６に入力するデータ（Ｄａｔａ）３８７は、このインデックスに従って決定される入力レジスタの格納位置に格納される。
多重度＝３
入力要素数＝６
の場合のインデックス列［０，３，１，４，２，５］を適用した場合の入力レジスタのデータ格納構成を図２６に示す。
【０１４４】
最初に外部から入力レジスタに入力するデータは、頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理に適用するデータである頂点の座標値＝（ｘ０，ｙ０，ｚ０，ｗ０）であり、この入力データに対応するインデックスは、［０，３，１，４，２，５］の先頭の［０］であり、このインデックス値［０］に従って、入力データ（ｘ０，ｙ０，ｚ０，ｗ０）は、入力レジスタ３８６の［Ｉ０］のエントリ位置に格納される。
【０１４５】
次の入力データは、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理に適用するデータであるピクセルのカラー値の赤、緑、青、アルファ＝（ｒ０，ｇ０，ｂ０，ａ０）であり、このデータ入力に対応するインデックスは、［０，３，１，４，２，５］の２番目の［３］であり、このインデックス値［３］に従って、入力データ（ｒ０，ｇ０，ｂ０，ａ０）は、入力レジスタ３８６の［Ｉ３］のエントリ位置に格納される。
【０１４６】
次の入力データは、頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理に適用するデータである頂点の座標値＝（ｘ１，ｙ１，ｚ１，ｗ１）であり、このデータ入力に対応するインデックスは、［０，３，１，４，２，５］の３番目の［１］であり、このインデックス値［１］に従って、入力データ（ｘ１，ｙ１，ｚ１，ｗ１）は、入力レジスタ３８６の［Ｉ１］のエントリ位置に格納される。
【０１４７】
以下、同様に、各入力データはルックアップテーブル（ＬＵＴ）３８２から取得されるインデックス値に従って入力レジスタ３８６における格納位置が決定されて、その決定した位置にデータが記録されることになる。
【０１４８】
このデータ格納制御処理によって、入力レジスタ（ＩＲ）に対するデータ配置は、前述した多重化処理における頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理をまとめて実行し、その後、フラグメントシェーダ（Ｆｒａｇｍｅｎｔ  Ｓｈａｄｅｒ）処理をまとめて実行するといった処理順に対応した格納順となり、処理に対応した入力レジスタ（ＩＲ）からのデータ取得が可能となる。すなわち、本機構により、データを多重処理する場合の命令の伸長とインデックスの整合が取れる。これらの構成により、レイテンシの隠蔽と命令のバスバンド幅、命令を保存するメモリ量を減らすことができ、消費電力の低減が実現される。
【０１４９】
このように、本発明の情報処理装置では図１に示すデータ処理部１００の制御部１０１が、多重化された命令の実行順に従った命令の実行における利用データを、入力レジスタ（ＩＲ）に実行命令順に対応して格納するためのインデックスを生成する。制御部１０１は、インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブル（図２５参照）を利用してインデックスを取得する。
【０１５０】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。なお、本発明に係る情報処理装置は、３ＤＣＧと画像ＣＯＤＥＣに限らず、その他のデータ処理においても適用可能である。
【０１５１】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【０１５２】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【０１５３】
以上、説明したように、本発明の一実施例の構成によれば、複数の命令テーブルの切り替えや命令の多重化による効率的な命令の実行を実現し、またダブルバッファ構成とした入出力レジスタを利用したデータ格納制御により入出力のオーバーヘッドや命令のレイテンシの解消を図り処理の高速化を実現した。本発明の構成により、命令の圧縮・伸長によるバスバンド幅、外部ＩＯ、メモリ容量の小型化が実現され、データ処理部を構成するＬＳＩの論理回路の実装面積の削減、さらに消費電力の低減が実現される。
【図面の簡単な説明】
【０１５４】
【図１】本発明の情報処理装置を構成するデータ処理ブロックの構成例について説明する図である。
【図２】本発明に係るデータ処理のシーケンスを説明する図である。
【図３】３ＤＣＧ処理およびＣＯＤＥＣ処理のシーケンスについて説明する図である。
【図４】データ処理に適用するプログラム構成および処理シーケンスについて説明する図である。
【図５】本発明の一実施例に係る入力レジスタ（ＩＲ）の構成および動作について説明する図である。
【図６】本発明の一実施例に係る出力レジスタ（ＯＲ）の構成および動作について説明する図である。
【図７】本発明の一実施例に係る入力レジスタ（ＩＲ）および出力レジスタ（ＯＲ）を適用したプログラムの命令シーケンスとＦＩＦＯを適用した例について説明する図である。
【図８】本発明の一実施例に係る入力レジスタ（ＩＲ）および出力レジスタ（ＯＲ）を適用したプログラムの命令シーケンスとＦＩＦＯを適用した例について説明する図である。
【図９】本発明の一実施例に係る命令テーブルの構成例について説明する図である。
【図１０】命令テーブルに対するデータ書き込み（ＦＩＬＬ）処理等を服務テーブルの状態遷移例について説明する図である。
【図１１】命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図１２】命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図１３】分岐の発生する場合の命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図１４】分岐の発生する場合の命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図１５】命令長が６５命令以上か、分岐命令を含む場合の命令リクエストと命令リクエストの実行態様の対応を示す図である。
【図１６】命令長が６４命令以下で分岐命令を含まない場合の命令リクエストと命令リクエストの実行態様の対応を示す図である。
【図１７】本発明の一実施例に係る命令テーブルを利用した場合の必要データ量と、従来構成における必要データ量の比較について説明する図である。
【図１８】頂点シェーダ（Ｖｅｒｔｅｘ  Ｓｈａｄｅｒ）処理のＭｏｄｅｌＶｉｅｗ＆Ｐｒｏｊｅｃｔｉｏｎ変換を実行する場合の命令列の例を示す図である。
【図１９】命令列の多重化処理について説明する図である。
【図２０】命令列の多重化処理を実行するための構成について説明する図である。
【図２１】オペランドの例を示す図である。
【図２２】多重化した命令の実行のためのオペランドの伸張処理機構について説明する図である。
【図２３】入力レジスタ（ＩＲ）に対する一般的なデータ格納構成について説明する図である。
【図２４】多重化した命令の実行のための入力レジスタ（ＩＲ）に対するデータ格納の制御構成について説明する図である。
【図２５】多重化した命令の実行のための入力レジスタ（ＩＲ）に対するデータ格納制御に適用するルックアップテーブル（ＬＵＴ）の構成例について説明する図である。
【図２６】多重化した命令の実行に適応させたインデックスを用いた入力レジスタ（ＩＲ）のデータ格納構成について説明する図である。
【図２７】一般的な３ＤＣＧ、ＣＯＤＥＣの実行構成を示す図である。
【図２８】一般的な３ＤＣＧのデータ処理構成について説明する図である。
【図２９】一般的なＣＯＤＥＣのデータ処理構成について説明する図である。
【符号の説明】
【０１５５】
１１  ＣＰＵ
１２  ＤＳＰ
１３  ＲＡＭ
１４  ＲＯＭ
１５  外部インタフェース
２０  メディア処理ブロック
２１  ＪＰＥＧ処理ブロック
２２  ＭＰＥＧ処理ブロック
２３  ３ＤＣＧ処理ブロック
３１  メモリ
３２  頂点プロセッサ
３３  アンパックプロセッサ
３４  パックプロセッサ
３５  プリミティブアセンブリ
３６  Ｃｌｉｐ，Ｐｒｏｊｅｃｔ  Ｖｉｅｗｐｏｒｔ，Ｃｕｌｌ
３７  ラスタライザ
３８  フラグメントプロセッサ
３９  Ｐｅｒ  Ｆｒａｇｍｅｎｔ  Ｏｐｅｒａｔｉｏｎ
４０  テクスチャメモリ
４１  フレームバッファ処理
４２  フレームバッファ
４３  読み出し制御部
１００  データ処理部
１０１  制御部
１０２  入力レジスタ（ＩＲ）
１０３  出力レジスタ（ＯＲ）
３６１  プログラムカウンタ
３６２  加算器
３６３  ［ＳＨ＿ＭＵＬＴＩ］（Ｃｏｎｆｉｇデータ）
３６４  パス
３６５  プログラムカウンタ列
３６６  命令テーブル
３６７  命令
３７１  ＧＰＲ
３７２  ［ＳＨ＿ＭＵＬＴＩＲ＿ＧＰＲ］（Ｃｏｎｆｉｇデータ）
３７３  パス
３８１  カウンタ（ＣＮＴ）
３８２  ルックアップテーブル（ＬＵＴ）
３８３  ＳＨ＿ＭＵＬＴＩＲ＿ＩＲ（Ｃｏｎｆｉｇデータ）
３８４  ＳＨ＿ＩＲ（Ｃｏｎｆｉｇデータ）
３８５  インデックス（ＩＮＤＥＸ）
３８６  入力レジスタ（ＩＲ）
３８７  データ（ＤＡＴＡ）
【図１】
2008299475.tif 000003
【図２】
2008299475.tif 000004
【図３】
2008299475.tif 000005
【図４】
2008299475.tif 000006
【図５】
2008299475.tif 000007
【図６】
2008299475.tif 000008
【図７】
2008299475.tif 000009
【図８】
2008299475.tif 000010
【図９】
2008299475.tif 000011
【図１０】
2008299475.tif 000012
【図１１】
2008299475.tif 000013
【図１２】
2008299475.tif 000014
【図１３】
2008299475.tif 000015
【図１４】
2008299475.tif 000016
【図１７】
2008299475.tif 000017
【図１８】
2008299475.tif 000018
【図１９】
2008299475.tif 000019
【図２０】
2008299475.tif 000020
【図２１】
2008299475.tif 000021
【図２２】
2008299475.tif 000022
【図２３】
2008299475.tif 000023
【図２４】
2008299475.tif 000024
【図２５】
2008299475.tif 000025
【図２６】
2008299475.tif 000026
【図２７】
2008299475.tif 000027
【図２８】
2008299475.tif 000028
【図２９】
2008299475.tif 000029
【図１５】
2008299475.tif 000030
【図１６】
2008299475.tif 000031