JP3014773B2 - プロセサアーキテクチャ - Google Patents

プロセサアーキテクチャ

Info

Publication number
JP3014773B2
JP3014773B2 JP2417670A JP41767090A JP3014773B2 JP 3014773 B2 JP3014773 B2 JP 3014773B2 JP 2417670 A JP2417670 A JP 2417670A JP 41767090 A JP41767090 A JP 41767090A JP 3014773 B2 JP3014773 B2 JP 3014773B2
Authority
JP
Japan
Prior art keywords
instruction
register file
instructions
branch
execution
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
JP2417670A
Other languages
English (en)
Other versions
JPH04270421A (ja
Inventor
ポペスク バレリー
エイ. シュルツ マール
エイ. ギブソン ゲイリー
イー. スプラックリン ジョン
デイ. ライトナー ブルース
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.)
SK Hynix America Inc
Original Assignee
Hyundai Electronics America Inc
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 Hyundai Electronics America Inc filed Critical Hyundai Electronics America Inc
Publication of JPH04270421A publication Critical patent/JPH04270421A/ja
Application granted granted Critical
Publication of JP3014773B2 publication Critical patent/JP3014773B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • 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
    • 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
    • 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/3842Speculative 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/3842Speculative instruction execution
    • G06F9/3844Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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
    • 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/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3865Recovery, e.g. branch miss-prediction, exception handling using deferred exception handling, e.g. exception flags
    • 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/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、実行のための命令が自
