JPH08511886A - 待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク - Google Patents

待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク

Info

Publication number
JPH08511886A
JPH08511886A JP6524304A JP52430494A JPH08511886A JP H08511886 A JPH08511886 A JP H08511886A JP 6524304 A JP6524304 A JP 6524304A JP 52430494 A JP52430494 A JP 52430494A JP H08511886 A JPH08511886 A JP H08511886A
Authority
JP
Japan
Prior art keywords
memory
network
switch
module
message
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
JP6524304A
Other languages
English (en)
Other versions
JP3599197B2 (ja
Inventor
スティーブンソン、ブリッキー・エイ
ロッギー、ピーター・ジー
Original Assignee
クレイ・リサーチ・インコーポレーテッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クレイ・リサーチ・インコーポレーテッド filed Critical クレイ・リサーチ・インコーポレーテッド
Publication of JPH08511886A publication Critical patent/JPH08511886A/ja
Application granted granted Critical
Publication of JP3599197B2 publication Critical patent/JP3599197B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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/17393Indirect interconnection networks non hierarchical topologies having multistage networks, e.g. broadcasting scattering, gathering, hot spot contention, combining/decombining

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 プロセッサをメモリに接続する或る相互接続ネットワークは、小規模および大規模のマルチ処理システムの双方の構築に使用可能である。この相互接続ネットワークは、ネットワーク・モジュールとメモリ・モジュールを備えている。ネットワーク・モジュールおよびメモリ・モジュールは、一連のn×mスイッチで構成され、各n×mスイッチは、n個の入力に対しm個の出力のうちの一つへ経路を設定する。これらのスイッチは、相互接続ネットワークにおけるメッセージの競合が低減されるように設計されている。これらのスイッチ、したがってメモリ・モジュールおよびネットワーク・モジュールは、高いモジュール性を有し、これにより、実質的に任意の規模のマルチ処理システムを同一の構成要素を利用して構築できる。

Description

【発明の詳細な説明】 待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク 〈発明の背景〉 多くのデータ処理のタスクは、データの整然とした配列に対する大規模な算術 操作を必要とする。一般に、この種の操作すなわち「ベクトル」処理は、データ 集合の連続する各要素に対して同一操作を繰り返し実行することが必要となる。 整然とした配列データを扱うときに処理速度およびハードウェア効率を向上させ るために、ベクトル計算機が開発されている。ベクトル計算機は、そのハードウ ェア機構により整然とした配列データを扱うものであり、したがって、スカラ計 算機よりも高い演算速度(speed of operation)が得られる。 スカラ計算機およびベクトル計算機の双方における処理速度(computer proces sing speed)および処理効率は、マルチ処理技術(multiprocessing techniques) を利用して更に向上させることができる。マルチ処理は、主記憶のようなシステ ム資源を共有する数百ないし数千のプロセッサを使用する必要がある。異なるジ ョブの独立したタスクまたは単一ジョブの関連するタスクは、複数のプロセッサ 上で実行される。各プロセッサはそれ自身の命令セット従い、それぞれの命令を 並列に実行する。プロセッサの数を増やしてそれらを並列に動作させることによ り、より多くの作業をより短い時間で行うことができる。 マルチ処理は作業速度(performance speed)を向上させることができるが、そ の向上は使用されるプロセッサの数と線形の関係にはならない。これは、主とし て二つの要因すなわちオーバヘッドとロックアウト(lock out)によるものである 。プロセッサとプロセッサの機能との間で調整をとるのに要する同期と制御のレ ベルが増大するため、マルチプロセッサの環境の下では著しいオーバヘッドが生 じる。全プロセッサ間での通信および全プロセッサの制御は、マルチ処理システ ムに性能低下を生じさせる。数個のプロセッサが協調して一つのタスクを実行し ているときには、データの依存性とプロセッサ間でのデータの転送は不可避であ る。 或るプロセッサが他のプロセッサから転送されるべきデータを待たなければなら ないときに、プロセッサのアイドル時間が生じる。このプロセッサのアイドル時 間はシステム性能を低下させることになる。 マルチプロセッサ・システムの性能低下の他の重大な原因は、プロセッサのロ ックアウトすなわちブロッキング(blocking)であり、複数のプロセッサが共通の 資源を共有することに関連している。これは、一つのプロセッサが、他のプロセ ッサが既に使用している共有資源、例えば共有メモリにアクセスをしようとする ときに生じる。そのプロセッサは、このときその共有資源の使用を阻止され(ブ ロックされ)、他のプロセッサが停止するまで待機しなければならない。この場 合もまた、プロセッサのアイドル時間が発生し、システムの性能が低下する。 プロセッサのメモリに対するインタフェイスは、オーバヘッドとロックアウト の概念と緊密につながっており、それは計算機の全体的な性能にも影響を与える 。マルチプロセッサのインタフェイスの一例を、BBNシステム・アンド・テクノ ロジー社(BBN Systems and Technologies Corporation)によって設計されたモナ ーク(Monarch)並列マルチ処理計算機に見ることができる。モナークはスカラ方 式で単一スレッドのマルチ処理アーキテクチャとなっており、プロセッサとメモ リとの間の通信に回線交換技術を使用している。この回線交換技術によれば、全 てのプロセッサはメモリへ至る同一の経路を共有する。モナークの設計における 或るプロセッサがメモリを要求するとき、そのプロセッサ網からメモリへの経路 全体が開放され、そのメモリとそのプロセッサとの間の通信が完了するまで開放 されたままとなる。この方式は、その回線交換網を経由してメモリを参照しよう としている他のプロセッサをブロックすることができ、メモリ参照の転送速度を 制限し、その結果、プロセッサのアイドル時間が長くなる。したがって、このよ うな設計をマルチプロセッサによるマルチスレッドのベクトル処理において採用 するのは実用的ではなく、このようなベクトル処理ではプロセッサとメモリとの 間で本来的に大量のデータを転送しなければならない。 マルチプロセッサのメモリインタフェイスの他の例を、ホライゾン(HORIZON) ルーティング方式に見ることができる。このホライゾンのインタフェイス・ネッ トワークは、自暴自棄ルーティング(desperation routing)またはホットポテト・ ルーティング(hot potato routing)と呼ばれる方式を使用している。ホライゾン の自暴自棄ルーティングは、複数の入力と同数の出力を有する多段ネットワーク である。この方式は、どのネットワークのサイクルにおいても各入力に対し一つ の出力への経路を設定する必要がある。例えば、4個の入力情報(input referen ces)が存在し、その4個の入力情報が同一の出力に行くことを欲している場合、 その4個の入力情報のうち一つが正しい出力へ行き、他の全ての入力は欲してい ない他のいずれかの出力へ行く。これは、4個の入力のうち3個は格段に長い経 路をとってそのネットワークを通過することを意味する。このホライゾンの自暴 自棄ネットワークは、これらの他の三つの情報(references)は結局は望ましい入 力へ戻って、望ましい出力に到達する別の機会を持つように、ネットワークに経 路が定められる。したがって、それらの情報がネットワークの中で永久に失われ るということはなく、ホライゾンのルーティング方式は、そのネットワーク内に 最も長く存在している情報が最高の優先度を持つような機構を有しており、これ により、それらの情報はいつかは同一の出力に対する競合する情報に打ち勝つこ とになる。このようなルーティング方式によれば、一つの情報が要求する終点へ の可能な経路を複数持ち、多くの情報は、その目的地へ到達する前にネットワー ク内を通行するのに非常に長い期間を費やすことになりかねない、ということが 当業者には容易にわかるであろう。したがって、このホライゾンの自暴自棄ルー ティング方式をマルチ処理の計算機で使用するのは望ましくない。 マルチ処理システムにおける他の重要な概念は、スケーラビリティ(scalabili ty)の概念である。スケーラビリティとは、異なる使用者の要求に合わせるため に種々の異なるサイズとすることができるシステムの能力をいう。例えば、最大 システムは1024個のプロセッサを持つことができるが、512個のプロセッ サを有する構成、256個のプロセッサを有する構成、または他の或る構成とい うように縮小化されたシステムを利用できるようにするのが望ましい。最大シス テムを構成する基本的なビルディングブロック(building blocks)を修正するこ となく使用して最小システムを作り上げることができることが重要であり、逆も また同様である。したがってスケーラブルなシステムは、格段に柔軟性に富み、 このようなシステムの展開によって使用者の変化する要求に合わせることができ る。 以上より、プロセッサをメモリに接続する相互接続ネットワークであって、例 えばプロセッサが競合することなくメモリ参照を発行できるようにした相互接続 ネットワークに対する要求が当業界にあり、それは、ネットワーク内でのメモリ 参照の間での競合を低減し、どの1回の参照についてもネットワーク内で費やす 時間を低減し、その結果、プロセッサのアイドル時間が減少し、システムの性能 が向上する。また、モジュラーな相互接続ネットワークであって、その相互接続 ネットワークを構成する個々のモジュールの再設計を必要とせずに、任意の個数 のプロセッサおよび異なるサイズのメモリを有するマルチ処理システムに適合す るように容易に規模を変更することができる相互接続ネットワークに対する要求 もある。 〈発明の要約〉 上記技術における限界を克服するために、および本明細書を読んで理解すれば 明らかになるであろう他の限界を克服するために、本発明は、プロセッサをメモ リに接続するマルチ処理用の相互接続ネットワークを提供する。この相互接続ネ ットワークは、種々の個数のプロセッサおよび種々のメモリサイズを有するよう に構成されたシステムでの使用に適合したものである。すなわち、この相互接続 ネットワークのモジュール性により、単純な複製で任意の規模のシステムを構築 できるようになる。 この相互接続ネットワークは、ネットワーク・モジュールおよびメモリ・モジュ ールを含む。ネットワーク・モジュールおよびメモリ・モジュールは、一連のn× mスイッチで構成されていて、各n×mスイッチはn個の入力のうちの一つから m個の出力のうちの一つへの経路を設定する。このスイッチは、相互接続ネット ワークにおけるメッセージの競合が低減されるように設計されている。このスイ ッチ、したがってメモリとネットワークのモジュールは高いモジュール性を有し ており、これにより、同一の構成要素を利用して任意の規模のマルチ処理システ ム を実質的に構築できるようになる。 また、メッセージの競合を低減するための機構および相互接続ネットワークを 実現するために必要な相互接続の数が与えられる。最後に、相互接続ネットワー ク内の特定の経路上のデータが正しいか否かを判定するために健全性コード(san ity code)が使用される。この健全性コードは、メモリ・バンクもしくはネットワ ーク経路の故障を検出し、または、システムのグレードを下げるためにも使用さ れる。 〈図面の簡単な説明〉 図面において、同一符号はいくつかの図を通して同一構成要素を示している。 図1は、4個のCPUを有するマルチ処理システムの一例のブロック図を示す 。 図2は、図1に示した4個のCPUを有するマルチ処理システムのより詳細な ブロック図である。 図3は、32個のCPUを有するマルチ処理システムの一例のブロック図を示 す。 図4は、図3に示した32個のCPUのシステムにおける、8個のCPUと4 個のネットワーク・モジュールとの間の接続のより詳細なブロック図を示す。 図5は、図3に示した32個のCPUのシステムにおける、ネットワーク・モ ジュールと8個のメモリ・モジュールとの間の接続のより詳細なブロック図を示 す。 図6は、メモリ・モジュールのブロック図を示す。 図7は、図6に示したメモリ・モジュールにおける出力経路(outgoing path)の より詳細なブロック図を示す。 図8は、図6に示したメモリ・モジュールにおける入力経路(return path)のよ り詳細なブロック図を示す。 図9は、ネットワーク・モジュールのブロック図を示す。 図10は、図9に示したネットワーク・モジュールにおける出力経路のより詳 細なブロック図を示す。 図11は、図9に示したネットワーク・モジュールにおける入力経路のより詳 細なブロック図を示す。 図12は、レディ/レジューム(READY/RESUME)のハンドシェイクのための制御 回路の詳細構成を示す。 図13は、健全性コードの制御回路の詳細構成を示す。 図14〜15は、本発明の相互接続ネットワークを使用することができるマル チ処理システムのいくつかの例についての種々の構成を示す表である。 図16は、1×2スイッチの遅延チェイン(delay chain)の詳細を示す。 〈好ましい実施形態の詳細な説明〉 以下の詳細な説明では、本文の一部を構成すると共に、例として本発明の特定 の実施形態を示した添付図面を参照することにする。しかし、他の実施形態を利 用してもよく、本発明の範囲を逸脱しない限り構造的または論理的な変更を施す こともできる。したがって、以下の詳細な説明は限定された意味で解されるべき ではなく、本発明の範囲は添付した請求の範囲によって定めるべきである。 図1を参照しつつ、マルチ処理システムの一例の簡略ブロック図を説明する。 図1は、4個のメモリ・モジュール600a-dから成る共通メモリに接続された 4個のCPU100を示す。図2は、図1のシステムのより詳細なブロック図を 示す。4個のCPU100a-dのそれぞれは、ポート0とポート1の二つのポ ートを持っている。ポート0とポート1のそれぞれは、4個のメモリ・モジュー ル600a-dのうちの一つに経路が設定され、CPU1個当たり全部で8出力 に対し、メモリ・モジュール1個当たり8入力に経路が設定される。 マルチ処理システムの他の例を図3に示す。図3は、32個のCPUを有する 最大規模のシステムである。8個のCPUから成る4個のCPU群100a-h 、100i-p、100q-x、100y-ffが、4個のネットワーク・モジュー ルから成る4個のネットワーク・モジュール群300a-d、300e-h、30 0i-l、300m-pを介して、8個のメモリ・モジュールから成る4個のメモ リ・モジュール群600a-h、600i-p、600q-x、600y-ffに接 続されている。プロセッサをメモリに接続するこの相互接続ネットワークを使用 して構築することができる4個、8個、および32個のCPUのシステム例を以 下に おいて更に詳細に説明する。 図1〜3は、ネットワーク・モジュール300およびメモリ・モジュール600 のアーキテクチャのモジュール性により、如何にして、単純な複製で任意の規模 のシステムの構築が可能となるのかを示している。1〜4個のCPUを有するシ ステムにおいては、それらのCPUは図1および2に示すようにメモリ・モジュ ール600に直結される。4個よりも多くのCPUを有するシステムにおいては 、それらのCPUは、まずネットワーク・モジュール300に接続され、そのネ ットワーク・モジュールがメモリ・モジュール600に接続される。最小のマルチ 処理システムを構成するものと同一のネットワーク・モジュールおよびメモリ・モ ジュールを、修正することなく、最大のシステムを構築するために使用すること ができる。モジュール性と拡張性は本相互接続ネットワークの設計に本来的に備 わっているものであるため、それらはシステム実現のために選択される技術に依 存せず、極めて柔軟性に富み、その結果、容易に規模を変更できるマルチ処理シ ステムが得られる、ということが当業者には容易にわかるであろう。 4個、8個、および32個のCPUを有するマルチ処理システムの例を説明す る前に、メモリの相互接続ネットワークを構成するメモリ・モジュール600お よびネットワーク・モジュール300について詳細に説明する。一般に、メモリ・ モジュール600およびネットワーク・モジュール300は、異なった数種類の n×mスイッチの集合から構成される。これらのn×mスイッチは、種々の形態 に接続されてメモリおよびネットワークのモジュールを形成し、それらは、プロ セッサと共通メモリとの間にメッセージの経路を設定する。相互接続ネットワー クを構築するために同一のn×mスイッチ群が繰り返し使用されるように、その スイッチが作製される。したがって、その結果得られる構造はモジュール性が高 く、小規模のマルチ処理システムを構築するために使用されるものと同一の構成 要素が大規模なシステムにおける接続にも使用できるようになっている。 〈メモリ・モジュール〉 次にメモリ・モジュール600について詳細に説明する。図6は、メモリ・モジ ュール600のブロック図を示す。出力経路(outgoing path)604および入力 経 路(return path)606の双方が示されている。各メモリ・モジュール600は、 8個の入力0〜7と16個のメモリ・バンク640a〜640pとを備えている 。実現の容易化のため、このメモリ・モジュールは、論理的に二つの独立部分に 分離されている。入力0〜3はメモリ・バンク640a〜640h(上半部)へ 経路が設定されており、一方、入力3〜7はメモリ・バンク640i〜640p (下半部)へ経路が設定されている。これら二つの部分は、完全に分離されてい て、互いに影響されることはない。物理的に、これら二つの部分は、一つのプリ ント回路基板の上部側と底部側に配置されるのが好ましい。しかし、本相互接続 ネットワークは、この物理的な実現方法に限定されないと理解すべきである。す なわち、多くの他の物理的な所定の実現が当業者によって容易に考えられるであ ろう。 入力0〜7のそれぞれは、まず1×1スイッチ610によってバッファリング される。4個のスイッチ610から成る2個のスイッチ群は、2個の4×4スイ ッチ620のうちの一つの入力へ接続される。2×2スイッチ420は、4個の 入力のそれぞれから4個の1×2スイッチ630の一つへ経路を設定する。1× 2スイッチ630のそれぞれは、一つの入力から2個のメモリ・バンク640の 一つへ経路を設定する。 各メモリ・モジュール600の入力経路606において、2個のメモリ・バンク は2×1スイッチ650へ経路が設定されている。4個の2×1スイッチ650 は、4×4スイッチ660の入力へ接続され、その後、それらは4個の1×1ス イッチ670の一つへ経路が設定され、全部で8個の出力0〜7へ経路が設定さ れている。 図7は、メモリ・モジュール600の出力経路側604のより詳細なブロック 図を示す。上半部および下半部の双方が示されている。メモリ・モジュール60 0の入力0〜7のそれぞれは、CPU100からそのメモリ・モジュールへのメ モリ参照をバッファリングする1×1スイッチを有している。各1×1スイッチ 610におけるバッファの数は、クロスバー・スイッチ間での通信の往復時間に よって変わる。各クロックの周期がその通信時間に付加されるため、各1×1ス イッチ610に対して更にバッファを追加する必要がある。1×1スイッチ61 0の目的は、メッセージ・パケットを多重に送ることができるように、クロスバ ー・スイッチ間の通信時間をカバーすることにある。したがって、図6に示した 本メモリ・モジュールには、6個のバッファA〜Fが設けられていて、n×mス イッチがクロックの1周期の期間で通信を行う。 1×1スイッチ610におけるバッファA〜F、および本相互接続ネットワー クを構築するために使用される全てのn×mスイッチにおけるバッファは、先入 れ先出し(FIFO)のキュー構造体(queue structure)を有している。入力0 〜7のうちの一つを経由してメモリ・モジュール600に入るメッセージは、そ の経路用の対応するバッファAに他のメッセージが既に存在するということがな ければ、そのバッファAに保持される。バッファAが占有されている場合には、 そのメッセージは、バッファBが使用可能であれば、バッファAの代えてバッフ ァBに保持される。バッファAがいったん空になると、バッファBに存在するメ ッセージはバッファAへ移される。別のメッセージがアクセスしようとしたとき バッファAおよびバッファBの双方が満杯であれば、そのメッセージはバッファ Cに入る。このようにして入力バッファは、先入れ先出しキューとして動作する 。別のメッセージがその入力バッファ610に入ろうとしたときバッファA〜F が全て満杯であれば、そのメッセージは、メモリ・モジュールに入る前に、FI FOバッファの一つが解放されるまで単に待機するだけである。入力保持バッフ ァ(input holding buffer)621が他のメッセージを受け取る用意ができている ときは、1×1スイッチ610のバッファA内のメッセージは、4×4スイッチ の入力保持バッファ621の中に保持される。 いったんメッセージが入力保持バッファ621に保持されると、バッファAは 2個のメッセージ・ステアリング・ビット(message steering bit)を解読してその メッセージの経路を4個の出力要求バッファ(output request buffers)のいずれ に設定すべきかを決定する。2個のメッセージ・ステアリング・ビットを解読した 後、バッファAは、最初のパケット内の2個のメッセージ・ステアリング・ビット を、8個の入力0〜7のうちいずれの入力からそのメッセージがメモリ・モジュ ール600に入ったかを表す2個のビットに置き換える。このようにして、メッ セージがメモリ・バンク640へ行く途中においてメモリ・モジュールの層を順次 通過して行く間に、発信元のCPUへ戻すリターン・アドレス(return address) がそのメッセージ・ステアリング・ビットに組み込まれる。データが適切なメモリ・ バンクから取り出された後、その取り出されたデータを発信元のプロセッサま で案内するために、プロセッサ・リターン・アドレス情報をそのメッセージ・ステ アリング・ビットから得ることができるようになる。同様に、一旦そのメッセー ジがプロセッサに戻ると、その参照がどのメモリ・バンクから来たのかを示すリ ターン・アドレスをそのメッセージ・ステアリング・ビットから得ることができる ようになる。この方法では、データ中に誤りがあれば、そのプロセッサは誤りの あるメッセージがどのメモリ・バンクから来たのかを知り、これにより、その誤 りがどこで生じたのかを正確に指摘するための助けとなる。 このビット置換方式は、プロセッサ・リターン・アドレスをメッセージとともに 送る必要がなくなるため、システムにおける相互接続およびメッセージ長を低減 する。その代わりに、本発明の好ましい実施形態におけるビット置換方式は、出 力経路上でメッセージを導き、自動的にプロセッサまたはメモリ・バンクのリタ ーン・アドレスを生成するために、同じビットを使用して相互接続を行うだけで ある。 入力保持バッファ621のバッファA内で解読されたメッセージ・ステアリン グ・ビットは、メッセージが入力保持バッファAを出た後に4個の出力要求バッ ファ622a-dのうちのいずれに行くのかを決定する。出力要求バッファ62 2の目的は、相互接続ネットワーク内におけるメッセージ競合およびブロッキン グを低減することにある。例えば、群バッファ(group buffer)623aが満杯で あれば、出力要求バッファ内で待機しているメッセージはブロックされ(封鎖さ れ)、その経路が空くのを待っているメッセージが存在することになる。しかし 、例えば、異なる群バッファ623b、cまたはdに向かう別のメッセージが、 入力0からメモリ・モジュール600に入ると、そのメッセージは群バッファ6 23aに対して待機しているメッセージによってブロックされることなく、適切 な出力要求バッファ622の中へ入ることができる。このように、他のいずれか の 群バッファ623に向かう更なるメッセージが入力0に入った場合、そのメッセ ージは、適切な出力要求バッファ622に入って行くだけであるため、群バッフ ァ623へのアクセスをブロックされることがない。このようにして、より多く のメッセージはクロスバー・ネットワークにおけるブロックを「避けて通る」こ とができる。相互接続ネットワークを通過する特定の経路が1×1スイッチ61 0を通る全ての通路でブロックされている場合にのみ、その経路に入ったメッセ ージは全ての出力経路からブロックされる。もし、4×4スイッチ620内に出 力要求バッファ610が存在しなければ、4個の出力は全てブロックされるであ ろう。出力要求バッファ622を使用することにより、4個の出力の経路のうち 一つのみがブロックされる。出力要求バッファは、各n×mスイッチおよびネッ トワークにおける、メッセージ競合およびブロッキングの可能性とメモリ・モジ ュール自体とを大いに低減する、ということが当業者には容易に理解できるであ ろう。 メッセージが出力要求バッファ622に入った後は、そのメッセージは適切な 群バッファ623a-dに導かれる状態になる。各群バッファ623は、各入力 の経路に対応する出力要求バッファ622からメッセージを探す。例えば、群バ ッファ623aは、入力0、1、2、および3から4×4スイッチ620にそれ ぞれ入った適格なメッセージを、その対応する出力要求バッファ622a、62 2e、622iおよび622mから探す。適切な出力要求バッファ622内に適 格なメッセージが一つだけ存在する場合は、群バッファ623はそのメッセージ を対応する1×2スイッチ630へ送るだけである。好ましい実施形態では、適 切な出力要求バッファ622内に適格なメッセージが複数存在すれば、群バッフ ァ623は、最後に選ばれた出力要求バッファからラウンドロビンの順序での次 のメッセージが送られる。例えば、群バッファ623aが転送のために出力要求 バッファ622bを選択した場合において、もし、出力要求バッファ622cが 適格なメッセージを有していて、適格なメッセージが複数存在すれば、その群バ ッファは、転送のために出力要求バッファ622cを次に選択するであろう。 一旦或るメッセージが4×4スイッチ620の群バッファ623を通過すると 、 そのメッセージは、対応する1×2スイッチ630へ進む。好ましい実施形態で は、1×2スイッチ630に入るメッセージは、2個のメモリ・バンク640の うちの一つに経路が設定される。 或るメッセージが1×1スイッチ639のバッファAに入った後は、バッファ Aはメッセージ・ステアリング・ビットを解読して、そのメッセージを2個のバン ク入力バッファ(bank input buffer)632aまたは632のうちの一つに導く 。各バンク入力バッファ632は、異なるメモリ・バンク640に対応づけられ ている。例えば、1×2スイッチ630aに入るメッセージは、メモリ・バンク 04へ経路を設定されるべきものであって、バンク入力バッファ632bへ導か れる。この段階において、メッセージは、バンク制御論理チップにより選択され て適切なメモリチップにアクセスできる状態になる。 メモリ・モジュール600から要求元のCPUへ戻るために、参照は、上述の ようにプロセッサからメモリへの出力経路側参照がメモリ・モジュールの出力経 路側604を通って進むのと同様にして、そのメモリ・バンクを出て、メモリ・モ ジュール600の適切な入力経路側606を通って発信元のプロセッサに戻る。 メモリ・モジュール600の入力経路側606の詳細を図8に示す。この場合も また、上半部と下半部の双方が示されている。入力経路参照(return reference) は、メモリ・バンク616を出た後、2×1スイッチ650に入る。各2×1ス イッチ650は8個のバッファFIFO652を備えている。このスイッチにお けるFIFOは、パイプライン方式のメモリ部の可能性に対応できるように8段 の深さがなければならない(これについては下記において詳細に論じられる)。 各2×1スイッチ650は、2個の対応するメモリ・バンクからメッセージを受 け取り、そのメッセージを8個のバッファFIFOによってバッファリングし、 そのメッセージの経路を4×4スイッチ660の入力へと設定する。4×4スイ ッチ660は、図5を参照しつつ上記において説明された4×4スイッチ620 と同じように動作する。リターン・メッセージ(return message)は、4×4スイ ッチ660から適切な1×1出力バッファ670へと経路が設定される。1×1 スイッチ670は、図5を参照しつつ上記において説明された1×1スイッチ6 1 0と同じように動作する。このリターン・メッセージは、対応する出力0〜7か らメモリ・モジュール600を出て行く。 〈ネットワーク・モジュール〉 図9は、ネットワーク・モジュール300のブロック図を示す。各ネットワー ク・モジュールは、16個の入力0〜15と16個の出力0〜15とを有してい る。実現の容易化のため、各ネットワーク・モジュールは二つの部分に論理的に 分離されている。入力0〜7はメモリ・モジュール600a-h(上半部)へと経 路が設定され、入力8〜15はメモリ・モジュール600i-p(下半部)へと経 路が設定されている。メモリ・モジュールに関し上記で説明したように、これら 二つの部分は完全に分離されていて、互いに影響されることはない。物理的に、 これら二つの部分は、プリント回路基板の上部側と底部側に実装されるのが好ま しい。しかし、本相互接続ネットワークは、ここに述べられた物理的な実現方法 に限定されるものではなく、多くの他の物理的な所定の実現が当業者にとっては 明白であろう。 或る特定のネットワーク・モジュール(図3参照)に接続された8個のプロセ ッサのそれぞれは、メモリに対して二つのポートを持っていて、それらは、16 個の1×1スイッチ310a-pを介してネットワーク・モジュール300の入力 へ接続されている。例えば、CPU0に対する二つのポートは、1×1スイッチ 310aおよび1×1スイッチ310iを介して接続されている。そして各1× 1スイッチ310は4個の4×4スイッチ320a-dのうちの一つに接続され ている。そして各4×4スイッチは、その4個の入力のそれぞれから4個の出力 の一つへと経路を設定し、出力側は、8個の2×2スイッチ330a-hで構成 されている。そして8個の2×2スイッチ330a-hのそれぞれは、16個の メモリ・モジュール600a-pの一つへの入力を有している。 メモリ・モジュール300の入力経路304は、出力経路302上におけるも のと同様のこれらのスイッチから構成されている。16個の1×1スイッチ35 0a〜350pは、16個のメモリ・モジュール600a-pの一つに接続されて いる。1×1スイッチ350は、1×1スイッチ310aと同じように動作し、 それらと同様の構造となっており、上記において図6〜8を参照しつつ1×1ス イッチ610および670について論じられたのと同様である。4×4スイッチ 360a-dは、それぞれ、4個の1×1スイッチ350から成るスイッチ群か らの入力を受け取り、その4個の入力のそれぞれに対し、4個の2×2スイッチ 370の一つへ経路を設定する。4×4スイッチ360は、ネットワーク・モジ ュール300の入力側302における4×4スイッチ320と同じように動作す る。同様に、2×2スイッチ370は、ネットワーク・モジュール300の入力 側302における2×2スイッチ330と同じように動作する。一つの2×2ス イッチからの各出力は、8個のプロセッサ100a-hのうちの2個のプロセッ サに接続された出力のうちの一つである。このようにして、図9に示すように、 CPU100aのポート0は2×2スイッチ370aに接続され、CPU100 aのポート1は2×2スイッチ370eに接続される。 図10は、ネットワーク・モジュール300の出力経路302のより詳細なブ ロック図を示す。図10は出力経路の上半部のみを示している。すなわち、入力 310a〜310hは示されているが310i〜310pは示されていない。し かし、図10に示されていないネットワーク・モジュールの下半部は、図10お よび11を参照しつつ説明される上半部と同じように動作する。図10は、1× 1スイッチ310、4×4スイッチ320、および2×2スイッチ330のそれ ぞれの内部構造を示している。図10に示された詳細より、1×1スイッチ31 0は、図6〜8を参照しつつ上記において説明された1×1スイッチ610aお よび1×1スイッチ670と同じように動作し、それらと同様の構造となってい る。また、4×4スイッチ320は、図6〜8を参照しつつ説明された4×4ス イッチ660および620と同じように動作し、それらと同様の構造となってい る。 2個の4×4スイッチ320aおよび320bからの4個の出力のそれぞれは 、4個の2×2スイッチ330a-dのうちの一つへ経路が設定されている。2 ×2スイッチ330のそれぞれは、4個のバッファを有する2個のFIFO33 1aおよび331bを有しており、これらのFIFOのそれぞれは、メッセージ の 経路を2個のモジュール・バッファ332aおよび332bへ設定している。F IFO331におけるバッファAは、メッセージ・ステアリング・ビットを解読し て、そのメッセージに対し適切なモジュール・バッファ332へ経路を設定する 。各モジュール・バッファは、メモリ・モジュールの一つに対する入力となってい る。 図11は、ネットワーク・モジュールを通過する入力経路304を示す。図1 0と同様に、図11は、ネットワーク・モジュール300における入力経路の上 半部のみを示している。図11に示された詳細より、1×1スイッチ350は、 図10に示された1×1スイッチ310、図7に示された1×1スイッチ610 、および図8に示された1×1スイッチ670と同じように動作し、それらと同 様の構造となっている。同様に、4×4スイッチ360は、図10に示された4 ×4スイッチ320、図8に示された4×4スイッチ660、および図7に示さ れた4×4スイッチ620と同じように動作し、それらと同様の構造となってい る。最後に、2×2スイッチ370は、図10を参照しつつ上記において説明さ れた2×2スイッチ330と同じように動作し、それと同様の構造となっている 。 〈マルチ処理システムの一例についての詳細な説明〉 上記の説明より当業者にとっては、メモリ・モジュール600およびネットワ ーク・モジュール300の設計におけるモジュール性は明白であろう。最小のマ ルチ処理システムを構成するものと同一のn×mスイッチを、修正することなく 、最大のシステムを構築するために使用することができる。したがって、モジュ ール性と拡張性は本ネットワーク・モジュールおよびメモリ・モジュールの設計に 本来的に備わっているものであるため、それらはシステム実現のために選択され る技術に依存せず、また、極めて柔軟性に富み、容易に規模を変更できるマルチ 処理システムを得ることができる、ということが当業者には容易に理解できるで あろう。 本発明の相互接続ネットワークを用いて構築することができるマルチ処理シス テムの三つの例を詳細に説明する。 再び図1を参照しつつ、4個のCPUを有するマルチ処理システムを説明する 。図2は、各CPU100からの8個の出力のそれぞれに対し共通メモリ602 へ の経路を設定する方法の詳細を示している。図2に示された接続により、各CP Uは共通メモリ602内の全てのメモリ・バンクにアクセスできるようなる。図 2は、例えば、CPU100aのポート0および1がメモリ・モジュール600 aの入力0および4にそれぞれ接続されていることを示している。図6は、入力 0がメモリ・バンク640a-hへのアクセス経路を有し、入力4がメモリ・バン ク640i-pへのアクセス経路を有することを示している。このように、各メ モリ・バンクは、各CPU100のポート0またはポート1のいずれかに対応づ けられる。CPU100aのポート0および1は、同様にしてメモリ・モジュー ル600b-dにも接続されている。CPU100b-dも同様にして各メモリ・ モジュール600に接続され、これにより、各CPUが共通メモリ602内のメ モリ・バンク640の全てにアクセス経路を有するようになっている。 次に図3を参照しつつ、CPUが32個のマルチ処理システムを説明する。3 2個のCPU100a-ffとネットワーク・モジュール300a-pとの間の接 続の細部を図4により詳細に示す。図4は、8個のCPUと、ネットワーク・モ ジュール300a、300e、300iおよび300mの間の、それらのCPU に関連する相互接続とを示している。CPU100a-ffは、各CPUがメモ リ・モジュール600の各メモリ・バンクへのアクセス経路を有するように、ネッ トワーク・モジュール300に接続されている。このようにして、CPU100 aのポート0は、ネットワーク・モジュール300aの入力0、ネットワーク・モ ジュール300eの入力0、ネットワーク・モジュール300iの入力0、およ びネットワーク・モジュール300mの入力0に接続される。図9に示すように 、ネットワーク・モジュール300において、CPU100aのポート0は入力 0経由でメモリ・モジュール600a-hへアクセスする経路を有し、CPU10 0aのポート1は入力8経由でメモリ・モジュール600i-pへアクセスする経 路を有している。図3に示された32個のCPUのシステムにおける残りのプロ セッサも同様にして接続され、各CPUが共通メモリ602内の全てのメモリ・ バンクへの経路を有するようになっている。 図5は、図3に示された32個のCPUのシステムの一例における、ネットワ ーク・モジュール300a-dとメモリ・モジュール600a-hとの間の接続をよ り詳細に示している。各メモリ・モジュール600a-hは、4個のネットワーク・ モジュール300a-dのそれぞれにおける2個の出力に接続されている。この ネットワーク・モジュールとメモリ・モジュールは、32個のプロセッサのいずれ からの参照も共通メモリ602内のいずれのメモリ・バンクにも到達できるよう に接続されている。 例えば、CPU100dからの参照に対しメモリ・モジュール600hのメモ リ・バンク640eへ経路を設定するために(図3参照)、CPU100dのポ ート0はネットワーク・モジュール300aの入力3へ経路が設定される(図4 参照)。ネットワーク・モジュール300aからは、メッセージがネットワーク・ モジュール300aの出力7より出される(図5に示されている)。この出力は メモリ・モジュール600hの入力0に接続されている。次に図6を参照すると 、各メモリ・モジュール600の入力0は、それぞれのバンク640eへの経路 として、4×4スイッチ620aおよび1×2スイッチ630c経てバンク64 0eへ到達するという経路が設定されている。再び図3を見ると、CPU100 qからの参照に対し、ネットワーク・モジュール300gを経由して、または、 いずかのCPUとメモリ・バンクとの間で上述の経路と同様の相互接続ネットワ ーク内の経路に沿って、メモリ・モジュール600iへの経路を設定することが できる。 4個よりも多いが32個よりも少ないプロセッサを有するシステムは、図3の 32個のCPUのシステムを変形したものを用いて構築することができる。例え ば、8個のCPUのシステムを、ネットワーク・モジュール300aを介してメ モリ・モジュール600a-hに接続されたCPU100a-hで構築することが できる。図4および5に示すように、8個のCPUのシステム内の各CPUの各 ポートに対し8個のメモリ・モジュール600a-hへの経路を提供するためには 、各CPU100a-hの出力0および1のみが必要である。したがって、各C PUの出力2〜7は無効なものとなる。 8個のCPUのマルチ処理システム内のネットワーク・モジュール300aは 、 図5に示すように8個のメモリ・モジュール600a-hのそれぞれに接続されて いる。ただ一つのネットワーク・モジュールのみが必要であるため、各メモリ・モ ジュールの入力0および1のみが使用される。残りの入力は接続されず、したが って残りの経路におけるどのデータも無効である。 8個のCPUと8個のメモリ・モジュールを有するマルチ処理システムのよう なシステムでは、CPUの全ての出力が使用されているわけではなく、そのよう なシステムに対しては、相互接続ネットワークにおける各経路上のデータが有効 か否かを示す機構が設けられている。使用されていないそれらの出力に対しては 、ノイズまたは他の無効な情報が所定のプロセッサからメモリ経路へ送られる。 もし、メモリ・バンクがこれらの無効な信号を或るメモリ位置に対して読み出す べき又は書き込むべき命令またはデータと解釈すれば、エラーが発生する可能性 がある。 有効なデータが各信号線に存在することを保証するために、プロセッサの有効 な出力のそれぞれは、シリアルなビット・ストリームを相互接続ネットワークの 最初のスイッチに送り込む。このシリアルなビット・ストリームは、その出力か らのデータが有効か否かを示すために、その中に「健全性コード(sanity code) 」が埋め込まれている。この健全性コードは、プロセッサの有効な出力のそれぞ れに相互に接続された最初のネットワーク・スイッチへシリアルにかつ連続的に 送り出される6ビットのパターンである。したがって、図2に示した各CPUに 対しては、CPUの有効な出力のそれぞれが、それぞれのメモリ・モジュール6 00の最初のスイッチへ健全性コードを送る。図3に示した各CPUに対しては 、CPUの有効な出力のそれぞれが、それぞれのネットワーク・モジュール30 0の最初のスイッチへ健全性コードを送る。この健全性コードの目的は、相互接 続ネットワーク内のモジュール間のインタフェイスを保護することである。正し い健全性コードが受け取られると、その入力がアクセス経路を有している8個の 出力の全てに、その受け取ったものが同報送信される。このようにして、例えば 、図7では、問題となっているCPUの出力がメモリ・モジュール600の入力 2に接続されていれば、1×1スイッチ610cが健全性コードが正しいか否か を 調べ、正しい健全性コードを受け取っていれば、それを、入力2がアクセス経路 を有している8個のメモリ・バンク640a-hへ同報送信する。 健全性コードを監視するための制御回路を図13に示す。各モジュールの最初 のスイッチにおける健全性検査回路700は、受け取った健全性コードを監視し て、モジュールのその入力に入って来たデータが有効か否かを判定する。メモリ・ モジュール600に対しては、各入力0〜7に対応する各1×1スイッチ61 0a-h内に健全性検査回路700が存在する。ネットワーク・モジュール300 に対しては、各入力0〜15に対応する各1×1スイッチ310a-p内に健全 性検査回路700が存在する。 健全性検査回路700は、対応するスイッチのFIFOをイネーブルにするも のとして動作する。健全性コードが正しく受信されなければ、そのスイッチ内の FIFOは使用可能とはされず、そのスイッチに入る如何なる情報もFIFOバ ッファの中へは格納されない。 無効なCPUによって又はネットワーク・モジュールもしくはメモリ・モジュー ルの未接続の入力によって生じるノイズが健全性コードと同じになるということ が極めてまれであるように、健全性コードを選択しなければならない。したがっ て、6ビットの健全性コードの適切な一例は、 010011 である。 上述のように、この6ビットの健全性コードは、CPUの有効な出力によって のみ、シリアルにかつ連続的に送り出される。その6ビットのコードがシリアル に16回連続して受け取られたと健全性検査回路が判定すると、一つのメモリ・ バンクが動作可能とされて、相互接続ネットワークの所定の経路上のデータに注 意を払うようになるだけである。如何なるときであっても正しい健全性コードが 受け取られない場合は、そのメモリ・バンクは、正しい6ビットのコードが再び シリアルに16回連続して受け取られるまで、その経路上のデータを無視する。 結果として得られる96ビットのコード(6ビットのコードが16回繰り返さ れたもの)は、非常に明瞭な周波数とその中に組み込まれた信号パターン(signa lling patterns)を有する信号である。これらの周波数および信号パターンがノ イズと同じとなるのは極めてまれである。 本相互接続ネットワークのモジュール性により、小規模システムを構築するた めに使用されるのと同一のモジュールを、修正を加えずに、最大規模のシステム を構築するために使用することができる。図13および14は、本発明の相互接 続ネットワークを使用して構築することができるマルチ処理システムのいくつか の例を記載した表を示している。図13は、1〜4個のCPUを有するマルチ処 理システムについてのモジュール数、セクション構成(section configurations) 、およびアドレス・ビットの割り付け(address bit layout)を記載した表を示し ている。図14は、8〜32個のCPUを有するマルチ処理システムの例に対す る表を示している。図13および14に示したシステムおよびこの中で説明され たシステムの例は、決して、本相互接続システムを使用して構築できる唯一のマ ルチ処理システムではない。それどころか、無限の種類の構成が本発明の範囲を 逸脱することなく構築可能であろう。 〈パケット化メッセージ〉 好ましい実施形態では、書込情報(write references)は、2個の連続したパケ ットでメモリ・モジュール600へCPUによって送られる。読出情報(read ref erences)は、単一のパケットで転送される。書込情報に対しては、1番目のパケ ットが必要なアドレスおよび制御情報の全てと書込データの半分とを収容してい る。2番目のパケットは、書込データの後半部を収容している。共通メモリへの 書込については時間は本質的なものではないため、この方法は、ネットワーク・ モジュールおよびメモリ・モジュールの出力経路において必要とされる相互接続 を最小化する。 好ましい実施形態では、2番目のパケットは1番目のパケットに追随して、直 後のクロックの周期でスイッチに入ってそれを通過し、1番目のパケットと同一 の相互接続経路に沿って進む。このため、各データ移動にはクロックの2周期の 期間を要する。このように、2番目のパケットは、1番目のパケットに対してち ょうどクロックの1周期分だけ遅れて、メモリ・モジュールおよびネットワーク・ モ ジュールの各n×mスイッチ内に存在する。 書込情報をパケット化して、それらにネットワーク・モジュールおよびメモリ・ モジュールを順次巡回させることにより、各n×mスイッチの実現に要する相互 接続の数が1/2に低減される、ということが当業者には容易にわかるであろう 。現在の設計では、チップ内のゲートを利用し得る相互接続よりも、比率として は多くのゲートがチップに含まれている。したがって、相互接続は、多くのチッ プ設計において乏しい資源である。例えば、4個の独立した入力の経路および4 個の独立した出力の経路を有する4×4スイッチと、120ビット幅のメモリ参 照とを想定されたい。そのようなクロスバー・スイッチを作製するのに必要な相 互接続の数は、この場合、120の8倍の数となる。これは極めて大きな数であ って、単一チップに適合する数よりもはるかに大きく、実際、数個のチップに適 合する数よりもはるかに大きい、ということが当業者には容易にわかるであろう 。 メモリ参照をパケット化することにより、120ビット幅のメモリ参照が1/ 2に減少する。これにより、システムの全ての相互接続も1/2に減少する。こ れは極めて大きな意味を持ち得る低減である。本発明において使用されるこのパ ケット化方法は、各スイッチを単一チップ内に実現できるという点で、システム 設計を大幅に簡潔にするものである、ということが当業者には容易にわかるであ ろう。 しかし、読出情報は書込情報のようにはパケット化されない。出力経路上にお いて、読出情報は制御情報と所望の読出アドレスのみを有している。読み出しの 待ち時間をできるだけ短くすることが重要であるため、メモリ・モジュールおよ びネットワーク・モジュールの入力経路606および304は、それぞれ、その 幅が完全に1ワード分となっている。このため、各読出情報は、書込情報の出力 経路のように2クロックを必要とするのではなく、各クロック毎に転送される。 また、相互接続を更に節約するために、目的地コード(すなわち、プロセッサ・ リターン・アドレス)を出力経路の読出情報の書込データのフィールドの中に入 れて送る。この方法は、相互接続ネットワークの出力経路上で必要となる相互接 続の数を更に節約する、ということが当業者には容易にわかるであろう。 〈ハンドシェイク・プロトコル〉 レディ/レジューム(READY/RESUME)のハンドシェイク・プロトコルにより、連 続するn×mスイッチ層の間での円滑な通信が達成される。図12は、4×4ス イッチ620に接続された1×1スイッチ610の制御回路の更なる詳細を示す 。本ハンドシェイク・プロトコルは、図12に示した1×1スイッチおよび4× 4スイッチを特に参照して説明されるが、スイッチ610および620は単に例 に過ぎず、これらは、図6〜11を参照しつつ上記において説明されたスイッチ のいずれかの代表として考えている。 本相互接続ネットワークにおける各n×mスイッチは、そのスイッチの各出力 に対応づけられたカウンタを備えている。したがって、例えば、図12に示した スイッチ610は、その単一の出力の経路に対応づけられた1個のカウンタ61 2を備えている。4×4スイッチ620は4個のカウンタ624a-dを備えて いて、それらのカウンタのそれぞれは、4個の群バッファ623a-dのうちの 一つに対応している。目的スイッチ内のFIFOバッファの数に等しい値を最大 のカウント値としている。したがって、例えば、カウンタ612は、4×4スイ ッチ620のFIFO621a内のバッファA〜Dの数である4までカウントす る。 これらのカウンタは、2個のスイッチの間で伝送されるレディおよびレジュー ムのハンドシェイク信号により、値が増加または減少する。レディ信号はカウン タの値を増加させる。レジューム信号はカウンタの値を減少させる。したがって 、1×1スイッチ610は、1×1スイッチ610のカウンタ612の値が4よ りも小さい間は更にメッセージを4×4スイッチ620に送信できることを知る 。カウンタ612の値が4であれば、1×1スイッチは、4×4スイッチ620 内のFIFOバッファ621aが満杯であり、1×1スイッチ610から更なる メッセージの受理はできないことを知る。 カウンタの値は0から始まる。一つのメッセージが1×1スイッチ610内の FIFOのバッファAから送り出される毎に、レディ信号もそのメッセージの内 容とともに4×4スイッチ620へ送られる。このレディ信号は二つの目的を持 っている。第1にレディ信号は、一つのメッセージがバッファAから送り出され る毎にカウンタ612に入力される。レディ信号はカウンタ612の値を増加さ せる。第2にレディ信号は、FIFO621aにより、1×1スイッチ610か ら送られるメッセージ・データに対する有効信号として使用される。このカウン タの値は0から始まるため、1×1スイッチ610は、4個のメッセージを送る ことができ、それらの送出後は4×4スイッチ620から送られるレジューム信 号を待たなければならない。 4×4スイッチ620内のFIFO621aのバッファAからメッセージが出 て行くと、必ずレジューム信号が1×1スイッチ610へ送り返される。このレ ジューム信号はカウンタの値を減らし、FIFO621a内で一つのスペースが 空いたことを示す。 レディ/レジュームのハンドシェイクは、この中で説明された各n×mスイッ チに対して同じように機能する。このようにして本相互接続ネットワーク内の各 スイッチ層の間での円滑な通信が達成される。 〈メモリのタイミング〉 好ましい相互接続ネットワークは、広範囲のメモリ・アクセス時間およびサイ クル時間での使用に適応できる。制御回路は、各メモリ・モジュール600の1 ×2スイッチ630内に配置されている。このスイッチの更なる詳細を図16に 示す。図16は、FIFOバッファ631、アドレス経路633、制御ビット経 路634、および遅延チェイン(delay chain)636を示しており、これらの全 ては、1×2スイッチ630内に存在する。遅延チェイン636は、マルチ処理 システムに取り付けられたメモリの速度とサイクル時間に応じて、1×2スイッ チ630における遅延を制御する。マルチ処理システムに取り付けられたメモリ のアクセス時間は、8位置セレクタ637aによって1×2スイッチ630へ知 らされる。セレクタ637aは、制御タグ(control tag)が入力635a-hのい ずれに入るかを制御することにより、遅延チェイン636aの長さを制御する。 この制御タグは、遅延チェインの8入力635a-hのうちの一つに入る。この 制御タグは、目的地コード、リターン・アドレス、および他の制御情報を有して いる。セレクタ637aは、遅延チェイン636a内のいずれの場所に制御タグ が入るかを制御する。 このタグが一旦遅延チェイン636aに入ると、このタグは、遅延チェイン6 36aの最後に到達するまで、そのチェインを流れていく。その後、この制御タ グは、メモリ・バンクから出て来るメッセージ・データを採取してそのメッセージ をFIFO652における最初の空いているバッファにロードする時点になると 、メモリ・バンクの出力側における2×1スイッチ650に信号を送るために使 用される。 メモリのサイクル時間は、メモリのアクセス時間と同様に制御される。8位置 のセレクタ637bが、まさに上述のようにして同様の遅延チェイン636bを 制御する。しかし、セレクタ637bおよび遅延チェイン636bはメモリのサ イクル時間を制御するため、この遅延チェインの出力は、1×2スイッチ630 のバッファ632aおよび632bまで送られて、メッセージがその1×2スイ ッ チを出てメモリ・バンクへ行く頻度を制御する。 更なるセレクタ637cは、マルチ処理システムに取り付けられたメモリ部分 がパイプライン方式のメモリ部分か、パイプライン方式ではないメモリ部分かを 示す2位置のセレクタである。このように、本相互接続ネットワークは、異なる アクセス時間およびサイクル時間を有する多くの異なる種類のメモリを本相互接 続ネットワークにおいて使用することを想定している。例えば、SRAMまたは SRAMを使用することができる。どのようなメモリが使用されるかに応じて、 セレクタ637はそのメモリの種類に対応するように設定される。 本相互接続ネットワークの設計はマルチ処理システムのスケーラビリティ(sca lability)を大きく増大させる、ということが当業者には容易に認識できるであ ろう。ネットワーク・モジュールおよびメモリ・モジュール内の各n×mスイッチ はその隣接部と通信するだけでよいため、この相互接続ネットワークは、極めて スケーラビリティに富んでいる。個々のn×mスイッチのそれぞれは、相互接続 ネットワーク全体について、または、2つ若しくは3つ前方の層で起こっている 事象についての大域的な情報を持つ必要はない。各n×mスイッチは、CPUと メモリとの間で調停を行いデータを送るために、局所的な情報を持つだけでよい 。同様に、CPUは、メモリ参照を送出する前に、相互接続ネットワークについ て又はメモリの応答時間についての大域的な知識を持つ必要はない。この方法に おいて、CPUは、そのCPUからメモリ・バンクまでのデータ経路全体が空い ていることを確かめる必要はない。本相互接続ネットワークを使用すると、CP Uは、簡単に「火をつけて忘れる(fire and forget)」ことができる。本相互接 続ネットワークは大域的な調停回路(arbitrator)を必要としないことから、CP Uや、n×mスイッチ、オペレーティングシステムについての如何なる再設計も 必要としないので、単純な複製によって極めて容易にシステムの規模を変えるこ とができる、ということを当業者は理解するであろう。異なる構成における構成 要素を接続し直すだけで、アーキテクチャの規模が直ちに変更される。 本相互接続ネットワークの他の利点は、この相互接続ネットワークは使用され るCPUの種類に依存せず、またメモリの速度にも依存しないということである 。 メモリの応答時間に依存しない如何なる種類のプロセッサの構成も、本発明のシ ステムに適応できる。このようなプロセッサ構成の一つは、同時係属中で本出願 人に譲渡され、1990年10月19日に出願された、オバーリン(Oberlin)らによる「S CALABLE PARALLEL VECTOR COMPUTER SYSYTEM(スケーラブルな並列ベクトル計算 機システム)」という名称の米国特許出願第07/600,328号の中に見ることができ る。参考までにこの出願をここに挙げておく。また、たとえメモリの全てのバン クが異なる速度で動作しても、本相互接続ネットワークは正しく機能し、複雑な 再設計を行う必要はない。したがって本相互接続ネットワークの設計はこの点に おいて極めて柔軟性に富む、ということが当業者はわかるであろう。このように 、本相互接続ネットワークで使用されるCPUは、時間に影響を受けやすいもの ではなく、したがって、メモリの待ち時間がより長い場合であっても効率よく動 作する。本相互接続ネットワークの設計は、大量のデータがCPUとメモリとの 間で移動できるように、バンド幅を広げるものである。このような設計方式によ り、極めて広いバンド幅で極めて高いスループットの計算機が得られる、という ことを当業者は容易に理解するであろう。すなわち、これは、並列度の高いベク トル処理のタスクに特によく適合した設計である。 ここでは特定の実施形態が説明されているが、同一の目的を達成することを意 図している如何なる構成も、その説明された特定の実施形態の代わりに用いるこ とができる、ということを当業者は理解するであろう。例えば、本発明のアーキ テクチャは、異なる数のプロセッサ、異なる量のメモリ、または、プロセッサ1 個当たりの異なる数のプログラム・スレッド(program threads)で実現されてもよ い。また、本発明のアーキテクチャは、使用されるプロセッサの特定の種類、メ モリの速度、または、この詳細な説明において開示された特定の論理設計のいず れにも依存しない、ということが当業者にはわかるであろう。本発明の範囲を逸 脱することなく、異なる種類のプロセッサを使用できるであろう。 この出願は、本発明の改造または変形をカバーするものである。したがって、 この発明は請求の範囲およびその均等物によってのみ限定されることは明かであ る。
【手続補正書】特許法第184条の8 【提出日】1994年11月29日 【補正内容】 おいて更に詳細に説明する。 図1〜3は、ネットワーク・モジュール300およびメモリ・モジュール600 のアーキテクチャのモジュール性により、如何にして、単純な複製で任意の規模 のシステムの構築が可能となるのかを示している。1〜4個のCPUを有するシ ステムにおいては、それらのCPUは図1および2に示すようにメモリ・モジュ ール600に直結される。4個よりも多くのCPUを有するシステムにおいては 、それらのCPUは、まずネットワーク・モジュール300に接続され、そのネ ットワーク・モジュールがメモリ・モジュール600に接続される。最小のマルチ 処理システムを構成するものと同一のネットワーク・モジュールおよびメモリ・モ ジュールを、修正することなく、最大のシステムを構築するために使用すること ができる。モジュール性と拡張性は本相互接続ネットワークの設計に本来的に備 わっているものであるため、それらはシステム実現のために選択される技術に依 存せず、極めて柔軟性に富み、その結果、容易に規模を変更できるマルチ処理シ ステムが得られる、ということが当業者には容易にわかるであろう。 4個、8個、および32個のCPUを有するマルチ処理システムの例を説明す る前に、メモリの相互接続ネットワークを構成するメモリ・モジュール600お よびネットワーク・モジュール300について詳細に説明する。一般に、メモリ・ モジュール600およびネットワーク・モジュール300は、n×mスイッチの 集合から構成される。これらのn×mスイッチは、種々の形態に接続されてメモ リおよびネットワークのモジュールを形成し、それらは、プロセッサと共通メモ リとの間にメッセージの経路を設定する。相互接続ネットワークを構築するため に同一のn×mスイッチ群が繰り返し使用されるように、そのスイッチが作製さ れる。したがって、その結果得られる構造はモジュール性が高く、小規模のマル チ処理システムを構築するために使用されるものと同一の構成要素が大規模なシ ステムにおける接続にも使用できるようになっている。 〈メモリ・モジュール〉 次にメモリ・モジュール600について詳細に説明する。図6は、メモリ・モジ ュール600のブロック図を示す。出力経路(outgoing path)604および入力 経 路(return path)606の双方が示されている。各メモリ・モジュール600は、 8個の入力0〜7と16個のメモリ・バンク640a〜640pとを備えている 。実現の容易化のため、このメモリ・モジュールは、論理的に二つの独立部分に 分離されている。入力0〜3はメモリ・バンク640a〜640h(上半部)へ 経路が設定されており、一方、入力4〜7はメモリ・バンク640i〜640p (下半部)へ経路が設定されている。これら二つの部分は、完全に分離されてい て、互いに影響されることはない。物理的に、これら二つの部分は、一つのプリ ント回路基板の上部側と底部側に配置されるのが好ましい。しかし、本相互接続 ネットワークは、この物理的な実現方法に限定されないと理解すべきである。す なわち、多くの他の物理的な所定の実現が当業者によって容易に考えられるであ ろう。 入力0〜7のそれぞれは、まず1×1スイッチ610によってバッファリング される。4個のスイッチ610から成る2個のスイッチ群は、2個の4×4スイ ッチ620のうちの一つの入力へ接続される。2×2スイッチ420は、4個の 入力のそれぞれから4個の1×2スイッチ630の一つへ経路を設定する。1× 2スイッチ630のそれぞれは、一つの入力から2個のメモリ・バンク640の 一つへ経路を設定する。 各メモリ・モジュール600の入力経路606において、2個のメモリ・バンク は2×1スイッチ650へ経路が設定されている。4個の2×1スイッチ650 は、4×4スイッチ660の入力へ接続され、その後、それらは4個の1×1ス イッチ670の一つへ経路が設定され、全部で8個の出力0〜7へ経路が設定さ れている。 図7は、メモリ・モジュール600の出力経路側604のより詳細なブロック 図を示す。上半部および下半部の双方が示されている。メモリ・モジュール60 0の入力0〜7のそれぞれは、CPU100からそのメモリ・モジュールへのメ モリ参照をバッファリングする1×1スイッチを有している。各1×1スイッチ 610におけるバッファの数は、クロスバー・スイッチ間での通信の往復時間に よって変わる。各クロックの周期がその通信時間に付加されるため、各1×1ス イッチ610内のバッファを更に追加する必要がある。1×1スイッチ610の 目的は、メッセージ・パケットを多重に送ることができるように、クロスバー・ス イッチ間の通信時間をカバーすることにある。したがって、図6に示した本メモ リ・モジュールには、6個のバッファA〜Fが設けられていて、n×mスイッチ がクロックの1周期の期間で通信を行う。 1×1スイッチ610におけるバッファA〜F、および本相互接続ネットワー クを構築するために使用される全てのn×mスイッチにおけるバッファは、先入 れ先出し(FIFO)のキュー構造体(queue structure)を有している。入力0 〜7のうちの一つを経由してメモリ・モジュール600に入るメッセージは、そ の経路用の対応するバッファAに他のメッセージが既に存在するということがな ければ、そのバッファAに保持される。バッファAが占有されている場合には、 そのメッセージは、バッファBが使用可能であれば、バッファAの代えてバッフ ァBに保持される。バッファAがいったん空になると、バッファBに存在するメ ッセージはバッファAへ移される。別のメッセージがアクセスしようとしたとき バッファAおよびバッファBの双方が満杯であれば、そのメッセージはバッファ Cに入る。このようにして入力バッファは、先入れ先出しキューとして動作する 。別のメッセージがその入力バッファ610に入ろうとしたときバッファA〜F が全て満杯であれば、そのメッセージは、メモリ・モジュールに入る前に、FI FOバッファの一つが解放されるまで単に待機するだけである。入力保持バッフ ァ(input holding buffer)621が他のメッセージを受け取る用意ができている ときは、1×1スイッチ610のバッファA内のメッセージは、4×4スイッチ の入力保持バッファ621の中に保持される。 いったんメッセージが入力保持バッファ621に保持されると、バッファ62 1のバッファAは2個のメッセージ・ステアリング・ビット(message steering bi t)を解読してそのメッセージの経路を4個の出力要求バッファ(output request buffers)のいずれに設定すべきかを決定する。2個のメッセージ・ステアリング・ ビットを解読した後、バッファAは、最初のパケット内の2個のメッセージ・ス テアリング・ビットを、8個の入力0〜7のうちいずれの入力からそのメッセー ジがメモリ・モジュール600に入ったかを表す2個のビットに置き換える。こ のようにして、メッ そのメッセージは、対応する1×2スイッチ630へ進む。好ましい実施形態で は、1×2スイッチ630に入るメッセージは、2個のメモリ・バンク640の うちの一つに経路が設定される。 或るメッセージが1×2スイッチ630のバッファAに入った後は、バッファ Aはメッセージ・ステアリング・ビットを解読して、そのメッセージを2個のバン ク入力バッファ(bank input buffer)632aまたは632bのうちの一つに導 く。各バンク入力バッファ632は、異なるメモリ・バンク640に対応づけら れている。例えば、1×2スイッチ630aに入るメッセージは、メモリ・バン ク04へ経路を設定されるべきものであって、バンク入力バッファ632bへ導 かれる。この段階において、メッセージは、バンク制御論理チップにより選択さ れて適切なメモリチップにアクセスできる状態になる。 メモリ・モジュール600から要求元のCPUへ戻るために、参照は、上述の ようにプロセッサからメモリへの出力経路側参照がメモリ・モジュールの出力経 路側604を通って進むのと同様にして、そのメモリ・バンクを出て、メモリ・モ ジュール600の適切な入力経路側606を通って発信元のプロセッサに戻る。 メモリ・モジュール600の入力経路側606の詳細を図8に示す。この場合も また、上半部と下半部の双方が示されている。入力経路参照(return reference) は、メモリ・バンク616を出た後、2×1スイッチ650に入る。各2×1ス イッチ650は8個のバッファFIFO652を備えている。このスイッチにお けるFIFOは、パイプライン方式のメモリ部分の可能性に対応できるように8 段の深さがなければならない(これについては下記において詳細に論じられる) 。各2×1スイッチ650は、2個の対応するメモリ・バンクからメッセージを 受け取り、そのメッセージを8個のバッファFIFOによってバッファリングし 、そのメッセージの経路を4×4スイッチ660の入力へと設定する。4×4ス イッチ660は、図5を参照しつつ上記において説明された4×4スイッチ62 0と同じように動作する。リターン・メッセージ(return message)は、4×4ス イッチ660から適切な1×1出力バッファ670へと経路が設定される。1× 1スイッチ670は、図5を参照しつつ上記において説明された1×1スイッチ 61 【図1】 【図2】 【図3】 【図4】 【図5】 【図6】 【図7】 【図7】 【図7】 【図7】 【図8】 【図8】 【図8】 【図8】 【図9】 【図9】 【図10】 【図10】 【図10】 【図10】 【図11】 【図11】 【図11】 【図11】 【図12】 【図12】 【図13】 【図14】 【図15】 【図16】 【図16】 【図16】 【図16】 【手続補正書】特許法第184条の8 【提出日】1995年5月3日 【補正内容】 トワークは、自暴自棄ルーティング(desperation routing)またはホットポテト・ ルーティング(hot potato routing)と呼ばれる方式を使用している。ホライゾン の自暴自棄ルーティングは、複数の入力と同数の出力を有する多段ネットワーク である。この方式は、どのネットワークのサイクルにおいても各入力に対し一つ の出力への経路を設定する必要がある。例えば、4個の入力情報(input referen ces)が存在し、その4個の入力情報が同一の出力に行くことを欲している場合、 その4個の入力情報のうち一つが正しい出力へ行き、他の全ての入力は欲してい ない他のいずれかの出力へ行く。これは、4個の入力のうち3個は格段に長い経 路をとってそのネットワークを通過することを意味する。このホライゾンの自暴 自棄ネットワークは、これらの他の三つの情報(references)は結局は望ましい入 力へ戻って、望ましい出力に到達する別の機会を持つように、ネットワークに経 路が定められる。したがって、それらの情報がネットワークの中で永久に失われ るということはなく、ホライゾンのルーティング方式は、そのネットワーク内に 最も長く存在している情報が最高の優先度を持つような機構を有しており、これ により、それらの情報はいつかは同一の出力に対する競合する情報に打ち勝つこ とになる。このようなルーティング方式によれば、一つの情報が要求する終点へ の可能な経路を複数持ち、多くの情報は、その目的地へ到達する前にネットワー ク内を通行するのに非常に長い期間を費やすことになりかねない、ということが 当業者には容易にわかるであろう。したがって、このホライゾンの自暴自棄ルー ティング方式をマルチ処理の計算機で使用するのは望ましくない。 マルチプロセッサのメモリインタフェイスの更に他の例が、ムラタ(Murata)ら によって1992年4月1日こ出願されたヨーロッパ特許出願第0 510 821号におい て説明されている。この出願は、共有メモリ・モジュールと複数のプロセッサと の間でデータを転送するためにアドレスバスに接続されたスイッチを使用するこ とを教示している。このアドレスバスは、特定のプロセッサのキャッシュ内に存 在するデータのアドレスに対するメモリ参照について調べる(snoop)ために使用 することができ、一方、このスイッチは、メモリ・モジュールとプロセッサとの 間での高速のデータ転送路を提供する。 マルチプロセッサのメモリインタフェイスの他の例が、ハイデルバーガ(Heide lberger)らによって1990年3月2日に出願されたヨーロッパ特許出願第0 392 18 4号において説明されている。この出願は、メモリとプロセッサ双方のキャッシ ュの使用について述べている。このメモリ・キャッシュは、共有メモリに対する アクセス時間を短縮するために共有メモリデータをキャッシュするのに使用され る。 マルチ処理システムにおける他の重要な概念は、異なる使用者の要求に合わせ て種々の異なるサイズにすることである。例えば、最大システムは1024個の プロセッサを持つことができるが、512個のプロセッサを有する構成、256 個のプロセッサを有する構成、または他の或る構成というように縮小化されたシ ステムを利用できるようにするのが望ましい。最大システムを構成する基本的な ビルディングブロック(building blocks)を修正することなく使用して最小シス テムを作り上げることができることが重要であり、逆もまた同様である。したが ってスケーラブルなシステムは、格段に柔軟性に富み、このようなシステムの展 開によって使用者の変化する要求に合わせることができる。 以上より、プロセッサをメモリに接続する相互接続ネットワークであって、例 えばプロセッサが競合することなくメモリ参照を発行できるようにした相互接続 ネットワークに対する要求が当業界にあり、それは、ネットワーク内でのメモリ 参照の間での競合を低減し、どの1回の参照についてもネットワーク内で費やす 時間を低減し、その結果、プロセッサのアイドル時間が減少し、システムの性能 が向上する。また、モジュラーな相互接続ネットワークであって、その相互接続 ネットワークを構成する個々のモジュールの再設計を必要とせずに、任意の個数 のプロセッサおよび異なるサイズのメモリを有するマルチ処理システムに適合す るように容易に規模を変更することができる相互接続ネットワークに対する要求 もある。 〈発明の要約〉 上記技術における限界を克服するために、および本明細書を読んで理解すれば 明らかになるであろう他の限界を克服するために、本発明は、プロセッサをメモ リに接続するマルチ処理用の相互接続ネットワークを提供する。この相互接続ネ ッ トワークは、種々の個数のプロセッサおよび種々のメモリサイズを有するように 構成されたシステムでの使用に適合したものである。すなわち、この相互接続ネ ットワークのモジュール性により、単純な複製で任意の規模のシステムを構築で きるようになる。 この相互接続ネットワークは、ネットワーク・モジュールおよびメモリ・モジュ ールを含む。ネットワーク・モジュールおよびメモリ・モジュールは、一連のn× mスイッチで構成されていて、各n×mスイッチはn個の入力のうちの一つから m個の出力のうちの一つへの経路を設定する。このスイッチは、相互接続ネット ワークにおけるメッセージの競合が低減されるように設計されている。このスイ ッチ、したがってメモリとネットワークのモジュールは高いモジュール性を有し ており、これにより、同一の構成要素を利用して任意の規模のマルチ処理システ ムを実質的に構築できるようになる。 また、メッセージの競合を低減するための機構および相互接続ネットワークを 実現するために必要な相互接続の数が与えられる。最後に、相互接続ネットワー ク内の特定の経路上のデータが正しいか否かを判定するために健全性コード(san ity code)が使用される。この健全性コードは、メモリ・バンクもしくはネットワ ーク経路の故障を検出し、または、システムのグレードを下げるためにも使用さ れる。 本発明は、請求項1(ネットワーク)、請求項8(読み出し方法)、請求項9 (書き込み方法)、請求項10(計算機システム)、および請求項17(メモリ・ モジュール)において定義されている。 〈図面の簡単な説明〉 図面において、同一符号はいくつかの図を通して同一構成要素を示している。 図1は、4個のCPUを有するマルチ処理システムの一例のブロック図を示す 。 図2は、図1に示した4個のCPUを有するマルチ処理システムのより詳細な ブロック図である。 図3は、32個のCPUを有するマルチ処理システムの一例のブロック図を示 す。 図4は、図3に示した32個のCPUのシステムにおける、8個のCPUと4 個のネットワーク・モジュールとの間の接続のより詳細なブロック図を示す。 図5は、図3に示した32個のCPUのシステムにおける、ネットワーク・モ ジュールと8個のメモリ・モジュールとの間の接続のより詳細なブロック図を示 す。 図6は、メモリ・モジュールのブロック図を示す。 図7は、図6に示したメモリ・モジュールにおける出力経路(outgoing path)の より詳細なブロック図を示す。 図8は、図6に示したメモリ・モジュールにおける入力経路(return path)のよ り詳細なブロック図を示す。 図9は、ネットワーク・モジュールのブロック図を示す。 図10は、図9に示したネットワーク・モジュールにおける出力経路のより詳 細なブロック図を示す。 図11は、図9に示したネットワーク・モジュールにおける入力経路のより詳 チを出てメモリ・バンクへ行く頻度を制御する。 更なるセレクタ637cは、マルチ処理システムに取り付けられたメモリ部分 がパイプライン方式のメモリ部分か、パイプライン方式ではないメモリ部分かを 示す2位置のセレクタである。このように、本相互接続ネットワークは、異なる アクセス時間およびサイクル時間を有する多くの異なる種類のメモリを本相互接 続ネットワークにおいて使用することを想定している。例えば、SRAMまたは DRAMを使用することができる。どのようなメモリが使用されるかに応じて、 セレクタ637はそのメモリの種類に対応するように設定される。 本相互接続ネットワークの設計はマルチ処理システムのスケーラビリティ(sca lability)を大きく増大させる、ということが当業者には容易に認識できるであ ろう。ネットワーク・モジュールおよびメモリ・モジュール内の各n×mスイッチ はその隣接部と通信するだけでよいため、この相互接続ネットワークは、極めて スケーラビリティに富んでいる。個々のn×mスイッチのそれぞれは、相互接続 ネットワーク全体について、または、2つ若しくは3つ前方の層で起こっている 事象についての大域的な情報を持つ必要はない。各n×mスイッチは、CPUと メモリとの間で調停を行いデータを送るために、局所的な情報を持つだけでよい 。同様に、CPUは、メモリ参照を送出する前に、相互接続ネットワークについ て又はメモリの応答時間についての大域的な知識を持つ必要はない。この方法に おいて、CPUは、そのCPUからメモリ・バンクまでのデータ経路全体が空い ていることを確かめる必要はない。本相互接続ネットワークを使用すると、CP Uは、簡単に「火をつけて忘れる(fire and forget)」ことができる。本相互接 続ネットワークは大域的な調停回路(arbitrator)を必要としないことから、CP Uや、n×mスイッチ、オペレーティングシステムについての如何なる再設計も 必要としないので、単純な複製によって極めて容易にシステムの規模を変えるこ とができる、ということを当業者は理解するであろう。異なる構成における構成 要素を接続し直すだけで、アーキテクチャの規模が直ちに変更される。 本相互接続ネットワークの他の利点は、この相互接続ネットワークは使用され るCPUの種類に依存せず、またメモリの速度にも依存しないということである 。 メモリの応答時間に依存しない如何なる種類のプロセッサの構成も、本発明のシ ステムに適応できる。このようなプロセッサ構成の一つは、同時係属中で本出願 人に譲渡され、1994年12月28日に発行された、オバーリン(Oberlin)らによる「S CALABLE PARALLEL VECTOR COMPUTER SYSYTEM(スケーラブルな並列ベクトル計算 機システム)」という名称のEP公報第0553158号の中に見ることができる。参 考までにこの出願をここに挙げておく。また、たとえメモリの全てのバンクが異 なる速度で動作しても、本相互接続ネットワークは正しく機能し、複雑な再設計 を行う必要はない。したがって本相互接続ネットワークの設計はこの点において 極めて柔軟性に富む、ということが当業者はわかるであろう。このように、本相 互接続ネットワークで使用されるCPUは、時間に影響を受けやすいものではな く、したがって、メモリの待ち時間がより長い場合であっても効率よく動作する 。本相互接続ネットワークの設計は、大量のデータがCPUとメモリとの間で移 動できるように、バンド幅を広げるものである。このような設計方式により、極 めて広いバンド幅で極めて高いスループットの計算機が得られる、ということを 当業者は容易に理解するであろう。すなわち、これは、並列度の高いベクトル処 理のタスクに特によく適合した設計である。 ここでは特定の実施形態が説明されているが、同一の目的を達成することを意 図している如何なる構成も、その説明された特定の実施形態の代わりに用いるこ とができる、ということを当業者は理解するであろう。例えば、本発明のアーキ テクチャは、異なる数のプロセッサ、異なる量のメモリ、または、プロセッサ1 個当たりの異なる数のプログラム・スレッド(program threads)で実現されてもよ い。また、本発明のアーキテクチャは、使用されるプロセッサの特定の種類、メ モリの速度、または、この詳細な説明において開示された特定の論理設計のいず れにも依存しない、ということが当業者にはわかるであろう。本発明の範囲を逸 脱することなく、異なる種類のプロセッサを使用できるであろう。 この出願は、本発明の改造または変形をカバーするものである。したがって、 この発明は請求の範囲によってのみ限定されることは明かである。 請求の範囲 1.マルチプロセッサ・システムにおける複数のCPU(100)と複数のメモ リ・モジュール(600)との間でパケットの経路を設定する相互接続ネットワ ーク(300)において、下記の(a)および(b)の部分を備えることを特徴 とする相互接続ネットワーク。 (a)前記複数のCPU(100)を前記複数のメモリ・モジュール(600 )に接続する出力経路ネットワーク(302)であって、下記の(a1)および (a2)の部分を備える出力経路ネットワーク(302) (a1)第1および第2クロスバー・スイッチ(320、330)であって 、該第1および第2クロスバー・スイッチのうちのいずれかのスイッチが、前記 複数のCPU(100)から該スイッチを経由して転送されているパケットをキ ューイングするために使用されるFIFOキュー構造体(321、331)を有 する第1および第2クロスバー・スイッチ(320、330) (a2)パケットを前記CPU(100)から前記第1クロスバー・スイッ チ(320)へ転送するために、前記第1クロスバー・スイッチ(320)およ び前記複数のCPU(100)に接続された入力バッファ(310) (b)前記複数のメモリ・モジュール(600)を前記複数のCPU(100 )に接続する入力経路ネットワーク(304)であって、下記の(b1)および (b2)の部分を備える入力経路ネットワーク(304) (b1)第1および第2クロスバー・スイッチ(360、370)であって 、該第1および第2クロスバー・スイッチのうちのいずれかのスイッチが、前記 メモリ・モジュール(600)から該スイッチを経由して転送されているパケッ トをキューイングするために使用されるFIFOキュー構造体を有する第1およ び第2クロスバー・スイッチ(360、370) (b2)パケットを前記メモリ・モジュール(600)から前記第1クロス バー・スイッチ(360)へ転送するために、前記メモリ・モジュール(600) および前記第1クロスバー・スイッチ(360)に接続された入力バッファ(3 50) 2.請求項1に記載の相互接続ネットワークにおいて、前記出力経路ネットワー ク(302)の前記入力バッファ(310)が、前記スイッチ(320)に向け て転送されているパケットをキューイングするために使用されるFIFOキュー 構造体(311)を備える相互接続ネットワーク。 3.請求項1に記載の相互接続ネットワークにおいて、前記出力経路ネットワー ク(302)の前記第1および第2クロスバー・スイッチ(320、330)の うちのいずれかのスイッチが、パケットの転送中にパケットを一時的に格納する ために使用される出力要求バッファを更に有する相互接続ネットワーク。 4.請求項1に記載の相互接続ネットワークにおいて、前記パケットがメッセー ジ・ステアリング・ビットを有し、前記出力経路ネットワーク(302)の第1お よび第2クロスバー・スイッチ(320、330)が、複数の前記メッセージ・ス テアリング・ビットを前記クロスバー・スイッチへの入力を表すビットで置き換え る手段を更に有する相互接続ネットワーク。 5.請求項1に記載の相互接続ネットワークにおいて、前記入力経路ネットワー ク(304)の前記入力バッファ(350)が、前記スイッチ(360)に向け て転送されているパケットをキューイングするために使用されるFIFOキュー 構造体(351)を備える相互接続ネットワーク。 6.請求項1に記載の相互接続ネットワークにおいて、前記入力経路ネットワー ク(304)の前記第1および第2クロスバー・スイッチ(360、370)の うちのいずれかのスイッチが、パケットの転送中にパケットを一時的に格納する ために使用される出力要求バッファを更に有する相互接続ネットワーク。 7.請求項1に記載の相互接続ネットワークにおいて、前記パケットがメッセー ジ・ステアリング・ビットを有し、前記出力経路ネットワーク(302)の第1お よび第2クロスバー・スイッチ(320、330)が、複数の前記メッセージ・ス テアリング・ビットを前記クロスバー・スイッチへの入力を表すビットで置き換え る手段を更に有する相互接続ネットワーク。 8.相互接続ネットワークに接続された複数のCPUを備えるマルチプロセッサ 計算システムにおける該相互接続ネットワークに接続された複数のメモリ・モジ ュールの一つのメモリ・モジュール(600)内のメモリの読み出し方法におい て、 前記メモリ・モジュール(600)に接続された出力経路ネットワーク(30 2)であって、該出力経路ネットワークは入力と、出力と、該入力を該出力に接 続する複数の段とを備え、各段はスイッチとバッファを備え、前記複数の段は第 1段を含んでいる出力経路ネットワーク(302)を用意するステップと、 前記メモリ・モジュール(600)に接続された入力経路ネットワーク(30 4)であって、該入力経路ネットワークは入力と、出力と、該入力を該出力に接 続する複数の段とを備え、各段はスイッチとバッファを備え、前記複数の段は第 1段を含んでいる入力経路ネットワーク(304)を用意するステップと、 メッセージ・ステアリング・ビットを有する読出コマンド・パケットを前記出力 経路ネットワークの前記入力へ転送するステップと、 前記読出コマンド・パケットを前記出力経路ネットワークの前記第1段におけ るバッファに格納するステップと、 前記出力経路ネットワークの次の段への経路が空いている場合に、前記読出コ マンド・パケットを前記出力経路ネットワークの該次の段へ転送するとともに、 前記読出コマンド・パケットが何処から来たかを示すために前記メッセージ・ステ アリング・ビットを修正するステップと、 前記出力経路ネットワークの全ての段を通過した場合に、前記読出コマンド・ パケットを前記メモリ・モジュールへ転送するとともに、前記読出コマンド・パケ ットが何処から来たかを示すために前記メッセージ・ステアリング・ビットを修正 するステップと、 前記読出コマンド・パケットを前記メモリ・モジュール内のバッファに格納する ステップと、 前記読出コマンド・パケットによって指示された位置でメモリの読み出しを行 ってデータを獲得するステップと、 メッセージ・ステアリング・ビットを有する前記データをデータ・パケットに入 れて前記入力経路ネットワークの前記入力へ転送するステップと、 前記データ・パケットを前記入力経路ネットワークの前記第1段におけるバッ ファに格納するステップと、 前記入力経路ネットワークの次の段への経路が空いている場合に、前記データ・ パケットを前記入力経路ネットワークの該次の段へ転送するとともに、前記デ ータ・パケットが何処から来たかを示すために前記メッセージ・ステアリング・ビ ットを修正するステップと、 を有することを特徴とするメモリの読み出し方法。 9.相互接続ネットワークに接続された複数のCPUを備えるマルチプロセッサ 計算システムにおける該相互接続ネットワークに接続された複数のメモリ・モジ ュールの一つのメモリ・モジュール(600)内のメモリの書き込み方法におい て、 前記メモリ・モジュール(600)に接続された出力経路ネットワーク(30 2)であって、該出力経路ネットワークは入力と、出力と、該入力を該出力に接 続する複数の段とを備え、各段はスイッチとバッファを備え、前記複数の段は第 1段を含んでいる出力経路ネットワーク(302)を用意するステップと、 前記メモリ・モジュール(600)に接続された入力経路ネットワーク(30 4)であって、該入力経路ネットワークは入力と、出力と、該入力を該出力に接 続する複数の段とを備え、各段はスイッチとバッファを備え、前記複数の段は第 1段を含んでいる入力経路ネットワーク(304)を用意するステップと、 アドレスとメッセージ・ステアリング・ビットと書込データとを有する書込コマ ンド・パケットを前記出力経路ネットワークの前記入力へ転送するステップと、 前記書込コマンド・パケットを前記出力経路ネットワークの前記第1段におけ るバッファに格納するステップと、 前記出力経路ネットワークの次の段への経路が空いている場合に、前記書込コ マンド・パケットを前記出力経路ネットワークの該次の段へ転送するとともに、 前記書込コマンド・パケットが何処から来たかを示すために前記メッセージ・ステ アリング・ビットを修正するステップと、 前記出力経路ネットワークの全ての段を通過した場合に、前記書込コマンド・ パケットを前記メモリ・モジュールへ転送するとともに、前記書込コマンド・パケ ッ トが何処から来たかを示すために前記メッセージ・ステアリング・ビットを修正す るステップと、 前記書込コマンド・パケットを前記メモリ・モジュール内のバッファに格納する ステップと、 前記書込データを前記アドレスによって指示された位置に格納するステップと 、 を有することを特徴とするメモリの書き込み方法。 10. 複数のCPU(100)と、 複数のメモリ・モジュール(600)と、 請求項1において定義された相互接続ネットワークと、 を備えるマルチプロセッサ計算システム。 11.請求項10に記載の相互接続ネットワークにおいて、前記出力経路ネット ワーク(302)の前記入力バッファ(310)が、前記スイッチ(320)に 向けて転送されているパケットをキューイングするために使用されるFIFOキ ュー構造体(311)を備える相互接続ネットワーク。 12.請求項10に記載の相互接続ネットワークにおいて、前記出力経路ネット ワーク(302)の前記第1および第2クロスバー・スイッチ(320、330 )のうちのいずれかのスイッチが、パケットの転送中にパケットを一時的に格納 するために使用される出力要求バッファを更に有する相互接続ネットワーク。 13.請求項10に記載の相互接続ネットワークにおいて、前記パケットがメッ セージ・ステアリング・ビットを有し、前記出力経路ネットワーク(302)の第 1および第2クロスバー・スイッチ(320、330)が、複数の前記メッセー ジ・ステアリング・ビットを前記クロスバー・スイッチへの入力を表すビットで置 き換える手段を更に有する相互接続ネットワーク。 14.請求項10に記載の相互接続ネットワークにおいて、前記入力経路ネット ワーク(304)の前記入力バッファ(350)が、前記スイッチ(360)に 向けて転送されているパケットをキューイングするために使用されるFIFOキ ュー構造体(351)を備える相互接続ネットワーク。 15.請求項10に記載の相互接続ネットワークにおいて、前記入力経路ネット ワーク(304)の前記第1および第2クロスバー・スイッチ(360、370 )のうちのいずれかのスイッチが、パケットの転送中にパケットを一時的に格納 するために使用される出力要求バッファを更に有する相互接続ネットワーク。 16.請求項10に記載の相互接続ネットワークにおいて、前記パケットがメッ セージ・ステアリング・ビットを有し、前記出力経路ネットワーク(302)の第 1および第2クロスバー・スイッチ(320、330)が、複数の前記メッセー ジ・ステアリング・ビットを前記クロスバー・スイッチへの入力を表すビットで置 き換える手段を更に有する相互接続ネットワーク。 17.相互接続ネットワークに接続された複数のCPUを備えるマルチプロセッ サ計算システムにおける該相互接続ネットワークに接続された複数のメモリ・モ ジュールの一つのメモリ・モジュール(600)において、 複数の入力と、 複数の出力と、 複数のメモリ・バンク(640a〜640p)と、 前記複数の入力を前記複数のメモリ・バンクに接続し、前記メモリ・バンクのう ちのいずれか一つに向けて転送されているパケットをキューイングするために使 用されるFIFOキュー構造体(311)を有する第1スイッチを含む複数のス イッチ(610)を備える第1ルーティング・ネットワークと、 前記複数のメモリ・バンクを前記複数の出力に接続し、前記メモリ・バンクのう ちのいずれか一つから転送されているパケットをキューイングするために使用さ れるFIFOキュー構造体(311)を有する第1スイッチを含む複数のスイッ チを備える第2ルーティング・ネットワークと、 を備えることを特徴とするメモリ・モジュール(600)。 18.請求項17に記載のメモリ・モジュール(600)において、前記第1ル ーティング・ネットワーク内の前記FIFOキュー構造体(311)はN個のエ ントリを有し、該数字Nは指定されたスイッチの間での通信の往復時間をカバー するように選ばれているメモリ・モジュール(600)。 19.請求項17に記載のメモリ・モジュール(600)において、前記第1ル ーティング・ネットワークがクロスバー・スイッチ(320)を更に備え、該クロ スバー・スイッチが、前記第1ルーティング・ネットワークの前記第1スイッチか ら受け取ったパケットをバッファリングするために前記第1スイッチに接続され たFIFOキュー構造体(311)を有するメモリ・モジュール(600)。 20.請求項19に記載のメモリ・モジュール(600)において、前記クロス バー・スイッチ(320)が、パケットの転送中にパケットを一時的に格納する ために使用される出力要求バッファを更に有するメモリ・モジュール(600) 。 21.請求項19に記載のメモリ・モジュール(600)において、前記パケッ トがメッセージ・ステアリング・ビットを有し、前記クロスバー・スイッチが、複 数のメッセージ・ステアリング・ビットを前記複数の入力のうちの一つを表すビッ トで置き換える手段を更に有するメモリ・モジュール(600)。 22.請求項21に記載のメモリ・モジュール(600)において、各メモリ・バ ンクが複数のメモリ・デバイスを備え、各メモリ・デバイスがアクセス時間および サイクル時間を有しており、前記各メモリ・バンクは、前記複数のメモリ・デバイ スの前記アクセス時間およびサイクル時間に応じて前記メモリ・バンクの速度を 調整するための遅延手段を更に備えているメモリ・モジュール(600)。 23.請求項17に記載のメモリ・モジュール(600)において、前記第2ル ーティング・ネットワーク内の前記FIFOキュー構造体(311)が、パイプ ライン方式のメモリ部分を扱うのに十分な深さを有するメモリ・モジュール(6 00)。 24.請求項17に記載のメモリ・モジュール(600)において、前記第2ル ーティング・ネットワークがクロスバー・スイッチ(320)を更に備え、該クロ スバー・スイッチが、前記第2ルーティング・ネットワークの前記第1スイッチか ら受け取ったパケットをバッファリングするために前記第1スイッチに接続され たFIFOキュー構造体(311)を有するメモリ・モジュール(600)。 25.請求項24に記載のメモリ・モジュール(600)において、前記クロス バー・スイッチ(320)が、パケットの転送中にパケットを一時的に格納する ために使用される出力要求バッファを更に有するメモリ・モジュール(600) 。 26.請求項24に記載のメモリ・モジュール(600)において、前記パケッ トがメッセージ・ステアリング・ビットを有し、前記クロスバー・スイッチ(32 0)が、複数のメッセージ・ステアリング・ビットを前記複数のメモリ・バンクの うちの一つを表すビットで置き換える手段を更に有するメモリ・モジュール(6 00)。

Claims (1)

  1. 【特許請求の範囲】 1.マルチ処理システムにおける複数のCPUと共通メモリとの間でメッセージ の経路を設定するための相互接続ネットワークにおいて、 各メモリ・モジュールが、 複数の第1入力と、 前記複数の入力のそれぞれから複数のメモリ・バンクへのメッセージの経路 の設定に適合した第1ルーティング・ネットワークと、 前記複数のメモリ・バンクの前記それぞれから複数の第1出力へのメッセー ジの経路の設定に適合した第2ルーティング・ネットワークとを更に有する複数 のメモリ・モジュール、および、 各ネットワーク・モジュールが複数のメモリ・モジュールおよび複数のCPUに 接続された複数のネットワーク・モジュールであって、該各ネットワーク・モジュ ールが、 複数の第2入力と、 前記複数の入力のそれぞれから複数のメモリ・バンクへのメッセージの経路 の設定に適合した第3ルーティングネットワークと、 前記複数のメモリ・バンクのそれぞれから複数の第2出力へのメッセージの 経路の設定に適合した第4ルーティング・ネットワークとを更に有する複数のネ ットワーク・モジュールを備え、 前記メモリ・モジュールは、前記共通メモリのアクセス時間およびサイクル時 間に応じて前記メモリ・モジュールの速度を調整するための遅延手段を更に有す る相互接続ネットワーク。
JP52430494A 1993-04-30 1994-04-12 待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク Expired - Lifetime JP3599197B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US08/055,814 1993-04-30
US08/055,814 US5623698A (en) 1993-04-30 1993-04-30 Memory interconnect network having separate routing networks for inputs and outputs using switches with FIFO queues and message steering bits
PCT/US1994/003994 WO1994025920A1 (en) 1993-04-30 1994-04-12 Variable latency processor to memory interconnect network

Publications (2)

Publication Number Publication Date
JPH08511886A true JPH08511886A (ja) 1996-12-10
JP3599197B2 JP3599197B2 (ja) 2004-12-08

Family

ID=22000327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP52430494A Expired - Lifetime JP3599197B2 (ja) 1993-04-30 1994-04-12 待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク

Country Status (5)

Country Link
US (1) US5623698A (ja)
EP (1) EP0696367B1 (ja)
JP (1) JP3599197B2 (ja)
DE (1) DE69422914T2 (ja)
WO (1) WO1994025920A1 (ja)

Families Citing this family (66)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19754466A1 (de) * 1997-12-08 1999-06-10 Czech Christian B Mehrprozessorsystem mit Zellenvermittlung zur Topologie-invarianten, nachrichtenorientierten Kommunikation
US6230229B1 (en) 1997-12-19 2001-05-08 Storage Technology Corporation Method and system for arbitrating path contention in a crossbar interconnect network
US6138219A (en) * 1998-03-27 2000-10-24 Nexabit Networks Llc Method of and operating architectural enhancement for multi-port internally cached dynamic random access memory (AMPIC DRAM) systems, eliminating external control paths and random memory addressing, while providing zero bus contention for DRAM access
US6064647A (en) * 1998-05-13 2000-05-16 Storage Technology Corporation Method and system for sending frames around a head of line blocked frame in a connection fabric environment
US7106728B1 (en) 2000-05-01 2006-09-12 Industrial Technology Research Institute Switching by multistage interconnection of concentrators
US6591285B1 (en) * 2000-06-16 2003-07-08 Shuo-Yen Robert Li Running-sum adder networks determined by recursive construction of multi-stage networks
US6557070B1 (en) 2000-06-22 2003-04-29 International Business Machines Corporation Scalable crossbar switch
US7609695B2 (en) * 2001-06-15 2009-10-27 Industrial Technology Research Institute Optimizing switching element for minimal latency
US7103059B2 (en) * 2001-06-15 2006-09-05 Industrial Technology Research Institute Scalable 2-stage interconnections
US7548882B1 (en) * 2002-11-05 2009-06-16 Trading Technologies International, Inc. System and method for determining implied market information
US7099980B1 (en) * 2003-12-18 2006-08-29 Emc Corporation Data storage system having port disable mechanism
JP4453915B2 (ja) 2005-03-18 2010-04-21 富士通株式会社 クロスバー装置、制御方法及びプログラム
US8145851B2 (en) 2005-09-07 2012-03-27 Sony Corporation Integrated device
US7991926B1 (en) * 2006-02-22 2011-08-02 Marvell Israel (M.I.S.L) Ltd. Scalable memory architecture for high speed crossbars using variable cell or packet length
JP4497184B2 (ja) * 2007-09-13 2010-07-07 ソニー株式会社 集積装置およびそのレイアウト方法、並びにプログラム
US8473657B2 (en) * 2009-03-23 2013-06-25 Lsi Corporation High speed packet FIFO output buffers for switch fabric with speedup
US8407707B2 (en) * 2009-05-18 2013-03-26 Lsi Corporation Task queuing in a network communications processor architecture
US8489792B2 (en) * 2010-03-12 2013-07-16 Lsi Corporation Transaction performance monitoring in a processor bus bridge
US8576862B2 (en) 2010-05-18 2013-11-05 Lsi Corporation Root scheduling algorithm in a network processor
US8514874B2 (en) * 2010-03-12 2013-08-20 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US8869150B2 (en) 2010-05-18 2014-10-21 Lsi Corporation Local messaging in a scheduling hierarchy in a traffic manager of a network processor
US8615013B2 (en) 2010-05-18 2013-12-24 Agere Systems Llc Packet scheduling with guaranteed minimum rate in a traffic manager of a network processor
US8910171B2 (en) * 2009-04-27 2014-12-09 Lsi Corporation Thread synchronization in a multi-thread network communications processor architecture
US8321385B2 (en) * 2010-03-12 2012-11-27 Lsi Corporation Hash processing in a network communications processor architecture
US8539199B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Hash processing in a network communications processor architecture
US8352669B2 (en) * 2009-04-27 2013-01-08 Lsi Corporation Buffered crossbar switch system
US8677075B2 (en) 2010-05-18 2014-03-18 Lsi Corporation Memory manager for a network communications processor architecture
US8537832B2 (en) * 2010-03-12 2013-09-17 Lsi Corporation Exception detection and thread rescheduling in a multi-core, multi-thread network processor
US8705531B2 (en) 2010-05-18 2014-04-22 Lsi Corporation Multicast address learning in an input/output adapter of a network processor
US8515965B2 (en) 2010-05-18 2013-08-20 Lsi Corporation Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
US8499137B2 (en) * 2010-03-12 2013-07-30 Lsi Corporation Memory manager for a network communications processor architecture
US8505013B2 (en) * 2010-03-12 2013-08-06 Lsi Corporation Reducing data read latency in a network communications processor architecture
US8565250B2 (en) 2010-05-18 2013-10-22 Lsi Corporation Multithreaded, superscalar scheduling in a traffic manager of a network processor
US8869151B2 (en) 2010-05-18 2014-10-21 Lsi Corporation Packet draining from a scheduling hierarchy in a traffic manager of a network processor
US8683221B2 (en) 2010-05-18 2014-03-25 Lsi Corporation Configurable memory encryption with constant pipeline delay in a multi-core processor
US8837501B2 (en) 2010-05-18 2014-09-16 Lsi Corporation Shared task parameters in a scheduler of a network processor
US9300597B2 (en) 2009-04-27 2016-03-29 Intel Corporation Statistics module for network processors in virtual local area networks
US8943507B2 (en) * 2009-04-27 2015-01-27 Deepak Mital Packet assembly module for multi-core, multi-thread network processors
US9727508B2 (en) 2009-04-27 2017-08-08 Intel Corporation Address learning and aging for network bridging in a network processor
US8848723B2 (en) 2010-05-18 2014-09-30 Lsi Corporation Scheduling hierarchy in a traffic manager of a network processor
US8917738B2 (en) 2009-04-27 2014-12-23 Lsi Corporation Multicasting traffic manager in a network communications processor architecture
US8638805B2 (en) 2010-05-18 2014-01-28 Lsi Corporation Packet draining from a scheduling hierarchy in a traffic manager of a network processor
US8869156B2 (en) 2010-05-18 2014-10-21 Lsi Corporation Speculative task reading in a traffic manager of a network processor
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US8547878B2 (en) 2010-05-18 2013-10-01 Lsi Corporation Modularized scheduling engine for traffic management in a network processor
US8935483B2 (en) * 2009-04-27 2015-01-13 Lsi Corporation Concurrent, coherent cache access for multiple threads in a multi-core, multi-thread network processor
US9183145B2 (en) 2009-04-27 2015-11-10 Intel Corporation Data caching in a network communications processor architecture
US8761204B2 (en) 2010-05-18 2014-06-24 Lsi Corporation Packet assembly module for multi-core, multi-thread network processors
US8910168B2 (en) 2009-04-27 2014-12-09 Lsi Corporation Task backpressure and deletion in a multi-flow network processor architecture
US8619787B2 (en) 2010-05-18 2013-12-31 Lsi Corporation Byte-accurate scheduling in a network processor
US9160684B2 (en) 2009-04-27 2015-10-13 Intel Corporation Dynamic updating of scheduling hierarchy in a traffic manager of a network processor
US8949578B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Sharing of internal pipeline resources of a network processor with external devices
US9218290B2 (en) 2009-04-27 2015-12-22 Intel Corporation Data caching in a network communications processor architecture
US8949500B2 (en) 2011-08-08 2015-02-03 Lsi Corporation Non-blocking processor bus bridge for network processors or the like
US8874878B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US8873550B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Task queuing in a multi-flow network processor architecture
US8843682B2 (en) 2010-05-18 2014-09-23 Lsi Corporation Hybrid address mutex mechanism for memory accesses in a network processor
US8868889B2 (en) * 2010-03-12 2014-10-21 Lsi Corporation Instruction breakpoints in a multi-core, multi-thread network communications processor architecture
US9152564B2 (en) 2010-05-18 2015-10-06 Intel Corporation Early cache eviction in a multi-flow network processor architecture
US9755947B2 (en) 2010-05-18 2017-09-05 Intel Corporation Hierarchical self-organizing classification processing in a network switch
US9485200B2 (en) 2010-05-18 2016-11-01 Intel Corporation Network switch with external buffering via looparound path
US20120066471A1 (en) * 2010-09-14 2012-03-15 Advanced Micro Devices, Inc. Allocation of memory buffers based on preferred memory performance
US9065761B2 (en) 2011-07-25 2015-06-23 Intel Corporation Packet reassembly processing
US9870339B2 (en) * 2015-06-26 2018-01-16 Intel Corporation Hardware processors and methods for tightly-coupled heterogeneous computing

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3676852A (en) * 1970-07-20 1972-07-11 Ibm Multiple program digital computer
US4412303A (en) * 1979-11-26 1983-10-25 Burroughs Corporation Array processor architecture
US4710868A (en) * 1984-06-29 1987-12-01 International Business Machines Corporation Interconnect scheme for shared memory local networks
US4630260A (en) * 1985-06-27 1986-12-16 At&T Bell Laboratories Self-routing multipath packet switching network with sequential delivery of packets
JPS6252667A (ja) * 1985-09-02 1987-03-07 Hitachi Ltd ベクトルプロセツサ
US5021945A (en) * 1985-10-31 1991-06-04 Mcc Development, Ltd. Parallel processor system for processing natural concurrencies and method therefor
US4811210A (en) * 1985-11-27 1989-03-07 Texas Instruments Incorporated A plurality of optical crossbar switches and exchange switches for parallel processor computer
US4809232A (en) * 1986-12-16 1989-02-28 The United States Of America As Represented By The United States Department Of Energy High speed, very large (8 megabyte) first in/first out buffer memory (FIFO)
US4821034A (en) * 1987-02-06 1989-04-11 Ancor Communications, Inc. Digital exchange switch element and network
EP0325384B1 (en) * 1988-01-15 1993-09-29 Quantel Limited Data processing and communication
US5008812A (en) * 1988-03-18 1991-04-16 Digital Equipment Corporation Context switching method and apparatus for use in a vector processing system
US4952930A (en) * 1988-11-18 1990-08-28 International Business Machines Corp. Multipath hierarchical network
US5018129A (en) * 1989-03-09 1991-05-21 At&T Bell Laboratories Dual rail dilated switching networks
US5287491A (en) * 1989-04-10 1994-02-15 International Business Machines Corporation Network rearrangement method and system
EP0392184A3 (en) * 1989-04-12 1992-07-15 International Business Machines Corporation Hierarchical memory organization
US5088091A (en) * 1989-06-22 1992-02-11 Digital Equipment Corporation High-speed mesh connected local area network
US4970418A (en) * 1989-09-26 1990-11-13 Apple Computer, Inc. Programmable memory state machine for providing variable clocking to a multimode memory
WO1991005375A1 (en) * 1989-09-29 1991-04-18 Syracuse University Method and apparaus for simulating an interconnection network
US5179702A (en) * 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
EP0477405B1 (de) * 1990-09-27 1996-11-27 Siemens Nixdorf Informationssysteme Aktiengesellschaft Kommunikationssystem zum Übertragen von Nachrichten zwischen jeweils zwei Einheiten
DE69106384T2 (de) * 1990-10-19 1995-08-10 Cray Research Inc Skalierbares parallel-vektorrechnersystem.
JPH0776942B2 (ja) * 1991-04-22 1995-08-16 インターナショナル・ビジネス・マシーンズ・コーポレイション マルチプロセッサ・システムおよびそのデータ伝送装置
US5321813A (en) * 1991-05-01 1994-06-14 Teradata Corporation Reconfigurable, fault tolerant, multistage interconnect network and protocol

Also Published As

Publication number Publication date
EP0696367A1 (en) 1996-02-14
US5623698A (en) 1997-04-22
EP0696367B1 (en) 2000-02-02
DE69422914D1 (de) 2000-03-09
WO1994025920A1 (en) 1994-11-10
JP3599197B2 (ja) 2004-12-08
DE69422914T2 (de) 2000-10-05

Similar Documents

Publication Publication Date Title
JPH08511886A (ja) 待ち時間が可変の、プロセッサをメモリに接続する相互接続ネットワーク
CN101194245B (zh) 具有宽寄存器组体系结构的分组处理器
US10282338B1 (en) Configuring routing in mesh networks
US5797035A (en) Networked multiprocessor system with global distributed memory and block transfer engine
Duato et al. Interconnection networks
US8737392B1 (en) Configuring routing in mesh networks
US8151088B1 (en) Configuring routing in mesh networks
Leighton Methods for message routing in parallel machines
EP1370966B1 (en) A novel massively parrallel supercomputer
US5675736A (en) Multi-node network with internode switching performed within processor nodes, each node separately processing data and control messages
US7673118B2 (en) System and method for vector-parallel multiprocessor communication
US20050204118A1 (en) Method for inter-cluster communication that employs register permutation
JP2010218364A (ja) 情報処理システム、通信制御装置および方法
Lang et al. Nonuniform traffic spots (NUTS) in multistage interconnection networks
Iyer et al. Switch cache: A framework for improving the remote memory access latency of CC-NUMA multiprocessors
CA2426422C (en) Scaleable interconnect structure for parallel computing and parallel memory access
Shoemaker et al. Numesh: An architecture optimized for scheduled communication
Multiprocessors A cost-effective combining structure for large-scale shared-memory multiprocessors
Buzzard High performance communications for hypercube multiprocessors
Hsu Performance measurement and hardware support for message passing in distributed memory multicomputers
LmuVERSITY MONTRÉAL. QUEBEC. C-4N. 4DA
Shoemaker An optimized hardware architecture and communication protocol for scheduled communication
Sharif et al. Design and simulations of a serial-link interconnection network for a massively parallel computer system
Yu et al. A Case for Hierarchical Rings with Deflection Routing: An Energy-Efficient On-Chip Communication Substrate
Le Configurable networks

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20040324

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20040517

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20040624

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

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

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20090924

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20100924

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20110924

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20110924

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20120924

Year of fee payment: 8