(57)【特許請求の範囲】
【請求項１】
複数個の演算器を含むデータ演算部であって、前記複数個の演算器は、クロック信号の立ち上がりエッジにおいて、複数のデータが全て有効状態になると前記複数のデータに対して演算を実行し、前記複数個の演算器は、前記複数のデータが全て有効状態である間、前記演算により得られた演算結果を示す有効状態のデータを出力し続ける、データ演算部と、
前記演算器間を再構成可能に接続するデータ選択部と、
一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データとして保持するデータ入力部と
を含み、前記データの有効及び無効状態は該データに対として付随する有効及び無効を示す信号により示され、前記一連の演算を実行する間は前記データ入力部から前記データ演算部に供給されている前記入力データを有効状態の同一データに固定しておくことを特徴とするリコンフィギュラブル回路。
【請求項２】
前記一連の演算により得られる１つ又は複数の演算結果が全て同時に有効になると演算終了判定信号をアサートする演算終了判定回路を更に含むことを特徴とする請求項１記載のリコンフィギュラブル回路。
【請求項３】
前記演算終了判定信号のアサートに応答して、前記データ入力部から前記データ演算部への有効状態のデータ供給を終了することを特徴とする請求項２記載のリコンフィギュラブル回路。
【請求項４】
前記データ選択部は前記演算終了判定回路に接続される複数の出力ポートを含み、前記一連の演算により得られる前記１つ又は複数の演算結果の有効及び無効を示す信号を前記複数の出力ポートのうちの１つ又は複数を介して前記演算終了判定回路に供給し、前記演算終了判定回路は、前記複数の出力ポートのうちで前記有効及び無効を示す信号が同時に有効になるか否かを判断する対象の出力ポートを設定可能であることを特徴とする請求項２又は３記載のリコンフィギュラブル回路。
【請求項５】
前記一連の演算の開始を指示する開始指示信号を前記データ入力部に対してアサートする制御部を更に含み、前記データ入力部は、前記開始指示信号のアサートに応答して前記データ演算部への有効状態のデータ供給を開始することを特徴とする請求項１乃至４何れか一項記載のリコンフィギュラブル回路。
【請求項６】
リコンフィギュラブル回路の駆動方法であって、前記リコンフィギュラブル回路は、
複数個の演算器を含むデータ演算部であって、前記複数個の演算器は、クロック信号の立ち上がりエッジにおいて、複数のデータが全て有効状態になると前記複数のデータに対して演算を実行し、前記複数個の演算器は、前記複数のデータが全て有効状態である間、前記演算により得られた演算結果を示す有効状態のデータを出力し続ける、データ演算部と、
前記演算器間を再構成可能に接続するデータ選択部と、
一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データとして保持するデータ入力部とを含み、
前記方法は、前記一連の演算を実行する間は前記データ入力部から前記データ演算部に供給されている前記入力データを有効状態の同一データに固定しておく段階を含む、
ことを特徴とするリコンフィギュラブル回路の駆動方法。
【請求項７】
前記一連の演算により得られる１つ又は複数の演算結果が全て同時に有効になると演算終了判定信号をアサートする段階を更に含むことを特徴とする請求項６記載のリコンフィギュラブル回路の駆動方法。
【請求項８】
前記演算終了判定信号のアサートに応答して、前記データ入力部から前記データ演算部への有効状態のデータ供給を終了する段階を更に含むことを特徴とする請求項７記載のリコンフィギュラブル回路の駆動方法。
【請求項９】
前記一連の演算により得られる前記１つ又は複数の演算結果の有効及び無効を示す信号を前記データ選択部の複数の出力ポートのうちの１つ又は複数を介して供給し、前記複数の出力ポートのうちで前記有効及び無効を示す信号が同時に有効になるか否かを判断する対象の出力ポートを設定する段階を更に含むことを特徴とする請求項７又は８記載のリコンフィギュラブル回路の駆動方法。
【請求項１０】
前記一連の演算の開始を指示する開始指示信号のアサートに応答して、前記データ入力部に前記データ演算部への有効状態のデータ供給を開始させる段階を更に含むことを特徴とする請求項６乃至１０何れか一項記載のリコンフィギュラブル回路の駆動方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、一般に電子回路に関し、詳しくは動的に再構成可能なリコンフィギュラブル回路に関する。
【背景技術】
【０００２】
ダイナミックリコンフィギャラブル回路（以下、リコンフィギュラブル回路と呼ぶ）は、各種演算機能を有する複数の演算器を含むデータ演算部と、演算器間の接続を行なうネットワークであるデータ選択部とを含む。外部から設定したコンフィギュレーションデータに基づいて、データ演算部の各演算器の演算命令とデータ選択部が規定する演算器間の接続とを再構成可能に設定する。リコンフィギュラブル回路を動作させながら、コンフィギュレーションデータを書き換えることにより、演算命令と演算器間の接続とを動的に変更することが可能である。これにより、演算器を時間軸方向に分割して共用し、回路全体のハードウェア規模を削減することが可能となる。またリコンフィギュラブル回路は、パイプライン演算を行うことが可能であり、連続したデータを高速に処理することができる。
【０００３】
演算機能を実現する演算器は、その演算内容に応じて、演算の実行にかかるレイテンシが変化する。一般に、単純な演算であれば演算終了までの演算サイクル数が比較的短く、複雑な演算であれば演算終了までの演算サイクル数が比較的長くなる。このような演算レイテンシの違いや演算順序等に起因して、ある演算器が前段の例えば２つの演算器からの演算結果を受けて演算を行なう場合、これら２つの演算器の演算結果が同時に利用可能になるとは限らない。このような場合、演算タイミングを合わせるために、早いほうの演算結果のデータ経路にディレイを挿入することが一般的に行なわれる。また各種演算機能を組み合わせて所望の演算内容を実現する際に、その全体の演算が終了したことを外部に通知するために、終了する迄の実行サイクル数をカウントする機能等が設けられる。
【０００４】
上記のディレイを実現するディレイ回路においては、回路構成の自由度を確保するためには、その遅延段数を所望のサイクル数に設定可能であることが好ましい。このようなディレイ回路を設けることは、データ演算部の回路規模の増大という問題をひきおこす。また実装するディレイの個数が増えれば、データ演算部とデータ選択部との両方において回路規模が増大し、更に、データ選択部を経由するパスの動作速度が低下することになる。また上記の終了迄の実行サイクル数をカウントする機能を設けるためには、演算の最大実行回数分の演算サイクル数のメモリや演算実行サイクル数をカウントするカウンタが必要になり、回路規模が増大するという問題をひきおこす。これらの回路規模の増大は、演算機能の組み合わせ可能数や演算機能の種類の数が増えるほど、即ち、実現したい汎用性が高くなるほど、大きくなるという問題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１１８７１３号公報
【特許文献２】特開２００８−９２１９０号公報
【特許文献３】特開２００７−９４８４７号公報
【特許文献４】特開２００９−７５８７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
以上を鑑みると、単純な回路構成により演算実行のレイテンシを吸収できるリコンフィギュラブル回路が望まれる。
【課題を解決するための手段】
【０００７】
リコンフィギュラブル回路は、複数のデータが全て同時に有効状態になると前記複数のデータに対して演算を実行し、前記複数のデータが全て同時に有効状態である間、前記演算により得られた演算結果を示す有効状態のデータを出力し続ける演算器を、複数個含むデータ演算部と、前記演算器間を再構成可能に接続するデータ選択部と、一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データして保持するデータ入力部とを含み、前記データの有効及び無効状態は該データに対として付随する有効及び無効を示す信号により示され、前記一連の演算を実行する間は前記データ入力部から前記データ演算部に供給されている前記入力データを有効状態の同一データに固定しておくことを特徴とする。
【０００８】
また、複数のデータが全て同時に有効状態になると前記複数のデータに対して演算を実行し、前記複数のデータが全て同時に有効状態である間、前記演算により得られた演算結果を示す有効状態のデータを出力し続ける演算器を複数個含むデータ演算部と、前記演算器間を再構成可能に接続するデータ選択部と、一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データして保持するデータ入力部とを含むリコンフィギュラブル回路において、リコンフィギュラブル回路の駆動方法は、前記一連の演算を実行する間は前記データ入力部から前記データ演算部に供給されている前記入力データを有効状態の同一データに固定しておく段階を含むことを特徴とする。
【発明の効果】
【０００９】
本願開示の少なくとも１つの実施例によれば、リコンフィギュラブル回路において、一連の演算が実行される間、データ入力部からのデータ供給を、当該データを示す信号が活性化されている状態（即ちデータ供給状態）に維持する。これにより、データ入力部からのデータ供給に基づいて演算を実行する各演算機能ユニットにおいて、有効状態の演算結果を出力したままの状態を維持することができる。従って、複数のデータを入力とする各演算機能ユニットでは、複数のデータの何れも消えてしまうことなく有効状態に維持されるので、全てのデータが同時に有効状態となるのを待ってから演算を開始すればよい。従って、タイミングを合わせるためのディレイ回路が不要となる。
【図面の簡単な説明】
【００１０】
【図１】リコンフィギュラブル回路の構成の一例を示す図である。
【図２】演算機能ユニットの動作を説明するための図である。
【図３】レジスタユニットの構成の一例を示す図である。
【図４】図１に示すカウンタの構成の一例を示す図である。
【図５】図１のリコンフィギュラブル回路の動作の一例を示すタイムチャートである。
【図６】リコンフィギュラブル回路の構成の一例を示す図である。
【図７】レジスタユニットの構成の一例を示す図である。
【図８】演算終了判定部の構成の一例を示す図である。
【図９】図６のリコンフィギュラブル回路の動作の一例を示すタイムチャートである。
【図１０】各演算機能ユニットに入力データ保持機能を持たせた場合のリコンフィギュラブル回路の動作の一例を示すタイムチャートである。
【発明を実施するための形態】
【００１１】
まずリコンフィギュラブル回路の一般的な構成について説明する。図１は、リコンフィギュラブル回路の構成の一例を示す図である。図１のリコンフィギュラブル回路は、制御部１０、セレクタ回路部１１、データ入出力部１２、データ選択部１３、及びデータ演算部１４を含む。制御部１０は、外部インタフェース機能２０と制御機能２１とを含み、システムバス２００に接続される。制御機能２１は、リコンフィギュラブル回路全体の動作を制御するための機能であり、コンフィギュレーションメモリ２１Ａ及びシーケンサ２１Ｂ等を含む。データ演算部１４は、複数の演算機能ユニット２３−１乃至２３−７、複数のディレイユニット２４−１乃至２４−４、及びカウンタ２５を含む。演算機能ユニットの数及びディレイユニットの数は一例であり、この例に限定されない。データ選択部１３はネットワーク回路２２を含み、このネットワーク回路２２により、データ演算部１４の演算機能ユニット２３−１乃至２３−７、ディレイユニット２４−１乃至２４−４、及びカウンタ２５間を再構成可能に接続する。データ入出力部１２は、複数のレジスタユニット２６−１乃至２６−８を含む。レジスタユニット２６−１乃至２６−８の数は一例であり、この例に限定されない。またセレクタ回路部１１はセレクタ２７を含む。
【００１２】
複数の演算機能ユニット２３−１乃至２３−７の各々が実行する演算は、コンフィギュレーションデータ中の演算命令により指定される。また複数の演算機能ユニット２３−１乃至２３−７間の接続形態は、コンフィギュレーションデータ中の接続データにより指定される。これらのコンフィギュレーションデータはコンフィギュレーションメモリ２１Ａに格納されている。シーケンサ２１Ｂは、コンフィギュレーションメモリ２１Ａに格納される複数のコンフィギュレーションデータの内で、データ選択部１３及びデータ演算部１４の現在の実行形態を指定するコンフィギュレーションデータを選択する。シーケンサ２１Ｂにより指定されたコンフィギュレーションデータがデータ選択部１３及びデータ演算部１４に供給され、そのコンフィギュレーションデータに従った演算実行形態でデータ選択部１３及びデータ演算部１４が動作する。シーケンサ２１Ｂは、順次新たなコンフィギュレーションデータを指定してデータ選択部１３及びデータ演算部１４に供給することで、データ選択部１３及びデータ演算部１４の演算実行形態（コンテキスト）を順次更新していくことができる。
【００１３】
図２は、演算機能ユニットの動作を説明するための図である。図２（ａ）には、１つの演算機能ユニットの入出力信号を示す。図２（ａ）に示すように、演算機能ユニットの入力信号は、２つの演算データ入力Ｄａｔａ＿ｉｎ０及びＤａｔａ＿ｉｎ１と、２つのＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１とを含む。Ｖａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１はそれぞれ演算データ入力Ｄａｔａ＿ｉｎ０及びＤａｔａ＿ｉｎ１に対応して設けられ、演算データ入力Ｄａｔａ＿ｉｎ０及びＤａｔａ＿ｉｎ１の有効期間を示す信号である。例えば、Ｖａｌｉｄ信号入力が“０”のとき、対応する演算データ入力が無効であることを示し、Ｖａｌｉｄ信号入力が“１”のとき、対応する演算データ入力が有効であることを示す。演算機能ユニットの出力信号は、演算データ出力Ｄａｔａ＿ｏｕｔ及びＶａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔを含む。例えば、Ｖａｌｉｄ信号出力が“０”のとき、演算データ出力が無効であることを示し、Ｖａｌｉｄ信号出力が“１”のとき、演算データ出力が有効であることを示す。また演算機能ユニットは、クロック信号Ｃｌｏｃｋを受け取り、このクロック信号Ｃｌｏｃｋに同期して動作する。
【００１４】
図２（ｂ）には、演算機能ユニットの入出力信号の変化の一例を示す。演算機能ユニットは、クロック信号Ｃｌｏｃｋの立ち上がりエッジにおいてＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１が共にデータ有効を示す値“１”である場合、そのときの演算データ入力Ｄａｔａ＿ｉｎ０及びＤａｔａ＿ｉｎ１に対する演算を実行する。演算機能ユニットは、出力信号を演算結果で更新することにより、演算データ出力Ｄａｔａ＿ｏｕｔを出力すると共に、Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔを“１”に設定する。図２（ｂ）に示す例において、演算機能ユニットの演算データ出力Ｄａｔａ＿ｏｕｔは、最初に、立ち上がりエッジＴ１に応答して、入力データａ１及びｂ１に対する演算結果ｃａｌｃ（ａ１，ｂ１）で更新される。演算データ出力Ｄａｔａ＿ｏｕｔは、次に、立ち上がりエッジＴ３に応答して、入力データａ５及びｂ５に対する演算結果ｃａｌｃ（ａ５，ｂ５）で更新される。演算データ出力Ｄａｔａ＿ｏｕｔは、更に、立ち上がりエッジＴ４に応答して、入力データａ６及びｂ６に対する演算結果ｃａｌｃ（ａ６，ｂ６）で更新される。演算機能ユニットの演算データ出力Ｄａｔａ＿ｏｕｔは、次の演算データ出力で更新されるまで、現在の値を保持する。なお図２（ｂ）において、演算データ出力Ｄａｔａ＿ｏｕｔは、演算開始をトリガするクロック信号Ｃｌｏｃｋの立ち上がりエッジから、演算に必要なレイテンシ後に更新される。このレイテンシの長さは、演算の種類によって異なる。一般に、単純な演算であれば演算終了までの演算サイクル数が比較的短く、複雑な演算であれば演算終了までの演算サイクル数が比較的長くなる。
【００１５】
Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、クロック信号Ｃｌｏｃｋの立ち上がりエッジにおいてＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１のうち少なくとも一方が無効を示す値“０”であると、無効を示す値“０”になる。図２（ｂ）に示す例において、演算機能ユニットのＶａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、立ち上がりエッジＴ２に応答して、有効を示す値“１”から無効を示す値“０”に変化する。同様に、Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、立ち上がりエッジＴ５に応答して、有効を示す値“１”から無効を示す値“０”に変化する。なお図２（ｂ）に示すように、クロック信号Ｃｌｏｃｋの立ち上がりエッジからＶａｌｉｄ信号出力が“０”へ変化するまでの時間は、上記の演算に必要なレイテンシの長さに等しくてよい。
【００１６】
なお演算機能ユニットの演算データ出力及びＶａｌｉｄ信号出力は、クロック信号Ｃｌｏｃｋに同期して変化するように構成してもよい。例えば、立ち上がりエッジＴ３に応答して演算機能ユニットが演算を行なうと、その次の立ち上がりエッジＴ４において、演算データ出力Ｄａｔａ＿ｏｕｔが当該演算結果に更新され且つＶａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔが“１”となってよい。このとき、立ち上がりエッジＴ４でＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１のうち少なくとも一方が無効を示す値“０”であるとすると、Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、その次の立ち上がりエッジＴ５で“１”から“０”に変化してよい。この例では、演算のレイテンシは１クロックサイクルであるが、演算のレイテンシは１クロックサイクルに限られず、それ以上のクロックサイクル数であってもよい。例えば、ある立ち上がりエッジに応答して演算機能ユニットが演算を行なうと、ｎサイクル後の立ち上がりエッジにおいて、演算データ出力Ｄａｔａ＿ｏｕｔが当該演算結果に更新され且つＶａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔが“１”となってよい。このとき、１サイクル後の立ち上がりエッジでＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１のうち少なくとも一方が無効値“０”であれば、Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、ｎ＋１サイクル後の立ち上がりエッジで“１”から“０”に変化してよい。
【００１７】
図３は、レジスタユニットの構成の一例を示す図である。図３には、レジスタユニット２６−１の構成を一例として示し、各レジスタユニット２６−１乃至２６−８は同一の構成でよい。レジスタユニット２６−１は、セレクタ３１−１乃至３１−４、データメモリ３２、ＡＮＤ回路３３、及びフリップフロップ３４を含む。
【００１８】
図１に示す制御部１０から、外部信号又は内部信号の何れかを選択するための選択制御信号が、セレクタ３１−１乃至３１−４に供給される。この選択制御信号が“０”のとき、セレクタ３１−１乃至３１−４は内部からの信号を選択する。また選択制御信号が“１”のとき、セレクタ３１−１乃至３１−４は外部からの信号を選択する。外部からの信号は、外部入力データ（書き込み対象のデータ）、外部アドレス（書き込み又は読み出しアドレス）、及び外部書き込みイネーブルを含む。選択制御信号が外部信号選択“１”のとき、外部書き込みイネーブルをアサート状態にすることで、外部から供給される書き込みデータをデータメモリ３２の指定した書き込みアドレスに書き込む。また選択制御信号が外部信号選択“１”のとき、外部書き込みイネーブルをネゲート状態にすることで、データメモリ３２の指定した読み出しアドレスからデータを外部出力データとして読み出す。
【００１９】
内部からの信号は、例えばデータ選択部１３の演算出力ポート（図１に示すＰｏｒｔ１０乃Ｐｏｒｔ１７）からセレクタ回路部１１を介して供給される信号であり、データ、アドレス、データＶａｌｉｄ、及びアドレスＶａｌｉｄを含む。データＶａｌｉｄ及びアドレスＶａｌｉｄは、それぞれデータ及びアドレスの有効又は無効を示すＶａｌｉｄ信号である。選択制御信号が内部信号選択“０”のとき、データＶａｌｉｄ及びアドレスＶａｌｉｄを有効値にすることで、内部から供給される書き込みデータをデータメモリ３２の指定した書き込みアドレスに書き込む。また選択制御信号が内部信号選択“０”のとき、データＶａｌｉｄを無効値にして且つアドレスＶａｌｉｄを有効値にすることで、データメモリ３２の指定した読み出しアドレスからデータを読み出す。このとき、ＡＮＤ回路３３の出力が“１”となることによりフリップフロップ３４に“１”がセットされ、レジスタユニット２６−１の出力するデータＶａｌｉｄが有効値を示す値“１”となる。
【００２０】
図４は、図１に示すカウンタ２５の構成の一例を示す図である。カウンタ２５は、カウンタ回路４１、コンパレータ４２、コンパレータ４３、及びフリップフロップ４４を含む。カウンタ回路４１には、現在のコンフィギュレーションデータ（コンテキスト）に基づくリコンフィギュラブル回路の演算開始を指示する開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒを受け取る。カウンタ回路４１は、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒのアサートに応答して、クロック信号のパルスのカウントを開始し、カウント値を出力する。コンパレータ４２は、カウンタ回路４１の出力カウント値と制御部１０から供給される演算全体のレイテンシを示す演算サイクル数とを比較して、両者が一致すると出力をアサートする。このコンパレータ４２の出力が、演算終了判定信号Ｐｒｅｄｉｃａｔｅとして制御部１０に供給される。コンパレータ４３は、カウンタ回路４１の出力カウント値と制御部１０から供給される演算入力データ長とを比較する。このコンパレータ４３は、出力カウント値が演算入力データ長以下の時、その出力を“１”にすることにより、フリップフロップ４４に“１”を設定する。カウンタ２５は、カウンタ回路４１の出力カウント値をデータとして出力すると共に、フリップフロップ４４の格納値をデータＶａｌｉｄとして出力する。このカウンタ２５の出力データは、リコンフィギュラブル回路がパイプライン処理する一連の入力データをデータ入出力部１２のレジスタユニットから読み出すためのアドレスとして使用される。
【００２１】
図５は、図１のリコンフィギュラブル回路の動作の一例を示すタイムチャートである。この動作例は、３つの入力データが連続してパイプライン処理される動作を示すものである。またこの動作例では、図１の演算入力ポートＰｏｒｔ２及びＰｏｒｔ３のデータを演算機能ユニット２３−２により演算し、その演算結果と演算入力ポートＰｏｒｔ１のデータとを演算機能ユニット２３−５により演算する。そして、演算機能ユニット２３−５の演算結果を演算出力ポートＰｏｒｔ１７から出力する。また更に、演算入力ポートＰｏｒｔ１及びＰｏｒｔ２のデータを演算機能ユニット２３−１により演算し、その演算結果と上記の演算機能ユニット２３−２の演算結果とを演算機能ユニット２３−４により演算する。そして、演算機能ユニット２３−４の演算結果を演算出力ポートＰｏｒｔ１４から出力する。これら各ポートと各演算機能ユニットとについて、データ信号及びＶａｌｉｄ信号が図５に示されている。
【００２２】
まず制御部１０が、所望のコンフィギュレーションにデータ選択部１３及びデータ演算部１４を設定し、データ入出力部１２に処理対象の入力データを書き込んでおく。その後、制御部１０が、図３に示すデータ入出力部１２の選択制御信号を、内部信号選択を示す値に設定しておく。以上の設定が終了すると、図５（ａ）に示すように、制御部１０の制御機能２１が、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒをＨＩＧＨにアサートする。これに応答し、（ｂ）に示すように、図４で説明したカウンタ２５が、演算出力ポートＰｏｒｔ１０を介して、アドレス信号ａ０乃至ａ２とＶａｌｉｄ信号とを出力する。図１に示すデータ入出力部１２の所望のレジスタユニットに、これらのアドレス信号ａ０乃至ａ２が供給され、アドレス信号が示すアドレスからデータが読み出される。図５の動作例では、（ｃ）に示す演算入力ポートＰｏｒｔ２、（ｄ）に示す演算入力ポートＰｏｒｔ３、（ｆ）に示す演算入力ポートＰｏｒｔ１から、それぞれ３つのデータが各クロックサイクルで連続して読み出される。
【００２３】
（ｃ）に示す演算入力ポートＰｏｒｔ２のデータｉ２０乃至ｉ２２及び（ｄ）に示す演算入力ポートＰｏｒｔ３のデータｉ３０乃至ｉ３２が、演算機能ユニット２３−２により演算される。その演算結果ｃ２０乃至ｃ２２は、（ｅ）に示されるように、入力データに対して、演算機能ユニット２３−２のレイテンシである２サイクル分遅れて出力される。この演算結果ｃ２０乃至ｃ２２のタイミングに合わせるために、（ｆ）に示す演算入力ポートＰｏｒｔ１のデータｉ１０乃至ｉ１２がディレイユニット２４−１に入力され、（ｇ）に示すように、２サイクル分遅らされる。（ｅ）に示す演算結果ｃ２０乃至ｃ２２と（ｇ）に示す入力データｉ１０乃至ｉ１２とが、演算機能ユニット２３−５により演算される。その演算結果ｃ５０乃至ｃ５２は、（ｈ）に示されるように、演算機能ユニット２３−５のレイテンシである１サイクル分更に遅れて出力される。この演算結果ｃ５０乃至ｃ５２が、（ｉ）に示されるように、演算出力ポートＰｏｒｔ１７から出力される。
【００２４】
また更に、（ｆ）に示す演算入力ポートＰｏｒｔ１のデータｉ１０乃至ｉ１２及び（ｃ）に示す演算入力ポートＰｏｒｔ２のデータｉ２０乃至ｉ２２が、演算機能ユニット２３−１により演算される。その演算結果ｃ１０乃至ｃ１２は、（ｊ）に示されるように、入力データに対して、演算機能ユニット２３−１のレイテンシである１サイクル分遅れて出力される。（ｅ）に示す演算結果ｃ２０乃至ｃ２２のタイミングに合わせるために、（ｊ）に示す演算結果ｃ１０乃至ｃ１２がディレイユニット２４−２に入力され、（ｋ）に示すように、更に１サイクル分遅らされる。（ｅ）に示す演算結果ｃ２０乃至ｃ２２と（ｋ）に示す演算結果ｃ１０乃至ｃ１２とが、演算機能ユニット２３−４により演算される。その演算結果ｃ４０乃至ｃ４２は、（ｌ）に示されるように、演算機能ユニット２３−４のレイテンシである１サイクル分更に遅れて出力される。この演算結果ｃ４０乃至ｃ４２が、（ｍ）に示されるように、演算出力ポートＰｏｒｔ１４から出力される。
【００２５】
（ｈ）に示す演算終了判定信号Ｐｒｅｄｉｃａｔｅは、制御部１０から供給されるデータ演算全体のレイテンシを示す値に基づいて図４に示すカウンタ２５が生成する信号であり、演算結果が演算出力ポートから出力される期間ＨＩＧＨにアサートされてよい。この例の場合、演算結果ｃ５０乃至ｃ５２が（ｉ）に示されるように演算出力ポートＰｏｒｔ１７から出力され、演算結果ｃ４０乃至ｃ４２が（ｍ）に示されるように演算出力ポートＰｏｒｔ１４から出力される。演算終了判定信号Ｐｒｅｄｉｃａｔｅは、これら演算結果が出力されている間において、値“１”に設定されている。
【００２６】
演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサートに応答して、制御部１０は、データ入出力部１２への選択制御信号を、外部信号選択を示す値に設定する。更に制御部１０は、外部書き込みイネーブルをネゲート状態にすると共に読み出しアドレスを供給することで、データ入出力部１２のデータメモリ３２からデータを読み出す。
【００２７】
以上説明した構成では、前述のように、ディレイユニット２４−1乃至２４−４の遅延段数を所望のサイクル数に設定可能であることが好ましい。そのようなディレイユニットを設けることは、データ演算部の回路規模の増大という問題をひきおこす。また実装するディレイの個数が増えれば、データ入出力部１２とデータ選択部１３との両方において回路規模が増大し、更に、データ選択部１３を経由するパスの動作速度が低下することになる。またカウンタ２５を設けることは、回路規模が増大するという問題をひきおこす。これらの回路規模の増大は、演算機能の組み合わせ可能数や演算機能の種類の数が増えるほど、即ち、実現したい汎用性が高くなるほど、大きくなるという問題がある。
【００２８】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。図６は、リコンフィギュラブル回路の構成の一例を示す図である。図６において、図１と同一の構成要素は同一の番号で参照し、その説明は適宜省略する。
【００２９】
図６のリコンフィギュラブル回路は、制御部６０、データ入出力部６２、データ選択部１３、及びデータ演算部６４を含む。制御部６０は、外部インタフェース機能２０と制御機能６１とを含み、システムバス２００に接続される。制御機能６１は、リコンフィギュラブル回路全体の動作を制御するための機能であり、コンフィギュレーションメモリ２１Ａ及びシーケンサ２１Ｂ等を含む。図１のリコンフィギュラブル回路は、一連のデータに対してパイプライン演算を実行するが、図６のリコンフィギュラブル回路は、１つのデータに対する演算が終了するまでは次のデータに対する演算を開始しない。その意味で、システムバス２００に接続されるＣＰＵ（図示せず）から見たときに、図６のリコンフィギュラブル回路はコプロセッサ的な役割を果たすことになる。
【００３０】
データ演算部６４は、複数の演算機能ユニット７１−１乃至７１−８を含む。演算機能ユニットの数は一例であり、この例に限定されない。データ選択部１３のネットワーク回路２２により、データ演算部６４の演算機能ユニット７１−１乃至７１−８間を再構成可能に接続する。データ入出力部６２は、複数のレジスタユニット７０−１乃至７０−８及び演算終了判定部７２を含む。レジスタユニット７０−１乃至７０−８の数は一例であり、この例に限定されるものではない。データ選択部１３は、演算終了判定部７２に接続される演算出力ポートＰｏｒｔ１０乃至Ｐｏｒｔ１７を含む。一連の演算により得られる１つ又は複数の演算結果の有効及び無効を示す信号を、これら演算出力ポートＰｏｒｔ１０乃至Ｐｏｒｔ１７のうちの１つ又は複数を介して演算終了判定部７２に供給する。また演算出力ポートＰｏｒｔ１０乃至Ｐｏｒｔ１７の出力データｏ０乃至ｏ７はそれぞれ、レジスタユニット７０−１乃至７０−８に供給される。
【００３１】
複数の演算機能ユニット７１−１乃至７１−８の各々が実行する演算は、コンフィギュレーションデータ中の演算命令により指定される。また複数の演算機能ユニット７１−１乃至７１−８間の接続形態は、コンフィギュレーションデータ中の接続データにより指定される。これらのコンフィギュレーションデータはコンフィギュレーションメモリ２１Ａに格納されている。シーケンサ２１Ｂは、コンフィギュレーションメモリ２１Ａに格納される複数のコンフィギュレーションデータの内で、データ選択部１３及びデータ演算部６４の現在の実行形態を指定するコンフィギュレーションデータを選択する。シーケンサ２１Ｂにより指定されたコンフィギュレーションデータがデータ選択部１３及びデータ演算部６４に供給され、そのコンフィギュレーションデータに従った演算実行形態でデータ選択部１３及びデータ演算部６４が動作する。シーケンサ２１Ｂは、順次新たなコンフィギュレーションデータを指定してデータ選択部１３及びデータ演算部６４に供給することで、データ選択部１３及びデータ演算部６４の演算実行形態（コンテキスト）を順次更新していくことができる。
【００３２】
演算機能ユニットは、図２で説明した動作を実行する。演算機能ユニットは、複数（図２の例では２つ）の入力演算データが全て同時に有効状態になると、複数の入力演算データに対して演算を実行する。演算機能ユニットは、複数の入力演算データが全て同時に有効状態である間、上記演算により得られた演算結果を示す有効状態のデータを出力し続ける。また、演算データの有効及び無効状態は、演算データに対として付随する有効及び無効を示すＶａｌｉｄ信号により示される。演算機能ユニットは、クロック信号Ｃｌｏｃｋの立ち上がりエッジにおいてＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１が共にデータ有効を示す値“１”である場合、そのときの演算データ入力Ｄａｔａ＿ｉｎ０及びＤａｔａ＿ｉｎ１に対する演算を実行する。演算機能ユニットは、出力信号を演算結果で更新することにより、演算データ出力Ｄａｔａ＿ｏｕｔを出力すると共に、Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔを“１”に設定する。演算機能ユニットの演算データ出力Ｄａｔａ＿ｏｕｔは、次の演算データ出力で更新されるまで、現在の値を保持する。Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、クロック信号Ｃｌｏｃｋの立ち上がりエッジにおいてＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１のうち少なくとも一方が無効を示す値“０”であると、無効を示す値“０”になる。
【００３３】
演算のレイテンシは、演算種類（演算命令）に応じたクロックサイクルであってよく、１クロックサイクルに限られず、それ以上のクロックサイクル数であってよい。例えば、ある立ち上がりエッジに応答して演算機能ユニットが演算を行なうと、ｎサイクル後の立ち上がりエッジにおいて、演算データ出力Ｄａｔａ＿ｏｕｔが当該演算結果に更新され且つＶａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔが“１”となってよい。このとき、１サイクル後の立ち上がりエッジでＶａｌｉｄ信号入力Ｖａｌｉｄ０及びＶａｌｉｄ１のうち少なくとも一方が無効値“０”であれば、Ｖａｌｉｄ信号出力Ｖａｌｉｄ＿ｏｕｔは、ｎ＋１サイクル後の立ち上がりエッジで“１”から“０”に変化してよい。なおＶａｌｉｄ信号のレイテンシは、演算結果を出力するまでのレイテンシと同一である。そのようなＶａｌｉｄ信号のレイテンシは、演算に必要なレイテンシと同じ数の段数のシフトレジスタを用いることにより実現できる。
【００３４】
図７は、レジスタユニットの構成の一例を示す図である。図７には、レジスタユニット７０−１の構成を一例として示し、各レジスタユニット７０−１乃至７０−８は同一の構成でよい。レジスタユニット７０−１は、セレクタ８１−１乃至８１−３、データメモリ８２、ＯＲ回路８３、フリップフロップ８４、及び立ち上がり検出回路８５を含む。
【００３５】
図６に示す制御部６０から、外部信号又は内部信号の何れかを選択するための選択制御信号が、セレクタ８１−１乃至８１−３に供給される。この選択制御信号が“０”のとき、セレクタ８１−１乃至８１−３は内部からの信号を選択する。また選択制御信号が“１”のとき、セレクタ８１−１乃至８１−３は外部からの信号を選択する。なおセレクタ８１−３については、外部からの信号は“１”固定となっている。外部からの信号は、外部入力データ（書き込み対象のデータ）及び外部書き込みイネーブルを含む。なお外部アドレス（書き込み又は読み出しアドレス）は、データメモリ８２に制御部６０から直接に供給される。選択制御信号が外部信号選択“１”のとき、外部書き込みイネーブルをアサート状態にすることで、外部から供給される書き込みデータをデータメモリ８２の指定した書き込みアドレスに書き込む。また選択制御信号が外部信号選択“１”のとき、外部書き込みイネーブルをネゲート状態にすることで、データメモリ８２の指定した読み出しアドレスからデータを外部出力データとして読み出す。
【００３６】
内部からの信号は、データ選択部１３の演算出力ポートＰｏｒｔ１０乃Ｐｏｒｔ１７から供給される信号ｏ０乃至ｏ７であり、信号ｏ０乃至ｏ７の各々は、データ信号及びデータＶａｌｉｄ信号を含む。データＶａｌｉｄは、データの有効又は無効を示すＶａｌｉｄ信号である。選択制御信号が内部信号選択“０”のとき、一連の演算の実行結果として得られる演算結果データが、データメモリ８２の指定した書き込みアドレスに書き込まれる。具体的には、演算結果データのＶａｌｉｄ信号が“１”に変化すると、立ち上がり検出回路８５が１サイクルのＨＩＧＨパルスを生成する。このＨＩＧＨパルスがデータメモリ８２に書き込みイネーブル信号ＷＥとして供給され、演算結果データが書き込みデータＷＤとしてデータメモリ８２に書き込まれる。また選択制御信号が内部信号選択“０”のとき、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒをアサートすることで、このアサートされた信号がデータメモリ８２にイネーブル信号ＥＮとして供給される。このとき、書き込みイネーブル信号ＷＥはネゲートされており、データメモリ８２の指定した読み出しアドレスからデータが読み出される。また開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒに応じてフリップフロップ８４が“１”にセットされ、出力データのデータＶａｌｉｄが有効を示す値“１”になる。即ち開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒのアサートに応答して、データ入出力部６２は、データ演算部６４への有効状態のデータ供給を開始する。なおこのフリップフロップ８４は、後述するように、演算終了判定部７２から供給される演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサートに応答して“０”にリセットされる。即ち、演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサートに応答して、データ入出力部６２からデータ演算部６４への有効状態のデータ供給を終了する。
【００３７】
レジスタユニット７０−１のデータメモリ８２は、読み出しデータをそのまま出力状態に保持するように動作する。即ち、指定アドレスからのデータ読み出し動作を実行すると、読み出しデータＲＤがデータメモリ８２から出力され、そのまま出力されたままの状態に維持される。データ入出力部６２は、一連の演算を実行するようにデータ選択部１３により接続された一連の演算機能ユニットに入力されるデータを、入力データしてデータメモリ８２に保持している。そして、この一連の演算を実行する間は、上記のようにデータメモリ８２からのデータ出力状態を維持することにより、データ入出力部６２からデータ演算部６４に供給されている入力データを有効状態の同一データに固定しておく。即ち、図５に示す場合のように、データ入出力部６２から各サイクル毎に異なるデータ値が供給されパイプライン動作をするのではなく、一連の演算を実行している複数のサイクルに渡りデータ入出力部６２からは同一のデータ値が供給され続ける。
【００３８】
図８は、演算終了判定部７２の構成の一例を示す図である。前述のように、データ入出力部６２の演算出力ポートＰｏｒｔ１０乃至Ｐｏｒｔ１７が演算終了判定部７２に接続されている。具体的には、これら演算出力ポートＰｏｒｔ１０乃至Ｐｏｒｔ１７の出力データｏ０乃至ｏ７のそれぞれのＶａｌｉｄ信号であるｏ０．Ｖａｌｉｄ乃至ｏ７．Ｖａｌｉｄが、演算終了判定部７２に供給される。演算終了判定部７２は、以下に説明するようにして、一連の演算により得られる１つ又は複数の演算結果が全て同時に有効になると演算終了判定信号Ｐｒｅｄｉｃａｔｅをアサートする。
【００３９】
演算終了判定部７２は、セレクタ９１−１乃至９１−８、ＡＮＤ回路８２、及び立ち上がり検出回路９３を含む。セレクタ９１−１乃至９１−８への選択制御信号は、制御部６０から供給される。この選択制御信号により、Ｖａｌｉｄ信号ｏ０．Ｖａｌｉｄ乃至ｏ７．Ｖａｌｉｄを、セレクタ９１−１乃至９１−８を介してＡＮＤ回路８２に供給するか否かを制御する。具体的には、選択制御信号“１”を供給されるセレクタは、Ｖａｌｉｄ信号を選択してＡＮＤ回路８２に供給する。また選択制御信号“０”を供給されるセレクタは、固定値“１”を選択してＡＮＤ回路８２に供給する。ＡＮＤ回路８２は、選択されたＶａｌｉｄ信号が全て“１”になる場合、その出力を“１”とする。ＡＮＤ回路８２の出力が“０”から“１”に変化すると、その立ち上がりを立ち上がり検出回路９３が検出することにより、１サイクルのＨＩＧＨパルスを生成する。この１サイクルのＨＩＧＨパルスが、演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサート状態に相当する。演算終了判定信号Ｐｒｅｄｉｃａｔｅは、制御部６０及びデータ入出力部６２に供給される。このようにして演算終了判定部７２では、セレクタを選択制御信号により制御することで、複数の出力ポートのうちで有効及び無効を示す信号が同時に有効になるか否かを判断する対象の出力ポートを設定することができる。
【００４０】
図９は、図６のリコンフィギュラブル回路の動作の一例を示すタイムチャートである。この動作例では、図６の演算入力ポートＰｏｒｔ２及びＰｏｒｔ３のデータを演算機能ユニット７１−２により演算し、その演算結果と演算入力ポートＰｏｒｔ１のデータとを演算機能ユニット７１−５により演算する。そして、演算機能ユニット７１−５の演算結果を演算出力ポートＰｏｒｔ１７から出力する。また更に、演算入力ポートＰｏｒｔ１及びＰｏｒｔ２のデータを演算機能ユニット７１−１により演算し、その演算結果と上記の演算機能ユニット７１−２の演算結果とを演算機能ユニット７１−４により演算する。そして、演算機能ユニット７１−４の演算結果を演算出力ポートＰｏｒｔ１４から出力する。これら各ポートと各演算機能ユニットとについて、データ信号及びＶａｌｉｄ信号が図９に示されている。
【００４１】
まず制御部６０が、所望のコンフィギュレーションにデータ選択部１３及びデータ演算部６４を設定し、データ入出力部６２に処理対象の入力データを書き込んでおく。その後、制御部６０が、図７で説明したデータ入出力部６２の選択制御信号を、内部信号選択を示す値に設定しておく。以上の設定が終了すると、図９（ｂ）に示すように、制御部６０の制御機能６１が、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒをＨＩＧＨにアサートする。図７において説明したように、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒのアサートに応答して、データ入出力部６２の指定アドレスから有効状態のデータが出力される。図９の動作例では、（ｃ）に示す演算入力ポートＰｏｒｔ２、（ｄ）に示す演算入力ポートＰｏｒｔ３、（ｆ）に示す演算入力ポートＰｏｒｔ１から、それぞれ１つのデータが複数のクロックサイクルに渡り固定した同一のデータ値として出力される。
【００４２】
（ｃ）に示す演算入力ポートＰｏｒｔ２のデータｉ２１及び（ｄ）に示す演算入力ポートＰｏｒｔ３のデータｉ３１が、演算機能ユニット７１−２により演算される。その演算結果ｃ２１は、（ｅ）に示されるように、入力データに対して、演算機能ユニット７１−２のレイテンシである２サイクル分遅れて出力される。この（ｅ）に示す演算結果ｃ２１のＶａｌｉｄ信号と（ｆ）に示す演算入力ポートＰｏｒｔ１のデータｉ１１のＶａｌｉｄ信号とのＡＮＤ論理値が、（ｇ）に示される。この（ｇ）に示すＡＮＤ論理値が“１”になると、（ｅ）に示す演算結果ｃ２１と（ｆ）に示す入力データｉ１１とが、演算機能ユニット７１−５により演算される。その演算結果ｃ５１は、（ｈ）に示されるように、演算機能ユニット７１−５のレイテンシである１サイクル分更に遅れて出力される。この演算結果ｃ５１が、（ｉ）に示されるように、演算出力ポートＰｏｒｔ１７から出力される。この演算出力ポートＰｏｒｔ１７からの出力値は、（ｊ）に示されるように、レジスタユニット７０−７に書き込まれる。
【００４３】
また更に、（ｆ）に示す演算入力ポートＰｏｒｔ１のデータｉ１１及び（ｃ）に示す演算入力ポートＰｏｒｔ２のデータｉ２１が、演算機能ユニット７１−１により演算される。その演算結果ｃ１１は、（ｋ）に示されるように、入力データに対して、演算機能ユニット７１−１のレイテンシである１サイクル分遅れて出力される。この（ｋ）に示す演算結果ｃ１１のＶａｌｉｄ信号と（ｅ）に示す演算結果ｃ２１のＶａｌｉｄ信号とのＡＮＤ論理値が、（ｌ）に示される。この（ｇ）に示すＡＮＤ論理値が“１”になると、（ｅ）に示す演算結果ｃ２１と（ｋ）に示す演算結果ｃ１１とが、演算機能ユニット７１−４により演算される。その演算結果ｃ４１は、（ｍ）に示されるように、演算機能ユニット７１−４のレイテンシである１サイクル分更に遅れて出力される。この演算結果ｃ４１が、（ｎ）に示されるように、演算出力ポートＰｏｒｔ１４から出力される。この演算出力ポートＰｏｒｔ１４からの出力値は、（ｏ）に示されるように、レジスタユニット７０−４に書き込まれる。
【００４４】
（ｐ）に示す演算終了判定信号Ｐｒｅｄｉｃａｔｅは、前述のように、一連の演算により得られる１つ又は複数の演算結果（図９の例ではＰｏｒｔ１４の出力及びＰｏｒｔ１７の出力）が全て同時に有効になると、演算終了判定部７２によりアサートされる。具体的には、（ｉ）に示す演算出力ポートＰｏｒｔ１７のＶａｌｉｄ信号と（ｎ）に示す演算出力ポートＰｏｒｔ１４のＶａｌｉｄ信号とのＡＮＤ論理値について立ち上がりを検出し、立ち上がり検出タイミングにおいて１クロックサイクルのＨＩＧＨパルスを生成する。この１クロックサイクルのＨＩＧＨパルスが演算終了判定信号Ｐｒｅｄｉｃａｔｅとなる。
【００４５】
演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサートに応答して、データ入出力部６２は、データ演算部６４への有効状態のデータ供給を終了する。即ち、図９の例において、（ｃ）、（ｄ）、及び（ｆ）にそれぞれ示す演算入力ポートＰｏｒｔ２、Ｐｏｒｔ３、及びＰｏｒｔ１において、演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサートに応答してＶａｌｉｄ信号が“１”から“０”に変化している。またこのＶａｌｉｄ信号の変化に応答して、（ｅ）、（ｈ）、（ｋ）、及び（ｍ）に示す演算結果においても、次のクロックサイクルでＶａｌｉｄ信号が“１”から“０”に変化している。
【００４６】
制御部６０は、演算終了判定信号Ｐｒｅｄｉｃａｔｅのアサートに応答して、次の一連の演算を開始するために、データ入出力部６２に供給する読み出しアドレスを次のアドレスに更新する。そして制御部６０は、（ｂ）に示すように、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒをＨＩＧＨにアサートする。これにより、上述の一連の演算と同一の演算が次のデータに対して実行される。なおこの際、コンテキスト更新をすることで、前回とは異なる新たな一連の演算を実行してもよい。また制御部６０は、（ｊ）に示すレジスタユニット７０−７からの読み出しデータｃ５１及び（ｏ）に示すレジスタユニット７０−４からの読み出しデータｃ４１を、一連の演算の演算結果として読み込む。
【００４７】
上述のように、図６に示すリコンフィギュラブル回路では、一連の演算が実行される間、データ入出力部１２からのデータ供給を、当該データを示す信号が活性化されている状態（即ちデータ供給状態）に維持する。これにより、データ入出力部１２からのデータ供給に基づいて演算を実行する各演算機能ユニットにおいて、有効状態の演算結果を出力したままの状態を維持することができる。従って、複数のデータを入力とする各演算機能ユニットでは、複数のデータの何れも消えてしまうことなく有効状態に維持されるので、全てのデータが同時に有効状態となるのを待ってから演算を開始すればよい。従って、図１のリコンフィギュラブル回路の場合と異なり、タイミングを合わせるためのディレイ回路が不要となる。また演算終了までのレイテンシの見積もり、当該レイテンシ値を保持するレジスタ、図４に示すカウンタ回路等が不要になる。その代りに、セレクタとＡＮＤ回路等により構成される単純な構成の演算終了判定部７２により、演算終了判定をすることができる。これにより、図６のリコンフィギュラブル回路は、図１のリコンフィギュラブル回路と比較して、回路規模を削減することができる。
【００４８】
なお、図６のリコンフィギュラブル回路の構成において、データ入出力部６２からデータ演算部６４に供給されるデータを、一連の演算を実行する間維持するのではなく、例えば有効状態を１サイクルだけ維持してその後無効状態とするよう構成してもよい。この場合、複数のデータを入力とする各演算機能ユニットでは、複数の入力データ間で有効状態にタイミングが一致しない場合が発生し、全てのデータが同時に有効状態となるのを待つことはできない。従って、演算機能ユニット７１−１乃至７１−８の機能を変更し、入力部分にラッチを設け、入力データのＶａｌｉｄ信号が有効状態を示す値に応答して当該入力データをラッチに格納する構成としてよい。
【００４９】
図１０は、各演算機能ユニットに入力データ保持機能を持たせた場合のリコンフィギュラブル回路の動作の一例を示すタイムチャートである。この動作例は、図９と同様の演算内容を実行する例である。まず図１０（ｂ）に示すように、制御部６０の制御機能６１が、開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒをＨＩＧＨにアサートする。開始指示信号Ｓｔａｒｔ＿ｔｒｉｇｇｅｒのアサートに応答して、データ入出力部６２の指定アドレスから有効状態のデータが出力される。図１０の動作例では、（ｃ）に示す演算入力ポートＰｏｒｔ２、（ｄ）に示す演算入力ポートＰｏｒｔ３、及び（ｆ）に示す演算入力ポートＰｏｒｔ１から出力されるデータが、１クロックサイクルの間だけ有効状態に維持される。
【００５０】
（ｃ）に示す演算入力ポートＰｏｒｔ２のデータｉ２１及び（ｄ）に示す演算入力ポートＰｏｒｔ３のデータｉ３１が、演算機能ユニット７１−２により演算される。その演算結果ｃ２１は、（ｅ）に示されるように、入力データに対して、演算機能ユニット７１−２のレイテンシである２サイクル分遅れて出力される。例えば（ｇ）に示す演算機能ユニット７１−５は、この（ｅ）に示す演算結果ｃ２１と（ｆ）に示す演算入力ポートＰｏｒｔ１のデータｉ１１とに対して演算を実行する。このとき（ｇ）に示されるように、入力ラッチにおいて、演算結果ｃ２１とデータｉ１１とをそれぞれラッチしてから演算することにより、演算結果ｃ５１を生成する。その演算結果ｃ５１は、（ｇ）に示されるように、演算機能ユニット７１−５のレイテンシである１サイクル分更に遅れて出力される。なお演算機能ユニット７１−５において、演算結果ｃ２１のラッチ動作は演算結果ｃ２１のＶａｌｉｄ信号の“１”に応答して直ちに行なわれ、データｉ１１のラッチ動作はデータｉ１１のＶａｌｉｄ信号の“１”に応答して直ちに行なわれる。
【００５１】
上述の構成では、演算機能ユニットは、複数のデータをそれぞれ有効状態になったものから順次ラッチし、複数のデータが全てラッチされると複数のデータに対する演算を実行し、演算により得られた演算結果を示す有効状態のデータを出力する。また演算終了判定部においては、入力されるＶａｌｉｄ信号ｏ０．Ｖａｌｉｄ乃至ｏ７．Ｖａｌｉｄをラッチして保持する構成とし、一連の演算により得られる１つ又は複数の演算結果が全て有効になると演算終了判定信号をアサートしてよい。このような構成としても、図１のリコンフィギュラブル回路の場合と異なり、タイミングを合わせるためのディレイ回路が不要となる。しかしながら、各演算機能ユニット７１−１乃至７１−８の入力部にデータビット数分のラッチ回路を設けることになり、回路削減の効果は図６の構成ほど高くはない。
【００５２】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【００５３】
なお本願発明は以下の内容を含むものである。
（付記１）
複数のデータが全て有効状態になると前記複数のデータに対して演算を実行し、前記複数のデータが全て有効状態である間、前記演算により得られた演算結果を示す有効状態のデータを出力し続ける演算器を、複数個含むデータ演算部と、
前記演算器間を再構成可能に接続するデータ選択部と、
一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データして保持するデータ入力部と
を含み、前記データの有効及び無効状態は該データに対として付随する有効及び無効を示す信号により示され、前記一連の演算を実行する間は前記データ入力部から前記データ演算部に供給されている前記入力データを有効状態の同一データに固定しておくことを特徴とするリコンフィギュラブル回路。
（付記２）
前記一連の演算により得られる１つ又は複数の演算結果が全て同時に有効になると演算終了判定信号をアサートする演算終了判定回路を更に含むことを特徴とする付記１記載のリコンフィギュラブル回路。
（付記３）
前記演算終了判定信号のアサートに応答して、前記データ入力部から前記データ演算部への有効状態のデータ供給を終了することを特徴とする付記２記載のリコンフィギュラブル回路。
（付記４）
前記データ選択部は前記演算終了判定回路に接続される複数の出力ポートを含み、前記一連の演算により得られる前記１つ又は複数の演算結果の有効及び無効を示す信号を前記複数の出力ポートのうちの１つ又は複数を介して前記演算終了判定回路に供給し、前記演算終了判定回路は、前記複数の出力ポートのうちで前記有効及び無効を示す信号が同時に有効になるか否かを判断する対象の出力ポートを設定可能であることを特徴とする付記２又は３記載のリコンフィギュラブル回路。
（付記５）
前記一連の演算の開始を指示する開始指示信号を前記データ入力部に対してアサートする制御部を更に含み、前記データ入力部は、前記開始指示信号のアサートに応答して前記データ演算部への有効状態のデータ供給を開始することを特徴とする付記１乃至４何れか一項記載のリコンフィギュラブル回路。
（付記６）
複数のデータが全て有効状態になると前記複数のデータに対して演算を実行し、前記複数のデータが全て有効状態である間、前記演算により得られた演算結果を示す有効状態のデータを出力し続ける演算器を複数個含むデータ演算部と、前記演算器間を再構成可能に接続するデータ選択部と、一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データして保持するデータ入力部とを含むリコンフィギュラブル回路において、
前記一連の演算を実行する間は前記データ入力部から前記データ演算部に供給されている前記入力データを有効状態の同一データに固定しておく段階を含むことを特徴とするリコンフィギュラブル回路の駆動方法。
（付記７）
前記一連の演算により得られる１つ又は複数の演算結果が全て同時に有効になると演算終了判定信号をアサートする段階を更に含むことを特徴とする付記６記載のリコンフィギュラブル回路の駆動方法。
（付記８）
前記演算終了判定信号のアサートに応答して、前記データ入力部から前記データ演算部への有効状態のデータ供給を終了する段階を更に含むことを特徴とする付記７記載のリコンフィギュラブル回路の駆動方法。
（付記９）
前記一連の演算により得られる前記１つ又は複数の演算結果の有効及び無効を示す信号を前記データ選択部の複数の出力ポートのうちの１つ又は複数を介して供給し、前記複数の出力ポートのうちで前記有効及び無効を示す信号が同時に有効になるか否かを判断する対象の出力ポートを設定する段階を更に含むことを特徴とする付記７又は８記載のリコンフィギュラブル回路の駆動方法。
（付記１０）
前記一連の演算の開始を指示する開始指示信号のアサートに応答して、前記データ入力部に前記データ演算部への有効状態のデータ供給を開始させる段階を更に含むことを特徴とする付記６乃至１０何れか一項記載のリコンフィギュラブル回路の駆動方法。
（付記１１）
複数のデータをそれぞれ有効状態になったものから順次ラッチし、前記複数のデータが全てラッチされると前記複数のデータに対する演算を実行し、前記演算により得られた演算結果を示す有効状態のデータを出力する演算器を、複数個含むデータ演算部と、
前記演算器間を再構成可能に接続するデータ選択部と、
一連の演算を実行するように前記データ選択部により接続された一連の演算器に入力されるデータを入力データして保持するデータ入力部と
を含み、前記データの有効及び無効状態は該データに対として付随する有効及び無効を示す信号により示されることを特徴とするリコンフィギュラブル回路。
（付記１２）
前記一連の演算により得られる１つ又は複数の演算結果が全て有効になると演算終了判定信号をアサートする演算終了判定回路を更に含むことを特徴とする付記１１記載のリコンフィギュラブル回路。
【符号の説明】
【００５４】
１３  データ選択部
２０  外部インタフェース機能
２１Ａ  コンフィギュレーションメモリ
２１Ｂ  シーケンサ
２２  ネットワーク回路
６０  制御部
６１  制御機能
６２  データ入出力部
６４  データ演算部
７０−１乃至７０−８  レジスタユニット
７１−１乃至７１−８  演算機能ユニット
７２  演算終了判定部
２００  システムバス
【図１】
0005501074.tif 000002
【図２】
0005501074.tif 000003
【図３】
0005501074.tif 000004
【図４】
0005501074.tif 000005
【図５】
0005501074.tif 000006
【図６】
0005501074.tif 000007
【図７】
0005501074.tif 000008
【図８】
0005501074.tif 000009
【図９】
0005501074.tif 000010
【図１０】
0005501074.tif 000011