JP2007504688A - データ処理装置およびデータ処理方法 - Google Patents

データ処理装置およびデータ処理方法 Download PDF

Info

Publication number
JP2007504688A
JP2007504688A JP2006524345A JP2006524345A JP2007504688A JP 2007504688 A JP2007504688 A JP 2007504688A JP 2006524345 A JP2006524345 A JP 2006524345A JP 2006524345 A JP2006524345 A JP 2006524345A JP 2007504688 A JP2007504688 A JP 2007504688A
Authority
JP
Japan
Prior art keywords
register
data
input
pae
bus
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
JP2006524345A
Other languages
English (en)
Other versions
JP4700611B2 (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.)
PACT XPP Technologies AG
Original Assignee
PACT XPP Technologies AG
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
Priority claimed from DE10357284A external-priority patent/DE10357284A1/de
Application filed by PACT XPP Technologies AG filed Critical PACT XPP Technologies AG
Publication of JP2007504688A publication Critical patent/JP2007504688A/ja
Application granted granted Critical
Publication of JP4700611B2 publication Critical patent/JP4700611B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/8023Two dimensional arrays, e.g. mesh, torus
    • 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
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17337Direct connection machines, e.g. completely connected computers, point to point communication networks
    • G06F15/17343Direct connection machines, e.g. completely connected computers, point to point communication networks wherein the interconnection is dynamically configurable, e.g. having loosely coupled nearest neighbor architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17381Two dimensional, e.g. mesh, torus
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • 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/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • G06F15/803Three-dimensional arrays or hypercubes
    • 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, 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, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, 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, 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
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

ここに示されているのは、コースグレインロジック素子からなる多次元アレイを含むデータ処理装置であって、このコースグレインロジック素子は、データを処理し、第1クロックレートで動作し、かつ互いに通信し、および/または第2クロックレートで動作するバスおよび/または通信ラインを介して別の素子と通信するデータ処理装置である。ここでは上記の第1クロックレートは第2クロックレートよりも高く、上記のコースグレインロジック素子は、処理しなければならないデータを記憶するための記憶手段を有する。

Description

