JP3084282B2 - 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法 - Google Patents
同時に処理されうる2以上の命令を含むストリームを並列処理するための方法Info
- Publication number
- JP3084282B2 JP3084282B2 JP61506185A JP50618586A JP3084282B2 JP 3084282 B2 JP3084282 B2 JP 3084282B2 JP 61506185 A JP61506185 A JP 61506185A JP 50618586 A JP50618586 A JP 50618586A JP 3084282 B2 JP3084282 B2 JP 3084282B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- instructions
- processor
- program
- processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 title claims abstract description 129
- 238000000034 method Methods 0.000 title claims description 118
- 238000010304 firing Methods 0.000 claims abstract description 141
- 230000004044 response Effects 0.000 claims abstract description 14
- 238000003860 storage Methods 0.000 claims description 65
- 230000008569 process Effects 0.000 claims description 55
- 230000003068 static effect Effects 0.000 claims description 31
- 230000001419 dependent effect Effects 0.000 claims description 28
- 238000013507 mapping Methods 0.000 claims description 22
- 230000002452 interceptive effect Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 6
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 238000003672 processing method Methods 0.000 claims 36
- 238000007792 addition Methods 0.000 claims 3
- 241000238876 Acari Species 0.000 claims 1
- 230000010365 information processing Effects 0.000 claims 1
- 230000015654 memory Effects 0.000 description 84
- 238000004458 analytical method Methods 0.000 description 38
- 230000006870 function Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 19
- 238000005192 partition Methods 0.000 description 13
- 238000013461 design Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 12
- 238000013459 approach Methods 0.000 description 10
- 239000011159 matrix material Substances 0.000 description 10
- 238000011156 evaluation Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 230000000875 corresponding effect Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000008859 change Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 5
- 230000009467 reduction Effects 0.000 description 5
- 230000000903 blocking effect Effects 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000003213 activating effect Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 238000000638 solvent extraction Methods 0.000 description 3
- 235000013555 soy sauce Nutrition 0.000 description 3
- 230000002269 spontaneous effect Effects 0.000 description 3
- 241001522296 Erithacus rubecula Species 0.000 description 2
- 241000202943 Hernandia sonora Species 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000035943 smell Effects 0.000 description 2
- 238000012559 user support system Methods 0.000 description 2
- DSSYKIVIOFKYAU-XCBNKYQSSA-N (R)-camphor Chemical compound C1C[C@@]2(C)C(=O)C[C@@H]1C2(C)C DSSYKIVIOFKYAU-XCBNKYQSSA-N 0.000 description 1
- 241000723353 Chrysanthemum Species 0.000 description 1
- 235000005633 Chrysanthemum balsamita Nutrition 0.000 description 1
- 241000723346 Cinnamomum camphora Species 0.000 description 1
- 102100023882 Endoribonuclease ZC3H12A Human genes 0.000 description 1
- 101710112715 Endoribonuclease ZC3H12A Proteins 0.000 description 1
- 240000003537 Ficus benghalensis Species 0.000 description 1
- 101001003187 Hordeum vulgare Alpha-amylase/subtilisin inhibitor Proteins 0.000 description 1
- 241000359496 Kaistibacter Species 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000002730 additional effect Effects 0.000 description 1
- 238000004026 adhesive bonding Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003542 behavioural effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 229960000846 camphor Drugs 0.000 description 1
- 229930008380 camphor Natural products 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 229910052729 chemical element Inorganic materials 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000011157 data evaluation Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000012530 fluid Substances 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 206010023497 kuru Diseases 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000002250 progressing effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000009966 trimming Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30054—Unconditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
- G06F9/4484—Executing subprograms
- G06F9/4486—Formation 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)
- Devices For Executing Special Programs (AREA)
- Multi Processors (AREA)
Description
【発明の詳細な説明】
[発明の背景]
[発明の分野]
本発明は、並列プロセッサコンピュータシステムに関
し、特定すると、命令ストリーム内の、自然の同時的発
生、すなわち少なくとも二つの命令が他のいずれの命令
の処理とも干渉することなく同時に処理され得るような
命令の発生、を検出するためのソフトウェアを有しかつ
検出されたこうした命令をを処理するための複数のプロ
セッサ要素を設ける並列プロセッサコンピュータシステ
ムに関する。 ここで、自然の同時的発生、すなわち少なくとも二つ
の命令が他のいずれの命令の処理とも干渉することなく
同時に処理され得るような命令の処理は、たとえば、
“a=b+c"という簡単な例を考えると、本発明のシス
テムは“b"および“c"を同時にロードでき、その後、加
算を行って“b"および“c"の和の発生が生じる場合であ
る。それから和を“a"に格納する段階が続く。この2つ
のロード動作が命令から生ずる自然の同時的発生といわ
れるものである。本発明は、複数の命令が同時に実行さ
れる場合にプログラムにおけるかかる自然に生ずる状態
の存在を認識でき、プログラムの実行の時間を節約でき
るシステムに向けられるものである。 [従来の技術] ほとんどすべての従来のコンピュータシステムは、
「Von Neamann」構造より成る。事実、最初の4世代の
コンピュタは、データを逐次処理するために単一の大形
のプロセッサを使用するVon Neumann型マシンであっ
た。近年、Von Neumann型でない第5世代コンピュータ
の創生にかなりの努力が向けられて来ている。いわゆる
第5世代のコンピュータの1つの特徴は、多数のプロセ
ッサ要素を使用することにより並列計算を遂行できる能
力に関係する。超大規模集積(VLSI)の技術の進歩とと
もに、多数の個々のプロセッサ要素の使用の経済的価格
はその価格効率が高くなる。 実際の第5世代のマシンが構成されているかいないか
は議論のあるところであるが、種々の特徴が定義され、
分類されて来た。第5世代マシンは、単に第4世代マシ
ンの典型である単一命令、マルチプルデータでなく、マ
ルチプル命令、マルチプルデータ(MIMD)ストリームを
使用できなければならない。本発明は第5世代非Von N
eumann型より成る。本発明は、シングルコンテクスまた
はマルチプルコンテクストにおいてMIMDストリームを使
用できる(SC−MIMDまたはMC−MIMD)。これらの用語は
以下で定義かれる通りである。本発明はまた、シングル
コンテクストSIMD(SC−SIMD)マシンおよびマルチプル
コンテクストSIMD(MC−SIMD)ならびにシングルコンテ
クスト、シングル命令、シングルデータ(SC−SISD)マ
シンおよびマルチコンテクスト、シングル命令、シング
ルデータ(MC−SISD)マシンの全コンピュータの分類に
おいて応用を有するものである。 第5世代コンピュータシステムの設計は完全に流動状
態にあるが、特定のカテゴリのシステムが画定されて来
ている。斯界の研究者の中には、コンピュータの形式
を、システムの「制御」または「同期」が遂行される態
様に基づいて分けているものがいる。制御による分類に
は、制御駆動、データ駆動および低減(命令)駆動が含
まれる。制御駆動システムは、従属プロセッサによる処
理を制御するために、プログラムカウンタまたはマスタ
プロセッサのような集中化制御装置を利用する。制御駆
動マシンの例は、Columbia大学のNon−Von−1マシンで
ある。データ駆動システムにおいては、システムの制御
は、処理のために必要とされるデータの実際の到着から
行なわれる。データ駆動マシンの例は、Ian Wastsonに
より英国で開発されたManchester大学データフローマシ
ンである。低減駆動システムは、処理されたアクティビ
ティ要求が生ずるとき処理を制御する。低減プロセッサ
の例は、North Corolina大学で開発されつつあるMAGO
低減マシンである。Non−Von−1マシン、Manchesterマ
シンおよびMAGO低減マシンの特徴は、Davisの「conpute
r Archifecture」、IEEE Spectrum、1983年11月発
行、に論述されている。比較すると、データ駆動システ
ムおよび要求駆動システムは非集中化手法であり、制御
駆動システムは集中化手法を表わす。本発明は、「時間
駆動」と称することができる第4の分類に入れるのがよ
り適正である。本発明の制御システムは、データ駆動シ
ステムおよび命令駆動システムと同様に非集中化されて
いる。しかしながら、本発明では、制御駆動システムと
同様に、1つのアクティビティが実行の用意が整ってい
るとき処理が行なわれる。 並列処理の概念を含む殆んどのコンピュータシステム
は、多数の異なる形式のコンピュータアーキテクチャか
ら派生して来た。この場合、コンピュータアーキテクチ
ャの独特の性質のため、それ自信の処理言語、または既
存の言語が使用に適合するように相当変更されることを
要求される。この種のコンピュータアーキテクチャの高
度に平行化された構造を利用するため、プログラムは、
必要なソフトウェアを書くためにコンピュータアーキテ
クチャの親密な知識を有することが必要とされる。この
結果、これらの機械のプログラムの作成は、使用者の相
当量の努力と費用と時間を必要とする。 この活動と同時に、特定のアーキテクチャと無関係
に、新しいソフトウェアおよび言語の創生についての研
究が進行してきている。これは、より直接的態様で計算
プロセスの固有の平行化を解決するであろう。しかしな
がら、スーパーコンピュータの設計におけるたいていの
努力は、新しいハードウェアの開発に集中されており、
新しいソフトウェアに向けられた努力はずっと少ない。 Davisは、第5世代マシンの設計の最良の手法は、ソ
フトウェアにおける同時的プログラムタスクをコンピュ
ータアーキテクチャの物理的ハードウェア資源にマッピ
ングすることに努力を集中すべきであると推測した。Da
visは、この手法を「タスク割当て」の1つと名づけ、
第5世代アーキテクチャ成功の究極的なキーであると強
調する。彼は、割当ての方式を2つの一般的形式に分類
する。「スタティック割当て」は、実行前に一度遂行さ
れ、「ダイナミック割当て」は、プログラムが実行すな
わちランされるたびにハードウェアにより遂行される。
本発明は、スタティック割当て方式を利用し、編集後お
よび実行前に所与のプログラムに対してタスクの割当て
を行なう。第5世代マシンの設計における「タスク割当
て」手法の確認は、Vtah大学で構成された「Data−driv
enMahine−II」の設計でDavisにより行なわれた。「Dat
a−driven Machine−II」において、プログラムは、実
際のマシングラフまたはアーキテクチャを疑似するプロ
グラムグラフに編集された。 タスク割当てはまた、Gajski等の「Essential Issue
sin Multi−processor Systems」なる論文、Compute
r、1985年6月発行、において「スケジューリング」と
呼ばれている。Gajski等は、スケジューリングのレベル
について記載し、高レベルスケジューリング、中間レベ
ルスケジューリングおよび低レベルスケジューリングを
含むとした。本発明は、低レベルスケジューリングの1
つであるが、「ファースト−イン−ファースト−アウ
ト」、「ラウンド−ロビン」、「ショーティスト・タイ
プ・イン・ジョブ−ファースト」または「ショーティス
ト・リメインニング−タイム」の従来のスケジューリン
グの方策を利用しない。Gajski等はまた、オーバーヘッ
ドコストがコンパイル時間に払われるという点でスタテ
ィックスケジューリングの利用を認めている。しかしな
がら、Gajski等は、スタティックスケジューリングに関
して、各タスクのラン時間特性を推測する上で不効率が
あり得るという不利益を確認した(本発明においてはこ
れが存在しない)。それゆえ、Occam言語やBulldogコン
パイラにおいて見出される低レベルスタティックスケジ
ューリングに対する従来のアプローチは、本発明のソフ
トウェア部分には存在しない。実際に、本発明の低レベ
ルスタティックスケジューリングはランタイム時におけ
るマシンによるダイナミックスケジューリングにおいて
一般に見られるのと同じ形成でのプロセッサの利用、あ
るいはそれより十分の利用を可能する。さらに、本発明
の低レベルスタティックスケジューリングは、(例え
ば)OCCAM言語において必要とされるプログラマの介入
なしに自動的に遂行される。 Davisは、さらに、システムの実際の物理的トポロジ
ーがシステムの全性能に相当の影響を及ぼすという点に
おいて同時処理において通信が重要な特徴であることを
認めている。 例えば、たいていのデータフローマシンに見られる基
本的問題は、プロセッサ間においてデータを動かすのに
要する多量の通信オーバーヘッドコストである。データ
がバスを介して移動される場合には、データがバスにア
クセスするのに競合しなければならないから、相当のオ
ーバヘッドと、場合によってはシステムの劣化をもたら
すおそれがある。例えば、Davisの論文において言及さ
れるArvindデータフローマシンは、データを1位置に残
存させるためエーストラクチャストリームを利用する。
しかして、このデータは、その後全プロセッサによりア
クセス可能となるものである。本発明は、その一側面と
して、ハードウェアおよびソフトウェアを用い、ハード
ウェア資源を全体的に結合することに基づき、マルチ処
理を遂行するシステムに本質的に存在する通信の問題を
相当に簡単化する方法を教示する。 非Von Neumann型マルチプロセッサシステムの他の特
徴は、処理されつつある並列化の粗さのレベルである。
Gajski等はこれを「パーティショニング(区分化)」と
称した。Gajski等によるシステムの設計における目標
は、最低のオーバーヘッドコストでできるだけ並列化を
得ることである。本発明は、利用可能な最低のレベル
で、すなわち「命令当り」レベルで同時処理を遂行す
る。本発明の他の側面によれば、この並列化レベルを実
行時間オーバーヘッドコストなしに得る方法が得られ
る。 マルチプロッセッサ並列マシンに関してなされたすべ
ての成果に拘らず、Davisは、この種のソフトウェアや
ハードウェアが、主として個々のタスクに対して設計さ
れたものであり、Von Neumannアーキテクチャに関して
折紙つきであったすべての形式のタスクやプログラムに
対して可能的に適当でないことを認めた。本発明は、一
般的に多くの異なる形式のタスクに適当なコンピュータ
システムおよび方法に開示するものである。何故なら
ば、本システムおよび方法は、非常に繊細な粗度で命令
ストリームに存在する、他のいずれの命令の処理とも干
渉することなく同時に処理され得るような2以上の命令
に作用するからである。 すべての汎用コンピュータシステムおよび多くの専用
コンピュータシステムは、マルチアクティビティまたは
プログラムの処理を支持する動作システムまたはモニタ
/制御プログラムを有する。ある場合には、この処理は
同時に起こる。他の場合には、処理はアクティビティ間
で交番し、1時に1つのアクティビティのみが処理用資
源を制御することもある。この後者の場合は、特定のコ
ンピュータシステムに依存して、時分割、時スライシン
グまたは同時的(完全同時ではない)発生的実行と称さ
れることが多い。また、これらのアクティビティまたは
プログラムは、特定のシステムに依存して、普通、タス
ク、プロセスまたはコンテクストと呼ばれる。すべての
場合とも、種々のプログラム間、およびプログラムと動
作系間の制御のスイッチングを維持するための方法が存
在する。このスイッチングは、普通、タスクスイッチン
グ、プロセススイッチングまたはコンテクストスイッチ
ングと呼ばれる。本明細書を通じて、これらの用語は類
似語と考えられ、コンテクストおよびコンテクストスイ
ッチングなる用語を一般に使用してある。 それゆえ、本発明は、1または複数の異なる使用者
(ユーザ)により多くの異なる従来のプログラムに基づ
いて同時に動作し得る非Von Neumann型MIMDコンピュー
タシステムに関する。各プログラムの他のいずれの命令
の処理とも干渉することなく同時に処理され得るような
2以上の命令は、非常に細かいレベルの粗度でスタティ
ックに割り当てられ、そして本質的に目的コードレベル
で命令ストリームにインテリジェンスが加えられる。加
えられるインテリジェンスは、例えば、本発明のための
時間駆動非集中化制御を提供するため、論理プロセッサ
番号および命令発火時間を含むことができる。他のいず
れの命令の処理とも干渉することなく同時に処理され得
るような2以上の命令の検出および低レベルスケジュー
リング、およびインテリジェンスの追加は、所与のプロ
グラムに対して1回のみ、プログラムの従来の編集後実
行前にユーザの介入なしに行なわれる。このスタティッ
クな割当ての結果は、複数のプロセッサ要素を含むシス
テムで実行される。本発明の1実施例において、プロセ
ッサは同一である。この例示の実施例におけるプロセッ
サ要素は、種々の命令の実行から得られる実行状態情報
を含まない。すなわち、プロセッサ要素はコンテクスト
フリーである。加えて、複数のコンテクストファイルが
各ユーザーに1つずつ設けられ、複数のプロセッサ要素
は、命令の処理中、プロセッサ要素を共有資源に全体的
に結合することにより、任意のコンテクストファイルに
含まれるどの記憶資源にでもアクセスできる。本発明の
好ましい側面においては、条件コードまたは結果レジス
タは、個々のプロセッサ要素に存在しない。 [発明の概要] 本発明は、非Von Neumann型であり、シングルまたは
マルチプルコンテクストSISD、SIMDおよびMIMD型態での
使用に適合される方法およびシステムを提供するもので
ある。本発明の方法およびシステムは、無数の従来形式
のプログラムに使用者の介入なしに作用し得る。 本発明の一側面によれば、非常に細かいレベルの粗度
にて、プログラムの基本ブロック(BB)における、他の
いずれの命令の処理とも干渉することなく同時に処理さ
れ得るような2以上の命令が本質的に目的コードレベル
でスタティックに決定され、時間駆動非集中化制御を提
供するため、各基本ブロックにおける命令ストリームに
インテリジェンスが加えられる。他のいずれの命令の処
理とも干渉することなく同時に処理され得るような2以
上の命令の検出および低レベルスケジューリングおよび
インテリジェンスの付加は、従来の編集後、実行前に所
与のプログラムに対して一度のみ行なわれる。この時点
に、すなわちプログラムの実行前、後刻の全命令資源の
実行中の使用が割り当てられる。 本発明の他の側面によれば、追加されたインテリジェ
ンスを含む基本的ブロックが、この特定の実施例におい
ては以前の動作からの実行状態情報を各々保持しない複
数のプロセッサ要素を含むシステム上で実行される。そ
れゆえ、本発明のこの実施例による全プロセッサ要素は
コンテクストなしである。命令は、命令発火時間に基づ
き実行のために選択される。本実施例における各プロセ
ッサ要素は、従属の命令が同一または異なるプロセッサ
要素で実行され得るように、命令毎方式で命令を実行で
きる。本発明の所与のプロセッサ要素は、1つのコンテ
クストからの命令、続いて他のコンテクストからの命令
を実行できる。そのとき、所与の命令を処理するために
必要なすべての動作およびコンテクスト情報は、システ
ムの他のところに包含されている。 コンテクストフリープロセッサ要素の多くの代替的実
施が可能であることを留意されたい。非パイプライン式
実施においては、各プロセッサ要素はモノリシックであ
り、単一の命令を次の命令を受け入れる前にその完了ま
で実行する。 本発明の他の側面においては、コンテクストフリープ
ロセッサは、パイプライン結合プロセッサ要素であり、
この場合、各命令は完了まで数マシン命令クロックサイ
クルを必要とする。一般に、各クロックサイクル中、新
しい命令がパイプラインに入り、完了した命令がパイプ
ラインを出、単一の命令クロックサイクルの有効な命令
実行時間を与える。しかしながら、若干の命令をマイク
ロコード化して、多くのマシン命令サイクルを必要とす
る複雑な機能を遂行することもできる。この場合、新し
い命令の入りは、複雑な命令が完了してしまうまで一時
停止され、その後、各クロックサイクル内の通常の命令
入りおよび出シーケンスが継続する。パイプライン結合
は、標準プロセッサ実施技術であり、後で詳しく論述す
る。 本発明のシステムおよび方法は、以下の説明および図
面で詳しく説明される。 [図面の説明] 本発明のその他の目的、特徴および利点は、以下の説
明から明らかとなろう。 第1図は本発明のTOLLソフトウェアの一般化されたフ
ローチャートである。 第2図は従来のコンパイラ出力内に存在する逐次の一
連の基本ブロックの線図である。 第3図は本発明の1実施例にしたがい各基本ブロック
に加えられる延長インテリジェンスの線図である。 第4図は本発明の1実施例にしたがい所与の基本ブロ
ック内の各命令に加えられる延長インテリジェンスの詳
細を示す線図である。 第5図は基本ブロックの別個の実行セットへの分割を
示す線図である。 第6図は本発明の好ましい実施例による装置のアーキ
テクチャ構造のブロック図である。 第7a〜7c図は3つの逐次の命令発火時間中におけるネ
ットワーク相互接続を示す線図である。 第8〜11図は本発明の1実施例のソフトウェアの特徴
を記述するフローチャートである。 第12図はTOLLソフトウェアにおける実行セットの1つ
の好ましい形式を記述する線図である。 第13図は本発明の好ましい実施例によるレジスタファ
イル組織を表わす線図である。 第14図はサブルーチン呼び中における異なるレベルに
あるレジスタ間の切替えを示す線図である。 第15図は本発明の好ましい実施例の論理的資源ドライ
バ(LRD)の構造を示すブロック図である。 第16図は本発明の好ましい実施例の命令キャッシュ制
御装置およびキャッシュの構造を示すブロック図であ
る。 第17図は本発明の好ましい実施例のPIQバッファ装置
およびPIQバスインターフェース装置の構造を示すブロ
ック図である。 第18図は本発明の好ましい実施例によるプロセッサ要
素からPE−LRDネットワークを経てPIQプロセッサ整列回
路に至る相互接続を示すブロック図である。 第19図は本発明の好ましい実施例のブランチ実施装置
の構造を示すブロック図である。 第20図は本発明の好ましい実施例のコンテクストファ
イル状態コードメモリの組織を示す線図である。 第21図は本発明のパイプライン結合プロセッサ要素の
1実施例の構造を示すブロック図である。 第22a〜22d図は第21図のプロセッサ要素と関連して使
用されるデータ構造を示す線図である。 [一般的説明] [1.イントロダクション] 以下の2節において、本発明のソフトウェアおよびハ
ードウェアの一般的説明を行なう。本発明のシステム
は、ハードウェアおよびソフトウェア要素間の独特な関
係に基づいて設計される。多くの従来技術によるアプロ
ーチは、主として、新規なアーキテクチャ設計または独
特のソフトウェアアルゴリズムに基づいてマルチプロセ
ッサによる並列処理に向けられていたが、本発明は独特
のハードウェア/ソフトウェア関係に基づく。本発明の
ソフトウェアは、ハードウェアを通る命令ストリームの
ルート設定および同期のためインテリジェント情報を提
供する。これらのタスクの遂行において、ソフトウェア
は、使用者がアクセス可能な資源、例えばジェネラルレ
ジスタ、状態コード記憶レジスタ、メモリおよびスタッ
クポインタを空間的および一時的に管理する。ルート設
定および同期は、使用者の介入なしに遂行され、オリジ
ナルソースコードへの変更を必要としない。加えて、命
令ストリームを分析して、命令ストリームのルート設定
および同期を制御するために追加のインテリジェンス情
報を提供することは、所与ソフトウェア部分のプログラ
ム準備プロセス(いわゆる「スタテック割当て」)中の
み遂行され、ある種の従来技術の手法に見られるように
実行中は遂行されない(実行中の遂行は「ダイナミック
割当て」)という。本発明により行なわれる分析は、ハ
ードウェア依存性であり、従来のコンパイラからの目的
コード出力で遂行され、それゆえ有利なことにプログラ
ム言語依存性でない。 換言すれば、本発明によれば、シフトウェアは、目的
コードプログラムをシステムのハードウェア上に変換
し、システムが従来のシステムを代表する効率よりも一
層効率的に実行するようにする。それゆえ、ソフトウェ
アは、すべてのハードウェアの個性およびプログラム命
令ストリームの実行に及ぼすそれらの影響を取り扱わね
ばならない。例えば、ソフトウェアは、必要なとき、モ
ノリシックな単一サイクルまたはパイプライン結合され
たプロセッサ要素に順応しなけらばならない。 [2.一般的なソフトウェアの説明] 第1図を参照すると、一般的にTOLLと称される本発明
のソフトウェアは、コンピュータ処理システム160に配
置されている。処理システム160は標準的コンパイラ出
力100で動作するが、この出力は、普通、「P−Code」
のような代表的目的コードまたは中間目的コードであ
る。従来形式のコンパイラの出力は、以下において命令
ストリームとして言及される目的コード命令の順次スト
リームである。従来形式言語プロセッサは、普通、逐次
命令ストリームを生成する際下記の機能を遂行する。 1:入力テキストの辞書的なスキャン。 2:記号表構造を含む凝縮された入力テキストの構文スキ
ャン。 3:並列化検出およびベクトル化を含むマシンと独立の最
適化の遂行。 4:命令の機能性、必要とされる資源およびハードウェア
の構造的特性を考慮に入れる中間(PSEUDO)コード生
成。 逐次命令ストリームの創成において、従来形式のコン
パイラは、一連の基本ブロック(BB9を創成するが、こ
れは単一エントリ、単一エグジット(SESE)の複数群の
連続命令である。例えば、Alfred V.AhoおよびJeffery
D.Ullmanの「Principles of Compiler Design」、
Addison Wesley、1979年発行pg.6,409,412−413および
David Griesの「Compiler Construction for Digit
al Computers」、Wiler、1971年発行、参照。従来のコ
ンパイラは、そのタスクの遂行において基本ブロック情
報を利用するが、如何なる基本ブロック指示なしにも逐
次命令の出力ストリームを供給する。本発明の例示の具
体例におけるTOLLソフトウェアは、従来のコンパイラ内
で創成される形成された基本ブロック(BB)上で動作す
るように設計される。従来のSESE基本ブロックの各々に
おいては、正確に1つのブランチがあり(ブロックの終
りに)、制御の従属性はない。ブロック内の唯一の関係
する依存性は、命令により必要とされる資源間の依存性
である。 基本ブロックフォーマットのコンパイラ100の出力
は、第2図に例示されている。第1図を参照すると、コ
ンピュータ160において処理されつつある本発明のTOLL
ソフトウェア110は、コンパイラ出力100に3つの基本的
決定機能を遂行する。これらの機能は、命令の資源を分
析すること、各基本ブロック130の各命令に対してイン
テリジェンスを延長すること、および1または複数の基
本ブロック140より成る実行セットを造ることである。
プロセッサ100から得られるこれら3つの基本的機能12
0、130および140の出力は、本発明のTOLLソフトウェア
出力150である。 上述のように、本発明のTOLLソフトウェアは、一度の
み使用者の介入なしにコンパイラ出力100に使用する。
それゆえ、任意の所与のプログラムに対して、TOLLソフ
トウェアは、コンパイラ出力100に一度だけ作用するこ
とを必要とする。 TOLLソフトウェア100の機能120、130、140は、各基本
ブロック内の命令ストリームを、他のいずれの命令の処
理とも干渉することなく同時に処理され得るような2以
上の命令について分析し、命令ストリームの本発明の実
際のハードウェアシステム上へのマッピングを遂行し、
マッピングプロセスから生ずるかも知れないハードウェ
アにより誘導される個性を軽減し、得られた命令ストリ
ームを本発明のハードウェアとともに使用されるべき実
際のマシン言語にコード化し、TOLLソフトウェア110
は、命令ストリームを分析し、その結果としてプロセッ
サ要素および資源を割り当てることによりこれらの機能
を遂行する。特定の1実施例において、プロセッサはコ
ンテクストフリーである。TOLLソフトウェア100は、例
えば出力命令ストリームの各命令に適当な発火時間を割
り当てることにより、全システムの「同期」を行なう。 命令は、3つの基本的形式の依存性しかないが、種々
の方法で相互に依存性とし得る。第1に、命令ストリー
ムの実際の構造に起因して手順的な依存性がある。すな
わち、命令は、互いに、ブランチ、ジャンプなどに起因
して逐次以外の順序で続く。第2に、動作の依存性は、
システムに依存する有限数のハードウェア要素に起因す
る。これらのハードウェア要素としては、汎用レジス
タ、状態コードメモリ、スタックポインタ、プロセッサ
要素およびメモリなどがある。それゆえ、2つの命令が
並列に実行されるべきときは、両命令が同じハードウェ
ア要素を読んでいないかぎり(もちろん要素は同時に読
まれることができることを条件とする)、これらの命令
は同じハードウェア要素を要求してはいけない。最後
に、命令ストリームの命令間にデータ依存性が存在す
る。この形式の依存性については後で詳しく論述する
が、プロセッサ要素がパイプライン結合プロセッサを含
む場合特に重要である。一方、基本的ブック内には、デ
ータ依存性および操作上の依存性のみが存在する。 TOLLソフトウェア110は、プログラムの適正な実行を
維持しなければならない。それゆえ、TOLLソフトウェア
は、並列に実行される命令を表わすコード出力150が原
直列コードの結果と同じ結果を生成することを保証しな
ければならない。これをなすため、コード150は、相互
に依存性の命令に対する直列コードと同じ相対順序で資
源にアクセスしなければならない。すなわち、相対順序
が満足されねばならない。しかしながら、独立の命令の
組を順序外で有効に実行できる。 第1表には、マトリクス乗算ルーチンの内部ループを
表わすSESE基本ループの例が記載してある。この例は本
明細書を通じて使用されるが、本発明の教示は任意の命
令ストリームに応用し得る。第1表において、命令指示
は右手列に記載されており、この基本ブロックに対する
従来形式の目的コード機能表示は左手列に表わされてい
る。 第1表 目的コード 命令 LD R0,(R10)+ I0 LD R1,(R11)+ I1 MM R0,R1,R2 I2 ADD R2,R3,R3 I3 DEC R4 I4 BRN2R LOOP I5 第1表に記載されるSESE基本ブロックに包含される命
令ストリームは、下記の機能を遂行する。命令I0におい
ては、レジスタR0が、そのアドレスがR10に含まれるメ
モリの内容でロードされる。 上述の命令は、アドレスがR10から取り出された後、R
10の内容をインクリメントする。命令I1についても同じ
ステートメントがなされ得る。ただし、この場合、レジ
スタR1がロードされ、レジスタR11がインクリメントさ
れる。命令I2は、レジスタR0およびR1の内容を乗算せし
め、その結果がレジスタR2に記憶される。命令I3におい
ては、レジスタR2とレジスタR3の内容が加算され、その
結果がレジスタR3に記憶される。命令I4においては、レ
ジスタR4がデクリメントされる。命令I2、I3およびI4は
また、それらのそれぞれの状態を反映する1組の状態コ
ードを発生させる。命令I5において、レジスタR4の内容
が間接的に0について試験される。(命令I4により発生
される状態コードにより)。デクリメント動作が非0値
を発生させると、ブランチが生ずる。その他の場合は、
実行は、次の基本ブロックの最初の命令に関して進行す
る。 第1図を参照すると、TOLLソフトウェア110により遂
行される最初の機能は、命令の資源利用を分析すること
である。例示の実施例においては、第1表の命令I0〜I5
が存在する。かくして、TOLLソフトウェア110は、各命
令を分析して、命令の資源要求を確める。 この分析は、いずれかの資源がいずれかの命令により
共有されるか否か、それゆえ命令が相互に独立であるか
否かを決定する上において重要である。相互に独立の命
令は並列に実行でき、「自然に同時的」と呼ばれる。さ
らに換言すると、「自然の同時的発生」は「命令ストリ
ーム内の少なくとも二つの命令が他のいずれの命令の処
理とも干渉することなくあるいはその処理を遅延される
ことなく同時に処理され得る命令」を意味する。独立の
命令は並列に実行でき、如何なる情報についても相互に
依存せず、リードオンリー態様以外の態様において如何
なるハードウェア資源をも共有しない。 他方、相互に依存性の命令は、1セットに形成される
が、各セットの各命令は、そのセットの1つの置きの命
令に依存する。依存性は直接的でなくてよい。セット
は、セット内の命令によって、または逆にセット内の命
令により使用される資源によって記述できる。異なるセ
ット内の命令は完全に相互に独立である。すなわち、セ
ットにより共有される資源はない。それゆえ、セットは
互いに独立である。 第1表の例において、TOLLソフトウェアは、依存性の
命令の2組の独立のセットが存在することを決定するで
あろう。 セット1 CC1:I0、I1、I2、I3 セット2 CC1:I4、I5 理解できるように、命令I4およびI5は、命令I0−I3と
無関係である。セット2において、I5はI4に直接的に依
存している。セット1において、I2はI0およびI1に直接
依存している。命令I3はI2に直接依存しており、I0およ
びにI1に間接的に依存している。 本発明のTOLLソフトウェアは、依存性の命令より成る
これらの独立のセットを検出して、各セットにCC1およ
びCC2のような指示状態コード群を割り当てる。これに
より、命令ストリームに対して1群または1セットの状
態コードしか利用できなかったなら起こるであろう動作
上の依存性は避けられる。 換言すれば、命令I0およびI1の実行の結果は、命令I2
の実行に必要とされる。同時に、命令I2の実行の結果
は、命令I3の実行に必要とされる。この分析の遂行に際
して、命令が資源に対して読取りおよび/または書込み
を遂行するかどうかを決定する。この機能は、命令スト
リームの資源要求分析と称される。 従来の教示と異なり、本発明は、依存性の命令が同じ
プロセッサ要素上で実行されることを必要としないこと
を教示していることに留意されたい。依存性の決定は、
追って記述するように、状態コードセットを決定し命令
発火時間の決定のためにのみ必要とされる。本発明の例
示の1実施例においては、異なるプロセッサ要素につい
て依存性の命令を実行し得る。これは、プロセッサ要素
のコンテクストフリーの性質およびプロセッサ要素が全
体的に共有資源に結合されるためである。これについて
も後述する。 第1表に記載される列に対する分析ステップ120の結
果は、第2表に記載してある。 第2表 命令 機 能 I0 メモリ読取り、レジスタ書込み、レジスタ読取りおよび書込み I1 メモリ読取り、レジスタ書込み、レジスタ読取りおよび書込み I2 レジスタ2回読取り、レジスタ書込み、状態コード設定(Set#1) I3 レジスタ2回読取り、レジスタ書込み、状態コード設定(Set#1) I4 レジスタ読取り、レジスタ書込み、状態コード設定(Set#2) I5 状態コード読取り(Set#2) 第2表において、命令I0およびI1に対して、レジスタ
の読取りおよび書込みが行なわれ、続いてメモリの読取
り(別個のアドレスにて)レジスタの書込みが行なわれ
る。同様に、命令I2〜I4に対しては、状態コード書込
み、およびレジスタ読取りおよび書込みが行なわれる。
最後に、命令I5は、状態コード記憶レジスタの1回の読
取り、その結果ブランチまたはループが行なわれる。 SESE基本ブロック中の第2のステップまたはパス130
は、基本ブロック内において各命令にインテリジェンス
を付加ないし延長することである。これは、ストリーム
内の他の命令の実行時間に関する命令実行時間の割当
て、命令が実行されるべきプロセッサ番号の割当て、お
よび命令により必要とされ得るいわゆるスタティック共
有コンテクストストーリジマッピング情報の割当であ
る。 命令に発火時間を割り当てるため、命令により必要と
される各資源の一時的使用が考慮されねばならない。例
示の実施例において、各資源の一時的使用は、「フリー
タイム」および「ロードタイム」により特徴づけられ
る。フリータイムは、資源が命令により読取りまたは書
込みされた最後の時間である。ロード時間は、資源が命
令により変更された最後の時間である。命令が資源を変
更すべきとは、資源が使用された最後の時間後、換言す
るとフリータイム後変更を実行しなければならない。命
令が資源を読み取るべきときは、資源がロードされた最
後の時間後、すなわちロードタイム後読取りを遂行しな
ければならない。 各資源の一時的使用および資源の実施の使用間の関係
は下記のごとくである。命令が資源の書込み/変更を行
なうべきときは、資源が他の命令により読取りまたは書
込みされた最後の時間(すなわち、その資料に対する
「フリータイム」)プラス1時間間隔がこの命令に対す
る最先の発火時間となろう。このプラス1時間間隔は、
命令がフリータイム中なお資源を使用しているといる事
実に由来する。他方、命令が資源を読み取るときは、資
源が他の命令により変更される最後の時間(すなわちそ
の資源に対するロードタイム)プラス1時間間隔が最先
の命令発火時間となる。「プラス1時間間隔」は、実行
されるべきロードを遂行しつつある命令に対して必要な
時間から由来する。 上の論述は、アクセスされる資源の正確な位置が既知
であることを仮定している。これは、一般的レジスタお
よび状態コードメモリのごとく直接的に命名された資源
についてはつねに真である。しかしながら、メモリ動作
は、一般にコンパイル時に未知の位置にあるであろう。
実際のアドレス指定構造体により発生されるアドレスは
この種類に属する。先行の実施例においては、(TOLLの
基本的概念を明らかにするため)命令I0およびI1により
使用されるアドレスは別であると仮定した。もしもこれ
がそうでなければ、TOLLソフトウェアは、メモリを使用
しなかった命令のみが、メモリ内の未知の位置にアクセ
スしつつあった命令と並列に実行せしめられることを保
証するであろう。 命令発火時間は、命令が使用する各資源に対してTOLL
ソフトウェア110により評価される。これらの「候補」
発火時間は、ついでどれが最大またはもっとも遅い時間
かを決定するために比較される。もっとも遅い時間は、
命令に割り当てられる実際の発火時間を決定する。この
時点に、TOLLソフトウェア110は、命令に割り当てられ
る発火時間を反映させるように、資源のフリータイムお
よびロードタイムのすべてを更新する。TOLLソフトウェ
ア110は、ついで次の命令を分析するように進行する。 基本ブロック内の命令間依存性を決定するためには利
用可能な多くの方法がある。先の論述は、特定のコンパ
イラーTOLLパーティショニングを仮定するただ1つの可
能な実施例に過ぎない。技術に精通したものであれば、
多くの他のコンパイラーTOLLパーティショニングおよび
命令間の依存性を決定する方法が可能であり、実現でき
よう。それゆえ、例示されたTOLLソフトウェアは、基本
ブロック内のデータ依存性を表わすためにリンクリスト
分析を使用する。使用され得る他の可能なデータ構造
は、トリー、スタック等である。 命令間の依存性の分析および表示のためリンクリスト
表示が利用されるものと仮定する。各レジスタは、その
レジスタに含まれる値を使用する命令に対して1組のポ
インタと関連されている。第1表におけるマトリックス
乗算の例に対して、資源の利用が第3表に記載されてい
る。 それゆえ、「read by」リンクを追い、各命令に対す
る資源の利用状態を知れば、上のセット1および2の独
立性が、TOLL110により分析命令手段120(第1図)で構
成される。 第1表の例をさらに分析する目的で、基本ブロック
が、1つの命令ストリームの任意の時間間隔で、例えば
時間T16で始まるものと仮定する。換言すれば、時間シ
ーケンスにおけるこの特定の基本ブロックは、時間T16
でスタートすると仮定する。段階120における分析の結
果を第4表に記載する。 第4表 REG I0 I1 I2 I3 I4 I5 R0 T16 T17 R1 T16 T17 R2 T17 T18 R3 T18 R4 T16 CC1 T17 T18 CC2 T17 R10 T16 R11 T16 第4表における垂直方向は、一般的レジスタおよび状
態コード記憶レジスタを表わす。表における水平方向
は、第1表の基本ブロックの例の命令を表わす。表中の
エントリは命令によるレジスタの利用を表わす。かくし
て、命令I0は、時間T16、すなわち基本ブロックの実行
のスタート時にレジスタR10が読取りと書込みをされ、
レジスタR0が書き込まれることを必要とする。 本発明の教示に従う場合、レジスタR1、R11およびR4
も、時間T16の間遂行される動作をもち得ないという理
由はない。3つの命令I0、I1およびI4は互いにデータ独
立性であり、時間T16中同時的に実行できる。しかしな
がら、命令I2は、レジスタR0およびR1がロードされ、ロ
ード動作の結果が乗算され得るようにすることをまず必
要とする。乗算の結果はレジスタR2に記憶される。レジ
スタR2は時間T16において理論的に作用され得るが、命
令I2は、時間T16中に行なわれるレジスタR0およびR1の
ロードの結果にデータ依存性である。それゆえ、命令I2
の完了は、時間フレームT17の間、またはその後に起こ
るはずである。それゆえ、上の第4表において、命令I2
とレジスタR2の交叉点に対するエントリT17は、それが
データ依存性であるから下線を付してある。同様に、命
令I3は、時間T17中にまず起こるレジスタR2内のデータ
を必要とする。それゆえ、命令I3は、時間T18中または
その後のみレジスタR2に作用し得る。命令I5は、命令I4
により更新される状態コード命令CC2の読取りに依存す
る。状態コードメモリCC2の読取りは、時間T16に記憶さ
れる結果にデータ依存性であり、したがって次の時間T1
7中またはその後に行なわれるはずである。 それゆえ、段階130において、目的コード命令は、上
の分析に基づいて第5表に記載されるように「命令発火
時間」(IFT)が割り当てられる。 第5表 目的コード命令 命令発火時間 I0 T16 I1 T16 I2 T17 I3 T18 I4 T16 I5 T17 基本ブロックの逐次命令ストリームにおける各命令
は、割り当てられた時間間隔において遂行され得る。第
5表から明らかなように、通常6サイクルで逐次処理さ
れる第1表の同じ6つの命令が、本発明の教示によれ
ば、たった3つの発火時間T16、17およびT18で処理でき
る。命令発火時間(IFT)は、本発明の「時間駆動」の
特徴をもたらす。 例示の実施例における段階130により遂行される次の
機能は、命令発火時間(IFT)にしたがって命令ストリ
ームにおける自然的同時発生すなわち、少なくとも二つ
の命令が他の命令の処理と干渉することなく同時に処理
され得る命令を順序再整理し、ついで命令を個々の論理
並列プロセッサに割り当てることである。順序再整理
は、同時的に利用可能な技術の制約に起因してのみ必要
とされることに留意されたい。もしも真に十分の関連す
るメモリが利用可能であれば、ストリームの順序再整理
は必要とするものでなく、プロセッサの番号は、先着順
サービスの態様で割り当てることができよう。命令選択
機構のハードウェアは、この動作モードを取り扱うため
技術に精通したものであれば適当に変更できよう。 例えば、同時的に、利用可能な技術、ならびに4つの
並列プロセッサ要素(PE)を有し各LRD内に1つのブラ
ンチ実行装置(BEU)が設けられるシステムを仮定する
と、プロセッサ要素およびブランチ実行装置は、本発明
の教示によると以下の第6表に記載されるように割り当
てることができる。プロセッサ要素がすべての非ブラン
チ命令を実行し、他方本発明のブランチ実行装置(BE
U)がすべてのブランチ命令を実行することに留意され
たい。これらのハードウェア回路については、追って詳
細に説明する。 第6表 論理プロセッサ番号 T16 T17 T18 0 I0 I2 I3 1 I1 −− −− 2 I4 −− −− 3 −− −− −− BEU −− I5(遅延) −− それゆえ、本発明の教示にしたがうと、時間T16の
間、並列プロセッサ要素0、1および2が命令I0、I1お
よびI4をそれぞれ同時に処理する。同様に、次の時間T1
7中、並列プロセッサ要素0およびBEUが、命令I2および
I5をそれぞれ同時に処理する。そして最後に、時間T18
中、プロセッサ要素0が命令I3を処理する。命令発火時
間T16、T17およびT18の間、並列プロセッサ要素3は第
1表の例に利用されない。実際に、最後の命令がブラン
チ命令であるから、命令I3に対して時間T18中に最後の
処理が完了するまでブランチは起こり得ない。遅延フィ
ールドが命令I5の処理中に形成されており、命令I5が時
間T17内(最先可能時間)で処理されてさえ、命令I3が
実行された後ループないしブランチが起こるようにその
実行が遅延されるようになされている。 要約すると、本実施例のTOLLソフトウェア110は、段
階130において、各個々の命令およびその資源の使用状
態をその形式および位置(既知ならば)について試験す
る(例えば第3表)。ソフトウェアは、ついで、この資
源使用状態に基づいて命令発火時間を割り当て(例えば
第4表)、これらの発火時間に基づいて命令ストリーム
5を記録し(例えば第5表)、その結果として論理的プ
ロセッサ番号(LPN)を割り当てる(例えば第6表)。 例示の実施例においては、論理的プロセッサ番号(LP
N)および命令発火時間(LFT)を含む延長されたインテ
リジェンス情報が、第3図および第4図に示されるごと
く、基本ブロックの各命令に付加される。また、追って
詳述されるように、基本ブロック(BB)の各命令に対す
る延長されたインテリジェンス(EXT)は、本発明の実
際の物理的プロセッサと相関づけられる。相関は、シス
テムハードウェアにより遂行される。実際のハードウェ
アは、論理的プロセッサ要素の数より小数、それと同
数、またはそれより多数の物理的プロセッサ要素を含ん
でよいことに注目することが重要である。 本発明のこの例示の実施例における各命令に付加され
る第4図に示される共有のコンテクスト・ストーリジマ
ッピング(SCSM)情報は、スタティックおよびダイナミ
ック成分を有する。SCSM情報のスタティック成分は、TO
LLソフトウェアまたはコンパイラにより付加されるもの
であり、命令ストリームのスタティック分析の結果であ
る。ダイナミック情報は、追って論述されるように論理
的資源ドライバ(LRD)により実行時間付加される。 この段階130にて、例示のTOLLソフトウェア110は、命
令ストリームを、別個のプロセッサ要素(PE)により個
々に処理され得る同時的発生すなわち、少なくとも二つ
の命令が他の命令の処理と干渉することなく同時に処理
され得る命令に対して1組の単一エントリ、単一エグジ
ット(SESE)基本ブロック(BB)として分析し、各命令
に、命令発火時間(IFT)および論理的プロセッサ番号
(LPN)を割り当てた。このように、本発明にしたがえ
ば、命令ストリームは、実行に先立ちすべての処理用資
源をスタティックに割り当てるため、TOLLソフトウェア
によりプレ処理される。これは、所与のプログラムにつ
いて一度なされ、そしてFORTRAN、COBOL、PASCAL、BASI
C等の多数の異なるプログラム言語のいずれにも応用し
得る。 第5図を参照すると、一連の基本ブロック(BB)が単
一の実行セット(ES)を形成し得ることが示されてお
り、TOLLソフトウェア110が、段階140においてかかる実
行セット(ES)を形成する。一度TOLLソフトウェアが実
行セット500を識別すると、セットの始まりおよび終わ
りに、ヘッダ510および/またはトレイラ520情報が付加
される。好ましい具体例においては、セットの始まりに
1つのヘッダ情報510が付加されるが、本発明はそれに
制限されるものではない。 本発明にしたがうと、基本ブロックは、一般に命令ス
トリームにおいて相互に相続いている。上述のごとく、
基本ブロック内の個々の命令が再整理され、延長された
インテリジェンス情報が割り当てられても、基本ブロッ
クを再整理の必要はなくてよい。各基本ブロックは、単
一エントリ単一エグジット(SESE)であり、ブランチ命
令を介してのエグジットをもつ。普通、他の命令へのブ
ランチは、ブランチの400の命令のごとく局部的近傍内
にある。実行セットを形成する(段階140)目的は、実
行セット内で出ることができる基本ブロックの最小数を
決定することであり、これにより命令キャッシュ障害の
数は最小化される。換言すると、所与の実行セットにお
いて、実行セットのブランチすなわち切替えは統計的に
最小とされる。TOLLソフトウェアは、段階140におい
て、この線形プログラミング様の問題、すなわちブラン
チ距離等に基づく問題を解決するための多数の従来の技
術を利用し得る。この目的は、追って論述されるよう
に、実行セットをハードウェアキャッシュに入れること
ができるように第5図に示されるごとく実行セットを定
めることであり、それにより命令キャッシュ障害(すな
わち命令セットの切替え)は最小化される。 上述したものは、単一のコンテクストの応用における
TOLLソフトウェアの例(第1〜6表を使って例示され
る)である。本質的に、TOLLソフトウェアは、所与のプ
ログラム内の各基本ブロックについて命令ストリーム内
の他のいずれの命令の処理とも干渉することなく同時に
処理され得るような2以上の命令を決定する。例示の実
施例において、TOLLソフトウェアは、決定される他のい
ずれの命令の処理とも干渉することなく同時に処理され
得るような2以上の命令の発生にしたがって、各命令に
命令発火時間(IFT)および論理処理命令(LPN)を付加
する。すべての処理用資源は、処理に先立ってスタティ
ックに割り当てられる。本発明のTOLLソフトウェアは、
多数の同時に実行する異なるプログラムと関連して使用
できる。しかして、各プログラムは、追って説明される
ように、本発明の処理システム上で同じ使用者または異
なる使用者により使用される。 [3.ハードウェアの一般的説明] 第6図を参照すると、TDAシステムアーキテクチャ600
と称される本発明のシステムアーキテクチャのブロック
ダイヤグラムは、ネットワーク630を介して複数の論理
的資源ドライバ(LRDS)620に相互接続されたメモリサ
ブシステム610を含む。論理的資源ドライバ620は、さら
にネットワーク650を介して複数のプロセッサ要素640に
相互接続されている。最後に、複数のプロセッサ要素64
0が、ネットワーク670を介して、レジスタセットプール
および命令コードセットファイル660を含む共有資源に
相互接続されている。LRD−メモリネットワーク630、RE
−LRDネットワーク650およびPE−コンテクストファイル
ネットワーク670は、従来形式のクロスバーネットワー
ク、オメガネットワーク、バンヤンネットワークまたは
同等物より構成し得るフルアクセスネットワークであ
る。ネットワークはフルアクセス形式(スペース的にノ
ンブロッキング)であるから、例えば任意のプロセッサ
要素640は、任意のコンテクスト(以下に定義される)
ファイル660における任意のレジスタファイルまたは状
態コードメモリにアクセスできる。同様に、どのプロセ
ッサ要素640も、どの論理的資源ドライバ620へでもアク
セスでき、どの論理的資源ドライバ620も、メモリサブ
システム610のどの部分へでもアクセスできる。加え
て、PE−LRDおよびPEコンテクストファイルネットワー
クは時間的にノンブロッキングである。換言すれば、こ
れらの2つのネットワークは、ネットワーク上の負荷状
態に拘らず、どの資源からのどの資源へのアクセスでも
保証する。TOLLソフトウェアが、ネットワーク内におい
て衝突が決して起らないことを保証しているから、PE−
LRDネットワーク650およびPE−コンテクストファイルネ
ットワーク670のスイッチング要素のアーキテクチャは
かなり簡単化されている。第6図のブロックダイヤグラ
ムはMIMDシステムを表わしており、各コンテクストファ
イル660は少なくとも1つのユーザプログラムに対応し
ている。 メモリサブシステム610は、従来形式のメモリアーキ
テクチャおよび従来形式のメモリ要素を使って構成でき
る。この種のアーキテクチャおよび要素には、当技術に
精通したものが採用し得てこのシステムの必要条件を満
足するような多くのものがある。例えば、積重ね型メモ
リアーキテクチャを使用できよう。(A.V.PohmおよびO.
P.AgrawalのHigh Speed Memory System.Reston Pub
lishing Co.,1983年発行、参照。) 論理的資源ドライバ620は、本発明のシステムアーキ
テクチャ600に独特である。各例示のLRDは、時分割式で
単一の使用者(コンテクストファイルが割り当てられて
いる)に対してデータキャッシュおよび命令選択の維持
を可能にする。LRDは、種々の使用者から実行セットを
受け取り、そして1つのLRD上には、1つのコンテクス
トに対する1または複数の実行セットが記憶されてい
る。記憶された実行セットの基本ブロック内の命令は、
先に割り当てられた論理的プロセッサ番号に基づいて待
ち行列で記憶される。例えば、システムが64の使用者お
よび8つのLRDを有すれば、8の使用者が個々のLRDを時
分割式に共有することになろう。オペレーティングシス
テムは、どの使用者がどのLRDにどの位長く割り当てら
れるかを決定する。LRDについては、追って詳細に説明
する。 プロセッサ要素640もまた、TDAシステムアーキテクチ
ャに独特であり、追って詳述する。本発明の特定の1側
面によれば、これらのプロセッサは、コンテクストフリ
ーの確立的性質を示す。すなわち、システムの将来の状
態は、システムの現在の状態にのみ依存し、現在の状態
に至った経路に依存しない。それゆえ、アーキテクチャ
の上で、コンテクストフリープロセッサ要素は、2つの
点において従来形式のプロセッサ要素から独特に違って
いる。第1に、要素は、汎用レジスタまたはプログラム
状態ワードのような内部的恒久記憶ないち残映をもたな
い。第2に、要素は、如何なるルート設定機能または同
期機能を遂行しない。これらのタスクは、TOLLソフトウ
ェアで遂行され、LRDで実施される。アーキテクチャの
重要性は、本発明のコンテクストフリープロセッサ要素
が、LRDに対して真に共有の資源であるということであ
る。パイプライン結合プロセッサ要素が採用される本発
明の他の好ましい特定の実施例においては、プロセッサ
は、前述のごとく厳密にコンテクストフリーではない。 最後に、レジスタセットおよび状態コードセットファ
イル660も、Advanced Micro Device、カルフォルニ
ヤ、サニベイル所在、から入手し得るAMD29300シリーズ
レジスタファイルのような一般的入手し得る要素から構
成できる。しかしながら、第6図に例示されるファイル
660の特定の形態は、本発明の教示にしたがって独特の
ものであり、追って詳細に説明する。 第1表に記載される例に基づく本発明の一般的動作
は、第7a、7bおよび7cのプロセッサ・コンテクストレジ
スタファイル通信と関連して説明してある。前述のよう
に、本発明のこの例示の実施例の時間駆動制御は、第4
図に詳細に記載される論理的プロセッサ番号(LPN)お
よび命令発火時間(IFT)に関する延長インテリジェン
スの追加に見出される。第7図は、レジスタセットおよ
び状態コードセットファイル660のレジスタPE0〜PE3の
形態を総括的に示している。 第1表の単一の使用者の例に対するTDAシステムアー
キテクチャ600の動作を説明するため、第3〜第5表を
参照する。命令発火時間T16に対する例において、コン
テクストファイル−PEネットワーク670は、プロセッサ
要素PE0をレジスタR0およびR10と、プロセッサ要素PE1
をレジスタR1およびR11と、そしてプロセッサ要素PE2を
レジスタR4と相互接続する。それゆえ、時間T16の間、
3つのプロセッサ要素PE0、PE1およびPE2は、I0、I1お
よびI4を同時に処理し、結果をR0、R10、R1、R11および
R14に記憶する。時間T16の間、LRD620は、時間T17中に
発火(実行)され得る命令を、適当なプロセッサ要素に
供給する。第7b図を参照すると、命令発火時間T17の
間、命令I2を処理するために現在割り当てられている唯
一のプロセッサ要素PE0のみがレジスタR0、R1およびR2
と相互接続している。BEU(第7a、7bおよび7c図に図示
せず)も、状態コードメモリに接続されている。最後に
第7c図を参照すると、命令発火時間T18中、プロセッサ
要素PE0のみがレジスタR2およびR3に接続されている。 数種の重要な観察がなされねばならない。まず、特定
のプロセッサ要素PEがその動作の結果をレジスタに入れ
るとき、後続の命令発火時間(IFT)中、任意のプロセ
ッサ要素を、それがその動作を実行するとき、そのレジ
スタに相互接続することができる。例えば、命令I1に対
するプロセッサ要素PE1は、図7aに示されるように、IFT
T16中メモリ位置の内容でレジスタR1をロードする。
命令発火時間T17中、プロセッサPE0はレジスタR1と相互
接続され、そこに記憶されている結果で追加の動作を遂
行する。本発明の教示によると、各プロセッサ要素PE
は、任意の特定の命令発火時間(IFT)中レジスタファ
イル660内の必要なレジスタに「総括的に結合」され、
それゆえ、ある種の従来の手法におけるごとく、例えば
他のプロセッサレジスタ内の他の資源に供給のためレジ
スタファイルからデータを動かす必要はない。 換言すると、本発明の教示によると、各プロセッサ要
素は、任意の個々の命令発火時間中、ファイル660の任
意の共有レジスタに総体的に結合できる。加えて、本発
明によると、どのプロセッサ要素も、ある種の従来シス
テムにおいて見られるように、特定のレジスタの利用可
能性についてあるいは特定のレジスタに入れられる結果
について競争する(すなわち待つ)必要はない。また、
個々の任意の命令発火時間中、どのプロセッサ要素も、
レジスタファイル660内のどのような形態のレジスタに
してもそのレジスタがあたかもそれ自身の内部レジスタ
であるかのようにフルアクセスできる。 それゆえ、本発明の教示によれば、命令ストリームに
加えられるインテリジェンスは、目的コード内において
検出される、他のいずれの命令の処理とも干渉すること
なく同時に処理され得るような2以上の命令に基づく。
検出された同時的に処理されうる命令は、TOLLソフトウ
ェアにより分析され、そして該ソフトウェアは、例示の
1実施例においては、命令を並列に処理すべき個々の論
理的プロセッサ要素(LPN)および独特の命令発火時間
(IFT)を論理的に割り当てるから、各プロセッサ要素
(PE)は、その所与の命令に対して、その命令の必要条
件にしたがって処理のために利用可能なすべての必要な
資源を有することになろう。上述の例において、論理的
プロセッサ番号は実際のプロセッサ割当てに対応する。
すなわちLPNOはPE0に、LPN1はPE1に、LPN2はPE2にそし
てLPN3はPE3に対応する。本発明においては、LPN0対P
E1、LPN1対PE2等のようなどのような順序でも使用でき
るから、本発明はそのように制限されるものではない。
すなわちTDAシステムが4以上または4以下のプロセッ
サを有するならば、以下に論述されるように異なる割当
てが使用できよう。 TDAシステムに対する時間制御は、命令発火時間駆動
される。第7a〜7c図に観察されるように、各個々の命令
発火時間中、プロセッサ要素640およびPE−レジスタセ
ットファイルネットワーク670より成るTDAシステムアー
キテクチャは、すべての利用可能な資源を完全に利用し
ながら、個々のプロセッサ要素をして命令を同時に処理
せしめるように完全に適合された新規で独特の特定の形
態を取る。プロセッサ要素はコンテックスフリーとし
得、そのため、過去の処理に関するデータ、状態または
情報は必要とされず、プロセッサ要素の内部にも存在し
ない。コンテクストフリープロセッサ要素は、各個々の
命令の要求にのみ反応し、ハードウェアにより必要な共
有レジスタに相互接続される。 〔4.概要〕 概説すると、各異なるプログラムまたはコンパイラ出
力100に対するTOLLソフトウェア110は、各単一エント
リ、単一エグジット(SESE)基本ブロック(BB)に存在
する自然の同時的発生すなわち、少なくとも二つの命令
が他の命令の処理と干渉することなく同時に処理され得
る命令を分析し、例示の1実施例においては、論理的プ
ロセッサ番号(LPN)および命令発火時間(IFT)を含む
インテリジェンスを各命令に加える。第6図に示される
本発明のMIMDシステムにおいては、各コンテクストファ
イルは、プログラムを実行する異なる使用者からのデー
タを含むことになろう。各使用者には、異なるコンテク
ストファイルが割り当てられ、そして第7図に示される
ように、プロセッサ要素は、命令により必要とされるレ
ジスタおよび状態コードメモリのような必要な資源に個
々にアクセスし得る。命令それ自体は、共有資源情報
(すなわち、レジスタおよび状態コードメモリ)を担持
する。それゆえ、TOLLソフトウェアは、各プログラムに
対して1回だけ、第6図に例示されるTDAシステムアー
キテクチャにおける命令の処理を制御するに必要な情報
をスタティックに割り当て、時間駆動式の非集中化処理
を保証する。この際、メモリ、論理的資源ドライバ、プ
ロセッサ要素およびコンテクスト共有資源は、純粋にノ
ンブロッキングな様式でそれぞれのネットワークを介し
て総体的に結合される。 論理的資源ドライバ(LRD)620は、実行セットに形成
される基本ブロックを受け取り、各命令を命令発火時間
(IFT)に選択されたプロセッサ要素640に供給する責務
を有する。第7図に示される例は単一の使用者に対する
単純な表示であるが、マルチューザシステムにおいて
は、論理的資源ドライバ620によって命令をプロセッサ
要素640に供給することにより、追って詳述されるよう
にプロセッサ要素は完全に利用可能となる。共有資源お
よびプロセッサ要素のタイミングおよび識別情報は、す
べてTOLLソフトウェアにより命令に加えられる延長イン
テリジェンスに含まれているから、各プロセッサ要素64
0は、完全に(あるいは若干の例においてはほとんど)
コンテクストフリーとし得、そして実際に、命令発火時
間ごとに、種々の論理的資源ドライバにより供給される
異なる使用者の個々の命令を処理できる。以下に説明さ
れるように、これをなすため、論理的資源ドライバ620
は、予定された順序で、命令をPE−LRDネットワーク650
を介してプロセッサ要素640に供給する。 各命令の実行の完了に続き、任意のプロセッサ要素か
らのデータ生成/操作の結果について任意の他のプロセ
ッサにより独立的にアクセスすることを可能にするのが
プロセッサ要素のコンテクストフリーの性質である。コ
ンテクストフリーでないプロセッサの場合、1つのプロ
セッサが他のプロセッサにより創成されたデータにアク
セスするためには、1つのプロセッサからデータを抽出
しそれを他のプロセッサに利用できるようにするため、
特別の動作(普通汎用レジスタからデータをメモリに動
かす命令)が必要とされる。 複数のLRDに依るプロセッサ要素の真の共有を可能に
するのもプロセッサ要素のコンテクストフリーの性質で
ある。この共有は、単一の命令サイクル程度の細かい粗
さとし得る(1つのLRDに割り当てられる)。1つのコ
ンテクストの状態を節約して(これで1つまたは複数の
プロセッサ要素の制御ができる)、(第2のLRDに割り
当てられる)他のコンテクストによる制御を可能にする
ため、プログラミングや特別のプロセッサ操作は必要と
されない。コンテクストフリーでないプロセッサ(従来
技術の場合そうである)の場合、かかる状態節約におい
て、コンテクストスイッチングのプロセスの一部とし
て、特別のプログラミングおよび特別のマシン操作が必
要とされる。 本発明のプロセッサ要素を実施するに際しては1つの
他の代替的方法がある。これはコンテクストフリーの概
念に対する1つの変形である。すなわち、この実施形態
は、上述の物理的に総体的な相互接続をもたらすが、プ
ログラム制御下で、特定の命令の完了に続き発生される
データのレジスタファイルへの伝送に誓約を加えること
を可能にする。 完全にコンテクストフリーな実施形態においては、プ
ロセッサ要素に入る各命令の完了にて、コンテクストの
状態はコンテクストストリージファイルに完全に補足さ
れる。上記の代替の場合には、レジスタファイルへの伝
送は阻止され、データは、プロセッサに保持され、さら
にデータを操作する後続の命令に対して利用可能となる
(例えばデータチェイニングにより)。究極的に、デー
タは、若干の有限の命令シーケンスの後レジスタファイ
ルに伝送される。しかし、伝送されるのは最後のデータ
のみである。 これは、上述のマイクロコード化コンプレク命令の場
合の一般化として見られるべきものであり、実質的にコ
ンテクストフリーなプロセッサ要素による実施形態と考
えることができる。このような実施形態にあっては、デ
ータが究極的にコンテクストレジスタファイルに伝送さ
れる時間まで、依存性の命令が同じプロセッサ要素上で
実行されることを保証することが要求されよう。これ
は、パイプライン結合されたプロセッサ要素の場合と同
様に、TOLLソフトウェアの全機能性およびアーキテクチ
ャを変更しないが、各命令サイクルを全プロセッサ要素
上で最適な状態で利用するためプロセッサ要素間に設定
される命令の効率的なスケジュール化に主として影響を
及ぼす。 [詳細な説明] [ソフトウェアの詳細な説明] 第8〜11図には、本発明のTOLLソフトウェア110の詳
細が記載されている。第8図を参照すると、コンパイラ
からの従来の出力は、段階800にてTOLLソフトウェアに
供給される。従来形式のコンパイラ出力800内には、下
記の情報が含まれている。すなわち、(a)命令機能、
(b)命令により必要とされる資源、(c)資源の位置
(可能ならば)、および(d)基本ブロック境界であ
る。ついで、TOLLソフトウェアは、段階810にて第1の
命令でスタートとし、段階820においてどの資源が使用
されるか、そして段階830においてその資源がどのよう
に利用されるかを決定するように進行する。このプロセ
スは、先の節で論述されるように、段階840および850を
通って命令ストリーム内の各命令に対して継続する。 段階840で試験されるところにしたがって最後の命令
が処理された後、表が構成され、各資源に対して「フリ
ー時間」および「ロード時間」で初期設定される。かか
る表は、内部ループマトリック乗算の例に対して第7表
に記載されており、イニシャライズの際表はすべて0を
含む。イニシャライズは段階860で行なわれ、そしてTOL
Lソフトウェアは、一度構成されると、段階870において
第1の基本ブロックでスタートするように進行する。 第7表 資 源 ロード時間 フリー時間 R0 T0 T0 R1 T0 T0 R2 T0 T0 R3 T0 T0 R4 T0 T0 R10 T0 T0 R11 T0 T0 第9図において、TOLLソフトウェアは、段階900にお
いて次の基本ブロックの最初の命令で命令ストリームの
分析を継続する。先述のように、TOLLは、命令ストリー
ムのスタティック分析を遂行する。スタティック分析は
(実際上)直線コードを仮定する。すなわち、各命令
は、逐次的態様において分析される。換言すると、ブラ
ンチが決して起こらないことを仮定する。非パイプ式の
命令実行に対しては、ブランチの結果として起こる依存
性は決して起こることがないから問題はない。パイプラ
イン式の実行については後で論述する(パイプライン結
合の使用は、ブランチ命令の遅延値に影響を及ぼすだけ
であるということができる)。 明らかなように、ブランチが決して起こらないという
仮定は正しくはない。しかしながら、命令ストリームに
おいてブランチに遭遇することの影響は単純である。前
述のように各命令は、それが使用する資源(ないし物理
的ハードウェア要素)により特徴づけられる。命令発火
時間の(そして例示の実施例においては、論理的プロセ
ッサ番号の)割当ては、命令ストリームがこれらの資源
に如何にアクセスするかに依存する。TOLLソフトウェア
のこの特定の実施例内においては、各資源の使用状態
は、上述のごとく、その資源に対するフリータイムおよ
びロードタイムと称されるデータ構造により表される。
各命令は順番に分析されるから、1つのブランチの分析
は、下記の態様でこれらのデータ構造に影響を及ぼす。 基本ブロックのすべての命令に発火時間が割り当てら
れると、全資源のロード時間およびフリー時間を(この
値に)更新するのに、現在の基本ブロック(ブランチが
属しているブロック)の最大発火時間が使用される。次
の基本ブロック分析が始まると、提案される発火時間
は、最後の最大値+1として与えられる。それゆえ、レ
ジスタ資源R0〜R4、R10およびR11の各々に対するロード
時間およびフリー時間は、例えば、基本ブロックがT16
の時間で始まると仮定すると、以下の第8表に記載され
る。 第8表 資 源 ロード時間 フリー時間 R0 T15 T15 R1 T15 T15 R2 T15 T15 R3 T15 T15 R4 T15 T15 R10 T15 T15 R11 T15 T15 それゆえ、TOLLソフトウェアは、段階910において、
提案される発火時間(PFT)を、先行の基本ブロック発
火時間の最大発火時間+1に設定する。上の例のコンテ
クストにおいて、先行の基本ブロックの最後の発火時間
はT15であり、この基本ブロックにおける命令に対する
提案される発火時間はT16で始まる。 段階920において、最初の命令により使用される最初
の資源、この例においては命令I0のレジスタR0であり、
が分析される。段階930において、資源が読み取られる
か否かの決定がなされる。上述の例においては、命令I0
に対して、レジスタR0は読み取られないが、書き込みが
なされる。それゆえ、段階940は、次に、資源が書き込
まれるか否かの決定に入る。この場合、命令I0はレジス
タR0に書き込まれ、段階942に入る。段階942は、命令I0
に対する提案された発火時間(PFT)が資源に対するフ
リー時間に等しいかまたはそれより短いか否かについて
決定をする。この例においては、第8表を参照すると、
レジスタR0およびT15に対する資源フリー時間はT15であ
り、それゆえT16の提案される発火時間はT15の資源フリ
ー時間より長く、決定はNOであり、段階950に入る。 TOLLソフトウェアによる分析は次の資源に進行する。
この例において、命令I0に対する次の資源はレジスタR1
0である。この資源は命令により読取りおよび書き込み
が行なわれる。段階930に入り、その命令が資源を読取
るか否かの決定がなされる。真であるから段階932に入
り、ここで命令に対する現在の提案発火時間(T16)が
資源ロード時間(T15)より短いか否かの決定がなされ
る。否であるから、段階940に入る。ここでは、命令が
資源に書き込みを行なうか否かの決定が行なわれる。真
であるから、段階942に入る。この段階においては、命
令に対する提案発火時間(T16)が資源に対するフリー
時間(T15)よりも短いか否かの決定がなされる。否で
あるから、段階950に入る。TOLLソフトウェアによる分
析は、次の資源に入るか(命令I0についてはない)、命
令に対する最後の資源が処理されたならば「B」(第10
図)に入る。 それゆえ、段階950における決定に対する答は肯定で
あり、分析はついで第10図に入る。第10図において、資
源フリー時間およびロード時間がセットされる。段階10
00において、命令I0に対する最初の資源はレジスタR0で
ある。段階1010における最初の決定は、命令が資源を読
むか否かである。前述のごとく、命令I0において、レジ
スタR0の読取りは行なわれないが書き込みが行なわれる
から、この決定に対する答はNOであり、分析は段階1020
に進行する。段階1020において、資源が書き込まれるか
否かの決定に対する答はYESであり、分析は段階1022に
進行する。段階1022は、命令に対する提案発火時間が資
源ロード時間より長いか否かについての決定をなす。こ
の例において、提案発火時間はT16であり、そして第8
表に戻ると、発火時間T16はレジスタR0に対するロード
時間T15より長い。それゆえ、この決定に対する答はYES
であり、段階1024に入る。段階1024において、資源ロー
ド時間は命令の提案発火時間に等しくセットされ、資源
の表(第8表)はその変化を反映するようにして更新さ
れる。同様に、段階1026に入り、資源フリー時間が更新
され、命令の提案発火時間プラス1すなわちT17(T16プ
ラス1)に等しくセットされる。 ついで段階1030に入り、この命令により使用されるほ
かの資源があるか否かについての決定がなされる。1つ
のレジスタR10があり、分析はこの資源を処理する。段
階1070では次の資源が取得される。段階1010に入り、こ
こで、資源が命令に読み取られるか否かの決定がなされ
る。真であるから、段階1012に入り、現在提案発火時間
(T16)が資源フリー時間(T15)より大きいか否かの決
定がなされる。それが真であるから、段階1014に入り、
ここで、資源のフリー時間が、この命令によるこの資源
の使用を反映するように更新される。分析は、継いで、
段階1020にて、資源が命令により書き込まれるか否かを
チェックする。真であるから、段階1022に入り、現在の
提案時間(T16)が資源(T15)のロード時間より長いか
否かの決定がなされる。真であるから、段階1024に入
る。この段階において、資源のロード時間が命令の発火
時間を反映するように更新される。すなわち、ロード時
間はT16にセットされる。ついで段階1026に入り、資源
のフリー時間が命令の実行を反映するように更新され
る。すなわち、フリー時間はT17にセットされる。つい
で段階1030に入り、これが命令により使用される最後の
資源であるか否かの決定がなされる。真であるから段階
1040に入る。ここで、命令発火時間(IFT)は、T16の提
案発火時間(PFT)に等しくなるようにセットされる。
ついで、段階1050に入り、これが基本ブロックにおける
最後の命令であるか否かについての決定がなされる。こ
れはこの場合NOであり、段階160に入り次の命令I1を処
理する。次の命令は、第9図のA1にて分析段階に入る。 例における次の命令はI1であり、レジスタR1およびR1
1に対して、レジスタR0およびR10に関して命令I0に提供
されたのと同じ分析が命令I1に対して行なわれる。以下
の第9表においては、第8図の資源の一部がこれらの変
化を反映するように変更される(命令I0およびI1はTOLL
ソフトウェアにより完全に処理されてしまっている)。 第9表 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R10 T16 T17 R11 T16 T17 基本ブロックの例における次の命令は命令I2であり、
これは、レジスタR0およびR1の読取りおよびレジスタR2
への書込みを含む。それゆえ、第9図の段階910におい
て、命令に対する提案発火時間はT16にセットされる(T
15+1)。ついで段階920に入り、そして命令I2におけ
る第1の資源はレジスタR0である。段階930においてな
される第1の決定はYESであり、段階932に入る。段階93
2では、T16の命令の提案発火時間がT16の資源レジスタR
0ロード時間に等しいかまたはそれ以下であるか否かに
ついての決定がなされる。レジスタR0に対する資源ロー
ド時間は、命令I0に対するレジスタR0の分析中T15からT
16に更新されたことに注目することが重要である。段階
932におけるこの決定に対する答は、提案発火時間が資
源ロード時間に等しい(T16=T16)ということであり、
段階934に入る。段階934において、命令の提案発火時間
は、資源ロード時間プラス1、この例においてはT17(T
16+1)に等しくなるように更新される。命令I2の提案
発火時間はここでT17に更新される。ここで、段階940に
入り、命令I2は資源R0の書込みをしないから、この決定
に対する答はNOであり、段階950、ついで段階960へと入
り、次の資源を処理する。この例においてこれはレジス
タR1である。 段階960においては、レジスタR1に対して行なわれる
分析を開始し、段階930においては、資源が読み取られ
るか否かについての決定がなされる。答はもちろんYES
であり、段階932に入る。今度は、命令の提案発火時間
はT17であり、T17の命令の提案発火時間が、T16である
レジスタR1に対する資源ロード時間に等しいかまたはそ
れ以下であるか否かについての決定がなされる。命令の
提案発火時間はレジスタロード時間より長いから(T17
はT16より大)、この決定に対する答はNOであり、段階9
40に入る。レジスタはこの命令により書き込まれず、そ
れゆえ分析は段階950に進行する。段階960において、命
令I2に対して処理されるべき次の資源は資源レジスタR2
である。 段階930における最初の決定は、この資源R2が読み取
られるか否かである。否であるから、分析は段階940
に、ついで段階942に進む。この時点において、命令I2
の提案発火時間はT17であり、そして段階942において、
T17の命令の提案発火時間が資源R2のフリー時間に等し
いかまたはそれ以下であるか否かの決定がなされる。し
かして、このフリー時間は上記の第8表においてはT15
である。この決定に対する答はNOであり、それゆえ段階
950に入る。これはこの命令に対して処理される最後の
資源であり、分析は第10図において続く。 第10図に移り、命令I2に対する第1の資源R0が分析さ
れる。段階1010において、この資源が読み取られるか否
かの決定がなされ、そしてその答はYESである。段階101
2に入り、命令I2の提案発火時間T17がレジスタR0に対す
る資源のフリー時間より大であるか否かの決定がなされ
る。第9表において、レジスタR0に対するフリー時間は
T17であり、両者は等しいから、この決定に対する答はN
Oである。段階1020に入り、これもNOの答をもたらし、
分析は段階1030に切り替わる。これは命令I2に対して処
理される最後の資源ではないから、段階1070に入り、分
析を次の資源レジスタR1に進める。レジスタR1に対して
は、第10図において、レジスタR0に対するのと全く同じ
経路が取られる。次に、段階1070でレジスタR2の処理が
行なわれる。この場合、段階1010における決定に対する
答はNOであり、段階1020に入る。命令I2に対してレジス
タR2は書き込まれるから、段階1022に入る。この場合命
令I2の提案発火時間はT17であり、資源のロード時間は
第8表からT15である。それゆえ、提案発火時間はロー
ド時間より大であるから、段階1024に入る。段階1024お
よび1026は、レジスタR2に対するロード時間およびフリ
ー時間をそれぞれT17およびT18に前進せしめ、そして資
源の表は第10図に示されるように更新される。 第10表 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R2 T17 T18 これは命令I2に対して処理される最後の資源であるか
ら、T17の提案発火時間が実際の発火時間(段階1040)
となり、次の命令が分析される。 内部ループマトリックス乗算の例における各命令が分
析されるのはこの態様においてであるから、完全に分析
されたとき、最終の資源表は下記の第11表におけるごと
く現われる。 第11表 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R2 T17 T18 R3 T18 T19 R4 T16 T17 R10 T16 T17 R11 T16 T17 第11図において、TOLLソフトウェアは、第9図および
第10図に記載されるタスクを遂行後、段階1100に入る。
段階1100は、すべての資源フリー時間およびロード時間
を所与の基本ブロック内の最大の時間にセットする。例
えば、第11表に記載される最大時間はT19であり、それ
ゆえすべてのフリー時間およびロード時間は時間T19に
セットされる。段階1110に入り、これが処理される最後
の基本ブロックであるか否かについての決定がなされ
る。もし否であれば、段階1120に入り、次の基本ブロッ
クが処理される。これが最後の基本ブロックであれば、
段階1130に入り、再び命令ストリームの第1の基本ブロ
ックでスタートする。この分析の目的は、各基本ブロッ
ク内の命令を論理的に整理し、各命令に論理的プロセッ
サ番号を割り当てることである。これは、内部ループマ
トリックス乗算の例に対して第6表に集約されている。
段階1140は、基準として提案発火時間(IFT)を使っ
て、各基本ブロック内の命令を上昇する順序で分類する
機能を遂行する。ついで段階1150に入り、ここで論理的
プロセッサ番号(LPN)が割り当てられる。プロセッサ
要素の割り当てをなすに際して、1組の命令すなわち同
じ命令発火時間(IFT)を有するものに、論理的プロセ
ッサ番号が到着順サービス式に割り当てられる。例え
ば、第6表に戻ると、発火時間T16に対する第1組の命
令はI0、I1およびI4である。これらの命令は、それぞれ
プロセッサPEO、PE1およびPE2に割り当てられる。次
に、時間T17中、第2組の命令I2およびI5がそれぞれプ
ロセッサPE0およびPEIに割り当てられる。最後に、最後
の時間T18中、最後の命令I3がプロセッサPE0に割り当て
られる。プロセッサ要素の割り当ては他の方法を使って
行なうことができるものであり、プロセッサ要素および
システムの実際のアーキテクチャに基づくことを特に理
解されたい。明らかなように、好ましい実施例におい
て、1組の命令は、ファースト・イン・タイム式に論理
的プロセッサに割り当てられる。割り当てをなした後段
階1160に入り、最後の基準ブロックが処理されたか否か
が決定され、もし否であれば段階1170で次の基本ブロッ
クを生じ、プロセスは完了まで繰り返される。 それゆえ、TOLLソフトウェアの出力は、この例示の実
施例においては、第4図に示されるように、各命令に対
して提案発火時間(IFT)の割り当てをもたらす。先述
のように、命令は、命令発火時間にしたがって、命令ス
トリームに現われる、他のいずれの命令の処理とも干渉
することなく同時に処理され得るような2以上の命令に
基づいて再整理され、そして個々の論理的プロセッサが
第6表に示されるように割り当てられる。上の論述は内
部ループマトリックス乗算の例について行なってきた
が、第9〜11図に記載される分析は、任意のSESE基本ブ
ロックに応用して、そこに含まれる、他のいずれの命令
の処理とも干渉することなく同時に処理され得るような
2以上の命令を検出し、各使用者プログラムに対して命
令発火時間(IFT)および論理的プロセッサ番号(LPN)
を割り当てるのに応用できる。このとき、このインテリ
ジェンスは、基本ブロック内に記録された命令に加える
ことができる。これは、所与のプログラムに対して1回
だけなされ、本発明のTDAシステムアーキテクチャで動
作させるために必要な時間駆動・非集中化制御およびプ
ロセッサマッピング情報を提供する。 第12図に示される実行セットの目的は、1つの実行セ
ット内における命令キャッシュヒットを最大にすること
によりプログラムの実行を最適化すること、換言すれ
ば、1つの実行セット内の基本ブロックによる他の実行
セット内の基本ブロックへの切替えをスタティックに最
小化することである。実行セットの支援手段は、3つの
主要素より成る。すなわち、データストラクチャの定
義、実行セットデータストラクチャを準備する予備実行
時間ソフトウェア、およびプログラムを実行するプロセ
ッサにおいて実行セットの取出しおよび操作を支援する
ハードウェアである。 実行セットデータストラクチャは、1組の1または複
数のブロックおよび付加されたヘッダより成る。ヘッダ
は次の情報を含む。すなわち、実際の命令のスタートの
アドレス1200(これはヘッダが固定長を有するならば内
在的である)、実行セットの長さ(実行セットの終了の
アドレス)、潜在的相続的(プログラムの実行に関し
て)実行セットの0または複数のアドレス1220である。 実行セットを支持するに必要なソフトウェアは、コン
パイル後の処理の出力を操作する。その処理は、依存性
の分析、資源分析、資源割り当て、および個々の命令ス
トリーム再整理を遂行するものである。実行セットの形
成は、基本ブロックの実行の起こり得る順序および頻度
を決定する1または複数のアルゴリズムを使用する。基
本ブロックは相応にグループ化される。可能なアルゴリ
ズムは、最小コストのルート設定のための直線的プログ
ラミングの問題を解くのに使用されるアルゴリズムに類
似である。実行セットの場合、コストはブランチと関連
する。同じ実行セットに含まれる基本ブロック間のブラ
ンチは、キャッシュ操作に関して不利を招くことはな
い。何故ならば、実行セットの基本ブロックに対する命
令は定常状態にあるキャッシュに存するからである。そ
のとき、コストは、異なる実行セットの基本ブロック間
のブランチと関連する。これは、異なる実行セットの基
本ブロックの命令は、キャッシュ内にあると仮定されな
いからである。主メモリからキャッシュへ適当なブロッ
クの検索および記憶がなされている間、キャッシュミス
でプログラムの実行が遅延される。 本発明の教示によるとコストを評価し割り当てるのに
使用できる数種の可能なアルゴリズムがある。1つのア
ルゴリズムは、スタティックなブランチコスト手法であ
る。この方法にしたがえば、ブロックの連続性および最
大の許容実行セットサイズ(これは最大の命令キャッシ
ュサイズのごとく実施の限界となろう)に基づき基本ブ
ロックを実行セットに配置することにより始められる。
基本ブロック間におけるブランチについての情報は既知
であり、コンパイラの出力である。装置は、この情報を
使用し、異なる実行セット内の基本ブロック間における
(スタティックな)ブランチの数に基づいて、結果とし
て生じた基本ブロックの実行セット中へのグループ化の
コストを計算する。装置は、このコスト関数を最小にす
るための標準のリニアプログラミング技術を使用でき、
それにより、基本ブロックの実行セット中への最適のグ
ループ化を行なうことができる。このアルゴリズムは、
実行が容易であるという利点を有する。しかしながら、
このアルゴリズムは、実際のプログラム実行中に起こる
実際のダイナミックなブランチパターンを無視してい
る。 本発明の教示にしたがえば、実際のダイナミックブラ
ンチパターンを一層十分に評価できる他のアルゴリズム
を使用できる。1つの例は、プログラムの実行から実際
のブランチデータを収集することであり、その結果とし
て、実際のブロック間ブランチに基づくブランチコスト
の重みづけ割り当てを利用して基本ブロックの再グルー
プ化を行なうことである。明らかなように、この手法は
データ依存性である。他の手法は、プログラマをしてブ
ランチの確率を特定せしめ、その後重みづけされたコス
ト割り当てをなすことであろう。この手法は、プログラ
マの介入およびプログラマのエラーが導入される不利益
を有する。さらに他の手法は、単位セット当りの基本ブ
ロックの数を制限するがごときパラメータを使用し、そ
してこのパラメータに発見性を与えることに基づくもの
であろう。 上述のアルゴリズムは、実行セットを創成する問題に
独特なものではない。しかしながら、命令キャッシュの
性能を最適化する手段のような実行セットの使用は新規
である。プロセッサ資源の事前実行時間割り当てが新規
であるのと同様に、キャッシュ性能を最大にするための
基本ブロックの事前実行時間分類は、従来技術では見出
されないものである。 実行セットを支援するに必要とされる最後の要素はハ
ードウェアである。後で論述されるように、このハード
ウェアは、現在の実行セットスタートアドレスおよび終
了アドレス、およびその他の実行セットヘッダデータを
記憶するためのメモリを備える。実行セットおよび関連
するヘッダデータストラクチャの存在は、実際に、キャ
ッシュからプロセッサ要素への実際の命令取出しに分り
易い。後者は、厳密に個々の命令およびブランチアドレ
スに依存している。実行セットハードウェアは、命令取
出しと独立に動作し、主メモリから命令キャッシュへの
命令ワードの移動を制御する。このハードウェアは、全
実行セットがキャッシュに存在するか、プログラムの実
行が、実行セットの外側の基本ブロックへのブランチが
起こる点に達するまで、命令の基本ブロックをキャッシ
ュへ取り出すための責務を負う。この点で、目標実行セ
ットはキャッシュに存在しないから、実行セットハード
ウェアは、目標実行セットに属する基本ブロックの取出
しを行なう。 第13図を参照すると、コンテクストファイル0に対す
るレジスタファイル660の構造が示されているが(構造
は各コンテクストファイルに対して同じである)、各構
造体はL+1レベルのレジスタセットを有しており、そ
して各レジスタはn+1の別個のレジスタを備えてい
る。例えば、nは、全部で32のレジスタに対して31に等
しくし得よう。同様に、Lは、全部で16のレベルに対し
て15に等しくし得よう。これらのレジスタは、レジスタ
間で共有されない。すなわち、各レベルは、各他のレベ
ルのレジスタから物理的に別々の1組のレジスタを有す
る。 各レベルのレジスタは、主プログラムに関して特定の
深さで実行されるサブルーチンが利用可能な1群のレジ
スタに対応している。例えば、レベル0の1組のレジス
タは、主プログラムに利用可能であり、レベル1にある
1組のレジスタは、主メモリから直接呼ばれる第1レベ
ルのサブルーチンに利用可能であり、レベル2の1組の
レジスタは、第1レベルサブルーチンにより直接呼ばれ
るサブルーチン(第2レベルサブルーチン)に利用可能
であり、レベル3にある1組のレジスタは、第2レベル
タサブルーチンにより直接呼ばれるサブルーチンに利用
可能である。 これらのレジスタセットは独立であるから、最大のレ
ベルタ数は、サブルーチン間で任意のレジスタを物理的
に共有しなければならない前に、すなわち任意のレジス
タの内容を主メモリに記憶しなければならない前に入れ
こ配置できるサブルーチンの数に対応する。異なるレベ
ルにあるレジスタセットは本発明の共有資源を構成し、
サブルーチン呼び中のシステムオーバーヘッドコストを
相当に節約する。これは、レジスタセットは、稀にしか
メモリに、例えばスタックに記憶される必要がないから
である。 例示の実施例においては、異なるレベルのサブルーチ
ン間の通信は、各ルーチンに、レジスタを得るための最
高3つまでの可能なレベルを与えることにより行なわれ
る。3つのレベルは、現在レベルと、先行(発呼)レベ
ル(もしあれば)と、広域(主プログラム)レベルとで
ある。どのレベルのレジスタがアクセスされるべきかの
指示、すなわち現在実行している主プログラムすなわち
サブルーチンに関するレベルの指示は、TOLLソフトウェ
アにより命令に付加されたスタティックSCSM情報を使用
する。この情報は、処理されるべき情報に関するレベル
を指示する。これは、アーギュメントとして角度値を表
わす値を取り、その値の三角関数であるSINE値を戻すSI
NE関数に対するサブルーチン呼びをその1例として示す
ことができる。主プログラムは第12表に記載され、サブ
ルーチンは第13表に記載されている。 SINEサブルーチンは第13表に記載される。 それゆえ、本発明の教示にしたがうと、第14図におけ
るごとく、サブルーチンの命令I0は、現在レベル(サブ
ルーチンレベルまたは被呼レベル)のレジスタR2を、先
行レベル(発呼ルーチンまたはレベル)からのレジスタ
R1の内容でロードする。サブルーチンは、発呼ルーチン
のレジスタセットから独立に処理を遂行すべくフルセッ
トのレジスタを有することに留意されたい。サブルーチ
ン呼びの完了にて、命令Irは、現在レベルのレジスタR7
を発呼ルーチンのレベルのレジスタR2を記憶せしめる
(これは、SINEルーチンの結果を発呼プログラムのレジ
スタセットに戻す。) 第22図と関連して一層詳述されるように、レベル間の
切替えは、ダイナミックに発生されるSCSM情報の使用に
より行なわれる。しかして、この情報は、命令の現在手
順レベル(すなわち、被呼ルーチンのレベル)の絶対
値、先行の手順レベル(すなわち、発呼ルーチンのレベ
ル)およびコンテクスト識別情報を含むことができる。
絶対的なダイナミックSCSMレベル情報は、TOLLソフトウ
ェアにより供給される相対的な(スタティック)SCSM情
報からLRDにより発生される。コンテクスト識別情報
は、マルチユーザシステムにおいて多数のプログラムを
処理するときのみ使用される。相対的SCSM情報は、第1
表3にレジスタR1(発呼ルーチンの)に対してR1(LO)
として、レジスタR2に対してR2(LO)として示されてい
る。現在のレベルの全レジスタには、現在手順レベルを
示す符号(00)を付した。 第13図および第14図と関連して説明される本方法およ
びストラクチャは、サブルーチンおよびその発呼ルーチ
ンのレジスタ間で同じレジスタの物理的共有が行なわれ
る従来の手法と相当に異なる。物理的共有のため、サブ
ルーチンにより使用のために利用できるレジスタの数が
制限されるから、レジスタを主メモリに格納するために
より多くのシステムオーバーヘッドコストが要求され
る。例えば、Communications of the ACM、1985年1
月発行、Vol.28、No.1、P.8〜21記載のDavid A.Patler
sonの「Reduced Instruction Set Compaters」なる
論文に記載されるMIPS法参照。その文献においては、最
初の16のレジスタは、サブルーチンにより単独に使用さ
れる局部的レジスタであり、次の8個のレジスタ(レジ
スタ16〜23)は発呼ルーチンおよびサブルーチン間で共
有され、最後の8個のレジスタ(レジスタ24〜31)は広
域(または主)プロブラムおよびサブルーチン間で共有
される。明らかなように、サブルーチンによりアクセス
し得る32のレジスタのうち、16のみがプログラムの処理
においてサブルーチンによる使用のために専用される。
複雑なサブルーチンの処理においては、サブルーチンに
専用化されている限定された数のレジスタでは、一般に
サブルーチンの処理に十分とはいえない。データのシャ
フリング(中間のデータのメモリへの記憶を伴なう)が
行なわれなければならず、そしてこれは、ルーチンの処
理において相当のオーバーヘッドコストをもたらす。 本発明の教示によれば、コンパイル時に起こることが
分かっているレベル間の相対切替えは、第4図(SCSMデ
ータ)に示されるごとくレジスタ識別情報に必要な情報
を加え、種々のレベル間において命令を適当にマッピン
グすることにより特定される。それゆえ、完全に独立の
1組のレジスタが、発呼ルーチンおよび各レベルのサブ
ルーチンに対して利用可能となる。発呼ルーチンは、そ
れ自身の完全な1組のレジスタにアクセスすることに加
えて、前述のごとく、命令に加えられる上述のスタティ
ックSCSMマッピングコードを使って、より高次の1組の
レジスタに直接アクセスすることもできる。従来技術の
手法で特に見られるような、サブルーチンに利用可能な
レジスタセットのサイズは低減は文字通り起こらない。
さらに、SCSM情報用のマッピングコードは、任意の数の
所望のレベルにアクセスするに十分の長さのフィールド
とし得る。例えば、1実施例において、発呼ルーチン
は、3ビットのフィールドでそれ自身のレジスタに加え
て7つのより高次のレベルにアクセスできる。本発明
は、任意の特定の数のレベルに限定されるものでもな
く、1つのレベル内の特定数のレジスタに限定されるも
のでもない。本発明の教示によると、第14図に示される
マッピングは、論理的マッピングであり、従来形式の物
理的マッピングではない。例えば、発呼ルーチンレベ
ル、被呼レベルおよび広域レベルのごとき3つのレベル
は3ビットマップを必要とする。レベルの相対的識別
は、スタティックSCSMの2ビットワードにより、例えば
発呼ルーチンは(00)により、副次的なレベルは(01)
により、広域レベルは(11)により特定できる。このよ
うにして、各使用者のプログラムは分析され、スタティ
ックSCSM相対手順レベル情報(やはり窓コードと指称さ
れる)が、使用者プログラムを特定のLPDに発する前に
命令に加えられる。一度使用者が特定のLRDに割り当て
られると、スタティックSCSMレベル情報を使用して、LR
D依存性のダイナミックSCSM情報を発生し、これが必要
に応じて加えられる。 2.ハードウエアの詳細な説明 第6図に図示されるように、本発明のTDAシステム600
は、メモリ610と複数の論理資源ドライバ(LRD)620と
複数のプロセッサ要素(エレメント)(PE)640と複数
の共有コンテクスト記憶ファイル660とから構成され
る。以下に続く詳細な説明は、TOLLソフトウエア出力は
このハードウエアへロードされるので、論理資源ドライ
バから開始される。 a.論理資源ドライバ(LSDs) 特定の論理資源ドライバ(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,15
22cおよび1522dへ相互接続される。各キャッシュ区分は
それぞれバス1524a,1524b,1524cおよび1524dを通じて、
LRD−メモリネットワーク630へ接続される。各キャッシ
ュ区分回路はさらに線1536a,1536b,1536cおよび1536dを
通じてプロセッサ命令キュー(PIQ)バスインターフェ
ースユニット1544へ相互接続される。PIQバスインター
フェースユニット1544は線1546を通じて分岐実行ユニッ
ト(BEU)1548へ接続され、分岐実行ユニット1548は引
き続き線1550を通じて、PE−コンテクストファイルネッ
トワーク670へ接続される。PIQバスインターフェースユ
ニット1544はさらに線1552a,1552b,1552cおよび1552dを
通じて、プロセッサ命令キュー(PIQ)バッファユニッ
ト1560へ接続され、プロセッサ命令キュー(PIQ)バッ
ファユニット1560は引き続き線1562a〜dを通じてプロ
セッサ命令キュー(PIQ)プロセッサ割当回路1570へ接
続される。PIQプロセッサ割当回路1570はつぎに線1572a
〜dを通じてPE−LRDネットワーク650へしたがってプロ
セッサ要素640へ接続される。 データキャッシュ部1500では、データキャッシュATU1
580がバス1582を通じてLRD−メモリネットワーク630へ
相互接続されさらにバス1584を通じてデータキャッシュ
制御回路1586へそして線1588を通じてデータキャッシュ
相互接続ネットワーク1590へ相互接続される。データキ
ャッシュ制御回路1586はまた線1593を通じてデータキャ
ッシュ区分回路1592a〜dへ相互接続される。データキ
ャッシュ区分回路はつぎに線1594a〜dを通じてLRD−メ
モリネットワーク630へ相互接続される。さらに、デー
タキャッシュ区分回路1592は線路1596a〜dを通じてデ
ータキャッシュ相互接続ネットワーク1590へ相互接続さ
れる。最後に、データキャッシュ相互接続ネットワーク
1590は線路1598a〜dを通じてPE−LRDネットワーク650
へそれゆえプロセッサ要素640へ相互接続される。 動作において、各論理資源ドライバ(LRD)620は、デ
ータキャッシュ部1500と命令選択部1510との二つの部分
を有する。データキャッシュ部1500は、プロセッサ要素
640とメモリ610との間で高速データバッファとして振る
舞う。単位時間あたり満足されねばならないメモリ数要
求により、データキャッシュ1500はインタリーブされ
る。プロセッサ要素640によりメモリへ行なわれるすべ
てのデータ要求が、データキャッシュ相互接続ネットワ
ーク1590に発行(issue)せられそしてデータキャッシ
ュ1592により捕捉される。データ要求は、プロセッサに
より実行される各命令へLRDにより付加される動的SCSM
情報の一部であるコンテクスト識別子を使用して、デー
タキャッシュ相互接続ネットワーク1590により適当なデ
ータキャッシュ1592へ送られる。所望されるデータのア
ドレスは、データがキャッシュ区分のどこにあるかを決
める。もし要求されるデータが存在する(すなわち、デ
ータキャッシュヒットが生ずる)ならば、データは要求
しているプロセッサ要素640へ送り返される。 もし要求されるデータがデータキャッシュにないなら
ば、キャッシュ1592へ付加されるアドレスは、システム
アドレスへ変換されるべきよう、データキャッシュATU1
580へ送られる。システムアドレスはつぎにメモリへ発
行される。応答して、メモリからのデータのブロック
(キャッシュラインまたはブロック)がデータキャッシ
ュ制御1586の制御下でキャッシュ区分回路1592へ付与さ
れる。このキャッシュブロックにある要求されるデータ
はつぎにデータキャッシュ相互接続ネットワーク1590を
通じて、要求しているプロセッサ要素640へ送られる。
これは単に一つの可能な構成であることが明瞭に理解さ
れるべきである。データキャッシュ部は従来の構成のも
のでありそして可能な種々の実施が当業者には実現可能
である。データキャッシュは、標準の機能および構成の
ものであるので、これ以上言及しない。 LRDの命令選択部1510は、命令キャッシングと命令キ
ューイングと分岐実行との3つの主要な機能を有する。
命令選択部1510の命令キャッシュ部のシステム機能は、
キャッシング機構の標準的ないずれのものともされる。
それは、プロセッサとメモリとの間で、高速命令バッフ
ァとして振る舞う。しかし、本発明は、この機能を実現
するのに、独特の方法および装置形態を提供する。 命令部1510の一つの目的は、メモリから複数の実行セ
ットを受容し、実行セットをキャッシュ1522へ入れそし
て必要時供給式でセット内の命令をプロセッサ要素640
へ供給することである。システムは一般に独立の複数の
プロセッサ要素640を包含するので、命令キャッシュに
対する要求は、同時実行可能な一群の命令に対するもの
である。再び、単位時間あたり満足されねばならない複
数の要求により、命令キャッシュはインタリーブされ
る。グループ(群)サイズは、無からユーザに利用可能
なプロセッサ数へ範囲がおよぶ。グループはパケットと
名付けられるが、これは、命令が連続的な仕方で記憶さ
れることを必ずしも意味しない。命令は、これらの命令
発火時間(IFT)に基づいて、キャッシュから取り出さ
れる。次命令発火時間レジスタは、取り出されるべき命
令の次パケットの発火時間を包含する。このレジスタ
は、LRDの分岐実行ユニット1548によりロードされなら
びに命令取り出しが完了したときキャッシュ制御ユニッ
ト1518によりインクリメント可能である。 次IFTレジスタ(NIFTR)は、コンテクスト制御ユニッ
ト1518および分岐実行ユニットからアクセス可能な記憶
レジスタである。その簡単な機能により、それは明示し
ない。技術的に、それは命令キャッシュ制御ユニット15
18の一部でありそしてさらに制御ユニット1660に埋め込
まれる。(第16図。)ここのキーポイントは、NIFTR
は、インクリメントまたはロードが可能な単なる記憶レ
ジスタであることである。 命令キャッシュ選択部1510はバス1524を通じてメモリ
から実行セットの命令を受容しそしてラウンドロビン式
に、命令語を各キャッシュ区分1522a〜dに入れる。別
言すれば、実行セットの命令は、第1命令がキャッシュ
区分1522aにまた第2命令がキャッシュ区分1522bに第3
命令がキャッシュ区分1522cに第4命令がキャッシュ区
分1522dに供給されるよう指示される。第5命令は次
に、キャッシュ区分1522aへ指示され、そして実行セッ
トのすべての命令がキャッシュ区分回路へ供給されるま
で続く。 キャッシュ区分へ供給されるすべてのデータがキャッ
シュに必ずしも記憶されるとは限らない。説明されるよ
うに、実行セットヘッダおよびトレーラは記憶されなく
ともよい。各キャッシュ区分は、独特の識別子(タグと
名付けられる)を、そのキャッシュ区分に記憶されるべ
きすべての情報に付加する。識別子は、キャッシュから
得られる情報が実際に所望される情報であることを確認
するのに使用される。 複数命令の一パケットが要求されるとき、各キャッシ
ュ区分は、要求されるパケットのメンバーである命令を
包含するかどうかを確認する。もし、キャッシュ区分の
いずれも、要求されるパケットのメンバである命令を包
含しない(すなわち、ミスが生ずる)ならば、要求され
るパケットを包含する実行セットは、データキャッシュ
ミスに類似の仕方で、メモリから要求される。 もし、ヒットが生ずる(すなわち、キャッシュ区分15
22の少なくとも一つが要求されるパケットからの命令を
包含する)ならば、キャッシュ区分は任意の適当な動的
SCSM情報を命令に付加する。各命令に付加される動的SC
SM情報はマルチユーザ応用に重要である。動的に付加さ
れるSCSM情報は、ある所与のユーザに割り当てられるコ
ンテクストファイル(第6図参照)を識別する。それゆ
え、本発明の教示によって、システム600は、マスタプ
ロセッサまたはメモリへのアクセスを必要とすることな
く、多くのユーザコンテクストファイル間の遅延自由切
換えが可能である。 命令はつぎに、LRD620のPIQバスインターフェースユ
ニット1544へ供給され、ここで、それは、例示の実施例
でTOLLソフトウェアが命令に付加されていた拡張知能に
包含される論理プロセッサ番号(LPN)に応じて適当なP
IQバッファ1560へ送られる。PIQバッファユニット1560
の命令は、実プロセッサ要素640への割当てのために、
バッファされる。プロセッサ割当てはPIQプロセッサ割
当てユニット1570により行なわれる。物理的プロセッサ
要素の割当ては、現在利用可能なプロセッサの数および
割当てられるべき利用できる命令数に基づいて行なわれ
る。これらの数は動的である。選択プロセスは以下の通
りである。 第15図の命令キャッシュ制御1518および各キャッシュ
区分1522の詳細は第16図に示されている。各キャッシュ
区分回路1522では、5つの回路が利用される。第1の回
路は、実行セットのヘッダの各ワードをパス1520bを通
じて命令キャッシュコンテクスト制御ユニット1660へ送
るヘッダ送り回路1660である。ヘッダ送り回路1660の制
御は、パス1520aを通じてヘッダパス選択回路1602によ
り行なわれる。ヘッダパス選択回路1620は、制御ユニッ
ト1660から線路1520bを通じて受容されるアドレスに基
づいて、キャッシュ区分で必要とされる数のヘッダ送り
装置(header router)1600を選択的に賦活する。たと
えば、もし実行セットが2つのヘッダワードを有するな
らば、最初の2つのヘッダ送り回路1600だけが、ヘッダ
パス選択回路1602により賦活されそれゆえヘッダ情報の
2つのワードがバス1520bを通じて、キャッシュ区分回
路1522aおよび1522b(図示せず)の2つの賦活されるヘ
ッダ送り回路1600から制御ユニット1660へ供給される。
説明したように、実行セットの連続するワードが連続す
るキャッシュ区分回路1522へ供給される。 たとえば、第1表のデータは全実行セットを表示しそ
して適当なヘッダワードが実行セットの最初出現すると
仮定する。最先の命令発火時間(IFT)をもつ命令が最
初にリストされそしてある所与のIFTの間に、最も低い
論理プロセッサ番号に関するこれらの命令が最初にリス
トされる。表はつぎのように読まれる。 第14表 ヘッダワード1 ヘッダワード2 I0(T16)(PE0) I1(T16)(PE1) I4(T16)(PE2) I2(T17)(PE0) I5(T17)(PE1) I3(T18)(PE0) それゆえ、第1表の例(すなわち、マトリックスマル
チプライ内部ループ)は、それと関連の2つのヘッダワ
ードと発火時間(IFT)および論理プロセッサ番号(LP
N)を画然する拡張情報を持つ。第14表に示されるよう
に、命令は、発火時間に応じて、TOLLソフトウエアによ
り再順序付けられた。それゆえ、第14表に示される実行
セットは、LRD−メモリネットワーク630を通じてメモリ
から供給されるとき、第1のワード(ヘッダワード1)
は、区分キャッシュ0により制御ユニット1660へ送られ
る。第2のワード(ヘッダワード2)は、区分キャッシ
ュ1(第15図)により制御ユニット1660へ送られる。命
令がI0が区分キャッシュ2へ、命令I1が区分キャッシュ
3へ、命令I2が区分キャッシュ0へ等々送られる。その
結果、キャッシュ区分1522はここに第15表に示されるよ
うな命令を包含する。 上記の例は、実行セットでただ一つの基本ブロックを
もつにすぎない(すなわち、それは極端に単純化した例
である)ことをはっきりさせることが重要である。現実
に、実行セットは複数の基本ブロックを有するであろ
う。 命令は次に、記憶のため各キャッシュ区分にあるキャ
ッシュランダムアクセスメモリ(RAM)1610へ供給され
る。各命令は、ヘッダ送り装置1600からバス1602を通じ
てタグ付加装置(tag attacher)回路1604へそして次に
線路1606を通じてRAM1610へ供給される。タグ付加装置
回路1604はタグ生成回路1612の制御下にあり、そして線
路1520cを通じて、これと相互接続される。キャッシュR
AM1610には、従来のスーパーミニコンピュータで見出さ
れるような従来のキャッシュ高速RAMが可能である。 タグ生成回路1612は、指定されるRAM1610での命令の
記憶の前に、各命令への付加のために、独特の識別コー
ド(ID)を提供する。キャッシュ回路に記憶される命令
へのプロセス識別タグの割当ては従来のものでありそし
てエイリアシング(aliasing)を回避するよう行なわれ
る。アラン ジエイ スミス(Alan J.Smith)によりエ
イシーエム コンピューティング サーベイズ(ACM Co
mputing Surveys)第14巻、1982年9月の“Cache Memor
ies"参照。タグは、各別の命令およびユーザからそれを
唯一つ識別するのに十分な量の情報を有する。例示の命
令はすでにIFTとLPNとを含むので、後に命令が実行のた
め検索されるとき、命令は命令の発火時間に基づいて取
り出される。以下の第16表に示されるように、拡張情報
およびハードウエアタグを含む各命令は上記の例につい
て表示のように記憶される。 第16表 キャッシュ0:I4(T16)(PE2)(ID2) キャッシュ1:I2(T17)(PE0)(ID3) キャッシュ2:I0(T16)(PE0)(ID0) I5(T17)(PE1)(ID4) キャッシュ3:I1(T16)(PE1)(ID1) I3(T18)(PE0)(ID5) 先に説明されたように、キャッシュ区分回路1522の目
的は、遅い主メモリと速いプロセッサ要素640との間に
高速バッファを提供することである。通常、キャッシュ
RAM1610は、高速アクセスが可能な高速メモリである。
もし、RAM1610が真の連想メモリであるならば、第16表
に明示されるように、各RAM1610は、命令発火時間(IF
T)に基づいてアドレス可能である。現在、この種の連
想メモリは経済的に妥当でなくまたキャッシュアドレス
変換回路1620へのIFTが利用されねばならない。この種
の回路は、設計が従来のものでありそしてバス1520dを
通じて、各RAMのアドレッシングを制御する。回路1620
の目的は、命令発火時間の与えられる所望される命令の
RAMアドレスを生成することである。それゆえ、命令発
火時間T16について、第16表に示されるように、キャッ
シュ0とキャッシュ2とキャッシュ3とは、それぞれ命
令I4とI0とI1とを発生しよう。 キャッシュRAM1610がアドレスされるとき、特定の発
火時間に関連されるこれらの命令は、線路1624を通じて
タグ比較および特権検査回路1630へ供給される。タグ比
較および特権検査回路1630の目的は、適当な命令が供給
されたことを確認するために、ハードウエアタグ(ID)
を発生されるタグと比較することである。参照ないし基
準タグは、線路1520eを通じてタグ比較および特権検査
回路1630へ相互接続される別のタグ生成回路1632を通じ
て発生される。特権検査がまた、命令により要求される
動作が(例えばシステムプログラム、アプリーケーショ
ンプログラムなど)プロセスの所与の特権状態(ステー
タス)が許可されるのを確認するのに、供給される命令
でも遂行される。これは、プロセッシングステータスの
複数レベルをサポートするコンピュータプロセッサによ
り行なわれる従来の検査である。ヒット/ミス回路1640
が、特定の命令フェッチ(取出し)要求に応答して、ど
のRAM1610が適当な命令をPIQバスインターフェースユニ
ット1544へ供給したかを決定する。 たとえば、第16表に振り返ってみると、もしRAM1610
が、命令発火時間T16について、回路1620によりアドレ
スされるならば、キャッシュ0とキャッシュ2とキャッ
シュ3は命令に応答して、これらのキャッシュ区分でヒ
ット指示を構成しよう。キャッシュ1は応答せずそして
ミス指示を構成しそしてこれは線1520gを通じて回路164
0により決定されよう。こうして、命令発火時間T16につ
いて各命令がバス1632を通じて、もしあれば動的SCSM情
報がSOSM付加装置ハードウェア1650により命令に付加さ
れるSCSM付加装置1650へ供給される。例えば、ハードウ
エア1650が(相対値である)静的SCSM手続レベル情報を
実手続レベル値と置換できる。実手続レベル値は手続レ
ベルカウンタデータおよび静的SCSM情報から発生され
る。 各発火時間に関連される命令のすべてが、RAM1610か
ら読み取られとき、ヒットおよびミス回路1640は線路16
46を通じて、命令キャッシュ制御ユニット1660にこの情
報を伝達する。命令キャッシュコンテクスト制御ユニッ
ト1660は、命令発火時間を次の値にインクリメントする
命令キャッシュ制御1518の一部である次命令発火時間レ
ジスタを包含する。それゆえ、例では、命令発火時間T1
6に関連されるすべての命令の読み取りの完了にて、命
令キャッシュコンテクスト制御ユニット1660は次発火時
間T17ヘインクリメントを行ないそしてこの情報を線路1
664を通じてアクセス決定(resolution)回路1670へま
た線路1520fを通じてタグ比較および特権検査回路1630
へ供給する。またTOLLソフトウエアにより感知される動
作依存状態によっては有効命令をもたない発火時間があ
ってもよいことに注意されたい。この場合には、キャッ
シュからはなんの命令もフェッチされずまたPIQインタ
ーフェースへ伝達されないであろう。 アクセス決定回路1670は、どの回路が命令キャッシュ
RAM1610へのアクセスを有するかを調整する。通常、こ
れらのRAMは、各クロックサイクルで単一の要求だけを
満足させることができる。RAMへ一度に二つの要求があ
ることがあるので、いずれの回路がアクセスを獲得する
かを決めるために調停方法が実行されねばならない。こ
れはキャッシュメモリの設計での従来の問題であり、ア
クセス決定回路は、この分野でよく知られている優先順
位問題を解決する。 本発明は、数人のユーザを支援できそしてできれば時
間と空間の両方で同時に数人のユーザを支援できるのが
よい。以前の従来技術の方法(CDC、IBMなど)では、マ
ルチユーザ式支援が単に一または複数のプロセッサを時
分割することによって実現されていた。別言すれば、プ
ロセッサは時間にて共有されていた。このシステムで
は、マルチユーザ式支援が、複数のプロセッサエレメン
トで時間を与えられる各ユーザへのLRDの割当てにより
(空間にて)実現される。こうして、プロセッサエレメ
ントの共有に対する空間的態様がある。マシンのオペレ
ーティングシステムは時分割される仕方で同様のLRDに
割り当てられるこれらのユーザを取り扱い、それによ
り、時間的次元をプロセッサの共有に付加する。マルチ
ユーザ式支援が複数のLRDと複数のプロセッサエレメン
トの使用とレジスタファイルおよび条件コード記憶をサ
ポートする複数のコンテクストファイル660とにり実現
される。数人のユーザが同時にプロセッサエレメントで
実行してもよいとき、追加の情報のピース(片)が、命
令ソースおよびそれが利用可能ないずれの資源をも唯一
つ識別するため、その実行前に、各命令に付加されねば
ならない。例えば、レジスタ識別子がサブルーチン手続
レベルの絶対値とコンテクスト識別子ならびに実レジス
タ番号を包含しなければならない。メモリアドレスもま
た、命令がそれからLRD−メモリ相互接続ネットワーク
を通じて適当なデータキャッシュへ適当に送られるべく
発行(issue)されたところのLRD識別子を包含しなけれ
ばならない。追加および要求される情報は、静的および
動的構成成分の二つの成分を備え、そして情報は、「共
有コンテクストストーレッジマッピング」(SCSM)と称
される。静的情報は、コンパイラ出力から生じ、TOLLソ
フトウエアはコンパイラ生成命令ストリームから情報を
収集し、そしてレジスタ情報を、命令がLRDにより受容
されるまえに、命令に付加する。 動的情報は、プロセッサへの命令の発生のまえにLRD
により命令にハードウエア付加される。この情報は、命
令を発生するLRDに対応するコンテクスト/LRD識別子と
命令の現在手続レベルの絶対値と現在の命令ストリーム
のプロセス識別子と好ましくは通常コンテクスト自由で
ないプロセッサを有するシステムのプロセッサに包含さ
れるであろう命令ステータス情報とから構成される。こ
の後の情報は、誤りマスクと浮動小数点フォーマットモ
ードと丸めモードなどから構成されよう。 第16図の回路の動作において、一またはそれ以上の実
行セットが命令キャッシュ回路へ供給される。各セット
ごとのヘッダ情報は一またはそれ以上の連続するキャッ
シュパーティッション(区分)へ供給されそしてコンテ
クスト制御ユニット1660へ送られる。実行セットの命令
は次に、ラウンドロビン式に個々に各連続するキャッシ
ュパーティッションユニット1522へ送られる。ハードウ
エア識別タグが、各命令に付加されそして次に命令はRA
M1610に記憶される。先に説明したように、各実行セッ
トは、命令キャッシュ不履行(デフォールト)を最小限
にするよう十分な長さのものでありそしてRAM1610は実
行セットを記憶するのに十分な大きさのものである。プ
ロセッサエレメントが命令を要求するとき、適当なIFT
と整合する有効命令の数およびキャッシュロケーション
(場所)が決められる。RAM1610に記憶される命令は読
み出され、識別タグは確認され、特権ステータスが検査
される。命令は、次にPIQバスインターフェースユニッ
ト1544へ供給される。PIQバスインターフェースユニッ
ト1544へ供給される各命令は、第17表に示されるよう
に、識別子タグ(ID)およびハードウエア付加SCSM情報
を含む。 第17表 キャッシュ0:I4(T16)(PE2)(ID2)(SCSM0) キャッシュ1:I2(T17)(PE0)(ID3)(SCSM1) キャッシュ2:I0(T16)(PE0)(ID0)(SCSM2) I5(T17)(PE1)(ID4)(SCSM3) キャッシュ3:I1(T16)(PE1)(ID1)(SCSM4) I3(T18)(PE0)(ID5)(SCSM5) もし、命令がRAM1610に記憶されていないならば、キ
ャッシュミスが生じ、そして命令を包含する新しい実行
セットが線路1523を通じて主メモリから読み取られる。 第17図ではPIQバスインターフェースユニット1544お
よびPIQバッファユニット1560の詳細が示されている。
第17図を参照すると、PIQバスインターフェースユニッ
ト1544は上の第17表に示されているような命令を線路15
36を通じて受容する。正しい発火時間を有する命令を包
含するこれらのサーチないし探索タグハードウエア1702
が線路1549を通じて現在の命令発火時間の値へアクセス
できそしてキャッシュメモリ1522を検索し、正しい発火
時間を有する命令を包含するこれらのレジスタのアドレ
スを決める。PIQバスインターフェース1544への供給の
ため、どの命令が次に選択すべきかを命令キャッシュ制
御回路系により決定するために、検索タグハードウエア
1702は次に、これらのメモリロケーションのアドレスを
命令キャッシュ制御回路系1518に対して利用可能にす
る。 これらの命令は、並列にバスインタフェースユニット
(BIU)1700の2次元配列にアクセスする。バスインタ
ーフェースユニット1700は、接続1710および1720により
フルアクセス非ブロッキングネットワークで相互接続さ
れ、そして線路1522を通じてPIQバッファユニット1560
へ接続する。各バスインターフェースユニット(BIU)1
700は、T1 74L85の4ビットの大きさのコンパレータ
(テキサス州75265、ダラス、ピーオーボックス225012
のテキサスインスツルメント社)から構成される。命令
発火時間T16に対して、マトリックスマルチプライ例に
おいて、キャッシュ0が命令I4を包含しそしてキャッシ
ュ3(第17図のキャッシュnに対応する)が命令I1を包
含する。命令I4に割り当てられる論理プロセッサ番号は
PE2である。論理プロセッサ番号PE2はプロセッサ命令キ
ュー2(これは、命令を包含するキャッシュ0ユニット
に対応するBIU3である)のため、バスインターフェース
ユニット1700の選択(SEL)信号が賦活される。この例
では、BIU3だけが賦活されそしてこのBIU3行および列に
対し残りのバスインターフェースユニットは賦活されな
い。同様に、キャッシュ3(第17図のキャッシュn)に
対し、対応するBIU2は、プロセッサ命令キュー1に対し
て賦活される。 PIQバッファユニット1560は、第18表に示されるファ
ーストインファーストアウト(FIFO)方法でPIQバスイ
ンターフェースユニット1544から受容される命令を記憶
する複数のプロセッサ命令キュー1730から構成される。 第18表 PIQ0 PIQ1 PIQ2 PIQ3 I0 II I4 −− I2 −− −− −− I3 −− −− −− 命令キューイング機能を実行するのに加えて、PIQ173
0はまた、プロセッサエレメント640へ発行される各命令
の実行ステータスをトラックを追跡する。理想的なシス
テムでは、命令は、命令が実行を完了したかどうかにつ
いて顧慮することなく、クロックサイクルごとにプロセ
ッサエレメントへ発行できよう。しかし、システムのプ
ロセッサエレメント640は、例えばデータキャッシュミ
スなど例外的条件の発生によりクロックサイクルごとに
命令を完了できないこともあろう。その結果、各PIQ173
0は、まだ実行状態のプロセッサエレメント640へ発行さ
れたすべての命令を追跡する。この追跡の主要な結果
は、PIQ1730がLRD620のため命令クロッキング機能を実
行することである。別言するとPIQ1730は、直線コード
(straightline code)を実行しているとき、次の発火
時間レジスタが更新されるときを決定する。これはつぎ
に、新しい命令取出しサイクルを開始する。 命令クロッキングが、所与のPIQにより発行される命
令が実行されたか、またはパイプライン構成ないし結合
されるPEの場合には、次のステージ(段階)へ進行した
かを特定することを、各PIQ1730に命令済み信号を形成
させることにより実現される。これは、次に、このLRD
からのすべての別のPIQ命令済み信号と組み合されそし
て次発火時間レジスタをインクリメントするインクリメ
ント信号をゲートするのに使用される。「済み」信号
は、線路1564を通じて、命令キャッシュ制御1518へ供給
される。 第18図を参照すると、PIQプロセッサ割当て回路1570
は、PE−LRDネットワーク650へそしてつぎに種々のプロ
セッサエレメント640へフルアクセススイッチとして相
互接続されるネットワークインターフェースユニット
(NIU)11800の2次元配列を包含する。各ネットワーク
インターフェースユニット(NIU)1800は図17のバスイ
ンターフェースユニット(BIU)1700と同様の回路系か
ら構成される。通常の動作において、プロセッサ命令キ
ュー#0(PIQ0)は、キュー#0に対応する列に関連さ
れるNIU0を賦活することにより直接プロセッサエレメン
ト0をアクセスでき、その列および行に対しPIQプロセ
ッサ整列回路の残りのネットワークインターフェースユ
ニットNIU0、NIU1、NIU2、NIU3は非賦活される。同様
に、プロセッサ命令キュー#(PIQ3)は通常、キュー#
3に関連の列のNIU3を賦活することによりプロセッサエ
レメント3をアクセスし、その列および行の残りのNIU
0、NIU1、NIU2およびNIU3は賦活されない。ネットワー
クインターフェースユニット1800の賦活は、命令選択お
よび割当て回路1810の制御下にある。 ユニット1810が、ユニット1810がメンバであるLRD内
にPIQ1730から線路1811を通じてまた線路1813を通じて
(別のLRDの)別の全てのユニット1810からそしてネッ
トワーク650を通じてプロセッサエレメント640から信号
を受容する。各PIQ1730は、“I have an instruction t
hat is ready to be assigned to a processor"に対応
する信号をユニット1810に供給する。別のPIQバッファ
ユニットは、このユニット1810およびすべての別のユニ
ット1810に、“My PIQ1730(#x)has an instruction
ready to be assigned to a processor"に対応する信
号を供給する。最後に、プロセッサエレメントはシステ
ムで各ユニット1810に、“I can accept a new instruc
tion"に対応する信号を供給する。 一LRDのユニット1810は、線路1811を通じてそのLRDの
複数のPIQ1730へまた線路1860を通じてそのLRDのネット
ワークインターフェースユニット1800へそして線路1813
を通じてシステムの別のLRDの別のユニット1810へ信号
を伝達する。ユニット1810は、“Gate your instructio
n onto the PE−LRD interface bus(650)”に対応す
る信号を各PIQ1730へ伝達する。ユニットは、選択信号
をネットワークインターフェースユニット1800へ伝達す
る。最後に、ユニットは“I have used processor elem
ent#x"に対応する信号を、使用されつつある各プロセ
ッサに対しシステムの各別のユニット1810へ伝達する。 さらに、各LRDの各ユニット1810は、LRDの優先順位に
対応する優先順位をそれに関連して有する。これは、複
数LRDを、ゼロからシステムのLRDの数へと上行する順序
に並べるのに使用される。プロセッサエレメントを割当
てるのに使用される使用される方法は次の通りである。
複数LRDが並べられるとすると、多くの割当て方式が可
能である(たとえば、ラウンドロビン、ファーカムファ
ーストストサーブド(first come first served)、タ
イムスライスなど)。しかし、これらは、実施細目であ
りまた本発明の教示に基づくこの装置の機能に影響を与
えるものではない。 現在最も高い優先順位をもつLRDを考察する。このLRD
は、それが要求する全てのプロセッサエレメントを得、
そして実行されるべき用意の整った命令を利用可能なプ
ロセッサエレメントに割り当てる。もし、プロセッサエ
レメントがコンテクストフリーであるならば、どのよう
な仕方でも割り当てることができる。しかし一般に、す
べてのプロセッサが正しく機能していると仮定するなら
ば、もちろんプロセッサエレメント#0が利用可能であ
るとして、PIQ#0からの命令がプロセッサエレメント
#0へ送られる。 最も高い優先順位のLRDでユニット1810は次にこの情
報をシステムの別のすべてのユニット1810へ伝達する。
オープン状態のいずれのプロセッサも次に、実行可能な
命令と一緒に次に最も高い優先順位のLRDにより利用さ
れる。この割当ては、全てのプロセッサが割り当てられ
るまで継続する。それゆえ、プロセッサはデイジーチェ
イン態様の優先順位に基づいて割り当てられる。 もし特定のプロセッサエレメントが、例えば、エレメ
ント1が障害を起こしたならば、命令選択割当てユニッ
ト1820は、全てのネットワーク命令ユニットNIU1を非活
動化することにより、このプロセッサエレメントを非活
動化できる。それは次に、例えばプロセッサエレメント
2がプロセッサエレメント1に論理的に割り当てられる
全ての命令を受容し、プロセッサエレメント3が、プロ
セッサ2に論理的に割り当てられる全ての命令を受容す
るため、ここに割り当てることができるよう(以下同
様)、ハードウエアを通じてプロセッサエレメントを整
理し直しことができる。実際、余分なプロセッサエレメ
ントおよびネットワークインターフェースユニットが、
高い程度の障害許容限界を提供するためシステムに用意
できる。 明らかに、これは単に可能な実施の一つである。別の
種々の方法もまた実現可能である。 b.分岐実行ユニット(BEU) 第19図を参照すると、分岐実行ユニット(BEU)1548
は、本発明では、各基本ブロックの終了で生ずるすべて
の分岐命令の実行に責任のあるユニットである。例示の
実施例では、サポートされる各コンテクストごとに一つ
のBEU1548があり、それで、第6図を参照して、“n"個
のサポートされるコンテクストが“n"個のBEUを必要と
する。各BEUは簡単な設計のものでありそれゆえ複数の
コンテクスト間でBEUを共有する費用は、各コンテクス
トにそれ自身のBEUを持たせるようにすることよりもよ
り高価であろうから、例示の実施例は、各サポートされ
るコンテクストごとに一つのBEUを使用する。 BEU1548は、分岐命令がPE640の外側で実行されること
以外は、従来の仕方で分岐を実行する。BEU1548は、分
岐条件を評価し、そして、目標アドレスが選択されると
き、このアドレスを生成しそして次命令取出しレジスタ
へ直接入れる。目標アドレス生成は、手続呼出しまたは
復帰でない無条件および条件分岐については従来のもの
である。目標アドレスは、(a)命令から直接または
(b)次命令取出しレジスタの現在の内容からのオフセ
ットまたは(c)コンテクストレジスタファイルの汎用
目的レジスタのオフセットから取られる。 サブルーチンからの復帰分岐が、わずかに異なる態様
で処理される。サブルーチン復帰分岐を理解するため
に、サブルーチン呼出し分岐の説明が必要である。分岐
が実行されるとき、復帰アドレスが生成されそして記憶
される。復帰アドレスは通常は、サブルーチン呼出しに
続く命令のアドレスである。復帰アドレスは、メモリに
積重ねて(stack)または分岐実行ユニットに対して別
の記憶場所に記憶される。さらに、サブルーチン呼出し
の実行は手順レベルカウンタをインクリメントする。 サブルーチン分岐からの復帰はまた無条件分岐であ
る。しかし、命令内に目標アドレスを包含するのではな
く、このタイプの分岐は、先に記憶された復帰アドレス
を記憶装置から読み取り、手順レベルカウンタをデクリ
メントし、そして次命令取出しレジスタに復帰アドレス
をロードする。本開示の残りの部分では、条件分岐の評
価および実行を論述する。開示の技術はまた無条件分岐
にも適用されることに注意されたい。なぜならこれらは
本質的に、条件が常に満足されている条件分岐であるか
らである。さらに、同様の技術もまたサブルーチン呼出
しおよび復帰分岐に適用され、これは上に開示の追加の
種々の機能を遂行する。 条件分岐を速くするため、条件分岐が取られるか否か
の決定は、条件コードの適当な組と分析にのみに依存す
る。本発明の教示により、条件コードを適当に処理する
こと以外、なんらのデータの評価も行なわれない。さら
に、分岐が使用する条件コードを生成する命令が、コー
ドをBEU1548ならびに条件コード記憶装置へ伝達でき
る。これは、BEUがそれを取出すことができる前に、コ
ードが条件コード記憶装置で有効となるのに必要とされ
る従来の余分の待ち時間を除去する。 本発明はまた、プログラム正確さを保証するため、遅
延分岐動作(branching)の広範な使用をも行なう。分
岐が実行されそしてその効果がシステムを伝達している
とき、分岐の手順領域内にあるすべての命令は、第6表
の例に関連して論述されたように、実行されているかま
たは実行されつつあるプロセスにあるはずである。別言
すると、(分岐に応答して)次命令ポインタを変化させ
ることは、分岐の最後の(一時的に実行される)命令に
続く発火時間を指すために、現在の発火時間が更新され
た後で、起こる。それゆえ、第6表の例では、発火時間
T17の命令I5が、この基本ブロック対する最後の発火時
間であるT18の完了まで、遅延される。次基本ブロック
に対する命令時間はそれでT19である。 BEU1548の機能は、4状態式状態マシンとして説明で
きる。 段階1:命令デコード −動作デコード −遅延フィールドデコード −条件コードアクセスデコード 段階2:条件コード取出し/受容 段階3:分岐動作評価 段階4:次命令取出し ロケーションおよび発火時間更新 遂行されるべき動作の決定と一緒に、第1段階はまた
BEUによる分岐の受取り後起こる取出し動作(fetchin
g)がどのくらいの長さ継続できるかをそしてBEUが条件
分岐に対しどのように条件コードにアクセスするか、す
なわちどのように条件コードが受容または取出されるか
をも決定する。 第19図を参照すると、分岐命令は、バス1546を通じ
て、PIQバスインターフェースユニット1544からBEU1548
の命令レジスタ1900へ供給される。命令レジスタ1900の
フィールドは、FETCH/ENABLE(取出し/イネーブル),C
ONDITION CODE ADDRESS(条件コードアドレス),OP COD
E(操作コード),DELAY FIELD(遅延フィールド)およ
びTARGET ADDRESS(目標アドレス)のように指示され
る。命令レジスタ1900は、線路1910a〜bを通じて条件
コードアクセスユニット1920へ、線路1910cを通じて評
価ユニット1930へ、線路1910dを通じて遅延ユニット194
0へそして線路1910eを通じて次命令インターフェース19
50へ接続される。 ひとたび、命令がPIQバスインターフェースユニット1
544からBEU1548へ発行されると、命令取出し動作は、遅
延フィールドの値が決定されるまで、停止(ホールドア
ップ)されねばならない。この値は、BEUにより分岐の
受取りに関連して測定される。これが段階1である。も
し、この分岐と重複可能な命令がないならば、このフィ
ールド値はゼロである。この場合、命令取出しが、分岐
の結果が決定されるまで、停止される。もしこのフィー
ルドがゼロでないならば、命令取出しが、このフィール
ドの値により与えられる多くの発火時間の間、継続可能
である。 条件コードアクセスユニット1920は、線路1550を通じ
てレジスタファイル−PEネットワーク670へまた線路192
2を通じて評価ユニット1930へ接続される。段階2動作
中、条件コードアクセスデコードユニット1920は、条件
コードが命令により取り出されねばならないかどうかを
または分岐条件を決定する命令が条件コードを供給する
かを決定する。条件分岐を決定する基本ブロックあたり
唯一つの命令があるので、基本ブロックに対してBEUに
より受容される一つよりも多い条件コードは決してな
い。その結果、条件コードがいつ受容されるかの実際の
タイミングは重要ではない。もし、それが分岐よりも早
く来るならば、分岐の実行前の前に他のコードが受容さ
れることはない。もし、それが遅く来るならば、分岐は
待機し、そして受容されるコードは常に適切なものであ
る。基本ブロックに対し条件コードは、BEUにより同時
にまたは異なる時間に受容される複数のコードを含むこ
とができることに注意されたい。 評価ユニット1930は、線路1932を通じて次命令インタ
ーフェース1950へ接続される。次命令インターフェース
1950は、線路1594を通じて命令キャッシュ制御回路1518
へ、そして線路1942を通じて遅延ユニット1940へ接続さ
れる。そして、遅延ユニット1940はまた、線路1549を通
じて命令キャッシュ制御ユニット1518へも接続される。 動作の評価段階中、条件コードは、検査されている条
件を表示するブール関数に応じて、組み合わされる。動
作の最終段階では、もし条件分岐が取られないないなら
ば、逐次(シーケンシャル)命令ストリームの取出しを
継続するかまたは、もし、分岐が取られるならば、次命
令ポインタがロードされる。 命令ストリームでの分岐の影響は以下のように説明で
きる。論述するように、命令が、レジデント論理プロセ
ッサ番号(LPN)の分析により命令の各PIQ1730へ送られ
る。、命令取出しが、分岐に出会うまで、すなわち、命
令がBEU1548の命令レジスタ1900へ供給されるまで、継
続される。この点で、遅延分岐のない従来のシステムで
は、取出しが、分岐命令の決定が完了するまで停止され
よう。例えば、ジェイエフ ケー リー(J.F.K.LEE)
およびエイ ジェイ スミス(A.J.Smith)によるIEEE
Computer Magazine(1984年1月)の“Branch Predicti
on Strategies and Branch Target Buffer Design"を参
照されたい。遅延分岐動作を包含する本システムでは、
命令が、取出される次命令が実行されるべき基本ブロッ
ク最後の命令であるまで、取出されるべく継続しなけれ
ばならない。分岐が実行される時間はそれで、命令の取
出し動作が次命令アドレスを変更する可能性なしに起こ
る最後の時間である。こうして、分岐が取り出されると
きと分岐の影響が実際に感知されるときとの間の差は、
取出し動作が継続できる追加の発火時間サイクルの数に
対応する。 この遅延の影響は、BEU1548が、キャッシュコントロ
ーラ1518の次命令発火時間レジスタにアクセスしなけれ
ばならないことである。さらに、BEU158は、命令キャッ
シュ制御ユニット1518により遂行される命令取出しプロ
セスの開始または不能化(disabling)を制御できる。
これらのタスクは、バス1549を通じる信号により達成さ
れる。 動作では、分岐実行ユニット(BEU)1548は次のよう
に機能する。例えば上の例での命令I5などの分岐命令
は、PIQバスインターフェースユニット1544から命令レ
ジスタ1900へロードされる。命令レジスタの内容はそれ
でBEU1548の以後の動作を制御する。FETCH−ENABLEフィ
ールドは、条件コードアクセスユニット1920は、CC−AD
Xフィールドに記憶されるアドレスに配置される条件コ
ードを検索すべきか否か(呼出しFETCH)または条件コ
ードが生命命令により供給されるかどうかを指示する。 もし、FETCHが要求されるならば、ユニット1920は、
第20図に図示される条件コード記憶装置2000へアクセス
するため、レジスタファイル−PEネットワーク670へア
クセスする(第6図参照)。第20図を参照すると、各コ
ンテクストファイルに対し条件コード記憶装置2000が、
一般化された場合にて図示されている。一組のレジスタ
CCxyが、手順レベルyに対し条件コードを記憶するため
提供される。それゆえ、条件コード記憶装置2000は、FE
TCH要求に応じて、必要な条件コードを検索するため
に、ユニット1920によりアクセスされそしてアドレスさ
れる。実条件コードおよび条件コードがユニット1920に
より受容されることの指示は、線路1922を通じて評価ユ
ニット1930へ供給される。評価ユニット1930へ供給され
るOPCODEフィールドは、受容される条件コードと共に、
分岐取り信号を線路1932を通じて次命令インターフェー
ス1950へ供給するよう機能する。評価ユニット1930は、
例えばカリフォルニア95035のミルピタス(Milpitas)
のマクカーシーブルバード(McCarthy Blvd.)1551のLS
I Logic Corporationからの標準のゲートアレイなどか
ら構成される。 評価ユニット1930は、条件分岐が取られるか否かを決
定する条件コードセットを受け取り、そしてOPCODEフィ
ールドの制御のもとで、条件分岐取り信号を生成するた
め、ブール関数で条件コードセットを組み合わせる。 次命令インターフェース1950は、命令レジスタ1900の
TARGET−ADXフィールドから分岐目標アドレスをそして
線路1932を通じて分岐取り信号を受け取る。しかし、イ
ンターフェース1950は、イネーブル信号が線路1942を通
じて遅延ユニット1940から受け取られるまで、動作でき
ない。 遅延ユニット1940は、命令取出し動作が、BEUによる
分岐命令の受取りの後、継続できる時間の量を決定す
る。先に、分岐命令がBEUにより受け取られるとき、命
令取出し動作が、一よりも多いサイクルの間継続しその
後停止することを説明した。このサイクル中取り出され
る命令は、遅延フィールドの長さが決定されるまで、PI
Qバスインターフェースユニット1544の通過を阻止され
る。たとえば、もし遅延フィールドがゼロである(分岐
が即座に実行されることを意味する)ならば、これらの
命令は、それらが取り出されるべき正しい命令であるか
どうかが決定されるまで、PIQバスバッファユニットへ
は依然として与えてはならない。もし、遅延フィールド
がゼロでないならば、遅延値がゼロであるべく決定され
たらすぐにPIQバッファユニットへゲートされるであろ
う。遅延の長さは、命令レジスタ1900のDELAYフィール
ドから得られる。遅延ユニットは、レジスタ1900から遅
延長さをそして線路1549を通じてコンテクスト制御1518
からクロックインパルスを受容する。遅延ユニット1940
は、各クロックパルスで遅延の値をデクリメントしそし
て完全にデクリメントされるとき、インターフェースユ
ニット1950はイネーブルとなる。 それゆえ、第6表の論述では、命令I5が発火時間T17
を割り当てられるが、発火時間T18まで遅延される。遅
延時間中、インターフェース1950は、命令の取り出しを
継続して現在の基本ブロックを終了するため、線路1549
を通じて命令キャッシュ制御1518に合図する。イネーブ
ルされるとき、インターフェースユニット1950は、次基
本ブロックに対し、次アドレス(すなわち分岐実行アド
レス)を、線路1549を通じて命令キャッシュ制御1518へ
供給する。 要約するとそして第16表の例に対し、分岐命令I5は時
間T17中命令レジスタ1900へロードされる。しかし、最
後の命令I3が時間T18中に処理されるまで分岐命令は実
行できない場合、一つの発火時間の遅延(DELAY)もま
た命令レジスタ1900へロードされる。それゆえ、たとえ
命令I5がレジスタ1900にロードされても、TARGET ADDRE
SSに包含される次基本ブロックに対し分岐アドレスは時
間T18の完了までは有効とはならない。話が変わって次
命令インターフェース1950は、基本ブロックで命令のス
トリームの処理を継続するためキャッシュ制御1518へ命
令を発行する。遅延の終結により、インターフェース19
50はイネーブルされ、そして次基本ブロックのアドレス
を命令キャッシュ制御1518へ供給することにより、分岐
は実行される。 遅延フィールドは、単一サイクルコンテクストフリー
PEでこの分岐により支配される基本ブロックのすべての
命令の実行を保証するのに使用されることに注意された
い。PEがパイプライン構成されるとき、小さな複雑さに
遭遇する。この場合、ちょうど実行されている基本ブロ
ックからの命令と実行されるべき基本ブロックからの命
令との間に、データ依存性がある。TOLLソフトウエア
は、次基本ブロックがこの基本ブロックからの分岐によ
ってだけ目標とされるとき、これらの依存性を分岐でき
る。もし、次基本ブロックが一よりも多い分岐により目
標とされるならば、TOLLソフトウエアは、種々の分岐可
能性を分解できずそしてパイプラインに発火させるの
で、なんらデータ依存性は破られない。パイプラインが
発火するのを許容するための一つの機構、NO−OP(no o
peration,ノーオペレーション)命令を命令ストリーム
へ挿入することである。代替え方法では、エクストラフ
ィールドを分岐命令に用意し、この命令で、エクストラ
フィールドのデータにより決定される時間の間プロセッ
サエレメントへの新命令の供給を禁止する。 c.プロセッサエレメント(PE) マトリックスマルチプライ例に関する論述では、単一
サイクル(シングルサイクル)プロセッサエレメントを
仮定した。別言すると、命令がプロセッサエレメントへ
発行され、そしてプロセッサエレメントは、次命令は進
行するまえに、命令を完全に実行する。しかし、より大
きな性能が、パイプライン構成されるプロセッサエレメ
ントを採用することにより得られる。それにより、TOLL
ソフトウエアにより遂行されるタスクはわずかに変化す
る。特に、プロセッサエレメントの割当ては、先の例で
示されるものよりも複雑であり、パイプラインプロセッ
サを特長付けるハザード(偶発的事象)は、TOLLソフト
ウエアにより取り扱われねばならない。パイプライン構
成されるいずれのプロセッサにも存在するハザードは、
より高度に複雑な一組のデータ依存性としてそれらハザ
ード自体が現れる。これは、従来技術に精通したものに
より、TOLLソフトウエアに符号化できる。例えば、スタ
ンフォード大学のティーケーアールグロス(T.K.R.Gros
s)による学位論文“Code Optimization of Pipeline C
onstraints"(1983)を参照されたい。 プロセッサの割当ては、パイプラインの実施に依存し
そしてここで再び従来技術に精通したものにより遂行で
きる。キーパラメータが、パイプライン間でいかにデー
タか交換されるかを決定する。たとえば、各パイプライ
ンが、そのステージ間でフィードバックパスを包含する
と仮定する。さらに、パイプラインは、レジスタセット
660を通じてのみ結果を交換できると仮定する。複数の
命令が、命令ストリームに包含される数組の依存命令を
決めそして次に各特定の集まりを特定のパイプラインに
割当てることにより、パイプラインへ割り当てられる。
これは、(レジスタセットを経由して)パイプライン間
で起こらねばならない通信の量をできるだけ最小なもの
とし、それゆえ、プログラムの実行時間を速くする。論
理プロセッサ番号の使用は、命令が同様のパイプライン
で実行するのを保証する。 代替え的に、もしパイプライン間でデータを交換する
のに利用できるパスがあるならば、依存性の命令が、単
一のパイプラインへ割り当てられるかわりに、いくつか
のパイプラインプロセッサに分配可能である。再び、多
量パイプラインの使用および中間結果の共有を許容する
パイプライン間の相互接続ネットワークは、命令ストリ
ームに課されるより高度に複雑な一組のデータ依存性と
してそれ自身が現れる。パイプライン構成されるシステ
ムへの本発明の考えの拡張は、当技術に精通するものの
技術の範囲内にあることは明らかである。 重要なことには、追加のデータ(チェイニング)パス
は、本発明のプロセッサエレメントの基本のコンテクス
トフリー性を変化しない。すなわち、いずれの所与の時
間(たとえば、いずれの所与の命令サイクルの完了)で
も、所与のプログラム(すなわち、コンテクスト)に関
連の全プロセス状態は、プロセッサエレメントの完全に
外側で補足される。データチェイニングは、特定の命令
クロックサイクル中、プロセッサエレメント内に発生さ
れるデータのあるものの一時的反復を生ずるだけであ
る。 第21図を参照すると、特定のプロセッサエレメント64
0が、4状態式パイプラインプロセッサエレメントを有
する。例示の実施例に応じてすべてのプロセッサエレメ
ント640は同様である。例えば、マイクロプロセッサま
たは別のパイプラインアーキテクチャーなど従来のいず
れのタイプのプロセッサエレメントも本発明の教示のも
とで、使用できないことが深く理解されるべきである。
なぜなら、この種のプロセッサは、それらのプロセッサ
が処理しているプログラムの実質的な状態情報を保持す
るからである。しかし、この種のプロセッサは、本発明
に必要なタイプのプロセッサをエミュレートまたはシュ
ミレートするよう、ソフトウエアでプログラムできる。
プロセッサエレメントの設計は、TOLLソフトウエアによ
り生成される命令セットアーキテクチャーにより決定さ
れ、それゆえ、概念的観点から、本発明の実施に最も依
存性の部分である。図21に図示される例示の実施例で
は、各プロセッサエレメントパイプラインが、システム
の別のプロセッサエレメントから自律的に動作する。各
プロセッサエレメントは同種のものであり、そして単独
で、すべての計算およびデータメモリアクセシング命令
を実行できる。計算の実行を行なう場合では、転送がレ
ジスタからレジスタでありそしてメモリインターフェー
ス命令に対しては、転送はメモリからレジスタへまたは
レジスタからメモリである。 第21図の参照すると、例示の実施例のプロセッサエレ
メント640に対する4状態パイプラインは、4つの別々
の、命令レジスタ2100、2110、2120および2130を含む。
各プロセッサエレメントはまた、4つの段階(段階1、
2140と段階2、2150と段階3、2160と段階4、2160)を
も含む。第1命令レジスタ2100はネットワークを通じて
PIQプロセッサ割当て回路1570へ接続されそしてその情
報をバス2102を通じて受容する。命令レジスタ2100は次
に、命令デコードおよびレジスタ0取出しおよびレジス
タ1取出しのハードウエア機能を含む段階1の動作を制
御する。第1段階2140は、線路2104を通じて命令レジス
タへそして線路2142を通じて別の命令レジスタ2110へ相
互接続される。第1段階2140はまた、バス2144を通じて
第2段階2150へも接続される。段階1のレジスタ0の取
出しおよびレジスタ1の取出しは、レジスタファイル66
0へのアクセスのため、それぞれ、線路2146および線路2
148を通じて、ネットワーク670へ接続される。 第2命令レジスタ2110はさらに、線路2112を通じて第
3命令レジスタ2120へそして線路2114を通じて第2段階
2150へ相互接続される。第2段階2150はまた、バス2152
を通じて第3段階2160へも接続されそして、線路2156を
通じネットワーク670を通じてコンテクストファイル660
のの条件コード記憶装置へ接続される条件コード(CC)
ハードウエアおよびレジスタファイル660へのアクセス
のため、線路2154を通じてネットワーク670へ相互接続
されるメモリ書き込み(MEM WRITE)レジスタ取出しハ
ードウエアを有する。 第3命令レジスタ2120は、線路2122を通じて第4命令
レジスタ2130へ相互接続されさらに線路2124を通じて第
3段階2160へも接続される。第3段階2160は、バス2162
の通じて第4段階2170へ接続されさらに線路2164を介し
てネットワーク650を通じてデータキャッシュ相互接続
ネットワーク1590へ相互接続される。 最後に、第4命令レジスタ2130は、線路2132を通じて
第4段階へ相互接続されそして第4段階は線路2172の通
じて接続されるその記憶ハードウエア(STORE)出力お
よびレジスタファイル660へのアクセスのため、線路217
4を通じてネットワーク670へ接続されるその有効アドレ
ス更新(EFF.ADD.)ハードウエア回路を有する。さら
に、第4段階は、線路2176を介しネットワーク670を通
じてコンテクストファイル660の条件コード記憶装置へ
接続されるその条件コード記憶(CC STORE)ハードウエ
アを有する。 第21図に図示される4段階パイプラインの動作は、第
1表の例および各命令に対するプロセッサエレメントの
動作を説明する第19表に包含される情報について論述す
る。 第19表 命令I0,(I1) 段階1−Fetch Reg to form Mem−adx 段階2−Form Mem−adx 段階3−Perform Memory Read 段階4−Store R0,(R1) 命令I2 段階1−Fetch Reg R0 and R1 段階2−No−Op 段階3−Perform multiply 段階4−Store R2 and CC 命令I3 段階1−Fetch Reg R2 and R3 段階2−No−Op 段階3−Perform addition 段階4−Store R3 and CC 命令I4 段階1−Fetch Reg R4 段階2−No−Op 段階3−Perform decrement 段階4−Store R4 and CC 命令I0およびI1に対し、第21図のプロセッサエレメン
ト640による動作は、段階4のもの以外同様である。第
1段階は、レジスタファイルにアドレスを包含するレジ
スタからメモリアドレスを取り出すことである。それゆ
え、段階1は、回路系2140の線路2146を介しネットワー
ク670を通じてそのレジスタへ相互接続しそして段階1
のインターフェースからレジスタ0へそれをダウンロー
ドする。次に、アドレスは、バス2144を通じて段階2へ
供給されそしてメモリ書き込みハードウエアは、メモリ
アドレスを形成する。メモリアドレスは次に、2164を介
しネットワーク650を通じてデータキャッシュ相互接続
ネットワーク1590にメモリを読む第3段階へバス2152を
通じ供給される。読み動作の結果は、レジスタR0で記憶
のため、次に記憶されそして段階4へ供給される。段階
4は線路2172の介しネットワーク670を通じてデータを
レジスタファイルのレジスタR0へ供給する。同様の動作
が、結果がレジスタ1に記憶されること以外、命令I1に
対し起こる。それゆえ、パイプラインの4段階(取り出
し、メモリアドレス形成、メモリ読み取り、結果の記
憶)は、論述される仕方で、パイプを通じデータを流
し、そして命令I0が段階1を通過したとき、命令I1の第
1段階は開始する。この重複またはパイプリング(pipe
ling)は従来と同様である。 命令I2が、レジスタファイル660のレジスタR0およびR
1に記憶される情報を取り出し、そしてそれらを段階1
のレジスタREG0およびREG1へ供給する。内容は、バス21
44を介し段階2を通じてノーオペレーションとして供給
されそしてつぎにバス2152を通じて段階3へ供給され
る。二つのレジスタの内容と一緒にマルチプライが生
じ、結果は、バス2162を通じて段階4へ供給され、段階
4は、次に、線路2172を介しネットワーク670を通じて
レジスタファイル660のレジスタR2へ結果を記憶する。
さらに、条件コードデータは、コンテクストファイル66
0の条件コード記憶装置に線路2176を通じて記憶され
る。 命令I3が、同様の仕方で、段階4で結果をレジスタR3
に記憶しそしてその命令に対し条件コードデータを更新
するため、レジスタR2およびR3でのデータの追加を行な
う。最後に、命令I4が、レジスタR4の内容のデクリメン
トを遂行する。 それゆえ、第1表の例に応じて、PE0に対する命令
は、次の順序(I0,I2およびI3)でPIQ0から供給されよ
う。これらの命令は、次のように、命令発火時間(T16,
T17およびT18)に基づいて、PE0パイプライン段階を通
じて送られよう。 第20表 PE Inst T16 T17 T18 T19 T20 T21 PE0: I0 S1 S2 S3 S4 I2 S1 S2 S3 S4 I3 S1 S2 S3 S4 PE1 I1 S1 S2 S3 S4 PE2 I4 S1 S2 S3 S4 第20表に例示の計画は、しかし、データチェイニング
がパイプラインプロセッサ(自プロセッサ内データチェ
イニング)内ならびにパイプラインプロセッサ(内部プ
ロセッサデータチェイニング)間に導入されなければ可
能でない。データチェイニングに対する要求は、命令
が、例えば命令発火時間T16により例示される単一時間
サイクル内でもはや完全に実行しないから、生ずる。こ
うして、パイプラインプロセッサに対し、TOLLソフトウ
エアは、命令I0およびI1の段階4(T19)で生ずる記憶
の結果が命令I2の段階3(T19)で掛け(マルチプラ
イ)を遂行するのに必要とされないこと、および、これ
らのオペランドの取り出し動作が命令I2の段階1(T1
7)で通常起こることを認めなければならない。それゆ
え、パイプラインの通常の動作では、プロセッサPE0お
よびPE1に対し、レジスタR0およびR1からのオペランド
データは、発火時間T18の終わりまで利用できないがそ
れは、時間T17で命令I2の段階1により必要とされる。 第20表に例示の計画に応じて動作するために、プロセ
ッサの内部およびプロセッサ間の両方にある追加のデー
タ(チェイニング)パスがプロセッサに利用可能とされ
なければならない。当業者にはよく知られているこれら
のパスはデータチェイニングパスである。それらのパス
は、第21図で、破線2180および2182として表示されてい
る。したがって、それゆえ、命令間のデータ依存性の分
解およびプログラム実行前のTOLLソフトウエアにより遂
行されるプロセッサ資源のすべてのスケジューリング
は、データを、たとえば同じプロセッサの一段階または
異なるプロセッサの段階などの出力から直接利用可能に
するのが必要とされるとき、データチェイニングの利用
性を考慮する。このデータチェイニング能力は当業者に
はよく知られており、そして、パイプラインプロセッサ
の各段階を、事実上種々の資源要求と、命令が或るパイ
プラインを通じて開始されるとき好ましくはそのプロセ
ッシング段階のすべてを通じその同じパイプラインで継
続するというある種の依存性とをもつ分離プロセッサで
あると認めることにより、TOLLソフトウエア分析で容易
に実施できる。これを考慮に入れると、プロセッシング
での高速化が、基本ブロックに対し三つのマシンサイク
ル時間がただ六つだけのパイプラインサイクルの時間で
完了される第20表で観察できる。パイプラインに対しサ
イクルタイムは、本発明の例示の実施例の非パイプライ
ンプロセッサに対し約1/4サイクルタイムであることを
心に留めておくべきである。 第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プロセッサアーキテクチャで利用でき
るアドレッシングのオートインクリメントおよびオート
デクリメントモードにより示される。例えば、DEX VAX
Arcitecture Handbookを参照されたい。 必要とされる明らかなハードウエアサポートに加え
て、有効アドレッシングはTOLLソフトウエアによりサポ
ートされ、そしてメモリアクセス動作命令へ機能性を付
加することによりTOLLソフトウエアに影響を与える。別
言すると、有効アドレスメモリアクセスが、第1の有効
アドレス計算と第2の実メモリアクセスとの二つの動作
の連結として解釈可能である。この機作性は、加算、減
算または乗算命令がそうであろうとほとんど同様の仕方
で、当業者によりTOLLソフトウエアに容易に符号化でき
る。 叙述の有効アドレッシング構成は、メモリアクセス動
作システムの単に可能な一つの実施例にすぎないものと
解釈されるべきである。当業者に知られている、メモリ
アドレスを生成するための別のたくさんの方法およびモ
ードがある。別言すると、上に叙述の有効アドレッシン
グ構成は、設計の完全性のためのものでありそしてシス
テムの設計でのキー要素と考えられるべきものではな
い。 第22図を参照すると、第21図のパイプラインプロセッ
サエレメントでの種々のデータまたはデータフィールド
の構成が、時間および空間の両方でマルチユーザ型のシ
ステムであるシステムに対し例示されている。結果とし
て、複数のパイプラインを横切って種々のユーザから複
数の命令が、おのおのそれ自身のプロセッサ状態をもっ
て、実行可能である。プロセッサ状態は通常はプロセッ
サエレメントと関連されないので、命令は、この状態を
特定する識別子を従えて伝達しなければならない。この
プロセッサ状態は、ユーザに割当てられるLRDとレジス
タファイルと条件コードファイルとによりサポートされ
る。 各メモリアクセスまたは条件コードアクセスまたはレ
ジスタアクセスがアクセスの目標を唯一識別できるよ
う、十分な量の情報が各命令に関連されねばならない。
レジスタおよび条件コードの場合では、この追加の情報
は、手順レベル(PL)の絶対値とコンテクスト識別子
(CI)とを構成し、そしてSCSM付加ユニット1650により
命令に付加される。これは、それぞれ第22aおよび22bお
よび22c図により例示される。コンテクスト識別子部分
は、どのレジスタまたは条件コードプレイン(第6図)
がアクセスされているかを決定するのに使用される。手
順レベルは、どのレジスタの手順レベル(第13図)がア
クセスされるべきかを決定するのに使用される。 メモリアクセスもまた、適当なデータキャッシュがア
クセスできるよう、現在の使用者をサポートするLRDが
識別されることを必要とする。これは、コンテクスト識
別子を通じて達成される。データキャッシュアクセスは
さらに、キャッシュにあるデータが実際所望されるデー
タであることを確認するため、プロセス識別子(PID)
が現在使用者に対し利用可能であることを必要とする。
こうして、データキャッシュに発行されるアドレスが、
第22d図の形をとる。寄せ集めフィールドは、例えば、
読取りまたは書込み、使用者またはシステムなどアクセ
スを記述する追加の情報から構成される。 最後に、単一時間間隔の間、パイプラインを横切って
実行する数人の使用者がいるのが可能であるという事実
により、命令の実行を制御しそして通常はパイプライン
に記憶されるであろう情報が、かわりに各命令に関連さ
れねばならない。この情報は、第22a図に図示されるよ
うに、命令ワードのISWフィールドで反映される。この
フィールドの情報は、エラーマスク、浮動少数点フォー
マットディスクリプター、丸めモードディスクリプター
などのような制御フィールドから構成される。各命令が
このフィールドに付加されるが、明らかに、すべての情
報を必要としなくてもよい。この情報は、プロセッサエ
レメントのALU段階2160により使用される。 ISWフィールドに関連するこの命令情報ならびに手順
レベル、コンテクスト識別およびプロセス識別子は、命
令が命令キャッシュから発行される場合に、SCSM付加装
置(1650)により動的に付加される。 本発明のシステムは上に開示のとおり説明されるけれ
ども、以下に続く請求の範囲の技術思想の範囲内で種々
の変更および修正が可能であることは明らかであろう。
し、特定すると、命令ストリーム内の、自然の同時的発
生、すなわち少なくとも二つの命令が他のいずれの命令
の処理とも干渉することなく同時に処理され得るような
命令の発生、を検出するためのソフトウェアを有しかつ
検出されたこうした命令をを処理するための複数のプロ
セッサ要素を設ける並列プロセッサコンピュータシステ
ムに関する。 ここで、自然の同時的発生、すなわち少なくとも二つ
の命令が他のいずれの命令の処理とも干渉することなく
同時に処理され得るような命令の処理は、たとえば、
“a=b+c"という簡単な例を考えると、本発明のシス
テムは“b"および“c"を同時にロードでき、その後、加
算を行って“b"および“c"の和の発生が生じる場合であ
る。それから和を“a"に格納する段階が続く。この2つ
のロード動作が命令から生ずる自然の同時的発生といわ
れるものである。本発明は、複数の命令が同時に実行さ
れる場合にプログラムにおけるかかる自然に生ずる状態
の存在を認識でき、プログラムの実行の時間を節約でき
るシステムに向けられるものである。 [従来の技術] ほとんどすべての従来のコンピュータシステムは、
「Von Neamann」構造より成る。事実、最初の4世代の
コンピュタは、データを逐次処理するために単一の大形
のプロセッサを使用するVon Neumann型マシンであっ
た。近年、Von Neumann型でない第5世代コンピュータ
の創生にかなりの努力が向けられて来ている。いわゆる
第5世代のコンピュータの1つの特徴は、多数のプロセ
ッサ要素を使用することにより並列計算を遂行できる能
力に関係する。超大規模集積(VLSI)の技術の進歩とと
もに、多数の個々のプロセッサ要素の使用の経済的価格
はその価格効率が高くなる。 実際の第5世代のマシンが構成されているかいないか
は議論のあるところであるが、種々の特徴が定義され、
分類されて来た。第5世代マシンは、単に第4世代マシ
ンの典型である単一命令、マルチプルデータでなく、マ
ルチプル命令、マルチプルデータ(MIMD)ストリームを
使用できなければならない。本発明は第5世代非Von N
eumann型より成る。本発明は、シングルコンテクスまた
はマルチプルコンテクストにおいてMIMDストリームを使
用できる(SC−MIMDまたはMC−MIMD)。これらの用語は
以下で定義かれる通りである。本発明はまた、シングル
コンテクストSIMD(SC−SIMD)マシンおよびマルチプル
コンテクストSIMD(MC−SIMD)ならびにシングルコンテ
クスト、シングル命令、シングルデータ(SC−SISD)マ
シンおよびマルチコンテクスト、シングル命令、シング
ルデータ(MC−SISD)マシンの全コンピュータの分類に
おいて応用を有するものである。 第5世代コンピュータシステムの設計は完全に流動状
態にあるが、特定のカテゴリのシステムが画定されて来
ている。斯界の研究者の中には、コンピュータの形式
を、システムの「制御」または「同期」が遂行される態
様に基づいて分けているものがいる。制御による分類に
は、制御駆動、データ駆動および低減(命令)駆動が含
まれる。制御駆動システムは、従属プロセッサによる処
理を制御するために、プログラムカウンタまたはマスタ
プロセッサのような集中化制御装置を利用する。制御駆
動マシンの例は、Columbia大学のNon−Von−1マシンで
ある。データ駆動システムにおいては、システムの制御
は、処理のために必要とされるデータの実際の到着から
行なわれる。データ駆動マシンの例は、Ian Wastsonに
より英国で開発されたManchester大学データフローマシ
ンである。低減駆動システムは、処理されたアクティビ
ティ要求が生ずるとき処理を制御する。低減プロセッサ
の例は、North Corolina大学で開発されつつあるMAGO
低減マシンである。Non−Von−1マシン、Manchesterマ
シンおよびMAGO低減マシンの特徴は、Davisの「conpute
r Archifecture」、IEEE Spectrum、1983年11月発
行、に論述されている。比較すると、データ駆動システ
ムおよび要求駆動システムは非集中化手法であり、制御
駆動システムは集中化手法を表わす。本発明は、「時間
駆動」と称することができる第4の分類に入れるのがよ
り適正である。本発明の制御システムは、データ駆動シ
ステムおよび命令駆動システムと同様に非集中化されて
いる。しかしながら、本発明では、制御駆動システムと
同様に、1つのアクティビティが実行の用意が整ってい
るとき処理が行なわれる。 並列処理の概念を含む殆んどのコンピュータシステム
は、多数の異なる形式のコンピュータアーキテクチャか
ら派生して来た。この場合、コンピュータアーキテクチ
ャの独特の性質のため、それ自信の処理言語、または既
存の言語が使用に適合するように相当変更されることを
要求される。この種のコンピュータアーキテクチャの高
度に平行化された構造を利用するため、プログラムは、
必要なソフトウェアを書くためにコンピュータアーキテ
クチャの親密な知識を有することが必要とされる。この
結果、これらの機械のプログラムの作成は、使用者の相
当量の努力と費用と時間を必要とする。 この活動と同時に、特定のアーキテクチャと無関係
に、新しいソフトウェアおよび言語の創生についての研
究が進行してきている。これは、より直接的態様で計算
プロセスの固有の平行化を解決するであろう。しかしな
がら、スーパーコンピュータの設計におけるたいていの
努力は、新しいハードウェアの開発に集中されており、
新しいソフトウェアに向けられた努力はずっと少ない。 Davisは、第5世代マシンの設計の最良の手法は、ソ
フトウェアにおける同時的プログラムタスクをコンピュ
ータアーキテクチャの物理的ハードウェア資源にマッピ
ングすることに努力を集中すべきであると推測した。Da
visは、この手法を「タスク割当て」の1つと名づけ、
第5世代アーキテクチャ成功の究極的なキーであると強
調する。彼は、割当ての方式を2つの一般的形式に分類
する。「スタティック割当て」は、実行前に一度遂行さ
れ、「ダイナミック割当て」は、プログラムが実行すな
わちランされるたびにハードウェアにより遂行される。
本発明は、スタティック割当て方式を利用し、編集後お
よび実行前に所与のプログラムに対してタスクの割当て
を行なう。第5世代マシンの設計における「タスク割当
て」手法の確認は、Vtah大学で構成された「Data−driv
enMahine−II」の設計でDavisにより行なわれた。「Dat
a−driven Machine−II」において、プログラムは、実
際のマシングラフまたはアーキテクチャを疑似するプロ
グラムグラフに編集された。 タスク割当てはまた、Gajski等の「Essential Issue
sin Multi−processor Systems」なる論文、Compute
r、1985年6月発行、において「スケジューリング」と
呼ばれている。Gajski等は、スケジューリングのレベル
について記載し、高レベルスケジューリング、中間レベ
ルスケジューリングおよび低レベルスケジューリングを
含むとした。本発明は、低レベルスケジューリングの1
つであるが、「ファースト−イン−ファースト−アウ
ト」、「ラウンド−ロビン」、「ショーティスト・タイ
プ・イン・ジョブ−ファースト」または「ショーティス
ト・リメインニング−タイム」の従来のスケジューリン
グの方策を利用しない。Gajski等はまた、オーバーヘッ
ドコストがコンパイル時間に払われるという点でスタテ
ィックスケジューリングの利用を認めている。しかしな
がら、Gajski等は、スタティックスケジューリングに関
して、各タスクのラン時間特性を推測する上で不効率が
あり得るという不利益を確認した(本発明においてはこ
れが存在しない)。それゆえ、Occam言語やBulldogコン
パイラにおいて見出される低レベルスタティックスケジ
ューリングに対する従来のアプローチは、本発明のソフ
トウェア部分には存在しない。実際に、本発明の低レベ
ルスタティックスケジューリングはランタイム時におけ
るマシンによるダイナミックスケジューリングにおいて
一般に見られるのと同じ形成でのプロセッサの利用、あ
るいはそれより十分の利用を可能する。さらに、本発明
の低レベルスタティックスケジューリングは、(例え
ば)OCCAM言語において必要とされるプログラマの介入
なしに自動的に遂行される。 Davisは、さらに、システムの実際の物理的トポロジ
ーがシステムの全性能に相当の影響を及ぼすという点に
おいて同時処理において通信が重要な特徴であることを
認めている。 例えば、たいていのデータフローマシンに見られる基
本的問題は、プロセッサ間においてデータを動かすのに
要する多量の通信オーバーヘッドコストである。データ
がバスを介して移動される場合には、データがバスにア
クセスするのに競合しなければならないから、相当のオ
ーバヘッドと、場合によってはシステムの劣化をもたら
すおそれがある。例えば、Davisの論文において言及さ
れるArvindデータフローマシンは、データを1位置に残
存させるためエーストラクチャストリームを利用する。
しかして、このデータは、その後全プロセッサによりア
クセス可能となるものである。本発明は、その一側面と
して、ハードウェアおよびソフトウェアを用い、ハード
ウェア資源を全体的に結合することに基づき、マルチ処
理を遂行するシステムに本質的に存在する通信の問題を
相当に簡単化する方法を教示する。 非Von Neumann型マルチプロセッサシステムの他の特
徴は、処理されつつある並列化の粗さのレベルである。
Gajski等はこれを「パーティショニング(区分化)」と
称した。Gajski等によるシステムの設計における目標
は、最低のオーバーヘッドコストでできるだけ並列化を
得ることである。本発明は、利用可能な最低のレベル
で、すなわち「命令当り」レベルで同時処理を遂行す
る。本発明の他の側面によれば、この並列化レベルを実
行時間オーバーヘッドコストなしに得る方法が得られ
る。 マルチプロッセッサ並列マシンに関してなされたすべ
ての成果に拘らず、Davisは、この種のソフトウェアや
ハードウェアが、主として個々のタスクに対して設計さ
れたものであり、Von Neumannアーキテクチャに関して
折紙つきであったすべての形式のタスクやプログラムに
対して可能的に適当でないことを認めた。本発明は、一
般的に多くの異なる形式のタスクに適当なコンピュータ
システムおよび方法に開示するものである。何故なら
ば、本システムおよび方法は、非常に繊細な粗度で命令
ストリームに存在する、他のいずれの命令の処理とも干
渉することなく同時に処理され得るような2以上の命令
に作用するからである。 すべての汎用コンピュータシステムおよび多くの専用
コンピュータシステムは、マルチアクティビティまたは
プログラムの処理を支持する動作システムまたはモニタ
/制御プログラムを有する。ある場合には、この処理は
同時に起こる。他の場合には、処理はアクティビティ間
で交番し、1時に1つのアクティビティのみが処理用資
源を制御することもある。この後者の場合は、特定のコ
ンピュータシステムに依存して、時分割、時スライシン
グまたは同時的(完全同時ではない)発生的実行と称さ
れることが多い。また、これらのアクティビティまたは
プログラムは、特定のシステムに依存して、普通、タス
ク、プロセスまたはコンテクストと呼ばれる。すべての
場合とも、種々のプログラム間、およびプログラムと動
作系間の制御のスイッチングを維持するための方法が存
在する。このスイッチングは、普通、タスクスイッチン
グ、プロセススイッチングまたはコンテクストスイッチ
ングと呼ばれる。本明細書を通じて、これらの用語は類
似語と考えられ、コンテクストおよびコンテクストスイ
ッチングなる用語を一般に使用してある。 それゆえ、本発明は、1または複数の異なる使用者
(ユーザ)により多くの異なる従来のプログラムに基づ
いて同時に動作し得る非Von Neumann型MIMDコンピュー
タシステムに関する。各プログラムの他のいずれの命令
の処理とも干渉することなく同時に処理され得るような
2以上の命令は、非常に細かいレベルの粗度でスタティ
ックに割り当てられ、そして本質的に目的コードレベル
で命令ストリームにインテリジェンスが加えられる。加
えられるインテリジェンスは、例えば、本発明のための
時間駆動非集中化制御を提供するため、論理プロセッサ
番号および命令発火時間を含むことができる。他のいず
れの命令の処理とも干渉することなく同時に処理され得
るような2以上の命令の検出および低レベルスケジュー
リング、およびインテリジェンスの追加は、所与のプロ
グラムに対して1回のみ、プログラムの従来の編集後実
行前にユーザの介入なしに行なわれる。このスタティッ
クな割当ての結果は、複数のプロセッサ要素を含むシス
テムで実行される。本発明の1実施例において、プロセ
ッサは同一である。この例示の実施例におけるプロセッ
サ要素は、種々の命令の実行から得られる実行状態情報
を含まない。すなわち、プロセッサ要素はコンテクスト
フリーである。加えて、複数のコンテクストファイルが
各ユーザーに1つずつ設けられ、複数のプロセッサ要素
は、命令の処理中、プロセッサ要素を共有資源に全体的
に結合することにより、任意のコンテクストファイルに
含まれるどの記憶資源にでもアクセスできる。本発明の
好ましい側面においては、条件コードまたは結果レジス
タは、個々のプロセッサ要素に存在しない。 [発明の概要] 本発明は、非Von Neumann型であり、シングルまたは
マルチプルコンテクストSISD、SIMDおよびMIMD型態での
使用に適合される方法およびシステムを提供するもので
ある。本発明の方法およびシステムは、無数の従来形式
のプログラムに使用者の介入なしに作用し得る。 本発明の一側面によれば、非常に細かいレベルの粗度
にて、プログラムの基本ブロック(BB)における、他の
いずれの命令の処理とも干渉することなく同時に処理さ
れ得るような2以上の命令が本質的に目的コードレベル
でスタティックに決定され、時間駆動非集中化制御を提
供するため、各基本ブロックにおける命令ストリームに
インテリジェンスが加えられる。他のいずれの命令の処
理とも干渉することなく同時に処理され得るような2以
上の命令の検出および低レベルスケジューリングおよび
インテリジェンスの付加は、従来の編集後、実行前に所
与のプログラムに対して一度のみ行なわれる。この時点
に、すなわちプログラムの実行前、後刻の全命令資源の
実行中の使用が割り当てられる。 本発明の他の側面によれば、追加されたインテリジェ
ンスを含む基本的ブロックが、この特定の実施例におい
ては以前の動作からの実行状態情報を各々保持しない複
数のプロセッサ要素を含むシステム上で実行される。そ
れゆえ、本発明のこの実施例による全プロセッサ要素は
コンテクストなしである。命令は、命令発火時間に基づ
き実行のために選択される。本実施例における各プロセ
ッサ要素は、従属の命令が同一または異なるプロセッサ
要素で実行され得るように、命令毎方式で命令を実行で
きる。本発明の所与のプロセッサ要素は、1つのコンテ
クストからの命令、続いて他のコンテクストからの命令
を実行できる。そのとき、所与の命令を処理するために
必要なすべての動作およびコンテクスト情報は、システ
ムの他のところに包含されている。 コンテクストフリープロセッサ要素の多くの代替的実
施が可能であることを留意されたい。非パイプライン式
実施においては、各プロセッサ要素はモノリシックであ
り、単一の命令を次の命令を受け入れる前にその完了ま
で実行する。 本発明の他の側面においては、コンテクストフリープ
ロセッサは、パイプライン結合プロセッサ要素であり、
この場合、各命令は完了まで数マシン命令クロックサイ
クルを必要とする。一般に、各クロックサイクル中、新
しい命令がパイプラインに入り、完了した命令がパイプ
ラインを出、単一の命令クロックサイクルの有効な命令
実行時間を与える。しかしながら、若干の命令をマイク
ロコード化して、多くのマシン命令サイクルを必要とす
る複雑な機能を遂行することもできる。この場合、新し
い命令の入りは、複雑な命令が完了してしまうまで一時
停止され、その後、各クロックサイクル内の通常の命令
入りおよび出シーケンスが継続する。パイプライン結合
は、標準プロセッサ実施技術であり、後で詳しく論述す
る。 本発明のシステムおよび方法は、以下の説明および図
面で詳しく説明される。 [図面の説明] 本発明のその他の目的、特徴および利点は、以下の説
明から明らかとなろう。 第1図は本発明のTOLLソフトウェアの一般化されたフ
ローチャートである。 第2図は従来のコンパイラ出力内に存在する逐次の一
連の基本ブロックの線図である。 第3図は本発明の1実施例にしたがい各基本ブロック
に加えられる延長インテリジェンスの線図である。 第4図は本発明の1実施例にしたがい所与の基本ブロ
ック内の各命令に加えられる延長インテリジェンスの詳
細を示す線図である。 第5図は基本ブロックの別個の実行セットへの分割を
示す線図である。 第6図は本発明の好ましい実施例による装置のアーキ
テクチャ構造のブロック図である。 第7a〜7c図は3つの逐次の命令発火時間中におけるネ
ットワーク相互接続を示す線図である。 第8〜11図は本発明の1実施例のソフトウェアの特徴
を記述するフローチャートである。 第12図はTOLLソフトウェアにおける実行セットの1つ
の好ましい形式を記述する線図である。 第13図は本発明の好ましい実施例によるレジスタファ
イル組織を表わす線図である。 第14図はサブルーチン呼び中における異なるレベルに
あるレジスタ間の切替えを示す線図である。 第15図は本発明の好ましい実施例の論理的資源ドライ
バ(LRD)の構造を示すブロック図である。 第16図は本発明の好ましい実施例の命令キャッシュ制
御装置およびキャッシュの構造を示すブロック図であ
る。 第17図は本発明の好ましい実施例のPIQバッファ装置
およびPIQバスインターフェース装置の構造を示すブロ
ック図である。 第18図は本発明の好ましい実施例によるプロセッサ要
素からPE−LRDネットワークを経てPIQプロセッサ整列回
路に至る相互接続を示すブロック図である。 第19図は本発明の好ましい実施例のブランチ実施装置
の構造を示すブロック図である。 第20図は本発明の好ましい実施例のコンテクストファ
イル状態コードメモリの組織を示す線図である。 第21図は本発明のパイプライン結合プロセッサ要素の
1実施例の構造を示すブロック図である。 第22a〜22d図は第21図のプロセッサ要素と関連して使
用されるデータ構造を示す線図である。 [一般的説明] [1.イントロダクション] 以下の2節において、本発明のソフトウェアおよびハ
ードウェアの一般的説明を行なう。本発明のシステム
は、ハードウェアおよびソフトウェア要素間の独特な関
係に基づいて設計される。多くの従来技術によるアプロ
ーチは、主として、新規なアーキテクチャ設計または独
特のソフトウェアアルゴリズムに基づいてマルチプロセ
ッサによる並列処理に向けられていたが、本発明は独特
のハードウェア/ソフトウェア関係に基づく。本発明の
ソフトウェアは、ハードウェアを通る命令ストリームの
ルート設定および同期のためインテリジェント情報を提
供する。これらのタスクの遂行において、ソフトウェア
は、使用者がアクセス可能な資源、例えばジェネラルレ
ジスタ、状態コード記憶レジスタ、メモリおよびスタッ
クポインタを空間的および一時的に管理する。ルート設
定および同期は、使用者の介入なしに遂行され、オリジ
ナルソースコードへの変更を必要としない。加えて、命
令ストリームを分析して、命令ストリームのルート設定
および同期を制御するために追加のインテリジェンス情
報を提供することは、所与ソフトウェア部分のプログラ
ム準備プロセス(いわゆる「スタテック割当て」)中の
み遂行され、ある種の従来技術の手法に見られるように
実行中は遂行されない(実行中の遂行は「ダイナミック
割当て」)という。本発明により行なわれる分析は、ハ
ードウェア依存性であり、従来のコンパイラからの目的
コード出力で遂行され、それゆえ有利なことにプログラ
ム言語依存性でない。 換言すれば、本発明によれば、シフトウェアは、目的
コードプログラムをシステムのハードウェア上に変換
し、システムが従来のシステムを代表する効率よりも一
層効率的に実行するようにする。それゆえ、ソフトウェ
アは、すべてのハードウェアの個性およびプログラム命
令ストリームの実行に及ぼすそれらの影響を取り扱わね
ばならない。例えば、ソフトウェアは、必要なとき、モ
ノリシックな単一サイクルまたはパイプライン結合され
たプロセッサ要素に順応しなけらばならない。 [2.一般的なソフトウェアの説明] 第1図を参照すると、一般的にTOLLと称される本発明
のソフトウェアは、コンピュータ処理システム160に配
置されている。処理システム160は標準的コンパイラ出
力100で動作するが、この出力は、普通、「P−Code」
のような代表的目的コードまたは中間目的コードであ
る。従来形式のコンパイラの出力は、以下において命令
ストリームとして言及される目的コード命令の順次スト
リームである。従来形式言語プロセッサは、普通、逐次
命令ストリームを生成する際下記の機能を遂行する。 1:入力テキストの辞書的なスキャン。 2:記号表構造を含む凝縮された入力テキストの構文スキ
ャン。 3:並列化検出およびベクトル化を含むマシンと独立の最
適化の遂行。 4:命令の機能性、必要とされる資源およびハードウェア
の構造的特性を考慮に入れる中間(PSEUDO)コード生
成。 逐次命令ストリームの創成において、従来形式のコン
パイラは、一連の基本ブロック(BB9を創成するが、こ
れは単一エントリ、単一エグジット(SESE)の複数群の
連続命令である。例えば、Alfred V.AhoおよびJeffery
D.Ullmanの「Principles of Compiler Design」、
Addison Wesley、1979年発行pg.6,409,412−413および
David Griesの「Compiler Construction for Digit
al Computers」、Wiler、1971年発行、参照。従来のコ
ンパイラは、そのタスクの遂行において基本ブロック情
報を利用するが、如何なる基本ブロック指示なしにも逐
次命令の出力ストリームを供給する。本発明の例示の具
体例におけるTOLLソフトウェアは、従来のコンパイラ内
で創成される形成された基本ブロック(BB)上で動作す
るように設計される。従来のSESE基本ブロックの各々に
おいては、正確に1つのブランチがあり(ブロックの終
りに)、制御の従属性はない。ブロック内の唯一の関係
する依存性は、命令により必要とされる資源間の依存性
である。 基本ブロックフォーマットのコンパイラ100の出力
は、第2図に例示されている。第1図を参照すると、コ
ンピュータ160において処理されつつある本発明のTOLL
ソフトウェア110は、コンパイラ出力100に3つの基本的
決定機能を遂行する。これらの機能は、命令の資源を分
析すること、各基本ブロック130の各命令に対してイン
テリジェンスを延長すること、および1または複数の基
本ブロック140より成る実行セットを造ることである。
プロセッサ100から得られるこれら3つの基本的機能12
0、130および140の出力は、本発明のTOLLソフトウェア
出力150である。 上述のように、本発明のTOLLソフトウェアは、一度の
み使用者の介入なしにコンパイラ出力100に使用する。
それゆえ、任意の所与のプログラムに対して、TOLLソフ
トウェアは、コンパイラ出力100に一度だけ作用するこ
とを必要とする。 TOLLソフトウェア100の機能120、130、140は、各基本
ブロック内の命令ストリームを、他のいずれの命令の処
理とも干渉することなく同時に処理され得るような2以
上の命令について分析し、命令ストリームの本発明の実
際のハードウェアシステム上へのマッピングを遂行し、
マッピングプロセスから生ずるかも知れないハードウェ
アにより誘導される個性を軽減し、得られた命令ストリ
ームを本発明のハードウェアとともに使用されるべき実
際のマシン言語にコード化し、TOLLソフトウェア110
は、命令ストリームを分析し、その結果としてプロセッ
サ要素および資源を割り当てることによりこれらの機能
を遂行する。特定の1実施例において、プロセッサはコ
ンテクストフリーである。TOLLソフトウェア100は、例
えば出力命令ストリームの各命令に適当な発火時間を割
り当てることにより、全システムの「同期」を行なう。 命令は、3つの基本的形式の依存性しかないが、種々
の方法で相互に依存性とし得る。第1に、命令ストリー
ムの実際の構造に起因して手順的な依存性がある。すな
わち、命令は、互いに、ブランチ、ジャンプなどに起因
して逐次以外の順序で続く。第2に、動作の依存性は、
システムに依存する有限数のハードウェア要素に起因す
る。これらのハードウェア要素としては、汎用レジス
タ、状態コードメモリ、スタックポインタ、プロセッサ
要素およびメモリなどがある。それゆえ、2つの命令が
並列に実行されるべきときは、両命令が同じハードウェ
ア要素を読んでいないかぎり(もちろん要素は同時に読
まれることができることを条件とする)、これらの命令
は同じハードウェア要素を要求してはいけない。最後
に、命令ストリームの命令間にデータ依存性が存在す
る。この形式の依存性については後で詳しく論述する
が、プロセッサ要素がパイプライン結合プロセッサを含
む場合特に重要である。一方、基本的ブック内には、デ
ータ依存性および操作上の依存性のみが存在する。 TOLLソフトウェア110は、プログラムの適正な実行を
維持しなければならない。それゆえ、TOLLソフトウェア
は、並列に実行される命令を表わすコード出力150が原
直列コードの結果と同じ結果を生成することを保証しな
ければならない。これをなすため、コード150は、相互
に依存性の命令に対する直列コードと同じ相対順序で資
源にアクセスしなければならない。すなわち、相対順序
が満足されねばならない。しかしながら、独立の命令の
組を順序外で有効に実行できる。 第1表には、マトリクス乗算ルーチンの内部ループを
表わすSESE基本ループの例が記載してある。この例は本
明細書を通じて使用されるが、本発明の教示は任意の命
令ストリームに応用し得る。第1表において、命令指示
は右手列に記載されており、この基本ブロックに対する
従来形式の目的コード機能表示は左手列に表わされてい
る。 第1表 目的コード 命令 LD R0,(R10)+ I0 LD R1,(R11)+ I1 MM R0,R1,R2 I2 ADD R2,R3,R3 I3 DEC R4 I4 BRN2R LOOP I5 第1表に記載されるSESE基本ブロックに包含される命
令ストリームは、下記の機能を遂行する。命令I0におい
ては、レジスタR0が、そのアドレスがR10に含まれるメ
モリの内容でロードされる。 上述の命令は、アドレスがR10から取り出された後、R
10の内容をインクリメントする。命令I1についても同じ
ステートメントがなされ得る。ただし、この場合、レジ
スタR1がロードされ、レジスタR11がインクリメントさ
れる。命令I2は、レジスタR0およびR1の内容を乗算せし
め、その結果がレジスタR2に記憶される。命令I3におい
ては、レジスタR2とレジスタR3の内容が加算され、その
結果がレジスタR3に記憶される。命令I4においては、レ
ジスタR4がデクリメントされる。命令I2、I3およびI4は
また、それらのそれぞれの状態を反映する1組の状態コ
ードを発生させる。命令I5において、レジスタR4の内容
が間接的に0について試験される。(命令I4により発生
される状態コードにより)。デクリメント動作が非0値
を発生させると、ブランチが生ずる。その他の場合は、
実行は、次の基本ブロックの最初の命令に関して進行す
る。 第1図を参照すると、TOLLソフトウェア110により遂
行される最初の機能は、命令の資源利用を分析すること
である。例示の実施例においては、第1表の命令I0〜I5
が存在する。かくして、TOLLソフトウェア110は、各命
令を分析して、命令の資源要求を確める。 この分析は、いずれかの資源がいずれかの命令により
共有されるか否か、それゆえ命令が相互に独立であるか
否かを決定する上において重要である。相互に独立の命
令は並列に実行でき、「自然に同時的」と呼ばれる。さ
らに換言すると、「自然の同時的発生」は「命令ストリ
ーム内の少なくとも二つの命令が他のいずれの命令の処
理とも干渉することなくあるいはその処理を遅延される
ことなく同時に処理され得る命令」を意味する。独立の
命令は並列に実行でき、如何なる情報についても相互に
依存せず、リードオンリー態様以外の態様において如何
なるハードウェア資源をも共有しない。 他方、相互に依存性の命令は、1セットに形成される
が、各セットの各命令は、そのセットの1つの置きの命
令に依存する。依存性は直接的でなくてよい。セット
は、セット内の命令によって、または逆にセット内の命
令により使用される資源によって記述できる。異なるセ
ット内の命令は完全に相互に独立である。すなわち、セ
ットにより共有される資源はない。それゆえ、セットは
互いに独立である。 第1表の例において、TOLLソフトウェアは、依存性の
命令の2組の独立のセットが存在することを決定するで
あろう。 セット1 CC1:I0、I1、I2、I3 セット2 CC1:I4、I5 理解できるように、命令I4およびI5は、命令I0−I3と
無関係である。セット2において、I5はI4に直接的に依
存している。セット1において、I2はI0およびI1に直接
依存している。命令I3はI2に直接依存しており、I0およ
びにI1に間接的に依存している。 本発明のTOLLソフトウェアは、依存性の命令より成る
これらの独立のセットを検出して、各セットにCC1およ
びCC2のような指示状態コード群を割り当てる。これに
より、命令ストリームに対して1群または1セットの状
態コードしか利用できなかったなら起こるであろう動作
上の依存性は避けられる。 換言すれば、命令I0およびI1の実行の結果は、命令I2
の実行に必要とされる。同時に、命令I2の実行の結果
は、命令I3の実行に必要とされる。この分析の遂行に際
して、命令が資源に対して読取りおよび/または書込み
を遂行するかどうかを決定する。この機能は、命令スト
リームの資源要求分析と称される。 従来の教示と異なり、本発明は、依存性の命令が同じ
プロセッサ要素上で実行されることを必要としないこと
を教示していることに留意されたい。依存性の決定は、
追って記述するように、状態コードセットを決定し命令
発火時間の決定のためにのみ必要とされる。本発明の例
示の1実施例においては、異なるプロセッサ要素につい
て依存性の命令を実行し得る。これは、プロセッサ要素
のコンテクストフリーの性質およびプロセッサ要素が全
体的に共有資源に結合されるためである。これについて
も後述する。 第1表に記載される列に対する分析ステップ120の結
果は、第2表に記載してある。 第2表 命令 機 能 I0 メモリ読取り、レジスタ書込み、レジスタ読取りおよび書込み I1 メモリ読取り、レジスタ書込み、レジスタ読取りおよび書込み I2 レジスタ2回読取り、レジスタ書込み、状態コード設定(Set#1) I3 レジスタ2回読取り、レジスタ書込み、状態コード設定(Set#1) I4 レジスタ読取り、レジスタ書込み、状態コード設定(Set#2) I5 状態コード読取り(Set#2) 第2表において、命令I0およびI1に対して、レジスタ
の読取りおよび書込みが行なわれ、続いてメモリの読取
り(別個のアドレスにて)レジスタの書込みが行なわれ
る。同様に、命令I2〜I4に対しては、状態コード書込
み、およびレジスタ読取りおよび書込みが行なわれる。
最後に、命令I5は、状態コード記憶レジスタの1回の読
取り、その結果ブランチまたはループが行なわれる。 SESE基本ブロック中の第2のステップまたはパス130
は、基本ブロック内において各命令にインテリジェンス
を付加ないし延長することである。これは、ストリーム
内の他の命令の実行時間に関する命令実行時間の割当
て、命令が実行されるべきプロセッサ番号の割当て、お
よび命令により必要とされ得るいわゆるスタティック共
有コンテクストストーリジマッピング情報の割当であ
る。 命令に発火時間を割り当てるため、命令により必要と
される各資源の一時的使用が考慮されねばならない。例
示の実施例において、各資源の一時的使用は、「フリー
タイム」および「ロードタイム」により特徴づけられ
る。フリータイムは、資源が命令により読取りまたは書
込みされた最後の時間である。ロード時間は、資源が命
令により変更された最後の時間である。命令が資源を変
更すべきとは、資源が使用された最後の時間後、換言す
るとフリータイム後変更を実行しなければならない。命
令が資源を読み取るべきときは、資源がロードされた最
後の時間後、すなわちロードタイム後読取りを遂行しな
ければならない。 各資源の一時的使用および資源の実施の使用間の関係
は下記のごとくである。命令が資源の書込み/変更を行
なうべきときは、資源が他の命令により読取りまたは書
込みされた最後の時間(すなわち、その資料に対する
「フリータイム」)プラス1時間間隔がこの命令に対す
る最先の発火時間となろう。このプラス1時間間隔は、
命令がフリータイム中なお資源を使用しているといる事
実に由来する。他方、命令が資源を読み取るときは、資
源が他の命令により変更される最後の時間(すなわちそ
の資源に対するロードタイム)プラス1時間間隔が最先
の命令発火時間となる。「プラス1時間間隔」は、実行
されるべきロードを遂行しつつある命令に対して必要な
時間から由来する。 上の論述は、アクセスされる資源の正確な位置が既知
であることを仮定している。これは、一般的レジスタお
よび状態コードメモリのごとく直接的に命名された資源
についてはつねに真である。しかしながら、メモリ動作
は、一般にコンパイル時に未知の位置にあるであろう。
実際のアドレス指定構造体により発生されるアドレスは
この種類に属する。先行の実施例においては、(TOLLの
基本的概念を明らかにするため)命令I0およびI1により
使用されるアドレスは別であると仮定した。もしもこれ
がそうでなければ、TOLLソフトウェアは、メモリを使用
しなかった命令のみが、メモリ内の未知の位置にアクセ
スしつつあった命令と並列に実行せしめられることを保
証するであろう。 命令発火時間は、命令が使用する各資源に対してTOLL
ソフトウェア110により評価される。これらの「候補」
発火時間は、ついでどれが最大またはもっとも遅い時間
かを決定するために比較される。もっとも遅い時間は、
命令に割り当てられる実際の発火時間を決定する。この
時点に、TOLLソフトウェア110は、命令に割り当てられ
る発火時間を反映させるように、資源のフリータイムお
よびロードタイムのすべてを更新する。TOLLソフトウェ
ア110は、ついで次の命令を分析するように進行する。 基本ブロック内の命令間依存性を決定するためには利
用可能な多くの方法がある。先の論述は、特定のコンパ
イラーTOLLパーティショニングを仮定するただ1つの可
能な実施例に過ぎない。技術に精通したものであれば、
多くの他のコンパイラーTOLLパーティショニングおよび
命令間の依存性を決定する方法が可能であり、実現でき
よう。それゆえ、例示されたTOLLソフトウェアは、基本
ブロック内のデータ依存性を表わすためにリンクリスト
分析を使用する。使用され得る他の可能なデータ構造
は、トリー、スタック等である。 命令間の依存性の分析および表示のためリンクリスト
表示が利用されるものと仮定する。各レジスタは、その
レジスタに含まれる値を使用する命令に対して1組のポ
インタと関連されている。第1表におけるマトリックス
乗算の例に対して、資源の利用が第3表に記載されてい
る。 それゆえ、「read by」リンクを追い、各命令に対す
る資源の利用状態を知れば、上のセット1および2の独
立性が、TOLL110により分析命令手段120(第1図)で構
成される。 第1表の例をさらに分析する目的で、基本ブロック
が、1つの命令ストリームの任意の時間間隔で、例えば
時間T16で始まるものと仮定する。換言すれば、時間シ
ーケンスにおけるこの特定の基本ブロックは、時間T16
でスタートすると仮定する。段階120における分析の結
果を第4表に記載する。 第4表 REG I0 I1 I2 I3 I4 I5 R0 T16 T17 R1 T16 T17 R2 T17 T18 R3 T18 R4 T16 CC1 T17 T18 CC2 T17 R10 T16 R11 T16 第4表における垂直方向は、一般的レジスタおよび状
態コード記憶レジスタを表わす。表における水平方向
は、第1表の基本ブロックの例の命令を表わす。表中の
エントリは命令によるレジスタの利用を表わす。かくし
て、命令I0は、時間T16、すなわち基本ブロックの実行
のスタート時にレジスタR10が読取りと書込みをされ、
レジスタR0が書き込まれることを必要とする。 本発明の教示に従う場合、レジスタR1、R11およびR4
も、時間T16の間遂行される動作をもち得ないという理
由はない。3つの命令I0、I1およびI4は互いにデータ独
立性であり、時間T16中同時的に実行できる。しかしな
がら、命令I2は、レジスタR0およびR1がロードされ、ロ
ード動作の結果が乗算され得るようにすることをまず必
要とする。乗算の結果はレジスタR2に記憶される。レジ
スタR2は時間T16において理論的に作用され得るが、命
令I2は、時間T16中に行なわれるレジスタR0およびR1の
ロードの結果にデータ依存性である。それゆえ、命令I2
の完了は、時間フレームT17の間、またはその後に起こ
るはずである。それゆえ、上の第4表において、命令I2
とレジスタR2の交叉点に対するエントリT17は、それが
データ依存性であるから下線を付してある。同様に、命
令I3は、時間T17中にまず起こるレジスタR2内のデータ
を必要とする。それゆえ、命令I3は、時間T18中または
その後のみレジスタR2に作用し得る。命令I5は、命令I4
により更新される状態コード命令CC2の読取りに依存す
る。状態コードメモリCC2の読取りは、時間T16に記憶さ
れる結果にデータ依存性であり、したがって次の時間T1
7中またはその後に行なわれるはずである。 それゆえ、段階130において、目的コード命令は、上
の分析に基づいて第5表に記載されるように「命令発火
時間」(IFT)が割り当てられる。 第5表 目的コード命令 命令発火時間 I0 T16 I1 T16 I2 T17 I3 T18 I4 T16 I5 T17 基本ブロックの逐次命令ストリームにおける各命令
は、割り当てられた時間間隔において遂行され得る。第
5表から明らかなように、通常6サイクルで逐次処理さ
れる第1表の同じ6つの命令が、本発明の教示によれ
ば、たった3つの発火時間T16、17およびT18で処理でき
る。命令発火時間(IFT)は、本発明の「時間駆動」の
特徴をもたらす。 例示の実施例における段階130により遂行される次の
機能は、命令発火時間(IFT)にしたがって命令ストリ
ームにおける自然的同時発生すなわち、少なくとも二つ
の命令が他の命令の処理と干渉することなく同時に処理
され得る命令を順序再整理し、ついで命令を個々の論理
並列プロセッサに割り当てることである。順序再整理
は、同時的に利用可能な技術の制約に起因してのみ必要
とされることに留意されたい。もしも真に十分の関連す
るメモリが利用可能であれば、ストリームの順序再整理
は必要とするものでなく、プロセッサの番号は、先着順
サービスの態様で割り当てることができよう。命令選択
機構のハードウェアは、この動作モードを取り扱うため
技術に精通したものであれば適当に変更できよう。 例えば、同時的に、利用可能な技術、ならびに4つの
並列プロセッサ要素(PE)を有し各LRD内に1つのブラ
ンチ実行装置(BEU)が設けられるシステムを仮定する
と、プロセッサ要素およびブランチ実行装置は、本発明
の教示によると以下の第6表に記載されるように割り当
てることができる。プロセッサ要素がすべての非ブラン
チ命令を実行し、他方本発明のブランチ実行装置(BE
U)がすべてのブランチ命令を実行することに留意され
たい。これらのハードウェア回路については、追って詳
細に説明する。 第6表 論理プロセッサ番号 T16 T17 T18 0 I0 I2 I3 1 I1 −− −− 2 I4 −− −− 3 −− −− −− BEU −− I5(遅延) −− それゆえ、本発明の教示にしたがうと、時間T16の
間、並列プロセッサ要素0、1および2が命令I0、I1お
よびI4をそれぞれ同時に処理する。同様に、次の時間T1
7中、並列プロセッサ要素0およびBEUが、命令I2および
I5をそれぞれ同時に処理する。そして最後に、時間T18
中、プロセッサ要素0が命令I3を処理する。命令発火時
間T16、T17およびT18の間、並列プロセッサ要素3は第
1表の例に利用されない。実際に、最後の命令がブラン
チ命令であるから、命令I3に対して時間T18中に最後の
処理が完了するまでブランチは起こり得ない。遅延フィ
ールドが命令I5の処理中に形成されており、命令I5が時
間T17内(最先可能時間)で処理されてさえ、命令I3が
実行された後ループないしブランチが起こるようにその
実行が遅延されるようになされている。 要約すると、本実施例のTOLLソフトウェア110は、段
階130において、各個々の命令およびその資源の使用状
態をその形式および位置(既知ならば)について試験す
る(例えば第3表)。ソフトウェアは、ついで、この資
源使用状態に基づいて命令発火時間を割り当て(例えば
第4表)、これらの発火時間に基づいて命令ストリーム
5を記録し(例えば第5表)、その結果として論理的プ
ロセッサ番号(LPN)を割り当てる(例えば第6表)。 例示の実施例においては、論理的プロセッサ番号(LP
N)および命令発火時間(LFT)を含む延長されたインテ
リジェンス情報が、第3図および第4図に示されるごと
く、基本ブロックの各命令に付加される。また、追って
詳述されるように、基本ブロック(BB)の各命令に対す
る延長されたインテリジェンス(EXT)は、本発明の実
際の物理的プロセッサと相関づけられる。相関は、シス
テムハードウェアにより遂行される。実際のハードウェ
アは、論理的プロセッサ要素の数より小数、それと同
数、またはそれより多数の物理的プロセッサ要素を含ん
でよいことに注目することが重要である。 本発明のこの例示の実施例における各命令に付加され
る第4図に示される共有のコンテクスト・ストーリジマ
ッピング(SCSM)情報は、スタティックおよびダイナミ
ック成分を有する。SCSM情報のスタティック成分は、TO
LLソフトウェアまたはコンパイラにより付加されるもの
であり、命令ストリームのスタティック分析の結果であ
る。ダイナミック情報は、追って論述されるように論理
的資源ドライバ(LRD)により実行時間付加される。 この段階130にて、例示のTOLLソフトウェア110は、命
令ストリームを、別個のプロセッサ要素(PE)により個
々に処理され得る同時的発生すなわち、少なくとも二つ
の命令が他の命令の処理と干渉することなく同時に処理
され得る命令に対して1組の単一エントリ、単一エグジ
ット(SESE)基本ブロック(BB)として分析し、各命令
に、命令発火時間(IFT)および論理的プロセッサ番号
(LPN)を割り当てた。このように、本発明にしたがえ
ば、命令ストリームは、実行に先立ちすべての処理用資
源をスタティックに割り当てるため、TOLLソフトウェア
によりプレ処理される。これは、所与のプログラムにつ
いて一度なされ、そしてFORTRAN、COBOL、PASCAL、BASI
C等の多数の異なるプログラム言語のいずれにも応用し
得る。 第5図を参照すると、一連の基本ブロック(BB)が単
一の実行セット(ES)を形成し得ることが示されてお
り、TOLLソフトウェア110が、段階140においてかかる実
行セット(ES)を形成する。一度TOLLソフトウェアが実
行セット500を識別すると、セットの始まりおよび終わ
りに、ヘッダ510および/またはトレイラ520情報が付加
される。好ましい具体例においては、セットの始まりに
1つのヘッダ情報510が付加されるが、本発明はそれに
制限されるものではない。 本発明にしたがうと、基本ブロックは、一般に命令ス
トリームにおいて相互に相続いている。上述のごとく、
基本ブロック内の個々の命令が再整理され、延長された
インテリジェンス情報が割り当てられても、基本ブロッ
クを再整理の必要はなくてよい。各基本ブロックは、単
一エントリ単一エグジット(SESE)であり、ブランチ命
令を介してのエグジットをもつ。普通、他の命令へのブ
ランチは、ブランチの400の命令のごとく局部的近傍内
にある。実行セットを形成する(段階140)目的は、実
行セット内で出ることができる基本ブロックの最小数を
決定することであり、これにより命令キャッシュ障害の
数は最小化される。換言すると、所与の実行セットにお
いて、実行セットのブランチすなわち切替えは統計的に
最小とされる。TOLLソフトウェアは、段階140におい
て、この線形プログラミング様の問題、すなわちブラン
チ距離等に基づく問題を解決するための多数の従来の技
術を利用し得る。この目的は、追って論述されるよう
に、実行セットをハードウェアキャッシュに入れること
ができるように第5図に示されるごとく実行セットを定
めることであり、それにより命令キャッシュ障害(すな
わち命令セットの切替え)は最小化される。 上述したものは、単一のコンテクストの応用における
TOLLソフトウェアの例(第1〜6表を使って例示され
る)である。本質的に、TOLLソフトウェアは、所与のプ
ログラム内の各基本ブロックについて命令ストリーム内
の他のいずれの命令の処理とも干渉することなく同時に
処理され得るような2以上の命令を決定する。例示の実
施例において、TOLLソフトウェアは、決定される他のい
ずれの命令の処理とも干渉することなく同時に処理され
得るような2以上の命令の発生にしたがって、各命令に
命令発火時間(IFT)および論理処理命令(LPN)を付加
する。すべての処理用資源は、処理に先立ってスタティ
ックに割り当てられる。本発明のTOLLソフトウェアは、
多数の同時に実行する異なるプログラムと関連して使用
できる。しかして、各プログラムは、追って説明される
ように、本発明の処理システム上で同じ使用者または異
なる使用者により使用される。 [3.ハードウェアの一般的説明] 第6図を参照すると、TDAシステムアーキテクチャ600
と称される本発明のシステムアーキテクチャのブロック
ダイヤグラムは、ネットワーク630を介して複数の論理
的資源ドライバ(LRDS)620に相互接続されたメモリサ
ブシステム610を含む。論理的資源ドライバ620は、さら
にネットワーク650を介して複数のプロセッサ要素640に
相互接続されている。最後に、複数のプロセッサ要素64
0が、ネットワーク670を介して、レジスタセットプール
および命令コードセットファイル660を含む共有資源に
相互接続されている。LRD−メモリネットワーク630、RE
−LRDネットワーク650およびPE−コンテクストファイル
ネットワーク670は、従来形式のクロスバーネットワー
ク、オメガネットワーク、バンヤンネットワークまたは
同等物より構成し得るフルアクセスネットワークであ
る。ネットワークはフルアクセス形式(スペース的にノ
ンブロッキング)であるから、例えば任意のプロセッサ
要素640は、任意のコンテクスト(以下に定義される)
ファイル660における任意のレジスタファイルまたは状
態コードメモリにアクセスできる。同様に、どのプロセ
ッサ要素640も、どの論理的資源ドライバ620へでもアク
セスでき、どの論理的資源ドライバ620も、メモリサブ
システム610のどの部分へでもアクセスできる。加え
て、PE−LRDおよびPEコンテクストファイルネットワー
クは時間的にノンブロッキングである。換言すれば、こ
れらの2つのネットワークは、ネットワーク上の負荷状
態に拘らず、どの資源からのどの資源へのアクセスでも
保証する。TOLLソフトウェアが、ネットワーク内におい
て衝突が決して起らないことを保証しているから、PE−
LRDネットワーク650およびPE−コンテクストファイルネ
ットワーク670のスイッチング要素のアーキテクチャは
かなり簡単化されている。第6図のブロックダイヤグラ
ムはMIMDシステムを表わしており、各コンテクストファ
イル660は少なくとも1つのユーザプログラムに対応し
ている。 メモリサブシステム610は、従来形式のメモリアーキ
テクチャおよび従来形式のメモリ要素を使って構成でき
る。この種のアーキテクチャおよび要素には、当技術に
精通したものが採用し得てこのシステムの必要条件を満
足するような多くのものがある。例えば、積重ね型メモ
リアーキテクチャを使用できよう。(A.V.PohmおよびO.
P.AgrawalのHigh Speed Memory System.Reston Pub
lishing Co.,1983年発行、参照。) 論理的資源ドライバ620は、本発明のシステムアーキ
テクチャ600に独特である。各例示のLRDは、時分割式で
単一の使用者(コンテクストファイルが割り当てられて
いる)に対してデータキャッシュおよび命令選択の維持
を可能にする。LRDは、種々の使用者から実行セットを
受け取り、そして1つのLRD上には、1つのコンテクス
トに対する1または複数の実行セットが記憶されてい
る。記憶された実行セットの基本ブロック内の命令は、
先に割り当てられた論理的プロセッサ番号に基づいて待
ち行列で記憶される。例えば、システムが64の使用者お
よび8つのLRDを有すれば、8の使用者が個々のLRDを時
分割式に共有することになろう。オペレーティングシス
テムは、どの使用者がどのLRDにどの位長く割り当てら
れるかを決定する。LRDについては、追って詳細に説明
する。 プロセッサ要素640もまた、TDAシステムアーキテクチ
ャに独特であり、追って詳述する。本発明の特定の1側
面によれば、これらのプロセッサは、コンテクストフリ
ーの確立的性質を示す。すなわち、システムの将来の状
態は、システムの現在の状態にのみ依存し、現在の状態
に至った経路に依存しない。それゆえ、アーキテクチャ
の上で、コンテクストフリープロセッサ要素は、2つの
点において従来形式のプロセッサ要素から独特に違って
いる。第1に、要素は、汎用レジスタまたはプログラム
状態ワードのような内部的恒久記憶ないち残映をもたな
い。第2に、要素は、如何なるルート設定機能または同
期機能を遂行しない。これらのタスクは、TOLLソフトウ
ェアで遂行され、LRDで実施される。アーキテクチャの
重要性は、本発明のコンテクストフリープロセッサ要素
が、LRDに対して真に共有の資源であるということであ
る。パイプライン結合プロセッサ要素が採用される本発
明の他の好ましい特定の実施例においては、プロセッサ
は、前述のごとく厳密にコンテクストフリーではない。 最後に、レジスタセットおよび状態コードセットファ
イル660も、Advanced Micro Device、カルフォルニ
ヤ、サニベイル所在、から入手し得るAMD29300シリーズ
レジスタファイルのような一般的入手し得る要素から構
成できる。しかしながら、第6図に例示されるファイル
660の特定の形態は、本発明の教示にしたがって独特の
ものであり、追って詳細に説明する。 第1表に記載される例に基づく本発明の一般的動作
は、第7a、7bおよび7cのプロセッサ・コンテクストレジ
スタファイル通信と関連して説明してある。前述のよう
に、本発明のこの例示の実施例の時間駆動制御は、第4
図に詳細に記載される論理的プロセッサ番号(LPN)お
よび命令発火時間(IFT)に関する延長インテリジェン
スの追加に見出される。第7図は、レジスタセットおよ
び状態コードセットファイル660のレジスタPE0〜PE3の
形態を総括的に示している。 第1表の単一の使用者の例に対するTDAシステムアー
キテクチャ600の動作を説明するため、第3〜第5表を
参照する。命令発火時間T16に対する例において、コン
テクストファイル−PEネットワーク670は、プロセッサ
要素PE0をレジスタR0およびR10と、プロセッサ要素PE1
をレジスタR1およびR11と、そしてプロセッサ要素PE2を
レジスタR4と相互接続する。それゆえ、時間T16の間、
3つのプロセッサ要素PE0、PE1およびPE2は、I0、I1お
よびI4を同時に処理し、結果をR0、R10、R1、R11および
R14に記憶する。時間T16の間、LRD620は、時間T17中に
発火(実行)され得る命令を、適当なプロセッサ要素に
供給する。第7b図を参照すると、命令発火時間T17の
間、命令I2を処理するために現在割り当てられている唯
一のプロセッサ要素PE0のみがレジスタR0、R1およびR2
と相互接続している。BEU(第7a、7bおよび7c図に図示
せず)も、状態コードメモリに接続されている。最後に
第7c図を参照すると、命令発火時間T18中、プロセッサ
要素PE0のみがレジスタR2およびR3に接続されている。 数種の重要な観察がなされねばならない。まず、特定
のプロセッサ要素PEがその動作の結果をレジスタに入れ
るとき、後続の命令発火時間(IFT)中、任意のプロセ
ッサ要素を、それがその動作を実行するとき、そのレジ
スタに相互接続することができる。例えば、命令I1に対
するプロセッサ要素PE1は、図7aに示されるように、IFT
T16中メモリ位置の内容でレジスタR1をロードする。
命令発火時間T17中、プロセッサPE0はレジスタR1と相互
接続され、そこに記憶されている結果で追加の動作を遂
行する。本発明の教示によると、各プロセッサ要素PE
は、任意の特定の命令発火時間(IFT)中レジスタファ
イル660内の必要なレジスタに「総括的に結合」され、
それゆえ、ある種の従来の手法におけるごとく、例えば
他のプロセッサレジスタ内の他の資源に供給のためレジ
スタファイルからデータを動かす必要はない。 換言すると、本発明の教示によると、各プロセッサ要
素は、任意の個々の命令発火時間中、ファイル660の任
意の共有レジスタに総体的に結合できる。加えて、本発
明によると、どのプロセッサ要素も、ある種の従来シス
テムにおいて見られるように、特定のレジスタの利用可
能性についてあるいは特定のレジスタに入れられる結果
について競争する(すなわち待つ)必要はない。また、
個々の任意の命令発火時間中、どのプロセッサ要素も、
レジスタファイル660内のどのような形態のレジスタに
してもそのレジスタがあたかもそれ自身の内部レジスタ
であるかのようにフルアクセスできる。 それゆえ、本発明の教示によれば、命令ストリームに
加えられるインテリジェンスは、目的コード内において
検出される、他のいずれの命令の処理とも干渉すること
なく同時に処理され得るような2以上の命令に基づく。
検出された同時的に処理されうる命令は、TOLLソフトウ
ェアにより分析され、そして該ソフトウェアは、例示の
1実施例においては、命令を並列に処理すべき個々の論
理的プロセッサ要素(LPN)および独特の命令発火時間
(IFT)を論理的に割り当てるから、各プロセッサ要素
(PE)は、その所与の命令に対して、その命令の必要条
件にしたがって処理のために利用可能なすべての必要な
資源を有することになろう。上述の例において、論理的
プロセッサ番号は実際のプロセッサ割当てに対応する。
すなわちLPNOはPE0に、LPN1はPE1に、LPN2はPE2にそし
てLPN3はPE3に対応する。本発明においては、LPN0対P
E1、LPN1対PE2等のようなどのような順序でも使用でき
るから、本発明はそのように制限されるものではない。
すなわちTDAシステムが4以上または4以下のプロセッ
サを有するならば、以下に論述されるように異なる割当
てが使用できよう。 TDAシステムに対する時間制御は、命令発火時間駆動
される。第7a〜7c図に観察されるように、各個々の命令
発火時間中、プロセッサ要素640およびPE−レジスタセ
ットファイルネットワーク670より成るTDAシステムアー
キテクチャは、すべての利用可能な資源を完全に利用し
ながら、個々のプロセッサ要素をして命令を同時に処理
せしめるように完全に適合された新規で独特の特定の形
態を取る。プロセッサ要素はコンテックスフリーとし
得、そのため、過去の処理に関するデータ、状態または
情報は必要とされず、プロセッサ要素の内部にも存在し
ない。コンテクストフリープロセッサ要素は、各個々の
命令の要求にのみ反応し、ハードウェアにより必要な共
有レジスタに相互接続される。 〔4.概要〕 概説すると、各異なるプログラムまたはコンパイラ出
力100に対するTOLLソフトウェア110は、各単一エント
リ、単一エグジット(SESE)基本ブロック(BB)に存在
する自然の同時的発生すなわち、少なくとも二つの命令
が他の命令の処理と干渉することなく同時に処理され得
る命令を分析し、例示の1実施例においては、論理的プ
ロセッサ番号(LPN)および命令発火時間(IFT)を含む
インテリジェンスを各命令に加える。第6図に示される
本発明のMIMDシステムにおいては、各コンテクストファ
イルは、プログラムを実行する異なる使用者からのデー
タを含むことになろう。各使用者には、異なるコンテク
ストファイルが割り当てられ、そして第7図に示される
ように、プロセッサ要素は、命令により必要とされるレ
ジスタおよび状態コードメモリのような必要な資源に個
々にアクセスし得る。命令それ自体は、共有資源情報
(すなわち、レジスタおよび状態コードメモリ)を担持
する。それゆえ、TOLLソフトウェアは、各プログラムに
対して1回だけ、第6図に例示されるTDAシステムアー
キテクチャにおける命令の処理を制御するに必要な情報
をスタティックに割り当て、時間駆動式の非集中化処理
を保証する。この際、メモリ、論理的資源ドライバ、プ
ロセッサ要素およびコンテクスト共有資源は、純粋にノ
ンブロッキングな様式でそれぞれのネットワークを介し
て総体的に結合される。 論理的資源ドライバ(LRD)620は、実行セットに形成
される基本ブロックを受け取り、各命令を命令発火時間
(IFT)に選択されたプロセッサ要素640に供給する責務
を有する。第7図に示される例は単一の使用者に対する
単純な表示であるが、マルチューザシステムにおいて
は、論理的資源ドライバ620によって命令をプロセッサ
要素640に供給することにより、追って詳述されるよう
にプロセッサ要素は完全に利用可能となる。共有資源お
よびプロセッサ要素のタイミングおよび識別情報は、す
べてTOLLソフトウェアにより命令に加えられる延長イン
テリジェンスに含まれているから、各プロセッサ要素64
0は、完全に(あるいは若干の例においてはほとんど)
コンテクストフリーとし得、そして実際に、命令発火時
間ごとに、種々の論理的資源ドライバにより供給される
異なる使用者の個々の命令を処理できる。以下に説明さ
れるように、これをなすため、論理的資源ドライバ620
は、予定された順序で、命令をPE−LRDネットワーク650
を介してプロセッサ要素640に供給する。 各命令の実行の完了に続き、任意のプロセッサ要素か
らのデータ生成/操作の結果について任意の他のプロセ
ッサにより独立的にアクセスすることを可能にするのが
プロセッサ要素のコンテクストフリーの性質である。コ
ンテクストフリーでないプロセッサの場合、1つのプロ
セッサが他のプロセッサにより創成されたデータにアク
セスするためには、1つのプロセッサからデータを抽出
しそれを他のプロセッサに利用できるようにするため、
特別の動作(普通汎用レジスタからデータをメモリに動
かす命令)が必要とされる。 複数のLRDに依るプロセッサ要素の真の共有を可能に
するのもプロセッサ要素のコンテクストフリーの性質で
ある。この共有は、単一の命令サイクル程度の細かい粗
さとし得る(1つのLRDに割り当てられる)。1つのコ
ンテクストの状態を節約して(これで1つまたは複数の
プロセッサ要素の制御ができる)、(第2のLRDに割り
当てられる)他のコンテクストによる制御を可能にする
ため、プログラミングや特別のプロセッサ操作は必要と
されない。コンテクストフリーでないプロセッサ(従来
技術の場合そうである)の場合、かかる状態節約におい
て、コンテクストスイッチングのプロセスの一部とし
て、特別のプログラミングおよび特別のマシン操作が必
要とされる。 本発明のプロセッサ要素を実施するに際しては1つの
他の代替的方法がある。これはコンテクストフリーの概
念に対する1つの変形である。すなわち、この実施形態
は、上述の物理的に総体的な相互接続をもたらすが、プ
ログラム制御下で、特定の命令の完了に続き発生される
データのレジスタファイルへの伝送に誓約を加えること
を可能にする。 完全にコンテクストフリーな実施形態においては、プ
ロセッサ要素に入る各命令の完了にて、コンテクストの
状態はコンテクストストリージファイルに完全に補足さ
れる。上記の代替の場合には、レジスタファイルへの伝
送は阻止され、データは、プロセッサに保持され、さら
にデータを操作する後続の命令に対して利用可能となる
(例えばデータチェイニングにより)。究極的に、デー
タは、若干の有限の命令シーケンスの後レジスタファイ
ルに伝送される。しかし、伝送されるのは最後のデータ
のみである。 これは、上述のマイクロコード化コンプレク命令の場
合の一般化として見られるべきものであり、実質的にコ
ンテクストフリーなプロセッサ要素による実施形態と考
えることができる。このような実施形態にあっては、デ
ータが究極的にコンテクストレジスタファイルに伝送さ
れる時間まで、依存性の命令が同じプロセッサ要素上で
実行されることを保証することが要求されよう。これ
は、パイプライン結合されたプロセッサ要素の場合と同
様に、TOLLソフトウェアの全機能性およびアーキテクチ
ャを変更しないが、各命令サイクルを全プロセッサ要素
上で最適な状態で利用するためプロセッサ要素間に設定
される命令の効率的なスケジュール化に主として影響を
及ぼす。 [詳細な説明] [ソフトウェアの詳細な説明] 第8〜11図には、本発明のTOLLソフトウェア110の詳
細が記載されている。第8図を参照すると、コンパイラ
からの従来の出力は、段階800にてTOLLソフトウェアに
供給される。従来形式のコンパイラ出力800内には、下
記の情報が含まれている。すなわち、(a)命令機能、
(b)命令により必要とされる資源、(c)資源の位置
(可能ならば)、および(d)基本ブロック境界であ
る。ついで、TOLLソフトウェアは、段階810にて第1の
命令でスタートとし、段階820においてどの資源が使用
されるか、そして段階830においてその資源がどのよう
に利用されるかを決定するように進行する。このプロセ
スは、先の節で論述されるように、段階840および850を
通って命令ストリーム内の各命令に対して継続する。 段階840で試験されるところにしたがって最後の命令
が処理された後、表が構成され、各資源に対して「フリ
ー時間」および「ロード時間」で初期設定される。かか
る表は、内部ループマトリック乗算の例に対して第7表
に記載されており、イニシャライズの際表はすべて0を
含む。イニシャライズは段階860で行なわれ、そしてTOL
Lソフトウェアは、一度構成されると、段階870において
第1の基本ブロックでスタートするように進行する。 第7表 資 源 ロード時間 フリー時間 R0 T0 T0 R1 T0 T0 R2 T0 T0 R3 T0 T0 R4 T0 T0 R10 T0 T0 R11 T0 T0 第9図において、TOLLソフトウェアは、段階900にお
いて次の基本ブロックの最初の命令で命令ストリームの
分析を継続する。先述のように、TOLLは、命令ストリー
ムのスタティック分析を遂行する。スタティック分析は
(実際上)直線コードを仮定する。すなわち、各命令
は、逐次的態様において分析される。換言すると、ブラ
ンチが決して起こらないことを仮定する。非パイプ式の
命令実行に対しては、ブランチの結果として起こる依存
性は決して起こることがないから問題はない。パイプラ
イン式の実行については後で論述する(パイプライン結
合の使用は、ブランチ命令の遅延値に影響を及ぼすだけ
であるということができる)。 明らかなように、ブランチが決して起こらないという
仮定は正しくはない。しかしながら、命令ストリームに
おいてブランチに遭遇することの影響は単純である。前
述のように各命令は、それが使用する資源(ないし物理
的ハードウェア要素)により特徴づけられる。命令発火
時間の(そして例示の実施例においては、論理的プロセ
ッサ番号の)割当ては、命令ストリームがこれらの資源
に如何にアクセスするかに依存する。TOLLソフトウェア
のこの特定の実施例内においては、各資源の使用状態
は、上述のごとく、その資源に対するフリータイムおよ
びロードタイムと称されるデータ構造により表される。
各命令は順番に分析されるから、1つのブランチの分析
は、下記の態様でこれらのデータ構造に影響を及ぼす。 基本ブロックのすべての命令に発火時間が割り当てら
れると、全資源のロード時間およびフリー時間を(この
値に)更新するのに、現在の基本ブロック(ブランチが
属しているブロック)の最大発火時間が使用される。次
の基本ブロック分析が始まると、提案される発火時間
は、最後の最大値+1として与えられる。それゆえ、レ
ジスタ資源R0〜R4、R10およびR11の各々に対するロード
時間およびフリー時間は、例えば、基本ブロックがT16
の時間で始まると仮定すると、以下の第8表に記載され
る。 第8表 資 源 ロード時間 フリー時間 R0 T15 T15 R1 T15 T15 R2 T15 T15 R3 T15 T15 R4 T15 T15 R10 T15 T15 R11 T15 T15 それゆえ、TOLLソフトウェアは、段階910において、
提案される発火時間(PFT)を、先行の基本ブロック発
火時間の最大発火時間+1に設定する。上の例のコンテ
クストにおいて、先行の基本ブロックの最後の発火時間
はT15であり、この基本ブロックにおける命令に対する
提案される発火時間はT16で始まる。 段階920において、最初の命令により使用される最初
の資源、この例においては命令I0のレジスタR0であり、
が分析される。段階930において、資源が読み取られる
か否かの決定がなされる。上述の例においては、命令I0
に対して、レジスタR0は読み取られないが、書き込みが
なされる。それゆえ、段階940は、次に、資源が書き込
まれるか否かの決定に入る。この場合、命令I0はレジス
タR0に書き込まれ、段階942に入る。段階942は、命令I0
に対する提案された発火時間(PFT)が資源に対するフ
リー時間に等しいかまたはそれより短いか否かについて
決定をする。この例においては、第8表を参照すると、
レジスタR0およびT15に対する資源フリー時間はT15であ
り、それゆえT16の提案される発火時間はT15の資源フリ
ー時間より長く、決定はNOであり、段階950に入る。 TOLLソフトウェアによる分析は次の資源に進行する。
この例において、命令I0に対する次の資源はレジスタR1
0である。この資源は命令により読取りおよび書き込み
が行なわれる。段階930に入り、その命令が資源を読取
るか否かの決定がなされる。真であるから段階932に入
り、ここで命令に対する現在の提案発火時間(T16)が
資源ロード時間(T15)より短いか否かの決定がなされ
る。否であるから、段階940に入る。ここでは、命令が
資源に書き込みを行なうか否かの決定が行なわれる。真
であるから、段階942に入る。この段階においては、命
令に対する提案発火時間(T16)が資源に対するフリー
時間(T15)よりも短いか否かの決定がなされる。否で
あるから、段階950に入る。TOLLソフトウェアによる分
析は、次の資源に入るか(命令I0についてはない)、命
令に対する最後の資源が処理されたならば「B」(第10
図)に入る。 それゆえ、段階950における決定に対する答は肯定で
あり、分析はついで第10図に入る。第10図において、資
源フリー時間およびロード時間がセットされる。段階10
00において、命令I0に対する最初の資源はレジスタR0で
ある。段階1010における最初の決定は、命令が資源を読
むか否かである。前述のごとく、命令I0において、レジ
スタR0の読取りは行なわれないが書き込みが行なわれる
から、この決定に対する答はNOであり、分析は段階1020
に進行する。段階1020において、資源が書き込まれるか
否かの決定に対する答はYESであり、分析は段階1022に
進行する。段階1022は、命令に対する提案発火時間が資
源ロード時間より長いか否かについての決定をなす。こ
の例において、提案発火時間はT16であり、そして第8
表に戻ると、発火時間T16はレジスタR0に対するロード
時間T15より長い。それゆえ、この決定に対する答はYES
であり、段階1024に入る。段階1024において、資源ロー
ド時間は命令の提案発火時間に等しくセットされ、資源
の表(第8表)はその変化を反映するようにして更新さ
れる。同様に、段階1026に入り、資源フリー時間が更新
され、命令の提案発火時間プラス1すなわちT17(T16プ
ラス1)に等しくセットされる。 ついで段階1030に入り、この命令により使用されるほ
かの資源があるか否かについての決定がなされる。1つ
のレジスタR10があり、分析はこの資源を処理する。段
階1070では次の資源が取得される。段階1010に入り、こ
こで、資源が命令に読み取られるか否かの決定がなされ
る。真であるから、段階1012に入り、現在提案発火時間
(T16)が資源フリー時間(T15)より大きいか否かの決
定がなされる。それが真であるから、段階1014に入り、
ここで、資源のフリー時間が、この命令によるこの資源
の使用を反映するように更新される。分析は、継いで、
段階1020にて、資源が命令により書き込まれるか否かを
チェックする。真であるから、段階1022に入り、現在の
提案時間(T16)が資源(T15)のロード時間より長いか
否かの決定がなされる。真であるから、段階1024に入
る。この段階において、資源のロード時間が命令の発火
時間を反映するように更新される。すなわち、ロード時
間はT16にセットされる。ついで段階1026に入り、資源
のフリー時間が命令の実行を反映するように更新され
る。すなわち、フリー時間はT17にセットされる。つい
で段階1030に入り、これが命令により使用される最後の
資源であるか否かの決定がなされる。真であるから段階
1040に入る。ここで、命令発火時間(IFT)は、T16の提
案発火時間(PFT)に等しくなるようにセットされる。
ついで、段階1050に入り、これが基本ブロックにおける
最後の命令であるか否かについての決定がなされる。こ
れはこの場合NOであり、段階160に入り次の命令I1を処
理する。次の命令は、第9図のA1にて分析段階に入る。 例における次の命令はI1であり、レジスタR1およびR1
1に対して、レジスタR0およびR10に関して命令I0に提供
されたのと同じ分析が命令I1に対して行なわれる。以下
の第9表においては、第8図の資源の一部がこれらの変
化を反映するように変更される(命令I0およびI1はTOLL
ソフトウェアにより完全に処理されてしまっている)。 第9表 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R10 T16 T17 R11 T16 T17 基本ブロックの例における次の命令は命令I2であり、
これは、レジスタR0およびR1の読取りおよびレジスタR2
への書込みを含む。それゆえ、第9図の段階910におい
て、命令に対する提案発火時間はT16にセットされる(T
15+1)。ついで段階920に入り、そして命令I2におけ
る第1の資源はレジスタR0である。段階930においてな
される第1の決定はYESであり、段階932に入る。段階93
2では、T16の命令の提案発火時間がT16の資源レジスタR
0ロード時間に等しいかまたはそれ以下であるか否かに
ついての決定がなされる。レジスタR0に対する資源ロー
ド時間は、命令I0に対するレジスタR0の分析中T15からT
16に更新されたことに注目することが重要である。段階
932におけるこの決定に対する答は、提案発火時間が資
源ロード時間に等しい(T16=T16)ということであり、
段階934に入る。段階934において、命令の提案発火時間
は、資源ロード時間プラス1、この例においてはT17(T
16+1)に等しくなるように更新される。命令I2の提案
発火時間はここでT17に更新される。ここで、段階940に
入り、命令I2は資源R0の書込みをしないから、この決定
に対する答はNOであり、段階950、ついで段階960へと入
り、次の資源を処理する。この例においてこれはレジス
タR1である。 段階960においては、レジスタR1に対して行なわれる
分析を開始し、段階930においては、資源が読み取られ
るか否かについての決定がなされる。答はもちろんYES
であり、段階932に入る。今度は、命令の提案発火時間
はT17であり、T17の命令の提案発火時間が、T16である
レジスタR1に対する資源ロード時間に等しいかまたはそ
れ以下であるか否かについての決定がなされる。命令の
提案発火時間はレジスタロード時間より長いから(T17
はT16より大)、この決定に対する答はNOであり、段階9
40に入る。レジスタはこの命令により書き込まれず、そ
れゆえ分析は段階950に進行する。段階960において、命
令I2に対して処理されるべき次の資源は資源レジスタR2
である。 段階930における最初の決定は、この資源R2が読み取
られるか否かである。否であるから、分析は段階940
に、ついで段階942に進む。この時点において、命令I2
の提案発火時間はT17であり、そして段階942において、
T17の命令の提案発火時間が資源R2のフリー時間に等し
いかまたはそれ以下であるか否かの決定がなされる。し
かして、このフリー時間は上記の第8表においてはT15
である。この決定に対する答はNOであり、それゆえ段階
950に入る。これはこの命令に対して処理される最後の
資源であり、分析は第10図において続く。 第10図に移り、命令I2に対する第1の資源R0が分析さ
れる。段階1010において、この資源が読み取られるか否
かの決定がなされ、そしてその答はYESである。段階101
2に入り、命令I2の提案発火時間T17がレジスタR0に対す
る資源のフリー時間より大であるか否かの決定がなされ
る。第9表において、レジスタR0に対するフリー時間は
T17であり、両者は等しいから、この決定に対する答はN
Oである。段階1020に入り、これもNOの答をもたらし、
分析は段階1030に切り替わる。これは命令I2に対して処
理される最後の資源ではないから、段階1070に入り、分
析を次の資源レジスタR1に進める。レジスタR1に対して
は、第10図において、レジスタR0に対するのと全く同じ
経路が取られる。次に、段階1070でレジスタR2の処理が
行なわれる。この場合、段階1010における決定に対する
答はNOであり、段階1020に入る。命令I2に対してレジス
タR2は書き込まれるから、段階1022に入る。この場合命
令I2の提案発火時間はT17であり、資源のロード時間は
第8表からT15である。それゆえ、提案発火時間はロー
ド時間より大であるから、段階1024に入る。段階1024お
よび1026は、レジスタR2に対するロード時間およびフリ
ー時間をそれぞれT17およびT18に前進せしめ、そして資
源の表は第10図に示されるように更新される。 第10表 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R2 T17 T18 これは命令I2に対して処理される最後の資源であるか
ら、T17の提案発火時間が実際の発火時間(段階1040)
となり、次の命令が分析される。 内部ループマトリックス乗算の例における各命令が分
析されるのはこの態様においてであるから、完全に分析
されたとき、最終の資源表は下記の第11表におけるごと
く現われる。 第11表 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R2 T17 T18 R3 T18 T19 R4 T16 T17 R10 T16 T17 R11 T16 T17 第11図において、TOLLソフトウェアは、第9図および
第10図に記載されるタスクを遂行後、段階1100に入る。
段階1100は、すべての資源フリー時間およびロード時間
を所与の基本ブロック内の最大の時間にセットする。例
えば、第11表に記載される最大時間はT19であり、それ
ゆえすべてのフリー時間およびロード時間は時間T19に
セットされる。段階1110に入り、これが処理される最後
の基本ブロックであるか否かについての決定がなされ
る。もし否であれば、段階1120に入り、次の基本ブロッ
クが処理される。これが最後の基本ブロックであれば、
段階1130に入り、再び命令ストリームの第1の基本ブロ
ックでスタートする。この分析の目的は、各基本ブロッ
ク内の命令を論理的に整理し、各命令に論理的プロセッ
サ番号を割り当てることである。これは、内部ループマ
トリックス乗算の例に対して第6表に集約されている。
段階1140は、基準として提案発火時間(IFT)を使っ
て、各基本ブロック内の命令を上昇する順序で分類する
機能を遂行する。ついで段階1150に入り、ここで論理的
プロセッサ番号(LPN)が割り当てられる。プロセッサ
要素の割り当てをなすに際して、1組の命令すなわち同
じ命令発火時間(IFT)を有するものに、論理的プロセ
ッサ番号が到着順サービス式に割り当てられる。例え
ば、第6表に戻ると、発火時間T16に対する第1組の命
令はI0、I1およびI4である。これらの命令は、それぞれ
プロセッサPEO、PE1およびPE2に割り当てられる。次
に、時間T17中、第2組の命令I2およびI5がそれぞれプ
ロセッサPE0およびPEIに割り当てられる。最後に、最後
の時間T18中、最後の命令I3がプロセッサPE0に割り当て
られる。プロセッサ要素の割り当ては他の方法を使って
行なうことができるものであり、プロセッサ要素および
システムの実際のアーキテクチャに基づくことを特に理
解されたい。明らかなように、好ましい実施例におい
て、1組の命令は、ファースト・イン・タイム式に論理
的プロセッサに割り当てられる。割り当てをなした後段
階1160に入り、最後の基準ブロックが処理されたか否か
が決定され、もし否であれば段階1170で次の基本ブロッ
クを生じ、プロセスは完了まで繰り返される。 それゆえ、TOLLソフトウェアの出力は、この例示の実
施例においては、第4図に示されるように、各命令に対
して提案発火時間(IFT)の割り当てをもたらす。先述
のように、命令は、命令発火時間にしたがって、命令ス
トリームに現われる、他のいずれの命令の処理とも干渉
することなく同時に処理され得るような2以上の命令に
基づいて再整理され、そして個々の論理的プロセッサが
第6表に示されるように割り当てられる。上の論述は内
部ループマトリックス乗算の例について行なってきた
が、第9〜11図に記載される分析は、任意のSESE基本ブ
ロックに応用して、そこに含まれる、他のいずれの命令
の処理とも干渉することなく同時に処理され得るような
2以上の命令を検出し、各使用者プログラムに対して命
令発火時間(IFT)および論理的プロセッサ番号(LPN)
を割り当てるのに応用できる。このとき、このインテリ
ジェンスは、基本ブロック内に記録された命令に加える
ことができる。これは、所与のプログラムに対して1回
だけなされ、本発明のTDAシステムアーキテクチャで動
作させるために必要な時間駆動・非集中化制御およびプ
ロセッサマッピング情報を提供する。 第12図に示される実行セットの目的は、1つの実行セ
ット内における命令キャッシュヒットを最大にすること
によりプログラムの実行を最適化すること、換言すれ
ば、1つの実行セット内の基本ブロックによる他の実行
セット内の基本ブロックへの切替えをスタティックに最
小化することである。実行セットの支援手段は、3つの
主要素より成る。すなわち、データストラクチャの定
義、実行セットデータストラクチャを準備する予備実行
時間ソフトウェア、およびプログラムを実行するプロセ
ッサにおいて実行セットの取出しおよび操作を支援する
ハードウェアである。 実行セットデータストラクチャは、1組の1または複
数のブロックおよび付加されたヘッダより成る。ヘッダ
は次の情報を含む。すなわち、実際の命令のスタートの
アドレス1200(これはヘッダが固定長を有するならば内
在的である)、実行セットの長さ(実行セットの終了の
アドレス)、潜在的相続的(プログラムの実行に関し
て)実行セットの0または複数のアドレス1220である。 実行セットを支持するに必要なソフトウェアは、コン
パイル後の処理の出力を操作する。その処理は、依存性
の分析、資源分析、資源割り当て、および個々の命令ス
トリーム再整理を遂行するものである。実行セットの形
成は、基本ブロックの実行の起こり得る順序および頻度
を決定する1または複数のアルゴリズムを使用する。基
本ブロックは相応にグループ化される。可能なアルゴリ
ズムは、最小コストのルート設定のための直線的プログ
ラミングの問題を解くのに使用されるアルゴリズムに類
似である。実行セットの場合、コストはブランチと関連
する。同じ実行セットに含まれる基本ブロック間のブラ
ンチは、キャッシュ操作に関して不利を招くことはな
い。何故ならば、実行セットの基本ブロックに対する命
令は定常状態にあるキャッシュに存するからである。そ
のとき、コストは、異なる実行セットの基本ブロック間
のブランチと関連する。これは、異なる実行セットの基
本ブロックの命令は、キャッシュ内にあると仮定されな
いからである。主メモリからキャッシュへ適当なブロッ
クの検索および記憶がなされている間、キャッシュミス
でプログラムの実行が遅延される。 本発明の教示によるとコストを評価し割り当てるのに
使用できる数種の可能なアルゴリズムがある。1つのア
ルゴリズムは、スタティックなブランチコスト手法であ
る。この方法にしたがえば、ブロックの連続性および最
大の許容実行セットサイズ(これは最大の命令キャッシ
ュサイズのごとく実施の限界となろう)に基づき基本ブ
ロックを実行セットに配置することにより始められる。
基本ブロック間におけるブランチについての情報は既知
であり、コンパイラの出力である。装置は、この情報を
使用し、異なる実行セット内の基本ブロック間における
(スタティックな)ブランチの数に基づいて、結果とし
て生じた基本ブロックの実行セット中へのグループ化の
コストを計算する。装置は、このコスト関数を最小にす
るための標準のリニアプログラミング技術を使用でき、
それにより、基本ブロックの実行セット中への最適のグ
ループ化を行なうことができる。このアルゴリズムは、
実行が容易であるという利点を有する。しかしながら、
このアルゴリズムは、実際のプログラム実行中に起こる
実際のダイナミックなブランチパターンを無視してい
る。 本発明の教示にしたがえば、実際のダイナミックブラ
ンチパターンを一層十分に評価できる他のアルゴリズム
を使用できる。1つの例は、プログラムの実行から実際
のブランチデータを収集することであり、その結果とし
て、実際のブロック間ブランチに基づくブランチコスト
の重みづけ割り当てを利用して基本ブロックの再グルー
プ化を行なうことである。明らかなように、この手法は
データ依存性である。他の手法は、プログラマをしてブ
ランチの確率を特定せしめ、その後重みづけされたコス
ト割り当てをなすことであろう。この手法は、プログラ
マの介入およびプログラマのエラーが導入される不利益
を有する。さらに他の手法は、単位セット当りの基本ブ
ロックの数を制限するがごときパラメータを使用し、そ
してこのパラメータに発見性を与えることに基づくもの
であろう。 上述のアルゴリズムは、実行セットを創成する問題に
独特なものではない。しかしながら、命令キャッシュの
性能を最適化する手段のような実行セットの使用は新規
である。プロセッサ資源の事前実行時間割り当てが新規
であるのと同様に、キャッシュ性能を最大にするための
基本ブロックの事前実行時間分類は、従来技術では見出
されないものである。 実行セットを支援するに必要とされる最後の要素はハ
ードウェアである。後で論述されるように、このハード
ウェアは、現在の実行セットスタートアドレスおよび終
了アドレス、およびその他の実行セットヘッダデータを
記憶するためのメモリを備える。実行セットおよび関連
するヘッダデータストラクチャの存在は、実際に、キャ
ッシュからプロセッサ要素への実際の命令取出しに分り
易い。後者は、厳密に個々の命令およびブランチアドレ
スに依存している。実行セットハードウェアは、命令取
出しと独立に動作し、主メモリから命令キャッシュへの
命令ワードの移動を制御する。このハードウェアは、全
実行セットがキャッシュに存在するか、プログラムの実
行が、実行セットの外側の基本ブロックへのブランチが
起こる点に達するまで、命令の基本ブロックをキャッシ
ュへ取り出すための責務を負う。この点で、目標実行セ
ットはキャッシュに存在しないから、実行セットハード
ウェアは、目標実行セットに属する基本ブロックの取出
しを行なう。 第13図を参照すると、コンテクストファイル0に対す
るレジスタファイル660の構造が示されているが(構造
は各コンテクストファイルに対して同じである)、各構
造体はL+1レベルのレジスタセットを有しており、そ
して各レジスタはn+1の別個のレジスタを備えてい
る。例えば、nは、全部で32のレジスタに対して31に等
しくし得よう。同様に、Lは、全部で16のレベルに対し
て15に等しくし得よう。これらのレジスタは、レジスタ
間で共有されない。すなわち、各レベルは、各他のレベ
ルのレジスタから物理的に別々の1組のレジスタを有す
る。 各レベルのレジスタは、主プログラムに関して特定の
深さで実行されるサブルーチンが利用可能な1群のレジ
スタに対応している。例えば、レベル0の1組のレジス
タは、主プログラムに利用可能であり、レベル1にある
1組のレジスタは、主メモリから直接呼ばれる第1レベ
ルのサブルーチンに利用可能であり、レベル2の1組の
レジスタは、第1レベルサブルーチンにより直接呼ばれ
るサブルーチン(第2レベルサブルーチン)に利用可能
であり、レベル3にある1組のレジスタは、第2レベル
タサブルーチンにより直接呼ばれるサブルーチンに利用
可能である。 これらのレジスタセットは独立であるから、最大のレ
ベルタ数は、サブルーチン間で任意のレジスタを物理的
に共有しなければならない前に、すなわち任意のレジス
タの内容を主メモリに記憶しなければならない前に入れ
こ配置できるサブルーチンの数に対応する。異なるレベ
ルにあるレジスタセットは本発明の共有資源を構成し、
サブルーチン呼び中のシステムオーバーヘッドコストを
相当に節約する。これは、レジスタセットは、稀にしか
メモリに、例えばスタックに記憶される必要がないから
である。 例示の実施例においては、異なるレベルのサブルーチ
ン間の通信は、各ルーチンに、レジスタを得るための最
高3つまでの可能なレベルを与えることにより行なわれ
る。3つのレベルは、現在レベルと、先行(発呼)レベ
ル(もしあれば)と、広域(主プログラム)レベルとで
ある。どのレベルのレジスタがアクセスされるべきかの
指示、すなわち現在実行している主プログラムすなわち
サブルーチンに関するレベルの指示は、TOLLソフトウェ
アにより命令に付加されたスタティックSCSM情報を使用
する。この情報は、処理されるべき情報に関するレベル
を指示する。これは、アーギュメントとして角度値を表
わす値を取り、その値の三角関数であるSINE値を戻すSI
NE関数に対するサブルーチン呼びをその1例として示す
ことができる。主プログラムは第12表に記載され、サブ
ルーチンは第13表に記載されている。 SINEサブルーチンは第13表に記載される。 それゆえ、本発明の教示にしたがうと、第14図におけ
るごとく、サブルーチンの命令I0は、現在レベル(サブ
ルーチンレベルまたは被呼レベル)のレジスタR2を、先
行レベル(発呼ルーチンまたはレベル)からのレジスタ
R1の内容でロードする。サブルーチンは、発呼ルーチン
のレジスタセットから独立に処理を遂行すべくフルセッ
トのレジスタを有することに留意されたい。サブルーチ
ン呼びの完了にて、命令Irは、現在レベルのレジスタR7
を発呼ルーチンのレベルのレジスタR2を記憶せしめる
(これは、SINEルーチンの結果を発呼プログラムのレジ
スタセットに戻す。) 第22図と関連して一層詳述されるように、レベル間の
切替えは、ダイナミックに発生されるSCSM情報の使用に
より行なわれる。しかして、この情報は、命令の現在手
順レベル(すなわち、被呼ルーチンのレベル)の絶対
値、先行の手順レベル(すなわち、発呼ルーチンのレベ
ル)およびコンテクスト識別情報を含むことができる。
絶対的なダイナミックSCSMレベル情報は、TOLLソフトウ
ェアにより供給される相対的な(スタティック)SCSM情
報からLRDにより発生される。コンテクスト識別情報
は、マルチユーザシステムにおいて多数のプログラムを
処理するときのみ使用される。相対的SCSM情報は、第1
表3にレジスタR1(発呼ルーチンの)に対してR1(LO)
として、レジスタR2に対してR2(LO)として示されてい
る。現在のレベルの全レジスタには、現在手順レベルを
示す符号(00)を付した。 第13図および第14図と関連して説明される本方法およ
びストラクチャは、サブルーチンおよびその発呼ルーチ
ンのレジスタ間で同じレジスタの物理的共有が行なわれ
る従来の手法と相当に異なる。物理的共有のため、サブ
ルーチンにより使用のために利用できるレジスタの数が
制限されるから、レジスタを主メモリに格納するために
より多くのシステムオーバーヘッドコストが要求され
る。例えば、Communications of the ACM、1985年1
月発行、Vol.28、No.1、P.8〜21記載のDavid A.Patler
sonの「Reduced Instruction Set Compaters」なる
論文に記載されるMIPS法参照。その文献においては、最
初の16のレジスタは、サブルーチンにより単独に使用さ
れる局部的レジスタであり、次の8個のレジスタ(レジ
スタ16〜23)は発呼ルーチンおよびサブルーチン間で共
有され、最後の8個のレジスタ(レジスタ24〜31)は広
域(または主)プロブラムおよびサブルーチン間で共有
される。明らかなように、サブルーチンによりアクセス
し得る32のレジスタのうち、16のみがプログラムの処理
においてサブルーチンによる使用のために専用される。
複雑なサブルーチンの処理においては、サブルーチンに
専用化されている限定された数のレジスタでは、一般に
サブルーチンの処理に十分とはいえない。データのシャ
フリング(中間のデータのメモリへの記憶を伴なう)が
行なわれなければならず、そしてこれは、ルーチンの処
理において相当のオーバーヘッドコストをもたらす。 本発明の教示によれば、コンパイル時に起こることが
分かっているレベル間の相対切替えは、第4図(SCSMデ
ータ)に示されるごとくレジスタ識別情報に必要な情報
を加え、種々のレベル間において命令を適当にマッピン
グすることにより特定される。それゆえ、完全に独立の
1組のレジスタが、発呼ルーチンおよび各レベルのサブ
ルーチンに対して利用可能となる。発呼ルーチンは、そ
れ自身の完全な1組のレジスタにアクセスすることに加
えて、前述のごとく、命令に加えられる上述のスタティ
ックSCSMマッピングコードを使って、より高次の1組の
レジスタに直接アクセスすることもできる。従来技術の
手法で特に見られるような、サブルーチンに利用可能な
レジスタセットのサイズは低減は文字通り起こらない。
さらに、SCSM情報用のマッピングコードは、任意の数の
所望のレベルにアクセスするに十分の長さのフィールド
とし得る。例えば、1実施例において、発呼ルーチン
は、3ビットのフィールドでそれ自身のレジスタに加え
て7つのより高次のレベルにアクセスできる。本発明
は、任意の特定の数のレベルに限定されるものでもな
く、1つのレベル内の特定数のレジスタに限定されるも
のでもない。本発明の教示によると、第14図に示される
マッピングは、論理的マッピングであり、従来形式の物
理的マッピングではない。例えば、発呼ルーチンレベ
ル、被呼レベルおよび広域レベルのごとき3つのレベル
は3ビットマップを必要とする。レベルの相対的識別
は、スタティックSCSMの2ビットワードにより、例えば
発呼ルーチンは(00)により、副次的なレベルは(01)
により、広域レベルは(11)により特定できる。このよ
うにして、各使用者のプログラムは分析され、スタティ
ックSCSM相対手順レベル情報(やはり窓コードと指称さ
れる)が、使用者プログラムを特定のLPDに発する前に
命令に加えられる。一度使用者が特定のLRDに割り当て
られると、スタティックSCSMレベル情報を使用して、LR
D依存性のダイナミックSCSM情報を発生し、これが必要
に応じて加えられる。 2.ハードウエアの詳細な説明 第6図に図示されるように、本発明のTDAシステム600
は、メモリ610と複数の論理資源ドライバ(LRD)620と
複数のプロセッサ要素(エレメント)(PE)640と複数
の共有コンテクスト記憶ファイル660とから構成され
る。以下に続く詳細な説明は、TOLLソフトウエア出力は
このハードウエアへロードされるので、論理資源ドライ
バから開始される。 a.論理資源ドライバ(LSDs) 特定の論理資源ドライバ(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,15
22cおよび1522dへ相互接続される。各キャッシュ区分は
それぞれバス1524a,1524b,1524cおよび1524dを通じて、
LRD−メモリネットワーク630へ接続される。各キャッシ
ュ区分回路はさらに線1536a,1536b,1536cおよび1536dを
通じてプロセッサ命令キュー(PIQ)バスインターフェ
ースユニット1544へ相互接続される。PIQバスインター
フェースユニット1544は線1546を通じて分岐実行ユニッ
ト(BEU)1548へ接続され、分岐実行ユニット1548は引
き続き線1550を通じて、PE−コンテクストファイルネッ
トワーク670へ接続される。PIQバスインターフェースユ
ニット1544はさらに線1552a,1552b,1552cおよび1552dを
通じて、プロセッサ命令キュー(PIQ)バッファユニッ
ト1560へ接続され、プロセッサ命令キュー(PIQ)バッ
ファユニット1560は引き続き線1562a〜dを通じてプロ
セッサ命令キュー(PIQ)プロセッサ割当回路1570へ接
続される。PIQプロセッサ割当回路1570はつぎに線1572a
〜dを通じてPE−LRDネットワーク650へしたがってプロ
セッサ要素640へ接続される。 データキャッシュ部1500では、データキャッシュATU1
580がバス1582を通じてLRD−メモリネットワーク630へ
相互接続されさらにバス1584を通じてデータキャッシュ
制御回路1586へそして線1588を通じてデータキャッシュ
相互接続ネットワーク1590へ相互接続される。データキ
ャッシュ制御回路1586はまた線1593を通じてデータキャ
ッシュ区分回路1592a〜dへ相互接続される。データキ
ャッシュ区分回路はつぎに線1594a〜dを通じてLRD−メ
モリネットワーク630へ相互接続される。さらに、デー
タキャッシュ区分回路1592は線路1596a〜dを通じてデ
ータキャッシュ相互接続ネットワーク1590へ相互接続さ
れる。最後に、データキャッシュ相互接続ネットワーク
1590は線路1598a〜dを通じてPE−LRDネットワーク650
へそれゆえプロセッサ要素640へ相互接続される。 動作において、各論理資源ドライバ(LRD)620は、デ
ータキャッシュ部1500と命令選択部1510との二つの部分
を有する。データキャッシュ部1500は、プロセッサ要素
640とメモリ610との間で高速データバッファとして振る
舞う。単位時間あたり満足されねばならないメモリ数要
求により、データキャッシュ1500はインタリーブされ
る。プロセッサ要素640によりメモリへ行なわれるすべ
てのデータ要求が、データキャッシュ相互接続ネットワ
ーク1590に発行(issue)せられそしてデータキャッシ
ュ1592により捕捉される。データ要求は、プロセッサに
より実行される各命令へLRDにより付加される動的SCSM
情報の一部であるコンテクスト識別子を使用して、デー
タキャッシュ相互接続ネットワーク1590により適当なデ
ータキャッシュ1592へ送られる。所望されるデータのア
ドレスは、データがキャッシュ区分のどこにあるかを決
める。もし要求されるデータが存在する(すなわち、デ
ータキャッシュヒットが生ずる)ならば、データは要求
しているプロセッサ要素640へ送り返される。 もし要求されるデータがデータキャッシュにないなら
ば、キャッシュ1592へ付加されるアドレスは、システム
アドレスへ変換されるべきよう、データキャッシュATU1
580へ送られる。システムアドレスはつぎにメモリへ発
行される。応答して、メモリからのデータのブロック
(キャッシュラインまたはブロック)がデータキャッシ
ュ制御1586の制御下でキャッシュ区分回路1592へ付与さ
れる。このキャッシュブロックにある要求されるデータ
はつぎにデータキャッシュ相互接続ネットワーク1590を
通じて、要求しているプロセッサ要素640へ送られる。
これは単に一つの可能な構成であることが明瞭に理解さ
れるべきである。データキャッシュ部は従来の構成のも
のでありそして可能な種々の実施が当業者には実現可能
である。データキャッシュは、標準の機能および構成の
ものであるので、これ以上言及しない。 LRDの命令選択部1510は、命令キャッシングと命令キ
ューイングと分岐実行との3つの主要な機能を有する。
命令選択部1510の命令キャッシュ部のシステム機能は、
キャッシング機構の標準的ないずれのものともされる。
それは、プロセッサとメモリとの間で、高速命令バッフ
ァとして振る舞う。しかし、本発明は、この機能を実現
するのに、独特の方法および装置形態を提供する。 命令部1510の一つの目的は、メモリから複数の実行セ
ットを受容し、実行セットをキャッシュ1522へ入れそし
て必要時供給式でセット内の命令をプロセッサ要素640
へ供給することである。システムは一般に独立の複数の
プロセッサ要素640を包含するので、命令キャッシュに
対する要求は、同時実行可能な一群の命令に対するもの
である。再び、単位時間あたり満足されねばならない複
数の要求により、命令キャッシュはインタリーブされ
る。グループ(群)サイズは、無からユーザに利用可能
なプロセッサ数へ範囲がおよぶ。グループはパケットと
名付けられるが、これは、命令が連続的な仕方で記憶さ
れることを必ずしも意味しない。命令は、これらの命令
発火時間(IFT)に基づいて、キャッシュから取り出さ
れる。次命令発火時間レジスタは、取り出されるべき命
令の次パケットの発火時間を包含する。このレジスタ
は、LRDの分岐実行ユニット1548によりロードされなら
びに命令取り出しが完了したときキャッシュ制御ユニッ
ト1518によりインクリメント可能である。 次IFTレジスタ(NIFTR)は、コンテクスト制御ユニッ
ト1518および分岐実行ユニットからアクセス可能な記憶
レジスタである。その簡単な機能により、それは明示し
ない。技術的に、それは命令キャッシュ制御ユニット15
18の一部でありそしてさらに制御ユニット1660に埋め込
まれる。(第16図。)ここのキーポイントは、NIFTR
は、インクリメントまたはロードが可能な単なる記憶レ
ジスタであることである。 命令キャッシュ選択部1510はバス1524を通じてメモリ
から実行セットの命令を受容しそしてラウンドロビン式
に、命令語を各キャッシュ区分1522a〜dに入れる。別
言すれば、実行セットの命令は、第1命令がキャッシュ
区分1522aにまた第2命令がキャッシュ区分1522bに第3
命令がキャッシュ区分1522cに第4命令がキャッシュ区
分1522dに供給されるよう指示される。第5命令は次
に、キャッシュ区分1522aへ指示され、そして実行セッ
トのすべての命令がキャッシュ区分回路へ供給されるま
で続く。 キャッシュ区分へ供給されるすべてのデータがキャッ
シュに必ずしも記憶されるとは限らない。説明されるよ
うに、実行セットヘッダおよびトレーラは記憶されなく
ともよい。各キャッシュ区分は、独特の識別子(タグと
名付けられる)を、そのキャッシュ区分に記憶されるべ
きすべての情報に付加する。識別子は、キャッシュから
得られる情報が実際に所望される情報であることを確認
するのに使用される。 複数命令の一パケットが要求されるとき、各キャッシ
ュ区分は、要求されるパケットのメンバーである命令を
包含するかどうかを確認する。もし、キャッシュ区分の
いずれも、要求されるパケットのメンバである命令を包
含しない(すなわち、ミスが生ずる)ならば、要求され
るパケットを包含する実行セットは、データキャッシュ
ミスに類似の仕方で、メモリから要求される。 もし、ヒットが生ずる(すなわち、キャッシュ区分15
22の少なくとも一つが要求されるパケットからの命令を
包含する)ならば、キャッシュ区分は任意の適当な動的
SCSM情報を命令に付加する。各命令に付加される動的SC
SM情報はマルチユーザ応用に重要である。動的に付加さ
れるSCSM情報は、ある所与のユーザに割り当てられるコ
ンテクストファイル(第6図参照)を識別する。それゆ
え、本発明の教示によって、システム600は、マスタプ
ロセッサまたはメモリへのアクセスを必要とすることな
く、多くのユーザコンテクストファイル間の遅延自由切
換えが可能である。 命令はつぎに、LRD620のPIQバスインターフェースユ
ニット1544へ供給され、ここで、それは、例示の実施例
でTOLLソフトウェアが命令に付加されていた拡張知能に
包含される論理プロセッサ番号(LPN)に応じて適当なP
IQバッファ1560へ送られる。PIQバッファユニット1560
の命令は、実プロセッサ要素640への割当てのために、
バッファされる。プロセッサ割当てはPIQプロセッサ割
当てユニット1570により行なわれる。物理的プロセッサ
要素の割当ては、現在利用可能なプロセッサの数および
割当てられるべき利用できる命令数に基づいて行なわれ
る。これらの数は動的である。選択プロセスは以下の通
りである。 第15図の命令キャッシュ制御1518および各キャッシュ
区分1522の詳細は第16図に示されている。各キャッシュ
区分回路1522では、5つの回路が利用される。第1の回
路は、実行セットのヘッダの各ワードをパス1520bを通
じて命令キャッシュコンテクスト制御ユニット1660へ送
るヘッダ送り回路1660である。ヘッダ送り回路1660の制
御は、パス1520aを通じてヘッダパス選択回路1602によ
り行なわれる。ヘッダパス選択回路1620は、制御ユニッ
ト1660から線路1520bを通じて受容されるアドレスに基
づいて、キャッシュ区分で必要とされる数のヘッダ送り
装置(header router)1600を選択的に賦活する。たと
えば、もし実行セットが2つのヘッダワードを有するな
らば、最初の2つのヘッダ送り回路1600だけが、ヘッダ
パス選択回路1602により賦活されそれゆえヘッダ情報の
2つのワードがバス1520bを通じて、キャッシュ区分回
路1522aおよび1522b(図示せず)の2つの賦活されるヘ
ッダ送り回路1600から制御ユニット1660へ供給される。
説明したように、実行セットの連続するワードが連続す
るキャッシュ区分回路1522へ供給される。 たとえば、第1表のデータは全実行セットを表示しそ
して適当なヘッダワードが実行セットの最初出現すると
仮定する。最先の命令発火時間(IFT)をもつ命令が最
初にリストされそしてある所与のIFTの間に、最も低い
論理プロセッサ番号に関するこれらの命令が最初にリス
トされる。表はつぎのように読まれる。 第14表 ヘッダワード1 ヘッダワード2 I0(T16)(PE0) I1(T16)(PE1) I4(T16)(PE2) I2(T17)(PE0) I5(T17)(PE1) I3(T18)(PE0) それゆえ、第1表の例(すなわち、マトリックスマル
チプライ内部ループ)は、それと関連の2つのヘッダワ
ードと発火時間(IFT)および論理プロセッサ番号(LP
N)を画然する拡張情報を持つ。第14表に示されるよう
に、命令は、発火時間に応じて、TOLLソフトウエアによ
り再順序付けられた。それゆえ、第14表に示される実行
セットは、LRD−メモリネットワーク630を通じてメモリ
から供給されるとき、第1のワード(ヘッダワード1)
は、区分キャッシュ0により制御ユニット1660へ送られ
る。第2のワード(ヘッダワード2)は、区分キャッシ
ュ1(第15図)により制御ユニット1660へ送られる。命
令がI0が区分キャッシュ2へ、命令I1が区分キャッシュ
3へ、命令I2が区分キャッシュ0へ等々送られる。その
結果、キャッシュ区分1522はここに第15表に示されるよ
うな命令を包含する。 上記の例は、実行セットでただ一つの基本ブロックを
もつにすぎない(すなわち、それは極端に単純化した例
である)ことをはっきりさせることが重要である。現実
に、実行セットは複数の基本ブロックを有するであろ
う。 命令は次に、記憶のため各キャッシュ区分にあるキャ
ッシュランダムアクセスメモリ(RAM)1610へ供給され
る。各命令は、ヘッダ送り装置1600からバス1602を通じ
てタグ付加装置(tag attacher)回路1604へそして次に
線路1606を通じてRAM1610へ供給される。タグ付加装置
回路1604はタグ生成回路1612の制御下にあり、そして線
路1520cを通じて、これと相互接続される。キャッシュR
AM1610には、従来のスーパーミニコンピュータで見出さ
れるような従来のキャッシュ高速RAMが可能である。 タグ生成回路1612は、指定されるRAM1610での命令の
記憶の前に、各命令への付加のために、独特の識別コー
ド(ID)を提供する。キャッシュ回路に記憶される命令
へのプロセス識別タグの割当ては従来のものでありそし
てエイリアシング(aliasing)を回避するよう行なわれ
る。アラン ジエイ スミス(Alan J.Smith)によりエ
イシーエム コンピューティング サーベイズ(ACM Co
mputing Surveys)第14巻、1982年9月の“Cache Memor
ies"参照。タグは、各別の命令およびユーザからそれを
唯一つ識別するのに十分な量の情報を有する。例示の命
令はすでにIFTとLPNとを含むので、後に命令が実行のた
め検索されるとき、命令は命令の発火時間に基づいて取
り出される。以下の第16表に示されるように、拡張情報
およびハードウエアタグを含む各命令は上記の例につい
て表示のように記憶される。 第16表 キャッシュ0:I4(T16)(PE2)(ID2) キャッシュ1:I2(T17)(PE0)(ID3) キャッシュ2:I0(T16)(PE0)(ID0) I5(T17)(PE1)(ID4) キャッシュ3:I1(T16)(PE1)(ID1) I3(T18)(PE0)(ID5) 先に説明されたように、キャッシュ区分回路1522の目
的は、遅い主メモリと速いプロセッサ要素640との間に
高速バッファを提供することである。通常、キャッシュ
RAM1610は、高速アクセスが可能な高速メモリである。
もし、RAM1610が真の連想メモリであるならば、第16表
に明示されるように、各RAM1610は、命令発火時間(IF
T)に基づいてアドレス可能である。現在、この種の連
想メモリは経済的に妥当でなくまたキャッシュアドレス
変換回路1620へのIFTが利用されねばならない。この種
の回路は、設計が従来のものでありそしてバス1520dを
通じて、各RAMのアドレッシングを制御する。回路1620
の目的は、命令発火時間の与えられる所望される命令の
RAMアドレスを生成することである。それゆえ、命令発
火時間T16について、第16表に示されるように、キャッ
シュ0とキャッシュ2とキャッシュ3とは、それぞれ命
令I4とI0とI1とを発生しよう。 キャッシュRAM1610がアドレスされるとき、特定の発
火時間に関連されるこれらの命令は、線路1624を通じて
タグ比較および特権検査回路1630へ供給される。タグ比
較および特権検査回路1630の目的は、適当な命令が供給
されたことを確認するために、ハードウエアタグ(ID)
を発生されるタグと比較することである。参照ないし基
準タグは、線路1520eを通じてタグ比較および特権検査
回路1630へ相互接続される別のタグ生成回路1632を通じ
て発生される。特権検査がまた、命令により要求される
動作が(例えばシステムプログラム、アプリーケーショ
ンプログラムなど)プロセスの所与の特権状態(ステー
タス)が許可されるのを確認するのに、供給される命令
でも遂行される。これは、プロセッシングステータスの
複数レベルをサポートするコンピュータプロセッサによ
り行なわれる従来の検査である。ヒット/ミス回路1640
が、特定の命令フェッチ(取出し)要求に応答して、ど
のRAM1610が適当な命令をPIQバスインターフェースユニ
ット1544へ供給したかを決定する。 たとえば、第16表に振り返ってみると、もしRAM1610
が、命令発火時間T16について、回路1620によりアドレ
スされるならば、キャッシュ0とキャッシュ2とキャッ
シュ3は命令に応答して、これらのキャッシュ区分でヒ
ット指示を構成しよう。キャッシュ1は応答せずそして
ミス指示を構成しそしてこれは線1520gを通じて回路164
0により決定されよう。こうして、命令発火時間T16につ
いて各命令がバス1632を通じて、もしあれば動的SCSM情
報がSOSM付加装置ハードウェア1650により命令に付加さ
れるSCSM付加装置1650へ供給される。例えば、ハードウ
エア1650が(相対値である)静的SCSM手続レベル情報を
実手続レベル値と置換できる。実手続レベル値は手続レ
ベルカウンタデータおよび静的SCSM情報から発生され
る。 各発火時間に関連される命令のすべてが、RAM1610か
ら読み取られとき、ヒットおよびミス回路1640は線路16
46を通じて、命令キャッシュ制御ユニット1660にこの情
報を伝達する。命令キャッシュコンテクスト制御ユニッ
ト1660は、命令発火時間を次の値にインクリメントする
命令キャッシュ制御1518の一部である次命令発火時間レ
ジスタを包含する。それゆえ、例では、命令発火時間T1
6に関連されるすべての命令の読み取りの完了にて、命
令キャッシュコンテクスト制御ユニット1660は次発火時
間T17ヘインクリメントを行ないそしてこの情報を線路1
664を通じてアクセス決定(resolution)回路1670へま
た線路1520fを通じてタグ比較および特権検査回路1630
へ供給する。またTOLLソフトウエアにより感知される動
作依存状態によっては有効命令をもたない発火時間があ
ってもよいことに注意されたい。この場合には、キャッ
シュからはなんの命令もフェッチされずまたPIQインタ
ーフェースへ伝達されないであろう。 アクセス決定回路1670は、どの回路が命令キャッシュ
RAM1610へのアクセスを有するかを調整する。通常、こ
れらのRAMは、各クロックサイクルで単一の要求だけを
満足させることができる。RAMへ一度に二つの要求があ
ることがあるので、いずれの回路がアクセスを獲得する
かを決めるために調停方法が実行されねばならない。こ
れはキャッシュメモリの設計での従来の問題であり、ア
クセス決定回路は、この分野でよく知られている優先順
位問題を解決する。 本発明は、数人のユーザを支援できそしてできれば時
間と空間の両方で同時に数人のユーザを支援できるのが
よい。以前の従来技術の方法(CDC、IBMなど)では、マ
ルチユーザ式支援が単に一または複数のプロセッサを時
分割することによって実現されていた。別言すれば、プ
ロセッサは時間にて共有されていた。このシステムで
は、マルチユーザ式支援が、複数のプロセッサエレメン
トで時間を与えられる各ユーザへのLRDの割当てにより
(空間にて)実現される。こうして、プロセッサエレメ
ントの共有に対する空間的態様がある。マシンのオペレ
ーティングシステムは時分割される仕方で同様のLRDに
割り当てられるこれらのユーザを取り扱い、それによ
り、時間的次元をプロセッサの共有に付加する。マルチ
ユーザ式支援が複数のLRDと複数のプロセッサエレメン
トの使用とレジスタファイルおよび条件コード記憶をサ
ポートする複数のコンテクストファイル660とにり実現
される。数人のユーザが同時にプロセッサエレメントで
実行してもよいとき、追加の情報のピース(片)が、命
令ソースおよびそれが利用可能ないずれの資源をも唯一
つ識別するため、その実行前に、各命令に付加されねば
ならない。例えば、レジスタ識別子がサブルーチン手続
レベルの絶対値とコンテクスト識別子ならびに実レジス
タ番号を包含しなければならない。メモリアドレスもま
た、命令がそれからLRD−メモリ相互接続ネットワーク
を通じて適当なデータキャッシュへ適当に送られるべく
発行(issue)されたところのLRD識別子を包含しなけれ
ばならない。追加および要求される情報は、静的および
動的構成成分の二つの成分を備え、そして情報は、「共
有コンテクストストーレッジマッピング」(SCSM)と称
される。静的情報は、コンパイラ出力から生じ、TOLLソ
フトウエアはコンパイラ生成命令ストリームから情報を
収集し、そしてレジスタ情報を、命令がLRDにより受容
されるまえに、命令に付加する。 動的情報は、プロセッサへの命令の発生のまえにLRD
により命令にハードウエア付加される。この情報は、命
令を発生するLRDに対応するコンテクスト/LRD識別子と
命令の現在手続レベルの絶対値と現在の命令ストリーム
のプロセス識別子と好ましくは通常コンテクスト自由で
ないプロセッサを有するシステムのプロセッサに包含さ
れるであろう命令ステータス情報とから構成される。こ
の後の情報は、誤りマスクと浮動小数点フォーマットモ
ードと丸めモードなどから構成されよう。 第16図の回路の動作において、一またはそれ以上の実
行セットが命令キャッシュ回路へ供給される。各セット
ごとのヘッダ情報は一またはそれ以上の連続するキャッ
シュパーティッション(区分)へ供給されそしてコンテ
クスト制御ユニット1660へ送られる。実行セットの命令
は次に、ラウンドロビン式に個々に各連続するキャッシ
ュパーティッションユニット1522へ送られる。ハードウ
エア識別タグが、各命令に付加されそして次に命令はRA
M1610に記憶される。先に説明したように、各実行セッ
トは、命令キャッシュ不履行(デフォールト)を最小限
にするよう十分な長さのものでありそしてRAM1610は実
行セットを記憶するのに十分な大きさのものである。プ
ロセッサエレメントが命令を要求するとき、適当なIFT
と整合する有効命令の数およびキャッシュロケーション
(場所)が決められる。RAM1610に記憶される命令は読
み出され、識別タグは確認され、特権ステータスが検査
される。命令は、次にPIQバスインターフェースユニッ
ト1544へ供給される。PIQバスインターフェースユニッ
ト1544へ供給される各命令は、第17表に示されるよう
に、識別子タグ(ID)およびハードウエア付加SCSM情報
を含む。 第17表 キャッシュ0:I4(T16)(PE2)(ID2)(SCSM0) キャッシュ1:I2(T17)(PE0)(ID3)(SCSM1) キャッシュ2:I0(T16)(PE0)(ID0)(SCSM2) I5(T17)(PE1)(ID4)(SCSM3) キャッシュ3:I1(T16)(PE1)(ID1)(SCSM4) I3(T18)(PE0)(ID5)(SCSM5) もし、命令がRAM1610に記憶されていないならば、キ
ャッシュミスが生じ、そして命令を包含する新しい実行
セットが線路1523を通じて主メモリから読み取られる。 第17図ではPIQバスインターフェースユニット1544お
よびPIQバッファユニット1560の詳細が示されている。
第17図を参照すると、PIQバスインターフェースユニッ
ト1544は上の第17表に示されているような命令を線路15
36を通じて受容する。正しい発火時間を有する命令を包
含するこれらのサーチないし探索タグハードウエア1702
が線路1549を通じて現在の命令発火時間の値へアクセス
できそしてキャッシュメモリ1522を検索し、正しい発火
時間を有する命令を包含するこれらのレジスタのアドレ
スを決める。PIQバスインターフェース1544への供給の
ため、どの命令が次に選択すべきかを命令キャッシュ制
御回路系により決定するために、検索タグハードウエア
1702は次に、これらのメモリロケーションのアドレスを
命令キャッシュ制御回路系1518に対して利用可能にす
る。 これらの命令は、並列にバスインタフェースユニット
(BIU)1700の2次元配列にアクセスする。バスインタ
ーフェースユニット1700は、接続1710および1720により
フルアクセス非ブロッキングネットワークで相互接続さ
れ、そして線路1522を通じてPIQバッファユニット1560
へ接続する。各バスインターフェースユニット(BIU)1
700は、T1 74L85の4ビットの大きさのコンパレータ
(テキサス州75265、ダラス、ピーオーボックス225012
のテキサスインスツルメント社)から構成される。命令
発火時間T16に対して、マトリックスマルチプライ例に
おいて、キャッシュ0が命令I4を包含しそしてキャッシ
ュ3(第17図のキャッシュnに対応する)が命令I1を包
含する。命令I4に割り当てられる論理プロセッサ番号は
PE2である。論理プロセッサ番号PE2はプロセッサ命令キ
ュー2(これは、命令を包含するキャッシュ0ユニット
に対応するBIU3である)のため、バスインターフェース
ユニット1700の選択(SEL)信号が賦活される。この例
では、BIU3だけが賦活されそしてこのBIU3行および列に
対し残りのバスインターフェースユニットは賦活されな
い。同様に、キャッシュ3(第17図のキャッシュn)に
対し、対応するBIU2は、プロセッサ命令キュー1に対し
て賦活される。 PIQバッファユニット1560は、第18表に示されるファ
ーストインファーストアウト(FIFO)方法でPIQバスイ
ンターフェースユニット1544から受容される命令を記憶
する複数のプロセッサ命令キュー1730から構成される。 第18表 PIQ0 PIQ1 PIQ2 PIQ3 I0 II I4 −− I2 −− −− −− I3 −− −− −− 命令キューイング機能を実行するのに加えて、PIQ173
0はまた、プロセッサエレメント640へ発行される各命令
の実行ステータスをトラックを追跡する。理想的なシス
テムでは、命令は、命令が実行を完了したかどうかにつ
いて顧慮することなく、クロックサイクルごとにプロセ
ッサエレメントへ発行できよう。しかし、システムのプ
ロセッサエレメント640は、例えばデータキャッシュミ
スなど例外的条件の発生によりクロックサイクルごとに
命令を完了できないこともあろう。その結果、各PIQ173
0は、まだ実行状態のプロセッサエレメント640へ発行さ
れたすべての命令を追跡する。この追跡の主要な結果
は、PIQ1730がLRD620のため命令クロッキング機能を実
行することである。別言するとPIQ1730は、直線コード
(straightline code)を実行しているとき、次の発火
時間レジスタが更新されるときを決定する。これはつぎ
に、新しい命令取出しサイクルを開始する。 命令クロッキングが、所与のPIQにより発行される命
令が実行されたか、またはパイプライン構成ないし結合
されるPEの場合には、次のステージ(段階)へ進行した
かを特定することを、各PIQ1730に命令済み信号を形成
させることにより実現される。これは、次に、このLRD
からのすべての別のPIQ命令済み信号と組み合されそし
て次発火時間レジスタをインクリメントするインクリメ
ント信号をゲートするのに使用される。「済み」信号
は、線路1564を通じて、命令キャッシュ制御1518へ供給
される。 第18図を参照すると、PIQプロセッサ割当て回路1570
は、PE−LRDネットワーク650へそしてつぎに種々のプロ
セッサエレメント640へフルアクセススイッチとして相
互接続されるネットワークインターフェースユニット
(NIU)11800の2次元配列を包含する。各ネットワーク
インターフェースユニット(NIU)1800は図17のバスイ
ンターフェースユニット(BIU)1700と同様の回路系か
ら構成される。通常の動作において、プロセッサ命令キ
ュー#0(PIQ0)は、キュー#0に対応する列に関連さ
れるNIU0を賦活することにより直接プロセッサエレメン
ト0をアクセスでき、その列および行に対しPIQプロセ
ッサ整列回路の残りのネットワークインターフェースユ
ニットNIU0、NIU1、NIU2、NIU3は非賦活される。同様
に、プロセッサ命令キュー#(PIQ3)は通常、キュー#
3に関連の列のNIU3を賦活することによりプロセッサエ
レメント3をアクセスし、その列および行の残りのNIU
0、NIU1、NIU2およびNIU3は賦活されない。ネットワー
クインターフェースユニット1800の賦活は、命令選択お
よび割当て回路1810の制御下にある。 ユニット1810が、ユニット1810がメンバであるLRD内
にPIQ1730から線路1811を通じてまた線路1813を通じて
(別のLRDの)別の全てのユニット1810からそしてネッ
トワーク650を通じてプロセッサエレメント640から信号
を受容する。各PIQ1730は、“I have an instruction t
hat is ready to be assigned to a processor"に対応
する信号をユニット1810に供給する。別のPIQバッファ
ユニットは、このユニット1810およびすべての別のユニ
ット1810に、“My PIQ1730(#x)has an instruction
ready to be assigned to a processor"に対応する信
号を供給する。最後に、プロセッサエレメントはシステ
ムで各ユニット1810に、“I can accept a new instruc
tion"に対応する信号を供給する。 一LRDのユニット1810は、線路1811を通じてそのLRDの
複数のPIQ1730へまた線路1860を通じてそのLRDのネット
ワークインターフェースユニット1800へそして線路1813
を通じてシステムの別のLRDの別のユニット1810へ信号
を伝達する。ユニット1810は、“Gate your instructio
n onto the PE−LRD interface bus(650)”に対応す
る信号を各PIQ1730へ伝達する。ユニットは、選択信号
をネットワークインターフェースユニット1800へ伝達す
る。最後に、ユニットは“I have used processor elem
ent#x"に対応する信号を、使用されつつある各プロセ
ッサに対しシステムの各別のユニット1810へ伝達する。 さらに、各LRDの各ユニット1810は、LRDの優先順位に
対応する優先順位をそれに関連して有する。これは、複
数LRDを、ゼロからシステムのLRDの数へと上行する順序
に並べるのに使用される。プロセッサエレメントを割当
てるのに使用される使用される方法は次の通りである。
複数LRDが並べられるとすると、多くの割当て方式が可
能である(たとえば、ラウンドロビン、ファーカムファ
ーストストサーブド(first come first served)、タ
イムスライスなど)。しかし、これらは、実施細目であ
りまた本発明の教示に基づくこの装置の機能に影響を与
えるものではない。 現在最も高い優先順位をもつLRDを考察する。このLRD
は、それが要求する全てのプロセッサエレメントを得、
そして実行されるべき用意の整った命令を利用可能なプ
ロセッサエレメントに割り当てる。もし、プロセッサエ
レメントがコンテクストフリーであるならば、どのよう
な仕方でも割り当てることができる。しかし一般に、す
べてのプロセッサが正しく機能していると仮定するなら
ば、もちろんプロセッサエレメント#0が利用可能であ
るとして、PIQ#0からの命令がプロセッサエレメント
#0へ送られる。 最も高い優先順位のLRDでユニット1810は次にこの情
報をシステムの別のすべてのユニット1810へ伝達する。
オープン状態のいずれのプロセッサも次に、実行可能な
命令と一緒に次に最も高い優先順位のLRDにより利用さ
れる。この割当ては、全てのプロセッサが割り当てられ
るまで継続する。それゆえ、プロセッサはデイジーチェ
イン態様の優先順位に基づいて割り当てられる。 もし特定のプロセッサエレメントが、例えば、エレメ
ント1が障害を起こしたならば、命令選択割当てユニッ
ト1820は、全てのネットワーク命令ユニットNIU1を非活
動化することにより、このプロセッサエレメントを非活
動化できる。それは次に、例えばプロセッサエレメント
2がプロセッサエレメント1に論理的に割り当てられる
全ての命令を受容し、プロセッサエレメント3が、プロ
セッサ2に論理的に割り当てられる全ての命令を受容す
るため、ここに割り当てることができるよう(以下同
様)、ハードウエアを通じてプロセッサエレメントを整
理し直しことができる。実際、余分なプロセッサエレメ
ントおよびネットワークインターフェースユニットが、
高い程度の障害許容限界を提供するためシステムに用意
できる。 明らかに、これは単に可能な実施の一つである。別の
種々の方法もまた実現可能である。 b.分岐実行ユニット(BEU) 第19図を参照すると、分岐実行ユニット(BEU)1548
は、本発明では、各基本ブロックの終了で生ずるすべて
の分岐命令の実行に責任のあるユニットである。例示の
実施例では、サポートされる各コンテクストごとに一つ
のBEU1548があり、それで、第6図を参照して、“n"個
のサポートされるコンテクストが“n"個のBEUを必要と
する。各BEUは簡単な設計のものでありそれゆえ複数の
コンテクスト間でBEUを共有する費用は、各コンテクス
トにそれ自身のBEUを持たせるようにすることよりもよ
り高価であろうから、例示の実施例は、各サポートされ
るコンテクストごとに一つのBEUを使用する。 BEU1548は、分岐命令がPE640の外側で実行されること
以外は、従来の仕方で分岐を実行する。BEU1548は、分
岐条件を評価し、そして、目標アドレスが選択されると
き、このアドレスを生成しそして次命令取出しレジスタ
へ直接入れる。目標アドレス生成は、手続呼出しまたは
復帰でない無条件および条件分岐については従来のもの
である。目標アドレスは、(a)命令から直接または
(b)次命令取出しレジスタの現在の内容からのオフセ
ットまたは(c)コンテクストレジスタファイルの汎用
目的レジスタのオフセットから取られる。 サブルーチンからの復帰分岐が、わずかに異なる態様
で処理される。サブルーチン復帰分岐を理解するため
に、サブルーチン呼出し分岐の説明が必要である。分岐
が実行されるとき、復帰アドレスが生成されそして記憶
される。復帰アドレスは通常は、サブルーチン呼出しに
続く命令のアドレスである。復帰アドレスは、メモリに
積重ねて(stack)または分岐実行ユニットに対して別
の記憶場所に記憶される。さらに、サブルーチン呼出し
の実行は手順レベルカウンタをインクリメントする。 サブルーチン分岐からの復帰はまた無条件分岐であ
る。しかし、命令内に目標アドレスを包含するのではな
く、このタイプの分岐は、先に記憶された復帰アドレス
を記憶装置から読み取り、手順レベルカウンタをデクリ
メントし、そして次命令取出しレジスタに復帰アドレス
をロードする。本開示の残りの部分では、条件分岐の評
価および実行を論述する。開示の技術はまた無条件分岐
にも適用されることに注意されたい。なぜならこれらは
本質的に、条件が常に満足されている条件分岐であるか
らである。さらに、同様の技術もまたサブルーチン呼出
しおよび復帰分岐に適用され、これは上に開示の追加の
種々の機能を遂行する。 条件分岐を速くするため、条件分岐が取られるか否か
の決定は、条件コードの適当な組と分析にのみに依存す
る。本発明の教示により、条件コードを適当に処理する
こと以外、なんらのデータの評価も行なわれない。さら
に、分岐が使用する条件コードを生成する命令が、コー
ドをBEU1548ならびに条件コード記憶装置へ伝達でき
る。これは、BEUがそれを取出すことができる前に、コ
ードが条件コード記憶装置で有効となるのに必要とされ
る従来の余分の待ち時間を除去する。 本発明はまた、プログラム正確さを保証するため、遅
延分岐動作(branching)の広範な使用をも行なう。分
岐が実行されそしてその効果がシステムを伝達している
とき、分岐の手順領域内にあるすべての命令は、第6表
の例に関連して論述されたように、実行されているかま
たは実行されつつあるプロセスにあるはずである。別言
すると、(分岐に応答して)次命令ポインタを変化させ
ることは、分岐の最後の(一時的に実行される)命令に
続く発火時間を指すために、現在の発火時間が更新され
た後で、起こる。それゆえ、第6表の例では、発火時間
T17の命令I5が、この基本ブロック対する最後の発火時
間であるT18の完了まで、遅延される。次基本ブロック
に対する命令時間はそれでT19である。 BEU1548の機能は、4状態式状態マシンとして説明で
きる。 段階1:命令デコード −動作デコード −遅延フィールドデコード −条件コードアクセスデコード 段階2:条件コード取出し/受容 段階3:分岐動作評価 段階4:次命令取出し ロケーションおよび発火時間更新 遂行されるべき動作の決定と一緒に、第1段階はまた
BEUによる分岐の受取り後起こる取出し動作(fetchin
g)がどのくらいの長さ継続できるかをそしてBEUが条件
分岐に対しどのように条件コードにアクセスするか、す
なわちどのように条件コードが受容または取出されるか
をも決定する。 第19図を参照すると、分岐命令は、バス1546を通じ
て、PIQバスインターフェースユニット1544からBEU1548
の命令レジスタ1900へ供給される。命令レジスタ1900の
フィールドは、FETCH/ENABLE(取出し/イネーブル),C
ONDITION CODE ADDRESS(条件コードアドレス),OP COD
E(操作コード),DELAY FIELD(遅延フィールド)およ
びTARGET ADDRESS(目標アドレス)のように指示され
る。命令レジスタ1900は、線路1910a〜bを通じて条件
コードアクセスユニット1920へ、線路1910cを通じて評
価ユニット1930へ、線路1910dを通じて遅延ユニット194
0へそして線路1910eを通じて次命令インターフェース19
50へ接続される。 ひとたび、命令がPIQバスインターフェースユニット1
544からBEU1548へ発行されると、命令取出し動作は、遅
延フィールドの値が決定されるまで、停止(ホールドア
ップ)されねばならない。この値は、BEUにより分岐の
受取りに関連して測定される。これが段階1である。も
し、この分岐と重複可能な命令がないならば、このフィ
ールド値はゼロである。この場合、命令取出しが、分岐
の結果が決定されるまで、停止される。もしこのフィー
ルドがゼロでないならば、命令取出しが、このフィール
ドの値により与えられる多くの発火時間の間、継続可能
である。 条件コードアクセスユニット1920は、線路1550を通じ
てレジスタファイル−PEネットワーク670へまた線路192
2を通じて評価ユニット1930へ接続される。段階2動作
中、条件コードアクセスデコードユニット1920は、条件
コードが命令により取り出されねばならないかどうかを
または分岐条件を決定する命令が条件コードを供給する
かを決定する。条件分岐を決定する基本ブロックあたり
唯一つの命令があるので、基本ブロックに対してBEUに
より受容される一つよりも多い条件コードは決してな
い。その結果、条件コードがいつ受容されるかの実際の
タイミングは重要ではない。もし、それが分岐よりも早
く来るならば、分岐の実行前の前に他のコードが受容さ
れることはない。もし、それが遅く来るならば、分岐は
待機し、そして受容されるコードは常に適切なものであ
る。基本ブロックに対し条件コードは、BEUにより同時
にまたは異なる時間に受容される複数のコードを含むこ
とができることに注意されたい。 評価ユニット1930は、線路1932を通じて次命令インタ
ーフェース1950へ接続される。次命令インターフェース
1950は、線路1594を通じて命令キャッシュ制御回路1518
へ、そして線路1942を通じて遅延ユニット1940へ接続さ
れる。そして、遅延ユニット1940はまた、線路1549を通
じて命令キャッシュ制御ユニット1518へも接続される。 動作の評価段階中、条件コードは、検査されている条
件を表示するブール関数に応じて、組み合わされる。動
作の最終段階では、もし条件分岐が取られないないなら
ば、逐次(シーケンシャル)命令ストリームの取出しを
継続するかまたは、もし、分岐が取られるならば、次命
令ポインタがロードされる。 命令ストリームでの分岐の影響は以下のように説明で
きる。論述するように、命令が、レジデント論理プロセ
ッサ番号(LPN)の分析により命令の各PIQ1730へ送られ
る。、命令取出しが、分岐に出会うまで、すなわち、命
令がBEU1548の命令レジスタ1900へ供給されるまで、継
続される。この点で、遅延分岐のない従来のシステムで
は、取出しが、分岐命令の決定が完了するまで停止され
よう。例えば、ジェイエフ ケー リー(J.F.K.LEE)
およびエイ ジェイ スミス(A.J.Smith)によるIEEE
Computer Magazine(1984年1月)の“Branch Predicti
on Strategies and Branch Target Buffer Design"を参
照されたい。遅延分岐動作を包含する本システムでは、
命令が、取出される次命令が実行されるべき基本ブロッ
ク最後の命令であるまで、取出されるべく継続しなけれ
ばならない。分岐が実行される時間はそれで、命令の取
出し動作が次命令アドレスを変更する可能性なしに起こ
る最後の時間である。こうして、分岐が取り出されると
きと分岐の影響が実際に感知されるときとの間の差は、
取出し動作が継続できる追加の発火時間サイクルの数に
対応する。 この遅延の影響は、BEU1548が、キャッシュコントロ
ーラ1518の次命令発火時間レジスタにアクセスしなけれ
ばならないことである。さらに、BEU158は、命令キャッ
シュ制御ユニット1518により遂行される命令取出しプロ
セスの開始または不能化(disabling)を制御できる。
これらのタスクは、バス1549を通じる信号により達成さ
れる。 動作では、分岐実行ユニット(BEU)1548は次のよう
に機能する。例えば上の例での命令I5などの分岐命令
は、PIQバスインターフェースユニット1544から命令レ
ジスタ1900へロードされる。命令レジスタの内容はそれ
でBEU1548の以後の動作を制御する。FETCH−ENABLEフィ
ールドは、条件コードアクセスユニット1920は、CC−AD
Xフィールドに記憶されるアドレスに配置される条件コ
ードを検索すべきか否か(呼出しFETCH)または条件コ
ードが生命命令により供給されるかどうかを指示する。 もし、FETCHが要求されるならば、ユニット1920は、
第20図に図示される条件コード記憶装置2000へアクセス
するため、レジスタファイル−PEネットワーク670へア
クセスする(第6図参照)。第20図を参照すると、各コ
ンテクストファイルに対し条件コード記憶装置2000が、
一般化された場合にて図示されている。一組のレジスタ
CCxyが、手順レベルyに対し条件コードを記憶するため
提供される。それゆえ、条件コード記憶装置2000は、FE
TCH要求に応じて、必要な条件コードを検索するため
に、ユニット1920によりアクセスされそしてアドレスさ
れる。実条件コードおよび条件コードがユニット1920に
より受容されることの指示は、線路1922を通じて評価ユ
ニット1930へ供給される。評価ユニット1930へ供給され
るOPCODEフィールドは、受容される条件コードと共に、
分岐取り信号を線路1932を通じて次命令インターフェー
ス1950へ供給するよう機能する。評価ユニット1930は、
例えばカリフォルニア95035のミルピタス(Milpitas)
のマクカーシーブルバード(McCarthy Blvd.)1551のLS
I Logic Corporationからの標準のゲートアレイなどか
ら構成される。 評価ユニット1930は、条件分岐が取られるか否かを決
定する条件コードセットを受け取り、そしてOPCODEフィ
ールドの制御のもとで、条件分岐取り信号を生成するた
め、ブール関数で条件コードセットを組み合わせる。 次命令インターフェース1950は、命令レジスタ1900の
TARGET−ADXフィールドから分岐目標アドレスをそして
線路1932を通じて分岐取り信号を受け取る。しかし、イ
ンターフェース1950は、イネーブル信号が線路1942を通
じて遅延ユニット1940から受け取られるまで、動作でき
ない。 遅延ユニット1940は、命令取出し動作が、BEUによる
分岐命令の受取りの後、継続できる時間の量を決定す
る。先に、分岐命令がBEUにより受け取られるとき、命
令取出し動作が、一よりも多いサイクルの間継続しその
後停止することを説明した。このサイクル中取り出され
る命令は、遅延フィールドの長さが決定されるまで、PI
Qバスインターフェースユニット1544の通過を阻止され
る。たとえば、もし遅延フィールドがゼロである(分岐
が即座に実行されることを意味する)ならば、これらの
命令は、それらが取り出されるべき正しい命令であるか
どうかが決定されるまで、PIQバスバッファユニットへ
は依然として与えてはならない。もし、遅延フィールド
がゼロでないならば、遅延値がゼロであるべく決定され
たらすぐにPIQバッファユニットへゲートされるであろ
う。遅延の長さは、命令レジスタ1900のDELAYフィール
ドから得られる。遅延ユニットは、レジスタ1900から遅
延長さをそして線路1549を通じてコンテクスト制御1518
からクロックインパルスを受容する。遅延ユニット1940
は、各クロックパルスで遅延の値をデクリメントしそし
て完全にデクリメントされるとき、インターフェースユ
ニット1950はイネーブルとなる。 それゆえ、第6表の論述では、命令I5が発火時間T17
を割り当てられるが、発火時間T18まで遅延される。遅
延時間中、インターフェース1950は、命令の取り出しを
継続して現在の基本ブロックを終了するため、線路1549
を通じて命令キャッシュ制御1518に合図する。イネーブ
ルされるとき、インターフェースユニット1950は、次基
本ブロックに対し、次アドレス(すなわち分岐実行アド
レス)を、線路1549を通じて命令キャッシュ制御1518へ
供給する。 要約するとそして第16表の例に対し、分岐命令I5は時
間T17中命令レジスタ1900へロードされる。しかし、最
後の命令I3が時間T18中に処理されるまで分岐命令は実
行できない場合、一つの発火時間の遅延(DELAY)もま
た命令レジスタ1900へロードされる。それゆえ、たとえ
命令I5がレジスタ1900にロードされても、TARGET ADDRE
SSに包含される次基本ブロックに対し分岐アドレスは時
間T18の完了までは有効とはならない。話が変わって次
命令インターフェース1950は、基本ブロックで命令のス
トリームの処理を継続するためキャッシュ制御1518へ命
令を発行する。遅延の終結により、インターフェース19
50はイネーブルされ、そして次基本ブロックのアドレス
を命令キャッシュ制御1518へ供給することにより、分岐
は実行される。 遅延フィールドは、単一サイクルコンテクストフリー
PEでこの分岐により支配される基本ブロックのすべての
命令の実行を保証するのに使用されることに注意された
い。PEがパイプライン構成されるとき、小さな複雑さに
遭遇する。この場合、ちょうど実行されている基本ブロ
ックからの命令と実行されるべき基本ブロックからの命
令との間に、データ依存性がある。TOLLソフトウエア
は、次基本ブロックがこの基本ブロックからの分岐によ
ってだけ目標とされるとき、これらの依存性を分岐でき
る。もし、次基本ブロックが一よりも多い分岐により目
標とされるならば、TOLLソフトウエアは、種々の分岐可
能性を分解できずそしてパイプラインに発火させるの
で、なんらデータ依存性は破られない。パイプラインが
発火するのを許容するための一つの機構、NO−OP(no o
peration,ノーオペレーション)命令を命令ストリーム
へ挿入することである。代替え方法では、エクストラフ
ィールドを分岐命令に用意し、この命令で、エクストラ
フィールドのデータにより決定される時間の間プロセッ
サエレメントへの新命令の供給を禁止する。 c.プロセッサエレメント(PE) マトリックスマルチプライ例に関する論述では、単一
サイクル(シングルサイクル)プロセッサエレメントを
仮定した。別言すると、命令がプロセッサエレメントへ
発行され、そしてプロセッサエレメントは、次命令は進
行するまえに、命令を完全に実行する。しかし、より大
きな性能が、パイプライン構成されるプロセッサエレメ
ントを採用することにより得られる。それにより、TOLL
ソフトウエアにより遂行されるタスクはわずかに変化す
る。特に、プロセッサエレメントの割当ては、先の例で
示されるものよりも複雑であり、パイプラインプロセッ
サを特長付けるハザード(偶発的事象)は、TOLLソフト
ウエアにより取り扱われねばならない。パイプライン構
成されるいずれのプロセッサにも存在するハザードは、
より高度に複雑な一組のデータ依存性としてそれらハザ
ード自体が現れる。これは、従来技術に精通したものに
より、TOLLソフトウエアに符号化できる。例えば、スタ
ンフォード大学のティーケーアールグロス(T.K.R.Gros
s)による学位論文“Code Optimization of Pipeline C
onstraints"(1983)を参照されたい。 プロセッサの割当ては、パイプラインの実施に依存し
そしてここで再び従来技術に精通したものにより遂行で
きる。キーパラメータが、パイプライン間でいかにデー
タか交換されるかを決定する。たとえば、各パイプライ
ンが、そのステージ間でフィードバックパスを包含する
と仮定する。さらに、パイプラインは、レジスタセット
660を通じてのみ結果を交換できると仮定する。複数の
命令が、命令ストリームに包含される数組の依存命令を
決めそして次に各特定の集まりを特定のパイプラインに
割当てることにより、パイプラインへ割り当てられる。
これは、(レジスタセットを経由して)パイプライン間
で起こらねばならない通信の量をできるだけ最小なもの
とし、それゆえ、プログラムの実行時間を速くする。論
理プロセッサ番号の使用は、命令が同様のパイプライン
で実行するのを保証する。 代替え的に、もしパイプライン間でデータを交換する
のに利用できるパスがあるならば、依存性の命令が、単
一のパイプラインへ割り当てられるかわりに、いくつか
のパイプラインプロセッサに分配可能である。再び、多
量パイプラインの使用および中間結果の共有を許容する
パイプライン間の相互接続ネットワークは、命令ストリ
ームに課されるより高度に複雑な一組のデータ依存性と
してそれ自身が現れる。パイプライン構成されるシステ
ムへの本発明の考えの拡張は、当技術に精通するものの
技術の範囲内にあることは明らかである。 重要なことには、追加のデータ(チェイニング)パス
は、本発明のプロセッサエレメントの基本のコンテクス
トフリー性を変化しない。すなわち、いずれの所与の時
間(たとえば、いずれの所与の命令サイクルの完了)で
も、所与のプログラム(すなわち、コンテクスト)に関
連の全プロセス状態は、プロセッサエレメントの完全に
外側で補足される。データチェイニングは、特定の命令
クロックサイクル中、プロセッサエレメント内に発生さ
れるデータのあるものの一時的反復を生ずるだけであ
る。 第21図を参照すると、特定のプロセッサエレメント64
0が、4状態式パイプラインプロセッサエレメントを有
する。例示の実施例に応じてすべてのプロセッサエレメ
ント640は同様である。例えば、マイクロプロセッサま
たは別のパイプラインアーキテクチャーなど従来のいず
れのタイプのプロセッサエレメントも本発明の教示のも
とで、使用できないことが深く理解されるべきである。
なぜなら、この種のプロセッサは、それらのプロセッサ
が処理しているプログラムの実質的な状態情報を保持す
るからである。しかし、この種のプロセッサは、本発明
に必要なタイプのプロセッサをエミュレートまたはシュ
ミレートするよう、ソフトウエアでプログラムできる。
プロセッサエレメントの設計は、TOLLソフトウエアによ
り生成される命令セットアーキテクチャーにより決定さ
れ、それゆえ、概念的観点から、本発明の実施に最も依
存性の部分である。図21に図示される例示の実施例で
は、各プロセッサエレメントパイプラインが、システム
の別のプロセッサエレメントから自律的に動作する。各
プロセッサエレメントは同種のものであり、そして単独
で、すべての計算およびデータメモリアクセシング命令
を実行できる。計算の実行を行なう場合では、転送がレ
ジスタからレジスタでありそしてメモリインターフェー
ス命令に対しては、転送はメモリからレジスタへまたは
レジスタからメモリである。 第21図の参照すると、例示の実施例のプロセッサエレ
メント640に対する4状態パイプラインは、4つの別々
の、命令レジスタ2100、2110、2120および2130を含む。
各プロセッサエレメントはまた、4つの段階(段階1、
2140と段階2、2150と段階3、2160と段階4、2160)を
も含む。第1命令レジスタ2100はネットワークを通じて
PIQプロセッサ割当て回路1570へ接続されそしてその情
報をバス2102を通じて受容する。命令レジスタ2100は次
に、命令デコードおよびレジスタ0取出しおよびレジス
タ1取出しのハードウエア機能を含む段階1の動作を制
御する。第1段階2140は、線路2104を通じて命令レジス
タへそして線路2142を通じて別の命令レジスタ2110へ相
互接続される。第1段階2140はまた、バス2144を通じて
第2段階2150へも接続される。段階1のレジスタ0の取
出しおよびレジスタ1の取出しは、レジスタファイル66
0へのアクセスのため、それぞれ、線路2146および線路2
148を通じて、ネットワーク670へ接続される。 第2命令レジスタ2110はさらに、線路2112を通じて第
3命令レジスタ2120へそして線路2114を通じて第2段階
2150へ相互接続される。第2段階2150はまた、バス2152
を通じて第3段階2160へも接続されそして、線路2156を
通じネットワーク670を通じてコンテクストファイル660
のの条件コード記憶装置へ接続される条件コード(CC)
ハードウエアおよびレジスタファイル660へのアクセス
のため、線路2154を通じてネットワーク670へ相互接続
されるメモリ書き込み(MEM WRITE)レジスタ取出しハ
ードウエアを有する。 第3命令レジスタ2120は、線路2122を通じて第4命令
レジスタ2130へ相互接続されさらに線路2124を通じて第
3段階2160へも接続される。第3段階2160は、バス2162
の通じて第4段階2170へ接続されさらに線路2164を介し
てネットワーク650を通じてデータキャッシュ相互接続
ネットワーク1590へ相互接続される。 最後に、第4命令レジスタ2130は、線路2132を通じて
第4段階へ相互接続されそして第4段階は線路2172の通
じて接続されるその記憶ハードウエア(STORE)出力お
よびレジスタファイル660へのアクセスのため、線路217
4を通じてネットワーク670へ接続されるその有効アドレ
ス更新(EFF.ADD.)ハードウエア回路を有する。さら
に、第4段階は、線路2176を介しネットワーク670を通
じてコンテクストファイル660の条件コード記憶装置へ
接続されるその条件コード記憶(CC STORE)ハードウエ
アを有する。 第21図に図示される4段階パイプラインの動作は、第
1表の例および各命令に対するプロセッサエレメントの
動作を説明する第19表に包含される情報について論述す
る。 第19表 命令I0,(I1) 段階1−Fetch Reg to form Mem−adx 段階2−Form Mem−adx 段階3−Perform Memory Read 段階4−Store R0,(R1) 命令I2 段階1−Fetch Reg R0 and R1 段階2−No−Op 段階3−Perform multiply 段階4−Store R2 and CC 命令I3 段階1−Fetch Reg R2 and R3 段階2−No−Op 段階3−Perform addition 段階4−Store R3 and CC 命令I4 段階1−Fetch Reg R4 段階2−No−Op 段階3−Perform decrement 段階4−Store R4 and CC 命令I0およびI1に対し、第21図のプロセッサエレメン
ト640による動作は、段階4のもの以外同様である。第
1段階は、レジスタファイルにアドレスを包含するレジ
スタからメモリアドレスを取り出すことである。それゆ
え、段階1は、回路系2140の線路2146を介しネットワー
ク670を通じてそのレジスタへ相互接続しそして段階1
のインターフェースからレジスタ0へそれをダウンロー
ドする。次に、アドレスは、バス2144を通じて段階2へ
供給されそしてメモリ書き込みハードウエアは、メモリ
アドレスを形成する。メモリアドレスは次に、2164を介
しネットワーク650を通じてデータキャッシュ相互接続
ネットワーク1590にメモリを読む第3段階へバス2152を
通じ供給される。読み動作の結果は、レジスタR0で記憶
のため、次に記憶されそして段階4へ供給される。段階
4は線路2172の介しネットワーク670を通じてデータを
レジスタファイルのレジスタR0へ供給する。同様の動作
が、結果がレジスタ1に記憶されること以外、命令I1に
対し起こる。それゆえ、パイプラインの4段階(取り出
し、メモリアドレス形成、メモリ読み取り、結果の記
憶)は、論述される仕方で、パイプを通じデータを流
し、そして命令I0が段階1を通過したとき、命令I1の第
1段階は開始する。この重複またはパイプリング(pipe
ling)は従来と同様である。 命令I2が、レジスタファイル660のレジスタR0およびR
1に記憶される情報を取り出し、そしてそれらを段階1
のレジスタREG0およびREG1へ供給する。内容は、バス21
44を介し段階2を通じてノーオペレーションとして供給
されそしてつぎにバス2152を通じて段階3へ供給され
る。二つのレジスタの内容と一緒にマルチプライが生
じ、結果は、バス2162を通じて段階4へ供給され、段階
4は、次に、線路2172を介しネットワーク670を通じて
レジスタファイル660のレジスタR2へ結果を記憶する。
さらに、条件コードデータは、コンテクストファイル66
0の条件コード記憶装置に線路2176を通じて記憶され
る。 命令I3が、同様の仕方で、段階4で結果をレジスタR3
に記憶しそしてその命令に対し条件コードデータを更新
するため、レジスタR2およびR3でのデータの追加を行な
う。最後に、命令I4が、レジスタR4の内容のデクリメン
トを遂行する。 それゆえ、第1表の例に応じて、PE0に対する命令
は、次の順序(I0,I2およびI3)でPIQ0から供給されよ
う。これらの命令は、次のように、命令発火時間(T16,
T17およびT18)に基づいて、PE0パイプライン段階を通
じて送られよう。 第20表 PE Inst T16 T17 T18 T19 T20 T21 PE0: I0 S1 S2 S3 S4 I2 S1 S2 S3 S4 I3 S1 S2 S3 S4 PE1 I1 S1 S2 S3 S4 PE2 I4 S1 S2 S3 S4 第20表に例示の計画は、しかし、データチェイニング
がパイプラインプロセッサ(自プロセッサ内データチェ
イニング)内ならびにパイプラインプロセッサ(内部プ
ロセッサデータチェイニング)間に導入されなければ可
能でない。データチェイニングに対する要求は、命令
が、例えば命令発火時間T16により例示される単一時間
サイクル内でもはや完全に実行しないから、生ずる。こ
うして、パイプラインプロセッサに対し、TOLLソフトウ
エアは、命令I0およびI1の段階4(T19)で生ずる記憶
の結果が命令I2の段階3(T19)で掛け(マルチプラ
イ)を遂行するのに必要とされないこと、および、これ
らのオペランドの取り出し動作が命令I2の段階1(T1
7)で通常起こることを認めなければならない。それゆ
え、パイプラインの通常の動作では、プロセッサPE0お
よびPE1に対し、レジスタR0およびR1からのオペランド
データは、発火時間T18の終わりまで利用できないがそ
れは、時間T17で命令I2の段階1により必要とされる。 第20表に例示の計画に応じて動作するために、プロセ
ッサの内部およびプロセッサ間の両方にある追加のデー
タ(チェイニング)パスがプロセッサに利用可能とされ
なければならない。当業者にはよく知られているこれら
のパスはデータチェイニングパスである。それらのパス
は、第21図で、破線2180および2182として表示されてい
る。したがって、それゆえ、命令間のデータ依存性の分
解およびプログラム実行前のTOLLソフトウエアにより遂
行されるプロセッサ資源のすべてのスケジューリング
は、データを、たとえば同じプロセッサの一段階または
異なるプロセッサの段階などの出力から直接利用可能に
するのが必要とされるとき、データチェイニングの利用
性を考慮する。このデータチェイニング能力は当業者に
はよく知られており、そして、パイプラインプロセッサ
の各段階を、事実上種々の資源要求と、命令が或るパイ
プラインを通じて開始されるとき好ましくはそのプロセ
ッシング段階のすべてを通じその同じパイプラインで継
続するというある種の依存性とをもつ分離プロセッサで
あると認めることにより、TOLLソフトウエア分析で容易
に実施できる。これを考慮に入れると、プロセッシング
での高速化が、基本ブロックに対し三つのマシンサイク
ル時間がただ六つだけのパイプラインサイクルの時間で
完了される第20表で観察できる。パイプラインに対しサ
イクルタイムは、本発明の例示の実施例の非パイプライ
ンプロセッサに対し約1/4サイクルタイムであることを
心に留めておくべきである。 第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プロセッサアーキテクチャで利用でき
るアドレッシングのオートインクリメントおよびオート
デクリメントモードにより示される。例えば、DEX VAX
Arcitecture Handbookを参照されたい。 必要とされる明らかなハードウエアサポートに加え
て、有効アドレッシングはTOLLソフトウエアによりサポ
ートされ、そしてメモリアクセス動作命令へ機能性を付
加することによりTOLLソフトウエアに影響を与える。別
言すると、有効アドレスメモリアクセスが、第1の有効
アドレス計算と第2の実メモリアクセスとの二つの動作
の連結として解釈可能である。この機作性は、加算、減
算または乗算命令がそうであろうとほとんど同様の仕方
で、当業者によりTOLLソフトウエアに容易に符号化でき
る。 叙述の有効アドレッシング構成は、メモリアクセス動
作システムの単に可能な一つの実施例にすぎないものと
解釈されるべきである。当業者に知られている、メモリ
アドレスを生成するための別のたくさんの方法およびモ
ードがある。別言すると、上に叙述の有効アドレッシン
グ構成は、設計の完全性のためのものでありそしてシス
テムの設計でのキー要素と考えられるべきものではな
い。 第22図を参照すると、第21図のパイプラインプロセッ
サエレメントでの種々のデータまたはデータフィールド
の構成が、時間および空間の両方でマルチユーザ型のシ
ステムであるシステムに対し例示されている。結果とし
て、複数のパイプラインを横切って種々のユーザから複
数の命令が、おのおのそれ自身のプロセッサ状態をもっ
て、実行可能である。プロセッサ状態は通常はプロセッ
サエレメントと関連されないので、命令は、この状態を
特定する識別子を従えて伝達しなければならない。この
プロセッサ状態は、ユーザに割当てられるLRDとレジス
タファイルと条件コードファイルとによりサポートされ
る。 各メモリアクセスまたは条件コードアクセスまたはレ
ジスタアクセスがアクセスの目標を唯一識別できるよ
う、十分な量の情報が各命令に関連されねばならない。
レジスタおよび条件コードの場合では、この追加の情報
は、手順レベル(PL)の絶対値とコンテクスト識別子
(CI)とを構成し、そしてSCSM付加ユニット1650により
命令に付加される。これは、それぞれ第22aおよび22bお
よび22c図により例示される。コンテクスト識別子部分
は、どのレジスタまたは条件コードプレイン(第6図)
がアクセスされているかを決定するのに使用される。手
順レベルは、どのレジスタの手順レベル(第13図)がア
クセスされるべきかを決定するのに使用される。 メモリアクセスもまた、適当なデータキャッシュがア
クセスできるよう、現在の使用者をサポートするLRDが
識別されることを必要とする。これは、コンテクスト識
別子を通じて達成される。データキャッシュアクセスは
さらに、キャッシュにあるデータが実際所望されるデー
タであることを確認するため、プロセス識別子(PID)
が現在使用者に対し利用可能であることを必要とする。
こうして、データキャッシュに発行されるアドレスが、
第22d図の形をとる。寄せ集めフィールドは、例えば、
読取りまたは書込み、使用者またはシステムなどアクセ
スを記述する追加の情報から構成される。 最後に、単一時間間隔の間、パイプラインを横切って
実行する数人の使用者がいるのが可能であるという事実
により、命令の実行を制御しそして通常はパイプライン
に記憶されるであろう情報が、かわりに各命令に関連さ
れねばならない。この情報は、第22a図に図示されるよ
うに、命令ワードのISWフィールドで反映される。この
フィールドの情報は、エラーマスク、浮動少数点フォー
マットディスクリプター、丸めモードディスクリプター
などのような制御フィールドから構成される。各命令が
このフィールドに付加されるが、明らかに、すべての情
報を必要としなくてもよい。この情報は、プロセッサエ
レメントのALU段階2160により使用される。 ISWフィールドに関連するこの命令情報ならびに手順
レベル、コンテクスト識別およびプロセス識別子は、命
令が命令キャッシュから発行される場合に、SCSM付加装
置(1650)により動的に付加される。 本発明のシステムは上に開示のとおり説明されるけれ
ども、以下に続く請求の範囲の技術思想の範囲内で種々
の変更および修正が可能であることは明らかであろう。
─────────────────────────────────────────────────────
フロントページの続き
(72)発明者 ブルックス,クリストフアー バンクロ
フト
アメリカ合衆国 80302 コロラド,ボ
ウルダ−,ナインテイーンス ストリー
ト 4000
(72)発明者 グルック,フレデリック ジョージ
アメリカ合衆国 80301 コロラド,ボ
ウルダ−,モンテレイ プレイス 3732
(56)参考文献 特開 昭60−209843(JP,A)
特開 昭59−140563(JP,A)
特開 昭59−125448(JP,A)
特開 昭59−167770(JP,A)
特開 昭59−52356(JP,A)
Claims (1)
- (57)【特許請求の範囲】 1.複数の単一エントリ−単一エグジット基本ブロック
を有し、かつ少なくとも二つの命令が同時に処理され得
る命令を含むストリームを、複数のプロセッサ要素を有
する並列プロセッサシステムにおいて並列処理するため
の方法において、 前記命令ストリーム内の、少なくとも二つの命令が他の
いずれの命令の処理とも干渉することなくあるいはその
処理を遅延されることなく同時に処理され得る命令を決
定する段階と、 前記同時に処理され得る命令の決定に応答して各命令ス
トリームにインテリジェンスを付加する段階であって、
該付加されたインテリジェンスが各命令に対する少なく
とも命令発火時間および論理的プロセッサ番号を表わす
インテリジェンス付加段階と、 前記複数のプロセッサ要素において前記付加されたイン
テリジェンスを有する命令を処理する段階であって、前
記複数のプロセッサ要素のそれぞれが最も早い命令発火
時間を有する命令で始まる命令発火時間に従って命令を
受け入れる処理段階 とを含むことを特徴とする並列処理方法。 2.請求の範囲第1項記載の方法において、複数の共有
の記憶ロケーションを具備しており、 前記インテリジェンスをスタティックに付加する段階
は、 (a)各基本ブロック内の各命令の資源要求を確認して
各基本ブロックにおける少なくとも二つの命令が同時に
処理され得る命令を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、 (c)条件コード・ストレージ(CC)を資源の依存命令
群に割り当て、依存命令が同じまたは異なるプロセッサ
要素で実行できるようにする段階、 (d)前記複数の基本ブロックのそれぞれにおける前記
命令のそれぞれごとに最も早い可能な命令発火時間(IF
T)を決定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命
令に前記命令発火時間を付加する段階、 (f)前記複数の基本ブロックのそれぞれにおける各命
令に論理的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命
令に前記論理的プロセッサ番号を付加する段階、 (h)前記プログラムに対しすべての基本ブロックが処
理されるまで段階(a)乃至(g)を繰返す段階 からなるインテリジェンス付加段階からなり、 前記処理段階は、 (i)論理的プロセッサ番号に基づいて送り出された命
令をシステムに別々に記憶する段階、 (j)前記別々に記憶された命令を論理的プロセッサ番
号に割り当てられたプロセッサ要素(PE)に選択的に接
続し、前記別々に記憶された命令を、最も早い命令発火
時間を有する1つの命令が所定のプロセッサ要素に接続
されるように、あらかじめ定められた順序で送り出す段
階、 (k)前記各接続されたプロセッサ要素の別々に記憶さ
れた命令のそれぞれからの前記1つの命令を処理する段
階、 (l)前記プログラムに対する前記複数の基本ブロック
のそれぞれのすべての命令が処理されるまで、段階
(i)乃至(k)を繰返す段階 からなる処理段階 とを含むことを特徴とする請求の範囲第1項記載の並列
処理方法。 3.前記インテリジェンスをスタティックに付加する段
階は、 (a)各基本ブロック内の各命令の資源要求を確認して
各基本ブロックにおける少なくとも二つの命令が同時に
処理され得る命令を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、 (c)条件コード・ストレージ(CC)を資源の依存命令
群に割り当て、依存命令が同じまたは異なるプロセッサ
要素で実行できるようにする段階、 (d)前記複数の基本ブロックのそれぞれにおける前記
命令のそれぞれごとに最も早い可能な命令発火時間(IF
T)を決定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命
令に前記命令発火時間(IFT)を付加する段階、 (f)前記複数の基本ブロックのそれぞれにおける各命
令に論理的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命
令に前記論理的プロセッサ番号を付加する段階、 (h)前記プログラムに対しすべての基本ブロックが処
理されるまで段階(a)乃至(g)を繰返す段階 からなるインテリジェンス付加段階と、 前記処理段階は、前記スタティックに付加されたインテ
リジェンスを有する命令を複数のプロセッサ要素を使用
して処理する ことを特徴とする請求の範囲第1項記載の並列処理方
法。 4.請求の範囲第1項記載の並列処理方法において、複
数の共有の記憶ロケーションを有し、前記インテリジェ
ンスをスタティックに付加する段階であって、 (a)前記複数の基本ブロックのそれそれにおける前記
各命令に対する最も早い可能な命令発火時間(IFT)を
決定する段階、 (b)前記複数の基本ブロックのそれぞれにおける各命
令に前記命令発火時間を付加する段階、 (c)前記複数の基本ブロックのそれぞれにおける各命
令に論理的プロセッサ番号(LPN)を割り当てる段階、 (d)前記複数の基本ブロックのそれぞれにおける各命
令に前記論理的プロセッサ番号を付加する段階 からなるインテリジェンス付加段階と、 前記スタティックに付加されたインテリジェンスを有す
る命令を処理する段階であって、 (e)論理的プロセッサ番号に基づいて送り出された命
令をシステムに別々に記憶する段階、 (f)前記別々に記憶された命令を論理的プロセッサ番
号に割り当てられたプロセッサ要素(PE)に選択的に接
続し、前記別々に記憶された命令のそれぞれからの最も
早い命令発火時間を有する1つの命令が所定のプロセッ
サ要素に接続されるように、前記命令をあらかじめ定め
られた順序で接続する段階、 (g)前記各接続されたプロセッサ要素において前記1
つの接続された命令を処理する段階、 (h)前記命令によって識別された共有の記憶ロケーシ
ョンからの前記接続された命令を処理するための入力デ
ータを得る段階、 (i)前記命令によって識別された共有の記憶ロケーシ
ョンに前記接続された命令を処理した結果を記憶する段
階、 (j)前記プログラムに対する前記複数の基本ブロック
のそれぞれにおいてすべての命令が処理されるまで、段
階(e)乃至(i)を繰返す段階 とからなる前記インテリジェンス付加段階を具備し、 前記処理段階は、前記スタティックに付加されたインテ
リジェンスを有する命令を複数のプロセッサ要素を使用
して処理する ことを特徴とする請求の範囲第1項記載の並列処理方
法。 5.前記プログラムにおける前記各基本ブロック(BB)
内の二つの同時に処理されうる命令を決定する段階を具
備し、 該付加されたインテリジェンスが少なくとも命令発火時
間(IFT)および論理的プロセッサ番号(LPN)を含む ことを含むことを特徴とする請求の範囲第1項記載の並
列処理方法。 6.前記インテリジェンス付加段階がスタティックの共
有のコンテクスト・ストレージ・マッピング(S−SCS
M)情報を付加する段階を含み、前記処理段階が前記各
命令のスタティックの共有のコンテクスト・ストレージ
・マッピング情報によって識別される共有資源を要求す
る各命令を処理する段階を含み、各プログラムルーチン
がそのルーチンの手順レベルで資源にアクセスすること
に加えて他の手順レベルで資源にアクセスすることがで
きるようにした請求の範囲第5項記載の並列処理方法。 7.請求の範囲第1項記載の並列処理方法において、前
記プロセッサ要素が複数の共有資源ロケーションに位置
付けされた入力データにアクセスし、 各基本ブロック内の各命令の資源要求を確認する段階
と、 命令間の論理資源の依存性を識別する段階と、 条件コード・ストレージ(CC)を資源の依存命令群に割
り当て、依存命令が同じまたは異なるプロセッサ要素で
実行できるようにする段階と、 前記複数の基本ブロックのそれぞれにおける前記命令の
それぞれごとに最も早い可能な命令発火時間(IFT)を
決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれ
における各命令に前記命令発火時間(IFT)を付加する
段階と、 前記複数の基本ブロックのそれぞれにおける各命令に論
理的プロセッサ番号(LPN)を割り当てる段階と、 前記割り当てに応答して前記複数の基本ブロックのそれ
ぞれにおける各命令に前記割り当てられた論理的プロセ
ッサ番号(LPN)を付加する段階と、 論理的プロセッサ番号に基づいて前記付加された命令発
火時間および前記付加された論理的プロセッサ番号とと
もに、命令を別々に記憶し、該別々に記憶された命令の
各群が同じ論理的プロセッサ番号のみを有する段階と、 前記別々に記憶された命令を論理的プロセッサ番号に基
づいて前記プロセッサ要素に選択的に接続する段階と、 前記各プロセッサ要素が最も早い第1の命令発火時間を
有する前記接続された群の命令を受け入れる段階であっ
て、該プロセッサ要素が (a)前記命令によって識別された前記複数の共有資源
ロケーションの共有の記憶ロケーションからの前記受け
入れられた命令を処理するための入力データを得る段
階、 (b)前記受け入れられた命令によって識別された前記
複数の共有資源ロケーションの共有の記憶ロケーション
に前記処理段階に基づいた結果を記憶する段階、 (c)すべての命令が処理されるまで、次に受け入れら
れる命令に対して上述の段階(a)および(b)を繰返
す段階 を実行することができる受け入れ段階 とを含むことを特徴とする請求の範囲第1項記載の並列
処理方法。 8.各命令に共有のコンテクスト・ストレージ・マッピ
ング情報を付加する段階を含み、前記処理段階が少なく
とも一組の共有資源を要求する各命令を処理する段階を
含み、該少なくとも一組が前記共有のコンテクスト・ス
トレージ・マッピング情報によって識別され、各プログ
ラムルーチンがそのルーチンの組の手順レベル資源にア
クセスすることに加えて少なくとも1つの他の組の資源
にアクセスすることができるようにした請求の範囲第7
項記載の並列処理方法。 9.請求の範囲第1項記載の並列処理方法において、前
記プロセッサ要素が複数の共有資源ロケーションに位置
付けされた入力データにアクセスし、 各基本ブロック内の各命令の資源要求を確認する段階
と、 命令間の論理資源の依存性を識別する段階と、 条件コード・ストレージ(CC)を資源の依存命令群に割
り当て、依存命令が同じまたは異なるプロセッサ要素で
実行できるようにする段階と、 前記複数の基本ブロックのそれぞれにおける前記命令の
それぞれごとに最も早い可能な命令発火時間(IFT)を
決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれ
における各命令に前記命令発火時間(IFT)を付加する
段階と、 前記複数の基本ブロックのそれぞれにおける各命令に論
理的プロセッサ番号(LPN)を割り当てる段階と、 前記割り当てに応答して前記複数の基本ブロックのそれ
ぞれにおける各命令に前記割り当てられた論理的プロセ
ッサ番号(LPN)を付加する段階と、 前記命令発火時間および論理的プロセッサ番号を付加す
る前記段階に応答して基本ブロックの実行セット(ES)
を形成する段階と、 (i)論理的プロセッサ番号に基づいて所定の形成され
た実行セット内に含まれる命令を別々に記憶し、該別々
に記憶された命令の各群が同じ論理的プロセッサ番号の
みを有する段階と、 (ii)前記別々に記憶された命令を論理的プロセッサ番
号に基づいて前記プロセッサ要素に選択的に接続する段
階と、 (iii)前記各プロセッサ要素が最も早い第1の命令発
火時間を有する前記接続された群の命令を受け入れる段
階であって、該プロセッサ要素が (a)前記命令によって識別された前記複数の共有資源
ロケーションの共有の記憶ロケーションからの前記受け
入れられた命令を処理するための入力データを得る段
階、 (b)前記命令によって識別された前記複数の共有資源
ロケーションの共有の記憶ロケーションに前記処理段階
に基づいた結果を記憶する段階、 (c)すべての命令が処理されるまで、次に受け入れら
れる命令に対して上述の段階(a)および(b)を繰返
す段階 実行することができる受け入れ段階と、 (iv)処理されるすべての実行セットに対して上述の段
階(i)乃至(iii)を繰返す段階 とを含むことを特徴とする請求の範囲第1項記載の並列
処理方法。 10.各プログラムが複数の単一エントリ−単一エグジ
ット基本ブロックを有し、該基本ブロックのそれぞれが
命令のストリームを有する異なる使用者の複数のプログ
ラムを複数のプロセッサ要素を有するシステムにおいて
並列処理するための方法において、 前記各プログラムにおける少なくとも二つの命令が同時
に処理され得る命令を決定する段階と、 前記段階における決定に応答して前記基本ブロックにイ
ンテリジェンスを付加する段階であって、該付加された
インテリジェンスが少なくとも命令発火時間および論理
的プロセッサ番号を表わすインテリジェンス付加段階
と、 前記複数のプロセッサ要素において前記付加されたイン
テリジェンスを有する命令を処理する段階であって、前
記複数のプロセッサ要素のそれぞれが最も早い命令発火
時間を有する命令で始まる命令発火時間に従って命令を
受け入れる処理段階 とを含むことを特徴とする並列処理方法。 11.複数の使用者のプログラムに含まれる低レベル命
令の複数のストリーム内の、少なくとも二つの命令が他
のいずれの命令の処理とも干渉することなくあるいはそ
の処理を遅延されることなく同時に処理され得る命令を
複数のプロセッサ要素において並列処理するための請求
の範囲第10項記載の方法において、 前記インテリジェンスをスタティックに付加する段階
は、 (a)各基本ブロック内の各命令の資源要求を確認して
各基本ブロックにおける二つの同時に処理されうる命令
を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、 (c)条件コード・ストレージ(CC)を資源の依存命令
群に割り当て、依存命令が同じまたは異なるプロセッサ
要素で実行できるようにする段階、 (d)前記複数の基本ブロックのそれぞれにおける前記
命令のそれぞれごとに最も早い可能な命令発火時間を決
定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命
令に前記命令発火時間を付加する段階、 (f)前記複数の基本ブロックのそれぞれにおける各命
令に論理的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命
令に前記論理的プロセッサ番号を付加する段階、 (h)前記プログラムのそれぞれに対しすべての基本ブ
ロックが処理されるまで段階(a)乃至(g)を繰返す
段階 からなり、 前記プログラムに対しスタティックに付加されたインテ
リジェンスを有する命令を処理する段階であって、 (i)前記命令を論理資源ドライバに送出し、使用者の
前記各プログラムを異なる論理資源ドライバに割り当て
る段階、 (j)命令発火時間に基づいたあらかじめ定められた順
序で前記論理資源ドライバからの命令を選択する段階、 (k)選択された命令を論理的プロセッサ番号に基づい
て論理資源ドライバのキューに記憶する段階、 (l)各命令に対してダイナミックな共有のコンテクス
ト・ストレージ・マッピング(D−SCSM)情報を発生す
る段階、 (m)各論理資源ドライバのキューをプロセッサ要素
(PE)に選択的に接続し、前記キューを、各キューから
の最も早い命令発火時間を有する1つの命令が最初に所
定のプロセッサ要素に送り出されるように、あらかじめ
定められた順序で接続する段階、 (n)前記各接続されたプロセッサ要素の各キューから
の前記1つの命令を処理する段階、 (o)前記ダイナミックな共有のコンテクスト・ストレ
ージ・マッピング情報によって識別されたコンテクスト
ファイルにおける前記命令により識別された共有の記憶
ロケーションからの前記送り出された命令を処理するた
めの入力データを得る段階、 (p)前記命令に含まれる前記ダイナミックな情報によ
って識別された共有の記憶ロケーションの前記送り出さ
れた命令を処理した結果を記憶する段階、 (q)すべての前記プログラムに対する前記複数の基本
ブロックのそれぞれにおけるすべての命令が処理される
まで、段階(i)乃至(q)を繰返す段階からなる ことを特徴とする請求の範囲第10項記載の並列処理方
法。 12.請求の範囲第10項記載の並列処理方法において、
複数の使用者のプログラムに含まれる低レベル命令の複
数のストリーム内の、少なくとも二つの命令が他のいず
れの命令の処理とも干渉することなくあるいはその処理
を遅延されることなく同時に処理され得る命令を複数の
プロセッサ要素において並列処理するための方法であっ
て、前記インテリジェンスをスタティックに付加する段
階は、 (a)各基本ブロック内の各命令の資源要求を確認して
各基本ブロックにおける少なくとも二つの命令が同時に
処理され得る命令を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、 (c)条件コード・ストレージ(CC)を資源の依存命令
群に割り当て、依存命令が同じまたは異なるプロセッサ
要素で実行できるようにする段階、 (d)前記複数の基本ブロックのそれぞれにおける前記
命令のそれぞれごとに最も早い可能な命令発火時間を決
定する段階、 (e)前記複数の基本ブロックのそれぞれにおける各命
令に前記命令発火時間を付加する段階、 (f)前記複数の基本ブロックのそれぞれにおける各命
令に論理的プロセッサ番号(LPN)を割り当てる段階、 (g)前記複数の基本ブロックのそれぞれにおける各命
令に前記論理的プロセッサ番号を付加する段階、 (h)前記プログラムのそれぞれに対しすべての基本ブ
ロックが処理されるまで段階(a)乃至(g)を繰返す
段階 からなるインテリジェンス付加段階と、 前記プログラムを複数のプロセッサ要素(PE)で実行す
るためのスタティックに付加されたインテリジェンスを
有する命令を処理する段階 とを含むことを特徴とする請求の範囲第10項記載の並列
処理方法。 13.前記スタティックにインテリジェンスを付加する
段階が最も早い発火時間を有する命令が最初にリストさ
れる前記命令発火時間に基づいて前記基本ブロックのそ
れぞれにおける前記命令を整理し直す段階を含む請求の
範囲第11項又は第12項に記載の並列処理方法。 14.前記スタティックにインテリジェンスを付加する
段階がスタティックな共有のコンテクスト・ストレージ
・マッピング(S−SCSM)情報を各命令に付加して前記
命令のプログラムレベルを識別する段階を含む請求の範
囲第11項または12項に記載の並列処理方法。 15.複数の使用者のプログラムに含まれる低レベル命
令の複数のストリーム内の、少なくとも二つの命令が他
のいずれの命令の処理とも干渉することなくあるいはそ
の処理を遅延されることなく同時に処理され得る命令を
複数のプロセッサ要素において並列処理するための請求
の範囲第10項記載の並列処理方法において、共有資源ロ
ケーションを有し、前記ストリームはそれぞれ前記複数
の単一エントリ−単一エグジット(SESE)基本ブロック
(BB)を有しており、 前記プログラムの各基本ブロックにおける命令にインテ
リジェンスをスタティックに付加する段階と、 前記処理段階は、前記プログラムを実行するためのスタ
ティックに付加されたインテリジェンスを有する命令を
処理する段階であって、 (a)前記命令を前記システムに送出して前記各使用者
を前記システムの異なるコンテクストファイルに割り当
てる段階、 (b)共有の記憶ロケーションを含む前記コンテクスト
ファイルを識別する各命令に対してダイナミックに共有
のコンテクスト・ストレージ・マッピング(D−SCSM)
情報を発生する段階、 (c)論理的プロセッサ番号(LPN)に基づいて送り出
された命令をシステムに別々に記憶する段階、 (d)前記別々に記憶された命令をこれら命令に対する
論理的プロセッサ番号に割り当てられたプロセッサ要素
に選択的に接続し、前記別々に記憶された命令を、これ
ら別々に記憶された命令のそれぞれからの最も早い命令
発火時間を有する1つの命令が所定のプロセッサ要素に
送り出されるように、あらかじめ定められた順序で送り
出す段階、 (e)前記各接続されたプロセッサ要素の各接続された
別々に記憶された命令からの前記1つの命令を処理する
段階、 (f)前記共有のコンテクスト・ストレージ・マッピン
グ情報によって少なくとも一部分が識別された共有の記
憶ロケーションからの前記接続された命令を処理するた
めの入力データを得る段階、 (g)前記共有のコンテクスト・ストレージ・マッピン
グ情報によって一部分が識別された共有の記憶ロケーシ
ョンの前記接続された命令を処理した結果を記憶する段
階、 (h)すべでの前記プログラムに対する前記複数の基本
ブロックのそれぞれのすべての命令が処理されるまで、
段階(a)乃至(g)を繰返す段階からなる処理段階 とを含むことを特徴とする請求の範囲第10項記載の並列
処理方法。 16.前記各プログラムにおける前記各基本ブロック
(BB)の前記命令ストリーム内の、少なくとも二つの命
令が他のいずれの命令の処理とも干渉することなくある
いはその処理を遅延されることなく同時に処理され得る
命令を決定する段階と、 前記の少なくとも二つの命令が同時に処理され得る命令
の決定に応答して前記各基本ブロックの各命令にインテ
リジェンスを付加するインテリジェンス付加段階とを具
備し、 前記複数のプロセッサ要素のそれぞれが最も早い命令発
火時間を有する命令で始まる順序で命令を受け入れ、前
記各プロセッサが前記プログラムからの命令をあらかじ
め定められた順序で処理することができる ことを含むことを特徴とする請求の範囲第10項記載の並
列処理方法。 17.前記処理段階が各命令にコンテクスト情報をダイ
ナミックに付加する段階を含み、該ダイナミックに付加
された情報が前記各プログラムに割り当てられた前記シ
ステムのコンテクストファイルを識別し、前記各プロセ
ッサ要素が前記付加されたコンテクスト情報によって識
別されたコンテクストファイルのみを使用して各命令を
処理することができる請求の範囲第16項記載の並列処理
方法。 18.前記インテリジェンス付加段階がプログラムレベ
ル情報をプログラムレベル転送に含まれる各命令に付加
する段階を含み、前記処理段階が前記命令のプログラム
レベル情報によって識別された一組の共有のレジスタと
通信して各命令を処理する段階を含み、プログラムルー
チンがそのルーチンの手順レベル組のレジスタにアクセ
スすることに加えて他の組の共有のレジスタにアクセス
することができるようにした請求の範囲第16項記載の並
列処理方法。 19.前記各プログラムの各基本ブロック内の少なくと
も二つの命令が同時に処理され得る命令を決定する段階
が 各基本ブロック内の各命令の資源要求を確認する段階
と、 命令間の論理資源の依存性を識別する段階と、 条件コード・ストレージ(CC)を資源の依存命令群に割
り当て、依存命令が同じまたは異なるプロセッサ要素で
実行できるようにする段階 とを含む請求の範囲第16項記載の並列処理方法。 20.前記各プログラムの各命令にインテリジェンスを
付加する前記段階が 前記複数の基本ブロックのそれぞれにおける前記命令の
それぞれごとに最も早い可能な命令発火時間を決定する
段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれ
における各命令に前記命令発火時間(IFT)を付加する
段階と、 前記命令発火時間に基づいて前記基本ブロックのそれぞ
れの前記命令を整理し直す段階 とを含む請求の範囲第16項記載の並列処理方法。 21.前記各プログラムの各命令にインテリジェンスを
付加する前記段階が 前記複数の基本ブロックのそれぞれにおける前記命令の
それぞれごとに最も早い可能な命令発火時間を決定する
段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれ
における各命令に前記命令発火時間(IFT)を付加する
段階 とを含む請求の範囲第16項記載の並列処理方法。 22.前記複数の基本ブロックのそれぞれにおける各命
令に論理的プロセッサ番号を割り当てる段階、 前記割り当てに応答して前記複数の基本ブロックのそれ
ぞれにおける各命令に前記論理的プロセッサ番号を付加
する段階 をさらに含む請求の範囲第20項又は第21項記載の並列処
理方法。 23.前記処理段階が 前記付加されたインテリジェンスを有する命令を複数の
組に別々に記憶し、該別々の各組の記憶が割り当てられ
た論理的プロセッサ番号に基づいている段階、 前記別々に記憶された命令を前記論理的プロセッサ番号
に基づいて前記プロセッサ要素に選択的に接続する段
階、 前記各プロセッサ要素が最も早い第1の命令発火時間を
有する命令を受け入れる段階 をさらに含む請求の範囲第16項記載の並列処理方法。 24.各プロセッサ要素が複数の共有資源ロケーション
に位置付けされた入力データにアクセスする請求の範囲
第10項記載の並列処理方法において、 前記各プログラムごとに各基本ブロック内の各命令の資
源要求を確認する段階と、 前記複数の基本ブロックのそれぞれにおける前記命令の
それぞれごとに最も早い可能な命令発火時間(IFT)を
決定する段階と、 前記決定に応答して前記複数の基本ブロックのそれぞれ
における各命令に前記命令発火時間(IFT)を付加する
段階と、 前記複数の基本ブロックのそれぞれにおける各命令に論
理的プロセッサ番号(LPN)を割り当てる段階と、 前記割り当てに応答して前記複数の基本ブロックのそれ
ぞれにおける各命令に前記割り当てられた論理的プロセ
ッサ番号(LPN)を付加する段階と、 前記付加された命令発火時間および前記付加された論理
的プロセッサ番号とともに、命令を複数の組に別々に記
憶する段階であって、各組が複数の別個の記憶領域を有
し、少なくとも一組が前記プログラムの少なくとも1つ
を含み、各組の前記別個の記憶領域が論理的プロセッサ
番号に基づいている段階と、 前記組の1つに対する前記別々に記憶された命令を論理
的プロセッサ番号に基づいて前記プロセッサ要素に選択
的に接続する段階と、 前記各プロセッサ要素が最も早い第1の命令発火時間
(IFT)を有する各命令を受け入れる段階であって、該
プロセッサ要素が (a)前記命令によって識別された前記複数の共有資源
ロケーションの共有の記憶ロケーションからの前記受け
入れられた命令を処理するための入力データを得る段
階、 (b)前記受け入れられた命令によって識別された前記
複数の共有資源ロケーションの共有の記憶ロケーション
に前記受け入れた命令を処理することに基づいた結果を
記憶する段階、 (c)すべての命令が処理されるまで、あらかじめ定め
られた順序で前記組の1つからの次に受け入れられる命
令に対して上述の段階(a)および(b)を繰返す段階
を実行することができる受け入れ段階 とを含むことを特徴とする請求の範囲第10項記載の並列
処理方法。 25.前記命令発火時間および論理的プロセッサ番号を
付加する前記段階に応答して基本ブロックの実行セット
(ES)を形成する段階を含み、所定の実行セット内の任
意所定の基本ブロックから他の実行セットの基本ブロッ
クへのブランチがスタティックに最少にされる請求の範
囲第16項又は第24項に記載の並列処理方法。 26.前記インテリジェンス付加段階がスタティックの
共有のコンテクスト・ストレージ・マッピング(S−SC
SM)情報を付加する段階を含み、前記処理段階が前記命
令のスタティックの共有のコンテクスト・ストレージ・
マッピング情報に対応する少なくとも1つの共有の記憶
ロケーションを要求する各命令を処理する段階を含み、
各プログラムルーチンがその組の記憶ロケーションにア
クセスできることに加えて他の手順レベルで少なくとも
一組の共有の記憶ロケーションにアクセスすることがで
きるようにした請求の範囲第24項記載の並列処理方法。 27.低レベル命令からなる前記ストリームを並列処理
するための請求の範囲第10項記載の並列処理方法におい
て、 前記命令内に存在する前記の少なくとも二つの命令が同
時に処理され得る命令に応答して前記インテリジェンス
をスタティックに前記命令ストリームに付加する段階で
あって、各プログラムに対する該インテリジェンス付加
段階が、 (a)各基本ブロック内の各命令の資源要求を確認して
各基本ブロックにおける二つの同時に処理されうる命令
を決定する段階、 (b)命令間の論理資源の依存性を識別する段階、 (c)前記複数の基本ブロックのそれぞれにおける前記
命令のそれぞれごとに最も早い可能な命令発火時間を決
定する段階、 (d)一連の命令発火時間を表わす情報を命令ストリー
ムに付加する段階、 (e)前記プログラムのそれぞれに対しすべての基本ブ
ロックが処理されるまで段階(a)乃至(d)を繰返す
段階からなるインテリジェンス付加段階と、 複数のプロセッサ要素で前記プログラムを実行するため
スタティックに付加されたインテリジェンスを有する命
令を処理する段階 とを含むことを特徴とする請求の範囲第10項記載の並列
処理方法。 28.低レベル命令の前記複数のストリームを並列処理
するための請求の範囲第10項記載の並列処理方法におい
て、 前記プログラムの各基本ブロックにおける命令に存在す
る少なくとも二つの命令が同時に処理され得る命令を表
わすインテリジェンスをスタティックに付加する段階
と、 前記プログラムに対しスタティックに付加されたインテ
リジェンスを有する命令を処理する前記処理段階は、 (a)前記命令を論理資源ドライバに送出し、使用者の
前記各プログラムを異なる論理資源ドライバに割り当て
る段階、 (b)命令発火時間に基づいたあらかじめ定められた順
序で前記論理資源ドライバからの命令を選択する段階、 (c)選択された命令を論理的プロセッサ番号に基づい
て論理資源ドライバのキューに記憶する段階、 (d)各命令に対してダイナミックな共有のコンテクス
ト・ストレージ・マッピング情報を発生する段階、 (e)各論理資源ドライバのキューをプロセッサ要素に
選択的に接続し、前記キューを、各キューからの最も早
い命令発火時間を有する1つの命令が最初に所定のプロ
セッサ要素に送り出されるように、あらかじめ定められ
た順序で接続する段階、 (f)前記各接続されたプロセッサ要素の各キューから
の前記1つの命令を処理する段階、 (g)前記ダイナミックな共有のコンテクスト・ストレ
ージ・マッピング情報によって識別されたコンテクスト
ファイルにおける前記命令により識別された共有の記憶
ロケーションからの前記送り出された命令を処理するた
めの入力データを得る段階、 (h)前記命令に含まれる前記ダイナミックな情報によ
って識別された共有の記憶ロケーションの前記送り出さ
れた命令を処理した結果を記憶する段階、 (i)すべての前記プログラムに対する前記複数の基本
ブロックのそれぞれにおけるすべての命令が処理される
まで、段階(a)乃至(h)を繰返す段階 からなる処理段階 とを含むことを特徴とする請求の範囲第10項記載の並列
処理方法。 29.複数のプログラムに含まれる低レベル命令の複数
のストリームであって、各ストリームが複数の単一エン
トリ−単一エグジット基本ブロックを有するストリーム
を処理するための並列プロセッサシステムにおいて、 前記命令ストリームにインテリジェンスをスタティック
に加えるための手段であって、該加えられたインテリジ
ェンスが前記命令に対するサブルーチン情報を含み、前
記各プログラム内に含まれる相対サブルーチンレジスタ
アクセスを特定するものであるインテリジェンス付加手
段と、 複数のコンテクストファイル(660)であって、各コン
テクストファイルが前記複数のプログラムの1つに割り
当てられ、かつ各コンテクストファイルが前記各サブル
ーチンプログラムレベルに対して一組のレジスタ資源を
持つ複数のレジスタ資源を有し、該各組の資源が異なる
サブルーチンレベルで識別される複数のコンテクストフ
ァイルと、 複数の論理資源ドライバであって、各論理資源ドライバ
が前記複数のコンテクストファイルの1つに割り当てら
れ、かつ各論理資源ドライバが前記インテリジェンス付
加手段からの前記割り当てられたプログラムのプログラ
ム命令ストリーム対応する前記基本ブロックを受け入れ
て、前記命令を記憶し、各基本ブロックの前記命令を前
記命令発火時間の順序で取出し、そして前記命令を、各
命令に対する論理的プロセッサ番号に従って送出するよ
うになっている複数の論理資源ドライバと、 複数の個々のプロセッサ要素と、 前記複数のプロセッサ要素を前記複数の論理資源ドライ
バに接続し、前記各論理資源ドライバからの前記命令
を、あらかじめ定められた順序で、個々に割り当てられ
たプロセッサ要素に転送し、前記各プロセッサ要素が前
記転送された命令を処理することができるようにするた
めの手段と、 前記プロセッサ要素のそれぞれを前記複数のコンテクス
トファイルの任意の1つと接続し、各プロセッサ要素が
前記プログラムの命令の処理中にプログラムのコンテク
ストファイルの複数のレジスタおよび条件コード記憶装
置の任意ものものにアクセスできるようにするための第
1の手段(670) とを具備することを特徴とする並列プロセッサシステ
ム。 30.1つのプログラムにおけるサブルーチンレベル間
データにアクセスするためのシステムにおいて、 前記プログラムを受け入れ、このプログラムに含まれる
命令アクセスの手順レベルを決定するための決定手段で
あって、各サブルーチンは異なる手順レベルと関連して
おり、前記プログラムのデータアクセスに含まれるすべ
ての命令に情報を付加することができ、該情報が少なく
ともデータアクセスの手順レベルを識別する決定手段
と、 あらかじめ定められた数の共有資源であって、該各共有
資源が互いに無関係であり、かつ1つの手順レベルにの
み関連している共有資源と、 前記プログラムの命令に作用して前記プログラムを処理
するための処理手段とを具備し、 該処理手段が前記情報によって識別された前記手順レベ
ルに対応する前記複数の共有資源内の命令の全部を完全
に処理することができ、かつ処理されているサブルーチ
ンの手順レベルとは異なる手順レベルに対応する前記共
有資源の少なくとも1つに結果を記憶するか、または前
記共有資源の少なくとも1つから入力データを得ること
の少なくとも一方が行なえる ことを特徴とするデータアクセスシステム。 31.複数の使用者によって利用される複数のプログラ
ムにおけるサブルーチン間のデータにアクセスするため
のシステムにおいて、 前記各プログラムを受け入れ、そこに含まれる命令のサ
ブルーチンレベルを決定するための決定手段であって、
前記プログラムのそれぞれ内のデータアクセスに含まれ
るすべての命令に第1の情報を付加することができ、該
第1の情報が少なくとも呼レベルおよび被呼レベルを識
別する決定手段(160)と、 前記決定手段からの前記第1の付加された情報を含む前
記各プログラムを受け入れ、少なくとも使用者コンテク
ストファイルを識別する前記プログラムの各命令に第2
の情報を付加するための付加手段(620)と、 各使用者ごとに1つの複数のコンテクストファイルであ
って、各コンテクストファイルがあらかじめ定められた
数の共有資源を有し、各共有資源が互いに独立である複
数のコンテクストファイル(660)と、 前記各プログラムの命令に作用して前記各プログラムか
らの前記命令をあらかじめ定められた順序で処理するた
めの処理手段(620、640) とを具備し、 前記処理手段が前記被呼手順レベルに対応するかつ前記
第2の付加情報によって識別されたコンテクストファイ
ルに位置付けされた複数の識別された前記共有資源を使
用して、前記命令のそれぞれを前記第1の付加情報に基
づいて完全に処理することができ、 前記処理手段が前記命令を処理し終えたときに異なる手
順レベルに対応する共有資源の少なくとも1つの資源に
前記第1の付加情報に基づいて結果を記憶することがで
きる ことを特徴とするデータアクセスシステム。 32.1つのプログラム内に含まれる単一エントリ−単
一エグジット(SESE)基本ブロック(BB)においてブラ
ンチを実行するためのシステムにおいて、 前記プログラムを受け入れてこのプログラムの前記各基
本ブロック内のブランチ命令を決定するための決定手段
であって、該ブランチ命令に命令発火時間を付加するこ
とができる決定手段(620)と、 前記各基本ブロックの命令に作用してこれら命令を処理
するための処理手段(620、640)と、 前記基本ブロックの前記ブランチ命令に作用して前記処
理手段が前記基本ブロックのブランチでない最後の実行
命令を処理しているときと同じ時間中、前記ブランチ命
令の実行を完了し、前記ブランチ命令の実行が前記シス
テムによる前記プログラムの全処理時間をスピードアッ
プするために前記基本ブロックの前記命令の実行と並行
して生ずるようにする手段(620、1548) とを具備することを特徴とするブランチ実行システム。 33.複数の使用者によって利用される複数のプログラ
ム内の単一エントリ−単一エグジット(SESE)基本ブロ
ック(BB)においてブランチを実行するためのシステム
において、 前記各プログラムを受け入れて各プログラムの前記各基
本ブロック内のブランチ命令を決定するための決定手段
であって、該ブランチ命令に命令発火時間を付加するこ
とができる決定手段(160)と、 前記各プログラムの前記各基本ブロックの命令に作用し
て前記プログラムを処理するための処理手段(620、64
0)と、 前記基本ブロックの前記ブランチ命令に作用して前記処
理手段が所定のプログラムに対する前記基本ブロックの
ブランチでない最後の実行命令を処理しているときと同
じ時間中、前記ブランチ命令の実行を完了し、前記ブラ
ンチ命令の実行が前記基本ブロックの前記命令の実行と
並行して生ずるようにし、前記システムによる前記全プ
ログラムの全処理スループットを増大させるようにする
手段(620、1548) とを具備することを特徴とするブランチ実行システム。
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 JPS63501605A (ja) | 1988-06-16 |
JP3084282B2 true 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 (183)
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 |
DE68928937T2 (de) * | 1988-12-27 | 1999-07-01 | Fujitsu Ltd., Kawasaki, Kanagawa | Steuerungssystem und -verfahren zum Instruction 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 |
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 |
US5193206A (en) * | 1989-12-27 | 1993-03-09 | Motorola, Inc. | Reduce instruction set microprocessor |
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 |
EP0481031A4 (en) * | 1990-05-04 | 1993-01-27 | International Business Machines Corporation | System for compounding instructions for handling instruction and data stream for processor with different attributes |
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 |
DE69123629T2 (de) * | 1990-05-04 | 1997-06-12 | International Business Machines Corp., Armonk, N.Y. | Maschinenarchitektur für skalaren Verbundbefehlssatz |
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 |
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 |
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 |
CA2037708C (en) * | 1990-05-04 | 1998-01-20 | Richard J. Eickemeyer | General purpose compound apparatus for instruction-level parallel processors |
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 |
US5197135A (en) * | 1990-06-26 | 1993-03-23 | International Business Machines Corporation | Memory management for scalable compound instruction set machines with in-memory compounding |
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 |
US5202975A (en) * | 1990-06-11 | 1993-04-13 | Supercomputer Systems Limited Partnership | Method for optimizing instruction scheduling for a processor having multiple functional resources |
US5107418A (en) * | 1990-06-11 | 1992-04-21 | Supercomputer Systems Limited Partnership | Method for representing scalar data dependences for an optimizing compiler |
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 |
US5963745A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | APAP I/O programmable router |
US5794059A (en) * | 1990-11-13 | 1998-08-11 | International Business Machines Corporation | N-dimensional modified hypercube |
US5809292A (en) * | 1990-11-13 | 1998-09-15 | International Business Machines Corporation | Floating point for simid array machine |
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 |
US5752067A (en) * | 1990-11-13 | 1998-05-12 | International Business Machines Corporation | Fully scalable parallel processing system having asynchronous SIMD processing |
US5617577A (en) * | 1990-11-13 | 1997-04-01 | International Business Machines Corporation | Advanced parallel array processor I/O connection |
US5963746A (en) * | 1990-11-13 | 1999-10-05 | International Business Machines Corporation | Fully distributed processing memory element |
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) |
US5966528A (en) * | 1990-11-13 | 1999-10-12 | International Business Machines Corporation | SIMD/MIMD array processor with vector processing |
US5828894A (en) * | 1990-11-13 | 1998-10-27 | International Business Machines Corporation | Array processor having grouping of SIMD pickets |
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 |
DE69131272T2 (de) * | 1990-11-13 | 1999-12-09 | International Business Machines Corp., Armonk | Paralleles Assoziativprozessor-System |
US5590345A (en) * | 1990-11-13 | 1996-12-31 | International Business Machines Corporation | Advanced parallel array processor(APAP) |
US5815723A (en) * | 1990-11-13 | 1998-09-29 | International Business Machines Corporation | Picket autonomy on a SIMD machine |
US5630162A (en) * | 1990-11-13 | 1997-05-13 | International Business Machines Corporation | Array processor dotted communication network based on H-DOTs |
US5588152A (en) * | 1990-11-13 | 1996-12-24 | International Business Machines Corporation | Advanced parallel processor including advanced support hardware |
US5765015A (en) * | 1990-11-13 | 1998-06-09 | International Business Machines Corporation | Slide network for an array processor |
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 |
DE69229517T2 (de) * | 1991-03-11 | 2000-05-04 | Sun Microsystems, Inc. | Verfahren und Gerät zur Optimierung von kostenbasierter heuristischer Befehlsablaufplanung |
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 |
EP1338957A3 (en) * | 1993-11-05 | 2003-10-29 | Intergraph Corporation | Software scheduled superscalar computer architecture |
US6360313B1 (en) | 1993-11-05 | 2002-03-19 | Intergraph Corporation | Instruction cache associative crossbar switch |
DE69424370T2 (de) * | 1993-11-05 | 2001-02-15 | Intergraph Corp., Huntsville | Befehlscachespeicher mit Kreuzschienenschalter |
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 |
US5644742A (en) * | 1995-02-14 | 1997-07-01 | Hal Computer Systems, Inc. | Processor structure and method for a time-out checkpoint |
WO1996028783A1 (en) * | 1995-03-10 | 1996-09-19 | 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 |
US5960198A (en) * | 1997-03-19 | 1999-09-28 | International Business Machines Corporation | Software profiler with runtime control to enable and disable instrumented executable |
US6026234A (en) * | 1997-03-19 | 2000-02-15 | International Business Machines Corporation | Method and apparatus for profiling indirect procedure calls in a computer program |
US6314493B1 (en) | 1998-02-03 | 2001-11-06 | International Business Machines Corporation | Branch history cache |
JP3837244B2 (ja) * | 1998-10-23 | 2006-10-25 | 松下電器産業株式会社 | プログラムリンク装置及び方法 |
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 |
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 |
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 | 実時間プロセッサおよび命令実行方法 |
US7421572B1 (en) | 1999-09-01 | 2008-09-02 | Intel Corporation | Branch instruction for processor with branching dependent on a specified bit in a register |
US7546444B1 (en) | 1999-09-01 | 2009-06-09 | Intel Corporation | Register set used in multithreaded parallel processor architecture |
US6418526B1 (en) | 1999-11-15 | 2002-07-09 | Ncr Corporation | Method and apparatus for synchronizing nodes in massively parallel systems |
US6519697B1 (en) | 1999-11-15 | 2003-02-11 | Ncr Corporation | Method and apparatus for coordinating the configuration of massively parallel systems |
US6745240B1 (en) | 1999-11-15 | 2004-06-01 | Ncr Corporation | Method and apparatus for configuring massively parallel systems |
US6412002B1 (en) | 1999-11-15 | 2002-06-25 | Ncr Corporation | Method and apparatus for selecting nodes in 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 |
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 |
US8423824B2 (en) * | 2005-08-29 | 2013-04-16 | The Invention Science Fund I, Llc | Power sparing synchronous apparatus |
US7774558B2 (en) * | 2005-08-29 | 2010-08-10 | The Invention Science Fund I, Inc | Multiprocessor resource optimization |
US8214191B2 (en) * | 2005-08-29 | 2012-07-03 | The Invention Science Fund I, Llc | Cross-architecture execution optimization |
US7877584B2 (en) * | 2005-08-29 | 2011-01-25 | The Invention Science Fund I, Llc | Predictive processor resource management |
US20070050605A1 (en) * | 2005-08-29 | 2007-03-01 | Bran Ferren | Freeze-dried ghost pages |
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 |
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 |
US7779213B2 (en) | 2005-08-29 | 2010-08-17 | The Invention Science Fund I, Inc | Optimization of instruction group execution through hardware resource management policies |
US8375247B2 (en) * | 2005-08-29 | 2013-02-12 | The Invention Science Fund I, Llc | Handling processor computational errors |
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 |
US8209524B2 (en) * | 2005-08-29 | 2012-06-26 | The Invention Science Fund I, Llc | Cross-architecture optimization |
US7647487B2 (en) | 2005-08-29 | 2010-01-12 | Searete, Llc | Instruction-associated processor resource optimization |
US8516300B2 (en) * | 2005-08-29 | 2013-08-20 | The Invention Science Fund I, Llc | Multi-votage synchronous systems |
US7512842B2 (en) * | 2005-08-29 | 2009-03-31 | Searete Llc | Multi-voltage synchronous systems |
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 |
US8589867B2 (en) | 2010-06-18 | 2013-11-19 | Microsoft Corporation | Compiler-generated invocation stubs for data parallel programming model |
US20110314256A1 (en) * | 2010-06-18 | 2011-12-22 | Microsoft Corporation | 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 |
US11829187B2 (en) | 2022-01-30 | 2023-11-28 | Simplex Micro, Inc. | Microprocessor with 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 |
US12106114B2 (en) | 2022-04-29 | 2024-10-01 | Simplex Micro, Inc. | Microprocessor with shared read and write buses and instruction issuance to multiple register sets in accordance with a time counter |
US20230350679A1 (en) * | 2022-04-29 | 2023-11-02 | Simplex Micro, Inc. | Microprocessor with odd and even register sets |
US12112172B2 (en) | 2022-06-01 | 2024-10-08 | Simplex Micro, Inc. | Vector coprocessor with time counter for statically dispatching instructions |
Family Cites Families (19)
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 |
US4466061A (en) * | 1982-06-08 | 1984-08-14 | Burroughs Corporation | Concurrent processing elements for using dependency free code |
US4468736A (en) * | 1982-06-08 | 1984-08-28 | Burroughs Corporation | Mechanism for creating dependency free code for multiple processing elements |
US4574348A (en) * | 1983-06-01 | 1986-03-04 | The Boeing Company | High speed digital signal processor architecture |
-
1985
- 1985-10-31 US US06/794,221 patent/US4847755A/en not_active Expired - Lifetime
-
1986
- 1986-10-30 EP EP86907085A patent/EP0247146B1/en not_active Expired - Lifetime
- 1986-10-30 EP EP97121196A patent/EP0840213A3/en not_active Withdrawn
- 1986-10-30 DE DE3650696T patent/DE3650696T2/de not_active Expired - Lifetime
- 1986-10-30 WO PCT/US1986/002333 patent/WO1987002799A1/en active IP Right Grant
- 1986-10-30 JP JP61506185A patent/JP3084282B2/ja not_active Expired - Lifetime
-
1997
- 1997-11-06 JP JP9320380A patent/JPH10187443A/ja active Pending
- 1997-11-06 JP JP32038197A patent/JP3461704B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0840213A2 (en) | 1998-05-06 |
DE3650696T2 (de) | 1999-02-04 |
EP0840213A3 (en) | 2000-01-26 |
EP0247146B1 (en) | 1998-08-26 |
US4847755A (en) | 1989-07-11 |
DE3650696D1 (de) | 1998-10-01 |
JP3461704B2 (ja) | 2003-10-27 |
WO1987002799A1 (en) | 1987-05-07 |
JPS63501605A (ja) | 1988-06-16 |
JPH10187640A (ja) | 1998-07-21 |
JPH10187443A (ja) | 1998-07-21 |
EP0247146A4 (en) | 1992-04-15 |
EP0247146A1 (en) | 1987-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3084282B2 (ja) | 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法 | |
US5765037A (en) | System for executing instructions with delayed firing times | |
RU2427895C2 (ru) | Оптимизированная для потоков многопроцессорная архитектура | |
KR101966712B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트 | |
US4468736A (en) | Mechanism for creating dependency free code for multiple processing elements | |
US4466061A (en) | Concurrent processing elements for using dependency free code | |
US5941983A (en) | Out-of-order execution using encoded dependencies between instructions in queues to determine stall values that control issurance of instructions from the queues | |
KR101638225B1 (ko) | 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행 | |
CN101160565B (zh) | 无操作系统干预情况下调度os隔离定序器上的线程的机制 | |
US4873626A (en) | Parallel processing system with processor array having memory system included in system memory | |
US5226131A (en) | Sequencing and fan-out mechanism for causing a set of at least two sequential instructions to be performed in a dataflow processing computer | |
JP2002149424A (ja) | 共有コプロセッサ・リソースに対する複数の論理インタフェース | |
JP3687982B2 (ja) | メモリ回路および機能ユニットのグループを備えた処理装置 | |
US5418970A (en) | Parallel processing system with processor array with processing elements addressing associated memories using host supplied address value and base register content | |
US20080250227A1 (en) | General Purpose Multiprocessor Programming Apparatus And Method | |
JPH06266683A (ja) | 並列処理装置 | |
JPH08272609A (ja) | Vliwプログラムのオブジェクト・コード互換性提供方法 | |
JPH05282265A (ja) | 自己スケジューリング式並列コンピュータ・システムおよびその方法 | |
US10585716B2 (en) | Parallel computing | |
US5438680A (en) | Method and apparatus for enhancing concurrency in a parallel digital computer | |
US5530889A (en) | Hierarchical structure processor having at least one sub-sequencer for executing basic instructions of a macro instruction | |
US20040059894A1 (en) | Process for running programs on processors and corresponding processor system | |
Gupta et al. | High speed synchronization of processors using fuzzy barriers | |
US4456958A (en) | System and method of renaming data items for dependency free code | |
WO2021013727A1 (en) | Processor |
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 |