(57)【要約】【課題】並列的に入力されるデータに対処してヒストグラムの度数データを生成することができ、ヒストグラムの度数データを生成する処理時間をその入力データにおけるヒストグラム値の分布状況に依存せず、更にはヒストグラムの度数データを累積するために用いる記憶領域を少なくすることができる並列演算装置を提供する。【解決手段】複数のプロセッサによる並列的な演算結果に対して、演算結果の種別毎にそのデータ数を並列的に計数する複数のカウンタを有し、夫々のカウンタの計数値を累積してヒストグラムの度数とするヒストグラムカウンタ回路を備える。【選択図】図３
2013008270.tif 000002
【特許請求の範囲】
【請求項１】
並列演算が可能なＮ個のプロセッサと、
前記Ｎ個のプロセッサによる並列演算毎に、夫々の演算結果て出力するＭ個のカウンタと、
前記Ｍ個のカウンタの出力をカウンタ毎に累積して記憶するヒストグラムカウンタ回路と
を有する並列演算装置。
【請求項２】
請求項１において、
前記Ｍ個のカウンタは、前記夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数をヒストグラム値毎に計数して出力する
並列演算装置。
【請求項３】
請求項１において、
前記並列演算装置は、前記夫々の演算結果がＭ種類のヒストグラム値の何れに属するかを示すためのＭ種類の種別信号を生成するＮ個の信号生成回路を更に有し、
前記Ｍ個のカウンタは、前記Ｎ個の信号生成回路から出力される種別信号を種類別に入力して計数することにより、前記Ｎ個のプロセッサによる並列演算毎に夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数を取得する
並列演算装置。
【請求項４】
請求項３において、
前記信号生成回路は、対応するプロセッサの演算結果に対して、ヒストグラム値に対応するＭ種類の種別信号を生成し、入力した演算結果に対応するヒストグラム値の種別信号を論理値１とし、入力した演算結に非対応のヒストグラム値の種別信号を論理値０として出力する
並列演算装置。
【請求項５】
請求項３において、
前記ヒストグラムカウンタ回路は、前記Ｍ個のカウンタ毎に設けられた加算回路及びレジスタを有し、
前記加算回路は対応するカウンタの出力と対応するレジスタが保持する値とを加算し、前記レジスタは対応する加算回路の出力を受けて記憶する
並列演算装置。
【請求項６】
請求項３において、
前記Ｍ種類のヒストグラム値は、画素が採り得る階調度である
並列演算装置。
【請求項７】
並列演算が可能なＮ個のプロセッサと、
前記Ｎ個のプロセッサによる並列演算毎に、夫々の演算結果に基づいてＭ種類に分類されたデータの各々の度数を計数し、その計数値を前記並列演算のＫ回単位で累積し、累積タイミングが相互にずらされるＭ個のカウンタと
を有する並列演算装置。
【請求項８】
請求項７において、
前記Ｍ個のカウンタは、前記夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数をヒストグラム値毎に計数し、その計数値を前記並列演算のＫ回単位で累積し、
前記並列演算装置は、前記Ｍ個のカウンタをＫ個単位で分割したＪ個の各グループから順次１個づつ選択された前記カウンタの出力をカウンタ毎に累積して記憶するＫ個の記憶領域をそれぞれ備えたＪ個のメモリを更に有する
並列演算装置。
【請求項９】
請求項7において、
前記並列演算装置は、前記夫々の演算結果がＭ種類のヒストグラム値の何れに属するかを示すためのＭ種類の種別信号を生成するＮ個の信号生成回路を更に有し、
前記Ｍ個のカウンタは、前記Ｎ個の信号生成回路から出力される種別信号を種類別に入力して計数し、その計数値を前記並列演算のＫ回単位で累積し、
前記並列演算装置は、
前記Ｍ個のカウンタをＫ個単位で分割したＪ個の各グループから順次１個づつ前記カウンタの出力を選択するカウンタセレクタと、
前記カウンタセレクタで選択された前記カウンタの出力をカウンタ毎に累積して記憶するＫ個の記憶領域をそれぞれ備え、前記カウンタの出力選択に同期して前記記憶領域が選択されるＪ個のメモリと
を更に有する
並列演算装置。
【請求項１０】
請求項９において、
前記信号生成回路は、対応するプロセッサの演算結果に対して、ヒストグラム値に対応するＭ種類の種別信号を生成し、入力した演算結果に対応するヒストグラム値の種別信号を論理値１とし、入力した演算結果に非対応のヒストグラム値の種別信号を論理値０として出力する
並列演算装置。
【請求項１１】
請求項１０において、
前記カウンタは、Ｎ個の信号生成回路から対応する一種類の種別信号を入力して計数するビットカウンタと、加算回路及び累積バッファとを有し、
前記並列演算のＫ回単位で、前記ビットカウンタの出力と前記累積バッファが保持する値とを前記加算回路で加算して、その加算結果を前記累積バッファに累積する
並列演算装置。
【請求項１２】
請求項１０において、
前記カウンタは、
前記並列演算のＫ回単位で、Ｎ個信号生成回路から対応する一種類の種別信号を入力して保持する入力バッファと、
前記並列演算のＫ回単位で、前記入力バッファが保持する種別信号を計数して出力するビットカウンタと
を更に有する並列演算装置。
【請求項１３】
請求項９において、
前記Ｍ種類のヒストグラム値は、画素が採り得る階調度である
並列演算装置。
【請求項１４】
並列演算装置と、前記並列演算装置を制御する中央処理装置とを有するマイクロコンピュータであって、
前記並列演算装置は、
並列演算が可能なＮ個のプロセッサと、
前記Ｎ個のプロセッサによる並列演算毎に、夫々の演算結果がＭ種類のヒストグラム値の何れに属するかを示すためのＭ種類の種別信号を生成するＮ個の信号生成回路と、
前記Ｎ個の信号生成回路から出力される種別信号を種類別に入力して計数することにより、前記Ｎ個のプロセッサによる並列演算毎に夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数を取得するＭ個のカウンタと、
前記Ｍ個のカウンタ毎にその出力を累積して記憶するヒストグラムカウンタ回路と
を有するマイクロコンピュータ。
【請求項１５】
請求項１４において、
前記並列演算装置と前記中央処理装置とが共通の半導体基板に形成されて成る
マイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ヒストグラムの演算に用いる並列演算装置及びマイクロコンピュータに関し、例えば、画像処理プロセッサ、デジタルシグナルプロセッサ、及び音声処理プロセッサなどのマイクロコンピュータに適用して有効な技術に関する。
【背景技術】
【０００２】
画像処理や音声処理などのように大きなデ−タを扱うデータ処理では、複数のプロセッサを並列に動作させてデータ処理の効率化を図ることが多い。しかしながら、データ処理の中にはプロセッサの並列性を十分に生かせないものがあった。例えばヒストグラムを生成するための演算である。ヒストグラムはデ−タの度数分布（出現頻度）を示すものであり、例えば画像データに対する処理では画像全体のヒストグラムを取る事に始まり、画像の局所的な特徴量の記述にもヒストグラムが使用され、その利用頻度は高い。
【０００３】
高速にヒストグラムを算出するための技術として、特許文献１には、１系統のデ−タ入力からヒストグラムを取得する装置について記載がある。特許文献２も１と同様に１系統のデ−タ入力からヒストグラムを取得する装置について記載がある。
【０００４】
特許文献３には、少ない語長の記憶手段で、より大きな数値表現を可能にして、入力画像デ−タの画素数に依存しにくいようにしたヒストグラムを算出する回路が開示される。
【０００５】
特許文献４には、ヒストグラムの累積値が０になる個所を省略するヒストグラム取得装置について記載される。これによれば、ヒストグラムの度数が０のヒストグラム値保持する記憶領域が不要になるので、ヒストグラム値を保持する記憶領域（単にビンとも記す）の数を減らすことができ、複数のビンを構成する階調度数メモリの度数データの転送処理の軽減若しくは転送時間の短縮に寄与する。
【０００６】
特許文献５にはプロセッサ毎に最終的に取得したいヒストグラムと同じだけの容量を持つサブヒストグラムを設け、プロセッサ毎にサブヒストグラムを算出する。算出後、サブヒストグラムをビン毎に加算し所望のヒストグラムを取得する。
【０００７】
非特許文献１には複数のプロセッサが同じヒストグラムのビンにアクセスする事を許容したマルチプロセッサ方式でヒストグラムを生成する構成が示される。この場合にプロセッサによるビンの更新は順序づけられて処理される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開昭６１−１５３７７１号公報
【特許文献２】特開昭０１−１６６１７４号公報
【特許文献３】特開２００２−１０９５３５号公報
【特許文献４】特開平１０−１０５７０２号公報
【特許文献５】特開昭６３−９８０７８号公報
【非特許文献】
【０００９】
【非特許文献１】“Histogram calculatioＮ iＮ CUDA”、2007年11月、NVIDIA、［平成23年5月19日検索］、インタ−ネット<URL：http://developer.dowＮload.Ｎvidia.com/compute/cuda/1_1/Website/projects/histogram256/doc/histogram.pdf.>
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明者は複数個のプロセッサによって並列的に処理されたデータを並列的に入力して処理を行うことによって高速にヒストグラムを算出することについて検討した。
【００１１】
しかしながら、特許文献１乃至４の何れにおいても、並列的に入力されるデータに対してヒストグラムを生成する処理には対応する事ができない。
【００１２】
特許文献５の場合には、並列的に入力されるデータに対してヒストグラムを生成する処理を行うことはできるが、プロセッサの数分だけサブヒストグラム用のメモリ領域を用意しなければならない。要する。プロセッサ数をＮ，ビン数をＭ、１個のビンの最大度数を３２ビットとすると、サブヒストグラム用のメモリ領域にはＮ×Ｍ×３２ビット分の記憶容量が必要になる。その上、夫々のサブヒストグラム用のメモリ領域に蓄積されたサブヒストグラムのデータを加算しなければならず、その加算処理が全体の処理時間を増加させる要因になる。
【００１３】
非特許文献１の場合は、入力データのパタ−ンによって処理時間が異なる。例えば、画像の輝度値のヒストグラムを取得する場合、処理時間が最悪になるケ−スは画像の輝度値が全て同じ場合である。夫々のプロセッサは１クロックで１個のビンに対するヒストグラムの度数の更新を行うことができるものとし、このときのプロセッサ数をＮとすると、各プロセッサがビンの更新処理を行う順番が来るまで処必ずＮクロック待たされることになり処理時間がかかる。
【００１４】
本発明の目的は、並列的に入力されるデータに対処してヒストグラムの度数データを生成することができ、ヒストグラムの度数データを生成する処理時間をその入力データにおけるヒストグラム値の分布状況に依存せず、更にはヒストグラムの度数データを累積するために用いる記憶領域を少なくすることができる並列演算装置及びマイクロコンピュータを提供することにある。
【００１５】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１６】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１７】
すなわち、複数のプロセッサによる並列的な演算結果に対して、演算結果の種別毎にそのデータ数を並列的に計数する複数のカウンタを有し、夫々のカウンタの計数値を累積してヒストグラムの度数とするヒストグラムカウンタ回路を備える。
【００１８】
上記複数のカウンタを設ける事で演算結果の並列な入力に対応できる。それ故に、前記ヒストグラムカウンタ回路においてカウンタの計数値を累積するために必要なメモリ領域は、従来のサブヒストグラムを形成する場合に必要とされるメモリ領域に比べて小さくすることができ、更に、複数のプロセッサが予め決められた順序にしたがってヒストグラムの度数を更新するという直列的な処理に比べてヒストグラムの度数の更新に至るまで並列的な演算結果に対して並列的に処理を進めることができるから、処理するデ−タの分布に関わらずヒストグラムを形成する処理を一定時間で完了することができる。
【発明の効果】
【００１９】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記のとおりである。
【００２０】
すなわち、並列的に入力されるデータに対処してヒストグラムの度数データを生成することができ、ヒストグラムの度数データを生成する処理時間をその入力データにおけるヒストグラム値の分布状況に依存せず、更にはヒストグラムの度数データを累積するために用いる記憶領域を、サブヒストグラムを使う手法に比べて少なくすることができる。
【図面の簡単な説明】
【００２１】
【図１】図１は本発明の一実施の形態に係るマイクロコンピュータを例示するブロック図である。
【図２】図２は横軸を階調ヒストグラム値、縦軸を度数とするヒストグラムを例示する説明図である。
【図３】図３は実施の形態１における画像処理モジュールの具体例を示すブロック図である。
【図４】図４は図３におけるカウンタの構成を例示するブロック図である。
【図５】図５は理解を容易にするために図３においてＮ＝２，M＝３としたときの構成を簡略化して示すブロック図である。
【図６】図６は図５の構成に基づくヒストグラム処理の動作タイミングを例示するタイミングチャートである。
【図７】図７はヒストグラムメモリにＲＡＭを用いた場合の実施の形態２に係る画像処理モジュールの具体例を示すブロック図である。
【図８】図８は図７においてＫサイクル分の入力を毎サイクル累積するカウンタの構成を例示するブロック図である。
【図９】図９は図７においてカウンタバッファをＫ倍備えたカウンタの構成を例示するブロック図である。
【図１０】図１０は理解を容易にするために図７においてＮ＝２，Ｍ＝４、Ｋ＝２としたときの構成を簡略化して示すブロック図である。
【図１１】図１１は図１０の構成に基づくヒストグラム処理の動作タイミングを例示タイミングチャ−トである。
【発明を実施するための形態】
【００２２】
１．実施の形態の概要
先ず、本願において開示される発明の代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００２３】
〔１〕＜Ｎ個の並列演算結果からＭ種類のヒストグラム値毎のデータ個数を生成＞
本発明の代表的な実施の形態に係る並列演算装置（１０３）は、並列演算が可能なＮ個のプロセッサ（１００−１〜１００−Ｎ）と、前記Ｎ個のプロセッサによる並列演算毎に、夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数をヒストグラム値毎に計数して出力するＭ個のカウンタ（３０３−１〜３０３−Ｍ）と、前記Ｍ個のカウンタの出力をカウンタ毎に累積して記憶するヒストグラムカウンタ回路（３０４，１０６）と、を有する。
【００２４】
これによれば、上記複数のカウンタを設ける事でＮ個のそれぞれのプロセッサによる演算結果の並列な入力に対応できる。それ故に、前記ヒストグラムカウンタ回路において前記カウンタの計数値を累積するために必要なヒストグラムカウンタ回路におけるメモリ領域は、従来のサブヒストグラムを形成する場合に必要とされるメモリ領域に比べて小さくすることができる。更に、ヒストグラムの度数の更新に至るまで並列的な演算結果に対して並列的に処理を進めることができるから、複数のプロセッサが予め決められた順序にしたがってヒストグラムの度数を更新するという直列的な処理に比べると、処理するデ−タの分布に関わらずヒストグラムを形成する処理を一定時間で完了することができる。
【００２５】
〔２〕＜Ｎ個の並列演算結果からＭ種類のヒストグラム値毎のデータ個数を生成＞
本発明の更に具体的な実施の形態に係る並列演算装置（１０３）は、並列演算が可能なＮ個のプロセッサ（１００−１〜１００−Ｎ）と、前記Ｎ個のプロセッサによる並列演算毎に、夫々の演算結果がＭ種類のヒストグラム値の何れに属するかを示すためのＭ種類の種別信号を生成するＮ個の信号生成回路（３０２−１〜３０２Ｎ）と、前記Ｎ個の信号生成回路から出力される種別信号を種類別に入力して計数することにより、前記Ｎ個のプロセッサによる並列演算毎に夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数を取得するＭ個のカウンタ（３０１−１〜３０１１−Ｍ）と、前記Ｍ個のカウンタ毎にその出力を累積して記憶するヒストグラムカウンタ回路（３０４，１０６）と、を有する。
【００２６】
これによれば、項１と同様の作用効果を奏する。更に、Ｎ個の信号生成回路のそれぞれが対応する演算結果に対してＭ種類の種別信号を生成してＭ個の各カウンタに分配するから、Ｍ個のカウンタによるヒストグラム値毎のデータ個数の計数処理を容易に並列化して実行する事ができるようになる。
【００２７】
〔３〕＜信号生成回路＞
項２の並列演算装置において、前記信号生成回路は、対応するプロセッサの演算結果に対して、ヒストグラム値に対応するＭ種類の種別信号を生成し、入力した演算結果に対応するヒストグラム値の種別信号を論理値１とし、入力した演算結に非対応のヒストグラム値の種別信号を論理値０として出力する。
【００２８】
これによれば、データ個数を計数する前記カウンタに好適な信号生成回路を実現することができる。
【００２９】
〔４〕＜ヒストグラムカウンタ回路＞
項２の並列演算装置において、前記ヒストグラムカウンタ回路は、前記Ｍ個のカウンタ毎に設けられた加算回路（３０４−１〜３０４Ｍ）及びレジスタ（３０５−１〜３０５−Ｍ）を有し、前記加算回路は対応するカウンタの出力と対応するレジスタが保持する値とを加算し、前記レジスタは対応する加算回路の出力を受けて記憶する。
【００３０】
これによれば、Ｎ個のプロセッサによる並列演算毎にＭ個のカウンタで計数されたデータ個数を毎回ヒストグラムカウンタ回路に累積するための構成をレジスタを用いて容易に実現することができる。
【００３１】
〔５〕＜画像データにおける階調度と画素数とのヒストグラム生成＞
項２の並列演算装置において、前記Ｍ種類のヒストグラム値は、画素が採り得る階調度である。
【００３２】
これによれば、画像データの階調度に対するヒストグラムを用いるが画像処理に並列演算装置を適用することができる。
【００３３】
〔６〕＜マイクロコンピュータ＞
本発明の別の実施の形態に係るマイクロコンピュータ（９９）は、項２の並列演算装置と、前記並列演算装置を制御する中央処理装置（１１０）とを有する。
【００３４】
これによれば、マイクロコンピュータにおけるヒストグラムの演算処理機能を向上させることができる。
【００３５】
〔７〕＜１チップマイクロコンピュータ＞
項６のマイクロコンピュータは１個の半導体基板に形成される。
【００３６】
これによれば、上記ヒストグラムの演算処理機能を１チップに集積することができる。
【００３７】
〔８〕＜Ｎ個の並列演算結果からＭ種類のヒストグラム値毎のデータ個数をメモリに累積＞
本発明の更に別の実施の形態に係る並列演算装置（１０３Ａ）は、並列演算が可能なＮ個のプロセッサ（１００−１〜１００−Ｎ）と、前記Ｎ個のプロセッサによる並列演算毎に夫々の演算結果が属するＭ種類のヒストグラム値毎のデータ個数をヒストグラム値毎に計数し、その計数値を前記並列演算のＫ回単位で累積し、累積タイミングが相互にずらされるＭ個のカウンタ（７０６−１〜７０６Ｍ）と、前記Ｍ個のカウンタをＫ個単位で分割したＪ個の各グループから順次１個づつ選択された前記カウンタの出力をカウンタ毎に累積して記憶するＫ個の記憶領域（７０１−１〜７０１−Ｋ、７０２−１〜７０２−Ｋ）をそれぞれ備えたＪ個のメモリ（７０１，７０２）と、を有する。
【００３８】
これによれば、記複数のカウンタを設ける事でＮ個のそれぞれのプロセッサによる演算結果の並列な入力に対応できる。それ故に、前記カウンタの計数値を累積するために必要なメモリのメモリ領域は、従来のサブヒストグラムを形成する場合に必要とされるメモリ領域に比べて小さくすることができる。特に、Ｍ種類のヒストグラム値毎のデータ個数を夫々Ｋ個の領域を有するＪ個のメモリに累積することができる。更に、ヒストグラムの度数の更新に至るまで並列的な演算結果に対して並列的に処理を進めることができるから、複数のプロセッサが予め決められた順序にしたがってヒストグラムの度数を更新するという直列的な処理に比べると、処理するデ−タの分布に関わらずヒストグラムを形成する処理を一定時間で完了することができる。
【００３９】
〔９〕＜Ｎ個の並列演算結果からＭ種類のヒストグラム値毎のデータ個数をメモリに累積＞
本発明の更に別の実施の形態に係る並列演算装置（１０３Ａ）は、並列演算が可能なＮ個のプロセッサ（１００−１〜１００−Ｎ）と、前記Ｎ個のプロセッサによる並列演算毎に、夫々の演算結果がＭ種類のヒストグラム値の何れに属するかを示すためのＭ種類の種別信号を生成するＮ個の信号生成回路（３０２−１〜３０２−Ｎ）と、前記Ｎ個の信号生成回路から出力される種別信号を種類別に入力して計数し、その計数値を前記並列演算のＫ回単位で累積し、累積タイミングが相互にずらされるＭ個のカウンタ（７０６−１〜７０６−Ｍ）とを有する。更に並列演算装置は、前記Ｍ個のカウンタをＫ個単位で分割したＪ個の各グループから順次１個づつ前記カウンタの出力を選択するカウンタセレクタ（７０３，７０４）を有する。更に並列演算装置は、前記カウンタセレクタで選択された前記カウンタの出力をカウンタ毎に累積して記憶するＫ個の記憶領域（７０１−１〜７０１−Ｋ、７０２−１〜７０２−Ｋ）をそれぞれ備え、前記カウンタの出力選択に同期して前記記憶領域が選択されるＪ個のメモリ（７０１，７０２）を有する。
【００４０】
これによれば、項８と同様の作用効果を奏する。更に、Ｎ個の信号生成回路のそれぞれが対応する演算結果に対してＭ種類の種別信号を生成してＭ個の各カウンタに分配するから、Ｍ個のカウンタによるヒストグラム値毎のデータ個数の計数処理を容易に並列化して実行する事ができるようになる。
【００４１】
〔１０〕＜信号生成回路＞
項９の並列演算装置において、前記信号生成回路は、対応するプロセッサの演算結果に対して、ヒストグラム値に対応するＭ種類の種別信号を生成し、入力した演算結果に対応するヒストグラム値の種別信号を論理値１とし、入力した演算結果に非対応のヒストグラム値の種別信号を論理値０として出力する。
【００４２】
これによれば、データ個数を計数する前記カウンタに好適な信号生成回路を実現することができる。
【００４３】
〔１１〕＜カウンタ＞
項１０の並列演算装置において、前記カウンタは、Ｎ個の信号生成回路から対応する一種類の種別信号を入力して計数するビットカウンタ（８０４）と、加算回路（８０５）及び累積バッファ（８０６）とを有する。このカウンタは、前記並列演算のＫ回単位で、前記ビットカウンタの出力と前記累積バッファが保持する値とを前記加算回路で加算して、その加算結果を前記累積バッファに累積する。
【００４４】
これによれば、前記メモリのＫ個の記憶領域にヒストグラム値毎のデータ個数を順番に書き込むための書き込み待ち時間を容易に確保することができるようになる。
【００４５】
〔１２〕＜カウンタ＞
項１０の並列演算装置において、前記カウンタ（７０６−ｍ）は、前記並列演算のＫ回単位で、Ｎ個信号生成回路から対応する一種類の種別信号を入力して保持する入力バッファ（９０４−１−１〜９０４−１−Ｋ、…、９０４−Ｎ−１〜９０４−Ｎ−Ｋ）と、前記並列演算のＫ回単位で、前記入力バッファが保持する種別信号を計数して出力するビットカウンタ（９０７）とを有する。
【００４６】
これによれば、前記メモリのＫ個の記憶領域にヒストグラム値毎のデータ個数を順番に書き込むための書き込み待ち時間を確保する構成を簡単に得ることができる。
【００４７】
〔１３〕＜画像データにおける階調度と画素数とのヒストグラム生成＞
項９の並列演算装置において、前記Ｍ種類のヒストグラム値は、画素が採り得る階調度である。
【００４８】
これによれば、画像データの階調度に対するヒストグラムを用いるが画像処理に並列演算装置を適用することができる。
【００４９】
〔１４〕＜マイクロコンピュータ＞
本発明の更に別の実施の形態に係るマイクロコンピュータは、項９記載の並列演算装置と、前記並列演算装置を制御する中央処理装置（１１０）とを有する。
【００５０】
これによれば、マイクロコンピュータにおけるヒストグラムの演算処理機能を向上させることができる。
【００５１】
〔１５〕＜1チップマイクロコンピュータ＞
項１４のマイクロコンピュータは１個の半導体基板に形成される。
【００５２】
これによれば、上記ヒストグラムの演算処理機能を１チップに集積することができる。
【００５３】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００５４】
《実施の形態１》
図１には本発明の一実施の形態に係るマイクロコンピュータが例示される。マイクロコンピュータ（ＭＣＵ）９９は、特に制限されないが、単結晶シリコンのような１個の半導体基板にＣＭＯＳ集積回路製造技術によって形成されている。マイクロコンピュータはシングルチップに限定されずマルチチップで構成されてもよい。
【００５５】
マイクロコンピュータ９９は、並列演算装置の一例である画像処理モジュール（ＧＲＦＭ）１０３を備え、画像処理モジュール１０３は、中央処理装置（ＣＰＵ）１１０、ビデオインタフェース回路（ＶＩＦ）１０９及びメモリコントローラ（ＭＣＮＴ）１０７などと一緒に内部バス１０２に結合される。メモリコントローラ１０７には外部メモリ（ＥＸＭＲＹ）１０１が接続され、画像処理モジュール１０３は外部メモリ１０１に格納された画像デ−タなどをリードして画像処理を行い、処理結果は外部メモリ１０１などに書き込まれる。ＣＰＵ１１０は図示を省略するプログラムメモリに格納されたプログラムを実行してマイクロコンピュータ９９の全体的な制御を司る。
【００５６】
ビデオインタフェース１０９には例えばビデオカメラ１０８が接続され、ビデオインタフェース１０９はビデオカメラ１０８で撮像された映像デ−タを外部メモリ１０１に展開したりする。
【００５７】
画像処理モジュール１０３は、演算サイクル毎に並列演算が可能なＮ個（Ｎは正の整数）のプロセッサ（ＰＲＣＳ＃１〜ＰＲＣＳ＃Ｎ）１００−１〜１００−Ｎを有するプロセッサ群１０４を有する。プロセッサ群１０４は、外部メモリ１０１から画像デ−タを読み出し、例えば小領域ごと、例えば表示フレームの位置又は複数表示ライン毎に区切って（表示フレームが「画像」である場合はその画像の位置又は複数画像ライン毎に区切って）Ｎ個のプロセッサ１００−１〜１００−Ｎに分配し、小領域ごとに並列に演算処理が行われる。特にここでは、並列に処理された演算結果を用いて画像データに対するヒストグラム（度数分布若しくは頻度分布）のデータを取得する場合の構成を主として説明するものとする。
【００５８】
画像処理モジュール１０３は、画像データに対するヒストグラムのデータを格納するヒストグラムメモリ（ＨＧＭＲＹ)１０６を有する。ヒストグラムメモリ１０６は、例えば２５６階調の画像の濃淡値のヒストグラムを形成するために、各階調値（階調ヒストグラム値）毎に最大で６５５３６までの度数を取ると仮定すると、一つの階調ヒストグラム値を格納する記憶領域である１個のビン当り３２ビットのサイズで、合計２５６個のビンに相当するメモリ容量を持つメモリを利用することが考えられる。入力された画像データをプロセッサ群１０４の各プロセッサ１００−１〜１００−Ｎが並列的に処理し、その結果は並列にヒストグラム処理回路（ＨＧＰＲＣＳ）１０５に送られ、ヒストグラム処理回路１０５で処理された出力がヒストグラムメモリ１０６の対応するビンに格納されることによって、例えば図２に例示されるようなヒストグラムのデータが蓄積される。図２において横軸は階調ヒストグラム値であり、縦軸が度数を示す。ヒストグラムメモリ１０６に蓄積されたヒストグラムのデータはＣＰＵ１１０又は図示を省略するＤＭＡＣのアクセス制御によって外部メモリ１０１に転送される。外部メモリ１０１に格納されたヒストグラムのデータはＣＰＵ１１０などによる更に別の処理に供される。
【００５９】
図３には画像処理モジュール１０３の具体例が示される。ヒストグラム処理回路１０５は、セレクタ群３０２、カウンタ群３０３及び加算器群３０４を直列的に有する。セレクタ群３０２はＮ個のセレクタ（ＳＬＣＴ＃１〜ＳＬＣＴ＃Ｎ）３０２−１〜３０２−Ｎを有する。セレクタ３０２−１〜３０２−Ｎはプロセッサ１００−１〜１００−Ｎに一対一対応で設けられ、演算サイクル単位で並列的に演算を行うプロセッサ１００−１〜１００−Ｎから演算結果を入力する。ここで。前記所定の演算とは、プロセッサが受け取った画素値をそのまま出力するような処理、受け取った画素値を量子化する処理、或いは複数の画素デ−タを受け取ってブレンドするような演算などであり、本発明においてその演算内容は問わない。本実施の形態において、その演算結果には、例えばその画素の諧調を明示的又は暗黙的に示すデータが含まれる。セレクタ３０２−１〜３０２−Ｎは、受け取った演算結果から対応する階調を認識し、認識した階調の種別を示す信号を生成する。例えば全階調数をＭ階調（Ｍは正の整数）例えば２５６階調とする場合には、夫々のセレクタ３０２−１〜３０２−Ｎは、階調番号順に２５６本の種別信号としての階調番号信号Ｇｒｄ１〜Ｇｒｄ２５６の中から、把握した階調の階調番号信号を論理値１に、その他の階調番号信号を論理値０とする。
【００６０】
カウンタ群３０３はＭ個のカウンタ（ＣＵＮＴ＃１〜ＣＵＮＴ＃Ｍ）３０２−１〜３０２−Ｍを有する。カウンタ３０２−１〜３０２−Ｍにはカウンタ毎に決められた階調番号信号Ｇｒｄ１〜Ｇｒｄ２５６が夫々のセレクタ３０２−１〜３０２−Ｎから供給され、論理値１の階調番号信号が幾つ入力されたかをカウントする。このカウント動作はプロセッサ１００−１〜１００−Ｎの並列演算サイクル単位で行われ、演算サイクル単位でカウウント値は初期化される。従って、カウンタ３０２−１〜３０２−Ｍは、プロセッサ１００−１〜１００−Ｎの並列演算サイクル毎に、１表示ラインに含まれる画素の階調毎の画素数を保持することになる。
【００６１】
加算器群３０４はｍ個の加算器（ＡＤＤ＃１〜ＡＤＤ＃Ｍ）３０４−１〜３０４Ｍを有する。前記ヒストグラムメモリ１０６は、例えば並列アクセス可能なＭ個のレジスタ（ＲＢＩＮ＃１〜ＲＢＩＮ＃Ｍ）３０５−１〜３０５−Ｍによって構成される。加算器３０４−１〜３０４Ｍは、前記演算サイクル単位で、対応するカウンタ３０２−１〜３０２−Ｍの出力と対応するレジスタ３０５−１〜３０５−Ｍが保有する値とを加算して対応するレジスタ３０５−１〜３０５−Ｍに書き戻す処理を行う。即ち、加算器３０４−１〜３０４Ｍとレジスタ３０５−１〜３０５−Ｍは前記Ｍ個のカウンタ３０３−１〜３０３−Ｍ毎にその出力を累積して記憶するヒストグラムカウンタ回路を構成する。
【００６２】
画像処理モジュール１０３におけるヒストグラム処理動作について説明する。
【００６３】
プロセッサ群１０４は画像デ−タを受け取って上記所定の処理を行い、階調番号を決定する。即ち、どのビン（ＲＢＩＮ＃１〜ＲＢＩＮ＃Ｍ）に投票するかを示すビン番号を決定することと等価である。例えばこの場の出力は１〜Ｍの値を採るものとする。図２ではＭ＝１６の場合を例示する。
【００６４】
セレクタ３０２−１〜３０２−Ｎは対応するプロセッサで決定されたビンの番号を受け取り、どのカウンタ３０３−１〜３０３−Ｍに何の値を出力するかを制御する。具体的にはビン番号に対応するカウンタに論理値１を出力し、それ以外のカウンタには論理値０を出力する。例えば、プロセッサ１００−１の出力が２だった場合、セレクタ３０２−１はビン番号＝２のレジスタ（ＲＢＩＮ＃２）３０５−２に繋がるカウンタ３０３−２に論理値１を出力する。それ以外のカウンタには論理値０を出力する。他のセレクタ３０２−２〜３０２−Ｎも対応するプロセッサ１０１−２〜１０１−Ｎの出力に応じた論理値１又は０の値をカウンタ群３０３に出力する。
【００６５】
カウンタ群３０３は、それぞれＮ個の１ビットの入力を受け取ってその論理値１の数をカウントして出力するデコ−ダの役割を持つ。カウンタ３０３−１〜３０５−Ｍの出力はそれぞれ対応するヒストグラムメモリ１０６のレジスタ３０５−１〜３０５−Ｍに反映される。具体的に例えばカウンタ３０３−１の後段の加算器３０４−１はヒストグラムメモリ１０６の対応するビン番号のレジスタ３０５−１が所持する値を読み出し、その値にカウンタ３０３−１が出力した値を加算して、再びレジスタ３０５−１に書き戻す。その他のカウンタ３０３−２〜３０３−Ｍの出力も同様に処理される。
【００６６】
カウンタ３０３−１〜３０３−Ｍの構成は単純にＮ個の１ビットの入力値を受け取って全ての値を足す加算器の構成や、後述する図４の構成などを採用することができる。
【００６７】
図４にはカウンタの構成が例示される。
【００６８】
カウンタ３０３−ｍ（ｍ＝１〜Ｍ）は、カウンタバッファ４０３−１〜４０３−Ｎとビットカウンタ（ＢＴＣＵＮＴ）４０４を備える。カウンタバッファ（ＢＵＦ）４０３−１〜４０３−Ｎはそれぞれ１ビットのサイズを持ち、合計Ｎ個ある。それぞれのビットが各プロセッサ１００−１〜１００−Ｎおよびセレクタ３０２−１〜３０２−Ｎに対応する。セレクタ３０２−１〜３０２−Ｎから出されたＮ個の１ビットの信号４０２−１〜４０２−Ｎをカウンタバッファ４０３−１〜４０３−Ｎで受け取る。カウンタバッファ４０３−１〜４０３−Ｎの実現方法としてはたとえばＮ個のフリップフロップが考えられる。ビットカウンタ４０４は、カウンタバッファ４０３−１〜４０３−Ｎに格納された１のビット数をカウントする。ビットカウンタ４０４の実現方法はＮ個の１ビットの入力値を受け取って全ての値を足す加算機の構成や、Ｎ個の１ビットの入力値を受け取って１が立っているビット数を返すデコ−ダなどが考えられる。
【００６９】
次に、図５及び図６に基づいて画像処理モジュール１０３によるヒストグラム処理の動作タイミングを説明する。
【００７０】
図５には理解を容易にするために図３においてＮ＝２，M＝３としたときの構成を示す。図６には図５の構成に基づくヒストグラム処理の動作タイミングが例示される。
【００７１】
６０１は当画像処理装置を動かしているクロックを示す。例えばクロック６０１のサイクルが前記演算サイクルとされる。
【００７２】
プロセッサ３０１−１のデ−タ出力に示されるように、プロセッサ３０３−１は１クロック目で１を出力し、３クロック目で２を、４クロック目で１を出力する。セレクタ３０２−１はプロセッサ３０１−１の出力値に対応して、信号線５０１−１、５０１−２、５０１−３の何れに論理値１を出力するか否かを決定する。
【００７３】
プロセッサ１００−２のデータ出力に示されるように、プロセッサ１００−２は２クロック目で２を、３クロック目で３を、４クロック目で１を出力する。セレクタ３０２−２はプロセッサ３０１−２の出力値に対応して、信号線５０２−１、５０２−２、５０２−３の何れに論理値１を出力するか否かを決定する。
【００７４】
カウンタ３０３−１のカウンタバッファ（ＢＵＦ）の状態は、Ｎ＝２の例であるから、２ビット表現でその内容が図示される。その２ビットの下位ビットがセレクタ３０２−１からの信号、上位ビットがセレクタ３０２−２からの信号を意味する。各演算サイクルの最初は、カウンタバッファ（ＢＵＦ）は００に初期化されており、所定のセレクタ（プロセッサ）から信号を受け取るとその信号が１であれば（以後積算要求と呼ぶ）対応するビットに１を立て、積算要求で無ければ０にする。カウンタバッファ（ＢＵＦ）をＮ個のフリップフロップを持つ構成で実現する場合にはフリップフロップのセット（set）端子に積算要求があれば１， 積算要求が無ければ０を入力するような実現例が考えられる。図６の例では、２クロック目でプロセッサ１００−１の１クロック目の積算要求を受け取り（６１９）、１ビット目に１を立てる。プロセッサ１００−２からは積算要求が無いので２ビット目を０とする。３クロック目、４クロック目はプロセッサ１００−１、プロセッサ１００−２ともに積算要求が無いので、００になる。５クロック目でプロセッサ１００−１及びプロセッサ１００−２の両方から積算要求を受け取るので、その値を１１とする（６２０）。
【００７５】
５０３はカウンタ３０３−１のビットカウンタ（ＢＴＣＵＮＴ）からの出力を示し、カウンタバッファ（ＢＵＦ）のビット数を数えて対応する加算器３０４−１に出力する。図６の例では、２クロック目でカウンタバッファの内容を受け取って１を出力し（６２１）、５クロック目でカウンタバッファ（ＢＵＦ）の内容を受け取り、２を出力する（６２２）。
【００７６】
ヒストグラムメモリ１０６のレジスタ３０５−１の状態は、０の初期化され、図６の例では、３クロック目で２クロック目のビットカウンタ（ＢＴＣＵＮＴ）の値１を受け取り、１が加算器３０４−１によって加算される。４， ５クロック目では値を保持し(或いは加算器から０が出力される)、６クロック目で５クロック目のビットカウンタ（ＢＴＣＵＮＴ）の値２と保持していた値１を加算器３０４−１が受け取って２を加算し、レジスタ３０５−１の値を３とする。
【００７７】
同様にカウンタ３０３−２のカウンタバッファ（ＢＵＦ）の値、カウンタ３０３−２のビットカウンタ（ＢＴＣＵＮＴ）の出力５０４、レジスタ３０５−２の値が図示される。同じく、カウンタ３０３−３のカウンタバッファ（ＢＵＦ）の値、カウンタ３０３−３のビットカウンタ（ＢＴＣＵＮＴ）の出力５０５、レジスタ３０５−３の値が図示される。
【００７８】
このようなタイミングによってヒストグラムを取得する処理がパイプライン的に実行されて順次ヒストグラムの値が取得される。この際、入力されるデ−タの種類、即ち画像データにおける画素の階調分布の状態に関わらず、常に演算サイクルに同期する一定サイクルでヒストグラムを更新する事ができる。また、クロックごとにヒストグラムの更新を行う場合は、入力されるデ−タはクロックごとにプロセッサから出力される必要が無く、図６に示されるように単発的に出力されてもよい。
【００７９】
《実施の形態２》
実施の形態１では図３に示されるようにヒストグラムメモリ１０６の各ビンをフリップフロップによるレジスタで構成した。ヒストグラムメモリの各ビンをフリップフロップ群によるレジスタで構成する場合は毎演算サイクル毎に各ビンを並列的に更新すること、即ち、演算サイクル毎にヒストグラム値を各ビンに累積処理することが可能である。一方ヒストグラムメモリ１０６がランダムアクセスメモリ（ＲＡＭ）で構成される場合は、毎サイクルの更新はできず、ＲＡＭのアクセスポ−ト数とＲＡＭの数によって更新できるサイクル数が決まる。ヒストグラムメモリにＲＡＭを用いた場合の構成を実施の形態２として説明する。
【００８０】
図７には並列演算装置の実施の形態２としてヒストグラムメモリにＲＡＭを用いた場合の画像処理モジュール１０３Ａの具体例が示される。特に図示はしないが、実施の形態２に係る画像処理モジュール１０３Ａも図１と同様のシングルチップなどで成るマイクロコンピュータに適用可能にされるものである。
【００８１】
図７の画像処理モジュール１０３Ａではそれぞれ１個のアクセスポ−トを持つ２個のＲＡＭ７０１，７０２を用いてヒストグラムメモリ１０６Ａを構成する。ここでは、一つのＲＡＭ７０１，７０２がK＝M/２個のビンを担当する様に、記憶領域が割り当てられている。即ち、ＲＡＭ７０１にはＫ個の記憶領域（ＭＢＩＮ＃１〜ＭＢＩＮ＃Ｋ）７０１−１〜７０１−Ｋが割り当てられ、ＲＡＭ７０２にはＫ個の記憶領域（ＭＢＩＮ＃Ｋ＋１〜ＭＢＩＮ＃Ｍ）７０２−１〜７０２−Ｋが割り当てられる。
【００８２】
１つのＲＡＭ７０１，７０２には一度に１つの記憶領域（メモリビンとも称する）にしかアクセスを行うことができないため、アクセスするメモリビンを変えながらＫ回アクセスを繰り返してはじめて全てのメモリビンの更新を行うことができる。したがって、実施の形態２では、Ｋ回のアクセスサイクル毎に順次１回アクセスされるメモリビンに累積すべきカウント値をＫ回のアクセスサイクル期間に応じて生成して保持する構成がヒストグラム処理回路に必要になる。以下、この点について詳述する。
【００８３】
図７の構成ではメモリサイクル毎にアクセスするメモリビンを変更する。メモリビンの変更方式は、単純に順番を変更する方式が考えられる。つまり、１サイクル目でビン番号１に対応する積算値（カウンタ７０６−１の出力値）をＲＡＭ７０１のメモリビン７０１−１に反映させ、ビン番号K+１に対応する積算値（カウンタ７０６−K+１の出力値をＲＡＭ７０２のビン７０２−１に反映させ、２サイクル目で、ビン番号２対応する積算値（カウンタ７０６−２の出力値）をＲＡＭ７０１のビン７０１−２]に、ビン番号K+２に対応する積算値(カウンタ７０６−K+２の出力値）をＲＡＭ７０２のビン７０２−２に、それぞれ反映させるというように順番に変えていけばよい。
【００８４】
これらの処理にはビンセレクタ７０３、７０４とビンセレクタ制御部７０５が用いられる。ビンセレクタ制御部７０５はどのカウンタの出力値をどのビンに出力するかを上記の要領でビンセレクタ７０３，７０４とＲＡＭ７０１，７０２に対して制御する。
【００８５】
毎サイクルで各メモリビンを更新することができないという事は、カウンタ側に書き込みにいけない時間分だけ累積値を保持する機能が必要になる。その様なカウンタ７０６−１〜７０６−Mの実現方法は、図８及び図９に例示されるように、いくつか考えられる。カウンタの実現例は図８及び図９に限定されず、最大Ｎ×Ｋの値を保持できる構成であればよい。
【００８６】
図８は演算サイクルのＫサイクル分の入力を毎サイクル累積するカウンタの構成が例示される。同図に示されるカウンタ７０６−ｍは、毎サイクルにセレクタ３０２−１〜３０２−Ｎの出力を受けるＮ個のバッファ（ＢＵＦ）８０３−１〜８０３Ｎ及び各バッファ８０３−１〜８０３−Ｎの値を毎サイクル計数するビットカウンタ（ＢＴＣＵＮＴ）８０４のほかに、加算器（ＡＤＤ）８０５と累積バッファ（ＡＣＣＢＵＦ）８０６を備える。Ｋサイクル単位で、加算器８０５は毎サイクルにビットカウンタ８０４の値に累積バッファ８０６の値を加算して累積バッファ８０６に書き戻す処理を行うことにより、累積バッファ８０６にはＫ回分の累積値を保存することができる。累積値はＫ回分の累積値、つまり最大Ｎ×Ｋの値を保存できればよいので、累積バッファのサイズはlog２(Ｎ×K)ビットだけの大きさがあればよい。
【００８７】
図９には図４に対してカウンタバッファをＫ倍備えた一つのカウンタ７０６−ｍの構成が例示される。図４では、１つのプロセッサに１ビットのカウンタバッファを配置したが、図９では１つのプロセッサに対応してＫビットのカウンタバッファ９０４−１−１〜９０４−１−Ｋ、…、９０４−Ｎ−１〜９０４−Ｎ−Ｋを設ける。例えばセレクタ３０２−１の１ビットの出力Ｇｒ１に対してＫビットのカウンタバッファ９０４−１−１〜９０４−１−Ｋを配置する。Ｋビットのカウンタバッファのどのビットにプロセッサからの信号を供給するかは、夫々のプロセッサ１００−１〜１００−Ｎに対応するビットセレクタ９０３−１〜９０３−Ｎが選択する。例えばビットセレクタ９０３−１はＫビットのカウンタバッファ９０４−１−１〜９０４−１−Ｋを演算サイクルに同期して順番に選択する。ビットカウンタ９０７は合計Ｎ×Ｋビットのビットカウンタのうち、１が立っているビットの数を数える。
【００８８】
次に、図１０及び図１１に基づいて実施の形態２によるヒストグラム処理の動作タイミングを説明する。
【００８９】
図１０には理解を容易にするために図７においてＮ＝２，Ｍ＝４、Ｋ＝２としたときの構成を示す。図１１には図１０の構成に基づくヒストグラム処理の動作タイミングが例示される。この場合、カウンタの構成には図９の構成を採用するものとする。カウンタ内のカウンタバッファは２ビットずつプロセッサに接続されるので、カウンタは合計４ビットのカウンタバッファを持つことになる。
【００９０】
図１１において、１１０１は演算サイクルを示す動作クロックである。プロセッサ１００−１の出力は図示の通り、演算サイクル毎に順次、１，４，２，１，３とされる。これに応じてセレクタ３０２−１の出力１００１−１〜１００１−４が形成される。セレクタ出力１００１−１〜１００１−４の論理値１（ハイレベル出力）はカウンタ７０６−１〜７０６−２に対する積算要求とされる。プロセッサ３０２−２の出力は図示の通り、演算サイクル毎に３，２，２，１，２とされる。これに応じてセレクタ３０２−２の出力１００２−１〜１００２−４が形成される。セレクタ出力１００２−１〜１００２−４の論理値１（ハイレベル出力）はカウンタ７０６−３〜７０６−４に対する積算要求とされる。カウンタ７０６−１内部のカウンタバッファの値は４ビットで構成される。カウンタバッファの内容の記述形式はX０X１Y０Y１とする。X０，X１，Y０，Y１がそれぞれ論理値０又は論理値１にされる１ビットの状態を取る。X０とX１にはクロックサイクルに同期して交互にプロセッサ１００−１からの積算要求１００１−１が反映される。Y０とY１も同様にクロックサイクルに従って交互にプロセッサ１００−２からの積算要求１００２−１が反映される。反映される側のビットには下線を付して図示する。７０７−１はそのカウンタバッファの情報を入力としたビットカウンタの出力、すなわちカウンタ７０６−１の出力である。カウンタ７０６−２のカウンタバッファ（ＢＵＦ）１００３−２の４ビットの内容とその出力７０２−２は図示の通りとされ、同様に、カウンタ７０６−３のカウンタバッファ（ＢＵＦ）１００３−３の４ビットの内容とその出力７０２−３は図示の通りとされ、カウンタ７０６−４のカウンタバッファ（ＢＵＦ）１００３−４の４ビットの内容とその出力７０２−４は図示の通りとされる。ビンセレクタ７０３、７０４に対する選択は図示のように同期して選択状態が変化され、クロックサイクルに同期して０，１の値を交互に採る選択信号によってカウンタの出力をどのメモリビンに出力するかが制御される。例えばビンセレクタ７０３に着目すると、その選択制御信号が０であればビンセレクタ７０３はカウンタ７０６−１の結果をＲＡＭ７０１のメモリビン７０１−１に反映し、１であればビンセレクタ７０３はカウンタ７０６−２の結果をＲＡＭ７０１のビン７０１−２に反映する。同様に、ビンセレクタ７０４に着目すると、選択信号が０であればビンセレクタ７０４はカウンタ７０６−３の結果をＲＡＭ７０２のメモリビン７０２−１に反映し、１であればビンセレクタ７０４はカウンタ７０６−４の結果をＲＡＭ７０２のメモリビン７０２−２に反映する。このときのメモリビン７０１−１、７０１−２、７０２−１、７０２−２の内容は例えば図示の通りとされる。
【００９１】
ここで更に、プロセッサ１００−１の出力に着目した動作を説明する。１クロック目でプロセッサ１００−１からは論理値１が出力される。セレクタ３０２−１で、カウンタ７０６−１に積算要求が出される。この積算要求は１００１−１である。積算要求はカウンタ７０６−１に入り、カウンタバッファ１００３−１の値を更新する。この様子は図１１の”７０６−１のＢＵＦ”として図示され、記述形式を上記の通りX０X１Y０Y１とするとX１のビットを１に更新する。この一連の動作を、破線矢印１１２６に示してある。途中の黒丸は該当する積算要求を示す。同じ要領で、２クロック目にはプロセッサ１００−１から４が出力され、セレクタ３０２−１でカウンタ７０６−４に積算要求が出て、カウンタバッファ１００３−４が更新される（破線矢印１１２７で示される動作）。同様に破線矢印１１２８、１１２９、１１３０が３，４，５クロック目のプロセッサ１の出力が各カウンタバッファに反映される動作の様子を示している。
【００９２】
次に、カウンタ７０６−１に着目する。カウンタ７０６−１の４ビットのカウンタバッファ１００３−１の様子は図１１における”７０６−１のＢＵＦ”に示すとおりであり、カウンタの出力はこのうち１が立っているビット数を数える。その結果は信号７０７−１とされる。カウンタ７０６−２のカウンタバッファ１００３−２及びその出力についての同様に動作される。最後にＲＡＭ７０１への反映に着目すると、ビンセレクタ７０３の制御（７０３の選択信号）に従って、メモリビン７０１−１又はメモリビン７０１−２のどちらの値を変更するかが交互に変更される。ビンセレクタ７０３の選択信号の値が０であれば、カウンタ７０６−１の出力をメモリビン７０１−１に反映させて更新し、１であればカウンタ７０６−２の出力をメモリビン７０１−２に反映させて更新する。
【００９３】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【００９４】
例えば、本発明に係る並列演算装置で扱うデ−タは画像デ−タや音声デ−タなどその種類を問わない。また、画像データを扱う場合であっても、複数のプロセッサが並列的に行う所定の演算は１又は複数表示ラインの画素に対する演算に限定されず、ヒストグラムを生成するためのヒストグラム値を得るための演算であればよく、適宜の演算であってよい。
【００９５】
ヒストグラムメモリの各ビンは度数を表すのに十分なビット数を持ったフリップフロップの構成や、シングルポートのＲＡＭを用いる場合に限定されない。マルチポートＲＡＭを用いても良い。
【００９６】
セレクタ群３０２とプロセッサ群１０４を区別したが、プロセッサ１００−１〜１００−Ｎの中にセレクタの機能を持たせても良い。例えば、マイクロコ−ドプロセッサ等を用いて、命令を通してソフトウェア的にセレクタを実現してもよい。この場合はプロセッサが演算したデ−タ(ビンの番号)を一旦プロセッサ毎に持つレジスタやロ−カルメモリに保存し、その後、直接カウンタバッファに所定の値を書き込んで動作させれば良い。
【００９７】
また、並列演算可能にされる複数個のプロセッサは、プログラム処理回路としてのプロセッシングユニットに限定されず、それぞれ所定の演算シーケンサによって演算手順が制御される複数個の演算器であってよいことはいうまでもない。
【符号の説明】
【００９８】
９９  マイクロコンピュータ（ＭＣＵ）
１０３  画像処理モジュール（ＧＲＦＭ）
１１０  中央処理装置（ＣＰＵ）
１０９  ビデオインタフェース回路（ＶＩＦ）
１０７  メモリコントローラ（ＭＣＮＴ）
１０２内部バス
１０１  外部メモリ（ＥＸＭＲＹ）
１００−１〜１００−Ｎ  プロセッサ（ＰＲＣＳ＃１〜ＰＲＣＳ＃Ｎ）
１０４  プロセッサ群
１０６  ヒストグラムメモリ（ＨＧＭＲＹ)
１０５  ヒストグラム処理回路（ＨＧＰＲＣＳ）
３０２  セレクタ群
３０３  カウンタ群
３０４  加算器群
３０２−１〜３０２−Ｎ  セレクタ（ＳＬＣＴ＃１〜ＳＬＣＴ＃Ｎ）
Ｇｒｄ１〜Ｇｒｄ２５６  階調番号信号
３０２−１〜３０２−Ｍ  カウンタ（ＣＵＮＴ＃１〜ＣＵＮＴ＃Ｍ）
３０４−１〜３０４Ｍ  加算器（ＡＤＤ＃１〜ＡＤＤ＃Ｍ）
３０５−１〜３０５−Ｍ  レジスタ（ＲＢＩＮ＃１〜ＲＢＩＮ＃Ｍ）
７０１，７０２  ＲＡＭ
７０１−１〜７０１−Ｋ  記憶領域（ＭＢＩＮ＃１〜ＭＢＩＮ＃Ｋ）
７０２−１〜７０２−Ｋ  記憶領域（ＭＢＩＮ＃Ｋ＋１〜ＭＢＩＮ＃Ｍ）
７０６−１〜７０６−M  カウンタ
３０２−１〜３０２−Ｎ  セレクタ
８０３−１〜８０３Ｎ  バッファ（ＢＵＦ）
８０４  ビットカウンタ（ＢＴＣＵＮＴ）
８０５  加算器（ＡＤＤ）
８０６  累積バッファ（ＡＣＣＢＵＦ）
９０４−１−１〜９０４−１−Ｋ、…、９０４−Ｎ−１〜９０４−Ｎ−Ｋ  カウンタバッファ
９０３−１〜９０３−Ｎ  ビットセレクタ
９０７  ビットカウンタ
【図１】
2013008270.tif 000003
【図２】
2013008270.tif 000004
【図３】
2013008270.tif 000005
【図４】
2013008270.tif 000006
【図５】
2013008270.tif 000007
【図６】
2013008270.tif 000008
【図７】
2013008270.tif 000009
【図８】
2013008270.tif 000010
【図９】
2013008270.tif 000011
【図１０】
2013008270.tif 000012
【図１１】
2013008270.tif 000013