JPS63501605A - 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法 - Google Patents

同時に処理されうる2以上の命令を含むストリームを並列処理するための方法

Info

Publication number
JPS63501605A
JPS63501605A JP61506185A JP50618586A JPS63501605A JP S63501605 A JPS63501605 A JP S63501605A JP 61506185 A JP61506185 A JP 61506185A JP 50618586 A JP50618586 A JP 50618586A JP S63501605 A JPS63501605 A JP S63501605A
Authority
JP
Japan
Prior art keywords
instruction
instructions
processor
program
intelligence
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
JP61506185A
Other languages
English (en)
Other versions
JP3084282B2 (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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25162057&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPS63501605(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by ビアクス・コーポレイション filed Critical ビアクス・コーポレイション
Publication of JPS63501605A publication Critical patent/JPS63501605A/ja
Application granted granted Critical
Publication of JP3084282B2 publication Critical patent/JP3084282B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • 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/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • 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/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • 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/4482Procedural
    • G06F9/4484Executing subprograms
    • 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/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Landscapes

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

Abstract

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

Description

【発明の詳細な説明】 自然の同時的発生を処理するための 並列プロセッサシステムおよび方法 〔発明の背景〕 〔発明の分野〕 本発明は、並列プロセッサコンピュータシステムに関し、特定すると、命令スト リーム内の自然の同時的発生を検出するためのソフシウエアを有しかつ検出され た自然的同時発生を処理するための複数のプロセッサ要素を設ける並列プロセッ サコンピュータシステムに!J−jる。
〔従来技術〕
はとんどすべての従来のコンピュータシステムは、r Yon Neamann  J wI造より成る。事実、ifkmの4世代のコンピュータは、データを逐 次処理するために単一の大形のプロセッサを使用するVon Neuman型マ シンであった。
近年、Von Neamann型でない第5世代コンピュータの創生にかなりの 努力が向けられて来ている。いわゆる第5世代のコンピュータの1つの特徴は、 多数のプロセッサ要素を使用することにより並列計算を遂行できる能力に関係す る。超大規模集積(VLSI)の技術の進歩とともに、多数の個々のプロセッサ 要素の使用の経済的価格はその価格効率が高くなる。
実際の第5世代のマシンが構成されているかいないかはM論のあるところである が、種々の特徴が定義され、分類されて来た。第5世代マシンは、単に第4世代 マシンの典型である単一命令、マルチプルデータでなく、マルチゾル命令、マル チゾルデータ(MIMD)スジリームを使用できなければならない。本発明は、 第5世代非VonNettman 型より成る。本発明は、シングルコンチフス またはマルチプルコンチクストにおいてMIMDス)リームを使用できる( S C−MIMDまたはMC−MIMD )。
これらの用語は以下で定義される通りである。本発明はまた、シングルフンチク ストSIMD(SC−8IMD)マシンおよびマルチプルコンチクストSIMD (MC−8IMD)ならびにシングルコンチクスト、シングル命令、シングル命 令タ(SC−8ISD)マシンおよびマルチコンチクスト、シンクル命令、シン クル命令タ(MC−8ISD)マシンの全コンピュータの分類において応用を有 するものである。
第5世代コンピュータシステムの設計は完全に流動状態にあるが、特定のカテゴ リのシステムが画定されて来ている。斯界の研究者の中には、コンピュータの形 式を、システムの「制御」または「同期」が遂行される態様に基づいて分けてい るものがいる。制御に依る分類には、制御駆動、データ駆動および低減(命令) 駆動が含まれる。制御駆動システムは、従属プリセッサに依る処理を制御するた めに、プログラムカウンタまたはマスクプロセッサのような集中化制御装置を利 用する。制御駆動マシンの例は、Columbim大学のNon −VO!1− 1マシンである。
データ駆動システムにおいては、システムの制御は、処理のために必要とされる データの実際の到着から行なわれる。データ駆動マシンの例は、I轟nW&lt 島onにより英国で開発されたMinchester大学データフローマシンで ある。低減駆動システムは、処理されたアクティビティ要求が生ずるとき処理を 制御する。低減プロセッサの例は、North Caroling大学で開発さ れつ\あるMAGO低減マシンである6 non−Von−1マシン、Manc hestsr マシンおよびMAGO低減マシンの特徴は、Davlgのrco nputer Arehlfeeture J % IEEE Spectru m 。
1983年11月発行、に論述されている。比較すると、データ駆動システムお よび要求駆動システムは非集中化手法であり、制御駆動システムは集中化手法を 表わす。
本発明は、「時間駆動」と称すことができる第4の分類に入れるのがより適正で ある。本発明の制御システムは、データ駆動システムおよび命令駆動システムと 同様に非集中化されている。しかしながら、不発明では、制御駆動システムと同 様に、1つのアクティビティが実行の用意が整っているとき処理が行なわれる。
並列処理の概念を含む殆んどのコンピュータシステムは、多数の異なる形式のコ ンピュータアーキテクチャから派生して来た。この場合、コンピュータアーキテ クチャの独特の性質のため、それ自身の処理言語、または既存の言語が使用に適 合するように相当変更されることを要求される。この種のコンピュータアーキテ クチャの高度に平行化された構造を利用するため、プログラムは、必要なソフト ウェアを書くためにコンピュータアーキテクチャの親密な知識を有することが必 要とされる。この結果、これらの機械のプログラムの作成は、使用者の相当量の 努力と費用と時間を必要とする。
この活動と同時に、特定のアーキテクチャと無関係に、新しいソフトウェアおよ び言語の創生についての研究が進行しズきている。これは、より直接的態様で計 算プルセスの固有の平行化を解決するであろう。しかしながら、スーパーコンピ ュータの設計におけるたい【いの努力は、新しいハードウェアの開発に集中され ており、新しいソフトウェアに向けられた努力はずっと少ない。
Davimは、第5世代マシンの設計の最良の手法は、ソフトウェアにおける同 時的プログラムタスクをコンピュータアーキテクチャの物理的ハードウェア資源 にマツピングすることに努力を集中すべきであると推測した。
D&Yl#は、この手法を「タスク割当て」の1つと名づけ、第5世代アーキテ クチャ成功の究極的なキーであると強調する。彼は、割当ての方式を2つの一般 的形式に分類する。「スタティック割当て」は、実行前に一度遂行され、「ダイ ナミック割当ズ」は、プログラムが実行すなわちランされるたびにハードウェア により遂行される。
本発明は、スタティック割当て方式を利用し、−集後および実行前に所与のプロ グラムに対してタスクの割当てを行なう。第5世代マシンの設計における「タス ク割当て」手法の確認は、Vtah大学で構成された「Data −drlvs n Machine−IIJの設計でl)twigにより行なわれた。
「Data −driven Machine −II Jにおいて、プログラ ムは、実際のマシングラフまたはアーキテクチャを疑似するプルグラムグラフに 貞集された。
タスク割当てはまた、GaJski等の「EIl・at量alIssues I n Multi −procs+s*or SystemsJ なる論文、Co mputer s 19 B 5年6月発行、において「スケジューリング」と 呼ばれている。Gajikl等は、スケジューリングのレベルについて記載し、 高レベルスケジューリング、中間レベルスケジューリングおよび低レベルスケジ ューリングを含むとした。本発明は、低レベルスケジューリングの1つであるが 、「ファスト−イン−ファースト−アウト」 「ラウンドーロビン」、「ショー ティスト・タイプ・イン・ジョブ−ファースト」または「ショーティスト・リメ インニングータイム」の従来のスケジューリングの方策を利用しない。Gajs ki等はまた、オーバーヘッドコストがフンパイル時間に払われるという点でス タティックスケジューリングの利点を認めている。しかしながら、Gajskl 等は、スタティックスケジューリングに関して、各タスクのラン時間特性を九測 する上で不効率があり得るという不利益を確認した。(不発明においてはこれが 存在しない)。それゆえ、Oceam言語やBt+l]dogコンパイラにおい 【見出される低レベルスタティックスケジューリングに対する従来のアプローチ は、本発明のソフトウェア部分には存在しない。実際に、本発明の低レベルスタ ティックスケジューリングは、ランク時におけるマシンによるダイナミックスケ ジューリングにおいて一般に見られるのと同じ形成でのプルセッサの利用、ある いはそれより十分の利用を可能にする。さらに、本発明の低レベルスタティック スケジューリングは、(例えば) Oeeam言語において必要とされるプログ ラマの介入なしに自動的に遂行される。
Davimは、さらに、システムの実際の物理的トポロジーがシステムの全性能 に相当の影響を及ぼすという点において同時処理において通信が重要な特徴であ ることを認めている。
例えば、たいていのデータフローマシンに見られる基本的問題は、プロセッサ間 においてデータを動かすのに要する多量の通信オーバーヘッドコストである。デ ータがバスを介して移動される場合には、データがバスにアクセスするのに競合 しなければならないから、相当のオーバヘッドと、場合によってはシステムの劣 化をもたらすおそれがある。例えば、D&マ11の論文において言及されるAr vlndデータフp−マシンは、データを1位置に残存させるためエーストラク チャストリームを利用する。
しかして、このデータは、その後全プロセッサによりアクセス可能となるもので ある。不発明は、その−側面として、ハードウェアおよびソフトウェアを用い、 ハードウェア資源を全体的に結合することに基づき、マルチ処理を遂行するシス テムに本質的に存在する通信の問題を相当に簡単化する方法を教示する。
非Won N@nman 型マルチプロセッサシステムの他の特徴は、処理され つ\ある並列化の粗さのレベルである。
Gajaki 等はこれを「パーティショニング(区分化)」と称した。GaJ ski等に依るシステムの設計における目標は、最低のオーバーへッドコスFで できるだけ並列化を得ることである。本発明は、利用可能な最低のレベルで、す なわち「命令当り」レベルで同時処理を遂行する。
本発明の他の側面に依れば、この並列化レベルを実行時間オーバーヘッドコスト なしに得る方法が得られる。
マルチプルセッサ並列マシンに関してなされたすべての成果に拘らず、 Dav itは、この種のソフトウェアやハードウェアが、主として個々のタスクに対し て設計されたものであり、VO!I N・ummanアーキテクチャに関して折 紙つきであったすべての形式のタスクやプログラムに対して可能的に適当でない ことを認めた。本発明は、一般的に多くの異なる形式のタスクに適当なコンピュ ータシステムおよび方法を開示するものである。何故ならば、本システムおよび 方法は、非常にm細な粗度で命令ストリームに存在する自然的同時発生に作用す るからである。
、スべての汎用コンピュータシステムおよび多くの専用コンピュータシステムは 、マルチプルアクティビティまたはプログラムの処理を支持する動作システムま たはモニタ/制御プレグラムを有する。ある場合には、この処理は同時に起こる 。他の場合には、処理はアクティピテイ間で交番し、1時に1つの7タテイビテ イのみが処理用資源を制御することもある。この後者の場合は、特定のコンピュ ータシステムに依存して、時分割、時スライシングまたは同時的(完全同時では ない)発生的実行と称されることが多い。また、これらのアクティビティまたは プログラムは、特定のシステムに依存して、普通、タスク、プロセスまたはフン チクストと呼ばれる。すべての場合とも、種々のプレグラム間、およびプログラ ムと動作系間の制御のスイッチングを維持するための方法が存在する。このスイ ッチングは、普通、タスクスイッチング、プロセススイッチングまたはフンチク ストスイッチングと呼ばれる。不明細書を通じて、これらの用語は類似語と考え られ、フンチクストおよびコンチクストスイッチングなる用語を一般に使用しで ある。
それゆえ、本発明は、1または複数の異なる使用者(ユーザ)により多くの興な る従来のプログラムに基づいて同時に動作し得る非Ton Neumann型M IMDコンピュータシステムに関する。各プログラムの自然的同時発生は、非常 に細かいレベルの粗度でスタティックに割り当てられ、そして本質的に目的フー ドレベルで命令ストリームにインテリジェンスが加えられる。加えられるインテ リジェンスは、例えば、本発明のための時間駆動非集中化制御を提供するため、 論理プロセッサ番号および命令放出時間を含むことができる。自然的同時発生の 検出および低レベルスフジューリング、およびインテリジェンスの追加は、所与 のプログラムに対して1回のみ、プログラムの従来の編集後実行前にユーザの介 入なしにのプロセッサ要素を含むシステムで実行される。本発明の1実施例にお いて、プロセッサは同一である。この例示の実施例におけるプロセッサ要素は、 種々の命令の実行から得られる実行状態情報を含まない。すなわち、プロセッサ 要素はコンチクトスフリーである。加えて、交数のコンチクストファイルが各ユ ーザに1つずつ設けられ、複数のプロセッサ要素は、命令の処理中、プロセッサ 要素を共有資源に全体的に結合することにより、任意のフンチクストファイルに 含まれるどの記憶資源にでもアクセスできる。本発明の好ましい側面においては 、灸件フードまたは結果レジスタは、個々のプロセッサ要素に存在しない。
〔発明の概要〕
本発明は、非VOKI N・umann型であり、シングルまたはマルチプルフ ンチフス) 5ISD、SIMDおよびMIMD型態での使用に適合される方法 およびシステムを提供するものである。本発明の方法およびシステムは、無数の 従来形式のプログラムに使用者の介入なしに作用し得る。
本発明の一側面に依れば、非常に細かいレベルの在民にて、プログラムの基本ブ ロック(BB)における自然的同時発生が本質的に目的コードレベルでスタティ ックに決定され、時間駆動非集中化制御を提供するため、各基本プルツクにおけ る命令ストリームにインテリジェンスが加えられる。自然的同時発生の検出およ び低レベルスフジューリングおよびインテリジェンスの付加は、従来の編集後、 実行前に所与のプログラムに対して一度のみ行なわれる。この時点に1すなわち プログラムの実行前、後刻の全命令資源の実行中の使用が割り当てられる。
本発明の他の側面に依れば、追加されたインテリジェンスを含む基本的ブロック が、この特定の実施例においては以前の動作からの実行状Hff?報を各々保持 しない複数のプロセッサ要素を含むシステム上で実行される。それゆえ、本発明 のこの実施例に依る全プロセッサ要素はコンチクストなしである。命令は、命令 放出時間に基づき実行のために選択される。本実施例における各プロセッサ要素 は、従属の命令が同一または異なるプロセッサ要素で実行され得るように、命令 毎方式で命令を実行できる。本発明の所与のプロセッサ要素は、1つのコンチク ストからの命令、貌いて他のコンチフスFからの命令を実行できる。そのとき、 所与の命令を処理するために必要なすべての動作およびフンチクスト情報は、シ ステムの他のところに包含され【いる。
フンチクストフリープロセッサ要素の多くの代替的実施が可能であるこkを留意 されたい。非パイプライン式実施においては、各プロセッサ要素はモノリシック であり、単一の命令を次の命令を受け入れる前にその完了まで実行する。
本発明の他の側面においては、フンチクストフリープロセッサは、パイプライン 結合プルセッサ要素であり、この場合、各命令は完了まで数マシン命令り四ツク サイクルを必要とする。一般に、各クロックサイクル中、新しい命令がパイプラ インに入り、完了した命令がパイプラインを出・単一の命令クロックサイクルの 有効な命令実行時間を与える。しかしながら、若干の命令をマイクロコード化し て、多くのマシン命令サイクルを必要とする複雑な機能を遂行することもできる 。この場合、新しい命令の入りは、複雑な命令が完了してしまうまで一時停止さ れ、その後、各りpツクサイクル内の通常の命令入りおよび出シーケンスが継続 する。パイプライン結合は、標準プロセッサ実施接絶であり、後で詳しく論述す る。
本発明のシステムおよび方法は、以下の説明および図面で詳しく説明される。
図面の簡単な説明 本発明のその他の目的、特徴および利点は、以下の説明から明らかとなろう。
第1図は本発明のTOLLソフトウェアの一般化されたフルーチャートである。
第2図は従来のコンパイラ出力内に存在する逐次の一連の基本プルツクの線図で ある。
第3図は本発明の1実施例にしたがい各基本ブロックに加えられる延長インテリ ジェンスの線図である。
第4図は本発明の1実施例にしたがい所与の基本ブロック内の各命令に加えられ る延長インテリジェンスの詳細を示す線図である。
第5図は基本ブロックの別個の実行セットへの分割を示す線図である。
第6図は本発明の好ましい実施例に依る装置のアーキテクチャ構造のブロック図 である。
第7a〜7c図は3つの逐次の命令放出時間中におけるネツFワード相互接続を 示す線図である。
第8〜11図は本発明の1実施例のソフトウェアの特徴を記述するフルーチャー トである。
第12図はTOLLソフトウェアにおける実行セットの1つの好ましい形式を記 述する線図である。
第13図は本発明の好ましい実施例に依るレジスタファイル組織を表わす線図で ある。
第14図はサブルーチン呼び中における異なるレイルにあるレジスタ間の切替え を示す線図である。
第15図は本発明の好ましい実施例の論理的資源ドライバ(LRD)の構造を示 すブロック図である。
第16図は本発明の好ましい実施例の命令キャッシュ制御装置およびキャッシュ の構造を示すブロック図である。
第17図は本発明の好ましい実施例のPIQバッファ装置およびPIQパスイン ターフェース装置の構造を示すブロック図である。
第1!3図は本発明の好ましい実施例に依るプレセッサ要素からPE−LRDネ ットワークを経てPIQプロセッサ整列回路に至る相互接続を示すブロック図で ある。
第19図は本発明の好ましい実施例のブランチ実施装置の構造を示すブロック図 である。
第20図は本発明の好ましい実施例のフンチクストファイル状態コードメモリの 組織を示す線図である。
第21図は本発明のパイプライン結合プロセッサ要素の1実施例の構造を示すブ ロック図である。
第22(a)〜22(d)図は第21図のプレセッサ要素と関連して使用される データ構造を示す線図である。
〔一般的説明〕
〔tインFロダクション〕 以下の2節において、本発明のソフトウェアおよびハードウェアの一般的説明を 行なう。本発明のシステムは、ハードウェアおよびソフトウェア要素間の独特な 関係に基づいて設計される。多くの従来技術に依るアゾν−チは、主として、新 規なアーキテクチャ設計または独特のソフトウェアアルゴリズムに基づいてマル チプロセッサに依る並列処理に向けられていたが、本発明は独特のハードウェア /ソフトウェア関係に基づく。本発明のソフトウェアは、ハードウェアを通る命 令スジリームのルート設定および同期のためインテリジエン)情報を提供する。
これらのタスクの遂行において、ソフトウェアは、使用者がアクセス可能な資源 、例えばジェネラルレジスタ、状態フード記憶レジスタ、メそりおよびスタック ポインタを空間的および一時的に管理する。ルート設定および同期は、使用者の 介入なしに遂行され、オリジナルソースコードへの変更を必要としない。加えて 、命令ストリームを分析して、命令ストリームのルート設定および同期を制御す るために追加のインテリジェンス情報を提供することは、所与のソフトウェア部 分のプログラム準備プロセス(いわゆる「スタティック割当て」)中のみ遂行さ れ、ある種の従来技術の手法に見られるように実行中は遂行されない(実行中の 遂行は「ダイナミック割当て)という。本発明により行なわれる分析は、ハード ウェア依存性であり、従来のコンパイラからの目的コード出力で遂行され、それ ゆえ有利なことにプログラム言語依存性でない。
換言すれば、本発明に依れば、ソフトウェアは、目的フードプログラムをシステ ムのハードウェアに変換し、システムが従来のシステムを代表する効率よりも一 層効率的に実行するようにする。それゆえ、ソフトウェアは、すべてのハードウ ェアの個性およびプログラム命令ストリームの実行に及ぼすそれらの影響を取り 扱わねばならない。例えば、ソフトウェアは、必要なとき、モノリシックな単一 サイクルまたはパイプライン結合されたプレセッサ要素に順応しなければならな い。
(2,一般的なソフトウェアの説明〕 第1図を参照すると、一般的にTOLLと称される本発明のソフトウェアは、コ ンピュータ処理システム160に配置されている。処理システム160は標準的 コンパイラ出力100で動作するが、この出力は、普通、「P−Cod・」のよ うな代表的目的コードまたは中間目的フードである。従来形式のコンパイラの出 力は、以下において命令スジリームとして言及される目的コード命令の順次スト リームである。従来形式言語プロセッサは、普通、逐次命令ストリームを生成す る際下記の機能を遂行する。
1:入力テキストの辞書的なスキャン 2:記号表構造を含む凝縮された入力テキストの構文スキアン 3:並列化検出およびベクトル化を含むマシンと独立の最適化、の遂行。
4:命令の後記性、必要とされる資源およびハードウェアの構造的特性を考慮に 入れる中間(PSEUDO)コード生成。
逐次命令ストリームの創成において、従来形式のコンパイラは、一連の基本ブロ ック(BB)を創成するが、これは単一エントリ、単一エグジット(SESE) の複数群の連続命令である。例えば、Alfr@d V、 AhaおよびJef fery D、 UllmanのrPrincipl@@of Compile r D@sign’5Addiaot+ W@5leys 1979年発行pg 、6,409,412−413およびDavid Griesのr Con+p il@r Con5tructionfor Digital Compute rs J 、Wlley s 1971年発行、参照。
従来のコンパイラは、そのタスクの遂行において基本プロック情報を利用するが 、如何なる基本ブロック指示なしにも逐次命令の出力ストリームを供給する。本 発明の例示の具体例におけるTOLLソウトウエアは、従来のコンパイラ内で創 成される形成された基本ブロック(BB)上で動作するように設計される。従来 の5ESE基本ブロックの各々においては、正確に1つのブランチがあり(ブロ ックの終りに)、制御の従属性はない。プルツク内の唯一の関連する依存性は、 命令により必要とされる資源間の依存性である。
基本ブロックフォーマツFのコンパイラ100の出力は、第2図に例示されてい る。第1図を参照すると、コンピュータ160において処理されつ−ある本発明 のTOLLソフトウェア110は、コンパイラ出力100に3つの基本的決定機 能を遂行する。これらの機能は、命令の資源を分析すること、各基本ブロック1 30の各命令に対してインテリジェンスを延長すること、および1または複数の 基本ブロック140より成る実行セットを造ることである。プロセッサ100か ら得られるこれら3つの基本的機能120.130および140の出力は、本発 明のTOLLソフFウェア出力150である。
上述のように、本発明のTOLLソフトウェアは、1度のみ使用者の介入なしに コンパイラ出力100に作用する。それゆえ、任意の所与のプログラムに対して 、TOLLソフトウェアは、コンパイラ出力100に一度だけ作用することを必 要とする。
TOLLソフトウェア100の機能120.130.140は、各基本ブロック 内の命令スジリームを自然の同時的発生について分析し、命令ス) リームの本 発明の実際ツバ−ドウエアシステム上へのマツピングを遂行し、マツピングプロ セスから生ずるかも知れないハードウェアにより誘導される個性を軽減し、得ら れた命令ス) IJ−ムを本発明のハードウェアとともに使用されるべき実際の マシン言語にコード化し、TOLLソフトウェア110は、命令ストリームを分 析し、その結果としてプロセッサ要素および資源を割り当てることによりこれら の機能を遂行する。特定の1実施例において、プロセッサはフンチクストフリー である。TOLLソフトウェア100は、例えば出力命令ストリームの各命令に 適当な放出時間を割り当てることにより、全システムの「同期」を行なう。
命令は、3つの基本的形式の依存性しかないが、種々の方法で相互に依存性とし 得る。第1に、命令ストリームの実際の構造に起因して手順的な依存性がある。
すなわち、命令は、互に、ブランチ、ジャンプ等に起因して逐次以外の順序で続 く。第2に、動作の依存性は、システムに存在する有限数のハードウェア要素に 起因する。
これらのハードウェア要素としては、汎用レジスタ、状態コードメモリ、スタッ クポインタ、プロセッサ要素およびメモリなどがある。それゆえ、2つの命令が 並列に実行されるべきときは、両命令が同じハードウェア要素を読んでいないか ぎり(もちろん要素は同時に読まれることができることを条件とする)、これら の命令は同じハードウェア要素を要求してはいけない。最後に、命令スジリーム の命令間にデータ依存性が存在する。この形式の依存性については後で詳しく論 述するが、プロセッサ要素がパイプライン結合プロセッサを含む場合特に重要で ある。一方、基本的ブロック内には、データ依存性および操作上の依存性のみが 存在する。
TOLLソフトウェア110は、プログラムの適正な実行を維持しなければなら ない。それゆえ、TOLLソフFウェアは、並列に実行される命令を表わすコー ド出力150が原直列コードの結果と同じ結果を生成することを保証しなければ ならない。これをなすため、コード150は、相互に依存性の命令に対する直列 フードと同じ相対順序で資源にアクセスしなければならない。すなわち、相対順 序が満足されねばならない。しかしながら、独立の命令の組を順序外で有効に実 行できる。
第1表には、マトリクス乗算ルーチンの内部ループを表わす5ESE基不ループ の例が記載しである。この例は本明細書を通じて使用されるが、本発明の教示は 任意の命令ス) リームに応用し得る。第1表において、命令指示は右手列に記 載されており、この基本ブロックに対する従来形式の目的コード機能表示は左手 列に表わされている。
第1表 目的フード 命令 LD RO,(R10)+ l0 LD R1,(R11)+ II MM RO,R1,R2l2 ADD R2,R3,R3l3 DECR4l4 BRN2RLOOP I5 第1表に記載される5ESE基本ブロックに包含される命令ス) 9−ムは、下 記の機能を遂行する。命令工0においては、レジスタROが、そのアドレスがR 10に含まれるメモリの内容でロードされる。
上述の命令は、アドレスがR10から取り出された後、R10の内容をインクリ メントする。命令11についても同じステートメントがなされ得る。た!シ、こ の場合、レジスタR1がロードされ、レジスタR11がインクリメントされる。
命令I2は、レジスタROおよびR1の内容を乗算せしめ、その結果がレジスタ R2に記憶される。命令X3においては、レジスタR2とレジスタR3の内容が 加算され、その結果がレジスタR3に記憶される。命令14においては、レジス タR4がデクリメントされる。命令12.13および工4はまた、それらのそれ ぞれの状態を反映する1?@の状態コードを発生させる。
命令15において、レジスタR4の内容が間接的に0について試験される(命令 14により発住される状態コードにより)。デクリメント動作が非0値を発生さ せると、ブランチが生ずる。その他の場合は、実行は、次の基本ブヮックの液初 の命令に関して進行する。
第1図を参照すると、TOLLソフトウェア110により遂行される最初の機能 は、命令の資源利用を分析することである。例示の実施例においては、第1表の 命令工0〜I5が存在する。かくして、TOLLソフトウェア110は、各命令 を分析して、命令の資源要求を確める。
この分析は、いずれかの資源がいずれかの命令により共有されるか否か、それゆ え命令が相互に独立であるか否かを決定する上において重要である。相互に独立 の命令は並列に実行でき、「自然に同時的」と呼ばれる。独立の命令は並列に実 行でき、如何なる?#報についても相互に依存せず、リードオンリー態様以外の 態様において如何なるハードウェア資源をも共有しない。
他方、相互に依存性の命令は、1セツ)K形成されるが、各セットの各命令は、 そのセットの1つ置きの命令に依存する。依存性は直接的でなくてよい。セット は、セット内の命令によって、または逆にセット内の命令により使用される資源 によって記述できる。異なるセット内の命令は完全に相互に独立である。すなわ ち、セラYにより共有される資源はない。それゆえ、セットは互に独立である。
第1表の例において、TOLLソフトウェアは、依存性の命令の2組の独立のセ ットが存在することを決定するであろう。
セットI CCI : l0111、I2、I3セット2 CC2: I4、I 5 理解できるように、命令14および15は、命令Xa−工3と無関係である。セ ット2において、工5は工4に直接的に依存している。セット1において、I2 はIOおよび工1に直接依存している。命令13はI2に直接依存しており、I OおよびXlに間接的に依存している。
本発明のTOLLソフトウェアは、依存性の命令より成るこれらの独立のセット を検出して、各セットにCC1およびCC2のような指示状態コード群を割り当 てる。
これにより、命令ストリームに対して1群または1セツ艷の状態コードしか利用 できなかったなら起こるであろう動作上の依存性は避けられる。
換言すれば、命令IOおよび工1の実行の結果は、命令工2の実行に必要とされ る。同時に、命令12の実行の結果は、命令13の実行に必要とされる。この分 析の遂行に際して、命令が資源に対して読取りおよび/または書込みを遂行する かどうかを決定する。この機能は、命令ストリームの資源要求分析と称される。
従来の教示と異なり、本発明は、依存性の命令が同じプルセッサ要素上で実行さ れることを必要としないことを教示していることに留意されたい。依存性の決定 は、追って記述するように、状態コードセットを決定し命令放出時間を決定する ことのみが必要とされる。本発明の例示の1実施例においては、異なるプロセッ サ要素について独立の命令を実行し得る。これは、プルセッサ要素のフンチクス トフリーの性質およびプルセッサ要素が全体的に共有資源に結合されるためであ る。これについても後述する。
第1表に記載される列に対する分析ステップ120の結果は、第2表に記載しで ある。
第2表 命令 機能 工0 メモリ読取り、レジスタ書込み、レジスタ読取りおよび書込み工1 メモ リ読取り、レジスタ書込み、レジスタ読取りおよび書込みI2 レジスタ2回読 取り、レジスタ書込み、状態コード設定(Set+1 )工3 レジスタ2回読 取り、レジスタ書込み、状態フード設定(S・tl)I4 レジスタ読取り、レ ジスタ書込み、状態コード設定(S@t#2)工5 状態フード読取り(S働t #2)第2表において、命令工0および工1に対して、レジスタの読取りおよび 書込みが行なわれ、統い℃メモリの読取り(別個のアドレスにて)レジスタの書 込みが行なわれる。同様に、命令I2〜I4に対しては、状態コード書込み、お よびレジスタ読取りおよび書込みが行なわれる。最後に、命令工5は、状態コー ド記憶レジスタの1回の読取り、その結果ブランチまたはループが行なわれる。
0 6ESE基本プ四ツク中の第2のステップまたはパス130は、基本ブロック内 において各命令にインテリジエン2を付加ないし延長することである。これは、 ストリーム内の他の命令の実行時間に関する命令実行時間の割当て、命令が実行 されるべきプルセッサ番号の割当て、および命令により必要とされ得るいわゆる スタティック共有フンテクストストーリジマツピング情報の割当である。
命令に放出時間を割り当てるため、命令により必要とされる各資源の一時的使用 が考慮されねばならない。例示の実施例において、各資源の一時的使用は、「フ IJ +タイム」および「ロードタイム」により特徴づけられる。
フリータイムは、資源が命令により読取りまたは誓込みされた最後の時間である 。ロード時間は、資源が命令により変更された最後の時間である。命令が資源を 変更すべきときは、資源が使用された最後の時間後、換言するとフリータイム後 変更を実行しなければならない。命令が資源を読み取るべきときは、資源がリー ドされた最後の時間後、すなわちp−ドタイム後読取りを遂行しなければならな い。
各資源の一時的使用および資源の実際の使用間の関係は下記のごとくである。命 令が資源の書込み/変更を行なうべきときは、資源が他の命令により読取りまた は書込みされた最後の時間(すなわち、その資料に対する「フリータイム」)プ ラス1時間間隔がこの命令に対する最先の放出時間となろう。このプラス1時間 間隔は、命令がフリータイム中なお資源を使用しているという事実に由来する。
他方、命令が資源を読み取るときは、資源が他の命令により変更される最後の時 間(すなわちその資源に対するロードタイム)プラス1時間間隔が最先の命令放 出時間となる。「プラス1時間間隔」は、実行されるべきロードを遂行しつ\あ る命令に対して必要な時間から由来する。
上の論述は、アクセスされる資源の正確な位置が既知であることを仮定している 。これは、一般的レジスタおよび状態フードメモリのごとく直接的に命名された 資源についてはつねに真である。しかしながら、メモリ動作は、一般にコンパイ ル時に未知の位置にあるであろう。
実際のアドレス指定構造体により発生されるアドレスはこの種類に属する。先行 の実施例においては、(TOLLの基本的概念を明らかにするため)命令IOお よび11により使用されるアドレスは別であると仮定した。もしもこれがそうで なければ、TOLLソフトウェアは、メモリを使用しなかった命令のみが、メモ リ内の未知の位置にアクセスしつ−あった命令と並列に実行せしめられることを 保証するであろう。
命令放出時間は、命令が使用する各資源に対してTOLLソフトウェア110に より評価される。これらの「候補」放出時間は、ついでどれが最大またはもつと も遅い時間かを決定するために比較される。もつとも遅い時間は、命令に割り当 てられる実際の放出時間を決定する。この時点に、TOLLソフトウェア110 は、命令に斬り当てられる放出時間を反映させるように、資源のフリータイムお よび四−ドタイムのすべてを更新する。TOLLソフFウェア110は、ついで 次の命令を分析するように進行する。
基本ブロック内の命令間依存性を決定するためには利用可能な多くの方法がある 。先の論述は、特定のコン2イラ−TOLLパーティショニングを仮定するたI 1つの可能な実施例に過ぎない。技術に精通したものであれば、多くの他のコン /9イラーTOLLA−テイショニングおよび命令間の依存性を決定する方法が 可能であり、実現できよう。それゆえ、例示されたTOLLソフトウェアは、基 本ブロック内のデータ依存性を表わすためにリンクリスト分析を使用する。使用 され得る他の可能なデータ構造は、トリー、スタック等である。
命令間の依存性の分析および表示のためリンクリフト表示が利用されるものと仮 定する。各レジスタは、そのレジスタに含まれる値を使用する命令に対して1組 のポインタと関連されている。第1表におけるマトリックス乗算の例に対して、 資源の利用が第3表に記載されている。
第3表 ROIOl2 RI II I2 R2I2 l5 R313I3、I2 R4I4 l5 R10IOl0 R11II 11 それゆえ、rread byJリンクを追い、各命令に対する資源の利用状態を 知れば、上のセット1および2の独立性が、TOLLlloにより分析命令手段 120(第1図)で構成される。
第1表の例をさらに分析する目的で、基不プaツクが、1つの命令ストリームの 任意の時間間隔で、例えば時間T16で始まるものと仮定する。換言すれば、時 間シーケンスにおけるこの特定の基本ブロックは、時間TI!でスタートすると 仮定する。段階120における分析の結果を第4表に記載する。
第4表 REG IOII I2 I3 I4 l5ROT16 T17 RI TltS T17 R2T17 718 R4T16 CC17M7 Tl CC2Tl 7 R10Tl6 R11T16 第4表における垂直方向は、一般的レジスタおよび状態フード記憶レジスタを表 わす。表における水平方向は、第1表の基本ブロックの例の命令を表わす。表中 のエントリは命令に依るレジスタの利用を表わす。かくして、命令工0は、時間 T16、すなわち基本ブロックの実行のスター4時にレジスタR10が読取りと 書込みをされ、レジスタROが書き込まれることを必要とする。
本発明の教示に従う場合、レジスタR1、R11および14も、時間16の間遂 行される動作をもち得ないという理由はない。3つの命令l0111およびI4 は、互にデータ独立性であり、時間T16中同時的に実行できる。しかしながら 、命令12は、レジスタROおよびR1がロードされ、!−ド動作の結果が乗算 され得るようにすることをまず必要とする。乗算の結果はレジスタR2に記憶さ れる。レジスタR2は時間16において理論理に作用され得るが、命令12は、 時間16中に行なわれるレジスタROおよびR1のロードの結果にデータ依存性 である。それゆえ、命令12の完了は、時間フレームT170間、またはその後 に起こるはずである。それゆえ、上の第4表において、命令12とレジスタR2 の交叉点に対するエン)!jT17は、それがデータ依存性であるから下線を付 しである。同様に、命令13は、時間T17中にまず起こるレジスタR2内のデ ータを必要とする。それゆえ、命令13は、時間71a中またはその後のみレジ スタR2に作用し得る。命令15は、命令14により更新される状態コード命令 CC2の読取りに依存する。状態コードメモIJ CC2の読取りは、時間TI 6に記憶される結果にデータ依存性であり、したがって次の時間T17中または その後に行なわれるはずである。
それゆえ、段階130において、目的コード命令は、上の分析に基づいて第5表 に記載されるように「命令放出時間J (IFT)が割り当てられる。
第5表 目的コード命令 命令放出時間 IOT16 Is T17 基本ブロックの逐次命令ストリームにおける各命令は、割り当てられた時間間隔 において遂行され得る。第5表から明らかなように、通常6サイクルで逐次処理 される第1表の同じ6つの命令が、本発明の教示に依れば、たった3つの放出時 間T16.17およびTlBで処理できる。命令放出時間(rpr)は、本発明 の「時間駆動」の特徴をもたらす。
例示の実施例における段階130により遂行される次の機能は、命令放出時間( IFT)にしたがって命令ストリームにおける自然的同時発生を順序再整理し、 ついで命令を個々の論理並列プロセッサに割り当てることである。順序再整理は 、同時的に利用可能な技術の制約に起因してのみ必要とされることに留意された い。もしも真に十分の関連するメモリが利用可能であれば、ストリームの順序再 整理は必要とするものでなく、プロセッサの番号は、先着順サービスの態様で割 り当てることができよう。命令選択機構のハードウェアは、この動作モードを取 り扱うため技術に精通したものであれば適当に変更できよう。
例えば、同時的に、利用可能な接待、ならびに4つの並列プロセッサ要素(PE )を有し各LRD内に1つのブランチ実行装置(BEU)が設けられるシステム を仮定すると、プロセッサ要素およびブランチ実行装置は、本発明の教示に依る と以下の86表に記載されるように割り当てることができる。プロセッサ要素が すべての非ブランチ命令を実行し、他方本発明のブランチ実行装置(BEU)が すべてのブランチ命令を実行することに留意されたい。これらのハードウェア回 路については、追って詳細に説明する。
第6表 論理プルセッサ番号 T16 T17 T180 IOI2 I!I BEU −−I5(遅延) それゆえ、本発明の教示にしたがうと、時間T160間、並列プロセッサ要素0 .1および2が命令l0111およびI4をそれぞれ同時に処理する。同様に、 次の時間T17中、並列プロセッサ要素0およびBEUが、命令I2およびI5 をそれぞれ同時に処理する。そして最後に、時間71B中、プロセッサ要素0が 命令I3を処理する。命令放出時間T16、T17およびTlBの間、並列プロ セッサ要素3は第1表の例に利用されない。実際に、最後の命令がブランチ命令 であるから、命令13に対して時間71B中に最後の処理が完了するまでブラン チは起こり得ない。遅延フィールドが命令15の処理中に形成されており、命令 15が時間T17内(最先可能時間)で処理されてさえ、命令13が実行された 後〃−プないしブランチが起こるようにその実行が遅延されるようになされてい る。
要約すると、本実施例のTOLLソフトウェア110は、段!@130において 、各個々の命令およびその資源の使用状態をその形式および位置(既知ならば) について試験する(例えば第3表)。ソフトウェアは、ついで、この資源使用状 態に基づいて命令放出時間を割り当て(例えば第4表)、これらの放出時間に基 づい【命令ストリーム5を記録しく例えば第5表)、その結果として論理的プロ セッサ番号(LPN)を門り当てる(例えば第6表)。
例示の実施例においては、論理的プロセッサ番号(LPN)および命令放出時間 (LFT)を含む延長されたインテリジェンス情報が、第3図および第4図に示 されるごとく、基本ブ胃ツクの各命令に付加される。また、追って詳述されるよ うに、基本ブロック(BB)の各命令に対する延長されたインテリジェンス(E XT)は、本発明の実際の物理的プロセッサと相関づけられる。
相関は、システムハードウェアにより遂行される。実際のハードウェアは、論理 的プロセッサ要素の数より小数、それと同数、またはそれより多数の物理的プロ セッサ要素を含んでよいことに注目することが重要である。
本発明のこの例示の実施例における各命令に付加される第4図に示される共存の フンチクスト・ストーリジマツピング(SC8M)情報は、スタティックおよび ダイナミック成分を有する。SC3M情報のスタティック成分は、TOLLソフ トウェアまたはコンノイラにより付加されるものであり、命令スジリームのスタ ティック分析の結果である。ダイナミック情報は、追って論述されるように論理 的R源ドライバ(LRD)により実行時間付加される。
この段階130にて、例示のTOLLソフシウエア110は、命令ストリームを 、別個のプロセッサ要素(PE)により個々に処理され得る同時的発生に対して 1組の単一エントリ、単一エグジット(SESE)基本ブロック(BB)として 分析し、各命令に、命令放出時間(IFT)および論理的プロセッサ番号(LP N)を割り当てた。このように、本発明にしたがえば、命令ストリームは、実行 に先立ちすべての処理用資源をスタティックに割り当てるため、TOLLソフト ウェアによりプレ処理される。これは、所与のプログラムについて一度なされ、 そしてFORTRAN、C0BOI、、PASCAL。
RASIC等の多数の異なるプログラム言語のいずれにも応用し得る。
第5図を参照すると、一連の基不ブロック(BB)が単一の実行セラ)(ES) を形成し得ることが示されており、TOLLソフトウェア110が、段階140 においてか\る実行セット(ES)を形成する。一度TOLI。
ソフトウェアが実行セット500を識別すると、セットの始まりおよび終わりに 、ヘッダ510および/またはトレイラ520情報が付加される。好ましい具体 例においては、セットの始まりに1つのヘッダ情報510が付加されるが、本発 明はそれに制限されるものではない。
本発明にしたがうと、基不ブロックは、一般に命令ストリームにおいて相互に相 続いている。上述のごとく、基本ブロック内の個々の命令が再整理され、延長さ れたインテリジェンス情報が割り当てられても、基本ブリックを再整理の必要は なくてよい。各基本ブロックは、単一エントリ単一エグジット(SESE)であ り、ブランチ命令を介してのエグジットをもつ。普通、他の命令へのブランチは 、ブランチの400の命令のごとく局部的近傍内にある。実行セットを形成する (段1fi714o)目的は、実行セット内で出ることができる基不ブロックの 最小数を決定することであり、これにより命令キャッシュ障害の数は最小化され る。換言すると、所与の実行セットにおいて、実行セットのブランチすなわち切 替えは統計的に最小とされる。TOLLソフトウェアは、段階140において、 この線形プ買グラミング様の問題、すなわちブランチ距離等に基づく8題を解決 するための多数の従来の技術を利用し得る。この目的は、追って論述されるよう に、実行セットをハードウェアキャッシュに入れることができるように85図に 示されるごとく実行セットを定めることであり、それにより命令キャッシュ障害 (すなわち命令セットの切替え)は最小化される。
上述したものは、単一のフンチクストの応用におけるTOLLソフトウェアの例 (第1〜6表を使って例示される)である。本質的に、TOLLソフトウェアは 、所与のプ四グラム内の各基本ブリックについて命令ストリーム内の自然の同時 的発生を決定する。例示の実施例において、TOLLソフFウェアは、決定され る自然の同時的発生にしたがって、各命令に命令放出時間(IFT)および論理 処理命令(LPN)を付加する。すべての処理用資源は、処理に先立ってスタテ ィックに割り当てられる。本発明のTOLLソフトウェアは、多数の同時に実行 する異なるプログラムと関連して使用できる。しかして、各プログラムは、追っ て説明されるように、不発明の処理システム上で同じ使用者または異なる使用者 により使用される。
〔五ハードウェアの一般的説明〕
第6図を参照すると、TDAシステムアーキテクチャ600と称される本発明の システムアーキテクチャのブロックダイヤグラムは、ネットワーク650を介し て複数の論理的資源ト°ライバ(LRDI)620に相互接続されたメモリサブ システム610を含む。論理的!iR源ドライバ620は、さらにネツ(ワーク 650を介して複数のプロセッサ素子640に相互接続されている。最後に、複 数のプロセッサ要″X640が、ネットワーク670を介して、レジスタセラF プールおよび命令コードセットファイル660を含む共有資源に相互接続されて いる。
LRD−メモリネットワーク650、RE−LRDネツFワーク650およびP E−フンチクストファイルネットワーク670は、従来形式のクロスバ−ネット ワーク、オメガネットワーク、パンヤンネットワークまたは同等物より榊成し得 るフルアクセスネットワークである。ネットワークはフルアクセス形式(スは− ス的にノンブロッキング)であるから、例えば任意のプロセッサ要素640は、 任意のフンチクスト(以下に定轟される)ファイル660における任意のレジス タファイルまたは状態コードメモリにアクセスできる。同様に、どのプロセッサ 要素640も、どの論理的資源ドライバ620へでもアクセスでき、どの論理的 資源ドライバ620も、メモリサブシステム610のどの部分へでもアクセスで きる。加えて、PE−LRDおよびPEコンチクストファイルネットワークは時 間的にノンブロッキングである。
換言すれば、これらの2つのネットワークは、ネットワーク上の負荷状態に拘ら ず、どの資源からのどの資源へのアクセスでも保証する。TOLLソフトウェア が、ネットワーク内において衝突が決して起らないことを保証しているから、P K−LRDネットワーク65oおよびPE−=zンテクストファイルネットワー ク670のスイッチング要素のアーキテクチャはかなり簡単化されている。第6 図のプルツクダイヤグラムはMIMDシステムを表わしており、各フンチクスト ファイル660は少なくとも1つのユーザプログラムに対応している。
メモリサブシステム610は、従来形式のメモリアーキテクチャおよび従来形式 のメモリ要素を使って構成できる。この種のアーキテクチャおよび要素には、当 技術に精通したものが採用し得てこのシステムの必要条件を満足するような多く のものがある。例えば、積重ね型メモリアー中テクチャを使用できよう。(A、  V、 Pohm および0. P、 AgrawalのHlgh 5peed  M@mory System+Rotten Publishing Co、  、1985年発行、参照。)論理的資源ドライバ620は、本発明のシステム アーキテクチャ600に独特である。各例示の1.IRDは、時分割式で単一の 使用者(フンチクストファイルが割り当てられている)に対してデータキャッシ ュおよび命令選択の維持を可能にする。LRDは、種々の使用者から実行セット を受け取り、そして1つのLRD上には、1つのコンチクストに対する1または 複数の実行セットが記憶されている。記憶された実行セットの基本ブロック内の 命令は、先に割り当てられた論理的プロセッサ番号に基づいて待ち行列で記憶さ れる。例えば、システムが64の使用者および8つのI、RDを有すれば、8の 使用者が個々のLRDを時分割式に共有することになろう。
オばレーティングシステムは、どの使用者がどのLRDにどの位長く割り当てら れるかを決定する。LRDについては、追って詳細に説明する。
プロセッサ要素640もまた、TDADステムアーキテクチャに独特であり、追 って詳述する。本発明の特定の1側面に依れば、これらのプリセッサは、フンチ クストフリーの確率的性質を示す。すなわち、システムの将来の状態は、システ ムの現在の状態にのみ依存し、現在の状態に至った経路に依存しない。それゆえ 、アーキテクチャの上で、フンチクストフリープロセッサ要素は、2つの点にお いて従来形式のプロセッサ要素から独特に違っている。第1に、要素は、汎用レ ジスタまたはプ四グラム状態ワードのような内部的恒久記憶ないし残映をもたな い。第2に、要素は、何頭なるルーF設定機能または同期機能を遂行しない。こ れらのタスクは、TOLLソフトウェアで遂行され、LRDで実施される。アー キテクチャの重要性は、本発明のコンチクストフリープロセッサ要素が、LRD に対して真に共有の資源であるということである。パイプライン結合プロセッサ 要素が採用される本発明の他の好ましい特定の実施例におい【は、プロセッサは 、前述のごとく厳密にコンチクスト7リーではない。
最後に、レジスタセットおよび状態コードセットファイル660も、Advmn eed Mler+o Ds+viee sカリ7オルニヤ、サニベイル所在、 から入手し得るAM029500シリ−スレジスタフアイルのような一般的入手 し得る要素から構成できる。しかしながら、第6図に例示されるファイル660 の特定の形態は、本発明の教示にしたがって独特のものであり、追って詳細)C M明する。
第1表に記載される例に基づく本発明の一般的動作は、g 7 & 、7 bお よび7cのプロセッサ・フンチクストレジスタファイル通信と関連して説明しで ある。前述のように、本発明のこの例示の実施例の時間駆動制御は、第4図に詳 細に記載される論理的プロセッサ番号(LPN)および命令放出時間(IFT) に関する延長インテリジェンスの追加に見出される。第7図は、レジスタセット および状態コードセットファイル660のレジスタPE・〜PExの形態を総括 的に示している。
第1表の単一の使用者の例に対するTD人クシステムアーキテクチャ600動作 を説明するため、第3〜第5表を参照する。命令放出時間T1dに対する例にお いて、フンチクストファイル−PEネットワーク670は、プロセッサ要素PE ・をレジスタR,およびRte と、プロセッサ要素PE、をレジスタR1およ びR11と、そしてプロセッサ要素PE−をレジスタR4と相互接続する。それ ゆえ、時間TI6の間、3つのプロセッサ要素P R6SP E!およびPE! は、l0S11および工4を同時に処理し、結果をR・、R1@ % R1、R 11およびR14に記憶する。時間T160間、LRD 620は、時間T17 中に放出(実行)され得る命令を、適当なプロセッサ要素に供給する。
第7b図を参照すると、命令放出時間T17の間、命令I2を処理するために現 在割り当てられている唯一のプロセッサ要素PE・のみがレジスタR・、R1お よびR2と相互接続し【いる。BEU(第7m、7bおよび7c図に図示セ1′ )も、状態コードメモリに接続されている。最後に第7c図を参照すると、命令 放出時間T18中、プルセッサ要gPE、のみがレジスタR2およびR5に接続 されている。
数種の重要な観察がなされねばならない。まず、特定のプロセッサ要素PKがそ の動作の結果をレジスタに入れるとき、後続の命令放出時間(IFT)中、任意 のプロセッサ要素を、それがその動作を実行するとき、そのレジスタに相互接続 することができる。例えば、命令工1に対するプロセッサ要素PElは、第7a 図に示されるように、IFTT16中メモリ位置の内容でレジスタR1をロード する。命令放出時間T17中、プロセッサPE・はレジスタR1と相互接続され 、そこに記憶されている結果で追加の動作を遂行する。本発明の教示に依ると、 各プロセッサ要素PEは、任意の特定の命令放出時間(IFT)中レジスタファ イル660内の必要なレジスタに「総括的に結合」され、それゆえ、ある種の従 来の手法におけるごとく、例えば他のプロセッサレジスタ内の他の資源に供給の ためレジスタファイルからデータを動かす必要はない。
換言すると、本発明の教示に依ると、各プロセッサ要素は、任意の個々の命令放 出時間中、ファイル660の任意の共有レジスタに総体的に結合できる。加えて 、本発明に依ると、どのプロセッサ要素も、ある種の従来システムにおいて見ら れるように、特定のレジスタの利用可能性についであるいは特定のレジスタに入 れられる結果について競争する(すなわち待つ)必要はない。また、個々の任意 の命令放出時間中、どのプロセッサ要素も、レジスタファイル660内のどのよ うな形態のレジスタにしてもそのレジスタがあたかもそれ自身の内部レジスタで あるかのようにフルアクセスできる。
それゆえ、本発明の教示に依れば、命令ストリームに加えられるインテリジェン スは、目的コード内において検出される自然の同時的発生に基づく。検出された 同時論理的プロセッサ要素(LPN)および独特の命令放出時間(IFT)を吟 井−÷士ケ槍論理的に割り当てるから、各プロセッサ要素(PK)は、その所与 の命令に対して、その命令の必要条件にしたがって処理のために利用可能なすべ ての必要な資源を有することになろう。上述の例において、論理的プシセッサ番 号は実際のプロセッサ割当てに対応する。すなわちLPNOはPE・に、LPN lはPE、に、LPN2はPE意にそしてLPN3はPE、に対応する。本発明 においては、I、PNO対1’Es−LPN1対PE!等のようなどのような順 序でも使用できるから、本発明はそのように制限されるものではない。すなわち 、TDAシステムが4以上または4以下のプロセッサを有するならば、以下に論 述されるように興なる割当てが使用できよう。
TDAシステムに対する時間制御は、命令放出時間駆動される。第7a〜7c図 に観察されるように、各個々の命令放出時間中、プロセッサ要素640およびP E−レジスタセットファイルネットワーク670より成る70人システムアーキ テクチャは、すべての利用可能な資源を完全に利用しながら、個々のプロセッサ 要素をして命令を同時に処理せしめるように完全に適合された新規で独特の特定 の形態を取る。プロセッサ要素はフンテックスフリーとし得、そのため、過去の 処理に関するデータ、状態または情報は必要とされず、プロセッサ要素の内部に も存在しない。コンテクストフリープUセッサ要素は、各個々の命令の要求にの み反応し、ハードウェアにより必要な共有レジスタに相互接続される。
〔4概要〕 概説すると、6累なるプログラムまたはコンノ署イラ出力100に対するTOL Lソフトウェア110は、各単一エントリ、単一エグジット(SESE)基本プ 田ツク(BB)に存在する自然の同時的発生を分析し、例示の1実施例において は、論理的プロセッサ番号(L P N )および命令放出時間(IFT)を含 むインテリジェンスを各命令に加える。第6図に示される本発明のMIMDシス テムにおいては、各フンチクストファイルは、プログラムを実行する興なる使用 者からのデータを含むことになろう。各使用者には、異なるコンチフス)ファイ ルが割り当てられ、そして第7図に示されるように、プロセッサ要素は、命令に より必要とされるレジスタおよび状態フードメモリのような必要な資源に個々に アクセスし得る。命令それ自体は、共有資源情報(すなわち、レジスタおよび状 態フードメそり)を担持する。それゆえ、TOLLソフトウェアは、各プログラ ムに対して1回だけ、第6図に例示される。TDAシステムアーキテクチャにお ふる命令の処理を制御するに必要な情報をスタティックに割り当て、時間駆動式 の非集中化処理を保証する。この際、メモリ、論理的資源ドライバ、プロセッサ 要素およびフンチクスト共有資源は、純粋にノンブロッキングな様式でそれぞれ のネツFワークを介して総体的に結合される。
論理的資源ドライバ(LRD)620は、実行セットに形成される基本ブロック を受け取り、各命令を命令放出時間(IFT)に選択されたプロセッサ要素64 0に供給する責務を有する。第7図に示される例は単一の使用者に対する単純な 表示であるが、マルチユーザシステムにおいては、論理的資源ドライバ620に よって命令をプロセッサ要素640に供給することにより、追って詳述されるよ うにプロセッサ要素は完全に利用可能となる。共有資源およびプロセッサ要素の タイミングおよび識別情報は、すべてTOLLソフトウェアにより命令に加えら れる延長インテリジェンスに含まれているから、各プロセッサ要素640は、完 全に(あるいは若干の例においてはほとんど)フンチクストフリーとし得、そし て実際に、命令放出時間ごとに、種々の論理的資源ドライバにより供給される異 なる使用者の個々の命令を処理できる。以下に説明されるように、これをなすた め、論理的資源ドライバ620は、予定された順序で、命令をPE−LRDネッ トワーク650を介してプロセッサ要素640に供給する。
各命令の実行の完了に続き、任意のプロセッサ要素からのデータ生成/操作の結 果について任意の他のプロセッサにより独立的にアクセスすることを可能にする のがプロセッサ要素のフンチクストフリーの性質である。コンチクストフリーで ないプロセッサの場合、1つのプロセッサが他のプロセッサにより創成されたデ ータにアクセスするためには、1つのプロセッサからデータを抽出しそれを他の プロセッサに利用できるようにするため、特別の動作(普通汎用レジスタからデ ータをメモリに動かす命令)が必要とされる。
複数のLRDに依るプロセッサ要素の真の共有を可能属するのもプロセッサ要素 のコンチクストフリーの性質である。この共有は、単一の命令サイクル程度の細 かい粗さとし得る。(1つのLRD)C割り当てられる)1つのコンチクスジの 状態を節約して(これで1つまたは複数のプロセッサ要素の制御ができる)、( 第2のLRDに割り当てられる)他のフンチクストによる制御を可能にするため 、プラグラミングや特別のプロセッサ操作は必要とされない。コンチクストフリ ーでないプロセッサ(従来技術の場合そうである)の場合、か−る状態節約にお いて、フンチクストスイッチングのプ四セスの一部として、特別のプログラミン グおよび特別のマシン操作が必要とされる。
本発明のプロセッサ要素を実施するに際しては1つの他の代替的方法がある。こ れはコンチクスジフリーの概念に対する1つの変形である。すなわち、この実施 形態は、上述の物理的に総体的な相互接続をもたらすが、プルグラム制御下で、 特定の命令の完了に絖き発生されるデータのレジスタファイルへの伝送に制約を 加えることを可能にする。
完全にコンチクストフリーな実施形態においては、プロセッサ要素に入る各命令 の完了にて、コンチクストの状態はコンテクスF−リジアイルに完全に捕捉され る。
上記の代替の場合にはルジスタファイルへの伝送は阻止され、データは、プロセ ッサに保持され、さらにデータを操作する後続の命令に対して利用可能となる( 例えばデータチェイニングにより)。究極的に、データは、若干の有限の命令シ ーケンスの後レジスタファイルに伝送される。しかし、伝送されるのは最後のデ ータのみであるO これは、上述のマイクロコード化フンプレク命令の場合の一般化として見られる べきものであり、実質的にフンチクストフリーなプロセッサ要素による実m形態 と考えることができる。このような実施形態にあっては、データが究極的にフン チフス)レジスタファイルに伝送される時間まで、依存性の命令が同じプロセッ サ要素上で実行されることを保証することが要求されよう。これは、Aイブライ ン結合されたプロセッサ要素の場合と同様に、TOLLソフトウェアの全機能性 およびアーキテクチャを変更しないが、各命令サイクルを全プシセラサ要素上で 最適な状態で利用するためプロセッサ要素間に設定される命令の効率的なスケジ ュール化に主として影響を及ぼす。
〔詳細な説明〕 。
〔ソフトウェアの詳細な説明〕
第8〜11図には、本発明のTOLLン7トウエア110の詳細が記載されてい る。第8図を参照すると、コンパイラからの従来の出力は、段階800にてTO LLソフトウェアに供給される。従来形式のコンパイラ出力800内には、下記 の情報が含まれている。すなわち、(a)命令機能、(b)命令により必要とさ れる資源、(C)資源の位fi!(可能ならば)、および(d)基本ブロック境 界である。
ついで、TOLLソフトウェアは、段階810にて第1の命令でスタートとし、 段階820においてどの資源が使用されるか、そして段階850においてその資 源がどのように利用されるかを決定するように進行する。このプロセスは、先の 節で論述されるように、段階840および850を通って命令ス) IJ−ム内 の各命令に対して継続する。
段階840で試験されるところにしたがって最後の命令が処理された後、表が構 成され、各資源に対して「フリ一時間」および「ロード時間」で初期設定される 。か−る表は、内部ループマトリック乗算の例に対して第7表に記載されており 、イニシャライズの際表はすべてOt含む。イニシャライズは段階860で行な われ、そしてTOI、Lソフトウェアは、一度得成されると、段階870におい て第1の基本ブロックでスタートするように進行する。
第7表 資 源 ロード時間 7リ一時間 RO’l’o T。
11 T OT O R2T OT O R3To T。
R4T OT O R10T OT O R11T OT O 第9図において、TOLLソフトウェアは、段階900において次の基本ブロッ クの最初の命令で命令ス) リームの分析を継続する。先迷のように、TOLL は、命令ストリームのスタティック分析を遂行する。スタティック分析は(実際 上)直線コードを仮定する。すなわち、各命令は、逐次的態様において分析され る。換言すると、ブランチが決して起こらないことを仮定する。非パイプ式の命 令実行に対しては、ブランチの結果として起こる依存性は決して起こることがな いから問題はない。パイプライン式の実行については後で論述する(パイプライ ン結合の使用は、ブランチ命令の遅延値に影*1及ぼすだけであるということが できる)。
明らかなように、ブランチが決して起こらないという。
仮定は正しくはない。しかしながら、命令ストリームにおいてブランチに遭遇す ることの影響は単純でおる。前述のように各命令は、それが使用する資源(ない し物理的ハードフェア要素)によL%徴づけられる。命令放出時間の(そして例 示の実施例においては、論理的プロセッサ番号の)割当ては、命令ストリームが これらの資源に如何にアクセスするかに依存する。TOLLソフトウェアのこの 特定の実施例内においては、各資源の使用状態は、上述のごとく、その資源に対 するフリータイムおよびロードタイムと称されるデータ構造によシ表わされる。
各命令は順番に分析されるから、1つのブランチの分析は、下記の態様でこれら のデータ構造に影昏を及ぼす。
基本ブロックのすべての命令に放出時間が割F)当てられると、全資源のロード 時間およびフリ一時間を(この値に)更新するのに、現在の基本ブロック(ブラ ンチが属しているブロック)の最大放出時間が使用される。次の基本ブロック分 析が始まると、提案される放出時間d1最後の最大値+1として与えられる。そ れゆえ、レジスタ資源RO〜R4、R10およびR11の各々に対するロード時 間および7り一時間は、例えば、基本ブロックがT16の時間で始まると仮定す ると、以下の第8表に記載される。
R8表 資 源 ロード時間 スリ一時間 ROT15 T15 RI T15 T15 R2’r15 T15 R5T15 T15 R4T15 Ti5 R10T15 T15 R11T15 T15 それゆえ、TOLLソフトウェアは1段fa91oにおいて、提案される放出時 間(PFT)を、先行の基本ブロック放出時間の最大放出時間+1に設足する。
上の例のコンチクストにおいて、先行の基本ブロックの最後の放出時間#″j: T15であシ、この基本ブロックに2ける命令に対する提案される放出時間ij :T16で始まる。
段階920において、最初の命令にょシ使用される最初の資源、この例において は命令IOのレジスタROである、が分析される。段階930において、資源が 読み取られるか否かの決定がなされる。上述の例においては、命令IOK対して 、レジスタROij読み取られないが、書込みがなされる。それゆえ、段階94 0は、次に、資源が書き込まれるか否かの決定に入る。この場合、命令l0ii レジスタROIC11き込まれ、段階942に入る。
段N942は、命令XOに対する提案嘔れた放出時間CPFT)が資源に対する フリ一時間に等しいかまたはそれよシ短いか否かについて決定をする。この例に おいては、第8衣を参照すると、レジスタROおよびT15に対する資源フリ一 時間はT15でロシ、それゆえT16の提案される放出時間はT15の資源7り 一時間よシ長く、決定はNOで、1)、段階950に入る。
TOLLソフトウェアによる分析は次の資源に進行する。この例において、命令 工0に対する次の資源はレジスタR10である。この資源は命令によシ読取九お よび書込みが行なわれる。段階930に入シ、その命令が資源を読み取るか否か の決定がなされる。真であるから段階932に入シ、こ−で命令(T16)に対 する現在の提案放出時間が資源ロード時間(T15)よシ短いか否かの決定がな される。否であるから、段階940に入る。
こ−では、命令が資源に書込みを行なうか否かの決定が行なわれる。真であるか ら、段階942に入る。この段階においては、命令(T16)に対する提案放出 時間が資源(T15)に対するフリ一時間よシも短いか否かの決定がなされる。
否であるから、段階950に入る。
TOLLソフトウェアによる分析は、次の資源に入るか(旬令工0についてはな い)、命令に対する最後の資源が処理さnたならば「B」(第10図)に入る。
それゆえ、段階950における決定に対する答は肯定でろシ、分析はついで第1 0rAに入る。第10図において、資源フリ一時間およびロード時間がセットさ れる。
段5i1000において、命令IOに対する最初の資源はレジスタROである1 段階1010における最初の決定は、命令が資源を読むか否かである。前述のご とく、命令工0において、レジスタROの読取シは行なわれないが書込みが行な われるから、この決定に対する答Fi、N。
であシ、分析は段に11020に進行する。段階1020において、資源が書き 込まれるか否かの決定に対する答はYESで口)、分析はgi@1022に進行 する。段階1022は、命令に対する提案放出時間が資源ロード時間よシ長いか 否かについての決定をなす。この例において、提案放出時間はT16であシ、そ して第5ftK戻ると、放出時間T16はレジスタROK対するロード時間T1 5より長い。そnゆえ、この決定に対する答t″1YEsであシ、段l1110 24に入る。段11024において、資源ロード時間は命令の提案放出時間に等 しくセット壊れ、資源の表(第8衣)はその変化を反映するようにして更新され る。同様に、段FF11026に入シ、資源7リ一時間が更新され、命令の提案 放出時間プラス1すなわちT17 (T16プラス1)に等しくセットされる。
ついで段11030に入り、この命令によシ使用される他の資源があるか否かに ついての決定がなされる。1つのレジスタR10があり、分析はこの資源を処理 する。
段階1070では次の資源が取得はれる。段階101゜に入シ、こ−で、資源が 命令に読み取られるか否かの決定がなされる。真であるから、段階1012に入 り、現在提案放出時間(T16)が資源フリ一時間(T15)より大きいか否か の決定がなされる。それが真であるから、段階1014に入シ、こ−で、資源の 7り一時間が、この命令によるこの資源の使用を反映するように更新嘔れる。分 析は、ついで、段11020にて、資源が命令によシ畜き込まれるか否かをチェ ックする。真であるから、段階1022に入シ、現在の提案時間(T16)が資 fi(T15)のロード時間よシ長いか否かの決定がな。
される。真であるから、段191024に入る。この段階において、資源のロー ド時間が命令の放出時間を反映するように更新される。すなわち、ロード時間は T16にセットされる。ついで段階1026に入シ、資源の7リ一時間が命令の 実行を反映するように更新される。すなわち、フリ一時間はT17にセットされ る。ついで段階1030に入シ、これが命令によシ使用される最後の資源である か否かの決定がなされる。真であるから段階1040に入る。こ−で、命令放出 時間(IFT)tli、T16の提案放出時間(PFT)に等しくなるようにセ ットされる。ついで、段11050に入シ、これが基本ブロックにおける最後の 命令であるか否かについての決定がなされる。これはこの場合Noであ)、段階 160に入シ次の命令工1を処理する0次の命令は、第9図の人1にて分析段階 に入る。
例における次の命令は11でロシ、レジスタR1およびR11に対して、レジス タROおよびR10に関して命令工0に提供されたのと同じ分析が命令工1に対 して行なわれる。以下の第9表においては、第8図の資源の一部がこれらの変化 を反映するように変更される。(命令工0および11はTOLLソフトウェアに よシ完全に処理されてしまっている。) 第9表 資 源 ロード時間 フリ一時間 ROT16 T17 RI T16 T17 R10T16 T17 R11T16 T17 基本ブロックの例における次の命令は命令I2であり、これは、レジスタROお よびR1の読取シおよびレジスタR2への書込みを含む。それゆえ、第9図の段 階910において、命令に対する提案放出時間!″t、T16にセットされる( 715−M )。ついで段階920に入シ、そして命令工2における第1の資源 はレジスタROである。
段IP#930においてなされる第1の決定はYESでろ)、段階932に入る 。段階932では、T16の命令の提案放出時間がTI6の資源レジスタROロ ード時間に等しiかまたはそれ以下であるか否かについての決定がなされる。レ ジスタROに対する資源ロード時間は、命令IOに対するレジスタROの分析中 T15からT15に更新されたことに注目することがN要でろる0段階932に おけるこの決定に対する答は、提案放出時間が資源ロード時間に等しい(T16 =T16)ということであり、段階954に入る0段階934において、命令の 提案放出時間は、資源ロード時間プラス1、この例においてはT17 (T16 +1 )に等しくなるように更新される。
命令工2の提案放出時間はこ−でT17に更新される。
こ−で、段Wt940に入り、命令I2は資源ROの書込みをしないから、この 決定に対する答はNoであシ、段階950、ついで段Fli 960へと入p1 次の資源を処理する。この例においてこれはレジス)R1である。
段階960においては、レジスタR1に対して行なわれる分析を開始し、段階9 30においては、資源が読み取られるか否かKついての決定がなされる。答はも ちろんYESであり、段階932に入る。今度は、命令の提案放出時間はT17 でアシ、T17の命令の提案放出時間が、T16であるレジスタR1に対する資 源ロード時間に等しいかまたはそれ以下であるか否かについての決定がなされる 。命令の提案放出時間はレジスタロード時間よシ長いから(T17はT16よシ 大)、この決定に対する答はNoであシ、段階940に入る。レジスタはこの命 令によシ書き込まれず、それゆえ分析は段階950に進行する。段階960にお いて、命令I2に対して処理されるべき次の資源は資源レジスタR2である。
段階930における最初の決定は、この資源R2が読み取られるか否かである。
否であるから、分析は段階940に、ついで段階942に進む、この時点におい て、命令I2の提案放出時間はT17で6J)、そして段階942において、T 17の命令の提案放出時間が資源R2の7リ一時間に等しいかまたはそれ以下で あるか否かの決定が表される。しかして、この7り一時間は上記の表8において はT15である。この決定に対する答はNo″′Cろル、それゆえ段階950に 入る。これはこの命令に対して処理される最後の資源であシ、分析は第10図に おいて続く。
M2O図に移〕、命令I2に対する第1の資源ROが分析される。段[1010 において、この資源が読み取られるか否かの決定がなされ、そしてその答はYE Sである。段階1012に入シ、命令I2の提案放出時間T17がレジスタRO に対する資源のフリ一時間よシ大であるか否かの決定がなされる。第9表におい て、レジスタROK対するフリ一時間はT17であシ、両者は等しいから、この 決定に対する答はNoである。段階1020に入υ、これもNOの答をもたらし 、分析は段W11030に切シ替わる。これは命令工2に対して処理される最後 の資源ではないから、段階1070に入シ、分析を次の資源レジスタR1に進め る。レジスタR1に対しては、第10@において、レジスタROK対するのと全 く同じ経路が取られる。次に、段W1107GでレジスタR2の処理が行なわれ る。この場合、段階1010における決定に対する答はNOであシ、段1tiJ 1020に入る。命令I2に対してレジスタR2は書き込まれるから、段階10 22に入る。この場合命令I2の提案放出時間はT17であシ、資源のロード時 間は第8茨からT15である。それゆえ、提案放出時間はロード時間よシ大であ るから、段階1024に入る。段階1024および1026は、レジスタR2に 対するロード時間およびフリ一時間をそれぞれT17および71Bに前進せしめ 、そして資源の表は第10図に示されるように更新される。
第10表 資 源 ロード時間 7り一時間 ROT1 6 T17 RI T 16 T17 R2T17 T18 これは命令I2に対して処理される最後の資源であるから、T17の提案放出時 間が実際の放出時間(段階1040)となシ、次の命令が分析される。
内部ループマトリックス乗算の例における各命令が分析されるのはこの態様にお いて!あるから、完全に分析されたとき、最終の資源衣は下記の第11表におけ るごとく現われる。
第11表 資源 p−ド時間 フリ一時間 ROT16 T17 R1716T17 R2T17 718 R3T18 T19 R4T16 T17 R10’r16 T17 R11T1 6 T17 第11図において、TOLLソフトウェアは、第9図および第10図に記載され るタスクを遂行後、段階1100に入る。段階1100は、すべての資源フリ一 時間およびロード時間を所与の基本ブロック内の最大の時間にセットする。例え ば、第11表に記載される最大時間はT19であり、それゆえすべてのフリ一時 間および四−ド時間は時間T19にセットされる。段i11q+ oに入り、こ れが処理されるべき最後の基本ブロックであるか否かについての決定がなされる 。もし否であれば、段階1120に入り、次の基本ブロックが処理される。これ が最後の基本ブロックであれば、段階1130に入り、再び命令ストリームの第 1の基本ブロックでスタートする。この分析の目的は、各基本プ四ツク内の命令 を論理的に整理し、各命令に論理的プロセッサ番号を割り当てることである。こ れは、内部ループマトリックス乗算の例に対して第6表に集約されている。段F 111140は、基準として命令放出時間(IFT)を使って、各基本ブロック 内の命令を上昇する順序で分類する機能を遂行する。
ついで段階1150に入り、こ−で論理的プロセッサ番号(LPN)が割り当て られる。プリセッサ要素の割り当てをなすに際して、1組の命令すなわち同じ命 令放出時間(IFT)を有するものに、論理的プリセツサ番号が到着順サービス 式に割り当てられる。例えば、第6表に戻ると、放出時間TI/iに対する第1 組の命令は工0.11およびI4である。これらの命令は、それぞれプロセッサ PE01PE1およびPE2に割り当てられる。次に、時間T17中、第2組の 命令I2および工5がそれぞれプロセッサPEOおよびPE1に割り当てられる 。
最後に、最後の時間718中、最後の命令I3がプロセッサPEOに割り当てら れる。プロセッサ要素の割り当ては他の方法を使って行なうことができるもので あり、プリセッサ要素およびシステムの実際のアーキテクチャに基づくことを特 に理解されたい。明らかなように、好ましい実施例において、1組の命令は、フ ァースト・イン・タイム式に論理的プロセッサに割り当てられる。割り当てをな した後段階1160に入り、最後の基準ブロックが処理されたか否かが決定され 、もし否であれば段階1170で次の基本ブロックを生じ、プロセスは完了まで 繰り返えされる。
それゆえ、TOLLソフトウェアの出力は、この例示の実施例においては、第4 図に示されるように、各命令に対して命令放出時間(IFT)の割り当てをもた らす。先述のように、命令は、命令放出時間にしたがって、命令ストリームに現 われる自然の同時的発生に基づいて再整理され、そして個々の論理的プロセッサ が第6表に示されるように割り当てられる。上の論述は内部ループマトリックス 乗算の例について行なって来たが、第9〜11図に記載される分析は、任意の5 ESE基本ブロックに応用して、そこに含まれる自然的同時発生を検出し、各使 用者プログラムに対して命令放出時間(IFT)および論理的プロセッサ番号( LPN)を割り当てるのに応用できる。このとき、このインテリジェンスは、基 本ブロック内に記録された命令に加えることができる。これは、所与のプログラ ムに対して1回だけなされ、本発明のTDAシステムア、−キテクチャで動作さ せるために必要な時間駆動・非集中化制御およびブ讐セッサマツピング情報を提 供する。
第12図に示される実行セットの目的は、1つの実行セット内における命令キャ ツシュヒツトを最大にすることによりプログラムの実行を最適化すること、換言 すれば、1つの実行セット内の基本ブロックによる他の実行セット内の基本ブロ ックへの切替えをスタテイクに最小化することである。実行セットの支援手段は 、3つの主要素より成る。丁なわち、データストラフチャの定員、実行セットデ ータストラフチャを準備する予備実行時間ソフトウェア、およびプログラムを実 行するプロセスにおいて実行セットの取出しおよび操作を支援するハードウェア である。
実行セットデータストラフチャは、1組の1または複数のブロックおよび付加さ nたヘッダより成る。ヘッダは次の情報を含む。すなわち、実際の命令のスター トのアドレス1200(これはヘッダが固定長を有するならば内在的である)、 実行セットの長さく実行セットの終了のアドレス)、潜在的相続的(プログラム の実行に関して)寒行セットの0または複数のアドレス1220である。
実行セットを支持するに必要なソフトウェアは、コンパイル後の処理の出力を操 作する。その処理は、依存性の分析、資源分析、資源割り当て、および個々の命 令ストリーム再整理を遂行するものである。実行セットの形成は、基本ブロック の実行の起こり得る順序および頻度を決定する1または複数のアルゴリズムを使 用する。基本ブロックは相応にグループ化される。可能なアルゴリズムは、最小 コストのルート設定のための直線的プ四グラミングの問題を解くのに使用される アルゴリズムに類似である。実行セットの場合、コストはブランチと配達する。
同じ実行セットに含まれる基本ブロック間のブランチは、キ七ウニ操作に関して 不利を招くことはない。
何故ならば、実行セットの基本ブロックに対する命令は定常状態にあるキャッシ ュに存するからである。そのとき、コストは、異なる実行セットの基本ブロック 間のブランチと関連する。これは、異なる実行セットの基本ブロックの命令は、 キャッシュ内にあると仮定されないからである。主メモリからキ七りユへ適当な ブロックの検索および記憶がなされている間、キ七〃ユミスでプログラムの実行 が遅延される。
本発明の教示に依るとコストを評価し割り当てるのに使用できる数種の可能なア ルゴリズムがある。1つのアルゴリズムは、スタティックなブランチコスト手法 である。この方法にしたがえば、ブレツクの連続性および最大の許容実行セット サイズ(これは最大の命令キャシュサイズのごと〈実施の限界となろう)に基づ き基本ブロックを実行セットに配置することにより始められる。基本ブロック間 におけるブランチについての情報は既知であり、コンパイラの出力である。装置 は、この情報を使用し、異なる実行セット内の基本ブロック間における(スタテ ィックな)ブランチの数に基づいて、結果として生じた基本ブロックの実行セッ ト中へのグループ化のコストを計算する。装置は、このコスト関数を最小にする ため標準のリニアプログラミング技術を使用でき、それにより、基本ブロックの 実行セット中への最適のグループ化を行なうことができる。このアルゴリズムは 、実施が容易であるという利点を有する。しかしながら、このアルゴリズムは、 実際のプログラム実行中に起こる実際のダイナミックなブランチパターンを無視 している。
本発明の教示にしたがえば、実際のダイナミツクジ2ンチパターンを一層十分に 評価できる他のアルゴリズムを使用できる。1つの例は、プログラムの実行から 実際のブランチデータを収集することであり、その結果として、実際のブロック 間ブランチに基づくブランチデータの重みづけ割り当てを利用して基本ブロック の再グループ化を行なうことである。明らかなように、この手法はデータ依存性 である。他の手法は、プログラマをしてブランチの確率を特定せしめ、その後重 みづけされたコス)剖り当てをなすことであろう。この手法は、プフグラマの介 入およびプログラマのエラーが導入される不利益を有する。さらに他の手法は、 単位セット当りの基本ブロックの数を制限するがごときパラメータを使用し、そ してこのパラメータに発見性を与えることに基づくものであろう。
上述のアルゴリズムは、実行セラFを創成する問題に独特なものではない。しか しながら、命令キャpユの性能を最適化する手段のような実行セットの使用は新 規である。プロセッサ資源の事前実行時間割り当てが新規であるのと同様に、キ 七ルユ性能を最大にするための基本ブロックの事前実行時間分類は、従来技術で は見出されないものである。
実行セラシを支援するに必要とされる最後の要素はハードウェアである。後で論 述さlるように、このハードウェアは、現在の実行セットスタートアドレスおよ び終了アドレス、およびその他の実行セットへラダデータを記憶するためのメモ リを備える。実行セットおよび関連するヘッダデータストラフチャの存在は、実 際に、キャッシュからプロセッサ要素への実際の命令取出しに分り易い。後者は 、厳密に個々の命令およびブランチアドレスに依存している。実行セットハード ウェアは、命令取出しと独立に動作し、主メモリから命令キセシュへの命令ワー ドの移動を制御する。このハードウェアは、全実行セットがキャシュに存在する か、プロダラムの実行が、実行セットの外側の基本ブロックへのブランチが起こ る点旋達するまで、命令の基本ブロックをキャンシュへ取り出すための責務を負 う。この点で、目標実行セットはキー?7”/ユに存在しないから、実行セット ハードウェアは、目標実行セットに属する基本ブロックの取出しを行なう。
第13図を参照すると、コンチクストファイル0に対するレジスタファイル66 0の構造が示されているが(構造は各コンチクストファイルに対して同じである )、各構造体はL+ルベルのレジスタセットを有しており、そして各レジスタは n + 1の別個のレジスタを備えている。例えば、nは、全部で32のレジス タに対して31に等しくし得よう。同様に、Lは、全部で16のレベルに対して 15に等しくし得よう。これらのレジスタは、レジスタ間で共有されない。すな わち、各レベルは、6他のレベルのレジスタから物理的に別々の1組のレジスタ を有する。
各レベルのレジスタは、主プログラムに関して特定の深さで実行されるサブルー チンが利用可能な1群のレジスタに対応している。例えば、レベル0の1組のレ ジスタは、主プログラムに利用可能であり、レベル1にある1組のレジスタは、 主メモリから直接呼ばれる第ルベルのサブルーチンに利用可能であり、レベル2 の1組のレジスタは、′sルベルサブルーチンにより直接呼ばれるサブルーチン (第2レベルサブルーチン)に利用可能であり、レベル3にある1組のレジスタ は、第2レベルサブルーチンにより直接呼ばれるサブルーチンに利用可能である 。
これらのレジスタセットは独立であるから、最大のレベル数は、サブルーチン間 で任意のレジスタを物理的に共有しなければならない前に、すなわち任意のレジ スタの内容を主メモリに記憶しなければならない前に入れこ配置できるサブルー チンの数に対応する。異なるレベルにあるレジスタセットは本発明の共有資源を 構成し、サブルーチン呼び中のシステムオーバーヘッドコストを相当に節約する 。これは、レジスタセットは、稀にしかメモリに、例えばスタックに記憶される 必要がないからで例示の実施例においては、興なるレベルのサブ〃−チ>間のR Mは、各ルーチンに、レジスタを得るための最高3つまでの可能なレベルを与え ることにより行なわれる。3つのレベルは、現在レベルと、先行の(発呼)レベ ル(もしあれば)と、広域(主プログ2ム)レベルとである。どのレベルのレジ スタがアクセスされるべきかの指示1すなわち現在実行している主プログラムす なわちサブルーチンに関するレベルの指示は、TOLLソフトウェアにより命令 に付加されたスタティックSC3M情報を使用する。この情報は、処理されるべ き情報に関するレベルを指示する。これは、アーギュメントとして角度値を表わ す値を取り、その値の三角関数である5INK値を戻す5INE関数に対するサ ブルーチン呼びをその1例として示すことができる。主プログラムは第12表に 記載され、サブルーチンは第13表に記載されている。
第12表 主プログラム 目 的 LOAD R2、R3結果を一時的にレジスタR3にセーブ5TORE R4, 2最終結果をメモリ2に記憶5INKサブルーチンは第1S表に記載される。
第13表 命令 サブルーチン 目 的 それゆえ、本発明の教示にしたがうと、第14図におけるごとく、サブルーチン の命令XOは、現在レベル(サブルーチンレベルまたは被呼レベル)のレジスタ R2を、先行レベル(発呼ルーチンまたはレベル)からのレジスタR1の内容で ロードする。サブルーチンは、発呼ルーチンのレジスタセットから独立に処理を 遂行すべくフルセラシのレジスタを有することに留意されたい。
サブルーチン呼びの完了にて、命令I、は、現在レベルのレジスタR7を発呼ル ーチンのレベルのレジスタR2に記憶せしめる(これは、5INEルーチンの結 果を発呼プログラムのレジスタ七ツFに戻す)。
第22図と関連して一層詳述されるように、レベル間の切替えは、ダイナミック に発生されるSC3M情報の使用により行なわれる。しかして、この情報は、命 令の現在手順レベル(すなわち被呼ルーチンのレベル) G)絶対値、先行の手 順レベル(すなわち、発呼ルーチンC)レベル)およびコ、ンテクス)識別情報 を含むことができる。
絶対的なダイナミックSC3Mレベル情報は、TOLI、ソフトウェアにより供 給される相対的な(スタティック)SC8M情報からLRDにより発生される。
コンチクスト識別情報は、マルチユーザシステムにおいて多数のプログラムを処 理するときのみ使用される。相対的SC3M情報は、第13表にレジスタR1( 発呼ルーチンの)に対してR1(LD)として、レジスタR2に対してR2(L O)として示されている。現在レベルの全レジスタには、現在手順レベルを示す 符号(00)を付した。
第13図および第14図と関連して説明される本方法およびストラフチャは、サ ブルーチンおよびその発呼ルーチンのレジスタ間で同じレジスタの物理的共有が 行なわれる従来の手法と相当に異なる。物理的共有のため、サブルーチンにより 使用のために利用できるレジスタの数が制限されるから、レジスタを主メモリに 格納するためにより多くのシステムオーバーヘッドコストが要求される0例えば 5Conununieatlons of the人CM、1985年1月発行 、Vol、28、A1、P、8−21記載のDavidA、 Patlermo nの[Reduc@d In5truction S@t Compatvr@ Jなる論文に記載されるMIPS法参照。その文献においては、最初の16のレ ジスタは、サブルーチンにより単独に使用される局部的レジスタであり、次の8 個のレジスタ(レジスタ16〜23)は発呼ルーチンおよびサブルーチン間で共 有され、最後の8個のレジスタ(レジスタ24〜31)は広域(または主)ブリ グラムおよびサブルーチン間で共有される。明らかなように、サブルーチンによ りアクセスし得る32のレジスタのうち、16のみがプレグラムの処理において サブルーチンによる使用のために専用される。複雑なサブルーチンの処理におい ては、サブルーチンに専用化されている限定された数のレジスタでは、一般にサ ブルーチンの処理に十分とはいえない。データのシャフリング(中間のデータの メモリへの記憶を伴なう)が行なわれなければならず、そしてこれは、ルーチン の処理において相当のオーバーへッドコスYをもたらす。
本発明の教示に依れば、コンパイル時に起こることが分っているレベル間の相対 切替えは、第4図(SC3Mデータ)に示されるごとくレジスタ識別情報に必要 な情報を加え、種々のレベル間において命令を適当に歿マツピングすることによ り特定される。それゆえ、完全に独立の1組のレジスタが、発呼ルーチンおよび 各レベルのサブルーチンに対して利用可能となる。発呼ルーチンは、ぞれ自身の 完全な1組のレジスタにアクセスすることに加えて、前述のごとく、命令に加え られる上述のスタティックSC8Mマツピングコードを使って、より高次の1組 のレジスタに直接アクセスすることもできる。従来技術の手法で特に見られるよ うな、サブルーチンに利用可能なレジスタセットのサイズの低減は文字通り起こ らない。さらに、SC3M 情報用のマツピングコードは、任意の数の所望のレ ベルにアクセスするに十分の長さのフィールドとし得る。例えば、1実施例にお いて、発呼ルーチンは、3ビツトのフィールドでそれ自身のレジスタに加えて7 つのより高次のレベルにアクセスできる。
本発明は、任意の特定の数のレベルに限定されるものでもなく、1つのレベル内 の特定数のレジスタに限定されるものでもない。本発明の教示に依ると、第14 図に示されるマツピングは、論理的マツピングであり、従来形式の物理的マツピ ングではない。例えば、発呼ルーチンレベル、被呼レベルおよび広域レベルのご とき3つのレベルは3ビツトマツプを必要とする。レベルの相対的識別は、スタ ティック3C8M の2ビツトワードにより、例えば発呼ルーチンは00により 、副次的なレベルは(01)により、広域レベルは(11)により特定できる。
このようにして、各使用者のプログラムは分析され、スタテイックSC3M相対 手順レベル情@(やはり窓コードと指称される)が、使用者プログラムを特定の LRDに発する前に命令に加えられる。一度使用者が特定のLRDに割り当てら れると、スタティックSC3Mレベル情報を使用して、LRD依存性のダイナミ ックSC3M情報を発生し、これが必要に応じて加えられる。
2、ハードウェアの詳細な説明 第6図に図示されるように、本発明のTDAシステム600は、メモリ610と 複数の論理資源ドライバ(LRD)620と複数のプロセッサ要素(エレメント )(PE)640と複数の共有コンチクスト記憶ファイル660とから構成され る。以下に続く詳細な説明は、TOLLソフトウェア出力はこのハードウエアヘ ロードされるので、論理資源ドライバから開始される。
a、論理資源ドライバ(LRDs) 特定の論理資源ドライバ(LRD)の詳細は第15図に示される。第6図に図示 されるように、各論理資源ドライバ620は、−側でLRD−メモリネットワー ク630へまた他側でPE−LRDネットワーク650へ相互接続される。もし 、本発明がSIMDマシンであるとすると、唯一つのLRDが用意されモして唯 一っのコンチクストファイルが用意される。MIMD能力に対しては、第6図に 例示される実施例において、“n°人までのユーザ(使用者)が受入れ可能なよ うに、一つのLRDと一つのコンチクストファイルとが各ユーザのために用意さ れる。
論理資源ドライバ620は、データキャッシュ部1500と命令選択部1510 とから構成される。命令選択部では、以下の要素が相互接続される。命令キャッ シュアドレス変換ユニット(ATU)1512がバス1514を通じてLRD− メモリネットワーク630へ相互接続される。命令キャッシュATU 1512 はさらにバス1516を通じて命令キャッシュ制御回路1518へ相互接続され る。命令キャッシュ制御回路1518は線路1520を通じて一連のキャッシュ 区分1522a、1522b、1522cおよび1522dへ相互接続される。
各キャッシュ区分はそれぞれバス1524a、1524b、1524cおよび1 524dを通じて、LRD−メモリネットワーク630へ接続される。各キャッ シュ区分回路はさらに線1536a。
1536b、1536cおよび1536dを通じてプロセッサ命令キュー(P  I Q)バスインターフェースユニット1544へ相互接続される。PIQバス インターフェースユニット1544は線1546を通じて分岐実行ユニット(B EU)1548へ接続され、分岐実行ユニット1548は引き続き線1550を 通じて、PE−コンチクストファイルネットワーク670へ接続される。
PIQバスインターフェースユニット1544はさらに線1552a、1552 b、1552cおよび1552dを通じて、プロセッサ命令キュー(P I Q )バッファユニット1560へ接続され、プロセッサ命令キュー(P I Q) バッファユニット1560は引き続き線1562a−dを通じてプロセッサ命令 キュー(PIQ)プロセッサ割当回路1570へ接続される。
PIQプロセッサ割当回路1570はつぎに線1572a % dを通じてPE −LRDネットワーク650へしたがってプロセッサ要素640へ接続される。
データキャッシュ部1500では、データキャッシュATU1580がバス15 82を通じてLRD−メモリネットワーク630へ相互接続されさらにバス15 84を通じてデータキャッシュ制御回路1586へそして線1588を通じてデ ータキャッシュ相互接続ネットワーク1590へ相互接続される。データキャッ シュ制御回路1586はまた線1593を通じてデータキャッシュ区分回路15 92a−dへ相互接続される。データキャッシュ区分回路はつぎに線1594a =dを通じてLRD−メモリネットワーク630へ相互接続される。
さらに、データキャッシュ区分回路1592は線路1596a〜dを通じてデー タキャッシュ相互接続ネットワーク1590へ相互接続される。最後に、データ キャッシュ相互接続ネットワーク159oは線路1598a Ndを通じてPE −LRDネットワーク650へそれゆえプロセッサ要素640へ相互接続される 。
動作において、各論理資源ドライバ(LRD)620は、データキャッシュ部1 500と命令選択部151゜との二つの部分を有する。データキャッシュ部15 00は、プロセッサ要素640とメモリ610との間で高速データバッファとし て振る舞う、単位時間あたり満足されねばならないメモリ数要求により、データ キャッシュ150oはインタリーブされる。プロセッサ要素640によりメモリ へ行なわれるすべてのデータ要求が、データキャッシュ相互接続ネットワーク1 590に発行(issue)せられそしてデータキャッシュ1592により捕捉 される。データ要求は、プロセッサにより実行される各命令へLRDにより付加 される動的SC5M情報の一部であるコンチクスト識別子を使用して、データキ ャッシュ相互接続ネットワーク1590により適当なデータキャッシュ1592 へ送られる。所望されるデータのアドレスは、データがキャッシュ区分のどこに あるかを決める。もし要求されるデータが存在する(すなわち、データキャツシ ュヒツトが生ずる)ならば、データは要求しているプロセッサ要素640へ送り 返される。
もし 要求されるデータがデータキャッシュにないならば、キャッシュ1592 へ付加されるアドレスは、システムアドレスへ変換されるべきよう、データキャ ッシュATU1580へ送られる。システムアドレスはつぎにメモリへ発行され る。応答して、メモリからのデータのブロック(キャッシュラインまたはブロッ ク)がデータキャッシュ制御1586の制御下でキャッシュ区分回路1592へ 付与される。このキャッシュブロックにある要求されるデータはつぎにデータキ ャッシュ相互接続ネットワーク159oを通じて、要求しているプロセッサ要素 640へ送られる。これは単に一つの可能な構成であることが明瞭に理解される べきである。データキャッシュ部は従来の構成のものでありそして可能な種々の 実施が当業者には実現可能である。データキャッシュは、標準の機能および構成 のものであるので、これ以上言及しない。
LRDの命令選択部1510は、命令キャッシングと命令キューイングと分岐実 行との3つの主要な機能を有する。命令選択部1510の命令キャッシュ部のシ ステム機能は、キャッシング機構の標準的ないずれのものともされる。それは、 プロセッサとメモリとの間で、高速命令バッファとして振る舞う、しかし、本発 明は、この機能を実現するのに、独特の方法および装置形態を提供する。
命令部151oの一つの目的は、メモリから複数の実行セットを受容し、実行セ ットをキャッシュ1522へ入れそして必要時供給式でセット内の命令をプロセ ッサ要素640へ供給することである。システムは一般に独立の複数のプロセッ サ要素640を包含するので、命令キャッシュに対する要求は、同時実行可能な 一部の命令に対するものである。再び、単位時間あたり満足されねばならない複 数の要求により、命令キャッシュはインクリーブされる。グループ(群)サイズ は、無からユーザに利用可能なプロセッサ数へ範囲がおよぶ、グループはパケッ トと名付けられるが、これは、命令が連続的な仕方で記憶されることを必ずしも 意味しない、命令は、それらの命令放出時間CIFT)に基づいて、キャッシュ から取り出される0次命令放出時間レジスタは、取り出されるべき命令の次パケ ットの放出時間を包含する。このレジスタは、LRDの分岐実行ユニット154 8によりロードされならびに命令取り出しが完了したときキャッシュ制御ユニッ ト1518によりインクリメント可能である。
次IFTレジスタ(NIFTR)は、コンチクスト制御ユニット1518および 分岐実行ユニットからアクセス可能な記憶レジスタである。その簡単な機能によ り、それは明示しない、技術的に、それは命令キャッシュ制御ユニット1518 の一部でありそしてさらに制御ユニット1660に埋め込まれる(第16図)、 ここのキーポイントは、N I FTRは、インクリメントまたはロードが可能 な単なる記憶レジスタであることである。
命令キャッシュ選択部1510はバス1524を通じてメモリから実行セットの 命令を受容しそしてラウントロピン式に、命令語を各キャッシュ区分1522a 〜dに入れる。別言すれば、実行セットの命令は、第1命令がキャッシュ区分1 522aにまた第2命令がキャッシュ区分1522bに第3命令がキャッシュ区 分1522Cに第4命令がキャッシュ区分1522dに供給されるよう指示され る。第5命令は次に、キャッシュ区分1.522aへ指示され、そして実行セッ トのすべての命令がキャッシュ区分回路へ供給されるまで続く。
キャッシュ区分へ供給されるすべてのデータがキャッシュに必ずしも記憶される とは限らない。説明されるように、実行セットヘッダおよびトレーラは記憶され なくともよい、各キャッシュ区分は、独特の識別子(タグと名付けられる)を、 そのキャッシュ区分に記憶されるべきすべての情報に付加する。識別子は、キャ ッシュから得られる情報が実際に所望される情報であることを確認するのに使用 される。
複数命令の一パケットが要求されるとき、各キャッシュ区分は、要求されるパケ ットのメンバーである命令を包含するかどうかを確認する。もし、キャッシュ区 分のいずれも、要求されるパケットのメンバである命令を包含しない(すなわち 、ミスが生ずる)ならば、要求されるパケットを包含する実行セットは、データ キャッシュミスに類似の仕方で、メモリから要求される。
もし、ヒツトが生ずる(すなわち、キャッシュ区分1522の少なくとも一つが 要求されるパケットからの命令を包含する)ならば、キャッシュ区分は任意の適 当な動的SC5M情報を命令に付加する。各命令に付加される動的SC3M情報 はマルチユーザ応用に重要である。動的に付加されるSC5M情報は、ある所与 のユーザに割り当てられるコンチクストファイル(第6図参照)を識別する。そ れゆえ、本発明の教示によって、システム600は、マスクプロセッサまたはメ モリへのアクセスを必要とすることなく、多くのユーザコンチクストファイル間 の遅延自由切換えが可能である。
命令はつぎに、LRD620のPIQバスインターフェースユニット1544へ 供給され、ここで、それは、例示の実施例でTOLLソフトウェアが命令に付加 されていた拡張知能に包含される論理プロセッサ番号(LPN)に応じて適当な PIQバッファ156oへ送られる。PIQバッファユニット156oの命令は 、実プロセツサ要素640への割当てのために、バッファされる。プロセッサ割 当てはPIQプロセッサ割当てユニット1570により行なわれる。物理的プロ セッサ要素の割当ては、現在利用可能なプロセッサの数および割当てられるべき 利用できる命令数に基づいて行なわれる。
これらの数は動的である0選択プロセスは以下の通りである。
第15図の命令キャッシュ制御1518および各キャッシュ区分1522の詳細 は第16図に示されている。
各キャッシュ区分回路1522では、5つの回路が利用される。第1の回路は、 実行セットのヘッダの各ワードをパス1520bを通じて命令キャッシュコンチ クスト制御ユニット166oへ送るヘッダ送り回路1660である。ヘッダ送り 回路166oの制御は、パス152゜aを通じてヘッダパス選択回路1602に より行なわれる。ヘッダバス選択回路16o2は、制御ユニット1660から線 路1520bを通じて受容されるアドレスに基づいて、キャッシュ区分で必要と される数のヘッダ送り装置(header router) 1600を選択的 ニ賦活する。たとえば、もし実行セットが2つのヘッダワードを有するならば、 最初の2つのヘッダ送り回路1600だけが、ヘッダバス選択回路1602によ り賦活されそれゆえヘッダ情報の2つのワードがパス1520bを通じて、キャ ッシュ区分回路1522aおよび1522b(図示せず)の2つの賦活されるヘ ッダ送り回路!600から制御ユニット1660へ供給される。説明したように 、実行セットの連続するワードが連続するキャッシュ区分回路1522へ供給さ れる。
たとえば、表1のデータは全実行セットを表示しそして適当なヘッダワードが実 行セットの最初に出現すると仮定する。最先の命令放出時間(IFT)をもつ命 令が最初にリストされそしである所与のIFTの間に、最も低い論理プロセッサ 番号に関するこれらの命令が最初にリストされる0表はつぎのように読まれる。
10 (T16) (PEG) !I (T16) (PEI) I4 (T16) (PE2) 12 (TI?) (PEO) I5 (T17) (PEI) I3 (T18) (PEO) それゆえ、表1の例(すなわち、マトリックスマルチブライ内部ループ)は、そ れと関連の2つのへラダワードと放出時間(IFT)および論理プロセッサ番号 (LPN)を画然する拡張情報を持つ0表14に示されるように、命令は、放出 時間に応じて、TOLLソフトウェアにより再順序付けられた。それゆえ、表1 4に示される実行セットは、LRD−メモリネットワーク630を通じてメモリ から供給されるとき、第1のワード(ヘッダワードl)は、区分キャッシュ0に より制御ユニット1660へ送られる。第2のワード(ヘッダワード2)は、区 分キャッシュ1 (第15図)により制御ユニット1660へ送られる。命令I Oが区分キャッシュ2へ、命令工1が区分キャッシュ3へ、命令I2が区分キャ ッシュ0へ等々送られる。その結果、キャッシュ区分1522はここに表15に 示されるような命令を包キャッシュ0 キャッシュ1 キャッシュ2 キャッシ ュ3上記の例は、実行セットでただ一つの基本ブロックをもつにすぎない(すな わち、それは極端に単純化した例である)ことをはっきりさせることが重要であ る。現実に、実行セットは複数の基本ブロックを有するであろう。
命令は次に、記憶のため各キャッシュ区分にあるキャッシュランダムアクセスメ モリ(RAM)1610へ供給される。各命令は、ヘッダ送り装置1600から バス1602を通じてタグ付加装置(tag attacher)回路1604 へそして次に線路1606を通じてRAM1610へ供給される。タグ付加装置 回路1604はタグ生成回路1612の制御下にあり、そして線路1520cを 通じて、これと相互接続される。キャッシュRAM1610には、従来のスーパ ーミニコンピユータで見出さ、れるような従来のキャッシュ高速RAMが可能で ある。
タグ生成回路1612は、指定されるRAM1610での命令の記憶の前に、各 命令への付加のために、独特の識別コード(ID)を提供する。キャッシュ回路 に記憶される命令へのプロセス識別タグの割当ては従来のものでありそしてエイ リアシング(aliasing)を回避するよう行なわれる。アラン ジエイ  スミス (Alan J。
Sm1th )によるエイシーエム コンピユーテイング サーベイズ(ACM  Computing 5urveys )第14巻、1982年9月の“Ca che Memories″参照、タグは、各別の命令およびユーザからそれを 唯一つ識別するのに十分な量の情報を有する0例示の命令はすでにIFTとLP Nとを含むので、後に命令が実行のため検索されるとき、命令は命令の放出時間 に基づいて取り出される。以下の表16に示されるように、拡張情報およびハー ドウェアタグな含む各命令は上記の例について表示のように記憶される。
表16 キヤv シュO: l4(T16) (PE2) (ID2)キャッシュ1 :  l2(TI?) (PEO) (ID3)キャッシュ2 : 10(716)  (PEO) (100)15(T17)(PEI)(ID4) キャッシュ3 : 11(T16) (PEI) (IDI)13(71B)( PEO)(ID5) 先に説明されたように、キャッシュ区分回路1522の目的は、遅い主メモリと 速いプロセッサ要素640との間に高速バッファを提供することである0通常、 キャッシュRAM1610は、高速アクセスが可能な高速メモリである。もし、 RAM1610が真の連想メモリであるならば、表16に明示されるように、各 RAM1610は、命令放出時間(I FT)に基づいてアドレス可能である。
現在、この種の連想メモリは経済的に妥当でなくまたキャッシュアドレス変換回 路1620へのIFTが利用されねばならない、この種の回路は、設計が従来の ものでありそしてバス1520dを通じて、各RAMのアドレッシングを制御す る。回路1620の目的は、命令放出時間の与えられる所望される命令のRAM アドレスを生成することである。それゆえ、命令放出時間T16について、表1 6に示されるように、キャッシュOとキャッシュ2とキャッシュ3とは、それぞ れ命令I4とIOとIIとを発生しよう。
キャッシュRAM1610がアドレスされるとき、特定の放出時間に関連される これらの命令は、線路1624を通じてタグ比較および特権検査回路1630へ 供給される。タグ比較および特権検査回路1630の目的は、適当な命令が供給 されたことを確認するために、ハードウェアタグ(ID)を発生されるタグと比 較することである。参照ないし基準タグは、線路1520eを通じてタグ比較お よび特権検査回路1630へ相互接続される別のタグ生成回路1632を通じて 発生される。特権検査がまた、命令により要求される動作が(例えばシステムプ ログラム、アブリーケーションプログラムなど)プロセスの所与の特権状態(ス テータス)が許可されるのを確認するのに、供給される命令でも遂行される。こ れは、プロセッシングステータスの複数レベルをサポートするコンピュータプロ セッサにより行なわれる従来の検査で、ある、ヒツト/ミス回路1640が、特 定の命令フェッチ(取出し)要求に応答して、どのRAM1610が適当な命令 なPIQバスインターフェースユニット1544へ供給したかを決定する。
たとえば、表16に振り返ってみると、もしRAM1610が、命令放出時間T 16について、回路162oによりアドレスされるならば、キャッシュ0とキャ ッシュ2とキャッシュ3は命令に応答して、これらのキャッシュ区分でヒツト指 示を構成しよう。キャッシュ1は応答せずそしてミス指示を構成しそしてこれは 線1520gを通じて回路1640により決定されよう、こうして、命令放出時 間T16について各命令がバス1632を通じて、もしあれば動的SC3M情報 がSC5M付加装置ハードウェア1650により命令に付加されるSC5M付加 装置1650へ供給される0例えば、ハードウェア165oが(相対値である) 静的SC3M手続レベル情報を実手続レベル値と置換できる。実手続レベル値は 手続レベルカウンタデータおよび静的SC5M情報から発生される。
各放出時間に関連される命令のすべてが、RAM1610から読み取られとぎ、 ヒツトおよびミス回路1640は線路1646を通じて、命令キャッシュ制御ユ ニット1660にこの情報を伝達する。命令キャッシュコンチクスト制御ユニッ ト1660は、命令放出時間を次の値にインクリメントする命令キャッシュ制御 1518の一部である次命令放出時間レジスタを包含する。それゆえ、例では、 命令放出時間T16に関連されるすべての命令の読み取りの完了にて、命令キャ ッシュコンチクスト制御ユニット1660は次放出時間T17ヘインクリメント を行ないそしてこの情報を線路1664を通じてアクセス決定(resolut ion)回路167oへまた線路1520fを通じてタグ比較および特権検査回 路1630へ供給する。またTOLLソフトウェアにより感知される動作依存状 態によっては有効命令をもたない放出時間があってもよいことに注意されたい、 この場合には、キャッシュからはなんの命令もフェツチされずまたPIQインタ ーフェースへ伝達されないであろう。
アクセス決定回路1670は、どの回路が命令キャッシュRAM1610へのア クセスを有するかを調整する0通常、これらのRAMは、各クロックサイクルで 単一の要求だけを満足させることができる。RAMへ一度に二つの要求があるこ とがあるので、いずれの回路がアクセスを獲得するかを決めるために調停方法が 実行されねばならない、これはキャッシュメモリの設計での従来の問題であり、 アクセス決定回路は、この分野でよく知られている優先順位問題を解決する。
本発明は、数人のユーザを支援できそしてできれば時間と空間の両方で同時に数 人のユーザを支援できるのがよい、以前の従来技術の方法(CDC,IBMなど )では、マルチユーザ式支援が単に−または複数のプロセッサを時分割すること によって実現されていた。別言すれば、プロセッサは時間にて共有されていた。
このシステムでは、マルチユーザ式支援が、複数のプロセッサエレメントで時間 を与えられる各ユーザへのLRDの割当てにより(空間にて)実現される。こう して、プロセッサエレメントの共有に対する空間的態様がある。マシンのオペレ ーティングシステムは時分割される仕方で同様のLRDに割り当てられるこれら のユーザを取り扱い、それにより、時間的次元をプロセッサの共有に付加する。
マルチユーザ式支援が複数のLRDと複数のプロセッサエレメントの使用とレジ スタファイルおよび条件コード記憶をサポートする複数のコンチクストファイル 660とにより実現される。数人のユーザが同時にプロセッサエレメントで実行 してもよいとき、追加の情報のピース(片)が、命令ソースおよびそれが利用可 能ないずれの資源をも唯一つ識別するため、その実行の前に、各命令に付加され ねばならない0例えば、レジスタ識別子がサブルーチン手続レベルの絶対値とコ ンチクスト識別子ならびに実レジスタ番号を包含しなければならない、メモリア ドレスもまた、命令がそれからLRD−メモリ相互接続ネットワークを通じて適 当なデータキャッシュへ適当に送られるべく発行(issue)されたところの LRD識別子を包含しなければならない、追加および要求される情報は、静的お よび動的構成成分の二つの成分を備え、そして情報は、「共有コンチクストスト ーレッジマツピングJ (SCSM)と称される。静的情報は、コンパイラ出力 から生じ、TOLLソフトウェアはコンパイラ生成命令ストリームから情報を収 集し、そしてレジスタ情報を、命令がLRDにより受容されるまえに、命令に付 加する。
動的情報は、プロセッサへの命令の発生のまえにLRDにより命令にハードウェ ア付加される。この情報は、命令を発生するLRDに対応するコンチクスト/L RDm別子と命令の現在手続レベルの絶対値と現在の命令ストリームのプロセス 識別子と好ましくは通常コンチクスト自由でないプロセッサを有するシステムの プロセッサに包含されるであろう命令ステータス情報とから構成される。この後 の情報は、誤りマスクと浮動小数点フォーマットモードと丸めモードなどから構 成されよう。
第16図の回路の動作において、−またはそれ以上の実行セットが命令キャッシ ュ回路へ供給される。各セットごとのヘッダ情報は−またはそれ以上の連続する キャッシュパーティッション(区分)へ供給されそしてコンチクスト制御ユニッ ト1660へ送られる。実行セットの命令は次に、ラウントロピン式に個々に各 連続するキャッシュパーティッションユニット1522へ送られる。ハードウェ ア識別タグが、各命令に付加されそして次に命令はRAM1610に記憶される 。先に説明したように、各実行セットは、命令キャッシュ不履行(デフオールド )を最小限にするよう十分な長さのものでありそしてRAM1610は実行セッ トを記憶するのに十分な大きさのものである。プロセッサエレメントが命令を要 求するとき、適当なIFTと整合する有効命令の数およびキャッシュロケーショ ン(場所)が決められる。
RAM1610に記憶される命令は読み出され、識別タグは確認され、特権ステ ータスが検査される。命令は、次にPIQバスインターフェースユニット154 4へ供給される。PIQバスインターフェースユニット1544へ供給される各 命令は、表17に示されるように、識別子タグ(ID)およびハードウェア付加 SC5M情報を含む。
表17 キャッシュO: l4(716) (PE2) (ID2) (SCSMO)キ ャッシュ1 : l2(T17) (PEO) (103) (SCSMI)キ ャッシュ2 : 10(716) (PEO) (100) (SCSM2)I 5(TI?)(PEI)(ID4)(SCSM3)キャッシュ3 : 11(T 16) (PEI) (IDI) (SCSM4)13(718)(PEO)( 105)(SCSM5)もし、命令がRAM1610に記憶されていないならば 、キャッシュミスが生じ、そして命令を包含する新しい実行セットが線路152 3を通じて主メモリから読み取られる。
第17図ではPIQバスインターフェースユニット1544およびPIQバッフ ァユニット156oの詳細が示されている。第17図を参照すると、PIQバス インターフェースユニット1544は上の表17に示されているような命令を線 路1536を通じて受容する。正しい放出時間を有する命令を包含するこれらの サーチないし探索タグハードウェア1702が線路1549を通じて現在の命令 放出時間の値へアクセスできそしてキャッシュメモリ1522を検索し、正しい 放出時間を有する命令を包含するこれらのレジスタのアドレスを決める、PIQ バスインターフェース1544への供給のため、どの命令が次に選択すべきかを 命令キャッシュ制御回路系により決定するために、検索タグハードウェア170 2は次に、これらのメモリロケーションのアドレスを命令キャッシュ制御回路系 1518に対して利用可能にする。
これらの命令は、並列にバスインタフェースユニット(BIU)1700の2次 元配列にアクセスする。バスインターフェースユニット1700は、接続171 0および172oによりフルアクセス非ブロツキングネットワークで相互接続さ れ、そして線路1552を通じてPIQバッファユニット156oへ接続する。
各バスインターフェースユニット(BIU)1700は、Tl74L85の4ビ ット大きさのコンパレータ(テキサス州75265、ダラス、ビーオーボックス 225012のテキサスインスツルメント社)から構成される。命令放出時間7 16に対して、マトリックスマルチブライ例において、キャッシュOが命令I4 を包含しそしてキャッシュ3(第17図のキャッシュnに対応する)が命令11 を包含する。命令I4に割り当てられる論理プロセッサ番号はPE2である。論 理プロセッサ番号PE2はプロセッサ命令キュー2(これは、命令を包含するキ ャッシュ0ユニツトに対応するBIU3である)のため、バスインターフェース ユニット1700の選択(SEL)信号が賦活される。この例では、BIU3だ けが賦活されそしてこのBIU3行および列に対し残りのバスインターフェース ユニットは賦活されない、同様に、キャッシュ3(第17図のキャッシュn)に 対し、対応するBIU2は、プロセッサ命令キュー1に対して賦活される。
PIQバッファユニット1560は、表18に示されるファーストインファース トアウト(F I FO)方法でPIQバスインターフェースユニット1544 から受容される命令を記憶する複数のプロセッサ命令キュー1730から構成さ れる。
表18 PIQOPIQI PIQ2 PIQ3命令キューイング機能を実行するのに加 えて、PIQ173oはまた、プロセッサエレメント640へ発行される各命令 の実行ステータスをトラックを追跡する。理想的なシステムでは、命令は、命令 が実行を完了したかどうかについて顧慮することなく、クロックサイクルごとに プロセッサエレメントへ発行できよう、しかし、システムのプロセッサエレメン ト640は、例えばデータキャッシュミスなど例外的条件の発生によりクロック サイクルごとに命令を完了できないこともあろう、その結果、各PIQ1730 は、まだ実行状態のプロセッサエレメント640へ発行されたすべての命令を追 跡する。
この追跡の主要な結果は、PIQ1730がLRD620のため命令クロッキン グ機能を実行することである。別言するとPIQ1730は、直線コード(st raightline code)を実行しているとき、次の放出時間レジスタ が更新されるときを決定する。これはつぎに、新しい命令取出しサイクルを開始 する。
命令クロッキングが、所与のPIQにより発行される命令が実行されたか、また はパイプライン構成ないし結合されるPEの場合には、次のステージ(段階)へ 進行したかを特定することを、各PIQ1730に命令済み信号を形成させるこ とにより実現される。これは、次に、このLRDからのすべての別のPIQ命令 済み信号と組み合されそして次放出時間レジスタをインクリメントするインクリ メント信号をゲートするのに使用される。「済み」信号は、線路1564を通じ て、命令キャッシュ制御1518へ供給される。
第18図を参照すると、PIQプロセッサ割当て回路1570は、PE−LRD ネットワーク65oへそしてつぎに種々のプロセッサエレメント640ヘフルア クセススイツチとして相互接続されるネットワークインターフェースユニット( NIU)1800の2次元配列を包含する。各ネットワークインターフェースユ ニット(、NIU)1800は第17図のバスインターフェースユニット(BI U)1700と同様の回路系から構成される0通常の動作において、プロセッサ 命令キュー#0(P I QO)は、キュー#0に対応する列に関連されるNI UOを賦活することにより直接プロセッサエレメントoをアクセスでき、その列 および行に対しPIQプロセッサ整列回路の残りのネットワークインターフェー スユニットNIUO1NIUI%NIU2、NlU3は非賦活される。同様に、 プロセッサ命令キュー#3(P I Q3)は通常、キュー#3に関連の列のN lU3を賦活することによりプロセッサエレメント3をアク、セスし、その列お よび行の残りのNIUOlNIUI、NlU2およびNlU3は賦活されない、 ネットワークインターフェースユニット1800の賦活は、命令選択および割当 て回路1810の制御下にある。
ユニット1810が、ユニット1810がメンバであるLRD内にPIQ173 0から線路1811を通じてまた線路1813を通じて(別のLRDの)別の全 てのユニット181Oからそしてネットワーク650を通じてプロセッサエレメ ント640から信号を受容する。各PIQ1730は、” I have an  1nstruction that 1sready to be assi gned to a processor、′に対応する信号をユニット181 0に供給する。別のPIQバッファユニットは、このユニット1810およびす べての別のユニット1810に、“My PIQ1730(’;: x) ha s aninstruction ready to be assigned  to a processor、”に対応する信号を供給する。最後に、プロ セッサエレメントはシステムで各ユニット1810に、“I canaccep t a new 1nstruction 、”に対応する信号を供給する。
−LRDのユニット1810は、線路1811を通じてそのLRDの複数のPI Q1730へまた線路1860を通じてそのLRDのネットワークインターフェ ースユニット1800へそして線路1813を通じてシステムの別のLRDの別 のユニット1810へ信号を伝達する。ニーyト1810は、” Gate y ourinstruction onto the PE−LRD 1nter face b u 5(650) 、”に対応する信号を各PIQ1730へ伝 達する。ユニットは、選択信号をネットワークインターフェースユニット180 0へ伝達する。最後に、ユニットは“ I have used proces sor element # x 、 ”に対応する信号を、使用されつつある 各プロセッサに対しシステムの各別のユニット1810へ伝達する。
さらに、各LRDの各ユニット1810は、LRDの優先順位に対応する優先順 位をそれに関連して有する。
これは、複数LRDを、ゼロからシステムのLRDの数へと上行する順序に並べ るのに使用される。プロセッサエレメントを割当てるのに使用される使用される 方赳は次の通りである。複数LRDが並べられるとすると、多くの割当て方式が 可能である(たとえば、ラウントロピン、ファーストカムファーストサーブド( first comefirst 5erved)、タイムスライスなど)、シ かし、コレらは、実施細目でありまた本発明の教示に基づくこの装置の機能に影 響を与えるものではない。
現在量も高い優先順位をもつLRDを考察する。このLRDは、それが要求する 全てのプロセッサエレメントを得、そして実行されるべき用意の整った命令を利 用可能なプロセッサエレメントに割り当てる。もし、プロセッサエレメントがフ ンチクストフリーであるならば、どのような仕方でも割り当てることができる。
しかし一般に、すべてのプロセッサが正しく機能していると仮定するならば、も ちろんプロセッサエレメント#0が利用可能であるとして、PIQ#Oからの命 令がプロセッサエレメント#0へ送られる。
最も高い優先順位のLRDでユニット1810は次にこの情報をシステムの別の すべてのユニット1810へ伝達する。オーブン状態のいずれのプロセッサも次 に、実行可能な命令と一緒に次に最も高い優先順位のLRDにより利用される。
この割当ては、全てのプロセッサが割り当てられるまで継続する。それゆえ、プ ロセッサはディジーチェイン態様の優先順位に基づいて割り当てられる。
もし特定のプロセッサエレメントが、例えば、エレメント1が障害を起こしたな らば、命令選択割当てユニット1810は、全てのネットワーク命令ユニットN IU1を非活動化することにより、このプロセッサエレメントを非活動化できる 。それは次に、例えばプロセッサエレメント2がプロセッサエレメント1に論理 的に割り当てられる全ての命令を受容し、プロセッサエレメント3が、プロセッ サ2に論理的に割り当てられる全ての命令を受容するため、ここに割り当てるこ とができるよう(以下同様)、ハードウェアを通じてプロセッサエレメントを整 理し直しことができる。実際、余分なプロセッサエレメントおよびネットワーク インターフェースユニットが、高い程度の障害許容限界を提供するためシステム に用意できる。
明らかに、これは単に可能な実施の一つである。別の種々の方法もまた実現可能 である。
b0分岐実行ユニット(BEU) 第19図を参照すると、分岐実行ユニット(BEU)1548は、本発明では、 各基本ブロックの終了で生ずるすべての分岐命令の実行に責任のあるユニットで ある0例示の実施例では、サポートされる各コンチクストごとに一つのBEU1 548があり、それで、第6図を参照して、“n“個のサポートされるコンチク ストが“n”個のBEUを必要とする。各BEUは簡単な設計のものでありそれ ゆえ複数のコンチクスト間でBEUを共有する費用は、各コンチクストにそれ自 身のBEUを持たせるようにすることよりもより高価であろうから、例示の実施 例は、各サポートされるコンチクストごとに一つのBEUを使用する。
BEU1548は、分岐命令がPE640の外側で実行されること以外は、従来 の仕方で分岐を実行する。BEU15484t、分岐条件を評価し、そして、目 標アドレスが選択されるとき、このアドレスを生成しそして次命令取出しレジス タへ直接入れる。目標アドレス生成は、手続呼出しまたは復帰でない無条件およ び条件分岐については従来のものである。目標アドレスは、(a)命令から直接 または(b)次命令取出しレジスタの現在の内容からのオフセットまたは(C) コンチクストレジスタファイルの汎用目的レジスタのオフセットから取られる。
サブルーチンからの復帰分岐が、わずかに異なる態様で処理される。サブルーチ ン復帰分岐を理解するために、サブルーチン呼出し分岐の説明が必要である0分 岐が実行されるとき、復帰アドレスが生成されそして記憶される。復帰アドレス は通常は、サブルーチン呼出しに続く命令のアドレスである。復帰アドレスは、 メモリに積重ねて(5tack)または分岐実行ユニットに対して別の記憶場所 に記憶される。さらに、サブルーチン呼出しの実行は手順レベルカウンタをイン クリメントする。
サブルーチン分岐からの復帰はまた無条件分岐である。しかし、命令内に目標ア ドレスを包含するのでなく、このタイプの分岐は、先に記憶された復帰アドレス を記憶装置から読み取り、手順レベルカウンタをデクリメントし、そして次命令 取出しレジスタに復帰アドレスをロードする0本開示の残りの部分では、条件分 岐の評価および実行を論述する。開示の技術はまた無条件分岐にも適用されるこ とに注意されたい、なぜならこれらは本質的に、条件が常に満足されている条件 分岐であるからである。さらに、同様の技術もまたサブルーチン呼出しおよび復 帰分岐に適用され、これは上に開示の追加の種々の機能を遂行する。
条件分岐を速くするため、条件分岐が取られるか否かの決定は、条件コードの適 当な組の分析にのみ依存する9本発明の教示により、条件コードを適当に処理す ること以外、なんらのデータの評価も行なわれない、さらに、分岐が使用する条 件コードを生成する命令が、コードをBEU1548ならびに条件コード記憶装 置へ伝達できる。これは、BEUがそれを取出すことができる前に、コードが条 件コード記憶装置で有効となるのに必要とされる従来の余分の待ち時間を除去す る。
本発明はまた、プログラム正確さを保証するため、遅延分岐動作(branch ing)の広範な使用をも行なう6分岐が実行されそしてその効果がシステムを 伝達しているとき、分岐の手順領域内にあるすべての命令は、表6の例に関連し て論述されたように、実行されているかまたは実行されつつあるプロセスにある はずである。別言すると、(分岐に応答して)次命令ポインタを変化させること は、分岐の最後の(一時的に実行される)命令に続く放出時間を指すために、現 在の放出時間が更新された後で、起こる。それゆえ、表6の例では、放出時間T 17の命令I5が、この基本ブロック対する最後の放出時間であるT18の完了 まで、遅延される0次基本ブロックに対する命令時間はそれで719である。
BEU154Bの機能は、4状態式状態マシンとして説明できる。
段階1: 命令デコード 一動作デコード 一遅延フィールドデコード 一条件コードアクセスデコード 段階2: 条件コード取出し/受容 段階3: 分岐動作評価 段階4: 次命令取出し ロケーションおよび放出時間更新 遂行されるべき動作の決定と一緒に、第1段階はまたBEUによる分岐の受取り 後起こる取出し動作(fetch ing)がどのくらいの長さ継続できるかを モしてBEUが条件分岐に対しどのように条件コードにアクセスするか、すなわ ちどのように条件コードが受容または取出されるかをも決定する。
第19図を参照すると、分岐命令は、バス1546を通じて、PIQバスインタ ーフェースユニット1544からBEU1548の命令レジスタ190oへ供給 される。命令レジスタ1900のフィールドは、FETCH/ENABLE ( ゛取出し/イネーブル) 、C0NDITION C0DEADDRESS ( 条件コードアドレス) 、OP C0DE (操作コード) 、 DELAY  FIELD (遅延フィールド)およびTARGETADDRESS (目標ア ドレス)のように指示される。命令レジスタ1900は、線路1910a−bを 通じて条件コードアクセスユニット1920へ、線路1910cを通じて評価ユ ニット1930へ、線路1910dを通じて遅延ユニット1940へそして線路 1910eを通じて次命令インターフェース1950へ接続される。
ひとたび、命令がPIQバスインターフェースユニット1544からBEU15 48へ発行されると、命令取出し動作は、遅延フィールドの値が決定されるまで 、停止(ホールドアツプ)されねばならない、この値は、BEUにより分岐の受 取りに関連して測定される。これが段階1である。もし、この分岐と重複可能な 命令がないならば、このフィールド値はゼロである。この場合、命令取出しが、 分岐の結果が決定されるまで、停止される。もしこのフィールドがゼロでないな らば、命令取出しが、このフィールドの値により与えられる多くの放、出時間の 間、継続可能である。
条件コードアクセスユニット1920は、線路155oを通じてレジスタファイ ル−PEネットワーク670へまた線路1922を通じて評価ユニット1930 へ接続される。段階2動作中、条件コードアクセスデコードユニット1920は 、条件コードが命令により取り出されねばならないかどうかをまたは分岐条件を 決定する命令が条件コードを供給するかを決定する0条件分岐を決定する基本ブ ロックあたり唯一つの命令があるので、基本ブロックに対してBELJにより受 容される一つよりも多い条件コードは決してない、その結果、条件コードがいつ 受容されるかの実際のタイミングは重要ではない。もし、それが分岐よりも早く 来るならば、分岐の実行前の前に他のコードが受容されることはない、もし、そ れが遅く来るならば、分岐は待機し、そして受容されるコードは常に適切なもの である。基本ブロックに対し条件コードは、BEUにより同時にまたは異なる時 間に受容される複数のコードを含むことができることに注意されたい。
評価ユニット1930は、線路1932を通じて次命令インターフェース195 0へ接続される0次命令インターフェース195oは、線路1549を通じて命 令キャッシュ制御回路1518へ、そして線路1942を通じて遅延ユニット1 940へ接続される。そして、遅延ユニット1940はまた、線路1549を通 じて命令キャッシュ制御ユニット1518へも接続される。
動作の評価段階中、条件コードは、検査されている条件を表示するプール関数に 応じて、組み合わされる。動作の最終段階では、もし条件分岐が取られないない ならば、逐次(シーケンシャル)命令ストリームの取出しを継続するかまたは、 もし、分岐が取られるならば、次命令ポインタがロードされる。
命令ストリームでの分岐の影響は以下のように説明できる。論述するように、命 令が、レジデント論理プロセッサ番号(LPN)の分析により命令の各PIQ1 730へ送られる0、命令取出しが、分岐に出会うまで、すなわち、命令がBE U1548の命令レジスタ190oへ供給されるまで、継続される。この点で、 遅延分岐のない従来のシステムでは、取出しが、分岐命令の決定が完了するまで 停止されよう0例えば、ジェイエフ ケー リ−(J、F、に、 LEE)およ びエイ ジェイ スミス(A、J、 Sm1th )による IEEE Com puterMagazine (1984年1月)の” BranchPred iction Strategies and Branch、TargetB uffer Design”を参照されたい、遅延分岐動作を包含する本システ ムでは、命令が、取出される次命令が実行されるべき基本ブロックの最後の命令 であるまで、取出されるべくm続しなければならない0分岐が実行される時間は それで、命令の取出し動作が次命令アドレスを変更する可能性なしに起こる最後 の時間である。こうして、分岐が取り出されるときと分岐の影響が実際に感知さ れるときとの間の差は、取出し動作が継続できる追加の放出時間サイクルの数に 対応する。
この遅延の影響は、BEU1548が、キャッシュコントローラ1518の次命 令放出時間レジスタにアクセスしなければならないことである。さらに、BEU 1548は、命令キャッシュ制御ユニット1518により遂行される命令取出し プロセスの開始または不能化(disabling)を制御できる。これらのタ スクは、バス1549を通じる信号により達成される。
動作では、分岐実行ユニット(BEU)1548は次のように機能する。
例えば上の例での命令I5などの分岐命令は、PIQバスインターフェースユニ ット1544から命令レジスタ1900ヘロードされる。命令レジスタの内容は それでBEU1548の以後の動作を制御する。 FETCH−ENABLEフ ィールドは、条件コードアクセスユニット1920は、CC−ADXフィールド に記憶されるアドレスに配置される条件コードを検索すべきか否か(呼出しFE TCH)または条件コードが生成命令により供給されるかどうかを指示する。
もし、FETCHが要求されるならば、ユニット1920は、第20図に図示さ れる条件コード記憶装置2000へアクセスするため、レジスタファイル−PE ネットワーク670ヘアクセスする(第6図参照)、第20図を参照すると、各 コンチクストファイルに対し条件コード記憶装置2000が、−膜化された場合 にて図示されている。−組のレジスタCCoが、手順レベルyに対し条件コード を記憶するため提供される。それゆえ、条件コード記憶装置2000は、FET CH要求に応じて、必要な条件コードを検索するために、ユニット1920によ りアクセスされそしてアドレスされる。実条件コードおよび条件コードがユニッ ト1920により受容されることの指示は、線路1922を通じて評価ユニット 1930へ供給される。評価ユニット1930へ供給される0PCODEフイー ルドは、受容される条件コードと共に、分岐取り信号を線路1932を通じて次 命令インターフエ−ス1950へ供給するよう機能する。評価ユニット1930 は、例えばカリフォルニア95035のミルビタス(Milpitas)のマク カージ−プルバード(McCarthyBIvd、)1551のLSI Log ic Corporationからの標準のゲートアレイなどから構成される。
評価ユニット1930は、条件分岐が取られるか否かを決定する条件コードセッ トを受け取り、そして0PCODEフイールドの制御のもとで、条件分岐取り信 号を生成するため、プール関数で条件コードセットを組み合わせる。
次命令インターフェース1950は、命令レジスタ19oOのTARGET−A DXフィールドから分岐目標アドレスをそして線路1932を通じて分岐取り信 号を受け取る。しかし、インターフェース1950は、イネーブル信号が線路1 942を通じて遅延ユニット1940から受け取られるまで、動作できない。
遅延ユニット1940は、命令取出し動作が、BEUによる分岐命令の受取りの 後、継続できる時間の量をを決定する。先に、分岐命令がBEUにより受け取ら れるとき、命令取出し動作が、−よりも多いサイクルの間継続しその後停止する ことを説明した。このサイクル中取り出される命令は、遅延フィールドの長さが 決定されるまで、PIQバスインターフェースユニット1544の通過を阻止さ れる。たとえば、もし遅延フィールドがゼロである(分岐が即座に実行されるこ とを意味する)ならば、これらの命令は、それらが取り出されるべき正しい命令 であるかどうかが決定されるまで、PIQバスバッファユニットへは依然として 与えてはならない、もし、遅延フィールドがゼロでないならば、遅延値がゼロで あるべく決定されたらすぐにPIQバッファユニットへゲートされるであろう、 遅延の長さは、命令レジスタ1900のDELAYフィールドから得られる。遅 延ユニットは、レジスタ1900から遅延長さをそして線路1549を通じてフ ンチクスト制御1518からクロックインパルスを受容する。遅延ユニット19 4oは、各クロックパルスで遅延の値をデクリメントしそして完全にデクリメン トされるとき、インターフェースユニット1950はイネーブルとなる。
それゆえ、表6の論述では、命令工5が放出時間T17を割り当てられるが、放 出時間718まで遅延される。遅延時間中、インターフェース1950は、命令 の取り出しを継続して現在の基本ブロックを終了するため、線路1549を通じ て命令キャッシュ制御1518に合図する。イネーブルされるとき、インターフ ェースユニット1950は、次基本ブロックに対し、次アドレス(すなわち分岐 実行アドレス)を、線路1549を通じて命令キャッシュ制御1518へ供給す る。
要約するとそして表16の例に対し、分岐命令I5は時間T17中命令レジスタ 1900ヘロードされる。しかし、最後の命令I3が時間T18中に処理される まで分岐命令は実行できない場合、一つの放出時間の遅延(DELAY)もまた 命令レジスタ1900ヘロードされる。
それゆえ、たとえ命令I5がレジスタ1900にロードされても、TARGET  ADDRESSに包含される次基本ブロックに対し分岐アドレスは時間T18 の完了までは有効とはならない0話が変わって次命令インターフェース1950 は、基本ブロックで命令のストリームの処理を継続するためキャッシュ制御15 18へ命令を発行する。遅延の終結により、インターフェース1950はイネー ブルされ、そして次基本ブロックのアドレスを命令キャッシュ制御1518へ供 給することにより、分岐は実行される。
遅延フィールドは、単一サイクルコンチクストフリーPEでのこの分岐により支 配される基本ブロックのすべての命令の実行を保証するのに使用されることに注 意されたい、PEがバイブライン構成されるとき、小さな複雑さに遭遇する。こ の場合、ちょうど実行されている基本ブロックからの命令と実行されるべき基本 ブロックからの命令との間に、データ依存性がある。TOLLソフトウェアは、 次基本ブロックがこの基本ブロックからの分岐によってだけ目標とされるとき、 これらの依存性を分析できる。もし、次基本ブロックが−よりも多い分岐により 目標とされるならば、TOLLソフトウェアは、種々の分岐可能性を分解できず そしてバイブラインに放出させるので、なんらデータ依存性は破られない、パイ ブラインが放出するのを許容するための一つの機構が、No−OP(no op eration、ノーオペレーション)命令を命令ストリームへ挿入することで ある0代替え方法では、エクストラフィールドを分岐命令に用意し、この命令で 、エクストラフィールドのデータにより決定される時間の間プロセッサエレメン トへの新命令の供給を禁止する。
C,プロセッサエレメント(PE) マトリックスマルチブライ例に関する論述では、単一サイクル(シングルサイク ル)プロセッサエレメントを仮定した。別言すると、命令がプロセッサエレメン トへ発行され、そしてプロセッサエレメントは、次命令へ進行するまえに、命令 を完全に実行する。しかし、より大きな性能が、バイブライン構成されるプロセ ッサエレメントを採用することにより得られる。それにより、T。
LLソフトウェアにより遂行されるタスクはわずかに変化する。特に、プロセッ サエレメントの割当ては、先の例で示されるものよりも複雑であり、バイブライ ンプロセッサを特長付けるハザード(偶発的事象)は、TOLLソフトウェアに より取り扱われねばならない。
バイブライン構成されるいずれのプロセッサにも存在する。ハザードは、より高 度に複雑な一組のデータ依存性としてそれらハザード自体が現れる。これは、従 来技術に精通したものにより、TOLLソフトウェアに符合化できる0例えば、 スタッフォード大学のティーケーアールグロス(T、に、 R,Gross ) による学位論文” CodeOptimization of Pipelin e Con5traints −(1983)を参照されたい。
プロセッサの割当ては、バイブラインの実施に依存しそしてここで再び従来技術 に精通したものにより遂行できる。キーバラメータが、バイブライン間でいかに データが交換されるかを決定する。たとえば、各パイプラインが、そのステージ 間でフィードバックバスな包含すると仮定する。さらに、パイプラインは、レジ スタセット660を通じてのみ結果を交換できると仮定する。複数の命令が、命 令ストリームに包含される数組の依存命令を決めそして次に各特定の集まりを特 定のパイプラインに割当てることにより、パイプラインへ割り当てられる。これ は、(レジスタセットを経由して)バイブライン間で起こらねばならない通信の 量をできるだけ最小なものとし、それゆえ、プログラムの実行時間を速くする。
論理プロセッサ番号の使用は、命令が同様のパイプラインで実行するのを保証す る。
代替え的に、もしバイブライン間でデータを交換するのに利用できるバスがある ならば、依存性の命令が、単一のパイプラインへ割り当てられるかわりに、いく つかのバイブラインプロセッサに分配可能である。再び、多重バイブラインの使 用および中間結果の共有を許容するバイブライン間の相互接続ネットワークは、 命令ストリームに課されるより高度に複雑な一組のデータ依存性としてそれ自身 が現れる。バイブライン構成されるシステムへの本発明の考えの拡張は、当技術 に精通するものの技術の範囲内にあることは明らかである。
重要なことには、追加のデータ(チェイニング)バスは、本発明のプロセッサエ レメントの基本のコンチクストフリー性を変化しない、すなわち、いずれの所与 の時間(たとえば、いずれの所与の命令サイクルの完了)でも、所与のプログラ ム(すなわち、コンチクスト)に関連の全プロセス状態は、プロセッサエレメン トの完全に外側で捕捉される。データチェイニングは、特定の命令クロックサイ クル中、プロセッサエレメント内に発生されるデータのあるものの一時的反復を 生ずるだけである。
第21図を参照すると、特定のプロセッサエレメント640が、4状態式バイブ ラインプロセッサエレメントを有する0例示の実施例に応じてすべてのプロセッ サエレメント640は同様である。例えば、マイクロプロセッサまたは別のバイ ブラインアーキテクチャ−など従来のいずれのタイプのプロセッサエレメントも 本発明の教示のもとで、使用できないことが深く理解されるべきである。なぜな ら、この種のプロセッサは、それらのプロセッサが処理しているプログラムの実 質的な状態情報を保持するからである。しかし、この種のプロセッサは、本発明 に必要なタイプのプロセッサをエミュレートまたはシミュレートするよう、ソフ トウェアでプログラムできる。プロセッサエレメントの設計は、TOLLソフト ウェアにより生成される命令セットアーキテクチャにより決定され、それゆえ、 概念的観点から、本発明の実施に最も依存性の部分である。第21図に図示され る例示の実施例では、各プロセッサエレメントバイブラインが、システムの別の プロセッサエレメントから自律的に動作する。各プロセッサエレメントは同種の ものであり、そして単独で、すべての計算およびデータメモリアクセシング命令 を実行できる。計算の実行を行なう場合では、転送がレジスタからレジスタであ りそしてメモリインターフェース命令に対しては、転送はメモリからレジスタへ またはレジスタからメモリである。
第21図を参照すると、例示の実施例のプロセッサエレメント640に対する4 状態パイプラインは、4つの別々の、命令レジスタ2100.2110.212 0および2130を含む、各プロセッサエレメントはまた、4つの段階(段階1 .2140と段階2.215oと段階3.216oと段階4.2160)をも含 む、第1命令レジスタ2100はネットワークを通じてPIQプロセッサ割当て 回路1570へ接続されそしてその情報をバス2102を通じて受容する1、命 令レジスタ2100は次に、命令デコードおよびレジスタO取出しおよびレジス タ1取出しのハードウェア機能を含む段階lの動作を制御する。第1段階214 oは、線路2104を通じて命令レジスタへそして線路2142を通じて別の命 令レジスタ2110へ相互接続される。第1段階2140はまた、バス2144 を通じて第2段階2150へも接続される0段階1のレジスタ0の取出しおよび レジスタ1の取出しは、レジスタファイル660へのアクセスのため、それぞれ 、線路2146および線路2148を通じて、ネットワーク670へ接続される 。
第2命令レジスタ2110はさらに、線路2112を通じて第3命令レジスタ2 120へそして線路2114を通じて第2段階2150へ相互接続される。第2 段階2150はまた、バス2152を通じて第3段階2160へも接続されそし て、線路2156を通じネットワーク670を通じてコンチクストファイル66 0の条件コード記憶装置へ接続される条件コード(CC)ハードウェアおよびレ ジスタファイル660へのアクセスのため、線路2154を通じてネットワーク 670へ相互接続されるメモリ書き込み(MEM IIIRITE)レジスタ取 出しハードウェアを有する。
第3命令レジスタ2120は、線路2122を通じて第4命令レジスタ2130 へ相互接続されさらに線路2124を通じて第3段階2160へも接続される。
第3段階2160は、バス2162を通じて第4段階2170へ接続されさらに 線路2164を介しネットワーク650を通じてデータキャッシュ相互接続ネッ トワーク1590へ相互接続される。
最後に、第4命令レジスタ2130は、線路2132を通じて第4段階へ相互接 続されそして第4段階は線路2172を通じて接続されるその記憶ハードウェア (5TORE)出力およびレジスタファイル660へのアクセスのため、線路2 174を通じてネットワーク670へ接続されるその有効アドレス更新(EFF 、ADD、)ハードウェア回路を有する。さらに、第4段階は、線路2176を 介しネットワーク670を通じてコンチクストファイル660の条件コード記憶 装置へ接続されるその条件コード記憶(CC5TORE)ハードウェアを有する 。
第21図に図示される4段階バイブラインの動作は、表1の例および各命令に対 するプロセッサエレメントの動作を説明する表19に包含される情報について論 述する。
表19 命令IO,(IF、) 段階1− Fetch Reg to form Mem−adx段階2− F orm Mem−adx 段階3− Perform Memory Read段階4−5tore RO ,(R1) 命令I2 段階1− Fetch Reg ROand R1段階2− No−0p 段階3− Perform multiply段階4−5tore R2and  CG命令■3 段階1− Fetch Reg R2and R3段階2− No−0p 段階3− Perform addition段階4−5tore R3and  CG命令工4 段階1− Fetch Reg R4 段階2− No−0p 段階3− Perform decrement段階4−5tore R4an d CC命令工0および11に対し、第21図のプロセッサエレメント640に よる動作は、段階4のもの以外同様である。第1段階は、レジスタファイルにア ドレスを包含するレジスタからメモリアドレスを取り出すことである、それゆえ 、段階lは、回路系2140を線路2146を介しネットワーク670を通じて そのレジスタへ相互接続しそして段階1のインターフェースからレジスタ0へそ れをダウンロードする0次に、アドレスは、バス2144を通じて段階2へ供給 されそしてメモリ書き込みハードウェアは、メモリアドレスを形成する。メモリ アドレスは次に、2164を介しネットワーク650を通じデータキャッシュ相 互接続ネットワーク159oにメモリを読む第3段階へバス2152を通じ供給 される。
読み動作の結果は、レジスタROで記憶のため、次に記憶されそして段階4へ供 給される0段階4は線路2172を介しネットワーク670を通じてデータをレ ジスタファイルのレジスタROへ供給する。同様の動作が、結果がレジスタlに 記憶されること以外、命令工1に対し起こる。それゆえ、バイブラインの4段階 (取り出し、メモリアドレス形成、メモリ読み取り、結果の記憶)は、論述され る仕方で、バイブを通じデータを流し、そして命令IOが段階1を通過したとき 、命令11の第1段階は開始する。この重複またはパイブリング(p ipe  l ing)は従来と同様である。
命令工2が、レジスタファイル660のレジスタROおよびR1に記憶される情 報を取り出し、そしてそれらを段階lのレジスタREGOおよびREGIへ供給 する。内容は、バス2144を介し段階2を通じてノーオペレーションとして供 給されそしてつぎにバス2152を通じて段階3へ供給される。二つのレジスタ の内容と一緒にマルチブライが生じ、結果は、バス2162を通じて段階4へ供 給され、段階4は、次に、線路2172を介しネットワーク670を通じてレジ スタファイル660のレジスタR2へ結果を記憶する。さらに、条件コードデー タは、コンチクストファイル660の条件コード記憶装置に線路2176を通じ て記憶される。
命令I3が、同様の仕方で、段階4で結果をレジスタR3に記憶しそしてその命 令に対し条件コードデータを更新するため、レジスタR2およびR3でのデータ の追加を行なう、最後に、命令I4が、レジスタR4の内容のデクリメントを遂 行する。
それゆえ、表1の例に応じて、PEOに対する命令は、次の順序(IO,I2お よびI3)でPIQOから供給されよう、これらの命令は、次のように、命令放 出時間(T16.T17およびT18)に基づいて、PEOパイプライン段階を 通じて送られよう。
表20 PE In5t T16 T17 T18 T19 T20 T21PEO:  IOSI S2 S3 5412 SI S2 S3 54 I3 SI S2 S3 54 PEI It SI S2 S3 54PE2 I4 SI S2 S3 S4 表20に例示の計画は、しかし、データチェイニングがバイブラインプロセッサ (自プロセラサ内データチェイニング)内ならびにバイブラインプロセッサ(内 部プロセッサデータチェイニング)間に導入されなければ可能でない、データチ ェイニングに対する要求は、命令が、例えば命令放出時間716により例示され る単一時間サイクル内でもはや完全に実行しないから、生ずる。
こうして、バイブラインプロセッサに対し、TOLLソフトウェアは、命令10 および11の段階4(T19)で生ずる記憶の結果が命令工2の段階3(T19 )で掛け(マルチプライ)を遂行するのに必要とされないこと、および、これら の才へランドの取り出し動作が命令I2の段階1(T17)で通常起こることを 認めなければならない、それゆえ、バイブラインの通常の動作では、プロセッサ PEOおよびPEIに対し、レジスタROおよびR1からのオペランドデータは 、放出時間T18の終りまで利用できないがそれは、時間T17で命令工2の段 階lにより必要とされる。
表20に例示の計画に応じて動作するために、プロセッサの内部およびプロセッ サ間の両方にある追加のデータ(チェイニング)パスがプロセッサに利用可能と されなければならない、当業者にはよく知られているこれらのパスはデータチェ イニングパスである。これらのパスは、第21図で、破線218oおよび218 2として表示されている。したがって、それゆえ、命令間のデータ依存性の分解 およびプログラム実行前のTOLLソフトウェアにより遂行されるプロセッサ資 源のすべてのスケジューリングは、データを、たとえば同じプロセッサの一段階 または異なるプロセッサの段階などの出力から直接利用可能にするのが必要とさ れるとき、データチェイニングの利用性を考慮する。このデータチェイニング能 力は当業者にはよく知られており、そして、バイブラインプロセッサの各段階を 、事実上程々の資源要求と、命令が成るパイプラインを通じて開始されるとき好 ましくはそのプロセッシング段階のすべてを通じその同じパイプラインで継続す るというある種の依存性とをもつ分離プロセッサであると認めることにより、T OLLソフトウェア分析で容易に実施できる。これを考慮に入れると、プロセッ シングでの高速化が、基本ブロックに対し三つのマシンサイクル時間がただ六つ だけのバイブラインサイクルの時間で完了される表20で観察できる。パイプラ インに対しサイクルタイムは、本発明の例示の実施例の非バイブラインプロセッ サに対し約174サイクルタイムであることを心に留めておくべきである。
第21図のパイプラインは4つの等しい(時間)長さ段階から構成される。第1 段階2140は命令デコードを遂行し、レジスタが何を取り出しおよび記憶する かを決定し、そして、命令の実行に対し必要とされる二つのソースレジスタ取り 出しまで遂行する。
第2段階2150は、もし必要とされるならば、条件コード取出しのため計算命 令により使用される。それはまた、メモリインターフェース命令に対し有効アド レス生成段階でもある。
本発明の好ましい実施例でサポートされる有効アドレス動作は、 1、絶対アドレス フルメモリアドレスは命令に包含される。
2、レジスタインダイレクト フルメモリアドレスはレジスタに包含される。
3、レジスタ割出しおよび基本設定 フルメモリアドレスは、指定レジスタおよびイミディエイトデータを組み合わせ ることにより形成される。
a、Rn op K b、Rn op Rm c、Rn op K op Rm d、Rn op Rm op K ここで、’op”は加算(+)、減算(−)または乗算(ネ)および“K”は定 数である。
例として、マトリックスマルチフライ内部ループ例で提供されるアドレッシング 構成は、“K”が配列内のデータエレメントの長さでありそして操作は加算(+ )であるケース3aから形成される。
概念的レベルで、メモリアクセス命令の有効アドレッシング部分は、 計算に必要なイミディエイトデータおよびレジスタの指定および獲得、 所望されるアドレスを形成するため、これらのオペランドの組合せ、および もし必要ならば、含まれる複数レジスタのいずれか任意のものの更新 の3つの基本機能から構成される。この機能性は、従来と同様であり、DECプ ロセッサアーキテクチャで利用できるアドレッシングのオートインクリメントお よびオートデクリメントモードにより示される0例えば、DEXVAX Arc itecture Handbookを参照されたい。
必要とされる明らかなハードウェアサポートに加えて、有効アドレッシングはT OLLソフトウェアによりサポートされ、そしてメモリアクセス動作命令へ機能 性を付加することによりTOLLソフトウェアに影響を与える。別言すると、有 効アドレスメモリアクセスが、第1の有効アドレス計算と第2の実メモリアクセ スとの二つの動作の連結として解釈可能である。この機能性は、加算、減算また は乗算命令がそうであろうとほとんど同様の仕方で、当業者によりTOLLソフ トウェアに容易に符合化できる。
叙述の有効アドレッシング構成は、メモリアクセス動作システムの単に可能な一 つの実施例にすぎないものと解釈されるべきである。当業者に知られている、メ モリアドレスを生成するための別のたくさんの方法およびモードがある。別言す ると、上に叙述の有効アドレッシング構成は、設計の完全性のためのものであり そしてシステムの設計でのキー要素と考えられるべきものではない。
第22図を参照すると、第21図のパイプラインプロセッサエレメントでの種々 のデータまたはデータフィールドの構成が、時間および空間の両方でマルチユー ザ型のシステムであるシステムに対し例示されている。結果として、複数のバイ ブラインを横切って種々のユーザからの複数の命令が、おのおのそれ自身のプロ セッサ状態をもって、実行可能である。プロセッサ状態は通常はプロセッサエレ メントと関連されないので、命令は、この状態を特定する識別子を従えて伝達し なければならない、このプロセッサ状態は、ユーザに割当てられるLRDとレジ スタファイルと条件コードファイルとによりサポートされる。
各メモリアクセスまたは条件コードアクセスまたはレジスタアクセスがアクセス の目標を唯一識別できるよう、十分な量の情報が各命令に関連されねばならない 。
レジスタおよび条件コードの場合では、この追加の情報は、手順レベル(PL) の絶対値とコンチクスト識別子(CI)とを構成し、そしてSC5M付加ユニッ ト1650により命令に付加される。これは、それぞれ第22aおよび22bお よび22c図により例示される。
コンチクスト・識別子部分は、どのレジスタまたは条件コードプレイン(第6図 )がアクセスされているかを決定するのに使用される0手順レベルは、どのレジ スタの手順レベル(第13図)がアクセスされるべきかを決定するのに使用され る。
メモリアクセスもまた、適当なデータキャッシュがアクセスできるよう、現在の 使用者をサポートするLRDが識別されることを必要とする。これは、コンチク スト識別子を通じて達成される。データキャッシュアクセスはさらに、キャッシ ュにあるデータが実際所望されるデータであることを確認するため、プロセス識 別子(P I D)が現在使用者に対し利用可能であることを必要とする。こう して、データキャッシュに発行されるアドレスが、第22図dの形をとる。寄せ 集めフィールドは、例えば、読取りまたは書込み、使用者またはシステムなどア クセスを記述する追加の情報から構成される。
最後に、単一時間間隔の間、パイプラインを横切って実行する数人の使用者がい るのが可能であるという事実により、命令の実行を制御しそして通常はバイブラ インに記憶されるであろう情報が、かわりに各命令に関連されねばならない、こ の 情報は、第22a図に図示されるように、命令ワードのISWフィールドで 反映される。このフィールドの情報は、エラーマスク、浮動少数点フォーマット ディスクリブタ−1丸めモードディスクリブタ−などのような制御フィールドか ら構成される。
各命令がこのフィールドに付加されるが、明らかに、すべての情報を必要としな くともよい、この情報は、プロセッサエレメントのALU段階2160により使 用される。
ISWフィールドに関連するこの命令情報ならびに手順レベル、コンチクスト識 別およびプロセス識別子は、命令が命令キャッシュから発行される場合に、SC 5M付加装置(1650)により動的に付加される。
本発明のシステムは上に開示のとおり説明されるけれども、以下に続く請求の範 囲の技術思想の範囲内で種々の変更および修正が可能であることは明らかであろ う。
、2ンノ\)うj;Jろ Fig、3 Ft’g、 d マスクーE Fig、 13 Fig、 /4 Fig、/9 fig、 20 Ft’g、 22σ 国際調査報告 1MllnnmlionalADDlle@116MN6.1’CT/US86 102333PCT10586102333 b=囚」世上!工と胚当り乙側β互A/210エヱ胡1ΣLX、C1airns  1−17゜ 21.22,26,34−39.58−68,73,74,76.79,81  drawn to anarchitectural 5tructural  of parallel processor system;class 3 64 5ubclass 200゜X工、Claims 18−20.23−2 5,27−33,40−57,75,77.78゜drawn to a ma ヒhod and 5tructure for adding inセell igenceto each 1nstrucセion in each ba si: block of the program;class 364 5 ubclass 300 or 200゜エエX、Claims 69,70, 80 drawn to a system foraccessing da ta beセwean 5ubrouセine 1evels in prog ram;class 364 5ubclass 200゜工V、Claims  71 and 72 drawn to a system forexec uting branches in single entry−singl e exit basicblocks cor+I−ained withi n a program; class 3645ubclass200゜ PCT/US86102333 N工匹匹焦工二匹二四匹り匹二αタVハ且ユy但−ヱL二しTe1ephone  approval:Reasons for holding 1ack o f unity of 1nvention=The 1nvention a s defined by Group X (claimsl−17,21, 22,26,34−39,58−68,73,74,76,79,81)isd rawn to an architectural 5tructural  of parallelprocessor system which is  classified in class 364゜5ubclass 20 0 and which is distincしt−0tha Lnvenセ 1ondefined by Groupエエ (clains 1B−20, 23−25,27−33,40−57゜75.77.78)which is  drawn to a method and 5tructure fora dding intelligence to each 1nstructi on in each basicblock of the program s and is classified in class 364゜5ub lcass 300 or 200゜Time Lim1t for Fili n a Proセest

