(57)【要約】      （修正有）【課題】プログラマブル回路を用いて複数種類の処理を行う場合における、スループットを向上させる。【解決手段】信号処理装置１００において、プログラマブル回路１０１を第１の処理の回路設定から第２の処理の回路設定に切り替えるためのコンフィグレーション情報及びプログラマブル回路における処理単位のＡＬＵ１０２の接続関係の上流側のＡＬＵの処理データが、下流側のＡＬＵの出力となるまでの期間を示す情報を含むタイミング情報を保持する保持部と、第１の処理から第２の処理に切り替える場合、第１の処理における最終のデータが上流側のＡＬＵの出力されるタイミングに基づき上流に位置するＡＬＵを第２の処理に係るコンフィグレーション情報に基づいて更新し、第１の処理における最終のデータが下流側のＡＬＵの出力されるタイミングに基づき下流に位置するＡＬＵを第２の処理に係るコンフィグレーション情報に基づき更新する更新部とを有する。【選択図】図１
2020173517.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブル回路を有し、当該プログラマブル回路を用いて複数の種類の処理を行う情報処理装置であって、
前記プログラマブル回路を第１の処理の回路設定から第２の処理の回路設定に切り替えるためのコンフィグレーション情報、及び、前記プログラマブル回路における処理単位のＡＬＵ（Arithmetic and Logic Unit）の接続関係の上流側のＡＬＵの処理データが下流側のＡＬＵの出力となるまでの期間を示すタイミング情報とを保持する保持手段と、
前記第１の処理から前記第２の処理に切り替える場合、前記タイミング情報に基づき、前記第１の処理における最終のデータが前記上流側のＡＬＵの出力されるタイミングに基づき前記上流に位置するＡＬＵを前記第２の処理に係るコンフィグレーション情報に基づいて更新し、前記第１の処理における最終のデータが前記下流側のＡＬＵの出力されるタイミングに基づき前記下流に位置するＡＬＵを前記第２の処理に係るコンフィグレーション情報に基づき更新する更新手段と
を有することを特徴とする情報処理装置。
【請求項２】
前記更新手段は、前記第１の処理の回路設定での前記下流側のＡＬＵの遅延量が、上流側のＡＬＵの遅延量が少ない場合、当該遅延量の差に応じて、処理対象のデータの伝搬を停止する手段を有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記更新手段は、前記第１の処理の回路設定での前記下流側のＡＬＵの遅延量が、上流側のＡＬＵの遅延量が多い場合、当該遅延量の差に応じて、処理対象のデータの有効／無効を示す制御信号を発生する手段を有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記更新手段は、各ＡＬＵを、各ＡＬＵによる処理対象であるデータに同期して伝搬される信号に応じて更新することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記更新手段は、連続して接続された複数のＡＬＵに対し、それぞれの遅延量に応じて更新する信号を発生する複数のパルス生成器を有し、当該複数のパルス生成器で発生した信号を、各ＡＬＵを更新するための信号として供給することを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記並列の関係にあるＡＬＵは、１つのパルス生成器から発生した信号に従って更新されることを特徴とする請求項１に記載の情報処理装置。
【請求項７】
前記プログラマブル回路は、
ワークエリアとして使用するＳＲＡＭと、
該ＳＲＡＭのデータをＡＬＵに供給するため、当該ＳＲＡＭのアドレス、リード、ライトを、前記コンフィグレーション情報に基づき制御する制御部と
を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項８】
プログラマブル回路を有し、当該プログラマブル回路を用いて複数の種類の処理を行う情報処理装置の制御方法であって、
前記プログラマブル回路を第１の処理の回路設定から第２の処理の回路設定に切り替えるためのコンフィグレーション情報、及び、前記プログラマブル回路における処理単位のＡＬＵ（Arithmetic and Logic Unit）の接続関係の上流側のＡＬＵの処理データが下流側のＡＬＵの出力となるまでの期間を示すタイミング情報とを保持する保持工程と、
前記第１の処理から前記第２の処理に切り替える場合、前記タイミング情報に基づき、前記第１の処理における最終のデータが前記上流側のＡＬＵの出力されるタイミングに基づき前記上流に位置するＡＬＵを前記第２の処理に係るコンフィグレーション情報に基づいて更新し、前記第１の処理における最終のデータが前記下流側のＡＬＵの出力されるタイミングに基づき前記下流に位置するＡＬＵを前記第２の処理に係るコンフィグレーション情報に基づき更新する更新工程と
を有することを特徴とする情報処理装置の制御方法。
【請求項９】
コンピュータが読み込み実行することで、前記コンピュータに、請求項７に記載の方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル回路を有する情報処理装置及びその制御方法及びプログラムに関するものである。
【背景技術】
【０００２】
回路の内部機能を自由に構成することができるＦＰＧＡ（Field Programmable Gate Array）またはＰＬＤ（Programmable Logic Device）等のプログラマブル回路が知られている。このようなプログラマブル回路は、例えば内部に複数持つ要素回路であるＡＬＵ（Arithmetic and Logic Unit）を使用して所望の処理回路を実現することができる。また、このようなプログラマブル回路では、ＡＬＵの機能を規定するコンフィギュレーション情報を書き換えることで処理回路を切り替えることが可能となる。例えば特許文献１では、コンフィギュレーション情報をシフトレジスタの構成で各ＡＬＵに伝搬し、処理回路を切り替えている。また、各ＡＬＵはコンフィギュレーション情報の書き換えが許可された時のみ書き換えを行うことで、所望のＡＬＵのみコンフィギュレーション情報の書き換えを行うことができる構成となっている。
【０００３】
また、特許文献２には、ＳＲＡＭ等のメモリを演算に使用するプログラマブル回路が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−２５３７９号公報
【特許文献２】特開２０１０−２４４２３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
コンフィギュレーション情報を書き換える際には、未出力データの破壊を防ぐために処理回路が入力信号を全て演算完了し、演算結果を出力した後に書き換える必要がある。つまり、データを出力し終わるまでは、入力を停止する必要があり、スループットを向上させることが困難であった。
【０００６】
本発明は上記課題に鑑みて成されたものであり、プログラマブル回路のスループットを向上させる技術を提供しようとするものである。
【課題を解決するための手段】
【０００７】
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、
プログラマブル回路を有し、当該プログラマブル回路を用いて複数の種類の処理を行う情報処理装置であって、
前記プログラマブル回路を第１の処理の回路設定から第２の処理の回路設定に切り替えるためのコンフィグレーション情報、及び、前記プログラマブル回路における処理単位のＡＬＵ（Arithmetic and Logic Unit）の接続関係の上流側のＡＬＵの処理データが下流側のＡＬＵの出力となるまでの期間を示すタイミング情報とを保持する保持手段と、
前記第１の処理から前記第２の処理に切り替える場合、前記タイミング情報に基づき、前記第１の処理における最終のデータが前記上流側のＡＬＵの出力されるタイミングに基づき前記上流に位置するＡＬＵを前記第２の処理に係るコンフィグレーション情報に基づいて更新し、前記第１の処理における最終のデータが前記下流側のＡＬＵの出力されるタイミングに基づき前記下流に位置するＡＬＵを前記第２の処理に係るコンフィグレーション情報に基づき更新する更新手段とを有する。
【発明の効果】
【０００８】
本発明によれば、プログラマブル回路を用いて複数種類の処理を行う場合における、プログラマブル回路のスループットを向上させることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態における信号処理装置を示すブロック図。
【図２】第１の実施形態における信号処理装置の動作を示すフローチャート。
【図３】第１の実施形態における従来のプログラマブル回路のタイミングチャート。
【図４】第１の実施形態におけるプログラマブル回路のタイミングチャート。
【図５】第２の実施形態における従来のプログラマブル回路のタイミングチャート。
【図６】第２の実施形態におけるプログラマブル回路のタイミングチャート。
【図７】第２の実施形態におけるプログラマブル回路の構成を示すブロック図。
【図８】第３の実施形態におけるプログラマブル回路のタイミングチャート。
【図９】実施形態におけるＡＬＵの構成を示すブロック図。
【図１０】実施形態におけるＡＬＵによるパルス生成回路の構成を示すブロック図。
【図１１】第１の実施形態におけるＡＬＵの構成を示すブロック図。
【図１２】第４の実施形態におけるプログラマブル回路のタイミングチャート。
【図１３】第４の実施形態におけるタイミング制御部とプログラマブル回路の構造を示す図。
【図１４】第５の実施形態におけるタイミング制御部とプログラマブル回路の構造を示す図。
【図１５】第６の実施形態における信号処理装置を示すブロック図。
【図１６】第６の実施形態におけるデータ記憶部を使用した時の書き換え信号の伝搬を示す図。
【図１７】第７の実施形態におけるデータ記憶部を使用した時の書き換え信号の伝搬を示す図。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１１】
［第１の実施形態］
図１は、第１の実施形態における情報処理装置のブロック構成図である。本装置は、装置全体の制御を司るＣＰＵ１０７、データ記憶部１０６ａ、１０６ｂ、信号処理装置１００、及び、外部記憶部１１０を有する。
【００１２】
信号処理装置１００は、プログラマブル回路部１０１、コンフィギュレーション制御部１０３、回路情報記憶部１１３、タイミング制御部１０４、データフロー制御部１０８から構成される。
【００１３】
プログラマブル回路部１０１は、ＦＰＧＡまたはＰＬＤ等で構成されるものであり、コンフィギュレーション情報を保持する複数のデータ記憶部１１２と、要素回路（処理単位）である複数のＡＬＵ（Arithmetic and Logic Unit）１０２で構成され、データ記憶部１０６ｂに保持されている処理データを被処理データとして入力し、信号処理を行う。データ記憶部１１２は、コンフィギュレーション制御部１０３より渡されるコンフィギュレーション情報を保持するレジスタである。ＡＬＵ１０２は２入力１出力の論理演算器であり、データ記憶部１１２に保持されたコンフィギュレーション情報に基づいて複数の信号の中から２つの信号を選択し、例えば加算や減算などの所望の演算を行うことが出来る。このＡＬＵ１０２を組み合わせることで所望の処理回路を実現することが出来る。
【００１４】
回路情報記憶部１１３は、データ記憶部１０６ａに保持されている回路情報を保持するＳＲＡＭ等の記憶部である。後述するコンフィギュレーション制御部１０３は回路情報を複数回参照する。回路情報をあらかじめ信号処理装置１００内の回路情報記憶部１１３に保存しておくことで、コンフィギュレーション制御部１０３が回路情報を高速に読み出すことができる。
【００１５】
コンフィギュレーション制御部１０３は、回路情報記憶部１１３に保持されている回路情報を読み出す。そして、コンフィギュレーション制御部１０３は、読み出した回路情報をデコードする。このデコード結果、コンフィグレーション情報、及び、コンフィグレーション情報に含まれる各種設定情報毎の書き換えタイミングを表すタイミング情報が得られる。コンフィギュレーション制御部１０３は、得られたコンフィギュレーション情報をデータ記憶部１１２に転送し、タイミング情報をタイミング制御部１０４に設定し、タイミング制御部１０４による書き換え信号１０５の生成タイミングを規定する。また、コンフィギュレーション制御部１０３は、後述するデータフロー制御部１０８において、入力処理データのフロー制御に必要な制御情報を設定する。
【００１６】
タイミング制御部１０４は、コンフィギュレーション情報制御部１０３の制御下にて、後述するパルス形式の書き換え信号１０５を任意のタイミングで生成し、入力される被処理データに同期して伝搬する。
【００１７】
書き換え信号１０５は、複数のＡＬＵ１０２のコンフィギュレーション情報を更新するタイミングを知らせるロード信号であり、入力された信号に同期して伝搬される。
【００１８】
書き換え信号１０５を生成するタイミングは、所望の処理回路で処理するデータの最終処理タイミングで発行することが望ましい。処理するデータの最終処理タイミングで発行することで、各ＡＬＵがそれぞれ所望のデータ数分処理を完了した後に、コンフィギュレーション情報を更新することができる。
【００１９】
データフロー制御部１０８は、プログラマブル回路部１０１に入出力される処理データを制御する。このデータフロー制御部１０８は、コンフィギュレーション制御部１０３から渡される制御情報に基づいて、入力処理データのフロー制御を行う。
【００２０】
データ記憶部１０６ａは、本実施形態の信号処理装置１００で使用する回路情報を記憶する一時記憶手段であり、ＳＲＡＭ等で構成される。
【００２１】
データ記憶部１０６ｂは、本実施形態の信号処理装置１００で使用する処理データを記憶する一時記憶手段であり、ＳＲＡＭ等で構成される。またデータ記憶部１０６ｂは、後述するＣＰＵ１０７のワークエリアを提供する。
【００２２】
ＣＰＵ１０７はプログラムに従って演算処理及び制御処理を実行するプロセッサ等の制御部である。不図示の記憶部に記憶された各種プログラムにより各種信号処理を実行する。
【００２３】
外部記憶部１１０は、ＣＦ（コンパクトフラッシュ（登録商標））やＳＤカード等のデータを記録することが出来るデータ保持部である。
【００２４】
次に、図９を用いてＡＬＵ１０２の内部構成を説明する。ＡＬＵ１０２は、入力選択部９０１、遅延調整部９０２、演算部９０３により構成され、２入力１出力の算術演算回路として機能する。各入力は独立して遅延量調整が可能で、内部の演算器の直前で選択された入力信号の遅延が揃うように構成されている。
【００２５】
入力選択部９０１は、データ記憶部１１２に保持されたデータにしたがって、複数の信号９０４からＡＬＵ１０２で使用する２つの信号を選択する。複数の信号９０４は、例えばデータ記憶部１０６ｂから入力される処理データや、複数存在するＡＬＵ１０２の出力信号の内の１つを選択することができる。選択された信号はそれぞれＡ側入力データＡ＿ＩＮ、Ｂ側入力データＢ＿ＩＮとする。Ａ側入力セレクタ９０５ａは、複数の入力信号から、Ａ側入力データ選択レジスタＡｉｎＳｅｌ９０６ａの設定値に基づいて１つを選択して、Ａ＿ＩＮとして遅延調整部９０２に出力する。Ｂ側入力セレクタ９０５ｂは、複数の入力信号から、Ｂ側入力データ選択レジスタＢｉｎＳｅｌ９０６ｂの設定値に基づいて１つを選択して、Ｂ＿ＩＮとして遅延調整部９０２に出力する。
【００２６】
ＡＬＵ１０２内に存在する複数の入力データ選択レジスタ９０６ａ、９０６ｂ、９０９ａ、９０９ｂ、９１２はそれぞれ信号を選択するセレクタの設定値を保持するレジスタである。これら複数のレジスタの設定値は、データ記憶部１１２に保持されたコンフィギュレーション情報である。
【００２７】
入力データを選択する設定を保持する入力データ選択レジスタ９０６ａ、９０６ｂは、それぞれの入力データ選択レジスタ９０６ａ、９０６ｂに対応したセレクタ９０５ａ、９０５ｂが出力した信号に同期して伝搬されている書き換え信号１０５を参照する。それら書き換え信号１０５がＨｉｇｈの場合、データ記憶部１１２に保持された設定値を、入力データ選択レジスタ９０６ａ，９０６ｂにロードする。例えばＡ側入力データ選択レジスタ９０６ａは、信号Ａ＿ＩＮに同期して伝搬されている書き換え信号９０７ａを参照し、９０７ａがＨｉｇｈの時、データ記憶部１１２に保持された設定値を設定する。
【００２８】
このように、書き換え信号１０５を遅延させることで、複数のレジスタそれぞれにおける最後のデータが到達するタイミング、もしくは次の回路設定が適用される最初のデータが到達するタイミングで設定値を更新することが可能となる。
【００２９】
遅延調整部９０２は、入力選択部９０１によって選択された入力信号Ａ＿ＩＮとＢ＿ＩＮの遅延調整を行う。遅延調整部９０２は、多段の遅延素子９０８ａ、９０８ｂを持ち、シフトレジスタを構成する事で多段の遅延調整を実現することが出来る。Ａ側遅延選択レジスタ９０９ａを設定することで、所望の段数の遅延素子９０８ａの出力を、後段の演算部９０３に信号ＤＥＬＡＹ＿Ａとして出力する。同様にＢ側遅延選択レジスタ９０９ｂを設定することで、所望の段数の遅延素子９０８ｂの出力を、後段の演算部９０３に信号ＤＥＬＡＹ＿Ｂとして出力する。
【００３０】
演算部９０３は、遅延調整された２つの入力信号ＤＥＬＡＹ＿Ａ、ＤＥＬＡＹ＿Ｂを用いて所定の演算を行う。図に示している演算器は本実施形態の一例であり、実際にどのような演算器を搭載するかについての制限はない。例えば四則以外に、論理演算子ＡＮＤ，ＯＲや比較演算子などを搭載してもよい。また、演算器の後にビットシフトする機構を設けてもよい。演算結果選択セレクタ９１１は、演算結果選択レジスタ９１２の設定値に基づいて演算結果を選択し、ＡＬＵ１０２の出力として後段に出力する。
【００３１】
プログラマブル回路部１０１はこのようなＡＬＵ１０２を複数組み合わせて所望の処理回路を実現する。ここで、処理回路の一例としてパルス生成回路を図１０に例示する。
【００３２】
図１０は、ＡＬＵ１０２を２個使用して作られたパルス生成回路である。参照符号１０００及び１００１は前記ＡＬＵ１０２にコンフィギュレーション情報を設定して得た演算回路の例示である。
【００３３】
ＡＬＵ１０００はカウンタ（積算回路）を実現しており、２入力のうちの１入力のみを使用している。入力信号１００２を固定値１とすることで、インクリメントするカウンタ構成を実現できる。
【００３４】
ＡＬＵ１００１は、比較器を構成し、ＡＬＵ１０００からのカウント値が比較値１００３と等価な時にＨｉｇｈとしてパルス信号１００５を出力する。
【００３５】
このようにＡＬＵを組み合わせることで、パルス生成回路等の所望の回路を実現することが可能となる。
【００３６】
＜プログラマブル回路処理例＞
本実施形態では、イメージセンサー上の分割画素を用いた瞳分割方式によるデフォーカス量の取得から距離マップを形成する処理フローの一部をプログラマブル回路で実施する例を説明する。分割画素を持つイメージセンサーの構成や、視差画像に対応した距離マップの取得手法については、既知の技術を使用するものとし、その説明は省略する。
【００３７】
図２は、視差画像からデフォーカス量を検出して距離マップを作成する処理のフローチャートである。撮像面からの視差画素取得及び、距離マップ生成自体は従来の技術であり、本発明の本旨には影響しないため、その説明については割愛する。ここでは距離マップ取得のための演算処理の一部をプログラマブル回路で実施する際の、回路の書き換え信号１０５の伝搬を例示する。視差画像は本実施形態では２分割画素とし、それぞれＡ像、Ｂ像と定義する。
【００３８】
Ｓ２００にて、Ａ像の信号から輝度値（以下、Ｙ値とする）を取得する。Ｓ２０１にて、Ｂ像信号からも同様にＹ値を取得する。Ｓ２０２にて、Ｓ２００及びＳ２０１で得られたＹ値から、視差間の相関演算を行う。Ｓ２０３にて、Ｓ２０２の相関演算で得た視差間の相対的な像ズレ量からデフォーカス量が推定される。Ｓ２０４にて、レンズ収差による面内のデフォーカス量ムラが補正される。
【００３９】
本実施形態では、上記のＳ２００〜Ｓ２０４のように処理の種類が変わるたびに、プログラマブル回路部１０１内のＡＬＵ構成を切り替えるため、Ｓ２００〜Ｓ２０４それぞれにて回路情報２００〜２０４を設定する。回路情報２００〜２０４は図１のデータ記憶部１０６ａ上にあらかじめ格納されている。プログラマブル回路部１０１の初期化時に、ＣＰＵ１０７の制御下で、回路情報２００〜２０４が回路情報記憶部１１３に転送される。
【００４０】
コンフィギュレーション制御部１０３は、回路情報２００をデコードして、図９の入力データ選択レジスタ９０６ａ、９０６ｂに設定すべき値を、各ＡＬＵ１０２に渡す。プログラマブル回路部１０１の回路コンフィギュレーションに係るレジスタは、データ記憶部１１２のようなプライマリレジスタと、入力データ選択レジスタ９０６ａ，９０６ｂのようなセカンダリレジスタのダブルバッファ構成を取る。コンフィギュレーション制御部１０３は、回路情報２００に基づいてプライマリレジスタに渡した値を、各ＡＬＵ１０２に搭載したセカンダリレジスタに転送させる。そして、転送完了後、コンフィギュレーション制御部１０３は、プライマリレジスタを次の回路情報に更新すべく、回路情報記憶部１１３に対して回路情報２０１の転送を要求する。
【００４１】
各ＡＬＵ１０２内に存在するセカンダリレジスタが設定値を更新するタイミングは、各設定レジスタで設定したセレクタの出力信号に同期して伝搬されている書き換え信号が、各設定レジスタに到達したタイミングである。書き換え信号は、タイミング制御部１０８により任意のタイミングで生成され、プログラマブル回路部１０１の入力信号に同期して伝搬している。このようにすることで、それぞれのＡＬＵ１０２における１つ目の回路設定における処理が終了した次のサイクルで、２つ目の回路設定における処理を開始することが可能となる。複数のＡＬＵ１０２を伝搬し、最終段のＡＬＵ１０２から出力された書き換え信号は、１つ目の回路設定における処理がすべて終了したことを知らせるパルス信号と等価である。そのため、コンフィギュレーション制御部１０３は、最終段のＡＬＵ１０２から出力された書き換え信号を読み取り、プライマリレジスタに次の回路設定値を設定する。
【００４２】
上記書き換え信号を伝搬することによる効果を、図３と図４を用いて説明を行う。
【００４３】
図４は本実施形態の主旨である書き換え信号１０５を用いた場合の処理回路切り替えを示すタイミングチャートである。また、図３は、図４と比較するために、書き換え信号を用いない従来の場合の処理回路切り替えを示すタイミングチャートである。処理回路１として、例えば相関演算を行うための積分回路の一部を、ＡＬＵ３０１とＡＬＵ３０２で構成している。処理回路１におけるＡＬＵ３０１は、相関演算を行う際に、傷データ等の異常データを除去するためのリミッタ回路である。ＡＬＵ３０２は積分回路である。
【００４４】
処理回路２として、例えばデフォーカス量推定のための変換係数乗算回路の一部を、ＡＬＵ３０１とＡＬＵ３０２で構成している。処理回路２において、ＡＬＵ３０１は、変換係数を乗算する前のオフセット調整回路である。ＡＬＵ３０２は乗算回路である。
ＡＬＵ３０１のＡ側入力を３０１Ａ、Ｂ側入力を３０１Ｂ、演算内容を３０１Ｃ，出力信号を３０１Ｏとする。ＡＬＵ３０２のＡ側入力を３０２Ａ、Ｂ側入力を３０２Ｂ、演算内容を３０２Ｃ，出力信号を３０２Ｏとする。また、それぞれのＡＬＵの遅延量は２段とする。そして、処理回路１、処理回路２はそれぞれ１０サイクル処理する。
【００４５】
図３（ａ）は、上記説明した処理回路１および処理回路２におけるＡＬＵ３０１とＡＬＵ３０２の構成を示す。図３（ｂ）は、処理回路１および処理回路２のタイミングチャートを示す。タイミングチャート上で“＊”と示されている信号は、ドントケアを示す。タイミングｔ３０３は信号処理開始のタイミングを示す。タイミングｔ３０６は処理回路１で処理すべき最終データの入力するタイミングである。図３（ｂ）では、従来のように、全てのレジスタを一斉に切り替える。そのため、全てのＡＬＵで処理回路１の演算が完了するまで、入力データを停止する必要がある。タイミングｔ３０６から、全てのＡＬＵの処理回路１における処理が完了するタイミングｔ３０４までを示す期間（斜線で示している）では、入力データを停止している。タイミングｔ３０４にて、全てのレジスタに対して切り替え信号３０７が発行され、処理回路１の設定から処理回路２の設定に切り替わる。その後、タイミングｔ３０４からｔ３０５まで、処理回路２の処理が実行される。
【００４６】
これに対して、図４では、回路設定の切り替えに、タイミング制御部１０４より生成された書き換え信号を使用する。図４では、書き換え信号をＵｐｄａｔｅ４０７としている。Ｕｐｄａｔｅ４０７は、処理回路１の最終データであるタイミングｔ４０４で発行され、入力データＩｄａｔに同期して各ＡＬＵを伝搬する。そのため、ＡＬＵ３０１に書き換え信号が到達するのは、処理回路１におけるＡＬＵ３０１の処理が全て完了したタイミングｔ４０４である。タイミングｔ４０４においてＡＬＵ３０１は処理回路２に更新され、タイミングｔ４１０まで処理回路２の処理を実行する。
【００４７】
また、後段に位置するＡＬＵ３０２に書き換え信号が到達するタイミングは、処理回路２におけるＡＬＵ３０２の処理が全て完了したタイミングｔ４０６である。タイミングｔ４０６においてＡＬＵ３０２は処理回路２に更新され、タイミングｔ４１１まで処理回路２の処理が実行される。
【００４８】
ＡＬＵ３０２は、入力信号Ｉｄａｔに対して、ＡＬＵ３０１の２遅延分の遅延がある。そのため、ＡＬＵ３０１とＡＬＵ３０２で処理回路１の全ての処理が終了するタイミングが異なる。この時、処理回路の書き換え信号Ｕｐｄａｔｅ４０７を伝搬させることで、それぞれのＡＬＵにおける処理回路１が終わるタイミングで、それぞれのＡＬＵが処理回路２に更新される。このようにすることで、処理回路を切り替えるための停止期間が必要なくなり、スループットを向上させることが可能となる。
【００４９】
以上説明したように本実施形態によれば、書き換え信号をデータ信号に同期して伝搬させることで、回路情報の書き換えをパイプライン形式に実行し、プログラマブル回路のスループットを向上させることが出来る信号処理装置を提供することができる。
【００５０】
また、ＡＬＵ１０２の入力選択部９０１（図９参照）は、入力信号選択レジスタ９０６ａ、９０６ｂの初期値を、書き換え信号が付与されている信号を選択するように設定することが望ましい。本実施形態では書き換え信号は入力データに付与されており、全ての信号に付与されているわけではない。そのため、本実施形態では入力データなど、書き換え信号が付与されている信号を初期値として設定しておくことで、全てのＡＬＵ１０２に書き換え信号が行き渡らせることができる。
【００５１】
また、ＡＬＵ１０２に複数存在する入力データ選択レジスタが設定値を更新するタイミングは、もう一方の入力信号に付与されている書き換え信号を選択できる構成としてもよい。例えば図９において、Ｂ側入力信号として、パラメータ等の書き換え信号が付与されていない信号を選択した場合、Ｂ側信号には書き換え信号が到達しないので、入力データ選択レジスタ９０６ｂや９０９ｂの書き換えが行えない。そこで、図１１の様に、もう一方の入力信号に付与されている書き換え信号を参照できるようにしてもよい。図１１は、図９に比べて、Ａ側書き換え信号セレクタ１１０３、Ａ側書き換え信号選択レジスタ１１０１、Ｂ側書き換え信号セレクタ１１０４、Ｂ側書き換え信号選択レジスタ１１０２を持つ。このようにすることで、入力データ選択レジスタ９０６ａ，９０６ｂ，９０９ａ，９０９ｂは任意の入力信号に付与されている書き換え信号を参照することが可能となる。
【００５２】
なお、上記実施形態では、２つのＡＬＵの接続関係について説明したが、３つ以上のＡＬＵが接続される場合にも適用できる。３つ以上のＡＬＵが連続して接続されている場合にも、隣接する２つ、すなわち、上流側、下流側のＡＬＵについて上流側のＡＬＵの更新タイミングを下流側のＡＬＵの処理に係るサイクル数だけ早めて更新すればよい。
【００５３】
［第２の実施形態］
次に、本発明に係る第２の実施形態について説明する。上記第１の実施形態では、処理回路１と処理回路２において、それぞれの回路の遅延量が等しい場合を例に説明を行ったが、それぞれの回路の遅延量は異なっていてもよい。この時、データフロー制御部１０８は、処理回路１と処理回路２の遅延量の差だけ、入力データを停止するように制御する。
【００５４】
以下、図５と図６を参照して、本実施形態における信号処理回路１００の動作について説明する。
【００５５】
図６はデータフロー制御部１０８を用いて入力データの停止を行う場合の処理回路切り替えを示すタイミングチャートである。図５は図６と比較するために、入力データの停止を行わない従来の場合の処理回路切り替えを示すタイミングチャートである。処理回路１は、第１の実施形態と同じく相関演算を行うための積分回路の一部を、ＡＬＵ５０１とＡＬＵ５０２で構成している。処理回路２は、第１の実施形態と同じくデフォーカス量推定のための変換係数乗算回路の一部を構成するが、変換係数を乗算する前のオフセット調整回路が無いものとして、乗算回路のみとする。
【００５６】
図５（ａ）では、上記説明した処理回路１及び処理回路２それぞれのＡＬＵ５０１とＡＬＵ５０２の構成を示す。図５（ｂ）では、処理回路１及び処理回路２のタイミングチャートを示す。
【００５７】
図５の処理回路１のＡＬＵ５０２のＡ側入力信号は、ＡＬＵ５０１の出力信号を選択している。そして、処理回路２のＡＬＵ５０２は、入力データＩｄａｔを選択している。そのため、処理回路１から処理回路２に変わる際に遅延量が減少し、データの追い越しが発生している。具体的には、図５（ｂ）のタイミングｔ５０６〜ｔ５０８間の２データが、データの追い越しが発生して消失している。このため、処理回路２における全てのデータを正しく処理することができない。
【００５８】
これに対して、図６では、回路設定の切り替え時に、データフロー制御部１０８を用いて入力データの停止動作を行う。図６では、処理回路１の入力データを全て入力し終えたタイミングｔ６０４で、入力データを停止する。停止するサイクル数は、処理回路１の遅延量と、処理回路２の遅延量の差である２サイクルに設定する。このようにすることで、ＡＬＵ５０２において、処理回路における全てのデータに対して正しく処理を行うことが可能となる。
【００５９】
以上説明したように本第２の実施形態によれば、回路設定を切り替える際に、処理中の回路の遅延量に対して、次の処理の回路の遅延量が少ない場合、データの追い越しを防ぐために入力データを停止させることで、データの消失を防ぎ、所望の処理を行うことが可能となる。
【００６０】
また、上記データの追い越しを防ぐ手段として、遅延調整回路を挿入することで、停止期間の発生を抑えることができる。図７に、データの追い越し防止の遅延調整回路を挿入した回路を示す。図６との違いは、処理回路２においてＡＬＵ５０１を遅延調整回路として持つことである。遅延調整回路としては、ＡＬＵ１０２内部の遅延調整部９０２（図９参照）を設定して所望の遅延量を持たせることができる。また、図７に示すように０値と加算することで、入力データを遅延させただけの遅延調整回路とすることができる。このような遅延調整回路を、処理回路２に挿入することで、遅延量が等しくなり、停止期間の発生を抑え、スループットを向上させることが可能となる。
【００６１】
［第３の実施形態］
次に、本発明に係る第３の実施形態について説明する。第２の実施形態では、処理回路１の遅延量に比べて処理回路２の遅延量が少ない場合を例に説明を行ったが、処理回路１の遅延量に比べて処理回路２の遅延量が多い場合を説明する。この時、データフロー制御部１０８は、処理回路１と処理回路２の遅延量の差だけ発生する余分データを無効データとして扱うように、データの有効無効を判別する制御信号ｖａｌｉｄを制御する。
【００６２】
図８を参照して、本実施形態における信号処理回路１００の動作について説明する。図８（ｂ）はデータフロー制御部１０８を用いて制御信号ｖａｌｉｄを制御するタイミングチャートである。入力データの有効／無効を判定する制御信号をＩＶＡＬ８１２、プログラマブル回路１０１から出力される出力データ（図８（ａ）における８０２Ｏ）の有効無効を信号処理１００の後段の回路に知らせる制御信号をＯＶＡＬ８１３とする。図８（ａ）の処理回路１でのＡＬＵ８０２のＡ側入力信号は入力データＩｄａｔを選択する。そして、処理回路２でのＡＬＵ８０２は、ＡＬＵ８０１の出力信号を選択している。そのため、処理回路１から処理回路２に変わる際に遅延量が増加し、余分データ８１４が、タイミングｔ８０４からｔ８０６の期間で発生する。このデータは無効なデータであるため、後段の回路に無効データであることを知らせる必要がある。そこで、無効データが出力されるタイミング（処理回路１の最終出力タイミング）でＯＶＡＬ８１３をＬｏｗに制御することで、後段の回路に無効データであることを知らせることができる。
【００６３】
以上説明したように本実施形態によれば、回路設定を切り替える際に、処理中の回路の遅延量に対して、次の処理の回路の遅延量が多い場合、無効データの出力を知らせるために制御信号を制御することで、所望の処理を行うことが可能となる。
【００６４】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
【００６５】
［第４の実施形態］
第４の実施形態を以下に説明する。本実施形態における装置構成は図１と同じとし、その構成の説明は省略する。
【００６６】
ここで、タイミング制御部１０４から発行される書き換え信号１０５の本数について図１３を参照して説明を行う。タイミング制御部１０４は、複数のパルス生成器を持つ。図１３は、タイミング制御部１０４が、９つのＡＬＵ１３０１〜１３０７に対する、９つのパルス生成器１３２１〜１３２９を有することを示している。個々のパルス生成器は、カウンタとコンパレータで構成される。そして、パルス生成器１３２１〜１３２９は、ＡＬＵ１３０１〜１３０７への書き込み信号１３１１〜１３１９（図１の書き換え信号１０５はこれらを包含するものである）を発行する。それぞれのパルス生成器に含まれるカウンタは、カウントのスタートタイミングを個別に設定することができる。スタートタイミングは、１つ目の回路設定において、対応するＡＬＵに処理対象のデータが到達するまでにかかる遅延量の分だけ遅らせる。例えばＡＬＵ１３０２に対応するカウンタパルス生成器１３２２では２サイクル、ＡＬＵ１３０３に対応するパルス生成器カウンタ１３２３では４サイクル遅らせる。例えば１つ目の回路設定で１０サイクル分処理を行うとすると、ＡＬＵ１３０２に対して発行される書き換え信号１３１２は、１つ目の回路設定で処理が開始されてから１２サイクル後に発行される。また、ＡＬＵ１３０３に対して発行される書き換え信号１３１３は、１つ目の回路設定で処理が開始されてから１４サイクル後に発行される。このように各ＡＬＵに個別の書き換えタイミングを設定することで、それぞれのＡＬＵにおける１つ目の回路設定の処理が終了した次のサイクルで２つ目の回路設定の処理を開始することができる。
【００６７】
また、タイミング制御部１０４は１つのカウンタと複数のコンパレータを持ち、所定のカウント値になった時に書き換え信号１０５を発行する形態としてもよい。この場合、カウンタは各ＡＬＵの演算遅延の分だけ追加でカウントする必要がある。
【００６８】
なお、必ずしもカウンタを複数持つ必要はなく、１つのカウンタに対して遅延量をオフセットとすることで、それぞれのＡＬＵの遅延量に対応した書き換え信号１０５を発行することが可能である。また、書き換え信号１０５を発行するタイミングをＡＬＵの個数に応じて設定することで、カウンタの数を削減してもよい。
【００６９】
画像処理における水平カウンタのように回路設定毎に追加でカウントを行いたくない場合は、１つ目の回路設定における所定のカウント値が、各ＡＬＵの演算遅延の分だけ遅れるため、２つ目の回路設定に持ち越すように設定をする。
【００７０】
また、書き換え信号１０５はプログラマブル回路部１０１が入力データに対して信号処理を開始する前に一度発行される。ダブルバッファ構成をとるため、信号処理を開始する前に１つ目の回路設定をＡＬＵ１０２内に存在するセカンダリレジスタに更新させる必要がある。そのため、プライマリレジスタに回路情報を設定し、入力データに対して信号処理を開始する前に一度発行することで、セカンダリレジスタが設定値を更新する。
【００７１】
上記書き換え信号１０５を複数持つことによる効果を、図３と１２を用いて説明を行う。
【００７２】
図３、及び、図１２における処理回路１は、例えば相関演算を行うための積分回路の一部を、ＡＬＵ３０１とＡＬＵ３０２で構成している。処理回路１において、ＡＬＵ３０１では相関演算を行う際に、傷データ等の異常データを除去するためのリミッタ回路である。ＡＬＵ３０２は積分回路である。
【００７３】
また、処理回路２は、例えばデフォーカス量推定のための変換係数乗算回路の一部を、ＡＬＵ３０１とＡＬＵ３０２で構成している。処理回路２におけるＡＬＵ３０１では変換係数を乗算する前のオフセット調整回路である。そして、ＡＬＵ３０２は乗算回路である。
【００７４】
ＡＬＵ３０１のＡ側入力を３０１Ａ、Ｂ側入力を３０１Ｂ、演算内容を３０１Ｃ，出力信号を３０１Ｏとする。ＡＬＵ３０２のＡ側入力を３０２Ａ、Ｂ側入力を３０２Ｂ、演算内容を３０２Ｃ，出力信号を３０２Ｏとする。また、それぞれのＡＬＵの遅延量は２段とする。処理回路１、処理回路２はそれぞれ１０サイクル処理する。
【００７５】
図３（ａ）では、上記説明した処理回路１および処理回路２におけるＡＬＵ３０１とＡＬＵ３０２の構成を示す。図３（ｂ）では、処理回路１および処理回路２のタイミングチャートを示す。タイミングチャート上で＊と示されている信号は、ドントケアを示す。ｔ３０３は信号処理開始タイミングを示す。タイミングｔ３０６は処理回路１で処理すべき最終データの入力タイミングである。図３では従来のように、全てのレジスタを一斉に切り替える。そのため、全てのＡＬＵで処理回路１の演算が完了するまで、入力データを停止する必要がある。タイミングｔ３０６から、全てのＡＬＵの処理回路１における処理が完了するタイミングｔ３０４までの期間（図示の斜線で示す期間）、入力データを停止している。タイミングｔ３０４のタイミングで全てのレジスタに対して切り替え信号３０７が発行され、処理回路１の設定から処理回路２の設定に切り替わる。その後、タイミングｔ３０４からｔ３０５まで、処理回路２の処理が実行される。
【００７６】
これに対して、図１２では回路設定の切り替えに、タイミング制御部１０４より生成された書き換え信号１０５を使用する。図１２では、ＡＬＵ３０１が使用する書き換え信号をＵｐｄａｔｅ＿ＡＬＵ３０１とし、カウンタ３０５が発行する。ＡＬＵ３０２が使用する書き換え信号をＵｐｄａｔｅ＿ＡＬＵ３０２とし、カウンタ３０６が発行する。Ｕｐｄａｔｅ＿ＡＬＵ３０１はＡＬＵ３０１における処理回路１の最終データであるタイミングｔ４０４（カウンタカウンタ３０５が１０サイクルカウントしたタイミング）で発行される。図９で示したように、ＡＬＵ３０１内の設定を保持するデータ記憶部はそれぞれ内部で遅延した後に更新される。タイミングｔ４０６においてＡＬＵ３０１内の全ての、設定を保持するデータ記憶部は処理回路２に更新され、タイミングｔ４１０まで処理回路２の処理を実行する。ＡＬＵ３０２は、入力信号Ｉｄａｔに対して、ＡＬＵ３０１の２遅延分の遅延がある。そのため、ＡＬＵ３０１とＡＬＵ３０２で処理回路１の全ての処理が終了するタイミングが異なる。この時、カウンタ３０６は、ＡＬＵ３０２に対して、１２サイクルをカウントしたタイミングｔ４０６においてＵｐｄａｔｅ＿ＡＬＵ３０２を発行する。また、カウンタ３０６は１つ目の回路設定での処理開始から２サイクル分の遅延が経過したタイミングｔ４０５からカウントを開始し、１０サイクルをカウントしたタイミングｔ４０６でＵｐｄａｔｅ＿ＡＬＵ３０２を発行してもよい。ＡＬＵ３０１と同様にＡＬＵ３０２内の設定を保持するデータ記憶部はそれぞれ内部で遅延した後に更新される。タイミングｔ４０８においてＡＬＵ３０２内の全ての、設定を保持するデータ記憶部は処理回路２に更新され、タイミングｔ４１１まで処理回路２の処理を実行する。このようにすることで、処理回路を切り替えるための停止期間が必要なくなり、スループットを向上させることが可能となる。
【００７７】
以上説明したように本第４の実施形態によれば、書き換え信号１０５をデータ信号に同期して伝搬させることで、回路情報の書き換えをパイプライン形式に実行し、プログラマブル回路のスループットを向上させることが出来る信号処理装置を提供することができる。
【００７８】
なお、本実施形態では、プライマリレジスタとセカンダリレジスタを、シフトレジスタで構成したがその限りではない。例えば、前記２つのレジスタをバンキングレジスタとして構成してもよい。そのような場合においては、書き換え信号１０５の発行に基づいて決定する使用中ではないレジスタ側をプライマリレジスタとして使用することで本実施形態の適用が可能となる。
【００７９】
［第５の実施形態］
本発明に係る第５の実施形態を説明する。上記第４の実施形態では、タイミング制御部から発行される書き換え信号１０５は、１つのＡＬＵにつき１つとして説明を行ったが、任意の数のＡＬＵごとに１つの書き換え信号１０５を発行してもよい。本第５の実施形態は、対応するＡＬＵに処理対象のデータが到達するまでにかかる遅延量が等しいＡＬＵごとに書き換え信号１０５を発行する点で、第４の実施形態とは異なる。なお、本第５の実施形態における装置構成は、第１の実施形態の図１と同じとし、それらの説明は省略する。
【００８０】
図１４は、本第５の実施形態におけるタイミング制御部１０４とプログラマブル回路１０１との構成を示す図であり、特に、タイミング制御部１０４から発行される書き換え信号１０５の本数とＡＬＵとの対応関係を示している。それぞれのＡＬＵには、タイミング制御部１０４内のパルス生成器１４１０〜１４１２を選択する書き換え信号選択部１４１３〜１４１７を持つ。図１４は、例としてクランプ計算を行う例を示している。ＡＬＵ１４０２で巡回係数Ｐａｒａｍをかけ、ＡＬＵ１４０５で積分を行って補正値を得る。その後、ＡＬＵ１４０６で、入力データに対して得られた補正値を減算する。ＡＬＵ１４０１，ＡＬＵ１４０４は遅延を合わせるための遅延素子として動作する。
【００８１】
この時、並列関係にあるＡＬＵ１４０１，ＡＬＵ１４０２は処理対象のデータが到達するまでにかかる遅延量が等しいものとする。２つのＡＬＵ１４０１，１４０２は同じタイミングで処理が完了し、次の回路設定で処理を開始することができるので、ＡＬＵ１４０１とＡＬＵ１４０２に必要な書き換え信号１０５は同じで良い。そこでＡＬＵ１４０１とＡＬＵ１４０２が同じパルス生成器カウンタ１４１０から発行される書き換え信号１０５を参照するように書き換え信号選択部１４１３、１４１４を制御する。同様に、ＡＬＵ１４０４，ＡＬＵ１４０５も処理対象のデータが到達するまでにかかる遅延量が等しい。そのため、同じパルス生成器カウンタ１４１１から発行される書き換え信号１０５を参照するように書き換え信号選択部１４１５、１４１６を制御する。ＡＬＵ１４０６は別のパルス生成器カウンタ１４１２を参照するように書き換え信号選択部１４１７を制御する。上記の結果、必要なパルス生成器カウンタは図示のごとく３つとなる。
【００８２】
なお、並列関係にあるＡＬＵ１４０１、ＡＬＵ１４０２の遅延量が異なる場合には、それら２つのＡＬＵの更新タイミングが、遅延量に多い方に合わせればよい。
【００８３】
このように、対応するＡＬＵに処理対象のデータが到達するまでにかかる遅延量が等しいＡＬＵごとに同じパルス生成器カウンタから発行される書き換え信号１０５を参照することで、パルス生成器カウンタの数を減らし、回路規模を削減することができる。
【００８４】
また、書き換え信号選択部は特定の領域のＡＬＵ毎に持つとしてもよい。このようにすることで、書き換え信号選択部を減らすことが可能となる。
【００８５】
［第６の実施形態］
第６の実施形態を以下に説明する。図１５は、本第５の実施形態における情報処理装置のブロック構成図である。第１の実施形態における構成との違いは、プログラマブル回路１０１にデータ記憶部１１４とデータアクセス制御部１１５が追加された点であり、これ以外は図１と同じであるので、データ記憶部１１４、データアクセス制御部１１５以外の構成についての説明は省略する。また、ＡＬＵ１０２内の構造も図９と同様であるものとする。
【００８６】
プログラマブル回路１０１内のデータ記憶部１１４は、信号処理装置１００で使用する演算結果や、演算に使用する補正値等を記憶する一時記憶手段であり、ＳＲＡＭ等で構成される。データアクセス制御部１１５は、データ記憶部１１４へのアクセスを制御するための制御信号を出力する制御部である。このデータアクセス制御部１１５は、コンフィギュレーション制御部１０３より転送されるコンフィギュレーション情報に基づいて、アドレス信号、チップセレクト信号、データの読み書きを許可するリクエスト信号をデータ記憶部１１４へ出力する。
【００８７】
なお、本第６の実施形態におけるタイミング制御部１０４は、上記第４、第５の実施形態と同様、コンフィギュレーション情報制御部１０３の制御下にて、書き換え信号１０５を任意のタイミングでパルス生成し、複数のＡＬＵ１０２に転送する。書き換え信号１０５は、複数のＡＬＵ１０２のコンフィギュレーション情報を更新するタイミングを知らせるロード信号である。書き換え信号１０５を生成するタイミングは、複数のＡＬＵ１０２がそれぞれ最後のデータを処理するタイミング、もしくは次の回路設定が適用される最初のデータを処理するタイミングで発行することが望ましい。このようにすることで、各ＡＬＵ１０２がそれぞれ所望のデータ数分処理を完了した後に、コンフィギュレーション情報を更新することができる。
【００８８】
＜プログラマブル回路処理例＞
本第６の実施形態は、第１の実施形態と同様、イメージセンサー上の分割画素を用いた瞳分割方式によるデフォーカス量の取得から距離マップを形成する処理フローの一部をプログラマブル回路で実施する例を、図２を再度参照して説明する。分割画素を持つイメージセンサーの構成や、視差画像に対応した距離マップの取得手法については、既知の技術を使用してよい。
【００８９】
Ｓ２００にて、Ａ像信号から輝度値（以下、Ｙ値とする）を取得する。Ｓ２０１にて、Ｂ像信号からＹ値を取得する。そして、Ｓ２０２にて、Ｓ２００とＳ２０１で得られたＹ値から、視差間の相関演算を行う。Ｓ２０３では、Ｓ２０２の相関演算で得た視差間の相対的な像ズレ量からデフォーカス量を推定する。そして、Ｓ２０４ではレンズ収差による面内のデフォーカス量ムラを補正する。
【００９０】
本第６の実施形態では、前記Ｓ２００〜Ｓ２０４それぞれのステップにて、プログラマブル回路部１０１内のＡＬＵ構成を切り替えるように、Ｓ２００〜Ｓ２０４に対して、それぞれの回路情報２００〜２０４を設定する。回路情報２００〜２０４は図１のデータ記憶部１０６ａ上にあらかじめ格納されている。プログラマブル回路部１０１の初期化時に、回路情報２００〜２０４を回路情報記憶部１１３に転送する。
【００９１】
コンフィギュレーション制御部１０３は、回路情報２００をデコードして、図９の入力データ選択レジスタ９０６ａ、９０６ｂ等の複数のレジスタ設定値を、各ＡＬＵ１０２に渡す。プログラマブル回路部１０１の回路コンフィギュレーションに係るレジスタは、データ記憶部１１２のようなプライマリレジスタと、入力データ選択レジスタ９０６ａ，９０６ｂのようなセカンダリレジスタのダブルバッファ構成を取る。コンフィギュレーション制御部１０３は、回路情報２００に基づいてプライマリレジスタに渡した値を各ＡＬＵ１０２に搭載したセカンダリレジスタに転送する。そして、コンフィギュレーション制御部１０３は、転送完了後に、プライマリレジスタを次の回路情報に更新すべく、回路情報記憶部１１３に対して回路情報２０１の転送を要求する。
【００９２】
各ＡＬＵ１０２内に存在するセカンダリレジスタが設定値を更新するタイミングは、各設定レジスタで設定したセレクタの出力信号に同期して伝搬されている書き換え信号が、各設定レジスタに到達したタイミングである。書き換え信号は、タイミング制御部１０８により任意のタイミングで生成され、プログラマブル回路部１０１の入力信号に同期して伝搬している。このようにすることで、それぞれのＡＬＵ１０２における１つ目の回路設定における処理が終了した次のサイクルで、２つ目の回路設定における処理を開始することが可能となる。複数のＡＬＵ１０２を伝搬し、最終段のＡＬＵ１０２から出力された書き換え信号は、１つ目の回路設定における処理がすべて終了したことを知らせるパルス信号と等価である。そのため、コンフィギュレーション制御部１０３は、最終段のＡＬＵ１０２から出力された書き換え信号を読み取り、プライマリレジスタに次の回路設定値を設定する。
【００９３】
上記書き換え信号を伝搬することによる効果は、第１の実施形態における図３と図４で説明した通りである。
【００９４】
書き換え信号１０５を入力データに同期して伝搬する場合、入力データを選択したＡＬＵ１０２に書き換え信号が伝搬する。もしくは入力データを選択したＡＬＵ１０２の出力を参照した他のＡＬＵ１０２に書き換え信号が伝搬する。しかし、ＳＲＡＭ等のデータ記憶部１１４の読出しデータは、必ずしもリコンフィギャラブル回路部１０１の入力データに同期しているとは限らないため、書き換え信号１０５が伝搬されない。例えば、図４における処理回路１で０〜４０９５までのルックアップテーブルを作成し、処理回路２で作成したルックアップテーブルを参照した処理を行う場合を考える。書き換え信号１０５はルックアップテーブルの最終データである値４０９５に同期して保存されるが、処理回路２において、値４０９５が参照されるタイミングが、処理回路２における最終データであるとは限らない。
【００９５】
この問題を解決するために、本第６の実施形態ではデータ記憶部１１４を制御するための制御信号に同期して書き換え信号１０５を伝搬し、データ記憶部１１４は書き換え信号１０５を、読み出されるデータに同期して伝搬させる。
【００９６】
図１６は、本第６の実施形態における、データ記憶部１１４を使用した時の書き換え信号１０５の伝搬を示す図である。図１６（ａ）では、入力データＩｄａｔ１６０６に対して、データ記憶部１１４に保持されたオフセット値を減算する処理を例示している。図１６（ｂ）では、それぞれの信号のタイミングチャートを示す。
【００９７】
ＡＬＵ１６０１は入力データＩｄａｔ１０６を遅延する遅延素子として働き、ＡＬＵ１６０２は入力データＩｄａｔ１６０６からオフセット値を減算する減算器として動作する。
【００９８】
ＳＲＡＭ等のデータ記憶部１１４からデータを読み出す時には、データアクセス制御部１１５から、リードアドレスＡｄｄｒ１６０３、データ記憶部１１４を選択するチップセレクト信号／ＣＳ１６０４、リクエスト信号／ＷＥ１６０５を出力する。
【００９９】
リードアドレスＡｄｄｒ１６０３は読み出すデータの番地を示すアドレスである。チップセレクト信号／ＣＳ１６０４はデータ記憶部１１４を選択する。チップセレクト信号／ＣＳ１６０４は負論理であり、チップセレクト信号／ＣＳ１６０４がＬｏｗの時、データ記憶部１１４が選択され、Ａｄｄｒ１６０３、リクエスト信号／ＷＥ１６０５の入力が有効となる。リクエスト信号／ＷＥ１６０５はデバイスへの読み書き許可信号である。リクエスト信号／ＷＥ７０５は負論理であり、リクエスト信号／ＷＥ１６０５がＬｏｗの場合はライトアクセスとなり、Ｈｉｇｈの場合はリードアクセスとなる。
【０１００】
本第６の実施形態では、タイミング制御部１０４より出力される書き換え信号１０５はタイミングｔ１６１１で発行され、入力データとリードアドレス１６０３に同期して伝搬する。データ記憶部１１４は、書き換え信号１０５を所定の遅延量だけ遅延させて、リードデータに同期して伝搬させる。所定の遅延量とは、リードのリクエストを行ってからデータ記憶部１１４のデータが読み出されるまでに必要な遅延量（以下、読出し遅延量と呼ぶ）である。本第６の実施形態では、読出し遅延量を２サイクルとしている。そのため、リードデータＲｄＤａｔａ１６０７に同期して伝搬される書き換え信号ＵｐｄａｔｅＤｅｌａｙ１６１６はタイミングｔ１６１３のタイミングでＨｉｇｈとなる。このようにすることでデータ記憶部１１４からリードデータＲｄＤａｔａ１６０７に同期して書き換え信号が伝搬されるため、ＡＬＵ１６０２のＢ入力側のレジスタの書き換えを行うことが可能となる。
【０１０１】
本実施形態では書き換え信号１０５をリードアドレス１６０３に同期して伝搬したが、チップセレクト信号／ＣＳ１６０４に同期して伝搬してもよい。また、リクエスト信号／ＷＥ１６０５に同期して伝搬してもよい。
【０１０２】
以上説明したように本第６の実施形態によれば、書き換え信号１０５をデータ信号とデータ記憶部１１４を制御する制御信号に同期して伝搬させることで、回路情報の書き換えをパイプライン形式に実行し、プログラマブル回路のスループットを向上させることが出来る信号処理装置を提供することができる。
【０１０３】
なお、本第６の実施形態では、プライマリレジスタとセカンダリレジスタを、シフトレジスタで構成したがその限りではない。例えば、前記２つのレジスタをバンキングレジスタとして構成してもよい。そのような場合においては、書き換え信号１０５の発行に基づいて決定する使用中ではないレジスタ側をプライマリレジスタとして使用することで本実施例の適用が可能となる。
【０１０４】
［第７の実施形態］
次に、本発明に係る第７の実施形態について説明する。上記第６の実施形態では、データ制御部１１４において、書き換え信号１０５を、読出し遅延量と同じだけ遅延させて、リードデータに同期して伝搬させたが、遅延量を異ならせてもよい。本第７の実施形態では、データ制御部１１４に伝搬された書き換え信号１０５の遅延量を任意のタイミングでリードデータに同期して伝搬させることができる点で第６の実施形態とは異なる。なお、本第７の実施形態における他の構成は、第６の実施形態と同様であるため、それらの説明は省略する。
【０１０５】
図１７は、本第７の実施形態におけるデータ記憶部１１４を使用した時の書き換え信号の伝搬を示す図である。図１７では、データ記憶部１１４に保存された前フレームの画像データと入力データの２タップの平均フィルタを行うための加算処理を例示している。本実施形態では、データ記憶部１１４はカウンタ１７００を更に有する。カウンタ１７００は、データ記憶部１１４に伝搬された書き換え信号１０５が伝搬された時に、カウントを開始し、所望の遅延量Ｌｅｎｇｔｈ１７０１だけカウントをした後に書き換え信号ＵｐｄａｔｅＤｅｌａｙ１６１６を発行し、リードデータＲｄＤａｔａ１６０７に同期して伝搬する。図１７では、Ｌｅｎｇｔｈ１７０１を１に設定しているため、タイミングｔ１７１１でカウントが開始され、１サイクル後であるタイミングｔ１７１２で書き換え信号ＵｐｄａｔｅＤｅｌａｙ１６１が発行され、リードデータに同期して伝搬される。データ記憶部１１４の読出し遅延が２に対して、ＵｐｄａｔｅＤｅｌａｙ１６１６を１サイクル遅延させて発行するため、書き換え信号の伝搬を１サイクル早めている。
【０１０６】
２タップ平均フィルタのように入力信号の位相がずれている場合、演算結果のデータには無効なデータが含まれる。２タップ平均フィルタの為の加算処理を行うＡＬＵ１７０３では、Ａ側の入力信号に対してＢ側の入力信号を１サイクル遅延させており、タイミングｔ１７１６のタイミングでＡ側の入力信号が無く、無効な演算結果を出力するため、スループットを向上させることが困難となる。それに対して、本実施形態ではデータ記憶部１１４から発行される書き換え信号１０５の伝搬を１サイクル早めることで、有効なデータ領域である来民具ｔ１７１６まで演算を行い、次の処理回路に切り替えるため無効な演算を行わない。このようにすることで、スループットを向上させることが可能となる。
【０１０７】
また、本実施形態ではデータ記憶部１１４に伝搬した書き換え信号を任意のタイミングでリードデータに同期して伝搬させるためにカウンタを用いたが、シフトレジスタの構成で実現してもよい。
【０１０８】
以上の説明のように、本実施形態によれば、書き換え信号をデータ信号に同期して伝搬させることで、コンフィギュレーション情報の書き換えをパイプライン形式で実行することで、プログラマブル回路のスループットを向上させることが出来る。
【０１０９】
（その他の実施例）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【０１１０】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【０１１１】
１００…信号処理装置、１０１…プログラマブル回路、１０２…ＡＬＵ、１０３…コンフィグレーション制御部制御部、１０４…タイミング制御部、１０５…書き換え信号
【図１】
2020173517.tif 000003
【図２】
2020173517.tif 000004
【図３】
2020173517.tif 000005
【図４】
2020173517.tif 000006
【図５】
2020173517.tif 000007
【図６】
2020173517.tif 000008
【図７】
2020173517.tif 000009
【図８】
2020173517.tif 000010
【図９】
2020173517.tif 000011
【図１０】
2020173517.tif 000012
【図１１】
2020173517.tif 000013
【図１２】
2020173517.tif 000014
【図１３】
2020173517.tif 000015
【図１４】
2020173517.tif 000016
【図１５】
2020173517.tif 000017
【図１６】
2020173517.tif 000018
【図１７】
2020173517.tif 000019