図1は,本実施の形態に関連するリコンフィグ可能な集積回路装置の概略構成図である。リコンフィグ可能(再構築可能)な集積回路装置R_LSIは,複数のプロセッサエレメントPEと,それらの入出力間を接続するプロセッサエレメント間ネットワークNWとを有する複数のリコンフィグレーションアレイR_ARRAYと,プロセッサエレメントPEにデータを入力しまたPEからデータを出力する入出力ポート10とを有する。
複数のプロセッサエレメントPEは,加算器,乗算器,比較器などの機能を有するALUや,遅延回路,カウンタ,セレクタなどの複数種類のプロセッサエレメントである。プロセッサエレメントPEは,コンフィグレーションデータに基づいて任意の状態に構築される。また,プロセッサエレメント間ネットワークNWは,コンフィグレーションデータに基づいて任意の接続状態に構築される。したがって,コンフィグレーションデータを設定することで,リコンフィグレーションアレイR_ARRAYは,複数のプロセッサエレメントを任意の状態に接続して,任意のデータ処理回路に再構築可能である。
図1中のリコンフィグレーションアレイR_ARRAY内には,ALU機能を有するプロセッサエレメントPE,乗算器MPYの機能を有するプロセッサエレメントPE,メモリRAMの機能を有するプロセッサエレメントPE,レジスタファイルRegFileの機能を有するプロセッサエレメントPEなどが含まれる。メモリプロセッサエレメントは,例えばテーブルデータなどを格納する。
リコンフィグ可能な集積回路装置R_LSIは,さらに,複数種類のコンフィグレーションデータを格納するコンフィグレーションデータメモリ14と,そのメモリ14から所定のコンフィグレーションデータを読み出してリコンフィグレーションアレイR_ARRAYに設定するリコンフィグ制御回路12とを有する。リコンフィグレーション制御回路12は,例えばメモリへのデータ読み出しとコンフィグレーションデータの設定を指示する命令コードを有するレジスタ群であり,割込信号や状態信号などのイベントに応答して,対応する命令コードを実行する。命令コードを実行することで,コンフィグレーションデータメモリ14から対応するコンフィグレーションデータを読み出し,リコンフィグレーションアレイR_ARRAYに設定する。
リコンフィグ可能な集積回路装置R_LSIは,フラッシュメモリなどの外部のメモリ1に格納されているコンフィグレーションデータを含む情報を読み出し,デコーダ18を介して,リコンフィグレーション制御回路12と,コンフィグレーションデータメモリ14と,プロセッサエレメントのうちレジスタファイルRegFile及びメモリRAMのいずれかに振り分けて格納する。
ここでは,ハードウエア記述言語の1つであるRTL言語により論理設計されたファイルが論理合成され,その論理合成により生成されたコンフィグレーションデータを含む情報RDが,チップ外部のメモリ1に格納される。そして,リコンフィグ可能な集積回路装置R_LSIでは,例えば電源投入時に,内蔵するローダ16が,その情報RDを外部メモリ1から読み出し,リコンフィグレーションアレイR_ARRAYまたはコンフィグレーションデータメモリ14にロードする。この初期ロード後に,ローダ16が,リコンフィグレーション制御回路12にレディー信号を出力すると,リコンフィグレーション制御回路12は,所定の命令コードを実行し,コンフィグレーションデータによりリコンフィグレーションアレイR_ARRAYを所定の処理回路に構築する。なお,リコンフィグ可能な集積回路装置R_LSIは,ローダ16によらず,CPUからBUS経由でコンフィギュレーションデータを入力することも可能である。初期設定が終了すると,リコンフィグレーションアレイ内に構築された処理回路は,入出力ポート10からの入力データを処理し,処理済みの出力データを入出力ポート10から出力する。
図2は,本実施の形態に関連するリコンフィグレーションアレイR_ARRAYの具体例を示す図である。プロセッサエレメントPE0〜PE3と,メモリプロセッサエレメントPE5と,それ以外のプロセッサエレメントPE4とは,プロセッサエレメント間ネットワークNW内のスイッチであるセレクタ21を介して接続可能に構成されている。各プロセッサエレメントPE0〜PE5は,コンフィグレーションデータCD0〜CD5に基づいて任意の構成に構築可能である。また,ネットワークNW内のセレクタ21(21a,21b,21c)も,コンフィグレーションデータCDsに基づいて任意の構成に構築可能である。
各プロセッサエレメントPEは,それぞれの演算処理を終了すると終了信号CS0〜CS3を出力する。この終了信号がイベントとしてリコンフィグレーション制御回路12に与えられ,適切なタイミングで次のコンフィグレーションデータCDがプロセッサエレメントPEに供給され,別の演算回路に構築される。
セレクタ21は,図中右下に一例として示されるとおり,コンフィグレーションデータCDを格納するレジスタ22と,レジスタ22のデータに応じて入力を選択するセレクタ回路23とを有する。さらに,セレクタ回路23の出力をクロックCKに同期してラッチするフリップフロップ24を有しても良い。また,ネットワークNWは,データの入力ポート10(IN)と出力ポート10(OUT)ともセレクタを介して所望の接続を可能にしている。
図3は,本実施の形態に関連するリコンフィグレーションアレイR_ARRAYの具体例を示す別の図である。図示されるとおり,プロセッサエレメントPEは,プロセッサエレメント間ネットワークNWからデータを入力し,演算部32がそれを処理し,出力部33からデータがネットワークNWに出力される。また,各プロセッサエレメントPEは,コンフィグレーションデータレジスタ30を有し,このレジスタ30にはコンフィグレーションデータメモリ14からコンフィグレーションデータCDを含む情報が設定され保持される。
そして,その情報に基づいて,プロセッサエレメントPE内の演算部32は所定の機能を演算回路に構築される。同様に,出力部33もその情報に基づいて構築される。さらに,メモリまたはレジスタファイルのプロセッサエレメントPEには,その情報が,テーブルデータまたはレジスタ値としてRAM/REGFile34に格納される。また,ネットワークNWもコンフィグレーションデータCDに基づいて任意の接続状態に構築される。
(実施の形態)
図4は,本実施の形態におけるプロセッサエレメントPEの配置例を示す図である。図示のように,複数のプロセッサエレメントPEが図1中のリコンフィグレーションアレイR_ARRAY内にアレイ状に配置される。なお,図4の破線は,省略されたプロセッサエレメントを示す。
図4に示した複数のプロセッサエレメントPE内に含まれ,互いに隣接する所定数のプロセッサエレメントPEを有するプロセッサエレメントの一群をローカル接続プロセッサ群と呼ぶ。ここでは,ローカル接続プロセッサ群の一部を符号LC1〜LC3で示す。図4の例では,所定数のプロセッサエレメントPEは9個(縦3個×横3個)であり,ローカル接続プロセッサ群内の中心のプロセッサエレメントPEの周囲の上下左右斜め方向の8カ所に隣接する8個のプロセッサエレメントPEが設けられる。このローカル接続プロセッサ群内のプロセッサエレメントPEは,後述するローカル接続ネットワークを介してそれぞれが接続可能である。
本実施の形態では,ローカル接続プロセッサ群内のプロセッサエレメント間を接続するローカル接続ネットワークとローカル接続プロセッサ群間を接続するグローバル接続ネットワークとを有するリコンフィグ可能な集積回路装置について説明する。このリコンフィグ可能な集積回路装置によれば,ネットワークリソースすなわち配線数を削減することができる。以下の例では,ローカル接続プロセッサ群LC1は,ローカル接続プロセッサ群LC2,LC3とグローバル接続ネットワークを介して接続される。ここでは,ローカル接続プロセッサ群LC1は,ローカル接続プロセッサ群LC2,LC3とプロセッサエレメントPEを共有しない。
図5は,ローカル接続プロセッサ群LC1〜LC3の接続方法の一例を説明する回路図である。図5にはn×nのマトリクス状配置の複数のプロセッサエレメントPEの接続が示されている。ローカル接続プロセッサ群LC1は,第1のプロセッサエレメントPE1_1と,プロセッサエレメントPE1_1の周りの8カ所に隣接する8個の第2のプロセッサエレメントPE0_0,PE0_1,PE0_2,PE1_0,PE1_2,P2_0,PE2_1,PE2_2とを有する。ローカル接続プロセッサ群LC1内に設けられたローカル接続ネットワークLN1a,LN1bは,プロセッサエレメントPE1_1の2つの入力にプロセッサエレメントPE1_1に隣接する8個のプロセッサエレメントPE0_0,PE0_1,PE0_2,PE1_0,PE1_2,P2_0,PE2_1,PE2_2の出力のいずれかを,コンフィグレーションデータCDに基づいて選択して供給する。
この供給のため,ローカル接続ネットワークLN1a,LN1bは,プロセッサエレメントPE1_1のそれぞれの入力端子,図示例では2つの入力端子に対応して設けられ,それに隣接する8個の第2のプロセッサエレメントPE0_0などの出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE1_1の2つの入力端子に供給するローカル接続用セレクタSEL1_1a,SEL1_1bを有する。この構成により,プロセッサエレメントPE1_1は,隣接する8つのプロセッサエレメントPEと接続することができる。
同じく,ローカル接続プロセッサ群LC2,LC3にも,ローカル接続ネットワークLN1a,LN1bと同様のローカル接続ネットワークがそれぞれ設けられている。
全てのプロセッサエレメントPEが,全てのプロセッサエレメントPEの出力をコンフィグレーションデータCDに基づき選択する入力セレクタを有していれば,いかなる接続も可能になる。しかし,それでは,ネットワーク配線数が膨大になる。そこで,本実施の形態では,限られた数,例えば9個のプロセッサエレメントPEからなるローカル接続プロセッサ群毎に,ローカル接続ネットワークLN1a,LN1bを設けて,離れたプロセッサエレメントPEとは,離間する他のローカル接続プロセッサ群内で複数のプロセッサエレメントPEから選択された信号をグローバル接続ネットワークにより接続する。このようなグローバル接続ネットワークを用いることで全体のネットワーク配線数を削減する。
ローカル接続プロセッサ群LC1とローカル接続プロセッサ群LC2とを接続するために設けられたグローバル接続ネットワークGN1は,第2のローカル接続プロセッサ群LC2内の複数のプロセッサエレメントPE0_l,PE0_m,PE0_n,PE1_l,PE1_n,PE2_l,PE2_m,PE2_nの出力のいずれかをコンフィグレーションデータCDに基づいて選択して,ローカル接続ネットワークLN1a,LN1bに供給する。なお,l(エル)は3以上の整数で,mはl+1,nはl+2,図4の例ではmは例えば30であるとする。
ローカル接続プロセッサ群LC2からローカル接続プロセッサ群LC1に信号を供給するため,グローバル接続ネットワークGN1は,ローカル接続プロセッサ群LC2内の複数のプロセッサエレメントPE0_lなどの出力のいずれかを,コンフィグレーションデータCDに基づいて選択するグローバル接続用セレクタSEL1_mgを有する。グローバル接続用セレクタSEL1_mgの入力端子には,ローカル接続プロセッサ群LC2内のプロセッサエレメント1_mに隣接する8個のプロセッサエレメントPE0_lなどの出力が入力される。さらに,グローバル接続ネットワークGN1は,グローバル接続用セレクタSEL1_mgの出力とローカル接続用セレクタSEL1_1a,SEL1_1bの入力端子とを接続するグローバル接続配線Lg1を有する。
同じく,ローカル接続プロセッサ群LC3からローカル接続プロセッサ群LC1に信号を供給するため,グローバル接続ネットワークGN2もローカル接続プロセッサ群LC3内の8個のプロセッサエレメントPEの出力を接続するグローバル接続用セレクタSELm_1gと,グローバル接続用セレクタSELm_1gの出力とローカル接続プロセッサ群LC1内のローカル接続用セレクタSEL1_1a,SEL1_1bの入力端子とを接続するグローバル接続配線Lg2とを有する。
すなわち,ローカル接続プロセッサ群LC1内のローカル接続用セレクタSEL1_1a,SEL1_1bの入力には,ローカル接続プロセッサ群LC1内の8個の第2のプロセッサエレメントPE0_0などの出力に加えて,離間した他のローカル接続プロセッサ群LC2,LC3内の8個のプロセッサエレメントPEの出力(グローバル接続ネットワークGN1,GN2)が,グローバル接続配線Lg1,Lg2を介して接続される。そして,ローカル接続プロセッサ群LC1内のローカル接続用セレクタSEL1_1a,SEL1_1bは,ローカル接続プロセッサ群LC1内のプロセッサエレメントPE0_0などの出力と,他のローカル接続プロセッサ群LC2,LC3からのグローバル接続ネットワークGN1,GN2(グローバル接続用セレクタSEL1_mg,SEL1mg_2)の出力とのうちいずれかをコンフィグレーションデータCDに基づいて選択し,プロセッサエレメントPE1_1の入力端子に供給する。
なお,複数のグローバル接続ネットワークGN1,GN2でなくても,1つのグローバル接続ネットワークGN1がローカル接続用セレクタSEL1_1a,SEL1_1bの入力に接続されてもよい。
図6は,ローカル接続ネットワークLN1とグローバル接続ネットワークGN1とを示した図である。この例では,ローカル接続用セレクタSEL1_1aには,ローカル接続プロセッサ群LC1内の8個のプロセッサエレメントPEの出力と,ローカル接続プロセッサ群LC2内の8個のプロセッサエレメントPEの出力から選択されたグローバル接続配線Lg1の出力とが入力されている。
図7は,ローカル接続プロセッサ群LC1〜LC3の接続方法の他の例を説明する回路図である。図7では,グローバル接続用セレクタを設けずにグローバル接続ネットワークを構成する例について説明する。
グローバル接続ネットワークGN11は,ローカル接続プロセッサ群LC2内の第1のプロセッサエレメントPE1_mの出力とローカル接続プロセッサ群LC1内のプロセッサエレメントPE1_1に設けられたローカル接続用セレクタSEL1_1a,SEL1_1bの入力端子とを接続するグローバル接続配線Lg11を有する。
このようにグローバル接続配線Lg11を接続することで,ローカル接続プロセッサ群LC2内のローカル接続用セレクタSEL1_ma,SEL1_mb,プロセッサエレメントPE1_mをグローバル接続用セレクタSEL1_mgとして機能させることができる。このとき,ローカル接続プロセッサ群LC2内のプロセッサエレメントPE1_mは,その内部に設けられた演算器の出力とプロセッサエレメントPE1_mの入力のいずれかをコンフィグレーションデータCDに基づいて選択して出力端子に出力する出力セレクタを内部に設けることが好ましい。この構成により,プロセッサエレメントによる遅延が小さくなる。
同様に,ローカル接続プロセッサ群LC3のグローバル接続ネットワークGN12は,ローカル接続プロセッサ群LC3内のプロセッサエレメントPEm_1の出力とローカル接続プロセッサ群LC1内のローカル接続用セレクタSEL1_1a,SEL1_1bの入力端子とを接続するグローバル接続配線Lg12を有する。
すなわち,ローカル接続プロセッサ群LC1内のローカル接続用セレクタSEL1_1a,SEL1_1bの入力には,ローカル接続プロセッサ群LC1内の8個の第2のプロセッサエレメントPE0_0などの出力に加えて,離間した他のローカル接続プロセッサ群LC2,LC3内の8個のプロセッサエレメントPEの出力が,複数のグローバル接続ネットワークGN1,GN2のグローバル接続配線Lg11,Lg12を介して接続される。
ローカル接続プロセッサ群LC1内のローカル接続用セレクタSEL1_1a,SEL1_1bは,ローカル接続プロセッサ群LC1内のプロセッサエレメントPE0_0などの出力と,他のローカル接続プロセッサ群LC2,LC3からのグローバル接続ネットワークGN11,GN12(プロセッサエレメントPE1_m,PEm_1)の出力とのうちいずれかをコンフィグレーションデータCDに基づいて選択し,プロセッサエレメントPE1_1の入力端子に供給する。
図8は,ローカル接続ネットワークLN1とグローバル接続配線Lg11,Lg12とを示した図である。この例では,ローカル接続用セレクタSEL1_1aには,ローカル接続プロセッサ群LC1内の8個のプロセッサエレメントPEの出力と,図7に示したローカル接続プロセッサ群LC2内のプロセッサエレメントPE1_mのグローバル接続配線Lg11と,同ローカル接続プロセッサ群LC3内のプロセッサエレメントPEm_1のグローバル接続配線Lg12とが入力されている。
本実施の形態によれば,グローバル接続ネットワークを利用してローカル接続プロセッサ群を接続しているので配線数を削減することができる。ローカル接続プロセッサ群LC1内のプロセッサエレメントPE1_1とローカル接続プロセッサ群LC2の8つのプロセッサエレメントPEとをグローバル接続ネットワークを利用せずに接続をする場合,8本の配線が必要になる。しかし,グローバル接続ネットワークを利用すれば,1本の配線で済み,配線数を大幅に削減できる。このように,少ない配線数で多数のプロセッサエレメントPEを接続することで,図5,図7の例では,プロセッサエレメントPE1_1は,8×3個のプロセッサエレメントPEと接続することができ,接続性が大きく向上する。また,専用のグローバル接続ネットワークを利用して接続するので,信号の送受信における遅延時間を大幅に短縮できる。
また,複数のプロセッサエレメントPEを用いて論理回路を構成する際に,複数のプロセッサエレメントPEをローカル接続ネットワークにより局所的に集中して接続させることができるので,ネットワークリソースが不足することがない。一方で,接続頻度が大きくないローカル接続プロセッサ群は,グローバル接続配線を介して接続されるので配置配線の密集を防ぐことができる。
図9〜図11は,グローバル接続ネットワークの具体例を説明する回路図である。図9〜図11は,図6で説明したグローバル接続ネットワークに対応する。
図9は,図6に示したグローバル接続ネットワークのプロセッサエレメントPE0_30,PE0_31,PE0_32,PE1_30,PE1_32,PE2_30,PE2_31,PE2_32を即値用のレジスタREG0〜REG7に置き換えた回路図である。即値用のレジスタについては,出力遅延を考慮する必要性が低いので,レジスタREG0などをグローバル接続ネットワークを利用してプロセッサエレメントPE1_1に接続する。
図10は,図9に示したプロセッサエレメントPE2_2をレジスタ機能を有するプロセッサエレメントREG0に置き換えた回路図である。レジスタREG0の出力遅延を少なくするため,レジスタREG0をローカル接続ネットワークを利用してプロセッサエレメントPE1_1に接続している。
図11は,図10の構成にREG0の出力とSEL1_mgの出力とをコンフィグレーションデータCDに基づいて選択しSEL1_1aに供給するセレクタSELrを追加したものである。
このように,タイミングがクリティカルな処理を実行するプロセッサエレメントPEをプロセッサエレメントPE1_1とローカル接続ネットワークを利用して接続し,タイミングがクリティカルでない処理を実行するプロセッサエレメントPEをプロセッサエレメントPE1_1とグローバル接続ネットワークを利用して接続することで,柔軟性のあるネットワーク接続を構築することができる。
図12は,ローカル接続プロセッサ群間の配置,および接続関係について説明する図である。複数のプロセッサエレメントPEが縦20個,横20個アレイ状に配置され,これら複数のプロセッサエレメント内に,ローカル接続プロセッサ群が含まれているとする。
ここで,縦5個,横5個のプロセッサエレメントPEを含む領域を領域A1と呼ぶ。この領域A1内にローカル接続プロセッサ群が含まれている。ローカル接続プロセッサ群は,ローカル接続プロセッサ群LC21のように縦3個,横3個のプロセッサエレメントPEを有していてもよいし,ローカル接続プロセッサ群LC22のように縦4個,横4個のプロセッサエレメントPEを有していてもよい。また,縦のプロセッサエレメントPEの個数,横のプロセッサエレメントPEの個数が異なっていてもよい。
ローカル接続プロセッサ群の一つである例えばローカル接続プロセッサ群LC21は,ローカル接続プロセッサ群LC23とグローバル接続ネットワークを利用して接続できる。また,ローカル接続プロセッサ群LC21は,1個以上のローカル接続プロセッサ群だけ離れたローカル接続プロセッサ群LC24,LC22,LC26,LC27,LC28とグローバル接続ネットワークを利用して接続できる。また,ローカル接続プロセッサ群は,他のローカル接続プロセッサ群と一部のプロセッサエレメントを共有してもよい。図12では,ローカル接続プロセッサ群LC21とローカル接続プロセッサ群LC29とが,一部のプロセッサエレメントPE21を共有している。
また,ローカル接続プロセッサ群LC21は,ローカル接続プロセッサ群LC24とグローバル接続ネットワークを利用して接続し第1のグローバル接続プロセッサを作る。同じように,ローカル接続プロセッサ群LC25は,ローカル接続プロセッサ群LC26とグローバル接続ネットワークを利用して接続し第2のグローバル接続プロセッサを作る。そして,ローカル接続プロセッサ群LC21は,ローカル接続プロセッサ群LC25とグローバル接続ネットワークを利用して接続し,第1,第2のグローバル接続プロセッサとをグローバル接続ネットワークを利用して接続してもよい。
図13は,ローカル接続プロセッサ群間の配置,および接続関係について説明する他の図である。図12では,領域A1は縦横5個のプロセッサエレメントPEを有していたが,図13では領域A2は,縦4個,横4個のプロセッサエレメントPEを有する。この領域A2内にローカル接続プロセッサ群が含まれている。
図13でも図12で説明したように,ローカル接続プロセッサ群LC31は,ローカル接続プロセッサ群LC32,LC33とグローバル接続ネットワークを利用して接続できる。また,ローカル接続プロセッサ群LC31は,1個以上のローカル接続プロセッサ群だけ離れたローカル接続プロセッサ群LC34とグローバル接続ネットワークを利用して接続できる。
このように,本実施の形態のリコンフィグ可能な集積回路装置は,複数のローカル接続プロセッサ群を任意に配置し,各ローカル接続プロセッサ群をグローバル接続ネットワークを介して接続できる。そのため,プロセッサエレメントPEのネットワーク接続を回路構成に合わせ柔軟に構成できる。
図14〜図22を用いて,ローカル接続プロセッサ群におけるローカル接続ネットワークを説明する。
図14は,ローカル接続ネットワークを説明する回路図である。ローカル接続用セレクタSEL1_1a,SEL1_1bの入力端子には,プロセッサエレメントPE1_1に隣接するプロセッサエレメントPE0_0,PE0_1,PE0_2,PE1_0,PE1_2,P2_0,PE2_1,PE2_2の出力信号線L0_0,L0_1,L0_2,L1_0,L1_2,L2_0,L2_1,L2_2が接続される。また,図6,図8で説明したように,グローバル接続配線Lg1などが接続される。図面の構成上,グローバル接続配線Lg2などの接続については省略している。
プロセッサエレメントPE1_1の入力端子にはセレクタSEL1_1aの出力信号線Ls1_1aとセレクタSEL1_1bの出力信号線Ls1_1bとが接続され,出力端子には出力信号線L1_1が接続される。出力信号線L1_1は,他の隣接プロセッサエレメントに設けられたローカル接続用セレクタの入力端子に接続される。
以上の構成により,ローカル接続用セレクタSEL1_1a,SEL1_1bは,隣接プロセッサエレメントPE0_0などの出力,グローバル接続用セレクタSEL1_mgなどの出力をコンフィグレーションデータCDに基づいて選択し,プロセッサエレメントPE1_1の入力端子に供給する。
図15は,ローカル接続ネットワークを説明する他の回路図である。ローカル接続プロセッサ群LC41のプロセッサエレメントPE1_2も,それに隣接する8つのプロセッサエレメントPE0_1,PE0_2,PE0_3,PE1_1,PE1_3,PE2_1,PE2_2,PE2_3の出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE1_2の入力端子に供給するローカル接続用セレクタSEL1_2a,SEL1_2bを有する。図面の構成上,グローバル接続配線Lg1などの接続については省略しているが,図5で説明したように,セレクタSEL1_1a,SEL1_1bの入力端子に接続される。
ローカル接続プロセッサ群LC1と他のローカル接続プロセッサ群LC41とは,一部のプロセッサエレメントPE0_1,PE0_2,PE1_1,PE1_2,PE2_1,PE2_2を共有する。このように,ローカル接続プロセッサ群を重ねて配置することにより,ローカル接続プロセッサ群の大きさを自在に変更できる。その結果,プロセッサエレメントPE間のネットワーク接続を柔軟に構築できる。
図16は,ローカル接続ネットワークを説明する他の回路図である。ローカル接続プロセッサ群LC42内のプロセッサエレメントPE2_1も,隣接するプロセッサエレメントPE1_0,PE1_1,PE1_2,PE2_0,PE2_2,PE3_0,PE3_1,PE3_2の出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE2_1の入力端子に供給するローカル接続用セレクタSEL2_1a,SEL2_1bを有する。図面の構成上,グローバル接続配線Lg1などの接続については省略しているが,図5で説明したように,セレクタSEL1_1a,SEL1_1bの入力端子に接続される。
図16でも,図15で説明したように,ローカル接続プロセッサ群LC1と他のローカル接続プロセッサ群LC41,LC42とは,一部のプロセッサエレメントPE1_1,PE1_2,PE2_1,PE2_2を共有する。
図17,図18は,ローカル接続ネットワークを説明する他の回路図である。図17,図18では,図1に示す入出力ポート10に接続するプロセッサエレメントPEのローカル接続について説明する。入出力ポート10に接続するプロセッサエレメントPEは,図4に示した外周部のプロセッサエレメントであるプロセッサエレメントPE0_0〜PE0_33,PE0_0〜PE33_0,PE0_33〜PE33_33,PE33_0〜PE33_33に該当する。
図17のプロセッサエレメントPE0_0は,4つのポート10(IN)の出力,さらに,隣接するプロセッサエレメントPE0_1,PE1_0,PE1_1の出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE0_0の入力端子に供給するローカル接続用セレクタSEL0_0a,SEL0_0bを有する。
図18のプロセッサエレメントPE0_1は,3つのポート10(IN)の出力,さらに,隣接するプロセッサエレメントPE0_0,PE0_2,PE1_0,PE1_1,PE1_2の出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE0_1の入力端子に供給するローカル接続用セレクタSEL0_1a,SEL0_1bを有する。
なお,プロセッサエレメントPE0_0,PE1_0,PE0_1,PE0_2の出力を出力ポートに接続することができる。
図19,図20は,ローカル接続ネットワークを説明する他の回路図である。図5などでは,プロセッサエレメントPEは,隣接する全てのプロセッサエレメントPEとローカル接続していたが,隣接する一部のプロセッサエレメントPEとローカル接続する例を説明する。
図19のプロセッサエレメントPE1_1に設けられたローカル接続用セレクタSEL1_1a,SEL1_1bは,プロセッサエレメントPE1_1の一部の隣接プロセッサエレメントPE0_0,PE0_2,PE1_0,PE1_2,PE2_0,PE2_2の出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE1_1の入力端子に供給する。プロセッサエレメントPE0_1,PE2_1の出力についてはプロセッサエレメントPE1_1の入力端子に供給されない。
図20のプロセッサエレメントPE1_1に設けられたローカル接続用セレクタSEL1_1a,SEL1_1bは,プロセッサエレメントPE1_1の隣接プロセッサエレメントPE0_0,PE0_1,PE0_2,PE2_0,PE2_1,PE2_2の出力のうちいずれかをコンフィグレーションデータCDに基づいて選択してプロセッサエレメントPE1_1の入力端子に供給する。プロセッサエレメントPE1_0,PE1_2の出力についてはプロセッサエレメントPE1_1の入力端子に供給されない。
図19,図20で説明したように,隣接する一部のプロセッサエレメントPEとローカル接続しないことで,ローカル接続用セレクタSEL1_1a,SEL1_1bは,空いた入力端子にグローバル接続配線を接続することができる。そのため,ローカル接続プロセッサ群LC1は,図12,図13で説明したように,複数のローカル接続プロセッサ群と接続することができる。
図21,図22は,ローカル接続ネットワークを説明する他の回路図である。図21,図22では,プロセッサエレメントPEの出力を自らの入力にフィードバックするプロセッサエレメントPEの接続について説明する。図21,図22に示すように,プロセッサエレメントPE1_1の出力信号配線L1_1をプロセッサエレメントPE1_1に設けられたローカル接続用セレクタSEL1_1a,SEL1_1bの入力端子に接続する。
このように出力をフィードバックすることで,例えば条件によっては出力値を保持(前値保持)するセレクタとしてプロセッサエレメントPE1_1を機能させることができる。
次に,プロセッサエレメントについて,図23〜図26を用いて説明する。プロセッサエレメントPEを単なる配線として使用できれば,ネットワーク接続用の配線数を減らすことができる。
図23は,プロセッサエレメントの回路図の一例である。プロセッサエレメントPE50は,入力信号INaと,入力信号INbとに所定の演算処理を実行する演算器50aと,演算器50aの後段に設けられ,演算器50の出力を保持し出力するレジスタREGoとを有する。
出力段に設けられたレジスタREGoは,リコンフィグ可能な集積回路装置がパイプライン・並列処理に適した回路構造で大量の演算処理やデータ処理を実行するために設けられたリタイミング用のレジスタである。なお,入力段に設けられたレジスタREGa,REGbもリタイミング用のレジスタであるが必ずしも必要なレジスタではない。
プロセッサエレメントPE50は,このようなリタイミング用のレジスタを介して出力信号を出力する。そのため,信号が入力されてからこの信号が出力されるまでに1サイクル以上の時間がかかり,このようなプロセッサエレメントを配線として使用すると遅延が生じる。すなわち,このようなプロセッサエレメントPEを配線として使用すると,プロセッサエレメントPEを信号が通過する度に1サイクル以上のレイテンシが生じる。
図24は,本実施の形態のプロセッサエレメントの回路図である。プロセッサエレメントPE60は,プロセッサエレメントPE60の入力端子と演算器60aの出力とレジスタREGoの出力の何れかをコンフィグレーションデータCDに基づいて選択して出力端子に出力(OUT)する出力セレクタSELa,SELbを有する。
すなわち,第1の出力セレクタSELaは,プロセッサエレメントPE60の入力端子と,この入力端子に接続された演算器60aとのいずれかをコンフィグレーションデータCDに基づいて選択し,レジスタREGo,第2の出力セレクタSELbに供給する。レジスタREGoは,出力セレクタSELaの出力を保持する。第2の出力セレクタSELbは,レジスタREGoの出力と出力セレクタSELaの出力のいずれかをコンフィグレーションデータCDに基づいて選択しプロセッサエレメントPE60の出力端子に出力する。
この構成により,入力信号INaは配線L1により演算器60aを迂回(スルー)して出力セレクタSELaに入力する。そして,この入力信号INaは配線L2によりレジスタREGoを迂回して出力セレクタSELbに入力する。また,演算器60aの出力は配線L2によりレジスタREGoを迂回して出力セレクタSELbに入力する。
プロセッサエレメントPE60を配線として使用する場合,入力信号INaは,出力セレクタSELa,SELbのみを通過してプロセッサエレメントPE60を通過できるので,出力遅延を減らすことができる。
また,レジスタREGoによる出力遅延を無くす場合,演算器60aの出力信号はレジスタREGoをスルーして出力できるので,同じく,この出力信号の出力遅延を減らすことができる。
ここで,数Aと数Bと数Cとを加算し演算結果Xを出力する加算用演算回路をリコンフィグ可能な集積回路装置を利用して構築する。
図25は,図23のプロセッサエレメントPE50を利用して前記の加算用演算回路を構築した場合の回路図である。プロセッサエレメントPE51は,数Aと数Bとを加算(ADD)して演算結果をプロセッサエレメントPE53に出力する。
プロセッサエレメントDelay52は,プロセッサエレメントPE51の出力遅延に対応するために設けられた遅延調整用のプロセッサエレメントである。
プロセッサエレメントPE53は,プロセッサエレメントPE51の演算結果(数Aと数Bとの加算値)と数Cとを加算して演算結果Xを出力する。
図25では遅延調整用のプロセッサエレメントDelay52を設けている。そのため,設計者は,前記した数Aと数Bと数Cとを加算し演算結果Xを出力する命令をRTL言語で単純にX=A+B+Cと記述し,この命令をリコンフィグ可能な集積回路装置に実行させることができない。なぜなら,前述した遅延調整用の命令が記述されていないからである。
そこで,図24のプロセッサエレメントPE60を利用する。
図26は,図24のプロセッサエレメントPE60を利用して前記の加算用演算回路を構築した場合の回路図である。図26に示したように,図25のプロセッサエレメントPE51に替えてプロセッサエレメントPE61を設けている。プロセッサエレメントPE61は,図24のプロセッサエレメントPE60に対応するものであり,演算器60aによる加算結果が内部に設けられたレジスタ(図24のレジスタREGo)をスルーしてプロセッサエレメントPE53に入力される。また,図25に示した遅延調整用のプロセッサエレメントを無くし,数Cに対応する信号をプロセッサエレメントPE53に直接入力している。このような演算回路を構築できるのは,前記したように,演算器の加算結果がレジスタをスルーしてプロセッサエレメントPE53に入力されるので,このレジスタによる遅延が無くなり,遅延調整用のプロセッサエレメントPEが不要になるからである。
このように図24のプロセッサエレメントPE60を有するリコンフィグ可能な集積回路装置を使用すれば,設計者は,前記した命令をRTL言語で単純にX=A+B+Cと記述し,この命令をリコンフィグ可能な集積回路装置に実行させることができる。
図26のプロセッサエレメントPE61は,例えば,図4のプロセッサエレメントPE0_0に対応する。プロセッサエレメントPE0_0は,図17で説明したように2つ以上の入力端子を有するので,この2つの入力端子から数A,数Bに対応する信号を入力する。そして,図26のプロセッサエレメントPE53は,図4のプロセッサエレメントPE3_0に対応する。プロセッサエレメントPE3_0は,1つ以上の入力端子を有するので,この入力端子から数Cに対応する信号を入力する。他にも,図26のプロセッサエレメントPE53を例えばプロセッサエレメントPE3_1に対応させてもよい。このとき,プロセッサエレメントPE1_0,PE2_0を図24で説明したように,内部に設けられた演算器,レジスタをスルーする配線として利用すれば,前記した出力遅延が発生しない。
図27は,本実施の形態のリコンフィグ可能な集積回路装置におけるコンフィグレーションデータの作成工程を説明するフローチャート図である。はじめに,ツールを用いる作成工程について説明する。まず,設計者が回路構成,アルゴリズムを作成し,この回路構成,アルゴリズムをRTL言語で記述した回路記述ファイルを生成する。さらに,RTL言語による回路記述ファイルに加えて,設計者はライブラリ内の回路セルを組み合わせた回路記述ファイルを生成する。この回路記述ファイルは,論理回路のデータになる。
そして,設計者は,開発ツールを利用してこれらの回路記述ファイルをコンパイルする(S10)。このコンパイルにより論理合成が行われ,さらに,配置配線が行われる(S11)。この配置配線工程において,ネットワークの結線情報が決定される。開発ツールを利用する場合,開発ツールによりコンパイルは自動的に実行される(S12)。すると,開発ツールによりコンフィグレーションデータが作成される(S13)。このコンフィグレーションデータは,図1に示したフラッシュメモリ1に書き込まれる。
次に,手入力によるコンフィグレーションデータの作成工程について説明する。まず,設計者は,予め作成した回路構成,アルゴリズムに基づいて,データフローを構築する(S14)。次に,プロセッサエレメントPEへの命令のセットを行う(S15)。そして,設計者は,手動で配置配線を行い(S11,S16),コンフィグレーションデータを作成する(S13)。
このように,本実施の形態のリコンフィグ可能な集積回路装置は,主に,RTL言語で論理設計された回路記述ファイルを論理合成して得られるコンフィグレーションデータの情報により,任意の回路構成に構築可能になっている。
図28は,本実施の形態におけるリコンフィグ可能な集積回路装置の起動シーケンスを示すフローチャート図である。集積回路の電源がオンになると(S20),内蔵されるローダ16が,チップ外のフラッシュメモリ1の読み出し指示を行う(S21)。これにより,フラッシュメモリ1内のコンフィグレーションデータを含む情報の読み出しが開始する(S22)。集積回路内のデコーダ18は,フラッシュメモリ1から順次読み出されるコンフィグレーション情報を解釈して,リコンフィグレーション制御部12,コンフィグレーションデータメモリ14,メモリプロセッサエレメントRAM(PE),レジスタファイルのプロセッサエレメントRegFile(PE)などに分配し,インストールする(S23)。
上記のデータの書き込みが終了すると,例えばローダ16が,コンフィグレーションデータの設定を終了したことを示すレディー信号を,リコンフィグレーション制御部12に出力する。これにより,リコンフィグ可能な集積回路装置は動作可能状態になる(S24)。このレディー信号に応答して,リコンフィグレーション制御回路12は,コンフィグレーションデータメモリ14から最初のコンフィグレーションデータを読み出し,リコンフィグレーションアレイR_ARRAY内のプロセッサエレメントPEやネットワークNWにロードし,最初の処理回路を構築する。そして,構築された処理回路は,入力データに対して構築された機能の信号処理を行う(S25)。
図29は,RTL記述ファイルの一例である。100行は,CLKの立ち上がりエッジまたはRESETの立ち下がりエッジで動作し,101-103行は,!RESET=1ならLO,HIを0にリセットすることを示している。また,104-114行は,LO=9ならLO=0としそれ以外ではLO=LO+1とインクリメントし,LO=9になったとき,HI=5ならHI=0としそれ以外ではHI=HI+1とインクリメントすることを示している。つまり,下位桁0-9のカウンタLOと,上位桁0-5のカウンタHIとが示されている。
図30は,図29のRTL記述ファイルを実現する論理回路と,その論理回路をリコンフィグレーションアレイ群に構築した図である。コンパレータ81はLOが定数”4’h9”と等しいか否かを判定し,判定結果がYES=1であれば,セレクタ83がレジスタ82の定数”4’h0”を選択し,判定結果がNO=0であれば,セレクタ83が加算器85のLO+1を選択し,セレクタ84がCOUNTON=1の場合に新たなカウンタ値としてセレクタ83の出力を選択し,COUNTON=0の時に出力LOを保持することを示している。以上の構成が下位側のカウンタである。
さらに,レジスタ86,コンパレータ87,レジスタ88,セレクタ89,加算器90,セレクタ92は,上記の下位側のカウンタと同様の構成である。そして,セレクタ91がLO=4の時にセレクタ89の出力を選択し,LO=4以外の時は出力を保持し出力に変更を加えないことを示している。これらの構成が上位側のカウンタである。
図31は,図30に示した論理回路のプロセッサエレメントを,本実施の形態におけるローカル接続ネットワークとグローバル接続ネットワークを利用して接続した一例を示す図である。図30の符号(80〜92)で示したプロセッサエレメントと,図31の符号(80〜92)で示したプロセッサエレメントPEは同じである。
プロセッサエレメントPE2_1を中心とする左側のプロセッサエレメントPE群が,図30のLOカウンタに対応し,プロセッサエレメントPE2_31を中心とする右側のプロセッサエレメントPE群が,図30のHIカウンタに対応する。
そして,プロセッサエレメントPE2_1と,プロセッサエレメントPE2_1を中心とする8つのプロセッサエレメントPE1_0,PE1_1,PE1_2,PE2_0,PE2_2,PE3_0,PE3_1,PE3_2がローカル接続プロセッサ群を構成し,さらに,プロセッサエレメントPE2_31と,プロセッサエレメントPE2_31を中心とする8つのプロセッサエレメントPE1_30,PE1_31,PE1_32,PE2_30,PE2_32,PE3_30,PE3_31,PE3_32がローカル接続プロセッサ群を構成しているとする。
なお,図中,ローカル接続用セレクタについては図示を省略しているが各プロセッサエレメントPEにそれぞれ設けられている。
図31において,プロセッサエレメントPE1_3とプロセッサエレメントPE1_30は,図7,図8で説明したように,グローバル接続配線Lg21により接続され,プロセッサエレメントPE3_1とプロセッサエレメントPE2_31は,図7,図8で説明したように,グローバル接続配線Lg22により接続されている。
信号COUNTONは,プロセッサエレメントPE0_3,PE1_3を通過(スルー)してプロセッサエレメントPE2_2に供給される。また,信号COUNTONは,グローバル接続配線Lg21を介してプロセッサエレメントPE1_30に供給され,さらに,プロセッサエレメントPE1_30を通過してプロセッサエレメントPE2_30に供給される。
プロセッサエレメントPE2_2の出力は,プロセッサエレメントPE1_2,PE0_2を通過して出力(LO)される。プロセッサエレメントPE2_30の出力は,プロセッサエレメントPE1_31,PE0_31を通過して出力(HI)される。プロセッサエレメントPE0_3,PE1_3,PE1_2,PE1_30,PE1_31は,図24で説明したように,配線として機能するプロセッサエレメントであり,内部のレジスタ,演算器をスルーして,信号を出力する。
なお,COUNTON信号は1ビットの信号である。そのため,この信号を通過するプロセッサエレメントPE0_3,PE1_3,PE1_30は,1ビット信号用の配線を有する構成としている。
図32は,図31の密結合するプロセッサエレメントPE2_1,PE2_2について説明する図である。ここでは,密結合するプロセッサエレメントPEは,セレクタとして機能しているので,プロセッサエレメントPE2_1,PE2_2の密結合をSEL連結と呼ぶ。
信号線Ls2_1a,Ls2_1bは,図14の出力信号線Ls1_1a,Ls1_1bに相当し,信号線Ls2_1a,Ls2_1bの上側にそれぞれローカル接続用セレクタが設けられている。同じく,信号線Ls2_2a,Ls2_2bの上側にそれぞれローカル接続用セレクタが設けられている。
SLE連結するプロセッサエレメントPE2_1,PE2_2の間に設けられた密結合用のセレクタSELc1,SELc2は,プロセッサエレメントPE2_1の出力を,プロセッサエレメントPEPE2_2の入力に供給する。セレクタSLEc1は,プロセッサエレメントPE2_2に,プロセッサエレメントPE2_1の出力,信号線Ls2_2aの出力のいずれかをコンフィグレーションデータCDに基づいて選択して供給する。また,セレクタSLEc2は,プロセッサエレメントPE2_2に,プロセッサエレメントPE2_1の出力,信号線Ls2_2bの出力のいずれかをコンフィグレーションデータCDに基づいて選択して供給する。なお,図31のプロセッサエレメントPE2_30,PE2_31も同様にSEL連結している。
使用頻度の高いプロセッサエレメントPEを密結合用のセレクタを利用して接続することで,配線遅延を最小限にすることができる。また,プロセッサエレメントPEを密結合させることで,階層の深いif-else文やcase文,組み合わせ論理を効率よく実装できる。特に,プロセッサエレメントの密結合は,セレクタ用,減算用のプロセッサエレメントを構成する際に好適である。
以上説明した本実施の形態のリコンフィグ可能な集積回路装置によれば,プロセッサエレメント間のネットワーク接続を最適に構築することができる。
以上の実施の形態をまとめると,次の付記のとおりである。
(付記1)
コンフィグレーションデータに基づいて任意の演算状態に動的に構築されるリコンフィグ可能な集積回路装置であって,
アレイ状に配置され,それぞれが演算器を有する複数のプロセッサエレメントと,
前記複数のプロセッサエレメント内に含まれる複数のローカル接続プロセッサ群であって,互いに隣接する所定数のプロセッサエレメントを有する前記複数のローカル接続プロセッサ群内にそれぞれ設けられ,前記各ローカル接続プロセッサ群内の第1のプロセッサエレメントの入力に,前記第1のプロセッサエレメントに隣接する複数の第2のプロセッサエレメントの出力のいずれかを,前記コンフィグレーションデータに基づいて選択して供給する複数のローカル接続ネットワークと,
第1のローカル接続プロセッサ群内の前記第1のプロセッサエレメントの入力に,当該第1のローカル接続プロセッサ群とはプロセッサエレメントを共有しない第2のローカル接続プロセッサ群内の複数のプロセッサエレメントの出力のいずれかを,前記コンフィグレーションデータに基づいて選択して供給する複数のグローバル接続ネットワークとを有するリコンフィグ可能な集積回路装置。
(付記2)
付記1において,
前記第2のローカル接続プロセッサ群は,前記第1のローカル接続プロセッサ群と1個以上のローカル接続プロセッサ群だけ離れて位置するリコンフィグ可能な集積回路装置。
(付記3)
付記1において,
それぞれが前記ローカル接続ネットワークを有する複数のローカル接続プロセッサ群は,他のローカル接続プロセッサ群と一部のプロセッサエレメントを共有するリコンフィグ可能な集積回路装置。
(付記4)
付記1から3のいずれかにおいて,
前記ローカル接続プロセッサ群は,前記第1のプロセッサエレメントと,当該第1のプロセッサエレメントの周りの上下左右斜め方向の8カ所に隣接する8個の第2のプロセッサエレメントとを有し,前記ローカル接続ネットワークは,8個全てまたは一部の第2のプロセッサエレメントの出力のいずれかを選択するリコンフィグ可能な集積回路装置。
(付記5)
付記1から4のいずれかにおいて,
前記ローカル接続ネットワークは,前記第1のプロセッサエレメントのそれぞれの入力端子に対応して設けられ,前記第2のプロセッサエレメントの出力のうちいずれかを前記コンフィグレーションデータに基づいて選択して前記第1のプロセッサエレメントの入力端子に供給するローカル接続用セレクタを有するリコンフィグ可能な集積回路装置。
(付記6)
付記5において,
前記グローバル接続ネットワークは,前記第2のローカル接続プロセッサ群内の複数のプロセッサエレメントの出力のいずれかを,前記コンフィグレーションデータに基づいて選択するグローバル接続用セレクタと,前記グローバル接続用セレクタの出力と前記第1のローカル接続プロセッサ群内の第1のプロセッサエレメントに設けられた前記ローカル接続用セレクタの入力端子とを接続するグローバル接続配線とを有するリコンフィグ可能な集積回路装置。
(付記7)
付記5において,
前記グローバル接続ネットワークは,前記第2のローカル接続プロセッサ群内の第1のプロセッサエレメントの出力と前記第1のローカル接続プロセッサ群内の第1のプロセッサエレメントに設けられた前記ローカル接続用セレクタの入力端子とを接続するグローバル接続配線とを有するリコンフィグ可能な集積回路装置。
(付記8)
付記7において,
前記第1のプロセッサエレメントは,前記演算器の出力と前記入力端子のいずれかを前記コンフィグレーションデータに基づいて選択して出力端子に出力する出力セレクタを有するリコンフィグ可能な集積回路。
(付記9)
付記5において,
前記第1のローカル接続プロセッサ群内のローカル接続用セレクタの入力には,当該第1のローカル接続プロセッサ群内の第2のプロセッサエレメントの出力に加えて,前記第2のローカル接続プロセッサ群から供給されるグローバル接続ネットワークが接続されるリコンフィグ可能な集積回路装置。
(付記10)
付記5において,
前記第1のローカル接続プロセッサ群内のローカル接続用セレクタの入力には,当該第1のローカル接続プロセッサ群内の第2のプロセッサエレメントの出力に加えて,複数の前記第2のローカル接続プロセッサ群から供給される複数のグローバル接続ネットワークが接続されるリコンフィグ可能な集積回路装置。
(付記11)
付記1から4のいずれかにおいて,
前記第1のプロセッサエレメントは,さらに,前記演算器の後段に設けられ,前記演算器の出力を保持するレジスタと,前記第1のプロセッサエレメントの入力端子と前記演算器の出力と前記レジスタの出力の何れかを前記コンフィグレーションデータに基づいて選択して出力端子に出力する出力セレクタとを有するリコンフィグ可能な集積回路。
(付記12)
付記1から4のいずれかにおいて,
前記第1のプロセッサエレメントは,さらに,前記第1のプロセッサエレメントの入力端子と,当該入力端子に接続された前記演算器とのいずれかを前記コンフィグレーションデータに基づいて選択する第1の出力セレクタと,前記第1の出力セレクタの出力を保持するレジスタと,前記レジスタの出力と前記第1の出力セレクタの出力のいずれかを前記コンフィグレーションデータに基づいて選択し前記第1のプロセッサエレメントの出力端子に出力する第2の出力セレクタとを有するリコンフィグ可能な集積回路。