Claims (1)

  1. 【特許請求の範囲】 1.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベル 命令の複数のストリームであって、各ストリームが複数の単一エントリー単一エ グジット(SESE)基本ブロック(BB)を有するストリーム内の自然の同時 的発生を処理するための並列プロセッサシステムにおいて、 前記各プログラムごとに前記複数の基本ブロックのそれぞれにおける各命令にイ ンテリジェンスをスタティックに加えるための手段(160)であって、少なく とも該加えられたインテリジェンスが論理的プロセッサ番号(LPN)および命 令放出時間(IFT)を有するインテリジェンス付加手段(160)と、 複数のコンテクストファイル(660)であって、各コンテクストファイルが前 記複数のプログラムの1つを処理するために前記プログラムの1つに割り当てら れ、かつ各コンテクストファイルが少なくとも処理状態情報を含むための条件コ ード記憶装置および複数のレジスタを有する複数のコンテクストファイル(66 0)と、複数の論理資源ドライバ(LRD)であって、各論理資源ドライバが前 記複数のコンテクストファイルの1つに割り当てられ、かつ各論理資源ドライバ が前記インテリジェンス付加手段からの前記割り当てられたプログラムのプログ ラム命令ストリームに対応する前記基本ブロックを受け入れ、各論理資源ドライ バが(a)複数のキュー(1730)と、 (b)前記インテリジェンス付加手段からの前記インテリジェンスを含む前記複 数の基本ブロックについて動作し、前記各基本ブロックの前記命令を前記論理的 プロセッサ番号に基づいて前記複数のキューに送るための手段であって、前記各 キューの前記命令は最も早い命令放出時間が初めに挿入される前記命令放出時間 に従って挿入されるようになっている手段 とを含む複数の論理資源ドライバ(LRD)と、複数の個々のプロセッサ要素( PE)であって、各プロセッサ要素がいかなるコンテクスト情報も有さない複数 の個々のプロセッサ要素(PE)と、前記複数のプロセッサ要素を前記複数の論 理資源ドライバに接続し、前記キュー中の最も早い、すなわち、第1の命令放出 時間を持つ前記命令を前記各論理資源ドライバから、あらかじめ定められた順序 で、個々に割り当てられたプロセッサ要素に転送し、前記各プロセッサ要素が前 記転送された命令を処理することができるようにするための手段(650)と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、各プロセッサ要素が前記プログラムの命令の処理中にプログラムのコ ンテクストファイルの複数のレジスタおよび条件コード記憶装置の任意のものに アクセスできるようにするための第1の手段(670)と、 複数のメモリロケーション(610)と、前記論理資源ドライバを含み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記各命令の処理中に前記メモリロケーションにアク セスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 2.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベル 命令の複数のストリームであって、各ストリームが複数の単一エントリー単一エ グジット(SESE)基本ブロック(BB)を有するストリーム内の自然の同時 的発生を処理するための並列プロセッサシステムにおいて、 前記各プログラムことに前記複数の基本ブロックのそれぞれにおける各命令にイ ンテリジェンスをスタティックに加えるための手段(160)であって、該加え られたインテリジェンスが少なくとも論理的プロセッサ番号(LPN)および命 令放出時間(IFT)を表わすインテリジェンス付加手段(160)と、 複数のコンテクストファイル(660)であって、各コンテクストファイルが前 記複数のプログラムの1つを処理するために前記プログラムの1つに割り当てら れ、かつ各コンテクストファイルが少なくとも処理状態情報を含むための条件コ ード記憶装置および複数のレジスタを有する複数のコンテクストファイル(66 0)と、複数の論理資源ドライバ(LRD)であって、各論理資源ドライバが前 記複数のコンテクストファイルの1つに割り当てられ、かつ各論理資源ドライバ が前記インテリジェンス付加手段からの前記割り当てられたプログラムのプログ ラム命令ストリームに対応する前記基本ブロックを受け入れ、各論理資源ドライ バが(a)複数のキュー(1730)と、 (b)前記インテリジェンス付加手段からの前記インテリジェンスを含む前記複 数の基本ブロックについて動作し、前記各基本ブロックの前記命令を前記論理的 プロセッサ番号に基づいて前記複数のキューに送るための手段であって、前記各 キューの前記命令は最も早い命令放出時間が初めに挿入される前記命令放出時間 に従って挿入されるようになっている手段 とを含む複数の論理資源ドライバ(LRD)と、複数のコンテクストのない個々 のプロセッサ要素(PE)と、 前記複数のプロセッサ要素を前記複数の論理資源ドライバに接続し、前記各論理 資源ドライバからの前記命令を、あらかじめ定められた順序で、個々に割り当て られたプロセッサ要素に転送し、前記各プロセッサ要素が前記転送された命令を 処理することができるようにするための手段(650)と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、各プロセッサ要素が前記プログラムの命令の処理中にプログラムのコ ンテクストファイルの複数のレジスタおよび条件コード記憶装置の任意のものに アクセスできるようにするための第1の手段(670)と、 複数のメモリロケーション(610)と、前記論理資源ドライバを言み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記各命令の処理中に前記メモリロケーションにアク セスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 3.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベル 命令の複数のストリームであって、各ストリームが複数の単一エントリー単一エ グジット(SESE)基本ブロック(BB)を有するストリーム内の自然の同時 的発生を処理するための並列プロセッサシステムにおいて、 前記各プログラムごとに前記複数の基本ブロックのそれぞれにおける各命令にイ ンテリジェンスをスタティックに加えるための手段(160)であって、該加え られたインテリジェンスが少なくとも論理的プロセッサ番号(LPN)および命 令放出時間(IFT)を表わすインテリジェンス付加手段(160)と、 複数のコンテクストファイル(660)であって、各コンテクストファイルが前 記複数のプログラムの1つを処理するために前記プログラムの1つに割り当てら れ、かつ各コンテクストファイルが処理状態情報を含むための条件コード記憶装 置および複数のレジスタを有する複数のコンテクストファイル(660)と、複 数の論理資源ドライバ(LRD)であって、各論理資源ドライバが前記複数のコ ンテクストファイルの1つに割り当てられ、かつ各論理資源ドライバが前記イン テリジェンス付加手段からの前記割り当てられたプログラムのプログラム命令ス トリームに対応する前記基本ブロックを受け入れて、前記命令を記憶し、各基本 ブロックの前記命令を前記命令放出時間の順序で取出し、そして前記命令を、各 命令に対する論理的プロセッサ番号に従って送出するようになっている複数の論 理資源ドライバ(LRD)と、 複数のコンテクストのない個々のプロセッサ要素(PE)と、 前記複数のプロセッサ要素を前記複数の論理資源ドライバに接続し、前記各論理 資源ドライバからの前記命令を、あらかじめ定められた順序で、個々に割り当て られたプロセッサ要素に転送し、前記各プロセッサ要素が前記転送された命令を 処理することができるようにするための手段(650)と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、各プロセッサ要素が前記プログラムの命令の処理中にプログラムのコ ンテクストファイルの複数のレジスタおよび条件コード記憶装置の任意のものに アクセスできるようにするための第1の手段(670)と、 複数のメモリロケーション(610)と、前記論理資源ドライバを含み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記各命令の処理中に前記メモリロケーションにアク セスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 4.前記インテリジェンス付加手段が前記命令にスタティックに共有のコンテク スト・ストレージ・マッピング(S−SCSM)情報を付加することができ、前 記スタティックに付加された共有のコンテクスト・ストレージマッピング情報が 前記各プログラム内に含まれる異なるプログラムレベルを識別するために前記各 命令に対するレベル情報を含み、 前記コンテクストファイルが前記各プログラムレベルごとに異なる一組のレジス タを有し、 前記論理資源ドライバが前記スタティックに付加された情報に応答して前記命令 に共有のコンテクスト・ストレージ・マッピング情報をダイナミックに付加して プログラムのサブルーチンレベルを識別し、前記ダイナミックに付加された共有 のコンテクスト・ストレージ・マッピング情報が前記各組のレジスタに対応し、 前記プロセッサ要素がその命令を、前記ダイナミックに付加された共有のコンテ クスト・ストレージ・マッピング情報によって識別される各組のレジスタを使用 して処理することができる 請求の範囲第1項乃至第3項のいずれかに記載の並列プロセッサシステム。 5.前記論理資源ドライバのそれぞれが前記各命令にダイナミックに共有のコン テクスト・ストレージ・マッピング(D−SCSM)情報を付加し、該ダイナミ ックに付加された共有のコンテクスト・ストレージ・マッピングが前記各論理資 源ドライバ内に含まれるプログラムに割り当てられたコンテクストファイルの識 別子を含み、前記コンテクストファイルのそれぞれが前記論理資源ドライバの1 つに割り当てられ、前記各コンテクストファイルが前記ダイナミックに付加され た共有のコンテクスト・ストレージ・マッピング情報によって識別され、前記プ ロセッサ要素がさらにその命令のそれぞれを前記ダイナミックに付加された共有 のコンテクスト・ストレージ・マッピング情報によって識別されるコンテクスト ファイルにおいて処理することができる請求の範囲第1項乃至第3項のいずれか に記載の並列プロセッサシステム。 6.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベル 命令の複数のストリームであって、各ストリームが複数の単一エントリー単一エ クジット(SESE)基本ブロック(BB)を有するストリーム内の自然の同時 的発生を処理するための並列プロセッサシステムにおいて、 前記複数の基本ブロックのそれぞれにおける各命令にインテリジェンスを加える ための手段(160)であって、該加えられたインテリジェンスが少なくとも論 理的プロセッサ番号(LPN)および命令放出時間(IFT)を表わすインテリ ジェンス付加手段(160)と、複数のコンテクストファイル(660)であっ て、各コンテクストファイルが前記複数のプログラムの1つに割り当てられ、か つ各コンテクストファイルが複数のレジスタ資源を有する複数のコンテクストフ ァイル(660)と、 複数の論理資源ドライバ(LRD)であって、各論理資源ドライバが前記複数の コンテクストファイルの1つに割り当てられ、かつ各論理資源ドライバが前記イ ンテリジェンス付加手段からの前記割り当てられたプログラムの命令ストリーム に対応する前記基本ブロックを受け入れて、前記命令を、各命令に対する論理的 プロセッサ番号に従って各基本ブロックに記憶するようになっている複数の論理 資源ドライバ(LRD)と、複数のコンテクストのない個々のプロセッサ要素( PE)と、 前記複数のプロセッサ要素を前記複数の論理資源ドライバに接続し、前記各論理 資源ドライバからの前記命令を、あらかじめ定められた順序で、個々に割り当て られたプロセッサ要素に転送し、前記各プロセッサ要素が前記転送された命令を 処理することができるようにするための手段(650)と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、各プロセッサ要素が前記プログラムの命令の処理中にプログラムのコ ンテクストファイルの前記複数の資源にアクセスできるようにするための第1の 手段(670)と、複数のメモリロケーション(610)と、前記論理資源ドラ イバを含み、前記プロセッサ要素のそれぞれを前記複数のメモリロケーションの 任意の1つと接続し、前記各プロセッサ要素が前記各命令の処理中に前記メモリ ロケーションにアクセスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 7.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベル 命令の複数のストリームであって、各ストリームが複数の単一エントリー単一エ クジット(SESE)基本ブロック(BB)を有するストリーム内の自然の同時 的発生を処理するための並列プロセッサシステムにおいて、 前記複数の基本ブロックのそれぞれにおける各命令にインテリジェンスを加える ためのインテリジェンス付加手段(160)と、 複数のコンテクストファイル(660)であって、各コンテクストファイルが前 記複数のプログラムの少なくとも1つに割り当てられ、かつ各コンテクストファ イルが複数のレジスタ資源を有する複数のコンテクストファイル(660)と、 複数の論理資源ドライバ(LRD)であって、各論理資源ドライバが前記複数の コンテクストファイルの1つに割り当てられ、かつ各論理資源ドライバが前記イ ンテリジェンス付加手段からの前記少なくとも1つの割り当てられたプログラム のプログラム命令ストリームに対応する前記基本ブロックを受け入れて、前記命 令を各基本ブロックに記憶するようになっている複数の論理資源ドライバ(LR D)と、 複数の個々のプロセッサ要素(PE)と、前記複数のプロセッサ要素を前記複数 の論理資源ドライバに接続し、前記各論理資源ドライバからの前記命令を個々に 割り当てられたプロセッサ要素に転送するための手段(650)と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、各プロセッサ要素が前記プログラムの命令の処理中にプログラムのコ ンテクストファイルの任意の資源にアクセスできるようにするための第1の手段 (670)と、 複数のメモリロケーション(610)と、前記論理資源ドライバを含み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記各命令の処理中に前記メモリロケーションにアク セスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 8.前記インテリジェンス付加手段が前記各命令に、前記各プログラム内に含ま れる異なるプログラムレベルを識別するために前記各命令に対するレベル情報を 含む情報を付加することができ、 前記コンテクストファイルが前記各プログラムレベルごとに異なる一組のレジス タ資源を有し、前記各組の資源が前記付加された情報によって識別され、 前記プロセッサ要素がさらにその命令のそれぞれを前記付加された情報によって 識別される一組のレジスタ資源において処理することができる 請求の範囲第6項または第7項に記載の並列プロセッサシステム。 9.前記論理資源ドライバのそれぞれが前記各命令に情報を付加するための手段 を含み、該付加された情報が前記各論理資源ドライバ内に含まれるプログラムに 割り当てられたコンテクストファイルの識別子を含み、前記コンテクストファイ ルのそれぞれが前記論理資源ドライバの1つに割り当てられ、前記各コンテクス トファイルが前記付加された情報によって識別され、前記プロセッサ要素がさら にその命令のそれぞれを前記付加された情報によって識別されるコンテクストフ ァイルを使用して処理することができる 請求の範囲第6項または第7項に記載の並列プロセッサシステム。 10.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベ ル命令の複数のストリームであって、各ストリームが複数の単一エントリー単一 エグジット(SESE)基本ブロック(BB)を有するストリーム内の自然の同 時的発生を処理するための並列プロセッサシステムにおいて、 前記複数の基本ブロックのそれぞれにおける各命令にインテリジェンスを加える ための手段(160)であって、該加えられたインテリジェンスが前記各プログ ラム内に含まれる異なるプログラムレベルを識別するために前記各命令に対する レベル情報を含むインテリジェンス付加手段(160)と、 複数のコンテクストファイル(660)であって、各コンテクストファイルが前 記複数のプログラムの少なくとも1つに割り当てられ、かつ各コンテクストファ イルが複数のレジスタ資源を有し、前記各プログラムレベルに対して異なる一組 のレジスタ資源があり、該各組の資源が前記付加されたインテリジェンスによっ て識別される複数のコンテクストファイル(660)と、複数の論理資源ドライ バ(LRD)であって、各論理資源ドライバが前記複数のコンテクストファイル の1つに割り当てられ、かつ各論理資源ドライバが前記インテリジェンス付加手 段からの前記少なくとも1つの割り当てられたプログラムのプログラム命令スト リームに対応する前記基本ブロックを受け入れて各基本ブロックの命令を記憶し 、前記各論理資源ドライバがさらに前記各命令に情報を付加することができ、該 付加された情報が前記各論理資源ドライバ内に含まれるプログラムに割り当てら れたコンテクストファイルの識別子を含む複数の論理資源ドライバ(LRD)と 、 複数の個々のプロセッサ要素(PE)と、前記複数のプロセッサ要素を前記複数 の論理資源ドライバに接続し、前記各論理資源ドライバからの前記命令を個々に 割り当てられたプロセッサ要素に転送するための手段(650)と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、前記各プロセッサ要素が、前記プログラムの命令の処理中に、前記付 加された情報によって識別されるプログラムのコンテクストファイルにおいて、 前記付加されたインテリジェンスによって識別される一組の資源にアクセスでき るようにするための第1の手段(670)と、 複数のメモリロケーション(610)と、前記論理資源ドライバを含み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記各命令の処理中に前記メモリロケーションにアク セスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 11.1つのプログラムに含まれる低レベル命令の複数のストリームであって、 各ストリームが複数の単ーエントリー単一エクジット(SESE)基本ブロック (BB)を有するストリーム内の自然の同時的発生を処理するための並列プロセ ッサシステムにおいて、前記複数の基本ブロックのそれぞれにおける各命令にイ ンテリジェンスをスタティックに加えるための手段(160)であって、該加え られたインテリジェンスが少なくとも前記命令に対する論理的プロセッサ番号( LPN)および命令放出時間(IFT)を表わすインテリジェンス付加手段(1 60)と、 前記インテリジェンス付加手段からのプログラム命令ストリームに対応する前記 基本ブロックを受け入れて前記命令を記憶する1つの論理資源ドライバ(LRD )であって、該論理資源ドライバがさらに各基本ブロックの前記命令を前記命令 放出時間の順序で取出し、そして前記命令を、各命令に対する論理的プロセッサ 番号に従って送出することができる論理資源ドライバ(LRD)と、 複数のコンテクストのない個々のプロセッサ要素(PE)と、 前記複数のプロセッサ要素を前記論理資源ドライバに接続し、前記論理資源ドラ イバからの前記命令を個々に割り当てられたプロセッサ要素に転送し、前記各プ ロセッサ要素が前記転送された命令を処理することができるようにするための手 段(650)と、 複数の共有のストレージ資源(660)と、前記プロセッサ要素のそれぞれを前 記複数の資源の任意の1つと接続し、各プロセッサ要素が前記命令の処理中に前 記資源の任意のものにアクセスできるようにするための第1の手段(670)と 、 複数のメモリロケーション(610)と、前記論理資源ドライバを含み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記命令の処理中に前記メモリロケーションにアクセ スできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 12.1つのプログラムに含まれる低レベル命令の複数のストリームであって、 各ストリームが複数の単一エントリー単一エグジット(SESE)基本ブロック (BB)を有するストリーム内の自然の同時的発生を処理するための並列プロセ ッサシステムにおいて、前記複数の基本ブロックのそれぞれにおける各命令にイ ンテリジェンスをスタティックに加えるための手段(160)であって、該加え られたインテリジェンスが少なくとも論理的プロセッサ番号(LPN)および命 令放出時間(IFT)を表わすインテリジェンス付加手段(160)と、 前記インテリジェンス付加手段からのプログラム命令ストリームに対応する前記 基本ブロックを受け入れて前記命令を記憶する1つの論理資源ドライバ(LRD )であって、該論理資源ドライバがさらに各基本ブロックの前記命令を前記命令 放出時間の順序で取出し、そして前記命令を、各命令に対する論理的プロセッサ 番号に従って送出することができる論理資源ドライバ(LRD)と、 複数の個々のプロセッサ要素(PE)と、前記複数のプロセッサ要素を前記論理 資源ドライバに接続し、前記論理資源ドライバからの前記命令を個々に割り当て られたプロセッサ要素に転送し、前記各プロセッサ要素が前記転送された命令を 処理することができるようにするための第1の手段(650)と、複数の共有の ストレージ資源(660)と、前記プロセッサ要素のそれぞれを前記複数の共有 のストレージ資源の任意の1つと接続し、前記各プロセッサ要素が前記命令の処 理中に前記共有のストレージ資源の任意のものにアクセスできるようにするため の第2の手段(670) とを具備することを特徴とする並列プロセッサシステム。 13.1つのプログラムに含まれる低レベル命令の複数のストリームであって、 各ストリームが複数の単一エントリー単一エグジット(SESE)基本ブロック (BB)を有するストリーム内の自然の同時的発生を処理するための並列プロセ ッサシステムにおいて、前記複数の基本ブロックのそれぞれにおける各命令にイ ンテリジェンスをスタティックに加えるためのインテリジェンス付加手段(16 0)と、 前記インテリジェンス付加手段からのプログラム命令ストリームに対応する前記 基本ブロックを受け入れて前記基本ブロックを記憶するための1つの論理資源ド ライバ(LRD)と、 複数の個々のコンテクストのないプロセッサ要素(PE)と、 前記複数のプロセッサ要素を前記論理資源ドライバに接続し、前記論理資源ドラ イバからの前記命令を個々に割り当てられたプロセッサ要素に転送し、前記各プ ロセッサ要素が前記転送された命令を処理することができるようにするための手 段(650)と、 複数の共有のストレージ資源(660)と、前記プロセッサ要素のそれぞれを前 記複数の共有のストレージ資源の任意の1つと接続し、前記各プロセッサ要素が 前記命令の処理中に前記共有のストレージ資源の任意のものにアクセスできるよ うにするための手段(670) とを具備することを特徴とする並列プロセッサシステム。 14.前記インテリジェンス付加手段がさらに、前記各プログラム内に含まれる 異なるプログラムレベルを識別するために前記各命令にプログラムレベル情報を スタティックに付加することができ、 前記共有のストレージ資源が前記各プログラムレベルごとに異なる一組の資源を 有し、 前記各組の資源が前記スタティックに付加されたレベル情報によって識別され、 前記各プロセッサ要素がさらにその命令のそれぞれを前記スタティックに付加さ れたレベル情報によって識別される一組の資源において処理することができる請 求の範囲第11項乃至第13項のいずれかに記載の並列プロセッサシステム。 15.複数の使用者のプログラムに含まれる低レベル命令の複数のストリームで あって、各ストリームが複数の単一エントリー単一エグジット(SESE)基本 ブロック(BB)を有するストリーム内の自然の同時的発生を複数のプロセッサ 要素において並列処理するための方法において、 前記プログラムの各基本ブロックにおける命令内に存在する自然の同時的発生を 表わすインテリジェンスをスタティックに付加する段階であって、各プログラム に対する該インテリジェンス付加段階が、 (a)各基本ブロック内の各命令の資源要求を確認して各基本ブロックにおける 自然の同時的発生を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、(c)条件コード・ストレー ジ(CC)を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセ ッサ要素で実行できるようにする段階、(d)前記複数の基本ブロックのそれぞ れにおける前記命令のそれぞれごとに最も早い可能な命令放出時間(IFT)を 決定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命令に前記命令放出時間を 付加する段階、(f)前記複数の基本ブロックのそれぞれにおける各命令に論理 的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命令に前記論理的プロセッ サ番号を付加する段階、(h)前記プログラムのそれぞれに対しすべての基本ブ ロックが処理されるまで段階(a)乃至(g)を繰返す段階 からなるインテリジェンス付加段階と、前記プログラムに対しスタティックに付 加されたインテリジェンスを有する命令を処理する段階であって、該処理段階が 、 (i)前記命令を論理資源ドライバに送出し、使用者の前記各プログラムを異な る論理資源ドライバに割り当てる段階、 (j)命令放出時間に基づいたあらかじめ定められた順序で前記論理資源ドライ バからの命令を選択する段階、 (k)選択された命令を論理的プロセッサ番号に基づいて論理資源ドライバのキ ューに記憶する段階、(1)各命令に対してダイナミックな共有のコンテクスト ・ストレージ・マッピング(D−SCSM)情報を発生する段階、 (m)各論理資源ドライバのキューをプロセッサ要素(PE)に選択的に接続し 、前記キューを、各キューからの最も早い命令放出時間を有する1つの命令が最 初に所定のプロセッサ要素に送り出されるように、あらかじめ定められた順序で 接続する段階、 (n)前記各接続されたプロセッサ要素の各キューからの前記1つの命令を処理 する段階、 (o)前記ダイナミックな共有のコンテクスト・ストレージ・マッピング情報に よって識別されたコンテクストファイルにおける前記命令により識別された共有 の記憶ロケーションからの前記送り出された命令を処理するための入力データを 得る段階、 (p)前記命令に含まれる前記ダイナミックな情報によって識別された共有の記 憶ロケーションの前記送り出された命令を処理した結果を記憶する段階、(q) すべての前記プログラムに対する前記複数の基本ブロックのそれぞれにおけるす べての命令が処理されるまで、段階(i)乃至(p)を繰返す段階からなる処理 段階 とを含むことを特徴とする並列処理方法。 16.前記スタティックにインテリジェンスを付加する段階が最も早い放出時間 が最初にリストされる前記命令放出時間に基づいて前記基本ブロックのそれぞれ における前記命令を整理し直す段階を含む請求の範囲第15項記載の並列処理方 法。 17.前記スタティックにインテリジェンスを付加する段階がスタティックな共 有のコンテクスト・ストレージマッピンク(S−SCSM)情報を各命令に付加 して前記命令に関連した相対プログラムレベルを識別する段階を含み、前記入力 データを得る段階が前記ダイナミックに付加された情報によって少なくとも一部 分が識別された共有の記憶ロケーションの手順レベルから前記入力データを得る 段階を含む請求の範囲第15項記載の並列処理方法。 18.複数の使用者のプログラムに含まれる低レベル命令の複数のストリームで あって、各ストリームが複数の単一エントリー単一エグジット(SESE)基本 ブロック(BB)を有するストリーム内の自然の同時的発生を複数のプロセッサ 要素において並列処理するための方法において、 前記プログラムの各基本ブロックにおける命令内に存在する自然の同時的発生を 表わすインテリジェンスをスタティックに付加する段階であって、各プログラム に対する該インテリジェンス付加段階が、 (a)各基本ブロック内の各命令の資源要求を確認して各基本ブロックにおける 自然の同時的発生を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、(c)条件コード・ストレー ジ(CC)を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセ ッサ要素で実行できるようにする段階、(d)前記複数の基本ブロックのそれぞ れにおける前記命令のそれぞれごとに最も早い可能な命令放出時間(IFT)を 決定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命令に前記命令放出時間を 付加する段階、(f)前記複数の基本ブロックのそれぞれにおける各命令に論理 的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命令に前記論理的プロセッ サ番号を付加する段階、(h)前記プログラムのそれぞれに対しすべての基本ブ ロックが処理されるまで段階(a)乃至(g)を繰返す段階 からなるインテリジェンス付加段階と、前記プログラムを複数のプロセッサ要素 (PE)で実行するためのスタティックに付加されたインテリジェンスを有する 命令を処理する段階 とを含むことを特徴とする並列処理方法。 19.前記スタティックにインテリジェンスを付加する段階が最も早い放出時間 を有する命令が最初にリストされる前記命令放出時間に基づいて前記基本ブロッ クのそれぞれにおける前記命令を整理し直す段階を含む請求の範囲第18項記載 の並列処理方法。 20.前記スタティックにインテリジェンスを付加する段階がスタティックな共 有のコンテクスト・ストレージマッピング(S−SCSM)情報を各命令に付加 して前記命令のプログラムレベルを識別する段階を含む請求の範囲第18項記載 の並列処理方法。 21.複数のプロセッサ要素および複数の共有の記憶ロケーションを有するシス テムに配置された複数の使用者のプログラムに含まれる低レベル命令の複数のス トリームであって、各ストリームが複数の単一エントリー単一エグジット(SE SE)基本ブロック(BB)を有するストリーム内の自然の同時的発生を複数の プロセッサ要素において並列処理するための方法において、前記プログラムの各 基本ブロックにおける命令にインテリジェンスをスタティックに付加する段階で あって、該付加されたインテリジェンスが各基本ブロック内の自然の同時的発生 を識別し、かつこの付加されたインテリジェンスが少なくとも命令放出時間(I FT)および論理的プロセッサ番号(LPN)を有する段階と、前記プログラム を実行するためのスタティックに付加されたインテリジェンスを有する命令を処 理する段階であって、 (a)前記命令を前記システムに送出して前記各使用者を前記システムの異なる コンテクストファイルに割り当てる段階、 (b)共有の記憶ロケーションを含む前記コンテクストファイルを識別する各命 令に対してダイナミックに共有のコンテクスト・ストレージ・マッピング(D− SCSM)情報を発生する段階、 (c)論理的プロセッサ番号(LPN)に基づいて送り出された命令をシステム に別々に記憶する段階、(d)前記別々に記憶された命令をこれら命令に対する 論理的プロセッサ番号に割り当てられたプロセッサ要素に選択的に接続し、前記 別々に記憶された命令を、これら別々に記憶された命令のそれぞれからの最も早 い命令放出時間を有する1つの命令が所定のプロセッサ要素に送り出されるよう に、あらかじめ定められた順序で送り出す段階、 (e)前記各接続されたプロセッサ要素の各接続された別々に記憶された命令か らの前記1つの命令を処理する段階、 (f)前記共有のコンテクスト・ストレージ・マッピング情報によって少なくと も一部分が識別された共有の記憶ロケーションからの前記接続された命令を処理 するための入力データを得る段階、 (g)前記共有のコンテクスト・ストレージ・マッピング情報によって一部分が 識別された共有の記憶ロケーションの前記接続された命令を処理した結果を記憶 する段階、 (h)すべての前記プログラムに対する前記複数の基本ブロックのそれぞれのす べての命令が処理されるまで、段階(a)乃至(g)を繰返す段階からなる処理 段階 とを含むことを特徴とする並列処理方法。 22.複数のプロセッサ要素および複数の共有の記憶ロケーションを有するシス テムにおいて、1つのプログラムに含まれる低レベル命令の複数のストリームで あって、各ストリームが複数の単一エントリー単一エグジット(S.ESE)基 本ブロック(BB)を有するストリーム内の自然の同時的発生を並列処理するた めの方法において、 各基本ブロックにおける命令内に存在する自然の同時的発生を表わすインテリジ ェンスをスタティックに付加する段階であって、 (a)各基本ブロック内の各命令の資源要求を確認して各基本ブロックにおける 自然の同時的発生を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、(c)条件コード・ストレー ジ(CC)を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセ ッサ要素で実行できるようにする段階、(d)前記複数の基本ブロックのそれぞ れにおける前記命令のそれぞれごとに最も早い可能な命令放出時間(IFT)を 決定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命令に前記命令放出時間を 付加する段階、(f)前記複数の基本ブロックのそれぞれにおける各命令に論理 的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命令に前記論理的プロセッ サ番号を付加する段階、(h)前記プログラムに対しすべての基本ブロックが処 理されるまで段階(a)乃至(g)を繰返す段階からなるインテリジェンス付加 段階と、前記スタティックに付加されたインテリジェンスを有する命令を前記シ ステムにおいて処理する段階であって、 (i)論理的プロセッサ番号に基づいて送り出された命令をシステムに別々に記 憶する段階、(j)前記別々に記憶された命令を論理的プロセッサ番号に割り当 てられたプロセッサ要素(PE)に選択的に接続し、前記別々に記憶された命令 を、最も早い命令放出時間を有する1つの命令が所定のプロセッサ要素に接続さ れるように、あらかじめ定められた順序で送り出す段階、 (k)前記各接続されたプロセッサ要素の別々に記憶された命令のそれぞれから の前記1つの命令を処理する段階、 (1)前記プログラムに対する前記複数の基本ブロックのそれぞれのすべての命 令が処理されるまで、段階(i)乃至(k)を繰返す段階 からなる処理段階 とを含むことを特徴とする並列処理方法。 23.複数のプロセッサ要素を有するシステムにおいて、1つのプログラムに含 まれる低レベル命令の複数のストリームであって、各ストリームが複数の単一エ ントリー単一エグジット(SESE)基本ブロック(BB)を有するストリーム 内の自然の同時的発生を並列処理するための方法において、 各基本ブロックにおける命令内に存在する自然の同時的発生を表わすインテリジ ェンスをスタティックに付加する段階であって、 (a)各基本ブロック内の各命令の資源要求を確認して各基本ブロックにおける 自然の同時的発生を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、(c)条件コード・ストレー ジ(CC)を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセ ッサ要素で実行できるようにする段階、(d)前記複数の基本ブロックのそれぞ れにおける前記命令のそれぞれごとに最も早い可能な命令放出時間(IFT)を 決定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命令に前記命令放出時間( IFT)を付加する段階、(f)前記複数の基本ブロックのそれぞれにおける各 命令に論理的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命令に前記論理的プロセッ サ番号を付加する段階、(h)前記プログラムに対しすべての基本ブロックが処 理されるまで段階(a)乃至(g)を繰返す段階からなるインテリジェンス付加 段階と、前記スタティックに付加されたインテリジェンスを有する命令を複数の プロセッサ要素を使用して処理する段階 とを含むことを特徴とする並列処理方法。 24.前記スタティックにインテリジェンスを付加する段階が最も早い放出時間 を有する命令が最初にリストされる前記命令放出時間に基づいて前記基本ブロッ クのそれぞれにおける前記命令を整理し直す段階を含む請求の範囲第22項また は第23項記載の並列処理方法。 25.前記スタティックにインテリジェンスを付加する段階がプログラムレベル 情報を付加して前記命令のプログラムレベルを識別する段階を含む請求の範囲第 22項または第23項記載の並列処理方法。 26.複数のプロセッサ要素および複数の共有の記憶ロケーションを有するシス テムにおいて、1つのプログラムに含まれる低レベル命令の複数のストリームで あって、各ストリームが複数の単一エントリー単一エグジット(SESE)基本 ブロック(BB)を有するストリーム内の自然の同時的発生を並列処理するため の方法において、 各基本ブロックにおける命令内に存在する自然の同時的発生を表わすインテリジ ェンスをスタティックに付加する段階であって、 (a)前記複数の基本ブロックのそれぞれにおける前記各命令に対する最も早い 可能な命令放出時間(IFT)を決定する段階、 (b)前記複数の基本ブロックのそれぞれにおける各命令に前記命令放出時間を 付加する段階、(c)前記複数の基本ブロックのそれぞれにおける各命令に論理 的プロセッサ番号(LPN)を割り当てる段階、 (d)前記複数の基本ブロックのそれぞれにおける各命令に前記論理的プロセッ サ番号を付加する段階からなるインテリジェンス付加段階と、前記スタティック に付加されたインテリジェンスを有する命令を処理する段階であって、 (e)論理的プロセッサ番号に基づいて送り出された命令をシステムに別々に記 憶する段階、(f)前記別々に記憶された命令を論理的プロセッサ番号に割り当 てられたプロセッサ要素(PE)に選択的に接続し、前記別々に記憶された命令 のそれぞれからの最も早い命令放出時間を有する1つの命令が所定のプロセッサ 要素に接続されるように、前記命令をあらかじめ定められた順序で接続する段階 、 (g)前記各接続されたプロセッサ要素において前記1つの接続された命令を処 理する段階、(h)前記命令によって識別された共有の記憶ロケーションからの 前記接続された命令を処理するための入力データを得る段階、 (i)前記命令によって識別された共有の記憶ロケーションに前記接続された命 令を処理した結果を記憶する段階、 (j)前記プログラムに対する前記複数の基本ブロックのそれぞれにおいてすべ ての命令が処理されるまで、段階(e)乃至(i)を繰返す段階 からなる処理段階 とを含むことを特徴とする並列処理方法。 27.複数の単一エントリー単一エグジット(SESE)基本ブロック(BB) を有し、該基本ブロック(BB)のそれぞれが命令のストリームを有する1つの プログラム内の自然の同時的発生を複数のプロセッサ要素(PE)を使用して並 列処理するための方法において、前記プログラムにおける前記各基本ブロック( BB)の前記命令ストリーム内の自然の同時的発生を決定する段階と、 前記自然の同時的発生の決定に応答して前記各基本ブロックの各命令にインテリ ジェンスを付加する段階であって、該付加されたインテリジェンスが少なくとも 命令放出時間(IFT)および論理的プロセッサ番号(LPN)を含むインテリ ジェンス付加段階と、前記複数のプロセッサ要素において前記付加されたインテ リジェンスを処理する段階であって、前記複数のプロセッサ要素のそれぞれが最 も早い命令放出時間を有する命令であって、最初に送り出された最も早い時間を 有する命令の順序でそのプロセッサに対するすべての命令を受け入れる処理段階 とを含むことを特徴とする並列処理方法。 28.前記インテリジェンス付加段階がスタティックの共有のコンテクスト・ス トレージ・マッピング(S−SCSM)情報を付加する段階を含み、前記処理段 階が前記各命令のスタティックの共有のコンテクスト・ストレージ・マッピング 情報によって識別される共有の資源を要求する各命令を処理する段階を含み、各 プログラムルーチンがそのルーチンの手順レベルで資源にアクセスすることに加 えて他の手順レベルで資源にアクセスすることができるようにした請求の範囲第 27項記載の並列処理方法。 29.前記各基本ブロック内の自然の同時的発生を決定する段階が、 各基本ブロック内の各命令の資源要求を確認する段階、 命令間の論理資源の依存性を識別する段階、条件コード・ストレージ(CC)を 資源の依存命令群に割り当てる段階 とを含む請求の範囲第27項記載の並列処理方法。 30.前記インテリジェンス付加段階が、前記複数の基本ブロックのそれぞれに おける前記命令のそれぞれごとに最も早い可能な命令放出時間を決定する段階、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階、 前記命令放出時間に基づいて前記基本ブロックのそれぞれの前記命令を整理し直 す段階 とを含む請求の範囲第27項記載の並列処理方法。 31.前記インテリジェンス付加段階が、前記複数の基本ブロックのそれぞれに おける前記命令のそれぞれごとに最も早い可能な命令放出時間を決定する段階、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階 とを含む請求の範囲第27項記載の並列処理方法。 32.前記複数の基本ブロックのそれぞれにおける各命令に論理的プロセッサ番 号を割り当てる段階、前記割り当てに応答して前記複数の基本ブロックのそれぞ れにおける各命令に前記論理的プロセッサ番号を付加する段階 をさらに含む請求の範囲第30項または第31項記載の並列処理方法。 33.前記インテリジェンス付加段階に応答して基本ブロックの実行セット(E S)を形成する段階を含み、所定の実行セット内の任意所定の基本ブロックから 他の実行セットの基本ブロックヘのブランチがスタティックに最少にされる請求 の範囲第27項記載の並列処理方法。 34.前記処理段階が 論理的プロセッサ番号に基づいて前記付加されたインテリジェンスを有する命令 を別々に記憶し、該別々に記憶された命令の各群が同じ論理的プロセッサ番号の みを有する段階、 前記別々に記憶された命令を前記プロセッサ要素に選択的に接続する段階、 前記各プロセッサ要素がそれに割り当てられた最も早い第1の命令放出時間を持 つ各命令を受け入れる段階をさらに含む請求の範囲第27項記載の並列処理方法 。 35.前記個々のプロセッサ要素によって受け入れられた前記命令を処理する段 階が 前記命令によって識別された共有の記憶ロケーションからの前記受け入れられた 命令を処理するための入力データを得る段階、 前記命令によって識別された共有の記憶ロケーションに前記受け入れられた命令 を処理した結果を記憶する段階、 すべての命令が処理されるまで、次の命令に対して上述の段階を繰返す段階 を含む請求の範囲第34項記載の並列処理方法。 36.複数のプロセッサ要素(PE)を有し、該プロセッサ要素が複数の共有の 資源ロケーションに位置付けされた入力データにアクセスするシステムにおいて 、複数の単一エントリー単一エグジット(SESE)基本ブロック(BB)を有 し、該各基本ブロック(BB)が命令のストリームを有する1つのプログラム内 の自然の同時的発生を並列処理するための方法において、各基本ブロック内の各 命令の資源要求を確認する段階と、 命令間の論理資源の依存性を識別する段階と、条件コード・ストレージ(CC) を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセッサ要素で 実行できるようにする段階と、 前記複数の基本ブロックのそれぞれにおける前記命令のそれぞれごとに最も早い 可能な命令放出時間(IFT)を決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階と、 前記複数の基本ブロックのそれぞれにおける各命令に論理的プロセッサ番号(L PN)を割り当てる段階と、前記割り当てに応答して前記複数の基本ブロックの それぞれにおける各命令に前記割り当てられた論理的プロセッサ番号(LPN) を付加する段階と、論理的プロセッサ番号に基づいて前記付加された命令放出時 間および前記付加された論理的プロセッサ番号とともに、命令を別々に記憶し、 該別々に記憶された命令の各群が同じ論理的プロセッサ番号のみを有する段階と 、 前記別々に記憶された命令を論理的プロセッサ番号に基づいて前記プロセッサ要 素に選択的に接続する段階と、 前記各プロセッサ要素が最も早い第1の命令放出時間を有する前記接続された群 の命令を受け入れる段階であって、該プロセッサ要素が (a)前記命令によって識別された前記複数の共有の資源ロケーションの共有の 記憶ロケーションからの前記受け入れられた命令を処理するための入力データを 得る段階、 (b)前記受け入れられた命令によって識別された前記複数の共有の資源ロケー ションの共有の記憶ロケーションに前記処理段階に基づいた結果を記憶する段階 、(c)すべての命令が処理されるまで、次に受け入れられる命令に対して上述 の段階(a)および(b)を繰返す段階 を実行することができる受け入れ段階 とを含むことを特徴とする並列処理方法。 37.前記インテリジェンス付加段階に応答して基本ブロックの実行セット(E S)を形成する段階を含み、所定の実行セット内の任意所定の基本ブロックから 他の実行セットの基本ブロックヘのブランチがスタティックに最少にされる請求 の範囲第36項記載の並列処理方法。 38.各命令に共有のコンテクスト・ストレージ・マッピング情報を付加する段 階を含み、前記処理段階が少なくと一組の共有の資源を要求する各命令を処理す る段階を含み、該少なくとも一組が前記共有のコンテクストストレージ・マッピ ング情報によって識別され、各プログラムルーチンがそのルーチンの組の手順レ ベル資源にアクセスすることに加えて少なくとも1つの他の組の資源にアクセス することができるようにした請求の範囲第36項記載の並列処理方法。 39.複数の共有の資源ロケーションに位置付けされた入力データにアクセスす る複数のプロセッサ要素(PE)により、自然の同時的発生を有するかつ複数の 単一エントリー単一エグジット(SESE)基本ブロック(BB)を有し、該各 基本ブロック(BB)が命令のストリームを有する1つのプログラムの命令を並 列処理するための方法において、 各基本ブロック内の各命令の資源要求を確認する段階と、 命令間の論理資源の依存性を識別する段階と、条件コード・ストレージ(CC) を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセッサ要素で 実行できるようにする段階と、 前記複数の基本ブロックのそれぞれにおける前記命令のそれぞれごとに最も早い 可能な命令放出時間(IFT)を決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階と、 前記複数の基本ブロックのそれぞれにおける各命令に論理的プロセッサ番号(L PN)を割り当てる段階と、前記割り当てに応答して前記複数の基本ブロックの それぞれにおける各命令に前記割り当てられた論理的プロセッサ番号(LPN) を付加する段階と、前記命令放出時間および論理的プロセッサ番号を付加する前 記段階に応答して基本ブロックの実行セット(ES)を形成する段階と、 (i)論理的プロセッサ番号に基づいて所定の形成された実行セット内に含まれ る命令を別々に記憶し、該別々に記憶された命令の各群が同じ論理的プロセッサ 番号のみを有する段階と、 (ii)前記別々に記憶された命令を論理的プロセッサ番号に基づいて前記プロ セッサ要素に選択的に接続する段階と、 (iii)前記各プロセッサ要素が最も早い第1の命令放出時間を有する前記接 続された群の命令を受け入れる段階であって、該プロセッサ要素が (a)前記命令によって識別された前記複数の共有の資源ロケーションの共有の 記憶ロケーションからの前記受け入れられた命令を処理するための入力データを 得る段階、 (b)前記命令によって識別された前記複数の共有の資源ロケーションの共有の 記憶ロケーションに前記処理段階に基づいた結果を記憶する段階、 (c)すべての命令が処理されるまで、次に受け入れられる命令に対して上述の 段階(a)および(b)を繰返す段階 実行することができる受け入れ段階と、(iv)処理されるすべての実行セット に対して上述の段階(i)乃至(iii)を繰返す段階とを含むことを特徴とす る並列処理方法。 40.異なる使用者の複数のプログラムであって、該各プログラムが複数の単一 エントリー単一エクジット(SESE)基本ブロック(BB)を有し、該基本ブ ロック(BB)のそれぞれが命令のストリームを有するプログラム内の自然の同 時的発生を複数のプロセッサ要素(PE)によりシステムにおいて並列処理する ための方法において、 前記各プログラムにおける前記各基本ブロック(BB)の前記命令ストリーム内 の自然の同時的発生を決定する段階と、 前記自然の同時的発生の決定に応答して前記各基本ブロックの各命令にインテリ ジェンスを付加する段階であって、該付加されたインテリジェンスが少なくとも 命令放出時間(IFT)および論理的プロセッサ番号(LPN)を表わすインテ リジェンス付加段階と、前記複数のプロセッサ要素において前記プログラムから の前記付加されたインテリジェンスを有する命令を処理する段階であって、前記 複数のプロセッサ要素のそれぞれが最も早い命令放出時間を有する命令で始まる 順序で命令を受け入れ、前記各プロセッサが前記プログラムからの命令をあらか じめ定められた順序で処理することができる処理段階 とを含むことを特徴とする並列処理方法。 41.前記処理段階が各命令にコンテクスト情報をダイナミックに付加する段階 を含み、該ダイナミックに付加された情報が前記各プログラムに割り当てられた 前記システムのコンテクストファイルを識別し、前記各プロセッサ要素が前記付 加されたコンテクスト情報によって識別されたコンテクストファイルのみを使用 して各命令を処理することができる請求の範囲第40項記載の並列プロセッサシ ステム。 42.前記インテリジェンス付加段階がプログラムレベル情報をプログラムレベ ル転送に含まれる各命令に付加する段階を含み、前記処理段階が前記命令のプロ グラムレベル情報によって識別された一組の共有のレジスタと通信して各命令を 処理する段階を含み、プログラムルーチンがそのルーチンの手順レベル組のレジ スタにアクセスすることに加えて他の組の共有のレジスタにアクセスすることが できるようにした請求の範囲第40項記載の並列処理方法。 43.前記各プログラムの各基本ブロック内の自然の同時的発生を決定する段階 が 各話本ブロック内の各命令の資源要求を確認する段階と、 命令間の論理資源の依存性を識別する段階と、条件コード・ストレージ(CC) を資源の依存命令群に割り当て、依存命令が同じまたは異なるプロセッサ要素で 実行できるようにする段階 とを含む請求の範囲第40項記載の並列処理方法。 44.前記各プログラムの各命令にインテリジェンスを付加する前記段階が 前記複数の基本ブロックのそれぞれにおける前記命令のそれぞれごとに最も早い 可能な命令放出時間を決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階と、 前記命令放出時間に基づいて前記基本ブロックのそれぞれの前記命令を整理し直 す段階 とを含む請求の範囲第40項記載の並列処理方法。 45.前記各プログラムの各命令にインテリジェンスを付加する前記段階が 前記複数の基本ブロックのそれぞれにおける前記命令のそれぞれごとに最も早い 可能な命令放出時間を決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階 とを含む請求の範囲第40項記載の並列処理方法。 46.前記複数の基本ブロックのそれぞれにおける各命令に論理的プロセッサ番 号を割り当てる段階、前記割り当てに応答して前記複数の基本ブロックのそれぞ れにおける各命令に前記論理的プロセッサ番号を付加する段階 をさらに含む請求の範囲第44項または第45項記載の並列処理方法。 47.前記インテリジェンス付加段階に応答して基本ブロックの実行セット(E S)を形成する段階を含み、所定の実行セット内の任意所定の基本ブロックから 他の実行セットの基本ブロックへのブランチがスタティックに最少にされる請求 の範囲第40項記載の並列処理方法。 48.前記処理段階が 前記付加されたインテリジェンスを有する命令を複数の組に別々に記憶し、該別 々の各組の記憶が割り当てられた論理的プロセッサ番号に基づいている段階、前 記別々に記憶された命令を前記論理的プロセッサ番号に基づいて前記プロセッサ 要素に選択的に接続する段階、 前記各プロセッサ要素が最も早い第1の命令放出時間を有する命令を受け入れる 段階 をさらに含む請求の範囲第40項記載の並列処理方法。 49.前記個々のプロセッサ要素によって前記組の前記別々に記憶された命令か ら前記命令を受け入れる段階が前記命令によって識別された共有の記憶ロケーシ ョンからの前記受け入れられた命令を処理するための入力データを得る段階、 前記受け入れられた命令によって識別された共有の記憶ロケーションに前記受け 入れられた命令を処理した結果を記憶する段階、 前記組においてすべての命令が処理されるまで、前記あらかじめ定められた順序 で前記次の組からの次に受け入れられた命令に対して上述の段階を繰返す段階を 含む請求の範囲第48項記載の並列処理方法。 50.各プロセッサ要素が複数の共有の資源ロケーションに位置付けされた入力 データにアクセスする複数のプロセッサ要素(PE)によって、各プログラムが 複数の単一エントリー単一エグジット(SESE)基本ブロック(BB)を有し 、該各基本ブロック(BB)が命令のストリームを有する複数のプログラム内の 自然の同時的発生を並列処理するための方法において、前記各プログラムごとに 各基本ブロック内の各命令の資源要求を確認する段階と、 前記複数の基本ブロックのそれぞれにおける前記命令のそれぞれごとに最も早い 可能な命令放出時間(IFT)を決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれにおける各命令に前記命 令放出時間(IFT)を付加する段階と、 前記複数の基本ブロックのそれぞれにおける各命令に論理的プロセッサ番号(L PN)を割り当てる段階と、前記割り当てに応答して前記複数の基本ブロックの それぞれにおける各命令に前記割り当てられた論理的プロセッサ番号(LPN) を付加する段階と、前記付加された命令放出時間および前記付加された論理的プ ロセッサ番号とともに、命令を複数の組に別々に記憶する段階であって、各組が 複数の別個の記憶領域を有し、少なくとも一組が前記プログラムの少なくとも1 つを含み、各組の前記別個の記憶領域が論理的プロセッサ番号に基づいている段 階と、 前記組の1つに対する前記別々に記憶された命令を論理的プロセッサ番号に基づ いて前記プロセッサ要素に選択的に接続する段階と、 前記各プロセッサ要素が最も早い第1の命令放出時間(IFT)を有する各命令 を受け入れる段階であって、該プロセッサ要素が (a)前記命令によって識別された前記複数の共有の資源ロケーションの共有の 記憶ロケーションからの前記受け入れられた命令を処理するための入力データを 得る段階、 (b)前記受け入れられた命令によって識別された前記複数の共有の資源ロケー ションの共有の記憶ロケーションに前記受け入れた命令を処理することに基づい た結果を記憶する段階、 (c)すべての命令が処理されるまで、あらかじめ定められた順序で前記組の1 つからの次に受け入れられる命令に対して上述の段階(a)および(b)を繰返 す段階 を実行することができる受け入れ段階 とを含むことを特徴とする並列処理方法。 51.前記命令放出時間および論理的プロセッサ番号を付加する前記段階に応答 して基本ブロックの実行セット(ES)を形成する段階を含み、所定の実行セッ ト内の任意所定の基本ブロックから他の実行セットの基本ブロックヘのブランチ がスタティックに最少にされる請求の範囲第50項記載の並列処理方法。 52.前記インテリジェンス付加段階がスタティックの共有のコンテクスト・ス トレージ・マッピング(S−SCSM)情報を付加する段階を含み、前記処理段 階が前記命令のスタティックの共有のコンテクスト・ストレージ・マッピング情 報に対応する少なくとも1つの共有の記憶ロケーションを要求する各命令を処理 する段階を含み、各プログラムルーチンがその組の記憶ロケーションにアクセス できることに加えて他の手順レベルで少なくとも一組の共有の記憶ロケーション にアクセスすることができるようにした請求の範囲第50項記載の並列処理方法 。 53.1つのプログラムであって、該プログラムが複数の単一エントリー単一エ グジット(SESE)基本ブロック(BB)を有し、該各基本ブロックが命令の ストリームを含む1つのプログラム内の自然の同時的発生を並列処理するための 並列プロセッサシステムにおいて、前記複数の基本ブロックを受け入れ、各基本 ブロックに対する前記命令ストリーム内の前記自然の同時的発生を決定する手段 (160)であって、該決定された自然の同時的発生に応答して少なくとも命令 放出時間(IFT)および論理的プロセッサ番号(LPN)を各命令に付加する ことができ、任意所定の命令によって要求されるすべての処理資源が処理に先立 って割り当てられるようにする決定手段(160)と、 前記付加された命令放出時間および論理的プロセッサ番号を有する前記基本ブロ ックを受け入れ、該受け入れた命令を前記論理的プロセッサ番号に基づいて別々 に記憶するための記憶手段(620)と、 前記論理的プロセッサ番号に基づいて前記記憶手段に接続される複数のプロセッ サ要素(PE)であって、該各プロセッサ要素がその受け入れた命令を処理する ことができ、これら命令を処理する順序が最も早い命令放出時間を持つ命令が最 初に処理されるようになっているプロセッサ要素(PE) とを具備することを特徴とする並列プロセッサシステム。 54.前記決定手段がプログラムレベル情報(S−SCSM)を前記命令に付加 するための手段を有し、該情報が前記プログラム内の命令によって要求される相 対プログラムレベルを識別するために、前記各命令に対するレベル情報を含み、 複数組のレジスタが設けられ、該レジスタが前記各プログラムレベルと関連した 異なる組のレジスタを有し、前記プロセッサ要素がその受け入れた各命令を前記 受け入れられた命令によって識別された少なくとも一組のレジスタで処理するこ とができる請求の範囲第53項記載の並列プロセッサシステム。 55.前記決定手段が前記付加された命令放出時間および論理的プロセッサ番号 を含む基本ブロックを実行セットに形成するための手段を有し、所定の実行セッ ト内の任意所定の基本ブロックからのこの実行セット外へのブランチをスタティ ックに最少にする請求の範囲第53項記載の並列プロセッサシステム。 56.前記決定手段が各形成された実行セットにヘッダ情報を取り付けることが でき、該ヘッダが少なくとも(a)前記命令の始まりのアドレス (b)実行セットの長さ を含む請求の範囲第53項記載の並列プロセッサシステム。 57.前記命令を記憶するために前記実行セットを受け入れる複数のキャッシュ (1522)と、該キャッシュに接続され、各キャッシュに記憶された前記命令 を前記複数のプロセッサ要素(PE)に送り出すための手段(1544、156 0、1570、650)と、前記キャッシュおよび前記送り出し手段に接続され 、命令の前記記憶および前記送り出しを制御するための制御手段であって、個々 の基本ブロックからのブランチを実行することができる制御手段(1512、1 518、1548)とを有する記憶手段を含む請求の範囲第55項記載の並列プ ロセッサシステム。 58.前記複数のプロセッサ要素のそれぞれが所定の命令を処理する際にコンテ クストフリーである請求の範囲第53項記載の並列プロセッサシステム。 59.前記複数の共有の資源が複数のレジスタファイルと、複数の条件コードフ ァイルとを含み、これら複数のレジスタファイルおよび複数の条件コードファイ ルが前記記憶手段(620)とともに、前記命令の処理中、任意所定の命令に対 するあらゆる必要なコンテクスト情報を記憶することができる請求の範囲第58 項記載の並列プロセッサシステム。 60.1つのプログラムであって、該プログラムが複数の単一エントリー単一エ グジット(SESE)基本ブロック(BB)を有し、該各基本ブロックが命令の ストリームを食む1つのプログラム内の自然の同時的発生を並列処理するための 並列プロセッサシステムにおいて、前記複数の基本ブロックを受け入れ、各基本 ブロックに対する前記命令ストリーム内の前記自然の同時的発生を決定する手段 (160)であって、該決定された自然の同時的発生に応答して少なくとも時間 およびプロセッサ情報を各命令に付加することができ、任意所定の命令によって 要求されるすべての処理資源が処理に先立って割り当てられるようにする決定手 段(160)と、前記付加された時間およびプロセッサ情報を有する前記基本ブ ロックを受け入れ、該受け入れた命令を記憶するための記憶手段(620)と、 複数のプロセッサ要素(PE)と、 前記複数のプロセッサ要素を前記記憶手段に選択的に接続するための手段(65 0)と、 複数の共有の資源(660)と、 前記複数のプロセッサ要素(PE)を前記複数の共有の資源(660)と選択的 に相互接続するための手段(670)とを具備し、 前記記憶手段は前記放出時間情報に基づいて最も早い放出時間を最初にという順 序で命令を前記接続手段を通じて前記プロセッサ要素に送り出すことができ、前 記プロセッサ要素は前記記憶手段(620)からの各受け入れた命令を処理する ことができ、かつ前記プロセッサ要素は前記各命令によって識別された共有の資 源に接続され、 前記命令に関係するすべての資源情報およびコンテクスト情報がが記複数の共有 の資源および前記記憶手段(620)の1つにそれぞれ記憶されるようにしたこ とを特徴とする並列プロセッサシステム。 61.前記決定手段がプログラムレベル情報を前記命令に付加するための手段を 有し、該情報が前記プログラム内の命令によって要求される相対プログラムレベ ルを識別するために、前記各命令に対するレベル情報を含み、前記共有の資源が 前記各プログラムレベルと関連した異なる組のレジスタを有し、前記プロセッサ 要素がその受け入れた各命令を前記受け入れられた命令によって識別された少な くとも一組のレジスタで処理することができる請求の範囲第60項記載の並列プ ロセッサシステム。 62.前記決定手段が前記付加された命令放出時間および論理的プロセッサ番号 を含む基本ブロックを実行セットに形成するための手段を有し、所定の実行セッ ト内の任意所定の基本ブロックからのこの実行セット外へのブランチをスタティ ックに最少にする請求の範囲第60項記載の並列プロセッサシステム。 63.前記決定手段が各形成された実行セットにヘッダ情報を取り付けることが でき、該ヘッダが少なくとも(a)前記命令の始まりのアドレス (b)実行セットの長さ を含む請求の範囲第62項記載の並列プロセッサシステム。 64.前記命令を記憶するために前記実行セットを受け入れる複数のキャッシュ (1522)と、該キャッシュに接続され、各キャッシュに記憶された前記命令 を前記複数のプロセッサ要素(PE)に送り出すための手段(1544、156 0、1570、650)と、前記キャッシュおよび前記送り出し手段に接続され 、命令の前記記憶および前記送り出しを制御するための制御手段であって、個々 の基本ブロックからのブランチを実行することができる制御手段(1512、1 518、1548)とを有する記憶手段を含む請求の範囲第60項記載の並列プ ロセッサシステム。 65.前記決定手段がレベル情報を前記プログラム内に含まれる異なるプログラ ムレベルに関係する命令に付加するための手段を有し、前記各プロセッサ要素が その受け入れた各命令を前記各命令のレベル情報によって識別された一組の共有 の資源を使用して処理することができる請求の範囲第60項記載の並列プロセッ サシステム。 66.前記複数のプロセッサ要素のそれぞれが所定の命令を処理する際にコンテ クストフリーである請求の範囲第60項記載の並列プロセッサシステム。 67.前記複数の共有の資源が複数のレジスタファイルと、複数の条件コードフ ァイルとを含み、これら複数のレジスタファイルおよび複数の条件コードファイ ルが前記記憶手段(620)とともに、前記命令の処理中、任意所定の命令を処 理するのに必要なあらゆるコンテクストデータを記憶することができる請求の範 囲第66項記載の並列プロセッサシステム。 68.1つのプログラムであって、該プログラムが複数の単一エントリー単一エ グジット(SESE)基本ブロック(BB)を有し、該各基本ブロックが命令の ストリームを含む1つのプログラム内の自然の同時的発生を並列処理するための 並列プロセッサシステムにおいて、前記複数の基本ブロックを受け入れ、各基本 ブロックに対する前記命令ストリーム内の前記自然の同時的発生を決定する手段 (160)であって、該決定された自然の同時的発生に応答して時間、プロセッ サ、および資源情報を各命令に付加することができ、任意所定の命令によって要 求されるすべての処理資源が命令実行に先立って割り当てられるようにし、基本 ブロックを前記付加された命令放出時間および論理的プロセッサ番号を含む実行 セットに形成するための手段を有し、所定の実行セット内の任意所定の基本ブロ ックからのこの実行セット外へのブランチをスタティックに最少にする決定手段 (160)と、 前記付加された情報を有する前記実行セットを受け入れ、前記命令を記憶するた めの記憶手段(620)と、前記記憶手段に接続された複数のコンテクストフリ ープロセッサ要素と、 該複数のコンテクストフリープロセッサ要素に接続された複数の共有の資源とを 具備し、 前記プロセッサ要素は前記記憶手段からの各受け入れた命令を処理することがで き、かつ前記プロセッサ要素は前記各命令によって識別された共有の資源に接続 され、前記命令に関係するすべての資源情報およびコンテクスト情報がが記複数 の共有の資源および前記記憶手段の1つにそれぞれ記憶されるようにしたことを 特徴とする並列プロセッサシステム。 69.1つのプログラムにおけるサブルーチンレベル間のデータにアクセスする ためのシステムにおいて、前記プログラムを受け入れ、このプログラムに含まれ る命令アクセスの手順レベルを決定するための決定手段であって、各サブルーチ ンは異なる手順レベルと関連しており、前記プログラムのデータアクセスに含ま れるすべての命令に情報を付加することができ、該情報が少なくともデータアク セスの手順レベルを識別する決定手段と、 あらかじめ定められた数の共有の資源であって、該各共有の資源が互いに無関係 であり、かつ1つの手順レベルにのみ関連している共有の資源と、 前記プログラムの命令に作用して前記プログラムを処理するための処理手段 とを具備し、 該処理手段が前記情報によって識別された前記手順レベルに対応する前記複数の 共有の資源内の命令の全部を完全に処理することができ、かつ処理されているサ ブルーチンの手順レベルとは異なる手順レベルに対応する前記共有の資源の少な くとも1つに結果を記憶するか、または前記共有の資源の少なくとも1つから入 力データを得ることの少なくとも一方が行なえる ことを特徴とするデータアクセスシステム。 70.複数の使用者によって利用される複数のプログラムにおけるサブルーチン 間のデータにアクセスするためのシステムにおいて、 前記各プログラムを受け入れ、そこに含まれる命令のサブルーチンレベルを決定 するための決定手段であって、前記プログラムのそれぞれ内のデータアクセスに 含まれるすべての命令に第1の情報を付加することができ、該第1の情報が少な くとも呼レベルおよび被呼レベルを識別する決定手段(160)と、 前記決定手段からの前記第1の付加された情報を含む前記各プログラムを受け入 れ、少なくとも使用者コンテクストファイルを識別する前記プログラムの各命令 に第2の情報を付加するための付加手段(620)と、各使用者ごとに1つの複 数のコンテクストファイルであって、各コンテクストファイルがあらかじめ定め られた数の共有の資源を有し、各共有の資源が互いに独立である複数のコンテク ストファイル(660)と、前記各プログラムの命令に作用して前記各プログラ ムからの前記命令をあらかじめ定められた順序で処理するための処理手段(62 0、640) とを具備し、 前記処理手段が前記被呼手順レベルに対応するかつ前記第2の付加情報によって 識別されたコンテクストファイルに位置付けされた複数の識別された前記共有の 資源を使用して、前記命令のそれぞれを前記第1の付加情報に基づいて完全に処 理することができ、前記処理手段が前記命令を処理し終えたときに異なる手順レ ベルに対応する共有の資源の少なくとも1つの資源に前記第1の付加情報に基づ いて結果を記憶することができる ことを特徴とするデータアクセスシステム。 71.1つのプログラム内に含まれる単一エントリー単一エグジット(SESE )基本ブロック(BB)においてブランチを実行するためのシステムにおいて、 前記プログラムを受け入れてこのプログラムの前記各基本ブロック内のブランチ 命令を決定するための決定手段であって、該ブランチ命令に命令放出時間を付加 することができる決定手段(620)と、 前記各基本ブロックの命令に作用してこれら命令を処理するための処理手段(6 20、640)と、前記基本ブロックの前記ブランチ命令に作用して前記処理手 段が前記基本ブロックのブランチでない最後の実行命令を処理しているときと同 じ時間中、前記ブランチ命令の実行を完了し、前記ブランチ命令の実行が前記シ ステムによる前記プログラムの全処理時間をスピードアップするために前記基本 ブロックの前記命令の実行と並行して生ずるようにする手段(620、1548 )とを具備することを特徴とするブランチ実行システム。 72.複数の使用者によって利用される複数のプログラム内の単一エントリー単 一エグジット(SESE)基本ブロック(BB)においてブランチを実行するた めのシステムにおいて、 前記各プログラムを受け入れて各プログラムの前記各基本ブロック内のブランチ 命令を決定するための決定手段であって、該ブランチ命令に命令放出時間を付加 することができる決定手段(160)と、 前記各プログラムの前記各基本ブロックの命令に作用して前記プログラムを処理 するための処理手段(620、640)と、 前記基本ブロックの前記ブランチ命令に作用して前記処理手段が所定のプログラ ムに対する前記基本ブロックのブランチでない最後の実行命令を処理していると きと同じ時間中、前記ブランチ命令の実行を完了し、前記ブランチ命令の実行が 前記基本ブロックの前記命令の実行と並行して生ずるようにし、前記システムに よる前記全プログラムの全処理スループットを増大させるようにする手段(62 0、1548) とを具備することを特徴とするブランチ実行システム。 73.異なる使用者の複数のプログラムを処理するためのマルチプロセッサシス テムにおいて、それぞれが前記プログラムの1つに作用してこの1つのプログラ ムの前記各命令に情報をダイナミックに割り当て、該情報が前記1つのプログラ ムに対する少なくとも使用者コンテクストファイルを識別する複数の論理資源ド ライバ(LRD)と、 各組が所定のコンテクストファイルに割り当てられる複数組の共有の資源(66 0)と、 前記複数組の共有資源に接続され、かつ前記複数の論理資源ドライバからあらか じめ定められた順序で命令を受け入れて前記プログラムを処理するための複数の プロセッサ要素(PE)であって、該各プロセッサ要素はコンテクストフリーで あり、かつ前記命令を処理するのに必要な全てのデータにアクセスするために処 理されている命令に取り付けられた前記使用者コンテクスト情報によって識別さ れた共有資源の組と選択的に相互接続される複数のプロセッサ要素(PE) とを具備することを特徴とするマルチプロセッサシステム。 74.低レベル命令の少なくとも1つのストリームであって、各ストリームが複 数の単一エントリー単一エグジット基本ブロックを有するストリームを処理する ための並列プロセッサシステムにおいて、 複数の個々のプロセッサ要素と、 前記命令を受け入れ、前記命令を記憶し、前記命令を選択されたプロセッサ要素 に送り出すための少なくとも1つの論理資源ドライバと、 前記複数のプロセッサ要素を前記論理資源ドライバと接続し、任意の前記論理資 源ドライバからの命令を任意のプロセッサ要素に転送するための手段と、複数の 共有の記憶資源と、 前記各プロセッサ要素を前記複数の共有の記憶資源の任意の1つと接続し、前記 各プロセッサ要素が前記命令の処理中に、前記共有の記憶資源の任意の1つにア クセスできるようにする手段 とを具備することを特徴とする並列プロセッサシステム。 75.複数の使用者のプログラムに含まれる低レベル命令の複数のストリームで あって、各ストリームが複数の単一エントリー単一エグジット基本ブロックを有 するストリームを複数のプロセッサ要素において並列処理するための方法におい て、 前記プログラムの各基本ブロックにおける命令内に存在する自然の同時的発生を 表わすインテリジェンスをスタティックに付加する段階であって、各プログラム に対する該インテリジェンス付加段階が、 (a)各基本ブロック内の各命令の資源要求を確認して各基本ブロックにおける 自然の同時的発生を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、(c)前記複数の基本ブロッ クのそれぞれにおける前記命令のそれぞれごとに最も早い可能な命令放出時間を 決定する段階、 (d)一連の命令放出時間を表わす情報を命令ストリームに付加する段階、 (e)前記プログラムのそれぞれに対しすべての基本ブロックが処理されるまで 段階(a)乃至(d)を繰返す段階 からなるインテリジェンス付加段階と、複数のプロセッサ要素で前記プログラム を実行するためスタティックに付加されたインテリジェンスを有する命令を処理 する段階 とを含むことを特徴とする並列処理方法。 76.複数の使用者のプログラムに含まれる低レベル命令の複数のストリームで あって、各ストリームが複数の単一エントリー単一エグジット本ブロックを有す るストリーム内の自然の同時的発生を複数のプロセッサ要素において並列処理す るための方法において、前記プログラムの各基本ブロックにおける命令内に存在 する自然の同時的発生を表わすインテリジェンスをスタティックに付加する段階 と、 前記プログラムに対しスタティックに付加されたインテリジェンスを有する命令 を処理する段階であって、該処理段階が、 (a)前記命令を論理資源ドライバに送出し、使用者の前記各プログラムを異な る論理資源ドライバに割り当てる段階、 (b)命令放出時間に基づいたあらかじめ定められた順序で前記論理資源ドライ バからの命令を選択する段階、 (c)選択された命令を論理的プロセッサ番号に基づいて論理資源ドライバのキ ューに記憶する段階、(d)各命令に対してダイナミックな共有のコンテクスト ・ストレージ・マッピング情報を発生する段階、(e)各論理資源ドライバのキ ューをプロセッサ要素に選択的に接続し、前記キューを、各キューからの最も早 い命令放出時間を有する1つの命令が最初に所定のプロセッサ要素に送り出され るように、あらかじめ定められた順序で接続する段階、 (f)前記各接続されたプロセッサ要素の各キューからの前記1つの命令を処理 する段階、 (g)前記ダイナミックな共有のコンテクスト・ストレージ・マッピング情報に よって識別されたコンテクストファイルにおける前記命令により識別された共有 の記憶ロケーションからの前記送り出された命令を処理するための入力データを 得る段階、 (h)前記命令に含まれる前記ダイナミックな情報によって識別された共有の記 憶ロケーションの前記送り出された命令を処理した結果を記憶する段階、(i) すべての前記プログラムに対する前記複数の基本ブロックのそれぞれにおけるす べての命令が処理されるまで、段階(a)乃至(h)を繰返す段階からなる処理 段階 とを含むことを特徴とする並列処理方法。 77.複数の単一エントリー単一エクジット基本ブロックを有し、かつ自然の同 時的発生を有する命令のストリームを、複数のプロセッサ要素を有する並列プロ セッサシステムにおいて並列処理するための方法において、前記命令ストリーム 内の自然の同時的発生を決定する段階と、 前記自然の同時的発生の決定に応答して各命令ストリームにインテリジェンスを 付加する段階であって、該付加されたインテリジェンスが各命令に対する少なく とも命令放出時間および論理的プロセッサ番号を表わすインテリジェンス付加段 階と、 前記複数のプロセッサ要素において前記付加されたインテリジェンスを有する命 令を処理する段階であって、前記複数のプロセッサ要素のそれぞれが最も早い命 令放出時間を有する命令で始まる命令放出時間に従って命令を受け入れる処理段 階 とを含むことを特徴とする並列処理方法。 78.各プログラムが複数の単一エントリー単一エグジット基本ブロックを有し 、該基本ブロックのそれぞれが命令のストリームを有する異なる使用者の複数の プログラムを複数のプロセッサ要素を有するシステムにおいて並列処理するため の方法において、 前記各プログラムにおける命令間の自然の同時的発生を決定する段階と、 前記自然の同時的発生の決定に応答して前記基本ブロックにインテリジェンスを 付加する段階であって、該付加されたインテリジェンスが少なくとも命令放出時 間および論理的プロセッサ番号を表わすインテリジェンス付加段階と、 前記複数のプロセッサ要素において前記付加されたインテリジエンスを有する命 令を処理する段階であって、前記複数のプロセッサ要素のそれぞれが最も早い命 令放出時間を有する命令で始まる命令放出時間に従って命令を受け入れる処理段 階 とを含むことを特徴とする並列処理方法。 79.当該並列プロセッサシステムにおける複数のプログラムに含まれる低レベ ル命令の複数のストリームであって、各ストリームが複数の単一エントリー単一 エグジット基本ブロックを有するストリームを処理するための並列プロセッサシ ステムにおいて、 検出された自然の同時的発生に応答して命令ストリームにインテリジェンスを付 加するための手段(160)と、 複数のコンテクストファイルであって、各コンテクストファイルが前記複数のプ ログラムの1つに割り当てられ、かつ各コンテクストファイルが複数のレジスタ 資源を有する複数のコンテクストファイルと、複数の論理資源ドライバであって 、各論理資源ドライバが前記複数のコンテクストファイルの1つに割り当てられ 、かつ各論理資源ドライバが前記インテリジェンス付加手段からの前記少なくと も1つの割り当てられたプログラムのプログラム命令ストリームに対応する前記 基本ブロックを受け入れて各基本ブロックの命令を記憶し、前記各論理資源ドラ イバがさらに前記各命令に情報を付加することができ、該付加された情報が前記 各論理資源ドライバ内に含まれるプログラムに割り当てられたコンテクストファ イルの識別子を含む複数の論理資源ドライバと、 複数の個々のプロセッサ要素と、 前記複数のプロセッサ要素を前記複数の論理資源ドライバに接続し、前記各論理 資源ドライバからの前記命令を個々に割り当てられたプロセッサ要素に転送する ための手段と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、前記各プロセッサ要素が、前記プログラムの命令の処理中に、前記付 加された情報によって識別されるプログラムのコンテクストファイルにおいて、 前記付加されたインテリジェンスによって識別される一組の資源にアクセスでき るようにするための第1の手段と、 複数のメモリロケーション(610)と、前記論理資源ドライバを含み、前記プ ロセッサ要素のそれぞれを前記複数のメモリロケーションの任意の1つと接続し 、前記各プロセッサ要素が前記各命令の処理中に前記メモリロケーションにアク セスできるようにするための第2の手段 とを具備することを特徴とする並列プロセッサシステム。 80.複数のプログラムに含まれる低レベル命令の複数のストリームであって、 各ストリームが複数の単一エントリー単一エグジット基本ブロックを有するスト リームを処理するための並列プロセッサシステムにおいて、前記命令ストリーム にインテリジェンスをスタティックに加えるための手段であって、該加えられた インテリジェンスが前記命令に対するサブルーチン情報を含み、前記各プログラ ム内に含まれる相対サブルーチンレジスタアクセスを特定するものであるインテ リジェンス付加手段と、 複数のコンテクストファイル(660)であって、各コンテクストファイルが前 記複数のプログラムの1つに割り当てられ、かつ各コンテクストファイルが前記 各サブルーチンプログラムレベルに対して一組のレジスタ資源を持つ複数のレジ スタ資源を有し、該各組の資源が異なるサブルーチンレベルで識別される複数の コンテクストファイルと、 複数の論理資源ドライバであって、各論理資源ドライバが前記複数のコンテクス トファイルの1つに割り当てられ、かつ各論理資源ドライバが前記インテリジェ ンス付加手段からの前記割り当てられたプログラムのプログラム命令ストリーム に対応する前記基本ブロックを受け入れて、前記命令を記憶し、各基本ブロック の前記命令を前記命令放出時間の順序で取出し、そして前記命令を、各命令に対 する論理的プロセッサ番号に従って送出するようになっている複数の論理資源ド ライバと、複数の個々のプロセッサ要素と、 前記複数のプロセッサ要素を前記複数の論理資源ドライバに接続し、前記各論理 資源ドライバからの前記命令を、あらかじめ定められた順序で、個々に割り当て られたプロセッサ要素に転送し、前記各プロセッサ要素が前記転送された命令を 処理することができるようにするための手段と、 前記プロセッサ要素のそれぞれを前記複数のコンテクストファイルの任意の1つ と接続し、各プロセッサ要素が前記プログラムの命令の処理中にプログラムのコ ンテクストファイルの複数のレジスタおよび条件コード記憶装置の任意のものに アクセスできるようにするための第1の手段(670) とを具備することを特徴とする並列プロセッサシステム。 81.異なる使用者の複数のプログラムを処理するためのマルチプロセッサシス テムにおいて、それぞれが前記プログラムの少なくとも1つに作用してこの1つ のプログラムの命令に情報をダイナミックに割り当て、該情報が前記1つのプロ グラムに対する少なくとも使用者コンテクストファイルを識別する複数の論理資 源ドライバと、 各組が所定のコンテクストファイルに割り当てられる複数組の共有の資源と、 前記複数組の共有資源に接続され、かつ前記論理資源ドライバに接続され、あら かじめ定められた順序で命令を受け入れて前記プログラムを処理するための複数 のプロセッサ要素であって、前記各論理資源ドライバは命令を任意のプロセッサ 要素に送ることができ、該各プロセッサ要素は前記命令を処理するのに必要な全 てのデータにアクセスするために処理されている命令に取り付けられた前記使用 者コンテクスト情報によって識別された共有資源の組と選択的に相互接続される 複数のプロセッサ要素 とを具備することを特徴とするマルチプロセッサシステム。
