(57)【特許請求の範囲】
【請求項１】
コンフィグレーションデータに基づいて任意の演算状態を動的に変更するリコンフィグ可能な集積回路装置において，
入力端子と，出力端子と，並列に設けられクロックに同期してそれぞれの演算処理を行う複数の演算ユニットと，前記入力端子と前記出力端子と前記複数の演算ユニットの入力，出力ポートとを任意の状態に接続するプロセッサ内ネットワークとを有する複数のプロセッサエレメントと，
前記複数のプロセッサエレメント間を任意の状態に接続するプロセッサ間ネットワークとを有し，
前記プロセッサ内ネットワークは，第１のセレクタと第２のセレクタとを有し，前記第１のセレクタは，前記複数の演算ユニットの全ての入力ポートに対応して設けられ，全ての前記入力端子と前記複数の演算ユニットの全ての出力ポートとに接続された入力と前記演算ユニットの対応する入力ポートに接続された出力とを有し，前記第２のセレクタは前記複数の演算ユニットの全ての出力ポートに接続された入力と前記出力端子に接続された出力とを有し，
前記第１，第２のセレクタに供給されるコンフィグレーションデータに基づいて，前記プロセッサ内ネットワークが所望の接続状態に再構築可能であり，さらに，前記コンフィグレーションデータに基づいて，前記プロセッサ間ネットワークが所望の接続状態に再構築可能であり，
前記複数の演算ユニットは，前記入力ポートからの入力データに対して所定の演算処理を行う演算器と，前記演算器の出力をクロックに応答してラッチし前記出力ポートに出力するレジスタとを有し，１つのクロックサイクルで前記所定の演算処理を行って演算結果を出力することを特徴とするリコンフィグ可能な集積回路装置。
【請求項２】
請求項１において，
さらに，前記コンフィグレーションデータを格納するコンフィグレーションデータメモリと，前記プロセッサエレメントからの終了信号に応答して前記コンフィグレーションデータメモリから次の演算状態を構築するコンフィグレーションデータを出力させるシーケンサとを有するリコンフィグ可能な集積回路装置。
【請求項３】
請求項１において，
前記演算器は，少なくとも，ビットシフトを行うシフト処理器，一部のビットをマスクするマスク処理器，乗算器，累積加算器，加算と減算と論理演算とを行うＡＬＵ演算器，下位ビットを四捨五入する丸め処理器を含むグループのうち，いずれか複数の演算器の組み合わせを有することを特徴とするリコンフィグ可能な集積回路装置。
【請求項４】
請求項１において，
前記プロセッサエレメントでは，前記コンフィグレーションデータに基づいて前記プロセッサ内ネットワークが構築されることで，内蔵される複数の演算ユニットが任意の順番でシリアルに接続可能であることを特徴とするリコンフィグ可能な集積回路装置。
【請求項５】
請求項１において，
前記プロセッサエレメントでは，前記コンフィグレーションデータに基づいて前記プロセッサ内ネットワークが構築されることで，内蔵される単一の演算ユニットが単一のクロックサイクルで演算処理結果を前記出力端子に出力することを特徴とするリコンフィグ可能な集積回路装置。
【請求項６】
コンフィグレーションデータに基づいて任意の演算状態を動的に変更するリコンフィグ可能な集積回路装置において，
入力端子と，出力端子と，並列に設けられクロックに同期してそれぞれの演算処理を行う複数の演算ユニットと，前記入力端子と前記出力端子と前記複数の演算ユニットの入力，出力ポートとを任意の状態に接続するプロセッサ内ネットワークとを有する複数のプロセッサエレメントと，
前記複数のプロセッサエレメント間を任意の状態に接続するプロセッサ間ネットワークと，
前記プロセッサ内ネットワーク及びプロセッサ間ネットワークにコンフィグレーションデータを供給する制御ユニットとを有し，
コンフィグレーションデータに基づいて，前記プロセッサ内ネットワークが所望の接続状態に再構築可能であり，さらに，前記コンフィグレーションデータに基づいて，前記プロセッサ間ネットワークが所望の接続状態に再構築可能であり，
前記複数の演算ユニットは，それぞれ１クロックサイクルのレイテンシで対応する演算処理結果を出力することを特徴とするリコンフィグ可能な集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，リコンフィグ可能な集積回路装置に関し，特に，リコンフィグ可能な集積回路装置内に設けられるプロセッサエレメントの新規な構成に関する。
【背景技術】
【０００２】
リコンフィグ可能な集積回路装置は，複数のプロセッサエレメントと，当該プロセッサエレメント間を接続するネットワークとを有する。そして，外部または内部のイベントに応答して，シーケンサがプロセッサエレメントとネットワークにコンフィグレーションデータを与え，当該コンフィグレーションデータに応じて，プロセッサエレメントとネットワークが任意の演算状態を構築する。
【０００３】
従来の伝統的なプログラム可能なマイクロプロセッサは，メモリに記憶されている命令を順番に読み出し逐次的に処理する。このようにマイクロプロセッサは，１つのプロセッサで同時に実行できる命令は数個に限定されるため，処理能力に一定の限界がある。
【０００４】
それに対して，近年提案されているダイナミックにリコンフィグ可能な集積回路装置では，加算器，乗算器，比較器などの機能を有するＡＬＵや，遅延回路，カウンタなどの組み合わせを有するプロセッサエレメントが複数個あらかじめ設けられ，さらにプロセッサエレメント間を接続するネットワークが設けられている。これら複数のプロセッサエレメントとネットワークが，シーケンサを有する状態遷移制御部からのコンフィグレーションデータによって所望の構成に再構築され，その演算状態で所定の演算が実行される。一つの演算状態におけるデータ処理が完了すると，別のコンフィグレーションデータにより別の演算状態が構築され，その状態で異なるデータ処理が行われる。
【０００５】
このように，異なる演算状態を動的に構築することで，大量のデータに対するデータ処理能力を向上させ，全体の処理効率を高めることができる。かかるリコンフィグ可能な集積回路装置については，例えば特許文献１に記載されている。
【特許文献１】特開２００１−３１２４８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上記従来のリコンフィグ可能な集積回路装置では，プロセッサエレメントは，シリアルに接続された複数種類の演算ユニットを有し，その複数の演算ユニットがそれぞれクロックに同期して動作するパイプライン構成にされている。この演算ユニットの組み合わせは，例えば，乗算器と累積加算器の組み合わせなど利用頻度の高い組み合わせであり，それによりプロセッサエレメントの柔軟性と使用効率アップとを同時に満たすようにされている。
【０００７】
そのため，プロセッサエレメントが，内部の組み合わせられた演算ユニットを全て使用するような演算状態に構築される場合は，使用効率がアップするとともに，組み合わせられた演算ユニットのパイプライン処理に無駄なクロックサイクルがなく高速処理が可能になる。
【０００８】
しかしながら，プロセッサエレメント内の演算ユニットの組み合わせと全く異なる組み合わせの演算状態を構築する場合は，使用効率がダウンするとともに，パイプライン処理に無駄なクロックサイクルが発生し，高速処理ができなくなる。
【０００９】
そこで，本発明の目的は，柔軟性の高く無駄なクロックサイクルが発生しにくいプロセッサエレメントを有するリコンフィグ可能な集積回路装置を提供することにある。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために，本発明の第１の側面によれば，コンフィグレーションデータに基づいて任意の演算状態を動的に変更するリコンフィグ可能な集積回路装置において，
入力端子と，出力端子と，並列に設けられクロックに同期してそれぞれの演算処理を行う複数の演算ユニットと，前記入力端子と前記出力端子と前記複数の演算ユニットの入力，出力ポートとを任意の状態に接続するプロセッサ内ネットワークとを有する複数のプロセッサエレメントと，
前記複数のプロセッサエレメント間を任意の状態に接続するプロセッサ間ネットワークとを有し，
コンフィグレーションデータに基づいて，前記プロセッサ内ネットワークが所望の接続状態に再構築可能であり，さらに，前記コンフィグレーションデータに基づいて，前記プロセッサ間ネットワークが所望の接続状態に再構築可能であることを特徴とする。
【００１１】
上記の発明の第１の側面において，好ましい態様によれば，前記演算ユニットは，入力ポートと，入力ポートからの入力データに対して所定の演算処理を行う演算器と，前記演算器の出力をクロックに応答してラッチするレジスタと，前記レジスタのデータを出力する出力ポートとを有し，１つのクロックサイクルで前記所定の演算処理を行って演算結果を出力する。
【００１２】
上記の発明の第１の側面において，別の好ましい態様によれば，前記プロセッサエレメントでは，前記コンフィグレーションデータに基づいて前記プロセッサ内ネットワークが構築されることで，内蔵される複数の演算ユニットが任意の順番でシリアルに接続可能である。
【００１３】
上記の発明の第１の側面において，別の好ましい態様によれば，前記プロセッサエレメントでは，前記コンフィグレーションデータに基づいて前記プロセッサエレメント内ネットワークが構築されることで，内蔵される単一の演算ユニットが単一のクロックサイクルで演算処理結果を前記出力端子に出力する。
【発明の効果】
【００１４】
上記の発明によれば，プロセッサエレメントが，複数の演算ユニットを並列に配置され，それら複数の演算ユニットがネットワークを介して任意の順番で再構築可能に接続されるので，または単一の演算ユニットだけで再構築可能に接続されるので，柔軟性が高く無駄なクロックサイクルが発生しにくい。
【発明を実施するための最良の形態】
【００１５】
以下，図面にしたがって本発明の実施の形態について説明する。但し，本発明の技術的範囲はこれらの実施の形態に限定されず，特許請求の範囲に記載された事項とその均等物まで及ぶものである。
【００１６】
図１は，本実施の形態におけるリコンフィグ可能な集積回路装置の構成図である。リコンフィグ集積回路１６は，内部メモリ１８，１９と，リコンフィグ可能なプロセッサエレメントアレイ３０と，制御ユニット１０とを有する。プロセッサエレメントアレイ３０は，複数のプロセッサエレメントＰＥと，その間を接続するプロセッサエレメント間ネットワーク２０とで構成される。また，制御ユニット１０は，シーケンサ１２とコンフィグレーションデータメモリ１４とを有し，この制御ユニット１０からのコンフィグレーションデータＣＤによって，プロセッサエレメントアレイ３０は任意の演算状態に動的に構築される。したがって，コンフィグレーションデータＣＤを変更することで，プロセッサエレメントアレイ３０は，異なる演算状態に再構築される。また，外部メモリＥ−ＭＥＭからは，例えばダイレクトメモリアクセスによりデータが内部メモリ１８に転送され，そのデータに対してプロセッサエレメントアレイ３０内に構築された演算状態が所定のデータ処理を行い，その処理結果が内部メモリ１９から外部メモリＥ−ＭＥＭにデータが転送される。
【００１７】
図２は，本実施の形態におけるプロセッサエレメントアレイ３０の構成例を示す図である。演算プロセッサエレメントＰＥ０〜ＰＥ３と，メモリプロセッサエレメントＰＥ５と，それ以外の，例えば遅延回路のプロセッサエレメントＰＥ４とは，プロセッサエレメント間ネットワーク２０内のスイッチであるセレクタ４１を介して接続可能に構成されている。各プロセッサエレメントＰＥ１〜ＰＥ５は，コンフィグレーションデータＣＤ０〜ＣＤ５に基づいて任意の構成に構築可能であり，また，ネットワーク２０内のセレクタ４１（４１ａ，４１ｂ，４１ｃ）も，コンフィグレーションデータＣＤｓに基づいて任意の接続状態に構築可能である。
【００１８】
各プロセッサエレメントＰＥは，それぞれの演算処理を終了すると終了信号ＣＳ０〜ＣＳ３を出力する。この終了信号がイベントして制御ユニット１０のシーケンサ１２（図１参照）に与えられ，適切なタイミングで次のコンフィグレーションデータＣＤがプロセッサエレメントＰＥ，プロセッサ間ネットワーク２０に供給され，別の演算状態に構築される。
【００１９】
セレクタ４１は，図中左下に一例として示すとおり，コンフィグレーションデータＣＤを格納するレジスタ４２と，レジスタ４２のデータに応じて入力を選択するセレクタ回路４３と，セレクタ回路４３の出力をクロックＣＬＫに同期してラッチするフリップフロップ４４とを有する。したがって，セレクタ４１は，コンフィグレーションＣＤに応じて，任意の入力を選択して出力する。また，ネットワーク２０は，入力ユニット２２及び出力ユニット２４とプロセッサエレメントとの間もセレクタにより任意の状態に接続する。
【００２０】
図３は，一般的なプロセッサエレメントの問題点を説明するための図である。一般にプロセッサエレメントは，使用頻度の高い演算ユニットの組み合わせで構成される。図３には，その一例として，シフト・マスク演算ユニットＡＵ１１と，乗算演算ユニットＡＵ１２と累積加算演算ユニットＡＵ１３とをシリアルに接続したＭＡＣ（Multiplier Accumulate）プロセッサエレメントＭＡＣ−ＰＥと，シフト・マスク演算ユニットＡＵ１１とＡＬＵ演算ユニットＡＵ１４とをシリアルに接続したＡＬＵプロセッサエレメントＡＬＵ−ＰＥとが示されている。また，遅延プロセッサエレメントＤＥＬ−ＰＥは，シリアルに接続された複数のレジスタＲｅｇを有する。
【００２１】
ＭＡＣプロセッサエレメントＭＡＣ−ＰＥを構成するシフト・マスク演算ユニットＡＵ１１は，入力データのビットをシフトするシフト回路とその一部のビットをマスクするマスク回路とからなるシフト・マスク回路（shift/mask）と，クロックＣＬＫに応答してシフト・マスク回路の出力をラッチするレジスタＲｅｇとを，２組有する。また，乗算演算ユニットＡＵ１２は，２つの入力データを乗算する乗算器ＭＵＬとクロックＣＬＫに同期して乗算器の出力をラッチするレジスタＲｅｇとを有する。そして，累積加算演算ユニットＡＵ１３は，入力データとレジスタ内の累積データとを加算する累積加算器ＡＣＣと，２つのレジスタＲｅｇとを有する。また，ＡＬＵプロセッサエレメントＡＬＵ−ＰＥを構成するＡＬＵ演算ユニットＡＬＵは，加算，減算，論理演算を行うＡＬＵと，レジスタＲｅｇとを有する。
【００２２】
上記の各演算ユニット内のシフト・マスク回路，乗算器ＭＵＬ，累積加算器ＡＣＣ，及びＡＬＵは，図示しないコンフィグレーションデータにより所望の回路に設定される。例えば，シフト・マスク回路では，シフト方向やシフト量，マスク位置などが設定されて，所望のシフト機能またはマスク機能を有する演算ユニットに構築される。ただし，シリアル接続は固定的である。
【００２３】
図３には，ＭＡＣプロセッサエレメントＭＡＣ−ＰＥとＡＬＵプロセッサエレメントＡＬＵ−ＰＥと遅延プロセッサエレメントＤＥＬ−ＰＥとにより，入力ａ，ｂ，ｃに対してa＊ｂ＋ｃの演算を行うように構築された演算回路が示されている。ＭＡＣプロセッサエレメントＭＡＣ−ＰＥにて，入力ａ，ｂが，シフト・マスク演算ユニットＡＵ１１を何ら処理されることなく通過して，乗算演算ユニットＡＵ１２で乗算（ａ＊ｂ）され，累積加算演算ユニットＡＵ１３をそのまま通過して出力される。したがって，乗算結果が出力されるまで３クロックサイクルのレイテンシを必要とする。
【００２４】
一方，遅延プロセッサエレメントＤＥＬ−ＰＥにおいて，入力ｃが３クロックサイクル遅延され出力される。この３クロックサイクルの遅延により，乗算結果ａ＊ｂと入力ｃとが，同じタイミングでＡＬＵプロセッサエレメントＡＬＵ−ＰＥに入力される。そこのプロセッサエレメントでは，入力データがシフト・マスク演算ユニットＡＵ１１を何ら処理されることなく通過してＡＬＵ演算ユニットＡＵ１４に供給され，両入力データが加算され，その加算結果が出力される。つまり，２クロックサイクルのレイテンシで，加算結果（ａ＊ｂ＋ｃ）が出力される。
【００２５】
つまり，ＭＡＣプロセッサエレメントＭＡＣ−ＰＥでは，ＭＵＬ演算ユニットＡＵ１２のみが使用され，シフト・マスク演算ユニットＡＵ１１とＡＬＵ演算ユニットＡＵ１３は，何ら演算処理することなくデータを通過させるだけである。しかし，それらの３つの演算ユニットがシリアルに接続されているので，このＭＡＣプロセッサエレメントでは３クロックサイクルのレイテンシ後に入力データａ，ｂに対する演算結果が出力される。また，ＡＬＵプロセッサエレメントＡＬＵ−ＰＥでは，ＡＬＵ演算ユニットのみが使用され，シフト・マスク演算ユニットＡＵ１１は，何ら演算処理することなくデータを通過させるだけである。よって，ＡＬＵプロセッサエレメントでは，２クロックサイクルのレイテンシで演算結果（ａ＊ｂ＋ｃ）が出力される。
【００２６】
その結果，入力データａ，ｂの乗算をしてその乗算結果に入力データｃを加算する演算処理に，５クロックサイクルのレイテンシが必要になり，演算処理の速度が遅くなる。また，プロセッサエレメントＭＡＣ−ＰＥでは１つの演算ユニットＡＵ１２のみが使用され，プロセッサエレメントＡＬＵ−ＰＥでも１つの演算ユニットＡＵ１４のみが使用されるだけであり，回路の使用効率が低くなる。
【００２７】
図４は，一般的なプロセッサエレメントの問題点を説明するための図である。図４には，シフト・マスク演算ユニットＡＵ１１と，乗算演算ユニットＡＵ１２と累積加算演算ユニットＡＵ１３とをシリアルに接続したＭＡＣプロセッサエレメントＭＡＣ−ＰＥが２組使用されている。そして，入力データａ，ｂを乗算した後に，シフト処理とマスク処理とにより乗算結果の一部のデータを出力する演算状態を構築するために，第１のＭＡＣプロセッサエレメントＭＡＣ−ＰＥ１の乗算演算ユニットＡＵ１２と，第２のＭＡＣプロセッサエレメントＭＡＣ−ＰＥ２のシフト・マスク演算ユニットＡＵ１１とが使用される。それ以外の演算ユニットは単にデータを通過させるだけであり，何ら演算処理を行わない。
【００２８】
この場合は，各ＭＡＣプロセッサエレメントで３クロックサイクルのレイテンシが必要であり，合計で６クロックサイクルのレイテンシになってしまう。しかも，回路の使用効率も低くなっている。
【００２９】
以上のように，シリアルに接続された複数の演算ユニットの組み合わせからなるプロセッサエレメントの場合は，その組み合わせの回路をそのまま使用するときは，回路の使用効率は高くレイテンシも遅くなることはないが，組み合わせの回路と異なる回路に構築する場合は，回路の使用効率は低下し，レイテンシも不必要に長くなる。
【００３０】
図５は，本実施の形態におけるプロセッサエレメントの構成図である。このプロセッサエレメントＰＥ１は，２つの入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，並列に設けられクロックＣＬＫに同期してそれぞれの演算処理を行う複数の演算ユニットＡＵ１〜ＡＵｎと，入出力端子と演算ユニットＡＵ１〜ＡＵｎの入出力ポートとを任意に接続するプロセッサエレメント内ネットワークＮＷ１，ＮＷ２とを有する。プロセッサエレメント内ネットワークＮＷ１，ＮＷ２は，図２に示したプロセッサエレメント間ネットワークと同様に複数のセレクタを有する。また，各演算ユニットは，演算器ＡＬとクロックに同期して演算器ＡＬの出力をラッチするレジスタＲｅｇとを有し，原則として１クロックサイクルのレイテンシで演算結果を出力する。ただし，演算器ＡＬが複雑な処理を要する場合は複数クロックサイクルのレイテンシで演算結果を出力する場合もある。
【００３１】
複数の演算ユニットは，異なる演算処理を行うユニットをそれぞれ１個ずつまたは複数個ずつ有する。この演算ユニットの種類と個数の組み合わせは，より回路の使用効率が高められるように選択される。後で具体例として説明するとおり，プロセッサエレメント内には，シフト・マスク演算ユニット，乗算演算ユニット，累積加算演算ユニット，ＡＬＵ演算ユニット，丸め演算ユニットなどが，所定の組み合わせで所定の個数ずつ設けられる。
【００３２】
図６は，本実施の形態におけるプロセッサエレメントのプロセッサエレメント内ネットワークの構成を示す図である。簡単のために３つの演算ユニットＡＵ１〜ＡＵ３のみが示される。プロセッサエレメント内ネットワークは，第１及び第２のネットワークＮＷ１，ＮＷ２で構成される。第１のネットワークＮＷ１は，各演算ユニットＡＵ１〜ＡＵ３の２入力ポートに対応するセレクタＳＥＬ１１，１２〜ＳＥＬ３１，３２を有し，各セレクタは，２つの入力端子ＩＮａ，ＩＮｂと３つの出力ポートＯＰ１〜ＯＰ３のいずれかを各２つの入力ポートＩＰ１，ＩＰ２〜ＩＰ３１，ＩＰ３２に接続するスイッチである。また，第２のネットワークＮＷ２は，３つの演算ユニットの出力ポートＯＰ１〜ＯＰ３のいずれかを出力端子ＯＵＴに接続するスイッチである。
【００３３】
図７は，本実施の形態における制御ユニットの構成図である。制御ユニットＣＯＮＴは，シーケンサＳＥＱとコンフィグレーションメモリＣＤ−ＭＥＭと，コンフィグレーションデータＣＤをラッチするコンフィグレーションデータレジスタＣＤ−ＲＥＧとを有する。シーケンサＳＥＱは，所定のタイミングでアドレスＡＤＤを出力してコンフィグレーションメモリＣＤ−ＭＥＭからそのタイミングに対応するコンフィグレーションデータＣＤを出力させ，同時に，ストローブ信号ＳＴＢを出力してコンフィグレーションデータレジスタＣＤ−ＲＥＧにそのコンフィグレーションデータＣＤをラッチさせる。このレジスタから，図６のプロセッサエレメント内ネットワークの各セレクタへのコンフィグレーションデータと，各演算ユニットＡＵ１〜３へのコンフィグレーションデータとが出力される。
【００３４】
図５，６の各演算ユニットＡＵ１〜ＡＵｎは，コンフィグレーションデータＣＤにより任意の演算状態に構築され，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２も，コンフィグレーションデータＣＤにより任意の接続状態を構築される。たとえば，第１のプロセッサエレメント内ネットワークＮＷ１は，セレクタＳＥＬ１１〜ＳＥＬ３２により，入力端子ＩＮａ，ＩＮｂと任意の演算ユニットＡＵ１〜ＡＵｎの入力ポートＩＰとを接続し，また，任意の演算ユニットの出力ポートＯＰと別の任意の演算ユニットの入力ポートＩＰとを接続し，所望の演算ユニットの組み合わせによる演算回路を構築する。
【００３５】
このように，複数の演算ユニットＡＵ１〜ＡＵｎを並列に設けておき，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２を任意の接続状態に構築することで，任意の組み合わせの演算ユニットをシリアルに接続したり，任意の演算ユニットのみを入出力端子に接続したりして，最短のレイテンシで演算結果を出力する最適化された回路を構築することができる。
【００３６】
図８は，本実施の形態におけるプロセッサエレメントの一例を示す図である。このプロセッサエレメントＰＥ２は，入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２と，シフト・マスク演算ユニットＡＵ１１と，乗算演算ユニットＡＵ１２と，ＡＬＵ演算ユニットＡＵ１４と，丸め演算ユニットＡＵ１５とを有する。この４つの演算ユニットＡＵが並列に設けられ，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２により，入力端子ＩＮａ，ＩＮｂや任意の演算ユニットの出力ポートＯＰが任意の演算ユニットの入力ポートＩＰに接続され，出力端子ＯＵＴが任意演算ユニットの出力ポートＯＰに接続される。なお，丸め演算ユニットＡＵ１５は，下位ビットを四捨五入する丸め処理器ＲＯＵＮＤとその出力をラッチするレジスタＲｅｇとを有する。
【００３７】
図９は，本実施の形態におけるプロセッサエレメントの別の例を示す図である。このプロセッサエレメントＰＥ３は，入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２と，シフト・マスク演算ユニットＡＵ１１と，乗算演算ユニットＡＵ１２と，累積加算演算ユニットＡＵ１３と，丸め演算ユニットＡＵ１５とを有する。この４つの演算ユニットＡＵも並列に設けられ，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２により，入力端子ＩＮａ，ＩＮｂや任意の演算ユニットの出力ポートが任意の演算ユニットの入力ポートに接続され，出力端子ＯＵＴが任意演算ユニットの出力ポートに接続される。
【００３８】
図１０は，本実施の形態におけるプロセッサエレメントの別の例を示す図である。このプロセッサエレメントＰＥ４は，入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２と，シフト・マスク演算ユニットＡＵ１１と，乗算演算ユニットＡＵ１２と，累積加算演算ユニットＡＵ１３とを有する。この３つの演算ユニットＡＵも並列に設けられ，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２により，入力端子ＩＮａ，ＩＮｂや任意の演算ユニットの出力ポートが任意の演算ユニットの入力ポートに接続され，出力端子ＯＵＴが任意演算ユニットの出力ポートに接続される。
【００３９】
図１１は，本実施の形態におけるプロセッサエレメントの別の例を示す図である。このプロセッサエレメントＰＥ５は，入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２と，シフト・マスク演算ユニットＡＵ１１と，ＡＬＵ演算ユニットＡＵ１４とを有する。この３つの演算ユニットＡＵは並列に設けられ，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２により接続される。
【００４０】
図１２は，本実施の形態におけるプロセッサエレメントの別の例を示す図である。このプロセッサエレメントＰＥ６は，入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２と，シフト・マスク演算ユニットＡＵ１１と，乗算演算ユニットＡＵ１２とを有する。この２つの演算ユニットＡＵは並列に設けられ，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２により接続される。
【００４１】
図１３は，本実施の形態におけるプロセッサエレメントの別の例を示す図である。このプロセッサエレメントＰＥ７は，入力端子ＩＮａ，ＩＮｂと，出力端子ＯＵＴと，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２と，複数個のシフト・マスク演算ユニットＡＵ１１と，複数個の乗算演算ユニットＡＵ１２と，複数個の累積加算演算ユニットＡＵ１３とを有する。これらそれぞれ複数個設けられた３種類の演算ユニットＡＵは並列に設けられ，プロセッサエレメント内ネットワークＮＷ１，ＮＷ２により，入力端子ＩＮａ，ＩＮｂや任意の演算ユニットの出力ポートが任意の演算ユニットの入力ポートに接続され，出力端子ＯＵＴが任意演算ユニットの出力ポートに接続される。図１３の例とは異なる演算ユニットＡＵの組み合わせでそれぞれ複数個ずつ設けた組み合わせにしても良い。
【００４２】
以上，本実施の形態におけるプロセッサエレメントとして，典型的な演算ユニットの組み合わせ例を説明したが，上記以外の組み合わせにしても良いし，それ以外の演算ユニットと組み合わせても良い。いずれの場合も，演算ユニットが並列に設けられ，プロセッサエレメント内ネットワークにより任意の組み合わせ且つ任意の順番でシリアルに接続することができる。あるいは，任意の演算ユニットのみを入力端子と出力端子に接続することもできる。
【００４３】
図１４は，本実施の形態におけるプロセッサエレメントの接続状態の一例を示す図である。この例では，図１０に示したプロセッサエレメントＰＥ４により，図３，４に示したＭＡＣプロセッサエレメントを構築している。つまり，第１のネットワークＮＷ１は，入力端子ＩＮａ，ＩＮｂをシフト・マスク演算ユニットＡＵ１１の入力ポートＩＰ１１，ＩＰ１２に接続し，その出力ポートＯＰ１１，ＯＰ１２を乗算演算ユニットＡＵ１２の入力ポートＩＰ２１，ＩＰ２２に接続し，その出力ポートＯＰ２を累積加算演算ユニット１３の入力ポートＩＰ３に接続し，第２のネットワークＮＷ２がその累積加算演算ユニット１３の出力ポートＯＰ３を出力端子ＯＵＴに接続している。この接続は，前述したとおり，コンフィグレーションデータがネットワーク内のセレクタの選択入力を設定することで行われる。
【００４４】
このように接続することで，並列に設けられた３つの演算ユニットＡＵ１１，ＡＵ１２，ＡＵ１３がシリアルに接続された構成に構築される。そして，各演算ユニットＡＵ１１，ＡＵ１２，ＡＵ１３は，クロックＣＬＫに同期して１クロックサイクルのレイテンシで演算結果を出力するので，３つの演算ユニットをシリアルに接続することで，３クロックサイクルのレイテンシで積和演算結果を出力する。したがって，図３，４に示したＭＡＣプロセッサエレメントと同じ構成を実現することが出来る。
【００４５】
図１５は，本実施の形態におけるプロセッサエレメントの接続状態の別の例を示す図である。この例では，図１０のプロセッサエレメントＰＥ４と図１１のプロセッサエレメントＰＥ５とを利用して，図３と同じ演算（ａ＊ｂ＋ｃ）を行う回路を構築している。つまり，プロセッサエレメントＰＥ４では，入力ａ，ｂが第１のネットワークＮＷ１内のセレクタにより乗算演算ユニットＡＵ１２の入力ポートＩＰ２１，ＩＰ２２に接続され，その出力ポートＯＰ２が第２のネットワークＮＷ２内のセレクタにより出力端子ＯＵＴ１に接続される。さらに，その出力端子ＯＵＴ１が，プロセッサエレメントＰＥ５の入力端子ＩＮａに接続される。また，入力ｃは，遅延プロセッサエレメントＤＥＬ−ＰＥのレジスタで１クロックサイクル遅延されて，プロセッサエレメントＰＥ５の入力端子ＩＮｂに供給される。このプロセッサエレメントＰＥ５では，入力端子ＩＮａ，ＩＮｂが，第１のネットワークＮＷ１内のセレクタによりＡＬＵ演算ユニットＡＵ１４の入力ポートＩＰ４１，ＩＰ４２に接続され，その出力ポートＯＰ４が第２のネットワークＮＷ２内のセレクタにより出力端子ＯＵＴ２に接続される。
【００４６】
このように接続することで，プロセッサエレメントＰＥ４内の乗算演算ユニットＡＵ１２が１クロックサイクルのレイテンシで乗算結果（ａ＊ｂ）を出力し，プロセッサエレメントＰＥ５内のＡＬＵ演算ユニットＡＵ１４が１クロックサイクルのレイテンシで加算結果（ａ＊ｂ＋ｃ）を出力する。したがて，２クロックサイクルのレイテンシで，演算結果（ａ＊ｂ＋ｃ）が出力されるので，演算の遅延を少なくし高速化できる。
【００４７】
図１６は，本実施の形態におけるプロセッサエレメントの接続状態の別の例を示す図である。この例では，図１０のプロセッサエレメントＰＥ４のみを利用して，図４と同じ演算（ａ＊ｂ）とシフト・マスク処理を行う回路を構築している。プロセッサエレメントＰＥ４内において，入力ａ，ｂは，第１のネットワークＮＷ１内のセレクタにより乗算演算ユニットＡＵ１２の入力ポートＩＰ２１，ＩＰ２２に接続され，その出力ポートＯＰ２が，第１のネットワークＮＷ２内のセレクタによりシフト・マスク演算ユニットＡＵ１１の入力ポートＩＰ１１に接続され，その出力ポートＯＰ１１が第２のネットワークＮＷ２内のセレクタにより出力端子ＯＵＴに接続される。
【００４８】
つまり，太枠で示した乗算演算ユニットＡＵ１２とシフト・マスク演算ユニットＡＵ１１とがシリアルに接続して構成され，２クロックサイクルのレイテンシで，乗算（ａ＊ｂ）とそれに対するマスク・シフト処理を行うことができ，図４に比べて遅延量を小さくし高速演算が可能になる。
【００４９】
上記の３つの例以外にも，種々の演算ユニットの組み合わせによる接続状態が実現可能である。そして，その構築された演算回路では，最小のクロックサイクル数のレイテンシで演算結果を出力することができる。
【００５０】
以上のように，本実施の形態では，プロセッサエレメント内に，複数の演算ユニットが並列に設けられ，入力端子とそれらユニットの入力ポートとが，またユニットの出力ポートと入力ポートとが，そしてユニットの出力ポートと出力端子とがプロセッサエレメント内ネットワークのセレクタにより任意の組み合わせに接続可能である。よって，プロセッサエレメント内ネットワークにより接続して構築された回路は，短いレイテンシで演算結果を出力することができる。また，プロセッサエレメント内の演算ユニットの種類を適宜選択することで，それらユニットの使用効率も向上させることができる。
【００５１】
以上の実施の形態をまとめると，次の付記のとおりである。
【００５２】
（付記１）コンフィグレーションデータに基づいて任意の演算状態を動的に変更するリコンフィグ可能な集積回路装置において，
入力端子と，出力端子と，並列に設けられクロックに同期してそれぞれの演算処理を行う複数の演算ユニットと，前記入力端子と前記出力端子と前記複数の演算ユニットの入力，出力ポートとを任意の状態に接続するプロセッサ内ネットワークとを有する複数のプロセッサエレメントと，
前記複数のプロセッサエレメント間を任意の状態に接続するプロセッサ間ネットワークとを有し，
コンフィグレーションデータに基づいて，前記プロセッサ内ネットワークが所望の接続状態に再構築可能であり，さらに，前記コンフィグレーションデータに基づいて，前記プロセッサ間ネットワークが所望の接続状態に再構築可能であることを特徴とするリコンフィグ可能な集積回路装置。
【００５３】
（付記２）付記１において，
さらに，前記コンフィグレーションデータを格納するコンフィグレーションデータメモリと，前記プロセッサエレメントからの終了信号に応答して前記コンフィグレーションデータメモリから次の演算状態を構築するコンフィグレーションデータを出力させるシーケンサとを有するリコンフィグ可能な集積回路装置。
【００５４】
（付記３）付記１において，
前記演算ユニットは，入力ポートと，入力ポートからの入力データに対して所定の演算処理を行う演算器と，前記演算器の出力をクロックに応答してラッチするレジスタと，前記レジスタのデータを出力する出力ポートとを有し，１つのクロックサイクルで前記所定の演算処理を行って演算結果を出力することを特徴とするリコンフィグ可能な集積回路装置。
【００５５】
（付記４）付記３において，
前記演算器は，少なくとも，ビットシフトを行うシフト処理器，一部のビットをマスクするマスク処理器，乗算器，累積加算器，加算と減算と論理演算とを行うＡＬＵ演算器，下位ビットを四捨五入する丸め処理器を含むグループのうち，いずれか複数の演算器の組み合わせを有することを特徴とするリコンフィグ可能な集積回路装置。
【００５６】
（付記５）付記１において，
前記プロセッサエレメントでは，前記コンフィグレーションデータに基づいて前記プロセッサ内ネットワークが構築されることで，内蔵される複数の演算ユニットが任意の順番でシリアルに接続可能であることを特徴とするリコンフィグ可能な集積回路装置。
【００５７】
（付記６）付記１において，
前記プロセッサエレメントでは，前記コンフィグレーションデータに基づいて前記プロセッサエレメント内ネットワークが構築されることで，内蔵される単一の演算ユニットが単一のクロックサイクルで演算処理結果を前記出力端子に出力することを特徴とするリコンフィグ可能な集積回路装置。
【００５８】
（付記７）付記１において，
前記プロセッサエレメント内ネットワークは，前記入力端子と複数の演算ユニットの出力ポートのいずれかを対応する演算ユニットの入力ポートに接続する第１のセレクタを有し，当該第１のセレクタは，各演算ユニットの入力ポートに対応して設けられることを特徴とするリコンフィグ可能な集積回路装置。
【００５９】
（付記８）付記７において，
前記プロセッサエレメント内ネットワークは，さらに，前記複数の演算ユニットの出力ポートのいずれかを前記出力端子に接続する第２のセレクタを有することを特徴とするリコンフィグ可能な集積回路装置。
【００６０】
（付記９）コンフィグレーションデータに基づいて任意の演算状態を動的に変更するリコンフィグ可能な集積回路装置において，
入力端子と，出力端子と，並列に設けられクロックに同期してそれぞれの演算処理を行う複数の演算ユニットと，前記入力端子と前記出力端子と前記複数の演算ユニットの入力，出力ポートとを任意の状態に接続するプロセッサ内ネットワークとを有する複数のプロセッサエレメントと，
前記複数のプロセッサエレメント間を任意の状態に接続するプロセッサ間ネットワークと，
前記プロセッサエレメント内ネットワーク及びプロセッサエレメント間ネットワークにコンフィグレーションデータを供給する制御ユニットとを有し，
コンフィグレーションデータに基づいて，前記プロセッサ内ネットワークが所望の接続状態に再構築可能であり，さらに，前記コンフィグレーションデータに基づいて，前記プロセッサ間ネットワークが所望の接続状態に再構築可能であり，
前記演算ユニットは，それぞれ１クロックサイクルのレイテンシで対応する演算処理結果を出力することを特徴とするリコンフィグ可能な集積回路装置。
【図面の簡単な説明】
【００６１】
【図１】本実施の形態におけるリコンフィグ可能な集積回路装置の構成図である。
【図２】本実施の形態におけるプロセッサエレメントアレイ３０の構成例を示す図である。
【図３】一般的なプロセッサエレメントの問題点を説明するための図である。
【図４】一般的なプロセッサエレメントの問題点を説明するための図である。
【図５】本実施の形態におけるプロセッサエレメントの構成図である。
【図６】本実施の形態におけるプロセッサエレメントのプロセッサエレメント内ネットワークの構成を示す図である。
【図７】本実施の形態における制御ユニットの構成図である。
【図８】本実施の形態におけるプロセッサエレメントの一例を示す図である。
【図９】本実施の形態におけるプロセッサエレメントの別の例を示す図である。
【図１０】本実施の形態におけるプロセッサエレメントの別の例を示す図である。
【図１１】本実施の形態におけるプロセッサエレメントの別の例を示す図である。
【図１２】本実施の形態におけるプロセッサエレメントの別の例を示す図である。
【図１３】本実施の形態におけるプロセッサエレメントの別の例を示す図である。
【図１４】本実施の形態におけるプロセッサエレメントの接続状態の一例を示す図である。
【図１５】本実施の形態におけるプロセッサエレメントの接続状態の別の例を示す図である。
【図１６】本実施の形態におけるプロセッサエレメントの接続状態の別の例を示す図である。
【符号の説明】
【００６２】
ＰＥ：プロセッサエレメント              ＡＵ：演算ユニット
ＮＷ１，ＮＷ２：プロセッサエレメント内ネットワーク
４０：プロセッサエレメント間ネットワーク
ＳＥＬ：セレクタ                        ＣＬＫ：クロック
ＩＰ：入力ポート                        ＯＰ：出力ポート
ＩＮａ，ＩＮｂ：入力端子                ＯＵＴ：出力端子
【図１】
0004619252.tif 000002
【図２】
0004619252.tif 000003
【図３】
0004619252.tif 000004
【図４】
0004619252.tif 000005
【図５】
0004619252.tif 000006
【図６】
0004619252.tif 000007
【図７】
0004619252.tif 000008
【図８】
0004619252.tif 000009
【図９】
0004619252.tif 000010
【図１０】
0004619252.tif 000011
【図１１】
0004619252.tif 000012
【図１２】
0004619252.tif 000013
【図１３】
0004619252.tif 000014
【図１４】
0004619252.tif 000015
【図１５】
0004619252.tif 000016
【図１６】
0004619252.tif 000017