走型態様でフェッチされる改良型プロセサのアーキテク
チャ及び動作に関するものである。
【0002】
【従来の技術】従来のプロセサ構成は、通常、三つの段
階における命令の制御、即ちフェッチ(fetch)、
発行(issue)、実行(execute)を行な
う。第一段階においては、最後にフェッチした命令ヘポ
イントするプログラムカウンタによって識別される位置
においてメモリから命令がフェッチされ、その際に次の
命令をフェッチすることを可能とする。このフェッチに
続いて、その命令はデータ依存性の可能性についてチェ
ックされ、且つ、そのテストをパスすると、該命令及び
そのオペランドは実行のために発行される。データ依存
性は、その命令に対するデータがいまだ与えられていな
いので、命令を実行することが不可能な場合である。発
行された命令は、仮想−発行プログラムカウンタによっ
て識別することが可能である。命令が発行されると、そ
れは、実行段階へ送られ、そこで、結果を発生し、該結
果はレジスタファイル又はメモリの何れかに書込まれ、
その際にプロセサの状態を変更させる。別のプログラム
カウンタ、即ちアップデート−仮想PCは、プロセサの
状態のアップデート動作を完了した命令を識別する。こ
れら三つのプログラムカウンタ(即ち、フェッチ、発行
−仮想及びアップデート−仮想)は、従来、同期されて
いる。従って、フェッチされた命令は、そのオペランド
が与えられている場合に発行され、且つ発行される命令
は実行パイプラインを介して進行する。パイプラインの
終端において、プロセサの状態はアップデートされる。
命令がフェッチされ、発行され且つ実行され、且つプロ
セサ状態は、プログラム内の命令の順番によって定義さ
れる如く、厳格な逐次的順番でアップデートされる。
【0003】従来のプロセサにおけるこれら三つのプロ
グラムカウンタ(即ち、フェッチ、発行−仮想及びアッ
プデート−仮想)は互いにリンクされており、従ってそ
れらは連続的に隣接する命令へポイントする。従って、
任意の時間において、従来のプロセサにおけるフェッチ
プログラムカウンタ、発行−仮想プログラムカウンタ及
びアップデート−仮想プログラムカウンタは、命令N+
2、N+1、Nへポイントする。
【0004】より最近の高度化したプロセサは、レジス
タスコアボード(scoreboard)と呼ばれる別
の要素を有しており、それは要求された資源が実行すべ
き命令に対して使用可能であるか否かを判別するために
命令に対しての資源をチェックする。使用可能である場
合には、実行段階における命令が完了する前であっても
その命令が発行され、そのことは順番外実行を行なうこ
とを可能とする。レジスタスコアボードは、発行時間に
おいてその命令によって修正される資源を記録(ロッ
ク)する。それらの資源にアクセスすることを所望する
その後の命令は、該資源をアップデートすることにより
最初に該資源をロックした命令がその後に該資源をアン
ロックし且つそのことをプロセサへ知らせるまで、発行
することはできない。
【0005】これら公知のプロセサ構成は、典型的には
命令間の資源依存性に起因する命令の発行における何ら
かの停止が命令フェッチを停止させるという欠点を有し
ている。この様な停止は、実行用の発行される命令が少
ないので、性能低下となる。従って、従来のプロセサに
おける発行−仮想プログラムカウンタとフェッチプログ
ラムカウンタとの間の直接的な依存性は、ピーク性能を
達成することを阻止する。この様な性能低下は、複数個
の命令が同時的にフェッチされる場合にはより一層増大
される。従来のパイプライン型プロセサ構成において
は、全てのサイクルにおいてN個の命令をフェッチする
ことが可能であるようにN個のパイプラインを並列的に
設けることは、性能をN倍に増加することはない。なぜ
ならば、パイプラインのマトリクスにおける全ての要素
と命令との間には相互作用があり、従ってデータ依存性
の衝突を増加させているからである。
【0006】ある従来のプロセサ構成では、分岐予測を
有している。この様なシステムにおいては、プロセサが
命令を実行する場合に、分岐に到達され、実行の蓋然的
な方向に関して予測がなされる。次いで、プロセサはそ
の命令の分岐を実行し、一方それは第一分岐のバリデー
ション、即ち確認を待機する。第一分岐が確認される前
に第二分岐に到達すると、プロセサは命令のフェッチ動
作を停止し、従って性能を劣化させる。
【0007】
【発明が解決しようとする課題】解決しようとする問題
点は、命令間の資源依存性によって、命令のフェッチが
停止され、プロセサの性能が劣化する点である。
【0008】
【課題を解決するための手段】本発明の好適実施形態に
よれば、命令キュー(列)化メカニズムを形成するため
にダイナミックレジスタファイルを使用することによっ
て、命令フェッチ動作を命令実行から分離している。従
って、命令のフェッチ、発行及びアップデートのそれぞ
れの段階は、別個の且つ独立的に制御される段階とする
ことが可能である。命令フェッチ段階は、自走型のプロ
グラムカウンタによって制御される。フェッチ動作は、
資源が与えられないために(例えば、データ依存性)実
行用の命令を発行することが不可能な場合に、停止する
ことはない。フェッチ段階は、前にフェッチし且つ完了
していない命令を保持するための残存メモリがプロセサ
内に存在しない場合にのみフェッチ用命令を停止させる
に過ぎない。
【0009】命令フェッチャ(fetcher)は、
又、分岐命令を実行する。分岐命令は、命令の流れを変
化させる。停止することなしにフェッチャが分岐に関し
て動作する場合、それは、分岐が実行可能である場合に
は、即ち必要とされる資源(条件コード)がロックされ
ていない場合には、それは分岐を実行せねばならない。
分岐が実行可能でない場合には、命令フェッチャは操作
の方向を予測し且つその予測した方向において動作を継
続する。この様な予測に基づいてフェッチした命令は、
本明細書においては「瞑想的」命令と呼称する。
【0010】フェッチした命令は、次の段階としての命
令発行へ送られる。発行段階においては、命令は、要求
したオペランドが使用可能であるか否かを決定するため
にチェックされる。そのチェックの結果、何れのオペラ
ンドも使用可能でないことが判明した場合には、命令発
行は従来技術における如く停止されるが、その命令は
「棚上げ(shelved)」され、且つ別の命令、例
えば一つ前にフェッチされ且つ棚上げされたものがその
代わりに発行される。
【0011】発行された命令は順番において次のもので
ない場合があるので、発行され且つ実行された命令結果
は、直接的にレジスタファイル又はメモリ内に挿入され
ることはない。従って、これらの結果はプロセサの状態
を直ぐに変更することはない。なぜならば、命令は、そ
れらがフェッチされた順番に関して順番外で発行され且
つ完成される場合があるからであり、且つ更に重要な点
としては、該命令が、プログラム内におけるそれらの順
番と比較して順番外で完了される場合があるからであ
る。ラン、即ち稼動不可能な命令が棚上げされ且つ次の
稼動可能な命令が実行のために送られると、メモリの状
態を変更する結果を発生する順番はフェッチ動作の順番
(プログラムが画定した順番に対応)とは異なってい
る。
【0012】実行され且つダイナミックレジスタファイ
ル内に保存された命令結果は、それらの命令が最初にフ
ェッチされた順番でのみ、メモリ内に転送され、その際
にプロセサの状態を変更させる。従って、プロセサの状
態は、従来装置における如くに、即ち厳格な逐次的命令
順番でアップデートされ、従ってプロセサは、常に、従
来のプロセサにおける厳格な逐次的実行から発生するよ
うな状態にある。
【0013】本発明の好適実施形態においては、フェッ
チプログラムカウンタがフェッチすべき次の命令へポイ
ントし、発行−仮想プログラムカウンタは実行するため
に送られるべき次の命令へポイントし、且つアップデー
ト−仮想プログラムカウンタはその結果がプロセサの状
態をアップデートすることの次である命令へポイントす
る。命令フェッチプログラムカウンタは自走型であり、
フェッチされた命令が発行されるか否かに拘らず、プロ
セサ内にフェッチした命令を格納するための物理的な空
間が存在する限り、厳格なプログラムによって画定した
順番で連続して命令をフェッチする。発行−仮想プログ
ラムカウンタは、データフローメカニズム、即ち命令が
必要とする資源が何時使用可能となるかを決定するメカ
ニズムによって決定される如く、実行段階へ発行される
次の命令へポイントする。命令スケジューラ(sche
duler)は、発行−仮想プログラムカウンタを発生
するダイナミックレジスタファイルからのデータフロー
のストリームを制御する。アップデート−仮想プログラ
ムカウンタは、フェッチプログラムカウンタと同一の順
番で前進し、従ってプロセサの状態はプログラムにおい
て画定される順番で変更される。このことは、プロセサ
の厳格に逐次的なモデルを与え、従って従来のソフトウ
エアは修正することなしに動作させることが可能であ
る。本発明においては、3個のプログラムカウンタ、即
ちフェッチ、発行及びアップデートプログラムカウンタ
は互いにリンクされておらず、性能を最大とし且つソフ
トウエアに対して厳格に逐次的な命令の側面を維持する
ために、それらは互いに独立的に制御される。
【0014】フェッチプログラムカウンタが自走型で動
作するためには、フェッチ段階と発行段階との間に「バ
ッファ動作」が必要である。このことは、ダイナミック
レジスタファイルによって達成される。ダイナミックレ
ジスタファイルは、命令ストリームマッピング機能を達
成するバッファを与えている。命令は、それらがフエッ
チプログラムカウンタの制御下においてフェッチされる
と、先着順にダイナミックレジスタファイルの第一ポー
ト内に書込まれる。
【0015】ダイナミックレジスタファイルの出力端に
は二つの命令ストリームが存在する。一つの出力ストリ
ームはデータフローストリームであり、それは発行−仮
想プログラムカウンタによって制御されて、オペランド
が使用可能である場合に実行のために送られる命令を表
わしている。このストリームを実行した結果は、ダイナ
ミックレジスタファイル内へ書込まれる。ダイナミック
レジスタファイルの第二の出力ストリームは、先出し
(first−out)ストリームであり、それはプロ
セサレジスタファイル及びメモリの状態を厳格に逐次的
な順番で変化させることにより制御フローモデルを達成
する。この出力ストリームは、アップデート−仮想プロ
グラムカウンタによって制御される。「正気状態制御器
(sanestate controller)」と本
明細書において呼称する装置は、アップデート−仮想プ
ログラムカウンタを発生するダイナミックレジスタファ
イルの先出しストリームを制御する。従って、ダイナミ
ックレジスタファイルは、入力する命令の逐次的なスト
リームを実行用のデータフローストリーム及びプロセサ
の状態を変更させる実行結果の出力逐次的ストリームヘ
マップする。
【0016】従って、ダイナミックレジスタファイルの
三つのポート及びそれらの制御は、(1)命令−入力
(フェッチプログラムカウンタ)、(2)データフロー
入力/出力−命令スケジューラ(発行−仮想プログラム
カウンタ)及び(3)実行結果出力−正気状態制御器
(アップデート−仮想アップデートプログラムカウン
タ)である。この技術は、データフロー実行モデルの最
適な計算効率を達成しながら、ソフトウエアに対する従
来の制御フローモデルを与えている。
【0017】
【実施例】以下、添付の図面を参考に、本発明の具体的
実施の態様について詳細に説明する。
【0018】命令フェッチャ(Fetcher) 図1及び2のブロック図及び図3のフローチャートは、
本発明の一実施例に基づいて構成したプロセサのアーキ
テクチャの全体的構成を示している。命令フェッチャ9
(図2及び3参照)は、好適には、公知の命令キャッシ
ュメモリ(不図示)へ結合されており、且つ該キャッシ
ュメモリから命令8を受取る。フェッチャ9は「スロッ
トリング」機能及びその他の機能を実行する。例えば、
命令キャッシュから命令をフェッチすることが不可能な
場合に、フェッチャ9は命令キャッシュへ転送100す
るためにメイン命令メモリ(不図示)から命令を取込む
べく動作する。キャッシュ内に入ると、その命令はフェ
ッチされる102。フェッチャ9によって実行される
「スロットリング」機能のその他の例としては、送り出
すべき複数個のクロックサイクルを必要とする命令の管
理、及び例えば命令に対して割当てるべき識別コードが
与えられていないなどのような何らかの理由によりフェ
ッチすることが不可能な命令の管理103などがある。
【0019】図2に示した如く、フェッチャ9は、ダイ
ナミックレジスタファイル11にキャッシュからフェッ
チした命令を供給する。命令8がキャッシュからフェッ
チされると、該命令にはフェッチした順番でフェッチさ
れる各命令に対して厳格にシーケンシャルなID値を割
当てるカウンタ(不図示)によって、識別コード29即
ちIDが割当てられる105。これらの逐次的IDは、
「カラー」ビットを有しており、該ビットは最大桁ビッ
トであって且つ大きさ比較のために使用される。カラー
ビットを比較し且つ、必要な場合には、二つの命令ID
の大きさを比較することにより、前にフェッチした命令
を決定することが可能である。このことは、二つの命令
の間で「年齢」比較を与え、即ち、それは命令8が何時
メモリからフェッチされたかという相対的な順番を与え
る。
【0020】図2に示した如く、フェッチャ9は、分岐
を実行することが不可能な場合に停止することがないよ
うな態様で、フェッチャ9は分岐実行を管理する。分岐
を実行する場合、それは有効条件コードを持っていなけ
ればならない109。該条件コードは、その条件コード
を修正する命令によってセットされる。従って、条件コ
ードを修正する命令が送給される時に、フェッチャ9は
それに対してロックしたビットを与えることにより条件
コードレジスタを無効とする117。該フェッチャは、
その条件コードをロックした命令のIDを格納する。該
条件コードは、その命令が実行を終了し且つ条件コード
レジスタをアップデートし113、その際に該条件コー
ドをアンロックするまで115、ロックされた状態に止
どまる。
【0021】条件コードレジスタの内容は、それが、レ
ジスタファイル及びメモリのように、逐次的にアップデ
ートされた場合にプロセサの状態を反映することがない
場合に、本明細書においては「不正気(insan
e)」であると呼称する。条件コードがロックされてい
る場合117、その条件コードを修正する必要性を表わ
す命令が存在する。このことは、後続の分岐が決定を行
なうためにその条件コードを使用することを防止する。
従って、フェッチャは、この様な後続の分岐命令を、該
条件コードをロックした命令のIDと共に、分岐棚上げ
器13内に入れる112。そのロック用命令の結果のみ
が該分岐に対する有効な条件コードを与える。
【0022】分岐棚上げ器13において、分岐命令は、
該条件コードが使用可能となるまで待機し、即ち該分岐
命令は、該条件コードをロックした命令が実行を完了し
且つ該条件コードをアップデートするまで待機する。分
岐が棚上げされると、フェッチャ9は、その位置から命
令ストリームが進行すべき方向即ちプログラムの継続し
た実行に対する最も蓋然性の高い方向について、予測ビ
ットに基づいて決定を行なう110。フェッチャ9は、
予測した経路に沿って「瞑想に基づいて」命令のフェッ
チを継続する。棚上げした分岐命令が待っていた条件コ
ードが有効となると、分岐決定は再評価され且つ最初の
決定と比較される115。その比較が、該分岐が正確に
実行されたことを表わす場合には、それは棚から除去さ
れる122。該決定が比較の結果異なる場合118、予
測決定が間違っており且つプロセサは別の予測されてい
ない分岐に沿って進行せねばならない。従って、プログ
ラムは、別の方向において分岐命令から実行を再開せね
ばならない。
【0023】間違って予測した分岐決定118に続いて
プロセサが方向を変化させるためには、プロセサは任意
の点において再開始可能なものでなければならない。例
えば、プロセサにおいてN個の命令が許容されており且
つフェッチされたが実行されていない命令が存在するも
のと仮定する。プロセサは、ダイナミックレジスタファ
イル内に存在する任意の命令、即ちいまだメモリの状態
をアップデートしていない何れかの命令で再開始可能な
ものでなければならない。再開始(restartin
g)と呼ばれるその機能は、プログラムカウンタファイ
ルの助けを借りて達成され、尚、本明細書においてはそ
のプログラムカウンタファイルは「正気」プログラムカ
ウンタファイル15と呼称され、それらのIDによって
インデックスされるダイナミックレジスタファイル11
内の命令のアドレスを有するNエントリのレジスタファ
イルである。プロセサが分岐命令を再フェッチすること
により再開始することを必要とする場合、該分岐のID
を使用して正気プログラムカウンタファイル15内にイ
ンデックスし且つそのプログラムカウンタを得る11
9。そのプログラムカウンタは、その点からプロセサを
再開始するために使用される。
【0024】分岐が誤って予測された場合118、命令
の幾つかが実行ストリーム内に入れられ、且つダイナミ
ックレジスタファイル11内に存在するがいまだにレジ
スタファイル17をアップデートしていない結果を発生
する場合がある。それらは、瞑想的なものであるから、
正気状態制御器19によって完了状態に到達することは
許可されていない。分岐が誤って予測されたものと決定
されると、フラッシュメカニズムがダイナミックレジス
タファイル11から、その誤った予測に依存して実行し
た全ての命令及びそれらの結果をフラッシュ、即ち流出
させる119。このフラッシュ動作は、図16に関して
説明する。
【0025】正気状態制御器19は、分岐棚上げ器13
から棚上げした分岐命令のID、又は複数個の棚上げし
た分岐の場合には、全ての棚上げされた分岐の最も古い
もののID(それらがフェッチされた順番によって決定
される)を受取る。正気状態制御器19は、最も古い棚
上げした分岐のIDよりもより最近のIDを有する命令
がプロセサの状態をアップデートすることを許容するも
のではなく、従ってその点において命令の完成を停止す
る。このことは、瞑想的結果がプロセサの状態を変更す
ることを許可することがないことによって、プロセサが
その正気状態を維持することを可能とする。
【0026】プロセサは、それがトラップ条件又は外部
インタラプトに遭遇した後に、再開始することが可能で
ある。プロセサは、トラップ論理21を有しており、そ
れは、トラップ条件に遭遇する点においてプロセサの状
態を与える。トラップ用命令のIDは、正気プログラム
カウンタファイル15からプログラムカウンタを得るた
めに使用される。トラップ用命令がダイナミックレジス
タファイルにおいて最も古いものとなるまで、即ち、全
ての以前にフェッチした命令がプロセサのステータスを
アップデートするまで、トラップは応答されることがな
い。次いで、全てのその他の命令がダイナミックレジス
タファイルからフラッシュされる。
【0027】インタラプトの場合、プロセサのステータ
スを次にアップデートする最も古い命令のIDを使用し
てプログラムカウンタを得る。より最近の命令はフラッ
シュされる。
【0028】フェッチャ9の別の関数は直列化である。
幾つかの命令は、それらの前の全ての命令が実行されな
い限りプロセサの状態を修正することは不可能である
(本明細書においては、「直列化プロセス」と呼称す
る)。この様な命令に遭遇すると、フェッチャ9はフェ
ッチ動作を停止し、且つ全ての以前にフェッチした命令
がそれらの実行を完了するまで待機する。いまだ実行さ
れていないフェッチした命令がプロセサ内に残っていな
い場合には、フェッチャはその命令を実行させる。直列
化を必要とする命令がプロセサの状態の修正を完了する
と、フェッチ動作が再開される。
【0029】ダイナミックレジスタファイル ダイナミックレジスタファイル11は、プロセサ内にお
いて係属中の全ての非分岐命令を保持する。ダイナミッ
クレジスタファイル11内への全てのエントリは、命令
に対する位置ホルダである。図2に示した如く、ダイナ
ミックレジスタファイル11は命令の実行結果31を有
しており、且つロッカID1 23及びロッカID2
25、どの命令を実行すべきかを表わす命令フィールド
27、及び命令のタグであるIDフィールド29を有し
ている。二つのロッカ23,25は、命令は典型的に実
行すべき二つのオペランドを必要とするので設けられて
いる。従って、一つのロッカが、命令の実行のために必
要とされる各可能なオペランドに対して設けられてい
る。
【0030】ダイナミックレジスタファイル11は、命
令スケジュール器33及びメモリスケジュール器35に
よって制御される。これら二つのスケジュール器33,
35は、資源チェック動作及びデータフロースケジュー
ル動作を実行して、ダイナミックレジスタファイル11
からデータフローストリームを形成する。資源チェック
動作は、ダイナミックレジスタファイル11内における
命令によって必要とされるオペランドが与えられている
か否か、且つ与えられている場合には、どこにそれらを
位置させるかを決定する。それらが与えられている場合
には、該オペランドはダイナミックレジスタファイル1
1内又はレジスタファイル17内に位置させることが可
能である。必要とされるオペランドは、それが前に実行
されたが完了していない命令から発生したものである場
合には、ダイナミックレジスタファイル内に存在する。
そのオペランドを発生した命令が早く完了することを許
容され且つその結果をレジスタファイル17ヘ転送した
場合には、必要とされるオペランドはレジスタファイル
17内に存在する。最悪の場合には、必要とされるオペ
ランドを形成する結果が発生されておらず、オペランド
がロックされているので、オペランドは与えられていな
い。命令によって必要とされるオペランドを形成する結
果をどの命令が形成するかということをID29によっ
て識別するために二つのロッカフィールド23,25が
使用される。
【0031】命令が実行される場合、その実行結果はダ
イナミックレジスタファイル11内の結果フィールド3
1内に書込まれる。次いで、ダイナミックレジスタファ
イル11内の結果31は、実行のためのより最近フェッ
チされた命令によって使用することが可能である。該命
令が最も古いということによってダイナミックレジスタ
ファイル11の出力端35に到達すると、それらは正気
状態制御器19の制御下においてレジスタファイル17
内に書込まれる。
【0032】従って、ダイナミックレジスタファイル1
1は、各非分岐命令に対しての命令配置ホルダとして作
用する。命令はプロセサの命令フェッチャ9からダイナ
ミックレジスタファイル11へエンタし、且つ該命令は
最も古いものとなり且つレジスタファイル17をアップ
デートする準備がなされるまで、ダイナミックレジスタ
ファイル11内に止どまる。トラップ条件のない最も古
い命令は、レジスタファイル17へ又はメモリへ書込む
ことが可能である。
【0033】ダイナミックレジスタファイル11内の結
果31は、レジスタアドレス(RZ)41を有してお
り、それは命令がレジスタファイル17をアップデート
する場合に、結果を書込むべきレジスタを指定する。メ
モリ格納命令の場合、RZは、メモリへ書込むべきソー
スデータに対しレジスタファイル17をアドレスするた
めに使用される。
【0034】ダイナミックレジスタファイル11は、更
に、レジスタスコアボード機能を実行する。従来のレジ
スタスコアボード方法においては、各レジスタ番号と関
連する単一の有効ビットが存在している。レジスタへ書
込みを行なう命令がフェッチされる場合、そのレジスタ
に対する有効ビットは無効にセットされる。フェッチし
た命令の実行はそのレジスタをアップデートし、且つ該
有効ビットは再度有効にリセットされる。
【0035】対照的に、本発明においては、ダイナミッ
クレジスタファイル11が、命令がダイナミックレジス
タファイル11内に配置される時に、オぺランドを他の
全てのエントリのレジスタアドレスフィールド41に対
してチェックすることによってレジスタスコアボード機
能を与える。命令がダイナミックレジスタファイル11
内に配置される場合、そのレジスタアドレス41は、そ
の結果が実際に与えられる、即ち使用可能とされるま
で、ロックされているものと考えられる。
【0036】このプロセスを図7に示してある。図示し
た如く、命令がフェッチャ9からダイナミックレジスタ
ファイル11内へ書込まれると701、オペランドレジ
スタ番号が全てのより古い命令のレジスタアドレスフィ
ールドと比較される702。何れかのマッチが見付かる
と、この様なマッチ用命令の最も若いものの結果フィー
ルドが検査される。このマッチ用命令の実行結果がダイ
ナミックレジスタファイル11内において与えられてい
ない場合704、その命令は稼動可能なものではない。
マッチが発生し且つ最も若いマッチ用命令の結果フィー
ルドが与えられている場合には、該命令は、対応するダ
イナミックレジスタファイル結果フィールド705から
得られる所要のオペランドと共に、実行のために送るこ
とが可能である。マッチが発生しない場合、該命令は、
ダイナミックレジスタファイル11ではなくレジスタフ
ァイル17から得られるオペランドと共に実行のために
送給することが可能である706。従って、そのオぺラ
ンドが予想しなかった一層古い命令によって影響を受け
るか又は修正される場合には、命令は棚上げされたもの
と考えられ且つ実行のために送られることはない。
【0037】命令スケジュール器33は、存在する場合
に、どの命令をラン、即ち稼動すべきかを決定する論理
を有している。命令を実行すべきか否かを決定するため
に命令スケジユール器によって検査される命令に関する
情報の中で、ロッカ情報及び命令IDがある。この情報
から、命令スケジュール器33は稼動するのに最も準備
のされている命令を採取する。ロッカ有効ビットは、命
令を実行するのに必要なオペランドの全てが現在ダイナ
ミックレジスタファイル11内か又はレジスタファイル
17内に存在することを、命令スケジュール器33へ表
示する。オペランドのレディビットがセットされると、
その命令は実行可能なものと考えられる。命令スケジュ
ール器が、十分な実行資源が与えられている最も古い稼
動可能な命令を採取する。
【0038】ダイナミックレジスタファイル11は、命
令フェッチ段階と実行発行段階との間にキュー、即ち列
を与えるので、それは、フェッチャ9到着率と実行サー
ビス率との間における一時的な不均衡を平滑化する。到
着率が一時的にサービス率を超える場合、該キューは成
長する。フェッチャ率乃至は速度に基づいてキュー寸法
に関する制限を維持するために、実行帯域幅(即ち、ダ
イナミックレジスタファイル11からの命令を受取るこ
とが可能な並列実行ストリームの数)はフェッチャの帯
域幅よりも一層高い。
【0039】任意の時間に命令がフェッチされ且つ棚上
げされ且つダイナミックレジスタファイルが実行のため
の準備がなされている命令を有することがない場合に、
そのサイクルにおいて実行に入る命令は存在しないの
で、付加的な実行帯域幅も重要である。その命令が爾後
に実行可能なものとなると、ただ一つの実行ユニットし
かない場合には、実行サイクルは必要的にその命令に対
して割当てられ、且つ新たにフェッチした命令は棚上げ
されねばならず、その際に性能を劣化させる。しかしな
がら、本発明においては、棚上げされた命令が実行のた
めに提供される時に、それはマルチプレクサ53及び5
5を介して付加的な実行ユニット47ヘ供給し、一方第
一実行ユニット45は、マルチプレクサ49及び51を
介して、新たに到着する命令を実行することが可能であ
る。このことは、新たにフェッチした命令と、ダイナミ
ックレジスタファイル11から実行のために送られた古
い命令と共に並列的に実行を行なうことを可能とする。
勿論、必要な場合には、2個を超えた実行ユニットを使
用することが可能である。
【0040】図2に示したメモリスケジュール器35
は、図5に示したプロセスを使用して、メモリロード命
令をスケジュールする。メモリロード動作の第一ステッ
プは、メモリアドレスの発生である。そのアドレスは、
ダイナミックレジスタファイル11の結果フィールド3
1内に配置され、且つドメインチェック59を介してダ
イナミックレジスタファイル11内に存在する場合のあ
るより古い格納命令のメモリアドレスと比較される50
1。その比較結果は、ロード動作が「安全(saf
e)」515,517,「非安全(unsafe)」5
18又は「不正確(imprecise)」521であ
るか否かを表わす。「安全」ということは、メモリアド
レスがロード動作のメモリアドレスとマッチするダイナ
ミックレジスタファイル11内におけるメモリに対する
より古い格納は存在せず且つアドレスがいまだ知られて
いないメモリに対するより古い格納が存在しないことを
意味している。「非安全」ということは、アドレスが知
られており且つロード動作のメモリアドレスとマッチす
るメモリに対するより古い格納がダイナミックレジスタ
ファイル11内に存在することを意味している。「不正
確」ということは、アドレスがダイナミックレジスタフ
ァイル11の結果フィールド31内にいまだに配置され
ていない一つ又はそれ以上のより古い格納が存在するこ
とを意味している。「安全」の場合においてのみ、ロー
ドをメモリへ送ることが可能である。メモリロードが非
安全である場合、該ロードは、マッチするアドレスを有
する全てのより古い格納命令が送られるまで、メモリへ
送ることはできない。不正確なロード命令は、全てのよ
り古い格納命令に対するアドレスが計算されるまで待機
せねばならず、その時点において、それは安全又は非安
全の何れかとなる。従って、ドメインチェッカ59は、
基本的に、ロック用チェックがレジスタロードに対して
行なうのと同一の機能をメモリロードに対して実施す
る。
【0041】ロードがメモリヘ送られ、且つメモリがデ
ータ61をリターンすると、そのデータはそのロード命
令に対し結果フィールド31内に書込まれる。該命令が
最も古いものとなると、それはレジスタファイル17を
アップデートすることを許容される。
【0042】メモリ格納の場合、格納アドレスを計算し
た結果はダイナミックレジスタファイル11の結果フィ
ールド31内に配置される。メモリ格納命令が最も古い
ものであると、アドレス57及び格納データ63はメモ
リヘ送られる。格納データ63は、ダイナミックレジス
タファイル11のレジスタアドレスフィールド41でア
ドレスされるレジスタファイル17から読取られる。格
納データ63はレジスタファイル17内に存在するもの
であることが知られている。なぜならば、格納命令がメ
モリへ送られる場合、全ての前の命令は実行を完了し且
つレジスタファイル17へ転送されているからである。
【0043】従って、ドメインチェッカ及びロードスケ
ジュール器は、それらの結果がより新しい命令によって
必要とされる場合に可及的に速やかにメモリヘロードを
送ることを可能とする。メモリ格納部は順番に送られ、
従ってメモリは常に正気状態にある。ダイナミックレジ
スタファイル11及びレジスタファイル17、及びダイ
ナミックレジスタファイル11及びシステムメモリは、
システムメモリ及びレジスタファイル17が常に正気状
態にあるという点において同一の相対的関係を有してい
る。ダイナミックレジスタファイル11は、新たな命令
に対するオペランドとしての潜在的な使用のために隣接
する命令の「キャッシュ動作」結果の効果と共に、より
新しい命令によって使用することが可能な将来の結果を
有している。
【0044】レジスタファイル17をアップデートする
プロセスを図8に要約してある。レジスタファイル17
のアップデートは、命令が最も古いものである場合に発
生する。その最も古い結果を検査して、それらがレジス
タファイル17をアップデートする準備がなされている
か否かを決定する801。トラップ論理21によって表
示されるトラップ条件が存在しない場合802、正気状
態制御器19の制御下において、レジスタアドレス41
をアドレスとして使用し、且つ結果フィールド31をデ
ータとして使用して、該結果はレジスタファイル17内
に書込まれる。命令が最も古いものとなり且つトラップ
条件を有する場合803、それは、レジスタファイル1
7又はメモリをアップデートすることから防止される。
トラップ条件フラッグ65(図2参照)は、トラップを
取扱うためにトラップ論理21に信号を送る。この様
に、トラップは厳密に逐次的な順序で解消される。実行
から来た命令がトラップ条件を発生すると、その命令
は、厳密な逐次的順序にあったか又はなかったかであ
り、従ってその結果はトラップ条件と共に、ダイナミッ
クレジスタファイル11内に配置される。プロセサは、
トラップで動作することはない。なぜならば、その命令
は逐次的にほとんど完了していない場合があるからであ
る。従って、ダイナミックレジスタファイル11内にお
いて命令が最も古いものとなり且つレジスタファイル1
7内へ転送されるのを待機している間に、別の命令トラ
ップ(それは、待機中の命令よりも古いものである場合
がある)が発生すると、この他のトラップは最初のもの
に対して応答され、その際にトラップが逐次的な順序で
サービスされることを確保する。
【0045】正気状態制御器19は、命令の順番と一貫
する順番でレジスタファイル17及びメモリのアップデ
ートを維持する。正気状態制御器19は、フェッチした
命令のスコアボード及びそれらの「引退」、即ちメモリ
のレジスタをアップデートすることの準備状態を維持す
る。命令が引退する準備がなされていると、正気状態制
御器19は、図2に示した如く、レディフラッグによっ
て信号が送られる。正気状態制御器は、それが引退すべ
き準備がなされており且つダイナミックレジスタファイ
ル内の全てのその他の命令も引退しており、且つこれら
の命令の何れもがトラップ条件を有するものではない場
合に、命令を引退させる。レジスタファイル17内への
アップデートポートの数は、サイクル当りにフェッチさ
れる命令の数よりも大きい。なぜならば、ダイナミック
レジスタファイル11のキュー効果のためである。
【0046】ダイナミックレジスタファイル11は、
又、全ての命令と関連する結果フィールド31を使用す
ることによって、ダイナミックレジスタファイルの再割
当て(「レジスタ再名称化」としても知られている)を
与える。その結果フィールド31は、その命令に対する
宛て先レジスタのアドレスを有するレジスタアドレスフ
ィールド41と関連している。従って、命令がレジスタ
RAへ書込みを行なうと、その命令は、レジスタRA上
にロックを配置し、且つダイナミックレジスタファイル
11内に書込まれる。次の命令もレジスタRAへの書込
みを行なう場合、従来のシステムにおいては、その命令
は第一の命令が完了するまで完了をすることは不可能で
ある。本発明においては、2番目の命令は宛て先RA
(同一のレジスタ)であるが結果に対する異なった配置
ホルダを有するダイナミックレジスタファイル内の別の
位置をとる。第一の命令は、RAに対するデータを第一
配置ホルダ内に書込み、且つ第二の命令はRAデータを
第二配置ホルダ内に配置する。その結果は、同一のレジ
スタの複数個の物理的な例示化である。複数個の例示化
は、ダイナミックレジスタファイル11内の複数個のエ
ントリに起因して可能である。再名称化、即ち不明確さ
の除去は、各配置ホルダが独特の命令IDを有するとい
う事実によって達成される。同一レジスタ名称RZは、
ダイナミックレジスタファイル11内の複数個のエント
リ内に位置される複数個のIDと関連させることが可能
である。
【0047】レジスタファイル17及びメモリは、プロ
セサの状態を表わすシステムの唯一の要素である。プロ
セサ内のデータの残部は、例えばダイナミックレジスタ
ファイル11及び分岐棚上げ器13の内容は、その一時
的な性質のために、プロセサの状態を表わすものではな
い。不正確な分岐予測が検知されると、分岐棚上げ器1
3から派生されるフラッシュ入力69が、ダイナミック
レジスタファイル11へ印加されて、不正確な予測のI
Dよりも新しい全てのエントリを除去することが可能で
ある。従って、誤った予測の後にフェッチされた全ての
命令及び発生された結果は、迅速に(1サイクルで)ダ
イナミックレジスタファイル11からフラッシュさせる
ことが可能である。この作用は、プロセサを、その誤っ
た分岐予測を発生した状態に復帰させ、正しい分岐方向
に沿って命令のフェッチ動作を再開すべく動作させるこ
とを可能とする。
【0048】ダイナミックレジスタファイル11内のエ
ントリは、可能な実行に対して考慮されるべき多数の命
令を供給し、稼動可能な命令に対し広範なサーチを可能
とする。複数個の分岐の分岐予測は、これらの複数個の
分岐の中に実行可能な命令を見付け出す可能性のため
に、その数を更に増加させる。このことは、プロセサが
分岐と共に命令を継続して実行することを可能とし、よ
り多くの数の命令に対するアクセスを与え、プロセサの
処理能力を増大させる。
【0049】条件コードは、結果を計算し且つ条件コー
ドを設定する命令によって変更される。実際に条件コー
ドを計算する命令は、何らかのその他の結果を計算する
その他の命令に依存することも可能である。命令のスト
リームにおいて、典型的に、その命令のうちの二三のも
のが条件コードに関して直接的な影響を有するものに過
ぎず、従って、これらの命令を、残りの命令よりも高い
優先度でスケジュールすることが望ましく、従って瞑想
的な処理に対する必要性を減少することが可能である。
プロセサの性能は、又、条件コードをより早く計算する
ことによって改善することが可能であり、そのことは、
命令スケジュール器35が優先度を有するこれらの命令
を発行するようにすることにより達成することが可能で
ある。本発明システムの1具体例においては、ダイナミ
ックレジスタファイル11内の命令スケジュール器33
に対してどの命令を最初にピックアップするかを表示す
る優先度ビットが全ての命令27と共に格納されてい
る。
【0050】図9a及び図9bは、ダイナミックレジス
タファイル11の構成のより詳細な概略図を与えてい
る。ダイナミックレジスタファイル11は、次のデータ
フィールドに関して動作する。即ち、ID29、命令2
7、ロッカ1 23、ロッカ225、RZ41及び結果
31である。図10に示した如く、命令は、二つのソー
スレジスタ(RX及びRY)73,75、宛て先レジス
タ(RZ)41、操作(OP−Codeフィールド)7
9及びID29に対するフォーマットに分割される。ロ
ッカフィールド(LOCKER1及びLOCKER2)
23,25は、RX及びRYによってポイントされるオ
ペランドとして必要とされる結果を発生せねばならない
命令のIDを保持するために使用される。フィールドR
Z,RX,RYは、発行した命令から派生され、且つそ
の元の命令の一部である。
【0051】命令がダイナミックレジスタファイル11
内にエンタする場合、RX及びRYレジスタアドレス7
3,75が供給され131、RZアドレスCAF41を
サーチし、より若い命令がこれらのレジスタに書込むこ
とがないことを確保する。マッチが見付からない場合、
該レジスタは、アンロックされているものと考えられ、
且つそのオペランドはレジスタファイル17から読み出
される。RX73又はRY75の何れかがいまだに実行
を完了していない(即ち、「Result Not V
alid(結果未確認)」)命令のRZ41におけるエ
ントリとマッチする場合127、そのレジスタはロック
されているものと考えられ且つその命令は稼動すること
は不可能である。
【0052】一つ又はそれ以上のマッチが見付かると、
各マッチに対して、結果フィールド31が読取られて、
結果レジスタ31における有効ビットによって示される
如く、それが有効データを有するか否かを決定する。マ
ッチが見付かり且つその結果フィールド(そのマッチが
見付かった箇所)が有効データを有する場合、結果フィ
ールド31は、レジスタファイル17の代わりのオペラ
ンドとして読取られる。同時に、ID CAF29が読
取られる。結果フィールド31が有効データを有するこ
とがない場合、ID CAF103から読取られる値
は、そのレジスタへ書込みを行なう命令(即ちロック用
命令ID)の最も若いIDを有する。このロック用ID
はロッカ(LOCKER)フィールド23,25へ書込
まれる。これら二つのロッカフィールド(LOCKER
1 23及びLOCKER2 25)は、それぞれ、レ
ジスタアドレスポインタRX73及びRY75に対応し
ている。従って、そのオペランドの一つ又は両方がより
古い命令によって発生されていないので現在の命令を稼
動することが不可能な場合、その命令は稼動することが
ないが、これらの古い命令(それは、現在の命令が実行
状態となるために結果を発生せねばならない)のID
は、前述した如く、LOCKER1 23及びLOCK
ER2 25内に格納される。
【0053】命令がロックされると、そのレジスタをロ
ックした命令のIDが、そのレジスタに対するロッカI
Dとして、ロッカフィールド23,25へ供給される。
LOCKER CAF23,25におけるサーチポート
85は、ダイナミックレジスタファイル11内の命令を
アンロックするIDに対してアップデートバスを感知す
る(図2における151及び図9bにおける85)。命
令スケジユール器33は、もはやロックされておらず且
つ実行のためにそれらをスケジュールする命令を感知す
る。命令の実行結果は、アップデートバス上に配置され
る(図2における151及び図9aにおける106,1
08)。発行ID CAF29は、サーチされ91、そ
の結果をダイナミックレジスタファイル11内のどこに
配置すべきかを判別する。
【0054】発行ID内容アドレス可能先入れ先出しメ
モリCAF29は、命令が発行される場合に、命令のI
Dを保持するために使用される。発行ID CAFは、
どこにデータを書込むべきか及びどこからそれを読出す
べきかというダイナミックレジスタファイル11の結果
フィールド31におけるエントリ位置を見付けるために
使用される。命令のIDを書込むための先入れ書込みポ
ートが存在しており、且つ発行ID CAF内への6個
のサーチポート91,93が存在している。これらポー
ト91の二つは、ALU45,47からアップデートバ
ス106,108上を戻ってくるデータを、アップデー
トしたデータが書込まれるべき場所に配置すべきことを
可能とする。他の四つのポート93は、ダイナミックレ
ジスタファイル11内のオペランドの位置を判別するた
めに使用される。更に、レジスタをロックする命令のI
Dを読出すことを可能とする二つの読取りポート95が
存在している。発行された命令のIDを発行ID CA
F内に書込む二つの書込みポート141が存在してい
る。それは、プロセサ内に命令の順番を維持する発行I
D CAF29である。
【0055】発行ID CAF29に対する6個のサー
チポート入力91,93は、それが結果フィールド31
内にある場合に、そのIDによってデータを見付け出す
手段を与えている。これらのポート91の二つは、結果
フィールド31内のデータを格納すべき箇所を見付け出
すためにアップデートバス151によって使用される。
これらポートのマッチ出力は、結果フィールド31内へ
の書込みイネーブル97となる。他の四つのポート93
は、結果フィールド31内において命令又はアドレス計
算を実行するために必要とされるデータが位置されてい
る場所を捜し出すために命令スケジュール器33によっ
て供給される。これらのポートのマッチ出力は、結果フ
ィールド31内ヘの読取りイネーブル99として供給さ
れる。これら二つの読取りポート95は、発行された命
令のRX73及びRY75によって使用されるレジスタ
をロックした命令の最も若いIDを読出すために使用さ
れる。更に、発行ID CAF29がFIFOの底部か
らの一つ、二つ又は三つのエントリの何れかをポップオ
フ即ち除去することを支持する正気状態制御器19から
の制御ビットが存在している。ID CAF内の位置当
りに1個の年齢出力101が存在している。年齢比較器
153は、分岐エラーを補正する場合に、より若いID
をフラッシュするために使用される。更に、レジスタを
現在の発行した命令にロックした命令の最も若いIDの
読出しを供給する発行IDCAF29内に二つの読取り
ポート出力103が存在している。IDフィールド29
内の各ID位置は、有効ビット(1)、カラービット
(1)、ID(6)として指定される8個のビットを有
している。
【0056】結果フィールド31は、終了した実行を有
するか又は有することのない命令に対する結果スロット
を維持する。これらの結果スロットは、メモリ操作に対
する任意の与えられたレジスタ又はアドレスの複数個の
コピーを表わしている。データが結果フィールド31内
において有効である場合、それはそれらの実行のために
その他の命令によって使用することが可能であり、又
は、そのデータが有効でない場合には、そのレジスタは
ロックされているものと考えられ、且つそれに依存する
何れの命令も棚上げされねばならない。結果フィールド
31内のデータは、レジスタファイル17をアップデー
トするため、又はその命令が最も古いものとなる場合に
格納操作でメモリをアップデートするために使用され
る。結果フィールド31は、二つのアップデートバス1
51へ接続されている書込みポート1O6,108を有
しており、且つID CAFからのマッチが検知される
場合、アップデートバス151上のデータは結果フィー
ルド31内に書込まれる。
【0057】結果フィールド31に対して四つの読取り
ポート121が存在している。これらのポートのうちの
二つは、ALU45に対するオペランドを得るために命
令スケジュール器33によって使用され(該オペランド
がRF内に存在しない場合)、且つ該ポートのうちの二
つは実行のためにオペランドをALU47へ供給する場
合に使用される。発行された命令は、マッチのためにR
ZアドレスCAF41をサーチする。マッチが検知され
ると、該論理は、結果フィールド31内に有効データが
存在するか否かを決定する。有効データが存在する場
合、該レジスタはアンロックされ、且つダイナミックレ
ジスタファイル11から読出すことが可能である。結果
フィールド内に有効データが存在しない場合、該レジス
タはロックされ且つロッカID103はID CAF2
9によって供給される。発行された命令がロックされる
と、命令スケジュール器33はALU45,47へ進行
する命令に対して二つ又は四つの読取りポート121を
使用する。それは、ID(それは、ID CAF29を
サーチする)を供給し、結果フィールド31内の位置へ
ポイントし、且つ計算のために必要とされるオペランド
を供給する。
【0058】結果フィールド31に関して三つのFIF
O出力114が存在している。これは、最大で3個まで
の最も古い命令が一度に結果フィールドをアップデート
することを可能とする。結果フィールド31に関して四
つのランダム読取りデータフロー出力ポート145,1
47が存在している。これらは、それらが有効であり且
つ実行のために送給された場合、ダイナミックレジスタ
ファイル11からオペランドを引出すことを可能とす
る。結果フィールド31における底部の3個のエントリ
から有効ビットが持ち出され且つ正気状態制御器19へ
供給され、該制御器は、データの準備がなされている場
合に、適宜の信号を発生することによりレジスタファイ
ル17に対して応答する。
【0059】RZアドレスCAF41は、アップデート
されるべきレジスタのアドレスを保持し、且つレジスタ
がロックされるべきか否かを決定するための発行ID
CAF29と類似して構成されている。発行時における
RZアドレスCAF41に供給されるアドレスがRZ
CAF内側の何れかのエントリとマッチする場合、この
ことは、現在の命令がそれを使用可能となる前に、古い
一つ又はそれ以上の命令がそのレジスタに書込まれねば
ならないことを意味している。この時点において、その
データはダイナミックレジスタファイル11内に存在す
る場合もあれば存在しない場合もある。それがダイナミ
ックレジスタファイル11内に存在しない場合には、そ
の命令は、ロックされたものとしてマークが付けられ
る。RZアドレスCAF41内においてマッチが見付か
らなかった場合には、このことは、そのレジスタがアン
ロックされており且つ正しいデータ値がレジスタファイ
ル17内に存在することを意味する。
【0060】二つの書込みポート123が存在してお
り、且つレジスタがロックされているか否かを決定する
ために使用されるRZアドレスCAF41に関して二つ
のサーチポート131が存在している。更に、レジスタ
ファイル17をアップデートするための準備がなされて
いるプロセサにおける最も古い未決の命令を表わすRZ
アドレスCAF41に関する3個のFIFO出力125
が存在している。一つ、二つ又は三つのアドレスの何れ
かを一度に除去することが可能であるが、年齢が若くな
る順番において最も古い命令が最初に行かねばならな
い。更に、ロックされた可能性を表わすためにRZ C
AF41においてエントリ毎に二つの出力127が存在
している。これらのロックビットは、レジスタがロック
されていることを必ずしも意味するものではない。従っ
て、そのデータが結果フィールド31内において見付け
られ且つ有効なものである場合には、そのレジスタはア
ンロックされる。このロックされたかもしれないビット
127は、サーチポート入力端131に接続されている
比較器129のマッチ出力である。
【0061】ダイナミックレジスタファイル11は実行
する準備がなされていない命令に対してキュー形成用構
成体として作用するので、命令が稼動可能なものとなる
と、データフローチェック論理43が、その命令を稼動
するために資源が使用可能であるか否かを決定するため
にチェックする。全ての資源が使用可能である場合、そ
の命令は実行される。命令フィールド27は、その命令
及びその命令が実行のために必要とするそれと関連する
デコードビットの全てを格納する。命令が実行のための
準備がなされている場合、これらのビットは実行パイプ
ライン内に配置され、従って該命令は再度デコードする
ことは必要ではない。
【0062】ダイナミックレジスタファイル11内のロ
ッカCAFレジスタ23,25は、CAF内へのエント
リ時に該命令によって必要とされるレジスタをロックす
る命令のIDを保持している。命令の各RX及びRYソ
ースレジスタ73,75に対して一つのロッカCAFが
存在している。CAFのサーチポート85は、アップデ
ートバスをモニタし且つ完了すべき命令を感知する。値
がアップデートバス上に復帰されると、ロッカCAF2
3,25はアップデートバス151上のデータのIDを
この様なロッカCAF内に格納されているIDと比較す
る。マッチが発生すると、そのレジスタはもはやロック
されない。両方のロッカがマッチを見付け出すと、該命
令は、ALU45,47が使用可能である限り、稼動の
ための準備完了状態となる。該マッチが検知された後
に、そのレジスタの正しい値は、レジスタファイル17
内か、又はダイナミックレジスタファイル11内の何れ
かに存在する。アップデートバス上の命令が三つの最も
古い命令のうちの一つであった場合には、それはレジス
タファイル17をアップデートしている。同時にオペラ
ンドが使用可能であり且つ正しい資源がその命令を稼動
するために使用可能であると、その命令は実行のために
直接的に送給することが可能である。
【0063】命令が棚上げされると707、ロックされ
た各オペランドに対して、そのレジスタをロックしたよ
り古い命令の最も若いもののIDがダイナミックレジス
タファイル11のロッカフィールド23,25内に書込
まれる。ロッカフィールド23,25は、その命令がそ
の要求したオペランドを得るために実行することを待機
せねばならない命令のIDを有している。これらのより
古い命令の一つが実行されると、それはロックされ棚上
げされた命令に対して必要とされる結果601(図6参
照)を発生する。このことが両方のロッカ23,25に
対して発生すると、その命令は実行に対して準備完了と
なる401(図4参照)。
【0064】データフローチェック論理43(図2参
照)は、結果フィールド31内に結果を書込む命令のI
Dと全ての棚上げした命令のロッカIDとを比較する。
ロッカIDがアップデートするIDとマッチする場合、
これらのロッカは除去される602。命令の両方のロッ
カが除去されると、その命令は実行の準備完了状態とな
る401。命令の棚上げ状態からの取出し及びそれの実
行への送出しを同時的に行なうことを可能とし、新たな
命令がロックされておらず且つ実行へ進行することが可
能なダイナミックレジスタファイル11内にエンタする
ことを可能とするために、例えば演算論理ユニット(A
LU)45,47及び関連するマルチプレクサ49,5
1,53,55などのような複数個の実行ユニットが設
けられている。
【0065】ダイナミックレジスタファイル11は、更
に、図2において39として示し且つ図9aにおいてF
IFO OUTPUTポート114,125として示し
た如く、先出し出力ポートを有している。結果は、FI
FO−OUTPUT114,125(集約的に、ダイナ
ミックレジスタファイル11の先出しポート39とす
る)からレジスタファイル17内へ移動される。ダイナ
ミックレジスタファイル11はデータフロー入力ポート
(図2における151及び図9a及び図9bにおける1
06,108,91,85)及びデータフロー出力ポー
ト(図9a及び図9bにおける145,147,14
9)を有している。データフロー出力ポート145,1
47,149は、図4及び図6に示した如く、データフ
ロー態様で実行するために命令及びそれらのオペランド
を発行するために使用され、且つポート151,10
6,108,91,85におけるデータフローはこれら
の命令の結果をダイナミックレジスタファイル11内に
書き戻すために使用される。データフローポートを使用
する結果及び命令は、命令がダイナミックレジスタファ
イル11内に配置されたシーケンスに関する順番以外の
順番で実行に入り且つ実行から出てくる場合がある。
【0066】図11は、分岐実行論理によって使用され
る条件コードを示している。命令が発行されると、それ
は条件コードレジスタ22をセットし、該レジスタはロ
ックされ、且つセット用命令214のIDはロックID
レジスタ206内に保存される。
【0067】条件付き分岐命令が命令ストリーム内にお
いて遭遇され且つ条件コードがロックされると、分岐を
とるべきか否かを決定することは不可能である。この場
合、どの方向に分岐が行くべきかに関する予測がなされ
る。予測した方向において実行が継続し、且つ分岐棚上
げ器13の前に空の棚192上にエントリがなされる。
このエントリは以下の情報を有している。 − 分岐命令のID196 − 棚ステータス198 − 予測した方向200 − 分岐マスク202 − 分岐opcode201 − 条件コードをセットする命令のロッカID204 このエントリを行なう場合に、棚ステータスはEMPT
YからUNDETへ変化され、正しい分岐方向が不定で
あることを意味する。
【0068】条件コードが評価されると、その値210
は図11における条件コードレジスタ22内に書込ま
れ、且つ条件コードアップデート208のIDがロッカ
206のIDとマッチしていると216、条件コードレ
ジスタ22はアンロックされる。このことは、その同一
の条件コードレジスタをセットする爾後の命令が発行さ
れなかったことを意味する。更に、不定である分岐棚上
げ器13における各棚において、論理193,195が
条件コードアップデート208のIDを、該棚上に保存
されたロッカID204,205に対してチェックす
る。これら二つのIDが同一である場合、論理193,
195は正しい分岐決定を決定することが可能である。
初期の予測決定が評価されたばかりの正しい決定と同一
である場合、棚ステータスはEMPTYへ変化され、そ
の棚から分岐決定を実効的にパージし、従って該棚をそ
の他の命令に対して使用可能なものとする。正しい分岐
決定が予測した分岐方向と異なる場合には、その棚ステ
ータスは、図3における113,115,116,11
8,119で示した如く、WRONGへ変化される。
【0069】分岐棚上の任意のエントリがWRONGの
ステータスを有する場合、最も古いWRONGエントリ
よりも若いコンピュータ内の全ての命令は、図3におい
て119で示した如く、パージされる。又、最も古いW
RONGエントリよりも若い命令を有する分岐棚上げ器
13内の全ての棚はEMPTYへセットされる。次い
で、コンピュータは再度フェッチ用命令を再開し、該分
岐棚上の最も古いWRONG命令であった分岐命令でス
タートする。条件コードが与えられているので、この2
回目の分岐命令の実行は正しい方向に進行する。
【0070】分岐棚は、順番が付けられたリストとして
実現される。順番付けがなされたリストは、客体を挿入
した順番に維持するリニア、即ち直線的構成である。新
たな客体は、それが常に最後に挿入された客体の後であ
るような態様でリストの上部に挿入される。リスト内の
任意の位置から客体を削除することが可能である。この
挿入順番優先関係は、リスト内のそれらの位置によっ
て、リスト内の客体の相対的な年齢の決定を行なうこと
を可能とする。この順番付けリストの重要な特性は、X
リストセルが空である場合、Iが入力数として、MIN
(X,I)個の客体を挿入することが可能であるという
ことである。
【0071】図12に示した順番付けリスト構成の具体
例は、以下の例によって最も容易に説明することが可能
である。N個の要素乃至はセルを有する2入力(I=
2)、2出力順番付けリストについて考える。上部要素
は、任意的に0と番号が付けられ且つ底部はN−1と番
号を付ける。更に、これらのセルの各々は、そのセルが
空であるか充填されているかを決定するために使用され
る有効ビットを有している。この有効ビットは、客体が
そのセル内に挿入されている場合にセットされ、且つ客
体がそのセルから読取られる(即ち削除される)場合に
リセットされる。該リスト内の客体は、その客体の下側
に空のセルが存在する場合には、上部から底部へかけて
移動する。
【0072】この構成は、一組の接続したマルチプレク
サ−レジスタ対から構成することが可能である。該レジ
スタは、リストセルを形成し、且つ該マルチプレクサは
データ経路決定を行なう。該マルチプレクサは、レジス
タi(i=0,1,2...,N−1)への入力端をホ
ールド、シフト(1)、シフト(2)に対応するレジス
タi,i−1,i−2の出力端へ接続している。セル0
のi−1入力端及びセル1のi−2入力端は二つのリス
ト入力端を形成している。セル0のi−2入力端は不使
用である。二つの読取りポートが、設けられており、そ
れらは順番付けリスト内の任意の二つの客体を読取り且
つ削除することが可能である。
【0073】該マルチプレクサは以下の論理によって制
御される。セルi(i=0,1,2,...,N−1)
に対して、セルi+1乃至n−1が充填されている場
合、ホールドする そうでない場合には、単に一つの空のセルi+1乃至N
−1が存在する場合、シフト(1) そうでない場合、シフト(2)
【0074】上述した論理の効果は、リスト内の任意の
位置から客体を削除すると、そのリストは下方向に(崩
壊)し、新たな客体の挿入のために使用可能な空のセル
を該リストの上部に直ぐに与える。従って、該論理は、
上述したMIN(I,X)関係を満足する。I個のセル
を超えるセルが空であったとしても、I個の入力を許容
するために、一度にI(I=入力数)個のセルが崩壊さ
れねばならないに過ぎない。シフト(1)及びシフト
(2)機能は、この崩壊動作を実施する。
【0075】分岐棚上げ器は、上述した具体例の特別の
場合である。その差は、リストから任意の2個の客体を
読取り且つ削除することが可能な上述した読取りポート
が、リストから任意の数の客体を削除することが可能で
あり且つリストから任意の数の客体を読取ることが可能
なメカニズムで置換されている点である。リスト内にお
いて客体の移動を制御する論理は全く同一である。
【0076】本発明のプロセサの別の独特の特徴は、複
数個の演算論理ユニットの選択したものへ割当てるタイ
プにより命令を種類分けする能力である。図13は、本
発明のこの特徴を示した概略図である。実行のための準
備がなされている場合のあるダイナミックレジスタファ
イル内の潜在的な命令のうちで、何れかの命令が送給さ
れる場合のある幾つかの異なった演算論理ユニットが存
在する場合がある。図13に示した論理の目的は、3個
の最も古い命令を取出し且つそれらを使用可能なALU
へ送給することである。各ALUが全ての計算を実行す
ることが可能ではないので、該命令は、種類分けされ且
つ適切なALUへ割当てられねばならない。図13にお
いて、ALU 1 300及びALU 2 305は、
全ての非メモリ命令を実行し、一方ALU 3 310
はメモリ命令のみを実行する。メモリのみの命令とは、
情報及びメモリに対するアドレスが計算され且つシステ
ム内のチップ間でのデータ転送を許容する特別の移動操
作を計算する命令のことを意味する。図13における3
個のALUは整数操作を実施するが、同一のアーキテク
チャは浮動点ALUで使用することも可能である。
【0077】メモリ315はタイプ情報を有している。
このタイプ情報は、命令のプレデコーディングから得ら
れ、且つ命令内のビットに依存する。タイプメモリ31
5からの出力は、論理320及び325へ供給され、該
論理は、レディビットと関連して、ロジック330が最
も古い命令を取上げてメモリのみのALU310を必要
とする実行の準備を完了することを可能とする。タイプ
メモリ315からの別の経路は、最も古い及び2番目に
古い非メモリ命令を取上げ且つそれらをALU300及
びALU305へ供給することを可能とする。
【0078】図14は、ダイナミックレジスタファイル
から命令をフラッシュするためのフラッシュメカニズム
の動作を示している。命令が「瞑想」即ち推測によって
配置されたものである場合、例えば命令が分岐予測に基
づいて行われ且つその予測が後に誤ったものであると決
定された場合、命令はダイナミックレジスタファイルか
らフラッシュ、即ち除去されねばならない。この場合、
推定した命令と最も若い命令との間のダイナミックレジ
スタファイルから命令をフラッシュすることが所望され
る。図14aは、実行のために不正確に予測されたもの
と決定された命令Xと共に、最も若い命令と最も古い命
令とが指定されている例を示している。図示した例にお
いては、最も若い命令は最も古い命令の次に位置してい
ない。なぜならば、該レジスタは完全に命令で充填され
ておらず、単に部分的に充填されているに過ぎないから
である。この例において、命令Xと最も若い命令との間
の全ての命令をフラッシュすることが所望される。別の
例を図14bに示してあり、その場合、最も若い命令は
最も古い命令に隣接しており、一方フラッシュすること
が必要な命令はレジスタの底部近くの最も古い命令の下
側にある。
【0079】図14a及び図14bの例の何れかにおけ
る誤った命令のフラッシュ動作は、システムによる二つ
のベクトルの発生によって達成することが可能である。
第一のベクトルは、フラッシュID命令から上方向に延
在するIDから構成されており、一方第二のベクトルは
最も古いID命令から下方向に延在している。これらの
ベクトルは、図14a及び図14bの右側に示してあ
る。
【0080】フラッシュされるべき命令は、フラッシュ
IDと最も古い命令のIDとを比較することによって決
定される。フラッシュ識別が最も古い命令の識別よりも
下側である場合、二つのベクトルがオーバーラップする
命令の領域がフラッシュされる。このことは図14bに
示してある。一方、図14aに示した如く、フラッシュ
IDが最も古いIDよりも小さい場合、「OR」操作が
実施され、該ベクトルの何れかによって指定される全て
の命令がフラッシュされる。従って、図14aにおい
て、フラッシュID上方の全ての命令及び最も古い命令
下側の全ての命令がフラッシュされる。
【0081】好適実施例においては、この技術を実施す
る論理は以下の如くに記載される。 フラッシュベクトル=フラッシュID及び上方 最も古いベクトル=最も古いID及び下方 フラッシュID<最も古いIDの場合、 フラッシュベクトル「及び」最も古いベクトル そうでない場合、フラッシュベクトル「又は」最も古い
ベクトル
【0082】以上、本発明の具体的実施の態様について
詳細に説明したが、本発明は、これら具体例にのみ限定
されるべきものではなく、本発明の技術的範囲を逸脱す
ることなしに種々の変形が可能であることは勿論であ
る。
【図面の簡単な説明】
【図1】 本発明の好適プロセサのアーキテクチャの主
要なデータフローの概略図である。
【図2】 図1のアーキテクチャの付加的な構成要素を
有する概略ブロック図である。
【図3】 分岐実行操作を示したフローチャート図であ
る。
【図4】 データフロー出力操作を示したフローチャー
ト図である。
【図5】 ダイナミックレジスタファイルにおけるロー
ド命令スケジュール動作を示したフローチャート図であ
る。
【図6】 データフローを示したフローチャート図であ
る。
【図7】 ダイナミックレジスタファイル先入れ操作を
示したフローチャート図である。
【図8】 ダイナミックレジスタファイル先出し操作を
示したフローチャート図である。
【図9a】 本発明の一実施例に基づくダイナミックレ
ジスタファイルのセクションの概略図で右側における信
号を示した概略図である。
【図9b】 図9aと同様の概略図でその左側における
信号を示した概略図である。
【図10】 ダイナミックレジスタファイルにおけるデ
ータフィールドを示した概略図である。
【図11】 条件コード及び分岐棚回路を示した概略図
である。
【図12】 順番付けリスト構成を示した概略図であ
る。
【図13】 複数個のALUへ命令を割当てるシステム
を示した概略図である。
【図14a】 フラッシュメカニズムを示した概略図で
ある。
【図14b】 フラッシュメカニズムの別の例を示した
概略図である。
【符号の説明】
8 命令 9 フェッチャ 11 ダイナミックレジスタファイル 17 レジスタファイル 31 結果 33 命令スケジュール器 35 メモリスケジュール器 39 先出し出力ポート 45,47 演算論理ユニット 49,51,53,55 マルチプレクサ 151 アップデートバス
───────────────────────────────────────────────────── フロントページの続き (72)発明者 マール エイ. シュルツ アメリカ合衆国, カリフォルニア 92027,エスコンデイド, ファーン ストリート 1013 (72)発明者 ゲイリー エイ. ギブソン アメリカ合衆国, カリフオル二ア 9200, カールスバッド, ラゴランド リナ 2624 (72)発明者 ジョン イー. スプラックリン アメリカ合衆国, カリフォルニア 92117,サン ディエゴ, モルトリー アベニュー 3540 (72)発明者 ブルース デイ. ライトナー アメリカ合衆国, カリフォルニア 92131,サン ディエゴ, モーゼル ストリート 10305 (56)参考文献 特開 昭58−178464(JP,A) 特開 昭58−129553(JP,A) 特開 平1−102644(JP,A) 特開 平1−194031(JP,A) 米国特許4807115(US,A) 久我 守弘(外2名),SIMP(単 一命令流/多重パイプライン)方式に基 づく「新風プロセッサの低レベル並列処 理アルゴリズム、並列シンポジウムJS PP’89、平成元年2月、163−170頁 五島 龍宏(外4名),SIMPアー キテクチャに基づくハードウェアシステ ム構成、情報処理学会第36回(昭和63年 前期)全国大会論文集、昭和63年(1988 年)3月17日、163−164頁 (58)調査した分野(Int.Cl.7,DB名) G06F 9/38

Claims (3)

    (57)【特許請求の範囲】
  1. 【請求項1】データ処理装置において、 命令供給源から第1プログラムカウンタの制御下で連続
    的に所定の順番で一連の命令を受け取り且つ受け取った
    命令中における分岐命令を実行することが可能な命令フ
    ェッチ手段、 前記命令フェッチ手段が受け取った分岐命令がその条件
    コードがロックされているために実行不可能である場合
    にその分岐命令を前記命令フェッチ手段から受け取り且
    つ前記条件コードがアンロックされるまでその分岐命令
    を待機状態に維持する分岐棚上げ手段、 前記命令フェッチ手段から供給される分岐命令以外の命
    令を格納可能な命令フィールドと、該命令の実行に使用
    するオペランドを格納可能なオペランドフィールドと、
    該命令の実行結果を格納可能な結果フィールドとを具備
    しており、且つ前記第1プログラムカウンタとは異なる
    順番でカウントすることが可能な第2プログラムカウン
    タによって制御される第1出力ポート及び前記第1プロ
    グラムカウンタと同一の順番でカウントする第3プログ
    ラムカウンタによって制御される第2出力ポートを具備
    している第1レジスタファイル手段、 前記第2出力ポートから出力される実行結果を受け取り
    且つそれを前記所定の順番でメモリへ転送することが可
    能な第2レジスタファイル手段、 前記第1レジスタファイル手段の命令フィールド内に格
    納されている命令を実行してその実行結果を前記第1レ
    ジスタファイル手段の結果フィールド内に格納させる演
    算手段、 前記第1レジスタファイル内に格納されている命令が実
    行可能な状態にあるか否かを決定し実行可能な状態にあ
    る場合に前記所定の順番とは無関係な順番で前記命令の
    実行をスケジュールすることが可能なスケジュール手
    段、 を有していることを特徴とするデータ処理装置。
  2. 【請求項2】請求項1において、前記第1プログラムカ
    ウンタが自走型カウンタであることを特徴とするデータ
    処理装置。
  3. 【請求項3】請求項1において、分岐命令が前記分岐棚
    上げ手段へ棚上げされると前記命令フェッチ手段は分岐
    予測処理を実行し、前記分岐予測が誤っていたことが判
    別された場合に、前記第1レジスタファイル手段から前
    記分岐予測に依存する全ての命令及びその結果をフラッ
    シュさせることを特徴とするデータ処理装置。
JP2417670A 1989-12-15 1990-12-15 プロセサアーキテクチャ Expired - Lifetime JP3014773B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US45140389A 1989-12-15 1989-12-15
US451403 1989-12-15
US07/622,893 US5487156A (en) 1989-12-15 1990-12-05 Processor architecture having independently fetching issuing and updating operations of instructions which are sequentially assigned and stored in order fetched
US622893 1990-12-05

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP11186096A Division JP2000029699A (ja) 1989-12-15 1999-06-30 プロセサア―キテクチャ

Publications (2)

Publication Number Publication Date
JPH04270421A JPH04270421A (ja) 1992-09-25
JP3014773B2 true JP3014773B2 (ja) 2000-02-28

Family

ID=27036360

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2417670A Expired - Lifetime JP3014773B2 (ja) 1989-12-15 1990-12-15 プロセサアーキテクチャ
JP11186096A Pending JP2000029699A (ja) 1989-12-15 1999-06-30 プロセサア―キテクチャ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP11186096A Pending JP2000029699A (ja) 1989-12-15 1999-06-30 プロセサア―キテクチャ

Country Status (5)

Country Link
US (9) US5487156A (ja)
EP (1) EP0432774B1 (ja)
JP (2) JP3014773B2 (ja)
KR (1) KR940009098B1 (ja)
DE (1) DE69032465T2 (ja)

Families Citing this family (208)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
US5692169A (en) * 1990-12-14 1997-11-25 Hewlett Packard Company Method and system for deferring exceptions generated during speculative execution
US5488729A (en) * 1991-05-15 1996-01-30 Ross Technology, Inc. Central processing unit architecture with symmetric instruction scheduling to achieve multiple instruction launch and execution
US5826055A (en) * 1991-07-08 1998-10-20 Seiko Epson Corporation System and method for retiring instructions in a superscalar microprocessor
US5493687A (en) * 1991-07-08 1996-02-20 Seiko Epson Corporation RISC microprocessor architecture implementing multiple typed register sets
EP0886209B1 (en) * 1991-07-08 2005-03-23 Seiko Epson Corporation Extensible risc microprocessor architecture
US5961629A (en) * 1991-07-08 1999-10-05 Seiko Epson Corporation High performance, superscalar-based computer system with out-of-order instruction execution
US5539911A (en) * 1991-07-08 1996-07-23 Seiko Epson Corporation High-performance, superscalar-based computer system with out-of-order instruction execution
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp Befehlsablauffolgeplanung von einem risc-superskalarprozessor
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.
EP0663083B1 (en) * 1992-09-29 2000-12-20 Seiko Epson Corporation System and method for handling load and/or store operations in a superscalar microprocessor
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
DE69330889T2 (de) 1992-12-31 2002-03-28 Seiko Epson Corp System und Verfahren zur Änderung der Namen von Registern
US5604912A (en) * 1992-12-31 1997-02-18 Seiko Epson Corporation System and method for assigning tags to instructions to control instruction execution
JPH06242948A (ja) * 1993-02-16 1994-09-02 Fujitsu Ltd パイプライン処理計算機
US6704861B1 (en) * 1993-06-17 2004-03-09 Hewlett-Packard Development Company, L.P. Mechanism for executing computer instructions in parallel
JP2815236B2 (ja) * 1993-12-15 1998-10-27 シリコン・グラフィックス・インコーポレーテッド スーパースカーラマイクロプロセッサのための命令ディスパッチ方法及びレジスタ競合についてのチェック方法
US5684971A (en) * 1993-12-27 1997-11-04 Intel Corporation Reservation station with a pseudo-FIFO circuit for scheduling dispatch of instructions
DE69420540T2 (de) * 1994-01-03 2000-02-10 Intel Corp Verfahren und Vorrichtung zum Implementieren eines vierstufigen Verzweigungsauflosungssystem in einem Rechnerprozessor
US6378062B1 (en) * 1994-01-04 2002-04-23 Intel Corporation Method and apparatus for performing a store operation
TW353732B (en) * 1994-03-31 1999-03-01 Ibm Processing system and method of operation
US5734856A (en) * 1994-04-05 1998-03-31 Seiko Epson Corporation System and method for generating supplemental ready signals to eliminate wasted cycles between operations
US6205538B1 (en) * 1994-08-24 2001-03-20 Sun Microsystems, Inc. Instruction result labeling in a counterflow pipeline processor
US5649137A (en) * 1994-10-20 1997-07-15 Advanced Micro Devices, Inc. Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
US5675758A (en) * 1994-11-15 1997-10-07 Advanced Micro Devices, Inc. Processor having primary integer execution unit and supplemental integer execution unit for performing out-of-order add and move operations
US5642493A (en) * 1994-11-25 1997-06-24 Motorola, Inc. Method of loading instructions into an instruction cache by repetitively using a routine containing a mispredicted branch instruction
JP3494489B2 (ja) * 1994-11-30 2004-02-09 株式会社ルネサステクノロジ 命令処理装置
US5799179A (en) * 1995-01-24 1998-08-25 International Business Machines Corporation Handling of exceptions in speculative instructions
JP3699518B2 (ja) * 1995-01-26 2005-09-28 サン マイクロシステムズ インコーポレイテッド パイプライン・プロセッサ内において、誤って予測された実行分岐後にアネックス内のヤング・ビットを回復する方法及び装置
EP0815507B1 (en) * 1995-02-14 2013-06-12 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US5708788A (en) * 1995-03-03 1998-01-13 Fujitsu, Ltd. Method for adjusting fetch program counter in response to the number of instructions fetched and issued
US5745726A (en) * 1995-03-03 1998-04-28 Fujitsu, Ltd Method and apparatus for selecting the oldest queued instructions without data dependencies
US5896528A (en) * 1995-03-03 1999-04-20 Fujitsu Limited Superscalar processor with multiple register windows and speculative return address generation
JP4309480B2 (ja) * 1995-03-07 2009-08-05 株式会社東芝 情報処理装置
US5822574A (en) * 1995-04-12 1998-10-13 Advanced Micro Devices, Inc. Functional unit with a pointer for mispredicted resolution, and a superscalar microprocessor employing the same
US5832297A (en) * 1995-04-12 1998-11-03 Advanced Micro Devices, Inc. Superscalar microprocessor load/store unit employing a unified buffer and separate pointers for load and store operations
US5778434A (en) 1995-06-07 1998-07-07 Seiko Epson Corporation System and method for processing multiple requests and out of order returns
US5903918A (en) * 1995-08-23 1999-05-11 Sun Microsystems, Inc. Program counter age bits
JPH0991136A (ja) * 1995-09-25 1997-04-04 Toshiba Corp 信号処理装置
US5751983A (en) * 1995-10-03 1998-05-12 Abramson; Jeffrey M. Out-of-order processor with a memory subsystem which handles speculatively dispatched load operations
US5745724A (en) * 1996-01-26 1998-04-28 Advanced Micro Devices, Inc. Scan chain for rapidly identifying first or second objects of selected types in a sequential list
US5765035A (en) * 1995-11-20 1998-06-09 Advanced Micro Devices, Inc. Recorder buffer capable of detecting dependencies between accesses to a pair of caches
US5781790A (en) * 1995-12-29 1998-07-14 Intel Corporation Method and apparatus for performing floating point to integer transfers and vice versa
US5815724A (en) * 1996-03-29 1998-09-29 Intel Corporation Method and apparatus for controlling power consumption in a microprocessor
US5799167A (en) * 1996-05-15 1998-08-25 Hewlett-Packard Company Instruction nullification system and method for a processor that executes instructions out of order
US5796975A (en) * 1996-05-24 1998-08-18 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order
EP1310864A2 (en) * 1996-05-30 2003-05-14 Matsushita Electric Industrial Co., Ltd. Method and circuit for conditional-flag rewriting control
US5748934A (en) * 1996-05-31 1998-05-05 Hewlett-Packard Company Operand dependency tracking system and method for a processor that executes instructions out of order and that permits multiple precision data words
US5765220A (en) * 1996-06-18 1998-06-09 Hewlett-Packard Company Apparatus and method to reduce instruction address storage in a super-scaler processor
US5802564A (en) * 1996-07-08 1998-09-01 International Business Machines Corp. Method and apparatus for increasing processor performance
US5652774A (en) * 1996-07-08 1997-07-29 International Business Machines Corporation Method and apparatus for decreasing the cycle times of a data processing system
US5838944A (en) * 1996-07-31 1998-11-17 Hewlett-Packard Company System for storing processor register data after a mispredicted branch
US5822575A (en) * 1996-09-12 1998-10-13 Advanced Micro Devices, Inc. Branch prediction storage for storing branch prediction information such that a corresponding tag may be routed with the branch instruction
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US5889975A (en) * 1996-11-07 1999-03-30 Intel Corporation Method and apparatus permitting the use of a pipe stage having an unknown depth with a single microprocessor core
US5920710A (en) * 1996-11-18 1999-07-06 Advanced Micro Devices, Inc. Apparatus and method for modifying status bits in a reorder buffer with a large speculative state
US5870579A (en) * 1996-11-18 1999-02-09 Advanced Micro Devices, Inc. Reorder buffer including a circuit for selecting a designated mask corresponding to an instruction that results in an exception
US6035424A (en) * 1996-12-09 2000-03-07 International Business Machines Corporation Method and apparatus for tracking processing of a command
US5822788A (en) * 1996-12-20 1998-10-13 Intel Corporation Mechanism for prefetching targets of memory de-reference operations in a high-performance processor
US6088793A (en) * 1996-12-30 2000-07-11 Intel Corporation Method and apparatus for branch execution on a multiple-instruction-set-architecture microprocessor
US5978900A (en) * 1996-12-30 1999-11-02 Intel Corporation Renaming numeric and segment registers using common general register pool
EP0851343B1 (en) * 1996-12-31 2005-08-31 Metaflow Technologies, Inc. System for processing floating point operations
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
US5878242A (en) * 1997-04-21 1999-03-02 International Business Machines Corporation Method and system for forwarding instructions in a processor with increased forwarding probability
US5784588A (en) * 1997-06-20 1998-07-21 Sun Microsystems, Inc. Dependency checking apparatus employing a scoreboard for a pair of register sets having different precisions
US5790827A (en) * 1997-06-20 1998-08-04 Sun Microsystems, Inc. Method for dependency checking using a scoreboard for a pair of register sets having different precisions
US6058466A (en) * 1997-06-24 2000-05-02 Sun Microsystems, Inc. System for allocation of execution resources amongst multiple executing processes
US6058472A (en) * 1997-06-25 2000-05-02 Sun Microsystems, Inc. Apparatus for maintaining program correctness while allowing loads to be boosted past stores in an out-of-order machine
US5978864A (en) * 1997-06-25 1999-11-02 Sun Microsystems, Inc. Method for thermal overload detection and prevention for an intergrated circuit processor
US6094719A (en) * 1997-06-25 2000-07-25 Sun Microsystems, Inc. Reducing data dependent conflicts by converting single precision instructions into microinstructions using renamed phantom registers in a processor having double precision registers
US6075931A (en) * 1997-06-25 2000-06-13 Sun Microsystems, Inc. Method for efficient implementation of multi-ported logic FIFO structures in a processor
US6098165A (en) * 1997-06-25 2000-08-01 Sun Microsystems, Inc. Fetching and handling a bundle of instructions comprising instructions and non-complex instructions
US6049868A (en) * 1997-06-25 2000-04-11 Sun Microsystems, Inc. Apparatus for delivering precise traps and interrupts in an out-of-order processor
US6035374A (en) * 1997-06-25 2000-03-07 Sun Microsystems, Inc. Method of executing coded instructions in a multiprocessor having shared execution resources including active, nap, and sleep states in accordance with cache miss latency
US6144982A (en) * 1997-06-25 2000-11-07 Sun Microsystems, Inc. Pipeline processor and computing system including an apparatus for tracking pipeline resources
US5884070A (en) * 1997-06-25 1999-03-16 Sun Microsystems, Inc. Method for processing single precision arithmetic operations in system where two single precision registers are aliased to one double precision register
US5850533A (en) * 1997-06-25 1998-12-15 Sun Microsystems, Inc. Method for enforcing true dependencies in an out-of-order processor
US5860018A (en) * 1997-06-25 1999-01-12 Sun Microsystems, Inc. Method for tracking pipeline resources in a superscalar processor
US5941977A (en) * 1997-06-25 1999-08-24 Sun Microsystems, Inc. Apparatus for handling register windows in an out-of-order processor
US5958047A (en) * 1997-06-25 1999-09-28 Sun Microsystems, Inc. Method for precise architectural update in an out-of-order processor
US6085305A (en) 1997-06-25 2000-07-04 Sun Microsystems, Inc. Apparatus for precise architectural update in an out-of-order processor
US5838988A (en) * 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US5948106A (en) * 1997-06-25 1999-09-07 Sun Microsystems, Inc. System for thermal overload detection and prevention for an integrated circuit processor
US5999727A (en) * 1997-06-25 1999-12-07 Sun Microsystems, Inc. Method for restraining over-eager load boosting using a dependency color indicator stored in cache with both the load and store instructions
US6052777A (en) * 1997-06-25 2000-04-18 Sun Microsystems, Inc. Method for delivering precise traps and interrupts in an out-of-order processor
US5898853A (en) * 1997-06-25 1999-04-27 Sun Microsystems, Inc. Apparatus for enforcing true dependencies in an out-of-order processor
US5870597A (en) * 1997-06-25 1999-02-09 Sun Microsystems, Inc. Method for speculative calculation of physical register addresses in an out of order processor
US5875316A (en) * 1997-06-25 1999-02-23 Sun Microsystems, Inc. Method for handling complex instructions in an out-of-order processor
US6055616A (en) * 1997-06-25 2000-04-25 Sun Microsystems, Inc. System for efficient implementation of multi-ported logic FIFO structures in a processor
US6289437B1 (en) 1997-08-27 2001-09-11 International Business Machines Corporation Data processing system and method for implementing an efficient out-of-order issue mechanism
US5961636A (en) * 1997-09-22 1999-10-05 International Business Machines Corporation Checkpoint table for selective instruction flushing in a speculative execution unit
US6148372A (en) * 1998-01-21 2000-11-14 Sun Microsystems, Inc. Apparatus and method for detection and recovery from structural stalls in a multi-level non-blocking cache system
US6226713B1 (en) 1998-01-21 2001-05-01 Sun Microsystems, Inc. Apparatus and method for queueing structures in a multi-level non-blocking cache subsystem
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
US6862732B1 (en) 1998-02-25 2005-03-01 Metaserver, Inc. Method and apparatus for event-driven processing of data
US6609189B1 (en) * 1998-03-12 2003-08-19 Yale University Cycle segmented prefix circuits
US6260138B1 (en) * 1998-07-17 2001-07-10 Sun Microsystems, Inc. Method and apparatus for branch instruction processing in a processor
US6189093B1 (en) * 1998-07-21 2001-02-13 Lsi Logic Corporation System for initiating exception routine in response to memory access exception by storing exception information and exception bit within architectured register
US6289445B2 (en) 1998-07-21 2001-09-11 Lsi Logic Corporation Circuit and method for initiating exception routines using implicit exception checking
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6393556B1 (en) * 1998-10-30 2002-05-21 Intel Corporation Apparatus and method to change processor privilege without pipeline flush
US6233645B1 (en) 1998-11-02 2001-05-15 Compaq Computer Corporation Dynamically disabling speculative prefetch when high priority demand fetch opportunity use is high
SE9901145D0 (sv) * 1998-11-16 1999-03-29 Ericsson Telefon Ab L M A processing system and method
US6216178B1 (en) * 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6311267B1 (en) * 1998-11-20 2001-10-30 International Business Machines Corporation Just-in-time register renaming technique
US7035997B1 (en) 1998-12-16 2006-04-25 Mips Technologies, Inc. Methods and apparatus for improving fetching and dispatch of instructions in multithreaded processors
US7020879B1 (en) * 1998-12-16 2006-03-28 Mips Technologies, Inc. Interrupt and exception handling for multi-streaming digital processors
US7257814B1 (en) 1998-12-16 2007-08-14 Mips Technologies, Inc. Method and apparatus for implementing atomicity of memory operations in dynamic multi-streaming processors
US7237093B1 (en) 1998-12-16 2007-06-26 Mips Technologies, Inc. Instruction fetching system in a multithreaded processor utilizing cache miss predictions to fetch instructions from multiple hardware streams
US6389449B1 (en) * 1998-12-16 2002-05-14 Clearwater Networks, Inc. Interstream control and communications for multi-streaming digital processors
US7529907B2 (en) 1998-12-16 2009-05-05 Mips Technologies, Inc. Method and apparatus for improved computer load and store operations
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US7065633B1 (en) 1999-01-28 2006-06-20 Ati International Srl System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU
US6978462B1 (en) 1999-01-28 2005-12-20 Ati International Srl Profiling execution of a sequence of events occuring during a profiled execution interval that matches time-independent selection criteria of events to be profiled
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
US7111290B1 (en) 1999-01-28 2006-09-19 Ati International Srl Profiling program execution to identify frequently-executed portions and to assist binary translation
US6954923B1 (en) * 1999-01-28 2005-10-11 Ati International Srl Recording classification of instructions executed by a computer
US7941647B2 (en) 1999-01-28 2011-05-10 Ati Technologies Ulc Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination
US8074055B1 (en) 1999-01-28 2011-12-06 Ati Technologies Ulc Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code
US7013456B1 (en) 1999-01-28 2006-03-14 Ati International Srl Profiling execution of computer programs
US7275246B1 (en) 1999-01-28 2007-09-25 Ati International Srl Executing programs for a first computer architecture on a computer of a second architecture
US6704856B1 (en) * 1999-02-01 2004-03-09 Hewlett-Packard Development Company, L.P. Method for compacting an instruction queue
US6542987B1 (en) 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full queue
US6738896B1 (en) * 1999-02-01 2004-05-18 Hewlett-Packard Development Company, L.P. Method and apparatus for determining availability of a queue which allows random insertion
US6883000B1 (en) 1999-02-12 2005-04-19 Robert L. Gropper Business card and contact management system
US7505974B2 (en) * 1999-02-12 2009-03-17 Gropper Robert L Auto update utility for digital address books
US6473832B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Load/store unit having pre-cache and post-cache queues for low latency load memory operations
US6393536B1 (en) 1999-05-18 2002-05-21 Advanced Micro Devices, Inc. Load/store unit employing last-in-buffer indication for rapid load-hit-store
US6266744B1 (en) 1999-05-18 2001-07-24 Advanced Micro Devices, Inc. Store to load forwarding using a dependency link file
US6427193B1 (en) 1999-05-18 2002-07-30 Advanced Micro Devices, Inc. Deadlock avoidance using exponential backoff
US6473837B1 (en) 1999-05-18 2002-10-29 Advanced Micro Devices, Inc. Snoop resynchronization mechanism to preserve read ordering
US6415360B1 (en) 1999-05-18 2002-07-02 Advanced Micro Devices, Inc. Minimizing self-modifying code checks for uncacheable memory types
US6779107B1 (en) 1999-05-28 2004-08-17 Ati International Srl Computer execution by opportunistic adaptation
US7089404B1 (en) * 1999-06-14 2006-08-08 Transmeta Corporation Method and apparatus for enhancing scheduling in an advanced microprocessor
US7634635B1 (en) 1999-06-14 2009-12-15 Brian Holscher Systems and methods for reordering processor instructions
US6640315B1 (en) * 1999-06-26 2003-10-28 Board Of Trustees Of The University Of Illinois Method and apparatus for enhancing instruction level parallelism
US20030135717A1 (en) * 1999-08-17 2003-07-17 Ansari Ahmad R. Method and apparatus for transferring vector data
US7254806B1 (en) 1999-08-30 2007-08-07 Ati International Srl Detecting reordered side-effects
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6748589B1 (en) 1999-10-20 2004-06-08 Transmeta Corporation Method for increasing the speed of speculative execution
US6662280B1 (en) 1999-11-10 2003-12-09 Advanced Micro Devices, Inc. Store buffer which forwards data based on index and optional way match
US6345351B1 (en) 1999-11-12 2002-02-05 Telefonaktiebolaget Lm Ericsson(Publ) Maintenance of speculative state of parallel executed jobs in an information processing system
US6665708B1 (en) 1999-11-12 2003-12-16 Telefonaktiebolaget Lm Ericsson (Publ) Coarse grained determination of data dependence between parallel executed jobs in an information processing system
US6539470B1 (en) * 1999-11-16 2003-03-25 Advanced Micro Devices, Inc. Instruction decode unit producing instruction operand information in the order in which the operands are identified, and systems including same
US6697932B1 (en) * 1999-12-30 2004-02-24 Intel Corporation System and method for early resolution of low confidence branches and safe data cache accesses
US6934832B1 (en) 2000-01-18 2005-08-23 Ati International Srl Exception mechanism for a computer
US6804769B1 (en) * 2000-02-18 2004-10-12 Hewlett-Packard Development Company, L.P. Unified buffer for tracking disparate long-latency operations in a microprocessor
US7065632B1 (en) * 2000-04-07 2006-06-20 Ip First Llc Method and apparatus for speculatively forwarding storehit data in a hierarchical manner
US6662293B1 (en) * 2000-05-23 2003-12-09 Sun Microsystems, Inc. Instruction dependency scoreboard with a hierarchical structure
JP2004518183A (ja) * 2000-07-14 2004-06-17 クリアウオーター・ネツトワークス・インコーポレイテツド マルチスレッド・システムにおける命令のフェッチとディスパッチ
JP4025493B2 (ja) * 2000-08-08 2007-12-19 富士通株式会社 適切な発行先に命令を発行する命令発行装置
US6633969B1 (en) 2000-08-11 2003-10-14 Lsi Logic Corporation Instruction translation system and method achieving single-cycle translation of variable-length MIPS16 instructions
US6671799B1 (en) 2000-08-31 2003-12-30 Stmicroelectronics, Inc. System and method for dynamically sizing hardware loops and executing nested loops in a digital signal processor
US6754807B1 (en) 2000-08-31 2004-06-22 Stmicroelectronics, Inc. System and method for managing vertical dependencies in a digital signal processor
US6754808B1 (en) * 2000-09-29 2004-06-22 Intel Corporation Valid bit generation and tracking in a pipelined processor
US7865747B2 (en) * 2000-10-31 2011-01-04 International Business Machines Corporation Adaptive issue queue for reduced power at high performance
US6622269B1 (en) * 2000-11-27 2003-09-16 Intel Corporation Memory fault isolation apparatus and methods
US6920547B2 (en) * 2000-12-20 2005-07-19 Intel Corporation Register adjustment based on adjustment values determined at multiple stages within a pipeline of a processor
US6883090B2 (en) * 2001-05-17 2005-04-19 Broadcom Corporation Method for cancelling conditional delay slot instructions
US6859874B2 (en) * 2001-09-24 2005-02-22 Broadcom Corporation Method for identifying basic blocks with conditional delay slot instructions
US6785804B2 (en) * 2001-05-17 2004-08-31 Broadcom Corporation Use of tags to cancel a conditional branch delay slot instruction
JP3729087B2 (ja) 2001-05-23 2005-12-21 日本電気株式会社 マルチプロセッサシステム、データ依存投機実行制御装置およびその方法
US7269714B2 (en) 2001-09-24 2007-09-11 Broadcom Corporation Inhibiting of a co-issuing instruction in a processor having different pipeline lengths
US7203817B2 (en) * 2001-09-24 2007-04-10 Broadcom Corporation Power consumption reduction in a pipeline by stalling instruction issue on a load miss
US6976152B2 (en) * 2001-09-24 2005-12-13 Broadcom Corporation Comparing operands of instructions against a replay scoreboard to detect an instruction replay and copying a replay scoreboard to an issue scoreboard
US7114059B2 (en) * 2001-11-05 2006-09-26 Intel Corporation System and method to bypass execution of instructions involving unreliable data during speculative execution
US7055021B2 (en) * 2002-02-05 2006-05-30 Sun Microsystems, Inc. Out-of-order processor that reduces mis-speculation using a replay scoreboard
US20030182537A1 (en) * 2002-03-21 2003-09-25 International Business Machines Corporation Mechanism to assign more logical load/store tags than available physical registers in a microprocessor system
US7124331B2 (en) * 2002-05-14 2006-10-17 Sun Microsystems, Inc. Method and apparatus for providing fault-tolerance for temporary results within a CPU
JP3816845B2 (ja) * 2002-07-05 2006-08-30 富士通株式会社 プロセッサ及び命令制御方法
US20040064679A1 (en) * 2002-09-30 2004-04-01 Black Bryan P. Hierarchical scheduling windows
US7136938B2 (en) * 2003-03-27 2006-11-14 International Business Machines Corporation Command ordering based on dependencies
US7308562B2 (en) * 2003-05-22 2007-12-11 International Business Machines Corporation System and method for improved branch performance in pipelined computer architectures
US7321964B2 (en) * 2003-07-08 2008-01-22 Advanced Micro Devices, Inc. Store-to-load forwarding buffer using indexed lookup
US6925928B2 (en) * 2003-09-18 2005-08-09 Anthony Fox Trash compactor for fast food restaurant waste
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US20050114632A1 (en) * 2003-11-21 2005-05-26 Intel Corporation Method and apparatus for data speculation in an out-of-order processor
US8607241B2 (en) * 2004-06-30 2013-12-10 Intel Corporation Compare and exchange operation using sleep-wakeup mechanism
US7152155B2 (en) * 2005-02-18 2006-12-19 Qualcomm Incorporated System and method of correcting a branch misprediction
US7949861B2 (en) * 2005-06-10 2011-05-24 Qualcomm Incorporated Method and apparatus for managing instruction flushing in a microprocessor's instruction pipeline
US7376817B2 (en) * 2005-08-10 2008-05-20 P.A. Semi, Inc. Partial load/store forward prediction
US7634644B2 (en) * 2006-03-13 2009-12-15 Sun Microsystems, Inc. Effective elimination of delay slot handling from a front section of a processor pipeline
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
US20080077777A1 (en) * 2006-09-25 2008-03-27 Arm Limited Register renaming for instructions having unresolved condition codes
US20090037885A1 (en) * 2007-07-30 2009-02-05 Microsoft Cororation Emulating execution of divergent program execution paths
US8037366B2 (en) * 2009-03-24 2011-10-11 International Business Machines Corporation Issuing instructions in-order in an out-of-order processor using false dependencies
US8589892B2 (en) * 2010-11-21 2013-11-19 International Business Machines Corporation Verification of speculative execution
DE102011084569B4 (de) * 2011-10-14 2019-02-21 Continental Automotive Gmbh Verfahren zum Betreiben eines informationstechnischen Systems und informationstechnisches System
US9128725B2 (en) 2012-05-04 2015-09-08 Apple Inc. Load-store dependency predictor content management
US9600289B2 (en) 2012-05-30 2017-03-21 Apple Inc. Load-store dependency predictor PC hashing
WO2013188306A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. Reordered speculative instruction sequences with a disambiguation-free out of order load store queue
TWI646422B (zh) 2012-06-15 2019-01-01 英特爾股份有限公司 在處理器中之免消歧義失序載入/儲存佇列方法、微處理器、和非暫態性電腦可讀取儲存媒體
EP2862069A4 (en) 2012-06-15 2016-12-28 Soft Machines Inc DEFINING INSTRUCTIONS TO REORDER AND OPTIMIZE LOADING AND STORAGE
WO2013188701A1 (en) 2012-06-15 2013-12-19 Soft Machines, Inc. A method and system for implementing recovery from speculative forwarding miss-predictions/errors resulting from load store reordering and optimization
CN104823154B (zh) 2012-06-15 2017-12-29 英特尔公司 包括虚拟加载存储队列的处理器和系统
EP2862062B1 (en) 2012-06-15 2024-03-06 Intel Corporation A virtual load store queue having a dynamic dispatch window with a distributed structure
JP6098429B2 (ja) * 2013-08-12 2017-03-22 富士通株式会社 演算処理装置及び演算処理装置の制御方法
US9710268B2 (en) 2014-04-29 2017-07-18 Apple Inc. Reducing latency for pointer chasing loads
US10514925B1 (en) 2016-01-28 2019-12-24 Apple Inc. Load speculation recovery
US10437595B1 (en) 2016-03-15 2019-10-08 Apple Inc. Load/store dependency predictor optimization for replayed loads
US11106466B2 (en) * 2018-06-18 2021-08-31 International Business Machines Corporation Decoupling of conditional branches
US20200057645A1 (en) * 2018-08-16 2020-02-20 Tachyum Ltd. System and method for location aware processing

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4325121A (en) * 1978-11-17 1982-04-13 Motorola, Inc. Two-level control store for microprogrammed data processor
US4338661A (en) * 1979-05-21 1982-07-06 Motorola, Inc. Conditional branch unit for microprogrammed data processor
US4342078A (en) * 1979-05-21 1982-07-27 Motorola, Inc. Instruction register sequence decoder for microprogrammed data processor and method
US4402042A (en) * 1980-11-24 1983-08-30 Texas Instruments Incorporated Microprocessor system with instruction pre-fetch
JPS58146941A (ja) * 1982-02-26 1983-09-01 Hitachi Ltd マイクロプログラム制御デ−タ処理装置
JPS58151655A (ja) * 1982-03-03 1983-09-08 Fujitsu Ltd 情報処理装置
JPS5932045A (ja) * 1982-08-16 1984-02-21 Hitachi Ltd 情報処理装置
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
CA1223969A (en) * 1984-10-31 1987-07-07 William M. Johnson Microcode control of a parallel architecture microprocessor
US5146570A (en) * 1984-10-31 1992-09-08 International Business Machines Corporation System executing branch-with-execute instruction resulting in next successive instruction being execute while specified target instruction is prefetched for following execution
US4722049A (en) * 1985-10-11 1988-01-26 Unisys Corporation Apparatus for out-of-order program execution
US4811215A (en) * 1986-12-12 1989-03-07 Intergraph Corporation Instruction execution accelerator for a pipelined digital machine with virtual memory
US4926323A (en) * 1988-03-03 1990-05-15 Advanced Micro Devices, Inc. Streamlined instruction processor
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
US5072364A (en) * 1989-05-24 1991-12-10 Tandem Computers Incorporated Method and apparatus for recovering from an incorrect branch prediction in a processor that executes a family of instructions in parallel
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
US5075844A (en) * 1989-05-24 1991-12-24 Tandem Computers Incorporated Paired instruction processor precise exception handling mechanism
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

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
久我 守弘(外2名),SIMP(単一命令流/多重パイプライン)方式に基づく「新風プロセッサの低レベル並列処理アルゴリズム、並列シンポジウムJSPP’89、平成元年2月、163−170頁
五島 龍宏(外4名),SIMPアーキテクチャに基づくハードウェアシステム構成、情報処理学会第36回(昭和63年前期)全国大会論文集、昭和63年(1988年)3月17日、163−164頁

Also Published As

Publication number Publication date
US5832293A (en) 1998-11-03
US5487156A (en) 1996-01-23
US5625837A (en) 1997-04-29
US5987588A (en) 1999-11-16
KR910012911A (ko) 1991-08-08
US5627983A (en) 1997-05-06
US5708841A (en) 1998-01-13
EP0432774A2 (en) 1991-06-19
KR940009098B1 (en) 1994-09-29
US5561776A (en) 1996-10-01
JP2000029699A (ja) 2000-01-28
EP0432774B1 (en) 1998-07-08
EP0432774A3 (en) 1993-04-07
DE69032465D1 (de) 1998-08-13
US5797025A (en) 1998-08-18
JPH04270421A (ja) 1992-09-25
US5592636A (en) 1997-01-07
DE69032465T2 (de) 1999-02-04

Similar Documents

Publication Publication Date Title
JP3014773B2 (ja) プロセサアーキテクチャ
JP2937485B2 (ja) スーパースカラプロセッサにおけるトラップを検出して実行する方法及び装置
US6463522B1 (en) Memory system for ordering load and store instructions in a processor that performs multithread execution
US6182210B1 (en) Processor having multiple program counters and trace buffers outside an execution pipeline
US6240509B1 (en) Out-of-pipeline trace buffer for holding instructions that may be re-executed following misspeculation
US6772324B2 (en) Processor having multiple program counters and trace buffers outside an execution pipeline
JP3093639B2 (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
US20040186983A1 (en) System and method for retiring approximately simultaneously a group of instructions in a superscalar microprocessor
US6973563B1 (en) Microprocessor including return prediction unit configured to determine whether a stored return address corresponds to more than one call instruction
JP2004145485A (ja) 命令の投機的実行制御装置およびその方法
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
JP2003029986A (ja) プロセッサ間レジスタ継承方法及びその装置
US5872949A (en) 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
US6324640B1 (en) System and method for dispatching groups of instructions using pipelined register renaming
US20180095766A1 (en) Flushing in a parallelized processor
US5727177A (en) Reorder buffer circuit accommodating special instructions operating on odd-width results
US7406587B1 (en) Method and system for renaming registers in a microprocessor
Torng et al. Interrupt handling for out-of-order execution processors
JP3138259B2 (ja) カウントによる高速レジスタ・リネームのためのシステムおよび方法
US6311267B1 (en) Just-in-time register renaming technique
EP0877316A2 (en) System and method of processing instructions for a processor
US6718460B1 (en) Mechanism for error handling in a computer system
US11663014B2 (en) Speculatively executing instructions that follow a status updating instruction
JPH10283178A (ja) 命令を発行するための方法及びシステム

Legal Events

Date Code Title Description
R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20071217

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 11

EXPY Cancellation because of completion of term