(57)【要約】【課題】高速に階調値のヒストグラムを生成し、システム全体のスループットを向上させる。【解決手段】プロセッサエレメントＰＥｎ（ｎ＝０，１，…，２５５）はそれぞれ、階調値ｎに対応するアドレスｎを有する。マイクロカウンタ１２は、カウンタレジスタ１５のビット幅より小さいビット幅を有する。外部データ転送装置２から、画素データの画素値をアドレスとして含むアドレス信号が入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントＰＥｎのマイクロカンタ１２は、カウント値Ｃ１２を１だけインクリメントする。グローバルプロセッサ１０は、所定のタイミングで、カウント値Ｃ１２を、対応するカウンタレジスタ１５に格納されたカウント値Ｃ１５に累積加算するようにＡＬＵ１４を制御する並列加算処理を実行し、各マイクロカウンタ１２に格納されたカウント値Ｃ１２をリセットするように制御する。【選択図】図１
2012059131.tif 000002
【特許請求の範囲】
【請求項１】
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するＳＩＭＤ（Single Instruction stream Multiple Data stream）型マイクロプロセッサにおいて、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第１のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第１のビット幅より小さい所定の第２のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記アドレス信号が上記ＳＩＭＤ型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を１だけインクリメントし、
上記制御手段は、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御することを特徴とするＳＩＭＤ型マイクロプロセッサ。
【請求項２】
上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも１つのカウンタ手段に格納されたカウント値が、上記第２のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記制御手段は、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御することを特徴とする請求項１記載のＳＩＭＤ型マイクロプロセッサ。
【請求項３】
上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする請求項１又は２記載のＳＩＭＤ型マイクロプロセッサ。
【請求項４】
上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記各プロセッサエレメントの累積加算手段は、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算することを特徴とする請求項３記載のＳＩＭＤ型マイクロプロセッサ。
【請求項５】
上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする請求項１乃至４のうちのいずれか１つに記載のＳＩＭＤ型マイクロプロセッサ。
【請求項６】
上記画素値は、階調値であることを特徴とする請求項１乃至５のうちのいずれか１つに記載のＳＩＭＤ型マイクロプロセッサ。
【請求項７】
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するＳＩＭＤ型マイクロプロセッサの処理方法において、
上記ＳＩＭＤ型マイクロプロセッサは、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第１のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第１のビット幅より小さい所定の第２のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記処理方法は、
上記アドレス信号が上記ＳＩＭＤ型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段が、上記カウント値を１だけインクリメントするステップと、
上記制御手段が、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御するステップとを含むことを特徴とするＳＩＭＤ型マイクロプロセッサの処理方法。
【請求項８】
上記ＳＩＭＤ型マイクロプロセッサは、上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも１つのカウンタ手段に格納されたカウント値が、上記第２のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記処理方法は、上記制御手段が、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御するステップをさらに含むことを特徴とする請求項７記載のＳＩＭＤ型マイクロプロセッサの処理方法。
【請求項９】
上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする請求項７又は８記載のＳＩＭＤ型マイクロプロセッサの処理方法。
【請求項１０】
上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記処理方法は、上記各プロセッサエレメントの累積加算手段が、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算するステップをさらに含むことを特徴とする請求項９記載のＳＩＭＤ型マイクロプロセッサの処理方法。
【請求項１１】
上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする請求項７乃至１０のうちのいずれか１つに記載のＳＩＭＤ型マイクロプロセッサの処理方法。
【請求項１２】
上記画素値は、階調値であることを特徴とする請求項７乃至１１のうちのいずれか１つに記載のＳＩＭＤ型マイクロプロセッサの処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、１つの演算命令によって複数のデータ等を並列処理するＳＩＭＤ（Single Instruction stream Multiple Data stream）型マイクロプロセッサ及び当該ＳＩＭＤ型マイクロプロセッサの処理方法に関する。
【背景技術】
【０００２】
画像処理専用のマイクロプロセッサでは、ＳＩＭＤ型マイクロプロセッサを採用することが多い（例えば、特許文献１参照。）。１つの命令で複数のデータに対して同時に同一の演算処理が実行可能であるというＳＩＭＤ型マイクロプロセッサの特徴が画像処理に適しているためである。ＳＩＭＤ型マイクロプロセッサは、演算器及びレジスタをそれぞれ備えた複数のプロセッサエレメント（以下、ＰＥ（Processor Element）という。）を備えて構成され、複数のＰＥにおいて同時に演算処理を行うように制御することにより、画像処理の効率を高めている。各ＰＥは、１個の画素に対応するデータの画像処理を担当するので、複数の画素に対応するデータに対して同時に演算処理を実行できる。
【０００３】
しかしながら、画像データを取り扱う処理の中には、ＳＩＭＤ型マイクロプロセッサによる並列演算効果を得られない処理も存在する。例えば、画像データの階調値のメジアン（中央値）を得る処理などは、メジアンフィルタ処理や、特許文献２記載の画像処理において必要とされるが、並列演算では実現できていない。具体的には、メジアンを得るための手順としては、各画素の階調値を降べき順又は昇べき順に並び替えた後に、母数の２分の１に相当する順位の階調値を求めるか、あるいはヒストグラムを作成した後に度数累計が母数の２分の１に達したときの階調値を採用するなどの手法がある。しかしながら、前者は並び替え処理を行うので並列演算効果を得られず、後者はヒストグラムを作成するときに並列演算効果を得られない。従って、画像処理用のＳＩＭＤ型マイクロプロセッサでは、ヒストグラムを高速に作成する技術が求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１には、各ＰＥに固有のアドレスを割り当て、当該アドレスを指定することにより、外部データ転送装置などのＳＩＭＤ型マイクロプロセッサの外部装置と、任意のＰＥとの間で画像データを送受信する方法が開示されている。図９を参照して、特許文献１記載の方法を用いて２５６階調の画素データの階調値のヒストグラムを生成するための従来技術に係るヒストグラム生成処理を説明する。
【０００５】
図９は、従来技術に係るＳＩＭＤ型マイクロプロセッサ１Ｐの構成を示すブロック図である。図９において、ＳＩＭＤ型マイクロプロセッサ１Ｐは、グローバルプロセッサ（以下、ＧＰ（Global Processor）という。）１０と、２５６個のプロセッサエレメントＰＥ０Ｐ，ＰＥ１Ｐ，…，ＰＥ２５５Ｐとを備えて構成される。ここで、ＧＰ１０は、ＳＩＳＤ（Single Instruction Stream, Single Data Stream）タイプのプロセッサであり、ＳＩＭＤ型マイクロプロセッサ１Ｐの全体の動作、ならびにプロセッサエレメントＰＥ０Ｐ〜ＰＥ２５５Ｐの各動作を制御するとともに、外部データ転送装置２に対して動作設定用データ及びデータ転送のためのコマンドなどを送信する。また、各プロセッサエレメントＰＥｎＰ（ｎ＝０，１，…，２５５）は、デコーダ及びコントローラ１１と、ポートレジスタ４０と、算術論理演算回路（以下、ＡＬＵ（Arithmetic Logic Unit）という。）１４及びカウンタレジスタ１５を備えた累積演算回路１３と、演算データバス２１及び２２とを備えて構成される。また、各プロセッサエレメントＰＥｎＰにはプロセッサエレメント番号ｎに対応する固有のアドレスｎが割り当てられている。
【０００６】
また、図９において、外部データ転送装置２は、プロセッサエレメントＰＥ０Ｐ〜ＰＥ２５５Ｐと接続されていて、データの読み出し又は書き込みを指示するための制御信号と、読み出し元又は書き込み先のプロセッサエレメントの固有アドレスを示すアドレス信号とを発生して、プロセッサエレメントＰＥ０Ｐ〜ＰＥ２５５Ｐに出力する。各プロセッサエレメントＰＥｎＰにおいて、デコーダ及びコントローラ１１は、入力されるアドレス信号に含まれるアドレスがプロセッサエレメントＰＥｎＰに割り当てられているアドレスｎと一致し、かつ入力される制御信号がデータ読み出しを示すときに、データ読み出しを指示する指示信号Ｓ１１をポートレジスタ４０に出力し、これに応答して、ポートレジスタ４０は当該ポートレジスタ４０に格納されたデータを、データバスを介して外部データ転送装置２に出力する。また、各プロセッサエレメントＰＥｎＰにおいて、デコーダ及びコントローラ１１は、入力されるアドレス信号に含まれるアドレスがプロセッサエレメントＰＥｎＰに割り当てられているアドレスｎと一致し、かつ入力される制御信号がデータ書き込みを示すときに、データ書き込みを指示する指示信号Ｓ１１をポートレジスタ４０に出力し、これに応答して、外部データ転送装置２からデータバスに出力されたデータをポートレジスタ４０に格納する。以上説明したように、データ転送装置２と各プロセッサエレメントＰＥｎＰとの間でのデータ転送が実行される。
【０００７】
さらに、図９において、ＧＰ１０は、各ポートレジスタ４０に格納されたデータに対して、累積演算回路１３などの演算回路を用いて演算処理を実行する。ここで、外部データ転送装置２と、ＧＰ１０とは互いに独立して動作するので、ＧＰ１０による演算処理を実行しているときに、外部データ転送装置２が各ポートレジスタ４０内のデータを読み出して他の外部装置に転送し、又は、他の外部装置からのデータを各ポートレジスタ４０に書き込むことができる。このため、ＧＰ１０は、外部装置との間でのデータ転送処理のために命令ステップを費やすことがない。
【０００８】
図９の外部データ転送装置２は、通常は、アドレスカウンタなどを用いてプロセッサエレメント番号ｎに従った順序で各プロセッサエレメントＰＥｎＰにアクセスする。このとき、各アドレスｎを画素データの階調値ｎに対応づけることにより、以下に説明するように、ＳＩＭＤ型マイクロプロセッサ１Ｐを階調値のヒストグラムを生成するために用いることができる。
【０００９】
まず始めに、ＧＰ１０は、全てのカウンタレジスタ１５をリセットする。その後、外部データ転送装置２は、入力される画素データの階調値（０から２５５までの間の値である。）をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを各デコーダ及びコントローラ１１に出力する（以下、データ転送処理という。）。これに応答して、書き込み対象のプロセッサエレメントＰＥｎＰのデコーダ及びコントローラ１１は、対応するポートレジスタ４０にデータ値「１」を書き込み、書き込み対象のプロセッサエレメントＰＥｎＰ以外のデコーダ及びコントローラ１１は、対応するポートレジスタ４０にデータ値「０」を書き込む。さらに、各ポートレジスタ４０は、格納されたデータＣ４０を演算データバス２１を介してＡＬＵ１４に出力し、各カウンタレジスタ１５は、格納されたデータＣ１５を演算データバス２２を介してＡＬＵ１５に出力する。次に、ＧＰ１０は、全てのＡＬＵ１４を、入力されるデータＣ４０とデータＣ１５とを加算して、加算結果のデータＣ１５をカウンタレジスタ１５に格納するように制御する（以下、並列加算処理という。）。上述した外部データ転送装置２によるデータ転送処理と、ＧＰ１０による並列加算処理とを交互に繰り返して実行することにより、各プロセッサエレメントＰＥ０Ｐ，ＰＥ１Ｐ，…，ＰＥ２５５Ｐのカウンタレジスタ１５には、階調値０，１，…，２５５の度数がそれぞれ格納される。
【００１０】
しかしながら、従来技術に係るヒストグラム生成処理では、外部データ転送装置２によるデータ転送処理を１回実行する毎に、ＧＰ１０による並列加算処理を実行する必要があり、ヒストグラムの生成に比較的長い時間を必要とする。また、ヒストグラム生成処理中は、ＳＩＭＤ型マイクロプロセッサ１Ｐはヒストグラム生成処理専用に用いられ、他の処理を同時に実行できないのでシステム全体のスループットが低下するという課題があった。
【００１１】
本発明の目的は以上の問題点を解決し、従来技術に比較してヒストグラムを高速に生成でき、システム全体のスループットを向上できるＳＩＭＤ型マイクロプロセッサ及びその処理方法を提供することにある。
【課題を解決するための手段】
【００１２】
第１の発明に係るＳＩＭＤ型マイクロプロセッサは、
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するＳＩＭＤ型マイクロプロセッサにおいて、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第１のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第１のビット幅より小さい所定の第２のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記アドレス信号が上記ＳＩＭＤ型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を１だけインクリメントし、
上記制御手段は、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御することを特徴とする。
【００１３】
上記ＳＩＭＤ型マイクロプロセッサにおいて、上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも１つのカウンタ手段に格納されたカウント値が、上記第２のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記制御手段は、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御することを特徴とする。
【００１４】
また、上記ＳＩＭＤ型マイクロプロセッサにおいて、上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする。
【００１５】
さらに、上記ＳＩＭＤ型マイクロプロセッサにおいて、上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記各プロセッサエレメントの累積加算手段は、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算することを特徴とする。
【００１６】
またさらに、上記ＳＩＭＤ型マイクロプロセッサにおいて、上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする。
【００１７】
また、上記ＳＩＭＤ型マイクロプロセッサにおいて、上記画素値は、階調値であることを特徴とする。
【００１８】
第２の発明に係るＳＩＭＤ型マイクロプロセッサの処理方法は、
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するＳＩＭＤ型マイクロプロセッサの処理方法において、
上記ＳＩＭＤ型マイクロプロセッサは、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第１のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第１のビット幅より小さい所定の第２のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記処理方法は、
上記アドレス信号が上記ＳＩＭＤ型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段が、上記カウント値を１だけインクリメントするステップと、
上記制御手段が、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御するステップとを含むことを特徴とする。
【００１９】
上記ＳＩＭＤ型マイクロプロセッサの処理方法において、上記ＳＩＭＤ型マイクロプロセッサは、上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも１つのカウンタ手段に格納されたカウント値が、上記第２のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記処理方法は、上記制御手段が、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御するステップをさらに含むことを特徴とする。
【００２０】
また、上記ＳＩＭＤ型マイクロプロセッサの処理方法において、上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする。
【００２１】
さらに、上記ＳＩＭＤ型マイクロプロセッサの処理方法において、上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記処理方法は、上記各プロセッサエレメントの累積加算手段が、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算するステップをさらに含むことを特徴とする。
【００２２】
またさらに、上記ＳＩＭＤ型マイクロプロセッサの処理方法において、上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする。
【００２３】
また、上記ＳＩＭＤ型マイクロプロセッサの処理方法において、上記画素値は、階調値であることを特徴とする。
【発明の効果】
【００２４】
本発明に係るＳＩＭＤ型マイクロプロセッサ及びＳＩＭＤ型マイクロプロセッサの処理方法によれば、ＳＩＭＤ型マイクロプロセッサの各プロセッサエレメントは画素値に対応する固有のアドレスをそれぞれ有し、所定の第１のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第１のビット幅より小さい所定の第２のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備える。また、アドレス信号がＳＩＭＤ型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を１だけインクリメントする。さらに、制御手段は、所定のタイミングで、各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御する。従って、従来技術に比較してヒストグラムを高速に生成でき、システム全体のスループットを向上できる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態に係るＳＩＭＤ型マイクロプロセッサ１の構成を示すブロック図である。
【図２】図１のＳＩＭＤ型マイクロプロセッサ１によって実行されるヒストグラム生成処理を示すシーケンス図である。
【図３】本発明の第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ａの構成を示すブロック図である。
【図４】図３のＳＩＭＤ型マイクロプロセッサ１Ａによって実行されるヒストグラム生成処理を示すシーケンス図である。
【図５】本発明の第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ｂの構成を示すブロック図である。
【図６】図５のＳＩＭＤ型マイクロプロセッサ１Ｂによって実行されるヒストグラム生成処理を示すシーケンス図である。
【図７】本発明の第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ｃの構成を示すブロック図である。
【図８】図７のＳＩＭＤ型マイクロプロセッサ１Ｃによって実行されるヒストグラム生成処理を示すシーケンス図である。
【図９】従来技術に係るＳＩＭＤ型マイクロプロセッサ１Ｐの構成を示すブロック図である。
【発明を実施するための形態】
【００２６】
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
【００２７】
第１の実施形態．
図１は、本発明の第１の実施形態に係るＳＩＭＤ型マイクロプロセッサ１の構成を示すブロック図であり、図２は、図１のＳＩＭＤ型マイクロプロセッサ１によって実行されるヒストグラム生成処理を示すシーケンス図である。なお、図１において、図９と同様のデータバスを記載しているが、以下の各実施形態に係るヒストグラム生成処理では用いられない。図１において、ＳＩＭＤ型マイクロプロセッサ１は、外部データ転送装置２に入力される２５６階調の画素データの階調値のヒストグラムを生成するために用いられる。ＳＩＭＤ型マイクロプロセッサ１は、ＧＰ１０と、２５６個のプロセッサエレメントＰＥ０，ＰＥ１，…，ＰＥ２５５とを備えて構成される。ここで、ＧＰ１０は、ＳＩＳＤタイプのプロセッサであり、ＳＩＭＤ型マイクロプロセッサ１の全体の動作、ならびにプロセッサエレメントＰＥ０〜ＰＥ２５５の各動作を制御するとともに、外部データ転送装置２に対して動作設定用データ及びデータ転送のためのコマンドなどを送信する。さらに、各プロセッサエレメントＰＥｎ（ｎ＝０，１，…，２５５）は、デコーダ及びコントローラ１１と、マイクロカウンタ（小度数カウンタ）１２と、ＡＬＵ１４及びカウンタレジスタ１５を備えた累積加算回路１３と、演算データバス２１及び２２とを備えて構成される。ここで、各プロセッサエレメントＰＥｎには、プロセッサエレメント番号ｎに対応する固有のアドレスｎが割り当てられている。
【００２８】
図１において、外部データ転送装置２は、ＳＩＭＤ型マイクロプロセッサ１と同期して動作する。外部データ転送装置２は、メモリなどの外部装置から画素データを入力する毎に、入力される画素データの階調値をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを発生して、各プロセッサエレメントＰＥｎのデコーダ及びコントローラ１１に出力する。各プロセッサエレメントＰＥｎにおいて、デコーダ及びコントローラ１１は、入力されるアドレス信号に含まれるアドレスとプロセッサエレメントＰＥｎのアドレスｎとが一致し、かつ制御信号がデータ書き込みを示すときは、カウントアップを指示する指示信号Ｓ１１を発生してマイクロカウンタ１２に出力する。また、マイクロカウンタ１２は、ＧＰ１０からのリセット命令に応答してカウント値Ｃ１２をゼロにリセットし、データ書き込みを示す指示信号Ｓ１１に応答して、カウント値Ｃ１２を１だけインクリメントする。マイクロカウンタ１２の出力端子は、演算データバス２１を介してＡＬＵ１４の一方の入力端子に接続されている。
【００２９】
さらに、図１において、カウンタレジスタ１５は、ＡＬＵ１４からのカウント値Ｃ１４をカウント値Ｃ１５として格納するとともに、ＧＰ１０からのリセット命令に応答してカウント値Ｃ１５をゼロにリセットする。カウンタレジスタ１５の出力端子は、演算データバス２２を介してＡＬＵ１４の他方の入力端子に接続されている。ＡＬＵ１４は、ＧＰ１０からの累積加算命令Ａ０に応答して、入力されるカウント値Ｃ１２とカウント値Ｃ１５とを加算し、加算結果のカウント値Ｃ１４をカウンタレジスタ１５に出力する。
【００３０】
ここで、図１において、カウンタレジスタ１５は、従来技術に係るＳＩＭＤ型マイクロプロセッサ１Ｐにおいても演算に用いられるレジスタであり、図２を参照して後述するヒストグラム生成処理専用に設けられる構成要素ではない。カウンタレジスタ１５は、各プロセッサエレメントＰＥｎにおいて処理されるデータを格納できるビット幅を有する。また、マイクロカウンタ１２のビット幅は、カウンタレジスタ１５及びＡＬＵ１４のビット幅よりも小さい。例えば、カウンタレジスタ１５及びＡＬＵ１４のビット幅は１６ビットであり、マイクロカウンタ１２のビット幅は８ビットである。
【００３１】
次に、図２を参照して、ＳＩＭＤ型マイクロプロセッサ１によって実行されるヒストグラム生成処理を説明する。まず始めに、ＧＰ１０は、リセット命令を、各プロセッサエレメントＰＥｎのマイクロカウンタ１２及びカウンタレジスタ１５に出力する。これに応答して、各プロセッサエレメントＰＥｎにおいて、マイクロカウンタ１２は、カウント値Ｃ１２をゼロにリセットし、カウンタレジスタ１５は、カウント値Ｃ１５をゼロにリセットする。次に、ＧＰ１０は、後述する処理Ａ１を開始することを指示する処理開始命令を外部データ転送装置２に出力する。これに応答して、外部データ転送装置２は、処理Ａ１を実行する。
【００３２】
処理Ａ１において、外部データ転送装置２は、外部装置から１つの画素データを入力すると、入力された画素データの階調値をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを発生して、各プロセッサエレメントＰＥｎのデコーダ及びコントローラ１１に出力する。これに応答して、各プロセッサエレメントＰＥｎのデコーダ及びコントローラ１１は、入力されたアドレス信号に含まれるアドレスがｎであり、かつ入力された制御信号がデータ書き込みを示すか否かを判断し、ＹＥＳのときは、カウントアップを指示する指示信号Ｓ１１を発生してマイクロカウンタ１２に出力する一方、ＮＯのときは、指示信号Ｓ１１を発生しない。さらに、カウントアップを指示する指示信号Ｓ１１に応答して、マイクロカウンタ１２はカウント値Ｃ１２を１だけインクリメントする。
【００３３】
データ転送装置２は、以上説明した処理Ａ１を、マイクロカウンタ１２によって計数可能なカウント値Ｃ１２の最大値と等しい回数だけ繰り返す。具体的には、本実施形態においてカウント値Ｃ１２の最大値は２５５であり、処理Ａ１は２５５回だけ繰り返して実行される。これにより、各階調値ｎに対応するアドレスｎを有するプロセッサエレメントＰＥｎのマイクロカウンタ１２には、入力される画素データのうち階調値ｎを有する画素データの個数に対応するカウント値Ｃ１２が格納される。ただし、カウント値Ｃ１２は０から２５５までの間の値しか表現できないので、処理Ａ１を２５６回以上続けて繰り返して実行すると、特定の階調値を有する画素データのみが外部データ転送装置２に入力された場合には、その階調値に対応するアドレスを有するプロセッサエレメントのマイクロカウンタ１２はオーバーフローを起こしてしまう。このため、処理Ａ１を２５５回だけ繰り返して実行された後、以下に説明する並列加算処理ＰＡが実行される。
【００３４】
図２の並列加算処理ＰＡにおいて、ＧＰ１０は累積加算命令Ａ０を全てのプロセッサエレメントＰＥ０〜ＰＥ２５５のＡＬＵ１４に出力する。これに応答して、各プロセッサエレメントＰＥｎのＡＬＵ１４は、カウント値Ｃ１２とカウント値Ｃ１５とを加算し、加算結果のカウント値Ｃ１４をカウンタレジスタ１５に出力する。プロセッサエレメントＰＥ０〜ＰＥ２５５の各ＡＬＵ１４による加算処理は、ＳＩＭＤ型マイクロプロセッサ１の並列演算機能によって実行されるので、比較的短時間で終了する。並列加算処理ＰＡの次に、ＧＰ１０は、リセット命令を各プロセッサエレメントＰＥｎのマイクロカウンタ１２に出力する。これに応答して、全てのマイクロカウンタ１２のカウント値Ｃ１２はゼロにリセットされる。
【００３５】
図２において、２５５回の処理Ａ１と、並列加算処理ＰＡと、それに続くマイクロカウンタ１２のリセット処理とを含む処理Ｂ１は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントＰＥｎのカウンタレジスタ１５には、階調値ｎの度数に対応するカウント値Ｃ１５が格納される。その後、外部データ転送装置２は、最後の画素データを処理したことを示す処理終了通知をＧＰ１０に出力する。これに応答して、ＧＰ１０は、各プロセッサエレメントＰＥｎのカウンタレジスタ１５に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ１５は、カウント値Ｃ１５をＧＰ１０に出力し、ヒストグラム生成処理を終了する。
【００３６】
以上説明したように、本実施形態に係るＳＩＭＤ型マイクロプロセッサ１において、各プロセッサエレメントＰＥｎは、階調値ｎに対応する固有のアドレスｎをそれぞれ有する。また、各プロセッサエレメントＰＥｎは、１６ビットのビット幅を有しかつアドレスｎに対応する階調値ｎの度数に対応するカウント値Ｃ１５を格納するカウンタレジスタ１５を備えた累積加算回路１３と、８ビットのビット幅を有しかつカウント値Ｃ１２を格納するマイクロカウンタ１２とをそれぞれ備える。また、外部データ転送装置２からアドレス信号がＳＩＭＤ型マイクロプロセッサ１に入力される毎に、当該入力されるアドレス信号に含まれるアドレスｎを有するプロセッサエレメントＰＥｎのマイクロカンタ１２は、カウント値Ｃ１２を１だけインクリメントする。さらに、グローバルプロセッサ１０は、図２の処理Ａ１を２５５回だけ繰り返して実行したタイミングで、各プロセッサエレメントＰＥｎのマイクロカンタ１２に格納されたカウント値Ｃ１２を、マイクロカンタ１２に対応するカウンタレジスタ１５に格納されたカウント値Ｃ１５に累積加算するように各累積加算回路１３を制御する並列加算処理ＰＡを実行するとともに、各プロセッサエレメンＰＥｎのマイクロカウンタ１２に格納されたカウント値Ｃ１２をリセットするように制御する。
【００３７】
従って、本実施形態によれば、各プロセッサエレメントＰＥｎにマイクロカウンタ１２を設けたので、処理対象の画素データ毎に累積加算命令Ａ０を実行する必要がなく、従来技術に比較してヒストグラムを高速に生成できる。また、図２の処理Ａ１をマイクロカウンタ１２に格納されるカウント値Ｃ１２の最大値に等しい回数だけ実行している期間中は、ＳＩＭＤ型マイクロプロセッサ１は他の処理を実行できるので、従来技術に比較してシステム全体のスループットが向上する。さらに、ＳＩＭＤ型マイクロプロセッサ１は、従来技術に係るＳＩＭＤ型マイクロプロセッサ１Ｐ（図９参照。）に比較して、マイクロカウンタ１２をさらに設けるだけで実現できる。一般に、従来技術に係るＳＩＭＤ型マイクロプロセッサ１Ｐにおいて、ポートレジスタ４０のビット幅は累積加算回路１３のビット幅と等しい（例えば、１６ビットである。）が、本実施形態に係るＳＩＭＤ型マイクロプロセッサ１に設けられるマイクロカウンタ１２のビット幅（本実施形態では、８ビットである。）は、ポートレジスタ４０のビット幅より小さい。このため、従来技術に係るＳＩＭＤ型マイクロプロセッサ１Ｐに新たに追加する構成要素のサイズは比較的小さくてすむ。
【００３８】
なお、本実施形態において、処理Ａ１を２５５回だけ繰り返して実行したが、本発明はこれに限らず、カウント値Ｃ１２の最大値以下の回数だけ繰り返して実行すればよい。
【００３９】
また、各カウンタレジスタ１５からカウント値Ｃ１５を読み出した後に、処理対象の画素データを追加して、さらに処理Ｂ１を継続して実行してもよい。
【００４０】
さらに、マイクロカンタ１２のビット幅は８ビットであったが、本発明はこれに限らず、カウンタレジスタ１５のビット幅より小さければよい。
【００４１】
第２の実施形態．
図３は、本発明の第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ａの構成を示すブロック図であり、図４は、図３のＳＩＭＤ型マイクロプロセッサ１Ａによって実行されるヒストグラム生成処理を示すシーケンス図である。
【００４２】
図３において、ＳＩＭＤ型マイクロプロセッサ１Ａは、ＧＰ１０と、２５６個のプロセッサエレメントＰＥ０Ａ，ＰＥ１Ａ，…，ＰＥ２５５Ａと、ＧＰ１０に接続されたＩＲＱ（Interrupt ReQuest）信号線３１と、所定の電源電圧Ｖｃｃを出力する直流電源とＩＲＱ信号線３１との間に接続されたプルアップ抵抗３２とを備えて構成される。各プロセッサエレメントＰＥｎＡには、プロセッサエレメント番号ｎに対応する固有のアドレスｎが割り当てられている。ここで、各プロセッサエレメントＰＥｎＡは、第１の実施形態に係るプロセッサエレメントＰＥｎに比較して、ＩＲＱ条件判定回路１６と、Ｎチャネル型ＭＯＳ電界効果トランジスタ（以下、ｎＭＯＳＦＥＴという。）１７とをさらに備えて構成されたことを特徴としている。
【００４３】
各プロセッサエレメントＰＥｎＡにおいて、ｎＭＯＳＦＥＴ１７は、ＩＲＱ条件判定回路１６に接続されたゲートと、ＩＲＱ信号線３１に接続されたドレインと、接地されたソースとを有する。すなわち、全てのｎＭＯＳＦＥＴ１７は互いにワイヤードオア接続されている。また、各プロセッサエレメントＰＥｎＡにおいて、ＩＲＱ条件判定回路１６は、マイクロカウンタ１２のカウント値Ｃ１２を検出し、検出されたカウント値Ｃ１２がカウント値Ｃ１２の最大値（本実施形態では、２５５である。）であるとき、ｎＭＯＳＦＥＴ１７をオンするように制御する。以上のように構成することにより、少なくとも１つのｎＭＯＳＦＥＴ１７がオンしたとき、ＩＲＱ信号線３１の電圧レベルがローレベルにされる。以下、ＩＲＱ信号線３１の電圧レベルがローレベルにされことを、割込要求信号が発生されるという。プロセッサエレメントＰＥ０Ａ〜ＰＥ２５５Ａの各ＩＲＱ条件判定回路１６及びｎＭＯＳＦＥＴ１７と、ＩＲＱ信号線３１と、プルアップ抵抗３２とは、プロセッサエレメントＰＥ０Ａ〜ＰＥ２５５Ａのマイクロカンタ１２のうちの少なくとも１つのマイクロカンタ１２に格納されたカウント値Ｃ１２が、マイクロカウンタ１２のビット幅に対応する所定のしきい値カウント値（本実施形態では、２５５である。）になったとき、割込要求信号を発生してＧＰ１０に出力する割込要求信号発生手段を構成する。割込要求信号に応答して、ＧＰ１０は並列加算処理ＰＡを実行する。
【００４４】
次に、図４を参照して、ＳＩＭＤ型マイクロプロセッサ１Ａによって実行されるヒストグラム生成処理を説明する。まず始めに、ＧＰ１０は、リセット命令を、各プロセッサエレメントＰＥｎのマイクロカウンタ１２及びカウンタレジスタ１５に出力する。これに応答して、各プロセッサエレメントＰＥｎＡにおいて、マイクロカウンタ１２は、カウント値Ｃ１２をゼロにリセットし、カウンタレジスタ１５は、カウント値Ｃ１５をゼロにリセットする。次に、ＧＰ１０は、図２の処理Ａ１と同様の処理Ａ１を開始することを指示する処理開始命令を外部データ転送装置２に出力する。これに応答して、外部データ転送装置２は、処理Ａ１を実行する。本実施形態では、処理Ａ１が実行される毎に、各プロセッサエレメントＰＥｎのＩＲＱ条件判定回路１６は、入力されるカウント値Ｃ１２が２５５であるか否かを判断し、ＮＯのときは対応するｎＭＯＳＦＥＴ１７をオンするように制御する。これにより、上述したように割込要求信号が発生されてＧＰ１０に出力される。すなわち、少なくとも１つのプロセッサエレメントＰＥｎＡにおいてカウント値Ｃ１２が２５５であるときに、割込要求信号が発生される。また、全てのプロセッサエレメントＰＥ０Ａ〜ＰＥ２５５Ａにおいてカウント値Ｃ１２が２５５未満であるときは、図４に示すように、処理Ａ１と、ＩＲＱ条件判定回路１６による判断処理とを含む処理Ａ２が繰り返して実行される。すなわち、処理Ａ２を実行すると、いずれか１つのマイクロカウンタ１２のカウント値Ｃ１２が１だけインクリメントされる。そして、処理Ａ２を繰り返して実行すると、各マイクロカウンタ１２のカウント値Ｃ１２が増えていき、少なくとも１つのマイクロカウンタ１２のカウント値Ｃ１２が２５５になると、対応するＩＲＱ条件判定回路１６は割込要求信号を発生してＧＰ１０に出力する。
【００４５】
ＧＰ１０は、割込要求信号に応答して、処理Ａ２を実行しないように外部データ転送装置２を制御し、図２と同様の並列加算処理ＰＡを割込処理として実行し、リセット命令を各プロセッサエレメントＰＥｎのマイクロカウンタ１２に出力する。これに応答して、全てのマイクロカウンタ１２のカウント値Ｃ１２はゼロにリセットされる。また、ＧＰ１０は、処理Ａ２を実行するように外部データ転送装置２を制御する。図４において、処理Ａ２と、並列加算処理ＰＡと、それに続くマイクロカウンタ１２のリセット処理とを含む処理Ｂ２は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントＰＥｎのカウンタレジスタ１５には、階調値ｎの度数に対応するカウント値Ｃ１５が格納される。その後、外部データ転送装置２は、最後の画素データを処理したことを示す処理終了通知をＧＰ１０に出力する。これに応答して、ＧＰ１０は、各プロセッサエレメントＰＥｎのカウンタレジスタ１５に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ１５は、カウント値Ｃ１５をＧＰ１０に出力し、ヒストグラム生成処理を終了する。
【００４６】
図４において、１回の処理Ｂ２に含まれる処理Ａ１の実行回数は、処理対象の画素データの階調値の分布によって変化する。例えば、処理対象の画素データの階調値の分布に偏りがあるときは、１回の処理Ｂ２に含まれる処理Ａ１の実行回数は、マイクロカウンタ１２のカウント値Ｃ１２の最大値（２５５である。）に比較的近くなる。しかしながら、処理対象の画素データの階調値の分布に偏りがないときは、１回の処理Ｂ２に含まれる処理Ａ１の実行回数は、マイクロカウンタ１２のカウント値Ｃ１２の最大値よりも大きくなり、第１の実施形態に比較して、処理Ａ１を２５５回繰り返して実行する毎にデータ転送装置２による処理を中断して並列加算処理ＰＡを実行する必要が無く、中断間隔（すなわち、並列加算処理ＰＡの実行間隔である。）を長くすることができる。これによりＳＩＭＤ型マイクロプロセッサ１Ａにより他の処理を実行できる期間が長くなり、システム全体のスループットがさらに向上する。
【００４７】
なお、本実施形態において、ＩＲＱ条件判定回路１６は、カウント値Ｃ１２が２５５に等しいか否かを判断したが、本発明はこれに限らず、カウント値Ｃ１２がカウント値Ｃ１２の最大値以下の所定のしきい値に等しいか否かを判断すればよい。
【００４８】
また、各カウンタレジスタ１５からカウント値Ｃ１５を読み出した後に、処理対象の画素データを追加して、さらに処理Ｂ２を継続して実行してもよい。
【００４９】
さらに、ＧＰ１０は、割込要求信号に応答して、処理Ａ２を実行しないように外部データ転送装置２を制御したが、本発明はこれに限らず、処理Ａ２の実行間隔が並列加算処理ＰＡを実行するために必要とされる期間よりも十分に長いときは、ＧＰ１０は、割込要求信号に応答して、処理Ａ２を実行しないように外部データ転送装置２を制御する必要はない。
【００５０】
第３の実施形態．
図５は、本発明の第３の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ｂの構成を示すブロック図であり、図６は、図５のＳＩＭＤ型マイクロプロセッサ１Ｂによって実行されるヒストグラム生成処理を示すシーケンス図である。
【００５１】
図５において、ＳＩＭＤ型マイクロプロセッサ１Ｂは、ＧＰ１０と、２５６個のプロセッサエレメントＰＥ０Ｂ，ＰＥ１Ｂ，…，ＰＥ２５５Ｂと、ＧＰ１０に接続されたＩＲＱ信号線３１と、所定の電源電圧Ｖｃｃを出力する直流電源とＩＲＱ信号線３１との間に接続されたプルアップ抵抗３２とを備えて構成される。各プロセッサエレメントＰＥｎＢには、プロセッサエレメント番号ｎに対応する固有のアドレスｎが割り当てられている。ここで、各プロセッサエレメントＰＥｎＢは、第２の実施形態に係るプロセッサエレメントＰＥｎＡに比較して、デコーダ及びコントローラ１１に代えてデコーダ及びコントローラ１１Ａを備え、マイクロカウンタ１２に代えてシフトレジスタ１２Ａを備え、ＩＲＱ条件判定回路１６に代えてＩＲＱ条件判定回路１６Ａを備えたことを特徴としている。
【００５２】
図５の各プロセッサエレメントＰＥｎＢにおいて、デコーダ及びコントローラ１１Ａは、外部データ転送装置２からのアドレス信号及び制御信号を入力し、アドレス信号に含まれるアドレスとプロセッサエレメントＰＥｎＢのアドレスｎとが一致し、かつ制御信号がデータ書き込みを示すときは、シフトアップを指示する指示信号Ｓ１１Ａを発生してシフトレジスタ１２Ａに出力する。また、各プロセッサエレメントＰＥｎＢにおいて、シフトレジスタ１２Ａは、縦続接続された８個の１ビットレジスタを備えて構成される。シフトレジスタ１２Ａは、シフトアップを指示する指示信号Ｓ１１Ａに応答して、格納している８ビットのビットデータＣ１２Ａの最下流の値Ｃ１２ＡｕをＩＲＱ条件判定回路１６Ａに出力し、ビットデータＣ１２Ａの各ビットのデータ（０又は１である。）を、入力されるクロックに従って１段分だけ下流のレジスタにシフトし、最上流のレジスタに１を格納する。また、各シフトレジスタ１２Ａは、ＧＰ１０からのリセット命令に応答して、ビットデータＣ１２Ａを「００００００００」にリセットする。なお、シフトレジスタ１２Ａの出力端子は、演算データバス２１を介してＡＬＵ１４の一方の入力端子に接続されている。
【００５３】
また、図５において、各プロセッサエレメントＰＥｎＢにおいて、ＩＲＱ条件判定回路１６Ａは、入力される値Ｃ１２Ａｕが１であるとき、ｎＭＯＳＦＥＴ１７をオンするように制御し、これにより割込要求信号がＧＰ１０に出力される。プロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５Ｂの各ＩＲＱ条件判定回路１６Ａ及びｎＭＯＳＦＥＴ１７と、ＩＲＱ信号線３１と、プルアップ抵抗３２とは、プロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５Ｂのシフトレジスタ１２Ａのうちの少なくとも１つのシフトレジスタ１２Ａに格納されたビットデータＣ１２Ａが、シフトレジスタ１２Ａのビット幅に対応する所定のしきい値ビットデータ（本実施形態では、「１１１１１１１１」である。）になったとき、割込要求信号を発生してＧＰ１０に出力する割込要求信号発生手段を構成する。
【００５４】
次に、図６を参照して、ＳＩＭＤ型マイクロプロセッサ１Ｂによって実行されるヒストグラム生成処理を説明する。まず始めに、ＧＰ１０は、リセット命令を、各プロセッサエレメントＰＥｎＢのシフトレジスタ１２Ａ及びカウンタレジスタ１５に出力する。これに応答して、各プロセッサエレメントＰＥｎにおいて、シフトレジスタ１２Ａは、ビットデータ１２Ａを「００００００００」にリセットし、カウンタレジスタ１５は、カウント値Ｃ１５をゼロにリセットする。次に、ＧＰ１０は、後述する処理Ａ３を開始することを指示する処理開始命令を外部データ転送装置２に出力する。これに応答して、外部データ転送装置２は、処理Ａ３を実行する。
【００５５】
処理Ａ３において、外部データ転送装置２は、外部装置から１つの画素データを入力すると、入力された画素データの階調値をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを発生して、各プロセッサエレメントＰＥｎのデコーダ及びコントローラ１１に出力する。これに応答して、各プロセッサエレメントＰＥｎのデコーダ及びコントローラ１１は、入力されたアドレス信号に含まれるアドレスがｎであり、かつ入力された制御信号がデータ書き込みを示すか否かを判断し、ＹＥＳのときは、シフトアップを指示する指示信号Ｓ１１Ａを発生してシフトレジスタ１２Ａに出力する一方、ＮＯのときは、指示信号Ｓ１１Ａを発生しない。さらに、シフトアップを指示する指示信号Ｓ１１Ａに応答して、シフトレジスタ１２Ａは、ビットデータＣ１２Ａを１段分だけ下流のレジスタにシフトし、最上流に１を格納する。
【００５６】
処理Ａ３に続いて、各プロセッサエレメントＰＥｎにおいて、ＩＲＱ条件判定回路１６Ａは、入力される値Ｃ１２Ａｕが１であるか否かを判断し、ＮＯのときは対応するｎＭＯＳＦＥＴ１７をオンするように制御する。これにより、割込要求信号が発生されてＧＰ１０に出力される。すなわち、少なくとも１つのプロセッサエレメントＰＥｎＢにおいてビットデータＣ１２Ａが「１１１１１１１１」であるときに、割込要求信号が発生される。また、全てのプロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５ＢにおいてビットデータＣ１２Ａが「１１１１１１１１」以外であるときは、図６に示すように、処理Ａ３と、ＩＲＱ条件判定回路１６Ａによる判断処理とを含む処理Ａ４が繰り返して実行される。すなわち、処理Ａ３を繰り返して実行すると、各ビットデータＣ１２Ａの値は、「００００００００」，「１０００００００」，「１１００００００」，…のように変化する。そして、少なくとも１つのシフトレジスタ１２ＡのビットデータＣ１２Ａが「１１１１１１１１」になると、対応するＩＲＱ条件判定回路１６Ａは割込要求信号を発生してＧＰ１０に出力する。
【００５７】
ＧＰ１０は、割込要求信号に応答して、処理Ａ４を実行しないように外部データ転送装置２を制御し、累積加算命令Ａ１を全てのプロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５ＢのＡＬＵ１４に出力する。これに応答して、各プロセッサエレメントＰＥｎＢのＡＬＵ１４は、ビットデータＣ１２Ａが「１０００００００」と等しいときにのみ、カウント値Ｃ１５に１を加算し、加算結果のカウント値Ｃ１４をカウンタレジスタ１５に出力する。次に、ＧＰ１０は、累積加算命令Ａ２を全てのプロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５ＢのＡＬＵ１４に出力する。これに応答して、各プロセッサエレメントＰＥｎＢのＡＬＵ１４は、ビットデータＣ１２Ａが「１１００００００」と等しいときにのみ、カウント値Ｃ１５に１を加算し、加算結果のカウント値Ｃ１４をカウンタレジスタ１５に出力する。以下、同様に、ＧＰ１０は、累積加算命令Ａ３，Ａ４，…，Ａ８を全てのプロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５ＢのＡＬＵ１４に順次出力する。ここで、累積加算命令Ａｍ（ｍ＝１，２，…，８）は、ビットデータＣ１２Ａの最上流からｍビット目までのビットに１が格納されているときにのみ、カウント値Ｃ１５にｍを加算して、加算結果のカウント値Ｃ１４をカウンタレジスタ１５に出力することを指示する命令である。プロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５Ｂの各ＡＬＵ１４による加算処理は、ＳＩＭＤ型マイクロプロセッサ１Ｂの並列演算機能によって実行されるので、比較的短時間で終了する。
【００５８】
ＧＰ１０は、累積加算命令Ａ８を全てのプロセッサエレメントＰＥ０Ｂ〜ＰＥ２５５ＢＡＬＵ１４に出力した後、リセット命令を各プロセッサエレメントＰＥｎＢのシフトレジスタ１２Ａに出力する。これに応答して、全てのシフトレジスタ１２ＡのビットデータＣ１２Ａは「００００００００」にリセットされる。また、ＧＰ１０は、処理Ａ４を実行するように外部データ転送装置２を制御する。
【００５９】
図６において、処理Ａ４と、累積加算命令Ａ１〜Ａ８と、それに続くシフトレジスタ１２Ａのリセット処理とを含む処理Ｂ３は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントＰＥｎＢのカウンタレジスタ１５には、階調値ｎの度数に対応するカウント値Ｃ１５が格納される。その後、外部データ転送装置２は、最後の画素データを処理したことを示す処理終了通知をＧＰ１０に出力する。これに応答して、ＧＰ１０は、各プロセッサエレメントＰＥｎのカウンタレジスタ１５に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ１５は、カウント値Ｃ１５をＧＰ１０に出力し、ヒストグラム生成処理を終了する。
【００６０】
図６において、１回の処理Ｂ３に含まれる処理Ａ３の実行回数は、処理対象の画素データの階調値の分布によって変化する。例えば、処理対象の画素データの階調値の分布に偏りがあるときは、１回の処理Ｂ３に含まれる処理Ａ３の実行回数は、シフトレジスタ１２Ａのビット幅（本実施形態では、８である。）に比較的近くなる。しかしながら、処理対象の画素データの階調値の分布に偏りがないときは、１回の処理Ｂ３に含まれる処理Ａ３の実行回数は、シフトレジスタ１２Ａのビット幅よりも大きくなる。
【００６１】
一般に、カウンタレジスタよりシフトレジスタの方が単純な構成を有するので、シフトレジスタ１２Ａは、カウントアップ機能を有するマイクロカウンタ１２よりシンプルな回路構成で実現できる。従って、第２の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ａに比較して、回路規模及び消費電力を小さく抑えることができる。
【００６２】
なお、各カウンタレジスタ１５からカウント値Ｃ１５を読み出した後に、処理対象の画素データを追加して、さらに処理Ｂ３を継続して実行してもよい。
【００６３】
さらに、ＧＰ１０は、割込要求信号に応答して、処理Ａ４を実行しないように外部データ転送装置２を制御したが、本発明はこれに限らず、処理Ａ４の実行間隔が累積加算命令Ａ１〜Ａ８を実行するために必要とされる期間よりも十分に長いときは、ＧＰ１０は、割込要求信号に応答して、処理Ａ４を実行しないように外部データ転送装置２を制御する必要はない。
【００６４】
第４の実施形態．
図７は、本発明の第４の実施形態に係るＳＩＭＤ型マイクロプロセッサ１Ｃの構成を示すブロック図であり、図８は、図７のＳＩＭＤ型マイクロプロセッサ１Ｃによって実行されるヒストグラム生成処理を示すシーケンス図である。
【００６５】
図７において、ＳＩＭＤ型マイクロプロセッサ１Ｃは、ＧＰ１０と、２５６個のプロセッサエレメントＰＥ０Ｃ，ＰＥ１Ｃ，…，ＰＥ２５５Ｃと、ＧＰ１０に接続されたＩＲＱ信号線３１と、所定の電源電圧Ｖｃｃを出力する直流電源とＩＲＱ信号線３１との間に接続されたプルアップ抵抗３２とを備えて構成される。各プロセッサエレメントＰＥｎＣには、プロセッサエレメント番号ｎに対応する固有のアドレスｎが割り当てられている。ここで、各プロセッサエレメントＰＥｎＣは、第３の実施形態に係るプロセッサエレメントＰＥｎＢに比較して、シフトレジスタ１２Ａと演算データバス２１との間に設けられたエンコーダ１８をさらに備えたことを特徴としている。図７において、エンコーダ１８は、シフトレジスタ１２Ａから出力されたビットデータＣ１２Ａを、バイナリデータＣ１８に符号化し、演算データバス２１を介してＡＬＵ１４に出力する。
【００６６】
次に、図８を参照して、ＳＩＭＤ型マイクロプロセッサ１Ｃによって実行されるヒストグラム生成処理を説明する。図８のヒストグラム生成処理は、図６のヒストグラム生成処理に比較して、割込要求信号がＧＰ１０に出力されるタイミングより後の処理のみが異なる。ＧＰ１０は、割込要求信号に応答して、処理Ａ４を実行しないように外部データ転送装置２を制御し、各プロセッサエレメントＰＥｎＣのＡＬＵ１４を、演算データバス２１に出力されたバイナリデータＣ１８を読み出すように制御する。次に、並列加算処理ＰＡ１が実行される。並列加算処理ＰＡ１において、ＧＰ１０は、累積加算命令Ａ０を全てのプロセッサエレメントＰＥ０Ｃ〜ＰＥ２５５ＣのＡＬＵ１４に出力する。これに応答して、各プロセッサエレメントＰＥｎＣのＡＬＵ１４は、入力されるバイナリデータＣ１８とカウント値Ｃ１５とを加算して、加算結果のカウント値Ｃ１４をカウンタレジスタ１５に出力する。プロセッサエレメントＰＥ０Ｃ〜ＰＥ２５５Ｃの各ＡＬＵ１４による加算処理は、ＳＩＭＤ型マイクロプロセッサ１Ｃの並列演算機能によって実行されるので、比較的短時間で終了する。
【００６７】
次に、ＧＰ１０は、リセット命令を各プロセッサエレメントＰＥｎＣのシフトレジスタ１２Ａに出力する。これに応答して、全てのシフトレジスタ１２ＡのビットデータＣ１２Ａは「００００００００」にリセットされる。また、ＧＰ１０は、処理Ａ４を実行するように外部データ転送装置２を制御する。
【００６８】
図８において、処理Ａ４と、並列加算処理ＰＡ１と、それに続くシフトレジスタ１２Ａのリセット処理とを含む処理Ｂ４は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントＰＥｎＣのカウンタレジスタ１５には、階調値ｎの度数に対応するカウント値Ｃ１５が格納される。その後、外部データ転送装置２は、最後の画素データを処理したことを示す処理終了通知をＧＰ１０に出力する。これに応答して、ＧＰ１０は、各プロセッサエレメントＰＥｎのカウンタレジスタ１５に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ１５は、カウント値Ｃ１５をＧＰ１０に出力し、ヒストグラム生成処理を終了する。
【００６９】
第３の実施形態では、シフトレジスタ１２Ａに格納されたビットデータＣ１２ＡをＡＬＵ１４に出力したため、処理Ｂ３において、８個の累積加算命令Ａ１〜Ａ８を順次実行する必要があった。これに対して、本実施形態では、ビットデータＣ１２ＡをバイナリデータＣ１８に変換してＡＬＵ１４に出力するので、処理Ｂ４においてＡＬＵ１４による累積加算処理を１回だけ実行すればよい。このため、第３の実施形態に比較して累積加算の回数を最小限に抑えて、高速にヒストグラムを生成できる。
【００７０】
上記各実施形態において、２５６階調の画素データに対してヒストグラム生成処理を実行したが、本発明はこれに限らず、任意の階調数の画素データに対して適用できる。この場合、ＳＩＭＤ型マイクロプロセッサ１，１Ａ，１Ｂ，１Ｃはそれぞれ、画素データの階調数以上の個数のプロセッサエレメントＰＥｎ，ＰＥｎＡ，ＰＥｎＢ，ＰＥｎＣを備えて構成される。
【００７１】
また、上記各実施形態において、マイクロカウンタ１２と、シフトレジスタ１２Ａと、カウンタレジスタ１５とを、それぞれＧＰ１０からのリセット命令に応答してリセットしたが、本発明はこれに限らず、外部データ転送装置２から所定の初期値を書き込むように制御してもよい。
【００７２】
さらに、上記各実施形態おいて、画素データの階調値のヒストグラムを生成したが、本発明はこれに限らず、画素データの各色成分の濃度などの他の画素値のヒストグラムを生成してもよい。
【産業上の利用可能性】
【００７３】
以上説明したように、本発明に係るＳＩＭＤ型マイクロプロセッサ及びＳＩＭＤ型マイクロプロセッサの処理方法によれば、ＳＩＭＤ型マイクロプロセッサの各プロセッサエレメントは画素値に対応する固有のアドレスをそれぞれ有し、所定の第１のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第１のビット幅より小さい所定の第２のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備える。また、アドレス信号がＳＩＭＤ型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を１だけインクリメントする。さらに、制御手段は、所定のタイミングで、各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御する。従って、従来技術に比較してヒストグラムを高速に生成でき、システム全体のスループットを向上できる。
【００７４】
本発明に係るＳＩＭＤ型マイクロプロセッサ及び当該ＳＩＭＤ型マイクロプロセッサの処理方法は、デジタルカメラ、デジタルテレビジョン放送受信機、プリンタ装置、及びデジタル複写機などの画像処理を実行する装置に利用できる。
【符号の説明】
【００７５】
１，１Ａ，１Ｂ，１Ｃ…ＳＩＭＤ型マイクロプロセッサ、
２…外部データ転送装置、
１０…グローバルプロセッサ、
１１Ａ…デコーダ及びコントローラ、
１２…マイクロカウンタ、
１２Ａ…シフトレジスタ、
１３…累積加算回路、
１４…ＡＬＵ、
１５…カウンタレジスタ、
１６，１６Ａ…ＩＲＱ条件判定回路、
１７…ｎＭＯＳＦＥＴ、
１８…エンコーダ、
２１，２２…演算データバス、
３１…ＩＲＱ信号線、
３２…プルアップ抵抗、
ＰＥ０〜ＰＥ２５５，ＰＥ０Ａ〜ＰＥ２５５Ａ，ＰＥ０Ｂ〜ＰＥ２５５Ｂ，ＰＥ０Ｃ〜ＰＥ２５５Ｃ…プロセッサエレメント。
【先行技術文献】
【特許文献】
【００７６】
【特許文献１】特開２００１−８４２２９号公報。
【特許文献２】特開２００２−３００４０７号公報。
【図１】
2012059131.tif 000003
【図２】
2012059131.tif 000004
【図３】
2012059131.tif 000005
【図４】
2012059131.tif 000006
【図５】
2012059131.tif 000007
【図６】
2012059131.tif 000008
【図７】
2012059131.tif 000009
【図８】
2012059131.tif 000010
【図９】
2012059131.tif 000011