JP2005531952A - 異種再構成可能アレイ - Google Patents

異種再構成可能アレイ Download PDF

Info

Publication number
JP2005531952A
JP2005531952A JP2004516568A JP2004516568A JP2005531952A JP 2005531952 A JP2005531952 A JP 2005531952A JP 2004516568 A JP2004516568 A JP 2004516568A JP 2004516568 A JP2004516568 A JP 2004516568A JP 2005531952 A JP2005531952 A JP 2005531952A
Authority
JP
Japan
Prior art keywords
input
alu
multiplexer
output
reconfigurable array
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
Application number
JP2004516568A
Other languages
English (en)
Other versions
JP4261478B2 (ja
Inventor
アイ.スタンスフィールド アンソニー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Elixent Ltd
Original Assignee
Elixent Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Elixent Ltd filed Critical Elixent Ltd
Publication of JP2005531952A publication Critical patent/JP2005531952A/ja
Application granted granted Critical
Publication of JP4261478B2 publication Critical patent/JP4261478B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3842Speculative instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent 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/3897Concurrent 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
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17748Structural details of configuration resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/1778Structural details for adapting physical parameters
    • H03K19/17796Structural details for adapting physical parameters for physical disposition of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)
  • Ceramic Products (AREA)
  • Surface Acoustic Wave Elements And Circuit Networks Thereof (AREA)
  • Multi Processors (AREA)
  • Image Processing (AREA)
  • Crystals, And After-Treatments Of Crystals (AREA)
  • Semiconductor Lasers (AREA)

Abstract

異種アレイは処理要素のクラスタを備えている。クラスタは、直接接続及び様々な汎用ルーティングネットワークによって接続されているALU及びマルチプレクサの組み合わせを備えている。マルチプレクサは、同じクラスタ内のALUによって、あるいは他のクラスタ内のALUによって、専用のマルチプレクサ制御ネットワークを介して制御されている。アレイに構成されるアプリケーションのコンポーネントは、一方のタイプまたは他方のタイプの処理要素内にコンポーネントを実装することの相対的効率と、処理要素タイプの相対的利用可能性とによる決定に基づいて、マルチプレクサまたはALUのいずれかの中に選択的に実装される。マルチプレクサ制御信号は、ALUステータス信号の組み合わせから生成され、任意選択で、他のクラスタ内のマルチプレクサを制御するために送られる。

Description

本発明は、再構成可能なコンピューティングデバイスに関する。より詳細には、本発明は、アプリケーションの複数の態様の実装を可能とするアレイ要素タイプを有する異種アレイに関する。
フィールドプログラマブルゲートアレイ(「FPGA」)、プロセッサアレイ、および再構成可能算術演算アレイ(「RAA」)などの再構成可能デバイスは、通常、多数の処理要素とそれらを接続するための相互接続方式を備えている。相互接続は、通常は汎用ルーティングネットワークの形態を取る。その他のより限定的な相互接続の形態も利用され得る。処理要素は、1つまたは複数のデータ入力を有しており、1つまたは複数のデータ出力を計算する。データ出力のそれぞれは、2つ以上の入力値に基づいた関数である。2つ以上の入力値とは、2つ以上の入力で受け取られるもの、又は場合によっては同じ入力で別々の時間に受け取られたものである。処理要素の例としては、加算器、乗算器、FPGA様のルックアップテーブル(LUT)、およびデータ入力に接続可能なセレクト信号を有するマルチプレクサがある。出力が以前の時間における入力の一部またはすべての値の関数であることができるように、処理要素はレジスタを備えていてもよい。
汎用ルーティングネットワークは、複数の入力端子と複数の出力端子(さらに、場合によっては、入力端子または出力端子のいずれかとして構成可能ないくつかの双方向端子)を備え、任意の入力端子と任意の出力端子との間の接続をなすように構成可能である。すべての端子は、同じワード長のデータ値を運ぶ。構成された場合、汎用ルーティングネットワークは、複数の独立した接続をなす。各接続は、1つのネットワーク入力を1つまたは複数のネットワーク出力に接続するが、各ネットワーク出力は多くても1つのネットワーク入力にしか接続されない。これらの接続は、レジスタを通過していてもよい(それにより、ネットワーク入力とネットワーク出力との間にいくらかの時間的オフセットが存在してもよい)。ただし、ルーティングネットワーク内ではデータ処理は行われないので、出力端子でのデータ値と、関連する時間における関連する入力端子での同等の値との間には、直接的な対応関係がある。そのようなネットワークは、一般に、パストランジスタ、および/または、トライステートバッファ、および/または、静的に構成されたマルチプレクサ(つまり、アレイの構成によって制御されるセレクト入力を有するマルチプレクサ)から構築されている。しかしながら、ネットワークの構造に関係なく、その機能(ネットワーク入力からネットワーク出力にデータを伝えるということ)は同じである。
再構成可能デバイスの設計は、処理要素および相互接続の特性を指定するプロセスである。これら両者の要素においては、このプロセスは以下で説明する一連の妥協を備えている。
処理要素の選択は、機能と、物理的サイズ、動作速度、または電力損などのさまざまなパラメータとの間の妥協点を見つけることである。例えば、機能を追加することにより、各要素のサイズは増加するが、アプリケーションを実装するために必要とされる要素の合計数は減少する可能性がある。機能を追加する価値があるのは、要素数の減少が、個々の要素のサイズの増加よりも影響力があり、したがって、アプリケーション領域が最終的に増加しない場合のみである。機能の増加は、他のパラメータにも同様に影響を及ぼす。
上述のように、再構成可能デバイスにはさまざまなタイプがある。また、再構成可能デバイスのためのさまざまなタイプのアプリケーションも存在する。さまざまなタイプの再構成可能デバイスのそれぞれは、一般に、あるタイプのアプリケーションを、他のタイプのアプリケーションよりも適切に実行する。再構成デバイス内で使用される特定の処理要素の適合性の評価は、したがって、そのデバイスの用途として意図されているアプリケーションのタイプにより異なる。
サイズ/機能の空間内には、いくつかの「スイートスポット」があり、それは部分的には、アプリケーション空間の区割りよるものである(例えば、さまざまなタイプのアプリケーションにおいては、通常、FPGAではなく、プロセッサアレイが利用される)。また部分的には、機能を一緒に組み合わせる方が、それらのうちの任意のものを単独で使用するよりも良い可能性があるためである(例えば、プロセッサに乗算器または除算器を追加することは価値がない可能性があるが、両方を追加すること−それらの間でハードウェアがいくらか共有されるように−は最終的に利益となる)。
相互接続の選択もまた、機能と、物理的サイズ、動作速度、又は電力損などのさまざまなパラメータとの間の妥協点を見つけることである。理想的な相互接続は、伝播遅延が0で、1つの経路が別の経路を妨害する危険がなく、物理的な面積は無視できるほど小さいものである。この理想は、実際には存在しない。適切な妥協に達するために、次のようなさまざまな要素の特性を考慮できる。
処理要素:
高速な処理要素には、高速な相互接続が好ましい。
処理要素によってデータが処理される幅と同じ幅で、データを送ることは有益である。
アレイ:
可能な接続の数は、処理要素の数の2乗で増加する。接続間の妨害がないことを保証する相互接続の「要素あたりのコスト」は、したがって、処理要素の数に直線的に比例して増加する。これは、小さなアレイでは手頃な可能性があるが、大きなアレイでは手頃ではない。
伝播遅延は、アレイのサイズとともに増加する傾向がある。
アプリケーション:
再構成可能デバイスを利用するために書かれたアプリケーションが、最近接接続のみを有するデバイスを利用してそのアプリケーションを実装できるように書かれている場合は、相互接続を大幅に単純化できる。そのような単純化が可能でない場合は、(上述のような)汎用ルーティングネットワークが、相互接続の基礎として一般に利用される。ネットワークの端子が処理要素の端子となる。
性能を向上するために、再構成可能デバイスは、さらに、異種処理要素、階層型ルーティングネットワーク、および/または、異種インターコネクト等の追加要素を備え得る。異種処理要素は、2つ以上の異なるタイプの処理要素を1つのデバイス上で組み合わせたものであり、例えば次のようなものがある。
ルックアップテーブルベースの要素と、専用乗算器ブロックとの両方を有するFPGA
ルックアップテーブルベースの要素と、積項ベースの論理との両方を有するFPGA
整数および浮動小数点の両方のプロセッサを含むプロセッサアレイ
処理要素の組み合わせは、さまざまな理由で行われてよい。例えば、「機能対コスト」のトレードオフの問題を減らそうとして行われてもよい(デバイス上の代替タイプのブロックとして機能が追加される場合、すべての処理要素のコストが追加されるのではなく、追加される機能を含む処理要素のコストのみが追加される)。このアプローチは、表面的には魅力的ではあるが、さまざまなタイプの処理要素の割合はどれだけであるべきか、およびそれらがお互いに対してどのように配置されるべきかを決定するという、1つの大きな問題がある。例えば、アレイの行または列内などに、要素タイプの、きめの細かい混合(ABABAB...)が存在すべきか、または、よりきめの粗い混合(AAABBBAAABBB)が存在すべきか、を決定しなければならない。よりさまざまなタイプの処理要素が再構成可能デバイス内に組み込まれるにつれて、混合の解析はより重要になる。
階層型ルーティングネットワーク方式は、通常、処理要素をグループ内に割り当て、グループ内の要素を強力に接続し、さらに、グループ間を(および、グループ群の間などを)接続する。このモデルの拡張では、グループが重なる場合がある(つまり、境界は、グループ間接続以外の接続が存在しないという不透明な壁ではない)。例えば、グループの境界にある処理要素は、両方のグループのメンバーであり得る。
異種相互接続方式を利用すると、2つ以上のタイプの接続が利用可能となる。例えば、高速ではあるが限定されている追加の相互接続が、より低速ではあるがより高機能な汎用ルーティングネットワークに追加される。
一般的な接続パターン(例えば、多くのFPGA内の「キャリーワイヤ」)をサポートするために、専用の配線が追加される場合がある。
汎用ルーティングネットワークに加えて、専用の最近接接続が存在する場合もある。
「異種」相互接続と「階層型」相互接続との間には、大きな違いがある。階層型ルーティングネットワークは、階層のすべてのレベルについて同じタイプの接続を利用し、レベルによって接続の到達範囲が異なるのに対して、異種相互接続は、さまざまなネットワークのための異なるタイプの接続を利用する。アレイは、異種相互接続および階層型相互接続の両方を含むことに留意されたい。
プロセッサは、一般に、条件分岐と無条件分岐とジャンプの混合、及び/又は命令の予測実行を利用して、アプリケーション内の制御の流れを管理している。「再構成可能コンピューティング」とは、再構成可能デバイスを利用して計算を実行するために、アプリケーション固有のデータ経路を構築するコンピューティングのことをいう。「再構成可能コンピューティング」は、通常、制御の流れの管理にはあまり優れていない。
プロセッサアレイ内では、個々のプロセッサは、各自の命令の流れの管理に優れているが、アレイ内の他のプロセッサへの影響をほとんど又は全く有していない。
FPGAベースの再構成可能コンピューティングでは、プログラムを通した各経路が、あまり頻繁に利用されないものでさえも、ハードウェア内に実装されていなければならない。プロセッサの実行時動作の最大90%が、コードのうちの10%のみで指定されてもよいとすると、FPGAのシリコン領域のほとんどが、まれにしか使用されない動作のために割り当てられているということになる。上記の例では、90%の領域が10%の時間で利用されるのに対して、残りの10%の領域は、90%の時間で使用される。
再構成可能コンピューティング用に設計されたその他のデバイス(RAAなど)では、FPGAの状況を改善する試みがなされている。RAAは、インストラクション入力を備えた論理演算装置(「ALU」)を有しているので、ALUに提供されるインストラクションを変更することにより、データ経路の機能を動的に変更することが可能である。しかし、これは完全な解決策ではない。
ビットではなく、マルチビットワード(例えば、4ビットニブル)を処理する。また、RAA ALUは、入力ワードによって実行する操作を選択するための、(やはり、4ビット内への)コンパクトなインストラクション符号化を備えている。しかし、制御条件は、決定の真/偽の性質を表現する単一ビットとなる傾向がある。
AおよびB入力は等しいか
入力Aは入力Bよりも大きいか
入力のビット3は1にセットされているか
nビットALUを利用して、(「もし条件1または条件2ならば ...」のような文内で)そのような単一ビット条件を処理すると、ALUのデータ経路は十分に使用されず、(n−1)ビットは未使用となる。
その結果として、次のような状況になる。FPGAは、その1ビット性により、条件処理に優れているが、条件の結果に基づく分岐には劣っている。それに対して、マルチビットのRAA様のデバイスは、分岐には優れているが、条件の処理には非効率的である。
再構成可能コンピューティングアプリケーションのための有用な実装技術は、データを、ビット(またはニブル、またはワードのその他の何らかの小部分、またはその他の全幅のデータ項目)シリアル形式で処理することである。なぜなら、単一の処理要素が、ワードの連続部分を処理するために、連続するクロックサイクル内で利用されるからである。この技術により、領域とスループットが相互にトレードオフされることが可能になる。なぜなら、シリアル化された処理は、より長時間がかかるが、使用される処理要素の数はより少ないからである。
シリアルフォーマットとパラレルフォーマットの間でデータを変換する機能は、シリアル化された処理の中で有用である。この変換を実行する1つの方法は、マルチプレクサおよびレジスタから構築された回路を利用することである。
マルチプレクサもまた、多数の一般的な1入力および2入力論理関数を実装するために、再構成可能デバイス内で有用である。これらの例は、C/javaの「条件選択」演算子:「a=(b?c:d);」によって書かれている(この演算子は、「if(b)then{a=c;}else{a=d;}」の省略表現である)。
A&B =A?B:0
A|B =A?1:B
NOT A =A?0:1
B =A?(NOT B):B
上述のように、異種アレイは、さまざまなワード長を処理するように最適化された、処理要素の混合を提供する。ただし、従来の異種アレイには、上述の割合決定問題がある。これらの問題の有用な解決策は、第1のタイプの処理要素をマルチビット処理に偏重させるとともに1ビット処理も可能に設計し、そして、第2のタイプの処理要素を、1ビット処理に偏重させるとともにマルチビット処理も可能に設計することである。
添付の図面は、本発明の実施形態のさらなる理解を提供するためのものであり、以下の説明とともに、開示されている実施形態の原理を説明するために有用である。
本発明の実施形態を以下に開示する。本実施形態で説明するアレイは、第1および第2のタイプの処理要素として、ALUおよびマルチプレクサを利用して構成されている。ただし、ALU、マルチプレクサ、又はその両者に代えて、その他の処理要素が使用され得ることは当業者であれば理解する。例えば、アレイは、ルックアップテーブルベースの要素、積項ベースの要素、ハードワイヤード要素(専用乗算器ブロック、浮動小数点プロセッサ、整数プロセッサなど)、又は組み合わせ論理関数を実装することが可能なその他の要素を利用して構成されてもよい。
本実施形態のアレイは、処理要素の複数の「クラスタ」という用語によって表される。クラスタは、少なくとも1つの第1のタイプの処理要素と1つの第2のタイプの処理要素を有する処理要素の集まりを備えている。クラスタ内の第1のタイプと第2のタイプの処理要素は、直接クラスタ内接続を用いて相互に接続されている。直接クラスタ内接続は、導線、バス、またはその他の形態の電気的接続であり得る。クラスタ内接続は、アレイ上に存在するいかなる汎用ルーティングネットワークの一部ではない。ただし、クラスタ境界において、汎用ルーティングネットワークとの接続が存在し得る。クラスタは、同一でない要素に直接接続する接続の組によって、直接的または間接的に接続されている処理要素の組として定義される。2つのタイプの処理要素を有する実施形態では、信号がクラスタ内接続を介して実際に伝わる方向と無関係に、第1のタイプから第2のタイプの処理要素への、又はその逆のクラスタ内接続をたどることによって、クラスタ内の任意の処理要素に、クラスタ内のその他の任意の処理要素から到達することが可能である。3つのタイプの処理要素を有する実施形態では、同一でないタイプの処理要素を接続するクラスタ内接続の任意の経路が、クラスタを定義する。
例えば、第1のタイプの処理要素がALUで、第2のタイプの処理要素がマルチプレクサである場合、経路ALU−MUX−ALU−MUXはクラスタを表すが、経路ALU−MUX−MUXは、経路内に同じタイプの2つの処理要素間の接続があるので、クラスタを表さない。同様に、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)には、その他の各処理要素1910(a)〜(f)から、ALU−MUXまたはMUX−ALU接続をたどることにより到達可能である。同様に、各処理要素1920(a)〜(g)には、その他の各処理要素1920(a)〜(g)から、ALU−MUXまたはMUX−ALU接続をたどることにより到達可能である。処理要素1920(a)〜(g)から、ALU−MUXまたはMUX−ALU接続をたどることによって、処理要素1910(a)〜(f)のいずれにも到達することはできない。少なくとも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ビット幅の入力値を受け取る。
ALU100は、さらに、第2ビット幅のキャリーイン入力140(「CIN」)を備えている。この入力は、アレイ内の別のALU100からキャリー入力を受け取るために利用される。
ALU100は、さらに、第2ビット幅のキャリーアウト出力150(「COUT」)を備えている。キャリーアウト出力150は、アレイ内の他の要素又はアレイに接続された他の要素にキャリー出力を提供する。ALU100の構成によっては、キャリーイン入力140およびキャリーアウト出力150は、設計者による要求に基づいて、キャリー値以外の値を提供することも可能である。
ALU100は、さらに、第1ビット幅のデータ出力160を備えている。データ出力160は、ALUにより実行された数学または論理関数の結果を、アレイ内の他の要素又はアレイに接続された他の要素に提供する。
ALU100は、さらに、第2ビット幅のセレクト信号出力170を備えている。セレクト信号出力170は、アレイ内の他の要素又はアレイに接続された他の要素にセレクト信号を提供する。セレクト信号は、アレイ内又はアレイに接続されている別の要素の機能を制御するために有用な、多種多様な信号であり得る。例えば、セレクト信号は、以下のデータ依存信号のうちの1つまたは複数であってもよい。
OUT:ALU演算からのキャリーアウト
符号:ALU演算の正しい符号(算術オーバーフローが発生した場合でも)
オーバーフロー:算術オーバーフローが発生したことを示す信号
あるいは、セレクト信号は、インストラクション入力130の1つまたは複数のビットであり得る。これにより、データ依存およびインストラクション依存の両方の信号の提供が可能になる。いくつかの実施形態では、ALU100は、インストラクション入力130とは無関係に、内部インストラクションを記憶するように適合されている。これにより、インストラクション入力130を、専用のセレクト信号入力として使用することが可能になり、そのためには、インストラクション入力130の一部またはすべてをセレクト信号出力170に直接提供し、記憶されたインストラクション値をALU100を制御するために使用する。以下で詳しく説明するように、セレクト信号出力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は、さらに、クラスタ300内の要素のさまざまな入力および出力に接続される、追加のALU、レジスタ、ゲート、その他の、他の要素の追加により拡張されてもよい。クラスタ300は、さらに、より複雑な回路を実装するために、他のクラスタに接続されてもよい。そのような拡張のさまざまな例について、以下で詳しく説明する。
クラスタ300は、単独で使用することも、あるいは、さまざまな回路を実装するために、他のクラスタ300と組み合わせて使用することも可能であり、その例を図4〜6に示す。図4Aに示すように、クラスタ300は、データ選択回路を実装するために利用される。データ選択回路は、セレクト信号出力170上で提供される条件の結果によって、「IN1」または「IN2」のいずれかを選択する。例えば、セレクト信号出力170がオーバーフロー信号を提供するように構成されている場合、データ選択回路はオーバーフローがあれば(S=1)、「IN1」を選択し、オーバーフローがなければ(S=0)、「IN2」を選択する。
この回路は、例えばワード長が変更された場合に符号拡張を実行することによって、データをフォーマッティングする際に有用である。第1の入力110は、8ビット値に変換されるべき、符号付き4ビット値を運んでいる。マルチプレクサ入力210、220は、それぞれ、値「1111」および「0000」を運んでいる。ALU100は、関数A<0を評価して、適切な符号信号をセレクト出力170に生成するとともに、入力値AをALU出力160に伝える。符号出力信号は、「1111」または「0000」のいずれかを選択するようにマルチプレクサ200を切り換えるために利用される。8ビットの結果は、ALU出力160の値、およびマルチプレクサ出力230の値から構築される。
図4Bに示すように、クラスタ300は、また、ALU100により生成された第2ビット幅の信号を、第1ビット幅の汎用ルーティングネットワークに伝えるように構成することも可能である。ALU100のセレクト出力170で生成された第2ビット幅のセレクト信号は、マルチプレクサ200のセレクト入力240に送られる。第1の入力210には、第2ビット幅の値「1」を表現する第1ビット幅の値「0001」が提供される。第2の入力220には、第2ビット幅の値「0」を表現する第1ビット幅の値「0000」が提供される。セレクト信号が「1」の場合、マルチプレクサ200は、第1の入力値210の「0001」を出力230に送るとともに、その先にある汎用ルーティングネットワークにも送る。同様に、セレクト信号が「0」の場合、マルチプレクサ200は、第2の入力値220の「0000」を出力230に送るとともに、その先にある汎用ルーティングネットワークにも送る。このようにして、符号、オーバーフロー、キャリーアウト、その他のセレクト信号は、第2ビット幅から第1ビット幅に効率的に変換されるとともに、第1汎用ルーティングネットワークに置かれ、その先にある他の処理要素に送られることが可能となる。これにより、上述の専用接続および第2汎用ルーティングネットワークに加えて、これらの信号のための代替経路が提供される。
図5に示すように、第1のクラスタ510および第2のクラスタ550は、条件処理回路を実装するために使用される。条件処理回路は、ALUのセレクト出力値として提供された1つまたは複数の条件に基づいて、論理演算を実行する。第1のクラスタ510は第1のALU520を備えている。ALU520は、第1の条件(例えば、出力値Fの「符号」)を生成し、前記第1の条件を第1のマルチプレクサ530に渡す。第1のマルチプレクサ530は、定数値「0001」を第1の入力533で受け取り、定数値「0000」を第2の入力535で受け取る。第1の条件が「1」の場合、第1のマルチプレクサ530は、第1の入力533を選択して出力537に提供し、それ以外の場合、第1のマルチプレクサ530は、第2の入力535を選択して出力537に提供する。
第2のクラスタ550は、第2のALU560を備えている。第2のALU560は、第2の条件(例えば、出力値Fの「符号」)を生成し、前記第2の条件を第2のマルチプレクサ570に渡す。第2のマルチプレクサは、出力537からの値を第1の入力573で受け取り、定数値「0000」を第2の入力575で受け取る。第2の条件が「1」の場合、第2のマルチプレクサ570は、第1の入力573を選択して出力577に提供し、それ以外の場合、第2のマルチプレクサ570は、第2の入力575を選択して出力577に提供する。
第1の条件および第2の条件の関数として表されたこの回路の出力を、次の表1に示す。
Figure 2005531952


