(57)【特許請求の範囲】
【請求項１】
入力データを処理し、処理したデータを出力し、前記入力データと出力データとの転送にハンドシェイク信号が使用される処理手段と、
前記処理手段の入力に接続し、前記ハンドシェイク信号を用いて、前記処理手段への前記入力データのデータ転送を成立又は不成立にする入力ゲート手段と、
前記処理手段の出力に接続し、前記ハンドシェイク信号を用いて、前記処理手段からの前記出力データのデータ転送を成立又は不成立にする出力ゲート手段と、
前記ハンドシェイク信号と前記処理手段へのクロック供給とを制御する制御手段と、
を有し、
前記制御手段は、前記ハンドシェイク信号を制御して、前記処理手段への前記入力データのデータ転送と、前記処理手段からの前記出力データのデータ転送とを不成立にし、前記処理手段への前記クロック供給を停止することを特徴とするデータ処理装置。
【請求項２】
前記制御手段は、前記処理手段への前記入力データのデータ転送と、前記処理手段からの前記出力データのデータ転送と、を不成立にしてから、前記処理手段への前記クロック供給を停止することを特徴とする請求項１記載のデータ処理装置。
【請求項３】
前記制御手段は、前記処理手段への前記入力データのデータ転送と、前記処理手段からの前記出力データのデータ転送と、を不成立にし、同じサイクル内に前記処理手段への前記クロック供給を停止することを特徴とする請求項１記載のデータ処理装置。
【請求項４】
前記ハンドシェイク信号はvalid信号とenable信号とを含み、前記制御手段は少なくともその１つの信号を制御することによってデータ転送を不成立にすることを特徴とする請求項１乃至３の何れか１項に記載のデータ処理装置。
【請求項５】
前記制御手段に対して、クロックの供給又は供給停止を指示する指示手段をさらに有し、
前記制御手段は、前記指示手段からの指示に基づいてハンドシェイク信号とクロックの供給とを制御することを特徴とする請求項１乃至４の何れか１項に記載のデータ処理装置。
【請求項６】
前記処理手段から出力された前記出力データを保持するメモリをさらに有し、
前記指示手段は、前記メモリの使用量に基づいて、前記クロックの供給又は供給停止を指示することを特徴とする請求項５記載のデータ処理装置。
【請求項７】
入力データを処理し、処理したデータを出力し、前記入力データと出力データとの転送にハンドシェイク信号が使用される処理手段の処理工程と、
前記処理手段の入力に接続し、前記ハンドシェイク信号を用いて、前記処理手段への前記入力データのデータ転送を成立又は不成立にする入力ゲート手段の入力工程と、
前記処理手段の出力に接続し、前記ハンドシェイク信号を用いて、前記処理手段からの前記出力データのデータ転送を成立又は不成立にする出力ゲート手段の出力工程と、
前記ハンドシェイク信号と前記処理手段へのクロック供給とを制御する制御工程と、
を有し、
前記制御工程においては、前記ハンドシェイク信号を制御して、前記処理手段への前記入力データのデータ転送と、前記処理手段からの前記出力データのデータ転送とを不成立にし、前記処理手段へのクロック供給を停止することを特徴とするデータ処理方法。
【請求項８】
請求項７記載のデータ処理方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ処理装置、データ処理方法及びプログラムに関し、特に、サブモジュールのクロック制御により消費電力を低減するために用いて好適な技術に関する。
【背景技術】
【０００２】
従来、データ処理装置において、特定の機能モジュールが使用されていないときに当該機能モジュールに供給されるクロックを停止し、消費電力を低減する技術が知られている（例えば、特許文献１参照）。一方、特定の機能モジュールが使用されている間においても、クロック制御リクエスト信号に応じて当該機能モジュールに供給されるクロックを停止することで、さらに高い省電力効果を得ることができる。
【０００３】
但し、機能モジュールの使用中に供給クロックをいきなり停止すると、当該モジュールへの入力や出力のデータ転送の整合性が保てなくなり、誤動作を引き起こす可能性がある。そこで、誤動作を避けつつ、使用中のクロックを停止させる技術として、特許文献２記載の技術がある。特許文献２に記載の技術においては、クロック生成部と、クロック制御リクエスト信号をアサートする第１のモジュールと、クロック制御リクエスト信号に応答してクロック制御アクノリッジ信号をアサートする複数の第２のモジュールがある。第２のモジュールは、クロック制御リクエスト信号のアサートに応答して、現在実行中の処理が終了するとその後の処理を停止してクロック制御アクノリッジ信号をアサートする。１つまたは複数の第２のモジュールからのクロック制御アクノリッジ信号が全てアサートされた時点で、クロック生成部は第２のモジュールに供給するクロックを選択的に変化させる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２０２７５４号公報
【特許文献２】特開２００３−５８２７１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献２に記載の技術においては、クロックを停止するリクエストが出されてから、現在実行中の処理が終了したところでその後の処理を停止してからアクノリッジ信号を返すという手順を踏む。このため、現在実行中の処理によっては、この手順の実行に時間を要する。機能モジュールの動作中にきめ細かな単位でクロックを停止させようとした場合、特許文献２に記載されている手順の実行に要する時間がクロック停止期間の下限値を制限し、省電力効果を限定してしまう、という課題がある。
【０００６】
本発明は前述の問題点に鑑み、より高い省電力効果を得ることができるようにすることを目的としている。
【課題を解決するための手段】
【０００７】
本発明のデータ処理装置は、入力データを処理し、処理したデータを出力し、前記入力データと出力データとの転送にハンドシェイク信号が使用される処理手段と、前記処理手段の入力に接続し、前記ハンドシェイク信号を用いて、前記処理手段への前記入力データのデータ転送を成立又は不成立にする入力ゲート手段と、前記処理手段の出力に接続し、前記ハンドシェイク信号を用いて、前記処理手段からの前記出力データのデータ転送を成立又は不成立にする出力ゲート手段と、前記ハンドシェイク信号と前記処理手段へのクロック供給とを制御する制御手段と、を有し、前記制御手段は、前記ハンドシェイク信号を制御して、前記処理手段への前記入力データのデータ転送と、前記処理手段からの前記出力データのデータ転送とを不成立にし、前記処理手段への前記クロック供給を停止することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、処理手段に接続されたゲート手段の制御により、処理手段の入出力を強制的に遮断してクロックを停止できる。これにより、処理手段において実行中の処理終了を待つ必要がないため、きめ細かな単位でクロックが停止でき、より高い省電力効果を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態に係る画像認識装置の機能構成例を示すブロック図である。
【図２】実施形態の特徴量演算部の詳細な構成例を示すブロック図である。
【図３】実施形態の特徴量メモリ部の詳細な構成例を示すブロック図である。
【図４】特徴量メモリのリングバッファ制御を説明するための図である。
【図５】実施形態の被写体照合部の詳細な構成例を示すブロック図である。
【図６】実施形態のクロック制御指示部の詳細な構成例を示すブロック図である。
【図７】第１の実施形態のクロック制御部の詳細な構成例を示したブロック図である。
【図８】双方向ハンドシェイク信号を説明するための図である。
【図９】第１の実施形態の入力ゲート部の詳細な構成例を示すブロック図である。
【図１０】実施形態の出力ゲート部の詳細な構成例を示すブロック図である。
【図１１】第１の実施形態のクロック制御ステートマシンの状態遷移と出力信号値とを示す図である。
【図１２】第１の実施形態の動作クロックの制御の流れを示すタイミングチャートである。
【図１３】第２の実施形態に係る画像認識装置の機能構成例を示すブロック図である。
【図１４】第２の実施形態のクロック制御部の詳細な構成例を示すブロック図である。
【図１５】第２の実施形態の入力ゲート部の詳細な構成例を示すブロック図である。
【図１６】第２の実施形態の出力ゲート部の詳細な構成例を示すブロック図である。
【図１７】第２の実施形態のクロック制御ステートマシンの状態遷移と出力信号値を示す図である。
【図１８】第２の実施形態の動作クロックの制御の流れを示すタイミングチャートである。
【図１９】第３の実施形態に係る画像認識装置の機能構成例を示すブロック図である。
【発明を実施するための形態】
【００１０】
（第１の実施形態）
以下、本発明の第１の実施形態における構成について、図１を用いて説明する。
図１は、画像中の被写体を認識する画像認識装置１００の機能構成例を示すブロック図である。
画像データ入力部１０１は、イメージセンサ、通信ネットワーク、あるいはメモリなどから入力画像を取り込み、画像認識装置１００に入力するための入力部である。特徴量演算部１０３は、画像データ入力部１０１から入力された画像に対して、認識処理に適した特徴量（例えば、輝度情報やエッジ情報など）を計算する演算処理部である。特徴量演算部１０３の入力は入力ゲート部１０２を介して画像データ入力部１０１と接続されており、出力は出力ゲート部１０４を介して、特徴量メモリ部１０５と接続されている。
【００１１】
特徴量メモリ部１０５は、特徴量演算部１０３で計算した特徴量データを蓄積するメモリ部であり、被写体を認識するための照合に必要な分の特徴量データを蓄積する。被写体照合部１０６は、特徴量メモリ部１０５に蓄積された特徴量データを読み出し、被写体であるか否かの照合処理を行って、照合結果を出力する。被写体照合部１０６における照合処理は、入力画像中を走査して位置を変えながら行う必要がある。従って、特徴量メモリ部１０５に蓄積された特徴量データの照合処理を終えた時点で、被写体照合部１０６から特徴量メモリ部１０５に次の位置の照合を行うために、メモリ読み出し単位照合完了通知を送信する。
【００１２】
クロック制御指示部１０７は特徴量メモリ部１０５からメモリ使用量情報を受け取り、クロック制御指示信号をクロック制御部１０８に送る。クロック制御部１０８は、受け取ったクロック制御指示信号に従って、特徴量演算部１０３へ供給するクロックと入力ゲート部１０２、及び出力ゲート部１０４の制御を行う。なお、特徴量演算部１０３以外に各部の動作に必要なクロックが供給されている。
【００１３】
次に、図１に示した各部の詳細な構成例について図２から図１１を用いて説明する。
図２は、特徴量演算部１０３の詳細な構成例を示すブロック図であり、複数の演算器２０１と複数のメモリ２０２とから構成されている。特徴量演算部１０３に入力された画像データは、演算器２０１及びメモリ２０２を用いて演算され、特徴量データとして、出力される。演算器２０１及びメモリ２０２は特定の特徴量の計算専用のものであってもよいし、あるいは、汎用的な演算器２０１、メモリ２０２によって、様々な種類の特徴量が計算できるような構成であってもよい。
【００１４】
図３は、特徴量メモリ部１０５の詳細な構成例を示すブロック図であり、特徴量メモリ３０１、メモリインタフェース３０２、メモリ書き込み制御部３０３、メモリ読み出し制御部３０４、メモリ使用量管理部３０５から成る。
特徴量メモリ３０１は、被写体照合処理の実行に必要な分以上の特徴量を蓄積しておくためのメモリである。メモリインタフェース３０２は、特徴量メモリ３０１に接続され、メモリ書き込み制御部３０３とメモリ読み出し制御部３０４とから特徴量メモリ３０１へのメモリアクセスを調停している。
【００１５】
メモリ書き込み制御部３０３は、特徴量演算部１０３の出力した特徴量データを受け取り、特徴量メモリ３０１上の適切なアドレスに格納するようメモリインタフェース３０２に対してメモリ書き込みを要求する。メモリ読み出し制御部３０４は、被写体照合部１０６の出力した特徴量読み出し要求を受け取り、特徴量メモリ３０１上の適切なアドレスを読み出すよう、メモリインタフェース３０２に対してメモリ読み出しを要求する。その後、メモリ読み出し制御部３０４は、メモリインタフェース３０２を介して特徴量メモリ３０１から読み出されたデータを、被写体照合部１０６に対して出力する。メモリ書き込み制御部３０３及びメモリ読み出し制御部３０４は、メモリ使用量管理部３０５によって、図４に示すリングバッファ制御方式で管理・制御されている。
【００１６】
図４を用いて、特徴量メモリ３０１のリングバッファ制御について説明する。図４（ａ）は、特徴量メモリへの特徴量データの書き込みを説明する図であり、特徴量データは、特徴量演算部１０３から出力された順序で特徴量メモリ３０１に順に書き込まれる。特徴量メモリ３０１への書き込みアドレスは、メモリ書き込み制御部３０３で管理されている。
【００１７】
図４（ｂ）は、特徴量メモリの書き込み可能領域及び読み出し可能領域を説明する図である。被写体照合部１０６が被写体の照合を行うためには、一定量以上の特徴量データの読み出しを必要とするため、特徴量メモリへの書き込み済みデータ量が読み出しに必要な量を超えた時点で、読み出しが可能となる。ここで、読み出しが可能となったメモリ上の領域を読み出し可能領域とする。
【００１８】
メモリ使用量管理部３０５では、特徴量メモリへの書き込み済みデータ量が被写体照合部の読み出しに必要な量に達するまでは、メモリ読み出し制御部３０４が読み出しを行わないように制御する。また、特徴量メモリ部１０５上の読み出し可能領域以降の部分は書き込み可能領域とする。被写体照合部１０６から特徴量メモリ３０１上の読み出し可能領域のデータを読み出すとともに、特徴量演算部１０３から特徴量メモリ３０１上の書き込み可能領域への書き込みが行われる。
【００１９】
被写体照合部１０６が現在の読み出し可能領域のデータに対する読み出しを終えたことは、メモリ読み出し単位照合完了通知として、被写体照合部１０６からメモリ使用量管理部３０５に伝えられる。メモリ使用量管理部３０５では、メモリ読み出し単位照合完了通知を受け取る前に、書き込み可能領域の空きがなくなった場合には、メモリ書き込み制御部３０３がこれ以上の書き込みを行わないように制御する。また、メモリ使用量管理部３０５でメモリ読み出し単位照合完了通知を受け取った場合は、読み出し可能領域の位置をずらし、次の読み出し可能領域を設定する。
【００２０】
図４（ｃ）は、特徴量メモリ部１０５のリングバッファ動作を示したもので、読み出し可能領域の位置がずれていき、メモリの終端を越えた場合には、超えた分はメモリの先頭に戻って領域が設定される。メモリ使用量管理部３０５は、このようにリングバッファ制御を行うと共に、メモリ使用量に関する情報として、特徴量書き込み可能領域に空きがあるかの情報を出力し、クロック制御指示部１０７に送る。
【００２１】
なお、図４ではリングバッファ制御の例を示したが、メモリ使用量の管理方法は、リングバッファに限定されるものではなく、ダブルバッファ方式など、他の方法でもよい。また、本実施形態では、特徴量演算部１０３の出力した特徴量データをそのまま特徴量メモリ３０１に書き込む場合を説明しているが、被写体照合部１０６の都合上、特徴量の積分値を計算するなど、特徴量データにさらに演算を施してからメモリに格納してもよい。
【００２２】
図５は、被写体照合部１０６の詳細な構成例を示すブロック図である。被写体照合部１０６は、特徴メモリ読み出し部５０１、照合演算部５０２、照合判定部５０３、照合情報格納部５０４、照合処理制御部５０５からなる。
特徴メモリ読み出し部５０１は、特徴量メモリ部１０５から特徴量データを読み出し、照合演算部５０２に与える。特徴量メモリ３０１上の読み出し位置については、照合情報格納部５０４に格納された被写体を照合するためのパラメータ情報（辞書情報）を用いて算出する。照合演算部５０２は、特徴メモリ読み出し部５０１から受け取ったデータと、照合情報格納部５０４から受け取ったパラメータ情報（辞書情報）とを用いて照合演算を実行し、照合演算結果を照合判定部５０３に出力する。
【００２３】
照合判定部５０３は、照合演算部５０２から受け取った照合演算結果と、照合情報格納部５０４から受け取ったパラメータ情報（辞書情報）を用いて判定を行い、被写体として照合されたかどうかを示す照合結果を出力する。照合情報格納部５０４は、被写体の照合を行うために、特徴メモリ読み出し部５０１、照合演算部５０２、照合判定部５０３で使用するパラメータ情報（辞書情報）を格納している。
【００２４】
照合処理制御部５０５は、被写体照合部１０６全体の制御を行っており、特徴メモリ読み出し部５０１に対する読み出し開始指示を行い、照合判定部５０３から照合判定の完了情報を得る。さらに、照合処理の進みに応じて、照合情報格納部５０４から適切なパラメータ情報が出力されるよう指示を行う。照合処理制御部５０５では、照合判定の完了情報から、現在アクセスしている特徴量メモリ３０１の読み出し可能領域に対応する処理が完了したかどうかを判定し、完了した時点で、メモリ読み出し単位照合完了通知を、特徴量メモリ部１０５に出力する。
【００２５】
図６は、クロック制御指示部１０７の詳細な構成例を示すブロック図である。クロック制御指示部１０７は、クロック制御指示判定部６０１と、クロック制御指示設定部６０２からなる。
クロック制御指示判定部６０１は、特徴量メモリ部１０５からメモリ使用量情報を受け取り、クロック制御指示設定部６０２から設定情報を受け取る。この受け取った情報から、特徴量演算部１０３のクロックのオン・オフを指示するためのクロック制御指示信号を生成して、クロック制御部１０８に出力する。本実施形態では、メモリ使用量情報として、特徴量メモリ３０１の書き込み可能領域に空きがあるか否かの情報を受け取っている。
【００２６】
ここで、特徴量メモリ３０１の書き込み可能領域に空きがない場合には特徴量演算部１０３でこれ以上特徴量を演算しても格納できないため、特徴量演算部１０３のクロックをオフする指示信号を出力する。一方、特徴量メモリの書き込み可能領域に空きがある場合は、特徴量演算部１０３のクロックをオンする指示信号を出力する。クロック制御指示設定部６０２は、クロック制御指示判定部６０１において、受け取ったメモリ使用量情報を使用するか否かの設定を行う。メモリ使用量情報を使用する設定の場合は、上記の通り、メモリ使用量情報に応じて、クロック制御指示信号を制御する。メモリ使用量情報を使用しない設定の場合は、常にクロックがオンになるようクロック制御指示信号を出力する。
【００２７】
図７は、クロック制御部１０８の詳細な構成例を示したブロック図である。クロック制御部１０８は、クロックゲーティング部７０１、クロック制御ステートマシン７０２から成る。
クロック制御ステートマシン７０２は、クロック制御指示信号を受けて動作するステートマシンであり、そのステートに応じて、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号を出力する。クロックゲーティング部７０１は、クロック制御ステートマシン７０２の出力するクロックイネーブル信号を受けて特徴量演算部１０３に供給するクロックのオン、オフを行う。本実施形態では、クロック制御ステートマシン７０２の出力するクロックイネーブル信号をクロックゲーティング部７０１で１段のフリップフロップで受けて使用する前提のため、クロックイネーブル信号が変化して１サイクル後にクロックのオン・オフが変化する。
【００２８】
次に、入力ゲート部１０２及び出力ゲート部１０４の説明のため、まず、特徴量演算部１０３の入力、および、出力で使用されている双方向ハンドシェイク信号について図８を用いて説明する。図８（ａ）は、データ送信モジュール８０１とデータ受信モジュール８０２の間でクロック同期でデータを転送するために用いられる信号を示したものである。図８（ａ）では、ハンドシェイク信号として、valid信号、enable信号、データ信号として、data信号が用いられる。valid信号は、データ送信モジュール８０１が、有効なデータをdata信号に出力していることを示す信号であり、valid='1'のときにdata信号に有効なデータが出力されている。
【００２９】
enable信号は、データ受信モジュール８０２がdata信号のデータを取り込み可能であることを示す信号であり、enable='1'のときにデータ取り込み可能である。ここではクロック同期のデータ転送であるため、あるクロックサイクルでvalid='1'かつenable='1'であればその時点でのdata信号値がデータ受信モジュール８０２に取り込まれる。
【００３０】
図８（ｂ）は、双方向ハンドシェイクを用いてデータ転送を行う場合のタイミングチャートの例を示している。
時刻ｔ１においては、valid='1'であり、data信号に有効な値Ｄ０が出力されているが、enable='0'であるため、データ受信モジュールでのデータの取り込みは行われない。時刻ｔ２の次のサイクルもenable='0'であるため、データの取り込みは行われない。時刻ｔ２では、valid='1'かつenable='1'であるためデータ値Ｄ０の取り込みが行われ、時刻ｔ３にかけて、データ送信モジュールは新たなデータＤ１を出力する。
【００３１】
時刻ｔ３においては、valid='1'かつenable='1'であるためデータの取り込みが行われるが、その次のサイクルにかけては、データ送信モジュールに新たな送信データがないため、valid='0'を出力する。時刻ｔ４では、データ受信モジュールはデータの取り込みが可能であるため、enable='1'を出力しているが、データ送信モジュールは送信するデータがないため、valid='0'を出力しており、データの取り込みは行われない。時刻ｔ５においては、データ送信モジュールが新たなデータＤ２を出力するため、valid='1'を出力しており、データ受信モジュールはenable='1'を出力しているため、データの取り込みが行われる。
【００３２】
図９は、入力ゲート部１０２の詳細な構成例を示すブロック図である。入力ゲート部１０２は、valid信号をゲートする論理積回路９０１、enable信号をゲートする論理積回路９０２、入力ゲート部制御信号を受ける１段のＤフリップフロップ９０３からなる。
入力ゲート部制御信号はＤフリップフロップ９０３によって１サイクル遅れて遅延ゲート信号として論理積回路９０１、９０２に入力される。遅延ゲート信号値が'1'の場合は、論理積回路９０１、９０２により、valid信号、enable信号の値はそのまま入力から出力に伝えられる。一方、遅延ゲート信号値が'0'の場合は、論理積回路９０１、９０２により、valid信号、enable信号の出力は強制的に'0'にされる。図８で説明したようにvalid='0'、enable='0'の場合には、双方向ハンドシェイクによるデータ転送は成立せずデータは転送されなくなる。
【００３３】
図１０は、出力ゲート部１０４の詳細な構成例を示すブロック図である。出力ゲート部１０４は、valid信号をゲートする論理積回路１００１、enable信号をゲートする論理積回路１００２、出力ゲート部制御信号を受ける１段のＤフリップフロップ１００３からなる。
出力ゲート部制御信号はＤフリップフロップ１００３によって１サイクル遅れて遅延ゲート信号として論理積回路１００１、１００２に入力される。遅延ゲート信号値が'1'の場合は、論理積回路１００１、１００２により、valid信号、enable信号の値はそのまま入力から出力に伝えられる。一方、遅延ゲート信号値が'0'の場合は、論理積回路１００１、１００２により、valid信号、enable信号の出力は強制的に'0'にされる。図８に示したようにvalid='0'、enable='0'の場合には、双方向ハンドシェイクによるデータ転送は成立せずデータは転送されなくなる。
【００３４】
図１１は、本実施形態のクロック制御ステートマシン７０２の状態遷移と出力信号値とを説明する図である。図１１（ａ）は、クロック制御ステートマシン７０２の状態遷移を示しており、このクロック制御ステートマシン７０２は４つの状態からなっている。図１１（ｂ）は、クロック制御ステートマシン７０２が各状態にあるときの出力信号値を示している。
【００３５】
クロック制御ステートマシン７０２のリセットが解除されると、まず、クロック制御ステートマシン７０２は動作状態に入り、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号はいずれも'1'（ＯＮ）となる。動作状態において、クロック制御指示部１０７からクロックを止めるためのクロック制御指示信号として'0'が入力されると、クロック制御ステートマシン７０２は入出力遮断状態１に移行する。入出力遮断状態１では、クロックイネーブル信号は'1'（ＯＮ）であるが、入力ゲート部制御信号、出力制御部制御信号は'0'（ＯＦＦ）となる。
【００３６】
クロック制御ステートマシン７０２は、入出力遮断状態１の次のサイクルでは常にクロックオフ状態に移行する。クロックオフ状態では、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号はいずれも'0'（ＯＦＦ）となる。クロックオフ状態において、クロック制御指示部１０７からクロックを開始するためのクロック制御指示信号として'1'が入力されると、クロック制御ステートマシン７０２は入出力遮断状態２に移行する。入出力遮断状態２では、クロックイネーブル信号は'1'（ＯＮ）であるが、入力ゲート部制御信号、出力制御部制御信号は'0'（ＯＦＦ）となる。クロック制御ステートマシン７０２は、入出力遮断状態２の次のサイクルでは常に動作状態に移行する。
【００３７】
図１２は、本実施形態における特徴量演算部１０３の動作クロックの制御の流れを示すタイミングチャートである。
時刻ｔ１においては、クロック制御指示信号は'1'でクロックオンを指示しており、クロック制御ステートマシン７０２の状態は動作状態である。従って、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号は全て'1'であり、遅延ゲート信号も'1'のため、特徴量演算部１０３にはクロックが供給されており、入出力のハンドシェイクも有効でデータ転送が可能である。
【００３８】
次に、時刻ｔ２には、クロック制御指示信号は'0'となりクロックオフを指示している。これを受けて、次の時刻ｔ３では、クロック制御ステートマシン７０２は入出力遮断状態１に移行する。時刻ｔ３の時点では、入力ゲート部制御信号、出力ゲート部制御信号は'0'になるが、クロックイネーブル信号はまだ'1'のままである。次の時刻ｔ４では、クロック制御ステートマシン７０２はクロックオフ状態に移行する。この時点で、入力ゲート部１０２、出力ゲート部１０４の遅延ゲート信号はいずれも'0'となるため、特徴量演算部１０３の入出力のハンドシェイクは無効となりデータ転送が遮断されてできなくなる。また、この時点で、クロックイネーブル信号は'0'となるが、クロックゲーティング部７０１内でクロックイネーブル信号を受ける１段のフリップフロップの影響により、まだ特徴量演算部へのクロック供給は止まっていない。
【００３９】
次の時刻ｔ５ではクロック制御指示信号が'0'のままのため、クロックオフ状態が継続し、この時点で特徴量演算部１０３へのクロック供給も停止する。このように、特徴量演算部１０３の入出力を時刻ｔ４で強制的に遮断した後、時刻ｔ５でクロック供給を止めているため、データ転送の整合性を保ちつつ、クロックオフの指示があってから、速やかにクロックを止めることができる。
【００４０】
その後、時刻ｔ６には、クロック制御指示信号は'1'となりクロックオンを指示している。これを受けて、次の時刻ｔ７では、クロック制御ステートマシン７０２は入出力遮断状態２に移行する。時刻ｔ７の時点では、入力ゲート部制御信号、出力ゲート部制御信号は'0'のままであるが、クロックイネーブル信号は'1'に変化する。次の時刻ｔ８では、クロック制御ステートマシン７０２は動作状態に移行する。クロックイネーブル信号は前のサイクルで'1'となっているため、時刻ｔ８の時点で、特徴量演算部１０３へのクロック供給が開始される。また、時刻ｔ８の時点で、入力ゲート部制御信号、出力ゲート部制御信号は'1'となるが、入力ゲート部１０２、出力ゲート部１０４の遅延ゲート信号は'0'のままである。
【００４１】
次の時刻ｔ９では、クロック制御指示信号が'1'のままであるため、動作状態が継続し、遅延ゲート信号は'1'に変化する。遅延ゲート信号が'1'になると、特徴量演算部１０３の入出力のハンドシェイクは有効となり、データ転送が再度可能となる。このように、特徴量演算部１０３のクロック供給を時刻ｔ８で開始した後、入出力を時刻ｔ９で可能としているため、データ転送の整合性を保ちつつ、クロックオンの指示があってから、速やかに動作を再開できる。
【００４２】
時刻ｔ１０からｔ１５は、クロック制御指示信号が２サイクルだけ'0'になった場合の動作例である。時刻ｔ１０において、クロック制御指示信号が'0'となり、次の時刻ｔ１１において、入出力遮断状態１に移行すると共に、入力ゲート部制御信号、出力ゲート部制御信号が'0'となる。さらに次の時刻ｔ１２において、クロックオフ状態に移行すると共に、特徴量演算部１０３の入出力のハンドシェイクは無効とされる。また、時刻ｔ１２において、クロックイネーブル信号は'0'となる。さらにこの動作例では、時刻ｔ１２において、クロック制御指示信号が'1'になる。
【００４３】
次の時刻ｔ１３においては、前サイクルでクロックイネーブル信号が'0'であったため、特徴量演算部１０３へのクロック供給が停止する。一方、クロック制御ステートマシンの状態は、クロック制御指示信号='1'を受けて、入出力遮断状態２に移行し、クロックイネーブル信号は'1'となる。次の時刻ｔ１４においては、動作状態に移行し、入力ゲート部制御信号、出力ゲート部制御信号は'1'となるとともに、特徴量演算部１０３へのクロック供給が再開される。
【００４４】
次の時刻ｔ１５においては、入力ゲート部１０２、出力ゲート部１０４の遅延ゲート信号が'1'となり、特徴量演算部１０３の入出力動作が再開される。このように、クロック制御ステートマシン７０２、入力ゲート部１０２、出力ゲート部１０４、及びクロックゲーティング部７０１が連動して動作することにより、クロック制御指示信号の変化に追従して、速やかにクロック供給の停止・再開が可能となる。そして、入出力の制御の遅延とクロックの制御の遅延を厳密に揃える必要がないため、設計が容易になるという利点がある。
【００４５】
なお、図７のクロックゲーティング部７０１において、クロックイネーブル信号を受ける１段のフリップフロップは、本実施形態で示した出力制御・クロック制御の動作の整合性が保たれる限りは、個別に無くてもよく、逆に、個別に２段以上であってもよい。図９の入力ゲート部１０２において入力ゲート部制御信号を受ける１段のＤフリップフロップ、図１０の出力ゲート部１０４において出力ゲート部制御信号を受ける１段のＤフリップフロップについても同様である。但し、その場合のクロック制御ステートマシン７０２の状態遷移、タイミングチャートは図１１、図１２からずれることになる。また、本実施形態では、画像認識装置１００の例を用いて説明を行ったが、データの種別は画像である必要はなく、また、データ処理の内容も認識処理である必要はない。
【００４６】
（第２の実施形態）
以下、本発明の第２の実施形態の構成について、図１３を用いて説明する。
図１３は、画像中の被写体を認識するための画像認識装置１３００の機能構成例を示すブロック図であり、第１の実施形態と同じ部分に関しては、同じ符号を用いている。本実施形態において、第１の実施形態と異なる部分は、入力ゲート部１３０１、出力ゲート部１３０２、クロック制御部１３０３である。その他の部分は、第１の実施形態と同じであり、同じ動作を行うため、説明を省略する。
【００４７】
次に、クロック制御部１３０３、入力ゲート部１３０１、出力ゲート部１３０２について、図１４から図１６を用いて説明する。
図１４は、クロック制御部１３０３の詳細な構成例を示すブロック図である。クロック制御部１３０３は、クロックゲーティング部７０１、クロック制御ステートマシン１４０１から成る。
【００４８】
クロック制御ステートマシン１４０１は、クロック制御指示信号を受けて動作するステートマシンであり、そのステートに応じて、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号を出力する。クロックゲーティング部７０１は、第１の実施形態と同じく、クロック制御ステートマシン７０２の出力するクロックイネーブル信号を受けて特徴量演算部１０３に供給するクロックのオン、オフを行う。本実施形態では、クロック制御ステートマシン１４０１の出力するクロックイネーブル信号をクロックゲーティング部７０１で１段のフリップフロップで受けて使用する前提である。このため、クロックイネーブル信号が変化して１サイクル後にクロックのオン・オフが変化する。
【００４９】
図１５は、入力ゲート部１３０１の詳細な構成例を示すブロック図である。入力ゲート部１３０１は、enable信号をゲートする論理積回路１５０１、入力ゲート部制御信号を受ける１段のＤフリップフロップ１５０２からなる。
入力ゲート部制御信号はＤフリップフロップ１５０２によって１サイクル遅れて遅延ゲート信号として論理積回路１５０１に入力される。遅延ゲート信号値が'1'の場合は、論理積回路１５０１により、enable信号の値はそのまま入力から出力に伝えられる。
【００５０】
一方、遅延ゲート信号値が'0'の場合は、論理積回路１５０１により、enable信号の出力は強制的に'0'にされる。第１の実施形態とは異なり、特徴量演算部１０３に入力されるvalid信号に関してはそのまま伝えられる。
【００５１】
図１６は、出力ゲート部１３０２の詳細な構成例を示すブロック図である。出力ゲート部１３０２は、valid信号をゲートする論理積回路１６０１、出力ゲート部制御信号を受ける１段のＤフリップフロップ１６０２からなる。
出力ゲート部制御信号はＤフリップフロップ１６０２によって１サイクル遅れて遅延ゲート信号として論理積回路１６０１に入力される。遅延ゲート信号値が'1'の場合は、論理積回路１６０１により、valid信号の値はそのまま入力から出力に伝えられる。
【００５２】
一方、遅延ゲート信号値が'0'の場合は、論理積回路１６０１により、valid信号の出力は強制的に'0'にされる。第１の実施形態とは異なり、特徴量演算部１０３に入力されるenable信号に関してはそのまま伝えられる。
【００５３】
図１７は、本実施形態のクロック制御ステートマシン１４０１の状態遷移と出力信号値を説明する図である。図１７（ａ）は、クロック制御ステートマシン１４０１の状態遷移を示しており、このクロック制御ステートマシン１４０１は２つの状態からなっている。図１７（ｂ）は、クロック制御ステートマシン１４０１が各状態にあるときの出力信号値を示している。
【００５４】
クロック制御ステートマシン１４０１のリセットが解除されると、まず、クロック制御ステートマシン１４０１は動作状態に入り、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号はいずれも'1'（ＯＮ）となる。動作状態において、クロック制御指示部１０７からクロックを止めるためのクロック制御指示信号として'0'が入力されると、クロック制御ステートマシン１４０１はクロックオフ状態に移行する。クロックオフ状態では、クロックイネーブル信号、入力ゲート部制御信号、出力制御部制御信号は'0'（ＯＦＦ）となる。クロックオフ状態において、クロック制御指示部１０７からクロックを開始するためのクロック制御指示信号として'1'が入力されると、ステートマシンは動作状態に移行する。
【００５５】
図１８は、本実施形態における特徴量演算部１０３の動作クロックの制御の流れを示すタイミングチャートである。
時刻ｔ１においては、クロック制御指示信号は'1'でクロックオンを指示しており、クロック制御ステートマシン１４０１の状態は動作状態である。従って、クロックイネーブル信号、入力ゲート部制御信号、出力ゲート部制御信号は全て'1'であり、遅延ゲート信号も'1'のため、特徴量演算部１０３にはクロックが供給されており、入出力のハンドシェイクも有効でデータ転送が可能である。
【００５６】
次に、時刻ｔ２には、クロック制御指示信号は'0'となりクロックオフを指示している。これを受けて、次の時刻ｔ３では、クロック制御ステートマシン１４０１はクロックオフ状態に移行する。時刻ｔ３の時点で、入力ゲート部制御信号、出力ゲート部制御信号、クロックイネーブル信号は同時に'0'になる。次の時刻ｔ４では、入力ゲート部１３０１、出力ゲート部１３０２の遅延ゲート信号はいずれも'0'となるため、特徴量演算部１０３の出力するハンドシェイク信号は無効となりデータ転送が遮断されてできなくなる。また、この時点で、特徴量演算部１０３へのクロック供給も停止するため、特徴量演算部１０３に入力されるハンドシェイク信号（入力側のvalid信号、出力側のenable信号）が仮に有効であっても、特徴量演算部１０３は誤動作しない。
【００５７】
ここで、もし、特徴量演算部１０３に入力されるハンドシェイク信号（入力側のvalid信号、出力側のenable信号）が有効で、かつ、特徴量演算部１０３へのクロック供給が停止していないとすると、特徴量演算部１０３が動作する。よって、入力データを取り込んだり、出力データを出力済みにしてしまったりする可能性がある。ところが、特徴量演算部１０３の入出力相手のモジュールは、入力ゲート部１３０１、出力ゲート部１３０２の作用によって、入出力は成立していないとみなすため、誤動作が起こってしまう。このように、特徴量演算部１０３の入出力を時刻ｔ４で強制的に遮断すると同時にクロック供給を止めているため、データ転送の整合性を保ちつつ、クロックオフの指示があってから、速やかにクロックを止めることができる。
【００５８】
その後、時刻ｔ５には、クロック制御指示信号は'1'となりクロックオンを指示している。これを受けて、次の時刻ｔ６では、クロック制御ステートマシン１４０１は動作状態に移行する。時刻ｔ６の時点で、入力ゲート部制御信号、出力ゲート部制御信号、クロックイネーブル信号は'1'に変化する。次の時刻ｔ７では、クロックイネーブル信号は前のサイクルで'1'となっているため、特徴量演算部１０３へのクロック供給が開始される。また、時刻ｔ７の時点で、入力ゲート部１３０１、出力ゲート部１３０２の遅延ゲート信号は'1'に変化する。遅延ゲート信号が'1'になると、特徴量演算部１０３の出力するハンドシェイク信号は有効となり、データ転送が再度可能となる。このように、特徴量演算部１０３のクロック供給を時刻ｔ７で開始すると同時に、入出力を時刻ｔ７で可能としているため、データ転送の整合性を保ちつつ、クロックオンの指示があってから、速やかに動作を再開できる。
【００５９】
時刻ｔ８からｔ１２は、クロック制御指示信号が２サイクルだけ'0'になった場合の動作例である。時刻ｔ８において、クロック制御指示信号が'0'となり、次の時刻t９において、クロックオフ状態に移行すると共に、入力ゲート部制御信号、出力ゲート部制御信号、クロックイネーブル信号が'0'となる。さらに次の時刻ｔ１０において、遅延ゲート信号が'0'となり、特徴量演算部１０３の出力しているハンドシェイク信号は無効とされる。
【００６０】
また、同時に、特徴量演算部１０３へのクロック供給も停止する。さらにこの動作例では、時刻ｔ１０において、クロック制御指示信号が'1'になる。次の時刻ｔ１１において、クロック制御ステートマシン１４０１の状態は、クロック制御指示信号='1'を受けて、動作状態に移行し、入力ゲート部制御信号、出力ゲート部制御信号、クロックイネーブル信号は'1'となる。次の時刻ｔ１２においては、遅延ゲート信号が'1'となり、特徴量演算部１０３の出力しているハンドシェイク信号が有効となる。
【００６１】
また、同時に、特徴量演算部１０３へのクロック供給が再開される。ここで、もし、クロック供給が再開された後で、遅延ゲート信号が'1'になるとすると、クロック供給再開時点で、特徴量演算部１０３が動作し、入力データを取り込んだり、出力データを出力済みにしてしまったりする可能性がある。ところが、この時点では、特徴量演算部１０３の入出力相手のモジュールは、入力ゲート部１３０１、出力ゲート部１３０２の作用によって、入出力は成立していないとみなすため、誤動作が起こってしまう。このように、クロック制御ステートマシン１４０１、入力ゲート部１３０１、出力ゲート部１３０２、クロックゲーティング部７０１が連動して動作することにより、クロック制御指示信号の変化に追従して、速やかにクロック供給の停止・再開が可能となる。
【００６２】
本実施形態では入出力の制御とクロックの制御が同時に起こるが、第１の実施形態では、入出力を遮断してからクロックオフ、クロックをオンしてから入出力を再開と、入出力の制御とクロックの制御にタイミング差がある。ところが、本実施形態では、第１の実施形態よりも速やかにクロック供給の停止・再開ができる利点がある。
【００６３】
なお、図１４のクロックゲーティング部７０１において、クロックイネーブル信号を受ける１段のフリップフロップは、本実施形態に示した入出力制御・クロック制御の動作の整合性が保たれる限りは、個別に無くてもよいし、個別に２段以上であってもよい。また、図１５の入力ゲート部１３０１において入力ゲート部制御信号を受ける１段のＤフリップフロップ、図１６の出力ゲート部１３０２において出力ゲート部制御信号を受ける１段のＤフリップフロップについても同様である。但し、その場合のクロック制御ステートマシン１４０１の状態遷移、タイミングチャートは図１７、図１８からずれることになる。また、本実施形態では、画像認識装置１３００の例を用いて説明を行ったが、データの種別は画像である必要はなく、また、データ処理の内容も認識処理である必要はない。
【００６４】
（第３の実施形態）
以下、本発明の第３の実施形態の構成について、図１９を用いて説明する。
図１９は、画像中の被写体を認識するための画像認識装置１９００の機能構成例を示すブロック図であり、第１の実施形態と同じ部分に関しては、同じ符号を用いている。本実施形態において、第１の実施形態と異なる部分は、画像データ入力部１９０１、入力ゲート部１９０２、特徴量演算部１９０３、出力ゲート部１９０４、特徴量メモリ部１９０５、１９０７、被写体照合部１９０６、１９０８、クロック制御指示部１９０９である。その他の部分は、第１の実施形態と同じであり、同じ動作を行うため、説明を省略する。
【００６５】
本実施形態においては、一つの入力画像に対して、２種類の被写体の認識を同時に実行するため、画像データ入力部１９０１以降のデータパスが２つに分かれている。入力ゲート部１９０２、特徴量演算部１９０３、出力ゲート部１９０４は２つのデータパスを同時に扱うように構成されている。入力ゲート部１９０２、出力ゲート部１９０４については、入力ゲート部制御信号、出力ゲート部制御信号によって、２つのデータパスを同時に有効化・無効化することができる。
【００６６】
また、特徴量メモリ部１９０５、１９０７、被写体照合部１９０６、１９０８は、２種類の被写体を同時に認識するために２つずつ用意されており、２つの特徴量メモリ部１９０５、１９０７の出力するメモリ使用量情報は通常異なっている。クロック制御指示部１９０９は、２つの特徴量メモリ部１９０５、１９０７の出力するメモリ使用量情報を入力とし、いずれのメモリにも書き込み可能領域の空きがない場合に特徴量演算部１９０３のクロックを止めるようクロック制御指示信号を出力する。
【００６７】
本実施形態における各部の動作、および、クロック制御動作に関しては、第１の実施形態と同様である。なお、本実施形態では、画像認識装置の例を用いて説明を行ったが、データの種別は画像である必要はなく、また、データ処理の内容も認識処理である必要はない。
【００６８】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６９】
１０２  入力ゲート部
１０３  特徴量演算部
１０４  出力ゲート部
１０７  クロック制御指示部
１０８  クロック制御部
【図１】
0005751819.tif 000002
【図２】
0005751819.tif 000003
【図３】
0005751819.tif 000004
【図４】
0005751819.tif 000005
【図５】
0005751819.tif 000006
【図６】
0005751819.tif 000007
【図７】
0005751819.tif 000008
【図８】
0005751819.tif 000009
【図９】
0005751819.tif 000010
【図１０】
0005751819.tif 000011
【図１１】
0005751819.tif 000012
【図１２】
0005751819.tif 000013
【図１３】
0005751819.tif 000014
【図１４】
0005751819.tif 000015
【図１５】
0005751819.tif 000016
【図１６】
0005751819.tif 000017
【図１７】
0005751819.tif 000018
【図１８】
0005751819.tif 000019
【図１９】
0005751819.tif 000020