(57)【要約】【課題】データ処理装置に効率的に決定木を実装すること。【解決手段】データ処置装置は、比較器、結合演算部及びデータコントローラを有する。各比較器は、複数の入力データベクトルを受け取って比較結果ベクトルを出力する。結合演算部は、比較器から出力された比較結果ベクトルを結合してバイナリ出力ベクトルを出力する。データコントローラは、バイナリ出力ベクトルに基づいてデータ処理を制御する。【選択図】図３
2020112840.tif 000002
【特許請求の範囲】
【請求項１】
それぞれが複数の入力データベクトルを受け取って比較結果ベクトルを出力する、複数の比較器と、
比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力する結合演算部と、
前記バイナリ出力ベクトルに基づいてデータ処理を制御するデータコントローラと、を備える、
データ処理装置。
【請求項２】
各比較器は、２つの入力ベクトルを相互に比較し、
一方の入力ベクトルに含まれる値は、他方の入力ベクトルに含まれる対応する値と比較され、
各比較器の比較結果は、２つの値の比較結果を示す値を含む、
請求項１に記載のデータ処理装置。
【請求項３】
結合演算部は、前記比較結果ベクトルについて論理和演算を行い、
前記比較結果ベクトルの同じ位置の値が、比較結果が真であることを示している場合、前記バイナリ出力ベクトルの対応するビットは「１」となり、
前記比較結果ベクトルの同じ位置の値が、比較結果の少なくとも１つが偽であることを示している場合、前記バイナリ出力ベクトルの対応するビットは「０」となる、
請求項１に記載のデータ処理装置。
【請求項４】
前記データコントローラは、第１の入力データベクトル及び第２の入力データベクトルを受け取り、出力データベクトルを出力し、
前記バイナリ出力ベクトルのビットが「１」の場合、前記第１の入力データベクトルにおいて対応する位置の値が、前記出力データベクトルにおいて対応する位置に渡され、
前記バイナリ出力ベクトルのビットが「０」の場合、前記第２の入力データベクトルにおいて対応する位置の値が、前記出力データベクトルにおいて対応する位置に渡される、
請求項３に記載のデータ処理装置。
【請求項５】
前記データコントローラは、スカラー値である第１の入力データ及び第２の入力データベクトルを受け取り、出力データベクトルを出力し、
前記バイナリ出力ベクトルのビットが「１」の場合、前記第１の入力データのスカラー値が、前記出力データベクトルにおいて対応する位置に渡され、
前記バイナリ出力ベクトルのビットが「０」の場合、前記第２の入力データベクトルにおいて対応する位置の値が、前記出力データベクトルにおいて対応する位置に渡される、
請求項３に記載のデータ処理装置。
【請求項６】
前記比較結果ベクトルの同じ位置の値を連続的に格納し、かつ、同じサイクルに前記比較器から出力された、格納された前記値を連続的に出力するレジスタ部をさらに備える、
請求項２に記載のデータ処理装置。
【請求項７】
メモリ部と、
バスと、
請求項１に記載のデータ処理装置と、を備える、
データ処理システム。
【請求項８】
複数の入力データベクトルを受け取って比較結果ベクトルを出力し、
比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力し、
前記バイナリ出力ベクトルに基づいてデータ処理を制御する、
データ処理方法。
【請求項９】
複数の入力データベクトルを受け取って比較結果ベクトルを出力する処理と、
比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力する処理と、
前記バイナリ出力ベクトルに基づいてデータ処理を制御する処理と、をコンピュータに実行させる、
データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、データ処理システム、データ処理方法及びプログラムに関する。
【背景技術】
【０００２】
画像処理や動作認識などの多くの異なる技術分野において、決定木に基づいた画像及び動作の分類アルゴリズムが広く用いられている。決定木は、樹状のグラフ又は決定モデルとこれらの生じ得る結果を用いた決定支援ツールである。
【０００３】
画像分類（例えば、ＡＣＦ（aggregated channel features）アルゴリズム）は、決定木に基づいている。このアルゴリズムは、最先端のパフォーマンスを実現しつつ、特徴をより高いレベルで近似するものであり、これまでのHOG（histogram of gradient）アルゴリズムよりも高速である。
【０００４】
特許文献１では、生成されたマスクに基づいて、オペランド選択を伴う条件付き（conditional）ムーブ用の条件付きムーブマスクが生成される。生成されたマスクは、複数オペランドでのシングルＳＩＭＤ（Single Instruction/Multiple Data）スタイル演算の出力である。
【０００５】
特許文献２では、１つの比較条件での評価に基づいたＳＩＭＤスタイルでの機能を実行する、多数の条件付き指示からなるコードをどのように高速化するかが記載されている。この解決策としては、コンパイラによる分岐能力を付加することである。
【０００６】
特許文献３では、ＳＩＭＤスタイルにおいて、入力ベクトルの要素を出力ベクトルの要素にマッピングする方法が開示されている。このマッピングは、１ベクトルあたり１つが出力される１つの状態ビット比較を用いて制御される。
【０００７】
非特許文献１には、決定木に基づいたＡＣＦ（aggregated channel features）アルゴリズムが開示されている。本文献では、ＡＣＦアルゴリズムが、歩行者検出において最先端のパフォーマンスを実現していることを示している。
【０００８】
非特許文献２には、ＡＣＦアルゴリズムを用いることで、リアルタイムのマルチビュー顔検出が可能であることを示している。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】米国特許第７，４８０，７８７号明細書
【特許文献２】特開２００９−１２８９８９号公報
【特許文献３】米国特許公開第２０１３／０２１２３５５号明細書
【非特許文献】
【００１０】
【非特許文献１】R.Zabih and J.Woodfill, "Fast Feature Pyramids for Object Detection," in IEEE Transactions on Pattern Analysis and Machine Intelligence. 2014; 36(8):1532-1545.
【非特許文献２】B.Yang, J.Yan, Z. Lei, S.Z.Li, "Aggregate Channel Features for Multi-view Face Detection" in: 2014 IEEE International Joint Conference on Biometrics (IJCB), 2014, pp.1-8.
【発明の概要】
【発明が解決しようとする課題】
【００１１】
非特許文献は、ＡＣＦアルゴリズム自体の内部構成と、リアルタイム用途におけるアルゴリズムの使用方法を提供している。しかし、ＡＣＦハードウェア実装の詳細については、何も提供されていない。
【００１２】
特許文献１〜３では、ＳＩＭＤベクトルの各要素の制御パスにおいては、単一の演算出力が用いられている。非特許文献１及び２では、実装の詳細を提供することなく、決定木の概念が導入されている。問題点としては、決定木を実装するにあたり、１以上の決定について評価することである。特許文献１〜３に対する現在あり得べき解決方法では、多大なる時間を掛けて、単一の演算処理を順次行うことによってのみ処理することが可能である。（すなわち、３つの特徴ノードを有する）２階層の決定木に基づいた処理を考慮すると、この決定木のために単一の演算処理を順次実行するには、比較的多くのサイクルが必要である。
【００１３】
決定木演算はＡＣＦアルゴリズムの内部で行われる主処理であるので、到達可能な実行速度は、リアルタイム用途においては重要である。
【課題を解決するための手段】
【００１４】
一実施の形態にかかるデータ処理装置は、それぞれが複数の入力データベクトルを受け取って比較結果ベクトルを出力する、複数の比較器と、比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力する結合演算部と、前記バイナリ出力ベクトルに基づいてデータ処理を制御するデータコントローラと、を有するものである。
【００１５】
一実施の形態にかかるデータ処理システムは、メモリ部と、バスと、前記バスを介して前記メモリ部と通信するデータ処理装置と、を有し、前記データ処理装置は、それぞれが複数の入力データベクトルを受け取って比較結果ベクトルを出力する、複数の比較器と、比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力する結合演算部と、前記バイナリ出力ベクトルに基づいてデータ処理を制御するデータコントローラと、を有するものである。
【００１６】
一実施の形態にかかるデータ処理方法は、複数の入力データベクトルを受け取って比較結果ベクトルを出力し、比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力し、前記バイナリ出力ベクトルに基づいてデータ処理を制御するものである。
【００１７】
一実施の形態にかかるデータ処理プログラムは、複数の入力データベクトルを受け取って比較結果ベクトルを出力する処理と、比較器から出力された前記比較結果ベクトルを結合してバイナリ出力ベクトルを出力する処理と、前記バイナリ出力ベクトルに基づいてデータ処理を制御する処理と、をコンピュータに実行させるものである。
【発明の効果】
【００１８】
一実施の形態によれば、データ処理装置に効率的に決定木を実装することができる。
【図面の簡単な説明】
【００１９】
【図１】データ処理システム内の実施の形態１にかかるデータ処理装置の実装を模式的に示す図である。
【図２】実施の形態１にかかるデータ処理装置への決定木の適用を示す図である。
【図３】実施の形態１にかかるデータ処理装置の構成を模式的に示す図である。
【図４】実施の形態１にかかるデータ処理装置でのデータ処理を模式的に示す図である。
【図５】実施の形態２にかかるデータ処理装置の構成を模式的に示す図である。
【図６】実施の形態３にかかるデータ処理装置の構成を模式的に示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本発明の実施の形態について説明する。各図面においては、同一要素には同一の符号が付されており、必要に応じて重複説明は省略される。
【００２１】
実施の形態１
実施の形態１にかかるデータ処理装置について説明する。実施の形態１にかかるデータ処理装置１００は、決定木用の処理を行うものとして構成される。図１に、実施の形態１にかかるデータ処理装置１００のデータ処理システム１０００への実装を模式的に示す。
【００２２】
図１に示すように、データ処理システム１０００は、中央演算部（ＣＰＵ：central processing unit）１０１、メモリ１０２、プロセッサ１０３及びバス１０４を有する。データ処理システム１０００は、ＳＩＭＤ  （Single Instruction/Multiple Data）処理を実行可能なものとして構成される。
【００２３】
データ処理システム１０００のＣＰＵ１０１、メモリ１０２、プロセッサ１０３及び他のモジュール及び構成要素は、バス１０４より接続され、これらの装置は相互にデータ、パラメータ、プログラム、アルゴリズムなどをやり取りすることができる。ＣＰＵ１０１は、データ処理システム１０００での演算を制御するための様々な処理を行う。メモリ１０２は、データ、パラメータ、プログラム、アルゴリズムなどを格納し、データ処理システム１０００のＣＰＵ１０１、メモリ１０２、プロセッサ１０３及び他のモジュール及び構成要素からの要求に応じて、これらの装置へデータ、パラメータ、プログラム、アルゴリズムなどを提供することができる。
【００２４】
プロセッサ１０３は、データ処理装置１００を有する。例えば、プロセッサ１０３は論理演算部を有していてもよく、データ処理装置１００は論理演算部に含まれてもよい。  
【００２５】
本実施の形態では、データ処理装置１００ は、決定木に基づいて出力すべきデータを制御する。ここで、データ処理装置１００に適用される決定木について説明する。図２に、実施の形態１にかかるデータ処理装置１００への決定木の適用を示す。
【００２６】
初めに、単一の値である第１の入力データＹが、第１の閾値ＴＨ１と比較される。第１の入力データＹが第１の閾値ＴＨ１よりも小さい場合（Ｙ＜ＴＨ１）、第１の比較Ｃ１の比較結果は「真」（第１の比較Ｃ１からの出力Ｙ）となる。第１の入力データＹが第１の閾値ＴＨ１以上である場合（Ｙ≧ＴＨ１）、第１の比較Ｃ１の比較結果は「偽」（第１の比較Ｃ１からの出力Ｎ）となる。
【００２７】
第１の比較Ｃ１の比較結果が「真」の場合（すなわち、Ｙ＜ＴＨ１）には、単一の値である第２の入力データＵが第２の閾値ＴＨ２と比較される。第２の入力データＵが第２の閾値ＴＨ２よりも小さい場合（Ｕ＜ＴＨ２）、第２の比較Ｃ２の比較結果は「真」（第２の比較Ｃ２からの出力Ｙ）となり、「０ｘ１」が結果値Ｒとして出力される。なお、「０ｘ＊＊」は１６進数を表しており、「＊」は１〜９及びＡ〜Ｆのいずれかである。第２の入力データＵが第２の閾値ＴＨ２以上である場合（Ｕ≧ＴＨ２）、第２の比較Ｃ２の比較結果は「偽」（第２の比較Ｃ２からの出力Ｎ）となり、「０ｘ２」が結果値Ｒとして出力される。
【００２８】
第１の比較Ｃ１の比較結果が「偽」の場合（すなわち、Ｙ≧ＴＨ１）には、第２の入力データＵが第３の閾値ＴＨ３と比較される。第２の入力データＵが第３の閾値ＴＨ３よりも小さい場合（Ｕ＜ＴＨ３）、第３の比較Ｃ３の比較結果は「真」（第３の比較Ｃ３からの出力Ｙ）となり、「０ｘ３」が結果値Ｒとして出力される。第２の入力データＵが第３の閾値ＴＨ３以上である場合（Ｕ≧ＴＨ３）、第３の比較Ｃ３の比較結果は「偽」（第３の比較Ｃ３からの出力Ｎ）となり、「０ｘ４」が結果値Ｒとして出力される。
【００２９】
本実施の形態では、データ処理装置１００は、決定木での処理の結果に基づいて、データのムーブ演算を実行する。データ処理装置１００の構成及び動作について説明する。図３に、実施の形態１にかかるデータ処理装置１００の構成を模式的に示す。図４に、実施の形態１にかかるデータ処理装置１００のデータ処理を模式的に示す。
【００３０】
データ処理装置１００は、比較器１１、比較器１２、 結合演算部１及びデータコントローラ２を有する。
【００３１】
比較器１１は、入力データベクトルＹｉｎを、例えばメモリ部１０２から読み込む。入力データは、複数の値を含んでいる。この場合、入力データベクトルＹｉｎは、「＊」を１６進数とした場合に、２桁の１６進数「０ｘ＊＊」によって表される、４つの８ビット値Ｙ１〜Ｙ４を含むものとする。すなわち、Ｙｉｎ＝｛Ｙ１，Ｙ２，Ｙ３，Ｙ４｝である。例えば、Ｙ１＝０ｘ２０、Ｙ２＝０ｘＡ０、Ｙ３＝０ｘ６０及びＹ４＝０ｘＣ０である場合、Ｙｉｎ＝０ｘ２０Ａ０６０Ｃ０となる。
【００３２】
また、比較器１１は、閾値入力データベクトルＴ１を、例えばメモリ部１０２から読み込む。閾値入力データベクトルＴ１は、複数の値を含んでいる。この場合、閾値入力データベクトルＴ１についても、２桁の１６進数によって表される、４つの８ビット値Ｔ１１〜Ｔ１４を含むものとする。本実施の形態では、Ｔ１１〜Ｔ１４は同じ値である。すなわち、Ｔ１＝｛Ｔ１１，Ｔ１２，Ｔ１３，Ｔ１４｝であり、かつ、Ｔ１１＝Ｔ１２＝Ｔ１３＝Ｔ１４＝ＴＨ１である。例えば、ＴＨ１＝０ｘ８０である場合、Ｔ１＝０ｘ８０８０８０８０となる。
【００３３】
比較器１１は、入力データベクトルＹｉｎを閾値入力データベクトルＴ１と比較する。すなわち、値Ｙ１〜Ｙ４は、それぞれ閾値ＴＨ１と比較される。本実施の形態では、比較器１１は、各入力値（Ｙ１〜Ｙ４のそれぞれ）が閾値ＴＨ１よりも小さいかを判定する。上述したように、Ｙｉｎ＝０ｘ２０Ａ０６０Ｃ０かつＴ１＝０ｘ８０８０８０８０であるので、Ｙ１，Ｙ３＜ＴＨ１（「真」）であり、Ｙ２，Ｙ４≧ＴＨ１（「偽」）である。この場合、比較器１１は、比較結果ベクトルＲ１として０ｘ０００００００Ａを出力する。ここで、Ａは、２進数「１０１０」で表される。
【００３４】
比較器１２は、入力データベクトルＵｉｎを、例えばメモリ部１０２から読み込む。この場合、入力データベクトルＵｉｎについても、２桁の１６進数で表される、４つの８ビット値Ｕ１〜Ｕ４を含むものとする。すなわち、Ｕｉｎ＝｛Ｕ１，Ｕ２，Ｕ３，Ｕ４｝である。例えば、Ｕ１＝０ｘ１０、Ｕ２＝０ｘ３０、Ｕ３＝０ｘＥ０及びＵ４＝０ｘＦ０である場合、Ｕｉｎ＝０ｘ１０３０Ｅ０Ｆ０となる。
【００３５】
比較器１２は、閾値入力データベクトルＴ２を、例えばメモリ部１０２から読み込む。この場合、閾値入力データベクトルＴ２についても、２桁の１６進数によって表される、４つの８ビット値Ｔ２１〜Ｔ２４を含むものとする。本実施の形態では、Ｔ２１〜Ｔ２４は同じ値である。すなわち、Ｔ２＝｛Ｔ２１，Ｔ２２，Ｔ２３，Ｔ２４｝であり、かつ、Ｔ２１＝Ｔ２２＝Ｔ２３＝Ｔ２４＝ＴＨ２である。例えば、ＴＨ２＝０ｘＣ０である場合、Ｔ１＝０ｘＣ０Ｃ０Ｃ０Ｃ０となる。
【００３６】
比較器１２は、入力データベクトルＵｉｎを閾値入力データベクトルＴ２と比較する。すなわち、値Ｕ１〜Ｕ４は、それぞれ閾値ＴＨ２と比較される。本実施の形態では、比較器１２は、各入力値（Ｕ１〜Ｕ４のそれぞれ）が閾値ＴＨ２よりも小さいかを判定する。上述したように、Ｕｉｎ＝０ｘ１０３０Ｅ０Ｆ０かつＴ２＝０ｘＣ０Ｃ０Ｃ０Ｃ０であるので、Ｕ１，Ｕ１＜ＴＨ２（「真」）であり、Ｕ３，Ｕ４≧ＴＨ２（「偽」）である。この場合、比較器１２は、比較結果ベクトルＲ２として０ｘ０００００００Ｃを出力する。ここで、Ｃは、２進数「１１００」で表される。
【００３７】
結合演算部１は、比較結果ベクトルＲ１及びＲ２に対して論理和演算（ＡＮＤ）を行い、得られたデータをバイナリ出力ベクトルＢＩＮとして出力する。この場合、結合演算部１は、Ｒ１＝１０１０及びＲ２＝１１００に対して論理和演算（ＡＮＤ）を行い、バイナリ出力ベクトルＢＩＮ＝１０００を出力する。
【００３８】
データコントローラ２は、バイナリ出力ベクトルＢＩＮに応じて、入力データベクトルＤＡ及びＤＢを用いることで、出力データベクトルＤＣを制御する。入力データベクトルＤＡ、入力データベクトルＤＢ及び出力データベクトルＤＣは、入力データベクトルＹｉｎ及びＵｉｎ、閾値入力データベクトルＴ１及びＴ２と同様に、２桁の１６進数で表される８ビット値である。すなわち、入力データベクトルＤＡ＝｛ＤＡ１，ＤＡ２，ＤＡ３，ＤＡ４｝、入力データベクトルＤＢ＝｛ＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４｝、出力データベクトルＤＣ＝｛ＤＣ１，ＤＣ２，ＤＣ３，ＤＣ４｝である。但し、ＤＡ１〜ＤＡ４、ＤＢ１〜ＤＢ４及びＤＣ１〜ＤＣ４は２桁の１６進数である。
【００３９】
バイナリ出力ベクトルＢＩＮのビットが「１」である場合、入力データベクトルＤＡの対応する位置のビットの値が、出力データベクトルＤＣの対応する位置のビットへ転送される。一方、バイナリ出力ベクトルＢＩＮのビットが「０」である場合、入力データベクトルＤＢの対応する位置のビットの値が、出力データベクトルＤＣの対応する位置のビットへ転送される。
【００４０】
この場合、バイナリ出力ベクトルＢＩＮは「１０００」であるので、入力データベクトルＤＡの最初の位置「ＤＡ１」の値が出力データベクトルＤＣの最初の位置「ＤＣ１」へ転送され、入力データベクトルＤＢの２〜４番目の位置「ＤＡ２」、「ＤＡ３」及び「ＤＡ４」の値がそれぞれ出力データベクトルＤＣの２〜４番目の位置「ＤＣ２」、「ＤＣ３」及び「ＤＣ４」へ転送される。よって、データコントローラ２は、出力データＤＣ＝｛ＤＣ１，ＤＣ２，ＤＣ３，ＤＣ４｝＝｛ＤＡ１，ＤＢ２，ＤＢ３，ＤＢ４｝を出力する。
【００４１】
すなわち、バイナリ出力ベクトルＢＩＮのビット「１」は、出力データベクトルＤＣの対応する位置に転送される入力データベクトルＤＢの値を、入力データベクトルＤＡの対応する位置の値に置き換えるフラグとして機能する。バイナリ出力ベクトルＢＩＮがビット「１」を１つも含まない場合（すなわち、ＢＩＮ＝００００）、入力データベクトルＤＢの値（ＤＢ１〜ＤＢ４）の全てが何ら変化することなく出力データベクトルＤＣへ転送される（すなわち、ＤＣ＝｛ＤＣ１，ＤＣ２，ＤＣ３，ＤＣ４｝＝｛ＤＢ１，ＤＢ２，ＤＢ３，ＤＢ４｝）ことは、言うまでもない。
【００４２】
また、入力データベクトルＤＡはベクトルであるものとしたが、入力データＤＡはスカラー値であってもよい。この場合、バイナリ出力ベクトルＢＩＮがビット「１」であるときには、スカラー値ＤＡ０が出力データベクトルＤＣの対応する位置に転送される。すなわち、バイナリ出力ベクトルＢＩＮが例えば「１０１０」である場合、出力データベクトルＤＣは｛ＤＡ、ＤＢ２、ＤＡ、ＤＢ４｝であってもよい。
【００４３】
本構成では、出力データベクトルＤＣを、入力データベクトルＤＢに戻してもよい。換言すれば、入力データベクトルＤＢは、前のサイクルで生成された出力データベクトルＤＣによって、連続的に更新されてもよい。
【００４４】
データ処理装置１００は、１サイクルで、各値（すなわち、値のセット（Ｙｋ，Ｕｋ，Ｔ１ｋ，Ｔ２ｋ）、但し１≦ｋ≦４のそれぞれ）について、上述のデータムーブ（条件付きムーブ）演算を行うことができる。これにより、データ処理装置１００は、４サイクルだけで、同時に読み込まれた４つの値のセットの全てに対して、データムーブ演算を行うことができる。
【００４５】
一方で、特許文献や非特許文献などに基づく一般的構成によれば、図２に示すように、２階層の決定木処理は、３つの比較ノード（Ｃ１〜Ｃ３）が必要である。この一般的構成では、Ｙの読み込み、Ｕの読み込み及び比較ノードＣ１〜Ｃ３のそれぞれについて少なくとも１つのサイクルを必要とする１つの指示が必要となるので、このような決定木では、決定分岐に応じて５つ又は６つのサイクルが必要となる。また、比較ノードＣ１〜Ｃ３において、比較及び分岐の指示に伴う停止サイクルが必要である場合、これらの比較ノードのそれぞれは、少なくとも２サイクルを必要とする。結果として、一般的な構成では、２階層の決定木処理を実行するのに、１つの値セット（Ｙ及びＵ）あたりで、８つ、９つ又はより多くのサイクルを要する。ここでは、一般的構成は、２階層の決定木処理について、１つの値セットあたりで１０サイクルを要するものとする。この場合、データ処理装置１００におけるように４つの値のセットに対して同じ演算を行おうとすると、データ処理装置１００が４サイクルだけしか要しないのに対し、一般的構成では１０×４＝４０サイクルが必要となる。
【００４６】
すなわち、それぞれ複数の値を含んでいる複数の入力データベクトル及び閾値入力データベクトルを少ないサイクルで処理することができるので、データムーブ演算の処理速度を向上させることができる。
【００４７】
なお、同時に読み込まれる各ベクトルの値の数は、４に限られない。同時にロードされる各ベクトルの値の数は、２、３、５又はより大きな値であってもよい。
【００４８】
本実施の形態では、結合演算部１は、論理和演算（ＡＮＤ）を実行するが、結合演算部１は、論理積演算（ＯＲ）、排他的論理和演算（ＸＯＲ）、否定論理積演算（ＮＡＮＤ）、否定論理和演算（ＮＯＲ）又は否定排他的論理和演算（ＸＮＯＲ）を実行してもよい。
【００４９】
本実施の形態では、データ処理装置１００の動作は図２に示す２つのマスクを提供する２階層の決定木に基づいているが、これは例示に過ぎない。データ処理装置１００の動作は、２以上のマスクを提供するより深い階層の決定木に基づいていてもよい。
【００５０】
本実施の形態では、入力データベクトル及び出力データベクトルは、４つの８ビット値を含んでいる。しかし、入力データベクトル及び出力データベクトルに含まれる値は、８ビット値に限定されるものではない。入力データベクトル及び出力データベクトルは、４つの１６ビット値を含んでもよい。入力データベクトル及び出力データベクトルに含まれる値のそれぞれは、４桁の１６進数「０ｘ＊＊＊＊」である。但し、「＊」は１６進数である。
【００５１】
入力データ及び閾値入力データは、８ビット値又は１６ビット値に限定されるものではない。２ビット、４ビット、３２ビットなど他の多ビット値によって入力データ、閾値入力データ及び出力データを構成してもよい。
【００５２】
実施の形態２
次に、実施の形態２にかかるデータ処理装置について説明する。図５に、実施の形態２にかかるデータ処理装置２００の構成を模式的に示す。データ処理装置２００は、実施の形態１にかかるデータ処理装置１００に、パイプラインレジスタ部３を追加した構成を有する。
【００５３】
パイプラインレジスタ部３は、比較器１１及び１２と結合演算部１との間に挿入される。パイプラインレジスタ部３は、コンパレータ１１及び１２から出力される比較結果を連続的かつ一時的に格納する。パイプラインレジスタ部３は、同じサイクルにて比較器１１及び１２からデータコントローラ２へ出力される比較結果Ｒ１及びＲ２を連続的に出力する。
【００５４】
よって、本構成によれば、データ処理装置３００はパイプライン処理によって高い許容動作周波数を実現できるので、データ処理装置３００は実施の形態１よりも高いスループットにて連続的なデータムーブ演算を実行できる。
【００５５】
実施の形態３
次に、実施の形態３にかかるデータ処理装置について説明する。図６に、実施の形態３にかかるデータ処理装置３００の構成を模式的に示す。データ処理装置３００は、実施の形態１にかかるデータ処理装置１００に、比較器１３及び１４を追加した構成を有する。
【００５６】
比較器１３は、入力データベクトルＸｉｎ及び閾値データベクトルＴ３を受け取って比較し、比較結果Ｒ３を出力する。入力データベクトルＸｉｎ及び閾値データベクトルＴ３は、それぞれ入力データベクトルＹｉｎ及び閾値データベクトルＴ１に対応する。
【００５７】
比較器１４は、入力データベクトルＺｉｎ及び閾値データベクトルＴ４を受け取って比較し、比較結果Ｒ４を出力する。入力データベクトルＺｉｎ及び閾値データベクトルＴ４は、それぞれ入力データベクトルＵｉｎ及び閾値データベクトルＴ２に対応する。
【００５８】
結合演算部１は、比較結果ベクトルＲ１〜Ｒ４に対して論理和演算（ＡＮＤ）を行う。これにより、比較結果ベクトルＲ１〜Ｒ４の中の同じ位置の値が「１」（真）となり、バイナリ出力ベクトルＢＩＮの対応するビットが「１」となる。
【００５９】
本構成によれば、入力ベクトルの４つのペアに対応可能である。この場合、データ処理装置３００は、４階層の決定木に基づくデータ処理に対応できる。
【００６０】
なお、入力ベクトルのペアの数は２又は４に限定されるものではなく、入力ベクトルのペアの数は、適宜、３つ、５つ又はより多くてもよい。
【００６１】
その他の実施の形態
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、上述の実施の形態では、データコントローラでの演算は、条件付ムーブ演算であるものとして説明した。しかし、これは例示に過ぎない。データコントローラは、加算（ＡＤＤ）又は減算（ＳＵＢ）を行う、条件付き加算・減算処理のような他の演算を実行してもよい。
【００６２】
上述の実施の形態では、比較器１１及び１２のそれぞれは、同じ閾値を用いて入力データベクトルの値を比較している。しかしながら、データ処理の目的に対応するために、閾値は適宜変更してもよい。また、コンパレータは、各入力値が閾値以下であるか、各入力値が閾値と等しいか、各入力値が閾値と等しくないか、各入力値が閾値よりも大きいか、又は、各入力値が閾値以上であるか、を判定してもよい。
【符号の説明】
【００６３】
１  結合演算部
２  データコントローラ
３  パイプラインレジスタ部
１１〜１４  比較器
１００、３００  データ処理装置
１０１  中央演算部（ＣＰＵ）
１０２  メモリ
１０３  プロセッサ
１０４  バス
１０００  データ処理システム
【図１】
2020112840.tif 000003
【図２】
2020112840.tif 000004
【図３】
2020112840.tif 000005
【図４】
2020112840.tif 000006
【図５】
2020112840.tif 000007
【図６】
2020112840.tif 000008
【外国語明細書】
[Title of Invention]
DATA PROCESSING APPARATUS, DATA PROCESSING SYSTEM, DATA PROCESSING METHOD AND PROGRAM
[Technical Field]
[0001]
The present invention relates to a data processing apparatus, a data processing system, a data processing method and a program.
[Background Art]
[0002]
In many different technical fields such as image processing, motion recognition, image and motion classification algorithms based on decision trees have been widely used.  A decision tree is a decision support tool that uses a tree-like graph or model of decisions and their possible consequences.
[0003]
In image classification (e.g., an aggregated channel features (ACF) algorithm) bases on the decision trees.  This algorithm approximates features on a higher level which makes it faster than traditional HOG (histogram of gradients) algorithms while reaching state-of-the-art performance.
[0004]
In PTL1, it is described that, based on a generated mask, a conditional move mask is generated for a conditional move with operand selection.  The generated mask is an output of a single SIMD (Single Instruction/Multiple Data) style operation of multiple operands.
[0005]
In PTL2, it is described how to speed up a code consisting of many conditional instructions, which are executing their function in the SIMD style based on the evaluation of one single compare condition.  The solution is to add branching ability by a compiler.
[0006]
In PTL3, it is described a method to map input vector elements to output vector elements in the SIMD style.  The mapping is controlled by use of a single condition bit comparison output per vector element.
[0007]
NPTL 1 discloses the aggregated channel features (ACF) algorithm which is based on the decision trees.  This shows that the ACF algorithm achieves state-of-the-art performance in pedestrian detection.
[0008]
NPTL2 shows that, by using the ACF algorithm, real-time multi-view face detection becomes possible.
[0009]
[Citation List]
[Patent Literature]
[0010]
PTL 1: USP 7,480,787
PTL 2: Japanese Unexamined Patent Application Publication No. 2009-128989
PTL 3: US Patent Publication No. 2013/0212355
[Non Patent Literature]
[0011]
NPTL 1: R. Zabih and J.Woodfill, "Fast Feature Pyramids for Object Detection," in IEEE Transactions on Pattern Analysis and Machine Intelligence. 2014; 36(8):1532-1545.
NPTL 2: B. Yang, J. Yan, Z. Lei, S.Z. Li, "Aggregate Channel Features for Multi-view Face Detection" in: 2014 IEEE International Joint Conference on Biometrics (IJCB), 2014, pp. 1-8.
[Summary of Invention]
[Technical Problem]
[0012]
NPTLs give inside to the ACF algorithm itself and the usage of this algorithm inside a real-time application.  However, details of ACF hardware implementation have not given.
[0013]
In PTL1, PTL2 and PTL3, on control path for each element of the SIMD vector, a single operation output is utilized.  In NPTL1 and NPTL2, the concept of the decision trees is introduced without giving implementation details.  The problem is that for an implementation of decision trees more than one decision has to be evaluated.  With the current available solutions for PTL1, PTL2 and PTL3, only sequential single operations can be processed which takes much time.  When considering processing based on a decision tree having depth of two levels (i.e. having tree features nodes), relatively many cycles to execute the sequential single operations for this decision tree are needed.
[0014]
Because the decision tree operation is the main operation performed inside the ACF algorithm, the reachable execution speed is very important for real-time applications.
[Solution to Problem]
[0015]
An aspect of any one of embodiments is a data processing apparatus including: a plurality of comparators, each comparator being configured to receive a plurality of input data vectors to output a comparison result vector; a combining operation unit configured to combine the comparison result vectors output from the comparators to output a binary output vector; and a data controller configured to control data processing based on the binary output vector.
[0016]
An aspect of any one of embodiments is a data processing system including; a memory unit; a bus; a data processing apparatus configured to communicate with the memory unit through the bus, in which the data processing apparatus including: a plurality of comparators, each comparator being configured to receive a plurality of input data vectors from the memory unit to output a comparison result vector; a combining operation unit configured to combine the comparison result vectors output from the comparators to output a binary output vector; and a data controller configured to control data processing based on the binary output vector.
[0017]
An aspect of any one of embodiments is a data processing method comprising: receiving and comparing a plurality of input data vectors to output a comparison result vector; combining the comparison result vectors output from the comparators to output a binary output vector; and controlling data processing based on the binary output vector.
[0018]
An aspect of any one of embodiments is a data processing program, the data processing program causing a computer to execute steps of: receiving and comparing a plurality of input data vectors to output a comparison result vector; combining the comparison result vectors output from the comparators to output a binary output vector; and controlling data processing based on the binary output vector.
[Advantageous Effects of Invention]
[0019]
According to an aspect of any one of embodiments, it is possible to implement efficiently a decision tree in a data processing apparatus.
[Brief Description of Drawings]
[0020]
[Fig. 1] 
Fig. 1 schematically illustrates implementation of a data processing apparatus according to a first embodiment in a data processing system;
[Fig. 2] 
Fig. 2 illustrates a decision tree applied to the data processing apparatus according to the first embodiment; 
[Fig. 3]
Fig. 3 schematically illustrates a configuration of the data processing apparatus according to the first embodiment;
[Fig. 4] 
Fig. 4 schematically illustrates data processing in the data processing apparatus according to the first embodiment; and 
[Fig. 5] 
Fig. 5 schematically illustrates a configuration of a data processing apparatus according to a second embodiment. 
[Fig. 6]
Fig. 6 schematically illustrates a configuration of a data processing apparatus according to the third embodiment.
[Description of Embodiments]
[0021]
Hereinafter, embodiments shall be explained with reference to the drawings.  The same components are denoted by the same reference numerals throughout the drawings, and repeated explanations shall be omitted as necessary.
[0022]
First Embodiment
A data processing apparatus according to a first embodiment will be described.  The data processing apparatus 100 according to the first embodiment is configured to perform operations for a decision tree.  Fig. 1 schematically illustrates implementation of the data processing apparatus 100 according to the first embodiment in a data processing system 1000. 
[0023]
As illustrated in Fig. 1, the data processing system 1000 includes a central processing unit (CPU) 101, a memory 102, a processor 103, and a bus 104.  The data processing system 1000 is configured to be capable of performing SIMD (Single Instruction/Multiple Data) processing.  
[0024]
The CPU 101, the memory 102, the processor 103, and other modules and elements in the data processing system 1000 are connected by the bus 104 to make those devices communicate data, parameters, programs, algorithms, or the like therebetween.  The CPU 101 performs various processing to control operations in the data processing system 1000.  The memory 102 can store data, parameters, programs, algorithms, or the like, and provides those to the CPU 101, the processor 103, and the other modules and elements in the data processing system 1000 according to requests from those devices.  
[0025]
The processor 103 includes the data processing apparatus 100.  For example, the processor 103 may include an arithmetic logic unit, and the data processing apparatus 100 may be included in the arithmetic logic unit.
[0026]
In the present embodiment, the data processing apparatus 100 control data to be output based on a decision tree.  Here, the decision tree applied to the data processing apparatus 100 will be described.  Fig. 2 illustrates the decision tree applied to the data processing apparatus 100 according to the first embodiment.
[0027]
First, first input data Y, which is a single value, is compared with a first threshold value TH1.  When the first input data Y is smaller than the first threshold value TH1 (Y<TH1), a comparison result of a first comparison C1 is "true" (an output "Y" from the first comparison C1).  When the first input data Y is equal to or larger than the first threshold value TH1 (Y>=TH1 or ), the comparison result of the first comparison C1 is "false" (an output "N" from the first comparison C1).
[0028]
When the comparison result of the first comparison C1 is "true" (i.e. Y<TH1), second input data U, which is a single value, is compared with a second threshold value TH2.  When the second input data U is smaller than the second threshold value TH2 (U<TH2), a comparison result of a second comparison C2 is "true" (an output "Y" from the second comparison C2) and "0x1" is output as a resulting value R.  Note that a value "0x**" represents a hexadecimal number, where "*" is any one of 1 to 9 or A to F.  When the second input data U is equal to or larger than the second threshold value TH2 (Y>=TH2), the comparison result of the second comparison C2 is "false" (an output "N" from the second comparison C2) and "0x2" is output as the resulting value R.
[0029]
When the comparison result of the first comparison C1 is "false" (i.e. Y>=TH1), the second input data U is compared with a third threshold value TH3.  When the second input data U is smaller than the third threshold value TH3 (U<TH3), a comparison result of a third comparison C3 is "true" (an output "Y" from the third comparison C3) and "0x3" is output as the resulting value R.  When the second input data U is equal to or larger than the third threshold value TH3 (Y>=TH3), the comparison result of the third comparison C3 is "false" (an output "N" from the third comparison C3) and "0x4" is output as the resulting value R.
[0030]
In the present embodiment, the data processing apparatus 100 executes data moving operation based on the result of the decision tree processing.  A configuration and an operation of the data processing apparatus 100 will be described.  Fig. 3 schematically illustrates a configuration of the data processing apparatus 100 according to the first embodiment.  Fig. 4 schematically illustrates data processing in the data processing apparatus 100 according to the first embodiment.
[0031]
The data processing apparatus 100 includes a comparator 11, a comparator 12, a combining operation unit 1 and a data controller 2.
[0032]
The comparator 11 loads an input data vector Yin, for example, from the memory unit 102.  The input data includes a plurality of values.  In this case, it is assumed that the input data vector Yin includes four 8-bit values Y1 to Y4 that are represented as 2-digit hexadecimal numbers "0x**", where "*" is the hexadecimal number.  That is, Yin={Y1, Y2, Y3, Y4}.   For example, when Y1=0x20, Y2=0xA0, Y3=0x60, and Y4=0xC0, Yin=0x20A060C0.
[0033]
The comparator 11 also loads a threshold input data vector T1, for example, from the memory unit 102.  The threshold input data vector T1 includes a plurality of values.  In this case, it is assumed that the threshold input data vector T1 also includes four 8-bit values T11 to T14 that are represented as 2-digit hexadecimal numbers.  In the present embodiment, T11 to T14 are the same numbers.  That is, T1={T11, T12, T13, T14} and T11=T12=T13=T14=TH1.  For example, when TH1=0x80, T1=0x80808080.
[0034]
The comparator 11 compares the input data vector Yin with the threshold input data vector T1.  In sum, the values Y1 to Y4 are compared with the threshold value TH1, respectively.  In the present embodiment, the comparator 11 determines whether the each input value (one of Y1 to Y4) is smaller than the threshold value TH1.  As described above, since the Yin=0x20A060C0 and T1=0x80808080, Y1, Y3<TH1 ("true") and Y2, Y4>=TH1 ("false").  In this case, the first comparator 11 outputs 0x0000000A as a comparison result vector R1, where "A" is indicated by a binary number "1010".
[0035]
The comparator 12 loads an input data vector Uin, for example, from the memory unit 102.  In this case, it is assumed that the input data vector Uin also includes four 8-bit values U1 to U4 that are represented as 2-digit hexadecimal numbers.  That is, Uin={U1, U2, U3, U4}.  For example, when U1=0x10, U2=0x30, U3=0xE0, and U4=0xF0, Uin=0x1030E0F0.
[0036]
The comparator 12 also loads a threshold input data vector T2, for example, from the memory unit 102.  In this case, it is assumed that the threshold input data vector T2 also includes four 8-bit values T21 to T24 that are represented as 2-digit hexadecimal numbers.  In the present embodiment, T21 to T24 are the same numbers.  That is, T2={T21, T22, T23, T24}, where T21=T22=T23=T24=TH2.  For example, when TH2=0xC0, T2=0xC0C0C0C0.
[0037]
The comparator 12 compares the input data vector Uin with the threshold input data vector T2.  In sum, the values U1 to U4 are compared with the threshold value TH2, respectively.  In the present embodiment, the comparator 12 determines whether the each input value (one of U1 to U4) is smaller than the threshold value TH2.  As described above, since the Uin=0x1030E0F0 and T2=0xC0C0C0C0, U1, U2 <TH2 ("true") and U3, U4>=TH2 ("false").  In this case, the comparator 12 outputs 0x0000000C as a comparison result vector R2, where "C" is indicated by a binary number "1100".
[0038]
The combining operation unit 1 performs an AND operation on the comparison results vectors R1 and R2, and outputs the resulting data as a binary output vector BIN.  In this case, the operation unit 1 performs the AND operation on R1=1010 and R2=1100, and outputs the binary output vector BIN=1000.
[0039]
The data controller 2 controls output data vector DC using input data vectors DA and DB according to the binary output vector BIN.  The input data vector DA, the input data vector DB and the output data vector DC have four 8-bit values that are represented as 2-digit hexadecimal numbers, as in the case of the input data vectors Yin and Uin, the threshold input data vectors T1 and T2.  That is, the input data vector DA={DA1, DA2, DA3, DA4}, the input data vector DB={DB1, DB2, DB3, DB4}, the output data vector DC={DC1, DC2, DC3, DC4}, where DA1 to DA4, DB1 to DB4 and DC1 to DC4 are the 2-digit hexadecimal numbers.
[0040]
When the bit of the binary output vector BIN is "1", the value at the corresponding position of the input data vector DA is passed to the corresponding position of the output data vector DC.  On the other hand, when the bit of the binary output vector BIN is "0", the value at the corresponding position of the input data vector DB is passed to the corresponding position of the output data vector DC.
[0041]
In this case, since the binary output vector BIN is "1000", the value at the first position "DA1" in the input data vector DA is passed to the first position "DC1" in the output data vector DC, and the values at the second to fourth positions "DB2", "DB3", and "DB4" in the input data vector DB are respectively passed to the second to fourth positions "DC2", "DC3", and "DC4" in the output data vector DC.  Therefore, the data controller 2 outputs the output data DC={DC1, DC2, DC3, DC4}={DA1, DB2, DB3, DB4}.
[0042]
That is, the bit "1" in the binary output vector BIN functions as a flag to replace the value in the input data vector DB passed to the corresponding positon in the output data vector DC with the value at the corresponding position in the input data vector DA.  It should be appreciated that, the values in the input data vector DB (DB1 to DB4) are all passed to the output data vector DC without any change (i.e. DC={DC1, DC2, DC3, DC4}={DB1, DB2, DB3, DB4}), when the binary output vector BIN does not include any bit "1" (i.e. BIN=0000).
[0043]
Further, although the input data vector DA has been described as the vector, the input data DA may be a scalar value.  In this case, when the bit of the binary output vector BIN is "1", the scalar value DA0 is passed to the corresponding position of the output data vector DC.  That is, when the binary output vector BIN is, for example, "1010", the output data vector DC may be {DA, DB2, DA, DB4}".
[0044]
In the present configuration, the output data vector DC may be returned to the input data vector DB.  In other words, the output data vector DB may be successively updated by the output data vector DC generated at the previous cycle.
[0045]
The data processing apparatus 100 can perform the above-described data moving (conditional move) operation on each value (i.e. each value set (Yk, Uk, T1k, T2k), where 1<=k<=4) in one cycle.  Thus, the data processing apparatus 100 can perform the data moving operation on all four value sets, which are simultaneously loaded, in only four cycles. 
[0046]
On the other hand, according to a general configuration based on PTL, NPTL, or the like, as illustrated in Fig. 2, the two-depth decision tree processing needs three comparison nodes (C1 to C3).  In the general configuration, such decision tree needs five or six cycles depending on the decision branch, because one instruction taking at least one cycle is necessary for each of loading Y, loading U, and the comparison nodes C1 to C3.  Further, when stall cycles due to comparison and branch instructions are needed in the comparison nodes C1 to C3, each of those comparison nodes takes at least two cycles.  As a result, the general configuration takes eight, nine, or more cycles to execute the two-depth decision tree processing per one set of values (Y and U).  Here, it is assumed that the general configuration takes 10 cycles for the two-depth decision tree processing per one set of values.  In this case, the general configuration takes 10*4=40 cycles for performing the same operation for four sets of values as the data processing apparatus 100, while the data processing apparatus 100 needs only four cycles.
[0047]
That is, since a plurality of the input data vectors and the threshold input data vectors each including a plurality of values can be processed in fewer cycles, it is possible to improve a processing speed of the data moving operation.
[0048]
Note that, the number of simultaneously loaded values of each data vector is not limited to four.  It should be appreciated that the number of simultaneously loaded values of each data vector may be two, three, five or more. 
[0049]
Although the combining operation unit 1 executes the AND operation in the present embodiment, the combining operation unit 1 may execute various operations such as an OR operation, an Exclusive OR (XOR) operation, a NAND operation, a NOR operation or an Exclusive NOR (XNOR) operation. 
[0050]
In the present embodiment, although the operation of the data processing apparatus 100 is based on the 2-depth decision trees providing two masks (comparison outputs) illustrated in Fig. 2, it is merely an example.  The operation of the data processing apparatus 100 can base also on deeper decision trees providing more than 2 masks.
[0051]
In the present embodiment, the input data vectors and the output data vector have four 8-bit values.  However, the values included in the input data vectors and the output data vector are not limited to the 8-bit values.  The input data vectors and the output data vector may have four 16-bit values.  Each value included in the input data vectors and the output data vector is a 4-digit hexadecimal numbers "0x****", where "*" is the hexadecimal number.
[0052]
It should be appreciated that, the values of the input data and the threshold input data are not limited to the 8-bit or 16-bit value.  Other multibit values such as 2-bit, 4-bit and 32-bit may constitute the input data vector, the threshold input data vector and the output data vector.
[0053]
Second Embodiment 
Next, a data processing apparatus according to a second embodiment will be described.  Fig. 5 schematically illustrates a configuration of a data processing apparatus 200 according to the second embodiment.  The data processing apparatus 200 has a configuration in which a pipeline register unit 3 is added to the data processing apparatus 100 according to the first embodiment.
[0054]
The pipeline register unit 3 is inserted between the comparators 11 and 12, and the combining operation unit 1.  The pipeline register unit 3 successively and temporarily stores the comparison results output from the comparators 11 and 12.  Thus, the pipeline register unit 3 can successively output the comparison result R1 and R2 output from the comparators 11 and 12 at the same cycle to the data controller 2.
[0055]
Therefore, according to the present configuration, the data processing apparatus 300 can execute the successive data moving processing with higher throughput than the first embodiment because the data processing apparatus 300 can achieve a higher acceptable operating frequency due to the pipeline processing. 
[0056]
Third Embodiment 
Next, a data processing apparatus according to a third embodiment will be described.  Fig. 6 schematically illustrates a configuration of a data processing apparatus 300 according to the third embodiment.  The data processing apparatus 300 has a configuration in which comparators 13 and 14 are added to the data processing apparatus 100 according to the first embodiment.
[0057]
The comparator 13 receives and compares an input data vector Xin and a threshold data vector T3, and output a comparison result R3.  The input data vector Xin and the threshold data vector T3 correspond to the input data vector Yin and a threshold data vector T1, respectively.  
[0058]
The comparator 14 receives and compares an input data vector Zin and a threshold data vector T4, and output a comparison result R4.  The input data vector Zin and the threshold data vector T4 correspond to the input data vector Uin and a threshold data vector T2, respectively.
[0059]
The combining operation unit 1 performs the AND operation on the comparison result vectors R1 to R4.  Thus, the same position values in the comparison result vectors R1 to R4 is "1" (true), the corresponding bit of the binary output vector BIN is "1".
[0060]
According to the present configuration, it is possible to corresponding to four pairs of input vectors.  In this case, the data processing apparatus 300 can correspond to the data processing based on the decision tree having the depth of four levels.
[0061]
Note that the number of pairs of the input vectors is not limited to two or four, the number of pairs of the input vectors may be three, or five or more as appropriate.
[0062]
Other embodiments
The present invention is not limited to the embodiments described above, and can be modified as appropriate without departing from the scope of the invention.  For example, in the above-described embodiments, the operation of the data controller has been described as the conditional move operation.  However, it is merely an example.  The data controller may execute other operations such as a conditional ADD/SUB operation, which performs an ADD (Addition) or SUB (Subtraction) operation.
[0063]
In the above-described embodiment, each of the comparators 11 and 12 compares the value of the input data vector with the same threshold value.  However, the threshold value can be changed as appropriate so as to correspond to the object of the data processing.  Further, it should be appreciated that the comparators may determine whether the each input value is "equal to or smaller than", "equal to", "not equal to", "larger than", or "equal to or larger than" the threshold value.  
[Reference Signs List]
[0064]
1    COMBINING OPERATION UNIT
2    DATA CONTROLLER
3    PIPELINE REGISTER UNIT
11 TO 14    COMPARATORS
100, 300    DATA PROCESSING APPARATUSES
101    CENTRAL PROCESSING UNIT (CPU)
102    MEMORY
103    PROCESSOR
104    BUS
1000    DATA PROCESSING SYSTEM
[Claim 1]
A data processing apparatus comprising: 
a plurality of comparators, each comparator being configured to receive a plurality of input data vectors to output a comparison result vector; 
a combining operation unit configured to combine the comparison result vectors output from the comparators to output a binary output vector; and 
a data controller configured to control data processing based on the binary output vector.
[Claim 2]
The data processing apparatus according to Claim 1, wherein 
each comparator compares two input data vector with each other, 
a value included in one input data vector is compared with a corresponding value included in the other input data, and 
the comparison result vector of each comparator include values indicating the comparison results of two values. 
[Claim 3]
The data processing apparatus according to Claim 1, wherein 
the combining operation unit performs an AND operation on the comparison result vectors, 
when the same position values of the comparison result vectors indicate that the comparison results are true, the corresponding bit of the binary output vector is "1", and 
when the same position values of the comparison result vectors indicate that at least one of the comparison results is false, the corresponding bit of the binary output vector is "0".
[Claim 4]
The data processing apparatus according to Claim 3, wherein 
the data controller receives a first input data vector and a second input data vector and output an output data vector, 
when the bit of the binary output vector is "1", the value at the corresponding position of the first data vector is passed to the corresponding position of the output data vector, and 
when the bit of the binary output vector is "0", the value at the corresponding position of the second data vector is passed to the corresponding position of the output data vector. 
[Claim 5]
The data processing apparatus according to Claim 3, wherein 
the data controller receives first input data that is a scalar value and a second input data vector and output an output data vector, 
when the bit of the binary output vector is "1", the scalar value of the first data is passed to the corresponding position of the output data vector, and 
when the bit of the binary output vector is "0", the value at the corresponding position of the second data vector is passed to the corresponding position of the output data vector.
[Claim 6]
The data processing apparatus according to Claim 2, further comprising a register unit configured to successively store the values of the same position of the comparison result vectors and to successively output the comparison result vector which includes the stored values output from the comparators at the same cycle.
[Claim 7]
A data processing system comprising; 
a memory unit; 
a bus; and 
the data processing apparatus according to Claim 1.
[Claim 8]
A data processing method comprising: 
receiving and comparing a plurality of input data vectors to output a comparison result vector; 
combining the comparison result vectors output from the comparators to output a binary output vector; and 
controlling data processing based on the binary output vector.
[Claim 9]
A data processing program, the data processing program causing a computer to execute steps of: 
receiving and comparing a plurality of input data vectors to output a comparison result vector; 
combining the comparison result vectors output from the comparators to output a binary output vector; and 
controlling data processing based on the binary output vector.
1.Abstract
A data processing apparatus includes comparators, a combining operation unit and data controller.  Each comparator is configured to receive a plurality of input data vectors to output a comparison result vector.  The combining operation unit is configured to combine the comparison result vectors output from the comparators to output a binary output vector.  The data controller is configured to control data processing based on the binary output vector.
2. Representative Drawing
Fig. 3
2020112840.tif 000009
2020112840.tif 000010
2020112840.tif 000011
2020112840.tif 000012
2020112840.tif 000013
2020112840.tif 000014