表1からわかるように、図5の条件処理回路は、2つの条件SおよびSの論理ANDを出力として生成する。その他の論理関数も、同様に生成することが可能である。
図6に示すように、第1のクラスタ510および第2のクラスタ550は、データ経路制御回路を実装するように構成されている。第1のALU520は、上述のセレクト信号を生成して、第1のマルチプレクサ530に送る。第1のマルチプレクサ530は、加算(「ADD」)インストラクション値に対応するデータ入力信号を第1の入力533で受け取り、減算(「SUB」)インストラクション値に対応するデータ入力信号を第2の入力535で受け取る。これらのデータ入力は、上述のように、通常は複数ビットの信号である。セレクト信号の値に基づいて、第1のマルチプレクサ530は、ADDまたはSUBインストラクション値のいずれかを、第2のALU560のインストラクション入力562に送る。第2のALU560の出力は、したがって、第1のALU520により生成された条件によって、A+BまたはA−Bのいずれかになる。このように、第1および第2のクラスタ510、550を含むアレイ内のデータ経路は、第2のALU560により実行される関数を変更することにより制御される。第1のALU520および第1のマルチプレクサ530への、データおよびインストラクション入力を変えることにより、所望される任意のデータ経路制御関数を実装することが可能である。
図7〜8に示すように、クラスタ300に出力レジスタを追加して、追加の有用な回路を作製することが可能である。これらの回路は、データのシリアル−パラレルおよびパラレル−シリアル変換のためのデータフォーマッティングを実行するために有用である。図7の回路は、上述のALU100およびマルチプレクサ200を備えている。さらに、レジスタ700が、マルチプレクサ200の出力230に接続されている。レジスタ700は、マルチプレクサ200の出力230から読み込まれた値を記憶する。スイッチ710は、マルチプレクサの出力230またはレジスタの出力720のいずれかを、その先にある他の要素に送るように適合されている。スイッチ710は、アレイ上へのアプリケーションの構成の一部として設定される。代替の実施形態では、ALU100の出力160に第2のレジスタが対応するスイッチとともに、または対応するスイッチなしで接続される。
図8Aおよび8Bは、クラスタ300を利用して実装可能な有用なレジスタ回路の実装を示す。図8Aは、「イネーブル付きレジスタ(register with enable)」回路の実装であり、図8Bは、「リセット付きレジスタ(register with reset)」回路の実装である。図8Aの「イネーブル付きレジスタ」回路により提供されるレジスタでは、クロックエッジでイネーブル(ENABLE)がアクティブの場合にのみ、レジスタ内容が(「入力(INPUT)」の値で)更新され、それ以外の場合は、記憶された値がリサイクルされ、出力は変更されない。図8Bの「リセット付きレジスタ」回路は、リセット信号(RESET)が非アクティブである限り、「入力(INPUT)」の値をレジスタに提供する。リセット信号がアクティブになると、次のクロックエッジで、値0がレジスタに読み込まれる。これらのレジスタオプションは、いずれも、アプリケーション内で一般に使用される。したがって、これらの回路は、再構成可能アレイを用いてアプリケーションを実装するときに有用である。そして、図7の「マルチプレクサおよびレジスタ」配置を利用して容易に構築可能である。
例えば次に示すような、マルチプレクサの可能な用途の多くは、マルチプレクサへの入力の1つまたは両方が定数値となっているものを備えている。
AND、OR、またはNOTゲートの実装
第1汎用ルーティングネットワークへのキャリーアウト値の伝達、または
リセット可能レジスタの実装
これらの用途は、マルチプレクサ200の入力に入力選択論理を追加することにより簡単になる。入力選択論理は、マルチプレクサのサイズは増加するが、ルーティングネットワークを通して伝えられる信号の数は減少するというトレードオフの関係である。図9に示すマルチプレクサ200は、第1の入力210および第2の入力220にそれぞれ接続された、第1の入力マルチプレクサ910および第2の入力マルチプレクサ920を有する。第1の入力マルチプレクサ910は、第1の入力値913(INPUT)又は第1の定数値917(ここでは値「0001」)を第1の入力210に提供するように適合されている。第2の入力マルチプレクサ920は、第2の入力値923(INPUT)又は第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に示すように、ALU100のキャリーアウト出力150からのキャリーアウト信号(CARRY OUT)を第1の入力マルチプレクサ910に提供することにより、第1の入力マルチプレクサ910は拡張される。第1の入力マルチプレクサ910への入力の幅が、キャリーアウト出力150の幅よりも広い場合、キャリーアウト信号にゼロが補足される。したがって、例えばキャリーアウト信号「1」は、第1の入力マルチプレクサ910に提供される場合、ゼロで補足されて「0001」となる。したがって、適切に構成されている場合、第1の入力マルチプレクサ910は、キャリーアウト出力150を、第1の入力210を介して、マルチプレクサ200に提供する。これにより、キャリーアウト信号を第1汎用ルーティングネットワークに提供するための、別の経路が提供される。キャリーアウト信号は、セレクト入力170を介してマルチプレクサ200ですでに利用可能であり、したがって、それにより第1汎用ルーティングネットワークに伝えられることが可能であるが、この変更により、イネーブル付き(または、図8Bの回路を変更することにより、リセット付き)キャリーレジスタを、1つのマルチプレクサ200および1つのレジスタ700(存在する可能性のある入力マルチプレクサは考慮に入れない)の中で作製することが可能になる。リセット可能キャリー出力レジスタは、シリアル算術演算アプリケーションに有用である。
図12に示すように、図11の回路のさらなる有用な変更は、レジスタ700またはマルチプレクサ200の出力のうちの1ビットが、ALUへの専用キャリー入力として利用されることを可能にすることである。マルチプレクサ200の4ビット出力230からの1ビットが、ALU100のキャリーイン入力140に接続された入力マルチプレクサ1210に送られる。これにより、キャリーアウト出力170からキャリーイン入力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) −この形態はインバータを使用する
後者のオプションでは、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)
これによっても、関数を実装するためにどちらのマルチプレクサ入力を使用するかについての柔軟性が増加する。
上述の回路は、本発明の実施形態のクラスタ300を使用して実装可能な、広範な回路の例にすぎない。
上で説明したクラスタ300を含む異種アレイは、ALUのみによる同種アレイよりも小さく、かつ、より高速な、多くの回路を実装することができる。マルチプレクサは、ALUよりもかなり小さく、かつ、高速であるため、マルチプレクサを利用できる回路は、ALUのみにより構成されている同等の回路よりも小さく、かつ、高速である。条件処理、データフォーマッティング、およびインストラクション選択などの動作はすべて、ALUのみを使用するよりも、マルチプレクサとALUを混合して使用した方が、より効率的に実装される。
異種相互接続を備えたアレイを使用することにより、速度は向上する。第1汎用ルーティングネットワークは、アレイ内の要素間でのデータおよびインストラクションのルーティングのために提供される。さらに、追加の相互接続は、ALUとマルチプレクサとの間でセレクト信号をルーティングするためのマルチプレクサ制御ネットワークを提供する。このマルチプレクサ制御ネットワークは、クラスタ内のALUと1つまたは複数の関連するマルチプレクサとの間の単純な直接接続であってもよく、あるいは、ALUのセレクト出力を、同じクラスタ内のマルチプレクサ、他のクラスタ内のマルチプレクサ、または両方に接続するように適合された、より複雑な制御ネットワークであってもよい。この制御ネットワークは、第1汎用ルーティングネットワークとは分離した、第2汎用ルーティングネットワークの形態を取っていてもよく、そして、データおよびインストラクションではなく、マルチプレクサ制御信号を運ぶために最適化されていてもよい。
一実施形態の異種アレイは、要素タイプの適切な混合を決定する際の問題を大幅に減少させる。マルチプレクサは、ビットレベル論理、データの再フォーマッティング、および動的なインストラクション選択などの、広範なアプリケーション論理コンポーネントの実装に有用である。したがって、設計者が異種アレイ上に実装を希望する可能性があるほとんどのアプリケーションには、マルチプレクサを利用することはある程度可能である。
ただし、マルチプレクサは、それが有用な関数を実装するための唯一の手段ではない。マルチプレクサで実装できる任意の関数は、ALUを利用して実装することも可能である。マルチプレクサは、通常、より効率的な実装であるにすぎない。したがって、アプリケーションは、3つのタイプの論理コンポーネントに分けることができる。
1.ALUに実装することが好ましい論理
2.マルチプレクサに実装することが好ましい論理
3.実装の選択肢がある論理
これらのカテゴリのいずれか、またはすべては、カテゴリ内の相対的な優先レベルを示すサブカテゴリを備えていてもよい。これらのサブカテゴリは、アレイ内で提供される処理要素の特定の混合比と各カテゴリ内の論理コンポーネントのさまざまな量に基づいて、処理要素への論理コンポーネントの割り当てを微調整するために利用される。
第3のカテゴリの存在は、すべてのアプリケーションのための十分なマルチプレクサ(またはALU)が常にあることを保証する、ALU対マルチプレクサの「完全な」比率を見いだす必要はないということを意味している。その代わりに、処理要素内への論理コンポーネントの割り当て方法を決定する際には、図14の方法が利用される。ステップ1410において、第1の処理要素タイプ内に実装されることが好ましい論理コンポーネントが識別され、第1のタイプの処理要素に割り当てられる。カテゴリ内の相対優先度を示すサブカテゴリがある場合は、最も優先度の高いコンポーネントが最初に割り当てられる。
ステップ1420において、第2の処理要素タイプ内に実装されることが好ましいコンポーネントが識別され、第2のタイプの処理要素に割り当てられる。カテゴリ内の相対優先度を示すサブカテゴリがある場合は、最も優先度の高いコンポーネントが最初に割り当てられる。
ステップ1430において、残りの論理コンポーネントが、ヒューリスティックに従って、第1および第2のタイプの残りの処理要素間に割り当てられる。例えば、残りの論理コンポーネントは、残っている第2のタイプの要素がなくなるまで、第2のタイプの要素に割り当てられ、次に、第1のタイプの要素に割り当てられる。あるいは、残っている要素は、サブカテゴリにより分割され、第2のタイプのための相対優先度を有する論理コンポーネントは第2のタイプに、第1のタイプのための相対優先度を有する論理コンポーネントは第1のタイプ割り当てられる。
(セレクト信号出力)
上述のように、ALU100(図1に示す)のセレクト信号出力170は、さまざまな異なる信号のうちの任意のものを含むことが可能である。図15に示す、マルチプレクサ200を制御するために使用される制御信号を生成および選択するための、選択回路の例1500について、以下で詳しく説明する。選択回路1500は、ALU100からのステータスビット(まとめて、ALUステータスワード(ALU STATUS WORD:ASW)と呼ばれる)を受け取るように適合された、複数のステータス入力1510を備えている。ステータス入力1510のそれぞれは、符号、オーバーフロー、キャリーアウトなどの特定のステータス信号を示すビット、またはインストラクション入力130からのビット、またはマルチプレクサ200の制御に役立つその他の任意のデータを運ぶ。
選択回路1500は、さらに、複数のマスク入力1520(まとめて、マスクワードと呼ばれる)を備えている。マスク入力1520は、マスク値を受け取るように適合されている。マスク値は、ALUステータスワードのステータスビットのうちの1つまたは複数をマスキングするために利用される。マスク入力1520は、それらのマスク値を、広範なソースから受け取ってもよい。例えば、マスク入力1520は、第1汎用ルーティングネットワークに接続されていてもよく、それにより、アレイ内の他の処理要素から動的にマスク値を受け取ってもよい。あるいは、マスク入力1520は、特定のアプリケーション用にアレイが構成されている場合にアレイ内に読み込まれるマスク値などの、マスク値を記憶するローカルメモリセルに接続されていてもよい。
ステータス入力1510とマスク入力1520は、入力1510、1520に対してビットごとのANDを実行するように適合された、複数のANDゲート1530に接続されている。ANDゲート1530は、ORゲート1540に全て接続されている。ORゲート1540は、AND演算が実行された値を一緒にして単一ビットの出力を形成し、マルチプレクサ200を制御するために、マルチプレクサ200のセレクト入力240に提供する。
マスクワードをすべて0に設定するということは、セレクト入力240に送られるマルチプレクサ制御信号が0になるということ、つまり、マルチプレクサ200は第2の入力220の値を出力230に常に供給するように固定されるということを意味している。ASWのビットのうちの1つが常に1の場合、マスクワードでこのビットを選択するということは、制御信号が1になるということ、つまり、マルチプレクサ200は第1の入力210の値を出力230に常に供給するように固定されるということを意味している。すべて0の場合と組み合わせて、これは、マルチプレクサ制御信号を常に0または常に1に設定する機能を提供する。
常に0および常に1の両方を可能にする代替の方法は、図16に示すように選択回路1500を拡張することである。ORゲート1540の出力を反転できるように、ORゲート1540の出力にXORゲート1610を配置することにより、選択回路1500は拡張される。XORゲート1610への他方の入力は、アレイの構成中に値が読み込まれるデータソース1620に接続されている。データソースから読み込まれる値が「1」の場合、XORゲート1610はインバータとして動作し、ORゲート1540からの出力値を反転する。データソースから読み込まれる値が「0」の場合、XORゲート1610は、ORゲート1540の出力を伝える。したがって、XORゲート1610は、「イネーブル付きインバータ」として機能する。この動作を表2に示す。
Figure 2005531952


したがって、セレクト入力240に、常に0が送られることを所望する場合は、マスクワードはすべて0に設定され、データソース値は0に設定される。セレクト入力240に、常に1が送られることを所望する場合は、マスクワードはすべて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は、例えば、以下の値のいずれか、またはすべてを表すビットを備えることが可能である。
ALUのキャリーイン
ALUのキャリーアウト
ALUの「オーバーフロー」(オーバーフローの2の補数定義を使用)
ALUの「正しい符号」(再び、2の補数定義に従う)
ALUのデータ入力110、120から直接取られた1つまたは複数のビット
ALUのインストラクション入力130から直接取られた1つまたは複数のビット
RAA設計の1つの例では、ALUのインストラクション値は、ALU内のレジスタに記憶されることが可能であり、その場合、インストラクション入力130は、専用のマルチプレクサ制御入力として使用することが可能である。これは、インストラクション入力130が、上のリスト内の「インストラクション入力からのビット」および「データ入力からのビット」の両方をカバーするために使用できるということを意味している。したがって、このリストの有用なサブセットは、キャリーアウト、正しい符号、およびALUインストラクション入力130からの2ビットを備えている。
このサブセットは、マルチプレクサ制御信号が、例えば、次のいずれかであってもよいことを意味している。
符号なし比較(より小さい、より大きい)の結果、キャリーアウト経由
符号付き比較(より小さい、より大きい)の結果、符合信号経由
符号拡張に使用される、符号付き算術演算の符号(再び、符号信号経由)
符号なし算術演算からのオーバーフロー(再び、キャリーアウト経由)
等値テストの結果(キャリーアウト経由で等値テストの結果を報告するALU設計用)
インストラクション入力130から導かれたビット、2インストラクションビットの選択肢を有する(やはり、「データ入力からのビット」オプションをカバー)
したがって、このサブセットは、アプリケーション内でよくテストされる条件のいくつかをカバーする。以下で詳しく説明するように、RAAは一般に、ワード長管理のために異なるアプローチを使用するので、RAAアプリケーション内では一般的ではない符号付き算術オーバーフローは、算術演算結果の正しい符合およびMSBから合成されることが可能である。
(インストラクションビットの可能な選択肢)
インストラクション入力130のいずれのビットがASW内で得られるようにすべきかの選択肢としては、以下の例がある。
1.インストラクションのLSBおよびMSB
LSBは、キャリー値が正しい数値を有していることを意味するので(キャリーがある場合は1、ない場合は0)、ルーティングネットワークでキャリーを伝えるために使用されるビットである。インストラクション入力130を介してキャリーを接続できるということは、マルチプレクサ200が、ローカルのALU100からのキャリーによって、そしてさらに、アレイ内の他の任意のALU100からのキャリーによって(間接的に)、制御されることが可能であることを意味している。
MSBは、同様の理由により選択される。MSBは、ワード内の符号ビットなので、これを選択できることにより、符号データの選択に関する柔軟性が得られる。
2.インストラクションのLSB、およびインストラクションのビットn/2(つまり、4ビットワードではビット2、6ビットワードでは3、...)
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から半ワード上になる。
ASWの、代替の有用なサブセットは、インストラクション入力130の4ビットとALUのキャリー出力150を備えた5ビットワードである。このサブセットには、次の利点がある。
1.キャリーアウトは、上述のように、符号なし比較とオーバーフローを提供する。
2.インストラクション入力130のすべてのビットを利用可能にすることにより、ワードから取られた任意のビットを使用してマルチプレクサ200を制御することが可能になる。これにより、ワード内のビットの任意関数の構築が比較的簡単になる(特に、上述のように、マルチプレクサ200の使用と組み合わせて論理ゲートを構築する場合)。
ワードから任意のビットを抽出する機能により、符号拡張の実行が容易になり、したがって、符号付きオーバーフローが発生しないことを保証することが容易になる。
(状態符号化)
ALUステータスワードのいずれのビットがセレクト入力240に接続されるべきかを選択するために、nビットのマスクを使用することは、使用されてもよい可能な組み合わせが2あることを意味している。実際には、いくつかの組み合わせは、他の組み合わせよりもはるかに一般的ではなく、また、いくつかの組み合わせは決して使用されない。
上で概説した4ビットASWの例を使用すると、以下の表3に示すように、16の可能な組み合わせがある。最初の4列はマスク値を示し、5番目の列は、セレクト入力240に送られる結果的な出力関数を示す。
Figure 2005531952