本発明はリコンフィギャラブルコンピューティングに関連する。特に本発明はリコンフィギャラブルデバイスのアーキテクチャの改善に関連する。
リコンフィギャラブルデータプロセシングアレイはこの分野では周知である。本出願人による先行出願文献および/または先行公開文献の全ての内容は参照により本発明に組み込まれる。したがって以下に説明するデバイスは、コースグレイン計算素子および/またはデータ演算素子を含み、有利にはローディングユニット(CT,CMなど)に対するリコンフィギュレーション性を表す信号に応じてその全体または一部を動作中にリコンフィギュレーションできるn>1の多次元アレイであってよい。
現在これらのデータプロセシングアレイの幾つかが構築されている(例えばXPP1,XPP128,XPP2,XPP64)。ただし周知のデバイスやその演算方法の改善が所望される。
したがって、この課題を解決する複数の改善手段を以下に説明する。これらの手段は個々にまたは共同してデバイスのパフォーマンスを高め、電力消費および/またはコストを低減することができる。
周知のデバイスを改善する第1の手段は、個々のプロセッサ素子の機能を改善することである。以前からアレイにリングメモリ(RINGSPEICHER)を設け、このリングメモリ内に命令を記憶し、所定のリングメモリアドレスを指示するポインタを形成して次に実行すべき命令を選択させることが提案されている。また、少なくとも1つの“シャドウコンフィギュレーション”を形成し、複数のコンフィグレーションおよびシャドウコンフィギュレーションを切り換えることも提案されている。その他の付加的な提案には“ウェーブリコンフィギュレーション”と称される手段もある。
これらの周知の手法によりリコンフィギャラブルデバイスのパフォーマンスは改善されるが、さらなる改善の必要性および可能性があるように思われる。
以下の説明において詳細な例を挙げるが、例えばPAEに関連するレジスタ数に対して、正確に同数のレジスタを備えたALUを設ける必要はないことを理解されたい。当該分野の技術者には、明示的な実施例に対する変更が容易に可能であること、詳細な説明はPAEの例示に努めたものであって本発明を限定する意図で行われたのではないことが理解されるであろう。
1 XPP XPP−IIに対する変更の概観
1.1 ALU−PAEアーキテクチャ
ここで提案される改善されたアーキテクチャでは、PAEは例えば4個の入力ポートおよび4個の出力ポートを有する。各PAEにはMERGE,SWAP,DEMUX,ELUTなどのデータフロー手段を備えたFREGパスが組み込まれている。これは新たにDFパスと称される。
2個の入力ポートRi0,Ri1は直接にALUに接続されている。2個の出力ポートはALUの結果を受け取る。入力ポートRi2,Ri3は典型的には出力側がRo2,Ro3であるDFパスへ供給される。これに代えて入力ポートRi2,Ri3をALUに対する入力側として用いることもできる。こうした拡張は、後述するファンクションフォールディングFunction Foldingが使用される場合、適切な数のALU入力側を設ける際に必要である。このモードでは出力側Ro2,Ro3は付加的な出力側として用いられる。
各データレジスタ(RiまたはRo)に対して1つのイベントポート(EiまたはEo)が存在する。
付加的なデータおよびイベントがBRi0−1,BEi0−をバイパスするように構成することもできる(必須ではない)。判別はどれだけの頻度でファンクションフォールディングが使用されるか、また平均してどれだけの数の入力側および出力側が必要とされるかに依存してなされる。
Figure 2007504688
1.1.1 その他の拡張
例えばグラフィクスおよびイメージングに対して8bit幅および16bit幅のデータ語を支援するALU内にはSIMD演算がインプリメントされている。
例えば音声アルゴリズム、ビデオアルゴリズムおよびイメージングアルゴリズムに対するADD/SUB/MUL命令に対しては飽和がサポートされている。
1.2 ファンクションフォールディング
1.2.1 基礎および入力/出力パラダイム
本章では、より良く理解してもらうために、XPPアーキテクチャの基礎演算パラダイムをPETRI‐NETに基づいて繰り返しておく。PETRI‐NETに加え、より良く理解してもらうために、以下に現行のXPPアーキテクチャの変更点を説明する。
ほとんどのアレイで各PAEはPETRI‐NETによって定義されたデータフローノードとして動作する(他の機能部分を有するアレイも存在するが、これらは標準のPAEとは考えない)。PETRI‐NETは複数の入力の計算をサポートし、単一の出力を形成する。PETRI‐NETの特徴は全ての入力データが得られるまで演算が遅延されるということである。
XPP技術では、これは
1.必要な全てのデータが利用可能となる
2.必要な全てのイベントが利用可能となる
ことを意味している。データおよびイベントの数量はデータアンドコントロールフローによって定義されている。利用可能であることは動作中にハンドシェイクプロトコルRDY/ACKにより表示される。
Figure 2007504688
太線は演算を表し、右側の丸は全ての入力データが利用可能となるまで当該の演算が遅延されることを表している。
基礎的手法であるファンクションフォールディングを拡張することにより、1つの演算に代えて複数の演算がシーケンシャルにサポートされ、これがCycleと称される。重要なのはPETRI‐NETの基礎が変更されないということである。
Figure 2007504688
典型的なPAE状のPETRI‐NETは1演算当たり1つの入力パケットを消費する。シーケンシャル演算では同じ入力パケットの複数の読み出しがサポートされる。ただしインタフェースモデルは変更されないままである。
データの複製はPETRI‐NETの出力パスで行われ、演算の基礎には影響しない。
Figure 2007504688
1.2.2 ファンクションフォールディングのメソッド
最も重要な拡張の1つは、複数のPAE機能を1つのPAE上にたたみ込み、シーケンシャルに実行させる手段である。この手段はシーケンシャル処理またはマイクロコントローラ手段をサポートしないことを理解されたい。ファンクションフォールディングの意図は複数のデータフロー演算を行い、各機能間のネットワークに代わるレジスタ構造を用いてこれらを単一のPAE上にマッピングすることである。
目的の1つにPAEの局所的なクロック周波数にしたがって増大するシリコン面積を節約することが挙げられる。付加的に電力の節約も期待される。バスはクロック周波数の数分の1の速度で動作するからである。つまり多くの電力を消費するバスを介したデータ転送が低減される。
Figure 2007504688
内部レジスタは種々の手段でインプリメントすることができる。例えば次の2つの手段が挙げられる。すなわち
1.データフローモデル
各レジスタr’はデータがレジスタに書き込まれると直ちにセットされ、読み出されると直ちにリセットされる有効bitを有する。データは有効bitがセットされると書き込むことができず、有効ビットがセットされないと読み出すことができない。このアプローチにより100%互換性のあるデータフロー挙動がインプリメントされる。
2.シーケンサモデル
レジスタは関連する有効bitを有さない。PAEはシーケンサとして動作し、PAEのエッジ(バス接続部)ではパラダイムがXPP状のデータフロー挙動へ変更される。
一見するとデータフローモデルが有利であるように思われるが、そこには大きな欠点が含まれる。その1つは、大量のレジスタが各データパスをインプリメントする必要があり、データの複製が煩雑で効率が悪いことである。また限定されたシーケンシャル演算によりプログラミングおよびハードウェアのコストを単純化できることも1つである。
ゆえに結果としてはシーケンサモデルがインプリメントされていると見なされる。純粋なデータフローは自動ツールを用いてたたみ込まれ、純粋なデータフローは自動ツールを用いてたたみ込まれるので、プログラマはデータフローパラダイム内にとどまり、付加的な手段に惑わされない。自動ツールは例えばレジスタ割り当て中にパラダイムに背反しないように注意していなければならない。
次表はシーケンサモデルを用いて4個ではなく2個のレジスタのみ必要とされるケースを表している。
Figure 2007504688
例えばアドレス形成のような煩雑な機能および“IMEC”などのデータストリーム演算のアルゴリズムを可能にするために、PAEは4個の命令レジスタだけでなく8個の命令レジスタを有する。ただしバスクロックとPAEクロックとの比の最大値は通常のファンクションフォールディングの係数4に制限されている。
新しいPAEをサポートするファンクションフォールディングのサイズは最大25%まで増大すると予測される。これに対してPAEは4個から1個へ低減される。
平均して、最適化されるのではなく3個の機能のみが単一のPAEにたたみ込まれ、XPP64がXPP21によって置換されると見なされる。大きいほうのPAEを考慮に入れると、XPP64 XPP−IIの機能は1/2より小さい面積のXPP XPP−III上で実行可能となる。
ファンクションフォールディングの方法および装置およびそのさらなる改善点を以下に詳細に説明する。
内部データレジスタおよびバス転送の等価性
ファンクションフォールディングコンセプトは
a)PAE内でvon NeumanプロセッサおよびHavardプロセッサと同じ法則が通用するシーケンシャルモデル
b)任意の順序でPETRI‐NETモデルデータが計算または演算されるPACT VPUモデル
の2つの異なるデータ処理モデルを実現している。
入力レジスタIRへのデータの到来が予測不能であるため、Rc0...Rcn内の命令をリニアに実行しなければならない場合、デッドロックまたはパフォーマンスの少なくとも大幅な低下が起こる。特にPAE出力を入力側へ戻すフィードバック部が存在する場合、デッドロックが起こる。これは命令を所定の順序でなく処理能力にしたがって処理することにより回避できる。つまりVPUモデルの全ての条件が満足されたら直ちに所定の命令を実行する。したがって、例えば到来するデータの全てのRDYハンドシェイク、出発するデータの全てのACKハンドシェイク、また必要であればハンドシェイクを含む各トリガが有効になったとき、命令が実行される。ファンクションフォールディングPAE(FF PAE)はデータを付加的に内部レジスタにも記憶するので、有利な実施例ではその有効性およびステータスを検査することもできる。こうして全ての内部データレジスタRd0...Rdnには個別に有効データがレジスタ内に存在するか否かを表す有効bitが割り当てられている。データがレジスタへ書き込まれるとき有効bitがセットされ、読み出されるとき有効bitがリセットされる。つまりデータは有効値がセットされているときにしか読み出すことができず、有効値がセットされていないときにしか書き込むことができない。有効値フラグはRDYハンドシェイクおよびACKハンドシェイクの伝達によりバスシステムのステータスマシンで形成されたステータスにきわめて近似に相応する。このようにレジスタにステータスビットを形成する手段は有利であり、進歩的である。
したがってPETRI‐NETにきわめて類似した実行のための全ての条件が満足されたとき、命令を実行することができる。
基本的には命令の選択および実行の制御のための2つのメソッドが存在する。以下にこれを説明する。
メソッドA:FF PAEプログラムポインタ
(有限状態機械&プログラムポインタアプローチ)
Figure 2007504688
シーケンシャルプロセッサの制御方式にしたがって、プログラムカウンタは命令メモリ内の所定の命令を選択するために用いられる。有限状態機械はプログラムカウンタを制御する。この有限状態機械はRC内の命令すなわちプログラムカウンタPCの指示する命令に対する全ての条件が満足されているか否かを検査する。そのために、命令の実行に必要な入出力の各RDYハンドシェイクおよびACKハンドシェイクが検査される。また読み出すべき内部レジスタRd0...Rdnの有効値フラグがセットされているかどうかが検査され、さらに書き込むべき内部レジスタRd0...Rdnの有効値フラグがセットされていないかどうかが検査される。1つでも条件が満足されていない場合には、命令は実行されない。プログラムカウンタPCはさらに計数するように制御され、当該の命令はスキップされ、次の命令が選択されて同様に検査される。
このメソッドの利点はシーケンシャルプロセッサモデルと互換性があることである。欠点は命令のテストおよびスキップの必要があることである。これらは所定の状況のもとではパフォーマンスの大幅な損失につながりうる。
メソッドB:FF PAEプログラムポインタ
(イネーブラ&アービタアプローチ)
Figure 2007504688
このメソッドはRc0...Rcn内の全ての命令を並列に実行する手段に基づいている。アレイ命令の完全な復号化にかかるコストを節約するために、各RCには評価マスクフィールド内のエントリが割り当てられる。エントリの長さはテストすべきステータスの最大数に相応する。ゆえにRd0...RdN内で生じうるRDYハンドシェイクおよびACKハンドシェイク(および各トリガのRDY/ACK)ごとに、また有効bitごとに、それぞれの信号がセットされているか否か、またはそれぞれの信号のステータスが命令の実行にとって重要でないかどうかを表す2つのbitが利用可能となる。
Figure 2007504688
このマスクはエントリの一部を表しているのみである。InTriggerではトリガの2つのステータス(セットまたは非セット)および値(トリガ値)がRDY値によりテストされる。
例えばLineControlを介して全ての命令を並列にテストするテスト論理回路を以下に説明する。アービタを用いて、全ての実行可能な命令のセットのうち所定の命令が選択される。アービタは選択された命令のPAEへの転送にしたがい、ISelを介して命令マルチプレクサを制御する。
LineControlは1つの命令ごとにブールテスト論理回路のラインを有する。ExORゲートeを介してテストすべき信号の値がラインのem内の設定に対して検査される。ORゲート+を介して、検査信号を関連するものとするか(または無視するか)の選択が行われる。全ての検査信号の結果がAND結合される。ANDゲート&の出力側の論理1は実行可能な命令を表している。RCごとに種々のテストラインが存在する。全てのテストラインが並列に評価される。生じうる複数のインプリメンテーションのうちの1つを有するアービタ、例えば優先アービタ、ラウンドロビンアービタなどにより、実行可能な全ての命令のうち実行すべき所定の命令が選択される。別のインプリメンテーションも可能であることは当該分野の技術者には明らかである。変形実施例は本発明の動作および機能の点で広く等価である。特に否定論理回路を使用する手段について言及しておく。
Figure 2007504688
次表は回路全体の概略を表している。
Figure 2007504688
このメソッドの利点は、
‐1つの命令が1クロックごとに実行されるということから大幅な高速化が達成され、
‐無視されたサイクルでエネルギが無駄にならず、特に定常的な電流消費に対して有利に電流消費量が低減され、さらに
‐中小サイズのコンフィギュレーションメモリRCを使用すれば、シーケンシャル手段と同様のハードウェアコストひいては同様の費用しかかからない
ということである。
このメソッドの欠点は、
‐大きなRCでは大幅にコストが高く、したがって所定のアプリケーションセットに適用するには最適化が必要となり、
‐シーケンサモードをインプリメントするには(アプリケーションの他の部分参照)、FSMを有するプログラムカウンタを設けなければならない
ということである。ただし後者の場合、FSMのタスクはシーケンサのタスクに制限されるので、付加的なコストおよび費用はそれほど大きくはならない。
従来技術によるデポピュレーテッドバス
所定のPAEに割り当てられた全てのバスはPAEの入力レジスタIRに接続されており、またPAEの出力レジスタは全てのバスに接続されている(例えば独国出願第10050442.6号明細書または本出願人によるXPP/VPU-handbookを参照)。
PAE、特にFF PAEプログラムポインタは、周知の従来技術のXPPに比べて多くのIR/ORが利用可能である場合、バス相互接続のデポピュレーションを行えるように実現されている。デポピュレーション、すなわちIRまたはERをバスに接続する手段の低減は対称または非対称である。デポピュレーションは典型的には20〜70%の量まで行われる。デポピュレーションがアルゴリズムの相互接続性および/またはルーティング性に悪影響をほとんどまたは全く与えない点が重要である。
デポピュレーションの手法は特に複数の結果が得られるという観点から重要である。バスシステムのハードウェアコストおよびその費用を大幅に低減することができる。接続ポイントが最小数となり、ゲート遅延が低減されるので、バス速度は増大される。同時にバスの電力消費量も低減される。
従来技術のVPUアーキテクチャにしたがった有利なデポピュレーションは、次表の回路よりも多くの入力レジスタIRおよび出力レジスタORを有している。
Figure 2007504688
特に、2つの隣接するPAEの隣接データ転送の可能なバスアーキテクチャの付加的な拡張について言及しておく。ここで、所定のPAEの出力側ORは直接に専用バスに接続されており、このバスは隣接するPAEの入力側IRへ接続されている(次表を参照)。次表には水平方向の隣接バスが示されているが、一般には垂直方向のバスも可能である。
図中、影付きの丸は可能なバスへの接続部MUXを表し、二重丸はバスからの接続部DeMUXを表す。
PAE入出力の変更
次表にはXPU128、XPP64Aとして知られる従来技術のPAEインプリメンテーションが示されている。これは独国出願第10050442.6号明細書に記載されているものである。
周知のPAEはPAEコアのメインALUへの上下方向でのメインデータフローを有する。図の左方および右方には、付加的に配置されたデータチャネル、すなわちメインデータフロー方向に沿って順方向にデータを送信するデータチャネルFREGとその反対方向にデータを送信するデータチャネルBREGとが示されている。PAEの両わきにはPAEのメインデータフローに対して逆方向に動作するデータバスが設けられており、これにPAEおよびFREG,BREGが接続されている。従来技術のアーキテクチャは、典型的な適用分野では、PAEごとに8個のデータバスおよび4個のFREG/BREG用の転送チャネルを必要とする。
Figure 2007504688
従来技術のバスシステムはPAEの両わきにスイッチング素子、レジスタ素子Rを有している。スイッチング素子はバスセグメントの中断または隣接バスに対する分離を行い、レジスタ素子は高い転送帯幅を得るためにデータ転送により効率的なパイプライニングを行う。隣接転送に対する典型的な垂直方向でのレイテンシはセグメント当たり0であるが、水平方向ではセグメント当たり0.5〜1であり、しかも高周波数である。
Figure 2007504688
修正PAE構造が提案される。ここでは異なるメインデータフロー方向を有する2つのALUが各PAE内に設けられており、ルーティング性が大幅に改善される。一方ではルーティングに使用されるツールが改善および簡単化され、他方ではハードウェアリソースの大幅な低減が達成される。第1のテストでは水平方向で必要なバス数が従来技術の約25%まで低減された。FREG/BREG(BYPASS)での垂直方向の接続部は約50%まで低減されている。また独国出願第10050442.6号明細書で必須であったようなFREGとBREGとのあいだの区別ももはや必要ない。
Figure 2007504688
ダブルALU構造をさらに発展させて両方向の入力側および出力側を有するALU‐PAEが開発されている。自動ルータおよび手動でルーティングされるアプリケーションを用いて、さらに重要なネットワークトポロジの改善が認められる。バス数は必然的に従来技術の約50%まで低減され、FREG/BREGでの垂直方向の接続部の数は約75%まで低減される。
Figure 2007504688
従来のALUにもファンクションフォールディングのALUにも利用可能な有利な実施例では、レジスタ素子およびスイッチング素子を、PAEの両わきではなく中央のバス内に配置することができる(次表を参照)。
Figure 2007504688
このように、高周波数に対しても、レジスタ素子を介することなく、データを水平方向で相応の隣接するPAEに伝達することができる。こうして、レイテンシフリーの隣接コネクションを垂直方向および水平方向に形成することができる(従来技術および前述のデポピュレーテッドバスを参照)。相応の表に示されている相互接続の例は垂直方向および水平方向で左方から右方へゼロレイテンシの転送を可能にする。PAEインタフェース構造の最適化により水平両方向でのレイテンシフリーの隣接転送が達成される。PAEの各コーナーにバスからの入力レジスタIR(バスからPAEへの矢印)およびバスへの出力レジスタOR(PAEからバスへの矢印)がインプリメントされている場合には、隣接する各PAEはレイテンシフリーでデータを交換することができる(表を参照)。
Figure 2007504688
上のPAEの構成をさらに最適化することもできる。これは全てまたは一部のPAEで個別のバイパスを使用しないことにより行われる。有利な実施例では、2つのALUが設けられる。第1のALUは“完全な”ALUであり、例えばMULtiplやBarrelShiFTなどの必要な機能の全てを有する。いっぽう第2のALUでは命令セットが低減されており、大きなアレイを必要とするMULtiplやBarrelShiFTなどの機能は消去されている。第2のALUはBYPASSを置換するように配置される(表を参照)。スイッチング素子内にレジスタを配置することのできるバスシステム当たり複数の位置が存在するが、そのうち有利なバス当たり2つの位置が次の表12に点線で示されている。
Figure 2007504688
2つのALUはバイパス機能をインプリメントするために、バス間でデータを転送する付加的な回路を有する。複数のインプリメンテーションが考えられるが、以下にそのうち2つの手法を例として挙げる。
a)マルチプレクサ
ALU内のコンフィギャラブルマルチプレクサは、ALU入力側がALUをバイパスして出力側に直接接続されるように接続されている。
b)MOVE命令
Rc0...Rcn内に記憶されているMOVE命令とは、ファンクションフォールディングの相応の処理クロックにおいてデータを命令の専用入力にしたがって専用出力側へ転送させる命令である。
スーパースカラリティ/パイプライニング
例えば、MULオペコードを使用する場合であっても、バスクロック当たり2,4,8つの演算を計算するスーパースカラFF ALU−PAE,@FF=2,4,8を大まかに提供することは可能であり、また性能を改善する第1の方法として提案される。
基本的な考え方は、各内部レジスタのVALIDフラグを使用することである。MULは、2つの段階にわたってパイプライニングされる単一のオペコードとして実現される。
MULは、そのオペランドを、入力レジスタRiから取り出して、結果を内部レジスタRdに格納する。データがRdに格納されると、VALIDがセットされる。ADD(または別の任意のオペコード、例えばBSFT)は、VALIDがセットされている場合、Rd内の結果を使用する。ここでこれが行われるのは、指定されたVALIDの動作にしたがって実行がスキップされない場合である。またPAEコンフィギュレーション内でMUL命令が使用される場合、すべてのオペコードに対してタイミングが変更される。このようなケースでは、ふつうは単一サイクルであるオペコードはすべて、パイプライニングされた2サイクルオペコードに変わる。この変更は、バイパス可能なマルチプレクサをデータストリームにも、制御にも挿入することによって達成される。
つぎのプログラムを詳細に説明する。
MUL (Rd0, Rd1), Ri0, Ri1;
ADD Ro0, Rd1, Ri2;
コンフィギュレーション後の最初のバスサイクル(t)において、(Ri0/1においてデータが利用可能であると仮定すると)MULが実行される。レジスタペアRd0/1は、このバスサイクル間中、つまり2つのFF−PAE内部クロックサイクル中、無効である。したがってADDは、2番目のクロックサイクルにおいて実行されない。tの後、MULの結果は、このレジスタペアに書き込まれ、そのVALIDフラグは同時にセットされる。
では新たなデータが乗算される。Rd0/1に対してVALIDがセットされているため、ここではADD命令が2番目のクロックにおいて実行されるが、実行全体に対して2クロックサイクルかかる。したがって2つの演算、MUL対してもADDに対しても共にオペランドの読み出しおよび結果の書き込みはインライン式なのである。
MUL−ADDの組み合わせの結果は、FF=2 ALU−PAEにおいて2サイクルレイテンシで得られる。FF≧6に対してレイテンシは挿入されない。
しかしながら乗算および他のすべての命令は並列に処理されるため、このマシンは、いかなる付加的な遅延もなくつぎに流れていくのである。
Figure 2007504688
実行のために2クロックサイクルを要するオペコード(例えばBSTF)がMULの他にある場合、このアーキテクチャを変更して、2番目の内部クロックサイクルの後、レジスタに少なくとも3つのデータを書き込めるようにしなければならない。
データパス出力マルチプレクサは2倍になり、また出力レジスタ(OR)へのバスシステムおよび内部データレジスタ(Rd)へのフィードバックパスも同様に2倍になる。
オペコードに対して相応に定めれば、複雑さを増すことなく4つよりも多くの内部レジスタを使用することができる。これはイネーブル(en)を使用して、データを書き込み特定のレジスタを選択することに行われる。複数のレジスタ、例えばRd0,Rd4,Rd8,Rd12を同じバスに接続することができる。しかしながらレジスタ転送のすべての組み合わせがこの構造によって可能なのでない。例えば、MULによってRd0およびRd1が使用される場合、つぎのレジスタ、すなわちRd4,5,8,9,12,13は、並列に実行されるオペコードに対してブロックされるのである。
レジスタマップ:
Figure 2007504688
データパスアーキテクチャ:
Figure 2007504688
シーケンサPAE
XPP IIIにおいてもコントロールフローが支配的なアプリケーションを実行できるようにしたいというニーズがあるため、シーケンサPAEを導入する。このようなPAEは、XPP内でシーケンシャルなコードを実行可能な極めて単純な形のプロセッサとみなすことができる。これにより、H.264コーデックのようなコントロールフロー優位のアプリケーションをアレイ上に効率的に実現することができる。これに対してSEQ−PAEがなければ、この実現は一層困難になり、資源が一層消費されることになる。
SEQ−PAEは、ゼロから構成されるのではなく、ALU−PAEと、隣のRAM−PAEとを密接に結合することによって、つぎの表に示されているタイルが形成されるのである。
Figure 2007504688
このため、ALU−PAEの機能もRAM−PAEの機能も共に拡張して、このようなSQE−PAEの要求を満たすことができるようにしなければならないのである。この情報についてはつぎに示す。
ALU−PAEの拡張
拡張したALU−PAEはつぎの表に示されている。右側の縁部には別のモジュールを制御するレジスタが見える。これらのレジスタは、通常モードでもSEQモードでも共に使用される。したがってローカルのコンフィギュレーションマネージャおよびRAM−PAEからの適切な制御信号が、まずORゲートによってマージされ、つぎにこれらレジスタに転送される。ここで保証しなければならないのは、通常モードにおいてRAM−PAEからの信号は0であり、またこの逆が成り立つことである。
さらにALU−PAEは、小さなプロセッサの実行部の特徴を有するため、内部レジスタに、また内部レジスタからRAMに直接、値を転送する必要がある。このために付加的なマルチプレクサAM1がセクション2のマルチプレクサ階層構造に挿入される。通常モードにおいてこのマルチプレクサは、先行するステージからつぎのステージにワードを供給する。これに対してSEQモードではImmによってイミディエート値が供給される。ここではレジスタの機能が発揮される。これに加えてSEQモードではマルチプレクサの出力側を介して、複数の内部レジスタのうちの1つの内部レジスタの値をRAM−PAEに供給することができる。しかしながら「LOAD reg, imm」を提供することも考慮しなければならない。それはこれが「ADD reg, reg, imm」よりも格段に遅い訳ではないからである。
RAM−PAEがALU−PAEの内部レジスタにデータを書き込めるようにするため、別のマルチプレクサをセクション4のマルチプレクサのチェーンに挿入する。上に示したシナリオと同様にこのマルチプレクサはSEQモードだけで起動される。これに対して通常モードではこのマルチプレクサは、先行するステージのデータを転送するだけである。有利な実施形態では、遅延を考慮してBSTF−Muxの後にRS2を配置することが提案される。データはこれを介して内部レジスタに書き込むことができる(LOAD reg, imm)。
Figure 2007504688
すでに述べたように選択した算術機能に依存して1または2サイクルの間にALU−PAEによってデータを処理することができる。XPPの自動同期化機能に起因して、また通常モードでは前の演算が終了する前に、つぎの演算が開始されることはないという事実に起因して、実際には演算が1サイクル続くかまたは2サイクル続くかはどちらでもよいのである。これに対して上記のタイルがSEQモードで動作する場合、パイプラインの特性を有することを仮定するため、どちらでもよいということにはならない。すなわち、1サイクル演算は、2サイクルモジュールと並列に動作することができ、ここでこの演算は、この場合にステージ2で実行されることになる。ワード(16ビット)の多重化能力は限られているため、接続されてレジスタには1つの結果しか書き込むことができず、別の結果は失われることになる。一般的にはこの問題を解決するのにつぎの3つの可能性がある。
最初の可能性として考えられるのは、コンパイラがこの問題を処理できるようにすることである。このことが意味することになるのは、SEQ−PAE全体およびタイルのパイプライン構造について詳細にわかっていければならないことである。並列実行を防ぐため、上記の構造に対して、コンパイラは、2サイクル命令毎に1つのNOPを加えなければならない。しかしながらこのアイデアは、ハードウェア構造とコンパイラとの間の極めて密接な関係のため、有利ではないと考えられる。欠点として考えられるのは、ハードウェアを変更する毎に新たな構造にコンパイラを整え直さなければならない可能性が極めて高いことである。
第2のアイデアは、パイプラインのデコードステージにおいてこのような状況を識別することと考えられる。2サイクル命令の後に、1ステージ算術ユニットにアクセスする命令が直に続く場合、これも同様に1クロックサイクルだけ遅延させなければならない。
最後の可能性は、完全なALU−PAEが、2ステージの実行ユニットに見えるようにすることである。したがってセクション4のマルチプレクサチェーンにおいて、2ステージモジュールの1ステージを分離するマルチプレクサからの交差部の直後に1レジスタだけを含めるだけでよいのである。明らかにこのようにすることが望ましい。
最後の2つのアイデアを比較すると、1つのレジスタだけを挿入すればよいため、3番目のアイデアが最善であると考えられる。第2の解決手段を詳しく検討すると、命令の許容されない組み合わせを解析するための固有のロジックも、命令の遅延およびプログラムカウンタ(PC)を停止するためのロジックも共に必要になる。ここで想定しなればならないのは、このロジックにはレジスタよりもはるかに大きな面積が必要であり、またこのロジックの遅延により、クリティカルパスが増えることである。
1サイクル実行をなお利用可能とすべきである通常モードとSEQモードとの区別をしければならない。このような可能性は、相応する表(表24)に示したようにRS2レジスタのバイパスを可能にするマルチプレクサによって得られる。
RAM−PAE
各ステージの手短な説明
SEQ−PAEを動作させるため、さらに一層機能を設けなければならない。ここではRAM−PAEがそれを担当している。シーケンサを実現するための最初のアプローチとして、4ステージパイプラインを選択した。これらのステージは、表25に示されているように、
・ フェッチステージ
・ デコードステージ
・ 実行ステージ1
・ 実行ステージ2
である。
上記のフェッチステージでは、つぎのクロックサイクルに対するプログラムカウンタが計算される。すなわち、このプログラムカウンタはローカルの加算器を介して1だけインクリメントされるか、または上記のデコードステージまたは実行ステージ2から得られるプログラムカウンタのうちの1つが選択されることになる。ここで実行ステージのプログラムカウンタは、コール命令が生じた場合にアドレスを供給するのに対して、実行ステージのこのプログラムカウンタは、条件ジャンプがある場合にPCを供給する。ここで分岐アドレスは、目下のPCと、イミディエート値またはALU−RAMの内部レジスタから得られる値(間接アドレッシングモード)のいずれかの値とから計算することができるか、または絶対値である。これは例えば、サブルーチンから前のコンテキストへの復帰がある場合には必要であり、これに対して相応する絶対的なPCは、スタックバンクによって供給される。
上記のデコードステージではコードバンクから到来する命令がデコードされる。所要の制御信号が生成され、また必要であれば内部実行ステージ1に対するイミディエート値も、ALU−PAEの実行ステージ1に対するイミディエート値も共に生成される。これらの信号には、ALU−PAEのセクション2のゲーティングステージおよびマルチプレクサに対する制御情報と、例えば符号付きまたは符号なし乗算の選択であるALUタイルの演算選択と、つぎのステージにおいて命令がコールまたはジャンプであることに依存してスタックポインタ(SP)をインクリメント/デクリメントするか、または変更しないままにすべき否かについての情報が含まれている。コール命令が発生した場合、新たなPCが並列に計算されて、フェッチステージに供給される。
さらにロード命令の場合、データバンクへの読み出しアドレスおよび読み出しイネーブル信号が生成される。
場合によってはALUにおいてもRAM−PAEにおいても利用可能な第1ステージである実行ステージ1では、ALU−PAEの実行ステージ2に対する制御信号が生成される。これらの信号は、複数の算術タイルのうちの1つの正しい出力が選択されて、イネーブルされたレジスタにこれが書き込まれるようにする。この命令が条件ジャンプまたはリターンである場合には、このステージでスタックポインタが変更される。これと並行して分岐の場合には目下のPCが、Rsp EX1レジスタによって示されるアドレスでスタックバンクにセーブされることになる。そうでなければ、リターンの場合、読み出しアドレスも、読み出しイネーブル信号も共にこのスタックバンクに供給される。
実行ステージ2ではジャンプの場合、PCの値が計算されてフェッチステージにおいてマルチプレクサに供給される。ALUからのデータをセーブしなければならない場合、この時点で書き込みアドレスおよび書き込みイネーブル信号が形成される。
2つの加算器の代わりにrppパスに1つの加算器だけを設けることが可能である。
Figure 2007504688
パイプラインアクション
以下のセクションでは上記の4つのステージにおいて実施されるアクションの手短な概要をいくつかの基本的な命令に対して示す。これはパイプラインの動作を理解するために一助となるはずである。ここで述べようとする命令は、命令レジスタにおいて利用可能であり、フェッチステージのアクションはここでは省略する。
IR:命令レジスタ
DR:データレジスタ
DB:データバンク
SBR: ストア/ブランチレジスタ
命令: データバンクからR[n]に値をロードする
Figure 2007504688
命令:R[n]からデータバンクに値を格納する
Figure 2007504688
1.3 アレイ構造
従来技術と比較した場合の第1の利点は、ファンクションフォールディングPAEを使用することによって得られる。これらのPAEも、別のPAEも共に改良することができる。
PAEのXPP−II構造は、FREGおよびBREGに対して、またこれらの関連したバスインターフェースに対して一層大きな面積を消費する。またこれに加えてFREGを介するフィードバックには、フィードバックパスへのレジスタの挿入が必要である。これはレイテンシを増やすだけでなく、XPPのスループットおよび性能にマイナスの影響を与えることになる。
レイテンシが最小化され、またバス相互接続構造が最適化されて、最適化された面積が達成させることを期待して、新しいPAE構造およびその配置を提案する。
XPP−III PAE構造にはもはやBREGは含まれていない。この代用として複数のALUは水平方向に交互に上下反転され、これによって配置および殊にフィードバックパスに対するルーティング能力、例えばループのルーティング能力が改善される。
各PAEはここでは、1つは上から下に向かい、別の1つは上下反転されて下から上に向かう2つのALUおよび2つのBPパスを含んでいる。
Figure 2007504688
1.4 バスの変更
この章では、所要の面積およびバスの量を低減し得る複数の最適化を説明する。これらの変更にはいくつかの提案が含まれている。それはこれらの変更は実際のアルゴリズムに基づいて評価しなければならないからである。例えば、アンケートを作成して、アプリケーションプログラムからの所要のインプットを集めることが可能である。
1.4.1 隣接PAE
XPP−IIアーキテクチャでは、2つのPAEブロック間にある水平方向の直接のデータパスは、垂直方向データバスである。この結果、XPP内で必要な垂直方向のバスが増大し、コストも不必要に高めている。このためXPP−IIIでは水平方向のPAE間に直接のフィードパスを提案する。
さらに、長さの異なる水平方向バス、すなわち隣接する2つのPAEにわたる水平方向バス、4つのPAEを横切る水平方向バスが提案される。
1.4.2 バスのレジスタの除去
XPP−IIでは垂直方向のバスに複数のレジスタが設けられており、これらレジスタは、より一層長いパスに対してコンフィギュレーションによってスイッチオン可能である。さらにこれらのレジスタは、コンフィギュレーションによってプリロード可能であり、これによって極めて大きな量のシリコン面積が必要である。ここで提案されるのは、もはやバスにレジスタを実装せずに、PAE内の拡張されたDFまたはバイパス(BF)部を使用することである。このPAEは、DFまたはBPの内部レジスタを代用することによって、パスを同じバスに再ルーティングすることができる。
Figure 2007504688
ここではこれらのバスに対してどのくらいの資源が節約されるか、またPAEに対してどのくらい資源が必要であるか、および/またはどの程度レジスタを挿入しなければならないか、PAE毎に1つまたは最大2つのパス(DF/BPによって最大2つの入力が得られるため上限は2つである)は十分であるか否かなどを決定しなければならないと思われる。
1.4.3 バスからPAEへのn:1,1:nシフト機能
XPP−IIではn:1および1:nのトランジションはバスによってサポートされており、これには極めて大量の資源が必要である。すなわちハンドシェーク信号のサンプルアンドホールドステージに対して大量の資源が必要なのである。
nの大きさに依存して新しいPAE構造には、相異なる2つの機能が設けられている。すなわち、
n ≦ 2 要求された演算はPAEのDFパス内で行われる
2 ≦ n ≦ 4 4つのポートが必要なためALUパスが必要である
n > 4 複数のALUを組み合わせなければならない
のである。
このような手法によってシリコンにおけるスタティックな資源が極めて大量に節約されるが、ランタイムに専用のPAE資源が必要である。
ここで有益であると考えられるのは、バス当たりにどのくらいのシリコン面積が節約されるか、n = 2,2 ≦ n ≦ 4,n > 4がどのくらいの頻度で発生するか、節約されたシリコン面積と、必要なPAE資源との間の比を評価することと、これらの判定条件のうちの1つまたはすべてに応じて正しいバス構造を決定することである。
1.5 RAM−PAEのFSM
XPP−IIアーキテクチャにおいて制御構造の実現には極めてコストがかかり、多くの資源を要し、またプログラミングも極めて複雑である。
しかしながらメモリを使用して簡単にFSMを実装することができる。RAM−PAEをつぎのように拡張することにより、HDTVを含めた制御についての既知の多くの課題に対して安価かつプログラム容易な解決手段が提供される。
Figure 2007504688
基本的にRAM−PAEは、レジスタ(FF)を介するデータ出力側からアドレス入力側へのフィードバックの分だけ機能拡張され、これによって各ステージ内で後続のアドレスが提供される。さらにPAEアレイからの付加的なアドレス入力側によって、付加的なジャンプが発生し、データ出力側によってPAEアレイに対するイベント信号が生成される。メモリ出力側によってステップが設定されまたリロード可能の関連づけられたカウンタにより、条件付きジャンプ(すなわち、ビデオ画像の行の終わり(end of line)、フレームの終わり(end of frame))に対するアドレス入力が生成される。
典型的なRAM−PAEの実装では、データビットは約16〜32個であるが、アドレスビットはわずかに8〜12ビットである。このため、入力ベクトル範囲を最適化するために提案されるのは、アドレス入力側にいくつかのマルチプレクサを挿入して、複数のベクトル間で選択できるようにすることである。ここでこれらのマルチプレクサは、出力データビットのうちのいくつかビットによって制御される。
24ビット幅のデータバスを有するXPPについての1つ実装が、つぎの表31に概略的に示されている。ここでは4つのイベント入力と、入力ポートRi0の低位4ビットが入力として使用されている。また3つのカウンタが実装されており、4つのイベントもRo0ポートの低位10ビットも共に生成される。
ここで示されるメモリ編成は、つぎのようなものになる。すなわち、
8 アドレスビット
24 データビット(22ビットを使用)
4 次アドレス
8 マルチプレクサセレクタ
6 カウンタ制御(付加的な4ビットの次アドレスと共用)
4 出力
Figure 2007504688
このRAM−PAEの通常のメモリモードはこのブロック図に示されていないことに注意されたい。
カウンタの幅は、データバスのバス幅にしたがう。
16ビットの実装に対して提案されるのは、カウンタのキャリー信号を、それ自体のリロード信号として使用することであり(自動リロード)、またいくつかのマルチプレクサは、メモリによって駆動されるのではなく、コンフィギュレーションによって「ハードワイヤード」される。
ここで提案されるメモリ編成はつぎのようになる。すなわち、
8 アドレスビット
16 データビット(16ビットを使用)
4 次アドレス
4 マルチプレクサセレクタ
3 カウンタ制御(付加的な3ビットの次アドレスと共用)
4 出力
Figure 2007504688
16ビットの実装と、24ビットの実装とは異なるため、ふつうのRAM−PAEは実際にはさらにスケーリングすることはできないことに注意されたい。24ビットに対して、余計なもの省いた16ビットの実装を使用するか否かを決定すべきである。
1.6 IOAGインタフェース
1.6.1 アドレス発生器およびビット反転アドレッシング
IOインタフェースに実現されるのは、いかなるALU−PAE資源を使用することなく、例えば1〜3次元の直接のアドレッシングをサポートするアドレス発生器である。この場合にアドレス発生は3つのカウンタによって行われ、各カウンタは例えばコンフィギュレーション可能なベースアドレスと、長さと、ステップ幅とを有する。
第1のカウンタ(CNT1)は、ALU−PAEのアレイによって制御されるステップ入力側を有する。そのキャリーはCNT2のステップ入力側に接続されており、さらにそのキャリーはCNT3のステップ入力側に接続されている。
コンフィギュレーションされた長さと上記の値とが等しい場合、各カウンタによってキャリーが生成される。キャリーに伴ってカウンタは、コンフィギュレーションされたそのベースアドレスに直ちにリセットされる。
1つの入力側は、ALU−PAEのアレイからのアドレス専用であり、これはカウンタの値に加算することが可能である。1つ以上のカウンタが使用されない場合、これらはゼロにコンフィギュレーションされる。
さらにCNT1は、複数のキャリーモードを供給することによって、ビット反転アドレッシングの生成をサポートする。
Figure 2007504688
1.6.2 相異なるワード幅のサポート
一般的にPAEアレイ内では複数のワード幅をサポートする必要がある。8および16ビット幅のデータワードが、多くのアルゴリズムに対して、すなわちグラフィックに対して有利である。すでに述べたSIMD演算に加えて、IOAGにより、上記のような比較的短いデータワードの分割およびマージが可能になる。
新しいPAE構造によって4つの入力ポートおよび4つの出力ポートが可能になるため、このIOAGは、つぎのようにワードの分割およびマージをサポートすることができる。
Figure 2007504688
入力ポートは、IOへのワード書き込みに対してIOAG内でマージされる。
出力ポートに対し、読み出されたワードは、コンフィギュレーションされたワード幅にしたがって分割される。
1.7 マルチ電圧電源および周波数ステッピング
PAEおよびバスは、作業負荷に依存して動作するように構成されている。したがってクロック周波数は、データ帯域幅にしたがってコンフィギャラブルであり、さらにレジスタに対するクロックゲーティングがサポートされており、またバスはANDゲートの行を使用してデカップリングされる。処理可能なデータがない場合にはいつでも、クロックパルスは動的にゲート制御される。
先進アーキテクチャではPAEにおけるクロック周波数およびバスに対する所要の帯域幅に依存して上記の電圧がスケーリングされる。4Sプロジェクト内ではこのような手法が評価され、商用になるテクノロジが研究されている。
1.8 XPP/μP結合
μPとXPPとを密に結合するため、キャッシュおよびレジスタインタフェースは、Cコンパイラのような高レベルツールに対して有利な構造である。しかしながらこのような密結合は、極めて初期の段階で実行可能でないと予想される。
それにかかわらず、密結合に対して相異なる2つのタイプの結合がおそらく可能である。すなわち、
a) 長いデータストリームに対するメモリ結合: 最も高性能でもっとも便利な手法は、直接のキャッシュ結合である。これに対してスタート時にはAMBAベースのメモリ結合で十分である(ATAIRに関連して後述する)。
b) 小さなデータおよび変則的なMAC演算に対するレジスタ結合:有利であるのは、プロセッサパイプラインのOFステージにおける暗黙的な同期化によるプロセッサレジスタへの直接的な結合である。しかしながら外部レジスタとしてのロード/ストア命令またはイン/アウト命令を介する結合は、いくらかの性能上の制限になる比較的長いレイテンシのペナルティを伴えば、許容され得る。
2 ALU−PAEの仕様
2.1 概要
有利な実施形態ではALU−PAEは3つのパスを有する。すなわち、
ALU 算術、論理およびデータフロー処理
BP バイパス
この場合に上記の各パスは、2つのデータパスおよび1つのイベントバスを有する。DFパスのバスは、コンフィギュレーションによってALUパスに再ルーティングすることができる。
2.2 ALUパスレジスタ
ALUパスには12個のデータレジスタが含まれる。すなわち、
Ri0−3 バスからの入力データレジスタ0−3
Rv0−3 バスへの仮想出力データレジスタ
Rd0−3 内部汎用レジスタ0−3
Vi0−3 バスからのVイベント入力0−3
Ui0−3 バスからのUイベント入力0−3
Ev0−3 バスへの仮想Vイベント出力レジスタ
Eu0−3 バスへの仮想Uイベント出力レジスタ
Fu0−3
Fv0−3 XPP−II PAEイベントバスによる内部フラグuおよびvレジスタ
Acc アキュムレータ
ここでは8つの命令レジスタが実装されている。オペコードのフォーマットにしたがって24ビット幅である。すなわち、
Rc0−7 命令レジスタ
である。
3つの専用レジスタが実装されている。すなわち、
Rlc CMによってコンフィギュレーションされ、ALU−PAEそれ自体からは直接にアクセスできないループカウンタ。JLオペコードにしたがってデクリメントされる。値0の後、リロードされる。
Rjb Rc[0…7]において使用されるエントリの数を定めるジャンプバックレジスタである。ALU−PAEそれ自体からは直接にアクセスできない。RppとRjbとが等しい場合、Rppは直ちに0にリセットされる。ジャンプバックは1つの条件、すなわち到来するイベントに制限することができる。この条件がない場合、このジャンプバックは遅延される。
Rpp プログラムポインタ
2.3 データ複製と複数入力の読み込み
ファンクションフォールディングは、純粋なデータストリームモードでも、シーケンシャルモード(1.2を参照されたい)でも共に動作できるため、データフローモード(単一の読み出しのみ)およびシーケンシャルモード(複数の読み出し)においてRi読み出しをサポートすることが有利である。相応するプロトコルを以下に示す。すなわち、
各入力レジスタRiは、相異なる2つのモードのうちの1つで動作するようにコンフィギュレーションすることができる。すなわち、
データフローモード:
XPP−II実装の標準プロトコルである。つまりレジスタが空の場合、1つのデータパケットがバスから読み出されて取り出され、ACKハンドシェークが生成される。このレジスタが空でない場合、このデータはラッチされず、またACKは生成されない。
このレジスタがデータを含む場合、このデータは一度だけ読み出すことができる。読み出しアクセスに伴って直ちにこのレジスタは空としてマーク付けされる。空のレジスタは読み出すことができない。
簡略化すると、このプロトコルはつぎのように定められる。すなわち、
RDY & 空 → フル
→ ACK
RDY & フル → ACKしない
READ & 空 → 停止
READ & フル → データ読み出し
→ 空
ここの説明およびプロトコルではパイプラインの作用は考慮されていないことに注意されたい。
シーケンサモード
入力インタフェースは、バスプロトコル定義にしたがってつぎのようになる。すなわち、レジスタが空の場合、1つのデータパケットがバスから読み出されて取り出され、ACKハンドシェークが生成される。レジスタが空でない場合、このデータはラッチされず、またACKは生成されない。
レジスタがデータを含む場合、1シーケンス中、このデータは複数回読み出すことができる。シーケンスはRpp=0 〜 Rpp=Rjbで定められる。この間にレジスタに新たなデータを書き込むことはできない。Rppを0にリセットとするのと同時にレジスタの内容はクリアされ、新たなデータがバスから取り入れられる。
簡略化すると、このプロトコルはつぎのように定められる。すなわち、
RDY & 空 → フル
→ ACK
RDY & フル → ACKしない
READ & 空 → 停止
READ & フル → データ読み出し
(Rpp == Rjb)→ 空
ここの説明およびプロトコルではパイプラインの作用は考慮されていないことに注意されたい。
2.4 データレジスタおよびイベント処理
データレジスタは直接アドレッシングされ、各データレジスタは個別に選択することができる。3つのアドレスオペコード形式が使用される。すなわちr ← rs1,rs0である。仮想出力レジスタは、レジスタの後に「o」を付加することによって選択される。結果は、ルール
op out (r,r) ← rs1,rs0
にしたがってrに格納され、また仮想出力レジスタrにもコピーされる。
入力および(仮想の)出力レジスタへのアクセスは、2.3節に定めたつぎのルールにしたがうことに注意されたい。
Figure 2007504688
イベントは、データレジスタと同様に使用される。すべての入力および内部イベントは直接、アドレッシングすることができ、出力イベントは、イベントの後ろに「o」が付加化されるときにはいつでも使用される。
Figure 2007504688
2.4.1 アキュムレータモード
低い電力消費を達成し、またDSPライクなアルゴリズムをより良好にサポートするため、アキュムレータレジスタが利用可能であり、結果レジスタ(ao)およびオペランドレジスタ(ai)に対して1ビットをセットするだけでこれをアドレッシング可能である。可換の演算に対してつねにオペランドレジスタ1はaiによって置き換えられる。SUBtractのような可換でない演算に対してはオペランドおよびレジスタ1により、aiが第1のオペランドであるか、または第2のオペランドであるかが選択される。オペランドレジスタ2により、相応して他方のオペランドが定められる。
つぎのことを明確にしなければならないことに注意されたい。すなわち、実際のアキュムレータモードが有効であるか、またはMACコマンドだけを実現して、暗黙的で隠れたアキュムレータアクセスによって2クロックサイクルを消費する単一の命令において乗算累算を処理すべきか明瞭にしなければならないのである。
2.4.2 パラメタスタックモード(PSTACK)
オペコードレジスタRcの未使用のエントリは、定数およびパラメタに対するスタックとして動作することができる。Rpp == 0000においてRps PStackレジスタはRjb+1をポイントする。これはPStack領域が、オペコードレジスタファイルの最後のエントリの直後からはじまることを意味する。
PStackにアクセスするため、FF−PAEは、高速パラメタ(Fast-Parameter)モードでなければならない。Ri3に対する各読み出しアクセスは、PStackからの読み出しにリダイレクトされ、これに対して各読み出しアクセスの後、ポインタは1によってインクリメントされる。実現されたPStackポインタのオーバーフローに対するチェックはない。オーバーフローはプログラムのバグとみなされる。
Figure 2007504688
2.4.3 n:1のトランジション
n:1のトランジションはもはやバス内ではサポートされない。択一的に複数の出力レジスタRoおよびイベント出力側Eoへの単純な書き込みがサポートされる。仮想出力レジスタ(Rv)および仮想イベント(Ev)は実出力レジスタ(Ro)および実イベント(Eo)に変換され、ここで1つの仮想レジスタを複数の出力レジスタにマッピングすることができる。
このコンフィギュレーション可能な変換を実現するため、データレジスタおよびイベントレジスタの両方に対して表がインプリメントされる。
Figure 2007504688

