(57)【要約】【課題】画像処理および画像認識で多用されるレンジ判断処理を、汎用性の高いハードウェア構成により、効率的に実行するＳＩＭＤプロセッサを実現する。【解決手段】ＳＩＭＤプロセッサ１０００では、レンジ判断演算ユニットＳ１４に２つの値を保持することができる第１レジスタおよび第２レジスタを備えており、この２つの値と、レジスタファイル部から入力されるソースデータの３つの値を用いて、レンジ判断処理の処理対象データ、レンジ判断処理の処理対象範囲を決める２つの境界値を、柔軟に設定することができる。【選択図】図１
2015185152.tif 000002
【特許請求の範囲】
【請求項１】
命令フェッチ処理と、命令デコード処理とを実行するとともに、所定の演算を実行させるためのレンジ制御信号と、レンジ方向設定信号と、第１等価制御信号と、第２等価制御信号とを生成する命令制御部と、
ソースデータを保持するレジスタを含む複数のレジスタを有するレジスタファイル部と、
条件フラグを格納することができ、前記条件フラグに基づいて、条件付き演算を実行するための条件制御信号を生成する条件レジスタ部と、
レンジ判断演算ユニットを含む第１スロットを有する命令実行部と、
を備え、
前記レンジ判断演算ユニットは、
前記レジスタファイル部から、前記ソースデータを入力し、
第１レジスタ値を格納する第１レジスタと、
第２レジスタ値を格納する第２レジスタと、
前記レンジ制御信号に応じて、前記レジスタファイル部から入力した前記ソースデータ、および、前記第２レジスタ値のいずれかを選択するセレクタと、
前記レンジ制御信号と前記レンジ方向設定信号とに基づいて、第１比較制御信号と、第２比較制御信号と、統合制御信号とを生成する制御信号生成部と、
前記制御信号生成部が生成した第１比較制御信号と、前記第１等価制御信号とに基づき、前記セレクタから出力される値と、前記第１レジスタ値とを比較し、比較結果を第１比較データとして取得する第１比較部と、
前記制御信号生成部が生成した第２比較制御信号と、前記第２等価制御信号とに基づき、前記ソースデータと、前記第２レジスタ値とを比較し、比較結果を第２比較データとして取得する第２比較部と、
前記統合制御信号に基づいて、前記第１比較データと前記第２比較データとを統合することで前記条件フラグを取得する統合部と、
を備え、
前記第１レジスタは、前記レンジ制御信号が非アクティブである場合、前記第１レジスタ値を前記ソースデータにより更新し、
前記条件レジスタ部は、前記統合部により取得された前記条件フラグを格納する、
ＳＩＭＤプロセッサ。
【請求項２】
前記命令制御部は、
前記命令実行部に対して、レンジ判断命令を発行する場合、
前記レンジ判断演算ユニットに対して、前記条件フラグを取得する処理を実行させるための前記レンジ制御信号と、前記レンジ方向設定信号と、前記第１等価制御信号と、前記第２等価制御信号とを出力し、
前記レンジ判断演算ユニットに、前記条件フラグを取得する処理を実行させる、
請求項１に記載のＳＩＭＤプロセッサ。
【請求項３】
（１）ヒストグラム算出処理を実行する場合であって、処理対象データが、ヒストグラム算出するための所定のビンの範囲に含まれているか否かを判断する場合、
前記命令制御部は、前記レンジ制御信号の信号値を「０」に設定し、
前記セレクタは、前記レンジ制御信号に基づいて、前記第２レジスタ値を選択し、
（２）処理対象データが、前記第１レジスタ値および前記第２レジスタ値により規定される範囲内であるか否かを判断する場合、
前記命令制御部は、前記レンジ制御信号の信号値を「１」に設定し、
前記セレクタは、前記レンジ制御信号に基づいて、前記レジスタファイル部から入力した前記ソースデータを選択する、
請求項１又は２に記載のＳＩＭＤプロセッサ。
【請求項４】
ヒストグラム算出処理を実行する場合であって、処理対象データが、ヒストグラム算出するための所定のビンの範囲に含まれているか否かを判断する場合、
（１）前記処理対象データが前記ビンの範囲内であるとき、前記条件フラグの値が「１」に設定されるように、前記命令制御部は、前記レンジ方向設定信号の信号値を「０」に設定し、
（２）前記処理対象データが前記ビンの範囲外であるとき、前記条件フラグの値が「１」に設定されるように、前記命令制御部は、前記レンジ方向設定信号の信号値を「１」に設定する、
請求項１から３のいずれかに記載のＳＩＭＤプロセッサ。
【請求項５】
（１）前記命令制御部により生成される前記第１等価制御信号の信号値が「１」に設定されている場合、
前記レンジ判断演算ユニットは、処理対象データに対するレンジ判断処理において、前記処理対象データが、前記レンジ判断処理の範囲を規定する２つの境界値のうちの小さい方の値である第１境界値と等しい場合、前記条件フラグの値を「１」にして出力し、
（２）前記命令制御部により生成される前記第２等価制御信号の信号値が「１」に設定されている場合、
前記レンジ判断演算ユニットは、処理対象データに対するレンジ判断処理において、前記処理対象データが、前記レンジ判断処理の範囲を規定する２つの境界値のうちの大きい方の値である第２境界値と等しい場合、前記条件フラグの値を「１」にして出力する、
請求項１から４のいずれかに記載のＳＩＭＤプロセッサ。
【請求項６】
前記制御信号生成部は、
（１）前記レンジ制御信号の信号値が「１」であり、前記レンジ方向設定信号の信号値が「１」である場合、前記第１比較制御信号の信号値を「１」とし、それ以外の場合、前記第１比較制御信号の信号値を「０」とし、
（２）前記レンジ制御信号の信号値が「１」であり、前記レンジ方向設定信号の信号値が「０」である場合、前記第２比較制御信号の信号値を「１」とし、それ以外の場合、前記第２比較制御信号の信号値を「０」とし、
（３）前記レンジ制御信号の信号値が「１」であり、前記レンジ方向設定信号の信号値が「１」である場合、前記統合制御信号の信号値を「１」とし、それ以外の場合、前記統合制御信号の信号値を「０」とする、
請求項１から５のいずれかに記載のＳＩＭＤプロセッサ。
【請求項７】
前記第１比較部は、
（１）前記第１比較制御信号の信号値が「０」であり、前記第１等価制御信号の信号値が「０」である場合、前記第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１＞Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１≦Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「０」にして出力し、
（２）前記第１比較制御信号の信号値が「０」であり、前記第１等価制御信号の信号値が「１」である場合、前記第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１≧Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１＜Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「０」にして出力し、
（３）前記第１比較制御信号の信号値が「１」であり、前記第１等価制御信号の信号値が「０」である場合、前記第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１＜Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１≧Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「０」にして出力し、
（４）前記第１比較制御信号の信号値が「１」であり、前記第１等価制御信号の信号値が「１」である場合、前記第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１≦Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１＞Ｄｉｎ１２であるときは、前記第１比較部からの出力データＤ１ｏｕｔを「０」にして出力する、
請求項６に記載のＳＩＭＤプロセッサ。
【請求項８】
前記第２比較部は、
（１）前記第２比較制御信号の信号値が「０」であり、前記第２等価制御信号の信号値が「０」である場合、前記第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１＞Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１≦Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「０」にして出力し、
（２）前記第２比較制御信号の信号値が「０」であり、前記第２等価制御信号の信号値が「１」である場合、前記第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１≧Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１＜Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「０」にして出力し、
（３）前記第２比較制御信号の信号値が「１」であり、前記第２等価制御信号の信号値が「０」である場合、前記第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１＜Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１≧Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「０」にして出力し、
（４）前記第１比較制御信号の信号値が「１」であり、前記第２等価制御信号の信号値が「１」である場合、前記第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１≦Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１＞Ｄｉｎ２２であるときは、前記第２比較部からの出力データＤ２ｏｕｔを「０」にして出力する、
請求項６または７に記載のＳＩＭＤプロセッサ。
【請求項９】
前記統合部は、
前記第１比較部からの出力と前記第２比較部からの出力とを入力とし、前記第１比較部からの出力と前記第２比較部からの出力との論理積をとるＡＮＤゲートと、
前記第１比較部からの出力と前記第２比較部からの出力とを入力とし、前記第１比較部からの出力と前記第２比較部からの出力との論理和をとるＯＲゲートと、
前記ＡＮＤゲートの出力、および、前記ＯＲゲートの出力のいずれか一方を選択して出力する第２セレクタであって、前記統合制御信号の信号値が「０」である場合、前記ＡＮＤゲートの出力を選択して出力し、前記統合制御信号の信号値が「１」である場合、前記ＯＲゲートの出力を選択して出力する前記第２セレクタと、
を備える請求項６から８のいずれかに記載のＳＩＭＤプロセッサ。
【請求項１０】
ヒストグラム算出処理を実行する場合であって、処理対象データが、ヒストグラム算出するための所定のビンの範囲に含まれているか否かを判断する場合、
前記命令制御部は、レンジ判断命令を前記命令実行部に対して発行する前に、ヒストグラムの下限値を前記第１レジスタの前記第１レジスタ値に設定し、前記処理対象データを前記第２レジスタの前記第２レジスタ値に設定する書き込み命令を、前記命令実行部に対して発行する、
請求項１から９のいずれかに記載のＳＩＭＤプロセッサ。
【請求項１１】
処理対象データが、前記第１レジスタ値および前記第２レジスタ値により規定される範囲内であるか否かを判断する場合、
前記命令制御部は、レンジ判断命令を前記命令実行部に対して発行する前に、前記レンジ判断命令の判断対象となる範囲の下限値を前記第１レジスタの前記第１レジスタ値に設定し、前記レンジ判断命令の判断対象となる範囲の上限値を前記第２レジスタの前記第１レジスタ値に設定する書き込み命令を、前記命令実行部に対して発行する、
請求項１から１０のいずれかに記載のＳＩＭＤプロセッサ。
【請求項１２】
前記命令実行部は、
前記レジスタファイル部からの出力データを入力するためのＮ×２ビット（Ｎ：自然数）の入力ポートと、前記レジスタファイル部にデータを出力するためのＮビットの出力ポートと、を備える第２スロットと、
前記レジスタファイル部からの出力データを入力するためのＮ×２ビット（Ｎ：自然数）の入力ポートと、前記レジスタファイル部にデータを出力するためのＮビットの出力ポートと、を備える第３スロットと、
をさらに備え、
前記第１スロットは、
前記レジスタファイル部からの出力データを入力するためのＮ×２ビット（Ｎ：自然数）の入力ポートと、
前記レジスタファイル部にデータを出力するためのＮビットの出力ポートと、
前記命令制御部から前記命令実行部に対して、前記第１レジスタおよび前記第２レジスタの少なくとも一方にデータを書き込むための書き込み命令が発行された場合、当該書き込み命令を実行するための書き込み演算ユニットと、
をさらに備え、
前記第２スロットは、
ロード／ストア命令を実行するためのロード／ストア・ユニットを備え、
前記第３スロットは、
前記条件フラグがアクティブである場合、加算処理を実行し、前記条件フラグがアクティブでない場合、加算処理を実行しない条件付き加算ユニットを備える、
請求項１から１１のいずれかに記載のＳＩＭＤプロセッサ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＶＬＩＷ（Ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）アーキテクチャを採用するＳＩＭＤ（ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）プロセッサに関する。
【背景技術】
【０００２】
画像認識処理に必要な幅広い機能変更に対応することができる画像プロセッサが開発されている。
【０００３】
例えば、特許文献１には、輝度勾配ヒストグラム（ＨＯＧ（Ｈｉｓｔｏｇｒａｍ  ｏｆ  Ｏｒｉｅｎｔｅｄ  Ｇｒａｄｉｅｎｔｓ））を用いて画像認識処理を実行する画像プロセッサについての開示がある。
【０００４】
このような輝度勾配ヒストグラムＨＯＧを用いた画像認識処理を実行する場合、例えば、以下の（１）〜（３）の処理を実行することで、輝度勾配ヒストグラムＨＯＧを取得する。
（１）処理対象画素である注目画素（注目画素の座標を（ｘ，ｙ）とし、その画素値をＩ（ｘ，ｙ）と表記する）ごとに、注目画素と、当該注目画素と左右に隣接する画素との間のＸ方向の勾配強度ｄｘ（ｘ，ｙ）が、
ｄｘ（ｘ，ｙ）＝Ｉ（ｘ＋１，ｙ）−Ｉ（ｘ−１，ｙ）
により算出される。
【０００５】
また、注目画素と、当該注目画素と上下に隣接する画素との間のＹ方向の勾配強度ｄｙ（ｘ，ｙ）が、
ｄｙ（ｘ，ｙ）＝Ｉ（ｘ，ｙ＋１）−Ｉ（ｘ，ｙ−１）
により算出される。
（２）次に、Ｙ方向の勾配強度ｄｙ（ｘ，ｙ）をＸ方向の勾配強度ｄｘ（ｘ，ｙ）で除算して取得した値に基づいて、注目画素の勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）が、
ｇｒａｄｉｅｎｔ（ｘ，ｙ）＝ａｔａｎ（ｄｙ（ｘ，ｙ）／ｄｘ（ｘ，ｙ））
ａｔａｎ（）：逆正接関数（アークタンジェント）
により、算出される。
（３）そして、算出された勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）と、ｄｘ（ｘ，ｙ）およびｄｙ（ｘ，ｙ）の符号（正負）とに基づいて、注目画素の勾配ベクトル方向が決定され、決定された勾配ベクトル方向に基づいて、輝度ヒストグラムが生成される。
【０００６】
例えば、図１０に示すように、π／４単位で８つに分割したビンＢＩＮ０〜７を設定し、注目画素の勾配ベクトル方向が含まれるビンを決定し、当該ビンに含まれると決定された頻度をカウント（累積加算）する。これを、所定の画像領域（例えば、Ｎ画素×Ｍ画素（Ｎ，Ｍ：自然数）からなる画像領域）に含まれる全ての画素について、実行することで、当該所定の画像領域の輝度勾配ヒストグラムＨＯＧが取得される。
【０００７】
このようにして取得された輝度勾配ヒストグラムＨＯＧを用いて、画像処理プロセッサは、例えば、画像認識処理を実行する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１２−２２１１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上記の輝度勾配ヒストグラムＨＯＧを取得する処理は、例えば、画像中の全画素を処理対象として実行されるため、データ並列処理により処理を実行することが好ましい。つまり、このような処理は、ＳＩＭＤプロセッサ向きの処理であると言える。
【００１０】
しかしながら、輝度勾配ヒストグラムＨＯＧを取得する処理では、勾配ベクトル方向を決定するために、勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）に応じた条件分岐処理を実行する必要がある。このような条件分岐処理をＳＩＭＤプロセッサで実行する場合、条件フラグを用いて処理を実行することが考えられる。ＳＩＭＤプロセッサでは、各プロセッサ・エレメント（ＰＥ）は、同じ命令を実行することしかできないため、データ値に応じて処理内容を変更する必要がある場合、プロセッサ・エレメント（ＰＥ）ごとに、条件フラグを設定し、設定された条件フラグに応じて、各プロセッサ・エレメントが、処理を実行する必要がある。つまり、ＳＩＭＤプロセッサでは、条件フラグを用いて条件分岐処理を行う場合、非常に煩雑な処理を数多く実行する必要があり、その結果、演算処理効率が低下する。
【００１１】
このような課題を解決するために、特許文献１の技術では、輝度勾配ヒストグラムＨＯＧを取得する処理を専用に実行する演算器（ハードウェア）を追加し、当該演算器で、輝度勾配ヒストグラムＨＯＧを取得する処理を実行することで演算処理効率の低下を防止している。
【００１２】
しかしながら、特許文献１の技術では、輝度勾配ヒストグラムＨＯＧのビン数、および、各ビンの範囲（角度範囲）が固定されており、ビン数や各ビンの範囲（角度範囲）を可変にすることができない。また、輝度勾配ヒストグラムＨＯＧを取得する処理を実行する演算器（ハードウェア）は、当該処理の専用回路として構成されているため、他の用途に使用することができない。特許文献１の技術では、例えば、輝度勾配ヒストグラムＨＯＧを取得する処理で使用されるレンジ判断処理のための回路を、他の用途で使用されるレンジ判断処理において使用することができない。このレンジ判断処理は、画像処理や画像認識処理において多用されるため、汎用性の高いハードウェアとして、ＳＩＭＤプロセッサ内に構成されることが好ましい。
【００１３】
そこで、本発明は、上記課題に鑑み、画像処理および画像認識で多用されるレンジ判断処理を、効率的に実行可能なハードウェア構成を有するＳＩＭＤプロセッサを実現することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、第１の発明は、命令制御部と、レジスタファイル部と、条件レジスタ部と、命令実行部と、第１レジスタと、第２レジスタと、セレクタと、制御信号生成部と、第１比較部と、第２比較部と、統合部と、を備えるＳＩＭＤプロセッサである。
【００１５】
命令制御部は、命令フェッチ処理と、命令デコード処理とを実行するとともに、所定の演算を実行させるためのレンジ制御信号と、レンジ方向設定信号と、第１等価制御信号と、第２等価制御信号とを生成する。
【００１６】
レジスタファイル部は、ソースデータを保持するレジスタを含む複数のレジスタを有する。
【００１７】
条件レジスタ部は、条件フラグを格納することができ、条件フラグに基づいて、条件付き演算を実行するための条件制御信号を生成する。
【００１８】
命令実行部は、レンジ判断演算ユニットを含む第１スロットを有する。
【００１９】
そして、レンジ判断演算ユニットは、レジスタファイル部から、ソースデータを入力する。また、レンジ判断演算ユニットは、第１レジスタと、第２レジスタと、セレクタと、制御信号生成部と、第１比較部と、第２比較部と、統合部と、を備える。
【００２０】
第１レジスタは、第１レジスタ値を格納する。
【００２１】
第２レジスタは、第２レジスタ値を格納する。
【００２２】
セレクタは、レンジ制御信号に応じて、レジスタファイル部から入力したソースデータ、および、第２レジスタ値のいずれかを選択する。
【００２３】
制御信号生成部は、レンジ制御信号とレンジ方向設定信号とに基づいて、第１比較制御信号と、第２比較制御信号と、統合制御信号とを生成する。
【００２４】
第１比較部は、制御信号生成部が生成した第１比較制御信号と、第１等価制御信号とに基づき、セレクタから出力される値と、第１レジスタ値とを比較し、比較結果を第１比較データとして取得する。
【００２５】
第２比較部は、制御信号生成部が生成した第２比較制御信号と、第２等価制御信号とに基づき、ソースデータと、第２レジスタ値とを比較し、比較結果を第２比較データとして取得する。
【００２６】
統合部は、統合制御信号に基づいて、第１比較データと第２比較データとを統合することで条件フラグを取得する。
【００２７】
第１レジスタは、レンジ制御信号が非アクティブである場合、第１レジスタ値をソースデータにより更新する。
【００２８】
条件レジスタ部は、統合部により取得された条件フラグを格納する。
【００２９】
このＳＩＭＤプロセッサでは、命令実行部のレンジ判断演算ユニットに２つの値を保持することができる第１レジスタおよび第２レジスタを備えており、この２つの値と、レジスタファイル部から入力されるソースデータの３つの値を用いて、レンジ判断処理の処理対象データ、レンジ判断処理の処理対象範囲を決める２つの境界値を、柔軟に設定することができる。
【００３０】
そして、このＳＩＭＤプロセッサでは、レンジ判断演算ユニットに、２つの比較部である第１比較部と第２比較部とを備えており、レンジ制御信号と、レンジ方向設定信号と、第１等価制御信号と、第２等価制御信号とにより、比較対象データ、および、比較範囲を柔軟に変更することができ、処理対象データが、設定された範囲内に含まれるか否かの判定結果を、条件フラグＣＦとして出力することができる。
【００３１】
さらに、このＳＩＭＤプロセッサでは、第１レジスタの第１レジスタ値は、レンジ制御信号が非アクティブである場合、第１レジスタ値をソースデータにより更新されるので、レンジ判断処理の範囲を１サイクル毎に変更することも容易に可能となる。その結果、このＳＩＭＤプロセッサでは、例えば、ヒストグラム算出処理のレンジ判断処理（処理対象データが各ビンに含まれるか否かの判断処理）を効率良く実行することができる。
【００３２】
したがって、このＳＩＭＤプロセッサでは、画像処理および画像認識で多用されるレンジ判断処理を、汎用性の高いハードウェア構成により、効率的に実行することができる。
【００３３】
なお、「非アクティブ」とは、正論理では、「０」に相当する値であり、負論理では、「１」に相当する値である。そして、「アクティブ」とは、正論理では、「１」に相当する値であり、負論理では、「０」に相当する値である。
【００３４】
第２の発明は、第１の発明であって、命令制御部は、命令実行部に対して、レンジ判断命令を発行する場合、レンジ判断演算ユニットに対して、条件フラグを取得する処理を実行させるためのレンジ制御信号と、レンジ方向設定信号と、第１等価制御信号と、第２等価制御信号とを出力し、レンジ判断演算ユニットに、条件フラグを取得する処理を実行させる。
【００３５】
これにより、このＳＩＭＤプロセッサでは、命令制御部が、命令実行部に対して、レンジ判断命令を発行することで、レンジ判断演算ユニットに、条件フラグを取得する処理を実行させることができる。
【００３６】
第３の発明は、第１または第２の発明であって、
（１）ヒストグラム算出処理を実行する場合であって、処理対象データが、ヒストグラム算出するための所定のビンの範囲に含まれているか否かを判断する場合、命令制御部は、レンジ制御信号の信号値を「０」に設定し、セレクタは、レンジ制御信号に基づいて、第２レジスタ値を選択する。
（２）処理対象データが、第１レジスタ値および第２レジスタ値により規定される範囲内であるか否かを判断する場合、命令制御部は、レンジ制御信号の信号値を「１」に設定し、セレクタは、レンジ制御信号に基づいて、レジスタファイル部から入力したソースデータを選択する。
【００３７】
これにより、このＳＩＭＤプロセッサでは、レンジ制御信号の信号値を設定することで、（１）ヒストグラム算出処理のレンジ判断処理のように、サイクルごとに、レンジ判断処理の範囲を変更する処理と、（２）一定期間、レンジ判断処理の範囲を固定にして、実行されるレンジ判断処理との両方を、同じハードウェア構成で実行することができる。
【００３８】
なお、信号値の「１」、「０」は、論理値であり、例えば、正論理では、所定のレベル以上の信号（Ｈ信号）を「１」に、所定のレベル未満の信号（Ｌ信号）を「０」に対応づける、あるいは、負論理では、所定のレベル以上の信号（Ｈ信号）を「０」に、所定のレベル未満の信号（Ｌ信号）を「１」に対応づけることで実現される。
【００３９】
第４の発明は、第１から第３のいずれかの発明であって、ヒストグラム算出処理を実行する場合であって、処理対象データが、ヒストグラム算出するための所定のビンの範囲に含まれているか否かを判断する場合、
（１）処理対象データがビンの範囲内であるとき、条件フラグの値が「１」に設定されるように、命令制御部は、レンジ方向設定信号の信号値を「０」に設定し、
（２）処理対象データがビンの範囲外であるとき、条件フラグの値が「１」に設定されるように、命令制御部は、レンジ方向設定信号の信号値を「１」に設定する。
【００４０】
これにより、このＳＩＭＤプロセッサでは、レンジ方向設定信号の信号値により、処理対象データが範囲内であるときに条件フラグの値を「１」にするか、あるいは、処理対象データが範囲外であるときに条件フラグの値を「１」にするか、を選択することができる。
【００４１】
第５の発明は、第１から第４のいずれかの発明であって、
（１）命令制御部により生成される第１等価制御信号の信号値が「１」に設定されている場合、レンジ判断演算ユニットは、処理対象データに対するレンジ判断処理において、処理対象データが、レンジ判断処理の範囲を規定する２つの境界値のうちの小さい方の値である第１境界値と等しい場合、条件フラグの値を「１」にして出力する。
（２）命令制御部により生成される第２等価制御信号の信号値が「１」に設定されている場合、レンジ判断演算ユニットは、処理対象データに対するレンジ判断処理において、処理対象データが、レンジ判断処理の範囲を規定する２つの境界値のうちの大きい方の値である第２境界値と等しい場合、条件フラグの値を「１」にして出力する。
【００４２】
これにより、このＳＩＭＤプロセッサでは、第１等価制御信号および／または第２等価制御信号により、処理対象データがレンジ判断処理の範囲を規定する境界値と等しい場合に、条件フラグを「１」として出力するか否かを設定することができる。
【００４３】
第６の発明は、第１から第５のいずれかの発明であって、制御信号生成部は、
（１）レンジ制御信号の信号値が「１」であり、レンジ方向設定信号の信号値が「１」である場合、第１比較制御信号の信号値を「１」とし、それ以外の場合、第１比較制御信号の信号値を「０」とし、
（２）レンジ制御信号の信号値が「１」であり、レンジ方向設定信号の信号値が「０」である場合、第２比較制御信号の信号値を「１」とし、それ以外の場合、第２比較制御信号の信号値を「０」とし、
（３）レンジ制御信号の信号値が「１」であり、レンジ方向設定信号の信号値が「１」である場合、統合制御信号の信号値を「１」とし、それ以外の場合、統合制御信号の信号値を「０」とする。
【００４４】
これにより、このＳＩＭＤプロセッサでは、上記条件により、各種制御信号を生成する制御信号発生部を実現することができる。
【００４５】
第７の発明は、第６の発明である。
（１）第１比較部は、第１比較制御信号の信号値が「０」であり、第１等価制御信号の信号値が「０」である場合、第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１＞Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１≦Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「０」にして出力する。
（２）第１比較部は、第１比較制御信号の信号値が「０」であり、第１等価制御信号の信号値が「１」である場合、第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１≧Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１＜Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「０」にして出力する。
（３）第１比較部は、第１比較制御信号の信号値が「１」であり、第１等価制御信号の信号値が「０」である場合、第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１＜Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１≧Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「０」にして出力する。
（４）第１比較部は、第１比較制御信号の信号値が「１」であり、第１等価制御信号の信号値が「１」である場合、第１比較部に入力される第１入力データＤｉｎ１１および第２入力データＤｉｎ１２が、Ｄｉｎ１１≦Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「１」にして出力し、Ｄｉｎ１１＞Ｄｉｎ１２であるときは、第１比較部からの出力データＤ１ｏｕｔを「０」にして出力する。
【００４６】
これにより、このＳＩＭＤプロセッサでは、上記条件により、比較結果を示す信号を生成する第１比較部を実現することができる。
【００４７】
第８の発明は、第６または第７の発明である。
（１）第２比較部は、第２比較制御信号の信号値が「０」であり、第２等価制御信号の信号値が「０」である場合、第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１＞Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１≦Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「０」にして出力する。
（２）第２比較部は、第２比較制御信号の信号値が「０」であり、第２等価制御信号の信号値が「１」である場合、第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１≧Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１＜Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「０」にして出力する。
（３）第２比較部は、第２比較制御信号の信号値が「１」であり、第２等価制御信号の信号値が「０」である場合、第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１＜Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１≧Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「０」にして出力する。
（４）第２比較部は、第１比較制御信号の信号値が「１」であり、第２等価制御信号の信号値が「１」である場合、第２比較部に入力される第１入力データＤｉｎ２１および第２入力データＤｉｎ２２が、Ｄｉｎ２１≦Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「１」にして出力し、Ｄｉｎ２１＞Ｄｉｎ２２であるときは、第２比較部からの出力データＤ２ｏｕｔを「０」にして出力する。
【００４８】
これにより、このＳＩＭＤプロセッサでは、上記条件により、比較結果を示す信号を生成する第２比較部を実現することができる。
【００４９】
第９の発明は、第６から第８のいずれかの発明であって、統合部は、ＡＮＤゲートと、ＯＲゲートと、第２セレクタと、を備える。
【００５０】
ＡＮＤゲートは、第１比較部からの出力と第２比較部からの出力とを入力とし、第１比較部からの出力と第２比較部からの出力との論理積をとる。
【００５１】
ＯＲゲートは、第１比較部からの出力と第２比較部からの出力とを入力とし、第１比較部からの出力と第２比較部からの出力との論理和をとる。
【００５２】
第２セレクタは、ＡＮＤゲートの出力、および、ＯＲゲートの出力のいずれか一方を選択して出力する第２セレクタであって、統合制御信号の信号値が「０」である場合、ＡＮＤゲートの出力を選択して出力し、統合制御信号の信号値が「１」である場合、ＯＲゲートの出力を選択して出力する。
【００５３】
これにより、このＳＩＭＤプロセッサでは、上記条件により、統合制御信号を生成する統合部を実現することができる。
【００５４】
第１０の発明は、第１から第９のいずれかの発明であって、ヒストグラム算出処理を実行する場合であって、処理対象データが、ヒストグラム算出するための所定のビンの範囲に含まれているか否かを判断する場合、命令制御部は、レンジ判断命令を命令実行部に対して発行する前に、ヒストグラムの下限値を第１レジスタの第１レジスタ値に設定し、処理対象データを第２レジスタの第２レジスタ値に設定する書き込み命令を、命令実行部に対して発行する。
【００５５】
これにより、このＳＩＭＤプロセッサでは、レンジ判断処理を実行する前に、書き込み命令を発行し、レンジ判断処理に用いられる境界値を、第１レジスタ値、および／または、第２レジスタ値に設定することができる。
【００５６】
第１１の発明は、第１から第１０のいずれかの発明であって、処理対象データが、第１レジスタ値および第２レジスタ値により規定される範囲内であるか否かを判断する場合、命令制御部は、レンジ判断命令を命令実行部に対して発行する前に、レンジ判断命令の判断対象となる範囲の下限値を第１レジスタの第１レジスタ値に設定し、レンジ判断命令の判断対象となる範囲の上限値を第２レジスタの第１レジスタ値に設定する書き込み命令を、命令実行部に対して発行する。
【００５７】
これにより、このＳＩＭＤプロセッサでは、レンジ判断処理を実行する前に、書き込み命令を発行し、レンジ判断処理に用いられる境界値を、第１レジスタ値、および／または、第２レジスタ値に設定することができる。
【００５８】
第１２の発明は、第１から第１１のいずれかの発明であって、命令実行部は、第２スロットと、第３スロットとをさらに備える。
【００５９】
第２スロットは、レジスタファイル部からの出力データを入力するためのＮ×２ビット（Ｎ：自然数）の入力ポートと、レジスタファイル部にデータを出力するためのＮビットの出力ポートと、を備える。
【００６０】
第３スロットは、レジスタファイル部からの出力データを入力するためのＮ×２ビット（Ｎ：自然数）の入力ポートと、レジスタファイル部にデータを出力するためのＮビットの出力ポートと、を備える。
【００６１】
また、第１スロットは、レジスタファイル部からの出力データを入力するためのＮ×２ビット（Ｎ：自然数）の入力ポートと、レジスタファイル部にデータを出力するためのＮビットの出力ポートと、命令制御部から命令実行部に対して、第１レジスタおよび前記第２レジスタの少なくとも一方にデータを書き込むための書き込み命令が発行された場合、当該書き込み命令を実行するための書き込み演算ユニットと、を備える。
【００６２】
第２スロットは、ロード／ストア命令を実行するためのロード／ストア・ユニットを備える。
【００６３】
第３スロットは、条件フラグがアクティブである場合、加算処理を実行し、条件フラグがアクティブでない場合、加算処理を実行しない条件付き加算ユニットを備える。
【００６４】
これにより、このＳＩＭＤプロセッサでは、レンジ判断処理を効率良く実行することができる。つまり、このＳＩＭＤプロセッサでは、レンジ判断処理を行うスロットと、データのロード／ストア処理を行うスロットと、条件付き演算処理を行うスロットとが、異なるようにできるため、並列処理の効率を上げることができる。その結果、このＳＩＭＤプロセッサでは、レンジ判断処理のような条件付き判断処理の演算効率を向上させることができる。
【発明の効果】
【００６５】
本発明によれば、画像処理および画像認識で多用されるレンジ判断処理を、効率的に実行可能なハードウェア構成を有するＳＩＭＤプロセッサを実現することができる。
【図面の簡単な説明】
【００６６】
【図１】第１実施形態に係るＳＩＭＤプロセッサ１０００の概略構成図。
【図２】レンジ判断演算ユニットＳ３４の構成例（一例）を示す図。
【図３】レンジ判断演算ユニットＳ３４の制御信号生成部３０３の構成（一例）を示す図。
【図４】レンジ判断演算ユニットＳ３４の第１比較部３０５の構成（一例）を示す図。
【図５】レンジ判断演算ユニットＳ３４の統合部３０７の構成（一例）を示す図。
【図６】輝度勾配ヒストグラムを生成するための命令スケジュールについて説明するための図。
【図７】パーティクルフィルタ処理について説明するための図。
【図８】パーティクルフィルタ処理におけるレンジ判断処理の命令スケジュールを説明するための図。
【図９】ＳＩＭＤプロセッサ１０００において、制御信号ｒａｎｇｅ、レンジ方向設定信号ｄｉｒ、第１等価制御信号ｅｑ１、および、第２等価制御信号ｅｑ２と、レンジ判断演算ユニットＳ３４が条件フラグＣＦを「１」として出力する条件との関係図。
【図１０】輝度勾配ヒストグラムを算出するときに用いる８分割ビンＢＩＮ０〜７について説明刷るための図。
【発明を実施するための形態】
【００６７】
［第１実施形態］
第１実施形態について、図面を参照しながら、以下、説明する。
【００６８】
＜１．１：ＳＩＭＤプロセッサの構成＞
図１は、第１実施形態に係るＳＩＭＤプロセッサ１０００の概略構成図である。
【００６９】
ＳＩＭＤプロセッサ１０００は、Ｎビット（Ｎ：自然数）単位の演算、および／または、２×Ｎビット単位の演算を行うプロセッサである。
【００７０】
なお、以下では、説明便宜のため、Ｎ＝１６、つまり、ＳＩＭＤプロセッサ１０００が、１６ビット単位の演算および／または３２ビット単位の演算を行うプロセッサである場合について、説明する。
【００７１】
ＳＩＭＤプロセッサ１０００は、図１に示すように、命令制御部１と、レジスタファイル部２と、命令実行部３と、条件レジスタ部４と、命令メモリＭ１と、データメモリＭ２とを備える。
【００７２】
命令制御部１は、命令メモリＭ１から命令を読み出し（命令フェッチ処理を行い）、読み出した命令をデコードする（命令デコード処理を行う）。そして、命令制御部１は、命令デコード処理の結果に基づいて、レジスタファイル部２を制御するための制御信号Ｃｔｌ１を生成し、生成した制御信号Ｃｔｌ１をレジスタファイル部２に出力する。
【００７３】
また、命令制御部１は、命令デコード処理の結果に基づいて、命令実行部３を制御するための制御信号Ｃｔｌ２を生成し、生成した制御信号Ｃｔｌ２を命令実行部３に出力する。
【００７４】
レジスタファイル部２は、複数のレジスタを有しており、制御信号Ｃｔｌ１に基づいて、所定のレジスタのデータを命令実行部３の所定のスロットに出力する。また、レジスタファイル部２は、制御信号Ｃｔｌ１に基づいて、命令実行部３から出力されるデータを、所定のレジスタに入力されるように制御する。
【００７５】
命令実行部３は、１サイクル（１クロックサイクル）で複数の命令を実行するために、１サイクルで同時に演算可能な複数の命令スロットを備える。以下では、説明便宜のため、命令スロット数が「３」である場合について説明する。
【００７６】
命令実行部３は、図１に示すように、３つのスロット、すなわち、第１スロットＳ１、第２スロットＳ２、および、第３スロットＳ３を有している。
【００７７】
第３スロットＳ３は、データメモリＭ２に対して１６ビットのデータのロード／ストアを行うロード／ストアユニットＳ３１を備える。
【００７８】
第２スロットＳ２は、１６ビットデータの条件付き加算処理を行う条件付き加算ユニットＳ２１と、乱数を生成する演算を行う乱数生成ユニットＳ２２と、２つの１６ビットのデータを乗算する処理を行う乗算ユニットＳ２３と、を備える。なお、「条件付き加算処理」は、条件付き加減算処理あるいは条件付き減算処理を含む概念である（以下、同様）。
【００７９】
第１スロットＳ１は、１６ビットデータの加算処理を行う加算ユニットＳ１１と、１６ビットデータに対して論理演算を行う論理演算ユニットＳ１２と、データ書き込み演算ユニットＳ１３と、レンジ判断処理を行うレンジ判断演算ユニットＳ１４と、を備える。なお、「加算処理」は、加減算処理あるいは減算処理を含む概念である（以下、同様）。
【００８０】
ここで、レンジ判断演算ユニットＳ１４の構成例（一例）について、図２〜図５を用いて説明する。
【００８１】
図２は、レンジ判断演算ユニットＳ１４の構成例（一例）を示す図であり、命令制御部１と、レジスタファイル部２と、条件レジスタ部４と、レンジ判断演算ユニットＳ１４を抽出して図示した概略構成図である。
【００８２】
図３は、レンジ判断演算ユニットＳ１４の制御信号生成部３０３の構成（一例）を示す図である。
【００８３】
図４は、レンジ判断演算ユニットＳ１４の第１比較部３０５の構成（一例）を示す図である。
【００８４】
図５は、レンジ判断演算ユニットＳ１４の統合部３０７の構成（一例）を示す図である。
【００８５】
図２に示すように、レンジ判断演算ユニットＳ１４は、第１レジスタ３０１と、第２レジスタ３０２と、制御信号生成部３０３と、セレクタ３０４と、第１比較部３０５と、第２比較部３０６と、統合部３０７と、を備える。
【００８６】
なお、図１に制御信号ＣｔｌＲとして示している信号は、図２における制御信号ｒａｎｇｅ、レンジ方向設定信号ｄｉｒ、第１等価制御信号ｅｑ１、および、第２等価制御信号ｅｑ２に相当する。
【００８７】
第１レジスタ３０１は、第１レジスタ値ｖａｌ１を格納するためのレジスタである。第１レジスタ値ｖａｌ１は、データ書き込み演算ユニットＳ１３により、設定される（データ書き込み処理が実行される）。第１レジスタ３０１は、第１レジスタ値ｖａｌ１を第１比較部３０５に出力する。
【００８８】
また、第１レジスタ３０１は、命令制御部１から出力される制御信号ｒａｎｇｅを入力とする。さらに、第１レジスタ３０１は、レジスタファイル部２から出力されるデータｓｒｃを入力することができるように構成されている。第１レジスタ３０１は、レジスタファイル部２からデータｓｒｃを入力した場合、命令制御部１からの制御信号ｒａｎｇｅに従い、第１レジスタ値ｖａｌ１をデータｓｒｃに書き換え、当該データｓｒｃを第１比較部３０５に出力する。
【００８９】
第２レジスタ３０２は、第２レジスタ値ｖａｌ２を格納するためのレジスタである。第２レジスタ値ｖａｌ２は、データ書き込み演算ユニットＳ１３により、設定される（データ書き込み処理が実行される）。第２レジスタ３０２は、第２レジスタ値ｖａｌ２を、セレクタ３０４および第２比較部３０６に出力する。
【００９０】
制御信号生成部３０３は、図２に示すように、命令制御部１から出力される制御信号ｒａｎｇｅ（１ビット信号）と、レンジ方向設定信号ｄｉｒ（１ビット信号）とを入力とする。
【００９１】
制御信号生成部３０３は、図３に示すように、３つのＡＮＤゲート３０３１、３０３３、３０３４と、ＮＯＴゲート３０３２とを備える。
【００９２】
ＡＮＤゲート３０３１は、制御信号ｒａｎｇｅと、レンジ方向設定信号ｄｉｒとを入力とし、制御信号ｒａｎｇｅと、レンジ方向設定信号ｄｉｒとに対して、ＡＮＤ演算を行い、その演算結果を信号値とする制御信号ｃｃｔｌ１として取得する。ＡＮＤゲート３０３１は、取得した制御信号ｃｃｔｌ１を第１比較部３０５に出力する。
【００９３】
ＮＯＴゲート３０３２は、レンジ方向設定信号ｄｉｒを入力とし、レンジ方向設定信号ｄｉｒに対して、ＮＯＴ演算を行い、その演算結果をＡＮＤゲート３０３３に出力する。
【００９４】
ＡＮＤゲート３０３３は、制御信号ｒａｎｇｅと、ＮＯＴゲート３０３２の出力とを入力とし、制御信号ｒａｎｇｅと、ＮＯＴゲート３０３２の出力とに対して、ＡＮＤ演算を行い、その演算結果を信号値とする制御信号ｃｃｔｌ２として取得する。ＡＮＤゲート３０３３は、取得した制御信号ｃｃｔｌ２を第２比較部３０６に出力する。
【００９５】
ＡＮＤゲート３０３４は、制御信号ｒａｎｇｅと、レンジ方向設定信号ｄｉｒとを入力とし、制御信号ｒａｎｇｅと、レンジ方向設定信号ｄｉｒとに対して、ＡＮＤ演算を行い、その演算結果を信号値とする制御信号ｂｃｔｌとして取得する。ＡＮＤゲート３０３４は、取得した制御信号ｂｃｔｌを統合部３０７に出力する。
【００９６】
セレクタ３０４は、レジスタファイル部２から出力されるデータｓｒｃと、第２レジスタ３０２から出力される第２レジスタ値ｖａｌ２とを入力とする。また、セレクタ３０４は、命令制御部１から出力される制御信号ｒａｎｇｅを入力とする。セレクタ３０４は、制御信号ｒａｎｇｅの信号値に基づいて、レジスタファイル部２から出力されるデータｓｒｃ、および、第２レジスタ３０２から出力される第２レジスタ値ｖａｌ２のいずれか一方を選択して、第１比較部３０５に出力する。
【００９７】
第１比較部３０５は、図４に示すように、減算器３０５１と、入力データの値が「０」であるか否かを検出する非ゼロ判定器３０５２と、ＮＯＴゲート３０５３と、ＡＮＤゲート３０５４と、ＯＲゲート３０５５と、ＸＯＲゲート３０５６と、ＮＯＴゲート３０５７と、ＯＲゲート３０５８と、ＡＮＤゲート３０５９と、を備える。第１比較部３０５は、２つの入力データＤｉｎ１、Ｄｉｎ２の値の大小関係を検出する。なお、第１比較部３０５の入力データＤｉｎ１は、セレクタ３０４から出力されるデータであり、入力データＤｉｎ２は、第１レジスタ３０１から出力されるデータである。
【００９８】
減算器３０５１は、入力データＤｉｎ１と、入力データＤｉｎ２とを入力とし、減算処理を行う。つまり、減算器３０５１は、
Ｄｓｕｂ＝Ｄｉｎ１−Ｄｉｎ２
により、減算結果データＤｓｕｂを取得し、取得したデータＤｓｕｂを非ゼロ判定器３０５２に出力する。
【００９９】
また、減算器３０５１は、減算結果データＤｓｕｂの最上位ビット（ＭＳＢ）をＯＲゲート３０５５に出力する。なお、減算結果データＤｓｕｂがゼロまたは正の値であるとき、減算結果データＤｓｕｂの最上位ビット（ＭＳＢ）は、「０」であり、減算結果データＤｓｕｂが負の値であるとき、減算結果データＤｓｕｂの最上位ビット（ＭＳＢ）は、「１」である。
【０１００】
非ゼロ判定器３０５２は、減算器３０５１から出力される減算結果データＤｓｕｂを入力とする。非ゼロ判定器３０５２は、
（１）減算結果データＤｓｕｂが「０」である場合、判定結果信号ｎｏｎ＿ｚｅｒｏ＿ｄｅｔの信号値を「０」に設定し、
（２）減算結果データＤｓｕｂが「０」でない場合、判定結果信号ｎｏｎ＿ｚｅｒｏ＿ｄｅｔの信号値を「１」に設定する。
【０１０１】
そして、非ゼロ判定器３０５２は、判定結果信号ｎｏｎ＿ｚｅｒｏ＿ｄｅｔをＮＯＴゲート３０５３とＯＲゲート３０５８とに出力する。
【０１０２】
ＮＯＴゲート３０５３は、非ゼロ判定器３０５２の出力を入力とし、入力された値を反転させて、ＡＮＤゲート３０５４に出力する。
【０１０３】
ＡＮＤゲート３０５４は、第１等価制御信号ｅｑ１と、ＮＯＴゲート３０５３の出力とを入力とし、両者に対してＡＮＤ演算を行い、その結果をＯＲゲート３０５５に出力する。
【０１０４】
ＯＲゲート３０５５は、減算結果データＤｓｕｂの最上位ビット（ＭＳＢ）と、ＡＮＤゲート３０５４の出力を入力とし、両者に対してＯＲ演算を行い、その結果をＸＯＲゲート３０５６に出力する。
【０１０５】
ＸＯＲゲート３０５６は、制御信号生成部３０３から出力される制御信号ｃｃｔｌ１（図４では、「ｃｃｔｌ」と表記。）と、ＯＲゲート３０５５の出力とを入力とする。ＸＯＲゲート３０５６は、入力された２つのデータに対して、ＸＯＲ演算を行い、演算結果をＮＯＴゲート３０５７に出力する。
【０１０６】
ＮＯＴゲート３０５７は、ＸＯＲゲート３０５６からの出力を入力とする。ＮＯＴゲート３０５７は、入力されたデータに対して、ＮＯＴ演算を行い、演算結果をＡＮＤゲート３０５９に出力する。
【０１０７】
ＯＲゲート３０５８は、非ゼロ判定器３０５２から出力される判定結果信号ｎｏｎ＿ｚｅｒｏ＿ｄｅｔと、命令制御部１から出力される等価条件を制御するための信号である制御信号ｅｑ１（以下、この制御信号を「第１等価制御信号」という。）と、を入力とする。ＯＲゲート３０５８は、入力された２つのデータに対して、ＯＲ演算を行い、演算結果をＡＮＤ３０５９に出力する。
【０１０８】
ＡＮＤゲート３０５９は、ＮＯＴゲート３０５７からの出力と、ＯＲゲート３０５８からの出力とを入力とする。ＡＮＤゲート３０５９は、入力された２つのデータに対して、ＡＮＤ演算を行い、演算結果を出力データＤ１として、統合部３０７に出力する。
【０１０９】
第２比較部３０６は、第１比較部３０５と同様の構成を有している。なお、第２比較部３０６では、図４で示した制御信号ｃｃｔｌは、制御信号生成部３０３から出力される制御信号ｃｃｔｌ２であり、図４で示した制御信号ｅｑは、命令制御部１から出力される等価条件を制御するための制御信号ｅｑ２（以下、この制御信号を「第２等価制御信号」という。）である。また、第２比較部３０６は、比較結果を出力データＤ２として、統合部３０７に出力する。また、第２比較部３０６では、図４の入力データＤｉｎ１は、レジスタファイル部２から出力されるデータｓｒｃであり、図４の入力データＤｉｎ２は、第２レジスタ３０２から出力される第２レジスタ値ｖａｌ２である。
【０１１０】
統合部３０７は、図５に示すように、ＡＮＤゲート３０７１と、ＯＲゲート３０７２と、セレクタ３０７３とを備える。
【０１１１】
ＡＮＤゲート３０７１は、第１比較部３０５から出力される出力データＤ１と、第２比較部３０６から出力される出力データＤ２と、を入力とする。ＡＮＤゲート３０７１は、２つの入力されたデータに対して、ＡＮＤ演算を行い、その演算結果をセレクタ３０７３に出力する。
【０１１２】
ＯＲゲート３０７２は、第１比較部３０５から出力される出力データＤ１と、第２比較部３０６から出力される出力データＤ２と、を入力とする。ＯＲゲート３０７２は、２つの入力されたデータに対して、ＯＲ演算を行い、その演算結果をセレクタ３０７３に出力する。
【０１１３】
セレクタ３０７３は、ＡＮＤゲート３０７１から出力されるデータと、ＯＲゲート３０７２から出力されるデータとを入力とする。また、セレクタ３０７３は、制御信号生成部３０３から出力される制御信号ｂｃｔｌを入力とする。セレクタ３０７３は、制御信号ｂｃｔｌの信号値に基づいて、入力された２つのデータのいずれか一方を選択し、選択したデータを、条件フラグＣＦとして、条件レジスタ部４に出力する。
【０１１４】
条件レジスタ部４は、命令実行部３から出力される条件フラグＣＦを入力とする。条件レジスタ部４は、入力された条件フラグＣＦを格納するレジスタを有している。また、条件レジスタ部４は、条件フラグＣＦに応じて、命令実行部３に、所定の処理を実行させるための制御信号ＣＦｃｔｌを生成し、生成した制御信号ＣＦｃｔｌを命令実行部３に出力する。例えば、図１に示す場合、条件レジスタ部４は、命令実行部３のレンジ判断演算ユニットＳ１４から出力される条件フラグＣＦを入力し、所定のレジスタに格納する。そして、条件レジスタ部４は、当該条件フラグＣＦに基づいて、制御信号ＣＦｃｔｌを生成し、例えば、生成した制御信号ＣＦｃｔｌを命令実行部３の条件付き加算ユニットＳ２１に出力する。
【０１１５】
命令メモリＭ１は、命令制御部１がフェッチする命令および／またはデータを記憶するためのメモリである。そして、命令メモリＭ１は、命令制御部１によりアクセス可能なメモリである。
【０１１６】
データメモリＭ２は、命令実行部３によりロード／ストアされるデータを記憶するためのメモリである。データメモリＭ２は、命令実行部３の第３スロットＳ３のロード／ストアユニットＳ３１によりアクセス可能なメモリである。
【０１１７】
＜１．２：ＳＩＭＤプロセッサの動作＞
以上のように構成されたＳＩＭＤプロセッサ１０００の動作について、以下、図面を参照しながら、説明する。
【０１１８】
以下では、レンジ判断処理を用いて実行される処理として、（１）輝度勾配ヒストグラム算出処理と、（２）パーティクルフィルタ処理とを例に、ＳＩＭＤプロセッサ１０００の動作について、説明する。
（１．２．１：ヒストグラム算出処理）
まず、ＳＩＭＤプロセッサ１０００において、輝度勾配ヒストグラム算出処理を実行する場合について説明する。
【０１１９】
この場合、以下の（手順１）〜（手順４）により処理が実行される。
【０１２０】
（手順１）：
ＳＩＭＤプロセッサ１０００において、例えば、画像上のＮ画素×Ｍ画素（Ｎ、Ｍ：自然数）からなる矩形の画像領域を輝度勾配ヒストグラム算出処理の対象領域に設定し、当該画像領域に含まれる画素ごとに、勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）を算出する。なお、勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）は、処理対象画素である注目画素の座標を（ｘ，ｙ）とし、その画素値をＩ（ｘ，ｙ）と表記すると、以下のように算出される。
（１）処理対象の画像領域に含まれる画素（注目画素）ごとに、注目画素と、当該注目画素と左右に隣接する画素との間のＸ方向の勾配強度ｄｘ（ｘ，ｙ）が、
ｄｘ（ｘ，ｙ）＝Ｉ（ｘ＋１，ｙ）−Ｉ（ｘ−１，ｙ）
により算出される。
【０１２１】
また、注目画素と、当該注目画素と上下に隣接する画素との間のＹ方向の勾配強度ｄｙ（ｘ，ｙ）が、
ｄｙ（ｘ，ｙ）＝Ｉ（ｘ，ｙ＋１）−Ｉ（ｘ，ｙ−１）
により算出される。
（２）次に、Ｙ方向の勾配強度ｄｙ（ｘ，ｙ）をＸ方向の勾配強度ｄｘ（ｘ，ｙ）で除算して取得した値に基づいて、注目画素の勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）が、
ｇｒａｄｉｅｎｔ（ｘ，ｙ）＝ａｔａｎ（ｄｙ（ｘ，ｙ）／ｄｘ（ｘ，ｙ））
ａｔａｎ（）：逆正接関数（アークタンジェント）
により、算出される。
【０１２２】
上記のようにして算出された勾配ベクトル角度ｇｒａｄｉｅｎｔ（ｘ，ｙ）は、例えば、データメモリＭ２の連続したメモリ領域に格納される。
【０１２３】
（手順２）：
ＳＩＭＤプロセッサ１０００において、輝度勾配ヒストグラムの各ビンの範囲を決定するための境界値を設定し、設定した境界値は、例えば、データメモリＭ２の連続したメモリ領域に格納される。
【０１２４】
（手順３）：
ＳＩＭＤプロセッサ１０００において、輝度勾配ヒストグラムの各ビンのヒストグラム値（処理対象データが各ビンの範囲に含まれると判定されたときにカウントされるカウント値（頻度累積値））を格納する領域を、レジスタファイル部２に確保し（例えば、レジスタファイル部２において、各ビンのヒストグラム値を格納するためのレジスタを確保し）、各ビンのヒストグラム値を「０」に初期化する。
【０１２５】
（手順４）：ＳＩＭＤプロセッサ１０００において、輝度勾配ヒストグラムを生成するための命令を実行する。この輝度勾配ヒストグラムを生成するための命令の命令スケジュールの一例を図６に示す。図６には、（１）各サイクルにおいて、各スロットＳｌｏｔ１〜３に割り当てられる演算を示した図（左図）と、（２）各サイクルにおいて設定されている、第１レジスタ値ｖａｌ１、第２レジスタ値ｖａｌ２、および、レジスタファイル部２からレンジ判断演算ユニットＳ１４に入力されるデータｓｒｃを示した図（右図）とを示している。
【０１２６】
ここで、図６を用いて、輝度勾配ヒストグラムを生成するための命令スケジュールについて説明する。なお、説明便宜のため、ビン数を「４」として説明する。
【０１２７】
（Ｃｙｃ０）：
サイクル０において、第３スロットのＬ／ＳユニットＳ３１は、勾配ベクトル角度ｇｒａｄ１をロードする。そして、ロードされた勾配ベクトル角度ｇｒａｄ１は、図１に示すように、データパスＤｏ３を介して、レジスタファイル部２に出力される。レジスタファイル部２は、第３スロットＳ３から出力された勾配ベクトル角度ｇｒａｄ１を、所定のレジスタに格納する。
【０１２８】
（Ｃｙｃ１）：
サイクル１において、命令制御部１は、命令実行部３に対して、データ書き込み命令（Ｗｒｉｔｅ命令）を発行する。命令実行部３の第１スロットＳ１のデータ書き込み演算ユニットＳ１３は、当該データ書き込み命令（Ｗｒｉｔｅ命令）に基づいて、データ書き込み処理を実行する。具体的には、データ書き込み演算ユニットＳ１３は、レジスタファイル部２から、データパスＤｉ１１、Ｄｉ１２を介して、サイクル０でロードした勾配ベクトル角度ｇｒａｄ１と、ヒストグラムの下限値ｈｉｓｔＬ１を入力し、当該２つの入力されたデータに対して、データ書き込み処理を実行する。つまり、データ書き込み演算ユニットＳ１３は、
（第１レジスタ値ｖａｌ１）＝ｈｉｓｔＬ１
（第２レジスタ値ｖａｌ２）＝ｇｒａｄ１
となるように、第１レジスタ値および第２レジスタ値を設定する。
【０１２９】
なお、ヒストグラムの下限値ｈｉｓｔＬ１は、レジスタファイル部２の所定のレジスタに保持されているものとする。
【０１３０】
また、第３スロットのＬ／ＳユニットＳ３１は、輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ２を、データメモリＭ２からロードする。ロードされた輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ２は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０１３１】
（Ｃｙｃ２）：
サイクル２において、命令制御部１は、命令実行部３に対して、レンジ判断命令（ＲｎｇＤ）を発行する。命令実行部３の第１スロットＳ１のレンジ判断演算ユニットＳ１４は、当該レンジ判断命令（ＲｎｇＤ命令）に基づいて、レンジ判断処理を実行する。具体的には、レンジ判断演算ユニットＳ１４は、レジスタファイル部２から、サイクル１でロードされたヒストグラムの境界値ｈｉｓｔＬ２をデータｓｒｃとして入力する。
【０１３２】
ＳＩＭＤプロセッサ１０００において、輝度勾配ヒストグラムの算出処理を行う場合、命令制御部１は、制御信号ｒａｎｇｅを「０」に設定する。したがって、図２に示すように、セレクタ３０４は、第２レジスタ３０２からの入力を、第１比較部３０５に出力する。
【０１３３】
また、制御信号ｒａｎｇｅが「０」であるので、制御信号生成部３０３により生成される制御信号ｃｃｔｌ１およびｃｃｔｌ２は、ともに、その信号値が「０」に設定される。
【０１３４】
ここで、まず、第１比較部３０５の動作（サイクル２の動作）について、説明する。
【０１３５】
第１比較部３０５の入力は、以下のようになる。なお、第１等価制御信号ｅｑ１は、その信号値が「０」に設定されているとする。
【０１３６】
ｃｃｔｌ１＝０
Ｄｉｎ１＝ｖａｌ２＝ｇｒａｄ１
Ｄｉｎ２＝ｖａｌ１＝ｈｉｓｔＬ１
ｓｒｃ＝ｈｉｓｔＬ２
ｅｑ１＝０
（１）ｃｃｔｌ１、Ｄｉｎ１、Ｄｉｎ２、ｓｒｃ、ｅｑ１が上記のように設定されている場合であって、かつ、Ｄｉｎ２＜Ｄｉｎ１、つまり、ｈｉｓｔＬ１＜ｇｒａｄ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＞０
ＭＳＢ＝０
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「１」となる。
（２）ｃｃｔｌ１、Ｄｉｎ１、Ｄｉｎ２、ｓｒｃ、ｅｑ１が上記のように設定されている場合であって、かつ、Ｄｉｎ２＞Ｄｉｎ１、つまり、ｈｉｓｔＬ１＞ｇｒａｄ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＜０
ＭＳＢ＝１
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「０」となる。
（３）ｃｃｔｌ１、Ｄｉｎ１、Ｄｉｎ２、ｓｒｃ、ｅｑ１が上記のように設定されている場合であって、かつ、Ｄｉｎ２＝Ｄｉｎ１、つまり、ｈｉｓｔＬ１＝ｇｒａｄ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＝０
ＭＳＢ＝０
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝０
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「０」となる。
【０１３７】
なお、この場合（（３）の場合）において、ｅｑ１＝１に設定されているときは、ＯＲゲート３０５８の出力が「１」となり、ＡＮＤゲート３０５９の出力が「１」となる。つまり、出力データＤ１は、「１」となる。
【０１３８】
以上のように、
ｃｃｔｌ１＝０
Ｄｉｎ１＝ｖａｌ２＝ｇｒａｄ１
Ｄｉｎ２＝ｖａｌ１＝ｈｉｓｔＬ１
ｓｒｃ＝ｈｉｓｔＬ２
ｅｑ１＝０
である場合において、Ｄｉｎ２＜Ｄｉｎ１、つまり、ｈｉｓｔＬ１＜ｇｒａｄ１であるとき、第１比較部３０５の出力データＤ１が「１」となり、それ以外の場合、第１比較部３０５の出力データは「０」となる。
【０１３９】
なお、ｅｑ１＝１に設定すると、Ｄｉｎ２≦Ｄｉｎ１、つまり、ｈｉｓｔＬ１≦ｇｒａｄ１であるとき、第１比較部３０５の出力データＤ１が「１」となり、それ以外の場合、第１比較部３０５の出力データＤ１は「０」となる。
【０１４０】
次に、第２比較部３０６の動作（サイクル２の動作）について説明する。
【０１４１】
第２比較部３０６の入力は、以下のようになる。なお、第２等価制御信号ｅｑ２は、その信号値が「０」に設定されているとする。
【０１４２】
ｃｃｔｌ２＝０
Ｄｉｎ１＝ｓｒｃ＝ｈｉｓｔＬ２
Ｄｉｎ２＝ｖａｌ２＝ｇｒａｄ１
ｅｑ２＝０
（１）ｃｃｔｌ２、Ｄｉｎ１、Ｄｉｎ２、ｅｑ２が上記のように設定されている場合であって、かつ、Ｄｉｎ２＜Ｄｉｎ１、つまり、ｇｒａｄ１＜ｈｉｓｔＬ２である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＞０
ＭＳＢ＝０
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ２（第２比較部３０６の出力データＤ２）は、「１」となる。
（２）ｃｃｔｌ２、Ｄｉｎ１、Ｄｉｎ２、ｅｑ２が上記のように設定されている場合であって、かつ、Ｄｉｎ２＞Ｄｉｎ１、つまり、ｇｒａｄ１＞ｈｉｓｔＬ２である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＜０
ＭＳＢ＝１
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ２（第２比較部３０６の出力データＤ２）は、「０」となる。
（３）ｃｃｔｌ２、Ｄｉｎ１、Ｄｉｎ２、ｅｑ２が上記のように設定されている場合であって、かつ、Ｄｉｎ２＝Ｄｉｎ１、つまり、ｇｒａｄ１＝ｈｉｓｔＬ２である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＝０
ＭＳＢ＝０
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝０
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「０」となる。
【０１４３】
なお、この場合（（３）の場合）において、ｅｑ２＝１に設定されているときは、ＯＲゲート３０５８の出力が「１」となり、ＡＮＤゲート３０５９の出力が「１」となる。つまり、第２比較部３０６の出力データＤ２は、「１」となる。
【０１４４】
以上のように、
ｃｃｔｌ２＝０
Ｄｉｎ１＝ｓｒｃ＝ｈｉｓｔＬ２
Ｄｉｎ２＝ｖａｌ２＝ｇｒａｄ１
ｅｑ２＝０
である場合において、Ｄｉｎ２＜Ｄｉｎ１、つまり、ｇｒａｄ１＜ｈｉｓｔＬ２であるとき、第２比較部３０６の出力データＤ２が「１」となり、それ以外の場合、第２比較部３０６の出力データＤ２は「０」となる。
【０１４５】
なお、ｅｑ２＝１に設定すると、Ｄｉｎ２≦Ｄｉｎ１、つまり、ｇｒａｄ１≦ｈｉｓｔＬ２であるとき、第２比較部３０６の出力データＤ２が「１」となり、それ以外の場合、第２比較部３０６の出力データＤ２は「０」となる。
【０１４６】
次に、統合部３０７の動作（サイクル２の動作）について説明する。
【０１４７】
ｒａｎｇｅ＝０であるので、制御信号生成部３０３から出力される制御信号ｂｃｔｌの信号値は「０」である。したがって、セレクタ３０７３は、ＡＮＤゲート３０７１の出力を選択して出力する。つまり、統合部３０７は、第１比較部３０５の出力データＤ１と、第２比較部３０６の出力データＤ２とのＡＮＤ演算結果を、条件フラグＣＦとして、条件レジスタ部４に出力する。
【０１４８】
すなわち、サイクル２において、レンジ判断演算ユニットＳ１４は、条件フラグＣＦを、以下の値に設定して、条件レジスタ部４に出力する。
（１）ｅｑ１＝０、かつ、ｅｑ２＝０である場合、
（１Ａ）ｈｉｓｔＬ１＜ｇｒａｄ１＜ｈｉｓｔＬ２であるとき、ＣＦ＝１
（１Ｂ）上記（１Ａ）以外のとき、ＣＦ＝０
（２）ｅｑ１＝１、かつ、ｅｑ２＝０である場合、
（２Ａ）ｈｉｓｔＬ１≦ｇｒａｄ１＜ｈｉｓｔＬ２であるとき、ＣＦ＝１
（２Ｂ）上記（２Ａ）以外のとき、ＣＦ＝０
（３）ｅｑ１＝０、かつ、ｅｑ２＝１である場合、
（３Ａ）ｈｉｓｔＬ１＜ｇｒａｄ１≦ｈｉｓｔＬ２であるとき、ＣＦ＝１
（３Ｂ）上記（３Ａ）以外のとき、ＣＦ＝０
（４）ｅｑ１＝１、かつ、ｅｑ２＝１である場合、
（４Ａ）ｈｉｓｔＬ１≦ｇｒａｄ１≦ｈｉｓｔＬ２であるとき、ＣＦ＝１
（４Ｂ）上記（４Ａ）以外のとき、ＣＦ＝０
つまり、サイクル２において、レンジ判断演算ユニットＳ１４は、第２レジスタに設定されている値ｇｒａｄ１（＝ｖａｌ２）が、境界値ｈｉｓｔＬ１およびｈｉｓｔＬ２により規定される範囲に含まれるか否かの判定を行い、その判定結果を示す条件フラグＣＦを条件レジスタ部４に出力する。
【０１４９】
また、サイクル２において、第３スロットのＬ／ＳユニットＳ３１は、輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ３を、データメモリＭ２からロードする。ロードされた輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ３は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０１５０】
（Ｃｙｃ３）：
サイクル３において、命令制御部１は、命令実行部３に対して、条件付き加算命令（Ａｄｄｔ命令）を発行する。命令実行部３の第２スロットＳ２の条件付き加算ユニットＳ２１は、条件付き加算命令（Ａｄｄｔ命令）に基づいて、条件付き加算処理を実行する。具体的には、条件付き加算ユニットＳ２１は、レジスタファイル部２から、第１ビン（ヒストグラム下限値ｈｉｓｔＬ１と、境界値ｈｉｓｔＬ２とにより規定されるビン）のヒストグラム値ｈｉｓｔ＿ｂｉｎ１を入力し、条件レジスタ部４から出力される制御信号ＣＦｃｔｌに基づいて、ヒストグラム値ｈｉｓｔ＿ｂｉｎ１に対して、条件付き加算処理を実行する。
【０１５１】
サイクル２において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第１ビン内の値（ヒストグラム下限値ｈｉｓｔＬ１と、境界値ｈｉｓｔＬ２とにより規定される範囲内の値）であると判定された場合、ＣＦ＝１となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「１」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「１」であるので、第１ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ１を、１だけインクリメントする。つまり、条件付き加算ユニットＳ２１は、第１ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ１に「１」を加算した値を取得し、取得した値を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、条件付き加算ユニットＳ２１により条件付き加算処理された値を、第１ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ１として、所定のレジスタに格納する。
【０１５２】
一方、サイクル２において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第１ビン内の値（ヒストグラム下限値ｈｉｓｔＬ１と、境界値ｈｉｓｔＬ２とにより規定される範囲内の値）ではないと判定された場合、ＣＦ＝０となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「０」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「０」であるので、第１ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ１に対する加算処理を実行しない。つまり、この場合、レジスタファイル部２で保持されている第１ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ１は、更新されることはなく、そのままの値が保持されることになる。
【０１５３】
また、サイクル３では、レンジ判断演算ユニットＳ１４は、
ｖａｌ１＝ｈｉｓｔＬ２
ｖａｌ２＝ｇｒａｄ１
ｓｒｃ＝ｈｉｓｔＬ３
として、サイクル２で説明したのと同様の処理を実行する。
【０１５４】
これにより、サイクル３において、レンジ判断演算ユニットＳ１４は、条件フラグＣＦを、以下の値に設定して、条件レジスタ部４に出力する。
（１）ｅｑ１＝０、かつ、ｅｑ２＝０である場合、
（１Ａ）ｈｉｓｔＬ２＜ｇｒａｄ１＜ｈｉｓｔＬ３であるとき、ＣＦ＝１
（１Ｂ）上記（１Ａ）以外のとき、ＣＦ＝０
（２）ｅｑ１＝１、かつ、ｅｑ２＝０である場合、
（２Ａ）ｈｉｓｔＬ２≦ｇｒａｄ１＜ｈｉｓｔＬ３であるとき、ＣＦ＝１
（２Ｂ）上記（２Ａ）以外のとき、ＣＦ＝０
（３）ｅｑ１＝０、かつ、ｅｑ２＝１である場合、
（３Ａ）ｈｉｓｔＬ２＜ｇｒａｄ１≦ｈｉｓｔＬ３であるとき、ＣＦ＝１
（３Ｂ）上記（３Ａ）以外のとき、ＣＦ＝０
（４）ｅｑ１＝１、かつ、ｅｑ２＝１である場合、
（４Ａ）ｈｉｓｔＬ２≦ｇｒａｄ１≦ｈｉｓｔＬ３であるとき、ＣＦ＝１
（４Ｂ）上記（４Ａ）以外のとき、ＣＦ＝０
つまり、サイクル３において、レンジ判断演算ユニットＳ１４は、第２レジスタに設定されている値ｇｒａｄ１（＝ｖａｌ２）が、境界値ｈｉｓｔＬ２およびｈｉｓｔＬ３により規定される範囲に含まれるか否かの判定を行い、その判定結果を示す条件フラグＣＦを条件レジスタ部４に出力する。
【０１５５】
なお、第１レジスタ３０１は、制御信号ｒａｎｇｅの信号値が「０」である場合、サイクル２で、レジスタファイル部２から入力されたｓｒｃ値（＝ｈｉｓｔＬ２）を、サイクル３で、第１レジスタ値ｖａｌ１として、第１比較部３０５に出力するように、第１レジスタ値ｖａｌ１を更新する。
【０１５６】
また、サイクル３において、第３スロットのＬ／ＳユニットＳ３１は、輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ４を、データメモリＭ２からロードする。ロードされた輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ４は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０１５７】
（Ｃｙｃ４）：
サイクル４において、命令制御部１は、命令実行部３に対して、条件付き加算命令（Ａｄｄｔ命令）を発行する。命令実行部３の第２スロットＳ２の条件付き加算ユニットＳ２１は、条件付き加算命令（Ａｄｄｔ命令）に基づいて、条件付き加算処理を実行する。具体的には、条件付き加算ユニットＳ２１は、レジスタファイル部２から、第２ビン（ヒストグラム境界値ｈｉｓｔＬ２と、境界値ｈｉｓｔＬ３とにより規定されるビン）のヒストグラム値ｈｉｓｔ＿ｂｉｎ２を入力し、条件レジスタ部４から出力される制御信号ＣＦｃｔｌに基づいて、ヒストグラム値ｈｉｓｔ＿ｂｉｎ２に対して、条件付き加算処理を実行する。
【０１５８】
サイクル３において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第２ビン内の値（ヒストグラム境界値ｈｉｓｔＬ２と、境界値ｈｉｓｔＬ３とにより規定される範囲内の値）であると判定された場合、ＣＦ＝１となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「１」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「１」であるので、第２ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ２を、１だけインクリメントする。つまり、条件付き加算ユニットＳ２１は、第２ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ２に「１」を加算した値を取得し、取得した値を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、条件付き加算ユニットＳ２１により条件付き加算処理された値を、第２ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ２として、所定のレジスタに格納する。
【０１５９】
一方、サイクル３において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第２ビン内の値（ヒストグラム境界値ｈｉｓｔＬ２と、境界値ｈｉｓｔＬ３とにより規定される範囲内の値）ではないと判定された場合、ＣＦ＝０となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「０」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「０」であるので、第２ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ２に対する加算処理を実行しない。つまり、この場合、レジスタファイル部２で保持されている第２ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ２は、更新されることはなく、そのままの値が保持されることになる。
【０１６０】
また、サイクル４では、レンジ判断演算ユニットＳ１４は、
ｖａｌ１＝ｈｉｓｔＬ３
ｖａｌ２＝ｇｒａｄ１
ｓｒｃ＝ｈｉｓｔＬ４
として、サイクル２で説明したのと同様の処理を実行する。
【０１６１】
これにより、サイクル４において、レンジ判断演算ユニットＳ１４は、条件フラグＣＦを、以下の値に設定して、条件レジスタ部４に出力する。
（１）ｅｑ１＝０、かつ、ｅｑ２＝０である場合、
（１Ａ）ｈｉｓｔＬ３＜ｇｒａｄ１＜ｈｉｓｔＬ４であるとき、ＣＦ＝１
（１Ｂ）上記（１Ａ）以外のとき、ＣＦ＝０
（２）ｅｑ１＝１、かつ、ｅｑ２＝０である場合、
（２Ａ）ｈｉｓｔＬ３≦ｇｒａｄ１＜ｈｉｓｔＬ４であるとき、ＣＦ＝１
（２Ｂ）上記（２Ａ）以外のとき、ＣＦ＝０
（３）ｅｑ１＝０、かつ、ｅｑ２＝１である場合、
（３Ａ）ｈｉｓｔＬ３＜ｇｒａｄ１≦ｈｉｓｔＬ４であるとき、ＣＦ＝１
（３Ｂ）上記（３Ａ）以外のとき、ＣＦ＝０
（４）ｅｑ１＝１、かつ、ｅｑ２＝１である場合、
（４Ａ）ｈｉｓｔＬ３≦ｇｒａｄ１≦ｈｉｓｔＬ４であるとき、ＣＦ＝１
（４Ｂ）上記（４Ａ）以外のとき、ＣＦ＝０
つまり、サイクル４において、レンジ判断演算ユニットＳ１４は、第２レジスタに設定されている値ｇｒａｄ１（＝ｖａｌ２）が、境界値ｈｉｓｔＬ３およびｈｉｓｔＬ４により規定される範囲に含まれるか否かの判定を行い、その判定結果を示す条件フラグＣＦを条件レジスタ部４に出力する。
【０１６２】
なお、第１レジスタ３０１は、サイクル３で、レジスタファイル部２から入力されたｓｒｃ値（＝ｈｉｓｔＬ３）を、サイクル４で、第１レジスタ値ｖａｌ１として、第１比較部３０５に出力するように、第１レジスタ値ｖａｌ１を更新する。
【０１６３】
また、サイクル４において、第３スロットのＬ／ＳユニットＳ３１は、輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ５を、データメモリＭ２からロードする。ロードされた輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ５は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０１６４】
（Ｃｙｃ５）：
サイクル５において、命令制御部１は、命令実行部３に対して、条件付き加算命令（Ａｄｄｔ命令）を発行する。命令実行部３の第２スロットＳ２の条件付き加算ユニットＳ２１は、条件付き加算命令（Ａｄｄｔ命令）に基づいて、条件付き加算処理を実行する。具体的には、条件付き加算ユニットＳ２１は、レジスタファイル部２から、第３ビン（ヒストグラム境界値ｈｉｓｔＬ３と、境界値ｈｉｓｔＬ４とにより規定されるビン）のヒストグラム値ｈｉｓｔ＿ｂｉｎ３を入力し、条件レジスタ部４から出力される制御信号ＣＦｃｔｌに基づいて、ヒストグラム値ｈｉｓｔ＿ｂｉｎ３に対して、条件付き加算処理を実行する。
【０１６５】
サイクル４において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第３ビン内の値（ヒストグラム境界値ｈｉｓｔＬ３と、境界値ｈｉｓｔＬ４とにより規定される範囲内の値）であると判定された場合、ＣＦ＝１となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「１」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「１」であるので、第３ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ３を、１だけインクリメントする。つまり、条件付き加算ユニットＳ２１は、第３ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ３に「１」を加算した値を取得し、取得した値を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、条件付き加算ユニットＳ２１により条件付き加算処理された値を、第３ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ３として、所定のレジスタに格納する。
【０１６６】
一方、サイクル４において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第３ビン内の値（ヒストグラム境界値ｈｉｓｔＬ３と、境界値ｈｉｓｔＬ４とにより規定される範囲内の値）ではないと判定された場合、ＣＦ＝０となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「０」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「０」であるので、第３ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ３に対する加算処理を実行しない。つまり、この場合、レジスタファイル部２で保持されている第３ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ３は、更新されることはなく、そのままの値が保持されることになる。
【０１６７】
また、サイクル５では、レンジ判断演算ユニットＳ１４は、
ｖａｌ１＝ｈｉｓｔＬ４
ｖａｌ２＝ｇｒａｄ１
ｓｒｃ＝ｈｉｓｔＬ５
として、サイクル２で説明したのと同様の処理を実行する。
【０１６８】
これにより、サイクル５において、レンジ判断演算ユニットＳ１４は、条件フラグＣＦを、以下の値に設定して、条件レジスタ部４に出力する。
（１）ｅｑ１＝０、かつ、ｅｑ２＝０である場合、
（１Ａ）ｈｉｓｔＬ４＜ｇｒａｄ１＜ｈｉｓｔＬ５であるとき、ＣＦ＝１
（１Ｂ）上記（１Ａ）以外のとき、ＣＦ＝０
（２）ｅｑ１＝１、かつ、ｅｑ２＝０である場合、
（２Ａ）ｈｉｓｔＬ４≦ｇｒａｄ１＜ｈｉｓｔＬ５であるとき、ＣＦ＝１
（２Ｂ）上記（２Ａ）以外のとき、ＣＦ＝０
（３）ｅｑ１＝０、かつ、ｅｑ２＝１である場合、
（３Ａ）ｈｉｓｔＬ４＜ｇｒａｄ１≦ｈｉｓｔＬ５であるとき、ＣＦ＝１
（３Ｂ）上記（３Ａ）以外のとき、ＣＦ＝０
（４）ｅｑ１＝１、かつ、ｅｑ２＝１である場合、
（４Ａ）ｈｉｓｔＬ４≦ｇｒａｄ１≦ｈｉｓｔＬ５であるとき、ＣＦ＝１
（４Ｂ）上記（４Ａ）以外のとき、ＣＦ＝０
つまり、サイクル５において、レンジ判断演算ユニットＳ１４は、第２レジスタに設定されている値ｇｒａｄ１（＝ｖａｌ２）が、境界値ｈｉｓｔＬ４およびｈｉｓｔＬ５により規定される範囲に含まれるか否かの判定を行い、その判定結果を示す条件フラグＣＦを条件レジスタ部４に出力する。
【０１６９】
なお、第１レジスタ３０１は、サイクル４で、レジスタファイル部２から入力されたｓｒｃ値（＝ｈｉｓｔＬ４）を、サイクル５で、第１レジスタ値ｖａｌ１として、第１比較部３０５に出力するように、第１レジスタ値ｖａｌ１を更新する。
【０１７０】
また、サイクル５において、第３スロットのＬ／ＳユニットＳ３１は、勾配ベクトル角度ｇｒａｄ２をロードする。そして、ロードされた勾配ベクトル角度ｇｒａｄ２は、データパスＤｏ３を介して、レジスタファイル部２に出力される。レジスタファイル部２は、第３スロットＳ３から出力された勾配ベクトル角度ｇｒａｄ２を、所定のレジスタに格納する。
【０１７１】
（Ｃｙｃ６）：
サイクル６において、命令制御部１は、命令実行部３に対して、データ書き込み命令（Ｗｒｉｔｅ命令）を発行する。命令実行部３の第１スロットＳ１のデータ書き込み演算ユニットＳ１３は、当該データ書き込み命令（Ｗｒｉｔｅ命令）に基づいて、データ書き込み処理を実行する。具体的には、データ書き込み演算ユニットＳ１３は、レジスタファイル部２から、データパスＤｉ１１、Ｄｉ１２を介して、サイクル５でロードした勾配ベクトル角度ｇｒａｄ２と、ヒストグラムの下限値ｈｉｓｔＬ１を入力し、当該２つの入力されたデータに対して、データ書き込み処理を実行する。つまり、データ書き込み演算ユニットＳ１３は、
（第１レジスタ値ｖａｌ１）＝ｈｉｓｔＬ１
（第２レジスタ値ｖａｌ２）＝ｇｒａｄ２
となるように、第１レジスタ値および第２レジスタ値を設定する。
【０１７２】
また、第３スロットのＬ／ＳユニットＳ３１は、輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ２を、データメモリＭ２からロードする。ロードされた輝度勾配ヒストグラムの次の境界値ｈｉｓｔＬ２は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０１７３】
また、サイクル６において、命令制御部１は、命令実行部３に対して、条件付き加算命令（Ａｄｄｔ命令）を発行する。命令実行部３の第２スロットＳ２の条件付き加算ユニットＳ２１は、条件付き加算命令（Ａｄｄｔ命令）に基づいて、条件付き加算処理を実行する。具体的には、条件付き加算ユニットＳ２１は、レジスタファイル部２から、第４ビン（ヒストグラム境界値ｈｉｓｔＬ４と、境界値ｈｉｓｔＬ５とにより規定されるビン）のヒストグラム値ｈｉｓｔ＿ｂｉｎ４を入力し、条件レジスタ部４から出力される制御信号ＣＦｃｔｌに基づいて、ヒストグラム値ｈｉｓｔ＿ｂｉｎ４に対して、条件付き加算処理を実行する。
【０１７４】
サイクル５において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第４ビン内の値（ヒストグラム境界値ｈｉｓｔＬ４と、境界値ｈｉｓｔＬ５とにより規定される範囲内の値）であると判定された場合、ＣＦ＝１となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「１」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「１」であるので、第４ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ４を、１だけインクリメントする。つまり、条件付き加算ユニットＳ２１は、第４ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ４に「１」を加算した値を取得し、取得した値を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、条件付き加算ユニットＳ２１により条件付き加算処理された値を、第４ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ４として、所定のレジスタに格納する。
【０１７５】
一方、サイクル５において、レンジ判断演算ユニットＳ１４により、処理対象画素の勾配ベクトル角度ｇｒａｄ１が、第４ビン内の値（ヒストグラム境界値ｈｉｓｔＬ４と、境界値ｈｉｓｔＬ５とにより規定される範囲内の値）ではないと判定された場合、ＣＦ＝０となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「０」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「０」であるので、第４ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ４に対する加算処理を実行しない。つまり、この場合、レジスタファイル部２で保持されている第４ビンのヒストグラム値ｈｉｓｔ＿ｂｉｎ４は、更新されることはなく、そのままの値が保持されることになる。
【０１７６】
（Ｃｙｃ７以降）：
サイクル７〜１１では、サイクル２〜６と同様の処理が実行される。これにより、処理対象画素の勾配ベクトル角度ｇｒａｄ２が、ビン１〜４のいずれに含まれるか判断され、ヒストグラム算出処理が実行される。
【０１７７】
以降、上記処理を繰り返すことで、複数のデータ（勾配ベクトル角度）に対して、ヒストグラム算出処理を実行することができる。
【０１７８】
以上の処理により、ＳＩＭＤプロセッサ１０００において、輝度勾配ヒストグラム算出処理を実行することができる。
（１．２．２：パーティクルフィルタ処理）
次に、ＳＩＭＤプロセッサ１０００において、パーティクルフィルタ処理を実行する場合について説明する。
【０１７９】
パーティクルフィルタは、ベイズモデルを推定するために用いられる手法であり、条件付分布をその分布から多数の実現値で近似表現することにより実現される。パーティクルフィルタは、例えば、画像認識処理に用いられる。
【０１８０】
ここで、パーティクルフィルタ処理について、図７を用いて説明する。
【０１８１】
図７は、パーティクルフィルタ処理について説明するための図であり、横軸（Ｘ軸）を一致させて、（１）パーティクル（粒子）の事前確率分布と、（２）時刻ｔにおける実際の観測と、（３）時刻ｔにおける尤度と、（４）時刻ｔにおけるパーティクルの事後確率分布と、（５）次の時刻（時刻ｔ＋１）におけるパーティクルの事前確率分布と、（６）時刻ｔ＋１における実際の観測と、（７）時刻ｔ＋１における尤度とを模式的に示す図である。なお、パーティクルフィルタを画像認識処理に用いる場合、２次元の処理を行う必要があるが、説明便宜のため、図７を用いた説明では、１次元の処理（１次元のデータを扱うパーティクルフィルタ）として説明する。
【０１８２】
ここでは、画像上の黄色の物体を検出する画像認識処理を、パーティクルフィルタを用いて実現する場合を例に説明する。この処理は、以下の（１）〜（７）により、実行される。
（１）まず、時刻ｔにおいて、パーティクルをランダムに配置し、パーティクルの事前確率分布が取得される。
（２）時刻ｔにおいて、実際の観測データが取得される。つまり、画像上の全てのデータについての黄色度合いが取得される。この黄色度合いを示すデータが、図７の（２）に示す時刻ｔの実際の観測データ（実際の観測）である。
（３）時刻ｔの事前確率分布に従い配置されたパーティクルごとに、尤度が取得される。図７の（３）において、このように取得された尤度を示しており、尤度が大きい程、大きな円として描いている。
（４）求めた尤度に基づいて、パーティクルの事後確率分布が取得される。つまり、図７の（４）に示すように、尤度が大きい領域ほど、多数のパーティクルが配置されるように、パーティクルの事後確率分布が取得される。
（５）次の時刻（時刻ｔ＋１）におけるパーティクル事前確率分布が取得される。このとき、パーティクルの事後確率分布において取得されたパーティクルの位置に、乱数を加算または減算して取得した位置に、パーティクルを配置することで、時刻ｔ＋１におけるパーティクル事前確率分布が取得される。
（６）時刻ｔ＋１において、実際の観測データが取得される。つまり、画像上の全てのデータについての黄色度合いが取得される。この黄色度合いを示すデータが、図７の（６）に示す時刻ｔ＋１の実際の観測データ（実際の観測）である。
（７）時刻ｔ＋１の事前確率分布に従い配置されたパーティクルごとに、尤度が取得される。
【０１８３】
このように、処理を行うことで、黄色度合いの高い部分に多くのパーティクルが配置されることになる。したがって、配置されているパーティクル数が多い部分を検出することで、画像上の黄色の物体を検出する画像認識処理を実現することができる。
【０１８４】
しかしながら、上記で説明したように、次の時刻のパーティクルの事前確率分布を取得するときに、乱数を用いて、パーティクルの位置を決める（再配置する）必要がある。このとき、パーティクルの位置が画像領域外となることがあり、この場合、例外処理を実行する必要がある。
【０１８５】
例えば、Ｘ軸方向（横軸方向）のパーティクルが取り得る範囲の最大値が、図７に示す最大値Ｘｍａｘで示す位置である場合、図７に示したパーティクルｐ１が、パーティクルの取り得る範囲外となっている。つまり、次の時刻（時刻ｔ＋１）の事前確率分布を求めるときに、パーティクルｐ１に相当する位置が再配置位置と算出されるが、この再配置位置は、パーティクルの取り得る範囲外となるため、例外処理を実行する必要がある。
【０１８６】
パーティクルフィルタは、パーティクルごとの処理が多いため、並列処理を行うと効率が良くなる。つまり、パーティクルフィルタは、ＳＩＭＤプロセッサ向きの処理である。しかし、上記のような例外処理を行う必要があるので、この例外処理を効率良く行うことで、処理効率を高めることができる。
【０１８７】
ＳＩＭＤプロセッサ１０００では、図１に示す構成により、パーティクルフィルタの例外処理を効率良く処理する。その結果、ＳＩＭＤプロセッサ１０００では、パーティクルフィルタ処理の効率を良くすることができる。これについて、以下、説明する。
【０１８８】
ＳＩＭＤプロセッサ１０００において、パーティクルフィルタ処理を実行する場合、以下の（手順１）〜（手順３）により処理が実行される。
【０１８９】
（手順１）：
ＳＩＭＤプロセッサ１０００において、各パーティクルの画像上のＸ位置（Ｘ座標値）、Ｙ位置（Ｘ座標値）は、例えば、データメモリＭ２のそれぞれ別々の連続したメモリ領域に格納される。
【０１９０】
（手順２）：
命令制御部１は、命令実行部３に対して、データ書き込み命令（Ｗｒｉｔｅ命令）を発行する。命令実行部３の第１スロットＳ１のデータ書き込み演算ユニットＳ１３は、当該データ書き込み命令（Ｗｒｉｔｅ命令）に基づいて、データ書き込み処理を実行する。具体的には、データ書き込み演算ユニットＳ１３は、レジスタファイル部２から、データパスＤｉ１１、Ｄｉ１２を介して、パーティクルの取り得る上限位置および下限位置を、第１レジスタ３０１および第２レジスタ３０２に書き込む。例えば、パーティクルの取り得るＸ軸方向の上限位置をＸｍａｘとし、パーティクルの取り得るＸ軸方向の下限位置をＸｍｉｎとすると、データ書き込み演算ユニットＳ１３は、
（第１レジスタ値ｖａｌ１）＝Ｘｍｉｎ
（第２レジスタ値ｖａｌ２）＝Ｘｍａｘ
となるように、第１レジスタ値および第２レジスタ値を設定する。なお、以下では、説明便宜のため、パーティクルのＸ軸方向の位置について処理を行う場合について説明する。
【０１９１】
（手順３）：図８に、各パーティクルの位置を変更（再配置）するときの命令スケジュールを示す。
【０１９２】
（Ｃｙｃ０）：
サイクル０において、命令制御部１は、命令実行部３に対して、ロード命令（Ｌｏａｄ命令）および乱数生成命令（Ｒａｎｄ命令）を発行する。第３スロットＳ３のＬ／ＳユニットＳ３１は、１つ目のパーティクルの位置情報（Ｘ座標位置）ｘ１をロードし、ロードしたＸ座標位置ｘ１を、データパスＤｏ３を介して、レジスタファイル部２に出力する。レジスタファイル部２は、当該Ｘ座標位置ｘ１を所定のレジスタに格納する。第２スロットＳ２の乱数生成ユニットＳ２２は、１つ目のパーティクルの位置情報（Ｘ座標位置）ｘ１に付加する変動量Δｘ１（Δｘ１：実数）を生成し、生成した変動量Δｘ１を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、当該変動量Δｘ１を所定のレジスタに格納する。
【０１９３】
（Ｃｙｃ１）：
サイクル１において、命令制御部１は、命令実行部３に対して、加算命令（Ａｄｄ）を発行する。命令実行部３の第１スロットＳ１の加算ユニットＳ１１は、当該加算命令（Ａｄｄ命令）に基づいて、サイクル０で取得された１つ目のパーティクルのＸ座標位置ｘ１と、その変動量Δｘ１とを加算し、その加算結果ｘ１＋Δｘ１を、データパスＤｏ１を介して、レジスタファイル部２に出力する。
【０１９４】
（Ｃｙｃ２）：
サイクル２において、命令制御部１は、命令実行部３に対して、レンジ判断命令（ＲｎｇＤ）を発行する。命令実行部３の第３スロットＳ１のレンジ判断演算ユニットＳ１４は、当該レンジ判断命令（ＲｎｇＤ命令）に基づいて、レンジ判断処理を実行する。具体的には、レンジ判断演算ユニットＳ１４は、レジスタファイル部２から、サイクル１で取得された加算結果ｘ１＋Δｘ１を入力し、当該加算結果ｘ１＋Δｘ１に対して、レンジ判断処理を行う。
【０１９５】
ＳＩＭＤプロセッサ１０００において、パーティクルフィルタ処理を行う場合、命令制御部１は、制御信号ｒａｎｇｅを「１」に設定する。したがって、図２に示すように、セレクタ３０４は、レジスタファイル部２からの入力ｓｒｃを、第１比較部３０５に出力する。
【０１９６】
また、制御信号ｒａｎｇｅが「１」に設定されており、レンジ方向設定信号ｄｉｒが「０」に設定されている場合、制御信号生成部３０３により生成される制御信号ｃｃｔｌ１は、その信号値が「０」に設定され、制御信号ｃｃｔｌ２は、その信号値が「１」に設定される。
【０１９７】
ここで、まず、第１比較部３０５の動作（サイクル２の動作）について、説明する。
【０１９８】
第１比較部３０５の入力は、以下のようになる。なお、第１等価制御信号ｅｑ１は、その信号値が「０」に設定されているとする。
【０１９９】
ｃｃｔｌ１＝１
Ｄｉｎ１＝ｓｒｃ＝ｘ１＋Δｘ１
Ｄｉｎ２＝ｖａｌ１＝Ｘｍｉｎ
ｅｑ１＝０
（１）ｃｃｔｌ１、Ｄｉｎ１、Ｄｉｎ２、ｅｑ１が上記のように設定されている場合であって、かつ、Ｄｉｎ２＜Ｄｉｎ１、つまり、Ｘｍｉｎ＜ｘ１＋Δｘ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＞０
ＭＳＢ＝０
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「１」となる。
（２）ｃｃｔｌ１、Ｄｉｎ１、Ｄｉｎ２、ｅｑ１が上記のように設定されている場合であって、かつ、Ｄｉｎ２＞Ｄｉｎ１、つまり、Ｘｍｉｎ＞ｘ１＋Δｘ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＜０
ＭＳＢ＝１
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「０」となる。
（３）ｃｃｔｌ１、Ｄｉｎ１、Ｄｉｎ２、ｅｑ１が上記のように設定されている場合であって、かつ、Ｄｉｎ２＝Ｄｉｎ１、つまり、Ｘｍｉｎ＝ｘ１＋Δｘ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＝０
ＭＳＢ＝０
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝０
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「０」となる。
【０２００】
なお、この場合（（３）の場合）において、ｅｑ１＝１に設定されているときは、ＯＲゲート３０５８の出力が「１」となり、ＡＮＤゲート３０５９の出力が「１」となる。つまり、出力データＤ１は、「１」となる。
【０２０１】
以上のように、
ｃｃｔｌ１＝１
Ｄｉｎ１＝ｓｒｃ＝ｘ１＋Δｘ１
Ｄｉｎ２＝ｖａｌ１＝Ｘｍｉｎ
ｅｑ１＝０
である場合において、Ｄｉｎ２＜Ｄｉｎ１、つまり、Ｘｍｉｎ＜ｘ１＋Δｘ１であるとき、第１比較部３０５の出力データＤ１が「１」となり、それ以外の場合、第１比較部３０５の出力データは「０」となる。
【０２０２】
なお、ｅｑ１＝１に設定すると、Ｄｉｎ２≦Ｄｉｎ１、つまり、Ｘｍｉｎ≦ｘ１＋Δｘ１であるとき、第１比較部３０５の出力データＤ１が「１」となり、それ以外の場合、第１比較部３０５の出力データＤ１は「０」となる。
【０２０３】
次に、第２比較部３０６の動作（サイクル２の動作）について説明する。
【０２０４】
第２比較部３０６の入力は、以下のようになる。なお、第２等価制御信号ｅｑ２は、その信号値が「０」に設定されているとする。
【０２０５】
ｃｃｔｌ２＝１
Ｄｉｎ１＝ｓｒｃ＝ｘ１＋Δｘ１
Ｄｉｎ２＝ｖａｌ２＝Ｘｍａｘ
ｅｑ２＝０
（１）ｃｃｔｌ２、Ｄｉｎ１、Ｄｉｎ２、ｅｑ２が上記のように設定されている場合であって、かつ、Ｄｉｎ２＜Ｄｉｎ１、つまり、Ｘｍａｘ＜ｘ１＋Δｘ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＞０
ＭＳＢ＝０
ｃｃｔｌ２＝１
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ２（第２比較部３０６の出力データＤ２）は、「０」となる。
（２）ｃｃｔｌ２、Ｄｉｎ１、Ｄｉｎ２、ｅｑ２が上記のように設定されている場合であって、かつ、Ｄｉｎ２＞Ｄｉｎ１、つまり、Ｘｍａｘ＞ｘ１＋Δｘ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＜０
ＭＳＢ＝１
ｃｃｔｌ２＝１
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝１
であるので、ＡＮＤゲート３０５９から出力されるデータＤ２（第２比較部３０６の出力データＤ２）は、「１」となる。
（３）ｃｃｔｌ２、Ｄｉｎ１、Ｄｉｎ２、ｅｑ２が上記のように設定されている場合であって、かつ、Ｄｉｎ２＝Ｄｉｎ１、つまり、Ｘｍａｘ＝ｘ１＋Δｘ１である場合、
Ｄｓｕｂ＝Ｄｉｎ１―Ｄｉｎ２＝０
ＭＳＢ＝０
ｃｃｔｌ２＝１
ｎｏｎ＿ｚｅｒｏ＿ｄｅｔ＝０
であるので、ＡＮＤゲート３０５９から出力されるデータＤ１は、「０」となる。
【０２０６】
なお、この場合（（３）の場合）において、ｅｑ２＝１に設定されているときは、ＯＲゲート３０５８の出力が「１」となり、また、ＮＯＴゲート３０５７の出力が「１」であるので、ＡＮＤゲート３０５４の出力が「１」となり、ＸＯＲゲート３０５６の出力が「０」となり、ＮＯＴゲート３０５７の出力が「１」となり、ＡＮＤゲート３０５９の出力が「１」となる。つまり、第２比較部３０６の出力データＤ２は、「１」となる。
【０２０７】
以上のように、
ｃｃｔｌ２＝１
Ｄｉｎ１＝ｓｒｃ＝ｘ１＋Δｘ１
Ｄｉｎ２＝ｖａｌ２＝Ｘｍａｘ
ｅｑ２＝０
である場合において、Ｄｉｎ１＜Ｄｉｎ２、つまり、ｘ１＋Δｘ１＜Ｘｍａｘであるとき、第２比較部３０６の出力データＤ２が「１」となり、それ以外の場合、第２比較部３０６の出力データＤ２は「０」となる。
【０２０８】
なお、ｅｑ２＝１に設定すると、Ｄｉｎ１≦Ｄｉｎ２、つまり、ｘ１＋Δｘ１≦Ｘｍａｘであるとき、第２比較部３０６の出力データＤ２が「１」となり、それ以外の場合、第２比較部３０６の出力データＤ２は「０」となる。
【０２０９】
次に、統合部３０７の動作（サイクル２の動作）について説明する。
【０２１０】
ｒａｎｇｅ＝１であり、ｄｉｒ＝０であるので、制御信号生成部３０３から出力される制御信号ｂｃｔｌの信号値は「０」である。したがって、セレクタ３０７３は、ＡＮＤゲート３０７１の出力を選択して出力する。つまり、統合部３０７は、第１比較部３０５の出力データＤ１と、第２比較部３０６の出力データＤ２とのＡＮＤ演算結果を、条件フラグＣＦとして、条件レジスタ部４に出力する。
【０２１１】
すなわち、サイクル２において、レンジ判断演算ユニットＳ１４は、条件フラグＣＦを、以下の値に設定して、条件レジスタ部４に出力する。
（１）ｅｑ１＝０、かつ、ｅｑ２＝０である場合、
（１Ａ）Ｘｍｉｎ＜ｘ１＜Ｘｍａｘであるとき、ＣＦ＝１
（１Ｂ）上記（１Ａ）以外のとき、ＣＦ＝０
（２）ｅｑ１＝１、かつ、ｅｑ２＝０である場合、
（２Ａ）Ｘｍｉｎ≦ｘ１＜Ｘｍａｘであるとき、ＣＦ＝１
（２Ｂ）上記（２Ａ）以外のとき、ＣＦ＝０
（３）ｅｑ１＝０、かつ、ｅｑ２＝１である場合、
（３Ａ）Ｘｍｉｎ＜ｘ１≦Ｘｍａｘであるとき、ＣＦ＝１
（３Ｂ）上記（３Ａ）以外のとき、ＣＦ＝０
（４）ｅｑ１＝１、かつ、ｅｑ２＝１である場合、
（４Ａ）Ｘｍｉｎ≦ｘ１≦Ｘｍａｘであるとき、ＣＦ＝１
（４Ｂ）上記（４Ａ）以外のとき、ＣＦ＝０
つまり、サイクル２において、レンジ判断演算ユニットＳ１４は、レジスタファイル部２から出力される値ｓｒｃ（＝ｘ１）が、パーティクルの限界値（下限値および上限値）ＸｍｉｎおよびＸｍａｘにより規定される範囲に含まれるか否かの判定を行い、その判定結果を示す条件フラグＣＦを条件レジスタ部４に出力する。
【０２１２】
また、サイクル２において、第３スロットのＬ／ＳユニットＳ３１は、次のパーティクルの座標位置ｘ２を、データメモリＭ２からロードする。ロードされた次のパーティクルの座標位置ｘ２は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０２１３】
また、サイクル２において、第２スロットＳ２の乱数生成ユニットＳ２２は、２つ目のパーティクルの位置情報（Ｘ座標位置）ｘ２に付加する変動量Δｘ２（Δｘ２：実数）を生成し、生成した変動量Δｘ２を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、当該変動量Δｘ２を所定のレジスタに格納する。
【０２１４】
（Ｃｙｃ３）：
サイクル３において、命令制御部１は、命令実行部３に対して、条件付き加算命令（Ａｄｄｔ命令）を発行する。命令実行部３の第２スロットＳ２の条件付き加算ユニットＳ２１は、条件付き加算命令（Ａｄｄｔ命令）に基づいて、条件付き加算処理を実行する。具体的には、条件付き加算ユニットＳ２１は、レジスタファイル部２から、１つ目のパーティクルの座標位置ｘ１と、その変動量Δｘ１とを入力し、条件レジスタ部４から出力される制御信号ＣＦｃｔｌに基づいて、１つ目のパーティクルの加算結果ｘ１＋Δｘ１に対して、条件付き加算処理を実行する。
【０２１５】
サイクル２において、レンジ判断演算ユニットＳ１４により、１つ目のパーティクルの加算結果ｘ１＋Δｘ１が、パーティクルの限界値Ｘｍｉｎ、Ｘｍａｘで規定される範囲内の値であると判定された場合、ＣＦ＝１となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「１」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「１」であるので、１つ目のパーティクルの座標位置ｘ１と、その変動量Δｘ１と加算する。そして、条件付き加算ユニットＳ２１は、加算した値を、データパスＤｏ２を介して、レジスタファイル部２に出力する。レジスタファイル部２は、条件付き加算ユニットＳ２１により条件付き加算処理された値を、１つ目のパーティクルの再配置位置（次の時刻（時刻ｔ＋１）の事前確率分布により決定される座標位置）として、所定のレジスタに格納する。
【０２１６】
一方、サイクル２において、レンジ判断演算ユニットＳ１４により、１つ目のパーティクルの加算結果ｘ１＋Δｘ１が、パーティクルの限界値Ｘｍｉｎ、Ｘｍａｘで規定される範囲内の値ではないと判定された場合、ＣＦ＝０となり、当該条件フラグＣＦの値に基づいて、条件レジスタ部４は、制御信号ＣＦｃｔｌの信号値を「０」に設定し、条件付き加算ユニットＳ２１に出力する。そして、条件付き加算ユニットＳ２１は、制御信号ＣＦｃｔｌの信号値が「０」であるので、１つ目のパーティクルの座標位置ｘ１と、その変動量Δｘ１とに対する加算処理を実行しない。つまり、この場合、１つ目のパーティクルの座標位置の再配置位置（次の時刻（時刻ｔ＋１）の事前確率分布により決定される座標位置）を算出する処理を行わない。
【０２１７】
また、サイクル３において、第３スロットのＬ／ＳユニットＳ３１は、次のパーティクルの座標位置ｘ３を、データメモリＭ２からロードする。ロードされた次のパーティクルの座標位置ｘ３は、データパスＤｏ３を介して、レジスタファイル部２に出力される。
【０２１８】
また、サイクル３において、命令制御部１は、命令実行部３に対して、加算命令（Ａｄｄ）を発行する。命令実行部３の第１スロットＳ１の加算ユニットＳ１１は、当該加算命令（Ａｄｄ命令）に基づいて、サイクル２で取得された２つ目のパーティクルのＸ座標位置ｘ２と、その変動量Δｘ２とを加算し、その加算結果ｘ２＋Δｘ２を、データパスＤｏ１を介して、レジスタファイル部２に出力する。
【０２１９】
（Ｃｙｃ４）：
サイクル４において、命令制御部１は、命令実行部３に対して、ストア命令（Ｓｔｏｒｅ命令）を発行する。命令実行部３の第３スロットＳ３のロード／ストアユニットＳ３１は、当該ストア命令に基づいて、サイクル３で取得（確定）された１つ目のパーティクルのＸ座標位置をデータメモリＭ２に格納する。
【０２２０】
また、サイクル４において、サイクル０のＲａｎｄ命令の実行処理と同様に、第２スロットＳ２が、Ｒａｎｄ命令を実行し、３つ目のパーティクルの変動量Δｘ３を取得する。
【０２２１】
また、サイクル４において、サイクル１のＡｄｄ命令の実行処理と同様に、第１スロットＳ１が、Ａｄｄ命令を実行し、２つ目のパーティクルの座標位置ｘ２とその変動量Δｘ２とを加算する。
【０２２２】
（Ｃｙｃ５〜）：
サイクル５以降において、図８に示す命令スケジュールに従い、上記処理と同様の処理が実行され、２つ目以降のパーティクルの座標位置が確定される。
【０２２３】
なお、上記では、レンジ方向設定信号ｄｉｒが「０」である場合のＳＩＭＤプロセッサ１０００の動作、すなわち、第１レジスタ値ｖａｌ１（＝Ｘｍｉｎ）と第２レジスタ値ｖａｌ２（＝Ｘｍａｘ）により規定される範囲内に含まれるか否かを判定する場合の動作について説明した。つまり、ＳＩＭＤプロセッサ１０００では、レンジ方向設定信号ｄｉｒが「０」である場合、（１）処理対象値ｓｒｃが、第１レジスタ値ｖａｌ１（＝Ｘｍｉｎ）と第２レジスタ値ｖａｌ２（＝Ｘｍａｘ）により規定される範囲内に含まれる場合、条件フラグが「１」となり、（２）処理対象値ｓｒｃが、第１レジスタ値ｖａｌ１（＝Ｘｍｉｎ）と第２レジスタ値ｖａｌ２（＝Ｘｍａｘ）により規定される範囲内に含まれない場合、条件フラグが「０」となる。
【０２２４】
一方、ＳＩＭＤプロセッサ１０００では、レンジ方向設定信号ｄｉｒを「１」とすることで、第１レジスタ値ｖａｌ１（＝Ｘｍｉｎ）と第２レジスタ値ｖａｌ２（＝Ｘｍａｘ）により規定される範囲外であるか否かを判定することができる。つまり、ＳＩＭＤプロセッサ１０００では、レンジ方向設定信号ｄｉｒが「１」である場合、（１）処理対象値ｓｒｃが、第１レジスタ値ｖａｌ１（＝Ｘｍｉｎ）と第２レジスタ値ｖａｌ２（＝Ｘｍａｘ）により規定される範囲内に含まれない場合、条件フラグが「１」となり、（２）処理対象値ｓｒｃが、第１レジスタ値ｖａｌ１（＝Ｘｍｉｎ）と第２レジスタ値ｖａｌ２（＝Ｘｍａｘ）により規定される範囲内に含まれる場合、条件フラグが「０」となる。
【０２２５】
以上のように、ＳＩＭＤプロセッサ１０００では、（１）制御信号ｒａｎｇｅを「０」に設定し、上記（１．２．１）で説明した処理を実行することで、輝度勾配ヒストグラム算出処理を実行することができ、（２）制御信号ｒａｎｇｅを「１」に設定し、上記（１．２．２）で説明した処理を実行することで、パーティクルフィルタ処理を実行することができる。
【０２２６】
つまり、ＳＩＭＤプロセッサ１０００では、制御信号ｒａｎｇｅ、レンジ方向設定信号ｄｉｒ、第１等価制御信号ｅｑ１、および、第２等価制御信号ｅｑ２を、所定の値に設定することで、レンジ判断演算ユニットＳ１４が、条件フラグＣＦを「１」として出力する条件を設定することができる。図９に、ＳＩＭＤプロセッサ１０００において、制御信号ｒａｎｇｅ、レンジ方向設定信号ｄｉｒ、第１等価制御信号ｅｑ１、および、第２等価制御信号ｅｑ２と、レンジ判断演算ユニットＳ１４が、条件フラグＣＦを「１」として出力する条件との関係図を示す。
【０２２７】
ＳＩＭＤプロセッサ１０００では、条件レジスタ部４が、図９に示す関係図により取得された条件フラグＣＦに基づいて、所定の演算ユニットに条件付き演算を実行させるための制御信号ＣＦｃｔｌを生成し、当該制御信号ＣＦｃｔｌに基づいて、所定の演算ユニットが条件付き演算を実行する。これにより、ＳＩＭＤプロセッサ１０００では、各スロット（各プロセッサ・エレメント）の演算器ごとに、条件フラグを設定するためのハードウェアを設ける必要がなく、従来技術に比べて、ハードウェア規模を小さくすることができる。
【０２２８】
また、上記のように、ＳＩＭＤプロセッサ１０００では、制御信号ｒａｎｇｅ、レンジ方向設定信号ｄｉｒ、第１等価制御信号ｅｑ１、および、第２等価制御信号ｅｑ２を、所定の値に設定し、第１レジスタ値ｖａｌ１、第２レジスタ値ｖａｌ２、および、レジスタファイル部２からの出力値ｓｒｃを所定の値に設定することで、多様なレンジ判断処理を行うことができる。例えば、上記（１．２．１）で説明したように、ヒストグラム算出処理において、境界値（ｈｉｓｔＬ１、ｈｉｓｔＬ２、．．．）を所定の値に設定することで、１つのビンの範囲を容易に変更することができる（可変にすることができる）。
【０２２９】
このように、ＳＩＭＤプロセッサ１０００では、画像処理および画像認識で多用されるレンジ判断処理を、汎用性の高いハードウェア構成により、効率的に実行することができる。
【０２３０】
［他の実施形態］
上記実施形態において、レンジ判断演算ユニットＳ１４は、図２〜図５に示すハードウェア構成を有する場合について説明したが、これに限定されることはない。レンジ判断演算ユニットＳ１４は、図９に示した関係図を満たすものであれば、他の回路構成により実現されるものであってもよい。また、レンジ判断演算ユニットＳ１４は、図９に示した関係図を満たすように、一部に、ルックアップテーブルを有するものであってもよい。
【０２３１】
また、レンジ判断演算ユニットＳ１４は、図２〜図５に示した回路構成に限定されることはなく、図９に示した関係図を満たす回路であれば他の回路構成であってもよい。例えば、図４に示した第１比較部３０５（または第２比較部３０６）において、非ゼロ判定器３０５２の出力をＲＯＲと表記すると、第１比較部３０５（または第２比較部３０６）は、下記論理式に相当する回路としてもよい。
【０２３２】
（！ｃｃｔｒｌ＆！ＭＳＢ＆ＲＯＲ）｜（ｅｑ＆！ＲＯＲ）｜（ｃｃｔｒｌ＆ＭＳＢ）
ＭＳＢ：減算結果データＤｓｕｂの最上位ビット
ｅｑ：等価制御信号（第１等価制御信号ｅｑ１、または、第２等価制御信号ｅｑ２）
ｃｃｔｒｌ：制御信号生成部３０３から出力される制御信号ｃｃｔｌ１
ＲＯＲ：非ゼロ判定器３０５２の出力
なお、上記論理式のＲＯＲ、ＭＳＢ、ｅｑ、ｃｃｔｒｌは、論理値「０」または「１」をとるものとする。
【０２３３】
また、上記実施形態では、ＳＩＭＤプロセッサ１０００において、命令実行部３のスロット数が「３」の場合について説明したが、これに限定されることはなく、命令実行部３は、他の数のスロットを有するものであってもよい。
【０２３４】
また、上記実施形態では、ＳＩＭＤプロセッサ１０００において、条件付き演算ユニットとして、第２スロットＳ２に条件付き加算ユニットＳ２１を有する場合について説明したが、これに限定されることはない。例えば、ＳＩＭＤプロセッサ１０００において、他の条件付き演算処理を行う演算ユニットを設けるようにしてもよい。また、ＳＩＭＤプロセッサ１０００において、演算ユニットの割り当ては、図１に示すものに限定されるものではなく、本発明の趣旨を逸脱しない範囲で、他の演算ユニットの割り当ても可能である。
【０２３５】
また、上記実施形態の一部または全部を組み合わせるようにしてもよい。
【０２３６】
また、上記実施形態における処理方法の実行順序は、必ずしも、上記実施形態の記載に制限されるものではなく、発明の要旨を逸脱しない範囲で、実行順序を入れ替えることができるものである。
【０２３７】
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【符号の説明】
【０２３８】
１０００  ＳＩＭＤプロセッサ
１  命令制御部
２  レジスタファイル部
３  命令実行部
Ｓ１  第１スロット
Ｓ２  第２スロット
Ｓ３  第３スロット
Ｓ１３  書き込みユニット
Ｓ１４  レンジ判断演算ユニット
Ｓ２１  条件付き加算ユニット
Ｓ３１  ロード／ストアユニット
４  条件レジスタ部
３０１  第１レジスタ
３０２  第２レジスタ
３０３  制御信号生成部
３０４  セレクタ
３０５  第１比較部
３０６  第２比較部
３０７  統合部
【図１】
2015185152.tif 000003
【図２】
2015185152.tif 000004
【図３】
2015185152.tif 000005
【図４】
2015185152.tif 000006
【図５】
2015185152.tif 000007
【図６】
2015185152.tif 000008
【図７】
2015185152.tif 000009
【図８】
2015185152.tif 000010
【図９】
2015185152.tif 000011
【図１０】
2015185152.tif 000012