(57)【要約】【課題】回路規模や配線資源の増加を軽減した簡易な構成で処理速度及び処理の並列度を向上させることができ、かつ、演算精度を損なうことない信号処理プロセッサを提供する。【解決手段】演算対象データを入力して演算するＰＥ７−１〜７−６４０と、演算対象データを１つのＰＥ毎に分配するか若しくは複数のＰＥ毎に分配するかを切り替えるバスセレクタ５−１〜５−３２０及びセレクタ６−１〜６−３２０と、演算対象データを１つのＰＥ毎に演算する処理と複数のＰＥ毎に演算する処理とを切り替える命令コントローラ１とを備える。【選択図】図１
2007172528.tif 000002
【特許請求の範囲】
【請求項１】
演算対象データを入力して演算するプロセッサエレメントと、
前記演算対象データを１つのプロセッサエレメント毎に分配するか若しくは複数のプロセッサエレメント毎に分配するかを切り替える切替手段と、
前記プロセッサエレメント及び前記切替手段の動作を制御して、前記演算対象データを１つのプロセッサエレメント毎に演算する処理と複数のプロセッサエレメント毎に演算する処理とを切り替える制御手段とを備えた信号処理プロセッサ。
【請求項２】
切替手段は、演算対象データをプロセッサエレメントの演算可能ビット数に応じて分割し、前記分割データを１つのプロセッサエレメント毎に分配するか若しくは複数のプロセッサエレメント毎に分配するかを切り替え、
前記プロセッサエレメントは、前記分割データを複数のプロセッサエレメント毎に演算するにあたり、演算結果の桁上がりをフラグ情報としてプロセッサエレメント間でやり取りするフラグ情報伝送路を備えたことを特徴とする請求項１記載の信号処理プロセッサ。
【請求項３】
制御手段からの動作制御命令を同時に実行させるプロセッサエレメント毎に伝送する命令伝送路を備えたことを特徴とする請求項１記載の信号処理プロセッサ。
【請求項４】
プロセッサエレメントは、演算対象データを格納するデータ格納手段と、演算対象の入力データ及び他のプロセッサエレメントの前記データ格納手段の格納データのうちのいずれか一方を選択するＰＥ内選択手段とを備えたことを特徴とする請求項１記載の信号処理プロセッサ。
【請求項５】
撮像対象を撮影して撮像信号を得る撮像手段と、
前記撮像手段からの撮像信号を記憶する記憶手段と、
前記撮像手段からの撮像信号と前記記憶手段に記憶された撮像信号とを入力し、これら撮像信号のうちのいずれか一方を選択する選択手段と、
前記撮像信号を演算対象データとして入力して演算する請求項１から請求項４のうちのいずれか１項記載の信号処理プロセッサと、
前記選択手段及び前記信号処理プロセッサの動作を制御して、前記演算対象データを１つのプロセッサエレメント毎に演算する処理と複数のプロセッサエレメント毎に演算する処理とを切り替える装置制御手段とを備えた撮像装置。
【請求項６】
装置制御手段は、選択手段が撮像手段からの撮像信号を選択する場合、前記撮像信号である演算対象データを１つのプロセッサエレメント毎に演算すべく信号処理プロセッサの動作を制御し、前記選択手段が記憶手段に記憶された撮像信号を選択する場合、前記撮像信号である演算対象データを複数のプロセッサエレメント毎に演算すべく前記信号処理プロセッサの動作を制御することを特徴とする請求項５記載の撮像装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、データを処理する並列型の処理プロセッサに係り、特にデジタルスチルカメラやデジタルビデオカメラ、顕微鏡等に利用する信号処理プロセッサ及びこれを用いた撮像装置に関するものである。
【背景技術】
【０００２】
四則演算や論理演算を行う演算装置（Arithmetic Logic Unit）（以下、ＡＬＵと称す）と、演算装置からの演算結果を一時記憶しておくメモリ等から構成されるプロセッサエレメント（以下、ＰＥと称す）を複数有したＳＩＭＤ（Single Instruction Multiple Data）装置は、単一命令で多数のデータの処理が可能である。その動作は、処理すべきデータをシリアル−パラレル変換した後、ＰＥ内部のＡＬＵで演算を行い、その演算結果をＰＥ内部のメモリに格納しながら所望の演算を行っている。
【０００３】
このＳＩＭＤ方式のプロセッサでは、演算命令（プログラム）等を自在に書き換えることが可能であるため、同一処理を特定用途向け集積回路で達成するよりも柔軟なデータ処理を行えることが利点に挙げられる。現在、デジタルスチルカメラ等の撮像装置が有する機能の高性能化が進んでおり、これに伴って画像データの処理の複雑化が進んでいる。他方、処理の複雑化に反して、演算の速度を向上させなければ、処理プロセッサとして成立しないという相反した性能が求められている。
【０００４】
従来の処理プロセッサとしては、処理すべきデータをシリアル−パラレル変換した後、１入力データを１つのＰＥによって演算処理を行うものが提案されている（例えば、特許文献１参照）。
【０００５】
【特許文献１】特開平８−２３５１２９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述したように、従来の技術では、１データに対し、１つのＰＥでしか演算処理を行うことができない。このため、演算処理が複雑になればなるほど、また処理すべきデータ幅が多ければ多いほど処理時間がかかってしまい処理速度の向上に限界を与えていた。
【０００７】
さらに、複雑な演算において、演算途中で得られるデータ量（ビット幅）が多い場合、ＰＥ内部の有限資源であるメモリやレジスタの格納量を超えてしまい、所望の演算処理を得ることができなかったり、演算途中で一旦他の外部メモリ等に退避させてから再度演算を行うなど、処理速度が極端に遅くなる場合があるという問題があった。
【０００８】
この発明は、上記のような問題点を解消するためになされたもので、回路規模や配線資源の増加を軽減した簡易な構成で処理速度及び処理の並列度を向上させることができ、かつ、演算精度を損なうことない信号処理プロセッサ及びこれを用いた撮像装置を得ることを目的とする。
【課題を解決するための手段】
【０００９】
この発明に係る信号処理プロセッサは、演算対象データを入力して演算するプロセッサエレメントと、演算対象データを１つのプロセッサエレメント毎に分配するか若しくは複数のプロセッサエレメント毎に分配するかを切り替える切替手段と、プロセッサエレメント及び切替手段の動作を制御して、演算対象データを１つのプロセッサエレメント毎に演算する処理と複数のプロセッサエレメント毎に演算する処理とを切り替える制御手段とを備えるものである。
【発明の効果】
【００１０】
この発明によれば、処理目的に応じて演算対象データを１つのプロセッサエレメント毎に演算するか又は複数のプロセッサエレメント毎に演算するかを適宜切り替えることにより、回路規模や配線資源の増加を軽減した簡易な構成で、かつ演算に係る処理速度及び処理の並列度を向上させることができるという効果がある。
【発明を実施するための最良の形態】
【００１１】
実施の形態１．
図１は、この発明の実施の形態１による信号処理プロセッサの構成を示すブロック図であり、６４０個のＰＥを設け、１つの入力データを１つのＰＥまたは２つのＰＥによる演算処理を行えるように構成した信号処理プロセッサの一例を示している。一般的に、ＣＣＤ（Charge-Coupled Devices）等の撮像素子から出力されて信号処理プロセッサで処理されるべき入力データは、１０ビットから１６ビット程度であるが、本実施の形態では説明の簡便のため、入力データを４ビット、ＰＥの演算精度１ビットとして説明する。
【００１２】
図１において、命令コントローラ（制御手段）１は、処理プログラムを収納する図示しないＲＡＭやＲＯＭや、プログラムカウンタなどを備え、処理プログラムを実行することにより出力される命令データに従って各ＰＥ７−１〜７−６４０の演算処理内容及びその動作などが制御される。これにより、本実施の形態１による信号処理プロセッサ全体の動作が制御される。動作コントローラ２は、入力バッファであるシリアル−パラレルデータ変換を行う６４０段分の入力シフトレジスタ３と、出力バッファであるパラレル−シリアルデータ変換を行う６４０段のデータラッチを有した出力シフトレジスタ４の動作を制御する。
【００１３】
バスセレクタ（切替手段）５−１〜５−３２０は、入力シフトレジスタ３の出力ポートに接続されており、例えばバスセレクタ５−１には入力シフトレジスタ３の出力ポートＯｕｔ１，Ｏｕｔ２が接続されるよう設けられている。このバスセレクタ５−１〜５−３２０の詳細な構成は、後述する図２を用いて説明する。セレクタ（切替手段）６−１〜６−３２０は、命令コントローラ１の指令に基づいてバスセレクタ５−１〜５−３２０の出力結果を選択し、選択した出力結果を対をなす片方のＰＥへ出力する。
【００１４】
ＰＥ７−１〜７−６４０には、命令コントローラ１からの命令データの伝送路である命令バス９がそれぞれのＰＥに等しく接続されており、命令バス９を介した命令コントローラ１からの制御により所定の演算動作を行う。なお、ＰＥ７−１，７−３，・・・，７−６３９の奇数番目のＰＥには、それぞれ入力シフトレジスタ３の奇数番目の出力ポートＯｕｔ１，Ｏｕｔ３，・・・，Ｏｕｔ６３９が接続されている。また、ＰＥ７−２，７−４，・・・，の偶数番目のＰＥには、それぞれセレクタ６−１，６−２，・・・，６−３２０の出力が接続されている。
【００１５】
また、各ＰＥ７−１〜７−６４０は、隣接するＰＥ間でのデータのやり取り（例えば、データの移動やコピー動作）を可能とするために、図中の左右方向にデータバスを介して接続されている。さらに、隣接するＰＥ同士による一対のＰＥ単位（ＰＥ７−１とＰＥ７−２、ＰＥ７−３とＰＥ７−４，・・・，ＰＥ７−６３９とＰＥ７−６４０）で演算結果のキャリーやボロー等の符号データを含むフラグ情報を通信可能とするために、隣接するＰＥ間にフラグ信号バス（フラグ情報伝送路）８−１〜８−３２０を設けている。各ＰＥ７−１〜７−６４０の出力は、それぞれ出力シフトレジスタ４に接続される。
【００１６】
図２は、図１中のバスセレクタの構成を示すブロック図であり、この図を用いてバスセレクタ５−１〜５−３２０を説明する。なお、バスセレクタ５−１〜５−３２０は同一構成となっており、ここではバスセレクタ５−１についての実施の形態を示す。図２において、セレクタ１０−１〜１０−３は、４ビットデータから１ビットデータを選択する手段でありそれぞれ同一構成を有している。
【００１７】
このセレクタは、図示しないデコーダを内蔵しており、命令コントローラ１からの選択信号が「０」のときに、ＬＳＢ（Least Significant Bit）側の１ビットデータ信号を選択して出力する。同様に選択信号が「１」のときにＬＳＢ側から２番目の１ビットデータ信号を選択する。選択信号が「２」のときにＬＳＢ側から３番目の１ビットデータ信号が選択される。
【００１８】
ＭＳＢ（Most Significant Bit）の１ビットデータが選択されるのは、選択信号が「３」のときである。この選択信号は命令コントローラ１より出力される。命令コントローラ１の選択信号は、セレクタ１０−１及び１０−３に接続されている。セレクタ１０−２には、オフセット回路１１によってデジタル値「１」が加算された選択信号が入力される。従って、選択信号「０」の場合、セレクタ１０−１とセレクタ１０−３とが、ＬＳＢの１ビット信号を選択しているのに対し、セレクタ１０−２では、ＬＳＢから２番目の１ビット信号を選択するように構成されている。
【００１９】
また、セレクタ１０−１とセレクタ１０−２には、入力シフトレジスタ３の出力ポートＯｕｔ１からのデータが入力され、セレクタ１０−１とセレクタ１０−２の出力は、ＰＥ７−１とセレクタ６−１のＳＢ端子にそれぞれ接続されている。セレクタ１０−３には、入力シフトレジスタ３の出力ポートＯｕｔ２からのデータが入力され、セレクタ１０−３の出力は、セレクタ６−１のＳＡ端子に入力する構成になっている。
【００２０】
図３は、図１中のＰＥの構成を示すブロック図であり、この図を用いてＰＥ７−１〜７−６４０の構成について説明する。なお、ＰＥ７−１〜７−６４０は、各々同一構成となっている。制御部１５は、命令コントローラ１から命令バス９を介して入力される命令データをデコードして、ＰＥ内部の全ての機能を制御する。ＡＬＵ１６は、加算等の数値演算や倫理和等の論理演算やデータシフト等を行う１ビットの演算手段である。ＡＬＵ１６には、演算処理に生じたキャリーなどのフラグを入力するフラグ入力ポート及びフラグを出力するためのフラグ出力ポートを設けている。
【００２１】
フラグレジスタ１７は、ＡＬＵ１６から出力されたフラグ情報を保持したり、或いはＡＬＵ１６のフラグ入力ポートへ出力するフラグ情報を保持する。このフラグレジスタ１７に保持される情報は、ゲート回路１８を介した通信により隣接する対の一方のＰＥから読み出しや書き込みが可能な構成となっている。レジスタ１９は汎用レジスタであり、命令データに含まれる、入力データに対する加算などに用いる係数等が格納される。
【００２２】
メモリ２０は、レジスタ群若しくはＲＡＭ等によって構成される記憶部であり、入力データを格納しておく他、ＡＬＵ１６の演算結果を格納する。ＡＬＵ１６とレジスタ１９はデータバスを介して相互にデータのやり取りが可能である。また、メモリ２０は、メモリバスを介してデータバスと接続しており、ＡＬＵ１６やレジスタ１９とのデータ通信が可能である。ＡＬＵ１６に対する加算等の演算命令は、制御部１５からの演算選択信号によって行われ、同様に、フラグレジスタ１７やゲート回路１８の動作、レジスタ１９へのアクセス、及びメモリ２０の任意のアドレスへのデータリード／ライト制御も制御部１５から制御指令に従って行われる。
【００２３】
次に動作について説明する。
先ず、１つの入力データを１つのＰＥで処理する場合について説明する。
命令コントローラ１に所望の処理プログラムを予め格納しておく。この際、処理プログラム中に１つの入力データを１つのＰＥで処理する命令データを書き込んでおく。命令コントローラ１からは、この命令に従ってセレクタ６−１〜６−３２０をＳＢ端子側に選択するように切替信号を出力する。このとき、図３に示すゲート回路１８により、フラグ情報の入出力が他のＰＥへ通信できないように抑止しておく。
【００２４】
図示しない信号処理プロセッサ外部の装置からシリアルに転送される入力データは、入力シフトレジスタ３でシリアル−パラレル変換される。
図４は、１つの入力データを１つのＰＥで演算処理する場合における入力シフトレジスタのデータ記憶のタイミングチャートであり、時刻ｔｃ１から時刻ｔｃ５へ時間が進んでいくものとする。図４に示すタイミングチャートによると、動作コントローラ２からの転送クロック（若しくは、転送イネーブル信号でもよい）が入力シフトレジスタ３に入力されると、時刻ｔｓ１においてはデータＤ１が、時刻ｔｓ２においてはデータＤ２とデータＤ１が、そのシフト動作により、入力シフトレジスタ３内部の不図示のレジスタに順次転送される。
【００２５】
これを繰り返し、時刻ｔｓ６４０において処理すべき入力データ６４０個がシフト動作を完了した時点で、動作コントローラ２は、転送クロックの出力を止める。これにより、データＤ６４０が入力シフトレジスタ３の出力ポートＯｕｔ１から、データＤ６３９が出力ポートＯｕｔ２から、・・・、データＤ１が出力ポートＯｕｔ６４０からというように、入力シフトレジスタ３の出力ポートから全てのデータが並列に出力される。このようなシリアル−パラレル変換により並列化された出力データは、同一タイミングでデータＤ６４０がＰＥ７−１に入力し、データＤ６３９がセレクタ６−２のＳＢ端子に入力し、・・・、データＤ６３９がＰＥ７−６３９に入力し、データＤ１がセレクタ６−６４０のＳＢ端子に入力される。
【００２６】
始めに、ＬＳＢ側のデータから演算を行う。命令コントローラ１からは、バスセレクタ５−１〜５−３２０に選択信号「０」を与える。すると、バスセレクタ５−１〜５−３２０からデータＤ６４０〜Ｄ１のＬＳＢの１ビットデータが各ＰＥ７−１〜７−６４０に与えられ、メモリ２０に格納される。
【００２７】
ここで、例えば各入力データに係数値「９」を加算する演算について説明する。
先ず、命令コントローラ１から命令バス９を介して各ＰＥ内のレジスタ１９に係数値「９」を格納する。なお、係数値「９」のＬＳＢ値「１」を格納してもよい。制御部１５は、フラグレジスタ１７を初期化しておく。
【００２８】
次に、メモリ２０から上記入力データにおけるＬＳＢの１ビットデータを、データバス及びメモリバスを介してＡＬＵ１６に入力し、レジスタ１９から加算する係数値「９」のＬＳＢの１ビットデータを、データバス及びメモリバスを介してＡＬＵ１６に入力する。この際、加算命令は、制御部１５が命令データから解釈し、ＡＬＵ１６が加算動作となるように制御する。ＡＬＵ１６は、入力データのＬＳＢの１ビット値と、係数値のＬＳＢの１ビット値及びフラグレジスタ１７の値とを加算する。この演算結果はメモリ２０に収納される。これと共にＡＬＵ１６のフラグ出力ポートからキャリー（桁上がり）に相当するフラグ情報が出力され、フラグレジスタ１７に格納される。
【００２９】
続いて、命令コントローラ１は、命令バスを介してバスセレクタ５−１に選択信号「１」を出力し、ＬＳＢから２番目のデータを各ＰＥに入力するように制御し、ＬＳＢから２番目のデータを各ＰＥ内部のメモリ２０に収納する。各ＰＥ内部では、ＬＳＢから２番目のデータを入力データとしてメモリ２０から読み出し、上記と同様にＡＬＵ１６によって、この入力データにおけるＬＳＢから２番目のビット値と、レジスタ１９からの係数値におけるＬＳＢから２番目のビット値及びフラグレジスタ１７の値とを加算し、ＬＳＢから２番目の演算結果を得る。
【００３０】
上述した動作をＭＳＢのデータ演算が終わるまで同様に繰り返すことで、各入力データに係数値「９」を加算した結果を得ることができる。なお、ＭＳＢの演算終了後、フラグレジスタ１７のデータを出力するため、制御部１５では、入力データを「０」、レジスタデータを「０」と仮想したダミー加算を行う。これにより、桁上がりに対応することができる。
【００３１】
また、ＭＳＢビットの演算終了の際に、フラグレジスタ１７を参照し、その内容がデジタル値「０」か「１」かの条件判断をして、フラグレジスタ１７の内容がデジタル値「１」であれば、桁上がりと判定して結果を「１」とすることも可能である。しかし、前記の方法が動作フローとして同一処理で処理可能なため演算処理方法、即ちプログラム生成としてはより好ましい。
【００３２】
図５は、１つの入力データを１つのＰＥで演算処理する場合を説明するための図であり、この図を用いて、上述した一連の演算動作を詳細に説明する。図５では、１つのＰＥ内部に着目し（例えば、ＰＥ７−１）、入力データが「１１（１０進数）」の場合における、処理時刻と、レジスタ１９のデータ、フラグレジスタ１７（この場合はキャリー）の遷移関係、演算結果及びメモリ２０のアドレスを示したものである。図中の四角内は入力データやレジスタの１ビット毎の数値を示している。また、時刻ｔｃ１から時刻ｔｃ５へ時間が進んでいくものとする。
【００３３】
時刻ｔｃ１において、ＡＬＵ１６は、メモリ２０からの入力データ「１１（＝１０１１）」におけるＬＳＢ値「１」と、レジスタ１９からの係数値「９（＝１００１）」のＬＳＢ値「１」及びフラグレジスタ１７の初期値「０」との加算を行う。この演算によりビット値「１」が桁上がりし、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がメモリ２０のアドレス０に格納される。桁上がりが生じたので、ＡＬＵ１６のフラグ出力ポートから出力されたキャリー（桁上がり）に相当するフラグ情報をフラグレジスタ１７に格納する。これにより、フラグレジスタ１７の値は初期値「０」から「１」へ遷移する。
【００３４】
次のステップである時刻ｔｃ２において、ＡＬＵ１６は、メモリ２０からの入力データにおけるＬＳＢから２番目のビット値「１」と、レジスタ１９からの係数値のＬＳＢから２番目のビット値「０」及びフラグレジスタ１７の値「１」との加算を行う。この演算によりビット値「１」が桁上がりし、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がメモリ２０のアドレス１に格納される。また、フラグレジスタ１７は、前回の桁上がりによる「１」が設定されているので、フラグレジスタ１７の値「１」はこのまま次の演算用に保持される。
【００３５】
時刻ｔｃ３では、ＡＬＵ１６が、メモリ２０からの入力データにおけるＬＳＢから３番目のビット値「０」と、レジスタ１９からの係数値のＬＳＢから３番目のビット値「０」及びフラグレジスタ１７の値「１」との加算を行う。この演算では桁上がりが生じず、ＰＥの処理ビット数に対応する１ビット目のみのビット値「１」が演算結果として得られ、この値がメモリ２０のアドレス２に格納される。また、桁上がりが生じなかったので、ビット値「０」がフラグ情報としてＡＬＵ１６のフラグ出力ポートから出力され、フラグレジスタ１７に格納される。これにより、フラグレジスタ１７の値は「１」から「０」へ遷移する。
【００３６】
時刻ｔｃ４において、ＡＬＵ１７が、メモリ２０からの入力データにおけるＬＳＢから４番目のビット値「１」と、レジスタ１９からの係数値のＬＳＢから４番目のビット値「１」及びフラグレジスタ１７の値「０」との加算を行う。この演算によりビット値「１」が桁上がりし、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がメモリ２０のアドレス３に格納される。このとき、桁上がりが生じたので、ＡＬＵ１６のフラグ出力ポートから出力されたキャリー（桁上がり）に相当するフラグ情報をフラグレジスタ１７に格納する。これにより、フラグレジスタ１７は「０」から「１」へ遷移する。
【００３７】
時刻ｔｃ５においては、制御部１５からＡＬＵ１６に対し、メモリ２０の入力データ及びレジスタ１９のレジスタデータを「０」とする加算を行うようにダミー加算処理を行い、フラグレジスタ１７内のキャリー「１」を検算結果としてメモリ２０にアドレス４に格納する。
【００３８】
上述のようにして、全ビットの演算が終了すると、メモリ２０内部には、命令コントローラ１のプログラムに従った演算結果が格納されている。演算が終了した時点で命令コントローラ１は、メモリ２０から出力シフトレジスタ４に出力命令を送出する。動作コントローラ２は、全ての演算結果が出力シフトレジスタ４に出力されたのを受け、出力シフトレジスタ４に転送クロックを出力する。ＰＥ７−６４０で演算処理されたデータＤ１から順次出力される。ＰＥ７−１により演算されたデータＤ６４０が出力シフトレジスタ４に出力されて、信号処理プロセッサによる一連の処理動作を終了する。
【００３９】
次に、１つの入力データを２つのＰＥによって並列処理する場合について説明する。
命令コントローラ１に所望の処理プログラムを予め格納しておく。この際、処理プログラム中に１入力データを２ＰＥで処理する命令データを書き込んでおく。さらに、２ビットの演算を前提にした処理プログラムを作成しておく。若しくは、命令コントローラ２によって自動的に１ビット演算処理を２ビット演算処理に変換する機能を持たせても良い。命令コントローラ１からは、この命令に従ってセレクタ６−１〜６−３２０をＳＡ端子側に選択するように切替信号が出力される。また、図３中のゲート回路１８を開けておき、フラグレジスタ１７のフラグ情報が対となるＰＥと受け渡しが可能な状態にしておく。
【００４０】
図６は、１つの入力データを２つのＰＥで演算処理する場合における入力シフトレジスタのデータ記憶のタイミングチャートであり、時刻ｔｓ１から時刻ｔｓ６３９＋ａへ時間が進んでいくものとする。図６において、動作コントローラ２からの転送クロックが入力シフトレジスタ３に入力され、入力シフトレジスタ３内部の不図示のレジスタへ順次転送されていく動作は、前述した動作と同様である。時刻ｔｓ６３９において、動作コントローラ２は、転送クロックの出力を停止する。従って、データＤ１が出力ポートＯｕｔ６３９から出力され、以降順に奇数番目のデータが奇数番目の出力ポートから出力されていき、データＤ６３７が出力ポートＯｕｔ３から出力され、データＤ６３９が出力ポートＯｕｔ１から出力される。
【００４１】
ここで、前述した演算動作例と同様に、各入力データに係数値「９」を加算する演算について説明する。命令バス９を介して各ＰＥのＡＬＵ１６が加算動作となるように制御される動作は、上述の１つのＰＥの場合と同様である。以降、出力ポートＯｕｔ１から出力されるデータＤ６３９に着目して以下説明するが、他のデータについても同様である。
【００４２】
先ず、ＬＳＢ側のビット値から演算を行う。命令コントローラ１は、バスセレクタ５−１に選択信号「０」を与える。すると、バスセレクタ５−１からはデータＤ６３９のＬＳＢデータがＰＥ７−１与えられる。他方で、ＰＥ７−２に与えられるデータは、図２に示したオフセット回路１１の動作により、データＤ６３９のＬＳＢから２番目のデータである。この計２ビットの入力データを、対を構成しているＰＥ７−１とＰＥ７−２により同時に演算する。
【００４３】
図７は、１つの入力データを２つのＰＥで演算処理する場合を説明するための図であり、この図を用いて、上述した一連の演算動作を詳細に説明する。図７では、対を構成するＰＥ７−１とＰＥ７−２に着目し、入力データが「１１（１０進数）」の場合における、処理時刻と、レジスタ１９のデータ、フラグレジスタ１７（この場合はキャリー）の遷移関係、演算結果及びメモリ２０のアドレスを示したものである。図中の四角内は入力データやレジスタの１ビット毎の数値を示しており、括弧内は初期状態を示している。また、時刻ｔｃ１から時刻ｔｃ５へ時間が進んでいくものとする。図７に示す演算例では、先述した１入力データを１ＰＥで処理する場合と比較すると、対になったＰＥが２ビットの演算を行う点が異なる。
【００４４】
時刻ｔｃ１において、ＰＥ７−１のＡＬＵ１６は、メモリ２０からの入力データ「１１（＝１０１１）」におけるＬＳＢ値「１」と、レジスタ１９からの係数値「９（＝１００１）」のＬＳＢ値「１」及びフラグレジスタ１７の初期値「０」との加算を行う。この演算により、ビット値「１」が桁上がりし、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がメモリ２０のアドレス０に格納される。桁上がりが生じたので、ＰＥ７−１のＡＬＵ１６のフラグ出力ポートから出力されたキャリー（桁上がり）に相当するフラグ情報をフラグレジスタ１７に格納する。これにより、フラグレジスタ１７の値は初期値「０」から「１」へ遷移する。
【００４５】
上述のＰＥ７−１における演算と同時に、ＰＥ７−２のＡＬＵ１６では、メモリ２０からの入力データ「１１（＝１０１１）」におけるＬＳＢから２番目のビット値「１」と、レジスタ１９からの係数値「９（＝１００１）」のＬＳＢから２番目のビット値「０」及びフラグレジスタ１７の初期値「０」との加算を行う。この際、図１に示したフラグ信号バス８−１を介してＰＥ７−１のフラグレジスタ１７の値が、ＰＥ７−２のフラグレジスタ１７に入力され設定される。このフラグレジスタ１７の値の流れが図７中に矢示Ｘであり、これによりＰＥ７−２のフラグレジスタ１７の値は初期値「０」から「１」へ遷移する。
【００４６】
この後、ＰＥ７−２のＡＬＵ１６は、フラグレジスタ１７の確定した状態である「１」と、メモリ２０からの入力データ「１１（＝１０１１）」におけるＬＳＢから２番目のビット値「１」及びレジスタ１９からの係数値「９（＝１００１）」のＬＳＢから２番目のビット値「０」を加算する。この演算により、ビット値「１」が桁上がりし、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がＰＥ７−２のメモリ２０のアドレス０に格納される。また、ＰＥ７−２のフラグレジスタ１７は、ＰＥ７−１からのビット値「１」が設定されているので、このままの値で次の演算用に保持される。
【００４７】
さらに、ＰＥ７−２のフラグレジスタ１７における上記演算結果のフラグ値は、次のステップでの演算に用いるため、図７に矢示Ｙで示すように、フラグ信号バス８−１を介してＰＥ７−１のフラグレジスタ１７に送出される。
図８は、対のＰＥ間におけるフラグ情報の流れを概略的に示す図であり、ＰＥ７−１とＰＥ７−２の間におけるフラグ情報の流れを示している。図８に示すように、図７中の矢示Ｘと矢示Ｙは、フラグ信号バス８−１を介したフラグ情報の流れとなる。このように、処理プログラムを実行する命令コントローラ１からの指示によりフラグ情報をＰＥ７−１とＰＥ７−２に受け渡すことなく、フラグ信号バス８−１を介してＰＥ７−１とＰＥ７−２の間でフラグ情報をやり取りすることで演算処理が可能である。
【００４８】
図７の説明に戻ると、次のステップである時刻ｔｃ２において、命令コントローラ１は、バスセレクタ５−１に対して選択信号「２」を出力する。この選択信号に従って、セレクタ５−１は、メモリ２０からの入力データ「１１（＝１０１１）」のＬＳＢから３番目のビット値「０」をＰＥ７−１に出力する。一方、図２に示すオフセット回路１１の動作により、メモリ２０からの入力データ「１１（＝１０１１）」のＬＳＢから４番目、即ちＭＳＢのビット値「１」がＰＥ７−２に出力される。
【００４９】
ＰＥ７−１のＡＬＵ１６は、メモリ２０からの入力データにおけるＬＳＢから３番目のビット値「０」と、レジスタ１９からの係数値のＬＳＢから３番目のビット値「０」及びフラグレジスタ１７の値「１」との加算を行う。この演算では桁上がりが生じず、ＰＥの処理ビット数に対応する１ビット目のみのビット値「１」が演算結果として得られ、この値がＰＥ７−１のメモリ２０のアドレス１に格納される。また、桁上がりが生じなかったので、ビット値「０」がフラグ情報としてＡＬＵ１６のフラグ出力ポートから出力され、ＰＥ７−１のフラグレジスタ１７に格納される。これにより、フラグレジスタ１７の値は「１」から「０」へ遷移する。
【００５０】
上述のＰＥ７−１における演算と同時に、ＰＥ７−２のＡＬＵ１６では、メモリ２０から読み出した入力データのＭＳＢのビット値「１」と、レジスタ１９からの係数値「９（＝１００１）」のＭＳＢのビット値「１」及びフラグレジスタ１７の値「１」との加算を行う。この際、フラグ信号バス８−１を介してＰＥ７−１のフラグレジスタ１７の値が、ＰＥ７−２のフラグレジスタ１７に入力され設定される。これによりＰＥ７−２のフラグレジスタ１７の値は「１」から「０」へ遷移する。
【００５１】
この後、ＰＥ７−２のＡＬＵ１６は、フラグレジスタ１７の確定した状態である「０」と、メモリ２０から読み出した入力データのＭＳＢのビット値「１」及びレジスタ１９から読み出した係数値のＭＳＢのビット値「１」を加算する。この演算により、ビット値「１」が桁上がりし、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がＰＥ７−２のメモリ２０のアドレス１に格納される。また、桁上がりが生じたので、ＰＥ７−２のＡＬＵ１６のフラグ出力ポートから出力されたキャリー（桁上がり）に相当するフラグ情報をフラグレジスタ１７に格納する。これにより、ＰＥ７−２のフラグレジスタ１７の値は「０」から「１」へ遷移する。
【００５２】
さらに、ＰＥ７−２のフラグレジスタ１７における上記演算結果のフラグ値は、図７に示すように、フラグ信号バス８−１を介してＰＥ７−１のフラグレジスタ１７に送出される。これにより、ＰＥ７−１のフラグレジスタ１７の値は「０」から「１」へ遷移する。
【００５３】
時刻ｔｃ３においては、ＰＥ７−１，７−２の制御部１５から各々のＡＬＵ１６に対してメモリ２０の入力データ及びレジスタ１９のレジスタデータを「０」とする加算を行うようにダミー加算処理を行う。図７の例では、ＰＥ７−１のＡＬＵ１６は、入力データの値「０」と、レジスタ１９のレジスタデータの値「０」と、ＰＥ７−２からのフラグ値が設定されたフラグレジスタ１７の値「１」が加算され、ＰＥの処理ビット数に対応する１ビット目のみのビット値「１」が演算結果として得られ、この値がＰＥ７−１のメモリ２０のアドレス２に格納される。
【００５４】
上述のＰＥ７−１における演算と同時に、ＰＥ７−２のＡＬＵ１６では、入力データの値「０」と、レジスタ１９のレジスタデータの値「０」及びフラグレジスタ１７の値「１」との加算を行う。この際、フラグ信号バス８−１を介して、ＰＥ７−１のフラグレジスタ１７の値が、ＰＥ７−２のフラグレジスタ１７に入力され設定される。これにより、ＰＥ７−２のフラグレジスタ１７の値は「１」から「０」へ遷移する。
【００５５】
この後、ＰＥ７−２のＡＬＵ１６は、フラグレジスタ１７の確定した状態である「０」と、入力データの値「０」及びレジスタ１９の値「０」を加算する。この演算により、ＰＥの処理ビット数に対応する１ビット目のみのビット値「０」が演算結果として得られ、この値がＰＥ７−２のメモリ２０のアドレス２に格納される。このようにして、データＤ６３９の全ビットの演算結果を求めることができる。
【００５６】
この状態では、ＰＥ７−１とＰＥ７−２の各メモリ２０の内部に個別に演算結果が格納されている。このため、処理プログラムを実行する命令コントローラ１からの指示により、ＰＥ内部の制御部１５による制御の下、ＰＥ７−１のメモリ２０に格納されるデータをＰＥ７−２のメモリ２０に移動させる。これにより、ＰＥ７−２内メモリ２０には演算結果が揃ったデータが格納される。この後、命令コントローラ１より出力命令が出され、出力シフトレジスタ４に該当データが保持される。
【００５７】
次に、図６に示す時刻ｔｓ６３９＋ａにおいて、動作コントローラ２は、１段だけシフトするように入力シフトレジスタ３へ動作クロックを出力する。時刻ｔｓ６３９に加えた「ａ」は、時刻ｔｓ６３９から前述のようなＰＥによる演算処理が終了するのに必要な時刻である。時刻ｔｓ６３９＋ａにおいては、データＤ２が出力ポートＯｕｔ６３９から出力され、・・・、データＤ６３８が出力ポートＯｕｔ３から出力され、データＤ６４０が出力ポートＯｕｔ１から出力される。従って、ＰＥ７−１とＰＥ７−２は、データＤ６４０を処理する。ＰＥ７−１，７−２によるデータＤ６４０の演算処理は、上述した入力データ「１１」の場合と同様である。データＤ６４０の演算が終了すると、ＰＥ７−２のメモリ２０に格納されたデータを、ＰＥ７−１のメモリ２０に移動させ、出力シフトレジスタ４に出力する。
【００５８】
以上の動作により、処理すべき入力データＤ１〜Ｄ６４０の全演算結果が出力シフトレジスタ４内に格納されると、動作コントローラ２は、出力シフトレジスタ４に転送クロックを出力し、データＤ１の演算結果から順次出力されて所望の演算結果が得られる。この後、信号処理プロセッサによる一連の処理動作が終了する。
【００５９】
ここで、図７に示した１つのデータを２つのＰＥで処理する場合と、図５に示した１つのデータを１つのＰＥで処理する場合とを比較すると、演算に必要なメモリの所要量は、その所要アドレスを見れば分かるように、１つのデータを２つのＰＥで処理する場合が３／５となっている。このため、残りのメモリ容量分を他の演算に用いることができる。なお、３／５となっているのは、データ処理が加算などの数値演算で桁上がりを考慮しているためであり、桁上がりの生じないＯＲ等の論理演算では、メモリの使用量が１／２となることは明白である。
【００６０】
従って、複雑な演算の場合や、処理すべき入力データのビット数が大きい場合でもメモリが不足することなく実行が可能である。さらに、従来の信号処理プロセッサのように、メモリ不足によりプロセッサ外部の保持手段などに一旦退避させてさらに演算を実行させるという場合よりも遥かに高速処理が可能であるという利点を有する。
【００６１】
他方、１つのデータを１つのＰＥで処理する場合は、１つのデータを２つのＰＥで処理する場合よりも、その演算内容がメモリ容量に収まっていれば、多くの画素数を一括することで高速処理が可能であるという利点を有する。
【００６２】
以上のように、この実施の形態１によれば、入力シフトレジスタ３からのデータ出力の制御や出力シフトレジスタ４からの演算結果の出力を制御する動作コントローラ２と、ＰＥに入力するデータを選択して、１つの入力データを１つのＰＥ毎に分配するか若しくは２つのＰＥ毎に分配するかを切り替える切替手段であるバスセレクタ５−１〜５−３２０及びセレクタ６−１〜６−３２０と、バスセレクタ５−１〜５−３２０やセレクタ６−１〜６−３２０の動作及びＰＥの演算を制御する命令コントローラ１と、対をなすＰＥ間に設けられ、ＰＥ内のＡＬＵ１６のフラグ情報を受け渡すフラグ信号バス８−１〜８−３２０とを含んで信号処理プロセッサを構成する。このような簡易な構成であっても、演算精度を損なうことなく、処理速度及び処理の並列度を向上させることができる。これにより、回路規模を増大させることなく、演算精度を維持して複雑な演算を実行可能な、処理目的に応じた信号処理プロセッサを得ることができる。
【００６３】
なお、上記実施の形態１では、１つのデータを１つのＰＥで処理する場合と、１つのデータを２つのＰＥで処理する場合を例に説明したが、同時処理するＰＥは複数であればよい。その場合には、上記実施の形態１で示したＰＥ７−１，７−２の入力側のバスセレクタ５−１及びセレクタ６−１の構成を、同時処理するＰＥに選択するようにすればよく、フラグ信号バスを該当するＰＥ同志でカスケード接続すればよい。
【００６４】
実施の形態２．
上記実施の形態１は、入力データのビット数よりＰＥの演算処理ビット数が少ない場合（入力データを４ビット、ＰＥの演算処理１ビット）を示したが、この実施の形態２では、入力データのビット数がＰＥの演算処理ビット数以下である場合について説明する。
【００６５】
図９は、この発明の実施の形態２による信号処理プロセッサの構成を示すブロック図である。実施の形態２による信号処理プロセッサは、上記実施の形態１で示した図１の構成と異なり、バスセレクタ５−１〜５−３２０が省略され、入力シフトレジスタ３の奇数番目の出力ポートＯｕｔ１，Ｏｕｔ３，・・・，Ｏｕｔ６３９からの各出力が、それぞれ奇数番目のＰＥ７−１，７−３，・・・，ＰＥ７−６３９に接続される。また、入力シフトレジスタ３の奇数番目の出力ポートＯｕｔ１，Ｏｕｔ３，・・・，Ｏｕｔ６３９から分岐された各信号が、セレクタ６−１〜６−３２０のＳＡ端子に接続する。
【００６６】
入力シフトレジスタ３の偶数番目の出力ポートＯｕｔ２，Ｏｕｔ４，・・・，Ｏｕｔ６４０からの各信号は、セレクタ６−１〜６−３２０のＳＢ端子に直接接続する。命令コントローラ１からの命令バスが、対となるＰＥで互いに異なり、命令バスＡ及び命令バスＢ（命令伝送路）を設けている。さらに、ＰＥ７−１〜７−６４０が各々４ビットの処理が可能であり、対となるＰＥ間におけるフラグ信号バスが省略されている。なお、図９において、図１と同一若しくはそれに相当する構成要素には同一符号を付して特に必要な場合を除き重複する説明を省略した。
【００６７】
次に動作について説明する。
先ず、１つの入力データを１つのＰＥで演算処理する場合を説明する。
命令コントローラ１に所望の処理プログラムを予め格納しておく。この際、処理プログラム中に１つの入力データを１つのＰＥで処理する命令データを書き込んでおく。命令コントローラ１からは、この命令に従ってセレクタ６−１〜６−３２０をＳＢ端子側に選択するように切替信号を出力する。
【００６８】
図示しない信号処理プロセッサ外部の装置からシリアルに転送される入力データは、入力シフトレジスタ３でシリアル−パラレル変換される。シリアル−パラレル変換については、上記実施の形態１と同様である。但し、本実施の形態２では、４ビットの入力データをビット毎に分割して選択する必要がない。このため、入力シフトレジスタ３から入力データの全ビットがＰＥ７−１〜ＰＥ７−６４０に入力される。命令コントローラ１からの演算命令は、奇数番目のＰＥに対しては命令バスＡを介して入力され、偶数番目のＰＥに対しては命令バスＢを介して入力される。
【００６９】
ここでは、入力シフトレジスタ３の各出力ポートからの出力は、ＰＥ７−１〜ＰＥ７−６４０にそれぞれ入力される。命令コントローラ１は、命令バスＡと命令バスＢに同一の命令データを出力することにより、奇数番目のＰＥと偶数番目のＰＥとが同一の演算を行うことになる。つまり、４ビットの入力データが、４ビットの演算処理に対応したＡＬＵ１６により命令データに従った演算がなされる。このようにして各ＰＥで所望の演算結果が得られると、各ＰＥから演算結果が出力シフトレジスタ４に転送され、出力データが得られる。
【００７０】
次に１つの入力データを２つのＰＥで演算処理する場合を説明する。
命令コントローラ１に演算処理内容の異なる２種類の処理プログラムを予め格納しておく。命令コントローラ１は、図示しないプログラムカウンタにより、各処理プログラムに沿った命令データを交互に命令バスＡと命令バスＢに出力する。若しくは、複数のプログラムカウンタによって同時に命令データを各命令バスに出力しても良い。
【００７１】
このとき、命令コントローラ１からは、この命令に従ってセレクタ６−１〜６−３２０をＳＡ端子側に選択するように切替信号を出力する。図示しない信号処理プロセッサ外部の装置からシリアルに転送される入力データは、入力シフトレジスタ３でシリアル−パラレル変換される。シリアル−パラレル変換については、上記実施の形態１と同様である。
【００７２】
ここでは、入力シフトレジスタ３の奇数番目の出力ポートＯｕｔ１，Ｏｕｔ３，・・・，Ｏｕｔ６３９からのデータが、ＰＥ７−１とＰＥ７−２、ＰＥ７−３とＰＥ７−４、・・・、ＰＥ７−６３９とＰＥ７−６４０にそれぞれ入力される。従って、対をなすＰＥには同一データが入力される。
【００７３】
この後、奇数番目のＰＥ７−１，７−３，・・・，７−６３９は、命令バスＡの演算処理を実行し、偶数番目のＰＥ７−２，７−４，・・・，７−６４０は、命令バスＢの演算処理を実行する。各ＰＥでは、内部のＡＬＵ１６によって４ビットの演算処理が行われ、命令コントローラ１に設定された各処理プログラム内容が並列に処理されていく。これらＰＥによる演算処理が終了し、各ＰＥからの演算結果が出力シフトレジスタ４に出力される。これにより、所望の出力データが出力シフトレジスタ４から得られる。この動作の詳細については、上記実施の形態１と同様である。
【００７４】
ここで、本実施の形態２と上記実施の形態１を比較する。
上記実施の形態１では、入力データをＰＥの演算可能なビット数に分割して処理するので、入力データのビット数がＰＥの演算処理が可能なビット数より大きい場合に適している。これに対し、本実施の形態２では、ＰＥの演算処理が可能なビット数が、入力データのビット数以上の精度を有する。このため、上記実施の形態１と同様に入力データを分割処理することも可能であるが、対をなすＰＥに互いに異なる処理を実行させて処理の並列度を向上させた方がより処理速度の面では効果が高い。他方、回路規模面では、ＰＥの処理ビット数の少ない上記実施の形態１の方が有利である。いずれかの構成とするかは、処理されるデータの種類や処理内容、回路規模によって決定される。
【００７５】
以上のように、この実施の形態２によれば、命令コントローラ１からの動作制御命令を同時に実行させるＰＥ毎に伝送する命令バスＡ，Ｂを備え、複数のＰＥが、命令バスＡ又は命令バスＢを介して伝送された動作制御命令に従って異なる演算を並行して実行するので、異なる演算処理を同時に実行することが可能となり、処理の並列度が向上し、処理速度の速い処理目的に応じた信号処理プロセッサを得ることができる。
【００７６】
なお、上記実施の形態１、２では、処理すべき信号としてＣＣＤ等の撮像素子からの信号を例に挙げたが、本発明は、これに限らず、通信や音声データであっても良い。
【００７７】
実施の形態３．
図１０は、この発明の実施の形態３による信号処理プロセッサのＰＥの構成を示すブロック図であり、図９中のＰＥ７−１及びＰＥ７−２に相当する対をなして演算処理を行うＰＥの構成を示している。つまり、ＰＥ２１−１は、図９中のＰＥ７−１に相当し、ＰＥ２１−２は図９中のＰＥ２１−２に相当し、図示していないがＰＥ２１−６４０まで順次ＰＥが搭載されているものとする。なお、図１０において、図３と同一又はこれに相当する構成要素には同一符号を付して重複する説明を省略する。
【００７８】
本実施の形態３によるＰＥは、図１０に示すように、隣り合ったＰＥ２１−１，２１−２において、ＰＥ２１−１内のメモリ２０のデータ線及びアドレス線の少なくとも一方が、セレクタ２２を介してＰＥ２１−２のメモリ２０にカスケード接続している。さらに、各ＰＥ内のセレクタ（ＰＥ内選択手段）２２は、命令コントローラ１からの制御に従って、入力シフトレジスタ３側からの入力データとこの隣り合ったＰＥからのメモリデータ信号のいずれかを選択する。なお、図１０中に破線で示した信号は、ＰＥ２１−１と対をなすＰＥ２１−２以外のＰＥからのメモリデータ信号を示しており、対となるＰＥが２より大きい場合を示している。
【００７９】
次に動作について説明する。
先ず、１つの入力データを１つのＰＥで処理する場合を説明する。
命令コントローラ１に所望の処理プログラムを予め格納しておく。この際、処理プログラム中に１つの入力データを１つのＰＥで処理する命令データを書き込んでおく。命令コントローラ１からは、この命令に従ってセレクタ６−１〜６−３２０をＳＢ端子側に選択するように切替信号を出力する。
【００８０】
図示しない信号処理プロセッサ外部の装置からシリアルに転送される入力データは、入力シフトレジスタ３でシリアル−パラレル変換される。シリアル−パラレル変換については、上記実施の形態１と同様である。ここで、入力シフトレジスタ３の各出力ポートからの出力は、ＰＥ２１−１〜ＰＥ２１−６４０にそれぞれ入力される。
【００８１】
このとき、各ＰＥのセレクタ２２は、入力シフトレジスタ３からの入力データの入力経路を選択する。つまり、図１０の例において、ＰＥ２１−１のセレクタ２２は、入力シフトレジスタ３の出力ポートＯｕｔ１からのデータを選択し、ＰＥ２１−２のセレクタ２２は、セレクタ６−１からのデータ（入力シフトレジスタ３からＳＢ端子を介して入力されるデータ）を選択する。
【００８２】
命令コントローラ１は、命令バスＡと命令バスＢに同一の命令データを出力することにより、奇数番目のＰＥ２１−１のＡＬＵ１６と偶数番目のＰＥ２１−２のＡＬＵ１６とが同一の演算を行うことになる。このようにして各ＰＥで所望の演算結果が得られると、各ＰＥから演算結果が出力シフトレジスタ４に転送され、出力データが得られる。
【００８３】
次に１つの入力データを２つ以上のＰＥで処理する場合について説明する。
命令コントローラ１に演算処理内容の異なる２種類の処理プログラムを予め格納しておく。命令コントローラ１は、図示しないプログラムカウンタにより各処理プログラムに沿った命令データを交互に命令バスＡと命令バスＢに出力する。若しくは、複数のプログラムカウンタによって同時に命令データを各命令バスに出力しても良い。
【００８４】
図示しない信号処理プロセッサ外部の装置からシリアルに転送される入力データは、入力シフトレジスタ３でシリアル−パラレル変換される。シリアル−パラレル変換については、上記実施の形態１と同様である。ここで、各ＰＥのセレクタ２２は、対となる他のＰＥからのメモリデータ信号を選択するよう動作する。また、命令コントローラ１からは、命令バスを介して演算処理を行うＰＥに隣接し、その演算処理にメモリ２０のみを使用するためのＰＥのＡＬＵ１６が動作しないように停止命令を出力しておく。
【００８５】
図１０の例で具体的に説明すると、ＰＥ２１−１のセレクタ２２は、命令コントローラ１から命令バスＡを介した命令データに従い、破線で示す図示しない隣り合うＰＥからのメモリデータ信号を選択し、当該メモリデータをメモリ２０に格納する。そして、ＰＥ２１−１のＡＬＵ１６は、メモリ２０から読み出した当該メモリデータを用いて演算処理を実行する。
【００８６】
このとき、ＰＥ２１−１のメモリ２０からデータ線を介して対をなすＰＥ２１−２のセレクタ２２へ上述した図示しない隣り合うＰＥからのメモリデータ信号が送信される。ＰＥ２１−２のセレクタ２２も、命令バスＢを介して命令コントローラ１から入力した命令データに従って隣り合うＰＥ２１−１からのメモリデータ信号を選択する。これにより、ＰＥ２１−２のメモリ２０に当該メモリデータが格納される。
【００８７】
なお、ＰＥ２１−２は、命令コントローラ１から命令バスＢを介してＡＬＵ１６の動作の停止命令がなされているので、ＰＥ２１−１からのメモリデータを用いた演算処理を行わない。このとき、ＰＥ２１−２について、ＰＥ２１−１以外にさらにセレクタ２２を介してメモリ２０同士がカスケード接続されたＰＥがあるならば、当該ＰＥに対してメモリ２０のメモリデータ信号を送信する。
【００８８】
一方、ＰＥ２１−１では、さらに図示しない隣り合うＰＥからのメモリデータ信号が送信されてくれば、セレクタ２２により選択しメモリ２０に格納後、当該メモリデータを用いた演算処理を実行する。例えば、奇数番目のＰＥ２１−１，２１−３，・・・，２１−６３９は、命令バスＡを介した命令コントローラ１から命令に従って偶数番目のＰＥからのメモリデータを用いて演算処理を行い、偶数番目のＰＥ７−２，７−４，・・・，７−６４０は、命令バスＢを介した命令コントローラ１から命令に従って奇数番目のＰＥからのメモリデータを自己を介して隣り合う奇数番目のＰＥに送信する。
【００８９】
奇数番目のＰＥ２１−１，２１−３，・・・，２１−６３９では、それぞれのＡＬＵ１６によって演算処理が行われ、命令コントローラ１に設定された各処理プログラム内容が並列に処理されていく。これらＰＥによる演算処理が終了し、各ＰＥからの演算結果が出力シフトレジスタ４に出力される。これにより、所望の出力データが出力シフトレジスタ４から得られる。この動作の詳細については、上記実施の形態１と同様である。このようにすることで、例えばＰＥ２１−１のＡＬＵ１６が使用可能なメモリ領域は、ＰＥ２１−１のメモリ２０に加えてＰＥ２１−２のメモリ２０の両メモリ領域となる。
【００９０】
以上のように、この実施の形態３によれば、ＰＥが、演算対象のデータを格納するメモリ２０と、入力シフトレジスタ３側からの入力データ及び他のＰＥのメモリ２０からのメモリデータ信号のうちのいずれか一方を選択するセレクタ２２とを備えるので、命令コントローラ１により演算動作が停止され、セレクタ２２により自ＰＥのメモリ２０におけるデータが選択された、のＰＥのメモリ２０における記憶領域を演算処理に利用することができ、より複雑な演算処理を実行した場合であってもメモリ容量が不足することなくデータ演算が可能となる。
【００９１】
実施の形態４．
図１１は、この発明の実施の形態４による撮像装置の構成を概略的に示すブロック図であり、上記実施の形態１から上記実施の形態３までのいずれかに示す信号処理プロセッサをデジタルカメラに適用した場合を示している。図１１において、センサ（撮像手段）３１は、ＣＣＤやＣＭＯＳ等の撮像素子を有するセンサヘッドである。センサ３１からの撮像信号は、撮像信号を一旦蓄えておくメモリ（記憶手段）３２と、メモリ３２からの撮像信号とセンサ３１からの撮像信号を選択できるセレクタ（選択手段）３３とに入力される。セレクタ３３は、このセンサ３１から直接入力される撮像信号とメモリ３２に記憶された撮像信号とを入力し、これらのうちのいずれかの撮像信号を選択して信号処理プロセッサ３４に出力する。
【００９２】
信号処理プロセッサ３４では、オートホワイトバランス（ＡＷＢ）用の演算及び白領域検出処理や、オートフォーカス（ＡＦ）用のバンドパスフィルタによる積分処理、手振れ補正用の動き方向検出、色補間や色補正処理などの一般に広く知られる演算処理を実行する。これらの必要な信号処理は、上記実施の形態１〜３までに示した信号処理プロセッサの内部構成により実行される。演算結果の撮像信号は、液晶などの表示手段３５に表示され、図示しないシャッターを押下することで半導体メモリなどの記録手段３６に保存される。ＣＰＵ（装置制御手段）３７は、セレクタ３３の選択動作と信号処理プロセッサ３４等のデジタルカメラ全体の動作を制御する。
【００９３】
ＣＰＵ３７の制御により、セレクタ３３がセンサ３１からの撮像信号を選択するのは、表示手段３５によってリアルタイムに撮像画像を表示するモードであり、被写体の確認用に用いられる。このモードでは、撮像信号のリアルタイム処理性、即ち高速信号処理と一括処理性が求められる。ＣＰＵ３７は、セレクタ３３の切り替えと同時に信号処理プロセッサ３４中の命令コントローラ１に対して、１つの入力データ（１つの撮像信号）を１つのＰＥで信号処理するようにその動作命令を出力する。
【００９４】
この動作命令に従って、信号処理プロセッサ３４内の命令コントローラ１は、１つの入力データ（１つの撮像信号）を１つのＰＥで信号処理する動作がなされるように処理プログラムを実行することで、ＰＥに所望の前記演算処理を実行させて撮像画像を得る。これにより、例えばセンサ出力の３０コマ／秒等のフレームレートに追従可能で、コマ落ちすることのない高速な撮像装置を構成することができる。
【００９５】
また、ＣＰＵ３７の制御により、セレクタ３３がメモリ３２からの撮像信号を選択するのは、シャッターが押下された場合にメモリ３２からの撮像信号を呼び出して記録手段３６に保存するモードである。このモードでは、撮像信号に対する高画質な処理、即ち複雑な演算処理が求められる。従って、ＣＰＵ３７は、セレクタ３３をメモリ３２側に選択すると同時に、信号処理プロセッサ３４に対して１つの入力データ（１つの撮像信号）を２つ以上のＰＥで信号処理を行う動作命令を出力する。
【００９６】
この動作命令に従って、信号処理プロセッサ３４内の命令コントローラ１は、１つの入力データ（１つの撮像信号）を２つ以上のＰＥで信号処理する動作がなされるように処理プログラムを実行することで、ＰＥに所望の前記演算処理を実行させて撮像画像を得る。これにより、ＰＥ内のメモリ不足に陥ることなく、複雑な信号処理演算が可能で、高画質な撮像処理装置を得ることができる。
【００９７】
以上のように、この実施の形態４によれば、上記実施の形態１〜３に示す構成及び機能を有する信号処理プロセッサ３４を用いて撮像装置を構成したので、撮影モード毎に適した演算処理が可能な撮像装置を得ることができる。
【００９８】
特に、上記実施の形態２に示した信号処理プロセッサを用いて撮像装置を構成することにより、処理内容の異なる複数の演算処理を同時に行うことができ、高速信号処理が可能な撮像装置を得ることができる。例えば、ＡＦ用の積算処理を行いながら、同時に色補間処理を行うことができる。他にもＪＰＥＧ圧縮を行いながら液晶表示用の信号を生成することができるなど組み合わせは無数に考えられる。
【図面の簡単な説明】
【００９９】
【図１】この発明の実施の形態１による信号処理プロセッサの構成を示すブロック図である。
【図２】図１中のバスセレクタの構成を示すブロック図である。
【図３】図１中のＰＥの構成を示すブロック図である。
【図４】１つの入力データを１つのＰＥで演算処理する場合における入力シフトレジスタのデータ記憶のタイミングチャートである。
【図５】１つの入力データを１つのＰＥで演算処理する場合を説明するための図である。
【図６】１つの入力データを２つのＰＥで演算処理する場合における入力シフトレジスタのデータ記憶のタイミングチャートである。
【図７】１つの入力データを２つのＰＥで演算処理する場合を説明するための図である。
【図８】対のＰＥ間におけるフラグ情報の流れを概略的に示す図である。
【図９】この発明の実施の形態２による信号処理プロセッサの構成を示すブロック図である。
【図１０】この発明の実施の形態３による信号処理プロセッサのＰＥの構成を示すブロック図である。
【図１１】この発明の実施の形態４による撮像装置の構成を概略的に示すブロック図である。
【符号の説明】
【０１００】
１  命令コントローラ（制御手段）、２  動作コントローラ、３  入力シフトレジスタ、４  出力シフトレジスタ、５−１〜５−３２０  バスセレクタ（切替手段）、６−１〜６−３２０  セレクタ（切替手段）、７−１〜７−６４０，２１−１，２１−２  ＰＥ（プロセッサエレメント）、８−１〜８−３２０  フラグ信号バス（フラグ情報伝送路）、９  命令バス、１０−１〜１０−３  セレクタ、１１  オフセット回路、１５  制御部、１６  ＡＬＵ、１７  フラグレジスタ、１８  ゲート回路、１９  レジスタ、２０  メモリ（データ格納手段）、２２  セレクタ（ＰＥ内選択手段）、３１  センサ（撮像手段）、３２  メモリ（記憶手段）、３３  セレクタ（選択手段）、３４  信号処理プロセッサ、３５  表示手段、３６  記録手段。
【図１】
2007172528.tif 000003
【図２】
2007172528.tif 000004
【図３】
2007172528.tif 000005
【図４】
2007172528.tif 000006
【図５】
2007172528.tif 000007
【図６】
2007172528.tif 000008
【図７】
2007172528.tif 000009
【図８】
2007172528.tif 000010
【図９】
2007172528.tif 000011
【図１０】
2007172528.tif 000012
【図１１】
2007172528.tif 000013