Rv0 Ro0,Ro1にマッピングされる
Rv0 Ro2にマッピングされる
Rv0 Ro3にマッピングされる
Rv3 未使用
Figure 2007504688
2.4.4 入力および出力レジスタ(Ri/Rv)ならびにイベント(Ei/Ev)へのアクセス
オペコードアクセスとは独立して、入力または出力レジスタないしはイベントがつぎのように定められる。すなわち、
Figure 2007504688
2.4.5 マルチコンフィグモード
マルチコンフィグモードによって可能になるのは、格納された最大4つのコンフィギュレーションから1つを選択できるようにすることである。Fui0,1およびFvi0,1に到来するイベントにより、4つのコンフィギュレーションのうちの1つが選択される。1クロックサイクルにおいて1つのイベントだけがアクティブになるべきである。この選択は単純な変換によって行われ、各イベントにより、特定のメモリアドレスがポイントされる。
Figure 2007504688
次コードセグメント(next code segment)を使用することによって3オペコード以上の長いコンフィギュレーションを使用することも可能である。この場合、相応するイベントは使用できない。
Figure 2007504688
2.5 オペコードフォーマット
有利な実施形態では24ビット幅の3アドレスオペコードが使用される。すなわち、
op r ← r,r
である。
ソースレジスタはRiおよびRd,ターゲットレジスタはRvおよびRdとすることができる。ふつうの演算は、Rdレジスタだけをターゲットとする。rに対するソースレジスタがRi[x]の場合、このターゲットレジスタはRd[x]になる。
上記の変換はつぎの表に示されている。すなわち、
Figure 2007504688
である。
各演算は、ターゲット識別子としてoutタグ「o」をオペコードに付加することによって仮想出力レジスタRvをターゲットにすることが可能である。すなわち、
op (r,ro) ← r,r
である。
データは仮想出力レジスタに転送され、また相応する内部レジスタにも転送される。すなわち、
Figure 2007504688
である。
2.5.1 条件付き実行
SKIPEコマンドにより、条件付き実行がサポートされる。イベントまたはALUフラグが、所定の値になっている否かがテストされる。このチェックに依存して、つぎの2つのアドレスが実行される(Rpp+1)か、またはスキップされる(Rpp+3)。到来するイベントをチェックする場合、イベントがイベントポートに到着するまでプログラムの実行はストップする(RDYハンドシェークのセット)。
SKIPEは、2メモリエントリよりも大きくない任意のオペコードの条件付き実行をサポートする。
CALLおよびRETオペコードをサポートするSEQ−PAEでは、スタックベースのサブルーチンコールもサポートされる。
2.6 クロック
PAEは、
1×バスクロック
2×バスクロック
4×バスクロック
[8×バスクロック]
のコンフィギュレーション可能な周波数で動作することができる。
2.7 DFパス
データフローパスは、データレジスタBri0…3およびBro0…3ならびにイベントレジスタBui/Bvi0…3およびBuo/Bvo0…3を含む。
DFパスの主な目的は、垂直方向にバス接続を形成することである。さらに上記のパスには、データおよびイベントパス毎に1つの4ステージFIFOが含まれている。
DFパスにより、数多くの命令がサポートされ、ここでこれらの命令はコンフィギュレーションによって選択され、そのうちの1つだけが1コンフィギュレーション中に実行可能である。ファンクションフォールディングは利用できない。
DFパスでは以下の命令、
1.ADD,SUB
2.NOT,AND,OR,XOR
3.SHL,SHR,DSHL,DSHR,DSHRU
4.EQ,CMP,CMPU
5.MERGE,DEMUX,SWAP
6.SORT,SORTU
7.ELUT
が実現される。
Figure 2007504688
2.9 パラメタのブロードキャストおよび更新
パラメタおよび定数は、入力レジスタRi3およびイベント入力Ei7を使用することにより、高速かつ同期して更新することができる。
更新モードに依存して、イベントEi7がセットされている場合、PAEにより、相応のレジスタの各アクセス時に入力レジスタRi3におけるデータパケットがRd3,Rd2およびRd1に引き続いてコピーされる。その後、Ri3におけるすべての入力データは、出力レジスタRo3に伝搬され、またEo7イベント出力がセットされ、これによって第1パラメタの更新が発生したことが後続のPAEに示され、これらのPAEを一緒にチェーンで結びつける(すなわちマルチTAP FIRフィルタにおいて)ことができ、このチェーンにおいてすべてのパラメタを更新することができる。
Figure 2007504688
またEi7がセットされている場合、更新パラメタモード(upmcfg = nn10)に依存してオペコードUPDATEにより、すべてのレジスタが引き続いて更新される。
またレジスタ更新をコンフィギュレーションして、upmcfg = nn01によってRpp == 0かつEi7がセットされる場合にはこれがつねに行われるようにすることも可能である。
いずれのケースにおいてもnnは、更新すべきレジスタの数(1〜3)を表す。
Ei7は、少なくとも1つクロックサイクルの間0でなければならず、これによって実行中のパラメタ更新の終了および新しい更新の開始が示される。
3. 入出力アドレス形成(IOAG)
IOAGはRAM−PAEに配置されており、バスに通じる同じレジスタを共用する。1つのIOAGは、キャリーが転送される3つのカウンタを含む。カウンタ値と、アレイからのイミディエートアドレス入力値とは、加算されてアドレスが形成される。
1つのカウンタにより、リバースキャリー機能が提供される。
3.1 アドレッシングモード
通例のDSPライクなアドレッシングをサポートするため、いくつかのアドレッシングモードがIOAGによってサポートされる。すなわち、
モード 説明
イミディエート PAEアレイによって形成されるアドレス
xD計数 IOAG内部カウンタを使用した多次元
アドレッシング
xDは1D,2D,3Dを意味する
xD循環 IOAG内部カウンタを使用した多次元
アドレッシング
オーバーフローの後、カウンタには
ベースアドレスがリロードされる
xDとイミディエートスタックとの和
xDと、PAEアレイから得られる値との和
「push」処理の後、デクリメントされる
「read」処理の後、インクリメントされる
リバースキャリー FFTなどのアプリケーション用の
リバースキャリー
である。
3.1.1 イミディエートアドレッシング
アドレスは、アレイで形成され、加算器を介してアドレス出力側に直接供給される。すべてのカウンタは使用不可にされ、0に設定される。
3.1.2 xD計数
カウンタは、所要の次元(x次元にはxのカウンタが必要である)に依存して使用可能にされる。カウンタ毎にベースアドレスと、ステップ幅と、最大アドレスとがコンフィギュレーションされる。各キャリーはつぎの次数の使用可能なカウンタに転送される。キャリーの後、このカウンタには開始アドレスがリロードされる。
最高次の使用可能なカウンタにおけるキャリーによってイベントが形成され、計数が停止する。
3.1.3 xD循環
この処理は、xD計数に対するのと等しいが、最も高次の使用可能なカウンタにおけるキャリーによってイベントが形成され、すべてのカウンタにはそのベースアドレスがリロードされ、計数が継続されるという違いがある。
3.1.4 スタック
1つのカウンタ(CNT1)は、データの書き込みの後、デクリメントされ、またデータ読み出しの後、インクリメントされるために使用される。このカウンタのベース値は、コンフィギュレーション(ベースアドレス)することができるか、またはPAEによってロードされる。
3.1.5 リバースキャリー
キャリーはふつう、LSBからMSBに転送される。キャリーを逆方向に転送する(リバースキャリー)ことによって、FFTなどのアプリケーションに極めて適したアドレスパターンを形成することができる。このキャリーはMSBにおいて廃棄される。
リバースキャリーを使用するためにはLSBよりも大きな値を目下の値に加えて計数しなければならない。このためにSTEPレジスタを使用する。
例:
ベース = 0h
ステップ = 1000b
Figure 2007504688
このカウンタは、少なくとも−2,−1,+1,+2のSTEP値においてリバースキャリーを可能にするように実現されている。
4. ALU/RAMシーケンサ SEQ−PAE
アレイの左または右側エッジの各ALU−PAEは、IPオプションとして隣のRAM−PAEに密に結合して、シーケンサをコンフィギュレーションすることができる。互換上の理由により、シーケンサのデータおよびオペコード幅は16ビットである。
Figure 2007504688
上記のALU−PAEは、まさにアレイの内部ALU−PAEとして動作することができるが、いくつかの拡張を有する。動作はシーケンサモードであり、レジスタファイルは8データレジスタ幅であり、FuおよびFvフラグは、キャリー、符号、ナル、オーバーフローおよびパリティALUフラグワードとして使用される。
Figure 2007504688
アドレス幅は、相応に16ビットである。しかしながらRAM−PAEサイズは限定されているため、16個のセグメントにセグメンテーションされている。これらのセグメントは、コード、データおよびスタックに使用され、コンパイラによって個別にプリロードしなければならない。
4つのセグメントレジスタにより、特定のセグメントがポイントされる。すなわち、
CodeBank 現在のコードセグメントをポイントする
DataBank 現在のデータセグメントをポイントする
StackBank 現在のスタックセグメントをポイントする
AuxiliariyBank 任意のセグメント(ただしコード)をポイントして、セグメン
ト間でコピーを可能にする。
Figure 2007504688
コンパイラは、必要なデータセグメントがプリロードされており、かつ利用可能であるようにしなければならない。コスト上の理由から自動のTLBは実装されない。
またセグメントは、TLBがないことに起因して物理的に直接アドレッシングしなければならない。つまりコンパイラは、相応するアドレスに対する範囲チェック機能を実装していなければならないのである。
コードセグメントは、データセグメントに相応して動作する。コンパイラは、データセグメントへのジャンプを実行する前にこれらをプリロードしなければならない。ここでもTLBがないことに起因してジャンプも物理的に直接アドレッシングされる。
任意のセグメントの再配置はできない。マッピングはコンパイラによって固定される。
メモリ配置を以下に示す。簡単なチェック機構が実装されており、これによってメモリセグメントの有効または無効になる。
Figure 2007504688
少なくともCodeBank(CB)およびStackBank(SB)を設定しなければならない。最初のCodeBankは、位置0000hでスタートしなければならない。他のすべてのバンクに対して0000hは、違反エントリである。メモリにセグメントをロードすることによってこれらは有効になり、相応にフラッシュすることによってこれらは無効になる。
メモリバンクは、つぎのオペコードによって制御され、DMAエンジンによってバックグラウンドでロードないしはフラッシュされることによって更新される。すなわち、
LOADSEG データ/補助/スタックバンクをロードして有効にする
STOREDSET データ/補助/スタックバンクを記憶して無効にする
LOADCSEG コードバンクをロードして有効にする
IOAGインタフェースのアドレス発生器は、DMAエンジンとして再利用可能である。
メモリバンクは、殊につぎのように有効ないしは無効にされる。すなわち、
VALIDATESSEG バンクを有効にする
INVALIDATESEG バンクを無効にする
である。
バンクポインタは、任意のメモリアクセスのアドレスに加算される。アドレスポインタは、64個のラインの範囲をアドレッシングする6ビットよりも大きくすることができるため、セグメント境界は「はっきり」していない。つまり、いかなる制限もなしに交わることができるのである。しかしながらプログラマまたはコンパイラは、これらが交わる際にダメージが発生しないようにする必要がある。無効なセグメントに達した場合、フォールトを示すフラグまたはトラップが生成され、最終的にはプリロードしたセグメントがバックグラウンドですでに動作している場合には単に待ち状態が挿入される。
Figure 2007504688
択一的にはつぎに示すようにさらに先進的な有効性チェック方式を実現することが可能である。
Figure 2007504688
24ビット命令を必要とするPAEとは異なり、シーケンサでは16ビット命令だけが使用される。同じ命令セットを使用してデコーダを単純なもののままとするためには、シーケンサモードにおいて単に最後の8ビットが廃棄される。
4.1 IOAG
IOAGは、外部レイテンシを平衡化し、外部バスまたは外部メモリのレイテンシに関係なく、同じデータアドレスをデータの書き込み直後に読み出すことのできる4〜8段のデータ出力バッファを有する。
以下に複数のオペコードおよびその意味を示す。
ADD
ADD
説明:
rs1とrs2とを加算する。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
et4: ターゲットイベント
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
ADDC
ADD with Carry
説明:
キャリーつきでrs1とrs2とを加算する。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
es4: ソースイベント
et4: ターゲットイベント対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
AND
Logical AND
説明:
論理AND演算を行う。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Figure 2007504688
BSHL
Barrel SHift Left
説明:
rs1をrs2の位置分だけ左方へシフトし、0で埋める。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
BSHR
Barrel SHift Right
説明:
rs1をrs2の位置分だけ右方へシフトし、符号ビットを複製する。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
BSHRU
Barrel SHift Right Unsigned
説明:
rs1をrs2の位置分だけ右方へシフトし、0で埋める。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
CLZ
Count Leading Zeros
説明:
数が正である場合、先頭の0を計数し、数が負である場合、先頭の1を計数する。
Figure 2007504688
I1 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
rtp: ターゲットレジスタ対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Figure 2007504688
CLZU
Count Leading Zeros Unsigned
説明:
符号のない数の先頭の0を計数する。
Figure 2007504688
I1 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
et4: ターゲットイベント
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Figure 2007504688
CMP
CoMPare
説明:
2つの値を比較する。
Figure 2007504688
Rpp++
rs: ソースレジスタ
etp: ターゲットイベント対
入力レジスタ:
Ri / Rd
出力レジスタ:

入力フラグ:
Figure 2007504688
CMPU
CoMPare Unsigned
説明:
符号のない2つの値を比較する。
Figure 2007504688
Rpp++
rs: ソースレジスタ
etp: ターゲットイベント対
入力レジスタ:
Ri / Rd
出力レジスタ:

入力フラグ:
Figure 2007504688
DEMUX FF
DEMUltipleX data stream
説明:
フラグに依存して入力を2つの入力側のうち一方へ移動する。
Figure 2007504688
Rpp++
rt: ターゲットレジスタ
rs: ソースレジスタ
es4: ソースイベント
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro, Rd / Ro
入力フラグ:
Ei / F
出力フラグ:
−。
DIV SEQ
DIVide
説明:
rs1をrs2で除算する。結果をrtpに、余りをrtp+1に入れる。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
DIVU SEQ
DIVide Unsigned
説明:
符号のないrs1をrs2で除算する。結果をrtpに、余りをrtp+1に入れる。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
DSHL
Double SHift Left
説明:
rs1, rs2を左方へシフトする。LSBをイベントで埋める。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
etp: ターゲットイベント対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
DSHR
Double SHift Right
説明:
rs1, rs2を右方へシフトし、符号bitを複製する。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
etp: ターゲットイベント対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Ei, F
Figure 2007504688
DSHRU
Double SHift Right Unsigned
説明:
rs1, rs2を右方へシフトし、イベントで埋める。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rtp: ターゲットレジスタ対
etp: ターゲットイベント対
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Ei, F
Figure 2007504688
EQ
EQual
説明:
2つの値が等しいか否かをチェックする。
Figure 2007504688
Rpp++
rs: ソースレジスタ
et4: ターゲットイベント
入力レジスタ:
Ri / Rd
出力レジスタ:

入力フラグ:
Figure 2007504688
JMP SEQ
JuMP immediate
説明:
直接の定数によって定義されたアドレスへジャンプする。CodeBankを定数にしたがって変更する。
動作:
const[0...3] → CodeBank
const[4...15] → Rpp
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
−。
JRI SEQ
Jump Relative Immediate
説明:
直接の符号を有する定数にしたがうRppに対して相対的にジャンプする。CodeBankには影響しない。
動作:
Rpp + const → Rpp
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
−。
JRR SEQ
Jump Relative Register
説明:
レジスタの符号を有するコンテンツにしたがうRppに対して相対的にジャンプする。CodeBankには影響しない。
動作:
Rpp + Rd[rbs] → Rpp
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
−。
LOAD
LOAD data register with constant
説明:
内部データレジスタまたは出力レジスタに直接の定数をロードする。
Figure 2007504688
Rpp++
rt: ターゲットレジスタ
入力レジスタ:

出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
MERGE FF
MERGE data streams
説明:
フラグに依存して2つの入力のうち一方を出力側へ移動する。
Figure 2007504688
Rpp++
rt: ターゲットレジスタ
rs: ソースレジスタ
es: ソースイベント
入力レジスタ:
Ri / Rd , Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Ei, F
出力フラグ:
−。
MOVE
MOVE internal data register
説明:
レジスタバンクレジスタの内容を別の内部レジスタに移動する。
動作:
Rd[rbs] → rd[rbt]
Rpp++
rbs: レジスタバンクソース
rbt: レジスタバンクターゲット
入力レジスタ:
Rd
出力レジスタ:
Rd
入力フラグ:

入力フラグ:
−。
MOVEE
MOVE flag register
説明:
フラグレジスタの内容を別のフラグレジスタに移動する。
動作:
F[fs] → F[ft]
Rpp++
fs: フラグソース
ft: フラグターゲット
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
F。
MUL
MULtiply
説明:
rs1とrs2とを乗算する。
Figure 2007504688
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
MULU
MULtiply Unsigned
説明:
符号なし整数rs1とrs2とを乗算する。
Figure 2007504688
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
NOP
No Operation
説明:
ノーオペレーション、Rppをインクリメントする。
動作:
Rpp++
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
−。
NOT
Logical inverse
説明:
レジスタを論理的に反転する
Figure 2007504688
I → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Figure 2007504688
OR
Logical OR
説明:
論理的なOR演算
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Figure 2007504688
READ
READ data input register
説明:
指定されたデータ入力レジスタを読み出して内部レジスタバンクまたは出力レジスタに書き込む。READは、入力レジスタにおいてデータが利用可能になるまで待つ。
Figure 2007504688
Rpp++
rt: ターゲットレジスタ
ri: 入力レジスタ
入力レジスタ:
Ri
出力レジスタ:
Rd / Ro
入力フラグ:

出力フラグ:
−。
READE
READ event input register
説明:
指定されたイベント入力レジスタを読み出して内部フラグバンクまたはイベント出力レジスタに書き込む。READEは、入力レジスタにおいてイベントが利用可能になるまで待つ。
Figure 2007504688
Rpp++
et4: ターゲットイベント
ei: 入力イベント
入力レジスタ:

出力レジスタ:

入力フラグ:
Ei
出力フラグ:
F / Eo。
SAT
SATurate
説明:
キャリー(Fu0)フラグおよび飽和モードに依存してレジスタを飽和させる。
Figure 2007504688
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
as: 加算/減算モード
es4: イベントソース
入力レジスタ:
Rd
出力レジスタ:
Rd / Ro
es4入力フラグ:
SEQモード: キャリー
FF-モード: Ei / F
出力フラグ:
−。
SETF
SET Flag with constraint
説明:
フラグレジスタまたは出力イベントにイミーディエイト定数をロードする。
Figure 2007504688
Rpp++
et4: イベントターゲット
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
F / Eo。
SHL
SHift Left
説明:
rs1を左にシフトする。LSBにはイベントが充填される。
Figure 2007504688
I1 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタペア
et4: ターゲットイベントペア
es4: ソースイベントレジスタ
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
SHR
SHift Right
説明:
rs1を右にシフトする。MSBにはイベントが充填される。
Figure 2007504688
I1 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタペア
et4: ターゲットイベントペア
es4: ソースイベントレジスタ
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
SKIPE
SKIP next two commands depending on Event
説明:
イベントまたはフラグに基づいてつぎの2つのコマンドをスキップする。ソースとしてイベントが選択された場合、イベントが利用可能になるまで実行は停止する。
Figure 2007504688
val: 値
es4: イベントソース
入力レジスタ:

出力レジスタ:

入力フラグ:
Ei / F
出力フラグ:
−。
SORT
SORT data stream
説明:
2つの入力を値に応じてソートする。
Figure 2007504688
O1 = I1およびI2の小さい方の値
O2 = I1およびI2の大きい方の値
E1 = I1 < I2の場合1,その他の場合0
E2 = I1 <= I2の場合1,その他の場合0
Rpp++
rt: ターゲットレジスタ
rs: ソースレジスタ
et4: ターゲットイベント
入力レジスタ:
Ri / Rd, Ri / Rd
出力レジスタ:
Rd / Ro, Rd / Ro
入力フラグ:

出力フラグ:
Ei / F。
SORTU
SORT data stream Unsigned
説明:
2つの符号なし入力値を値に応じてソートする。
Figure 2007504688
O1 = I1およびI2の小さい方の値
O2 = I1およびI2の大きい方の値
E1 = I1 < I2の場合1,その他の場合0
E2 = I1 <= I2の場合1,その他の場合0
Rpp++
rt: ターゲットレジスタ
rs: ソースレジスタ
et4: ターゲットイベント
入力レジスタ:
Ri / Rd, Ri / Rd
出力レジスタ:
Rd / Ro, Rd / Ro
入力フラグ:

