JP2004531783A - Scalable interconnect structure for parallel operations and parallel memory access - Google Patents

Scalable interconnect structure for parallel operations and parallel memory access Download PDF

Info

Publication number
JP2004531783A
JP2004531783A JP2002536883A JP2002536883A JP2004531783A JP 2004531783 A JP2004531783 A JP 2004531783A JP 2002536883 A JP2002536883 A JP 2002536883A JP 2002536883 A JP2002536883 A JP 2002536883A JP 2004531783 A JP2004531783 A JP 2004531783A
Authority
JP
Japan
Prior art keywords
data
node
logic
interconnect
ring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2002536883A
Other languages
Japanese (ja)
Other versions
JP4128447B2 (en
Inventor
ヘッセ、ジョン
リード、コーク・エス
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Interactic Holdings LLC
Original Assignee
Interactic Holdings LLC
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 Interactic Holdings LLC filed Critical Interactic Holdings LLC
Publication of JP2004531783A publication Critical patent/JP2004531783A/en
Application granted granted Critical
Publication of JP4128447B2 publication Critical patent/JP4128447B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related 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/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17356Indirect interconnection networks
    • G06F15/17368Indirect interconnection networks non hierarchical topologies
    • G06F15/17375One dimensional, e.g. linear array, ring

Abstract

いくつかの革新的技術を用いることで複数のプロセッサが同じデータに並列アクセスすることが可能である。第1に、複数の離れたプロセッサが同じデータ位置からの読み取りを要求することができ、それらの要求をオーバラップした期間において処理することが可能である。第2に、複数のプロセッサが同じ位置にあるデータにアクセスでき、同じデータに対し読み取り、書き込みまたはマルチ処理をオーバラップした期間に行うことが可能である。第3に、一つのデータパケットを複数位置にマルチキャストすることができ、また、複数パケットを複数セットのターゲット位置にマルチキャストすることができる。Several processors allow multiple processors to access the same data in parallel. First, multiple distant processors can request reads from the same data location, and those requests can be processed in overlapping periods. Second, multiple processors can access data at the same location and can read, write, or multi-process the same data during overlapping periods. Third, one data packet can be multicast to multiple locations and multiple packets can be multicast to multiple sets of target locations.

Description

【0001】
(発明の背景)
高度な並列演算を行うシステムで生じている問題に、複数のプロセッサへの十分なデータフローの供給がある。米国特許第5,996,020号及び米国特許第6,289,021号には、ネットワークのデータフローを大幅に改善する広帯域で低遅延なインターコネクト(相互接続)構造が開示されている。ネットワークにおける並列メモリーアクセス及び演算をサポートすることにより、そのような広帯域・低遅延インターコネクト構造を十分に活用し得るシステムが必要とされている。
【0002】
(発明の要約)
いくつかの革新的技術を用いることで複数のプロセッサが同じデータに並列アクセスすることが可能である。第1に、複数の離れたプロセッサが同じデータ位置からの読み取りを要求することができ、それらの要求をオーバラップした期間において処理することが可能である。第2に、複数のプロセッサが同じ位置にあるデータにアクセスでき、同じデータに対し読み取り、書き込みまたはマルチ処理をオーバラップした期間に行うことが可能である。第3に、一つのデータパケットを複数位置にマルチキャストすることができ、また、複数パケットを複数セットのターゲット位置にマルチキャストすることができる。
【0003】
以下の説明において、“パケット”という用語は、好適にはシリアル形式のデータユニットを指す。パケットの例としては、インターネットプロトコル(IP)パケット、イーサネット(登録商標)フレーム、ATMセル、スイッチファブリックセグメント(switch−fabric segments)があり、それらには、より大きなフレームまたはパケットの一部、スーパーコンピュータのプロセッサ間メッセージ、及びメッセージ長さが有限の他のデータメッセージタイプを含まれる。
【0004】
本明細書に開示されるシステムは、あるスイッチに到達した複数パケットが同じ位置にあるデータにアクセスする場合に通信において発生するのと同様の問題を解決する。
【0005】
他のマルチレベル最小ロジックネットワーク構造(Multiple Level Minimum Logic structures)を、多種多様なプロセッサ及びコンピュータ、メモリーデバイス、ロジックデバイスを含む多くの非常に有用な装置及びシステムにおいて、基本構築ブロック(fundamental building block)として用いることができる。そのような装置及びシステムの例としては、並列ランダムアクセスメモリー(PRAM)及び並列演算エンジンがある。これらの装置及びシステムは、内蔵記憶装置またはメモリー及びロジック回路とともにネットワーク接続構造を基本構築ブロックとして含む。データ記憶装置は先入れ先出し(FIFO)リングの形態とすることができる。
【0006】
(詳細な説明)
以下に説明する好適実施例の新規であると考えられる特徴は特許請求の範囲に規定される。しかし、構造及び処理方法の両方に関連する本発明の実施例は添付の図面を参照しつつ以下の説明を読むことにより最も良く理解されるだろう。
【0007】
図1の模式的なブロック図には、1または複数のネットワークインターコネクト構造(network interconnect structure)を含む構築ブロックから形成された汎用システム100の例が示されている。図示されている例では、汎用システム100は、ネットワークインターコネクト構造から形成されたトップスイッチ100とボトムスイッチ112とを有する。“ネットワークインターコネクト構造”という用語は他のインターコネクト構造を指すこともできる。別のシステムでは、ネットワークインターコネクト構造から形成される更に別の要素を含むこともできる。汎用システム100には、基本的な例示的システムの中核要素として含まれ得る様々な構成要素が示されている。ある実施例では、中核要素に加えて別の要素も含まれる。他の要素には、1)共有メモリー、2)トップスイッチとボトムスイッチの間の直接接続130、3)ボトムスイッチとI/Oとの間の直接接続140、及び、4)ロジックユニット114とボトムスイッチ112との間に接続されるコンセントレータ(concentrator)などが含まれ得る。
【0008】
汎用システム100はトップスイッチ110を有しており、このトップスイッチ110は、入力データパケットを入力ライン136から、または、外部ソース及び可能ならばボトムスイッチからバス130を通じて受信し、受信したパケットを動的プロセッサ・イン・メモリー式ロジックモジュール(dynamic processor−in−memory logic module:DPIM)114へと配布する入力ターミナルとして機能する。トップスイッチ110は、パケットヘッダ内に格納された通信情報に基づき汎用システム100内におけるパケットのルーティングを行う。パケットはトップスイッチ110からDPIMモジュール114へと送られる。DPIMモジュール114からトップスイッチ110への制御信号により、衝突を防ぐべくパケット入力のタイミングが制御される。これにより、そのような制御がない場合に発生し得るDPIM内のデータまたはボトムスイッチ内のデータとの衝突が防止される。このシステムは、出力ライン及びバス130、132、134及び136を用いて、更なる演算要素、通信要素、記憶要素及び他の要素(図示せず)に情報を転送することもできる。
【0009】
データパケットはトップスイッチ110に入り、各パケットのアドレスフィールドに基づいてターゲットDPIM114へと送られる。パケット内に含まれる情報を可能ならば他の情報と共に用いて、ロジックDPIM114によりパケットまたはDPIMメモリー内に含まれるデータに対して実行される処理を決定することができる。例えば、パケット内の情報により、DPIMメモリー内に格納されたデータを変形(modify)したり、DPIMメモリー内に含まれるデータをボトムスイッチ112へと送ったり、或いは、DPIMロジックモジュールによって生成された他のデータがボトムスイッチから出力されるようにすることができる。DPIMからのパケットはボトムスイッチへと送られる。汎用システム100の他のオプションとして、演算ユニット(computational unit)またはメモリーユニット或いはその両方を含むことができる。演算ユニット126はI/Oユニット124を通じてシステム100の外部またはトップスイッチ110或いはその両方へとデータパケットを送るべく配置することができる。ボトムスイッチがトップスイッチへとパケットを送る場合、パケットは直接送ることもできるし、或いは、システム100のサブコンポーネントである集積回路の間のタイミング及び制御を扱う1または複数のインターコネクトモジュール(図示せず)を介して送ることもできる。
【0010】
システムの一実施例では、データ記憶装置はDPIM114内の先入れ先出し(FIFO)データ記憶リングR、及び、演算ユニット(CU)126に関連づけられた通常のデータ記憶装置の形態を有する。FIFOリングは、環状接続された複数の単ビットシフトレジスタからなる。FIFOリングは2種類の構成要素を含む。第1の例では、従来知られているが、FIFOリングは、隣接する単ビットシフトレジスタにのみ接続され単純なFIFO310を形成する複数の単ビットシフトレジスタを有する。第2の例では、リングの他のシフトレジスタは、例えばロジックモジュール114のようなシステムの他の要素内に含まれる単ビットまたはマルチビットレジスタからなる。これら2種類の構成要素は直列に接続されリングを形成する。例えば、FIFOリングの全長Fを200ビットとし、64ビットが複数のロジックモジュールL内に格納され、残りの136ビットはFIFOの直列接続されたレジスタ内に格納されるようにすることができる。システム全体に供給されるクロックがFIFO要素及びシフトレジスタに接続され、データビットを“バケツリレー”式に次の位置へと進ませる。サイクル時間(cycle period)は、データがFIFOリングのちょうど1サイクルを完了するのに要するクロック周期で表される時間として定義される。サイクル時間の整数値は構成要素の数で表したFIFOリングの長さに等しい。例えば、200個の構成要素(即ち、長さ200)からなるリングでは、サイクル時間は200システムクロック周期となる。システムは、異なるレートで動作する局所的なクロックまたはタイミングソースを有することも可能である。実施例によって、システムの全てのFIFOリングが同じ長さを有しても、所定の最小長さの整数倍でばらついた長さを有してもよい。別の実施例では、一つのリングが複数の並列経路を備えたバス構造を有し、リング内に保持されるデータ量がリング長さFの整数倍となるようにすることもできる。
【0011】
汎用システム100では、トップスイッチは、システム最大長さまでの様々な長さを有するパケットを扱うことが可能である。ある用途では、パケットは全て同じ長さを有することもできる。一般的には、様々な長さを有するパケットがトップスイッチに入力される。パケットの長さはPで表され、PはFを越えない。
【0012】
同様に、ボトムスイッチも様々な長さのパケットを扱うことができる。汎用システム100の典型的な実施例では、DPIMロジックモジュール114及びCU126の機能及び動作に応じて異なるビット長さを有するデータが生成される。DPIMは独立して機能することができ、または、これらDPIMからデータを集め、システム100の内または外にあるDPIMまたは他の要素にデータを供給することが可能な、図示しない複数のシステムがあってもよい。
【0013】
図2の模式的ブロック図は、図1に含まれるよりも少ない数の構築ブロックから形成された並列ランダムアクセスメモリー(PRAM)システム200の例を示している。このPRAMシステムは、ネットワークインターコネクト構造から形成されるトップスイッチ110、コンセントレータ150及びボトムスイッチ112を有している。またこのシステムは、データを格納する複数のDPIM114を含む。これらのDPIMユニットは通常READ及びWRITE機能を実行することができ、それによりシステムを並列ランダムアクセスメモリーとして使用することが可能となっている。
【0014】
例示している実施例では、トップスイッチ110に入力されるデータパケットは次の形式を有する:
ペイロード|処理コード2|アドレス2|処理コード1|アドレス1|タイミングビット
これは以下のように表すことができる:
PAYLOAD|OP2|AD2|OP1|AD1|BIT
【0015】
PAYLOADフィールドのビット数はPayLで表す。OP2及びOP1のビット数はそれぞれOP2L及びOP1Lで表す。AD2及びAD1のビット数はそれぞれAD2L及びAD1Lで表す。BITフィールドの長さは好適実施例では1ビットである。
【0016】
以下の表に、パケットフィールドの簡単な説明を示す。

