JPH0260010B2 - - Google Patents

Info

Publication number
JPH0260010B2
JPH0260010B2 JP62077654A JP7765487A JPH0260010B2 JP H0260010 B2 JPH0260010 B2 JP H0260010B2 JP 62077654 A JP62077654 A JP 62077654A JP 7765487 A JP7765487 A JP 7765487A JP H0260010 B2 JPH0260010 B2 JP H0260010B2
Authority
JP
Japan
Prior art keywords
sink
execution unit
tag
gpr
source
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP62077654A
Other languages
English (en)
Other versions
JPS62262142A (ja
Inventor
Haabaato Homerin Jeemuzu
Robaatsu Pusatsuku Toomasu
Nasan Rekutoshatsufuen Rudorufu
Jon Suparashio Furanku
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JPS62262142A publication Critical patent/JPS62262142A/ja
Publication of JPH0260010B2 publication Critical patent/JPH0260010B2/ja
Granted 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/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • 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/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming

Description

【発明の詳細な説明】 以下の順序で本発明を説明する。
A 産業上の利用分野 B 従来技術 C 発明が解決しようとする問題点 D 問題点を解決するための手段 E 実施例 E1 本発明の基本的概念(第1図) E2 汎用レジスタ及びタグ・フイールド(第2
図) E3 動作の具体例(第3図) E4 動作のフローチヤート (第4図〜第9A、9B図) F 発明の効果 A 産業上の利用分野 本発明は、毎秒数百万の命令を実行する能力を
もつ複雑且つ高速な電子計算システムの分野に特
定の用途がある。さらに詳しくは、本発明は、単
一命令ストリーム上で同時にまたは重なり合う実
行構成中で動作し得る複数の異なる実行ユニツト
をもつシステムに関する。より詳しくは、本発明
は、非同期的に動作し得る個別の実行ユニツトに
よつてそのようなシステムの汎用レジスタに配置
され、またはそのような汎用レジスタから引き出
されたデータの論理的完全性を保証する、汎用レ
ジスタ中のデータの管理のための制御機構及びア
ーキテクチヤに関する。
B 従来技術 現在の汎用コンピユータのアーキテクチヤ上の
定義は、暗黙のうちに、命令実行の順次性な性質
ということを含んでいる。並列動作が構築されて
いるような、例えばチヤネルの動作がCPUのプ
ログラムの実行と並列的であるような領域におい
ては、アーキテクチヤ中に、プログラマがCPU
プログラムを非同期I/O動作と同期させること
を可能ならしめる特殊な手段が設けられる。そし
てプログラマは、順次的に構築されてすべての命
令が順次的に開始及び終了されるということを正
しく仮定する。
何年も前に、高性能順次的マシンの設計者は、
命令を並列的に実行することがマシンの性能を改
善するために有用であるであろうということを認
識していた。この方向に沿う最初の試みは、命令
の実行の異なるステージに対して個別のハードウ
エア機構を設けることであつた。こうして、もし
命令の実行が“N”サイクルを要し、命令の各サ
イクルが異なるハードウエア機構を利用するな
ら、この設計構造は理論的には異なる完了ステー
ジ毎に“N”個の命令を実行することができよ
う、この概念は一般にはパイプライン化と呼ばれ
る。
パイプライン化マシンの設計者は、異なる程度
のパイプライン化、すなわち性能を与えるために
数個または多数のハードウエア機構を使用した。
尚、論理的インターロツク(例えばN番目の命令
入力情報がN−1番目の命令の出力から来るとい
うこと)及びハードウエア機能上での待ち合せに
より、パイプライン化されたマシンが、サイクル
毎に1つの命令というその論理的な限界よりも相
当に低い性能で動作するようにされることに注意
されたい。パイプライン化された370マシンの場
合(すべてのデータ及び命令がキヤツシユに存在
していると仮定して)、通常の商用コード上で3
マシン・サイクル毎に1命令という実行速度を得
ればよいと考えられている。3081及び3090は、
IBMシステム370のパイプライン化された高性能
システムの例である。これらのマシンは常に、順
次的な順序で命令を終了する。
さらに性能を向上するために、設計者は通常、
実行ユニツト、キヤツシユ及びデータ・バス上で
待ち合わせが問題となる場合にハードウエア機構
を倍加させるという施策をとることができ、これ
により非順次的実行の完了が可能となる。これら
のパイプライン化の拡張はハードウエア上の待ち
合せの問題を解消し、論理的インターロツクの影
響を低源する。(そのことは、例えば、最初の命
令が完了する前に“N”個よりも多数の命令が初
期化されることを可能ならしめる。) その性能の向上に対して支払われる代償はハー
ドウエアの追加であり、アーキテクチヤが要求す
る論理的順次性を維持するための制御の複雑さの
増大である。IBM91/95/195プロセツサは、シ
ステム360アーキテクチヤの浮動点動作のための
複数実行ユニツト及び非順次実行完了を利用した
ものである。また、CDC6600及び7600システム
も上述の拡張及びパイプライン化を利用してい
る。
本発明は、タグ付け及び計数スキームによつ
て、システム370アーキテクチヤの各汎用レジス
タ(GPR)に、そのGPR上で順次に実行されな
くてはならない演算のストリングを割り当てるこ
とを可能ならしめる独得の方法を与えるものであ
る。さらに、これらの割り当ては、他のGPRの
ための類似の演算ストリングと相互に混合するこ
とができる。この技術は、複数の独立な演算スト
リームの各々が、順次的ではあるが互いに共時的
に処理されることを可能ならしめる枠組みを与え
ることになる。この技術は各ストリーム内及び共
時的ストリーム間の両方で適正な論理ストリーム
を与え、これによりGPRの利用の論理的完全性
が保持される。
従来技術の文献 特開昭57−166649号公報は、システム370の16
個のGPRを256個のハードウエア・レジスタに改
名(renaming)する方法を記述する。これらの
レジスタは、GPRの前のロード命令上でアドレ
スされたメモリ位置の内容を含む。そしてもし、
後のロード命令がX2、B2及びD2によつて示され
たのと同一のメモリ位置に行くなら、このこと
は、ポインタ・スタツク(改名ポインタ記憶)の
完全に連想的に走査によつて決定される。このス
タツクの一部の内容は、以前のロードのメモリ・
データを含むレジスタのアレイ(拡張レジスタ)
中のレジスタのアドレスを含む。このデータは、
メモリからの実データのフエツチが実行され拡張
レジスタからのデータに比較されている間に直ち
に使用される。そして、データの不一致が生じた
ときに回復措置がとられる。
上述のように、この特許公開公報の意図と実施
技術は本発明とは全く異なる。
米国特許第3346851号は、特定のレジスタをシ
ンク/ソース(SINK/SOURCE)として使用
する命令と、この同一のレジスタをシンク/ソー
スとして使用する今後の命令との間に順次化を行
うためにタグ付けスキームを使用することを開示
する。簡単に述べると、これの構成は、各実行ユ
ニツトに関連づけられた“待ち行列指定(Queue
Designations)”と呼ばれる2つの4ビツト・フ
イールドを含んでいる。それらは、第2の実行ユ
ニツトのソース・オペランドが第1の実行ユニツ
トのシンク・オペランドを利用することになり、
第1の実行ユニツトが、第2の実行ユニツト中の
動作に先立つ動作を実行中であるときは何時でも
第1の実行ユニツトの“タグ”または識別子をつ
けてロードされる。もし上述の例において、第1
の実行ユニツトが第2の実行ユニツト中の動作よ
りも後の動作を実行中であつたなら、第1の実行
ユニツトは第2の実行ユニツトがこのソースを利
用し終るまでそのシンク・オペランドを第2の実
行ユニツトのソース・オペランド・レジスタへの
書込を禁止されることになる。このことは、F指
定子(Designator)と呼ばれる各実行ユニツト
に関連づけられた第2の組の3ビツト・フイール
ドの問合せによつて行なわれる。このF指定子フ
イールドは、ソース及びシンク・オペランドの両
方に使用すべき基本的なレジスタ名称、すなわち
1,2,3,4などを保持する。こうして、問合
せが実行ユニツトのシンク・オペランド・アドレ
スのソースF指定子に遭遇すると、その実行ユニ
ツトはそのシンク・オペランド・レジスタの更新
を阻止されることになる。この特許は、本発明と
は異なる様に動作するのみならず、次のような機
能的な差異もある。
(1) まだ未完了の命令と同じ程度に前の、同一の
シンク・レジスタを用いる命令はデコーダから
発行することができない。
(2) 実行ユニツトは、加算、乗算、割算、シフト
などのタイプに関連して特異的であり、もし命
令がデコードされたときにその特異的なユニツ
トが使用中であるなら、その命令はデコーダか
ら発行することができない。
米国特許第4313161号は、共用記憶に接続され
た複数のプロセツサを含むシステムを開示する。
これにおいては、他のプロセツサを“ロツク・ア
ウト”するために、記憶アドレス中でフラグ・フ
イールドが利用される。これはかなり慣用的な構
成である。
米国特許第3718912号は、連続した命令にレジ
スタ記憶スペースを割りあてることに関連する。
これにおいては、汎用レジスタの各々が、記憶さ
れたデータの性質を示す関連づけられたタグを持
つている。この特許は複数実行ユニツト・システ
ム、あるいは同一の実行ユニツト間の使用の同期
的な登録のための手段に関するものではない。本
発明で定義された特定のフラグ及びその用途は、
この特許の示唆するところとは全く異なる。
米国特許第3778776号及び第4334269号は、とも
に複数仮想メモリに関する。しかしこのどちらの
特許も、基本的には順次的であるアーキテクチヤ
における異なる汎用レジスタ上で、共時的な動作
ストリームの非順次的実行のために論理的な順序
づけを行うことには関与していない。
米国特許第4334269号は、複数の汎用レジスタ
をもつポツプ・アツプCPUの有効なアーキテク
チヤの定義をとり扱つている。これには、そこに
開示されたアーキテクチヤにより、ポツプ・アツ
プ・スタツクCPUと広く開連づけられた簡単な
コンパイラが、ポツプ・アツプ・スタツクをもた
ない複数GPRアーキテクチヤと広く関連づけら
れた複雑なコンパイラと同程度に少ない命令によ
りデータ処理アプリケーシヨンを実行することに
なる、と述べられている。この特許もまた、基本
的には順次的であるアーキテクチヤにおける異な
る汎用レジスタ上で、共時的な動作ストリームの
非順次的実行のために論理的な順序づけを行なう
ことは関与していない。
尚、先行技術調査の結果、次のような文献も見
出されたが、これらは、レジスタの割当てと管理
スキームを扱うこと以外には本発明にはあまり関
連がない。よつて、文献名を挙げるにとどめる。
米国特許第3611306号、米国特許第4373180号、
米国特許第4363096号、米国特許第4058711号、及
びIBMテクニカル・デイスクロジヤ・ブルテイ
ン(Technical Disclosure Bulletin)、Vol.
、No.11,1969年4月、pp.1496−1497のL.W.ス
ミス(Smith)による“命令順次化システム
(Instruction Sequencing System)”と題する論
文。
C 発明が解決しようとする問題点 本発明の主な目的は、複数非同期実行ユニツ
ト・ユニプロセツサの汎用レジスタに記憶され、
及び汎用レジスタに到達することによつてアクセ
スされたデータの論理的完全性を保証するための
方法及び装置を提供することにある。
本発明の別の目的は、上記レジスタを、命令ス
トリームに関連して非順次的に使用することを可
能ならしめる方法及び装置を提供することにあ
る。
本発明のさらに別の目的は、上記レジスタ中の
データの論理的完全性を保持するために、各汎用
レジスタと実行ユニツトに結合して、独持の方法
で、特殊な同期化タグ及びカウンタを使用する方
法及び装置を提供することにある。
本発明のさらに別の目的は、所与の汎用レジス
タを、ある単一の命令によつて記述された所与の
実行ユニツトのためのソース及びシンクとして同
時に使用することができるように、上記タグとカ
ウンタを使用する方法及び装置を提供することに
ある。
D 問題点を解決するための手段 上述の目的は、一般的には、単一のCPU内に
複数の実行ユニツトを含む高速複合マシンの汎用
レジスタに対するアクセスを制御するための装置
によつて達成される。本発明を利用することによ
つて、N個の実行ユニツトが異なる汎用レジスタ
をシンクまたはソースとして使用することにより
N個までの命令を同時に実行できると同時に、汎
用レジスタ(GPR)内でデータの論理的完全性
を保持できる。本発明は、順次的動作のみが実行
される場合に可能であるよりも相当に高い程度の
命令実行の並列性が可能ならしめられる。
各汎用レジスタのアクセス制御回路には、少く
とも4個の特殊目的タグ・フイールドのグループ
が関連づけられている。
また、N個の実行ユニツトの各々とともに2個
のタグ・タイプが利用される。各々の汎用レジス
タと各々の実行ユニツトに関連づけられたタグ
は、命令ユニツト、デコーダに接続された制御回
路と、GPRと、必要な論理的完全性を維持しつ
つレジスタの多重的使用を可能ならしめる個々の
実行ユニツトとともに使用される。簡単に述べる
と、このことは、個々のGPRと実行ユニツトの
間に実行ユニツト/GPRシーケンス・トレール
を記憶し、以て所与の実行ユニツトが特定の汎用
レジスタ(GPR)をシンクとして利用すること
が許可される前に、異なる実行ユニツトによる直
前のシンク動作が完了されていなくてはならない
ようにすることによつて達成される。同様に、単
数または複数の実行ユニツトによる所与のGPR
へのすべてのソースのアクセスが、後のシンク動
作が生じ得るようにする前に完了されることが保
証される。
E 実施例 E1 本発明の基本的概念 本発明の基本的概念は、第1図の高レベル機能
ブロツク図を参照することによつて最も良く理解
することができよう。すなわち、第1図は、本発
明のアーキテクチヤ上の環境を図示するが、より
広い意味では、任意の高速複合複数実行ユニツ
ト・プロセツサのための共通のアーキテクチヤ環
境を含む。こうして第1図に開示されているハー
ドウエアは計算システムの演算の3つの本質的な
フエーズ、すなわち命令のフエツチと、命令のデ
コードと、命令の実行を行い得る。命令ユニツト
10は、メモリからの命令にアクセスし、関与する
さまざまなアドレス発生フエーズを包含し、それ
らを局所命令レジスタに配置するという機能を実
行する。デコーダ及び制御機構(CTL)12は
個々の命令をデコードし、それをさまざまな実行
ユニツトに割当て、実行ユニツトに、所与の命令
に対応してシンクまたはソースとして使用すべき
特定の汎用レジスタを割当てる。本発明の目的に
とつてさらに重要なことは、この制御機構が、さ
まざまな同期化タグ・フイールドが動作のレジス
タ割当てフエーズの間にセツトされるように、必
要な動作をセツトアツプすることである。これら
のタグ・フイールドはアクセスが許可される前の
動作の実行フエーズの間にチツクされるが、これ
については後で詳しく説明する。メモリ14は実
際上慣用的なものであり、命令にアクセスするた
めの命令ユニツト、またはデータにアクセスしま
たはデータを記憶するための実行ユニツトによつ
てアドレスされる。
汎用レジスタ(GPR)16は実際上慣用的な
ものであるが、それらの動作に関しては、特殊な
複数の同期化タグ・フイールドが設けられている
という点で本発明に独特である。これについて
は、後に第2図を参照して詳細に説明する。
同様に、N個の実行ユニツト18は実際上慣用
的なものであつて、それらは同一のユニツトであ
つてもよく、あるいは異なる機能をもつ異なるユ
ニツトであつてもよい。これらの能力及び機能は
もちろんデコーダによつて知られている必要があ
ろう。本発明に必須である実行ユニツトの固有的
特徴は、個々の実行ユニツトに機能的に関連づけ
られたタグ・フイールドを設けたことにある。こ
れについても第2図に関連してより詳しく説明す
る。
本発明の本質的な特徴は、独特の方法で管理さ
れる実行ユニツトと、汎用レジスタの両方に特殊
な同期化タグを設け管理することにある。そし
て、汎用レジスタの必要な論理的完全性が維持さ
れ、論理的な独立なレジスタを用いる動作は命令
ストリーム中のもとのシーケンスから外れて実行
することができる。
E2 汎用レジスタ及びタグ・フイールド これらのタグ・フイールド及びその機能的位置
は第2図に明確に示されている。尚、第2図中の
数字12,16及び18は第1図と同一の機能ブ
ロツクを示すことに注意されたい。
個々のタグの特定の定義及びその説明に進む前
に、本発明の基本的な思想が、ユニツトを実行す
るためにさまざまな汎用レジスタの割当てシーケ
ンスの軌跡を保つことであるこてが理解されなく
てはならない。各実行ユニツトと汎用レジスタ内
に配置され、または関連づけられたさまざまなタ
グ・フイールドは、この機能を実行するために利
用される。
さらに詳しくは、各実行ユニツトには、実際
上、そのユニツトがシンク動作のためにレジスタ
を時期尚早に使用することを防止するべく、この
ユニツト自体の要求の直前のシンク動作のために
どの実行ユニツトにレジスタの使用が割当てられ
たかを通知される。同様に実行ユニツトは、その
実行ユニツトがレジスタをソースとして使用でき
るようになる直前にどの実行ユニツトがそのレジ
スタをシンクとして使用しなくてはならないかを
通知される。理解されるように、このことは、適
正なソース値またはオペランドが、要求している
実行ユニツトに与えられることを保証する。
第2図を参照すると、ブロツク16において、
複数のタグ・フイールドが各GPRと関連づけら
れていることが見てとれる。これらは、第2図で
SINK FWD TAG、SINK EXEC TAG、SRC
TAG(O−N)及びSRC CTR(O−N)として
定義されている。実行ユニツト・ブロツク18を
参照すると、各実行ユニツトには、例えば個々の
命令レジスタ中で、EXECユニツトIDタグ、複数
のSK V SRC TAG(1−M)(M=16までの整
数)、動作(operation)を保持するためのフイー
ルド及びメモリ・オペランドが関連づけられてい
る。
尚、ついでながら、SK V SRC TAGの(1
−M)のタグが複数である理由は、所与の動作の
ために2個以上のGPRにアクセスする必要があ
る場合の動作を許容するためであることに注意さ
れたい。
このシステムの以下に説明を理解しやすくする
ために、各フイールドに何が格納されその全体的
な動作スキームにおける概要的な機能が正確には
どのようであるかを説明するために、各タグの定
義を次のとおり与えておこう。
シンク前方タグ(第2図ではSINK FWD TAG
と表記) 各GPRに関連づけられ、どの実行ユニツトが
シンクとしてGPRを使用する権限を与えられた
最後のユニツトであり且つまだこの権限を実行し
ていないかを記述すりタグ(または識別子)フイ
ールド。もし未実行の要求をもつ実行ユニツトが
ないなら、そのタグは“ホーム”・ステータスに
あることになる。
シンク実行タグ(第2図ではSINK EXEC
TAG) 各GPRに関連づけられ、どの実行ユニツトが
流にシンクとしてGPRを利用することができる
かを記述するタグ・フイールド。もし保留の要求
をもつ実行ユニツトがないなら、そのタグは“ホ
ーム”・ステータスにあることになる。
ソース・タグ(O−N)(第2図ではSRC TAG) 各GPRに関連づけられ、実行ユニツトにGPR
をソースとして使用する権限が与えられた時点で
シンク前タグを記述するタグ(もし動作がその同
一のGPRをシンクとして使用するなら、このタ
グは活動化されない。)連続的なソース・タグが、
連続的な未実行ソース要求上で異なるシンク前方
タグとともに利用されることになる。
ソース・カウンタ(0−N)(第2図ではSRC
CTR) 同一のシンク前方タグとともにGPRをソース
として使用する権限を与えられた実行ユニツトの
数をカウントするカウンタ・フイールド。これは
特定のソース・タグと関連づけられている。その
ソース・タグに対していかなる要求も保留状態に
ない場合、タグとそれに関連するカウンタは“ホ
ーム”・ステータスにある。
実行ユニツトIDタグ(第2図ではEXEC UNIT
ID TAG) 各実行ユニツトには永久的にIDタグが割当て
られている。
実行ユニツト・シンクまたはソース・タグ(第2
図ではSK V SRC TAG(1−M)) 実行ユニツトがGPRをソースまたはシンクと
して使用する権限を与えられるとき実行ユニツト
が受け取る動作に応じて、めいめいがシンクまた
はソース・タグのどちらかである。実行ユニツト
中のタグ・フイールド。
第3図及び、第4図ないし第9A、9B図のフ
ローチヤートを参照してシステムの順次的動作の
特定の説明を行う前に、本発明の構成が各タグフ
イールドをアーキテクチヤ上どのように使用する
かについて一般的な説明を与えておこう。この説
明は本発明の概念の理解を助けるものであると信
じる。
すなわち、シンク前方タグは実質的にシステム
の動作の割当サイクルの間に利用される。このと
き特定のGPRが順次的にさまざまな実行ユニツ
トに割当てられ、その割当の列はシンク前方タグ
に反映される。デコーダ制御がGPRを実行ユニ
ツトに割当てることを希望する場合は常に、シン
ク前方タグがデコーダ制御に、そのレジスタをシ
ンクとして使用した最後の実行ユニツトを通知す
る。
シンク実行タグは動作の実行フエーズの間に利
用される。任意の時点で、シンク実行タグは、あ
るシンク動作に対してどの実行ユニツトが最後に
レジスタを利用したのかを表示する。各実行ユニ
ツトがGPRをシンクとして利用するにつれて、
そのユニツト自体のIDがシンク実行タグ・フイ
ールド中に配置される。
ソース・タグ・フイールドは、現在のGPRを
ソースとして使用する要求された使用の直前に
GPRをシンクとして利用した実行ユニツトの実
行ユニツトIDを記憶する。このように、所与の
ソース動作が生じるためには、シンク実行タグが
ソース・タグに等しくなくてはならない。
ソース・カウンタは、特定のGPR値をソース
として使用している実行ユニツトの数の計算値を
保持する。各実行ユニツトはそれと同一のシンク
値を所望しなくてはならない。許容し得るアクセ
スの数は、所与のソース・タグに関連づけられた
ソース・カウンタによつて表示され、割当フエー
ズの間に必要応じてインクリメントされる。
第2図に示されている複数のソース・タグ/ソ
ース・カウンタ対は、異なるシンクを必要とする
2つ以上の未実行ソース動作が待機され得るとい
う条件を扱うためのものである。理解されるよう
に、ソース要求がなされるときは何時でも、
GPR制御が、どのソース・タグ・フイールドが
一致するかを判断する必要がある。尚、N個のソ
ース・タグ/ソース・カウンタ対が図示されてい
るけれども、実際の環境では、そのような対は、
わずかの個数(おそらく2個)で必要且つ十分で
あろう。
ここで実行ユニツトを参照すると、実行ユニツ
トIDタグは単に、特定の実行ユニツトのコード
番号、すなわち、1〜Nを示すにすぎない。理解
されるように、このIDタグは、システム全体を
通じて一貫して使用され、実行ユニツト識別子と
して利用されることになる。例えば、これらの実
行ユニツトIDタグは必要に応じてシンク前方タ
グ・フイールドと、シンクまたはソース・タグ・
フイールド(SK V SRC TAG)に格納され
る。
実行ユニツト中のシンクまたはソース・タグ・
フイールドは、前記定義で述べたように、いかな
る場合にも、要求を出している実行ユニツトによ
つて現在要求されている動作が許容される前に最
も最近に実行されたに違いない特定のシンク動作
を表示する。このとき、シンクとソースのどちら
の要求がなされたかに拘らず、実際のタグ・フイ
ールドは、他の実行ユニツトによる直前のシンク
使用要求を反映する。
もし3個以上のGPRに関与する動作を扱う必
要がある場合には、シンク/ソース・タグ・フイ
ールドの数が増加されなくてはならない。明らか
なように、このシステムにおいてはGPRが16個
しかないので、この数は最大16である。しかし、
本発明の趣旨から離れることなくより少ない数の
ソースを使用することもできる。また明らかなよ
うに、所与の動作が単数または複数のGPRから
のシンクまたはソースを必要とする特定の実行ユ
ニツトによつて実行されるためには、その動作が
完了する前に各GPR中で利用可能条件が満足さ
れる必要があろう。各GPR毎のアクセス動作は、
本質的に、独立であるが、単一のGPR及びそれ
に接続されたレジスタ・アクセスのための制御の
みを注目する後記の例(第7図)のとおりであ
る。
今までの説明から、本発明は実際上アーキテク
チヤ的なものであり、従つて、ここに開示する実
施例は、本発明を実施するための構成例をアーキ
テクチヤ的に開示するものであることが容易に理
解されよう。必要なレジスタ位置はすべて第2図
に明確に表示され、本発明を実施するための必要
な制御シーケンスは第4図ないし第9図のフロー
チヤートに明確に示されている。
システム・ハードウエアの必要とされる実際の
動作はきわめて簡単でよく知られたものである。
本質的にはその動作には、タグ・フイールドにア
クセスするGPRと実行ユニツトに関連づけられ
た制御メモリの必要なタグ・フイールドにさまざ
まな実行ユニツトIDをゲートすることと、必要
な比較を行うことと、必要に応じて1つのタグ・
フイールドからの別のタグ・フイールドへタグを
伝播することを含む。これらの機能を実行するた
めの特定のハードウエアは旧く、この分野でよく
知られている。また、制御シーケンスの設計は、
後に示すフローチヤートから、この分野の当業者
には明らかであろう。
第1図及び第2図に図示されているように、制
御機構12はシステム全体に分散され、それゆえ
制御動作は関連づけられた機能ユニツトである。
各制御機構の必要な動作シーケンスは第4図ない
し第9A、9B図のフローチヤートに明確に示さ
れている。
尚、本発明の任意の物理的実施例が、本発明の
技術思想から逸脱することなく多くの態様をとり
うることももちろん理解されるであろう。必要と
されるさまざまな機能は、ハードウエアと慣用的
なROM制御メモリの組み合わせ、または全体を
ハードウエアで構成することにより達成すること
ができる。しかし、本発明の主な用途は高速複合
処理システムであるので制御機構をすべてハード
ウエアにするのが好ましい。実際のタグ・フイー
ルド記憶位置は、第2図に示すように、さまざま
な実行ユニツト及びGPR中に位置づけられてい
る。
第4図ないし第9図のフローチヤートを参照し
て本発明の動作を説明する前に、第3図の例を参
照しておくことにより開示されたシステムの全体
の動作を理解することが一層容易になると考えら
れる。第3図はシステム中でまさに起こることを
明確に図示したものである。尚、第3図では単一
のGPRにしか言及されていないが、それと全く
同一のことが、連続的なシンク及びソース動作が
生じるにつれてシステム中の各GPRで起こるこ
と理解されたい。
E3 動作の具体例 第3図を参照すると、特定のGPR及びその
GPRをシンクまたはソース動作に利用する複数
の異なる実行ユニツト内でさまざまな制御シーケ
ンス及びタグをセツトするためにこのシステムが
どのように動作するかということの例が示されて
いる。上述のように、この例は特に単一のGPR
に係るものであるが、命令ユニツト・デコーダま
たは実行ユニツトによつて処理されつつある所与
の命令ストリームによつて参照され得る他の任意
のGPRにおいてもそれと全く同一のタイプの動
作が生じる。
第3図においては、この特定の例に関係がある
タグ・フイールドのみが示されている。
上述のように、この例は単一のGPRレジスタ
の制御の範囲内のデータの流れ及び動作に関与
し、すなわち、すべての要求は同一のGPRレジ
スタに対するものである。こうして、第3図の左
方において、例えば4つのシンク要求と1つのソ
ース要求を入力する5つのレジスタ要求が互いに
順次的であるが、異なるレジスタを要求するこれ
らの命令の間で互いに介在するきわめて多くの命
令があり得ることが理解されよう。しかし、第7
図の例に関連して記述される動作は他のレジスタ
においても制御ユニツトの機能と動作において同
一であることも理解すべきである。
この例に進む前に、第3図は実質的に5個の列
を含むことに注意されたい。シンク前方タグ、シ
ンク実行タグ、ソース・タグ“(0)”及びソー
ス・カウンタ“0”と名付けられた4つの列はす
べて、第2図に明確に示されているようにGPR
制御と関連づけられている。実行ユニツトID及
びシンクまたはソース・タグと名付けられた列は
実行ユニツト制御に関連づけられている。
シンク前方タグ、シンク実行タグ、ソース・タ
グ“0”及びソース・カウンタ“0”と名付けら
れた列は各々1つのレジスタ位置をあらわす。こ
れらの列における異なるブロツクは、この例の異
なる順次的な点においてレジスタ・フイールドに
記憶された値をあらわす。実行ユニツトID及び
シンクまたはソース・タグと名付けられた列にお
いては、各ブロツクが表示された各実行ユニツト
中の異なるレジスタをあらわす(すなわち、この
例では5個の異なる実行ユニツトが示されてい
る)。そして、判断された値がまた、判断された
シーケンスの点で、レジスタの内容をあらわす。
丸で囲まれた動作番号すなわち〜はこの例
におけるシーケンス点をあらわし、特定の与えら
れた命令シーケンスによつて必要とされるデータ
の論理的完全性を保証するために、実際に特定の
GPRレジスタを所与の実行ユニツトを割当てて
GPR制御と実行制御の両方における特定のさま
ざまな同期化タグをセツトするべく命令デコーダ
と制御機構によつて行なわれる順次的動作に関す
る。これらの番号付けされたシーケンス点は1か
ら10まで順次的である。尚、同一のシーケンス番
号があらわれている箇所では、2つの表示された
動作がほぼ並列的に起こつていることに注意され
たい。
最後に、実行ユニツトID及びシンクまたはソ
ース・タグと名付けられた列と、シンク実行タグ
と名付けられた列の間に亘る破線矢印は、実行ユ
ニツトによる動作の実行フエーズの間に生じ、レ
ジスタ及び実行ユニツト・タグの割当てとは独立
に起こることにも注意されたい。この矢印は、図
示されているように、実行ユニツトIDのシンク
実行タグへの転送を意味する。さらにまた、実行
フエーズは、最初の実行ユニツトがGPR制御か
ら必要なソースまたはシンク・レジスタを得るこ
とができるようになるまで始まることができない
ことも理解されるべきである。
第3図を参照すると、この図の左側のシーケン
ス点は、実行ユニツト6(EXEC.6)の特定
のGPRに対する将来のシンク動作のためのデコ
ード制御による要求をあらわす。最初に、GPR
制御中のすべてのタグ及びカウンタが“ホー
ム”・ステータスまたは“0”にセツトされるこ
とに注意されたい。このことは、現在GPRシン
ク前方タグ・フイールドにあるシンク前方タグ
“0”を、実行ユニツト6のシンクまたはソー
ス・タグ・フイールドへ転送させる。現時点で実
行ユニツト6のIDタグは、GPRのためのシンク
前方タグ・フイールドに格納されている。
次に生じるシーケンスは、デコード制御が、実
行ユニツト8のためにそのGPRのシンクとして
の将来の使用を要求することである。このこと
は、現在のシンク前方タグ6を実行ユニツト8の
シンクまたはソース・タグ中に配置させ、それと
同時に実行ユニツト8のためのIDタグがGPRの
シンク前方タグ・フイールド中に配置される(シ
ーケンス)。
シーケンス点が生じると、デコーダ制御は、
実行ユニツト1のためにGPRの将来のシンクと
しての使用を要求し、これにより(の時点で)
シンク前方タグ8が実行ユニツト1のシンクまた
はソース・タグ・フイールドに格納され、また実
行ユニツト1のIDがGPRのシンク前進タグに配
置される。この時点で、実行ユニツト6,8及び
1による3つの連続的なシンク要求のそれぞれが
起こり、何の動作も行なわれていないので、
GPRのシンク実行タグは依然としてゼロにセツ
トされたままである。
シーケンス点で、実行ユニツト4のために、
デコード制御によつて将来のソースを求める要求
が行なわれる。これにより、シーケンス点で、
実行ユニツト1のためのシンク前方タグが実行ユ
ニツト4のシンクまたはソース・タグ・フイール
ド中に配置される。それと同時に、これはソース
要求であるので実行ユニツト1を記述するGPR
のシンク前方タグを不変にとどめるべしという判
断がなされる。
同時に、シーケンス点の間に、実行ユニツト
1のための実行ユニツトIDがソース・タグ“0”
に配置され、ソース・カウンタ“0”は1にセツ
トされる。これにより、実行ユニツト4がGPR
をソースとして使用することを要望するときに実
行ユニツト1が最初にそれをシンクとして使用し
ていることを保証する。ソース・カウンタ“0”
を1にセツトするということは、実行ユニツト1
のシンクとして先使用の後に、唯一つの実行ユニ
ツトのみがGPRをソースとして使用するために
待機していることをあらわす。
シーケンス点は、デコード制御による実行ユ
ニツト3のための将来のシンク動作の要求をあら
わす。これにより(シーケンス点で)GPRの
現在のシンク前方タグ(すなわち実行ユニツト1
のID)が実行ユニツト3のシンクまたはソー
ス・タグ・フイールドに転送されることになる。
同時に、シーケンス点の間に、実行ユニツト3
の実行ユニツトIDがシンク前方タグ中に配置さ
れる。
この処理は、この特定のGPRがデコーダによ
つて、要求を出している実行ユニツトに割当てら
れることになつたときに再び開始される。
今まで起こつたことを要約すると、シーケンス
点の終わりに、シンク前方タグが実行ユニツト
3のIDにセツトされ、実行ユニツト6,8,1,
4,3が、第3図に示すようなシンクまたはソー
ス・タグを含む。
ソース・タグ“0”は実行ユニツト1の実行ユ
ニツトIDを含み、ソース・カウンタ“0”は1
にセツトされることになる。
ここで、実行ユニツトが動作を開始しつつある
と仮定しよう。理解されるように、実行ユニツト
6のみが、シンク動作のためGPRにアクセスを
得ることができるようになつている。これは、そ
のユニツトのシンクまたはソース・タグが“0”
であるからであり、この値は、現在そのタグ・フ
イールドに格納されているシンク実行タグに一致
する。こうして、シンク要求(REQ.SK.)が許
諾され、実行ユニツト6によつて実行された動作
の結果はGPRに適宜格納され、それと同時に実
行ユニツト6の実行ユニツトIDが、GPRのため
のシンク実行タグに配置される。この時点で、上
述と同じ理由で実行ユニツト8のみがGPRにア
クセスを得ることができる。なぜなら、実行ユニ
ツト8のシンクまたはソース・タグが、現在シン
ク実行タグ・フイールドにあるシンク実行タグに
一致する“6”だからである。従つて、その動作
が許容され、実行ユニツト8の実行ユニツトID
がシンク実行タグ・フイールドに格納されること
になる。次に、実行ユニツト1と制御機構が上記
と全く同様に動作し、その実行ユニツトIDが
GPRのためのシンク実行タグ・フイールドに配
置される。
この時点で、実行ユニツト4は制御機構に対す
るソース要求であり、シンクまたはソース・タグ
がシンク実行タグ・フイールドに比較される。そ
して、それらはともに実行ユニツト1のための実
行ユニツトIDを含んでいるので、一致が見出さ
れる。しかし、これはソース動作であるので、シ
ンクまたはソース・タグはまたソース・タグ
“0”にも比較され、一致が見出されるので、ソ
ース要求(REQ.SRC.)が許容される。ソース・
タグ“0”はここで“ホーム”・ステータス、す
なわち(“0”)にリセツトされ、ソース・カウン
タ“0”が“0”にリセツトされる。これはソー
ス動作であつたので、実行ユニツト1を識別する
シンク実行タグは不変のままである。
次は、実行ユニツト3がシンク要求を出す。実
行ユニツト3のシンクまたはソース・タグは現在
実行ユニツト1の実行ユニツトIDにセツトされ
ており、これがシンク実行タグ・フイールドと比
較されてその2つの値の一致が見出される。従つ
て、シンク要求が許諾され、次に実行ユニツト3
のための実行ユニツトIDがシンク実行タグ・フ
イールドに入力される。
この時点で、シンク前方タグが現在実行ユニツ
ト3の実行ユニツトIDにセツトされ、同様に、
シンク実行タグ・フイールドが実行ユニツト3の
実行ユニツトIDにセツトされていることが見て
とれよう、制御機構は周期的にこの条件をチエツ
クし、その両タグが等しく且つソース・カウンタ
が“0”にセツトされているときは常に、その両
方タグが“ホーム”・ステータスにリセツトされ
る。これは、GPRの使用のために現在待機して
いる実行ユニツトがないことを意味する。
前述のように、上記の例は単一のGPRに対す
る動作を示す。しかし、他の任意のGPRについ
ても各GPRの制御内で全く同一の動作シーケン
スが生じ得ることを理解されたい。また、この例
では、ソース.タグ“0”とソース・カウンタ
“0”のみが使用されたことに注意されたい。し
かも、もし異なるシンク値に基づく2個以上のソ
ース要求が存在していたとしたら、以下のソー
ス・カウンタ及びソース・タグはセツトされてい
たであろうし、特定の実行ユニツトがソース動作
を要求したときは何時でも、GPR制御が、可能
な一致を求めてそのすべてのソース・タグとイン
タラクシヨンしたであろう。こうして、多くのソ
ース・タグ/ソース・カウンタ対が存在したかも
しれない。現実的には、この数はおそらくハード
ウエアの制約により限定されるであろう。
同様に、実行ユニツト内に格納された任意の動
作がシンクまたはソースとして2個以上のGPR
を要求するということの可能性がある。ある所与
のGPRに関する限りは、そのGPRに対するシン
クまたはソース要求はそのGPRの制御によつて
認識されるのだけれども、別のGPRにおけるシ
ンクまたはソースの使用はこの例と全く同様に処
理され、個々のタグが一致する場合にのみその
GPRに対する要求が許諾されることになる。
これで第3図の説明を完了する。この例から
は、システム中で動作の適正なシーケンス(すな
わち、GPRへのアクセス)が保たれ、GPR制御
が、もとの命令シーケンスから外れてGPRレジ
スタがシンクまたはソースとして使用されること
に由来する論理的な矛盾を自動的に防止するよう
に適切に働くことが見てとれよう。
こうして、これらの制御により、個々のレジス
タ動作が、命令ストリーム中のシーケンスから外
れてシステム内で生起し得ることになる。しか
し、この制御を使用することにより、レジスタ内
のデコーダ流の論理的完全性が完全に維持され
る。実行ユニツトは非同期的に動作するとして
も、それらは事実上互いにオーバーランしたり、
不正確なデータにアクセスしまたはそれを記憶す
ることはあり得ない。
E4 動作のフローチヤート 本発明の動作の詳細は、第4図ないし第9図の
フローチヤートを参照することにより最も良く理
解することができる。それらのフローチヤート
は、GPR、実行ユニツト及びデコーダ制御によ
つて実行されなくてはならない動作シーケンスを
記述する。
第4図は、特定のGPRが、デコーダによる直
接の使用、または将来の使用のためにGPRを特
定の実行ユニツトに割当てるべくデコーダによつ
て使用するために、シンクとして要求されている
場合の本発明のシステム動作フエーズにおける
GPR制御のフローチヤートを含む。
第5図は、GPRのソースとしての使用が、デ
コーダによる即時的使用、または実行ユニツトへ
の将来の割当てのために要求されている場合の制
御シーケンスを開示する、第3図にきわめて類似
するGPR制御のフローチヤートである。
第6図は、シンク要求が、例えばこのシステム
の動作の実行フエーズの間に、実行ユニツトによ
る即時的使用のための要求である場合に生じなく
てはならない事象をあらわす実行シーケンスのた
めのGPR制御シーケンスのフローチヤートであ
る。
同様に、第7図は、要求が、実行が割当て動作
に関する期間に実行ユニツトによる即時的使用を
求めるものである場合の、ソース要求の実行フエ
ーズのフローチヤートである。
第4図の参照すると、ブロツク1は単に、デコ
ーダ制御機構によつてGPRに対するシンク要求
がなされていることをあらわす。ブロツク2にお
いては、デコーダがGPRに、アドレス生成の目
的等のために、デコーダ自体の即時的要求をして
いるのか否かについての判断が行われる。もしこ
れが正しければ、システムはブロツク3に進む。
ブロツク3にいては、先ず、前のシンクまたはソ
ース動作が、そのGPRに関与する実行中で未完
了であるか否かについての判断が行なわれる。も
しそうなら、ブロツク4で示されるように、その
ような前の動作が完了するまでシステムは待機す
る。
この時点で、制御は、特定のGPR使用を求め
るデコーダ要求に承認が与えられるところのブロ
ツク5に進む。
ブロツク3の判断を行うための1つの方法は、
シンク前方タグ、シンク実行タグ及びすべてのソ
ース・タグがすべてのゼロであるかどうかを判断
することである。このことは、その特定のGPR
が利用可能であることを意味する。
ブロツク1に戻つて、次に、デコーダがデコー
ダ自体の即時的使用のためにGPRを要求してい
るのではないことをシステムが示していると仮定
しよう。すると、これによりGPR制御はブロツ
ク6へと分岐され、そこで、デコーダがある実行
ユニツトのためにGPRの将来の使用を求める要
求をしているかどうかの判断がなされる。ブロツ
ク6での判断が肯定的であると仮定すると、シス
テムはブロツク7に分岐する。ブロツク7は、そ
のGPRに関連づけられた現在のシンク前方のタ
グをデコーダ制御にひき渡させ、デコーダ制御は
そのタグを、割当てられた実行ユニツトに送るこ
とになる。シンク前方タグ中には、特定の命令の
ための実行ユニツトIDタグが格納される。これ
により、現在の動作シーケンスが完了し、デコー
ダが、デコード及びレジスタ割当てのために別の
命令を受け入れる準備ができたことになる。
第5図を参照すると、これは、特定のGPRを
ソースとして使用することを求める要求がなされ
た場合のGPR制御の必要なシーケンスを規定す
るフローチヤートである。この図において、ブロ
ツク1はソース要求のデコーデイングを示す。ブ
ロツク2,3,4及び5は、それらがソース
GPRに対するものであることを除いては、第4
図のブロツク2,3,4及び5と実質的に同一で
あるかまたは同一の機能を実行する。これらは単
に、デコーダ制御が、デコーダ自体の即時的使用
のため、または実行ユニツトのためのソースとし
てGPRを将来使用するために、特定のGPRを使
用することを要望する状況を検出するにすぎな
い。デコーダの即時的使用を得るために、ブロツ
ク3の判断が否定的でありブロツク5で要求が許
容されるまで、継続的にGPR制御が、そのGPR
に関連づけられた制御ビツトを監視する。
さて、第5図のブロツク2の判断で否定的応答
がなされたとしよう。すると、第5図のブロツク
6が、GPRに対する要求が、デコーダ制御によ
る実行ユニツトのための将来の使用を求めるも
の、すなわちGPR割当てか否かの判断という、
第4図のブロツク6に類似の判断を行う。このブ
ロツク6での判断が肯定的であると仮定すると、
GPR制御は、ソース・タグが使用可能であるか
否かを判断するブロツク7に進む。尚、このシス
テムの前の説明で、特に第2図に関連して、この
システムでは単数または複数のソース・タグ/ソ
ース・カウンタが利用可能であると述べたことを
思い出されたい。もしそのようなタグが1つしか
利用可能でないなら、システムはソース要求を1
つしかスタツクできないが、もしそのようなタグ
が3つあれば、システムは3つのソース要求をス
タツクすることができる。本質的には、ブロツク
7の判断は、新しい利用可能なソースをさがすか
または、現存するソース・タグの数が限界に達し
ていないかどうかを判断している。そのどちらも
不可であるなら、GPR制御は、システムが、特
定のGPRがソース・タグを利用可能とするため
に十分なソース動作を処理するまでGPRの制御
ビツトを監視する。
ブロツク7の判断が肯定的であると仮定する
と、システムは、ブロツク9と12に並列的に進
行する。
ブロツク9では、GPRの現在のシンク前方タ
グがソース・タグに等しいか否かの判断がなされ
る。もしそうなら、そのことは、この要求が、
GPR中のその同一の値に応じてソース動作を要
求する少なくとも第2の要求であることを意味す
る。この場合、GPR制御はブロツク10に分岐
し、そこで、ソースのアクセスが開始されるとき
に適正な数のアクセスがGPRに許容されるよう
にソース・カウンタが1だけインクリメントされ
る。ブロツク9での判断が否定的であると仮定す
るとGPR制御はブロツク11へ進む。
ブロツク11では、2つのことが起こる。すな
わち、GPR制御がシンク前方タグをGPRのソー
ス・タグ・フイールドに移送する。さらに、
GPR制御はまた、ソースカウンタを1だけイン
クリメントさせる。尚、これらの動作はすべて、
第3図のシーケンス点に明確に示されているこ
とに注意されたい。
ブロツク12では、GPR制御が、シンク前方
タグをデコーダ制御機構に移送させる。デコーダ
制御はその一方で、シンク前方タグが、実行ユニ
ツトに関連づけられたシンクまたはソース・タ
グ・フイールドに格納されている場合に、そのシ
ンク前方タグをその実行ユニツトにひき渡させ
る。制御シーケンスは次に、将来の使用を求める
ソース要求が許諾されたことを示し、手続はブロ
ツク12の底から脱出する。
第6図の、シンク動作のためにGPRを即時的
に使用するための、実行ユニツトの1つによる要
求をあらわす制御フローチヤートである。
第6図はブロツク1は、実行ユニツトのために
シンクとして即時的にGPRを使用する要求が
GPR制御によつて検出されたことを示す。次に
制御シーケンスはブロツク2に進む。このブロツ
クにおいては、実行ユニツトによつて提供される
シンク前方タグが、現在特定のGPR中にあるシ
ンク実行タグに等しいか否かの判断がなされる。
この判断は、命令ストリームによつてGPRに割
当てられた直前のシンク動作が完了しているか否
かを確立する。要約すると、各実行ユニツトが動
作を完了すると、その実行ユニツト自体のIDが、
GPRのシンク実行タグ・フイールド中にセツト
される。さらに、実行ユニツト中に格納されたシ
ンク.タグは、その動作が、現在の実行ユニツト
の要求の直前のGPRソース要求を含んでいたよ
うな実行ユニツトの識別子を表示する。こうして
ブロツク2の判断により、GPR中のデータの無
矛盾性または論理的完全性が保証される。ブロツ
ク3は、理解されるように、すべての実行ユニツ
トからの、ブロツク2に記述した条件を、GPR
制御によつて継続的にモニタすることを単に示す
にすぎない。
ここで、ブロツク2における判断で肯定的な結
果が検出され、GPR制御がブロツク4に進むと
仮定しよう。すると、ブロツク4では、ゼロより
大きいカウンタ値をもち、GPRシンク実行タグ
に等しいソース・タグが存在するか否かの判断が
行なわれる。この判断は、GPR中に格納された
現在の値に使用を要求する別の実行ユニツトによ
りシステム中で未完了である別のソース動作が存
在する間に、実行ユニツトが現在そのGPRをシ
ンクとして利用しようと試みているか否かを判断
するために利用される。
この動作は、第3図のシーケンス点を参照す
ることにより、よりよく理解される。そこで、実
行ユニツト3が、GPRのシンクとしての使用を
求めているが、実行ユニツト4がまだGPRのソ
ースとしての使用を要求していないと仮定する。
この場合、この例に示されているソース・タグ
“0”は依然として実行ユニツト1のIDにセツト
され、ソース・カウンタは依然として1にセツト
されていることになる。(この例においては、)ブ
ロツク74において、実行ユニツト3によつてな
された判断がこの条件を検出し、実行ユニツト4
がそのソース要求を実行してしまうまで実行ユニ
ツト3によつてなされたシンク要求はブロツク2
を介して待機する必要があり、ソース・タグ及び
シンク・カウンタがともにゼロにリセツトされ
る。
次に、システムがブロツク6に進むと仮定す
る。ブロツク6においては、GPR制御が、シン
ク使用要求を許容し、GPRのシンク実行タグの
現在の値が実行ユニツトIDタグ、例えば、GPR
をシンクとして使用することを許諾されたばかり
の実行ユニツトIDタグと置き換えられる。制御
シーケンスは次に、GPRのシンク実行タグが
GPRシンク前方タグに等しいかどうかの判断が
なされるブロツク7に進む。もしこの判断の結果
が否定的であるなら、手続は完了する。判断ブロ
ツク7の結果が肯定的であるとシーケンスはブロ
ツク8に移動する。ブロツク8では、GPRのす
べてのソース・カウンタがゼロに等しいか否かの
判断がなされる。もしこの判断の結果が否定的で
あるなら、手続は終了する。この判断は意味は、
それ以上のソース動作がGPR中ではまだ未完了
であり、許容されたばかりの動作に応答してタ
グ・フイールドを変更する必要はない、というこ
とである。
次に、ブロツク8の判断が肯定的であると仮定
すると、システムはブロツク9に進む。GPR制
御は、ブロツク9に到達すると、どの実行ユニツ
ト中にも、このGPRに関与して未完了である前
のシンクまたはソース動作が存在しないことを示
す。この制御は、シンク実行タグ及びシンク前方
タグをして、ビロにリセツトさせるかまたは“ホ
ーム”・ステータスにセツトさせる。
尚、シンク実行タグ及びシンク前方タグの等し
いセツトが“ホーム”・ステータスに変更されな
い場合にさえも、システム制御が動作を行うこと
になることに注意されたい。ブロツク9からの脱
出がこの手続の完了を示す。
次に第7図を参照すると、このシーケンスは、
GPRのソースとしての即時的な使用を要求する
実行ユニツトの要求をあらわす、このことはその
ブロツク1に明示されている。ブロツク2の制御
シーケンスは、要求を出している実行ユニツトに
よつて提供される。ソース・タグがGPRの現在
のシンク実行タグと等しいか否かの判断を引き起
こす。もしこの判断に対する答えが否定的である
なら、そのことは、要求されたソース・オペラン
ドが前のシンク動作によつてGPR中に配置され
ておらず、従つて制御は、適正なシンク実行タグ
が配置されるまでブロツク3を経由して待機す
る。
この判断の結果が肯定的であると仮定すると、
システムはブロツク4と5に並列に進む。ブロツ
ク4はソース要求が許諾されたことを示し、ブロ
ツク5はさらなる判断を開始する。このブロツク
5において、GPR中のソース・タグが実行ユニ
ツトからのソース・タグに等しいか否かの判断が
行なわれる。先ずその判断結果が否定的であると
仮定する。このことは実行ユニツトに送られた動
作が、シンクGPRに等しいソースGPRをもつ、
ということを意味する。これは、第4図に関する
説明(特に第4図のブロツク6付近を参照)にお
いて、特定の動作が同一のGPRをシンク及びソ
ースとして使用しており、実行ユニツトが動作の
実行準備完了となつたときシンク要求制御のセツ
ト動作が前のソース要求を自動的に処理するよう
な場合である。ブロツク5の判断シーケンスから
の否定的な結果は、手続が終了したことを示す。
次に、ブロツク5のシーケンスの結果が肯定的
であると仮定すると、システムは次にブロツク6
及び7に並列に進行する。ブロツク6では、ソー
ス・タグに関連づけられたソース・カウンタが1
だけデクリメントされる。ブロツク7では、
GPR制御がソース・カウンタ中の値に判断させ
る(このことは、ブロツク6におけるカウンタの
デクリメントに先立つて行なわれる)もし判断の
結果が否定的であるなら、それ以上何も行なわれ
ない。もしその判断が肯定的であるなら(デクリ
メントが行なわれるとゼロになる)、そのことは、
現在GPR中に格納されている値のすべてのソー
スの使用が完了し、ソース.タグがホーム・ステ
ータスに戻されるかまたはゼロにセツトされるべ
きことを意味する。そのホーム・ステータスは、
そのソース・タグ及びそれに関連するソース・カ
ウンタが、GPR制御に与えられるとき、実行ユ
ニツトからのさらなるソース使用要求に対して利
用可能であることを示す。そして、ソース・タグ
をホーム・ステータスに戻すとこのシーケンスが
完了する。
さて、第4図から第7図までに示されたGPR
制御のための必要な動作シーケンスを説明したの
で、これに続いて実行ユニツト及びデコーダの必
要な制御シーケンスについて簡単な説明を与え
る。尚、システム全体のうち本発明に関連するレ
ジスタ割当及び同期化フエーズにあてはまるこれ
ら2つのユニツトについての制御シーケンスのみ
が示されているにすぎないことが容易に理解され
よう。また、実行ユニツト及びデコーダの全体の
動作シーケンスはここに図示されているよりはる
かに複雑であるが、その詳細は本発明自体とは直
接関係がないことも理解されよう。
第8図を参照すると、関連する実行ユニツト制
御のフローチヤートが示されている。この図にお
いては、実行ユニツトが、実行中の特定の命令の
ためのGPRを必要とすることを示すGPR要求が
ブロツク10を介して入力される。フローチヤー
トは次に、ブロツク12,14及び16に並列的
に進行する。先ずブロツク12を参照すると、こ
の時間フレームにおいては、GPR制御に対する
もとのレジスタ割当フエーズ(デコード時間の間
に発生する)の間にGPR制御から受け取つたシ
ンク前方タグを実行ユニツト制御が送る。これら
のタグが、シンクまたはソース・タグとして実行
ユニツト制御に格納されていることが理解されよ
う、もし現在の要求(または、現在の要求のうち
の1つ)がシンク・レジスタを求めるものである
なら、データはGPRに至るデータ・バス上に配
置される。尚、このとき、そのデータはGPRが
要求を許諾するまで特定のGPR中へは実際には
ゲートされないことを理解されたい。
ブロツク18及び21は、現在の要求よりも前
に完了されるべきGPR制御中の必要なさまざま
な動作が受け入れられるようになるまで、実行ユ
ニツト制御を遊ばせておくことを可能ならしめる
判断及び待機シーケンスをあらわす、そして、が
求の許諾が完了すると、実行ユニツトはブロツク
20へ進む。
ブロツク20においては、実行ユニツト制御が
次のような動作を行う。すなわち、もし完了した
ばかりの要求がシンク要求であつたなら、GPR
制御に対する要求が除去され、特定の要求された
GPRの入力ゲートに対するデータが除去される。
もし、受領されたばかりの要求がソース要求であ
るなら、そのデータは実行のため特定の実行ユニ
ツトのオペランド・レジスタ中へゲートされる。
上述のように、ブロツク10からの出力はブロ
ツク14と16に並列的に進み、そこで、現在の
要求がソースまたはシンクのどちらを求めるもの
であるかの識別がなされる。もし動作がソース動
作の要求をするなら、システムはブロツク16へ
進み、もし動作がシンク動作を要求するなら、シ
ステムはブロツク14へ進む。
もしブロツク14で示すように、要求されたア
クセスがシンク動作を求めるものならば、GPR
制御に対する要求は、第6図に示すGPR制御シ
ーケンスを開始させ、逆に要求されたアクセスが
レジスタ中のソース動作を要求するものであるな
ら、第7図に示されたGPR制御中の制御シーケ
ンスが入力されることになる。ブロツク22及び
24は実際に第6図及び第7図のそれぞれにおい
て要求を発生させる。尚、ブロツク14及び16
によつて生起された実行ユニツトの動作は、ブロ
ツク12及び20において実行される動作とは並
列的であることを思い出されたい。実行ユニツト
制御のブロツク14及び16中で生じる動作は、
GPR制御中の必要な活動を開始させる。同様に、
ブロツク12及び20は、実行ユニツト内で必要
な動作を開始させる。
(ブロツク20からの“脱出”によつて示され
るように)GPRアクセス・フエーズが完了する
と、実行ユニツト制御は、もし要求がソース動作
を求めるものなら命令の実行に進むことができ、
もし要求がシンク動作を求めるものであつたなら
命令が完了されることになる。
第9A図と第9B図を参照すると、本発明の動
作に必要なデコーダ制御シーケンスが開示されて
いる。これらの図において、ブロツク1及び2
は、単に、デコーダがGPR動作の必要性を検出
したことを示すにすぎない。このことが起こる
と、システムは次に、その要求がデコーダによる
“即時的使用”を求めるものであるか、または
GPRレジスタが特定の実行ユニツトに割当てら
れるべき将来の使用を求めるものであるかの判断
をしなくてはならない。この判断は、ブロツク3
及び4において並列的に行なわれる。もしその要
求が“アドレス発生”などの即時的使用を求める
ものであるなら、システムはブロツク5に進み、
その動作に必要なGPRの制御機構に対して必要
なシンクまたはソース要求がなされる。理解され
るように、このブロツクは本質的には、GPRの
“即時的”使用要求を意味する第4図及び第5図
上のGPR制御シーケンス・ブロツク1に入る。
デコーダ制御はブロツク6中で、GPRを求める
要求が許諾されるまで待機する。そして、要求さ
れたGPRがデコーダに対して一たん利用可能に
なると、特定の動作がブロツク7で実行される。
ブロツク4では、デコーダ制御が要求された動
作を実行することができるか否かが判断される。
この制御は、もしすべての必要なGPRが直ちに
利用可能である訳ではないなら実行ユニツトに動
作を渡すことができる。追加的な必要条件は、動
作が、1マシン・サイクル(例えば固定点の加
算)で完了されなくてはならない、ということで
ある。
ブロツク8,9及び10で実行される動作は本
質的には、ユニツトブロツク5,6及び7と同一
であるが、ただし、要求されたすべてのGPRが
即時的に利用可能でなくてはならず、もしブロツ
ク9で必要な時間内に利用可能であることの表示
が受け取られないなら要求が取り下げられ、動作
は順に従つて実行ユニツトに渡される、という点
では異なる。
ここで動作が実行ユニツトが渡されると仮定す
ると、制御シーケンスはブロツク12へ移行する
(第9B図)。このブロツクでは、利用可能な実行
ユニツトが動作に割当てられるかまたは、そのよ
うな実行ユニツトが利用可能になるまでシステム
が待機する。この時点で、シーケンスはブロツク
13に進む。ブロツク13では、デコーダ制御
が、その動作に必要な特定のGPR制御に、必要
なシンクまたはソース要求を行う。デコーダ制御
は、その動作に必要なGPRに実行ユニツトの識
別タグを与える。そして最後に、デコーダ制御
は、シンクまたはソース要求がなされた場合に
GPR制御からシンク前方タグを受け取り、これ
らのタグを、この動作に割当てられた特定の実行
ユニツトに送らせる。
こうして、要約すると、ブロツク13は、要求
された使用がシンクであるかソースであるかに応
じて、GPR制御の第4図または第5図のうちの
どちらかのブロツク1を開始させる。実行ユニツ
トIDは、第4図のブロツク7中のGPR制御に与
えられる。この動作は、理解されるように、要求
がソース使用を求めるものなら不要である。ブロ
ツク13によつて実行される最終動作は、第4図
のブロツク7及び第5図のブロツク12と協働し
て実行される。
尚、適切な実行ユニツト中のシンクまたはソー
ス・タグ・フイールド中のGPRからのシンク前
方タグは、命令が、命令の一部として実行ユニツ
ト命令レジスタに適切に格納されている場合に特
定の実行ユニツトに対する命令割当て動作の一部
としてデコーダにより直接実行されることに注意
されたい。
デコーダ制御フロー・シーケンスの動作の説明
は以上のとおりである。前述のように、このフロ
ー・シーケンスは、デコーダ制御シーケンスのう
ち、本発明に関与する部分を示すにすぎない。こ
の技術分野の当業者によつて理解されるように、
デコーダにおいては他の多くの動作も生じなくて
はならないことが明らかである。
F 発明の効果 以上説明したように、この発明によれば、特殊
なタグとカウンタの組合せの使用によつて、複数
非同期実行ユニツト・ユニプロセツサにおいて、
汎用レジスタのデータの論理的完全性を維持する
ことができるという効果が得られる。
【図面の簡単な説明】
第1図は、複数の実行ユニツトをもつ複合高速
ユニプロセツサの機能ブロツク図、第2図は、実
行ユニツトと汎用レジスタの詳細な構成を示すブ
ロツク図、第3図は、タグ及びカウンタを利用す
る動作の例を示す図、第4図は、GPRのシンク
としての使用を示すフローチヤート、第5図は、
GPRのソースとしての使用を示すフローチヤー
ト、第6図は、GPRのシンクとしての即時使用
を示すフローチヤート、第7図は、ソースとして
のGPR要求を示すフローチヤート、第8図は、
実行ユニツト制御のフローチヤート、第9A図及
び第9B図は、デコーダ制御のフローチヤートで
ある。 10……命令ユニツト・デコーダ、12……制
御機構、16……汎用レジスタ、18……実行ユ
ニツト。

Claims (1)

  1. 【特許請求の範囲】 1 N個の実行ユニツト及び、各々が該実行ユニ
    ツトの各々にアクセス可能である複数の汎用レジ
    スタをもつ複数実行ユニツト・ユニプロセツサ・
    システムにおいて、 (a) 各汎用レジスタに関連づけられた少くとも4
    個の特殊目的タグ・フイールドであるシンク前
    方タグと、シンク実行タグと、少くとも1つの
    ソース・タグまたはソース・カウンタ・タグ
    と、 (b) 各実行ユニツトに関連づけられ、該実行ユニ
    ツトにより実行すべき命令を格納するためのフ
    イールドのみならず、該実行ユニツトに固有な
    タグ及び少くとも1つのシンクまたはソース・
    タグを格納するための少くとも2個の特殊目的
    タグ・フイールドを有する命令レジスタ記憶手
    段と、 (c) 上記シンク前方タグ・フイールド中に、任意
    の実行ユニツトによる特定の汎用レジスタを求
    める使用要求の経時的シーケンスの記録を保持
    するための手段を含み、システム動作の命令デ
    コード・フエーズの間に上記実行ユニツト及び
    上記汎用レジスタ中に上記特殊目的タグ・フイ
    ールドをロードするための制御機構と、 (d) 第1の実行ユニツトのシンクまたはソース・
    タグ・フイールド中で、該第1の実行ユニツト
    の直前に、上記汎用レジスタをシンクとして利
    用しなくてはならない第2の実行ユニツトを識
    別するための手段と、 (e) 上記実行ユニツトが割当てられたタスクを実
    行するときに、さまざまな実行ユニツトによる
    上記汎用レジスタの使用の経時的シーケンスを
    該汎用レジスタのシンク実行タグに保持するよ
    うに動作する手段、 とを具備する複数実行ユニツト・ユニプロセツ
    サ・システム。
JP62077654A 1986-05-02 1987-04-01 複数実行ユニツト・ユニプロセツサ・システム Granted JPS62262142A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US06/859,156 US4903196A (en) 1986-05-02 1986-05-02 Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US859156 1986-05-02

Publications (2)

Publication Number Publication Date
JPS62262142A JPS62262142A (ja) 1987-11-14
JPH0260010B2 true JPH0260010B2 (ja) 1990-12-14

Family

ID=25330196

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62077654A Granted JPS62262142A (ja) 1986-05-02 1987-04-01 複数実行ユニツト・ユニプロセツサ・システム

Country Status (4)

Country Link
US (1) US4903196A (ja)
EP (1) EP0243892B1 (ja)
JP (1) JPS62262142A (ja)
DE (1) DE3750306T2 (ja)

Families Citing this family (92)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63131230A (ja) * 1986-11-21 1988-06-03 Hitachi Ltd 情報処理装置
US5822578A (en) * 1987-12-22 1998-10-13 Sun Microsystems, Inc. System for inserting instructions into processor instruction stream in order to perform interrupt processing
JPH06105460B2 (ja) * 1988-06-07 1994-12-21 富士通株式会社 マルチプロセッサのプロセッサ切換え装置
EP0378415A3 (en) * 1989-01-13 1991-09-25 International Business Machines Corporation Multiple instruction dispatch mechanism
US5142631A (en) * 1989-02-03 1992-08-25 Digital Equipment Corporation System for queuing individual read or write mask and generating respective composite mask for controlling access to general purpose register
US5167026A (en) * 1989-02-03 1992-11-24 Digital Equipment Corporation Simultaneously or sequentially decoding multiple specifiers of a variable length pipeline instruction based on detection of modified value of specifier registers
US5293500A (en) * 1989-02-10 1994-03-08 Mitsubishi Denki K.K. Parallel processing method and apparatus
US5226126A (en) * 1989-02-24 1993-07-06 Nexgen Microsystems Processor having plurality of functional units for orderly retiring outstanding operations based upon its associated tags
US5781753A (en) 1989-02-24 1998-07-14 Advanced Micro Devices, Inc. Semi-autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for speculative and out-of-order execution of complex instructions
US5768575A (en) * 1989-02-24 1998-06-16 Advanced Micro Devices, Inc. Semi-Autonomous RISC pipelines for overlapped execution of RISC-like instructions within the multiple superscalar execution units of a processor having distributed pipeline control for sepculative and out-of-order execution of complex instructions
JPH0353328A (ja) * 1989-07-20 1991-03-07 Hitachi Ltd レジスタ退避回復方法ならびに処理装置
US5197137A (en) * 1989-07-28 1993-03-23 International Business Machines Corporation Computer architecture for the concurrent execution of sequential programs
WO1991004536A1 (en) * 1989-09-20 1991-04-04 Dolphin Server Technology A/S Instruction cache architecture for parallel issuing of multiple instructions
JPH03150637A (ja) * 1989-11-08 1991-06-27 Oki Electric Ind Co Ltd パイプライン対応のレジスタ割付け方式
US5555384A (en) * 1989-12-01 1996-09-10 Silicon Graphics, Inc. Rescheduling conflicting issued instructions by delaying one conflicting instruction into the same pipeline stage as a third non-conflicting instruction
US5185872A (en) * 1990-02-28 1993-02-09 Intel Corporation System for executing different cycle instructions by selectively bypassing scoreboard register and canceling the execution of conditionally issued instruction if needed resources are busy
US5410691A (en) * 1990-05-07 1995-04-25 Next Computer, Inc. Method and apparatus for providing a network configuration database
US5432918A (en) * 1990-06-29 1995-07-11 Digital Equipment Corporation Method and apparatus for ordering read and write operations using conflict bits in a write queue
US5450555A (en) * 1990-06-29 1995-09-12 Digital Equipment Corporation Register logging in pipelined computer using register log queue of register content changes and base queue of register log queue pointers for respective instructions
US5471591A (en) * 1990-06-29 1995-11-28 Digital Equipment Corporation Combined write-operand queue and read-after-write dependency scoreboard
EP0463965B1 (en) * 1990-06-29 1998-09-09 Digital Equipment Corporation Branch prediction unit for high-performance processor
JP2771683B2 (ja) * 1990-07-17 1998-07-02 三菱電機株式会社 並列処理方式
EP0477597A3 (en) * 1990-09-26 1995-09-27 Siemens Ag Method for parallel processing of programm instructions and processor to perform this process
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
US5329626A (en) * 1990-10-23 1994-07-12 Digital Equipment Corporation System for distributed computation processing includes dynamic assignment of predicates to define interdependencies
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
US5446850A (en) * 1991-01-15 1995-08-29 International Business Machines Corporation Cross-cache-line compounding algorithm for scism processors
DE69228083T2 (de) * 1991-03-14 1999-05-20 Fujitsu Ltd Verfahren und Vorrichtung zur Steuerung von Pipelineoperationen
JP2908598B2 (ja) * 1991-06-06 1999-06-21 松下電器産業株式会社 情報処理装置
US5630157A (en) * 1991-06-13 1997-05-13 International Business Machines Corporation Computer organization for multiple and out-of-order execution of condition code testing and setting instructions
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
US5539911A (en) 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5408658A (en) * 1991-07-15 1995-04-18 International Business Machines Corporation Self-scheduling parallel computer system and method
US5347639A (en) * 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5412784A (en) * 1991-07-15 1995-05-02 International Business Machines Corporation Apparatus for parallelizing serial instruction sequences and creating entry points into parallelized instruction sequences at places other than beginning of particular parallelized instruction sequence
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
US5442797A (en) * 1991-12-04 1995-08-15 Casavant; Thomas L. Latency tolerant risc-based multiple processor with event driven locality managers resulting from variable tagging
US5379392A (en) * 1991-12-17 1995-01-03 Unisys Corporation Method of and apparatus for rapidly loading addressing registers
US5414821A (en) * 1991-12-17 1995-05-09 Unisys Corporation Method of and apparatus for rapidly loading addressing environment by checking and loading multiple registers using a specialized instruction
EP0636256B1 (en) * 1992-03-31 1997-06-04 Seiko Epson Corporation Superscalar risc processor instruction scheduling
US5438668A (en) 1992-03-31 1995-08-01 Seiko Epson Corporation System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer
DE69308548T2 (de) * 1992-05-01 1997-06-12 Seiko Epson Corp Vorrichtung und verfahren zum befehlsabschluss in einem superskalaren prozessor.
JP3644959B2 (ja) 1992-09-29 2005-05-11 セイコーエプソン株式会社 マイクロプロセッサシステム
US6735685B1 (en) * 1992-09-29 2004-05-11 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
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
US5628021A (en) * 1992-12-31 1997-05-06 Seiko Epson Corporation System and method for assigning tags to control instruction processing in a superscalar processor
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5493669A (en) * 1993-03-03 1996-02-20 Motorola, Inc. Data processor for simultaneously searching two fields of the rename buffer having first and second most recently allogated bits
TW242673B (ja) * 1993-08-18 1995-03-11 Ibm
US5446912A (en) * 1993-09-30 1995-08-29 Intel Corporation Partial width stalls within register alias table
US5499364A (en) * 1993-10-14 1996-03-12 Digital Equipment Corporation System and method for optimizing message flows between agents in distributed computations
US5721854A (en) * 1993-11-02 1998-02-24 International Business Machines Corporation Method and apparatus for dynamic conversion of computer instructions
US5420991A (en) * 1994-01-04 1995-05-30 Intel Corporation Apparatus and method for maintaining processing consistency in a computer system having multiple processors
US5452426A (en) * 1994-01-04 1995-09-19 Intel Corporation Coordinating speculative and committed state register source data and immediate source data in a processor
US5627985A (en) * 1994-01-04 1997-05-06 Intel Corporation Speculative and committed resource files in an out-of-order processor
US5524263A (en) * 1994-02-25 1996-06-04 Intel Corporation Method and apparatus for partial and full stall handling in allocation
US5659722A (en) * 1994-04-28 1997-08-19 International Business Machines Corporation Multiple condition code branching system in a multi-processor environment
US5666506A (en) * 1994-10-24 1997-09-09 International Business Machines Corporation Apparatus to dynamically control the out-of-order execution of load/store instructions in a processor capable of dispatchng, issuing and executing multiple instructions in a single processor cycle
TW295646B (ja) * 1995-01-25 1997-01-11 Ibm
US5689673A (en) * 1995-02-14 1997-11-18 Hal Computer Systems, Inc. Apparatus and method for controlling instruction flow by using a matrix of transmission gates in super-scaler microprocessor and selectively delaying microprocessor instruction execution based on resource availability
US5734817A (en) * 1995-03-01 1998-03-31 Unisys Corporation Method for making a data base available to a user program during data base recovery
US5699536A (en) * 1995-04-13 1997-12-16 International Business Machines Corporation Computer processing system employing dynamic instruction formatting
US5664120A (en) * 1995-08-25 1997-09-02 International Business Machines Corporation Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
US5765215A (en) * 1995-08-25 1998-06-09 International Business Machines Corporation Method and system for efficient rename buffer deallocation within a processor
US5694565A (en) * 1995-09-11 1997-12-02 International Business Machines Corporation Method and device for early deallocation of resources during load/store multiple operations to allow simultaneous dispatch/execution of subsequent instructions
US5850563A (en) * 1995-09-11 1998-12-15 International Business Machines Corporation Processor and method for out-of-order completion of floating-point operations during load/store multiple operations
US5761740A (en) * 1995-11-30 1998-06-02 Unisys Corporation Method of and apparatus for rapidly loading addressing registers
JP2806359B2 (ja) * 1996-04-30 1998-09-30 日本電気株式会社 命令処理方法及び命令処理装置
US5848256A (en) * 1996-09-30 1998-12-08 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for address disambiguation using address component identifiers
US5864341A (en) * 1996-12-09 1999-01-26 International Business Machines Corporation Instruction dispatch unit and method for dynamically classifying and issuing instructions to execution units with non-uniform forwarding
US5918033A (en) * 1997-01-08 1999-06-29 Intel Corporation Method and apparatus for dynamic location and control of processor resources to increase resolution of data dependency stalls
US6662216B1 (en) * 1997-04-14 2003-12-09 International Business Machines Corporation Fixed bus tags for SMP buses
US6044453A (en) * 1997-09-18 2000-03-28 Lg Semicon Co., Ltd. User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure
US6088790A (en) * 1997-12-19 2000-07-11 Intel Corporation Using a table to track and locate the latest copy of an operand
US6161174A (en) * 1998-11-05 2000-12-12 Wilhite; John E. Pipelined central processor incorporating indicator busy sensing and responsive pipeline timing modification
US6266759B1 (en) * 1998-12-14 2001-07-24 Cray, Inc. Register scoreboarding to support overlapped execution of vector memory reference instructions in a vector processor
US6643762B1 (en) * 2000-01-24 2003-11-04 Hewlett-Packard Development Company, L.P. Processing system and method utilizing a scoreboard to detect data hazards between instructions of computer programs
US6715060B1 (en) * 2000-01-28 2004-03-30 Hewlett-Packard Development Company, L.P. Utilizing a scoreboard with multi-bit registers to indicate a progression status of an instruction that retrieves data
US6952763B1 (en) * 2000-10-02 2005-10-04 International Business Machines Corporation Write before read interlock for recovery unit operands
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
EP1462934A1 (en) * 2003-03-29 2004-09-29 Deutsche Thomson-Brandt Gmbh Method and apparatus for forwarding of results
US7490226B2 (en) * 2005-02-09 2009-02-10 International Business Machines Corporation Method using vector component comprising first and second bits to regulate movement of dependent instructions in a microprocessor
US20070043932A1 (en) * 2005-08-22 2007-02-22 Intel Corporation Wakeup mechanisms for schedulers
US7594058B2 (en) * 2005-11-07 2009-09-22 Via Technologies, Inc. Chipset supporting a peripheral component interconnection express (PCI-E) architecture
US7475226B2 (en) * 2006-09-20 2009-01-06 International Business Machines Corporation System for managing data dependency using bit field instruction destination vector identifying destination for execution results
US8165864B2 (en) * 2008-02-08 2012-04-24 International Business Machines Corporation Method, system and computer program product for verifying address generation, interlocks and bypasses
US11762566B2 (en) 2018-01-22 2023-09-19 Arm Limited Programmable mapping of guard tag storage locations
GB2570326B (en) * 2018-01-22 2020-06-10 Advanced Risc Mach Ltd Multiple guard tag setting instruction

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3346851A (en) * 1964-07-08 1967-10-10 Control Data Corp Simultaneous multiprocessing computer system
US3573736A (en) * 1968-01-15 1971-04-06 Ibm Interruption and interlock arrangement
US3718912A (en) * 1970-12-22 1973-02-27 Ibm Instruction execution unit
US4224664A (en) * 1976-05-07 1980-09-23 Honeywell Information Systems Inc. Apparatus for detecting when the activity of one process in relation to a common piece of information interferes with any other process in a multiprogramming/multiprocessing computer system
FR2399693A1 (fr) * 1977-08-04 1979-03-02 Int Computers Ltd Structure de registres pour un systeme informatique
US4249241A (en) * 1978-10-23 1981-02-03 International Business Machines Corporation Object access serialization apparatus for a data processing system
JPS5621242A (en) * 1979-07-28 1981-02-27 Fujitsu Ltd Pipeline control method for computer operation
US4384324A (en) * 1980-05-06 1983-05-17 Burroughs Corporation Microprogrammed digital data processing system employing tasking at a microinstruction level
US4574349A (en) * 1981-03-30 1986-03-04 International Business Machines Corp. Apparatus for addressing a larger number of instruction addressable central processor registers than can be identified by a program instruction
JPS58146941A (ja) * 1982-02-26 1983-09-01 Hitachi Ltd マイクロプログラム制御デ−タ処理装置
US4574350A (en) * 1982-05-19 1986-03-04 At&T Bell Laboratories Shared resource locking apparatus
JPS59146345A (ja) * 1983-02-10 1984-08-22 Masahiro Sowa コントロ−ルフロ−並列計算機方式
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4604694A (en) * 1983-12-14 1986-08-05 International Business Machines Corporation Shared and exclusive access control

Also Published As

Publication number Publication date
US4903196A (en) 1990-02-20
EP0243892A2 (en) 1987-11-04
DE3750306D1 (de) 1994-09-08
EP0243892B1 (en) 1994-08-03
DE3750306T2 (de) 1995-03-09
JPS62262142A (ja) 1987-11-14
EP0243892A3 (en) 1990-05-02

Similar Documents

Publication Publication Date Title
JPH0260010B2 (ja)
US5150470A (en) Data processing system with instruction queue having tags indicating outstanding data status
US6988186B2 (en) Shared resource queue for simultaneous multithreading processing wherein entries allocated to different threads are capable of being interspersed among each other and a head pointer for one thread is capable of wrapping around its own tail in order to access a free entry
JP4578042B2 (ja) 接近して結合される多重プロセッサのための高速マルチスレッディング
US7363467B2 (en) Dependence-chain processing using trace descriptors having dependency descriptors
KR100334479B1 (ko) 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치
US7496735B2 (en) Method and apparatus for incremental commitment to architectural state in a microprocessor
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
EP0096576B1 (en) Mechanism for creating dependency free code for multiple processing elements
US5604912A (en) System and method for assigning tags to instructions to control instruction execution
EP0059810B1 (en) Microprogrammed digital data processing system employing multiphase subroutine control for concurrently executing tasks
US20070157200A1 (en) System and method for generating a lock-free dual queue
US6785887B2 (en) Technique for using shared resources on a multi-threaded processor
WO1993002414A2 (en) Data processing system with synchronization coprocessor for multiple threads
CN113703834A (zh) 基于块的处理器核复合寄存器
JPH06208552A (ja) スモール・グレイン機構
JP2000029699A (ja) プロセサア―キテクチャ
US6378062B1 (en) Method and apparatus for performing a store operation
CN110659115A (zh) 具有硬件辅助任务调度的多线程处理器核
Braginsky et al. CBPQ: High performance lock-free priority queue
KR100263013B1 (ko) 슈퍼 스칼라 컴퓨터 시스템의 리네임 레지스터 와 구조화된레지스터를 관리하는 방법 및 컴퓨터 시스템
Dorozhevets et al. The El'brus-3 and MARS-M: Recent advances in Russian high-performance computing
JPH10187464A (ja) マルチスカラ・プログラムを作成する方法およびシステム
Foster Computer architecture
EP0863460B1 (en) Management of renamed registers in a superscalar computer system