(57)【要約】【課題】回路規模やレイアウト規模を増大させることなく、また、データ転送時の処理能力の低下を起こすことなく、より多くの画像データを高速に同時処理することができるＳＩＭＤ型マイクロプロセッサを提供する。【解決手段】ＰＥ内のローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスＢ２を、２ポートレジスタまたはＰＥ間接続バスＢ６、Ｂ７を介して隣接するＰＥ内のＡＬＵ入力バスＢ３、隣接するＰＥのＡＬＵ出力バスＢ４に接続し、ＰＥ内のＡＬＵ入力バスＢ３、ＡＬＵ出力バスＢ４を、ＰＥ間接続バスＢ６、Ｂ７を介して隣接するＰＥ内のローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスに接続し、ＧＰ部２が、２ポートレジスタ４とＰＥアレイ部３とのデータ転送の際にこれらのバスを経由するように経路を切替える。【選択図】図１
2010033324.tif 000002
【特許請求の範囲】
【請求項１】
複数のプロセッサエレメントが２次元のアレイ状に配置されたＰＥアレイ部と、前記複数のプロセッサエレメントに対して同時に並列処理を行うように制御する制御手段と、前記ＰＥアレイ部において処理されるデータを入出力する外部転送バスによって前記ＰＥアレイ部と接続されたデータ入出力手段と、を設けたＳＩＭＤ型マイクロプロセッサにおいて、
前記複数のプロセッサエレメントにおける内部データ転送バスと隣接する前記プロセッサエレメントの内部データ転送バスとを接続する接続バスが設けられ、そして、
前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記接続バスへデータを入力または出力するように切替える切替手段が設けられている
ことを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
前記内部データ転送バスが、前記ローカルレジスタから前記演算器方向に転送するバスと、前記演算器から前記ローカルレジスタ方向に転送するバスと、の２種類設けられ、そして、
前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の方向に応じて、前記２種類のバスに接続された前記接続バスのうちいずれかに切替える
ことを特徴とする請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項３】
前記プロセッサエレメントに、前記内部データ転送バス上に設けられた回路をバイパスする経路が設けられ、そして、
前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記バイパスする経路を経由するように切替える
ことを特徴とする請求項１または２に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項４】
前記切替手段により、隣接する複数列のプロセッサエレメントのデータが、各プロセッサエレメント内の異なる複数の前記内部データ転送バスにそれぞれ出力されて、同時に複数のデータが転送されるように前記内部データ転送バスおよび前記接続バスを切替えることを特徴とする請求項１乃至３のうちいずれか一項に記載のＳＩＭＤ型マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は１つの演算命令により複数のデータ等を並列処理するＳＩＭＤ（Single Instruction-stream, Multiple Data-stream）型マイクロプロセッサに関する。
【背景技術】
【０００２】
近年、デジタル複写機やファクシミリ装置などの画像処理では、画素数の増加、画像処理の多様化などにより画質の向上が図られている。こういった画像処理では複数のデータに対して同一の処理をすることが多く、１命令で複数のデータを同時処理するＳＩＭＤ（Single Instruction-stream Multiple Data-stream）型マイクロプロセッサが用いられることが多い。
【０００３】
ＳＩＭＤ型マイクロプロセッサは、プロセッサエレメント（以下ＰＥと称する）と呼ばれる単位で演算器とレジスタを備え、そのＰＥを複数個有している。またこれら複数個のＰＥはグローバルプロセッサによって制御されている。このグローバルプロセッサが各ＰＥを同時に制御することで、１つの命令で複数のデータに対して同時に同一の演算処理を実行することを可能にしている。画像処理においては、各ＰＥは通常１個の画素の画像処理を担当する。
【０００４】
例えばスキャナやカメラなどの外部入力装置から入力された画像データは、レジスタに転送され、さらに演算器により論理算術演算などの含まれた画像処理が行われ、再度レジスタに書き戻される。この画像処理を必要な回数繰り返した後、プリンタ、外部記憶装置などの外部出力装置に出力される。
【０００５】
近年、画像処理への性能要求は、処理速度の向上と画像の高品質化の二面に向けられている。
【０００６】
まず、ＳＩＭＤ型マイクロプロセッサでの画像処理の処理速度の向上を求める場合、プロセッサの動作周波数を向上させるということと、画像処理の画素数を増加させることという２通りのアプローチがある。前者の動作周波数を向上させるということは、常時要求されている課題であり、大きな性能向上を実現するのは容易でない。後者の１回の画像処理で処理できる画素数を増加させるということは、一般的にはＰＥの個数を増加させるということとなる。しかし、ＰＥの個数を増加させることは、回路の大規模化、動作周波数の低下などの不都合を伴う。
【０００７】
一方、画像の高品質化ということは、画素が多色や多階調になることであり、画素データのサイズが大きくなることに繋がる。たとえば、画素データサイズが２５６階調の８ビットから、６５５３６階調１６ビットになることなどである。このように画素データのサイズが増加すると、結局各ＰＥの演算データサイズを増加させなければならず、回路の大規模化、動作周波数の低下などの不都合を招く事につながる。
【０００８】
画素データのサイズに関しては、特許文献１に記載されているように、各ＰＥでは１ビットごとのデータ処理を行い、複数のデータ処理を行うことで多ビットのデータと同等の処理を行う方法も提案されている。この場合回路の大規模化を防ぎ、処理速度を向上させることが出来るが、８ビットや１６ビットのデータサイズと同じ処理を行うには、複数の命令を実行しなければならず、結局は処理能力を犠牲にしてしまうことになる。
【０００９】
このようにＳＩＭＤ型マイクロプロセッサへの要求は、動作周波数の向上、ＰＥ数の増加、ＰＥでの演算データサイズ拡大、と多岐に渡っている。
【００１０】
ＳＩＭＤ型マイクロプロセッサの画像処理に関しては、複数のＰＥ（以下ＰＥアレイと称する）を１次元に配置して、１次元の番号割付を行い、画像データを１ラインごとに処理する方式と、ＰＥアレイを２次元に配置して、２次元の番号割付を行い、画像データを２次元データのまま処理する方式がある。図５には１次元ＳＩＭＤプロセッサの構成例を、図６には２次元ＳＩＭＤプロセッサの構成例を示している。図５では画像データの並びに合わせて１次元方向に配置したＰＥアレイ１００に対して、グローバルプロセッサ（Global Processor）１０１が一斉に同時処理を行わせている。図６ではＰＥアレイ１００を２次元、つまりｎ行ｍ列に配置して処理している。
【００１１】
また、処理するデータは１次元のＳＩＭＤ型マイクロプロセッサであったとしても、処理速度の低下を防ぐ目的で２次元にＰＥアレイ１００を配置する方法も考えられる。これはＰＥアレイ１００の領域が１方向に大きくなりすぎて、並列処理を制御するグローバルプロセッサ１０１からの信号が、配線遅延成分などによって遅れて、処理速度が低下するのを防止するためである。
【００１２】
例えば、特許文献２には、１次元ＳＩＭＤ型マイクロプロセッサでありながら、ＰＥアレイを折り返した２次元配置としていることが記載されている。これにより、従来の１次元配置のＳＩＭＤ型マイクロプロセッサと比べて、処理速度の向上とＰＥ数の増加といった課題を同時に実現させることが可能となる。
【特許文献１】特開２００７−２０６８４９号公報
【特許文献２】特許第３９７１７１９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１３】
上述したように画像プロセッサの処理速度を低下させずにより多くの画素に対応させるには、１次元方向にあまり多くのＰＥを並べず、２次元にＰＥを配置にすることが望ましいと考えられる。しかしこの場合、外部とのデータ転送が問題となってくる。外部から入力されたデータを如何にＰＥに転送すれば良いかという問題が生じる。図５に示した１次元配置のＰＥアレイ１００では、外部素子（２Ｐ−ＲＥＧ１０２）とのデータ転送は容易であったが、図６に示した２次元配置のＰＥアレイ１００では、外部素子からのデータ転送経路を新たに設けなければならないという問題が生じる。
【００１４】
図５や図６に示した２Ｐ−ＲＥＧ１０２は、二方向のデータ転送が可能な２ポートレジスタであり、通常外部入力されたデータを各ＰＥに転送する場合にはよく用いられる。一方向は外部との通信用として順次データが入出力され、一方向は各ＰＥとのデータ転送用として各ＰＥへデータを一括転送している。
【００１５】
１次元配置のＳＩＭＤ型マイクロプロセッサでは、２Ｐ−ＲＥＧ１０２とＰＥアレイ１００とを並べて配置することができるので、相互のデータ転送は容易であった。しかしＰＥアレイ１００を２次元配置とすると、２Ｐ−ＲＥＧ１０２の配置にも工夫が必要となる。例えば、図６に示した構成以外に、２Ｐ−ＲＥＧ１０２を各ＰＥの列に合わせて配置する構成も考えられるが、この場合は、外部メモリから２Ｐ−ＲＥＧ１０２へのアクセス時に、対象となる２Ｐ−ＲＥＧ１０２の列を切り替えなければならず、自由度がなく制御が困難という問題が生じる。またＰＥアレイ１００自体も大きくなるため、ＰＥ間のデータ転送時の妨げとなる問題も生じる。
【００１６】
このような問題からＰＥアレイ１００を２次元配置とする場合、図６に示したように２Ｐ−ＲＥＧ１０２をＰＥアレイ１００とは別に１箇所にまとめて配置し、２Ｐ−ＲＥＧ１０２とＰＥアレイ１００との間のデータ転送はグローバル配線によって行うのが一般的である。
【００１７】
グローバル配線による接続はＰＥアレイ１００を構成する上では容易である。しかし本来１次元配置のＳＩＭＤ型マイクロプロセッサでは不要であったものであり、２次元配置とすることでこのグローバル配線領域を設けなければならず、それに伴いチップレイアウト時のＰＥアレイ１００の領域のサイズが増加してしまう。何故ならば、より多くのＰＥをより高速に動作させるために、各ＰＥの領域はできるだけ小さく構成されているものであり、新たに配線数を増加させるという事は、それに合わせたレイアウト領域が必要になると言う事である。これは処理能力の向上という点からは反してしまう。
【００１８】
より多くの画素を処理するには、より多くのＰＥを搭載しなければならないが、配線数を増やし各ＰＥのチップレイアウト時の領域のサイズを増加させる事は、処理能力を下げてしまう事に繋がる。
【００１９】
このようにＳＩＭＤ型マイクロプロセッサの処理能力を向上させるには、ＰＥ数を増大させつつ高速処理を実現させるため、２次元配置のＰＥアレイを構成することが望ましいが、ＰＥアレイと外部素子とのデータ転送にグローバル配線が必要となるため、レイアウト規模を大きくしてしまうという問題があった。
【００２０】
本発明はかかる問題を解決することを目的としている。
【００２１】
すなわち、本発明は、回路規模やレイアウト規模を増大させることなく、また、データ転送時の処理能力の低下を起こすことなく、より多くの画像データを高速に同時処理することができるＳＩＭＤ型マイクロプロセッサを提供することを目的としている。
【課題を解決するための手段】
【００２２】
請求項１に記載された発明は、複数のプロセッサエレメントが２次元のアレイ状に配置されたＰＥアレイ部と、前記複数のプロセッサエレメントに対して同時に並列処理を行うように制御する制御手段と、前記ＰＥアレイ部において処理されるデータを入出力する外部転送バスによって前記ＰＥアレイ部と接続されたデータ入出力手段と、を設けたＳＩＭＤ型マイクロプロセッサにおいて、前記複数のプロセッサエレメントにおける内部データ転送バスと隣接する前記プロセッサエレメントの内部データ転送バスとを接続する接続バスが設けられ、そして、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記接続バスへデータを入力または出力するように切替える切替手段が設けられていることを特徴とするＳＩＭＤ型マイクロプロセッサである。
【００２３】
請求項２に記載された発明は、請求項１に記載された発明において、前記内部データ転送バスが、前記ローカルレジスタから前記演算器方向に転送するバスと、前記演算器から前記ローカルレジスタ方向に転送するバスと、の２種類設けられ、そして、前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の方向に応じて、前記２種類のバスに接続された前記接続バスのうちいずれかに切替えることを特徴とするものである。
【００２４】
請求項３に記載された発明は、請求項２に記載された発明において、前記プロセッサエレメントに、前記内部データ転送バス上に設けられた回路をバイパスする経路が設けられ、そして、前記切替手段が、前記データ入出力手段と前記プロセッサエレメントとのデータ転送の際に前記バイパスする経路を経由するように切替えることを特徴とするものである。
【００２５】
請求項４に記載された発明は、請求項１乃至３のうちいずれか一項に記載された発明において、前記切替手段により、隣接する複数列のプロセッサエレメントのデータが、各プロセッサエレメント内の異なる複数の前記内部データ転送バスにそれぞれ出力されて、同時に複数のデータが転送されるように前記内部データ転送バスおよび前記接続バスを切替えることを特徴とするものである。
【発明の効果】
【００２６】
請求項１に記載の発明によれば、プロセッサエレメントの内部データ転送バスを、隣接するプロセッサエレメントの内部データ転送バスと接続する接続バスを設け、切替手段が、データ入出力手段とプロセッサエレメントとのデータ転送の際に接続バスにデータを入力または出力するように切替えているので、グローバル配線を設けず、隣接するＰＥ間の接続のみを行うため、各ＰＥ上に新たな配線領域を設ける必要が無く、全て既存のローカル配線のみで実現できる。そのためレイアウトサイズを増加させる事がなく、より多くのＰＥを動作速度を落とすことなく搭載する事が可能となる。
【００２７】
請求項２に記載の発明によれば、切替手段が、データ入出力手段と前記プロセッサエレメントとのデータ転送の方向に応じて、ローカルレジスタから演算器方向に転送するバスと、演算器からローカルレジスタ方向に転送するバスの２種類のバスのうちいずれかに切替えているので、データ転送の方向に応じてＰＥ内部のバスの制御を切替えるのみでデータ転送を行うことができる。
【００２８】
請求項３に記載の発明によれば、内部データ転送バス上に設けられた回路をバイパスする経路を設けて、制御手段が、記憶手段と前記プロセッサエレメントとのデータ転送の際に前記バイパスする経路を経由するように切替えているので、データ転送に不要な回路をバイパスすることができ、転送速度を短縮することができる。
【００２９】
請求項４に記載の発明によれば、制御手段により、隣接する複数列のプロセッサエレメントのデータを、各プロセッサエレメント内の複数の内部バスにそれぞれ出力させて、同時に複数のデータを転送するように内部データ転送バスおよび接続バスをを切替えているので、一度に転送するデータ量を増大させることができ、処理能力を向上させることができる。
【発明を実施するための最良の形態】
【００３０】
［第１実施形態］
以下、本発明の第１の実施形態を、図１を参照して説明する。図１は、本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【００３１】
図１に示したＳＩＭＤ型マイクロプロセッサ１は、グローバルプロセッサ（Global Processor：以下ＧＰと称する）部２と、ＰＥアレイ部３と、２ポートレジスタ（２Ｐ−ＲＥＧ）４と、ＰＥＩＦ５と、を備えている。
【００３２】
制御手段、切替手段としてのＧＰ部２は、プログラム格納用のプログラムＲＡＭと、演算データ格納用のデータＲＡＭと、プログラムのアドレスを保持するプログラムカウンタと、演算処理のデータ格納のための汎用レジスタと、ＧＰ用のＡＬＵと、レジスタ退避及び復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタと、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタと、割り込み時とＮＭＩ（マスク不可割り込み）時の分岐元アドレスを保持するレジスタと、ＧＰ部２の状態を保持しているプロセッサステータスレジスタと、命令を解読し各種制御信号を生成するシーケンスユニットと、を備えている。これらを用いて、ＧＰ命令の実行が行われる。
【００３３】
また、ＧＰ部２は、シーケンスユニットで生成された制御信号を、ＰＥアレイ部３に供給することによりＰＥアレイ部３に対して演算などを行わせるＰＥ命令を実行する。また、ＧＰ部２は、ＰＥアレイ部３と２ポートレジスタ４とのデータ転送の際に、ＰＥ間接続バスＢ６、Ｂ７へデータが入力または出力されるように切り替えることやローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスＢ２、ＡＬＵ入力バスＢ３、ＡＬＵ出力バスＢ４のデータ転送の方向に合わせた切り替えなどの制御も行う。
【００３４】
ＰＥアレイ部３は、複数のＰＥを備えている。本実施形態の場合、図１に示したように、ｍ×ｎの２次元に配置したＰＥが配置されており、縦方向にｎ個、横方向にｍ個のＰＥを並べている。また、ＰＥはそれぞれにＰＥ番号を持っており、図１のＰＥ（０，０）〜ＰＥ（ｍ，ｎ）が相当する。そして、後述する２ポートレジスタと外部転送バスＢ２０、Ｂ２１とによって接続されている。
【００３５】
ＰＥは、図１に示したように、ローカルレジスタ３１と、ＡＬＵ（Ｌ）３２と、ＡＬＵ（Ｈ）３３と、ＡＬＵ入力用ＦＦ３４、ＡＬＵ出力用ＦＦ３５と、ローカルレジスタ書き込みバスＢ１と、ローカルレジスタ読み出しバスＢ２と、ＡＬＵ入力バスＢ３と、ＡＬＵ出力バスＢ４と、フォワーディング経路Ｂ５と、を備えている。
【００３６】
ローカルレジスタ３１は、１６ビットのレジスタであり、当該ＰＥにおいて演算されるデータや演算されたデータが格納される。
【００３７】
演算器としてのＡＬＵ（Ｌ）３２は、算術論理演算回路であり、ＡＬＵ入力バスＢ３から入力されたデータに対してＧＰ部２からの制御信号に基づいた所定の演算を行いＡＬＵ出力バスＢ４に出力する。
【００３８】
演算器としてのＡＬＵ（Ｈ）３３は、算術論理演算回路であり、ＡＬＵ入力バスＢ３から入力されたデータに対してＧＰ部２からの制御信号に基づいた所定の演算を行いＡＬＵ出力バスＢ４に出力する。
【００３９】
ＡＬＵ（Ｌ）３２とＡＬＵ（Ｈ）３３は３２ビットのＡＬＵとして動作することも可能である。この場合倍精度の演算ができるＡＬＵとなる。
【００４０】
ＡＬＵ入力用ＦＦ３４は、フリップフロップ（ＦＦ）で構成され、ローカルレジスタ出力バスＢ２の一端が接続されてローカルレジスタ読み出しバスＢ２が入力となり、ＡＬＵ入力バスＢ３の一端が接続されてＡＬＵ入力バスＢ３に出力する。
【００４１】
ＡＬＵ出力用ＦＦ３５は、フリップフロップ（ＦＦ）で構成され、ＡＬＵ出力バスＢ４の一端が接続されてＡＬＵ出力バスＢ４が入力となり、ローカルレジスタ書き込みバスＢ１の一端が接続されてローカルレジスタ書き込みバスＢ１に出力する。
【００４２】
内部データ転送バス、演算器からローカルレジスタ方向に転送するバスとしてのローカルレジスタ書き込みバスＢ１は、一端がＡＬＵ出力用ＦＦ３５に、他端が外部転送バスＢ２０に接続された１６ビット幅のバスであり、ローカルレジスタ３１にも接続される。また、ローカルレジスタ書き込みバスＢ１は、２ポートレジスタ４から出力されたデータまたはＡＬＵ出力用ＦＦ３５から出力されたデータが、ローカルレジスタ３１またはフォワーディング経路Ｂ５に入力される。
【００４３】
内部データ転送バス、ローカルレジスタから演算器方向に転送するバスとしてのローカルレジスタ入力バスＢ２は、一端がＡＬＵ入力用ＦＦ３４に、他端が外部転送バスＢ２１に接続された１６ビット幅のバスであり、ローカルレジスタ３１にも接続される。また、ローカルレジスタ入力バスＢ２は、ローカルレジスタ３１から出力されたデータが、ＡＬＵ入力用ＦＦ３４に入力されるとともに、２ポートレジスタ４にも入力される。
【００４４】
内部データ転送バス、ローカルレジスタから演算器方向に転送するバスとしてのＡＬＵ入力バスＢ３は、一端がＡＬＵ入力用ＦＦ３４に、他端が後述するＰＥ間接続バスＢ６に接続された１６ビット幅のバスであり、ＡＬＵ（Ｌ）３２及びＡＬＵ（Ｈ）３３にも接続される。また、ＡＬＵ入力バスＢ３は、ＡＬＵ入力用ＦＦ３４から出力されたデータが、ＰＥ間接続バスＢ６に入力されるとともに、ＡＬＵ（Ｌ）３２及びＡＬＵ（Ｈ）３３にも入力される。
【００４５】
内部データ転送バス、演算器からローカルレジスタ方向に転送するバスとしてのＡＬＵ出力バスＢ４は、一端がＡＬＵ出力用ＦＦ３５に、他端が後述するＰＥ間接続バスＢ７に接続された１６ビット幅のバスであり、ＡＬＵ（Ｌ）３２及びＡＬＵ（Ｈ）３３にも接続される。また、ＡＬＵ出力バスＢ３は、ＡＬＵ（Ｌ）３２及びＡＬＵ（Ｈ）３３またはＰＥ間接続バスＢ７から出力されたデータが、ＡＬＵ出力用ＦＦ３５に入力される。
【００４６】
フォワーディング経路Ｂ５は、ローカルレジスタ３１をバイパスしてローカルレジスタ書き込みバスＢ１とローカルレジスタ読み出しバスＢ２とを接続する信号線である。
【００４７】
なお、上述した構成はＰＥ（０，０）の構成を説明したが他のＰＥも同様である。但し、ＰＥ間の接続は図１に示したようにＰＥ（０，０）〜ＰＥ（０，ｎ）の列のみ２ポートレジスタ４と接続されるが、他の列は隣接するＰＥとＰＥ間接続バスＢ６及びＢ７で接続される。すなわち、ＰＥ（０，０）〜ＰＥ（０，ｎ）のＰＥ列とＰＥ（１，０）〜ＰＥ（１，ｎ）のＰＥ列、またはＰＥ（１，０）〜ＰＥ（１，ｎ）のＰＥ列とＰＥ（２，０）〜ＰＥ（２，ｎ）のＰＥ列といったように隣接するＰＥ列同士を接続する。例えば、ＰＥ（０，０）のＡＬＵ入力バスＢ３はＰＥ間接続バスＢ６を介してＰＥ（１，０）のローカルレジスタ書き込みバスＢ１へ、ＰＥ（１，０）のローカルレジスタ読み出しバスＢ２はＰＥ間接続バスＢ７を介してＰＥ（０，０）のＡＬＵ出力バスＢ４へとデータが転送できるように接続している。以下同様にＰＥ（ｍ，０）〜ＰＥ（ｍ，ｎ）のＰＥ列まで接続される。
【００４８】
データ入出力手段としての２ポートレジスタ４は、二方向のデータ転送が可能な２ポートを備えたレジスタであり、外部入力された各ＰＥに転送するデータを格納している。二方向のうち、一方向はＰＥＩＦ５に対してＳＩＭＤ型マイクロプロセッサ１外部との通信用として順次データが入出力されるポートであり、残りの一方向は各ＰＥとのデータ転送用として各ＰＥへデータを一括転送するポートであり、外部転送バスＢ２０でＰＥへのデータを入力し、外部転送バスＢ２１でＰＥからデータが出力されてくる。
【００４９】
２ポートレジスタ４はＰＥアレイ部３の外側に配置される。ＰＥアレイ部３との接続は、この２ポートレジスタ４と隣接したＰＥ（０，０）〜ＰＥ（０，ｎ）のＰＥ列との間で、相互にデータ転送が出来るように接続している。このとき２ポートレジスタ４の出力はＰＥ（０，０）〜ＰＥ（０，ｎ）のローカルレジスタ書き込みバスＢ１に、ＰＥ（０，０）〜ＰＥ（０，ｎ）のローカルレジスタ読み出しバスＢ２は２ポートレジスタ４の入力へと転送できるよう接続している。
【００５０】
ＰＥＩＦ５は、２ポートレジスタ４とＳＩＭＤ型マイクロプロセッサ１の外部に設けられたメモリ等とのデータ転送の制御を行う。
【００５１】
次に上述した構成のＳＩＭＤ型マイクロプロセッサ１の動作について説明する。ＳＩＭＤ型マイクロプロセッサ１は、ＧＰ部２が全てのＰＥを同時に制御し各ＰＥがそれぞれデータに対して一斉に演算処理する点は従来と相違ないが、ＰＥアレイ部３と２ポートレジスタ４とのデータの転送経路がグローバル配線ではなく、ＰＥ内部のローカル配線（ローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスＢ２、ＡＬＵ入力バスＢ３、ＡＬＵ出力バスＢ４）のバスを互いにＰＥ間接続バスＢ６、Ｂ７で接続し、ローカル配線のバスを利用する点が従来と異なる。
【００５２】
まず、２ポートレジスタ４からＰＥアレイ部３の各ローカルレジスタ３１へのデータ転送について説明する。ＰＥアレイ部３内の各ＰＥ列における転送順に関しては特に規定はないが、２ポートレジスタ４から離れたＰＥ列のデータから転送していくのが望ましい。例えばＰＥ（＊，０）の行に関して言えば、ＰＥ（ｍ，０）から順にＰＥ（０，０）までを読み出す事になる（＊は０〜ｍまでの数字）。
【００５３】
最初のサイクルにおいて、２ポートレジスタ４からＰＥ（ｍ，０）へ転送するためのデータが読み出され、ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１へ入力される。このデータはフォワーディング経路Ｂ５を利用してローカルレジスタ読み出しバスＢ２へと転送され、ＡＬＵ入力用ＦＦ３４に取り込まれる。
【００５４】
次のサイクルにおいて、ＰＥ（ｍ，０）へのデータはＡＬＵ入力バスＢ３へと転送されるが、ＰＥ（ｍ，０） へのデータはＰＥ（０，０）の演算用途には使用されず、そのままＰＥ間接続バスＢ６へ出力され、隣接するＰＥ（１，０）のローカルレジスタ書き込みバスＢ１へ入力される。それと同時に２ポートレジスタ４からは次のＰＥ（ｍ−１，０）への転送データが読み出され、ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１へと入力される。この時点でＰＥ（１，０）のローカルレジスタ書き込みバスＢ１にはＰＥ（ｍ，０）へのデータが、ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１にはＰＥ（ｍ−１，０）へのデータが入力された事になる。これらのデータは最初のサイクルと同様に、フォワーディング経路Ｂ５を利用してローカルレジスタ読み出しバスＢ２へと転送され、ＡＬＵ入力用ＦＦ３４に取り込まれる。
【００５５】
上述した動作を繰り返して順次データを転送していき、最終的にはＰＥ（０，０）からＰＥ（ｍ，０）の各ローカルレジスタ書き込みバスＢ１はそれぞれの転送データが入力された状態になる。そして、これらを対象となるローカルレジスタ３１に同時に書き込むことによってデータの転送が完了する。
【００５６】
次にＰＥアレイ部３のローカルレジスタ３１のデータを２ポートレジスタ４へとデータ転送する方法について説明する。各ＰＥにおけるデータ読み出しは一斉に行われる。まず、最初のサイクルにおいて、ＰＥ（０，０）のデータは直接２ポートレジスタ４に転送され即座に転送が完了する。ＰＥ（１，０）からＰＥ（ｍ，０）のデータはそれぞれ２ポートレジスタ４側に隣接したＰＥ（つまり、ＰＥ（０，０）から（ｍ−１，０））のＡＬＵ出力バスＢ４へとＰＥ間接続バＢ７を介してス転送され、ＡＬＵ出力用ＦＦ３５に取り込まれる。
【００５７】
次のサイクルにおいて、各ＰＥのローカルレジスタ書き込みバスＢ１へと転送され、フォワーディング経路Ｂ５を通りローカルレジスタ読み出しバスＢ２へと転送される。ＰＥ（１，０）からのデータはこの時点でＰＥ（０，０）のローカルレジスタ読み出しバスＢ２にあり、その後２ポートレジスタ４へと転送される。以下同様に順次データが転送され、ＰＥ（ｍ，０）のデータが２ポートレジスタ４へ転送された時点で全てのＰＥのデータ転送が完了する。
【００５８】
ここで従来回路である図６の回路構成との比較を行うと、従来回路である図６では、外部からローカルレジスタへのデータ転送はグローバル配線によって行われている。グローバル配線を用いて１６ビットのデータを転送しようとするならば、１ＰＥあたりと１６本のバス配線が必要となる。さらに入出力を分離するならば、１ＰＥあたり３２本のバス配線が必要ということになる。それに対して本実施形態ではグローバル配線を設けず、隣接するＰＥ間の接続のみを行うため、各ＰＥ上に新たな配線領域を設ける必要が無く、ローカル配線のみで実現できている。そのためレイアウトサイズを増加させる事がなく、より多くのＰＥを動作速度を落とすことなく搭載する事が可能となる。
【００５９】
本実施例によれば、ＰＥ内のローカルレジスタ入力バスＢ１、ローカルレジスタ出力バスＢ２を、２ポートレジスタまたはＰＥ間接続バスＢ６、Ｂ７を介して隣接するＰＥ内のＡＬＵ入力バスＢ３、隣接するＰＥのＡＬＵ出力バスＢ４に接続し、ＰＥ内のＡＬＵ入力バスＢ３、ＡＬＵ出力バスＢ４を、ＰＥ間接続バスＢ６、Ｂ７を介して隣接するＰＥ内のローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスＢ２に接続し、ＧＰ部２が、２ポートレジスタ４とＰＥアレイ部３とのデータ転送の際にこれらのバスを経由するように経路を切替えているので、グローバル配線を設けず、隣接するＰＥ間の接続のみを行うため、各ＰＥ上に新たな配線領域を設ける必要が無く、全て既存のローカル配線のみで実現できる。そのためレイアウトサイズを増加させる事がなく、より多くのＰＥを動作速度を落とすことなく搭載する事が可能となる。
【００６０】
また、ローカルレジスタ書き込みバスＢ１からローカルバス読み出しバスＢ２への転送にＰＥ内のフォワーディング経路Ｂ５を用いているので、当該ローカルレジスタ３１へ設定するデータ以外は、ローカルレジスタ３を更新する必要がなくなる。また、ローカルレジスタ３１を介さないのでＡＬＵ入力用レジスタ３４への取り込みが１サイクル短縮できる。
【００６１】
なお、２ポートレジスタ４は、本実施形態ではＰＥ（０，０）〜ＰＥ（０，ｎ）側に配置しているが、ＰＥ（ｍ，０）〜ＰＥ（ｍ，ｎ）側であっても同様である。
【００６２】
［第２実施形態］
次に、本発明の第２の実施形態を図２を参照して説明する。なお、前述した第１の実施形態と同一部分には、同一符号を付して説明を省略する。図２は、本発明の第２の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【００６３】
本実施形態では、隣接するＰＥ列同士を対称に配置している。つまり、２ポートレジスタ４の出力データはＰＥ（０，０）のＡＬＵ出力バスＢ４へ、２ポートレジスタ４の入力データはＰＥ（０，０）のＡＬＵ入力バスＢ３へ接続されている。ＰＥ（０，０）とＰＥ（１，０）との接続は、ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１からＰＥ（１，０）のローカルレジスタ書き込みバスＢ１へ、ＰＥ（１，０）のローカルレジスタ読み出しバスＢ２からＰＥ（０，０）のローカルレジスタ読み出しバスＢ２へとデータ転送できるようにＰＥ間接続バスＢ６´、Ｂ７´で接続している。
【００６４】
次に本実施形態の動作について説明する。２ポートレジスタ４からＰＥアレイ部３の各ローカルレジスタ３１へのデータ転送は、第１の実施形態と同様ＰＥ（ｍ，０）から順にＰＥ（０，０）までを読み出す。
【００６５】
最初のサイクルで、２ポートレジスタ４からＰＥ（ｍ，０）へ転送するためのデータが読み出され、ＰＥ（０，０）のＡＬＵ出力バスＢ４へ入力され、ＡＬＵ出力用ＦＦに３５取り込まれる。
【００６６】
次のサイクルで、ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１へと転送され、それと同時にＰＥ（０，０）のＡＬＵ出力バスＢ４には次のＰＥ（ｍ−１，０）へ転送するためのデータが入力される。ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１へと転送されたデータは、そのままＰＥ（１，０）のフォワーディング経路Ｂ５を介してローカルレジスタ読み出しバスＢ２へと転送された後ＡＬＵ入力用ＦＦ３４に取り込まれる。
【００６７】
次のサイクルで、ＰＥ（１，０）のＡＬＵ入力バスＢ３へ転送された後、ＰＥ（０，０）と同様の向きに配置された不図示のＰＥ（２，０）のＡＬＵ出力バスＢ４へと入力される。この一連の転送を繰り返すことによって全てのデータが転送対象となるＰＥへと転送され、最終的に各ＰＥのローカルレジスタ３１へと書き込むことによってデータの転送が完了する。
【００６８】
次に、ＰＥアレイ部３のローカルレジスタ３１から２ポートレジスタ４へとデータ転送する場合であるが、こちらの場合は第１の実施形態と異なり、奇数列は偶数列に対して１サイクル後に読み出すのが望ましい。例えばＰＥ（０，０）のデータを読み出し、ＰＥ（０，０）のＡＬＵ入力用ＦＦ３４に取り込んだ後、次のサイクルにおいて、ＰＥ（１，０）のデータを読み出すようにする。その後ＰＥ（０，０）のデータはＰＥ（０，０）のＡＬＵ入力バスＢ３に転送され、ＰＥ（１，０）のデータはＰＥ（０，０）のローカルレジスタ出力バスＢ２に転送される。このように、ＰＥ（０，０）のＡＬＵ入力バスＢ３に転送されたデータから順次２ポートレジスタ４に転送する事によって、ＰＥアレイ部３のデータを２ポートレジスタ４へと転送する作業が完了する。
【００６９】
本実施形態では、ＰＥ（０，０）とＰＥ（１，０）のデータがバス上で競合しないように、ＧＰ部２からの制御信号はＰＥ列ごとにタイミングを切り替えている。またはパイプラインレジスタを設け内部でレイテンシを持たせてもよい。
【００７０】
本実施形態によれば、２ポートレジスタ４からＰＥ（１，０）への書き込みに対しては、一度ＰＥ（０，０）のローカルレジスタ読み出しバスＢ２を通すことなくＰＥ（１，０）のローカルレジスタ書き込みバスＢ１へと転送することができるため、不要な電流を削除することができる。同様にＰＥ（１，０）から２ポートレジスタ４へのデータ転送に関しては、一度ＰＥ（０，０）のローカルレジスタ書き込みバスＢ１を通すことなくＰＥ（０，０）のローカルレジスタ読み出しバスＢ２へと転送することができるため、同様に不要な電流を削除することができる。
【００７１】
また、本実施形態の隣接するローカルレジスタ３１間の転送においては、ＰＥ（０，０）、ＰＥ（１，０）のデータを相互に転送する目的で、点線で示したＰＥ間接続バスＢ８、Ｂ９のようにそれぞれのローカルレジスタ読み出しバスＢ２からローカルレジスタ書き込みバスＢ１へと、データの転送経路を設けてもよい。
【００７２】
［第３実施形態］
次に、本発明の第３の実施形態を図３を参照して説明する。なお、前述した第１、第２の実施形態と同一部分には、同一符号を付して説明を省略する。図３は、本発明の第３の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【００７３】
本実施形態では、複数の外部素子がＰＥアレイ部３と接続される場合の構成例を示している。２ポートレジスタ４とはＰＥアレイ部３を挟んだ反対側に、データ入出力手段としての大容量のメモリ回路（ＲＡＭ６）を配置してある。本実施形態では２ポートレジスタ４とＲＡＭ６を例に挙げているが、ＰＥアレイ部３とのデータ転送を行う外部素子であればどのようなものでもよい。ＲＡＭ６は、外部転送バスＢ２２、Ｂ２３と接続され、外部転送バスＢ２２は、ＰＥ（１，０）のＡＬＵ出力バスＢ４と接続され、ＲＡＭ６からのデータが入力される。外部転送バスＢ２３は、ＰＥ（１，０）のＡＬＵ入力バスＢ３と接続され、ＲＡＭ６へデータを出力する。
【００７４】
また、本実施形態では、第２の実施形態に対して、ＰＥアレイ部３内の隣接するＰＥ間を双方向行えるＰＥ間接続バスＢ１０、Ｂ１１で接続するように構成している。このようにすることにより、どちらの方向からのデータ転送にも対応することができる。
【００７５】
本実施形態によれば、ＰＥアレイ部３内の隣接するＰＥ間を双方向行えるＰＥ間接続バスＢ１０、Ｂ１１で接続するように構成しているのでＰＥアレイ部３に複数の外部素子が接続されても容易に対応することができる。
【００７６】
［第４実施形態］
次に、本発明の第４の実施形態を図４を参照して説明する。なお、前述した第１乃至第３の実施形態と同一部分には、同一符号を付して説明を省略する。図４は、本発明の第４の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【００７７】
本実施形態では、複数のＰＥ列のデータをまとめて同時転送する場合の構成を示している。これは２列のＰＥアレイ部３と、外部素子である２ポートレジスタ４あるいはＲＡＭ６と、の間で２列分のデータがまとめて転送される場合の構成方法を示したものである。
【００７８】
２ポートレジスタ４、ＲＡＭ６はいずれも２列分のデータ転送が行えるように、３２ビット幅のデータアクセスが行えるように構成されている。また、２ポートレジスタ４、ＲＡＭ６に接続された外部転送バスＢ２０、Ｂ２１、Ｂ２２、Ｂ２３はいずれも入出力が行えるように双方向バスとしてある。
【００７９】
また、ＰＥ内部のローカル配線（ローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスＢ２、ＡＬＵ入力バスＢ３、ＡＬＵ出力バスＢ４、フォワーディング経路Ｂ５）は３２ビット幅で構成されている。そして、これらＰＥ内のバス（ローカルレジスタ書き込みバスＢ１、ローカルレジスタ読み出しバスＢ２、ＡＬＵ入力バスＢ３、ＡＬＵ出力バスＢ４）はいずれも双方向に転送可能なバスとしている。またＡＬＵ入力用ＦＦ３４、ＡＬＵ出力用ＦＦ３５はそれに合わせて双方向の転送が可能なＦＦ（ＡＬＵ入力用ＦＦ３４´、ＡＬＵ出力用ＦＦ３５´）へ置き換えている。この双方向のＦＦは入出力のデータをマルチプレクスして構成している。
【００８０】
隣接するＰＥ間の接続は、例えばＰＥ（０，０）のローカルレジスタ読み出しバスＢ２がＰＥ（１，０）のローカルレジスタ読み出しバスＢ２とローカルレジスタ書き込みバスＢ１の両方に、同じくＰＥ（０，０）のローカルレジスタ書き込みバスＢ１がＰＥ（１，０）のローカルレジスタ読み出しバスＢ２とローカルレジスタ書き込みバスＢ１の両方に、いずれの方向にも転送できるようにＰＥ間接続バスＢ１０とＰＥ間接続バスＢ１１とをＰＥ間接続バスＢ１２で接続している。つまりＰＥ間の接続は一方のＰＥから他方のＰＥの、いずれのバスにも転送できるよう、双方向のバスで相互接続している。
【００８１】
次に本実施形態の動作について説明する。２ポートレジスタ４からＰＥアレイ部３の各ローカルレジスタ３１へのデータ転送は、最初のサイクルで、ＰＥ（０，０）とＰＥ（１，０）へのデータが２ポートレジスタ２から同時に読み出される。ここでＰＥ（０，０）へ転送されるべきデータはＰＥ（０，０）のＡＬＵ出力バスＢ４へ、ＰＥ（１，０）へ転送されるべきデータはＰＥ（０，０）のＡＬＵ入力バスＢ３へと入力される。ＰＥ（０，０）へ転送されるべきデータはＡＬＵ入力用ＦＦ３４´へ、ＰＥ（１，０）へ転送されるべきデータはＡＬＵ入力用ＦＦ３５´へ、それぞれ取り込まれるが、ＡＬＵ入力用ＦＦ３４´では通常演算時のデータ転送方向とは逆向きの転送となるため、ＦＦの入出力方向を切り替える。
【００８２】
次のサイクルにおいて、ＰＥ（０，０）へ転送されるべきデータはＰＥ（０，０）のローカルレジスタ書き込みバスＢ１へ、ＰＥ（１，０）へ転送されるべきデータはＰＥ（０，０）のローカルレジスタ読み出しバスＢ２へフォワーディング経路Ｂ５を介して転送され、さらにＰＥ（０，０）のレジスタ読み出しバスＢ２からＰＥ間接続バスＢ１０、Ｂ１２、Ｂ１１を介してＰＥ（１，０） のレジスタ書き込みバスＢ１へと転送される。その後各ＰＥのローカルレジスタ３１でデータの書き込みが行われデータ転送が完了する。ＲＡＭ６からのデータ転送においても転送方向を逆に見るだけで同様である。
【００８３】
ＰＥアレイ部３の各ローカルレジスタ３１から２ポートレジスタ４への転送は、第１の実施形態の場合と同様に最初に各ＰＥのデータを同時に読み出す。ＰＥ（０，０）のデータはＰＥ（０，０）のローカルレジスタ読み出しバスＢ２に出力される。またＰＥ（１，０）のデータはＰＥ（１，０）のローカルレジスタ読み出しバスＢ２に出力された後、ＰＥ間接続バスＢ１０、Ｂ１２、Ｂ１１を介してＰＥ（０，０）のローカルレジスタ書き込みバスＢ１へと転送される。ＰＥ（０，０）のデータはＡＬＵ入力用ＦＦ３４´へ、ＰＥ（１，０）のデータはＡＬＵ入力用ＦＦ３５´へ、それぞれ取り込まれ、次のサイクルでＰＥ（０，０）のデータはＰＥ（０，０）のＡＬＵ入力バスＢ３へ、ＰＥ（１，０）のデータはＰＥ（０，０）のＡＬＵ出力バスＢ４へと転送される。そして、ＡＬＵ入力バスＢ３およびＡＬＵ出力バスＢ４に転送されたデータは同時に２ポートレジスタ４へと転送され、２ポートレジスタ４に書き込まれる。ＲＡＭ６への転送においても転送方向を逆に見るだけで同様である。
【００８４】
本実施形態ではＰＥアレイ部３が２列の場合を例に挙げているが、それ以上の内部バスが各ＰＥ内に存在する場合は、さらに同時転送するデータ数を増やすことができる。
【００８５】
また、本実施形態ではＡＬＵ入力用ＦＦ３４´やＡＬＵ出力用ＦＦ３５´の入出力方向を切り替える事で転送バスの双方向化を実現させているが、通常の演算処理とは逆方向のデータ転送においては、対象となる回路（例えばＡＬＵ入力用ＦＦ３４´やＡＬＵ出力用ＦＦ３５´など）にバイパス回路を設けるという方法で実現してもよい。この方法は逆方向のデータ転送だけでなく、転送速度の短縮化のために不要な回路をバイパスするという目的で順方向に対して用いても良い。
【００８６】
本実施形態によれば、複数のＰＥ列のデータを同時に転送しているので、動作速度が上がり処理能力を向上できる。また、グローバル配線を使用せず実現させているため、レイアウトサイズを増加させる事なく実現することができる。
【００８７】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【００８８】
【図１】本発明の第１の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図２】本発明の第２の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図３】本発明の第３の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図４】本発明の第４の実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図５】従来の１次元配置のＳＩＭＤ型マイクロプロセッサのブロック図である。
【図６】従来の２次元配置のＳＩＭＤ型マイクロプロセッサのブロック図である。
【符号の説明】
【００８９】
１          ＳＩＭＤ型マイクロプロセッサ
２          ＧＰ部（制御手段、切替手段）
３          ＰＥアレイ部
４          ２ポートレジスタ（データ入出力手段）
６          ＲＡＭ（データ入出力手段）
３１        ローカルレジスタ
３２        ＡＬＵ（Ｌ）（演算器）
３３        ＡＬＵ（Ｈ）（演算器）
Ｂ１        ローカルレジスタ書き込みバス（内部データ転送バス、演算器からローカルレジスタ方向に転送するバス）
Ｂ２        ローカルレジスタ読み出しバス（内部データ転送バス、ローカルレジスタから演算器方向に転送するバス）
Ｂ３        ＡＬＵ入力バス（内部データ転送バス、ローカルレジスタから演算器方向に転送するバス）
Ｂ４        ＡＬＵ出力バス（内部データ転送バス、演算器からローカルレジスタ方向に転送するバス）
Ｂ６        ＰＥ間接続バス（接続バス）
Ｂ７        ＰＥ間接続バス（接続バス）
Ｂ８        ＰＥ間接続バス（接続バス）
Ｂ９        ＰＥ間接続バス（接続バス）
Ｂ１０      ＰＥ間接続バス（接続バス）
Ｂ１１      ＰＥ間接続バス（接続バス）
Ｂ１２      ＰＥ間接続バス（接続バス）
Ｂ２０      外部転送バス
Ｂ２１      外部転送バス
Ｂ２２      外部転送バス
Ｂ２３      外部転送バス
【図１】
2010033324.tif 000003
【図２】
2010033324.tif 000004
【図３】
2010033324.tif 000005
【図４】
2010033324.tif 000006
【図５】
2010033324.tif 000007
【図６】
2010033324.tif 000008