両方のインストラクションビットが使用される行は、非常にまれであり、キャリーおよび符号の両方が使用される行は、実際には決して発生しない。「キャリー OR 符号」は、通常のアプリケーションで発生する制御関数ではない(その理由は、符号は、キャリーとのXORをすでに備えているからである)。さらに、2つのインストラクションビットは、使用される可能性が同等ではなく、LSBの方が、MSBよりもよく使用される(インストラクションと、キャリーまたは符号との組み合わせの場合は特にそうである)。
したがって、より少ないビットで符号化できる、この表の「よく使用される」サブセットを識別することは、マスクおよびASWを組み合わせるためのより複雑な論理回路を利用することによって可能である。例えば、表内の、8つのより一般的な状態は、3ビットで符号化できる。ただし、必要とされる復号化は、はるかに複雑なものとなる。代替の方法は、一般的な状態の復号化を容易にするために、4ビットの符号化を維持し、一般的でない状態は、代替の便利な機能を符号化するために使用することである。この例について、以下で説明する。
(高ファンアウト制御信号)
多くのアプリケーションは、アプリケーション全体にわたって広く使用される、少数の制御信号を含んでいる。例えば、次のようなものがある。
「グローバルリセット」
「グローバルイネーブル」
パイプライン機能停止/イネーブル
これらの信号は、一般に、レジスタの、リセットまたはイネーブル入力のいずれかに接続される。したがって、これらの信号は、RAA内のマルチプレクサ200のマルチプレクサセレクト入力240に接続されることが期待される種類の信号である。
これらの信号は、また、従来の再構成可能デバイス内の汎用ルーティングネットワークによって十分にサポートされていない。これらのネットワークは、一般に、アプリケーション内のデータフローに特有のルーティングパターンを処理するように最適化されており、通常は、これらのグローバル制御信号のファンアウトよりもはるかに低いファンアウトを有する。「ファンアウト」は、特定の出力により駆動される、他の処理要素の入力の数である。n入力処理要素から構築される再構成可能デバイス内の平均ファンアウトは、≦nである(すべての入力は、出力または一定の信号により駆動されるため)。FPGAおよびRAAでは、通常、n≦4であり、それに対して、高ファンアウト信号は、その何倍ものファンアウトを容易に有することが可能である。一部のデバイスは、いくつかの高ファンアウト信号をアレイ上で長距離にわたって迅速にブロードキャストするために、それらのルーティングネットワークに専用の高ファンアウト接続を追加する。ただし、これらの専用接続は、やはり、効果的な方法でクラスタ300に接続される必要がある。これらの高ファンアウト信号をサポートするための代替の方法は、マルチプレクサセレクト入力240に効率的に接続することが可能な、第2汎用ルーティングネットワークを追加することである。この代替の方法について、以下でさらに説明する。
上述の回路1500は、(上記の第2汎用ルーティングネットワークなどの)さまざまなネットワークへの効率的な接続を含むように拡張可能であり、その拡張は、上で説明したASW符号化方式の一般的でない部分を利用することによって可能である。
図17に示すように、「全マスクビットセット」状態は、マルチプレクサ制御経路への代替入力を選択するために利用可能である。拡張された回路1500は、マスク入力1520から入力を引き込む4入力ANDゲート1710を備えている。4入力ANDゲート1710の出力は、マルチプレクサ1720のセレクト入力に接続されている。マルチプレクサ1720は、第1の入力1730を、高ファンアウトネットワークから受け取り、第2の入力1740を、回路1500から受け取る。上述のように、マルチプレクサ200のセレクト入力240にセレクト信号を伝達するために、マルチプレクサ1720は、XORゲート1610への出力を提供する。
マスク入力1520が、すべて1に設定されている場合(表3の最終行)、4入力ANDゲート1710の出力はハイ(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)からの複数の「一般的でない」状態を復号して、高ファンアウトネットワークからの複数の入力の間で選択する、この回路の変形が可能である。あるいは、これらの複数の一般的でない状態は、高ファンアウト出力を駆動するための状態を選択するために使用されてもよい。
高ファンアウト出力が高ファンアウトネットワークに接続されることが可能な、いくつかの方法がある。有用な方法は、デバイスの構成状態の一部(例えば、専用の構成ビット)によって駆動されるトライステートイネーブルを備えたトライステートバッファを介して接続を形成することである。この接続形態は、複数のソースが高ファンアウト導線を駆動できるという利点を有する。しかし、タイミングはどれが実際に使用されているかとは無関係である。これは、高ファンアウトネットワークのタイミングをルーティングソフトウェアが解析するのを容易にする。
(高ファンアウト制御ネットワーク)
上の項では、高ファンアウト制御信号の有用性、およびマルチプレクサ制御回路1500にそれらの信号を接続する方法の例について説明した。本項では、汎用ルーティングネットワークを作製するために、高ファンアウト接続導線が使用するための有用な接続パターンの例を示す。
再構成可能アレイ内の処理要素は、完全に実装されているか、または部分的に実装されているX−Yグリッド上の、行および列内に配置されている(例えば、チェッカー盤またはチェス盤状配置)と仮定する。そのようなアレイ上では、一般的なマルチプレクサ制御信号を共有する要素は、次のように配置できる可能性がある。
行内、または、
列内、または、
ほぼ四角形の区画内
(高ファンアウト制御信号は、ビットスライス(またはサブワードスライス)スタイルのレイアウトを有するデータ経路を制御するために使用されているという仮定に基づく)
これらのパターンは、すべて、基本的に四角形の構造の変形である。したがって、高ファンアウト導線がこれらのパターンを効率的に構築できるということは有用である。そのようなパターンを構築する高ファンアウトネットワークの例を、以下に示す。
1.アレイは、水平および垂直の両方の方向の高ファンアウト導線を含む。
2.独立したそれぞれの高ファンアウト導線は、水平または垂直のいずれかに(つまり、行または列に沿って)伸び、交差するすべてのALU100に接続される。導線は、行(列)全体に沿って伸びていてもよく、またはその一部のみに沿って伸びていてもよい。
3.高ファンアウト導線は、上で示したように、マルチプレクサ制御回路1500に接続され、以下の追加の制約条件を有する。
ALU100ごとにマルチプレクサ200が1つ以上ある場合、各回路1500は、直行する導線に接続された高ファンアウト導線からの入力、および直行する導線に接続された高ファンアウト導線への出力を有する(つまり、入力は垂直から、出力は水平へ、またはその逆)。
ALU100ごとにマルチプレクサ200が1つだけある場合、回路1500は、高ファンアウトネットワークから、又は高ファンアウトネットワークへの入力および出力を、垂直および水平の両方の高ファンアウト導線に接続できなければならない。
導線は自然に水平または垂直方向に伸びるので、上述のように行および列接続を形成するのは容易である。さらに、水平の導線から入力し、垂直の導線に出力すること(またはその逆)ができることによって、2次元の区画を作製することが可能になる−水平の導線を、交差する複数の垂直の導線に接続することができる。
導線がアレイ全体にわたって伸びていない状況では、それらの端はずらされていなければならない−つまり、隣接する列(および行)の平行な導線の端は、一致していてはならず、相互に食い違っていなければならない。4つのALU100にまたがる制御導線(通常のRAA用語では「レングス4(Length 4)」導線)の場合を考慮する。列0では、これらの導線は、ALU0からALU3まで、ALU4からALU7まで、などのように伸びることが可能であり、そして、列1内では、これらの導線は、ALU2からALU5まで、ALU6からALU9まで、などのように伸びることが可能である。これらの導線の範囲は部分的に重なるので、それらは水平の制御導線によって接続されることが可能であり、それにより、2本の導線による合計の垂直到達距離は、1本の導線のみによる距離よりも大きくなる。
図20に示すようなチェッカー盤状配置は、奇数列を除き、偶数行にALUがない(またはその逆)という特性を有する−それらの位置は、ALUの間の空間により、あるいは、より一般的には、ルーティングネットワークをサポートするハードウェアにより占められている。上述の接続パターンにより、結果として、2つの独立した制御ネットワーク2010aおよび2010bが作製される(1つは、奇数番の行および列のALU2000を結び、もう1つは、偶数番の行および列のALU2000を結ぶ)。図20で、ALU2000の間の線は、制御ネットワークの接続を表す。ALU2000内で交差する線は、制御ネットワーク2010a、2010bを形成するために相互に接続可能である。ALU2000の外部で交差する線は、制御ネットワーク2010a、2010bを形成するために相互に接続可能ではない。2つの独立した制御信号を配送するために、2つのネットワークが使用される場合、これは許容できる状況であり得る。あるいは、これらの2つのネットワーク2010a、2010bの間の接続を提供するのが有用であることが見いだされる可能性もある。それらが交差する点は、チェッカー盤のルーティング領域の上にあるため、必要に応じてこの接続をサポートするのは容易である。
汎用ルーティングネットワーク2010a、2010bは、上述の第1汎用ルーティングネットワークからは分離している。2010a、2010bから第1汎用ルーティングネットワークへの信号の伝達は、図4Bに関連して上で説明した方法で、マルチプレクサを制御することによってのみ可能である。
(制御信号としての「符号」および「オーバーフロー」の有用性)
「符号」は、FPGA(またはRAA)ベースの再構成可能アレイのための制御信号として、特に有用である。これは、そのようなアレイと、オーバーフローを使用する傾向のある従来のプロセッサとの間の違いである。この理由については、以下に記載する。
(オーバーフロー)
プロセッサは、ワード長に対しては、非常に限定された制御しか有しておらず、通常は、小さな範囲のワード長(例えば、8、16、および32ビット−2のべき乗の範囲が一般的)のみをサポートする。FPGAおよびRAAデバイスは、アレイを構成する処理要素の粒度のみによって制限される広範なワード長をサポートできる(つまり、アレイが4ビットの処理要素を有している場合、そのアレイは、4n(nは正の整数)に等しいワード長を直接処理できる)。
多くの算術演算アプリケーションは、「一般的な」データセットを使用して実行される場合、アプリケーション内で計算されるすべての中間データは特定のワード長に適合するという特性を有する。しかし、中間結果が適合しない、一般的でないデータセットも存在する。一般的なケースではサポートされているワード長のうちの1つに適合するが、一般的でないケースでは適合しない場合、これはプロセッサにとって重大な問題である。単純なプロセッサベースの実装では、そのため、次の望ましくない選択肢に直面する。
まれなケースに対処するのに十分大きなワード長を常に使用し、これを行うための効率の犠牲は受け入れること。
小さなワード長を使用し、ときには結果が間違っている可能性があることを受け入れること。
効率の犠牲は、非常に大きい可能性がある。例えば、16ビットから32ビット実装に変更する場合、中間結果のために必要なメモリの量は2倍になり、主要なデータ経路のスループットは半減する可能性がある。しかし、たまにエラーが発生する可能性は、受け入れられない場合がある。
幸いにも、この選択の必要を回避するために使用可能な次の第3の選択肢がある。
通常の状況では、小さなワード長を使用して実行するが、これにより間違った答えが与えられる状況を検出して、必要に応じて是正措置を取ることができるようにする(例えば、より広いワード長を使用して、計算の全部または一部を再実行する)。
これにより、アプリケーションは、ほとんどの時間は小さなワード長の利点(メモリサイズ、データ経路のスループット)を得て、まれに必要となった場合にのみ、長いワード長バージョンの犠牲を払うようにすることができる。
ほとんどのプロセッサは、したがって、計算の結果が書き込み先のワード長に適合しない場合を識別するオーバーフロー検出機構を有し、オーバーフローが発生した場合は、プログラムの別の部分に分岐することができる。「オーバーフロー」は、したがって、プロセッサにとって重要な概念である。
FPGAおよびRAAベースの処理では、状況は大幅に異なる−よりきめの細かいワード長制御により、ワード長を拡張するコストははるかに低く、そして、分岐のコストははるかに高い。アプリケーションが、通常は16ビットワードに適合し、ときには18ビットを必要とすると仮定する。プロセッサは、これらのケースに対処するために、32ビットワードを使用しなければならないが、4ビット処理要素を有するRAAは、20ビットのデータ経路を使用できる。したがって、最悪ケースの状況をサポートするための犠牲は、100%ではなく、25%の領域増加となる。
上述のように、FPGAおよびRAAは、一般に、プログラム全体を通して可能なすべての経路についてのデータ経路を構築することによって分岐を実装する。次に、マルチプレクサを使用して、特定のデータセットのための正しい経路を選択する。16ビットの主要データ経路を有し、一部の区間は20ビットを使用して繰り返されており、さらに、それらの間で選択するための多重化を有する場合は、より広いデータ経路を単に全体にわたって使用する場合よりも、実装は大規模になるという結果がただちに得られる可能性がある。
要約すると、プロセッサは、きめの細かいワード長制御には適していないが、分岐には適しているのに対して、FPGAおよびRAAは、ワード長制御はより優れており、分岐はより劣っている。オーバーフローの検出は、ワード長の問題を分岐に変換する方法であり、したがって、プロセッサにとって適切であり、FPGAまたはRAAにとっては適切ではない。
(符号)
結果の符合を知ることは、アプリケーション内の2つの特定の演算で重要となる。
比較:
A>Bは、BからAを減算して、結果の符合を確認することにより実装できる(完全な値ではなく、結果の符合のみが重要である)。同様の方法が、他の比較(<、≦、≧)にも有用である。
符号拡張:
2の補数符号付き数のワード長を増加する場合、符号ビットがすべての追加されるビットにコピーされなければならない。これは、符号ビットが判明した後は、通常、単純な操作である。
符号付きおよび符号なしの両方の数について、正しい結果が得られなければならない。「符号なし」のケースは、符号付き演算の特殊なケース(n+1ビットの符号付きの値の中に、nビットの符号なしの値が埋め込まれている)と見ることができる。2の補数表記法では、値−Xは(NOT X)+1と表現され、最上位ビット(「MSB」)の1が符号ビットを表す。したがって、次のようになる。
−210進=NOT(0102進)+12進=1012進+12進=1102進
符号なし比較は、計算の最上位ビットからのキャリーアウトによって、常に正しく表現される。
減算と、MSBからのキャリーアウトのテストによる符号付き比較は、算術オーバーフローが発生した場合は間違った結果を与える。これは、「キャリーアウト」および「オーバーフロー」信号の組み合わせを使用して、または、符号信号を直接生成することによって修正することができる。
符号なし「符号拡張」は、問題とはならない−追加されるビットはすべて0である。
符号付き符号拡張は、上述のとおりである−符号が、追加されるすべてのビットにコピーされる。
上述の、プロセッサ、FPGAおよびRAA内の、ワード長制御および分岐の異なる実装は、符号の計算方法および使用方法にも影響する。
(プロセッサ)
プロセッサは、主な制御機構として分岐を使用し、そして、分岐を制御するために比較を使用する。これは、「比較および分岐」が組み合わされた命令を使用するか、または、「比較してフラグをセット」する命令および「フラグがセットされていれば分岐」する命令という独立した命令を使用するかの、いずれかにより実行される。したがって、比較演算と、上述のオーバーフロー処理の説明との間には、いくらかの類似性がある−両方とも、「演算を実行する」段階と、それに続く、「ある条件が発生した場合(つまり、オーバーフローがある場合、または、比較が真の場合)は分岐する」段階を有する。この類似性は、関心のある条件の組のうちのいずれが発生したか(算術オーバーフロー、計算が負の結果(つまり、「符号」)を生成した、最新のキャリーアウト値、など)を示す一組の「条件フラグ」と、前記フラグの特定のサブセットのうちの1つまたは複数がセットされている場合にジャンプする汎用分岐命令とを有するプロセッサを使用する場合、しばしば明白にされる。
符号拡張は、通常、メモリからプロセッサにデータが読み込まれる際に行われる−読み込み先よりも小さなフォーマットでメモリに記憶されている場合は、読み込み操作において符号拡張を任意に選択して、記憶されている表現のMSBを、プロセッサ内バージョンの追加ビット内に複製することができる。
(FPGA)
分岐は、FPGA内では、非効率的な操作である。比較操作は、FPGA内では、マルチプレクサへの制御入力として、または、複数の条件を組み合わせるための論理ブロックとして使用される可能性がより大きい。ルーティングネットワークの1ビット性により、以下で与えられる正しい符号のための表現を直接実装することが容易になるので、符号の計算は簡単な操作である。
FPGA内での符号拡張は、ルーティング操作であってもよい−FPGAルーティングの1ビット性により、符号ビットを複数の宛先に容易に接続することが可能である。ただし、nビット入力とn+1ビット出力とを有する演算子を実装することは容易なので、算術演算への入力を拡張する必要はないことが多い。
(RAA)
RAAは、プロセッサとFPGAとの間の中間のケースである−汎用の分岐はやはり非効率的(ただし、一部の制限された形態は、インストラクションの多重化により実装可能)であるが、ルーティングネットワークはビットベースではなくワードベースなので、符号およびオーバーフローのための式の直接実装はより複雑であり、ワード内のビット位置を調節するためにシフトが必要になる。したがって、符号および/またはオーバーフローを直接生成するために、RAA ALUにさらに論理を追加することは、考慮する価値がある。例えば、符号は有用であり、実装するためにはXORゲートが1つ必要なだけである。
符号拡張は、ワード内のビットを再編成する必要があるので、単純なルーティングオプションではありえない。ただし、(上のFPGAのケースで説明した)算術演算出力の符号拡張は、RAAとともに使用することもでき、そして、符号信号を利用できることにより直接的な利点がもたらされる。図18の回路(加算(または減算)操作1820の符号出力1810がマルチプレクサ1830を制御)は、図3に示すクラスタ300のALU100およびマルチプレクサ200に直接対応付けられる。これは、図4Aに示す、符号付き比較に続くデータ選択に使用される回路構成と同一である。この回路は、入力として、加算または減算されるべき2つの数を受け取り、出力として、演算の結果と、符合値を拡張することによって、所望される長さまで出力を補足したさらなる数のビットとを生成する。
図18の回路で、符号出力1810が、負の数を示す値「1」を運ぶ場合、マルチプレクサ1830は、すべて1という第1の入力値を、結果を補足するために選択する。符号出力1810が、正の数を示す値「0」を運ぶ場合、マルチプレクサ1830は、すべて0という第2の入力値を、結果を補足するために選択する。
要約すると、FPGAは必要とされる論理を直接実装できるので、専用の符号論理は、FPGAにとってほとんど利点はない。専用の符号論理は、プロセッサにとって(分岐のための制御フラグとして)およびRAAにとって(マルチプレクサ200で条件制御および符号拡張の両方のために使用されることが可能な、マルチプレクサ200の制御信号として)、より大きな利点がある。
(符号およびオーバーフローのための式の導出)
加算の中の個々のビットについては、和およびキャリーアウトは、入力(A、B、キャリーイン)に、次のように関連している(BをNOT Bに置き換えれば、同じ式が減算にも当てはまる)。
Σ=A i−1
=if(A )then(Ci−1)else(A
ここで、Ci−1はキャリーイン、Cはキャリーアウトであり、はXOR演算を表す。
nビットを使用した計算の結果が、より高い精度で計算が実行されたと仮定した場合(例えば、入力および出力がn+1ビットに拡張された場合)に得られたであろう結果と異なっていれば、オーバーフローが発生している。符号付きおよび符号なしのケースは、別々に取り扱われなければならない。
(符号なしのケース)
入力拡張は、先行する0を追加することにより実現される。
Σn−1=An−1 n−1 n−2
n−1=if(An−1 n−1)then(Cn−2)else(An−1
Σ=A n−1
=0
=0
Σ=Cn−1
符号なし加算では、結果の中の追加ビットは0でなければならず、したがって、nビット計算からのキャリーアウトが0でない場合は、オーバーフローがある。減算のケース(つまり、Bをnot Bに置き換えたケース)では、下記の数1が得られ、期待される値は、やはり0となる。オーバーフローは、したがって、加算についてはキャリーアウト、減算についてはNOT(キャリーアウト)である。
Figure 2005531952
正しい符号は、符号なし加算については、常に正である。減算については、負の結果がオーバーフローを発生させる。したがって、減算については次のようになる。正しい符号=オーバーフロー=NOTキャリーアウト
(符号付きのケース)
入力拡張は、MSBを繰り返すことにより実現される。
Σn−1=An−1 n−1 n−2
n−1=if(An−1 n−1)then(Cn−2)else(An−1
Σ=A n−1
=An−1
=Bn−1
Σ=An−1 n−1 n−1
追加出力ビットの期待される値は、やはり、元の計算のMSBを繰り返さなければならないものである。したがって、オーバーフローVは、これらの2つのビットのXORに等しい。
V=Σ Σn−1
=(An−1 n−1 n−1(An−1 n−1 n−2
=(An−1 n−1(Bn−1 n−1(Cn−1 n−2
=0(Cn−1 n−2
=Cn−1 n−2
したがって、オーバーフロー信号は、nビット計算の最終段階のキャリーインおよびキャリーアウトを組み合わせる単一のXORゲートを使用して生成できる。
正しい符号(しばしば、ネガティブフラグNと呼ばれる)は、追加出力ビットに等しい。
N=Σ
=An−1 n−1 n−1
ただし、An−1 n−1の項は、nビット値のMSBの計算の一部としてすでに計算されているので、符号もまた、評価のためには、追加のXORゲートが1つ必要となるだけである。
要約すると、符号なしのケースについては、正しい符号とオーバーフローは、キャリー出力との直接の関係を有する。符号付きのケースについては、これはもはや正しくなく、符号とオーバーフローの両方が、それらを正しく生成するために、それぞれ、1つの追加のXORゲートのみを必要とする。
上記の明細の中では、本発明を、その特定の実施形態を参照して説明した。ただし、その実施形態に対するさまざまな変形および変更が、本発明のより広い本質と範囲から逸脱することなく行われてもよいことは明らかである。例えば、ここで説明した処理フロー図に示された、処理動作の特定の順序および組み合わせは、あくまでも説明するためのものにすぎず、本発明は、異なるまたは追加の処理動作、あるいは処理動作の異なる組み合わせまたは順序を使用して実施されることが可能であることを、読者は理解すべきである。したがって、明細書および図面は、限定するというよりもむしろ、説明する意味があるものと見なされるべきであり、本発明は、特許請求の範囲およびそれらの法的均等物に従うことを除き、制限または限定されるべきではない。
本発明の実施形態で使用する論理演算装置を示す。 本発明の実施形態で使用するマルチプレクサを示す。 本発明の実施形態による、クラスタ内に組み合わされたALUおよびマルチプレクサの例を示す。 データ選択回路として構成されたクラスタを示す。 データ伝達回路として構成されたクラスタを示す。 条件処理回路として構成された2つのクラスタを示す。 データ経路制御回路として構成された2つのクラスタを示す。 マルチプレクサに接続された出力レジスタを有するクラスタを示す。 レジスタを有するマルチプレクサのための、イネーブル付きレジスタ構成を示す。 レジスタを有するマルチプレクサのための、リセット付きレジスタ構成を示す。 追加の入力選択論理を有するマルチプレクサを示す。 フィードバック回路として構成された入力選択論理を有するマルチプレクサを示す。 キャリーアウト信号のための代替経路を提供するように構成されたマルチプレクサを示す。 ALUのキャリーアウト出力からキャリーイン入力へのレジスタ付き経路を実装するための追加要素を有するクラスタを示す。 マルチプレクサ出力に接続されたインバータを有するクラスタを示す。 アプリケーションの論理コンポーネントを処理要素に割り当てるための方法のフローチャートである。 マルチプレクサ制御信号を生成および選択するための回路を示す。 マルチプレクサ制御信号を選択的に反転させるための回路を示す。 拡張された回路を制御するために、値が迂回されることを可能にする、図15の回路の拡張を示す。 図3のクラスタに対応付けられることが可能な、符号拡張を実装するための回路を示す。 クラスタ内に配置された、ALUおよびマルチプレクサの集まりを示す。 制御信号のための2つの汎用ルーティングネットワークを含む、再構成可能アレイを示す。

Claims (90)

  1. 汎用ルーティングネットワークと、
    その汎用ルーティングネットワークに接続されている複数のクラスタを備え、
    各クラスタは複数の処理要素を備えており、
    複数の処理要素のそれぞれは第1処理要素と第2処理要素を備えており、
    第1処理要素は第1のタイプであり、第2処理要素は第2のタイプであり、
    第1処理要素は第1入力と第2入力と第1出力と第2出力を備えており、
    第1入力と第1出力は、処理要素を通過せずに、汎用ルーティングネットワークに接続されており、
    第2出力は、汎用ルーティングネットワークに接続せずに、第2処理要素に接続されており、
    第2処理要素は第3入力と第4入力と第3出力を備えており、
    第3入力と第3出力は、処理要素を通過せずに、汎用ルーティングネットワークに接続されている異種再構成可能アレイ。
  2. 前記第1処理要素は、前記第2処理要素と組み合わせて使用するように、または前記第2処理要素と独立して使用するように構成されており、
    前記第2処理要素は、前記第1処理要素と組み合わせて使用するように、または前記第1処理要素と独立して使用するように構成されていることを特徴とする請求項1の異種再構成可能アレイ。
  3. 前記第1処理要素では、
    前記汎用ルーティングネットワークと前記第1入力との間に、処理要素を通過せずに、第1接続が形成されており、
    前記汎用ルーティングネットワークと前記第1出力との間に、処理要素を通過せずに、第2接続が形成されており、
    前記第2出力と前記第2処理要素の入力との間に、第3の接続が形成されており、
    その第3接続は前記汎用ルーティングネットワークから独立して構成されていることを特徴とする請求項1の異種再構成可能アレイ。
  4. 前記第2処理要素では、
    前記汎用ルーティングネットワークと前記第3入力との間に、処理要素を通過せずに、第4接続が形成されており、
    前記汎用ルーティングネットワークと前記第3出力との間に、処理要素を通過せずに、第5接続が形成されており、
    前記第4入力と前記第1処理要素の出力との間に、第6接続が形成されており、
    その第6接続は前記汎用ルーティングネットワークから独立して構成されていることを特徴とする請求項1の異種再構成可能アレイ。
  5. 前記汎用ルーティングネットワークは、第1ビット幅を有する複数の第1バスを備えており、
    その第1ビット幅は1よりも大きく、
    前記第2出力は、第2ビット幅を有する第2バスを備えており、
    その第2ビット幅は、前記第1ビット幅と等しくないことを特徴とする請求項1の異種再構成可能アレイ。
  6. 前記第2ビット幅が1であることを特徴とする請求項5の異種再構成可能アレイ。
  7. 前記汎用ルーティングネットワークは、第1ビット幅を有する複数の第1バスを備えており、
    その第1ビット幅は1よりも大きく、
    前記第4入力は、第2ビット幅を有する第2バスを備えており、
    前記第2ビット幅は、前記第1ビット幅と等しくないことを特徴とする請求項1の異種再構成可能アレイ。
  8. 前記第2ビット幅が1であることを特徴とする請求項7の異種再構成可能アレイ。
  9. 前記第1処理要素は、論理演算装置(「ALU」)を備えていることを特徴とする請求項1の異種再構成可能アレイ。
  10. 前記ALUは、第1ビット幅のデータワードを処理することを特徴とする請求項9の異種再構成可能アレイ。
  11. 前記第1入力はALUデータ入力を備えており、
    前記第2入力はALUインストラクション入力を備えており、
    前記第2出力はALU出力を備えており、
    そのALU出力は、前記ALUデータ入力またはALUインストラクション入力のうちの1つまたは複数で受け取られた1つまたは複数の入力信号から導かれた出力信号を伝送することを特徴とする請求項9の異種再構成可能アレイ。
  12. 前記出力信号は、前記ALUデータ入力で受け取られた入力信号から導かれることを特徴とする請求項11の異種再構成可能アレイ。
  13. 前記出力信号は、前記ALUインストラクション入力で受け取られた入力信号から導かれることを特徴とする請求項11の異種再構成可能アレイ。
  14. 前記出力信号は、前記ALUデータ入力とALUインストラクション入力で受け取られた入力信号の論理結合から導かれることを特徴とする請求項11の異種再構成可能アレイ。
  15. 前記出力信号は、ALUキャリーアウト信号を備えていることを特徴とする請求項11の異種再構成可能アレイ。
  16. 前記出力信号は、前記ALUによって生成された符号ビットを備えており、
    その符号ビットは、符号付き算術演算の正しい符号に等しいことを特徴とする請求項11の異種再構成可能アレイ。
  17. 前記出力信号は、第1ALUデータ値と第2ALUデータ値が等しいことを示す一致信号を備えていることを特徴とする請求項11の異種再構成可能アレイ。
  18. 前記出力信号は、第1ALUデータ値と第2ALUデータ値が異なることを示す一致信号を備えていることを特徴とする請求項11の異種再構成可能アレイ。
  19. 前記出力信号は、前記ALUインストラクション入力で受け取られたALUインストラクションビットを備えていることを特徴とする請求項11の異種再構成可能アレイ。
  20. 前記第2処理要素はマルチプレクサを備えており、
    前記第3入力はマルチプレクサ入力を備えており、
    前記第4入力はセレクト入力を備えており、
    前記第3出力はマルチプレクサ出力を備えていることを特徴とする請求項1の異種再構成可能アレイ。
  21. 前記セレクト入力は、前記汎用ルーティングネットワークを利用せずに、前記第1処理要素に接続されていることを特徴とする請求項20の異種再構成可能アレイ。
  22. 前記マルチプレクサ出力は、インバータに接続されていることを特徴とする請求項20の異種再構成可能アレイ。
  23. 前記マルチプレクサは、第1ビット幅のデータワードを処理可能であり、
    その第1ビット幅は1よりも大きいことを特徴とする請求項20の異種再構成可能アレイ。
  24. 複数の前記処理要素のうち少なくとも1つは、レジスタを備えていることを特徴とする請求項1の異種再構成可能アレイ。
  25. 複数の前記処理要素のそれぞれが、レジスタを備えていることを特徴とする請求項24の異種再構成可能アレイ。
  26. 前記マルチプレクサ入力は、一定値信号を受け取ることを特徴とする請求項20の異種再構成可能アレイ。
  27. 前記第2処理要素は、レジスタを備えていることを特徴とする請求項20の異種再構成可能アレイ。
  28. 前記マルチプレクサ入力は、前記レジスタからフィードバック信号を受け取ることを特徴とする請求項27の異種再構成可能アレイ。
  29. 汎用ルーティングネットワークと、
    複数のクラスタを備え、
    各クラスタは、論理演算装置(「ALU」)とマルチプレクサを備えており、
    そのマルチプレクサは、マルチプレクサ出力と複数のマルチプレクサ入力を備えており、
    そのマルチプレクサ入力は、マルチプレクサセレクト入力と第1マルチプレクサ入力を備えており、
    ALUは、ALU出力と複数のALU入力を備えており、
    そのALU入力は、第1ALUデータ入力と第2ALUデータ入力とALUインストラクション入力を備えており、
    マルチプレクサセレクト入力は、ALUによって生成されたマルチプレクサセレクト信号を受け取るように適合されており、
    マルチプレクサとALUは、汎用ルーティングネットワークに接続されている異種再構成可能アレイ。
  30. 前記マルチプレクサセレクト信号は、インストラクション入力信号ビットを備えていることを特徴とする請求項29の異種再構成可能アレイ。
  31. 前記マルチプレクサセレクト信号は、組み合わせ関数を備えていることを特徴とする請求項29の異種再構成可能アレイ。
  32. マルチプレクサセレクト信号は、前記第1ALUデータ入力と第2ALUデータ入力とALUインストラクション入力のうちの少なくとも1つで受け取られる1つまたは複数の入力信号を利用して生成されることを特徴とする請求項31の異種再構成可能アレイ。
  33. 前記入力信号のうちの少なくとも1つは、1ビットよりも大きいことを特徴とする請求項32の異種再構成可能アレイ。
  34. 前記第1ALU入力とALU出力と第1マルチプレクサ入力とマルチプレクサ出力は、前記汎用ルーティングネットワークに接続されていることを特徴とする請求項30の異種再構成可能アレイ。
  35. 前記ALU入力のうちの1つまたは複数は、ワード幅の入力を備えており、
    前記ALU出力は、ワード幅の出力を備えており、
    前記第1マルチプレクサ入力は、ワード幅の入力を備えており、
    前記マルチプレクサ出力は、ワード幅の出力を備えており、
    前記ワード幅の入力および出力は、前記汎用ルーティングネットワークに接続されていることを特徴とする請求項30の異種再構成可能アレイ。
  36. 前記マルチプレクサセレクト信号は、キャリーアウト信号を備えていること特徴とする請求項31の異種再構成可能アレイ。
  37. 前記マルチプレクサセレクト信号は、符号信号を備えていることを特徴とする請求項31の異種再構成可能アレイ。
  38. 前記マルチプレクサセレクト信号は、オーバーフロー信号を備えていることを特徴とする請求項31の異種再構成可能アレイ。
  39. 前記クラスタは、データ選択回路に構成されていることを特徴とする請求項29の異種再構成可能アレイ。
  40. 前記クラスタは、条件処理回路に構成されていることを特徴とする請求項29の異種再構成可能アレイ。
  41. 前記クラスタは、データ経路制御回路に構成されていることを特徴とする請求項29の異種再構成可能アレイ。
  42. 前記マルチプレクサセレクト信号入力は、前記汎用ルーティングネットワークをバイパスすることを特徴とする請求項29の異種再構成可能アレイ。
  43. 前記ALUによって生成されるとともに前記ALU出力を通して送られる出力信号は、前記汎用ルーティングネットワークに伝えられており、
    そのALU出力は前記汎用ルーティングネットワークに直接接続されていないことを特徴とする請求項29の異種再構成可能アレイ。
  44. 前記汎用ルーティングネットワークは第1ビット幅を有しており、
    その第1ビット幅は2つ以上のビットを備えており、
    前記出力信号は第2ビット幅を有しており、
    その第2ビット幅は1つまたは複数のビットを備えており、
    前記第1ビット幅は、前記第2ビット幅よりも大きいことを特徴とする請求項43の異種再構成可能アレイ。
  45. 前記出力信号は、前記第2ビット幅から前記第1ビット幅に変換されることを特徴とする請求項44の異種再構成可能アレイ。
  46. 前記出力信号は、前記マルチプレクサを通して送られることによって、前記汎用ルーティングネットワークに伝えられることを特徴とする請求項43の異種再構成可能アレイ。
  47. 前記マルチプレクサ出力に接続されている出力レジスタを備えていることを特徴とする請求項29の異種再構成可能アレイ。
  48. 前記マルチプレクサ出力は、前記レジスタを通して送られることを特徴とする請求項47の異種再構成可能アレイ。
  49. 前記マルチプレクサおよび前記出力レジスタは、イネーブル付きレジスタ回路に構成されていることを特徴とする請求項47の異種再構成可能アレイ。
  50. 前記マルチプレクサおよび前記出力レジスタは、リセット付きレジスタ回路に構成されていることを特徴とする請求項47の異種再構成可能アレイ。
  51. 前記複数のマルチプレクサ入力のうちの1つに接続されている入力選択論理を備えていることを特徴とする請求項29の異種再構成可能アレイ。
  52. 前記入力選択論理は、一定値を受け取る少なくとも1つの入力を有する第2のマルチプレクサを備えていることを特徴とする請求項51の異種再構成可能アレイ。
  53. 前記異種再構成可能アレイに構成されているアプリケーションを備えており、
    前記入力選択論理は、前記アプリケーションによって動的に制御されないことを特徴とする請求項51の異種再構成可能アレイ。
  54. 前記入力選択論理は、前記マルチプレクサ出力から複数の前記マルチプレクサ入力のうちの1つに向けてフィードバック経路を形成していることを特徴とする請求項51の異種再構成可能アレイ。
  55. 前記入力選択論理は、前記ALUから前記マルチプレクサに向けてキャリーアウト信号を提供していることを特徴とする請求項51の異種再構成可能アレイ。
  56. 前記アレイは、前記マルチプレクサ出力から前記複数のALU入力のうちの1つに向けてフィードバック経路を提供していることを特徴とする請求項29の異種再構成可能アレイ。
  57. 前記フィードバック経路は、前記マルチプレクサ出力に接続されている出力選択スイッチの下流に提供されていることを特徴とする請求項56の異種再構成可能アレイ。
  58. 前記フィードバック経路は、非同期ラッチを形成していることを特徴とする請求項57の異種再構成可能アレイ。
  59. 前記マルチプレクサ出力に接続されているインバータを備えていることを特徴とする請求項29の異種再構成可能アレイ。
  60. 前記マルチプレクサ出力は、前記インバータを通して送られることを特徴とする請求項54の異種再構成可能アレイ。
  61. 第1の処理要素と第2の処理要素を有するクラスタを複数備えている異種再構成可能アレイを構成するための方法であって、
    アプリケーションを受け取る工程と、
    アプリケーションの第1部分を選択する工程と、
    アプリケーションの第2部分を選択する工程と、
    アプリケーションの第3部分を選択する工程と、
    第1部分を、複数の第1処理要素に実装する工程と、
    第2部分を、複数の第2処理要素に実装する工程と、
    第3部分を、利用可能性基準に基づいて、複数の第1処理要素、複数の第2処理要素、又はその組み合わせのいずれかに選択的に実装する工程と、
    を備えている構成方法。
  62. 前記第1部分は、第1処理要素を利用して実装されるアプリケーション要素を備えていることを特徴とする請求項61の構成方法。
  63. 前記第2部分は、第2処理要素を利用して実装されるアプリケーション要素を備えていることを特徴とする請求項61の構成方法。
  64. 前記第3部分は、第1処理要素または第2処理要素のいずれかを利用して実装されるアプリケーション要素を備えていることを特徴とする請求項61の構成方法。
  65. 前記利用可能性基準は、前記第3部分が、より豊富に利用可能な処理要素内に実装されることを規定することを特徴とする請求項61の構成方法。
  66. 前記第3部分は、複数のアプリケーション要素を備えており、
    前記利用可能性基準が、各アプリケーション要素について、一度評価されることを特徴とする請求項65の構成方法。
  67. 前記複数の第1処理要素は、論理演算装置を備えていることを特徴とする請求項61の構成方法。
  68. 前記複数の第2処理要素は、マルチプレクサを備えていることを特徴とする請求項61の構成方法。
  69. それぞれがALU出力と複数のALU入力を有する複数の論理演算装置(「ALU」)と、
    それぞれがマルチプレクサ制御入力を有する複数のマルチプレクサと、
    ALU群とマルチプレクサ群のうち、選択されたものの間の接続を形成する汎用ルーティングネットワークと、
    複数のALU出力のうちの1つと、複数のマルチプレクサ制御入力のうちの1つを接続するマルチプレクサ制御回路を備え、
    マルチプレクサ制御回路は、1つまたは複数のALU出力信号からマルチプレクサ制御信号を導くことを特徴とする異種再構成可能アレイ。
  70. 前記ALU出力信号は、1つまたは複数のALU入力信号に基づく信号を備えていることを特徴とする請求項69の異種再構成可能アレイ。
  71. 前記ALU出力信号は、ALUキャリーアウト信号を備えていることを特徴とする請求項70の異種再構成可能アレイ。
  72. 前記ALU出力信号は、正しい符号信号を備えていることを特徴とする請求項70の異種再構成可能アレイ。
  73. 前記ALU出力信号は、オーバーフロー信号を備えていることを特徴とする請求項70の異種再構成可能アレイ。
  74. 前記ALU出力信号は、ALUデータ入力信号を備えていることを特徴とする請求項70の異種再構成可能アレイ。
  75. 前記ALU出力信号は、ALUインストラクション入力信号を備えていることを特徴とする請求項70の異種再構成可能アレイ。
  76. 前記ALU出力信号は、ALUデータ信号とALUインストラクション信号の論理結合を備えていることを特徴とする請求項70の異種再構成可能アレイ。
  77. 1つまたは複数の前記ALU出力信号は、コード化ALU出力にコード化されていることを特徴とする請求項69の異種再構成可能アレイ。
  78. 前記マルチプレクサ制御回路は、1つまたは複数のALU出力信号と1つまたは複数のマスク値から、前記マルチプレクサ制御信号を導くことを特徴とする請求項69の異種再構成可能アレイ。
  79. 前記マルチプレクサ制御回路に接続されている外部入力を備えており、
    1つまたは複数の前記マスク値は、前記マルチプレクサ制御信号を生成するために、前記外部入力を選択するために利用されることを特徴とする請求項78の異種再構成可能アレイ。
  80. 前記マルチプレクサ制御回路は、複数のマルチプレクサ制御回路のうちの1つであるとともに、専用の高ファンアウトネットワークを備えており、
    その専用の高ファンアウトネットワークは、複数の前記マルチプレクサ制御回路のみに接続されていることを特徴とする請求項79の異種再構成可能アレイ。
  81. 前記外部入力は、前記専用の高ファンアウトネットワークから前記マルチプレクサ制御回路に接続されていることを特徴とする請求項80の異種再構成可能アレイ。
  82. 前記マルチプレクサ制御回路から前記専用の高ファンアウトネットワークに接続されている専用の高ファンアウトネットワーク出力を備えていることを特徴とする請求項80の異種再構成可能アレイ。
  83. 前記マルチプレクサ制御回路は、複数のマルチプレクサ制御回路のうちの1つであるとともに、第2汎用ルーティングネットワークを備えており、
    その第2汎用ルーティングネットワークは、複数の前記マルチプレクサ制御回路のみに接続されていることを特徴とする請求項69の異種再構成可能アレイ。
  84. 前記外部入力は、前記第2汎用ルーティングネットワークから前記マルチプレクサ制御回路に接続されていることを特徴とする請求項83の異種再構成可能アレイ。
  85. 前記マルチプレクサ制御回路と前記第2汎用ルーティングネットワークを接続する出力接続を備えていることを特徴とする請求項83の異種再構成可能アレイ。
  86. 第1の複数の入力端子と第1の複数の出力端子を備えている第1汎用ルーティングネットワークと、
    第2の複数の入力端子と第2の複数の出力端子を備えている第2汎用ルーティングネットワークと、
    複数の処理要素を備え、
    それぞれの処理要素は、第1の複数の入力端子、第1の複数の出力端子、第2の複数の入力端子、第2の複数の出力端子のいずれかに属する少なくとも1つの端子に接続されている複数の処理要素を備えている再構成可能アレイ。
  87. 前記第1汎用ルーティングネットワークは、複数の前記処理要素のうちの1つまたは複数のみによって、前記第2汎用ルーティングネットワークに接続されていることを特徴とする請求項86の再構成可能アレイ。
  88. 前記第1汎用ルーティングネットワークは第1ビット幅を有し、前記第2汎用ルーティングネットワークは第2ビット幅を有しており、
    前記第1ビット幅は前記第2ビット幅と異なっていることを特徴とする請求項86の再構成可能アレイ。
  89. 前記第1汎用ルーティングネットワークは、前記第1の複数の入力端子のいずれかと前記第1の複数の出力端子のいずれかとの間の接続をなすように構成可能であることを特徴とする請求項86の再構成可能アレイ。
  90. 前記第2汎用ルーティングネットワークは、前記第2の複数の入力端子のいずれかと前記第2の複数の出力端子のいずれかとの間の接続をなすように構成可能であることを特徴とする請求項86の再構成可能アレイ。
JP2004516568A 2002-07-01 2003-06-02 異種再構成可能アレイ Expired - Fee Related JP4261478B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/188,388 US7471643B2 (en) 2002-07-01 2002-07-01 Loosely-biased heterogeneous reconfigurable arrays
PCT/EP2003/005783 WO2004003778A2 (en) 2002-07-01 2003-06-02 Loosely-biased heterogeneous reconfigurable arrays

Publications (2)

Publication Number Publication Date
JP2005531952A true JP2005531952A (ja) 2005-10-20
JP4261478B2 JP4261478B2 (ja) 2009-04-30

Family

ID=29780116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004516568A Expired - Fee Related JP4261478B2 (ja) 2002-07-01 2003-06-02 異種再構成可能アレイ

Country Status (7)

Country Link
US (1) US7471643B2 (ja)
EP (1) EP1535394B1 (ja)
JP (1) JP4261478B2 (ja)
AT (1) ATE418814T1 (ja)
AU (1) AU2003245906A1 (ja)
DE (1) DE60325488D1 (ja)
WO (1) WO2004003778A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011041105A (ja) * 2009-08-14 2011-02-24 Semiconductor Technology Academic Research Center 高周波信号生成回路
JP2014016894A (ja) * 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7461234B2 (en) * 2002-07-01 2008-12-02 Panasonic Corporation Loosely-biased heterogeneous reconfigurable arrays
US7471643B2 (en) 2002-07-01 2008-12-30 Panasonic Corporation Loosely-biased heterogeneous reconfigurable arrays
US6944205B2 (en) * 2002-07-09 2005-09-13 Sandbridge Technologies, Inc. Method of determining an acquisition indicator bit in a communication system
US20070186076A1 (en) * 2003-06-18 2007-08-09 Jones Anthony M Data pipeline transport system
RU2006100275A (ru) * 2003-06-18 2006-07-10 Амбрик, Инк. (Us) Система разработки интегральной схемы
US7937557B2 (en) 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US7844668B2 (en) * 2004-07-30 2010-11-30 Microsoft Corporation Suggesting a discussion group based on indexing of the posts within that discussion group
US20060181243A1 (en) * 2005-02-11 2006-08-17 Nortel Networks Limited Use of location awareness to facilitate clinician-charger interaction in a healthcare environment
JP4527571B2 (ja) * 2005-03-14 2010-08-18 富士通株式会社 再構成可能演算処理装置
US7904695B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
CN100346335C (zh) * 2005-12-02 2007-10-31 浙江大学 一种采用异步通信机制的可重构计算单元
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US7751368B2 (en) * 2006-05-01 2010-07-06 Intel Corporation Providing CQI feedback to a transmitter station in a closed-loop MIMO system
CN101578767A (zh) * 2007-01-05 2009-11-11 Nxp股份有限公司 包含可编程逻辑单元矩阵的电路
US8805916B2 (en) * 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US9779785B2 (en) 2015-05-11 2017-10-03 Wisconsin Alumni Research Foundation Computer architecture using compute/storage tiles
US9628083B1 (en) * 2015-10-01 2017-04-18 Quicklogic Corporation Local routing network with selective fast paths for programmable logic device
US10191881B2 (en) * 2016-06-06 2019-01-29 Hewlett Packard Enterprise Development Lp Modifications to a stream processing topology during processing of a data stream
US10963265B2 (en) * 2017-04-21 2021-03-30 Micron Technology, Inc. Apparatus and method to switch configurable logic units
WO2019090032A1 (en) * 2017-11-03 2019-05-09 Coherent Logix, Inc. Memory network processor
US11029958B1 (en) * 2019-12-28 2021-06-08 Intel Corporation Apparatuses, methods, and systems for configurable operand size operations in an operation configurable spatial accelerator

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US678408A (en) * 1897-03-06 1901-07-16 Wilhelm Lengweiler Ring-spinning machine.
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
US5838894A (en) * 1992-12-17 1998-11-17 Tandem Computers Incorporated Logical, fail-functional, dual central processor units formed from three processor units
US6157967A (en) * 1992-12-17 2000-12-05 Tandem Computer Incorporated Method of data communication flow control in a data processing system using busy/ready commands
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.
US6052773A (en) 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5956518A (en) * 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6011795A (en) * 1997-03-20 2000-01-04 Washington University Method and apparatus for fast hierarchical address lookup using controlled expansion of prefixes
US6609189B1 (en) 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6907011B1 (en) * 1999-03-30 2005-06-14 International Business Machines Corporation Quiescent reconfiguration of a routing network
US7283463B2 (en) * 1999-03-30 2007-10-16 International Business Machines Corporation Non-disruptive reconfiguration of a publish/subscribe system
EP1177631B1 (en) 1999-05-07 2005-12-28 Infineon Technologies AG Heterogeneous programmable gate array
US6807172B1 (en) * 1999-12-21 2004-10-19 Cisco Technology, Inc. Method and apparatus for learning and switching frames in a distributed network switch
US6535043B2 (en) * 2000-05-26 2003-03-18 Lattice Semiconductor Corp Clock signal selection system, method of generating a clock signal and programmable clock manager including same
US6469540B2 (en) 2000-06-15 2002-10-22 Nec Corporation Reconfigurable device having programmable interconnect network suitable for implementing data paths
US6965615B1 (en) * 2000-09-18 2005-11-15 Cisco Technology, Inc. Packet striping across a parallel header processor
AU2002238325A1 (en) * 2001-03-02 2002-09-19 Atsana Semiconductor Corp. Data processing apparatus and system and method for controlling memory access
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
US6781408B1 (en) 2002-04-24 2004-08-24 Altera Corporation Programmable logic device with routing channels
US7471643B2 (en) 2002-07-01 2008-12-30 Panasonic Corporation Loosely-biased heterogeneous reconfigurable arrays
EP1597825B1 (en) 2003-02-19 2007-06-06 Koninklijke Philips Electronics N.V. Electronic circuit with array of programmable logic cells

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011041105A (ja) * 2009-08-14 2011-02-24 Semiconductor Technology Academic Research Center 高周波信号生成回路
US8134419B2 (en) 2009-08-14 2012-03-13 Semiconductor Technology Academic Research Center Digital high-frequency generator circuit
JP2014016894A (ja) * 2012-07-10 2014-01-30 Renesas Electronics Corp 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム

Also Published As

Publication number Publication date
JP4261478B2 (ja) 2009-04-30
US20040001445A1 (en) 2004-01-01
EP1535394B1 (en) 2008-12-24
ATE418814T1 (de) 2009-01-15
WO2004003778A2 (en) 2004-01-08
AU2003245906A8 (en) 2004-01-19
EP1535394A2 (en) 2005-06-01
US7471643B2 (en) 2008-12-30
DE60325488D1 (de) 2009-02-05
WO2004003778A3 (en) 2005-03-31
AU2003245906A1 (en) 2004-01-19

Similar Documents

Publication Publication Date Title
JP4261478B2 (ja) 異種再構成可能アレイ
JP4573896B2 (ja) 粗バイアス異種再構成可能アレイ
US6353841B1 (en) Reconfigurable processor devices
US9292474B1 (en) Configurable hybrid adder circuitry
US7663400B1 (en) Flexible carry scheme for field programmable gate arrays
US10340920B1 (en) High performance FPGA addition
EP0827069A2 (en) Arithmetic circuit and method
JPH0215088B2 (ja)
US7617269B2 (en) Logic entity with two outputs for efficient adder and other macro implementations
US20190042197A1 (en) Programmable-Logic-Directed Multiplier Mapping
US20030120694A1 (en) Method and apparatus for use in booth-encoded multiplication
US7716270B2 (en) Carry-ripple adder
EP0924625B1 (en) Configurable processing device and method of using said device to construct a central processing unit
EP2270647A1 (en) Multi-bit carry chain
Vijayalakshmi et al. Design of hybrid adder using QCA with implementation of wallace tree multiplier
Begum 4-BIT LOW POWER ALU DESIGN USING VHDL
JP3540136B2 (ja) データ分割並列シフタ
US20120280710A1 (en) Reuse of constants between arithmetic logic units and look-up-tables
Muduli et al. Design of an Efficient Low Power 4-bit arithmatic Logic Unit (ALU) using VHDL
Vijayalakshmi et al. Efficient Design of a Hybrid Adder Using Quantum-Dot Cellular Automata
Lavanya et al. NEW DESIGN APPROACH TO IMPLEMENT BINARY ADDER BY USING QCA
Louie et al. Implementing division with field programmable gate arrays
Lotfivand et al. A review of the present state of art in FPGA-Based Adders
Sowkaarthiga et al. Efficient Quantum Dot Cellular Automata Adder Using Five Input Majority Gate
MURTHY et al. DESIGN AND IMPLEMENTATION OF HIGH-SPEED CARRY SELECT ADDER

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20050830

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20070618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070724

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20071017

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20071024

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20071212

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20071212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080124

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20080509

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080924

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081121

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: 20090113

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: 20090205

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120220

Year of fee payment: 3

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: 20130220

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130220

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140220

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees