JPH06214784A - 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法 - Google Patents

順不同の命令実行を可能にするコンピュータ・システム及びその操作方法

Info

Publication number
JPH06214784A
JPH06214784A JP5265946A JP26594693A JPH06214784A JP H06214784 A JPH06214784 A JP H06214784A JP 5265946 A JP5265946 A JP 5265946A JP 26594693 A JP26594693 A JP 26594693A JP H06214784 A JPH06214784 A JP H06214784A
Authority
JP
Japan
Prior art keywords
register
instruction
address
control word
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
JP5265946A
Other languages
English (en)
Other versions
JP2698033B2 (ja
Inventor
Faraydon Karim
ファラドン・カリム
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 JPH06214784A publication Critical patent/JPH06214784A/ja
Application granted granted Critical
Publication of JP2698033B2 publication Critical patent/JP2698033B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related 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 or 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/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 or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)
  • Holo Graphy (AREA)
  • Earth Drilling (AREA)
  • Executing Machine-Instructions (AREA)
  • Debugging And Monitoring (AREA)
  • Lubricants (AREA)
  • Steroid Compounds (AREA)

Abstract

(57)【要約】 【目的】 複数の命令を並行に、かつ順不同に実行する
スーパ・スカラ・コンピュータ・アーキテクチャを提供
する。 【構成】 複数個の独立して作動可能な実行装置が制御
ワードによって定義される動作を完了する。各種の実行
装置に割り当てられた制御ワードに関連したソース情報
及び宛先情報が読み取られ、制御ワードの実行状態に応
じたアドレス操作によってリサイクルされるレジスタに
書き込まれる。制御ワード・アドレスの順次割振りは反
依存性問題を回避し、順序の保全性を確保し、入力命令
の順序と一貫したデータの依存性を管理する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は総括的にコンピュータ・
アーキテクチャに関する。詳細にいえば、本発明はスー
パ・スカラ・コンピュータ内のレジスタのアーキテクチ
ャ及び使用法に関するものである。
【0002】
【従来の技術】コンピュータ・アーキテクチャの発展は
現在広く受け入れられている縮小命令セット・コンピュ
ーティング(RISC)構成から、スーパ・スカラ・コ
ンピュータ・アーキテクチャに移ってきている。このよ
うなスーパ・スカラ・コンピュータ・アーキテクチャは
複数個のレジスタ及び制御機構によって統合された複数
の同時に作動可能な実行ユニットが存在していることを
特徴としている。アーキテクチャの目的は並列性を採用
して、複数の実行ユニットによって並行に処理される単
位時間あたりの命令の数を最高のものとするとともに、
プログラマが定義した命令実行順序が出力に反映される
ようにすることである。たとえば、制御機構は複数の実
行ユニットによって並行に処理されているデータの間の
依存性を管理する必要があり、かつ命令順序の保全性が
正確な割込み及び再始動の存在時に維持されているよう
にする必要がある。また制御機構は命令定義分岐操作に
よって必要とされるような命令削除機能を備えていなが
ら、プログラム実行の全体的な順序を維持する必要があ
る。この目的は常に、電子装置の数及び複雑度を最小限
のものにするという商業上の目的を留意しており、この
場合、スーパ・スカラ・アーキテクチャでの一般的な規
約は、回路間のデータ及びデータの伝送に使用されるワ
ードのビット・サイズ、並びにレジスタのサイズ及び内
容を減らすことである。
【0003】命令の順不同(out-of-order)実行を管理
するために、各種のアーキテクチャが考案されている。
米国特許第4722049号明細書に記載されているア
ーキテクチャ及び操作モードはその一例であり、このア
ーキテクチャは一般に待ち行列内の命令を並べ換え、実
行装置のスカラ/ベクトル対の使用を最適化する。関連
性の高いアーキテクチャ及び使用法はIEEE Micro、19
91年6月号に発表されたPopescu他の「The Metaflow
Architecture」という論文に記載されている。この論文
は命令の順不同実行を特徴とする問題に関連した最新の
スーパ・スカラ・アーキテクチャの原理の概要を説明し
ている。この論文においては、複数個の実行装置で構成
された順不同命令プロセッサの実施形態の基礎となる原
理、命令の結果にプログラマが定義した順序を反映させ
るという基本的な目的を満たすために、命令処理を選択
的に引き延ばすシェルビング(shelving)の概念を利用
するアーキテクチャも紹介している。一般に及び動的ス
ケジューリングの「Tomasuloアルゴリズム」及
び「スコアボーディング(scoreboarding)」と呼ばれ
ている2つの他の技法が、Patterson他の「Computer Ar
chitecture A Quantitative Approach」(著作権、19
90年)というテキストに記載されている。第3の技法
「レジスタ改名(renaming)」は米国特許第49929
38号明細書に開示され、例示されている。それ故、複
数の実行装置を使用した順不同命令実行の利点は認識さ
れているが、目的を達成するアーキテクチャ及び方法
は、業界に受け入れられるには、さらに洗練する必要が
ある。
【0004】スーパ・スカラ・アーキテクチャ及びその
実施を制限する基本的な制約の例としては、複数の実行
装置で並行に処理されるデータの間のデータ依存性の管
理、命令順序の保全性を維持しながら、正確な割込み及
び再始動を処理する機能、ならびに分岐処理などのため
に命令を選択的に引き延ばす機能などがある。このよう
な機能は達成可能なものであるが、複雑度及びハードウ
ェアのコストはこれまできわめて大きいものであった。
たとえば、従来技術について述べたようにシェルビング
ないし保留を行うことによる命令処理の引き延ばしに
は、命令記憶用の大量のメモリ、ならびに命令の選択的
なシェルビング解除を管理するための資源が必要であ
る。さらに従来技術において、シェルビングまたは保留
された命令同士及びこれと制御資源を関連付けるための
情報を使用すると、実行装置による格納及び処理の両方
の対象となる制御ワードのサイズを大幅に増加させるこ
とになる。
【0005】
【発明が解決しようとする課題】したがって、複数の実
行装置が最小限のメモリ・レジスタ及び制御資源を使用
して順不同の命令を並行に処理するスーパ・スカラ・ア
ーキテクチャが依然必要とされている。
【0006】
【課題を解決するための手段】本発明は複数の命令を並
行に、かつ順不同に実行するスーパ・スカラ・コンピュ
ータ・アーキテクチャを画定する。複数個の独立して作
動可能な実行装置が制御ワードによって定義される操作
を完了する。各種の実行装置に割り当てられた制御ワー
ドに関連するソース情報及び宛先情報が読み取られ、制
御ワードの実行状態に応じて実行されるアドレス操作に
よってリサイクル(recycle:アドレスもしくはレジス
タが複数回にわたって再使用されることをいう)レジス
タに書き込まれる。制御ワード・アドレスの順次割振り
は反依存性(anti-dependency)の問題を回避し、順序
の保全性を確保し、入力命令の順序と一貫したデータの
依存性を管理する。
【0007】好ましい実施形態によれば、本発明は、個
別にではあるが実行装置が利用可能であれば連続してデ
ィスパッチされる複数の制御ワードに応答する複数の実
行装置からなるアーキテクチャを目的とする。複数の制
御ワードは複数の入力命令から並行に形成される。各制
御ワードは衝突ベクトル・テーブル・ポインタ情報、命
令演算コード情報、宛先アドレス情報、及び複数のソー
ス・アドレス情報を含んでいる。実行対象のデータを格
納するために使用されるレジスタのアドレスは、入力命
令の順序によって定義された制御ワードの実行時にリサ
イクルされる。データの依存性は宛先データを格納する
汎用レジスタのロック・ビットを使用することによって
管理される。複数の改名(rename:再ネーミングともい
うが、ここではレジスタ使用の競合を避けるために関連
アドレスを変換することをいう)レジスタを1つまたは
複数の衝突ベクトル・テーブルとともに使用して、汎用
レジスタの数を最小限のものとし、連続した命令の間の
反依存性を回避する。衝突ベクトル・テーブルによるレ
ジスタ・アドレスのリサイクルは、解除されたレジスタ
・アドレスの順序が入力命令の順序と一致するようにす
るための資源を含んでいる。これによって、正確な割込
みに必要な連続性の保全性、ならびに分岐関連命令の削
除がアーキテクチャのフレームワーク内で達成される。
【0008】
【実施例】スーパ・スカラ・アーキテクチャのコンピュ
ータ及びワークステーションの利点及び制限は、比較的
よく知られている。したがって、当該技術分野では、そ
のクラス内で物理的制約を満足するとともにデータ処理
速度を最大とするアーキテクチャをこれまで求めてき
た。スーパ・スカラ・アーキテクチャの原理はプログラ
ムが定義したシーケンス順序で独立した命令を並行して
処理する複数の実行装置が存在することである。このよ
うなスーパ・スカラ・アーキテクチャへの入力は、順序
が定義済みの命令のセットであり、この順序が満たされ
た場合に、プログラマの目的に適合した出力のセットを
もたらす。それ故、高い水準で、スーパ・スカラ・アー
キテクチャは順次入力に応答するものであり、その順序
内の要素によって制約された出力を発生しなければなら
ない。
【0009】スーパ・スカラ・プロセッサは命令の順不
同の実行によって多数の問題を生じる。このような問題
の1つはデータ依存性と呼ばれるものであって、ある実
行装置の出力が、他の実行装置の入力となる命令によっ
て定義されることをいう。スーパ・スカラ・プロセッサ
のもう1つの問題はしばしば反依存性(anti-dependenc
y)と呼ばれるものであって、これは、実行装置が命令
が出された順序とは異なる順序でそれぞれの命令を完了
することをいう。スーパ・スカラ・プロセッサで遭遇す
る第3の問題は、命令のシーケンス以外の動作によって
影響を受ける連続性の保全性に関するものである。たと
えば、プロセッサは正確な割込み、たとえば1つまたは
複数の命令の削除を含む割込みまたは分岐操作の結果と
して、命令出力の順序が変化してはならないという点で
正確な割込みを処理できなければならない。したがっ
て、有意義なスーパ・スカラ・アーキテクチャは並行に
操作可能な実行装置の多重性を含んでいるだけでなく、
命令の処理を管理し、プログラマが定義した順序及び内
容がプロセッサのすべての作動条件の間、完全なままで
あるようにもしなければならない。
【0010】図1はスーパ・スカラの概念を実現するプ
ロセッサ・アーキテクチャの例を示す。ブロックはIB
Mコーポレーションが製造し、市販しているRISCシ
ステム/6000で用いられているアーキテクチャを示
す。メイン・メモリ1には命令キャッシュ2及びデータ
・キャッシュ3の両方が接続されている。分岐実行装置
4は分岐操作を解決するだけではなく、それぞれが並行
して作動可能な実行装置6及び7へ固定小数点命令及び
浮動小数点命令を渡すことも行う。それ故、図1に示す
アーキテクチャは浮動小数点命令及び固定小数点命令の
ために別々な実行装置を有しているという意味でスーパ
・スカラである。
【0011】固定小数点演算、浮動小数点演算、及び分
岐操作を独立して行うことのできる複数の実行装置の汎
用セットへの図1のスーパ・スカラの概念の拡張は、現
代のコンピュータ設計者が現在求めている経路を表して
いる。手法の1つはPopescu他の上述のIEEE Microの論
文に記載されている。この論文はDRIS(機能的な説
明である"deferred scheduling register renaming ins
truction shelf"から取られた頭辞語)といわれるスー
パ・スカラ・アーキテクチャを記載している。このアー
キテクチャは入力及び出力の両方で命令の据置(defe
r)またはシェルビングを用いて、データの依存性及び
反依存性を管理している。シェルビングされたあるいは
バッファリングされた命令はその後、実行装置への選択
的割当て及び最終退去の両方で管理される。命令のシェ
ルビングされた据置及び検索は、命令状況及び順序づけ
を管理するための拡張制御ワードの生成を含んでおり、
各種の依存関係を可能とし、命令実行の基本的な要件を
プログラマの目的と一貫したものとする。
【0012】本発明は図1の固定小数点演算実行装置6
及び浮動小数点演算実行装置7などの実行装置が適切に
選択され、操作されて、命令を並行に実行するスーパ・
スカラ・コンピュータ・システム・アーキテクチャを画
定する。実行装置に対するデータ信号の同期化は、独自
の制御ワード・ジェネレータ、複数の改名レジスタ、ロ
ック可能汎用レジスタ、及び衝突ベクトル・テーブルを
使用して適切に管理される複数のレジスタを介して行わ
れる。このアーキテクチャを図2の高水準機能ブロック
によって示す。
【0013】図2の実施例によって示されるスーパ・ス
カラ・アーキテクチャは、複数の入力命令を一時に受け
取り、次の使用可能な複数の実行装置によって独立して
処理するコンピュータを含んでいる。各実行装置はすべ
てのクラスの命令を処理する資源を有している。実行装
置資源のこのような共通性は汎用コンピュータよりもグ
ラフィックス・プロセッサ・システムに存在しやすいも
のであるが、これは汎用コンピュータが固定小数点及び
浮動小数点処理に個別に特化した実行装置を通常有して
おり、かつこれらに制御ワードをそれぞれに割り当てる
からである。本発明はいずれのクラスの処理システムに
も同等に適用される。
【0014】図2に示す実施例は4つの命令を同時に伝
送するのに適したバスである命令ワード入力バス8で入
力を受け取る。命令は、衝突ベクトル・テーブル11か
らのポインタ・アドレス情報、オリジナル命令からの演
算コード情報、ならびにそれぞれの改名レジスタ12及
び衝突ベクトル・テーブル11からの変換されたソース
・アドレス及び宛先アドレスを使用して、制御ワード・
ジェネレータ9で制御ワードに再構成される。制御ワー
ド生成の詳細については、図3を参照して後述する。そ
れぞれの4つの命令から生成された4つの制御ワード
は、次に使用可能な実行装置に割当てるために制御ワー
ド待ち行列13に送られる。実行装置14は汎用レジス
タ16内の定義済みソース・アドレスに格納されている
データを使用して、待ち行列によって定義されている制
御ワードを順次処理する。汎用レジスタ16に関連した
ロック・ビット17は、従来技術と類似した態様で、ソ
ース・データ及び宛先データの間の依存性を制御する。
衝突ベクトル・テーブル11と改名レジスタ18の間の
相互作用は、汎用レジスタ16に帰属する物理アドレス
のタイムリーなリサイクルを容易にし、また割込み後の
実行の順次性ならびに分岐操作後の選択的な削除を確保
するのに適した操作構造及び方法を定義する。
【0015】第1及び第2の改名レジスタ12及び18
の各々は数の点で、システムの構成済みのレジスタと同
等である。以下の例において、この数は4である。汎用
レジスタ16の数は、衝突ベクトル・テーブル11内の
レジスタの数と、計画レジスタ(architected registe
r)即ち論理レジスタの数、すなわちプログラマが使用
できる数の合計に等しい。
【0016】図3は図2の制御ワード・ジェネレータ9
で行われる制御ワードの作成を略示したものである。4
つの命令の各々はプログラムが定義した第1ソース・ア
ドレス21、第2ソース・アドレス22、及び宛先アド
レス23とともに、演算コード・ビット・ストリング1
9によって構成される。制御ワード・ジェネレータ9で
作成される対応する制御ワード・ビット・ストリング
は、改名された第1ソース・アドレス24、改名された
第2ソース・アドレス26、変換された宛先アドレス2
7、対応する演算コード19、及び衝突ベクトル・テー
ブル・ポインタ・アドレス28を含んでいる。コンピュ
ータが拡張命令を使用している場合、付加的な命令及び
制御ワード・ソース20及び25が可能であることに留
意されたい。ソース・レジスタ・アドレス24及び26
を再割り当てするために、改名レジスタ12を直接使用
する。制御ワードのCVTビット・ストリング部分は、
衝突ベクトル・テーブル11内の次に使用できる行を指
定するポインタ・アドレスから導かれる。選択される
と、行は使用可能な汎用レジスタ16(図2)を指定す
る物理アドレス項目「P」、オリジナル命令で定義され
た宛先アドレス23に対応した論理アドレス項目
「L」、及び少なくとも終了状態ビットを含んでいる。
関連する制御ワードが実行されてしまうと、汎用レジス
タ16のアドレスをリサイクルするポインタを制御する
ために、終了ビット項目「F」が使用される。17の宛
先物理アドレスに関連するロック・ビットは、汎用レジ
スタ16内の対応する物理アドレスに対するものである
(図2)。
【0017】制御ワードが構造及びサイズの両方におい
て、オリジナル命令にきわめて類似しており、したがっ
て、状況、ロケーション、相対位置ならびに他のスーパ
・スカラ命令変換に共通して付随する同様な情報を示す
ための付加的なビットの必要性を不要のものとすること
に留意すべきである。他のスーパ・スカラ・アーキテク
チャは依存性、反依存性、及び順序の保全性の要件に関
して、中継された命令に対して大きく複雑な制御ワード
を作成するが、本発明は適切な割当て及びレジスタのリ
サイクルによってこのような要件を達成する。
【0018】図4は、アドレスを適切に割り当て、制御
ワードの作成、配布、及び退去を管理するためのテーブ
ルとレジスタの相互作用を略示するものである。汎用レ
ジスタ(GPR)16はデータを格納し、これに関連し
たロック・ビット17を有している。衝突ベクトル・テ
ーブル(CVT)11は4つのサブテーブルで構成され
ていることが好ましく、これらのサブテーブルは同時に
入力される命令の数と同じ数の行を個別に有している。
GPRアドレスのリサイクル(recycle)はCVTと改
名レジスタ(2)18の間の相互作用によって達成され
る。順次性は、ポインタの定義する順序で宛先アドレス
をリリースするという要件によって維持され、このポイ
ンタは、宛先データが使用可能で有効であるということ
を示す終了ビットによって連続したCVTの行を通じて
索引付けされている。
【0019】第1の例を考えてみる。図4を参照する
と、命令が入ってくると、これは他の命令と同時に、改
名レジスタ(1)12の操作の対象となる。図示のよう
に、当初1及び2と指定されているソース1及びソース
2のアドレスは、変換される。1及び2という結果のア
ドレスは、改名レジスタ(1)がそのように初期化され
ているからである。対照的に、当初の宛先アドレス0に
はCVT変換によって、第1の使用可能な物理アドレス
32が割り当てられ、当初の宛先0の論理アドレスに隣
接した改名1のロケーションへの物理アドレス32への
配置、ならびに汎用レジスタ17内に割り当てられた物
理アドレスに隣接したロック・ビットの設定を連続して
行う。このとき、アクションの結果として生成された制
御ワードは、第1のCVTテーブルの第1の行を指すC
VTポインタ、当初の演算コード、宛先アドレス32、
及び2というソース1のアドレス、1というソース2の
アドレスで構成されている。このような制御ワードは制
御ワード待ち行列13に入力され、実行装置に対する使
用可能性を示す有効なフラグが関連づけられている。待
ち行列内のこの項目に関連づけられている有効なフラグ
は、制御ワードの割り当てられた実行装置による指定の
操作の完了時にリセットされる。
【0020】レジスタのリサイクル及び順次性の制御は
改名レジスタ(2)18とCVTテーブル11の対話に
よって達成される。CVTテーブルの順序がプログラマ
が当初定義した命令の順序を反映しているから、CVT
テーブルに索引づけられているポインタは、制御ワード
の退去が命令の当初の順序と一致することを保証する。
ポインタは制御ワードの操作が完了したことを示す終了
カラムのビットに索引付けられており、これに応答す
る。実行装置が割り当てられた制御ワードを完了したと
きに、このビットがセットされるが、ポインタの索引づ
けが行われるのは、テーブルの項目によって定義される
当初の命令の順序が実行されたときだけである。終了カ
ラムからの終了ビットの退去は、CVTテーブルと改名
レジスタ2の間のアドレスの交換も行うので、問題のC
VTテーブルの行の物理ロケーションに以前おかれてい
たアドレスがCVTテーブルの論理アドレスに対応する
改名レジスタ2のアドレスによって拡張される。図4の
右下の部分に示した略図を参照されたい。これによっ
て、汎用レジスタのアドレスがリサイクルされる。汎用
レジスタ内の宛先レジスタのロック及びアンロックは、
依存性が存在している場合に一貫性を確保する。入力命
令の当初の順序に基づくレジスタの順序だったリサイク
ルは命令の順序性を確保する。
【0021】命令の順不同の実行を可能とするためにス
ーパ・スカラ構成のコンピュータを操作する方法のステ
ップを、図5、図6及び図7の組み合わせた流れ図に示
す。複数の命令を取り出した後、改名レジスタ1を使用
したソース・レジスタの改名が行われ、次いで連続し
て、CVTテーブルの次に使用可能な行の物理項目から
のアドレスを使用した宛先レジスタの改名が行われると
ともに、当初の宛先レジスタのアドレスの対応するCV
Tテーブルの行の論理アドレスへの入力が行われる。新
しい宛先アドレスも改名レジスタ2に入力され、汎用レ
ジスタ内の物理アドレスはロックされる。改名されたソ
ース及び宛先アドレスは次いで、CVTアドレス情報及
び演算コードと組み合わされ、制御ワードを形成する。
制御ワードは待ち行列に入れられ、次に使用可能な実行
装置にディスパッチされる。実行装置による処理はすべ
ての関連するソース・アドレスがアンロックされたとき
に開始される。実行装置の結果は改名された宛先レジス
タに書き込まれ、このようなレジスタは次いでアンロッ
クされる。CVT及び改名レジスタ(2)・アドレスは
汎用レジスタ・アドレスをリサイクルするため交換され
る。このプロセスは連続した命令に対して繰り返され
る。
【0022】次の例を対照となる命令の特定のセット及
び特定のデータに関連したレジスタ・アドレスの改名及
びリサイクルについて詳細に検討する。この例に使用さ
れる汎用レジスタ(GPR)、CVTテーブル、実行装
置、サイクルごとに取り出される命令などの数は、説明
のための便宜上のものである。このアーキテクチャは任
意の数のこれらの資源をサポートできる。加算、除算及
び乗算命令も説明のために選択されたものである。
【0023】まず図8に示すように、この例はアドレス
a0から始まり、a7まで続いているメイン・メモリな
いしキャッシュ・メモリ29を含んでおり、各アドレス
は1つの命令を有している。取出し装置(図示せず)は
クロック・サイクルごとにメモリから4つの命令を取り
出し、取り出された命令の2項目テーブル31内のアド
レスを識別する。この例ではCVTテーブルが2つしか
ないため、必要な項目は2つだけである。改名テーブル
12及び18の各々は00ないし03のアドレスのつい
た4つの項目を有している。この特定の例のコンピュー
タが4つの構成されたレジスタを有するように定義され
ているため4つの項目だけが存在しており、これに対応
して、プログラマがレジスタR0−R4だけを使用して
命令を書き込むことが可能となっている。制御ワード・
ジェネレータ9は、図3に示すように、各命令から制御
ワードを作成する。命令待ち行列13は長さが4項目の
バッファであり、制御ワードを格納するために使用され
る。この長さは任意のものである。
【0024】実行装置1は加算及び乗算を行う。これは
1クロック・サイクルで制御ワードを読み取り、1クロ
ック・サイクルで加算を行い、結果を書き戻す。乗算の
場合、1クロック・サイクルで読取りを行い、2クロッ
ク・サイクルで乗算を実行し、データが実際に格納され
る汎用レジスタ16に結果を書き戻す。実行装置2は除
算を行う。これは1クロック・サイクルで制御ワードを
読み取り、6クロック・サイクルで除算演算を終了し、
結果を書き戻す。実行装置3は乗算を行う。1クロック
・サイクルで制御ワードを読み取り、2クロック・サイ
クルで乗算演算を終了し、結果を書き戻す。
【0025】汎用レジスタ16は12の項目を有してい
る。4項目は必須であり、他の8つの項目は改名に使用
される。上述したように、このようなレジスタの数はシ
ステムで規定される計画レジスタ(4つ)プラスCVT
項目(各々4項目の2つのテーブル)の数の合計であ
る。すべての項目はデータを格納する。この例では2つ
のCVTテーブル11が使用されており、各々にはクロ
ック・サイクル当たり4つの制御ワードを処理するため
の4つの項目がある。この例で定義するように、最初の
CVTテーブルは0という基本アドレスを有しており、
他のテーブルは1という基本アドレスを有している。各
CVTの個々の行の項目のアドレスは00ないし13で
あり、最上位ビットはCVT基数(基本アドレス)に対
応している。各CVT行の項目は3つのフィールドを有
しており、その1つは改名のための物理アドレスを保持
する項目であり、2番目は元の命令に定義されているプ
ログラマの計画レジスタ・アドレスを保持する項目(論
理項目)であり、3番目のフィールドは特定のインプリ
メンテーションに必要なフラグまたは標識を保持するも
のである。この例では、3つのフラグがあり、それぞ
れ、項目が使用されていること、命令が実行されたこ
と、及び命令が割込みを引き起こしたことを示してい
る。物理項目はCVT0の項目0からCVT1の項目3
までのアドレス04ないし11によって初期設定され
る。これらのアドレス(04−11)は改名1によって
最初に割り当てられたアドレス(00−03)ととも
に、GPRで利用可能な12のアドレス(00−11)
のすべてをカバーする。
【0026】この例は図9の初期化されたレジスタの状
態から始まる。目標はこのアーキテクチャ中で命令をナ
ビゲートし、これによって、命令がどのようにシステム
内を流れるかを検査することである。汎用レジスタ00
ないし03にはすでに、連続的な値123、45、6
1、及び100を有するデータがロードされている。取
出し装置がクロック・サイクルごとに4つの命令を取り
出すので、取出しはアドレスa0から加算命令を、また
後続のメモリ・ロケーションから3つのNoop(命令
なし)を取得する。
【0027】 加算命令は次の通りである。R3 <- R1 + R2。
【0028】この加算命令によれば、第1のレジスタ
(01)の内容を第2のレジスタ(02)の内容に加算
し、結果を第3のレジスタ(03)に格納しなければな
らない。これはプログラマが認識している4つの計画レ
ジスタのうち01−03を使用するプログラマによって
定義されている。この命令の実行の終了時に、R3に対
応した汎用レジスタの内容は45(R1)と61(R
2)の合計である値106を含んでいなければならな
い。事象はクロック・サイクルごとに発生する。
【0029】最初のクロック・サイクルで、取出し装置
はa0から始まる4つの命令のセットを取得する。ま
た、最初の使用可能なCVTテーブル(CVT0)が選
択される。取出し装置のアドレス・テーブル項目00に
は、使用していることを示す1がフラグに立てられ、メ
モリ・アドレスa0が入力される。メモリ・ロケーショ
ンa0−a3にある命令が取り出される。
【0030】第2のクロック・サイクル中に、制御ワー
ド生成論理が各命令から制御ワードを作成する。第1の
命令(加算命令)に対して項目0を、また次の3つの命
令(Noop命令)に対して項目1、2及び3を使用し
て、CVT0が4つの命令に割り当てられる。
【0031】第1の命令に対する制御ワードはCVTア
ドレス、演算コード、宛先アドレス及びソース・アドレ
スについて図3の手順にしたがって作成される。ここ
で、図10を参照する。CVTフィールドはこの命令に
割り当てられたCVTの基数及び行番号を取り入れる。
CVTの基数が0であり、行番号が0であるから、フィ
ールドは00になる。制御ワードの演算コード・フィー
ルドは変更の行われていないオリジナルの加算命令を含
むようになる。宛先ロケーションはCVTテーブルの0
0行項目の物理フィールドの数値(04)を使用して、
オリジナルの命令値03をCVT行の論理項目におく。
ソース・レジスタは改名レジスタ1を使用して改名され
る。R1及びR2を改名テーブルに対するアドレスとし
て使用すると、既存の項目がR1及びR2のソース項目
を置き換えるのに使用される。この場合、R1は値01
を取り、R2は値02を取る。
【0032】オリジナルの命令は宛先R3を使用してい
る。制御ワードの宛先項目がCVTアドレス00によっ
て汎用レジスタ・アドレス04になると指定されている
ので、04というレジスタ・アドレスが改名テーブル1
の03という項目におかれる。また、GPRの物理ロケ
ーション04がロックされる。CVT0の項目0は3ビ
ットからなるフラグ項目の最初のビットによって使用さ
れているものとマークされる(図11)。他の命令はN
oopであるため、これらに対して制御ワードは生成さ
れない。
【0033】クロック・サイクル3は制御ワードを実行
装置へディスパッチする。実行装置は使用中でなけれ
ば、制御ワードを制御ワード・ジェネレータから直接取
り入れる。これらが他の命令の実行中であれば、制御ワ
ードは1つまたは複数の実行装置が使用可能になるま
で、制御ワード待ち行列に格納される。図11を参照す
ると、制御ワードは制御ワード待ち行列に格納されてい
る。
【0034】クロック・サイクル4で、実行装置1は制
御ワードを取り入れ、解読し、GPRの物理ロケーショ
ンから、アドレスが識別したデータを読み取る。図12
に示すように、ソース・ロケーション01及び02はそ
れぞれデータ値45及び61を有している。
【0035】クロック・サイクル5中に、図13に示す
ように、実行装置1の加算の106という結果は、制御
ワードによって04となっているGPR内の宛先ロケー
ションに書き込まれ、このロケーションに関連するロッ
ク・ビットは0へ切り換えられる。CVT0の項目0の
終了フラグ・ビット(3ビット中の2番目のビット)は
1へ切り換えられる。
【0036】クロック・サイクル6は最初のグループの
4つの命令の最後の演算を開始する。開始状態は図13
に示されており、完了時に、図14のものに遷移する。
CVT項目00に対する終了フラグは改名レジスタ2の
行に対するポインタとして、対応する論理項目03の使
用を開始する。改名2の行03もアドレス03を含んで
いる(図13参照)。物理項目アドレス04及び改名レ
ジスタ2のレジスタ行03の内容のアドレス03は交換
される。交換後、CVT0の行項目0の物理ロケーショ
ンはアドレス03を含んでおり、改名レジスタ2の行0
3はアドレス04を含んでいる(図14参照)。取出し
装置のアドレス・テーブル項目0は0とされ、CVT0
がもはや使用されていないことを示す。これによって、
最初の取出し中に獲得された命令の実行が完了する。
【0037】値106という命令の結果を表すデータは
計画レジスタR3内にあるが、改名レジスタ2によるア
ドレス変換によって定義されるように、アドレス03は
実際のGPRアドレス04に変換される。
【0038】取り出された4つの命令の次のセットは図
15に示すように現れる。このセットにより、いくつか
の障害を示すとともに、これらをこのアーキテクチャで
どのように解決するかを示す。このため、メモリ内の次
の4つの命令は除算、乗算、乗算及び加算の混合体を含
んでいる。これらの命令はアドレスa4から始まり、a
7まで続いている。これらの命令は以下の通りであり、
結果はかっこ内に入っている。
【0039】 R0 <- R1 / R2 ........ (R0 = 045 / 061 = 0.74) R3 <- R2 * R0 ........ (R3 = 061 * 0.74 = 45.14) R0 <- R1 * R2 ........ (R1 = 045 * 061 = 2745) R3 <- R2 + R1 ........ (R3 = 061 + 045 = 106)
【0040】第1の命令は、実行及び結果データの汎用
レジスタへの書き戻しに6クロック・サイクルを必要と
する多重サイクル命令である。第2の命令も多重サイク
ル命令であるが、実行に必要なクロック・サイクルは2
サイクルだけである。障害がこれら2つの命令の間に存
在している。第2の命令のソースの1つは第1の命令の
宛先(結果)である。したがって、リード・アフタ・ラ
イト(RAW)障害が存在する。すなわち、第2の命令
は第1の命令が終了し、結果を書き込むまで、始動して
はならない。本アーキテクチャはすべての実行装置の間
の通信なしに、オペランドの比較なしに、実行装置間の
チェックなしに、さらには、シェルビング方法の実施な
しにこの障害を解決する。
【0041】第3の命令も多重サイクル命令であり、実
行に2クロック・サイクルがかかる。この命令には2種
類の障害がある。第1の障害はライト・アフタ・リード
(WAR)である。すなわち、第2の命令がそのソース
をR0から読み取る前に、実行装置が結果(R0)を生
成し、これをGPRに書き戻してしまう場合がある。こ
れが生じた場合、第2の命令は間違ったデータを読み取
ることになる。第2の障害はライト・アフタ・ライト
(WAW)であるが、これは第1の命令と第2の命令
(実施例では第3の命令)の宛先が同一であることに起
因して生ずる。第2の命令(同前)が第1の命令よりも
前に終了することがあり、これによって、レジスタR0
の結果のデータにエラーが生じる。表1は命令ごとの4
つの命令のエラーのない状態を示す。
【0042】
【表1】
【0043】4つの命令の完了時に、レジスタは次の値
を含んでいるはずである。 R0 = 2745 R1 = 045 R2 = 061 R3 = 106
【0044】第1のクロック・サイクルの際に、取出し
装置はアドレスa4から始まり、a7まで続くメモリ内
の次の4つの命令に進む。
【0045】CVT1が4つの命令のこのセットに使用
されるが、これはこのセットが使用可能なCVTテーブ
ルの順序で次のものだからである。実際の用途では4つ
以上になると思われる複数のCVTテーブルを使用する
ことによって、取出し後のレジスタ割振りの比較、改名
されたレジスタの割当て、及びレジスタをリサイクルす
るためのアドレスの推断交換などの連続した取出しに関
する操作の並行性が可能となる。CVTテーブル1に関
連した4つの命令のブロックを識別するために、アドレ
スa4が取出しのアドレス・テーブル(図15のブロッ
ク31)におかれる。
【0046】クロック・サイクル2によって、図3を参
照して前述した手順を使用し、図5−図7の流れ図によ
って説明する方法にしたがって、制御ワードが各命令に
対して生成される。4つの制御ワードの各々の生成に関
連する結果は、混乱を最小限とするため、図16−図1
9に独立して示されている。通常、これら4つの制御ワ
ードの生成は単一サイクルで生じる。各命令に対するア
ドレスの移動は図10に表した生成の破線によって示さ
れている通りである。推断制御ワードは図19のCVT
1によって変換されたものとして制御ワード・ジェネレ
ータに現れる。CVT1は論理アドレス項目ならびに使
用中フラグの設定を反映している。改名レジスタ1はレ
ジスタR0−R3に対する最終的な変換を反映してい
る。クロック・サイクル3は4つの制御ワードを図20
に示すような制御ワード待ち行列に送られる。
【0047】次の4番目のクロック・サイクルは制御ワ
ードを、適切で、使用可能な実行装置にディスパッチす
る。次いで、各実行装置は割り当てられたアドレスのG
PRからの読取りを試みる。実行装置が必要とするロッ
ク・ビット・セットをレジスタで見つけだした場合、実
行装置は以降のクロック・サイクルで再度試みる。
【0048】図21に示すように、第1の制御ワードは
除算演算を含んでおり、したがって、実行装置2へディ
スパッチされる。第2の制御ワードは乗算を含んでお
り、したがって、実行装置3へディスパッチされる。第
3の制御ワードは乗算のために実行装置1へディスパッ
チされる。付加的な演算を処理できる使用可能な実行装
置が存在するようになるまで、第4の命令ワードは制御
ワード待ち行列にとどまる。
【0049】実行装置1及び2がそのソース・データを
汎用レジスタから読み取ることができるが、これはこの
データがロックされていないからであることに留意され
たい。一方、実行装置3は、GPRのレジスタ08のロ
ック・ビットがセットされているため、ソース・データ
(08)を読み取ることができない。この装置はレジス
タがアンロックされるまで、各連続したクロック・サイ
クルで読取りを反復して試みる。
【0050】クロック・サイクル5中に、多数の事象が
発生する。実行装置1は乗算タスクの2つのサイクルの
うちサイクル1を終了する。実行装置2は除算タスクの
6つのサイクルのうちサイクル1を終了する。最後に、
実行装置3はGPRのレジスタ08内の項目の読取りを
試みるが、ロック・アウト状態を継続する。
【0051】クロック・サイクル6によって、実行装置
1は2つのサイクルのうちサイクル2を終了し、その
後、宛先GPRのアドレス10に結果を書き戻し、レジ
スタをアンロックし、終了したフラグを物理アドレス1
0に関連したCVT1の項目2にセットする。実行装置
2は6つの除算サイクルのうちサイクル2を終了する。
実行装置3はGPRのレジスタ08の読取りを試みる
が、ロック・アウト状態を継続する。図22の結果を参
照されたい。
【0052】各クロック・サイクルで、CVT1は終了
フラグの状態を監視し、1つまたは複数の命令が、ただ
し、オリジナルの命令の順序で、完了したかどうかを決
定する。順次連続した行が終了フラグ・セットを有して
いる場合、改名レジスタ2が図14を参照して前述した
手順にしたがったレジスタ・アドレスの交換によって更
新される。命令順序の保全性はCVT及び改名レジスタ
2のこのような順序だった更新によって維持される。
【0053】クロック・サイクル7によって多数の事象
が可能となる。図23を参照されたい。まず、制御ワー
ド待ち行列は実行装置1が使用可能であり、加算演算が
可能であると判定する。実行装置1は制御ワードを受け
取り、GPRからソース・レジスタ・データを読み取
る。実行装置2は除算演算の6つのサイクルのうちサイ
クル3を終了する。実行装置3はGPRのレジスタ08
の読取りを再度試みる。最後に、CVT1は改名レジス
タ2の更新を試みるが、行2の項目前に未終了の項目が
あるため、妨げられる。
【0054】図24はクロック・サイクル8以降のレジ
スタの状態を示す。このサイクルの間に、加算演算が1
サイクルの演算であるから、実行装置1はこの演算を終
了し、結果をGPRアドレス11に書き込み、GPRア
ドレス11のロック・ビットをオフにし、CVT1の行
項目3に終了ビットをセットする。実行装置2は除算演
算の6つのサイクルのうちサイクル4を終了する。実行
装置3はGPRのレジスタ08の読取りを再度試みる。
CVT1は改名レジスタ2の更新を試みるが、行項目2
前の未終了項目によって妨げられる。
【0055】4つの命令のこのセットにおいて、最後の
命令がまず終了し、宛先に書き込まれるようになること
に留意されたい。第1の命令及び第2の命令は後で完了
している。これはWAR、WAW及びRAW障害がアー
キテクチャによって適宜管理されることを示している。
【0056】クロック・サイクル9の間に、実行装置1
は他の命令が入力していない点で空きである。実行装置
2は除算演算の6つのサイクルのうちサイクル5を終了
する。実行装置3はGPRのレジスタ08の読取りを再
度試みる。CVT1は改名レジスタ2の更新を再度試み
る。
【0057】クロック・サイクル10の結果を図25に
示す。実行装置1は空き状態のままである。実行装置2
は除算演算を終了し、結果のデータをGPRのレジスタ
08に書き込み、GPRのロック・ビットをオフにし、
終了ビットをCVT1の行項目0にセットする。レジス
タ08がアンロックされていれば、実行装置3はGPR
のレジスタ08を正常に読み取る。CVT1は改名レジ
スタ2の更新の試みに失敗する。
【0058】11番目のクロック・サイクルの間、実行
装置1は空き状態のままである。実行装置2も空き状態
である。実行装置3は2サイクルの乗算演算のサイクル
1を実行する。CVT1はその行項目0ならびに改名レ
ジスタ2の関連アドレス00を更新する。CVT1の行
項目1は終了しておらず、命令順序の保全性の制約のた
め、項目2及び3の更新を妨げる。図26の結果を参照
されたい。
【0059】12番目のクロック・サイクルの結果は図
27に示されている。実行装置1は空き状態のままであ
る。実行装置2は空き状態のままである。実行装置3は
乗算演算を完了し、結果をGPRレジスタ09に書き込
み、レジスタ09のロック・ビットをオフにし、終了フ
ラグ・ビットをCVT1の項目行1にセットする。実行
装置の結果が書き込まれ、終了フラグがセットされるの
と同じサイクルの間に、命令順序の評価が行われるた
め、CVT1は改名レジスタ2を更新することができな
い。
【0060】13番目のクロック・サイクルはすべての
実行装置を空きにする。図28−図30を参照された
い。CVT1の行項目1、2及び3の順ですべての終了
ビットに12番目のサイクルの結果がセットされるため
(図27参照)、改名レジスタ2をこのサイクルで更新
する準備ができる。
【0061】更新操作は理解を簡単とするため、図28
−図30を個別化しているが、実際のシステムでは、こ
れらの操作は同時に行われる。CVT1の論理項目のア
ドレス(中央のカラム)は再度改名レジスタ2の行を識
別するために使用され、この場合、GPRアドレスはC
VT1テーブルと改名レジスタ2の間で交換される(詳
細は上述のとおり)。CVTの2つの論理アドレスが改
名レジスタ2の同一の行項目を識別した場合(この例で
はCVT1の2つの03ポインタなど)、CVT11か
らCVT13への更新順の順次性によって最後のロケー
ションを使用した単一の更新処理が可能となることに留
意されたい(図30)。これによって、論理アドレス0
3については、04及び11に関して単一の交換のみが
必要とされる。
【0062】命令取出し装置のアドレス・テーブル(図
30:31)も更新され、CVT1の状態を反映する。
このテーブル及びCVT1内の両方のこのアドレスが再
使用できることを示すため、ビットがオフにされる。
【0063】改名レジスタ2によって変換されたGPR
レジスタ内の結果が上記の表1の値を反映していること
に留意されたい(図30)。改名レジスタ2の項目00
は、2745という値を含んでいるGPR10をポイン
トする。改名レジスタ2の項目01は45という値を含
んでいるGPR01をポイントする。改名レジスタ2の
項目02は61という値を含んでいるGPR02をポイ
ントする。最後に、改名レジスタ2の項目03は106
という値を含んでいるGPR11をポイントする。すべ
ての結果は予期した通りである。
【0064】正確な割込みを管理するアーキテクチャの
機能を理解するために、前出の例を改善することを考え
る。正確な割込みとは、スーパ・スカラ・システムが割
込みないし分岐操作に耐えるとともに、プログラマが当
初定義した命令順序の保全性を維持することを意味す
る。
【0065】実行装置1で行われるR1及びR2を含ん
でいる乗算命令である第3の命令、すなわちa6が、3
つのクロック・サイクルのうち最初のクロックの実行後
に割込みに遭遇したものと想定する。このような状況が
生じた場合、コンピュータは第1(a4)及び第2(a
5)の命令を完了済みである。レジスタ及び実行装置の
状態を図31に示す。図31が対応する図22と比較す
ると、CVT1の行項目2に割込みフラグ(3ビットの
うち最後のビット)が存在しており、終了フラグが存在
していない点で異なっていることに留意されたい。
【0066】第4の命令が実行されてはならない。すな
わち、その結果がGPRに書き込まれてはならない。各
種のスーパ・スカラ・アーキテクチャはこの問題を解決
するためにさまざまな手法を取っている。前もって特別
な準備をし、割込みを引き起こすと考えられる命令をパ
イプにシェルビングまたは保持するものがある。シャド
ウ・レジスタといわれる重複レジスタ・ファイル、GP
Rプレバッファなどを使用するアーキテクチャもある。
実行後に、結果を実際のGPRロケーションへ移すかど
うかの決定が行われる。残念ながら、このような技法は
連続した命令の実行が遅い。
【0067】これに対し、本アーキテクチャは、命令
が、実行装置内ならびにほとんどの制御ワードの実行中
に流れることを可能とする。割込みの影響は取り出され
た命令の各ブロックの処理の最終段階で解決される。
【0068】副次的な、ただし重要な考慮事項として、
本アーキテクチャは割込みを引き起こす命令(本例で
は、a6)のアドレスが報告のために識別可能となるよ
うにする。これに関し、CVT1の割込みフラグがメモ
リ・アドレスa4から始まる取り出されたグループの第
3の項目にあることに留意されたい。したがって、a6
=a4+2となる。ここで、a4+2の値2は割込みフ
ラグを示していない先行するCVT1の項目から得られ
るものである。
【0069】GPRに現れる完了した命令の結果は第1
及び第2の命令の完了、ならびに割込みを受けた第3及
び第4の命令の完了の欠如を反映したものでなければな
らない。これを表2に示す。
【0070】
【表2】
【0071】それ故、クロック・サイクル5という特定
の事象に関して、実行装置1は乗算演算の2つのサイク
ルのうちサイクル1を終了し、実行装置2は除算演算の
6つのサイクルのうちサイクル1を終了する。割込みが
あると、実行装置1は実行を停止し、割込みビットをC
VT1の行項目2にセットする。実行装置3はGPRの
項目08の読取りを試みるが、ロック・アウトされる。
図31はこの状況を示す。新しい命令がメモリから取り
出されない限り、他のコンピュータ操作はクロック・サ
イクル13まで継続する。
【0072】クロック・サイクル13で、すべての実行
装置は空きになる。CVT1は1、2及び3に対する項
目を有している。したがって、すべての行を改名レジス
タ2と交換することによって更新される。この場合も、
CVT1の論理項目データは改名レジスタ2の新しい行
をポイントする。しかしながら、割込みより上のロケー
ションからの項目は更新されない。
【0073】上述したように、割込みを引き起こす命令
は13番目のクロック・サイクルの開始時にレジスタ・
データから簡単に決定できる。取出し装置のアドレス・
テーブルには12という番号が供給されるが、この番号
はCVT1の行項目2が割込みのロケーションであるこ
とを示す。取出し装置はアドレス・テーブルの項目1が
a4であると判断する。これが項目0のアドレスである
から、取出し装置はこの数値に2を加算し、a6が得ら
れる。
【0074】図32は実行装置1のクロック・サイクル
5における割込みを含んでいる13番目のサイクルの終
了時のレジスタの状態を示す。GPR内のデータのアド
レスは改名レジスタ2のレジスタ変換によって得られ
る。たとえば、改名レジスタ2の項目00は割込み後の
R0の値0.74を含んでいるGPR08をポイントす
る。表2を参照されたい。改名レジスタ2の項目01は
割込み後のR1の値45を含んでいるGPR01をポイ
ントする。改名レジスタ2の項目02は割込み後のR2
の値61を含んでいるGPR02をポイントする。改名
レジスタ2の項目03は対応する値45.14を含んで
いるGPR09をポイントする。すべての命令が順不同
で、かつ割込みの実際の時間における完了の各種の段階
で処理されたとして、結果は割込みを受けた命令のもの
として処理された命令の状態を正確に反映する。割込み
後の命令及びレジスタの状態から、命令を再始動できる
ことは明らかである。命令処理はメモリ・アドレスa6
から始まる。
【0075】上記の説明により、命令のデータ依存性が
汎用レジスタでロック・ビットを使用することによって
管理されることに留意されたい。反依存性はすべてのレ
ジスタの改名によってアーキテクチャ内で管理され、ソ
ース・レジスタは改名テーブル1を使用し、宛先レジス
タはCVTテーブルを使用する。最後に、命令の削除を
ともなう分岐、再始動または正確な割込みによって必要
とされうる命令順の保全性は、アーキテクチャの順序だ
った退去(retirement)の側面によって達成される。実
行装置間あるいは命令サイクル速度間の相違によって生
じる命令の順不同の実行は、本アーキテクチャに関して
重要なものではない。ハードウェア装置の数及び複雑さ
も、制御ワードが、単なるCVTアドレスを越えるよう
な拡張的な状況、数またはロケーション・データ・ビッ
ト・ストリングによって補完されないという点で最小限
のものとされる。汎用レジスタの効率的なリサイクルは
明確であろう。
【図面の簡単な説明】
【図1】従来技術の多重実行装置アーキテクチャの高水
準略ブロック図である。
【図2】本アーキテクチャのレジスタ及び実行装置の好
ましい実施形態の略ブロック図である。
【図3】制御ワードの形成を表す機能略図である。
【図4】本発明によるレジスタのリサイクルに関連する
動作を表す機能略図である。
【図5】図6及び図7とともに本発明の特徴とする方法
を表す流れ図である。
【図6】図5及び図7とともに本発明の特徴とする方法
を表す流れ図である。
【図7】図5及び図6とともに本発明の特徴とする方法
を表す流れ図である。
【図8】一連の命令例を管理するシステム例のレジスタ
内容を示す略図である。
【図9】一連の命令例を管理するシステム例のレジスタ
内容を示す略図である。
【図10】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図11】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図12】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図13】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図14】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図15】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図16】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図17】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図18】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図19】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図20】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図21】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図22】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図23】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図24】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図25】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図26】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図27】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図28】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図29】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図30】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図31】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。
【図32】一連の命令例を管理するシステム例のレジス
タ内容を示す略図である。

Claims (11)

    【特許請求の範囲】
  1. 【請求項1】制御ワードを実行するための複数個の実行
    装置と、 アドレスによって制御ワードを格納するための汎用レジ
    スタと、 汎用レジスタを参照する、改名されリサイクルされたレ
    ジスタ・アドレスを使用して、使用可能な実行装置へ伝
    送する制御ワードを形成する手段と、 実行装置内での順序付けられた制御ワードの実行に応答
    して汎用レジスタ・アドレスをリサイクルする手段とを
    有する、 順不同で命令を実行するためのコンピュータ・システ
    ム。
  2. 【請求項2】汎用レジスタ・アドレスをリサイクルする
    前記手段が、先行する制御ワードの実行に基づいてレジ
    スタ・アドレスの改名を更新する、請求項1記載の装
    置。
  3. 【請求項3】汎用レジスタ・アドレスをリサイクルする
    前記手段が、取り出された命令の数に一致するサイズの
    複数のサブテーブルをリサイクルする、請求項1記載の
    装置。
  4. 【請求項4】制御ワードを形成する前記手段が、操作コ
    ード、改名されたソース・アドレス、及び衝突ベクトル
    ・テーブルが改名した宛先アドレスからなる制御ワード
    を生成する、請求項2記載の装置。
  5. 【請求項5】入力命令を順不同に実行するためのコンピ
    ュータ・システムを操作する方法であって、 第1の改名テーブルを使用して、複数の入力命令のソー
    ス・レジスタ・アドレスを改名し、 衝突ベクトル・テーブルを使用して、複数の入力命令の
    宛先レジスタ・アドレスを改名し、 改名されたソース・レジスタ・アドレス、改名された宛
    先レジスタ・アドレス、及び衝突ベクトル・テーブル・
    アドレスからなる制御ワードを、使用可能な実行装置を
    使用して処理し、 先行する命令の終了に基づいてアドレスをリサイクルす
    るステップを含む、 コンピュータ・システムの操作方法。
  6. 【請求項6】入力命令の順序に対応した順序で前記アド
    レスのリサイクルが実行される、請求項5記載の方法。
  7. 【請求項7】レジスタ関連データが対応する実行装置に
    よって生成されるまで、宛先レジスタのデータへのアク
    セスをロックするステップを含む、 請求項6記載の方法。
  8. 【請求項8】レジスタ関連データの入力時に、対応する
    宛先レジスタへのアクセスをアンロックし、衝突ベクト
    ル・テーブルの対応する項目に終了フラグをセットする
    ステップを含む、 請求項7記載の方法。
  9. 【請求項9】入力順に命令が完了すると、順次前記の衝
    突ベクトル・テーブルと第2の改名テーブルの間でアド
    レスをリサイクルするステップを含む、 請求項8記載の方法。
  10. 【請求項10】計画レジスタのデータに基づいて計算を
    行う順序付けられたいくつかの命令を実行するためのデ
    ータ処理システムにおいて、 データを格納する複数の汎用レジスタと、 計画レジスタに対応し、かつ汎用レジスタのアドレスを
    含む複数の改名レジスタと、 命令中の指定の計画レジスタを、対応する前記改名レジ
    スタに含まれた汎用レジスタ・アドレスによって置き換
    えて制御ワードを生成するための制御ワード生成手段
    と、 前記汎用レジスタからのデータに基づいて前記制御ワー
    ドを実行する複数個の実行装置と前記汎用レジスタ内の
    順序付けられた命令データの保全性を維持するととも
    に、順不同に制御ワードを実行する場合に各実行装置内
    の制御ワードの実行を調整するための調整手段とを含
    む、 コンピュータ・システム。
  11. 【請求項11】前記調整手段が、制御ワードの実行状況
    を格納するための手段を含むとともに、宛先レジスタへ
    のアクセスをロックする手段を含む、請求項10記載の
    コンピュータ・システム。
JP5265946A 1992-10-30 1993-10-25 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法 Expired - Fee Related JP2698033B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US96969592A 1992-10-30 1992-10-30
US969695 1992-10-30

Publications (2)

Publication Number Publication Date
JPH06214784A true JPH06214784A (ja) 1994-08-05
JP2698033B2 JP2698033B2 (ja) 1998-01-19

Family

ID=25515870

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5265946A Expired - Fee Related JP2698033B2 (ja) 1992-10-30 1993-10-25 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法

Country Status (9)

Country Link
US (1) US5481683A (ja)
EP (1) EP0600611B1 (ja)
JP (1) JP2698033B2 (ja)
KR (1) KR970004509B1 (ja)
CN (1) CN1053508C (ja)
AT (1) ATE189071T1 (ja)
CA (1) CA2098414C (ja)
DE (1) DE69327637T2 (ja)
TW (1) TW306987B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938149B2 (en) 2000-09-28 2005-08-30 Kabushiki Kaisha Toshiba Renaming apparatus and processor

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06242948A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd パイプライン処理計算機
US5724536A (en) * 1994-01-04 1998-03-03 Intel Corporation Method and apparatus for blocking execution of and storing load operations during their execution
US6378062B1 (en) * 1994-01-04 2002-04-23 Intel Corporation Method and apparatus for performing a store operation
US5537559A (en) * 1994-02-08 1996-07-16 Meridian Semiconductor, Inc. Exception handling circuit and method
US6205538B1 (en) * 1994-08-24 2001-03-20 Sun Microsystems, Inc. Instruction result labeling in a counterflow pipeline processor
US5625789A (en) * 1994-10-24 1997-04-29 International Business Machines Corporation Apparatus for source operand dependendency analyses register renaming and rapid pipeline recovery in a microprocessor that issues and executes multiple instructions out-of-order in a single cycle
US5675759A (en) * 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information
US5974240A (en) * 1995-06-07 1999-10-26 International Business Machines Corporation Method and system for buffering condition code data in a data processing system having out-of-order and speculative instruction execution
GB2308470B (en) * 1995-12-22 2000-02-16 Nokia Mobile Phones Ltd Program memory scheme for processors
US5761524A (en) * 1996-03-15 1998-06-02 Renditon, Inc. Method and apparatus for performing and operation multiple times in response to a single instruction
US5765016A (en) * 1996-09-12 1998-06-09 Advanced Micro Devices, Inc. Reorder buffer configured to store both speculative and committed register states
US5802338A (en) * 1996-10-01 1998-09-01 International Business Machines Corporation Method of self-parallelizing and self-parallelizing multiprocessor using the method
US5872949A (en) * 1996-11-13 1999-02-16 International Business Machines Corp. Apparatus and method for managing data flow dependencies arising from out-of-order execution, by an execution unit, of an instruction series input from an instruction source
US5889974A (en) * 1996-12-30 1999-03-30 Intel Corporation Method and apparatus for the detection of reordering hazards
US5805849A (en) * 1997-03-31 1998-09-08 International Business Machines Corporation Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
US5887161A (en) * 1997-03-31 1999-03-23 International Business Machines Corporation Issuing instructions in a processor supporting out-of-order execution
US5870582A (en) * 1997-03-31 1999-02-09 International Business Machines Corporation Method and apparatus for completion of non-interruptible instructions before the instruction is dispatched
US6098167A (en) * 1997-03-31 2000-08-01 International Business Machines Corporation Apparatus and method for fast unified interrupt recovery and branch recovery in processors supporting out-of-order execution
US5913048A (en) * 1997-03-31 1999-06-15 International Business Machines Corporation Dispatching instructions in a processor supporting out-of-order execution
US5987598A (en) * 1997-07-07 1999-11-16 International Business Machines Corporation Method and system for tracking instruction progress within a data processing system
US6128728A (en) * 1997-08-01 2000-10-03 Micron Technology, Inc. Virtual shadow registers and virtual register windows
US5901299A (en) * 1997-09-19 1999-05-04 International Business Machines Corporation Method and apparatus for transferring data between buses having differing ordering policies
US5938753A (en) * 1997-09-19 1999-08-17 International Business Machines Corporation Method and apparatus for controlling autonomous units transferring data between buses having different ordering policies
US6016526A (en) * 1997-09-19 2000-01-18 International Business Machines Corporation Method and apparatus for transferring data between buses having differing ordering policies via the use of autonomous units
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6065110A (en) * 1998-02-09 2000-05-16 International Business Machines Corporation Method and apparatus for loading an instruction buffer of a processor capable of out-of-order instruction issue
US6061785A (en) * 1998-02-17 2000-05-09 International Business Machines Corporation Data processing system having an apparatus for out-of-order register operations and method therefor
US6067644A (en) * 1998-04-15 2000-05-23 International Business Machines Corporation System and method monitoring instruction progress within a processor
US6212619B1 (en) 1998-05-11 2001-04-03 International Business Machines Corporation System and method for high-speed register renaming by counting
US6134645A (en) * 1998-06-01 2000-10-17 International Business Machines Corporation Instruction completion logic distributed among execution units for improving completion efficiency
US6324640B1 (en) * 1998-06-30 2001-11-27 International Business Machines Corporation System and method for dispatching groups of instructions using pipelined register renaming
US6243786B1 (en) * 1998-12-23 2001-06-05 Industrial Technology Research Institute Apparatus and method for generating an interrupt prohibited zone in pipelined data processors
EP1236097A4 (en) * 1999-09-01 2006-08-02 Intel Corp BRANCH COMMAND TO THE PROCESSOR
WO2001016702A1 (en) 1999-09-01 2001-03-08 Intel Corporation Register set used in multithreaded parallel processor architecture
US7191309B1 (en) 1999-09-01 2007-03-13 Intel Corporation Double shift instruction for micro engine used in multithreaded parallel processor architecture
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
US20020053017A1 (en) * 2000-09-01 2002-05-02 Adiletta Matthew J. Register instructions for a multithreaded processor
US6671794B1 (en) * 2000-10-02 2003-12-30 International Business Machines Corporation Address generation interlock detection
US7020871B2 (en) * 2000-12-21 2006-03-28 Intel Corporation Breakpoint method for parallel hardware threads in multithreaded processor
US7191315B2 (en) * 2001-06-04 2007-03-13 Sun Microsystems, Inc. Method and system for tracking and recycling physical register assignment
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US7487505B2 (en) 2001-08-27 2009-02-03 Intel Corporation Multithreaded microprocessor with register allocation based on number of active threads
US7225281B2 (en) * 2001-08-27 2007-05-29 Intel Corporation Multiprocessor infrastructure for providing flexible bandwidth allocation via multiple instantiations of separate data buses, control buses and support mechanisms
US7610451B2 (en) * 2002-01-25 2009-10-27 Intel Corporation Data transfer mechanism using unidirectional pull bus and push bus
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7337275B2 (en) * 2002-08-13 2008-02-26 Intel Corporation Free list and ring data structure management
US6941438B2 (en) 2003-01-10 2005-09-06 Intel Corporation Memory interleaving
US7272701B2 (en) * 2003-10-22 2007-09-18 Intel Corporation Method and apparatus for limiting ports in a register alias table having high-bandwidth and low-bandwidth structures
US7478276B2 (en) * 2005-02-10 2009-01-13 International Business Machines Corporation Method for checkpointing instruction groups with out-of-order floating point instructions in a multi-threaded processor
US7409589B2 (en) * 2005-05-27 2008-08-05 International Business Machines Corporation Method and apparatus for reducing number of cycles required to checkpoint instructions in a multi-threaded processor
US7873625B2 (en) * 2006-09-18 2011-01-18 International Business Machines Corporation File indexing framework and symbolic name maintenance framework
US20080242560A1 (en) * 2006-11-21 2008-10-02 Gunderson Kevin L Methods for generating amplified nucleic acid arrays
US8677050B2 (en) * 2010-11-12 2014-03-18 International Business Machines Corporation System, method and computer program product for extending a cache using processor registers
US9072325B2 (en) 2012-08-30 2015-07-07 Shelby Group International, Inc. Glove finger attachment system
US9510628B2 (en) 2013-03-15 2016-12-06 Shelby Group International, Inc. Glove thermal protection system
US9588770B2 (en) 2013-03-15 2017-03-07 Samsung Electronics Co., Ltd. Dynamic rename based register reconfiguration of a vector register file
CN104598201A (zh) * 2013-10-31 2015-05-06 国际商业机器公司 指令性能分析的方法和设备
US10216523B2 (en) 2015-07-17 2019-02-26 General Electric Company Systems and methods for implementing control logic
CN107329936A (zh) * 2016-04-29 2017-11-07 北京中科寒武纪科技有限公司 一种用于执行神经网络运算以及矩阵/向量运算的装置和方法
US10694795B2 (en) 2017-01-10 2020-06-30 Shelby Group International, Inc. Glove construction
US11966328B2 (en) * 2020-12-18 2024-04-23 Advanced Micro Devices, Inc. Near-memory determination of registers

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
JPH0480824A (ja) * 1990-07-23 1992-03-13 Nec Corp データ処理装置

Family Cites Families (16)

* 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
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
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
US4847755A (en) * 1985-10-31 1989-07-11 Mcc Development, Ltd. Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies
US4903196A (en) * 1986-05-02 1990-02-20 International Business Machines Corporation Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5134561A (en) * 1987-07-20 1992-07-28 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US4972470A (en) * 1987-08-06 1990-11-20 Steven Farago Programmable connector
EP0312764A3 (en) * 1987-10-19 1991-04-10 International Business Machines Corporation A data processor having multiple execution units for processing plural classes of instructions in parallel
US5155817A (en) * 1988-04-01 1992-10-13 Kabushiki Kaisha Toshiba Microprocessor
US5487156A (en) * 1989-12-15 1996-01-23 Popescu; Valeri Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US5280615A (en) * 1990-03-23 1994-01-18 Unisys Corporation Out of order job processing method and apparatus
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
US5261071A (en) * 1991-03-21 1993-11-09 Control Data System, Inc. Dual pipe cache memory with out-of-order issue capability
US5355457A (en) * 1991-05-21 1994-10-11 Motorola, Inc. Data processor for performing simultaneous instruction retirement and backtracking
US5386562A (en) * 1992-05-13 1995-01-31 Mips Computer Systems, Inc. Circular scheduling method and apparatus for executing computer programs by moving independent instructions out of a loop

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
JPH0480824A (ja) * 1990-07-23 1992-03-13 Nec Corp データ処理装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6938149B2 (en) 2000-09-28 2005-08-30 Kabushiki Kaisha Toshiba Renaming apparatus and processor

Also Published As

Publication number Publication date
CN1053508C (zh) 2000-06-14
EP0600611B1 (en) 2000-01-19
KR940009820A (ko) 1994-05-24
CA2098414A1 (en) 1994-05-01
US5481683A (en) 1996-01-02
JP2698033B2 (ja) 1998-01-19
EP0600611A3 (en) 1995-01-11
CA2098414C (en) 1997-05-13
DE69327637D1 (de) 2000-02-24
EP0600611A2 (en) 1994-06-08
ATE189071T1 (de) 2000-02-15
TW306987B (ja) 1997-06-01
CN1105138A (zh) 1995-07-12
KR970004509B1 (ko) 1997-03-28
DE69327637T2 (de) 2000-07-06

Similar Documents

Publication Publication Date Title
JP2698033B2 (ja) 順不同の命令実行を可能にするコンピュータ・システム及びその操作方法
US5627983A (en) Processor architecture providing out-of-order execution
US5884060A (en) Processor which performs dynamic instruction scheduling at time of execution within a single clock cycle
EP0437044B1 (en) Data processing system with instruction tag apparatus
US6161173A (en) Integration of multi-stage execution units with a scheduler for single-stage execution units
US4903196A (en) Method and apparatus for guaranteeing the logical integrity of data in the general purpose registers of a complex multi-execution unit uniprocessor
US6035391A (en) Floating point operation system which determines an exchange instruction and updates a reference table which maps logical registers to physical registers
EP0638183B1 (en) A system and method for retiring instructions in a superscalar microprocessor
US5450560A (en) Pointer for use with a buffer and method of operation
JPH0370034A (ja) 順次プログラムの並列実行のためのコンピュータ・システム及び方法並びにデータ値割当方法
US5805849A (en) Data processing system and method for using an unique identifier to maintain an age relationship between executing instructions
JP2898105B2 (ja) コンパイル中にソフトウェア・スケジューリング技術を用いてハードウェアのパイプライン処理の中断を最小化する方法
US5708837A (en) Method and apparatus for register renaming in a computer system using a separate arithmetic available queue
JPH02227730A (ja) データ処理システム
EP1354267A2 (en) A superscalar processor having content addressable memory structures for determining dependencies
US5996063A (en) Management of both renamed and architected registers in a superscalar computer system
US20040193844A1 (en) Load and/or store queue emptying technique to facilitate atomicity in processor execution of helper set
US20040193845A1 (en) Stall technique to facilitate atomicity in processor execution of helper set
EP0736830B1 (en) Method and apparatus for reconstructing the address of the next instruction to be completed in a pipelined processor
JPH117389A (ja) プロセサ用の命令を処理するシステム及び方法
EP0863460B1 (en) Management of renamed registers in a superscalar computer system
JPH10283178A (ja) 命令を発行するための方法及びシステム
EP1190313B1 (en) Result field queue

Legal Events

Date Code Title Description
LAPS Cancellation because of no payment of annual fees