説明

情報処理装置、および情報処理方法、並びにコンピュータ・プログラム

【課題】レジスタ、演算部などを備えたデータ処理部において、効率的なデータ処理および実装面積の削減を実現した構成を提供する。
【解決手段】レジスタ、演算部などを備えたデータ処理部において、複数の命令テーブルの切り替えや命令の多重化により効率的に命令を実行し、またダブルバッファ構成とした入出力レジスタを利用したデータ格納制御により入出力のオーバーヘッドや命令のレイテンシの解消を図り処理の高速化を実現した。本構成により、命令の圧縮・伸長によるバスバンド幅、外部IO、メモリ容量の小型化が実現され、データ処理部を構成するLSIの論理回路の実装面積の削減、さらに消費電力の低減が実現される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。さらに詳細には、例えば3DCGやCODEC処理を伴う3次元グラフィック処理を行なう情報処理装置、および情報処理方法、並びにコンピュータ・プログラムに関する。
【背景技術】
【0002】
3DCG(3−Dimensional Computer Graphics)技術は、コンピュータ内部に格納されている3次元形状のデータを座標変換や陰影付けを行うことにより視覚的にわかりやすく表示する役割を果たし、ビデオゲームやユーザーインターフェースなどで幅広く活用されている。また、画像CODEC処理は、コンピュータ内部に格納されている圧縮された画像を伸長し表示する処理や、その逆処理としての画像圧縮処理であり、デジタルビデオカメラ、デジタルスチルカメラ、携帯電話などで画像データを表示または保存する上で幅広く活用されている。
【0003】
このようにビデオゲーム、デジタルスチルカメラ、デジタルカメラ、携帯電話などの様々なデジタル機器において、3DCGおよび画像CODEC処理は頻繁に活用される。この3DCG処理やCODEC処理を実行する一般的なハードウェア構成例を図27に示す。
【0004】
図27に示す例は、CPU11、DSP12、RAM13、ROM14、外部IF15に、さらに、各処理機能毎のメディア処理ブロック20、例えば図に示す例では、JPEGに対応するCODEC処理を実行するJPEG処理ブロック21、MPEGに対応するCODEC処理を実行するMPEG処理ブロック22、3DCG機能を実行する3DCG処理ブロック23を設定した例を示している。
【0005】
JPEG処理ブロック21、MPEG処理ブロック22、3DCG処理ブロック23は、各処理に応じた専用の処理回路を有している。なお、このような専用処理ブロックは機能IP(Intellectual Property)と呼ばれる。
【0006】
このような機能IP(専用処理ブロック)を用いず、高速の汎用CPUによってソフトウェア処理を行うという手法も存在するが、一般的に画像の描画処理はリアルタイム性が求められるために、通常デジタル機器に搭載されるCPUでは能力的に不足する。このため、専用の処理回路を採用するのが一般的であるが、この場合、それぞれの機能IP(専用処理ブロック)を搭載するためにLSI上の面積が増大するという問題が発生する。
【0007】
それでも近年までは、各機能IPは性能要求が現在に比べると低く、機能毎に論理回路を搭載してもあまり問題とはならなかったが、3DCGにおいてはその表現をより豊かにするためのデータ処理が求められている。例えばシェーダ(Shader)と呼ばれるプログラムによる陰影付け処理を施してより豊かな表現が行われるようになっている。シェーディングは3DCGにおける陰影付けの手法であり、例えば面を構成する頂点の明るさを計算し、各点の明るさを頂点の明るさの線形補間によって求めるといった処理により陰影付けが行われる。この他にも3DCGは性能・機能要求ともに高度になってきている。また、画像CODECもMPEG−2−>MPEG−4−>MPEG−4AVC/H.264のように、コーデックのアルゴリズムがより複雑かつ多様になってきている。
【0008】
3DCGおよび画像CODECの一般的な処理構成について、図28、図29を参照して説明する。3DCGの処理を代表的なAPIであるOpenGLを例にして説明する。図28は、OpenGL 2.0 Overview 2003 3Dlabs,Incに紹介されている3DCGの処理構成である。
【0009】
メモリ31上から、あらかじめ用意されているオブジェクト座標系の頂点情報(Vertices)が頂点プロセッサ(Vertex Processor)32に入力され、頂点プロセッサ(Vertex Processor)32は予め用意されたプログラムで頂点処理を行い、クリップ座標系に設定した頂点情報を出力する。その結果は、頂点情報処理実行部35,36において、Primitive Assembly、Clip、Project Viewport Cull等の処理を実行した後、ラスタライズ(Rasterize)37が行われる。
【0010】
ラスタライズ(Rasterize)された結果のフラグメント(Fragments)はフラグメントプロセッサ(Fragment Processor)38 に入力されてFragment処理を行う。この際テクスチャ(Texture)メモリ40から読み出されたTextureとの各種ブレンド処理も行われる場合がある。Fragment処理された結果はPer Fragment Operation39が行われフレームバッファ(Frame Buffer)41へ書き込み、1フレーム分の処理が行われた結果が読み出されて表示が行われる。なお、この処理の詳細は、OpenGL2.0規格書The OpenGL Graphics Sysem: A Specificationに記載されている。
【0011】
また、画像CODECの圧縮処理は、例えば図29に示すCODEC処理構成によって実行される。入力画像は、フレーム内予測、もしくは異なるフレームの動き補償の結果を差分され、直交変換、量子化をされてエントロピー符号化される。また、量子化後に逆量子化、逆直交変換された結果からフレーム内予測、もしくは動き補償された結果を加算された結果がループフィルタでフィルタされ、フレームメモリに蓄積される。前述の動き補償は、この蓄積されたフレームメモリ上の画像から動き予測されて行われる。また、動き予測のベクタやフレーム内予測の方式も上と同様にエントロピー符号化される。この結果がストリーム化されて出力される。復号化処理は、符号化処理と基本的に逆のシーケンスで処理が実効される。ただし、動き予測や、逆変換(量子化、直交変換)がない処理として処理が行われる。
【0012】
図28には3DCG処理、図29にはCODEC処理の処理構成を示したが、一般的な従来構成においては、これらの各処理は、それぞれ独自の機能IP、すなわち処理ブロックを設定して実行している、すなわち、図27を参照して説明したCODEC処理を実行するMPEG処理ブロック22、3DCG機能を実行する3DCG処理ブロック23などである。
【0013】
画像CODEC処理において複数の規格をサポートする場合は動き検出や動き補償などの一部の回路を共有化する場合はあるが、異なる部分も多く、更に3DCG回路などの他の機能の論理回路との共有化は行われておらず、図27に示すように、JPEGに対応するCODEC処理を実行するJPEG処理ブロック21、MPEGに対応するCODEC処理を実行するMPEG処理ブロック22など、別々の機能IP(専用処理ブロック)として実現されている。
【0014】
このような手法によると、それぞれの機能IP(専用処理ブロック)を搭載することとなり回路規模が増大することになる。また各処理における高度化要求、データ処理量の増大に伴い機能IP(専用処理ブロック)を論理回路として実装するゲート規模がさらに増大し、結果としてデジタル機器に搭載されるLSIの面積の増大、製造コストの上昇が加速する要因となっている。また機器の実用上もLSI面積が大きいと、個々の機能を使用していなくてもリーク電流の消費によりLSIおよび機器の電力消費が増大するという問題が発生する。
【発明の開示】
【発明が解決しようとする課題】
【0015】
本発明は、上述の問題点に鑑みてなされたものであり、例えば、3DCG処理やCODEC処理などの様々なデータ処理に応じてレジスタ設定や演算部による演算処理を適宜変更してデータ処理を実行する構成として、LSI上の面積削減および電力削減を実現する情報処理装置、および情報処理方法、並びにコンピュータ・プログラムを提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明の第1の側面は、
情報処理装置であり、
オペランドを入力する入力レジスタと、
前記オペランドを適用した演算を実行する演算実行部と、
データ処理における設定情報(Config)と命令テーブルに格納されたデータ処理プログラムに基づいてデータ処理制御を実行する制御部と、
を有するデータ処理部を備え、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記制御部は、プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行う構成であることを特徴とする情報処理装置にある。
【0017】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行う構成であることを特徴とする。
【0018】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記命令テーブルに記録された1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする。
【0019】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記設定情報(Config)に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする。
【0020】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、1つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行う構成であることを特徴とする。
【0021】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、前記設定情報(Config)に記録された多重化情報に基づいて1つのニーモニックに対応する同一コードの繰り返し回数を決定する構成であることを特徴とする。
【0022】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成する構成であることを特徴とする。
【0023】
さらに、本発明の情報処理装置の一実施態様において、前記制御部は、順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得する構成であることを特徴とする。
【0024】
さらに、本発明の情報処理装置の一実施態様において、前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、前記制御部の制御に基づいて前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行う構成であることを特徴とする。
【0025】
さらに、本発明の情報処理装置の一実施態様において、前記情報処理装置は、さらに、データ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、前記制御部の制御に基づいて前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行う構成であることを特徴とする。
【0026】
さらに、本発明の情報処理装置の一実施態様において、前記データ処理部は、3DCG処理およびCODEC処理を実行する構成であることを特徴とする。
【0027】
さらに、本発明の情報処理装置の一実施態様において、前記演算実行部は、並列処理可能な複数の演算部によって構成され、3DCG処理およびCODEC処理において、各処理に応じた入力データを適用した並列演算を実行する構成であることを特徴とする。
【0028】
さらに、本発明の情報処理装置の一実施態様において、前記演算実行部は、3DCG処理における頂点シェーダ(Vertex Shader)処理の入力値(x,y,z,w)を各々利用した並列演算と、3DCG処理におけるフラグメントシェーダ(Fragment Shader)処理の入力値(r,g,b,a)を各々利用した並列演算と、CODEC処理におけるDCT処理の入力値(a0,a1,a2,a3)を各々利用した並列演算を切り替えて実行する構成であることを特徴とする。
【0029】
さらに、本発明の第2の側面は、
情報処理装置において実行する情報処理方法であり、
制御部が、予め設定された設定情報(Config)と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行するデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行うステップを含むことを特徴とする情報処理方法にある。
【0030】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行うステップを含むことを特徴とする。
【0031】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、前記命令テーブルに記録された1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする。
【0032】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、前記設定情報(Config)に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする。
【0033】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、1つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行うステップを含むことを特徴とする。
【0034】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、前記設定情報(Config)に記録された多重化情報に基づいて1つのニーモニックに対応する同一コードの繰り返し回数を決定するステップを含むことを特徴とする。
【0035】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成するステップを含むことを特徴とする。
【0036】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得するステップを含むことを特徴とする。
【0037】
さらに、本発明の情報処理方法の一実施態様において、前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、前記制御部は、前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行うことを特徴とする。
【0038】
さらに、本発明の情報処理方法の一実施態様において、前記情報処理装置は、さらにデータ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、前記制御部は、前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行うことを特徴とする。
【0039】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、3DCG処理およびCODEC処理を実行するステップであることを特徴とする。
【0040】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、並列処理可能な複数の演算部によって構成され演算実行部において、3DCG処理およびCODEC各処理に応じた入力データを適用した並列演算を実行するステップを含むことを特徴とする。
【0041】
さらに、本発明の情報処理方法の一実施態様において、前記データ処理ステップは、並列処理可能な複数の演算部によって構成され演算実行部において、3DCG処理における頂点シェーダ(Vertex Shader)処理の入力値(x,y,z,w)を各々利用した並列演算と、3DCG処理におけるフラグメントシェーダ(Fragment Shader)処理の入力値(r,g,b,a)を各々利用した並列演算と、CODEC処理におけるDCT処理の入力値(a0,a1,a2,a3)を各々利用した並列演算を切り替えて実行するステップを含むことを特徴とする。
【0042】
さらに、本発明の第3の側面は、
情報処理装置においで情報処理を実行させるコンピュータ・プログラムであり、
制御部に、予め設定された設定情報(Config)と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行させるデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行わせるステップを含むことを特徴とするコンピュータ・プログラムにある。
【0043】
なお、本発明のコンピュータ・プログラムは、例えば、様々なプログラム・コードを実行可能な汎用コンピュータ・システムに対して、コンピュータ可読な形式で提供する記憶媒体、通信媒体によって提供可能なコンピュータ・プログラムである。このようなプログラムをコンピュータ可読な形式で提供することにより、コンピュータ・システム上でプログラムに応じた処理が実現される。
【0044】
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施例や添付する図面に基づくより詳細な説明によって明らかになるであろう。なお、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【発明の効果】
【0045】
本発明の一実施例の構成によれば、複数の命令テーブルの切り替えや命令の多重化による効率的な命令の実行を実現し、またダブルバッファ構成とした入出力レジスタを利用したデータ格納制御により入出力のオーバーヘッドや命令のレイテンシの解消を図り処理の高速化を実現した。本発明の構成により、命令の圧縮・伸長によるバスバンド幅、外部IO、メモリ容量の小型化が実現され、データ処理部を構成するLSIの論理回路の実装面積の削減、さらに消費電力の低減が実現される。
【発明を実施するための最良の形態】
【0046】
以下、図面を参照しながら、本発明の情報処理装置、および情報処理方法、並びにコンピュータ・プログラムの詳細について説明する。まず、本発明の概要について説明する。本発明の情報処理装置では、例えば3DCG処理や、MPEG,JPEGなどの様々な規格のCODEC処理の少なくとも一部の処理について共通のハードウェアを利用して実行する。例えば、3DCG処理における頂点シェーダ(Vertex Shader)処理、3DCG処理におけるフラグメントシェーダ(Fragment Shader)処理、CODEC処理におけるDCT処理などを共通の演算部を用いて実行する。
【0047】
3DCG処理における頂点処理やフラグメント処理はユーザとしてのプログラマにプログラムを開放する必要があり、また、画像CODEC処理において実行されるマクロブロックの直交変換や量子化(またはそれらの逆変換)やブロック内フィルタ処理は、JPEG、様々なMPEGなど各種のCODEC規格によって処理が異なるためにプロセッサによって行うことが望ましい。
【0048】
しかし、これらの処理を一般的なプロセッサで行う場合、処理データのメモリからの取得や書き込みを行う場合、データ入出力をロード/ストア命令で読み込み/書き出すということが必要となる。汎用の処理を行う場合にはロードストアによる入出力が適切であるが、命令を実行する時間およびロード命令の場合は、命令を発行してからデータが到達するまでのオーバーヘッドがかかってしまう。3DCGや画像CODEC処理のようなメディア処理の場合には、データはストリーム型、あるいはパイプライン型に流れていく処理であり、外部で処理を行う入出力データが規定されるため、プロセッサが自由かつ能動的にメモリ上のデータの入出力を行うためのロードストアによりデータを入出力する必要はなく、かえって効率が悪い。
【0049】
プロセッサでの処理に必要なデータを外部から受動的かつ固定的に取得する構成とすれば、このオーバーヘッドは小さくすることが可能である。また、外部で処理するデータを、例えば入出力FIFOに供給して、命令に基づく入出力FIFOへのアクセスを可能とする構成も存在するが、このような手法では、外部から入力データをFIFOに書き込み、出力データを出力FIFOから書き出す実装手法が考えられるが、FIFO実装の場合、FIFOからのデータ読み取り処理として実行されるPOPを行うとFIFO上からは元のデータが無くなるために同じデータを2回以上使用するような場合には、このPOPデータを内部の一時保存領域に移動させる必要があり、この実行時間もオーバーヘッドになる。
【0050】
さらに、3DCGや画像CODEC処理のようなメディア処理においては、単一のプログラム処理に対して大量の処理対象データが存在するため、プログラムを複数回繰り返して処理を行うことが多い。このような同一処理プログラムの繰り返しを行う場合、1回の処理が終了した段階で分岐命令によりプログラムの開始地点へ戻ることが一般的である。しかし、この時、命令を保持する領域・容量が限られているために既に一度実行した命令で、かつ再度実行されるにもかかわらず保持領域に存在しない場合が多い。このために、命令の再度読み出しが起こりオーバーヘッドとなる。
【0051】
また、3DCG処理においては、頂点要素やフラグメント要素に対して浮動小数点演算を行うことが殆どであるが、一般的に同期論理回路において浮動小数点演算は通常2サイクル以上のレイテンシ(遅延)が発生する場合が多い。このために一つの命令の結果を使用した命令はすぐには実行できず、実行時間を多くする要因となっている。もしくは、CODECのマクロブロック処理においてはプログラムが長大であり、命令が再利用されずキャッシュにヒットしないために、ほぼ1サイクルに1命令の読み込みが必要であり、例えば1命令のbit幅が32bit=4Byteの場合、毎サイクル4Byteのバンド幅を必要とすることになり、これはシステムとしては無視できる大きさではない。
【0052】
本発明の情報処理装置は、3DCG処理や異なる規格のCODEC処理を共有化した機能ブロックで実現し、例えば、上述の入出力操作のオーバーヘッド、複数回処理でのオーバーヘッド、演算レイテンシによるオーバーヘッドを解消し高速に処理を行い、必要とする回路を削減してLSI上の面積削減および電力削減を実現するものである。
【0053】
本発明の情報処理装置は、3DCG処理や異なる規格のCODEC処理の少なくとも一部を共有するものであり、特に、それぞれの処理における類似処理について、プログラマブル回路を適用して、各処理に併せて実行する処理を変更することでより多くの共通部分を持つメディア処理プロセッサを実現している。
【0054】
例えば、3DCGにおいては、先に図28を参照して説明したように、頂点(Vertex)処理、フラグメント(Fragment)処理などが実行されるが、
頂点処理としての頂点シェーダ(Vertex Shader)処理では、頂点の座標値=(x,y,z,w)を適用したデータ処理として、
(x',y',z',w')=ModelView&Projection行列*(x,y,z,w)
上記の式に従った処理が実行される。
また、フラグメントシェーダ(Fragment Shader)処理においては、ピクセルのカラー値の赤、緑、青、アルファ(r,g,b,a)を適用したデータ処理として、
(r,g,b,a)=(r1,g1,b1,a1)+(r2,g2,b2,a2
上記の式に従った処理が実行される。
【0055】
一方、画像CODEC処理においては、例えばMPEG−4AVC/H.264の一次元整数DCT処理が実行されるが、このDCT処理においては、変換対象とする入力値(a0,a1,a2,a3)に対して、
(A0,A1,A2,A3)=変換行列*(a0,a1,a2,a3)という式に従ったDCT変換が実行される。
【0056】
このように、3DCGの頂点シェーダ(Vertex Shader)処理やフラグメントシェーダ(Fragment Shader)処理、そしてCODECのマクロブロック処理はベクタ型の演算が多く、SIMD演算プロセッサ処理に向いている。更に、3DCGのシェーダ(Shader)処理は、前述したように、ユーザとしてのデザイナー(クリエイター)がプログラム可能なように解放されている必要があるため、プロセッサ処理であることを前提としており、CODECのマクロブロック処理は、JPEG、MPEG−4、MPEG−4AVC/H.264などの規格各々で異なった処理として実行されるため、固定論理回路で実現するよりも、可変可能なプロセッサ処理が望ましく、前述の理由も含めてシェーダーエレメント(SE)のように、1命令で複数のデータを処理するSIMD(Single Instruction/Multiple Data)型のプロセッサで処理を行うことが適切である。
【0057】
本発明の情報処理装置では、入出力機構としての竜力レジスタ(IR)を、FIFOでなくダブルバッファ形式としている。さらにプログラム上ではダブルバッファの切り替えを意識することなく入出力を可能としている。また、複数回の繰り返しでのオーバーヘッドを解消するために、本発明ではプログラムの実行自体がこれらメディア処理に向くように、
開始PC(プログラムカウンタ)−>複数の命令−>終了命令
という構成で終了命令により開始PC(プログラムカウンタ)に戻るようにしている。その上で開始PC近辺の命令群が保持されるような機構を持つ構成とすることにより、複数回の繰り返しの繰り返し時点でのオーバーヘッドを解消することを可能としている。
【0058】
SIMD処理を行う場合、分岐自体があまり存在しないが、少なくとも1個の分岐先命令群を固定的に命令テーブル上に保持する設定とすることによりループ処理等での分岐のオーバーヘッドを解消することを可能としている。また、演算のレイテンシによるオーバーヘッドを解消するために、本発明においては、複数のデータのまとまりを一回のプログラムで処理を行う手法を採っている。この場合、同じ操作を行う命令を複数回実行するために命令の長さが回数倍になる。このために、本発明では更に、複数回の命令を代表とする1つの命令に圧縮して実行時に伸長する機構を持つことにより命令量を削減している。これにより、命令を保持する内部および外部の領域を削減することにより、LSIの実装面積を削減することが可能となる。また、命令の入出力量も少なくなり、外部メモリとのバンド幅の削減となるため消費電力を低減する。
【0059】
以下、本発明の実施の形態について、詳細に説明する。
本発明の一実施形態に係る情報処理装置は、3DCGの描画および画像CODEC処理を行う。本発明の情報処理装置は、オペランドを入力する入力レジスタと、オペランドを適用した演算を実行する演算実行部と、データ処理における設定情報(Config)と命令テーブルに格納されたデータ処理プログラムに基づいてデータ処理制御を実行する制御部を有するデータ処理部を有する。図1に本発明の一実施形態に係る情報処理装置のデータ処理部100の構成例を示す。
【0060】
制御部(SEQ&ISEQ)101は、データ処理部100の各種のデータ処理の制御を行う制御部であり、外部から設定されるレジスタ(以下Config)および命令により、本装置の動作を規定する制御部としてのブロックである。
制御部(SEQ&ISEQ)101は、以下の構成要素(a)〜(c)を含む。
(a)CFG
レジスタ設定などの設定情報であるConfigを保持するレジスタである。
(b)IFU
命令テーブルに命令を書き込み登録(フェッチ)する処理を実行するブロックである。
(c)ITBL
IFUによってフェッチされた命令を保持する命令テーブルである。なお、詳細は後述するが、命令テーブルは、例えば4つの分割された命令テーブル[ITBL0〜ITBL3]によって構成される。
【0061】
図1に示すSU,AU00〜AU03は演算部であり、例えば、
3DCG処理における頂点シェーダ(Vertex Shader)処理の入力値(x,y,z,w)を各々利用した並列演算や、
3DCG処理におけるフラグメントシェーダ(Fragment Shader)処理の入力値(r,g,b,a)を各々利用した並列演算や、
CODEC処理におけるDCT処理の入力値(a0,a1,a2,a3)を各々利用した並列演算を実行する。
これらの演算は制御部によって適宜、切り替えて実行される。
【0062】
SUは、スカラ型の算術回路であり、浮動小数点の逆数、平方根、逆平方根、log/exp/sin/cosなどの初等関数を演算する。
AU00−AU03は、それぞれIALUとF/I−ALUを一つずつ保持するブロックである。
IALUは、整数の算術論理演算回路である。
F/I−ALUは、整数算術論理演算および単精度浮動小数点算術演算を行う回路である。
【0063】
GPR/CR/FRは、内部で一時的にデータを保存するレジスタファイルである。
SPRは、定数や演算エラー結果等を保持する。
LUTはスカラ型のデータを保持する。
PR/ZRは、フラグメント情報を入力し保持する。
IRは、入力データを保持する入力レジスタ102。
ORは、出力データを保持する出力レジスタ103。
DRはロードストアデータを保持するデータレジスタ。
TRUはTU(Texture Unit)へのリクエストを行う。
【0064】
図1に示す情報処理装置のデータ処理部100の構成を適用した情報処理の動作の概略について説明する。情報処理の大枠の処理フローについて、図2を参照して説明する。
【0065】
図1の情報処理装置のデータ処理部100を適用した処理を行う場合、まずは、外部からレジスタ設定情報等の設定情報(Config)の書き込み処理であるConfig書き込み処理(ライト)が実行される。すなわち、レジスタ設定情報(Config)が図1に示すSEQ&ISEQ内のCFGブロックに保持され、このConfigデータに基づいて全体の動作が規定される。図2に示す例では、レジスタ設定情報(Config)201,202として、
SH_INST_BASE
SH_IR
SH_OR
SH_CSR RUN
これらの情報の書き込み例を示している。
【0066】
このようなレジスタ設定情報を含む設定情報(Config)の設定により、一まとまりのデータの処理の動作が規定される。設定情報(Config)201に従って処理対象データ211のデータ処理が実行され、次に、設定情報(Config)202が設定されて、設定情報(Config)202に従って処理対象データ212のデータ処理が実行される。以下、この繰り返しが行われる。
【0067】
設定情報(Config)201,202の構成について説明する。
SH_INST_BASE
というConfigデータはプログラムの開始PC(プログラムカウンタ)を設定するConfigであり、命令の読み出しや実行の情報として使用する。
また、
SH_IR
これは、IR入力レジスタから入力するデータの種類や個数の設定情報であり、
SH_OR
これは、OR出力レジスタに関する同様の情報である。
SH_CSR
は、起動・停止を行うためのConfigデータであり、一連のConfig設定の最後にSH_CSRで起動(RUN)がかけられる。
【0068】
初期状態では本装置は停止しており、一連のConfigを設定後、SH_CSRによって起動し、1まとまりの処理対象データを入力して、最後のデータの入力が終わるとSH_CSRで停止(STOP)をかけ、次のConfig設定が行われる。つまり、Configは対象データに先行して設定され、初期状態では最後に起動、2回目以降は、最初に停止、最後に起動がかけられる。
【0069】
起動がかけられると、まずは、図1に示す情報処理装置のデータ処理部100のSEQ&ISEQ内のIFUからSH_INST_BASEの設定の開始PC(プログラムカウンタ)の命令を外部にフェッチし取得しITBLに保持する。また、同様に入力の設定に従い、データを取得してIRへ保持する。
【0070】
図1に示す情報処理装置のデータ処理部100は、3DCG処理における頂点(Vertex)処理、フラグメント処理やCODEC処理におけるDCT処理などを実行する。これらの処理の種類に応じてレジスタ設定情報(Config)が書き込まれることになり、書き込まれた設定情報に従った処理が図1に示す構成を利用して行われることになる。
【0071】
例えば、本装置がフラグメント(Fragment)処理を行う設定の場合には、フラグメント情報を入力し保持するレジスタである図1に示すPRやZRへフラグメントの情報も取得する。命令とデータが到達すると、シーケンサ(SEQ)により、先頭PCから命令が実行される。命令は基本的には、入力レジスタ(IR)から入力したデータに対して、AU00−AU03やSUの演算器を使用して演算命令を実行し、GPR/CR/FR/SPR/LUT等のレジスタファイルにデータを一時保存しながら最終結果を出力レジスタ(OR)から外部へ出力する。
【0072】
また、処理の内容により、外部メモリへ一時保存、取得を行う場合には通常のロードストア命令を実行する機構を持ち、データレジスタ(DR)を経由して入出力を行い、更に外部のハードウェア(HW)演算ブロックであるテクスチャユニット(Texture Unit)へのリクエストを行うTRUブロックも機構として持っている。
【0073】
3DCGの典型的な動作シーケンスは、図3(a)に示すように、頂点シェーダ(Vertex Shader)処理、ラスタライズ(Rasterize)処理、フラグメントシェーダ(Fragment Shader)処理となる。図1に示す情報処理装置のデータ処理部100では、この3つの処理のうち、頂点処理を行う頂点シェーダ(Vertex Shader)処理およびフラグメント処理を行うフラグメントシェーダ(Fragment Shader)処理を行うことになる。
【0074】
図1に示す情報処理装置のデータ処理部100によって、頂点シェーダ(Vertex Shader)処理を行う場合には、外部メモリからIRを介して頂点情報を取得して頂点処理を行い、頂点処理後のデータを、出力レジスタ(OR)を介してラスタライザ(Rasterizer)へ出力する。
【0075】
また、図1に示す情報処理装置のデータ処理部100によって、フラグメントシェーダ(Fragment Shader)処理を行う場合にはラスタライザ(Rasterizer)からフラグメント情報を受け取り処理結果を外部メモリへと出力する。
【0076】
また、画像CODEC処理におけるマクロブロック処理は、図3(b)に示すように、直交変換、量子化、ループ内フィルタ処理を行うことになる。図1に示す情報処理装置のデータ処理部100によってこの直交変換、量子化、ループ内フィルタ処理を含むマクロブロック処理を行う場合、図3(b)に示すように、入出力は全て外部メモリとのやり取りになる。
【0077】
図1に示す情報処理装置のデータ処理部100によって実行する様々な処理におけるプログラムの進行例について図4を参照して説明する。図4(a)は、分岐命令がない場合のプログラム進行例であり、図4(b)は分岐命令がある場合のプログラム進行例を示している。
【0078】
プログラムの進行は、先に図2を参照して説明したレジスタ設定情報(Config)の
SH_INST_BASE
で設定される開始PC(プログラムカウンタ)から実行を開始し、分岐命令が入らない限りは、
開始PC−>開始PC+1−>開始PC+2−>,,,
というようにPCがインクリメントして進行する。
プログラムの終了は、END命令という終了専用の命令によって行われる。このEND命令は、開始PCへの絶対分岐命令であり、END命令が発行すると開始PCに戻るような大きなループ構造で動作する。
【0079】
この開始PCからEND命令間で操作の単位を行う。また、プログラム中に分岐命令が有る場合には、分岐命令に到達すると分岐先PCへと分岐するが、この場合も最終的にEND命令に到達すると、開始PCへと戻る。このようにプログラムの処理として、1プログラムでのデータ処理を複数回行い、大量のデータ処理を行う。
【0080】
次に、本発明の装置における処理の詳細について順を追って説明する。
まずは、入出力機構の詳細について説明する。入力レジスタ(IR)102と出力レジスタ(OR)103はそれぞれ入力用と出力用のレジスタである。
【0081】
入力レジスタ(IR)102は、図5に示すように、
各々が128bit*16本のレジスタ領域を持つフロント(front)とバック(back)の2つのバッファからなるダブルバッファで構成される。
【0082】
バック(back)側は、図1に示す情報処理装置のデータ処理部100の外部からの書き込み(ライト)に利用され、フロント(front)側は情報処理装置のデータ処理部100内部からプログラムでリードされる。初期状態では、バック(back)側にデータが書き込まれ、全てのデータが揃い開始PCの命令が動作可能な時点で、バック(back)とフロント(front)がフリップ(入れ替え)する。プログラムが動作している間はフロント(front)側がリードされ、同時にバック(back)側に、次の処理データがライトされる。プログラムが終了命令を発行し再度開始PC(プログラムウンタ)に到達して、かつバック(back)側のデータが揃っている場合にはフリップして次のデータセットの処理が実行される。
【0083】
このように、入力レジスタ(IR)102は、図1に示すデータ処理部100外からのデータ入力用バッファと、データ処理部100内部からのデータ取得用バッファからなるダブルバッファ構成を有し、制御部の制御に基づいてデータ入力用バッファとデータ取得用バッファとの入れ替え処理を行う構成となっている。
【0084】
次に出力レジスタ(OR)103の構造と動作について、図6を参照して説類する。出力レジスタ(OR)は図6に示すように、図5に示す入力レジスタ(IR)102と同様、
各々が128bit*16本のレジスタ領域を持つフロント(front)とバック(back)の2つのバッファからなるダブルバッファで構成する。
【0085】
フロント(front)側は情報処理装置のデータ処理部100内部からプログラムで書き込み(ライト)処理が実行され、バック(back)側は、図1に示す情報処理装置のデータ処理部100の外部への出力データの記録領域として利用される。
【0086】
初期状態から開始PC(プログラムカウンタ)に到達してプログラムにより出力レジスタ(OR)103へのデータ書き込み(ライト)が行われ、終了命令に到達すると、フロント(front)とバック(back)とがフリップ(入れ替え)する。次に2回目のデータセットに対するプログラム実行中は、同様にフロント(front)側にデータ書き込み(ライト)が行われると同時にバック(back)側からデータが出力される。
【0087】
上述のようにデータ処理部100での処理結果を保持する出力レジスタ(OR)103は、データ処理部100内部からのデータ書き込み用バッファと、データ処理部100外へのデータ出力用バッファとからなるダブルバッファ構成を有し、制御部101の制御に基づいてデータ書き込み用バッファとデータ出力用バッファとの入れ替え処理を行う構成となっている。
【0088】
このように情報処理装置のデータ処理部100の実行する命令単位でのデータ入出力の操作は行わずにデータが設定される。この手法の利点としては入出力のオーバーヘッドを解消するとともに、FIFO実装と比較して1組のレジスタではライトとリードが同時には起きないために1ポートのメモリとして実装可能であるという点がある。通常、このような保持をSRAMで行った場合、ポート数に比例して面積が増大するが、本装置は1ポートで良いために面積を削減できる。もしFIFOでも現在実行中の容量と次の実行する容量とを保持すると2面分は必要であり、もし、これを1ポートで構成すると、現在の処理が終了しないと次の分が取得できないために実行が遅くなる。
【0089】
また、情報処理装置のデータ処理部100の実行するプログラムの実行に際してはこの入出力レジスタのデータのリードライト処理が行われるが、本装置の命令セットでは、オペランドにIR/ORを直接指定可能となる。
【0090】
図7を参照してプログラム例について説明する。図7には、
(a)本発明のダブルバッファ型の入力レジスタ(IR)と出力レジスタ(OR)を利用した場合のプログラムシーケンス
(b)FIFOレジスタを利用した場合のプログラムシーケンス
(c)FIFOレジスタと特殊オペランドを利用した場合のプログラムシーケンス
これらのプログラムシーケンスを示している。(a)〜(c)のいずれも同じデータ処理を実行するシーケンスである。
【0091】
例えば(a)に示す命令中の
「madd r0 i0 c0 0」という命令は、i0、c0のベクタ要素を乗算し、0を加算してr0レジスタに書き込み(ライト)を行う、という操作を表す命令である。なお、
r0:図1に示す装置中のGPRの格納データ、
i0:入力レジスタ(IR)の格納データ、
c0〜c3:定数、
o0:出力レジスタ(OR)の格納データ、
を意味している。
(a)に示す最後の命令は、最終の結果をo0レジスタ(出力レジスタ(OR)に書き込む(記録)処理を行われる命令である。
【0092】
(a)に示す命令は、
r0←i0×c0+0
r0←i0×r0+c1
r0←i0×r0+c2
o0←i0×r0+c3
これらの演算を順次実行する命令である。
【0093】
(b)は入力レジスタとしてFIFOを適用した場合のプログラムシーケンスを示している。(a)と同じ演算を行う例を示している。なお、
r0,r1:計算に適用する値を格納するレジスタにおける格納値
ififo:FIFOレジスタの格納データ(入力値)
c0〜c3:定数、
ofifo:FIFOレジスタの格納データ(出力値)、
を意味している。
【0094】
(b)に示すFIFO実装においては、
(a)に示す命令である「madd r0 i0 c0 0」という命令に対応させて入力レジスタ(IO)をFIFOレジスタに置き換えると、
「madd r0 fifo c0 0」
というような命令セットが想定されるが、FIFOの場合、FIFOからのリードデータはPOP、すなわち、FIFOレジスタのデータ読み取り部に次のデータが自動的に書き込まれてしまうため、後続の命令ではFIFOから同一のデータを読み取ることが出来なくなってしまう。
【0095】
従って、図7(b)に示すように、まず、
「mov r1 fifo」という命令を実行して、FIFOから読み取られるデータを他のレジスタに移動(move)させて書き込む処理をおこなわなければならない。この結果、実行サイクルが1つ増加してしまう。
【0096】
このような実行サイクルの増加を防止するため、FIFOからのデータ読み出しに際して、FIFOのデータ読み出し部のデータの入れ替えを停止させる処理(Not Increment)をオペランドによって実行させる構成とすることもできる。例えば、
fifo−i:Increment実行
fifo−n:Increment非実行、
これらのオペランドを準備して、fifoをPOPする/しないという制御を行う実装も考えられる。この実装によれば、図7(c)のように、実行サイクルは増加することなく、(a)の場合と同一のサイクル数となる。
【0097】
しかし、この図7(c)に示すfifoをPOPする/しないという制御を行う場合でも、ある命令の処理結果を再利用する演算を行うといった場合は、やはり移動命令(Move)を実行してFIFO以外の例えばGPR等のレジスタにデータを保存する必要がある。この令について図8を参照して説明する。
【0098】
図8は、
(a)本発明のダブルバッファ型の入力レジスタ(IR)と出力レジスタ(OR)を利用した場合のプログラムシーケンス
(c)FIFOレジスタと特殊オペランドを利用した場合のプログラムシーケンス
これらのプログラムシーケンスを示している。(a),(c)のいずれも同じデータ処理を実行するシーケンスである。
【0099】
(a)のシーケンスについて説明する。
add r0 i0 c0は、i0+c0の結果をr0に書き込む処理、
add r0 i1 r0は、i1+r0の結果をr0に書き込む処理、
add r0 i2 r0は、i2+r0の結果をr0に書き込む処理、
add r0 i3 r0は、i3+r0の結果をr0に書き込む処理、
sub o0 r0 c4は、r0−c4の結果をr0に書き込む処理、
brc:br_pcは、条件分岐処理、
mul r1 i0 r0は、i0×r0の結果をr1に書き込む処理、
mul r1 i1 r1は、i1×r1の結果をr1に書き込む処理、
mul r1 i2 r1は、i2×r1の結果をr1に書き込む処理、
mul o0 i3 r1は、i3×r1の結果をo1に書き込む処理、
これらの処理を示している。
【0100】
条件分岐処理以降の処理では、条件分岐処理前において利用している入力レジスタの複数の設定値[i0〜i3]を利用した演算として実行されている。このように複数の入力レジスタの値を後続のプログラム命令において利用する場合は、FIFOを利用してかつ、
fifo−i:Increment実行
fifo−n:Increment非実行、
このようなオペランドを利用しても、結局、複数の値[i0〜i3]をFIFOから繰り返して再読み込みすることはできないので、結果として、図8(c)に示すように、命令の実行前にFIFOから4つの値を読み出して他のレジスタ(例えばGPR)に保持するといった処理が必要となり、命令サイクル数が増加してしまうことになる。
【0101】
ダブルバッファ型のレジスタを利用する構成では、ダブルバッファ型のレジスタ(IR)から任意のタイミングでデータ読み込みが可能となり、図8(a)に示すように余分な命令サイクルを追加する必要がなく効率的な処理が実現される。すなわち、自由に入力要素にアクセス可能であるため、命令サイクルを消費することがなく高速に処理が行える。
【0102】
次に命令を保持する命令テーブル[ITBL]について図9を参照して説明する。本装置は図9に示すように命令テーブル[ITBL]としてITBL0、ITBL1、ITBL2、ITBL3の4つのテーブルを保持する。各命令テーブルは連続する16個分の命令を保持し、全体で64命令個分の命令を保持する。また、各命令テーブルは先頭PC(プログラムカウンタ)の値PC0、PC1、PC2、PC3をタグとして持つ。また、各命令テーブルは有効/無効を示すレジスタV0、V1、V2、V3を保持する。
【0103】
個々の命令テーブルの命令のリクエストとフィルを状態遷移図を示す図10を参照して説明する。リセット直後の初期状態では、INVLD(無効)状態にあり、命令テーブル[ITBL]の命令の内容は無効である。Configの設定もしくは、フィルの要求が先頭PCを与えられて起動すると、外部メモリに命令をFILLするリクエストを行っているBUSY(ビジー)状態となり、この段階でも命令は無効である。外部から命令が供給されてFILLが完了するとRDY(レディ)状態となり、この状態で初めて命令テーブル[ITBL]に記録された命令が有効になりV0−V3レジスタを有効にする。
【0104】
命令テーブル全体としての動作について図11を参照して説明する。図11には3つの命令テーブル(ITBL0〜ITBL2)の利用例を示している。
【0105】
まず、Config設定により、プログラムの先頭PC(プログラムカウンタ)が指定され起動されると外部メモリへプログラムの開始PCから連続した16命令がリクエストされて第1の命令テーブル[ITBL0]にフィルされる。PCがITBL0の先頭PC(ここではプログラムの開始PCと等しい)に到達してITBL0の先頭PCの命令の実行を開始すると、第2の命令テーブル[ITBL1]へ(ITBL0の先頭PC+16)から連続する16命令のフィルリクエストがなされて、16命令が第2の命令テーブル[ITBL1]へ書き込み(フィル)される。分岐命令が無い場合、ITBL0の最終命令からITBL1の先頭PCの命令へとPCが進行する。
【0106】
次に、PC(プログラムカウンタ)が第2の命令テーブル[ITBL1]の先頭PCに到達すると、第2の命令テーブル[ITBL1]の先頭PC+16から連続した16命令がリクエストされて第3の命令テーブル[ITBL2]にフィルされる。ここで、プログラムの開始PCから連続する16命令を保持するITBL0はロックして、新たな命令の書き込みを行わず、書き込みがなされた命令を保持する設定としている。
【0107】
図12は、プログラムの進行に従った3つの命令テーブル(ITBL0〜ITBL2)の利用例を簡略化して示した図である。左から、(a)(b)(c)(d)と時間経過に従った、テーブル利用例を示している。なお、図9を参照して説明したように本実施例では4つの命令テーブル(ITBL0〜ITBL3)を利用する設定であるが、このうちの1つの命令テーブル[ITBL3]は、分岐用の命令テーブルとして利用する設定としており、通常のシーケンスでは、図11、図12に示すように3つの命令テーブル(ITBL0〜ITBL2)を利用して処理を行う。
【0108】
図12に示す黒丸301の位置が現在実行中のPC(プログラムカウンタ)の位置を示している。
図12(a)に示すように、実行中のPC(プログラムカウンタ)が、ITBL2の先頭PCに到達すると、PC2+16から連続する16命令をITBL1に対してフィルを実行する。
図12(b)に示すように、実行中のPC(プログラムカウンタ)が次のITBL1の先頭PCに到達するとITB1+16から連続する16命令をITBL2に対してフィルを実行する。
以下、同様の処理を2つの命令テーブル(ITBL1〜2)を繰り返して利用した処理を実行する。
【0109】
このように、命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、制御部101は、プログラムカウンタの進行に応じて複数の命令テーブルを切り替えて命令書き込みを実行し、命令の書き込まれた命令テーブルを順次切り替えて命令の取得を実行する。
【0110】
図12(d)に示すようにEND命令が発行されると、プログラムの先頭PCへ戻る。この時、第1の命令テーブル[ITBL0]はロックして、初期の設定命令が保存されたままとしているために命令のフィルは行わない。しかし、本方式は先読み方式のため、本来必要がない命令まで読み出すことになる。
【0111】
もし長大なプログラムを実行する場合は、全体の長さに比べればその先読み分は小さいが、例えばOpenGL ES 1.1系の固定グラフィックス処理においては、命令の長さは高々20−40命令程度である。例えば、40命令のプログラムである場合、本処理例では、各テーブルについて16命令単位の読み出しを繰り返し実行するので、16×3=48命令の読み出しを行えば良い。テーブルを分割しない設定では、64命令の読み出しを行うことになり、オーバーヘッドが大きくなる。
【0112】
また、16命令単位の分割した命令テーブルを利用した構成において、PC(プログラムカウンタ)が、フィル済みの最後尾の命令テーブルの先頭にいたった場合に次のテーブルへのフィル処理を行うと、無駄なフィルが実行される場合がある。例えば、図13に示すように、PC(プログラムカウンタ)が命令テーブル[ITBL2]311の先頭に到達した時に、本来は必要のない命令を命令テーブル[ITBL1]312にフィルし、命令テーブル[ITBL2]311に含まれるEND命令に到達すると、命令テーブル[ITBL0]313の先頭PCに戻る。すると、さらに、必要のない命令を命令テーブル[ITBL1]314にロードすることになり、不要な命令の読み出しが継続して実行されることになってしまう。このような無駄な処理を防止するため、予め命令長に関する情報を取得してレジスタに保持して、保持した命令長情報に応じて命令テーブルに対するフィル処理、すなわちロードの実行および停止制御を行う構成とすることが好ましい。
【0113】
さらに分岐命令が存在する場合の処理を説明する。例えば、for/while文のような繰り返しの命令列が存在するような場合には、図14(a)に示すようにPC(プログラムカウンタ)が後方に分岐する。例えばPC=100で分岐命令があり、条件分岐でPC=20番地に分岐する命令列があった場合に、分岐命令に到達した時点で分岐先のPC=20は命令テーブル内に存在しないため、PC=20から連続する16命令を外部メモリにリクエストして、命令テーブル[ITBL3]321にフィルする。
【0114】
この命令テーブル[ITBL3]321は前述の命令テーブル[ITBL0]と同様にロックを行い、内容を変更しない設定とする。この設定とすると分岐直後は命令フェッチミスのペナルティーが発生するが、以降の分岐処理ではヒットするためにペナルティーは発生しない。また、ループ後もループの先の命令はITBL2とITBL1に存在するためにペナルティーは発生しない。これにより、プログラム中のループ処理については、1回のミスヒットのみのペナルティーとなる。このように分岐先の命令を保持したテーブルをロックして内容の書き換えを停止することにより、スムーズな命令の実行が可能となる。
【0115】
次にif−else文のような条件実行の命令列がある場合について、図14(b)を参照して説明する。if−else文のような条件実行の命令列がある場合、PC(プログラムカウンタ)は前方へと分岐する。例えば図14(b)に示すようにPC=100で分岐命令があり、PC=200へ分岐する命令列があった場合に、分岐命令に到達した時点で分岐先のPC=200は命令テーブル内に存在しないため、PC=200から連続する16命令を外部メモリにリクエストして分岐テーブル[ITBL3]331に命令をロード(フィル)してロックする。このように、分岐先の命令の先頭を含む命令をロードしたテーブルについては、その後の書き換え停止の処置、すなわちロックする設定とする。このように、本発明のデータ処理部の制御部101は、分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック処理を行う。
【0116】
プログラム中に分岐命令が一つしかないとすると、start_pc−end命令間のループで何回かの処理が行われた中で次のif/elseの実行で分岐条件が同じ場合には、ミスヒットしない。本機構では、if−elseで分岐が双方に起きるような場合には効率は悪い。しかし本装置は、データをSIMD処理するため、そもそもif−elseのような分岐自体は殆ど存在しない。これは、並列処理を行うためデータ要素毎に処理を変えることをプログラムの分岐によって行うと非常に効率が悪いためである。前述のif/elseのような場合は、両方実行して結果を選択する手法で行う場合が殆どである。このため、分岐命令は殆どないか1回程度であるために本機構で十分である。
【0117】
本発明に従った命令テーブルのフェッチおよびロック処理についての状態遷移表を図15、図16に示す。図15は65命令以上もしくは、分岐命令が存在する場合の状態遷移図であり、命令をリクエストする際の条件と、各条件に対応するリクエストされた命令のロード(フィル)先と、ロックするテーブルの対応を示している。例えばエントリ341では、PC(プログラムカウンタ)が命令テーブル[ITBL2]の先頭に至った時点の処理であり、この時点ではロックされたテーブルは命令テーブル[ITBL0]のみであるが、次に、PC(プログラムカウンタ)が命令テーブル[ITBL0]に設定されると、エントリ342に示すように命令テーブル[ITBL3]もロックされる。また、命令テーブル[ITBL0〜3]のいずれかにおいて分岐命令が発生した場合には、その分岐命令の格納(フィル先)テーブルとして命令テーブル[ITBL3]が利用されてこの命令テーブル[ITBL3]がロックされる。
【0118】
図16は64命令以下で分岐命令が存在しない場合の状態遷移図であり、命令をリクエストする際の条件と、各条件に対応するリクエストされた命令のロード(フィル)先の対応を示している。この場合には、命令長に応じて利用するテーブルが決定され、いずれのテーブルのロックも発生しない。例えば、
32命令以内では、命令テーブル[ITBL0],[ITBL1]、
32〜47命令では、命令テーブル[ITBL0],[ITBL1],[ITBL2]、
47〜64命令では、命令テーブル[ITBL0],[ITBL1],[ITBL2],[ITBL3]、
これらの命令テーブルが利用される。
【0119】
命令保持のために必要とする記憶容量について、上述した本発明に従った命令保持機構(ITBL方式)と、従来方式との比較について図17を参照して説明する。従来方式としては、本発明の方式と同数(16×4=64命令)の命令保存量を4−wayのキャッシュで実装した構成とする。本発明のITBL方式では、図17(a)に示すように、命令の実態データ以外に必要な属性データは、タグ(TAG)情報としてのPC(プログラムカウンタ)は16bit、有効、無効等を示すバリッド情報(V)が1bit、インデックス情報(IDX)が4bitの計21bitである。1つのテーブルに対してこれらの属性情報を記録することが必要であり、4テーブルを利用する場合には、
21×4=48bit
の属性データを記録することが必要となる。
【0120】
一方、一般的な4−wayキャッシュで実装した場合、図17(b)に示すように、インデックス(IDX)は同じ4bitであるが、命令それぞれにタグ(TAG)とバリッド(V)が必要なため、16命令あたり、
4+(12+1)*16=212bit、
64命令に対して、
212×4=484bit
これらの属性データの記録容量が必要となる。
【0121】
このように本発明に従った命令テーブルを利用した方式では、通常の命令キャッシュで構成するよりも、命令データ要素以外の属性データの必要記憶容量が、1/10程度に削減され、テーブルに対するデータロード処理が効率的になり、処理の高速化、および消費電力の削減が実現される。
【0122】
次に、多重化の処理について説明を行う。前述のように、レイテンシ削減と命令のバンド幅削減を目的として多重化の機構を保持する。図18に示すプログラムは3DCGの処理において実行される頂点シェーダ(Vertex Shader)処理に含まれる座標変換、ModelView&Projection変換処理、およびカラー要素を無変換で出力する処理のプログラムである。
【0123】
図18に示すプログラムはコメント部351と命令部352によって構成されている。図18に示すプログラムの命令部352には、[start_pc]から[mov o 1 i1]まで、6命令あるので、1命令が1サイクルとすると、6サイクルでの実行に見える。しかし、実際には浮動小数点演算はレイテンシが3サイクル必要であり、直前の命令の結果を使用して次の命令が実行される。
【0124】
従って、実際には図19(a)に示すプログラムの実行を行っていることになる。[nop]は、何もしないオペレーションなしの命令サイクルである。このように12サイクル必要となる。この処理は1頂点に対しての処理を行っているが、これを3頂点分の処理を同時に行う場合には、図19(b)に示すプログラムとなる。
【0125】
この図19(b)に示すプログラムの場合、例えば最初の命令[fmadd r00.x c0 zero]の結果が使用されるのは3命令先の[fmadd r0 i0.y c1 r0]となり、以下、各命令の結果は3命令先において利用されハザードは起こさない。この図19(b)に示すプログラムの場合、命令数=実行サイクル数であるために16サイクル/3頂点=約5.3サイクル/頂点となり、1頂点処理と比較して2倍以上の高速化が可能である。但し、この場合は命令数も約3倍あり、命令のバスバンド幅を上げてしまう。本例は簡単な処理であるために3倍になっても命令テーブル内に収まるが、3DCG処理においてプログラム長は通常20−40命令程度のため、これが3倍になると命令テーブル内に収まらなくなる、というジレンマが発生する。
【0126】
本発明に従った装置においては、この問題を解決するため、命令テーブル内に記録する命令を削減する。1つの命令で複数の処理を実行させる多重化を行う。予め設定する設定情報であるConfigにより多重度数を指定する。この多重時指定情報により、命令テーブルに記録された1つの代表の命令から他の命令を生成させる。この結果として、図19(b)に示すプログラムの実行は、図19(c)に示すプログラムの実行に置き換えられる。
【0127】
図19(c)のプログラムは、図18に示す命令列の実行における命令のデコード時に他の命令を生成し、図19(b)に示すプログラムの実行をさせるものである。
すなわち、例えば、図18に示す命令列に含まれる
[fmadd r0 i0.x c0 zero]
この命令の実行時に、この命令のデコード処理を実行して、
[fmadd r1 i1.x c0 zero]
[fmadd r2 i2.x c0 zero]
この2つの命令を生成して実行する。すなわち、1つの命令から、他の類似する命令を生成する多重化処理を実行する。多重化に必要な情報、例えば多重度情報などは、予めConfigの設定として登録する。
【0128】
例えば、Configに設定する多重度情報としては、
[SH_MULTI]という設定を用いる。
また、各レジスタファイル、例えばGPR、CR、FRの多重度を設定するコンフィグ情報は、
[SH_MULTIR_GPR]、[SH_MULTIR_CR]、[SH_MULTIR_FR]等の設定を用いる。
【0129】
図19(c)に示すプログラムの動作の場合には、
SH_MULTI=3、
SH_MULTIR_GPR=3、
SH_MULTIR_CR=1
というように設定を行うと、
命令の生成は3多重化し、GPRも3多重化し、CRは多重化しない(多重度1)設定となる。
【0130】
このように、本発明の情報処理装置のデータ処理部100における制御部101は、命令テーブルに記録された1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う。制御部101は、設定情報(Config)に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う。
【0131】
次に、命令の進行およびデコード時の命令の伸長の機構について図20を参照して説明する。命令テーブル366から命令367を取り出す命令を管理するシーケンサでは、多重化を行わない場合は、図中のプログラムカウンタ(PC)361に初期値として開始PCを設定し、分岐でない通常の命令の場合には図中の加算器362によりインクリメントしてPCを進行し、分岐の場合、分岐先PCである分岐PCへと進行する。ここまでは、一般の構成と同じである。
【0132】
多重化を行う場合には事前設定データであるコンフィグConfigの[SH_MULTI]363の設定情報を入力して、更にPCをインクリメントしないパス364を選択し、多重度回同じPCを繰り返す。また、シーケンサに従って命令をデコードする時には、オペランドレジスタの番号をインクリメントする必要がある。この多重化処理により図に示すプログラムカウンタ列365が生成され、同一のPCを複数回(図の場合は3回)繰り返し利用した多重化処理が実現される。図21に本実装によるオペランドの一例を挙げる。図21に示すようにオペランドはニーモニックがインクリメントすると同時にコードがインクリメントするようにしている。
【0133】
図22にGPRを例にオペランドの展開の機構例を示す。例えば、図18を参照して説明したプログラムの実行にはGPRの格納値[r0]を取り出して演算を実行することが必要となるが、1つの命令を多重化して演算を繰り返して実行する場合、同一のプログラムカウンタによって、複数回GPRの格納値を取得することが必要となる。図22はこのGPR371からのデータ取得の多重化処理のための構成であり、図20を参照して説明した命令の多重化構成と同様、事前の設定データであるConfigの[SH_MULTIR_GPR]372の設定情報を入力して、繰り返しGPRのデータを出力するパス373を選択する設定としている。加算器374とパス375が設定され加算器374によりインデックスが1つずつインクリメントされる構成となっている。
【0134】
先に図20を参照して説明した構成によって命令テーブル366から発行されている命令367の各オペランドフィールドのコードから、オペランドのインデックスを生成するために、通常はオペランドコード自体をインデックス(INDEX)とするところを、事前の設定データであるConfigのSH_MULTIR_GPRというGPRの多重度設定に従って、同一のオペランドR0=0000000から、多重回インクリメントを繰り返しながら、インデックスを生成する。図22に示す例では、パス373の利用により、1つのニーモニックに対応するコードR0=0000000が3回繰り返し実行されて、この繰り返し実行に対応して、GPR371のデータ出力が繰り返し実行される。これらの機構により、図19(c)に示すプログラムが展開されることになる。
【0135】
このように、本発明の情報処理装置におけるデータ処理部100の制御部101は、1つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行う。制御部101は、設定情報(Config)に記録された多重化情報に基づいて1つのニーモニックに対応する同一コードの繰り返し回数を決定する。
【0136】
しかし、外部からのデータ供給は1頂点ずつの供給であり変更されていない。前述のような例、すなわち1頂点あたりの処理要素が1ベクタ要素の場合には問題はないが、1頂点あたりの処理要素が2ベクタ以上になった場合、外部からの供給データの順に従って入力レジスタ(IR)に入力データを配置すると図23に示すようになり、処理が命令の順序と関連付けられない。
【0137】
すなわち、図23に示す入力レジスタ(IR)は、下段[I0]から順番に外部から入力されるデータを示している。最初の[I0]のエントリには、ある1つの頂点に対応する頂点シェーダ(Vertex Shader)処理に適用するデータである頂点の座標値=(x0,y0,z0,w0)が入力され、次の入力は[I1]のエントリに示すように、フラグメントシェーダ(Fragment Shader)処理に適用するデータであるピクセルのカラー値の赤、緑、青、アルファ=(r0,g0,b0,a0)が入力され、次の[I2]には、次の頂点に対応する頂点シェーダ(Vertex Shader)処理に適用するデータである頂点の座標値=(x1,y1,z1,w1)というように外部から入力される。出力レジスタ(OR)に対する出力データの設定も同様となる。
【0138】
このような設定とすると、前述した多重化処理における頂点シェーダ(Vertex Shader)処理をまとめて実行し、その後、フラグメントシェーダ(Fragment Shader)処理をまとめて実行するといった処理順に対応できないことになり、処理に対応した入力レジスタ(IR)からのデータ取得ができなくなる。
【0139】
これを解決するため、入出力レジスタ(IR/OR)の入出力機構として、前述した命令の拡張、すなわち多重化に合わせてデータ配置を制御する。図24に入力レジスタ(IR)のインデックス(0−15)を規定する機構を示す。図24中のカウンタ(CNT)レジスタ381は、1回のプログラムの開始PC(プログラムカウンタ)毎に0にリセットされ、データの到達する度に1つずつインクリメントし、0,1,2,3・・・のカウント値を出力する。カウンタ(CNT)381のカウント値に基づいて、ルックアップテーブル(LUT)382が参照されルックアップテーブル(LUT)382からインデックス(INDEX)385が取得されて、入力レジスタ(IR)386に入力される。
【0140】
ルックアップテーブル(LUT)382では、カウンタ(CNT)381のカウント値に併せて、事前の設定データであるConfigの多重度を規定するSH_MULTIR_IR383、および入力レジスタ(IR)に対する入力要素数を規定するSH_IR384の各レジスタ設定に従ってインデックス(INDEX)385が取得されて、入力レジスタ(IR)386に入力される。入力レジスタ(IR)386に対して入力されるデータ(DATA)387は、インデックス(INDEX)385の指定する位置へ書き込まれる。
【0141】
図25に、ルックアップテーブル(LUT)382の構成例を示す。ルックアップテーブル(LUT)382は、カウンタ(CNT)381のカウント値391と、Configの多重度を規定するSH_MULTIR_IRレジスタ383の多重度値392と、入力レジスタ(IR)に対する入力要素数を規定するSH_IR384レジスタの設定値393に対応するインデックス値データを取得する構成となっている。
【0142】
例えば、
多重度=3
入力要素数=6
である場合、
カウント(CNT)値=0〜5に対応するインデックスとして、
インデックス0,3,1,4,2,5が順次出力される。図25に示すインデックス列401である。
【0143】
図24に示す構成において、入力レジスタ(IR)386に入力するデータ(Data)387は、このインデックスに従って決定される入力レジスタの格納位置に格納される。
多重度=3
入力要素数=6
の場合のインデックス列[0,3,1,4,2,5]を適用した場合の入力レジスタのデータ格納構成を図26に示す。
【0144】
最初に外部から入力レジスタに入力するデータは、頂点シェーダ(Vertex Shader)処理に適用するデータである頂点の座標値=(x0,y0,z0,w0)であり、この入力データに対応するインデックスは、[0,3,1,4,2,5]の先頭の[0]であり、このインデックス値[0]に従って、入力データ(x0,y0,z0,w0)は、入力レジスタ386の[I0]のエントリ位置に格納される。
【0145】
次の入力データは、フラグメントシェーダ(Fragment Shader)処理に適用するデータであるピクセルのカラー値の赤、緑、青、アルファ=(r0,g0,b0,a0)であり、このデータ入力に対応するインデックスは、[0,3,1,4,2,5]の2番目の[3]であり、このインデックス値[3]に従って、入力データ(r0,g0,b0,a0)は、入力レジスタ386の[I3]のエントリ位置に格納される。
【0146】
次の入力データは、頂点シェーダ(Vertex Shader)処理に適用するデータである頂点の座標値=(x1,y1,z1,w1)であり、このデータ入力に対応するインデックスは、[0,3,1,4,2,5]の3番目の[1]であり、このインデックス値[1]に従って、入力データ(x1,y1,z1,w1)は、入力レジスタ386の[I1]のエントリ位置に格納される。
【0147】
以下、同様に、各入力データはルックアップテーブル(LUT)382から取得されるインデックス値に従って入力レジスタ386における格納位置が決定されて、その決定した位置にデータが記録されることになる。
【0148】
このデータ格納制御処理によって、入力レジスタ(IR)に対するデータ配置は、前述した多重化処理における頂点シェーダ(Vertex Shader)処理をまとめて実行し、その後、フラグメントシェーダ(Fragment Shader)処理をまとめて実行するといった処理順に対応した格納順となり、処理に対応した入力レジスタ(IR)からのデータ取得が可能となる。すなわち、本機構により、データを多重処理する場合の命令の伸長とインデックスの整合が取れる。これらの構成により、レイテンシの隠蔽と命令のバスバンド幅、命令を保存するメモリ量を減らすことができ、消費電力の低減が実現される。
【0149】
このように、本発明の情報処理装置では図1に示すデータ処理部100の制御部101が、多重化された命令の実行順に従った命令の実行における利用データを、入力レジスタ(IR)に実行命令順に対応して格納するためのインデックスを生成する。制御部101は、インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブル(図25参照)を利用してインデックスを取得する。
【0150】
以上、特定の実施例を参照しながら、本発明について詳解してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が実施例の修正や代用を成し得ることは自明である。すなわち、例示という形態で本発明を開示してきたのであり、限定的に解釈されるべきではない。本発明の要旨を判断するためには、特許請求の範囲の欄を参酌すべきである。なお、本発明に係る情報処理装置は、3DCGと画像CODECに限らず、その他のデータ処理においても適用可能である。
【0151】
また、明細書中において説明した一連の処理はハードウェア、またはソフトウェア、あるいは両者の複合構成によって実行することが可能である。ソフトウェアによる処理を実行する場合は、処理シーケンスを記録したプログラムを、専用のハードウェアに組み込まれたコンピュータ内のメモリにインストールして実行させるか、あるいは、各種処理が実行可能な汎用コンピュータにプログラムをインストールして実行させることが可能である。例えば、プログラムは記録媒体に予め記録しておくことができる。記録媒体からコンピュータにインストールする他、LAN(Local Area Network)、インターネットといったネットワークを介してプログラムを受信し、内蔵するハードディスク等の記録媒体にインストールすることができる。
【0152】
なお、明細書に記載された各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。また、本明細書においてシステムとは、複数の装置の論理的集合構成であり、各構成の装置が同一筐体内にあるものには限らない。
【産業上の利用可能性】
【0153】
以上、説明したように、本発明の一実施例の構成によれば、複数の命令テーブルの切り替えや命令の多重化による効率的な命令の実行を実現し、またダブルバッファ構成とした入出力レジスタを利用したデータ格納制御により入出力のオーバーヘッドや命令のレイテンシの解消を図り処理の高速化を実現した。本発明の構成により、命令の圧縮・伸長によるバスバンド幅、外部IO、メモリ容量の小型化が実現され、データ処理部を構成するLSIの論理回路の実装面積の削減、さらに消費電力の低減が実現される。
【図面の簡単な説明】
【0154】
【図1】本発明の情報処理装置を構成するデータ処理ブロックの構成例について説明する図である。
【図2】本発明に係るデータ処理のシーケンスを説明する図である。
【図3】3DCG処理およびCODEC処理のシーケンスについて説明する図である。
【図4】データ処理に適用するプログラム構成および処理シーケンスについて説明する図である。
【図5】本発明の一実施例に係る入力レジスタ(IR)の構成および動作について説明する図である。
【図6】本発明の一実施例に係る出力レジスタ(OR)の構成および動作について説明する図である。
【図7】本発明の一実施例に係る入力レジスタ(IR)および出力レジスタ(OR)を適用したプログラムの命令シーケンスとFIFOを適用した例について説明する図である。
【図8】本発明の一実施例に係る入力レジスタ(IR)および出力レジスタ(OR)を適用したプログラムの命令シーケンスとFIFOを適用した例について説明する図である。
【図9】本発明の一実施例に係る命令テーブルの構成例について説明する図である。
【図10】命令テーブルに対するデータ書き込み(FILL)処理等を服務テーブルの状態遷移例について説明する図である。
【図11】命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図12】命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図13】分岐の発生する場合の命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図14】分岐の発生する場合の命令テーブルを利用したプログラム実行シーケンス例について説明する図である。
【図15】命令長が65命令以上か、分岐命令を含む場合の命令リクエストと命令リクエストの実行態様の対応を示す図である。
【図16】命令長が64命令以下で分岐命令を含まない場合の命令リクエストと命令リクエストの実行態様の対応を示す図である。
【図17】本発明の一実施例に係る命令テーブルを利用した場合の必要データ量と、従来構成における必要データ量の比較について説明する図である。
【図18】頂点シェーダ(Vertex Shader)処理のModelView&Projection変換を実行する場合の命令列の例を示す図である。
【図19】命令列の多重化処理について説明する図である。
【図20】命令列の多重化処理を実行するための構成について説明する図である。
【図21】オペランドの例を示す図である。
【図22】多重化した命令の実行のためのオペランドの伸張処理機構について説明する図である。
【図23】入力レジスタ(IR)に対する一般的なデータ格納構成について説明する図である。
【図24】多重化した命令の実行のための入力レジスタ(IR)に対するデータ格納の制御構成について説明する図である。
【図25】多重化した命令の実行のための入力レジスタ(IR)に対するデータ格納制御に適用するルックアップテーブル(LUT)の構成例について説明する図である。
【図26】多重化した命令の実行に適応させたインデックスを用いた入力レジスタ(IR)のデータ格納構成について説明する図である。
【図27】一般的な3DCG、CODECの実行構成を示す図である。
【図28】一般的な3DCGのデータ処理構成について説明する図である。
【図29】一般的なCODECのデータ処理構成について説明する図である。
【符号の説明】
【0155】
11 CPU
12 DSP
13 RAM
14 ROM
15 外部インタフェース
20 メディア処理ブロック
21 JPEG処理ブロック
22 MPEG処理ブロック
23 3DCG処理ブロック
31 メモリ
32 頂点プロセッサ
33 アンパックプロセッサ
34 パックプロセッサ
35 プリミティブアセンブリ
36 Clip,Project Viewport,Cull
37 ラスタライザ
38 フラグメントプロセッサ
39 Per Fragment Operation
40 テクスチャメモリ
41 フレームバッファ処理
42 フレームバッファ
43 読み出し制御部
100 データ処理部
101 制御部
102 入力レジスタ(IR)
103 出力レジスタ(OR)
361 プログラムカウンタ
362 加算器
363 [SH_MULTI](Configデータ)
364 パス
365 プログラムカウンタ列
366 命令テーブル
367 命令
371 GPR
372 [SH_MULTIR_GPR](Configデータ)
373 パス
381 カウンタ(CNT)
382 ルックアップテーブル(LUT)
383 SH_MULTIR_IR(Configデータ)
384 SH_IR(Configデータ)
385 インデックス(INDEX)
386 入力レジスタ(IR)
387 データ(DATA)

【特許請求の範囲】
【請求項1】
情報処理装置であり、
オペランドを入力する入力レジスタと、
前記オペランドを適用した演算を実行する演算実行部と、
データ処理における設定情報(Config)と命令テーブルに格納されたデータ処理プログラムに基づいてデータ処理制御を実行する制御部と、
を有するデータ処理部を備え、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記制御部は、プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行う構成であることを特徴とする情報処理装置。
【請求項2】
前記制御部は、
分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行う構成であることを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記制御部は、
前記命令テーブルに記録された1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする請求項1に記載の情報処理装置。
【請求項4】
前記制御部は、
前記設定情報(Config)に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行う構成であることを特徴とする請求項3に記載の情報処理装置。
【請求項5】
前記制御部は、
1つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行う構成であることを特徴とする請求項3に記載の情報処理装置。
【請求項6】
前記制御部は、
前記設定情報(Config)に記録された多重化情報に基づいて1つのニーモニックに対応する同一コードの繰り返し回数を決定する構成であることを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記制御部は、
多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成する構成であることを特徴とする請求項3に記載の情報処理装置。
【請求項8】
前記制御部は、
順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得する構成であることを特徴とする請求項7に記載の情報処理装置。
【請求項9】
前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、
前記制御部の制御に基づいて前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行う構成であることを特徴とする請求項1に記載の情報処理装置。
【請求項10】
前記情報処理装置は、さらに、
データ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、
前記制御部の制御に基づいて前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行う構成であることを特徴とする請求項1に記載の情報処理装置。
【請求項11】
前記データ処理部は、
3DCG処理およびCODEC処理を実行する構成であることを特徴とする請求項1〜10いずれかに記載の情報処理装置。
【請求項12】
前記演算実行部は、
並列処理可能な複数の演算部によって構成され、3DCG処理およびCODEC処理において、各処理に応じた入力データを適用した並列演算を実行する構成であることを特徴とする請求項11に記載の情報処理装置。
【請求項13】
前記演算実行部は、
3DCG処理における頂点シェーダ(Vertex Shader)処理の入力値(x,y,z,w)を各々利用した並列演算と、
3DCG処理におけるフラグメントシェーダ(Fragment Shader)処理の入力値(r,g,b,a)を各々利用した並列演算と、
CODEC処理におけるDCT処理の入力値(a0,a1,a2,a3)を各々利用した並列演算を切り替えて実行する構成であることを特徴とする請求項11に記載の情報処理装置。
【請求項14】
情報処理装置において実行する情報処理方法であり、
制御部が、予め設定された設定情報(Config)と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行するデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行うステップを含むことを特徴とする情報処理方法。
【請求項15】
前記データ処理ステップは、
分岐命令に基づく分岐先の命令を記録したテーブルを、その後の命令書き換えを行わないロック設定とする処理を行うステップを含むことを特徴とする請求項14に記載の情報処理方法。
【請求項16】
前記データ処理ステップは、
前記命令テーブルに記録された1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする請求項14に記載の情報処理方法。
【請求項17】
前記データ処理ステップは、
前記設定情報(Config)に記録された多重化情報に基づいて、プログラムカウンタのインクリメント停止制御を行い、1つの命令に基づいて複数のデータ処理を実行させる多重化処理を行うステップを含むことを特徴とする請求項16に記載の情報処理方法。
【請求項18】
前記データ処理ステップは、
1つのニーモニックに対応する同一コードを繰り返し適用することで、命令の多重化処理に対応するオペランド取得を実行させる制御を行うステップを含むことを特徴とする請求項16に記載の情報処理方法。
【請求項19】
前記データ処理ステップは、
前記設定情報(Config)に記録された多重化情報に基づいて1つのニーモニックに対応する同一コードの繰り返し回数を決定するステップを含むことを特徴とする請求項18に記載の情報処理方法。
【請求項20】
前記データ処理ステップは、
多重化された命令の実行順に従った命令の実行における利用データを、前記入力レジスタに実行命令順に対応して格納するためのインデックスを生成するステップを含むことを特徴とする請求項16に記載の情報処理方法。
【請求項21】
前記データ処理ステップは、
順次インクリメントされるカウント値と、多重化情報と、入力レジスタにおける入力要素数に対応してインデックス値を対応付けたルックアップテーブルを利用してインデックスを取得するステップを含むことを特徴とする請求項20に記載の情報処理方法。
【請求項22】
前記入力レジスタは、前記データ処理部外からのデータ入力用バッファと、前記データ処理部内部からのデータ取得用バッファからなるダブルバッファ構成を有し、
前記制御部は、前記データ入力用バッファと前記データ取得用バッファとの入れ替え処理を行うことを特徴とする請求項14に記載の情報処理方法。
【請求項23】
前記情報処理装置は、さらにデータ処理部での処理結果を保持する出力レジスタを有し、前記出力レジスタは、前記データ処理部内部からのデータ書き込み用バッファと、前記データ処理部外へのデータ出力用バッファとからなるダブルバッファ構成を有し、
前記制御部は、前記データ書き込み用バッファと前記データ出力用バッファとの入れ替え処理を行うことを特徴とする請求項14に記載の情報処理方法。
【請求項24】
前記データ処理ステップは、
3DCG処理およびCODEC処理を実行するステップであることを特徴とする請求項14〜23いずれかに記載の情報処理方法。
【請求項25】
前記データ処理ステップは、
並列処理可能な複数の演算部によって構成され演算実行部において、3DCG処理およびCODEC各処理に応じた入力データを適用した並列演算を実行するステップを含むことを特徴とする請求項24に記載の情報処理方法。
【請求項26】
前記データ処理ステップは、
並列処理可能な複数の演算部によって構成され演算実行部において、
3DCG処理における頂点シェーダ(Vertex Shader)処理の入力値(x,y,z,w)を各々利用した並列演算と、
3DCG処理におけるフラグメントシェーダ(Fragment Shader)処理の入力値(r,g,b,a)を各々利用した並列演算と、
CODEC処理におけるDCT処理の入力値(a0,a1,a2,a3)を各々利用した並列演算を切り替えて実行するステップを含むことを特徴とする請求項24に記載の情報処理方法。
【請求項27】
情報処理装置においで情報処理を実行させるコンピュータ・プログラムであり、
制御部に、予め設定された設定情報(Config)と、命令テーブルに格納されたデータ処理プログラムに従ってデータ処理を実行させるデータ処理ステップを有し、
前記命令テーブルは、各々が複数の命令情報を格納可能な複数の命令テーブルによって構成され、
前記データ処理ステップは、
プログラムカウンタの進行に応じて複数の命令テーブルを順次切り替えて命令の書き込みを行い、命令の書き込まれた命令テーブルを順次切り替えて命令の取得および実行を行わせるステップを含むことを特徴とするコンピュータ・プログラム。

【図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

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2008−299475(P2008−299475A)
【公開日】平成20年12月11日(2008.12.11)
【国際特許分類】
【出願番号】特願2007−142952(P2007−142952)
【出願日】平成19年5月30日(2007.5.30)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】