説明

半導体集積回路

【課題】累積加算又は積和演算等を行う場合にビット精度を向上させ、無駄なリソースの発生を防止することができる半導体集積回路を提供することを課題とする。
【解決手段】第1のビット幅のデータを入力し演算を行う複数の再構成可能な第1の論理ブロック(111)と、前記複数の第1の論理ブロック間を動的再構成可能に接続する第1のネットワーク(112)と、前記第1のビット幅とは異なる第2のビット幅のデータを入力し演算を行う複数の第2の論理ブロック(121)と、前記複数の第2の論理ブロックの出力に接続される第2のネットワーク(122)と、前記第1の論理ブロックに含まれる演算器のキャリビット出力を、前記第2の論理ブロックに含まれる演算器の入力に動的再構成可能に接続する第3のネットワーク(120)とを有することを特徴とする半導体集積回路が提供される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路に関する。
【背景技術】
【0002】
リコンフィギャラブルLSI(大規模半導体集積回路)は、内部に非常に多くのプロセッサエレメント(PE)で構成され、それぞれのプロセッサエレメントはALU(算術論理演算ユニット)等の演算エレメントと後段の単純演算エレメントの複数段で構成されている。
【0003】
図12は、2段パイプラインのプロセッサエレメント1201の構成例を示す図である。レジスタ1202及び1203は、それぞれ16ビットの入力データを保持する。レジスタ1204は、所定のデータを保持する。セレクタ1205は、レジスタ1203又は1204に保持されているデータを選択して出力する。乗算器1206は、レジスタ1202に保持されているデータ及びセレクタ1205の出力データを乗算し、32ビットの乗算データを出力する。レジスタ1207は、乗算器1206の出力データを保持する。セレクタ1208は、レジスタ1204又は1210に保持されているデータを選択して出力する。ALU1209は、レジスタ1207に保持されているデータ及びセレクタ1208の出力データを基に演算し、32ビットの演算データを出力する。レジスタ1210は、ALU1209の出力データを保持し、外部に16ビット又は32ビットのデータを出力する。
【0004】
セレクタ1208がレジスタ1210に保持されているデータを選択し、ALU1209が加算を行うと、ALU1209は累積加算を行うことになる。その場合、ALU1209は累積加算によりオーバーフローしてしまい、ビット精度が低下してしまう。
【0005】
図13は、2個のプロセッサエレメント1201a及1201bを用いたリコンフィギャラブル回路の構成例を示す図である。プロセッサエレメント1201aは、図12のプロセッサエレメント1201の前段のレジスタ1202〜1204,1207、セレクタ1205及び乗算器1206を有し、データネットワーク1301に16ビットに正規化されたデータを出力する。プロセッサエレメント1201bは、図12のプロセッサエレメント1201の後段のセレクタ1208、ALU1209及びレジスタ1210を有し、さらにレジスタ1302〜1304を有し、データネットワーク1301を介してプロセッサエレメント1201aの出力データを入力する。この場合、プロセッサエレメント1201aは、16ビットに正規化されたデータをデータネットワーク1301に出力するため、データのビット精度が低下してしまう。
【0006】
以上のように、累積加算(ACC)及び積和演算(MAC)では、累積加減算を行うため、多くのビット数が必要になる。ビット数が少ない場合は演算毎に正規化を行い、累積誤差や厳密なビット精度の計算を必要とする。
【0007】
図14は、2個のプロセッサエレメント1401及び1402を用いてビット精度を向上させるリコンフィギャラブル回路の構成例を示す図である。プロセッサエレメント1401及び1402は、それぞれ図12のプロセッサエレメント1201と同様に、レジスタ1202,1203,1207,1210、乗算器1206及びALU1209を有する。プロセッサエレメント1401内のALU1209は、累積加算し、16ビット又は32ビットのデータをデータネットワーク1403に出力し、1ビットのキャリデータをプロセッサエレメント1402内のALU1209に出力する。プロセッサエレメント1402内のALU1209は、そのキャリデータ及びレジスタ1210に保持されているデータを加算し、16ビット又は32ビットのデータをデータネットワーク1403に出力する。これにより、ビット精度を向上させることができる。しかし、プロセッサエレメント1401の他に、キャリ演算のためのプロセッサエレメント1402を必要とするため、プロセッサエレメントの数が2倍になりリソースが無駄になる問題がある。
【0008】
また、下記の特許文献1には、演算器の入力部に入力レジスタを備えるとともに、前記演算器の出力部に出力レジスタを備える複数のプロセッサ・エレメントと、前記複数のプロセッサ・エレメント間を接続するバスと、前記バスの接続を変更するスイッチ部と、ソフトウェアに応じて前記スイッチ部を制御する制御回路とを有する信号処理プロセッサであって、前記プロセッサ・エレメントが連続して信号処理を行う第一の動作モードと、前記プロセッサ・エレメントによる信号処理と、前記プロセッサ・エレメントの前記出力レジスタから前記入力レジスタへのデータ転送処理とを交互に行い、前記プロセッサ・エレメントによる信号処理期間に、前記複数のプロセッサ・エレメント間の接続を変更する第二の動作モードとを有する信号処理プロセッサが記載されている。
【0009】
また、下記の特許文献2には、CSA(Carry Save Adder。キャリセーブ加算器)ツリーを有して固定小数点積和演算を行う積和演算器が記載されている。
【0010】
【特許文献1】特開2006−244519号公報
【特許文献2】特開平8−328828号公報
【発明の開示】
【発明が解決しようとする課題】
【0011】
累積加算又は積和演算を行うと、多くのビット数を必要とするため、ビット数の少ないプロセッサエレメントではビット精度が低下してしまう。また、ビット精度を向上させるために、複数のプロセッサエレメントを用いると、無駄なリソースが発生し、リソースの使用効率が低下する。
【0012】
本発明の目的は、累積加算又は積和演算等を行う場合にビット精度を向上させ、無駄なリソースの発生を防止することができる半導体集積回路を提供することである。
【課題を解決するための手段】
【0013】
本発明の一観点によれば、第1のビット幅のデータを入力し演算を行う複数の再構成可能な第1の論理ブロックと、前記複数の第1の論理ブロック間を動的再構成可能に接続する第1のネットワークと、前記第1のビット幅とは異なる第2のビット幅のデータを入力し演算を行う複数の第2の論理ブロックと、前記複数の第2の論理ブロックの出力に接続される第2のネットワークと、前記第1の論理ブロックに含まれる演算器のキャリビット出力を、前記第2の論理ブロックに含まれる演算器の入力に動的再構成可能に接続する第3のネットワークとを有することを特徴とする半導体集積回路が提供される。
【発明の効果】
【0014】
第1の論理ブロックで累積加算又は積和演算を行い、第2の論理ブロックでキャリ演算を行うことができる。これにより、ビット精度を向上させ、無駄なリソースの発生を防止し、リソースの使用効率を向上させることができる。
【発明を実施するための最良の形態】
【0015】
図1は、本発明の実施形態によるリコンフィギャラブル回路103を有する半導体集積回路の構成例を示す図である。半導体集積回路は、CPU(中央処理ユニット)101、CPUバス102及びリコンフィギャラブル回路103を有する。リコンフィギャラブル回路103は、複数のプロセッサエレメント(PE)111、データネットワーク112、セレクタ113、キャリネットワーク120、複数のキャリ演算用プロセッサエレメント121、エクストラデータネットワーク122、及びセレクタ123を有する。
【0016】
CPUバス102には、CPU101及びリコンフィギャラブル回路103が接続される。セレクタ113は、データネットワーク112が出力するデータを選択し、CPUバス113に出力する。セレクタ123は、エクストラデータネットワーク122が出力するデータを選択し、CPUバス102に出力する。CPU101は、CPUバス102を介して、セレクタ113及び123が選択してデータを入力する。
【0017】
図2は、図1のプロセッサエレメント111及びキャリ演算用プロセッサエレメント121の構成例を示す図である。プロセッサエレメント111は、第1のビット幅(16ビット又は32ビット)のデータを入力し演算を行う再構成可能な第1の論理ブロックであり、第1のビット幅のデータをデータネットワーク112に出力し、例えば1ビットのキャリデータCAをキャリネットワーク120に出力する。データネットワーク112は、複数のプロセッサエレメント111間を動的再構成可能に接続する第1のネットワークである。データネットワーク112は、例えばCPU101の制御により、複数のプロセッサエレメント111の出力と複数のプロセッサエレメント111の入力との間の接続を切り換えるスイッチ(セレクタ)を有する。キャリ演算用プロセッサエレメント121は、前記第1のビット幅とは異なる第2のビット幅(例えば1ビット)のキャリデータCAをキャリネットワーク120から入力し演算を行う。エクストラデータネットワーク122は、複数のキャリ演算用プロセッサエレメント121の出力に接続される第2のネットワークである。キャリネットワーク120は、プロセッサエレメント111に含まれる加算器(累積加算器又は演算器)205のキャリビットCAの出力を、キャリ演算用プロセッサエレメント121に含まれる加算器(累積加算器又は演算器)211の入力に動的再構成可能に接続する。プロセッサエレメント111、キャリ演算用プロセッサエレメント121、データネットワーク112、キャリネットワーク120及びエクストラデータネットワーク122は、例えばCPU101の制御により再構成可能である。
【0018】
プロセッサエレメント111は、レジスタ201,202,204,206、乗算器203及び加算器205を有する。加算器205及びレジスタ206は、累積加算器を構成する。レジスタ201及び202は、それぞれデータネットワーク112から第1のデータ幅(16ビット又は32ビット)のデータを入力して保持する。乗算器203は、レジスタ201及び202に保持されているデータ(例えば16ビット)を乗算し、乗算データ(例えば32ビット)を出力する。レジスタ204は、乗算器203の出力データを保持する。加算器205は、本来ALUであり、例えばCPU101の制御により加算器に再構成される。加算器205は、レジスタ204及び206に保持されているデータを加算し、加算データ(例えば32ビット)をレジスタ206及びデータネットワーク112に出力し、キャリデータ(例えば1ビット)CAをキャリネットワーク120に出力する。レジスタ206は、加算器205が出力する加算データを保持する。加算器205及びレジスタ206は、累積加算器を構成し、累積加算を行う。その結果、加算器205は、例えば32ビットの加算データの他に、キャリデータCAを出力する。プロセッサエレメント111は、以上のように、累積加算及び積和演算を行うため、キャリデータCAが発生する。
【0019】
キャリ演算用プロセッサエレメント121は、加算器211及びレジスタ212を有する累積加算器である。加算器211は、本来ALUであり、例えばCPU101の制御により加算器に再構成される。加算器211は、キャリネットワーク120から入力されるキャリデータCA及びレジスタ212に保持されているデータを加算し、2ビット、4ビット又は8ビットの加算データをレジスタ212及びエクストラデータネットワーク122に出力し、キャリデータ(例えば1ビット)CAをキャリネットワーク120に出力する。レジスタ212は、加算器211が出力する加算データを保持する。
【0020】
第1段のキャリ演算用プロセッサエレメント121は、プロセッサエレメント111が出力するキャリデータCAをキャリネットワーク120を介して入力し、そのキャリデータCAを累積加算する。第2段のキャリ演算用プロセッサエレメント121は、第1段のキャリ演算用プロセッサエレメント121が出力するキャリデータCAをキャリネットワーク120を介して入力し、そのキャリデータCAを累積加算する。同様に、第n段のキャリ演算用プロセッサエレメント121は、第n−1段のキャリ演算用プロセッサエレメント121が出力するキャリデータCAをキャリネットワーク120を介して入力し、そのキャリデータCAを累積加算する。
【0021】
図3は、図2の複数のキャリ演算用プロセッサエレメント121の構成例を示す図である。3個のキャリ演算用プロセッサエレメント121a、121b及び121cは、図2の3個のキャリ演算用プロセッサエレメント121に対応する。キャリ演算用プロセッサエレメント121aは、キャリネットワーク120からキャリデータ(例えば1ビット)CAを入力して累積加算し、2ビットの累積加算データをエクストラデータネットワーク122に出力し、キャリデータ(例えば1ビット)CAをキャリネットワーク120に出力する。キャリ演算用プロセッサエレメント121bは、キャリネットワーク120からキャリデータ(例えば1ビット)CAを入力して累積加算し、4ビットの累積加算データをエクストラデータネットワーク122に出力し、キャリデータ(例えば1ビット)CAをキャリネットワーク120に出力する。キャリ演算用プロセッサエレメント121cは、キャリネットワーク120からキャリデータ(例えば1ビット)CAを入力して累積加算し、8ビットの累積加算データをエクストラデータネットワーク122に出力し、キャリデータ(例えば1ビット)CAをキャリネットワーク120に出力する。
【0022】
キャリ演算用プロセッサエレメント121a〜121cの出力データのビット幅は、例えば2ビット、4ビット及び8ビットであり、プロセッサエレメント111の出力データ(例えば16ビット)のビット幅の1/8、1/4、又は半分である。
【0023】
以上のように、複数のキャリ演算用プロセッサエレメント121は、2ビットのキャリ演算用プロセッサエレメント121a、4ビットのキャリ演算用プロセッサエレメント121b及び8ビットのキャリ演算用プロセッサエレメント121cを有する。3個のキャリ演算用プロセッサエレメント121a〜121cの出力データを組み合わせることにより、1ビット〜15ビットのすべてのキャリ演算を行うことができる。キャリネットワーク120及びエクストラデータネットワーク122内の接続は、例えばCPU101により再構成可能である。以下、その詳細を説明する。
【0024】
(1ビットのキャリ演算)
プロセッサエレメント111に対して、1ビットのキャリ演算を行う場合には、プロセッサエレメント111内の加算器205が出力するキャリデータCAを用いればよい。
【0025】
(2ビットのキャリ演算)
プロセッサエレメント111に対して、2ビットのキャリ演算を行う場合には、2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データを用いればよい。その場合、2ビットのキャリ演算用プロセッサエレメント121aは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。
【0026】
(3ビットのキャリ演算)
プロセッサエレメント111に対して、3ビットのキャリ演算を行う場合には、2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データ及び1ビットキャリデータCAを用いればよい。その場合、2ビットのキャリ演算用プロセッサエレメント121aは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。
【0027】
(4ビットのキャリ演算)
プロセッサエレメント111に対して、4ビットのキャリ演算を行う場合には、4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データを用いればよい。その場合、4ビットのキャリ演算用プロセッサエレメント121bは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。
【0028】
(5ビットのキャリ演算)
プロセッサエレメント111に対して、5ビットのキャリ演算を行う場合には、4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データ及び1ビットキャリデータCAを用いればよい。その場合、4ビットのキャリ演算用プロセッサエレメント121bは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。
【0029】
(6ビットのキャリ演算)
図4は、6ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント121は、2ビットのキャリ演算用プロセッサエレメント121a及び4ビットのキャリ演算用プロセッサエレメント121bを有する。4ビットのキャリ演算用プロセッサエレメント121bは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、4ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAをキャリネットワーク120に出力する。2ビットのキャリ演算用プロセッサエレメント121aは、4ビットのキャリ演算用プロセッサエレメント121bが出力するキャリデータCAをキャリネットワーク120を介して入力して累積加算し、2ビットの累積加算データをエクストラデータネットワーク122に出力する。プロセッサエレメント111に対して、6ビットのキャリ演算を行う場合には、4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データ及び2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データを用いればよい。
【0030】
(7ビットのキャリ演算)
図5は、7ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント121は、2ビットのキャリ演算用プロセッサエレメント121a及び4ビットのキャリ演算用プロセッサエレメント121bを有する。4ビットのキャリ演算用プロセッサエレメント121bは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、4ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAをキャリネットワーク120に出力する。2ビットのキャリ演算用プロセッサエレメント121aは、4ビットのキャリ演算用プロセッサエレメント121bが出力するキャリデータCAをキャリネットワーク120を介して入力して累積加算し、2ビットの累積加算データ及び1ビットのキャリデータCAをエクストラデータネットワーク122に出力する。プロセッサエレメント111に対して、7ビットのキャリ演算を行う場合には、4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データ、並びに2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データ及び1ビットキャリデータCAを用いればよい。
【0031】
(8ビットのキャリ演算)
プロセッサエレメント111に対して、8ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データを用いればよい。その場合、8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。
【0032】
(9ビットのキャリ演算)
プロセッサエレメント111に対して、9ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ及び1ビットキャリデータCAを用いればよい。その場合、8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。
【0033】
(10ビットのキャリ演算)
図6は、10ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント121は、2ビットのキャリ演算用プロセッサエレメント121a及び8ビットのキャリ演算用プロセッサエレメント121cを有する。8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、8ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAをキャリネットワーク120に出力する。2ビットのキャリ演算用プロセッサエレメント121aは、8ビットのキャリ演算用プロセッサエレメント121cが出力するキャリデータCAをキャリネットワーク120を介して入力して累積加算し、2ビットの累積加算データをエクストラデータネットワーク122に出力する。プロセッサエレメント111に対して、10ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ及び2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データを用いればよい。
【0034】
(11ビットのキャリ演算)
図7は、11ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント121は、2ビットのキャリ演算用プロセッサエレメント121a及び8ビットのキャリ演算用プロセッサエレメント121cを有する。8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、8ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAをキャリネットワーク120に出力する。2ビットのキャリ演算用プロセッサエレメント121aは、8ビットのキャリ演算用プロセッサエレメント121cが出力するキャリデータCAをキャリネットワーク120を介して入力して累積加算し、2ビットの累積加算データ及び1ビットのキャリデータCAをエクストラデータネットワーク122に出力する。プロセッサエレメント111に対して、11ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ、並びに2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データ及び1ビットキャリデータCAを用いればよい。
【0035】
(12ビットのキャリ演算)
図8は、12ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント121は、4ビットのキャリ演算用プロセッサエレメント121b及び8ビットのキャリ演算用プロセッサエレメント121cを有する。8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、8ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAをキャリネットワーク120に出力する。4ビットのキャリ演算用プロセッサエレメント121bは、8ビットのキャリ演算用プロセッサエレメント121cが出力するキャリデータCAをキャリネットワーク120を介して入力して累積加算し、4ビットの累積加算データをエクストラデータネットワーク122に出力する。プロセッサエレメント111に対して、12ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ及び4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データを用いればよい。
【0036】
(13ビットのキャリ演算)
図9は、13ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。複数のキャリ演算用プロセッサエレメント121は、4ビットのキャリ演算用プロセッサエレメント121b及び8ビットのキャリ演算用プロセッサエレメント121cを有する。8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、8ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAをキャリネットワーク120に出力する。4ビットのキャリ演算用プロセッサエレメント121bは、8ビットのキャリ演算用プロセッサエレメント121cが出力するキャリデータCAをキャリネットワーク120を介して入力して累積加算し、4ビットの累積加算データ及び1ビットのキャリデータCAをエクストラデータネットワーク122に出力する。プロセッサエレメント111に対して、13ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ、並びに4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データ及び1ビットキャリデータCAを用いればよい。
【0037】
(14ビットのキャリ演算)
プロセッサエレメント111に対して、14ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ、4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データ、及び2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データを用いればよい。その場合、8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。4ビットのキャリ演算用プロセッサエレメント121bは、8ビットのキャリ演算用プロセッサエレメント121cが出力するキャリデータCAを入力して累積加算する。2ビットのキャリ演算用プロセッサエレメント121aは、4ビットのキャリ演算用プロセッサエレメント121bが出力するキャリデータCAを入力して累積加算する。
【0038】
(15ビットのキャリ演算)
プロセッサエレメント111に対して、15ビットのキャリ演算を行う場合には、8ビットのキャリ演算用プロセッサエレメント121cが出力する8ビット累積加算データ、4ビットのキャリ演算用プロセッサエレメント121bが出力する4ビット累積加算データ、並びに2ビットのキャリ演算用プロセッサエレメント121aが出力する2ビット累積加算データ及び1ビットキャリデータCAを用いればよい。その場合、8ビットのキャリ演算用プロセッサエレメント121cは、プロセッサエレメント111が出力するキャリデータCAを入力して累積加算する。4ビットのキャリ演算用プロセッサエレメント121bは、8ビットのキャリ演算用プロセッサエレメント121cが出力するキャリデータCAを入力して累積加算する。2ビットのキャリ演算用プロセッサエレメント121aは、4ビットのキャリ演算用プロセッサエレメント121bが出力するキャリデータCAを入力して累積加算する。
【0039】
図10は、キャリネットワーク120及びエクストラデータネットワーク122の構成例を示す図である。キャリネットワーク120は、複数のセレクタ1001を有する。複数のセレクタ1001は、それぞれプロセッサエレメント111が出力するキャリデータCA及び複数のキャリ演算用プロセッサエレメント121が出力するキャリデータCAの中からいずれかを選択し、複数のキャリ演算用プロセッサエレメント121に出力する。また、セレクタ1003は、プロセッサエレメント111が出力するキャリデータCA及び複数のキャリ演算用プロセッサエレメント121が出力するキャリデータCAの中からいずれかを選択し、他のキャリネットワーク1004に出力する。エクストラデータネットワーク122は、複数のセレクタ1002を有する。複数のセレクタ1002は、それぞれ複数のキャリ演算用プロセッサエレメント121が出力する累積加算データの中からいずれかを選択し、セレクタ123(図1)に出力する。セレクタ1001〜1003は、例えばCPU101により制御される。
【0040】
キャリネットワーク120は、複数のキャリ演算用プロセッサエレメント121のうちの1つのキャリ演算用プロセッサエレメント121に含まれる加算器(累積加算器又は演算器)211のキャリビット出力と、他のキャリ演算用プロセッサエレメント121に含まれる加算器(累積加算器又は演算器)211の入力とを接続する。エクストラデータネットワーク122は、複数のキャリ演算用プロセッサエレメント121の出力を選択して出力する。
【0041】
以上のように、プロセッサエレメント111及び複数のキャリ演算用プロセッサエレメント121は、キャリネットワーク120を介して接続される。同じビット数のキャリ演算用プロセッサエレメント121は、エクストラデータネットワーク122内のセレクタ1002によりいずれかが選択され、選択されたものの累積加算データが出力される。プロセッサエレメント111が出力するキャリデータCA及び複数のキャリ演算用プロセッサエレメント121が出力するキャリデータCAは、キャリネットワーク120を介して、他のビット精度のキャリネットワーク1004に接続される。キャリネットワーク1004にも、複数のキャリ演算用プロセッサエレメント121が接続される。
【0042】
図11は、複数のキャリネットワークに接続されたキャリ演算用プロセッサエレメントの構成例を示す図である。キャリネットワーク120は、2ビットキャリネットワーク120a、4ビットキャリネットワーク120b及び8ビットキャリネットワーク120cに分割される。キャリネットワーク120a〜120cには、複数のプロセッサエレメント111が出力するキャリデータCAが供給される。8ビットのキャリ演算用プロセッサエレメント121c、4ビットのキャリ演算用プロセッサエレメント121b及び2ビットのキャリ演算用プロセッサエレメント121aを1組とし、例えば4個のプロセッサエレメント111に対応して4組のキャリ演算用プロセッサエレメント121a〜121cを接続する例を示す。
【0043】
4個の8ビットキャリ演算用プロセッサエレメント121cは、8ビットキャリネットワーク120cから各組のプロセッサエレメント111が出力するキャリデータCAを入力して累積加算し、8ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAを8ビットキャリネットワーク120cに出力する。
【0044】
4個のセレクタ1101bは、それぞれ8ビットキャリネットワーク120cを介して各組の8ビットキャリ演算用プロセッサエレメント121cが出力するキャリデータCAを入力し、4ビットキャリネットワーク120bを介して各組のプロセッサエレメント111が出力するキャリデータCAを入力し、いずれかを選択して4個の4ビットキャリ演算用プロセッサエレメント121bに出力する。4個の4ビットキャリ演算用プロセッサエレメント121bは、それぞれセレクタ1101bが出力するキャリデータCAを入力して累積加算し、4ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAを4ビットキャリネットワーク120bに出力する。
【0045】
4個のセレクタ1101aは、それぞれ8ビットキャリネットワーク120cを介して各組の8ビットキャリ演算用プロセッサエレメント121cが出力するキャリデータCAを入力し、4ビットキャリネットワーク120bを介して各組の4ビットキャリ演算用プロセッサエレメント121bが出力するキャリデータCAを入力し、2ビットキャリネットワーク120aを介して各組のプロセッサエレメント111が出力するキャリデータCAを入力し、いずれかを選択して4個の2ビットキャリ演算用プロセッサエレメント121aに出力する。4個の2ビットキャリ演算用プロセッサエレメント121aは、それぞれセレクタ1101aが出力するキャリデータCAを入力して累積加算し、2ビットの累積加算データをエクストラデータネットワーク122に出力し、1ビットのキャリデータCAを2ビットキャリネットワーク120aに出力する。
【0046】
以上のように、4個のプロセッサエレメント111に対応して4組のキャリ演算用プロセッサエレメント121a〜121cを設ける。これにより、4組のキャリ演算用プロセッサエレメント121a〜121cは、4個のプロセッサエレメント111のキャリデータCAを累積加算することができ、ビット精度を向上させることができる。
【0047】
プロセッサエレメント111は、累積加算及び/又は積和演算を行うためにキャリデータが発生する。キャリ演算用プロセッサエレメント121a〜121cは、そのキャリデータを累積加算するので、演算のビット精度を向上させることができる。
【0048】
また、キャリ演算用プロセッサエレメント121a〜121cは、累積加算器であり、図14のプロセッサエレメント1402のように余分な乗算器1206及びレジスタ1202,1203,1207等を有さないので、無駄なリソースの発生を防止し、リソースの使用効率を向上させることができる。
【0049】
16/32ビットアーキテクチャのリコンフィギャラブルLSIにおいて、プロセッサエレメント111よりビット数を少なくしたキャリ演算用プロセッサエレメント121を用いる。キャリ演算用プロセッサエレメント121を複数のプロセッサエレメント111と接続できるようにする。2ビット/4ビット/8ビットのキャリ演算用プロセッサエレメント121の接続を切り換えることにより、種々の用途及びビット精度に対応することができる。プロセッサエレメント111の内部をSIMD(Single Instruction Multiple Data)化することにより、さらに細かい精度で累積加算回路を実現することができる。また、キャリ演算用プロセッサエレメント121は、ビット数が少ないため、回路規模を小さくすることができる。また、キャリ演算用プロセッサエレメント121は、外部入力をキャリデータCAのみにすることにより、回路規模を小さいくし、レジスタ数を少なくすることができる。
【0050】
なお、2個の2ビットキャリ演算用プロセッサエレメント121aを用いて、4ビットのキャリ演算を行ってもよい。また、2ビットキャリ演算用プロセッサエレメント121a及び4ビットキャリ演算用プロセッサエレメント121bを用いて、6ビットのキャリ演算を行ってもよい。また、2個の4ビットキャリ演算用プロセッサエレメント121bを用いて、8ビットのキャリ演算を行ってもよい。また、1個の2ビットキャリ演算用プロセッサエレメント121a及び2個の4ビットキャリ演算用プロセッサエレメント121bを用いて、10ビットのキャリ演算を行ってもよい。このような構成により、2ビット〜16ビットのキャリ演算を行うことができる。
【0051】
2ビットキャリ演算用プロセッサエレメント121aのみで構成する場合は、複数個の2ビットキャリ演算用プロセッサエレメント121aを組み合わせることにより、4ビット及び8ビット等の多ビットの構成を実現できる。
【0052】
また、4ビットキャリ演算用プロセッサエレメント121bのみで構成する場合は、2又は3個の4ビットキャリ演算用プロセッサエレメント121bを組み合わせることにより、8ビット〜12ビットの多ビットの構成を実現できる。
【0053】
キャリ演算用プロセッサエレメント121の出力をエクストラデータネットワーク122に接続することにより、16/32ビット以上のデータを表現することができる。
【0054】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【図面の簡単な説明】
【0055】
【図1】本発明の実施形態によるリコンフィギャラブル回路を有する半導体集積回路の構成例を示す図である。
【図2】図1のプロセッサエレメント及びキャリ演算用プロセッサエレメントの構成例を示す図である。
【図3】図2の複数のキャリ演算用プロセッサエレメントの構成例を示す図である。
【図4】6ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図5】7ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図6】10ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図7】11ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図8】12ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図9】13ビットのキャリ演算を行うためのキャリ演算用プロセッサエレメントの構成例を示す図である。
【図10】キャリネットワーク及びエクストラデータネットワークの構成例を示す図である。
【図11】複数のキャリネットワークに接続されたキャリ演算用プロセッサエレメントの構成例を示す図である。
【図12】2段パイプラインのプロセッサエレメントの構成例を示す図である。
【図13】2個のプロセッサエレメントを用いたリコンフィギャラブル回路の構成例を示す図である。
【図14】2個のプロセッサエレメントを用いてビット精度を向上させるリコンフィギャラブル回路の構成例を示す図である。
【符号の説明】
【0056】
101 CPU
102 CPUバス
103 リコンフィギャラブル回路
111 プロセッサエレメント
112 データネットワーク
113 セレクタ
120 キャリネットワーク
121 キャリ演算用プロセッサエレメント
122 エクストラデータネットワーク
123 セレクタ

