説明

データ処理装置

【課題】少ない回路規模を保ったまま複数の2進データの中から最大値又は最小値を短いサイクルで選出できるデータ処理装置を構築する。
【解決手段】2進データと同数以上の条件フラグと、各2進データをデコードする2進データと同数以上のデコーダと、2進データと同数以上の比較器と、各デコーダからのデコード結果がWired−ORされ出力される1ビット毎のバスを有し、各条件フラグとデコーダと比較器とは、対象2進データに対して関連付けされており、上記デコーダによるデコード結果は、関連する条件フラグの値が真のときのみ1ビット毎にWired−ORされてバスに出力され、各比較器は、関連するデコーダのデコード結果の値とWired−ORされたバスの値とを比較し、Wired−ORされたバス値よりもデコード結果の方が小さい場合に、関連する条件フラグの値を真にリセットする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ処理装置、特にSIMD型マイクロプロセッサに関する。
【背景技術】
【0002】
画像処理においては、所定範囲の全画素データの最大値又は最小値を特徴量として画像処理の計算式を設定・変更するというような処理が必要となることがある。多データを一度に演算するという特徴が画像処理に向いているとされるSIMD型マイクロプロセッサにおいて、各プロセッサエレメント(以下、PEという。)に格納される画素データのうちから、最大値又は最小値を選出することを実現する技術が、従来幾つか開示されている。
【0003】
特許文献1や特許文献2で開示されている技術は、基本的に逐次処理に関するものである。その技術は、全てのPEから対象画素データを読み出し、逐次大小比較を行った結果大きい方を残す、又は小さい方を残すことにより、全対象画素データの最大値又は最小値を求めるというものである。この技術には、検出までに要する時間が、対象画素の数が大きくなるに従い大きくなるという特徴があり、PE数の多いプロセッサには適切な技術ではないといえる。
【0004】
特許文献3で開示される技術も基本的に逐次処理に関する。特許文献1や特許文献2で開示されている技術とは異なり、各PEの持つデータを順次、全PEに供給し、比較結果を収集することで最大値あるいは最小値を求めるという技術であるが、特許文献1や特許文献2で開示されている技術と同様の長所・短所を持つといえる。
【0005】
特許文献4では、PE間にツリー状に演算器を設け、各ツリーにパイプラインを切ることによって演算器の負荷を少なく保持したまま、最大値を検出したり総和を演算したりすることを高速に行う回路構成について開示している。この構成では、PE数が増加すると演算器の数が増加し、回路規模の増大につながること、及びツリーの最後には全PE長の半分の距離を跨いだ演算が必要になることから、動作速度の面で懸念がある。特許文献5でも基本的に同様の技術を開示する。
【0006】
特許文献6と特許文献7で開示される技術は、上位ビットから順に1ビットずつ比較を行い、フラグを用いることで最大値又は最小値の候補から外れたものを除外していくというものである。このような技術では、対象データのビット幅の数だけ処理を繰り返すと最大値又は最小値を得ることができるが、対象データ数が多いと1回の処理にかかる時間が増大するという問題が生じる。
【0007】
特許文献8は、比較対象データをまずデコードしておき、そのデコード結果の論理和を求めることで最大値、最小値検出を行う回路構成を開示する。この回路構成では、比較対象データのビット幅が広い場合、対象データ数が多い場合についての問題点が解決されていない。
【特許文献1】特開2001−265592号公報
【特許文献2】特開平08−030577号公報
【特許文献3】特許第2969115号
【特許文献4】特公平8−14816号公報
【特許文献5】特開2002−207706号公報
【特許文献6】特開平05−100824号公報
【特許文献7】特開平06−139048号公報
【特許文献8】特開平11−85467号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
本発明は、前述の従来技術の問題点を考慮して、少ない回路規模を保ったまま最大値又は最小値を短いサイクルで選出することのできるデータ処理装置、特にマイクロプロセッサを構築することを目的とする。つまり、マイクロプロセッサにおいて、2進データの数が多い場合にも短いサイクルで最大値又は最小値を求めることができること、2進データのビット幅が広い場合でも回路規模を増やすことなく最大値又は最小値を求めることができること、及び、特にSIMD型などの並列プロセッサが処理しているデータの中から最大値又は最小値を回路規模を増やさずに求めることができることを目的とする。
【課題を解決するための手段】
【0009】
本発明は、上記の目的を達成するために為されたものである。本発明に係る請求項1に記載のデータ処理装置は、複数の2進データの中から最大値又は最小値を求めるデータ処理装置であって、
2進データと同数以上の条件フラグと、
各2進データをデコードするための2進データと同数以上のデコーダと、
2進データと同数以上の比較器と、
各デコーダからのデコード結果がWired−ORされて出力される1ビット毎のバスを有し、
各条件フラグと各デコーダと各比較器は、対象の2進データに対して関連付けされており、
上記デコーダによるデコード結果は、関連する条件フラグの値が真であれば1ビット毎にWired−ORされてバスに出力され、関連する条件フラグが偽であればバスに出力されず、
各比較器は、関連するデコーダのデコード結果の値とWired−ORされたバスの値とを比較し、Wired−ORされたバス値よりもデコード結果の方が小さい場合には、関連する条件フラグの値をリセットすることを特徴とする。
【0010】
本発明に係る請求項2に記載のデータ処理装置は、
更に、関連する条件フラグ、デコーダ、及び比較器に対して、ビットシフト回路が関連付けされて設置され、
各ビットシフト回路は各2進データを入力して所定幅だけビットシフトして関連するデコーダに出力し、
複数の2進データのビット幅の中の特定部分のビット幅のデータに関して最大値又は最小値を算出することを特徴とする請求項1に記載のデータ処理装置である。
【0011】
本発明に係る請求項3に記載のデータ処理装置は、
各デコーダが、
デコード結果として、LSBビットから、入力データをデコードして“1”となったビットまでを、“1”として出力し、それ以外のビットを“0”として出力する、
又は、その負論理を出力するように構成されていることを特徴とする請求項1に記載のデータ処理装置である。
【0012】
本発明に係る請求項4に記載のデータ処理装置は、
請求項1乃至3のうちのいずれか一に記載のデータ処理装置であって、
比較器が、複数の2進データを演算処理するための算術演算装置(ALU)で構成されていることを特徴とする。
【発明の効果】
【0013】
本発明を利用することにより、データ処理装置において、対象となる2進データの数が多い場合にも、短いサイクルでそれら多数の2進データの最大値又は最小値を求めることが可能になる。
【発明を実施するための最良の形態】
【0014】
以下、図面を参照して本発明に係る好適な実施形態を説明する。
【0015】
[第1の実施形態]
【0016】
図10は、本発明に係るマイクロプロセッサ2の概略の構成図である。図10に示されるマイクロプロセッサ2は、プロセッサエレメント(4−(1)、4−(2)、・・・4−(n))を複数(図ではn個)備えており、各プロセッサエレメント4は図示しないレジスタ及び演算部を備える。各プロセッサエレメント4は適宜接続されており、図示しないグローバルプロセッサなどにより動作を制御される。このような並列プロセッサは通常「SIMD型マイクロプロセッサ」と称されるものである。
【0017】
図1は、本発明の第1の実施形態に係るマイクロプロセッサ2の一部拡大図である。特に、3つのプロセッサエレメントの夫々の一部分を示している。ここでは、比較対象となる2進データが4ビットであり、比較対象となる2進データは対象データ1〜対象データ3までの3つである場合について、図示している。対象データ1〜対象データ3は、例えば夫々レジスタ(図示せず。)に記憶されており、それらがデコーダ(デコーダ1、デコーダ2、デコーダ3)に入力する。
【0018】
デコーダ(デコーダ1、デコーダ2、デコーダ3)には、上記2進データと、夫々の条件フラグの値とが入力される。各デコーダの構成は、図2に示しているようなものである。各デコーダは2進データをデコードした結果を、3ステートバッファを介して、図1下部に示すバスに出力する。図2に示されるように、3ステートバッファの出力イネーブル信号には条件フラグが接続される。つまり、条件フラグが真の状態であるプロセッサエレメントでは、3ステートバッファを介してデコード結果がバスに出力される。
【0019】
なお、3ステートバッファに代わりに、ダイナミックバス構成若しくはオープンドレイン構成を採用しても同様の作用を行うことができることは明白である。
【0020】
比較器(比較器1、比較器2、比較器3)には、各デコーダからの出力とバス上のデータとが入力され、比較器での比較結果が条件フラグのリセット端子に接続されている。
【0021】
図3は、本発明の第1の実施形態に係るマイクロプロセッサに含まれる比較器の構成図(図3(b))、及び、機能内容(図3(a))を示す。図3(a)は、図3(b)の比較器を構成する2種類の比較素子、即ちCMP1とCMP2の動作内容を示す記述である。
【0022】
図1、図2及び図3に示す構成を備えるマイクロプロセッサは、以下の工程のようにして、3つの対象データの中から最大値を求める。なお、対象データ1、対象データ2、及び、対象データ3は、例として、(1010b)、(0111b)、(1001b)であるとする。
【0023】
(工程1);全ての条件フラグを“1”にセットする。
【0024】
(工程2−1);デコーダの出力及びバス上のデータは、以下の表1のようになる。
【表1】

【0025】
(工程2−2);比較結果は以下の表2のようになる。
【表2】

【0026】
(工程2−3);結果として条件フラグ2と条件フラグ3はリセットされ、デコーダの出力およびバス上のデータは以下の表3のようになり、最大値が求まる。
【表3】

ここで、バス上のデータ“( 0000010000000000b )”をエンコードして“1010b”が得られる。
【0027】
以上、3つのデータにおける最大値を求めることについて説明をしたが、これより多数のデータにおける最大値を求める場合も同様にすればよい。また、2進データの反転をデコーダに入力し、バス上のデータのビット順をスワップ(交換)してエンコードすることで、最小値を求めることが可能である。
【0028】
[第2の実施形態]
図4は、本発明の第2の実施形態に係るマイクロプロセッサ2の一部拡大図である。特に、3つのプロセッサエレメントの夫々の一部分を示している。本発明の第2の実施形態に係るマイクロプロセッサは、本発明の第1の実施形態に係るマイクロプロセッサと略同様のものであるので、両者の差異を中心に説明する。
【0029】
ここでは、比較対象となる2進データが16ビットであり、比較対象となる2進データは対象データ1〜対象データ3までの3つである場合について図示している。対象データ1〜対象データ3は、例えば夫々レジスタ(図示せず。)に記憶されており、それらがバレルシフタに入力され、バレルシフタで任意のビット数だけシフトされその結果の4ビットがデコーダ(デコータ1、デコーダ2、デコーダ3)に入力される。
【0030】
例えば、16ビットデータが右シフトされ、シフト結果の下位4ビットがデコーダに入力される。かかる構成によれば、以下のようにして3つの16ビットデータの中から最大値が求められ得る。なお、対象データ1、対象データ2、及び、対象データ3は、例として、(32FFh)、(3750h)、(289Ch)であるとする。
【0031】
(工程1);全ての条件フラグを“1”にセットする。
【0032】
(工程2-1);バレルシフタで右12ビットシフトした結果の下位4ビットをデコーダに出力する。デコーダの出力およびバス上のデータは以下の表4のようになる。
【表4】

