JP2012059131A - Simd型マイクロプロセッサ及びその処理方法 - Google Patents
Simd型マイクロプロセッサ及びその処理方法 Download PDFInfo
- Publication number
- JP2012059131A JP2012059131A JP2010203381A JP2010203381A JP2012059131A JP 2012059131 A JP2012059131 A JP 2012059131A JP 2010203381 A JP2010203381 A JP 2010203381A JP 2010203381 A JP2010203381 A JP 2010203381A JP 2012059131 A JP2012059131 A JP 2012059131A
- Authority
- JP
- Japan
- Prior art keywords
- count value
- processor element
- type microprocessor
- simd type
- counter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims description 26
- 238000000034 method Methods 0.000 claims description 132
- 230000001186 cumulative effect Effects 0.000 claims description 51
- 230000004044 response Effects 0.000 claims description 48
- 238000007792 addition Methods 0.000 description 68
- 102220040233 rs79219465 Human genes 0.000 description 17
- 238000010586 diagram Methods 0.000 description 14
- 101710157310 Tegument protein UL47 homolog Proteins 0.000 description 7
- 102200048773 rs2224391 Human genes 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 238000011144 upstream manufacturing Methods 0.000 description 3
- 230000001174 ascending effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000005669 field effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
Images
Landscapes
- Image Processing (AREA)
Abstract
【課題】高速に階調値のヒストグラムを生成し、システム全体のスループットを向上させる。
【解決手段】プロセッサエレメントPEn(n=0,1,…,255)はそれぞれ、階調値nに対応するアドレスnを有する。マイクロカウンタ12は、カウンタレジスタ15のビット幅より小さいビット幅を有する。外部データ転送装置2から、画素データの画素値をアドレスとして含むアドレス信号が入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントPEnのマイクロカンタ12は、カウント値C12を1だけインクリメントする。グローバルプロセッサ10は、所定のタイミングで、カウント値C12を、対応するカウンタレジスタ15に格納されたカウント値C15に累積加算するようにALU14を制御する並列加算処理を実行し、各マイクロカウンタ12に格納されたカウント値C12をリセットするように制御する。
【選択図】図1
【解決手段】プロセッサエレメントPEn(n=0,1,…,255)はそれぞれ、階調値nに対応するアドレスnを有する。マイクロカウンタ12は、カウンタレジスタ15のビット幅より小さいビット幅を有する。外部データ転送装置2から、画素データの画素値をアドレスとして含むアドレス信号が入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントPEnのマイクロカンタ12は、カウント値C12を1だけインクリメントする。グローバルプロセッサ10は、所定のタイミングで、カウント値C12を、対応するカウンタレジスタ15に格納されたカウント値C15に累積加算するようにALU14を制御する並列加算処理を実行し、各マイクロカウンタ12に格納されたカウント値C12をリセットするように制御する。
【選択図】図1
Description
本発明は、1つの演算命令によって複数のデータ等を並列処理するSIMD(Single Instruction stream Multiple Data stream)型マイクロプロセッサ及び当該SIMD型マイクロプロセッサの処理方法に関する。
画像処理専用のマイクロプロセッサでは、SIMD型マイクロプロセッサを採用することが多い(例えば、特許文献1参照。)。1つの命令で複数のデータに対して同時に同一の演算処理が実行可能であるというSIMD型マイクロプロセッサの特徴が画像処理に適しているためである。SIMD型マイクロプロセッサは、演算器及びレジスタをそれぞれ備えた複数のプロセッサエレメント(以下、PE(Processor Element)という。)を備えて構成され、複数のPEにおいて同時に演算処理を行うように制御することにより、画像処理の効率を高めている。各PEは、1個の画素に対応するデータの画像処理を担当するので、複数の画素に対応するデータに対して同時に演算処理を実行できる。
しかしながら、画像データを取り扱う処理の中には、SIMD型マイクロプロセッサによる並列演算効果を得られない処理も存在する。例えば、画像データの階調値のメジアン(中央値)を得る処理などは、メジアンフィルタ処理や、特許文献2記載の画像処理において必要とされるが、並列演算では実現できていない。具体的には、メジアンを得るための手順としては、各画素の階調値を降べき順又は昇べき順に並び替えた後に、母数の2分の1に相当する順位の階調値を求めるか、あるいはヒストグラムを作成した後に度数累計が母数の2分の1に達したときの階調値を採用するなどの手法がある。しかしながら、前者は並び替え処理を行うので並列演算効果を得られず、後者はヒストグラムを作成するときに並列演算効果を得られない。従って、画像処理用のSIMD型マイクロプロセッサでは、ヒストグラムを高速に作成する技術が求められている。
特許文献1には、各PEに固有のアドレスを割り当て、当該アドレスを指定することにより、外部データ転送装置などのSIMD型マイクロプロセッサの外部装置と、任意のPEとの間で画像データを送受信する方法が開示されている。図9を参照して、特許文献1記載の方法を用いて256階調の画素データの階調値のヒストグラムを生成するための従来技術に係るヒストグラム生成処理を説明する。
図9は、従来技術に係るSIMD型マイクロプロセッサ1Pの構成を示すブロック図である。図9において、SIMD型マイクロプロセッサ1Pは、グローバルプロセッサ(以下、GP(Global Processor)という。)10と、256個のプロセッサエレメントPE0P,PE1P,…,PE255Pとを備えて構成される。ここで、GP10は、SISD(Single Instruction Stream, Single Data Stream)タイプのプロセッサであり、SIMD型マイクロプロセッサ1Pの全体の動作、ならびにプロセッサエレメントPE0P〜PE255Pの各動作を制御するとともに、外部データ転送装置2に対して動作設定用データ及びデータ転送のためのコマンドなどを送信する。また、各プロセッサエレメントPEnP(n=0,1,…,255)は、デコーダ及びコントローラ11と、ポートレジスタ40と、算術論理演算回路(以下、ALU(Arithmetic Logic Unit)という。)14及びカウンタレジスタ15を備えた累積演算回路13と、演算データバス21及び22とを備えて構成される。また、各プロセッサエレメントPEnPにはプロセッサエレメント番号nに対応する固有のアドレスnが割り当てられている。
また、図9において、外部データ転送装置2は、プロセッサエレメントPE0P〜PE255Pと接続されていて、データの読み出し又は書き込みを指示するための制御信号と、読み出し元又は書き込み先のプロセッサエレメントの固有アドレスを示すアドレス信号とを発生して、プロセッサエレメントPE0P〜PE255Pに出力する。各プロセッサエレメントPEnPにおいて、デコーダ及びコントローラ11は、入力されるアドレス信号に含まれるアドレスがプロセッサエレメントPEnPに割り当てられているアドレスnと一致し、かつ入力される制御信号がデータ読み出しを示すときに、データ読み出しを指示する指示信号S11をポートレジスタ40に出力し、これに応答して、ポートレジスタ40は当該ポートレジスタ40に格納されたデータを、データバスを介して外部データ転送装置2に出力する。また、各プロセッサエレメントPEnPにおいて、デコーダ及びコントローラ11は、入力されるアドレス信号に含まれるアドレスがプロセッサエレメントPEnPに割り当てられているアドレスnと一致し、かつ入力される制御信号がデータ書き込みを示すときに、データ書き込みを指示する指示信号S11をポートレジスタ40に出力し、これに応答して、外部データ転送装置2からデータバスに出力されたデータをポートレジスタ40に格納する。以上説明したように、データ転送装置2と各プロセッサエレメントPEnPとの間でのデータ転送が実行される。
さらに、図9において、GP10は、各ポートレジスタ40に格納されたデータに対して、累積演算回路13などの演算回路を用いて演算処理を実行する。ここで、外部データ転送装置2と、GP10とは互いに独立して動作するので、GP10による演算処理を実行しているときに、外部データ転送装置2が各ポートレジスタ40内のデータを読み出して他の外部装置に転送し、又は、他の外部装置からのデータを各ポートレジスタ40に書き込むことができる。このため、GP10は、外部装置との間でのデータ転送処理のために命令ステップを費やすことがない。
図9の外部データ転送装置2は、通常は、アドレスカウンタなどを用いてプロセッサエレメント番号nに従った順序で各プロセッサエレメントPEnPにアクセスする。このとき、各アドレスnを画素データの階調値nに対応づけることにより、以下に説明するように、SIMD型マイクロプロセッサ1Pを階調値のヒストグラムを生成するために用いることができる。
まず始めに、GP10は、全てのカウンタレジスタ15をリセットする。その後、外部データ転送装置2は、入力される画素データの階調値(0から255までの間の値である。)をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを各デコーダ及びコントローラ11に出力する(以下、データ転送処理という。)。これに応答して、書き込み対象のプロセッサエレメントPEnPのデコーダ及びコントローラ11は、対応するポートレジスタ40にデータ値「1」を書き込み、書き込み対象のプロセッサエレメントPEnP以外のデコーダ及びコントローラ11は、対応するポートレジスタ40にデータ値「0」を書き込む。さらに、各ポートレジスタ40は、格納されたデータC40を演算データバス21を介してALU14に出力し、各カウンタレジスタ15は、格納されたデータC15を演算データバス22を介してALU15に出力する。次に、GP10は、全てのALU14を、入力されるデータC40とデータC15とを加算して、加算結果のデータC15をカウンタレジスタ15に格納するように制御する(以下、並列加算処理という。)。上述した外部データ転送装置2によるデータ転送処理と、GP10による並列加算処理とを交互に繰り返して実行することにより、各プロセッサエレメントPE0P,PE1P,…,PE255Pのカウンタレジスタ15には、階調値0,1,…,255の度数がそれぞれ格納される。
しかしながら、従来技術に係るヒストグラム生成処理では、外部データ転送装置2によるデータ転送処理を1回実行する毎に、GP10による並列加算処理を実行する必要があり、ヒストグラムの生成に比較的長い時間を必要とする。また、ヒストグラム生成処理中は、SIMD型マイクロプロセッサ1Pはヒストグラム生成処理専用に用いられ、他の処理を同時に実行できないのでシステム全体のスループットが低下するという課題があった。
本発明の目的は以上の問題点を解決し、従来技術に比較してヒストグラムを高速に生成でき、システム全体のスループットを向上できるSIMD型マイクロプロセッサ及びその処理方法を提供することにある。
第1の発明に係るSIMD型マイクロプロセッサは、
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するSIMD型マイクロプロセッサにおいて、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記アドレス信号が上記SIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を1だけインクリメントし、
上記制御手段は、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御することを特徴とする。
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するSIMD型マイクロプロセッサにおいて、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記アドレス信号が上記SIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を1だけインクリメントし、
上記制御手段は、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御することを特徴とする。
上記SIMD型マイクロプロセッサにおいて、上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも1つのカウンタ手段に格納されたカウント値が、上記第2のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記制御手段は、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御することを特徴とする。
上記制御手段は、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御することを特徴とする。
また、上記SIMD型マイクロプロセッサにおいて、上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする。
さらに、上記SIMD型マイクロプロセッサにおいて、上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記各プロセッサエレメントの累積加算手段は、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算することを特徴とする。
上記各プロセッサエレメントの累積加算手段は、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算することを特徴とする。
またさらに、上記SIMD型マイクロプロセッサにおいて、上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする。
また、上記SIMD型マイクロプロセッサにおいて、上記画素値は、階調値であることを特徴とする。
第2の発明に係るSIMD型マイクロプロセッサの処理方法は、
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するSIMD型マイクロプロセッサの処理方法において、
上記SIMD型マイクロプロセッサは、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記処理方法は、
上記アドレス信号が上記SIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段が、上記カウント値を1だけインクリメントするステップと、
上記制御手段が、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御するステップとを含むことを特徴とする。
画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するSIMD型マイクロプロセッサの処理方法において、
上記SIMD型マイクロプロセッサは、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記処理方法は、
上記アドレス信号が上記SIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段が、上記カウント値を1だけインクリメントするステップと、
上記制御手段が、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御するステップとを含むことを特徴とする。
上記SIMD型マイクロプロセッサの処理方法において、上記SIMD型マイクロプロセッサは、上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも1つのカウンタ手段に格納されたカウント値が、上記第2のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記処理方法は、上記制御手段が、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御するステップをさらに含むことを特徴とする。
上記処理方法は、上記制御手段が、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御するステップをさらに含むことを特徴とする。
また、上記SIMD型マイクロプロセッサの処理方法において、上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする。
さらに、上記SIMD型マイクロプロセッサの処理方法において、上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記処理方法は、上記各プロセッサエレメントの累積加算手段が、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算するステップをさらに含むことを特徴とする。
上記処理方法は、上記各プロセッサエレメントの累積加算手段が、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算するステップをさらに含むことを特徴とする。
またさらに、上記SIMD型マイクロプロセッサの処理方法において、上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする。
また、上記SIMD型マイクロプロセッサの処理方法において、上記画素値は、階調値であることを特徴とする。
本発明に係るSIMD型マイクロプロセッサ及びSIMD型マイクロプロセッサの処理方法によれば、SIMD型マイクロプロセッサの各プロセッサエレメントは画素値に対応する固有のアドレスをそれぞれ有し、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備える。また、アドレス信号がSIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を1だけインクリメントする。さらに、制御手段は、所定のタイミングで、各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御する。従って、従来技術に比較してヒストグラムを高速に生成でき、システム全体のスループットを向上できる。
以下、本発明に係る実施形態について図面を参照して説明する。なお、以下の各実施形態において、同様の構成要素については同一の符号を付している。
第1の実施形態.
図1は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ1の構成を示すブロック図であり、図2は、図1のSIMD型マイクロプロセッサ1によって実行されるヒストグラム生成処理を示すシーケンス図である。なお、図1において、図9と同様のデータバスを記載しているが、以下の各実施形態に係るヒストグラム生成処理では用いられない。図1において、SIMD型マイクロプロセッサ1は、外部データ転送装置2に入力される256階調の画素データの階調値のヒストグラムを生成するために用いられる。SIMD型マイクロプロセッサ1は、GP10と、256個のプロセッサエレメントPE0,PE1,…,PE255とを備えて構成される。ここで、GP10は、SISDタイプのプロセッサであり、SIMD型マイクロプロセッサ1の全体の動作、ならびにプロセッサエレメントPE0〜PE255の各動作を制御するとともに、外部データ転送装置2に対して動作設定用データ及びデータ転送のためのコマンドなどを送信する。さらに、各プロセッサエレメントPEn(n=0,1,…,255)は、デコーダ及びコントローラ11と、マイクロカウンタ(小度数カウンタ)12と、ALU14及びカウンタレジスタ15を備えた累積加算回路13と、演算データバス21及び22とを備えて構成される。ここで、各プロセッサエレメントPEnには、プロセッサエレメント番号nに対応する固有のアドレスnが割り当てられている。
図1は、本発明の第1の実施形態に係るSIMD型マイクロプロセッサ1の構成を示すブロック図であり、図2は、図1のSIMD型マイクロプロセッサ1によって実行されるヒストグラム生成処理を示すシーケンス図である。なお、図1において、図9と同様のデータバスを記載しているが、以下の各実施形態に係るヒストグラム生成処理では用いられない。図1において、SIMD型マイクロプロセッサ1は、外部データ転送装置2に入力される256階調の画素データの階調値のヒストグラムを生成するために用いられる。SIMD型マイクロプロセッサ1は、GP10と、256個のプロセッサエレメントPE0,PE1,…,PE255とを備えて構成される。ここで、GP10は、SISDタイプのプロセッサであり、SIMD型マイクロプロセッサ1の全体の動作、ならびにプロセッサエレメントPE0〜PE255の各動作を制御するとともに、外部データ転送装置2に対して動作設定用データ及びデータ転送のためのコマンドなどを送信する。さらに、各プロセッサエレメントPEn(n=0,1,…,255)は、デコーダ及びコントローラ11と、マイクロカウンタ(小度数カウンタ)12と、ALU14及びカウンタレジスタ15を備えた累積加算回路13と、演算データバス21及び22とを備えて構成される。ここで、各プロセッサエレメントPEnには、プロセッサエレメント番号nに対応する固有のアドレスnが割り当てられている。
図1において、外部データ転送装置2は、SIMD型マイクロプロセッサ1と同期して動作する。外部データ転送装置2は、メモリなどの外部装置から画素データを入力する毎に、入力される画素データの階調値をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを発生して、各プロセッサエレメントPEnのデコーダ及びコントローラ11に出力する。各プロセッサエレメントPEnにおいて、デコーダ及びコントローラ11は、入力されるアドレス信号に含まれるアドレスとプロセッサエレメントPEnのアドレスnとが一致し、かつ制御信号がデータ書き込みを示すときは、カウントアップを指示する指示信号S11を発生してマイクロカウンタ12に出力する。また、マイクロカウンタ12は、GP10からのリセット命令に応答してカウント値C12をゼロにリセットし、データ書き込みを示す指示信号S11に応答して、カウント値C12を1だけインクリメントする。マイクロカウンタ12の出力端子は、演算データバス21を介してALU14の一方の入力端子に接続されている。
さらに、図1において、カウンタレジスタ15は、ALU14からのカウント値C14をカウント値C15として格納するとともに、GP10からのリセット命令に応答してカウント値C15をゼロにリセットする。カウンタレジスタ15の出力端子は、演算データバス22を介してALU14の他方の入力端子に接続されている。ALU14は、GP10からの累積加算命令A0に応答して、入力されるカウント値C12とカウント値C15とを加算し、加算結果のカウント値C14をカウンタレジスタ15に出力する。
ここで、図1において、カウンタレジスタ15は、従来技術に係るSIMD型マイクロプロセッサ1Pにおいても演算に用いられるレジスタであり、図2を参照して後述するヒストグラム生成処理専用に設けられる構成要素ではない。カウンタレジスタ15は、各プロセッサエレメントPEnにおいて処理されるデータを格納できるビット幅を有する。また、マイクロカウンタ12のビット幅は、カウンタレジスタ15及びALU14のビット幅よりも小さい。例えば、カウンタレジスタ15及びALU14のビット幅は16ビットであり、マイクロカウンタ12のビット幅は8ビットである。
次に、図2を参照して、SIMD型マイクロプロセッサ1によって実行されるヒストグラム生成処理を説明する。まず始めに、GP10は、リセット命令を、各プロセッサエレメントPEnのマイクロカウンタ12及びカウンタレジスタ15に出力する。これに応答して、各プロセッサエレメントPEnにおいて、マイクロカウンタ12は、カウント値C12をゼロにリセットし、カウンタレジスタ15は、カウント値C15をゼロにリセットする。次に、GP10は、後述する処理A1を開始することを指示する処理開始命令を外部データ転送装置2に出力する。これに応答して、外部データ転送装置2は、処理A1を実行する。
処理A1において、外部データ転送装置2は、外部装置から1つの画素データを入力すると、入力された画素データの階調値をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを発生して、各プロセッサエレメントPEnのデコーダ及びコントローラ11に出力する。これに応答して、各プロセッサエレメントPEnのデコーダ及びコントローラ11は、入力されたアドレス信号に含まれるアドレスがnであり、かつ入力された制御信号がデータ書き込みを示すか否かを判断し、YESのときは、カウントアップを指示する指示信号S11を発生してマイクロカウンタ12に出力する一方、NOのときは、指示信号S11を発生しない。さらに、カウントアップを指示する指示信号S11に応答して、マイクロカウンタ12はカウント値C12を1だけインクリメントする。
データ転送装置2は、以上説明した処理A1を、マイクロカウンタ12によって計数可能なカウント値C12の最大値と等しい回数だけ繰り返す。具体的には、本実施形態においてカウント値C12の最大値は255であり、処理A1は255回だけ繰り返して実行される。これにより、各階調値nに対応するアドレスnを有するプロセッサエレメントPEnのマイクロカウンタ12には、入力される画素データのうち階調値nを有する画素データの個数に対応するカウント値C12が格納される。ただし、カウント値C12は0から255までの間の値しか表現できないので、処理A1を256回以上続けて繰り返して実行すると、特定の階調値を有する画素データのみが外部データ転送装置2に入力された場合には、その階調値に対応するアドレスを有するプロセッサエレメントのマイクロカウンタ12はオーバーフローを起こしてしまう。このため、処理A1を255回だけ繰り返して実行された後、以下に説明する並列加算処理PAが実行される。
図2の並列加算処理PAにおいて、GP10は累積加算命令A0を全てのプロセッサエレメントPE0〜PE255のALU14に出力する。これに応答して、各プロセッサエレメントPEnのALU14は、カウント値C12とカウント値C15とを加算し、加算結果のカウント値C14をカウンタレジスタ15に出力する。プロセッサエレメントPE0〜PE255の各ALU14による加算処理は、SIMD型マイクロプロセッサ1の並列演算機能によって実行されるので、比較的短時間で終了する。並列加算処理PAの次に、GP10は、リセット命令を各プロセッサエレメントPEnのマイクロカウンタ12に出力する。これに応答して、全てのマイクロカウンタ12のカウント値C12はゼロにリセットされる。
図2において、255回の処理A1と、並列加算処理PAと、それに続くマイクロカウンタ12のリセット処理とを含む処理B1は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントPEnのカウンタレジスタ15には、階調値nの度数に対応するカウント値C15が格納される。その後、外部データ転送装置2は、最後の画素データを処理したことを示す処理終了通知をGP10に出力する。これに応答して、GP10は、各プロセッサエレメントPEnのカウンタレジスタ15に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ15は、カウント値C15をGP10に出力し、ヒストグラム生成処理を終了する。
以上説明したように、本実施形態に係るSIMD型マイクロプロセッサ1において、各プロセッサエレメントPEnは、階調値nに対応する固有のアドレスnをそれぞれ有する。また、各プロセッサエレメントPEnは、16ビットのビット幅を有しかつアドレスnに対応する階調値nの度数に対応するカウント値C15を格納するカウンタレジスタ15を備えた累積加算回路13と、8ビットのビット幅を有しかつカウント値C12を格納するマイクロカウンタ12とをそれぞれ備える。また、外部データ転送装置2からアドレス信号がSIMD型マイクロプロセッサ1に入力される毎に、当該入力されるアドレス信号に含まれるアドレスnを有するプロセッサエレメントPEnのマイクロカンタ12は、カウント値C12を1だけインクリメントする。さらに、グローバルプロセッサ10は、図2の処理A1を255回だけ繰り返して実行したタイミングで、各プロセッサエレメントPEnのマイクロカンタ12に格納されたカウント値C12を、マイクロカンタ12に対応するカウンタレジスタ15に格納されたカウント値C15に累積加算するように各累積加算回路13を制御する並列加算処理PAを実行するとともに、各プロセッサエレメンPEnのマイクロカウンタ12に格納されたカウント値C12をリセットするように制御する。
従って、本実施形態によれば、各プロセッサエレメントPEnにマイクロカウンタ12を設けたので、処理対象の画素データ毎に累積加算命令A0を実行する必要がなく、従来技術に比較してヒストグラムを高速に生成できる。また、図2の処理A1をマイクロカウンタ12に格納されるカウント値C12の最大値に等しい回数だけ実行している期間中は、SIMD型マイクロプロセッサ1は他の処理を実行できるので、従来技術に比較してシステム全体のスループットが向上する。さらに、SIMD型マイクロプロセッサ1は、従来技術に係るSIMD型マイクロプロセッサ1P(図9参照。)に比較して、マイクロカウンタ12をさらに設けるだけで実現できる。一般に、従来技術に係るSIMD型マイクロプロセッサ1Pにおいて、ポートレジスタ40のビット幅は累積加算回路13のビット幅と等しい(例えば、16ビットである。)が、本実施形態に係るSIMD型マイクロプロセッサ1に設けられるマイクロカウンタ12のビット幅(本実施形態では、8ビットである。)は、ポートレジスタ40のビット幅より小さい。このため、従来技術に係るSIMD型マイクロプロセッサ1Pに新たに追加する構成要素のサイズは比較的小さくてすむ。
なお、本実施形態において、処理A1を255回だけ繰り返して実行したが、本発明はこれに限らず、カウント値C12の最大値以下の回数だけ繰り返して実行すればよい。
また、各カウンタレジスタ15からカウント値C15を読み出した後に、処理対象の画素データを追加して、さらに処理B1を継続して実行してもよい。
さらに、マイクロカンタ12のビット幅は8ビットであったが、本発明はこれに限らず、カウンタレジスタ15のビット幅より小さければよい。
第2の実施形態.
図3は、本発明の第2の実施形態に係るSIMD型マイクロプロセッサ1Aの構成を示すブロック図であり、図4は、図3のSIMD型マイクロプロセッサ1Aによって実行されるヒストグラム生成処理を示すシーケンス図である。
図3は、本発明の第2の実施形態に係るSIMD型マイクロプロセッサ1Aの構成を示すブロック図であり、図4は、図3のSIMD型マイクロプロセッサ1Aによって実行されるヒストグラム生成処理を示すシーケンス図である。
図3において、SIMD型マイクロプロセッサ1Aは、GP10と、256個のプロセッサエレメントPE0A,PE1A,…,PE255Aと、GP10に接続されたIRQ(Interrupt ReQuest)信号線31と、所定の電源電圧Vccを出力する直流電源とIRQ信号線31との間に接続されたプルアップ抵抗32とを備えて構成される。各プロセッサエレメントPEnAには、プロセッサエレメント番号nに対応する固有のアドレスnが割り当てられている。ここで、各プロセッサエレメントPEnAは、第1の実施形態に係るプロセッサエレメントPEnに比較して、IRQ条件判定回路16と、Nチャネル型MOS電界効果トランジスタ(以下、nMOSFETという。)17とをさらに備えて構成されたことを特徴としている。
各プロセッサエレメントPEnAにおいて、nMOSFET17は、IRQ条件判定回路16に接続されたゲートと、IRQ信号線31に接続されたドレインと、接地されたソースとを有する。すなわち、全てのnMOSFET17は互いにワイヤードオア接続されている。また、各プロセッサエレメントPEnAにおいて、IRQ条件判定回路16は、マイクロカウンタ12のカウント値C12を検出し、検出されたカウント値C12がカウント値C12の最大値(本実施形態では、255である。)であるとき、nMOSFET17をオンするように制御する。以上のように構成することにより、少なくとも1つのnMOSFET17がオンしたとき、IRQ信号線31の電圧レベルがローレベルにされる。以下、IRQ信号線31の電圧レベルがローレベルにされことを、割込要求信号が発生されるという。プロセッサエレメントPE0A〜PE255Aの各IRQ条件判定回路16及びnMOSFET17と、IRQ信号線31と、プルアップ抵抗32とは、プロセッサエレメントPE0A〜PE255Aのマイクロカンタ12のうちの少なくとも1つのマイクロカンタ12に格納されたカウント値C12が、マイクロカウンタ12のビット幅に対応する所定のしきい値カウント値(本実施形態では、255である。)になったとき、割込要求信号を発生してGP10に出力する割込要求信号発生手段を構成する。割込要求信号に応答して、GP10は並列加算処理PAを実行する。
次に、図4を参照して、SIMD型マイクロプロセッサ1Aによって実行されるヒストグラム生成処理を説明する。まず始めに、GP10は、リセット命令を、各プロセッサエレメントPEnのマイクロカウンタ12及びカウンタレジスタ15に出力する。これに応答して、各プロセッサエレメントPEnAにおいて、マイクロカウンタ12は、カウント値C12をゼロにリセットし、カウンタレジスタ15は、カウント値C15をゼロにリセットする。次に、GP10は、図2の処理A1と同様の処理A1を開始することを指示する処理開始命令を外部データ転送装置2に出力する。これに応答して、外部データ転送装置2は、処理A1を実行する。本実施形態では、処理A1が実行される毎に、各プロセッサエレメントPEnのIRQ条件判定回路16は、入力されるカウント値C12が255であるか否かを判断し、NOのときは対応するnMOSFET17をオンするように制御する。これにより、上述したように割込要求信号が発生されてGP10に出力される。すなわち、少なくとも1つのプロセッサエレメントPEnAにおいてカウント値C12が255であるときに、割込要求信号が発生される。また、全てのプロセッサエレメントPE0A〜PE255Aにおいてカウント値C12が255未満であるときは、図4に示すように、処理A1と、IRQ条件判定回路16による判断処理とを含む処理A2が繰り返して実行される。すなわち、処理A2を実行すると、いずれか1つのマイクロカウンタ12のカウント値C12が1だけインクリメントされる。そして、処理A2を繰り返して実行すると、各マイクロカウンタ12のカウント値C12が増えていき、少なくとも1つのマイクロカウンタ12のカウント値C12が255になると、対応するIRQ条件判定回路16は割込要求信号を発生してGP10に出力する。
GP10は、割込要求信号に応答して、処理A2を実行しないように外部データ転送装置2を制御し、図2と同様の並列加算処理PAを割込処理として実行し、リセット命令を各プロセッサエレメントPEnのマイクロカウンタ12に出力する。これに応答して、全てのマイクロカウンタ12のカウント値C12はゼロにリセットされる。また、GP10は、処理A2を実行するように外部データ転送装置2を制御する。図4において、処理A2と、並列加算処理PAと、それに続くマイクロカウンタ12のリセット処理とを含む処理B2は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントPEnのカウンタレジスタ15には、階調値nの度数に対応するカウント値C15が格納される。その後、外部データ転送装置2は、最後の画素データを処理したことを示す処理終了通知をGP10に出力する。これに応答して、GP10は、各プロセッサエレメントPEnのカウンタレジスタ15に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ15は、カウント値C15をGP10に出力し、ヒストグラム生成処理を終了する。
図4において、1回の処理B2に含まれる処理A1の実行回数は、処理対象の画素データの階調値の分布によって変化する。例えば、処理対象の画素データの階調値の分布に偏りがあるときは、1回の処理B2に含まれる処理A1の実行回数は、マイクロカウンタ12のカウント値C12の最大値(255である。)に比較的近くなる。しかしながら、処理対象の画素データの階調値の分布に偏りがないときは、1回の処理B2に含まれる処理A1の実行回数は、マイクロカウンタ12のカウント値C12の最大値よりも大きくなり、第1の実施形態に比較して、処理A1を255回繰り返して実行する毎にデータ転送装置2による処理を中断して並列加算処理PAを実行する必要が無く、中断間隔(すなわち、並列加算処理PAの実行間隔である。)を長くすることができる。これによりSIMD型マイクロプロセッサ1Aにより他の処理を実行できる期間が長くなり、システム全体のスループットがさらに向上する。
なお、本実施形態において、IRQ条件判定回路16は、カウント値C12が255に等しいか否かを判断したが、本発明はこれに限らず、カウント値C12がカウント値C12の最大値以下の所定のしきい値に等しいか否かを判断すればよい。
また、各カウンタレジスタ15からカウント値C15を読み出した後に、処理対象の画素データを追加して、さらに処理B2を継続して実行してもよい。
さらに、GP10は、割込要求信号に応答して、処理A2を実行しないように外部データ転送装置2を制御したが、本発明はこれに限らず、処理A2の実行間隔が並列加算処理PAを実行するために必要とされる期間よりも十分に長いときは、GP10は、割込要求信号に応答して、処理A2を実行しないように外部データ転送装置2を制御する必要はない。
第3の実施形態.
図5は、本発明の第3の実施形態に係るSIMD型マイクロプロセッサ1Bの構成を示すブロック図であり、図6は、図5のSIMD型マイクロプロセッサ1Bによって実行されるヒストグラム生成処理を示すシーケンス図である。
図5は、本発明の第3の実施形態に係るSIMD型マイクロプロセッサ1Bの構成を示すブロック図であり、図6は、図5のSIMD型マイクロプロセッサ1Bによって実行されるヒストグラム生成処理を示すシーケンス図である。
図5において、SIMD型マイクロプロセッサ1Bは、GP10と、256個のプロセッサエレメントPE0B,PE1B,…,PE255Bと、GP10に接続されたIRQ信号線31と、所定の電源電圧Vccを出力する直流電源とIRQ信号線31との間に接続されたプルアップ抵抗32とを備えて構成される。各プロセッサエレメントPEnBには、プロセッサエレメント番号nに対応する固有のアドレスnが割り当てられている。ここで、各プロセッサエレメントPEnBは、第2の実施形態に係るプロセッサエレメントPEnAに比較して、デコーダ及びコントローラ11に代えてデコーダ及びコントローラ11Aを備え、マイクロカウンタ12に代えてシフトレジスタ12Aを備え、IRQ条件判定回路16に代えてIRQ条件判定回路16Aを備えたことを特徴としている。
図5の各プロセッサエレメントPEnBにおいて、デコーダ及びコントローラ11Aは、外部データ転送装置2からのアドレス信号及び制御信号を入力し、アドレス信号に含まれるアドレスとプロセッサエレメントPEnBのアドレスnとが一致し、かつ制御信号がデータ書き込みを示すときは、シフトアップを指示する指示信号S11Aを発生してシフトレジスタ12Aに出力する。また、各プロセッサエレメントPEnBにおいて、シフトレジスタ12Aは、縦続接続された8個の1ビットレジスタを備えて構成される。シフトレジスタ12Aは、シフトアップを指示する指示信号S11Aに応答して、格納している8ビットのビットデータC12Aの最下流の値C12AuをIRQ条件判定回路16Aに出力し、ビットデータC12Aの各ビットのデータ(0又は1である。)を、入力されるクロックに従って1段分だけ下流のレジスタにシフトし、最上流のレジスタに1を格納する。また、各シフトレジスタ12Aは、GP10からのリセット命令に応答して、ビットデータC12Aを「00000000」にリセットする。なお、シフトレジスタ12Aの出力端子は、演算データバス21を介してALU14の一方の入力端子に接続されている。
また、図5において、各プロセッサエレメントPEnBにおいて、IRQ条件判定回路16Aは、入力される値C12Auが1であるとき、nMOSFET17をオンするように制御し、これにより割込要求信号がGP10に出力される。プロセッサエレメントPE0B〜PE255Bの各IRQ条件判定回路16A及びnMOSFET17と、IRQ信号線31と、プルアップ抵抗32とは、プロセッサエレメントPE0B〜PE255Bのシフトレジスタ12Aのうちの少なくとも1つのシフトレジスタ12Aに格納されたビットデータC12Aが、シフトレジスタ12Aのビット幅に対応する所定のしきい値ビットデータ(本実施形態では、「11111111」である。)になったとき、割込要求信号を発生してGP10に出力する割込要求信号発生手段を構成する。
次に、図6を参照して、SIMD型マイクロプロセッサ1Bによって実行されるヒストグラム生成処理を説明する。まず始めに、GP10は、リセット命令を、各プロセッサエレメントPEnBのシフトレジスタ12A及びカウンタレジスタ15に出力する。これに応答して、各プロセッサエレメントPEnにおいて、シフトレジスタ12Aは、ビットデータ12Aを「00000000」にリセットし、カウンタレジスタ15は、カウント値C15をゼロにリセットする。次に、GP10は、後述する処理A3を開始することを指示する処理開始命令を外部データ転送装置2に出力する。これに応答して、外部データ転送装置2は、処理A3を実行する。
処理A3において、外部データ転送装置2は、外部装置から1つの画素データを入力すると、入力された画素データの階調値をアドレスとして含むアドレス信号と、データ書き込みを示す制御信号とを発生して、各プロセッサエレメントPEnのデコーダ及びコントローラ11に出力する。これに応答して、各プロセッサエレメントPEnのデコーダ及びコントローラ11は、入力されたアドレス信号に含まれるアドレスがnであり、かつ入力された制御信号がデータ書き込みを示すか否かを判断し、YESのときは、シフトアップを指示する指示信号S11Aを発生してシフトレジスタ12Aに出力する一方、NOのときは、指示信号S11Aを発生しない。さらに、シフトアップを指示する指示信号S11Aに応答して、シフトレジスタ12Aは、ビットデータC12Aを1段分だけ下流のレジスタにシフトし、最上流に1を格納する。
処理A3に続いて、各プロセッサエレメントPEnにおいて、IRQ条件判定回路16Aは、入力される値C12Auが1であるか否かを判断し、NOのときは対応するnMOSFET17をオンするように制御する。これにより、割込要求信号が発生されてGP10に出力される。すなわち、少なくとも1つのプロセッサエレメントPEnBにおいてビットデータC12Aが「11111111」であるときに、割込要求信号が発生される。また、全てのプロセッサエレメントPE0B〜PE255BにおいてビットデータC12Aが「11111111」以外であるときは、図6に示すように、処理A3と、IRQ条件判定回路16Aによる判断処理とを含む処理A4が繰り返して実行される。すなわち、処理A3を繰り返して実行すると、各ビットデータC12Aの値は、「00000000」,「10000000」,「11000000」,…のように変化する。そして、少なくとも1つのシフトレジスタ12AのビットデータC12Aが「11111111」になると、対応するIRQ条件判定回路16Aは割込要求信号を発生してGP10に出力する。
GP10は、割込要求信号に応答して、処理A4を実行しないように外部データ転送装置2を制御し、累積加算命令A1を全てのプロセッサエレメントPE0B〜PE255BのALU14に出力する。これに応答して、各プロセッサエレメントPEnBのALU14は、ビットデータC12Aが「10000000」と等しいときにのみ、カウント値C15に1を加算し、加算結果のカウント値C14をカウンタレジスタ15に出力する。次に、GP10は、累積加算命令A2を全てのプロセッサエレメントPE0B〜PE255BのALU14に出力する。これに応答して、各プロセッサエレメントPEnBのALU14は、ビットデータC12Aが「11000000」と等しいときにのみ、カウント値C15に1を加算し、加算結果のカウント値C14をカウンタレジスタ15に出力する。以下、同様に、GP10は、累積加算命令A3,A4,…,A8を全てのプロセッサエレメントPE0B〜PE255BのALU14に順次出力する。ここで、累積加算命令Am(m=1,2,…,8)は、ビットデータC12Aの最上流からmビット目までのビットに1が格納されているときにのみ、カウント値C15にmを加算して、加算結果のカウント値C14をカウンタレジスタ15に出力することを指示する命令である。プロセッサエレメントPE0B〜PE255Bの各ALU14による加算処理は、SIMD型マイクロプロセッサ1Bの並列演算機能によって実行されるので、比較的短時間で終了する。
GP10は、累積加算命令A8を全てのプロセッサエレメントPE0B〜PE255BALU14に出力した後、リセット命令を各プロセッサエレメントPEnBのシフトレジスタ12Aに出力する。これに応答して、全てのシフトレジスタ12AのビットデータC12Aは「00000000」にリセットされる。また、GP10は、処理A4を実行するように外部データ転送装置2を制御する。
図6において、処理A4と、累積加算命令A1〜A8と、それに続くシフトレジスタ12Aのリセット処理とを含む処理B3は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントPEnBのカウンタレジスタ15には、階調値nの度数に対応するカウント値C15が格納される。その後、外部データ転送装置2は、最後の画素データを処理したことを示す処理終了通知をGP10に出力する。これに応答して、GP10は、各プロセッサエレメントPEnのカウンタレジスタ15に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ15は、カウント値C15をGP10に出力し、ヒストグラム生成処理を終了する。
図6において、1回の処理B3に含まれる処理A3の実行回数は、処理対象の画素データの階調値の分布によって変化する。例えば、処理対象の画素データの階調値の分布に偏りがあるときは、1回の処理B3に含まれる処理A3の実行回数は、シフトレジスタ12Aのビット幅(本実施形態では、8である。)に比較的近くなる。しかしながら、処理対象の画素データの階調値の分布に偏りがないときは、1回の処理B3に含まれる処理A3の実行回数は、シフトレジスタ12Aのビット幅よりも大きくなる。
一般に、カウンタレジスタよりシフトレジスタの方が単純な構成を有するので、シフトレジスタ12Aは、カウントアップ機能を有するマイクロカウンタ12よりシンプルな回路構成で実現できる。従って、第2の実施形態に係るSIMD型マイクロプロセッサ1Aに比較して、回路規模及び消費電力を小さく抑えることができる。
なお、各カウンタレジスタ15からカウント値C15を読み出した後に、処理対象の画素データを追加して、さらに処理B3を継続して実行してもよい。
さらに、GP10は、割込要求信号に応答して、処理A4を実行しないように外部データ転送装置2を制御したが、本発明はこれに限らず、処理A4の実行間隔が累積加算命令A1〜A8を実行するために必要とされる期間よりも十分に長いときは、GP10は、割込要求信号に応答して、処理A4を実行しないように外部データ転送装置2を制御する必要はない。
第4の実施形態.
図7は、本発明の第4の実施形態に係るSIMD型マイクロプロセッサ1Cの構成を示すブロック図であり、図8は、図7のSIMD型マイクロプロセッサ1Cによって実行されるヒストグラム生成処理を示すシーケンス図である。
図7は、本発明の第4の実施形態に係るSIMD型マイクロプロセッサ1Cの構成を示すブロック図であり、図8は、図7のSIMD型マイクロプロセッサ1Cによって実行されるヒストグラム生成処理を示すシーケンス図である。
図7において、SIMD型マイクロプロセッサ1Cは、GP10と、256個のプロセッサエレメントPE0C,PE1C,…,PE255Cと、GP10に接続されたIRQ信号線31と、所定の電源電圧Vccを出力する直流電源とIRQ信号線31との間に接続されたプルアップ抵抗32とを備えて構成される。各プロセッサエレメントPEnCには、プロセッサエレメント番号nに対応する固有のアドレスnが割り当てられている。ここで、各プロセッサエレメントPEnCは、第3の実施形態に係るプロセッサエレメントPEnBに比較して、シフトレジスタ12Aと演算データバス21との間に設けられたエンコーダ18をさらに備えたことを特徴としている。図7において、エンコーダ18は、シフトレジスタ12Aから出力されたビットデータC12Aを、バイナリデータC18に符号化し、演算データバス21を介してALU14に出力する。
次に、図8を参照して、SIMD型マイクロプロセッサ1Cによって実行されるヒストグラム生成処理を説明する。図8のヒストグラム生成処理は、図6のヒストグラム生成処理に比較して、割込要求信号がGP10に出力されるタイミングより後の処理のみが異なる。GP10は、割込要求信号に応答して、処理A4を実行しないように外部データ転送装置2を制御し、各プロセッサエレメントPEnCのALU14を、演算データバス21に出力されたバイナリデータC18を読み出すように制御する。次に、並列加算処理PA1が実行される。並列加算処理PA1において、GP10は、累積加算命令A0を全てのプロセッサエレメントPE0C〜PE255CのALU14に出力する。これに応答して、各プロセッサエレメントPEnCのALU14は、入力されるバイナリデータC18とカウント値C15とを加算して、加算結果のカウント値C14をカウンタレジスタ15に出力する。プロセッサエレメントPE0C〜PE255Cの各ALU14による加算処理は、SIMD型マイクロプロセッサ1Cの並列演算機能によって実行されるので、比較的短時間で終了する。
次に、GP10は、リセット命令を各プロセッサエレメントPEnCのシフトレジスタ12Aに出力する。これに応答して、全てのシフトレジスタ12AのビットデータC12Aは「00000000」にリセットされる。また、GP10は、処理A4を実行するように外部データ転送装置2を制御する。
図8において、処理A4と、並列加算処理PA1と、それに続くシフトレジスタ12Aのリセット処理とを含む処理B4は、最後の画素データに対する処理が終了するまで繰り返して実行される。これにより、各プロセッサエレメントPEnCのカウンタレジスタ15には、階調値nの度数に対応するカウント値C15が格納される。その後、外部データ転送装置2は、最後の画素データを処理したことを示す処理終了通知をGP10に出力する。これに応答して、GP10は、各プロセッサエレメントPEnのカウンタレジスタ15に対して読み出し命令を出力し、これに応答して、各カウンタレジスタ15は、カウント値C15をGP10に出力し、ヒストグラム生成処理を終了する。
第3の実施形態では、シフトレジスタ12Aに格納されたビットデータC12AをALU14に出力したため、処理B3において、8個の累積加算命令A1〜A8を順次実行する必要があった。これに対して、本実施形態では、ビットデータC12AをバイナリデータC18に変換してALU14に出力するので、処理B4においてALU14による累積加算処理を1回だけ実行すればよい。このため、第3の実施形態に比較して累積加算の回数を最小限に抑えて、高速にヒストグラムを生成できる。
上記各実施形態において、256階調の画素データに対してヒストグラム生成処理を実行したが、本発明はこれに限らず、任意の階調数の画素データに対して適用できる。この場合、SIMD型マイクロプロセッサ1,1A,1B,1Cはそれぞれ、画素データの階調数以上の個数のプロセッサエレメントPEn,PEnA,PEnB,PEnCを備えて構成される。
また、上記各実施形態において、マイクロカウンタ12と、シフトレジスタ12Aと、カウンタレジスタ15とを、それぞれGP10からのリセット命令に応答してリセットしたが、本発明はこれに限らず、外部データ転送装置2から所定の初期値を書き込むように制御してもよい。
さらに、上記各実施形態おいて、画素データの階調値のヒストグラムを生成したが、本発明はこれに限らず、画素データの各色成分の濃度などの他の画素値のヒストグラムを生成してもよい。
以上説明したように、本発明に係るSIMD型マイクロプロセッサ及びSIMD型マイクロプロセッサの処理方法によれば、SIMD型マイクロプロセッサの各プロセッサエレメントは画素値に対応する固有のアドレスをそれぞれ有し、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備える。また、アドレス信号がSIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を1だけインクリメントする。さらに、制御手段は、所定のタイミングで、各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御する。従って、従来技術に比較してヒストグラムを高速に生成でき、システム全体のスループットを向上できる。
本発明に係るSIMD型マイクロプロセッサ及び当該SIMD型マイクロプロセッサの処理方法は、デジタルカメラ、デジタルテレビジョン放送受信機、プリンタ装置、及びデジタル複写機などの画像処理を実行する装置に利用できる。
1,1A,1B,1C…SIMD型マイクロプロセッサ、
2…外部データ転送装置、
10…グローバルプロセッサ、
11A…デコーダ及びコントローラ、
12…マイクロカウンタ、
12A…シフトレジスタ、
13…累積加算回路、
14…ALU、
15…カウンタレジスタ、
16,16A…IRQ条件判定回路、
17…nMOSFET、
18…エンコーダ、
21,22…演算データバス、
31…IRQ信号線、
32…プルアップ抵抗、
PE0〜PE255,PE0A〜PE255A,PE0B〜PE255B,PE0C〜PE255C…プロセッサエレメント。
2…外部データ転送装置、
10…グローバルプロセッサ、
11A…デコーダ及びコントローラ、
12…マイクロカウンタ、
12A…シフトレジスタ、
13…累積加算回路、
14…ALU、
15…カウンタレジスタ、
16,16A…IRQ条件判定回路、
17…nMOSFET、
18…エンコーダ、
21,22…演算データバス、
31…IRQ信号線、
32…プルアップ抵抗、
PE0〜PE255,PE0A〜PE255A,PE0B〜PE255B,PE0C〜PE255C…プロセッサエレメント。
Claims (12)
- 画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するSIMD(Single Instruction stream Multiple Data stream)型マイクロプロセッサにおいて、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記アドレス信号が上記SIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段は、上記カウント値を1だけインクリメントし、
上記制御手段は、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御することを特徴とするSIMD型マイクロプロセッサ。 - 上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも1つのカウンタ手段に格納されたカウント値が、上記第2のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記制御手段は、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御することを特徴とする請求項1記載のSIMD型マイクロプロセッサ。 - 上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする請求項1又は2記載のSIMD型マイクロプロセッサ。
- 上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記各プロセッサエレメントの累積加算手段は、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算することを特徴とする請求項3記載のSIMD型マイクロプロセッサ。 - 上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする請求項1乃至4のうちのいずれか1つに記載のSIMD型マイクロプロセッサ。
- 上記画素値は、階調値であることを特徴とする請求項1乃至5のうちのいずれか1つに記載のSIMD型マイクロプロセッサ。
- 画素データの画素値をアドレスとして含むアドレス信号を順次入力し、複数の画素データの各画素値のヒストグラムを生成するSIMD型マイクロプロセッサの処理方法において、
上記SIMD型マイクロプロセッサは、
画素値に対応する固有のアドレスをそれぞれ有する複数のプロセッサエレメントであって、所定の第1のビット幅を有しかつ当該固有のアドレスに対応する画素値の度数を格納する記憶手段を備えた累積加算手段と、上記第1のビット幅より小さい所定の第2のビット幅を有しかつ所定のカウント値を格納するカウンタ手段とをそれぞれ備えた複数のプロセッサエレメントと、
上記各プロセッサエレメントを制御する制御手段とを備え、
上記処理方法は、
上記アドレス信号が上記SIMD型マイクロプロセッサに入力される毎に、当該入力されるアドレス信号に含まれるアドレスを有するプロセッサエレメントのカウンタ手段が、上記カウント値を1だけインクリメントするステップと、
上記制御手段が、所定のタイミングで、上記各プロセッサエレメントのカウンタ手段に格納されたカウント値を、当該カウンタ手段に対応する記憶手段に格納された度数に累積加算するように上記各累積加算手段を制御する並列加算処理を実行するとともに、上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をリセットするように制御するステップとを含むことを特徴とするSIMD型マイクロプロセッサの処理方法。 - 上記SIMD型マイクロプロセッサは、上記複数のプロセッサエレメントのカウンタ手段のうちの少なくとも1つのカウンタ手段に格納されたカウント値が、上記第2のビット幅に対応する所定のしきい値カウント値になったとき、割込要求信号を発生して上記制御手段に出力する割込要求信号発生手段をさらに備え、
上記処理方法は、上記制御手段が、上記割込要求信号に応答して、上記並列加算処理を実行するとともに上記各プロセッサエレメンのカウンタ手段に格納されたカウント値をゼロにリセットするように制御するステップをさらに含むことを特徴とする請求項7記載のSIMD型マイクロプロセッサの処理方法。 - 上記各プロセッサエレメントのカウンタ手段は、縦続接続された複数のレジスタを備えたシフトレジスタであることを特徴とする請求項7又は8記載のSIMD型マイクロプロセッサの処理方法。
- 上記各プロセッサエレメントは、上記シフトレジスタに格納されたカウント値をバイナリデータに符号化して、当該シフトレジスタに対応する上記累積加算手段に出力するエンコーダをさらに備え、
上記処理方法は、上記各プロセッサエレメントの累積加算手段が、上記カウント値に代えて、当該累積加算手段に対応する上記エンコーダから入力されるバイナリデータを、上記記憶手段に格納された度数に累積加算するステップをさらに含むことを特徴とする請求項9記載のSIMD型マイクロプロセッサの処理方法。 - 上記各プロセッサエレメントの累積加算手段は、上記累積加算のための算術論理演算回路を備えたことを特徴とする請求項7乃至10のうちのいずれか1つに記載のSIMD型マイクロプロセッサの処理方法。
- 上記画素値は、階調値であることを特徴とする請求項7乃至11のうちのいずれか1つに記載のSIMD型マイクロプロセッサの処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010203381A JP2012059131A (ja) | 2010-09-10 | 2010-09-10 | Simd型マイクロプロセッサ及びその処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010203381A JP2012059131A (ja) | 2010-09-10 | 2010-09-10 | Simd型マイクロプロセッサ及びその処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2012059131A true JP2012059131A (ja) | 2012-03-22 |
Family
ID=46056127
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010203381A Pending JP2012059131A (ja) | 2010-09-10 | 2010-09-10 | Simd型マイクロプロセッサ及びその処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2012059131A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016136197A1 (ja) * | 2015-02-25 | 2016-09-01 | 日本電気株式会社 | データ処理装置、データ処理方法及び記録媒体 |
US20180341589A1 (en) * | 2017-05-23 | 2018-11-29 | International Business Machines Corporation | Reducing cache thrashing for counts in hot cache lines |
-
2010
- 2010-09-10 JP JP2010203381A patent/JP2012059131A/ja active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2016136197A1 (ja) * | 2015-02-25 | 2016-09-01 | 日本電気株式会社 | データ処理装置、データ処理方法及び記録媒体 |
US20180341589A1 (en) * | 2017-05-23 | 2018-11-29 | International Business Machines Corporation | Reducing cache thrashing for counts in hot cache lines |
US10552326B2 (en) * | 2017-05-23 | 2020-02-04 | International Business Machines Corporation | Reducing cache thrashing for counts in hot cache lines |
US10565114B2 (en) * | 2017-05-23 | 2020-02-18 | International Business Machines Corporation | Reducing cache thrashing for counts in hot cache lines |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4885422B2 (ja) | ガロア拡大体線形変換器 | |
JP5994679B2 (ja) | 処理装置、及び処理装置の制御方法 | |
JP2009015556A (ja) | Simd型マイクロプロセッサ | |
JP2009271724A (ja) | ハードウェアエンジン制御装置 | |
JPWO2017163441A1 (ja) | 画像処理装置、画像処理方法、及び画像処理プログラム | |
US7543014B2 (en) | Saturated arithmetic in a processing unit | |
WO2019053915A1 (ja) | 画像処理装置、画像処理方法、及び画像処理プログラム | |
JP2012059131A (ja) | Simd型マイクロプロセッサ及びその処理方法 | |
JP2010287110A (ja) | 情報処理装置、情報処理方法、プログラム及び記録媒体 | |
JP6038292B2 (ja) | データ転送装置及びデータ転送方法 | |
JP2007228188A (ja) | リコンフィグラブル回路 | |
TW201818264A (zh) | 緩衝裝置及卷積運算裝置與方法 | |
JP2001157049A5 (ja) | ||
JP4408113B2 (ja) | 信号処理方法 | |
JP5630798B1 (ja) | プロセッサーおよび方法 | |
US8024550B2 (en) | SIMD processor with each processing element receiving buffered control signal from clocked register positioned in the middle of the group | |
US6405301B1 (en) | Parallel data processing | |
JP4516495B2 (ja) | Simd型マイクロプロセッサにおけるデータ処理方法 | |
JP2012194774A (ja) | Simd型マイクロプロセッサ | |
JP5441185B2 (ja) | 割り込みコントローラ及び時分割割り込み発生方法 | |
JP2013161325A (ja) | Simd型マイクロプロセッサ、プロセッサシステムおよびsimd型マイクロプロセッサのデータ処理方法 | |
JP2005267362A (ja) | Simdプロセッサを用いた画像処理方法及び画像処理装置 | |
JP2006072961A (ja) | 演算処理装置のメモリ回路 | |
JP2009104521A (ja) | 並列処理装置 | |
JP6204313B2 (ja) | 電子機器 |