JP61506185A 1985-10-31 1986-10-30 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法 Expired - Lifetime JP3084282B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/794,221 US4847755A (en) 1985-10-31 1985-10-31 Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US794221 1985-10-31

Related Child Applications (2)

Application Number Title Priority Date Filing Date
JP9320380A Division JPH10187443A (ja) 1985-10-31 1997-11-06 複数の非分岐命令と分岐命令とを有する基本ブロックにおける分岐実行システムおよび方法
JP32038197A Division JP3461704B2 (ja) 1985-10-31 1997-11-06 条件コードを使用する命令処理システムおよびコンピュータ

Publications (2)

Publication Number Publication Date
JPS63501605A true JPS63501605A (ja) 1988-06-16
JP3084282B2 JP3084282B2 (ja) 2000-09-04

Family

ID=25162057

Family Applications (3)

Application Number Title Priority Date Filing Date
JP61506185A Expired - Lifetime JP3084282B2 (ja) 1985-10-31 1986-10-30 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法
JP9320380A Pending JPH10187443A (ja) 1985-10-31 1997-11-06 複数の非分岐命令と分岐命令とを有する基本ブロックにおける分岐実行システムおよび方法
JP32038197A Expired - Lifetime JP3461704B2 (ja) 1985-10-31 1997-11-06 条件コードを使用する命令処理システムおよびコンピュータ

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP9320380A Pending JPH10187443A (ja) 1985-10-31 1997-11-06 複数の非分岐命令と分岐命令とを有する基本ブロックにおける分岐実行システムおよび方法
JP32038197A Expired - Lifetime JP3461704B2 (ja) 1985-10-31 1997-11-06 条件コードを使用する命令処理システムおよびコンピュータ

Country Status (5)

Country Link
US (1) US4847755A (ja)
EP (2) EP0247146B1 (ja)
JP (3) JP3084282B2 (ja)
DE (1) DE3650696T2 (ja)
WO (1) WO1987002799A1 (ja)

Families Citing this family (181)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127104A (en) * 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JP2749039B2 (ja) * 1987-11-06 1998-05-13 株式会社日立製作所 オブジェクト生成方法
US5396627A (en) * 1987-11-06 1995-03-07 Hitachi, Ltd. Method of producing object program based on interprocedural dataflow analysis of a source program
JP2644780B2 (ja) * 1987-11-18 1997-08-25 株式会社日立製作所 処理依頼機能を持つ並列計算機
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5134705A (en) * 1988-10-21 1992-07-28 Unisys Corporation System and method for concurrency simulation
US6092153A (en) * 1988-11-14 2000-07-18 Lass; Stanley Edwin Subsettable top level cache
KR920006770B1 (ko) * 1988-12-27 1992-08-17 후지쓰 가부시끼가이샤 명령을 페치(fetch)하기 위한 제어 시스템
US5125092A (en) * 1989-01-09 1992-06-23 International Business Machines Corporation Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes
EP0378415A3 (en) * 1989-01-13 1991-09-25 International Business Machines Corporation Multiple instruction dispatch mechanism
US5165036A (en) * 1989-01-31 1992-11-17 Sharp Kabushiki Kaisha Parallel processing development system with debugging device includes facilities for schematically displaying execution state of data driven type processor
EP0389175A3 (en) * 1989-03-15 1992-11-19 Fujitsu Limited Data prefetch system
EP0394624B1 (en) * 1989-04-24 1997-06-18 International Business Machines Corporation Multiple sequence processor system
US5127092A (en) * 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
US5179558A (en) * 1989-06-22 1993-01-12 Digital Equipment Corporation Routing apparatus and method for high-speed mesh connected local area network
US5224210A (en) * 1989-07-28 1993-06-29 Hewlett-Packard Company Method and apparatus for graphics pipeline context switching in a multi-tasking windows system
US5327569A (en) * 1989-08-28 1994-07-05 Mitsubishi Denki Kabushiki Kaisha Data driven type processor including a generation management system
US5317734A (en) * 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
US5371887A (en) * 1989-09-05 1994-12-06 Matsushita Electric Industrial Co., Ltd. Time-shared multitask execution device
US5263169A (en) * 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
US5193206A (en) * 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
JP3260357B2 (ja) * 1990-01-24 2002-02-25 株式会社日立製作所 情報処理装置
JPH04242852A (ja) * 1990-02-13 1992-08-31 Internatl Business Mach Corp <Ibm> 多重処理のための先入れ先出しバッファ待ち行列の管理機構および方法
US5412799A (en) * 1990-02-27 1995-05-02 Massachusetts Institute Of Technology Efficient data processor instrumentation for systematic program debugging and development
EP0447228A3 (en) * 1990-03-16 1993-01-07 Hewlett-Packard Company Data stream concentrator providing attribute data storage and graphics pipeline access
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
EP0545927B1 (en) * 1990-05-04 2000-06-28 International Business Machines Corporation System for preparing instructions for instruction parallel processor and system with mechanism for branching in the middle of a compound instruction
US5303356A (en) * 1990-05-04 1994-04-12 International Business Machines Corporation System for issuing instructions for parallel execution subsequent to branch into a group of member instructions with compoundability in dictation tag
US5504932A (en) * 1990-05-04 1996-04-02 International Business Machines Corporation System for executing scalar instructions in parallel based on control bits appended by compounding decoder
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
US5212794A (en) * 1990-06-01 1993-05-18 Hewlett-Packard Company Method for optimizing computer code to provide more efficient execution on computers having cache memories
US5107418A (en) * 1990-06-11 1992-04-21 Supercomputer Systems Limited Partnership Method for representing scalar data dependences for an optimizing compiler
US5202975A (en) * 1990-06-11 1993-04-13 Supercomputer Systems Limited Partnership Method for optimizing instruction scheduling for a processor having multiple functional resources
CA2038264C (en) * 1990-06-26 1995-06-27 Richard James Eickemeyer In-memory preprocessor for a scalable compound instruction set machine processor
US5103393A (en) * 1990-06-29 1992-04-07 Digital Equipment Corporation Method of dynamically allocating processors in a massively parallel processing system
US5421014A (en) * 1990-07-13 1995-05-30 I-Tech Corporation Method for controlling multi-thread operations issued by an initiator-type device to one or more target-type peripheral devices
JP2771683B2 (ja) * 1990-07-17 1998-07-02 三菱電機株式会社 並列処理方式
SE9002558D0 (sv) * 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
US5625797A (en) * 1990-08-10 1997-04-29 Vlsi Technology, Inc. Automatic optimization of a compiled memory structure based on user selected criteria
US5522072A (en) * 1990-09-04 1996-05-28 At&T Corp. Arrangement for efficiently transferring program execution between subprograms
US5655096A (en) * 1990-10-12 1997-08-05 Branigin; Michael H. Method and apparatus for dynamic scheduling of instructions to ensure sequentially coherent data in a processor employing out-of-order execution
US5630162A (en) * 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
US5765012A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Controller for a SIMD/MIMD array having an instruction sequencer utilizing a canned routine library
US5617577A (en) * 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5765015A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Slide network for an array processor
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5765011A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5794059A (en) * 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5734921A (en) * 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5625836A (en) * 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5588152A (en) * 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5708836A (en) * 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
US5966528A (en) * 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
DE69131272T2 (de) * 1990-11-13 1999-12-09 International Business Machines Corp., Armonk Paralleles Assoziativprozessor-System
US5809292A (en) * 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US5828894A (en) * 1990-11-13 1998-10-27 International Business Machines Corporation Array processor having grouping of SIMD pickets
US5367678A (en) * 1990-12-06 1994-11-22 The Regents Of The University Of California Multiprocessor system having statically determining resource allocation schedule at compile time and the using of static schedule with processor signals to control the execution time dynamically
US5459845A (en) * 1990-12-20 1995-10-17 Intel Corporation Instruction pipeline sequencer in which state information of an instruction travels through pipe stages until the instruction execution is completed
GB9027853D0 (en) * 1990-12-21 1991-02-13 Inmos Ltd Multiple instruction issue
EP0503928B1 (en) * 1991-03-11 1999-07-07 Sun Microsystems, Inc. Method and apparatus for optimizing cost-based heuristic instruction schedule
US5203003A (en) * 1991-03-28 1993-04-13 Echelon Corporation Computer architecture for conserving power by using shared resources and method for suspending processor execution in pipeline
US5287467A (en) * 1991-04-18 1994-02-15 International Business Machines Corporation Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit
US5321813A (en) * 1991-05-01 1994-06-14 Teradata Corporation Reconfigurable, fault tolerant, multistage interconnect network and protocol
US5339429A (en) * 1991-05-08 1994-08-16 Hitachi, Ltd. Parallel processing system and compiling method used therefor
US5594918A (en) * 1991-05-13 1997-01-14 International Business Machines Corporation Parallel computer system providing multi-ported intelligent memory
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
JP2779557B2 (ja) * 1991-07-09 1998-07-23 三菱電機株式会社 並列演算処理装置
CA2067576C (en) * 1991-07-10 1998-04-14 Jimmie D. Edrington Dynamic load balancing for a multiprocessor pipeline
US5875464A (en) * 1991-12-10 1999-02-23 International Business Machines Corporation Computer system with private and shared partitions in cache
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
US6047122A (en) * 1992-05-07 2000-04-04 Tm Patents, L.P. System for method for performing a context switch operation in a massively parallel computer system
JP2642039B2 (ja) * 1992-05-22 1997-08-20 インターナショナル・ビジネス・マシーンズ・コーポレイション アレイ・プロセッサ
US5481683A (en) * 1992-10-30 1996-01-02 International Business Machines Corporation Super scalar computer architecture using remand and recycled general purpose register to manage out-of-order execution of instructions
US5835745A (en) * 1992-11-12 1998-11-10 Sager; David J. Hardware instruction scheduler for short execution unit latencies
US5560025A (en) * 1993-03-31 1996-09-24 Intel Corporation Entry allocation apparatus and method of same
US6704861B1 (en) * 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
US5530907A (en) * 1993-08-23 1996-06-25 Tcsi Corporation Modular networked image processing system and method therefor
CA2123442A1 (en) * 1993-09-20 1995-03-21 David S. Ray Multiple execution unit dispatch with instruction dependency
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
DE69430018T2 (de) * 1993-11-05 2002-11-21 Intergraph Corp., Huntsville Befehlscachespeicher mit assoziativem Kreuzschienenschalter
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP0652510B1 (en) * 1993-11-05 2000-01-26 Intergraph Corporation Software scheduled superscalar computer architecture
US5574942A (en) * 1994-02-28 1996-11-12 Intel Corporation Hybrid execution unit for complex microprocessor
US5812810A (en) * 1994-07-01 1998-09-22 Digital Equipment Corporation Instruction coding to support parallel execution of programs
US5802375A (en) * 1994-11-23 1998-09-01 Cray Research, Inc. Outer loop vectorization
US5673426A (en) * 1995-02-14 1997-09-30 Hal Computer Systems, Inc. Processor structure and method for tracking floating-point exceptions
AU4904496A (en) * 1995-03-10 1996-10-02 Motorola, Inc. Method and system for storing instructions in computer memory
US5781758A (en) * 1995-03-23 1998-07-14 Apple Computer, Inc. Software emulation system with reduced memory requirements
US5717883A (en) * 1995-06-28 1998-02-10 Digital Equipment Corporation Method and apparatus for parallel execution of computer programs using information providing for reconstruction of a logical sequential program
GB9521977D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
GB9521955D0 (en) * 1995-10-26 1996-01-03 Sgs Thomson Microelectronics Cache memory
US5778225A (en) * 1996-02-09 1998-07-07 Supernaw-Issen; Daniel Aaron Method and apparatus for sharing objects among a plurality of processes
US5924128A (en) * 1996-06-20 1999-07-13 International Business Machines Corporation Pseudo zero cycle address generator and fast memory access
JP3745039B2 (ja) * 1996-08-01 2006-02-15 株式会社ルネサステクノロジ 遅延命令を有するマイクロプロセッサ
US5950009A (en) * 1997-03-10 1999-09-07 International Business Machines Coporation Method and apparatus for profile-based reordering of program portions in a computer program
US6029004A (en) * 1997-03-17 2000-02-22 International Business Machines Corporation Method and apparatus for modular reordering of portions of a computer program based on profile data
US6026234A (en) * 1997-03-19 2000-02-15 International Business Machines Corporation Method and apparatus for profiling indirect procedure calls in a computer program
US5960198A (en) * 1997-03-19 1999-09-28 International Business Machines Corporation Software profiler with runtime control to enable and disable instrumented executable
US6314493B1 (en) 1998-02-03 2001-11-06 International Business Machines Corporation Branch history cache
JP3837244B2 (ja) * 1998-10-23 2006-10-25 松下電器産業株式会社 プログラムリンク装置及び方法
US6542987B1 (en) * 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full queue
US6704856B1 (en) 1999-02-01 2004-03-09 Hewlett-Packard Development Company, L.P. Method for compacting an instruction queue
US6738896B1 (en) 1999-02-01 2004-05-18 Hewlett-Packard Development Company, L.P. Method and apparatus for determining availability of a queue which allows random insertion
US6594824B1 (en) * 1999-02-17 2003-07-15 Elbrus International Limited Profile driven code motion and scheduling
JP2000330785A (ja) * 1999-05-18 2000-11-30 Sharp Corp 実時間プロセッサおよび命令実行方法
CA2383526A1 (en) 1999-09-01 2001-03-15 Intel Corporation Branch instruction for multithreaded processor
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US6519697B1 (en) 1999-11-15 2003-02-11 Ncr Corporation Method and apparatus for coordinating the configuration of massively parallel systems
US6412002B1 (en) 1999-11-15 2002-06-25 Ncr Corporation Method and apparatus for selecting nodes in configuring massively parallel systems
US6418526B1 (en) 1999-11-15 2002-07-09 Ncr Corporation Method and apparatus for synchronizing nodes in massively parallel systems
US6745240B1 (en) 1999-11-15 2004-06-01 Ncr Corporation Method and apparatus for configuring massively parallel systems
EP1113357A3 (en) * 1999-12-30 2001-11-14 Texas Instruments Incorporated Method and apparatus for implementing a variable length delay instruction
US6728419B1 (en) 2000-02-17 2004-04-27 Xerox Corporation Multi-tasking multi-threaded image processing system and method for image capture devices
US6976150B1 (en) * 2000-04-06 2005-12-13 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Resource flow computing device
WO2002008893A1 (en) * 2000-07-21 2002-01-31 Antevista Gmbh A microprocessor having an instruction format containing explicit timing information
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US20030144970A1 (en) * 2001-12-10 2003-07-31 Coyne Patrick J. Project management database and method of managing project related information
US8935297B2 (en) * 2001-12-10 2015-01-13 Patrick J. Coyne Method and system for the management of professional services project information
EP1341080A1 (fr) * 2002-02-26 2003-09-03 Koninklijke Philips Electronics N.V. Système de traitement d'instructions d'un programme
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
AU2003231945A1 (en) * 2002-05-31 2003-12-19 Guang R. Gao Method and apparatus for real-time multithreading
GB0215029D0 (en) * 2002-06-28 2002-08-07 Critical Blue Ltd Strand based execution
US20050086667A1 (en) * 2003-09-30 2005-04-21 Feng Jin Symmetric Scheduling for parallel execution
US8279886B2 (en) 2004-12-30 2012-10-02 Intel Corporation Dataport and methods thereof
JP2006243839A (ja) * 2005-02-28 2006-09-14 Toshiba Corp 命令生成装置及び命令生成方法
CN1298049C (zh) * 2005-03-08 2007-01-31 北京中星微电子有限公司 一种图形引擎芯片及其应用方法
US7624255B1 (en) * 2005-03-09 2009-11-24 Nvidia Corporation Scheduling program instruction execution by using fence instructions
JP4368320B2 (ja) * 2005-03-16 2009-11-18 富士通株式会社 情報処理システム,パイプライン処理装置,ビジー判定プログラム及び同プログラムを記録したコンピュータ読取可能な記録媒体
US7774299B2 (en) * 2005-05-09 2010-08-10 Microsoft Corporation Flow computing
US20060288194A1 (en) * 2005-06-17 2006-12-21 Lewis Innovative Technologies Real-time processor
US7779213B2 (en) 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7725693B2 (en) * 2005-08-29 2010-05-25 Searete, Llc Execution optimization using a processor resource management policy saved in an association with an instruction group
US7647487B2 (en) 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US20070050608A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporatin Of The State Of Delaware Hardware-generated and historically-based execution optimization
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8375247B2 (en) * 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US8209524B2 (en) * 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US8423824B2 (en) * 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7512842B2 (en) * 2005-08-29 2009-03-31 Searete Llc Multi-voltage synchronous systems
US7539852B2 (en) 2005-08-29 2009-05-26 Searete, Llc Processor resource management
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US8300798B1 (en) 2006-04-03 2012-10-30 Wai Wu Intelligent communication routing system and method
US7945433B2 (en) * 2007-04-30 2011-05-17 International Business Machines Corporation Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
US20090089555A1 (en) * 2007-09-28 2009-04-02 James Adam Cataldo Methods and apparatus for executing or converting real-time instructions
US8838817B1 (en) 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US20090143695A1 (en) * 2007-11-30 2009-06-04 Palo Alto Research Center Incorporated Brainwave-facilitated presenter feedback mechanism
US8566833B1 (en) * 2008-03-11 2013-10-22 Netapp, Inc. Combined network and application processing in a multiprocessing environment
GB0911099D0 (en) * 2009-06-26 2009-08-12 Codeplay Software Ltd Processing method
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
GB2482141B (en) * 2010-07-20 2012-07-18 Cognovo Ltd Digital data processing systems
US8640112B2 (en) 2011-03-30 2014-01-28 National Instruments Corporation Vectorizing combinations of program operations
CN105988872B (zh) 2015-02-03 2020-02-18 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
EP3304291A1 (en) * 2015-06-01 2018-04-11 Intel Corporation Multi-core processor for execution of strands of instructions grouped according to criticality
US10216547B2 (en) 2016-11-22 2019-02-26 International Business Machines Corporation Hyper-threaded processor allocation to nodes in multi-tenant distributed software systems
GB2563582B (en) * 2017-06-16 2020-01-01 Imagination Tech Ltd Methods and systems for inter-pipeline data hazard avoidance
US11106466B2 (en) * 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US10983797B2 (en) * 2019-05-28 2021-04-20 International Business Machines Corporation Program instruction scheduling
US11954491B2 (en) 2022-01-30 2024-04-09 Simplex Micro, Inc. Multi-threading microprocessor with a time counter for statically dispatching instructions
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US12001848B2 (en) 2022-01-30 2024-06-04 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions with phantom registers
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US11829187B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US20230350679A1 (en) * 2022-04-29 2023-11-02 Simplex Micro, Inc. Microprocessor with odd and even register sets

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3343135A (en) * 1964-08-13 1967-09-19 Ibm Compiling circuitry for a highly-parallel computing system
US3611306A (en) * 1969-02-05 1971-10-05 Burroughs Corp Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system
US3771141A (en) * 1971-11-08 1973-11-06 Culler Harrison Inc Data processor with parallel operations per instruction
US3717850A (en) * 1972-03-17 1973-02-20 Bell Telephone Labor Inc Programmed data processing with facilitated transfers
US4153932A (en) * 1974-03-29 1979-05-08 Massachusetts Institute Of Technology Data processing apparatus for highly parallel execution of stored programs
DE2555963C2 (de) * 1975-12-12 1982-10-28 Ibm Deutschland Gmbh, 7000 Stuttgart Einrichtung zur Funktionsmodifizierung
DE2641741C2 (de) * 1976-09-16 1986-01-16 Siemens AG, 1000 Berlin und 8000 München Rechenanlage aus mehreren miteinander über ein Sammelleitungssystem verbundenen und zusammenwirkenden Einzelrechnern und einem Steuerrechner
US4104720A (en) * 1976-11-29 1978-08-01 Data General Corporation CPU/Parallel processor interface with microcode extension
US4270167A (en) * 1978-06-30 1981-05-26 Intel Corporation Apparatus and method for cooperative and concurrent coprocessing of digital information
US4241398A (en) * 1978-09-29 1980-12-23 United Technologies Corporation Computer network, line protocol system
US4229790A (en) * 1978-10-16 1980-10-21 Denelcor, Inc. Concurrent task and instruction processor and method
US4228495A (en) * 1978-12-19 1980-10-14 Allen-Bradley Company Multiprocessor numerical control system
US4295193A (en) * 1979-06-29 1981-10-13 International Business Machines Corporation Machine for multiple instruction execution
US4435758A (en) * 1980-03-10 1984-03-06 International Business Machines Corporation Method for conditional branch execution in SIMD vector processors
JPS56164464A (en) * 1980-05-21 1981-12-17 Tatsuo Nogi Parallel processing computer
US4430707A (en) * 1981-03-05 1984-02-07 Burroughs Corporation Microprogrammed digital data processing system employing multi-phase subroutine control for concurrently executing tasks
US4468736A (en) * 1982-06-08 1984-08-28 Burroughs Corporation Mechanism for creating dependency free code for multiple processing elements
US4466061A (en) * 1982-06-08 1984-08-14 Burroughs Corporation Concurrent processing elements for using dependency free code
US4574348A (en) * 1983-06-01 1986-03-04 The Boeing Company High speed digital signal processor architecture