【0033】
(工程2−2);各比較器における比較結果は以下の表5のようになる。
【表5】

【0034】
結果として条件フラグ3はリセットされ、デコーダの出力およびバス上のデータは以下の表6のようになり、ビット15〜12における最大値が求まる。
【0035】
【表6】

ここで、バス上のデータ“( 0000000000001000b )”をエンコードして“0011b (3h)”が得られる。
【0036】
(工程3-1);バレルシフタで右8ビットシフトした結果の下位4ビットをデコーダに出力する。デコーダの出力およびバス上のデータは以下の表7のようになる。
【表7】

【0037】
(工程3−2);各比較器における比較結果は以下の表8のようになる。
【表8】

【0038】
結果として条件フラグ1と条件フラグ3はリセットされ、デコーダの出力およびバス上のデータは以下の表9のようになり、ビット11〜8における最大値が求まる。
【0039】
【表9】

ここで、バス上のデータ“( 0000000010000000b )”をエンコードして“0111b (7h)”が得られる。
【0040】
上記例では、ここで最大値が求まったことになる。この時点で未だ求まらなければ、前述と同様に、バレルシフタで右4ビットシフトした結果の下位4ビットをデコーダに出力することで、ビット7〜4における最大値を求めて、全体の最大値を求める。その時点でも未だ求まらなければ、更にバレルシフタで右0ビットシフトした(即ち、シフトしない)結果の下位4ビットをデコーダに出力することで、ビット3〜0における最大値を求めて、全体の最大値を求める。つまり、最後までリセットされない条件フラグを含むプロセッサエレメントにおける対象データが、最大値である。
【0041】
以上、3つのデータにおける最大値を求めることについて説明をしたが、これより多数のデータにおける最大値を求める場合も同様にすればよい。
【0042】
[第3の実施形態]
図5は、本発明の第3の実施形態に係るマイクロプロセッサにおけるデコーダの回路構成図である。
【0043】
図1に示す第1の実施形態に係るマイクロプロセッサ、および図4に示す第2の実施形態に係るマイクロプロセッサにおいて、デコーダを、図2に示すものから図5に示すものに入れ替えると、比較器の構成を通常の比較器又は減算器にすることが可能である。
【0044】
対象データ1(1010b)、対象データ2(0111b)、対象データ3(1001b)の場合で説明すると、デコーダの出力およびバス上のデータは以下の表10のようになる。
【0045】
【表10】

【0046】
このように、バス上のデータは最大数を持つデコーダ1と全く同一となることがわかる。従って、比較器として、図6で示すような単純なコンパレータ、若しくは、(図示しない)減算器を用いることが可能となる。
【0047】
[第4の実施形態]
図7は、本発明の第4の実施形態に係るマイクロプロセッサ2の一部拡大図である。特に、3つのプロセッサエレメントの夫々の一部分を示している。本発明の第4の実施形態に係るマイクロプロセッサは、本発明の第3の実施形態に係るマイクロプロセッサと略同様のものであるので、両者の差異を中心に説明する。
【0048】
図7に示す第4の第4の実施形態に係るマイクロプロセッサでは、図1に示す第1の実施形態に係るマイクロプロセッサ、および図4に示す第2の実施形態に係るマイクロプロセッサにおいて、デコーダを、図2に示すものから図5に示すものに入れ替え、更に、比較器(比較器1、比較器2、比較器3)を、ALU(Arithmetic Logical Unit;数値演算ユニット)(ALU1、ALU2、ALU3)に入れ替える。更に、(図示していないが、)ALU(ALU1、ALU2、ALU3)には、デコーダの出力とバスのデータのみならず、(図示しない)アキュムレータのデータと(図示しない)レジスタからの2進データとが入力されるように構成されている。
【0049】
かかる構成は、通常の並列マイクロプロセッサに対して、デコーダ、条件フラグ、及びデコード結果のWired−OR結果を出力するバスを追加設定すれば、実現される。このような追加設定によって、多数のデータにおける最大値又は最小値を求めることができるようになる。
【0050】
更に、図8は、本発明の第4の実施形態に係るマイクロプロセッサ2の別例の一部拡大図である。この別例では、デコーダの出力がバスに出力されるのではなく、一旦アキュムレータ12に格納され、アキュムレータ12の出力が条件フラグの値に拠ってバスに供給される。アキュムレータ12は、多数のデータにおける最大値又は最小値を求めるとき以外は、ALUでの演算結果を格納する。即ち、通常のアキュムレータとして機能する。
【0051】
この構成は、多数のデータにおける最大値又は最小値を求めるときに必要なバスと、その他の通常の演算で利用されるバスとを共通化するものである。この構成により、回路全体をコンパクトにできるといえる。
【0052】
[第5の実施形態]
図9は、本発明の第5の実施形態に係るマイクロプロセッサ2の一部拡大図である。本発明の第5の実施形態に係るマイクロプロセッサは、図8に示す本発明の第4の実施形態に係るマイクロプロセッサの別例と略同様のものである。
【0053】
図9に示す第5の実施形態に係るマイクロプロセッサでは、アキュムレータよりバスに出力された値が一度、外部レジスタ20に格納され、そのレジスタ20の値が別のバスを介してALU(ALU1、ALU2、ALU3)に入力される。
【0054】
かかる構成によれば、Wired−ORされた結果の値が一度、レジスタ20に格納されるため、次のサイクルでWired−OR結果の値と各アキュムレータの値との比較を行うことができる。このように構成することによって、プロセッサエレメントの数が増加してもマイクロプロセッサ全体において高速動作を行うことが可能となる。
【図面の簡単な説明】
【0055】
【図1】本発明の第1の実施形態に係るマイクロプロセッサの一部拡大図である。
【図2】本発明の第1の実施形態に係るマイクロプロセッサで利用されるデコーダの概略の構成図である。
【図3】本発明の第1の実施形態に係るマイクロプロセッサに含まれる比較器の構成図(図3(b))、及び、機能内容(図3(a))である。
【図4】本発明の第2の実施形態に係るマイクロプロセッサの一部拡大図である。
【図5】本発明の第3の実施形態に係るマイクロプロセッサにおけるデコーダの回路構成図である。
【図6】本発明の第3の実施形態に係るマイクロプロセッサで利用されるコンパレータの概略の構成図である。
【図7】本発明の第4の実施形態に係るマイクロプロセッサの一部拡大図である。
【図8】本発明の第4の実施形態に係るマイクロプロセッサの別例の一部拡大図である。
【図9】本発明の第5の実施形態に係るマイクロプロセッサの一部拡大図である。
【図10】本発明に係るマイクロプロセッサの概略の構成図である。
【符号の説明】
【0056】
2・・・マイクロプロセッサ、4・・・プロセッサエレメント、10・・・バレルシフタ、12・・・アキュムレータ、20・・・外部レジスタ。

