以下、本発明に係るアレイプロセッサを、図面を用いて詳細に説明する。なお、後述する実施の形態1および実施の形態2では、三次元離散コサイン変換(3D Discrete Cosine Transform:3D―DCT)と三次元逆離散コサイン変換(3D Inverse Discrete Cosine Transform:3D−IDCT)とを計算するアレイプロセッサについて説明を行うが、本発明に係るアレイプロセッサは、この三次元離散コサイン変換および三次元逆離散コサイン変換の計算に用いるものだけには限定されず、上述した一般的な式(1)のCを適宜変更することによって、他の変換方式に基づく三次元直交変換処理を実行することができる。
[実施の形態1]
図1は、実施の形態1に係るアレイプロセッサを示した図である。アレイプロセッサ1は、8個のプロセッシングエレメントPEを有している。ここでプロセッシングエレメントPEとは、積和演算処理を行う役割を有するアレイプロセッサの演算構成部である。
プロセッシングエレメントPEは、縦方向、横方向、高さ方向(三軸方向)にそれぞれ2個ずつ配置されており、各プロセッシングエレメントPEは、直方体を成すアレイプロセッサ1の各頂点に一つずつ配置される構成となっている。
実施の形態1では、前述した縦方向をi軸方向、前述した横方向をj軸方向、前述した高さ方向をk軸方向とする。また、各プロセッシングエレメントPEは、それぞれを他のプロセッシングエレメントPEと区別するために、i軸、j軸、k軸により構成されるijk空間の座標位置を用いてPE(i,j,k)で特定される。
各プロセッシングエレメントPEは、図1及び図2に示すように、−i軸方向・−j軸方向・k軸方向に設けられる3つの入力端子(i入力端子、j入力端子、k入力端子)と、各入力端子(i入力端子、j入力端子、k入力端子)と対を成してそれぞれi軸方向・j軸方向・−k軸方向に設けられる3つの出力端子(i出力端子、j出力端子、k出力端子)とを有している。
各出力端子は、それぞれの出力端子の設置方向(軸方向)に隣接するプロセッシングエレメントPEの対向する(同軸方向に設けられた)入力端子に接続されている。例えば、PE(1,0,1)において−i軸方向に向けて設けられるi出力端子は、PE(0,0,1)においてi軸方向に向けて設けられるi入力端子と接続される。
また、対向する方向に他のプロセッシングエレメントPEが存在しない場合には、それぞれの軸方向に沿った配設位置の両端部に位置するプロセッシングエレメントPEの入力端子および出力端子を接続させることにより、同軸方向に設けられる入力端子および出力端子同士を接続したトーラス状を構成する。
従って、i軸方向に整列されたプロセッシングエレメントPEは、i出力端子より−i軸方向に隣接する他のプロセッシングエレメントPEのi入力端子に対してデータの出力を行うことが可能となっており、i座標が0となる空間位置に存在するプロセッシングエレメントは、そのi出力端子を、i軸方向の他端部側に位置するプロセッシングエレメントのi入力端子にトーラス状に接続させて、データを出力することが可能となっている。この構造は、それぞれj軸方向およびk軸方向に整列されたプロセッシングエレメントPEにおいても同様である。
このように、三次元空間に配置されたプロセッシングエレメントPEにおいて、それぞれ対応する軸方向に整列された隣接のプロセッシングエレメントPEに対してデータを順次出力することができる。このため、アレイプロセッサ1では、隣接するプロセッシングエレメントPEにおいて演算された算出結果のデータや、演算に用いる所定のデータなどを隣接する他のプロセッシングエレメントPEに順次リレーして、連続的な積和演算処理を、アレイプロセッサ1全体で行うことが可能となっている。
図2は、各プロセッシングエレメントPEの内部構成を示したブロック図である。プロセッシングエレメントPEは、7個のレジスタR0〜R6と、入力スイッチ部4と、セレクタ部5と、演算回路部6と、出力スイッチ部7と、制御回路部8とを有している。
レジスタR0〜R6は、三次元直交変換処理に用いるデータを記録することが可能となっている。レジスタR4、レジスタR5、レジスタR6には、式(1)に示したCのデータが記録される。このCは、実施の形態1に係るアレイプロセッサ1を用いて三次元直交変換処理を行う際に、その演算を行う処理方式に応じて決定される初期値であり、既に説明したように、Cの初期値を変更することによって、例えば、離散コサイン変換(DCT)、ウォルシュ・アダマール変換(WHT)、離散フーリエ変換(DFT)、離散サイン変換(DST)などの演算を行うことが可能となる。
実施の形態1に係るアレイプロセッサ1では、三次元離散コサイン変換(3D―DCT)に適した初期値(DCT係数(固定値))が設定される。具体的には、各プロセッシングエレメントのR4に次述するC(i,k)の値が初期値として記録され、レジスタR5に次述するC(k,j)の値が初期値として記録され、レジスタR6に次述するC(i,j)の値が初期値として記録される。
具体的に説明すると、プロセッシングエレメントPEの配置位置の座標位置(i,j,k)において、i=0であり、かつ、0≦k≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR4には、
が記録される。ここで、nは各軸方向に向けて配設されたプロセッシングエレメントPEの個数を示しており、実施の形態1では、i軸方向、j軸方向、k軸方向のそれぞれに対して2個ずつプロセッシングエレメントが配設されているため、以下、nは2(n=2)となる。
次に、1≦i≦n―1であり、かつ、0≦k≦1であるプロセッシングエレメントPE(i,j,k)のレジスタR4には、
が記録される。
また、k=0であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR5には、
が記録され、また、1≦k≦n−1であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR5には、
が記録される。
さらに、また、i=0であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR6には、
が記録され、また、1≦i≦n−1であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR6には、
が記録される。
なお、レジスタR4〜R6に記録される上述した式(3)〜式(8)の設定値(定数値)は、演算処理が終了するまで変更されることなく同一の値が維持される。
次に、レジスタR1、R2、R3には、初期値として0が記録されている。また、レジスタR0には、三次元離散コサイン変換処理を行う三次元の入力データ、具体的には上述した式(1)のX(i,j,k)の値が記録されている。なお、図2に示すように、レジスタR0〜R3には、入力スイッチ部4を介してデータが案内される場合があり、この場合には各レジスタR0〜R3に新たなデータが上書き保存されてしまうため、演算処理に応じて記録されるデータが変更される可能性が生じる。このため、レジスタR0〜R3は、演算処理の処理経過に応じて演算結果、あるいは、演算に用いられる設定値が順次変更され得る。そして、後述するように、最終的にレジスタR3に対して、アレイプロセッサ1により演算された三次元直交変換処理の演算結果が記録される。
入力スイッチ部4は、3つの入力端子(i入力端子、j入力端子、k入力端子)より入力された情報を、制御回路部8の指示に応じて切り替えて、レジスタR0〜R3のいずれかに案内して記録させる役割を有している。実際に入力端子を介して入力されるデータは、3つの入力端子(i入力端子、j入力端子、k入力端子)のうちのいずれか2つの入力端子を介して入力される。制御回路部8では、入力された情報を入力端子の種類に応じて判断し、入力スイッチ部4を制御して、入力されたデータを、それぞれ該当するレジスタ(レジスタR0〜R3のいずれか)に案内して記録させる。
セレクタ部5は、レジスタR0〜R6のいずれか3つのレジスタより演算回路部6の演算処理に用いられるデータを取得して演算回路部6に出力する。セレクタ部5では、取得した3つのデータを、演算回路部6の演算内容に応じて設けられる3つの入力端子(a入力端子,b入力端子およびc入力端子)に出力する。なお、b入力端子に対して出力されたデータは、b入力端子を介して演算回路部6に入力されると共に、そのまま出力スイッチ部7へと出力される。セレクタ部5において、いずれのレジスタ(レジスタR0〜R6のうち3つのレジスタ)からデータを取得するか、および、取得したデータをa入力端子,b入力端子およびc入力端子のいずれに出力するかという判断処理は、制御回路部8の指示に応じて行われる。
演算回路部6では、a入力端子より取得したデータaと、b入力端子より取得したデータbと、c入力端子より取得したデータcとに基づいて、積和演算を行う。積和演算は、演算結果をdとすると、d=a×b+cによって求められる。演算結果dは、演算回路部6の出力端子10を介して出力スイッチ部7に出力される。
出力スイッチ部7は、セレクタ部5より演算回路部6のb入力端子に対して出力されたデータbと、演算回路部6の出力端子10を介して出力された演算結果dとを取得し、制御回路部8の指示に応じて、3つの出力端子(i出力端子、j出力端子、k出力端子)のいずれかよりデータbおよび演算結果dを出力させる役割を有している。実際に、出力端子を介して出力されるデータは、3つの出力端子(i出力端子、j出力端子、k出力端子)のうちいずれか2つの出力端子のみである。制御回路部8は、入力されたデータを判断し、出力スイッチ部7を制御することによって、データbおよび演算結果dを、それぞれ該当する出力端子(i出力端子、j出力端子、k出力端子のいずれか)に出力する。
制御回路部8は、上述した入力スイッチ部4、セレクタ部5、出力スイッチ部7の操作制御を行う役割を有している。制御回路部8は、入力スイッチ部4,セレクタ部5および出力スイッチ部7に入力されるデータを、その内容や入力された入力端子の種類に応じて判断し、アレイプロセッサ1の処理内容に応じて入力スイッチ部4、セレクタ部5、出力スイッチ部7の制御を行う。
なお、図2には示していないが、各プロセッシングエレメントPEには、レジスタR0に対して三次元離散コサイン変換処理を行うための入力データを入力し、また、レジスタR1〜R3に対して初期値0を入力し、さらに、レジスタR4〜R6に対して初期値C(i,k),C(k,j),C(i,j)を入力するためのデータ入力手段や、最終的な演算結果が記録されるレジスタR3よりデータを取得するためのデータ取得手段などが設けられている。
次に、各プロセッシングエレメントPEの制御回路部8が、入力スイッチ部4,セレクタ部5,および出力スイッチ部7を適宜制御することにより、三次元離散コサイン変換処理(3D―DCT処理)を行う過程を説明する。
図3は、各プロセッシングエレメントPE(i,j,k)における各レジスタR0〜R6の初期値および各処理ステップにおいて記録される内容が利用され、または変更されるレジスタを示した表であり、図4は、図3に示したレジスタの内容が変更される状態を、処理ステップに応じて矢印で示したものである。なお、図4に示した破線による矢印は後述するデータbに該当するデータの出力状態を示しており、実線による矢印は後述する演算結果dに該当するデータの出力状態を示している。
上述したレジスタR0〜R6の初期値の設定が行われた後、各プロセッシングエレメントPEの制御回路部8は、セレクタ部5を制御して、レジスタR4に記録されるデータを演算回路部6のa入力端子に出力させ、レジスタR0に記録されるデータを演算回路部6のb入力端子に出力させ、レジスタR1に記録されるデータを演算回路部6のc入力端子に出力させる処理を実行する。この処理において、図3および図4に示すように、レジスタR4に記録されるデータは、C(i,k)の初期値であり、レジスタR0に記録されるデータは、三次元離散コサイン変換処理を行うための入力データ:X(i,j,k)であり、レジスタR1に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部6では、データaとして入力されたレジスタR4のデータと、データbとして入力されたレジスタR0のデータと、データcとして入力されたレジスタR1のデータとを用いて、積和演算(d=a×b+cの演算)を実行する。
次いで各プロセッシングエレメントPEの制御回路部8は、出力スイッチ部7を制御して演算結果dとデータbとを取得し、演算結果dをk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力し、また、データb(詳細には、レジスタR0に記録されていたデータ)を−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力する。
そして、各プロセッシングエレメントPEの制御回路部8は、入力スイッチ部4を制御して、隣接するプロセッシングエレメントPEよりk入力端子を介して演算結果dを取得し、i入力端子を介してデータb(レジスタR0のデータ)とを取得して、演算結果dをレジスタR1に記録させるとともに、データb(レジスタR0のデータ)をレジスタR0に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部8は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態1では2回)だけ繰り返し実行して、i入力端子およびi出力端子の接続によりトーラス状に接続された経路と、k入力端子およびk出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定のデータを一巡させる。この一巡の処理が第一周期目のn回の積和演算処理に該当する。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR1には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果が記録されることになる。実施の形態1では、n=2であるため、2回だけ上述の処理が行われる。図3および図4に示した「0」および「1」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部8は、セレクタ部5を制御して、レジスタR5に記録されるデータを演算回路部6のa入力端子に出力させ、レジスタR1に記録されるデータを演算回路部6のb入力端子に出力させ、レジスタR2に記録されるデータを演算回路部6のc入力端子に出力させる処理を実行する。この処理において、レジスタR5に記録されるデータは、C(k,j)の初期値であり、レジスタR1に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果であり、レジスタR2に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部6では、データaとして入力されたレジスタR5のデータと、データbとして入力されたレジスタR1のデータと、データcとして入力されたレジスタR2のデータとを用いて、積和演算(d=a×b+cの演算)を実行する。
次いで各プロセッシングエレメントPEの制御回路部8は、出力スイッチ部7を制御して、演算結果dとデータbとを取得し、演算結果dを−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力し、また、データb(詳細には、レジスタR1に記録されていたデータ)をk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力する。
そして、各プロセッシングエレメントPEの制御回路部8は、入力スイッチ部4を制御して、隣接するプロセッシングエレメントPEよりj入力端子を介して演算結果dを取得し、k入力端子を介してデータb(レジスタR1のデータ)を取得して、演算結果dをレジスタR2に記録させるとともに、データb(レジスタR1のデータ)をレジスタR1に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部8は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態1では2回)だけ繰り返し実行して、j入力端子およびj出力端子の接続によりトーラス状に接続された経路と、k入力端子およびk出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第二周期目のn回の積和演算処理に該当する。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)であるレジスタR1に基づいて、j軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録され、レジスタR1には、k軸方向に配設された全てのプロセッシングエレメントにおいて積和演算された演算結果が記録されることになる。実施の形態1では、n=2であるため、2回だけ上述の処理が行われる。図3および図4に示した「2」および「3」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部8は、セレクタ部5を制御して、レジスタR6に記録されるデータを演算回路部6のa入力端子に出力させ、レジスタR2に記録されるデータを演算回路部6のb入力端子に出力させ、レジスタR3に記録されるデータを演算回路部6のc入力端子に出力させる処理を実行する。この処理において、レジスタR6に記録されるデータは、C(i,j)の初期値であり、レジスタR2に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、j軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)であり、レジスタR3に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部6では、データaとして入力されたレジスタR6のデータと、データbとして入力されたレジスタR2のデータと、データcとして入力されたレジスタR3のデータとを用いて、積和演算(d=a×b+cの演算)を行う。
次いで各プロセッシングエレメントPEの制御回路部8は、出力スイッチ部7を制御して、演算結果dとデータbとを取得して、演算結果dを−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力し、また、データb(詳細には、レジスタR2に記録されていたデータ)を−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力する。
そして、各プロセッシングエレメントPEの制御回路部8は、入力スイッチ部4を制御して、隣接するプロセッシングエレメントPEよりi入力端子を介して演算結果dを取得し、j入力端子を介してデータb(レジスタR2のデータ)を取得して、演算結果dをレジスタR3に記録させるとともに、データb(レジスタR2のデータ)をR2に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部8は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態1では2回)だけ繰り返し実行して、i入力端子およびi出力端子の接続によりトーラス状に接続された経路と、j入力端子およびj出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第三周期目のn回の積和演算処理に該当する。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR3には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて積和演算されたj軸方向に配設される全てのプロセッシングエレメントPEの積和演算結果(第二周期目のn回の積和演算処理による演算結果)を用いて、i軸方向に配設された全てのプロセッシングエレメントPEで演算処理した演算結果(第三周期目のn回の積和演算処理による演算結果)が記録され、レジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、j軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録されることになる。実施の形態1では、n=2であるため、2回だけ上述の処理が行われる。図3および図4に示した「4」および「5」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
このようにして実施の形態1に係るアレイプロセッサ1では、隣接するプロセッシングエレメントPEに対して、演算結果および積和演算に用いる所定データを順次出力してそれぞれのプロセッシングエレメントPEにおいて積和演算処理を行い、この隣接するプロセッシングエレメントPEへの演算結果の出力処理を、順次k軸方向、j軸方向、i軸方向へと出力方向を変えて処理を進めることにより、各演算回路部6における積和演算結果をレジスタR3に記録させることができる。従って、従来のアレイプロセッサのように、計算途中でデータや係数データの入力順番を調整するための専用回路を設ける必要がなく、回路構成の簡素化を図ることが可能となる。また、演算結果を隣接するプロセッシングエレメントPEに順次出力することによって三次元離散コサイン変換処理(三次元直交変換処理)を行うことが可能であるため、各次元の計算途中においてプロセッシングエレメントPEの内部に蓄えられるデータおよび係数行列要素を、従来のように複雑な配線構造を用いて何度も交換し合う必要がなく、処理の迅速化および簡素化を図ることが可能となる。
このように、実施の形態1に係るアレイプロセッサ1を用いることにより、従来の構成において必須とされていた計算途中におけるデータ同士の入替作業を行うことなくなる。また、複数のプロセッシングエレメントPEを接続させて演算結果処理を順次行うことにより、三次元離散コサイン変換処理(三次元離散直交変換処理)を迅速に実行することができ、さらに回路構成の複雑化を抑制することが可能となる。
次に、上述したアレイプロセッサ1を用いて、三次元逆離散コサイン変換(3D−IDCT)を計算する方法を説明する。なお、図5は、各プロセッシングエレメントPE(i,j,k)における各レジスタR0〜R6の初期値および各処理ステップにおいて記録されるレジスタを示した表であり、図6は、図5に示したレジスタの内容が変更される状態を、処理ステップに応じて矢印で示したものである。なお、図6に示した破線による矢印は、演算処理に用いられるデータbに該当するデータの出力状態を示しており、実線による矢印は演算結果dに該当するデータの出力状態を示している。
三次元逆離散コサイン変換を行う場合には、式(2)において三次元逆離散コサイン変換用の固定値(IDCT係数(固定値))として下記のようなC(k,j),C(i,k)およびC(i,j)が用いられ、それぞれの値がレジスタR4,R5,R6に初期値として記録される。
具体的に説明すると、プロセッシングエレメントPEの配置位置の座標位置(i,j,k)において、k=0であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR4には、
が記録される。ここで、nは各軸方向に向けて配設されたプロセッシングエレメントPEの個数を示しており、実施の形態1では、以下、n=2となる。
次に、1≦k≦n―1であり、かつ、0≦j≦n−1であるプロセッシングエレメントPE(i,j,k)のレジスタR4には、
が記録される。
また、i=0であり、かつ、0≦k≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR5には、
が記録され、また、1≦i≦n−1であり、かつ、0≦k≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR5には、
が記録される。
さらに、また、i=0であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR6には、
が記録され、また、1≦i≦n−1であり、かつ、0≦j≦n―1であるプロセッシングエレメントPE(i,j,k)のレジスタR6には、
が記録される。
また、レジスタR1、R2、R3には、初期値として0が記録されて、レジスタR0には、三次元逆離散コサイン変換処理を行う三次元の入力データ、具体的には上述した式(2)のY(i,j,k)の値が記録されている。
このレジスタR0〜R6の初期値の設定が行われた後、各プロセッシングエレメントPEの制御回路部8は、セレクタ部5を制御して、レジスタR4に記録されるデータを演算回路部6のa入力端子に出力させ、レジスタR0に記録されるデータを演算回路部6のb入力端子に出力させ、レジスタR1に記録されるデータを演算回路部6のc入力端子に出力させる処理を実行する。この処理において、レジスタR4に記録されるデータは、C(k,j)の初期値であり、レジスタR0に記録されるデータは、三次元逆離散コサイン変換処理を行うための入力データY(i,j,k)であり、レジスタR1に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部6では、データaとして入力されたレジスタR4のデータと、データbとして入力されたレジスタR0のデータと、データcとして入力されたレジスタR1のデータとを用いて、積和演算(d=a×b+cの演算)を行う。
次いで各プロセッシングエレメントPEの制御回路部8は、出力スイッチ部7を制御して、演算結果dとデータbとを取得し、演算結果dをk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力し、また、データb(詳細には、レジスタR0に記録されていたデータ)を−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力する。
そして、各プロセッシングエレメントPEの制御回路部8は、入力スイッチ部4を制御して、隣接するプロセッシングエレメントPEよりk入力端子を介して演算結果dを取得し、j入力端子を介してデータb(レジスタR0のデータ)を取得して、演算結果dをレジスタR1に記録させるとともに、データb(レジスタR0のデータ)をレジスタR0に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部8は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態1では2回)だけ繰り返し実行して、k入力端子およびk出力端子の接続によりトーラス状に接続された経路と、j入力端子およびj出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第一周期目のn回の積和演算処理に該当する。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR1には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)が記録されることになる。実施の形態1では、n=2であるため、2回だけ上述の処理が行われる。図5および図6に示した「0」および「1」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部8は、セレクタ部5を制御して、レジスタR5に記録されるデータを演算回路部6のa入力端子に出力させ、レジスタR1に記録されるデータを演算回路部6のb入力端子に出力させ、レジスタR2に記録されるデータを演算回路部6のc入力端子に出力させる処理を実行する。この処理において、レジスタR5に記録されるデータは、C(i,k)の初期値であり、レジスタR1に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果であり、レジスタR2に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部6では、データaとして入力されたレジスタR5のデータと、データbとして入力されたレジスタR1のデータと、データcとして入力されたレジスタR2のデータとを用いて、積和演算(d=a×b+cの演算)を実行する。
次いで各プロセッシングエレメントPEの制御回路部8は、出力スイッチ部7を制御して、演算結果dとデータbとを取得し、演算結果dを−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力し、また、データb(詳細には、レジスタR1に記録されていたデータ)をk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力する。
そして、各プロセッシングエレメントPEの制御回路部8は、入力スイッチ部4を制御して、隣接するプロセッシングエレメントPEよりi入力端子を介して演算結果dを取得し、k入力端子を介してデータb(レジスタR1のデータ)を取得して、演算結果dをレジスタR2に記録させるとともに、データb(レジスタR1のデータ)をレジスタR1に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部8は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態1では2回)だけ繰り返し実行して、i入力端子およびi出力端子の接続によりトーラス状に接続された経路と、k入力端子およびk出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第二周期目のn回の積和演算処理に該当する。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)であるレジスタR1に基づいて、i軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録され、レジスタR1には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果が記録されることになる。図5および図6に示した「2」および「3」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部8は、セレクタ部5を制御して、レジスタR6に記録されるデータを演算回路部6のa入力端子に出力させ、レジスタR2に記録されるデータを演算回路部6のb入力端子に出力させ、レジスタR3に記録されるデータを演算回路部6のc入力端子に出力させる処理を実行する。この処理において、レジスタR6に記録されるデータは、C(i,j)の初期値であり、レジスタR2に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、i軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)であり、レジスタR3に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部6では、データaとして入力されたレジスタR6のデータと、データbとして入力されたレジスタR2のデータと、データcとして入力されたレジスタR3のデータとを用いて、積和演算(d=a×b+cの演算)を行う。
次いで各プロセッシングエレメントPEの制御回路部8は、出力スイッチ部7を制御して、演算結果dとデータbとを取得して、演算結果dを−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力し、また、データb(詳細には、レジスタR2に記録されていたデータ)を−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力する。
そして、各プロセッシングエレメントPEの制御回路部8は、入力スイッチ部4を制御して、隣接するプロセッシングエレメントPEよりj入力端子を介して演算結果dを取得し、i入力端子を介してデータb(レジスタR2のデータ)を取得して、演算結果dをレジスタR3に記録させるとともに、データb(レジスタR2のデータ)をレジスタR2に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部8は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態1では2回)だけ繰り返し実行して、j入力端子およびj出力端子の接続によりトーラス状に接続された経路と、i入力端子およびi出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第三周期目のn回の積和演算処理に該当する。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR3には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて積和演算されたi軸方向に配設される全てのプロセッシングエレメントPEの積和演算結果(第二周期目のn回の積和演算処理による演算結果)を用いて、j軸方向に配設された全てのプロセッシングエレメントPEで演算処理した演算結果(第三周期目のn回の積和演算処理による演算結果)が記録され、レジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、i軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録されることになる。実施の形態1では、n=2であるため、2回だけ上述の処理が行われる。図5および図6に示した「4」および「5」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
このようにして実施の形態1に係るアレイプロセッサ1では、隣接するプロセッシングエレメントPEに対して、演算結果および積和演算に用いる所定データを順次出力してそれぞれのプロセッシングエレメントPEにおいて積和演算処理を行い、この隣接するプロセッシングエレメントPEへの演算結果の出力処理を、順次k軸方向、i軸方向、j軸方向へと出力方向を変えて処理を進めることにより、各演算回路部6における積和演算結果をレジスタR3に記録させることができる。従って、従来のアレイプロセッサ1のように、計算途中でデータや係数データの入力順番を調整するための専用回路を設ける必要がなく、回路構成の簡素化を図ることが可能となる。また、演算結果を隣接するプロセッシングエレメントPEに順次出力することによって三次元逆離散コサイン変換処理(三次元逆直交変換処理)を行うことが可能であるため、各次元の計算途中においてプロセッシングエレメントPEの内部に蓄えられるデータおよび係数行列要素を、従来のように複雑な配線構造を用いて何度も交換し合う必要がなく、処理の迅速化および簡素化を図ることが可能となる。
このように、実施の形態1に係るアレイプロセッサ1を用いることにより、従来の構成において必須とされていた計算途中におけるデータ同士の入替作業を行うことがなくなる。また、複数のプロセッシングエレメントを接続させて演算結果処理を順次行うことにより、三次元逆離散コサイン変換処理(三次元逆離散直交変換処理)を迅速に実行することができ、さらに回路構成の複雑化を抑制することが可能となる。
[実施の形態2]
次に、実施の形態2に係るアレイプロセッサについて説明を行う。実施の形態2に係るアレイプロセッサ1は、図1に示した実施の形態1に係るアレイプロセッサ1を構成するプロセッシングエレメントPEの構成状態(各プロセッシングエレメントPEの接続状態・配置状態)と同様の構成状態であるが、アレイプロセッサを構成するプロセッシングエレメントPEの内部構造が異なっている。
図7は、実施の形態2に係るプロセッシングエレメントPEの概略構成を模式的に示した図である。実施の形態2に係るプロセッシングエレメントPEは、実施の形態1に係るプロセッシングエレメントPE(図2参照)と比較して、セレクタ部15から演算回路部16のa入力端子に対して出力されるデータが、演算回路部16のa入力端子だけでなく出力スイッチ部17にも出力することができるように構成される点で相違する。このため、実施の形態2に係るプロセッシングエレメントPEでは、実施の形態1に係るプロセッシングエレメントPEに比べて、出力スイッチ部17へと延設される出力端子の端子数が1本多いという特徴を有している。
また、実施の形態2に係るアレイプロセッサ1では、追加されたa入力端子からの入出力信号に応じて出力スイッチ部17や他の要素を制御するために、制御回路部18が設けられている。なお、出力スイッチ部17と制御回路部18以外の各要素、すなわち入力スイッチ部14,セレクタ部15,演算回路部16およびレジスタR0〜R6は、実施の形態1に係るプロセッシングエレメントPEと同一構成である。
本構成のアレイプロセッサを用いて三次元離散コサイン変換処理(3D−DCT処理)を行う方法を説明する。
まず、各プロセッシングエレメントPE内のレジスタR4〜R6には、式3〜式8に基づいて求められた値が初期値として設定される。なお、これら値は定数であり、全ての演算が終了するまで変更されることはない。また、レジスタR1〜R3には、初期値として0が記録される。さらに、レジスタR0には、三次元離散コサイン変換処理(3D−DCT処理)を行う三次元の入力データ、具体的には前述した式(1)のX(m,j,k)の値が記録されている。ここで、mは、m=(−i−j+k)mod_nで計算される値であり、mod_nはnのモジュロ演算を表している。なお、mは、(−i−j+k)をnで割った余りであり、nは、三次元の入力データn×n×nのサイズ、すなわち、アレイプロセッサ1のサイズを示している。実施の形態2に係るプロセッシングエレメントPEでは、図1に示すようにn=2である。
さらに、図7に示すように、レジスタR0〜R3には、入力スイッチ部14を介してデータが案内される場合があり、この場合には各レジスタR0〜R3に新たなデータが上書き保存されてしまう。このため、後述するように、レジスタR0〜R3は、演算処理に応じて記録されるデータが変更される可能性があり、演算処理の処理経過に応じて演算結果、あるいは、演算に用いられる設定値が順次変更される。そして、最終的には、アレイプロセッサ1によって演算された三次元離散コサイン変換処理(3D−DCT処理)の演算結果が、レジスタR3に記録されることになる。
入力スイッチ部14は、制御回路部18の指示に応じて、3つの入力端子(i入力端子、j入力端子、k入力端子)を切り替えることにより、3つの入力端子を介して隣接するプロセッシングエレメントPEより入力されたデータを、レジスタR0〜R3のいずれかに案内して記録させる役割を有している。実際に入力端子を介して入力されるデータは、3つの入力端子(i入力端子、j入力端子、k入力端子)のうちのいずれか2つの入力端子を介して入力される。制御回路部18では、入力された情報を入力端子の種類に応じて判断し、入力スイッチ部14を制御して、入力されたデータを、それぞれ該当するレジスタ(レジスタR0〜R3のいずれか)に案内して記録させる。
セレクタ部15は、レジスタR0〜R6のいずれか3つのレジスタより演算回路部16の演算処理に用いられるデータを取得して演算回路部16に出力する。セレクタ部15では、取得した3つのデータを、演算回路部16の演算内容に応じて設けられる3つの入力端子(a入力端子,b入力端子およびc入力端子)に出力する。なお、a入力端子およびb入力端子に対して出力されたデータは、a入力端子およびb入力端子を介して演算回路部16に入力されると共に、そのまま出力スイッチ部17へと出力される。セレクタ部15において、いずれのレジスタ(レジスタR0〜R6のうち3つのレジスタ)からデータを取得するか、および、取得したデータをa入力端子,b入力端子およびc入力端子のいずれに出力するかという判断処理は、制御回路部18の指示に応じて行われる。
演算回路部16では、a入力端子より取得したデータaと、b入力端子より取得したデータbと、c入力端子より取得したデータcとに基づいて、積和演算を行う。積和演算は、演算結果をdとすると、d=a×b+cによって求められる。演算結果dは、演算回路部16の出力端子20を介して出力スイッチ部17に出力される。
出力スイッチ部17は、セレクタ部15より演算回路部16のa入力端子に対して出力され、さらに、出力端子21を介して出力スイッチ部17へ出力されたデータaと、演算回路部16のb入力端子に対して出力され、さらに、出力端子22を介して出力スイッチ部17へ出力されたデータbと、演算回路部16の出力端子20を介して出力スイッチ部17へ出力された演算結果dとを取得し、制御回路部18の指示に応じて、3つの出力端子(i出力端子、j出力端子、k出力端子)のいずれか2つの端子より、データaまたはデータbのいずれか一方と、演算結果dとを出力させる役割を有している。このため、実際に出力端子を介して出力されるデータは、3つの出力端子(i出力端子、j出力端子、k出力端子)のうちいずれか2つの出力端子のみになる。制御回路部18は、入力されたデータを判断し、出力スイッチ部17を制御することによって、データaまたはデータbのいずれか一方と、演算結果dとを、それぞれ該当する出力端子(i出力端子、j出力端子、k出力端子のいずれか)に出力する。
制御回路部18は、上述した入力スイッチ部14、セレクタ部15、出力スイッチ部17の操作制御を行う役割を有している。制御回路部18は、入力スイッチ部14,セレクタ部15および出力スイッチ部17に入力されるデータを、その内容や入力された入力端子の種類に応じて判断し、アレイプロセッサ1の処理内容に応じて入力スイッチ部14、セレクタ部15、出力スイッチ部17の制御を行う。
なお、図7には示していないが、各プロセッシングエレメントPEには、レジスタR0に対して三次元離散コサイン変換処理を行うための入力データを入力し、また、レジスタR1〜R3に対して初期値0を入力し、さらに、レジスタR4〜R6に対して初期値C(i,k),C(k,j),C(i,j)を入力するためのデータ入力手段や、最終的な演算結果が記録されるレジスタR3よりデータを取得するためのデータ取得手段などが設けられている。
次に、各プロセッシングエレメントPEの制御回路部18が、入力スイッチ部14,セレクタ部15,および出力スイッチ部17を適宜制御することにより、三次元直交変換の一つである三次元離散コサイン変換処理(3D―DCT処理)を行う過程を説明する。
図8は、各プロセッシングエレメントPE(i,j,k)における各レジスタR0〜R6の初期値および各処理ステップにおいて記録される内容が利用され、または変更されるレジスタを示した表である。レジスタR0には、X(m,j,k)が設定される。但し、mの値には、m=(−i−j+k)mod_2で求められる値が用いられる。このため、プロセッシングエレメントPE(0,0,0)のレジスタR0にはX(0,0,0)が設定され、プロセッシングエレメントPE(0,1,0)のレジスタR0にはX(1,1,0)が設定される。また、プロセッシングエレメントPE(1,0,0)のレジスタR0にはX(1,0,0)が設定され、プロセッシングエレメントPE(1,1,0)のレジスタR0にはX(0,1,0)が設定される。さらに、プロセッシングエレメントPE(0,0,1)のレジスタR0にはX(1,0,1)が設定され、プロセッシングエレメントPE(0,1,1)のレジスタR0にはX(0,1,1)が設定される。また、プロセッシングエレメントPE(1,0,1)のレジスタR0にはX(0,0,1)が設定され、プロセッシングエレメントPE(1,1,1)のレジスタR0にはX(1,1,1)が設定される。
その他の各レジスタの初期値は、実施の形態1において説明した値と同様とする。図9は、図8に示したレジスタR0〜R6の内容が変更される状態を、処理ステップに応じて矢印で示したものである。なお、図9に示した破線による矢印は、後述するデータaまたはデータbのいずれか一方であって、後述する処理において用いられるデータの出力状態を示している。また、実線による矢印は、後述する演算結果dに該当するデータの出力状態を示している。
上述したレジスタR0〜R6の初期値の設定が行われた後、各プロセッシングエレメントPEの制御回路部18は、セレクタ部15を制御して、レジスタR4に記録されるデータを演算回路部16のa入力端子に出力させ、レジスタR0に記録されるデータを演算回路部16のb入力端子に出力させ、レジスタR1に記録されるデータを演算回路部16のc入力端子に出力させる処理を実行する。この処理において、図8および図9に示すように、レジスタR4に記録されるデータは、C(i,k)の初期値であり、レジスタR0に記録されるデータは、三次元離散コサイン変換処理を行うための入力データ:X(m,j,k)、ただし、m=(−i−j+k)mod_2であり、レジスタR1に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部16では、データaとして入力されたレジスタR4のデータと、データbとして入力されたレジスタR0のデータと、データcとして入力されたレジスタR1のデータとを用いて、積和演算(d=a×b+cの演算)を実行する。
次いで各プロセッシングエレメントPEの制御回路部18は、出力スイッチ部17を制御して演算結果d、データaおよびデータbとを取得し、演算結果dをk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力し、また、データb(詳細には、レジスタR0に記録されていたデータ)を−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力する。なお、取得されたデータaに関しては、隣接するプロセッシングエレメントPEに対して出力されない。
そして、各プロセッシングエレメントPEの制御回路部18は、入力スイッチ部14を制御して、隣接するプロセッシングエレメントPEよりk入力端子を介して演算結果dを取得し、i入力端子を介してデータb(レジスタR0のデータ)とを取得して、演算結果dをレジスタR1に記録させるとともに、データb(レジスタR0のデータ)をレジスタR0に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部18は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態2では2回)だけ繰り返し実行して、i入力端子およびi出力端子の接続によりトーラス状に接続された経路と、k入力端子およびk出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定のデータを一巡させる。この一巡の処理が第一周期目のn回の積和演算処理に該当する。なお、第一周期目のn回の積和演算処理において、出力端子21を介して出力スイッチ部17に入力されたデータaは、隣接するプロセッシングエレメントPEに対して出力されることはない。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR1には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果が記録されることになる。実施の形態2では、n=2であるため、2回だけ上述の処理が行われる。図8および図9に示した「0」および「1」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部18は、セレクタ部15を制御して、レジスタR1に記録されるデータを演算回路部16のa入力端子に出力させ、レジスタR5に記録されるデータを演算回路部16のb入力端子に出力させ、レジスタR2に記録されるデータを演算回路部16のc入力端子に出力させる処理を実行する。この処理において、レジスタR5に記録されるデータは、C(k,j)の初期値であり、レジスタR1に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果であり、レジスタR2に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部16では、データaとして入力されたレジスタR1のデータと、データbとして入力されたレジスタR5のデータと、データcとして入力されたレジスタR2のデータとを用いて、積和演算(d=a×b+cの演算)を実行する。
次いで各プロセッシングエレメントPEの制御回路部18は、出力スイッチ部17を制御して、演算結果d、データaおよびデータbを取得し、演算結果dを−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力し、また、データa(詳細には、レジスタR1に記録されていたデータ)をk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力する。なお、取得されたデータbに関しては、隣接するプロセッシングエレメントPEに対して出力されない。
そして、各プロセッシングエレメントPEの制御回路部18は、入力スイッチ部14を制御して、隣接するプロセッシングエレメントPEよりj入力端子を介して演算結果dを取得し、k入力端子を介してデータa(レジスタR1のデータ)を取得して、演算結果dをレジスタR2に記録させるとともに、データa(レジスタR1のデータ)をレジスタR1に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部18は、演算結果dおよびデータaを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態2では2回)だけ繰り返し実行して、j入力端子およびj出力端子の接続によりトーラス状に接続された経路と、k入力端子およびk出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第二周期目のn回の積和演算処理に該当する。なお、第二周期目のn回の積和演算処理において、出力端子22を介して出力スイッチ部17に入力されたデータbは、隣接するプロセッシングエレメントPEに対して出力されることはない。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)であるレジスタR1に基づいて、j軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録され、レジスタR1には、k軸方向に配設された全てのプロセッシングエレメントにおいて積和演算された演算結果が記録されることになる。実施の形態2では、n=2であるため、2回だけ上述の処理が行われる。図8および図9に示した「2」および「3」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部18は、セレクタ部15を制御して、レジスタR2に記録されるデータを演算回路部16のa入力端子に出力させ、レジスタR6に記録されるデータを演算回路部16のb入力端子に出力させ、レジスタR3に記録されるデータを演算回路部16のc入力端子に出力させる処理を実行する。この処理において、レジスタR6に記録されるデータは、C(i,j)の初期値であり、レジスタR2に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、j軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)であり、レジスタR3に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部16では、データaとして入力されたレジスタR2のデータと、データbとして入力されたレジスタR6のデータと、データcとして入力されたレジスタR3のデータとを用いて、積和演算(d=a×b+cの演算)を行う。
次いで各プロセッシングエレメントPEの制御回路部18は、出力スイッチ部17を制御して、演算結果d、データaおよびデータbとを取得して、演算結果dを−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力し、また、データa(詳細には、レジスタR2に記録されていたデータ)を−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力する。なお、取得されたデータbに関しては、隣接するプロセッシングエレメントPEに対して出力されない。
そして、各プロセッシングエレメントPEの制御回路部18は、入力スイッチ部14を制御して、隣接するプロセッシングエレメントPEよりi入力端子を介して演算結果dを取得し、j入力端子を介してデータa(レジスタR2のデータ)を取得して、演算結果dをレジスタR3に記録させるとともに、データa(レジスタR2のデータ)をレジスタR2に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部18は、演算結果dおよびデータaを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態2では2回)だけ繰り返し実行して、i入力端子およびi出力端子の接続によりトーラス状に接続された経路と、j入力端子およびj出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第三周期目のn回の積和演算処理に該当する。なお、第三周期目のn回の積和演算処理において、出力端子22を介して出力スイッチ部17に入力されたデータbは、隣接するプロセッシングエレメントPEに対して出力されることはない。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR3には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて積和演算されたj軸方向に配設される全てのプロセッシングエレメントPEの積和演算結果(第二周期目のn回の積和演算処理による演算結果)を用いて、i軸方向に配設された全てのプロセッシングエレメントPEで演算処理した演算結果(第三周期目のn回の積和演算処理による演算結果)が記録される。これは、すなわち、三次元離散コサイン変換の計算結果である。また、レジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、j軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録されることになる。これは、すなわち、i軸方向およびj軸方向で構成される二次元の離散コサイン変換の計算結果である。さらに、レジスタR1には、i軸方向の一次元の離散コサイン変換の計算結果が記録されることになる。実施の形態2では、n=2であるため、2回だけ上述の処理が行われる。図8および図9に示した「4」および「5」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
このようにして実施の形態2に係るアレイプロセッサ1では、隣接するプロセッシングエレメントPEに対して、演算結果および積和演算に用いる所定データを順次出力してそれぞれのプロセッシングエレメントPEにおいて積和演算処理を行い、この隣接するプロセッシングエレメントPEへの演算結果の出力処理を、順次k軸方向、j軸方向、i軸方向へと出力方向を変えて処理を進めることにより、各演算回路部16における積和演算結果をレジスタR3に記録させることができる。従って、従来のアレイプロセッサのように、計算途中でデータや係数データの入力順番を調整するための専用回路を設ける必要がなく、回路構成の簡素化を図ることが可能となる。また、演算結果を隣接するプロセッシングエレメントPEに順次出力することによって三次元離散コサイン変換処理(三次元直交変換処理)を行うことが可能であるため、各次元の計算途中においてプロセッシングエレメントPEの内部に蓄えられるデータおよび係数行列要素を、従来のように複雑な配線構造を用いて何度も交換し合う必要がなく、処理の迅速化および簡素化を図ることが可能となる。
このように、実施の形態2に係るアレイプロセッサ1を用いることにより、従来の構成において必須とされていた計算途中におけるデータ同士の入替作業を行うことなくなる。また、複数のプロセッシングエレメントPEを接続させて演算結果処理を順次行うことにより、三次元離散コサイン変換処理(三次元直交変換処理)を迅速に実行することができ、さらに回路構成の複雑化を抑制することが可能となる。
次に、上述したアレイプロセッサ1を用いて、三次元逆離散コサイン変換(3D−IDCT)を計算する方法を説明する。なお、図10は、各プロセッシングエレメントPE(i,j,k)における各レジスタR0〜R6の初期値および各処理ステップにおいて記録されるレジスタを示した表であり、図11は、図10に示したレジスタの内容が変更される状態を、処理ステップに応じて矢印で示したものである。なお、図11に示した破線による矢印は、演算処理に用いられるデータaまたはデータbのいずれか一方であって、後述する処理において用いられるデータの出力状態を示している。また、実線による矢印は、演算結果dに該当するデータの出力状態を示している。
まず始めに、各プロセッシングエレメントPE内のレジスタR0〜R6の初期値を設定する。ここで、レジスタR4、R5、R6には、式9〜式14により求められる値が初期値として設定される。こららは、定数であり、演算終了まで変更されることはない。
また、レジスタR1〜R3には、初期値として0が記録され、レジスタR0には、三次元逆離散コサイン変換処理(3D−IDCT処理)を行う三次元の入力データ、具体的には上述した式(2)のY(i,m,k)の値が記録されている。ここで、mは、m=(−i−j+k)mod_nで計算される値であり、mod_nはnのモジュロ演算を表す。すなわち,mは、(−i−j+k)をnで割った余りである。また、nは、三次元の入力データn×n×nのサイズ、すなわち、アレイプロセッサ1のサイズを示している。実施の形態2に係るプロセッシングエレメントPEでは、図1に示すようにn=2である。
従って、プロセッシングエレメントPE(0,0,0)のレジスタR0にはY(0,0,0)が設定され、プロセッシングエレメントPE(0,1,0)のレジスタR0にはY(0,1,0)が設定される。また、プロセッシングエレメントPE(1,0,0)のレジスタR0にはY(1,1,0)が設定され、プロセッシングエレメントPE(1,1,0)のレジスタR0にはY(1,0,0)が設定される。さらに、プロセッシングエレメントPE(0,0,1)のレジスタR0にはY(0,1,1)が設定され、プロセッシングエレメントPE(0,1,1)のレジスタR0にはY(0,0,1)が設定される。また、プロセッシングエレメントPE(1,0,1)のレジスタR0にはY(1,0,1)が設定され、プロセッシングエレメントPE(1,1,1)のレジスタR0にはY(1,1,1)が設定される。
このレジスタR0〜R6の初期値の設定が行われた後、各プロセッシングエレメントPEの制御回路部18は、セレクタ部15を制御して、レジスタR0に記録されるデータを演算回路部16のa入力端子に出力させ、レジスタR4に記録されるデータを演算回路部16のb入力端子に出力させ、レジスタR1に記録されるデータを演算回路部16のc入力端子に出力させる処理を実行する。この処理において、レジスタR4に記録されるデータは、C(k,j)の初期値であり、レジスタR0に記録されるデータは、三次元逆離散コサイン変換処理(3D−IDCT処理)を行うための入力データY(i,m,k)、ただしm=(−i−j+k)mod_n、であり、レジスタR1に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部16では、データaとして入力されたレジスタR0のデータと、データbとして入力されたレジスタR4のデータと、データcとして入力されたレジスタR1のデータとを用いて、積和演算(d=a×b+cの演算)を行う。
次いで各プロセッシングエレメントPEの制御回路部18は、出力スイッチ部17を制御して、演算結果d、データaおよびデータbを取得し、演算結果dをk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力し、また、データa(詳細には、レジスタR0に記録されていたデータ)を−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力する。なお、取得されたデータbに関しては、隣接するプロセッシングエレメントPEに対して出力されない。
そして、各プロセッシングエレメントPEの制御回路部18は、入力スイッチ部14を制御して、隣接するプロセッシングエレメントPEよりk入力端子を介して演算結果dを取得し、j入力端子を介してデータa(レジスタR0のデータ)を取得して、演算結果dをレジスタR1に記録させるとともに、データa(レジスタR0のデータ)をレジスタR0に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部18は、演算結果dおよびデータaを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態2では2回)だけ繰り返し実行して、k入力端子およびk出力端子の接続によりトーラス状に接続された経路と、j入力端子およびj出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第一周期目のn回の積和演算処理に該当する。なお、第一周期目のn回の積和演算処理において、出力端子22を介して出力スイッチ部17に入力されたデータbは、隣接するプロセッシングエレメントPEに対して出力されることはない。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR1には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)が記録されることになる。実施の形態2では、n=2であるため、2回だけ上述の処理が行われる。図10および図11に示した「0」および「1」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部18は、セレクタ部15を制御して、レジスタR5に記録されるデータを演算回路部16のa入力端子に出力させ、レジスタR1に記録されるデータを演算回路部16のb入力端子に出力させ、レジスタR2に記録されるデータを演算回路部16のc入力端子に出力させる処理を実行する。この処理において、レジスタR5に記録されるデータは、C(i,k)の初期値であり、レジスタR1に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果であり、レジスタR2に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部16では、データaとして入力されたレジスタR5のデータと、データbとして入力されたレジスタR1のデータと、データcとして入力されたレジスタR2のデータとを用いて、積和演算(d=a×b+cの演算)を実行する。
次いで各プロセッシングエレメントPEの制御回路部18は、出力スイッチ部17を制御して、演算結果d、データaおよびデータbを取得し、演算結果dを−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力し、また、データb(詳細には、レジスタR1に記録されていたデータ)をk軸方向に隣接するプロセッシングエレメントPEのk入力端子に出力する。なお、取得されたデータaに関しては、隣接するプロセッシングエレメントPEに対して出力されない。
そして、各プロセッシングエレメントPEの制御回路部18は、入力スイッチ部14を制御して、隣接するプロセッシングエレメントPEよりi入力端子を介して演算結果dを取得し、k入力端子を介してデータb(レジスタR1のデータ)を取得して、演算結果dをレジスタR2に記録させるとともに、データb(レジスタR1のデータ)をレジスタR1に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部18は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態2では2回)だけ繰り返し実行して、i入力端子およびi出力端子の接続によりトーラス状に接続された経路と、k入力端子およびk出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第二周期目のn回の積和演算処理に該当する。なお、第二周期目のn回の積和演算処理において、出力端子21を介して出力スイッチ部17に入力されたデータaは、隣接するプロセッシングエレメントPEに対して出力されることはない。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)であるレジスタR1に基づいて、i軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録され、レジスタR1には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果が記録されることになる。図10および図11に示した「2」および「3」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
続いて、各プロセッシングエレメントPEの制御回路部18は、セレクタ部15を制御して、レジスタR6に記録されるデータを演算回路部16のa入力端子に出力させ、レジスタR2に記録されるデータを演算回路部16のb入力端子に出力させ、レジスタR3に記録されるデータを演算回路部16のc入力端子に出力させる処理を実行する。この処理において、レジスタR6に記録されるデータは、C(i,j)の初期値であり、レジスタR2に記録されるデータは、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、i軸方向に配設された全てのプロセッシングエレメントPEで積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)であり、レジスタR3に記録されるデータは、初期値の0である。
各プロセッシングエレメントPEの演算回路部16では、データaとして入力されたレジスタR6のデータと、データbとして入力されたレジスタR2のデータと、データcとして入力されたレジスタR3のデータとを用いて、積和演算(d=a×b+cの演算)を行う。
次いで各プロセッシングエレメントPEの制御回路部18は、出力スイッチ部17を制御して、演算結果d、データaおよびデータbとを取得して、演算結果dを−j軸方向に隣接するプロセッシングエレメントPEのj入力端子に出力し、また、データb(詳細には、レジスタR2に記録されていたデータ)を−i軸方向に隣接するプロセッシングエレメントPEのi入力端子に出力する。なお、取得されたデータaに関しては、隣接するプロセッシングエレメントPEに対して出力されない。
そして、各プロセッシングエレメントPEの制御回路部18は、入力スイッチ部14を制御して、隣接するプロセッシングエレメントPEよりj入力端子を介して演算結果dを取得し、i入力端子を介してデータb(レジスタR2のデータ)を取得して、演算結果dをレジスタR3に記録させるとともに、データb(レジスタR2のデータ)をレジスタR2に記録する。
このようにして、各プロセッシングエレメントPEの制御回路部18は、演算結果dおよびデータbを隣接したプロセッシングエレメントPEに対して出力する処理を、各軸方向に配設されるプロセッシングエレメントPEの配置個数に対応する回数、つまりn回(実施の形態2では2回)だけ繰り返し実行して、j入力端子およびj出力端子の接続によりトーラス状に接続された経路と、i入力端子およびi出力端子の接続によりトーラス状に接続された経路とに沿って、演算処理結果および所定データを一巡させる。この一巡の処理が第三周期目のn回の積和演算処理に該当する。なお、第三周期目のn回の積和演算処理において、出力端子21を介して出力スイッチ部17に入力されたデータaは、隣接するプロセッシングエレメントPEに対して出力されることはない。
このn回の処理の繰り返しにより、各プロセッシングエレメントPEのレジスタR3には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて積和演算されたi軸方向に配設される全てのプロセッシングエレメントPEの積和演算結果(第二周期目のn回の積和演算処理による演算結果)を用いて、j軸方向に配設された全てのプロセッシングエレメントPEで演算処理した演算結果(第三周期目のn回の積和演算処理による演算結果)が記録される。これは、すなわち三次元逆離散コサイン変換処理(3D−IDCT処理)の計算結果である。また、レジスタR2には、k軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第一周期目のn回の積和演算処理による演算結果)に基づいて、i軸方向に配設された全てのプロセッシングエレメントPEにおいて積和演算された演算結果(第二周期目のn回の積和演算処理による演算結果)が記録されることになる。これは、すなわち、i軸方向およびk軸方向で構成される二次元の離散逆コサイン変換の計算結果である。さらに、レジスタR1には、i軸方向の一次元の離散逆コサイン変換の計算結果が記録されることになる。実施の形態2では、n=2であるため、2回だけ上述の処理が行われる。図10および図11に示した「4」および「5」の処理ステップは、上述したこの2回の処理に該当する処理内容を示している。
このようにして実施の形態2に係るアレイプロセッサ1では、隣接するプロセッシングエレメントPEに対して、演算結果および積和演算に用いる所定データを順次出力してそれぞれのプロセッシングエレメントPEにおいて積和演算処理を行い、この隣接するプロセッシングエレメントPEへの演算結果の出力処理を、順次k軸方向、i軸方向、j軸方向へと出力方向を変えて処理を進めることにより、各演算回路部16における積和演算結果をレジスタR3に記録させることができる。従って、従来のアレイプロセッサ1のように、計算途中でデータや係数データの入力順番を調整するための専用回路を設ける必要がなく、回路構成の簡素化を図ることが可能となる。また、演算結果を隣接するプロセッシングエレメントPEに順次出力することによって三次元逆離散コサイン変換処理(三次元逆直交変換処理)を行うことが可能であるため、各次元の計算途中においてプロセッシングエレメントPEの内部に蓄えられるデータおよび係数行列要素を、従来のように複雑な配線構造を用いて何度も交換し合う必要がなく、処理の迅速化および簡素化を図ることが可能となる。
このように、実施の形態2に係るアレイプロセッサ1を用いることにより、従来の構成において必須とされていた計算途中におけるデータ同士の入替作業を行うことなくなる。また、複数のプロセッシングエレメントを接続させて演算結果処理を順次行うことにより、三次元逆離散コサイン変換処理(三次元逆直交変換処理)を迅速に実行することができ、さらに回路構成の複雑化を抑制することが可能となる。
以上、本発明に係るアレイプロセッサについて、図面を用いて詳細に説明を行ったが、本発明に係るアレイプロセッサは、上述した構成に限定されるものではなく、当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到しうることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
例えば、実施の形態1および実施の形態2に係るアレイプロセッサ1では、プロセッシングエレメントPEを、i軸方向,j軸方向,k軸方向のそれぞれに対して2個ずつ、合計8個配設した構成を例として用いて説明を行ったが、本発明に係るアレイプロセッサは、各軸方向に対して2個ずつ配設された構造には限定されず、2以上の個数(例えば、n個)ずつ配設した場合であってもよい。このように複数のプロセッシングエレメントを配設した場合であっても、上述した実施の形態1および実施の形態2に示した方法に従って隣接するプロセッシングエレメントPEに演算結果と所定データを出力させて一巡することにより、三次元直交変換処理および三次元逆直交変換処理に関する演算を行うことが可能となる。
また、実施の形態1および実施の形態2に係るアレイプロセッサ1では、説明の便宜上、各プロセッシングエレメントをi軸,j軸,k軸のそれぞれに対応付けた座標位置に配設する構成としたが、現実にプロセッシングエレメントPEを配設する場合には、このように物理的な三次元配設(立体的な配置)により構成する必要はなく、前述したプロセッシングエレメントPEに設けられる3個の入力端子と3個の出力端子とがそれぞれ対応するようにして接続されるものであれば、どのように配設されるものであってもよい。例えば、同一平面状に3つの軸を設定することにより、各プロセッシングエレメントを平面的に配設するものであってもよい。
また、実施の形態1および実施の形態2では、三次元直交変換処理の一例である三次元離散コサイン変換と三次元逆離散コサイン変換との演算を行うアレイプロセッサについて説明を行ったが、本発明に係るアレイプロセッサは、上述した三次元離散コサイン変換と三次元逆離散コサイン変換とに関する三次元直交変換処理等だけに用いられるものではなく、C(i,k),C(k,j),C(i,j)で示された初期値(DCT係数)を適切な係数に変更することにより、他の三次元直交変換であるウォルシュ・アダマール変換(WHT)や離散フーリエ変換(DFT)等の演算処理に利用することが可能である。
さらに、実施の形態1および実施の形態2に示したアレイプロセッサ1では、物理的な専用の演算回路を用いて演算回路部6,16を構成して演算処理を行う場合について説明を行ったが、このよう物理的な回路を用いるのではなく、制御回路部8,18の演算処理機能を利用することによって演算回路部6,16の演算処理に該当する演算を行う構成とし、演算処理を行うための回路を物理的に設けない構成とするものであってもよい。
また、実施の形態1および実施の形態2で示したアレイプロセッサ1を用いる場合において、i軸方向,j軸方向およびk軸方向におけるデータの転送方向や、どの軸方向へ最初にデータを出力するかというデータの処理順番などを自由に設定・変更することが可能である。また各プロセッシングエレメントPEに入力されるデータや初期値(DCT係数)を、各プロセッシングエレメントPE(i,j,k)内におけるレジスタR0からレジスタR6のどこに格納するかを自由に設定・変更することが可能である。このように、データの転送方向や処理順番、さらには、データの格納設定などを変更した場合であっても、実施の形態1および実施の形態2に示した内容と同一の処理結果を得ることが可能であり、また同一の結果を得る方法は、実施の形態1および実施の形態2に示した方法の他、幾通りも考えられる。しかし、これらの変更は、当業者であれば、特許請求の範囲に記載された範疇内において、容易に想到しうることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。