出力フラグ:
Ei / F。
SUB
SUBtract
説明:
rs1からrs2を減算する。
Figure 2007504688
I1, I2 → O
Rpp++
rt: ターゲットレジスタ
rs: ソースレジスタ
et4: ターゲットイベント
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
ADDC
ADD with Carry
説明:
キャリー付きでrs1からrs2を減算する。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
es4: ソースイベント
etp: ターゲットイベントペア
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
F, Ei
Figure 2007504688
SWAP
SWAP data stream
説明:
フラグに依存して2つの入力をスワップする。
Figure 2007504688
Rpp++
rt: ターゲットレジスタ
rs: ソースレジスタ
es4: ソースイベント
入力レジスタ:
Ri / Rd, Ri / Rd
出力レジスタ:
Rd / Ro, Rd / Ro
入力フラグ:
Ei / F
出力フラグ:
−。
UPDATE
UPDATE parameters
説明:
Ei7が設定されている場合、レジスタRd3,Rd2,Rd1をRi3からの値によって更新する。Ri3に続くデータパケットをRo3に移動してEo7を設定する。
Figure 2007504688
Rpp++
モード: 更新モード
入力レジスタ:
Ri3
出力レジスタ:
Rd3, Rd2, Rd1
入力フラグ:
Ei7
出力フラグ:
Eo7。
WAITE
WAIT for incoming Event
説明:
実行を中断し、定めた値のイベントが到来するのを待つ。到来したイベントに肯定応答する。
Figure 2007504688
定めた値のイベントが到来するのを待つ。到来したすべてのイベントに肯定応答する。
valx: 値
es3: イベントソース
Rpp++
入力レジスタ:

出力レジスタ:

入力フラグ:

出力フラグ:
−。
WRITE
WRITE output register
説明:
入力レジスタまたは内部レジスタバンクからのデータを出力レジスタに書き込む。書き込みの前または後に、到来するACKを待つ。
Figure 2007504688
入力レジスタ:
Ri / Rd
出力レジスタ:
Ro
入力フラグ:

出力フラグ:
−。
WRITEE
WRITE Event output register
説明:
入力レジスタまたはフラグからのイベントをイベント出力レジスタに書き込む。書き込みの前または後に、到来するACKを待つ。
Figure 2007504688
入力レジスタ:

出力レジスタ:

入力フラグ:
Ei / F
出力フラグ:
Eo。
XOR
Logical XOR
説明:
論理的なXOR演算。
Figure 2007504688
I1, I2 → O
Rpp++
rs: ソースレジスタ
rt: ターゲットレジスタ
入力レジスタ:
Ri / Rd
出力レジスタ:
Rd / Ro
入力フラグ:
Figure 2007504688
付録 B
以下では、ファンクションフォールディングを使用する例を示す。
ファンクションフォールディングおよび高速パラメタ更新の例FIR
Ri0 = x
Ri1 = y
accを使用し、3重にフォールディングされたFIR
レジスタRd1, Rd2, Rd3に対する高速パラメタ更新
例1:UPM3、Rd3, 2, 1にそれぞれにアクセスしてパラメタを更新(Ei7が設定されている場合)。
upmcfg = 1100
#第1段階
mul acc, Rio, Rd3;
add Rd0, acc, Ri1;
#第2段階
mul acc, Rio, Rd2;
add Rd0, acc, Rd0;
#第3段階
mul acc, Rio, Rd1;
add Ro1, acc, Rd3;
write Ro0, RiO;
MACオペコード、パラメタpopおよびルーピングを使用した択一的な例
read Rd0, Ri1;
lh, lt[3]: mac Rd0, Ri0, pop;
write Ro1, Rd0;
write Ro0, Rio;。
例2:UPM3、パラメタ更新に対して命令UPDATEを使用。
upmcfg = 1110
#第1段階
mul acc, Rio, Rd3;
add Rd0, acc, Ri1;
#第2段階
mul acc, Rio, Rd2;
add Rd0, acc, Rd0;
#第3段階
mul acc, Rio, Rd1;
add Ro1, acc, Rd3;
write Ro0, Rio;
update 3。
例3:UPM3、Rpp = 0においてパラメタを更新。
upmcfg = 1101
#第1段階
mul acc, Rio, Rd3;
add Rd0, acc, Ri1;
#第2段階
mul acc, Rio, Rd2;
add Rd0, acc, Rd0;
#第3段階
mul acc, Rio, Rd1;
add Ro1, acc, Rd3;
write Ro0, Rio;。
上では、改良したデータプロセッサアレイを説明した。いくつかの例だけについてだけではあったが、所定の数のレジスタ、ビット幅などについて述べたことは説明のためだけであることを注意した。このような断りがない場合にもこれが有効であることを理解されたい。
上記のアレイが極めて大きくなる場合、またはコンパイル時には未知である相異なる2つのアレイのフラグメントが互いに通信してデータ処理が可能であるようにしなればならない状況においてアルタイム処理が実行される場合、有利であるのは、通信パスが設定できるようにすることによって性能を向上することである。例えばLeeルーティングおよび/またはPACT 7に記載された手法などいくつかの提案がすでに提案されている。改良したアレイ設計についての以下の部分は、所定のアプリケーションに対しては、回路装置の改良に結び付き得るが、例えばファンクションフォールディングPAEによってこれを改良することが絶対的また必須とは考えられないことを理解されたい。通常の知識を有する当業者にはわかるようにむしろ改良のための別の提案それ自体が大きな改良に結び付くことがある。
ルーティングの改良
ここで提案され以下で説明される改良は、リコンフィギャラブルアレイアーキテクチャに対するスタティックルーティングネットワークに関する。ここでこのスタティックネットワークは、アダプティブランタイムルーティングに付加的なロジックを実現することによって強化される。
図1には一組の機能ユニット(FU functional unit)の有するリコンフィギャラブルアレイのカットが示されている。各機能ユニットには1つのルーティングユニット(RU routing unit)および付加的な複数の機能モジュール(FM functional module)が含まれている。これらの含まれた機能モジュールは、データを操作し、またFUのタイプを特徴づけるために使用される。上記のRUには相互接続マトリクスが含まれており、これは各入力ポートを所望の任意の出力ポートにルーティングすることができる。すべてのFUはポイントツーポイントリンクを介して接続され、ここで各々は2つの半二重リンクから構成され、同時に双方向にデータを転送することができる。
ここで説明するルーティング法は命令ベースであり、すなわち各ルーティング処理は1つの命令によって開始しなければならないのである。ユーザが2つのセルの間でルーティングを行おうとする場合、このユーザは所定の命令をソースセルに入れなければならない。このアレイ内のハードウェアにより、命令フィールド値に基づいて所望のルーティング方向が計算されてロジックストリームが設定される。このルーティング処理は、1機能ユニットから別の機能ユニットに段階的に進み、ここでは各セルにより、つぎにどの方向を選択すべきかが決定される。設定されたルートの途中、ルーティング資源の3つの重要な状態が定められる。第1の状態は、物理的なルートまたはリンクである。このことが意味するのは、このルートの資源は使用されておらず、ルーティング処理に利用できることである。第2の状態は、一時的なルートまたはリンクと称される。この状態は一時的に利用できないリンクであり、これが意味するのは、このリンクがルーティング処理に使用中であるが、このルーティングがまだ確認されていないことである。ここでの問題は、このルートが、将来的に確認され得るか、または後続のセルが所望のリンクを実現できる場合に解放され得ることである。最後の状態は、論理的なルートまたはリンクである。この状態は、アレイにおいて設定されたルートを表し、このルートによって計算データを転送することができる。
このルーティング法では、アレイにおける座標が使用され、これによってルーティングが計算される。各FUは一意の座標を有しており、この情報に基づいてアレイ内の所望の各セルへ至るルーティング方向を決定することができる。このコンセプトが、ここで説明するアダプティブランタイムルーティングに対するベースである。アダプティブルーティングに対して必要な制御ロジックは、ルーティングユニット内に実現され、殊にランタイムに相互接続マトリクスを制御するルーティングコントローラ内で実現される。したがってこのルーティングコントローラは、関連するFUのすべての入力ポートの到来データを解析でき、つぎに何をすべきかを決定できるようになるのである。
ルーティングの設定
到来するデータの解析およびデータのバッファリングのため、各入力ポートはいわゆるイン-レジスタ(InReg in-register)を有する。この標準的なレジスタに加えて、InRegコントローラ(InRegCtrl)が実現されている。この有限状態機械(FSM finite state machine)の役割は、入力リンクの最新の状態を記憶し、この最新の状態に依存してルーティング要求をトリガするかまたは不要のルーティングを解放することである。この役割を遂行するため、各InRegCtrlはイン-コントローラ(InCtrl in-controller)に接続されており、これはFU毎にちょうど1つだけ実現される。新しいルーティングを要求するための重要な要件は、上記の入力資源(InReg,InRegCtrl)が使用されておらず、物理リンクの状態にあることである。
InCtrlは、全時間にわたってすべてのInRegCtrlの要求を受け取り、ルーティングコントローラ(RoutCtrl routing controller)に要求を1つずつ転送する。どのInRegCtrlを最初に処理すべきであるかの選択は、入力リンクのルーティング優先度および/またはどの入力リンクを最後に処理すべきかに依存する。ターゲットセルの座標情報および目下のFUの座標に基づき、要求された入力リンクに対する転送方向がRoutCtrlによって計算される。この際にRoutCtrlにより、(後述する)最適なビット、所望の方向へのネットワークの利用率などのような付加的なパラメタが考慮される。
RoutCtrl内での方向の計算に成功した場合、RoutCtrlにより、出力ポートについての付加的な情報と共にこの要求が相互接続マトリクスに転送され、この相互接続マトリクスにより、上記の入力ポートと、計算された出力ポートとが接続される。これが行われた場合、RoutCtrlにより、ルーティング処理の成功がInCtrlに通知される。目下達成されるルーティング状態は最終的なものではないため、この目下の状態を記憶する必要がある。これはキュー要求レジスタファイル(QueueRRF queue-request-registerfile)内で行われる。したがってInCtrlはQueueRRFに直接接続されて所望の情報を記憶することができる。この時点で、関連する入力および出力リンクは、一時的なリンク状態に達し、またこれは他のルーティング処理に対して一時的に利用できない。
QueueRRFは1つ以上のルーティングエントリを記憶できるという事実に起因して、InCtrlは同時に複数のルーティング処理を保持することができる。しかしながらハードウェア領域を多く消費するため、直接的な計算がRoutCtrl内で一度実現される。
設定された一時的なルーティングは、後続のセルによってルーティングが肯定応答される時点までQueueRRF内に記憶されたままになる。肯定応答された場合、InCtrlによって、QueueRRF内の相応するエントリがクリアされ、またルーティングの成功がこのInCtrlに通知される。InRegCtrlは、論理的なルートの状態に変わり、また先行のセルにルーティング処理が成功して終了したことを通知する。後続のセルが所望のルートを設定できない場合、別のケースが発生し得る。この場合、InCtrlは、QueueRRFエントリに基づいてRoutCtrlに新たな要求を転送する。この要求は、新たなルーティングの提案になり、これはQueueRRF内に記憶される。
利用可能かつ有利なすべての方向がチェックされ、かつルーティングの試みが失敗した場合、InCtrlは、ルーティングの失敗をInRegCtrlに通知する。InCtrlはルーティングの同じ失敗を、先行するセルに通知し、現在にセルにおけるルーティング処理を終了する。
ルーティング処理内では、ルーティングユニットが所望のルーティングを設定する仕方について2つの例外がある。これらの例外は、ソースセルおよびターゲットセルを対象とする。いずれのケースであっても、この例外はつぎのようなものである。すなわち、ソースセルもターゲットセルも共に相互接続マトリクスを介して、開始ルーティング/終了ルーティングをルーティングする必要がないということである。FMをセルの出力リンクに接続するためには単純な複数のマルチプレクサが使用される。これらのマルチプレクサは、相互接続マトリクスの後置接続され、また明示的にスイッチングしなければならない。これはルーティング処理が終了した後、行われる。例外であるのは、終了状態である。ここではInRegCtrlは、先行するものにルーティングの成功を肯定応答する必要はなく、その代わりにInRegにおいて目下のルーティング命令を消費すればよいだけである。これは、InCtrlによってルーティングの成功が通知された後に行われる。付加的にInRegは、FMの出力ポートに関連づけられた出力マルチプレクサをスイッチングして、ルーティングの設定を終了する。InCtrlは、出力マルチプレクサを正しくスイッチングするために必要な情報をRouteCtrlから得る。
上記とは異なり、ルーティングが失敗した場合、InCtrlは、セル固有の割り込みラインをアクティブにして、システムに失敗を通知する。
2つ目の例外は、ターゲットルーティングセルに関する例外である。ここで重要であるのは新たなルートと、ローカルなFMの入力ポートとを接続することである。したがって相互接続マトリクスに前置接続される単純な複数のマルチプレクスが使用されるのである。進行中のルーティング処理がターゲットセルに達した場合、InCtrlは、ターゲットへの到達を識別して、関連する入力マルチプレクサをスイッチングして、到来するデータをFMの入力ポートに転送する。InCtrlによって成功が通知された後、ルート設定の成功を示す信号がInRegCtrlによって形成されるのはこの時点である。ここでInRegCtrlが最後に行う作業は、ルーティング命令を消去し、上記の論理的な状態に移行することによってルーティング処理を終了することである。
設定したルーティングの解放
論理的に設定されたルーティングを解放するため、複数の固有の命令、いわゆる終了パケットを導入する。これらの命令のただ1つの目的は、上記の論理的に設定されたルーティングに所要の終了パケットを挿入することによって、ルートを解消することである。ルーティングを解放できるようにするためには2つのやり方がある。1つの可能性はグローバルな解放である。すなわち、終了パケットが挿入されるルートに続くすべてのルートを解放することである。この機能は、単一の命令ですべてのコンフィギュレーションを消去するのに有効である。このために重要であるのは、FMが、内部データパスを介して上記の終了パケットを変更せずに転送できることである。
ルート解放の2つ目のやり方は、ローカルなルート解放である。ここではFMの出力ポートと入力ポートとの間で設定された複数のルートを個々に解放することができる。終了パケットはFMを介して伝搬されない。この場合、終了パケットは最後のInRegCtrlによって消費される。
内部的なRU通信はルーティング処理と同様である。InRegCtrlによって、到来する終了パケットが決定されかつInRegCtrlが上記の論理的なルーティング状態にある場合、InRegCtrlは、ルート解放要求をInCtrlに転送する。InCtrlにより、相互接続マトリクス内か、または入力マルチプレクサレジスタ内か、または出力マルチプレクサレジスタ内のいずれかのエントリがクリアされる。この間にInRegCtrlは、(ローカルな終了パケットおよびチェーンの最後のセルの場合)命令を消費して、アイドル状態に移行する。終了パケットがグローバル命令の場合はつねにInRegCtrlにより、終了パケットが後続のものに転送される。
付加機能
優先度を制御するため、優先システムを導入して、到来するルーティング要求がRUによって扱われる順番を変更する。このために上記の命令には、優先度レベルを表す優先度フィールドが含まれる。このフィールドの値が大きい場合、優先度は高く、ランタイムのルーティング中にRUによって優先的に処理される。この優先度フィールドは、InRegCtrlからInCtrlに到来するルーティング要求の選択に直接的に影響を与える。
内部的なコンフィギュレーション通信ストリームによっては、所望の性能に達するための厳密に定められたレイテンシを要求するものがある。このために極めて重要であるのは、最大レジスタチェーン長を保持することである。ルーティングされるストリームのレイテンシを減少するために必要であるのは、アレイにより、ソースとターゲットとの間の最良のルーティングがつねに選択されることを保証することであるが、この機能がつねに要求されると、この要求により、ルーティングできないストリームが生じることがある。このような問題を緩和するため、いわゆる最適化ビット(OptBit optimum bit)と称される固有のビットをルーティング命令内に導入する。このビットは、最適なルーティングが確実に要求される場合にアクティブ化しなければならない。この場合、アレイはこの要求を満たすようにし、失敗した場合には割り込みを出力する。
要求されるレイテンシを得るための択一的なやり方は、速度パスカウンタである。このカウンタによって示されるのは、再びバッファリングする前に、指定された数のレジスタをバイパスできることである。したがって基準値およびカウンタ値が定められる。これらの2つの数は、命令フィールド内に記憶される。これが渡されたそれぞれのRUの各セルにより、カウンタ値と基準値とが比較される。これらの2つの値が等しい場合、目下のセルにより、ストリームがバッファリングされてカウンタがリセットされる。カウンタが基準値よりも小さい場合、目下のバッファはバイパスされて、カウンタは1だけインクリメントされる。このようにして、基準値に正確に等しいバッファ数をバイパスすることができるのである。
マルチグレイン通信リンク
複数のポイントツーポイントコースグレインリンクに加えて、一層フレキシブルな複数のマルチグレインポイントツーポイントリンクを導入する。ここでは個々のポイントツーポイントリンクによって、それぞれのRUの隣り合う2つのセルが、これらのセル内でリンクされる。1つのコースグレインリンクには一組のワイヤ、例えば1つの32リンクに対して32本のワイヤと、付加的なプロトコル信号とから構成されている。一まとまりベクトルは、複数の制御信号からなる単一の集合によって処理されるため、通信資源はマルチグレイン通信に使用できない。
マルチグレイン通信の要求を満たすため、全体で32ビットのベクトルを複数の個別のストリップに分ける。例えば、8個の1ビットストリップおよび3つの8ビットストリップに分けるのである。得られた各ストリップは、制御信号を分け、また他のストリップは無関係に動作することができる。このような分割の仕方の背景にあるアイデアは、上記のストリップを組み合わせて、論理的なマルチグレインサブリンクにすることである。マルチグレインリンクがあれば、一まとまりベクトルを、相互に関連する1つの32ビットベクトルとして使用するか、またはこの一まとまりベクトルをサブチャネルに分けることができる。このような構成では、各ストリップを単一サブチャネルにすることができるか、またはストリップのグループをまとめて所望のビット幅の単一のサブチャネルにすることができる。(ハードウェアコストに関していえば)1つのサブチャネルを1つのマルチグレインリンクに当てはめることだけを考えればよいのである。
マルチグレインルーティング
マルチグレインチャネルをルーティングするためにはコースグレインリンクを使用して、ルーティング処理をサポートしなければならない。このアイデアは、2つのリンクを並列にルーティングすること、すなわちマルチグレインルーティングをサポートする1コースグレインリンクと、最終的なマルチグレインストリームを含む1つのマルチグレインリンクとをルーティングすることである。このために、所要のデータフィールドを有する2つのパケットルーティング命令を定める。第1の命令パケットは(コースグレインルーティング命令と比較して)、使用するマルチグレインサブリンクを指定するための付加的なビットマスクと、関連するマルチグレインリンクを識別するためのマルチグレインリンクIDを含む。上に説明したような別の機能(最適ビット、速度パス、優先度ルーティング)もこのルーティングモードにおいてサポートされている。上記のRU内のルーティング処理は、コースグレインルーティングと同様に行われる。
セルに到着する最初のパケットは、InRegCtrlによって解析されて要求が生成され、InCtrlに転送される。InCtrlは、この要求をRoutCtrlに転送して肯定応答を待つ。RoutCtrlにより、可能性のある1ルーティング方向が見つかった場合、InCtrlは、成功の肯定応答を受け取り、また一時的なルーティングがRoutCtrlによって設定される。つぎにQueueRRP内で目下のジョブが記憶され、InCtrlは後続のセルからの肯定応答を待つ。RoutCtrlが、可能性のあるルーティングを見つけられない場合、InCtrlnは否定応答を受け取り、これは関連するInRegCtrlに転送される。このInRegCtrlにより、先行するセルに対してルーティング不可信号が形成され、このセル内でのルーティング処理が中止される。
後続のセルにより、ルーティングの成功が通知される場合、InRegCtrlにより、QueueRRPの関連するエントリがクリアされ、ルーティングが終了する。後続のセルが、宛先セルへのルートを設定できない場合、これは否定応答信号を生成する。これに基づいてInCtrlはRoutCtrlに新たな要求を開始し、応答を上記のように処理する。
コースグレインルーティングとマルチグレインルーティングとの間の違いは、マルチグレイン相互接続マトリクスの処理の違いにある。マルチグレインリンクの各ストリップは、別個に処理される。RoutCtrlにより、ストリップマッチャ(strip matcher)へのスイッチ要求が転送される。ストリップマッチャの役割は、入力ストリップを解析して、すでに使用されたストリップにしたがってこれらを出力リンクに整合させることである。ストリップマッチャによって行われるのは、ストリップマッチングの問題を時間領域にマッピングして、ストリップ毎に必要なスイッチボックスを順次にスイッチすることである。
コースグレインストリームに対するルーティングパケット:
Figure 2007504688
マルチグレインストリームに対するルーティング命令(第1パケット):
Figure 2007504688
マルチグレインストリームに対するルーティング命令の第2パケット:
Figure 2007504688
終了パケット命令:
Figure 2007504688
データパケット:
Figure 2007504688
改良されたルーティングの仕方に関連する図
Figure 2007504688
Figure 2007504688
Figure 2007504688
Figure 2007504688
PACT48/PCTEへの補遺
ファンクションフォールディングを用いてリコンフィギャラブル算術アレイのシリコン効率を高める手法
筆者:(ブラインドレビューのため削除)
要約
この論文はファンクションフォールディングFunction Folding、すなわちリコンフィギャラブル算術アレイ(コースグレインアレイ)のシリコン効率を高めるための設計原理に関する。このアレイでは高度に並列にインプリメンテーションされたDSPアルゴリズムが実行されるものの、現行のデバイスの全シリコン効率はアレイに要求される多数のALUと満足とは云えない速度との双方によって制限されている。動作周波数は主としてノンローカルルーティング接続部の要求によって制限されている。われわれはこうした制限を克服する新たなファンクションフォールディングのアプローチ、つまり同じコンフィギュレーションに属する明確な少数の演算子を同じALUにたたみ込み、1つの処理素子上でシーケンシャルに実行することを提案する。ALUは同じ命令シーケンスを反復して実行するプログラムによって制御される。局所的にしか要求されないデータはローカルレジスタファイルに格納される。こうしたシーケンシャルアプローチにより個別のALUリソースがより効率的に用いられ、しかもアレイの全ての処理素子が現行デバイスと同様に並列に動作する。さらにALUおよびローカルレジスタはノンローカルルーティング接続部よりも高い周波数でクロック制御することができる。全体として、現行のデバイスよりも高い計算密度を得ることができる。
1 導入
フィールドプログラマブルゲートアレイFPGAはアプリケーション専用集積回路ASICに代わるフレキシブルなプログラマブル回路としてビット指向アプリケーションに使用される。FPGAは文献[1]に示されているようにNREコストが低く、しかもタイムツーマーケットが速い。同様にリコンフィギャラブル算術アレイもワードレベルの算術アプリケーションに対する選択手段として使用されているが、こちらはビットレベルのルックアップテーブルよりもむしろコースグレインALUに基づいている。幾つかの研究プロジェクト(例えば文献[2]のRapid、文献[1][3]のKressArray)および商業的開発(例えば文献[4]のPACT XPP Technologies、文献[5]のMorphotech、文献[6]のElixent)がこの分野で行われている。これらのアーキテクチャは高度に並列的にインプリメンテーションされたDSPアルゴリズムが提供されるにもかかわらず、まだ広汎には使用されていない。その明らかな原因の1つは現行のデバイスのシリコン効率が制限されているということであり、このために多数のALUが必要となり、また不充分な速度しか得られないのである。動作周波数は主として要求されるノンローカルルーティング接続部により制限されている。
われわれは文献[4]に記載されているPACT XPP TechnologiesのeXtreme Processing Platform(XPP)をさらに拡張することによりこれらの制限を克服した。つまり1つのALU上で1つのコンフィギュレーションの全期間にわたって1つの固定演算を実行するのではなく、同じコンフィギュレーションに属する明確な少数の演算子を同じALUへたたみ込み、同じ処理素子PE上でシーケンシャルに実行する。ALUは同じ命令シーケンスを反復して実行するプログラムによって制御される。局所的にしか要求されないデータはローカルレジスタファイルに格納される。こうしたシーケンシャルアプローチにより個別のALUリソースがより効率的に用いられ、しかもアレイの全ての処理素子は現行デバイスと同様に並列に動作する。外部データの転送は処理素子のクロックサイクルごとには要求されないので、ALUおよびローカルレジスタをノンローカルルーティング接続部よりも高い周波数でクロック制御することができる。このALUオーバークロッキング技術はますます強くなる高い集積密度への志向により理由付けされる。新世代の技術ではより小さなトランジスタを製造できるようになっているが、ワイヤは高い相対容量を有し、このためにバスが遅くなり、電流消費量が大きくなってしまうからである。
大幅なアーキテクチャ変更にもかかわらず、既存のXPPプログラムを自動的に拡張アーキテクチャに自動マッピングすることができる。全体として、現行のデバイスよりも高い計算密度が得られる。
この論文の以下では次の各点について述べる。最初にセクション2でPACT XPPアーキテクチャを説明し、次にセクション3で新たなファンクションフォールディング処理素子の機能およびハードウェアデザインを説明し、またセクション4でマッピングメソッドを説明し、さらにセクション5で予備実験結果を示す。最後にわれわれのアプローチを関連する技術と比較して述べ、結論を導出し、将来の技術を概観する。
2 XPPアーキテクチャの概観
文献[4]に記載されている現行のXPPアーキテクチャはコースグレイン適応化処理素子の2Dアレイ、内部メモリおよび相互接続部リソースに基づいている。64個のALUおよび16個の内部メモリを備えた24bitプロトタイプチップがPACT XPP Technologiesによって製造されている。このXPP64Aチップの開発ボードは入手可能である。
PACT XPP Technologiesはさらにプレーサアンドルータ、シミュレータおよびヴィジュアライザから成る完全開発ツールを提供している。このツールはリコンフィギュレーション要素を備えた構造言語であるプロプラエタリNative Mapping Language(NML)を使用している。Cフロントエンドも同様に提供されている。
2.1 アレイストラクチャ
Figure 2007504688
表121には単純なXPPコアの基本構造が示されている。デモンストレーションのために、このコアが9個の処理素子および6個の内部RAMのみを有するものとする。コアは3×3個の矩形状の処理素子を中央に有し、1組の対辺に一列ずつ独立の内部メモリを有する。さらに2個のI/Oユニットが設けられており、データのストリーミングに対するポートまたは外部RAMのアクセスに対するインタフェースとしてコンフィギュレーションされる。処理素子のコアは通常の算術演算、論理演算、比較および計数などの特殊演算を行うALUである。コンフィギュレーションごとに各処理素子は1つの専用の演算を実行する。表中の線は1つの処理素子の出力側と他の処理素子の入力側とを接続するセグメント化されたバスのセットを表している。このアレイは動作中コンフィギュレーションを管理するコンフィギュレーションマネージャCMに付加される。コンフィギュレーションの管理とは外部メモリからアレイのコンフィギュレーションリソースへコンフィギュレーションデータをダウンロードすることである。有限状態機械に加え、コンフィギュレーションマネージャCMはコンフィギュレーションデータの記憶またはプリフェッチのためにキャッシュメモリを有する。
2.2 データおよびイベントの同期
相互接続部リソースは2つの独立のバスのセット、すなわちデバイスごとのbit幅を有するデータバスと1bit幅のイベントバスから成る。XPPバスは論理回路を接続するワイヤであるだけでなく、処理素子で処理されたデータおよびイベントを同期するためにハードウェア内にインプリメントされたready / acknowledgeプロトコルである。したがって処理素子の演算は、必要な全ての入力値が利用可能となり、かつ先行の結果が消費されるとただちに実行される。このようにデータフローグラフを直接にアレイにマッピングし、このアレイを通る入力データストリームをパイプライニングすることができる。パイプラインの機能停止中にもデータは失われない。ストリームのマージ、マルチプレクスなどに対する専用のデータフロー演算も同様に行うことができる。
2.3 コンフィギュレーション
FPGAに比べてXPPコアはコースグレイン性のために迅速にコンフィギュレーションできる。オペコードおよび接続部のみセットすればよい。またコンフィギュレーションが必要なのは実際に使用されるアレイオブジェクトのみである。
コンフィギュレーション時間はプリフェッチ機構により低減される。1つのコンフィギュレーションをアレイへロードしているあいだ、別のコンフィギュレーションがCMキャッシュへロードされる。このようにすれば要求に応じていちいち外部メモリからロードする必要がなくなる。同じことが以前に使用されたコンフィギュレーションにも当てはまり、この場合コンフィギュレーションデータはCMキャッシュ内に残っていることになる。
3 ファンクションフォールディング処理素子
次に拡張XPP PEすなわちファンクションフォールディング処理素子の機能およびハードウェアデザインについて説明する。
3.1 ファンクションフォールディングの例
Figure 2007504688
Figure 2007504688
まず簡単な例を考察しよう。アドレスadrを定数のオフセットoffsおよび座標x, yから
adr=offs+x+256*y
として計算する。表121のような単純な処理素子に基づくXPPインプリメンテーションでは、この計算は標準的には直接に表123(a)のデータフローグラフへマッピングされる。各加算子および各乗算子は自身のALUへマッピングされる。ゆえに新たなアドレスがサイクルごとに計算される。ただしセクション1で述べたように、動作周波数はALUそのものではなく、バス接続部によって制限されている。
シリコン効率を高めるために、つまり1mm当たりおよび1s当たりでより多くの演算を実行するために、ALUのクロックを高速化しなければならない。これはバス内により多くのパイプラインレジスタを設けることにより達成される。ただしこうするとデータフローグラフが複数のサイクルを含む場合、生憎なことに、チップ面積および電力消費が増大し、スループットが低下してしまう。われわれのアプローチでは、現行のXPPコアと同程度の周波数でバスを駆動し、ALUのクロックレートを処理素子内部で局所的に増大する。こうしたn回たたみ込みのオーバークロッキングにより、n個[ここでnは小さな数である]のALU演算を1つのバスサイクルにスケジュールすることができる。われわれはこの演算グループをクラスタと称している。必要な処理素子数の大幅な低減はハードウェアのオーバヘッドに対して有効である。リコンフィギャラブル“空間的コンピューティング”というパラダイムは確かに成功しているが、われわれはそれに拘わるのでなく、局所的シーケンシャルアプローチによりALUリソースの効率を最適化している。
同じデバイス内でオーバークロッキング係数(例えばn=2,n=4)が異なっていても良いことにより、異なる局所的時空間のトレードオフが可能である。1つの実施例では、n=4に対してはデータフローグラフの全ての演算がクラスタリングされ、乗算が2つのサイクルを要する場合であっても、同じALUで実行される。n=2に対しては2つの加算子のみがクラスタリングされる。これによりn=4に比べて面積は2倍になるが、スループットも2倍となる。
n個の命令を反復して実行するプログラムコントローラのほか、中間結果をALU入力側へフィードバックする小さな内部レジスタファイルも処理素子に要求される。このローカルフィードバックループはn個までの演算子を含むサイクルで全体のスループットを低下させることなくデータフローグラフをインプリメントできる。
3.2 ハードウェアデザイン
表122に示されているハードウェアデザインでは次のようなファンクションフォールディングが行われる。表121の単純な処理素子と同様に、新たな処理素子はready / acknowledgeプロトコルにしたがうデータおよびイベントの入出力ポートを介して相互接続ネットワークと通信する。各ポートは処理素子の高速の内部クロックとn倍遅いバスクロックとを同期させる。入力データはバスクロックサイクルの全期間にわたって安定であり、処理素子の内部クロックサイクルごとにサンプリングすることができる。出力データはバスサイクルの開始時にバスレジスタへコピーされる。ファンクションフォールディング処理素子は演算のクラスタ全体を実行するため、単純な処理素子より多くのポートを要する。しかし単純な処理素子のポートのn倍を要するわけではない。なぜならコンフィギュレーション時に内部レジスタにロードされる入力およびクラスタ内のローカル接続部が一定であるため、外部コネクションが大きく制限されていることが多いからである。良好なクラスタリングアルゴリズムを用いれば外部コネクションを最小化することができる。表3(b)に点線の囲みで使用されているように、n=4の実施例のクラスタに対しては2つの入力ポートおよび1つの出力ポートがあればよい。
より詳細に云えば、表125の処理素子は次のように動作する。小さなプログラムカウンタPCは命令記憶部内でコンフィギュレーションされた命令を反復して実行する。処理素子の各サイクルでプログラムカウンタはALUオペコードを選択し、マルチプレクサを制御してALU入力を選択させる。入力ポートまたは内部レジスタファイルのエントリのいずれかが使用される。ALU出力は内部レジスタファイルまたは出力ポートまたはその双方へ書き込まれる。全体の設計は単純であり、ファンクションフォールディングをサポートできる最小限の大きさに保たれる。他の制御ストラクチャは不可能である。入出力ポート数および内部レジスタ数は約nとなる。したがってわれわれはレジスタおよびマルチプレクサのみを用いてレジスタファイルのインプリメンテーションをきわめて迅速に選択することができる。ポート数およびレジスタ数が小さいので、フェッチ/実行/記憶の全プロセスを1サイクル内で実行することができる。唯一の例外は2サイクルにわたる乗算演算である。外部入力が利用不能であるか、またはダウンストリームパイプラインが機能停止して外部入力ポートがいっぱいになっている場合、コントローラFSMはプログラム実行を停止する。わかりやすくするために表2ではイベントポートおよびイベントレジスタは省略されていることに注意されたい。イベントはデータと同様に内部および外部で使用および記憶される。
さらにわれわれは表123(b)に示されているアドレス形成クラスタに対する単純な処理素子のプログラムを提供する。ポートおよびレジスタへの接続部のマッピングは表中に示されている。われわれはレジスタr1, r2がそれぞれコンフィギュレーション時に一定の値offs, 256で初期化されていると仮定している。反復して実行されるアセンブラコード
add r3 ← r1 , i1
mul r4 ← r2, i2
add o1 ← r3 , r4
がクラスタを記述している。
4 アプリケーションマッピング
Figure 2007504688
表124には拡張XPPアーキテクチャのツールフローが示されている。これは文献[4]に記載されているxmapプログラムのインプリメンテーションの現行のルールフローにきわめて類似している。影付きのブロックで表されたフェーズが追加されているだけである。次のフェーズ、すなわち
・Cフロントエンド(オプショナル):構造的NMLコード(セクション2を参照)を標準Cのサブセットから形成する
・NML構文解析系:入力NMLファイルを構文解析し、XPP演算子にマッピングする
・プレーシングおよびルーティング:処理素子(つまり現行のアーキテクチャにおける演算子)をXPPアレイへプレーシングし、接続部をルーティングする
・バイナリ形成:XBINバイナリファイルを形成する
は現行のXPPツールフローに既に存在している。
ファンクションフォールディングでは、付加的に、1つの処理素子にマッピングされる演算子を定義する演算子クラスタリングのフェーズが必要とされる。クラスタは手動でNMLファイル内の注釈により定義されるが、自動クラスタリングアルゴリズムはプログラミングの単純化、Cフロントエンドの使用、既存のNMLコードのマッピングの際に要求される。このことについては次項で説明する。さらに処理素子のプログラムコードをセクション4.2で後述するように形成しなければならない。なおプレーシングおよびルーティングのフェーズおよびバイナリ形成のフェーズをともに適合化しなければならないことも明らかである。
4.1 演算子のクラスタリング
ファンクションフォールディングPEに対する演算子クラスタリングの問題は、例えば[7]のFPGAに対するモジュールのマッピングおよび慣用のプロセッサに対してコードジェネレータにおいて発生するグラフカバリング(graph covering )問題と類似している。したがってこれらのアルゴリズムをまず検討する。[7]で使用される効率的ダイナミックプログラミングアルゴリズム(efficient dynamic-programming algorithm)および類似のアプローチは、実質的にツリーカバリング(tree-covering)アルゴリズムである。これは演算のツリーに対して最適なカバリングを形成する。しかしながらこれは任意のデータフローグラフを処理することはできない。このため、オリジナルのグラフからフィードバックサイクル(feedback cycle)およびファンアウトエッジ(fanout edge)を取り除く前処理フェーズが必要である。結果的に得られるのは、効率的に覆うことのできるツリーからなる森である。しかしながら得られた最適なツリーカバリングは、オリジナルのデータフローグラフに対して最適ではない。
以下では当面の演算子クラスタリング問題を検討する。すなわちここではファンクションフォールディングPEの制約、すなわちオーバークロッキングファクタn、ポート数および内部レジスタに沿って、クラスタ数の最小の解決手段を探し出さなければならない。また(外部のルーティング遅延によって発生するスループットの低下を回避するため)サイクルはできる限り、1クラスタ内で処理すべきであり、また外部コネクション数は最小化すべきである。残念なことにこれらの品質判定条件は、ツリーカバリング前処理フェーズの出力において、すなわちサイクルおよびファンアウトエッジを取り除いた後、見ることができない。このため、演算クラスタリングに対してツリーカバリングを適用しない。
その代わりにオリジナルのグラフにおいて動作するアルゴリズムを開発した。複雑さを低減するため、接続されクラスタを成している演算子だけを考察する。それはこれらのクラスタだけが内部レジスタを使用し、外部ポートの数が低減されるからである。付加的な後処理フェーズでは、未接続のクラスタは、これらが互いに隣り合って配置されている場合、後でマージすることができる。
第1のアルゴリズムフェーズでは、接続されたすべてのクラスタが明示的に形成される。発生し得る未接続のクラスタの数は、演算子数において指数関数的になることに注意されたい。
第2のフェーズでは、入力グラフ全体をカバーするクラスタの最適な組み合わせを決定しなければならない。残念なことにクラスタの考えられ得るすべての組み合わせの数は指数関数的である。このために網羅的に探すことは不可能である。その代わりにこのアルゴリズムのメインループは、演算子を次第に増大させた部分集合に作用して、この部分集合の最適なクラスタリングを形成しこれを記憶する。ここでこれは演算子グラフ全体の最適なクラスタリングが計算されるまで行われる。このアルゴリズムが使用しているのは、部分最適解が完全最適解に含まれているという事実である。このようにすることにより、すべての部分集合に対して最適なクラスタリングを計算する必要はない。新しい部分集合の最適なクラスタリングは、前に計算しなかったかもしれない別の部分集合に依存するため、指数関数的な実行時間に結びつき得るいくつかの再帰呼び出しが必要である。しかしながらオーバークロッキングファクタn≦4および演算子数k<50に対して、数分間の範囲であることが判明した。問題となるさらに大きなサイズに対してつぎのような帰納的な手法をテストした。すなわち、
・ (n個の演算子よりも多くの演算子を有する)大きなフィードバックサイクルをグラフから取り除く。この場合、小さなサイクルはなお1クラスタ内で実行され、わずかに数クラスタだけが除外され得るだけであり、再帰呼び出しの数は大きく低減される。
・ 最良の解を再帰呼び出しで計算せず、計算される部分集合の最初のクラスタリングだけを計算する。比較的小さなクラスタの前に比較的大きなクラスタを適用することによって、このアルゴリズムにより、いずれにせよほぼ最適な解が計算される。
上記の拡張により、150個までの演算子を有する実際的なデータフローグラフをクラスタリングすることができる。テストしたケースに対して、上記の帰納的な手法により、最適解に極めて近いないしは等しいクラスタリングが作成された(すなわちわずかに数クラスタだけ多かった)。
前の議論においてPEプログラムにおける演算の数をnに制限したことに注意されたい。ふつうPEプログラムの実行を1バスサイクル以上にもわたって伸ばしたくないため、これは合理的である。しかしながらPEがn演算よりも多く実行するようにプログラムされ得る場合、スループットに重大な影響を与えない演算は、一層大きなクラスタに結合することができる。こうすることによって、全体的なスループットに影響を与えることなく、所要のPE数をさらに低減することができる。
4.2 PEコード形成
演算子クラスタリングの後、各クラスタに対するPEプログラムコードが形成される。これについてはセクション3に示した例のアセンブラコードを参照されたい。慣用のレジスタ割り当てを簡易にしたものが使用されて、内部的な接続が内部的なレジスタにマッピングされる。命令は、クラスタのデータフローグラフから直接抽出することができる。
5 結果
5.1 PEの速度および面積
ファンクションフォールディングPEの面積は、ポートおよびレジスタの数に依存して、対応する単純なPEの面積よりも約15%〜25%大きいと見積もられる。16ビットのデータパスに対し、予備的な統合結果により、130nmシリコンプロセスに対して400〜500MHzのPE周波数が達成された。
評者への注:この論文の最終版に対して期待されるのは、現在進行中のPEハードウェア実装からの詳細な分析結果が示されることである。
5.2 複素FIRアプリケーションの分析
Figure 2007504688
このセクションではファンクションフォールディングPEにおける典型的なDSPアルゴリズム、すなわち複素数に作用するFIRフィルタの実現について説明する。定数Cならびに入力XおよびYから出力Z = X*C+Yを計算する1FIRフィルタセルを考察する。すべての値は複素数である。すなわち(Zre,Zim)=(Xre*Cre−Xim*Cim+Yre,Xre*Cim+Xim*Cre+Yim)である。表128(a)には相応するデータフローグラフが示されている。これには8つの演算子が含まれており、点線で囲ったボックスで示したようにn = 4のオーバークロッキングファクタに対して3つのクラスタにたたみ込むことができる。表128(b)には結果的に得られるクラスタデータフローグラフが示されている。すべてのクラスタはPEをフルに活用している。すなわち4つのPEクロックサイクルをすべて活用しているのである。
現在のXPPデバイスに基づく実現(FIRcurr)のシリコン効率と、ファンクションフォールディングPEベースの実現(FIRnew)のシリコン効率とを比較する。上に概略的に述べたようにn=4に対してFPE=400 MHzおよびFbus=100MHzと見積もる。Fbusは現在のアーキテクチャの動作周波数でもある。表128(a)および(b)からわかるように、与えられたFIRセルから構成されるフィルタは、これらの2つの実現に対して容易に完全にパイプライニングすることができる。2つの実現は同じ性能を有するため、これらの実現によって100MHzのレートで出力が形成される。
ファンクションフォールディングPEの面積は、AFFPE = 1.2×AcurrPE,すなわち現在のPEよりも20%大きいと見積もられる。これらの2つのフィルタ実現に対する面積比はつぎのようになる。すなわち
Figure 2007504688
である。
この大まかな見積もりによって示されるのは、新しい実現方式の面積効率は、旧い実現方式の面積効率の2倍以上であり、しかもより多くのパイプライニングレジスタを外部バスに必要としない。全体的なシリコン効率は2倍以上である。
5.3 ベンチマークマッピング結果
Figure 2007504688
ファンクションフォールディングの一般的な適用可能性を決定するために、セクション4.1で説明したアルゴリズムを、広範囲のアプリケーション領域からの継承された43個のXPP構成のベンチマークに適用した。平均クラスタ利用率、すなわち繰り返しのPEプログラムによって使用されるPEサイクル数を求めた(クラスタ利用率が高いことは、PEプログラムが各バスサイクルで実行できることを保証しないことに注意されたい。1アプリケーションにおける全体的なPE利用率は、入力データの利用可能性およびすべてのPEの全体的なスループットにも依存する)。この値は、ファンクションフォールディングの有効性をよく示している。
表129に示されているのは、n=2およびn=4に対し、ポート数を変化させて得られた結果である。内部レジスタの数は、この評価に対してまだ制限されていない。4つの入力および出力データならびにイベントポート(n=2に対して1.78またn=4に対して3.05)に対する結果が示しているのは、平均的なXPP構成に対してファンクションフォールディングPE資源を効率的に利用できることである。この表は、6つのデータポートを使用することにより、クラスタ利用率がわずかにしか増大しないことを示している。その一方、使用するデータポートを少なくすると、利用率ははっきりと低下する。ポートの面積要求を詳細に示すハードウェア実現の結果と、クラスタ利用数とを組み合わせて、最良の全体シリコン効率を生じるPEパラメタを決定する。
6 関連する刊行物
セクション1で述べたようにリコンフィギャラブル算術アレイについていくつかのプロジェクトがあるが、知る限りでは刊行物にはファンクションフォールディングに類似した解決手段はない。以下のアーキテクチャは本発明のアプローチとは大きく異なるが、PEによって実行される演算を高速に変更することができる。
RAWマイクロプロセッサ[8]にも処理素子のクラスタリングが含まれているが、これらはかなり複雑なプロセッサである。このためこれらのプログラムは、ファンクションフォールディングPEプログラムほど簡単に自動生成することはできない。このRAWアーキテクチャは、むしろチップ上のマルチプロセッサに類似している。
一方ではMorphoSysアーキテクチャ[5]はSIMDアプローチを追従している。行または列のすべてのPEは、(グローバル)プログラムによって制御され、同じ命令を実行する。これによってPEは一層単純になるが、SIMD原理により、実行可能で利用可能な計算を大きく制限してしまう。またアレイのプログラムも一層困難である。
最後にマルチコンテキストデバイス(multi-context device)により、2つ以上の完全なコンフィギュレーションコンテキスト(complete configuraton context)が提供される[9]。このテクニックは、マルチコンテキストFPGAから採用されたものである。しかしながらここでは頻繁なリコンフィギュレーションができない。それはまずシャドウコンフィギュレーション(shadow configuration)を完全にロードしなければならないからである。コンフィギュレーションは完全に独立している。マルチコンテキストデバイスはコンフィギュレーションレイテンシをある程度隠すが、コースグレインリコンフィギャラブルアーキテクチャの一般的な効率性の問題を克服はしないのである。
7 結論および今後の作業
ここまでは、強化されたPACT XPPアーキテクチャに対するファンクションフォールディング処理素子のアーキテクチャおよび機能を述べて来た。ハードウェアでの実現およびこのアーキテクチャへのアプリケーションのマッピングの両方を事前に分析することによって示されたのは、ファンクションフォールディングが、現在のリコンフィギャラブル算術アレイに比較してシリコン効率を極めて大きく増大させ、また電力消費を低減する可能性を有することである。
ファンクションフォールディングPEを実現し、そのパラメタを分析した今後の作業に含まれるのは、セクション4.1の終わりに述べたスループットに重要でないパスの評価である。ここでは統合化されたクラスタリングならびにプレースおよびルーティングのアルゴリズムが使用されることになる。CからファンクションフォールディングPEへの直接のコンパイラを開発することも検討されており、これはNMLを介する現在のデザインフローよりも良好にその能力を活用できることと思われる。
参考文献
[1] R. Hartenstein. A decade of reconfigurable computing: a visionary retrospective. In Proc. Design, Automation and Test in Europe, 2001.
[2] D. C. Cronquist, P. Franklin, C. Fischer, M. Figueroa, and C. Ebeling. Architecture design of reconfigurable pipelined datapaths. In Proc. 20th Anniversary Conference on Advanced Research in VLSI, Atlanta, GA, March 1999.
[3] R. Hartenstein, R. Kress, and H. Reinig. A new FPGA architecture for word-oriented datapaths. In Proc. Field-Programmable Logic; 4th International Workshop. Springer-Verlag, September 1994.
[4] V. Baumgarte, G. Ehlers, F. May, A. Nueckel, M. Vorbach, and M. Weinhardt. PACT XPP a self-reconfigurable data processing architecture. The Journal of Supercomputing, 26(2), September 2003.
[5] M.-H. Lee, H. Singh, G. Lu, N. Bagherzadeh, and F. J. Kurdahi. Design and implementation of MorphoSys reconfigurable computing processor. Journal of VLSI and Signal Processing-Systems for Signal, Image and Video Technology, March 2000. March 2000.
[6] T. Stansfield. Using multiplexers for control and data in D-Fabrix. In Field Programmable Logic and Applications, LNCS 2778, pages 416-425. Springer, 2003.
[7] T. J. Callahan, P. Chong, A. DeHon, and J. Wawrzynek. Fast module mapping and placement for datapaths in FPGAs. In Proc. FPGA'98, Monterrey, CA, 1998.
[8] M. B. Taylor et al. The Raw microprocessor: A computational fabric for software circuits and general-purpose programs. IEEE Micro, March/April 2002.
[9] B. Salefski and L. Caglar. Re-configurable computing in wireless. In Proc. 38th Design Automation Conference, Las Vegas, NV, June 2001.
機能ユニットFUを示す図である。 マルチグレイン通信リンクを示す図である。 信号Data/Ready/PD/ACKを示す図である。 図の信号のタイミングチャートである。