【特許請求の範囲】
【請求項1】
複数の2進データの中から最大値又は最小値を求めるデータ処理装置であって、
2進データと同数以上の条件フラグと、
各2進データをデコードするための2進データと同数以上のデコーダと、
2進データと同数以上の比較器と、
各デコーダからのデコード結果がWired−ORされて出力される1ビット毎のバスを有し、
各条件フラグと各デコーダと各比較器は、対象の2進データに対して関連付けされており、
上記デコーダによるデコード結果は、関連する条件フラグの値が真であれば1ビット毎にWired−ORされてバスに出力され、関連する条件フラグが偽であればバスに出力されず、
各比較器は、関連するデコーダのデコード結果の値とWired−ORされたバスの値とを比較し、Wired−ORされたバス値よりもデコード結果の方が小さい場合には、関連する条件フラグの値をリセットすることを特徴とするデータ処理装置。
【請求項2】
更に、関連する条件フラグ、デコーダ、及び比較器に対して、ビットシフト回路が関連付けされて設置され、
各ビットシフト回路は各2進データを入力して所定幅だけビットシフトして関連するデコーダに出力し、
複数の2進データのビット幅の中の特定部分のビット幅のデータに関して最大値又は最小値を算出することを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
各デコーダは、
デコード結果として、LSBビットから、入力データをデコードして“1”となったビットまでを、“1”として出力し、それ以外のビットを“0”として出力する、
又は、その負論理を出力するように構成されていることを特徴とする請求項1に記載のデータ処理装置。
【請求項4】
請求項1乃至3のうちのいずれか一に記載のデータ処理装置であって、
比較器が、複数の2進データを演算処理するための算術演算装置(ALU)で構成されていることを特徴とするデータ処理装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate


【公開番号】特開2008−217065(P2008−217065A)
【公開日】平成20年9月18日(2008.9.18)
【国際特許分類】
【出願番号】特願2007−49413(P2007−49413)
【出願日】平成19年2月28日(2007.2.28)
【出願人】(000006747)株式会社リコー (37,907)