JPH10187640A - 条件コードを使用する命令処理システムおよびコンピュータ - Google Patents

条件コードを使用する命令処理システムおよびコンピュータ

Info

Publication number
JPH10187640A
JPH10187640A JP9320381A JP32038197A JPH10187640A JP H10187640 A JPH10187640 A JP H10187640A JP 9320381 A JP9320381 A JP 9320381A JP 32038197 A JP32038197 A JP 32038197A JP H10187640 A JPH10187640 A JP H10187640A
Authority
JP
Japan
Prior art keywords
instruction
condition
condition code
register
instructions
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP9320381A
Other languages
English (en)
Other versions
JP3461704B2 (ja
Inventor
Gordon E Morrison
エドワード モリソン,ゴードン
Christopher B Brooks
バンクロフト ブルックス,クリストファー
Frederick G Gluck
ジョージ グルック,フレデリック
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
MCC Development Ltd
Original Assignee
MCC Development Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=25162057&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JPH10187640(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by MCC Development Ltd filed Critical MCC Development Ltd
Publication of JPH10187640A publication Critical patent/JPH10187640A/ja
Application granted granted Critical
Publication of JP3461704B2 publication Critical patent/JP3461704B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/445Exploiting fine grain parallelism, i.e. parallelism at instruction level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • G06F9/4484Executing subprograms
    • G06F9/4486Formation of subprogram jump address

Abstract

(57)【要約】 【課題】 条件コードを使用して命令を処理する命令処
理システムおよびコンピュータを提供する。 【解決手段】 本発明のシステムは、少なくとも二つの
汎用レジスタを含む汎用レジスタファイルと、各々、先
に実行された命令の実行または結果を要約する条件コー
ド値を少数ビットとして表わすためのものである複数の
アドレス可能な条件コードレジスタを有する、前記汎用
レジスタファイルと別個の条件コードレジスタファイル
と、前記条件コードレジスタの一つに記憶のための条件
コード値を各々発生する条件設定命令を含む命令を実行
するように構成されたプロセッサ要素と、前記条件コー
ドレジスタからの条件コードの分析に基づいて実行のた
めのターゲット命令を各々決定する条件付き分岐命令を
実行するように構成された分岐実行ユニットと、少なく
とも一つが条件設定命令または前記条件付き分岐命令で
ある条件選択命令に応答して動作するように構成された
条件コードアクセスユニットとを含む。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列プロセッサコ
ンピュータシステムに関し、特定すると、命令ストリー
ム内の自然の同時的発生を検出するためのソフトウェア
を有しかつ検出された自然的同時発生を処理するための
複数のプロセッサ要素を設ける並列プロセッサコンピュ
ータシステムに関する。ここで自然のあるいは自然的同
時発生とは、命令が同時に実行されるときに生ずる処理
動作をいう。たとえば、“a=b+c”という簡単な例
を考えると、本発明のシステムは“b”および“c”同
時にロードでき、その後、加算を行って“b”および
“c”の和の発生が生じる。それから和を“a”に格納
する段階が続く。この2つのロード動作が命令から生ず
る自然の同時的発生といわれるものである。
【0002】
【従来の技術、発明が解決しようとする課題】ほとんど
すべての従来のコンピュータシステムは、「Von N
eamann」構造より成る。事実、最初の4世代のコ
ンピュタは、データを逐次処理するために単一の大形の
プロセッサを使用するVon Neumann型マシン
であった。近年、Von Neumann型でない第5
世代コンピュータの創生にかなりの努力が向けられて来
ている。いわゆる第5世代のコンピュータの1つの特徴
は、多数のプロセッサ要素を使用することにより並列計
算を遂行できる能力に関係する。超大規模集積(VLS
I)の技術の進歩とともに、多数の個々のプロセッサ要
素の使用の経済的価格はその価格効率が高くなる。
【0003】実際の第5世代のマシンが構成されている
かいないかは議論のあるところであるが、種々の特徴が
定義され、分類されて来た。第5世代マシンは、単に第
4世代マシンの典型である単一命令、マルチプルデータ
でなく、マルチプル命令、マルチプルデータ(MIM
D)ストリームを使用できなければならない。本発明は
第5世代非Von Neumann型より成る。本発明
は、シングルコンテクスまたはマルチプルコンテクスト
においてMIMDストリームを使用できる(SC−MI
MDまたはMC−MIMD)。これらの用語は以下で定
義される通りである。本発明はまた、シングルコンテク
ストSIMD(SC−SIMD)マシンおよびマルチプ
ルコンテクストSIMD(MC−SIMD)ならびにシ
ングルコンテクスト、シングル命令、シングルデータ
(SC−SISD)マシンおよびマルチコンテクスト、
シングル命令、シングルデータ(MC−SISD)マシ
ンの全コンピュータの分類において応用を有するもので
ある。
【0004】第5世代コンピュータシステムの設計は完
全に流動状態にあるが、特定のカテゴリのシステムが画
定されて来ている。斯界の研究者の中には、コンピュー
タの形式を、システムの「制御」または「同期」が遂行
される態様に基づいて分けているものがいる。制御によ
る分類には、制御駆動、データ駆動および低減(命令)
駆動が含まれる。制御駆動システムは、従属プロセッサ
による処理を制御するために、プログラムカウンタまた
はマスタプロセッサのような集中化制御装置を利用す
る。制御駆動マシンの例は、Columbia大学のN
on−Von−1マシンである。データ駆動システムに
おいては、システムの制御は、処理のために必要とされ
るデータの実際の到着から行なわれる。データ駆動マシ
ンの例は、Ian Wastsonにより英国で開発さ
れたManchester大学データフローマシンであ
る。低減駆動システムは、処理されたアクティビティ要
求が生ずるとき処理を制御する。低減プロセッサの例
は、North Carolina大学で開発されつつ
あるMAGO低減マシンである。Non−Von−1マ
シン、ManchesterマシンおよびMAGO低減
マシンの特徴は、Davisの 「Conputer A
rchifecture」、IEEE Spectru
、1983年11月発行、に論述されている。比較す
ると、データ駆動システムおよび要求駆動システムは非
集中化手法であり、制御駆動システムは集中化手法を表
わす。本発明は、「時間駆動」と称することができる第
4の分類に入れるのがより適正である。本発明の制御シ
ステムは、データ駆動システムおよび命令駆動システム
と同様に非集中化されている。しかしながら、本発明で
は、制御駆動システムと同様に、1つのアクティビティ
が実行の用意が整っているとき処理が行なわれる。
【0005】並列処理の概念を含む殆んどのコンピュー
タシステムは、多数の異なる形式のコンピュータアーキ
テクチャから派生して来た。この場合、コンピュータア
ーキテクチャの独特の性質のため、それ自信の処理言
語、または既存の言語が使用に適合するように相当変更
されることを要求される。この種のコンピュータアーキ
テクチャの高度に平行化された構造を利用するため、プ
ログラムは、必要なソフトウェアを書くためにコンピュ
ータアーキテクチャの親密な知識を有することが必要と
される。この結果、これらの機械のプログラムの作成
は、使用者の相当量の努力と費用と時間を必要とする。
【0006】この活動と同時に、特定のアーキテクチャ
と無関係に、新しいソフトウェアおよび言語の創生につ
いての研究が進行してきている。これは、より直接的態
様で計算プロセスの固有の平行化を解決するであろう。
しかしながら、スーパーコンピュータの設計におけるた
いていの努力は、新しいハードウェアの開発に集中され
ており、新しいソフトウェアに向けられた努力はずっと
少ない。
【0007】Davisは、第5世代マシンの設計の最
良の手法は、ソフトウェアにおける同時的プログラムタ
スクをコンピュータアーキテクチャの物理的ハードウェ
ア資源にマッピングすることに努力を集中すべきである
と推測した。Davisは、この手法を「タスク割当
て」の1つと名づけ、第5世代アーキテクチャ成功の究
極的なキーであると強調する。彼は、割当ての方式を2
つの一般的形式に分類する。「スタティック割当て」
は、実行前に一度遂行され、「ダイナミック割当て」
は、プログラムが実行すなわちランされるたびにハード
ウェアにより遂行される。本発明は、スタティック割当
て方式を利用し、編集後および実行前に所与のプログラ
ムに対してタスクの割当てを行なう。第5世代マシンの
設計における「タスク割当て」手法の確認は、Vtah
大学で構成された「Data−driven Mach
ine−II」の設計でDavisにより行なわれた。
「Data−driven Machine−II」に
おいて、プログラムは、実際のマシングラフまたはアー
キテクチャを疑似するプログラムグラフに編集された。
【0008】タスク割当てはまた、Gajski等の
「Essential Issuesin Multi
−processor Systems」なる論文、C
omputer、1985年6月発行、において「スケ
ジューリング」と呼ばれている。Gajski等は、ス
ケジューリングのレベルについて記載し、高レベルスケ
ジューリング、中間レベルスケジューリングおよび低レ
ベルスケジューリングを含むとした。本発明は、低レベ
ルスケジューリングの1つであるが、「ファースト−イ
ン−ファースト−アウト」、「ラウンド−ロビン」、
「ショーティスト・タイプ・イン・ジョブ−ファース
ト」または「ショーティスト・リメインニング−タイ
ム」の従来のスケジューリングの方策を利用しない。G
ajski等はまた、オーバーヘッドコストがコンパイ
ル時間に払われるという点でスタティックスケジューリ
ングの利用を認めている。しかしながら、Gajski
等は、スタティックスケジューリングに関して、各タス
クのラン時間特性を推測する上で不効率があり得るとい
う不利益を確認した(本発明においてはこれが存在しな
い)。それゆえ、Occam言語やBulldogコン
パイラにおいて見出される低レベルスタティックスケジ
ューリングに対する従来のアプローチは、本発明のソフ
トウェア部分には存在しない。実際に、本発明の低レベ
ルスタティックスケジューリングはランタイム時におけ
るマシンによるダイナミックスケジューリングにおいて
一般に見られるのと同じ形成でのプロセッサの利用、あ
るいはそれより十分の利用を可能にする。さらに、本発
明の低レベルスタティックスケジューリングは、(例え
ば)OCCAM言語において必要とされるプログラマの
介入なしに自動的に遂行される。
【0009】Davisは、さらに、システムの実際の
物理的トポロジーがシステムの全性能に相当の影響を及
ぼすという点において同時処理において通信が重要な特
徴であることを認めている。例えば、たいていのデータ
フローマシンに見られる基本的問題は、プロセッサ間に
おいてデータを動かすのに要する多量の通信オーバーヘ
ッドコストである。データがバスを介して移動される場
合には、データがバスにアクセスするのに競合しなけれ
ばならないから、相当のオーバヘッドと、場合によって
はシステムの劣化をもたらすおそれがある。例えば、D
avisの論文において言及されるArvindデータ
フローマシンは、データを1位置に残存させるためエー
ストラクチャストリームを利用する。しかして、このデ
ータは、その後全プロセッサによりアクセス可能となる
ものである。本発明は、その一側面として、ハードウェ
アおよびソフトウェアを用い、ハードウェア資源を全体
的に結合することに基づき、マルチ処理を遂行するシス
テムに本質的に存在する通信の問題を相当に簡単化する
方法を教示する。
【0010】非Von Neumann型マルチプロセ
ッサシステムの他の特徴は、処理されつつある並列化の
粗さのレベルである。Gajski等はこれを「パーテ
ィショニング(区分化)」と称した。Gajski等に
よるシステムの設計における目標は、最低のオーバーヘ
ッドコストでできるだけ並列化を得ることである。本発
明は、利用可能な最低のレベルで、すなわち「命令当
り」レベルで同時処理を遂行する。本発明の他の側面に
よれば、この並列化レベルを実行時間オーバーヘッドコ
ストなしに得る方法が得られる。
【0011】マルチプロッセッサ並列マシンに関してな
されたすべての成果に拘らず、Davisは、この種の
ソフトウェアやハードウェアが、主として個々のタスク
に対して設計されたものであり、Von Neuman
nアーキテクチャに関して折紙つきであったすべての形
式のタスクやプログラムに対して可能的に適当でないこ
とを認めた。本発明は、一般的に多くの異なる形式のタ
スクに適当なコンピュータシステムおよび方法に開示す
るものである。何故ならば、本システムおよび方法は、
非常に繊細な粗度で命令ストリームに存在する自然的同
時的発生に作用するからである。
【0012】すべての汎用コンピュータシステムおよび
多くの専用コンピュータシステムは、マルチプルアクテ
ィビティまたはプログラムの処理を支持する動作システ
ムまたはモニタ/制御プログラムを有する。ある場合に
は、この処理は同時に起こる。他の場合には、処理はア
クティビティ間で交番し、1時に1つのアクティビティ
のみが処理用資源を制御することもある。この後者の場
合は、特定のコンピュータシステムに依存して、時分
割、時スライシングまたは同時的(完全同時ではない)
発生的実行と称されることが多い。また、これらのアク
ティビティまたはプログラムは、特定のシステムに依存
して、普通、タスク、プロセスまたはコンテクストと呼
ばれる。すべての場合とも、種々のプログラム間、およ
びプログラムと動作系間の制御のスイッチングを維持す
るための方法が存在する。このスイッチングは、普通、
タスクスイッチング、プロセススイッチングまたはコン
テクストスイッチングと呼ばれる。本明細書を通じて、
これらの用語は類似語と考えられ、コンテクストおよび
コンテクストスイッチングなる用語を一般に使用してあ
る。
【0013】
【課題を解決するための手段】それゆえ、本発明は、1
または複数の異なる使用者(ユーザ)により多くの異な
る従来のプログラムに基づいて同時に動作し得る非Vo
n Neumann型MIMDコンピュータシステムに
関する。各プログラムの自然的同時発生は、非常に細か
いレベルの粗度でスタティックに割り当てられ、そして
本質的に目的コードレベルで命令ストリームにインテリ
ジェンスが加えられる。加えられるインテリジェンス
は、例えば、本発明のための時間駆動非集中化制御を提
供するため、論理プロセッサ番号および命令発火時間を
含むことができる。自然的同時発生の検出および低レベ
ルスケジューリング、およびインテリジェンスの追加
は、所与のプログラムに対して1回のみ、プログラムの
従来の編集後実行前にユーザの介入なしに行なわれる。
このスタティックな割当ての結果は、複数のプロセッサ
要素を含むシステムで実行される。本発明の1実施例に
おいて、プロセッサは同一である。この例示の実施例に
おけるプロセッサ要素は、種々の命令の実行から得られ
る実行状態情報を含まない。すなわち、プロセッサ要素
はコンテクストフリーである。加えて、複数のコンテク
ストファイルが各ユーザーに1つずつ設けられ、複数の
プロセッサ要素は、命令の処理中、プロセッサ要素を共
有資源に全体的に結合することにより、任意のコンテク
ストファイルに含まれるどの記憶資源にでもアクセスで
きる。本発明の好ましい側面においては、条件コードま
たは結果レジスタは、個々のプロセッサ要素に存在しな
い。
【0014】本発明は、非Von Neumann型で
あり、シングルまたはマルチプルコンテクストSIS
D、SIMDおよびMIMD型態での使用に適合される
方法およびシステムを提供するものである。本発明の方
法およびシステムは、無数の従来形式のプログラムに使
用者の介入なしに作用し得る。本発明の一側面によれ
ば、非常に細かいレベルの粗度にて、プログラムの基本
ブロック(BB)における自然的同時発生が本質的に目
的コードレベルでスタティックに決定され、時間駆動非
集中化制御を提供するため、各基本ブロックにおける命
令ストリームにインテリジェンスが加えられる。自然的
同時発生の検出および低レベルスケジューリングおよび
インテリジェンスの付加は、従来の編集後、実行前に所
与のプログラムに対して一度のみ行なわれる。この時点
に、すなわちプログラムの実行前、後刻の全命令資源の
実行中の使用が割り当てられる。本発明の他の側面によ
れば、追加されたインテリジェンスを含む基本的ブロッ
クが、この特定の実施例においては以前の動作からの実
行状態情報を各々保持しない複数のプロセッサ要素を含
むシステム上で実行される。それゆえ、本発明のこの実
施例による全プロセッサ要素はコンテクストなしであ
る。命令は、命令発火時間に基づき実行のために選択さ
れる。本実施例における各プロセッサ要素は、従属の命
令が同一または異なるプロセッサ要素で実行され得るよ
うに、命令毎方式で命令を実行できる。本発明の所与の
プロセッサ要素は、1つのコンテクストからの命令、続
いて他のコンテクストからの命令を実行できる。そのと
き、所与の命令を処理するために必要なすべての動作お
よびコンテクスト情報は、システムの他のところに包含
されている。コンテクストフリープロセッサ要素の多く
の代替的実施が可能であることを留意されたい。非パイ
プライン式実施においては、各プロセッサ要素はモノリ
シックであり、単一の命令を次の命令を受け入れる前に
その完了まで実行する。
【0015】本発明の他の側面においては、コンテクス
トフリープロセッサは、パイプライン結合プロセッサ要
素であり、この場合、各命令は完了まで数マシン命令ク
ロックサイクルを必要とする。一般に、各クロックサイ
クル中、新しい命令がパイプラインに入り、完了した命
令がパイプラインを出、単一の命令クロックサイクルの
有効な命令実行時間を与える。しかしながら、若干の命
令をマイクロコード化して、多くのマシン命令サイクル
を必要とする複雑な機能を遂行することもできる。この
場合、新しい命令の入りは、複雑な命令が完了してしま
うまで一時停止され、その後、各クロックサイクル内の
通常の命令入りおよび出シーケンスが継続する。パイプ
ライン結合は、標準プロセッサ実施技術であり、後で詳
しく論述する。本発明のその他の目的、特徴および利点
は、以下の説明から明らかとなろう。
【0016】
【発明の実施の形態】本発明のシステムおよび方法は、
以下の説明および図面で詳しく説明する。 [一般的説明] [1.イントロダクション]以下の2節において、本発
明のソフトウェアおよびハードウェアの一般的説明を行
なう。本発明のシステムは、ハードウェアおよびソフト
ウェア要素間の独特な関係に基づいて設計される。多く
の従来技術によるアプローチは、主として、新規なアー
キテクチャ設計または独特のソフトウェアアルゴリズム
に基づいてマルチプロセッサによる並列処理に向けられ
ていたが、本発明は独特のハードウェア/ソフトウェア
関係に基づく。本発明のソフトウェアは、ハードウェア
を通る命令ストリームのルート設定および同期のためイ
ンテリジェント情報を提供する。これらのタスクの遂行
において、ソフトウェアは、使用者がアクセス可能な資
源、例えばジェネラルレジスタ、状態コード記憶レジス
タ、メモリおよびスタックポインタを空間的および一時
的に管理する。ルート設定および同期は、使用者の介入
なしに遂行され、オリジナルソースコードへの変更を必
要としない。加えて、命令ストリームを分析して、命令
ストリームのルート設定および同期を制御するために追
加のインテリジェンス情報を提供することは、所与ソフ
トウェア部分のプログラム準備プロセス(いわゆる「ス
タテック割当て」)中のみ遂行され、ある種の従来技術
の手法に見られるように実行中は遂行されない(実行中
の遂行は「ダイナミック割当て」)という。本発明によ
り行なわれる分析は、ハードウェア依存性であり、従来
のコンパイラからの目的コード出力で遂行され、それゆ
え有利なことにプログラム言語依存性でない。換言すれ
ば、本発明によれば、シフトウェアは、目的コードプロ
グラムをシステムのハードウェア上に変換し、システム
が従来のシステムを代表する効率よりも一層効率的に実
行するようにする。それゆえ、ソフトウェアは、すべて
のハードウェアの個性およびプログラム命令ストリーム
の実行に及ぼすそれらの影響を取り扱わねばならない。
例えば、ソフトウェアは、必要なとき、モノリシックな
単一サイクルまたはパイプライン結合されたプロセッサ
要素に順応しなけらばならない。
【0017】[2.一般的なソフトウェアの説明]図1
を参照すると、一般的にTOLLと称される本発明のソ
フトウェアは、コンピュータ処理システム160に配置
されている。処理システム160は標準的コンパイラ出
力100で動作するが、この出力は、普通、「P−Co
de」のような代表的目的コードまたは中間目的コード
である。従来形式のコンパイラの出力は、以下において
命令ストリームとして言及される目的コード命令の順次
ストリームである。従来形式言語プロセッサは、普通、
逐次命令ストリームを生成する際下記の機能を遂行す
る。 1:入力テキストの辞書的なスキャン 2:記号表構造を含む凝縮された入力テキストの構文ス
キャン 3:並列化検出およびベクトル化を含むマシンと独立の
最適化の遂行。 4:命令の機能性、必要とされる資源およびハードウェ
アの構造的特性を考慮に入れる中間(PSEUDO)コ
ード生成。 逐次命令ストリームの創成において、従来形式のコンパ
イラは、一連の基本ブロック(BB9を創成するが、こ
れは単一エントリ、単一エグジット(SESE)の複数
群の連続命令である。例えば、Alfred V.Ah
oおよびJeffery D.Ullman の「Pr
inciples of Compiler Desi
gn」、Addison Wesley、1979年発
行pg.6,409,412−413およびDavid
Griesの「Compiler Construc
tion for Digital Computer
s」、Wiler、1971年発行、参照。従来のコン
パイラは、そのタスクの遂行において基本ブロック情報
を利用するが、如何なる基本ブロック指示なしにも逐次
命令の出力ストリームを供給する。本発明の例示の具体
例におけるTOLLソフトウェアは、従来のコンパイラ
内で創成される形成された基本ブロック(BB)上で動
作するように設計される。従来のSESE基本ブロック
の各々においては、正確に1つのブランチがあり(ブロ
ックの終りに)、制御の従属性はない。ブロック内の唯
一の関係する依存性は、命令により必要とされる資源間
の依存性である。
【0018】基本ブロックフォーマットのコンパイラ1
00の出力は、図2に例示されている。図1を参照する
と、コンピュータ160において処理されつつある本発
明のTOLLソフトウェア110は、コンパイラ出力1
00に3つの基本的決定機能を遂行する。これらの機能
は、命令の資源を分析すること、各基本ブロック130
の各命令に対してインテリジェンスを延長すること、お
よび1または複数の基本ブロック140より成る実行セ
ットを造ることである。プロセッサ100から得られる
これら3つの基本的機能120、130および140の
出力は、本発明のTOLLソフトウェア出力150であ
る。
【0019】上述のように、本発明のTOLLソフトウ
ェアは、一度のみ使用者の介入なしにコンパイラ出力1
00に作用する。それゆえ、任意の所与のプログラムに
対して、TOLLソフトウェアは、コンパイラ出力10
0に一度だけ作用することを必要とする。TOLLソフ
トウェア100の機能120、130、140は、各基
本ブロック内の命令ストリームを自然の同時的発生につ
いて分析し、命令ストリームの本発明の実際のハードウ
ェアシステム上へのマッピングを遂行し、マッピングプ
ロセスから生ずるかも知れないハードウェアにより誘導
される個性を軽減し、得られた命令ストリームを本発明
のハードウェアとともに使用されるべき実際のマシン言
語にコード化し、TOLLソフトウェア110は、命令
ストリームを分析し、その結果としてプロセッサ要素お
よび資源を割り当てることによりこれらの機能を遂行す
る。特定の1実施例において、プロセッサはコンテクス
トフリーである。TOLLソフトウェア100は、例え
ば出力命令ストリームの各命令に適当な発火時間を割り
当てることにより、全システムの「同期」を行なう。
【0020】命令は、3つの基本的形式の依存性しかな
いが、種々の方法で相互に依存性とし得る。第1に、命
令ストリームの実際の構造に起因して手順的な依存性が
ある。すなわち、命令は、互いに、ブランチ、ジャンプ
などに起因して逐次以外の順序で続く。第2に、動作の
依存性は、システムに依存する有限数のハードウェア要
素に起因する。これらのハードウェア要素としては、汎
用レジスタ、状態コードメモリ、スタックポインタ、プ
ロセッサ要素およびメモリなどがある。それゆえ、2つ
の命令が並列に実行されるべきときは、両命令が同じハ
ードウェア要素を読んでいないかぎり(もちろん要素は
同時に読まれることができることを条件とする)、これ
らの命令は同じハードウェア要素を要求してはいけな
い。最後に、命令ストリームの命令間にデータ依存性が
存在する。この形式の依存性については後で詳しく論述
するが、プロセッサ要素がパイプライン結合プロセッサ
を含む場合特に重要である。一方、基本的ブック内に
は、データ依存性および操作上の依存性のみが存在す
る。
【0021】TOLLソフトウェア110は、プログラ
ムの適正な実行を維持しなければならない。それゆえ、
TOLLソフトウェアは、並列に実行される命令を表わ
すコード出力150が原直列コードの結果と同じ結果を
生成することを保証しなければならない。これをなすた
め、コード150は、相互に依存性の命令に対する直列
コードと同じ相対順序で資源にアクセスしなければなら
ない。すなわち、相対順序が満足されねばならない。し
かしながら、独立の命令の組を順序外で有効に実行でき
る。表1には、マトリクス乗算ルーチンの内部ループを
表わすSESE基本ループの例が記載してある。この例
は本明細書を通じて使用されるが、本発明の教示は任意
の命令ストリームに応用し得る。表1において、命令指
示は右手列に記載されており、この基本ブロックに対す
る従来形式の目的コード機能表示は左手列に表わされて
いる。
【0022】
【表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
【0023】表1に記載されるSESE基本ブロックに
包含される命令ストリームは、下記の機能を遂行する。
命令I0においては、レジスタR0が、そのアドレスが
R10に含まれるメモリの内容でロードされる。上述の
命令は、アドレスがR10から取り出された後、R10
の内容をインクリメントする。命令I1についても同じ
ステートメントがなされ得る。ただし、この場合、レジ
スタR1がロードされ、レジスタR11がインクリメン
トされる。命令I2は、レジスタR0およびR1の内容
を乗算せしめ、その結果がレジスタR2に記憶される。
命令I3においては、レジスタR2とレジスタR3の内
容が加算され、その結果がレジスタR3に記憶される。
命令I4においては、レジスタR4がデクリメントされ
る。命令I2、I3およびI4はまた、それらのそれぞ
れの状態を反映する1組の状態コードを発生させる。命
令I5において、レジスタR4の内容が間接的に0につ
いて試験される(命令I4により発生される状態コード
により)。デクリメント動作が非0値を発生させると、
ブランチが生ずる。その他の場合は、実行は、次の基本
ブロックの最初の命令に関して進行する。
【0024】図1を参照すると、TOLLソフトウェア
110により遂行される最初の機能は、命令の資源利用
を分析することである。例示の実施例においては、表1
の命令I0〜I5が存在する。かくして、TOLLソフ
トウェア110は、各命令を分析して、命令の資源要求
を確める。この分析は、いずれかの資源がいずれかの命
令により共有されるか否か、それゆえ命令が相互に独立
であるか否かを決定する上において重要である。相互に
独立の命令は並列に実行でき、「自然に同時的」と呼ば
れる。独立の命令は並列に実行でき、如何なる情報につ
いても相互に依存せず、リードオンリー態様以外の態様
において如何なるハードウェア資源をも共有しない。
【0025】他方、相互に依存性の命令は、1セットに
形成されるが、各セットの各命令は、そのセットの1つ
置きの命令に依存する。依存性は直接的でなくてよい。
セットは、セット内の命令によって、または逆にセット
内の命令により使用される資源によって記述できる。異
なるセット内の命令は完全に相互に独立である。すなわ
ち、セットにより共有される資源はない。それゆえ、セ
ットは互いに独立である。
【0026】表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に間接的に依存してい
る。
【0027】本発明のTOLLソフトウェアは、依存性
の命令より成るこれらの独立のセットを検出して、各セ
ットにCC1およびCC2のような指示状態コード群を
割り当てる。これにより、命令ストリームに対して1群
または1セットの状態コードしか利用できなかったなら
起こるであろう動作上の依存性は避けられる。換言すれ
ば、命令I0およびI1の実行の結果は、命令I2の実
行に必要とされる。同時に、命令I2の実行の結果は、
命令I3の実行に必要とされる。この分析の遂行に際し
て、命令が資源に対して読取りおよび/または書込みを
遂行するかどうかを決定する。この機能は、命令ストリ
ームの資源要求分析と称される。
【0028】従来の教示と異なり、本発明は、依存性の
命令が同じプロッセサ要素上で実行されることを必要と
しないことを教示していることに留意されたい。依存性
の決定は、追って記述するように、状態コードセットを
決定し命令発火時間の決定のためにのみ必要とされる。
本発明の例示の1実施例においては、異なるプロセッサ
要素について依存性の命令を実行し得る。これは、プロ
セッサ要素のコンテクストフリーの性質およびプロセッ
サ要素が全体的に共有資源に結合されるためである。こ
れについても後述する。表1に記載される列に対する分
析ステップ120の結果は、表2に記載してある。
【0029】
【表2】
【0030】表2において、命令I0およびI1に対し
て、レジスタの読取りおよび書込みが行なわれ、続いて
メモリの読取り(別個のアドレスにて)レジスタの書込
みが行なわれる。同様に、命令I2〜I4に対しては、
状態コード書込み、およびレジスタ読取りおよび書込み
が行なわれる。最後に、命令I5は、状態コード記憶レ
ジスタの1回の読取り、その結果ブランチまたはループ
が行なわれる。
【0031】SESE基本ブロック中の第2のステップ
またはパス130は、基本ブロック内において各命令に
インテリジェンスを付加ないし延長することである。こ
れは、ストリーム内の他の命令の実行時間に関する命令
実行時間の割当て、命令が実行されるべきプロセッサ番
号の割当て、および命令により必要とされ得るいわゆる
スタティック共有コンテクストストーリジマッピング情
報の割当である。
【0032】命令に発火時間を割り当てるため、命令に
より必要とされる各資源の一時的使用が考慮されねばな
らない。例示の実施例において、各資源の一時的使用
は、「フリータイム」および「ロードタイム」により特
徴づけられる。フリータイムは、資源が命令により読取
りまたは書込みされた最後の時間である。ロード時間
は、資源が命令により変更された最後の時間である。命
令が資源を変更すべきとは、資源が使用された最後の時
間後、換言するとフリータイム後変更を実行しなければ
ならない。命令が資源を読み取るべきときは、資源がロ
ードされた最後の時間後、すなわちロードタイム後読取
りを遂行しなければならない。
【0033】各資源の一時的使用および資源の実施の使
用間の関係は下記のごとくである。命令が資源の書込み
/変更を行なうべきときは、資源が他の命令により読取
りまたは書込みされた最後の時間(すなわち、その資料
に対する「フリータイム」)プラス1時間間隔がこの命
令に対する最先の発火時間となろう。このプラス1時間
間隔は、命令がフリータイム中なお資源を使用している
という事実に由来する。他方、命令が資源を読み取ると
きは、資源が他の命令により変更される最後の時間(す
なわちその資源に対するロードタイム)プラス1時間間
隔が最先の命令発火時間となる。「プラス1時間間隔」
は、実行されるべきロードを遂行しつつある命令に対し
て必要な時間から由来する。
【0034】上の論述は、アクセスされる資源の正確な
位置が既知であることを仮定している。これは、一般的
レジスタおよび状態コードメモリのごとく直接的に命名
された資源についてはつねに真である。しかしながら、
メモリ動作は、一般にコンパイル時に未知の位置にある
であろう。実際のアドレス指定構造体により発生される
アドレスはこの種類に属する。先行の実施例において
は、(TOLLの基本的概念を明らかにするため)命令
I0およびI1により使用されるアドレスは別であると
仮定した。もしもこれがそうでなければ、TOLLソフ
トウェアは、メモリを使用しなかった命令のみが、メモ
リ内の未知の位置にアクセスしつつあった命令と並列に
実行せしめられることを保証するであろう。
【0035】命令発火時間は、命令が使用する各資源に
対してTOLLソフトウェア110により評価される。
これらの「候補」発火時間は、ついでどれが最大または
もっとも遅い時間かを決定するために比較される。もっ
とも遅い時間は、命令に割り当てられる実際の発火時間
を決定する。この時点に、TOLLソフトウェア110
は、命令に割り当てられる発火時間を反映させるよう
に、資源のフリータイムおよびロードタイムのすべてを
更新する。TOLLソフトウェア110は、ついで次の
命令を分析するように進行する。
【0036】基本ブロック内の命令間依存性を決定する
ためには利用可能な多くの方法がある。先の論述は、特
定のコンパイラーTOLLパーティショニングを仮定す
るただ1つの可能な実施例に過ぎない。技術に精通した
ものであれば、多くの他のコンパイラーTOLLパーテ
ィショニングおよび命令間の依存性を決定する方法が可
能であり、実現できよう。それゆえ、例示されたTOL
Lソフトウェアは、基本ブロック内のデータ依存性を表
わすためにリンクリスト分析を使用する。使用され得る
他の可能なデータ構造は、トリー、スタック等である。
命令間の依存性の分析および表示のためリンクリスト表
示が利用されるものと仮定する。各レジスタは、そのレ
ジスタに含まれる値を使用する命令に対して1組のポイ
ンタと関連されている。表1におけるマトリックス乗算
の例に対して、資源の利用が表3に記載されている。
【0037】
【表3】
【0038】それゆえ、「read by」リンクを追
い、各命令に対する資源の利用状態を知れば、上のセッ
ト1および2の独立性が、TOLL110により分析命
令手段120(図1)で構成される。表1の例をさらに
分析する目的で、基本ブロックが、1つの命令ストリー
ムの任意の時間間隔で、例えば時間T16で始まるもの
と仮定する。換言すれば、時間シーケンスにおけるこの
特定の基本ブロックは、時間T16でスタートすると仮
定する。段階120における分析の結果を表4に記載す
る。
【0039】
【表4】
【0040】表4における垂直方向は、一般的レジスタ
および状態コード記憶レジスタを表わす。表における水
平方向は、表1の基本ブロックの例の命令を表わす。表
中のエントリは命令によるレジスタの利用を表わす。か
くして、命令I0は、時間T16、すなわち基本ブロッ
クの実行のスタート時にレジスタR10が読取りと書込
みをされ、レジスタR0が書き込まれることを必要とす
る。
【0041】本発明の教示に従う場合、レジスタR1、
R11およびR4も、時間T16の間遂行される動作を
もち得ないという理由はない。3つの命令I0、I1お
よびI4は互いにデータ独立性であり、時間T16中同
時的に実行できる。しかしながら、命令I2は、レジス
タR0およびR1がロードされ、ロード動作の結果が乗
算され得るようにすることをまず必要とする。乗算の結
果はレジスタR2に記憶される。レジスタR2は時間T
16において理論的に作用され得るが、命令I2は、時
間T16中に行なわれるレジスタR0およびR1のロー
ドの結果にデータ依存性である。それゆえ、命令I2の
完了は、時間フレームT17の間、またはその後に起こ
るはずである。それゆえ、上の表4において、命令I2
とレジスタR2の交叉点に対するエントリT17は、そ
れがデータ依存性であるから下線を付してある。同様
に、命令I3は、時間T17中にまず起こるレジスタR
2内のデータを必要とする。それゆえ、命令I3は、時
間T18中またはその後のみレジスタR2に作用し得
る。命令I5は、命令I4により更新される状態コード
命令CC2の読取りに依存する。状態コードメモリCC
2の読取りは、時間T16に記憶される結果にデータ依
存性であり、したがって次の時間T17中またはその後
に行なわれるはずである。それゆえ、段階130におい
て、目的コード命令は、上の分析に基づいて表5に記載
されるように「命令発火時間」(IFT)が割り当てら
れる。
【0042】
【表5】 表 5 目的コード命令 命令発火時間 I0 T16 I1 T16 I2 T17 I3 T18 I4 T16 I5 T17
【0043】基本ブロックの逐次命令ストリームにおけ
る各命令は、割り当てられた時間間隔において遂行され
得る。表5から明らかなように、通常6サイクルで逐次
処理される表1の同じ6つの命令が、本発明の教示によ
れば、たった3つの発火時間T16、17およびT18
で処理できる。命令発火時間(IFT)は、本発明の
「時間駆動」の特徴をもたらす。
【0044】例示の実施例における段階130により遂
行される次の機能は、命令発火時間(IFT)にしたが
って命令ストリームにおける自然的同時発生を順序再整
理し、ついで命令を個々の論理並列プロセッサに割り当
てることである。順序再整理は、同時的に利用可能な技
術の制約に起因してのみ必要とされることに留意された
い。もしも真に十分の関連するメモリが利用可能であれ
ば、ストリームの順序再整理は必要とするものでなく、
プロセッサの番号は、先着順サービスの態様で割り当て
ることができよう。命令選択機構のハードウェアは、こ
の動作モードを取り扱うため技術に精通したものであれ
ば適当に変更できよう。
【0045】例えば、同時的に、利用可能な技術、なら
びに4つの並列プロセッサ要素(PE)を有し各LRD
内に1つのブランチ実行装置(BEU)が設けられるシ
ステムを仮定すると、プロセッサ要素およびブランチ実
行装置は、本発明の教示によると以下の表6に記載され
るように割り当てることができる。プロセッサ要素がす
べての非ブランチ命令を実行し、他方本発明のブランチ
実行装置(BEU)がすべてのブランチ命令を実行する
ことに留意されたい。これらのハードウェア回路につい
ては、追って詳細に説明する。
【0046】
【表6】
【0047】それゆえ、本発明の教示にしたがうと、時
間T16の間、並列プロセッサ要素0、1および2が命
令I0、I1およびI4をそれぞれ同時に処理する。同
様に、次の時間T17中、並列プロセッサ要素0および
BEUが、命令I2およびI5をそれぞれ同時に処理す
る。そして最後に、時間T18中、プロセッサ要素0が
命令I3を処理する。命令発火時間T16、T17およ
びT18の間、並列プロセッサ要素3は表1の例に利用
されない。実際に、最後の命令がブランチ命令であるか
ら、命令I3に対して時間T18中に最後の処理が完了
するまでブランチは起こり得ない。遅延フィールドが命
令I5の処理中に形成されており、命令I5が時間T1
7内(最先可能時間)で処理されてさえ、命令I3が実
行された後ループないしブランチが起こるようにその実
行が遅延されるようになされている。
【0048】要約すると、本実施例のTOLLソフトウ
ェア110は、段階130において、各個々の命令およ
びその資源の使用状態をその形式および位置(既知なら
ば)について試験する(例えば表3)。ソフトウェア
は、ついで、この資源使用状態に基づいて命令発火時間
を割り当て(例えば表4)、これらの発火時間に基づい
て命令ストリーム5を記録し(例えば表5)、その結果
として論理的プロセッサ番号(LPN)を割り当てる
(例えば表6)。
【0049】例示の実施例においては、論理的プロセッ
サ番号(LPN)および命令発火時間(LFT)を含む
延長されたインテリジェンス情報が、図3および図4に
示されるごとく、基本ブロックの各命令に付加される。
また、追って詳述されるように、基本ブロック(BB)
の各命令に対する延長されたインテリジェンス(EX
T)は、本発明の実際の物理的プロセッサと相関づけら
れる。相関は、システムハードウェアにより遂行され
る。実際のハードウェアは、論理的プロセッサ要素の数
より小数、それと同数、またはそれより多数の物理的プ
ロセッサ要素を含んでよいことに注目することが重要で
ある。
【0050】本発明のこの例示の実施例における各命令
に付加される図4に示される共有のコンテクスト・スト
ーリジマッピング(SCSM)情報は、スタティックお
よびダイナミック成分を有する。SCSM情報のスタテ
ィック成分は、TOLLソフトウェアまたはコンパイラ
により付加されるものであり、命令ストリームのスタテ
ィック分析の結果である。ダイナミック情報は、追って
論述されるように論理的資源ドライバ(LRD)により
実行時間付加される。
【0051】この段階130にて、例示のTOLLソフ
トウェア110は、命令ストリームを、別個のプロセッ
サ要素(PE)により個々に処理され得る同時的発生に
対して1組の単一エントリ、単一エグジット(SES
E)基本ブロック(BB)として分析し、各命令に、命
令発火時間(IFT)および論理的プロセッサ番号(L
PN)を割り当てた。このように、本発明にしたがえ
ば、命令ストリームは、実行に先立ちすべての処理用資
源をスタティックに割り当てるため、TOLLソフトウ
ェアによりプレ処理される。これは、所与のプログラム
について一度なされ、そしてFORTRAN、COBO
L、PASCAL、BASIC等の多数の異なるプログ
ラム言語のいずれにも応用し得る。
【0052】図5を参照すると、一連の基本ブロック
(BB)が単一の実行セット(ES)を形成し得ること
が示されており、TOLLソフトウェア110が、段階
140においてかかる実行セット(ES)を形成する。
一度TOLLソフトウェアが実行セット500を識別す
ると、セットの始まりおよび終わりに、ヘッダ510お
よび/またはトレイラ520情報が付加される。好まし
い具体例においては、セットの始まりに1つのヘッダ情
報510が付加されるが、本発明はそれに制限されるも
のではない。
【0053】本発明にしたがうと、基本ブロックは、一
般に命令ストリームにおいて相互に相続いている。上述
のごとく、基本ブロック内の個々の命令が再整理され、
延長されたインテリジェンス情報が割り当てられても、
基本ブロックを再整理の必要はなくてよい。各基本ブロ
ックは、単一エントリ単一エグジット(SESE)であ
り、ブランチ命令を介してのエグジットをもつ。普通、
他の命令へのブランチは、ブランチの400の命令のご
とく局部的近傍内にある。実行セットを形成する(段階
140)目的は、実行セット内で出ることができる基本
ブロックの最小数を決定することであり、これにより命
令キャッシュ障害の数は最小化される。換言すると、所
与の実行セットにおいて、実行セットのブランチすなわ
ち切替えは統計的に最小とされる。TOLLソフトウェ
アは、段階140において、この線形プログラミング様
の問題、すなわちブランチ距離等に基づく問題を解決す
るための多数の従来の技術を利用し得る。この目的は、
追って論述されるように、実行セットをハードウェアキ
ャッシュに入れることができるように図5に示されるご
とく実行セットを定めることであり、それにより命令キ
ャッシュ障害(すなわち命令セットの切替え)は最小化
される。
【0054】上述したものは、単一のコンテクストの応
用におけるTOLLソフトウェアの例(表1〜6を使っ
て例示される)である。本質的に、TOLLソフトウェ
アは、所与のプログラム内の各基本ブロックについて命
令ストリーム内の自然の同時的発生を決定する。例示の
実施例において、TOLLソフトウェアは、決定される
自然の同時的発生にしたがって、各命令に命令発火時間
(IFT)および論理処理命令(LPN)を付加する。
すべての処理用資源は、処理に先立ってスタティックに
割り当てられる。本発明のTOLLソフトウェアは、多
数の同時に実行する異なるプログラムと関連して使用で
きる。しかして、各プログラムは、追って説明されるよ
うに、本発明の処理システム上で同じ使用者または異な
る使用者により使用される。
【0055】[3.ハードウェアの一般的説明]図6を
参照すると、TDAシステムアーキテクチャ600と称
される本発明のシステムアーキテクチャのブロックダイ
ヤグラムは、ネットワーク630を介して複数の論理的
資源ドライバ(LRDs )620に相互接続されたメモ
リサブシステム610を含む。論理的資源ドライバ62
0は、さらにネットワーク650を介して複数のプロセ
ッサ要素640に相互接続されている。最後に、複数の
プロセッサ要素640が、ネットワーク670を介し
て、レジスタセットプールおよび命令コードセットファ
イル660を含む共有資源に相互接続されている。LR
D−メモリネットワーク630、RE−LRDネットワ
ーク650およびPE−コンテクストファイルネットワ
ーク670は、従来形式のクロスバーネットワーク、オ
メガネットワーク、バンヤンネットワークまたは同等物
より構成し得るフルアクセスネットワークである。ネッ
トワークはフルアクセス形式(スペース的にノンブロッ
キング)であるから、例えば任意のプロセッサ要素64
0は、任意のコンテクスト(以下に定義される)ファイ
ル660における任意のレジスタファイルまたは状態コ
ードメモリにアクセスできる。同様に、どのプロセッサ
要素640も、どの論理的資源ドライバ620へでもア
クセスでき、どの論理的資源ドライバ620も、メモリ
サブシステム610のどの部分へでもアクセスできる。
加えて、PE−LRDおよびPEコンテクストファイル
ネットワークは時間的にノンブロッキングである。換言
すれば、これらの2つのネットワークは、ネットワーク
上の負荷状態に拘らず、どの資源からのどの資源へのア
クセスでも保証する。TOLLソフトウェアが、ネット
ワーク内において衝突が決して起らないことを保証して
いるから、PE−LRDネットワーク650およびPE
−コンテクストファイルネットワーク670のスイッチ
ング要素のアーキテクチャはかなり簡単化されている。
図6のブロックダイヤグラムはMIMDシステムを表わ
しており、各コンテクストファイル660は少なくとも
1つのユーザプログラムに対応している。
【0056】メモリサブシステム610は、従来形式の
メモリアーキテクチャおよび従来形式のメモリ要素を使
って構成できる。この種のアーキテクチャおよび要素に
は、当技術に精通したものが採用し得てこのシステムの
必要条件を満足するような多くのものがある。例えば、
積重ね型メモリアーキテクチャを使用できよう。(A.
V.PohmおよびO.P.AgrawalのHigh
Speed Memory System.Rest
on Publishing Co.,1983年発
行、参照。)
【0057】論理的資源ドライバ620は、本発明のシ
ステムアーキテクチャ600に独特である。各例示のL
RDは、時分割式で単一の使用者(コンテクストファイ
ルが割り当てられている)に対してデータキャッシュお
よび命令選択の維持を可能にする。LRDは、種々の使
用者から実行セットを受け取り、そして1つのLRD上
には、1つのコンテクストに対する1または複数の実行
セットが記憶されている。記憶された実行セットの基本
ブロック内の命令は、先に割り当てられた論理的プロセ
ッサ番号に基づいて待ち行列で記憶される。例えば、シ
ステムが64の使用者および8つのLRDを有すれば、
8の使用者が個々のLRDを時分割式に共有することに
なろう。オペレーティングシステムは、どの使用者がど
のLRDにどの位長く割り当てられるかを決定する。L
RDについては、追って詳細に説明する。
【0058】プロセッサ要素640もまた、TDAシス
テムアーキテクチャに独特であり、追って詳述する。本
発明の特定の1側面によれば、これらのプロセッサは、
コンテクストフリーの確立的性質を示す。すなわち、シ
ステムの将来の状態は、システムの現在の状態にのみ依
存し、現在の状態に至った経路に依存しない。それゆ
え、アーキテクチャの上で、コンテクストフリープロセ
ッサ要素は、2つの点において従来形式のプロセッサ要
素から独特に違っている。第1に、要素は、汎用レジス
タまたはプログラム状態ワードのような内部的恒久記憶
ないし残映をもたない。第2に、要素は、如何なるルー
ト設定機能または同期機能を遂行しない。これらのタス
クは、TOLLソフトウェアで遂行され、LRDで実施
される。アーキテクチャの重要性は、本発明のコンテク
ストフリープロセッサ要素が、LRDに対して真に共有
の資源であるということである。パイプライン結合プロ
セッサ要素が採用される本発明の他の好ましい特定の実
施例においては、プロセッサは、前述のごとく厳密にコ
ンテクストフリーではない。
【0059】最後に、レジスタセットおよび状態コード
セットファイル660も、Advanced Micr
o Device、カリフォルニヤ、サニベイル所在、
から入手し得るAMD29300シリーズレジスタファ
イルのような一般的入手し得る要素から構成できる。し
かしながら、図6に例示されるファイル660の特定の
形態は、本発明の教示にしたがって独特のものであり、
追って詳細に説明する。
【0060】表1に記載される例に基づく本発明の一般
的動作は、図7a,7bおよび7cのプロセッサ・コン
テクストレジスタファイル通信と関連して説明してあ
る。前述のように、本発明のこの例示の実施例の時間駆
動制御は、図4に詳細に記載される論理的プロセッサ番
号(LPN)および命令発火時間(IFT)に関する延
長インテリジェンスの追加に見出される。図7は、レジ
スタセットおよび状態コードセットファイル660のレ
ジスタPE0 〜PE3 の形態を総括的に示している。
【0061】図1の単一の使用者の例に対するTDAシ
ステムアーキテクチャ600の動作を説明するため、表
3〜表5を参照する。命令発火時間T16に対する例に
おいて、コンテクストファイル−PEネットワーク67
0は、プロセッサ要素PE0をレジスタR0 およびR10
と、プロセッサ要素PE1 をレジスタR1 およびR
11と、そしてプロセッサ要素PE2 をレジスタR4 と相
互接続する。それゆえ、時間T16の間、3つのプロセ
ッサ要素PE0 、PE1 およびPE2 は、I0、I1お
よびI4を同時に処理し、結果をR0 、R10、R1 、R
11およびR14に記憶する。時間T16の間、LRD62
0は、時間T17中に発火(実行)され得る命令を、適
当なプロセッサ要素に供給する。図7bを参照すると、
命令発火時間T17の間、命令I2を処理するために現
在割り当てられている唯一のプロセッサ要素PE0 のみ
がレジスタR0 、R1 およびR2 と相互接続している。
BEU(図7a、7bおよび7cに図示せず)も、状態
コードメモリに接続されている。最後に図7cを参照す
ると、命令発火時間T18中、プロセッサ要素PE0
みがレジスタR2 およびR3 に接続されている。
【0062】数種の重要な観察がなされねばならない。
まず、特定のプロセッサ要素PEがその動作の結果をレ
ジスタに入れるとき、後続の命令発火時間(IFT)
中、任意のプロセッサ要素を、それがその動作を実行す
るとき、そのレジスタに相互接続することができる。例
えば、命令I1に対するプロセッサ要素PE1 は、図7
aに示されるように、IFT T16中メモリ位置の内
容でレジスタR1 をロードする。命令発火時間T17
中、プロセッサPE0 はレジスタR1 と相互接続され、
そこに記憶されている結果で追加の動作を遂行する。本
発明の教示によると、各プロセッサ要素PEは、任意の
特定の命令発火時間(IFT)中レジスタファイル66
0内の必要なレジスタに「総括的に結合」され、それゆ
え、ある種の従来の手法におけるごとく、例えば他のプ
ロセッサレジスタ内の他の資源に供給のためレジスタフ
ァイルからデータを動かす必要はない。
【0063】換言すると、本発明の教示によると、各プ
ロセッサ要素は、任意の個々の命令発火時間中、ファイ
ル660の任意の共有レジスタに総体的に結合できる。
加えて、本発明によると、どのプロセッサ要素も、ある
種の従来システムにおいて見られるように、特定のレジ
スタの利用可能性についてあるいは特定のレジスタに入
れられる結果について競争する(すなわち待つ)必要は
ない。また、個々の任意の命令発火時間中、どのプロセ
ッサ要素も、レジスタファイル660内のどのような形
態のレジスタにしてもそのレジスタがあたかもそれ自身
の内部レジスタであるかのようにフルアクセスできる。
【0064】それゆえ、本発明の教示によれば、命令ス
トリームに加えられるインテリジェンスは、目的コード
内において検出される自然の同時的発生に基づく。検出
された同時的発生はTOLLソフトウェアにより分析さ
れ、そして該ソフトウェアは、例示の1実施例において
は、命令を並列に処理すべき個々の論理的プロセッサ要
素(LPN)および独特の命令発火時間(IFT)を論
理的に割り当てるから、各プロセッサ要素(PE)は、
その所与の命令に対して、その命令の必要条件にしたが
って処理のために利用可能なすべての必要な資源を有す
ることになろう。上述の例において、論理的プロセッサ
番号は実際のプロセッサ割当てに対応する。すなわちL
PNOはPE0 に、LPN1はPE1 に、LPN2はP
2 にそしてLPN3はPE3 に対応する。本発明にお
いては、LPN0対PE1 、LPN1対PE2 等のよう
などのような順序でも使用できるから、本発明はそのよ
うに制限されるものではない。すなわちTDAシステム
が4以上または4以下のプロセッサを有するならば、以
下に論述されるように異なる割当てが使用できよう。
【0065】TDAシステムに対する時間制御は命令発
火時間駆動される。図7a〜7cに観察されるように、
各個々の命令発火時間中、プロセッサ要素640および
PE−レジスタセットファイルネットワーク670より
成るTDAシステムアーキテクチャは、すべての利用可
能な資源を完全に利用しながら、個々のプロセッサ要素
をして命令を同時に処理せしめるように完全に適合され
た新規で独特の特定の形態を取る。プロセッサ要素はコ
ンテックスフリーとし得、そのため、過去の処理に関す
るデータ、状態または情報は必要とされず、プロセッサ
要素の内部にも存在しない。コンテクストフリープロセ
ッサ要素は、各個々の命令の要求にのみ反応し、ハード
ウェアにより必要な共有レジスタに相互接続される。
【0066】〔4.概要〕概説すると、各異なるプログ
ラムまたはコンパイラ出力100に対するTOLLソフ
トウェア110は、各単一エントリー、単一エグジット
(SESE)基本ブロック(BB)に存在する自然の同
時的発生を分析し、例示の1実施例においては、論理的
プロセッサ番号(LPN)および命令発火時間(IF
T)を含むインテリジェンスを各命令に加える。図6に
示される本発明のMIMDシステムにおいては、各コン
テクストファイルは、プログラムを実行する異なる使用
者からのデータを含むことになろう。各使用者には、異
なるコンテクストファイルが割り当てられ、そして図7
に示されるように、プロセッサ要素は、命令により必要
とされるレジスタおよび状態コードメモリのような必要
な資源に個々にアクセスし得る。命令それ自体は、共有
資源情報(すなわち、レジスタおよび状態コードメモ
リ)を担持する。それゆえ、TOLLソフトウェアは、
各プログラムに対して1回だけ、図6に例示されるTD
Aシステムアーキテクチャにおける命令の処理を制御す
るに必要な情報をスタティックに割り当て、時間駆動式
の非集中化処理を保証する。この際、メモリ、論理的資
源ドライバ、プロセッサ要素およびコンテクスト共有資
源は、純粋にノンブロッキングな様式でそれぞれのネッ
トワークを介して総体的に結合される。
【0067】論理的資源ドライバ(LRD)620は、
実行セットに形成される基本ブロックを受け取り、各命
令を命令発火時間(IFT)に選択されたプロセッサ要
素640に供給する責務を有する。図7に示される例は
単一の使用者に対する単純な表示であるが、マルチュー
ザシステムにおいては、論理的資源ドライバ620によ
って命令をプロセッサ要素640に供給することによ
り、追って詳述されるようにプロセッサ要素は完全に利
用可能となる。共有資源およびプロセッサ要素のタイミ
ングおよび識別情報は、すべてTOLLソフトウェアに
より命令に加えられる延長インテリジェンスに含まれて
いるから、各プロセッサ要素640は、完全に(あるい
は若干の例においてはほとんど)コンテクストフリーと
し得、そして実際に、命令発火時間ごとに、種々の論理
的資源ドライバにより供給される異なる使用者の個々の
命令を処理できる。以下に説明されるように、これをな
すため、論理的資源ドライバ620は、予定された順序
で、命令をPE−LRDネットワーク650を介してプ
ロセッサ要素640に供給する。
【0068】各命令の実行の完了に続き、任意のプロセ
ッサ要素からのデータ生成/操作の結果について任意の
他のプロセッサにより独立的にアクセスすることを可能
にするのがプロセッサ要素のコンテクストフリーの性質
である。コンテクストフリーでないプロセッサの場合、
1つのプロセッサが他のプロセッサにより創成されたデ
ータにアクセスするためには、1つのプロセッサからデ
ータを抽出しそれを他のプロセッサに利用できるように
するため、特別の動作(普通汎用レジスタからデータを
メモリに動かす命令)が必要とされる。
【0069】複数のLRDに依るプロセッサ要素の真の
共有を可能にするのもプロセッサ要素のコンテクストフ
リーの性質である。この共有は、単一の命令サイクル程
度の細かい粗さとし得る(1つのLRDに割り当てられ
る)。1つのコンテクストの状態を節約して(これで1
つまたは複数のプロセッサ要素の制御ができる)、(第
2のLRDに割り当てられる)他のコンテクストによる
制御を可能にするため、プログラミングや特別のプロセ
ッサ操作は必要とされない。コンテクストフリーでない
プロセッサ(従来技術の場合そうである)の場合、かか
る状態節約において、コンテクストスイッチングのプロ
セスの一部として、特別のプログラミングおよび特別の
マシン操作が必要とされる。
【0070】本発明のプロセッサ要素を実施するに際し
ては1つの他の代替的方法がある。これはコンテクスト
フリーの概念に対する1つの変形である。すなわち、こ
の実施形態は、上述の物理的に総体的な相互接続をもた
らすが、プログラム制御下で、特定の命令の完了に続き
発生されるデータのレジスタファイルへの伝送に誓約を
加えることを可能にする。
【0071】完全にコンテクストフリーな実施形態にお
いては、プロセッサ要素に入る各命令の完了にて、コン
テクストの状態はコンテクストフリーファイルに完全に
補捉される。上記の代替の場合には、レジスタファイル
への伝送は阻止され、データは、プロセッサに保持さ
れ、さらにデータを操作する後続の命令に対して利用可
能となる(例えばデータチェイニングにより)。究極的
に、データは、若干の有限の命令シーケンスの後レジス
タファイルに伝送される。しかし、伝送されるのは最後
のデータのみである。
【0072】これは、上述のマイクロコード化コンプレ
ク命令の場合の一般化として見られるべきものであり、
実質的にコンテクストフリーなプロセッサ要素による実
施形態と考えることができる。このような実施形態にあ
っては、データが究極的にコンテクストレジスタファイ
ルに伝送される時間まで、依存性の命令が同じプロセッ
サ要素上で実行されることを保証することが要求されよ
う。これは、パイプライン結合されたプロセッサ要素の
場合と同様に、TOLLソフトウェアの全機能性および
アーキテクチャを変更しないが、各命令サイクルを全プ
ロセッサ要素上で最適な状態で利用するためプロセッサ
要素間に設定される命令の効率的なスケジュール化に主
として影響を及ぼす。
【0073】[詳細な説明] 1.ソフトウェアの詳細な説明 図8〜図11には、本発明のTOLLソフトウェア11
0の詳細が記載されている。図8を参照すると、コンパ
イラからの従来の出力は、段階800にてTOLLソフ
トウェアに供給される。従来形式のコンパイラ出力80
0内には、下記の情報が含まれている。すなわち、
(a)命令機能、(b)命令により必要とされる資源、
(c)資源の位置(可能ならば)、および(d)基本ブ
ロック境界である。ついで、TOLLソフトウェアは、
段階810にて第1の命令でスタートとし、段階820
においてどの資源が使用されるか、そして段階830に
おいてその資源がどのように利用されるかを決定するよ
うに進行する。このプロセスは、先の節で論述されるよ
うに、段階840および850を通って命令ストリーム
内の各命令に対して継続する。
【0074】段階840で試験されるところにしたがっ
て最後の命令が処理された後、表が構成され、各資源に
対して「フリー時間」および「ロード時間」で初期設定
される。かかる表は、内部ループマトリック乗算の例に
対して表7に記載されており、イニシャライズの際表は
すべて0を含む。イニシャライズは段階860で行なわ
れ、そしてTOLLソフトウェアは、一度構成される
と、段階870において第1の基本ブロックでスタート
するように進行する。
【0075】
【表7】 表 7 資 源 ロード時間 フリー時間 R0 T0 T0 R1 T0 T0 R2 T0 T0 R3 T0 T0 R4 T0 T0 R10 T0 T0 R11 T0 T0
【0076】図9において、TOLLソフトウェアは、
段階900において次の基本ブロックの最初の命令で命
令ストリームの分析を継続する。先述のように、TOL
Lは、命令ストリームのスタティック分析を遂行する。
スタティック分析は(実際上)直線コードを仮定する。
すなわち、各命令は、逐次的態様において分析される。
換言すると、ブランチが決して起こらないことを仮定す
る。非パイプ式の命令実行に対しては、ブランチの結果
として起こる依存性は決して起こることがないから問題
はない。パイプライン式の実行については後で論述する
(パイプライン結合の使用は、ブランチ命令の遅延値に
影響を及ぼすだけであるということができる)。
【0077】明らかなように、ブランチが決して起こら
ないという仮定は正しくはない。しかしながら、命令ス
トリームにおいてブランチに遭遇することの影響は単純
である。前述のように各命令は、それが使用する資源
(ないし物理的ハードウェア要素)により特徴づけられ
る。命令発火時間の(そして例示の実施例においては、
論理的プロセッサ番号の)割当ては、命令ストリームが
これらの資源に如何にアクセスするかに依存する。TO
LLソフトウェアのこの特定の実施例内においては、各
資源の使用状態は、上述のごとく、その資源に対するフ
リータイムおよびロードタイムと称されるデータ構造に
より表される。各命令は順番に分析されるから、1つの
ブランチの分析は、下記の態様でこれらのデータ構造に
影響を及ぼす。
【0078】基本ブロックのすべての命令に発火時間が
割り当てられると、全資源のロード時間およびフリー時
間を(この値に)更新するのに、現在の基本ブロック
(ブランチが属しているブロック)の最大発火時間が使
用される。次の基本ブロック分析が始まると、提案され
る発火時間は、最後の最大値+1として与えられる。そ
れゆえ、レジスタ資源R0〜R4、R10およびR11
の各々に対するロード時間およびフリー時間は、例え
ば、基本ブロックがT16の時間で始まると仮定する
と、以下の表8に記載される。
【0079】
【表8】 表 8 資 源 ロード時間 フリー時間 R0 T15 T15 R1 T15 T15 R2 T15 T15 R3 T15 T15 R4 T15 T15 R10 T15 T15 R11 T15 T15
【0080】それゆえ、TOLLソフトウェアは、段階
910において、提案される発火時間(PFT)を、先
行の基本ブロック発火時間の最大発火時間+1に設定す
る。上の例のコンテクストにおいて、先行の基本ブロッ
クの最後の発火時間はT15であり、この基本ブロック
における命令に対する提案される発火時間はT16で始
まる。
【0081】段階920において、最初の命令により使
用される最初の資源、この例においては命令I0のレジ
スタR0である、が分析される。段階930において、
資源が読み取られるか否かの決定がなされる。上述の例
においては、命令I0に対して、レジスタR0は読み取
られないが、書き込みがなされる。それゆえ、段階94
0は、次に、資源が書き込まれるか否かの決定に入る。
この場合、命令I0はレジスタR0に書き込まれ、段階
942に入る。段階942は、命令I0に対する提案さ
れた発火時間(PFT)が資源に対するフリー時間に等
しいかまたはそれより短いか否かについて決定をする。
この例においては、表8を参照すると、レジスタR0お
よびT15に対する資源フリー時間はT15であり、そ
れゆえT16の提案される発火時間はT15の資源フリ
ー時間より長く、決定はNOであり、段階950に入
る。
【0082】TOLLソフトウェアによる分析は次の資
源に進行する。この例において、命令I0に対する次の
資源はレジスタR10である。この資源は命令により読
取りおよび書き込みが行なわれる。段階930に入り、
その命令が資源を読取るか否かの決定がなされる。真で
あるから段階932に入り、ここで命令に対する現在の
提案発火時間(T16)が資源ロード時間(T15)よ
り短いか否かの決定がなされる。否であるから、段階9
40に入る。ここでは、命令が資源に書き込みを行なう
か否かの決定が行なわれる。真であるから、段階942
に入る。この段階においては、命令に対する提案発火時
間(T16)が資源に対するフリー時間(T15)より
も短いか否かの決定がなされる。否であるから、段階9
50に入る。TOLLソフトウェアによる分析は、次の
資源に入るか(命令I0についてはない)、命令に対す
る最後の資源が処理されたならば「B」(図10)に入
る。
【0083】それゆえ、段階950における決定に対す
る答は肯定であり、分析はついで図10に入る。図10
において、資源フリー時間およびロード時間がセットさ
れる。
【0084】段階1000において、命令I0に対する
最初の資源はレジスタR0である。段階1010におけ
る最初の決定は、命令が資源を読むか否かである。前述
のごとく、命令I0において、レジスタR0の読取りは
行なわれないが書き込みが行なわれるから、この決定に
対する答はNOであり、分析は段階1020に進行す
る。段階1020において、資源が書き込まれるか否か
の決定に対する答はYESであり、分析は段階1022
に進行する。段階1022は、命令に対する提案発火時
間が資源ロード時間より長いか否かについての決定をな
す。この例において、提案発火時間はT16であり、そ
して表8に戻ると、発火時間T16はレジスタR0に対
するロード時間T15より長い。それゆえ、この決定に
対する答はYESであり、段階1024に入る。段階1
024において、資源ロード時間は命令の提案発火時間
に等しくセットされ、資源の表(表8)はその変化を反
映するようにして更新される。同様に、段階1026に
入り、資源フリー時間が更新され、命令の提案発火時間
プラス1すなわちT17(T16プラス1)に等しくセ
ットされる。
【0085】ついで段階1030に入り、この命令によ
り使用されるほかの資源があるか否かについての決定が
なされる。1つのレジスタR10があり、分析はこの資
源を処理する。段階1070では次の資源が取得され
る。段階1010に入り、ここで、資源が命令に読み取
られるか否かの決定がなされる。真であるから、段階1
012に入り、現在提案発火時間(T16)が資源フリ
ー時間(T15)より大きいか否かの決定がなされる。
それが真であるから、段階1014に入り、ここで、資
源のフリー時間が、この命令によるこの資源の使用を反
映するように更新される。分析は、継いで、段階102
0にて、資源が命令により書き込まれるか否かをチェッ
クする。真であるから、段階1022に入り、現在の提
案時間(T16)が資源(T15)のロード時間より長
いか否かの決定がなされる。真であるから、段階102
4に入る。この段階において、資源のロード時間が命令
の発火時間を反映するように更新される。すなわち、ロ
ード時間はT16にセットされる。ついで段階1026
に入り、資源のフリー時間が命令の実行を反映するよう
に更新される。すなわち、フリー時間はT17にセット
される。ついで段階1030に入り、これが命令により
使用される最後の資源であるか否かの決定がなされる。
真であるから段階1040に入る。ここで、命令発火時
間(IFT)は、T16の提案発火時間(PFT)に等
しくなるようにセットされる。ついで、段階1050に
入り、これが基本ブロックにおける最後の命令であるか
否かについての決定がなされる。これはこの場合NOで
あり、段階160に入り次の命令I1を処理する。次の
命令は、図9のA1にて分析段階に入る。
【0086】例における次の命令はI1であり、レジス
タR1およびR11に対して、レジスタR0およびR1
0に関して命令I0に提供されたのと同じ分析が命令I
1に対して行なわれる。以下の表9においては、図8の
資源の一部がこれらの変化を反映するように変更される
(命令I0およびI1はTOLLソフトウェアにより完
全に処理されてしまっている)。
【0087】
【表9】 表 9 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R10 T16 T17 R11 T16 T17
【0088】基本ブロックの例における次の命令は命令
I2であり、これは、レジスタR0およびR1の読取り
およびレジスタR2への書込みを含む。それゆえ、図9
の段階910において、命令に対する提案発火時間はT
16にセットされる(T15+1)。ついで段階920
に入り、そして命令I2における第1の資源はレジスタ
R0である。段階930においてなされる第1の決定は
YESであり、段階932に入る。段階932では、T
16の命令の提案発火時間がT16の資源レジスタR0
ロード時間に等しいかまたはそれ以下であるか否かにつ
いての決定がなされる。レジスタR0に対する資源ロー
ド時間は、命令I0に対するレジスタR0の分析中T1
5からT16に更新されたことに注目することが重要で
ある。段階932におけるこの決定に対する答は、提案
発火時間が資源ロード時間に等しい(T16=T16)
ということであり、段階934に入る。段階934にお
いて、命令の提案発火時間は、資源ロード時間プラス
1、この例においてはT17(T16+1)に等しくな
るように更新される。命令I2の提案発火時間はここで
T17に更新される。ここで、段階940に入り、命令
I2は資源R0の書込みをしないから、この決定に対す
る答はNOであり、段階950、ついで段階960へと
入り、次の資源を処理する。この例においてこれはレジ
スタR1である。
【0089】段階960においては、レジスタR1に対
して行なわれる分析を開始し、段階930においては、
資源が読み取られるか否かについての決定がなされる。
答はもちろんYESであり、段階932に入る。今度
は、命令の提案発火時間はT17であり、T17の命令
の提案発火時間が、T16であるレジスタR1に対する
資源ロード時間に等しいかまたはそれ以下であるか否か
についての決定がなされる。命令の提案発火時間はレジ
スタロード時間より長いから(T17はT16より
大)、この決定に対する答はNOであり、段階940に
入る。レジスタはこの命令により書き込まれず、それゆ
え分析は段階950に進行する。段階960において、
命令I2に対して処理されるべき次の資源は資源レジス
タR2である。
【0090】段階930における最初の決定は、この資
源R2が読み取られるか否かである。否であるから、分
析は段階940に、ついで段階942に進む。この時点
において、命令I2の提案発火時間はT17であり、そ
して段階942において、T17の命令の提案発火時間
が資源R2のフリー時間に等しいかまたはそれ以下であ
るか否かの決定がなされる。しかして、このフリー時間
は上記の表8においてはT15である。この決定に対す
る答はNOであり、それゆえ段階950に入る。これは
この命令に対して処理される最後の資源であり、分析は
図10において続く。
【0091】図10に移り、命令I2に対する第1の資
源R0が分析される。段階1010において、この資源
が読み取られるか否かの決定がなされ、そしてその答は
YESである。段階1012に入り、命令I2の提案発
火時間T17がレジスタR0に対する資源のフリー時間
より大であるか否かの決定がなされる。表9において、
レジスタR0に対するフリー時間はT17であり、両者
は等しいから、この決定に対する答はNOである。段階
1020に入り、これもNOの答をもたらし、分析は段
階1030に切り替わる。これは命令I2に対して処理
される最後の資源ではないから、段階1070に入り、
分析を次の資源レジスタR1に進める。レジスタR1に
対しては、図10において、レジスタR0に対するのと
全く同じ経路が取られる。次に、段階1070でレジス
タR2の処理が行なわれる。この場合、段階1010に
おける決定に対する答はNOであり、段階1020に入
る。命令I2に対してレジスタR2は書き込まれるか
ら、段階1022に入る。この場合命令I2の提案発火
時間はT17であり、資源のロード時間は表8からT1
5である。それゆえ、提案発火時間はロード時間より大
であるから、段階1024に入る。段階1024および
1026は、レジスタR2に対するロード時間およびフ
リー時間をそれぞれT17およびT18に前進せしめ、
そして資源の表は図10に示されるように更新される。
【0092】
【表10】 表 10 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R2 T17 T18
【0093】これは命令I2に対して処理される最後の
資源であるから、T17の提案発火時間が実際の発火時
間(段階1040)となり、次の命令が分析される。内
部ループマトリックス乗算の例における各命令が分析さ
れるのはこの態様においてであるから、完全に分析され
たとき、最終の資源表は下記の表11におけるごとく現
われる。
【0094】
【表11】 表 11 資源 ロード時間 フリー時間 R0 T16 T17 R1 T16 T17 R2 T17 T18 R3 T18 T19 R4 T16 T17 R10 T16 T17 R11 T16 T17
【0095】図11において、TOLLソフトウェア
は、図9および図10に記載されるタスクを遂行後、段
階1100に入る。段階1100は、すべての資源フリ
ー時間およびロード時間を所与の基本ブロック内の最大
の時間にセットする。例えば、表11に記載される最大
時間はT19であり、それゆえすべてのフリー時間およ
びロード時間は時間T19にセットされる。段階111
0に入り、これが処理されるべき最後の基本ブロックで
あるか否かについての決定がなされる。もし否であれ
ば、段階1120に入り、次の基本ブロックが処理され
る。これが最後の基本ブロックであれば、段階1130
に入り、再び命令ストリームの第1の基本ブロックでス
タートする。この分析の目的は、各基本ブロック内の命
令を論理的に整理し、各命令に論理的プロセッサ番号を
割り当てることである。これは、内部ループマトリック
ス乗算の例に対して表6に集約されている。段階114
0は、基準として提案発火時間(IFT)を使って、各
基本ブロック内の命令を上昇する順序で分類する機能を
遂行する。ついで段階1150に入り、ここで論理的プ
ロセッサ番号(LPN)が割り当てられる。プロセッサ
要素の割り当てをなすに際して、1組の命令すなわち同
じ命令発火時間(IFT)を有するものに、論理的プロ
セッサ番号が到着順サービス式に割り当てられる。例え
ば、表6に戻ると、発火時間T16に対する第1組の命
令はI0、I1およびI4である。これらの命令は、そ
れぞれプロセッサPEO、PE1およびPE2に割り当
てられる。次に、時間T17中、第2組の命令I2およ
びI5がそれぞれプロセッサPE0およびPE1に割り
当てられる。最後に、最後の時間T18中、最後の命令
I3がプロセッサPE0に割り当てられる。プロセッサ
要素の割り当ては他の方法を使って行なうことができる
ものであり、プロセッサ要素およびシステムの実際のア
ーキテクチャに基づくことを特に理解されたい。明らか
なように、好ましい実施例において、1組の命令は、フ
ァースト・イン・タイム式に論理的プロセッサに割り当
てられる。割り当てをなした後段階1160に入り、最
後の基準ブロックが処理されたか否かが決定され、もし
否であれば段階1170で次の基本ブロックを生じ、プ
ロセスは完了まで繰り返される。
【0096】それゆえ、TOLLソフトウェアの出力
は、この例示の実施例においては、図4に示されるよう
に、各命令に対して提案発火時間(IFT)の割り当て
をもたらす。先述のように、命令は、命令発火時間にし
たがって、命令ストリームに現われる自然の同時的発生
に基づいて再整理され、そして個々の論理的プロセッサ
が表6に示されるように割り当てられる。上の論述は内
部ループマトリックス乗算の例について行なってきた
が、図9〜11に記載される分析は、任意のSESE基
本ブロックに応用して、そこに含まれる自然的同時発生
を検出し、各使用者プログラムに対して命令発火時間
(IFT)および論理的プロセッサ番号(LPN)を割
り当てるのに応用できる。このとき、このインテリジェ
ンスは、基本ブロック内に記録された命令に加えること
ができる。これは、所与のプログラムに対して1回だけ
なされ、本発明のTDAシステムアーキテクチャで動作
させるために必要な時間駆動・非集中化制御およびプロ
セッサマッピング情報を提供する。
【0097】図12に示される実行セットの目的は、1
つの実行セット内における命令キャッシュヒットを最大
にすることによりプログラムの実行を最適化すること、
換言すれば、1つの実行セット内の基本ブロックによる
他の実行セット内の基本ブロックへの切替えをスタティ
ックに最小化することである。実行セットの支援手段
は、3つの主要素より成る。すなわち、データストラク
チャの定義、実行セットデータストラクチャを準備する
予備実行時間ソフトウェア、およびプログラムを実行す
るプロセスにおいて実行セットの取出しおよび操作を支
援するハードウェアである。
【0098】実行セットデータストラクチャは、1組の
1または複数のブロックおよび付加されたヘッダより成
る。ヘッダは次の情報を含む。すなわち、実際の命令の
スタートのアドレス1200(これはヘッダが固定長を
有するならば内在的である)、実行セットの長さ(実行
セットの終了のアドレス)、潜在的相続的(プログラム
の実行に関して)実行セットの0または複数のアドレス
1220である。
【0099】実行セットを支持するに必要なソフトウェ
アは、コンパイル後の処理の出力を操作する。その処理
は、依存性の分析、資源分析、資源割り当て、および個
々の命令ストリーム再整理を遂行するものである。実行
セットの形成は、基本ブロックの実行の起こり得る順序
および頻度を決定する1または複数のアルゴリズムを使
用する。基本ブロックは相応にグループ化される。可能
なアルゴリズムは、最小コストのルート設定のための直
線的プログラミングの問題を解くのに使用されるアルゴ
リズムに類似である。実行セットの場合、コストはブラ
ンチと関連する。同じ実行セットに含まれる基本ブロッ
ク間のブランチは、キャッシュ操作に関して不利を招く
ことはない。何故ならば、実行セットの基本ブロックに
対する命令は定常状態にあるキャッシュに存するからで
ある。そのとき、コストは、異なる実行セットの基本ブ
ロック間のブランチと関連する。これは、異なる実行セ
ットの基本ブロックの命令は、キャッシュ内にあると仮
定されないからである。主メモリからキャッシュへ適当
なブロックの検索および記憶がなされている間、キャッ
シュミスでプログラムの実行が遅延される。
【0100】本発明の教示によるとコストを評価し割り
当てるのに使用できる数種の可能なアルゴリズムがあ
る。1つのアルゴリズムは、スタティックなブランチコ
スト手法である。この方法にしたがえば、ブロックの連
続性および最大の許容実行セットサイズ(これは最大の
命令キャッシュサイズのごとく実施の限界となろう)に
基づき基本ブロックを実行セットに配置することにより
始められる。基本ブロック間におけるブランチについて
の情報は既知であり、コンパイラの出力である。装置
は、この情報を使用し、異なる実行セット内の基本ブロ
ック間における(スタティックな)ブランチの数に基づ
いて、結果として生じた基本ブロックの実行セット中へ
のグループ化のコストを計算する。装置は、このコスト
関数を最小にするための標準のリニアプログラミング技
術を使用でき、それにより、基本ブロックの実行セット
中への最適のグループ化を行なうことができる。このア
ルゴリズムは、実施が容易であるという利点を有する。
しかしながら、このアルゴリズムは、実際のプログラム
実行中に起こる実際のダイナミックなブランチパターン
を無視している。
【0101】本発明の教示にしたがえば、実際のダイナ
ミックブランチパターンを一層十分に評価できる他のア
ルゴリズムを使用できる。1つの例は、プログラムの実
行から実際のブランチデータを収集することであり、そ
の結果として、実際のブロック間ブランチに基づくブラ
ンチコストの重みづけ割り当てを利用して基本ブロック
の再グループ化を行なうことである。明らかなように、
この手法はデータ依存性である。他の手法は、プログラ
マをしてブランチの確率を特定せしめ、その後重みづけ
されたコスト割り当てをなすことであろう。この手法
は、プログラマの介入およびプログラマのエラーが導入
される不利益を有する。さらに他の手法は、単位セット
当りの基本ブロックの数を制限するがごときパラメータ
を使用し、そしてこのパラメータに発見性を与えること
に基づくものであろう。
【0102】上述のアルゴリズムは、実行セットを創成
する問題に独特なものではない。しかしながら、命令キ
ャッシュの性能を最適化する手段のような実行セットの
使用は新規である。プロセッサ資源の事前実行時間割り
当てが新規であるのと同様に、キャッシュ性能を最大に
するための基本ブロックの事前実行時間分類は、従来技
術では見出されないものである。
【0103】実行セットを支援するに必要とされる最後
の要素はハードウェアである。後で論述されるように、
このハードウェアは、現在の実行セットスタートアドレ
スおよび終了アドレス、およびその他の実行セットヘッ
ダデータを記憶するためのメモリを備える。実行セット
および関連するヘッダデータストラクチャの存在は、実
際に、キャッシュからプロセッサ要素への実際の命令取
出しに分り易い。後者は、厳密に個々の命令およびブラ
ンチアドレスに依存している。実行セットハードウェア
は、命令取出しと独立に動作し、主メモリから命令キャ
ッシュへの命令ワードの移動を制御する。このハードウ
ェアは、全実行セットがキャッシュに存在するか、プロ
グラムの実行が、実行セットの外側の基本ブロックへの
ブランチが起こる点に達するまで、命令の基本ブロック
をキャッシュへ取り出すための責務を負う。この点で、
目標実行セットはキャッシュに存在しないから、実行セ
ットハードウェアは、目標実行セットに属する基本ブロ
ックの取出しを行なう。
【0104】図13を参照すると、コンテクストファイ
ル0に対するレジスタファイル660の構造が示されて
いるが(構造は各コンテクストファイルに対して同じで
ある)、各構造体はL+1レベルのレジスタセットを有
しており、そして各レジスタはn+1の別個のレジスタ
を備えている。例えば、nは、全部で32のレジスタに
対して31に等しくし得よう。同様に、Lは、全部で1
6のレベルに対して15に等しくし得よう。これらのレ
ジスタは、レジスタ間で共有されない。すなわち、各レ
ベルは、各他のレベルのレジスタから物理的に別々の1
組のレジスタを有する。
【0105】各レベルのレジスタは、主プログラムに関
して特定の深さで実行されるサブルーチンが利用可能な
1群のレジスタに対応している。例えば、レベル0の1
組のレジスタは、主プログラムに利用可能であり、レベ
ル1にある1組のレジスタは、主メモリから直接呼ばれ
る第1レベルのサブルーチンに利用可能であり、レベル
2の1組のレジスタは、第1レベルサブルーチンにより
直接呼ばれるサブルーチン(第2レベルサブルーチン)
に利用可能であり、レベル3にある1組のレジスタは、
第2レベルサブルーチンにより直接呼ばれるサブルーチ
ンに利用可能である。
【0106】これらのレジスタセットは独立であるか
ら、最大のレベル数は、サブルーチン間で任意のレジス
タを物理的に共有しなければならない前に、すなわち任
意のレジスタの内容を主メモリに記憶しなければならな
い前に入れこ配置できるサブルーチンの数に対応する。
異なるレベルにあるレジスタセットは本発明の共有資源
を構成し、サブルーチン呼び中のシステムオーバーヘッ
ドコストを相当に節約する。これは、レジスタセット
は、稀にしかメモリに、例えばスタックに記憶される必
要がないからである。
【0107】例示の実施例においては、異なるレベルの
サブルーチン間の通信は、各ルーチンに、レジスタを得
るための最高3つまでの可能なレベルを与えることによ
り行なわれる。3つのレベルは、現在レベルと、先行の
(発呼)レベル(もしあれば)と、広域(主プログラ
ム)レベルとである。どのレベルのレジスタがアクセス
されるべきかの指示、すなわち現在実行している主プロ
グラムすなわちサブルーチンに関するレベルの指示は、
TOLLソフトウェアにより命令に付加されたスタティ
ックSCSM情報を使用する。この情報は、処理される
べき情報に関するレベルを指示する。これは、アーギュ
メントとして角度値を表わす値を取り、その値の三角関
数であるSINE値を戻すSINE関数に対するサブル
ーチン呼びをその1例として示すことができる。主プロ
グラムは表12に記載され、サブルーチンは表13に記
載されている。
【0108】
【表12】
【0109】
【表13】
【0110】それゆえ、本発明の教示にしたがうと、図
14におけるごとく、サブルーチンの命令I0は、現在
レベル(サブルーチンレベルまたは被呼レベル)のレジ
スタR2を、先行レベル(発呼ルーチンまたはレベル)
からのレジスタR1の内容でロードする。サブルーチン
は、発呼ルーチンのレジスタセットから独立に処理を遂
行すべくフルセットのレジスタを有することに留意され
たい。サブルーチン呼びの完了にて、命令IP は、現在
レベルのレジスタR7を発呼ルーチンのレベルのレジス
タR2に記憶せしめる(これは、SINEルーチンの結
果を発呼プログラムのレジスタセットに戻す)。
【0111】図22と関連して一層詳述されるように、
レベル間の切替えは、ダイナミックに発生されるSCS
M情報の使用により行なわれる。しかして、この情報
は、命令の現在手順レベル(すなわち、被呼ルーチンの
レベル)の絶対値、先行の手順レベル(すなわち、発呼
ルーチンのレベル)およびコンテクスト識別情報を含む
ことができる。絶対的なダイナミックSCSMレベル情
報は、TOLLソフトウェアにより供給される相対的な
(スタティック)SCSM情報からLRDにより発生さ
れる。コンテクスト識別情報は、マルチユーザシステム
において多数のプログラムを処理するときのみ使用され
る。相対的SCSM情報は、表13にレジスタR1(発
呼ルーチンの)に対してR1(LO)として、レジスタ
R2に対してR2(LO)として示されている。現在レ
ベルの全レジスタには、現在手順レベルを示す符号(0
0)を付した。
【0112】図13および図14と関連して説明される
本方法およびストラクチャは、サブルーチンおよびその
発呼ルーチンのレジスタ間で同じレジスタの物理的共有
が行なわれる従来の手法と相当に異なる。物理的共有の
ため、サブルーチンにより使用のために利用できるレジ
スタの数が制限されるから、レジスタを主メモリに格納
するためにより多くのシステムオーバーヘッドコストが
要求される。例えば、Communications
of the ACM、1985年1月発行、Vol.
28、No.1、P.8〜21記載のDavid A.
Patlersonの「Reduced Instru
ction Set Compaters」なる論文に
記載されるMIPS法参照。その文献においては、最初
の16のレジスタは、サブルーチンにより単独に使用さ
れる局部的レジスタであり、次の8個のレジスタ(レジ
スタ16〜23)は発呼ルーチンおよびサブルーチン間
で共有され、最後の8個のレジスタ(レジスタ24〜3
1)は広域(または主)プロブラムおよびサブルーチン
間で共有される。明らかなように、サブルーチンにより
アクセスし得る32のレジスタのうち、16のみがプロ
グラムの処理においてサブルーチンによる使用のために
専用される。複雑なサブルーチンの処理においては、サ
ブルーチンに専用化されている限定された数のレジスタ
では、一般にサブルーチンの処理に十分とはいえない。
データのシャフリング(中間のデータのメモリへの記憶
を伴なう)が行なわれなければならず、そしてこれは、
ルーチンの処理において相当のオーバーヘッドコストを
もたらす。
【0113】本発明の教示によれば、コンパイル時に起
こることが分かっているレベル間の相対切替えは、図4
(SCSMデータ)に示されるごとくレジスタ識別情報
に必要な情報を加え、種々のレベル間において命令を適
当にマッピングすることにより特定される。それゆえ、
完全に独立の1組のレジスタが、発呼ルーチンおよび各
レベルのサブルーチンに対して利用可能となる。発呼ル
ーチンは、それ自身の完全な1組のレジスタにアクセス
することに加えて、前述のごとく、命令に加えられる上
述のスタティックSCSMマッピングコードを使って、
より高次の1組のレジスタに直接アクセスすることもで
きる。従来技術の手法で特に見られるような、サブルー
チンに利用可能なレジスタセットのサイズの低減は文字
通り起こらない。さらに、SCSM情報用のマッピング
コードは、任意の数の所望のレベルにアクセスするに十
分の長さのフィールドとし得る。例えば、1実施例にお
いて、発呼ルーチンは、3ビットのフィールドでそれ自
身のレジスタに加えて7つのより高次のレベルにアクセ
スできる。本発明は、任意の特定の数のレベルに限定さ
れるものでもなく、1つのレベル内の特定数のレジスタ
に限定されるものでもない。本発明の教示によると、図
14に示されるマッピングは、論理的マッピングであ
り、従来形式の物理的マッピングではない。例えば、発
呼ルーチンレベル、被呼レベルおよび広域レベルのごと
き3つのレベルは3ビットマップを必要とする。レベル
の相対的識別は、スタティックSCSMの2ビットワー
ドにより、例えば発呼ルーチンは(00)により、副次
的なレベルは(01)により、広域レベルは(11)に
より特定できる。このようにして、各使用者のプログラ
ムは分析され、スタティックSCSM相対手順レベル情
報(やはり窓コードと指称される)が、使用者プログラ
ムを特定のLRDに発する前に命令に加えられる。一度
使用者が特定のLRDに割り当てられると、スタティッ
クSCSMレベル情報を使用して、LRD依存性のダイ
ナミックSCSM情報を発生し、これが必要に応じて加
えられる。
【0114】2.ハードウエアの詳細な説明 図6に図示されるように、本発明のTDAシステム60
0は、メモリ610と複数の論理資源ドライバ(LR
D)620と複数のプロセッサ要素(エレメント)(P
E)640と複数の共有コンテクスト記憶ファイル66
0とから構成される。以下に続く詳細な説明は、TOL
Lソフトウエア出力はこのハードウエアへロードされる
ので、論理資源ドライバから開始される。 a.論理資源ドライバ(LRDs)
【0115】特定の論理資源ドライバ(LRD)の詳細
は図15に示される。図6に図示されるように、各論理
資源ドライバ620は、一側でLRD−メモリネットワ
ーク630へまた他側でPE−LRDネットワーク65
0へ相互接続される。もし、本発明がSIMDマシンで
あるとすると、唯一つのLRDが用意されそして唯一つ
のコンテクストファイルが用意される。MIMD能力に
対しては、図6に例示される実施例において、“n”人
までのユーザ(使用者)が受入れ可能なように、一つの
LRDと一つのコンテクストファイルとが各ユーザのた
めに用意される。
【0116】論理資源ドライバ620は、データキャッ
シュ部1500と命令選択部1510とから構成され
る。命令選択部では、以下の要素が相互接続される。命
令キャッシュアドレス変換ユニット(ATU)1512
がバス1514を通じてLRD−メモリネットワーク6
30へ相互接続される。命令キャッシュATU1512
はさらにバス1516を通じて命令キャッシュ制御回路
1518へ相互接続される。命令キャッシュ制御回路1
518は線路1520を通じて一連のキャッシュ区分1
522a,1522b,1522cおよび1522dへ
相互接続される。各キャッシュ区分はそれぞれバス15
24a,1524b,1524cおよび1524dを通
じて、LRD−メモリネットワーク630へ接続され
る。各キャッシュ区分回路はさらに線1536a,15
36b,1536cおよび1536dを通じてプロセッ
サ命令キュー(PIQ)バスインターフェースユニット
1544へ相互接続される。PIQバスインターフェー
スユニット1544は線1546を通じて分岐実行ユニ
ット(BEU)1548へ接続され、分岐実行ユニット
1548は引き続き線1550を通じて、PE−コンテ
クストファイルネットワーク670へ接続される。PI
Qバスインターフェースユニット1544はさらに線1
552a,1552b,1552cおよび1552dを
通じて、プロセッサ命令キュー(PIQ)バッファユニ
ット1560へ接続され、プロセッサ命令キュー(PI
Q)バッファユニット1560は引き続き線1562a
〜dを通じてプロセッサ命令キュー(PIQ)プロセッ
サ割当回路1570へ接続される。PIQプロセッサ割
当回路1570はつぎに線1572a〜dを通じてPE
−LRDネットワーク650へしたがってプロセッサ要
素640へ接続される。
【0117】データキャッシュ部1500では、データ
キャッシュATU1580がバス1582を通じてLR
D−メモリネットワーク630へ相互接続されさらにバ
ス1584を通じてデータキャッシュ制御回路1586
へそして線1588を通じてデータキャッシュ相互接続
ネットワーク1590へ相互接続される。データキャッ
シュ制御回路1586はまた線1593を通じてデータ
キャッシュ区分回路1592a〜dへ相互接続される。
データキャッシュ区分回路はつぎに線1594a〜dを
通じてLRD−メモリネットワーク630へ相互接続さ
れる。さらに、データキャッシュ区分回路1592は線
路1596a〜dを通じてデータキャッシュ相互接続ネ
ットワーク1590へ相互接続される。最後に、データ
キャッシュ相互接続ネットワーク1590は線路159
8a〜dを通じてPE−LRDネットワーク650へそ
れゆえプロセッサ要素640へ相互接続される。
【0118】動作において、各論理資源ドライバ(LR
D)620は、データキャッシュ部1500と命令選択
部1510との二つの部分を有する。データキャッシュ
部1500は、プロセッサ要素640とメモリ610と
の間で高速データバッファとして振る舞う。単位時間あ
たり満足されねばならないメモリ数要求により、データ
キャッシュ1500はインタリーブされる。プロセッサ
要素640によりメモリへ行なわれるすべてのデータ要
求が、データキャッシュ相互接続ネットワーク1590
に発行(issue)せられそしてデータキャッシュ1592
により捕捉される。データ要求は、プロセッサにより実
行される各命令へLRDにより付加される動的SCSM
情報の一部であるコンテクスト識別子を使用して、デー
タキャッシュ相互接続ネットワーク1590により適当
なデータキャッシュ1592へ送られる。所望されるデ
ータのアドレスは、データがキャッシュ区分のどこにあ
るかを決める。もし要求されるデータが存在する(すな
わち、データキャッシュヒットが生ずる)ならば、デー
タは要求しているプロセッサ要素640へ送り返され
る。
【0119】もし 要求されるデータがデータキャッシ
ュにないならば、キャッシュ1592へ付加されるアド
レスは、システムアドレスへ変換されるべきよう、デー
タキャッシュATU1580へ送られる。システムアド
レスはつぎにメモリへ発行される。応答して、メモリか
らのデータのブロック(キャッシュラインまたはブロッ
ク)がデータキャッシュ制御1586の制御下でキャッ
シュ区分回路1592へ付与される。このキャッシュブ
ロックにある要求されるデータはつぎにデータキャッシ
ュ相互接続ネットワーク1590を通じて、要求してい
るプロセッサ要素640へ送られる。これは単に一つの
可能な構成であることが明瞭に理解されるべきである。
データキャッシュ部は従来の構成のものでありそして可
能な種々の実施が当業者には実現可能である。データキ
ャッシュは、標準の機能および構成のものであるので、
これ以上言及しない。
【0120】LRDの命令選択部1510は、命令キャ
ッシングと命令キューイングと分岐実行との3つの主要
な機能を有する。命令選択部1510の命令キャッシュ
部のシステム機能は、キャッシング機構の標準的ないず
れのものともされる。それは、プロセッサとメモリとの
間で、高速命令バッファとして振る舞う。しかし、本発
明は、この機能を実現するのに、独特の方法および装置
形態を提供する。
【0121】命令部1510の一つの目的は、メモリか
ら複数の実行セットを受容し、実行セットをキャッシュ
1522へ入れそして必要時供給式でセット内の命令を
プロセッサ要素640へ供給することである。システム
は一般に独立の複数のプロセッサ要素640を包含する
ので、命令キャッシュに対する要求は、同時実行可能な
一群の命令に対するものである。再び、単位時間あたり
満足されねばならない複数の要求により、命令キャッシ
ュはインタリーブされる。グループ(群)サイズは、無
からユーザに利用可能なプロセッサ数へ範囲がおよぶ。
グループはパケットと名付けられるが、これは、命令が
連続的な仕方で記憶されることを必ずしも意味しない。
命令は、それらの命令発火時間(IFT)に基づいて、
キャッシュから取り出される。次命令発火時間レジスタ
は、取り出されるべき命令の次パケットの発火時間を包
含する。このレジスタは、LRDの分岐実行ユニット1
548によりロードされならびに命令取り出しが完了し
たときキャッシュ制御ユニット1518によりインクリ
メント可能である。
【0122】次IFTレジスタ(NIFTR)は、コン
テクスト制御ユニット1518および分岐実行ユニット
からアクセス可能な記憶レジスタである。その簡単な機
能により、それは明示しない。技術的に、それは命令キ
ャッシュ制御ユニット1518の一部でありそしてさら
に制御ユニット1660に埋め込まれる(図16)。こ
このキーポイントは、NIFTRは、インクリメントま
たはロードが可能な単なる記憶レジスタであることであ
る。
【0123】命令キャッシュ選択部1510はバス15
24を通じてメモリから実行セットの命令を受容しそし
てラウンドロビン式に、命令語を各キャッシュ区分15
22a〜dに入れる。別言すれば、実行セットの命令
は、第1命令がキャッシュ区分1522aにまた第2命
令がキャッシュ区分1522bに第3命令がキャッシュ
区分1522cに第4命令がキャッシュ区分1522d
に供給されるよう指示される。第5命令は次に、キャッ
シュ区分1522aへ指示され、そして実行セットのす
べての命令がキャッシュ区分回路へ供給されるまで続
く。
【0124】キャッシュ区分へ供給されるすべてのデー
タがキャッシュに必ずしも記憶されるとは限らない。説
明されるように、実行セットヘッダおよびトレーラは記
憶されなくともよい。各キャッシュ区分は、独特の識別
子(タグと名付けられる)を、そのキャッシュ区分に記
憶されるべきすべての情報に付加する。識別子は、キャ
ッシュから得られる情報が実際に所望される情報である
ことを確認するのに使用される。
【0125】複数命令の一パケットが要求されるとき、
各キャッシュ区分は、要求されるパケットのメンバーで
ある命令を包含するかどうかを確認する。もし、キャッ
シュ区分のいずれも、要求されるパケットのメンバであ
る命令を包含しない(すなわち、ミスが生ずる)なら
ば、要求されるパケットを包含する実行セットは、デー
タキャッシュミスに類似の仕方で、メモリから要求され
る。
【0126】もし、ヒットが生ずる(すなわち、キャッ
シュ区分1522の少なくとも一つが要求されるパケッ
トからの命令を包含する)ならば、キャッシュ区分は任
意の適当な動的SCSM情報を命令に付加する。各命令
に付加される動的SCSM情報はマルチユーザ応用に重
要である。動的に付加されるSCSM情報は、ある所与
のユーザに割り当てられるコンテクストファイル(図6
参照)を識別する。それゆえ、本発明の教示によって、
システム600は、マスタプロセッサまたはメモリへの
アクセスを必要とすることなく、多くのユーザコンテク
ストファイル間の遅延自由切換えが可能である。
【0127】命令はつぎに、LRD620のPIQバス
インターフェースユニット1544ヘ供給され、ここ
で、それは、例示の実施例でTOLLソフトウエアが命
令に付加されていた拡張知能に包含される論理プロセッ
サ番号(LPN)に応じて適当なPIQバッファ156
0へ送られる。PIQバッファユニット1560の命令
は、実プロセッサ要素640への割当てのために、バッ
ファされる。プロセッサ割当てはPIQプロセッサ割当
てユニット1570により行なわれる。物理的プロセッ
サ要素の割当ては、現在利用可能なプロセッサの数およ
び割当てられるべき利用できる命令数に基づいて行なわ
れる。これらの数は動的である。選択プロセスは以下の
通りである。
【0128】図15の命令キャッシュ制御1518およ
び各キャッシュ区分1522の詳細は図16に示されて
いる。各キャッシュ区分回路1522では、5つの回路
が利用される。第1の回路は、実行セットのヘッダの各
ワードをパス1520bを通じて命令キャッシュコンテ
クスト制御ユニット1660へ送るヘッダ送り回路16
60である。ヘッダ送り回路1660の制御は、パス1
520aを通じてヘッダパス選択回路1602により行
なわれる。ヘッダパス選択回路1602は、制御ユニッ
ト1660から線路1520bを通じて受容されるアド
レスに基づいて、キャッシュ区分で必要とされる数のヘ
ッダ送り装置(header router)1600を選択的に賦活
する。たとえば、もし実行セットが2つのヘッダワード
を有するならば、最初の2つのヘッダ送り回路1600
だけが、ヘッダパス選択回路1602により賦活されそ
れゆえヘッダ情報の2つのワードがバス1520bを通
じて、キャッシュ区分回路1522aおよび1522b
(図示せず)の2つの賦活されるヘッダ送り回路160
0から制御ユニット1660へ供給される。説明したよ
うに、実行セットの連続するワードが連続するキャッシ
ュ区分回路1522へ供給される。
【0129】たとえば、表1のデータは全実行セットを
表示しそして適当なヘッダワードが実行セットの最初に
出現すると仮定する。最先の命令発火時間(IFT)を
もつ命令が最初にリストされそしてある所与のIFTの
間に、最も低い論理プロセッサ番号に関するこれらの命
令が最初にリストされる。表はつぎのように読まれる。
【0130】
【表14】 ヘッダワード1 ヘッダワード2 I0 (T16) (PE0) I1 (T16) (PE1) I4 (T16) (PE2) I2 (T17) (PE0) I5 (T17) (PE1) I3 (T18) (PE0)
【0131】それゆえ、表1の例(すなわち、マトリッ
クスマルチプライ内部ループ)は、それと関連の2つの
ヘッダワードと発火時間(IFT)および論理プロセッ
サ番号(LPN)を画然する拡張情報を持つ。表14に
示されるように、命令は、発火時間に応じて、TOLL
ソフトウエアにより再順序付けられた。それゆえ、表1
4に示される実行セットは、LRD−メモリネットワー
ク630を通じてメモリから供給されるとき、第1のワ
ード(ヘッダワード1)は、区分キャッシュ0により制
御ユニット1660へ送られる。第2のワード(ヘッダ
ワード2)は、区分キャッシュ1(図15)により制御
ユニット1660へ送られる。命令I0が区分キャッシ
ュ2へ、命令I1が区分キャッシュ3へ、命令I2が区
分キャッシュ0へ等々送られる。その結果、キャッシュ
区分1522はここに表15に示されるような命令を包
含する。
【0132】
【表15】 キャッシュ0 キャッシュ1 キャッシュ2 キャッシュ3 I0 I1 I4 I2 I5 I3
【0133】上記の例は、実行セットでただ一つの基本
ブロックをもつにすぎない(すなわち、それは極端に単
純化した例である)ことをはっきりさせることが重要で
ある。現実に、実行セットは複数の基本ブロックを有す
るであろう。
【0134】命令は次に、記憶のため各キャッシュ区分
にあるキャッシュランダムアクセスメモリ(RAM)1
610へ供給される。各命令は、ヘッダ送り装置160
0からバス1602を通じてタグ付加装置(tag attach
er) 回路1604へそして次に線路1606を通じてR
AM1610へ供給される。タグ付加装置回路1604
はタグ生成回路1612の制御下にあり、そして線路1
520cを通じて、これと相互接続される。キャッシュ
RAM1610には、従来のスーパーミニコンピュータ
で見出されるような従来のキャッシュ高速RAMが可能
である。
【0135】タグ生成回路1612は、指定されるRA
M1610での命令の記憶の前に、各命令への付加のた
めに、独特の識別コード(ID)を提供する。キャッシ
ュ回路に記憶される命令へのプロセス識別タグの割当て
は従来のものでありそしてエイリアシング(aliasing)
を回避するよう行なわれる。アラン ジエイ スミス
(Alan J. Smith )によるエイシーエム コンピューテ
ィング サーベイズ(ACM Computing Surveys )第 14
巻、 1982 年9月の“Cache Memories”参照。タグは、
各別の命令およびユーザからそれを唯一つ識別するのに
十分な量の情報を有する。例示の命令はすでにIFTと
LPNとを含むので、後に命令が実行のため検索される
とき、命令は命令の発火時間に基づいて取り出される。
以下の表16に示されるように、拡張情報およびハード
ウエアタグを含む各命令は上記の例について表示のよう
に記憶される。
【0136】
【表16】
【0137】先に説明されたように、キャッシュ区分回
路1522の目的は、遅い主メモリと速いプロセッサ要
素640との間に高速バッファを提供することである。
通常、キャッシュRAM1610は、高速アクセスが可
能な高速メモリである。もし、RAM1610が真の連
想メモリであるならば、表16に明示されるように、各
RAM1610は、命令発火時間(IFT)に基づいて
アドレス可能である。現在、この種の連想メモリは経済
的に妥当でなくまたキャッシュアドレス変換回路162
0へのIFTが利用されねばならない。この種の回路
は、設計が従来のものでありそしてバス1520dを通
じて、各RAMのアドレッシングを制御する。回路16
20の目的は、命令発火時間の与えられる所望される命
令のRAMアドレスを生成することである。それゆえ、
命令発火時間T16について、表16に示されるよう
に、キャッシュ0とキャッシュ2とキャッシュ3とは、
それぞれ命令I4とI0とI1とを発生しよう。
【0138】キャッシュRAM1610がアドレスされ
るとき、特定の発火時間に関連されるこれらの命令は、
線路1624を通じてタグ比較および特権検査回路16
30へ供給される。タグ比較および特権検査回路163
0の目的は、適当な命令が供給されたことを確認するた
めに、ハードウエアタグ(ID)を発生されるタグと比
較することである。参照ないし基準タグは、線路152
0eを通じてタグ比較および特権検査回路1630へ相
互接続される別のタグ生成回路1632を通じて発生さ
れる。特権検査がまた、命令により要求される動作が
(例えばシステムプログラム、アプリーケーションプロ
グラムなど)プロセスの所与の特権状態(ステータス)
が許可されるのを確認するのに、供給される命令でも遂
行される。これは、プロセッシングステータスの複数レ
ベルをサポートするコンピュータプロセッサにより行な
われる従来の検査である。ヒット/ミス回路1640
が、特定の命令フェッチ(取出し)要求に応答して、ど
のRAM1610が適当な命令をPIQバスインターフ
ェースユニット1544へ供給したかを決定する。
【0139】たとえば、表16に振り返ってみると、も
しRAM1610が、命令発火時間T16について、回
路1620によりアドレスされるならば、キャッシュ0
とキャッシュ2とキャッシュ3は命令に応答して、これ
らのキャッシュ区分でヒット指示を構成しよう。キャッ
シュ1は応答せずそしてミス指示を構成しそしてこれは
線1520gを通じて回路1640により決定されよ
う。こうして、命令発火時間T16について各命令がバ
ス1632を通じて、もしあれば動的SCSM情報がS
CSM付加装置ハードウエア1650により命令に付加
されるSCSM付加装置1650へ供給される。例え
ば、ハードウエア1650が(相対値である)静的SC
SM手続レベル情報を実手続レベル値と置換できる。実
手続レベル値は手続レベルカウンタデータおよび静的S
CSM情報から発生される。
【0140】各発火時間に関連される命令のすべてが、
RAM1610から読み取られとき、ヒットおよびミス
回路1640は線路1646を通じて、命令キャッシュ
制御ユニット1660にこの情報を伝達する。命令キャ
ッシュコンテクスト制御ユニット1660は、命令発火
時間を次の値にインクリメントする命令キャッシュ制御
1518の一部である次命令発火時間レジスタを包含す
る。それゆえ、例では、命令発火時間T16に関連され
るすべての命令の読み取りの完了にて、命令キャッシュ
コンテクスト制御ユニット1660は次発火時間T17
へインクリメントを行ないそしてこの情報を線路166
4を通じてアクセス決定(resolution)回路1670へ
また線路1520fを通じてタグ比較および特権検査回
路1630へ供給する。またTOLLソフトウエアによ
り感知される動作依存状態によっては有効命令をもたな
い発火時間があってもよいことに注意されたい。この場
合には、キャッシュからはなんの命令もフェッチされず
またPIQインターフェースへ伝達されないであろう。
【0141】アクセス決定回路1670は、どの回路が
命令キャッシュRAM1610へのアクセスを有するか
を調整する。通常、これらのRAMは、各クロックサイ
クルで単一の要求だけを満足させることができる。RA
Mへ一度に二つの要求があることがあるので、いずれの
回路がアクセスを獲得するかを決めるために調停方法が
実行されねばならない。これはキャッシュメモリの設計
での従来の問題であり、アクセス決定回路は、この分野
でよく知られている優先順位問題を解決する。
【0142】本発明は、数人のユーザを支援できそして
できれば時間と空間の両方で同時に数人のユーザを支援
できるのがよい。以前の従来技術の方法(CDC、IB
Mなど)では、マルチユーザ式支援が単に一または複数
のプロセッサを時分割することによって実現されてい
た。別言すれば、プロセッサは時間にて共有されてい
た。このシステムでは、マルチユーザ式支援が、複数の
プロセッサエレメントで時間を与えられる各ユーザへの
LRDの割当てにより(空間にて)実現される。こうし
て、プロセッサエレメントの共有に対する空間的態様が
ある。マシンのオペレーティングシステムは時分割され
る仕方で同様のLRDに割り当てられるこれらのユーザ
を取り扱い、それにより、時間的次元をプロセッサの共
有に付加する。マルチユーザ式支援が複数のLRDと複
数のプロセッサエレメントの使用とレジスタファイルお
よび条件コード記憶をサポートする複数のコンテクスト
ファイル660とにより実現される。数人のユーザが同
時にプロセッサエレメントで実行してもよいとき、追加
の情報のピース(片)が、命令ソースおよびそれが利用
可能ないずれの資源をも唯一つ識別するため、その実行
の前に、各命令に付加されねばならない。例えば、レジ
スタ識別子がサブルーチン手続レベルの絶対値とコンテ
クスト識別子ならびに実レジスタ番号を包含しなければ
ならない。メモリアドレスもまた、命令がそれからLR
D−メモリ相互接続ネットワークを通じて適当なデータ
キャッシュへ適当に送られるべく発行(issue)されたと
ころのLRD識別子を包含しなければならない。追加お
よび要求される情報は、静的および動的構成成分の二つ
の成分を備え、そして情報は、「共有コンテクストスト
ーレッジマッピング」(SCSM)と称される。静的情
報は、コンパイラ出力から生じ、TOLLソフトウエア
はコンパイラ生成命令ストリームから情報を収集し、そ
してレジスタ情報を、命令がLRDにより受容されるま
えに、命令に付加する。
【0143】動的情報は、プロセッサへの命令の発生の
まえにLRDにより命令にハードウエア付加される。こ
の情報は、命令を発生するLRDに対応するコンテクス
ト/LRD識別子と命令の現在手続レベルの絶対値と現
在の命令ストリームのプロセス識別子と好ましくは通常
コンテクスト自由でないプロセッサを有するシステムの
プロセッサに包含されるであろう命令ステータス情報と
から構成される。この後の情報は、誤りマスクと浮動小
数点フォーマットモードと丸めモードなどから構成され
よう。
【0144】図16の回路の動作において、一またはそ
れ以上の実行セットが命令キャッシュ回路へ供給され
る。各セットごとのヘッダ情報は一またはそれ以上の連
続するキャッシュパーティッション(区分)へ供給され
そしてコンテクスト制御ユニット1660へ送られる。
実行セットの命令は次に、ラウンドロビン式に個々に各
連続するキャッシュパーティッションユニット1522
へ送られる。ハードウエア識別タグが、各命令に付加さ
れそして次に命令はRAM1610に記憶される。先に
説明したように、各実行セットは、命令キャッシュ不履
行(デフォールト)を最小限にするよう十分な長さのも
のでありそしてRAM1610は実行セットを記憶する
のに十分な大きさのものである。プロセッサエレメント
が命令を要求するとき、適当なIFTと整合する有効命
令の数およびキャッシュロケーション(場所)が決めら
れる。RAM1610に記憶される命令は読み出され、
識別タグは確認され、特権ステータスが検査される。命
令は、次にPIQバスインターフェースユニット154
4へ供給される。PIQバスインターフェースユニット
1544へ供給される各命令は、表17に示されるよう
に、識別子タグ(ID)およびハードウエア付加SCS
M情報を含む。
【0145】
【表17】
【0146】もし、命令がRAM1610に記憶されて
いないならば、キャッシュミスが生じ、そして命令を包
含する新しい実行セットが線路1523を通じて主メモ
リから読み取られる。
【0147】図17ではPIQバスインターフェースユ
ニット1544およびPIQバッファユニット1560
の詳細が示されている。図17を参照すると、PIQバ
スインターフェースユニット1544は上の表17に示
されているような命令を線路1536を通じて受容す
る。正しい発火時間を有する命令を包含するこれらのサ
ーチないし探索タグハードウエア1702が線路154
9を通じて現在の命令発火時間の値へアクセスできそし
てキャッシュメモリ1522を検索し、正しい発火時間
を有する命令を包含するこれらのレジスタのアドレスを
決める。PIQバスインターフェース1544への供給
のため、どの命令が次に選択すべきかを命令キャッシュ
制御回路系により決定するために、検索タグハードウエ
ア1702は次に、これらのメモリロケーションのアド
レスを命令キャッシュ制御回路系1518に対して利用
可能にする。
【0148】これらの命令は、並列にバスインタフェー
スユニット(BIU)1700の2次元配列にアクセス
する。バスインターフェースユニット1700は、接続
1710および1720によりフルアクセス非ブロッキ
ングネットワークで相互接続され、そして線路1552
を通じてPIQバッファユニット1560へ接続する。
各バスインターフェースユニット(BIU)1700
は、TI 74L85の4ビット大きさのコンパレータ
(テキサス州75265、ダラス、ピーオーボックス2
25012のテキサスインスツルメント社)から構成さ
れる。命令発火時間T16に対して、マトリックスマル
チプライ例において、キャッシュ0が命令I4を包含し
そしてキャッシュ3(図17のキャッシュnに対応す
る)が命令I1を包含する。命令I4に割り当てられる
論理プロセッサ番号はPE2である。論理プロセッサ番
号PE2はプロセッサ命令キュー2(これは、命令を包
含するキャッシュ0ユニットに対応するBIU3であ
る)のため、バスインターフェースユニット1700の
選択(SEL)信号が賦活される。この例では、BIU
3だけが賦活されそしてこのBIU3行および列に対し
残りのバスインターフェースユニットは賦活されない。
同様に、キャッシュ3(図17のキャッシュn)に対
し、対応するBIU2は、プロセッサ命令キュー1に対
して賦活される。
【0149】PIQバッファユニット1560は、表1
8に示されるファーストインファーストアウト(FIF
O)方法でPIQバスインターフェースユニット154
4から受容される命令を記憶する複数のプロセッサ命令
キュー1730から構成される。
【0150】
【表18】
【0151】命令キューイング機能を実行するのに加え
て、PIQ1730はまた、プロセッサエレメント64
0へ発行される各命令の実行ステータスをトラックを追
跡する。理想的なシステムでは、命令は、命令が実行を
完了したかどうかについて顧慮することなく、クロック
サイクルごとにプロセッサエレメントへ発行できよう。
しかし、システムのプロセッサエレメント640は、例
えばデータキャッシュミスなど例外的条件の発生により
クロックサイクルごとに命令を完了できないこともあろ
う。その結果、各PIQ1730は、まだ実行状態のプ
ロセッサエレメント640へ発行されたすべての命令を
追跡する。この追跡の主要な結果は、PIQ1730が
LRD620のため命令クロッキング機能を実行するこ
とである。別言するとPIQ1730は、直線コード
(straightline code)を実行しているとき、次の発火時
間レジスタが更新されるときを決定する。これはつぎ
に、新しい命令取出しサイクルを開始する。
【0152】命令クロッキングが、所与のPIQにより
発行される命令が実行されたか、またはパイプライン構
成ないし結合されるPEの場合には、次のステージ(段
階)へ進行したかを特定することを、各PIQ1730
に命令済み信号を形成させることにより実現される。こ
れは、次に、このLRDからのすべての別のPIQ命令
済み信号と組み合されそして次発火時間レジスタをイン
クリメントするインクリメント信号をゲートするのに使
用される。「済み」信号は、線路1564を通じて、命
令キャッシュ制御1518へ供給される。
【0153】図18を参照すると、PIQプロセッサ割
当て回路1570は、PE−LRDネットワーク650
へそしてつぎに種々のプロセッサエレメント640へフ
ルアクセススイッチとして相互接続されるネットワーク
インターフェースユニット(NIU)1800の2次元
配列を包含する。各ネットワークインターフェースユニ
ット(NIU)1800は図17のバスインターフェー
スユニット(BIU)1700と同様の回路系から構成
される。通常の動作において、プロセッサ命令キュー#
0(PIQ0)は、キュー#0に対応する列に関連され
るNIU0を賦活することにより直接プロセッサエレメ
ント0をアクセスでき、その列および行に対しPIQプ
ロセッサ整列回路の残りのネットワークインターフェー
スユニットNIU0、NIU1、NIU2、NIU3は
非賦活される。同様に、プロセッサ命令キュー#3(P
IQ3)は通常、キュー#3に関連の列のNIU3を賦
活することによりプロセッサエレメント3をアクセス
し、その列および行の残りのNIU0、NIU1、NI
U2およびNIU3は賦活されない。ネットワークイン
ターフェースユニット1800の賦活は、命令選択およ
び割当て回路1810の制御下にある。
【0154】ユニット1810が、ユニット1810が
メンバであるLRD内にPIQ1730から線路181
1を通じてまた線路1813を通じて(別のLRDの)
別の全てのユニット1810からそしてネットワーク6
50を通じてプロセッサエレメント640から信号を受
容する。各PIQ1730は、“I have an instructio
n that is ready to be assigned to a processor.”に
対応する信号をユニット1810に供給する。別のPI
Qバッファユニットは、このユニット1810およびす
べての別のユニット1810に、“My PIQ1730( #x) h
as an instruction ready to be assigned to a proces
sor.”に対応する信号を供給する。最後に、プロセッサ
エレメントはシステムで各ユニット1810に、“I ca
n accepta new instruction .”に対応する信号を供給
する。
【0155】一LRDのユニット1810は、線路18
11を通じてそのLRDの複数のPIQ1730へまた
線路1860を通じてそのLRDのネットワークインタ
ーフェースユニット1800へそして線路1813を通
じてシステムの別のLRDの別のユニット1810ヘ信
号を伝達する。ユニット1810は、“ Gate your ins
truction onto the PE-LRD interface bus (650) . ”
に対応する信号を各PIQ1730へ伝達する。ユニッ
トは、選択信号をネットワークインターフェースユニッ
ト1800へ伝達する。最後に、ユニットは“ I have
used processor element #x . ”に対応する信号を、
使用されつつある各プロセッサに対しシステムの各別の
ユニット1810へ伝達する。
【0156】さらに、各LRDの各ユニット1810
は、LRDの優先順位に対応する優先順位をそれに関連
して有する。これは、複数LRDを、ゼロからシステム
のLRDの数へと上行する順序に並べるのに使用され
る。プロセッサエレメントを割当てるのに使用される使
用される方法は次の通りである。複数LRDが並べられ
るとすると、多くの割当て方式が可能である(たとえ
ば、ラウンドロビン、ファーストカムファーストサーブ
ド(first come first served)、タイムスライスな
ど)。しかし、これらは、実施細目でありまた本発明の
教示に基づくこの装置の機能に影響を与えるものではな
い。
【0157】現在最も高い優先順位をもつLRDを考察
する。このLRDは、それが要求する全てのプロセッサ
エレメントを得、そして実行されるべき用意の整った命
令を利用可能なプロセッサエレメントに割り当てる。も
し、プロセッサエレメントがコンテクストフリーである
ならば、どのような仕方でも割り当てることができる。
しかし一般に、すべてのプロセッサが正しく機能してい
ると仮定するならば、もちろんプロセッサエレメント#
0が利用可能であるとして、PIQ#0からの命令がプ
ロセッサエレメント#0へ送られる。
【0158】最も高い優先順位のLRDでユニット18
10は次にこの情報をシステムの別のすべてのユニット
1810へ伝達する。オープン状態のいずれのプロセッ
サも次に、実行可能な命令と一緒に次に最も高い優先順
位のLRDにより利用される。この割当ては、全てのプ
ロセッサが割り当てられるまで継続する。それゆえ、プ
ロセッサはデイジーチェイン態様の優先順位に基づいて
割り当てられる。
【0159】もし特定のプロセッサエレメントが、例え
ば、エレメント1が障害を起こしたならば、命令選択割
当てユニット1810は、全てのネットワーク命令ユニ
ットNIU1を非活動化することにより、このプロセッ
サエレメントを非活動化できる。それは次に、例えばプ
ロセッサエレメント2がプロセッサエレメント1に論理
的に割り当てられる全ての命令を受容し、プロセッサエ
レメント3が、プロセッサ2に論理的に割り当てられる
全ての命令を受容するため、ここに割り当てることがで
きるよう(以下同様)、ハードウエアを通じてプロセッ
サエレメントを整理し直しことができる。実際、余分な
プロセッサエレメントおよびネットワークインターフェ
ースユニットが、高い程度の障害許容限界を提供するた
めシステムに用意できる。
【0160】明らかに、これは単に可能な実施の一つで
ある。別の種々の方法もまた実現可能である。
【0161】b.分岐実行ユニット(BEU) 図19を参照すると、分岐実行ユニット(BEU)15
48は、本発明では、各基本ブロックの終了で生ずるす
べての分岐命令の実行に責任のあるユニットである。例
示の実施例では、サポートされる各コンテクストごとに
一つのBEU1548があり、それで、図6を参照し
て、“n”個のサポートされるコンテクストが“n”個
のBEUを必要とする。各BEUは簡単な設計のもので
ありそれゆえ複数のコンテクスト間でBEUを共有する
費用は、各コンテクストにそれ自身のBEUを持たせる
ようにすることよりもより高価であろうから、例示の実
施例は、各サポートされるコンテクストごとに一つのB
EUを使用する。
【0162】BEU1548は、分岐命令がPE640
の外側で実行されること以外は、従来の仕方で分岐を実
行する。BEU1548は、分岐条件を評価し、そし
て、目標アドレスが選択されるとき、このアドレスを生
成しそして次命令取出しレジスタへ直接入れる。目標ア
ドレス生成は、手続呼出しまたは復帰でない無条件およ
び条件分岐については従来のものである。目標アドレス
は、(a)命令から直接または(b)次命令取出しレジ
スタの現在の内容からのオフセットまたは(c)コンテ
クストレジスタファイルの汎用目的レジスタのオフセッ
トから取られる。
【0163】サブルーチンからの復帰分岐が、わずかに
異なる態様で処理される。サブルーチン復帰分岐を理解
するために、サブルーチン呼出し分岐の説明が必要であ
る。分岐が実行されるとき、復帰アドレスが生成されそ
して記憶される。復帰アドレスは通常は、サブルーチン
呼出しに続く命令のアドレスである。復帰アドレスは、
メモリに積重ねて(stack)または分岐実行ユニットに対
して別の記憶場所に記憶される。さらに、サブルーチン
呼出しの実行は手順レベルカウンタをインクリメントす
る。
【0164】サブルーチン分岐からの復帰はまた無条件
分岐である。しかし、命令内に目標アドレスを包含する
のでなく、このタイプの分岐は、先に記憶された復帰ア
ドレスを記憶装置から読み取り、手順レベルカウンタを
デクリメントし、そして次命令取出しレジスタに復帰ア
ドレスをロードする。本開示の残りの部分では、条件分
岐の評価および実行を論述する。開示の技術はまた無条
件分岐にも適用されることに注意されたい。なぜならこ
れらは本質的に、条件が常に満足されている条件分岐で
あるからである。さらに、同様の技術もまたサブルーチ
ン呼出しおよび復帰分岐に適用され、これは上に開示の
追加の種々の機能を遂行する。
【0165】条件分岐を速くするため、条件分岐が取ら
れるか否かの決定は、条件コードの適当な組の分析にの
み依存する。本発明の教示により、条件コードを適当に
処理すること以外、なんらのデータの評価も行なわれな
い。さらに、分岐が使用する条件コードを生成する命令
が、コードをBEU1548ならびに条件コード記憶装
置へ伝達できる。これは、BEUがそれを取出すことが
できる前に、コードが条件コード記憶装置で有効となる
のに必要とされる従来の余分の待ち時間を除去する。
【0166】本発明はまた、プログラム正確さを保証す
るため、遅延分岐動作(branching)の広範な使用をも行
なう。分岐が実行されそしてその効果がシステムを伝達
しているとき、分岐の手順領域内にあるすべての命令
は、表6の例に関連して論述されたように、実行されて
いるかまたは実行されつつあるプロセスにあるはずであ
る。別言すると、(分岐に応答して)次命令ポインタを
変化させることは、分岐の最後の(一時的に実行され
る)命令に続く発火時間を指すために、現在の発火時間
が更新された後で、起こる。それゆえ、表6の例では、
発火時間T17の命令I5が、この基本ブロック対する
最後の発火時間であるT18の完了まで、遅延される。
次基本ブロックに対する命令時間はそれでT19であ
る。
【0167】BEU1548の機能は、4状態式状態マ
シンとして説明できる。 段階1: 命令デコード −動作デコード −遅延フィールドデコード −条件コードアクセスデコード 段階2: 条件コード取出し/受容 段階3: 分岐動作評価 段階4: 次命令取出し ロケーションおよび発火時間更新
【0168】遂行されるべき動作の決定と一緒に、第1
段階はまたBEUによる分岐の受取り後起こる取出し動
作(fetching) がどのくらいの長さ継続できるかをそし
てBEUが条件分岐に対しどのように条件コードにアク
セスするか、すなわちどのように条件コードが受容また
は取出されるかをも決定する。
【0169】図19を参照すると、分岐命令は、バス1
546を通じて、PIQバスインターフェースユニット
1544からBEU1548の命令レジスタ1900へ
供給される。命令レジスタ1900のフィールドは、FE
TCH/ENABLE(取出し/イネーブル),CONDITION CODE AD
DRESS(条件コードアドレス),OP CODE(操作コード),
DELAY FIELD (遅延フィールド)およびTARGET ADDRESS
(目標アドレス)のように指示される。命令レジスタ1
900は、線路1910a〜bを通じて条件コードアク
セスユニット1920へ、線路1910cを通じて評価
ユニット1930へ、線路1910dを通じて遅延ユニ
ット1940へそして線路1910eを通じて次命令イ
ンターフェース1950へ接続される。
【0170】ひとたび、命令がPIQバスインターフェ
ースユニット1544からBEU1548へ発行される
と、命令取出し動作は、遅延フィールドの値が決定され
るまで、停止(ホールドアップ)されねばならない。こ
の値は、BEUにより分岐の受取りに関連して測定され
る。これが段階1である。もし、この分岐と重複可能な
命令がないならば、このフィールド値はゼロである。こ
の場合、命令取出しが、分岐の結果が決定されるまで、
停止される。もしこのフィールドがゼロでないならば、
命令取出しが、このフィールドの値により与えられる多
くの発火時間の間、継続可能である。
【0171】条件コードアクセスユニット1920は、
線路1550を通じてレジスタファイル−PEネットワ
ーク670へまた線路1922を通じて評価ユニット1
930ヘ接続される。段階2動作中、条件コードアクセ
スデコードユニット1920は、条件コードが命令によ
り取り出されねばならないかどうかをまたは分岐条件を
決定する命令が条件コードを供給するかを決定する。条
件分岐を決定する基本ブロックあたり唯一つの命令があ
るので、基本ブロックに対してBEUにより受容される
一つよりも多い条件コードは決してない。その結果、条
件コードがいつ受容されるかの実際のタイミングは重要
ではない。もし、それが分岐よりも早く来るならば、分
岐の実行前の前に他のコードが受容されることはない。
もし、それが遅く来るならば、分岐は待機し、そして受
容されるコードは常に適切なものである。基本ブロック
に対し条件コードは、BEUにより同時にまたは異なる
時間に受容される複数のコードを含むことができること
に注意されたい。
【0172】評価ユニット1930は、線路1932を
通じて次命令インターフェース1950へ接続される。
次命令インターフェース1950は、線路1549を通
じて命令キャッシュ制御回路1518へ、そして線路1
942を通じて遅延ユニット1940へ接続される。そ
して、遅延ユニット1940はまた、線路1549を通
じて命令キャッシュ制御ユニット1518へも接続され
る。
【0173】動作の評価段階中、条件コードは、検査さ
れている条件を表示するブール関数に応じて、組み合わ
される。動作の最終段階では、もし条件分岐が取られな
いないならば、逐次(シーケンシャル)命令ストリーム
の取出しを継続するかまたは、もし、分岐が取られるな
らば、次命令ポインタがロードされる。
【0174】命令ストリームでの分岐の影響は以下のよ
うに説明できる。論述するように、命令が、レジデント
論理プロセッサ番号(LPN)の分析により命令の各P
IQ1730へ送られる。、命令取出しが、分岐に出会
うまで、すなわち、命令がBEU1548の命令レジス
タ1900へ供給されるまで、継続される。この点で、
遅延分岐のない従来のシステムでは、取出しが、分岐命
令の決定が完了するまで停止されよう。例えば、ジェイ
エフ ケー リー(J.F.K. LEE)およびエイジェイ ス
ミス( A. J. Smith )による IEEE Computer Magaz
ine (1984年1月)の“ Branch Prediction S
trategies and Branch Target Buffer Design ”を
参照されたい。遅延分岐動作を包含する本システムで
は、命令が、取出される次命令が実行されるべき基本ブ
ロックの最後の命令であるまで、取出されるべく継続し
なければならない。分岐が実行される時間はそれで、命
令の取出し動作が次命令アドレスを変更する可能性なし
に起こる最後の時間である。こうして、分岐が取り出さ
れるときと分岐の影響が実際に感知されるときとの間の
差は、取出し動作が継続できる追加の発火時間サイクル
の数に対応する。
【0175】この遅延の影響は、BEU1548が、キ
ャッシュコントローラ1518の次命令発火時間レジス
タにアクセスしなければならないことである。さらに、
BEU1548は、命令キャッシュ制御ユニット151
8により遂行される命令取出しプロセスの開始または不
能化(disabling)を制御できる。これらのタスクは、バ
ス1549を通じる信号により達成される。
【0176】動作では、分岐実行ユニット(BEU)1
548は次のように機能する。例えば上の例での命令I
5などの分岐命令は、PIQバスインターフェースユニ
ット1544から命令レジスタ1900へロードされ
る。命令レジスタの内容はそれでBEU1548の以後
の動作を制御する。FETCH-ENABLEフィールドは、条件コ
ードアクセスユニット1920は、CC-ADXフィールドに
記憶されるアドレスに配置される条件コードを検索すべ
きか否か(呼出しFETCH )または条件コードが生成命令
により供給されるかどうかを指示する。
【0177】もし、FETCH が要求されるならば、ユニッ
ト1920は、図20に図示される条件コード記憶装置
2000へアクセスするため、レジスタファイル−PE
ネットワーク670へアクセスする(図6参照)。図2
0を参照すると、各コンテクストファイルに対し条件コ
ード記憶装置2000が、一般化された場合にて図示さ
れている。一組のレジスタCCxyが、手順レベルyに対
し条件コードを記憶するため提供される。それゆえ、条
件コード記憶装置2000は、FETCH 要求に応じて、必
要な条件コードを検索するために、ユニット1920に
よりアクセスされそしてアドレスされる。実条件コード
および条件コードがユニット1920により受容される
ことの指示は、線路1922を通じて評価ユニット19
30へ供給される。評価ユニット1930へ供給される
OPCODEフィールドは、受容される条件コードと共に、分
岐取り信号を線路1932を通じて次命令インターフェ
ース1950へ供給するよう機能する。評価ユニット1
930は、例えばカリフォルニア95035のミルピタ
ス(Milpitas) のマクカーシーブルバード(McCarthy B
lvd.)1551 のLSI Logic Corporation からの標準のゲー
トアレイなどから構成される。
【0178】評価ユニット1930は、条件分岐が取ら
れるか否かを決 定する条件コードセットを受け取り、
そしてOPCODEフィールドの制御のもとで、条件分岐取り
信号を生成するため、ブール関数で条件コードセットを
組み合わせる。
【0179】次命令インターフェース1950は、命令
レジスタ1900のTARGET-ADXフィールドから分岐目標
アドレスをそして線路1932を通じて分岐取り信号を
受け取る。しかし、インターフェース1950は、イネ
ーブル信号が線路1942を通じて遅延ユニット194
0から受け取られるまで、動作できない。
【0180】遅延ユニット1940は、命令取出し動作
が、BEUによる分岐命令の受取りの後、継続できる時
間の量をを決定する。先に、分岐命令がBEUにより受
け取られるとき、命令取出し動作が、一よりも多いサイ
クルの間継続しその後停止することを説明した。このサ
イクル中取り出される命令は、遅延フィールドの長さが
決定されるまで、PIQバスインターフェースユニット
1544の通過を阻止される。たとえば、もし遅延フィ
ールドがゼロである(分岐が即座に実行されることを意
味する)ならば、これらの命令は、それらが取り出され
るべき正しい命令であるかどうかが決定されるまで、P
IQバスバッファユニットへは依然として与えてはなら
ない。もし、遅延フィールドがゼロでないならば、遅延
値がゼロであるべく決定されたらすぐにPIQバッファ
ユニットへゲートされるであろう。遅延の長さは、命令
レジスタ1900のDELAY フィールドから得られる。遅
延ユニットは、レジスタ1900から遅延長さをそして
線路1549を通じてコンテクスト制御1518からク
ロックインパルスを受容する。遅延ユニット1940
は、各クロックパルスで遅延の値をデクリメントしそし
て完全にデクリメントされるとき、インターフェースユ
ニット1950はイネーブルとなる。
【0181】それゆえ、表6の論述では、命令I5が発
火時間T17を割り当てられるが、発火時間T18まで
遅延される。遅延時間中、インターフェース1950
は、命令の取り出しを継続して現在の基本ブロックを終
了するため、線路1549を通じて命令キャッシュ制御
1518に合図する。イネーブルされるとき、インター
フェースユニット1950は、次基本ブロックに対し、
次アドレス(すなわち分岐実行アドレス)を、線路15
49を通じて命令キャッシュ制御1518へ供給する。
【0182】要約するとそして表16の例に対し、分岐
命令I5は時間T17中命令レジスタ1900へロード
される。しかし、最後の命令I3が時間T18中に処理
されるまで分岐命令は実行できない場合、一つの発火時
間の遅延(DELAY)もまた命令レジスタ1900へロード
される。それゆえ、たとえ命令I5がレジスタ1900
にロードされても、TARGET ADDRESSに包含される次基本
ブロックに対し分岐アドレスは時間T18の完了までは
有効とはならない。話が変わって次命令インターフェー
ス1950は、基本ブロックで命令のストリームの処理
を継続するためキャッシュ制御1518へ命令を発行す
る。遅延の終結により、インターフェース1950はイ
ネーブルされ、そして次基本ブロックのアドレスを命令
キャッシュ制御1518へ供給することにより、分岐は
実行される。
【0183】遅延フィールドは、単一サイクルコンテク
ストフリーPEでのこの分岐により支配される基本ブロ
ックのすべての命令の実行を保証するのに使用されるこ
とに注意されたい。PEがパイプライン構成されると
き、小さな複雑さに遭遇する。この場合、ちょうど実行
されている基本ブロックからの命令と実行されるべき基
本ブロックからの命令との間に、データ依存性がある。
TOLLソフトウエアは、次基本ブロックがこの基本ブ
ロックからの分岐によってだけ目標とされるとき、これ
らの依存性を分析できる。もし、次基本ブロックが一よ
りも多い分岐により目標とされるならば、TOLLソフ
トウエアは、種々の分岐可能性を分解できずそしてパイ
プラインに発火させるので、なんらデータ依存性は破ら
れない。パイプラインが発火するのを許容するための一
つの機構が、NO-OP(no operation,ノーオペレーション
)命令を命令ストリームへ挿入することである。代替え
方法では、エクストラフィールドを分岐命令に用意し、
この命令で、エクストラフィールドのデータにより決定
される時間の間プロセッサエレメントへの新命令の供給
を禁止する。c.プロセッサエレメント(PE)
【0184】マトリックスマルチプライ例に関する論述
では、単一サイクル(シングルサイクル)プロセッサエ
レメントを仮定した。別言すると、命令がプロセッサエ
レメントへ発行され、そしてプロセッサエレメントは、
次命令へ進行するまえに、命令を完全に実行する。しか
し、より大きな性能が、パイプライン構成されるプロセ
ッサエレメントを採用することにより得られる。それに
より、TOLLソフトウエアにより遂行されるタスクは
わずかに変化する。特に、プロセッサエレメントの割当
ては、先の例で示されるものよりも複雑であり、パイプ
ラインプロセッサを特長付けるハザード(偶発的事象)
は、TOLLソフトウエアにより取り扱われねばならな
い。パイプライン構成されるいずれのプロセッサにも存
在するハザードは、より高度に複雑な一組のデータ依存
性としてそれらハザード自体が現れる。これは、従来技
術に精通したものにより、TOLLソフトウエアに符合
化できる。例えば、スタンフォード大学のティーケーア
ールグロス(T. K. R.Gross )による学位論文“ Code
Optimization of Pipeline Constraints ”(198
3)を参照されたい。
【0185】プロセッサの割当ては、パイプラインの実
施に依存しそしてここで再び従来技術に精通したものに
より遂行できる。キーパラメータが、パイプライン間で
いかにデータが交換されるかを決定する。たとえば、各
パイプラインが、そのステージ間でフィードバックパス
を包含すると仮定する。さらに、パイプラインは、レジ
スタセット660を通じてのみ結果を交換できると仮定
する。複数の命令が、命令ストリームに包含される数組
の依存命令を決めそして次に各特定の集まりを特定のパ
イプラインに割当てることにより、パイプラインへ割り
当てられる。これは、(レジスタセットを経由して)パ
イプライン間で起こらねばならない通信の量をできるだ
け最小なものとし、それゆえ、プログラムの実行時間を
速くする。論理プロセッサ番号の使用は、命令が同様の
パイプラインで実行するのを保証する。
【0186】代替え的に、もしパイプライン間でデータ
を交換するのに利用できるパスがあるならば、依存性の
命令が、単一のパイプラインへ割り当てられるかわり
に、いくつかのパイプラインプロセッサに分配可能であ
る。再び、多重パイプラインの使用および中間結果の共
有を許容するパイプライン間の相互接続ネットワーク
は、命令ストリームに課されるより高度に複雑な一組の
データ依存性としてそれ自身が現れる。パイプライン構
成されるシステムへの本発明の考えの拡張は、当技術に
精通するものの技術の範囲内にあることは明らかであ
る。
【0187】重要なことには、追加のデータ(チェイニ
ング)パスは、本発明のプロセッサエレメントの基本の
コンテクストフリー性を変化しない。すなわち、いずれ
の所与の時間(たとえば、いずれの所与の命令サイクル
の完了)でも、所与のプログラム(すなわち、コンテク
スト)に関連の全プロセス状態は、プロセッサエレメン
トの完全に外側で捕捉される。データチェイニングは、
特定の命令クロックサイクル中、プロセッサエレメント
内に発生されるデータのあるものの一時的反復を生ずる
だけである。
【0188】図21を参照すると、特定のプロセッサエ
レメント640が、4状態式パイプラインプロセッサエ
レメントを有する。例示の実施例に応じてすべてのプロ
セッサエレメント640は同様である。例えば、マイク
ロプロセッサまたは別のパイプラインアーキテクチャー
など従来のいずれのタイプのプロセッサエレメントも本
発明の教示のもとで、使用できないことが深く理解され
るべきである。なぜなら、この種のプロセッサは、それ
らのプロセッサが処理しているプログラムの実質的な状
態情報を保持するからである。しかし、この種のプロセ
ッサは、本発明に必要なタイプのプロセッサをエミュレ
ートまたはシミュレートするよう、ソフトウエアでプロ
グラムできる。プロセッサエレメントの設計は、TOL
Lソフトウエアにより生成される命令セットアーキテク
チャにより決定され、それゆえ、概念的観点から、本発
明の実施に最も依存性の部分である。図21に図示され
る例示の実施例では、各プロセッサエレメントパイプラ
インが、システムの別のプロセッサエレメントから自律
的に動作する。各プロセッサエレメントは同種のもので
あり、そして単独で、すべての計算およびデータメモリ
アクセシング命令を実行できる。計算の実行を行なう場
合では、転送がレジスタからレジスタでありそしてメモ
リインターフェース命令に対しては、転送はメモリから
レジスタへまたはレジスタからメモリである。
【0189】図21を参照すると、例示の実施例のプロ
セッサエレメント640に対する4状態パイプライン
は、4つの別々の、命令レジスタ2100、2110、
2120および2130を含む。各プロセッサエレメン
トはまた、4つの段階(段階1、2140と段階2、2
150と段階3、2160と段階4、2160)をも含
む。第1命令レジスタ2100はネットワークを通じて
PIQプロセッサ割当て回路1570へ接続されそして
その情報をバス2102を通じて受容する。命令レジス
タ2100は次に、命令デコードおよびレジスタ0取出
しおよびレジスタ1取出しのハードウエア機能を含む段
階1の動作を制御する。第1段階2140は、線路21
04を通じて命令レジスタへそして線路2142を通じ
て別の命令レジスタ2110ヘ相互接続される。第1段
階2140はまた、バス2144を通じて第2段階21
50へも接続される。段階1のレジスタ0の取出しおよ
びレジスタ1の取出しは、レジスタファイル660への
アクセスのため、それぞれ、線路2146および線路2
148を通じて、ネットワーク670へ接続される。
【0190】第2命令レジスタ2110はさらに、線路
2112を通じて第3命令レジスタ2120へそして線
路2114を通じて第2段階2150へ相互接続され
る。第2段階2150はまた、バス2152を通じて第
3段階2160へも接続されそして、線路2156を通
じネットワーク670を通じてコンテクストファイル6
60の条件コード記憶装置へ接続される条件コード(C
C)ハードウエアおよびレジスタファイル660へのア
クセスのため、線路2154を通じてネットワーク67
0ヘ相互接続されるメモリ書き込み(MEM WRITE)レジス
タ取出しハードウエアを有する。
【0191】第3命令レジスタ2120は、線路212
2を通じて第4命令レジスタ2130へ相互接続されさ
らに線路2124を通じて第3段階2160へも接続さ
れる。第3段階2160は、バス2162を通じて第4
段階2170へ接続されさらに線路2164を介しネッ
トワーク650を通じてデータキャッシュ相互接続ネッ
トワーク1590へ相互接続される。
【0192】最後に、第4命令レジスタ2130は、線
路2132を通じて第4段階へ相互接続されそして第4
段階は線路2172を通じて接続されるその記憶ハード
ウエア(STORE)出力およびレジスタファイル660への
アクセスのため、線路2174を通じてネットワーク6
70へ接続されるその有効アドレス更新(EFF.ADD.)ハ
ードウエア回路を有する。さらに、第4段階は、線路2
176を介しネットワーク670を通じてコンテクスト
ファイル660の条件コード記憶装置へ接続されるその
条件コード記憶(CC STORE)ハードウエアを有する。
【0193】図21に図示される4段階パイプラインの
動作は、表1の例および各命令に対するプロセッサエレ
メントの動作を説明する表19に包含される情報につい
て論述する。
【0194】
【表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
【0195】命令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段階は開始する。この重複またはパイプリン
グ(pipeling) は従来と同様である。
【0196】命令I2が、レジスタファイル660のレ
ジスタR0およびR1に記憶される情報を取り出し、そ
してそれらを段階1のレジスタREG0およびREG1
へ供給する。内容は、バス2144を介し段階2を通じ
てノーオペレーションとして供給されそしてつぎにバス
2152を通じて段階3へ供給される。二つのレジスタ
の内容と一緒にマルチプライが生じ、結果は、バス21
62を通じて段階4へ供給され、段階4は、次に、線路
2172を介しネットワーク670を通じてレジスタフ
ァイル660のレジスタR2へ結果を記憶する。さら
に、条件コードデータは、コンテクストファイル660
の条件コード記憶装置に線路2176を通じて記憶され
る。
【0197】命令I3が、同様の仕方で、段階4で結果
をレジスタR3に記憶しそしてその命令に対し条件コー
ドデータを更新するため、レジスタR2およびR3での
データの追加を行なう。最後に、命令I4が、レジスタ
R4の内容のデクリメントを遂行する。
【0198】それゆえ、表1の例に応じて、PE0に対
する命令は、次の順序(I0,I2およびI3)でPI
Q0から供給されよう。これらの命令は、次のように、
命令発火時間(T16,T17およびT18)に基づい
て、PE0パイプライン段階を通じて送られよう。
【0199】
【表20】
【0200】表20に例示の計画は、しかし、データチ
ェイニングがパイプラインプロセッサ(自プロセッサ内
データチェイニング)内ならびにパイプラインプロセッ
サ(内部プロセッサデータチェイニング)間に導入され
なければ可能でない。データチェイニングに対する要求
は、命令が、例えば命令発火時間T16により例示され
る単一時間サイクル内でもはや完全に実行しないから、
生ずる。こうして、パイプラインプロセッサに対し、T
OLLソフトウエアは、命令I0およびI1の段階4
(T19)で生ずる記憶の結果が命令I2の段階3(T
19)で掛け(マルチプライ)を遂行するのに必要とさ
れないこと、および、これらのオペランドの取り出し動
作が命令I2の段階1(T17)で通常起こることを認
めなければならない。それゆえ、パイプラインの通常の
動作では、プロセッサPE0およびPE1に対し、レジ
スタR0およびR1からのオペランドデータは、発火時
間T18の終りまで利用できないがそれは、時間T17
で命令I2の段階1により必要とされる。
【0201】表20に例示の計画に応じて動作するため
に、プロセッサの内部およびプロセッサ間の両方にある
追加のデータ(チェイニング)パスがプロセッサに利用
可能とされなければならない。当業者にはよく知られて
いるこれらのパスはデータチェイニングパスである。こ
れらのパスは、図21で、破線2180および2182
として表示されている。したがって、それゆえ、命令間
のデータ依存性の分解およびプログラム実行前のTOL
Lソフトウエアにより遂行されるプロセッサ資源のすべ
てのスケジューリングは、データを、たとえば同じプロ
セッサの一段階または異なるプロセッサの段階などの出
力から直接利用可能にするのが必要とされるとき、デー
タチェイニングの利用性を考慮する。このデータチェイ
ニング能力は当業者にはよく知られており、そして、パ
イプラインプロセッサの各段階を、事実上種々の資源要
求と、命令が或るパイプラインを通じて開始されるとき
好ましくはそのプロセッシング段階のすべてを通じその
同じパイプラインで継続するというある種の依存性とを
もつ分離プロセッサであると認めることにより、TOL
Lソフトウエア分析で容易に実施できる。これを考慮に
入れると、プロセッシングでの高速化が、基本ブロック
に対し三つのマシンサイクル時間がただ六つだけのパイ
プラインサイクルの時間で完了される表20で観察でき
る。パイプラインに対しサイクルタイムは、本発明の例
示の実施例の非パイプラインプロセッサに対し約1/4
サイクルタイムであることを心に留めておくべきであ
る。
【0202】図21のパイプラインは4つの等しい(時
間)長さ段階から構成される。第1段階2140は命令
デコードを遂行し、レジスタが何を取り出しおよび記憶
するかを決定し、そして、命令の実行に対し必要とされ
る二つのソースレジスタ取り出しまで遂行する。
【0203】第2段階2150は、もし必要とされるな
らば、条件コード取出しのため計算命令により使用され
る。それはまた、メモリインターフェース命令に対し有
効アドレス生成段階でもある。
【0204】本発明の好ましい実施例でサポートされる
有効アドレス動作は、 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”は定数である。
【0205】例として、マトリックスマルチプライ内部
ループ例で提供されるアドレッシング構成は、“K”が
配列内のデータエレメントの長さでありそして操作は加
算(+)であるケース3aから形成される。
【0206】概念的レベルで、メモリアクセス命令の有
効アドレッシング部分は、計算に必要なイミディエイト
データおよびレジスタの指定および獲得、所望されるア
ドレスを形成するため、これらのオペランドの組合せ、
およびもし必要ならば、含まれる複数レジスタのいずれ
か任意のものの更新の3つの基本機能から構成される。
この機能性は、従来と同様であり、DECプロセッサア
ーキテクチャで利用できるアドレッシングのオートイン
クリメントおよびオートデクリメントモードにより示さ
れる。例えば、DEX VAX ArcitectureHandbookを参照さ
れたい。
【0207】必要とされる明らかなハードウエアサポー
トに加えて、有効アドレッシングはTOLLソフトウエ
アによりサポートされ、そしてメモリアクセス動作命令
へ機能性を付加することによりTOLLソフトウエアに
影響を与える。別言すると、有効アドレスメモリアクセ
スが、第1の有効アドレス計算と第2の実メモリアクセ
スとの二つの動作の連結として解釈可能である。この機
能性は、加算、減算または乗算命令がそうであろうとほ
とんど同様の仕方で、当業者によりTOLLソフトウエ
アに容易に符合化できる。
【0208】叙述の有効アドレッシング構成は、メモリ
アクセス動作システムの単に可能な一つの実施例にすぎ
ないものと解釈されるべきである。当業者に知られてい
る、メモリアドレスを生成するための別のたくさんの方
法およびモードがある。別言すると、上に叙述の有効ア
ドレッシング構成は、設計の完全性のためのものであり
そしてシステムの設計でのキー要素と考えられるべきも
のではない。
【0209】図22を参照すると、図21のパイプライ
ンプロセッサエレメントでの種々のデータまたはデータ
フィールドの構成が、時間および空間の両方でマルチユ
ーザ型のシステムであるシステムに対し例示されてい
る。結果として、複数のパイプラインを横切って種々の
ユーザからの複数の命令が、おのおのそれ自身のプロセ
ッサ状態をもって、実行可能である。プロセッサ状態は
通常はプロセッサエレメントと関連されないので、命令
は、この状態を特定する識別子を従えて伝達しなければ
ならない。このプロセッサ状態は、ユーザに割当てられ
るLRDとレジスタファイルと条件コードファイルとに
よりサポートされる。
【0210】各メモリアクセスまたは条件コードアクセ
スまたはレジスタアクセスがアクセスの目標を唯一識別
できるよう、十分な量の情報が各命令に関連されねばな
らない。レジスタおよび条件コードの場合では、この追
加の情報は、手順レベル(PL)の絶対値とコンテクス
ト識別子(CI)とを構成し、そしてSCSM付加ユニ
ット1650により命令に付加される。これは、それぞ
れ図22aおよび図22bおよび図22cにより例示さ
れる。コンテクスト識別子部分は、どのレジスタまたは
条件コードプレイン(図6)がアクセスされているかを
決定するのに使用される。手順レベルは、どのレジスタ
の手順レベル(図13)がアクセスされるべきかを決定
するのに使用される。
【0211】メモリアクセスもまた、適当なデータキャ
ッシュがアクセスできるよう、現在の使用者をサポート
するLRDが識別されることを必要とする。これは、コ
ンテクスト識別子を通じて達成される。データキャッシ
ュアクセスはさらに、キャッシュにあるデータが実際所
望されるデータであることを確認するため、プロセス識
別子(PID)が現在使用者に対し利用可能であること
を必要とする。こうして、データキャッシュに発行され
るアドレスが、図22dの形をとる。寄せ集めフィール
ドは、例えば、読取りまたは書込み、使用者またはシス
テムなどアクセスを記述する追加の情報から構成され
る。最後に、単一時間間隔の間、パイプラインを横切っ
て実行する数人の使用者がいるのが可能であるという事
実により、命令の実行を制御しそして通常はパイプライ
ンに記憶されるであろう情報が、かわりに各命令に関連
されねばならない。この情報は、図22aに図示される
ように、命令ワードのISWフィールドで反映される。
このフィールドの情報は、エラーマスク、浮動少数点フ
ォーマットディスクリプター、丸めモードディスクリプ
ターなどのような制御フィールドから構成される。各命
令がこのフィールドに付加されるが、明らかに、すべて
の情報を必要としなくともよい。この情報は、プロセッ
サエレメントのALU段階2160により使用される。
【0212】ISWフィールドに関連するこの命令情報
ならびに手順レベル、コンテクスト識別およびプロセス
識別子は、命令が命令キャッシュから発行される場合
に、SCSM付加装置(1650)により動的に付加さ
れる。
【0213】本発明のシステムは上に開示のとおり説明
されるけれども、以下に続く請求の範囲の技術思想の範
囲内で種々の変更および修正が可能であることは明らか
であろう。
【図面の簡単な説明】
【図1】本発明のTOLLソフトウェアの一般化された
フローチャートである。
【図2】従来のコンパイラ出力内に存在する逐次の一連
の基本ブロックの線図である。
【図3】本発明の1実施例にしたがい各基本ブロックに
加えられる延長インテリジェンスの線図である。
【図4】本発明の1実施例にしたがい所与の基本ブロッ
ク内の各命令に加えられる延長インテリジェンスの詳細
を示す線図である。
【図5】基本ブロックの別個の実行セットへの分割を示
す線図である。
【図6】図6は本発明の好ましい実施例による装置のア
ーキテクチャ構造のブロック図である。
【図7】3つの逐次の命令発火時間中におけるネットワ
ーク相互接続を示す線図である。
【図8】本発明の1実施例のソフトウェアの特徴を記述
するフローチャートである。
【図9】本発明の1実施例のソフトウェアの特徴を記述
するフローチャートである。
【図10】本発明の1実施例のソフトウェアの特徴を記
述するフローチャートである。
【図11】本発明の1実施例のソフトウェアの特徴を記
述するフローチャートである。
【図12】TOLLソフトウェアにおける実行セットの
1つの好ましい形式を記述する線図である。
【図13】本発明の好ましい実施例によるレジスタファ
イル組織を表わす線図である。
【図14】サブルーチン呼び中における異なるレベルに
あるレジスタ間の切替えを示す線図である。
【図15】本発明の好ましい実施例の論理的資源ドライ
バ(LRD)の構造を示すブロック図である。
【図16】本発明の好ましい実施例の命令キャッシュ制
御装置およびキャッシュの構造を示すブロック図であ
る。
【図17】本発明の好ましい実施例のPIQバッファ装
置およびPIQバスインターフェース装置の構造を示す
ブロック図である。
【図18】本発明の好ましい実施例によるプロセッサ要
素からPE−LRDネットワークを経てPIQプロセッ
サ整列回路に至る相互接続を示すブロック図である。
【図19】本発明の好ましい実施例のブランチ実施装置
の構造を示すブロック図である。
【図20】本発明の好ましい実施例のコンテクストファ
イル状態コードメモリの組織を示す線図である。
【図21】本発明のパイプライン結合プロセッサ要素の
1実施例の構造を示すブロック図である。
【図22】プロセッサ要素と関連して使用されるデータ
構造を示す線図である。
【符号の説明】
100 コンパイラ出力 110 TOLLソフトウェア 120,130,140 機能ブロック 150 TOLL出力 160 処理システム 810〜1160 機能ボックスまたは判断ボックス 1549 分岐実行ユニット 1900 命令レジスタ 1920 条件コードアクセスユニット 1930 評価ユニット 1950 次命令インターフェース 1940 遅延ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ブルックス,クリストファー バンクロフ ト アメリカ合衆国 80302 コロラド,ボウ ルダー,ナインティーンス ストリート 4000 (72)発明者 グルック,フレデリック ジョージ アメリカ合衆国 80301 コロラド,ボウ ルダー,モンテレイ プレイス 3732

Claims (55)

    【特許請求の範囲】
  1. 【請求項1】 少なくとも二つの汎用レジスタを含む汎
    用レジスタファイルと、 各々、先に実行された命令の実行または結果を要約する
    条件コード値を少数ビットとして表わすためのものであ
    る複数のアドレス可能な条件コードレジスタを有する、
    前記汎用レジスタファイルと別個の条件コードレジスタ
    ファイルと、 前記条件コードレジスタの一つに記憶のための条件コー
    ド値を各々発生する条件設定命令を含む命令を実行する
    ように構成されたプロセッサ要素と、 前記条件コードレジスタからの条件コードの分析に基づ
    いて実行のためのターゲット命令を各々決定する条件付
    き分岐命令を実行するように構成された分岐実行ユニッ
    トと、 少なくとも一つが条件設定命令または前記条件付き分岐
    命令である条件選択命令に応答して動作するように構成
    された条件コードアクセスユニットとを備え、前記条件
    選択命令が、前記条件コードレジスタファイルから、 前記条件設定命令の一つにより発生される条件コード値
    を前記の選択された条件コードレジスタに記憶するこ
    と、および前記条件付け分岐命令の一つにより分析のた
    め前記の選択された条件コードレジスタから条件コード
    値をフェッチすることの少なくとも一つに対して条件コ
    ードレジスタを選択するためのものであり、 前記選択が条件選択命令の条件コードアドレスフィール
    ド上における直接アドレス指定によることを特徴とする
    コンピュータ。
  2. 【請求項2】 前記条件コードレジスタの一つに記憶の
    ための条件コード値を各々発生する条件設定命令を含む
    命令を実行するように構成された少なくとも一つの追加
    ののプロセッサ要素を備え、前記各プロセッサ要素が、
    前記条件コードレジスタファイルの条件コードレジスタ
    に対する前記条件設定命令により発生される条件コード
    値を供給するようにイネーブルされ、前記条件コードレ
    ジスタファイルが前記プロセッサ要素により共有され、
    前記プロセッサ要素のいずれかにより発生される条件コ
    ード値が、前記分岐実行ユニットにより読取り可能であ
    る請求項1記載のコンピュータ。
  3. 【請求項3】 前記条件コードレジスタの一つからフェ
    ッチされる条件コード値の分析に基づき実行のためのタ
    ーゲット命令を各々決定する条件付け分岐命令を実行す
    るように構成された少なくとも一つの追加の分岐実行ユ
    ニットを備え、前記条件コードレジスタファイルが前記
    分岐実行ユニットにより共有され、前記各分岐実行ユニ
    ットが、前記プロセッサ要素の2またはそれ以上の任意
    のものにより発生される条件コード値を分析するように
    イネーブルされる請求項1記載のコンピュータ。
  4. 【請求項4】 前記プロセッサ要素と分岐ユニットが、
    異なるユーザの少なくとも二つの独立のプログラムを同
    時に実行するように構成されている請求項3記載のコン
    ピュータ。
  5. 【請求項5】 前記プロセッサ要素を前記条件コードレ
    ジスタファイルに結合するコンテキストセレクタを備
    え、前記条件コードレジスタファイルが複数のレジスタ
    セットに仕切られ、任意の1時点において前記プロセッ
    サの要素の一つが、前記レジスタセットの少なくとも一
    つ、ただし全部より少ないものに対するアドレス可能性
    を有し、該アドレス可能性が前記コンテキストセレクタ
    により決定される請求項2記載のコンピュータ。
  6. 【請求項6】 前記プロセッサ要素を前記条件コードレ
    ジスタファイルに結合するコンテキストセレクタを備
    え、前記条件コードレジスタファイルが複数のレジスタ
    セットに仕切られ、任意の1時点において前記プロセッ
    サ要素が、前記レジスタセットの少なくとも一つ、ただ
    し全部より少ないものを含むレジスタコンテキストに対
    するアドレス可能性を有し、前記レジスタコンテクスト
    が前記コンテキストセレクタにより決定される請求項1
    記載のコンピュータ。
  7. 【請求項7】 前記コンテキストセレクタが、前記プロ
    セッサ要素により実行されるサブルーチンネスティング
    レベルの命令により前記レジスタコンテキストを決定す
    るための手段を備える請求項6記載のコンピュータ。
  8. 【請求項8】 前記条件設定命令および条件付け分岐命
    令が各々、条件コードアドレスフィールドを含み、 前記コンテキストセレクタが、コンテキスト値を利用し
    て前記レジスタコンテキストを決定し、それにより前記
    条件コードアドレスフィールドの値を前記レジスタコン
    テキストの条件コードレジスタに関連づける請求項6記
    載のコンピュータ。
  9. 【請求項9】 前記条件設定命令が、前記条件コードレ
    ジスタに記憶のための条件コード値を生ずるが前記汎用
    レジスタに記憶のための演算結果を生じない比較命令を
    含む請求項1記載のコンピュータ。
  10. 【請求項10】 前記各比較命令が、前記条件レジスタ
    の一つを前記の発生した条件コード値が記憶されるべき
    前記条件コードレジスタの一つを直接アドレスするフィ
    ールドを含む請求項9記載のコンピュータ。
  11. 【請求項11】 前記条件付け分岐命令が、条件コード
    レジスタを直接アドレスする前記各条件付けブランチ命
    令の条件コードアドレスフィールドによりフェッチング
    および分析のための条件コード値を選択する請求項1記
    載のコンピュータ。
  12. 【請求項12】 前記実行命令の少なくとも若干のもの
    が、前記汎用レジスタファイルに記憶のための演算また
    は論理結果と、前記条件コードレジスタファイルに記憶
    のための前記演算または論理結果を要約する条件コード
    値の両者を生ずる条件設定命令と演算または論理命令の
    両者である請求項1記載のコンピュータ。
  13. 【請求項13】 前記条件選択命令が、条件設定命令
    と、条件付け分岐命令の両者を含み、 前記条件コードアクセスユニットが、前記条件コードレ
    ジスタファイルから、 前記条件設定命令により発生される条件コード値を前記
    の選択された条件コードレジスタに記憶するためと、 前記の選択された条件コードレジスタから、前記条件付
    け分岐命令の一つにより分析のため条件コード値をフェ
    ッチするための両方の目的のため条件コードレジスタを
    選択する請求項1記載のコンピュータ。
  14. 【請求項14】 前記条件付け分岐命令に続く指示され
    た数の命令の完了まで、条件付け分岐命令の結果を遅延
    させる遅延手段を含む請求項1記載のコンピュータ。
  15. 【請求項15】 前記分岐ユニットが、前記プロセッサ
    要素による演算命令の実行と同時に前記条件付け分岐命
    令を実行するための手段を有する請求項1記載のコンピ
    ュータ。
  16. 【請求項16】 汎用レジスタファイルと、 各々、先に実行された命令の実行または結果を要約する
    少数ビットとして条件コード値を表わすためのものであ
    る複数のアドレス可能な条件コードレジスタを有する、
    前記汎用レジスタファイルと別個の条件コードレジスタ
    ファイルと、 命令を実行するように構成されたプロセッサとを備え、
    該命令が、 前記汎用レジスタの一つに記憶のための演算または論理
    結果を各々生ずる演算または論理命令と、 前記条件コードレジスタの一つに記憶のための条件コー
    ド値を各々生ずる条件設定命令であって、少なくともあ
    るものが各々、前記の発生された条件コード値が記憶さ
    れるべき前記条件コードレジスタの一つを直接的にアド
    レスするフィールドを含む条件設定命令と、 前記条件コードレジスタの一つから検索される条件コー
    ド値の分析に基づいて実行のためのターゲット命令を各
    々決定する条件付け分岐命令であって、その少なくとも
    若干のものが前記分析のため前記条件コードレジスタの
    一つを直接的にアドレスするための条件コードアドレス
    フィールドを含む条件付け分岐命令とを含むことを特徴
    とするコンピュータ。
  17. 【請求項17】 前記の実行された命令の少なくとも若
    干のものが、前記汎用レジスタファイルに記憶のための
    演算または論理結果と、前記条件コードレジスタファイ
    ルに記憶のための前記演算または論理結果の条件コード
    値の両者を生ずる条件設定命令と演算または論理命令の
    両者である請求項16記載のコンピュータ。
  18. 【請求項18】 各々、前記プロセッサにより実行され
    る命令の中間結果の記憶のための少なくとも二つのレジ
    スタより成る共有レジスタファイルであって、そのレジ
    スタが前記命令のレジスタ選択フィールドにより直接的
    にアドレスされる共有レジスタファイルに依存する少な
    くとも二つのプロセッサと、 前記プロセッサと前記レジスタファイル間の相互接続で
    あって、 前記プロセッサの第1のプロセッサにより実行される前
    記命令の条件設定命令の結果の条件の要約を前記共有レ
    ジスタファイルのレジスタに記憶し、そして前記第2プ
    ロセッサ上で実行される命令の条件付け分岐命令の分岐
    ターゲットの決定に際して分析のため前記レジスタから
    前記プロセッサの第2のプロセッサへ前記条件の要約を
    供給するように構成された相互接続とを備え、前記レジ
    スタが前記条件設定命令の条件コードアドレスフィール
    ドにより前記レジスタファイル内からと、前記条件付け
    分岐命令の条件コードアドレスフィールドにより前記レ
    ジスタファイル内とから選択されることを特徴とするコ
    ンピュータ。
  19. 【請求項19】 前記条件付け分岐命令の少なくとも若
    干のものが、前記の選択された条件コードレジスタを直
    接的にアドレスする条件コードアドレスフィールドによ
    り供給および分析のための条件コードレジスタを選択す
    る請求項18記載のコンピュータ。
  20. 【請求項20】 前記条件設定命令の少なくとも若干の
    ものが、前記条件コード値が記憶されるべき前記条件コ
    ードレジスタの一つを直接的にアドレスする条件コード
    アドレスフィールドを含む請求項19記載のコンピュー
    タ。
  21. 【請求項21】 前記レジスタファイルのレジスタが、
    前記条件コード値を記憶するように構成されたレジスタ
    と別個に前記命令の演算または論理結果を記憶するよう
    に構成される請求項18記載のコンピュータ。
  22. 【請求項22】 前記プロセッサが、プログラムの異な
    る基本ブロックの命令を同時的かつ協働的に実行するよ
    うに構成される請求項18記載のコンピュータ。
  23. 【請求項23】 前記条件設定命令の少なくとも若干の
    ものが、前記条件コード値が記憶されるべき前記条件コ
    ードレジスタの一つを直接的にアドレスする条件コード
    アドレスフィールドを含む請求項18記載のコンピュー
    タ。
  24. 【請求項24】 前記プロセッサを前記レジスタファイ
    ルに結合するコンテキストセレクタを備え、前記レジス
    タファイルが複数のレジスタセットに仕切られ、任意の
    1時点において前記プロセッサの一つが、前記レジスタ
    セットの少なくとも一つ、ただし全部より少ないもに対
    するアドレス可能性を有し、前記アドレス可能性が前記
    コンテキストセレクタにより決定される請求項1記載の
    コンピュータ。
  25. 【請求項25】 少なくとも二つの条件コードレジスタ
    のレジスタファイルを有する単一コンピュータ上におい
    て単一のプログラムの命令を実行する方法であって、 前記コンピュータ上において前記プログラムの第1条件
    設定命令を実行し、前記レジスタファイルの条件コード
    レジスタに前記第1条件設定命令の結果の条件を第1の
    条件コード値として記憶し、 前記第1条件設定命令の実行より早くなく、前記コンピ
    ュータ上において第2の条件設定命令を実行し、前記レ
    ジスタファイルの条件コードレジスタに前記第2条件設
    定命令の結果の条件を第2の条件コード値として記憶
    し、 前記第2条件設定命令の実行より早くなく、前記コンピ
    ュータ上において条件コードアドレスフィールドを有す
    る第1の条件付け分岐命令を実行し、該分岐実行段階
    が、前記第1条件コード値の分析により前記第1条件付
    け分岐命令の結果を決定する段階を含み、前記第1条件
    コード値が、前記第1条件付け分岐命令の前記条件コー
    ドアドレスフィールドにより前記レジスタファイル内か
    ら選択されることを特徴とする単一コンピュータ上にお
    ける単一プログラムの命令実行方法。
  26. 【請求項26】 前記第1条件設定命令の実行で、前記
    第1条件設定命令の条件コードアドレスフィールドに基
    づいて前記第1条件コード値を記憶すべき前記レジスタ
    ファイルの条件コードレジスタを選択し、 前記第2条件設定命令の実行で、前記第2条件設定命令
    の条件コードアドレスフィールドに基づいて前記第2条
    件コード値を記憶すべき前記レジスタファイルの条件コ
    ードレジスタを選択する請求項25記載の単一コンピュ
    ータ上における単一プログラムの命令実行方法。
  27. 【請求項27】 前記第1条件設定命令および前記第1
    条件付け分岐命令を実行する段階が第1プロセッサ要素
    により遂行され、 前記第2条件設定命令を実行する段階が前記第1プロセ
    ッサ要素と別個の第2プロセッサ要素上で遂行され、そ
    して前記条件コードアドレスファイルの少なくとも二つ
    の条件コードレジスタが、第1および第2プロセッサ要
    素の各々により実行される命令の条件コードアドレスフ
    ィールドにより各々アドレス可能である請求項25記載
    の単一コンピュータ上における単一プログラムの命令実
    行方法。
  28. 【請求項28】 前記コンピュータがさらに単一の汎用
    レジスタファイルを備え、そして前記第1および第2条
    件設定命令も、それぞれ前記汎用レジスタの第1および
    第2の汎用レジスタに記憶される演算または論理結果を
    計算する請求項25記載の単一コンピュータ上における
    単一プログラムの命令実行方法。
  29. 【請求項29】 少なくとも二つの条件コードレジスタ
    を含む複数のレジスタを有する単一コンピュータにおい
    て単一のプログラムの命令を実行する方法であって、 前記コンピュータ上において前記プログラムの第1条件
    設定演算または論理命令を実行し、前記第1条件設定命
    令の演算または論理結果を前記レジスタの汎用レジスタ
    に記憶し、前記第1条件設定命令の実行または結果の条
    件を、前記条件コードレジスタの第1のレジスタに少数
    のビットとして記憶される第1の条件コード値として表
    わし、 前記第1条件設定命令の実行より早くなく、前記コンピ
    ュータ上において第2の条件演算命令を実行し、前記第
    2条件設定命令の結果を、前記第2条件設定命令の条件
    コードアドレスにより選択される前記条件コードレジス
    タの第2レジスタに記憶される第2条件コード値として
    表わし、 前記第2条件設定命令の実行より早くなく、前記コンピ
    ュータ上で第1の条件付け分岐命令を実行し、前記第1
    条件付け分岐命令の結果を、前記第1条件設定命令以後
    再計算されてしまうことなく前記条件コードレジスタに
    残存しており、前記第1条件付け分岐命令の直接アドレ
    ス条件コードアドレスにより前記条件コードレジスタ内
    から選択された前記第1条件コード値の分析により決定
    することを特徴とする単一コンピュータ上における単一
    のプログラムの命令実行方法。
  30. 【請求項30】 前記第1条件付け分岐命令の実行後、
    前記コンピュータ上で第2条件付け分岐命令を実行し、
    前記第2条件付け分岐命令の分岐ターゲットを、前記第
    2条件付け分岐命令の条件コードアドレスフィールドに
    より前記条件コードレジスタから選択される前記第2条
    件コード値の分析により決定する請求項29記載の単一
    コンピュータ上における単一のプログラムの命令実行方
    法。
  31. 【請求項31】 命令処理装置における複数組の条件値
    を使用するためのシステムにおいて、 処理されるべき前記命令の少なくとも若干のものに対応
    する複数の演算コードを緩衝記憶するように構成された
    演算コードメモリと、 該演算コードメモリと結合され、第1の形式の命令の演
    算コードを受信し、一組の少なくとも一つの条件値を発
    生するように構成された第1の回路と、 該第一回路に結合され、前記一組の条件値の複数組を記
    憶するように構成された条件メモリと、 前記演算コードメモリに結合され、第2の形式の命令の
    演算コードを受信し、一組の少なくとも一つの出力値で
    あって、前記の記憶された複数組の条件値の特定の一つ
    に依存して前記各第2形式の命令に対する出力値を発生
    するように構成された第2の回路と、 前記条件メモリと前記第2回路との間に結合されたアク
    セス回路であって、第2の形式の前記各演算コードに対
    する前記特定の記憶された一組の条件値にアクセスする
    ように構成されたアクセス回路とを備えることを特徴と
    する複数組の条件値を使用するためのシステム。
  32. 【請求項32】 前記第1形式の命令が、演算および論
    理形式の命令より成る請求項31記載の複数組の条件値
    を使用するためのシステム。
  33. 【請求項33】 前記第2形式の命令が、分岐形式の命
    令より成る請求項31記載の複数組の条件値を使用する
    ためのシステム。
  34. 【請求項34】 前記複数組の条件値が、少なくとも3
    組の条件値を含む請求項31記載の複数組の条件値を使
    用するためのシステム。
  35. 【請求項35】 4組の条件値が存在する請求項34記
    載の複数組の条件値を使用するためのシステム。
  36. 【請求項36】 前記アクセス回路がアドレス選択回路
    を備える請求項31記載の複数組の条件値を使用するた
    めのシステム。
  37. 【請求項37】 前記アドレス選択回路が前記第2の形
    式の命令により特定されるアドレス入力を受信する請求
    項36記載の複数組の条件値を使用するためのシステ
    ム。
  38. 【請求項38】 前記第1形式の命令の演算コード入力
    を受信し、追加の複数組の条件値を発生する第1の回路
    をさらに備える請求項31記載の複数組の条件値を使用
    するためのシステム。
  39. 【請求項39】 前記一組の出力値が、条件付け分岐形
    式の命令のターゲットアドレス含む請求項31記載の複
    数組の条件値を使用するためのシステム。
  40. 【請求項40】 前記条件メモリと別個の汎用レジスタ
    ファイルをさらに備える請求項31記載の複数組の条件
    値を使用するためのシステム。
  41. 【請求項41】 前記複数組の条件値が条件コードとし
    て記憶され、前記各条件コードが複数のフラグビットを
    含んでいる請求項31記載の複数組の条件値を使用する
    ためのシステム。
  42. 【請求項42】 前記フラグビットの一つが、前記第1
    形式の命令の0結果を表わす請求項41記載の複数組の
    条件値を使用するためのシステム。
  43. 【請求項43】 前記第1形式の命令がデクリメント命
    令である請求項42記載の複数組の条件値を使用するた
    めのシステム。
  44. 【請求項44】 前記演算コードメモリがプロセッサ命
    令キューを含み、前記キューが、実行されることを待つ
    命令を緩衝記憶し、発せられる命令の実行状態を追跡す
    るように構成される請求項31記載の複数組の条件値を
    使用するためのシステム。
  45. 【請求項45】 前記第1回路と前記条件メモリとの間
    に結合され、前記条件メモリ内の物理的位置に前記一組
    の条件値を割り当てるように構成される割当回路をさら
    に備える請求項31記載の複数組の条件値を使用するた
    めのシステム。
  46. 【請求項46】 前記物理的位置が前記第1形式の命令
    により特定されるアドレスに基づいて割り当てられる請
    求項45記載の複数組の条件値を使用するためのシステ
    ム。
  47. 【請求項47】 複数組の条件値を使用して命令ストリ
    ームを処理する方法であって、前記命令の第1の形式の
    命令が一組の条件値を各々発生し、前記命令の第2の形
    式の命令が、前記の発生された複数組の条件値の一つに
    依存する結果を各々発生するものにおいて、 第1組の条件値を発生するために第1の形式の第1の命
    令を発し、 該第1組の条件値をメモリに記憶し、 前記第1命令を発するより早くなく、少なくとも他の一
    組の条件値を発生するために、第1の形式の少なくとも
    一つの他の命令を発し、 この種の複数組の条件値を保持する容量を有する前記メ
    モリに、前記他の一組の条件値を記憶し、 前記他の命令を発するより早くなく、前記第1組の条件
    値に依存する第2の形式の命令を発し、そして前記メモ
    リから前記第1組の条件値にアクセスする諸段階を含む
    ことを特徴とする命令ストリーム処理方法。
  48. 【請求項48】 前記の第1形式の第1命令の前記処理
    が、データ値をデクリメントする段階を含む請求項47
    記載の命令ストリーム処理方法。
  49. 【請求項49】 前記第2形式の命令の前記処理が、分
    岐が起こるか否かの評価段階を含む請求項47記載の命
    令ストリーム処理方法。
  50. 【請求項50】 前記処理段階が、少なくとも3組の条
    件値を記憶する段階を含む請求項47記載の命令ストリ
    ーム処理方法。
  51. 【請求項51】 4組の条件値が存在する請求項50記
    載の命令ストリーム処理方法。
  52. 【請求項52】 前記アクセス段階が、前記メモリ内の
    前記第1組の条件値のアドレスを選択する段階を含む請
    求項47記載の命令ストリーム処理方法。
  53. 【請求項53】 前記アクセス段階が、前記第2形式の
    命令からアドレス入力を受信する段階を含む請求項52
    記載の命令ストリーム処理方法。
  54. 【請求項54】 分岐形式命令のターゲットアドレスを
    発生する段階をさらに含む請求項47記載の命令ストリ
    ーム処理方法。
  55. 【請求項55】 複数組の条件値を記憶する各段階が、
    複数のフラグビットを各々有する条件コードを記憶する
    段階を含む請求項47記載の命令ストリーム処理方法。
JP32038197A 1985-10-31 1997-11-06 条件コードを使用する命令処理システムおよびコンピュータ Expired - Lifetime JP3461704B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US794221 1985-10-31
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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP61506185A Division JP3084282B2 (ja) 1985-10-31 1986-10-30 同時に処理されうる2以上の命令を含むストリームを並列処理するための方法

Publications (2)

Publication Number Publication Date
JPH10187640A true JPH10187640A (ja) 1998-07-21
JP3461704B2 JP3461704B2 (ja) 2003-10-27

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 Before (2)

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 複数の非分岐命令と分岐命令とを有する基本ブロックにおける分岐実行システムおよび方法

Country Status (5)

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

Families Citing this family (180)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5127104A (en) * 1986-12-29 1992-06-30 Dataflow Computer Corporation Method and product involving translation and execution of programs by automatic partitioning and data structure allocation
JP2749039B2 (ja) * 1987-11-06 1998-05-13 株式会社日立製作所 オブジェクト生成方法
US5396627A (en) * 1987-11-06 1995-03-07 Hitachi, Ltd. Method of producing object program based on interprocedural dataflow analysis of a source program
JP2644780B2 (ja) * 1987-11-18 1997-08-25 株式会社日立製作所 処理依頼機能を持つ並列計算機
US5202967A (en) * 1988-08-09 1993-04-13 Matsushita Electric Industrial Co., Ltd. Data processing apparatus for performing parallel decoding and parallel execution of a variable word length instruction
US5050068A (en) * 1988-10-03 1991-09-17 Duke University Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams
US5134705A (en) * 1988-10-21 1992-07-28 Unisys Corporation System and method for concurrency simulation
US6092153A (en) * 1988-11-14 2000-07-18 Lass; Stanley Edwin Subsettable top level cache
KR920006770B1 (ko) * 1988-12-27 1992-08-17 후지쓰 가부시끼가이샤 명령을 페치(fetch)하기 위한 제어 시스템
US5125092A (en) * 1989-01-09 1992-06-23 International Business Machines Corporation Method and apparatus for providing multiple condition code fields to to allow pipelined instructions contention free access to separate condition codes
EP0378415A3 (en) * 1989-01-13 1991-09-25 International Business Machines Corporation Multiple instruction dispatch mechanism
US5165036A (en) * 1989-01-31 1992-11-17 Sharp Kabushiki Kaisha Parallel processing development system with debugging device includes facilities for schematically displaying execution state of data driven type processor
EP0389175A3 (en) * 1989-03-15 1992-11-19 Fujitsu Limited Data prefetch system
DE69030931T2 (de) * 1989-04-24 1998-01-15 Ibm Mehrfachsequenzprozessorsystem
US5127092A (en) * 1989-06-15 1992-06-30 North American Philips Corp. Apparatus and method for collective branching in a multiple instruction stream multiprocessor where any of the parallel processors is scheduled to evaluate the branching condition
US5179558A (en) * 1989-06-22 1993-01-12 Digital Equipment Corporation Routing apparatus and method for high-speed mesh connected local area network
US5224210A (en) * 1989-07-28 1993-06-29 Hewlett-Packard Company Method and apparatus for graphics pipeline context switching in a multi-tasking windows system
US5327569A (en) * 1989-08-28 1994-07-05 Mitsubishi Denki Kabushiki Kaisha Data driven type processor including a generation management system
US5317734A (en) * 1989-08-29 1994-05-31 North American Philips Corporation Method of synchronizing parallel processors employing channels and compiling method minimizing cross-processor data dependencies
US5371887A (en) * 1989-09-05 1994-12-06 Matsushita Electric Industrial Co., Ltd. Time-shared multitask execution device
US5263169A (en) * 1989-11-03 1993-11-16 Zoran Corporation Bus arbitration and resource management for concurrent vector signal processor architecture
US5193206A (en) * 1989-12-27 1993-03-09 Motorola, Inc. Reduce instruction set microprocessor
US5203002A (en) * 1989-12-27 1993-04-13 Wetzel Glen F System with a multiport memory and N processing units for concurrently/individually executing 2N-multi-instruction-words at first/second transitions of a single clock cycle
JP3260357B2 (ja) 1990-01-24 2002-02-25 株式会社日立製作所 情報処理装置
JPH04242852A (ja) * 1990-02-13 1992-08-31 Internatl Business Mach Corp <Ibm> 多重処理のための先入れ先出しバッファ待ち行列の管理機構および方法
US5412799A (en) * 1990-02-27 1995-05-02 Massachusetts Institute Of Technology Efficient data processor instrumentation for systematic program debugging and development
JPH04222049A (ja) * 1990-03-16 1992-08-12 Hewlett Packard Co <Hp> 属性データ記憶及びグラフィックスパイプラインアクセスを可能にするデータストリーム集信装置
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
WO1991017495A1 (en) * 1990-05-04 1991-11-14 International Business Machines Corporation System for compounding instructions for handling instruction and data stream for processor with different attributes
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
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
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
EP0454985B1 (en) * 1990-05-04 1996-12-18 International Business Machines Corporation Scalable compound instruction set machine architecture
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US5295249A (en) * 1990-05-04 1994-03-15 International Business Machines Corporation Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel
US5212794A (en) * 1990-06-01 1993-05-18 Hewlett-Packard Company Method for optimizing computer code to provide more efficient execution on computers having cache memories
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
US5809292A (en) * 1990-11-13 1998-09-15 International Business Machines Corporation Floating point for simid array machine
US5625836A (en) * 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
US5734921A (en) * 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5617577A (en) * 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5828894A (en) * 1990-11-13 1998-10-27 International Business Machines Corporation Array processor having grouping of SIMD pickets
DE69131272T2 (de) * 1990-11-13 1999-12-09 Ibm Paralleles Assoziativprozessor-System
US5713037A (en) * 1990-11-13 1998-01-27 International Business Machines Corporation Slide bus communication functions for SIMD/MIMD array processor
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
US5630162A (en) * 1990-11-13 1997-05-13 International Business Machines Corporation Array processor dotted communication network based on H-DOTs
US5815723A (en) * 1990-11-13 1998-09-29 International Business Machines Corporation Picket autonomy on a SIMD machine
US5765015A (en) * 1990-11-13 1998-06-09 International Business Machines Corporation Slide network for an array processor
US5963746A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation Fully distributed processing memory element
US5794059A (en) * 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5966528A (en) * 1990-11-13 1999-10-12 International Business Machines Corporation SIMD/MIMD array processor with vector processing
US5590345A (en) * 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5588152A (en) * 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
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
US5963745A (en) * 1990-11-13 1999-10-05 International Business Machines Corporation APAP I/O programmable router
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
KR0176263B1 (ko) * 1991-03-11 1999-05-15 마이클 에이치. 모리스 비용기준 발견적 명령스케쥴링을 최적화하기 위한 방법 및 장치
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
DE69428004T2 (de) * 1993-11-05 2002-04-25 Intergraph Corp Superskalare Rechnerarchitektur mit Softwarescheduling
US6360313B1 (en) 1993-11-05 2002-03-19 Intergraph Corporation Instruction cache associative crossbar switch
EP0974894B1 (en) * 1993-11-05 2002-02-27 Intergraph Corporation Instruction cache associative cross-bar switch
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
US6704856B1 (en) * 1999-02-01 2004-03-09 Hewlett-Packard Development Company, L.P. Method for compacting an instruction queue
US6542987B1 (en) * 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full 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 実時間プロセッサおよび命令実行方法
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
EP1236092A4 (en) 1999-09-01 2006-07-26 Intel Corp BRANCH COMMAND FOR A PROCESSOR
US6519697B1 (en) 1999-11-15 2003-02-11 Ncr Corporation Method and apparatus for coordinating the configuration of massively parallel systems
US6412002B1 (en) 1999-11-15 2002-06-25 Ncr Corporation Method and apparatus for selecting nodes in configuring massively parallel systems
US6418526B1 (en) 1999-11-15 2002-07-09 Ncr Corporation Method and apparatus for synchronizing nodes in massively parallel systems
US6745240B1 (en) 1999-11-15 2004-06-01 Ncr Corporation Method and apparatus for configuring massively parallel systems
EP1113357A3 (en) * 1999-12-30 2001-11-14 Texas Instruments Incorporated Method and apparatus for implementing a variable length delay instruction
US6728419B1 (en) 2000-02-17 2004-04-27 Xerox Corporation Multi-tasking multi-threaded image processing system and method for image capture devices
US6976150B1 (en) * 2000-04-06 2005-12-13 The Board Of Governors For Higher Education, State Of Rhode Island And Providence Plantations Resource flow computing device
WO2002008893A1 (en) * 2000-07-21 2002-01-31 Antevista Gmbh A microprocessor having an instruction format containing explicit timing information
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US8935297B2 (en) * 2001-12-10 2015-01-13 Patrick J. Coyne Method and system for the management of professional services project information
US20030144970A1 (en) * 2001-12-10 2003-07-31 Coyne Patrick J. Project management database and method of managing project related 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
WO2003102758A1 (en) * 2002-05-31 2003-12-11 University Of Delaware 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
US8209524B2 (en) * 2005-08-29 2012-06-26 The Invention Science Fund I, Llc Cross-architecture optimization
US20070050606A1 (en) * 2005-08-29 2007-03-01 Searete Llc, A Limited Liability Corporation Of The State Of Delaware Runtime-based optimization profile
US7877584B2 (en) * 2005-08-29 2011-01-25 The Invention Science Fund I, Llc Predictive processor resource management
US7647487B2 (en) 2005-08-29 2010-01-12 Searete, Llc Instruction-associated processor resource optimization
US8214191B2 (en) * 2005-08-29 2012-07-03 The Invention Science Fund I, Llc Cross-architecture execution optimization
US8181004B2 (en) * 2005-08-29 2012-05-15 The Invention Science Fund I, Llc Selecting a resource management policy for a resource available to a processor
US7653834B2 (en) 2005-08-29 2010-01-26 Searete, Llc Power sparing synchronous apparatus
US8516300B2 (en) * 2005-08-29 2013-08-20 The Invention Science Fund I, Llc Multi-votage synchronous systems
US8423824B2 (en) * 2005-08-29 2013-04-16 The Invention Science Fund I, Llc Power sparing synchronous apparatus
US20070050605A1 (en) * 2005-08-29 2007-03-01 Bran Ferren Freeze-dried ghost pages
US8255745B2 (en) * 2005-08-29 2012-08-28 The Invention Science Fund I, Llc Hardware-error tolerant computing
US7779213B2 (en) 2005-08-29 2010-08-17 The Invention Science Fund I, Inc Optimization of instruction group execution through hardware resource management policies
US7627739B2 (en) * 2005-08-29 2009-12-01 Searete, Llc Optimization of a hardware resource shared by a multiprocessor
US8375247B2 (en) * 2005-08-29 2013-02-12 The Invention Science Fund I, Llc Handling processor computational errors
US7739524B2 (en) * 2005-08-29 2010-06-15 The Invention Science Fund I, Inc Power consumption management
US7774558B2 (en) * 2005-08-29 2010-08-10 The Invention Science Fund I, Inc Multiprocessor resource optimization
US8300798B1 (en) 2006-04-03 2012-10-30 Wai Wu Intelligent communication routing system and method
US7945433B2 (en) * 2007-04-30 2011-05-17 International Business Machines Corporation Hardware simulation accelerator design and method that exploits a parallel structure of user models to support a larger user model size
US20090089555A1 (en) * 2007-09-28 2009-04-02 James Adam Cataldo Methods and apparatus for executing or converting real-time instructions
US8838817B1 (en) 2007-11-07 2014-09-16 Netapp, Inc. Application-controlled network packet classification
US20090143695A1 (en) * 2007-11-30 2009-06-04 Palo Alto Research Center Incorporated Brainwave-facilitated presenter feedback mechanism
US8566833B1 (en) * 2008-03-11 2013-10-22 Netapp, Inc. Combined network and application processing in a multiprocessing environment
GB0911099D0 (en) * 2009-06-26 2009-08-12 Codeplay Software Ltd Processing method
US9104399B2 (en) * 2009-12-23 2015-08-11 International Business Machines Corporation Dual issuing of complex instruction set instructions
US20110314256A1 (en) * 2010-06-18 2011-12-22 Microsoft Corporation Data Parallel Programming Model
US8589867B2 (en) 2010-06-18 2013-11-19 Microsoft Corporation Compiler-generated invocation stubs for data parallel programming model
GB2482141B (en) * 2010-07-20 2012-07-18 Cognovo Ltd Digital data processing systems
US8640112B2 (en) 2011-03-30 2014-01-28 National Instruments Corporation Vectorizing combinations of program operations
CN105988872B (zh) 2015-02-03 2020-02-18 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
CN107567614B (zh) * 2015-06-01 2022-05-24 英特尔公司 用于对根据关键度被分组的指令的缕程的执行的多核处理器
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
US11829762B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Time-resource matrix for a microprocessor with time counter for statically dispatching instructions
US11829187B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Microprocessor with time counter for statically dispatching instructions
US11829767B2 (en) 2022-01-30 2023-11-28 Simplex Micro, Inc. Register scoreboard for a microprocessor with a time counter for statically dispatching instructions
US20230350679A1 (en) * 2022-04-29 2023-11-02 Simplex Micro, Inc. Microprocessor with odd and even register sets

Family Cites Families (19)

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

Also Published As

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

Similar Documents

Publication Publication Date Title
JPH10187640A (ja) 条件コードを使用する命令処理システムおよびコンピュータ
US5765037A (en) System for executing instructions with delayed firing times
US5353418A (en) System storing thread descriptor identifying one of plural threads of computation in storage only when all data for operating on thread is ready and independently of resultant imperative processing of thread
US5675757A (en) Direct match data flow memory for data driven computing
US5499349A (en) Pipelined processor with fork, join, and start instructions using tokens to indicate the next instruction for each of multiple threads of execution
US4468736A (en) Mechanism for creating dependency free code for multiple processing elements
US5513366A (en) Method and system for dynamically reconfiguring a register file in a vector processor
US5758176A (en) Method and system for providing a single-instruction, multiple-data execution unit for performing single-instruction, multiple-data operations within a superscalar data processing system
US5592679A (en) Apparatus and method for distributed control in a processor architecture
RU2427895C2 (ru) Оптимизированная для потоков многопроцессорная архитектура
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
US20080250227A1 (en) General Purpose Multiprocessor Programming Apparatus And Method
WO1983004443A1 (en) Concurrent processing elements for using dependency free code
JP2898105B2 (ja) コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法
US5465372A (en) Dataflow computer for following data dependent path processes
JPH06236267A (ja) スーパースカラ・プロセッサ・システムにおける命令ディスパッチ効率を向上させる方法およびシステム
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
EP0521486B1 (en) Hierarchical structure processor
Gao An efficient hybrid dataflow architecture model
EP0496407A2 (en) Parallel pipelined instruction processing system for very long instruction word
WO1982004148A1 (en) Digital computer for executing instructions in three time-multiplexed portions
US4456958A (en) System and method of renaming data items for dependency free code
Nicolau et al. ROPE: a statically scheduled supercomputer architecture
JP2861234B2 (ja) 命令処理装置
CN116802605A (zh) 用于根据触发条件执行指令的电路和方法

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20021105

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20030708

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term