(57)【特許請求の範囲】
【請求項１】
第１のビット幅のデータを入力し演算を行う複数の再構成可能な第１の論理ブロックと、
前記複数の第１の論理ブロック間を動的再構成可能に接続する第１のネットワークと、
前記第１のビット幅とは異なる第２のビット幅のデータを入力し演算を行う第２の論理ブロックと、
前記第２のビット幅のデータを入力し演算を行う第３の論理ブロックと、
前記第２のビット幅のデータを入力し演算を行う第４の論理ブロックと、
前記複数の第２の論理ブロックの出力に接続される第２のネットワークと、
前記第１〜第４の論理ブロックに含まれる演算器のキャリビット出力を、前記第２〜第４の論理ブロックに含まれる演算器の入力に動的再構成可能に接続する第３のネットワークとを有し、
前記第１の論理ブロックは、１ビットのキャリデータを前記第３のネットワークに出力し、
前記第２の論理ブロックは、前記第３のネットワークから１ビットのキャリデータを入力して累積加算し、２ビットの累積加算データを前記第２のネットワークに出力し、１ビットのキャリデータを前記第３のネットワークに出力し、
前記第３の論理ブロックは、前記第３のネットワークから１ビットのキャリデータを入力して累積加算し、４ビットの累積加算データを前記第２のネットワークに出力し、１ビットのキャリデータを前記第３のネットワークに出力し、
前記第４の論理ブロックは、前記第３のネットワークから１ビットのキャリデータを入力して累積加算し、８ビットの累積加算データを前記第２のネットワークに出力し、１ビットのキャリデータを前記第３のネットワークに出力することを特徴とする半導体集積回路。
【請求項２】
前記第２の論理ブロックの出力データのビット幅は、前記第１の論理ブロックの出力データのビット幅の半分、１／４、又は１／８であることを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記第１の論理ブロックに含まれる演算器は、累積加算器であることを特徴とする請求項１又は２記載の半導体集積回路。
【請求項４】
前記第１のビット幅は、１６ビット又は３２ビットであることを特徴とする請求項１乃至３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記第２のネットワークは、前記複数の第２の論理ブロックの出力を選択して出力することを特徴とする請求項１乃至４のいずれか１項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に関する。
【背景技術】
【０００２】
リコンフィギャラブルＬＳＩ（大規模半導体集積回路）は、内部に非常に多くのプロセッサエレメント（ＰＥ）で構成され、それぞれのプロセッサエレメントはＡＬＵ（算術論理演算ユニット）等の演算エレメントと後段の単純演算エレメントの複数段で構成されている。
【０００３】
図１２は、２段パイプラインのプロセッサエレメント１２０１の構成例を示す図である。レジスタ１２０２及び１２０３は、それぞれ１６ビットの入力データを保持する。レジスタ１２０４は、所定のデータを保持する。セレクタ１２０５は、レジスタ１２０３又は１２０４に保持されているデータを選択して出力する。乗算器１２０６は、レジスタ１２０２に保持されているデータ及びセレクタ１２０５の出力データを乗算し、３２ビットの乗算データを出力する。レジスタ１２０７は、乗算器１２０６の出力データを保持する。セレクタ１２０８は、レジスタ１２０４又は１２１０に保持されているデータを選択して出力する。ＡＬＵ１２０９は、レジスタ１２０７に保持されているデータ及びセレクタ１２０８の出力データを基に演算し、３２ビットの演算データを出力する。レジスタ１２１０は、ＡＬＵ１２０９の出力データを保持し、外部に１６ビット又は３２ビットのデータを出力する。
【０００４】
セレクタ１２０８がレジスタ１２１０に保持されているデータを選択し、ＡＬＵ１２０９が加算を行うと、ＡＬＵ１２０９は累積加算を行うことになる。その場合、ＡＬＵ１２０９は累積加算によりオーバーフローしてしまい、ビット精度が低下してしまう。
【０００５】
図１３は、２個のプロセッサエレメント１２０１ａ及１２０１ｂを用いたリコンフィギャラブル回路の構成例を示す図である。プロセッサエレメント１２０１ａは、図１２のプロセッサエレメント１２０１の前段のレジスタ１２０２〜１２０４，１２０７、セレクタ１２０５及び乗算器１２０６を有し、データネットワーク１３０１に１６ビットに正規化されたデータを出力する。プロセッサエレメント１２０１ｂは、図１２のプロセッサエレメント１２０１の後段のセレクタ１２０８、ＡＬＵ１２０９及びレジスタ１２１０を有し、さらにレジスタ１３０２〜１３０４を有し、データネットワーク１３０１を介してプロセッサエレメント１２０１ａの出力データを入力する。この場合、プロセッサエレメント１２０１ａは、１６ビットに正規化されたデータをデータネットワーク１３０１に出力するため、データのビット精度が低下してしまう。
【０００６】
以上のように、累積加算（ＡＣＣ）及び積和演算（ＭＡＣ）では、累積加減算を行うため、多くのビット数が必要になる。ビット数が少ない場合は演算毎に正規化を行い、累積誤差や厳密なビット精度の計算を必要とする。
【０００７】
図１４は、２個のプロセッサエレメント１４０１及び１４０２を用いてビット精度を向上させるリコンフィギャラブル回路の構成例を示す図である。プロセッサエレメント１４０１及び１４０２は、それぞれ図１２のプロセッサエレメント１２０１と同様に、レジスタ１２０２，１２０３，１２０７，１２１０、乗算器１２０６及びＡＬＵ１２０９を有する。プロセッサエレメント１４０１内のＡＬＵ１２０９は、累積加算し、１６ビット又は３２ビットのデータをデータネットワーク１４０３に出力し、１ビットのキャリデータをプロセッサエレメント１４０２内のＡＬＵ１２０９に出力する。プロセッサエレメント１４０２内のＡＬＵ１２０９は、そのキャリデータ及びレジスタ１２１０に保持されているデータを加算し、１６ビット又は３２ビットのデータをデータネットワーク１４０３に出力する。これにより、ビット精度を向上させることができる。しかし、プロセッサエレメント１４０１の他に、キャリ演算のためのプロセッサエレメント１４０２を必要とするため、プロセッサエレメントの数が２倍になりリソースが無駄になる問題がある。
【０００８】
また、下記の特許文献１には、演算器の入力部に入力レジスタを備えるとともに、前記演算器の出力部に出力レジスタを備える複数のプロセッサ・エレメントと、前記複数のプロセッサ・エレメント間を接続するバスと、前記バスの接続を変更するスイッチ部と、ソフトウェアに応じて前記スイッチ部を制御する制御回路とを有する信号処理プロセッサであって、前記プロセッサ・エレメントが連続して信号処理を行う第一の動作モードと、前記プロセッサ・エレメントによる信号処理と、前記プロセッサ・エレメントの前記出力レジスタから前記入力レジスタへのデータ転送処理とを交互に行い、前記プロセッサ・エレメントによる信号処理期間に、前記複数のプロセッサ・エレメント間の接続を変更する第二の動作モードとを有する信号処理プロセッサが記載されている。
【０００９】
また、下記の特許文献２には、ＣＳＡ（Ｃａｒｒｙ Ｓａｖｅ Ａｄｄｅｒ。キャリセーブ加算器）ツリーを有して固定小数点積和演算を行う積和演算器が記載されている。
【００１０】
【特許文献１】特開２００６−２４４５１９号公報
【特許文献２】特開平８−３２８８２８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
累積加算又は積和演算を行うと、多くのビット数を必要とするため、ビット数の少ないプロセッサエレメントではビット精度が低下してしまう。また、ビット精度を向上させるために、複数のプロセッサエレメントを用いると、無駄なリソースが発生し、リソースの使用効率が低下する。
【００１２】
本発明の目的は、累積加算又は積和演算等を行う場合にビット精度を向上させ、無駄なリソースの発生を防止することができる半導体集積回路を提供することである。
【課題を解決するための手段】
【００１３】
本発明の一観点によれば、第１のビット幅のデータを入力し演算を行う複数の再構成可能な第１の論理ブロックと、前記複数の第１の論理ブロック間を動的再構成可能に接続する第１のネットワークと、前記第１のビット幅とは異なる第２のビット幅のデータを入力し演算を行う第２の論理ブロックと、前記第２のビット幅のデータを入力し演算を行う第３の論理ブロックと、前記第２のビット幅のデータを入力し演算を行う第４の論理ブロックと、前記複数の第２の論理ブロックの出力に接続される第２のネットワークと、前記第１〜第４の論理ブロックに含まれる演算器のキャリビット出力を、前記第２〜第４の論理ブロックに含まれる演算器の入力に動的再構成可能に接続する第３のネットワークとを有し、前記第１の論理ブロックは、１ビットのキャリデータを前記第３のネットワークに出力し、前記第２の論理ブロックは、前記第３のネットワークから１ビットのキャリデータを入力して累積加算し、２ビットの累積加算データを前記第２のネットワークに出力し、１ビットのキャリデータを前記第３のネットワークに出力し、前記第３の論理ブロックは、前記第３のネットワークから１ビットのキャリデータを入力して累積加算し、４ビットの累積加算データを前記第２のネットワークに出力し、１ビットのキャリデータを前記第３のネットワークに出力し、前記第４の論理ブロックは、前記第３のネットワークから１ビットのキャリデータを入力して累積加算し、８ビットの累積加算データを前記第２のネットワークに出力し、１ビットのキャリデータを前記第３のネットワークに出力することを特徴とする半導体集積回路が提供される。
【発明の効果】
【００１４】
第１の論理ブロックで累積加算又は積和演算を行い、第２の論理ブロックでキャリ演算を行うことができる。これにより、ビット精度を向上させ、無駄なリソースの発生を防止し、リソースの使用効率を向上させることができる。
【発明を実施するための最良の形態】
【００１５】
図１は、本発明の実施形態によるリコンフィギャラブル回路１０３を有する半導体集積回路の構成例を示す図である。半導体集積回路は、ＣＰＵ（中央処理ユニット）１０１、ＣＰＵバス１０２及びリコンフィギャラブル回路１０３を有する。リコンフィギャラブル回路１０３は、複数のプロセッサエレメント（ＰＥ）１１１、データネットワーク１１２、セレクタ１１３、キャリネットワーク１２０、複数のキャリ演算用プロセッサエレメント１２１、エクストラデータネットワーク１２２、及びセレクタ１２３を有する。
【００１６】
ＣＰＵバス１０２には、ＣＰＵ１０１及びリコンフィギャラブル回路１０３が接続される。セレクタ１１３は、データネットワーク１１２が出力するデータを選択し、ＣＰＵバス１１３に出力する。セレクタ１２３は、エクストラデータネットワーク１２２が出力するデータを選択し、ＣＰＵバス１０２に出力する。ＣＰＵ１０１は、ＣＰＵバス１０２を介して、セレクタ１１３及び１２３が選択してデータを入力する。
【００１７】
図２は、図１のプロセッサエレメント１１１及びキャリ演算用プロセッサエレメント１２１の構成例を示す図である。プロセッサエレメント１１１は、第１のビット幅（１６ビット又は３２ビット）のデータを入力し演算を行う再構成可能な第１の論理ブロックであり、第１のビット幅のデータをデータネットワーク１１２に出力し、例えば１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。データネットワーク１１２は、複数のプロセッサエレメント１１１間を動的再構成可能に接続する第１のネットワークである。データネットワーク１１２は、例えばＣＰＵ１０１の制御により、複数のプロセッサエレメント１１１の出力と複数のプロセッサエレメント１１１の入力との間の接続を切り換えるスイッチ（セレクタ）を有する。キャリ演算用プロセッサエレメント１２１は、前記第１のビット幅とは異なる第２のビット幅（例えば１ビット）のキャリデータＣＡをキャリネットワーク１２０から入力し演算を行う。エクストラデータネットワーク１２２は、複数のキャリ演算用プロセッサエレメント１２１の出力に接続される第２のネットワークである。キャリネットワーク１２０は、プロセッサエレメント１１１に含まれる加算器（累積加算器又は演算器）２０５のキャリビットＣＡの出力を、キャリ演算用プロセッサエレメント１２１に含まれる加算器（累積加算器又は演算器）２１１の入力に動的再構成可能に接続する。プロセッサエレメント１１１、キャリ演算用プロセッサエレメント１２１、データネットワーク１１２、キャリネットワーク１２０及びエクストラデータネットワーク１２２は、例えばＣＰＵ１０１の制御により再構成可能である。
【００１８】
プロセッサエレメント１１１は、レジスタ２０１，２０２，２０４，２０６、乗算器２０３及び加算器２０５を有する。加算器２０５及びレジスタ２０６は、累積加算器を構成する。レジスタ２０１及び２０２は、それぞれデータネットワーク１１２から第１のデータ幅（１６ビット又は３２ビット）のデータを入力して保持する。乗算器２０３は、レジスタ２０１及び２０２に保持されているデータ（例えば１６ビット）を乗算し、乗算データ（例えば３２ビット）を出力する。レジスタ２０４は、乗算器２０３の出力データを保持する。加算器２０５は、本来ＡＬＵであり、例えばＣＰＵ１０１の制御により加算器に再構成される。加算器２０５は、レジスタ２０４及び２０６に保持されているデータを加算し、加算データ（例えば３２ビット）をレジスタ２０６及びデータネットワーク１１２に出力し、キャリデータ（例えば１ビット）ＣＡをキャリネットワーク１２０に出力する。レジスタ２０６は、加算器２０５が出力する加算データを保持する。加算器２０５及びレジスタ２０６は、累積加算器を構成し、累積加算を行う。その結果、加算器２０５は、例えば３２ビットの加算データの他に、キャリデータＣＡを出力する。プロセッサエレメント１１１は、以上のように、累積加算及び積和演算を行うため、キャリデータＣＡが発生する。
【００１９】
キャリ演算用プロセッサエレメント１２１は、加算器２１１及びレジスタ２１２を有する累積加算器である。加算器２１１は、本来ＡＬＵであり、例えばＣＰＵ１０１の制御により加算器に再構成される。加算器２１１は、キャリネットワーク１２０から入力されるキャリデータＣＡ及びレジスタ２１２に保持されているデータを加算し、２ビット、４ビット又は８ビットの加算データをレジスタ２１２及びエクストラデータネットワーク１２２に出力し、キャリデータ（例えば１ビット）ＣＡをキャリネットワーク１２０に出力する。レジスタ２１２は、加算器２１１が出力する加算データを保持する。
【００２０】
第１段のキャリ演算用プロセッサエレメント１２１は、プロセッサエレメント１１１が出力するキャリデータＣＡをキャリネットワーク１２０を介して入力し、そのキャリデータＣＡを累積加算する。第２段のキャリ演算用プロセッサエレメント１２１は、第１段のキャリ演算用プロセッサエレメント１２１が出力するキャリデータＣＡをキャリネットワーク１２０を介して入力し、そのキャリデータＣＡを累積加算する。同様に、第ｎ段のキャリ演算用プロセッサエレメント１２１は、第ｎ−１段のキャリ演算用プロセッサエレメント１２１が出力するキャリデータＣＡをキャリネットワーク１２０を介して入力し、そのキャリデータＣＡを累積加算する。
【００２１】
図３は、図２の複数のキャリ演算用プロセッサエレメント１２１の構成例を示す図である。３個のキャリ演算用プロセッサエレメント１２１ａ、１２１ｂ及び１２１ｃは、図２の３個のキャリ演算用プロセッサエレメント１２１に対応する。キャリ演算用プロセッサエレメント１２１ａは、キャリネットワーク１２０からキャリデータ（例えば１ビット）ＣＡを入力して累積加算し、２ビットの累積加算データをエクストラデータネットワーク１２２に出力し、キャリデータ（例えば１ビット）ＣＡをキャリネットワーク１２０に出力する。キャリ演算用プロセッサエレメント１２１ｂは、キャリネットワーク１２０からキャリデータ（例えば１ビット）ＣＡを入力して累積加算し、４ビットの累積加算データをエクストラデータネットワーク１２２に出力し、キャリデータ（例えば１ビット）ＣＡをキャリネットワーク１２０に出力する。キャリ演算用プロセッサエレメント１２１ｃは、キャリネットワーク１２０からキャリデータ（例えば１ビット）ＣＡを入力して累積加算し、８ビットの累積加算データをエクストラデータネットワーク１２２に出力し、キャリデータ（例えば１ビット）ＣＡをキャリネットワーク１２０に出力する。
【００２２】
キャリ演算用プロセッサエレメント１２１ａ〜１２１ｃの出力データのビット幅は、例えば２ビット、４ビット及び８ビットであり、プロセッサエレメント１１１の出力データ（例えば１６ビット）のビット幅の１／８、１／４、又は半分である。
【００２３】
以上のように、複数のキャリ演算用プロセッサエレメント１２１は、２ビットのキャリ演算用プロセッサエレメント１２１ａ、４ビットのキャリ演算用プロセッサエレメント１２１ｂ及び８ビットのキャリ演算用プロセッサエレメント１２１ｃを有する。３個のキャリ演算用プロセッサエレメント１２１ａ〜１２１ｃの出力データを組み合わせることにより、１ビット〜１５ビットのすべてのキャリ演算を行うことができる。キャリネットワーク１２０及びエクストラデータネットワーク１２２内の接続は、例えばＣＰＵ１０１により再構成可能である。以下、その詳細を説明する。
【００２４】
（１ビットのキャリ演算）
プロセッサエレメント１１１に対して、１ビットのキャリ演算を行う場合には、プロセッサエレメント１１１内の加算器２０５が出力するキャリデータＣＡを用いればよい。
【００２５】
（２ビットのキャリ演算）
プロセッサエレメント１１１に対して、２ビットのキャリ演算を行う場合には、２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データを用いればよい。その場合、２ビットのキャリ演算用プロセッサエレメント１２１ａは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。
【００２６】
（３ビットのキャリ演算）
プロセッサエレメント１１１に対して、３ビットのキャリ演算を行う場合には、２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。その場合、２ビットのキャリ演算用プロセッサエレメント１２１ａは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。
【００２７】
（４ビットのキャリ演算）
プロセッサエレメント１１１に対して、４ビットのキャリ演算を行う場合には、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データを用いればよい。その場合、４ビットのキャリ演算用プロセッサエレメント１２１ｂは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。
【００２８】
（５ビットのキャリ演算）
プロセッサエレメント１１１に対して、５ビットのキャリ演算を行う場合には、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。その場合、４ビットのキャリ演算用プロセッサエレメント１２１ｂは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。
【００２９】
（６ビットのキャリ演算）
図４は、６ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント１２１は、２ビットのキャリ演算用プロセッサエレメント１２１ａ及び４ビットのキャリ演算用プロセッサエレメント１２１ｂを有する。４ビットのキャリ演算用プロセッサエレメント１２１ｂは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、４ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。２ビットのキャリ演算用プロセッサエレメント１２１ａは、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力するキャリデータＣＡをキャリネットワーク１２０を介して入力して累積加算し、２ビットの累積加算データをエクストラデータネットワーク１２２に出力する。プロセッサエレメント１１１に対して、６ビットのキャリ演算を行う場合には、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データ及び２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データを用いればよい。
【００３０】
（７ビットのキャリ演算）
図５は、７ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント１２１は、２ビットのキャリ演算用プロセッサエレメント１２１ａ及び４ビットのキャリ演算用プロセッサエレメント１２１ｂを有する。４ビットのキャリ演算用プロセッサエレメント１２１ｂは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、４ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。２ビットのキャリ演算用プロセッサエレメント１２１ａは、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力するキャリデータＣＡをキャリネットワーク１２０を介して入力して累積加算し、２ビットの累積加算データ及び１ビットのキャリデータＣＡをエクストラデータネットワーク１２２に出力する。プロセッサエレメント１１１に対して、７ビットのキャリ演算を行う場合には、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データ、並びに２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。
【００３１】
（８ビットのキャリ演算）
プロセッサエレメント１１１に対して、８ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データを用いればよい。その場合、８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。
【００３２】
（９ビットのキャリ演算）
プロセッサエレメント１１１に対して、９ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。その場合、８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。
【００３３】
（１０ビットのキャリ演算）
図６は、１０ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント１２１は、２ビットのキャリ演算用プロセッサエレメント１２１ａ及び８ビットのキャリ演算用プロセッサエレメント１２１ｃを有する。８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、８ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。２ビットのキャリ演算用プロセッサエレメント１２１ａは、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡをキャリネットワーク１２０を介して入力して累積加算し、２ビットの累積加算データをエクストラデータネットワーク１２２に出力する。プロセッサエレメント１１１に対して、１０ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ及び２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データを用いればよい。
【００３４】
（１１ビットのキャリ演算）
図７は、１１ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント１２１は、２ビットのキャリ演算用プロセッサエレメント１２１ａ及び８ビットのキャリ演算用プロセッサエレメント１２１ｃを有する。８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、８ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。２ビットのキャリ演算用プロセッサエレメント１２１ａは、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡをキャリネットワーク１２０を介して入力して累積加算し、２ビットの累積加算データ及び１ビットのキャリデータＣＡをエクストラデータネットワーク１２２に出力する。プロセッサエレメント１１１に対して、１１ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ、並びに２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。
【００３５】
（１２ビットのキャリ演算）
図８は、１２ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント１２１は、４ビットのキャリ演算用プロセッサエレメント１２１ｂ及び８ビットのキャリ演算用プロセッサエレメント１２１ｃを有する。８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、８ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。４ビットのキャリ演算用プロセッサエレメント１２１ｂは、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡをキャリネットワーク１２０を介して入力して累積加算し、４ビットの累積加算データをエクストラデータネットワーク１２２に出力する。プロセッサエレメント１１１に対して、１２ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ及び４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データを用いればよい。
【００３６】
（１３ビットのキャリ演算）
図９は、１３ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント１２１は、４ビットのキャリ演算用プロセッサエレメント１２１ｂ及び８ビットのキャリ演算用プロセッサエレメント１２１ｃを有する。８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、８ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡをキャリネットワーク１２０に出力する。４ビットのキャリ演算用プロセッサエレメント１２１ｂは、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡをキャリネットワーク１２０を介して入力して累積加算し、４ビットの累積加算データ及び１ビットのキャリデータＣＡをエクストラデータネットワーク１２２に出力する。プロセッサエレメント１１１に対して、１３ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ、並びに４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。
【００３７】
（１４ビットのキャリ演算）
プロセッサエレメント１１１に対して、１４ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データ、及び２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データを用いればよい。その場合、８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。４ビットのキャリ演算用プロセッサエレメント１２１ｂは、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡを入力して累積加算する。２ビットのキャリ演算用プロセッサエレメント１２１ａは、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力するキャリデータＣＡを入力して累積加算する。
【００３８】
（１５ビットのキャリ演算）
プロセッサエレメント１１１に対して、１５ビットのキャリ演算を行う場合には、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力する８ビット累積加算データ、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力する４ビット累積加算データ、並びに２ビットのキャリ演算用プロセッサエレメント１２１ａが出力する２ビット累積加算データ及び１ビットキャリデータＣＡを用いればよい。その場合、８ビットのキャリ演算用プロセッサエレメント１２１ｃは、プロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算する。４ビットのキャリ演算用プロセッサエレメント１２１ｂは、８ビットのキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡを入力して累積加算する。２ビットのキャリ演算用プロセッサエレメント１２１ａは、４ビットのキャリ演算用プロセッサエレメント１２１ｂが出力するキャリデータＣＡを入力して累積加算する。
【００３９】
図１０は、キャリネットワーク１２０及びエクストラデータネットワーク１２２の構成例を示す図である。キャリネットワーク１２０は、複数のセレクタ１００１を有する。複数のセレクタ１００１は、それぞれプロセッサエレメント１１１が出力するキャリデータＣＡ及び複数のキャリ演算用プロセッサエレメント１２１が出力するキャリデータＣＡの中からいずれかを選択し、複数のキャリ演算用プロセッサエレメント１２１に出力する。また、セレクタ１００３は、プロセッサエレメント１１１が出力するキャリデータＣＡ及び複数のキャリ演算用プロセッサエレメント１２１が出力するキャリデータＣＡの中からいずれかを選択し、他のキャリネットワーク１００４に出力する。エクストラデータネットワーク１２２は、複数のセレクタ１００２を有する。複数のセレクタ１００２は、それぞれ複数のキャリ演算用プロセッサエレメント１２１が出力する累積加算データの中からいずれかを選択し、セレクタ１２３（図１）に出力する。セレクタ１００１〜１００３は、例えばＣＰＵ１０１により制御される。
【００４０】
キャリネットワーク１２０は、複数のキャリ演算用プロセッサエレメント１２１のうちの１つのキャリ演算用プロセッサエレメント１２１に含まれる加算器（累積加算器又は演算器）２１１のキャリビット出力と、他のキャリ演算用プロセッサエレメント１２１に含まれる加算器（累積加算器又は演算器）２１１の入力とを接続する。エクストラデータネットワーク１２２は、複数のキャリ演算用プロセッサエレメント１２１の出力を選択して出力する。
【００４１】
以上のように、プロセッサエレメント１１１及び複数のキャリ演算用プロセッサエレメント１２１は、キャリネットワーク１２０を介して接続される。同じビット数のキャリ演算用プロセッサエレメント１２１は、エクストラデータネットワーク１２２内のセレクタ１００２によりいずれかが選択され、選択されたものの累積加算データが出力される。プロセッサエレメント１１１が出力するキャリデータＣＡ及び複数のキャリ演算用プロセッサエレメント１２１が出力するキャリデータＣＡは、キャリネットワーク１２０を介して、他のビット精度のキャリネットワーク１００４に接続される。キャリネットワーク１００４にも、複数のキャリ演算用プロセッサエレメント１２１が接続される。
【００４２】
図１１は、複数のキャリネットワークに接続されたキャリ演算用プロセッサエレメントの構成例を示す図である。キャリネットワーク１２０は、２ビットキャリネットワーク１２０ａ、４ビットキャリネットワーク１２０ｂ及び８ビットキャリネットワーク１２０ｃに分割される。キャリネットワーク１２０ａ〜１２０ｃには、複数のプロセッサエレメント１１１が出力するキャリデータＣＡが供給される。８ビットのキャリ演算用プロセッサエレメント１２１ｃ、４ビットのキャリ演算用プロセッサエレメント１２１ｂ及び２ビットのキャリ演算用プロセッサエレメント１２１ａを１組とし、例えば４個のプロセッサエレメント１１１に対応して４組のキャリ演算用プロセッサエレメント１２１ａ〜１２１ｃを接続する例を示す。
【００４３】
４個の８ビットキャリ演算用プロセッサエレメント１２１ｃは、８ビットキャリネットワーク１２０ｃから各組のプロセッサエレメント１１１が出力するキャリデータＣＡを入力して累積加算し、８ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡを８ビットキャリネットワーク１２０ｃに出力する。
【００４４】
４個のセレクタ１１０１ｂは、それぞれ８ビットキャリネットワーク１２０ｃを介して各組の８ビットキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡを入力し、４ビットキャリネットワーク１２０ｂを介して各組のプロセッサエレメント１１１が出力するキャリデータＣＡを入力し、いずれかを選択して４個の４ビットキャリ演算用プロセッサエレメント１２１ｂに出力する。４個の４ビットキャリ演算用プロセッサエレメント１２１ｂは、それぞれセレクタ１１０１ｂが出力するキャリデータＣＡを入力して累積加算し、４ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡを４ビットキャリネットワーク１２０ｂに出力する。
【００４５】
４個のセレクタ１１０１ａは、それぞれ８ビットキャリネットワーク１２０ｃを介して各組の８ビットキャリ演算用プロセッサエレメント１２１ｃが出力するキャリデータＣＡを入力し、４ビットキャリネットワーク１２０ｂを介して各組の４ビットキャリ演算用プロセッサエレメント１２１ｂが出力するキャリデータＣＡを入力し、２ビットキャリネットワーク１２０ａを介して各組のプロセッサエレメント１１１が出力するキャリデータＣＡを入力し、いずれかを選択して４個の２ビットキャリ演算用プロセッサエレメント１２１ａに出力する。４個の２ビットキャリ演算用プロセッサエレメント１２１ａは、それぞれセレクタ１１０１ａが出力するキャリデータＣＡを入力して累積加算し、２ビットの累積加算データをエクストラデータネットワーク１２２に出力し、１ビットのキャリデータＣＡを２ビットキャリネットワーク１２０ａに出力する。
【００４６】
以上のように、４個のプロセッサエレメント１１１に対応して４組のキャリ演算用プロセッサエレメント１２１ａ〜１２１ｃを設ける。これにより、４組のキャリ演算用プロセッサエレメント１２１ａ〜１２１ｃは、４個のプロセッサエレメント１１１のキャリデータＣＡを累積加算することができ、ビット精度を向上させることができる。
【００４７】
プロセッサエレメント１１１は、累積加算及び／又は積和演算を行うためにキャリデータが発生する。キャリ演算用プロセッサエレメント１２１ａ〜１２１ｃは、そのキャリデータを累積加算するので、演算のビット精度を向上させることができる。
【００４８】
また、キャリ演算用プロセッサエレメント１２１ａ〜１２１ｃは、累積加算器であり、図１４のプロセッサエレメント１４０２のように余分な乗算器１２０６及びレジスタ１２０２，１２０３，１２０７等を有さないので、無駄なリソースの発生を防止し、リソースの使用効率を向上させることができる。
【００４９】
１６／３２ビットアーキテクチャのリコンフィギャラブルＬＳＩにおいて、プロセッサエレメント１１１よりビット数を少なくしたキャリ演算用プロセッサエレメント１２１を用いる。キャリ演算用プロセッサエレメント１２１を複数のプロセッサエレメント１１１と接続できるようにする。２ビット／４ビット／８ビットのキャリ演算用プロセッサエレメント１２１の接続を切り換えることにより、種々の用途及びビット精度に対応することができる。プロセッサエレメント１１１の内部をＳＩＭＤ（Single Instruction Multiple Data）化することにより、さらに細かい精度で累積加算回路を実現することができる。また、キャリ演算用プロセッサエレメント１２１は、ビット数が少ないため、回路規模を小さくすることができる。また、キャリ演算用プロセッサエレメント１２１は、外部入力をキャリデータＣＡのみにすることにより、回路規模を小さいくし、レジスタ数を少なくすることができる。
【００５０】
なお、２個の２ビットキャリ演算用プロセッサエレメント１２１ａを用いて、４ビットのキャリ演算を行ってもよい。また、２ビットキャリ演算用プロセッサエレメント１２１ａ及び４ビットキャリ演算用プロセッサエレメント１２１ｂを用いて、６ビットのキャリ演算を行ってもよい。また、２個の４ビットキャリ演算用プロセッサエレメント１２１ｂを用いて、８ビットのキャリ演算を行ってもよい。また、１個の２ビットキャリ演算用プロセッサエレメント１２１ａ及び２個の４ビットキャリ演算用プロセッサエレメント１２１ｂを用いて、１０ビットのキャリ演算を行ってもよい。このような構成により、２ビット〜１６ビットのキャリ演算を行うことができる。
【００５１】
２ビットキャリ演算用プロセッサエレメント１２１ａのみで構成する場合は、複数個の２ビットキャリ演算用プロセッサエレメント１２１ａを組み合わせることにより、４ビット及び８ビット等の多ビットの構成を実現できる。
【００５２】
また、４ビットキャリ演算用プロセッサエレメント１２１ｂのみで構成する場合は、２又は３個の４ビットキャリ演算用プロセッサエレメント１２１ｂを組み合わせることにより、８ビット〜１２ビットの多ビットの構成を実現できる。
【００５３】
キャリ演算用プロセッサエレメント１２１の出力をエクストラデータネットワーク１２２に接続することにより、１６／３２ビット以上のデータを表現することができる。
【００５４】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【００５５】
【図１】本発明の実施形態によるリコンフィギャラブル回路を有する半導体集積回路の構成例を示す図である。
【図２】図１のプロセッサエレメント及びキャリ演算用プロセッサエレメントの構成例を示す図である。
【図３】図２の複数のキャリ演算用プロセッサエレメントの構成例を示す図である。
【図４】６ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図５】７ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図６】１０ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図７】１１ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図８】１２ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図９】１３ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図１０】キャリネットワーク及びエクストラデータネットワークの構成例を示す図である。
【図１１】複数のキャリネットワークに接続されたキャリ演算用プロセッサエレメントの構成例を示す図である。
【図１２】２段パイプラインのプロセッサエレメントの構成例を示す図である。
【図１３】２個のプロセッサエレメントを用いたリコンフィギャラブル回路の構成例を示す図である。
【図１４】２個のプロセッサエレメントを用いてビット精度を向上させるリコンフィギャラブル回路の構成例を示す図である。
【符号の説明】
【００５６】
１０１  ＣＰＵ
１０２  ＣＰＵバス
１０３  リコンフィギャラブル回路
１１１  プロセッサエレメント
１１２  データネットワーク
１１３  セレクタ
１２０  キャリネットワーク
１２１  キャリ演算用プロセッサエレメント
１２２  エクストラデータネットワーク
１２３  セレクタ
【図１】
0005115307.tif 000002
【図２】
0005115307.tif 000003
【図３】
0005115307.tif 000004
【図４】
0005115307.tif 000005
【図５】
0005115307.tif 000006
【図６】
0005115307.tif 000007
【図７】
0005115307.tif 000008
【図８】
0005115307.tif 000009
【図９】
0005115307.tif 000010
【図１０】
0005115307.tif 000011
【図１１】
0005115307.tif 000012
【図１２】
0005115307.tif 000013
【図１３】
0005115307.tif 000014
【図１４】
0005115307.tif 000015