JP2008541636A - 粗バイアス異種再構成可能アレイ - Google Patents
粗バイアス異種再構成可能アレイ Download PDFInfo
- Publication number
- JP2008541636A JP2008541636A JP2008511608A JP2008511608A JP2008541636A JP 2008541636 A JP2008541636 A JP 2008541636A JP 2008511608 A JP2008511608 A JP 2008511608A JP 2008511608 A JP2008511608 A JP 2008511608A JP 2008541636 A JP2008541636 A JP 2008541636A
- Authority
- JP
- Japan
- Prior art keywords
- selector
- input
- output
- reconfigurable device
- network
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 claims abstract description 153
- 238000000034 method Methods 0.000 claims description 21
- 230000004044 response Effects 0.000 claims description 4
- 239000002131 composite material Substances 0.000 claims 4
- 230000006870 function Effects 0.000 description 34
- 238000003491 array Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 11
- 238000012546 transfer Methods 0.000 description 11
- 230000008901 benefit Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000006243 chemical reaction Methods 0.000 description 7
- 230000009286 beneficial effect Effects 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000000644 propagated effect Effects 0.000 description 5
- 239000000284 extract Substances 0.000 description 4
- 239000000203 mixture Substances 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 238000002789 length control Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 239000000872 buffer Substances 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000011112 process operation Methods 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- OFFWOVJBSQMVPI-RMLGOCCBSA-N Kaletra Chemical compound N1([C@@H](C(C)C)C(=O)N[C@H](C[C@H](O)[C@H](CC=2C=CC=CC=2)NC(=O)COC=2C(=CC=CC=2C)C)CC=2C=CC=CC=2)CCCNC1=O.N([C@@H](C(C)C)C(=O)N[C@H](C[C@H](O)[C@H](CC=1C=CC=CC=1)NC(=O)OCC=1SC=NC=1)CC=1C=CC=CC=1)C(=O)N(C)CC1=CSC(C(C)C)=N1 OFFWOVJBSQMVPI-RMLGOCCBSA-N 0.000 description 1
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 235000009508 confectionery Nutrition 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008054 signal transmission Effects 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/3001—Arithmetic instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3877—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
- G06F9/3879—Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3893—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
- G06F9/3895—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
- G06F9/3897—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K17/00—Electronic switching or gating, i.e. not by contact-making and –breaking
- H03K17/002—Switching arrangements with several input- or output terminals
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/1733—Controllable logic circuits
- H03K19/1737—Controllable logic circuits using multiplexers
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17736—Structural details of routing resources
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Logic Circuits (AREA)
- Multi Processors (AREA)
Abstract
異種アレイは、処理素子のクラスタを含む。クラスタは、直接接続と各種汎用ルーティングネットワークによってリンクされるALUとマルチプレクサの組み合わせを含む。マルチプレクサは、同じクラスタのALUまたは他のクラスタのALUによって制御され、専用ルーティングネットワークを介して制御される。アレイ上に構成されるアプリケーションの構成要素は、あるタイプまたは他のタイプの処理素子に構成要素を実装する相対的な効率性、および、処理素子タイプの相対的利用可能性によって決定されるように、マルチプレクサまたはALUのいずれかに選択的に実装される。マルチプレクサ制御信号は、ALUステータス信号の組み合わせから生成され、任意で、異なるクラスタ内のマルチプレクサを制御するように転送される。
Description
本発明は、再構成可能計算装置に関する。特に、本発明は、アプリケーションの複数の側面を実行することのできる複数の配列要素タイプを有する異種アレイに関する。
フィールドプログラマブルゲートアレイ(「FPGA」)、プロセッサアレイ、および再構成可能演算アレイ(「RAA」)などの再構成可能装置は通常、多数の処理素子と、それらを一緒に接続する相互接続構成とを含む。この相互接続は一般的に汎用ルーティングネットワークの形状を取るが、他のより限定的な形状の相互接続が採用される場合がある。相互接続は典型的には、1つまたは複数のタイプのルーティング素子を含む。
ルーティング素子は、ある処理素子から別の処理素子へと相互接続を横断する信号を転送するのに使用される装置である。ルーティング素子は、構成プロセスから直接的または間接的に得られ、実行時データに依存しない信号である構成信号によってのみ制御可能である。ルーティング素子の例は、通過トランジスタ、トライステートバッファ、および統計的に構成されるマルチプレクサ(すなわち、アレイの構成によって制御される選択入力を有するマルチプレクサ)などだが、ネットワークの構造にかかわらず、ネットワーク入力からネットワーク出力へデータを伝播するという機能は変わらない。
処理素子は1つまたは複数のデータ入力を有し、1つまたは複数のデータ出力を計算する。各データ出力は、1つまたは複数の入力値に依存することがある関数である。処理素子は、他の処理素子から受信したデータ信号、または構成信号、あるいはその両方によって制御可能である。処理素子の例は、加算器、乗算器、FPGAのようなルックアップテーブル(LUT)、およびデータ入力に接続可能な選択信号を有するマルチプレクサなどである。処理素子はレジスタを含むことができるので、出力はそれより先の時点の入力の一部または全部の値の関数である。
汎用ルーティングネットワークは、複数の入力端子と複数の出力端子(および、おそらくは入力端子または出力端子のいずれかとして構成可能な若干の双方向端子も可能)有し、任意の入力端子と任意の出力端子間の接続を形成するように構成することができる。汎用ルーティングネットワークは、同一のビット幅の値を保持する。構成される際、汎用ルーティングネットワークは複数の個々の接続を形成し、各接続はネットワーク入力を1つまたは複数のネットワーク出力に接続し、各ネットワーク出力は最大限で1つのネットワーク入力に接続される。汎用ルーティングネットワークは、任意の2つのネットワーク入力A、Cと任意の2つのネットワーク出力B、D間に任意の2つの接続(A→B)、(C→D)を同時に形成することができ、B≠Dである。これらの接続はレジスタ(そのため、ネットワーク入力とネットワーク出力間にいくらかの時間オフセットが生じる場合がある)と、データを送るのに使用されるスイッチとを通過することができる。汎用ルーティングネットワークのビット幅は、1ビットデータ線の数によって決定され、該データ線は汎用ルーティングネットワークのスイッチ内の構成メモリの各ビットによって制御される。よって、4ビット汎用ルーティングネットワークでは、構成メモリの各ビットは、4つの1ビットデータ線を制御する。したがって、データは、4ビット幅のワードとしてネットワークを横断して送信される。
再構成可能装置の設計は、処理素子と相互接続の特性を特定するプロセスである。いずれの素子にとっても、設計には、以下に述べるような一連の妥協が必要である。
処理素子の選択は、機能と、物理的サイズ、動作速度、電力損などの各種パラメータとの妥協である。例えば、機能を増やすと各素子のサイズは増大するが、アプリケーションを実行するのに必要な素子の総数を減らすことがある。素子の数の減少が各素子のサイズの増大よりも重要である場合にのみ機能を増やす価値があるため、アプリケーション領域が正味増大することはない。機能を増やすと他のパラメータに同様に影響を及ぼす。
上述したように、様々なタイプ(種類)の再構成可能装置がある。再構成可能装置にとっては様々なタイプのアプリケーションもある。様々なタイプの再構成可能装置は通常それぞれ、いくつかのタイプ(種類)のアプリケーションを他の装置よりも上手く実行する。したがって、再構成可能装置で使用される特定の処理素子の適合性評価は、装置が使用を目的とするアプリケーションのタイプに左右される。
一つにはアプリケーションスペースの分割のため(例えば、プロセッサアレイは通常、FPGAとは異なるタイプのアプリケーション用に使用される)、また一つには特徴すべての組み合わせはそのうちの1つのみの特徴よりも有効であるため、(例えば、乗算器または除算器をプロセッサに追加することは価値がないかもしれないが、ハードウェアを共有して両方を追加することは最終的に利益である)、サイズ/機能のスペースにはいくつかの「スイートスポット」がある。
相互接続も、機能と、物理的サイズ、動作速度、電力損などの各種パラメータとの妥協である。理想的な相互接続は、伝播の遅延がゼロであり、ルート間の干渉リスクがなく、物理領域がごくわずかである。このような理想は実際には存在しない。適当な妥協に達する際、以下のような各種素子の特性を検討することができる。
処理素子:
高速処理素子は、高速相互接続とともに完全に活用することができる。
処理素子によって処理されるデータと同じビット幅のデータを送ることが有益である。
アレイ:
可能な接続の数は、処理素子の数の自乗として増加する。したがって、接続間の干渉がないことを保証する相互接続の「1素子辺りのコスト」は、処理素子の数とともに増大する。このコストは小型のアレイにとっては手頃だが、大型のアレイではそうではない。
伝播遅延は、アレイのサイズを増大させる傾向がある。
アプリケーション:
再構成可能装置での使用のために書かれたアプリケーションが、最近接接続性のみを有する装置で実行可能に書かれている場合、相互接続は大幅に簡略化することができる。このような簡略化が可能でない場合、(上述したような)汎用ルーティングネットワークが相互接続の基本として通常使用され、ネットワークの端子が処理素子の端子である。
処理素子:
高速処理素子は、高速相互接続とともに完全に活用することができる。
処理素子によって処理されるデータと同じビット幅のデータを送ることが有益である。
アレイ:
可能な接続の数は、処理素子の数の自乗として増加する。したがって、接続間の干渉がないことを保証する相互接続の「1素子辺りのコスト」は、処理素子の数とともに増大する。このコストは小型のアレイにとっては手頃だが、大型のアレイではそうではない。
伝播遅延は、アレイのサイズを増大させる傾向がある。
アプリケーション:
再構成可能装置での使用のために書かれたアプリケーションが、最近接接続性のみを有する装置で実行可能に書かれている場合、相互接続は大幅に簡略化することができる。このような簡略化が可能でない場合、(上述したような)汎用ルーティングネットワークが相互接続の基本として通常使用され、ネットワークの端子が処理素子の端子である。
性能向上のため、再構成可能装置は、異種処理素子、階層ルーティングネットワーク、および/または異種相互接続などの追加素子も含むことができる。異種処理素子は、1つの装置上で2つ以上の異なるタイプの処理素子の組み合わせであって、その装置とは、例えば、
ルックアップテーブルベースの素子と専用乗算器ブロックの両方を有するFPGA、
ルックアップテーブルベースの素子および積項ベースの論理回路を有するFPGA、または
整数プロセッサと浮動小数点プロセッサの両方を含むプロセッサアレイ、
である。
ルックアップテーブルベースの素子と専用乗算器ブロックの両方を有するFPGA、
ルックアップテーブルベースの素子および積項ベースの論理回路を有するFPGA、または
整数プロセッサと浮動小数点プロセッサの両方を含むプロセッサアレイ、
である。
処理素子を組み合わせることは、様々な理由で、例えば、「機能性対コスト」という二律背反する問題を軽減するために行われる場合がある。ある特徴が素子上に別のタイプのブロックとして追加される場合、すべての処理素子ではなく、追加された特徴を含む処理素子のコストのみが増える。一見魅力的だが、このアプローチには、異なるタイプの処理素子の比率をどのようにすべきか、およびそれらを互いに対してどのように配置すべきかを判断するという大きな問題が1つある。例えば、素子タイプの細粒混合ABABAB...、あるいはアレイの行や列などの粗粒混合AAABBBAAABBBのいずれかにすべきである。より多くの異なるタイプの処理素子が再構成可能装置に組み込まれるほど、混合の分析が一層重要になる。
階層ルーティングネットワークスキームは通常、処理素子をグループに割り振り、グループ内で強固な接続を持たせ、グループ(およびグループのグループ間など)間にも追加の接続を持たせる。このモデルグループの拡張部は重なり合う場合がある。境界は、グループ間の接続以外に接続のない曖昧な壁である。例えば、グループの境界にある処理素子は、両グループのメンバーであってもよい。
異種相互接続構成では、利用可能な2つ以上のタイプの接続、例えば、低速だがより有能な汎用ルーティングネットワークを補完するために追加される高速だが限定的な追加の相互接続がある。
一般的な接続パターン、例えば、多くのFPGAにおける「キャリーワイヤ」をサポートするために、専用配線を追加することができる。
汎用ルーティングネットワークに加えて、専用の最近接接続があってもよい。
一般的な接続パターン、例えば、多くのFPGAにおける「キャリーワイヤ」をサポートするために、専用配線を追加することができる。
汎用ルーティングネットワークに加えて、専用の最近接接続があってもよい。
「異種」相互接続と「階層」相互接続間には重大な違いがある。階層ルーティングネットワークは、階層のあらゆるレベルに同タイプの接続を使用するが、接続の到達範囲はレベル毎に異なり、異種相互接続は異なるネットワークには異なるタイプの接続を使用する。なお、アレイが、異種および階層相互接続の両方を含むことができることに留意。
プロセッサは通常、条件付きおよび無条件の分岐および飛び越し、および/または命令の断定された実行を混合し、アプリケーション内の制御フローを管理する。再構成可能装置での計算を実行するためのアプリケーション固有のデータ経路を構成することによる演算としてここに定義される「再構成可能演算」は通常、制御フローを管理することを得意としない。
プロセッサアレイでは、個々のプロセッサは自身の命令フローを管理するのは得意だが、アレイ内の他のプロセッサにはほとんどか全く影響を及ぼさない。
FPGAベース再構成可能演算では、プログラムを通過するすべての経路は、頻繁に使用されなくてもハードウェアに実装する必要がある。プロセッサのランタイム演算の最大90%がコードの丁度10%に特定することができるとすれば、結果的にFPGAシリコン領域の大半があまり頻繁に使用されない演算専用になってしまう可能性があり、この例では領域の90%が時間の10%しか使用されず、残りの10%が時間の90%で使用される。
再構成可能演算(RAAなど)用に設計された他の装置では、FPGA状況で改善するための試みがなされている。RAAは命令入力を有する演算論理装置(「ALU」)を備えるため、ALUに提供される命令を変更することによってデータ経路の機能を動的に変更することができる。しかしながら、これは完璧な解決策ではない。
RAA ALUはビットではなくマルチビットワード(例えば、4ビットニブル)を処理し、入力ワードで実行する演算を選択するためのコンパクトな命令符号(再び4ビット)を有する。しかし、制御条件は、単独ビットで表す真/偽的な性質の判断になりがちである。例えば、
AとBの入力は等しいか?
入力Aは入力Bより大きいか?
入力のビット3は1に設定されるか?
AとBの入力は等しいか?
入力Aは入力Bより大きいか?
入力のビット3は1に設定されるか?
このような単独ビット条件(「条件1または条件2ならば、・・・」のようなステートメント)をnビットALUで処理すると、ALUデータ経路の使用は非効率になる。ビットの(n−1)は使用されない。
この結果、FPGAの1ビットの性質が処理条件にとっては適するが、条件の結果に基づく分岐には適さないという状況を生み出す。一方で、マルチビットRAAのような装置は分岐に適するが、処理条件では非効率である。
再構成可能演算アプリケーションにとって有効な実行方法は、1ビット(あるいはニブル、またはワードまたはその他の全幅データ項目のいくらかの別の断片)シリアル形式でデータを処理することである。単独の処理素子が、ワードの連続部分を処理するために連続的なクロックサイクルで使用される。この方法によって、領域や処理能力を互いに使用することができ、シリアル化処理は時間がかかるが、処理素子の数は少なくてすむ。
シリアルおよびパラレルフォーマット間でデータを変換できることは、シリアル化処理において有益である。この変換を実行する1つの方法が、マルチプレクサとレジスタから構成される回路を用いることである。
マルチプレクサは、多数の一般的な1−および2−入力論理関数を実行する再構成可能装置においても有益である。これらの例は、「if(b)then{a=c;} else {a=d;}」の省略であるC/java「条件付き選択」演算子「a=(b?c:d)」で表現される。
A&B=A?B:0
A|B=A?1:B
NOT A =A?0:1
A^B=A?(NOT B):B
A&B=A?B:0
A|B=A?1:B
NOT A =A?0:1
A^B=A?(NOT B):B
上述したように、異種アレイは、異なるワード長を扱うように最適化された処理素子の混合を提供する。しかしながら、従来の異種アレイは、上述したような比率の判断の問題を有する。これらの問題の有効な解決策は、マルチビット処理の方に偏るが1ビット処理も可能なように第1のタイプの処理素子を設計し、1ビット処理の方に偏るがマルチビット処理も可能なように第2のタイプの処理素子を設計することである。
添付図面は、本発明の実施形態の理解を深め、詳細な説明とともに、開示される実施形態の原理を説明するのに供することを目的とする。
本発明の各種実施形態を以下に開示する。これらの実施形態に記載されるアレイは、第1および第2のタイプの処理素子としてALUおよびマルチプレクサを用いて構成される。しかしながら、当業者は、ALU、マルチプレクサ、あるいはその両方の代わりに他の処理素子を使用可能であることを認識するであろう。例えば、アレイは、ルックアップテーブルベースの素子、積項ベースの素子、専用乗算ブロック、浮動小数点プロセッサ、整数プロセッサなどのハードワイヤード素子、組み合わせ論理機能を実行可能な他の素子を用いて構成することができる。
以下の実施形態のいくつかは、専用ルーティングネットワークを含む。専用ルーティングネットワークは、複数の入力および複数の出力を有するネットワークで、すべての入力を少なくとも1つの出力に接続することができ、すべての出力を少なくとも1つの入力に接続することができる。しかしながら、専用ルーティングネットワークは、1)任意の入力を任意の出力に接続する性能(すなわち、すべての出力に接続できない少なくとも1つの入力がある、あるいは、すべての入力に接続できない少なくとも1つの出力がある)、または2)任意の入力A、Cおよび任意の出力B、D、B≠Dに関して任意の対接続A→BおよびC→Dを形成する性能、のうち一方または両方を欠く。
これらの実施形態のアレイは、処理素子の複数の「クラスタ」の観点で説明する。クラスタは、少なくとも1つの第1のタイプの処理素子と1つの第2のタイプの処理素子とを含む、処理素子のコレクションを有する。クラスタ内の第1のタイプおよび第2のタイプの処理素子は、直接クラスタ内接続で互いに接続されており、その接続は配線、バス、またはその他の形式の電気接続であってもよい。クラスタ内接続は、追加でまたは代替で、 入力セレクタなどの専用ルーティングネットワークの1部、または専用ルーティングネットワークの1部であるマルチプレクサを介して、直接接続等価接続を含んでいてもよい。直接接続等価接続は、専用ルーティングネットワークの1部を使用し、第1のタイプの処理素子の任意の出力と第2のタイプの処理素子の任意の入力間では汎用ルーティングネットワークを使用しない経路である。該経路は、他の第1のタイプの処理素子の他の等価出力と他の第2のタイプの処理素子の他の等価入力間で、専用ルーティングネットワークの他の等価部分を用いる他の物理的および論理的に等価な経路を妨害しない。クラスタ内接続は、アレイに存在する汎用ルーティングネットワークの1部ではない。しかしながら、クラスタ境界に、汎用ルーティングネットワークとの接続部があってもよい。
クラスタは、非同一素子を直接つなぐ完全なセットの接続によって直接的または間接的に接続される1セットの処理素子として定義される。2つのタイプの処理素子を有する実施形態の場合、クラスタ内のいずれの処理素子も、信号がクラスタ内接続を介して実際に移動する方向に関係なく、第1のタイプの処理素子と第2のタイプの処理素子、またはその逆のクラスタ内接続によってクラスタ内の他の処理素子から到達することができる。3つのタイプ以上の処理素子を有する実施形態の場合、非同一タイプの処理素子を接続するクラスタ内接続の経路がクラスタを定義する。
例えば、第1のタイプの処理素子がALUで、第2のタイプの処理素子がマルチプレクサである場合、経路上の同じタイプの2つの処理素子間には接続がないので、経路ALU−MUX−ALU−MUXはクラスタを定義するが、経路ALU−MUX−MUXはクラスタを定義しない。同様に、3つの処理素子タイプA、B、Cの場合、経路A−B−C−Aはクラスタを定義するが、A−B−B−C−AはB−B接続のためクラスタを定義しない。
上述したように、処理素子の対のいずれかである同じタイプの処理素子を通過せずに、非同一素子を接続する接続のみを用いて、クラスタ内の処理素子の各対の間に経路が存在する限り、クラスタは、同じタイプの処理素子間の接続を含むことができる。
図19は、クラスタの例を示す。処理素子は「ALU」および「MUX」 素子によって指定され、接続は素子を接続する線によって指定される。第1のクラスタ1910は、点線の左側で、処理素子1910(a)〜(f)のすべてを含む。第2のクラスタ1920は、点線の右側で、処理素子1920(a)〜(g)のすべてを含む。各処理素子1910(a)〜(f)は、一連のALU−MUXまたはMUX−ALU接続に続くことで、他の各処理素子1910(a)〜(f)から到達することができる。同様に、各処理素子1920(a)〜(g)は、一連のALU−MUXまたはMUX−ALU接続に続くことで、他の各処理素子1920(a)〜(g)から到達することができる。処理素子1910(a)〜(g)は、ALU−MUXまたはMUX−ALU接続に続くことで、処理素子1920(a)〜(g)から到達することはできない。少なくとも1つのALU−ALUまたはMUX−MUX接続に続かなくてはならない。したがって、処理素子1910(a)〜(f)は第2のクラスタ1920のメンバーではなく、処理素子1920(a)〜(g)は第1のクラスタ1910のメンバーではない。
「ALU」は、命令値に応じて、様々な数学および論理関数を実行するように構成可能な処理素子である。ALUは1つまたは複数のデータ入力を受信し、命令値によって選択された関数をデータ入力に適用して、データ出力を生成する。ALUは、別の処理素子からキャリーイン値も受信し、受け取ったデータと命令値に応じて、キャリーアウト出力値を別の処理素子に供給することもできる。
「マルチプレクサ」は、2つ以上のデータ入力値を受信し、セレクタ入力値に応じてデータ入力値のうちの1つをデータ出力に供給する処理素子である。
図1を参照すると、再構成可能アレイに使用されるALU100は、第1のデータ入力110、第2のデータ入力120、および命令入力130を含む。データおよび命令入力は、アレイ内の他の素子またはアレイに接続される素子から入力値を受け取ることができる。データ入力値は、プログラムメモリなどのソース、他の処理素子の出力、または、データ信号の他のソースから得ることができる。命令入力値は、構成メモリなどのソースまたは構成データのその他のソースから得ることができ、また、他の処理素子からデータ信号によって提供される。データおよび命令入力は、第1のビット幅の入力値を受け取ることができる。もしくは、命令入力は、命令入力のソースに応じて、異なるビット幅であってもよい。例えば、第1のビット幅の汎用ルーティングネットワークに接続されない構成メモリによって供給される場合、命令入力は第1のビット幅である必要はない。
ALU100は、第2のビット幅であるキャリーイン入力140(「Cin」)も含む。この入力は、アレイ内の別のALU100からキャリー入力を受信するのに使用される。
ALU100は、第2のビット幅であるキャリーアウト出力150(「Cout」)も含む。キャリーアウト出力150は、キャリー出力をアレイ内の他の素子またはアレイに接続される他の素子に提供する。ALU100の構成に応じて、キャリーイン入力140とキャリーアウト出力150は、設計者の要求に応じて、キャリー値以外の値を提供することができる。
ALU100は、第1のビット幅のデータ出力160も含む。データ出力160は、ALUによって実行される数学または論理関数の結果を、アレイ内の他の素子またはアレイに接続される素子に提供する。
ALU100は、第2のビット幅の選択信号出力170も含む。選択信号出力170は、選択信号をアレイ内の他の素子またはアレイに接続される素子に提供する。選択信号は、アレイ内の他の素子またはアレイに接続される素子の機能を制御するのに有効な様々な信号のいずれであってもよい。例えば、選択信号は、1つまたは複数の以下のデータ依存信号であってもよい。
Cout:ALU演算からのキャリーアウト、
符号:ALU演算の正しい符号(演算オーバーフローが発生した場合でも)、
オーバーフロー:演算オーバーフローがあったことを示す信号。
Cout:ALU演算からのキャリーアウト、
符号:ALU演算の正しい符号(演算オーバーフローが発生した場合でも)、
オーバーフロー:演算オーバーフローがあったことを示す信号。
もしくは、1つまたは複数ビットの命令入力130であってもよい。これによって、データ依存信号と支持依存信号の両方を提供することができる。いくつかの実施形態では、ALU100は、命令入力130と無関係に、内部命令を記憶するように構成される。このため、命令入力130は、ALU100を制御するために記憶された命令値を使用しつつ、選択信号出力170に直接命令入力130の1部または全部を提供することによって、専用選択信号入力として使用することができる。選択信号出力170は、以下より詳細に説明するように、ALU100から転送される様々な信号を選択する追加の回路を含むことができる。
図2を参照すると、再構成可能アレイで使用されるマルチプレクサ200は、第1の入力210と第2の入力220を含み、どちらも第1のビット幅を有する。入力210、220は、アレイ内の他の素子またはアレイに接続される素子から入力値を受け取る。
マルチプレクサ200は、第1のビット幅の出力230も含む。出力230は、マルチプレクサ200によって実行される入力選択の結果を、アレイ内の他の素子またはアレイに接続される素子に提供する。
マルチプレクサ200はセレクタ入力240も含む。セレクタ入力240は、入力210、220のうちどれが出力230に向けられるかを示す選択値を受け取る。セレクタ入力240は、第2のビット幅である。本実施形態では、選択値「1」では結果的に第1の入力210が出力230に向けられ、選択値「0」では結果的に第2の入力220が出力230に向けられる。
本実施形態では、第1のビット幅は4ビット幅であるワード幅で、第2のビット幅は1ビット幅である。別の実施形態では、設計者によって企図される特定の実装が所望するとおり、第1のビット幅と第2のビット幅は任意のサイズであってもよい。第1のビット幅の入力および出力は好ましくは、アレイの様々な素子を通って信号を転送するのに有効な第1の汎用ルーティングネットワークに接続される。第2のビット幅の入力および出力は好ましくは、他の処理素子に直接接続されるか、あるいは、第2のビット幅のキャリー信号に適合された第2の汎用ルーティングネットワークまたは専用ルーティングネットワークに接続される。これらの場合、第2のビット幅信号は、第1の汎用ルーティングネットワークをバイパスする。もしくは、第2のビット幅信号は、第1のビット幅信号とともに、第1の汎用ルーティングネットワークを通って転送される。様々な入力および出力を、様々な配線、バス、またはその他の導電性装置または電流路を用いて接続することができる。
図3を参照すると、クラスタ300は、ALU100とマルチプレクサ200を含む。ALU100の選択出力170は、マルチプレクサ200のセレクタ入力240に選択信号を供給する。上述したように、マルチプレクサ200は、データ依存または命令依存信号によって制御することができる。アプリケーションでの有効性に関して言えば、これらの2つのケースはプロセッサ内の条件付きおよび無条件の分岐に広く対応する。
設計者の要求に応じて、追加のマルチプレクサをクラスタ300に追加することができる。これらの追加のマルチプレクサは、マルチプレクサ200を制御するのと同じ選択信号によって制御することができ、また、異なる選択信号によって制御することができる。クラスタ300は、追加のALU、レジスタ、ゲートなど、クラスタ300内の様々な入力および出力に装着される他の素子の追加によって拡張することもできる。クラスタ300は、より複雑な回路を実装するために他のクラスタに接続することもできる。このような拡張の例を、以下に、より詳細に説明する。
クラスタ300は、様々な回路を実現するために単独で、または他のクラスタ300と組み合わせて使用することができ、その例を図4〜6に示す。図4Aを参照すると、クラスタ300は、データ選択回路を実現するために使用される。データ選択回路は、選択信号出力170で提供された条件の結果に応じて、「in1」または「in2」を選択する。例えば、選択信号出力170がオーバーフロー信号を提供するように構成される場合、データ選択回路はオーバーフロー(S=I)があれば「in1」を、オーバーフロー(S=0)がなければ「in2」を選択する。
この回路は、例えば、ワード長が変化したときに符号拡張を実行することによって、データをフォーマットする際に有益である。第1の入力110は、8ビット値に変換される符号付き4ビット値Aを保持する。マルチプレクサ入力210、220は、値「1111」と「0000」をそれぞれ保持する。ALU100は関数A<0を評価して、選択出力170に適切な符号信号を生成し、入力値AをALU出力160に伝播させる。符号出力信号は、「1111」または「0000」のいずれかを選択するようにマルチプレクサ200を切り換えるために使用される。8ビットの結果は、ALU出力160上の値と、マルチプレクサ出力230上の値から成る。
図4Bを参照すると、クラスタ300は、第1のビット幅汎用ルーティングネットワークに、ALU100によって生成される第2のビット幅信号を伝播するように構成することもできる。ALU100の選択出力170に生成された第2のビット幅の選択信号は、マルチプレクサ200のセレクタ入力240に転送される。第1の入力210には値「0001」が与えられ、その値は、第2のビット幅の値「1」の第1のビット幅の表示である。第2の入力220には値「0000」が与えられ、その値は、第2のビット幅の値「0」の第1のビット幅の表示である。選択信号が「1」のとき、マルチプレクサ200によって、「0001」の第1の入力値210は、出力230へ、そこから進んで汎用ルーティングネットワークに転送させられる。同様に、選択信号が「0」のとき、マルチプレクサ200によって、「0000」の第2の入力値220は、出力230へ、そこから進んで第1の汎用ルーティングネットワークに転送させられる。したがって、符号、オーバーフロー、キャリーアウトなどの選択信号は、第2のビット幅から第1のビット幅に有効に変換され、第1の汎用ルーティングネットワークに配置されて、そこで、他の処理素子に送られることができる。これにより、専用の接続と上述の第2の汎用ルーティングネットワークに加えて、これらの信号のための別の経路が提供される。
図5を参照すると、第1のクラスタ510と第2のクラスタ550は、条件処理回路を実装するために使用される。条件処理回路は、ALUの選択出力値として提供される1つまたは複数の条件に基づき論理演算を実行する。第1のクラスタ510は、第1の条件(例えば、出力値F1の「符号」)を生成する第1のALU520を含み、第1の条件を第1のマルチプレクサ530に渡す。第1のマルチプレクサ530は、第1の入力533上の「0001」の定数値と、第2の入力535上の「0000」の定数値とを受信する。第1の条件が「1」である場合、第1のマルチプレクサ530は第1の入力533を選択して出力537に提供し、そうでない場合、第1のマルチプレクサ530は第2の入力535を選択して出力537に提供する。
第2のクラスタ550は、第2の条件(例えば、出力値F2の「符号」)を生成する第2のALU560を含み、第2の条件を第2のマルチプレクサ570に渡す。第2のマルチプレクサは第1の入力573上の出力537からの値と、第2の入力575上の「0000」の定数値とを受信する。第2の条件が「1」である場合、第2のマルチプレクサ570は第1の入力573を選択して出力577に提供し、そうでない場合、第2のマルチプレクサ570は第2の入力575を選択して出力577に提供する。
第1の条件と第2の条件の関数として表現されるこの回路の出力を以下の表1に示す。
表1から分かるように、図5の条件処理回路は、2つの条件S1およびS2の出力論理積として生成する。他の論理関数も同様に生成することができる。
図6を参照すると、第1のクラスタ510と第2のクラスタ550は、データ経路制御回路を実現するように構成される。第1のALU520は上述したように、選択信号を生成し、選択信号を第1のマルチプレクサ530に送る。第1のマルチプレクサ530は、第1の入力533の加算(「ADD」)命令値に対応するデータ入力信号と、第2の入力535の減算(「SUB」)命令値に対応するデータ入力信号とを受信する。これらのデータ入力は上述したように、通常はマルチビット信号である。選択信号の値に基づき、第1のマルチプレクサ530は、ADDまたはSUB命令値のいずれかを第2のALU560の命令入力562に転送する。したがって、第2のALU560の出力は、第1のALU520によって生成される条件に応じて、A2+B2またはA2−B2のいずれかとなる。したがって、第1および第2のクラスタ510、550を含むアレイ内のデータ経路は、第2のALU560によって実行される関数を変更することにより制御される。所望のデータ経路制御機能は、第1のALU520および第1のマルチプレクサ530へのデータおよび命令入力を変更することによって実現される。
図7〜8を参照すると、出力レジスタは、追加の有効な回路を形成するようにクラスタ300に追加することができる。これらの回路は、シリアル−パラレルおよびパラレル−シリアルデータ変換のためのデータフォーマットを実行するのに有効である。図7の回路は上述したように、ALU100とマルチプレクサ200を含む。さらに、マルチプレクサ200の出力230に装着されるレジスタ700がある。レジスタ700は、マルチプレクサ200の出力230からロードされる値を記憶する。スイッチ710は、マルチプレクサ出力230またはレジスタ出力720のいずれかを他の素子に転送するように構成される。スイッチ710は、アレイ上のアプリケーションの構成の1部として設定される。別の実施形態では、対応するスイッチの有無にかかわらず、ALU100の出力160に接続される第2のレジスタがある。
図8Aおよび8Bは、クラスタ300を用いて実装することのできる有効なレジスタ回路の具体例を示す。図8Aは「イネーブルレジスタ」回路の具体化であり、図8Bは「リセットレジスタ」回路の具体化である。図8Aの「イネーブルレジスタ」回路はレジスタを提供し、「イネーブル」がクロックエッジでアクティブであるとき、レジスタ内容は(「入力」値で)更新するだけであり、アクティブでないとき、記憶された値がリサイクルされ、出力は変わらない。図8Bの「リセットレジスタ」回路は、リセット信号が非アクティブである限り、「入力」値をレジスタに提供する。リセット信号がアクティブになる場合、次のクロックエッジでゼロ値がレジスタにロードされる。これらのレジスタオプションの両方ともアプリケーションで一般的に使用されるため、これらの回路は再構成可能アレイ上にアプリケーションを実装する際に役立ち、図7の「マルチプレクサとレジスタ」機構で容易に構成可能である。
マルチプレクサの可能な使用の多くは、マルチプレクサへの入力の一方または両方に定数値を有すること、例えば、
AND、OR、またはNOTゲートを実装すること、
キャリーアウト値を第1の汎用ルーティングネットワークへ伝播すること、または
リセット可能なレジスタを実装すること、を含む。
AND、OR、またはNOTゲートを実装すること、
キャリーアウト値を第1の汎用ルーティングネットワークへ伝播すること、または
リセット可能なレジスタを実装すること、を含む。
これらの使用は、マルチプレクサ200の入力に入力選択論理を追加することによって簡易化される。入力選択論理は、マルチプレクサのサイズを増大させるが、ルーティングネットワークを介して伝播される信号の数を低減するという二律背反の問題を抱える。マルチプレクサ200は、図9に示されるように、第1の入力210と第2の入力220にそれぞれ装着される第1の入力マルチプレクサ910と第2の入力マルチプレクサ920を有する。第1の入力マルチプレクサ910は、第1の入力値913または第1の定数値917(ここでは、値「0001」)のいずれかを第1の入力210に供給するように構成される。第2の入力マルチプレクサ920は、第2の入力値923または第2の定数値 927(ここでは、値「0000」)のいずれかを第2の入力220に供給するように構成される。入力マルチプレクサ910、920は、アプリケーションによって動的に制御されることを目的としていない。入力マルチプレクサ910、920への制御信号は、アプリケーションがアレイにロードされる際に設定され、それ以降変動しない。別の実施形態では、アレイへのより高い制御レベルが所望され、入力マルチプレクサ910、920は動的に制御可能である。
入力マルチプレクサ910、920は、一定か可変のいずれかの他の信号を含むように拡張することができる。例えば、図10を参照すると、第2の入力マルチプレクサ920は、入力としてフィードバック信号を第2の入力マルチプレクサ920に追加することによって拡張される。したがって、第2の入力マルチプレクサ920は、図8Aの「イネーブルレジスタ」回路を実現するために、第2の入力220に対するフィードバック路1010を形成するように構成することができる。同様に、図11を参照すると、第1の入力マルチプレクサ910は、ALU100のキャリーアウト出力150から第1の入力マルチプレクサ910にキャリーアウト信号を提供することによって拡張される。第1の入力マルチプレクサ910への入力がキャリーアウト出力150より広い場合、キャリーアウト信号は先行ゼロで埋められる。したがって、例えば、第1の入力マルチプレクサ910に提供されるとき、「1」のキャリーアウト信号は「0001」に埋められる。したがって、適切に構成されれば、第1の入力マルチプレクサ910は、第1の入力210を介してキャリーアウト出力150をマルチプレクサ200に提供する。これによって、キャリーアウト信号を第1の汎用ルーティングネットワークに提供する別のルートが提供される。キャリーアウト信号はセレクタ入力170を介して既にマルチプレクサ200に利用可能であり、そのように第1の汎用ルーティングネットワークに伝播させることができるが、この変更は、(存在する可能性のある入力マルチプレクサを考慮せずに)1つのマルチプレクサ200および1つのレジスタ700内にイネーブル(または、図8Bの回路を変更することによってリセット)キャリーレジスタを形成することを可能にする。リセット可能なキャリー出力レジスタは、直列演算アプリケーションにおいて有益である。
図12を参照すると、図11の回路のさらなる改良として、レジスタ700またはマルチプレクサ200出力のビットのうちの1つが、ALUへの専用キャリー入力として使用可能とされる。マルチプレクサ200の4ビット出力230のうち1ビットが、ALU100のキャリーイン入力140に接続される入力マルチプレクサ1210に転送される。これにより、キャリーアウト出力150からキャリーイン入力140への登録された経路が形成される。このような経路は、シリアル化演算回路を形成するとき、特に上述したようにレジスタ700をリセットする性能と結び付けられたとき、有益である。
図10〜12は、スイッチ710の出力に接続される第2の入力マルチプレクサ920へのフィードバック路を示す。もしくは、フィードバック径路は、スイッチ710の前で、レジスタ700の出力に接続させることができる。しかしながら、スイッチ710の後に接続すると、非登録経路を選択することによって、非同期ラッチを構成することができる。
図13を参照すると、クラスタ300の基本回路のさらに別な拡張が示されている。マルチプレクサ200の出力230にインバータ1310を追加することによって、マルチプレクサ200によって生成される機能の範囲が広がる。マルチプレクサ200はNANDおよびNORゲートを提供することができる。
NAND(A、B)=NOT(A?B:0)
NOR(A、B)=NOT(A?1:B)
さらに、これにより、出力反転を実現する別の方法も提供される。
NOT A=A?0:1−この形式はインバータを使用しない
NOT A=NOT(1?A:0)−この形式はインバータを使用する。
NAND(A、B)=NOT(A?B:0)
NOR(A、B)=NOT(A?1:B)
さらに、これにより、出力反転を実現する別の方法も提供される。
NOT A=A?0:1−この形式はインバータを使用しない
NOT A=NOT(1?A:0)−この形式はインバータを使用する。
後者のオプションは、A信号を、セレクタ入力240ではなくマルチプレクサ200のデータ入力210、220へ接続する。データ入力210、220およびセレクタ入力240への異なるルーティング遅延がある場合、これが好ましいかもしれない。
さらに、1つの反転入力を有する関数を実行する別の方法が提供される。
A&(NOT B)=B?0:A−この形式はインバータを使用しない。
A&(NOT B)=NOT((NOT A)OR B)
=NOT(A?B:1)
A&(NOT B)=B?0:A−この形式はインバータを使用しない。
A&(NOT B)=NOT((NOT A)OR B)
=NOT(A?B:1)
再度、これは、関数を実行するためにどのマルチプレクサ入力を使用するかについての高い柔軟性を提供する。
上述の回路は、本発明の一実施形態のクラスタ300を用いて実装することのできる幅広い様々な回路の例に過ぎない。
上述のクラスタ300を含む異種アレイは、多くの回路を純粋にALUの異種アレイよりも小型で高速に実現することができる。マルチプレクサはALUよりも大幅に小型化および高速化されるため、マルチプレクサを利用可能な回路も、純粋にALUから成る等価回路よりも小型化および高速化される。条件処理、データフォーマット、命令選択などの演算はすべて、ALUのみで構成されるものよりも、マルチプレクサとALUの混合でより効率的に実行される。
異種相互接続を有するアレイの使用によって、速度はさらに向上する。第1の汎用ルーティングネットワークは、アレイの素子間でデータと命令を転送するために設けられ、追加の相互接続が、ALUとマルチプレクサ間の選択信号の転送のためのマルチプレクサ制御ネットワークを提供する。このマルチプレクサ制御ネットワークは、ALUとクラスタ内の1つまたは複数の対応付けられるマルチプレクサ間の単純な直接接続であってもよいし、あるいは、ALU選択出力を同じクラスタ内、他のクラスタ内、またはその両方におけるマルチプレクサに接続するように構成された複雑な制御ネットワークであってもよい。この制御ネットワークは、データおよび命令ではなくマルチプレクサ制御信号を保持するために最適化された第1のネットワークとは別に、第2の汎用ルーティングネットワークの形を取ることができる。もしくは、以下詳述するように、この制御ネットワークは、専用ルーティングネットワークの形を取ることができる。
再構成可能装置で使用される様々なネットワークは、様々な方法で互いに識別することができる。例えば、2つの異なるネットワークAおよびBは、
−処理素子を通過しないと、AからBへおよびBからAへの通信が可能ではない場合、
−AとBのビット幅が異なる場合、あるいは、
−AおよびBの一方が汎用ネットワークであり、他方が専用ネットワークである場合、には別個であるとみなされる。
−処理素子を通過しないと、AからBへおよびBからAへの通信が可能ではない場合、
−AとBのビット幅が異なる場合、あるいは、
−AおよびBの一方が汎用ネットワークであり、他方が専用ネットワークである場合、には別個であるとみなされる。
一実施形態の異種アレイは、素子のタイプの適切な組み合わせを決定する際の課題を大幅に低減する。マルチプレクサは、ビットレベル論理、データフォーマット、および動的命令選択などの幅広い様々なアプリケーション論理構成要素を実現することが有益である。したがって、設計者が異種アレイ上に実装したいと考えるであろうアプリケーションの大半は、ある程度までマルチプレクサを使用することができる。
しかしながら、マルチプレクサは、有益な機能を実行する唯一の方法ではない。ALUは、マルチプレクサが実行可能な機能を実行するのに使用することができる。マルチプレクサは、普通は単により効率的な実装である。したがって、アプリケーションは、3つのタイプの論理構成要素に分割することができる。
1.好ましくはALUに実装される論理、
2.好ましくはマルチプレクサに実装される論理、
3.実装の選択肢がある論理
1.好ましくはALUに実装される論理、
2.好ましくはマルチプレクサに実装される論理、
3.実装の選択肢がある論理
これらのカテゴリの1部はまたは全部は、カテゴリ内の相対的な優先レベルを示すサブカテゴリを有していてもよい。これらのサブカテゴリは、アレイに設けられる処理素子と各カテゴリ内の様々な量の論理構成要素との具体的な混合に応じて、論理構成要素の処理素子への割当を微調整するために使用される。
第3のカテゴリの存在は、すべてのアプリケーションに対して十分なマルチプレクサ(またはALU)が常に存在するように保証する「完璧な」ALUとマルチプレクサの比率を見つける必要がないことを意味する。その代わりに、処理素子間で論理構成要素を割り当てる方法を決定する際、図14の方法が使用される。ステップ1410では、好ましくは第1の処理素子タイプに実装される論理構成要素が特定され、第1のタイプの処理素子に割り当てられる。カテゴリ内の相対的な優先を示すサブカテゴリがある場合、最も優先される構成要素が最初に割り当てられる。
ステップ1420では、好ましくは第2の処理素子タイプに実装される構成要素が特定され、第2のタイプの処理素子に割り当てられる。カテゴリ内の相対的な優先を示すサブカテゴリがある場合、最も優先される構成要素が最初に割り当てられる。
ステップ1430では、残りの論理構成要素が、ヒューリスティックに従い、第1および第2のタイプの残りの処理素子間で割り当てられる。例えば、残りの第2のタイプの素子がなくなるまで、残りの論理構成要素が第2のタイプの素子に割り当てられ、次に、第1のタイプの素子に割り当てられる。もしくは、残りの素子はサブカテゴリ毎に分割され、第2のタイプに相対的に優先される論理構成要素は第2のタイプに行き、第1のタイプに相対的に優先される論理構成要素は第1のタイプに行く。
選択信号出力
上述したように、ALU100の選択信号出力170(図1に示す)は、様々に異なる信号を備えることができる。図15を参照すると、マルチプレクサ200を制御する制御信号を生成し選択する選択回路1500の例を、以下より詳細に説明する。選択回路1500は、ALU100から、まとめてALUステータスワード(ASW)と称される、ステータスビットを受信するように構成された複数のステータス入力1510を含む。各ステータス入力1510は、符号、オーバーフロー、キャリーアウトなどの特定のステータス信号を示すビット、命令入力130からのビット、または、マルチプレクサ200を制御するのに有効な他のデータを保持する。
上述したように、ALU100の選択信号出力170(図1に示す)は、様々に異なる信号を備えることができる。図15を参照すると、マルチプレクサ200を制御する制御信号を生成し選択する選択回路1500の例を、以下より詳細に説明する。選択回路1500は、ALU100から、まとめてALUステータスワード(ASW)と称される、ステータスビットを受信するように構成された複数のステータス入力1510を含む。各ステータス入力1510は、符号、オーバーフロー、キャリーアウトなどの特定のステータス信号を示すビット、命令入力130からのビット、または、マルチプレクサ200を制御するのに有効な他のデータを保持する。
選択回路1500は、まとめてマスクワードと称される複数のマスク入力1520も含む。マスク入力1520は、ALUステータスワードの1つまたは複数ステータスビットをマスクするために使用されるマスク値を受信するように構成される。マスク入力1520は、幅広いソースからマスク値を受け取ることができる。例えば、マスク入力1520は、第1の汎用ルーティングネットワークに接続されることによって、アレイ内の他の処理素子から動的にマスク値を受信することができる。もしくは、マスク入力1520は、特定のアプリケーション用に構成された場合にアレイにロードされるマスク値を含め、マスク値を記憶するローカルメモリに接続することができる。
ステータス入力1510およびマスク入力1520は、入力1510、1520でビット単位の論理積を実行するように構成される複数のANDゲート1530に接続される。ANDゲート1530はすべて、論理積を取られた値を全部結合するORゲート1540に接続されて、マルチプレクサ200のセレクタ入力240に提供される単独ビット出力を形成し、マルチプレクサ200を制御する。
マスクワードをすべて0に設定することは、セレクタ入力240に送信されるマルチプレクサ制御信号がゼロになる、すなわち、マルチプレクサ200が第2の入力220の値を常に出力230に供給するように固定されることを意味する。ASWのビットの1つが定数1である場合、マスクワードを有するこのビットを選択することは、制御信号が1になる、すなわち、マルチプレクサ200が第1の入力210の値を常に出力230に供給するように固定されることを意味する。すべてが0の場合と組み合わせると、これによって、マルチプレクサ制御信号を定数0または定数1に設定する性能が提供される。
定数0と定数1の両方を可能にする別の方法は、図16に示されるように、選択回路1500を拡張することである。選択回路1500は、ORゲートの出力が反転されるように、ORゲート1540にXORゲート1610を置くことによって拡張される。XORゲート1610への他の入力は、アレイの構成中に値をロードされるデータソース1620に結合される。値が「1」の場合、XORゲート1610はインバータとして動作し、ORゲート1540からの出力値を反転させる。値が「0」の場合、XORゲート1610はORゲート1540の出力を伝播させる。したがって、XORゲート1610は、「イネーブルインバータ」として機能する。この動きを表2に示す。
したがって、定数0をセレクタ入力240に送信することが所望される場合、マスクワードはすべて0に設定され、データソース値は0に設定される。定数1をセレクタ入力240に送信することが所望される場合、マスクワードはすべて0に設定され、データソース値は1に設定される。この代替策によって、マスクワードのすべての値に対して、ORゲート1540の出力を反転させることができる。
これは、マルチプレクサ200への制御の極性を変動できることを意味する。インバータが起動すると、ORゲート1540の「1」出力によって第1の入力210の代わりに第2の入力220が選択され、ORゲート1540からの「0」出力によって第2の入力220の代わりに第1の入力210が選択される。これは、マルチプレクサ200がマルチプレクサ200の入力210、220への非対称接続を有するときに有効である。この例が、レジスタ出力からのフィードバック径路が入力210、220のうちの1つにのみつながる、あるいは、専用の一定入力が入力210、220のうちの1つでのみ利用可能である場合である。
ALUステータスワードの可能な内容
ASWは、例えば、以下の値の1部または全部を示すビットを含むことができる。
ALUキャリーイン、
ALUキャリーアウト、
ALU「オーバーフロー」(オーバーフローの2の補数定義を用いる)、
ALU「正しい符号」(再び、2の補数定義に従う)、
ALUデータ入力110、120から直接得られる1つまたは複数のビット、あるいは
ALU命令入力130から直接得られる1つまたは複数のビット
ASWは、例えば、以下の値の1部または全部を示すビットを含むことができる。
ALUキャリーイン、
ALUキャリーアウト、
ALU「オーバーフロー」(オーバーフローの2の補数定義を用いる)、
ALU「正しい符号」(再び、2の補数定義に従う)、
ALUデータ入力110、120から直接得られる1つまたは複数のビット、あるいは
ALU命令入力130から直接得られる1つまたは複数のビット
RAA設計の1例では、ALU命令値をALU内のレジスタに記憶することができ、その場合、命令入力130は、専用マルチプレクサ制御入力としての使用のために利用可能である。これは、命令入力130が上記リストの「命令入力からのビット」と「データ入力からのビット」の両方をカバーするように使用できることを意味する。したがって、このリストの有効なサブセットは、キャリーアウト、正しい符号、およびALU命令入力130からの2ビットを含む。
このサブセットは、マルチプレクサ制御信号が、例えば、以下のうちの1つであってもいいことを意味する。
キャリーアウトを介した符号なし比較(より小さい、より大きい)の結果、
符号信号を介した符号付き比較(より小さい、より大きい)の結果、
(再び符号信号を介した)符号拡張のために使用される符号付き演算処理の符号、
(再びキャリーアウトを介した)符号なし演算処理からのオーバーフロー、
(キャリーアウトを介した均一性テストの結果を報告するALU設計のための)均一性テストの結果、あるいは
2命令ビットの選択で、命令入力130から得られるビット。(「データ入力からのビット」オプションもカバーする)。
キャリーアウトを介した符号なし比較(より小さい、より大きい)の結果、
符号信号を介した符号付き比較(より小さい、より大きい)の結果、
(再び符号信号を介した)符号拡張のために使用される符号付き演算処理の符号、
(再びキャリーアウトを介した)符号なし演算処理からのオーバーフロー、
(キャリーアウトを介した均一性テストの結果を報告するALU設計のための)均一性テストの結果、あるいは
2命令ビットの選択で、命令入力130から得られるビット。(「データ入力からのビット」オプションもカバーする)。
したがって、このサブセットは、アプリケーション内で一般的にテストされる条件のいくつかをカバーする。RAAアプリケーションでは一般的でない符号付き演算オーバーフロー(RAAは一般的に、以下詳述するようなワード長管理に対する異なるアプローチを採用するため)は、正しい符号と演算結果のMSBから合成される。
命令ビットの可能な選択肢
命令入力130のどのビットがASWで利用可能であるべきかの選択肢の中から以下の例を示す。
命令入力130のどのビットがASWで利用可能であるべきかの選択肢の中から以下の例を示す。
1.命令LSBとMSB。
LSBはルーティングネットワークでキャリーを伝播するために使用されるビットであり、キャリー値が正しい数値を有することを意味する(キャリーがある場合に1、キャリーがない場合に0)。命令入力130を介してキャリーを接続できることは、マルチプレクサ200がローカルALU100からのキャリー、およびアレイ内の他のALU100からのキャリー(間接的に)よって制御可能であることを意味する。
LSBはルーティングネットワークでキャリーを伝播するために使用されるビットであり、キャリー値が正しい数値を有することを意味する(キャリーがある場合に1、キャリーがない場合に0)。命令入力130を介してキャリーを接続できることは、マルチプレクサ200がローカルALU100からのキャリー、およびアレイ内の他のALU100からのキャリー(間接的に)よって制御可能であることを意味する。
MSBは同様の理由で選択される。ワード内に符号ビットがあるので、それを選択できることによって、符号データの選択に汎用性が提供される。
2.命令LSBと命令ビットn/2(すなわち、4ビットワード中でビット2、6ビットワードで3...)
LSBは上記#1の選択肢と同じ理由で選択される。
LSBは上記#1の選択肢と同じ理由で選択される。
ワードの途中でビットを選択すると、一連のシフトまたは回転とともに、複数のALU100の命令入力130を個々に用いるワードからのすべてのビットの抽出が簡易化される。反復シーケンス:
ビット0およびn/2を抽出する、
1位置を左に回転させる、
ビット0およびn/2を抽出する(ビットn−1およびn/2−1と等しい)、
1位置を左に回転させる、
ビット0およびn/2を抽出する(ビットn−2およびn/2−2と等しい)、
1位置を左に回転させる、
等は、n/2回転ですべてのnビットを抽出する効率的で規則的な方法を提供する。このために、使用されたビットを働かせることは、命令ワード内に均等な間隔に配置されなければならない。ビット0は他の理由で有効なので、他のビットがビット0から半ワードである。
ビット0およびn/2を抽出する、
1位置を左に回転させる、
ビット0およびn/2を抽出する(ビットn−1およびn/2−1と等しい)、
1位置を左に回転させる、
ビット0およびn/2を抽出する(ビットn−2およびn/2−2と等しい)、
1位置を左に回転させる、
等は、n/2回転ですべてのnビットを抽出する効率的で規則的な方法を提供する。このために、使用されたビットを働かせることは、命令ワード内に均等な間隔に配置されなければならない。ビット0は他の理由で有効なので、他のビットがビット0から半ワードである。
ASWにとって有効な別のサブセットは、命令入力130の4ビットを含む5ビットワードとALUキャリー出力150である。このサブセットは以下の利点を有する。
1.キャリーアウトは上述したように、符号なし比較とオーバーフローを提供する。
2.命令入力130の全ビットを利用可能にすることで、ワードから得られる任意のビットでマルチプレクサ200を制御することができる。これによって、ワード内のビットの任意の機能を構成することが比較的簡単になる(特に上述したように、論理ゲートを構成するためにマルチプレクサ200の使用と組み合わされる場合)。
2.命令入力130の全ビットを利用可能にすることで、ワードから得られる任意のビットでマルチプレクサ200を制御することができる。これによって、ワード内のビットの任意の機能を構成することが比較的簡単になる(特に上述したように、論理ゲートを構成するためにマルチプレクサ200の使用と組み合わされる場合)。
ワードから任意のビットを抽出する能力によって、符号拡張を実行し、ひいては、符号付きオーバーフローが発生しないように保証することが容易になる。
状態符号化
ALUステータスワードのどのビットをセレクタ入力240に接続すべきかを選択するためにnビットマスクを使用することは、使用できる組み合わせが2nあることを示唆する。実質上、他の組み合わせほど一般的でない組み合わせもいくつかあり、全く使用されない組み合わせもある。
ALUステータスワードのどのビットをセレクタ入力240に接続すべきかを選択するためにnビットマスクを使用することは、使用できる組み合わせが2nあることを示唆する。実質上、他の組み合わせほど一般的でない組み合わせもいくつかあり、全く使用されない組み合わせもある。
先に概説した4ビットASWを例に取ると、以下表3に概説されるように、16の可能な組み合わせがある。最初の4列はマスク値を示し、第5列はセレクタ入力240に送られる結果の出力関数を示す。
使用される命令ビットを伴うラインは非常に稀で、使用されるキャリーおよび符号を伴うラインは実際には全く発生しない。キャリー OR 符号は、通常のアプリケーションで発生する制御関数でない(符号は既にキャリーを有するXORを含んでいるため)。さらに、2つの命令ビットの使用は似ていない。LSBは、特に命令とキャリーまたは符号との組み合わせにおいてMSBよりも一般的に使用される。
したがって、より少ないビットで、マスクとASWを組み合わせるより複雑な論理回路を用いて符号化することのできる、この表の「一般的に使用される」サブセットを特定することが可能である。例えば、表内の8またはそれ以上の状態は、3ビットで符号化可能である。しかしながら、要求される解読は著しくさらに複雑化するであろう。代替策は、一般的な状態の解読の容易化のために4ビット符号化を維持し、非一般的な状態を利用して別の有効な関数を符号化することである。その例を以下に示す。
高ファンアウト制御信号
多くのアプリケーションは、アプリケーション全体で広く使用される小数の制御信号を含む。例えば:
「グローバル リセット」、
「グローバル イネーブル」または
パイプライン スタール/イネーブル
である。
多くのアプリケーションは、アプリケーション全体で広く使用される小数の制御信号を含む。例えば:
「グローバル リセット」、
「グローバル イネーブル」または
パイプライン スタール/イネーブル
である。
これらの信号は、レジスタ、そのリセットまたはイネーブル入力に接続するため、RAAでマルチプレクサ200のマルチプレクサ選択入力240に接続すると予想される種類の信号である。
これらの信号は、従来の再構成可能装置における汎用ルーティングネットワークによって不十分にしかサポートされていない。これらのネットワークは通常、アプリケーションのデータフローに典型的なルーティングパターンを扱うように最適化され、一般的には、これらのグローバル制御信号よりもずっと低いファンアウトを有する。「ファンアウト」とは、所与の出力が駆動する他の処理素子の入力の数である。n−入力処理素子から構成される再構成可能装置内の平均ファンアウトはn以上であり、それは、すべての入力が出力か定数かのいずれかによって駆動されるためである。FPGAとRAAに関しては、nは通常4以上だが、高ファンアウト信号は何倍も大きなファンアウトを容易に有することができる。素子の中には、少数の高ファンアウト信号をアレイ全体を長距離通信するために、ルーティングネットワークを専用高ファンアウト接続に追加するものもある。しかしながら、これらの専用接続は、有効な方法でクラスタ300に接続される必要がある。これらの高ファンアウト信号をサポートする代替策は、第2の汎用ルーティングネットワークまたは専用ルーティングネットワークを追加して、マルチプレクサ選択入力240に有効に接続することである。これらの代替策を以下説明する。
上述の回路1500は、様々なネットワーク(上述の第2の汎用ルーティングネットワークなど)への効率的な接続を含むように拡張でき、上述のASW符号化スキームの非一般的な部分を活用することにより拡張を実行することができる。
「全マスクビットセット」状態は、図17に示されるように、マルチプレクサ制御径路への別の入力を選択するのに使用することができる。拡張される回路1500は、入力をマスク入力1520から引き出す4入力ANDゲート1710を含む。4入力ANDゲート1710の出力は、マルチプレクサ1720のセレクタ入力に接続される。マルチプレクサ1720は、高ファンアウトネットワークから第1の入力1730を、回路1500から第2の入力1740を受け取る。マルチプレクサ1720はXORゲート1610に出力を提供して、上述したように、マルチプレクサ200のセレクタ入力240に選択信号を伝達する。
マスク入力1520がすべて1に構成されるとき(表3の最終行)、これによって4−入力ANDゲート1710の出力はHighにされ(1)、マルチプレクサ1720は高ファンアウトネットワークから第1の入力1730を選択させられて、XORゲート1610を介してマルチプレクサ200に選択信号を提供する。したがって、マルチプレクサ200は、高ファンアウトネットワーク上で転送される信号によって制御される。
マスク入力1520が他の値で構成されるとき、4入力ANDゲート1710の出力はロー(0)のままで、マルチプレクサ1720に回路1500から第2の入力1740を選択させて、XORゲート1610を介して、マルチプレクサ200に選択信号を提供する。したがって、マルチプレクサ200は上述したように、ALU100によって制御される。
回路1500などのASW処理論理回路は、上述したように任意に拡張され、高ファンアウト制御ネットワークに提供される高ファンアウト制御信号の有効なソースでもある。「グローバル」制御信号は通常、「ローカル」制御信号と同じように得られ、アレイの大部分に提供される。したがって、回路1500の出力は、高ファンアウト制御ネットワークにも転送される。出力は、図17に示されるように高ファンアウト制御ネットワークに直接転送することができ、また、出力はまずマルチプレクサ1720を介して転送され、高ファンアウトネットワークへの接続は、マルチプレクサ1720の出力に対して行われる。この代替的な接続によって、高ファンアウト出力を代わりに高ファンアウト入力から得ることができる。
ASW選択表(表3)から複数の「非一般的」状態を符号化し、高ファンアウトネットワークから複数の入力間を選択するこの回路の変形が可能である。もしくは、これらの複数の非一般的状態は、高ファンアウト出力を駆動する状態を選択するのに使用することができる。
高ファンアウト出力を高ファンアウトネットワークに接続することのできる方法がいくつかある。有効な方法は、トライステートバッファを介して接続することで、トライステートイネーブルは、素子の構成状態の1部(例えば、専用構成ビット)によって駆動される。この形式の接続は、複数のソースが高ファンアウト配線を駆動できるが、タイミングはどのソースが実際に使用されるかに依存しないという利点がある。これによって、分析するルーティングソフトウェアにとって高ファンアウトネットワークのタイミングが容易になる。
高ファンアウト制御ネットワーク
上記セクションでは、高ファンアウト制御信号の有益性と、それらがいかにしてマルチプレクサ制御回路1500とインタフェースをとるかについて説明している。本セクションでは、汎用ルーティングネットワークを形成するために、高ファンアウト接続配線が使用する有効な接続パターンを説明する。
上記セクションでは、高ファンアウト制御信号の有益性と、それらがいかにしてマルチプレクサ制御回路1500とインタフェースをとるかについて説明している。本セクションでは、汎用ルーティングネットワークを形成するために、高ファンアウト接続配線が使用する有効な接続パターンを説明する。
再構成可能アレイ内の処理素子は、完全に作製されたグリッドまたは部分的に作製されたグリッド(例えば、チェッカーボードまたはクロスボード配列)のいずれかであるX−Yグリッド上に行および列で配列されると推定される。このようなアレイでは、共有のマルチプレクサ制御信号を共有するこれらの素子を、
行、
列、または
略矩形のパッチ、に配列することができる(高ファンアウト制御信号は、ビットスライス(またはサブ−ワード−スライス)スタイルレイアウトを有するデータ経路を制御するために使用されているという推定に基づく)。
行、
列、または
略矩形のパッチ、に配列することができる(高ファンアウト制御信号は、ビットスライス(またはサブ−ワード−スライス)スタイルレイアウトを有するデータ経路を制御するために使用されているという推定に基づく)。
これらのパターンはすべて、基本的に矩形構造の変形である。したがって、これらのパターンを有効に構成することができる高ファンアウト配線にとって有益である。以下は上記パターンを構成する高ファンアウトネットワークの例である。
1.アレイは、垂直および水平両方向に高ファンアウト配線を含む。
2.各高ファンアウト配線は、水平または垂直に(すなわち、行または列に沿って)走り、交差するすべてのALU100につながる。配線は行(列)全体に沿って、あるいはその1部に沿って延びることができる。
3.高ファンアウト配線は、以下の追加の制限で、上述されるようにマルチプレクサ制御回路1500に接続する。
2.各高ファンアウト配線は、水平または垂直に(すなわち、行または列に沿って)走り、交差するすべてのALU100につながる。配線は行(列)全体に沿って、あるいはその1部に沿って延びることができる。
3.高ファンアウト配線は、以下の追加の制限で、上述されるようにマルチプレクサ制御回路1500に接続する。
ALU100につき2つ以上のマルチプレクサ200がある場合、各回路1500は、垂直配線に接続される高ファンアウト配線からの入力とそこへの出力(すなわち、垂直からの入力と水平への出力、またはその逆)を有する。
ALU100につき1つのみのマルチプレクサ200がある場合、回路1500は、高ファンアウトネットワークから/への入力および出力を水平および垂直高ファンアウト配線の両方に接続することができるべきである。
配線は自然に水平および垂直方向に延びるため、上述したように、行および列接続を形成するのは容易である。さらに、水平配線から入力し、垂直配線へ出力する性能(あるいはその逆)によって、2次元パッチを作製することができる。水平配線は、水平配線が交差するいくつかの垂直配線に接続することができる。
配線がアレイ全体を延びない状況では、その端部が千鳥状に配列されるべきである。すなわち、隣接列(および行)の平行配線の端部は一致せず、互いに相殺されるべきである。4つのALU100にまたがる制御配線(通常のRAA用語では「長さ4」配線)の場合を検討する。列0では、これらの配線は、例えばALU0からALU3に、ALU4からALU7等に延びることができるが、列1では、例えばALU2からALU5、ALU6からALU9等に延びることができる。これらの配線の範囲は重複するため、2配線の垂直の総到達範囲が単独の配線の到達範囲よりも大きくなるように、水平制御配線と接続することができる。
図20に示されるようなチェッカーボード配列は、偶数の行だが奇数の列(またはその逆)にALUがないという特性を有する。それらのサイトはALU間の空間、あるいはより一般的には、ルーティングネットワークをサポートするハードウェアによって占められている。上述の接続パターンは結果的に、独立する制御ネットワーク2010aおよび2010bを生成し、一方は奇数の行および列にあるALU2000を連結し、他方は偶数の行および列にあるALU2000を連結する。図20では、ALU2000間の線は、制御ネットワーク接続を示す。ALU2000内を交差する線は制御ネットワーク2010a、2010bを形成するように、互いに接続可能である。ALU2000の外部を交差する線は制御ネットワーク2010a、2010bを形成するように、互いに接続可能ではない。これは許容可能な状況で、2つのネットワークは2つの別個の制御信号を配分するのに使用され、もしくは、これらの2つのネットワーク2010a、2010b間の接続を提供することも有効であると考えられる。それらが交差する点は、チェッカーボードのルーティング領域にあるため、必要に応じてこの接続をサポートするのが容易である。
汎用ルーティングネットワーク2010a、2010bは、上述の第1の汎用ルーティングネットワークから分離される。信号は、上記図4Bに関して説明したようにマルチプレクサを制御することによって、2010a、2010bから第1の汎用ルーティングネットワークに伝播する。
制御信号としての「符号」と「オーバーフロー」の有用性
「符号」は、FPGAまたはRAAベースの再構成可能アレイの制御信号として特に有用である。これは上記アレイとオーバーフローを使用しがちな従来のプロセッサの間の差異である。この理由を以下に説明する。
「符号」は、FPGAまたはRAAベースの再構成可能アレイの制御信号として特に有用である。これは上記アレイとオーバーフローを使用しがちな従来のプロセッサの間の差異である。この理由を以下に説明する。
オーバーフロー
プロセッサは、ワード長に対して非常に限定的な制御を行い、通常は小さな範囲のワード長しかサポートしない(例えば、8、16、および32ビット−2の累乗の範囲が一般的である)。FPGAおよびRAA装置は、広範囲のワード長をサポートすることができ、アレイを構成する処理素子の粒状度によってのみ制限される。すなわち、アレイが4ビットの処理素子を有する場合、アレイは4n(nは正の整数)と等しいワード長を直接扱うことができる。
プロセッサは、ワード長に対して非常に限定的な制御を行い、通常は小さな範囲のワード長しかサポートしない(例えば、8、16、および32ビット−2の累乗の範囲が一般的である)。FPGAおよびRAA装置は、広範囲のワード長をサポートすることができ、アレイを構成する処理素子の粒状度によってのみ制限される。すなわち、アレイが4ビットの処理素子を有する場合、アレイは4n(nは正の整数)と等しいワード長を直接扱うことができる。
多くの演算アプリケーションは、「典型的な」データセットで実行されるとき、アプリケーション内で計算されるすべての中間データは特定のワード長に一致するが、中間結果が適合しない非一般的なデータセットがいくつかあるという特性を有する。代表的ケースはサポートされるワード長のうちの1つに適合するが、非一般的ケースは適合しない場合、プロセッサにとって重大な問題である。実装に基づく単純なプロセッサは、残念ながら以下の選択肢に直面させられる。
稀なケースを扱うのに十分な大きさのワード長で常に走り、このための効率性に関するペナルティを受け入れる、あるいは
小さなワード長で実行するが、結果が時に誤りである可能性を受け入れる。
稀なケースを扱うのに十分な大きさのワード長で常に走り、このための効率性に関するペナルティを受け入れる、あるいは
小さなワード長で実行するが、結果が時に誤りである可能性を受け入れる。
効率性のペナルティはかなり重大である可能性がある。例えば、16ビットから32ビットに変えると、実装は中間結果に必要なメモリの量を2倍にし、主データ経路の処理能力を半分にすることができる。しかしながら、時折のエラーの可能性は容認できないものであるかもしれない。
幸運にも、この選択を回避するのに利用できる以下の第3のオプションがある。
通常の状況では、小さなワード長で実行するが、必要に応じて救済措置が取れるように(例えば、広いワード長で計算の1部または全部を再実行する)誤った解答を与える情況を検知する。
通常の状況では、小さなワード長で実行するが、必要に応じて救済措置が取れるように(例えば、広いワード長で計算の1部または全部を再実行する)誤った解答を与える情況を検知する。
これによって、アプリケーションは大半の時間、小さなワード長(メモリサイズ、データ経路処理能力)という利点を有することができ、必要とされる稀な場合に長いワード長バージョンというペナルティを支払うだけでよい。
したがって、ほとんどのプロセッサは、演算結果がターゲットワード長に合致しないときを特定するオーバーフロー検出機構を有し、オーバーフローが発生したときにプログラムの別の部分に分岐することができる。したがって、「オーバーフロー」はプロセッサにとって重要な概念である。
FPGAおよびRAAベースの処理に関して、状況は大きく異なる。ワード長の細粒制御のため、ワード長を延長するコストは大幅に低減され、分岐にかかるコストは大幅に高騰する。アプリケーションは通常は16ビットワードに合致するが、時には、18ビットを必要とすると仮定する。プロセッサはこれらの場合を扱う32ビットワードを有していなければならないが、4ビット処理素子を有するRAAは20−ビットデータ経路を使用することができる。したがって、最悪のケースの状況をサポートするペナルティは、領域の100%増ではなく25%増である。
上述したように、FPGAおよびRAAは、プログラムを介したすべての可能な経路にデータ経路を形成することによって分岐を実行する。次に、FPGAおよびRAAは、マルチプレクサを使用して特定のデータセットに正しい経路を選択する。20ビットを使用して繰り返されるいくつかのセクションを有する16ビット1次データ経路を設け、それらの間を選択する多重化を行うことによって、結果的に、単により広いデータ経路を全部使用するよりも広範な実装が実現される。
要約すると、プロセッサは細粒ワード長制御は苦手だが分岐は得意であり、FPGAおよびRAAはワード長制御が得意で、分岐が不得手である。オーバーフロー検出は、ワード長問題を分岐に変換する方法であるため、プロセッサにとっては適するが、FPGAまたはRAAにとっては不適切である。
符号
符合の結果を知ることは、アプリケーション内の以下の2つの具体的な演算にとって重要である。
比較:
A>Bは、AからBを引き、結果の符号をチェックすることによって実現される(完全な値ではなく、結果の符合のみが重要である)。同様の方法が他の比較でも働く(<、<=、>=)。
符合の結果を知ることは、アプリケーション内の以下の2つの具体的な演算にとって重要である。
比較:
A>Bは、AからBを引き、結果の符号をチェックすることによって実現される(完全な値ではなく、結果の符合のみが重要である)。同様の方法が他の比較でも働く(<、<=、>=)。
符号拡張:
2の補数の符号付き数のワード長を増やす場合、符号ビットを追加のビットすべてにコピーする必要がある。符号ビットが一旦分かれば、これは通常単純な演算である。
2の補数の符号付き数のワード長を増やす場合、符号ビットを追加のビットすべてにコピーする必要がある。符号ビットが一旦分かれば、これは通常単純な演算である。
符号付き数および符号なし数の両方にとって正しい結果を得なければならない。「符号なし」のケースは、符号付き演算の特別なケースとみなすことができる(nビットの符号なし値がn+1ビットの符号付き値に埋め込まれている)。2の補数の表記では、値−Xは、符号ビットを示す最上位ビット(「MSB」)1とともに(NOT X)+1と表される。よって、
−2decimal=NOT(010binary)+1binary
=101binary+1binary=110binary.
−2decimal=NOT(010binary)+1binary
=101binary+1binary=110binary.
符号なし比較は常に、演算の最上位ビットからキャリーアウトによって正しく表される。
減算とMSBからのキャリーアウトのテストによる符号付き比較は、演算オーバーフローがある場合、誤った結果を生じる。これは、「キャリーアウト」信号と「オーバーフロー」信号の組み合わせで、あるいは符号信号を直接生成することによって調整することができる。
符号なし「符号拡張」は取るに足らず、追加されたすべてのビットが0である。
符号付き符号拡張は上述した通りである。符号がすべての追加ビットにコピーされる。
ワード長制御の様々な実現とプロセッサにおける分岐および上述のFPGAとRAAは、符号が如何にして算出され使用されるかに影響を及ぼす。
減算とMSBからのキャリーアウトのテストによる符号付き比較は、演算オーバーフローがある場合、誤った結果を生じる。これは、「キャリーアウト」信号と「オーバーフロー」信号の組み合わせで、あるいは符号信号を直接生成することによって調整することができる。
符号なし「符号拡張」は取るに足らず、追加されたすべてのビットが0である。
符号付き符号拡張は上述した通りである。符号がすべての追加ビットにコピーされる。
ワード長制御の様々な実現とプロセッサにおける分岐および上述のFPGAとRAAは、符号が如何にして算出され使用されるかに影響を及ぼす。
プロセッサ
プロセッサは、主制御機能として分岐を使用し、比較を利用して分岐を制御する。これは、組み合わされた「比較と分岐」命令または別々の「比較しフラグを設定」と「フラグ設定ならば分岐」命令のいずれかで行われる。したがって、比較演算と上述のオーバーフロー処理の説明との間にはいくらかの類似点がある。どちらも、「演算実行」段階の後に「条件が発生すれば分岐」(すなわち、オーバーフローがあれば、あるいは比較が真であれば)が続く。類似点はしばしば明確化され、プロセッサは、1セットの関連条件のうちのどれが生じたか(例えば、演算オーバーフロー、負の結果をもたらした演算(すなわち、「符号」)、最も近いキャリーアウト値)を示す1セットの「条件フラグ」と、1つまたは複数の特定のフラグのサブセットが設定された場合に飛び越す一般的な分岐命令とを有する。
プロセッサは、主制御機能として分岐を使用し、比較を利用して分岐を制御する。これは、組み合わされた「比較と分岐」命令または別々の「比較しフラグを設定」と「フラグ設定ならば分岐」命令のいずれかで行われる。したがって、比較演算と上述のオーバーフロー処理の説明との間にはいくらかの類似点がある。どちらも、「演算実行」段階の後に「条件が発生すれば分岐」(すなわち、オーバーフローがあれば、あるいは比較が真であれば)が続く。類似点はしばしば明確化され、プロセッサは、1セットの関連条件のうちのどれが生じたか(例えば、演算オーバーフロー、負の結果をもたらした演算(すなわち、「符号」)、最も近いキャリーアウト値)を示す1セットの「条件フラグ」と、1つまたは複数の特定のフラグのサブセットが設定された場合に飛び越す一般的な分岐命令とを有する。
符号拡張、データがメモリからプロセッサにロードされたときに通常生じる。データがロードされるフォーマットよりもコンパクトなフォーマットで記憶される場合、符号拡張はロード演算で、記憶された表示のMSBをイン−プロセッサバージョンの追加ビットに複製する。
FPGA
分岐はFPGAの非効率的な演算である。FPGAにおける比較演算は、マルチプレクサへの制御入力、または複数の条件を組み合わせる論理のブロックとして使用される可能性が高い。ルーティングネットワーの1ビットの性質は、以下与えられる正しい符号の表現を直接実行するのを簡易化するため、符号の計算は単純な演算である。
分岐はFPGAの非効率的な演算である。FPGAにおける比較演算は、マルチプレクサへの制御入力、または複数の条件を組み合わせる論理のブロックとして使用される可能性が高い。ルーティングネットワーの1ビットの性質は、以下与えられる正しい符号の表現を直接実行するのを簡易化するため、符号の計算は単純な演算である。
FPGAにおける符号拡張は、ルーティング演算であってもよい。FPGAルーティングの1ビットの性質によって、符号ビットは複数の宛先に容易に接続させることができる。しかしながら、nビット入力とn+1ビット出力の演算子を実現するのが容易なので、演算処理に入力を拡張する必要がない場合が多い。
RAA
RAAは、プロセッサとFPGA間の中間のケースである。一般的な分岐はまだ非効率であるが(いくつかの限定的な形式は命令を多重化することによって実現できるが)、ルーティングネットワークはビットベースではなくワードベースであるので、符号とオーバーフロー式の直接的な実現はより困難であり、ワード内のビットの位置を調節するためのシフトを要する。したがって、符号および/またはオーバーフローを直接生成するためにRAA ALUに追加の論理を追加することを検討する価値がある。例えば、符号は有益で、それを実現するにはたった1つのXORゲートだけでよい。
RAAは、プロセッサとFPGA間の中間のケースである。一般的な分岐はまだ非効率であるが(いくつかの限定的な形式は命令を多重化することによって実現できるが)、ルーティングネットワークはビットベースではなくワードベースであるので、符号とオーバーフロー式の直接的な実現はより困難であり、ワード内のビットの位置を調節するためのシフトを要する。したがって、符号および/またはオーバーフローを直接生成するためにRAA ALUに追加の論理を追加することを検討する価値がある。例えば、符号は有益で、それを実現するにはたった1つのXORゲートだけでよい。
符号拡張は、ワード内のビットを再配列する必要性のため、単純なルーティングオプションにはなり得ない。しかしながら、演算出力の符号拡張は(上記のFPGAのケースで述べたように)RAAとともに使用することもでき、符号信号の利用可能性から直接恩恵を得る。図18の回路は−マルチプレクサ1830を制御する加算(または減算)演算1820の符号出力1810を有する−、図3に示されるクラスタ300のALU100およびマルチプレクサ200上に直接マップする。その回路は、図4Aに示される符号付き比較に続くデータ選択用に使用される回路構造と同一である。回路は入力として加算または減算される2つの数を受け取り、符号値を拡張することによって、出力として演算の結果と出力を所望の長さにパッドする追加数のビットとを生成する。
図18の回路では、符号出力1810が負の数を示す値「1」を保持する場合、マルチプレクサ1830はすべて1の第1の入力値を選択し、その結果をパッドする。符号出力1810が正の数を示す値「0」を保持する場合、マルチプレクサ1830はすべて0の第2の入力値を選択し、その結果をパッドする。
要約すると、必須の論理を直接実現できるとき、専用符号論理はFPGAにほとんど利益をもたらさない。プロセッサ(分岐のための制御フラグとして)、および条件付きの制御と符号拡張の両方のために使用可能である場合、マルチプレクサ200の制御信号としてRAAにとって、大きな利益をもたらす。
符号およびオーバーフローの式の導出
加算における個々のビットに関して、サムとキャリーアウトは以下のように入力(A、B、キャリーイン)に関連する(BがNOT Bに置き換えられる場合、同じ式が減算にも働く)。
Σi=Ai^Bi^Ci−1
Ci=if(Ai^Bi)then(Ci−1)else(Ai)
Ci−1がキャリーインで、C1がキャリーアウト、^がXOR演算を表す。
加算における個々のビットに関して、サムとキャリーアウトは以下のように入力(A、B、キャリーイン)に関連する(BがNOT Bに置き換えられる場合、同じ式が減算にも働く)。
Σi=Ai^Bi^Ci−1
Ci=if(Ai^Bi)then(Ci−1)else(Ai)
Ci−1がキャリーインで、C1がキャリーアウト、^がXOR演算を表す。
nビットでの計算結果が、計算がより正確に行われた場合、例えば、入力と出力がn+1ビットに拡張されている場合、に得られたであろう結果と異なる場合に、オーバーフローが生じている。符号付きのケースと符号なしのケースは別々に扱われるべきである。
符号なしのケース
入力拡張は、先行0を追加することによって達成される。
Σn−1=Ai−1^Bn−1^Cn−2
Cn−1=if(An−1^Bn−1)then(Cn−2)else(An−1)
Σn=An^Bn^Cn−1
An=0
Bn=0
Σn=Cn−1
入力拡張は、先行0を追加することによって達成される。
Σn−1=Ai−1^Bn−1^Cn−2
Cn−1=if(An−1^Bn−1)then(Cn−2)else(An−1)
Σn=An^Bn^Cn−1
An=0
Bn=0
Σn=Cn−1
符号なしの加算では、結果内の追加ビットは0であるべきなので、nビット計算からのキャリーアウトがゼロでなければオーバーフローがある。減算のケースでは(すなわち、Bをnot Bに置き換える)、我々は
を有し、期待値は再び0である。したがって、オーバーフローは加算ではキャリーアウトで、減算ではNOT(キャリーアウト)である。
を有し、期待値は再び0である。したがって、オーバーフローは加算ではキャリーアウトで、減算ではNOT(キャリーアウト)である。
正しい符号は、符号なし加算では常に正である。減算に関しては、負の結果はオーバーフローを引き起こすため、減算の場合、正しい符号=オーバーフロー=notキャリーアウトである。
符号付きのケース
入力拡張は、MSBを繰り返すことによって達成される。
Σn−1=An−1^Bn−1^Cn−2
Cn−1=if(An−1^Bn−1)then(Cn−2)else(An−1)
Σn=An^Bn^Cn−1
An=An−1
Bn=Bn−1
Σn=An−1^Bn−1^Cn−1
入力拡張は、MSBを繰り返すことによって達成される。
Σn−1=An−1^Bn−1^Cn−2
Cn−1=if(An−1^Bn−1)then(Cn−2)else(An−1)
Σn=An^Bn^Cn−1
An=An−1
Bn=Bn−1
Σn=An−1^Bn−1^Cn−1
追加出力ビットの期待値は、最初の計算のMSBを繰り返すべきである。したがって、オーバーフローVは、これらの2ビットのXORに等しい。
V=Σn^Σn−1
=(An−1^Bn−1^Cn−1)^(An−1^Bn−1^Cn−2)
=0^0^(Cn−1^Cn−2)
=Cn−1^Cn−2
V=Σn^Σn−1
=(An−1^Bn−1^Cn−1)^(An−1^Bn−1^Cn−2)
=0^0^(Cn−1^Cn−2)
=Cn−1^Cn−2
したがって、オーバーフロー信号は、nビット演算の最終段階のキャリーインとキャリーアウトを組み合わせる単独のXORゲートで生成することができる。
正しい符号(しばしば負フラグNと称される)は追加出力ビットと等しい。
N=Σn
=An−1^Bn−1^Cn−1
N=Σn
=An−1^Bn−1^Cn−1
しかし、An−1^Bn−1項は既にnビット値のMSBの演算の1部として計算されているので、符号は評価するのに追加のXORゲート1つで済む。
要約すると、符号なしケースに関しては、正しい符号およびオーバーフローはキャリー出力と直接関係する。符号付きケースでは、これはもはや真実ではないが、それらを正しく生成するために、符号とオーバーフローの両方は。それぞれ1つの追加XORゲートの加算しか必要としない。
特定目的ルーティングネットワーク
図21を参照し、クラスタ300が専用ルーティングネットワーク2110に接続される場合の、本発明の別の実施形態を説明する。クラスタ300は上述したように、ALU100と1次マルチプレクサ200を含む。ALU100の選択出力170からマルチプレクサ200のセレクタ入力240への直接接続は本実施形態では、選択出力170から専用ルーティングネットワーク2110の第1のルーティング入力2125への接続と、第1のルーティング出力2165から1次マルチプレクサ200のセレクタ入力240への接続と置き換えられる。明瞭化のため、クラスタ300に対応する専用ルーティングネットワーク2110の部分のみを図21に示す。複数のクラスタ300を含む再構成可能装置は、信号を追加のクラスタ300との間を行き来させるのに供する専用ルーティングネットワーク2110の追加の部分も含むことが認識される。上記再構成可能装置の部分の例を以下に説明する。
図21を参照し、クラスタ300が専用ルーティングネットワーク2110に接続される場合の、本発明の別の実施形態を説明する。クラスタ300は上述したように、ALU100と1次マルチプレクサ200を含む。ALU100の選択出力170からマルチプレクサ200のセレクタ入力240への直接接続は本実施形態では、選択出力170から専用ルーティングネットワーク2110の第1のルーティング入力2125への接続と、第1のルーティング出力2165から1次マルチプレクサ200のセレクタ入力240への接続と置き換えられる。明瞭化のため、クラスタ300に対応する専用ルーティングネットワーク2110の部分のみを図21に示す。複数のクラスタ300を含む再構成可能装置は、信号を追加のクラスタ300との間を行き来させるのに供する専用ルーティングネットワーク2110の追加の部分も含むことが認識される。上記再構成可能装置の部分の例を以下に説明する。
特に示されない限り、図21〜34に示される実施形態は、汎用ルーティングネットワーク(太線で示す)に対する4ビット接続と、専用ルーティングネットワーク(細線で示す)に対する1ビット直接接続および接続を有する。これらのビット幅は本発明のいくつかの実施形態の単なる例であって、直接、あるいは、汎用または専用ルーティングネットワークを介してでも、接続のための他のビット幅を使用することができると了解される。
専用ルーティングネットワーク2110は、セレクタ2115、例えば、複数の入力信号のうちの1つを選択して出力として供給するためのマルチプレクサのようなルーティング素子を含む。もしくは、セレクタ2115は、上述の選択回路1500に似た回路を含め、追加の論理機能を含むことができる。セレクタ2115はマスクを介して構成可能である、あるいは、汎用ルーティングネットワークなどの別のソースから選択信号を受信することができる。
セレクタ2115への入力は、第1のセレクタ入力2120、第2のセレクタ入力2130、および第3のセレクタ入力2140を含む。第1のセレクタ入力2120は、第1のルーティング入力2125に接続される。第1のセレクタ入力2120は、ALU100の選択出力170から値を取得する。第2のセレクタ入力2130は、専用ルーティングネットワーク2110内の隣接セレクタに接続され、隣接セレクタから値を取得する。第3のセレクタ入力2140は専用ルーティングネットワーク2110の第2のルーティング入力2145に接続され、第2のルーティング入力2145は汎用ルーティングネットワークに接続されて、そこから値を取得する。なお、本実施形態では、第2のルーティング入力2145は1ビット幅入力であるが、本実施形態の汎用ルーティングネットワークは4ビットネットワークである。上述したように、および以下さらに詳細に説明するように、1ビット信号は様々な技法を用いて4ビットネットワークから検索することができる。
専用ルーティングネットワーク2110は、セレクタリンク2150とセレクタ出力2160も含む。セレクタリンク2150は、セレクタ2115の出力を、専用ルーティングネットワーク2110内の別のセレクタに、最終的には、専用ルーティングネットワーク2110と対応付けられる他のクラスタ内の他のマルチプレクサに提供する。セレクタリンク2160は、セレクタ2115の出力を、ルーティング出力2165に、最終的には1次マルチプレクサ200のセレクタ入力240に提供する。
クラスタ300は、専用キャリールーティングネットワークに接続し、キャリー信号をALU100から再構成可能装置内の他のクラスタの他のALUに転送する。キャリーネットワークは、ALU100によって生成されるキャリーアウト(Cout)信号を、キャリー出力2190を介して隣接クラスタの隣接ALUに送信する。キャリーネットワークは、再構成可能装置内の他のALUによって、あるいは、第1のキャリー入力2175および第2のキャリー入力2180上のキャリーイン信号(外部装置からの入力など)の他のソースによって生成されるキャリーイン(Cin)信号を受信する。第1のキャリー入力2175は、再構成可能装置内の 隣接ALUからキャリーイン信号を受信する。第2のキャリー入力2180は、汎用ルーティングネットワークからキャリーイン信号を受信する。キャリーイン信号の追加のソースを提供することもできる。キャリー選択マルチプレクサ2170などのルーティング素子は、所望のキャリーイン信号ソースをすべて受信し、ALU100への伝播のためにそれらのうちの1つを選択する。選択する特定のキャリーイン信号は、アプリケーション設計に従い、再構成可能装置に構成されるアプリケーションの設計者によって決定される。次に、選択されたキャリーイン信号は、ALU100に提供される。
演算中、ALU100は、上述したように、選択信号を選択信号出力170に提供する。この選択信号はルーティング入力2125を介してセレクタ入力2120に転送され、その信号はさらにセレクタ2115によって転送される。ALU100から選択信号を受信することに加えて、セレクタ2115は、第2のセレクタ入力2130を介して、専用ルーティングネットワーク2110に接続される別のALUから選択信号を受信することもできる。また、セレクタ2115は、第3のセレクタ入力2140を介して、汎用ルーティングネットワークから選択信号を受信することができる。第3のセレクタ入力2140上の信号は、再構成可能装置の他の素子、あるいは再構成可能装置の外部ソースなど、幅広いソースから得ることができる。次に、セレクタ2115は、その後転送されるべき入力として、複数入力の中から1つの入力を選択する。セレクタ2115は、再構成可能装置が構成段階にあるとき、特定の入力を選択するように統計的に構成することができ、また、セレクタ2115は、再構成可能装置が設計段階にあるとき動的に構成することができる。セレクタ2115の特定の構成は、再構成可能装置に構成される特定のアプリケーションによって決定される。
例えば、クラスタ300が特定の制御信号の生成の主ソースである アプリケーションによって構成される場合、セレクタ2115は、(選択出力170から)第1のセレクタ入力2120上の値を選択し、その値をセレクタ出力2160に転送し、次に1次マルチプレクサ200のセレクタ入力240に転送するように構成される。この値は、セレクタリンク2150を用いて、専用ルーティングネットワーク2110で、別のセレクタに転送され、そして再構成可能装置内の他のクラスタの他のマルチプレクサに転送される。
しかしながら、クラスタ300が、特定の制御信号の主ソースである専用ルーティングネットワーク2110に接続される別のクラスタのスレーブである場合、セレクタ2115は、(隣接クラスタから)第2のセレクタ入力2130上の値を選択し、それをセレクタ出力2160、セレクタ入力240に転送され、さらにセレクタリンク2150を介して別のセレクタに転送するよう構成される。クラスタが専用ルーティングネットワーク2110に接続されない別のクラスタのスレーブである場合、セレクタ2115は、(汎用ルーティングネットワークから)第3のセレクタ入力2140上の値を選択し、それを上述したようにさらに転送するように構成される。したがって、制御または他の信号は、幅広いソースから受け取られ、マルチプレクサまたは再構成可能装置内のクラスタの他の構成要素の入力または所望の他の入力を選択するように効率的に転送されることができる。
再構成可能装置の一実施形態である専用ルーティングネットワーク2110は、図22に示されるように、素子内のクラスタ300の列2200に対応する、素子内の列形式に配置される。各セレクタ2115a〜dのセレクタリンク2150は、隣接セレクタ2115a〜dの第2のセレクタ入力2130に接続される。これによって、選択信号などの信号を、1つのクラスタ300a〜d内で生成し、列2200の他のクラスタに迅速に伝播することができる。
例えば、列2200が(4つの4ビット幅ALUを用いて)16ビット幅 データ経路を実現するのに使用される場合、4つすべての1次マルチプレクサ200は通常、同じ制御信号を使用する必要がある。したがって、制御信号は、クラスタ300a内のALU100によって生成し、専用ルーティングネットワーク2110を用いてクラスタ300b〜d内の1次マルチプレクサ200に転送することができる。もしくは、制御信号は、再構成可能装置内のどこかで生成し、1つまたは複数の第3のセレクタ入力2140を介して列2200に供給することができる。
制御信号は上述したように、クラスタ300aのALU100からセレクタ2115aへ転送される、あるいは、第3のセレクタ入力2140上のセレクタ2115aによって受信される。セレクタ2115aは制御信号を保持する適切なセレクタ入力を選択し、クラスタ300aに接続されたセレクタ出力2160を介して、制御信号をクラスタ300aの1次マルチプレクサ200に転送する。セレクタ2115aは、制御信号をクラスタ300bと対応付けられるセレクタ2115bにも転送する。セレクタ2115bは制御信号を受信し、その信号をさらにクラスタ300bに接続されたセレクタ出力2160を介して、クラスタ300bの1次マルチプレクサ200に転送する。セレクタ2115bは上述したような方法で、制御信号を列2200内のクラスタ300c〜dにも転送する。したがって、同じ制御信号が、クラスタ300a〜d内の1次マルチプレクサ200のすべてに迅速に伝播される。
図22では、セレクタ2115aによって画定される部分と対応付けられる配線とを通る、クラスタ300aのALUからクラスタ300aのMUXまでの経路は、図22に示される物理的および論理的に等価の経路(クラスタ300bのクラスタ300b−MUXのALU、クラスタ300cのクラスタ300c−MUXのALU、クラスタ300dのクラスタ300D−MUXのALU)のいずれも塞がれないため、直接接続である。しかしながら、セレクタ2115aおよびセレクタ2115bによって画定される部分と対応付けられる配線を通る、クラスタ300aのALUからクラスタ300bのMUXまでの経路は、セレクタ2115bおよびセレクタ2115cによって画定される等価部分と対応付けられる配線とを通る、クラスタ300bのALUからクラスタ300cのMUXまでの等価経路を塞ぐ(セレクタ2115bで)ため、直接接続ではない。
本実施形態の専用ルーティングネットワーク2110は、クラスタ300a〜dのALU100を一緒に接続するキャリーネットワークのチェーンからは離れたネットワークである。専用ルーティングネットワーク2110は、再構成可能装置のクラスタ300a〜d内の各マルチプレクサ200のセレクタ入力240などの入力を、別のマルチプレクサ200の入力に接続し、キャリーネットワークのチェーンは、各ALU100のキャリー出力を隣接するALU100のキャリー入力に接続する。
図23を参照すると、専用ルーティングネットワーク2110はさらに、選択信号が列2200の上下方向のように複数の方向に伝播できるように構成することができる。本実施形態では、下方向にセレクタ2115a〜dをリンクするように、追加のセレクタリンク2150が追加されている。これらの追加のセレクタリンク2150はそれぞれ、セレクタ2115a〜d上の第4のセレクタ入力2310につながる。この構成では、信号は、クラスタ300d内のALU100の選択出力170からセレクタ2115dへ、そしてセレクタリンク2150へと転送することができる。次に、信号は、セレクタリンク2150に沿って、下方の隣接セレクタ2115cの第4の入力2310へ下方向に転送される。セレクタ2115cは、第4の入力2310を選択し、選択信号を受信し、クラスタ300cの1次マルチプレクサ200に接続されるセレクタ出力2160に選択信号を転送する。
上記の実施形態では、専用ルーティングネットワーク2110は、ALUから1次マルチプレクサに選択信号を移送するように構成されていた。図24〜26に示される別の実施形態では、選択信号以外の信号は、専用ルーティングネットワーク2110を用いて転送させることができる。例えば、図24では、ALU100の関数出力160は、専用ルーティングネットワーク2110の第1のルーティング入力2125に接続される。ルーティング出力2165は、1次マルチプレクサ200の第2の入力220に接続される。もしくは、ルーティング出力2165は、第1の入力210に接続することができる。このルーティングネットワークは、ALU100のデータ出力を、同じクラスタの1次マルチプレクサのデータ入力、および専用ルーティングネットワーク2110に接続される他の1次マルチプレクサのデータ入力に転送する。
図25では、マルチプレクサ出力230は、第1のルーティング入力2125に接続される。ルーティング出力2165は、ALU100の命令入力130、および専用ルーティングネットワーク2110を介して他のALUの命令入力に接続される。この構成によって、1次マルチプレクサ200は、命令をALU100および、専用ルーティングネットワーク2110に接続される他のALUに送ることができる。
図26では、ALU100の関数出力160は、専用ルーティングネットワーク2110の第1のルーティング入力2125に接続される。ルーティング出力2165は、ALU100の命令入力130に、および専用ルーティングネットワーク2110を介して他のALUの命令入力に接続される。この構成によって、ALU100は、自身に、および専用ルーティングネットワーク2110に接続される他のALUに命令を送ることができる。
図27では、マルチプレクサ出力230は、第1のルーティング入力2125に接続される。ルーティング出力2165は、キャリー選択マルチプレクサ2170の第2のキャリー入力2180と、専用ルーティングネットワーク2110を介して他のキャリー選択マルチプレクサの入力にも接続される。この構成によって、1次マルチプレクサ200は、キャリー情報をALU100と、専用ルーティングネットワーク2110に接続される他のALUにも送信することができる。この構成は図12の構成に似ており、1次マルチプレクサ出力230はキャリー入力マルチプレクサ1210に接続され、専用ルーティングネットワーク2110を介して、他のクラスタ内のキャリー入力マルチプレクサに追加で接続される。
図28では、キャリーアウト出力150は、第1のルーティング入力2125に接続される。ルーティング出力2165は、1次マルチプレクサ200の第2の入力220に、および専用ルーティングネットワーク2110を介して他のクラスタ内の他の1次マルチプレクサの入力に接続される。この構成によって、ALU100は、キャリーアウトデータを1次マルチプレクサ200、および専用ルーティングネットワーク2110に接続される他の1次マルチプレクサに送ることができる。この構成は図12の構成と同様で、キャリーアウト出力150は入力選択マルチプレクサ910に接続され、専用ルーティングネットワーク2110を介して、他のクラスタ内の入力選択マルチプレクサにも追加接続される。
別の実施形態では、再構成可能装置内の他の構成要素の特定ターミナルとの間で信号を伝播できる高速ネットワークを提供するために、専用ルーティングネットワーク2110は再構成可能装置の構成要素のどの入力および出力とも接続させることができる。専用ルーティングネットワーク2110が再構成可能装置内のいくつかの等価構成要素の入力をまとめることによって、再構成可能装置は、再構成可能装置に見られるALUや1次マルチプレクサなどの様々な構成要素に対応するより広いデータ経路を実現することができる。
専用ルーティングネットワーク2110は、信号を汎用ルーティングネットワークに送受信できるように、再構成可能装置上の汎用ルーティングネットワークへの接続を含むこともできる。これらの接続の例は、第2のルーティング入力2145への接続である。これらの接続は、専用ルーティングネットワークによって信号を汎用ルーティングネットワークと送受信させることによって、再構成可能装置の柔軟性を高める。
図29を参照すると、出力インバータ1610は任意に、セレクタリンク2150とセレクタ出力2160の一方または両方に追加することができる。これらの出力インバータ1610を以下詳細に説明する。図29の実施形態に適用されるように、選択信号の1次マルチプレクサ200への変換は、入力210、220の役割の交換と等価である。したがって、選択信号240の変換によって、制御されたマルチプレクサ200の入力210、220を逆方向に接続させることができる。場合によっては、このために、これらの接続を形成するコストを低減することができ、選択信号240の任意の変換のコストは、同じレベルのルータビリティを達成するより低性能の汎用ルーティングネットワークを設けることで回収できる。セレクタリンク2150の任意の変換を追加することで、セレクタ2115に入力または論理をマッピングする際の追加の汎用性を可能にする。この出力変換は、選択信号の1次マルチプレクサ200への任意の変換と、2つの選択肢が無関係な点によって判断されるかどうかは関係なく共有でき、あるいは、選択できる。
プログラム可能セレクタ
本明細書に記載するような、汎用ルーティングネットワークと専用ルーティングネットワークなどの2つのネットワークを含む再構成可能装置では、信号が1つのネットワークから別のネットワークに移される場合がある。よくあるように、汎用ルーティングネットワークが専用ルーティングネットワークとビット幅が異なる場合、2つのネットワークの広い方のビット幅容量を効率的に使用する、2つのネットワーク間の接続を設けることが有益である。
本明細書に記載するような、汎用ルーティングネットワークと専用ルーティングネットワークなどの2つのネットワークを含む再構成可能装置では、信号が1つのネットワークから別のネットワークに移される場合がある。よくあるように、汎用ルーティングネットワークが専用ルーティングネットワークとビット幅が異なる場合、2つのネットワークの広い方のビット幅容量を効率的に使用する、2つのネットワーク間の接続を設けることが有益である。
以下の図29〜33に記載される実施形態は、4ビット汎用ルーティングネットワークと2ビット専用ルーティングネットワークを仮定するが、当業者は、後述する概念が汎用ルーティングネットワークまたは専用ルーティングネットワークのいずれかのビット幅にも同等に適用されることを認識するであろう。
プロセッサ条件信号などの専用ルーティングネットワーク上の2ビット幅信号は、同じ演算値の信号を4ビット幅ネットワークを単に配置することによって、4ビット幅汎用ルーティングネットワークで表示させることができる。例えば、[11]の2ビットのプロセッサ条件信号は、[0011]として4ビット幅ネットワークで表示させることができ、条件信号は4ビット幅ネットワークの最下位2ビットに配置される。次に、この同じ信号は、4ビット幅信号の最下位2ビットを2ビットネットワークに単に配置することによって、2ビットネットワークに配置し直すことができる。
この原理は、直接接続上の信号をルーティングネットワークに送受信する際にも適用される。例えば、1ビットの直接接続から4ビットネットワークに信号を伝達する。これを実現する構成は、図4Bに示され、図4Bを説明する本文に記載されている。同様に、信号は、4ビットネットワークから1ビットの直接接続に伝達することができる。これを実現する構成は、図12に示され、図12を説明する本文に記載されている。
このように4ビットネットワーク上で2ビット信号を転送すると、4ビットネットワークの4ビットのうちの2ビットは使用されなくなる。本発明のさらなる実施形態によると、図30〜34に示されるように、再構成可能装置上の信号は、セレクタを使用する様々なビット幅のルーティングネットワーク間でより効率的に転送されることができる。
図30Aを参照すると、一実施形態の狭化セレクタ3000は、汎用ルーティングネットワークなどの第1のネットワークからのデータ入力3005とセレクタ入力3007とを含む。狭化セレクタ3000は、専用ネットワークまたは直接接続などの第2のネットワークへのデータ出力3010も含む。データ入力3005は、データ出力3010より広い。本実施形態では、データ入力3005は4ビット幅で、データ出力3010は2ビット幅だが、別の実施形態では他の幅を使用することができる。狭化セレクタ3000は、データ入力3005上の4ビットの中から選択し、セレクタ入力3007の信号に従い、選択したビットをデータ出力3010に供給する。
図30B〜Cを参照すると、一実施形態の狭化セレクタ3000は、論理ゲートを用いて構成される。狭化セレクタ3000で使用される基本ブロック3001を図30Bに示す。ブロック3001は、4つのANDゲート3020a〜dと1つのORゲート3030を含む。各ANDゲート3020a〜dは、データ入力3005の1ビット(I0、I1、I2、I3)とセレクタ入力3007の2ビット(0、1)を受信する。セレクタ入力3007のビットは、下記図4に示される選択スキームを実行するために、ANDゲートに提供される前に反転させることができる。各ANDゲート3020a〜dは、ORゲート3030の入力の論理和を出力する。ORゲートは、出力3010のビット線上の入力の4つ全部の論理和を出力する。
セレクタ入力3007上のビットは、図4の選択スキームを実現するため、入力のいくつかをANDゲート3020a〜dのいくつかに反転させる。第1のANDゲート3020aは、反転されるビットラインを1本も持たない。第2のANDゲート3020bは、反転されるビット線0を有する。第3のANDゲート3020cは、反転されるビット線1を有する。第4のANDゲート302Odは、反転されるビット線0および1の両方を有する。この選択スキームは、表4に従い、入力ビット線I0、I1、I2、I3を出力ビット線(Out)に転送させる。
図30Cを参照すると、狭化セレクタ3000は2つの基本ブロック3001a〜bを含み、1つはデータ出力3010mp各出力線(Out0、Out1)用である。データ入力3005の入力ビット線(I0、I1、I2、I3)は、基本ブロック3001a〜bの両方に平行に接続される。セレクタ入力3007は、2セットの2つの選択ビット線を備え、各セットは基本ブロック3001a〜bのうちの1つを制御する。選択ビット線(0、1)は第1の基本ブロック3001aを制御し、選択ビット線(2、3)は第2の基本ブロック3001bを制御する。
セレクタ入力3007上の選択信号はビットを選択して、下記表5に従い、データ出力3010に提供する。
図30Dを参照すると、狭化セレクタ3000’の別の実施形態が示されている。この別の実施形態では、追加の選択ビット線(4、5、6、7)が設けられ、各ANDゲート3020は、選択ビット線(0−7)のうちの1つを介して個々に選択可能である。したがって、各出力ビット線に対して複数の入力ビット線を選択することができる。その後、複数の入力ビット線はORゲート3030を用いて論理輪を取られ、各出力ビット線を生成する。本実施形態は、追加の論理機能、すなわち、複数の入力線の論理和をとる性能も含む狭化セレクタ3000の例である。下記表6の選択信号によって制御されると、図30Dの実施形態は図30Cの実施形態と同じ出力を生成する。
図30Dの実施形態は、すべての入力(選択0000−0000)を非活動化する、すべての入力(1111−1111)を活動化する、あるいは、ORゲート3030に提供される入力(例えば、1101−1001)の他の任意の組み合わせを選択するなど、さらなる構成を可能にする。
セレクタ入力を用い、図30B〜Cの実施形態に示される狭化セレクタ3000のゲートレベルの設計は、データ入力3005の単独のビット線がデータ出力3010の各ビット線に向けられるようにプログラム可能である。図30B〜Cの実施形態は、低減されたビット幅のセレクタ入力3007と、データ入力3005上の線とデータ出力3010上の線間の任意の接続パターンを作製する能力とを交換する。図30Dの別の実施形態に示される狭化セレクタ3000のゲートレベルの設計は、データ入力3005上の線とデータ出力3010上の線との間の任意の接続パターンを可能にする。さらに、狭化セレクタ3000は、データ出力3010の1つまたは複数の線がデータ入力3005上の信号のいずれも受信しないようにプログラムすることができる。トレードオフは、増大されたビット幅のセレクタ入力3007である。もしくは、データ入力3005上の信号を受信しない出力線は、狭化セレクタと対応付けられる構成メモリまたは他のソースから一定の信号を受信することもできる。
図31Aを参照すると、一実施形態の拡張セレクタ3100は、第2のネットワークからのデータ入力3105とセレクタ入力3107とを含む。拡張セレクタ3100は、第1のネットワークへのデータ出力3110も含む。データ入力3105は、データ出力3110より狭い。本実施形態では、データ入力3105は2ビット幅で、データ出力3110は4ビット幅だが、別の実施形態では他の幅を使用することができる。拡張セレクタ3100は、セレクタ入力3107上の信号に応じて、データ入力3105上の2ビットを、データ出力3110上の2つ以上の選択されたビットに供給する。
図31Bを参照すると、一実施形態の拡張セレクタ3100は、論理ゲートを用いて構成されている。拡張セレクタ3100は、8つのトライステートドライバ3120a〜hを含む。データ入力3105は、2つのビット線(I0、I1)を含む。各ビット線は、4つのトライステートドライバの入力に接続される。ビット線I0は、トライステートドライバ3120a〜dに接続される。ビット線I1はトライステートドライバ3120e〜hに接続される。セレクタ入力3107は、4つのビット線(S0、S1、S2、S3)を含み、各ビット線はトライステートドライバのうちの2つの入力を制御するように接続される。ビット線S0はトライステートドライバ3120bおよび3120eを制御する。ビット線S1は、トライステートドライバ3120aおよび3120fを制御する。ビット線S2は、トライステートドライバ3120dおよび3120gを制御する。ビット線S3は、トライステートドライバ3120cおよび3120hを制御する。データ出力3110は、4つのビット線O0、O1、O2、O3を含む。ビット線O0は、トライステートドライバ3120aおよび3120eに接続される。ビット線O1は、トライステートドライバ3120bおよび3120fの出力に接続される。ビット線O2は、トライステートドライバ3120cおよび3120gの出力に接続される。ビット線O3は、トライステートドライバ3120dおよび3120hの出力に接続される。ビット対(S0、S1)および(S2、S3)の値は、対のうちの最大1ビットが高くなるように制限される。この制限では、各出力ビット線O0、O1、O2、O3に接続される2つのトライステートドライのうち1つのみが駆動されるため、各出力ビット線は多くても1つの入力ビット線に接続される。全セレクタ入力ビット線のうち多くとも1ビットがHighであるという制限では、最下部または最上部の2出力ビットのいずれか(あるいはどちらでもない)が、下記表7に示されるように、入力に接続される。もしくは、各対の単独ビットが同じ時間でHighであることが許可される場合(例えば、1001)、入力信号は最下部または最上部の2出力ビットの両方に接続することができ、結果的に信号分割効果が生じる。
図31Cを参照すると、拡張セレクタ3100の別の実施形態が示されている。本実施形態では、8つの選択ビット線があり、各選択ビット線は単独のトライステートドライバを制御している。制御ビット対(S0、S1)、(S2、S3)、(S4、S5)、(S6、S7)の値は、各対の多くとも1つがハイである(すなわち、1つのドライバのみが各出力に接続される)ように制限される。2対の出力(O0、O1)または(O2、O3)のうち1方のみに入力を向けることができるという追加の制限の場合、許可制御信号とその結果生じるデータ出力3110上の出力を表8に示す。
上述の追加の制限が取り除かれた場合、図31Cの構成によって、入力ビット線I0、I1と出力ビット線O0、O1、O2、O3間を任意に接続させることができる。例えば、1001〜0110のセレクタ入力は、結果的にI1とO3、I0とO2、I0とO1、I1とO0とを接続する。したがって、一実施形態の拡張セレクタ3100は、データ入力3105上の線とデータ出力3110上の線間の任意の接続パターンを可能とするようにプログラム可能である。さらに、拡張セレクタ3100は、データ入力3105の1つまたは複数の線がデータ出力3110の線のいずれにも供給されないように、および/または、データ出力3110の1つまたは複数の線がデータ入力3105のいずれの線にも接続されないようにプログラム可能である。データ入力3105の線に接続されないデータ出力3110の線がある場合、拡張セレクタ3100は、これらのデータ出力3110の線を定数値などの別のデータソースに接続するようにプログラム可能である。上述のトライステートドライバを用いる実施形態の拡張セレクタを使用する際、1)出力3110の線がトライステートドライバによって駆動されない、あるいは、2)再構成可能装置内の他の入力に最終的に接続される出力3110上のすべての線が厳密に1つのトライステートドライバによって駆動される、ことが好ましい。すなわち、出力3110は、出力線の1部が駆動される他の入力に接続されてはならない。
狭化セレクタ3000と拡張セレクタ3100は、より複雑なセレクタも構成するように使用することができる。例えば、図32Aを参照すると、マージセレクタ3200が示されている。マージセレクタ3200は、第2のネットワーク上の様々な異なるソースのような複数の比較的狭いソースから、あるいは、構成要素からマージセレクタ3200までの直接接続からのビットをマージする。マージされたビットは、第1のネットワークなどの比較的広いネットワークに提供される。マージセレクタ3200は、比較的狭いソースからのデータを受信するための複数のデータ入力3205a〜bと、比較的広いターゲットにマージされたデータを提供するためのデータ出力3210とを含む。マージセレクタ3200は、各データ入力3205a〜bのどのビットがデータ出力3210の各線に向けられるべきかを示す選択信号を受信するセレクタ入力3207も含む。
上述の狭化セレクタ3000および拡張セレクタ3100と同様、マージセレクタ3200は、データ入力3205a〜b上の個々のビット線を含むデータ入力3205a〜bのいずれかをデータ出力3210の線のいずれかに向けるようにプログラム可能である。マージセレクタ3200は、データ出力3210の各線に信号を提供する必要はないし、各データ入力3205a〜bの各線をデータ出力3210の線に提供する必要もない。データ入力3205a〜b上の信号は、データ出力3210の線のサブセットを外すように提供することができる(例えば、データ入力3205aの線をデータ出力3210の線1および2に供給し、データ入力3205bの線をデータ出力3210の線3および4に供給する)。もしくは、このような設計が所望されれば、サブセットは重複してもよい。
図32Bを参照すると、マージセレクタ3200は、データ出力3210に並列に接続される2つの拡張セレクタ3100を用いて構成される。第1の拡張セレクタ3100aは、データ入力3105aで第1のデータ入力3205aを受信する。第1の拡張セレクタは、第1のセレクタ入力3107aで選択信号を受信し、その信号は、データ入力3105aの線を第1のデータ出力3110aの選択された線に導く。第2の拡張セレクタ3100bは、データ入力3105bで第2のデータ入力3205bを受信する。第2の拡張セレクタは第2のセレクタ入力3107bで選択信号を受信し、その信号はデータ入力3105bの線を第2のデータ出力3110bの選択された線に導く。データ出力3110aおよび3110bの線は結合され、マージセレクタ3200のデータ出力3210に提供される。セレクタ入力3207はマージセレクタ3200に関する選択信号を受信し、その信号は、マージセレクタ3200の拡張セレクタ3110a〜bのそれぞれに関する選択信号を含む。上記図31Bの拡張セレクタは、4つの制御ビット(3107a(S0、S1)、3107b(S0、S1))、および(3107a(S2、S3)、3107b(S2、S3))の各グループからの1ビットのみがどの時点でもHighであることを条件とすれば、図32Bのマージセレクタ(2つの上記回路の出力バスが共に結び付けられている)で使用することができる。
図33Aを参照すると、デマージセレクタ3300が示されている。デマージセレクタ3300は、第1のネットワークのような比較的広いソースからビットを分離する。分離されたビットは、第2のネットワークなどの1つまたは複数の比較的狭いネットワーク、あるいは、デマージセレクタ3300から再構成可能装置の構成要素までの直接接続に提供される。デマージセレクタ3300は、比較的広いソースからのデータを受信するためのデータ入力3305と、比較的狭いターゲットにデマージされたデータを提供するための複数のデータ出力3310a〜bとを含む。デマージセレクタ3300は、各データ出力3310a〜bのどのビットがデータ入力3305の各線を受け取るべきかを示す選択信号を受信するセレクタ入力3307も含む。
上述の狭化セレクタ3000および拡張セレクタ3100と同様、デマージセレクタ3300は、データ入力3305の線のいずれかを、データ出力331Oa〜bの個々のビット線のいずれかを含むデータ出力3310a〜bのいずれかに導くようにプログラム可能である。デマージセレクタ3300は、データ出力3310a〜bの各線上の信号を提供する必要はないし、データ入力3305の各線がデータ出力3310a〜bの線に提供される必要もない。データ入力3305上の信号は、データ出力3310a〜bのうちの1つのみに提供することができる(例えば、データ入力3305の線1〜2をデータ出力3310aに提供し、データ入力3305の線304をデータ出力3310bに提供する)。若しくは、このような設計が望まれれば、同じ入力信号を複数のデータ出力に提供することができる。
図33Bを参照すると、デマージセレクタ3300は、データ入力3305に平行に接続される2つの狭化セレクタ3000を用いて構成される。第1の狭化セレクタ3000aは、そのデータ入力3005a上でデータ入力3305を受信する。第1の狭化セレクタ3000aはセレクタ入力3007a上で選択信号を受信し、その信号はデータ入力3005aの所望の線を選択して、データ出力3010aの線にそれらを振り向ける。第2の狭化セレクタ3000bは、そのデータ入力3005b上でデータ入力3305を受信する。第2の狭化セレクタ3000bは、セレクタ入力3007b上で選択信号を受信し、その信号は、データ入力3005bの所望の線を選択して、データ出力3010bの線にそれらを振り向ける。データ出力3010aは、デマージセレクタ3300のデータ出力3310aに接続される。データ出力3010bは、デマージセレクタ3300のデータ出力3310bに接続される。セレクタ入力3307は、デマージセレクタ3300に対する選択信号を受信し、その信号は、デマージセレクタ3300の狭化セレクタ3010a〜bのそれぞれに対する選択信号を含む。
一実施形態では、再構成可能装置は、装置を通る信号送信を効率化するため、マージセレクタ3200とデマージセレクタ3300を使用する。図34を参照すると、信号を送る方法が示されている。ステップ3410では、マージセレクタ3200は、専用ネットワークまたは直接接続などの比較的狭いソースからの複数の信号を、汎用ルーティングネットワークやより広い専用ルーティングネットワークなどの単独の広いターゲット上にパックするために使用される。ステップ3420では、パックされた信号は広いターゲットを介して、再構成可能装置内の目的位置まで送信される。ステップ3430では、対応するデマージセレクタ3300が、広いターゲットの遠い端で複数の信号をアンパックし、各種信号の最終的目的地である比較的狭いネットワークまたは直接接続に信号を分配するために使用される。
再構成可能装置におけるマージセレクタ3200とデマージセレクタ3300の具体的な使用例に関しては、図35を参照されたい。図21に示された再構成可能装置の部分は、マージセレクタ3200とデマージセレクタ3300の追加によって延長されている。マージセレクタ3200は第1の入力3410、第2の入力3420、第3の入力3430、および第4の入力3440を含み、どれも1ビット幅である。第1の入力3410はキャリー出力2190に接続される。第2の入力3420は、1次マルチプレクサ200のセレクタ入力240に接続される。第3の入力3430と第4の入力3420および任意の追加の入力は、設計者が汎用ルーティングネットワークとのインタフェースを希望する任意のソースに接続することができる。マージセレクタ3200は第1の出力3450も含み、第1の出力は汎用ルーティングネットワークに接続される。第1の出力3450は4ビット幅である。
したがって、マージセレクタ3200は以下の1ビット信号を受信する。
1.Cout
2.1次マルチプレクサ選択信号
3.他の所望信号1
4.他の所望信号2
1.Cout
2.1次マルチプレクサ選択信号
3.他の所望信号1
4.他の所望信号2
これらの信号は、セレクタ入力3207で受信した選択信号に従い、マージセレクタ3200によって4ビット汎用ルーティングネットワークにパックされる。例えば、選択信号は、汎用ルーティングネットワークの4ビットに以下の順番でパックされた信号を保持させる。
アプリケーションの設計者の希望に応じて、他の順番ももちろん可能である。いったんパックされたら、これらの信号は、汎用ルーティングネットワークに配置され、所望のターゲットクラスタに転送される。
デマージセレクタ3300に移ると、デマージセレクタは、4ビット幅である、汎用ルーティングネットワークからの入力3455を含む。デマージセレクタ3300は、第1の出力3460、第2の出力3470、第3の出力3480、および第4の出力3490も含み、すべてが1ビット幅である。第1の出力3460は後述する第2のキャリー入力2180に接続され、上述したように、汎用ルーティングネットワークからキャリーイン(Cin)信号を受信するためである。第2の出力3470は専用ルーティングネットワーク2110の後述する第2のルーティング入力2145に接続され、上述したように、汎用ルーティングネットワークから1次マルチプレクサ200の選択信号を受信するためである。第3の出力3480および第4の出力3490は、設計者が汎用ルーティングネットワークとのインタフェースを取ることを希望する他のターゲットに接続される。
デマージセレクタ3300は、上記表6に示されるパック信号などのパックされた信号を汎用ルーティングネットワークから受信する。このパック信号は、セレクタ入力3307で受信した選択信号に従い、デマージセレクタ3300によってアンパックされる。例えば、デマージセレクタ3300は、表6の信号を以下の4つの信号にアンパックする。
1.Cin(Cout)
2.1次マルチプレクサ選択信号
3.他の所望信号1
4.他の所望信号2
1.Cin(Cout)
2.1次マルチプレクサ選択信号
3.他の所望信号1
4.他の所望信号2
デマージセレクタ3300は、第2のキャリー入力2180に接続される第1の出力3460上のCin信号を供給する。したがって、別のクラスタからのCout信号は、クラスタ300へのCin信号として提供される。デマージセレクタ3300は、第2の出力3470上に1次マルチプレクサ選択信号を提供し、第2の出力は専用ルーティングネットワーク2110の第2のルーティング入力2145に接続される。したがって、別のクラスタからの1次マルチプレクサ選択信号は、クラスタ300に提供される。次に、この1次マルチプレクサ選択信号は、セレクタ2115、セレクタ出力2160、および第1のルーティング出力2165を介して1次マルチプレクサ200のセレクタ入力240に伝播されることによって、1次マルチプレクサ200は、専用ルーティングネットワーク2110に直接接続されていないクラスタまたは他の構成要素で生成される信号によって制御されることができる。他の所望信号は、設計者の希望に応じて、再構成可能装置他の構成要素に接続可能な第3の出力3480および第4の出力3490に提供される。
本発明の本実施形態に従い信号をパックすると、例えば、第1のクラスタからのCout信号を、第2のクラスタの汎用ルーティングネットワークを通って転送させることができ、そこでCout信号は、第2のクラスタのALUのCin信号として印加することができる。同様に、マルチプレクサ選択信号は、第1のクラスタから第2のクラスタへ汎用ルーティングネットワークで転送され、そこでこれらの信号は、第2のクラスタ内の1次マルチプレクサを制御するために使用することができる。したがって、本発明の一実施形態の再構成可能装置は、2つの方法のいずれかでクラスタ間で、キャリー信号および選択信号などの信号を輸送することができる。クラスタがどちらも同じ専用ルーティングネットワークに接続される場合、クラスタの相対的位置に応じて、専用ルーティングネットワーク上で転送することができる。2つのクラスタが同じ専用ルーティングネットワークに接続されない場合、信号はパックされ、1つのクラスタから別のクラスタへ汎用ルーティングネットワーク上で効率的に転送することができる。無駄にされるビット幅の量は低減され、ときには、本発明の一実施形態のマージおよびデマージセレクタのデータパック機能を用いて除去される場合もある。
上記の説明では、本発明は、特定の実施形態に関して説明されている。しかしながら、本発明のより広範な精神および範囲を逸脱せずに様々な改良または変更を行うことが可能であろうことは明白である。例えば、読者は、本明細書に記載される工程フロー図に示される工程作業の具体的な順番や組み合わせは単に説明のためのものであって、本発明は異なるまたは追加の工程作業、あるいは工程作業の異なる組み合わせまたは順番を用いて実行可能であると理解すべきである。したがって、明細書と図面は限定的ではなく説明的な意味で考えられるべきであって、本発明は請求項およびその法的等価物に従う場合を除き、限定的であるとみなすべきではない。
Claims (47)
- 複数のルーティングネットワーク入力と複数のルーティングネットワーク出力とを有する第1のネットワークと、
複数のセレクタと複数のセレクタリンクを有し、各セレクタリンクが前記複数のセレクタのうちの2つを結合する第2のネットワークと、
それぞれが前記第1のネットワークと前記第2のネットワークに接続される複数のクラスタと、
を備える再構成可能装置において、
前記第2のネットワークが、前記複数のクラスタのうちの1つから信号を受信し、前記複数のセレクタのうちの1つまたは複数を用いて前記信号を前記複数のクラスタのうちの1つに転送するように構成される再構成可能装置。 - 前記第2のネットワークがさらに複数の第1のルーティング入力と複数のルーティング出力を備え、前記複数のセレクタがそれぞれ第1のセレクタ入力、第2のセレクタ入力、およびセレクタ出力を備え、前記複数のセレクタのうちの1つの第1のセレクタ入力が前記複数の第1のルーティング入力のうちの1つに接続され、前記複数のセレクタのうちの1つのセレクタ出力が前記複数のルーティング出力のうちの1つに接続され、前記複数のセレクタリンクがそれぞれ前記複数のセレクタのうちの1つのセレクタ出力を前記複数のセレクタのうちの別のセレクタのセレクタ入力に接続する、請求項1の再構成可能装置。
- 前記複数のクラスタのそれぞれが、前記第2のネットワークの複数のルーティング出力のうちの1つに接続されるクラスタ入力と、前記第2のネットワークの複数の第1のルーティング入力に接続されるクラスタ出力とをさらに備える、請求項2の再構成可能装置。
- 各クラスタは演算論理装置(ALU)と1次マルチプレクサとを備え、
前記ALUは、
それぞれが前記複数のルーティングネットワーク出力のうちの1つに接続される第1および第2のデータ入力と、前記複数のルーティングネットワーク入力のうちの1つに接続されるデータ出力と、
前記クラスタ出力に接続されるALU選択出力と、を有し、
前記ALUは前記ALU選択出力にセレクタ選択信号を提供するように構成され、
前記1次マルチプレクサは、
前記複数のルーティングネットワーク出力のうちの1つに接続される第3および第4のデータ入力と、前記複数のルーティングネットワーク入力のうちの1つに接続される第2のデータ出力と、
前記クラスタ入力に接続されるマルチプレクサ選択入力と、を有し、
前記1次マルチプレクサは、前記マルチプレクサ選択入力に提供される選択信号に応じて、前記第3および第4のデータ入力のうちの1つを前記第2のデータ出力に接続するように構成される、請求項3の再構成可能装置。 - 前記ALU選択出力は、前記クラスタ出力、前記複数のセレクタの第1のセレクタ、前記クラスタに対応する前記第1のセレクタ、および前記クラスタ入力を介して前記1次マルチプレクサの前記マルチプレクサ選択入力に接続される、請求項4の再構成可能装置。
- 前記ALU選択出力は、前記クラスタ出力、前記複数のセレクタの第1のセレクタ、前記第1のセレクタがクラスタに対応する、セレクタリンク、複数のセレクタの第2のセレクタ、前記第2のセレクタが第2のクラスタに対応する、および前記第2のクラスタに属するクラスタ入力を介して、前記第2のクラスタに属する第2の1次マルチプレクサの前記マルチプレクサ選択入力に接続される、請求項4の再構成可能装置。
- 前記複数のクラスタのそれぞれは、前記複数のルーティングネットワーク出力のうちの1つに接続される第2のクラスタ入力と、前記複数のルーティングネットワーク入力のうちの1つに接続される第2のクラスタ出力とをさらに備える、請求項2の再構成可能装置。
- 前記第2のネットワークは、それぞれが前記第1のネットワークのルーティングネットワーク出力のうちの1つに接続される複数の第2のルーティング入力をさらに備え、前記複数のセレクタはそれぞれ第3のセレクタ入力をさらに備え、前記複数の第2のルーティング入力のそれぞれが前記複数のセレクタのうちの1つの前記第3のセレクタ入力に接続される、請求項2の再構成可能装置。
- 前記複数のセレクタは前記複数のクラスタに対応する複数のマルチプレクサをさらに備え、各マルチプレクサは選択信号源に接続される選択信号入力をさらに備え、前記マルチプレクサは、前記選択信号入力で提供される選択信号に応じて、前記第1または第2のセレクタ入力のうちの1つをセレクタ出力に接続するように構成される、請求項2の再構成可能装置。
- 前記複数のルーティング出力がそれぞれ対応する処理素子に接続される、請求項2の再構成可能装置。
- 前記複数のルーティング出力がそれぞれ、対応する処理素子の対応する入力に接続される、請求項10の再構成可能装置。
- 前記複数のルーティング出力がそれぞれ、1次マルチプレクサの前記マルチプレクサ選択入力に接続される、請求項11の再構成可能装置。
- 前記ルーティング出力に接続される選択可能なインバータをさらに備え、前記選択可能なインバータがインバータイネーブル信号の状態に応じて、ルーティング出力上の信号を反転させる、あるいは反転させない、請求項2の再構成可能装置。
- 前記セレクタリンクに接続される選択可能なインバータをさらに備え、前記選択可能なインバータがインバータイネーブル信号の状態に応じて、前記セレクタリンク上の信号を反転させる、あるいは反転させない、請求項2の再構成可能装置。
- 前記第1のネットワークは第1のビット幅を備え、前記第2のネットワークは第1のビット幅と異なる第2のビット幅を備える、請求項1の再構成可能装置。
- 複数のキャリールーティングネットワークをさらに備え、各クラスタが前記複数のキャリールーティングネットワークのうちの1つにそれぞれ接続されるキャリー入力およびキャリー出力をさらに備える、請求項1の再構成可能装置。
- 前記第2のネットワークは選択信号を転送する、請求項1の再構成可能装置。
- 前記複数のセレクタリンクはチェーン情報で複数のセレクタに接続する、請求項1の再構成可能装置。
- 前記複数のセレクタリンクはツリー情報で前記複数のクラスタを接続するように構成される、請求項1の再構成可能装置。
- 前記第1のネットワークは汎用ルーティングネットワークを備える、請求項1の再構成可能装置。
- 前記第2のネットワークは専用ルーティングネットワークを備える、請求項1の再構成可能装置。
- 第1の処理素子タイプの複数の第1の処理素子と
第2の処理素子タイプの複数の第2の処理素子と、
前記複数の第1および第2の処理素子のそれぞれに接続され、前記複数の第1または第2の処理素子のいずれかの素子からの信号を、前記複数の第1または第2の処理素子のうちの別の素子に転送するように構成される汎用ルーティングネットワークと、
前記複数の第1の処理素子に接続され、前記複数の第1の処理素子が前記第1の処理素子タイプの単独の処理素子と同じ論理関数を有し、前記複数の第1の処理素子の幅に対応する総データ経路幅を有するように、データ経路を横断する幅で、前記複数の第1の処理素子をカスケード接続するように構成される第1の専用ルーティングネットワークと、
前記複数の第2の処理素子に接続され、前記複数の第2の処理素子が前記第2の処理素子タイプの単独の処理素子と同じ論理関数を有し、複数の第2の処理素子の幅に対応する総データ経路幅を有するように、データ経路を横断する幅で、前記複数の第2の処理素子をカスケード接続するように構成される第2の専用ルーティングネットワークと、
を備える再構成可能装置。 - 前記第1の処理素子タイプはALUを備え、前記第2の処理素子タイプはマルチプレクサを備え、前記第1の専用ルーティングネットワークはキャリーネットワークを備え、前記第2の専用ルーティングネットワークは選択信号ネットワークを備える、請求項22の再構成可能装置。
- 複数の処理素子と、
第1のビット幅と、前記複数の処理素子のうちの第1の処理素子に接続される第1の処理素子接続とを有する第1のルーティングネットワークと、
前記第1のビット幅より狭い第2のビット幅と、前記複数の処理素子のうちの第2の処理素子に接続される第2の処理素子接続とを有する第2のルーティングネットワークと
前記第1のルーティングネットワークに接続される第1のビット幅の入力と、前記第2のルーティングネットワークに接続される第2のビット幅の出力とを有するプログラム可能セレクタと、
を備える再構成可能装置であって、
前記プログラム可能セレクタは、入力において第1のビット幅の入力を前記第1のルーティングネットワークから受信し、出力において第2のビット幅の出力信号を前記第2のルーティングネットワークに提供するように構成され、前記出力信号は1または2ビット以上の前記入力信号を有する再構成可能装置。 - 前記プログラム可能セレクタは、入力の複数ビットのうちの任意の1つが出力のビットに提供されるようにプログラム可能である、請求項24の再構成可能装置。
- 前記プログラム可能セレクタは狭化セレクタを備える、請求項24の再構成可能装置。
- 前記狭化セレクタは、入力のビットのサブセットを選択し、ビットのサブセットを出力に提供する、請求項26の再構成可能装置。
- 前記狭化セレクタは、出力の各ビットが入力からの任意のビットを受け取れるようにプログラム可能である、請求項26の再構成可能装置。
- 前記プログラム可能セレクタはデマージセレクタを備える、請求項24の再構成可能装置。
- 前記デマージセレクタは第2の出力をさらに備え、前記デマージセレクタは入力のビットの第1のサブセットを選択し、ビットの第1のサブセットを出力に提供し、入力のビットの第2のサブセットを選択し、ビットの第2のサブセットを第2の出力に提供する、請求項29の再構成可能装置。
- 前記第1のサブセットと前記第2のサブセットは独立している、請求項30の再構成可能装置。
- 前記デマージセレクタは出力および第2の出力の各ビットが入力からの任意のビットを受け取れるようにプログラム可能である、請求項30の再構成可能装置。
- 前記プログラム可能セレクタはセレクタ入力をさらに備え、前記プログラム可能セレクタは選択信号を用いてプログラムされる、請求項24の再構成可能装置。
- 前記第1のルーティングネットワークは汎用ルーティングネットワークを備え、前記第2のルーティングネットワークは専用ルーティングネットワークを備える、請求項24の再構成可能装置。
- 複数の処理素子と、
第1のビット幅と、前記複数の処理素子のうちの第1の処理素子に接続される第1の処理素子接続とを有する第1のルーティングネットワークと、
前記第1のビット幅より狭い第2のビット幅と、前記複数の処理素子のうちの第2の処理素子に接続される第2の処理素子接続とを有する第2のルーティングネットワークと、
前記第1のルーティングネットワークに接続される前記第1のビット幅の入力と、前記第2のルーティングネットワークに接続される前記第2のビット幅の出力とを有するプログラム可能セレクタと、
を備える再構成可能装置であって、
前記プログラム可能セレクタは、入力において第1のビット幅の入力を第1のルーティングネットワークから受信し、出力において第2のビット幅の出力信号を第2のルーティングネットワークに提供するように構成され、出力信号は1または2ビット以上の入力信号を有する再構成可能装置。 - 前記プログラム可能セレクタは入力のビットが出力の複数のビットのうちの1つに提供されるようにプログラム可能である、請求項35の再構成可能装置。
- 前記プログラム可能セレクタは拡張セレクタを備える、請求項35の再構成可能装置。
- 前記拡張セレクタは、入力の1つまたは複数のビットに出力のビットのサブセットを提供する、請求項37の再構成可能装置。
- 前記拡張セレクタは、入力の各ビットが出力の任意のビットに提供できるようにプログラム可能である、請求項37の再構成可能装置。
- 前記プログラム可能セレクタはマージセレクタを備える、請求項35の再構成可能装置。
- 前記マージセレクタは第2の入力をさらに備え、前記マージセレクタは1または2ビット以上の入力を選択し、1または2ビット以上の入力を出力のビットの第1のサブセットに提供し、1または2ビット以上の第2の入力を選択し、1または2ビット以上の第2の入力を出力のビットの第2のサブセットに提供する、請求項40の再構成可能装置。
- 前記第1のサブセットと前記第2のサブセットは独立している、請求項41の再構成可能装置。
- 前記マージセレクタが、入力および第2の入力の各ビットが出力の任意のビットに提供されるようにプログラム可能である、請求項41の再構成可能装置。
- 前記プログラム可能セレクタがさらにセレクタ入力を備え、前記プログラム可能セレクタが選択信号を用いてプログラムされる、請求項35の再構成可能装置。
- 前記プログラム可能セレクタが、入力のビットを受信しない出力のビットに関してデフォルト値を選択するようにプログラム可能である、請求項35の再構成可能装置。
- 前記第1のルーティングネットワークが専用ルーティングネットワークを備え、前記第2のルーティングネットワークが汎用ルーティングネットワークを備える、請求項35の再構成可能装置。
- 再構成可能装置内の第1の位置において、マージセレクタで、第1のビット幅を総計する合計ビット幅を有する複数の信号を受信すること、
前記複数の信号を、前記マージセレクタを用いて少なくとも第1のビット幅のビット幅を有する複合信号にマージすること、
少なくとも第1のビット幅のビット幅を有するルーティングネットワーク上で、前記再構成可能装置内の第2の位置に前記複合信号を転送すること、
再構成可能装置の第2の位置において、デマージセレクタで、前記複合信号を受信すること、および
前記複合信号を前記複数の信号にデマージすること、
を備える再構成可能装置を介して複数の信号を転送する方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/130,613 US7461234B2 (en) | 2002-07-01 | 2005-05-16 | Loosely-biased heterogeneous reconfigurable arrays |
PCT/EP2006/004604 WO2006122746A2 (en) | 2005-05-16 | 2006-05-16 | Loosely-biased heterogeneous reconfigurable arrays |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2008541636A true JP2008541636A (ja) | 2008-11-20 |
JP4573896B2 JP4573896B2 (ja) | 2010-11-04 |
Family
ID=37192544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008511608A Expired - Fee Related JP4573896B2 (ja) | 2005-05-16 | 2006-05-16 | 粗バイアス異種再構成可能アレイ |
Country Status (4)
Country | Link |
---|---|
US (1) | US7461234B2 (ja) |
EP (1) | EP1886228A2 (ja) |
JP (1) | JP4573896B2 (ja) |
WO (1) | WO2006122746A2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014016894A (ja) * | 2012-07-10 | 2014-01-30 | Renesas Electronics Corp | 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070079032A1 (en) * | 2005-09-30 | 2007-04-05 | Intel Corporation | Serial signal ordering in serial general purpose input output (SGPIO) |
US8832326B1 (en) * | 2005-11-01 | 2014-09-09 | Xilinx, Inc. | Circuit and method for ordering data words |
US20090187747A1 (en) * | 2008-01-18 | 2009-07-23 | Infineon Technologies Ag | System and method for tracing instruction pointers and data access |
US7966598B2 (en) * | 2008-08-29 | 2011-06-21 | International Business Machines Corporation | Top level hierarchy wiring via 1×N compiler |
US8970610B2 (en) * | 2009-11-02 | 2015-03-03 | Freescale Semiconductor, Inc. | Pixel data processing apparatus and method of processing pixel data |
EP2367117A1 (en) * | 2010-03-10 | 2011-09-21 | Panasonic Corporation | Heterogeneous routing network |
US9231594B2 (en) * | 2011-12-21 | 2016-01-05 | Ecole Polytechnique Federale De Lausanne (Epfl) | Non-LUT field-programmable gate arrays |
US10114643B2 (en) * | 2013-05-23 | 2018-10-30 | Intel Corporation | Techniques for detecting return-oriented programming |
CN104348889B (zh) * | 2013-08-09 | 2019-04-16 | 鸿富锦精密工业(深圳)有限公司 | 切换开关及电子装置 |
WO2015123848A1 (zh) * | 2014-02-20 | 2015-08-27 | 清华大学 | 可重构处理器及可重构处理器的条件执行方法 |
US9483439B2 (en) * | 2014-04-12 | 2016-11-01 | Netronome Systems, Inc. | Picoengine multi-processor with power control management |
US9489337B2 (en) * | 2014-04-12 | 2016-11-08 | Netronome Systems, Inc. | Picoengine multi-processor with task assignment |
US9779785B2 (en) | 2015-05-11 | 2017-10-03 | Wisconsin Alumni Research Foundation | Computer architecture using compute/storage tiles |
US9602108B1 (en) * | 2015-09-11 | 2017-03-21 | Xilinx, Inc. | Lut cascading circuit |
US9455714B1 (en) * | 2015-09-11 | 2016-09-27 | Xilinx, Inc. | Cascaded LUT carry logic circuit |
US9628083B1 (en) * | 2015-10-01 | 2017-04-18 | Quicklogic Corporation | Local routing network with selective fast paths for programmable logic device |
EP3173935B1 (en) * | 2015-11-24 | 2018-06-06 | Stichting IMEC Nederland | Memory access unit |
US10331445B2 (en) * | 2017-05-24 | 2019-06-25 | Microsoft Technology Licensing, Llc | Multifunction vector processor circuits |
CN109871236A (zh) * | 2017-12-01 | 2019-06-11 | 超威半导体公司 | 具有低功率并行矩阵乘法流水线的流处理器 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040001445A1 (en) * | 2002-07-01 | 2004-01-01 | Elixent, Ltd | Loosely-biased heterogeneous reconfigurable arrays |
US6781408B1 (en) * | 2002-04-24 | 2004-08-24 | Altera Corporation | Programmable logic device with routing channels |
Family Cites Families (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5038386A (en) * | 1986-08-29 | 1991-08-06 | International Business Machines Corporation | Polymorphic mesh network image processing system |
US4811214A (en) * | 1986-11-14 | 1989-03-07 | Princeton University | Multinode reconfigurable pipeline computer |
US5452231A (en) * | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
CA2129882A1 (en) * | 1993-08-12 | 1995-02-13 | Soheil Shams | Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same |
US5442577A (en) * | 1994-03-08 | 1995-08-15 | Exponential Technology, Inc. | Sign-extension of immediate constants in an alu |
FR2718864B1 (fr) * | 1994-04-19 | 1996-05-15 | Sgs Thomson Microelectronics | Dispositif de traitement numérique avec instructions de recherche du minimum et du maximum. |
US5742180A (en) * | 1995-02-10 | 1998-04-21 | Massachusetts Institute Of Technology | Dynamically programmable gate array with multiple contexts |
US6052773A (en) * | 1995-02-10 | 2000-04-18 | Massachusetts Institute Of Technology | DPGA-coupled microprocessors |
CN1117432C (zh) * | 1995-05-03 | 2003-08-06 | Btr公司 | 可缩放的多层互联结构 |
JP3331102B2 (ja) * | 1995-08-16 | 2002-10-07 | 株式会社日立製作所 | 冷凍サイクルの容量制御装置 |
US6784080B2 (en) * | 1995-10-23 | 2004-08-31 | Matsushita Electric Industrial Co., Ltd. | Method of manufacturing semiconductor device by sputter doping |
US5943242A (en) * | 1995-11-17 | 1999-08-24 | Pact Gmbh | Dynamically reconfigurable data processing system |
US5956518A (en) * | 1996-04-11 | 1999-09-21 | Massachusetts Institute Of Technology | Intermediate-grain reconfigurable processing device |
DE19704742A1 (de) * | 1997-02-11 | 1998-09-24 | Pact Inf Tech Gmbh | Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand |
GB9712819D0 (en) * | 1997-06-18 | 1997-08-20 | Bpb Plc | Paper sack |
US6167502A (en) * | 1997-10-10 | 2000-12-26 | Billions Of Operations Per Second, Inc. | Method and apparatus for manifold array processing |
US6122719A (en) * | 1997-10-31 | 2000-09-19 | Silicon Spice | Method and apparatus for retiming in a network of multiple context processing elements |
US6609189B1 (en) * | 1998-03-12 | 2003-08-19 | Yale University | Cycle segmented prefix circuits |
US6092174A (en) * | 1998-06-01 | 2000-07-18 | Context, Inc. | Dynamically reconfigurable distributed integrated circuit processor and method |
US6023573A (en) * | 1998-09-01 | 2000-02-08 | Lucent Technologies, Inc. | Apparatus and method for analyzing circuits using reduced-order modeling of large linear subcircuits |
US6433578B1 (en) | 1999-05-07 | 2002-08-13 | Morphics Technology, Inc. | Heterogeneous programmable gate array |
JP3674515B2 (ja) * | 2000-02-25 | 2005-07-20 | 日本電気株式会社 | アレイ型プロセッサ |
US6469540B2 (en) * | 2000-06-15 | 2002-10-22 | Nec Corporation | Reconfigurable device having programmable interconnect network suitable for implementing data paths |
US20040254965A1 (en) * | 2001-03-02 | 2004-12-16 | Eric Giernalczyk | Apparatus for variable word length computing in an array processor |
US6836839B2 (en) * | 2001-03-22 | 2004-12-28 | Quicksilver Technology, Inc. | Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements |
US6920545B2 (en) * | 2002-01-17 | 2005-07-19 | Raytheon Company | Reconfigurable processor with alternately interconnected arithmetic and memory nodes of crossbar switched cluster |
US20040027155A1 (en) * | 2002-08-08 | 2004-02-12 | Schlansker Michael S. | System and method for self configuration of reconfigurable systems |
WO2004075403A2 (en) | 2003-02-19 | 2004-09-02 | Koninklijke Philips Electronics N.V., | Electronic circuit with array of programmable logic cells |
US7298973B2 (en) * | 2003-04-16 | 2007-11-20 | Intel Corporation | Architecture, method and system of multiple high-speed servers to network in WDM based photonic burst-switched networks |
US7285487B2 (en) * | 2003-07-24 | 2007-10-23 | California Institute Of Technology | Method and apparatus for network with multilayer metalization |
-
2005
- 2005-05-16 US US11/130,613 patent/US7461234B2/en not_active Expired - Fee Related
-
2006
- 2006-05-16 EP EP06753641A patent/EP1886228A2/en not_active Withdrawn
- 2006-05-16 WO PCT/EP2006/004604 patent/WO2006122746A2/en not_active Application Discontinuation
- 2006-05-16 JP JP2008511608A patent/JP4573896B2/ja not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6781408B1 (en) * | 2002-04-24 | 2004-08-24 | Altera Corporation | Programmable logic device with routing channels |
US20040001445A1 (en) * | 2002-07-01 | 2004-01-01 | Elixent, Ltd | Loosely-biased heterogeneous reconfigurable arrays |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014016894A (ja) * | 2012-07-10 | 2014-01-30 | Renesas Electronics Corp | 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20050257024A1 (en) | 2005-11-17 |
EP1886228A2 (en) | 2008-02-13 |
JP4573896B2 (ja) | 2010-11-04 |
US7461234B2 (en) | 2008-12-02 |
WO2006122746A2 (en) | 2006-11-23 |
WO2006122746A3 (en) | 2007-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4573896B2 (ja) | 粗バイアス異種再構成可能アレイ | |
JP4261478B2 (ja) | 異種再構成可能アレイ | |
JP4230580B2 (ja) | 再構成可能プロセッサデバイス | |
Compton et al. | An introduction to reconfigurable computing | |
EP1271474B1 (en) | Function block | |
Marshall et al. | A reconfigurable arithmetic array for multimedia applications | |
US6708191B2 (en) | Configurable logic block with and gate for efficient multiplication in FPGAS | |
US9292474B1 (en) | Configurable hybrid adder circuitry | |
US9411554B1 (en) | Signed multiplier circuit utilizing a uniform array of logic blocks | |
US20060186918A1 (en) | Dedicated logic cells employing sequential logic and control logic functions | |
US10340920B1 (en) | High performance FPGA addition | |
US11750195B2 (en) | Compute dataflow architecture | |
Stansfield | Using multiplexers for control and data in D-Fabrix | |
WO2008023342A1 (en) | Configurable logic device | |
EP0924625B1 (en) | Configurable processing device and method of using said device to construct a central processing unit | |
Corsonello et al. | Variable precision multipliers for FPGA-based reconfigurable computing systems | |
US20120280710A1 (en) | Reuse of constants between arithmetic logic units and look-up-tables | |
Van Dyken et al. | A medium-grain reconfigurable processing unit | |
Basiri | Efficient hardware implementations of Lopez–Dahab projective co-ordinate based scalar multiplication of ECC | |
Walkup et al. | Routing-directed Placement for the Triptych FPGA | |
Chacko | Power, Performance and Area Consequences of Multi-Context Support in Coarse-Grained Reconfigurable Arrays | |
Louwers | Energy efficient multi-granular arithmetic in a coarse-grain reconfigurable architecture | |
Inoue et al. | A prototype chip of reconfigurable logic device using variable grain logic cell architecture | |
Hosler | High Performance Carry Chains for FPGAs |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20100727 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100817 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130827 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |