JP4391935B2 - 散在しているプロセッサと通信要素を備える処理システム - Google Patents

散在しているプロセッサと通信要素を備える処理システム Download PDF

Info

Publication number
JP4391935B2
JP4391935B2 JP2004517818A JP2004517818A JP4391935B2 JP 4391935 B2 JP4391935 B2 JP 4391935B2 JP 2004517818 A JP2004517818 A JP 2004517818A JP 2004517818 A JP2004517818 A JP 2004517818A JP 4391935 B2 JP4391935 B2 JP 4391935B2
Authority
JP
Japan
Prior art keywords
data
dynamically configurable
processors
transfer
communication
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.)
Expired - Lifetime
Application number
JP2004517818A
Other languages
English (en)
Other versions
JP2005531089A (ja
Inventor
ドエー,マイケル・ビイ
ハリディ,ウィリアム・エイチ
ギブソン,デイビッド・エイ
チェイス,クレイグ・エム
Original Assignee
コーヒレント・ロジックス・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by コーヒレント・ロジックス・インコーポレーテッド filed Critical コーヒレント・ロジックス・インコーポレーテッド
Publication of JP2005531089A publication Critical patent/JP2005531089A/ja
Application granted granted Critical
Publication of JP4391935B2 publication Critical patent/JP4391935B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

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
    • 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
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Multi Processors (AREA)
  • Logic Circuits (AREA)
  • Exchange Systems With Centralized Control (AREA)

Description

本発明は、コンピュータ・システムに関し、より詳細には、パラレル・プロセッサ・システムに関する。
レーダ、ソナー、ビデオ、映画、医用画像処理、通信などの応用分野では、複数の複合信号を高速に処理する必要があるため、並列計算が必要とされる。さらに、並列計算は計算処理効率を高め、逐次計算手法のいくつかの限界を克服することができる。システムの能力は、所定のコストまたは物理的サイズに対する性能を測定基準として記述することができる。当初、コンピュータの性能を測定する単位として重要なのは、1秒当たりの計算回数であった。電池式機器の利用が増えるにつれ、エネルギー単位当たりの計算性能が好ましい測定単位として使用されることが多くなってきている。
高性能計算を実現する従来手法は以下のとおりである。
1.汎用マイクロコンピュータ(GPMC)。GPMC(Intel社のPentium製品ラインや、Motorola社とIBM社のPowerPCシリーズ)は、これまで待ち時間を代償に処理効率の最大化を進めてきた。待ち時間とは、1回のオペレーションに対するデータ入力からデータ出力までのGPMCチップ内の遅延時間のことである。データはチップ内を出入りする他のデータとひとまとめにされ、オペレーションは他のオペレーションの多数の処理段とともに1つのパイプラインに埋め込まれるため、待ち時間は長くなる。ほとんどすべてのコンピュータはメモリ階層を有し、例えば、階層最上位に少量の高速SRAMレジスタ、階層中位に比較的低速な中程度の量のシステム・メモリ、階層最下位に大量のかなり低速なディスク・ドライブを使用する記憶装置を配する。GPMCでは、各プロセッサは、データ用のレジスタ・ファイル、命令発行ユニット、レベル1(L1)キャッシュを備えていることが多い。L1キャッシュは、命令とデータとに分割することも、また1つにすることもできる。ほとんどのコンピュータ・プログラムでは参照に局所性があるため、つまり、次に実行されるオペレーションは最後に参照されたメモリ・ロケーション付近のメモリ・ロケーションを参照する傾向があるため、キャッシュを使用すると性能が向上する。レベル2(L2)キャッシュは、通常、メイン・メモリ(大容量、低速、安価なダイナミックRAMチップ)とインターフェースする必要がある。多くのGPMCチップは、複数の実行ユニットを通じて単一命令複数データ(SIMD)並列処理をサポートし、最も大きなチップのうちいくつかは、MIMD動作の複数の命令ストリームをサポートする。複数の実行ユニットを有するGPMCでは、L2キャッシュは、通常、実行ユニット間で共有されるが、何らかの「キャッシュ・コヒーレンス」方式によりこの共有メモリへの書き込み時のデータの喪失を防止する。L3キャッシュは、メイン・メモリが比較的かなり遅い場合に使用される。同じチップ上にメモリおよびI/Oチャネル用のコントローラを追加集積化することができる。GPMCのプログラム機能は汎用的であり大市場向けであるので、大量生産し、安い単位原価で販売できる。GPMCおよびキャッシュとパイプラインの複合体の欠点は、消費電力が比較的大きいこと、データがCPUに入った時点から結果が出力されるまでの待ち時間が前述のように比較的長いという点である。
2.デジタル・シグナル・プロセッサ(DSP)。DSPは、ALUが固定小数点数を使用するのか、浮動小数点数を使用するのか、またICチップ1個当たりのALUの個数により、いくつかの種類に分類することができる。DSPのオペレーション1回当たりの消費電力は、通常、GPMCに比べて小さいが、それは、専用命令を使って信号処理を効率よく行えるからである。DSPは、比較するとキャッシュ・レイヤが少なく、パイプラインが短いため、所定のオペレーションについてGPMCよりも待ち時間が短い。GPMC内の自動/推測的並列実行に比べて、命令ワードは長く、明示的並列実行が可能である。高性能DSP実装では、複数の実行ユニットによる並列処理をサポートすることができ、一般に、DSPはGPMCに比べてサポート・チップが少なくて済む。DSP向けの大市場では、大量生産しコストを低くできる。DSP市場には、固定小数点算術演算のみを実行するICだけでなく、固定小数点演算と浮動小数点演算の両方をサポートするICについても需要がある。DSPの欠点は、プログラミングがより難しいことと、特定の種類のアルゴリズムについては性能が劣るという点が挙げられる。
3.フィールド・プログラマブル・ゲート・アレイ(FPGA)。FPGAはデジタルICであり、ウェハ加工時にプログラムまたはカスタマイズするのではなく、「現場」でユーザがプログラムまたはカスタマイズすることができる。FPGAは、含まれる論理ゲートの個数で分類され、最近の最も大きなバージョンでは、IC上のALUとメモリの個数で分類することができる。理論的には、すべてのFPGA ALUは、SIMDまたはMIMDまたは混合制御の理論的枠組みに従って並列計算できる。FPGAのカスタマイズは、DSP/GPMCをプログラムするのと似ているが、目的のプログラムに到達するのはそれらに比べて難しく、一般に、論理設計に精通している技術者と専用の設計自動化ツールを必要とする。しかし、消費電力よりも速度が重視される場合には、FPGAのほうがDSP/GPMCよりも高速な処理になることが多い。大量生産されるとはいえ、大きなFPGAは、同じゲート数のGPMCチップより数倍高価である。
4.特定用途向け集積回路(ASIC)。ASICは、フルカスタムの回路からライブラリ・モジュールの階層別集積化にいたる特定の回路レイアウトを設計することにより特定のアプリケーションに合わせてカスタマイズされる。ライブラリ・モジュールは、個別論理ゲートとI/Oセルからメモリ・アレイやマイクロプロセッサ・コアに及ぶ可能性がある。ASICハードウェアはアプリケーションに必要なアルゴリズムに合わせて手直しされるため、性能はGPMC/DSP/FPGA手法よりも高くなる可能性がある。また、速度についても、コンフィギュレーション回路をなくすことができるためFPGAよりも高速にすることができ、寄生容量の低いよりコンパクトなレイアウトにできる。ASICの開発コストは、他の手法に比べてかなり高く、数百万ドルから数千万ドルに達する(そして、複合ビデオ・チップであればさらに高い)。高い開発費の元を取るために、特定の設計のチップを数百万個は販売する必要があるであろう。
要約書で考察されている並列プロセッサ・コンピュータは、プロセッサ、メモリ、相互接続ネットワーク(IN)で構成されている。これらのコンポーネントは、これまで、並列プロセッサ・コンピューティングに関する文献で説明されている、多くの異なるトポロジによる組み合わせであった。これらのコンポーネントはすべて、内部遅延のため待ち時間が生じ、これらの待ち時間は、コンポーネントのサイズやそのコンポーネントの入力/出力ポートの個数とともに長くなる。INとメモリの平均待ち時間は、システムに追加されるプロセッサとメモリが増えるほど長くなる。
多くの並列プロセッサ・アレイには、相互接続ネットワークを使用して複数のプロセッサ間で共有される大規模メモリがある。性能上の理由から、共有メモリは、通常、スタンドアロン・プロセッサ・システムのL2キャッシュに類似している。次に高いレベルの(つまり、より高速な)キャッシュ、またはL1キャッシュは、多くの場合、並列アレイの各プロセッサに対しプライベートかつローカルである。その後、プロセッサ内には、通常、データ用のレジスタ・ファイルと命令用の独立のキャッシュがある。このような並列アーキテクチャでは、2つ以上のプロセッサが同じタスクを実行している場合にいくつかの問題が生じる。データの大きなベクトルを伝達するためには、一方のプロセッサはL1キャッシュからL2キャッシュへライト・スルーしてから、フラグをセットしなければならない(L2キャッシュでも)。第2のプロセッサは、値が変化したことを検出するまでフラグを連続的に読み出し、検出したら、データ・ベクトルをL1キャッシュに読み込んでそれを操作する必要がある。したがって、新しく計算した結果については、通信速度はL2キャッシュの速度により設定されるので、プロセッサの増加に合わせてL2の容量を増やすと速度は低下する。L2キャッシュの帯域幅と待ち時間は両方とも、容量増大の悪影響を受ける。
相互接続ネットワークは、完全接続型でも交換型でもよい。完全接続ネットワークでは、すべての入力ポートはすべての出力ポートに配線される。しかし、完全接続ネットワーク内の線の本数は、Nをポート数とすると、N2/2で増大するので、完全接続ネットワークは、中規模のシステムでもたちまち非現実的なものとなる。
交換ネットワークは、リンクとスイッチング・ノードからなる。リンクは、配線、伝送線路、導波路(光導波路を含む)、または無線受信器−送信器のペアなどを含む。スイッチング・ノードは、時間範囲内でのバスへの接続といった単純なものでも、多数のポートとバッファ・キューを備えるクロスバーといった複雑なものでもよい。単段ネットワークは、入力ポートと出力ポートすべてが1つの大きなスイッチング・ノード上に置かれているネットワークである。多段ネットワークは、出力ポートに到達するまでにデータ移動が第1のスイッチング・ノード、第1のリンク、第2のスイッチング・ノード、場合によってはさらに多くのリンク/ノードのペアをトラバースしなければならないネットワークである。例えば、電話システムは多段ネットワークである。
並列コンピュータの相互接続ネットワークは、規模、帯域幅、制御方法に関してさまざまなものがある。ネットワークが入力から出力へのデータ経路つまり回路を備え、それを破棄する要求があるまで残しておく場合、それを「回路交換」と呼ぶことができる。ネットワークが1パケット分のデータを入力から出力まで送れるだけの長さの経路を備える場合、「パケット交換」と呼ぶことがある。制御方法は、完全決定論的(マスタ・クロックに同期するすべてのステップをプログラムすることにより達成できる)から完全反応的(ポート入力でのデータ移動要求に非同期的に応答することにより達成できる)までさまざまである。
単段ネットワークでは、要求/受理プロトコルはスイッチを制御するためのふつうの手段である。要求信号は、入力ポートに送られ、競合検出回路内の他のすべての入力ポートからの要求信号と比較される。競合がなければ、INは受理信号で応答する。ポートはアドレスを送出し、INは入力を出力に接続するようにスイッチを設定する。競合が検出された場合、アービトレーション回路(または「アービタ」)は要求ポートのうちのどれが受理信号を受けるかを決定する。受理信号のないポートは、待たなければならない。1サイクルで成功しなかったポートは、その後のサイクルで再び試みることができる。すべてのポートが少なくとも何らかのサービスを受けられるようにするため、アービタではさまざまな優先度/ローテーション方式が使用される。
多段ネットワークでは、「ワームホール・ルーティング」と呼ばれる特定のプロトコルが使用される場合がある。ワームホール・ルーティングは、メッセージは、ナビゲーション用のヘッダ、ペイロード・データを伝達するための本文と、経路を閉じるためのテールを含む単語の連鎖にまとめることができるという考え方に基づいている。メッセージは、以下のように、ネットワーク内を「ワームのようにじわじわと」進む。ネットワークはデカルト格子としてレイアウトされ、スイッチング・ノードとメモリは格子の各接合部に配置されるものと仮定する。ヘッダは、ワームがネットワーク内で出くわす各ノードからどこへ行くべきかを指示する単純なステアリング命令(go−straight−ahead、turn−left、turn−right、またはconnect−to−local memoryなど)のシーケンスを含む。これらのステアリング命令は、ほとんど回路らしきものもなくノード側で復号化し、スイッチの非常に高速な設定を行えるくらい単純なものである。ヘッダでセットアップされた経路、つまり「穴」により、コードワード「テール」が見つかりノードがそのテールの後の穴を閉じるまでペイロード・データ、つまり「本文」を通すようにできる。経路を閉じると、リンクとノードが解放され、同じワームホール・ルーティング・プロトコルで他の経路を作成できるようになる。INの帯域幅は、単位時間当たり発生する成功したデータ移動の回数として定義することができる。交換されるINの帯域幅を推測することは難しいが、それは、INの詳細やそこに出されるデータ移動要求の特徴における多くの要因に依存しているからである。測定とシミュレーションの結果から、データ移動要求率が高くなると、実際にうまくINを通りぬけるデータ移動の割合は減じることがわかる。そして結局、1秒当たりの完了したデータ移動の回数は、飽和するか、またはピークに達し、これがINの帯域幅とみなされる。
上記のシステムは、異なるアプリケーションに対しさまざまなレベルの性能を提供する。しかし、アプリケーションの中には、現行システムを使用した場合に可能なレベルをはるかに超える性能または計算処理効率を必要とするものがある。したがって、電力要件を低減する一方で計算処理効率を高めたシステムが望ましい。
処理システムのさまざまな実施態様を開示する。一実施態様は、システムは複数のプロセッサと複数の動的構成可能通信要素を備える。各プロセッサは、少なくとも1つの算術論理演算ユニット、1つの命令処理ユニット、複数のプロセッサ・ポートを備えている。それぞれの動的構成可能通信要素は、複数の通信ポート、第1のメモリ、ルーティング・エンジンを備えている。複数のプロセッサと複数の動的構成可能通信要素は、散在配置で結合されている。一実施態様では、プロセッサのそれぞれについて、複数の動的構成可能通信要素の第1の部分集合に結合するように複数のプロセッサ・ポートを構成することができる。また、各動的構成可能通信要素について、複数の通信ポートは、複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第1の部分集合と、複数の動的構成可能通信要素の第2の部分集合に結合するように構成された通信ポートの第2の部分集合とを備えることができる。一実施態様では、複数のプロセッサと複数の動的構成可能通信要素は単一集積回路で製造することができる。
特定の一実装では、各プロセッサは、複数のプロセッサ・ポートのそれぞれの1つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合されている。動的構成可能通信要素はそれぞれ、複数の通信ポートの第1の部分集合のそれぞれの1つを介して複数の近隣プロセッサに結合され、また複数の通信ポートの第2の部分集合のそれぞれの1つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合されている。
一実施態様では、これらのプロセッサのうちの1つは、複数の動的構成可能通信要素の中間部分集合を通して第1の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能なものでよい。転送元デバイスが転送を開始した後、転送先デバイスまたは中間部分集合のうちの1要素がストールした場合、ストールしているデバイスは、ストール情報を中間部分集合のうちの1つまたは複数の要素を通して転送元デバイスに伝搬するように動作可能なものとすることができる。転送元デバイスは、ストール情報を受信した後第1の複数のデータの転送を一時停止するように動作可能であり、ストール後や一時停止前に送信された第1の複数のデータの一部を中間部分集合の少なくとも1つの要素内にバッファすることができる。それとは別に、転送元デバイスが中間部分集合を通して第1の複数のデータを転送先デバイスに転送する動作を開始した後、転送元デバイスまたは中間部分集合のうちの1つの要素がストールした場合に、そのストールしたデバイスは、中間部分集合の1つまたは複数の要素を通してストール情報を転送先デバイスに伝搬するように動作可能なものとすることができる。転送先デバイスは、ストール情報を受信した後第1の複数のデータの処理を一時停止するように動作可能なものとすることができる。
一実施態様では、動的構成可能通信要素のそれぞれは、複数の入力ポート、複数の出力レジスタ、複数の入力ポートのうちの1つまたは複数からデータを受信し、複数の出力レジスタのうちの選択された1つまたは複数にデータを送信するように結合されたクロスバーを備えることができる。それぞれの出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的動作が可能である。
本発明はさまざまな修正を加えることができ、また他の形態も可能であるが、特定の実施形態を図面の実施例を用いて示しており、これらについて以下で詳述する。ただし、図面および詳細な説明は本発明を開示されている特定の形態に制限する意図はなく、むしろその反対に、付属の請求項によって定義されているように、本発明の精神と範囲にあるすべての修正形態、均等物、代替形態を対象とするものとすることを理解されたい。
図1−MMAPブロック図と概要
図1は、処理システムの一実施形態を例示するブロック図である。本明細書では、処理システムは、数学的マトリックス・アルゴリズム・プロセッサ(MMAP)と呼ばれるものであるが、この名称を使用していても、決して本発明の範囲を制限する意図はない。例示されている実施形態では、MMAP 10は、複数の動的構成可能プロセッサ(DCP)と、互いにデータや命令をやり取りするため結合されている「動的構成可能通信要素」とも呼ばれる複数の動的構成可能コミュニケータ(DCC)を備えている。本明細書では、DCPはDCPノードとも呼ばれ、DCCはDCCノードとも呼ばれることもある。
処理システム10は、現在GPMC、DSP、FPGA、またはASICが使用されているさまざまなシステムとアプリケーションにおいて使用することができる。したがって、例えば、処理システム10は、さまざまなタイプのコンピュータ・システムまたは計算を必要とするその他のデバイスで使用することができる。企図されている一実施形態では、処理システム10は2002年7月18日に出願された「Frequency Domain Equalization Algorithm」という表題の米国仮特許出願60/396,819で教示されているようなデジタル・テレビジョン・システムの信号処理デバイスとして使用されている。
一実施形態では、DCPは、データを操作するように構成された1つまたは複数の算術論理演算ユニット(ALU)、そのALUを制御するように構成された1つまたは複数の命令処理ユニット(IPU)、命令またはデータを保持するように構成された1つまたは複数のメモリ、さらに各種のマルチプレクサとデコーダを備えることができる。このような実施形態は、多数のポート(「プロセッサ・ポート」)を備え、その一部はDCCに接続するように構成することができ、また残りは他のDCPに接続するように構成することができる。図3は、DCPの一実施形態のブロック図であり、以下で詳述する。
一実施形態では、DCCは、データと命令を保持するように構成された1つまたは複数のランダム・アクセス・メモリ(RAM)、構成可能なコントローラ、クロスバー・スイッチなどのネットワーク・スイッチ、レジスタ、マルチプレクサなどを備える。このような実施形態は、複数のポートを備え、その一部はDCPに接続するように構成され(本明細書ではDCPタイプのポートと呼ぶ)、残りはDCCに接続するように構成される(本明細書ではDCCタイプのポートと呼ぶ)。図4は、DCCの一実施形態のブロック図であり、以下で詳述する。任意の与えられたポートについて、DCCまたはDCPに、あるいはDCCまたはDCPから接続するように構成するかどうかに関係なく、特定のクロック・サイクルでそのような与えられたポートを通して転送可能なデータの量は、さまざまな実施形態において変わりうることに留意されたい。例えば、一実施形態では、所定のポートを、1クロック・サイクル当たり1ワードのデータを転送するように構成することができるが、他の実施形態では、所定のポートを1クロック・サイクル当たり複数ワードのデータを転送するように構成することができる。さらに他の実施形態では、所定のポートでは、時分割多重化などの手法を使用して、複数のクロック・サイクルで1ワードのデータを転送し、それにより、ポートを含む物理的接続の数を減らすことができる。
MMAP 10の一実施形態では、各DCPは、命令用に予約されている小さなローカル・メモリを備え、また非常に小さなローカル・データ記憶装置を備えることができる。そのような実施形態では、各DCPの近隣のDCCは、所定のDCPにオペランドを供給するように構成される。特定の実施形態では、多数のDCP命令について、所定のDCPが近隣のDCCからオペランドを読み込み、ALUオペレーションを実行し、ALUの結果を所定の近隣のDCCに1クロック・サイクルで格納することができる。これにより、1つのDCPからのALUの結果は、実行直後のクロック・サイクルで他のいくつかのDCPから利用できるようにすることができる。このようにして結果を出力すると、近隣のDCPの実行について密接な調整をする、つまり「密結合」することができる。本明細書ではこのような調整は、協同処理と呼ばれる。
本明細書では、所定のDCCまたはDCPの観点から、近隣のDCCまたはDCPは、特定の待ち時間の範囲内で所定のDCCまたはDCPからアクセス可能なDCCまたはDCPを参照する。いくつかの実施形態では、近隣関係の範囲を定める待ち時間は、例えばクロック速度などの要因により異なることがある。さらに、いくつかの実施形態では、近隣の複数の度合いを定義することができ、この度数は異なるアクセス待ち時間に対応してもよい。例えば、一実施形態では、「最も近い近傍は」、要求されたときのと同じクロック・サイクルでデータを供給できるデバイスとして定義することができ、「次に近い近傍」は、要求された後1クロック・サイクルの範囲内でデータを供給できるデバイスとして定義することができるといったように続く。他の実施形態では、他の測定単位を使用して近隣関係を定量化することができることが企図されている。
所定のMMAPの実施形態では、いくつかのDCCとDCPは、他のDCCとDCPに対し論理的に隣接することができる。本明細書では、「論理的に隣接する」は、1つのDCCともう1つのDCC、または1つのDCCと1つのDCPなどの2つのデバイス間の関係であって、1つのデバイスの1つまたは複数のポートが介在するDCCまたはDCPを通さずに他のデバイスの各ポートに直結されるような関係を指す。さらに、所定のMMAPの実施形態では、いくつかのDCCとDCPは、他のDCCとDCPに対し物理的に隣接することができる。本明細書では、「物理的に隣接する」は、1つのDCCともう1つのDCC、または1つのDCCと1つのDCPなどの2つのデバイス間の関係であって、それら以外のDCCまたはDCPはいっさいその2つのデバイスの間に物理的に配置されないような関係を指す。
いくつかのMMAPの実施形態では、論理的にかつ/または物理的に隣接するDCCとDCPなどのデバイスは近隣または近傍デバイスでもある。しかし、いくつかの実施形態では、所定のデバイス間の論理的かつ/または物理的隣接性は、必ずしも所定のデバイス間の近隣関係、または特定の度合いの近隣関係を伴わないことに留意されたい。例えば、一実施形態では、1つのDCCは、相当距離を隔てて配置されているもう1つのDCCに直接接続できる。そのようなペアは、論理的に隣接するが、物理的には隣接せず、一方のDCCから他方のDCCへの信号伝搬時間は長すぎて、近傍の待ち時間要件を満たさないことがある。同様に、一実施形態では、1つのDCCはもう1つのDCCに物理的に隣接できるが、直接は接続されず、したがって、論理的に隣接しない。一方のDCCから他方のDCCへのアクセスは、1つまたは複数の中間ノードをトラバースすることができ、その結果生じる横断遅延が大きすぎて、近傍の待ち時間要件を満たすことができない。
MMAP 10の所定の実施形態の技術および実装方法に応じて、DCCの複数のポートの具体的個数だけでなくDCC RAMのサイズも、DCCの所望の実行速度とサイズ全体についてバランスをとることができる。例えば、DCCの一実施形態では、4つのDCPタイプのポート、4つのDCCタイプのポート、4Kワードのメモリを備える。そのようなDCCの実施形態は、直接メモリ・アクセス(DMA)メカニズムを備えるように構成することができる。DMAメカニズムを使用すれば、DCPが結果を計算している間に、所定のDCCと他のDCCとの間で、またはMMAP 10の外部のロケーションとの間でデータを効率よくコピーすることができる。
MMAP 10の一実施形態では、いくつかの異なる方法のうちの1つによりデータと命令をDCC間で転送することができる。MMAP 10のすべてのメモリにシリアル・バスを備え、そのようなバスを使用することにより、外部メモリからMMAP 10を初期化したり、MMAPデータ構造のテスト機能をサポートすることができる。短距離の転送の場合、データを近傍DCCに直接移動させる、または近傍DCCから直接移動させるように所定のDCPをプログラムすることができる。長い距離にわたってデータまたは命令を転送するために、DCCのネットワーク内で通信経路が動的に生成されかつ破壊される。
そのような長い距離のデータ転送を行うために、MMAP 10内の相互接続されたDCCのネットワークは通信経路用に交換ルーティング・ファブリック(SRF)を構成することができる。そのような実施形態では、SRF内の通信経路を管理する方法が少なくとも2つある。第1の方法は、グローバル・プログラミングによるものであり、ソフトウェア制御により(例えば、人間のプログラマまたはルーティング機能を有するコンパイラにより)経路を選択することができ、またDCC構成コントローラにクロスバーを適宜プログラムする命令コードを書き込むことができる。経路を生成するには、その経路に沿ったすべてのDCCを、特定のルーティング機能により明示的にプログラムすることができる。経路の生成と破壊が頻繁に行われる動的環境では、多数のクロスバー構成コードが必要になることがあり、そのための記憶領域で潜在的に限られるDCC RAMリソースが消費される可能性がある。
通信経路を管理する第2の方法は、「ワームホール・ルーティング」と呼ばれる方法である。ワームホール・ルーティングを実装するために、各DCCはSRFを通してワームと呼ばれる一連のワードの進行の停止と再開を行う一組のステアリング機能やメカニズムを備える。ステアリング機能はすべての通信経路でふつうに使用し再利用できるため、DCC RAMを占有する構成コードの量は上述のグローバル・プログラミング法に比べてかなり小さくなると考えられる。ワームホール・ルーティング法では、そのままソフトウェア制御を使用して、経路により使用される特定のリンクを選択することができるが、経路生成(本明細書ではセットアップと呼ぶ)および破壊/リンク解放(本明細書では破棄とも呼ぶ)のプロセスは、ソフトウェアによる介入を最小限に抑えてハードウェアで実装することができる。
経路上のデータ・ワードの潜在的喪失を防ぐため、MMAP 10の一実施形態では、経路に沿った受信器と送信器との間のフロー制御を実装することができる。フロー制御とは、対応する受信器がもはやデータを受信できなくなった場合に送信器を停止し、対応する受信器がデータ受信可能状態になったときに送信器を再開させることができるメカニズムのことである。経路上のデータの流れの停止と再開は多くの点でワームホール・ルーティング内のワームの進行の停止と再開に似ているため、これら2つを組み合わせて1つの統合されたスキームとすることができる。
一実施形態では、MMAP 10は、一様なアレイに一緒に接続されている複数のDCPとDCCを備えている。それらのDCPは同一であってもよく、またDCCも同一であってもよい。一様なアレイでは、DCPの大半は同一であり、DCPの大半のそれぞれは、DCCに対し同じ接続数を有することができる。また、一様なアレイでは、DCCの大半は同一であり、DCCの大半のそれぞれは、他のDCCとDCPに対し同じ接続数を有することができる。MMAPの一実施形態におけるDCPとDCCは、実質的に同質の方法で散在させることができる。本明細書では、実質的に同質な散在とは、DCPとDCCとの比がアレイの下位領域の大半にまたがって整合している配列を意味する。
実質的に同質な方法で配置された一様なアレイは、予測可能な相互接続パターンが得られる、アレイ間でソフトウェア・モジュールを使い回せるなどのいくつかの有利な特徴を持つことができる。一実施形態では、一様なアレイにより、DCPとDCCの少数のインスタンスを設計しテストすることができる。その後、DCCとDCPを含むユニットを加工してから、そのようなユニットを複数回、反復する、つまり「タイリング」を行うことによりシステムを組み立てることができる。そのような手法を採用すると、共通システム要素を再利用することにより設計とテストのコストを低減させることができる。
また、DCPとDCCの構成可能な性質から、プログラムされる多様な非一様な動作を物理的に一様なアレイ上で実行させることができることにも留意されたい。しかし、他の実施形態では、MMAP 10は、非一様なDCCとDCPユニットで形成することもでき、規則正しいアレイまたは不規則なアレイ内で、あるいはさらにはランダムに、接続することができる。一実施形態では、DCPとDCC相互接続は、回路トレースとして、例えば、集積回路(IC)、セラミック基板、またはプリント基板(PCB)上に実装することができる。しかし、他の実施形態では、そのような相互接続は、例えば、電磁エネルギー(つまり、無線または光エネルギー)の導波路、無線(つまり、導かれない)エネルギー、粒子(電子ビームなど)、または分子の電位など、さまざまな小型の通信リンクのうちのどれかとしてよい。
MMAP 10は、単一集積回路上に実装することができる。一実施形態では、複数のMMAP集積回路を組み合わせて、1つのさらに大きなシステムを作成することができる。MMAP 10の所定の実施形態は、シリコン集積回路(Si−IC)技術を使用して実装することができ、そのような技術の具体的特徴を示すさまざまな機能を採用することができる。例えば、Si−ICチップ上の回路は、薄い平面に限ることができる。それに応じて、MMAP 10の所定の実施形態では、図1に例示されているようなDCPとDCCの2次元アレイを採用することができる。しかし、異なる配置のDCPとDCCを含む他のMMAPの実施形態も企図されている。
さらに、Si−ICチップ上の利用可能な配線密度は、そのようなチップ間の密度よりもかなり高くすることができ、それぞれのチップは、オンチップ信号とオフチップ信号をインターフェースする特別な入力/出力(I/O)回路を周辺に配置することができる。それに応じて、MMAP 10の所定の実施形態では、チップのコア内でDCPとDCCの一様なアレイからなるわずかに一様性のないアレイ、およびチップの周辺に沿って並べるように変形されたDCP/DCPユニットを採用することができる。しかし、異なる配置や組み合わせの一様な、および変形されたDCP/DCCユニットを含む他のMMAPの実施形態も企図されている。
さらに、Si−IC回路により計算オペレーションが実行されると、熱が発生するが、これは、ICパッケージングにより除去することができる。ICパッケージングを大きくするには空間を増やす必要があり、そのためICパッケージングを通過する相互接続部およびIC周辺の相互接続部では経路長に比例する遅延が生じる。したがって、上述のように、非常に大きなMMAPは、複数のチップを相互接続することにより構成させることができる。このような複数チップMMAPの実施形態をプログラムするには、チップ間信号遅延がチップ内遅延よりもかなり長くなることを考慮すべきである。
所定のSi−IC MMAP 10の実施形態では、単一チップ上に実装できるDCPとDCCの最大個数は、所定のSi−IC技術で利用可能な小型化技術と各DCPとDCCの複雑度により決まる。このようなMMAPの実施形態では、DCPとDCCの回路の複雑度は、目標レベルの計算処理効率を達成することを条件として最小限度に抑えるべきである。DCPとDCCのそのような最小化を、本明細書では合理化と呼ぶ。MMAP 10の一実施形態では、DCPの目標レベルの処理効率は、同じSi−IC技術で製作される最良のデジタル・シグナル・プロセッサ(DSP)の算術演算実行ユニットの処理効率に匹敵する。しかし、目標のDCP処理効率に対する他の参照を使用できる他のMMAPの実施形態も企図されている。
いくつかの実施形態では、MMAP 10は、DSPとFPGAのアーキテクチャの最もよい機能を採用することができる。DSPのように、MMAP 10は、複数の処理ユニットとオンチップ・メモリを備えるプログラム可能なチップとすることができる。しかし、DSPに関して、MMAP処理ユニットは合理化することができ、それらのユニットのさらに多くがあってもよく、それらの間のデータ移動だけでなくチップ上、チップ外のデータ移動についても帯域幅を最大にする新規な方法で相互接続することができる。DSPよりも処理ユニットを増やすと、MMAP 10は、単位時間当たりの乗算回数を増やすことができ、処理ユニットの合理化で使用エネルギーを最小限に抑えることができる。内部並列処理機能を備える多くのDSPはバス指向アーキテクチャであろう。いくつかの実施形態では、MMAP 10はバスを備えず、むしろ、バス指向アーキテクチャよりも帯域幅全体が著しく高いSRFに埋め込まれた近隣共有ローカル・メモリをDCCなどに備えることができる。
FPGA手法と比べて、いくつかのMMAPの実施形態は粒度が粗いであろう。例えば、MMAPの一実施形態では、オペレーションは自然なワード長(例えば、16ビット)を有し、計算は、自然なワード長の倍数であるデータを使用して実行した場合に最も効率がよくなることがある。いくつかのMMAPの実施形態では、DCPとDCCは、FPGAで実現される同等の構造よりも密度を高くすることができ、その結果平均配線長が短く、配線容量が低く、そして使用エネルギーが小さくなる。FPGAの実装とは対照的に、いくつかのMMAPの実施形態では、MMAP内のすべてのALUをプロセッサ(つまり、DCP)の一部とすることができ、オペランドのセットアップおよび結果のDCC内の周辺高速メモリへの送出が簡単になる。
MMAPトポロジおよび通信
図1に例示されているMMAP 10は、図に示されているように、DCP間にDCCを散在させることにより、高速メモリへ多数の接続を備えたDCPを設けることができる。このような配置を使用すれば、所定のDCPがDCC内のメモリにアクセスするのに要する時間を、隔離(つまり、非散在)配置と比べて短くすることができ、このことを本明細書では散在格子配置と呼ぶ。図1の実施形態では、DCP対DCCの比は1:1である。しかし、DCP対DCCの比が異なる他のMMAPの実施形態も企図されている。
DCCとDCPとの間の接続は、多数の接続スキームが可能なため図1には明示されていない。所定のMMAP実施形態に対するいくつかの可能な接続スキームは以下のものを含むことができる。
1.PlanarA−このスキームでは、各DCPはそれぞれのそのような近傍DCC上のDCPタイプのポートを介してその4つの近傍DCCに接続することができる。また、各DCCはそれぞれのそのような近傍DCC上のDCCタイプのポートを介してその4つの近傍DCCに接続することができる。各接続タイプは、一組の並列回路トレースまたは配線で構成することができる。一様なアレイでは、接続タイプ内の配線の数は、アレイ全体にわたって一様なものとすることができる。
2.PlanarB−このスキームは、シリアル・メモリからの初期状態をロードするためにシリアル・バスでDCCとDCPとの間に接続を追加できることを除き、PlanarAスキームと同じである。
3.PlanarC−このスキームは、アレイの多数の行と列により区切られたDCC間に並列接続を追加できることを除き、PlanarBと同じである。そのような追加接続により、帯域幅を高め、かつ遠くのDCCとの間の待ち時間を短縮することができる。
4.PlanarD−このスキームは、各DCCが同じ超立方体の頂点である超立方体の辺を追加接続が表すようにしたPlanarCの部分集合である。
5.PlanarE−この方式は、多数の接続で第1のものに結合された第2のチップに対し追加接続を行い、2つのアレイが緊密に結合されるようにできるPlanarCの部分集合である。
6.StackedA−このスキームは、追加接続で3次元マトリックスをサポートすることができるようなPlanarCの部分集合である。
異なるタイプと個数の接続を使用してDCCとDCPを異なるトポロジで接続できる追加接続スキームが企図されていることに留意されたい。
図2−MMAP接続スキーム
図2は、MMAP接続スキームの一実施形態を例示するブロック図である。MMAP接続スキーム20は、複数のDCCとDCPを含み、図1のMMAPの一部として示すことができる。MMAP接続スキーム20では、各DCPは、4つの近傍DCCに接続されるが、各DCCは4つの近傍DCPだけでなく4つの近傍DCCにも接続される。したがって、MMAP接続スキーム20は、上述のPlanarA接続スキームを図示したものである。
MMAP接続スキーム20で高帯域幅ポートをサポートするために、ポート間(DCPとDCC、またはDCCとDCC)の接続は、短く(つまり、近傍に限られる)かつワード・ワイドとすることができる、つまり、接続のデータ部内の導電体(線)の数はALUオペランドで使用されるビットの数と同じである。DCPとDCCとの接続はアドレス線を含む。DCCとDCCとの接続は、必ずしもアドレス線を含まないが、フロー制御用の線を備える。
DCPノードを単純にしておくことにより、大きなアレイ(例えば、MMAPの一実施形態では、16行×16列=256個のDCP)を妥当なコストで単一VLSI IC上に配置することができる。適当なVLSI技術として、シリコンまたはその他の半導体によるバイポーラ・トランジスタを含むまたは含まない相補形金属酸化膜半導体(CMOS)電界効果トランジスタがあるが、これに限定されない。
いくつかのMMAPの実施形態では、ノード間の通信はプログラマ側の制御下に置くことができる。MMAPでは、各DCPは、データ/命令を近隣DCCに伝達し、任意選択により、それらのDCCを通して他のDCCとDCPにさらに伝達することができる。小さなブロックのデータの移動に対して、DCPは連携動作により、アレイを横断してデータを一連−DCP毎に一度に1ワードずつ−の転送で移動させることができる。このような方法では、転送元ノードから転送先ノードへの経路内の第1のDCPは、1クロック・サイクルのリード・フェーズで近傍DCCメモリから読み込み、1クロック・サイクルの書き込みフェーズで他の近傍DCCに書き込むことができる。経路内の第2のDCPも、同様に、データの読み書きを行うことができ、このプロセスを、データが転送先ノードに到着するまで継続することができる。データは、さらに、経路に沿って転送先ノードに伝搬するときに所定のDCPによりスケーリングまたは正規化することもできる。この方法を使用すると、プログラミングは、必要な場合にデータを移動させるために、アレイを横切る形でバケツ・ブリゲート・ラインとツリーをセットアップすることができる。しかし、距離が長くなり、データ量が増えると、データを搬送するのに何回もの移動が必要になり、したがって多数のDCPが有用な算術演算を実行するのではなく単にデータを移動するだけに大半のサイクルを使ってしまうことがある。
距離の長いブロック移動については、いくつかのMMAPの実施形態は、DCPを伴わないDCC間のメモリ−メモリ転送を行う手段を備えることができる。DCPは、近傍DCC内のDCCタイプのポートに、そのようなポートに関連付けられた特別なRAMアドレスを通して間接的にアクセスすることができる。これにより、DCPはワームを送出するための新しい経路を作成し、後からそのような経路を破棄するか、またはそれとは別にワームを受け取るようにすることができる。DCPは、さらに、転送される1ブロック分のデータを近傍DCC内のRAMに保存し、その後、近傍DCCがDMAオペレーションをそのようなオペレーションに関連付けられている特別なRAMアドレスを通して開始するよう指示することもできる。これにより、DCPは、近傍DCCがデータのDMA転送を調整している間に他のタスクを続行することができる。
MMAPのさまざまな実施形態は、有用なアルゴリズムを実行するための有利な環境を提供することができる。注目するアルゴリズム(例えば、画像データを分析する)は、ALUのいくつかの流れ図に分解することができる。それぞれの流れ図は、MMAPアレイ上に、複数のフィードバック/フィードフォワード経路を含む、ツリー、ラティス、または任意のネットワークとしてマッピングすることができる。1つのALUの有限な精度を拡張し、複数のDCPとDCCを組み合わせることにより多ワード長の精度との高い結果を得ることができる。流れ図をMMAPにマッピングする場合、ノード間の距離に比例するDCP/DCCノード間の通信遅延が生じうる。また、マッピングは、通信キューが大きい場合に、または再構成が頻繁な場合に、各ノードにさらに多くのメモリを必要とすることがある。これらの要因は、通信遅延、キュー処理、再構成を考慮する慎重なプログラミングにより補正することができる。
シストリック・アルゴリズムは、MMAPのさまざまな実施形態に特に効率よくマッピングできるアルゴリズムの1クラスを表す。シストリック・アルゴリズムは、行列演算、画像処理、信号処理におけるさまざまなアプリケーション向けにすでに開発されている。シストリック・アルゴリズムでは、多数のプロセッサが同期方式で連携し、難しい計算を実行することができる。理想的なアルゴリズム実装では、それぞれのプロセッサは、同じオペレーション(またはオペレーションの小さなループ)をアルゴリズムで必要とするだけ何度も繰り返して実行することができ、データは、データ・ワードの生成と消費がバランスする近隣接続部によりプロセッサのネットワーク内を流れる。生成されるそれぞれの中間結果データ・ワードが後続の計算によりすぐに消費される場合、必要なメモリ容量は最小限で済む。シストリック・アルゴリズムの利点として、合理化されたプロセッサを使用できること、必要メモリ容量を最小限に抑えられること、標準の廉価なVLSI技術を使用して算術演算オペレーションを高速化できることが挙げられる。
MMAPの一実施形態は、チップごとに多数のプロセッサを有し、かつMIMDアーキテクチャを採用しており、これは、SIMDシステムと分散MIMDシステムなどの他の種類のシステムのオペレーションをエミュレートするように構成されている。いくつかの実施形態では、MMAPは、チップの異なる領域内で異なるアルゴリズムを同時に実行できる。また、いくつかの実施形態では、節電のため、プログラマ側で少なくとも一部のDCPとDCCに供給するクロックの有効、無効の設定を選択することができ、これにより、未使用のDCPとDCCを無効にすることができる。
動的構成可能プロセッサ
図3は、動的構成可能プロセッサ(DCP)の一実施形態を例示するブロック図である。DCP 300は、図1、図2に示されているDCPの詳細である。DCP 300は、少なくとも1つの算術論理演算ユニット(ALU)320を制御するために結合されている命令処理ユニット(IPU) 310を備える。DCP 300は、さらに、複数のマルチプレクサ(本明細書ではmuxとも書く)に結合された複数のデータ入力ポート301を備え、さらに、これらのマルチプレクサは、ALU 320の少なくとも第1、第2のオペランド入力を選択するためだけでなく、命令処理ユニット310のプログラム・ロード経路データを選択するために結合されている。DCP 300は、さらに、ALU 320から結果データを受信するためmuxを介して結合された複数のデータ出力ポート302を備えるとともに、命令処理ユニット310からアドレス・データを受信するために結合された複数のアドレス・ポート303を備える。
アドレス・ポート303を、近隣の動的構成可能コミュニケータ(DCC)に含まれるRAMデータを読み書きするためのアドレスを伝達するように構成することができる。データ入力ポート301とデータ出力ポート302を、近隣DCCとの間でデータの伝達を行うように構成することができる。同期動作モードでは、1クロック・サイクルでデータ出力ポート302を介して近隣DCCに書き込まれたデータが、さらに遅延または調整のオーバーヘッドを生じることなく、直後のクロック・サイクルで近隣DCP 300のデータ入力ポート301を介して読み込まれる。
DCP 300の例示されている実施形態では、データ入力ポート301、データ出力ポート302、アドレス・ポート303はそれぞれ、4つのポートを備える。さらに、単一のALU 320が示されている。しかし、それ以外の個数のデータ入力ポート、データ出力ポート、またはアドレス・ポートを備え、異なる個数のALUを備えることができる他の実施形態も企図されている。図1に例示されているMMAPの実施形態などの矩形アレイ内のDCP 300の複数のインスタンスを含むMMAPの一実施形態では、さまざまなポートを各DCPノードの4つの辺の回りに均等に分散することができる。
DCP 300は、データ・ワードに対し算術演算/論理演算ユニットのオペレーションを実行するように構成される。その場合、選択されたオペレーションはIPU 310により処理中の現在の命令に依存する。自由度の高いプログラミングを可能にするため、IPU 310は、それぞれさまざまな相互接続メカニズムを介して相互接続される、複数のアドレス指定可能なロケーション、命令デコーダ314、アドレス・ジェネレータ316を含む、少なくとも1つの命令メモリ312を備える。他の実施形態では、IPU 310は複数の命令メモリを備えるか、または追加機能を備えることができることが企図されている。さらに、他の実施形態では、IPU 310に例示されている機能は、異なる種類の機能ユニットに分割するか、または単一機能ユニットで実装することができることが企図されている。
IPU 310は、プログラム・データを受信し、データ入力ポート310に結合されているプログラム・ロード経路を介して命令メモリ312内に格納するように構成されてもよい。命令メモリ312は、さらに、グローバル・シリアル・バス(図には示されていない)を通して読み書きすることもできる。IPU 310は、命令デコーダ312により特定の命令の復号化に応じて、データ入力ポート301やデータ出力ポート302に結合されたさまざまなmuxを制御し、データを近隣DCCへ、また近隣DCCから誘導するように構成されてもよい。IPU 310は、さらに、アドレス・ジェネレータ316により生成されたアドレスをアドレス・ポート303を介して近隣DCCに伝達するように、例えば、そこに配置されているRAMの読み書きを行うように構成されてもよい。アドレス・ジェネレータ316は、さらに、命令メモリ312からフェッチされ、命令デコーダ314により復号化される次の命令アドレスを生成するように構成されたプログラム・カウンタ・レジスタ(図に示されていない)を備えることもできる。
一実施形態では、DCP 300は、データ・レジスタ・ファイル、データ・キャッシュ、またはデータ・オペランドまたは結果データ用の任意のローカル記憶領域を備えていなくてもよい。このような実施形態では、DCP 300は、DCP 300の直の接続先であるDCCに備えられているメモリをデータ・オペランドの読み込み元および結果データの書き込み先の高速記憶媒体として使用するように構成されることができる。いくつかの実施形態では、所定のDCPは、異なる近傍DCCから同時にまたは異なる時刻に異なるデータを取得することができる。以下で詳しく説明するように、いくつかの実施形態では、所定のDCPは、さらに、所定のDCPの直の接続先でないDCC内のデータを読み書きするように構成されることもでき、そのために、そのようなリモートDCCから所定のDCPの近隣DCCへの経路を確立する。
DCP 300により実装される命令は、算術演算と論理演算オペレーションだけでなく、メタ命令もサポートすることができる。DCP命令は十分なビット長を有し、2つのオペランドと1つの結果に対しメモリをアドレス指定し、1クロック・サイクルでそれらの値を読み書きすることができる。一実施形態では、DCP 300は以下の命令を実装できる。
加算(オペランド・アドレス、オペランド・アドレス、結果アドレス)
減算(オペランド・アドレス、オペランド・アドレス、結果アドレス)
乗算(オペランド・アドレス、オペランド・アドレス、結果アドレス)
乗算して最後の結果に加算(オペランド・アドレス、結果アドレス)
乗算して最後の結果から減算(オペランド・アドレス、結果アドレス)
否定(型、オペランド・アドレス、結果アドレス)
絶対値(型、オペランド・アドレス、結果アドレス)
シフト(型、オペランド・アドレス、結果アドレス)
XOR(マスク・アドレス、オペランド・アドレス、結果アドレス)
反転(マスク・アドレス、オペランド・アドレス、結果アドレス)
ジャンプ(条件、ストライド、PC移動先)
繰り返し(開始、停止、ストライド)
ループ(回数、PCブロックの開始)
条件分岐(検査、移動先)
前命令は、アドレス・ジェネレータ内のインデックス・レジスタを設定するための特殊な命令である。
インデックス格納(インデックス名、値)
ストライド・インデックス(インデックス名、値)
DCP 300で追加命令、または異なる命令セットを実装することができる他の実施形態も企図されていることに留意されたい。いくつかの実施形態では、1つまたは複数のデータ・オペランドを必要とする所定の命令の実行時に、近隣DCC内のメモリに直接アクセスして必要なオペランドにアクセスするように所定のDCPを構成できる。
DCP 300を、メタ命令を実行するように構成できる。本明細書では、メタ命令とは、命令メモリ312などのDCP命令メモリに格納されている命令に対しオペレーションを実行できる命令のことである。基本メタ命令は、近隣DCC内のRAMから命令メモリ312をロード(つまり、オーバーレイをロード)することとすることができる。DCCメモリから命令メモリをロードすることにより、ソフトウェアのプログラミングによりデータと命令との間のメモリの分割を決定することができる。したがって、アプリケーション・プログラマは、利用可能なメモリを最も有効に利用できるように使用しているソフトウェアを最適化することができる。いくつかの実施形態では、DCP 300は、IPU命令メモリを修正する、または例えば検査、エラー分析、および/またはエラー・リカバリのため命令メモリをDCCメモリに保存することができる他のメタ命令を備えることができる。
ALU 320を、特定のDCP 300の実施形態でサポートされている命令により定義されたオペレーションを含む、少なくとも固定小数点数体系に対する算術演算を実行するように構成できる。例えば、一実施形態では、ALU 320は、固定小数点数の加算、減算、乗算、積和、論理、シフトのオペレーションを実行するように構成される。いくつかの実施形態では、ALU 320は、拡張精度算術演算をサポートするため、前の計算から生じるキャリー・ビットを保持するように構成される。他の実施形態では、ALU 320は、特定のアルゴリズムを実装するため選択された浮動小数点算術演算または専用オペレーションを実行するように構成させることができる。
動的構成可能コミュニケータ
図4は、動的構成可能コミュニケータ(DCC)の一実施形態を例示するブロック図である。「動的構成可能コミュニケータ」と「動的構成可能通信要素」という用語は、本明細書では同義であることに留意されたい。DCC 400は、図1、図2に示されているDCCの詳細である。DCC 400は、SRAM制御回路415に結合された複数のmuxを介してマルチポート・スタティックRAM(SRAM)425に結合されている複数のDCP入力ポート401を備える。マルチポートSRAM 425は、複数のアドレス・デコーダ420に結合されるとともにSRAM制御回路415と複数のDCP出力ポート402にも結合される。アドレス・デコーダ420は、複数のDCCポート・デコーダ410とSRAM制御回路415に結合された複数のmuxを介してSRAMアドレスを受け取るように結合されている。DCCポート・デコーダ410は、複数のDCPアドレス・ポート403からSRAMアドレスを受け取るように結合されている。
DCC 400は、さらに、複数のmuxと複数の入力レジスタ454を介してクロスバー450と、ルーティング論理回路435に結合された複数のDCC入力ポート404を備える。クロスバー450は、ルーティング論理回路435に結合され、ルーティング論理回路は通信コントローラ430に結合される。通信コントローラ430は、複数のmuxを介してアドレス・デコーダ420に、プログラム・ロード経路を介してマルチポートSRAM 425に結合される。クロスバー450は、さらに、複数の出力レジスタ455を介して複数のDCC出力ポート405に結合される。
出力レジスタ455は、複数のmuxを介してマルチポートSRAM 425に結合される。DCP入力ポート401とマルチポートSRAM 425は、それぞれ、入力レジスタ454によりルーティング論理回路435に結合された複数のmuxを介してクロスバー450にそれぞれ結合されている。ルーティング論理回路435は、さらに、DCCポート・デコーダ410と出力レジスタ455に結合される。
DCP入力ポート401とDCP出力ポート402を、それぞれ、データをDCC 400の近隣DCPから受信し、データをそこへ送信するように構成することができる。DCPアドレス・ポート403は、DCC 400の近隣DCPからアドレスを受信するように構成することができる。DCC入力ポート404とDCC出力ポート405を、それぞれ、データをDCC 400の近隣DCCから受信し、データをそこへ送信するように構成することができる。DCC 400の例示されている実施形態では、DCP入力ポート401、DCP出力ポート402、アドレス・ポート403、DCC入力ポート404、DCC出力ポート405はそれぞれ、4つのポートを備える。しかし、他の個数のDCP入力ポート、DCP出力ポート、アドレス・ポート、DCC入力ポート、またはDCC出力ポートを備える他の実施形態も企図されている。
マルチポートSRAM 425は複数のアドレス指定可能なロケーションを含み、かつ近傍DCPへの高帯域幅データ転送を行えるように構成される。マルチポートSRAM 425は、これにより、DCC 400に結合されている近傍DCPのそれぞれについて共有レジスタ・ファイルとして効果的に使用することができる。マルチポートSRAM 425は、さらに、複数のリード・ポート、ライト・ポート、アドレス・ポートを介して複数の同時実行リード・アクセスとライト・アクセスをサポートするように構成される。特定の一実施形態では、マルチポートSRAM 425は、複数のアドレス指定可能なロケーション内に格納されている複数の値をほとんど同時に複数の近傍DCPに供給し、複数の近傍DCPから受け取った複数の値をほとんど同時に複数のアドレス指定可能なロケーションに書き込むように構成される。
アドレス・デコーダ420は、所定のアクセスのアドレスを、例えば、完全に復号化された行および列アドレスなど、高速でマルチポートSRAM 425とインターフェースするのに好適な形式に復号化することができる。SRAM制御回路415は、例えば、適切なリード・ポートおよびライト・ポートを有効にする方法などにより、読み込みおよび書き込み時にマルチポートSRAM 425の動作を制御するようになっている。SRAM制御回路415は、さらに、マルチポートSRAM 425に送られるアドレスとデータの送信元を制御するようにもなっている。SRAM制御回路415では、マルチポートSRAM 425の所定のアドレス・ポートに関し、DCCポート・デコーダ410を介してアドレス・ポート403により供給されるアドレスまたは通信コントローラ430により供給されるアドレスを使用するようにアドレス・デコーダ420に指令することができる。同様に、マルチポートSRAM 425の所定のライト・ポートに対し、SRAM制御回路415では、DCP入力ポート401または出力レジスタ455から書き込みデータを選択するようマルチポートSRAM 425に指令することができる。
例示されている実施形態では、DCC 400は、単一のマルチポートSRAM 425を備える。他の実施形態では、複数のマルチポートSRAMを備えること、さらに、スタティックRAM以外のメモリ技術を採用できることをも企図されている。さまざまな実施形態において、多数のメモリ構造編成のどれかを使用することによりマルチポートSRAMの機能を実現できる。例えば、一実施形態では、複数のメモリ・バンクを採用することができ、各バンクは1つまたは複数のポートを備えることができる。他の実施形態では、複数のSRAMメモリをDCC内で採用することができ、それぞれのSRAMは異なる数のポートを備えることができる。一実施形態では、DCC 400は、さらに、マルチポートSRAM 425をロードまたはアンロードするようになっている低帯域幅のシリアル・ポート(図には示されていない)を備えることもできる。このようなシリアル・ポートは、例えば、フード・ローダ、検査、デバッグに使用することができる。
クロスバー450は、複数の入力ポートと複数の出力ポートを備えることができ、入力ボードから1つまたは複数の出力ポートへのデータの経路を選択できるようになっている。クロスバー450により実行される特定のデータ・ルーティングは、含まれるクロスバー構成レジスタ(CCR)451の状態によって決まり、実際に所定の時刻において特定のルーティング機能に応じてルーティング論理回路435によりプログラムすることができる。通信コントローラ430は、ルーティング論理回路435に特定のルーティング機能をプログラムするようになっている。通信コントローラ430とルーティング論理回路435の機能は、本明細書では、ルーティング・エンジンと総称することができる。例示されている実施形態のようにルーティング・エンジンを階層として実装すると、ルーティング論理回路435により実行されるルーティング機能は高速動作が可能になるが(例えば、1クロック・サイクルの一部分以内)、その一方で通信コントローラ430を利用することで、ルーティング・パラメータを複数のクロック・サイクルにまたがって自由に変更することができる。
一実施形態では、CCR 451を、クロスバー450の出力ポート毎に1グループとして、ビットの複数のグループに分割することができる。グループ内のビットの個数は、少なくとも、クロスバー入力ポートのうちの1つを十分選択できる数であればよい。選択された出力レジスタ450がマルチプレクサを通過する場合(例えば、複数のDCCリンクのうちから選択するために)、マルチプレクサを構成するために1グループ毎に追加のビットが必要がある(つまり、特定のリンクを選択するために)。グループ毎の少なくとも1つの追加ビットを設け、出力レジスタ455のトランスペアレンシを設定することができる。図7の説明とともに以下で詳しく説明するように、出力レジスタ455のトランスペアレンシは、ルーティング論理回路435から出力レジスタ455に伝達される出力ラッチ信号により制御することができ、これを使用して、DCC 400内を伝搬するデータ・ワードの遅延を短くすることができる。また、図9の説明とともに以下で詳しく説明するように、入力レジスタ454のトランスペアレンシは、ルーティング論理回路435から入力レジスタ454に伝達される入力ラッチ信号により制御することができ、これを使用して、MMAP内のフロー制御を行うための方法を実現することができる。一実施形態では、CCR 451は、出力レジスタ455毎に1つのトランスペアレンシ・ビットを含むことができる。このような実施形態では、CCR 451は、それぞれの出力レジスタ455を入力レジスタ454のうちの各1つにマッピングし、各出力レジスタ455のトランスペアレンシ状態をそのそれぞれの入力レジスタ454に関連付けることができる。
CCR 451は、1クロック・サイクルのすべてのフェーズ毎に更新される。CCR 451は通信コントローラ430を通して決定論的プログラミングされる。その通信コントローラはプログラム・ロード経路を通してマルチポートSRAM 425に結合されている。それとは別に、CCR 451のプログラミングは、ルーティング論理回路435に結合されている、DCC入力ポート404を通して届いた特別な制御ワードにより決定されてもよい。制御ワードはルーティング論理回路435により解釈され、ルーティング論理回路435は制御ワードを通信コントローラ430にも送る。
通信コントローラ430は、DCC入力ポート404のうちの1つまたは複数からDCC出力ポート405のうちの1つまたは複数へのデータの経路選択を行うようにクロスバー450に指令することができ、それにより、MMAPアレイを通る経路に沿ってデータを中継することができる。DCC 400は、データ用の追加通信経路を用意することができる。例示されている実施形態では、マルチポートSRAM 425は、複数のmuxつまりマルチプレクサを介してDCP入力ポート401または出力レジスタ455からライト・ポートでデータを受け取ることができる。これらのマルチプレクサがあるため、通信コントローラ430は、マルチポートSRAM 425が他の何らかの手段によりアイドル状態にされている間にマルチポートSRAM 425にアクセスすることができる。通信コントローラ430のプログラミングにより、データがマルチポートSRAM 425からDCC出力ポート402のうちの1つに送られるように指令するか、または汎用マイクロコンピュータ(GPMC)の直接メモリ・アクセス(DMA)機能と似た方法で、DCC入力ポート404のうちの1つから読み込まれたデータがクロスバー450を通して経路選択され、マルチポートSRAM 425に書き込まれるように指令することができる。プログラム・ロード経路により、通信コントローラ430は、プログラム・オーバーレイをマルチポートSRAM 425から通信コントローラ430の内部の命令用RAM(図に示されていない)に動的にロードすることができる。
さらに、例示されている実施形態では、DCCポート・デコーダ410を使用することにより、DCPがDCC出力ポート・アクセス要求をルーティング論理回路435に書き込んだことを検出することができる。DCC出力ポート405のうちの1つが要求された場合、ルーティング論理回路435は、DCP入力ポート401を介して要求側DCPから受け取ったデータ・ワードを複数のマルチプレクサを介してクロスバー450に送ることができる。この機能により、所定のDCPは、最初にデータ・ワードをマルチポートSRAM 425に格納せずにDCC出力ポート405を介してデータを他のDCCに送信することができる。
MMAPのクロック同期
いくつかの実施形態では、MMAPはマスタ・クロックを備え、これをMMAPアレイ内のすべてのDCPとDCCノードに分配することができる。所定のDCPまたはDCCノード内でのマスタ・クロックの使用は、MMAPプログラマ側で構成可能である。マスタ・クロックは、従来の方法で、同期データ転送とノード・オペレーションのシーケンス動作のための共通基準として使用できる。同期データ転送は、プログラマは信号伝搬タイミングの詳しい内容を無視できるという点で都合のよい動作モードといえる。同期データ転送では、すべての信号が許容可能な立ち上がりおよび立ち下がりの制限時間内およびノイズ・マージンの範囲内でその転送先に到達し、正しい回路オペレーションが行われるように、マスタ・クロックのクロック周期を十分に長く設定する必要がある。MMAP回路の設計とテスト時に、回路内の最長の信号遅延を決定し、それにより、回路が信頼できる動作をする最高のクロック周波数を決定することができる。
MMAPの一実施形態では、各DCPまたはDCCノードによるマスタ・クロックの使用は、クロック制御レジスタ(図に示されていない)で指定されているようなそれぞれのノードの個別構成により決定することができる。そのようなクロック制御レジスタは、DCPノードの命令処理ユニット内に配置され、特別な命令により書き込むことができる。基本クロック構成の1つの選択肢は、特定のソフトウェア・プログラムの実行時に使用されないDCPとDCCに供給されるクロックをオフにして、消費電力を節約することができる。また、DCCの一部はトランスペアレト・モードの一組のレジスタで操作するようになっているため、クロックなしでも動作可能である。いくつかのMMAPの実施形態では、チップ上のノードの一部または全部を純粋な組み合わせ論理回路のように動作するようにすることも可能である。このような実施形態では、節電のため、ソフトウェア・プログラムは、全ノードの初期化が済んだ後マスタ・クロックをオフにするようになっている。このプログラミングとオペレーションのモードはFPGAと同様のものであり、プログラマは、例えばデータ喪失、競合状態、行き詰まりの停止状態に対する対策をさらに講じる必要があるであろう。
同期MMAP動作モードでは、DCPとDCCへのデータ転送ならびにDCPとDCCからのデータ転送は、マスタ・クロック・サイクルと同期し、これも、本明細書ではクロック・サイクルと呼ぶことがある。クロック・サイクルは、多数のフェーズに編成することができる。一実施形態では、クロック・サイクルは、4つのフェーズに編成することができ、それにより、DCC 400内のマルチポートSRAM 425のメモリ・アクセス制御論理回路を簡素化することができる。マルチポートSRAM 425は、DCPリード、DCPライト、DCCリード、およびDCCライトという4種類のメモリ・アクセスに対応できる。DCCリードおよびライトは、クロスバー450を通してデータを渡すことができるので、Xバー・リードおよびXバー・ライトとそれぞれ表される。1つのメモリ・アクセス・タイプがそれぞれのフェーズに割り当てられる場合に合理化された制御回路が得られる。他の実施形態では、異なる数およびタイプのメモリ・アクセスを使用する、クロック・サイクルを異なる数のフェーズに分ける、または複数のメモリ・アクセス・タイプを所定のフェーズに割り当てることができることも企図されていることに留意されたい。さらに、他の実施形態では、複数のマスタ・クロック信号を用意し、そのようなそれぞれのマスタ・クロック信号を異なるフェーズに分け、それを異なる機能に関連付けることができることも企図されている。
図5−メモリ・アクセス・タイプの割り当てのタイミング図
図5は、メモリ・アクセス・タイプを1クロック・サイクルに割り当てることの一実施形態を例示するタイミング図である。クロック・サイクル500は、それぞれフェーズAからフェーズDで表される4つの順次的なフェーズを含む。図3から図5をまとめて参照すると、クロック・サイクル500では、DCP 300などのDCPは、リード・アクセスのみについてはフェーズAで、ライト・アクセスのみについてはフェーズDで、マルチポートSRAM 425などのメモリに対する排他的アクセス権を有することができる。これらの割り当ては、図5では「SRAMからのDCPリード」および「SRAMへのDCPライト」とそれぞれ表されている。クロスバー450などのDCCクロスバーは、ライト・アクセスのみについてはフェーズB、リード・アクセスのみについてはフェーズCで、マルチポートSRAM 425などのメモリへの排他的アクセス権を有することができる。これらの割り当ては、図5では「SRAMへのXバー・ライト」および「SRAMからのXバー・リード」とそれぞれ表されている。異なるタイプの機能に割り当てられたクロック・サイクルの異なる数のフェーズを含むことができる他の実施形態も企図されていることに留意されたい。
フェーズBとCの間、DCPは、図5でそれぞれ「DCP ALUフェーズ1」および「DCP ALUフェーズ2」と表されるALUオペレーションを実行することができる。フェーズDとAの間、データはDCC間で転送することができる。メモリは同じフェーズで読み込みと書き込みを行えないので、リード・アクセス用のアドレス復号化論理回路を、アドレス・デコーダ420でライト・アクセス用のアドレス復号化論理回路と時分割することができる。また、DCPとDCCも同じフェーズでメモリにアクセスできないので、DCPアクセス用のアドレス復号化論理回路を、アドレス・デコーダ420でDCCアクセス用のアドレス復号化論理回路と時分割することができる。このタイミング関係により、それぞれのDCC 400内のアドレス・デコーダ420のサイズと複雑度を最小限に抑えることができ、このためICの面積と消費電力を低減することができる。異なるタイミング関係やそれに対応して異なるアドレス・デコーダの実装を含むことができる他の実施形態も企図されている。
2つ以上のDCPが所定のマルチポートSRAM 425の同じロケーションに書き込もうとした場合(つまり、所定のDCC 400が同時にアドレス・ポート403のうちの少なくとも2つで同じアドレス値を受け取った場合)、メモリ・アクセス・エラーが発生する可能性があることに留意されたい。多数のSRAM実装において、メモリ・アクセス・エラーは、同じロケーションが同時に読み書きされた場合にも発生しうる。クロスバー450がマルチポートSRAM 425に書き込んでいるときに、類似のエラーが発生することがある。一実施形態では、メモリ・アクセス・エラーは、ソフトウェアのプログラミングだけで防止できるが、他の実施形態では、ハードウェアを追加実装してそのようなエラーを防止することができる。ソフトウェアによるプログラミングの実施形態では、そのSRAMにアクセスするプログラムすべてが決定論的であり、開始の仕方が同期している場合、特定のマルチポートSRAM 425のメモリ・アクセス・エラーを回避することができる。本明細書では、決定論的プログラムとは、任意の命令に到達するのに必要な正確なサイクル数で予測可能なプログラムのことである。プログラムは、実行に必要なサイクルの数が割り込みまたはデータ依存関係の影響を受けない場合に決定論的である。ソフトウェア・プログラミングの一実施形態では、同期を外れた可能性のあるそれぞれのプログラム・スレッド(例えば、特定のDCP上で実行されるプログラム)に対し共有メモリの次のアクセスの前に再同期処理が行われた場合に、厳格なプログラム決定論的メカニズムがなくても、メモリ・アクセス・エラーを回避することができる。
いくつかのMMAPの実施形態では、すべてのプログラム・スレッドがソフトウェアの設計により同期を保つ完全決定論的プログラミングは、同期処理、アービトレーション処理、またはインターロック処理(ハンドシェイク)のステップまたは回路が必要ないため、非常に効率がよい。しかし、アプリケーションのソフトウェアのすべてを単一のICで実行すると効率が高いが、他のMMAPの実施形態ではこれを活かすことができる。このような単一ICの実施形態では、DCPの一部のサブセットによりプログラム・スレッドの脱同期化を引き起こすおそれのある割り込みおよびデータ依存関係を採用し、特定のアプリケーション・ソフトウェアとインターフェース機能の要件を緩和することができる。しかし、ソフトウェアとハードウェアの設計により、そのような脱同期化の可能性を考慮し、脱同期化を生じそうなプログラム・スレッドが他のプロセスとハンドシェイク・ステップを十分に実行させられる命令帯域幅を備えることができる。
交換ルーティング・ファブリック内の通信経路
いくつかのMMAPの実施形態では、距離が長い通信(つまり、隣接するDCPとDCCを超える距離の通信)は、本質的に論理的チャネルとすることができる経路によりサポートすることができる。それぞれの経路は、一方向にのみデータを搬送することができ、双方向通信が必要な場合には、第2の経路を反対方向に確立することができる。一般に、MMAPの実施形態は、複数の物理的接続を空間分割多重化または時分割多重化することにより形成されたDCCのペアの間の複数の接続リンクを備えることができる。経路は、このような接続リンク上に確立することができる。しかし、経路は、いったん確立されてしまうと、それが使用する接続リンクまたは存続している間の結合先であるDCCを変更することはできない。したがって、それぞれの経路は、DCCと接続リンクの順序列として、例えば、第1のまたは転送元のDCC、第1の接続リンク、第2のDCC、第2の接続リンク、第3のDCC、第3の接続リンク、...、最後のまたは転送先DCCという列として、一意に定義することができる。一実施形態では、MMAP内のすべての経路の集合は、図4のCCR 451などのすべてのDCC内のすべてのクロスバー構成レジスタの状態により一意に定義することができる。
MMAPの動的構成をサポートするために、経路を素早く生成し素早く破壊することができる。いくつかの実施形態では、経路の生成と破壊は、所定のDCPまたは所定のDCCのいずれかにより開始することができる。例えば、所定のDCCを、DCPの介入なしで他のDCCへのDMA転送を実行するように構成することができ、したがって、経路の生成と破壊を行うように構成できる。動的な経路生成と破壊を実行する2つの方法は、グローバル・プログラミングとワームホール・ルーティングを含む。グローバル・プログラミングによる経路の生成について説明し、その後、多くのMMAP経路に共通のモードとフロー制御機能について説明する。ワームホール・ルーティング法の説明は、モードとフロー制御の説明の後に行う。
グローバル・プログラミング法を使用した経路の生成またはセットアップでは、MMAP内のすべての経路をソフトウェア制御により定義する必要があり、またそのような各経路は、データ転送のために使用される前に構成しておく必要がある。これは、プログラマが手動で行うか、または自動的に、例えば、ルーティング・コンパイラまたは補助ソフトウェアにより、あるいは機能コードがすでに経路セットアップを含んでいるライブラリ関数を選択することにより行うことができる。MMAP内で経路全体を同時に使用する場合、プログラマ側で、ハードウェアで利用できる以上の通信リンク・リソースを使用しないようにする必要がある。それとは別に、ソフトウェア・ツールを使用して、リンク・リソースの使用度を明らかにすることもできる。
グローバル・プログラミングにより単一の経路を生成するために、複数の命令を、経路に沿って存在するDCC内の図4の通信コントローラ430などの通信コントローラにロードすることができる。これらの命令は、経路内の各リンクに関連付けられている適切なクロスバー構成レジスタ451のビット・グループをロードすることができる。いくつかの実施形態では、これらの命令は、この作業を即座に実行するか、または順次実行するが、他の実施形態では、何らかの種類のトリガ信号の到着を待つことができる。さまざまな実施形態において、経路がいったん確立された後に中断されないようにハードウェアで保護することができる場合もできない場合もある。したがって、一度に1つの経路のみが所定のリンクに割り当てられるようにするのはプログラマまたはルーティング・ソフトウェア側の役目であるとしてよい。すべてその経路に沿って存在するDCC内のクロスバー構成レジスタ451が設定された後、通信経路は完全であり、データ転送に使える状態になっている。経路は、もはや必要でなくなったら、経路に含まれるすべてのDCCのクロスバー構成レジスタ内の関連するビット・グループを変更することにより破壊することができる。それとは別に、既存の経路をいつまでも手を加えずそのままにしておくこともでき、既存の経路が必要がなくなった後必要に応じて単純に新しい経路で経路のCCRビット・グループを上書きすることができる。
いくつかのMMAPの実施形態では、経路に沿ったデータ伝送に対し少なくとも2つのモード、つまり完全同期モードと部分的トランスペアレト・モードを備えることができる。いくつかの実施形態では、図4のDCC 400などの特定のDCCで使用しているモードは、図4のCCR 451などのDCCクロスバー構成レジスタに含まれるトランスペアレンシ・ビットによりプログラムすることができる。他の実施形態では、データ伝送モードを他の手段によりプログラムできることも企図されている。
図6−同期データ伝送モードのタイミング図
図6は、同期データ伝送モードの一実施形態のオペレーションを例示するタイミング図である。図6で、多数のマルチ・フェーズ・クロック・サイクルが横軸に沿って例示されている。例示されているクロック・サイクルは、図5のクロック・サイクル500の実施例となっている。MMAP内のDCCの選択されたサブユニットは、縦軸に沿って例示されており、タイミング図の本体の中に、選択されたサブユニットを通るデータの進行が例示されている。
図4から図6をまとめて参照すると、完全同期データ伝送モードでは、出力レジスタ455は、ルーティング論理回路435から伝達された出力ラッチ信号によってクロック・サイクル毎にクロックされるようになっている。データ・ワードは、転送元ノードから転送先ノードへの経路内の各DCCのそれぞれの出力レジスタ455内にバッファすることができる。さらにこの経路を下って条件の阻止がなければ、ルーティング論理回路435は、経路内の各DCCの入力レジスタ454をトランスペアレトにしている。本明細書では、トランスペアレトなレジスタ・オペレーションとは、レジスタへの入力が、クロックまたはその他の信号によりゲートされずに、またはそれらの信号と同期せずに、直接そのレジスタの出力に渡されるオペレーション・モードを意味する。トランスペアレト・モードで動作する場合、レジスタの入力での信号の変化は、レジスタ回路内を伝搬した直後にそのレジスタの出力に反映されるようにできる。
例えば、上述のグローバル・プログラミング法により完全同期伝送経路がセットアップされた後、データは次のように経路をトラバースすることが可能である。まず、転送元DCPが、W1と表されている第1のワードを近隣DCC 400のマルチポートSRAM 425内のSRAM 1転送元メモリ・ロケーションに書き込むことができる。図6では、この書き込みは、クロック・サイクル1のフェーズDで実行するが、簡単にするため示していない。第1のワードW1は、フェーズA、B、Cを通してロケーションSRAM 1に保持することができる。近隣DCCのクロスバー450は、図6ではXバー1と表されている。Xバー1は、クロック・サイクル2のフェーズCでデータ・ワードW1を読み込み、第2のDCCへの伝送を行うフェーズD、A、B、Cで出力レジスタ455のうちの1つに保持することができる。第2のDCCのクロスバー450は、図6ではXバー2と表されている。Xバー2は、クロック・サイクル3のフェーズCでデータ・ワードW1をラッチし、さらに下流への伝送を行うフェーズD、A、B、Cで出力レジスタ455のうちの1つに保持することができる。
図6で、各Xバーについて示されている波形は、それぞれの出力レジスタの出力での変化を反映する。伝送時のデータ・ワードは、所定のフェーズCで所定の出力レジスタ455にバッファすることができるため、経路は、すでに受け取っているデータ・ワードを失わずにSRAM転送元メモリ・ロケーションを介して前のDCCから、またはDCPから次のデータ・ワードを受け取ることができる。データ・ワードは、経路に沿った出力レジスタ455内にバッファすることができる。転送先DCCのクロスバー450は、図6ではXバー4と表されている。伝送時のデータ・ワードが転送先DCCに到達した場合、Xバー4は、サイクル6のフェーズBで転送先マルチポートSRAM 425のSRAM 4転送先メモリ・ロケーションにデータ・ワードW1を書き込むことができる。SRAM 4は、フェーズC、D、Aでデータ・ワードW1を保持し、転送先DCPがサイクル7のフェーズAでSRAM 4からデータ・ワードW1を読み込めるようにできる。この経路を使い、次のクロック・サイクルで次のデータ・ワードを送出することができ、これはいつまでも繰り返すことができる。転送元のロケーションSRAM1と転送先のロケーションSRAM 4との間のデータ転送では4つの介入するクロスバーが例示されているが、所定のデータ転送は任意の個数のDCC内の任意の個数のクロスバーをトラバースできることに留意されたい。
図7−トランスペアレト・モードのデータ転送
図6に例示されているデータ転送の実施例を参照すると、通信経路内のいくつかのDCCの入力レジスタ454および出力レジスタ455をトランスペアレト・モードにした場合、データの送出を高速に行えるように経路をセットアップすることができる。
図7は、トランスペアレト・データ伝送モードのいくつかの実施形態のオペレーションを例示するタイミング図である。図7で、多数のマルチ・フェーズ・クロック・サイクルが横軸に沿って例示されている。例示されているクロック・サイクルは、図5のクロック・サイクル500の実施例となっている。MMAP内のDCCの選択されたサブユニットは、縦軸に沿って例示されており、タイミング図の本体の中に、選択されたサブユニットを通るデータの進行が例示されている。
図7は、図6に示されているように、トランスペアレトレジスタ構成の2つの他の場合について、転送元のロケーションSRAM 1と転送先のロケーションSRAM 4との間の同じデータ転送の経路の実施例を示している。図4および図7をまとめて参照すると、第1の場合では、Xバー1に関連付けられている出力レジスタ455は、同期または「クロック同期」として構成され、Xバー2から4に関連付けられている入力レジスタ454と出力レジスタ455はトランスペアレトになっている。図6の完全同期の実施例とは異なり、図7は、第1の場合について、データ・ワードW1は、Xバー1の出力レジスタ455から開始した後、Xバー2から4の出力レジスタ455内をトランスペアレトに伝搬し、所要時間はDCC論理回路と相互接続部内を伝搬するのに必要な時間のみであることを例示している。図7は、第1の場合について、データ・ワードW1は非常に短い時間でXバー4のトランスペアレト出力レジスタ455に届き、クロック・サイクル3のフェーズBでセットアップが行われ、そこで、ロケーションSRAM 4に書き込まれることを例示している。プログラマは、この場合にタイミング・マージンが適切であり、エラーなしでデータ転送を完了できるかを判別することができる。
第2の場合、Xバー4と関連する出力レジスタ455は、トランスペアレトではなく同期的として構成されている。この場合、図7は、データ・ワードW1はサイクル3のフェーズCでXバー4の出力レジスタ455により捕捉され、サイクル3のフェーズDからサイクル4のフェーズCまでそれらのレジスタの出力に保持されることができることを例示している。この構成では、サイクル4のフェーズB内のロケーションSRAM 4にデータ・ワードW1を書き込むのに十分なマージンを設けることができる。第2の場合であっても、データ・ワードW1は、図5に例示されている完全同期の場合の6番目のサイクルとは対照的に、4番目のサイクルでロケーションSRAM 4に書き込むことができる。長い経路では、トランスペアレト・データ伝送モードのデータ転送により得られる時間の節約はさらに大きくなる。
図8−構成可能モード・データ伝送
図8は、MMAPの構成可能モード・データ伝送の一実施形態のオペレーションを例示する流れ図である。図1、4、7、8をまとめて参照すると、オペレーションは転送元ノードから転送先ノードヘの経路が構成されるブロック800から始まる。一実施形態では、転送元ノードをDCPとすることができるが、他の実施形態では、転送元ノードを、例えばDMA転送を実行するように構成されているDCCとすることができる。一実施形態では、経路は、上述のグローバル・プログラミング法を使用するように構成されているが、他の実施形態では、ワームホール・ルーティングまたは他の構成法を使用するように構成されている。
経路が構成された後、転送元ノードから転送先ノードヘの経路に沿った各DCP 400の出力レジスタ455は、同期データ転送モードまたはトランスペアレト・データ転送モード(ブロック802)のいずれかで動作するように構成されている。他の実施形態では、このステップは、ブロック800で実行される経路構成と同時に実行することができる。
転送モード構成が完了した後、転送元ノードはデータ・ワードを転送先ノードに伝送することができる(ブロック804)。伝送されるそれぞれのデータ・ワードは、ブロック806から流れ図に従って継続し、転送元ノード・オペレーションは、ブロック816から継続することができる。ブロック806を参照すると、転送元ノードから転送先ノードヘの経路内の所定の中間のDCCノードの出力レジスタ455は、同期モードまたはトランスペアレト・モードで動作するように構成される。同期モードの場合、データ・ワードは、出力レジスタ455のうちの1つに捕捉され、経路内の次のDCCに進む前(ブロック810)の次のクロック・サイクルまで(ブロック808)保持される。トランスペアレト・モードの場合、データ・ワードは、クロック信号によるゲート動作なしで経路内の次のDCCに直接伝搬することができる(ブロック810)。経路内の次のDCCが転送先DCCを表す場合(ブロック812)、転送先DCCは次に利用可能なライト・フェーズでデータをマルチポートSRAM 425に書き込むことができる(ブロック814)。この時点で、データ・ワードの転送は完了することができる。そうでない場合、オペレーションはブロック806から継続することができ、現在のDCCのデータ転送モードが決定される。
ブロック816を参照すると、転送元ノードは、データ・ワードを送信した後、現在のデータ転送が完了しているかどうかを判別する。完了していない場合、転送元ノードは、次のデータ・ワードを転送先ノードに伝送する(ブロック804)。それ以外の場合、転送元ノードは、現在の転送先に対し開始するデータ転送がほかにあるかどうかを判別する(ブロック818)。もしそうならば、転送元ノードは、経路に沿ってそれぞれのDCC 400のデータ転送モード構成を再構成する(ブロック802)。他の実施形態では、転送元ノードは、データ転送モード構成と経路を同時に構成することができ、同じ転送先への全データ転送においてデータ転送モード構成を保持し、ブロック808をなくすことができる。
ブロック818を参照すると、転送元ノードに現在の転送先に転送すべきデータがもうない場合、別の転送先に対し開始すべき他の転送があるかどうかを判別する(ブロック820)。もしそうならば、経路は新しい転送先に構成される(ブロック800)。それ以外の場合、転送元ノードはアイドル状態に入ることができる(ブロック822)。
いくつかのDCCまたMMAPの実施形態では、複数の転送先ノードに対し複数のデータ転送が同時に実行されるように構成されていることに留意されたい。
アドレス順序付けおよびDMA
データ転送に関する上の説明において、転送元または転送先SRAMメモリ・ロケーションのアドレスは固定することも、指定された順序ですべてのクロック・サイクルを変更することもできる。アドレスが固定の場合、DCCまたは隣接するDCPは、到着するワードまたは出て行くワードについて指定メモリ・ロケーションを直接処理することができる。アドレスが順序正しく1ステップずつ進められる場合、マルチポートSRAM 425はワード・トラフィックに対するバッファとして機能するが、それに対しDCC通信コントローラ430から、または隣接するDCPからアドレスを供給することができる。例えば、通信コントローラ430のDMA機能により、適切なアドレス生成を実行できる。DMAオペレーションでは、マルチポートSRAM 425のバッファ・アレイにアクセスするために開始アドレス、停止アドレス、ストライドが必要である。隣接するDCPのプロセスによりバッファ・アレイにアクセスすることができる。バッファは有限なので、DCPがデータを消費する前にバッファが満杯になるとオーバーフローが発生する可能性があり、データの到着前にDCPがデータを消費しようとするとアンダフローが発生する可能性がある。したがって、DMAと隣接するDCP上で実行中のプロセスとの相互作用をソフトウェア制御により制御する必要がある。さらに、DCCは、次に説明する、経路上のデータ・ワードのフロー制御を管理する何らかのハードウェア補助機能を備えることができる。
フロー制御
通常、経路内のすべてのワードは、クロック・サイクル毎にその転送先に向かって進行することができる。しかし、転送元と転送先DCCによるデータの生成と消費はむらがある。こうした状況に対し、DCCは経路内のワード列を開始、停止するフロー制御手段を備えることができる。
フロー制御をサポートするために、追加回路が必要になる場合がある。マルチポートSRAM 425は、一部または全部のメモリ・ロケーション・アドレスに対する追加ビットを含む。この付加ビットは、「ハンドシェイク・ビット」と呼ばれ、それを含むように構成されているメモリ・ロケーションを通してワード転送を調整するためDCPにより読み書きすることができる。ハンドシェイク・ビットがアサートされた場合、これは、転送元DCPの生産者プロセスは転送先DCP内の消費者プロセスがデータを読み込み、そのビットをクリアするまで待機することができることを示すことができる。ハンドシェイク・ビットがデアサートされた場合、生産者プロセスはロケーションに1ワードを書き込むことができる。これと同じメカニズムを使用して、DCCによるワードのメモリ間転送を調整することができる。いくつかの実施形態では、信号をアサートするとは、その信号を論理1にすることであり、信号をデアサートするとは、その信号を論理0にすることであるが、他の実施形態では、アサートとデアサートに関して、所定の信号の極性を反転することができることに留意されたい。
複数のDCCを伴う距離の長い経路でフロー制御をサポートするためにはさらに回路を必要とする場合がある。DCCからDCCへのそれぞれの接続リンクは、受信側DCCに向かうリンクに沿って送出される「アイドル」(IDLとも表す)線と、送信側DCCに向かうリンクに沿って送り返される「ブロック」(BLKとも表す)線とを含む。経路全体を見ると、アイドル線の信号は、最終的には、SRAM転送元ロケーション内のハンドシェイク・ビットから導かれ、ブロック線の信号は、SRAM転送先ロケーション内のハンドシェイク・ビットから導かれる。
MMAPの一実施形態で、例えば、転送先ノードで、または中間ノードでストールしたため、メッセージ(ワードの順序列)がブロックされている場合、ブロックされたメッセージは、経路内のDCCの入力レジスタ454と出力レジスタ455に格納することができる。メッセージを停止するプロセスは、データ転送元ノードに向かうBLK信号のアサートの逆伝搬を含む。BLK信号は、所定のDCCの出力レジスタ455がトランスペアレト・モードで動作するように構成されていない限り、クロック・サイクル毎に1つのDCCをトラバースすることができ、構成されている場合は、所定の1クロック・サイクルで複数のDCCをトラバースすることができる。同期モードで動作するように構成されている各DCC出力レジスタ455に、BLK信号が到着すると、出力レジスタ455の更新が禁止され、その結果「フリーズ」するか、またはその中のメッセージのワードを捕捉し、保持することができる。メッセージの次のワードは出力レジスタ455がフリーズされたのと同じサイクルで入力レジスタ454に到着できるため、BLK信号が到着した場合も、同じサイクルで入力レジスタ454内に入力ワードを捕捉し、保持することができる。BLK信号がデータ転送元に伝搬すると、経路内のデータ・ワード、つまりDCC1つ当たり2つのワード、要するに入力レジスタ454内のデータ・ワードと、出力レジスタ455内のデータ・ワードをフリーズすることができる。第1のBLK信号の原因が取り除かれた場合、BLK信号のデアサートは、BLKアサート伝搬と同様にしてデータ転送元に向かって伝搬することができる。この場合、初期データのフリーズに対応する「メルティング・フロント」は、転送先のノードに最も近いフリーズされたレジスタから始まり、BLKデアサートによりワードが放出され1ワード/サイクルの速度で転送先に向かって移動する場合を除き、データ転送元に向かって伝搬する。
上述のように、転送先ノードまたは中間ノードのストールが生じると、転送元ノードはストールし、それにより、転送元ノードが転送先ノードをデータでオーバーフローさせないように保護する(つまり、転送元ノードが転送先が消費できる以上の速さでデータを生成しないように防止する)。転送元ノードがデータ転送の生成時にストールした場合、同様の条件が成立する。例えば、転送元ノードは、転送先ノードへの経路をセットアップし、一定量のデータを送信し、その後、第3のノードから追加データの届くのを待ちながらアイドル状態に入る。同様に、中間ノードでブロッキングが発生すると、追加データが転送元ノードから転送先ノードへ送られなくなる。このような場合、転送先ノードは、データ到着が停止したという通知を受けていないと、間違って処理を続ける可能性がある。例えば、所定のDCC内で構成されたバッファの内容を連続的にループして辿るように転送先ノードをプログラムし、バッファは新規データで連続的に更新されると仮定する。しかし、転送元ノードがストールし、転送先ノードがバッファの内容の処理を継続していると、転送先ノードは古いデータを新しいデータであるかのように間違って処理することもありうる。そのような状態は、アンダフローと呼ぶことができる。
一実施形態では、例えば、転送元ノードまたは中間ノードでストールが生じたため転送元ノードから転送先ノードへのデータ・フローが停止した場合、ストールしているノードは、転送元ノードから転送先ノードへの経路を実装する接続リンクに関連付けられているIDL信号をアサートする。IDL信号のアサートは、転送先ノードに向かって前方へ伝搬する。転送先ノードは、IDL信号のアサートを受信すると、応答で事前に定義されたアクションを実行する。例えば、一実施形態では、転送先ノードは特定の接続リンクに関連するIDL信号のアサートを受信したことに対する応答としてアイドル状態に入る。いくつかの実施形態では、IDL信号のアサートに対する転送先ノードの応答は、ハードウェアの設計で決定することができるが、他の実施形態では、応答はソフトウェアでプログラム可能である。
一実施形態では、データ転送が実行されていなくても、IDL信号を使用することにより、確立されている経路を開いたままにできる。そのような実施形態では、転送元ノードは転送先ノードヘの経路を生成し、それを使用して、一定期間にわたって複数のデータ・ワードを転送することができ、その際に所定の転送データ・ワード間に任意の長さのアイドル期間(「ギャップ」ともいう)を挿入できる。そのような実施形態では、所定の量のデータを転送することに関連する経路の生成と破壊オペレーションの回数を減らせるため、より効率的なデータ転送を行うことができる。
図9は、MMAPのフロー制御の一実施形態のオペレーションを例示する流れ図である。図9に示されているオペレーションは、上述のように、転送先ノードから転送元ノードへの「ブロックされた」ストール情報の伝搬または転送元ノードから転送先ノードヘの「アイドル状態の」ストール情報の伝搬のいずれかを表す。図9に示されているオペレーションについては、まず、転送先ノードから転送元ノードへのストール情報の伝搬に関して説明する。図1、4、9をまとめて参照すると、オペレーションは転送元ノードから転送先ノードヘの経路が構成されるブロック900から始まる。一実施形態では、転送元ノードをDCPとすることができるが、他の実施形態では、転送元ノードを、例えばDMA転送を実行するように構成されているDCCとすることができる。一実施形態では、経路は、上述のグローバル・プログラミング法を使用するように構成されているが、他の実施形態では、ワームホール・ルーティングまたは他の構成法を使用するようになっている。
経路が構成された後、転送元ノードは、その経路を介して転送先へのデータの転送を開始することができる(ブロック902)。転送中、転送先ノードまたは転送元ノードと転送先ノードとの間の中間ノードの1つまたは複数がストールすると、ストール状態を検出することができる(ブロック904)。例えば、転送先ノードは、他の処理タスクがあるためデータ転送を消費できなかったり、あるいは転送が中間ノードで中断することがある。ストールが検出されなかった場合、転送先ノードは、例えば、ワームのテールを受け取ったかどうかを検出することにより(以下のワームホール・ルーティングに関する節で説明されているように)、または経路の破棄を命令する制御メッセージを検出することにより、完全なデータ転送を受け取ったかどうかを判別する(ブロック906)。データ転送が完了している場合、転送先ノードは、アイドル状態に入り、次のデータ転送または他のタスクが来るのを待つ(ブロック908)。データ転送がまだ完了していなかった場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける(ブロック910)。データが転送されている間に、ストールの監視と検出を続ける(ブロック904)。
ストールが検出された場合、ストール情報は、ストールしているデバイスから上流へ経路を通り転送元ノードへ伝搬する。一実施形態では、そのようなストール情報は、経路に関連付けられたBLK信号のアサートを介して伝搬される。ストール情報が伝搬すると、搬送中のデータ・ワードは、経路に沿ったそれぞれのノード内に捕捉できる。一実施形態では、データ・ワードはストールしているDCCまたはストールしているDCPに結合されているDCCの入力レジスタ454内に捕捉することができ、ストール情報は第1の上流のDCCに伝搬される。経路は、1つの出力レジスタ455および1つの入力レジスタ454を通してDCCをトラバースする。第1の上流のDCCの割り当てられた出力レジスタ455と、割り当てられた入力レジスタ454のそれぞれに1つのデータ・ワードを捕捉することができ、ストール情報は次の上流のDCCに伝搬される。特に、一実施形態では、所定のDCCのルーティング論理回路435の構成により、伝搬されたストール情報を受信するように、またそれぞれの出力ラッチと入力ラッチ信号を使用してデータを捕捉するように出力レジスタ455と入力レジスタ454を構成する。一実施形態では、データ捕捉とストール伝搬は、転送元ノードに達するまで上で述べたように続けられる。このような実施形態では、転送元ノードは、伝搬されたストール情報を受信したことに対する応答としてデータ転送を一時停止するように構成されている(ブロック912)。
ストールが検出された後、ストールしているノードは、通信可能な状態になっていると判断し、ストールされたデータ転送を再開する(ブロック914)。ストールされたノードが通信可能な状態になっていなかった場合、有効になるまで待ち(ブロック916)、検査を続けて使用可能になったかどうかを判別する(ブロック914)。ストールされたノードが通信可能な状態になっている場合、使用可能であることを示す情報をストールしているデバイスから上流へ経路を通り転送元ノードへ伝搬させる。一実施形態では、そのような使用可能であることを示す情報は、経路に関連付けられたBLK信号のデアサートを介して伝搬される。使用可能であることを示す情報が伝搬されると、ストール情報の伝搬により転送中に捕捉されたデータ・ワードは解放され、引き続き転送先に向けて経路を辿る。一実施形態では、ストールしているDCCまたはストールしているDCPに結合されているDCCの入力レジスタ454内に捕捉されているデータ・ワードは、解放することができ、使用可能であることを示す情報が第1の上流のDCCに伝搬される。第1の上流のDCCの出力レジスタ455内に捕捉されているデータ・ワードが解放されると、その後、第1の上流のDCCの入力レジスタ454内に捕捉されているデータ・ワードが解放されることが可能であり、使用可能であることを示す情報が次の上流のDCCに伝搬される。特に、一実施形態では、所定のDCCのルーティング論理回路435の構成により、伝搬された使用可能であることを示す情報を受信するように、またそれぞれの出力ラッチと入力ラッチ信号を使用してデータを解放するように出力レジスタ455と入力レジスタ454を構成する。このような実施形態では、データの解放と使用可能であることを示す伝搬は、転送元ノードに達するまで上述のようにして続けられ、転送元ノードは、伝搬された使用可能であることを示す情報を受信したことに対する応答としてデータ転送を再開するようになっている(ブロック918)。使用可能であることを示す情報が経路を通して完全に伝搬した場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける(ブロック910)。
図9に示されているオペレーションについては、転送元ノードから転送先ノードへのストール情報の伝搬に関して説明する。ここでも図1、4、9をまとめて参照すると、ブロック900で実行される経路構成は、上述のように行う。経路が構成された後、転送元ノードは、その経路を介して転送先へのデータの転送を開始する(ブロック902)。転送中、転送元ノードまたは転送元ノードと転送先ノードとの間の中間ノードの1つまたは複数がストールすると、ストール状態を検出する(ブロック904)。例えば、転送元ノードは、他の処理タスクがあるためデータ転送を継続できなかったり、あるいは転送が中間ノードで中断することがある。
ストールが検出されなかった場合、転送元ノードは、例えば、ワームのテールを送信したかどうかを検出することにより(以下のワームホール・ルーティングに関する節で説明されているように)、または経路の破棄を命令する制御メッセージを送信することにより、完全なデータ転送を伝送したかどうかを判別する(ブロック906)。データ転送が完了している場合、転送元ノードは、アイドル状態に入り、次のデータ転送または他のタスクが来るのを待つ(ブロック908)。データ転送がまだ完了していなかった場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける(ブロック910)。データが転送されている間に、ストールの監視と検出を続ける(ブロック904)。
ストールが検出された場合、ストール情報は、ストールしているデバイスから下流へ経路を通り転送先ノードへ伝搬する。一実施形態では、そのようなストール情報は、経路に関連付けられたIDL信号のアサートを介して伝搬されるようにできる。ストール情報が転送先ノードへ伝搬すると、ストールしているデバイスから下流へ転送中のデータ・ワードは、転送先ノードに向かって伝搬し続ける。一実施形態では、ストール伝搬は、転送先ノードに達するまで上で述べたように続けられる。このような実施形態では、転送先ノードは、伝搬されたストール情報を受信したことに対する応答としてデータ処理を一時停止するようになっている(ブロック912)。
ストールが検出された後、ストールしているノードは、通信可能な状態になっていると判断し、ストールされたデータ転送を再開する(ブロック914)。ストールされたノードが通信可能な状態になっていなかった場合、有効になるまで待ち(ブロック916)、検査を続けて使用可能になったかどうかを判別する(ブロック914)。ストールされたノードが通信可能な状態になっている場合、使用可能であることを示す情報をストールしているデバイスから下流へ経路を通り転送先ノードへ伝搬する。一実施形態では、そのような使用可能であることを示す情報は、経路に関連付けられたIDL信号のデアサートを介して伝搬される。このような実施形態では、使用可能であることを示す伝搬は、転送先ノードに達するまで上述のようにして続けられ、転送先ノードは、伝搬された使用可能であることを示す情報を受信したことに対する応答としてデータ処理を再開するようになっている(ブロック918)。使用可能であることを示す情報が経路を通して完全に伝搬した場合、経路に沿った中間ノードを介して転送元ノードから転送先ノードへデータを送り続ける(ブロック910)。
簡単にするため、図9では、1回のストールが検出され、伝搬された後に、そのストールに対応する使用可能であることを示す情報の伝搬が続くように例示している。しかし、一実施形態では、同じタイプの複数回のストール(例えば、BLKまたはIDL)がデータ転送中に発生することがあることが企図されている。例えば、このような実施形態では、新しいストール情報がストールしているデバイスから上流へ、転送元ノードに向かって伝搬し、その後、前回のストールが解消された結果の使用可能であることを示す情報が上流へ、転送元ノードに向かって完全に伝搬していることが企図されている。ストール情報と使用可能であることを示す情報の伝搬順序が保持される(つまり、第2のストール情報は第1のストール情報または第1の使用可能であることを示す情報よりも先に上流へ伝搬しない)場合、ストールし、使用可能になる各状況を、図9の関連する部分に関して理解する。さらに、異なるタイプの複数回のストール(例えば、BLKまたはIDL)がデータ転送中に発生することがあることが企図されている。例えば、転送元ノードと転送先ノードが両方ともストールすると、それぞれのストール情報を互いに向けて伝搬する。このような実施形態では、それぞれのストールしているノードは、データ転送続行を再開する前に、それぞれの使用可能であることを示す情報を伝搬する必要がある。
一実施形態では、図9のフロー制御オペレーションを図8の構成可能モード・データ伝送と組み合わせることに留意されたい。このような実施形態では、転送元ノードから転送先ノードへ進むデータは、所定のクロック・サイクルで複数の中間ノードを次々にわたって伝搬して行くが、ただしそのような中間ノードが上述のようにトランスペアレト・データ転送モードで動作するように構成されている場合である。同様に、このような実施形態では、ストール情報と使用可能であることを示す情報は、所定のクロック・サイクルで複数の中間ノードを次々にわたって伝搬して行くが、ただしそのような中間ノードがトランスペアレト・データ転送モードで動作するように構成されている場合である。図9のフロー制御オペレーションと図8の構成可能モード・データ伝送を含む一実施形態では、所定の中間DCCノードが上述のように伝搬されたストール情報を受信する場合、データは、入力レジスタ454と出力レジスタ455内に捕捉されるが、ただしそれらの出力レジスタが同期データ転送モードで動作するように構成されている場合のみに限る。
ワームホール・ルーティング
ワームホール・ルーティングによる経路セットアップをサポートするために、一部のMMAPの実施形態ではいくつかの回路を追加する。これらは、DCCタイプのポート毎に、制御/データ・ステータスを示す、C/Dで表される追加制御線を含み、これは、DCC間のすべての接続リンクに含めることができ、また各DCC内のルーティング論理回路435に結合する。接続リンクの信号線の最大本数は、名目上、C/D、IDL、BLKについてそれぞれ1本の信号線を加えた1データ・ワード当たりのビット数の合計に対応する。しかし、いくつかのMMAPの実施形態では、これらの信号をさまざまな異なる方法で多重化し、信号線の総数を減らす。
一方のDCCに他方のDCCからデータ・ワードが届くと、受信側DCCではC/Dビットを使用して、ワームのヘッダ、本文、テールのワードを区別する。C/Dビットがデアサートされた場合、これは、受信されたワードが本文のワードであることを示す。本文のワードは、データ・ワードに制御ビットを加えたものに対応し、これを変更せずに経路に沿って渡す。C/Dビットがアサートされた場合、これは、受信されたワードが制御ワードであることを示す。制御ワードを使用することにより、ワードのデータ部分がルーティング論理回路435による解釈を受けるルーティング・コードを含む。
ルーティング・コードの重要な特徴の1つは、制御ワードがヘッダであるかテールであるかを示す指標であり、そこで制御ワードのヘッダ/テール・ステータスを示すH/Tビットを与える。一実施形態では、H/Tビットは、C/Dビットに隣接するが、他の実施形態では他のビット位置に割り当てられまたは特定のマルチビット・コードに割り当てられる。制御ワードがテール・ワードの場合、これは経路に沿って伝搬され、他の何らかの経路により使用できるようにDCC出力ポートを順次解放する。
制御ワードがヘッダ・ワードである場合、受信側DCCの入力レジスタ454内に制御ワードをラッチし、ルーティング論理回路435内の組み合わせ論理回路により復号化する。ルーティング論理回路435では、ヘッダ・ワードの一番右の数個のビットとともにヘッダの出所であるポートを調べ、表1に示されているような出力ポートのクロスバー450の要求を発行する。出力ポートを要求するためにルーティング論理回路435により調べられる数個のビットを、ナビゲーション単位またはNUNITと呼ぶ。表1に示されているように、DCC1個当たり4つのDCCタイプの出力ポートを備えるDCCの実施形態に対し、NUNITは2ビット・コードを使用して、4つの方向オプションを指定する。同じ数のまたは異なる数のDCCタイプのポートを備える他の実施形態では、他のNUNITコードを使用する。NUNIT毎に2ビット使用するコードを以下で説明する。出力ポートがすでに確立されている経路によりブロックされていない場合、ルーティング論理回路435では、NUNITを評価し、ワームを進行させる。例えば、ヘッダ・ワードがNUNITコード10とともにSRAMから届いた場合、ルーティング論理回路435は、クロスバー450からのEast出力ポートに、このワームのヘッダ・ワードと後続のワードを要求する。
Figure 0004391935
図10は、ヘッダ・ワードに関するルーティング論理回路の一実施形態のオペレーションを例示している。図10は、ヘッダ・ワードが転送元ノードから転送先ノードへの経路上の複数のDCCノードを進んで行くところを示している。場合(a)は、転送元DCCから出た初期状態のヘッダ・ワードを例示する。この状態では、ヘッダ・ワードは、C/DビットとH/Tビットを含み、さらにHN0からHN4までの番号が振られ、HN0がヘッダ・ワードの最下位ビットを占有する複数のヘッダNUNITフィールドを含む。
転送元と転送先DCCを含む各DCCで、ヘッダ・ワードは、以下のように修正されるとともにクロスバーの出力に渡される。ヘッダ・ワードは、NUNIT1個分右シフトし、左からゼロを詰める。その後、C/DおよびH/Tビットを元の位置に戻す。図10の場合(b)から(e)は、それぞれ1から4個までのDCCによりヘッダが処理された後実行されるヘッダの修正を例示する。場合(e)に示されているように、DCCを通過する毎に、ヌル・コードが一番右のNUNIT内に現れるまで先頭ヘッダ・ワードにゼロを詰めてゆく。ヘッダ・ワードが同じDCC(コントローラまたは近傍DCP)からのものではないときにヌル・コードが一番右のNUNITであり、次のワーム・ワードが制御ワードではない場合、ヘッダ・ワードはそのワームに対して転送先DCCにある。
転送先DCCに到着したことをチェックするのに、複数クロックを要することがある。まず、先頭ヘッダ・ワードを入力レジスタ454のうちの1つに移動し、ルーティング論理回路435により、一番右のNUNIT内にヌル・コードが入っていないか検査する。ヌル・コードが見つかった場合、次のクロック・サイクルで、ワームの次のワードにより先頭ヘッダ・ワードを上書きし、C/DおよびH/Tビットを検査する。次のワードが他のヘッダ・ワードの場合、それが新しい先頭ヘッダ・ワードになり、一番右のNUNITを使用することにより次のDCCに対する出力ポートを選択する。大きなアレイ上で経路選択するために1ワーム当たりのヘッダ・ワードの個数が多くなる場合がある。次のワードがヘッダ・ワードではなく本文のワードの場合、ワームはその転送先DCCにある。この場合、本文のワードは、DCC内のプリセットされたSRAMロケーションに書き込む。本文のワードがあるロケーションに届くと、通信コントローラ430のDMA論理回路、またはDCPによりその到着が検出され、そのいずれかで後続の本文のワードの到着を処理する。ワームの処理方法に関する情報は、転送先ノードに予めロードしておくか、またはヘッダのすぐ後ろのワームに入れる。
図11は、MMAPの一部を通る経路の実施例を示すブロック図である。図11は、「クロスバーA」から「クロスバーH」で表される8個のクロスバーを示している。示されているそれぞれのクロスバーは、図4のクロスバー450の実施例である。簡単にするため追加論理回路は示されていないが、それぞれの示されているクロスバーは図4のDCC 400などの各DCCに含めることができ、それぞれのそのようなDCCは、図2に例示されている実施形態などのMMAPの一実施形態内の他のDCCに結合される。
図11の例示されている実施形態では、クロスバーA〜Hのそれぞれは、クロスバーの左辺にN、S、E、Wと表されている4つの入力ポート、およびクロスバーの右辺にN、S、E、Wと表されている4つの出力ポートを含む。それぞれのクロスバーの入力ポートは、それぞれのDCCのDCC入力ポート404に結合され、それぞれのクロスバーの出力ポートは、それぞれのDCCのDCC出力ポート405に結合される。さらに、クロスバーA〜Hのそれぞれは、入力接続部と、図4のマルチポートSRAM 425などのメモリへの出力接続部を備え、その接続部はそれぞれクロスバーの左辺と右辺にMで表されちる。
例示されている実施形態では、それぞれクロスバーA〜Hは、各DCCを介して複数の近隣クロスバーに結合され、各クロスバーのそれぞれの出力ポートN、S、E、Wは複数の近隣のクロスバーのそれぞれの各入力ポートS、N、W、Eに結合される。したがって、例示されている実施形態では、それぞれのクロスバーは、4つの近隣のクロスバーから入力を受け取り、4つの近隣のクロスバーに出力を送るように結合される。他の実施形態では、異なる数のクロスバーを備え、それぞれが異なる数の入力ポート、出力ポート、メモリ接続部を備えることも企図されていることに留意されたい。
図11では、クロスバーAを含む転送元DCCからクロスバーHを含む転送先DCCへの経路を例示しており、この経路はクロスバーB、F、Gを含むDCCをトラバースする。図10、図11をまとめて参照すると、表1に従って定義されている2ビットのNUNITコードは、次のように例示されている経路を実装するために使用される。経路は入力メモリ接続部Mを介してクロスバーAに結合されているSRAMから始まり、出力ポートEを介してクロスバーAから出る。表1によれば、クロスバーAのNUNITは10でなければならない。クロスバーAの出力Eは、クロスバーBの入力Wに結合され、例示されている経路は出力ポートSを介してクロスバーBから出る。表1によれば、クロスバーBのNUNITは01でなければならない。クロスバーBの出力Sは、クロスバーFの入力Nに結合され、例示されている経路は出力ポートEを介してクロスバーFから出る。表1によれば、クロスバーFのNUNITは10でなければならない。クロスバーFの出力Eは、クロスバーGの入力Wに結合され、例示されている経路は出力ポートEを介してクロスバーGから出る。表1によれば、クロスバーGのNUNITは11でなければならない。最後に、クロスバーGの出力Eは、クロスバーHの入力Wに結合され、例示されている経路は、出力メモリ接続部Mを介してクロスバーHに結合されているSRAMで終わる。表1によれば、クロスバーHのNUNITは00でなければならない。
そのため、図11に例示されている経路に対して図10の形式のワームホール・ルーティングを実装するヘッダ制御ワードは、制御ワードを示すアサートされたC/Dビット、ヘッダ・ワードを示すアサートされたH/Tビットを含み、さらにそれぞれフィールドHN4からHN0に対応する値00、11、10、01、10を含む。例示されている経路は、MMAPの一実施形態で可能な多数の経路のうちの1つにすぎないことに留意されたい。ワームホール・ルーティングまたは他の経路選択方法を使用して他の経路を構成することができ、また他の実施形態は異なる方法で相互接続された異なる数のクロスバーとポートを含むことも企図されている。
各NUNITは、経路に沿った特定のDCCにより消費されるので、1つまたは複数のビットを各NUNITに追加して、個々のDCCで特定の動作を要求する。例えば、一実施形態では、NUNIT毎に1つ追加されたビットを使用して、所定のDCCが上述のようにトランスペアレト・データ転送モードまたは同期データ転送モードで動作することを指定する。そのような実施形態では、ワームホール・ルーティングにより選択された経路は、ヘッダ・ワード内のトランスペアレンシ・ビットのプログラミングに応じて、完全同期または部分的トランスペアレトとする。
他の実施形態では、DCPは、図4のDCC 400などの近隣のDCCのクロスバー入力にヘッダ・ワードを直接送る。DCPでは、そのために、そのDCCのDCPアドレス・ポート403を介して近隣のDCCに特定のアドレスを指定し、そのDCCのDCP入力ポート401を介してヘッダ・ワードを送信する。ルーティング論理回路435は、その後、マルチポートSRAM 425を使用せずにその転送先への途上でワームを送信する。この手法は、DCP間のメッセージ受け渡し機能を実現する。
衝突処理
ワームホール・ルーティングによりセットアップされる経路は、既存の経路あるいは同時に所定のDCCを通して経路選択されたワームホールである1つまたは複数の他の経路と衝突する場合がある。衝突は、1つまたは複数のヘッダ・ワードで同時に同じクロスバー出力ポートを要求した場合、またはその出力ポートがすでに経路により占有されている場合に生じる。ルーティング論理回路435は、衝突が発生した場合に競合している出力ポートへのアクセス権をどの経路が受け取るかを調停するように構成された論理回路を含む。ルーティング論理回路435は、衝突を検出すると、競合している出力ポートへのアクセスを1つのワームだけに許可できる。さまざまな優先度/ローテーション方式(例えば、ラウンドロビン方式)を使用して、トラフィック分布の形を整え、どの入力ポートも要求された出力ポートへのアクセスを常に拒絶されることのないようにできる。
ワームホール・ルーティングにより最初にセットアップされる経路がブロックされた場合、ブロックされたワームの前進を破棄せずに停止すると都合がよい。この場合、上述のフロー制御メカニズムを使用する。例えば、ワームのヘッダをブロックしているDCCの入力レジスタ454内にラッチし、BLK信号を経路内の次の上流のDCCに送り、次の上流のDCCの入力レジスタ454内のワームの他のセグメントをラッチする。このプロセスは、ワームのテール・ワードを含むDCCに、またはテール・ワードがまだ送信されていなかった場合には転送元DCCに繰り返し戻す。ワーム内のデータは、同期データ転送モードで動作するように構成されている経路内のDCCの入力レジスタ454と出力レジスタ455で捕捉する。上述のように、2つのワードは、DCC毎に格納することができ、その結果、ストールされているワームは「しわくちゃに押しつぶされた」状態または「望遠鏡のように重なって縮んだ」状態になる。ワームは、ブロック状態が解消するまでいつまでもフリーズ状態のままにでき、ブロック状態が解消した後、BLK信号のデアサートの伝搬により前進移動が自動的に再開する。
MMAP機能を例示する複数のアプリケーション実施例について以下で説明する。このような実施例は、MMAPまたはそのコンポーネントの構造、機能、または範囲を制限する意図はなく、前述の説明を理解しやすくすることのみを目的としていることに留意されたい。これらの実施例の数多くの変更形態を採用できること、また後述のアプリケーションの代替えアプリケーションが多数ありえることも企図されている。
実施例1−高速フーリエ変換
この実施例では、複素高速フーリエ変換(FFT)を使用して時間領域内の複素波形を周波数領域に変換する。この実施例により、DCPが完全同期モードで決定論的プログラムにより緊密に結合されている協同処理を説明する。
波形は、クロック・サイクルの倍数で一様な周期性を持つ時間領域サンプル列により表す。波形の位相情報を保存するために、各サンプルを複素数として処理するとよい。複素数は、コンピュータでは、実数の固定小数点数または浮動小数点数の対として表すことができ、この対は、複素数の実数成分と虚数成分からなる。この実施例では、それぞれの実数を1ワードに格納する。
FFTの長さは、フーリエ領域内の出力値を求めるためにまとめて処理される、サンプリングされた時間領域内のサンプルの個数として定義できる。FFTの長さは、さらに、出力スペクトル内の離散周波数の個数も定義できる。コンピュータでは、サンプルは、データ配列内に格納する。この実施例では、8個のサンプルがデータ配列内に配置され、その後、長さ8のFFTアルゴリズムが実行され、周波数毎に1つの出力値、合計8つの出力値が得られる。最後に、8つの出力値をMMAPから順番に取り出す。
高速フーリエ変換(FFT)は、数段から多段で構成され、各段がデータ配列に対して複素数の乗算、加算、減算を実行する。基数2のFFTは、2Nを入力値の個数として、N段で構成される。例えば、長さ8のFFTは8つの入力値がある。8=23なので、N=3、したがって、長さ8のFFTは3段となる。FFTアルゴリズムの一実装では、これらの段のそれぞれが、合計32回の計算を必要とする。これらの計算は、4回の複素乗算、4回の複素加算、4回の複素減算からなる。それぞれの複素加算と減算は、加算または減算の計算を2回必要とするが、それは、各複素数の実部と虚部は別々に評価されるからである。同様に、それぞれの複素乗算は、4回の乗算/多重累積オペレーションを必要とするが、それは、乗算器の実部と虚部が被乗数の実部と虚部に対し乗算されるからである。したがって、1つのFFT段では、8回の加算、8回の減算、16回の乗算/多重累積オペレーションが必要になる。
長さ8のFFTの3段すべてについて、全部で96回の計算を実行しなければならないであろう。しかし、第1段で使用される複素乗算器は実数値1と虚数値0を持つので、第1段の複素乗算は、この乗算値については複素数の積が被乗数に等しいため、実行しなくてよい。この特性を考慮すると、実行しなければならないのは合計80回の計算である。
長さ8のFFTでは、8つの複素データ点がある。各FFT段で、複素データの対に対し計算を実行することができ、この計算をバタフライ計算と呼ぶ。例えば、各段で、複素数データ点と複素係数の対の一方に対し複素乗算を実行できる。その結果が、その段の複素加算と減算に使用できる複素数の積である。
そこで図12を参照すると、バタフライ計算の一実施形態のデータ・フローを例示する流れ図が示されている。図12のバタフライ計算では、2つの複素入力値A、Bを受け取るとともに、複素係数Wを受け取り、2つの複素出力値A’、B’を出力する。バタフライ計算では、複素入力値Bと複素係数Wとの複素乗算を実行して、中間結果である複素数の積Yを出力する。その後、バタフライ計算は、複素和と、複素入力値Aと複素数の積Yの間の複素数の差の計算を実行して、複素出力値A’、B’をそれぞれ出力する。
上述の複素算術演算オペレーションは、それぞれのオペランドの実部と虚部のオペレーションとして次のように表す。
Y_real = (B_real * W_real)-(B_imag * W_imag)
Y_imag = (B_real * W_imag) + (B_imag * W_real)
A’_real = A_real + Y_real
A’_imag = A_i mag + Y_imag
B’_real = A_real - Y_real
B’_imag = A_imag - Y_imag
MMAPの一実施形態では、2つの隣接するDCPが同じデータを共有しながら同時に複素計算を実行するようになっている。第1のDCPは、複素乗算を実行して、積Y_realの実部を生成し、第2DCPは、複素乗算を実行して、虚部Y_imagを生成する。その後、第1のDCPは、複素加算を実行して、A’_realおよびA’_imagを生成し、第2のDCPは複素減算を実行して、B’_real、B’_imagを生成する。結果をDCP間の共有メモリ内に置くことにより、それぞれの結果の値を、結果生成の後の次のクロック・サイクルで他のDCPから利用できるようにする。
図13は、データ共有を例示するMMAPの実施形態の一部のブロック図である。図13は、それぞれ図3のDCP 300の実施例とするDCP1、DCP2を含むMMAPの実施形態の一部を示している。DCP1とDCP2はそれぞれ、DCC1とDCC2に結合されるとともに、複数の他のDCCにも結合されており、それぞれは図4のDCC 400の例である。簡単にするため、接続の一部しか図13に示されていない。
DCP1は、DCP1からDCC1の接続により示されているように、上述のバタフライ計算の複素乗算の実部を実行し、その結果をDCC1に格納するように構成されている。同様に、DCP2は、DCP2からDCC2の接続により示されているように、上述の複素乗算の虚部を実行し、その結果をDCC2に格納するように構成されている。DCP1とDCP2は、複素乗算のそれぞれの部分を同時に実行し、複素数の結果の各部が次のサイクルでDCP1とDCP2の両方から読み込めるように構成されている。これが使用可能であることは、DCC1とDCC2のそれぞれからDCP1とDCP2のそれぞれへの接続により示される。
その後、DCP1は上述のバラフライ計算の複素加算を実行するように構成され、その後、DCP2は上述のバタフライ計算の複素減算を実行するように構成される。DCP1とDCP2は、それぞれの加算または減算を同時に実行するように構成されている。
図13は、DCPが完全同期モードで決定論的プログラムにより緊密に結合されている協同処理を例示する。例示されている実施形態では、DCPのそれぞれが、同じ数の算術演算オペレーションを実行する。DCPは両方とも同じマスタ・クロックにより駆動できるため、FFT計算の間中、ロック・ステップでの動作が可能である。したがって、データ値は、最小限度の通信または同期オーバーヘッドで、各DCP間で共有する。
MMAPの一実施形態では、長さ8のFFT計算は8つのDCPの配列で実装する。このような実施形態では、長さ8のFFTの複素計算は11サイクルで実行できる。8個のDCPでの長さ8のFFTの計算に対する理論上の最小待ち時間は、算術演算オペレーションを80回実行するものとして、10サイクルである。この実施形態では、11番目のサイクルは、FFTの第3段でリモート・データ転送を実行することにより発生させる。しかし、第1の2段では、通信オーバーヘッドによる待ち時間の追加は生じえない。
実施例2−ベクトル算術演算
MMAPは、所定のDCPに対するレジスタ・ファイルと一次キャッシュ(つまり、L1キャッシュ)の両方の役割を完遂するDCC内の共通メモリ構造を備える。DCCに結合されている各DCPは、このメモリに対する即時かつ直接的アクセスを行える。2つの隣接するDCPの協同処理でプロセス間でレジスタの内容を直接共有することによりこのメモリ・リソースを効率よく使用できる方法を実施例1は例示していた。さらに、各DCCが柔軟にデータをアドレスし、伝達できることにより他の利点も得られることに留意されたい。これらの機能により、データのベクトルとストリームのきわめて効率のよい処理が可能になる。非常に単純な実施例として、2つのベクトルを加算するタスクを考察する。各ベクトルがn個の成分を有する場合、ベクトル和もn個の成分を有し、ベクトル和の各成分は2つの元のベクトルのそれぞれから1つの成分を加算した結果である。このタスクを実行するには、最低でもn回の算術演算オペレーションが必要である。MMAPでは、このタスクは、nの大きさに関係なく、またタスクに使用されるDCPの個数と無関係に、付加的通信オーバーヘッドを実質的にいっさい発生せずに完了する。
一実施形態では、ベクトル加算タスクを実行するように単一のDCPを構成される。nが比較的大きい場合、最も実用的な手法は、単純ループを使用してオペレーションをコーディングすることであろう。MMAPでは、このループをn回繰り返されるであろう単一命令で実装する。ループの各繰り返しで、入力ベクトルのそれぞれから異なるソース成分を使用し、出力ベクトルに対し異なる結果の成分を出力する。MMAPアーキテクチャの一実施形態では、このループをnサイクルで完了する。従来のプロセッサだと、キャッシュとレジスタ・ファイルとの間でデータを移動するロードとストア命令のために追加命令(場合によっては、追加サイクルも)を必要とすることがある。
他の実施形態では、複数のDCPを使用してベクトル加算タスクを実行できる。このような実施形態では、使用されるDCPの数に直接比例して計算のスピードを高められる。p個のDCPを使用する場合、各DCPは、Nをn/p以上の最小の整数としてN回の繰り返しを有するループを実行するように構成される。各DCPで必要なデータが隣接DCC内で利用可能な限り、単一命令ループで計算を十分に実行できる。隣接DCC内でデータが利用できない場合、DCCの通信機能を使用して、隣接DCCに格納されたデータの出所からデータを「ストリーミングで流す」。いくつかのMMAPの実施形態では、データ通信は計算と同じ速度で実行する(例えば、マスタ・クロックの1サイクル当たり1ワードの速さ)。MMAP通信アーキテクチャは効率が非常に高いため、ループの内側で通信および命令をセットアップすることが可能であり、ストリーミング・データとの同期またはロードのために命令を追加する必要がない。プロセッサは、上述の統合されたフロー制御メカニズムを使用して入力データ・ストリームと自動的に同期をとる。これにより、データは計算の実行速度と同じ速度で到着し、n成分のベクトル全体をNサイクルで処理する。
本発明のシステムおよび方法は、好ましい実施形態に関して説明されているが、本明細書に記載されている特定の形態に制限する意図はなく、それどころか、付属の請求項で定められている本発明の精神および範囲内に含めても妥当であると思われるような代替え形態、修正形態、および等価物を対象とすることが意図されている。
本明細書で数学的マトリックス・アルゴリズム・プロセッサ(MMAP)と呼ばれる、処理システムの一実施形態を例示するブロック図である。 MMAP接続スキームの一実施形態を例示するブロック図である。 動的構成可能プロセッサ(DCP)とも呼ばれる、プロセッサの一実施形態を例示するブロック図である。 動的構成可能通信要素(DCC)の一実施形態を例示するブロック図である。 メモリ・アクセス・タイプを1クロック・サイクルに割り当てることの一実施形態を例示するタイミング図である。 同期データ伝送モードの一実施形態のオペレーションを例示するタイミング図である。 トランスペアレト・データ伝送モードのいくつかの実施形態のオペレーションを例示するタイミング図である。 MMAPの構成可能モード・データ伝送の一実施形態のオペレーションを例示する流れ図である。 MMAPのフロー制御の一実施形態のオペレーションを例示する流れ図である。 ヘッダ・ワードに関するルーティング論理回路の一実施形態のオペレーションを例示する図である。 MMAPの一部を通る経路の実施例を示すブロック図である。 バタフライ計算の一実施形態のデータ・フローを例示する流れ図である。 データ共有を例示するMMAPの実施形態の一部のブロック図である。

Claims (64)

  1. それぞれ少なくとも1つの算術論理演算ユニット、1つの命令処理ユニット、複数のプロセッサ・ポートを備える複数のプロセッサと、
    それぞれ複数の通信ポート、第1のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、それぞれのプロセッサが対応する複数の論理的にまたは物理的に隣接する動的構成可能通信要素と結合し、かつ、これらの動的構成可能通信要素は、さらに、対応する複数の論理的にまたは物理的に隣接する動的構成可能通信要素と結合するように、散在配置で結合され、
    前記複数の動的構成可能通信要素の内の所定の要素のそれぞれは、前記第1のメモリからの異なるデータ値を前記所定の動的構成可能通信要素に結合された前記プロセッサの内の少なくとも2つの異なるプロセッサに同時に供給するように構成されてなるシステム。
  2. 前記複数のプロセッサのそれぞれは、さらに、複数のプロセッサ・ポートを含み、
    前記動的構成可能通信要素のそれぞれは、さらに、複数の通信ポートを含み、
    前記プロセッサのそれぞれについて、前記複数のプロセッサ・ポートは前記複数の動的構成可能通信要素の第1の部分集合に結合するように構成され、
    前記動的構成可能通信要素のそれぞれについて、前記複数の通信ポートは前記複数のプロセッサの部分集合に結合するように構成された通信ポートの第1の部分集合と前記動的構成可能通信要素の第2の部分集合に結合するように構成された通信ポートの第2の部分集合を含む、請求項1に記載のシステム。
  3. 前記プロセッサはそれぞれ、前記複数のプロセッサ・ポートのそれぞれの1つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合され、
    前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第1の部分集合のそれぞれの1つを介して複数の近隣のプロセッサに結合され、
    前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第2の部分集合のそれぞれの1つを介して複数の近隣の動的構成可能通信要素のそれぞれに結合される請求項に記載のシステム。
  4. 前記プロセッサはそれぞれ、前記複数のプロセッサ・ポートのそれぞれの1つを介して4つの近隣の動的構成可能通信要素のそれぞれに結合され、
    前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第1の部分集合のそれぞれの1つを介して4つの近隣のプロセッサのそれぞれに結合され、
    前記動的構成可能通信要素はそれぞれ、前記複数の通信ポートの前記第2の部分集合のそれぞれの1つを介して4つの近隣の動的構成可能通信要素のそれぞれに結合される請求項に記載のシステム。
  5. 前記複数のプロセッサと前記複数の動的構成可能通信要素は、実質的に同質な方法で分散される請求項に記載のシステム。
  6. 前記プロセッサのそれぞれについて、前記命令処理ユニットは、前記少なくとも1つの算術論理演算ユニットを制御するように結合され、
    前記プロセッサはそれぞれ、複数のアドレス指定可能なロケーションを含む少なくとも第2のメモリをさらに備え、前記第2のメモリは前記少なくとも1つの命令処理ユニットに結合され、
    前記プロセッサのそれぞれについて、前記複数のプロセッサ・ポートは、前記少なくとも1つの算術論理演算ユニットに結合されたプロセッサ・ポートの第1の部分集合と前記命令処理ユニットに結合されたプロセッサ・ポートの第2の部分集合とを備える請求項に記載のシステム。
  7. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリが複数の前記プロセッサ間で共有される請求項に記載のシステム。
  8. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリが複数の近隣のプロセッサ間で共有される請求項に記載のシステム。
  9. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリが4つの近隣のプロセッサ間で共有される請求項に記載のシステム。
  10. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリがその近隣のプロセッサのレジスタ・ファイルの少なくとも一部として動作する請求項に記載のシステム。
  11. 前記プロセッサはそれぞれ、前記動的構成可能通信要素のうちの異なるいくつかの要素の前記第1のメモリからデータを取得するように動的に構成可能である請求項に記載のシステム。
  12. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリは、命令実行時にプロセッサにより直接アクセス可能なデータを格納する請求項に記載のシステム。
  13. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリは、命令実行時に複数の近隣のプロセッサのそれぞれにより直接アクセス可能なデータを格納する請求項に記載のシステム。
  14. 前記プロセッサはそれぞれ、複数の近隣の動的構成可能通信要素のうちのどれかの要素の第1のメモリからデータを取得するように動作可能である請求項に記載のシステム。
  15. 第1のプロセッサは、第1の期間に第1の動的構成可能通信要素の第1のメモリから第1のデータを取得するように動作可能であり、前記第1のプロセッサは、第2の期間に第2の動的構成可能通信要素の第1のメモリから第2のデータを取得するように動作可能である請求項に記載のシステム。
  16. 第1のプロセッサは、前記複数の動的構成可能通信要素のそれぞれの部分集合から複数のデータ値を実質的に同時に取得するように動作可能である請求項に記載のシステム。
  17. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリは、前記複数のプロセッサのそれぞれの部分集合に複数のデータ値を実質的に同時に供給するように構成される請求項に記載のシステム。
  18. 前記動的構成可能通信要素のそれぞれについて、前記第1のメモリは、複数のアクセス・ポートを介して前記複数の通信ポートに結合され、かつ、複数のアドレス指定可能なロケーションを含み、
    前記動的構成可能通信要素のそれぞれについて、前記ルーティング・エンジンは、前記複数の通信ポートに結合され、かつ、前記複数の通信ポートの間でデータの経路選択を行うように構成される請求項に記載のシステム。
  19. 前記複数の動的構成可能通信要素はそれぞれ、前記複数の通信ポートに結合された直接メモリ・アクセス・エンジンをさらに備え、前記第1のメモリと前記複数の通信ポートの間でデータを転送するように構成される請求項に記載のシステム。
  20. 前記動的構成可能通信要素の異なる部分集合の間でデータ転送を行うための異なる経路を作成するように動作可能である請求項に記載のシステム。
  21. 前記プロセッサの少なくとも部分集合のそれぞれは、前記動的構成可能通信要素の異なる部分集合の間でデータ転送を行うための異なる経路を動的に作成するように動作可能である請求項20に記載のシステム。
  22. 前記動的構成可能通信要素の少なくとも部分集合のそれぞれは、前記動的構成可能通信要素の異なる部分集合の間で経路を動的に作成するように動作可能である請求項20に記載のシステム。
  23. 第1の経路は第1の複数の動的構成可能通信要素を備え、
    前記第1の経路内の前記第1の複数の動的構成可能通信要素のそれぞれについて、前記第1の経路は、データ転送を開始する前に前記第1の経路の一部を実装するように前記動的構成可能通信要素の前記ルーティング・エンジンを構成することにより動的に作成される請求項20に記載のシステム。
  24. 所定の経路は、前記動的構成可能通信要素の前記部分集合のそれぞれについて、ルーティング情報を含む、データ転送の第1の部分を受信したことに対する応答として前記経路を実装するように前記ルーティング・エンジンを構成することで動的に作成される請求項20に記載のシステム。
  25. それぞれの経路は破壊させるように操作可能であり、所定の経路は、破壊されるまでデータ転送に使用できる状態を保つ請求項20に記載のシステム。
  26. それぞれの経路は、それぞれの経路上のメッセージ・データの転送に関係なく、使用できる状態を保つように動作可能である請求項20に記載のシステム。
  27. 第1のプロセッサは、近隣の第2の動的構成可能通信要素にデータを直接供給するように第1の動的構成可能通信要素を構成するように動作可能であり、
    前記第1の動的構成可能通信要素と遠隔の第3の動的構成可能通信要素との間で経路を作成して、前記第1の動的構成可能通信要素が経路を通して前記遠隔の第3の動的構成可能通信要素にデータを供給できるように、前記第1のプロセッサが動作可能である請求項20に記載のシステム。
  28. 前記プロセッサのうちの1つは、前記複数の動的構成可能通信要素の中間部分集合を通して第1の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
    前記転送元デバイスが前記中間部分集合を通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送先デバイスまたは前記中間部分集合のうちの1つがストールしすると、そのストールしたデバイスが、前記中間部分集合の1つまたは複数を通してストール情報を前記転送元デバイスに伝搬するように動作可能であり、
    前記転送元デバイスは、前記ストール情報を受信した後前記第1の複数のデータの転送を一時停止するように動作可能であり、前記ストール後と前記一時停止前に送信された前記第1の複数のデータの一部は、前記中間部分集合の少なくとも1つにバッファされる請求項に記載のシステム。
  29. 前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の1つまたは複数を通して前記転送元デバイスに伝搬するように動作可能であり、
    前記中間部分集合の前記少なくとも1つは、前記ストールしたデバイスが通信に使用可能になった後、前記第1の複数のデータの前記部分を前記転送先デバイスに伝送し、
    前記転送元デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの転送を再開する請求項28に記載のシステム。
  30. 前記第1の複数のデータは、複数のデータ信号を介して伝達され、
    前記ストール情報は、ブロッキング信号のアサートを介して伝達され、
    前記通信に使用可能であることを示す情報は、ブロッキング信号のデアサートを介して伝達され、
    前記ブロッキング信号は、前記複数のデータ信号と並行して経路選択される請求項29に記載のシステム。
  31. 前記プロセッサのうちの1つは、前記複数の動的構成可能通信要素の中間部分集合を通して第1の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
    前記転送元デバイスが前記中間部分集合を通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送元デバイスまたは前記中間部分集合のうちの1つがストールした場合、前記ストールしたデバイスは、前記中間部分集合の1つまたは複数を通してストール情報を前記転送先デバイスに伝搬するように動作可能であり、
    前記転送先デバイスは、前記ストール情報を受信した後前記第1の複数のデータの処理を一時停止するように動作可能である請求項に記載のシステム。
  32. 前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の1つまたは複数を通して前記転送先デバイスに伝搬するように動作可能であり、
    前記転送先デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの処理を再開する請求項31に記載のシステム。
  33. 前記第1の複数のデータは、複数のデータ信号を介して伝達され、
    前記ストール情報は、アイドル信号のアサートを介して伝達され、
    前記通信に使用可能であることを示す情報は、前記アイドル信号のデアサートを介して伝達され、
    前記アイドル信号は、前記複数のデータ信号と並行して経路選択される請求項32に記載のシステム。
  34. 前記プロセッサのうちの1つは、前記複数の動的構成可能通信要素の中間部分集合を通して第1の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
    前記転送元デバイスが前記中間部分集合を通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送元デバイスの1つ、前記中間部分集合の1つ、または前記転送先デバイスがストールした場合、前記ストールしたデバイスは、前記中間部分集合の1つまたは複数を通してストール情報を前記転送元デバイスと前記転送先デバイスの1つまたは複数に伝搬するように動作可能であり、
    前記転送元デバイスは、前記ストール情報を受信した後前記第1の複数のデータの転送を一時停止するように動作可能であり、前記ストール後と前記一時停止前に送信された前記第1の複数のデータの一部は、前記中間部分集合の少なくとも1つにバッファされ、
    前記転送先デバイスは、前記ストール情報を受信した後前記第1の複数のデータの処理を一時停止するように動作可能である請求項に記載のシステム。
  35. 前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の1つまたは複数を通して前記転送元デバイスと前記転送先デバイスの1つまたは複数に伝搬するように動作可能であり、
    前記中間部分集合の前記少なくとも1つは、前記ストールしたデバイスが通信に使用可能になった後、前記第1の複数のデータの前記部分を前記転送先デバイスに伝送し、
    前記転送元デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの転送を再開し、
    前記転送先デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの処理を再開する請求項34に記載のシステム。
  36. 前記第1の複数のデータは、複数のデータ信号を介して伝達され、
    前記ストール情報は、ブロッキング信号とアイドル信号を介して伝達され、
    前記ブロッキング信号と前記アイドル信号は、前記複数のデータ信号と並行して経路選択される請求項35に記載のシステム。
  37. 前記動的構成可能通信要素のそれぞれは、
    複数の入力ポートと、
    複数の出力レジスタと、
    前記複数の入力ポートの1つまたは複数からデータを受信し、前記複数の出力レジスタの選択された1つまたは複数にデータを送信するように結合されたクロスバーとをさらに備え、
    それぞれの前記出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的に動作する請求項に記載のシステム。
  38. 前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造される請求項に記載のシステム。
  39. 前記プロセッサの少なくとも部分集合のそれぞれは、消費電力を低減するために必要に応じて有効/無効を設定するように動作可能な請求項に記載のシステム。
  40. 前記プロセッサの少なくとも部分集合のそれぞれは、同期方式で動作するように動作可能な請求項に記載のシステム。
  41. 前記動的構成可能通信要素のそれぞれの前記第1のメモリは、アキュムレータ、ステータス・レジスタ、オペランド・バッファ、1つまたは複数のアドレス・ジェネレータ制御回路のみを備える請求項に記載のシステム。
  42. 複数のプロセッサと、
    それぞれ複数の通信ポート、第1のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
    前記プロセッサのうちの1つは、前記複数の動的構成可能通信要素の中間部分集合を通して第1の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
    前記転送元デバイスが前記中間部分集合を通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送先デバイスまたは前記中間部分集合のうちの1つがストールした場合、前記ストールしたデバイスは、前記中間部分集合の1つまたは複数を通してストール情報を前記転送元デバイスに伝搬するように動作可能であり、
    前記転送元デバイスは、前記ストール情報を受信した後前記第1の複数のデータの転送を一時停止するように動作可能であり、前記ストール後と前記一時停止前に送信された前記第1の複数のデータの一部は、前記中間部分集合の少なくとも1つにバッファされるシステム。
  43. 前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の1つまたは複数を通して前記転送元デバイスに伝搬するように動作可能であり、
    前記中間部分集合の前記少なくとも1つは、前記ストールしたデバイスが通信に使用可能になった後、前記第1の複数のデータの前記部分を前記転送先デバイスに伝送し、
    前記転送元デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの転送を再開する請求項42に記載のシステム。
  44. 複数のプロセッサと、
    それぞれ複数の通信ポート、第1のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
    前記プロセッサのうちの1つは、前記複数の動的構成可能通信要素の中間部分集合を通して第1の複数のデータを転送先デバイスに転送する転送元デバイスとして構成可能であり、
    前記転送元デバイスが前記中間部分集合を通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始した後、前記転送元デバイスまたは前記中間部分集合のうちの1つがストールした場合、前記ストールしたデバイスは、前記中間部分集合の1つまたは複数を通してストール情報を前記転送先デバイスに伝搬するように動作可能であり、
    前記転送先デバイスは、前記ストール情報を受信した後前記第1の複数のデータの処理を一時停止するように動作可能であるシステム。
  45. 前記ストールしたデバイスが通信に使用可能になった場合、前記ストールしたデバイスは、通信に使用可能であることを示す情報を前記中間部分集合の1つまたは複数を通して前記転送先デバイスに伝搬するように動作可能であり、
    前記転送先デバイスは、前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの処理を再開する請求項44に記載のシステム。
  46. 複数の中間デバイスを通して転送先デバイスに結合されている転送元デバイスから前記転送先デバイスにデータを転送する方法であって、
    前記複数の中間デバイスを通して第1の複数のデータを前記転送先デバイスに転送するように前記転送元デバイスを構成することと、
    前記転送元デバイスが前記複数の中間デバイスを通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始することと、
    前記中間デバイスの少なくとも1つまたは前記転送先デバイスが前記転送開始後にストールすることと、
    前記ストール後、前記中間デバイスの1つまたは複数を通してストール情報を前記転送元デバイスに伝搬することと、
    を含み、前記転送元デバイスは前記ストール情報を受信した後に前記第1の複数のデータの転送を一時停止し、前記ストール後と前記一時停止前に送信された前記第1の複数のデータの部分集合は前記中間デバイスの1つまたは複数にバッファされる方法。
  47. 前記中間デバイスの前記少なくとも1つまたは前記転送先デバイスが通信に使用可能になることと、
    前記使用可能になった後に、通信に使用可能であることを示す情報を前記転送元デバイスに伝搬することと、
    前記使用可能になった後、前記中間デバイスの前記部分集合が前記第1の複数のデータの前記部分集合を前記転送先デバイスに伝送することと、
    前記転送元デバイスが前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの転送を再開することとをさらに含む請求項46に記載の方法。
  48. 前記方法は、複数のプロセッサと複数の動的構成可能通信要素を備えるシステム内で動作し、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造され、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
    前記転送元デバイスは、前記プロセッサのうちの1つを備え、
    前記複数の中間デバイスは、複数の動的構成可能通信要素を備える請求項46に記載の方法。
  49. 前記複数のプロセッサのそれぞれは、少なくとも1つの算術論理演算ユニット、少なくとも1つの命令処理ユニット、複数のプロセッサ・ポートを備え、
    前記複数の動的構成可能通信要素はそれぞれ、複数の通信ポート、少なくとも1つのメモリ、ルーティング・エンジンを備える請求項48に記載の方法。
  50. 複数の中間デバイスを通して転送先デバイスに結合されている転送元デバイスから前記転送先デバイスにデータを転送する方法であって、
    前記複数の中間デバイスを通して第1の複数のデータを前記転送先デバイスに転送するように前記転送元デバイスを構成することと、
    前記転送元デバイスが前記複数の中間デバイスを通して前記第1の複数のデータを前記転送先デバイスに転送する動作を開始することと、
    前記中間デバイスの少なくとも1つまたは前記転送元デバイスが前記転送開始後にストールすることと、
    前記ストール後、前記中間デバイスの1つまたは複数を通してストール情報を前記転送先デバイスに伝搬することと、
    前記転送先デバイスが前記ストール情報を受信した後前記第1の複数のデータの処理を一時停止することとを含む方法。
  51. 前記中間デバイスの前記少なくとも1つまたは前記転送元デバイスが通信に使用可能になることと、
    前記使用可能になった後に、通信に使用可能であることを示す情報を前記転送先デバイスに伝搬することと、
    前記転送先デバイスが前記通信に使用可能であることを示す情報を受信した後前記第1の複数のデータの処理を再開することとをさらに含む請求項50に記載の方法。
  52. 前記方法は、複数のプロセッサと複数の動的構成可能通信要素を備えるシステム内で動作し、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造され、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
    前記転送元デバイスは、前記プロセッサのうちの1つを備え、
    前記複数の中間デバイスは、複数の動的構成可能通信要素を備える請求項50に記載の方法。
  53. それぞれ少なくとも1つの算術論理演算ユニット、少なくとも1つの命令処理ユニット、複数のプロセッサ・ポートを備える複数のプロセッサと、
    それぞれ複数の通信ポート、少なくとも第1のメモリ、ルーティング・エンジンを備える複数の動的構成可能通信要素とを備え、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上に製造され、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
    前記複数の動的構成可能通信要素の内の所定の要素のそれぞれは、前記第1のメモリからの異なるデータ値を前記所定の動的構成可能通信要素に結合された前記プロセッサの内の少なくとも2つの異なるプロセッサに同時に供給するように構成され、
    前記動的構成可能通信要素はそれぞれ、
    複数の入力ポートと、
    複数の出力レジスタと、
    前記複数の入力ポートの1つまたは複数からデータを受信し、前記複数の出力レジスタの選択された1つまたは複数にデータを送信するように結合されたクロスバーとを備え、
    それぞれの前記出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的に動作するシステム。
  54. 前記プロセッサのそれぞれについて、前記少なくとも1つの命令処理ユニットは、前記少なくとも1つの算術論理演算ユニットを制御するように結合され、
    前記プロセッサはそれぞれ、複数のアドレス指定可能なロケーションを含む少なくとも第2のメモリをさらに備え、前記第2のメモリは前記少なくとも1つの命令処理ユニットに結合され、
    前記複数のプロセッサ・ポートは、前記少なくとも1つの算術論理演算ユニットに結合されたプロセッサ・ポートの第1の部分集合と前記少なくとも1つの命令処理ユニットに結合されたプロセッサ・ポートの第2の部分集合とを備える請求項53に記載のシステム。
  55. 前記複数の通信ポートは、前記複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第1の部分集合と、前記複数の動的構成可能通信要素の部分集合に結合するように構成された通信ポートの第2の部分集合とを備え、
    前記少なくとも第1のメモリは、複数のアクセス・ポートを介して前記複数の通信ポートに結合され、複数のアドレス指定可能ロケーションを含み、
    前記ルーティング・エンジンは、前記複数の通信ポートに結合され、前記複数の通信ポートの間でデータの経路選択を行うように構成される請求項53に記載のシステム。
  56. 前記複数の動的構成可能通信要素はそれぞれ、前記複数の通信ポートに結合された直接メモリ・アクセス・エンジンをさらに備え、前記少なくとも第1のメモリと前記複数の通信ポートの間でデータを転送するように構成される請求項53に記載のシステム。
  57. 相互接続ネットワークと、
    データ交換を行うように構成された複数の動的構成可能通信要素とを備え、それぞれの前記要素は、
    前記相互接続ネットワークに結合された複数の入力ポートと、
    前記相互接続ネットワークに結合された複数の出力レジスタと、
    前記複数の入力ポートの1つまたは複数からデータを受信し、前記複数の出力レジスタの選択された1つまたは複数にデータを送信するように結合されたクロスバーとを備え、
    それぞれの前記出力レジスタは、同期データ転送モードまたはトランスペアレト・データ転送モードで選択的に動作し、
    前記複数の動的構成可能通信要素の内の所定の要素のそれぞれは、異なるデータ値を前記所定の動的構成可能通信要素に結合された前記プロセッサの内の少なくとも2つの異なるプロセッサに同時に供給するように構成されてなるシステム。
  58. 複数の中間デバイスを通して転送先デバイスに結合されている転送元デバイスから転送先デバイスにデータを転送する方法であって、
    異なるデータ値を前記転送元デバイスに結合された少なくとも2つの異なるプロセッサに同時に供給するように前記転送元デバイスを構成することと、
    前記複数の中間デバイスを通して第1の複数のデータを前記転送先デバイスに転送するように前記転送元デバイスを構成することと、
    同期データ転送モードまたはトランスペアレト・データ転送モードで動作するように前記複数の中間デバイスのそれぞれを構成することと、
    単一のマスタ・クロック・サイクルで単一の中間デバイスを通して、前記単一の中間デバイスが同期データ転送モードで動作するように構成されたことに応じて、前記第1の複数のデータを転送することと、
    単一のマスタ・クロック・サイクルで複数の中間デバイスを通して、前記複数の中間デバイスのそれぞれがトランスペアレト・データ転送モードで動作するように構成されたことに応じて、前記第1の複数のデータを転送することとを含む方法。
  59. 前記方法は、複数のプロセッサと複数の動的構成可能通信要素を備えるシステム内で動作し、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、散在配置で結合され、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造される請求項58に記載の方法。
  60. 前記転送元デバイスは、前記プロセッサのうちの1つを備え、
    前記複数の中間デバイスは、複数の動的構成可能通信要素を備える請求項59に記載の方法。
  61. 前記複数のプロセッサのそれぞれは、少なくとも1つの算術論理演算ユニット、少なくとも1つの命令処理ユニット、複数のプロセッサ・ポートを備え、
    前記複数の動的構成可能通信要素はそれぞれ、複数の通信ポート、少なくとも1つのメモリ、ルーティング・エンジンを備える請求項59に記載の方法。
  62. 複数の中間デバイスを通して転送先デバイスのそれぞれに結合されている、1つの転送元デバイスから複数の転送先デバイスにデータを転送する方法であって、
    異なるデータ値を前記転送元デバイスに結合された少なくとも2つの異なるプロセッサに同時に供給するように前記転送元デバイスを構成することと、
    1つまたは複数の中間デバイスを通して第1の複数のデータを第1の転送先デバイスに転送するように前記転送元デバイスを構成することと、
    同期データ転送モードで動作するように前記複数の中間デバイスのそれぞれを構成することと、
    1つまたは複数のマスタ・クロック・サイクルを含む第1の期間に、それぞれの前記マスタ・クロック・サイクルで前記第1の複数のデータを単一の中間デバイスを通して転送することを含む、前記転送元デバイスから前記第1の転送先デバイスに前記第1の複数のデータを転送することと、
    前記複数の中間デバイスを通して第2の複数のデータを第2の転送先デバイスに転送するように前記転送元デバイスを構成することと、
    トランスペアレト・データ転送モードで動作するように前記複数の中間デバイスのそれぞれを構成することと、
    単一のマスタ・クロック・サイクルで複数の中間デバイスを通して前記転送元デバイスから前記第2の転送先デバイスに前記第2の複数のデータを転送することとを含む方法。
  63. 集積回路を製造する方法であって、
    プロセッサと動的構成可能通信要素を備えるユニットを作製することを含み、
    前記プロセッサは、算術論理演算ユニット、命令処理ユニット、複数のプロセッサ・ポートを備え、
    前記動的構成可能通信要素は、複数の通信ポート、第1のメモリ、ルーティング・エンジンを備え、
    複数の前記ユニットを基板に配置し相互接続することを含み、前記複数のプロセッサと前記複数の動的構成可能通信要素は散在配置で結合され、
    前記プロセッサのそれぞれについて、前記複数の動的構成可能通信要素の第1の部分集合に結合するように前記複数のプロセッサ・ポートが構成され、
    前記複数の動的構成可能通信要素の内の所定の要素のそれぞれは、前記第1のメモリからの異なるデータ値を前記所定の動的構成可能通信要素に結合された前記プロセッサの内の少なくとも2つの異なるプロセッサに同時に供給するように構成され、
    前記動的構成可能通信要素のそれぞれについて、前記複数の通信ポートは、前記複数のプロセッサからなる部分集合に結合するように構成された通信ポートの第1の部分集合と前記複数の動的構成可能通信要素の第2の部分集合に結合するように構成された通信ポートの第2の部分集合を備える方法。
  64. 複数のプロセッサであって、それぞれ、
    少なくとも1つの算術論理演算ユニットと、
    前記算術論理演算ユニットを制御するように結合され、複数のアドレス指定可能なロケーションを含む少なくとも第1のメモリを備える少なくとも1つの命令処理ユニットと、
    前記算術論理演算ユニットに結合された第1の部分集合と前記命令処理ユニットに結合された第2の部分集合を含む、複数のプロセッサ・ポートとを備えるプロセッサと;
    複数の動的構成可能通信要素であって、それぞれ、
    前記複数のプロセッサの部分集合に結合するように構成された第3の部分集合と前記複数の動的構成可能通信要素の部分集合に結合するように構成された第4の部分集合を含む複数の通信ポートと、
    複数のアクセス・ポートを介して前記複数の通信ポートに結合され、複数のアドレス指定可能ロケーションを含む少なくとも第2のメモリと、
    前記複数の通信ポートに結合され、前記複数の通信ポートの間でデータの経路選択を行うように構成されているルーティング・エンジンと、
    前記複数の通信ポートに結合され、前記第2のメモリと前記複数の通信ポートとの間でデータ転送を行うように構成された直接メモリ・アクセス・エンジンとを備える動的構成可能通信要素とを備え、
    前記複数のプロセッサと前記複数の動的構成可能通信要素は、単一集積回路上で製造され、前記複数の動的構成可能通信要素の内の所定の要素のそれぞれは、前記第2のメモリからの異なるデータ値を前記所定の動的構成可能通信要素に結合された前記プロセッサの内の少なくとも2つの異なるプロセッサに同時に供給するように構成されるシステム。
JP2004517818A 2002-06-26 2003-06-25 散在しているプロセッサと通信要素を備える処理システム Expired - Lifetime JP4391935B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US39173402P 2002-06-26 2002-06-26
US10/602,292 US7415594B2 (en) 2002-06-26 2003-06-24 Processing system with interspersed stall propagating processors and communication elements
PCT/US2003/020049 WO2004003781A2 (en) 2002-06-26 2003-06-25 Processing system with interspersed processors and communication elements

Publications (2)

Publication Number Publication Date
JP2005531089A JP2005531089A (ja) 2005-10-13
JP4391935B2 true JP4391935B2 (ja) 2009-12-24

Family

ID=30003204

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004517818A Expired - Lifetime JP4391935B2 (ja) 2002-06-26 2003-06-25 散在しているプロセッサと通信要素を備える処理システム

Country Status (7)

Country Link
US (8) US7415594B2 (ja)
EP (6) EP2237165B1 (ja)
JP (1) JP4391935B2 (ja)
AT (1) ATE478389T1 (ja)
AU (1) AU2003280403A1 (ja)
DE (1) DE60333837D1 (ja)
WO (1) WO2004003781A2 (ja)

Families Citing this family (112)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8418129B1 (en) 2001-12-14 2013-04-09 Qualcomm Incorporated Method for automatically generating code to define a system of hardware elements
US7230947B1 (en) * 2001-12-14 2007-06-12 Applied Micro Circuits Corporation Minimum latency cut-through switch fabric
US7352694B1 (en) * 2001-12-14 2008-04-01 Applied Micro Circuits Corporation System and method for tolerating data link faults in a packet communications switch fabric
US7424013B1 (en) * 2001-12-20 2008-09-09 Applied Micro Circuits Corporation System and method for granting arbitrated bids in the switching of information
US6934427B2 (en) * 2002-03-12 2005-08-23 Enablence Holdings Llc High density integrated optical chip with low index difference waveguide functions
US7415594B2 (en) 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7346013B2 (en) * 2002-07-18 2008-03-18 Coherent Logix, Incorporated Frequency domain equalization of communication signals
US8451933B2 (en) * 2002-07-18 2013-05-28 Coherent Logix, Incorporated Detection of low-amplitude echoes in a received communication signal
JP4388895B2 (ja) * 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
US8397034B1 (en) * 2003-06-27 2013-03-12 Cypress Semiconductor Corporation Multi-port arbitration system and method
US7373111B2 (en) 2004-02-19 2008-05-13 Marvell International Ltd. Communication access apparatus, systems, and methods
US7937557B2 (en) * 2004-03-16 2011-05-03 Vns Portfolio Llc System and method for intercommunication between computers in an array
US8103866B2 (en) * 2004-06-18 2012-01-24 Nethra Imaging Inc. System for reconfiguring a processor array
US20080235490A1 (en) * 2004-06-18 2008-09-25 Anthony Mark Jones System for configuring a processor array
US7483422B2 (en) * 2005-02-10 2009-01-27 International Business Machines Corporation Data processing system, method and interconnect fabric for selective link information allocation in a data processing system
US7451231B2 (en) * 2005-02-10 2008-11-11 International Business Machines Corporation Data processing system, method and interconnect fabric for synchronized communication in a data processing system
US20060176890A1 (en) * 2005-02-10 2006-08-10 International Business Machines Corporation Data processing system, method and interconnect fabric for improved communication in a data processing system
US7840914B1 (en) * 2005-05-13 2010-11-23 Massachusetts Institute Of Technology Distributing computations in a parallel processing environment
US7904695B2 (en) * 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous power saving computer
US9098641B1 (en) * 2006-01-30 2015-08-04 Cypress Semiconductor Corporation Configurable bus
EP1984836A4 (en) * 2006-02-16 2009-08-26 Vns Portfolio Llc RESOURCE ALLOCATION IN A COMPUTER SERIES
US7966481B2 (en) 2006-02-16 2011-06-21 Vns Portfolio Llc Computer system and method for executing port communications without interrupting the receiving computer
US7904615B2 (en) 2006-02-16 2011-03-08 Vns Portfolio Llc Asynchronous computer communication
US8826228B2 (en) * 2006-03-27 2014-09-02 Coherent Logix, Incorporated Programming a multi-processor system
TW200817925A (en) * 2006-03-31 2008-04-16 Technology Properties Ltd Method and apparatus for operating a computer processor array
US7836435B2 (en) * 2006-03-31 2010-11-16 Intel Corporation Checking for memory access collisions in a multi-processor architecture
US20070270671A1 (en) * 2006-04-10 2007-11-22 Vivometrics, Inc. Physiological signal processing devices and associated processing methods
US7761817B2 (en) 2006-05-22 2010-07-20 Coherent Logix, Incorporated Designing an ASIC based on execution of a software program on a processing system
JP4934356B2 (ja) * 2006-06-20 2012-05-16 株式会社日立製作所 映像処理エンジンおよびそれを含む映像処理システム
WO2007149494A2 (en) * 2006-06-21 2007-12-27 Element Cxi, Llc. Resilient integrated circuit architecture
US7657773B1 (en) * 2006-06-22 2010-02-02 Lattice Semiconductor Corporation Clock distribution chip for generating both zero-delay and non-zero-delay clock signals
JP2008042343A (ja) * 2006-08-02 2008-02-21 Nec Electronics Corp スイッチ回路およびスイッチ装置
US8122078B2 (en) * 2006-10-06 2012-02-21 Calos Fund, LLC Processor with enhanced combined-arithmetic capability
JP5055942B2 (ja) * 2006-10-16 2012-10-24 富士通株式会社 計算機クラスタ
US8250556B1 (en) 2007-02-07 2012-08-21 Tilera Corporation Distributing parallelism for parallel processing architectures
US20080282062A1 (en) * 2007-05-07 2008-11-13 Montvelishsky Michael B Method and apparatus for loading data and instructions into a computer
CN101904149B (zh) 2007-07-05 2015-09-09 相干逻辑公司 用于在移动设备上接收和呈现视听流的方法、设备和系统
US8861379B2 (en) * 2007-07-26 2014-10-14 Verizon Patent And Licensing Inc. Test automation for an integrated telephony call management service
US8103855B2 (en) * 2007-09-22 2012-01-24 Navosha Corporation Linking functional blocks for sequential operation by DONE and GO components of respective blocks pointing to same memory location to store completion indicator read as start indicator
US8132137B1 (en) * 2007-11-10 2012-03-06 Altera Corporation Prediction of dynamic current waveform and spectrum in a semiconductor device
US7996454B2 (en) * 2007-11-16 2011-08-09 Vns Portfolio Llc Method and apparatus for performing complex calculations in a multiprocessor array
US20090300334A1 (en) * 2008-05-30 2009-12-03 Vns Portfolio Llc Method and Apparatus for Loading Data and Instructions Into a Computer
US8327114B1 (en) 2008-07-07 2012-12-04 Ovics Matrix processor proxy systems and methods
US7870365B1 (en) 2008-07-07 2011-01-11 Ovics Matrix of processors with data stream instruction execution pipeline coupled to data switch linking to neighbor units by non-contentious command channel / data channel
US7958341B1 (en) * 2008-07-07 2011-06-07 Ovics Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory
US8131975B1 (en) 2008-07-07 2012-03-06 Ovics Matrix processor initialization systems and methods
US8145880B1 (en) 2008-07-07 2012-03-27 Ovics Matrix processor data switch routing systems and methods
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
WO2010052663A2 (en) * 2008-11-05 2010-05-14 Nxp B.V. Electrical circuit arrangement and method for designing an electrical circuit arrangement
EP2443751A1 (en) 2009-06-17 2012-04-25 Coherent Logix Incorporated Parallel execution of trellis-based methods
EP3432152B1 (en) 2010-10-15 2020-03-18 Coherent Logix Incorporated Disabling communication in a multiprocessor system
US8787368B2 (en) * 2010-12-07 2014-07-22 Advanced Micro Devices, Inc. Crossbar switch with primary and secondary pickers
CN102063408B (zh) * 2010-12-13 2012-05-30 北京时代民芯科技有限公司 一种多核处理器片内数据总线
CN103493345B (zh) * 2011-02-10 2016-05-11 舍弗勒技术股份两合公司 磁阻电动机
JP2012252490A (ja) * 2011-06-02 2012-12-20 Renesas Electronics Corp マルチプロセッサおよびそれを用いた画像処理システム
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
JP5876319B2 (ja) * 2012-02-21 2016-03-02 日本電信電話株式会社 サービス提供システム、サービス提供方法、リソースマネージャ、プログラム
US9230046B2 (en) 2012-03-30 2016-01-05 International Business Machines Corporation Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
US9286423B2 (en) * 2012-03-30 2016-03-15 International Business Machines Corporation Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
US9094304B2 (en) 2012-05-10 2015-07-28 Cognex Corporation Systems and methods for dynamically configuring communication data items
CN111405315B (zh) 2012-06-12 2022-04-12 相干逻辑公司 用于编码和交付视频内容的分布式体系结构
US9137173B2 (en) * 2012-06-19 2015-09-15 Advanced Micro Devices, Inc. Devices and methods for interconnecting server nodes
US9160617B2 (en) 2012-09-28 2015-10-13 International Business Machines Corporation Faulty core recovery mechanisms for a three-dimensional network on a processor array
US8990616B2 (en) * 2012-09-28 2015-03-24 International Business Machines Corporation Final faulty core recovery mechanisms for a two-dimensional network on a processor array
CN104903855B (zh) 2012-11-06 2018-09-18 相干逻辑公司 用于配置多处理器阵列的方法和设备以及开发系统
US9477585B2 (en) 2012-11-09 2016-10-25 Coherent Logix, Incorporated Real time analysis and control for a multiprocessor system
US8959301B2 (en) * 2012-11-09 2015-02-17 International Business Machines Corporation Accessing data in a storage system
WO2014081457A1 (en) * 2012-11-21 2014-05-30 Coherent Logix Incorporated Processing system with interspersed processors dma-fifo
WO2014088698A2 (en) 2012-12-06 2014-06-12 Coherent Logix, Incorporated Processing system with synchronization instruction
CN105122172B (zh) 2012-12-13 2017-10-27 相干逻辑公司 同步数字系统及避免其中的时钟信号错误的方法
JP6341930B2 (ja) 2012-12-13 2018-06-13 コーヒレント・ロジックス・インコーポレーテッド 改善された二次相互接続ネットワークを備えたマルチプロセッサシステム
US9258257B2 (en) 2013-01-10 2016-02-09 Qualcomm Incorporated Direct memory access rate limiting in a communication device
US10572150B2 (en) 2013-04-30 2020-02-25 Hewlett Packard Enterprise Development Lp Memory network with memory nodes controlling memory accesses in the memory network
US9195575B2 (en) 2013-05-17 2015-11-24 Coherent Logix, Incorporated Dynamic reconfiguration of applications on a multi-processor embedded system
CN105378651B (zh) * 2013-05-24 2018-09-18 相干逻辑公司 具有可编程优化的存储器-网络处理器
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
KR20150086718A (ko) * 2014-01-20 2015-07-29 삼성전자주식회사 메모리를 이용하여 파이프라인이 데이터를 처리하는 방법 및 장치
EP3012975B1 (en) * 2014-10-20 2019-07-03 IMEC vzw Error resilient digital signal processing device
US20170083313A1 (en) * 2015-09-22 2017-03-23 Qualcomm Incorporated CONFIGURING COARSE-GRAINED RECONFIGURABLE ARRAYS (CGRAs) FOR DATAFLOW INSTRUCTION BLOCK EXECUTION IN BLOCK-BASED DATAFLOW INSTRUCTION SET ARCHITECTURES (ISAs)
CN108370255B (zh) 2015-11-24 2022-04-12 相干逻辑公司 极性码连续消去列表解码器中的存储器管理和路径排序
US9992135B2 (en) * 2015-12-11 2018-06-05 Intel Corporation Apparatus and method for fusion of compute and switching functions of exascale system into a single component by using configurable network-on-chip fabric with distributed dual mode input-output ports and programmable network interfaces
CN108701021B (zh) 2015-12-28 2023-06-09 相干逻辑公司 处理元件
EP4187539B1 (en) * 2017-07-30 2024-06-05 NeuroBlade Ltd. A memory-based distributed processor architecture
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US11093251B2 (en) 2017-10-31 2021-08-17 Micron Technology, Inc. System having a hybrid threading processor, a hybrid threading fabric having configurable computing elements, and a hybrid interconnection network
US10873754B2 (en) 2017-12-12 2020-12-22 Coherent Logix, Incorporated Low latency video codec and transmission with parallel processing
US11360930B2 (en) 2017-12-19 2022-06-14 Samsung Electronics Co., Ltd. Neural processing accelerator
CN111919202A (zh) 2018-03-31 2020-11-10 美光科技公司 多线程自调度可重新配置计算架构的执行控制
US11288074B2 (en) 2018-03-31 2022-03-29 Micron Technology, Inc. Loop execution control for a multi-threaded, self-scheduling reconfigurable computing fabric using a reenter queue
US11048656B2 (en) 2018-03-31 2021-06-29 Micron Technology, Inc. Multi-threaded, self-scheduling reconfigurable computing fabric
EP3776241B1 (en) 2018-03-31 2023-06-28 Micron Technology, Inc. Loop thread order execution control of a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776237A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Multiple types of thread identifiers for a multi-threaded, self-scheduling reconfigurable computing fabric
KR102454405B1 (ko) 2018-03-31 2022-10-17 마이크론 테크놀로지, 인크. 멀티 스레드, 자체 스케줄링 재구성 가능한 컴퓨팅 패브릭에 대한 효율적인 루프 실행
US10990391B2 (en) 2018-03-31 2021-04-27 Micron Technology, Inc. Backpressure control using a stop signal for a multi-threaded, self-scheduling reconfigurable computing fabric
EP3776188A1 (en) 2018-03-31 2021-02-17 Micron Technology, Inc. Conditional branching control for a multi-threaded, self- scheduling reconfigurable computing fabric
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
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional 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
WO2020163287A1 (en) 2019-02-04 2020-08-13 Coherent Logix, Inc. A comprehensive system design to address the needs for virtual segmentation of the coaxial cable plant
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
US11294672B2 (en) 2019-08-22 2022-04-05 Apple Inc. Routing circuitry for permutation of single-instruction multiple-data operands
US11573834B2 (en) 2019-08-22 2023-02-07 Micron Technology, Inc. Computational partition for a multi-threaded, self-scheduling reconfigurable computing fabric
US11150900B2 (en) 2019-08-28 2021-10-19 Micron Technology, Inc. Execution or write mask generation for data selection in a multi-threaded, self-scheduling reconfigurable computing fabric
US11494331B2 (en) 2019-09-10 2022-11-08 Cornami, Inc. Reconfigurable processor circuit architecture
US11256518B2 (en) * 2019-10-09 2022-02-22 Apple Inc. Datapath circuitry for math operations using SIMD pipelines
US11580388B2 (en) * 2020-01-03 2023-02-14 Microsoft Technology Licensing, Llc Distributed processing architecture
US11076210B1 (en) * 2020-01-03 2021-07-27 Microsoft Technology Licensing, Llc Distributed processing architecture
US11620169B2 (en) * 2020-03-13 2023-04-04 Nvidia Corporation Barrierless and fenceless shared memory synchronization with write flag toggling
US11593164B2 (en) 2021-03-03 2023-02-28 Microsoft Technology Licensing, Llc Data transfer scheduling for hardware accelerator

Family Cites Families (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5459846A (en) * 1988-12-02 1995-10-17 Hyatt; Gilbert P. Computer architecture system having an imporved memory
US4139149A (en) * 1977-08-31 1979-02-13 Ncr Corporation Display system
US4493048A (en) * 1982-02-26 1985-01-08 Carnegie-Mellon University Systolic array apparatuses for matrix computations
US4901230A (en) * 1983-04-25 1990-02-13 Cray Research, Inc. Computer vector multiprocessing control with multiple access memory and priority conflict resolution method
US4709327A (en) * 1983-05-31 1987-11-24 Hillis W Daniel Parallel processor/memory circuit
US5008815A (en) * 1983-05-31 1991-04-16 Thinking Machines Corporation Parallel processor
US4598400A (en) * 1983-05-31 1986-07-01 Thinking Machines Corporation Method and apparatus for routing message packets
US4814973A (en) * 1983-05-31 1989-03-21 Hillis W Daniel Parallel processor
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
US5151996A (en) * 1983-05-31 1992-09-29 Thinking Machines Corporation Multi-dimensional message transfer router
US5152000A (en) * 1983-05-31 1992-09-29 Thinking Machines Corporation Array communications arrangement for parallel processor
US4873630A (en) * 1985-07-31 1989-10-10 Unisys Corporation Scientific processor to support a host processor referencing common memory
US4945479A (en) * 1985-07-31 1990-07-31 Unisys Corporation Tightly coupled scientific processing system
US4739476A (en) * 1985-08-01 1988-04-19 General Electric Company Local interconnection scheme for parallel processing architectures
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
US4807183A (en) * 1985-09-27 1989-02-21 Carnegie-Mellon University Programmable interconnection chip for computer system functional modules
DE3750839T2 (de) 1986-10-29 1995-05-04 United Technologies Corp Modulare Multiprozessor-N-Dimensionsgitterarchitektur.
JPH01241660A (ja) 1988-03-24 1989-09-26 Toshiba Corp プロセッサ間通信方式
US5193199A (en) * 1988-04-14 1993-03-09 Zilog, Inc. Device and method for programming critical hardware parameters
US5630162A (en) * 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5794059A (en) * 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5689719A (en) * 1991-06-28 1997-11-18 Sanyo Electric O., Ltd. Parallel computer system including processing elements
RO105026B1 (en) 1991-10-10 1993-09-01 Ion Minca Network structure for parallel processing of calcullation programs
JPH05216846A (ja) 1992-02-03 1993-08-27 Agency Of Ind Science & Technol 通信パケット転送方式
JP2976675B2 (ja) 1992-02-21 1999-11-10 日本電気株式会社 アレイプロセッサのルーティング方法
JP2642039B2 (ja) * 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
EP0570729A3 (en) 1992-05-22 1994-07-20 Ibm Apap i/o programmable router
JPH06274467A (ja) 1993-03-23 1994-09-30 Sumitomo Metal Ind Ltd フィールドプログラマブルプロセッサアレイ
JPH06290158A (ja) * 1993-03-31 1994-10-18 Fujitsu Ltd 再構成可能なトーラス・ネットワーク方式
WO1994027216A1 (en) * 1993-05-14 1994-11-24 Massachusetts Institute Of Technology Multiprocessor coupling system with integrated compile and run time scheduling for parallelism
US5642359A (en) * 1993-06-02 1997-06-24 Ibm Corporation Multiplexing device for a redundant channel bus
JPH0736842A (ja) 1993-07-20 1995-02-07 Toshiba Corp 並列計算機
US5581705A (en) * 1993-12-13 1996-12-03 Cray Research, Inc. Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system
EP1037279B1 (en) * 1994-03-22 2003-03-05 Hyperchip Inc. Massively parallel data processing system with photovoltaic cells for absorbing ambiant light
US5634043A (en) * 1994-08-25 1997-05-27 Intel Corporation Microprocessor point-to-point communication
US5708835A (en) * 1995-03-27 1998-01-13 Hughes Electronics Dual-directional parallel processor
US5864738A (en) * 1996-03-13 1999-01-26 Cray Research, Inc. Massively parallel processing system using two data paths: one connecting router circuit to the interconnect network and the other connecting router circuit to I/O controller
US6141769A (en) * 1996-05-16 2000-10-31 Resilience Corporation Triple modular redundant computer system and associated method
KR100211123B1 (ko) * 1997-05-23 1999-07-15 윤종용 고속 패킷 스위칭을 위한 다단 상호 연결 망
US5936977A (en) * 1997-09-17 1999-08-10 Cypress Semiconductor Corp. Scan path circuitry including a programmable delay circuit
US6115836A (en) * 1997-09-17 2000-09-05 Cypress Semiconductor Corporation Scan path circuitry for programming a variable clock pulse width
US5953285A (en) * 1997-09-17 1999-09-14 Cypress Semiconductor Corp. Scan path circuitry including an output register having a flow through mode
US6633945B1 (en) * 1997-12-07 2003-10-14 Conexant Systems, Inc. Fully connected cache coherent multiprocessing systems
JPH11353288A (ja) * 1998-06-04 1999-12-24 Toshiba Corp 並列計算機及びメモリ装置
JP2001014288A (ja) 1999-07-02 2001-01-19 Nippon Telegr & Teleph Corp <Ntt> セルアレイ間のメッセージ通信装置
US6681282B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Online control of a multiprocessor computer system
US7069372B1 (en) * 2001-07-30 2006-06-27 Cisco Technology, Inc. Processor having systolic array pipeline for processing data packets
US6950394B1 (en) * 2001-09-07 2005-09-27 Agilent Technologies, Inc. Methods and systems to transfer information using an alternative routing associated with a communication network
US7415594B2 (en) 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
BRPI0810542A2 (pt) 2007-04-23 2014-10-21 Plastmed Ltd Método para transferência sem contaminação de líquido, aparelho de transferência de fluídos, método de acoplamento do aparelho, seção conectora para uso em uma operação de transferência de fluídos e método de acoplamento da seção conectora
JP5233566B2 (ja) 2007-12-20 2013-07-10 株式会社リコー トナーホッパ、プロセスカートリッジ及び画像形成装置
JP6035872B2 (ja) 2012-05-29 2016-11-30 セイコーエプソン株式会社 制御装置、制御装置の制御方法、及び、プログラム

Also Published As

Publication number Publication date
US8112612B2 (en) 2012-02-07
US7937558B2 (en) 2011-05-03
EP2237164B1 (en) 2015-08-19
US9535877B2 (en) 2017-01-03
US7415594B2 (en) 2008-08-19
EP2237165A2 (en) 2010-10-06
ATE478389T1 (de) 2010-09-15
EP2224345B1 (en) 2012-06-20
JP2005531089A (ja) 2005-10-13
EP1520233B1 (en) 2010-08-18
EP2224345A3 (en) 2010-11-03
EP2237165A3 (en) 2010-11-10
US20040030859A1 (en) 2004-02-12
EP2237165B1 (en) 2014-10-29
AU2003280403A1 (en) 2004-01-19
US8478964B2 (en) 2013-07-02
US8832413B2 (en) 2014-09-09
EP2224345A2 (en) 2010-09-01
EP2977911A1 (en) 2016-01-27
US7987338B2 (en) 2011-07-26
US20100229020A1 (en) 2010-09-09
US20120102299A1 (en) 2012-04-26
US20140351557A1 (en) 2014-11-27
EP2237164A3 (en) 2010-11-10
EP2977911B1 (en) 2017-11-22
EP2239667A2 (en) 2010-10-13
EP1520233A2 (en) 2005-04-06
US20080148009A1 (en) 2008-06-19
WO2004003781A2 (en) 2004-01-08
EP2239667B1 (en) 2013-10-16
US20130254515A1 (en) 2013-09-26
WO2004003781A3 (en) 2004-08-12
EP2239667A3 (en) 2010-11-10
EP2237164A2 (en) 2010-10-06
US20100228925A1 (en) 2010-09-09
US20100268914A1 (en) 2010-10-21
US7987339B2 (en) 2011-07-26
DE60333837D1 (de) 2010-09-30

Similar Documents

Publication Publication Date Title
JP4391935B2 (ja) 散在しているプロセッサと通信要素を備える処理システム
US10747712B1 (en) Transferring data in a parallel processing environment
US20200117521A1 (en) Processing system with interspersed processors with multi-layer interconnect
JP2006522406A (ja) データ・フロー・マシン
JP2006522406A5 (ja)
Bolic Lecture Scribing
Taylor et al. Stream Multicore Processors
Taylor et al. 14 Stream Multicore Processors
Yuan Hybrid Nanophotonic NOC Design for GPGPU

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080328

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080408

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080708

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080715

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20080808

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20080815

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080902

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090929

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

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091008

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4391935

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20121016

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20131016

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term