説明

SIMD型マイクロプロセッサ

【課題】回路規模やレイアウト規模を増大させることなく、また、データ転送時の処理能力の低下を起こすことなく、より多くの画像データを高速に同時処理することができるSIMD型マイクロプロセッサを提供する。
【解決手段】PE内のローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスB2を、2ポートレジスタまたはPE間接続バスB6、B7を介して隣接するPE内のALU入力バスB3、隣接するPEのALU出力バスB4に接続し、PE内のALU入力バスB3、ALU出力バスB4を、PE間接続バスB6、B7を介して隣接するPE内のローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスに接続し、GP部2が、2ポートレジスタ4とPEアレイ部3とのデータ転送の際にこれらのバスを経由するように経路を切替える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は1つの演算命令により複数のデータ等を並列処理するSIMD(Single Instruction-stream, Multiple Data-stream)型マイクロプロセッサに関する。
【背景技術】
【0002】
近年、デジタル複写機やファクシミリ装置などの画像処理では、画素数の増加、画像処理の多様化などにより画質の向上が図られている。こういった画像処理では複数のデータに対して同一の処理をすることが多く、1命令で複数のデータを同時処理するSIMD(Single Instruction-stream Multiple Data-stream)型マイクロプロセッサが用いられることが多い。
【0003】
SIMD型マイクロプロセッサは、プロセッサエレメント(以下PEと称する)と呼ばれる単位で演算器とレジスタを備え、そのPEを複数個有している。またこれら複数個のPEはグローバルプロセッサによって制御されている。このグローバルプロセッサが各PEを同時に制御することで、1つの命令で複数のデータに対して同時に同一の演算処理を実行することを可能にしている。画像処理においては、各PEは通常1個の画素の画像処理を担当する。
【0004】
例えばスキャナやカメラなどの外部入力装置から入力された画像データは、レジスタに転送され、さらに演算器により論理算術演算などの含まれた画像処理が行われ、再度レジスタに書き戻される。この画像処理を必要な回数繰り返した後、プリンタ、外部記憶装置などの外部出力装置に出力される。
【0005】
近年、画像処理への性能要求は、処理速度の向上と画像の高品質化の二面に向けられている。
【0006】
まず、SIMD型マイクロプロセッサでの画像処理の処理速度の向上を求める場合、プロセッサの動作周波数を向上させるということと、画像処理の画素数を増加させることという2通りのアプローチがある。前者の動作周波数を向上させるということは、常時要求されている課題であり、大きな性能向上を実現するのは容易でない。後者の1回の画像処理で処理できる画素数を増加させるということは、一般的にはPEの個数を増加させるということとなる。しかし、PEの個数を増加させることは、回路の大規模化、動作周波数の低下などの不都合を伴う。
【0007】
一方、画像の高品質化ということは、画素が多色や多階調になることであり、画素データのサイズが大きくなることに繋がる。たとえば、画素データサイズが256階調の8ビットから、65536階調16ビットになることなどである。このように画素データのサイズが増加すると、結局各PEの演算データサイズを増加させなければならず、回路の大規模化、動作周波数の低下などの不都合を招く事につながる。
【0008】
画素データのサイズに関しては、特許文献1に記載されているように、各PEでは1ビットごとのデータ処理を行い、複数のデータ処理を行うことで多ビットのデータと同等の処理を行う方法も提案されている。この場合回路の大規模化を防ぎ、処理速度を向上させることが出来るが、8ビットや16ビットのデータサイズと同じ処理を行うには、複数の命令を実行しなければならず、結局は処理能力を犠牲にしてしまうことになる。
【0009】
このようにSIMD型マイクロプロセッサへの要求は、動作周波数の向上、PE数の増加、PEでの演算データサイズ拡大、と多岐に渡っている。
【0010】
SIMD型マイクロプロセッサの画像処理に関しては、複数のPE(以下PEアレイと称する)を1次元に配置して、1次元の番号割付を行い、画像データを1ラインごとに処理する方式と、PEアレイを2次元に配置して、2次元の番号割付を行い、画像データを2次元データのまま処理する方式がある。図5には1次元SIMDプロセッサの構成例を、図6には2次元SIMDプロセッサの構成例を示している。図5では画像データの並びに合わせて1次元方向に配置したPEアレイ100に対して、グローバルプロセッサ(Global Processor)101が一斉に同時処理を行わせている。図6ではPEアレイ100を2次元、つまりn行m列に配置して処理している。
【0011】
また、処理するデータは1次元のSIMD型マイクロプロセッサであったとしても、処理速度の低下を防ぐ目的で2次元にPEアレイ100を配置する方法も考えられる。これはPEアレイ100の領域が1方向に大きくなりすぎて、並列処理を制御するグローバルプロセッサ101からの信号が、配線遅延成分などによって遅れて、処理速度が低下するのを防止するためである。
【0012】
例えば、特許文献2には、1次元SIMD型マイクロプロセッサでありながら、PEアレイを折り返した2次元配置としていることが記載されている。これにより、従来の1次元配置のSIMD型マイクロプロセッサと比べて、処理速度の向上とPE数の増加といった課題を同時に実現させることが可能となる。
【特許文献1】特開2007−206849号公報
【特許文献2】特許第3971719号公報
【発明の開示】
【発明が解決しようとする課題】
【0013】
上述したように画像プロセッサの処理速度を低下させずにより多くの画素に対応させるには、1次元方向にあまり多くのPEを並べず、2次元にPEを配置にすることが望ましいと考えられる。しかしこの場合、外部とのデータ転送が問題となってくる。外部から入力されたデータを如何にPEに転送すれば良いかという問題が生じる。図5に示した1次元配置のPEアレイ100では、外部素子(2P−REG102)とのデータ転送は容易であったが、図6に示した2次元配置のPEアレイ100では、外部素子からのデータ転送経路を新たに設けなければならないという問題が生じる。
【0014】
図5や図6に示した2P−REG102は、二方向のデータ転送が可能な2ポートレジスタであり、通常外部入力されたデータを各PEに転送する場合にはよく用いられる。一方向は外部との通信用として順次データが入出力され、一方向は各PEとのデータ転送用として各PEへデータを一括転送している。
【0015】
1次元配置のSIMD型マイクロプロセッサでは、2P−REG102とPEアレイ100とを並べて配置することができるので、相互のデータ転送は容易であった。しかしPEアレイ100を2次元配置とすると、2P−REG102の配置にも工夫が必要となる。例えば、図6に示した構成以外に、2P−REG102を各PEの列に合わせて配置する構成も考えられるが、この場合は、外部メモリから2P−REG102へのアクセス時に、対象となる2P−REG102の列を切り替えなければならず、自由度がなく制御が困難という問題が生じる。またPEアレイ100自体も大きくなるため、PE間のデータ転送時の妨げとなる問題も生じる。
【0016】
このような問題からPEアレイ100を2次元配置とする場合、図6に示したように2P−REG102をPEアレイ100とは別に1箇所にまとめて配置し、2P−REG102とPEアレイ100との間のデータ転送はグローバル配線によって行うのが一般的である。
【0017】
グローバル配線による接続はPEアレイ100を構成する上では容易である。しかし本来1次元配置のSIMD型マイクロプロセッサでは不要であったものであり、2次元配置とすることでこのグローバル配線領域を設けなければならず、それに伴いチップレイアウト時のPEアレイ100の領域のサイズが増加してしまう。何故ならば、より多くのPEをより高速に動作させるために、各PEの領域はできるだけ小さく構成されているものであり、新たに配線数を増加させるという事は、それに合わせたレイアウト領域が必要になると言う事である。これは処理能力の向上という点からは反してしまう。
【0018】
より多くの画素を処理するには、より多くのPEを搭載しなければならないが、配線数を増やし各PEのチップレイアウト時の領域のサイズを増加させる事は、処理能力を下げてしまう事に繋がる。
【0019】
このようにSIMD型マイクロプロセッサの処理能力を向上させるには、PE数を増大させつつ高速処理を実現させるため、2次元配置のPEアレイを構成することが望ましいが、PEアレイと外部素子とのデータ転送にグローバル配線が必要となるため、レイアウト規模を大きくしてしまうという問題があった。
【0020】
本発明はかかる問題を解決することを目的としている。
【0021】
すなわち、本発明は、回路規模やレイアウト規模を増大させることなく、また、データ転送時の処理能力の低下を起こすことなく、より多くの画像データを高速に同時処理することができるSIMD型マイクロプロセッサを提供することを目的としている。
【課題を解決するための手段】
【0022】
請求項1に記載された発明は、複数のプロセッサエレメントが2次元のアレイ状に配置されたPEアレイ部と、前記複数のプロセッサエレメントに対して同時に並列処理を行うように制御する制御手段と、前記PEアレイ部において処理されるデータを入出力する外部転送バスによって前記PEアレイ部と接続されたデータ入出力手段と、を設けたSIMD型マイクロプロセッサにおいて、前記複数のプロセッサエレメントにおける内部データ転送バスと隣接する前記プロセッサエレメントの内部データ転送バスとを接続する接続バスが設けられ、そして、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記接続バスへデータを入力または出力するように切替える切替手段が設けられていることを特徴とするSIMD型マイクロプロセッサである。
【0023】
請求項2に記載された発明は、請求項1に記載された発明において、前記内部データ転送バスが、前記ローカルレジスタから前記演算器方向に転送するバスと、前記演算器から前記ローカルレジスタ方向に転送するバスと、の2種類設けられ、そして、前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の方向に応じて、前記2種類のバスに接続された前記接続バスのうちいずれかに切替えることを特徴とするものである。
【0024】
請求項3に記載された発明は、請求項2に記載された発明において、前記プロセッサエレメントに、前記内部データ転送バス上に設けられた回路をバイパスする経路が設けられ、そして、前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記バイパスする経路を経由するように切替えることを特徴とするものである。
【0025】
請求項4に記載された発明は、請求項1乃至3のうちいずれか一項に記載された発明において、前記切替手段により、隣接する複数列のプロセッサエレメントのデータが、各プロセッサエレメント内の異なる複数の前記内部データ転送バスにそれぞれ出力されて、同時に複数のデータが転送されるように前記内部データ転送バスおよび前記接続バスを切替えることを特徴とするものである。
【発明の効果】
【0026】
請求項1に記載の発明によれば、プロセッサエレメントの内部データ転送バスを、隣接するプロセッサエレメントの内部データ転送バスと接続する接続バスを設け、切替手段が、データ入出力手段とプロセッサエレメントとのデータ転送の際に接続バスにデータを入力または出力するように切替えているので、グローバル配線を設けず、隣接するPE間の接続のみを行うため、各PE上に新たな配線領域を設ける必要が無く、全て既存のローカル配線のみで実現できる。そのためレイアウトサイズを増加させる事がなく、より多くのPEを動作速度を落とすことなく搭載する事が可能となる。
【0027】
請求項2に記載の発明によれば、切替手段が、データ入出力手段と前記プロセッサエレメントとのデータ転送の方向に応じて、ローカルレジスタから演算器方向に転送するバスと、演算器からローカルレジスタ方向に転送するバスの2種類のバスのうちいずれかに切替えているので、データ転送の方向に応じてPE内部のバスの制御を切替えるのみでデータ転送を行うことができる。
【0028】
請求項3に記載の発明によれば、内部データ転送バス上に設けられた回路をバイパスする経路を設けて、制御手段が、記憶手段と前記プロセッサエレメントとのデータ転送の際に前記バイパスする経路を経由するように切替えているので、データ転送に不要な回路をバイパスすることができ、転送速度を短縮することができる。
【0029】
請求項4に記載の発明によれば、制御手段により、隣接する複数列のプロセッサエレメントのデータを、各プロセッサエレメント内の複数の内部バスにそれぞれ出力させて、同時に複数のデータを転送するように内部データ転送バスおよび接続バスをを切替えているので、一度に転送するデータ量を増大させることができ、処理能力を向上させることができる。
【発明を実施するための最良の形態】
【0030】
[第1実施形態]
以下、本発明の第1の実施形態を、図1を参照して説明する。図1は、本発明の第1の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【0031】
図1に示したSIMD型マイクロプロセッサ1は、グローバルプロセッサ(Global Processor:以下GPと称する)部2と、PEアレイ部3と、2ポートレジスタ(2P−REG)4と、PEIF5と、を備えている。
【0032】
制御手段、切替手段としてのGP部2は、プログラム格納用のプログラムRAMと、演算データ格納用のデータRAMと、プログラムのアドレスを保持するプログラムカウンタと、演算処理のデータ格納のための汎用レジスタと、GP用のALUと、レジスタ退避及び復帰時に退避先データRAMのアドレスを保持しているスタックポインタと、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタと、割り込み時とNMI(マスク不可割り込み)時の分岐元アドレスを保持するレジスタと、GP部2の状態を保持しているプロセッサステータスレジスタと、命令を解読し各種制御信号を生成するシーケンスユニットと、を備えている。これらを用いて、GP命令の実行が行われる。
【0033】
また、GP部2は、シーケンスユニットで生成された制御信号を、PEアレイ部3に供給することによりPEアレイ部3に対して演算などを行わせるPE命令を実行する。また、GP部2は、PEアレイ部3と2ポートレジスタ4とのデータ転送の際に、PE間接続バスB6、B7へデータが入力または出力されるように切り替えることやローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスB2、ALU入力バスB3、ALU出力バスB4のデータ転送の方向に合わせた切り替えなどの制御も行う。
【0034】
PEアレイ部3は、複数のPEを備えている。本実施形態の場合、図1に示したように、m×nの2次元に配置したPEが配置されており、縦方向にn個、横方向にm個のPEを並べている。また、PEはそれぞれにPE番号を持っており、図1のPE(0,0)〜PE(m,n)が相当する。そして、後述する2ポートレジスタと外部転送バスB20、B21とによって接続されている。
【0035】
PEは、図1に示したように、ローカルレジスタ31と、ALU(L)32と、ALU(H)33と、ALU入力用FF34、ALU出力用FF35と、ローカルレジスタ書き込みバスB1と、ローカルレジスタ読み出しバスB2と、ALU入力バスB3と、ALU出力バスB4と、フォワーディング経路B5と、を備えている。
【0036】
ローカルレジスタ31は、16ビットのレジスタであり、当該PEにおいて演算されるデータや演算されたデータが格納される。
【0037】
演算器としてのALU(L)32は、算術論理演算回路であり、ALU入力バスB3から入力されたデータに対してGP部2からの制御信号に基づいた所定の演算を行いALU出力バスB4に出力する。
【0038】
演算器としてのALU(H)33は、算術論理演算回路であり、ALU入力バスB3から入力されたデータに対してGP部2からの制御信号に基づいた所定の演算を行いALU出力バスB4に出力する。
【0039】
ALU(L)32とALU(H)33は32ビットのALUとして動作することも可能である。この場合倍精度の演算ができるALUとなる。
【0040】
ALU入力用FF34は、フリップフロップ(FF)で構成され、ローカルレジスタ出力バスB2の一端が接続されてローカルレジスタ読み出しバスB2が入力となり、ALU入力バスB3の一端が接続されてALU入力バスB3に出力する。
【0041】
ALU出力用FF35は、フリップフロップ(FF)で構成され、ALU出力バスB4の一端が接続されてALU出力バスB4が入力となり、ローカルレジスタ書き込みバスB1の一端が接続されてローカルレジスタ書き込みバスB1に出力する。
【0042】
内部データ転送バス、演算器からローカルレジスタ方向に転送するバスとしてのローカルレジスタ書き込みバスB1は、一端がALU出力用FF35に、他端が外部転送バスB20に接続された16ビット幅のバスであり、ローカルレジスタ31にも接続される。また、ローカルレジスタ書き込みバスB1は、2ポートレジスタ4から出力されたデータまたはALU出力用FF35から出力されたデータが、ローカルレジスタ31またはフォワーディング経路B5に入力される。
【0043】
内部データ転送バス、ローカルレジスタから演算器方向に転送するバスとしてのローカルレジスタ入力バスB2は、一端がALU入力用FF34に、他端が外部転送バスB21に接続された16ビット幅のバスであり、ローカルレジスタ31にも接続される。また、ローカルレジスタ入力バスB2は、ローカルレジスタ31から出力されたデータが、ALU入力用FF34に入力されるとともに、2ポートレジスタ4にも入力される。
【0044】
内部データ転送バス、ローカルレジスタから演算器方向に転送するバスとしてのALU入力バスB3は、一端がALU入力用FF34に、他端が後述するPE間接続バスB6に接続された16ビット幅のバスであり、ALU(L)32及びALU(H)33にも接続される。また、ALU入力バスB3は、ALU入力用FF34から出力されたデータが、PE間接続バスB6に入力されるとともに、ALU(L)32及びALU(H)33にも入力される。
【0045】
内部データ転送バス、演算器からローカルレジスタ方向に転送するバスとしてのALU出力バスB4は、一端がALU出力用FF35に、他端が後述するPE間接続バスB7に接続された16ビット幅のバスであり、ALU(L)32及びALU(H)33にも接続される。また、ALU出力バスB3は、ALU(L)32及びALU(H)33またはPE間接続バスB7から出力されたデータが、ALU出力用FF35に入力される。
【0046】
フォワーディング経路B5は、ローカルレジスタ31をバイパスしてローカルレジスタ書き込みバスB1とローカルレジスタ読み出しバスB2とを接続する信号線である。
【0047】
なお、上述した構成はPE(0,0)の構成を説明したが他のPEも同様である。但し、PE間の接続は図1に示したようにPE(0,0)〜PE(0,n)の列のみ2ポートレジスタ4と接続されるが、他の列は隣接するPEとPE間接続バスB6及びB7で接続される。すなわち、PE(0,0)〜PE(0,n)のPE列とPE(1,0)〜PE(1,n)のPE列、またはPE(1,0)〜PE(1,n)のPE列とPE(2,0)〜PE(2,n)のPE列といったように隣接するPE列同士を接続する。例えば、PE(0,0)のALU入力バスB3はPE間接続バスB6を介してPE(1,0)のローカルレジスタ書き込みバスB1へ、PE(1,0)のローカルレジスタ読み出しバスB2はPE間接続バスB7を介してPE(0,0)のALU出力バスB4へとデータが転送できるように接続している。以下同様にPE(m,0)〜PE(m,n)のPE列まで接続される。
【0048】
データ入出力手段としての2ポートレジスタ4は、二方向のデータ転送が可能な2ポートを備えたレジスタであり、外部入力された各PEに転送するデータを格納している。二方向のうち、一方向はPEIF5に対してSIMD型マイクロプロセッサ1外部との通信用として順次データが入出力されるポートであり、残りの一方向は各PEとのデータ転送用として各PEへデータを一括転送するポートであり、外部転送バスB20でPEへのデータを入力し、外部転送バスB21でPEからデータが出力されてくる。
【0049】
2ポートレジスタ4はPEアレイ部3の外側に配置される。PEアレイ部3との接続は、この2ポートレジスタ4と隣接したPE(0,0)〜PE(0,n)のPE列との間で、相互にデータ転送が出来るように接続している。このとき2ポートレジスタ4の出力はPE(0,0)〜PE(0,n)のローカルレジスタ書き込みバスB1に、PE(0,0)〜PE(0,n)のローカルレジスタ読み出しバスB2は2ポートレジスタ4の入力へと転送できるよう接続している。
【0050】
PEIF5は、2ポートレジスタ4とSIMD型マイクロプロセッサ1の外部に設けられたメモリ等とのデータ転送の制御を行う。
【0051】
次に上述した構成のSIMD型マイクロプロセッサ1の動作について説明する。SIMD型マイクロプロセッサ1は、GP部2が全てのPEを同時に制御し各PEがそれぞれデータに対して一斉に演算処理する点は従来と相違ないが、PEアレイ部3と2ポートレジスタ4とのデータの転送経路がグローバル配線ではなく、PE内部のローカル配線(ローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスB2、ALU入力バスB3、ALU出力バスB4)のバスを互いにPE間接続バスB6、B7で接続し、ローカル配線のバスを利用する点が従来と異なる。
【0052】
まず、2ポートレジスタ4からPEアレイ部3の各ローカルレジスタ31へのデータ転送について説明する。PEアレイ部3内の各PE列における転送順に関しては特に規定はないが、2ポートレジスタ4から離れたPE列のデータから転送していくのが望ましい。例えばPE(*,0)の行に関して言えば、PE(m,0)から順にPE(0,0)までを読み出す事になる(*は0〜mまでの数字)。
【0053】
最初のサイクルにおいて、2ポートレジスタ4からPE(m,0)へ転送するためのデータが読み出され、PE(0,0)のローカルレジスタ書き込みバスB1へ入力される。このデータはフォワーディング経路B5を利用してローカルレジスタ読み出しバスB2へと転送され、ALU入力用FF34に取り込まれる。
【0054】
次のサイクルにおいて、PE(m,0)へのデータはALU入力バスB3へと転送されるが、PE(m,0) へのデータはPE(0,0)の演算用途には使用されず、そのままPE間接続バスB6へ出力され、隣接するPE(1,0)のローカルレジスタ書き込みバスB1へ入力される。それと同時に2ポートレジスタ4からは次のPE(m−1,0)への転送データが読み出され、PE(0,0)のローカルレジスタ書き込みバスB1へと入力される。この時点でPE(1,0)のローカルレジスタ書き込みバスB1にはPE(m,0)へのデータが、PE(0,0)のローカルレジスタ書き込みバスB1にはPE(m−1,0)へのデータが入力された事になる。これらのデータは最初のサイクルと同様に、フォワーディング経路B5を利用してローカルレジスタ読み出しバスB2へと転送され、ALU入力用FF34に取り込まれる。
【0055】
上述した動作を繰り返して順次データを転送していき、最終的にはPE(0,0)からPE(m,0)の各ローカルレジスタ書き込みバスB1はそれぞれの転送データが入力された状態になる。そして、これらを対象となるローカルレジスタ31に同時に書き込むことによってデータの転送が完了する。
【0056】
次にPEアレイ部3のローカルレジスタ31のデータを2ポートレジスタ4へとデータ転送する方法について説明する。各PEにおけるデータ読み出しは一斉に行われる。まず、最初のサイクルにおいて、PE(0,0)のデータは直接2ポートレジスタ4に転送され即座に転送が完了する。PE(1,0)からPE(m,0)のデータはそれぞれ2ポートレジスタ4側に隣接したPE(つまり、PE(0,0)から(m−1,0))のALU出力バスB4へとPE間接続バB7を介してス転送され、ALU出力用FF35に取り込まれる。
【0057】
次のサイクルにおいて、各PEのローカルレジスタ書き込みバスB1へと転送され、フォワーディング経路B5を通りローカルレジスタ読み出しバスB2へと転送される。PE(1,0)からのデータはこの時点でPE(0,0)のローカルレジスタ読み出しバスB2にあり、その後2ポートレジスタ4へと転送される。以下同様に順次データが転送され、PE(m,0)のデータが2ポートレジスタ4へ転送された時点で全てのPEのデータ転送が完了する。
【0058】
ここで従来回路である図6の回路構成との比較を行うと、従来回路である図6では、外部からローカルレジスタへのデータ転送はグローバル配線によって行われている。グローバル配線を用いて16ビットのデータを転送しようとするならば、1PEあたりと16本のバス配線が必要となる。さらに入出力を分離するならば、1PEあたり32本のバス配線が必要ということになる。それに対して本実施形態ではグローバル配線を設けず、隣接するPE間の接続のみを行うため、各PE上に新たな配線領域を設ける必要が無く、ローカル配線のみで実現できている。そのためレイアウトサイズを増加させる事がなく、より多くのPEを動作速度を落とすことなく搭載する事が可能となる。
【0059】
本実施例によれば、PE内のローカルレジスタ入力バスB1、ローカルレジスタ出力バスB2を、2ポートレジスタまたはPE間接続バスB6、B7を介して隣接するPE内のALU入力バスB3、隣接するPEのALU出力バスB4に接続し、PE内のALU入力バスB3、ALU出力バスB4を、PE間接続バスB6、B7を介して隣接するPE内のローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスB2に接続し、GP部2が、2ポートレジスタ4とPEアレイ部3とのデータ転送の際にこれらのバスを経由するように経路を切替えているので、グローバル配線を設けず、隣接するPE間の接続のみを行うため、各PE上に新たな配線領域を設ける必要が無く、全て既存のローカル配線のみで実現できる。そのためレイアウトサイズを増加させる事がなく、より多くのPEを動作速度を落とすことなく搭載する事が可能となる。
【0060】
また、ローカルレジスタ書き込みバスB1からローカルバス読み出しバスB2への転送にPE内のフォワーディング経路B5を用いているので、当該ローカルレジスタ31へ設定するデータ以外は、ローカルレジスタ3を更新する必要がなくなる。また、ローカルレジスタ31を介さないのでALU入力用レジスタ34への取り込みが1サイクル短縮できる。
【0061】
なお、2ポートレジスタ4は、本実施形態ではPE(0,0)〜PE(0,n)側に配置しているが、PE(m,0)〜PE(m,n)側であっても同様である。
【0062】
[第2実施形態]
次に、本発明の第2の実施形態を図2を参照して説明する。なお、前述した第1の実施形態と同一部分には、同一符号を付して説明を省略する。図2は、本発明の第2の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【0063】
本実施形態では、隣接するPE列同士を対称に配置している。つまり、2ポートレジスタ4の出力データはPE(0,0)のALU出力バスB4へ、2ポートレジスタ4の入力データはPE(0,0)のALU入力バスB3へ接続されている。PE(0,0)とPE(1,0)との接続は、PE(0,0)のローカルレジスタ書き込みバスB1からPE(1,0)のローカルレジスタ書き込みバスB1へ、PE(1,0)のローカルレジスタ読み出しバスB2からPE(0,0)のローカルレジスタ読み出しバスB2へとデータ転送できるようにPE間接続バスB6´、B7´で接続している。
【0064】
次に本実施形態の動作について説明する。2ポートレジスタ4からPEアレイ部3の各ローカルレジスタ31へのデータ転送は、第1の実施形態と同様PE(m,0)から順にPE(0,0)までを読み出す。
【0065】
最初のサイクルで、2ポートレジスタ4からPE(m,0)へ転送するためのデータが読み出され、PE(0,0)のALU出力バスB4へ入力され、ALU出力用FFに35取り込まれる。
【0066】
次のサイクルで、PE(0,0)のローカルレジスタ書き込みバスB1へと転送され、それと同時にPE(0,0)のALU出力バスB4には次のPE(m−1,0)へ転送するためのデータが入力される。PE(0,0)のローカルレジスタ書き込みバスB1へと転送されたデータは、そのままPE(1,0)のフォワーディング経路B5を介してローカルレジスタ読み出しバスB2へと転送された後ALU入力用FF34に取り込まれる。
【0067】
次のサイクルで、PE(1,0)のALU入力バスB3へ転送された後、PE(0,0)と同様の向きに配置された不図示のPE(2,0)のALU出力バスB4へと入力される。この一連の転送を繰り返すことによって全てのデータが転送対象となるPEへと転送され、最終的に各PEのローカルレジスタ31へと書き込むことによってデータの転送が完了する。
【0068】
次に、PEアレイ部3のローカルレジスタ31から2ポートレジスタ4へとデータ転送する場合であるが、こちらの場合は第1の実施形態と異なり、奇数列は偶数列に対して1サイクル後に読み出すのが望ましい。例えばPE(0,0)のデータを読み出し、PE(0,0)のALU入力用FF34に取り込んだ後、次のサイクルにおいて、PE(1,0)のデータを読み出すようにする。その後PE(0,0)のデータはPE(0,0)のALU入力バスB3に転送され、PE(1,0)のデータはPE(0,0)のローカルレジスタ出力バスB2に転送される。このように、PE(0,0)のALU入力バスB3に転送されたデータから順次2ポートレジスタ4に転送する事によって、PEアレイ部3のデータを2ポートレジスタ4へと転送する作業が完了する。
【0069】
本実施形態では、PE(0,0)とPE(1,0)のデータがバス上で競合しないように、GP部2からの制御信号はPE列ごとにタイミングを切り替えている。またはパイプラインレジスタを設け内部でレイテンシを持たせてもよい。
【0070】
本実施形態によれば、2ポートレジスタ4からPE(1,0)への書き込みに対しては、一度PE(0,0)のローカルレジスタ読み出しバスB2を通すことなくPE(1,0)のローカルレジスタ書き込みバスB1へと転送することができるため、不要な電流を削除することができる。同様にPE(1,0)から2ポートレジスタ4へのデータ転送に関しては、一度PE(0,0)のローカルレジスタ書き込みバスB1を通すことなくPE(0,0)のローカルレジスタ読み出しバスB2へと転送することができるため、同様に不要な電流を削除することができる。
【0071】
また、本実施形態の隣接するローカルレジスタ31間の転送においては、PE(0,0)、PE(1,0)のデータを相互に転送する目的で、点線で示したPE間接続バスB8、B9のようにそれぞれのローカルレジスタ読み出しバスB2からローカルレジスタ書き込みバスB1へと、データの転送経路を設けてもよい。
【0072】
[第3実施形態]
次に、本発明の第3の実施形態を図3を参照して説明する。なお、前述した第1、第2の実施形態と同一部分には、同一符号を付して説明を省略する。図3は、本発明の第3の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【0073】
本実施形態では、複数の外部素子がPEアレイ部3と接続される場合の構成例を示している。2ポートレジスタ4とはPEアレイ部3を挟んだ反対側に、データ入出力手段としての大容量のメモリ回路(RAM6)を配置してある。本実施形態では2ポートレジスタ4とRAM6を例に挙げているが、PEアレイ部3とのデータ転送を行う外部素子であればどのようなものでもよい。RAM6は、外部転送バスB22、B23と接続され、外部転送バスB22は、PE(1,0)のALU出力バスB4と接続され、RAM6からのデータが入力される。外部転送バスB23は、PE(1,0)のALU入力バスB3と接続され、RAM6へデータを出力する。
【0074】
また、本実施形態では、第2の実施形態に対して、PEアレイ部3内の隣接するPE間を双方向行えるPE間接続バスB10、B11で接続するように構成している。このようにすることにより、どちらの方向からのデータ転送にも対応することができる。
【0075】
本実施形態によれば、PEアレイ部3内の隣接するPE間を双方向行えるPE間接続バスB10、B11で接続するように構成しているのでPEアレイ部3に複数の外部素子が接続されても容易に対応することができる。
【0076】
[第4実施形態]
次に、本発明の第4の実施形態を図4を参照して説明する。なお、前述した第1乃至第3の実施形態と同一部分には、同一符号を付して説明を省略する。図4は、本発明の第4の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【0077】
本実施形態では、複数のPE列のデータをまとめて同時転送する場合の構成を示している。これは2列のPEアレイ部3と、外部素子である2ポートレジスタ4あるいはRAM6と、の間で2列分のデータがまとめて転送される場合の構成方法を示したものである。
【0078】
2ポートレジスタ4、RAM6はいずれも2列分のデータ転送が行えるように、32ビット幅のデータアクセスが行えるように構成されている。また、2ポートレジスタ4、RAM6に接続された外部転送バスB20、B21、B22、B23はいずれも入出力が行えるように双方向バスとしてある。
【0079】
また、PE内部のローカル配線(ローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスB2、ALU入力バスB3、ALU出力バスB4、フォワーディング経路B5)は32ビット幅で構成されている。そして、これらPE内のバス(ローカルレジスタ書き込みバスB1、ローカルレジスタ読み出しバスB2、ALU入力バスB3、ALU出力バスB4)はいずれも双方向に転送可能なバスとしている。またALU入力用FF34、ALU出力用FF35はそれに合わせて双方向の転送が可能なFF(ALU入力用FF34´、ALU出力用FF35´)へ置き換えている。この双方向のFFは入出力のデータをマルチプレクスして構成している。
【0080】
隣接するPE間の接続は、例えばPE(0,0)のローカルレジスタ読み出しバスB2がPE(1,0)のローカルレジスタ読み出しバスB2とローカルレジスタ書き込みバスB1の両方に、同じくPE(0,0)のローカルレジスタ書き込みバスB1がPE(1,0)のローカルレジスタ読み出しバスB2とローカルレジスタ書き込みバスB1の両方に、いずれの方向にも転送できるようにPE間接続バスB10とPE間接続バスB11とをPE間接続バスB12で接続している。つまりPE間の接続は一方のPEから他方のPEの、いずれのバスにも転送できるよう、双方向のバスで相互接続している。
【0081】
次に本実施形態の動作について説明する。2ポートレジスタ4からPEアレイ部3の各ローカルレジスタ31へのデータ転送は、最初のサイクルで、PE(0,0)とPE(1,0)へのデータが2ポートレジスタ2から同時に読み出される。ここでPE(0,0)へ転送されるべきデータはPE(0,0)のALU出力バスB4へ、PE(1,0)へ転送されるべきデータはPE(0,0)のALU入力バスB3へと入力される。PE(0,0)へ転送されるべきデータはALU入力用FF34´へ、PE(1,0)へ転送されるべきデータはALU入力用FF35´へ、それぞれ取り込まれるが、ALU入力用FF34´では通常演算時のデータ転送方向とは逆向きの転送となるため、FFの入出力方向を切り替える。
【0082】
次のサイクルにおいて、PE(0,0)へ転送されるべきデータはPE(0,0)のローカルレジスタ書き込みバスB1へ、PE(1,0)へ転送されるべきデータはPE(0,0)のローカルレジスタ読み出しバスB2へフォワーディング経路B5を介して転送され、さらにPE(0,0)のレジスタ読み出しバスB2からPE間接続バスB10、B12、B11を介してPE(1,0) のレジスタ書き込みバスB1へと転送される。その後各PEのローカルレジスタ31でデータの書き込みが行われデータ転送が完了する。RAM6からのデータ転送においても転送方向を逆に見るだけで同様である。
【0083】
PEアレイ部3の各ローカルレジスタ31から2ポートレジスタ4への転送は、第1の実施形態の場合と同様に最初に各PEのデータを同時に読み出す。PE(0,0)のデータはPE(0,0)のローカルレジスタ読み出しバスB2に出力される。またPE(1,0)のデータはPE(1,0)のローカルレジスタ読み出しバスB2に出力された後、PE間接続バスB10、B12、B11を介してPE(0,0)のローカルレジスタ書き込みバスB1へと転送される。PE(0,0)のデータはALU入力用FF34´へ、PE(1,0)のデータはALU入力用FF35´へ、それぞれ取り込まれ、次のサイクルでPE(0,0)のデータはPE(0,0)のALU入力バスB3へ、PE(1,0)のデータはPE(0,0)のALU出力バスB4へと転送される。そして、ALU入力バスB3およびALU出力バスB4に転送されたデータは同時に2ポートレジスタ4へと転送され、2ポートレジスタ4に書き込まれる。RAM6への転送においても転送方向を逆に見るだけで同様である。
【0084】
本実施形態ではPEアレイ部3が2列の場合を例に挙げているが、それ以上の内部バスが各PE内に存在する場合は、さらに同時転送するデータ数を増やすことができる。
【0085】
また、本実施形態ではALU入力用FF34´やALU出力用FF35´の入出力方向を切り替える事で転送バスの双方向化を実現させているが、通常の演算処理とは逆方向のデータ転送においては、対象となる回路(例えばALU入力用FF34´やALU出力用FF35´など)にバイパス回路を設けるという方法で実現してもよい。この方法は逆方向のデータ転送だけでなく、転送速度の短縮化のために不要な回路をバイパスするという目的で順方向に対して用いても良い。
【0086】
本実施形態によれば、複数のPE列のデータを同時に転送しているので、動作速度が上がり処理能力を向上できる。また、グローバル配線を使用せず実現させているため、レイアウトサイズを増加させる事なく実現することができる。
【0087】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【0088】
【図1】本発明の第1の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【図2】本発明の第2の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【図3】本発明の第3の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【図4】本発明の第4の実施形態にかかるSIMD型マイクロプロセッサのブロック図である。
【図5】従来の1次元配置のSIMD型マイクロプロセッサのブロック図である。
【図6】従来の2次元配置のSIMD型マイクロプロセッサのブロック図である。
【符号の説明】
【0089】
1 SIMD型マイクロプロセッサ
2 GP部(制御手段、切替手段)
3 PEアレイ部
4 2ポートレジスタ(データ入出力手段)
6 RAM(データ入出力手段)
31 ローカルレジスタ
32 ALU(L)(演算器)
33 ALU(H)(演算器)
B1 ローカルレジスタ書き込みバス(内部データ転送バス、演算器からローカルレジスタ方向に転送するバス)
B2 ローカルレジスタ読み出しバス(内部データ転送バス、ローカルレジスタから演算器方向に転送するバス)
B3 ALU入力バス(内部データ転送バス、ローカルレジスタから演算器方向に転送するバス)
B4 ALU出力バス(内部データ転送バス、演算器からローカルレジスタ方向に転送するバス)
B6 PE間接続バス(接続バス)
B7 PE間接続バス(接続バス)
B8 PE間接続バス(接続バス)
B9 PE間接続バス(接続バス)
B10 PE間接続バス(接続バス)
B11 PE間接続バス(接続バス)
B12 PE間接続バス(接続バス)
B20 外部転送バス
B21 外部転送バス
B22 外部転送バス
B23 外部転送バス

