(57)【要約】    【課題】  本発明は、ソフトウェアによるヒストグラム計算よりも高速にヒストグラムを求めることができるデータ処理装置を提供する。    【解決手段】  データ処理装置では、ＣＰＵ１０１において、入力又は計算されたデータ値よりヒストグラムカウンタ用メモリ領域１０７上の対応するヒストグラムカウンタのアドレスを計算し、計算したヒストグラムカウンタのアドレスをＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６上のアドレスブロックに順次書き込む。一方、ＣＰＵ１０１と並行して動作するＤＭＡプロセッサ１０３において、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６から読み出したヒストグラムカウンタアドレスによりヒストグラムカウンタ用メモリ領域１０７を参照して、ヒストグラムカウンタ値を読み出し、インクリメンタ１０５を使用してヒストグラムカウンタ値に１を加算し、インクリメント後のカウンタ値を、当該カウンタ値を読み出したアドレス（元のアドレス）に書き込む。【選択図】      図１
2006227902.tif 000002
【特許請求の範囲】
【請求項１】
ヒストグラム計算を実行するデータ処理装置において、
ヒストグラムカウンタのアドレスを計算する計算手段と、
前記計算手段により計算されたアドレスによりヒストグラムカウンタの値を読み出し、当該ヒストグラムカウンタ値を加算して元のアドレスに書き込む処理を実行するデータ転送手段とを備えることを特徴とするデータ処理装置。
【請求項２】
複数のヒストグラムカウンタ値を格納するカウンタ格納手段と、
前記ヒストグラムカウンタ値をインクリメントするインクリメント手段と、
前記アドレスを格納する通信用データ格納手段とを更に備え、
前記計算手段は、前記計算したアドレスを前記通信用データ格納手段に書き込んだ後、前記データ転送手段に起動指示を行い、
前記データ転送手段は、前記起動指示に応じて前記通信用データ格納手段から前記アドレスを読み出した後、当該読み出したアドレスにより前記カウンタ格納手段からヒストグラムカウンタ値を読み出し、当該ヒストグラムカウンタ値を前記インクリメント手段によりインクリメントし、インクリメント後のヒストグラムカウンタ値を前記カウンタ格納手段の元のアドレスに書き込むことを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記通信用データ格納手段は、複数のヒストグラムカウンタのアドレスで構成された、少なくとも２つのアドレスブロックを有し、各アドレスブロックの先頭に当該アドレスの数を示すアドレスブロックサイズが格納されていることを特徴とする請求項２記載のデータ処理装置。
【請求項４】
複数のヒストグラムカウンタ値を格納するカウンタ格納手段と、
加算手段と、
前記アドレスを格納する通信用データ格納手段とを更に備え、
前記計算手段は、前記計算したアドレスと加算量を前記通信用データ格納手段に書き込んだ後、前記データ転送手段に起動指示を行い、
前記データ転送手段は、前記起動指示に応じて前記通信用データ格納手段から前記アドレスと前記加算量を読み出した後、当該読み出したアドレスにより前記カウンタ格納手段からヒストグラムカウンタ値を読み出し、当該ヒストグラムカウンタ値に前記加算手段により前記加算量を加算し、加算後のヒストグラムカウンタ値を前記カウンタ格納手段の元のアドレスに書き込むことを特徴とする請求項１記載のデータ処理装置。
【請求項５】
前記通信用データ格納手段は、複数のヒストグラムカウンタのアドレスと当該アドレスに対応する所定の加算量とで構成された、少なくとも２つのアドレスブロックを有し、各アドレスブロックの先頭に当該アドレスの数を示すアドレスブロックサイズが格納されていることを特徴とする請求項４記載のデータ処理装置。
【請求項６】
ヒストグラム計算を実行するための計算方法において、
ヒストグラムカウンタのアドレスを計算する計算工程と、
前記計算工程にて計算されたアドレスによりヒストグラムカウンタの値を読み出し、当該ヒストグラムカウンタ値を加算して元のアドレスに書き込む処理を実行するデータ転送工程とを備えることを特徴とするヒストグラム計算方法。
【請求項７】
ヒストグラムカウンタのアドレスを計算し、当該計算したアドレスをメモリに書き込む書き込み工程と、
前記メモリから前記アドレスを読み出した後、当該読み出したアドレスにより前記ヒストグラムカウンタ値を読み出し、当該ヒストグラムカウンタ値をインクリメントして、インクリメント後のヒストグラムカウンタ値を元のアドレスに書き込むように制御するデータ転送工程とを備えることを特徴とするデータ処理方法。
【請求項８】
ヒストグラムカウンタのアドレスを計算し、当該計算したアドレスと加算量をメモリに書き込む書き込み工程と、
前記メモリから前記アドレスと前記加算量を読み出した後、当該読み出したアドレスにより前記ヒストグラムカウンタ値を読み出し、当該ヒストグラムカウンタ値に前記加算量を加算して、加算後のヒストグラムカウンタ値を元のアドレスに書き込むように制御するデータ転送工程とを備えることを特徴とするデータ処理方法。
【請求項９】
請求項６記載のヒストグラム計算方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【請求項１０】
請求項７又は８記載のデータ処理方法をコンピュータに実行させるためのコンピュータに読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置及び方法、ヒストグラム計算方法、並びにプログラムに関し、特に、画像や音声等のデータのヒストグラム計算を高速化することが可能なデータ処理装置及び方法、ヒストグラム計算方法、並びにプログラムに関する。
【背景技術】
【０００２】
画像や音声等のデータ処理を行うにあたり、データのヒストグラムを計算する必要がしばしば生ずる。このヒストグラム計算を実現するにあたって最も一般的な方法としては、ＣＰＵを使用し、当該ＣＰＵ上で駆動するソフトウェアによって、データの各値の発生頻度をカウントする方法がある。このソフトウェアによるヒストグラム計算処理の具体例を図１０に示す。
【０００３】
図１０において、ＣＰＵは、メモリ上の全ヒストグラムカウンタの値を０に初期化する（ステップＳ２０１）。ヒストグラムカウンタとは、ヒストグラム計算の対象となるデータの値域を、ヒストグラムをとる領域毎に分割した際、領域毎のデータ発生頻度をそれぞれカウントして保持するためのカウンタであり、分割した領域数分のカウンタがメモリ上に配置されている。
【０００４】
次に、ヒストグラム計算の対象となるデータを入力するか又は計算により求める（ステップＳ２０２）。例えば、ＲＧＢ３色からなる画像データについて、Ｒ，Ｇ，Ｂ各色に関するヒストグラムを求める場合、ＲＧＢの画像データを入力後、各色成分に分離するだけでよいが、ＹＣｂＣｒ色空間における各成分のヒストグラムを求める場合には、入力されたＲＧＢの画像データを計算によりＹＣｂＣｒ色空間のデータに変換して使用する。
【０００５】
次に、ＣＰＵは、ステップＳ２０２で入力又は計算されたデータに対応するヒストグラムカウンタのアドレスを計算する（ステップＳ２０３）。このアドレス計算には種々の計算方法があるが、通常、ヒストグラムカウンタの先頭アドレスに対して、データ値から計算されるオフセットを加算することで容易に計算することができる。
【０００６】
つづいて、ＣＰＵは、ステップＳ２０３で計算されたヒストグラムカウンタのアドレスに対応するメモリからアドレスカウンタの値をロードし（ステップＳ２０４）、ロードしたカウンタ値をインクリメント（＋１）して（ステップＳ２０５）、インクリメント後のカウンタ値をステップＳ２０３で計算されたアドレス（元のアドレス）にストアする（ステップＳ２０６）。
【０００７】
次に、ヒストグラム計算の対象となるデータが終了していないときは（ステップＳ２０７でＮＯ）、ステップＳ２０２に戻り、データが終わりになるまで、ステップＳ２０２〜Ｓ２０６の処理を繰り返し実行する。一方、ヒストグラム計算の対象となるデータが終了したときは（ステップＳ２０７でＹＥＳ）、本処理を終了する。この処理により得られたヒストグラムカウンタの値がヒストグラムそのものを示している。
【０００８】
また、上記ヒストグラムの計算処理をハードウェアにより行う方法が提案されている（特許文献１，２参照）。ハードウェアによるヒストグラム計算方法では、データの各値の発生頻度を格納するためのメモリをハードウェア上に備え、入力されたデータの値によって指定されたアドレスからメモリ値を読み出し、インクリメント及び再書き込みすることでヒストグラム計算を高速に実行することが可能となっている。
【特許文献１】特開昭６０−１５７６７２号公報
【特許文献２】特開平０１−２９７０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上記ソフトウェアによるヒストグラムの計算処理では、処理速度が遅くなってしまうという問題がある。処理速度低下の一つの要因は、図１０のステップＳ２０４のヒストグラムカウンタ値をメモリからロードする処理であり、メモリシステムからのロードに要するレイテンシ（ロードレイテンシ）の影響を受けてしまう。
【００１０】
特に、複数のヒストグラムを同時に計算する（例：Ｒ，Ｇ，Ｂに加えてＹ，Ｃｂ，Ｃｒの各成分ごとのヒストグラムを同時に計算する）場合や、ヒストグラム計算時の値域の分割数が多い場合には、ヒストグラムカウンタの個数が増えるため、ヒストグラムカウンタをより大容量のメモリに配置する必要がある。
【００１１】
一般にメモリシステムには、容量が大きくなればなるほどロードレイテンシが長くなる傾向があるため、多数のヒストグラムカウンタを必要とする状況において、ステップＳ２０４による処理速度の低下がより顕著に現れることになる。なお、ロードレイテンシを隠蔽するためにＣＰＵのデータキャッシュを使用する方法も考えられるが、データキャッシュのヒット率は入力データの性質やキャッシュのサイズにも依存しており、キャッシュを使用しても必ずしもロードレイテンシの隠蔽が可能なわけではない。
【００１２】
一方、上記特許文献１及び特許文献２に記載されたハードウェアによるヒストグラム計算を行った場合は処理速度が遅くなるという問題は無いが、ヒストグラムカウンタを格納するためのメモリをハードウェアが内蔵するため、複数のヒストグラムの同時計算やヒストグラム計算時の値域の分割数が多いときは、内部のメモリ容量を増やす必要があり、コストが増加してしまうという問題がある。
【００１３】
また、ヒストグラムの対象となるデータの計算方法が複雑な場合、例えば、ＹＣｂＣｒ色空間においてＹがある値域に含まれる条件下でのＲ，Ｇ，Ｂ各色成分のヒストグラムを計算するときなどは、このような複雑な計算を行うためのハードウェアを予め用意しておく必要があり、ハードウェアのコスト、及びハード設計後に計算方法が変わった場合への対応のフレキシビリティの点で問題がある。
【００１４】
本発明は、上記問題に鑑みて成されたものであり、ソフトウェアによるヒストグラム計算よりも高速にヒストグラムを求めることができるデータ処理装置及び方法、ヒストグラム計算方法、並びにプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するために、請求項１記載のデータ処理装置は、ヒストグラム計算を実行するデータ処理装置において、ヒストグラムカウンタのアドレスを計算する計算手段と、前記計算手段により計算されたアドレスによりヒストグラムカウンタの値を読み出し、当該ヒストグラムカウンタ値を加算して元のアドレスに書き込む処理を実行するデータ転送手段とを備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、所定のデータに対応するヒストグラムカウンタのアドレスが計算される一方、当該計算処理に並行して、当該アドレスによりヒストグラムカウンタの値が読み出され、当該ヒストグラムカウンタ値がインクリメントされて元のアドレスに書き込まれるので、ヒストグラム計算をソフトウェアで行った場合に生じるカウンタ値をロードするためのレイテンシが隠蔽され、ソフトウェアによるヒストグラム計算よりも高速にヒストグラムを求めることができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１８】
［第１の実施の形態］
図１は、本発明の第１の実施の形態に係るデータ処理装置のハードウェア構成の概略を示すブロック図である。
【００１９】
図１において、ＣＰＵ１０１は、後述する図４に示すヒストグラム計算の処理を実行する中央処理装置である。ＤＭＡプロセッサ（ＤＭＡＰ（Direct Memory Access Processor））１０３は、後述する図５に示す処理を実行するダイレクトメモリアクセス処理装置であって、ＤＭＡプロセッサ用の命令メモリ１０４から命令を読み込み、当該命令を解釈し実行することでデータ転送を実現するプログラマブルなＤＭＡコントローラである。また、ＤＭＡプロセッサ１０３は、複数の命令列を並行実行するマルチスレッド機能を有し、ＤＭＡプロセッサ用命令メモリ１０４に格納された複数の命令列を並行して実行することが可能である。
【００２０】
インクリメンタ１０５は、ＤＭＡプロセッサ１０３に接続され、ヒストグラムカウンタの更新のために、１を加算する演算器である。ＤＭＡプロセッサ制御レジスタ１０２は、ＤＭＡプロセッサ１０３に起動指示を与えたり、処理完了通知を受け取ったりするためのレジスタインタフェースである。ＣＰＵ１０１は、ＤＭＡプロセッサ１０３を起動したり、完了通知を得る際にＤＭＡプロセッサ制御レジスタ１０２を利用することができる。
【００２１】
ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６は、ＣＰＵ１０１からＤＭＡプロセッサ１０３に対して、ヒストグラムカウンタのインクリメント指示を出すために使用される通信用メモリ領域である。ヒストグラムカウンタ用メモリ領域１０７は、ヒストグラムカウンタを格納するためのメモリ領域である。なお、同図において、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６とヒストグラムカウンタ用メモリ領域１０７とは、ハード的に別のメモリ上に配置されている例を示しているが、これら２つのメモリ領域がハード的に同一のメモリ上に配置されていてもよい。
【００２２】
図２は、図１におけるＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６の使用方法の一例を示す図である。
【００２３】
図２において、２つのアドレスブロック３０２，３０３はダブルバッファを構成しており、アドレスブロックポインタ３０１は、いずれかのアドレスブロックの先頭アドレスを指している。同図では、アドレスブロックポインタ３０１がアドレスブロック３０２を指した状態を示しており、この状態では、ＤＭＡプロセッサ１０３がアドレスブロック３０２に対して読み出しアクセスを行い、ＣＰＵ１０１がアドレスブロック３０３に対して書き込みアクセスを行う。
【００２４】
各アドレスブロックの先頭は、アドレスブロックサイズである。アドレスブロックサイズは、当該アドレスブロックサイズの後に続けて設けられているヒストグラムカウンタアドレスの個数（Ｎ）を示している。このアドレスブロックサイズは、アドレスブロックを可変長とするために使用されているが、使用上、アドレスブロックが固定長で構わなければアドレスブロックサイズを使用する必要はない。
【００２５】
アドレスブロックを構成する主要なデータは、複数のヒストグラムカウンタアドレス（１〜Ｎ）である。ヒストグラムカウンタアドレスの値は、ＣＰＵ１０１が入力データ（あるいはそれを用いた計算値）からヒストグラムカウンタアドレス値を計算してアドレスブロックに書き込まれたものである。
【００２６】
このように、アドレスブロックがダブルバッファ構成を採ることで、ＤＭＡプロセッサ１０３がカウンタアドレスの値を読み出している期間にも、並行してＣＰＵ１０１が別のアドレスブロックにカウンタアドレスを書き込むことが可能であり、効率的な通信を実現することができるが、ＣＰＵ１０１、ＤＭＡプロセッサ１０３による通信用メモリ領域１０６へのアクセス競合を避けることができれば、他のデータ構成によって通信を行ってもよい。
【００２７】
図３は、図１におけるヒストグラムカウンタ用メモリ領域１０７の使用方法の一例を示す図である。
【００２８】
図３では、Ｒ，Ｇ，Ｂ各８ビットからなる画像データについて、各成分の値域を２５６分割した場合のヒストグラムをとっており、Ｒ濃度値用ヒストグラムカウンタ４０１は、Ｒ濃度値０用カウンタ、Ｒ濃度値１用カウンタ、…、Ｒ濃度値２５５用カウンタというように、２５６個のカウンタから成る。
【００２９】
同様に、Ｇ濃度値用ヒストグラムカウンタ４０２、Ｂ濃度値用ヒストグラムカウンタ４０３も、それぞれ２５６個のカウンタから成っている。なお、図示していないが、他にＲ，Ｇ，ＢをＹ，Ｃｂ，Ｃｒ色空間に変換した後の、各色成分のヒストグラムを計算したり、或いは特定のヒストグラムをより細かい分割（例えば、４０９６分割）で計算した場合には、さらに大容量のメモリ領域が必要となる。
【００３０】
次に、図１のデータ処理装置におけるヒストグラム計算処理について図４及び図５を参照して説明する。
【００３１】
図４は、ＣＰＵ１０１により実行されるヒストグラム計算処理のフローチャートである。本処理は、通常のソフトウェアにより実行される。
【００３２】
図５は、ＤＭＡプロセッサ１０３により実行されるヒストグラム計算処理のフローチャートである。ＤＭＡプロセッサ１０３は、マルチスレッド機能を有しているが、ここでは、そのうち、１つのスレッドだけがヒストグラム計算に関わっている。複数スレッドが実行されている場合、他のスレッドについては、ヒストグラム計算とは無関係の処理を実行していて構わない。
【００３３】
本実施の形態では、ＣＰＵ１０１側がヒストグラム計算の前半部分を、ＤＭＡプロセッサ１０３側がヒストグラム計算の後半部分を実行し、図４のステップＳ２０１〜ステップＳ２０３までは、図１０に示した従来方式と同一である。すなわち、ＣＰＵ１０１は、ステップＳ２０１においてヒストグラムカウンタ用メモリ領域１０７上のヒストグラムカウンタを全て０で初期化し、ステップＳ２０２においてヒストグラム対象のデータを入力する。ここで、色空間変換等の計算が必要な場合には、その計算も実行する。
【００３４】
更に、ステップＳ２０３において、ステップＳ２０２で得られたデータ値より、ヒストグラムカウンタ用メモリ領域１０７上の対応するヒストグラムカウンタのアドレスを計算する。ステップＳ２０３以降のステップＳ５０１〜Ｓ５０６については、図１０の処理方式とは異なっている。
【００３５】
ステップＳ５０１では、ＣＰＵ１０１は、ステップＳ２０３で計算されたヒストグラムカウンタのアドレスをＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６上のアドレスブロックに順次書き込む。
【００３６】
次に、ステップＳ５０２では、現在、ＣＰＵ１０１によるアドレスブロック分の書き込みが完了したか否かを判別し、完了していない場合は、ステップＳ２０２に戻って、さらに次のデータの処理を行う。一方、完了した場合は、ＤＭＡプロセッサ完了確認を実行する（ステップＳ５０３）。これは、ＤＭＡプロセッサ１０３が後述するステップＳ５１５で完了通知を実行した際、ＤＭＡプロセッサ制御レジスタ１０２に対して完了ステータスがセットされるため、ＣＰＵ１０１がＤＭＡプロセッサ制御レジスタ１０２をチェックすることで実行することができる。このＤＭＡプロセッサ完了確認は、ＣＰＵ及びＤＭＡプロセッサ間の通信の同期をとるために用いられている。なお、図中、（必要な場合）という記述がある理由は、第１回目のアドレスブロックの処理においては、まだＤＭＡプロセッサ側の処理が起動されておらず、待つべき完了通知が存在しないためである。
【００３７】
ＤＭＡプロセッサ完了が確認された後、次のステップＳ５０４では、ＤＭＡプロセッサ１０３によるヒストグラム計算の後半部分の処理を起動する。このとき、ＣＰＵ→ＤＭＡ通信用メモリ領域１０６内のアドレスブロックサイズに今回送信するヒストグラムカウンタアドレスの個数を設定し、今回送信するアドレスブロックの先頭アドレスをアドレスブロックポインタ３０１に設定してから、ＤＭＡプロセッサ制御レジスタ１０２にアクセスして、ＤＭＡプロセッサ１０３の起動を指示する。これ以降、ＤＭＡプロセッサ１０３はＣＰＵ１０１と並行して動作するが、その動作については後述する。
【００３８】
次に、ステップＳ５０５では、ＣＰＵ１０１で処理するデータが終了したか否かを確認し、まだ終了していない場合には（ステップＳ５０５でＮＯ）、ステップＳ２０２に戻って上記動作を繰り返す。一方、終了した場合には、ステップＳ５０６に進み、最後にＤＭＡプロセッサ１０３に渡したアドレスブロックの処理の完了を確認する。ステップＳ５０６が終了した時点で、ヒストグラムカウンタ用メモリ領域１０７上には、所望のヒストグラムデータが生成されている。
【００３９】
図５において、本実施の形態では、ＤＭＡプロセッサ１０３側がヒストグラム計算の後半部分を実行する。
【００４０】
ＤＭＡプロセッサ１０３のヒストグラム処理用スレッドの動作について、まず、ＣＰＵ１０１からの起動待ちを行い、スレッドは停止している（ステップＳ５０７）。ＣＰＵ１０１が、ステップＳ５０４においてＤＭＡプロセッサ１０３の起動を指示すると、ＤＭＡプロセッサ１０３は、ステップＳ５０７から次のステップ５０８に進む。
【００４１】
ステップＳ５０８では、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６からアドレスブロックポインタ３０１を読み出す（ロードする）。次に、ステップＳ５０９では、アドレスブロックポインタ３０１の指すアドレスブロックの先頭からアドレスブロックサイズを読み出し、ＣＰＵ１０１からＤＭＡプロセッサ１０３に対して何個のヒストグラムカウンタアドレスが送られたかを調査する。
【００４２】
次に、ステップＳ５１０からステップＳ５１４までは、読み出したアドレスブロックサイズ回分のループになっており、ステップＳ５１０ではアドレスブロックからヒストグラムカウンタアドレスを一つずつ順に読み出す。ステップＳ５１１では、読み出したヒストグラムカウンタアドレスによりヒストグラムカウンタ用メモリ領域１０７を参照して、ヒストグラムカウンタ値を読み出す。
【００４３】
ステップＳ５１２では、ＤＭＡプロセッサ１０３に接続されたインクリメンタ１０５を使用してヒストグラムカウンタ値に１を加算する。ステップＳ５１３では、インクリメント後のカウンタ値を、当該カウンタ値を読み出したアドレス（元のアドレス）に書き込むことで、カウンタ値の更新を実施する。
【００４４】
ステップＳ５１４では、読み出したアドレスブロックサイズ回分の処理が終了したか否かを判別し、終了していないときは、ステップＳ５１０に戻ってループする。終了しているときは、次のステップＳ５１５に進み、完了通知をＤＭＡプロセッサ制御レジスタ１０２経由でＣＰＵ１０１に通知して、最初のステップＳ５０７に戻り、再びＣＰＵ１０１による起動待ち状態となる。
【００４５】
なお、ステップＳ５１２におけるインクリメント処理のために、ＤＭＡプロセッサ１０３に接続されたインクリメンタ１０５を使用したが、ＤＭＡプロセッサ１０３がアドレス計算等の目的で内蔵インクリメンタ或いは加算器をもつ場合は、これを利用することも可能である。
【００４６】
このように、ＣＰＵ１０１がＤＭＡプロセッサ１０３の処理完了を待つ可能性があるステップＳ５０３、Ｓ５０６、及びＤＭＡプロセッサ１０３がＣＰＵ１０１による起動を待つステップＳ５０７以外では、両者の処理は並行実行されている。ＣＰＵ１０１から見ると、図１０において問題であったステップＳ２０４のカウンタ値のロードは、ＤＭＡプロセッサ１０３のステップＳ５１１にて実行されるので、カウンタ値をロードするためのレイテンシは隠蔽される。
【００４７】
また、図１０と比較すると、ＣＰＵ１０１にとっては、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６へのアクセス分が増えるが、いずれのアクセスもストアであり、メモリロードのようにレイテンシの影響を大きく受けないので、全体としてヒストグラム計算処理が高速化される。さらに、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６は大きな容量を必要としないので、ここに小容量・高速のメモリを用いることも可能である。
【００４８】
上記第１の実施の形態によれば、ＣＰＵ１０１において、ステップＳ２０２で得られたデータ値よりヒストグラムカウンタ用メモリ領域１０７上の対応するヒストグラムカウンタのアドレスを計算し、計算したヒストグラムカウンタのアドレスをＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６上のアドレスブロックに順次書き込む。一方、ＣＰＵ１０１と並行して動作するＤＭＡプロセッサ１０３において、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６から読み出したヒストグラムカウンタアドレスによりヒストグラムカウンタ用メモリ領域１０７を参照して、ヒストグラムカウンタ値を読み出し、インクリメンタ１０５を使用してヒストグラムカウンタ値に１を加算し、インクリメント後のカウンタ値を、当該カウンタ値を読み出したアドレス（元のアドレス）に書き込むので、ヒストグラム計算をソフトウェアで行った場合に生じるカウンタ値をロードするためのレイテンシが隠蔽され、ソフトウェアによるヒストグラム計算よりも高速にヒストグラムを求めることができる。
【００４９】
また、ヒストグラム計算をハードウェアのみで行った場合と比較すると、多数のヒストグラムカウンタが必要な状況においても、ヒストグラムカウンタを低速大容量のメモリに配置してヒストグラム計算が実現することができるため、コスト低減効果がある。特に、命令によってデータ転送を実行するデータ転送手段（ＤＭＡプロセッサ）を、ＤＭＡ転送用等、ヒストグラム計算とは別の目的で備えている場合、本発明の実施に必要なハード資源が殆ど予め備わっているため、わずかなコスト追加だけで、本発明のデータ処理装置が実現することができる。
【００５０】
また、上記特許文献１や特許文献２に記載されたハードウェアのみによるヒストグラム計算と比較すると、ソフトウェアによってヒストグラム対象データを計算することができるため、複雑な計算結果に対するヒストグラムの計算が可能であり、また、ヒストグラムをとるべきデータの対象が変わった場合にも柔軟に対応することができる。
【００５１】
また、ヒストグラムカウンタ用メモリ領域として、大容量のメモリが必要な場合でも、メモリロードのレイテンシを隠蔽することができるため、長レイテンシ・低コストのメモリを使用することが可能であり、全体としてのコストを抑えることができる。特に、ＤＭＡプロセッサをヒストグラム計算の目的とは別に、例えば、多次元ＤＭＡ転送のために備えている場合には、ヒストグラム用のスレッドを一つ追加し、必要であればインクリメンタを追加するだけで、ヒストグラム計算の高速化が可能であるため、コスト効率の高い実装を実現することができる。
【００５２】
［第２の実施の形態］
本発明の第２の実施の形態について図６〜図９を参照して説明する。
【００５３】
図６は、本発明の第２の実施の形態に係るデータ処理装置のハードウェア構成の概略を示すブロック図である。
【００５４】
図６において、本第２の実施の形態に係るデータ処理装置と上記第１の実施の形態における図１のデータ処理装置とのハードウェア構成上の違いは、インクリメンタ１０５が加算器６０１になっている点だけである。また、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域７００の使用方法、及びＣＰＵ１０１，ＤＭＡプロセッサ１０３の動作は上記第１の実施の形態とは異なるが、加算器６０１以外の他のハードウェア構成については図１のものと同じである。なお、ＤＭＡプロセッサ１０３に接続された加算器６０１を使用したが、上記第１の実施の形態と同様に、ＤＭＡプロセッサ１０３がアドレス計算等の目的で内蔵加算器をもつ場合は、これを利用することも可能である。
【００５５】
図７は、図６におけるＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域の使用方法の一例を示す図である。
【００５６】
図７において、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域７００と上記第１の実施の形態における図３のＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６との違いは、アドレスブロック７０１，７０２に格納されるデータである。上記第１の実施の形態では、アドレスブロックサイズと複数のヒストグラムカウンタアドレスがアドレスブロックに格納されたが、第２の実施の形態では、それらに加えて、複数のカウンタ加算量が格納される。
【００５７】
各カウンタ加算量は、直前のヒストグラムカウンタアドレス値と１対１で対応しており、ヒストグラムカウンタアドレスの指すアドレス上のカウンタ値に対し、対応するカウンタ加算量を加算することで、ヒストグラムカウンタの更新を行う。カウンタ加算量については、符号なしデータ或いは符号つきデータのいずれでもよいが、符号つきデータを用いる場合、加算器６０１は、符号つきデータの加算をサポートしていなければならない。
【００５８】
次に、図６のデータ処理装置におけるヒストグラム計算処理について図８及び図９を参照して説明する。
【００５９】
図８は、ＣＰＵ１０１により実行されるヒストグラム計算処理のフローチャートであり、図９は、ＤＭＡプロセッサ１０３により実行されるヒストグラム計算処理のフローチャートである。これらの処理と上記第１の実施の形態における処理との違いは、ステップＳ２０３がステップＳ８０１に、ステップＳ５０１がステップＳ８０２に、ステップＳ５１０がステップＳ８０３に、ステップＳ５１２がステップＳ８０４に置き換わっているところだけである。
【００６０】
図８において、ステップＳ８０１では、データ値よりヒストグラムカウンタアドレス値を計算すると共に、当該ヒストグラムカウンタの値に対し、どれだけの値を加算するかを示すカウンタ加算量を計算する。上記第１の実施の形態では、カウンタ加算量は１で固定されていたが、このようにカウンタ加算量を可変とすることで、ヒストグラム取得時の状態に応じて重み付けを行いながら、ヒストグラムを計算することができる。ヒストグラム取得時の状態に応じた重み付けの一例として、ＹＣｂＣｒ空間におけるＹの値が所定の範囲にある場合は、Ｒ，Ｇ，Ｂの各ヒストグラムカウンタをインクリメント（＋２）し、それ以外の場合は、Ｒ，Ｇ，Ｂの各ヒストグラムカウンタを＋１にする操作がある。
【００６１】
次に、ステップＳ８０２では、図７に示した形式で、計算されたヒストグラムアドレスカウンタアドレス値とカウンタ加算量をＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域７００に書き込む。ＣＰＵ１０１側のこれ以外の処理については、図４と同じであるので、その説明を省略する。
【００６２】
図９において、ステップＳ８０３では、ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域７００から、ヒストグラムカウンタアドレス値とカウンタ加算量を一つずつ順に読み出す。次に、ステップＳ５１１では、図５のステップＳ５１１と同じく、ヒストグラムカウンタアドレス値で示されるアドレスからカウンタ値を読み出す。
【００６３】
次に、ステップＳ８０４では、読み出したカウンタ値に対して、ステップＳ８０３で読み出したカウンタ加算量を加算する。ＤＭＡプロセッサ１０３側のこれ以外の処理については、図５と同じであるので、その説明を省略する。
【００６４】
上記第２の実施の形態によれば、上記第１の実施の形態におけるインクリメンタ１０５を加算器６０１に代えて、カウンタ加算量をＣＰＵ１０１からＤＭＡプロセッサ１０３に送信するので、重みつきヒストグラムの計算を高速化することができる。
【００６５】
本発明の目的は、上記実施の形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）が記憶媒体に格納されたプログラムコードを読み出して実行することによっても達成される。
【００６６】
この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施の形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００６７】
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ等を用いることができる。または、プログラムコードをネットワークを介してダウンロードしてもよい。
【００６８】
また、コンピュータが読み出したプログラムコードを実行することにより、上記実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ（オペレーティングシステム）等が実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれる。
【００６９】
更に、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部または全部を行い、その処理によって上述した実施の形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００７０】
【図１】本発明の第１の実施の形態に係るデータ処理装置のハードウェア構成の概略を示すブロック図である。
【図２】図１におけるＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域１０６の使用方法の一例を示す図である。
【図３】図１におけるヒストグラムカウンタ用メモリ領域１０７の使用方法の一例を示す図である。
【図４】ＣＰＵ１０１により実行されるヒストグラム計算処理のフローチャートである。
【図５】ＤＭＡプロセッサ１０３により実行されるヒストグラム計算処理のフローチャートである。
【図６】本発明の第２の実施の形態に係るデータ処理装置のハードウェア構成の概略を示すブロック図である。
【図７】図６におけるＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域の使用方法の一例を示す図である。
【図８】ＣＰＵ１０１により実行されるヒストグラム計算処理のフローチャートである。
【図９】ＤＭＡプロセッサ１０３により実行されるヒストグラム計算処理のフローチャートである。
【図１０】ソフトウェアによる従来のヒストグラム計算処理のフローチャートである。
【符号の説明】
【００７１】
１０１  ＣＰＵ
１０２  ＤＭＡプロセッサ制御用レジスタ
１０３  ＤＭＡプロセッサ
１０４  ＤＭＡプロセッサ用命令メモリ
１０５  インクリメンタ
１０６，７００  ＣＰＵ→ＤＭＡプロセッサ通信用メモリ領域
１０７  ヒストグラムカウンタ用メモリ領域
６０１  加算器
【図１】
2006227902.tif 000003
【図２】
2006227902.tif 000004
【図３】
2006227902.tif 000005
【図４】
2006227902.tif 000006
【図５】
2006227902.tif 000007
【図６】
2006227902.tif 000008
【図７】
2006227902.tif 000009
【図８】
2006227902.tif 000010
【図９】
2006227902.tif 000011
【図１０】
2006227902.tif 000012