(57)【特許請求の範囲】
【請求項１】
ｎ個（ｎは２以上の自然数）の演算回路および前記演算回路に入力するデータを一時記憶するｎ個のレジスタ、を備えた複数のプロセッサエレメントと、前記プロセッサエレメントの前記ｎ個の演算回路を１つの演算回路として使用するかｎ個の演算回路として使用するかを決定する制御回路と、を有するＳＩＭＤ型マイクロプロセッサにおいて、
前記プロセッサエレメントが、それぞれ異なるプロセッサエレメントから入力される複数のデータを選択して転送するＰＥシフタおよび前記レジスタに一時記憶したデータの環状シフト演算を行うＢＩＴシフタを備えたｎ個のシフタ対と、
前記ｎ個のシフタ対から任意のデータを選択した後、ビット拡張を行って前記演算回路へ転送するｎ個のシフトデータ選択回路と、
を有していることを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
前記制御回路が、
前記ｎ個の演算回路を単一の演算回路として扱うように制御する第１のモードと、
前記演算回路をｎ個の演算回路として扱う際に、ｎ個の前記ＰＥシフタに対して全て同一転送位置による転送を行わせ、ｎ個の前記ＢＩＴシフタに対して全て同一のシフト量による環状シフト演算を行わせ、そして、ｎ個の前記シフトデータ選択回路に対して対象となるＢＩＴシフタからのデータを選択させるように制御する第２のモードと、
前記演算回路をｎ個の演算回路として扱う際に、ｎ個の前記ＰＥシフタに対してそれぞれ独立した転送位置による転送を行わせ、ｎ個の前記ＢＩＴシフタに対して全て同一のシフト量による環状シフト演算を行わせ、そして、ｎ個の前記シフトデータ選択回路に対してそれぞれ前記ＰＥシフタでの転送位置に応じて、ｎ個の前記シフタ対の出力データの各ビットをシフトさせてデータを選択させるように制御する第３のモードと、
前記演算回路をｎ個として扱い、ｎ個の前記演算回路それぞれを個別に動作させる第４のモードと、
を有していることを特徴とする請求項１に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項３】
前記シフトデータ選択回路が、前記演算回路と一体に設けられていることを特徴とする請求項１または２に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項４】
前記第１のモードにおいて、前記制御回路が、
（イ）ｎ個の前記ＰＥシフタに対して全て同一の転送位置による転送を行わせ、
（ロ）ｎ個の前記ＢＩＴシフタに対して全て同一シフト量による環状シフト演算を行わせ、そして、
（ハ）ｎ個の前記シフトデータ選択回路に対して前記ＢＩＴシフタでのシフト量に応じて、ｎ個の前記シフタ対の出力データの各ビットをシフトさせてデータを選択させる
ように構成されていることを特徴とする請求項２または３に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項５】
前記第４のモードにおいて、前記制御回路が、ｎ個の前記ＰＥシフタ、ｎ個の前記ＢＩＴシフタ、およびｎ個の前記シフトデータ選択回路を、それぞれ個別に制御を行うように、構成されていることを特徴とする請求項２または３に記載のＳＩＭＤ型マイクロプロセッサ。
【請求項６】
ｎ個（ｎは２以上の自然数）の演算回路を備えた複数のプロセッサエレメントを、前記ｎ個の演算回路を１つの演算回路として使用するかｎ個の演算回路として使用するかに応じて入力データを分割して前記演算回路に前記入力データを転送するＳＩＭＤ型マイクロプロセッサのデータ転送方法において、
ｎ個に分割された前記入力データそれぞれに対して、異なるプロセッサエレメントから入力される複数のデータの選択および転送を行うとともに該複数データの環状シフト演算を行い、
そして、前記データ選択および転送と環状シフト演算が行われたデータから任意のデータを選択してビット拡張を行って前記演算回路へ転送することを特徴とするＳＩＭＤ型マイクロプロセッサのデータ転送方法。
【請求項７】
前記入力データに応じて、
前記ｎ個の演算回路を単一の演算回路として扱うように転送する第１のモード、
前記演算回路をｎ個の演算回路として扱う際に、ｎ個の入力データそれぞれに対して、全て同一転送位置によるデータ選択および転送を行い、全て同一のシフト量による環状シフト演算を行い、そして、複数のデータの選択および転送と前記環状シフト演算がなされた出力データを、前記演算回路に応じて選択する第２のモード、
前記演算回路をｎ個の演算回路として扱う際に、ｎ個の入力データそれぞれに対して、それぞれ独立した転送位置によるデータ選択および転送を行い、全て同一のシフト量による環状シフト演算を行い、そして、それぞれ独立した転送位置に応じて、複数のデータの選択および転送と前記環状シフト演算がなされた出力データの各ビットをシフトさせてデータを選択する第３のモード、
前記演算回路をｎ個として扱い、ｎ個の前記演算回路それぞれを個別に動作させ転送する第４のモード、
から選ばれるいずれかのモードに切り替える
ことを特徴とする請求項６に記載のＳＩＭＤ型マイクロプロセッサのデータ転送方法。
【請求項８】
前記第１のモードにおいて、ｎ個の入力データそれぞれに対して、全て同一の転送位置によるデータの選択および転送を行い、全て同一シフト量による環状シフト演算を行い、そして、前記シフト量に応じて、複数のデータの選択および転送と前記環状シフト演算がなされた出力データの各ビットをシフトさせてデータを選択することを特徴とする請求項７に記載のＳＩＭＤ型マイクロプロセッサのデータ転送方法。
【請求項９】
前記第４のモードにおいて、ｎ個の入力データそれぞれに対して、独立した転送位置によるデータ選択および転送を行い、独立したシフト量による環状シフト演算を行い、そして、複数のデータの選択および転送と前記環状シフト演算がなされた出力データを、前記演算回路に応じて選択することを特徴とする請求項７に記載のＳＩＭＤ型マイクロプロセッサのデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの演算命令により複数の画像データ等を並列処理するＳＩＭＤ（Single Instruction stream Multiple Data stream）型マイクロプロセッサ、及び当該ＳＩＭＤ型マイクロプロセッサにおけるデータ転送方法に関する。
【背景技術】
【０００２】
デジタル複写機などで扱われる画像データは、通常、２次元に配置されたデータの集合体であり、画像を構成する個々のデータを画素と呼んでいる。
【０００３】
個々の画素には値が割り当てられ、その値により画像の内容が決まる。画素の値が“１”のとき黒を、“０”のとき白を表すとすると黒と白の２色だけの画像が表現できる。また、中間色などを表現するには、例えば、画素を４ビットデータとすれば、００００ｂ（ｂは２進数を示す）から１１１１ｂまでの１６通りの画像が表現出来、黒と白の間に１４段階の中間色を設定することが出来る。さらに８ビットデータであれば画素は２５６色の表現が可能になる。
【０００４】
画素データのサイズは、その画像の目的や表現する内容によって変化する。例えば、写真など豊かな表現を必要とする画像の画素は多ビットのデータとなり、データサイズを小さくしたい通信関係の画像の画素は少ビットのデータとなる。
【０００５】
このような画像データに対して様々な処理を実行するマイクロプロセッサとしては、ＳＩＭＤ型を採用することが多い。なぜなら、１つの命令で複数のデータに対して同時に同一の演算処理が実行可能であるＳＩＭＤ型マイクロプロセッサの特徴が、画像処理に適しているからである。ＳＩＭＤ型マイクロプロセッサは、プロセッサエレメント（以下ＰＥと称する。）と呼ばれる単位で演算回路とレジスタとを備え、そのＰＥを複数個有する。これら複数個のＰＥが同時に演算処理を行うことで、１つの命令で複数のデータに対して同時に同一の演算処理を実行する。画像処理において各ＰＥは、通常１個の画素の画像処理を担当するように設計されている。
【０００６】
近年、画像処理への性能要求は、処理速度の向上と画像の高品質化の二面に向けられている。まず、ＳＩＭＤ型プロセッサでの画像処理の処理速度の向上を求める場合、プロセッサの動作周波数を向上させるということと、画像処理の画素数を増加させるという２通りのアプローチがある。
【０００７】
前者の動作周波数を向上させるということは、常時要求されている課題であり、大きな性能向上を実現するのは容易でない。後者の１回の画像処理で処理できる画素数を増加させるということは、一般的にはＰＥの個数を増加させるということとなる。しかし、ＰＥの個数を増加させることは、回路の大規模化、動作周波数の低下などの不都合を伴う。
【０００８】
一方、画像の高品質化ということは、画素が多色や多階調になることであり、画素データのサイズが大きくなることに繋がる。たとえば、画素データサイズが２５６階調の８ビットから、６５５３６階調１６ビットになることである。
【０００９】
このように画素データのサイズが増加すると、結局各ＰＥの演算データサイズを増加させなければならない。このようにＳＩＭＤ型プロセッサへの要求は、動作周波数の向上、ＰＥ数の増加、ＰＥでの演算データサイズ拡大、と多岐に渡っている。
【００１０】
上述したＰＥ数の増加とＰＥでの演算データサイズ拡大の両方に対応する技術としては、例えば特許文献１に記載のＳＩＭＤ型マイクロプロセッサがある。特許文献１に記載のＳＩＭＤ型マイクロプロセッサは、各ＰＥ内に複数の演算回路を設けた階層型のＳＩＭＤ型マイクロプロセッサとし、画素サイズを減らしＰＥ数を増やして動作させるモードと、画素サイズを増やしＰＥ数を減らして動作させるモードとを設けている。
【００１１】
図８に従来のＰＥ１１０の構成例を示す。ＰＥ１１０はレジスタ（ＲＥＧ）１１１と、ＰＥシフタ（ＰＳＨ）１１２と、ＢＩＴシフタ（ＢＳＨ）１１３と、ＡＬＵ（Ｌ）１１４ａおよびＡＬＵ（Ｈ）１１４ｂと、を備えている。
【００１２】
レジスタ１１１は、ＰＥ１１０において演算するデータを一時記憶するためのものであり、図８の例では８ビットの画素を扱う場合と、１６ビットの画素を扱う場合を想定して、各ＰＥ１１０に８ビット×２に分割可能な１６ビット幅のレジスタをＰＥに１つに付き１個用意している。
【００１３】
ＰＥシフタ１１２は、レジスタ１１１と、隣接するＰＥ１１０内のレジスタ１１１からのデータを選択してＢＩＴシフタ１１３に転送している。すなわち、ＰＥ１１０間でデータをシフトしている。図８の例におけるＰＥシフタ１１２では連続した画素における前後３画素のデータを参照することを想定しているため、７ｔｏ１のマルチプレクサ１１２ａが必要となる。データが１６ビット幅の場合には、ＰＥ１１０のデータがそのままシフト（転送）される。８ビットの場合には、２種類の転送方法がある。１つはデータの並びがＰＥ１１０の並びの順を優先する場合で、１６ビット幅の場合と同様の転送を行う。もう一方はＰＥ１１０内の配列順を優先する場合で、各ＰＥ１１０内での転送が必要となる。そのため、ＰＥシフタ１１２の後段に２ｔｏ１のマルチプレクサ１１２ｂを設けている。
【００１４】
ＢＩＴシフタ１１３は、データのビットシフトと拡張を行っている。ＡＬＵはレジスタ１１１での値に対して、倍精度の演算能力を必要とするため、１６ビット幅のデータに対しては３２ビット幅にデータを拡張して、８ビット幅のデータに対しては１６ビット幅にデータを拡張している。１６ビット幅のデータに対しては１６ｔｏ１のマルチプレクサ１１３ａを、８ビット幅のデータに対しては８ｔｏ１のマルチプレクサ１１３ｂを用い、データを倍精度に拡張した後いずれかを選択し、下位１６ビットを下位側のＡＬＵ（Ｌ）１１４ａに、上位１６ビットを上位側のＡＬＵ（Ｈ）１１４ｂに転送する。
【００１５】
ＡＬＵ（Ｌ）１１４ａおよびＡＬＵ（Ｈ）１１４ｂは、算術論理演算回路（Arithmetic and Logic Unit）であり、それぞれ１６ビット演算を行う。ＡＬＵ（Ｌ）１１４ａおよびＡＬＵ（Ｈ）１１４ｂではそれぞれが独立して演算を行うことが可能であるが、ＡＬＵ（Ｌ）１１４ａとＡＬＵ（Ｈ）１１４ｂを連結して３２ビットＡＬＵ１１４として動作させることもできる。
【００１６】
上述した構成のＰＥ１１０は、レジスタから読み出されたデータを、ＰＥシフタ１１２、ＢＩＴシフタ１１３を介してＡＬＵ（Ｌ）１１４ａおよびＡＬＵ（Ｈ）１１４ｂに転送する。
【００１７】
グローバルプロセッサ１２０は、ＰＥ１１０の動作を制御するコントローラであって、プログラムを読み込み実行する独立のプロセッサであり、各種レジスタやプログラム、データを格納するメモリ等が内蔵されている。
【００１８】
図９は図８とは別の構成を示すものであり、ＰＥシフタに１１ｔｏ１のマルチプレクサ１１２ｃを設けている。これはデータの並びがＰＥの並びの順を優先する場合と、ＰＥ内の配列順を優先する場合の、いずれの場合にも前後３画素のデータを選択するために、選択数を増やした構成となっている。図８のように２段階でシフトを行う場合と、図９のように多入力選択で１度に行う場合とでは、回路規模、動作速度の面においてどちらが良いとは一概には言えない。
【特許文献１】特開２００６−２６０４７９号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
上述したようにＳＩＭＤ型マイクロプロセッサの分割を可変にし、画素サイズ（ビット数）とＰＥ数を操作する方法に関しては提案されている。しかし、実際にはそれに対応するための切替スイッチ（マルチプレクサ）等が付加され、それにより回路規模を増大させてしまい、さらには動作速度の低下を招く結果となってしまっている。
【００２０】
よって、本発明は、プロセッサエレメントの回路規模の増大や動作速度の低下を起こすことなく、画像処理性能と画像品質の両立に対応した、ＳＩＭＤ型マイクロプロセッサを提供することを課題とする。
【課題を解決するための手段】
【００２１】
上記課題を解決するために、請求項１に記載の発明は、ｎ個（ｎは２以上の自然数）の演算回路および前記演算回路に入力するデータを一時記憶するｎ個のレジスタ、を備えた複数のプロセッサエレメントと、前記プロセッサエレメントの前記ｎ個の演算回路を１つの演算回路として使用するかｎ個の演算回路として使用するかを決定する制御回路と、を有するＳＩＭＤ型マイクロプロセッサにおいて、前記プロセッサエレメントが、それぞれ異なるプロセッサエレメントから入力される複数のデータを選択して転送するＰＥシフタおよび前記レジスタに一時記憶したデータの環状シフト演算を行うＢＩＴシフタを備えたｎ個のシフタ対と、前記ｎ個のシフタ対から任意のデータを選択した後、ビット拡張を行って前記演算回路へ転送するｎ個のシフトデータ選択回路と、を有していることを特徴とするＳＩＭＤ型マイクロプロセッサである。
【００２２】
請求項２に記載の発明は、請求項１に記載の発明において、前記制御回路が、前記ｎ個の演算回路を単一の演算回路として扱うように制御する第１のモードと、前記演算回路をｎ個の演算回路として扱う際に、ｎ個の前記ＰＥシフタに対して全て同一転送位置による転送を行わせ、ｎ個の前記ＢＩＴシフタに対して全て同一のシフト量による環状シフト演算を行わせ、そして、ｎ個の前記シフトデータ選択回路に対して対象となるＢＩＴシフタからのデータを選択させるように制御する第２のモードと、前記演算回路をｎ個の演算回路として扱う際に、ｎ個の前記ＰＥシフタに対してそれぞれ独立した転送位置による転送を行わせ、ｎ個の前記ＢＩＴシフタに対して全て同一のシフト量による環状シフト演算を行わせ、そして、ｎ個の前記シフトデータ選択回路に対してそれぞれ前記ＰＥシフタでの転送位置に応じて、ｎ個の前記シフタ対の出力データの各ビットをシフトさせてデータを選択させるように制御する第３のモードと、前記演算回路をｎ個として扱い、ｎ個の前記演算回路それぞれを個別に動作させる第４のモードと、を有していることを特徴としている。
【００２３】
請求項３に記載の発明は、請求項１または２に記載の発明において、前記シフトデータ選択回路が、前記演算回路と一体に設けられていることを特徴としている。
【００２４】
請求項４に記載の発明は、請求項２または３に記載の発明において、前記第１のモードにおいて、前記制御回路が、（イ）ｎ個の前記ＰＥシフタに対して全て同一の転送位置による転送を行わせ、（ロ）ｎ個の前記ＢＩＴシフタに対して全て同一シフト量による環状シフト演算を行わせ、そして、（ハ）ｎ個の前記シフトデータ選択回路に対して前記ＢＩＴシフタでのシフト量に応じて、ｎ個の前記シフタ対の出力データの各ビットをシフトさせてデータを選択させるように構成されていることを特徴としている。
【００２７】
請求項５に記載の発明は、請求項２または３に記載の発明において、前記第４のモードにおいて、前記制御回路が、ｎ個の前記ＰＥシフタ、ｎ個の前記ＢＩＴシフタ、およびｎ個の前記シフトデータ選択回路を、それぞれ個別に制御を行うように、構成されていることを特徴としている。
【００２８】
請求項６に記載の発明は、ｎ個（ｎは２以上の自然数）の演算回路を備えた複数のプロセッサエレメントを、前記ｎ個の演算回路を１つの演算回路として使用するかｎ個の演算回路として使用するかに応じて入力データを分割して前記演算回路に前記入力データを転送するＳＩＭＤ型マイクロプロセッサのデータ転送方法において、ｎ個に分割された前記入力データそれぞれに対して、異なるプロセッサエレメントから入力される複数のデータの選択および転送を行うとともに該複数データの環状シフト演算を行い、そして、前記データ選択および転送と環状シフト演算が行われたデータから任意のデータを選択してビット拡張を行って前記演算回路へ転送することを特徴とするＳＩＭＤ型マイクロプロセッサのデータ転送方法である。
【００２９】
請求項７に記載の発明は、前記入力データに応じて、前記ｎ個の演算回路を単一の演算回路として扱うように転送する第１のモード、前記演算回路をｎ個の演算回路として扱う際に、ｎ個の入力データそれぞれに対して、全て同一転送位置によるデータ選択および転送を行い、全て同一のシフト量による環状シフト演算を行い、そして、複数のデータの選択および転送と前記環状シフト演算がなされた出力データを、前記演算回路に応じて選択する第２のモード、前記演算回路をｎ個の演算回路として扱う際に、ｎ個の入力データそれぞれに対して、それぞれ独立した転送位置によるデータ選択および転送を行い、全て同一のシフト量による環状シフト演算を行い、そして、それぞれ独立した転送位置に応じて、複数のデータの選択および転送と前記環状シフト演算がなされた出力データの各ビットをシフトさせてデータを選択する第３のモード、前記演算回路をｎ個として扱い、ｎ個の前記演算回路それぞれを個別に動作させ転送する第４のモード、から選ばれるいずれかのモードに切り替えることを特徴としている。
【００３０】
請求項８に記載の発明は、請求項７に記載の発明において、前記第１のモードにおいて、ｎ個の入力データそれぞれに対して、全て同一の転送位置によるデータの選択および転送を行い、全て同一シフト量による環状シフト演算を行い、そして、前記シフト量に応じて、複数のデータの選択および転送と前記環状シフト演算がなされた出力データの各ビットをシフトさせてデータを選択することを特徴としている。
【００３３】
請求項９に記載の発明は、請求項７に記載の発明において、前記第４のモードにおいて、ｎ個の入力データそれぞれに対して、独立した転送位置によるデータ選択および転送を行い、独立したシフト量による環状シフト演算を行い、そして、複数のデータの選択および転送と前記環状シフト演算がなされた出力データを、前記演算回路に応じて選択することを特徴としている。
【発明の効果】
【００３４】
請求項１に記載の発明によれば、プロセッサエレメント内にＰＥシフタとＢＩＴシフタとをｎ個のシフタ対として構成し、そのシフタ対の出力から任意のデータを選択し、ビット拡張を行ってｎ個の演算回路へ転送するｎ個のシフトデータ選択回路と、を備えたために、ｎ個の演算回路を１つの演算回路として使用することもｎ個の演算回路として使用することもできるとともに、入力されるデータや処理内容に応じて適切にｎ個の演算回路に処理すべきデータを転送することができ、プロセッサエレメントの回路規模を小さく動作速度を高速にすることができる。
【００３５】
請求項２に記載の発明によれば、制御回路が、４つのモードを有しているので、これらのモードを切り替えて制御することにより入力されるデータや処理内容に応じて適切にｎ個の演算回路に処理すべきデータを転送することができる。また、第２のモードの際には、複数のプロセッサエレメントのｎ個の演算回路において処理するデータを、１つの連続した画素として、プロセッサエレメント数の２倍のプロセッサエレメントを連結して扱うように動作させることができ、第３のモードの際には、複数のプロセッサエレメントのｎ個の演算回路において処理するデータが、連続するデータの中で互いに隣接していてその隣接するデータが同じＰＥ内にある場合でも隣接するＰＥ内にある場合でも適切に演算回路にデータを転送することができる。
【００３６】
請求項３に記載の発明によれば、シフトデータ選択回路が演算回路と一体に設けられているので、演算回路の入力へのバス配線数を削減できるためにプロセッサエレメントの面積を小さくすることができる。
【００３７】
請求項４に記載の発明によれば、ｎ個の演算回路を単一の演算回路として動作させるようにＰＥシフタとＢＩＴシフタおよびシフトデータ選択回路を動作させているので、例えば１画素あたりのデータ量を多くした画像の処理にも対応させることができる。したがって高品質な画像の処理を行うことができる。
【００４０】
請求項５に記載の発明によれば、ｎ個の演算回路をそれぞれ個別の演算回路として動作させるようにＰＥシフタとＢＩＴシフタおよびシフトデータ選択回路を動作させているので、２種類の異なる連続した画素として、プロセッサエレメント内で演算回路を独立して扱うように動作させることができる。
【００４１】
請求項６に記載の発明によれば、ｎ個に分割された前記入力データそれぞれに対して、異なるプロセッサエレメントから入力される複数のデータ選択および転送と、環状シフト演算と、を行い、データ選択および転送と環状シフト演算が行われたデータから任意のデータを選択し、ビット拡張を行って演算回路へ転送しているので、ｎ個の演算回路を１つの演算回路として使用する場合もｎ個の演算回路として使用する場合も従来と同じように演算動作を行えるとともに、入力されるデータや処理内容に応じて適切にｎ個の演算回路に処理すべきデータを転送することができ、また、プロセッサエレメントにおけるデータ処理量を増やすことができる。
【００４２】
請求項７に記載の発明によれば、４つのモードを切り替えて演算回路へ転送しているので、入力されるデータや処理内容に応じて適切にｎ個の演算回路に処理すべきデータを転送することができる。また、第２のモードの際には、複数のプロセッサエレメントのｎ個の演算回路において処理するデータを、１つの連続した画素として、プロセッサエレメント数の２倍のプロセッサエレメントを連結して扱うように動作させることができ、第３のモードの際には、複数のプロセッサエレメントのｎ個の演算回路において処理するデータが、連続するデータの中で互いに隣接していてその隣接するデータが同じＰＥ内にある場合でも隣接するＰＥ内にある場合でも適切に演算回路にデータを転送することができる。
【００４３】
請求項８に記載の発明によれば、ｎ個の演算回路を単一の演算回路として動作させるようにデータの選択および転送と環状シフト演算と演算回路へのデータ転送を行っているので、例えば１画素あたりのデータ量を多くした画像の処理にも対応させることができる。したがって高品質な画像の処理を行うことができる。
【００４６】
請求項９に記載の発明によれば、ｎ個の演算回路をそれぞれ個別の演算回路として動作させるようにデータ選択および転送と環状シフト演算と演算回路へのデータ転送を行っているので、２種類の異なる連続した画素として、プロセッサエレメント内で演算回路を独立して扱うように動作させることができる。
【発明を実施するための最良の形態】
【００４７】
以下、本発明の一実施形態を、図１ないし図６を参照して説明する。図１は、本発明の一実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。図２は、ＰＥを分割しない場合のＰＥ内部のデータ転送の説明図である。図３は、ＰＥを分割した場合でＰＥ間のデータ転送位置が通常のＰＥでのデータ位置へと転送する場合のデータ転送の説明図である。図４は、ＰＥを分割した場合でＰＥ間のデータ転送位置が通常のＰＥでのデータ位置への転送でない場合のデータ転送の説明図である。図５は、ＢＩＴシフタにおけるＡＬＵの入力に対応したビットシフト量を示す表である。図６は、ＰＥシフタに与えられるシフト転送位置に対する各ＰＥシフタの実際のシフト転送位置の対応表である。
【００４８】
図１に示したＳＩＭＤ型マイクロプロセッサは、複数のプロセッサエレメント（ＰＥ）１０と、グローバルプロセッサ２０と、を有している。図１は複数のＰＥ１０のうち、ＰＥ（ｍ）と隣接するＰＥ（ｍ−１）とＰＥ（ｍ＋１）との３ＰＥ分を抜き出して示している。ここで、ｍはＰＥの並びの順序を示す値である。したがって、ＰＥに入力される連続したデータは、ＰＥ（ｍ−１）、ＰＥ（ｍ）、ＰＥ（ｍ＋１）の順序で後述するレジスタ１１に配置される。また、ＰＥ（ｍ）から見てＰＥ（ｍ−１）は下位、ＰＥ（ｍ＋１）は上位に位置するＰＥとなる。
【００４９】
ＰＥ１０は、レジスタ（ＲＥＧ）１１と、シフタ対１２と、シフトデータ選択回路１３と、ＡＬＵ（Ｌ）１４ａと、ＡＬＵ（Ｈ）１４ｂと、を備えている。ＰＥ１０は、２つのレジスタ１１およびＡＬＵ（Ｌ）１４ａとＡＬＵ（Ｈ）１４ｂとを１つのレジスタおよびＡＬＵ１４として動作させることと、それぞれ分割して（２つのレジスタと２つのＡＬＵとして）動作させることができる。すなわち、本実施形態は特許請求の範囲におけるｎを２とした場合の例である。
【００５０】
レジスタ１１は、８ビット幅であり、ＰＥ１０一つ当り二つ備えている。レジスタ１１は、１ワードのレジスタとしても良いし、複数ワード構成としたレジスタファイルとしても良い。
【００５１】
シフタ対１２は、レジスタ１１に対応して２つ設けられ、ＰＥシフタとしてのＰＳＨ１２ａと、ＢＩＴシフタとしてのＢＳＨ１２ｂとを備えている。ＰＳＨ１２ａは、７ｔｏ１（７対１）のマルチプレクサであり、当該ＰＥ１０から３ＰＥ分離れたＰＥ１０までのデータ、つまりＰＥ（ｍ）においてはＰＥ（ｍ−３）、ＰＥ（ｍ−２）、ＰＥ（ｍ−１）、ＰＥ（ｍ＋１）、ＰＥ（ｍ＋２）、ＰＥ（ｍ＋３）からのデータを後述するグローバルプロセッサ２０から制御により選択してＢＳＨ１２ｂに転送している。ＢＳＨ１２ｂは、８ｔｏ１（８対１）のマルチプレクサであり、ビットシフタとして動作し、グローバルプロセッサ２０から与えられるビットシフト量に基づいてビットシフト演算を行って出力する。
【００５２】
シフトデータ選択回路１３は、グローバルプロセッサ２０からの制御によりビット数を８ビットから１６ビットに拡張して、各ビットごとに２つのシフタ対１２の出力および上位ＭＳＢ、下位ＭＳＢ、０から選択してＡＬＵ（Ｌ）１４ａまたはＡＬＵ（Ｈ）１４ｂに出力する。
【００５３】
演算回路としてのＡＬＵ（Ｌ）１４ａおよびＡＬＵ（Ｈ）１４ｂは、算術論理演算回路（Arithmetic and Logic Unit）でありＡＬＵ（Ｌ）１４ａおよびＡＬＵ（Ｈ）１４ｂ各々は１６ビットの演算を行う。また、グローバルプロセッサ２０の制御によりＡＬＵ（Ｌ）１４ａおよびＡＬＵ（Ｈ）１４ｂを１つの３２ビットＡＬＵ１４として動作させることも可能である。その際には下位から上位への情報伝達用の配線（図中の点線）によって桁上げなどの情報が伝達される。３２ビットＡＬＵ１４として動作する場合はＡＬＵ（Ｌ）１４ａが３２ビットの下位１６ビット、ＡＬＵ（Ｈ）１４ｂが３２ビットの上位１６ビットとなる。
【００５４】
グローバルプロセッサ２０は、ＰＥ１０の動作を制御するコントローラであって、プログラムを読み込み実行する独立のプロセッサであり、各種レジスタやプログラム、データを格納するメモリ等が内蔵されている。
【００５５】
上述した構成のＳＩＭＤ型マイクロプロセッサのＰＥ１０は、ＰＥ分割を行わない場合（すなわち、ｎ個の演算回路を単一の演算回路として扱うように制御する第１のモード）、ＰＥ分割を行った場合のＡＬＵ（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂの配列順序が、ＰＥ１０の並びの順序を基本とする場合（すなわち、演算回路をｎ個の演算回路として扱う際に、演算回路の順序を、プロセッサエレメントの並びの順序を基礎とした上で、プロセッサエレメント内における演算回路の並びの順序に従うように制御する第２のモード）、ＰＥ１０内のＡＬＵ１４（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂの並びの順を基本とする場合（演算回路をｎ個の演算回路として扱う際に、演算回路の順序を、プロセッサエレメント内における演算回路の順序を基礎とした上で、プロセッサエレメントの並びの順序に従うように制御する第３のモード）、ＰＥ分割を行った場合にＡＬＵ（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂを個別に動作させる場合（演算回路をｎ個として扱い、ｎ個の演算回路それぞれを個別に動作させる第４のモード）、の４つのモードで動作することができる。以降各モードにおけるＰＥ１０の動作について説明する。
【００５６】
まず、ＰＥ１０の分割を行わない場合（第１のモード）を図２を参照して説明する。図中のＬＬは１６ビットデータの下位８ビットの中で下位側のデータであることを表す。ＬＨは１６ビットデータの下位８ビットの中で上位側のデータであることを表す。ＨＬは１６ビットデータの上位８ビットの中で下位側のデータであることを表す。ＨＨは１６ビットデータの上位８ビットの中で上位側のデータであることを表す。
【００５７】
レジスタ１１はデータ幅が１６ビットのレジスタとして使用され、レジスタ１１では上位８ビット、下位８ビットのデータが１６ビットデータとして同時に読み出される。
【００５８】
レジスタ１１より読み出された上位、下位それぞれの８ビットデータは、対象となるＰＥ１０における上位、下位それぞれのシフタ対１２内のＰＳＨ１２ａに転送され選択される。ここでＰＳＨ１２ａは連続する画素における前後３画素までのデータを参照することを目的としているため、計７ＰＥからの選択としている。ＰＳＨ１２ａはＰＥ分割を想定し、上位、下位に分割して設けているが、ＰＥ分割を行わないで１６ビットのデータ幅を扱う場合には上位、下位共に共通の転送位置からのデータが選択される。図２の例ではレジスタ１１にある各データがＰＳＨ１２ａにより１ＰＥ下位からのデータが選択されて転送される。ここでＰＥシフタは上位８ビット、下位８ビットともに同一の転送位置からの転送（どちらも１ＰＥ下位からのデータが選択されて転送される）であるため、レジスタ１１の１６ビットデータはそのまま対象ＰＥ１０へと転送される。つまり転送位置とはＰＳＨ１２ａが選択する当該ＰＥ１０からの相対的な位置（図２の例では１ＰＥ下位）を示している。
【００５９】
次にＰＳＨ１２ａにより転送されたデータはＢＳＨ１２ｂによりデータのビットシフト演算を行う。本来１６ビットデータを扱う場合には１６ビットでのビットシフト演算が必要となる。しかし本実施形態の回路構成では上位、下位それぞれに対応して設けた８ビットのＢＳＨ１２ｂを用いて、それぞれのＢＳＨ内でビットシフト演算を行っている。このときのビットシフト量は全て同一のビットシフト量となる。また、この場合ＢＳＨ１２ｂでの出力データは、図２に示すように１６ビットシフタを用いてビットシフト演算を行ったものとは異なったデータの並びとなる。図２は算術左シフト演算でビットシフト量が０〜７の場合である。ＰＳＨ１２ａは図２に示すようにビットのローテート（環状シフト）を行うように構成されているので、ＬＬやＨＬがシフトすることで８ビットの範囲から溢れたＬＨやＨＨは下位側に配置される。また、２つのＢＳＨ１２ｂでのビットシフト量は、図５に示すように８ビットおきに共通のビットシフト量が繰り返される。
【００６０】
このように本実施形態ではＰＳＨ１２ａ（ＰＥシフタ）、ＢＳＨ１２ｂ（ＢＩＴシフタ）はそれぞれ８ビットごとに独立して構成した８ビットのシフタ対１２となる。この場合ＰＳＨ１２ａ、ＢＳＨ１２ｂの回路配置の順はどちらが先でもよく、図１とは逆にＢＳＨ１２ｂの方を前段に設けても良い。これはパイプライン化で動作ステージを区切る場合や、フォワディング経路で有効となる配置を選択すれば良い。
【００６１】
次に１６ビットのＡＬＵ（Ｌ）１４ａおよびＡＬＵ（Ｈ）１４ｂは互いに連結し３２ビットＡＬＵとして扱う。各ＡＬＵの前段にはＢＳＨ１２ｂの出力データを取り込み、１６ビット幅に拡張するシフトデータ選択回路１３を設けている。シフトデータ選択回路１３では上位、下位それぞれのＢＳＨ１２ｂからのデータを選択対象としている。したがってＢＳＨ１２ｂの出力データのビット配列は、このシフトデータ選択回路１３で整形されることとなる。なお、符号拡張時の最上位ビット“ＭＳＢ”やゼロ拡張の“０”の選択も同時にシフトデータ選択回路１３で行う。図２の場合は、算術左シフトを行った場合の例であるので、ＡＬＵ（Ｌ）１４ａの入力の１６ビットは、まず下位ビットではビットシフト量以下のデータに対して“０”を選択させる。それから順次シフタ対１２の下位側のデータ（ＬＬ）、上位側のデータ（ＬＨ、ＨＬ）と選択させる。さらにＡＬＵ（Ｈ）１４ｂ側ではビットシフト量以下のデータに対して、シフタ対１２の上位側のデータ（ＨＨ）を選択し、それより上位側の斜線部分のデータに対しては、符号拡張を行うために“ＭＳＢ”を選択させる。このＭＳＢはＨＨのＭＳＢである。ビットシフト量が８〜１６の場合にはこれらがさらに８ビット分左シフトしたような選択を行えば良い。またそれ以上のビットシフト量に対しても同様であるが、ビットシフト量が１６ビットを越える場合には“ＭＳＢ”の選択は不要になる。すなわち、シフトデータ選択回路に対してＢＩＴシフタでのビットシフト量に応じて、ｎ個のシフタ対の出力データの各ビットをシフトさせてデータを選択させている。
【００６２】
次に、ＰＥ１０の分割を行う場合（レジスタのデータ幅が８ビットでＡＬＵ（Ｌ）１４ａとＡＬＵ（Ｈ）１４ｂとを連結しないで個々に１６ビットＡＬＵとして動作させる場合）であって、ＰＥ１０の並びの順序を基礎とする場合（第２のモード）の動作を図３を参照して説明する。
【００６３】
レジスタ１１からは上位８ビット、下位８ビットのデータがそれぞれ独立したデータとして読み出される。レジスタ１１により読み出された上位、下位それぞれの８ビットデータは、上位、下位それぞれのＰＳＨ１２ａ、およびＢＳＨ１２ｂのシフタ対１２へと転送される。図３はＰＥ１０の転送位置が通常のＰＥでのデータ位置へと転送する場合を表しており、レジスタ１１にある各データがＰＳＨ１２ａにより１ＰＥ上位に転送される。次にＢＳＨ１２ｂによりデータのビットシフト演算が行われる。２つのＢＳＨ１２ｂでのビットシフト量は、図５に示したとおり８ビットおきに共通のシフト量が繰り返される。図５の例ではシフト量が０〜７の場合を表している。図３の例では各ＢＳＨ１２ｂは８ビット未満のビットシフト演算が行われるため、ビットシフト演算後のデータは図３中のＢＳＨで示した並びとなる。
【００６４】
ＰＥ１０の並びの順序を基礎とする場合においては、２つの８ビットデータを独立したものとして扱うため、シフタ対１２では相互の干渉なくそれぞれのデータ選択およびビットシフト演算を行うこととなる。ただし、通常のＳＩＭＤ処理を行うには、分割されたＡＬＵ１４（ＡＬＵ（Ｌ）１４ａおよびＡＬＵ（Ｈ）１４ｂ）に対しても、共通の命令により処理を行うため、ＰＳＨ１２ａおよびＢＳＨ１２ｂの転送位置およびビットシフト量は、１６ビットデータの場合と同様、共通となる。すなわち、同一の転送位置による転送を行わせ、同一のシフト量によるビットシフト演算を行わせている。
【００６５】
次にシフトデータ選択回路１３でＡＬＵ１４に必要なデータを取り込む。ＰＥ１０の並びの順序を基礎とする場合では下位側のＡＬＵ（Ｌ）１４ａでは下位側のシフタ対１２のデータを、上位側のＡＬＵ（Ｈ）１４ｂでは上位側のシフタ対１２のデータを選択する。図３は１６ビットデータの場合と同様、ここでは算術左シフトの場合を例に挙げている。
【００６６】
ＡＬＵ（Ｌ）１４ａの下位ビットではビットシフト量以下のデータに対して“０”を選択させる。次にシフタ対１２の下位側のデータを選択する。このときビットシフト演算によって上位下位が反転した状態を元に戻す（上位にＬＨ、下位にＬＬとする）。最後に上位の斜線部分に対しては、符号拡張を行うために下位側シフタ対１２からの“ＭＳＢ”を選択させる（ＬＨのＭＳＢ）。上位側のＡＬＵ（Ｈ）１４ｂも同様である。シフト量以下のデータに対して“０”を選択させる。次にシフタ対１２の上位側のデータを選択する。このときビットシフト演算によって上位下位が反転した状態を元に戻す（上位にＨＨ、下位にＨＬとする）。最後に上位の斜線部分に対しては、符号拡張を行うために上位側シフタ対１２からの“ＭＳＢ”を選択させる（ＬＨのＭＳＢ）。シフト量が８〜１５の場合についても同様に、シフト量以下のデータに対しては“０”を選択させる。次にシフタ対１２の下位側のデータを選択させる。シフト量が８ビット以上の場合には、“ＭＳＢ”の選択は不要になる。すなわち、シフトデータ選択回路に対して対象となるＢＩＴシフタからのデータを選択させている。
【００６７】
次にＡＬＵは１６ビットのものを連結せずＡＬＵ（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂを独立して動作させる。
【００６８】
以上、ＰＥ１０の並びの順序を基礎とする場合の動作について述べたが、２倍のＰＥ１０を連結して扱わず、２種類の異なるものとして扱う場合には、１つのＳＩＭＤ型マイクロプロセッサとして機能させるのではなく、２つのＳＩＭＤ型マイクロプロセッサとして機能させることも可能である。つまりＰＳＨ１２ａおよびＢＳＨ１２ｂの転送位置やビットシフト量は共通にすると先述したが、個別に設定して動作させることも可能である（第４のモード）。ＰＥ１０の並びの順序を基礎とする場合と個別に設定して動作させる場合は、連結部分の処理の違いのみであり、基本的な動作は図３と同様である。
【００６９】
例えば、同一または異なる画像の２ラインに対して同じ処理を施すのが第２のモードであり、同一または異なる画像の２ラインに対して異なる処理を施すのが第４のモードである。
【００７０】
次に、ＰＥ１０の分割を行う場合（レジスタ１１のデータ幅が８ビットでＡＬＵ（Ｌ）１４ａとＡＬＵ（Ｈ）１４ｂとを連結しないで個々に１６ビットＡＬＵとして動作させる場合）であって、ＰＥ１０内のＡＬＵ（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂの並びの順序を基礎とする場合について図４を参照して説明する。このモードにおいては、１つのＰＥ１０で２つの連続した８ビットデータの画素を処理するため、参照する隣接画素が同一ＰＥ１０内であったり、異なるＰＥ１０の異なるデータ位置であったりする。したがって通常のＰＥ１０間の転送のみでは、所望のデータ位置への転送とはならない。
【００７１】
レジスタ１１からは上位８ビット、下位８ビットのデータがそれぞれ独立したデータとして読み出される。レジスタ１１により読み出された上位、下位それぞれの８ビットデータは、上位、下位それぞれのＰＳＨ１２ａ、およびＢＳＨ１２ｂのシフタ対１２へと転送される。
【００７２】
ＰＳＨ１２ａではそれぞれの８ビットデータの、転送されるべきＰＥ１０の位置を考慮して転送位置を決める。つまり上位と下位は別々の転送位置になることもある。図６はＰＥ間のデータ転送における上位側のＰＳＨ、下位側のＰＳＨそれぞれの転送位置を示している。なお、転送位置の-３，−２，−１，０，１，２，３は全モード共通の転送位置であるが、−１．５，−０．５，０．５，１．５がこのＰＥ１０内のＡＬＵの並びの順を基本とするモード特有の転送位置である。つまり０．５ＰＥが隣の８ビット画素を示しており、１ＰＥ先は２個隣の画素を表している。したがって±１．５ＰＥは３画素前後を示しており、±２．５ＰＥは５画素前後を示している。±２．５ＰＥの場合は条件外であるが転送可能であることを表している。
【００７３】
図４は０．５ＰＥ転送の場合の例である。図６より上位側のＰＳＨ１２ａは１ＰＥ上位へと転送するが下位側のＰＳＨ１２ａは同一のＰＥ１０内へと転送する。この状態でＰＥ１０内のデータの配列の順は正確ではなく、各ＰＥ１０内で上位８ビットのデータと下位８ビットのデータが逆（スワップした状態）になっている。すなわち、ｎ個のＰＥシフタに対してそれぞれ独立した転送位置による転送を行わせている。
【００７４】
次にＢＳＨ１２ｂでのビットシフト演算を上位、下位それぞれのデータに対して行う。このときのビットシフト量は全て同一のビットシフト量となる。図４の例ではシフト量が０〜７の場合を表している。ビットシフト演算に関してはＡＬＵ１４の順序に関わらず共通であり、ＰＳＨ１２ａにより転送されたデータをそのままビットシフト演算する。各ＢＳＨ１２ｂでは８ビット未満のビットシフト演算が行われるため、ビットシフト演算後のデータは図中のＢＳＨ１２ｂで示した並びとなる。この段階でのデータの並びはまだスワップされたままである。シフタ対１２では、ＰＳＨ１２ａでのスワップされたデータの並びがそのままの状態でシフトデータ選択回路１３へと転送される。
【００７５】
次にシフトデータ選択回路１３でＡＬＵ１４に必要なデータを取り込む。ここでスワップされたデータを入れ替えることになる。つまり下位側のＡＬＵ（Ｌ）１４ａでは上位側のシフタ対１２のデータを、上位側のＡＬＵ（Ｈ）１４ｂでは下位側のシフタ対１２のデータを選択する。
【００７６】
図４は算術左シフトの場合であり、ＡＬＵ（Ｌ）１４ａの下位ビットではシフト量以下のデータに対して“０”を選択させる。次にシフタ対１２の上位側のデータを選択する。最後に上位の斜線部分に対しては、符号拡張を行うために上位側シフタ対１２からの“ＭＳＢ”を選択させる（ＨＨのＭＳＢ）。上位側のＡＬＵ（Ｈ）１４ｂも同様である。シフト量以下のデータに対して“０”を選択させる。次にシフタ対１２の下位側のデータを選択する。最後に上位の斜線部分に対しては、符号拡張を行うために下位側シフタ対１２からの“ＭＳＢ”を選択させる（ＬＨのＭＳＢ）。シフト量が８〜１５の場合についても同様である。すなわち、シフトデータ選択回路に対してそれぞれＰＥシフタでの転送位置に応じて、ｎ個のシフタ対の出力データの各ビットをシフトさせてデータを選択させている。
【００７７】
このように０．５ＰＥ転送（ハーフＰＥ転送）が必要なＡＬＵ（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂの並びに対しても、シフトデータ選択回路１３の選択データを切り替えるだけで、新たな回路を追加することなく実現できる。なお整数のＰＥ間転送を行う場合においては、シフトデータ選択回路１３の選択データの切替えを行わない。つまり前述したＰＥ１０の並びの順を基本とする場合と同様の動作を行うこととなる。
【００７８】
以上ＰＥ１０内のＡＬＵを分割する（複数のＡＬＵを独立して動作させる）場合の、ＡＬＵが２つの例を説明したが、さらにＰＥ１０内のＡＬＵの数が増える場合も同様の構成が可能である。例えばＡＬＵが４つの場合ではシフタ対１２が４セット用意されればよく、ＰＥ１０の並びの順を基本とする場合やＰＥ１０内の並びの順を基本とする場合などのモードに合わせてシフトデータ選択回路１３の選択するためのデータを切り替えれば、同様に動作させることができる。
【００７９】
ここで図８および図９に示した従来例との比較を行う。
【００８０】
本実施形態のＰＳＨ１２ａは７ｔｏ１のマルチプレクサのみであるが、従来例の図８では後段に２ｔｏ１のスイッチ回路（マルチプレクサ）を追加し、図９では１１ｔｏ１のマルチプレクサが使われている。１６ビットデータを扱う場合のＰＳＨ１２ａの出力データはいずれも同じであるが、回路構成は本実施形態の回路構成の方が容易で回路規模が小さく構成することができる。
【００８１】
次に本発明のＢＳＨ１２ｂは８ｔｏ１のマルチプレクサのみで構成されているが、従来例では１６ｔｏ１のマルチプレクサと、さらに２ｔｏ１マルチプレクサを必要としている。本実施形態の回路では後段にシフトデータ選択回路１３を設けているため、動作速度的にはほぼ同等となるが、回路規模は１６ｔｏ１のマルチプレクサを搭載しないため明らかに小さくなる。
【００８２】
次にＰＥの分割を行わない通常の１６ビットデータのみを対象としたＳＩＭＤ型マイクロプロセッサ、すなわち、レジスタが１６ビット幅であって、ＡＬＵが３２ビット幅が１つというＰＥの構成をしたＳＩＭＤ型マイクロプロセッサとの比較を行う。
【００８３】
ＰＳＨはいずれも７ｔｏ１のマルチプレクサであり、回路規模としては同等である。
【００８４】
ＢＳＨは本実施形態の回路は８ｔｏ１のマルチプレクサ、従来のものは１６ｔｏ１のマルチプレクサとなり、これにシフトデータ選択回路１３に相当する部分が加わる。本実施形態では、“上位データ”、“下位データ”、“上位ＭＳＢ”、“下位ＭＳＢ”、“０”の５ｔｏ１のマルチプレクサとなる。これに対して、従来の１６ビットデータのみを対象としたＳＩＭＤ型マイクロプロセッサでは“データ”、“ＭＳＢ”、“０”の３ｔｏ１のマルチプレクサとなる。したがって本発明の回路構成では８ｔｏ１＋５ｔｏ１のマルチプレクサ、従来の１６ビットを対象としたＳＩＭＤ型マイクロプロセッサでは１６ｔｏ１＋３ｔｏ１のマルチプレクサとなり、回路規模としては同等かやや優れていると言える。
【００８５】
このように本実施形態のＳＩＭＤ型マイクロプロセッサでは、従来の分割型のＳＩＭＤ型マイクロプロセッサに比べて回路規模、動作速度ともに向上しており、また分割を行わないＳＩＭＤ型マイクロプロセッサに対しても同等の性能とすることができる。
【００８６】
なお、図７は図１の別の構成例でありシフトデータ選択回路１３をＡＬＵ１４に内蔵している（一体に設けられている）。図７のようにシフトデータ選択回路１３をＡＬＵ１４側に内蔵すれば、バスの配線数を削減できるという効果がある。ＳＩＭＤ型マイクロプロセッサのように多くのＰＥ１０を並べるような回路では、１ＰＥあたりのセルサイズにも制約が生じるため、配線数の削減による効果は大きい。
【００８７】
本実施形態によれば、ＳＩＭＤ型マイクロプロセッサのＰＥ１０において、ＡＬＵ１４がＡＬＵ（Ｌ）１４ａ、ＡＬＵ（Ｈ）１４ｂと２つに分割して動作させることが可能な構成になっているときに、各ＡＬＵ１４に対応したＰＳＨ１２ａとＢＳＨ１２ｂとから構成されシフタ対１２を２つ備えるとともに、シフタ対１２から出力されたデータを選択およびビット拡張を行うシフトデータ選択回路１３を備えたので、従来のＡＬＵを分割して動作させることが可能なＳＩＭＤ型マイクロプロセッサと比べて回路規模を小さくすることができる。
【００８８】
また、ＰＥ１０が、２つのＡＬＵを独立して動作させたり、１つのＡＬＵとして動作させたりすることができるので、１画素のビット数が多い高画質の画像の処理を行うことができるとともに、１画素のビット数を半分にしてその代わりに２倍の画素の処理を行うことができる。
【００８９】
なお、本発明は上記実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【図面の簡単な説明】
【００９０】
【図１】本発明の一実施形態にかかるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図２】ＰＥを分割しない場合のＰＥ内部のデータ転送の説明図である。
【図３】ＰＥを分割した場合でＰＥ間のデータ転送位置が通常のＰＥでのデータ位置へと転送する場合のデータ転送の説明図である。
【図４】ＰＥを分割した場合でＰＥ間のデータ転送位置が通常のＰＥでのデータ位置への転送でない場合のデータ転送の説明図である。
【図５】ＢＩＴシフタにおけるＡＬＵの入力に対応したビットシフト量を示す表である。
【図６】ＰＥシフタに与えられるシフト転送位置に対する各ＰＥシフタの実際のシフト転送量対応表である。
【図７】図１の示されたＳＩＭＤ型マイクロプロセッサのブロック図である。
【図８】従来技術におけるＳＩＭＤ型マイクロプロセッサのブロック図である。
【図９】従来技術におけるＳＩＭＤ型マイクロプロセッサのブロック図である。
【符号の説明】
【００９１】
１０    ＰＥ（プロセッサエレメント）
１１    レジスタ
１２    シフタ対
１２ａ  ＰＳＨ（ＰＥシフタ）
１２ｂ  ＢＳＨ（ＢＩＴシフタ）
１３    シフトデータ選択回路
１４ａ  ＡＬＵ（Ｌ）（演算回路）
１４ｂ  ＡＬＵ（Ｈ）（演算回路）
【図１】
0004690362.tif 000002
【図２】
0004690362.tif 000003
【図３】
0004690362.tif 000004
【図４】
0004690362.tif 000005
【図５】
0004690362.tif 000006
【図６】
0004690362.tif 000007
【図７】
0004690362.tif 000008
【図８】
0004690362.tif 000009
【図９】
0004690362.tif 000010