【特許請求の範囲】
【請求項1】
複数のプロセッサエレメントが2次元のアレイ状に配置されたPEアレイ部と、前記複数のプロセッサエレメントに対して同時に並列処理を行うように制御する制御手段と、前記PEアレイ部において処理されるデータを入出力する外部転送バスによって前記PEアレイ部と接続されたデータ入出力手段と、を設けたSIMD型マイクロプロセッサにおいて、
前記複数のプロセッサエレメントにおける内部データ転送バスと隣接する前記プロセッサエレメントの内部データ転送バスとを接続する接続バスが設けられ、そして、
前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記接続バスへデータを入力または出力するように切替える切替手段が設けられている
ことを特徴とするSIMD型マイクロプロセッサ。
【請求項2】
前記内部データ転送バスが、前記ローカルレジスタから前記演算器方向に転送するバスと、前記演算器から前記ローカルレジスタ方向に転送するバスと、の2種類設けられ、そして、
前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の方向に応じて、前記2種類のバスに接続された前記接続バスのうちいずれかに切替える
ことを特徴とする請求項1に記載のSIMD型マイクロプロセッサ。
【請求項3】
前記プロセッサエレメントに、前記内部データ転送バス上に設けられた回路をバイパスする経路が設けられ、そして、
前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記バイパスする経路を経由するように切替える
ことを特徴とする請求項1または2に記載のSIMD型マイクロプロセッサ。
【請求項4】
前記切替手段により、隣接する複数列のプロセッサエレメントのデータが、各プロセッサエレメント内の異なる複数の前記内部データ転送バスにそれぞれ出力されて、同時に複数のデータが転送されるように前記内部データ転送バスおよび前記接続バスを切替えることを特徴とする請求項1乃至3のうちいずれか一項に記載のSIMD型マイクロプロセッサ。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate