JPH04503416A - データフローマルチプロセサシステム - Google Patents

データフローマルチプロセサシステム

Info

Publication number
JPH04503416A
JPH04503416A JP2500668A JP50066890A JPH04503416A JP H04503416 A JPH04503416 A JP H04503416A JP 2500668 A JP2500668 A JP 2500668A JP 50066890 A JP50066890 A JP 50066890A JP H04503416 A JPH04503416 A JP H04503416A
Authority
JP
Japan
Prior art keywords
token
value
data processing
processing system
instruction
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.)
Pending
Application number
JP2500668A
Other languages
English (en)
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 JPH04503416A publication Critical patent/JPH04503416A/ja
Pending 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/76Architectures of general purpose stored program computers
    • G06F15/82Architectures of general purpose stored program computers data or demand driven
    • G06F15/825Dataflow computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4494Execution paradigms, e.g. implementations of programming paradigms data driven

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるため要約のデータは記録されません。

Description

【発明の詳細な説明】 データフローマルチプロセサシステム (発明の背景) 現在のデータ処理システムは、それらが1列処理化を使用するために選ぶレベル によ、り分類されることができる。システム内の並列化の程度はその固有の特性 よりもどのようにシステムがグログシムされるかより大いに左右される。単一イ ンストラクション単一データストリーム(S工SD )システムにおいては、唯 一っのインストラクションが一時に実行され、かつ唯一っのデータストリームが 使用される。そのようなシステムにおいてインストラクションの実行時の並列処 理用は最小でおる。単一インストラクション多重のデータストリーム(S工MD  )システムでも一時に単一のイン。
ストラクションを実行する。しかしながら、それらは多重データストリームを有 し、かつ多数のオペランド上で並列に慟〈。結果として、これらのシステムはS 工SDシステムよりも実行における高いレベルの並列処理を経験する、より高い レベルの並列処理は多重−インストラクション−多数の一データー流(、MIM D )方式において両データ内にて実現されるし、指示は平行に処理される。
MIMD方式は更に方式が並列処理を抽出するレベルにより分類さnる。特に、 該システムは平列に実施する計算のユニットの寸法により分類されうる。粗い粒 状のシステムは計算の比較的大きなユニットが並列に実施されるものである。計 算のユロットが並列に実施されるが、実行は未だ各ユニット内でシーケンス的に 処理する。微細粒システムは、逆に、並列に計算の小さなユニット1−実行する 。微細粒システム内の並列に実行される計算のユニットは粗い粒の方式よりもず っと小さいので、より少なtn操作はシーケンス的に実行され、かつ並列処理用 の固有のポテンシャルはずっと大きい。
この分類計画を与えられて、並列活動用の最大の固有ポテンシャルはM工■シス テム次第である。更に、MIMD方式の中で、並列活動用の最大固有ポテンシャ ルは微細粒システムにより発見される。該システムは計算の小型のユニットヲ有 し、簡単な計算を与える。
単に、計算の微細粒上ICII<処理要素は、マルチグロセサンステムに容易に 構成される。前記微細粒システムを効率的に履行する問題は、しかしながら、シ ステムの並列活動の大量の量を効果的に制御することであり、特に仕事同志の通 信における劇的な上昇における並列主義においての増大からである。並列主義に おける増大は又同期問題を計画する結合計算を表わす。
M工MDマシンにてデートするための努力は緩やかな勇気づける結果のみを創出 した。概して、前記マシンは、しみ込まぜる並列主義のための一次的な道具とし て、ソフトウェアを使用した。前記ソフトウェアをプログラムするのに、プログ ラムはどこに並列主義を備えるかを決定したし、マシンによりプログラムの雛し め相互活動のために計算することを要した。結果として、グログラマーはいかに 並列実行をなしとげるかを決定するために負目の主力taんだ。これら決定の複 雑で混同する性質を与えて、MxMDマシ/は、はとんどのユーザーにアピール しないことを実証した。更に、でき上ったソフトウェアはデバッグするのが困龜 な傾向にあり、信頼性がなくかつ、卓上型ではない。事をより悪くするために、 これらマシンはマシンを操作スるに必要な努力のレベルにも拘らず期待した程働 かなかったし、データフローマシンは、データ処理システム内のデータフローの モデルを実行するために試ミる微細粒マシンの特別のパイプインである。これら モデルはデータフロー図として矧られる。データフロー図はノード(nodes  )とエツジ(ecLges )から成る。
ノードは指示を表わし、エツジはデータ依存性を表わす。よr)精密には、ノー ドは演算器(operafor )を表わし、エツジはオペランドラ表わす。デ ータフローマシンはオペランド(operana ) f処理して働く。
データフロー図は実行の部分オーダーのみを課する。
インストラクションは図が必要とするオペランドが入手可能な時はいつでもデー タフローマシン内で実行される。従ってデータフローマシンは、シーケンシャル マシン内にて見つかる実行の剛性な総オーダーにより、無理をしない。この弾力 性によりデータフローマシンは非同期的にインストラクションの実行を計画する 。
逆に、フオンノイマン(Van、 Noumarn )モデルに基づく、シーケ ンシャルマシンは、インストラクション目盛がインストラクションを指した時に のみ、インストラクションを実行する。非同期的計画の主利点は潜在的並列主義 のより大きい露呈である。
データフローマシンは更に二つの範躊に分類できる。
即ちダイナミックとスタティックである。ダイナミックデータフローマシンは、 動的に機能の実証(Lr5staxce )を計数できるようなマシンである。
即ち、機能の実証に必要なメモリは予め計画される必要はなく、むしろ機能を実 施したときに計数される。j1!IC、スタティックデータフローマシンは、機 能の実証を静的にのみ計算できる。前記の如く、マシンは実行前に機能の各実証 に必要な記憶(storage ) t’予め計画することを要する。
マサチューセッツ・インステイテユート・オプ・テクノロジー(Massach usetts工n5t1tute ofTechnology)にて開発された タグドーTokenデータフローアーキテクチャ−(Tagge4−Token  Data Flow Architecture )はダイナミックフローマ シンの先端的例である。それはアービン、S 、A、プローブスト及びG−に、 ”f −(ArvincL。
S、A、 Brobst、 G、に、 Maa )著の1988年コンピュータ ーサイエンス用のM工T研究所のテクニクカルリポートC8Gメモの”M工Tタ グトート−クンデータフロープロジェクトの評価”に記載しである。
タグトド−クンデータフローマシンtawyfクスト識別子が属する機能の実行 を特定するコ汗りスト識別社より各オペランドをタグして、機能の同時適用を許 す。
タグトート−クンデータフローアーキテクチャにおいて、タグ(tag )とオ ペランドの組み合せはトークン(token ) を構成する。二つのトーク/ のタグは、それらが同じインストラクションに予定している場合には、マツチレ なければならなり0従って、タグトド−クンアーキテクチャは、タグを正しくマ ツチングする手段を有しなければならない。連結するメモリはマツチングメカニ ズムとして信頼された。
(発明の要約) 望ましい実施例のデータ処理システムは、少なくとも一個の処理要素と複数個の メモリロケーションとから成る。処理要素は4段の処理パイプラインを含む。
第1段はトークン上にて働くメモリからのインストラクションを掴む。バイ1ラ イ/の第2段は掴えたインストラクションによシ示される如くのトークン上にオ ペランドマツチングを実行する。第3段は掴えたインストラクションにより特定 されるALU操作を実行してトークン上に処理を続行する。最後に、バイグライ ンの第4段はALU操作と掴えたインストラクションの結果から一個の新しいト ークン又は複数のトークンを形成する。このデータ処理システムは、望ましくは 、多重プロセサデータフロー処理システムである。
上記に参照したトークンは二つのフィールドから成るデータ目的である。
第一のフィールドは、作動フレームの始期にポインタと、インストラクションに ポインタを含むタグである。作動フレームは、インストラクションのブロックを 実行するに必要な情報をメモリするために使用されるメモリロケーションの連続 的ブロックである。特に、フレームは、同じデータフローノードに向うオペラン ドをマツチするために出合いグラウンドとして働く。
インストラクション〆インタ(pointer )は、所与のトークンが処理要 素のパイプラインにおりて処理される時に実行されるインストラクションにイン ストラクションする。トタンの第2フイールドは単にデータ値でるる。データフ ローモデルの定義にて、このデータ値は典型的にオペランド値t″表わす。
各処理要素は処理バイグラインばかりでなく、トークンバッファー(token  buffer ) t−も含む。このバッファーは、トークンが処理バイグラ イン内にて処理されるように待ってbる間に、メモリされる。各処理要素はそれ 自身のトークンバッファーを有する。
更に処理要素の各々は、その相手方と並列に実行するのが望ましい。トークンが より低論優先スタックを始める前に、パイプライン用のより高い優先スタックを 残すように、優先される複数個のスタックから、トークンバッファは放ることが 望ましい。バッファはスタックとして組織されているので、バッファは先出しく LIFO)最後入ペース上に慟〈。しかしながら、バッファはこの態様で働く必 要がないことに留意すべきでラシ、むしろバッファは先出し先入(F工PO)ベ ースで働く。しかしながらLIFOはよ夕効率的な実行を与える。
上述の如く、作動フレームは、同じデータフローノードに向けられるオペランド のためのオペランドのマツチングのための場所として働く。
作動フレームメモリロケーションは、それらの構造の故に、オペランドマツチン グを与えることができる。
特に、作動フレーム内の各メモリロケーションは、メモリロケーションの現在状 況を示す状況フィールドと、値を保泣する僅フィールドを含む。状況フィールド は多くの異るタイプ情報を示す。例えば、それは値フィールド内の値のデータタ イプを示す。同様に、それは値が値フィールド内にメモリされたかを示す。それ はマツチング機能を果すために利用されるインストラクションのこの第2のタイ プでるる。
マツチング機能は、データ処理方式内の数学的/論理的インストラクションの実 行の重要な部分である。
数学的/論理的インストラクションの実行のコース1屯インストラクシヨンを掴 むことにより始まる。一度インストラクションを掴まえると、インストラクショ ンにより示されたメモリロケーションはアクセスされる。
典型的には、このメモリロケーションは作動フレーム内にある。一度メモリロケ ーションがアクセスされると、状況フィールドは試論され、そして値フィールド は、数学的/論理的インストラクションと、状況フィールド内の現在値により決 定される如くに作動する。
一度状況フイールドと僅フィールドが作動されると、数学的/論理的インストラ クションは実行されるか又は、実行されず、それにメモリロケーションをインス トラクションとの現在状況による。
状況フィールドと値フィールド上に実行される操作は、トークンによりエンコー ドされるオペランドがメモリロケーションに到着する時間に大巾に決定される。
イベントの典型的コースにおいて、インストラクションの第1のオペランドは、 メモリロケーションが空のときに、メモリロケーション内にメモリされる。それ が一度メモリロケーション内にメモリされると、インストラクションのオペラン ドがメモリロケーション内にメモリされることを反影するように、状況フィール ドは変わる。次いで、インストラクションの第2オペランドが受領される。この 第2のオペランドをロケーション決めすると、第1オペランドが内にメモリされ たかを見るために、メモリロケーションはチェックされる。第1オペランドが既 にメモリロケーション内にメモリされるので、そt′Lはメモリロケーションか ら読み出され、更に処理されるために第2の可能なオペランドと共に送られる。
メモリロケーションから第1の可能なオペランドを除去した後に、メモリロケー ションの状況がメモリロケーションが空であることを示すために変えられる。上 記のアプローチはダイナミック操作に適用できる。しかしながら、単位操作がイ ンストラクションにより特定されると、現在のトークンのオペランドの値は、メ モリロケーションの内容を試験する必要なしに、処理要素に送られる。
上述の如く、各トークンはそのタグフィールド内にインストラクションポインタ を含む。トークンがパイプラインの第1段(即ち、インストラクション掴み段) に入ると、このポインタは特定のインストラクションを探すために利用される。
各インストラクションはオペランドをマツチングするためにマツチングルーhf 含む。各インストラクションは又、マツチングルールが作動するストレージロケ ーションの有効アドレスを計算するためのルールを含む。更に、インストラクシ ョンは、データ処理システムのALUによp実行されるALU操作を含み、最後 にインストラクションの実施から来る新しいトークンを形成するためのトークン 形成ルールを含む。二値及び単位(−値)マツチングルールは上述の如く論じた が、スティッキング(stickxn6)マツチングルールは未だ論じてない。
スティッキングマツチングルールは、ロケーションの状況フィールドが他の僅が 存在しないことを示す場合に、ロケーションの値フィールド内に、トークンの値 を書くためのシステムを述べる。システムが前記値を書くと、システムは値が今 存在することを示すために状況フィールドロケーションを変更する。他方、トー クンの値が定数であると、この値は値フィールド内に書きこ′!j、るが、状況 フィールドは、正規の値が存在するが、むしろ定数値が存在することを示すため に、変更される。正規値が埴フィールド内に存在し、定数値が次いで到着すると 、定数値は正規値のために交換される。
更に、定数値が埴フィールド内に8@こまれると、定数(iIは明示的にクリア される迄除去されない。そのポイント後のメモリロケーションへの全てのアクセ スに単に、メモリロケーションから定数値を読むだけである。
インストラクションによp%定される如くメモリロケーションの有効アドレスを 計算するルールは三つの可能なアドレスアプローチの一つを選択する。これらオ プションの第一において、メモリロケーションは、インスト2クシヨン内に含ま れるオフセットによシ示される絶対アドレスにて特定される。第二のオプション において、メモリロケーションは、インスト2クシヨン内に含まれるオフセット によりタグオフセットの作動フレームポインタにより特定されるアドレスにロケ ーションしたアドレスである。第三のオプションは更に他のアプローチを利用す る。この最後のアプローチにおいて、メモリロケーションは、インストラクショ ン内に含まれるオフセットにより、インストラクションオフセットへのポインタ によシコイントされたアドレスにある。
・ インストラクションによシ示されたALU操作は、オペランド上にALUに より実行される操作が何であるかをシステムに述べる。例えば、AL[J操作が 、パイプラインの、ALJl操作段が所与のトークン上に働くときに追加操作と して特定されるのでそれに通過した二個のオペランドを加える。インストラクシ ョンによシ特定される最後のルールはトークン形成ルールである。このルールは 、既に実行された操作から新しい出カドークンをいかに形成するかを、システム (system )に述べる。このルールは、トークン形成段におけると共鳴A Lσ操作のタグ形成部分内に利用される。
処理パイプラインは例外を取扱う能力を含むことが望ましい。使用される一つの 方法は、トークンがバイグラインに入るに連れて記録されたトークンと連結する 各動作を有することである。例外が起ると、レジスタ(register )内 の値は、例外が解決される迄、変らない。例外の解決は、例外取扱いトークンを 出して実施される。この例外取扱−トークンはしゃ断されないのが望ましい。並 列に働く処理要素間に何ら衝突がないことを保証するために、各処理要素は、作 動フレームエンコードがその処理要素と共にメモリされるメモリの所与の域に与 えられるのが望まし論。トークンは処理要素を示し、そのために、それはタグ内 に処理要素指定をエンコードして予定しておく。
(図面の簡単な説明) 本発明の前記及び他の目的、特徴及び利点は、添付図面に示す如く、本発明の望 ましい実施例の下記の特定記述から明らかとなろう。
第1図はサンプルデータフロー図である。
第2図はデータフローマンンの主要部分を示す。
第3図はデータフローマンンのグロセサの主要部分を示す。
第4図はトークン、インストラクション及び作動フレーム間の関係を示す。
第5図は数学的マツチングルール用の状況転位図を示す。
第6図はステインキーマッチングルール用の状況転位図を示す。
第7図は三つの基礎的トークン形底ルールの効果を示す。
第8図はバイグラインのトークン形成段の主要部分を示す。
第9図は処理要素間のメモリの間仕切計画を示す。
第10図はインターリ−ビン戦略を示す。
第11図はトークンのフィールドを示す。
第12図はタグのフィールドを示ス。
第13図はマツプフィールドのサブフィールドに示し、かついかにインターリ− ピング戦略がエンコードされるかを示す。
第14図はインストラクションのフィールドを示す。
第15図はデコーディング戦略を示す。
(好適実施例の説明) 本発明の好適実施例はデータフローマルチプロセサシステムヲ含む。前述の如く 、データフローシステムはデータフロー図を実行する。サンプルデータフロー図 を第1図に示す。特に、第1図は(AXB)+(CXD)用のデータフロー図を 示す。オペランド(即ち、A、B、C及びD)はエツジとして表わされ、オペラ ンド(即ち、×及び+)はノードとして表わされる。
ノード10は乗算を表わす。そのノード10は2個の入力エツジ14と16t− 有し、それらI’L AとBで夫々表わされる。ノード10からの出力エツジ1 8は値A×Bを有する。同様に、乗算を表わすノード12は、入力エツジ20と 22t−有し、それらはCとDで夫々表わされる。出力エツジ24は値CXI) i有する。次いでこれらのノード10と12からの2個の出力エツジ18と24 は力り算ノード26に入る。その結果の出力エツジ28は(AxB)+ccxD )t−iゎf。
伝統的なシーケンシャルマシンにおいてはノードにより表わされる演算の各々は 順番に実行される。第1図に示した例(Cおいて、マシンは先ずAXBを計算し 次いでCXI)を計算し、最後に積AXB+CXDを計算する。しかしながら、 オペランドが使用可能ならば、そのような順番を課す理由はな−、従って、並列 処理データフローマシンにお論て、オペラン)”、A、B。
C及びDが使用可能な場合には、演算AXBとCXDは同時に実行される。その 結果の積は次いで加算される。このように演算することによシブ−タフローマシ ンは前記演算に課せられた任意の順番を、それら自身の演算により課せられた順 番に置き換える。
本発明の好適実施例の主要部分を第2図に示す。特に、本発明は複数個の処理要 素3とグローバルメモリユニット2′f、含む。各処理要素はメモリ4の割当て られた領域と関連付けられている。論理回路から成る相互接続ネットワーク1は 、グローバルメモリユニット2と処理要素3の間と共に、処理要素3間の通信を 行なうために設けられている。各処理要素3はグローバルメモリユニット2のい ずれもアクセスすることができ、他の処理要素3と並列に動作する。
第3図は典型的な処理要素3の詳細を示す。第3図から明らかなように、各処理 要素3は処理パイプライン36を含む。又、処理を待つトークンを格納するため のトークンキュー34が含まれる。グローバルメモリの割当られたローカル部分 4は、活性フレーム45と処理用のコー)F32を格納するために割当てられる 。
例外取扱い能力を提供するために、例外ハンrラー43と一組のレジスタ4が、 処理要素3内に設けられメモリ4は7オン・ノイマンモデルに従って構成された 伝統的マシンのメモリとはつきりと区別される。
値を単に格納する代りに、本発明のメモリロケーションの各々は二つのフィール ドから成る。即ち存在フィールドと値フィールrである。本発明のメモリ構成は 意義がある。理由は、それが一般的なメモリーは値を格納するためのロケーショ ンにすぎないという一般的観点を変えるからである。本発明においてメモリ4の 動的に割当部分は、存在状態と一つの値両方を有する。
存在状態は値の意義に影響を与えることができると共に、その値についてのイン ストラクションの実行をも変える。更に、存在フィールドは値フィールドから独 立して処理されることができる。メモリのこのような設計によシ後述からよシ明 らかとなるように、よシパワフルな道具となる。
メモ!j4は活性7レーム45、ヒーゾストレーシ6及びツー2部32を格納す るために使用される。代わりに、コーv32と活性フレーム45用に別のメモリ が設けられてもよい。活性フレーム45は機能の実施又はコードブロックに必要 な全てのロケーションと見なすことができる。それらは本発明において特に重要 な役割を演じる。理由はそれらがマツチングタグを有するトークンが出会う作業 メモリを構成するからである。トークンは以下に詳述する。
本発明において、トークン20(第3図)はオ(ランr値ばかりでなく、それら が属するインストラクションの特定の活性化を識別する修飾されたオペランrと 同様である。特にトークン30は、タグ(C05p )と値(v)とから成るタ プル(tuple )と見なされることができる。
トルクン30は、従って、タプル、(C−8p、V )である。タグは、トーク ンが表わすオペランドと関連するインストラクションと活動を識別する。タグは 三つのフィールドから成る。コンチクストポインタ(C)。
ステートメント番号(S)、及びボートインディケータ(p)である。コンチク ストポインタ(c)は、トークンにより表わされるオペランばかマツチされる活 性化フレーム45の先頭を示す。ステートメント番号(S)は、オペランドのイ ンストラクションが格納された、特定メモリロケーションを示し、ボート(p) は、トークンがインストラクションを表わすノードの左入力エツジ又は右入力エ ツジに入るかを示す。
第3図の処理要素2は、おそらくトークン処理システムとして最も容易に見なさ れるものである。それはトークン30を処理し、インストラクション32を実行 させる。データフローモデルによれば、このシステムはオペランドを処理し、デ ータフロー図を実行する。
システムは停止を告げられる迄オペランげの処理を続ける。より正確には、トー クンは、パイプライン36内で実行される動作のプロセスK ) リガをかける 。
システムの動作中に、各処理要素2内では、トークン30はトークン・キュー3 4を離れ、処理パイプライン36に入る。多数のトークンは一般にある時刻には パイプラインのどこかのステージに存在する。そのようなトークンはパイプライ ン内で他のトークンと並列に処理される。故に、このパイプラインは本発明内の 並列処郵第二のレベルを表わし、これはマルチプロセッサの同時計算に貢献する 並列処理とははつき)と異なる。
一個以上のトークン30が一時にパイプラインに入り得るが、概して一個のトー クンのみが一時にパイプラインに入る。パイプライン36に同時に入シ得るトー クン30の数は、採用された特定の設計の多重処理能力によシ決まる、即ち、各 処理要素は並列に多数のトークンの演算を行なうことができる。処理パイプライ ン36の第一ステージはインストラクション・7エツチ・ステージ38である。
このステージでは、システムは入カドークン30のタグに含まれるステートメン ト番号を参照する。このステートメント番号(s)は、のメモリロケーションに 対応する。ステートメント番号が決定された後、システムはそのロケーションの インストラクションを取り出す(第4図の矢印31にて指示されているメモリロ ケーションヲ参照)。
本発明のインストラクションはタプルと見なされことができる。特に、インスト ラクションは(E、r、W、A。
T、a)に等しく、ここで、Erはマツチングルールが働く格納ロケーションの 有効アrレスを決定すb方法を特定し、Wはそのマツチングルールを特定し、A はALUの動作を特定し、T、dはトークン形成ルールを特定する。タプルのこ れら要素は別のオペコードによジエンコードされる必要はなく、むしろ全ては後 述される単一のオペコードによ)エンコードされてもよい。
好適実施例では、インストラクションは多くて二個のオペランドに限定されてい る。このようKして、二個以上のオペランドを伝統的に有するインストラクショ ンは、多くて2個のオペランドを有するインストラクションの組み合せに細分化 されなければならない。
インストラクション32が一旦フエッチされると、インストラクション32から のトークン30と情報は、パイプライン36のオペランド・マツチング・ステー ジ40に通される。このステージでは、システムは同じノーv宛のオペランIF (、t?−)に関してのみ異なる似たタグを有するもの)をマツチさせるように 調べる。
このステージは、インストラクション32の実行に必要な全てのオにランドが可 能状態・にあるか否かをシステムがチェックするための部分である。オペランド が可能状態にあるならば、インストラクション32は実行される。もしそれらが 不可能な状態にあるならば、トークンにより特定されたオペランrは一般にマツ チングロケーション内に書き込まれる。何が起こるかの特定事項は以下に詳述す る。
次いで処理はパイプライン36の次のステージ内にて続く。ALU演算ステージ 42はタグ形成器42AとALU 42 Bから成る。一般に、タグ形成器42 Aは出カドークンのタグ部を形成し、ALU42Bは出力トーク/の値部を形成 する。このステージ42では、インの結果に対する新しいタグがタグ形成器42 Aによシ形成される。タグ形成器42AとALo 42 Bは全体の性能をバラ ンスさせるように、更にサブステージにパイプライン化されてもよい。タグは実 行されるインストラクションのトークン形成ルールに従って形成される。このス テージ42からの出力は、トークン形成ステージ44に入り、そこでは出カドー クンが形成され一般に演算の結果を運ぶ、結果的出カドークンは、その後多くの 異なるロケーションに伝播する。第一に、トークンはトークン・キュー34に又 はパイプライン36に処理要素2内を伝播することができる。第二に、トークン は他の処理要素3へ伝播し、第三に、トークンはメモリユニット2に伝播する。
トークンがどこに伝播するかは各化カドークンのタグ部によシ指示される。理由 は、タグは以下に述べるように、特定の処理要素2又はメモリユニット3を特定 するからである。
化カドークン30がメモリユニット2へ伝播していくと、化カドークンのタグは どのメモリユニット2がアクセスされるべきかを特定する。化カドークン30は 又メモリロケーション上で実行されるべき動作(即ち、リード動作又はライト動 作)を特定する。メモリユニット2のメモリコントローラは所望の動作を実行す るために動作仕様書を使用する。リード動作が要求されると、メモリユニット2 はメモリユニット2からのデータリーげとある処理要素を特定するタグとから成 るトークン30を生成する。一旦生成されると、このトークン30は適当な処理 要素へ伝播し、そこでトークンがその宛先処理要素によシ処理されるべき他のト ークン30と結合する。
化カドークン30は、又上述の如く、他の処理要素3に伝播する。特に、出力ト ーク/を生成する処理要素3のパイプライン36の出力時に、化カドークン30 は相互接続ネットワークに導かれ、そこでトークン30のタグによシ特定された 処理要素3へ伝播する。
そこで一旦、トークンは処理要素3にて他のトークンと結合し、処理される。
単一の処理要素3内の全てのトークンは同じ処理要素3を特定するタグを有する 。
化カドークン30が従うことができる多くの異なるパスに留意すると、本発明に て使用可能な通信オプションの多様性と、そのような通信が実行される容易さを 認めるKちがいない。各処理要素3は全ての他の処理要素と及びいかなるメモリ ユニット2とも通信できる。そのような構成要素と通信するためには、宛てられ た処理要素3又はメモリユニット2を特定するタグを有する化カドークンを発生 することが必要なだけで゛ある。更に、そのような通信は進行中の計算と並列に 実行されることができる。理由は処理要素3は通信に対する応答を待つ必要がな いからである。
上記に照らして、本発明内では多くの動作が並列に起夛うることは明らかである 。適切な同期を維持するためには、あるグラウンドルール(ground ru le )に従う必要がある。グラウンドルールの一つは活性フレームは使用され る前に先ず割当てられなければならないということである。このようにして、活 性フレームは実行される各ルーチン毎に割当てられる。特に、ルーチンが一旦呼 出されるべきであると、活性フレームは割当てられる。この割当はオペレーティ ングシステムによシ実行される。オペレーティングシステムは、自由な活性7レ ームのリストを維持し、新しい活性フレームの要求を受取ると、その自由゛リス トから活性フレームを単にはじき出し、そのルーチンのコールにそれを割当てる 。更に、ルーチンのコールが完了すると、活性7レームは再び自由リストに追加 される。そのような割当と追加を実行する際に、オペレーティングシステムは同 じ活性フレームが同時に複数のルーチンコールに割当てられていないことを確認 する。
好適システムにおいて、各活性フレームは特定の処理要素によシ処理され、そし て各処理要素には数千の活性フレームが割当てられる。活性フレームは要求され た時割当てられ、先行するコードブロックの実行によシ要求されるので、処理要 素はコードの実行につれ動的に呼び出される。
ルーチンはコードブロックであシ、そのようなルーチンへのコールは先行コード ブロックによりなされる。
これらコードブロックは、データフローグラフのどのノードがコードブロックを 構成し、従って単一の活性7レームを共有するかを決定するコンパイ2によシ定 義される。コンパイ2は、従って、プロセスのゾロセサ間粒状物を構成する。
よシ小さなコードブロックはノロセサ間通信の増大につれて並列処理のための潜 在能力が高まる微粒子システムを特徴づける。
本実施例では、コードは共有されない。むしろ各処理要素3はその割当メモリ4 内にコード全体の写しを有する。コード内にエンコードされたインストラクショ ンの全て各処理要素によシ実行されるわけではない。
その代シに、ある要素3によ)処理されるトークンによシ指示されるインストラ クションのみがその処理要素3によシ実行される。従ってコード全体の該当部分 のみが一般に処理要素により実行される。代シにキャシュシステムが必要によシ コードをローVするために使用されてもよい。
一旦、割当フレームが割当てられ、コードブロックが定義されると、システムは オペランVのマツチングを実行するように見ることができる。特に、オペ2ンr ・マツチング・ステージ40は、実行されるべきインストラクション32が含ま れるE、rフィールドと見られる。E、rフィールドは3つの有効アドレスモー ドの一つを特定する。一つの可能な有効アドレスモードはフレーム関連七−rで ある。フレーム関連モードでは、メモリロケーションのアドレスはオフセラ)  (r)を、トークン30のタグ内に含まれるコンテキストポインタ(c)に加算 することによシ活性フレーム45内にされる。この手法を第4図に示す。第4図 で、Cからの矢印35は活性フレーム45の先頭を示し他の矢印33はコンテキ スト(C)プラスオフセラ) (r)によシ特定されるロケーションを示すこと に注意。対照的に、絶対モーrは絶対アドレス(r)としてのアドレスを特定す る。最後に、コード関連モーPでは、アドレスはタグプラスオフセラ) (r) からのステートメント番号によシ特定される。
一旦、マツチングルールが実行されるアドレスを決めると、処理要素3はマツチ ングルールを実行する。
マツチングルールは基本的には動作開始の手段である。
図示の目的のために、動作はタプル(c、s、vよ、”/r、 A 、T 。
d)と考えられ、ここでc、sはマツチングトークンにより共有されるタグから のステートメント番号とコンテクスト〆インタである、V工は左側ボート上のト ークンの値であり、vrは右側ボート上のトークンの値であシ。AはALU演算 であシ、 T、dはトークン形成ルールである。
どのマツチングルールが適用されるかはインストラクションに規定された処理と オペランドに依る二最も一般的に使用されるマツチングルールは2個のオペラン ドについての演算である。このルールはWaya、aよ。とじて参照される。こ のルールを実行すると、システムそりロケーションを見て、存在フィールドをチ ェックする。値が値フィールド内に現在存在すると、存在フィールドは”存在” に等しい。値がそこに現在存在しないと存在フィールドは“空”に等しい。
ロケーションの存在フィルrが”空”状態48(第5図)にあることを示すと、 システム50はそのメモリロケーションの値フィールr内にトークンの値を書き 込み、存在フィールドを”存在”状態52に変更する。他方、存在フィールドが 頭初”存在”状態52にあると、メモリロケーションの値フィールrが読み取ら れ、動作が発行される54、発行された動作(活動度)がどのように発生される かは下記式によ)説明される。
(C,511v1)、(仁ar、Mr) →(c、s、vl、vr+A、T、d )但しAとT、dは関連するインストラクショ/から導かれ、CS 、’/1  、’Vrはトークン30から導かれる。動作の発行に加えて、ルールは存在状態 を“存在”状態52から1空”状態48へ変更する。
この手法はダイアディック処理においてオペランVをマツチングさせるタスクを 大巾に単純化する:もはや高価な連想メモリを必要としない。更に、一つのオに ランrが他のオペランドの前に到着しても、それは失なわれない。むしろ、その オペランドは他゛のオペランドが可能状態になる迄単に待つ。この手法のこの観 点はインストラクションの実行のスケジューリングの非同期的性質を反映する。
更に、活性フレーム内のロケーションは値と状態を格納するために十分大きいこ とを要するにすぎない。第一のトークンのλカタグは、到着する第2のトークン のタグから再構築されることができるので、放棄される。
一つの演算子を特定すると、異なるマツチングルールが適用される。このルール はWmonadi。ト表わされる。従来から、左側入力ボートはモナデイソク処 理の入力用に使用される。マツチングルールに従がって、左側入力ビート上のト ークンの値フィールrは読み取られ、動作は発行される。存在状態は影響されな い。
動作は左側入力メート上の入カドークンのコンチクスト(c)ステートメント番 号(S)、値(■、)を受け入れる。特に、 (c、sl、vl) −(c、sl、vl、vl、A、T、d)他の可能性は、 ダイアディックオペ2ンドが特定されるが定数オペランド付きであるということ である。もしそうならば、Wstickyとして表わされるスティンキー・マツ チング・ルールが適用される。それはスティンキー・マツチングルールと称され る。なぜならば、定数がロケーションに一旦書き込まれると、後続のアクセス時 にそれは抽出されないからである。
このルールが適用される定数オペランドには2つのタイプがある。第一のタイプ はコンパイレーンコンの時に知られたものである文字定数である。第二のタイプ は、フレーム定数であり、これらの定数はコードブロックのある実施内で多くの 動作にょシ共有される活性フレーム内に生成されることができる値である。
第6図はWst工。kyの状態遷位図を示す。定数の到着前に有効アドレスによ シ特定されるロケーションに単一のアクティブオペランドが書き込まれるのが許 される。
特に、存在状態が”空”状態56であシ、かつアクティブオペランドがマツチン グステージにあると、オ(ランrの値はロケーションに書き込まれ62、存在状 態は”存在”状態58に変更される。アクティブオペランドは左側メート入力に あることを要することに注意。定数がアクティブオペランドの後に到着すると( 即ち右側?−ト上に入力オペランrが続いて到着すると)、定数の値はロケーシ ョンのオぜランrの値色交換され、動作は発行される66゜存在状態は”定数” 状態60に変更される。
他方、ロケーションが当初“空”状態56にあり、定数が左側ボート入力のアク ティブオペランドに先立定数は特定のメモリロケーション64に書き込まれ、存 在状態は”定数”状態60に変更される。定数が一度メモリロケーションに書き 込まれると、左側ボート入力に後続アクティブオペランドが到着しても存在状態 は変更されず、代りに、定数を読み出しと動作の発行68となる。この実施例に おいてこのルールが有効に働くためには、定数は右側ボートに入ることを要し、 非定数は左側−一トに入ることを要する。
存在状態は値の存在又は不存在をエンコーrすることに限定される必要はなく、 むしろ存在状態は又データタイプのような他の情報をエンコーrするものでもよ い。
更に、存在状態はインストラクションの実行を動的に変えてもよい。例えば、イ ンストラクションがステイキー・マツチング・ルールを特定すると、マツチング ルールが働くメモリロケーションにて実行される演算処理は存在状態によシ決定 される。従って、インストラクションは存在状態で条件づけられ、異なる操作、 所与の異なる存在状態を実行する。
動作(処理)が一度発生されると、処理はパイプライン36の次のステージ即A 、LU演算ステージ42に送られる。このステージの中心目的はトークン形成ス テージ44に送られるタグと値を生成することである。
このステージはインストラクション32上のA及びT、dフィルドがシステム動 作を導くことを当てたする。
ALU演算ステージ42において、トークン形成ルール、T、dはどのようにし て新しいタグと値が形成されるかを特定する。形成されたタグは大部分トークン 形成ルールのdフィールドによシ決定される。dフィールドは新しく形成された トークンに与えられる宛先アドレスを特徴する特に、dは(Sよイ、52. p tt)と等しい。第一に新しく形成されたトークンのタグは一般にC,8’p’  であシ、ここでs’ −s 十St 、である。第2のトークンのタグは一般 にc、 B 、// であシ、ここでS//xs+s2 である。
三つの基本的なトークン形成ルールがある(第7図参照)。第一は’rar□t hと表わされる数学的ルールである。それは出力値(V′)を発生するように動 作中に2つの値(vl、vr)にALU演算(A)を適用するようにALU演算 ステージを導く。少なくとも一個のトークンが生成され、第二のトークン(第7 図のカッコ内に注記)が生成されてもよい。トークン(C0s’p’とc 、s /′p//)の出力タグは入力タグに含まれるステートメント番号に増大(sl とs2 )を与え、かつトークン形成ルールのdフィールげによシ特定されるよ うに、新しいボート(p′とp“)を提供することによシ生成される。こ(Dk −ルの下ではこれら出カドークンはオリジナルトークンと同じコンテキストを有 する。
第ニド−クン形成ルール、送シルールはT81a ndとして表わされる。この ルールは出カドークンタグを、データタイプTAGである動作の左側値(vl) と等しく設定し、出カドークン値を動作の右側値(vr)と等しく設定する。必 要ならば他のトークンを発生できるが、増分をステートメント番号に加算するこ とによシ数学的ルールにおいて発生されるのと同様にして新しいトークンのタグ を発生する。第2出カド−クンの値フィールドは右側ボート値(v r )と等 しく設定される。このルールの主目的は異なるコンテキストに値を送ることであ る。そのようにルールは動作量通信能力を提供する。
第三かつ最後の基本的ルールは抽出ルール、Textractであシ、それは現 在のコンテキスト内のインストラクションに現在のコンテキストに等しい値を送 る。
ルールは一つの出カドークンを発生するだけである。
ルールは数学的ルール内にて行われるように8に増分(slと82 )を加算す ることによ)、活性タグ(c、s)る。第一に発生したタグ(c、s’p’ ) は出カドークンタグとして使用され、第二のタグ(C,8// 、// )は出 カドークンの値として使用される。
これら三つの基本的形成ルールは又付加的な)・−クン形成ルールを生成するこ とに関連して使用される。
例えば、抽出ルールと送信ルールは組み合わされて、他のコンテキスト(勺への アーギュメントとし°ての、一つのコンテキス) (C)内からタグを送信する 抽出送信ルールを形成する。特に、vlが新しいコンテキストを特定するタグ( c−鈴)に等しいと、出カドークンは下記に等しい。
組み合せトークン形成ルールの他の例T工。。−8−sandとして表わされる inc −s −5endルールでアル。第二の増分(s2)とdフィールVの 第二〆一トインヂイクータ(p″)を使用して、新しい8フイールrの調整を許 す。等式において% Tin。−5−sendは下記により表わされる。
(c、s 、C−C5,’/r 、A、Tinc−s−send−d)−(?l ’、(9十62)1〃、v、)このインストラクションはアーギュメントと結果 を通過するために主に使用される。
他の組み合せトークン形成ルールはTfetcllルールである。このルールは 基本的なトークン形成ルールの三つ全てを組み合せる。このルールは配列から要 素を読み込むために使用され、ここでCはベースアfレスでアシ、vrはインデ ックスである。特に、(C−8、’;a、G’p+Vr、 1nc−C、Tfe tch−(1)→((C+Vr)−’aptl+c、B’p〆)。
又、述べる価値があるのはTswitchとして表わされる、特に定義されるス イッチ・マツチング・ルールである。このルールは下記に詳述されるスイッチイ ンストラクションと一致するように動作する。特に、(c、s +V1 、TR Ug、A、T5witcb、d) −e (c 、s’p’ 、vl ) an cl(c 、s 、Vl 、FALSE、A、TByl tch 、a) →( c 、B”ptt 、 Vl ) 。
数学的ルールが適用される時にのみ、インストラクションのALU フィールド (A)はトークン形成フロセスにて大きな意義を有する。全ての他の場合におい て、トークン形成ルールは出力タグと出力値を規定する。更に、トークン形成ス テージ44とALU演算ステージ42との間の密接な関係があることに注目すべ きである。両方共トークン形成ルール(T、a)に依存している。両ステージ間 の差異は、ALU演算ステージ42が非集合出力タグと出力値を生成するだけで ある点にある。出カドークンを生成するためにこれらの出力の組み合せはトーク ン形成ステージ44によシ遂行される。
トークン形成ステージ44は多くのマルチプレクサ−(76,78、第8図)の 助けによシ実行される。
特にALU演算処理によシ生成される値とタグは、トーク/形成ルール(T、a  )によシ規定されるように適切な組み合せを選択するマルチプレクサ−に送ら れる。
トークン30のタグ部用のマルチプレクサ−T6と、トークン30の値部用のマ ルチプレクサγ8がある。
マルチプレクサの選択ラインはインストラクションのオペコード(T、a )に より制御される。オペコードは下記に詳述される。
トークン形成ステージ44によシ発生されるトークン30は一般にパイプライン 36を出てトーク/キュー34に戻る。トークンは次いでパイプライン36によ シ処理される。
従って、動作が完了する迄パイプラインを介して連続的に流れる。トークンは、 しかしながら、他の宛先へ伝播スる。トークン形成ステージ44は、出カドーク ンの宛先がどこか知るために出カドークンを調べ、また従って出カドークンをル ートづける。ロジックを含む。
出カドークンが伝播する他の宛先は他の処理要素3とメモリユニット2を含む。
変更タグインストラクション(後述する)が実行されるときに、他の処理要素に 、出カドークンは伝播し、それは異なる処理要素3と関連する新しいコンテキス トに出カドークンを送る。
更に、出カドークンは、メモリアクセスインストラクションがタグによシ特定さ れるときに、メモリユニット2へ伝播する。前記メモリアクセスインストラクシ ョン(例えばリード、ライト)はメモリユニット2によシ非同期に取シ扱われる 。
メモリアクセスが実行される間、処理要素は待つ必要はなく、むしろ、それは処 理を続ける。実際のメモリアクセスは、アクセスされる特定のメモリユニット2 内のコントローラによシ実行される。
適切な場合には、メモリアクセスが完了すると、トークンはある処理要素3に、 メモリユニット2によシ送シ戻される。この非同期メモリアクセスは本発明の平 行処理の第三のレベルを構成する。理由はメモリアクセスは、種々の処理要素3 のパイプライン36の計算と並列に実行されるからである。
ここ迄は、トークンキュー34についてほんの少ししか述べていない。伝統的な キューを使用するが、一つの最適化は一連のスタック(第3図参照)から成るキ ューのためである。スタックの使用の背後のアイデアは一種のキャッシュ・キュ ーを作シ出すことを試みることである。FIFOバッファは有益であるが本目的 のためには実用的でない。FIFOは優先度によるスケジュールを容易に提供し ない。理由はFIF○手法においては、全てのトークンは処理される順番を待つ 必要があるからである。更に、FIFOは誤った方法で並列処理を制御する。実 行されるべきタスクは木として見なされ、そこにおいて、他のタスクが実行され ることができるように実行プロセス内にて早く実行される必要があるタスクは、 木の頂上近くにあり、FIFO手法は広さ第一法でその木を解き放すであろう。
望まれるのは深さ第一法にて木の解放を制御できる技法である。
LIFO技法は前記深さ第一法にて解放を制御できる。
IJ FO技法はFIFO技法よシも局部性に優れる。更に重要なことは、 F IFOキューはローカルメモリからキャシュされることができ、他方FIF○キ ューはキャシュすることが難しい。
好適実施例は優先度によシ構成されるスタックを使用する。トークン30は、そ れが空になる迄最高優先度スタックγ0(第3図)から除去される。一度量高優 先度スタック70が空になると、トークン30は次の最高優先度スタックγ2か ら除去される。これは実行が完了する迄続く。望ましい実行は唯2個のスタック を利用することである。はとんどのトークンは最高優先度スタックTOに入るが 、幾つかのトークンはそれらの処理を遅延するように、次の最高優先度スタック γ2内におかれる。トークン30がどのスタックに入るかを決定するために優先 度を決定するために使用される一つのオプションは、タグの一部としてトークン 30内の優先度をエンコードすることである。このオプションは動的であるとい う利点を有するが、システムを複雑にするという結果となる。前記技法は動的に 優先度をエンコードすることができるが、静的な制御をも可能にする。
他のオシジョンは、インストラクションのトーク/形成ルールのdフィールrに よシ特定される宛先内にエンコードされる優先権を有することである。このオプ ションはタグ内に優先度をエンコードするととよシ、よ)静的であるが、容易に 実行できるという利点を有このスタッキング法は迅速に処理されるべき高い優先 度のトークン30を考慮に入れ、インストラクションの実行において早く考慮に 入れることとなる。この特徴によシ、待ちインストラクションの実行用のパスを 自由にするように実行プロセスにおいて早く完全に実行される多くの待ちインス トラクションの実行に先立つ条件であるインストラクションを許す。正味の結果 は表わされた並列処理についてのより大きな制御である。
本発明内で具体化された他の最適化はパイプライン36からの出力をパイプライ ン36の入力に戻す直接パス(第3図の74)を提供することである。この直接 パス74はトークン列をバイパスする。結果として、単一のボートキューのみを 必要とする。理由は、一つの出力又は一つの入力のみがある周期に対して必要と されるからである。パイプライン36により2つの出カドークンが生成されると 、トークン30の一つはバイパス路74に従い、パイプライン36内に再循環さ れる。他のト−クンはトークンキュー34に入る。パイプライン36により一つ の出カドークンのみが生成されると、トークンはバイパス路74に従う。何らト ークンが生成されないと、トークンはトークンキューから除去され、パイプライ ン36内に挿入される。
本発明は又例外取扱い用の最適化に関する。本発明に含まれるシステムは特別の レジスタセット(第3図の41)を含む。このレジスタセット41はパイプライ ン36内の実行を記録する。特に、レジスタセットはパイプライン36内の各動 作のタグを記録し、左側は例外が起こるときのシステム2動作を図式化する。
例外は演算中のミスマツチしたデータ型式、零ニょシ割算する試み、などの事象 である。
例外が起ると、それはALU出力内に注記される。システムは例外を起した動作 の値をレジスタ41内に凍結し、例外を起した動作にフラグを立てる。インター ラブドされないトークンは生成されて、例外取扱い演算を呼ぶ。この新しいトー クンはバイパス路に従って直接パイプライン36に戻ル。
新しいトークンは、攻撃インストラクションを翻訳するか再起動するかを決める ために、レジスタ41内にて凍結された動作を調べる例外ハンドラ43t−作動 させる。例外ハンドラ43が決定した後に、処理は通常のように続く。
上記詳細な説明から明白なように、インストラクションセットはシステム演算に おいて特に重要な役割を果す。インストラクションセットはインストラクション の幾つかの異なるクラスから成る。インストラクションの主要クラスの一つはダ イアディック算術インストラクションクラスである。インストラクションのクラ スは2つの入力オペランドについての算術演算を実行する。ダイアディック算術 インストラクションの典型的例は加算インストラクションである。
このインストラクションは下記の如く要約できる。
CC−8rr vr) C,CC,S”pit 、 v1+ vρ〕指示は2つ の入力オペランドの和である値を出力する。他の例はfgeqインストラクショ ンである。
このインストラクションは下記の如く要約できる。
geq (C,S I V ) ((C,S”p7/ 、 Vl 〉’tyρ r 第一のオペランドが第二のオペランドより大きいか又は等しい場合に、TRUE の値を戻し、さもなければFALSF:を戻す。
インストラクションの第二のクラスは算術インストラクションセラトラ充放する 。この第二のクラスはモナディツク算術インストラクションとして知られる。
それらのダイアディックな相手方のように、インストラクションは算術演算を実 行する。しかしながら2個のオペランドに対向して一つのオペランド上で働くの みである。モナディック算術インストラクションの先導例はフロートインストラ クションである。このインストラクションは下記の如く要約される。
(c−sl+ vl) (C,S’p/ 、 float(vl))((C,S ″p// 、 float(vl)))A = float T−Tarよ、h インストラクションは整数オペランドを浮動小数点数に変換する。
同定インストラクションはインストラクションの付加的クラスを表わす。このク ラスの主要なインストラクションは同定インストラクションである。このインス トラクションは下記の如く要約される。
同定 A −nop T″″Tarith 同定インストラクションは入カオ(ランドの[t−他のコンテキストへ通す。逆 にr−)インストラクションは下記の如く要約できる。
(c−sr+ x) CCc、s″pu 、 vl))r−トインストラクショ ンはインストラクションが左側入力ポートのオにラン−をコピーシ、トリカド呼 ばれる値が右側入力ボートに受信される時にその値を送る点で異なる。
条件インストラクションは条件付き実行を指図するために使用される。使用され る唯一の条件インストラクションはスイッチインストラクションである。それは 二つの入力オペランドを要求する。入力オペランドの一方は値であることを要し 、他方の入力はプール値であることを要する。それはある入力に対して二つの出 力値の一方を選択することを可能とする。どちらの出力値を選ぶかはプール値入 力による。プール値入力が真(TRUE)ならば第一の出力が選ばれる。。
入力 出力 (c、sr、 TRUE) プール値入力が誤(FALSE)ならば、第二出カド−クンが選ばれる。
(c −s r * FAL S ”’ )タグ処理はタグ処理インストラクシ ョンの特別クラスにより実行される。このクラスは三つの基本的インストラクシ ョンを含む。第一のインストラクションは変更タグであり下記の如く要約できる 。
(C−S L l ’;! −26) (e −9S * vr)(C0Sr+  vr ) ((c −s” p〃r vr ) )A w nop T″−Ts8nd コンチクスト間の通信値においてそれは有益である。
注記した如く、それは2つの入力を要する。左側久方の値が新コンテクス)1示 し、右側大刀の値は新コンチクストへ送られる値に等しくなる。これら二つの入 力[’e−諸にしたものが出カドークンを構成。更に、右側の入力[−有する現 在のコンチクストにおいて、第二)出カドークンを虫取するオプションがある。
抽出タグは逆に下記の如く要約できる。
抽出−タグ それは単一の出力に限定される。その結果としての出カドークンは入カオベラン ドと共にコンチクストロ共有するタグを有する。それはステートメント番号を有 し、それは、入力のステート番号と増分の和である。
更に、出カドークンの値フィールドは入力と同じコンチクストにおけるタグと等 しいが、ステートメント番号と追加的増分との和であるステートメント番号を有 する。
調整オフセットインストラクションは下記の如く要約できる。
調整−オフセット (c、sz、 c、sA) (c、s’ t 、包(つ+1)^)p p p インストラクションはよシ複雑な演算を提供する。
それは二つの入力を利用する。第一の入力の値は新しいタグを特定し、第二の入 力の値はオフセットを特定する。このインストラクションは二つまでの出カドー クン生成する。第一の出カドークンは入力と同じコンチクスト内にアシ、第二の 入力の値による第一の入力値のオフセットに等しい値を有する。第二の出方)  −クンも又、同じ値を有し、入力と同じコンチクストを共有するが、そのステー トメント番号はオフセットである。
他のインストラクションクラスも存在するが、しかしそれらは本議論では重要で はない。
にも拘らず、本発明はここで議論されたインストラクションにのみ限定されるも のではなく、むしろ、議論されたクラスによシ具体化されるインストラクション セット全体を含む。
本システムはループのような、反復の循環を容易に与える。システムはループの 各反復に新しいコンテクスト全割当てることによりループを実行する。それは次 いで現在の反復に対して、以前の反復からのトークンを送るように新コンチクス トに対し変更タグインストラクションを使用する。
反復が完了すると、反復はコンチフストラ自由にするので、コンチクストは次の 反復に割当てられることができる。そのようにして、族コンチクストは次から次 へと反復に通される。従って、N個の活性フレームの尾部循環として、実行中に ループは開く、ここでNはルーズ内の反復数である。この技法において効率を維 持するために、ループで使用された活性フレームはリサイクルされる。
一般に、活性フレームは処理がコールされる度に割当てられる。データフロー処 理システムのオペレーティングシステムは自由な活性フレームのリストを維持す る。手続きがコールされると、それは自由リストから活性フレームをはじき出す 。同様に、手続コールが完了すると、それはもはや活性フレームを必要とせず、 従ってそれが使用した活性フレームは自由リストに戻される。
本発明の好適実施例はマルチプロセサシステムである。従ってそれは処理要素3 間で容易に通信できることを必要する。好適実施例ではトークンが自由に一つの 処理要素から他の処理要素へ流れることができるようにしてこの能力を与える。
更に本発明は個々つ処理要素から容易に成る。同じ実体はプロセッサ間のトラヒ ックと共に、プロセッサ内トラヒックのためなので、マルチプロセサシステム内 の多数の処理要素は容易に実現される。更に、並列に実行される計算の微粒子的 特性は同様に、単一の処理要素2をマルチプロセサシステムで非常に容易に、構 成することを許す。システムの微粒子的特性は又コードのコンパイルを容易にす る利点を与える。
本発明はマルチプロセサシステムであるので、種々の処理要素2間にて間仕切り プロセスの手段であらねばならない。単純で作業可能な技法は各処理要素をメモ リ斌に割当てることである(第9図参照)。タグによりあるコンチクストに割当 てられた処理要素を、トークンが特定する。特に、コンチクストポインタの2つ の先頭ビットは適切な処理要素を示す。この技法はプロセサ間の競合の可能性を 除去し、メモリへの急速なアクセスを与える利点がある。メモリ空間の割当は必 ずしも固定されない。従って、一つの処理要素2により活性フレームのために使 用された空間は、次いで他の処理要素にも使用されることができる。従って、技 法は間仕切を動的に再割当できるという新たな利点を有する。
アドレス空間を間仕切する一つの欠点は大きなデータ構造の割当に関する如きも のである。本システムは大きなデータ構造をマルチプロセサにインターリーブし 、ネットワークのトラヒックとプロセサの負荷を等しく分配する。このインター リーブはワード単位で実行される。非インターリープ技法とインターリープ技法 は概念的にアドレス空間全多数の領域に分割し、そこではコンチクストへの増分 は特定される副領域に依存してプロセッサ内又はプロセッサ間で進む。
副領域は2 個の処理要素の集合であり、Nはトークンのタグにより生成される Nフィールド内で特定される(デコーディング記述に関して後述される)。N− 〇の場合に、Cへのいかなる増分も同じ処理要素にマツプする(第10図参照) 。しかしながらN=1の場合には、Cへのいかなる増分も2つの処理要素間にて 交換する。N=2の場合には、Cへの増分は4つの処理要素間にて交換する、以 下同様である。第10図はこの技法の基本的操作を示す。
各プロセサが排他的活性フレームに割当てられると、コードも共有されるかとい う疑問が生じる。一般に、各コードブロック用のコードのコピーが、そのコード ブロックを実行する各α埋要素上に存在するということが望ましい。従って、宛 先インストラクションはローカk Tあり、ノンブロッキングである。結果は、 より大きなメモIJ =i最小のコストで設計するための単純性を高めるという ことである。代案的に、キャッシュシステムも利用される。
各メモリロケーションが存在ビットと関連するということは以前に注記した。こ れらの大量の存在ビットが単一のインストラクションと共に同時に変更される場 合には手助けとなる。この能力を実現するために、隣りのロケーション用の存在 ビットはマシン語に等しいサイズの語に合体される。好適実施例において、各メ モリロケーション用に二つの存在ビットがある。
32ビツトが一語を構成する。従って、16セツトの存在ビットが一語として格 納される。
システムを実現する他の方法は選ばれる語長である。
好適実施例では72ビツト語を利用し、そこでは64ビツトが愼フィールドであ り、8ビツトはタイプフィールドである。トークンは二語から成る(第11図参 照)。第一の語はタグであり、第二の語は値部分である。タグはデータタイプT AGである。他方儀部分は、TAGXFLT (フローティングポイント)、I NT (指麹及びBITS (符号なし整数)を含む幾つかのデータタイプであ る。
タグは多くのフィールドに単に細分化される(第12図参照)。タグの先頭ビッ トはオペランドの部分を示す。零(0)は左側ポートを示し、1は右側ボートを 示す。次の7ビツトはMAPフィールドである(第16図参照)。MAPフィー ルドの最初の2ビツトは、インターリーブ格納を選択する・・ツシュ(HAIR )インストしである。他の5ビツトはNフィールドであり、2を底とする副領域 内のプロセサの数の対数と等しい。
MAPフィールドに従うのは24ビツトのIPフィールドであり、それはプロセ サ要素、PE1 フィールドにより特定されるプロセサ番号上のインストラクシ ョンのインストラクションポインタアドレスを与える。
メモリアクセストークンでは、PEは処理要素よりはむしろメモリユニット2を 実際に特定する。PEはインストラクションポインタ、IP、フィールドに従b 1それはメモリ内のインストラクションを示し、10ビツトの長さである。タグ の最後のフィールドはFPフィールドである。それはフレームポインタであり、 22ビツト長である。それは特定の副領域に割当てられたフレームのうちの特定 のものを示す。
タグ”5UPE、FP及びIPフィールドから主に形成される。特に、Cはフレ ームポインタFPと、処理要素指定pgとからなシ、PEはCのMSBからなり 、FPはCのり、SBからなる。更に、SはpEとIPから底る。PEはSのM SBから放り、IPは5QLSBから成る。
インストラクションに32ビツト長のみであり、4つのフィールド、0PCOD E、 r、 PORT及びSのみから放る(第14図参照)。0PCODEは1 0ビツト長であシ、インストラクションopLoDg t %定する。又10ビ ツト長はrである。それはオペランドの有効アドレスを計算するために使用され る符号なしのオフセットであで宛先タグの一つである。あるインストラクション では2つの宛先タグが要求されると、第二のタグは、入力IPに1を加算し、設 定ボートに1を加算して、発生する。
タグ、トークン及びインストラクション用のフォーマットt−知れば、よシ詳細 にパイプライン36のオペランドマツチングステージ40を知ることができる。
特に、オペランドマツチングステージ40は三つのサブステージに分割される。
第一のサブステージ80は、オペランドマツチングが発生するメモリロケーシコ ンノ有効アドレスを計算する。第二のサブステージ82は存在ビットに対して働 き、第三のサブステージ84ハ有効アドレスのオペランドを7エツチし、又は格 納DeCOd8 k参照)、10ビツトの0PCODE 90のフイールトハ第 一のレベルデコード表への、アドレスとして使用される。第一レベルデコード表 へのエントリー109は四つのフィールドを有する。BABgフィールド92は 第2レベルデコード内のエントリー用の基本アドレスを特定する。他方、TMA Pフィールド94は32個のタイプマツプの一つを特定する。更に、PMAPフ ィールド96は64個の存在マツプの一つを特定し、最後に、EAフィールド9 8は有効アドレス発生モードを特定する。
0PCODE 90は第一レベルデコード表エントリ109t−調べるために使 用され、エントリーのEAフィールド98はテストされる。それは2ビツト長で ある。両ビットが0であると、アドレスはFP十rに等しく、両ビットが1であ ると、アドレスはrに等しくなり、先頭ビットが1であり、後続ビットがOであ ると、アドレスはIP+rに等しい。
第一サグステージ80(第3図)の間に、TMAP(第15図の94)フィール ドは又テストされた。上述の如く、TMAPフィールド94は32個のタイプマ ツプの一つを選ぶ。タイプマツプはサイ7:256X2の二次元配列である。各 エントリは2ビツトを有する。これらの2ビツトはボートからのマツピングを表 わし、かつ第一サブステージのトークンの値のデータタイプを表わす。サブステ ージを結論するために、トークン、有効アドレス及びタイプコードは次のサブス テージ82(第3図)に通される。
第2のサブステージ82は存在ビットサブステージである。このサブステージ8 2において、システムは特定のアドレスによシ特定されるメモリロケーションを 見る。そのロケーションからそれは2つの存在ビラトラ読み取る。サブステージ 内のトークンのボートと共にこれらビットを使用し、タイプコードビット100 はタイプマツプと、第一レベルコードエントリーのpmpフィールド96とから 読み取られ存在マツプ表内のコントリー110t−v4べろ。存在マツプ表は6 4のエントリーを有し、各エントリーは4フイールドを有する。
BRAフィールド102は4路ブランチコントロールであり、後述する。FZフ ィールド104はフォース・ツウ・ゼロオーバーライドが行なわれるかを決定す る。
それも同様に後述する。FOPフィールド106は、どのオペランrのフェッチ /格納動作が実行されるべきか(即ち、読み取、書き取、交換又は交換減小)t −特定する。最後のフィールド108は存在ビットの新しいMk特定する。それ はN EXTとして表わされる。
FOPが特定する第三かつ最後のサブステージ84において、フェッチ/格納動 作は実行される。有効アドレスにより特定されるロケーションの内容は、パイプ ラインの次のステージに通される。更に、存在マツプのBRAフィールド102 と、第一レベルデコードエントリーのBASgフィールド92はORされ、第ニ レベルデコード内にアドレスを生成する。第二レベルデコード表エントリーは、 システムの処理に使用される係数を特定するために使用される。FZフィールド が1であるとBASEフィールド92はORされる前にOにされる。
正味の結果は、第二レベルデロード表エントリー111が絶対アドレス0,1. 2又は3として設定されることである。
上述のシステムは、データ処理システム内の並列処理をしみ込ませる困難な仕事 をプログラマから解放する。平行主義は指示セットにおいて固有のものであるの で、かつハードウェアを介して割当てられるので、このシステムは、現在の平行 処理マシンよりもずっと使用が容易である。マツチング機構は単純化されて、連 結するメモリシステム内に見られる生来の複雑性を除去する。特異なメモリ設計 は減少した頭上のために主に責任がある。
更に、本システムの微粒子特性は多くの利点を与える。第一に、本システムは平 行主義の最大量全露呈する。第二に、メモリ潜在性を容易に緩和する。理由はメ モリアクセス要求が働いている間に他のトークンを逸埋できるからである。第三 に、粗粒子システムよシも編集容易である。加えて、本発明は、実行特性、単純 性及び原価有効性を最適化する。
本発明は望ましい実施例に関して特に図示、詳述したが、当業者にとって形状と 詳細の各種変更は添付請求の範囲に規定した本発明の精神と範囲から逸脱せずに なされるものと理解されよう。
第1図 第2図 第4図 第5図 算術ルール ルールを送る ルールを抽出第7図 格納部 第9区 国際調査報告 1+″″″″Al#1m、 、、、、、、、 、Q、nζ+nc国際調査報告

Claims (1)

  1. 【特許請求の範囲】 1.下記構成要素から成ることを特徴とするデータ処理システム。 (ア)数学的/論理的インストラクシヨンを処理するための少なくとも一つのプ ロセサ。 (イ)前記少なくとも一つのプロセサにより処理された数学的/論理的インスト ラクシヨンのオペランドをマッチするため、データ処理システムの少なくとも一 つのプロセサにより各々アクセスされる複数個のメモリロケーション。 (ウ)オペランドがオペランドの適切なマッチングを実行するようにメモリロケ ーシヨンに存在するか否かを決定するために、少なくとも一つのプロセサにより アクセスされるメモリロケーシヨンの現状を検出するための論理手段。 2.各メモリロケーシヨンは唯一のロケーシヨンであり、そこでインストラクシ ヨンの特定の実行のオペランドのマッチングが起り、かつ各メモリロケーシヨン は、値フィールドの重要性が状態フィールドに従うようにして、値フィールドと 共に状態フィールドを含むことを特徴とする上記第1項記載のデータ処理システ ム。 3.上記第1項記載のデータ処理システムであって、各プロセサは下記構成要素 を含むことを特徴とすること。 (ア)処理されるためにトークンの待ちとしてオペランドを表わすトークンもメ モリするバツフア。 (イ)バツフア内にメモリされたトークンを処理するためのバツフアとメモリロ ケーションと通信する処理パイプラインであって下記要素から成るもの。 (i)パイプライン内にてトークンを調整するために、インストラクシヨンを掴 むためのインストラクシヨン掴み段。 (ii)掴んだインストラクションに応答するオペランドをマッチングするため のオペランドマッチング段。 (iii)掴んだインストラクシヨンにより特定される操作を実行するための操 作段。 (iv)掴んだインストラクシヨンにより特定された操作の結果を運ぶ、新しい トークンを形成するためのトークン形成段。 4.各トークンは作動フレームと共にトークン上に働くインストラクシヨン用の アドレスを示すためのタグから成り、かつ又データ片をメモリするための値から 成ることを特徴とする、上記第3項記載のデータ処理システム。 5.掴んだインストラクシヨンは、マッチングオペランド用のマッチングルール 、マッチングルールが操作するメモリロケーションの有効アドレスを計算するた めのルール、データ処理システムのALUにより実行されるALU操作、及びイ ンストラクションの実施から来る新しいトークンを形成するトークン形成ルール とるエンコードすることを特徴とする上記第3項記載のデータ処理システム。 6データ処理システムは平行マルチプロセサシステムであることを特徴とする上 記第1、2、3、4又は5項記載のデータ処理システム。 7.データ処理システムはデータフロー処理システムであることを特徴とする上 記第1、2、3、4又は5項記載のデータ処理システム。 8.データ処理システムはオペランドをマッチングするための非連結メモリを当 てにするタタグドトークンデータ処理システムであり、そこにおいてオペランド をマッチングするために、システムは分担したメモリロケーションにオペランド を向けることを特徴とする、上記第1項記載のデータ処理システム。 9.処理パイプラインと、メモリとを有し、オペランドをマツチングするための 非連結メモリを当てにし、そこにおいてオペランドをマッチングするために、方 式は分担したメモリ位置にオペランドを向けることを特徴とするタグドデータ処 理システムであるデータ処理システム。 10.例外が起ると、例外を起こした実行が可能になるように、パイプラインの 各段にてトークンと連結する実行を記録するための複数個のレジスタ、及び起る 各例外用の実行を見つけるために複数個のレジスタを試験するパイプライフ内に 起る例外を解決する例外ハンドラとから成ることを特徴とする、上記第3項又は 9項記載のデータ処理システム。 11.各分担されたメモリロケーションは値フィールドと状態フィールドとを含 むことを特徴とする、上記第9項記載のデータ処理システム。 12.方式は、ロケーシヨンの状態フィールドが他の値が存在しないことを示す 場合にメモリロケーションの値フィールド内にトークンの値を書き込むために該 システムに述べるスライツキーマツチングルールを含むマツチングルールに従が い、トークンの値が定数でない場合に、値が存在することを示すためにロケーシ ョンの状態フィールドを変更し、かつトークンの値が定数である場合に定数が存 在することを示すために、ロケーションの状態フィールドを変更することを特徴 とする、上記第2項又は11項記載データ処理システム。 13.オペランドのロケーションは前記オペランドの容易なマッチングを実行さ せるためにオペランドのマッチング前に知られるので、オペランドのマッチング 前にインストラクションはデコードされることを特徴とする、上記第3項又は1 1項記載のデータ処理システム。 14.データ処理システムにおいて、下記工程から成ることを特徴とする数学的 /論理的インストラクションを実行する方法。 (ア)数学的/論理的インストラクシヨンを掴むこと。 (イ)数学的/論理的インストラクシヨンの実行に使用されるオペランドを探す ために数学的/論理的インストラクションにより示されるメモリロケーションを アクセスすること。 (ウ)メモリロケーションの現在状態を試験して、数学的/論理的インストラク ションを実行するか否かを決定すること。 15.データフロー処理システムにおいて下記工程から成ることを特徴とする方 法。 (ア)トークンを与えること、各トークンはフレームポインタ、インストラクシ ョンポインタと値から成り、インストラクションポインタは同一のフレームポイ ンタと同一のインストラクシヨンポインタによりトークンの値を処理するインス トラクションにポイントすること。 (イ)トークンに応答してフレームポインタとインストラクションポインタによ り識別されるメモリ内にメモリロケーシヨンをアドレスすること。 (ウ)値がアドレスしたメモリロケーション内にメモリされたか否かを决定する こと。 (エ)値がメモリされると、メモリされた値と、新しいトークンを作るためのト ークンの値上にインストラクシヨンポインタにより決定される操作を実行するこ と。 (オ)値がメモリされないと、メモリロケーションにトークンの値をメモリする こと。 16.データ処理システムにかいて、下記工程から成ることを特徴とする単一の インストラクションのオペランドをマツチングする方法。 (ア)空のメモリロケーション内に、インストラクシヨンの第一の可能なオペラ ンドをメモリすること。 (イ)インストラクションのオペランドがメモリロケーシヨンにメモリされるこ とを反映させるためにメモリロケーションの状態を変更すること。 (ウ)インストラクシヨンの第二可能なオペランドを探すこと。 (エ)インストラクシヨン第一の可能なオペランドが内にメモリされるか否かを 見るために、メモリロケーションをチエックすること。 (オ)メモリロケーシヨンから第一の可能なオペランドを読み取り、インストラ クシヨンを実行するために、処理手段へオペランドを送ること。 17.上記第16項記載の方法は更に、処理手段へオペランドを送る工程後に、 メモリロケーションが空であることを示すために、メモリロケーションの状態を 変更することから成ることを特徴とすること。 18.データ処理システムはマルチプロセサシステムであることを特徴とする上 記第16項記載の方法。 19.下記工程から成ることを特徴とするパイプラインしたデータ処理システム 内の例外を取扱う方法。 (ア)実行がパイプラインに入るに連れ、レジスタ内に実行をメモリすること。 (イ)例外が起きたときに実行をフラッギングすること。 (ウ)実行の処理を休止させること。 (エ)実行の値が変更されないか又は交換されるので、レジスタ内の実行の値を 凍結すること。 (オ)例外をなすしや断できない例外実行と実行を交換すること。 (カ)例外実行を処理すること。 (キ)実行の処理を続行すること。 20.タグドトークンデータフロー処理方式において、トークンデータ目的は下 記構成要素から成ること。 (ア)作動フレームの始期に対するポインタ及びインストラクションに対するポ インタ。 (イ)値。
JP2500668A 1988-11-18 1989-11-16 データフローマルチプロセサシステム Pending JPH04503416A (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US27449888A 1988-11-18 1988-11-18
US274,498 1988-11-18
US07/396,480 US5241635A (en) 1988-11-18 1989-08-21 Tagged token data processing system with operand matching in activation frames
US396,480 1989-08-21

Publications (1)

Publication Number Publication Date
JPH04503416A true JPH04503416A (ja) 1992-06-18

Family

ID=26956858

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2500668A Pending JPH04503416A (ja) 1988-11-18 1989-11-16 データフローマルチプロセサシステム

Country Status (5)

Country Link
US (1) US5241635A (ja)
EP (1) EP0444088B1 (ja)
JP (1) JPH04503416A (ja)
DE (1) DE68925646T2 (ja)
WO (1) WO1990005950A1 (ja)

Families Citing this family (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0576749B1 (en) 1992-06-30 1999-06-02 Discovision Associates Data pipeline system
EP0473714A1 (en) * 1989-05-26 1992-03-11 Massachusetts Institute Of Technology Parallel multithreaded data processing system
US5353418A (en) * 1989-05-26 1994-10-04 Massachusetts Institute Of Technology System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
DE4104568A1 (de) * 1990-02-15 1991-08-29 Hitachi Ltd Verfahren und vorrichtung zur programmverarbeitung
JP2682232B2 (ja) * 1990-11-21 1997-11-26 松下電器産業株式会社 浮動小数点演算処理装置
US5430850A (en) * 1991-07-22 1995-07-04 Massachusetts Institute Of Technology Data processing system with synchronization coprocessor for multiple threads
US5414821A (en) * 1991-12-17 1995-05-09 Unisys Corporation Method of and apparatus for rapidly loading addressing environment by checking and loading multiple registers using a specialized instruction
IL100598A0 (en) * 1992-01-06 1992-09-06 Univ Bar Ilan Dataflow computer
US5371684A (en) * 1992-03-31 1994-12-06 Seiko Epson Corporation Semiconductor floor plan for a register renaming circuit
US5768561A (en) 1992-06-30 1998-06-16 Discovision Associates Tokens-based adaptive video processing arrangement
US6435737B1 (en) 1992-06-30 2002-08-20 Discovision Associates Data pipeline system and data encoding method
US5828907A (en) 1992-06-30 1998-10-27 Discovision Associates Token-based adaptive video processing arrangement
US6112017A (en) 1992-06-30 2000-08-29 Discovision Associates Pipeline processing machine having a plurality of reconfigurable processing stages interconnected by a two-wire interface bus
US6047112A (en) 1992-06-30 2000-04-04 Discovision Associates Technique for initiating processing of a data stream of encoded video information
US6330665B1 (en) 1992-06-30 2001-12-11 Discovision Associates Video parser
US5603012A (en) 1992-06-30 1997-02-11 Discovision Associates Start code detector
US5809270A (en) 1992-06-30 1998-09-15 Discovision Associates Inverse quantizer
US6079009A (en) 1992-06-30 2000-06-20 Discovision Associates Coding standard token in a system compromising a plurality of pipeline stages
US6067417A (en) 1992-06-30 2000-05-23 Discovision Associates Picture start token
EP0586767A1 (en) * 1992-09-11 1994-03-16 International Business Machines Corporation Selective data capture for software exception conditions
JPH06124352A (ja) * 1992-10-14 1994-05-06 Sharp Corp データ駆動型情報処理装置
DE69327504T2 (de) * 1992-10-19 2000-08-10 Koninkl Philips Electronics Nv Datenprozessor mit Operationseinheiten, die gemeinsam Gruppen von Registerspeichern benutzen
US5761407A (en) * 1993-03-15 1998-06-02 International Business Machines Corporation Message based exception handler
US5861894A (en) 1993-06-24 1999-01-19 Discovision Associates Buffer manager
JP2560988B2 (ja) * 1993-07-16 1996-12-04 日本電気株式会社 情報処理装置および処理方法
US5765014A (en) * 1993-10-12 1998-06-09 Seki; Hajime Electronic computer system and processor element for processing in a data driven manner using reverse polish notation
US5448730A (en) * 1993-12-14 1995-09-05 International Business Machines Corporation Correlating a response with a previously sent request in a multitasking computer system using pipeline commands
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
CN100412786C (zh) 1994-12-02 2008-08-20 英特尔公司 可以对复合操作数进行压缩操作的微处理器
US5710923A (en) * 1995-04-25 1998-01-20 Unisys Corporation Methods and apparatus for exchanging active messages in a parallel processing computer system
WO1997008623A1 (en) * 1995-08-23 1997-03-06 Symantec Corporation Coherent file system access during defragmentation operations on a storage media
US5761740A (en) * 1995-11-30 1998-06-02 Unisys Corporation Method of and apparatus for rapidly loading addressing registers
US5940859A (en) 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US5857096A (en) * 1995-12-19 1999-01-05 Intel Corporation Microarchitecture for implementing an instruction to clear the tags of a stack reference register file
US5701508A (en) 1995-12-19 1997-12-23 Intel Corporation Executing different instructions that cause different data type operations to be performed on single logical register file
US6792523B1 (en) 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US6065108A (en) * 1996-01-24 2000-05-16 Sun Microsystems Inc Non-quick instruction accelerator including instruction identifier and data set storage and method of implementing same
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US6128299A (en) * 1996-08-23 2000-10-03 Virata Ltd. System for low-cost connection of devices to an ATM network
US5778233A (en) * 1996-10-11 1998-07-07 International Business Machines Corporation Method and apparatus for enabling global compiler optimizations in the presence of exception handlers within a computer program
US5999969A (en) * 1997-03-26 1999-12-07 Unisys Corporation Interrupt handling system for message transfers in network having mixed hardware and software emulated modules
US5944788A (en) * 1997-03-26 1999-08-31 Unisys Corporation Message transfer system and control method for multiple sending and receiving modules in a network supporting hardware and software emulated modules
US5842003A (en) * 1997-03-26 1998-11-24 Unisys Corporation Auxiliary message arbitrator for digital message transfer system in network of hardware modules
US5983266A (en) * 1997-03-26 1999-11-09 Unisys Corporation Control method for message communication in network supporting software emulated modules and hardware implemented modules
US6064818A (en) * 1997-04-10 2000-05-16 International Business Machines Corporation Straight path optimization for compilers
RU2148857C1 (ru) * 1998-02-20 2000-05-10 Бурцев Всеволод Сергеевич Вычислительная система
US6148392A (en) * 1998-09-08 2000-11-14 Hyundai Electronics Industries Co., Ltd. Low power implementation of an asynchronous stock having a constant response time
AU2001273873A1 (en) * 2000-06-13 2001-12-24 Synergestic Computing Systems Aps Synergetic computing system
GB0019341D0 (en) * 2000-08-08 2000-09-27 Easics Nv System-on-chip solutions
US6880070B2 (en) * 2000-12-08 2005-04-12 Finisar Corporation Synchronous network traffic processor
US7383421B2 (en) * 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
WO2003038645A2 (en) * 2001-10-31 2003-05-08 University Of Texas A scalable processing architecture
JP4272371B2 (ja) * 2001-11-05 2009-06-03 パナソニック株式会社 デバッグ支援装置、コンパイラ装置、デバッグ支援プログラム、コンパイラプログラム、及びコンピュータ読取可能な記録媒体。
US8935297B2 (en) * 2001-12-10 2015-01-13 Patrick J. Coyne Method and system for the management of professional services project information
US7035996B2 (en) * 2002-01-17 2006-04-25 Raytheon Company Generating data type token value error in stream computer
GB2392742B (en) * 2002-09-04 2005-10-19 Advanced Risc Mach Ltd Synchronisation between pipelines in a data processing apparatus
JP3503638B1 (ja) * 2002-09-26 2004-03-08 日本電気株式会社 暗号装置及び暗号プログラム
US7979384B2 (en) * 2003-11-06 2011-07-12 Oracle International Corporation Analytic enhancements to model clause in structured query language (SQL)
US8074051B2 (en) 2004-04-07 2011-12-06 Aspen Acquisition Corporation Multithreaded processor with multiple concurrent pipelines per thread
US7716455B2 (en) * 2004-12-03 2010-05-11 Stmicroelectronics, Inc. Processor with automatic scheduling of operations
RU2281546C1 (ru) * 2005-06-09 2006-08-10 Бурцева Тамара Андреевна Способ обработки информации на основе потока данных и устройство для его осуществления
US7451293B2 (en) * 2005-10-21 2008-11-11 Brightscale Inc. Array of Boolean logic controlled processing elements with concurrent I/O processing and instruction sequencing
KR20080094005A (ko) * 2006-01-10 2008-10-22 브라이트스케일, 인크. 병렬 프로세싱 시스템에서 멀티미디어 데이터의 서브블록들을 프로세싱하기 위한 방법 및 장치
US20080189251A1 (en) * 2006-08-25 2008-08-07 Jeremy Branscome Processing elements of a hardware accelerated reconfigurable processor for accelerating database operations and queries
US20080059762A1 (en) * 2006-09-01 2008-03-06 Bogdan Mitu Multi-sequence control for a data parallel system
US20080055307A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski Graphics rendering pipeline
US20080059763A1 (en) * 2006-09-01 2008-03-06 Lazar Bivolarski System and method for fine-grain instruction parallelism for increased efficiency of processing compressed multimedia data
US20080244238A1 (en) * 2006-09-01 2008-10-02 Bogdan Mitu Stream processing accelerator
WO2008027567A2 (en) * 2006-09-01 2008-03-06 Brightscale, Inc. Integral parallel machine
US9563433B1 (en) 2006-09-01 2017-02-07 Allsearch Semi Llc System and method for class-based execution of an instruction broadcasted to an array of processing elements
US20080059467A1 (en) * 2006-09-05 2008-03-06 Lazar Bivolarski Near full motion search algorithm
WO2009147613A1 (en) * 2008-06-02 2009-12-10 Nxp B.V. Viewer credit account for a multimedia broadcasting system
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
WO2013100783A1 (en) 2011-12-29 2013-07-04 Intel Corporation Method and system for control signalling in a data path module
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US10067871B2 (en) * 2014-12-13 2018-09-04 Via Alliance Semiconductor Co., Ltd Logic analyzer for detecting hangs
US20170315812A1 (en) 2016-04-28 2017-11-02 Microsoft Technology Licensing, Llc Parallel instruction scheduler for block isa processor
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10223002B2 (en) * 2017-02-08 2019-03-05 Arm Limited Compare-and-swap transaction
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US10496574B2 (en) 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10564980B2 (en) * 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4153932A (en) * 1974-03-29 1979-05-08 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
US3962706A (en) * 1974-03-29 1976-06-08 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
US4145733A (en) * 1974-03-29 1979-03-20 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
US4149240A (en) * 1974-03-29 1979-04-10 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of data structure operations
US4130885A (en) * 1976-08-19 1978-12-19 Massachusetts Institute Of Technology Packet memory system for processing many independent memory transactions concurrently
US4128882A (en) * 1976-08-19 1978-12-05 Massachusetts Institute Of Technology Packet memory system with hierarchical structure
CH632365A5 (de) * 1978-01-30 1982-09-30 Patelhold Patentverwertung Datenaustauschverfahren zwischen mehreren partnern.
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
DE3269432D1 (en) * 1981-10-15 1986-04-03 Nat Res Dev Data-packet driven digital computer
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
JPS60101644A (ja) * 1983-11-07 1985-06-05 Masahiro Sowa ノイマン型コンピュータプログラムを実行するコントロールフローコンピュータ
US4757440A (en) * 1984-04-02 1988-07-12 Unisys Corporation Pipelined data stack with access through-checking
US4837676A (en) * 1984-11-05 1989-06-06 Hughes Aircraft Company MIMD instruction flow computer architecture
JPS61276032A (ja) * 1985-05-31 1986-12-06 Matsushita Electric Ind Co Ltd 情報処理装置
JPH0632056B2 (ja) * 1985-05-31 1994-04-27 松下電器産業株式会社 デ−タ処理装置
JP2564805B2 (ja) * 1985-08-08 1996-12-18 日本電気株式会社 情報処理装置
US5021947A (en) * 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
US4811214A (en) * 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US4893234A (en) * 1987-01-15 1990-01-09 United States Department Of Energy Multi-processor including data flow accelerator module
US4922413A (en) * 1987-03-24 1990-05-01 Center For Innovative Technology Method for concurrent execution of primitive operations by dynamically assigning operations based upon computational marked graph and availability of data
US4916652A (en) * 1987-09-30 1990-04-10 International Business Machines Corporation Dynamic multiple instruction stream multiple data multiple pipeline apparatus for floating-point single instruction stream single data architectures

Also Published As

Publication number Publication date
DE68925646D1 (de) 1996-03-21
EP0444088B1 (en) 1996-02-07
DE68925646T2 (de) 1996-10-17
US5241635A (en) 1993-08-31
EP0444088A1 (en) 1991-09-04
WO1990005950A1 (en) 1990-05-31

Similar Documents

Publication Publication Date Title
JPH04503416A (ja) データフローマルチプロセサシステム
US7853937B2 (en) Object-oriented, parallel language, method of programming and multi-processor computer
US7650486B2 (en) Dynamic recalculation of resource vector at issue queue for steering of dependent instructions
Melhem Introduction to parallel computing
US6470443B1 (en) Pipelined multi-thread processor selecting thread instruction in inter-stage buffer based on count information
JP5102758B2 (ja) 複数の発行ポートを有するプロセッサにおける命令グループを形成する方法、並びに、その装置及びコンピュータ・プログラム
US9672035B2 (en) Data processing apparatus and method for performing vector processing
JP2008535074A5 (ja)
Hosabettu et al. Proof of correctness of a processor with reorder buffer using the completion functions approach
US20200319893A1 (en) Booting Tiles of Processing Units
Kawano et al. Fine-grain multi-thread processor architecture for massively parallel processing
JP3175768B2 (ja) 複合型命令スケジューリング処理装置
Nuth The named-state register file
Rodrigues Programming future architectures: dusty decks, memory walls, and the speed of light
Abnous et al. Architectural design and analysis of a VLIW processor
JP2002318689A (ja) 資源使用サイクルの遅延指定付き命令を実行するvliwプロセッサおよび遅延指定命令の生成方法
JP3696531B2 (ja) キューvliwプロセッサ
Beckman Parallel LU decomposition for sparse matrices using quadtrees on a shared-heap multiprocessor
JP2856784B2 (ja) 電子計算機
Maurer Mapping the Data Flow Model of Computation into an Enhanced Von Neumann Processor.
Yeh Accelerating Parallel Tasks by Optimizing GPU Hardware Utilization
JP2522372B2 (ja) デ―タ駆動形計算機
Kotikalapoodi Fine-grain parallelism on sequential processors
Juvaste Modeling parallel shared memory computations
Formella et al. Cost effectiveness of data flow machines and vector processors