Claims (10)

  1. コースグレインロジック素子(PAE)からなる多次元アレイを含むデータ処理装置であって、
    該コースグレインロジック素子は、データを処理し、第1クロックレートで動作して互いに通信し、および/または第2クロックレートで動作する通信ラインおよび/またはバスを介して別の素子と通信する形式のデータ処理装置において、
    前記の第1クロックレートは第2クロックレートよりも高く、また
    前記のコースグレインロジック素子は、処理しなければならないデータを記憶するための記憶手段を有することを特徴とする、
    コースグレインロジック素子(PAE)からなる多次元アレイを含むデータ処理装置。
  2. 前記のアレイのデータ処理は、データフローと類似の方式で制御される、
    請求項1に記載のデータ処理装置。
  3. 前記のデータ記憶手段は、オペランドおよび/または中間結果を記憶するために適合されており、
    エントリ毎に有効ビットが設けられている、
    請求項2に記載のデータ処理装置。
  4. 前記のアレイのコースグレイン論理素子のデータ処理を適合化して、所要のトリガおよび/またはデータのすべての有効ビットが有効であることに応答して作用を及ぼすようにした、
    請求項1から3までのいずれか1項に記載のデータ処理装置。
  5. 処理アレイにおいて、
    該処理アレイは、主たるデータフロー方向を有しており、
    該処理アレイは、コースグレインロジック素子を有しており、
    該コースグレインロジック素子、例えばアップストリーム入力側およびデータダウンストリーム出力側を有するALUを適合化して、該コースグレインロジック素子により、前記の方向でデータが流れるようにしてデータ処理に作用が及ぼすようにし、
    前記のコースグレインロジック素子のうちの少なくともいくつかは、逆方向のデータフローを可能にする第2ALUのようなデータ処理手段を有することを特徴とする、
    例えば請求項1から4までのいずれか1項に記載の処理アレイ。
  6. 1方向におけるALUに対する命令セットと、逆方向におけるALUの命令セットとは異なる、
    請求項5に記載の処理アレイ。
  7. 少なくとも1つのコースグレインロジック素子には1方向のALUと、逆方向のALUとが含まれる、
    請求項5または6に記載の処理アレイ。
  8. 処理装置において、
    コースグレイン素子はバスに接続されており、
    該コースグレイン素子の行はバスを介して相互接続されており、
    少なくとも1つの入力側は上側の行に、また少なくとも1つの入力側はセルの下側で行に接続されており、および/または
    当該接続が出力側に対しても成り立つことを特徴とする
    処理装置。
  9. 前記コースグレイン素子はバスに接続されており、
    少なくとも2つの入力/出力バス接続部が1つの行に設けられており、
    入力側および/または出力側の間のセグメントにゲートまたはバッファまたはマルチプレクサおよび/またはスイッチがバス構造体に設けられている、
    請求項8に記載の処理装置。
  10. 処理アレイのルーティング方法において、
    該方法を適合化して段階的に、接続できないトレースを無視するようにし、また1コンフィギュレーションおよび/または複数のコンフィギュレーションの別個のフラグメントを自動的に接続するようにしたことを特徴とする、
    処理アレイのルーティング方法。
JP2006524345A 2003-08-28 2004-08-30 データ処理装置およびデータ処理方法 Expired - Fee Related JP4700611B2 (ja)

Applications Claiming Priority (29)

Application Number Priority Date Filing Date Title
EP03019428.6 2003-08-28
EP03019428 2003-08-28
EP03025911 2003-11-05
EP03025911.3 2003-11-05
DE10357284A DE10357284A1 (de) 2003-12-05 2003-12-05 Multispannungsversorgung
DE10357284.8 2003-12-05
EP03079015.8 2003-12-17
EP03028953.2 2003-12-17
EP03028953 2003-12-17
EP03079015 2003-12-17
EP04002604 2004-02-05
EP04002604.9 2004-02-05
EP04002719.5 2004-02-06
EP04002719 2004-02-06
EP04003258.3 2004-02-13
EP04003258 2004-02-13
EP04075654.6 2004-03-02
EP04004885.2 2004-03-02
EP04004885 2004-03-02
EP04075654 2004-03-02
EP04005403.3 2004-03-08
EP04005403 2004-03-08
EP04013557 2004-06-09
EP04013557.6 2004-06-09
EP04077206.3 2004-08-02
EP04018267.7 2004-08-02
EP04077206 2004-08-02
EP04018267 2004-08-02
PCT/EP2004/009640 WO2005045692A2 (en) 2003-08-28 2004-08-30 Data processing device and method

Publications (2)

Publication Number Publication Date
JP2007504688A true JP2007504688A (ja) 2007-03-01
JP4700611B2 JP4700611B2 (ja) 2011-06-15

Family

ID=34578045

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006524345A Expired - Fee Related JP4700611B2 (ja) 2003-08-28 2004-08-30 データ処理装置およびデータ処理方法

Country Status (4)

Country Link
US (3) US8812820B2 (ja)
EP (1) EP1676208A2 (ja)
JP (1) JP4700611B2 (ja)
WO (1) WO2005045692A2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009027324A (ja) * 2007-07-18 2009-02-05 Fuji Xerox Co Ltd 演算処理装置及び演算処理プログラム
JP2010002986A (ja) * 2008-06-18 2010-01-07 Nec Corp 再構成可能電子回路装置

Families Citing this family (73)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7425841B2 (en) * 2004-02-14 2008-09-16 Tabula Inc. Configurable circuits, IC's, and systems
US7167025B1 (en) * 2004-02-14 2007-01-23 Herman Schmit Non-sequentially configurable IC
US7317331B2 (en) 2004-11-08 2008-01-08 Tabula, Inc. Reconfigurable IC that has sections running at different reconfiguration rates
US7330050B2 (en) 2004-11-08 2008-02-12 Tabula, Inc. Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements
US7788478B2 (en) 2005-07-15 2010-08-31 Tabula, Inc. Accessing multiple user states concurrently in a configurable IC
WO2007149494A2 (en) * 2006-06-21 2007-12-27 Element Cxi, Llc. Resilient integrated circuit architecture
US7535252B1 (en) 2007-03-22 2009-05-19 Tabula, Inc. Configurable ICs that conditionally transition through configuration data sets
US8069425B2 (en) 2007-06-27 2011-11-29 Tabula, Inc. Translating a user design in a configurable IC for debugging the user design
US8344755B2 (en) 2007-09-06 2013-01-01 Tabula, Inc. Configuration context switcher
WO2009039462A1 (en) * 2007-09-19 2009-03-26 Tabula, Inc. Method and system for reporting on a primary circuit structure of an integrated circuit (ic) using a secondary circuit structure of the ic
US8525548B2 (en) 2008-08-04 2013-09-03 Tabula, Inc. Trigger circuits and event counters for an IC
US8650514B2 (en) 2010-06-23 2014-02-11 Tabula, Inc. Rescaling
WO2011162858A1 (en) 2010-06-23 2011-12-29 Tabula, Inc. Rescaling
US8760193B2 (en) 2011-07-01 2014-06-24 Tabula, Inc. Configurable storage elements
US9148151B2 (en) 2011-07-13 2015-09-29 Altera Corporation Configurable storage elements
US9203397B1 (en) 2011-12-16 2015-12-01 Altera Corporation Delaying start of user design execution
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
US9000801B1 (en) 2013-02-27 2015-04-07 Tabula, Inc. Implementation of related clocks
US20150012903A1 (en) 2013-07-04 2015-01-08 Tabula, Inc. Non-intrusive monitoring and control of integrated circuits
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US8750365B1 (en) * 2013-11-27 2014-06-10 Redline Communications, Inc. System and method for multi-threaded OFDM channel equalizer with coprocessor
US9218443B1 (en) * 2014-11-12 2015-12-22 Xilinx, Inc. Heterogeneous multiprocessor program compilation targeting programmable integrated circuits
US9846660B2 (en) 2014-11-12 2017-12-19 Xilinx, Inc. Heterogeneous multiprocessor platform targeting programmable integrated circuits
US9984037B1 (en) 2015-04-27 2018-05-29 Synaptic Engines, Llc Scheduler for a fine grained graph processor
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10558575B2 (en) * 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
US10956241B1 (en) 2017-12-20 2021-03-23 Xilinx, Inc. Unified container for hardware and software binaries
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
WO2019241979A1 (en) * 2018-06-22 2019-12-26 Huawei Technologies Co., Ltd. Method of deadlock detection and synchronization-aware optimizations on asynchronous processor architectures
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11803507B2 (en) 2018-10-29 2023-10-31 Secturion Systems, Inc. Data stream protocol field decoding by a systolic array
US11263011B2 (en) * 2018-11-28 2022-03-01 International Business Machines Corporation Compound instruction set architecture for a neural inference chip
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10789401B1 (en) * 2019-03-06 2020-09-29 Xilinx, Inc. Folding multiply-and-accumulate logic
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
RU2755274C1 (ru) * 2020-12-04 2021-09-14 Федеральное государственное бюджетное образовательное учреждение высшего образования "Ростовский государственный экономический университет (РИНХ)" Устройство для формирования минимальных двоичных чисел
US11237880B1 (en) 2020-12-18 2022-02-01 SambaNova Systems, Inc. Dataflow all-reduce for reconfigurable processor systems
US11392740B2 (en) * 2020-12-18 2022-07-19 SambaNova Systems, Inc. Dataflow function offload to reconfigurable processors
US11182221B1 (en) 2020-12-18 2021-11-23 SambaNova Systems, Inc. Inter-node buffer-based streaming for reconfigurable processor-as-a-service (RPaaS)
US11782760B2 (en) 2021-02-25 2023-10-10 SambaNova Systems, Inc. Time-multiplexed use of reconfigurable hardware

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01501671A (ja) * 1986-11-07 1989-06-08 コンカーレント・ロジック・インコーポレーテッド プログラム可能なロジック・セルおよびアレイ
JPH0369138A (ja) * 1989-05-02 1991-03-25 Tandem Comput Inc 線形配列ウェーハ規模集積回路アーキテクチャ
JPH05119964A (ja) * 1991-04-02 1993-05-18 American Teleph & Telegr Co <Att> 配置可能機能エレメント
JP2001510650A (ja) * 1996-12-27 2001-07-31 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等)
JP2002033457A (ja) * 2000-07-18 2002-01-31 Hitachi Ltd 半導体集積回路装置
WO2002071196A2 (de) * 2001-03-05 2002-09-12 Pact Informationstechnologie Gmbh Verfahren und vorrichtung zu datenbe- und/oder verarbeitung

