(57)【要約】【課題】ＬＢＰ特徴量をより速く生成可能なプロセッサを提供する。【解決手段】プロセッサ１は、シフト処理Ｓ２、格納処理Ｓ３及び比較処理Ｓ１を１つの命令で実行する。シフト処理Ｓ２は、第３データ要素ＤＶ３１〜ＤＶ３４を、第３ベクトルレジスタＶＲ３の所定領域ｓｍ１〜ｓｍ４が空き領域になるようにシフトする。格納処理Ｓ３は、比較結果データＨＤ１〜ＨＤ４を所定領域ｓｍ１〜ｓｍ４に格納し、第３データ要素ＤＶ３１〜ＤＶ３４を、所定領域ｓｍ１〜ｓｍ４に格納された比較結果データＨＤ１〜ＨＤ４を含むように更新する。比較処理Ｓ１は、第１データ要素ＤＶ１１〜ＤＶ１４と、第２データ要素ＤＶ２１〜ＤＶ２４とを大小比較して、比較結果ＨＤ１〜ＨＤ４データを生成する。【選択図】図８
2020144480.tif 000002
【特許請求の範囲】
【請求項１】
第１レジスタに第１データ要素が格納され、
第２レジスタに第２データ要素が格納され、
第３レジスタに第３データ要素が格納され、
前記第３データ要素を、前記第３レジスタの所定領域が空き領域になるようにシフトするシフト処理と、
比較結果データを前記所定領域に格納し、前記第３データ要素を、前記所定領域に格納された前記比較結果データを含むように更新する格納処理と、の少なくとも一方の処理、
及び、前記第１データ要素と前記第２データ要素とを大小比較して前記比較結果データを生成する比較処理、を１つの命令で実行する、
プロセッサ。
【請求項２】
前記第１データ要素及び前記第２データ要素は、互いに相関するデータ要素である、
請求項１に記載のプロセッサ。
【請求項３】
前記第１レジスタには、前記第１データ要素が複数格納され、
前記第２レジスタには、前記第２データ要素が複数格納され、
前記第３レジスタには、前記第３データ要素が複数格納され、
前記複数の第１データ要素、前記複数の第２データ要素、及び前記複数の第３データ要素は、互いに対応し、
前記第３レジスタは、前記複数の第３データ要素に対応する複数の記憶領域を有し、
前記第３レジスタの前記所定領域は、前記複数の記憶領域毎に設けられ、
前記比較処理は、前記複数の第１データ要素と、前記複数の第２データ要素とを、対応するデータ要素毎に大小比較して、前記比較結果データを複数生成し、前記複数の比較結果データは、前記複数の記憶領域に対応し、
前記シフト処理は、前記第３レジスタに格納された前記複数の第３データ要素をそれぞれ、対応する前記記憶領域の前記所定領域が空き領域になるようにシフトし、
前記格納処理は、前記複数の比較結果データを、対応する前記記憶領域の前記所定領域に格納し、前記複数の第３データ要素を、対応する前記記憶領域の前記所定領域に格納された前記比較結果データを含むように更新する、
請求項１又は２に記載のプロセッサ。
【請求項４】
前記１つの命令は、前記比較処理、前記シフト処理及び前記格納処理を実行させる、
請求項１〜３の何れか１項に記載のプロセッサ。
【請求項５】
前記１つの命令は、前記比較処理及び前記格納処理を実行させる、
請求項１〜４の何れか１項に記載のプロセッサ。
【請求項６】
前記第１データ要素及び前記第２データ要素の各々のデータ幅は、前記第３データ要素のデータ幅と異なる、
請求項３に記載のプロセッサ。
【請求項７】
第１レジスタに第１データ要素が格納され、
第２レジスタに第２データ要素が格納され、
第３レジスタに第３データ要素が格納され、
前記第３データ要素を、前記第３レジスタの所定領域が空き領域になるようにシフトするシフト処理と、
比較結果データを前記所定領域に格納し、前記第３データ要素を、前記所定領域に格納された前記比較結果データを含むように更新する格納処理と、の少なくとも一方の処理、
及び、前記第１データ要素と前記第２データ要素とを大小比較して前記比較結果データを生成する比較処理、を１つの命令で実行する、
プロセッサの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般にプロセッサ及びプロセッサの制御方法に関し、より詳細には、１つの命令で複数の処理を実行可能なプロセッサ及びプロセッサの制御方法に関する。
【背景技術】
【０００２】
特許文献１に記載の半導体装置（プロセッサ）は、２つのベクトルレジスタの内容を要素ごとに一致するか否かの演算を演算器で行って、演算結果を生成する。また、上記の半導体装置は、データ要素ごとの上記の演算結果に基づく付加情報を生成して連結し、汎用レジスタの内容を左にシフトし、シフトによって空いた部分に、連結した付加情報を挿入する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−２７１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に記載の半導体装置では、上記の演算器は、２つのベクトルレジスタの内容が一致するか否かの演算を行う。しかし、この演算は、ＬＢＰ（Local Binary Pattern）特徴量を生成するための演算（大小比較）と異なる演算である。このため、上記の半導体装置では、ＬＢＰ特徴量を生成することはできない。
【０００５】
本開示は、上記事由に鑑みて、ＬＢＰ特徴量をより速く生成可能なプロセッサ及びプロセッサの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本開示の一態様に係るプロセッサでは、第１レジスタに第１データ要素が格納され、第２レジスタに第２データ要素が格納され、第３レジスタに第３データ要素が格納される。前記プロセッサは、シフト処理と格納処理との少なくとも一方の処理、及び、比較処理、を１つの命令で実行する。前記シフト処理は、前記第３データ要素を、前記第３レジスタの所定領域が空き領域になるようにシフトする。前記格納処理は、比較結果データを前記所定領域に格納し、前記第３データ要素を、前記所定領域に格納された前記比較結果データを含むように更新する。前記比較処理は、前記第１データ要素と、前記第２データ要素とを大小比較して、前記比較結果データを生成する。
【０００７】
本開示の一態様に係るプロセッサの制御方法では、第１レジスタに第１データ要素が格納され、第２レジスタに第２データ要素が格納され、第３レジスタに第３データ要素が格納される。このプロセッサの制御方法では、プロセッサは、シフト処理と格納処理との少なくとも一方の処理、及び、比較処理、を１つの命令で実行する。前記シフト処理は、前記第３データ要素を、前記第３レジスタの所定領域が空き領域になるようにシフトする。前記格納処理は、比較結果データを前記所定領域に格納し、前記第３データ要素を、前記所定領域に格納された前記比較結果データを含むように更新する。前記比較処理は、前記第１データ要素と、前記第２データ要素とを大小比較して、前記比較結果データを生成する。
【発明の効果】
【０００８】
本開示は、ＬＢＰ特徴量をより速く生成可能である、という利点がある。
【図面の簡単な説明】
【０００９】
【図１】図１は、入力画像と３×３画素との関係を説明する説明図である。
【図２】図２は、３×３画素とＬＢＰ特徴量との関係を説明する説明図である。
【図３】図３は、入力画像の複数のＬＢＰ特徴量をヒストグラム化したグラフを示す図である。
【図４】図４は、３×３画素の各画素への符号の振り方の一例を説明する説明図である。
【図５】図５は、注目画素と複数の近傍画素とからＬＢＰ特徴量を計算する計算方法を説明する説明図である。
【図６】図６は、複数のＬＢＰ特徴量を並行して計算する場合の計算方法を説明する説明図である。
【図７】図７は、実施形態に係るプロセッサの構成の一例を示す構成図である。
【図８】図８は、同上のプロセッサの処理の流れを説明する模式図である。
【図９】図９は、変形例２に係るプロセッサにおいて、第１及び第２データ要素のビット幅が第３データ要素のビット幅よりも大きい場合の第１から第３ベクトルレジスタへのデータ要素の格納の仕方を説明する説明図である。
【図１０】図１０は、同上のプロセッサにおいて、第３ベクトルレジスタへのデータ要素の格納の仕方の別の例を説明する説明図である。
【図１１】図１１は、同上のプロセッサにおいて、第１及び第２データ要素のビット幅が第３データ要素のビット幅よりも小さい場合の第１から第３ベクトルレジスタへのデータ要素の格納の仕方を説明する説明図である。
【図１２】図１２は、同上のプロセッサにおいて、第３ベクトルレジスタへのデータ要素の格納の仕方の別の例を説明する説明図である。
【図１３】図１３は、５×５画素の場合のＬＢＰ特徴量の計算方法を説明する説明図である。
【発明を実施するための形態】
【００１０】
以下、実施形態に係るプロセッサについて説明する。下記の実施形態は、本開示の様々な実施形態の例に過ぎない。また、下記の実施形態は、本開示の目的を達成できれば、設計等に応じて種々の変更が可能である。
【００１１】
図１〜図８を参照して、本実施形態に係るプロセッサ１について説明する。本実施形態に係るプロセッサ１は、例えば画像から特定の物体（例えば人）を検出する物体検出処理で使用可能なプロセッサである。
【００１２】
なお、プロセッサとは、命令メモリ、フェッチ部、デコーダ部、レジスタファイル、演算器群及びデータメモリのうち、全てが１チップに含まれるものである。ただし、命令メモリ及びデータメモリは、チップの外にあってもよい。
【００１３】
物体検出処理では、予め、特定の物体の写った大量のサンプル画像から複数の特徴量を抽出してヒストグラムを生成し、統計的学習手法を用いて特定の物体の特徴を学習させ、特定の物体の特徴を表したヒストグラム（参照ヒストグラム）を取得する。そして、入力画像に対し、複数の特徴量を抽出してヒストグラムを生成し、生成したヒストグラムと参照ヒストグラムとを比較する。この比較の結果、両者が類似又は一致する場合に、入力画像に特定の物体が写っていると判定する。
【００１４】
上記の特徴量として、ＬＢＰ（Local Binary Pattern）特徴量を用いることができる。
【００１５】
ＬＢＰ特徴量とは、画像中の注目画素と近傍画素との輝度の大小関係を表現した特徴量である。注目画素及び近傍画素は、互いに相関を有する画素である。具体的には、図１に示すように、入力画像Ｆ１において、注目画素を中心とする一定範囲の画像領域（例えば３×３画素）Ｒ１を考える。３×３画素Ｒ１の各画素内に付された数値は、輝度値を示す。３×３画素Ｒ１のうち、中心の画素が注目画素であり、その周囲の８つの画素が近傍画素である。注目画素の輝度値と、８つの近傍画素の各々の輝度値との大小を比較する。
【００１６】
そして、図２に示すように、注目画素の輝度値が近傍画素の輝度値以上である場合は、その近傍画素に０を対応させ、注目画素の輝度値が近傍画素の輝度値よりも小さい場合は、その近傍画素に１を対応させる。なお、上記の０又は１の数値を１ビットデータとも記載する。すなわち、各近傍画素に０又は１の１ビットデータを対応させる。
【００１７】
そして、３×３画素Ｒ１において、例えば、図２の矢印Ｙ１に沿って左上角部の近傍画素から時計回りに、各近傍画素に対応させた数値（０又は１）を辿る。そして、辿った数値を左から右に向かって一列に並べると、８つの２進数からなる数列「０１０１００００」を得る。この数列が、注目画素に対するＬＢＰ特徴量である。この例では、注目画素に８つの近傍画素が対応する場合で計算しため、ＬＢＰ特徴量は、８ビットのデータである。図３は、上記のＬＢＰ特徴量を、入力画像Ｆ１の複数の注目画素の各々で計算し、計算した複数のＢＰＬ特徴量をヒストグラム化したブラフの一例である。
【００１８】
このヒストグラムを上記の参照ヒストグラムと比較し、両者が類似するか又は一致する場合は、入力画像Ｆ１に特定の物体が写っていると判断され、両者が類似も一致もしない場合は、入力画像Ｆ１に特定の物体は写っていないと判断される。
【００１９】
ＬＢＰ特徴量は、図４及び図５に示す処理手順で計算可能である。
【００２０】
図４に示すように、３×３画素Ｒ１の各画素に符号Ｐ０〜Ｐ８を付す。図５に示すように、先ず、処理Ｑ１で、注目画素Ｐ４の輝度値と近傍画素Ｐ０の輝度値との差分値を計算する。すなわち、注目画素Ｐ４の輝度値から近傍画素Ｐ０の輝度値を引いた値（差分値）を計算する。そして、処理Ｑ２で、差分値の符号を読み取り、差分値が負である場合は、近傍画素Ｐ０に１を対応させ、差分値が負でない（すなわち０又は正である）場合は、近傍画素Ｐ０に０を対応させる。そして、処理Ｑ３で、対応させた数値（０又は１）を並べる。そして、処理Ｑ４で、並べた値を左にシフトして次の値を並べる場所を確保する。なお、処理Ｑ３及び処理Ｑ４は、順番が入れ替わってもよい。
【００２１】
処理Ｑ１〜Ｑ４を、近傍画素Ｐ０を他の近傍画素Ｐ１〜Ｐ８（Ｐ４は除く）に順に入れ替えて繰り返す。この結果、８つの２進数からなる数列が生成される。この数列が注目画素Ｐ４に対するＬＢＰ特徴量となる。なお、この例では、一定範囲の画像領域Ｒ１が３×３画素であるので、ＬＢＰ特徴量は、８つの２進数で構成される。なお、本実施形態では、処理Ｑ１〜Ｑ４を１つの命令で実行する。従って、上記の命令を、近傍画素Ｐ０〜Ｐ８（Ｐ４は除く）を順に入れ替えて８回実行することで、ＬＢＰ特徴量が生成される。
【００２２】
プロセッサ１は、ＬＢＰ特徴量を算出するプロセッサである。プロセッサ１は、処理Ｑ１〜Ｑ４を１つのベクトル命令（命令）で実行することで、ＬＢＰ特徴量を生成する。また、プロセッサ１は、複数（例えば４つ）の注目画素Ｐ４ａ〜Ｐ４ｄに対するＬＢＰ特徴量を並列処理で生成する。
【００２３】
なお、ベクトル命令とは、ＳＩＭＤ（Single instruction Multiple Data）命令とも呼ばれる。ベクトル命令は、１つの命令で複数の処理を一括して処理する命令である。
【００２４】
以下の説明では、図６に示すように、プロセッサ１は、複数の注目画素Ｐ４ａ〜Ｐ４ｄの各々に対応する１つ目の近傍画素Ｐ０ａ〜Ｐ０ｄに対応する１ビットデータを、並列処理で生成する場合を想定する。なお、注目画素Ｐ４ａには、複数の近傍画素Ｐ１ａ〜Ｐ８ａ（ただしＰ４ａは除く）が対応し、注目画素Ｐ４ｂには、複数の近傍画素Ｐ１ｂ〜Ｐ８ｂ（ただしＰ４ｂは除く）が対応している。また、注目画素Ｐ４ｃには、複数の近傍画素Ｐ１ｃ〜Ｐ８ｃ（ただしＰ４ｃは除く）が対応し、注目画素Ｐ４ｄには、複数の近傍画素Ｐ１ｄ〜Ｐ８ｄ（ただしＰ４ｄは除く）が対応している。そして、上記の並列処理を、１つ目の近傍画素Ｐ０ａ〜Ｐ０ｄから８つ目の近傍画素Ｐ８ａ〜Ｐ８ｄ（注目画素Ｐ４ａ〜Ｐ４ｄは除く）まで順に入れ替えて繰り返す。この結果、複数の注目画素Ｐ４ａ〜Ｐ４ｄの各々に対するＬＢＰ特徴量Ｔ１〜Ｔ４が並列処理で生成される。
【００２５】
図７に示すように、プロセッサ１は、処理部２と、命令メモリ３と、データメモリ７とを備えている。処理部２は、第１ベクトルレジスタＶＲ１（第１レジスタ）と、第２ベクトルレジスタＶＲ２（第２レジスタ）と、第３ベクトルレジスタＶＲ３（第３レジスタ）と、複数の比較期Ｋ１〜Ｋ４と、フェッチ部４と、デコーダ部５とを備えている。
【００２６】
第１〜第３ベクトルレジスタＶＲ１〜ＶＲ３の記憶容量は、例えば１２８ビットである。なお、本実施形態では、第１ベクトルレジスタＶＲ１、第２ベクトルレジスタＶＲ２及び第３ベクトルレジスタＶＲ３は、プロセッサ１に含まれるが、プロセッサ１に含まれなくてもよい。また、命令メモリ３及びデータメモリ７は、プロセッサ１に含まれなくてもよい。また、処理部２は、第１〜第３ベクトルレジスタＶＲ１〜ＶＲ３以外のレジスタ（例えばベクトルレジスタ及び汎用レジスタ）や、実行部６及び比較器Ｋ１〜Ｋ４以外の演算器を含んでもよい。
【００２７】
第１ベクトルレジスタＶＲ１は、図８に示すように、第１ベクトルデータＶＤ１を格納する。第１ベクトルデータＶＤ１は、複数（例えば４つ）の第１データ要素ＶＤ１１〜ＶＤ１４で構成される。第１データ要素ＶＤ１１〜ＶＤ１４はそれぞれ、注目画素Ｐ４ａ〜Ｐ４ｄの輝度値を表す画素データ（注目画素データ）である。第１ベクトルレジスタＶＲ１は、複数の記憶領域ｍ１１〜ｍ１４を有する。記憶領域ｍ１１〜ｍ１４の数及び記憶容量は、記憶領域の数×記憶領域の記憶容量がベクトルレジスタの記憶容量の１２８ビットであるという範囲で自由に設定される。そのため、記憶領域ｍ１１〜ｍ１４の数は、本実施形態では４つであるが、４つに限定されない。複数の第１データ要素ＶＤ１１〜ＶＤ１４は、複数の記憶領域ｍ１１〜ｍ１４と一対一に対応し、対応する記憶領域ｍ１１〜ｍ１４に格納される。各記憶領域ｍ１１〜ｍ１４は、例えば３２ビットであり、第１データ要素ＶＤ１１〜ＶＤ１４は、例えば３２ビットデータである。なお、記憶領域の記憶容量とデータ要素のサイズは、互いに一致させるのが一般的である。したがって、第１データ要素が８ビットデータの場合は、記憶領域も８ビットに設定することが望ましい。第１データ要素が８ビットデータの場合は、第１データ要素のサイズに応じて第１データ要素の数が変わり、第１データ要素の数は１６となる。なお、第２〜３データ要素も同様である。第１〜３データ要素の数に合わせて、並列演算される第１〜３データ要素の数やプロセッサの比較器の数を変える必要があり、この場合は１６となる。以下、第１データ要素ＶＤ１１〜ＶＤ１４を注目画素データＶＤ１１〜ＶＤ１４とも記載する。
【００２８】
第２ベクトルレジスタＶＲ２は、図８に示すように、第２ベクトルデータＶＤ２を格納する。第２ベクトルデータＶＤ２は、複数（例えば４つ）の第２データ要素移ＶＤ２１〜ＶＤ２４で構成される。第２データ要素ＶＤ２１〜ＶＤ２４はそれぞれ、近傍画素Ｐ０ａ〜Ｐ０ｄの輝度値を表す画素データ（近傍画素データ）である。第２データ要素ＶＤ２１〜ＶＤ２４を近傍画素データＶＤ１１〜ＶＤ１４とも記載する。近傍画素データＶＤ２１〜ＶＤ２４は、注目画素データＶＤ１１〜ＶＤ１４に相関するデータである。
【００２９】
第２ベクトルレジスタＶＲ２は、複数の記憶領域ｍ２１〜ｍ２４を有する。複数の第２データ要素ＶＤ２１〜ＶＤ２４は、複数の記憶領域ｍ２１〜ｍ２４と一対一に対応し、対応する複数の記憶領域ｍ２１〜ｍ２４に格納される。各記憶領域ｍ２１〜ｍ２４は、例えば３２ビットであり、第２データ要素ＶＤ２１〜ＶＤ２４は、例えば８ビットデータである。
【００３０】
第３ベクトルレジスタＶＲ３は、図８に示すように、第３ベクトルデータＶＤ３を格納する。第３ベクトルデータＶＤ３は、複数（例えば４つ）の第３データ要素ＶＤ３１〜ＶＤ３４で構成される。第３ベクトルレジスタＶＲ３は、複数（例えば４つ）の記憶領域ｍ３１〜ｍ３４を有する。各記憶領域ｍ３１〜ｍ３４は、例えば３２ビットである。複数の第３データ要素ＶＤ３１〜ＶＤ３４は、複数の記憶領域ｍ３１〜ｍ３４に一対一に対応し、対応する記憶領域ｍ３１〜ｍ３４に格納される。
【００３１】
複数の記憶領域ｍ３１〜ｍ３４は、後述の複数の比較器Ｋ１〜Ｋ４と一対一に対応する。記憶領域ｍ３１〜ｍ３４には、対応する比較器Ｋ１〜Ｋ４から出力された比較結果データＨＤ１〜ＨＤ４が格納される。比較結果データＨＤ１〜ＨＤ４は、近傍画素Ｐ０ａ〜Ｐ０ｄに対応する上述の１ビットデータである。以下、比較結果データＨＤ１〜ＨＤ４を１ビットデータＨＤ１〜ＨＤ４とも記載する。第３データ要素ＶＤ３１〜ＶＤ３４は、対応する記憶領域ｍ３１〜ｍ３４に格納された比較結果データＨＤ１〜ＨＤ４を含むデータである。
【００３２】
なお、複数の記憶領域ｍ１１〜ｍ１４、複数の記憶領域ｍ２１〜ｍ２４、複数の記憶領域ｍ３１〜ｍ３４、及び後述の複数の比較器Ｋ１〜Ｋ４はそれぞれ、一対一に対応する。また、複数の第１データ要素ＶＤ１１〜ＶＤ１４、複数の第２データ要素ＶＤ２１〜ＶＤ２４、及び複数の第３データ要素ＶＤ３１〜ＶＤ３４はそれぞれ、一対一に対応する。互いに対応する第１データ要素ＶＤ１１〜ＶＤ１４、第２データ要素ＶＤ２１〜ＶＤ２３及び第３データ要素ＶＤ４１〜ＶＤ４４は、３つのベクトルレジスタＶＲ１，ＶＲ２，ＶＲ３における互いに対応する記憶領域に格納される。
【００３３】
処理部２は、ベクトル命令を実行可能な処理部である。処理部２は、ベクトル命令に従って、第１ベクトルレジスタＶＲ１内の複数の第１データ要素ＶＤ１１〜Ｇ１４と、第２ベクトルレジスタＶＲ２内の複数の第２データ要素ＶＤ２１〜ＶＤ２４とから、第２データ要素ＶＤ２１〜ＶＤ２４に対応する１ビットデータＨＤ１〜ＨＤ４を生成する。そして、処理部２は、生成した複数の１ビットデータＨＤ１〜ＨＤ４を第３ベクトルレジスタＶＲ３の対応する記憶領域ｍ３１〜ｍ３４に格納する。
【００３４】
命令メモリ３は、プロセッサ１で実行する命令を格納する揮発性のメモリである。フェッチ部４は、実行する命令を命令メモリ３から読み出すブロックである。デコーダ部５は、フェッチ部４で読み出された命令の内容を解釈するブロックである。実行部６は、デコーダ部５で解釈された命令を実行するブロックである。データメモリ７は、命令メモリ３から読み出された命令によって処理されるデータを保存するメモリである。実行部６が実行する命令の中には、図８に示すように、比較処理Ｓ１と、シフト処理Ｓ２と、格納処理Ｓ３とを１つの命令で実行するベクトル命令を含む。なお、比較処理Ｓ１は、図５の処理Ｑ１及びＱ２に対応し、シフト処理Ｓ２は、図５の処理Ｑ４に対応し、格納処理Ｓ３は、図５の処理Ｑ３に対応する。
【００３５】
本実施形態では、比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３は、この順に実行されるが、各処理Ｓ１〜Ｓ３の処理順は、上記の順に限定されない。例えば、各処理Ｓ１〜Ｓ３の処理順を、シフト処理Ｓ２、比較処理Ｓ１及び格納処理Ｓ３の順としてもよいし、又は、比較処理Ｓ１、格納処理Ｓ３及びシフト処理Ｓ２の順としてもよい。
【００３６】
比較処理Ｓ１は、第１ベクトルレジスタＶＲ１に格納された第１データ要素ＶＤ１１〜ＶＤ１４と、第２ベクトルレジスタＶＲ２に格納された第２データ要素ＶＤ２１〜ＶＤ２４とを大小比較して、比較結果データＨＤ１〜ＨＤ４を生成する処理である。シフト処理Ｓ２は、第３ベクトルレジスタＶＲ３の所定領域ｓｍ１〜ｓｍ４が空き領域になるように、第３ベクトルレジスタＶＲ３に格納された第３データ要素ＶＤ３１〜ＶＤ３４をシフトする処理である。格納処理Ｓ３は、比較結果データＨＤ１〜ＨＤ４を所定領域ｓｍ１〜ｓｍ４に格納し、第３データ要素ＶＤ３１〜ＶＤ３４を、所定領域ｓｍ１〜ｓｍ４に格納された比較結果データＨＤ１〜ＨＤ４を含むように更新する処理である。図８の矢印Ｙ２は、第３ベクトルレジスタＶＲ１内の第３データ要素ＶＤ３１〜ＶＤ３４を、所定領域ｓｍ１〜ｓｍ４に格納された比較結果データＨＤ１〜ＨＤ４を含むように更新する処理を示す。
【００３７】
より詳細には、比較処理Ｓ１は、第１ベクトルレジスタＶＲ１に格納された複数の第１データ要素ＶＤ１１〜ＶＤ１４と、第２ベクトルレジスタＶＲ２に格納された複数の第２データ要素ＶＤ２１〜ＶＤ２４とを、対応するデータ要素毎に大小比較して、複数の比較結果データＨＤ１〜ＨＤ４を生成する処理である。複数の比較結果データＨＤ１〜ＨＤ４は、複数の記憶領域ｍ３１〜ｍ３４に一対一に対応する。シフト処理Ｓ２は、第３ベクトルレジスタＶＲ３に格納された複数の第３データ要素ＶＤ３１〜ＶＤ３４を、対応する記憶領域ｍ３１〜ｍ３４の所定領域ｓｍ１〜ｓｍ４が空き領域になるようにシフトする処理である。格納処理Ｓ３は、複数の比較結果データＨＤ１〜ＨＤ４を、対応する記憶領域ｍ３１〜ｍ３４の所定領域ｓｍ１〜ｓｍ４に格納し、複数の第３データ要素ＶＤ３１〜ＶＤ３４を、対応する記憶領域ｍ３１〜ｍ３４の所定領域ｓｍ１〜ｓｍ４に格納された比較結果データＨＤ１〜ＨＤ４を含むように更新する処理である。
【００３８】
実行部６は、上記のベクトル命令に従って、比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３を実行する。
【００３９】
比較処理Ｓ１では、図８に示すように、実行部６は、第１ベクトルレジスタＶＲ１の記憶領域ｍ１１〜ｍ１４内の第１データ要素ＶＤ１１〜ＶＤ１４を読み出し、読み出した第１データ要素ＶＤ１１〜ＶＤ１４を、対応する比較器Ｋ１〜Ｋ４に入力する。また、実行部６は、第２ベクトルレジスタＶＲ２の記憶領域ｍ２１〜ｍ２４内の第２データ要素ＶＤ２１〜ＶＤ２４を読み出し、読み出した第２データ要素ＶＤ２１〜ＶＤ２４を、対応する比較器Ｋ１〜Ｋ４に入力する。
【００４０】
これらの入力に対し、比較器Ｋ１〜Ｋ４は、入力された第１データ要素ＶＤ１１〜ＶＤ１４及び第２データ要素ＶＤ２１〜ＶＤ２４の大小を比較する。この比較の結果、第１データ要素ＶＤ１１〜ＶＤ１４が第２データ要素ＶＤ２１〜ＶＤ２４よりも小さい場合は、比較器Ｋ１〜Ｋ４は、比較結果データＨＤ１〜ＨＫ４として、数値１の１ビットデータを出力する。他方、上記の比較の結果、第１データ要素ＶＤ１１〜ＶＤ１４が第２データ要素ＶＤ２１〜ＶＤ２４以上である場合は、比較器Ｋ１〜Ｋ４は、比較結果データＨＤ１〜ＨＫ４として、数値０の１ビットデータを出力する。
【００４１】
なお、比較器Ｋ１は、上記の比較では、第１データ要素ＶＤ１１から第２データ要素ＶＤ２１を引いた差分値を計算する。そして、比較器Ｋ１は、差分値が負の場合、第１データ要素ＶＤ１１が第２データ要素ＶＤ２１よりも小さいと判定し、差分値がゼロ又は正である場合、第１データ要素ＶＤ１１が第２データ要素ＶＤ２１以上であると判定する。比較器Ｋ２〜Ｋ４の上記の判定も同様である。
【００４２】
また、シフト処理Ｓ２では、図８に示すように、実行部６は、第３ベクトルレジスタＶＲ１の記憶領域ｍ３１〜ｍ３４内の第３データ要素ＶＤ３１〜ＶＤ３４を、データ要素毎に左に１ビット、シフトする。これにより、記憶領域ｍ３１〜ｍ３４の所定領域（最下位の１ビット分の領域）ｓｍ１〜ｓｍ４に空き領域を形成する。このシフトによって、所定領域ｓｍ１〜ｓｍ４は、例えば数値０の状態に初期化される。第３データ要素ＶＤ３１〜ＶＤ３４において、上記のシフトによって、記憶領域ｍ３１〜ｍ３４の左端から溢れたデータ部分（１ビット分のデータ）は、消去される。
【００４３】
また、格納処理Ｓ３では、図８に示すように、実行部６は、複数の比較器Ｋ１〜Ｋ４から出力された複数の比較結果データＨＤ１〜ＨＤ４を、対応する記憶領域ｍ３１〜ｍ３４の所定領域ｓｍ１〜ｓｍ４に格納する。そして、実行部６は、記憶領域ｍ３１〜ｍ３４に格納された第３データ要素ＶＤ３１〜ＶＤ３４を、記憶領域ｍ３１〜ｍ３４の所定領域ｓｍ１〜ｓｍ４に格納された比較結果データＨＤ１〜ＨＫ４を含むように更新する（図８の矢印Ｙ２）。すなわち、実行部６は、第３ベクトルレジスタの各記憶領域ｍ３１〜ｍ３４に格納された一定長のデータをそれぞれ、第３データ要素ＶＤ３１〜ＶＤ３４とする。
【００４４】
このように、上記のベクトル命令を実行することで、１つ目の近傍画素Ｐ０ａ〜Ｐ０ｄに対応する比較結果データ（１ビットデータ）ＨＤ１〜ＨＤ４が並列処理で計算される。計算された複数の比較結果データＨＤ１〜ＨＤ４は、第３ベクトルレジスタＶＲ３に複数の記憶領域ｍ３１〜ｍ３４に格納される。そして、第２データ要素ＶＤ２１〜ＶＤ２４を、２つ目の近傍画素Ｐ１ａ〜Ｐ１ｄの画素データから８つ目の近傍画素Ｐ８ａ〜Ｐ８ｄの画素データまで順に入れ替えて、上記と同様に、上記のベクトル命令を実行する（図６参照）。
【００４５】
この結果、第３ベクトルレジスタＶＲ３の記憶領域ｍ３１には、第３データ要素ＶＤ３１として、複数の近傍画素Ｐ０ａ〜Ｐ８ａ（ただしＰ４ａを除く）に対応する比較結果データ（１ビットデータ）ＨＤ１の数列が格納される。この数列が注目画素Ｐ４ａに対するＬＢＰ特徴量Ｔ１（図６参照）となる。同様に、記憶領域ｍ３２には、第３データ要素ＶＤ３２として、複数の近傍画素Ｐ０ｂ〜Ｐ８ｂ（ただしＰ４ｂを除く）に対応する比較結果データ（１ビットデータ）ＨＤ１の数列が格納され、この数列が注目画素Ｐ４ｂに対するＬＢＰ特徴量Ｔ２となる。記憶領域ｍ３３には、第３データ要素ＶＤ３３として、複数の近傍画素Ｐ０ｃ〜Ｐ８ｃ（ただしＰ４ｃを除く）に対応する比較結果データ（１ビットデータ）ＨＤ１の数列が格納され、この数列が注目画素Ｐ４ｃに対するＬＢＰ特徴量Ｔ３となる。記憶領域ｍ３４には、第３データ要素ＶＤ３４として、複数の近傍画素Ｐ０ｄ〜Ｐ８ｄ（ただしＰ４ｄを除く）に対応する比較結果データ（１ビットデータ）ＨＤ１の数列が格納され、この数列が注目画素Ｐ４ｄに対するＬＢＰ特徴量Ｔ４となる。
【００４６】
【表１】
2020144480.tif 000003
【００４７】
表１は、上記のベクトル命令をプロセッサ１に実装する場合の「ニーモニック」、「データタイプ」、「Read/Write」及び「動作」の一例を示す。
【００４８】
表１のニーモニックの欄のplbp.[Ｄ]の[Ｄ]には、第１データ要素ＶＤ１１〜ＶＤ１４及び第２データ要素ＶＤ２１〜ＶＤ２４のデータタイプを示す記号が入る。なお、図８のプロセッサ１の構成は、データ要素ＶＤ１１〜ＶＤ１４が４個であるデータタイプ（ｕ３２，ｓ２３，ｆ３２）の場合の構成を示す。データ要素のビット幅が３２ビット以外の場合のプロセッサ１の構成は、データ要素の数が４個以外の数に変わる。この場合のプロセッサ１の構成は、データ要素の数に合わせて比較器等の数を変えた構成になる。表１のニーモニックの欄の「VRa」「VRb」「VRc」は、使用するベクトルレジスタを指定している。「VRa」は、第１ベクトルレジスタＶＲ１に対応し、「VRb」は、第２ベクトルレジスタＶＲ２に対応し、「VRc」は、第３ベクトルレジスタＶＲ３に対応する。「VRc」には、２進数のデータ要素（第３データ要素ＶＤ３１〜ＶＤ３４）が格納される。そのデータ要素のビット幅は、本実施形態では、VRa及びVRbに格納されるデータ要素（第１データ要素ＶＤ１１〜ＶＤ１４及び第２データ要素ＶＤ２１〜ＶＤ２４）のビット幅と同じである。
【００４９】
表１の「データタイプ」の欄において、「u8」は、符号無し整数又は固定小数点８ビットである。「s8」は、符号有り整数又は固定小数点８ビットである。「f16」は、半精度浮動小数点数１６ビットである。「f32」は、単精度浮動小数点数３２ビットである。「f64」は、倍精度浮動小数点数６４ビットである。「Read/Write」の欄は、VRa〜VRcが読み出しで用いられるか、書き込みで用いられるかを示す。
【００５０】
表１の「動作」の欄は、上記のベクトル命令で実行される処理（比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３）を表している。表１の「動作」の欄のVRc[7:0]等の[7:0]は、ビット位置が０から７までのデータを示す。なお、「sign(…)」の部分が比較処理Ｓ１に対応し、「VRc[…]<<１」の部分がシフト処理Ｓ２に対応し、「||」の部分（ビット論理和）が格納処理Ｓ３に対応する。「動作」の欄では、[Ｄ]がu8の場合、[Ｄ]がs8の場合及び[Ｄ]がu16の場合の動作が記載されている。
【００５１】
本実施形態では、ベクトルレジスタＶＲ１〜ＶＲ３は、１２８ビットのベクトルレジスタである。しかし、ベクトルレジスタＶＲ１〜ＶＲ３のビット幅は、１２８ビットに限定されず、例えば６４ビット、２５６ビット、５１２ビット又は１０２４ビットであってもよい。ベクトルレジスタＶＲ１〜ＶＲ３のビット幅が変われば、その中に格納されるデータ要素の数が変わるだけで、動作の本質は同じである。
【００５２】
ここで、本実施形態と比較例とで、３つの処理Ｓ１〜Ｓ３を実行する時間を比較する。本実施形態では、上述の通り、３つの処理Ｓ１〜Ｓ３を１つのベクトル命令で実行する。比較例では、３つの処理Ｓ１〜Ｓ３をそれぞれ別のベクトル命令で実行する。各処理Ｓ１〜Ｓ３の処理そのものは通常１クロック未満（例えば０．１クロック）であるが、１つのベクトル命令の実行には少なくとも１クロック必要となる。本実施形態では、１つのベクトル命令で３つの処理Ｓ１〜Ｓ３を順に実行するため、３つの処理Ｓ１〜Ｓ３そのものは、ベクトル命令の発行時から０．３クロック（＝３×０．１クロック）経過時に完了し、１つのベクトル命令の実行必要時間の１クロック以内である。よって、３つの処理Ｓ１〜Ｓ３を実行するベクトル命令の実行には、１クロック掛かる。比較例では、１つ目のベクトル命令を発行して１つ目の処理Ｓ１を実行し、次のクロックで２つ目のベクトル命令を発行して２つ目の処理Ｓ２を実行し、更に次のクロックで３つ目のベクトル命令を発行して３つ目の処理Ｓ３を実行する。この結果、比較例では、１つ目のベクトル命令を発行してから３つ目の処理Ｓ３が完了するまでに、３クロック（＝１クロック＋１クロック＋１クロック）掛かる。このように、本実施形態のように、１つのベクトル命令で３つの処理Ｓ１〜Ｓ３を実行させることで、一連の３つの処理Ｓ１〜Ｓ３をより速く実行できる。したがって、ＬＢＰ特徴量を生成する処理をより速く実行できる。
【００５３】
以上、本実施形態に係るプロセッサ１によれば、１つのベクトル命令で、比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３を実行できるため、ＬＢＰ特徴量Ｔ１〜Ｔ４を計算する処理を一層速く実行できる。
【００５４】
（変形例）
以下、上記の実施形態の変形例を説明する。以下の変形例は、組み合わせて実施されてもよい。上記の実施形態は、本開示の様々な実施形態の一つに過ぎない。上記の実施形態は、本開示の目的を達成できれば、設計等に応じて種々の変更が可能である。さらに、上記の実施形態に係る態様は、プロセッサ１で具現化されることに限らない。例えば、プロセッサの制御方法で、上記の実施形態に係る態様が具現化されてもよい。
【００５５】
上記のプロセッサの制御方法は、データが格納される第１レジスタ、第２レジスタ及び第３レジスタを用いて、命令を実行可能な処理を含む。前記命令は、比較処理と、シフト処理と、格納処理と、のうち、前記シフト処理及び前記格納処理の少なくとも一方の処理と、前記比較処理とを実行させる１つの命令である。前記比較処理は、前記第１レジスタに格納された第１データ要素と、前記第２レジスタに格納された第２データ要素とを大小比較して、比較結果データを生成する。前記シフト処理は、前記第３レジスタ内の所定領域が空き領域になるように、前記第３レジスタに格納された第３データ要素をシフトする。前記格納処理は、前記比較結果データを前記所定領域に格納し、前記第３データ要素を、前記所定領域に挿入された前記比較結果データを含むように更新する。
【００５６】
なお、以下の変形例の説明では、上記の実施形態と同じ構成要素については、同じ符号を付して説明を省略する場合がある。
【００５７】
（変形例１）
上記の実施形態では、比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３を１つのベクトル命令で実行するが、比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３のうち、比較処理Ｓ１及び格納処理Ｓ３だけを１つのベクトル命令で実行してもよい。
【００５８】
上記の実施形態では、ベクトル命令を、第２ベクトルレジスタＶＲ２内の第２ベクトルデータＶＤ２を入れ替えながら８回繰り返して実行することで、ＬＢＰ特徴量が生成される。その際、各回のベクトル命令ではシフト処理Ｓ２が実行されるが、１回目のベクトル命令だけ、シフト処理Ｓ２を省略してもよい。この１回目のベクトル命令に対して、本変形例のベクトル命令（すなわち、比較処理Ｓ１及び格納処理Ｓ３を実行する１つのベクトル命令）を用いることができる。
【００５９】
シフト処理Ｓ２は、第３ベクトルレジスタＶＲ３に格納された第３データ要素ＶＤ３１〜ＶＤ３４を左にシフトし、比較結果データＨＤ１〜ＨＤ４を格納するための空き状態の場所（所定領域ｓｍ１〜ｓｍ４）を確保すると共に上記の場所を初期化する処理である。１回目のベクトル命令を実行するときは、第３ベクトルレジスタＶＲ３内の第３データ要素ＶＤ３１〜ＶＤ３４には、必要なデータは含まれていない。このため、シフト処理Ｓ２を省略して、上記の場所に比較結果データＨＤ１〜ＨＤ４を上書きで格納できる。これにより、１回目のベクトル命令のシフト処理Ｓ２を省略できるため、その分、ＬＢＰ特徴量を生成する処理をより一層速く実行できる。
【００６０】
なお、上記のようにベクトル命令を繰り返して実行するとき、２回目以上のベクトル命令に対して、本変形例のベクトル命令を使用してもよい。この場合は、シフト処理Ｓ２を実行するベクトル命令を別に実行してもよい。
【００６１】
本変形例のベクトル命令をプロセッサ１に実装する場合の「ニーモニック」、「データタイプ」、「Read/Write」及び「動作」の一例を示すと、表２になる。
【００６２】
【表２】
2020144480.tif 000004
【００６３】
（変形例２）
上記の実施形態では、第１データ要素ＶＲ１１〜ＶＲ１４及び第２データ要素ＶＲ２１〜ＶＲ２４（すなわち入力画像のデータ）の各々のビット幅と、第３データ要素ＶＤ３１〜ＶＤ３４（すなわちＬＢＰ特徴量）のビット幅とは、互いに同じであるが、互いに異なってもよい。
【００６４】
図９に示すように、第１データ要素ＶＲ１１〜ＶＲ１４及び第２データ要素ＶＲ２１〜ＶＲ２４の各々のビット幅は、第３データ要素ＶＤ３１〜ＶＤ３８のビット幅よりも大きくてもよい。図９の例では、第１データ要素ＶＲ１１〜ＶＲ１４及び第２データ要素ＶＲ２１〜ＶＲ２４の各々のビット幅が１６ビット幅（例えばデータタイプが16uの場合）であり、第３データ要素ＶＤ３１〜ＶＤ３８のビット幅が８ビット幅である。なお、第１から第３ベクトルレジスタＶＲ１〜ＶＲ３は、１２８ビット幅である。
【００６５】
図９の例では、第１ベクトルレジスタＶＲ１には、８個の第１データ要素ＶＤ１１〜ＶＤ１８が格納される。また、第２ベクトルレジスタＶＲ２にも、８個の第２データ要素ＶＤ２１〜ＶＤ２８が格納され、第３ベクトルレジスタＶＲ３にも、８個の第３データ要素ＶＤ３１〜ＶＤ３８が格納される。第３データ要素ＶＤ３１〜ＶＤ３８は、例えば、第３ベクトルレジスタＶＲ３の下位側半分の６４ビット幅の記憶領域に格納される。この場合、第３ベクトルレジスタＶＲ３の上側半分の６４ビットの記憶領域は、使用されず、空きになる。
【００６６】
なお、この場合のベクトル命令をプロセッサ１に実装する場合の「ニーモニック」、「データタイプ」、「Read/Write」及び「動作」の一例を示すと、表３になる。
【００６７】
【表３】
2020144480.tif 000005
【００６８】
表３の「ニーモニック」の欄のplbp8.[Ｄ]の「8」は、VRaに格納されるデータ要素（第１データ要素ＶＤ１１〜ＶＤ１８）またはVRbに格納されるデータ要素（第２データ要素ＶＤ２１〜ＶＤ２８）のビット幅を示す。
【００６９】
なお、図１０に示すように、８個の第３データ要素ＶＤ３１〜ＶＤ３８は、第３ベクトルレジスタＶＲ３の上位側半分の６４ビット幅の記憶領域に格納されてもよい。この場合は、第３ベクトルレジスタＶＲ３の下側半分の６４ビットの記憶領域は、使用されず、空きになる。
【００７０】
なお、図１０の場合のニーモニックをplbp8h.[Ｄ]と表記し、図９の場合のニーモニックをplbp8l.[Ｄ]と表記してもよい。これにより、２つのニーモニック（plbp8h.[Ｄ]、plbp8l.[Ｄ]）のうちのどちらのニーモニックを用いるかによって、第３データ要素ＶＤ３１〜ＶＤ３８を、第３ベクトルレジスタＶＲ３の上位側半分の記憶領域に格納するか、下位側半分の記憶領域に格納するかを選択できる。
【００７１】
また、図１１に示すように、第１データ要素ＶＲ１１〜ＶＲ１４及び第２データ要素ＶＲ２１〜ＶＲ２４の各々のビット幅は、第３データ要素ＶＤ３１〜ＶＤ３８のビット幅よりも小さくもよい。図１１の例では、第１データ要素ＶＲ１１〜ＶＲ１４及び第２データ要素ＶＲ２１〜ＶＲ２４の各々のビット幅が８ビット幅の場合（例えばデータタイプが8uの場合）であり、第３データ要素ＶＤ３１〜ＶＤ３４のビット幅が１６ビット幅である。なお、第１から第３ベクトルレジスタＶＲ１〜ＶＲ３は、１２８ビット幅である。
【００７２】
図１１の例では、第１ベクトルレジスタＶＲ１には、８個の第１データ要素ＶＤ１１〜ＶＤ１８が格納される。また、第２ベクトルレジスタＶＲ２にも、８個の第２データ要素ＶＤ２１〜ＶＤ２８が格納され、第３ベクトルレジスタＶＲ３にも、８個の第３データ要素ＶＤ３１〜ＶＤ３８が格納される。第１データ要素ＶＤ１１〜ＶＤ１８は、例えば、第１ベクトルレジスタＶＲ１の下位側半分の６４ビット幅の記憶領域に格納され、第１ベクトルレジスタＶＲ１の上側半分の６４ビットの記憶領域は、使用されず、空きになる。同様に、第２データ要素ＶＤ２１〜ＶＤ２８も、第２ベクトルレジスタＶＲ２の下位側半分の６４ビット幅の記憶領域に格納され、第２ベクトルレジスタＶＲ２の上側半分の６４ビットの記憶領域は、使用されず、空きになる。
【００７３】
なお、この場合のベクトル命令をプロセッサ１に実装する場合の「ニーモニック」、「データタイプ」、「Read/Write」及び「動作」の一例を示すと、表４になる。
【００７４】
【表４】
2020144480.tif 000006
【００７５】
表４の「ニーモニック」の欄のplbp16.[Ｄ]の「16」は、VRaに格納されるデータ要素（第１データ要素ＶＤ１１〜ＶＤ１８）またはVRbに格納されるデータ要素（第２データ要素ＶＤ２１〜ＶＤ２８）のビット幅を示す。
【００７６】
なお、図１２に示すように、８個の第１データ要素ＶＤ１１〜ＶＤ１８は、第１ベクトルレジスタＶＲ１の上位側半分の６４ビット幅の記憶領域に格納されてもよい。この場合は、第１ベクトルレジスタＶＲ１の下側半分の６４ビットの記憶領域は、使用されず、空きになる。また、８個の第２データ要素ＶＤ２１〜ＶＤ２８も、第２ベクトルレジスタＶＲ２の上位側半分の６４ビット幅の記憶領域に格納されてもよい。この場合は、第２ベクトルレジスタＶＲ２の下側半分の６４ビットの記憶領域は、使用されず、空きになる。
【００７７】
なお、図１２の場合のニーモニックをplbp16h.[Ｄ]と表記し、図１１の場合のニーモニックをplbp16l.[Ｄ]と表記してもよい。これにより、２つのニーモニック（plbp16h.[Ｄ]、plbp16l.[Ｄ]）のうちのどちらのニーモニックを用いるかによって、第１データ要素ＶＤ１１〜ＶＤ１８及び第２データ要素ＶＤ２１〜ＶＤ２８をそれぞれ、第１ベクトルレジスタＶＲ１及び第２ベクトルレジスタＶＲ２の上位側半分の記憶領域から読み出すか、下位側半分の記憶領域から読み出すかを選択できる。
【００７８】
（変形例３）
上記の実施形態では、３×３画素Ｒ１に着目してＬＢＰ特徴量を生成したが、図１３に示すように、５×５画素Ｒ２に着目してＬＢＰ特徴量を生成してもよい。この場合、中心の注目画素Ｐ４に対応する近傍画素として、最外周の１６個の近傍画素Ｐ９〜Ｐ２４を選んでもよい。この場合は、ＬＰＢ特徴量は１６ビットデータになる。
【００７９】
また、注目画素Ｐ４に対応する近傍画素として、最外周の１６個の近傍画素Ｐ９〜Ｐ２４のうち、周方向に１つ置きに並んだ近傍画素Ｐ９，Ｐ１１，Ｐ１３，Ｐ１５，Ｐ１７，Ｐ１９，Ｐ２１、ｐ２３を選んでもよい。この場合は、ＬＢＰ特徴量は８ビットデータになる。
【００８０】
また、注目画素Ｐ４に対応する近傍画素として、注目画素Ｐ４に隣接する８つの近傍画素Ｐ０〜Ｐ８（Ｐ４を除く）と、最外周の１６個の近傍画素Ｐ９〜Ｐ２４とを選んでもよい。この場合は、ＬＢＰ特徴量は２４ビットデータになる。
【００８１】
（変形例４）
上記の実施形態では、比較処理Ｓ１、シフト処理Ｓ２及び格納処理Ｓ３を１つのベクトル命令で実行するが、シフト処理Ｓ２及び格納処理Ｓ３の少なくとも一方と、比較処理Ｓ１とを１つのベクトル命令で実行してもよい。これにより、シフト処理Ｓ２、格納処理及Ｓ３及び比較処理Ｓ１を全て別々の命令で実行する場合と比べて、ＬＢＰ特徴量を生成する処理をより速く実行できる。
【００８２】
なお、比較処理Ｓ１及びシフト処理Ｓ２を１つのベクトル命令で実行する場合、格納処理Ｓ３は別の命令で実行されてもよい。また、比較処理Ｓ１及び格納処理Ｓ３を１つのベクトル命令で実行する場合、シフト処理Ｓ２は別の命令で実行されてもよい。
【００８３】
（その他の変形例）
上記の実施形態では、ＬＢＰ特徴量は、画像に対して生成されたが、画像以外の物理情報（例えば音（例えば音声）に対して生成されてもよい。
【００８４】
上記の実施形態では、複数の注目画素Ｐ４ａ〜Ｐ４ｄに対するＬＢＰ特徴量Ｔ１〜Ｔ４を並列処理で生成するが、１つの注目画素ずつＬＢＰ特徴量を生成してもよい。
【００８５】
（まとめ）
第１の態様に係るプロセッサ（１）では、第１レジスタ（ＶＲ１）に第１データ要素（ＤＶ１１〜ＤＶ１４）が格納され、第２レジスタ（ＶＲ２）に第２データ要素（ＤＶ２１〜ＤＶ２４）が格納され、第３レジスタ（ＶＲ３）に第３データ要素（ＤＶ３１〜ＤＶ３４）が格納される。プロセッサ（１）は、シフト処理（Ｓ２）と格納処理（Ｓ３）との少なくとも一方の処理、及び、比較処理（Ｓ１）、を１つの命令で実行する。シフト処理（Ｓ２）は、第３データ要素（ＤＶ３１〜ＤＶ３４）を、第３レジスタ（ＶＲ３）の所定領域（ｓｍ１〜ｓｍ４）が空き領域になるようにシフトする。格納処理（Ｓ３）は、比較結果データ（ＨＤ１〜ＨＤ４）を所定領域（ｓｍ１〜ｓｍ４）に格納し、第３データ要素（ＤＶ３１〜ＤＶ３４）を、所定領域（ｓｍ１〜ｓｍ４）に格納された比較結果データ（ＨＤ１〜ＨＤ４）を含むように更新する。比較処理（Ｓ１）は、第１データ要素（ＤＶ１１〜ＤＶ１４）と、第２データ要素（ＤＶ２１〜ＤＶ２４）とを大小比較して、比較結果（ＨＤ１〜ＨＤ４）データを生成する。
【００８６】
この構成によれば、１つの命令で、シフト処理（Ｓ２）及び格納処理（Ｓ３）の少なくとも一方の処理と、比較処理（Ｓ１）とを実行させる。このため、シフト処理（Ｓ２）、格納処理（Ｓ３）及び比較処理（Ｓ１）を全て別々の命令で実行する場合と比べて、ＬＢＰ特徴量（Ｔ１〜Ｔ４）を計算する処理をより速く実行できる。
【００８７】
第２の態様に係るプロセッサ（１）は、第１の態様において、第１データ要素（ＶＤ１１〜ＶＤ１４）及び第２データ要素（ＶＤ２１〜ＶＤ２４）は、互いに相関するデータ要素である。
【００８８】
この構成によれば、第１データ要素（ＶＤ１１〜ＶＤ１４）及び第２データ要素（ＶＤ２１〜ＶＤ２４）が互いに相関する場合のＬＢＰ特徴量（Ｔ１〜Ｔ４）を計算できる。
【００８９】
第３の態様に係るプロセッサ（１）は、第１又は第２の態様において、第１レジスタ（ＶＲ１）には、第１データ要素（ＶＤ１１〜ＶＤ１４）が複数格納される。第２レジスタ（ＶＲ２）には、第２データ要素（ＶＤ２１〜ＶＤ２４）が複数格納される。第３レジスタ（ＶＲ３）には、第３データ要素（ＶＤ３１〜ＶＤ３４）が複数格納される。複数の第１データ要素（ＶＤ１１〜ＶＤ１４）、複数の第２データ要素（ＶＤ２１〜ＶＤ２４）、及び複数の第３データ要素（ＶＤ３１〜ＶＤ３４）は、互いに対応する。第３レジスタ（ＶＲ３）は、複数の第３データ要素（ＶＤ３１〜ＶＤ３４）に対応する複数の記憶領域（ｍ３１〜ｍ３４）を有する。第３レジスタ（ＶＲ３）の所定領域（ｓｍ１〜ｓｍ４）は、複数の記憶領域（ｍ３１〜ｍ３４）毎に設けられている。比較処理（Ｓ１）は、複数の第１データ要素（ＶＤ１１〜ＶＤ１４）と、複数の第２データ要素（ＶＤ２１〜ＶＤ２４）とを、対応するデータ要素毎に大小比較して、比較結果データ（ＨＤ１〜ＨＤ４）を複数生成する。複数の比較結果データ（ＨＤ１〜ＨＤ４）は、複数の記憶領域（ｍ３１〜ｍ３４）に対応する。シフト処理（Ｓ２）は、第３レジスタ（ＶＲ３）に格納された複数の第３データ要素（ＶＤ３１〜ＶＤ３４）をそれぞれ、対応する記憶領域（ｍ３１〜ｍ３４）の所定領域（ｓｍ１〜ｓｍ４）が空き領域になるようにシフトする。格納処理（Ｓ３）は、複数の比較結果データ（ＨＤ１〜ＨＤ４）を、対応する記憶領域（ｍ３１〜ｍ３４）の所定領域（ｓｍ１〜ｓｍ４）に格納する。格納処理（Ｓ３）は、複数の第３データ要素（ＶＤ３１〜ＶＤ３４）を、対応する記憶領域（ｍ３１〜ｍ３４）の所定領域（ｓｍ１〜ｓｍ４）に格納された比較結果データ（ＨＤ１〜ＨＤ４）を含むように更新する。
【００９０】
この構成によれば、複数の第１データ要素（ＶＤ１１〜ＶＤ１４）と複数の第２データ要素（ＶＤ２１〜ＶＤ２４）とを、互いに対応するデータ要素毎に並列に処理できる。したがって、複数の第２データ要素（ＶＤ２１〜ＶＤ２４）の各々に対応する比較結果データ（ＨＤ１〜ＨＤ４）を並列処理で計算できる。この結果、ＬＢＰ特徴量（Ｔ１〜Ｔ４）を生成する処理を一層速く実行できる。
【００９１】
第４の態様に係るプロセッサ（１）は、第１〜第３の態様のうちの何れか１つの態様において、上記の１つの命令は、比較処理（Ｓ１）、シフト処理（Ｓ２）及び格納処理（Ｓ３）を実行させる。
【００９２】
この構成によれば、１つの命令で、比較処理（Ｓ１）、シフト処理（Ｓ２）及び格納処理（Ｓ３）を実行できるため、ＬＢＰ特徴量（Ｔ１〜Ｔ４）を生成する処理を一層速く実行できる。
【００９３】
第５の態様に係るプロセッサ（１）は、第１〜第４の態様のうちの何れか１つの態様において、上記の１つの命令は、比較処理（Ｓ１）及び格納処理（Ｓ３）を実行させる。
【００９４】
この構成によれば、上記の１つの命令によってシフト処理（Ｓ２）の実行を省略できる。これにより、シフト処理（Ｓ２）を省略できる分、ＬＢＰ特徴量（Ｔ１〜Ｔ４）を生成する処理をより一層速く実行できる。例えば、比較処理（Ｓ１）、シフト処理（Ｓ２）及び格納処理（Ｓ３）の一連の処理を繰り返す場合を考える。この場合、１回目の一連の処理では、シフト処理（Ｓ２）は不要であるため、この１回目の一連の処理で、この構成の命令を実行することで、不要なシフト処理（Ｓ２）を省略できる。
【００９５】
第６の態様に係るプロセッサ（１）は、第３の態様において、第１データ要素（ＶＤ１１〜ＶＤ１４）及び第２データ要素（ＶＤ２１〜ＶＤ２４）の各々のビット幅は、第３データ要素（ＶＤ３１〜ＶＤ３４）のビット幅と異なる。
【００９６】
この構成によれば、第１データ要素（ＶＤ１１〜ＶＤ１４）及び第２データ要素（ＶＤ２１〜ＶＤ２４）の各々のビット幅は、第３データ要素（ＶＤ３１〜ＶＤ３４）のビット幅に制限されない。このため、第１データ要素（ＶＤ１１〜ＶＤ１４）及び第２データ要素（ＶＤ２１〜ＶＤ２４）のビット幅の自由度を向上できる。
【００９７】
第７の態様に係るプロセッサ（１）の制御方法では、第１レジスタ（ＶＲ１）に第１データ要素（ＤＶ１１〜ＤＶ１４）が格納され、第２レジスタ（ＶＲ２）に第２データ要素（ＤＶ２１〜ＤＶ２４）が格納され、第３レジスタ（ＶＲ３）に第３データ要素（ＤＶ３１〜ＤＶ３４）が格納される。このプロセッサ（１）の制御方法では、プロセッサ（１）は、シフト処理（Ｓ２）と格納処理（Ｓ３）との少なくとも一方の処理、及び、比較処理（Ｓ１）、を１つの命令で実行する。シフト処理（Ｓ２）は、第３データ要素（ＤＶ３１〜ＤＶ３４）を、第３レジスタ（ＶＲ３）の所定領域（ｓｍ１〜ｓｍ４）が空き領域になるようにシフトする。格納処理（Ｓ３）は、比較結果データ（ＨＤ１〜ＨＤ４）を所定領域（ｓｍ１〜ｓｍ４）に格納し、第３データ要素（ＤＶ３１〜ＤＶ３４）を、所定領域（ｓｍ１〜ｓｍ４）に格納された比較結果データ（ＨＤ１〜ＨＤ４）を含むように更新する。比較処理（Ｓ１）は、第１データ要素（ＤＶ１１〜ＤＶ１４）と、第２データ要素（ＤＶ２１〜ＤＶ２４）とを大小比較して、比較結果（ＨＤ１〜ＨＤ４）データを生成する。
【００９８】
この構成によれば、１つの命令で、シフト処理（Ｓ２）及び格納処理（Ｓ３）の少なくとも一方の処理と、比較処理（Ｓ１）とを実行させる。このため、シフト処理（Ｓ２）、格納処理（Ｓ３）及び比較処理（Ｓ１）を全て別々の命令で実行する場合と比べて、ＬＢＰ特徴量（Ｔ１〜Ｔ４）を生成する処理をより速く実行できる。
【符号の説明】
【００９９】
１  プロセッサ
２  処理部
ＨＤ１〜ＨＤ４  比較結果データ
ｓｍ１〜ｓｍ４  所定領域
Ｓ１  比較処理
Ｓ２  シフト処理
Ｓ３  格納処理
Ｔ１〜Ｔ４  ＬＢＰ特徴量
ＶＤ１１〜ＶＤ１４  第１データ要素
ＶＤ２１〜ＶＤ２４  第２データ要素
ＶＤ３１〜ＶＤ３４  第３データ要素
ＶＲ１  第１ベクトルレジスタ（第１レジスタ）
ＶＲ２  第２ベクトルレジスタ（第２レジスタ）
ＶＲ３  第３ベクトルレジスタ（第３レジスタ）
【図１】
2020144480.tif 000007
【図２】
2020144480.tif 000008
【図３】
2020144480.tif 000009
【図４】
2020144480.tif 000010
【図５】
2020144480.tif 000011
【図６】
2020144480.tif 000012
【図７】
2020144480.tif 000013
【図８】
2020144480.tif 000014
【図９】
2020144480.tif 000015
【図１０】
2020144480.tif 000016
【図１１】
2020144480.tif 000017
【図１２】
2020144480.tif 000018
【図１３】
2020144480.tif 000019