Also Published As

Publication number Publication date
EP0247146A1 (en) 1987-12-02
DE3650696D1 (de) 1998-10-01
DE3650696T2 (de) 1999-02-04
JP3084282B2 (ja) 2000-09-04
EP0840213A3 (en) 2000-01-26
JP3461704B2 (ja) 2003-10-27
EP0840213A2 (en) 1998-05-06
EP0247146B1 (en) 1998-08-26
US4847755A (en) 1989-07-11
JPH10187443A (ja) 1998-07-21
WO1987002799A1 (en) 1987-05-07
EP0247146A4 (en) 1992-04-15
JPH10187640A (ja) 1998-07-21

Similar Documents

Publication Publication Date Title
JPS63501605A (ja) 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法
US5765037A (en) System for executing instructions with delayed firing times
EP0623875B1 (en) Multi-processor computer system having process-independent communication register addressing
US4903196A (en) Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
KR100676011B1 (ko) 인스트럭션 처리 방법 및 장치와 기계 판독가능한 매체
CN107810478A (zh) 具有连续块的并行执行的基于块的架构
US20130086564A1 (en) Methods and systems for optimizing execution of a program in an environment having simultaneously parallel and serial processing capability
CN105426160A (zh) 基于sprac v8指令集的指令分类多发射方法
WO1983004443A1 (en) Concurrent processing elements for using dependency free code
WO1983004444A1 (en) Mechanism for creating dependency free code for multiple processing elements
US3611306A (en) Mechanism to control the sequencing of partially ordered instructions in a parallel data processing system
JPH02227730A (ja) データ処理システム
US5907693A (en) Autonomously cycling data processing architecture
JPH06110688A (ja) 複数の順序外れ命令を並行処理するためのコンピュータ・システム
EP0521486B1 (en) Hierarchical structure processor
GB2603151A (en) Circuitry and method
Tang et al. Automatically partitioning threads for multithreaded architectures
JPS63226740A (ja) マルチプロセツサ・コンピユータ・システムの並列シミユレーシヨン方法
US4456958A (en) System and method of renaming data items for dependency free code
WO2021013727A1 (en) Processor
Nicolau et al. ROPE: a statically scheduled supercomputer architecture
JP2729795B2 (ja) 並列計算機及びその制御方法
Krishnaswamy et al. The Linda Machine
Monti Interprocessor communication supports for a multiprocessor dataflow machine
Tanaka Parallel Inference Engine: PIE

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term