Family Cites Families (587)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10450A (en) * 1854-01-24 Thomas peossbr
US34363A (en) * 1862-02-11 Improvement in machinery for cleaning cotton
US34444A (en) * 1862-02-18 Improvement in pumps for deep wells
US2067477A (en) 1931-03-20 1937-01-12 Allis Chalmers Mfg Co Gearing
GB971191A (en) 1962-05-28 1964-09-30 Wolf Electric Tools Ltd Improvements relating to electrically driven equipment
US3564506A (en) 1968-01-17 1971-02-16 Ibm Instruction retry byte counter
GB1253309A (en) 1969-11-21 1971-11-10 Marconi Co Ltd Improvements in or relating to data processing arrangements
US3753008A (en) 1970-06-20 1973-08-14 Honeywell Inf Systems Memory pre-driver circuit
US3855577A (en) 1973-06-11 1974-12-17 Texas Instruments Inc Power saving circuit for calculator system
DE2713648A1 (de) 1976-03-26 1977-10-06 Tokyo Shibaura Electric Co Stromzufuhr-steuervorrichtung fuer speichervorrichtungen
US4044243A (en) * 1976-07-23 1977-08-23 Nestor Associates Information processing system
US4233667A (en) 1978-10-23 1980-11-11 International Business Machines Corporation Demand powered programmable logic array
US4442508A (en) 1981-08-05 1984-04-10 General Instrument Corporation Storage cells for use in two conductor data column storage logic arrays
US4498134A (en) 1982-01-26 1985-02-05 Hughes Aircraft Company Segregator functional plane for use in a modular array processor
US4590583A (en) 1982-07-16 1986-05-20 At&T Bell Laboratories Coin telephone measurement circuitry
US4498172A (en) 1982-07-26 1985-02-05 General Electric Company System for polynomial division self-testing of digital networks
US4667190A (en) 1982-07-30 1987-05-19 Honeywell Inc. Two axis fast access memory
JPS5936857A (ja) 1982-08-25 1984-02-29 Nec Corp プロセツサユニツト
US4663706A (en) 1982-10-28 1987-05-05 Tandem Computers Incorporated Multiprocessor multisystem communications network
US4594682A (en) 1982-12-22 1986-06-10 Ibm Corporation Vector processing
US4739474A (en) 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US4566102A (en) 1983-04-18 1986-01-21 International Business Machines Corporation Parallel-shift error reconfiguration
US5123109A (en) 1983-05-31 1992-06-16 Thinking Machines Corporation Parallel processor including a processor array with plural data transfer arrangements including (1) a global router and (2) a proximate-neighbor transfer system
US4571736A (en) 1983-10-31 1986-02-18 University Of Southwestern Louisiana Digital communication system employing differential coding and sample robbing
US4870302A (en) 1984-03-12 1989-09-26 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
USRE34363E (en) 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
JPS60198618A (ja) 1984-03-21 1985-10-08 Oki Electric Ind Co Ltd ダイナミツク論理回路
US4761755A (en) 1984-07-11 1988-08-02 Prime Computer, Inc. Data processing system and method having an improved arithmetic unit
US4682284A (en) 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4623997A (en) 1984-12-13 1986-11-18 United Technologies Corporation Coherent interface with wraparound receive and transmit memories
EP0190813B1 (en) 1985-01-29 1991-09-18 The Secretary of State for Defence in Her Britannic Majesty's Government of the United Kingdom of Great Britain and Processing cell for fault tolerant arrays
US4720778A (en) 1985-01-31 1988-01-19 Hewlett Packard Company Software debugging analyzer
US5023775A (en) 1985-02-14 1991-06-11 Intel Corporation Software programmable logic array utilizing "and" and "or" gates
US5247689A (en) 1985-02-25 1993-09-21 Ewert Alfred P Parallel digital processor including lateral transfer buses with interrupt switches to form bus interconnection segments
US4706216A (en) 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
US5015884A (en) 1985-03-29 1991-05-14 Advanced Micro Devices, Inc. Multiple array high performance programmable logic device family
US5225719A (en) 1985-03-29 1993-07-06 Advanced Micro Devices, Inc. Family of multiple segmented programmable logic blocks interconnected by a high speed centralized switch matrix
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4967340A (en) 1985-06-12 1990-10-30 E-Systems, Inc. Adaptive processing system having an array of individually configurable processing components
GB8517376D0 (en) 1985-07-09 1985-08-14 Jesshope C R Processor array
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
EP0221360B1 (en) 1985-11-04 1992-12-30 International Business Machines Corporation Digital data message transmission networks and the establishing of communication paths therein
US4852048A (en) 1985-12-12 1989-07-25 Itt Corporation Single instruction multiple data (SIMD) cellular array processing apparatus employing a common bus where a first number of bits manifest a first bus portion and a second number of bits manifest a second bus portion
US4882687A (en) 1986-03-31 1989-11-21 Schlumberger Technology Corporation Pixel processor
US5021947A (en) 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
US5034914A (en) 1986-05-15 1991-07-23 Aquidneck Systems International, Inc. Optical disk data storage method and apparatus with buffered interface
GB8612396D0 (en) 1986-05-21 1986-06-25 Hewlett Packard Ltd Chain-configured interface bus system
US4791603A (en) 1986-07-18 1988-12-13 Honeywell Inc. Dynamically reconfigurable array logic
US4910665A (en) 1986-09-02 1990-03-20 General Electric Company Distributed processing system including reconfigurable elements
US4860201A (en) 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
US5367208A (en) 1986-09-19 1994-11-22 Actel Corporation Reconfigurable programmable interconnect architecture
US4884231A (en) 1986-09-26 1989-11-28 Performance Semiconductor Corporation Microprocessor system with extended arithmetic logic unit
GB2211638A (en) 1987-10-27 1989-07-05 Ibm Simd array processor
FR2606184B1 (fr) 1986-10-31 1991-11-29 Thomson Csf Dispositif de calcul reconfigurable
US4811214A (en) 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US5226122A (en) 1987-08-21 1993-07-06 Compaq Computer Corp. Programmable logic system for filtering commands to a microprocessor
CA1299757C (en) 1987-08-28 1992-04-28 Brent Cameron Beardsley Device initiated partial system quiescing
US5119290A (en) 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
CA1286421C (en) 1987-10-14 1991-07-16 Martin Claude Lefebvre Message fifo buffer controller
US5115510A (en) 1987-10-20 1992-05-19 Sharp Kabushiki Kaisha Multistage data flow processor with instruction packet, fetch, storage transmission and address generation controlled by destination information
US5113498A (en) 1987-11-10 1992-05-12 Echelon Corporation Input/output section for an intelligent cell which provides sensing, bidirectional communications and control
US4918690A (en) 1987-11-10 1990-04-17 Echelon Systems Corp. Network and intelligent cell for providing sensing, bidirectional communications and control
JPH01103715U (ja) * 1987-12-28 1989-07-13
NL8800053A (nl) 1988-01-11 1989-08-01 Philips Nv Videoprocessorsysteem, alsmede afbeeldingssysteem en beeldopslagsysteem, voorzien van een dergelijk videoprocessorsysteem.
USRE34444E (en) 1988-01-13 1993-11-16 Xilinx, Inc. Programmable logic device
NL8800071A (nl) 1988-01-13 1989-08-01 Philips Nv Dataprocessorsysteem en videoprocessorsysteem, voorzien van een dergelijk dataprocessorsysteem.
EP0325421B1 (en) 1988-01-20 1994-08-10 Advanced Micro Devices, Inc. Organization of an integrated cache unit for flexible usage in supporting multiprocessor operations
US5303172A (en) 1988-02-16 1994-04-12 Array Microsystems Pipelined combination and vector signal processor
US4959781A (en) 1988-05-16 1990-09-25 Stardent Computer, Inc. System for assigning interrupts to least busy processor that already loaded same class of interrupt routines
US4939641A (en) 1988-06-30 1990-07-03 Wang Laboratories, Inc. Multi-processor system with cache memories
JPH06101043B2 (ja) 1988-06-30 1994-12-12 三菱電機株式会社 マイクロコンピュータ
US5287511A (en) 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
WO1990001192A1 (en) 1988-07-22 1990-02-08 United States Department Of Energy Data flow machine for data driven computing
US5010401A (en) 1988-08-11 1991-04-23 Mitsubishi Denki Kabushiki Kaisha Picture coding and decoding apparatus using vector quantization
US4901268A (en) 1988-08-19 1990-02-13 General Electric Company Multiple function data processor
US5204935A (en) 1988-08-19 1993-04-20 Fuji Xerox Co., Ltd. Programmable fuzzy logic circuits
US5353432A (en) 1988-09-09 1994-10-04 Compaq Computer Corporation Interactive method for configuration of computer system and circuit boards with user specification of system resources and computer resolution of resource conflicts
EP0363631B1 (de) 1988-09-22 1993-12-15 Siemens Aktiengesellschaft Schaltungsanordnung für Fernmeldevermittlungsanlagen, insbesondere PCM-Zeitmultiplex-Fernsprechvermittlungsanlagen mit Zentralkoppelfeld und angeschlossenen Teilkoppelfeldern
DE68929518T2 (de) 1988-10-05 2005-06-09 Quickturn Design Systems, Inc., Mountain View Verfahren zur Verwendung einer elektronisch wiederkonfigurierbaren Gatterfeld-Logik und dadurch hergestelltes Gerät
JP2930341B2 (ja) 1988-10-07 1999-08-03 マーチン・マリエッタ・コーポレーション データ並列処理装置
US5014193A (en) 1988-10-14 1991-05-07 Compaq Computer Corporation Dynamically configurable portable computer system
US5136717A (en) 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US5041924A (en) 1988-11-30 1991-08-20 Quantum Corporation Removable and transportable hard disk subsystem
US5081375A (en) 1989-01-19 1992-01-14 National Semiconductor Corp. Method for operating a multiple page programmable logic device
GB8906145D0 (en) 1989-03-17 1989-05-04 Algotronix Ltd Configurable cellular array
US5237686A (en) 1989-05-10 1993-08-17 Mitsubishi Denki Kabushiki Kaisha Multiprocessor type time varying image encoding system and image processor with memory bus control table for arbitration priority
US5109503A (en) 1989-05-22 1992-04-28 Ge Fanuc Automation North America, Inc. Apparatus with reconfigurable counter includes memory for storing plurality of counter configuration files which respectively define plurality of predetermined counters
JP2584673B2 (ja) 1989-06-09 1997-02-26 株式会社日立製作所 テストデータ変更回路を有する論理回路テスト装置
US5343406A (en) 1989-07-28 1994-08-30 Xilinx, Inc. Distributed memory architecture for a configurable logic array and method for using distributed memory
CA2021192A1 (en) 1989-07-28 1991-01-29 Malcolm A. Mumme Simplified synchronous mesh processor
US5233539A (en) 1989-08-15 1993-08-03 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure, input/output structure and configurable logic block
US5489857A (en) 1992-08-03 1996-02-06 Advanced Micro Devices, Inc. Flexible synchronous/asynchronous cell structure for a high density programmable logic device
US5212652A (en) 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5128559A (en) 1989-09-29 1992-07-07 Sgs-Thomson Microelectronics, Inc. Logic block for programmable logic devices
JP2968289B2 (ja) 1989-11-08 1999-10-25 株式会社リコー 中央演算処理装置
GB8925721D0 (en) 1989-11-14 1990-01-04 Amt Holdings Processor array system
GB8925723D0 (en) 1989-11-14 1990-01-04 Amt Holdings Processor array system
US5522083A (en) 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US5212777A (en) 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
DE58908974D1 (de) 1989-11-21 1995-03-16 Itt Ind Gmbh Deutsche Datengesteuerter Arrayprozessor.
US5099447A (en) 1990-01-22 1992-03-24 Alliant Computer Systems Corporation Blocked matrix multiplication for computers with hierarchical memory
AU7305491A (en) 1990-01-29 1991-08-21 Teraplex, Inc. Architecture for minimal instruction set computing system
US5125801A (en) 1990-02-02 1992-06-30 Isco, Inc. Pumping system
US5036493A (en) 1990-03-15 1991-07-30 Digital Equipment Corporation System and method for reducing power usage by multiple memory modules
US5142469A (en) 1990-03-29 1992-08-25 Ge Fanuc Automation North America, Inc. Method for converting a programmable logic controller hardware configuration and corresponding control program for use on a first programmable logic controller to use on a second programmable logic controller
US5555201A (en) 1990-04-06 1996-09-10 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
EP0463721A3 (en) 1990-04-30 1993-06-16 Gennum Corporation Digital signal processing device
US5355508A (en) 1990-05-07 1994-10-11 Mitsubishi Denki Kabushiki Kaisha Parallel data processing system combining a SIMD unit with a MIMD unit and sharing a common bus, memory, and system controller
US5198705A (en) 1990-05-11 1993-03-30 Actel Corporation Logic module with configurable combinational and sequential blocks
US5483620A (en) 1990-05-22 1996-01-09 International Business Machines Corp. Learning machine synapse processor system apparatus
US5193202A (en) 1990-05-29 1993-03-09 Wavetracer, Inc. Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor
CA2045773A1 (en) 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
US5111079A (en) 1990-06-29 1992-05-05 Sgs-Thomson Microelectronics, Inc. Power reduction circuit for programmable logic device
SE9002558D0 (sv) 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
DE4129614C2 (de) 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5274593A (en) 1990-09-28 1993-12-28 Intergraph Corporation High speed redundant rows and columns for semiconductor memories
US5144166A (en) 1990-11-02 1992-09-01 Concurrent Logic, Inc. Programmable logic cell and array
ATE180586T1 (de) 1990-11-13 1999-06-15 Ibm Paralleles assoziativprozessor-system
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5617577A (en) 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5713037A (en) 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5794059A (en) 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
CA2051222C (en) 1990-11-30 1998-05-05 Pradeep S. Sindhu Consistent packet switched memory bus for shared memory multiprocessors
US5613128A (en) 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5276836A (en) 1991-01-10 1994-01-04 Hitachi, Ltd. Data processing device with common memory connecting mechanism
US5301284A (en) 1991-01-16 1994-04-05 Walker-Estes Corporation Mixed-resolution, N-dimensional object space method and apparatus
US5301344A (en) 1991-01-29 1994-04-05 Analogic Corporation Multibus sequential processor to perform in parallel a plurality of reconfigurable logic operations on a plurality of data sets
JP2867717B2 (ja) 1991-02-01 1999-03-10 日本電気株式会社 マイクロコンピュータ
US5212716A (en) 1991-02-05 1993-05-18 International Business Machines Corporation Data edge phase sorting circuits
US5218302A (en) 1991-02-06 1993-06-08 Sun Electric Corporation Interface for coupling an analyzer to a distributorless ignition system
DE59109046D1 (de) 1991-02-22 1998-10-08 Siemens Ag Programmierverfahren für einen Logikbaustein
JPH04290155A (ja) 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
JPH04293151A (ja) 1991-03-20 1992-10-16 Fujitsu Ltd 並列データ処理方式
US5617547A (en) 1991-03-29 1997-04-01 International Business Machines Corporation Switch network extension of bus architecture
WO1992018935A1 (en) 1991-04-09 1992-10-29 Fujitsu Limited Data processor and data processing method
JPH04328657A (ja) 1991-04-30 1992-11-17 Toshiba Corp キャッシュメモリ
US5446904A (en) 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
JPH06507990A (ja) 1991-05-24 1994-09-08 ブリティッシュ・テクノロジー・グループ・ユーエスエイ・インコーポレーテッド コンピュータのための最適化コンパイラ
US5659797A (en) 1991-06-24 1997-08-19 U.S. Philips Corporation Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface
JP3259969B2 (ja) 1991-07-09 2002-02-25 株式会社東芝 キャッシュメモリ制御装置
US5347639A (en) 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5317209A (en) * 1991-08-29 1994-05-31 National Semiconductor Corporation Dynamic three-state bussing capability in a configurable logic array
US5581731A (en) 1991-08-30 1996-12-03 King; Edward C. Method and apparatus for managing video data for faster access by selectively caching video data
US5633830A (en) 1995-11-08 1997-05-27 Altera Corporation Random access memory block circuitry for programmable logic array integrated circuit devices
US5260610A (en) 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
US5550782A (en) 1991-09-03 1996-08-27 Altera Corporation Programmable logic array integrated circuits
FR2681791B1 (fr) 1991-09-27 1994-05-06 Salomon Sa Dispositif d'amortissement des vibrations pour club de golf.
US5450339A (en) * 1991-10-10 1995-09-12 Harris Corp Noncanonic fully systolic LMS adaptive architecture
CA2073516A1 (en) 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
WO1993011503A1 (en) 1991-12-06 1993-06-10 Norman Richard S Massively-parallel direct output processor array
US5208491A (en) 1992-01-07 1993-05-04 Washington Research Foundation Field programmable gate array
FR2686175B1 (fr) 1992-01-14 1996-12-20 Andre Thepaut Systeme de traitement de donnees multiprocesseur.
US5412795A (en) 1992-02-25 1995-05-02 Micral, Inc. State machine having a variable timing mechanism for varying the duration of logical output states of the state machine based on variation in the clock frequency
JP2791243B2 (ja) 1992-03-13 1998-08-27 株式会社東芝 階層間同期化システムおよびこれを用いた大規模集積回路
US5452401A (en) 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
JP2647327B2 (ja) 1992-04-06 1997-08-27 インターナショナル・ビジネス・マシーンズ・コーポレイション 大規模並列コンピューティング・システム装置
US5493663A (en) 1992-04-22 1996-02-20 International Business Machines Corporation Method and apparatus for predetermining pages for swapping from physical memory in accordance with the number of accesses
JP2572522B2 (ja) * 1992-05-12 1997-01-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピューティング装置
US5611049A (en) 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
WO1993024895A2 (en) 1992-06-04 1993-12-09 Xilinx, Inc. Timing driven method for laying out a user's circuit onto a programmable integrated circuit device
DE4221278C2 (de) 1992-06-29 1996-02-29 Martin Vorbach Busgekoppeltes Mehrrechnersystem
US5475803A (en) 1992-07-10 1995-12-12 Lsi Logic Corporation Method for 2-D affine transformation of images
JP3032382B2 (ja) 1992-07-13 2000-04-17 シャープ株式会社 デジタル信号のサンプリング周波数変換装置
US5386154A (en) 1992-07-23 1995-01-31 Xilinx, Inc. Compact logic cell for field programmable gate array chip
US5365125A (en) 1992-07-23 1994-11-15 Xilinx, Inc. Logic cell for field programmable gate array having optional internal feedback and optional cascade
US5590348A (en) 1992-07-28 1996-12-31 International Business Machines Corporation Status predictor for combined shifter-rotate/merge unit
US5802290A (en) 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US5581778A (en) 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
ATE237861T1 (de) 1992-09-03 2003-05-15 Sony Corp Datenaufzeichnungsgerät und -verfahren
US5572710A (en) 1992-09-11 1996-11-05 Kabushiki Kaisha Toshiba High speed logic simulation system using time division emulation suitable for large scale logic circuits
US5425036A (en) 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
JPH06180653A (ja) 1992-10-02 1994-06-28 Hudson Soft Co Ltd 割り込み処理方法および装置
US5857109A (en) 1992-11-05 1999-01-05 Giga Operations Corporation Programmable logic device for real time video processing
US5497498A (en) 1992-11-05 1996-03-05 Giga Operations Corporation Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation
GB9223226D0 (en) 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5392437A (en) 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5311079A (en) 1992-12-17 1994-05-10 Ditlow Gary S Low power, high performance PLA
US5428526A (en) 1993-02-03 1995-06-27 Flood; Mark A. Programmable controller with time periodic communication
US5386518A (en) 1993-02-12 1995-01-31 Hughes Aircraft Company Reconfigurable computer interface and method
GB9303084D0 (en) 1993-02-16 1993-03-31 Inmos Ltd Programmable logic circuit
JPH06276086A (ja) 1993-03-18 1994-09-30 Fuji Xerox Co Ltd フィールドプログラマブルゲートアレイ
US5548773A (en) 1993-03-30 1996-08-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Digital parallel processor array for optimum path planning
US5596742A (en) 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5418953A (en) 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5473266A (en) 1993-04-19 1995-12-05 Altera Corporation Programmable logic device having fast programmable logic array blocks and a central global interconnect array
AU6774894A (en) 1993-04-26 1994-11-21 Comdisco Systems, Inc. Method for scheduling synchronous data flow graphs
DE4416881C2 (de) 1993-05-13 1998-03-19 Pact Inf Tech Gmbh Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
US5435000A (en) 1993-05-19 1995-07-18 Bull Hn Information Systems Inc. Central processing unit using dual basic processing units and combined result bus
US5349193A (en) 1993-05-20 1994-09-20 Princeton Gamma Tech, Inc. Highly sensitive nuclear spectrometer apparatus and method
IT1260848B (it) 1993-06-11 1996-04-23 Finmeccanica Spa Sistema a multiprocessore
US5444394A (en) 1993-07-08 1995-08-22 Altera Corporation PLD with selective inputs from local and global conductors
JPH0736858A (ja) 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
US5581734A (en) 1993-08-02 1996-12-03 International Business Machines Corporation Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
CA2129882A1 (en) 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
US5457644A (en) 1993-08-20 1995-10-10 Actel Corporation Field programmable digital signal processing array integrated circuit
US5440538A (en) 1993-09-23 1995-08-08 Massachusetts Institute Of Technology Communication system with redundant links and data bit time multiplexing
GB2282244B (en) 1993-09-23 1998-01-14 Advanced Risc Mach Ltd Integrated circuit
US6219688B1 (en) 1993-11-30 2001-04-17 Texas Instruments Incorporated Method, apparatus and system for sum of plural absolute differences
US5455525A (en) 1993-12-06 1995-10-03 Intelligent Logic Systems, Inc. Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array
US5535406A (en) 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
US5680583A (en) 1994-02-16 1997-10-21 Arkos Design, Inc. Method and apparatus for a trace buffer in an emulation system
EP0752132B1 (en) 1994-03-22 2000-11-15 Hyperchip Inc. Cell-based defect tolerant architecture with beneficial use of unassigned spare cells
US5574927A (en) 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5561738A (en) 1994-03-25 1996-10-01 Motorola, Inc. Data processor for executing a fuzzy logic operation and method therefor
US5430687A (en) 1994-04-01 1995-07-04 Xilinx, Inc. Programmable logic device including a parallel input device for loading memory cells
US5504439A (en) 1994-04-01 1996-04-02 Xilinx, Inc. I/O interface cell for use with optional pad
US5761484A (en) 1994-04-01 1998-06-02 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5781756A (en) 1994-04-01 1998-07-14 Xilinx, Inc. Programmable logic device with partially configurable memory cells and a method for configuration
US5896551A (en) 1994-04-15 1999-04-20 Micron Technology, Inc. Initializing and reprogramming circuitry for state independent memory array burst operations control
US5426378A (en) 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations
JP2671804B2 (ja) 1994-05-27 1997-11-05 日本電気株式会社 階層型資源管理方法
US5532693A (en) 1994-06-13 1996-07-02 Advanced Hardware Architectures Adaptive data compression system with systolic string matching logic
EP0690378A1 (en) 1994-06-30 1996-01-03 Tandem Computers Incorporated Tool and method for diagnosing and correcting errors in a computer programm
JP3308770B2 (ja) 1994-07-22 2002-07-29 三菱電機株式会社 情報処理装置および情報処理装置における計算方法
US5600845A (en) 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JP3365581B2 (ja) 1994-07-29 2003-01-14 富士通株式会社 自己修復機能付き情報処理装置
US5574930A (en) 1994-08-12 1996-11-12 University Of Hawaii Computer system and method using functional memory
US5513366A (en) 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US5619720A (en) 1994-10-04 1997-04-08 Analog Devices, Inc. Digital signal processor having link ports for point-to-point communication
US5450022A (en) 1994-10-07 1995-09-12 Xilinx Inc. Structure and method for configuration of a field programmable gate array
EP0707269A1 (en) 1994-10-11 1996-04-17 International Business Machines Corporation Cache coherence network for a multiprocessor data processing system
US5530946A (en) 1994-10-28 1996-06-25 Dell Usa, L.P. Processor failure detection and recovery circuit in a dual processor computer system and method of operation thereof
US5815726A (en) 1994-11-04 1998-09-29 Altera Corporation Coarse-grained look-up table architecture
JPH08137824A (ja) 1994-11-15 1996-05-31 Mitsubishi Semiconductor Software Kk セルフテスト機能内蔵シングルチップマイコン
US6154826A (en) 1994-11-16 2000-11-28 University Of Virginia Patent Foundation Method and device for maximizing memory system bandwidth by accessing data in a dynamically determined order
US5584013A (en) 1994-12-09 1996-12-10 International Business Machines Corporation Hierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
EP0721157A1 (en) 1994-12-12 1996-07-10 Advanced Micro Devices, Inc. Microprocessor with selectable clock frequency
US5537580A (en) 1994-12-21 1996-07-16 Vlsi Technology, Inc. Integrated circuit fabrication using state machine extraction from behavioral hardware description language
US5682491A (en) 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US6128720A (en) 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5696791A (en) 1995-01-17 1997-12-09 Vtech Industries, Inc. Apparatus and method for decoding a sequence of digitally encoded data
US5493239A (en) 1995-01-31 1996-02-20 Motorola, Inc. Circuit and method of configuring a field programmable gate array
US5532957A (en) 1995-01-31 1996-07-02 Texas Instruments Incorporated Field reconfigurable logic/memory array
US6052773A (en) 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5537057A (en) 1995-02-14 1996-07-16 Altera Corporation Programmable logic array device with grouped logic regions and three types of conductors
US5892961A (en) 1995-02-17 1999-04-06 Xilinx, Inc. Field programmable gate array having programming instructions in the configuration bitstream
DE69632424T2 (de) 1995-02-17 2005-05-12 Kabushiki Kaisha Toshiba, Kawasaki Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
US5675743A (en) 1995-02-22 1997-10-07 Callisto Media Systems Inc. Multi-media server
US5757207A (en) 1995-03-22 1998-05-26 Altera Corporation Programmable logic array integrated circuit incorporating a first-in first-out memory
US5570040A (en) 1995-03-22 1996-10-29 Altera Corporation Programmable logic array integrated circuit incorporating a first-in first-out memory
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5748979A (en) 1995-04-05 1998-05-05 Xilinx Inc Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table
JP3313007B2 (ja) 1995-04-14 2002-08-12 三菱電機株式会社 マイクロコンピュータ
US5933642A (en) 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
US6077315A (en) 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
JP3948494B2 (ja) 1995-04-28 2007-07-25 ザイリンクス,インコーポレイテッド プログラム可能論理装置によってアクセス可能な分散レジスタを有するマイクロプロセサ
US5701091A (en) 1995-05-02 1997-12-23 Xilinx, Inc. Routing resources for hierarchical FPGA
US5600597A (en) 1995-05-02 1997-02-04 Xilinx, Inc. Register protection structure for FPGA
GB9508931D0 (en) 1995-05-02 1995-06-21 Xilinx Inc Programmable switch for FPGA input/output signals
US5541530A (en) 1995-05-17 1996-07-30 Altera Corporation Programmable logic array integrated circuits with blocks of logic regions grouped into super-blocks
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5821774A (en) 1995-05-26 1998-10-13 Xilinx, Inc. Structure and method for arithmetic function implementation in an EPLD having high speed product term allocation structure
JPH08328941A (ja) 1995-05-31 1996-12-13 Nec Corp メモリアクセス制御回路
JP3677315B2 (ja) 1995-06-01 2005-07-27 シャープ株式会社 データ駆動型情報処理装置
US5652529A (en) 1995-06-02 1997-07-29 International Business Machines Corporation Programmable array clock/reset resource
US5671432A (en) 1995-06-02 1997-09-23 International Business Machines Corporation Programmable array I/O-routing resource
US5815715A (en) 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5646544A (en) 1995-06-05 1997-07-08 International Business Machines Corporation System and method for dynamically reconfiguring a programmable gate array
US5889982A (en) 1995-07-01 1999-03-30 Intel Corporation Method and apparatus for generating event handler vectors based on both operating mode and event type
US5559450A (en) 1995-07-27 1996-09-24 Lucent Technologies Inc. Field programmable gate array with multi-port RAM
US5978583A (en) 1995-08-07 1999-11-02 International Business Machines Corp. Method for resource control in parallel environments using program organization and run-time support
US5649176A (en) 1995-08-10 1997-07-15 Virtual Machine Works, Inc. Transition analysis and circuit resynthesis method and device for digital circuit modeling
US5996083A (en) 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
GB2304438A (en) 1995-08-17 1997-03-19 Kenneth Austin Re-configurable application specific device
US5583450A (en) 1995-08-18 1996-12-10 Xilinx, Inc. Sequencer for a time multiplexed programmable logic device
US5778439A (en) 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
US5784313A (en) 1995-08-18 1998-07-21 Xilinx, Inc. Programmable logic device including configuration data or user data memory slices
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5737565A (en) 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
US5737516A (en) 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
US5734869A (en) 1995-09-06 1998-03-31 Chen; Duan-Ping High speed logic circuit simulator
US6430309B1 (en) 1995-09-15 2002-08-06 Monogen, Inc. Specimen preview and inspection system
US5652894A (en) 1995-09-29 1997-07-29 Intel Corporation Method and apparatus for providing power saving modes to a pipelined processor
US5745734A (en) 1995-09-29 1998-04-28 International Business Machines Corporation Method and system for programming a gate array using a compressed configuration bit stream
US5754827A (en) 1995-10-13 1998-05-19 Mentor Graphics Corporation Method and apparatus for performing fully visible tracing of an emulation
US5642058A (en) 1995-10-16 1997-06-24 Xilinx , Inc. Periphery input/output interconnect structure
US5815004A (en) 1995-10-16 1998-09-29 Xilinx, Inc. Multi-buffered configurable logic block output lines in a field programmable gate array
US5608342A (en) 1995-10-23 1997-03-04 Xilinx, Inc. Hierarchical programming of electrically configurable integrated circuits
US5675262A (en) 1995-10-26 1997-10-07 Xilinx, Inc. Fast carry-out scheme in a field programmable gate array
US5656950A (en) 1995-10-26 1997-08-12 Xilinx, Inc. Interconnect lines including tri-directional buffer circuits
US5943242A (en) 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US5732209A (en) 1995-11-29 1998-03-24 Exponential Technology, Inc. Self-testing multi-processor die with internal compare points
US5773994A (en) 1995-12-15 1998-06-30 Cypress Semiconductor Corp. Method and apparatus for implementing an internal tri-state bus within a programmable logic circuit
JPH09231788A (ja) 1995-12-19 1997-09-05 Fujitsu Ltd シフトレジスタ及びプログラマブル論理回路並びにプログラマブル論理回路システム
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5804986A (en) 1995-12-29 1998-09-08 Cypress Semiconductor Corp. Memory in a programmable logic device
JP3247043B2 (ja) 1996-01-12 2002-01-15 株式会社日立製作所 内部信号で障害検出を行う情報処理システムおよび論理lsi
DE59607143D1 (de) * 1996-01-15 2001-07-26 Infineon Technologies Ag Prozessor zur bildverarbeitung
US5760602A (en) 1996-01-17 1998-06-02 Hewlett-Packard Company Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA
JP2795244B2 (ja) 1996-01-17 1998-09-10 日本電気株式会社 プログラムデバッグシステム
US5854918A (en) 1996-01-24 1998-12-29 Ricoh Company Ltd. Apparatus and method for self-timed algorithmic execution
US5898602A (en) 1996-01-25 1999-04-27 Xilinx, Inc. Carry chain circuit with flexible carry function for implementing arithmetic and logical functions
US5936424A (en) 1996-02-02 1999-08-10 Xilinx, Inc. High speed bus with tree structure for selecting bus driver
US5635851A (en) 1996-02-02 1997-06-03 Xilinx, Inc. Read and writable data bus particularly for programmable logic devices
US5754459A (en) 1996-02-08 1998-05-19 Xilinx, Inc. Multiplier circuit design for a programmable logic device
KR0165515B1 (ko) 1996-02-17 1999-01-15 김광호 그래픽 데이터의 선입선출기 및 선입선출 방법
GB9604496D0 (en) 1996-03-01 1996-05-01 Xilinx Inc Embedded memory for field programmable gate array
US6020758A (en) 1996-03-11 2000-02-01 Altera Corporation Partially reconfigurable programmable logic device
US5841973A (en) 1996-03-13 1998-11-24 Cray Research, Inc. Messaging in distributed memory multiprocessing system having shell circuitry for atomic control of message storage queue's tail pointer structure in local memory
US6279077B1 (en) 1996-03-22 2001-08-21 Texas Instruments Incorporated Bus interface buffer control in a microprocessor
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US6154049A (en) 1998-03-27 2000-11-28 Xilinx, Inc. Multiplier fabric for use in field programmable gate arrays
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5687325A (en) 1996-04-19 1997-11-11 Chang; Web Application specific field programmable gate array
US6173434B1 (en) 1996-04-22 2001-01-09 Brigham Young University Dynamically-configurable digital processor using method for relocating logic array modules
US5960200A (en) 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US5894565A (en) 1996-05-20 1999-04-13 Atmel Corporation Field programmable gate array with distributed RAM and increased cell utilization
US5784636A (en) 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
EP0978051A1 (en) 1996-06-21 2000-02-09 Mirage Technologies, Inc. Dynamically reconfigurable hardware system for real-time control of processes
US5892370A (en) 1996-06-21 1999-04-06 Quicklogic Corporation Clock network for field programmable gate array
US6785826B1 (en) 1996-07-17 2004-08-31 International Business Machines Corporation Self power audit and control circuitry for microprocessor functional units
US6023742A (en) 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US6023564A (en) 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
KR100280285B1 (ko) 1996-08-19 2001-02-01 윤종용 멀티미디어 신호에 적합한 멀티미디어 프로세서
US5838165A (en) 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US5933023A (en) 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US6624658B2 (en) 1999-02-04 2003-09-23 Advantage Logic, Inc. Method and apparatus for universal program controlled bus architecture
US5859544A (en) 1996-09-05 1999-01-12 Altera Corporation Dynamic configurable elements for programmable logic devices
US6049866A (en) 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
JP3934710B2 (ja) 1996-09-13 2007-06-20 株式会社ルネサステクノロジ マイクロプロセッサ
US5828858A (en) * 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US6178494B1 (en) 1996-09-23 2001-01-23 Virtual Computer Corporation Modular, hybrid processor and method for producing a modular, hybrid processor
US5694602A (en) 1996-10-01 1997-12-02 The United States Of America As Represented By The Secretary Of The Air Force Weighted system and method for spatial allocation of a parallel load
US5832288A (en) 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
US5901279A (en) 1996-10-18 1999-05-04 Hughes Electronics Corporation Connection of spares between multiple programmable devices
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5844422A (en) 1996-11-13 1998-12-01 Xilinx, Inc. State saving and restoration in reprogrammable FPGAs
US5860119A (en) 1996-11-25 1999-01-12 Vlsi Technology, Inc. Data-packet fifo buffer system with end-of-packet flags
US6005410A (en) 1996-12-05 1999-12-21 International Business Machines Corporation Interconnect structure between heterogeneous core regions in a programmable array
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
US6338106B1 (en) 1996-12-20 2002-01-08 Pact Gmbh I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654593A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
DE19654846A1 (de) 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
US6427156B1 (en) 1997-01-21 2002-07-30 Xilinx, Inc. Configurable logic block with AND gate for efficient multiplication in FPGAS
EP0858167A1 (en) 1997-01-29 1998-08-12 Hewlett-Packard Company Field programmable processor device
EP0858168A1 (en) 1997-01-29 1998-08-12 Hewlett-Packard Company Field programmable processor array
DE19704044A1 (de) 1997-02-04 1998-08-13 Pact Inf Tech Gmbh Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine
US5865239A (en) 1997-02-05 1999-02-02 Micropump, Inc. Method for making herringbone gears
US6055619A (en) 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704728A1 (de) 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
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
US6150837A (en) 1997-02-28 2000-11-21 Actel Corporation Enhanced field programmable gate array
US5927423A (en) 1997-03-05 1999-07-27 Massachusetts Institute Of Technology Reconfigurable footprint mechanism for omnidirectional vehicles
US5857097A (en) 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
US5884075A (en) 1997-03-10 1999-03-16 Compaq Computer Corporation Conflict resolution using self-contained virtual devices
US6125408A (en) 1997-03-10 2000-09-26 Compaq Computer Corporation Resource type prioritization in generating a device configuration
US6085317A (en) 1997-08-15 2000-07-04 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US6272257B1 (en) 1997-04-30 2001-08-07 Canon Kabushiki Kaisha Decoder of variable length codes
AUPO647997A0 (en) 1997-04-30 1997-05-22 Canon Information Systems Research Australia Pty Ltd Memory controller architecture
US6389379B1 (en) 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6321366B1 (en) 1997-05-02 2001-11-20 Axis Systems, Inc. Timing-insensitive glitch-free logic system and method
US6035371A (en) 1997-05-28 2000-03-07 3Com Corporation Method and apparatus for addressing a static random access memory device based on signals for addressing a dynamic memory access device
US6047115A (en) 1997-05-29 2000-04-04 Xilinx, Inc. Method for configuring FPGA memory planes for virtual hardware computation
US6421817B1 (en) 1997-05-29 2002-07-16 Xilinx, Inc. System and method of computation in a programmable logic device using virtual instructions
US6339840B1 (en) 1997-06-02 2002-01-15 Iowa State University Research Foundation, Inc. Apparatus and method for parallelizing legacy computer code
US6011407A (en) 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US5996048A (en) 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US5838988A (en) 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US6240502B1 (en) 1997-06-25 2001-05-29 Sun Microsystems, Inc. Apparatus for dynamically reconfiguring a processor
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6437441B1 (en) 1997-07-10 2002-08-20 Kawasaki Microelectronics, Inc. Wiring structure of a semiconductor integrated circuit and a method of forming the wiring structure
US6020760A (en) 1997-07-16 2000-02-01 Altera Corporation I/O buffer circuit with pin multiplexing
US6282701B1 (en) 1997-07-31 2001-08-28 Mutek Solutions, Ltd. System and method for monitoring and analyzing the execution of computer programs
US6170051B1 (en) 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6078736A (en) 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US6038656A (en) 1997-09-12 2000-03-14 California Institute Of Technology Pipelined completion for asynchronous communication
JP3612186B2 (ja) 1997-09-19 2005-01-19 株式会社ルネサステクノロジ データ処理装置
US6539415B1 (en) 1997-09-24 2003-03-25 Sony Corporation Method and apparatus for the allocation of audio/video tasks in a network system
US5966143A (en) 1997-10-14 1999-10-12 Motorola, Inc. Data allocation into multiple memories for concurrent access
SG82587A1 (en) 1997-10-21 2001-08-21 Sony Corp Recording apparatus, recording method, playback apparatus, playback method, recording/playback apparatus, recording/playback method, presentation medium and recording medium
JP4128251B2 (ja) 1997-10-23 2008-07-30 富士通株式会社 配線密度予測方法およびセル配置装置
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6247147B1 (en) 1997-10-27 2001-06-12 Altera Corporation Enhanced embedded logic analyzer
US6122719A (en) 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US6108760A (en) 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US5915123A (en) 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6127908A (en) 1997-11-17 2000-10-03 Massachusetts Institute Of Technology Microelectro-mechanical system actuator device and reconfigurable circuits utilizing same
JP4197755B2 (ja) 1997-11-19 2008-12-17 富士通株式会社 信号伝送システム、該信号伝送システムのレシーバ回路、および、該信号伝送システムが適用される半導体記憶装置
US6212650B1 (en) 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US6128724A (en) * 1997-12-11 2000-10-03 Leland Stanford Junior University Computation using codes for controlling configurable computational circuit
US6091263A (en) 1997-12-12 2000-07-18 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
WO1999031574A1 (en) 1997-12-17 1999-06-24 Hewlett-Packard Company Implementation of multipliers in programmable arrays
DE69841256D1 (de) 1997-12-17 2009-12-10 Panasonic Corp Befehlsmaskierung um Befehlsströme einem Prozessor zuzuleiten
EP0926594B1 (en) 1997-12-17 2007-05-23 Hewlett-Packard Company, A Delaware Corporation Method of using primary and secondary processors
DE69827589T2 (de) 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6260114B1 (en) 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6049222A (en) 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
US6172520B1 (en) 1997-12-30 2001-01-09 Xilinx, Inc. FPGA system with user-programmable configuration ports and method for reconfiguring the FPGA
US6301706B1 (en) 1997-12-31 2001-10-09 Elbrus International Limited Compiler method and apparatus for elimination of redundant speculative computations from innermost loops
US6105106A (en) 1997-12-31 2000-08-15 Micron Technology, Inc. Computer system, memory device and shift register including a balanced switching circuit with series connected transfer gates which are selectively clocked for fast switching times
US6216223B1 (en) 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6034538A (en) 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
US6389579B1 (en) 1998-01-26 2002-05-14 Chameleon Systems Reconfigurable logic for table lookup
US6230307B1 (en) 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
DE69919059T2 (de) 1998-02-04 2005-01-27 Texas Instruments Inc., Dallas Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren
US7152027B2 (en) 1998-02-17 2006-12-19 National Instruments Corporation Reconfigurable test system
US6086628A (en) 1998-02-17 2000-07-11 Lucent Technologies Inc. Power-related hardware-software co-synthesis of heterogeneous distributed embedded systems
US6198304B1 (en) 1998-02-23 2001-03-06 Xilinx, Inc. Programmable logic device
US6096091A (en) 1998-02-24 2000-08-01 Advanced Micro Devices, Inc. Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip
DE19807872A1 (de) 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
FR2776093A1 (fr) * 1998-03-10 1999-09-17 Philips Electronics Nv Circuit processeur programmable muni d'une memoire reconfigurable, pour realiser un filtre numerique
US6298043B1 (en) 1998-03-28 2001-10-02 Nortel Networks Limited Communication system architecture and a connection verification mechanism therefor
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6421808B1 (en) 1998-04-24 2002-07-16 Cadance Design Systems, Inc. Hardware design language for the design of integrated circuits
US6084429A (en) 1998-04-24 2000-07-04 Xilinx, Inc. PLD having a window pane architecture with segmented and staggered interconnect wiring between logic block arrays
US6173419B1 (en) 1998-05-14 2001-01-09 Advanced Technology Materials, Inc. Field programmable gate array (FPGA) emulator for debugging software
US6449283B1 (en) 1998-05-15 2002-09-10 Polytechnic University Methods and apparatus for providing a fast ring reservation arbitration
US5999990A (en) 1998-05-18 1999-12-07 Motorola, Inc. Communicator having reconfigurable resources
US6092174A (en) 1998-06-01 2000-07-18 Context, Inc. Dynamically reconfigurable distributed integrated circuit processor and method
US6298396B1 (en) 1998-06-01 2001-10-02 Advanced Micro Devices, Inc. System for loading a current buffer desciptor register with a value different from current value to cause a previously read buffer descriptor to be read again
JP3123977B2 (ja) 1998-06-04 2001-01-15 日本電気株式会社 プログラマブル機能ブロック
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6202182B1 (en) 1998-06-30 2001-03-13 Lucent Technologies Inc. Method and apparatus for testing field programmable gate arrays
EP0978944B1 (en) 1998-07-06 2002-01-02 Hewlett-Packard Company, A Delaware Corporation Wiring of cells in logic arrays
US6609088B1 (en) 1998-07-24 2003-08-19 Interuniversitaire Micro-Elektronica Centrum Method for determining an optimized memory organization of a digital device
US6137307A (en) 1998-08-04 2000-10-24 Xilinx, Inc. Structure and method for loading wide frames of data from a narrow input bus
DE19835189C2 (de) 1998-08-04 2001-02-08 Unicor Rohrsysteme Gmbh Vorrichtung zur kontinuierlichen Herstellung von nahtlosen Kunststoffrohren
US20020152060A1 (en) 1998-08-31 2002-10-17 Tseng Ping-Sheng Inter-chip communication system
JP2000076066A (ja) 1998-09-02 2000-03-14 Fujitsu Ltd 信号処理回路
US7100026B2 (en) 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6205458B1 (en) 1998-09-21 2001-03-20 Rn2R, L.L.C. Adder and multiplier circuits employing logic gates having discrete, weighted inputs and methods of performing combinatorial operations therewith
US6421757B1 (en) * 1998-09-30 2002-07-16 Conexant Systems, Inc Method and apparatus for controlling the programming and erasing of flash memory
JP3551353B2 (ja) 1998-10-02 2004-08-04 株式会社日立製作所 データ再配置方法
US6215326B1 (en) 1998-11-18 2001-04-10 Altera Corporation Programmable logic device architecture with super-regions having logic regions and a memory region
EP1138001B1 (en) 1998-11-20 2003-08-27 Altera Corporation Reconfigurable programmable logic device computer system
US6977649B1 (en) 1998-11-23 2005-12-20 3Dlabs, Inc. Ltd 3D graphics rendering with selective read suspend
JP2000181566A (ja) 1998-12-14 2000-06-30 Mitsubishi Electric Corp マルチクロック並列処理装置
US6044030A (en) 1998-12-21 2000-03-28 Philips Electronics North America Corporation FIFO unit with single pointer
US6434695B1 (en) 1998-12-23 2002-08-13 Apple Computer, Inc. Computer operating system using compressed ROM image in RAM
US6757847B1 (en) 1998-12-29 2004-06-29 International Business Machines Corporation Synchronization for system analysis
US6496902B1 (en) 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
JP3585800B2 (ja) 1999-01-13 2004-11-04 株式会社東芝 情報処理装置
US6539438B1 (en) 1999-01-15 2003-03-25 Quickflex Inc. Reconfigurable computing system and method and apparatus employing same
US6490695B1 (en) 1999-01-22 2002-12-03 Sun Microsystems, Inc. Platform independent memory image analysis architecture for debugging a computer program
US6321298B1 (en) 1999-01-25 2001-11-20 International Business Machines Corporation Full cache coherency across multiple raid controllers
DE10028397A1 (de) 2000-06-13 2001-12-20 Pact Inf Tech Gmbh Registrierverfahren
US6243808B1 (en) 1999-03-08 2001-06-05 Chameleon Systems, Inc. Digital data bit order conversion using universal switch matrix comprising rows of bit swapping selector groups
US6512804B1 (en) 1999-04-07 2003-01-28 Applied Micro Circuits Corporation Apparatus and method for multiple serial data synchronization using channel-lock FIFO buffers optimized for jitter
US6286134B1 (en) 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
JP2000311156A (ja) 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
US6381624B1 (en) 1999-04-29 2002-04-30 Hewlett-Packard Company Faster multiply/accumulator
US6298472B1 (en) 1999-05-07 2001-10-02 Chameleon Systems, Inc. Behavioral silicon construct architecture and mapping
US7007096B1 (en) 1999-05-12 2006-02-28 Microsoft Corporation Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US6748440B1 (en) 1999-05-12 2004-06-08 Microsoft Corporation Flow of streaming data through multiple processing modules
US6211697B1 (en) 1999-05-25 2001-04-03 Actel Integrated circuit that includes a field-programmable gate array and a hard gate array having the same underlying structure
DE19926538A1 (de) 1999-06-10 2000-12-14 Pact Inf Tech Gmbh Hardware und Betriebsverfahren
EP1061439A1 (en) 1999-06-15 2000-12-20 Hewlett-Packard Company Memory and instructions in computer architecture containing processor and coprocessor
US6757892B1 (en) 1999-06-24 2004-06-29 Sarnoff Corporation Method for determining an optimal partitioning of data among several memories
JP3420121B2 (ja) 1999-06-30 2003-06-23 Necエレクトロニクス株式会社 不揮発性半導体記憶装置
US6347346B1 (en) 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
GB2352548B (en) 1999-07-26 2001-06-06 Sun Microsystems Inc Method and apparatus for executing standard functions in a computer system
US6745317B1 (en) 1999-07-30 2004-06-01 Broadcom Corporation Three level direct communication connections between neighboring multiple context processing elements
US6370596B1 (en) 1999-08-03 2002-04-09 Chameleon Systems, Inc. Logic flag registers for monitoring processing system events
US6341318B1 (en) 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
US6204687B1 (en) 1999-08-13 2001-03-20 Xilinx, Inc. Method and structure for configuring FPGAS
US6438747B1 (en) 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
US6507947B1 (en) 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
US6606704B1 (en) 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6311200B1 (en) 1999-09-23 2001-10-30 Chameleon Systems, Inc. Reconfigurable program sum of products generator
US6288566B1 (en) 1999-09-23 2001-09-11 Chameleon Systems, Inc. Configuration state memory for functional blocks on a reconfigurable chip
US6349346B1 (en) 1999-09-23 2002-02-19 Chameleon Systems, Inc. Control fabric unit including associated configuration memory and PSOP state machine adapted to provide configuration address to reconfigurable functional unit
US6631487B1 (en) 1999-09-27 2003-10-07 Lattice Semiconductor Corp. On-line testing of field programmable gate array resources
DE19946752A1 (de) 1999-09-29 2001-04-12 Infineon Technologies Ag Rekonfigurierbares Gate-Array
US6412043B1 (en) 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6598128B1 (en) 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6665758B1 (en) 1999-10-04 2003-12-16 Ncr Corporation Software sanity monitor
US6434642B1 (en) 1999-10-07 2002-08-13 Xilinx, Inc. FIFO memory system and method with improved determination of full and empty conditions and amount of data stored
WO2001037083A2 (en) * 1999-11-18 2001-05-25 Sun Microsystems, Inc. Decompression bit processing with a general purpose alignment tool
JP2001167066A (ja) 1999-12-08 2001-06-22 Nec Corp プロセッサ間通信方法及びマルチプロセッサシステム
US6625654B1 (en) 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6633181B1 (en) 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array
DE60138145D1 (de) 2000-01-07 2009-05-07 Nippon Telegraph & Telephone Funktionsrekonfigurierbare Halbleitervorrichtung und integrierte Schaltung zum Konfigurieren der Halbleitervorrichtung
JP2001202236A (ja) 2000-01-20 2001-07-27 Fuji Xerox Co Ltd プログラマブル論理回路装置によるデータ処理方法、プログラマブル論理回路装置、情報処理システム、プログラマブル論理回路装置への回路再構成方法
US6701431B2 (en) 2000-01-28 2004-03-02 Infineon Technologies Ag Method of generating a configuration for a configurable spread spectrum communication device
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US6487709B1 (en) 2000-02-09 2002-11-26 Xilinx, Inc. Run-time routing for programmable logic devices
US6519674B1 (en) 2000-02-18 2003-02-11 Chameleon Systems, Inc. Configuration bits layout
JP2001236221A (ja) 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
WO2001063434A1 (en) 2000-02-24 2001-08-30 Bops, Incorporated Methods and apparatus for dual-use coprocessing/debug interface
JP3674515B2 (ja) 2000-02-25 2005-07-20 日本電気株式会社 アレイ型プロセッサ
US6434672B1 (en) 2000-02-29 2002-08-13 Hewlett-Packard Company Methods and apparatus for improving system performance with a shared cache memory
US6539477B1 (en) 2000-03-03 2003-03-25 Chameleon Systems, Inc. System and method for control synthesis using a reachable states look-up table
KR100841411B1 (ko) 2000-03-14 2008-06-25 소니 가부시끼 가이샤 전송장치, 수신장치, 전송방법, 수신방법과 기록매체
US6657457B1 (en) 2000-03-15 2003-12-02 Intel Corporation Data transfer on reconfigurable chip
US6871341B1 (en) 2000-03-24 2005-03-22 Intel Corporation Adaptive scheduling of function cells in dynamic reconfigurable logic
US6624819B1 (en) 2000-05-01 2003-09-23 Broadcom Corporation Method and system for providing a flexible and efficient processor for use in a graphics processing system
US6362650B1 (en) 2000-05-18 2002-03-26 Xilinx, Inc. Method and apparatus for incorporating a multiplier into an FPGA
US6373779B1 (en) 2000-05-19 2002-04-16 Xilinx, Inc. Block RAM having multiple configurable write modes for use in a field programmable gate array
US6725334B2 (en) 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US7340596B1 (en) 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
ATE476700T1 (de) 2000-06-13 2010-08-15 Richter Thomas Pipeline ct-protokolle und -kommunikation
US6285624B1 (en) 2000-07-08 2001-09-04 Han-Ping Chen Multilevel memory access method
DE10129237A1 (de) 2000-10-09 2002-04-18 Pact Inf Tech Gmbh Verfahren zur Bearbeitung von Daten
DE10036627A1 (de) 2000-07-24 2002-02-14 Pact Inf Tech Gmbh Integrierter Schaltkreis
JP2002041489A (ja) 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
US6538468B1 (en) 2000-07-31 2003-03-25 Cypress Semiconductor Corporation Method and apparatus for multiple boot-up functionalities for a programmable logic device (PLD)
US6542844B1 (en) 2000-08-02 2003-04-01 International Business Machines Corporation Method and apparatus for tracing hardware states using dynamically reconfigurable test circuits
AU2001283549A1 (en) 2000-08-07 2002-02-18 Altera Corporation Software-to-hardware compiler
US6754805B1 (en) 2000-08-07 2004-06-22 Transwitch Corporation Method and apparatus for configurable multi-cell digital signal processing employing global parallel configuration
EP1182559B1 (en) 2000-08-21 2009-01-21 Texas Instruments Incorporated Improved microprocessor
US7249351B1 (en) 2000-08-30 2007-07-24 Broadcom Corporation System and method for preparing software for execution in a dynamically configurable hardware environment
US6829697B1 (en) 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US6538470B1 (en) 2000-09-18 2003-03-25 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US7346644B1 (en) 2000-09-18 2008-03-18 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US6518787B1 (en) 2000-09-21 2003-02-11 Triscend Corporation Input/output architecture for efficient configuration of programmable input/output cells
AU2002220600A1 (en) 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
US6525678B1 (en) 2000-10-06 2003-02-25 Altera Corporation Configuring a programmable logic device
US20040015899A1 (en) 2000-10-06 2004-01-22 Frank May Method for processing data
US20020045952A1 (en) 2000-10-12 2002-04-18 Blemel Kenneth G. High performance hybrid micro-computer
US6398383B1 (en) 2000-10-30 2002-06-04 Yu-Hwei Huang Flashlight carriable on one's person
JP3636986B2 (ja) 2000-12-06 2005-04-06 松下電器産業株式会社 半導体集積回路
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
JP4022147B2 (ja) 2000-12-20 2007-12-12 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 設定可能な機能ユニットを備えるデータ処理装置
US6483343B1 (en) 2000-12-29 2002-11-19 Quicklogic Corporation Configurable computational unit embedded in a programmable device
US6426649B1 (en) 2000-12-29 2002-07-30 Quicklogic Corporation Architecture for field programmable gate array
US6392912B1 (en) 2001-01-10 2002-05-21 Chameleon Systems, Inc. Loading data plane on reconfigurable chip
US7020673B2 (en) 2001-01-19 2006-03-28 Sony Corporation Reconfigurable arithmetic device and arithmetic system including that arithmetic device and address generation device and interleave device applicable to arithmetic system
US20020099759A1 (en) 2001-01-24 2002-07-25 Gootherts Paul David Load balancer with starvation avoidance
US6633242B2 (en) * 2001-02-08 2003-10-14 Sun Microsystems, Inc. Entropy coding using adaptable prefix codes
US6847370B2 (en) 2001-02-20 2005-01-25 3D Labs, Inc., Ltd. Planar byte memory organization with linear access
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7210129B2 (en) 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
GB2373595B (en) * 2001-03-15 2005-09-07 Italtel Spa A system of distributed microprocessor interfaces toward macro-cell based designs implemented as ASIC or FPGA bread boarding and relative common bus protocol
US7325123B2 (en) * 2001-03-22 2008-01-29 Qst Holdings, Llc Hierarchical interconnect for configuring separate interconnects for each group of fixed and diverse computational elements
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
US20020143505A1 (en) 2001-04-02 2002-10-03 Doron Drusinsky Implementing a finite state machine using concurrent finite state machines with delayed communications and no shared control signals
US6792588B2 (en) 2001-04-02 2004-09-14 Intel Corporation Faster scalable floorplan which enables easier data control flow
US20030086300A1 (en) 2001-04-06 2003-05-08 Gareth Noyes FPGA coprocessing system
US6836842B1 (en) 2001-04-24 2004-12-28 Xilinx, Inc. Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD
US6999984B2 (en) 2001-05-02 2006-02-14 Intel Corporation Modification to reconfigurable functional unit in a reconfigurable chip to perform linear feedback shift register function
US6802026B1 (en) 2001-05-15 2004-10-05 Xilinx, Inc. Parameterizable and reconfigurable debugger core generators
US6976239B1 (en) 2001-06-12 2005-12-13 Altera Corporation Methods and apparatus for implementing parameterizable processors and peripherals
JP2004533691A (ja) 2001-06-20 2004-11-04 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト データを処理するための方法
JP3580785B2 (ja) 2001-06-29 2004-10-27 株式会社半導体理工学研究センター ルックアップテーブル、ルックアップテーブルを備えるプログラマブル論理回路装置、および、ルックアップテーブルの構成方法
US7043416B1 (en) 2001-07-27 2006-05-09 Lsi Logic Corporation System and method for state restoration in a diagnostic module for a high-speed microprocessor
US7383421B2 (en) 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7036114B2 (en) 2001-08-17 2006-04-25 Sun Microsystems, Inc. Method and apparatus for cycle-based computation
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US6874108B1 (en) 2001-08-27 2005-03-29 Agere Systems Inc. Fault tolerant operation of reconfigurable devices utilizing an adjustable system clock
US20030056091A1 (en) 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US7472230B2 (en) 2001-09-14 2008-12-30 Hewlett-Packard Development Company, L.P. Preemptive write back controller
US20030055861A1 (en) 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip
US20030052711A1 (en) 2001-09-19 2003-03-20 Taylor Bradley L. Despreader/correlator unit for use in reconfigurable chip
US6854073B2 (en) 2001-09-25 2005-02-08 International Business Machines Corporation Debugger program time monitor
US6625631B2 (en) * 2001-09-28 2003-09-23 Intel Corporation Component reduction in montgomery multiplier processing element
US6798239B2 (en) 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
US7000161B1 (en) 2001-10-15 2006-02-14 Altera Corporation Reconfigurable programmable logic system with configuration recovery mode
WO2003044962A2 (en) 2001-11-16 2003-05-30 Morpho Technologies Viterbi convolutional coding method and apparatus
US6886092B1 (en) 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
US6668237B1 (en) 2002-01-17 2003-12-23 Xilinx, Inc. Run-time reconfigurable testing of programmable logic devices
US20030154349A1 (en) 2002-01-24 2003-08-14 Berg Stefan G. Program-directed cache prefetching for media processors
US6476634B1 (en) 2002-02-01 2002-11-05 Xilinx, Inc. ALU implementation in single PLD logic cell
DE10204044A1 (de) 2002-02-01 2003-08-14 Tridonicatco Gmbh & Co Kg Elektronisches Vorschaltgerät für Gasentladungslampe
US6961924B2 (en) 2002-05-21 2005-11-01 International Business Machines Corporation Displaying variable usage while debugging
WO2005010632A2 (en) 2003-06-17 2005-02-03 Pact Xpp Technologies Ag Data processing device and method
US6865662B2 (en) * 2002-08-08 2005-03-08 Faraday Technology Corp. Controlling VLIW instruction operations supply to functional units using switches based on condition head field
US6976131B2 (en) 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US6803787B1 (en) 2002-09-25 2004-10-12 Lattice Semiconductor Corp. State machine in a programmable logic device
US7873811B1 (en) 2003-03-10 2011-01-18 The United States Of America As Represented By The United States Department Of Energy Polymorphous computing fabric
US7412581B2 (en) 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
US7472155B2 (en) 2003-12-29 2008-12-30 Xilinx, Inc. Programmable logic device with cascading DSP slices
US7870182B2 (en) 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7840627B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US8495122B2 (en) 2003-12-29 2013-07-23 Xilinx, Inc. Programmable device with dynamic DSP architecture
US7567997B2 (en) 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US7038952B1 (en) 2004-05-04 2006-05-02 Xilinx, Inc. Block RAM with embedded FIFO buffer
US7759968B1 (en) 2006-09-27 2010-07-20 Xilinx, Inc. Method of and system for verifying configuration data
DE102006054052B4 (de) 2006-11-16 2018-11-29 Siemens Aktiengesellschaft Drehübertrager
US7971051B2 (en) 2007-09-27 2011-06-28 Fujitsu Limited FPGA configuration protection and control using hardware watchdog timer
US20090193384A1 (en) 2008-01-25 2009-07-30 Mihai Sima Shift-enabled reconfigurable device
WO2009094862A1 (fr) 2008-01-29 2009-08-06 Jiangsu Super-Power Machinery Co., Lt Compresseur rotatif
JP2010277303A (ja) 2009-05-28 2010-12-09 Renesas Electronics Corp 半導体装置及び異常検出方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01501671A (ja) * 1986-11-07 1989-06-08 コンカーレント・ロジック・インコーポレーテッド プログラム可能なロジック・セルおよびアレイ
JPH0369138A (ja) * 1989-05-02 1991-03-25 Tandem Comput Inc 線形配列ウェーハ規模集積回路アーキテクチャ
JPH05119964A (ja) * 1991-04-02 1993-05-18 American Teleph & Telegr Co <Att> 配置可能機能エレメント
JP2001510650A (ja) * 1996-12-27 2001-07-31 ペーアーツェーテー インフォルマツィオーンステヒノロギー ゲゼルシャフト ミット ベシュレンクテル ハフツング データフロープロセッサ(dfp)の自動的なダイナミックアンロード方法並びに2次元または3次元のプログラミング可能なセルストラクチャを有するモジュール(fpga,dpga等)
JP2002033457A (ja) * 2000-07-18 2002-01-31 Hitachi Ltd 半導体集積回路装置
WO2002071196A2 (de) * 2001-03-05 2002-09-12 Pact Informationstechnologie Gmbh Verfahren und vorrichtung zu datenbe- und/oder verarbeitung

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009027324A (ja) * 2007-07-18 2009-02-05 Fuji Xerox Co Ltd 演算処理装置及び演算処理プログラム
JP2010002986A (ja) * 2008-06-18 2010-01-07 Nec Corp 再構成可能電子回路装置

Also Published As

Publication number Publication date
JP4700611B2 (ja) 2011-06-15
US20140359255A1 (en) 2014-12-04
WO2005045692A2 (en) 2005-05-19
US20100241823A1 (en) 2010-09-23
US8812820B2 (en) 2014-08-19
EP1676208A2 (en) 2006-07-05
US20090172351A1 (en) 2009-07-02
WO2005045692A3 (en) 2006-03-02

Similar Documents

Publication Publication Date Title
JP4700611B2 (ja) データ処理装置およびデータ処理方法
US8145881B2 (en) Data processing device and method
Baumgarte et al. PACT XPP—A self-reconfigurable data processing architecture
Mai et al. Smart memories: A modular reconfigurable architecture
Jacob et al. Memory interfacing and instruction specification for reconfigurable processors
US5301340A (en) IC chips including ALUs and identical register files whereby a number of ALUs directly and concurrently write results to every register file per cycle
Lodi et al. A VLIW processor with reconfigurable instruction set for embedded applications
US8230408B2 (en) Execution of hardware description language (HDL) programs
Enzler et al. Virtualizing hardware with multi-context reconfigurable arrays
JP5762440B2 (ja) 高効率の埋め込み型均一マルチコアプラットフォーム用のタイルベースのプロセッサアーキテクチャーモデル
WO2005045692A9 (en) Data processing device and method
Nguyen et al. Fifer: Practical acceleration of irregular applications on reconfigurable architectures
US20090119484A1 (en) Method and Apparatus for Implementing Digital Logic Circuitry
Gohringer et al. Runtime adaptive multi-processor system-on-chip: RAMPSoC
Hartenstein et al. On reconfgurable co-processing units
Smit et al. The chameleon architecture for streaming DSP applications
US9003168B1 (en) Control system for resource selection between or among conjoined-cores
Balfour Efficient embedded computing
Rettkowski et al. Application-specific processing using high-level synthesis for networks-on-chip
Poznanovic The emergence of non-von neumann processors
Gurumani et al. Integrated CUDA-to-FPGA synthesis with Network-on-Chip
Tse et al. NanoMesh: An asynchronous kilo-core system-on-chip
Cathey et al. A reconfigurable distributed computing fabric exploiting multilevel parallelism
Fell et al. Streaming FFT on REDEFINE-v2: An application-architecture design space exploration
Walstock Pipelining streaming applications on a multi-core CGRA

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070727

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100225

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100415

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100712

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100720

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100812

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100819

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20100913

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20100921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101112

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20101228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110112

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110204

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110304

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees