(57)【要約】【課題】  機能の変更が可能なリコンフィギュラブル回路を有する処理装置を提供する。【解決手段】  本発明の処理装置１０は、機能の変更が可能なリコンフィギュラブル回路１２と、リコンフィギュラブル回路１２に所期の回路を構成するための設定データを保持し、設定データをリコンフィギュラブル回路１２に供給する設定データ保持部１４と、設定データ保持部１４からリコンフィギュラブル回路１２に供給する設定データを選択するシーケンサ装置２０とを備える。シーケンサ装置２０が、設定データを適宜選択することで、条件分岐が存在する処理であっても、条件判定の後に、分岐先となる設定データを選択することが可能である。【選択図】図１
2006065788.tif 000002
【特許請求の範囲】
【請求項１】
機能の変更が可能なリコンフィギュラブル回路と、
前記リコンフィギュラブル回路に所期の回路を構成するための設定データを保持し、前記設定データを前記リコンフィギュラブル回路に供給する設定データ保持部と、
前記設定データ保持部から前記リコンフィギュラブル回路に供給する設定データを選択するシーケンサ装置と、
を備えることを特徴とする処理装置。
【請求項２】
前記シーケンサ装置は、
前記設定データ保持部に、設定データを選択する第１選択信号を供給する設定データ選択部と、
前記設定データ選択部に第１選択信号を生成させるための制御データを保持し、前記制御データを前記設定データ選択部に供給する制御データ保持部と、
を備えることを特徴とする処理装置。
【請求項３】
前記設定データ保持部は、前記リコンフィギュラブル回路に供給する順序が確定している１以上の設定データを一つの設定データ群とし、複数の設定データを設定データ群単位で保持することを特徴とする請求項１または２に記載の処理装置。
【請求項４】
前記設定データ保持部は、設定データ群における１以上の設定データを、リコンフィギュラブル回路への供給順序にしたがって、連続したアドレスの格納領域に保持することを特徴とする請求項３に記載の処理装置。
【請求項５】
前記制御データ保持部は、設定データ群を選択する群選択制御データを有することを特徴とする請求項３または４に記載の処理装置。
【請求項６】
前記設定データ選択部は、前記制御データ保持部から供給される群選択制御データをもとに、第１選択信号を生成することを特徴とする請求項５に記載の処理装置。
【請求項７】
前記設定データ群内における設定データを選択する群内選択制御データを生成する制御部をさらに備え、
前記設定データ選択部は、群選択制御データおよび群内選択制御データをもとに、第１選択信号を生成することを特徴とする請求項６に記載の処理装置。
【請求項８】
前記制御部は、出力を１ずつインクリメントするカウンタを用いて群内選択制御データを生成することを特徴とする請求項７に記載の処理装置。
【請求項９】
前記リコンフィギュラブル回路から出力される分岐制御データをもとに、前記制御データ保持部に制御データを選択する第２選択信号を供給する制御データ選択部をさらに備えることを特徴とする請求項１から８のいずれかに記載の処理装置。
【請求項１０】
前記制御データ保持部は、前記分岐制御データに応じて、前記制御データ選択部に選択的に読み出される制御データを保持し、
前記制御データ選択部は、読み出した制御データをもとに前記第２選択信号を生成することを特徴とする請求項９に記載の処理装置。
【請求項１１】
前記制御データ選択部における遅延時間を加味して、前記制御データ選択部から前記第２選択信号を前記制御データ保持部に供給させるタイミング信号を生成する制御部を備え、
前記制御データ選択部は、前記制御部から供給されるタイミング信号に基づいて、前記第２選択信号を前記制御データ保持部に供給することを特徴とする請求項９または１０に記載の処理装置。
【請求項１２】
前記設定データ保持部は、リコンフィギュラブル回路に構成した所期の回路の演算結果に影響を与えない設定データを保持し、
前記分岐制御データがリコンフィギュラブル回路から出力されてから、前記分岐制御データに基づいた設定データ群における設定データが前記設定データ保持部からリコンフィギュラブル回路に供給されるまでの間に、所期の回路を構成するための設定データを全てリコンフィギュラブル回路に供給した場合には、前記設定データ保持部が、演算結果に影響を与えない設定データをリコンフィギュラブル回路に供給することを特徴とする請求項２から１１のいずれかに記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、機能の変更が可能なリコンフィギュラブル回路を備えた処理装置に関する。
【背景技術】
【０００２】
近年、ＡＬＵ(Arithmetic Logic Unit)と呼ばれる基本演算機能を複数持つ多機能素子を用いたリコンフィギュラブルプロセッサの開発が進められている（例えば、特許文献１参照）。リコンフィギュラブルプロセッサでは、コマンドデータをＡＬＵ回路に順次設定することで、全体として所期の演算処理回路を実現することができる。コマンドデータは、Ｃ言語などの高級プログラム言語で記述されたソースプログラムからＤＦＧ（データフローグラフ）と呼ばれるデータフローを作成し、そのＤＦＧをＡＬＵ回路にマッピングするデータとして作成される。コマンドデータは、ＡＬＵ回路上に構成する回路の処理順序にしたがって作成され、アドレスの連続した記憶領域に記憶される。
【特許文献１】特開２００４−２２０３７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来のリコンフィギュラブルプロセッサでは、コマンドデータをメモリから順次読み出し、ＡＬＵ回路に供給して、ＡＬＵ回路の機能を設定する。そのため、ソースプログラム中にif文のような条件判定処理が存在する場合には、分岐する複数の処理を実行するコマンドデータをＡＬＵ回路上に設定して予め演算を行い、条件判定を行った後に、判定結果に沿った演算処理結果を選択する必要がある。この場合、実際に使用するのは分岐の一方の演算処理結果のみであり、他方の演算処理結果は使用されないため、結果として処理時間が必要以上に長くなる事態をまねいていた。また、ソースプログラム中にfor文のような所定回数のループ演算が存在する場合、従来のリコンフィギュラブルプロセッサでは、同じループ演算のコマンドデータ群を所定回数分、メモリの連続したアドレスに記憶させる必要がある。例えば、ループ数が１０回であれば、同一のコマンドデータ群を１０回分メモリに記憶する必要があり、コマンドデータのデータ量が増大することになっていた。また、ループ数が不定の場合には、繰返し数が不明のため、コマンドデータの生成自体が困難となっていた。
【０００４】
本発明はこうした状況に鑑みてなされたもので、その目的は、効率よく演算処理を実行することのできる回路再構成機能を備えた処理装置を提供することにある。
【課題を解決するための手段】
【０００５】
上記課題を解決するために、本発明のある態様は、機能の変更が可能なリコンフィギュラブル回路と、リコンフィギュラブル回路に所期の回路を構成するための設定データを保持し、設定データを前記リコンフィギュラブル回路に供給する設定データ保持部と、設定データ保持部からリコンフィギュラブル回路に供給する設定データを選択するシーケンサ装置とを備える処理装置を提供する。
【０００６】
この処理装置によると、シーケンサ装置がリコンフィギュラブル回路へ供給する設定データを選択することができる。これにより、例えば演算中に分岐処理の移行先を定める条件判定がなされた場合に、条件の判定結果に基づいてシーケンサ装置が次に実行する設定データを選択することが可能となり、処理時間を短縮できる。
【０００７】
なお、以上の構成要素の任意の組み合わせ、本発明の表現を方法、装置、システム、コンピュータプログラムとして表現したものもまた、本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、効率よく演算処理を実行することのできる回路再構成機能を備えた処理装置を提供することができる。
【発明を実施するための最良の形態】
【０００９】
図１は、実施例に係る処理装置１０の構成図である。処理装置１０は、リコンフィギュラブル回路１２、設定データ保持部１４、シーケンサ装置２０、出力データ保持部３０および経路部３２を備える。処理装置１０は、１チップとして構成される集積回路装置の構成を有してもよい。リコンフィギュラブル回路１２は、設定を変更することにより、機能の変更を可能とする。
【００１０】
設定データ保持部１４は、リコンフィギュラブル回路１２に所期の回路を構成するための設定データを複数保持し、設定データを所定の時間間隔でリコンフィギュラブル回路１２に順次供給する。設定データ保持部１４は、記憶した設定データを、指定されたアドレス値をもとに出力するコマンドメモリとして構成されてもよい。この場合、設定データはコマンドデータと呼ぶことができる。シーケンサ装置２０は、設定データ保持部１４に記憶された複数の設定データの中から、リコンフィギュラブル回路１２に供給する設定データを選択する機能をもつ。
【００１１】
リコンフィギュラブル回路１２は、機能の変更が可能な複数の論理回路を有して構成される。具体的にリコンフィギュラブル回路１２は、複数の演算機能を選択的に実行可能な論理回路を複数段に配列させた構成を有し、前段の論理回路列の出力と後段の論理回路列の入力との接続関係を設定可能な接続部を含む。複数の論理回路は、マトリックス状に配置されてもよい。各論理回路の機能と、論理回路間の接続関係は、設定データ保持部１４により供給される設定データに基づいて設定される。設定データは所定の時間間隔でリコンフィギュラブル回路１２に供給され、したがって、リコンフィギュラブル回路１２は、供給される設定データに応じた演算処理機能を実行する。
【００１２】
経路部３２は、フィードバックパスとして機能し、リコンフィギュラブル回路１２の出力を、リコンフィギュラブル回路１２の入力に接続する。出力データ保持部３０は、リコンフィギュラブル回路１２から出力されるデータ信号および／または外部から入力されるデータ信号を格納するための記憶領域を有する。出力データ保持部３０に格納されたデータ信号は、経路部３２を通じてリコンフィギュラブル回路１２の入力に伝達され、また図示しない制御部からの出力指示に基づいて処理装置１０の外部に出力される。
【００１３】
図２は、リコンフィギュラブル回路１２の構成の一例を示す。リコンフィギュラブル回路１２は、それぞれが複数の演算機能を選択的に実行可能な論理回路の多段配列と、前段の論理回路の出力と後段の論理回路の入力の接続関係を任意に設定可能な接続部５２とを備える。リコンフィギュラブル回路１２では、論理回路の多段配列構造により、上段から下段に向かって演算が進められる。なお、本明細書において「多段」とは、複数の段を意味する。なお、リコンフィギュラブル回路１２の回路構成は、必ずしも多段配列を有する必要はないが、回路規模を削減するために全ての論理回路間の接続を可能とするのではなく、一部の論理回路同士の接続を実現させるのが好ましい。
【００１４】
リコンフィギュラブル回路１２は、論理回路としてＡＬＵ(Arithmetic Logic Unit)を有している。ＡＬＵは、複数種類の多ビット演算を選択的に実行可能な算術論理回路であって、論理和、論理積、ビットシフトなどの複数種類の多ビット演算を設定により選択的に実行できる。各ＡＬＵは、複数の演算機能を設定するためのセレクタを有して構成されている。図示の例では、ＡＬＵが、２つの入力端子と１つの出力端子を有して構成される。
【００１５】
リコンフィギュラブル回路１２は、縦方向にＸ個、横方向にＹ個のＡＬＵが配置されたＸ段Ｙ列のＡＬＵアレイとして構成される。ここでは、縦方向に３個、横方向に６個のＡＬＵが配置された３段６列のＡＬＵアレイを示している。リコンフィギュラブル回路１２は、接続部５２およびＡＬＵ列５３を備える。ＡＬＵ列５３は複数段に設けられ、接続部５２は前後段のＡＬＵ列５３の間に設けられて、前段のＡＬＵの出力と後段のＡＬＵの入力の接続関係を設定する。
【００１６】
図２に示す例では、第１段のＡＬＵ列５３ａと第２段のＡＬＵ列５３ｂの間に、第２段を構成する接続部５２ｂが設けられ、第２段のＡＬＵ列５３ｂと第３段のＡＬＵ列５３ｃの間に、第３段を構成する接続部５２ｃが設けられる。なお、第１段を構成する接続部５２ａは、第１段のＡＬＵ列５３ａの上側に設けられる。
【００１７】
第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６には、入力変数や定数が入力され、設定された所定の演算がなされる。演算結果の出力は、第２段の接続部５２ｂに設定された接続にしたがって、第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６に入力される。第２段の接続部５２ｂにおいては、第１段のＡＬＵ列５３ａの出力と第２段のＡＬＵ列５３ｂの入力の間で任意の接続関係、あるいは予め定められた接続関係の組合せの中から選択された接続関係を実現できるように接続用結線が構成されており、設定により所期の結線が有効となる。第２段のＡＬＵ２１、ＡＬＵ２２、・・・、ＡＬＵ２６には、ＡＬＵ列５３ａの出力が入力され、設定された所定の演算がなされる。演算結果の出力は、第３段の接続部５２ｃの接続用結線において設定された接続にしたがって、第３段のＡＬＵ３１、ＡＬＵ３２、・・・、ＡＬＵ３６に入力される。
【００１８】
最終段となる第３段のＡＬＵ列５３ｃからの出力データは、出力データ保持部３０に出力される。出力データ保持部３０は、経路部３２を介して、出力データを接続部５２ａに入力する。接続部５２ａは、接続用結線を設定し、第１段のＡＬＵ１１、ＡＬＵ１２、・・・、ＡＬＵ１６にデータを供給する。演算処理の最終結果が生成された場合には、出力データ保持部３０が、データを処理装置１０の外部に出力する。
【００１９】
図１に戻って、シーケンサ装置２０は、シーケンサ制御データ保持部２２、設定データ選択部２４、シーケンサ制御部２６およびシーケンサ制御データ選択部２８を有する。設定データ選択部２４は、設定データ保持部１４に、設定データを選択する第１選択信号を供給する。具体的に、第１選択信号は、設定データ保持部１４の読出アドレスを指定する信号であり、設定データ保持部１４は、この読出アドレスをもとに、リコンフィギュラブル回路１２に所期の設定データを出力する。シーケンサ制御データ保持部２２は、設定データ選択部２４に第１選択信号を生成させるためのシーケンサ制御データを保持し、このシーケンサ制御データを設定データ選択部２４に供給する。シーケンサ制御データ保持部２２は、ＲＡＭなどのメモリにより構成される。これにより、シーケンサ装置２０の処理内容を、シーケンサ制御データを書き換えることで容易に変更することができ、種々の制御を実行できるとともに、シーケンサ装置２０の汎用性を高めることができる。
【００２０】
シーケンサ制御データ選択部２８は、シーケンサ制御データ保持部２２に、設定データ選択部２４に対して供給するシーケンサ制御データを選択する第２選択信号を供給する。具体的に、第２選択信号は、シーケンサ制御データ保持部２２の読出アドレスを指定する信号であり、シーケンサ制御データ保持部２２は、この読出アドレスをもとに、設定データ選択部２４に所期のシーケンサ制御データを出力する。
【００２１】
なお、図６に関して詳述するが、シーケンサ制御データは、設定データ選択部２４だけでなく、シーケンサ制御部２６およびシーケンサ制御データ選択部２８の動作を制御するデータも含む。シーケンサ制御データ選択部２８は、シーケンサ制御データ保持部２２から供給される制御データ、シーケンサ制御部２６から供給されるデータと、リコンフィギュラブル回路１２から供給されるデータをもとに、第２選択信号を生成し、シーケンサ制御データ保持部２２に供給する。本実施例において、シーケンサ制御データ選択部２８は、リコンフィギュラブル回路１２から出力される分岐制御データを受け取る。分岐制御データは、ソースプログラム中のif文やfor文などの処理に際して実行される条件判定の結果を示すものである。
【００２２】
本実施例では、シーケンサ装置２０が、リコンフィギュラブル回路１２における演算結果、具体的には条件の判定結果をもとに、設定データ保持部１４がリコンフィギュラブル回路１２に供給する設定データを管理する。本実施例では、シーケンサ装置２０による設定データの管理を効率的なものとするために、設定データ保持部１４に格納する設定データ、およびシーケンサ制御データ保持部２２に格納するシーケンサ制御データを、以下の手順で生成する。
【００２３】
図３は、設定データおよびシーケンサ制御データの生成手順を示す。この生成フローは、図示しないコンパイラ装置により実行される。
【００２４】
コンパイラ装置が、リコンフィギュラブル回路１２により実現されるべきプログラムを所定の記憶領域から読み出す（Ｓ１０）。プログラムは、回路における処理の動作を記述した動作記述を示し、信号処理回路または信号処理アルゴリズムなどをＣ言語などの高級言語で記述したものである。プログラムは、条件文やループ文などを含んで構成される。なお、条件文およびループ文には演算の移行先を定めるための条件判定処理が存在し、条件判定の結果に応じて次に実行する演算処理が決定する。例えば、if文およびelse文で表現される条件文は、if条件が成立したときにif文を実行し、if条件が成立しないときにelse文を実行する。また、ループ文は、決められた回数の処理が終了すると、そのループ文を抜けて新たな演算処理を開始し、決められた回数の処理が終了しなければ、繰り返し処理を継続する。本実施例の処理装置１０では、このような分岐処理を決定する条件判定の結果を用いて、効率的な演算処理を実現する。
【００２５】
コンパイラ装置は、読み出したプログラムをコンパイル処理し（Ｓ１２）、データフローグラフ（ＤＦＧ）に変換するとともに（Ｓ１４）、ＤＦＧの処理の流れを示すフローデータを生成する（Ｓ１８）。ＤＦＧは、回路における演算間の実行順序の依存関係を表現し、入力変数および定数の演算の流れをグラフ構造で示したものである。ＤＦＧフローデータは、ＤＦＧ全体を、所定の一連の処理を実行する複数のＤＦＧ群に分解し、ＤＦＧ群を組み合わせて、処理全体の流れを示すように生成される。ＤＦＧ群は、処理順序が確定している１以上のＤＦＧを一つの単位としてまとめられる。なおＤＦＧ群において、ＤＦＧが１つ存在する場合は、そのＤＦＧのみを処理するものとして処理順序が確定しているものとみなし、ＤＦＧが２以上存在する場合は、２以上のＤＦＧ間の処理順序が確定していることが必要である。ＤＦＧは、対応する設定データに変換され（Ｓ１６）、ＤＦＧフローデータは、対応するシーケンサ制御データに変換される（Ｓ２０）。設定データは、ＤＦＧをリコンフィギュラブル回路１２にマッピングするためのデータであり、リコンフィギュラブル回路１２における論理回路の機能や論理回路間の接続関係を定める。設定データは、設定データ保持部１４に格納され、シーケンサ制御データは、シーケンサ制御データ保持部２２に格納される。
【００２６】
図４は、ＤＦＧフローデータの例を示す。従来のＤＦＧは、分岐処理が存在する場合には、両方の分岐先の処理を実行するように作成されていたが、本実施例では、処理順序が確定している連続したＤＦＧを一つのＤＦＧ群として位置づけ、複数のＤＦＧ群の処理関係をＤＦＧフローデータとして表現する。すなわち、ＤＦＧ群内における演算処理は、ＤＦＧ群の分岐を判定した結果に依存することなく確定したものとなる。ＤＦＧ群の条件分岐の判定結果は、リコンフィギュラブル回路１２から出力される分岐制御データｃによって示される。なお、この判定は、ＤＦＧ群内で途中に位置するＤＦＧによってなされてもよく、また最後に位置するＤＦＧによってなされてもよい。図４では、分岐制御データｃの値に応じて、次のＤＦＧが決定されるフローが示されている。なお、リコンフィギュラブル回路１２からの分岐制御データｃはフラグ値などのデータ形式をとり、２分岐の場合には、１または０のいずれかとなる。
【００２７】
例えば、ＤＦＧ群３を参照して、for文のようなループ処理を行う場合には、ループ終了条件が成立するまでの間、分岐制御データｃは１であり、分岐制御データｃが１に設定されている間は、ＤＦＧ群３の演算処理が繰り返し実行される。一方、所定回数のループ処理が実行されて、ループ終了条件が成立したときには、分岐制御データｃが０となり、ＤＦＧ群４の演算処理が開始される。また、ＤＦＧ群１を参照して、ＤＦＧ群の分岐を判定するためのif文のような条件処理を行う場合には、例えば、if条件が成立したときに分岐制御データｃは１となり、if条件が成立しないとき、もしくはelse条件が成立したときに分岐制御データｃは０となる。逆に言うと、for文やif文などのＤＦＧ群分岐を判定する条件分岐判定が発生する処理については、上記したような分岐制御データｃが生成されるように、リコンフィギュラブル回路１２に供給する設定データが予め作成される。既述のように、設定データの生成は、図示しないコンパイル装置によって行われる。
【００２８】
例えばＤＦＧ群１において、ＤＦＧ１−１からＤＦＧ１−１２までは、分岐制御データｃに依存せず順次処理されるＤＦＧであり、ＤＦＧ１−１２の次に処理されるＤＦＧは、リコンフィギュラブル回路１２上で演算処理を実行したことにより決定される分岐制御データｃの値によりＤＦＧ２−１かＤＦＧ７−１のいずれかに選択される。このように、本実施例では、分岐制御データｃに依存せず処理順序が決まっているＤＦＧ１−１からＤＦＧ１−１２までを一つのＤＦＧ群１に設定する。ＤＦＧ群において最後に処理されるＤＦＧは、ＤＦＧ群の最後に配置され、ＤＦＧ群１についていえば、ＤＦＧ１−１２がＤＦＧ群１の最後に配置されている。同様に残りのＤＦＧを、最後に処理されるＤＦＧを途中に含まないＤＦＧ群に分割する。なお、図示のＤＦＧフローデータは一例であり、例えば、ＤＦＧ群２とＤＦＧ群３とを一つのＤＦＧ群として設定することも可能である。図示の例ではＤＦＧ群３において、最終段のＤＦＧ３−１０から先頭段のＤＦＧ３−１に戻る自己ループが形成されているが、ＤＦＧ群２とＤＦＧ群３とを結合した場合には、この自己ループが途中段のＤＦＧに戻ることになる。この場合であっても、最後の処理が発生するＤＦＧは最終段のＤＦＧであり、途中のＤＦＧから他のＤＦＧ群に移行することはない。
【００２９】
図５は、図４のＤＦＧフローデータに対応する設定データ保持部１４における設定データの格納例を示す。ここで、一つのＤＦＧが一つの設定データに対応するものとし、一つのＤＦＧの設定データは設定データ保持部１４の一つのアドレスに格納されるものとする。以下では、ＤＦＧおよび設定データを特に区別することなく取り扱うこともある。本実施例では、設定データを、図５に示すようにＤＦＧ群すなわち設定データ群ごとに格納する。
【００３０】
すなわち、設定データ保持部１４は、リコンフィギュラブル回路１２に供給する順序が確定している１以上の設定データを一つの設定データ群とし、複数の設定データを設定データ群単位で保持する。なお、設定データが１つの場合には、その設定データのみをリコンフィギュラブル回路１２に供給するため、その点から、リコンフィギュラブル回路１２に供給する順序が確定しているものとみなす。また、設定データが２以上の場合には、それらの設定データ間でリコンフィギュラブル回路１２に供給する順序が確定していることが必要である。ここでは、設定データ保持部１４が、リコンフィギュラブル回路１２上に所期の回路を構成するための複数の設定データを、７つの設定データ群に分解して保持している。このとき、設定データ保持部１４は、設定データ群における１以上の設定データを、リコンフィギュラブル回路１２への供給順序にしたがって、連続したアドレスの格納領域に保持する。すなわち、ＤＦＧ群内の２以上のＤＦＧの並びは、リコンフィギュラブル回路１２に対して供給する順番と同じとする。これにより、あるＤＦＧ群の設定データをリコンフィギュラブル回路１２に供給するには、設定データ保持部１４の読出アドレスを１ずつインクリメントすればよく、設定データ選択部２４から設定データ保持部１４に供給する読出アドレス（第１選択信号）の生成を単純化できる。このように、設定データ保持部１４には、一つのＤＦＧ群内における設定データを処理順に応じて格納することが好ましいが、ＤＦＧ群間のアドレス割当は適当であってよい。また、設定データ保持部１４は、リコンフィギュラブル回路１２を構成する設定データ以外の時間調整用の設定データ（Ｅ＿ＤＦＧ）を保持する。
【００３１】
図６は、シーケンサ装置２０の詳細を示す。シーケンサ制御データ保持部２２は、設定データ保持部１４におけるＤＦＧ群の先頭ＤＦＧのＲＡＭアドレス(COMaddr1)、分岐制御データｃ＝１の場合にシーケンサ制御データ保持部２２において次に読み出すアドレスへの移動数(a)、分岐制御データｃ＝０の場合にシーケンサ制御データ保持部２２において次に読み出すアドレスへの移動数(b)、ＤＦＧ群のＤＦＧ数(step)、ＤＦＧ群内で分岐制御データｃを出力するＤＦＧの順番(pos_c)、ＤＦＧ群のすべてのＤＦＧを処理した後に時間調整用に加えるＥ＿ＤＦＧの数(empty)を、シーケンサ制御データとして保持する。本実施例では、これらのシーケンサ制御データを一つの制御データ群とし、ＤＦＧ群（設定データ群）に対応付けて一つのアドレスに格納する。図６のシーケンサ制御データ保持部２２では、一つのアドレスにおいて、左から順に、ＲＡＭアドレス(COMaddr1)、移動数(a)、移動数(b)、ＤＦＧ群のＤＦＧ数(step)、分岐制御データｃを出力するＤＦＧの順番(pos_c)、Ｅ＿ＤＦＧの数(empty)を格納している様子を示している。
【００３２】
シーケンサ制御データは、図４に示したＤＦＧフローデータに基づいて生成される。図６の例では、ＤＦＧ群１のシーケンサ制御データ群をシーケンサ制御データ保持部２２のアドレス０に格納する。同様に、ＤＦＧ群２のシーケンサ制御データ群をアドレス１に、ＤＦＧ群３のシーケンサ制御データ群をアドレス２に、ＤＦＧ群４のシーケンサ制御データ群をアドレス３に、ＤＦＧ群５のシーケンサ制御データ群をアドレス４に、ＤＦＧ群６のシーケンサ制御データ群をアドレス５に、ＤＦＧ群７のシーケンサ制御データ群をアドレス６に格納する。なお、シーケンサ制御データ群を格納するアドレスは、ＤＦＧフローデータにおけるＤＦＧ番号の順に格納する必要はなく、ランダムであってよい。
【００３３】
シーケンサ制御データ保持部２２のアドレス７に、Ｅ＿ＤＦＧのシーケンサ制御データ群を格納する。このＥ＿ＤＦＧの設定データは、リコンフィギュラブル回路１２に構成した所期の回路の演算結果に影響を与えない設定データであり、すべてのＤＦＧ群が処理されたあとに時間調整を行うために利用される。例えば、処理装置１０におけるクロックレートが外部クロックレートの１００倍であるとき、外部１クロックに対し、リコンフィギュラブル回路１２で処理可能なＤＦＧ数は100となる。外部クロックレートは、外部装置とリコンフィギュラブル回路１２との間でデータを入出力するタイミングに影響を与える。処理するＤＦＧ数（設定データ数）が予め決まっていれば、外部との間のデータ入出力タイミングを予め定めることができるが、本実施例の演算処理では分岐処理が発生するため、条件の判定状況により全体の処理ＤＦＧ数が変化することになる。例えば図４を参照して、ＤＦＧ群１の処理終了後、条件の判定結果によってＤＦＧ群２またはＤＦＧ群７の処理が実行されるため、結果として処理されるＤＦＧ数が変化する。そこで、本実施例では、最後のＤＦＧであるＤＦＧ７−９が処理された後に、保持している演算結果を変更させずに、外部装置とのタイミング調整を図るべく、Ｅ＿ＤＦＧの設定データを100回以内の回数で実行させて、処理時間を調整する。
【００３４】
シーケンサ制御データCOMaddr1は、設定データ保持部１４におけるＤＦＧ群の先頭ＤＦＧのアドレスである。なお、図６に示す例では、シーケンサ制御データCOMaddr1がＤＦＧ群の先頭ＤＦＧのアドレスを指定しているが、例えばＤＦＧ群内における自己ループによりＤＦＧ群の途中のＤＦＧに戻る場合には、シーケンサ制御データCOMaddr1とは別に、その途中のＤＦＧのアドレスが設定されていてもよい。シーケンサ制御データCOMaddr1は、設定データ群を選択するものであり、群選択制御データと呼ぶこともできる。ＤＦＧ群１における先頭のＤＦＧはＤＦＧ１−１であるため、シーケンサ制御データ保持部２２のアドレス０におけるCOMaddr1は、１となる（図５参照）。他のＤＦＧ群に対しても同様であり、図５を参照して、シーケンサ制御データ保持部２２のアドレス１におけるCOMaddr1は１３、アドレス２におけるCOMaddr1は１６、アドレス３におけるCOMaddr1は２６、アドレス４におけるCOMaddr1は３２、アドレス５におけるCOMaddr1は３８、アドレス６におけるCOMaddr1は４８となる。また、アドレス７は、Ｅ＿ＤＦＧに対応するシーケンサ制御データ群が格納されており、COMaddr1は０となる。
【００３５】
シーケンサ制御データａおよびｂは、次に読み出すシーケンサ制御データ保持部２２のアドレスへの移動数であり、現在のアドレスに対する次のＤＦＧ群のシーケンサ制御データ保持部２２のアドレスの相対値を設定される。シーケンサ制御データａおよびｂは、分岐制御データｃに応じてシーケンサ制御データ選択部２８に選択的に読み出される。図４を参照して、ＤＦＧ群１の処理終了後、分岐制御データｃ＝１であれば、次の処理はＤＦＧ群２となる。ＤＦＧ群１のアドレス０とＤＦＧ群２のアドレス１の相対値は１であり、したがってシーケンサ制御データ保持部２２のアドレス０におけるシーケンサ制御データａは１となる。また、分岐制御データｃ＝０であれば、次の処理はＤＦＧ群７となり、ＤＦＧ群１のアドレス０とＤＦＧ群７のアドレス６の相対値は６であるため、シーケンサ制御データｂが６となる。他のＤＦＧ群に対しても同様である。例えば、ＤＦＧ群３では、ｃ＝１の場合、次に処理するＤＦＧ群が同じＤＦＧ群３であるため、シーケンサ制御データａは０となっている。ｃ＝０の場合、次の処理はＤＦＧ群４となるため、シーケンサ制御データｂは１となる。また、ＤＦＧ群６では、ｃ＝１の場合、次に処理するＤＦＧ群がＤＦＧ群２であり、ＤＦＧフローデータ上でフィードバックされることになるため、シーケンサ制御データａは−４となっている。なお、シーケンサ制御データａおよびｂは、次に読み出すシーケンサ制御データ保持部２２のアドレスそのものであってもよい。
【００３６】
シーケンサ制御データstepはＤＦＧ群のＤＦＧ数であり、ＤＦＧ群１では、ＤＦＧを12個有しているため、stepは１２となる。他のＤＦＧ群においても同様である。
【００３７】
シーケンサ制御データpos_cは、ＤＦＧ群内における分岐制御データｃを出力するＤＦＧの順番である。例えば、ＤＦＧ群１では、分岐制御データｃが、ＤＦＧ１−５の設定データをマッピングしたリコンフィギュラブル回路１２で生成されるとすると、シーケンサ制御データpos_cは５となる。他のＤＦＧ群に対しても同様である。
【００３８】
シーケンサ制御データemptyは、現在のＤＦＧ群内のすべてのＤＦＧを処理した後に時間調整用に加えるＥ＿ＤＦＧの数である。具体的には、分岐制御データｃの値がリコンフィギュラブル回路１２から出力された後、シーケンサ制御データ選択部２８が分岐制御データｃをもとにシーケンサ制御データ保持部２２のアドレスを指定して所期のシーケンサ制御データの読出を行い、設定データ選択部２４が設定データ保持部１４のアドレスを指定して、所期の設定データをリコンフィギュラブル回路１２に供給できる時間よりも前に、現在の設定データ群における設定データを全てリコンフィギュラブル回路１２に供給した場合に、設定データ保持部１４が、時間を調整するためにＥ＿ＤＦＧの必要数の設定データをリコンフィギュラブル回路１２に供給する。
【００３９】
例えば、ＤＦＧ群４では、シーケンサ制御データpos_cを参照すると、ＤＦＧ群４内の最後のＤＦＧが分岐制御データｃを生成し出力するが、分岐制御データｃの値に基づいてシーケンサ制御データ選択部２８がシーケンサ制御データ保持部２２の読出アドレスを生成し、設定データ選択部２４が、読み出されたシーケンサ制御データから設定データを選択して、その設定データを設定データ保持部１４からリコンフィギュラブル回路１２に供給させるまでには所定の時間がかかる。なお、図６のハード構成では、３つのＤＦＧの処理時間分が必要となる。その間、リコンフィギュラブル回路１２に設定データが供給されなければ、演算結果が上書きされる恐れがある。そこで、次のＤＦＧ群における設定データがリコンフィギュラブル回路１２に供給されるまでの間、演算結果に影響を与えないＥ＿ＤＦＧの設定データをリコンフィギュラブル回路１２に実行させておくことで、演算結果が上書きされる可能性を回避する。したがって、本実施例において、ＤＦＧ群４におけるシーケンサ制御データemptyは３となる。
【００４０】
また、ＤＦＧ群６では、シーケンサ制御データpos_cを参照して、ＤＦＧ群６内のＤＦＧ１０個中８番目のＤＦＧで分岐制御データｃが生成され、最後のＤＦＧが処理されるまでの間にＤＦＧ２つ分の時間が経過するため、Ｅ＿ＤＦＧを一つ挿入しておく必要がある（３−２＝０）。したがって、ＤＦＧ群６におけるシーケンサ制御データemptyは１となる。
【００４１】
以上から理解されるように、あるＤＦＧ群において、分岐制御データｃを出力するＤＦＧの後のＤＦＧの数が３つ以上である場合には、シーケンサ制御データemptyは０をとることになる。
【００４２】
シーケンサ制御部２６は、ＤＦＧ群の現在のＤＦＧの順番をカウントするカウンタを有している。このカウンタは、設定データ保持部１４から設定データを出力するタイミングに同期して出力を１ずつインクリメントする。カウント値は、設定データ選択部２４において、設定データ群内における設定データを選択する群内選択制御データとして利用される。
【００４３】
カウンタ値は、シーケンサ制御データ保持部２２から読み出されるシーケンサ制御データstep、emptyの合計値と等しくなったときに初期値１にリセットされる。例えば、シーケンサ制御データ保持部２２から読み出されるシーケンサ制御データが、ＤＦＧ群３からＤＦＧ群４に変わったとき、カウンタ値は１に設定されており、カウンタが８回インクリメントされて、カウンタ値が９（step+empty＝６＋３）になった次のクロックで、カウンタ値が初期値１にリセットされる。カウンタ値が初期値１になると、シーケンサ制御データ保持部２２は、シーケンサ制御データ選択部２８より供給される選択信号addrに基づいて、ＤＦＧ群５またはＤＦＧ群６のシーケンサ制御データを、設定データ選択部２４、シーケンサ制御部２６、シーケンサ制御データ選択部２８のそれぞれに読み出す。
【００４４】
シーケンサ制御部２６は、設定データ選択部２４でＥ＿ＤＦＧのアドレスを生成するかどうかを判定する信号flag_emptyを生成する。カウンタ値＞stepのときflag_emptyを１とし、それ以外のときはflag_emptyを０とする。flag_emptyは、ＤＦＧ群のすべてのＤＦＧが処理された後に時間調整用としてＥ＿ＤＦＧを挿入させる必要がある場合を判定した結果であり、１のとき、設定データ選択部２４はＥ＿ＤＦＧのアドレスを生成する。例えば、ＤＦＧ群４では、step＝６であり、カウンタ値は１から９までインクリメントされることになるが、カウンタ値＝７，８，９のときflag_emptyは１となり、それ以外のときはflag_emptyは０となる。
【００４５】
設定データ選択部２４は、設定データ保持部１４から読み出す設定データの読出アドレスCOMaddr2を生成する。flag_emptyが１のときは、COMaddr2が、Ｅ＿ＤＦＧのアドレス（EMPTYDFG_ADDR）に設定され、flag_emptyが０のときは、COMaddr2が、（COMaddr1＋カウンタ値−１）に設定される。このように、flag_emptyが０のときは、設定データ選択部２４が、COMaddr1（群選択制御データ）およびカウンタ値（群内選択制御データ）をもとに、読出アドレスCOMaddr2を生成する。なお、EMPTYDFG_ADDRは０である（図５参照）。設定データ選択部２４は、シーケンサ制御部２６からカウンタ値を受け取り、（COMaddr1＋カウンタ値−１）は、カウンタ値のインクリメントにあわせて１ずつ大きくなる。図７は、設定データ選択部２４における読出アドレスの生成アルゴリズムを示す。
【００４６】
図５に関して説明したように、設定データ保持部１４は、１つのＤＦＧ群内のＤＦＧを、その処理順に合わせて連続したアドレスに格納している。そのため、設定データ選択部２４は、１つのＤＦＧ群内の設定データのアドレスを、最初の設定データのアドレス（COMaddr1）から所定のタイミングで１ずつインクリメントしていくことで、そのＤＦＧ群内におけるＤＦＧを順番にリコンフィギュラブル回路１２に供給させることができる。例えば、ＤＦＧ群４では、カウンタは９までインクリメントされる。カウンタ値＝７，８，９のとき、flag_emptyは１となる。COMaddr1＝２６であるため、設定データ選択部２４は、COMaddr2を、順に26、27、28、29、30、31、0、0、0と変化させて、設定データ保持部１４に供給する。この順に、設定データ保持部１４から設定データが読み出されることによって、リコンフィギュラブル回路１２上に、最初の６クロックでＤＦＧ４−１、・・・、ＤＦＧ４−６が生成され、最後の３クロックでＥ＿ＤＦＧが生成されることになる。
【００４７】
シーケンサ制御部２６は、リコンフィギュラブル回路１２から分岐制御データｃがシーケンサ制御データ選択部２８に供給されるタイミングを示す信号flag_cと、シーケンサ制御データ選択部２８でシーケンサ制御データ保持部２２の次のＤＦＧ群のアドレスに変更するタイミングを示す信号change_addrを生成し、シーケンサ制御データ選択部２８に供給する。flag_cは、設定データ選択部２４で分岐制御データｃを生成する設定データのアドレスが生成されてから、分岐制御データｃがシーケンサ制御データ選択部２８に供給されるまでの遅延時間等（DELAYTIME1）を加味して生成され、カウンタ値が（pos_c＋DELAYTIME1）のときに、flag_cは０から１に設定される。change_addrは、シーケンサ制御データ選択部２８においてシーケンサ制御データ保持部２２に読出アドレスを入力する遅延時間等（DELAYTIME2）を加味して生成され、カウンタ値が（step＋empty−DELAYTIME2）のときchange_addrは０から１に設定される。例えば、DELAYTIME1＝２、DELAYTIME2＝１とした場合、ＤＦＧ群１では、pos_c＝５であるため、カウンタ値＝５＋２＝７のときflag_cが１となる。また、step＝１２、empty＝０であるため、カウンタ値＝１２＋０−１＝１１のときchange_addrが１となる。図８は、シーケンサ制御部２６における動作アルゴリズムを示す。
【００４８】
シーケンサ制御データ選択部２８は、シーケンサ制御データ保持部２２から読み出すシーケンサ制御データの読出アドレスaddrを生成する。また、flag_c＝１のときのシーケンサ制御データ保持部２２のシーケンサ制御データａまたはｂの値set_cと、現在のシーケンサ制御データ保持部２２の読出アドレスaddrを保持している。リコンフィギュラブル回路１２から分岐制御データｃが供給されるタイミングとなったとき（flag_c＝１）、シーケンサ制御データ選択部２８は、分岐制御データｃが０であれば、set_cにシーケンサ制御データｂを、分岐制御データｃが１であれば、set_cにシーケンサ制御データａを保持させておく。そして、読出アドレスaddrを変更するタイミングとなったき（change_addr＝１）、シーケンサ制御データ選択部２８は、pos_cが０以外の値であれば、addrに保持しているset_cを加える。一方、pos_cが０であれば、分岐制御データｃの値に依存せずに次に読み出すＤＦＧ群が一意に決まっている場合であり、addrに、分岐制御データａを加える。pos_cが０の場合とは、図４および図６を参照して、ＤＦＧ群２、ＤＦＧ群５などであり、この場合には分岐制御データが供給されず、次に処理するＤＦＧ群が予め定められている。
【００４９】
change_addrが０のときは、ＤＦＧ群が変更されないときであるため、シーケンサ制御データ選択部２８は、addrの値をそのまま保持しておく。そして、ここで生成されたaddrをシーケンサ制御データ保持部２２の読出アドレスとすることで、所期のシーケンサ制御データを読み出すことができる。例えば、ＤＦＧ群１では、上記の例では、カウンタ値＝７のときflag_cが１となり、このとき分岐制御データｃが０であれば、set_c＝ｂ＝６となる。そして、カウンタ値＝１１のときchange_addrが１となり、このとき、現在のaddrが０、pos_cが５（！＝０）であるため、addrにset_c（＝６）を加えることで、新たなaddr（＝６）を設定する。したがって、次にシーケンサ制御データ保持部２２から読み出すシーケンサ制御データは、シーケンサ制御データ保持部２２のアドレス６に格納されたＤＦＧ群７のものとなる。change_addr＝０のときは、addrは変更されないため、同じＤＦＧ群１のシーケンサ制御データが読み出される。図９は、シーケンサ制御データ選択部２８における動作アルゴリズムを示す。
【００５０】
このように、上記のＤＦＧ群１の例のように、ＤＦＧ群の前段の方のＤＦＧで分岐制御データｃが生成される場合、残りのＤＦＧの設定データをリコンフィギュラブル回路１２に供給している間に、次のＤＦＧ群を決定する信号を生成してset_cとして保持しておくことができるため、ＤＦＧ群の変更時には選択による遅延が発生しない。したがって、ＤＦＧ群内だけでなく、ＤＦＧ群間でも切れ目なくＤＦＧが供給でき、処理パフォーマンスが向上し、消費電力が削減される。また、シーケンサ制御データ保持部２２の制御データをＤＦＧ単位でなく、ＤＦＧ群単位で持たせることによりシーケンサ制御データ数を減らすことができるため、シーケンサ制御データ保持部２２のメモリ容量が小さくなり、回路規模が削減される。
【００５１】
次に、このようなシーケンサ装置２０を備えることによる利点を、図４を例に取り説明する。
例えば、ＤＦＧ群４でif文による条件分岐により、ＤＦＧ群５またはＤＦＧ群６のどちらかを処理する場合、シーケンサ装置２０があれば、条件分岐の方向を示す分岐制御データｃを受けて、ＤＦＧ群５またはＤＦＧ群６のいずれか一方を処理すればよい。従来の処理装置のようにシーケンサ装置２０が存在しない場合には、ＤＦＧ群５とＤＦＧ群６の双方を処理し、その結果をif文の条件分岐の判定結果により選択する必要があり、処理時間が長くなっていた。本実施例の処理装置１０は、シーケンサ装置２０を備えることにより、処理速度が向上し、消費電力を削減できる。また、分岐処理において、if文とelse文の処理量が大きく異なる場合であっても、同じ大きさのＤＦＧで処理量に応じたＤＦＧ数をもったＤＦＧ群を作成して、ＤＦＧを順次実行するため、動作しない回路部分を減らすことができ、処理パフォーマンスを向上できる。
【００５２】
また、例えば、ＤＦＧ群３がfor文によるループ処理により、何度も呼び出される場合、本実施例の処理装置１０は、シーケンサ装置２０を備えることにより、for文のループ判定結果による条件分岐の方向を示す分岐制御データｃを受けて、ＤＦＧ群３のループ処理を継続するか、またはループ処理を抜けてＤＦＧ群４を処理することになる。このため、処理装置１０では、ループ処理１回分のＤＦＧ群３の設定データのみを設定データ保持部１４に持たせ、それをループ回数分呼び出すことによりループ処理を実現できる。一方、シーケンサ装置２０が存在しない場合には、全ループ回数分の設定データを設定データ保持部１４に持たせ、それを順次処理する必要があり、設定データの容量が大きくなっていた。本実施例の処理装置１０は、シーケンサ装置２０を備えることにより、設定データ保持部１４の容量を小さくでき、回路規模を削減できる。さらに、ループ回数がループ内の演算結果によって決まるようなループ回数不定のループ処理は、シーケンサ装置２０を備えなければ、事前に処理順序を定めることが非常に困難であるが、シーケンサ装置２０があれば、ループ内の演算結果である分岐制御データｃを用いて、ループ処理を続けて行うかどうかの判定をその都度行うことができ、ループ回数不定のループ処理の実現も容易に実現可能となる。
【００５３】
最後に、シーケンサ装置２０を備えた回路と備えていない回路の実際の規模比較を行う。ここでは、MPEG-4のIDCT処理部のＤＦＧを用いた場合を想定し、設定データ保持部１４、シーケンサ制御データ保持部２２は、ともに１ポートＲＡＭとし、１bit＝1.5gateとして換算している。シーケンサ装置２０を備えていない回路では、設定データ保持部１４のゲート数が28.5万gatesとなった。それに対し、シーケンサ装置２０を備えた回路では、シーケンサ装置２０のゲート数が0.5万gates、設定データ保持部１４のゲート数が6.7万gates、シーケンサ制御データ保持部２２のゲート数が0.03万gatesとなり、全体として7.2万gatesとなった。したがって、シーケンサ装置２０を備えた回路の方が備えていない回路に比べて回路規模を0.25倍と削減することができた。特に、処理装置１０が携帯型の端末装置として存在する場合、回路規模を削減できることは非常に重要であり、また、携帯型でない場合であっても、回路規模の削減は消費電力の削減にもつながり、有用性の高い処理装置１０を実現することが可能である。
【００５４】
以上、本発明を実施例をもとに説明した。実施例は例示であり、それらの各構成要素や各処理プロセスの組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。例えば、実施例では、分岐制御データｃはリコンフィギュラブル回路１２の出力として生成されることとしているが、分岐制御データｃは、外部装置の状態により決定されてもよい。この場合、分岐制御データｃは外部から供給される。
【００５５】
今回開示された実施例はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００５６】
【図１】実施例に係る処理装置の構成図である。
【図２】リコンフィギュラブル回路の構成の一例を示す図である。
【図３】設定データおよびシーケンサ制御データの生成手順を示す図である。
【図４】ＤＦＧフローデータの例を示す図である。
【図５】図４のＤＦＧフローデータに対応する設定データ保持部における設定データの格納例を示す図である。
【図６】シーケンサ装置の詳細を示す図である。
【図７】設定データ選択部における読出アドレスの生成アルゴリズムを示す図である。
【図８】シーケンサ制御部における動作アルゴリズムを示す図である。
【図９】シーケンサ制御データ選択部における動作アルゴリズムを示す図である。
【符号の説明】
【００５７】
１０・・・処理装置、１２・・・リコンフィギュラブル回路、１４・・・設定データ保持部、２０・・・シーケンサ装置、２２・・・シーケンサ制御データ保持部、２４・・・設定データ選択部、２６・・・シーケンサ制御部、２８・・・シーケンサ制御データ選択部、３０・・・出力データ保持部、３２・・・経路部。
【図１】
2006065788.tif 000003
【図２】
2006065788.tif 000004
【図３】
2006065788.tif 000005
【図４】
2006065788.tif 000006
【図５】
2006065788.tif 000007
【図６】
2006065788.tif 000008
【図７】
2006065788.tif 000009
【図８】
2006065788.tif 000010
【図９】
2006065788.tif 000011