【特許請求の範囲】
【請求項1】
第1のビット幅のデータを入力し演算を行う複数の再構成可能な第1の論理ブロックと、
前記複数の第1の論理ブロック間を動的再構成可能に接続する第1のネットワークと、
前記第1のビット幅とは異なる第2のビット幅のデータを入力し演算を行う複数の第2の論理ブロックと、
前記複数の第2の論理ブロックの出力に接続される第2のネットワークと、
前記第1の論理ブロックに含まれる演算器のキャリビット出力を、前記第2の論理ブロックに含まれる演算器の入力に動的再構成可能に接続する第3のネットワークと
を有することを特徴とする半導体集積回路。
【請求項2】
前記第3のネットワークは、前記複数の第2の論理ブロックのうちの1つの第2の論理ブロックに含まれる演算器のキャリビット出力と、他の第2の論理ブロックに含まれる演算器の入力とを接続することを特徴とする請求項1記載の半導体集積回路。
【請求項3】
前記第2の論理ブロックに含まれる演算器は、加算器であることを特徴とする請求項2記載の半導体集積回路。
【請求項4】
前記第2の論理ブロックの出力データのビット幅は、前記第1の論理ブロックの出力データのビット幅の半分、1/4、又は1/8であることを特徴とする請求項1乃至3のいずれか1項に記載の半導体集積回路。
【請求項5】
前記第1の論理ブロックに含まれる演算器は、累積加算器であることを特徴とする請求項1乃至4のいずれか1項に記載の半導体集積回路。
【請求項6】
前記第1のビット幅は、16ビット又は32ビットであることを特徴とする請求項1乃至5のいずれか1項に記載の半導体集積回路。
【請求項7】
前記第2のネットワークは、前記複数の第2の論理ブロックの出力を選択して出力することを特徴とする請求項1乃至6のいずれか1項に記載の半導体集積回路。
【請求項8】
前記第2のビット幅は、1ビットであることを特徴とする請求項1乃至7のいずれか1項に記載の半導体集積回路。
【請求項9】
前記第2の論理ブロックは、累積加算器であることを特徴とする請求項1乃至8のいずれか1項に記載の半導体集積回路。
【請求項10】
前記複数の第2の論理ブロックは、それぞれ2ビット、4ビット及び8ビットのデータを出力する第2の論理ブロックを有することを特徴とする請求項1乃至9のいずれか1項に記載の半導体集積回路。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2009−266021(P2009−266021A)
【公開日】平成21年11月12日(2009.11.12)
【国際特許分類】
【出願番号】特願2008−115945(P2008−115945)
【出願日】平成20年4月25日(2008.4.25)
【出願人】(308014341)富士通マイクロエレクトロニクス株式会社 (2,507)
【Fターム(参考)】