Figure 2004531783
【0017】
BITフィールドは最初にスイッチに入るが、パケットが存在することを示すべく常に1にセットされる。BITフィールドは“トラフィックビット(traffic bit)”とも呼ばれる。AD1フィールドはパケットをトップスイッチを通じてそのパケットのターゲットDPIMへと導くのに用いられる。トップスイッチ110を複数の階層レベル及びコラムをなすように構成し、パケットがこれらのレベルを通過するようにすることができる。パケットがトップスイッチ110の新たなレベルに入るたび、AD1フィールドの1ビットが除去され、それによりAD1フィールドは短くなる。システム200も同じ技法を用いる。パケットがトップスイッチ110を出るとき、AD1フィールドには何も残らない。従って、パケットはトップスイッチを出るとき以下の形式を有する:
PAYLOAD|OP2|AD2|OP1|BIT
【0018】
システム100及び200は複数のDPIMユニットを有する。図3はDPIMユニットの一例を図示するとともにDPIMとトップスイッチ110及びボトムスイッチ112との間のデータ及び制御接続路を示す模式的ブロック図である。図3には4つのデータインターコネクト構造Z、C、R及びBが示されている。インターコネクト構造Zはトップスイッチ110内に配置されたFIFOリングとすることができる。インターコネクト構造C及びRはDPIMモジュール内に配置されたFIFOリングからなる。いくつかの実施例では、DPIMはデータを直接ボトムスイッチへ送る。それらの実施例では、ボトムスイッチがインターコネクト構造である場合、インターコネクト構造BはFIFOリングである。図1及び7はコンセントレータを有さないシステムを図示し、図2、3、4A及び5はコンセントレータを含むシステムを示している。
【0019】
データはトップスイッチ110を通過しターゲット出力リングZ(J=AD1)へ到達する。リングZ=Zは、出力ライン326に接続された複数のノード330を有する。DPIMモジュールは“データ通信リング”と呼ばれるパケット受信リングC 302及び1または複数の“データ記憶リング”R 304を有する。図3に示したDPIMは単一のデータ記憶リングRを有する。各構造Z、C、R及びBは、相互接続された複数の単ビットFIFOノードを含む。構造内のノードのいくつかは単一のデータ入力ポート及び単一のデータ出力ポートを有し、インターコネクトされて単純なマルチノードFIFOを形成する。構造内の他のノードは更なるデータ入力ポート、更なるデータ出力ポート或いはその両方を有する。またこれらノードは制御信号出力ポートまたは制御信号入力ポートを有することもできる。リングZはリングCから制御信号を受信し、データをロジックモジュールL 314に送る。リングC及びRはロジックモジュールL 314に対しデータの送受信を行う。FIFO B 380はロジックモジュールLに制御信号を送り、ロジックモジュールLからデータを受け取る。一つのDPIMは、インターコネクト構造またはFIFO B内の複数の入力ポートへとデータを送ることが可能な複数のロジックモジュールを有することができる。DPIMからのデータは、システムBのトップレベル内へと複数の列(rows)をなすように送り込むことができる。DPIMの数はメモリー位置の数と同じとすることができ、その場合、各DPIMは1ワードのデータを格納する単一の記憶リングRを有する。別の方法として、一つのDPIMユニットが複数の記憶リングRを含むものとすることもできる。アドレスAD1フィールドの一部によって、または、処理OP1フィールドの一部によって特定の記憶リングを同定することができる。
【0020】
パケット移動のタイミングは4つのリングで同期がとられている。パケットがリング内を循環する際、パケットはBITフィールドに関して整合される。整合の有益な結果として、リングCはリングZに制御信号328を送り、Z内のノードがCへとパケットを送るのを許可または禁止する。リングCのノード330から許可を受信すると、リングZ上のノード312はロジックモジュールLにパケットを送ることができ、ロジックモジュールはパケットを即座にビットシリアルに処理する位置に置かれる。同様に、データ記憶リングR内を循環しているパケットはリングCと同期され、それによりパケットがそれぞれのリングを循環する際にそれぞれのビットがロジックモジュールLにより好適に処理される。データ記憶リングRは、後述するいくつかの新規な用途において用いることが可能なメモリー要素として機能する。複数のDPIMがトップスイッチと同じチップ上にはない場合、リングZのノードとロジックモジュールLとの間を結ぶ別個のデータ通信リング(図示せず)を用いてチップ間のタイミング及び制御を行うこともできる。
【0021】
記憶リングR内のデータは、トップスイッチのZリング306内のパケットの一部と整合及びオーバラップし、サイクル時間において同時に発生する複数のパケットによりトップスイッチ110からアクセス可能である。複数のロジックモジュール314がデータ通信リングC及びデータ記憶リングRに関連づけられている。一つのロジックモジュールLはリングC及びRからデータを読み出し、ある条件の下でデータに対して処理を施し、リングC及びRに書き込むことができる。更にロジックモジュールLはボトムスイッチ112またはコンセントレータにあるFIFO308のノード320へパケットを送ることができる。複数のDPIMがボトムスイッチと同じチップ上にない場合、インターコネクト構造Bのノード320とロジックモジュールL 314とを結ぶ別個のデータ通信リング(図示せず)を用いてチップ間のタイミング及び制御を行うことができる。また、一つのデバイスが1サイクル時間において通信リングの複数のビットにアクセスする必要がある場合にも、タイミング及び制御動作のために別個のデータ通信リングを用いることができる。
【0022】
パケットはロジックモジュール314を通じて通信リングCに入る。パケットはロジックモジュールLから出て、入力チャネルを通じて様々な角度でボトムスイッチに入る。
【0023】
汎用システム100のいくつかの例では、DPIM114のリングC及びRに沿ったロジックモジュールの全てが同じタイプであり、同様のロジック機能を実行する。他の例では、複数の異なるロジックモジュールタイプが用いられ、特定のDPIMのリングRに格納されたデータに対し複数のロジック機能を実行することが可能である。データがリングRを循環する際、ロジックモジュールL 314はデータを変形(modify)することができる。ロジックモジュールは、リングC及びリングRから、及びリングZ上のノードからモジュールをシリアルに通過するデータビットに作用する。典型的なロジック機能には、(1)ロード、記憶、読み出し、書き込みのようなデータ転送処理、(2)AND、OR、NOR、NAND、排他的OR、ビットテストなどの論理演算、及び(3)加算、減算、乗算、除算、超越関数などのような算術演算が含まれる。多数の他のタイプの論理演算を含むこともできる。ロジックモジュールの機能はロジックモジュールにハードワイア化することも、あるいは、ロジックモジュールに送られたパケットからロジックモジュールへとロードされるソフトウェアによって実現することもできる。ある実施例では、特定のデータ記憶リングRに関連する複数のロジックモジュールは独立して動作する。他の実施例では、ロジックモジュールのグループからデータを受信することができる別個のシステム(図示せず)によって複数のロジックモジュールグループが制御される。更に別の実施例では、ロジックモジュール制御システムはロジックモジュールから受信したデータに対して制御命令を実行する。
【0024】
図1及び図2において、各DPIMは一つのリングR及び一つのリングCを有する。システム100の別の実施例では、特定のDPIM114が複数のRリングを有する。このような複数Rリングの実施例において、一つのロジックモジュール314がCリング及び全てのRリングからのデータに同時にアクセスすることが可能である。同時アクセスによって、ロジックモジュールが1または複数のRリング上のデータを、Rリングの内容に基づき、且つ、関連する通信リングC及び受信されたパケットの内容にも基づいて、変形することが可能となる。
【0025】
ロジックモジュールによって実行される典型的な機能は、リングRに保持されたデータに関連してパケットのPAYLOADフィールドに保持されたデータに対してなされる、OP1フィールドに指定された処理の実行である。ある特定の例では、処理OP1は、パケットのPAYLOAD内のデータをアドレスAD1にあるリングR内に格納されたデータに加えることを指示する。その結果得られる和はアドレスAD2のボトムスイッチのターゲットポートへと送られる。OP1処理のデータフィールドに保持された命令によって指示され、ロジックモジュールは複数の処理を実行することができる。例えば、リングR 304内のデータを変更なくそのままとすることができる。ロジックモジュールはリングR 304内のデータをPAYLOADフィールドの内容で置き換えることもできる。或いは、ロジックモジュールLはPAYLOADフィールド内に保持されたデータを、リングR 304及びPAYLOADフィールド内に保持されていた内容に対して行った処理の結果で置き換えることもできる。別の例では、メモリーFIFOはデータだけでなくプログラム命令も格納することができる。
【0026】
通信リングC及び記憶リングRに関連する複数タイプのロジックモジュール314を含む汎用システム100は、ある処理を実行するのに用いられる特定のロジックモジュールを指定するのにOP1フィールドの1または複数のビットを用いることができる。ある実施例では、複数のロジックモジュールが同じデータに対して複数の処理を実行する。アドレスAD1=xのロジックモジュールのセットは、アドレスAD1=yのロジックモジュールのセットとは異なる処理を実行することができる。
【0027】
汎用システム100内を通るデータパケットの移動効率はデータフローのタイミングに依存する。いくつかのシステムでは、ロジックモジュールに関連づけられたバッファ(図示せず)がデータ転送のタイミングの維持に寄与する。多くの実施例で、タイミングはデータをバッファリングすることなく維持される。汎用システム100のインターコネクト構造は、好適なことに、データの効率的な並列演算、生成及びアクセスを実現する動作タイミングを有する。
【0028】
少なくとも1つのスイッチ、データ記憶リング304のグループ、及び関連するロジックモジュール314を含む複数の構成要素からなる汎用システム100は、様々な演算及び通信スイッチを実現するのに用いることができる。演算及び通信スイッチの例としては、インターネットスイッチングシステムで用いられるIPパケットルータまたはスイッチ、特殊用途ソーティングエンジン(sorting engine)、汎用コンピュータ、或いは、汎用または特定機能を有する多くの並列演算システムがある。
【0029】
図2の模式的なブロック図には、ネットワークインターコネクト構造を基本要素として用いて形成された並列ランダムアクセスメモリー(PRAM)が示されている。このPRAMは、複数のソースから同時にアクセス可能で且つ複数の送付先へ同時に送ることが可能なデータを格納する。このPRAMはトップスイッチ110を有しているが、トップスイッチ110のターゲットリングからパケットを受信する通信リングを有しても有さなくてもよい。通信リングを有さないインターコネクト構造では、リングZがロジックモジュールを通過する。トップスイッチ110は、ターゲットリングの各々からのT個の出力ポート210を有する。典型的なPRAMシステム200では、アドレス位置の数は、システムのI/Oポートの数より多い。例えば、PRAMシステムは、DPIMに格納された64Kワードのデータにアクセスする128個のI/Oポートを有する。AD1フィールドは64K個のDPIMアドレス114を可能とするべく16ビット長さとなっている。AD2フィールドは、128個の出力ポート204を可能とするべく8ビット長さとなっており、7ビットがアドレスを保持し、1ビットはアドレスのBIT2部分である。トップスイッチは128個の入力ポート202と、それぞれ出力ポート206を介したDPIMユニットへの多重接続を有する64K個のZリング(図示せず)とを有する。コンセントレータ150は64K(65536)個の入力ポート208と128個の出力ポート210とを有する。ボトムスイッチ112は128個の入力ポートと128個の出力ポート204とを有する。コンセントレータは、トップ及びボトムスイッチ及びロジックモジュールと同じ入力及び出力に対する制御タイミング及び信号規則に従う。
【0030】
別の態様として、トップスイッチはより少ない数の出力Zリング及び関連するDPIMを有することもできる。DPIMユニットが複数のRリングを有し、トータルのデータサイズは変わらないようにすることも可能である。
【0031】
図2に示されているPRAMは、通信リングC 302及び記憶リングR 304に直結したロジックモジュール314を含むDPIMユニット114を有している。DPIMユニット114は、出力データをボトムスイッチ112に供給するパケットコンセントレータ150に接続している。
【0032】
図3を参照すると、リングC上のノード330はトップスイッチのリングZ上のノード312に制御信号を送り、リングZの個々のノード312がロジックモジュールLへとパケットを送るのを許可する。リングZからパケットを受け取ると、ロジックモジュールLは幾つかの処理の一つを実行することができる。第1に、ロジックモジュールLはパケットのCリング上への載置(placing)を開始することができる。第2に、ロジックモジュールLはパケット内のデータを即座に使用開始することができる。第3に、ロジックモジュールLは生成されたパケットをCリング上に置くことなくコンセントレータ150に即座に送付し始めることができる。あるロジックモジュールLiがパケットPをCリング上に置き始めることができ、そのロジックモジュールLiがリング上に幾つかビットを置いた後、別のロジックモジュールLk(ここでk>i)がそれらのビットの処理及び除去を開始することができる。ある場合には、パケットP全体がリングC上に置かれることがない。ロジックモジュールはデータをCリングまたはRリングへと挿入することができ、或いは、データをコンセントレータ150に送ることもできる。コンセントレータに入るデータの制御にはコンセントレータからのライン324上の信号も用いられる。あるリングRに関連づけられた複数のロジックモジュール314は、そのリングRに関連づけることが可能な補助デバイス(図示せず)との付加的な送受信用相互接続を有することもできる。補助デバイスはシステムの目的及び機能に応じて様々な構造を有し様々な機能を奏することができる。補助デバイスの一例としてはシステムコントローラがある。
【0033】
ある実施例では、PRAM200は、全て同じロジックタイプを有し同じ機能を奏する複数のロジックモジュール314を含むDPIMを有する。
【0034】
別の実施例では、特定のアドレスにある第1のDPIM Sが異なるタイプ及び機能の複数のロジックモジュールを有することができる。第2のDPIM Tは第1のDPIM Sと比較して同じまたは異なるタイプのロジックモジュールを有することができる。PRAMの一応用例では、1データワードが一つの記憶リングRに格納される。データがリングR内を循環する際、ロジックモジュールはデータを変形することができる。このPRAMでは、ロジックモジュールはデータだけでなくプログラム命令も格納可能な記憶リングRの内容を変形する。
【0035】
このPRAMは、以下のように定義されるフィールドを含むように定められたパケットを用いてデータの記憶及び検索をする:
PAYLOAD|OP2|AD2|OP1|AD1|BIT
【0036】
パケットが存在することを示すべく1にセットされたBITフィールドが汎用システム100に入る。AD1フィールドは、所望のデータを含むデータ記憶リングR 304を含む特定のDPIMのアドレスを指定する。トップスイッチはアドレスAD1によって指定されたDPIM(AD1)にパケットを送る。示される例では、OP1フィールドは実行される処理を指定する単ビットからなる。例えば、論理値1はREAD要求を、論理値0はWRITE要求を指定する。
【0037】
READ要求では、位置AD1にあるDPIM内の受信ロジックモジュールがリングR上に格納されたデータをボトムスイッチ112のアドレスAD2へ送信する。WRITE要求では、パケットのPAYLOADフィールドがアドレスAD1のリングR上に置かれる。AD2はREAD要求においてボトムスイッチ112を通じてデータのルーティングをするのに用いられる宛先アドレスであり、メモリーの内容が送られるべき場所を指定する。OP2は所望に応じてアドレスAD2に位置するデバイスが送られてきたデータに対して実行すべき処理を記述する。処理OP1がREAD要求の場合、READ要求を実行するロジックモジュールはPAYLOADフィールドを用いない。
【0038】
一実施例では、PRAMはただ一つのタイプのロジックモジュール(READ及びWRITE処理の両方を実行するタイプ)を含む。PRAMの別の実施例では、別個のREAD要素とWRITE要素を備えたような、別のタイプのロジックモジュールが用いられる。
【0039】
図2及び図3を参照すると、図示されているPRAM200は適時にトップスイッチ110に入ってくるパケットを受信することにより処理を開始する。パケットPはトップスイッチ内をルーティングされアドレスAD1に位置するターゲットリングZに到達する。パケットのAD1フィールドはトップスイッチのターゲットリングZ306を指定する(ここでJ=AD1)。ノードS(図示せず)及びノードT(図示せず)がメッセージタイミングを規定するべく定められる。ノードSはリングRのノード330として定められ、ノードTはリングZのノード312として定められ、ノードSはノードTに制御ライン328を通じて制御信号を送るように配置される。グローバルタイミング信号に基づき、リングRのノードS 330はノードSにおけるタイミングビット到達時間を特定する。タイミングビット到達時間にノードSに値1のタイミングビットが到達すると、ノードSはライン328を通じてリングZ上のノードT 312にブロック信号(blocking signal)を送り、ノードTがパケットをライン326を通じてロジックユニットLへと送るのを禁止する。タイミングビット到達時間にノードSが値1のビットを受信しない場合、ノードCからノードSに入ってきているメッセージはなく、ノードSはノードTへ非ブロック(non−blocking)制御信号を送る。グローバルタイミングはノードTにおける制御信号到達時間が、リングZまたはトップスイッチ内においてリングZより一つ上のレベルに位置するノードUからノードTへのメッセージ到達時間と同時になるようになっている。トップスイッチ110を出るパケットはノード312からライン326を通じてロジックモジュールへと向かう。ロジックモジュールは通信リングC 302上にパケットを置く、或いは、リングC上に置くことなく即座にパケットを処理することができる。このとき、パケットPは以下の形式を有する:
PAYLOAD|OP2|AD2|OP1|BIT
【0040】
パケットPはリングZからライン326を通じてロジックモジュールLへと送られる。パケットPがロジックモジュールLへの移動を開始するとき、リングZ上のあるノードNは、トップスイッチ内のより高いレベルにあるノードWにノードNにおいて非ブロック状態であることを通知するべく制御信号を送る。この制御信号は、ノードNからデータを受け取る位置にあるノードNにデータをルーティングする許可をノードWに与える。ロジックモジュールLはライン326を通じて到達するパケット及びリングC上から到達するパケットに対しタイミングに関して同様に作用する。パケットPがロジックモジュールLに入ると、ロジックモジュールLはOP1フィールド内のコマンドを解析(parse)し実行する。
【0041】
示されている実施例では、通信リングCは記憶リングRと同じ長さを有する。ビットは共通クロックによって支配されるレートでビットシリアルにリングC及びR内を移動する。パケットのPAYLOADフィールドの第1ビットはリングRのDATAフィールドの第1ビットと整合される。従って、READ要求の場合、リングR内のデータはパケットのペイロード部にコピーされる。WRITE要求の場合、パケットのペイロード部内のデータをパケットから記憶リングRへと転送することができる。
【0042】
READ要求
READ要求では、パケットPは以下の形式を有する:
PAYLOAD|OP2|AD2|OP1|AD1|BIT
【0043】
パケットはトップスイッチに入る。一般に、アドレスAD1のDPIMのロジックモジュールは、処理コードOP1フィールドを調べることでREAD要求を同定する。ロジックモジュールはパケットのPAYLOADフィールドをリングRからのDATAフィールドで置き換える。そうして、更新されたパケットはコンセントレータを通じてボトムスイッチへ送られ、そこからアドレスAD2にある演算ユニット(CU)126または他のデバイスへと送られる。CUまたは他のデバイスはPAYLOADフィールドに関連して処理コード2(OP2)によって指定された命令を実行することができる。
【0044】
パケットPはリングZ上のノードT 312に入る。ノードTは、ノードTに入るパケットPのタイミングビット及びリングC上のノード330からの非ブロック制御信号に応答して、パケットPをデータパス326を通じてロジックモジュールLへと送り始める。BIT及びOP1フィールドがロジックモジュールLに入るとき、コンセントレータ150或いはコンセントレータがない場合にはボトムスイッチがメッセージを受け取ることが可能であるかどうかを示すライン324上の制御信号もロジックモジュールLに到達する。制御信号がコンセントレータはメッセージを受け取ることができない旨示す場合、ロジックモジュールLはパケットをリングCへと転送し始める。パケットPはリングC上の次のロジックモジュールへと移動する。
【0045】
ある時点で、リングC上のロジックモジュールの一つが、階層のより下方からノットビジー制御信号を受信する。そのとき、ロジックモジュールLはインターコネクト構造Bの入力ノード320へのパケットPの転送を開始する。
【0046】
READ要求では、ロジックモジュールはOP1フィールドをパケットから取り出し、コンセントレータの入力ノード320へとパス322を通じてパケットの送出を開始する。まず、ロジックモジュールはBITフィールドを、続いてAD2フィールドを、そしてOP2フィールドを送る。記憶リングRのDATAフィールドの第1ビットがロジックモジュールに達するのと同時にOP2フィールドの最終ビットがロジックモジュールを離れるようにタイミングがセットされる。ロジックモジュールは記憶リングR内のDATAフィールドは不変のままとし、下流に送られるパケットのPAYLOADフィールドにDATAのコピーを入れ、コンセントレータへビットシリアルにパケットを送り続ける。リングR内のデータは不変のまま維持される。
【0047】
パケットはコンセントレータに入るとき及びそれを出るとき変化なく、ボトムスイッチ112に入るとき以下の形式を有する:
DATA|OP2|AD2|BIT
【0048】
PAYLOADフィールドはこの時点ではリングRからのDATAフィールドを含む。パケットがボトムスイッチ内をルーティングされる際、AD2フィールドは除去される。パケットはボトムスイッチのアドレスAD2に位置する出力ポート204から送出される。送出時、パケットは以下の形式を有する:
DATA|OP2|BIT
【0049】
OP2フィールドは様々な方法で使用可能なコードである。一つの用途は、ボトムスイッチ出力デバイスがPAYLOADフィールドに格納されているデータに対し行う処理を示すことである。
【0050】
PRAMのインターコネクト構造はデータの効率的、並列生成及びアクセスを実現する循環タイミング(circular timing)を本質的に有する。例えば、異なる入力ポート202に位置する複数の外部ソースが特定のDPIM114にある同じDATAフィールドに対するREAD処理を要求することができる。複数のREAD要求は異なるノード312においてトップスイッチの特定のターゲットリングZ306に入ることができ、その後、そのターゲットDPIMの異なるロジックモジュールLに入る。これらREAD要求は同じサイクル時間においてリングC上の異なるロジックモジュールに入ることができる。通信リングC 320及びメモリーリングR 304はコンセントレータの入力インターコネクト構造B及びトップスイッチのターゲットリングZ内のパケットの動きに関して常に同期している。
【0051】
READ要求は常に、リングRからのデータを送出パケットの適切なPAYLOAD位置に付加するのに適した時間にロジックモジュールに到達する。その有益な結果として、リングR内の同じデータに対する複数の要求を同時に発行することが可能となる。同じDATAフィールドが複数の要求によりアクセスされる。リングRからのデータは複数の最終送付先に送られる。複数のREAD処理は並列に実行され、送付されるパケットは複数の出力ポート204に同時に到達する。複数のREAD要求は、異なるロジックモジュールによってリングR内の異なる場所から同時に読み取りを行うことにより、オーバラップして実行される。更に、他の複数のREAD要求がPRAMメモリーの異なるアドレスにおいて同じサイクル時間において実行される。
【0052】
システムタイミングにより、複数のREAD要求はオーバラップして、効率的且つ並列に実行される。図4A、4B及び4Cは単一のREADに対するタイミングを図示している。記憶リングRは通信リングCと同じ長さである。リングRは長さPayLの循環データ414を含む。リングR内の残りの記憶要素はゼロまたは“ブランク(blank)”とするか、或いは、無視され任意の値をとることができる。BLANKフィールド412はDATAフィールド414に含まれないビットのセットである。
【0053】
図4Aを参照すると、各リングC及びRの一部が特定のDPIMのロジックモジュールを通過している。ロジックモジュールは、リングCを構成するシフトレジスタのセットの少なくとも2つのビットと、リングRを構成するシフトレジスタの少なくとも2つのビットを含む。ある実施例では、DPIM314は複数のロジックモジュール314を含む。ロジックモジュールは、1クロック時間で通信リング302の2ビットを読み込むよう配置される。グローバル信号(図示せず)によって指示される時間において、ロジックモジュールはBITフィールドとOP1フィールドを調べる。示されている例では、ロジックモジュールはOP1フィールド及びBITフィールドの全体を一緒に読み込む。別の実施例では、OP1及びBITフィールドを複数動作により読むことも可能である。READ要求では、ブロックされていないロジックモジュール314が適切な時間にパケットをコンセントレータまたはボトムスイッチに送り、パケットがコンセントレータまたはボトムスイッチの入力内の他のビットと整合するようにする。
【0054】
READ要求では、ブロックされたロジックモジュールがパケットをリングC上に置くと、そのパケットは次のロジックモジュールへと移動する。次のロジックモジュールはブロックされていてもされていなくてもよい。後続のロジックモジュールがブロックされている場合、そのブロックされたロジックモジュールもリングC上のパケットを同様に次のモジュールへ送る。パケットが右端のロジックモジュールLRに入り、この右端のロジックモジュールLRがブロックされている場合、ロジックモジュールLRはパケットをリングC上のFIFOを通過するよう送る。FIFOを出るとパケットは左端のロジックモジュールに入る。パケットは、ブロックされていないロジックモジュールに出会うまで循環する。リングCの長さは循環するパケットが常にリング上に完全に納まるように設定される。別の言い方をすると、パケット長さPはリング長さFを越えることはない。
【0055】
READ動作では、パケットは次の形式を有する:
|PAYLOAD|OP2|AD2|OP1|AD1|BIT|
【0056】
パケットはトップスイッチに挿入される。アドレスフィールドAD1は所望のデータを含むリングR 304のターゲットアドレスを示す。アドレスフィールドAD2は、結果が送られるボトムスイッチの出力ポート204のターゲットアドレスである。処理コードOP2は出力デバイスによって実行されるべき処理を指定する。
【0057】
ある典型的な実施例では、出力デバイスは入力デバイスと同じである。従って、単一のデバイスがPRAMの入力202及び出力204ポートに接続される。READ要求では、PAYLOADフィールドはロジックモジュールによって無視されるので、どのような値でもよい。一方、WRITE動作では、PAYLOADフィールドはアドレスAD1のDPIMに関連づけられたリングR 304上に置かれるデータを含む。ロジックモジュールから送り出される変形されたパケットは以下の形式を有する:
|DATA|OP2|AD2|BIT|
【0058】
ボトムスイッチに入るデータは以下の形式を有する:
|DATA|OP2|AD2|BIT|
【0059】
データは、アドレスフィールドAD2によって指定された出力ポートを通じてボトムスイッチから送り出され、ここでDATAはリングRのデータフィールド414である。
【0060】
図4A、4B及び4Cは通信リングC、データ記憶リングR及びコンセントレータBの間のタイミングを表している。複数の並列なFIFOをバス構造で有するリングを含む実施例では、ロジックモジュール314は一度に複数のビットを読み込むことができる。本実施例では、ロジックモジュールLはクロック時間ごとに1ビットのみを受け取る。コンセントレータBはロジックモジュールからパケットを受け取ることができるFIFO308上の複数の入力ノード320を含む。ロジックモジュールは入力ポート322を通じてコンセントレータのトップレベルにデータを注入するべく配置される。
【0061】
図4Aを参照すると、BITフィールド402は1にセットされ、データリングR上のBLANKフィールド412の第1ビットB408と同時にロジックモジュールに到達する。循環するデータの相対的なタイミングは、リングR内のDATAの第1ビットが(ライン410で示すように)リングC内の要求パケットのペイロードフィールドの第1ビットと整合するように調整される。
【0062】
既にコンセントレータB内にあり、コンセントレータの別のノードからノード316へと入ろうとしているデータは、パス322を通じて上方からノード316に入ろうとするデータに対して優先する。グローバルパケット到達タイミング信号(図示せず)により、パケットが入り得る時間についてノード316に情報が伝えられる。既にコンセントレータ内にあるパケットがノード316に入る場合、ノード316はそれに接続されたロジックモジュールに対しパス324を通じてブロック信号を出す。ブロック信号に応答して、上述したように、ロジックモジュールLは通信リングCへとREAD要求パケットを送る。階層の下方からブロック信号が送られてこない場合、ロジックモジュールLはノード316の下流のコンセントレータB内の入力ノード320へとライン322を通じてパケットを送る。
【0063】
図4Aは時間T=0におけるREAD要求を示している(ここでT=0は、要求を受け取ったロジックモジュールによる要求処理の開始時間)。この時点で、ロジックモジュールは、READ要求を受け取ったのかどうか及び受け取った要求が下方からブロックされていないかどうか判断するのに十分な情報を有している。特に、ロジックモジュールはBIT及びOP1フィールドを調べ、以下の3つの条件について応答する:
下方からライン324を通じてビジー信号は受信されていない、
BIT=1、及び
OP1=READ要求。
【0064】
これら3つの条件が満たされた場合、ロジックモジュールは次時間ステップでREAD処理を開始するのに準備完了となる。OP1=WRITEの場合、ロジックモジュールは次時間ステップでWRITE処理を開始する。
【0065】
図4B及び図4Cはブロック信号がノード316からロジックモジュールへ送られない場合の進行中のREAD要求を示す。
【0066】
図4BはT=1におけるREAD要求を示す。リングZ、C及びR内の全データビットは一つ右にシフトされる。リングの右端のビットはFIFOに入る。またFIFOは左端の要素に1ビット供給する。ロジックモジュールはBITフィールドをライン322を通じてコンセントレータの入力ポートへ送る。シフト後、Cリングのレジスタはパケットの第2及び第3ビット、即ち1ビットからなるOP1フィールド及びAD2フィールドの第1ビットを含む。ロジックモジュールはリングRのBLANKフィールドの第2及び第3ビット、即ちB1及びB2を含む。PRAM200の典型的な動作では、リングZからのパケットは図示されているロジックモジュールの左に位置するロジックモジュール(図示せず)に入るものとすることができる。この場合、パケットの全体はリングC内に含まれない。パケットの残りはトップスイッチ110内にある、または、入力ポートからトップスイッチを通ってリングZから出つつロジックモジュールL 314に入るという“ワームホール(wormholing)”プロセスにあるものとすることができる。図4A、4B及び4Cは理解が容易なように全体がリングC上に含まれるREAD要求パケットを示している。
【0067】
次のAD2L+OP2L個のステップで、ロジックモジュールLはAD2及びOP2フィールドを読み取り入力ポート320へコピーする。この時点で、コンセントレータは、BITフィールド、AD2フィールド及びOP2フィールドをビットシリアルに受信したこととなる。コンセントレータはこのシーケンスを、DATAフィールド414の第1ビットがロジックモジュールLに到達する前に、ワームホール式に受け取り処理する。ロジックモジュールLがリングC上のAD2及びOP2を読み込む間、リングR上のBLANKフィールド412はロジックモジュールLを通過し、無視される。ロジックモジュールは、リングRのDATAフィールドの第1ビットが到達するのと同時(ライン410で示した)に通信リングC内のパケットのPAYLOADセクションの第1ビットを読み取るように配置されている。
【0068】
ロジックモジュールLは出力データを2方向に送る。第1に、ロジックモジュールLはゼロ化されたパケット(zeroed packet)をリングCに戻す。第2に、ロジックモジュールLはDATAフィールドを下流に送る。リングCに戻される全ビットはゼロ430にセットされ、リングC上の後続のロジックモジュールがREAD処理を繰り返さないようにされる。別の方法として、代わりにロジックモジュールLが要求を問題なく処理したら要求パケットを通信リングCから除去してもよく、その場合、同じリング上の他のロジックモジュールが同じサイクル時間において他の要求パケットを受け付けることが可能となるという利点が得られる。パケットはロジックモジュールによって好適にワームホール式に処理され、それにより、1サイクル時間において複数の異なるパケットを特定の一つのDPIMにより処理することができる。
【0069】
時間K+1では、ペイロードの第1ビットはロジックモジュールLによりゼロで置き換えられる位置にあり、リングRの第1ビットDはボトムスイッチまたはボトムスイッチへとデータを転送するコンセントレータへと送られる位置にある。プロセスは図4Cに示すように続く。ロジックモジュールは第2のDATAビットDをコンセントレータへ送る一方、データリングRから第3のDATAビットDを読み込む。プロセスの終了時、パケット全体が通信リングRから取り除かれ、パケットは次の形式を有する:
|DATA|OP2|AD2|BIT|
【0070】
パケットはコンセントレータの入力ポート320またはボトムスイッチへと送られる。DATAはリングRのDATAフィールドからコンセントレータへとコピーされる。データリングR内のDATAフィールド414は変化しない。
【0071】
図5を参照すると、ロジックモジュールL1 504とL2 502が同時にREAD要求を実行する。異なる要求パケットP1及びP2が一般に異なる入力ポート202から送られてきてトップスイッチに入り、単一のDPIMにおいてワームホール式に複数のREAD要求が処理される。図示した例では、全ての要求は同じPRAMアドレスに対するものであり、それはそれぞれの要求パケットのAD1フィールドにて指定される。パケットP1及びP2はそれぞれターゲットDPIM内の異なるロジックモジュールL1及びL2に到達する。各ロジックモジュールは互いに独立して要求を処理する。示した例では、最初に到達したREAD要求P2がモジュールL2 502により処理されている。モジュールL2は既にBITフィールド、OP1フィールド、及びAD2フィールドの5ビットを読み込んで処理している。またモジュールL2は既にBITフィールド及びAD2フィールドの4ビットをコンセントレータの入力ノード512へと送っている。同様に、モジュールL1は既にパケットP1のAD2フィールドの2つのビットを読み込んで処理しており、第1のAD2ビットを下方のノード514へと送っている。2つのパケットのAD2フィールドは異なっており、その結果、DATAフィールド414はボトムスイッチの2つの異なる出力ポートに送られる。2つ目の要求は最初の要求から数クロック時間だけ遅れて発生し、これら2つの要求の処理はオーバラップしてなされる。DPIMはT個のロジックモジュールを有し、同じサイクル時間においてT個のREAD要求を処理する能力を有する。READ要求を処理した結果として、ロジックモジュールは常にリングC上にゼロ430を置く。
【0072】
要求及び応答をそれぞれトップスイッチ及びボトムスイッチ内をワームホール式にルーティングすることにより、任意の入力ポートが他の入力ポートと同時に要求パケットを送ることが可能となる。一般に、任意の入力ポート202はREAD要求を他の入力ポートから同時に送られてくる要求とは独立して任意のDPIMに送ることができる。PRAM200は、複数の要求元からの単一のデータベースに対する並列でオーバラップしたアクセスをサポートし、同じデータ位置に対する複数の要求をサポートする。
【0073】
WRITE要求
WRITE要求でも、パケットのAD1フィールドはトップスイッチ内におけるパケットのルーティングに用いられる。パケットは所定位置でトップスイッチのノード312を出てリングCに入る。OP1フィールドはWRITE要求を指定する。WRITE要求では、コンセントレータへはデータは送付されない。従って、ロジックモジュールはコンセントレータからの制御信号を無視する。ロジックモジュールはコンセントレータの入力ポート320に“0”を送り、パケットは送られないとの情報を伝える。リングZのWRITE要求は、リングC上で遭遇する最初のロジックモジュールに常に入ることができる。
【0074】
説明の簡便化のため、要求パケットをリングC内に示す。より典型的な動作では、要求はトップスイッチを通ってロジックモジュールへとワームホール式に送られる。WRITE要求に対して、ロジックモジュールはOP1とPAYLOADフィールド以外のフィールドの情報は無視する。
【0075】
図6は時間T=K+5におけるWRITE要求を図示している。リングC上のWRITEパケット及びリングR上のデータは共に同期してロジックモジュールを通って回る。OP2フィールドの最終ビットは、ロジックモジュールが記憶リングRのBLANKフィールドの最終ビットと整合されるのと同時に、ロジックモジュールによって捨てられる。パケットのPAYLOADフィールドの第1ビットがロジックモジュールに到達すると、ロジックモジュールLはリングCから第1ビットを取り除き、その第1ビットをリングRのDATAフィールド内に置く。プロセスはPAYLOADフィールドの全体が通信リングからリングRのDATAフィールドへと転送されるまで続く。ロジックモジュールLはパケットをゼロ化し、望ましくはリングCからパケットを除去して他のロジックモジュールがそのWRITE動作を繰り返さないようにする。
【0076】
視覚的に理解し易いように、図6はリングCからリングRへと移動中のデータパケットを示している。データは通常、トップスイッチから到達する。より詳細には、データはトップスイッチ上に散布される。
【0077】
一つのDPIMに複数のRリングが設けられる別の実施例では、DPIMモジュールのアドレスはAD1フィールドに格納され、DPIMモジュール内の所与のRリングのアドレスは拡張されたOP1フィールドの一部として格納される。一つのDPIMメモリーモジュールに8つのRリングが設けられた例では、OP1フィールドは4ビット長さを有し、第1ビットがREADまたはWRITE動作を示し、次の3つのビットがどのRリングに対して要求がなされているのかを示す。DPIMの各々に複数のRリングが含まれる場合、トップスイッチ内のレベルの数及びコンセントレータ内のレベルの数が低減される。
【0078】
一つのDPIM内に複数のRリングを設けることにより、より多くのデータ及びより多くのロジックをモジュール内に必要とし且つより複雑なOP1コードを必要とするような、より複雑な動作も可能となる。例えば、DPIMへの要求を、全てのRリングの中で最大の値を送る要求としたり、Rリングのサブセットの値の合計を送る要求としたりすることができる。また、DPIM要求を、所定のタイプのデータの効率的な検索を可能とするべく、指定されたサブフィールドを含むワードの各コピーを計算されたアドレスに送る要求とすることもできる。
【0079】
示されているPRAMシステムでは、BLANKフィールドは無視され、任意の値を有することができる。別の実施例では、様々な処理を補助するべくBLANKフィールドを定義してもよい。一実施例では、BLANKフィールドはスコアボード機能に用いられる。あるシステムがBより少ないN個のプロセッサを有し、DATAフィールドが上書き可能となる前にN個のプロセッサ全てがDATAフィールドを読み取らなければならないとする。新たなDATA値が記憶リングRに置かれるとき、BLANKフィールドは全てゼロに設定される。N個のプロセッサのうちプロセッサWがデータを読み取ると、BLANKのビットWが1にセットされる。BLANKの適切なNビットのサブフィールドが全て1の状態に設定されたときのみ、リングRのDATA部の上書きを行うことができる。BLANKフィールドは再リセットされて全てゼロになる。
【0080】
このようなスコアボード機能は多数あるBLANKフィールドの使用法の一つにすぎない。当業者であれば、演算及び通信における様々な応用のためBLANKフィールドを効果的に使用することが可能だろう。
【0081】
いくつかの実施例では、DPIM内の複数のロジックモジュールが互いに通信する(intercommunicate)ことができなければならない。そのような応用の例としては、非同期転送モード(ATM)インターネットスイッチに用いられるリーキーバケット・アルゴリズム(leaky bucket algorithm)がある。例示した並列アクセスメモリー200では、演算ロジックモジュール314は、READ要求エントリーの受信に応じてローカルカウンタ(図示せず)に信号を送る。一つのDPIM内の2つの演算ロジックモジュールが同時に読み取りパケットの第1ビットを受信することはなく、従って、共通のDPIMバス(図示せず)を好適に用いて全ロジックモジュールに接続されたカウンタを動かすことができる。カウンタは全ての演算ロジックモジュールに応答することができ、それにより、“リーキー・バケットがあふれた”場合、適切なロジックモジュールの全てが通知を受け、その情報に対してAD2及びOP2フィールドを変形することで応答し、適切な宛先に対して適切な応答を生成する。
【0082】
図1を参照すると、基本要素としてネットワークインターコネクト構造を用いて構築された演算エンジン(computational engine)100が模式的なブロック図に示されている。演算エンジンの様々な実施例は、図1の説明において上述した汎用システム100の中核要素を含む。演算システムである演算エンジンの例では、ボトムスイッチ112は、1または複数のプロセッサ及びメモリーまたは記憶装置を含む演算ユニット126にパケットを送る。図3を参照すると、リングRに関連づけられた演算ロジックモジュールがシステム全体の演算機能の一部を実行する。ボトムスイッチ112からデータを受信する演算ユニット126は更なる論理処理を実行する。
【0083】
ロジックモジュールは、演算エンジンに望まれる全体的な機能に応じて従来のプロセッサ処理及び新規なプロセッサ処理の両方を実行する。
【0084】
システム100の第1の例はスケーラブルな並列演算システムである。処理の一側面において、システムは、SORT処理の並列比較サブオペレーションを含む並列SORTを実行する。ロジックモジュールLはパケットから第1データ要素を受け取り、記憶リングR 304から第2データ要素を受け取る。ロジックモジュールは2つのデータ要素のうち大きい方を記憶リングR上に置き、小さい方をPAYLOADフィールドに置き、更に、小さい方の値をパケットのAD2フィールド内の所定のアドレスに送る。図3に示すように、2つのそのようなロジックモジュールが直列に接続されている場合、第2のロジックモジュールは数クロックサイクル内に第1のロジックモジュールから来るデータについて第2の比較を実行することができる。このような比較及び置換プロセスは多くのソーティングアルゴリズムにおいて共通の作業単位であり、従来技術をよく知っているものであれば、このような比較及び置換プロセスを用いてより大きな並列ソーティングエンジンを形成することが可能である。
【0085】
当業者であれば、広い範囲のシステム応用に用いることが可能な多くの有用なロジックモジュール314を形成することができるだろう。単一のロジックモジュールが多くの処理を行うことも、あるいは、異なる種類のロジックモジュールを形成し各ユニットがより少ない数のタスクを実行するようにすることも可能である。
【0086】
システム100には2種類の処理ユニットが含まれている。即ち、DPIM114内のユニットと演算ユニットCU 126内のユニットである。DPIMはビットシリアルなデータ移動を扱い、大量のデータの移動を伴うような演算を実行する。CUは1または複数の汎用プロセッサのようなプロセッサ及び通常のRAMを含む。CUは、該CUに与えられるデータセットについて“大量データ処理(number crunching)”動作を実行し、パケットの生成、転送及び受信を行う。DPIMの重要な機能の一つは、小さい遅延で、並列に、且つ後の処理に都合のよい形式でデータをCUに供給することである。
【0087】
機能の一例では、演算問題の大きな領域を互いに重ならないサブ領域の集まりに分解することができる。CUは、そのCUによって実行される演算に大きく貢献する各サブ領域からの所定のタイプのデータを受信するように選択することができる。DPIMはデータを用意し、結果を適切なCUに送る。例えば、領域は10回の移動で可能な全てのチェスの位置とし、サブ領域は所与の一対の動きから8回の動きで可能な全ての位置を含むものとすることができる。DPIMは見込みのありそうな最初の動き対のみを、最も見込みのありそうなものから最も見込みの薄いものへと順に並べられたデータとともに、CUに戻す。
【0088】
別の応用では、領域は3次元空間での複数の対象物(objects)の表現を含み、各サブ領域はその空間の区切られた部分からなる。ある特定の例では、関心のある状態が、関心のある物体(body)に働く所定のしきい値を越えた重力の状態として定義される。DPIMは、関心のある状態と整合するデータを含むサブ領域からデータをCUに送る。
【0089】
図1に示したスケーラブルなシステム、及び、スケーラブルなシステムの中核要素を用いた実施例は、スーパーコンピュータでの応用に適するように構築することもできる。スーパーコンピュータでの応用では、複数のCUは適切な形式で且つタイムリーに並列にデータを受信する。これらCUは並列にデータを処理し、処理結果を送付し、後の相互作用に対する要求を生成する。
【0090】
DPIMはブックキーパー(bookkeeper)及びタスクスケジューラとしても有用である。一例として、集合(collection)Hの複数(K個)の演算ユニット(CU)を用いるタスクスケジューラがある。集合HのCUは、通常、並列演算で様々なタスクを実行する。タスクを終了すると、K個のCUのうちN個に新たなタスクが割り当てられる。少なくともKビットのデータを格納することができるデータ記憶リングRはK長さのワードWをゼロ化する。ワードW内の各ビット位置はコレクションHの特定のCUに関連づけられている。あるCUが割り当てられたタスクを完了すると、そのCUはリングRを含むDPIMにパケットMを送る。データ記憶リングR上のロジックモジュールL1は、パケットMを送出したCUに関連づけられたビット位置に1を挿入することでワードWを変形する。データ記憶リングR上の別のロジックモジュールL2はワードW内の1の数を追跡する。ワードWがNビットを有する場合、H内のN個のアイドルCUが新たなタスクを開始する。これら新たなタスクは一つのパケットをN個のプロセッサにマルチキャストすることにより開始される。集合Hの部分集合(subcollection)にマルチキャストを行う効率的な方法について以下に説明する。
【0091】
図7を参照すると、間接アドレス指定を用いてマルチキャスト動作を実行するための構造及び技法が模式的ブロック図に示されている。パケットを対応するアドレスにより指定された複数の宛先にマルチキャストすることは、演算及び通信の用途においてとても有用な機能である。単一の第1アドレスが第2アドレスの集合を指す。これら第2アドレスはマルチチャストされるパケットペイロードのコピーの宛先である。
【0092】
いくつかの実施例では、インターコネクト構造システムが出力ポートの集合Cを有し、ある条件の下では、システムは所定のパケットペイロードを集合C内の全ての出力ポートに送る。集合C、C、C、...、CJ−1の各々は出力ポートのセットからなり、Jより小さい特定の整数Nに対し、集合C内の全てのポートが、単一のマルチキャスト要求の結果、同じ特定のパケットを受信することができる。
【0093】
マルチキャストインターコネクト構造700は記憶リングR 704内に集合Cの出力アドレスのセットを格納する。リングの各々はFMAX個のアドレスを格納する容量を有する。示されている例では、図7に示されたリングRはFMAX=5個のアドレスを格納する容量を有する。
【0094】
スイッチの構成及びサイズは様々なものを用いることができる。一実施例では、ボトムスイッチは64個の出力ポートを有する。出力ポートアドレスは6ビットバイナリパターンで格納することができる。リングRはF、F、F、F及びFのラベルが付された5つのフィールド702を有し、これらのフィールドに集合Cの出力ポート位置が保持される。各フィールドは7ビット長さである。7つのビットの内、第1ビットは、Cの位置がそのフィールドの次の6ビットに格納されている場合、1にセットされる。そうでない場合、第1ビットは0にセットされる。
【0095】
少なくとも2種類のパケットがマルチキャストロジックモジュールMLM714に到達し得る。それらパケットには、MULTICAST READパケットとMULTICAST WRITEパケットが含まれる。
【0096】
パケットの第1のタイプ、PW、はMULTICAST WRITE処理を指定するOP1フィールドを有する。WRITEパケットは通信リング302に到達し、以下の形式を有する:
|PAYLOAD|OP1|BIT|
【0097】
PAYLOADは、鎖状につながったフィールドF、F、F、F及びFに等しい。パケットPWはMLM714が適切な時間にFの第1ビットを読み取るのに適した位置において通信リング302に到達する。MLMは、図6を参照して上述したWRITE動作と同様に、PAYLOADの第1ビットをリングRに書き込む。
【0098】
図7はマルチキャスト機能をサポートする特別なハードウェアDPIM714に接続されたロジックモジュールを示している。WRITE要求に応答して、システムは処理を実行し、それによってフィールドF、F、F、F及びFはリングZ及びCからデータ記憶リングR 304に転送される。パケットはBIT=1により示され、BIT=0のときパケットの残りは常に無視される。処理コードフィールドOP1がBITフィールドの後に続く。MULTICAST WRITE処理では、OP1はペイロードをパケットから記憶リングに転送し、そのとき記憶リング上にあるデータを置き換えるべきであることを示す。データはMLMから記憶リングへとシリアル転送される。
【0099】
例えば、データは右端のライン334を通じて転送される。データは記憶リング704上に置かれるのに適切な時間及び位置に適切な形式で到達する。MULTICAST WRITE処理では、ボトムスイッチからMLMへライン722を通じて送られる制御信号は無視することができる。
【0100】
MULTICAST READ要求を示す別のタイプのパケット、PR、が通信リング302に到達することもあり、以下の形式を有する:
|PAYLOAD|OP2|BLANK|OP1|BIT|
【0101】
BLANK部は、例えば、6ビット長さである。BLANKフィールドはCのフィールドの一つからのターゲットアドレスによって置換される。OP1フィールドは、特定のパケットまたは応用のために用いても用いなくてもよい。パケットのグループがボトムスイッチ112に以下の形式で入力する:
|PAYLOAD|OP2|AD2|BIT|
【0102】
アドレスフィールドAD2はリングRフィールドから来ている。処理フィールドOP2及びPAYLOADはMULTICAST READパケットに由来する。
【0103】
示されている例では、ターゲットアドレスAD1に位置する記憶リングR 704は3つの出力ポートアドレス、例えば、3、8及び17を格納する。出力アドレス3がフィールドFに格納されている。アドレス3の最上位ビット(most significant bit)が最初に現れ、その後に次に重要なビットが続くというようにして続いていく。従って、10進数の整数3を表す標準的な6ビットバイナリパターンは000011となる。これらヘッダビットは、最上位ビットから最下位ビットの順に用いられる。ヘッダビットは最上位ビットが最初にくるように格納すると都合がよく、その結果、フィールドFにおいて、ターゲット出力3を表すフィールドは6ビットパターン110000によって表される。タイミングビットを含むフィールドF全体は7ビットパターン1100001を有する。同様に、フィールドFは10進数の8をパターン0001001として格納する。フィールドFは10進数の17を1000101として格納する。更なる出力ポートはアドレス指定されていないため、フィールドF及びFは全てゼロ(0000000)に設定される。
【0104】
ライン722上の制御信号はボトムスイッチにおける非ブロック状態を示し、パケットがライン718を通じて入力するのを許可する。ボトムスイッチからロジックモジュール714へとライン722を通じて送られる制御信号がビジー状態を示しているときは、スイッチへのデータの送付はなされない。“非ビジー”制御信号がMLMに達すると、リングR内のアドレスのデータフィールドが、読み取りユニット(reading unit)708及びボトムスイッチ112へと応答を生成し送付するのに適切な位置に置かれる。ロジックモジュールに“非ビジー”信号が到達した後の適切な時間において、MLMは複数のMULTICAST READ応答パケットをボトムスイッチ112を通じてアドレスの集合Cに送り始める。
【0105】
システムは、アドレスAD1にあるDPIMへMULTICAST READパケットを送った後、そのパケットのPAYLOADフィールドをリングR 704に格納された集合Cに格納された複数のアドレスにマルチキャストする能力を有する。
【0106】
典型的には、上記したようなマルチキャストシステムは様々な演算及びデータ記憶タスクを実行することが可能なハードウェアを含む。示した例では、マルチキャスト能力は、マルチキャストアドレスを保持し転送するべく特別に構成されたDPIMユニット700を使用することにより達成される。
【0107】
上記したマルチキャスト機能の一般化は、単一のパケットMが集合C内のメンバーシップを指定するアドレスを有する出力ポートの所定のサブセットへと送られるようなモードである。どのメンバーに送出されるべきかを示すビットマスクは送出マスク(send mask)と呼ばれる。一例では、アドレス3、8及び17が集合Cの3つのメンバーである。送出マスク0、0、1、0、1はリストCの第1及び第3出力ポートがパケットを受信するべきであることを示す。応答パケットは出力ポート3及び17にマルチキャストされる。一例では、制御信号により、全入力ポートがパケットを受信することが可能な状態にあるかどうか、或いは、1または複数の入力ポートがブロックされているかどうかが示される。
【0108】
別の例では、ブロックされていない出力ポートのリストが格納される。このリストは、ブロックマスクと呼ばれるマスクである。送出マスク内のN番目の位置における値1は、CのN番目のメンバーに送出することが望まれていることを示す。ブロックマスクのN番目の位置における値1は、CのN番目のメンバーがブロックされておらず、従って送出可能であることを示す。両マスクのN番目の位置の値が1のとき、リストのN番目の出力ポートへとパケットMが送られる。
【0109】
送出マスクによって示されたサブセットに対応して、C内に列挙された出力ポートのサブセットにマルチキャストされるパケットは以下の形式を有する:
PAYLOAD|OP2|Mask|マルチキャストOp|AD1|BIT|
【0110】
パケットはシステムのトップスイッチに入る。アドレスフィールドAD2に通常格納されるアドレスはアドレスフィールドAD1内に格納されたデータ内に含まれ、従って、アドレスフィールドAD2は用いられない。
【0111】
図7を参照すると、BITフィールド及びOP1コードはリングCまたはリングZからロジックモジュール714へと送られる。送出マスク及びブロックマスクも同時にロジックモジュールに入る。送出マスクのJ番目のビットが1で且つブロックマスクのJ番目のビットも1の場合、PAYLOADがアドレスFに送られる。残りの処理は、マスクのないマルチキャストモードと同様に進行する。
【0112】
集合C内の出力ポートのセットはp、p、...、pで示される。出力ポートは複数のグループに分割されるが、これらグループは、最大で、データ記憶リングR上に格納することが可能な数のCのメンバーを含む。データリングRが5つの出力アドレスを有し、集合Cが9つの出力ポートを有する場合、最初の4つの出力ポートはグループ0に格納され、次の4つの出力ポートはグループ1に格納され、残りの出力ポートはグループ3に格納される。出力ポートシーケンスp、p、...、pはq00、q01、q02、q03、q10、q11、q12、q13、q20とインデックス付けすることもできる。このようにして、ターゲットの物理的アドレスをグループ番号とアドレスフィールドインデックスを示す2つの整数により完全に記述することができる。
【0113】
いくつかの応用においては、パケットのペイロードは以下の情報を担う:
出力ポートセットのどのポートがアドレスの位置を特定するのに用いられたかを示すCのサブスクリプトN、
アドレスが配置されているCのグループ、
アドレスが所属するグループのメンバー、
パケットが入力されるスイッチの入力ポート。
【0114】
第2番目と第3番目の情報は、qのメンバーの2つのインデックスを示しており、これら2つのインデックスからpのインデックスを容易に計算することができる。これらの情報を担うパケットに対し、PAYLOADフィールドは以下の形式を有する。
N|qの第1サブスクリプト|qの第2サブスクリプト|入力ポート番号|
【0115】
図7は、マルチキャスティングにおいて間接アドレスを用いるシステムも示している。より単純な動作は、単一の出力ポートを間接アドレス指定することである。間接アドレス指定の一例では、データ記憶リングRは間接アドレスを表す単一のフィールドを含む。例えば、アドレス17にあるDPIMの記憶リングRは値153を含む。アドレス17に送られたパケットはボトムスイッチの出力ポート153へと送られる。
【0116】
本明細書中に説明する実施例では、所与のリングRに関連する全てのロジックモジュールはボトムスイッチ112にデータを送る。あるDPIMがトラフィックバーストを、別のDPIMユニットが比較的少量のトラフィックをボトムスイッチに送る場合、これらリングRは、同じリングではなく、リングBのグループにパケットを送る。更に別の例では、これらリングRはパケットをコンセントレータ150に送り、コンセントレータ150がデータをボトムスイッチ112に伝える。
【0117】
上記したシステムでは、データ記憶リングR 304及び通信リングR 302内の情報は環状に接続されたFIFOの態様で循環する。一変形例は、リングR 704内の情報が静止しているシステムである。トップスイッチ110内のレベルゼロのリングからのデータが静的バッファに入るよう接続することができる。静的バッファ内のデータは上記した循環モデルと論理的には等価な態様で相互作用することができる。静的モデルの利点はデータをより効率的に格納することが可能になる点にある。
【0118】
本説明では、データXが、データYを保持するリングRに送られる。演算リングCは入力信号としてデータXとデータYのストリームを両方とも受信し、データXとYに数学的な関数Fを実行し、演算の結果をターゲット出力ポートに送る。ターゲットはリングRのフィールドまたはパケットのAD2フィールドに格納可能である。別の方法として、ターゲットをF(X,Y)の結果によるものとしたり、別の関数G(X,Y)により生成されるものとすることもできる。
【0119】
別の応用では、複数の処理をデータX及びデータYに対して実行することができ、その結果を複数の宛先に転送することができる。例えば、関数F(X,Y)の結果がアドレスAD2により指定された宛先に送られる。また関数H(X,Y)の結果をパケットのアドレスAD3によって指定された宛先に送ることができる。多重処理により、システム100が多岐に渡る変換を並列に効率よく実行することが可能となるという利点が得られる。
【0120】
2つの引数X及びYに対してより込み入った算術関数を実行するのに加えて、関数FがXまたはYの一方のみの関数となるよう、より単純なタスクが実行されるようにすることも可能である。単純な関数F(X)またはF(Y)の結果は別の関数G(X)により生成された、または、アドレスAD2によって指定された宛先に送られる。
【0121】
本発明を様々な実施例に基づいて説明したが、これら実施例は例示であって本発明の範囲を限定するものではないことを理解されたい。これら説明した実施例の様々な変形、変更、追加及び改良が可能である。例えば、当業者であれば開示した構造及び方法を提供するのに必要なステップを容易に具現することが可能であり、また、プロセスパラメータ、材料、及び寸法は例としてのみ与えられたのであって、所望の機能特性または本発明の範囲内の変形を実現するべく調節可能であることが理解されるだろう。開示した実施例の変形及び変更は本明細書の記載に基づいて、特許請求の範囲に記載した本発明の思想及び範囲を逸脱することなく可能である。
【0122】
当業者は、本発明の範囲内でいくつかの有用な変形及び変更をなす能力を有するだろう。そのような変形及び変更のいくつかの例は列挙したが、他のシステムにも適用され得る。
【図面の簡単な説明】
【図1】
図1は複数のネットワークインターコネクト構造を含む構築ブロックから形成された汎用システムの例を示す模式的なブロック図である。
【図2】
図2は基本要素としてネットワークインターコネクト構造を用いて形成された例えば並列ランダムアクセスメモリー(PRAM)のような並列メモリー構造を示す模式的なブロック図である。
【図3】
図3は、通信リング、複数のロジックモジュール、循環FIFOデータ記憶リングへの接続、及びボトムスイッチの上部レベルへの接続を示すトップスイッチの下部レベルの図である。
【図4A】
図4A、4B及び4Cは、通信リング及び循環FIFOデータ記憶リングを通るデータの動きを示すブロック図である。図4AはREAD及びWRITE要求の両方に当てはまる。図4B及び4Cは処理中のREAD要求に当てはまる。
【図4B】
図4A、4B及び4Cは、通信リング及び循環FIFOデータ記憶リングを通るデータの動きを示すブロック図である。図4AはREAD及びWRITE要求の両方に当てはまる。図4B及び4Cは処理中のREAD要求に当てはまる。
【図4C】
図4A、4B及び4Cは、通信リング及び循環FIFOデータ記憶リングを通るデータの動きを示すブロック図である。図4AはREAD及びWRITE要求の両方に当てはまる。図4B及び4Cは処理中のREAD要求に当てはまる。
【図5】
図5は、オーバラップした期間に発生する同じ循環データ記憶リングから読み出しを行う2つの読み出し命令を実行しているインターコネクト構造の一部を示している。読み出されたデータは第2スイッチに入ってそこで異なるターゲットへと振り向けられる。
【図6】
図6は、WRITE命令を実行しているインターコネクト構造の一部を示している。
【図7】
図7は、間接アドレス指定を用いたマルチキャスト処理を実行するための構造及び技法を示す模式的なブロック図である。[0001]
(Background of the Invention)
A problem that has arisen in systems that perform highly parallel operations is the provision of sufficient data flow to multiple processors. U.S. Pat. Nos. 5,996,020 and 6,289,021 disclose broadband, low-latency interconnect structures that significantly improve data flow in a network. There is a need for a system that can take full advantage of such a wideband, low-latency interconnect structure by supporting parallel memory access and operations in a network.
[0002]
(Summary of the Invention)
Several processors allow multiple processors to access the same data in parallel. First, multiple distant processors can request reads from the same data location, and those requests can be processed in overlapping periods. Second, multiple processors can access data at the same location and can read, write, or multi-process the same data during overlapping periods. Third, one data packet can be multicast to multiple locations and multiple packets can be multicast to multiple sets of target locations.
[0003]
In the following description, the term "packet" preferably refers to a data unit in serial form. Examples of packets include Internet Protocol (IP) packets, Ethernet frames, ATM cells, switch-fabric segments, which include portions of larger frames or packets, supercomputers, and the like. And other data message types with a finite message length.
[0004]
The system disclosed herein solves a similar problem that occurs in communications when multiple packets arriving at a switch access data at the same location.
[0005]
Other Multi-Level Minimum Logic structures can be implemented in a wide variety of processors and many highly useful devices and systems, including computers, memory devices, and logic devices, in a fundamental building block. Can be used as Examples of such devices and systems include parallel random access memory (PRAM) and parallel computing engines. These devices and systems include a network connection structure as a basic building block along with internal storage or memory and logic circuits. The data storage device may be in the form of a first in first out (FIFO) ring.
[0006]
(Detailed description)
The novel features of the preferred embodiment described below are set forth in the appended claims. However, embodiments of the invention relating to both structure and processing methods will be best understood from the following description read in conjunction with the accompanying drawings.
[0007]
The schematic block diagram of FIG. 1 shows an example of a general-purpose system 100 formed from building blocks that include one or more network interconnect structures. In the illustrated example, the general-purpose system 100 has a top switch 100 and a bottom switch 112 formed from a network interconnect structure. The term "network interconnect structure" can also refer to other interconnect structures. In other systems, additional elements formed from the network interconnect structure may be included. The general-purpose system 100 illustrates various components that may be included as core elements of the basic exemplary system. In some embodiments, additional elements are included in addition to the core elements. Other elements include 1) shared memory, 2) direct connection 130 between top and bottom switches, 3) direct connection 140 between bottom switches and I / O, and 4) logic unit 114 and bottom. A concentrator connected to the switch 112 may be included.
[0008]
The general-purpose system 100 includes a top switch 110, which receives input data packets from an input line 136 or from an external source and possibly a bottom switch via a bus 130 and operates the received packets. It functions as an input terminal for distribution to a dynamic processor-in-memory logic module (DPIM) 114. The top switch 110 performs packet routing in the general-purpose system 100 based on communication information stored in a packet header. The packet is sent from the top switch 110 to the DPIM module 114. The control signal from the DPIM module 114 to the top switch 110 controls the timing of packet input to prevent collision. This prevents collisions with data in the DPIM or data in the bottom switch that can occur without such control. The system may also use the output lines and buses 130, 132, 134 and 136 to transfer information to additional computing, communication, storage and other elements (not shown).
[0009]
Data packets enter the top switch 110 and are sent to the target DPIM 114 based on the address field of each packet. The information contained in the packet, possibly together with other information, can be used to determine the processing performed by logic DPIM 114 on the data contained in the packet or DPIM memory. For example, the information stored in the DPIM memory may be modified according to the information in the packet, the data included in the DPIM memory may be sent to the bottom switch 112, or other data generated by the DPIM logic module. Can be output from the bottom switch. Packets from DPIM are sent to the bottom switch. Other options for the general-purpose system 100 may include a computational unit and / or a memory unit. The arithmetic unit 126 may be arranged to send data packets through the I / O unit 124 to the outside of the system 100 and / or to the top switch 110. When the bottom switch sends a packet to the top switch, the packet can be sent directly, or one or more interconnect modules (not shown) that handle timing and control between integrated circuits that are subcomponents of the system 100. ) Can also be sent.
[0010]
In one embodiment of the system, the data storage has the form of a conventional first-in first-out (FIFO) data storage ring R in DPIM 114 and a conventional data storage associated with a computing unit (CU) 126. The FIFO ring is composed of a plurality of single-bit shift registers connected in a ring. FIFO rings include two types of components. In a first example, as is known in the art, a FIFO ring has a plurality of single-bit shift registers connected only to adjacent single-bit shift registers to form a simple FIFO 310. In a second example, the other shift registers of the ring consist of single-bit or multi-bit registers contained within other elements of the system, for example, logic module 114. These two components are connected in series to form a ring. For example, the total length F of the FIFO ringLIs 200 bits, 64 bits are stored in a plurality of logic modules L, and the remaining 136 bits can be stored in serially connected registers of the FIFO. A clock supplied to the entire system is connected to a FIFO element and a shift register to advance the data bits to the next position in a "bucket relay" fashion. Cycle time is defined as the time expressed in clock cycles required for data to complete exactly one cycle of the FIFO ring. The integer value of the cycle time is equal to the length of the FIFO ring in number of components. For example, for a ring of 200 components (ie, 200 length), the cycle time would be 200 system clock periods. The system may have local clock or timing sources operating at different rates. Depending on the embodiment, all FIFO rings of the system may have the same length, or may have lengths that vary by an integer multiple of a predetermined minimum length. In another embodiment, one ring has a bus structure with multiple parallel paths and the amount of data held in the ring is equal to the ring length FLIt can be set to be an integral multiple of.
[0011]
In the general-purpose system 100, the top switch can handle packets having various lengths up to the system maximum length. In some applications, the packets may all have the same length. Generally, packets having various lengths are input to the top switch. Packet length is PLAnd PLIs FLNot exceed.
[0012]
Similarly, the bottom switch can handle packets of various lengths. In an exemplary embodiment of general-purpose system 100, data having different bit lengths is generated depending on the function and operation of DPIM logic module 114 and CU 126. The DPIM may function independently, or there may be multiple systems (not shown) capable of collecting data from these DPIMs and providing data to DPIM or other elements inside or outside system 100. May be.
[0013]
The schematic block diagram of FIG. 2 illustrates an example of a parallel random access memory (PRAM) system 200 formed from a smaller number of building blocks than included in FIG. This PRAM system has a top switch 110, a concentrator 150, and a bottom switch 112 formed from a network interconnect structure. The system also includes a plurality of DPIMs 114 for storing data. These DPIM units can typically perform READ and WRITE functions, thereby allowing the system to be used as a parallel random access memory.
[0014]
In the illustrated embodiment, the data packet input to top switch 110 has the following format:
Payload | Processing code 2 | Address 2 | Processing code 1 | Address 1 | Timing bit
This can be expressed as:
PAYLOAD | OP2 | AD2 | OP1 | AD1 | BIT
[0015]
The number of bits in the PAYLOAD field is represented by PayL. The bit numbers of OP2 and OP1 are represented by OP2L and OP1L, respectively. The bit numbers of AD2 and AD1 are represented by AD2L and AD1L, respectively. The length of the BIT field is one bit in the preferred embodiment.
[0016]
The following table gives a brief description of the packet fields.
Figure 2004531783
[0017]
The BIT field enters the switch first, but is always set to 1 to indicate that a packet is present. The BIT field is also called "traffic bit". The AD1 field is used to direct the packet through the top switch to the packet's target DPIM. The top switch 110 can be configured to have multiple hierarchical levels and columns so that packets can pass through these levels. Each time a packet enters the new level of the top switch 110, one bit of the AD1 field is removed, thereby shortening the AD1 field. System 200 uses the same technique. When a packet leaves the top switch 110, nothing remains in the AD1 field. Thus, when the packet leaves the top switch, it has the following format:
PAYLOAD | OP2 | AD2 | OP1 | BIT
[0018]
Systems 100 and 200 have multiple DPIM units. FIG. 3 is a schematic block diagram illustrating an example of the DPIM unit and showing data and control connection paths between the DPIM and the top switch 110 and the bottom switch 112. FIG. 3 shows four data interconnect structures Z, C, R and B. Interconnect structure Z may be a FIFO ring located within top switch 110. Interconnect structures C and R consist of FIFO rings located within the DPIM module. In some embodiments, DPIM sends data directly to the bottom switch. In those embodiments, if the bottom switch is an interconnect structure, interconnect structure B is a FIFO ring. 1 and 7 illustrate a system without a concentrator, and FIGS. 2, 3, 4A and 5 illustrate systems with a concentrator.
[0019]
The data passes through the top switch 110 and the target output ring ZJ(J = AD1). Ring Z = ZJHas a plurality of nodes 330 connected to the output line 326. The DPIM module has a packet receiving ring C 302 called a "data communication ring" and one or more "data storage rings" R 304. The DPIM shown in FIG. 3 has a single data storage ring R. Each structure Z, C, R and B includes a plurality of interconnected single-bit FIFO nodes. Some of the nodes in the structure have a single data input port and a single data output port and are interconnected to form a simple multi-node FIFO. Other nodes in the structure have additional data input ports, additional data output ports, or both. These nodes may also have control signal output ports or control signal input ports. Ring Z receives the control signal from ring C and sends data to logic module L 314. Rings C and R send and receive data to and from logic module L 314. FIFO B 380 sends a control signal to logic module L and receives data from logic module L. A DPIM can have multiple logic modules that can send data to multiple input ports in an interconnect structure or FIFO B. The data from the DPIM can be sent in rows into the top level of System B. The number of DPIMs can be the same as the number of memory locations, where each DPIM has a single storage ring R that stores one word of data. Alternatively, one DPIM unit may include multiple storage rings R. A particular storage ring can be identified by part of the address AD1 field or by part of the processing OP1 field.
[0020]
The timing of packet movement is synchronized by four rings. As the packet circulates through the ring, the packet is matched with respect to the BIT field. As a beneficial result of the match, ring C sends a control signal 328 to ring Z, allowing or disallowing nodes in Z to send packets to C. Upon receiving permission from node 330 on ring C, node 312 on ring Z can send the packet to logic module L, which is immediately placed in a position to process the packet bit-serial. Similarly, packets circulating in data storage ring R are synchronized with ring C so that each bit is suitably processed by logic module L as the packet circulates in each ring. The data storage ring R functions as a memory element that can be used in some novel applications described below. If multiple DPIMs are not on the same chip as the top switch, use separate data communication rings (not shown) between the nodes of ring Z and logic module L to provide timing and control between the chips You can also.
[0021]
The data in the storage ring R matches and overlaps with some of the packets in the Z ring 306 of the top switch and is accessible from the top switch 110 by multiple packets occurring simultaneously in the cycle time. A plurality of logic modules 314 are associated with data communication ring C and data storage ring R. One logic module L can read data from the rings C and R, perform processing on the data under certain conditions, and write the data to the rings C and R. Further, the logic module L can send the packet to the node 320 of the FIFO 308 located at the bottom switch 112 or the concentrator. If multiple DPIMs are not on the same chip as the bottom switch, use a separate data communication ring (not shown) between node 320 of interconnect structure B and logic module L 314 to provide timing and control between chips. Can be. Also, if one device needs to access multiple bits of the communication ring in one cycle time, a separate data communication ring can be used for timing and control operations.
[0022]
The packet enters the communication ring C through the logic module 314. Packets exit the logic module L and enter the bottom switch at various angles through the input channel.
[0023]
In some examples of general-purpose system 100, all of the logic modules along rings C and R of DPIM 114 are of the same type and perform similar logic functions. In another example, multiple different logic module types are used, and it is possible to perform multiple logic functions on data stored in a particular DPIM ring R. As data circulates through ring R, logic module L 314 can modify the data. The logic modules operate on data bits that pass serially through the module from rings C and R and from nodes on ring Z. Typical logic functions include (1) data transfer processes such as load, store, read, write, (2) logical operations such as AND, OR, NOR, NAND, exclusive OR, bit test, and (3) ) Includes arithmetic operations such as addition, subtraction, multiplication, division, transcendental functions, etc. Numerous other types of logical operations can also be included. The function of the logic module can be hardwired to the logic module, or can be realized by software loaded into the logic module from a packet sent to the logic module. In one embodiment, the logic modules associated with a particular data storage ring R operate independently. In another embodiment, the groups of logic modules are controlled by a separate system (not shown) that can receive data from the groups of logic modules. In yet another embodiment, the logic module control system executes control instructions on data received from the logic module.
[0024]
1 and 2, each DPIM has one ring R and one ring C. In another embodiment of the system 100, a particular DPIM 114 has multiple R-rings. In such a multiple R-ring embodiment, one logic module 314 can simultaneously access data from the C-ring and all R-rings. Simultaneous access allows the logic module to transform data on one or more R-rings based on the contents of the R-ring and also on the associated communication ring C and the contents of the received packet. Become.
[0025]
A typical function performed by the logic module is the execution of the processing specified in the OP1 field on the data held in the PAYLOAD field of the packet in relation to the data held in ring R. In one particular example, operation OP1 indicates that the data in PAYLOAD of the packet is to be added to the data stored in ring R at address AD1. The resulting sum is sent to the target port of the bottom switch at address AD2. Instructed by the instruction held in the data field of the OP1 process, the logic module can execute a plurality of processes. For example, the data in ring R 304 can remain unchanged. The logic module can also replace the data in ring R 304 with the contents of the PAYLOAD field. Alternatively, the logic module L can replace the data held in the PAYLOAD field with the result of the processing performed on the ring R 304 and the content held in the PAYLOAD field. In another example, the memory FIFO may store program instructions as well as data.
[0026]
The general-purpose system 100, which includes multiple types of logic modules 314 associated with the communication ring C and the storage ring R, uses one or more bits of the OP1 field to specify a particular logic module used to perform a certain operation. Can be used. In some embodiments, multiple logic modules perform multiple operations on the same data. The set of logic modules at address AD1 = x can perform a different process from the set of logic modules at address AD1 = y.
[0027]
The efficiency of moving data packets through the general-purpose system 100 depends on the timing of the data flow. In some systems, a buffer (not shown) associated with the logic module helps maintain the timing of the data transfer. In many embodiments, timing is maintained without buffering data. The interconnect structure of the general-purpose system 100 preferably has operational timing to provide efficient parallel computation, generation and access of data.
[0028]
The multi-component system 100, which includes at least one switch, a group of data storage rings 304, and associated logic modules 314, can be used to implement a variety of arithmetic and communication switches. Examples of arithmetic and communication switches include IP packet routers or switches used in Internet switching systems, special purpose sorting engines, general purpose computers, or many parallel arithmetic systems with general or specific functions.
[0029]
The schematic block diagram of FIG. 2 shows a parallel random access memory (PRAM) formed using a network interconnect structure as a basic element. The PRAM stores data that can be accessed simultaneously from a plurality of sources and can be simultaneously sent to a plurality of destinations. The PRAM has a top switch 110, but may or may not have a communication ring that receives packets from a target ring of the top switch 110. In an interconnect structure without a communication ring, ring Z passes through the logic module. Top switch 110 has T output ports 210 from each of the target rings. In a typical PRAM system 200, the number of address locations is greater than the number of I / O ports in the system. For example, a PRAM system has 128 I / O ports that access 64K words of data stored in DPIM. The AD1 field is 16 bits long to allow 64K DPIM addresses 114. The AD2 field is 8 bits long to allow 128 output ports 204, with 7 bits holding the address and 1 bit being the BIT2 portion of the address. The top switch has 128 input ports 202 and 64K Z-rings (not shown) each with multiple connections to the DPIM unit via output port 206. Concentrator 150 has 64K (65536) input ports 208 and 128 output ports 210. The bottom switch 112 has 128 input ports and 128 output ports 204. The concentrator follows the same control timing and signaling rules for inputs and outputs as the top and bottom switches and logic modules.
[0030]
Alternatively, the top switch may have a lower number of output Z-rings and associated DPIM. It is also possible that the DPIM unit has a plurality of R-rings so that the total data size does not change.
[0031]
The PRAM shown in FIG. 2 has a DPIM unit 114 that includes a logic module 314 that is directly connected to a communication ring C 302 and a storage ring R 304. The DPIM unit 114 is connected to a packet concentrator 150 that supplies output data to the bottom switch 112.
[0032]
Referring to FIG. 3, node 330 on ring C sends a control signal to node 312 on ring Z of the top switch, allowing individual nodes 312 on ring Z to send packets to logic module L. Upon receiving a packet from ring Z, logic module L may perform one of several processes. First, the logic module L can start placing the packet on the C-ring. Second, the logic module L can immediately start using the data in the packet. Third, the logic module L can immediately start sending the generated packet to the concentrator 150 without placing it on the C-ring. One logic module Li can start putting packets P on the C-ring, and after that logic module Li places some bits on the ring, another logic module Lk (where k> i) Processing and removal can begin. In some cases, the entire packet P is not placed on ring C. The logic module can insert data into the C-ring or R-ring, or send data to the concentrator 150. The signal on line 324 from the concentrator is also used to control the data entering the concentrator. The plurality of logic modules 314 associated with a ring R may also have additional transmit and receive interconnections with auxiliary devices (not shown) that can be associated with that ring R. The auxiliary device has various structures and can perform various functions according to the purpose and function of the system. One example of the auxiliary device is a system controller.
[0033]
In one embodiment, PRAM 200 includes a DPIM that includes a plurality of logic modules 314 that all have the same logic type and perform the same function.
[0034]
In another embodiment, the first DPIM S at a particular address may have multiple logic modules of different types and functions. The second DPIM T may have the same or a different type of logic module compared to the first DPIM S. In one application of the PRAM, one data word is stored in one storage ring R. As data circulates through ring R, the logic module can transform the data. In this PRAM, the logic module modifies the contents of the storage ring R that can store not only data but also program instructions.
[0035]
This PRAM stores and retrieves data using packets defined to include fields defined as follows:
PAYLOAD | OP2 | AD2 | OP1 | AD1 | BIT
[0036]
A BIT field set to 1 to indicate that a packet is present enters general-purpose system 100. The AD1 field specifies the address of the particular DPIM that contains the data storage ring R 304 containing the desired data. The top switch sends a packet to DPIM (AD1) specified by address AD1. In the example shown, the OP1 field consists of a single bit that specifies the operation to be performed. For example, a logical value of 1 specifies a READ request, and a logical value of 0 specifies a WRITE request.
[0037]
In the READ request, the receiving logic module in the DPIM at the position AD1 transmits the data stored on the ring R to the address AD2 of the bottom switch 112. In a WRITE request, the PAYLOAD field of the packet is placed on the ring R at the address AD1. AD2 is the destination address used to route data through the bottom switch 112 in a READ request and specifies where the contents of the memory should be sent. OP2 describes a process to be executed on data transmitted by the device located at the address AD2 as desired. If the process OP1 is a READ request, the logic module executing the READ request does not use the PAYLOAD field.
[0038]
In one embodiment, the PRAM includes only one type of logic module (the type that performs both READ and WRITE operations). In another embodiment of the PRAM, another type of logic module is used, such as with separate READ and WRITE elements.
[0039]
Referring to FIGS. 2 and 3, the illustrated PRAM 200 begins processing by receiving a packet entering the top switch 110 in a timely manner. The packet P is routed in the top switch and reaches the target ring Z located at the address AD1. The AD1 field of the packet is the target ring Z of the top switch.J306 is designated (here, J = AD1). Node S (not shown) and node T (not shown) are defined to define message timing. Node S is ring RJOf the ring ZJThe node S is arranged to send a control signal to the node T via the control line 328. Ring R based on global timing signalJNode S 330 specifies the timing bit arrival time at node S. When the timing bit of value 1 arrives at the node S at the timing bit arrival time, the node S sends a blocking signal to the node T 312 on the ring Z via the line 328, and the node T transmits the packet via the line 326 to the logic unit. Prohibit sending to L. If node S does not receive a bit of value 1 at the timing bit arrival time, there are no messages coming from node C to node S, and node S sends a non-blocking control signal to node T. The global timing is such that the control signal arrival time at the node T is the same as the message arrival time from the node U located one level above the ring Z in the ring Z or the top switch to the node T. Packets exiting top switch 110 go from node 312 through line 326 to the logic module. The logic module can place the packet on communication ring C 302 or process the packet immediately without placing it on ring C. Then, the packet P has the following format:
PAYLOAD | OP2 | AD2 | OP1 | BIT
[0040]
Packet P is sent from ring Z to logic module L via line 326. When the packet P starts moving to the logic module L, a certain node N on the ring ZZIs connected to node N at a higher level in the top switchZSends a control signal to notify the non-blocking state. This control signal is applied to node NZN at a position to receive data fromXTo node W. Logic module L acts similarly on timing for packets arriving on line 326 and for packets arriving on ring C. When the packet P enters the logic module L, the logic module L parses and executes the command in the OP1 field.
[0041]
In the embodiment shown, communication ring C has the same length as storage ring R. The bits move through the rings C and R bit serially at a rate governed by the common clock. The first bit of the PAYLOAD field of the packet is aligned with the first bit of the Ring R DATA field. Therefore, in the case of a READ request, the data in the ring R is copied to the payload of the packet. In the case of a WRITE request, the data in the payload portion of the packet can be transferred from the packet to the storage ring R.
[0042]
READ request
For a READ request, packet P has the following format:
PAYLOAD | OP2 | AD2 | OP1 | AD1 | BIT
[0043]
Packets enter the top switch. Generally, the DPIM logic module at address AD1 identifies the READ request by examining the opcode OP1 field. The logic module replaces the PAYLOAD field of the packet with the DATA field from ring R. The updated packet is then sent to the bottom switch through the concentrator and from there to the arithmetic unit (CU) 126 at address AD2 or another device. The CU or other device can execute the instruction specified by the processing code 2 (OP2) in connection with the PAYLOAD field.
[0044]
Packet P enters node T 312 on ring Z. Node T begins to send packet P to logic module L via data path 326 in response to the timing bits of packet P entering node T and the non-blocking control signal from node 330 on ring C. When the BIT and OP1 fields enter the logic module L, the control signal on line 324 indicating whether the concentrator 150 or the bottom switch if no concentrator can receive a message also reaches the logic module L. If the control signal indicates that the concentrator cannot receive the message, logic module L will begin forwarding the packet to ring C. The packet P moves to the next logic module on the ring C.
[0045]
At some point, one of the logic modules on ring C receives a not busy control signal from below the hierarchy. At that time, the logic module L starts transferring the packet P to the input node 320 of the interconnect structure B.
[0046]
In the READ request, the logic module extracts the OP1 field from the packet and starts sending the packet to the input node 320 of the concentrator via the path 322. First, the logic module sends a BIT field, followed by an AD2 field, and an OP2 field. Timing is set such that the last bit of the OP2 field leaves the logic module at the same time that the first bit of the DATA field of the storage ring R reaches the logic module. The logic module leaves the DATA field in the storage ring R unchanged, puts a copy of the DATA in the PAYLOAD field of the packet sent downstream, and continues to send the packet bit-serial to the concentrator. The data in ring R remains unchanged.
[0047]
Packets remain unchanged when entering and leaving the concentrator, and have the following form when entering the bottom switch 112:
DATA | OP2 | AD2 | BIT
[0048]
The PAYLOAD field now contains the DATA field from ring R. As packets are routed through the bottom switch, the AD2 field is removed. The packet is transmitted from the output port 204 located at the address AD2 of the bottom switch. Upon transmission, the packet has the following format:
DATA | OP2 | BIT
[0049]
The OP2 field is a code that can be used in various ways. One use is to show the processing that the bottom switch output device performs on the data stored in the PAYLOAD field.
[0050]
The interconnect structure of a PRAM inherently has circular timing to achieve efficient, parallel generation and access of data. For example, multiple external sources located at different input ports 202 may request a READ operation on the same DATA field at a particular DPIM 114. Multiple READ requests can enter a particular target ring Z306 of the top switch at different nodes 312 and then enter different logic modules L of that target DPIM. These READ requests can enter different logic modules on ring C at the same cycle time. The communication ring C 320 and the memory ring R 304 are always synchronized with respect to the movement of the packet in the input interconnect structure B of the concentrator and the target ring Z of the top switch.
[0051]
The READ request always arrives at the logic module at a suitable time to add data from ring R to the appropriate PAYLOAD location of the outgoing packet. The beneficial result is that multiple requests for the same data in ring R can be issued simultaneously. The same DATA field is accessed by multiple requests. Data from ring R is sent to multiple final destinations. The plurality of READ processes are executed in parallel, and the transmitted packet reaches the plurality of output ports 204 simultaneously. The plurality of READ requests are executed in an overlapping manner by simultaneously reading from different locations in the ring R by different logic modules. Further, other READ requests are executed at the same cycle time at different addresses of the PRAM memory.
[0052]
Depending on system timing, multiple READ requests overlap and are executed efficiently and in parallel. 4A, 4B and 4C illustrate the timing for a single READ. The storage ring R is the same length as the communication ring C. Ring R includes cyclic data 414 of length PayL. The remaining storage elements in ring R may be zero or "blank" or may be ignored and have any value. The BLANK field 412 is a set of bits not included in the DATA field 414.
[0053]
Referring to FIG. 4A, a portion of each ring C and R has passed through a particular DPIM logic module. The logic module includes at least two bits of a set of shift registers forming a ring C and at least two bits of a shift register forming a ring R. In one embodiment, DPIM 314 includes a plurality of logic modules 314. The logic module is arranged to read two bits of the communication ring 302 in one clock time. At the time indicated by the global signal (not shown), the logic module examines the BIT and OP1 fields. In the example shown, the logic module reads the entire OP1 and BIT fields together. In another embodiment, it is possible to read the OP1 and BIT fields by multiple operations. In a READ request, the unblocked logic module 314 sends the packet to the concentrator or bottom switch at the appropriate time so that the packet matches other bits in the concentrator or bottom switch input.
[0054]
In a READ request, when a blocked logic module places a packet on ring C, the packet moves to the next logic module. The next logic module may or may not be blocked. If a subsequent logic module is blocked, that blocked logic module also sends the packet on ring C to the next module. If the packet enters the rightmost logic module LR and the rightmost logic module LR is blocked, the logic module LR sends the packet through the FIFO on ring C. Upon exiting the FIFO, the packet enters the leftmost logic module. Packets cycle until a non-blocked logic module is encountered. The length of the ring C is set so that the circulating packet always completely fits on the ring. In other words, the packet length PLIs the ring length FLNever exceed.
[0055]
In a READ operation, the packet has the following format:
| PAYLOAD | OP2 | AD2 | OP1 | AD1 | BIT |
[0056]
The packet is inserted into the top switch. Address field AD1 indicates the target address of ring R 304 containing the desired data. The address field AD2 is the target address of the output port 204 of the bottom switch to which the result is sent. The processing code OP2 specifies the processing to be performed by the output device.
[0057]
In one exemplary embodiment, the output device is the same as the input device. Thus, a single device is connected to the PRAM input 202 and output 204 ports. In a READ request, the PAYLOAD field is ignored by the logic module and can be any value. On the other hand, in a WRITE operation, the PAYLOAD field contains data to be placed on the ring R 304 associated with the DPIM at address AD1. The modified packet sent out of the logic module has the following format:
| DATA | OP2 | AD2 | BIT |
[0058]
The data entering the bottom switch has the following format:
| DATA | OP2 | AD2 | BIT |
[0059]
Data is sent from the bottom switch through the output port specified by address field AD2, where DATA is data field 414 of ring R.
[0060]
4A, 4B and 4C show the timing between communication ring C, data storage ring R and concentrator B. In embodiments that include a ring having multiple parallel FIFOs in a bus structure, logic module 314 can read multiple bits at a time. In this embodiment, the logic module L receives only one bit per clock time. Concentrator B includes a plurality of input nodes 320 on FIFO 308 that can receive packets from the logic module. The logic module is arranged to inject data at the top level of the concentrator through input port 322.
[0061]
Referring to FIG. 4A, the BIT field 402 is set to 1 and the first bit B of the BLANK field 412 on the data ring R is set.0At the same time as 408, the logic module is reached. The relative timing of the circulating data is adjusted so that the first bit of DATA in ring R matches the first bit of the payload field of the request packet in ring C (as shown by line 410).
[0062]
Data already in concentrator B and trying to enter node 316 from another node of the concentrator takes precedence over data attempting to enter node 316 from above via path 322. A global packet arrival timing signal (not shown) informs node 316 about the times when a packet can enter. If a packet already in the concentrator enters node 316, node 316 issues a block signal via path 324 to the logic module connected to it. In response to the block signal, the logic module L sends a READ request packet to the communication ring C as described above. If no block signal is sent from below the hierarchy, logic module L sends a packet via line 322 to input node 320 in concentrator B downstream of node 316.
[0063]
FIG. 4A shows a READ request at time T = 0 (where T = 0 is the start time of request processing by the logic module that received the request). At this point, the logic module has enough information to determine whether a READ request has been received and whether the received request has been blocked from below. In particular, the logic module examines the BIT and OP1 fields and responds for the following three conditions:
No busy signal is received from below through line 324,
BIT = 1, and
OP1 = READ request.
[0064]
If these three conditions are met, the logic module is ready to start the READ operation at the next time step. If OP1 = WRITE, the logic module starts the WRITE process in the next time step.
[0065]
4B and 4C illustrate an ongoing READ request when no block signal is sent from node 316 to the logic module.
[0066]
FIG. 4B shows a READ request at T = 1. All data bits in rings Z, C and R are shifted right by one. The rightmost bit of the ring enters the FIFO. The FIFO supplies one bit to the leftmost element. The logic module sends the BIT field over line 322 to the input port of the concentrator. After the shift, the register of the C-ring contains the second and third bits of the packet, ie the OP1 field consisting of one bit and the first bit of the AD2 field. The logic module includes the second and third bits of the ring R BLANK field, namely B1 and B2. In typical operation of PRAM 200, packets from ring Z may enter a logic module (not shown) located to the left of the logic module shown. In this case, the entire packet is not included in ring C. The rest of the packet may be in the top switch 110 or in a "wormholing" process in which the input module exits ring Z through the top switch and enters logic module L 314. 4A, 4B and 4C show a READ request packet entirely contained on ring C for ease of understanding.
[0067]
In the next AD2L + OP2L steps, the logic module L reads the AD2 and OP2 fields and copies them to the input port 320. At this point, the concentrator has received the BIT field, the AD2 field, and the OP2 field in a bit serial manner. The concentrator receives and processes this sequence in a wormhole manner before the first bit of the DATA field 414 reaches the logic module L. While logic module L reads AD2 and OP2 on ring C, BLANK field 412 on ring R passes through logic module L and is ignored. The logic module is arranged to read the first bit of the PAYLOAD section of the packet in communication ring C at the same time as the first bit of the DATA field of ring R arrives (indicated by line 410).
[0068]
The logic module L sends output data in two directions. First, the logic module L returns a zeroed packet to the ring C. Second, logic module L sends the DATA field downstream. All bits returned to ring C are set to zero 430 to prevent subsequent logic modules on ring C from repeating the READ operation. Alternatively, if the logic module L successfully processes the request, the request packet may be removed from the communication ring C, in which case another logic module on the same ring may be able to remove another request packet in the same cycle time. This has the advantage that it is possible to accept The packets are preferably processed by the logic module in a wormhole manner, so that a plurality of different packets can be processed by one specific DPIM in one cycle time.
[0069]
At time K + 1, the first bit of the payload is in a position that is replaced by zero by the logic module L and the first bit D of the ring R1Is in a position that is sent to the bottom switch or to a concentrator that transfers data to the bottom switch. The process continues as shown in FIG. 4C. The logic module has a second DATA bit D2From the data ring R to the third DATA bit D3Read. At the end of the process, the entire packet is removed from the communication ring R and the packet has the following format:
| DATA | OP2 | AD2 | BIT |
[0070]
The packet is sent to the concentrator input port 320 or the bottom switch. DATA is copied from the Ring R DATA field to the concentrator. The DATA field 414 in the data ring R does not change.
[0071]
Referring to FIG. 5, the logic modules L1 504 and L2 502 simultaneously execute a READ request. Different request packets P1 and P2 generally come from different input ports 202 and enter the top switch, and multiple READ requests are processed in a single DPIM in a wormhole manner. In the example shown, all requests are for the same PRAM address, which is specified in the AD1 field of each request packet. Packets P1 and P2 arrive at different logic modules L1 and L2 in the target DPIM, respectively. Each logic module processes requests independently of each other. In the example shown, the first arrived READ request P2 is being processed by module L2 502. The module L2 has already read and processed the five bits of the BIT field, OP1 field, and AD2 field. The module L2 has already sent 4 bits of the BIT field and the AD2 field to the input node 512 of the concentrator. Similarly, module L1 has already read and processed the two bits of the AD2 field of packet P1, and has sent the first AD2 bit to node 514 below. The AD2 fields of the two packets are different, so that the DATA field 414 is sent to two different output ports of the bottom switch. The second request occurs several clocks later than the first request, and the processing of these two requests is overlapped. DPIM has T logic modules and has the ability to process T READ requests in the same cycle time. As a result of processing the READ request, the logic module always places a zero 430 on ring C.
[0072]
By routing the request and response in a wormhole manner within the top and bottom switches, respectively, any input port can send request packets simultaneously with other input ports. In general, any input port 202 can send a READ request to any DPIM independently of requests coming in simultaneously from other input ports. PRAM 200 supports parallel, overlapping access to a single database from multiple requesters, and supports multiple requests for the same data location.
[0073]
WRITE request
Even in the WRITE request, the AD1 field of the packet is used for routing the packet in the top switch. The packet exits the top switch node 312 at a predetermined location and enters ring C. The OP1 field specifies a WRITE request. In a WRITE request, no data is sent to the concentrator. Therefore, the logic module ignores the control signal from the concentrator. The logic module sends a "0" to the input port 320 of the concentrator to convey information that no packet will be sent. Ring Z's WRITE request can always enter the first logic module encountered on ring C.
[0074]
The request packet is shown in ring C for simplicity of explanation. In a more typical operation, a request is wormholed through a top switch to a logic module. In response to the WRITE request, the logic module ignores information in fields other than the OP1 and PAYLOAD fields.
[0075]
FIG. 6 illustrates a WRITE request at time T = K + 5. The WRITE packet on ring C and the data on ring R together go through the logic module in synchronization. The last bit of the OP2 field is discarded by the logic module at the same time that the logic module is matched with the last bit of the BLANK field of the storage ring R. When the first bit of the PAYLOAD field of the packet reaches the logic module, logic module L removes the first bit from ring C and places the first bit in the data field of ring R. The process continues until the entire PAYLOAD field has been transferred from the communication ring to the Ring R DATA field. Logic module L zeroes the packet and preferably removes the packet from ring C so that no other logic module repeats its WRITE operation.
[0076]
FIG. 6 shows a data packet moving from ring C to ring R for visual comprehension. Data usually arrives from the top switch. More specifically, the data is scattered on the top switch.
[0077]
In another embodiment where a single DPIM is provided with multiple R rings, the address of the DPIM module is stored in the AD1 field and the address of a given R ring in the DPIM module is stored as part of the extended OP1 field. Is done. In an example in which one DPIM memory module is provided with eight R rings, the OP1 field has a length of 4 bits, the first bit indicates a READ or WRITE operation, and the next three bits indicate which R ring To indicate if a request has been made. If each DPIM includes multiple R-rings, the number of levels in the top switch and the number of levels in the concentrator are reduced.
[0078]
Providing multiple R-rings within a single DPIM also allows for more complex operations that require more data and more logic in the module and require more complex OP1 code. . For example, the request to the DPIM can be a request to send the largest value among all the R rings, or a request to send the sum of values of a subset of the R rings. Also, the DPIM request can be a request to send each copy of the word containing the specified subfield to the calculated address to enable efficient retrieval of certain types of data.
[0079]
In the PRAM system shown, the BLANK field is ignored and can have any value. In another embodiment, a BLANK field may be defined to assist in various operations. In one embodiment, the BLANK field is used for a scoreboard function. A system is BLSuppose we have fewer N processors and all N processors must read the DATA field before the DATA field can be overwritten. When a new DATA value is placed on storage ring R, the BLANK field is set to all zeros. When the processor W among the N processors reads the data, the bit W of BLANK is set to one. Only when all the appropriate N-bit subfields of BLANK are set to “1”, the data portion of the ring R can be overwritten. The BLANK field is reset again to all zeros.
[0080]
Such a scoreboard function is just one of many uses for the BLANK field. Those skilled in the art will be able to effectively use the BLANK field for various applications in computing and communications.
[0081]
In some embodiments, multiple logic modules in the DPIM must be able to intercommunicate with each other. An example of such an application is a leaky bucket algorithm used in asynchronous transfer mode (ATM) Internet switches. In the illustrated parallel access memory 200, the arithmetic logic module 314 sends a signal to a local counter (not shown) in response to receiving a READ request entry. The two arithmetic logic modules in one DPIM do not receive the first bit of the read packet at the same time, and therefore preferably use a common DPIM bus (not shown) to reset the counters connected to all logic modules. You can move. The counter can respond to all arithmetic logic modules so that if "leaky buckets overflow," all appropriate logic modules are notified and transform the AD2 and OP2 fields for that information. And generate the appropriate response to the appropriate destination.
[0082]
Referring to FIG. 1, a schematic block diagram illustrates a computational engine 100 constructed using a network interconnect structure as a basic element. Various embodiments of the computing engine include the core components of the general-purpose system 100 described above in the description of FIG. In the example of a computing engine that is a computing system, the bottom switch 112 sends packets to a computing unit 126 that includes one or more processors and memory or storage. Referring to FIG. 3, the arithmetic logic module associated with ring R performs some of the arithmetic functions of the overall system. The arithmetic unit 126 receiving the data from the bottom switch 112 performs further logical processing.
[0083]
The logic module performs both conventional and new processor processing depending on the overall function desired for the computing engine.
[0084]
A first example of the system 100 is a scalable parallel computing system. In one aspect of the process, the system performs a parallel SORT that includes a parallel compare sub-operation of the SORT process. Logic module L receives the first data element from the packet and receives the second data element from storage ring R 304. The logic module places the larger of the two data elements on the storage ring R, places the smaller one in the PAYLOAD field, and sends the smaller value to a predetermined address in the AD2 field of the packet. As shown in FIG. 3, if two such logic modules are connected in series, the second logic module performs a second comparison on the data coming from the first logic module within a few clock cycles. be able to. Such comparison and replacement processes are a common unit of work in many sorting algorithms, and those familiar with the prior art may use such comparison and replacement processes to form larger parallel sorting engines. It is possible.
[0085]
Those skilled in the art will be able to form many useful logic modules 314 that can be used for a wide range of system applications. A single logic module can perform many tasks, or form different types of logic modules, with each unit performing a smaller number of tasks.
[0086]
The system 100 includes two types of processing units. That is, the unit in the DPIM 114 and the unit in the arithmetic unit CU 126. DPIM handles bit-serial data movement and performs operations that involve moving large amounts of data. The CU includes a processor, such as one or more general-purpose processors, and a normal RAM. The CU performs a "number crunching" operation on the data set provided to the CU to generate, transfer, and receive packets. One of the key functions of DPIM is to provide data to the CU with low delay, in parallel, and in a form convenient for later processing.
[0087]
In one example of a function, a large area of a computational problem can be broken down into a set of non-overlapping sub-areas. A CU may choose to receive certain types of data from each sub-region that contribute significantly to the operations performed by the CU. DPIM prepares the data and sends the result to the appropriate CU. For example, the region may be all chess positions possible in 10 movements, and the sub-region may include all positions in 8 movements from a given pair of movements. DPIM returns only the first likely motion pair to the CU, with data ordered from most likely to least likely.
[0088]
In another application, a region includes a representation of a plurality of objects in a three-dimensional space, and each sub-region comprises a partitioned portion of the space. In one particular example, a state of interest is defined as a state of gravity above a predetermined threshold acting on a body of interest. DPIM sends data to the CU from sub-regions containing data consistent with the state of interest.
[0089]
The scalable system shown in FIG. 1 and the embodiment using the core elements of the scalable system can be constructed to be suitable for supercomputer applications. In supercomputer applications, multiple CUs receive data in an appropriate format and in a timely manner in parallel. These CUs process data in parallel, send processing results, and generate requests for later interaction.
[0090]
DPIM is also useful as a bookkeeper and task scheduler. As an example, there is a task scheduler using a plurality (K) of arithmetic units (CUs) of a collection H. The CUs in set H typically perform various tasks in parallel operations. When the task is completed, a new task is assigned to N of the K CUs. A data storage ring R capable of storing at least K bits of data nullifies a K-length word W. Each bit position in word W is associated with a particular CU of collection H. When a CU completes its assigned task, it sends a packet M to the DPIM containing ring R. The logic module L1 on the data storage ring R transforms the word W by inserting a 1 into the bit position associated with the CU that sent the packet M. Another logic module L2 on data storage ring R tracks the number of ones in word W. If the word W has N bits, the N idle CUs in H start a new task. These new tasks are started by multicasting one packet to N processors. An efficient method for multicasting to a subset of the set H is described below.
[0091]
Referring to FIG. 7, a schematic block diagram illustrates the structure and technique for performing a multicast operation using indirect addressing. Multicasting a packet to a plurality of destinations specified by corresponding addresses is a very useful function in computing and communication applications. A single first address points to a set of second addresses. These second addresses are the destination of the copy of the packet payload to be multi-chasted.
[0092]
In some embodiments, the interconnect structure system has a set C of output ports, and under certain conditions, the system0To all output ports in Set C0, C1, C2,. . . , CJ-1Consists of a set of output ports, for a particular integer N less than J, the set CNCan receive the same particular packet as a result of a single multicast request.
[0093]
The multicast interconnect structure 700 stores the set C in the storage ring R 704.NStores a set of output addresses for Each of the rings has the capacity to store FMAX addresses. In the example shown, the ring R shown in FIG. 7 has the capacity to store FMAX = 5 addresses.
[0094]
Various configurations and sizes of switches can be used. In one embodiment, the bottom switch has 64 output ports. The output port address can be stored in a 6-bit binary pattern. Ring R is F0, F1, F2, F3And F4Has five fields 702, labeled asNOutput port position is maintained. Each field is 7 bits long. Of the seven bits, the first bit is CNIs set to 1 if the position of is stored in the next 6 bits of the field. Otherwise, the first bit is set to zero.
[0095]
At least two types of packets may reach the multicast logic module MLM 714. These packets include a MULTICAST READ packet and a MULTICAST WRITE packet.
[0096]
The first type of packet, PW, has an OP1 field that specifies MULTICAST WRITE processing. The WRITE packet reaches communication ring 302 and has the following format:
| PAYLOAD | OP1 | BIT |
[0097]
PAYLOAD is a field F connected in a chain.0, F1, F2, F3And F4be equivalent to. The packet PW is transmitted to the MLM 714 at the appropriate time.0Arrives at the communication ring 302 at a location suitable for reading the first bit of. The MLM writes the first bit of PAYLOAD to the ring R in the same manner as the WRITE operation described above with reference to FIG.
[0098]
FIG. 7 shows a logic module connected to special hardware DPIM 714 that supports the multicast function. In response to the WRITE request, the system performs an operation, whereby the field F0, F1, F2, F3And F4Are transferred from rings Z and C to data storage ring R 304. The packet is indicated by BIT = 1, and when BIT = 0, the rest of the packet is always ignored. A processing code field OP1 follows the BIT field. In the MULTICAST WRITE operation, OP1 transfers the payload from the packet to the storage ring, indicating that the data on the storage ring should then be replaced. Data is serially transferred from the MLM to the storage ring.
[0099]
For example, data is transferred over the rightmost line 334. The data arrives at the appropriate time and location to be placed on storage ring 704 in the appropriate format. In the MULTICAST WRITE process, the control signal sent from the bottom switch to the MLM via line 722 can be ignored.
[0100]
Another type of packet, PR, indicating a MULTICAST READ request may arrive on the communication ring 302 and has the following format:
| PAYLOAD | OP2 | BLANK | OP1 | BIT |
[0101]
The BLANK section is, for example, 6 bits long. BLANK field is CNIs replaced by the target address from one of the fields. The OP1 field may or may not be used for a particular packet or application. A group of packets enters the bottom switch 112 in the following format:
| PAYLOAD | OP2 | AD2 | BIT |
[0102]
The address field AD2 comes from the ring R field. The processing fields OP2 and PAYLOAD are derived from a MULTICAST READ packet.
[0103]
In the example shown, storage ring R 704 located at target address AD1 stores three output port addresses, eg, 3, 8, and 17. Output address 3 is field F0Is stored in The most significant bit of address 3 appears first, followed by the next most significant bit, and so on. Therefore, the standard 6-bit binary pattern representing the decimal integer 3 is 000011. These header bits are used in order from the most significant bit to the least significant bit. It is convenient to store the header bits with the most significant bit first, so that field F0In, the field representing target output 3 is represented by the 6-bit pattern 110,000. Field F including timing bits0The whole has a 7-bit pattern 1100001. Similarly, field F1Stores the decimal number 8 as the pattern 0001001. Field F2Stores the decimal number 17 as 1000101. Since no further output ports are addressed, field F3And F4Are all set to zero (00000000).
[0104]
The control signal on line 722 indicates a non-blocking condition at the bottom switch, allowing packets to enter through line 718. When the control signal sent from the bottom switch to the logic module 714 over line 722 indicates a busy condition, no data is sent to the switch. When the "non-busy" control signal reaches the MLM, the data field of the address in ring R is placed in the proper position to generate and send a response to reading unit 708 and bottom switch 112. At the appropriate time after the "non-busy" signal arrives at the logic module, the MLM sends a plurality of MULTICAST READ response packets through the bottom switch 112 to the set of addresses C.NStart sending to.
[0105]
After sending a MULTICAST READ packet to the DPIM at address AD1, the system stores the PAYLOAD field of the packet in the set C stored in ring R 704.NHas the ability to multicast to multiple addresses stored in
[0106]
Typically, such multicast systems include hardware capable of performing various computation and data storage tasks. In the example shown, multicast capability is achieved by using a specially configured DPIM unit 700 to hold and forward multicast addresses.
[0107]
The generalization of the multicast function described above is that a single packet M is a set CNIs a mode that is sent to a predetermined subset of output ports whose addresses specify membership in the The bit mask indicating which members should be sent is called a send mask. In one example, addresses 3, 8, and 17 are set CNAre three members. Sending mask 0, 0, 1, 0, 1 is list CNIndicate that the first and third output ports should receive the packet. The response packet is multicast to output ports 3 and 17. In one example, the control signal indicates whether all input ports are ready to receive packets, or whether one or more input ports are blocked.
[0108]
In another example, a list of unblocked output ports is stored. This list is a mask called a block mask. The value 1 at the Nth position in the transmit mask is CNIs desired to be sent to the Nth member of The value 1 at the Nth position of the block mask is CNIndicates that the Nth member of is not blocked and can be sent. When the value of the Nth position in both masks is 1, packet M is sent to the Nth output port of the list.
[0109]
Corresponding to the subset indicated by the outgoing mask, CNPackets that are multicast to a subset of the output ports listed in have the following format:
PAYLOAD | OP2 | Mask | Multicast Op | AD1 | BIT |
[0110]
Packets enter the top switch of the system. The address normally stored in the address field AD2 is included in the data stored in the address field AD1, and therefore, the address field AD2 is not used.
[0111]
Referring to FIG. 7, the BIT field and the OP1 code are sent from the ring C or the ring Z to the logic module 714. The sending mask and the block mask also enter the logic module at the same time. When the J-th bit of the transmission mask is 1 and the J-th bit of the block mask is also 1, PAYLOAD is the address FJSent to The rest of the process proceeds as in the unmasked multicast mode.
[0112]
Set CNThe set of output ports in is p0, P1,. . . , PmIndicated by The output ports are divided into groups, each of which has at most a number of Cs that can be stored on the data storage ring R.NIncluding members. Data ring R has five output addresses and set CNHas nine output ports, the first four output ports are stored in group 0, the next four output ports are stored in group 1, and the remaining output ports are stored in group 3. Output port sequence p0, P1,. . . , P9Is q00, Q01, Q02, Q03, Q10, Q11, Q12, QThirteen, Q20Can also be indexed. In this way, the physical address of the target can be completely described by two integers indicating the group number and the address field index.
[0113]
In some applications, the packet payload carries the following information:
C indicating which port of the output port set was used to locate the addressNSubscript N,
C where the address is locatedNGroup of
Member of the group to which the address belongs,
Input port of the switch to which the packet is input.
[0114]
The second and third pieces of information indicate the two indices of the members of q, and the index of p can be easily calculated from these two indices. For a packet carrying these pieces of information, the PAYLOAD field has the following format.
N | first subscript of q | second subscript of q | input port number |
[0115]
FIG. 7 also shows a system that uses indirect addresses in multicasting. A simpler operation is to indirectly address a single output port. In one example of indirect addressing, data storage ring R includes a single field representing an indirect address. For example, the DPIM storage ring R at address 17 contains the value 153. The packet sent to the address 17 is sent to the output port 153 of the bottom switch.
[0116]
In the embodiment described herein, all logic modules associated with a given ring R send data to the bottom switch 112. If one DPIM sends a traffic burst and another DPIM unit sends a relatively small amount of traffic to the bottom switch, these rings R send packets to a group of rings B instead of the same ring. In yet another example, these rings R send packets to concentrator 150, which conveys data to bottom switch 112.
[0117]
In the system described above, the information in the data storage ring R 304 and the communication ring R 302 circulates in a circularly connected FIFO manner. One variation is a system in which the information in ring R 704 is stationary. Data from the level zero ring in the top switch 110 can be connected to enter a static buffer. The data in the static buffer can interact in a manner that is logically equivalent to the circular model described above. The advantage of the static model is that data can be stored more efficiently.
[0118]
In this description, data X is sent to a ring R that holds data Y. Arithmetic ring C receives both streams of data X and data Y as input signals, performs a mathematical function F on data X and Y, and sends the result of the operation to the target output port. The target can be stored in the ring R field or the AD2 field of the packet. Alternatively, the target may be based on the result of F (X, Y) or may be generated by another function G (X, Y).
[0119]
In another application, multiple operations can be performed on data X and data Y, and the results can be forwarded to multiple destinations. For example, the result of the function F (X, Y) is sent to the destination specified by the address AD2. Further, the result of the function H (X, Y) can be sent to the destination specified by the address AD3 of the packet. Multiple processing has the advantage that system 100 can efficiently perform a wide variety of transformations in parallel.
[0120]
In addition to performing more complicated arithmetic functions on the two arguments X and Y, it is also possible to perform simpler tasks such that the function F is a function of only one of X or Y. It is possible. The result of the simple function F (X) or F (Y) is generated by another function G (X) or sent to the destination specified by address AD2.
[0121]
Although the present invention has been described based on various embodiments, it should be understood that these embodiments are illustrative and do not limit the scope of the present invention. Various modifications, changes, additions and improvements of the described embodiments are possible. For example, those skilled in the art can readily implement the steps necessary to provide the disclosed structures and methods, and the process parameters, materials, and dimensions are provided only as examples. , It will be appreciated that it can be adjusted to achieve desired functional characteristics or variations within the scope of the invention. Modifications and changes of the disclosed embodiments are possible based on the description of the present specification without departing from the spirit and scope of the present invention described in the appended claims.
[0122]
Those skilled in the art will have the ability to make some useful variations and modifications within the scope of the invention. Some examples of such variations and modifications have been listed, but may be applied to other systems.
[Brief description of the drawings]
FIG.
FIG. 1 is a schematic block diagram showing an example of a general-purpose system formed from building blocks including a plurality of network interconnect structures.
FIG. 2
FIG. 2 is a schematic block diagram showing a parallel memory structure such as a parallel random access memory (PRAM) formed using a network interconnect structure as a basic element.
FIG. 3
FIG. 3 is a lower level view of the top switch showing the communication ring, the plurality of logic modules, connections to the circular FIFO data storage ring, and the lower level switch to the upper level.
FIG. 4A
4A, 4B and 4C are block diagrams illustrating the movement of data through a communication ring and a circular FIFO data storage ring. FIG. 4A applies to both READ and WRITE requests. 4B and 4C apply to a READ request in progress.
FIG. 4B
4A, 4B and 4C are block diagrams illustrating the movement of data through a communication ring and a circular FIFO data storage ring. FIG. 4A applies to both READ and WRITE requests. 4B and 4C apply to a READ request in progress.
FIG. 4C
4A, 4B and 4C are block diagrams illustrating the movement of data through a communication ring and a circular FIFO data storage ring. FIG. 4A applies to both READ and WRITE requests. 4B and 4C apply to a READ request in progress.
FIG. 5
FIG. 5 shows a portion of an interconnect structure executing two read instructions that read from the same circular data storage ring that occurs during an overlap period. The read data enters a second switch where it is directed to a different target.
FIG. 6
FIG. 6 shows a part of the interconnect structure executing the WRITE instruction.
FIG. 7
FIG. 7 is a schematic block diagram illustrating the structure and technique for performing a multicast operation using indirect addressing.

Claims (43)

並列データ処理装置であって、
複数の位置をインターコネクトするためのインターコネクト構造(100)と、
複数の記憶部分を有する記憶要素Wを位置Lに含み、前記インターコネクト構造に接続され、前記インターコネクト構造を介して、位置としてアクセス可能な1つ又は複数の記憶要素(114)と、
前記インターコネクト構造に接続され、前記インターコネクト構造の位置としてアクセス可能な複数の演算ユニット(126)とを有し、
前記複数の演算ユニットが、前記インターコネクト構造を介して、前記1つ又は複数の記憶要素からデータをアクセス可能であって、前記演算ユニットが、演算ユニットC1及び演算ユニットC2を含み、前記演算ユニットC1及びC2が、前記記憶要素Wの異なる前記記憶部分から同時に読み取り、前記記憶要素Wの前記記憶部分のデータ内容を異なるターゲット位置に転送可能であることを特徴とする装置。
A parallel data processing device,
An interconnect structure (100) for interconnecting a plurality of locations;
One or more storage elements (114) comprising at location L a storage element W having a plurality of storage parts, connected to said interconnect structure and accessible as a location via said interconnect structure;
A plurality of operation units (126) connected to the interconnect structure and accessible as locations of the interconnect structure;
The plurality of arithmetic units are capable of accessing data from the one or more storage elements via the interconnect structure, the arithmetic units including an arithmetic unit C1 and an arithmetic unit C2, and the arithmetic unit C1 And C2 can simultaneously read from different storage portions of the storage element W and transfer data content of the storage portion of the storage element W to different target locations.
並列データ処理装置であって、
複数の位置をインターコネクトするためのインターコネクト構造(100)と、
位置L1及び位置L2にそれぞれ記憶要素W1及び記憶要素W2を含み、前記インターコネクト構造に接続され、前記インターコネクト構造を介して、位置としてアクセス可能な1つ又は複数の記憶要素(114)と、
前記インターコネクト構造に接続され、前記インターコネクト構造の位置としてアクセス可能な複数の演算ユニット(126)とを有し、
前記複数の演算ユニットが、前記インターコネクト構造を介して、前記1つ又は複数の記憶要素からデータをアクセス可能であって、前記演算ユニットが、演算ユニットC1及び演算ユニットC2を含み、前記演算ユニットC1が、前記記憶要素W1及びW2からのデータに対して同時に読み取り及び演算可能であって、前記演算ユニットC2が、前記演算ユニットC1による読み取り及び演算とオーバラップする時点で、前記記憶要素W1及びW2からのデータを読み取り及び演算可能であることを特徴とする装置。
A parallel data processing device,
An interconnect structure (100) for interconnecting a plurality of locations;
One or more storage elements (114) including storage elements W1 and W2 at locations L1 and L2, respectively, connected to said interconnect structure and accessible as locations via said interconnect structure;
A plurality of operation units (126) connected to the interconnect structure and accessible as locations of the interconnect structure;
The plurality of operation units can access data from the one or more storage elements via the interconnect structure, and the operation units include an operation unit C1 and an operation unit C2, and the operation unit C1 Can simultaneously read and operate on the data from the storage elements W1 and W2, and when the operation unit C2 overlaps with the reading and operation by the operation unit C1, the storage elements W1 and W2 A device capable of reading and calculating data from the device.
並列データ処理装置であって、
複数の位置をインターコネクトするためのインターコネクト構造(100)と、
複数の記憶部分を有するワードW1を記憶するべき循環シフトレジスタR1を含み、前記インターコネクト構造に接続され、前記インターコネクト構造を介して、位置としてアクセス可能な1つ又は複数の記憶要素(114)と、
前記インターコネクト構造に接続され、前記インターコネクト構造の位置としてアクセス可能な複数の演算ユニット(126)とを有し、
前記複数の演算ユニットが、前記ワードW1の異なる前記記憶部分に対し、同時に演算可能であることを特徴とする装置。
A parallel data processing device,
An interconnect structure (100) for interconnecting a plurality of locations;
One or more storage elements (114), including a circular shift register R1 to store the word W1 having a plurality of storage portions, connected to the interconnect structure and accessible as a location via the interconnect structure;
A plurality of operation units (126) connected to the interconnect structure and accessible as locations of the interconnect structure;
Apparatus, wherein the plurality of operation units can operate simultaneously on different storage portions of the word W1.
前記記憶要素が、複数の記憶部分を有するワードW2を記憶するべき循環シフトレジスタR2(302)を含み、
前記複数の演算ユニットが、前記ワードW2に対し演算を実行するのに、前記ワードW1内の情報を利用可能であることを特徴とする請求項3に記載の装置。
Said storage element includes a circular shift register R2 (302) to store a word W2 having a plurality of storage portions;
4. The apparatus of claim 3, wherein the plurality of arithmetic units can use information in the word W1 to perform an operation on the word W2.
階層をなしてインターコネクトされた複数のノード(330)を含む、データを取り扱い、更にノードに於けるデータの衝突を予測し、前記階層により定められる優先順序に基づき前記データ衝突を解決するようなロジック(114)を含むインターコネクト構造(100)と、
前記インターコネクト構造に接続され、データに含まれる通信情報に基づき前記インターコネクト構造にデータを分配する第1のスイッチ(110)と、
前記インターコネクト構造に接続され、前記データに対する処理を実行することが可能な複数のロジックモジュール(114)と、
前記複数のロジックモジュールに接続され、前記複数のロジックモジュールからデータを受け取る第2のスイッチ(112)とを有することを特徴とする装置。
Logic for handling data, including a plurality of nodes (330) interconnected in a hierarchy, predicting data collisions at the nodes, and resolving the data collisions based on a priority order defined by the hierarchy. An interconnect structure (100) including (114);
A first switch (110) connected to the interconnect structure and distributing data to the interconnect structure based on communication information included in the data;
A plurality of logic modules (114) connected to the interconnect structure and capable of executing processing on the data;
A second switch (112) connected to the plurality of logic modules and receiving data from the plurality of logic modules.
前記複数のロジックモジュールに接続され、かつ前記第1のスイッチに接続された複数のインターコネクトモジュールを更に有し、前記インターコネクトモジュールが、前記ロジックモジュールに於けるデータトラフィックを監視し、データ衝突を回避するために前記第1のスイッチによるデータ注入のタイミングを制御可能であることを特徴とする請求項5に記載の装置。A plurality of interconnect modules connected to the plurality of logic modules and connected to the first switch, wherein the interconnect modules monitor data traffic in the logic modules and avoid data collisions. 6. The apparatus according to claim 5, wherein the timing of data injection by the first switch is controllable for this purpose. 前記第1のスイッチが複数の出力ポートを有し、当該装置が、更に、前記第1のスイッチに接続され、かつ前記複数のロジックモジュールに接続された複数のインターコネクトモジュールを有し、前記複数のインターコネクトモジュールが、それぞれ前記複数の出力ポートに関連付けられていることを特徴とする請求項5に記載の装置。The first switch has a plurality of output ports, and the device further has a plurality of interconnect modules connected to the first switch and connected to the plurality of logic modules, The apparatus of claim 5, wherein an interconnect module is associated with each of the plurality of output ports. 前記複数のロジックモジュールが、前記複数のロジックモジュールの一つにより実行されるべき処理を決定するためにデータ内の情報を利用するロジックを含むことを特徴とする請求項5に記載の装置。The apparatus of claim 5, wherein the plurality of logic modules includes logic that uses information in data to determine a process to be performed by one of the plurality of logic modules. 前記複数のロジックモジュールが、ロード、記憶、読み取り及び書き込みを含むデータ転送処理と、AND、OR、NOR、NAND、排他的AND、排他的OR及びビットテストを含む論理演算と、加算、減算、乗算、除算及び超越関数を含む算術演算とから選択されたロジック機能を備えた複数の異なるロジック要素タイプを有することを特徴とする請求項5に記載の装置。The plurality of logic modules perform data transfer processing including load, storage, read and write, logical operations including AND, OR, NOR, NAND, exclusive AND, exclusive OR, and bit test, and addition, subtraction, and multiplication. 6. The apparatus according to claim 5, comprising a plurality of different logic element types with logic functions selected from: arithmetic operations, including division and transcendental functions. 前記第1のスイッチに接続され、かつ前記複数のロジックモジュールに接続された複数のインターコネクトモジュールを更に有し、前記インターコネクトモジュールが、前記ロジックモジュールに於けるデータトラフィックを監視可能で、データを保持し、集中するためのバッファ及び集信装置を有し、データ衝突を回避するために前記第1のスイッチによるデータ注入のタイミングを制御可能であることを特徴とする請求項5に記載の装置。And a plurality of interconnect modules connected to the first switch and connected to the plurality of logic modules, the interconnect modules being capable of monitoring data traffic in the logic modules and storing data. 6. The apparatus according to claim 5, further comprising a buffer and a concentrator for concentrating, and wherein the timing of data injection by the first switch can be controlled to avoid data collision. 前記第1及び第2のスイッチと、前記複数のインターコネクト構造と、前記複数のインターコネクトモジュールとによりインターコネクトユニットが形成され、当該装置が更に、前記複数のインターコネクト構造に接続され、前記インターコネクトユニット外にデータを転送し、かつトップスイッチにデータを転送するべく配置された1つ又は複数の演算ユニット(126)を有することを特徴とする請求項5に記載の装置。An interconnect unit is formed by the first and second switches, the plurality of interconnect structures, and the plurality of interconnect modules, and the device is further connected to the plurality of interconnect structures, and the data is output outside the interconnect unit. 6. The apparatus according to claim 5, comprising one or more arithmetic units (126) arranged to transfer the data and to the top switch. 前記第1及び第2のスイッチと、前記複数のインターコネクト構造と、前記複数のインターコネクトモジュールとによりインターコネクトユニットが形成され、当該装置が更に、前記インターコネクトユニット外にデータを転送し、かつトップスイッチにデータを転送するべく配置された1つ又は複数のメモリーユニット(126)を有することを特徴とする請求項5に記載の装置。An interconnect unit is formed by the first and second switches, the plurality of interconnect structures, and the plurality of interconnect modules, and the device further transfers data outside the interconnect unit, and transmits the data to a top switch. Device according to claim 5, characterized in that it has one or more memory units (126) arranged to transfer data. 前記トップ及びボトムスイッチが、複数の異なるビット長のデータを取り扱うことを特徴とする請求項5に記載の装置。The apparatus of claim 5, wherein the top and bottom switches handle a plurality of different bit lengths of data. 前記ロジックモジュールが、ダイナミック・プログラム・イン・メモリーであることを特徴とする請求項5に記載の装置。The apparatus according to claim 5, wherein the logic module is a dynamic program in memory. 当該装置が、データペイロードを取扱い可能なペイロードフィールドと、処理されるべきデータを保持する記憶位置を指定する第1のアドレスと、前記第1のアドレスに保持されたデータに対して実行されるべき処理を指定する第1の処理コードと、前記第1のアドレス記憶位置からのデータに対して処理を行うオプションデバイスを指定する第2のアドレスと、前記第1のアドレス記憶位置からのデータに対して前記第2のアドレスデバイスが行うべき処理を指定する第2の処理コードとを含む情報及びデータフィールドを備えたデータメッセージに対して処理を行うことを特徴とする請求項5に記載の装置。The device is to be performed on a payload field capable of handling a data payload, a first address specifying a storage location for holding data to be processed, and data held at the first address. A first processing code that specifies processing, a second address that specifies an optional device that performs processing on the data from the first address storage location, and a second address that specifies an optional device that performs processing on the data from the first address storage location. 6. The apparatus according to claim 5, wherein the processing is performed on a data message including information and a data field including a second processing code specifying a processing to be performed by the second address device. 当該装置が、データパケットが存在することを示すフィールドと、データペイロードを担うことが可能なペイロードフィールドと、処理されるべきデータを保持する記憶位置を指定する第1のアドレスと、前記第1のアドレスに保持されたデータに対して実行されるべき処理を指定する第1の処理コードと、前記第1のアドレス記憶位置からのデータに対して処理を行うオプションデバイスを指定する第2のアドレスと、前記第1のアドレス記憶位置からのデータに対して前記第2のアドレスデバイスが行うべき処理を指定する第2の処理コードとを含む情報及びデータフィールドを備えたデータメッセージに対して処理を行うことを特徴とする請求項5に記載の装置。The apparatus comprises: a field indicating the presence of a data packet; a payload field capable of carrying a data payload; a first address specifying a storage location for holding data to be processed; A first processing code specifying processing to be performed on the data held at the address; a second address specifying an optional device performing processing on the data from the first address storage location; Performing a process on a data message having information and a data field including a second processing code designating a process to be performed by the second address device on data from the first address storage location. 6. The device according to claim 5, wherein 前記第2のスイッチに接続された1つまたは複数の演算ユニット(126)を更に有し、前記第2のスイッチが、前記1つまたは複数の演算ユニットに対してデータパケットを転送可能であって、当該装置が演算エンジンをなすことを特徴とする請求項5に記載の装置。And further comprising one or more processing units (126) connected to the second switch, wherein the second switch is capable of transferring data packets to the one or more processing units. Apparatus according to claim 5, characterized in that the apparatus forms a calculation engine. 複数の記憶部分を有し、かつ前記インターコネクト構造に接続され、前記インターコネクト構造を介して、位置としてアクセス可能な1つ又は複数の記憶要素と、
前記インターコネクト構造に接続され、前記インターコネクト構造の位置としてアクセス可能な複数の演算ユニット(126)とを更に有し、
前記複数の演算ユニットが、前記インターコネクト構造を介して、前記1つ又は複数の記憶要素からデータをアクセス可能であって、前記演算ユニットが、第1の演算ユニット及び第2の演算ユニットを含み、前記第1及び第2の演算ユニットが、前記記憶要素の異なる前記記憶部分から同時に読み取り、前記記憶要素の前記記憶部分のデータ内容を異なるターゲット位置に転送可能であることを特徴とする請求項5に記載の装置。
One or more storage elements having a plurality of storage portions and connected to the interconnect structure and accessible as locations via the interconnect structure;
A plurality of arithmetic units (126) connected to the interconnect structure and accessible as locations of the interconnect structure;
The plurality of operation units can access data from the one or more storage elements via the interconnect structure, and the operation units include a first operation unit and a second operation unit; 6. The storage device according to claim 5, wherein the first and second arithmetic units are capable of simultaneously reading from different storage portions of the storage element and transferring data contents of the storage portion of the storage element to different target locations. An apparatus according to claim 1.
前記インターコネクト構造に接続され、前記インターコネクト構造を介して、位置としてアクセス可能な1つ又は複数の記憶要素(116)と、
前記インターコネクト構造に接続され、前記インターコネクト構造の位置としてアクセス可能な複数の演算ユニット(126)とを更に有し、
前記複数の演算ユニットが、前記インターコネクト構造を介して、前記1つ又は複数の記憶要素からデータをアクセス可能であって、前記演算ユニットが、第1の演算ユニット及び第2の演算ユニットを含み、前記第1の演算ユニットが、2つの前記記憶要素からのデータに対して同時に読み取り及び演算可能であって、前記第2の演算ユニットが、前記第1の演算ユニットによる読み取り及び演算とオーバラップする時点で、2つの前記記憶要素からのデータに対して読み取り及び演算可能であることを特徴とする請求項5に記載の装置。
One or more storage elements (116) connected to the interconnect structure and accessible as a location via the interconnect structure;
A plurality of arithmetic units (126) connected to the interconnect structure and accessible as locations of the interconnect structure;
The plurality of operation units can access data from the one or more storage elements via the interconnect structure, and the operation units include a first operation unit and a second operation unit; The first arithmetic unit can read and operate on data from the two storage elements simultaneously, and the second arithmetic unit overlaps with the reading and arithmetic by the first arithmetic unit. Apparatus according to claim 5, wherein data can be read and operated on from two of said storage elements at a time.
階層インターコネクト構造をなすように接続され、データを取り扱い、かつノードに於けるデータの衝突を予測し、少なくとも部分的に前記階層により定められる優先順序に基づき前記データ衝突を解決するような複数のロジックモジュール(114)と、
前記インターコネクト構造に接続され、データに含まれる通信情報に基づき前記複数のロジックモジュールにデータを分配する第1のスイッチ(110)と、
前記複数のロジックモジュールに接続され、前記複数のロジックモジュールからデータを受け取る第2のスイッチ(112)とを有することを特徴とする装置。
A plurality of logics connected in a hierarchical interconnect structure to handle data, predict data collisions at nodes, and resolve the data collisions based at least in part on a priority order defined by the hierarchy. A module (114);
A first switch connected to the interconnect structure and distributing data to the plurality of logic modules based on communication information included in the data;
A second switch (112) connected to the plurality of logic modules and receiving data from the plurality of logic modules.
前記複数のロジックモジュールの1つが、データ通信リング(302)と、データ記憶リング(304)とを有し、前記データ通信リング及びデータ記憶リングが循環FIFOからなることを特徴とする請求項20に記載の装置。21. The method of claim 20, wherein one of the plurality of logic modules has a data communication ring (302) and a data storage ring (304), wherein the data communication ring and the data storage ring comprise a circular FIFO. The described device. 前記複数のロジックモジュールの1つが、データ通信リング(302)と、データ記憶リング(304)とを有し、前記データ通信リング及びデータ記憶リングが循環FIFOからなり、データの一要素が単一のメモリーFIFOに保持され、前記データ要素がデータ記憶リング内を循環する間に、前記データが前記ロジックモジュールにより変形されることを特徴とする請求項20に記載の装置。One of the plurality of logic modules includes a data communication ring (302) and a data storage ring (304), wherein the data communication ring and the data storage ring comprise a circular FIFO, and one element of data is a single element. 21. The apparatus of claim 20, wherein the data is modified by the logic module while the data elements are circulated in a data storage ring, held in a memory FIFO. 前記複数のロジックモジュールの1つが、データ通信リング(302)と、データ記憶リング(304)とを有し、前記データ通信リング及びデータ記憶リングが循環FIFOからなり、データの一要素が単一のメモリーFIFOに保持され、前記単一のメモリーFIFOは、プログラム命令及びデータの両者を保持可能であることを特徴とする請求項20に記載の装置。One of the plurality of logic modules includes a data communication ring (302) and a data storage ring (304), wherein the data communication ring and the data storage ring comprise a circular FIFO, and one element of data is a single element. 21. The apparatus of claim 20, held in a memory FIFO, wherein said single memory FIFO is capable of holding both program instructions and data. 前記複数のロジックモジュールの1つが、データ通信リングと、データ記憶リングとを有し、前記データ通信リングが、該データ通信リングに接続された前記第1のスイッチのボトムレベルのリングのミラーイメージであることを特徴とする請求項20に記載の装置。One of the plurality of logic modules has a data communication ring and a data storage ring, and the data communication ring is a mirror image of a bottom level ring of the first switch connected to the data communication ring. 21. The device of claim 20, wherein the device is. データ通信リングと、複数のデータ記憶リングとを更に有し、前記ロジックモジュールの1つまたは複数のものが、前記データ通信リング及びデータ記憶リングに関連付けられていることを特徴とする請求項20に記載の装置。21. The system of claim 20, further comprising a data communication ring and a plurality of data storage rings, wherein one or more of the logic modules are associated with the data communication ring and the data storage ring. The described device. データ通信リングと、複数のデータ記憶リングとを更に有し、前記ロジックモジュールの1つまたは複数のものが、前記データ通信リング及びデータ記憶リングに関連付けられており、前記ロジックモジュールの複数のものが同一のロジック要素タイプを有することを特徴とする請求項20に記載の装置。A data communication ring, and a plurality of data storage rings, wherein one or more of the logic modules are associated with the data communication ring and the data storage ring; The apparatus of claim 20, having the same logic element type. データ通信リングと、複数のデータ記憶リングとを更に有し、前記ロジックモジュールの1つまたは複数のものが、前記データ通信リング及びデータ記憶リングに関連付けられており、前記ロジックモジュールの複数のものが複数の異なるロジック要素タイプを有することを特徴とする請求項20に記載の装置。Further comprising a data communication ring and a plurality of data storage rings, wherein one or more of the logic modules are associated with the data communication ring and the data storage ring; The apparatus of claim 20, having a plurality of different logic element types. データ通信リングと、複数のデータ記憶リングとを更に有し、前記ロジックモジュールの1つまたは複数のものが、前記データ通信リング及びデータ記憶リングに関連付けられており、前記ロジックモジュールの複数のものが、ロード、記憶、読み取り及び書き込みを含むデータ転送処理と、AND、OR、NOR、NAND、排他的AND、排他的OR及びビットテストを含む論理演算と、加算、減算、乗算、除算及び超越関数を含む算術演算とから選択されたロジック機能を備えた複数の異なるロジック要素タイプを有することを特徴とする請求項20に記載の装置。A data communication ring, and a plurality of data storage rings, wherein one or more of the logic modules are associated with the data communication ring and the data storage ring; , Load, store, read and write, data transfer processing, AND, OR, NOR, NAND, exclusive AND, exclusive OR and logical operation including bit test, and addition, subtraction, multiplication, division and transcendental functions. 21. The apparatus of claim 20, having a plurality of different logic element types with logic functions selected from arithmetic operations including. 前記第1のスイッチに接続され、かつ前記複数のロジックモジュールに接続された複数のインターコネクトモジュールを更に有し、前記インターコネクトモジュールが、前記ロジックモジュールに於けるデータトラフィックを監視可能で、データを保持し、集中するためのバッファ及びコンセントレータを有し、データ衝突を回避するために前記第1のスイッチによるデータ注入のタイミングを制御可能であることを特徴とする請求項20に記載の装置。And a plurality of interconnect modules connected to the first switch and connected to the plurality of logic modules, the interconnect modules being capable of monitoring data traffic in the logic modules and storing data. 21. The apparatus of claim 20, comprising a buffer and a concentrator for concentrating, and wherein the timing of data injection by the first switch is controllable to avoid data collisions. データ通信リング(302)と、複数のデータ記憶リング(304)とを更に有し、前記データ記憶リングが、複数のソースから同時にアクセス可能であって、複数の目的位置に同時に転送可能なデータを記憶することを特徴とする請求項20に記載の装置。It further comprises a data communication ring (302) and a plurality of data storage rings (304), wherein the data storage ring is for simultaneously accessing data from a plurality of sources and transferring data to a plurality of destination locations simultaneously. 21. The device of claim 20, storing. 前記ロジックモジュールが、ダイナミック・プログラム・イン・メモリー式ロジックモジュールであることを特徴とする請求項20に記載の装置。The apparatus of claim 20, wherein the logic module is a dynamic program-in-memory logic module. マルチプル・アクセス・メモリー及び演算装置であって、
メモリーデバイスを含む複数のロジックデバイスと、
データ及び処理コードを前記ロジックデバイスにルーティングするために前記ロジックデバイスに接続されたインターコネクト構造とを有し、前記インターコネクト構造が、更に、
複数のノード(330)と、
前記複数のノードに関連付けられた複数のロジック要素(114)と、
送信ノードとして機能するノードから受信ノードとして機能するノードに向けてデータを転送するように、それぞれが、選択されたノードを互いに接続する複数のメッセージインターコネクトパスと、
送信ノードから前記受信ノードに関連付けられたロジック要素に向けて制御信号を転送するように、それぞれが、選択されたノードを互いに接続する複数の制御信号インターコネクトパスとを有し、
前記複数のノードが、
互いに異なるノードA、B及びXと、
ノードBのためのルーティングを決定するようにノードBに関連付けられたロジックLと、
送信ノードとして機能するノードBから受信ノードとして機能するノードXに至るメッセージインターコネクトパスと、
送信ノードとして機能するノードAから受信ノードとして機能するノードXに至るメッセージインターコネクトパスと、
送信ノードとして機能するノードAからロジックLに至る制御信号インターコネクトパスとを有し、
前記制御信号が、ノードAからノードXへのデータの転送を、ノードBからノードXへのデータの転送に対して優先的に行われるようにすることを特徴とする装置。
A multiple access memory and arithmetic unit,
Multiple logic devices, including memory devices,
An interconnect structure connected to the logic device for routing data and processing code to the logic device, wherein the interconnect structure further comprises:
A plurality of nodes (330);
A plurality of logic elements (114) associated with the plurality of nodes;
A plurality of message interconnect paths, each connecting the selected nodes to each other, so as to transfer data from the node functioning as the transmitting node to the node functioning as the receiving node;
Each having a plurality of control signal interconnect paths connecting the selected nodes to each other, so as to transfer control signals from a transmitting node toward a logic element associated with the receiving node;
The plurality of nodes are:
Nodes A, B and X different from each other;
A logic L B associated with the node B to determine routing for a Node B,
A message interconnect path from node B functioning as a sending node to node X functioning as a receiving node;
A message interconnect path from node A functioning as a sending node to node X functioning as a receiving node;
And a control signal interconnect path from the node A functions as a transmitting node to the logic L B,
The apparatus according to claim 1, wherein the control signal causes the transfer of data from the node A to the node X to be performed preferentially with respect to the transfer of data from the node B to the node X.
マルチプル・アクセス・メモリー及び演算装置であって、
メモリーデバイスを含む複数のロジックデバイス(114)と、
データ及び処理コードを前記ロジックデバイスにルーティングするために前記ロジックデバイスに接続されたインターコネクト構造とを有し、前記インターコネクト構造が、更に、
互いに異なるノードA、B及びXを含む複数のノード(330)と、
前記複数のノードのノードを選択的に互いに接続する複数のインターコネクトパスとを有し、
前記インターコネクトパスが、制御信号を制御信号送信ノードから制御信号利用ノードに関連付けられたロジックに制御信号を転送する制御信号インターコネクトパスと、送信ノードから受信ノードにデータを転送するデータインターコネクトパスとを有し、
ノードBが、データをノードX及びYに転送するためのデータインターコネクトパスを含み、
ノードAが、制御信号をノードBに関連付けられたロジックLに転送するための制御信号インターコネクトパスを有し、
ノードBに到達するメッセージMについて、ノードAが制御信号CをロジックLに転送し、ロジックLが制御信号Cを利用して、メッセージMをノードX及びYのいずれに転送するべきかを決定するように、ロジックLが機能し得ることを特徴とする装置。
A multiple access memory and arithmetic unit,
A plurality of logic devices (114) including a memory device;
An interconnect structure connected to the logic device for routing data and processing code to the logic device, wherein the interconnect structure further comprises:
A plurality of nodes (330) including different nodes A, B and X;
A plurality of interconnect paths for selectively connecting the nodes of the plurality of nodes to each other,
The interconnect path has a control signal interconnect path for transferring a control signal from a control signal transmitting node to a logic associated with a control signal using node, and a data interconnect path for transferring data from a transmitting node to a receiving node. And
Node B includes a data interconnect path for transferring data to nodes X and Y,
Node A has a control signal interconnect path for transferring the control signal to the logic L B associated with a Node B,
For a message M to reach a Node B, Node A forwards the control signal C to the logic L B, the logic L B is using a control signal C, and should forward the message M to one of the nodes X and Y as determining, and wherein the logic L B can function.
ノードBに到達するメッセージM’が、ノードX、Y及びBのいずれとも異なるノードDに転送されるように、ロジックLが機能し得ることを特徴とする請求項33に記載のマルチプル・アクセス・メモリー及び演算装置。Message M 'to reach the node B, node X, to be transferred to any different nodes D Y and B, multiple access according to claim 33 in which the logic L B is equal to or can function -Memory and arithmetic devices. マルチプル・アクセス・メモリー及び演算装置であって、
メモリーデバイスを含む複数のロジックデバイス(114)と、
データ及び処理コードを前記ロジックデバイスにルーティングするために前記ロジックデバイスに接続されたインターコネクト構造とを有し、前記インターコネクト構造が、更に、
ノードA及びB並びにノードセットPを含み、ノードA及びBが、ノードセットP以外の互いに異なるノードからなり、ノードBがノードセットPの全てのノードに向けてデータを転送可能であるような複数のノード(330)と、
前記複数のノードのノードを選択的に互いに接続する複数のインターコネクトパスとを有し、
前記ノードが、受信ノード及び送信ノードを含む対をなすノードとして選択され、前記送信ノードは前記受信ノードにデータを転送するべく適合され、前記複数のインターコネクトパスが、データインターコネクトパス及び制御インターコネクトパスを含み、前記制御インターコネクトパスが、前記複数のノードのノードを、制御信号を制御信号利用ノードに関連付けられたロジックに転送するべき制御信号送信ノードとして互いに選択的に接続し、
前記複数の制御インターコネクトパスが、ノードAからノードBに関連付けられたロジックLに至る制御インターコネクトパスを含み、ロジックLが、ノードAからの制御信号を利用して、ノードBが、ノードセットPのいずれのノードにデータを転送するべきかを決定することを特徴とする装置。
A multiple access memory and arithmetic unit,
A plurality of logic devices (114) including a memory device;
An interconnect structure connected to the logic device for routing data and processing code to the logic device, wherein the interconnect structure further comprises:
A plurality of nodes including nodes A and B and a node set P, wherein the nodes A and B are composed of different nodes other than the node set P, and the node B can transfer data to all the nodes of the node set P. A node (330) of
A plurality of interconnect paths for selectively connecting the nodes of the plurality of nodes to each other,
The node is selected as a paired node that includes a receiving node and a transmitting node, the transmitting node is adapted to transfer data to the receiving node, and the plurality of interconnect paths comprise a data interconnect path and a control interconnect path. Comprising, the control interconnect path selectively connects the nodes of the plurality of nodes to each other as a control signal transmitting node to transfer a control signal to a logic associated with a control signal using node,
The plurality of control interconnect path comprises a control interconnect path leading to the logic L B associated from node A to node B, the logic L B is, by utilizing the control signal from the node A, is a Node B, node set An apparatus for determining which node of P to forward data to.
マルチプル・アクセス・メモリー及び演算装置であって、
メモリーデバイスを含む複数のロジックデバイス(114)と、
データ及び処理コードを前記ロジックデバイスにルーティングするために前記ロジックデバイスに接続されたインターコネクト構造とを有し、前記インターコネクト構造が、更に、
ノードA及びB並びにノードセットPを含み、ノードA及びBが、ノードセットP以外の互いに異なるノードからなり、ノードBがノードセットPの全てのノードに向けてデータを転送可能であるような複数のノード(330)と、
受信ノード及び送信ノードを含む対をなすノードとして選択され、前記送信ノードは前記受信ノードにデータを転送するべく適合された、前記複数のノード中のノードを互いに選択的に接続する複数のインターコネクトパスと、
ノードAに関連付けられ、ノードAからのデータをどこにルーティングするべきかを決定可能なロジックLと、
ノードBに関連付けられ、ノードBからのデータをどこにルーティングするべきかを決定可能なロジックLとを有し、
ロジックLがロジックLとは異なり、ロジックLが、ロジックLにより決定される情報を利用して、ノードBがノードセットP中のどのノードにデータを転送するべきかを決定することを特徴とする装置。
A multiple access memory and arithmetic unit,
A plurality of logic devices (114) including a memory device;
An interconnect structure connected to the logic device for routing data and processing code to the logic device, wherein the interconnect structure further comprises:
A plurality of nodes including nodes A and B and a node set P, wherein the nodes A and B are composed of different nodes other than the node set P, and the node B can transfer data to all the nodes of the node set P. A node (330) of
A plurality of interconnect paths selectively connecting nodes among the plurality of nodes to each other, the plurality of interconnect paths being selected as a paired node including a receiving node and a transmitting node, the transmitting node being adapted to transfer data to the receiving node; When,
Logic L A associated with node A and capable of determining where to route data from node A;
Associated with a Node B, and a where possible decide to route logic L B data from a Node B,
Unlike logic L A logic L B, the logic L B is, by using the information determined by the logic L A, the node B determines whether to forward the data to which node in the node set P An apparatus characterized by the above.
ノードBが、ノードセットPのノード出力にデータを転送可能であることを特徴とする請求項36に記載のマルチプル・アクセス・メモリー及び演算装置。37. The multiple access memory and operation device according to claim 36, wherein the node B can transfer data to a node output of the node set P. マルチプル・アクセス・メモリー及び演算装置であって、
メモリーデバイスを含む複数のロジックデバイス(114)と、
データ及び処理コードを前記ロジックデバイスにルーティングするために前記ロジックデバイスに接続されたインターコネクト構造とを有し、前記インターコネクト構造が、更に、
それぞれ、複数のデータ入力ポート、複数のデータ出力ポート及びノードを通過するデータの流れを制御するロジック要素を含み、互いに異なるノードA、B、X及びYを含む複数のノード(330)と、
前記複数のノードのノードを互いに選択的に接続する複数のインターコネクトパスとを有し、
前記インターコネクトパスが、制御信号を制御信号送信ノードから制御信号利用ノードに関連付けられたロジックに転送する制御信号インターコネクトパスと、データ送信ノードからデータ受信ノードにデータを転送するデータインターコネクトパスとを有し、前記データインターコネクトパスが、前記データ出力ポート及びデータ入力ポートを互いに選択的に接続し、前記制御インターコネクトパスが、制御信号送信ノードから、制御信号に依存するデータの流れを有するノードに関連付けられたロジック要素に制御信号を転送するように、ノードとロジック要素を互いに選択的に接続し、
ノードBが、ノードAからの制御信号を利用して、ノードBを通過するメッセージMのルーティングを決定するロジックLに関連付けられており、ノードAから受信された制御信号Cにより、メッセージMがノードXに転送されるようにし、ノードAから受信された制御信号C’により、メッセージMがノードBからノードYに転送されるようにしたことを特徴とする装置。
A multiple access memory and arithmetic unit,
A plurality of logic devices (114) including a memory device;
An interconnect structure connected to the logic device for routing data and processing code to the logic device, wherein the interconnect structure further comprises:
A plurality of nodes (330), each including a plurality of data input ports, a plurality of data output ports, and a logic element for controlling a flow of data passing through the nodes, and including nodes A, B, X and Y different from each other;
A plurality of interconnect paths for selectively connecting the nodes of the plurality of nodes to each other,
The interconnect path has a control signal interconnect path for transferring a control signal from a control signal transmitting node to a logic associated with a control signal using node, and a data interconnect path for transferring data from a data transmitting node to a data receiving node. Wherein the data interconnect path selectively connects the data output port and the data input port to each other, and wherein the control interconnect path is associated with a node having a data flow dependent on a control signal from a control signal transmitting node. Selectively connect nodes and logic elements to each other to transfer control signals to the logic elements,
Node B, by using the control signal from the node A, are associated with a logic L B that determines the routing of message M passing through the node B, the control signal C received from the node A, the message M is Apparatus characterized in that the message M is transferred from the node B to the node Y by a control signal C ′ received from the node A so as to be transferred to the node X.
ノードAからの制御信号が、制御信号C及び制御信号C’のいずれであるかによって、ノードBを通過するメッセージM’のルーティングが変更されないことを特徴とする請求項38に記載のマルチプル・アクセス・メモリー及び演算装置。39. The multiple access according to claim 38, wherein the routing of the message M 'passing through the node B is not changed depending on whether the control signal from the node A is the control signal C or the control signal C'. -Memory and arithmetic devices. ノードBに送られる制御信号が、ノードAのデータ出力ポートから取り出されることを特徴とする請求項38に記載のマルチプル・アクセス・メモリー及び演算装置。39. The multiple access memory and operation device according to claim 38, wherein the control signal sent to the node B is taken from a data output port of the node A. マルチプル・アクセス・メモリー及び演算装置であって、
メモリーデバイスを含む複数のロジックデバイス(114)と、
データ及び処理コードを前記ロジックデバイスにルーティングするために前記ロジックデバイスに接続されたインターコネクト構造とを有し、前記インターコネクト構造が、更に、
ノードX及びノードXにデータを転送可能な複数のノードを含むノードセットPを有する複数のノード(330)と、
前記複数のノードのノードを互いに選択的に接続する複数のインターコネクトパスとを有し、
前記インターコネクトパスが、送信ノードから受信ノードにデータを転送するデータインターコネクトパスを有し、ノードXにデータを転送することについて最も高い優先順序を有するノードが、ノードXにデータを転送するのをブロックされることのないように、ノードセットP中のノードが、ノードXにデータを転送することについての優先順序関係を与えられていることを特徴とする装置。
A multiple access memory and arithmetic unit,
A plurality of logic devices (114) including a memory device;
An interconnect structure connected to the logic device for routing data and processing code to the logic device, wherein the interconnect structure further comprises:
A plurality of nodes (330) having a node set P including a node X and a plurality of nodes capable of transferring data to the node X;
A plurality of interconnect paths for selectively connecting the nodes of the plurality of nodes to each other,
Wherein the interconnect path has a data interconnect path that transfers data from a sending node to a receiving node, and blocks a node having the highest priority for transferring data to node X from transferring data to node X. Wherein the nodes in the node set P are given a priority order for transferring data to the node X so as not to be performed.
ノードXにデータを転送することについて、ノードセットP中のノードAよりも低い優先順序を有するノードBからノードXに転送されたデータによって、ノードAがノードXにデータを転送するのをブロックされることのないようにしたことを特徴とする請求項41に記載のマルチプル・アクセス・メモリー及び演算装置。With respect to transferring data to node X, data transferred to node X from node B having a lower priority than node A in node set P blocks node A from transferring data to node X. 42. The multiple access memory and operation device according to claim 41, wherein the operation is prevented from occurring. ノードXにデータを転送可能なノードセットP中のノード間の優先順序が、前記インターコネクト構造内に於ける、ノードセットP中の個々のノードの位置に依存することを特徴とする請求項41に記載のマルチプル・アクセス・メモリー及び演算装置。42. The method according to claim 41, wherein the priority order among the nodes in the node set P capable of transferring data to the node X depends on the position of each node in the node set P in the interconnect structure. A multiple access memory and arithmetic unit as described.
JP2002536883A 2000-10-19 2001-10-19 Scalable interconnect structure for parallel computing and parallel memory access Expired - Fee Related JP4128447B2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US69360300A 2000-10-19 2000-10-19
PCT/US2001/050543 WO2002033565A2 (en) 2000-10-19 2001-10-19 Scaleable interconnect structure for parallel computing and parallel memory access

Publications (2)

Publication Number Publication Date
JP2004531783A true JP2004531783A (en) 2004-10-14
JP4128447B2 JP4128447B2 (en) 2008-07-30

Family

ID=24785344

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002536883A Expired - Fee Related JP4128447B2 (en) 2000-10-19 2001-10-19 Scalable interconnect structure for parallel computing and parallel memory access

Country Status (7)

Country Link
EP (1) EP1360595A2 (en)
JP (1) JP4128447B2 (en)
CN (1) CN100341014C (en)
AU (1) AU2002229127A1 (en)
CA (1) CA2426422C (en)
MX (1) MXPA03003528A (en)
WO (1) WO2002033565A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542525A (en) * 2010-12-13 2012-07-04 联想(北京)有限公司 Information processing equipment and information processing method

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8605099B2 (en) * 2008-03-31 2013-12-10 Intel Corporation Partition-free multi-socket memory system architecture
CN101833439B (en) * 2010-04-20 2013-04-10 清华大学 Parallel computing hardware structure based on separation and combination thought
US10168923B2 (en) 2016-04-26 2019-01-01 International Business Machines Corporation Coherency management for volatile and non-volatile memory in a through-silicon via (TSV) module
US10236043B2 (en) * 2016-06-06 2019-03-19 Altera Corporation Emulated multiport memory element circuitry with exclusive-OR based control circuitry
FR3083350B1 (en) * 2018-06-29 2021-01-01 Vsora PROCESSOR MEMORY ACCESS
US10872038B1 (en) * 2019-09-30 2020-12-22 Facebook, Inc. Memory organization for matrix processing
CN117294412B (en) * 2023-11-24 2024-02-13 合肥六角形半导体有限公司 Multi-channel serial-parallel automatic alignment circuit and method based on single bit displacement

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4977582A (en) * 1988-03-31 1990-12-11 At&T Bell Laboratories Synchronization of non-continuous digital bit streams
US5043981A (en) * 1990-05-29 1991-08-27 Advanced Micro Devices, Inc. Method of and system for transferring multiple priority queues into multiple logical FIFOs using a single physical FIFO
US5923654A (en) * 1996-04-25 1999-07-13 Compaq Computer Corp. Network switch that includes a plurality of shared packet buffers
US6289021B1 (en) * 1997-01-24 2001-09-11 Interactic Holdings, Llc Scaleable low-latency switch for usage in an interconnect structure

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102542525A (en) * 2010-12-13 2012-07-04 联想(北京)有限公司 Information processing equipment and information processing method

Also Published As

Publication number Publication date
MXPA03003528A (en) 2005-01-25
EP1360595A2 (en) 2003-11-12
CN1489732A (en) 2004-04-14
JP4128447B2 (en) 2008-07-30
CA2426422A1 (en) 2002-04-25
CA2426422C (en) 2012-04-10
WO2002033565A2 (en) 2002-04-25
AU2002229127A1 (en) 2002-04-29
WO2002033565A3 (en) 2003-08-21
CN100341014C (en) 2007-10-03

Similar Documents

Publication Publication Date Title
KR900006791B1 (en) Packet switched multiport memory nxm switch node and processing method
US4621359A (en) Load balancing for packet switching nodes
JP3599197B2 (en) An interconnect network that connects processors to memory with variable latency
JP3532574B2 (en) Adaptive routing mechanism for torus interconnected networks
US5797035A (en) Networked multiprocessor system with global distributed memory and block transfer engine
Duato et al. Performance evaluation of adaptive routing algorithms for k-ary n-cubes
KR20220004216A (en) Control Flow Barriers and Reconfigurable Data Processors
JP4128447B2 (en) Scalable interconnect structure for parallel computing and parallel memory access
EP0199757B1 (en) Instruction flow computer
US20050036445A1 (en) Processing data packets
Yokota et al. A prototype router for the massively parallel computer RWC-1
Balakrishnan et al. A priority-based flow control mechanism to support real-time traffic in pipelined direct networks
JP3704367B2 (en) Switch circuit
Balakrishnan et al. Providing message delivery guarantees in pipelined flit-buffered multiprocessor networks
US20050038902A1 (en) Storing data packets
Liu et al. Performance Evaluations Of Adaptive Wormhole Routing In 3D Mesh Networks
Prakash et al. VLSI implementation of a wormhole router using virtual channels
Khonsari et al. Performance modelling of a true fully adaptive routing algorithm
Heath et al. Design and performance of a modular hardware process mapper (scheduler) for a real-time token controlled data driven multiprocessor architecture
Frazier Buffering and flow control in communication switches for scalable multicomputers
Smai et al. Evaluation of a priority flow control scheme for multicomputer networks
Gaizauskas et al. Formation of multiple filaments in transparent solids
Rangarajan et al. Hardware Implementation of Pipeline Based Router Design for On-Chip Network
Lee Design of a Parallel Computer Network Interface Controller
Abdalla Performance Analysis of Multicomputer Interconnection Network Designs

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20041007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20061228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20070123

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070423

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070501

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20070523

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20070530

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070625

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

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

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

Free format text: PAYMENT UNTIL: 20110523

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20120523

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120523

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130523

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees