(57)【要約】【課題】  処理速度の向上と画像品質の向上に対応できるＳＩＭＤ型マイクロプロセッサを提供する。【解決手段】  本発明は、ｍ個（ｍは２以上の自然数）のＰＥを備えるＳＩＭＤ型マイクロプロセッサに関する。本発明のＳＩＭＤ型マイクロプロセッサでは、各ＰＥは、ｎ個（ｎは２以上の自然数）の演算回路を含みこれら演算回路によって一度に最大ｎ個のデータ処理を行う演算部を備えることを特徴とする。【選択図】図１
2010118075.tif 000002
【特許請求の範囲】
【請求項１】
ｍ個（ｍは２以上の自然数）のプロセッサエレメントを備え、
各プロセッサエレメントは、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備えるＳＩＭＤ型マイクロプロセッサにおいて、
各プロセッサエレメントの演算部は、ｎ個（ｎは２以上の自然数）の演算回路を含み、
演算のため同一の若しくは複数のライン分の連続データを配置する際に、
ｍ個のプロセッサエレメントには並びの順序が決められており、各プロセッサエレメントのｎ個の演算回路には、全プロセッサエレメントで同一の配置の順序が定められており、
連続データをｋ１個（ｋ１は２以上ｎ以下の自然数）処理する場合、ｋ２（ｋ２は２以上ｋ１以下の自然数）番目の連続データは、各プロセッサエレメントにおけるｋ２番目の演算回路に入力されプロセッサエレメントの並びの順序に従って配置されることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Ｓｉｎｇｌｅ  Ｉｎｓｔｒｕｃｔｉｏｎ−ｓｔｒｅａｍ  Ｍｕｌｔｉｐｌｅ  Ｄａｔａ−ｓｔｒｅａｍ）型マイクロプロセッサ、及び当該ＳＩＭＤ型マイクロプロセッサを利用して行うデータ処理方法に関する。
【背景技術】
【０００２】
デジタル複写機などで扱われる画像データは、通常、２次元に配置されたデータの集合体である。例えば、図１３（１）に示す人物の画像は、水平方向にＸ個（Ｘは自然数）、垂直方向にＹ個（Ｙは自然数）のデータの配置により形成されているものとすることができる。図１３（２）に示す図は、図１３（１）の破線にて囲まれた領域を拡大したものである。図１３（２）に示す画像は、格子状に並ぶデータで構成される。このように画像を構成する個々のデータは、画素と呼ばれている。
【０００３】
個々の画素には値が割り当てられ、その値により画素の内容が決まる。ここで例えば、画素の値が“１”のとき黒を、“０”のとき白を表すとすると、図１３（２）の画像は、図１３（３）のように表される。この例では、画像が黒と白の２色であるから画素も２値で表現できたが、画素に多数の値を割り当てられるようにして中間色を表せるようにすることも可能である。例えば、画素データを４ビットデータにして画素が００００ｂから１１１１ｂまでの１６通りのデータを持てるようにすれば、黒と白の間に１４段階の中間色を画素に設定することができる。画素データを８ビットデータにすれば画素は２５６色の表現ができる。
【０００４】
画素データのサイズは、画像の目的や内容によって変化する。例えば、写真など豊かな表現を必要とする画像の画素は多ビットのデータとなり、データサイズを小さくしたい通信関係の画像の画素は少ビットのデータとなる。
【０００５】
ところで、画像処理を実行するマイクロプロセッサはＳＩＭＤ型を採用することが多い。なぜなら、１つの命令で複数のデータに対して同時に同一の演算処理が実行可能であるＳＩＭＤ型マイクロプロセッサの特徴が画像処理に適しているからである。ＳＩＭＤ型マイクロプロセッサは、プロセッサエレメント（以下、ＰＥと称する。）と呼ばれる単位で演算器とレジスタを備え、そのＰＥを複数個有する。これら複数個のＰＥが同時に演算処理を行うことで、１つの命令で複数のデータに対して同時に同一の演算処理を実行する。画像処理において各ＰＥは、通常１個の画素の画像処理を担当するように設計されている。
【０００６】
ここで例えば、ＳＩＭＤ型マイクロプロセッサがｍ個のＰＥで構成され、対象画像データの水平方向のデータ数が（５×ｍ）個であるとすると、図１４に示すように、水平方向の画素の１列分がｍ個単位に分割されてＳＩＭＤ型マイクロプロセッサに順に送り込まれ、ｍ個単位で画像処理が行われる。図１４の例では（５×ｍ）の画素は５つに分割されるため、この１列に対してＳＩＭＤ型マイクロプロセッサは処理を５回繰り返す。
【０００７】
次に、従来技術のＳＩＭＤ型マイクロプロセッサの構成例を示す。図１６は、従来技術のＳＩＭＤ型マイクロプロセッサ２の概略の構成図である。ＳＩＭＤ型マイクロプロセッサ２は、概略、グローバルプロセッサ３０、プロセッサエレメントグループ７２、及び外部インターフェース７０から構成される。プロセッサエレメントグループ７２は複数のＰＥの配列体（集合体）であり、後で説明するように各ＰＥの演算器が演算アレイ６２に属しており、各ＰＥのレジスタがレジスタファイル６０に属している。
【０００８】
従来技術のＳＩＭＤ型マイクロプロセッサのより詳しい構成例を図１５に示す。図１５では、プロセッサエレメントグループ７２の中央付近にある６個のＰＥ４を中心に示している。図１５において、符号４が付される部分が一つのＰＥ（プロセッサエレメント）を示している。個々のＰＥ４に着目して説明を行う。図の各ＰＥ４には３２個のレジスタ（６、８）が備わるが、図ではそのうち６個が図の上部に示されている。ＰＥのレジスタ群をレジスタファイルと称している。レジスタに読み書きするためのデータバス１０は、マルチプレクサ（７ｔｏ１ＭＵＸ）１２、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６を経てＰＥ４の（図中の）下部と接続する。ＰＥ４の下部には演算器である１６ビットＡＬＵ１８や演算結果を格納するＡレジスタ２０、Ｆレジスタ２２が備わる。
【０００９】
マルチプレクサ（７ｔｏ１ＭＵＸ）１２は、あるＰＥのＡＬＵ１８と隣接するＰＥのレジスタ（６、８）とのデータ接続を行う。図１５の構成例では、一つの１６ビットＡＬＵ１８は左右夫々３つまでの隣接ＰＥ４のレジスタ（６、８）と接続可能である。シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６は、レジスタ（６、８）とＡＬＵ１８との間に配置され、データのビットシフトを行う。各ＰＥ４のレジスタ（６、８）のうち、外部インターフェース７０に接続するレジスタ６（図１５では３個）が、外部インターフェース７０からバスにより読み取りや書き込みがなされる。
【００１０】
図１５の右部には、グローバルプロセッサ３０が示されている。グローバルプロセッサ３０は、プログラムを読み込み実行する独立のプロセッサであると同時に、各々のＰＥ４に対し動作の指示を出すコントローラである。グローバルプロセッサ３０には、Ｇ０、Ｇ１、Ｇ２、Ｇ３、ＳＰ、ＰＣ、ＬＳ、ＬＩ、ＬＮ、Ｐの各種レジスタ、プログラムを格納するＰｒｏｇｒａｍ−ＲＡＭ、及びデータを一時格納するＤａｔａ−ＲＡＭが装備されている。
【００１１】
近年、画像処理への性能要求は、主として処理速度の向上と画像の高品質化の二面に向けられている。まず、ＳＩＭＤ型マイクロプロセッサでの画像処理の処理速度の向上を求める場合、プロセッサの動作周波数を向上させるということと、１回の画像処理で処理できる画素数を増加させるということとの２通りのアプローチがある。前者の動作周波数を向上させるということは、常時要求されている課題であり、新たな要求に沿う性能向上を実現するのは容易でない。後者の１回の画像処理で処理できる画素数を増加させるということは、一般的にはＰＥの個数を増加させるということとなる。しかし、ＰＥの個数を増加させることは、回路の大規模化、動作周波数の低下などの不都合を伴う。
【００１２】
一方、画像の高品質化ということは、画素が多色や多階調になることであり、画素データのサイズが大きくなることに繋がる。例えば、画素データサイズが２５６階調の８ビットから、６５５３６階調の１６ビットになることである。このように画素データサイズが増加すると、結局各ＰＥの演算器を拡大しなければならない。
【００１３】
このようにＳＩＭＤ型マイクロプロセッサへの要求は、ＰＥ個数の増大と、ＰＥでの演算データサイズの拡大との２方向に向けられている。
【００１４】
なお、特許文献１に記載の発明は、浮動小数点内積演算器をＳＩＭＤ型にすることに関するものである。
【発明の概要】
【発明が解決しようとする課題】
【００１５】
本発明は、処理速度の向上と画像品質の向上に対応できる画像処理用のＳＩＭＤ型マイクロプロセッサを提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明は、上記の目的を達成するためになされたものである。本発明に係るＳＩＭＤ型マイクロプロセッサは、
ｍ個（ｍは２以上の自然数）のプロセッサエレメントを備え、
各プロセッサエレメントは、データを一時記憶する複数のレジスタと、演算部と、レジスタと演算部との間のデータ転送を行う経路を備えるＳＩＭＤ型マイクロプロセッサにおいて、
各プロセッサエレメントの演算部は、ｎ個（ｎは２以上の自然数）の演算回路を含み、
演算のため同一の若しくは複数のライン分の連続データを配置する際に、
ｍ個のプロセッサエレメントには並びの順序が決められており、各プロセッサエレメントのｎ個の演算回路には、全プロセッサエレメントで同一の配置の順序が定められており、
連続データをｋ１個（ｋ１は２以上ｎ以下の自然数）処理する場合、ｋ２（ｋ２は２以上ｋ１以下の自然数）番目の連続データは、各プロセッサエレメントにおけるｋ２番目の演算回路に入力されプロセッサエレメントの並びの順序に従って配置されることを特徴とする。
【発明の効果】
【００１７】
本発明を利用することにより、処理速度の向上と画像品質の向上の両方に対応できるＳＩＭＤ型マイクロプロセッサを得ることができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態に係るＳＩＭＤ型マイクロプロセッサの構成図である。
【図２】本発明の第２の実施形態に係るＳＩＭＤ型マイクロプロセッサの構成図である。
【図３】本発明の第３の実施形態に係るＳＩＭＤ型マイクロプロセッサの構成図である。
【図４】本発明の第４の実施形態に係るＳＩＭＤ型マイクロプロセッサの構成図である。
【図５】右部は画像データにおける画素の配置図であり、左部はＳＩＭＤ型マイクロプロセッサ上の画素の第１の配置パターンである。
【図６】右部は画像データにおける画素の配置図であり、左部はＳＩＭＤ型マイクロプロセッサ上の画素の第２の配置パターンである。
【図７】右部は画像データにおける画素の配置図であり、左部はＳＩＭＤ型マイクロプロセッサ上の画素の第３の配置パターンである。
【図８】右部は画像データにおける画素の配置図であり、左部はＳＩＭＤ型マイクロプロセッサ上の画素の第４の配置パターンである。
【図９】右部は画像データにおける画素の配置図であり、左部はＳＩＭＤ型マイクロプロセッサ上の画素の第５の配置パターンである。
【図１０】画像データの水平方向の画素数を４８０とし、ＳＩＭＤ型マイクロプロセッサで１回に処理できる画素数を９６とした場合に、両端に無効画素が発生しない処理であれば、５回の処理を繰り返すことで全体の処理が完了することを示す概念図である。
【図１１】画像データの水平方向の画素数を４８０とし、ＳＩＭＤ型マイクロプロセッサで１回に処理できる画素数を９６とした場合に、両端からそれぞれ１６画素が無効画素となるとすると、全体を処理するのに８回の繰り返しが必要とされることを示す概念図である。
【図１２】画像データの水平方向の画素数を４８０とし、ＳＩＭＤ型マイクロプロセッサで１回に処理できる画素数が１９２である場合に、両端からそれぞれ１６画素が無効画素となっても、３回の処理を繰り返すことで全体の処理が完了することを示す概念図である。
【図１３】人物の画像の例（図１３（１））、人物の画像の例の一部の拡大図（図１３（２））、及び画素データの例（図１３（３））である。
【図１４】画像データの構成例である。
【図１５】従来技術のＳＩＭＤ型マイクロプロセッサの詳しい構成例である。
【図１６】従来技術のＳＩＭＤ型マイクロプロセッサの構成例である。
【発明を実施するための形態】
【００１９】
以下、図面を参照して本発明に係る好適な実施の形態を説明する。
【００２０】
［第１の実施形態］
図１は、本発明の第１の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の構成図である。第１の実施形態に係るＳＩＭＤ型マイクロプロセッサも、従来技術のＳＩＭＤ型マイクロプロセッサ（図１６参照）と同様に、概略、グローバルプロセッサ３０、プロセッサエレメントグループ７２、及び外部インターフェース７０から構成される。
【００２１】
図１では、図１５と同様にプロセッサエレメントグループ（図１６参照）の中央付近にある６個のＰＥ４を中心に示している。図１の右部に示すグローバルプロセッサ３０には、プログラム格納用のプログラムＲＡＭ（Ｐｒｏｇｒａｍ−ＲＡＭ）５２と演算データ格納用のデータＲＡＭ（Ｄａｔａ−ＲＡＭ）５４が内蔵されている。さらに、プログラムのアドレスを保持するプログラムカウンタ（ＰＣ）４２、演算処理のデータ格納のための汎用レジスタであるＧ０〜Ｇ３レジスタ（３２、３４、３６、３８）、レジスタ退避・復帰時に退避先データＲＡＭのアドレスを保持しているスタックポインタ（ＳＰ）４０、サブルーチンコール時にコール元のアドレスを保持するリンクレジスタ（ＬＳ）４４、同じくＩＲＱ時とＮＭＩ時の分岐元アドレスを保持するＬＩレジスタ４６、ＬＮレジスタ４８、プロセッサの状態を保持しているプロセッサステータスレジスタ（Ｐ）５０が内蔵されている。これらのレジスタ、図示していない命令デコーダ、ＡＬＵ、メモリ制御回路、割り込み制御回路、外部Ｉ／Ｏ制御回路、及びＧＰ演算制御回路を使用してグローバルプロセッサ命令の実行が行われる。
【００２２】
ＰＥ命令実行時には、グローバルプロセッサ３０は、命令デコーダ、図示していないレジスタファイル制御回路、及びＰＥ演算制御回路を使用して、レジスタファイル６０の制御と演算アレイ６２の制御をおこなう。
【００２３】
レジスタファイル６０において、ＰＥ毎に１６ビット・レジスタ（６、８）が複数本内蔵されており、ＰＥの個数分の組でアレイ構成を形成している。それぞれのレジスタ（６、８）は、演算アレイ６２に対してポートを備えており、１６ビットのリード/ライト兼用のバス（以下、レジスタバスと言う。）１０で演算アレイ６２からアクセスされる。図では便宜上、各ＰＥ４で７本のレジスタ（６、８）を示している。
【００２４】
各ＰＥ４の演算部１４は、１６ビットＡＬＵ（１８、２４）、１６ビットＡレジスタ（２０、２６）、及びＦレジスタ（２２、２８）を、下位ビット用と上位ビット用として２個ずつ内蔵している。ＰＥ命令による演算では、基本的にレジスタファイル６０から読み出されたデータをＡＬＵ（１８、２４）の一方の入力とし、Ａレジスタ（２０、２６）にあるデータをＡＬＵ（１８、２４）のもう一方入力とする。演算結果はＡレジスタ（２０、２６）に格納される。つまり、Ａレジスタ（２０、２６）にあるデータと、レジスタ（６、８）上のデータとの演算が行われることになる。
【００２５】
２個のＡＬＵ（１８、２４）は、夫々１６ビットの演算が可能である。また上位用ＡＬＵ２４と下位用ＡＬＵ１８とは連動できるように構成されており、上位用ＡＬＵ２４と下位用ＡＬＵ１８とが併せられると３２ビットの演算が可能となる。それぞれのＡＬＵの動作はグローバルプロセッサ３０から制御される。また、上位ＡＬＵ２４と下位ＡＬＵ１８を連動させるために、両ＡＬＵ間には情報伝達経路が備わる。
【００２６】
レジスタ（６、８）と演算部１４との接続部分に１６ビット幅の７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）１２が設けられている。各マルチプレクサ（７ｔｏ１ＭＵＸ）１２は、ＰＥが並ぶ方向（図１における左右の方向）において、左に１つ、２つ及び３つ離れたＰＥ４のレジスタバスと、右に１つ、２つ及び３つ離れたＰＥ４のレジスタバスと、当該ＰＥ４のレジスタバスとに接続し、それらレジスタバスに付属するレジスタのデータを演算対象として選択する。選択の制御は、グローバルプロセッサ３０により行われる。
【００２７】
７ｔｏ１ＭＵＸ１２とＡＬＵ（１８、２４）の間には、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６が設けられている。シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６は、レジスタ（６、８）から読み出されたデータのビットシフトと拡張とを行う。シフタの制御は、グローバルプロセッサ３０により行われる。
【００２８】
レジスタファイル６０に含まれる上段３つのレジスタ６は、マイクロプロセッサ外の外部メモリデータ転送装置（図示せず。）から内容の読み出し／書き込みがなされ得るレジスタである。
【００２９】
次に、図１に示す本発明の第１の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の動作について説明する。
【００３０】
図１のＳＩＭＤ型マイクロプロセッサ２では、画像データが外部インターフェース７０を経て外部から転送されるが、以下では外部メモリデータ転送装置（図示せず。）により、各ＰＥ４のレジスタ６に画像データ（画素データ）が既に転送されてあるものとする。
【００３１】
まず、画素データサイズが１６ビットである場合を説明する。画素のデータサイズが１６ビットであることは、モノクロ画像用のデータとして、若しくはカラー画像用のうちの１色として、現状最高の品質レベルに対応するということができる。なお、カラー画像は通常、原色系３色（ＲＧＢ方式）若しくは補色系４色（ＣＭＹＫ方式）に係るデータ形態を利用しており、画像処理時には各色のデータに分けて処理される。
【００３２】
レジスタ（６、８）のサイズ、及びレジスタ（６、８）からＡＬＵ（１８、２４）への経路の幅は、１６ビットであるので、１６ビットデータは問題なく転送される。途中のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６でデータは３２ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。このデータを“データＸ”とする。
【００３３】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、上位・下位併せて３２ビットのデータをＡＬＵ（１８、２４）へ供給する。このデータを“データＹ”とする。ＡＬＵ（１８、２４）は、データＸとデータＹの入力を受けて演算処理する。このとき上位用ＡＬＵ２４と下位用ＡＬＵ１８は３２ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を２個使って倍のサイズの演算を行うには、それら２個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路を使用する。
【００３４】
上記のデータＸとデータＹの演算は、３２ビットのデータ同士の演算であり演算結果も３２ビットとなる。演算結果の上位１６ビットは上位用Ａレジスタ２６へ、下位１６ビットは下位用Ａレジスタ２０へ格納される。そして再びＡＬＵ（１８、２４）へのデータ供給元になる。
【００３５】
上記のように、画像処理の過程において処理されるデータサイズは３２ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、１６ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位１６ビットだけを採用するなどのデータ加工のことである。
【００３６】
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図１に示すＳＩＭＤ型マイクロプロセッサ２では、レジスタ（６、８）と演算部１４との接続部分に、７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）１２が設けられており、ＰＥが並ぶ方向（図１における左右の方向）において、左に１つ、２つ及び３つ隣のＰＥ４のレジスタと、右に１つ、２つ及び３つ隣のＰＥ４のレジスタを選択できるようになっている。ここで、画素の配置順序とＰＥの配置順序とを一致させておけば、隣接するＰＥに隣接する画素データが格納されていることになり、各ＰＥの演算部の演算に隣接画素データを反映することができる。
【００３７】
次に、画素データサイズが８ビットである場合を説明する。画素のデータサイズが８ビットであるということは、モノクロ画像用のデータとして、あるいはカラー画像用のうちの１色用のデータとして、現状の一般的要求レベルに対応するということができる。
【００３８】
画素データサイズが８ビットであるとき、図１に示すＳＩＭＤ型マイクロプロセッサ２では個々のＰＥ４は２個の画素を対象として画像処理を行う。まず、レジスタ（６、８）には、８ビットデータが２個格納される。即ち、レジスタ（６、８）のデータサイズ１６ビットのうち、上位８ビットと下位８ビットで別の画素データを格納する。レジスタ（６、８）から演算部１４へのレジスタバス１０のデータ幅は１６ビットであるので、８ビットデータ２個は問題なく演算部１４へ転送される。途中のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６で２個の８ビットデータは２つに分解され夫々１６ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。この上位１６ビットデータを“データＸＨ”、下位１６ビットデータを“データＸＬ”とする。
【００３９】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、下位１６ビット、上位１６ビットのデータをＡＬＵ１８、ＡＬＵ２４へ供給する。この上位データを“データＹＨ”、下位データを“データＹＬ”とする。下位ＡＬＵ１８はデータＸＬとデータＹＬの入力を受けて演算処理をする。上位ＡＬＵ２４はデータＸＨとデータＹＨの入力を受けて演算処理する。このとき上位ＡＬＵ２４と下位ＡＬＵ１８は、１６ビットの演算器として独立に動作する。このとき、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路は使用されない。
【００４０】
上記のデータＸＬとデータＹＬの演算、及びデータＸＨとデータＹＨの演算は、１６ビットのデータ同士の演算であり、演算結果も夫々１６ビットとなる。上位用ＡＬＵ２４の演算結果の１６ビットデータは上位用Ａレジスタ２６へ、下位用ＡＬＵ１８の演算結果の１６ビットデータは下位用Ａレジスタ２０へ、格納される。そして再びＡＬＵ（１８、２４）へのデータ供給元になる。
【００４１】
上記のように、画像処理の過程において処理されるデータサイズは１６ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、８ビット２個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位８ビットだけを採用するなどのデータ加工を行い、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６で上位側の格納データ８ビットと下位側の格納データ８ビットとを合成して１個の１６ビットデータにすることである。
【００４２】
［第２〜第４の実施形態で利用する画素の配置パターン］
ＳＩＭＤ型マイクロプロセッサにおいて１個のＰＥで２個の画素を処理する場合、ＰＥ内の画素の配置のパターンは、幾つか想定される。以下ではＰＥ内の画素の配置パターンについての説明を行う。画素の配置パターンが異なれば、或るＰＥの演算部が隣接するＰＥのレジスタのデータを利用する場合に、そのことを実現するための構成に差異が生じてくる。それらの構成の差異が、後で説明する第２〜第４の実施形態の差異となっている。ＰＥ内の画素の配置パターンは、図５、図６、図７、図８及び図９に示される。
【００４３】
図５の右部は、画像データにおける画素の配置図を示し、左部は、ＳＩＭＤ型マイクロプロセッサ上の画素の第１の配置パターンを示す。ＳＩＭＤ型マイクロプロセッサは、ｍ個のＰＥを有し、１ＰＥにつき２個の画素を演算処理できるものとしている。図５左部では、各ＰＥにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。１ＰＥで２画素の処理がなされるため、このＳＩＭＤ型マイクロプロセッサは、一度に（２×ｍ）個の画素を扱える。図５右部の画像データ上に並ぶ画素データのうち、同一ライン上の連続する（２×ｍ）個の画素をＳＩＭＤ型マイクロプロセッサ上に転送し演算処理する。画像データ上に並ぶ画素に対して、左から右方向に順に１、２、３・・・と番号を付すと、１〜（２×ｍ）までの画素が一度に画像処理をなされる画素として、ＳＩＭＤ型マイクロプロセッサ上に転送される。
【００４４】
図５のＳＩＭＤ型マイクロプロセッサ上では、１番目のＰＥの下位側に画素１、１番目のＰＥの上位側に画素２、２番目のＰＥの下位側に画素３、２番目のＰＥの上位側に画素４、３番目のＰＥの下位側に画素５、３番目のＰＥの上位側に画素６、・・・、ｍ番目のＰＥの下位側に画素（２×ｍ−１）、ｍ番目のＰＥの上位側に画素（２×ｍ）という順序で、各画素データが配置される。後続の画像処理では、続きの画素である画素（２×ｍ＋１）から同様に転送される。
【００４５】
次に、図６の右部は、画像データにおける画素の配置図を示し、左部は、ＳＩＭＤ型マイクロプロセッサ上の画素の第２の配置パターンを示す。ＳＩＭＤ型マイクロプロセッサは、ｍ個のＰＥを有し、１ＰＥにつき２個の画素を演算処理できるものとしている。図６左部では、各ＰＥにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。１ＰＥで２画素の処理がなされるため、このＳＩＭＤ型マイクロプロセッサは、一度に（２×ｍ）個の画素を扱える。図６右部の画像データ上に並ぶ画素データのうち、同一ライン上の連続する（２×ｍ）個の画素をＳＩＭＤ型マイクロプロセッサ上に転送し演算処理する。画像データ上に並ぶ画素に対して、左から右方向に順に１、２、３・・・と番号を付すと、１〜（２×ｍ）までの画素が一度に画像処理をなされる画素として、ＳＩＭＤ型マイクロプロセッサ上に転送される。
【００４６】
図６のＳＩＭＤ型マイクロプロセッサ上では、１番目のＰＥの下位側に画素１、２番目のＰＥの下位側に画素２、３番目のＰＥの下位側に画素３、・・・、ｍ番目のＰＥの下位側に画素ｍ、１番目のＰＥの上位側に画素（ｍ＋１）、２番目のＰＥの上位側に画素（ｍ＋２）、３番目のＰＥの上位側に画素（ｍ＋３）、・・・・、最後のＰＥの上位側に画素（２×ｍ）という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素（２×ｍ＋１）から同様に転送される。
【００４７】
次に、図７の右部は、画像データにおける画素の配置図を示し、左部は、ＳＩＭＤ型マイクロプロセッサ上の画素の第３の配置パターンを示す。ＳＩＭＤ型マイクロプロセッサは、ｍ個のＰＥを有し、１ＰＥにつき２個の画素を演算処理できるものとしている。図７左部では、各ＰＥにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。１ＰＥで２画素の処理がなされるため、このＳＩＭＤ型マイクロプロセッサは、一度に（２×ｍ）個の画素を扱える。図７右部の画像データ上に並ぶ画素のうち、同一ライン上の（２×ｍ）個の画素をＳＩＭＤ型マイクロプロセッサ上に転送し演算処理する。但し、図７に示される第３の配置パターンは、画像データ上の２組の連続するｍ個の画素がＳＩＭＤ型マイクロプロセッサに転送されて形成される。つまり、予め画像データ上に並ぶ画素が画像群Ａ、画像群Ｂに分けられる（図７右部参照）。画像群Ａ上に並ぶ画素に対して、左から右方向に順に１、２、３、・・・と番号を付し、画像群Ｂ上に並ぶ画素に対して、画像群Ｂの頭から右方向に順に１、２、３・・・と番号を付すものとすると、画素群Ａ、画素群Ｂの夫々の１〜ｍまでの画素が、一度に画像処理をなされる画素として、ＳＩＭＤ型マイクロプロセッサ上に転送される。図７左部の画素群Ｂからの画素には、識別のための黒三角形を付している。
【００４８】
図７のＳＩＭＤ型マイクロプロセッサ上では、画素群Ａの画素が各ＰＥの下位側、画素群Ｂの画素が各ＰＥの上位側に配置される。夫々、１番目のＰＥに画素１、２番目のＰＥに画素２、３番目のＰＥに画素３、・・・、ｍ番目のＰＥに画素ｍ、という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素（ｍ＋１）からそれぞれ同様に転送される。
【００４９】
次に、図８の右部は、画像データにおける画素の配置図を示し、左部は、ＳＩＭＤ型マイクロプロセッサ上の画素の第４の配置パターンを示す。ＳＩＭＤ型マイクロプロセッサは、ｍ個のＰＥを有し、１ＰＥにつき２個の画素を演算処理できるものとしている。図８左部では、各ＰＥにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。１ＰＥで２画素の処理がなされるため、このＳＩＭＤ型マイクロプロセッサは、１回に（２×ｍ）個の画素を扱える。ここで、図８右部の画像データからは、画像データ上に並ぶ画素のうち、ｍ個の画素群が２組、合計（２×ｍ）個の画素データがＳＩＭＤ型マイクロプロセッサ上に転送され演算処理される。このとき画素群の一方は、同一ライン上の連続する画素群Ｃであり、もう一方は、画素群Ｃと異なるライン上の連続する画素群Ｄである。画像群Ｃ上に並ぶ画素に対して、左から右方向に順に１、２、３、・・・と番号を付し、画像群Ｄ上に並ぶ画素に対して、左から右方向に順に１、２、３、・・・と番号を付すものとすると、画素群Ｃ、画素群Ｄの夫々の１〜ｍまでの画素が、一度に画像処理をなされる画素として、ＳＩＭＤ型マイクロプロセッサ上に転送される。図８左部の画素群Ｄからの画素には、識別のために黒三角形を付している。
【００５０】
図８のＳＩＭＤ型マイクロプロセッサ上では、画素群Ｃの画素が各ＰＥの下位側、画素群Ｄの画素が各ＰＥの上位側に配置される。夫々、１番目のＰＥに画素１、２番目のＰＥに画素２、３番目のＰＥに画素３、・・・、ｍ番目のＰＥに画素ｍ、という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素（ｍ＋１）からそれぞれ同様に転送される。画素群Ｃと画素群Ｄとは、隣接するラインでなくてもよい。
【００５１】
次に、図９の右部は、画像データにおける画素の配置図を示し、左部は、ＳＩＭＤ型マイクロプロセッサ上の画素の第５の配置パターンを示す。ＳＩＭＤ型マイクロプロセッサは、ｍ個のＰＥを有し、１ＰＥにつき２個の画素を演算処理できるものとしている。図９左部では、各ＰＥにおいて上位側として処理される画素と、下位側として処理される画素とを模式的に表している。１ＰＥで２画素の処理がなされるため、このＳＩＭＤ型マイクロプロセッサは、１回に（２×ｍ）個の画素を扱える。ここで、ＳＩＭＤ型マイクロプロセッサへの転送の対象は、２個の別の画像データ（画像データＥ、画像データＦ）から構成される。画像データＥと画像データＦの夫々に並ぶ画素のうち、同一ライン上の連続するｍ個の画素がＳＩＭＤ型マイクロプロセッサ上に転送され演算処理される。このとき画像データＥ側の画素群を画素群Ｅとし、画像データＦ側の画素群を画素群Ｆとする。
画像群Ｅ上に並ぶ画素に対して、左から右方向に順に１、２、３、・・・と番号を付し、画像群Ｆ上に並ぶ画素に対して、左から右方向に順に１、２、３、・・・と番号を付すものとすると、画素群Ｅ、画素群Ｆの夫々の１〜ｍまでの画素が、一度に画像処理をなされる画素として、ＳＩＭＤ型マイクロプロセッサ上に転送される。図９左部の画素群Ｆからの画素には、識別のために黒三角形を付している。
【００５２】
図９のＳＩＭＤ型マイクロプロセッサ上では、画素群Ｅの画素が各ＰＥの下位側、画素群Ｆの画素が各ＰＥの上位側に配置される。夫々、１番目のＰＥに画素１、２番目のＰＥに画素２、３番目のＰＥに画素３、・・・、ｍ番目のＰＥに画素ｍ、という順序で、画素データが配置される。後続の画像処理では、続きの画素である画素（ｍ＋１）からそれぞれ同様に転送される。
【００５３】
［第２の実施形態］
図２は、本発明の第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の構成図である。第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２は、図５に示される画素の第１の配置パターンに対するデータ処理、特に一つのＰＥの演算部が隣接するＰＥのレジスタのデータを利用するデータ処理を実現する構成を備える。なお、第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２は、概略、第１の実施形態に係るＳＩＭＤ型マイクロプロセッサ２と同様の構成を有するため、同一の部位には同一の符号を付して説明を省略し、両者の差異を中心に説明する。
【００５４】
図２では、図１と同様にプロセッサエレメントグループ（図１６参照）の中央付近にある６個のＰＥ４を中心に示している。
【００５５】
図２に示されるレジスタファイル６０において、ＰＥ毎に１６ビット・レジスタ（６、８）が複数本内蔵されており、ＰＥの個数分の組でアレイ構成を形成している。それぞれのレジスタ（６、８）は、演算アレイ６２に対してポートを備えており、８ビットのリード／ライト兼用の２組のレジスタバス（１０ａ、１０ｂ）で演算アレイ６２からアクセスされる。２組の８ビットのレジスタバス（１０ａ、１０ｂ）は、レジスタの１６ビットのうちの下位８ビットと接続する下位レジスタバス１０ａと、レジスタの１６ビットのうちの上位８ビットと接続する上位レジスタバス１０ｂである。図２では、下位レジスタバス１０ａは実線で、上位レジスタバス１０ｂは破線で示している。図では便宜上、各ＰＥ４で７本のレジスタ（６、８）を示している。
【００５６】
演算アレイ６２内のデータ経路は、下位側の演算に関係するものを実線で示し、上位側の演算に関係するものを破線で示している。
【００５７】
レジスタ（６、８）と演算部１４との接続部分に２個の７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）（１２ａ、１２ｂ）が設けられている。２個の７ｔｏ１ＭＵＸ（１２ａ、１０ｂ）は８ビット幅の選択回路であり、複数の下位レジスタバス１０ａに接続する下位マルチプレクサ１２ａと、複数の上位レジスタバス１０ｂに接続する上位マルチプレクサ１２ｂである。
【００５８】
下位マルチプレクサ１２ａは、ＰＥ４が並ぶ方向（図２における左右の方向）において、左に１つ、２つ及び３つ離れたＰＥ４の下位レジスタバス１０ａと、右に１つ、２つ及び３つ離れたＰＥ４の下位レジスタバス１０ａと、当該ＰＥ４の下位レジスタバス１０ａに接続し、それらから一つを選択する。上位マルチプレクサ１２ｂは、ＰＥ４が並ぶ方向において、左に１つ、２つ及び３つ離れたＰＥ４の上位レジスタバス１０ｂと、右に１つ、２つ及び３つ離れたＰＥ４の上位レジスタバス１０ｂと、当該ＰＥ４の上位レジスタバス１０ｂに接続し、それらから一つを選択する。選択の制御は、それぞれグローバルプロセッサ３０により行われる。
【００５９】
７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）とＡＬＵ（１８、２４）の間には、スイッチ６４が設けられており、上位と下位の経路を入れ替える機能を備える。この入れ替える機能とは、下位マルチプレクサ１２ａと下位側ＡＬＵ１８が接続され、上位マルチプレクサ１２ｂと上位側ＡＬＵ２４が接続されている原則的な状態から、下位マルチプレクサ１２ａと上位側ＡＬＵ２４が接続され、上位マルチプレクサ１２ｂと下位側ＡＬＵ１８が接続されている交差的な状態にする機能（及び、交差的な状態から原則的な状態に戻す機能）である。スイッチ６４の制御、すなわち入れ替えるのか否かの制御は、グローバルプロセッサ３０により行われる。
【００６０】
更に、スイッチ６４とＡＬＵ（１８、２４）の間には、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６が設けられている。シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６は、レジスタ（６，８）から読み出されたデータのビットシフトと拡張を行う。シフタの制御は、グローバルプロセッサ３０により行われる。
【００６１】
レジスタファイル６０に示される上段３つのレジスタ６は、マイクロプロセッサ外の外部メモリデータ転送装置（図示せず。）から内容の読み出し／書き込みがなされ得るレジスタである。
【００６２】
次に、図２に示す本発明の第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の動作について説明する。
【００６３】
図２のＳＩＭＤ型マイクロプロセッサ２では、画像データが外部インターフェース７０を経て外部から転送されるが、以下では外部メモリデータ転送装置（図示せず。）により、各ＰＥ４のレジスタ６に画像データ（画素データ）が既に転送されてあるものとする。
【００６４】
まず、対象画素データサイズが１６ビットである場合を説明する。これは、図５に示す画素の第１の配置パターンを利用する場合とは異なり、１ＰＥで１画素の処理を行う場合である。第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２において、１ＰＥで１画素の処理を行うことが可能であることを説明する。
【００６５】
レジスタ（６、８）のサイズ、及びレジスタ（６、８）からＡＬＵ（１８、２４）への経路の幅は、上位・下位合わせて１６ビットなので、１６ビットデータを問題なく転送できる。途中のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６でデータは３２ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。このデータを“データＸ”とする。このとき、７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）が、必ず上位側と下位側とが同じ動作を行い、且つスイッチ６４も入れ替えを行わないように、グローバルプロセッサ３０が制御する。
【００６６】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、上位・下位併せて３２ビットのデータをＡＬＵ（１８、２４）へ供給する。このデータを“データＹ”とする。ＡＬＵ（１８、２４）は、データＸとデータＹの入力を受けて演算処理する。このとき上位用ＡＬＵ２４と下位用ＡＬＵ１８は３２ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を２個使って倍のサイズの演算を行うには、それら２個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路を使用する。
【００６７】
上記のデータＸとデータＹの演算は、３２ビットのデータ同士の演算であり演算結果も３２ビットとなる。演算結果の上位１６ビットは上位用Ａレジスタ２６へ、下位１６ビットは下位用Ａレジスタ２０へ格納される。そして再びＡＬＵ（１８、２４）へのデータ供給元へとなっていく。
【００６８】
上記のように、画像処理の過程において処理されるデータサイズは３２ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、１６ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位１６ビットだけを採用するなどのデータ加工のことである。
【００６９】
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図２に示すＳＩＭＤ型マイクロプロセッサ２では、レジスタ（６、８）と演算部１４との接続部分に７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）（１２ａ、１２ｂ）が設けられており、ＰＥが並ぶ方向（図２における左右方向）において、左に１つ、２つ及び３つ隣のＰＥ４のレジスタと、右に１つ、２つ及び３つ隣のＰＥ４のレジスタを選択できるようになっている。ここで、画素の配置順序とＰＥの配置順序とを一致させておけば、隣接するＰＥに隣接する画素データが格納されていることになり、各ＰＥ４の演算部１４での演算に隣接画素データを反映することができる。このとき、下位側ＭＵＸ１２ａと上位側１２ｂとが必ず同じ動作を行い、スイッチ６４も入れ替えを行わないように、グローバルプロセッサ３０が制御する。
【００７０】
次に、画素データサイズが８ビットである場合を説明する。これは、図５に示す画素の第１の配置パターンを利用する場合、即ち、１ＰＥで２画素の処理を行う場合である。
【００７１】
画素データサイズが８ビットであるとき、図２に示すＳＩＭＤ型マイクロプロセッサ２では個々のＰＥ４は２個の画素を対象として画像処理を行う。まず、レジスタ（６、８）には、８ビットデータが２個格納される。即ち、レジスタ（６，８）のデータサイズ１６ビットのうち、上位８ビットと下位８ビットで別の画素データを格納する。レジスタ（６、８）から演算部１４へのデータ転送では、上位８ビットが上位レジスタバス１０ｂを経由し、下位８ビットが下位レジスタバス１０ａを経由する。
【００７２】
レジスタ（６、８）のデータは、上位用ＭＵＸ１２ｂ若しくは下位用ＭＵＸ１２ａと、スイッチ６４とを経て、演算アレイ６２に導かれる。
【００７３】
途中のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６で、上位８ビットデータ及び下位８ビットデータは、夫々１６ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。この上位データを“データＸＨ”、下位データを“データＸＬ”とする。
【００７４】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、下位１６ビット、上位１６ビットのデータをＡＬＵ１８、ＡＬＵ２４へ供給する。この上位データを“データＹＨ”、下位データを“データＹＬ”とする。下位ＡＬＵ１８はデータＸＬとデータＹＬの入力を受けて演算処理する。上位ＡＬＵ２４はデータＸＨとデータＹＨの入力を受けて演算処理する。このとき上位ＡＬＵ２４と下位ＡＬＵ１８は、１６ビットの演算器として独立に動作する。このとき、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路は使用されない。
【００７５】
上記のデータＸＬとデータＹＬの演算、及びデータＸＨとデータＹＨの演算は、１６ビットのデータ同士の演算であり、演算結果も夫々１６ビットとなる。上位用ＡＬＵ２４の演算結果の１６ビットデータは上位用Ａレジスタ２６へ、下位用ＡＬＵ１８の演算結果の１６ビットデータは下位用Ａレジスタ２０へ格納される。そしてふたたびＡＬＵ（１８、２４）へのデータ供給元になる。
【００７６】
上記のように、画像処理の過程において処理されるデータサイズは１６ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、８ビット２個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位８ビットだけを採用するなどのデータ加工を行い、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６で上位側の格納データ８ビットと下位側の格納データ８ビットとを合成して１個の１６ビットデータにすることである。
【００７７】
次に、図５に示す画素の第１の配置パターンが用いられている第２の実施形態のＳＩＭＤ型マイクロプロセッサ２において、隣接画素を参照する処理手順の概要を説明する。
【００７８】
まず、各ＰＥ４の下位ＡＬＵ１８で下位画素の演算を行う場合について説明する。
【００７９】
画像データ上で１画素分右に位置する画素を参照するという場合、この画素が格納されるのは、当該ＰＥ４のレジスタの上位８ビットである。このときは当該ＰＥ４の上位側ＭＵＸ１２ｂで当該レジスタバス１０ｂを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００８０】
画像データ上で２画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に１つ隣のＰＥ４のレジスタの下位８ビットである。このときは当該ＰＥ４の下位側ＭＵＸ１２ａで右に１つ隣のレジスタバス１０ａを選択し、スイッチ６４を上位・下位の入れ替え無し状態に設定すれば、データ参照が実現する。
【００８１】
画像データ上で３画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に１つ隣のＰＥ４のレジスタの上位８ビットである。このときは当該ＰＥ４の上位側ＭＵＸ１２ｂで右に１つ隣のレジスタバス１０ｂを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００８２】
画像データ上で１画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に１つ隣のＰＥ４のレジスタの上位８ビットである。このときは当該ＰＥ４の上位側ＭＵＸ１２ｂで左に１つ隣のレジスタバス１０ｂを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００８３】
画像データ上で２画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に１つ隣のＰＥ４のレジスタの下位８ビットである。このときは当該ＰＥ４の下位側ＭＵＸ１２ａで左に１つ隣のレジスタバス１０ａを選択し、スイッチ６４を上位・下位の入れ替え無し状態に設定すれば、データ参照が実現する。
【００８４】
画像データ上で３画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に２つ隣のＰＥ４のレジスタの上位８ビットである。このときは当該ＰＥ４の上位側ＭＵＸ１２ｂで左に２つ隣のレジスタバス１０ｂを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００８５】
次に、各ＰＥ４の上位ＡＬＵ２４で上位画素の演算を行う場合について説明する。
【００８６】
画像データ上で１画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に１つ隣のＰＥ４のレジスタの下位８ビットである。このときは当該ＰＥ４の下位側ＭＵＸ１２ａで右に１つ隣のレジスタバス１０ａを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００８７】
画像データ上で２画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に１つ隣のＰＥ４のレジスタの上位８ビットである。このときは当該ＰＥ４の上位側ＭＵＸ１２ｂで右に１つ隣のレジスタバス１０ｂを選択し、スイッチ６４を上位・下位の入れ替えなし状態に設定すれば、データ参照が実現する。
【００８８】
画像データ上で３画素分右に位置する画素を参照するという場合、この画素が格納されるのは、右に２つ隣のＰＥ４のレジスタの下位８ビットである。このときは当該ＰＥ４の下位側ＭＵＸ１２ａで右に２つ隣のレジスタバス１０ａを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００８９】
画像データ上で１画素分左に位置する画素を参照するという場合、この画素が格納されるのは、当該ＰＥ４のレジスタの下位８ビットである。このときは当該ＰＥ４の下位側ＭＵＸ１２ａで当該レジスタバス１０ａを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００９０】
画像データ上で２画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に１つ隣のＰＥ４のレジスタの上位８ビットである。このときは当該ＰＥ４の上位側ＭＵＸ１２ｂで左に１つ隣のレジスタバス１０ｂを選択し、スイッチ６４を上位・下位の入れ替え無し状態に設定すれば、データ参照が実現する。
【００９１】
画像データ上で３画素分左に位置する画素を参照するという場合、この画素が格納されるのは、左に１つ隣のＰＥ４のレジスタの下位８ビットである。このときは当該ＰＥ４の下位側ＭＵＸ１２ａで左に１つ隣のレジスタバス１０ａを選択し、スイッチ６４を上位・下位の入れ替え有り状態に設定すれば、データ参照が実現する。
【００９２】
このように、スイッチ６４の動作と、上位側画素からデータ参照及び下位側画素からのデータ参照は呼応する。従って、データ参照においてグローバルプロセッサ３０はすべてのＰＥ４を一律に制御できる。すべてのＰＥ４の下位ＭＵＸ１２ａ、すべてのＰＥ４の上位ＭＵＸ１２ｂは、グローバルプロセッサ３０により一律制御される。
【００９３】
［第３の実施形態］
図３は、本発明の第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の構成図である。第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ２は、図６に示される画素の第２の配置パターンに対するデータ処理、特に一つのＰＥの演算部が隣接するＰＥのレジスタのデータを利用するデータ処理を実現する構成を備える。なお、第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ２は、概略、第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２と同様の構成を有するため、同一の部位には同一の符号を付して説明を省略し、両者の差異を中心に説明する。
【００９４】
図３に示されるレジスタファイル６０において、ＰＥ毎に１６ビット・レジスタ（６、８）が複数本内蔵されており、ＰＥの個数分の組でアレイ構成を形成している。それぞれのレジスタ（６、８）は、演算アレイ６２に対してポートを備えており、８ビットのリード／ライト兼用の２組のレジスタバス（１０ａ、１０ｂ）で演算アレイ６２からアクセスされる。２組の８ビットのレジスタバス（１０ａ、１０ｂ）は、レジスタの１６ビットのうちの下位８ビットと接続する下位レジスタバス１０ａと、レジスタの１６ビットのうちの上位８ビットと接続する上位レジスタバス１０ｂである。図３では、下位レジスタバス１０ａは実線で、上位レジスタバス１０ｂは破線で示している。図では便宜上、各ＰＥ４で７本のレジスタ（６、８）を示している。
【００９５】
図３では、図１及び図２とは異なり、プロセッサエレメントグループ（図１６参照）の両端の３個ずつのＰＥ４を中心に示している。ここで、ＰＥの個数がｍ個であるとして、左端のＰＥをＰＥ［１］とし、以降右方向にＰＥ［２］、ＰＥ［３］、・・・と識別子を付すと、右端のＰＥは、右からＰＥ［ｍ］、ＰＥ［ｍ−１］、ＰＥ［ｍ−２］・・・となる。従って図３では、左からＰＥ１、ＰＥ２、ＰＥ３が図示され、中間を省略して、ＰＥ［ｍ−２］、ＰＥ［ｍ−１］、ＰＥ［ｍ］が図示されている。
【００９６】
演算アレイ６２内のデータ経路は、下位側の演算に関係するものを実線で示し、上位側の演算に関係するものを破線で示している。
【００９７】
レジスタ（６、８）と演算部１４との接続部分に２個の７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）（１２ａ、１２ｂ）が設けられている。２個の７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）は８ビット幅の選択回路であり、複数の下位レジスタバス１０ａに接続する下位マルチプレクサ１２ａと、複数の上位レジスタバス１０ｂに接続する上位マルチプレクサ１２ｂである。
【００９８】
下位マルチプレクサ１２ａは、ＰＥ４が並ぶ方向（図３における左右の方向）において、左に１つ、２つ及び３つ離れたＰＥ４の下位レジスタバス１０ａと、右に１つ、２つ及び３つ離れたＰＥ４の下位レジスタバス１０ａと、当該ＰＥ４の下位レジスタバス１０ａに接続し、それらから一つを選択する。上位マルチプレクサ１２ｂは、ＰＥ４が並ぶ方向において、左に１つ、２つ及び３つ離れたＰＥ４の上位レジスタバス１０ｂと、右に１つ、２つ及び３つ離れたＰＥ４の上位レジスタバス１０ｂと、当該ＰＥ４の上位レジスタバス１０ｂに接続し、それらから一つを選択する。選択の制御は、それぞれグローバルプロセッサ３０により行われる。
【００９９】
プロセッサエレメントグループ７２内のＰＥ４の配列の左端付近に位置するＰＥの演算部１４から更に左のＰＥのレジスタ６、８を参照する場合、若しくは、右端付近に位置するＰＥの演算部１４から更に右のＰＥのレジスタ６、８を参照する場合、対象のＰＥが存在しないことがある。このような場合、通常、仮の参照値が読み出されるように設定されている。仮の参照値とは、全ビットが“０”であるデータや、全ビットが“１”であるデータなどである。
【０１００】
図３に示されるＰＥ４の配列において、左側のＰＥ［１］の下位側マルチプレクサ１２ａが当該ＰＥの左方のＰＥのレジスタ（６、８）を参照しようとする場合、当該ＰＥ［１］より左にＰＥが存在しないので、固定値ＶＧが参照値として割り当てられるようになっている。
【０１０１】
同様に、ＰＥ［２］の下位側マルチプレクサ１２ａが２つ以上の左方のＰＥのレジスタを参照しようとする場合、又は、ＰＥ［３］の下位側マルチプレクサ１２ａが３つ以上の左方のＰＥのレジスタを参照しようとする場合、該当するＰＥが存在しないため、固定値ＶＧが参照値として割り当てられる。
【０１０２】
図３にて示されるＰＥ４の配列において、左側のＰＥ［１］の上位側マルチプレクサ１２ｂが当該ＰＥの左方のＰＥのレジスタ（６、８）を参照しようとする場合、当該ＰＥ［１］より左にＰＥが存在しないが、右端のＰＥ、即ち、ＰＥ［ｍ］の下位側のレジスタバス１０ａが、１つ左隣のＰＥのレジスタバスとして接続される。同様に、ＰＥ［ｍ−１］の下位側のレジスタバス１０ａが、２つ左隣のＰＥのレジスタバスとして接続され、ＰＥ［ｍ−２］の下位側のレジスタバス１０ａが、３つ左隣のＰＥのレジスタバスとして接続される。
【０１０３】
上記のＰＥ［１］と同様に、ＰＥ［２］の上位側マルチプレクサ１２ｂは、ＰＥ［１］の上位側のレジスタバス１０ｂを１つ左隣とし、ＰＥ［ｍ］の下位側のレジスタバス１０ａを２つ左隣とし、ＰＥ［ｍ−１］の下位側のレジスタバス１０ａを３つ左隣のＰＥとして、接続する。ＰＥ［３］は、ＰＥ［２］の上位側のレジスタバス１０ｂを１つ左隣とし、ＰＥ［１］の上位側のレジスタバス１０ｂを２つ左隣とし、ＰＥ［ｍ］の下位側のレジスタバス１０ａを３つ左隣のＰＥとして、接続する。
【０１０４】
図３にて示されるＰＥ４の配列において、右側のＰＥ［ｍ］の上位側マルチプレクサ１２ｂが当該ＰＥの右方のＰＥのレジスタ（６、８）を参照しようとする場合、当該ＰＥ［ｍ］より右にＰＥが存在しないので、固定値ＶＧが参照値として割り当てられるようになっている。
【０１０５】
同様に、ＰＥ［ｍ−１］の上位側マルチプレクサ１２ｂが２つ以上の右方のＰＥのレジスタを参照しようとする場合、又は、ＰＥ［ｍ−２］の上位側マルチプレクサ１２ｂが３つ以上の右方のＰＥのレジスタを参照しようとする場合、該当するＰＥが存在しないため、固定値ＶＧが参照値として割り当てられる。
【０１０６】
図３にて示されるＰＥ４の配列において、右側のＰＥ［ｍ］の下位側マルチプレクサ１２ａが当該ＰＥの右方のＰＥのレジスタ（６、８）を参照しようとする場合、当該ＰＥ［ｍ］より右にＰＥが存在しないが、左端のＰＥ、即ち、ＰＥ［１］の上位側のレジスタバス１０ｂが、１つ右隣のＰＥのレジスタバスとして接続される。同様に、ＰＥ［２］の上位側のレジスタバス１０ｂが、２つ右隣のＰＥのレジスタバスとして接続され、ＰＥ［ｍ−２］の下位側のレジスタバス１０ａが、３つ左隣のＰＥのレジスタバスとして接続される。
【０１０７】
上記のＰＥ［ｍ］と同様に、ＰＥ［ｍ−１］の下位側マルチプレクサ１２ａは、ＰＥ［ｍ］の下位側のレジスタバス１０ａを１つ左隣とし、ＰＥ［１］の上位側のレジスタバス１０ｂを２つ右隣とし、ＰＥ［２］の上位側のレジスタバス１０ｂを３つ右隣として、接続する。ＰＥ［ｍ−１］は、ＰＥ［ｍ−１］の下位側のレジスタバス１０ａを１つ右隣とし、ＰＥ［ｍ］の下位側のレジスタバス１０ａを２つ右隣とし、ＰＥ［１］の上位側のレジスタバス１０ａを３つ右隣として、接続する。
【０１０８】
更に、７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）とＡＬＵ（１８、２４）の間には、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６が設けられている。シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６は、レジスタ（６、８）から読み出されたデータのビットシフトと拡張を行う。シフタの制御は、グローバルプロセッサ３０により行われる。
【０１０９】
レジスタファイル３０に示される上段３つのレジスタ６は、マイクロプロセッサ外の外部メモリデータ転送装置（図示せず。）から内容の読み出し／書き込みがなされ得るレジスタである。
【０１１０】
次に、図３に示す本発明の第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の動作について説明する。
【０１１１】
図３のＳＩＭＤ型マイクロプロセッサ２では、画像データが外部インターフェース７０を経て外部から転送されるが、以下では外部メモリデータ転送装置（図示せず。）により、各ＰＥ４のレジスタ６に画像データ（画素データ）が既に転送されてあるものとする。
【０１１２】
まず、対象画素データサイズが１６ビットである場合を説明する。これは、図６に示す画素の第２の配置パターンを利用する場合とは異なり、１ＰＥで１画素の処理を行う場合である。第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ２において、１ＰＥで１画素の処理を行うことが可能であることを説明する。
【０１１３】
レジスタ（６、８）のサイズ、及びレジスタ（６、８）からＡＬＵ（１８、２４）への経路の幅は、上位・下位合わせて１６ビットなので、１６ビットデータを問題なく転送できる。途中のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６でデータは３２ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。このデータを“データＸ”とする。このとき、７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）が、必ず上位側と下位側とが同じ動作を行うように、グローバルプロセッサ３０が制御する。
【０１１４】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、上位・下位併せて３２ビットのデータをＡＬＵ（１８、２４）へ供給する。このデータを“データＹ”とする。ＡＬＵ（１８、２４）は、データＸとデータＹの入力を受けて演算処理する。このとき上位用ＡＬＵ２４と下位用ＡＬＵ１８は３２ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を２個使って倍のサイズの演算を行うには、それら２個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路が使用される。
【０１１５】
上記のデータＸとデータＹの演算は、３２ビットのデータ同士の演算であり演算結果も３２ビットとなる。演算結果の上位１６ビットは上位用Ａレジスタ２６へ、下位１６ビットは下位用Ａレジスタ２０へ格納される。そして再びＡＬＵ（１８、２４）へのデータ供給元へとなっていく。
【０１１６】
上記のように、画像処理の過程において処理されるデータサイズは３２ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、１６ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位１６ビットだけを採用するなどの加工のことである。
【０１１７】
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図３に示すＳＩＭＤ型マイクロプロセッサ２では、レジスタ（６、８）と演算部１４との接続部分に７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）（１２ａ、１２ｂ）が設けられており、ＰＥが並ぶ方向（図２における左右方向）において、左に１つ、２つ及び３つ隣のＰＥ４のレジスタと、右に１つ、２つ及び３つ隣のＰＥ４のレジスタを選択できるようになっている。ここで、画素の配置順序とＰＥの配置順序とを一致させておけば、隣接するＰＥに隣接する画素データが格納されていることになり、各ＰＥ４の演算部１４での演算に隣接画素データを反映することができる。このとき、下位側ＭＵＸ１２ａと上位側ＭＵＸ１２ｂと必ず同じ動作を行うように、グローバルプロセッサ３０が制御する。
【０１１８】
次に、画素データサイズが８ビットである場合を説明する。これは、図６に示す画素の第２の配置パターンを利用する場合、即ち、１ＰＥで２画素の処理を行う場合である。
【０１１９】
画素データサイズが８ビットであるとき、図３に示すＳＩＭＤ型マイクロプロセッサ２では個々のＰＥ４は２個の画素を対象として画像処理を行う。まず、レジスタ（６、８）には、８ビットデータが２個格納される。即ち、レジスタ（６、８）のデータサイズ１６ビットのうち、上位８ビットと下位８ビットで別の画素データを格納する。レジスタ（６、８）から演算部１４へのデータ転送では、上位８ビットが上位レジスタバス１０ｂを経由し、下位８ビットが下位レジスタバス１０ａを経由する。
【０１２０】
レジスタ（６、８）のデータは、上位用ＭＵＸ１２ｂ若しくは下位用ＭＵＸ１２ａを経て、演算アレイ６２に導かれる。
【０１２１】
途中のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６で、上位８ビットデータ及び下位８ビットデータは、夫々１６ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。この上位データを“データＸＨ”、下位データを“データＸＬ”とする。
【０１２２】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、上位１６ビット、下位１６ビットのデータをＡＬＵ１８、ＡＬＵ２４へ供給する。この上位データを“データＹＨ”、下位データを“データＹＬ”とする。下位ＡＬＵ１８はデータＸＬとデータＹＬの入力を受けて演算処理する。上位ＡＬＵ２４はデータＸＨとデータＹＨの入力を受けて演算処理する。このとき上位ＡＬＵ２４と下位ＡＬＵ１８は、１６ビットの演算器として独立に動作する。このとき、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路は使用されない。
【０１２３】
上記のデータＸＬとデータＹＬの演算、及びデータＸＨとデータＹＨの演算は、１６ビットのデータ同士の演算であり、演算結果も夫々１６ビットとなる。上位用ＡＬＵ２４の演算結果の１６ビットデータは上位用Ａレジスタ２６へ、下位用ＡＬＵ１８の演算結果の１６ビットデータは下位用Ａレジスタ２０へ格納される。そしてふたたびＡＬＵ（１８、２４）へのデータ供給元になる。
【０１２４】
上記のように、画像処理の過程において処理されるデータサイズは１６ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、８ビット２個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位８ビットだけを採用するなどのデータ加工を行い、シフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）１６で上位側の格納データ８ビットと下位側の格納データ８ビットとを合成して１個の１６ビットデータとすることである。
【０１２５】
次に、図６に示す画素の第２の配置パターンが用いられている第３の実施形態のＳＩＭＤ型マイクロプロセッサ２において、隣接画素を参照する処理手順の概要を説明する。上記の１ＰＥで１画素の演算を行う場合と同じく、１つ〜３つ離れた画素の参照のためのレジスタ（６、８）と演算部１４の間の経路が、ＰＥ配列の両端部で確立されることを個別に説明する。すなわち、図６に示す画素の第２の配列パターンにおいて、画素１〜画素ｍと画素（ｍ＋１）〜画素（２×ｍ）の夫々に関して、隣接画素の参照処理が連続的に確立されることを説明する。
【０１２６】
まず、画素（ｍ＋１）、画素（ｍ＋２）、画素（ｍ＋３）を、画素ｍの演算処理のために参照できる。即ち、画素ｍはＰＥ［ｍ］の下位側ＡＬＵ１８で処理されるが、ＰＥ［ｍ］の下位マルチプレクサ１２ａは、１つ右隣画素の参照のためにＰＥ［１］の上位レジスタバス１２ｂに、２つ右隣画素の参照のためにＰＥ［２］の上位レジスタバス１２ｂに、３つ右隣画素の参照のためにＰＥ［３］の上位レジスタバス１２ｂに、接続している。従って、画素（ｍ＋１）、画素（ｍ＋２）、画素（ｍ＋３）を参照できる。
【０１２７】
次に、画素（ｍ＋１）、画素（ｍ＋２）を、画素（ｍ−１）の演算処理のために参照できる。即ち、画素（ｍ−１）はＰＥ［ｍ−１］の下位側ＡＬＵ１８で処理されるが、ＰＥ［ｍ−１］の下位マルチプレクサ１２ａは、２つ右隣画素の参照のためにＰＥ［１］の上位レジスタバス１２ｂに、３つ右隣画素の参照のためにＰＥ［２］の上位レジスタバス１２ｂに、接続している。従って、画素（ｍ＋１）、画素（ｍ＋２）を参照できる。
【０１２８】
次に、画素（ｍ＋１）を、画素（ｍ−２）の演算処理のために参照できる。即ち、画素（ｍ−２）はＰＥ［ｍ−２］の下位側ＡＬＵ１８で処理されるが、ＰＥ［ｍ−２］の下位マルチプレクサ１２ａは、３つ右隣画素の参照のためにＰＥ［１］の上位レジスタバス１２ｂに、接続している。従って、画素（ｍ＋１）を参照できる。
【０１２９】
次に、画素ｍ、画素（ｍ−１）、画素（ｍ−２）を、画素（ｍ＋１）の演算処理のために参照できる。即ち、画素（ｍ＋１）はＰＥ［１］の上位側ＡＬＵ２４で処理されるが、ＰＥ［１］の上位マルチプレクサ１２ｂは、１つ左隣画素の参照のためにＰＥ［ｍ］の下位レジスタバス１２ａに、２つ左隣画素の参照のためにＰＥ［ｍ−１］の下位レジスタバス１２ａに、３つ左隣画素の参照のためにＰＥ［ｍ−２］の下位レジスタバス１２ａに、接続している。従って、画素ｍ、画素（ｍ−１）、画素（ｍ−２）を参照できる。
【０１３０】
次に、画素ｍ、画素（ｍ−１）を、画素（ｍ＋２）の演算処理のために参照できる。即ち、画素（ｍ＋２）はＰＥ［２］の上位側ＡＬＵ２４で処理されるが、ＰＥ［２］の上位マルチプレクサ１２ｂは、２つ左隣画素の参照のためにＰＥ［ｍ］の下位レジスタバス１２ａに、３つ左隣画素の参照のためにＰＥ［ｍ−１］の下位レジスタバス１２ａに、接続している。従って、画素ｍ、画素（ｍ−１）を参照できる。
【０１３１】
次に、画素ｍを、画素（ｍ＋２）の演算処理のために参照できる。即ち、画素（ｍ＋２）はＰＥ［２］の上位側ＡＬＵ２４で処理されるが、ＰＥ［２］の上位マルチプレクサ１２ｂは、３つ左隣画素の参照のためにＰＥ［ｍ］の下位レジスタバス１２ａに、接続している。従って、画素ｍを参照できる。
【０１３２】
［第４の実施形態］
図４は、本発明の第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の構成図である。第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ２は、図７に示される画素の第３の配置パターン、図８に示される画素の第４の配置パターン及び図９に示される画素の第５の配置パターンに対するデータ処理、特に一つのＰＥの演算部が隣接するＰＥのレジスタのデータを利用するデータ処理を実現する構成を備える。なお、第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ２は、概略、第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ２と同様の構成を有するため、同一の部位には同一の符号を付して説明を省略し、両者の差異を中心に説明する。
【０１３３】
図４に示されるレジスタファイル６０において、ＰＥ毎に１６ビット・レジスタ（６、８）が複数本内蔵されており、ＰＥの個数分の組でアレイ構成を形成している。それぞれのレジスタ（６、８）は、演算アレイ６２に対してポートを備えており、８ビットのリード／ライト兼用の２組のレジスタバス（１０ａ、１０ｂ）で演算アレイ６２からアクセスされる。２組の８ビットのレジスタバス（１０ａ、１０ｂ）は、レジスタの１６ビットのうちの下位８ビットと接続する下位レジスタバス１０ａと、レジスタの１６ビットのうちの上位８ビットと接続する上位レジスタバス１０ｂである。図４では、下位レジスタバス１０ａは実線で、上位レジスタバス１０ｂは破線で示している。図では便宜上、各ＰＥ４で７本のレジスタ（６、８）を示している。
【０１３４】
演算アレイ６２内のデータ経路は、下位側の演算に関係するものを実線で示し、上位側の演算に関係するものを破線で示している。
【０１３５】
レジスタ（６、８）と演算部１４との接続部分に２個の７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）（１２ａ、１２ｂ）が設けられている。２個の７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）は８ビットの幅の選択回路で、複数の下位レジスタバス１０ａに接続する下位マルチプレクサ１２ａと、複数の上位レジスタバス１０ｂに接続する上位マルチプレクサ１２ｂである。
【０１３６】
下位マルチプレクサ１２ａは、ＰＥ４が並ぶ方向（図３における左右の方向）において、左に１つ、２つ及び３つ離れたＰＥ４の下位レジスタバス１０ａと、右に１つ、２つ及び３つ離れたＰＥ４の下位レジスタバス１０ａと、当該ＰＥ４の下位レジスタバス１０ａに接続し、それらから一つを選択する。上位マルチプレクサ１２ｂは、ＰＥ４が並ぶ方向において、左に１つ、２つ及び３つ離れたＰＥ４の上位レジスタバス１０ｂと、右に１つ、２つ及び３つ離れたＰＥ４の上位レジスタバス１０ｂと、当該ＰＥ４の上位レジスタバス１０ｂに接続し、それらから一つを選択する。選択の制御は、それぞれグローバルプロセッサ３０により行われる。
【０１３７】
７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）とＡＬＵ（１８、２４）の間には、２個のシフタ（Ｓｈｉｆｔ  Ｅｘｐａｎｄ）（１６ａ、１６ｂ）が設けられている。２個のシフタは、下位用シフタ１６ａと上位用シフタ１６ｂであり、レジスタ（６、８）から読み出されたデータのビットシフトと拡張を行う。シフタの制御は、グローバルプロセッサ３０により個別に行われる。この２個のシフタ（１６ａ、１６ｂ）は、相互間で信号を交換しつつ１個のシフタとしてビットシフトと拡張を行えるようにも構成されている。
【０１３８】
レジスタファイル６０に示される上段３つのレジスタ６は、マイクロプロセッサ外の外部メモリデータ転送装置（図示せず。）から内容の読み出し／書き込みがなされ得るレジスタである。
【０１３９】
次に、図４に示す本発明の第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ２の動作について説明する。
【０１４０】
図４のＳＩＭＤ型マイクロプロセッサ２では、画像データが外部インターフェース７０を経て外部から転送されるが、以下では外部メモリデータ転送装置（図示せず。）により、各ＰＥ４のレジスタ６に画像データ（画素データ）が既に転送されてあるものとする。
【０１４１】
まず、対象画素のデータサイズが１６ビットの場合を説明する。これは、図７、図８及び図９に示す画素の配置パターンを利用する場合とは異なり、１ＰＥで１画素の処理を行う場合である。第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ２において、１ＰＥで１画素の処理が可能であることを説明する。
【０１４２】
レジスタ（６、８）のサイズ、及びレジスタ（６、８）からＡＬＵ（１８、２４）への経路の幅は、上位・下位合わせて１６ビットなので、１６ビットデータを問題なく転送できる。途中の上位用・下位用のシフタ（１６ｂ、１６ａ）は、連動してデータを３２ビットに拡張する。拡張されたデータのうち、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。このデータを“データＸ”とする。このとき、７ｔｏ１ＭＵＸ（１２ａ、１２ｂ）が、必ず上位側と下位側とが同じ動作を行うように、グローバルプロセッサ３０が制御する。
【０１４３】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０，２６）も、上位・下位併せて３２ビットのデータをＡＬＵ（１８、２４）へ供給する。このデータを“データＹ”とする。ＡＬＵ（１８、２４）は、データＸとデータＹの入力を受けて演算処理する。このとき上位用ＡＬＵ２４と下位用ＡＬＵ１８は３２ビットの一つの演算器として動作する。一般に、或るサイズの演算器として動作する演算器を２個使って倍のサイズの演算を行うには、それら２個の演算器相互間にいくつかの信号伝達が必要とされる。ここでは、上位ＡＬＵ２４と下位ＡＬＵ１８との間に設けられた情報伝達経路を使用する。
【０１４４】
上記のデータＸとデータＹの演算は、３２ビットのデータ同士の演算であり演算結果も３２ビットとなる。演算結果の上位１６ビットは上位用Ａレジスタ２６へ、下位１６ビットは下位用Ａレジスタ２０へ格納される。そして再びＡＬＵ（１８、２４）へのデータ供給元へとなっていく。
【０１４５】
上記のように、画像処理の過程において処理されるデータサイズは３２ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、１６ビットのデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位１６ビットだけを採用するなどのデータ加工のことである。
【０１４６】
画像処理、例えばフィルタ加工などの処理において、隣接する画素のデータを必要とする場合がある。図４に示すＳＩＭＤ型マイクロプロセッサ２では、レジスタ（６、８）と演算部１４との接続部分に７対１（７ｔｏ１）のマルチプレクサ（７ｔｏ１ＭＵＸ）（１２ａ、１２ｂ）が設けられており、ＰＥが並ぶ方向（図４における左右方向）において、左に１つ、２つ及び３つ隣のＰＥ４のレジスタと、右に１つ、２つ及び３つ隣のＰＥ４のレジスタを選択できるようになっている。ここで、画素の配置順序とＰＥの配置順序とを一致させておけば、隣接するＰＥに隣接する画素データが格納されていることになり、各ＰＥ４の演算部１４での演算に隣接画素データを反映することができる。このとき、下位側ＭＵＸ１２ａと上位側ＭＵＸ１２ｂとが、必ず同じ動作を行うように、グローバルプロセッサ３０が制御する。
【０１４７】
次に、画素データサイズが８ビットの場合を説明する。これは、図７、図８又は図９に示す画素の配置パターン（第３の配置パターン、第４の配置パターン、又は第５の配置パターン）を利用する場合、即ち、１ＰＥで２画素の処理を行う場合である。１ＰＥ２画素の処理が可能であることを説明する。
【０１４８】
画素データサイズが８ビットであるとき、図４に示すＳＩＭＤ型マイクロプロセッサ２では個々のＰＥ４は２個の画素を対象として画像処理を行う。まず、レジスタ（６、８）には、８ビットのデータが２個格納される。即ち、レジスタ（６、８）のデータサイズ１６ビットのうち、上位８ビットと下位８ビットで別の画素データが格納される。レジスタ（６、８）から演算部１４へデータ転送では、上位８ビットが上位レジスタバス１０ｂを経由し、下位８ビットが下位レジスタバス１０ａを経由する。
【０１４９】
レジスタ（６、８）のデータは、上位用ＭＵＸ１２ｂ若しくは下位用ＭＵＸ１２ａを経て、演算アレイ６２に導かれる。
【０１５０】
途中の上位用・下位用のシフタ（１６ｂ、１６ａ）で、上位８ビットデータ及び下位８ビットデータは、夫々１６ビットに拡張され、上位１６ビットが上位用ＡＬＵ２４へ、下位１６ビットが下位用ＡＬＵ１８へ導かれる。この上位データを“データＸＨ”、下位データを“データＸＬ”とする。
【０１５１】
下位レジスタバス１０ａ上のデータから“データＸＬ”を生成する下位用シフタ１６ａの動作と、上位レジスタバス１０ｂ上のデータから“データＸＨ”を生成する上位用シフタ１６ｂの動作は、夫々独立してグローバルプロセッサ３０から制御される。例えば、１ビットのビットシフトを行って下位レジスタバス１０ａ上のデータを２倍してデータＸＬを生成し、２ビットのビットシフトを行って上位レジスタバス１０ｂ上のデータの値を４倍してデータＸＨを生成する、というような動作の制御が可能である。
【０１５２】
演算結果を格納すると共にＡＬＵ（１８、２４）へのデータの供給元になっているＡレジスタ（２０、２６）も、下位１６ビット、上位１６ビットのデータをＡＬＵ１８、ＡＬＵ２４へ供給する。この上位データを“データＹＨ”、下位データを“データＹＬ”とする。下位ＡＬＵ１８はデータＸＬとデータＹＬの入力を受けて演算処理する。上位ＡＬＵ２４はデータＸＨとデータＹＨの入力を受けて演算処理する。このとき上位ＡＬＵ２４と下位ＡＬＵ１８は、１６ビットの演算器として独立に動作する。このとき、上位ＡＬＵ２４と下位ＡＬＵ１８の間に設けられた情報伝達経路は使用されない。
【０１５３】
上記のデータＸＬとデータＹＬの演算、及びデータＸＨとデータＹＨの演算は、１６ビットのデータ同士の演算であり、演算結果も夫々１６ビットとなる。上位用ＡＬＵ２４の演算結果の１６ビットデータは上位用Ａレジスタ２６へ、下位用ＡＬＵ１８の演算結果の１６ビットデータは下位用Ａレジスタ２０へ格納される。そしてふたたびＡＬＵ（１８、２４）へのデータ供給元になる。
【０１５４】
上記のように、画像処理の過程において処理されるデータサイズは１６ビットとなる。最終的に画像処理の結果がレジスタファイル６０に戻されるときには、８ビット２個のデータに整形されて戻される。ここでの整形は、データをビットシフトしてから下位８ビットだけを採用するなどのデータ加工を行い、２個のシフタ（１６ａ、１６ｂ）で上位側の格納データ８ビットと下位の格納データ８ビットを合成して１個の１６ビットデータとすることである。
【０１５５】
［その他の実施形態］
以上の実施形態の説明では、１ＰＥで２個の処理を実施できる形態を示してきたが、本発明を利用すれば１ＰＥで３個以上の数の画素を処理するＳＩＭＤ型マイクロプロセッサを作成することも可能である。
【０１５６】
［第２〜第４の実施形態の有効性について］
ＳＩＭＤ型マイクロプロセッサにおいて、図５、図６、図７、図８及び図９に示すような画素の配置パターンを利用して、１個のＰＥで２個の画素を処理するようにすれば、まず処理能力が２倍になる。
【０１５７】
更に、図５に示す画素の第１の配置パターンを利用して図２に示す第２の実施形態に係るＳＩＭＤ型マイクロプロセッサで１個のＰＥで２個の画素を処理する場合、若しくは、図６に示す画素の第２の配置パターンを利用して図３に示す第３の実施形態に係るＳＩＭＤ型マイクロプロセッサで１個のＰＥで２個の画素を処理する場合、次のような有効性がある。
【０１５８】
ＰＥ配列の両端付近のＰＥが、隣接するＰＥが存在しない方向へのデータ参照をした場合、正しくないデータで演算がされることになる。そのため、両端から数個の画素データは正しくない内容となり、結局これら数個の画素データは無効画素として放棄されることになる。図１０及び図１１の例により説明する。図１０では、画像データの水平方向の画素数を４８０とし、ＳＩＭＤ型マイクロプロセッサで１回に処理できる画素数を９６としている。両端に無効画素が発生しない処理であれば、５回の処理を繰り返すことで全体の処理が完了する。次に図１１にて、両端に無効画素の発生する場合を示す。両端からそれぞれ１６画素が無効画素となるとすると、正しい結果となる有効画素部分は６４画素であり、結局４８０画素全体を処理するのに８回の繰り返しが必要とされる。
【０１５９】
ここで、処理能力が２倍になり、且つ処理対象となる画素が同一ライン上の連続する画素である場合（即ち、図５又は図６の配置パターンが利用される場合）、１回の処理では９６画素の２倍の１９２画素が処理され得ることになる（図１２参照）。両端からそれぞれ１６画素（無効画素）を除くと、有効画素は１６０画素となる。そうすると図１２に示すように、４８０画素である全体の処理を完了させるのには、３回の繰り返しでよいことになる。従ってこの場合、処理能力は２倍以上に向上すると言える。
【０１６０】
また、図８に示す画素の第４の配置パターンを利用する第４の実施形態に係るＳＩＭＤ型マイクロセッサでは、同一画像データの２ライン同時処理が可能になる。画像処理においては、通常すべてのラインで同様のデータ処理を繰り返す。但し、フィルタ処理などでは、ラインの上下で係数が異なり、ビットシフト量による倍率の制御をライン毎に切り替える場合があるが、本実施形態では、ライン毎の制御の切り替えを可能としている。
【０１６１】
また、図９に示す画素の第５の配置パターンを利用する第４の実施形態に係るＳＩＭＤ型マイクロセッサでは、複数の同じサイズの画像データを並行処理することが可能である。通常、カラー画像処理ではＲＧＢ方式やＣＹＭＫ方式などの方式が利用され、３色〜４色の色ごとに画像データが作られる。従って、一つの画像に対して、同じサイズの画像データが３〜４個生成されることになる。このような画像処理では、各色のデータに対して、色毎の係数を設定することがあるが、本実施形態では、色毎の制御の切り替えを可能としている。
【符号の説明】
【０１６２】
２・・・ＳＩＭＤ型マイクロプロセッサ、４・・・プロセッサエレメント（ＰＥ）、１０、１０ａ、１０ｂ・・・・レジスタバス、１２、１２ａ、１２ｂ・・・７ｔｏ１ＭＵＸ（７対１マルチプレクサ）、１４・・・演算部、１６、１６ａ、１６ｂ・・・シフタ、１８、２４・・・ＡＬＵ（演算器）、２０、２６・・・Ａレジスタ、３０・・・グローバルプロセッサ、６４・・・スイッチ。
【先行技術文献】
【特許文献】
【０１６３】
【特許文献１】特開２００１−２５６１９９号公報
【図１】
2010118075.tif 000003
【図２】
2010118075.tif 000004
【図３】
2010118075.tif 000005
【図４】
2010118075.tif 000006
【図５】
2010118075.tif 000007
【図６】
2010118075.tif 000008
【図７】
2010118075.tif 000009
【図８】
2010118075.tif 000010
【図９】
2010118075.tif 000011
【図１０】
2010118075.tif 000012
【図１１】
2010118075.tif 000013
【図１２】
2010118075.tif 000014
【図１３】
2010118075.tif 000015
【図１４】
2010118075.tif 000016
【図１５】
2010118075.tif 000017
【図１６】
2010118075.tif 000018