JPH07152559A - パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ - Google Patents

パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ

Info

Publication number
JPH07152559A
JPH07152559A JP6251990A JP25199094A JPH07152559A JP H07152559 A JPH07152559 A JP H07152559A JP 6251990 A JP6251990 A JP 6251990A JP 25199094 A JP25199094 A JP 25199094A JP H07152559 A JPH07152559 A JP H07152559A
Authority
JP
Japan
Prior art keywords
instruction
register
pipeline
instructions
processor
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
JP6251990A
Other languages
English (en)
Other versions
JP3678444B2 (ja
Inventor
Mark Bluhm
ブルーム マーク
Raul A Garibay Jr
エイ ガリベイ ジュニア ロール
Steven C Mcmahan
シー マクマハン スチーブン
Baird Douglas
ベアード ダグラス
Mark Warden Hervin
ダブリュー ハーヴィン マーク
K Eitrheim John
ケイ アイトリーム ジョン
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.)
SAIRITSUKUSU CORP
Cyrix Corp
Original Assignee
SAIRITSUKUSU CORP
Cyrix 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 SAIRITSUKUSU CORP, Cyrix Corp filed Critical SAIRITSUKUSU CORP
Publication of JPH07152559A publication Critical patent/JPH07152559A/ja
Application granted granted Critical
Publication of JP3678444B2 publication Critical patent/JP3678444B2/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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3871Asynchronous instruction pipeline, e.g. using handshake signals between stages
    • 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/22Microcontrol or microprogram arrangements
    • G06F9/226Microinstruction function, e.g. input/output microinstruction; diagnostic microinstruction; microinstruction format
    • 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/3824Operand accessing
    • G06F9/383Operand 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/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/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/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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining

Abstract

(57)【要約】 【目的】 複数の命令パイプラインを備え、その各々
が、パイプラインへと発生された命令を処理する複数の
段を有しているスーパースカラー、スーパーパイプライ
ン式プロセッサを提供する。 【構成】 プロセッサは、発生される命令間のデータ依
存性に係わりなく多数のパイプラインへ命令を同時に発
生する。パイプコントロール手段は、パイプラインにお
ける命令間の依存性を検出し、パイプラインの段を通る
命令の流れを制御し、1つのパイプラインの現在段にお
ける第1命令を適切に処理するために別のパイプライン
の第2命令におけるデータ依存性を解明しなければなら
ないことがない限り、上記現在段の第1命令が上記デー
タ依存性によって遅延されないようにする。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、一般に、マイクロプロ
セッサに係り、より詳細には、パイプライン式スーパー
スカラーのマイクロプロセッサアーキテクチャに係る。
【0002】
【従来の技術】マイクロプロセッサの設計においては、
命令スループット、即ち1秒当たりに実行される命令の
数が第1に重要なものである。1秒当たりに実行される
命令の数は、種々の手段によって増加することができ
る。命令スループットを増加するための最も簡単な技術
は、マイクロプロセッサが動作する周波数を増加するこ
とである。しかしながら、作動周波数の増加は、製造技
術によって制限されると共に、過剰な発熱を招く。
【0003】従って、近代のマイクロプロセッサ設計
は、クロックサイクル周期当たりに実行される命令の平
均数を増加する設計技術を用いることにより命令スルー
プットを増加することに集中している。命令スループッ
トを増加するこのような1つの技術が「パイプライン」
である。パイプライン技術は、マイクロプロセッサを通
して流れる各命令を多数の部分にセグメント化し、その
各々をパイプラインの個別の段により取り扱うことがで
きる。パイプライン動作は、実行中に多数の命令をオー
バーラップすることによってマイクロプロセッサの速度
を増加する。例えば、各命令を6つの段階で実行するこ
とができそして各段階がその機能を実行するのに1つの
クロックサイクルを必要とする場合には、6つの個別の
命令を同時に実行し(各々がパイプラインの個別の段階
で実行される)、各クロックサイクルに1つの命令を完
了することができる。この考え方によれば、パイプライ
ン式アーキテクチャは、6個のクロックサイクルごとに
1つの命令を完了する非パイプライン式アーキテクチャ
よりも6倍も大きな命令スループットをもつことにな
る。
【0004】マイクロプロセッサの速度を高めるための
第2の技術は、マイクロプロセッサを「スーパースカラ
ー」として構成することである。スーパースカラーアー
キテクチャにおいては、クロックサイクル当たりに2つ
以上の命令が発行される。流れの中の他の命令に依存す
る命令がなければ、命令スループットの増加は、スカラ
ー性の程度に比例する。従って、アーキテクチャがレベ
ル2までスーパースカラーである(各クロックサイクル
に2つの命令が発行されることを意味する)場合には、
マシンの命令スループットが2倍となる。
【0005】マイクロプロセッサは、高い命令スループ
ットを得るためには、スーパーパイプライン式(多数の
段をもつ命令パイプラインを「スーパーパイプライン」
と称する)であると共にスーパースカラーとすることが
できる。しかしながら、このようなシステムの動作は、
実際には、各々の命令を所与の数のパイプ段で手際よく
実行でき且つ命令の実行が相互依存しないような理想的
な状態からかけ離れている。実際の動作においては、命
令は変化するリソース要求を有し、従って、パイプライ
ンを通る命令の流れに割り込みを生じる。更に、命令は
典型的に相互依存的であり、例えば、レジスタの値を読
み取る命令は、その同じレジスタに値を書き込む手前の
命令に依存し、第1の命令がレジスタへの書き込みを完
了するまで第2の命令を実行できない。
【0006】
【発明が解決しようとする課題】従って、スーパーパイ
プライン及びスーパースカラー技術は、マイクロプロセ
ッサのスループットを高めることはできるが、命令のス
ループットは、スーパーパイプライン式スーパースカラ
ーアーキテクチャの実施によって大きく左右される。1
つの特定の問題は、パイプラインにおける命令の流れを
制御することにより、マイクロプロセッサの周波数を増
加せずに命令スループットが高められることである。マ
イクロプロセッサの動作中に依存性又は他のファクタに
よって種々の段が不作動にされるので、スーパーパイプ
ライン式スーパースカラーマシンの効率が低下される。
【0007】それ故、命令の流れを効率的に制御できる
マイクロプロセッサアーキテクチャの必要性が生じてい
る。
【0008】
【課題を解決するための手段】本発明は、複数の命令パ
イプラインを備え、各パイプラインは、パイプラインへ
発生された命令を処理する複数の段を有しているような
スーパースカラー、パイプライン式のプロセッサに関す
る。
【0009】本発明の1つの特徴において、プロセッサ
は、発生される命令間のデータ依存性に係わりなく多数
のパイプラインへ命令を同時に発生する。パイプ制御手
段はパイプラインにおける命令間の依存性を検出し、そ
して1つのパイプラインの現在段における第1命令を適
切に処理するために別のパイプラインの第2命令におけ
るデータ依存性を解決しなければならないことがない限
り、上記現在段における第1命令が上記データ依存性に
よって遅延されないように、上記パイプラインの段を通
る命令の流れを制御する。
【0010】本発明の別の特徴においては、パイプ制御
手段は、所与の段に対し、シニア命令がもはや例外を生
じることがなくなる後までジュニア命令がシニア命令の
前にプロセッサ状態を変更できないように、パイプライ
ンにおける命令の流れを制御する。
【0011】本発明の別の特徴においては、パイプスイ
ッチ手段は、パイプラインにおける命令をあるシーケン
スで順序付けして命令間の依存性を減少するように、パ
イプライン間で命令を選択的に切り換えられるようにす
る。
【0012】本発明の別の特徴においては、パイプライ
ンの少なくとも2つが実行段を備えており、マイクロコ
ントローラ手段は、各実行段に独立したマイクロ命令の
流れを与え、選択的命令に対して、実行段が独立して制
御されて単一の命令を処理するように、各マイクロ命令
の流れを選択的に制御する。
【0013】本発明の別の特徴においては、パイプ制御
手段は、各段の状態情報を監視し、そしてパイプライン
における命令が他のパイプラインにおける命令流とは独
立してある段から別の段へ進み得るように、状態情報に
応答して段間の命令の流れを制御する。
【0014】本発明の別の特徴においては、パイプ制御
手段は、第1命令と第2命令との間の依存性を、その一
方の命令に対するオペランドソースを変更することによ
って排除する。
【0015】本発明の別の特徴においては、レジスタ変
換手段は、論理レジスタへの書き込みに応答してこれら
論理レジスタの各々に最も最近割り当てられている1組
の物理レジスタを定めるプロセッサ状態情報を維持す
る。パイプラインの各段において命令が例外を生じるか
どうかを決定する前にパイプラインに命令が発生された
ときに、その段において命令に対する状態情報がチェッ
クポイント処理され、命令が例外を生じる場合には、そ
れに対応するチェックポイント処理された状態情報が検
索されて、プロセッサ状態を、その命令を発生した点へ
と復帰させる。更に、パイプラインへ分岐又は浮動小数
点命令が発生され、そしてその後の命令がこのような分
岐又は浮動小数点命令の後で推論的に発生されるもので
ある場合には、このような分岐又は浮動小数点命令に対
する状態情報がチェックポイント処理されて、分岐の予
想を誤るか又は浮動小数点命令が失敗に終わった場合
に、それに対応するチェックポイント処理された状態情
報が検索されて、プロセッサ状態を、その分岐又は浮動
小数点命令を発生した点へと復帰させる。
【0016】本発明の別の特徴においては、定められた
1組の論理レジスタは、命令のためのオペランドのソー
ス及び行き先として多数のアドレス可能なサイズを有し
ている。レジスタ変換手段は、上記定められた1組の論
理レジスタの1つへ書き込む命令及びその論理レジスタ
に関連したサイズに応答して、その1つの論理レジスタ
へ物理レジスタを割り当てる。
【0017】本発明の別の特徴においては、レジスタ変
換手段は、各物理レジスタに対して現在指示及び論理I
Dコードを記憶し、これは、その物理レジスタがこのよ
うな論理IDコードによって識別された論理レジスタに
対する現在値を含んでいるかどうかを指示するものであ
る。論理レジスタへの各アクセスに対し、それに対応す
る論理IDコードが、物理レジスタと共に記憶された各
論理IDコードと比較され、そして対応する物理IDコ
ードが、その関連する論理レジスタの現在値を含む物理
レジスタに対して出力される。更に、レジスタ変換ユニ
ットは、各物理レジスタに対し、それに関連する論理レ
ジスタにデータ依存性が存在するかどうかを指示する状
態情報を記憶することができる。
【0018】本発明の別の特徴においては、少なくとも
1つの実行パイプラインは、マイクロコントローラ手段
によって制御される実行ユニットを備えている。選択さ
れた命令に対し、レジスタ変換ユニットも、マイクロコ
ントローラ手段によって制御される。
【0019】本発明の実施例は、次の技術的硬化の1つ
以上を実現するように実施される。命令は、それらの間
の依存性に係わりなく発生され、パイプラインに不必要
にバブルが入り込まないようにされる。というのは、依
存性は、通常の命令の流れによるか、又は依存性を解決
すためのパイプラインにおけるメカニズムにより、スト
ールを生じることなく、それ自体解決できるからであ
る。命令は、それらがもはや欠陥を生じることがなくな
った後に順序から外れて完了することができる。これ
は、完了のために多数のクロックサイクルを必要とする
マルチボックス命令の場合に特に効果的であり、さもな
くば、命令の流れを著しくストールすることになる。依
存性は、パイプライン間で命令を切り換えることによっ
て減少することができる。個別のパイプラインにおける
2つの実行ユニットは、2つの個別のマイクロ命令流を
用いて単一の命令を処理するよう個々に制御することが
でき、実行段又はマイクロシーケンサの複雑さを著しく
増加することもない。命令は、各実行パイプラインを経
て独立して進むことができ、依存性により生じるバブル
を命令の処理中に除去することができ、特に、リード・
アフタ・ライト(書き込み後の読み取り)依存性は、命
令の順序を変更するようにソースコードを再コンパイル
することなく排除される。これら全ての特徴及び効果
は、パイプラインの実行性能を最大にするよう働く。
【0020】本発明の実施例が次の技術的効果の1つ以
上を実現するように実施される他の領域は、次の通りで
ある。物理レジスタの各々への書き込み保留状態を維持
することにより、レジスタを割り当てそして状態情報を
与える制御が簡単にされる。物理レジスタに関する状態
情報をチェックポイント処理することにより、マイクロ
プロセッサは、例外、誤った予想分岐、浮動小数点エラ
ー又は他の命令エラーを生じた命令の後のプロセッサ状
態を単一クロックサイクル内に回復することができ、こ
れにより、このようなエラーからの回復におけるペナル
ティを相当に軽減することができる。多サイズの論理レ
ジスタに対しては、幾つかのデータ依存性を排除する一
方、多サイズレジスタを使用する既存の命令セットとの
適合性を維持するために、レジスタ再ネーミングがサポ
ートされる。物理レジスタは、最小限のハードウェアを
使用して論理レジスタの要求に応答して迅速に識別する
ことができる。物理レジスタに関連した状態情報を維持
することにより、データ依存性を容易に検出することが
できる。これらの特徴及び効果を得るのに使用されるレ
ジスタ変換ユニットは、選択された命令に対し、このよ
うな命令を処理する実行ユニットを制御するマイクロコ
ントローラにより(ハードウェア制御信号を用いる通常
の方法によるのではなく)直接制御することができる。
【0021】
【実施例】本発明及びその効果を完全に理解するため
に、添付図面を参照して以下に詳細に説明する。本発明
のマイクロプロセッサの模範的実施例の詳細な説明は、
次のように構成される。 1.模範的プロセッサシステム 1.1 マイクロプロセッサ 1.2 システム 2.一般化されたパイプラインの流れ 3.パイプライン制御 3.1 一般化されたストール制御 3.2 パイプの切り換え 3.3 マルチボックス命令 3.4 排他的命令 4.順序通りの命令通過/順序を外れた命令の完了 5.パイプの切り換え 6.依存性に関わりにない命令の発生 7.マルチスレッドのEX動作 8.レジスタ変換ユニット 8.1 レジスタ変換の概要 8.2 変換制御レジスタ 8.3 レジスタ割り当て 8.4 2つの行き先をもつ命令 8.5 推論的分岐実行のためのチェックポイントレジ
スタ 8.6 例外からの回復 8.7 レジスタ変換ユニットのマイクロコントロール 8.8 レジスタID変換及びハザード検出 9.送り 10. 結論
【0022】この構成テーブル及びこの詳細な説明で使
用する対応する見出しは、参照の便宜上設けられている
ものに過ぎない。マイクロプロセッサの従来又は既知の
観点の説明は、これを不必要に詳細にすることにより本
発明の説明を不明瞭にしない程度に省略する。
【0023】1.模範的プロセッサシステム 模範的プロセッサシステムが図1、2及び3に示されて
いる。図1及び2は、各々、模範的なスーパースカラ
ー、スーパーパイプライン型マイクロプロセッサと、2
つの実行パイプラインのパイプ段階との基本的な機能ブ
ロックを示している。図3は、マイクロプロセッサを使
用する模範的プロセッサシステム(マザーボード)設計
を示している。
【0024】1.1 マイクロプロセッサ 図1を参照すれば、マイクロプロセッサ10の主たるサ
ブブロックは、次のものを含む。(a)CPUコア2
0;(b)プリフェッチバッファ30;(c)プリフェ
ッチャ35;(d)BPU(分岐処理ユニット)40;
(e)ATU(アドレス変換ユニット)50;及び
(f)TAG RAM62を含む単一化した16Kバイ
トのコード/データキャッシュ60。256バイトの命
令ラインキャッシュ65は、単一化キャッシュへの命令
フェッチを減少するための一次命令キャッシュを構成
し、単一化キャッシュは、二次命令キャッシュとして働
く。オンボード浮動小数点ユニット(FPU)70は、
CPUコア20によってこれに発せられた浮動小数点命
令を実行する。
【0025】マイクロプロセッサは、内部32ビットア
ドレス及び64ビットデータバスADS及びDATAを
使用している。単一化キャッシュ60及び命令ラインキ
ャッシュ65の32バイトラインサイズに対応する25
6ビット(32バイト)プリフェッチバス(PFB)
は、32命令バイトの全ラインを単一のクロックにおい
て命令ラインキャッシュへ転送できるようにする。外部
32ビットアドレス及び64ビットデータバスへのイン
ターフェイスは、バスインターフェイスユニット(BI
U)を経て行われる。
【0026】CPUコア20は、2つの実行パイプX及
びYを有するスーパースカラー設計のものである。これ
は、命令デコーダ21と、アドレス計算ユニット22X
及び22Yと、実行ユニット23X及び23Yと、32
個の32ビットレジスタをもつレジスタファイル24と
を備えている。ACコントロールユニット25は、レジ
スタスコアボード及びレジスタ再ネーミングハードウェ
アをもつレジスタ変換ユニット25aを備えている。マ
イクロシーケンサ及びマイクロROMを含むマイクロコ
ントロールユニット26は、実行制御を与える。
【0027】CPUコア20からの書き込みは、12個
の32ビット書き込みバッファ29へ待ち行列され、書
き込みバッファの割り当ては、ACコントロールユニッ
ト25によって実行される。これらの書き込みバッファ
は、単一化キャッシュ60へ書き込むためのインターフ
ェイスを形成し、非キャッシュ処理書き込みは、書き込
みバッファから外部メモリへ直接送られる。書き込みバ
ッファロジックは、オプションの読み取りソース作用及
び書き込み集合作用をサポートする。
【0028】パイプコントロールユニット28は、実行
パイプを通る命令の流れを制御し、これは、命令が例外
を生じないことが決定されるまで命令の順序を保持し、
命令流におけるバブルを押しつぶし、そして誤って予想
された分岐及び例外を生じる命令の後に実行パイプをフ
ラッシュすることを含む。各段階に対し、パイプコント
ロールユニットは、どの実行パイプが最も初期の命令を
含むかを追跡し、「ストール」出力を与え、そして「遅
延」入力を受け取る。
【0029】BPU40は、分岐(行われる又は行われ
ない)の方向を予想し、そしてその予想された行われる
分岐及び流れ命令の無条件変更(ジャンプ、コール、リ
ターン)に対するターゲットアドレスを与える。更に、
このBPUは、分岐及び浮動小数点命令の場合には推論
的実行を監視し、即ち予想を誤ることのある分岐後に推
論的に発生される命令の実行、及びFPU70へ発生さ
れる浮動小数点命令であって推論的に発生された命令が
実行を完了した後に失敗となることのある浮動小数点命
令の実行を監視する。浮動小数点命令が失敗に終わった
場合、又は分岐が誤って予想された(これは、分岐に対
するEX又はWB段階まで分からない)場合には、実行
パイプラインは、その失敗となった又は予想を誤った命
令の点まで修理され(即ち、その命令の後に実行パイプ
ラインがフラッシュされ)、そして命令のフェッチが再
開されねばならない。
【0030】パイプラインの修理は、各パイプ段におい
て浮動小数点又は予想分岐命令がその段に入るときにプ
ロセッサ状態のチェックポイントを形成することにより
行われる。これらのチェックポイント検査される命令に
対し、その後の推論的に発生される命令によって変更さ
れ得る全てのリソース(プログラマが見ることのできる
レジスタ、命令ポインタ、条件コードレジスタ)がチェ
ックポイント検査される。チェックポイント検査される
浮動小数点命令が失敗に終わるか又はチェックポイント
検査される分岐が誤って予想された場合は、そのチェッ
クポイント検査された命令の後に実行パイプラインがフ
ラッシュされ、浮動小数点命令の場合には、これは、典
型的に、実行パイプライン全体をフラッシュすることを
意味し、一方、誤って予想された分岐の場合には、完了
することが許されたEXの対命令及びWBの2つの命令
があることを意味する。
【0031】模範的なマイクロプロセッサ10の場合
に、推論の程度についての主たる制約は、次の通りであ
る。(a)一度に4つまでの浮動小数点又は分岐命令に
対してのみ推論的実行が許される(即ち、推論レベルは
最大4である)。(b)書き込み又は浮動小数点の記憶
は、それに関連した分岐又は浮動小数点命令が解決する
(即ち、予想が正しいか又は浮動小数点命令が失敗に終
わらない)までキャッシュ又は外部メモリに対して完了
しない。
【0032】単一化キャッシュ60は、4方セット連想
(4kセットサイズをもつ)のもので、擬似LRU置換
アルゴリズムを使用し、ライトスルー及びライトバック
モードを有している。これは、クロック当たり2つのメ
モリアクセス(データ読み取り、命令フェッチ又はデー
タ書き込み)を許すためにデュアルポート式(バンク構
成による)にされている。命令ラインキャッシュは、完
全連想、ルックアサイド実施(単一化キャッシュに対し
て)のもので、LRU置換アルゴリズムを使用する。
【0033】FPU70は、4深さロード及び記憶待ち
行列をもつロード/記憶段と、変換段(32ビットない
し80ビットの拡張フォーマット)と、実行段とを備え
ている。ロードは、CPUコア20により制御され、そ
してキャッシュ処理記憶は、書き込みバッファ29によ
り指示される(即ち、各浮動小数点記憶動作に対して書
き込みバッファが割り当てられる)。図2を参照すれ
ば、マイクロプロセッサは、7段のX及びY実行パイプ
ラインを有し、即ち、命令フェッチ段IF、2つの命令
デコード段ID1、ID2、2つのアドレス計算段AC
1、AC2、実行段EX、及びライトバック段WBを有
している。複合命令デコードID及びアドレス計算AC
パイプ段は、スーパーパイプラインであることに注意さ
れたい。
【0034】IF段は、CPUコア20に連続的なコー
ド流を与える。プリフェッチャ35は、(一次)命令ラ
インキャッシュ65或いは(二次)単一化キャッシュ6
0のいずれかからプリフェッチバッファ30へ16バイ
トの命令データをフェッチする。BPU40は、プリフ
ェットアドレスでアクセスされ、そして予想される流れ
の変更に対してプリフェッチャへターゲットアドレスを
供給し、プリフェッチャが1つのクロック内に新たなコ
ード流へシフトできるようにする。
【0035】デコード段ID1及びID2は、可変長さ
のX86命令セットをデコードする。命令デコーダ21
は、各クロックごとにプリフェッチバッファ30から1
6バイトの命令データを検索する。ID1において、2
つの命令の長さがデコードされて(X及びYの実行パイ
プに対して各々1つづつ)、X及びY命令ポインタを
得、それに対応するX及びYバイト使用信号がプリフェ
ッチバッファへ返送される(これは、次いで、次の16
バイト転送のために増加する)。又、ID2において
も、流れの変更のような幾つかの命令形式が決定され、
即座及び/又は変位オペランドが分離される。ID2段
は、X及びY命令のデコード、マイクロROMに対する
エントリポイントの発生、及びアドレスモード及びレジ
スタフィールドのデコードを完了する。
【0036】ID段の間に、命令を実行するための最適
なパイプが決定され、命令がそのパイプへ発生される。
パイプの切り換えにより、ID2XからAC1Yへそし
てID2YからAC1Xへ命令を切り換えることができ
る。模範的な実施例については、流れ変更命令、浮動小
数点命令及び排他的命令のような幾つかの命令がXパイ
プラインのみへ発生される。排他的命令は、EXパイプ
段において失敗となることのある命令、及びある形式の
命令、例えば、保護モードセグメントロード、ストリン
グ命令、特殊なレジスタアクセス(制御、デバッグ、テ
スト)、乗算/除算、入力/出力、PUSHA/POP
A(プッシュオール/ポップオール)、及びタスクスイ
ッチを含む。排他的命令は、両パイプのリソースを使用
することができる。というのは、これらは、ID段のみ
から発生される(即ちこれらは他の命令と対にされな
い)からである。これらの発生制約を除くと、いかなる
命令も対にして、X又はYのいずれのパイプへ発生する
こともできる。
【0037】アドレス計算段AC1及びAC2は、メモ
リ参照のためのアドレスを計算し、そしてメモリオペラ
ンドを供給する。AC1段は、クロックごとに2つの3
2ビットリニア(3オペランド)アドレスを計算する
(比較的稀である4つのオペランドアドレスは、2つの
クロックを必要とする)。このパイプ段の間に、データ
依存性もチェックされそしてレジスタ変換ユニット25
a(レジスタスコアボード及びレジスタ再ネーミングハ
ードウェア)を用いて分析され、32個の物理レジスタ
24は、X86アーキテクチャで定められた8個の汎用
のプログラマから見える論理レジスタをマップするのに
使用される(EAX、EBX、ECX、EDX、ED
I、ESI、EBP、ESP)。AC2段の間に、レジ
スタファイル26及び単一化キャッシュ70は、物理ア
ドレスでアクセスされ(キャッシュヒットの場合には、
デュアルポート式の単一化キャッシュのためのキャッシ
ュアクセス時間は、レジスタのアクセス時間と同じであ
り、レジスタセットを効果的に拡張する)、物理アドレ
スは、リニアアドレスであるか、或いはアドレス変換が
イネーブルされた場合には、TLB60によって発生さ
れた変換されたアドレスである。
【0038】ACユニットは、8個のアーキテクチャ
(論理)レジスタ(X86で定められたレジスタセット
を表す)を備えており、これらは、アドレス変換のため
のレジスタオペランドをアクセスする前にレジスタ変換
ユニットAC1のアクセスに必要な遅延を回避するよう
にACユニットによって使用される。アドレス変換を必
要とする命令については、AC1は、アーキテクチャレ
ジスタをアクセスする前にこれらアーキテクチャレジス
タの所要データが有効になる(リード・アフタ・ライト
の依存性がない)まで待機する。AC2段の間に、レジ
スタファイル24及び単一化キャッシュ60を物理アド
レスでアクセスすることによりソースオペランドが得ら
れ(キャッシュヒットの場合には、デュアルポート式の
単一化キャッシュのためのキャッシュアクセス時間は、
レジスタのアクセス時間と同じであり、レジスタセット
を効果的に拡張する)、物理アドレスは、リニアアドレ
スであるか、或いはアドレス変換がイネーブルされた場
合には、ATU50によって発生された変換されたアド
レスである。
【0039】変換されたアドレスは、メモリのページテ
ーブル及びチップ上のワークスペース制御レジスタから
の情報を用いてリニアアドレスからATU(TLB又は
変換ルックアサイドバッファを用いた)によって発生さ
れる。単一化キャッシュは、仮想インデックスされると
共に物理的にタグが付けられていて、アドレス変換がイ
ネーブルされたときには、変換されていないアドレス
(AC1の終わりに得られる)でセットの選択を行うこ
とができ、そして各セットに対し、ATUからの変換さ
れたアドレス(AC2において初期に得られる)でタグ
の比較を行うことができる。セグメント化及び/又はア
ドレス変換違反のチェックも、AC2で行われる。
【0040】命令は、それらが例外を生じないと決定さ
れるまではプログラム順序に保たれる。ほとんどの命令
に対し、この決定は、AC2の間又はその前に行われ、
浮動小数点命令及びある排他的命令は、実行中に例外を
生じることがある。命令は、AC2からEXへ順次に通
され(又は浮動小数点命令の場合はFPU70へ)、E
Xにおいて依然として例外を生じることのある整数命令
は、排他的と示され、それ故、単独で両方の実行パイプ
へ発生されるので、しかるべき順序での例外の取り扱い
が確保される。
【0041】実行段EXx及びEXyは、命令により定
められた動作を実行する。命令は、EXにおいて可変数
のクロックを消費し、即ち順序がずれて実行することが
許される(順序ずれ完了)。両方のEX段は、加算、論
理及びシフト機能ユニットを備え、そして更に、EXx
段は、乗算/除算ハードウェアを含む。
【0042】ライトバック段WBは、レジスタファイル
24、条件コード、及びマシン状態の他の部分を既に実
行された命令の結果で更新する。レジスタファイルは、
WBのフェーズ1(PH1)に書き込まれ、そしてAC
2のフェーズ2(PH2)に読み取られる。
【0043】書き込みバッファ27、推論的実行及びマ
イクロシーケンサについての付加的な開示は、本発明と
同日に出願されたガリベイ氏等の「書き込みバッファを
もつマイクロプロセッサにおける推論的実行及び例外処
理のためのデータの制御(Control of Data for Specula
tive Execution and Exception Handling in a Micropr
ocessor with Write Buffer)」と題する米国特許出願;
本発明と同日に出願されたマクマホン氏の「分岐処理ユ
ニット(Branch Processing Unit)」と題する米国特許出
願;本発明と同日に出願されたブラハム氏の「パイプラ
イン式プロセッサにおける推論的実行(Speculative Exe
cution in a Pipelined Processor)」と題する米国特許
出願;及び本発明と同日に出願されたハービン氏等の
「単一クロック命令デコードアーキテクチャを有するマ
イクロプロセッサ(MicroprocessorHaving Single Clock
Instruction Decode Architecture)」と題する米国特
許出願に見ることができ、これらは全て参考としてここ
に取り上げる。
【0044】1.2 システム 図3を参照すれば、模範的な実施例として、マイクロプ
ロセッサ10は、単一チップのメモリ及びバスコントロ
ーラ82を含むプロセッサシステムに使用される。メモ
リ/バスコントローラ82は、マイクロプロセッサと外
部メモリサブシステム−−レベル2キャッシュ84及び
メインメモリ86−−との間のインターフェイスを形成
し、64ビットプロセッサデータバス(PD)上でのデ
ータの移動を制御する(データ路はコントローラの外部
であり、ピンの本数及びコストを低減する)。
【0045】コントローラ82は、32ビットアドレス
バスPADDRに直接インターフェイスし、コントロー
ラ内のレジスタを読み取ったり書き込んだりするための
1ビット巾のデータポート(図示せず)を備えている。
両方向性の分離バッファ88は、マイクロプロセッサ1
0と、VL及びISAバスとの間のアドレスインターフ
ェイスを形成する。
【0046】コントローラ82は、VL及びISAバス
インターフェイスの制御を行う。VL/ISAインター
フェイスチップ91(HT321のような)は、32ビ
ットVLバス及び16ビットISAバスへの標準インタ
ーフェイスを形成する。ISAバスは、BIOS92、
キーボードコントローラ93、I/Oチップ94及び標
準ISAスロット95へインターフェイスする。インタ
ーフェイスチップ91は、二重の高/低ワード〔31:
16〕/〔15:0〕分離バッファにより形成された両
方向性32/16マルチプレクサ96を経て32ビット
VLバスへインターフェイスする。VLバスは、標準V
Lスロット97へインターフェイスし、そして両方向性
分離バッファ98を経て64ビットプロセッサデータバ
スの下位ダブルワード〔31:0〕へインターフェイス
する。
【0047】2.一般化されたパイプラインの流れ 図4は、パイプラインを通る8個の命令の流れを示すも
ので、2パイプラインアーキテクチャに対するオーバー
ラップした命令実行を示している。付加的なパイプライ
ンと、各パイプラインに対する付加的な段とを設けるこ
とができる。好ましい実施例において、マイクロプロセ
ッサ10は、システムクロック信号124の倍数である
内部クロック122を使用している。図4において、内
部クロックはシステムクロックの周波数の2倍で動作す
るものとして示されている。
【0048】第1内部クロックサイクル126の間に、
ID1は、各命令X0及びY0に基づいて動作する。内
部クロックサイクル128の間に、命令X0及びY0は
ID2段にあり(X0はID2xそしてY0はID2y
にあり)、ID1段には命令X1及びY1がある。内部
クロックサイクル130の間には、ID1に命令X2及
びY2があり、ID2に命令X1及びY1があり(X1
はID2xにそしてY1はID2yにあり)、そしてA
C1段に命令X0及びY0がある(X0はAC1xにそ
してY0はAC1yにある)。内部クロックサイクル1
32の間には、ID1段に命令X3及びY3があり、I
D2段に命令X2及びY2があり、AC1段に命令X1
及びY1があり、そしてAC2段に命令X0及びY0が
ある。これらの命令は、X及びYパイプラインの段を経
て順次流れ続ける。
【0049】クロック134ないし140に示されたよ
うに、各命令の実行部分は、順次クロックサイクルにお
いて実行される。これは、パイプライン式アーキテクチ
ャの主たる利点であり、個々の命令の実行時間を減少せ
ずに、クロック当たりに完了される命令の数が増加され
る。従って、ハードウェアの速度に対する大きな需要と
共に大きな命令スループットが達成される。
【0050】図4に示す命令の流れは、最適な場合であ
る。図示されたように、2つ以上のクロックサイクルを
必要とする段はない。しかしながら、実際のマシンで
は、1つ以上の段が完了のために付加的なクロックサイ
クルを必要とし、他のパイプ段を通る命令の流れを変更
する。更に、一方のパイプラインを通る命令の流れは、
他方のパイプラインを通る命令の流れによって左右され
る。
【0051】多数のファクタにより1つ又は全てのパイ
プラインの種々の段に遅延が生じることがある。例え
ば、メモリへのアクセスがメモリキャッシュにおいて失
敗し、1クロックで命令を処理するに必要な時間にデー
タをアクセスするのを妨げることがある。これは、デー
タがメインメモリから検索されるまでEX段の片側又は
両側が遅れることを必要とする。ある命令は、ここに示
す実施例では1つの実行段(X実行パイプのEXX)に
しかない乗算器のようなハードウェアリソースを必要と
する。この場合には、リソースが使用できるまでその段
が遅れることになる。データ依存性も遅延を生じること
がある。ある命令が加算のような手前の命令の結果を必
要とする場合には、その命令が実行ユニットによって処
理されるまで待機しなければならない。
【0052】「マルチボックス」命令、即ち多数のマイ
クロ命令を用いて実行され、従って完了するのにEXパ
イプ段に2つ以上のクロックサイクルを必要とする命
令、によって他の遅延が生じる。これらの命令は、ID
2段の出力においてパイプラインを通るその後の命令の
流れを停止する。
【0053】パイプラインを通る命令の流れは、パイプ
コントロールユニット28によって制御される。好まし
い実施例では、両方(又は全て)のパイプを通る命令の
流れを制御するのに単一のパイプコントロールユニット
28が使用される。パイプを通る命令の流れを制御する
ために、パイプコントロールユニット28は、パイプラ
イン102及び104を含む種々のユニットからの「遅
延」信号を受け取り、そして種々のユニットへ「ストー
ル」信号を発行する。
【0054】X及びYの両パイプラインに対して単一の
パイプコントロールユニット28が使用されるので、パ
イプライン自体は互いに独立して制御される。換言すれ
ば、Xパイプラインのストールが必ずしもYパイプライ
ンのストールを生じることはない。
【0055】3.パイプライン制御 図5は、パイプライン段間における段間通信を示してい
る。これらの段は、段N−1、段N、及び段N+1と任
意に示されている。各段は、パイプコントロールユニッ
ト(パイプコントローラ)28からの独特の入力STA
LLと、出力DELAYとを有する。DELAY出力
は、その段がそこに含まれた命令を完了するのに少なく
とももう1つのクロックを必要とする場合にイネーブル
される。各パイプラインに対し、パイプコントロールユ
ニット28は、パイプ段が「終了」であるかどうかをD
ELAY信号に基づいて決定する。段は、その命令を後
続段へ通す準備ができた場合に「終了」である。段への
STALL入力は、その段が命令を後続パイプ段へ転送
できない場合にパイプコントロールユニット28によっ
てイネーブルされる。というのは、その後続段が遅延又
はストールされるからである。好ましい実施例では、パ
イプライン段は、それが遅延されない(即ち、DELA
Y信号が偽である)場合にのみストールされる。
【0056】「有効」パイプ段は、進行中又は完了した
命令を含んでいる段である。無効パイプ段は、命令を含
まない。無効パイプ段は、「バブル」を含むと言える。
「バブル」は、ID1及びID2段が、AC1及びAC
2段112及び114を完全に空にするに充分なほど命
令をデコードできないときに、パイプライン100の前
端において形成される。又、バブルは、パイプ段がその
命令を後続段へ転送しそしてその手前の段が遅れるとき
にも形成される。パイプ段が段の有効性を指示するビッ
トを入力も出力もしない間に、その段のバブルがパイプ
ラインコントロールユニット28によって追跡される。
【0057】ある場合には、パイプ段におけるバブルが
手前の段からの命令によってオーバーライトされ、これ
は「スリップ」と称される。又、パイプ段は、後続パイ
プ段に例外状態があるために完了すべきでない命令を含
む場合には、「フラッシュ」することもできる。信号F
LUSHは各パイプ段への入力である。パイプ段は、そ
の命令がエラー状態のために完了できずそして現在段を
越えて転送してはならない場合に「例外」を発生する。
例外は、全ての命令に対し、IF段106、ID1及び
ID2段、並びにAC1及びAC2段に生じ得る。「排
他的」命令と示される幾つかの命令は、実行段116に
例外を生じることがある。更に、浮動小数点命令につい
ても、例外が生じ得る。
【0058】3.1 一般化されたストール制御 一般的な場合において、パイプコントローラは、パイプ
ラインの段が有効であって遅れがないが次の段が遅れる
か又はストールされる場合に、その段をストールする。
これは、段Nについて論理的に表すと、次のようにな
る。 STALLN =vN ・!dN ・(dN+1 +STALLN+1 ) 但し、vN は、段Nが有効である場合に真であり、dN
は、段Nに対するDELAYが真である場合に真であ
り、そして!は、後続項が否定されることを表す。
【0059】6段のパイプラインについては、次のよう
に表すことができる。 STALL6 =偽 STALL5 =v5 ・!d5 ・d6 STALL4 =v4 ・!d4 ・(d5 +v5 ・!d5 ・d6 ) STALL3 =v3 ・!d3 ・(d4 +v4 ・!d4 ・ (d5 +v5 ・!d5 ・d6 )) STALL2 =v2 ・!d2 ・(d3 +v3 ・!d3 ・ (d4 +v4 ・!d4 ・(d5 +v5 ・!d5 ・d6 ))) STALL1 =v1 ・!d1 ・(d2 +v2 ・!d2 ・(d3 +v3 ・!d3 ・(d4 +v4 ・!d4 ・(d5 +v5 ・!d5 ・d6 ))))
【0060】パイプコントロールユニット28は、パイ
プラインの段をストールするときには、他のパイプライ
ンの対応段は必ずしもストールしない。他の段がストー
ルされるかどうかは、以下に述べるように、命令のシー
ケンス及び他のファクタによって左右される。
【0061】3.2 パイプの切り換え 上記の一般的なモデルは、命令が入るパイプに命令が流
れるようなアーキテクチャに対して機能するが、図3に
示すようにパイプ間で命令を切り換えることができると
きには、更に複雑な制御構造が必要とされる。切り換え
が生じるかどうかを判断するメカニズムを以下に詳細に
説明する。
【0062】好ましい実施例では、パイプコントロール
ユニット28は、命令がAC2段からEX段へ送られる
まで命令を「プログラム順序」に(或いは「順序通り」
に)保持する。「順序通り」とは、「ジュニア」命令が
パイプライン段において「シニア」命令を越えることが
できない(マイクロプロセッサによって受け取られた命
令のシーケンスにおけるジュニア命令の位置はシニア命
令の後である)ことを意味するが、ジュニア命令がシニ
ア命令と同じ段にあってもよい。従って、命令I
T+1 (ジュニア命令)がAC1X にある間に、命令IT
(シニア命令)がAC1y に存在することはあるが、I
T がAC2y に進むまでIT+1 はAC2x に進むことは
できない。しかし、IT は、IT+1 の進むのを待機せず
に進むことができる。
【0063】IF段及びID1段の逐次性により、命令
は、これら2つの段内では順序が狂うことはない。しか
しながら、ID2、AC1及びAC2段を通る命令の流
れは一般的なストールメカニズムに対して変更を必須と
する。この状態における命令流の制御を助けるために、
パイプコントロールユニット28は、各パイプ段に対し
て制御信号XFIRSTを維持する。特定の段に対しX
FIRSTが真であれば、Xパイプラインのこの段にお
ける命令は、Yパイプラインの対応段における命令に対
してシニアである。2つのパイプラインをもつここに示
す実施例では、XFIRSTは、特定段の2つの命令に
ついてどちらのパイプラインがシニアであるかを指示
し、3つ以上のパイプラインをもつ実施例では、XFI
RSTは、各段の各命令について相対的にシニアである
ことを指示する。
【0064】ID2ユニットの出力において、パイプコ
ントロールユニットは、命令をAC1x 又はAC1y
いずれかへ進めることができるかどうかを判断しなけれ
ばならない。シニア命令は、(それが有効であって遅れ
がないと仮定すれば)いずれかのパイプラインの後続段
に遅れがなく又はストールされなければ、進めることが
できる。ジュニア命令は、(それが有効であって遅れが
ないと仮定すれば)他方のパイプラインの対応段におけ
るシニア命令に遅れもストールもない場合にのみ進める
ことができる。これは、論理的に、次のように表され
る。 st3X=v3X・(d3X+d4X+STALL4X) st3Y=v3Y・(d3Y+d4Y+STALL4Y) 但し、st3 は、対応するパイプラインがID2段又は
それ以降においてストール又は遅延するかどうかを指定
するものである。 STALL3X=v3X・!d3X・(d4X+STALL4X)+!XFIRST3 ・ st3Y STALL3Y=v3Y・!d3Y・(d4Y+STALL4Y)+!XFIRST3 ・ st3X
【0065】3.3 マルチボックス命令 各パイプラインのEX段は、マイクロROMからのマイ
クロ命令によって他のEX段とは独立して制御される。
多数の命令が単一のマイクロ命令で実施され、ひいて
は、単一のクロックサイクル中にEX段に通されるが、
ある命令は、それらの実行に多数のマイクロ命令を必要
とし、ひいては、それを完了するのに2つ以上のクロッ
クサイクルを必要とする。これらの命令を「マルチボッ
クス」命令と称する。
【0066】マイクロROMは、マルチボックス命令の
実行中に同じパイプラインの別の命令によってアクセス
できないので、マルチボックス命令に対する最後のマイ
クロROMアクセスの後まで、パイプのID2段からパ
イプのAC1段まで新たな命令を通すことができない。
これは、AC1中にマイクロROMがアクセスされるこ
とによるものである。マルチボックス命令がその最後の
マイクロ命令を読み取るときに、その後の命令がマイク
ロROMをアクセスしてAC1に入ることが許され、従
って、バブルが生じることはない。
【0067】パイプラインのID2段がID1段から命
令を受け取るときには、命令がマルチボックス命令であ
るかどうかをデコードする。パイプコントロールユニッ
ト28は、マルチボックス命令がマイクロROMで終了
されるまでID2段をストールする。EX段は、UDO
NE信号によりマルチボックス命令の終わりを知らせ
る。マルチボックス命令をサポートするのに必要な制御
は、次の通りである。 st3X=!d3x・v3X・(d4X+STALL4X+MULTIBOX4X・ !UDONE4X) st3Y=!d3Y・v3Y・(d4Y+STALL4Y+MULTIBOX4Y・ !UDONE4Y) STALL3X=st3X+!XFIRST3 ・st3Y STALL3Y=st3Y+!XFIRST3 ・st3X
【0068】マルチボックス命令は、AC1、AC2及
びEXのリソースを使用することができる。マルチボッ
クス命令に関する付加的なパイプ制御は、図26ないし
27について説明する。図26において、I0 は、Xパ
イプラインのEX段にあり、そしてマルチボックス命令
1 は、AC2(I1a)とAC1(I1b)段にある。パ
イプコントロールユニットの観点から、マルチボックス
命令I1 は単一命令として処理され、そしてマルチボッ
クス命令により占有された段に遅延があると、マルチボ
ックス命令に関連した全ての段をストールさせる。従っ
て、たとえパイプラインにおいてI1aがI1bの前にあっ
ても、I1bの遅延はI1aをストールさせる。これは、1
つの段における遅延がその後続段にストールを生じさせ
る唯一の状態である。
【0069】パイプコントロールユニット28は、各マ
イクロ命令に関連したヘッドビットを使用することによ
り命令間の境界を追跡する。ヘッドビットは、たとえ命
令が1ボックス命令であっても、マイクロ命令がその命
令の第1マイクロ命令であるかどうかを指示する。ヘッ
ドビットが所与のマイクロ命令に対して真でない場合に
は、それが第1のマイクロ命令ではない。パイプライン
内の各マイクロ命令に対してヘッドビットをチェックす
ることにより、パイプコントロールユニットは命令間の
境界を決定して、それに応じて段をストールすることが
できる。
【0070】3.4 排他的命令 好ましい実施例に使用される別の形式の命令は、「排他
的」命令である。EX段において実行される間に例外を
生じるおそれのある命令は、排他的と称する。例外につ
いては以下で詳細に述べる。多数のメモリアクセスを要
求する命令は、このようなアクセス中に例外を生じるこ
とがあるので、排他的と表される。他の命令も、制御レ
ジスタ又はメモリマネージメントレジスタを変更したり
又は1つの実行パイプにしか使用できない乗算ハードウ
ェアのようなリソースを使用するので、排他的と表され
る。排他的命令は、単一ボックス又はマルチボックスの
いずれでもよい。排他的命令は、マシンの状態に対する
排他的命令の影響によるか又は両EXユニットの使用が
この命令にとって有益であることから、単独で実行され
ねばならない(即ち、他のパイプの対応段には他の命令
が使用されない)。EX段に例外を生じることのある排
他的命令は、例えば、0で除算するエラーを生じること
のあるDIV(除算)や、PUSHAのようにEX段の
間にメモリアクセスを実行しなければならない命令であ
る。486個の命令セットの中からの排他的命令の他の
例は、次の通りである。ARPL、BOUND、CAL
L、CLC、CLD、CLI、CLTS、CMC、CM
PS、DIV、ENTER、HLT、IDIV、IMU
L、IN、INS、INT、INTO、INVD、IN
VLPG、IRET、LAHF、LAR、LEAVE、
LGDT、LIDT、LGS(PM)、LSS(P
M)、LDS(PM)、LES(PM)、LFS(P
M)、LLDT、LMSW、LODS、LSL、LT
R、MOV(SR)、MOVS、MUL、OUT、OU
TS、POPA、POPF、POP MEM、PUSH
A、PUSHF、PUSH MEM、RET、SAH
F、SCAS、SGDT、SIDT、SLDT、SMS
W、STC、STD、STI、STOS、STR、VE
RR、VERW、WAIT及びWBINVD。但し、
「PM」は、保護モード命令を表し、そして「SR」
は、特殊なレジスタ又は制御レジスタを用いた命令を表
している。
【0071】ID1段は、どの命令が排他的であるかを
デコードする。パイプコントロールユニット28は、A
C1x 及びAC1y の両方の段が使用できるまでID2
段において排他的命令をストールする。
【0072】図27は、排他的マルチボックス命令の遅
延の影響を示している。排他的マルチボックス命令は、
X及びYの両パイプラインに対し、EX、AC2及びA
C1段を占有する。排他的マルチボックス命令により占
有されたいずれかの段が遅延する場合には、反対のパイ
プラインの対応段も遅延し、マルチボックス命令に関連
した他の段は、マルチボックス命令を一緒に保持するた
めにパイプコントロールユニットによってストールされ
る。従って、命令Ixbが遅延する場合は、Iybも遅延
し、そしてIxa、Iya、Ixc及びIycはストールされ
る。排他的マルチボックス命令では、各パイプラインご
とに1つづつ2つのヘッドビットを用いて、命令の開始
が指示される。
【0073】4.順序通りの命令通過/順序を外れた命
令の完了 図1及び2を参照すれば、上記したように、命令は、A
C2段からEX段へと通過するまでパイプコントロール
ユニット28によって順序通りに維持される。命令は、
その命令に対して実行がいったん開始すると、EX段へ
「通過」されると考えられる。というのは、命令に対す
るポインタを変更するといった次の段へ進むことに関連
した幾つかの予備的な手順が、全ての例外が報告される
前に行われるからである。
【0074】命令がAC2段からEX段へ通過すると、
命令が順序づれして実行されるのを防止するリソース又
はデータ依存性がない限り、順序づれして実行を完了す
ることができる(即ち、シニア命令の前にジュニア命令
をライトバック段へと継続することができる)。例え
ば、リード・アフタ・ライト(RAW)依存性は、この
依存性がクリアされるまで命令がそのEX段を完了する
のに防止する。従って、ADD AX,BXのような命
令は、手前のADD BX,CXの実行が完了するまで
そのEX段を完了できない。というのは、オペランドB
Xが手前の命令に基づいているからである。
【0075】しかしながら、シニア命令に依存性をもつ
ことなくEX段へ通過するジュニア命令は、完了するこ
とができ、それ故、多くの命令は、反対のEX段に多数
のクロック周期を必要とするシニア命令を通過すること
ができる。好ましい実施例のこの観点は、命令スループ
ットを大巾に増大する。
【0076】好ましい実施例では、命令は、例外を生じ
ることがなくなるまで、順序通りに維持される。例外は
プログラムエラーによって生じ、その例外を生じた命令
が完了する前に報告される。命令の完了の前に例外を報
告することにより、プロセッサは、命令を再スタートで
きると共にその欠陥命令の影響を無効にすることのでき
る状態に保たれる。例外は、例えば、0で除算するエラ
ー、無効のOPコード及びページ欠陥を含む。デバッグ
例外も、データブレークポイント及び単一ステップ動作
を除いて、例外として処理される。例外サービスルーチ
ンの実行後に、命令ポインタは、その例外を生じた命令
を指し、典型的に、命令は再スタートされる。
【0077】例外を生じることのある命令は、再スター
ト可能でなければならない。従って、例外が生じた場合
には、マシンの状態が、命令をスタートする前の状態に
回復されねばならない。従って、例外を生じた命令及び
その後の命令によってマシンの状態が変更されてはなら
ない。典型的に、命令の再スタートは、レジスタファイ
ルの状態をリセットし、そしてスタックポインタ、命令
ポインタ及びフラグを復帰することを伴う。ほとんどの
例外はAC2段で生じるので、例外はAC2段の出力に
おいてアサートされる(EX段で例外を生じる排他的命
令を除き)。命令は、ID1段で再スタートされる。
【0078】例外を生じる命令が、対応するAC2段の
命令(隣接命令)に対してジュニアである場合には、そ
の隣接命令がEX段へと継続される。しかしながら、例
外を生じる命令がシニア命令である場合には、両方の命
令を再スタートしなければならない。換言すれば、マシ
ンの状態は、例外を生じる命令によって生じた変化の前
に存在した状態であってプログラムシーケンスにおいて
その手前にある命令をパイプラインに通し続けられる状
態へ回復しなければならない。
【0079】好ましい実施例では、非排他的なマルチボ
ックス命令が一方のパイプラインにおいて実行される場
合に、そのマルチボックス命令の実行中に他方のパイプ
ラインに多数の命令が流れることがある。マルチボック
ス命令は、AC1、AC2及びEX段を使用するので、
そのマルチボックス命令に対するヘッドビットを有する
マイクロ命令を処理する段のみが順序を保つ。従って、
AC1及びAC2は、これらの段がヘッドビットをもつ
マイクロ命令を含まない場合は、ジュニア命令が進むの
を防止しない。命令が流れ続けることができるかどうか
を制御する2つのファクタは、(1)マルチボックス命
令がジュニア命令とのデータ依存性を生じるかどうか、
又は(2)マルチボックス命令がジュニア命令とのリソ
ース依存性を生じるかどうかである。
【0080】リソース依存性は、シニア命令により使用
されているリソースをジュニア命令が必要とするときに
生じる。例えば、好ましい実施例では、EXユニットに
対する面積を減少するために、XパイプのEXユニット
しか乗算器を有していない。マルチボックス命令がX側
のEXユニットで作用する場合には、乗算器を必要とす
るその後の命令は、シニア命令が完了するまで実行でき
ない。
【0081】図6は、AC2段からEX段への命令の通
過及びEX段の完了に関するパイプコントロールユニッ
ト28の一般的動作を示すフローチャートである。パイ
プコントローラは、命令がその現在段(又はそれを越え
て)例外を生じ得るかどうか判断する(200)。もし
そうでなければ、命令は、シニア命令の前に完了するこ
とができる(202)(これらシニア命令がもはや例外
を生じることがない限りは)。命令がまだ例外を生じる
ことがある場合には、パイプコントローラは、全てのシ
ニア命令がマイクロプロセッサの状態に対してそれらの
変更を行ってしまうまで、その命令がマイクロプロセッ
サの状態を変更できないようにする(204)。換言す
れば、命令がもはや例外を生じなくなるまで、全ての状
態変更はプログラム順序でなされる。
【0082】上記した更に特定の場合には、流れ図のブ
ロック204は、AC2段を通る命令のプログラム順序
を維持することによって実施される。X86命令セット
のほとんどの命令については、命令がAC2段により例
外を生じるかどうか判断することができる。EX段にお
いて例外を生じることが許される排他的命令は、EX段
においてのみ実行され、例外が生じた場合にはマシンの
状態が復帰される。
【0083】上記の説明では、命令は、もはや例外を生
じることのない点を通して順序が保たれたが、より一般
的なパイプ制御方法は、命令がプロセッサの状態を変更
することがない限り、命令を順序づれして進められるよ
うにする。
【0084】5.パイプの切り換え 図1及び2を参照すれば、パイプコントロールユニット
28は、命令がID2段の後にパイプライン間で切り換
わるかどうかを制御する。従って、命令は、パイプコン
トロールユニット28の制御のもとでパイプラインを経
てID2x からAC1x 又はAC1y のいずれかへそし
てID2y からAC1x 又はAC1y のいずれかへ進
む。
【0085】好ましい実施例では、パイプコントロール
ユニット28は、どちらのパイプX又はYが命令を出す
かをある基準に基づいて判断する。第1の基準は、一方
のパイプラインが除去することのできるバブルを有する
かどうかである。もしそうであれば、パイプラインは、
ID2段における命令の最もシニアなものをそのパイプ
ラインへ移動するよう試みる。従って、AC1x が有効
で、AC1y が無効でそしてID2X における命令がI
D2段における2つの命令のシニアである場合には、パ
イプコントロールユニット28は、その命令をID1x
からAC1y へ転送する。
【0086】第2の基準は、パイプラインにおける新た
なバブルの発生を防止することである。バブルの発生を
防止するために、パイプコントロールユニット28は、
従属命令が遅延される場合にその命令の従属対が他の命
令に影響を及ぼさないように試みる。これを行うため
に、好ましい実施例では、パイプコントロールユニット
28は、プログラム順序における隣接命令がパイプライ
ンにおいて互いに他の上に来ないように保つ。
【0087】図7はこの問題を示している。時間T1
おいて、命令I1 はEXx にあり、命令I2 はEXy
あり、命令I3 はAC2y にありそして命令I4 はAC
xにある。I2 は、I1 においてリード・アフタ・ラ
イト依存性を有し、換言すれば、命令I2 がEXy 段に
おいて適切に処理されるためには、EXx 段における命
令I1 の結果を待機しなければならない。例えば、I1
は、ADD AX,BX命令であり、そしてI2 は、A
DD AX,CX命令である。I2 は、I1 が完了する
までそのオペランドの一方が準備できないので完了し得
ない。時間T2に、I1 が完了し、EXx にバブルを残
す。I2 はEXy において実行される。I3 は、I2
完了するまでEX段へ進むことができない。I4 は、I
3 のジュニアであるからEX段へ進むことができず、上
記のように、命令は、EX段に入るまではシニア命令を
越えて進むことができない。
【0088】隣接命令がパイプラインにおいて互いに他
の上に来ないようにプログラム順序に維持する結果が図
8に示されている。この例では、パイプコントロールユ
ニット28は、時間T1 においてAC2の対を、I3
AC2x にありそしてI4 がAC2y にあるように順序
付けする。命令をこのように順序付けする理由は、Yパ
イプラインにおいてI3 がI2 の上にならないよう防止
することである。従って、時間T2 に、I1 はEX段を
完了し、そしてライトバック段へ移動する。ここで、I
3 がEXx へ移動することができ、従って、EXx にバ
ブルが発生するのを防止する。同様に、I5 がAC2x
へ移動できる。
【0089】ある場合には、パイプコントロールユニッ
ト28は、隣接命令をパイプラインにおいて互いに他の
上に置かねばならない。一般に、この状態は、Xのみの
命令によって生じ、これは、Xパイプラインに入れられ
ねばならないか、又はパイプコントロールユニット28
がバブルを除去する必要があるために、所望の順序での
攪拌を必須とするものである。図9はこのような状態を
示している。時間T1に、I1 及びI2 は、各々EXx
及びEXy にあり、I3 及びI4 は、各々AC2x 及び
AC2y にあり、I5 及びI6 は、各々AC1y 及びA
C1x にある。というのは、I6 はXのみの命令だから
である。それ故、パイプコントロールユニット28は、
6 をAC1x に入れるよう強制されるが、たとえその
ようにしても、YパイプラインにおいてI5 がI4 の上
に来るように強制される。I7 とI8 は各々ID2x
ID2y にある。I4 は、I3 においてリード・アフタ
・ライト依存性を有し、I6 は、I5 においてリード・
アフタ・ライト依存性を有する。時間T2 に、I1 及び
2 は、WB段へ移動され、I3 及びI4 は、EX段へ
移動されている。I6 は、AC2x へ移動され、そして
5 は、AC2y へ移動されている。それ故、パイプコ
ントロールユニット28は、I7 及びI8 がパイプライ
ンを切り換えて、I7 がXパイプラインにおいてI6
上に来ないよう防止することができる。I9 及びI
10は、ID2へ移動される。
【0090】時間T3 において、I3 は、EXx で完了
して、EXy へ移動し、そしてI4は、その動作を完了
するためにEXy に留まる。図7について上記したよう
に、I5 もI6 も、いずれのパイプラインも下流へ進む
ことができず、従って、命令I5 及びそれ以上は、それ
らの各段に保たれる。時間T4 に、I4 が完了し、そし
てI5 及びI6 は各々EXy 及びEXx へ移動する。I
7 及びI8 は各々AC2y 及びAC2x へ移動し、I9
及びI10は各々AC1y 及びAC1x へ移動して、隣接
命令I9 及びI8 の両方がXパイプラインへ行くのを防
止する。I11及びI12は、ID2段へ移動する。
【0091】時間T5 において、I5 は完了し、I7
EXy へ移動する。I6 は、リード・アフタ・ライト依
存性のために、EXx に留まる。I9 はAC2y へ移動
し、I11はAC1y へ移動し、I3 はID2x へ移動す
る。明らかなように、EXxに留まっているI6 により
形成される潜在的なバブルは、パイプコントロールユニ
ット28により命令を適切にシーケンスすることによっ
て回避される。
【0092】図7ないし9について命令の特定の順序付
けを説明したが、命令をシーケンスする他の方法を用い
て、パイプラインを通る命令の効率的な流れを促進する
ことができる。又、切り換え点は、ID2段である必要
はない。上記したように、パイプコントロールユニット
28は、この切り換え点を使用し、バブルを生じること
のある命令間の依存性を減少するような命令シーケンス
を与える。
【0093】パイプの切り換えに関するパイプ制御ユニ
ットの一般的な動作を示すフローチャートが図10に示
されている。パイプコントローラは、Xのみの命令のよ
うに命令をあるパイプラインを下るように出さねばなら
ないかどうかを決定する(210)。もしそうであれ
ば、パイプコントロールユニット28は、使用できるパ
イプラインに命令を出す(212)。命令をいずれのパ
イプにも出せる場合は、パイプコントロールユニット2
8は、いっぱいになるパイプラインのいずれかにバブル
が生じるかどうかを決定する(214)。もしそうであ
れば、パイプコントロールユニット28は、バブルのあ
る段へ命令を移動する(216)。バブルがない(又は
両方のパイプラインが使用できる)場合には、パイプコ
ントロールユニット28は、依存性を回避するための最
良のシーケンスの評価に基づいてX又はYパイプライン
に命令を出す(218及び220)。上記したように、
1つの実施例においては、パイプコントローラは、隣接
する命令を同じパイプラインにおいて互いに他の上に出
すことを回避することにより、依存性を回避する。
【0094】6.依存性に関わりのない命令の発生 命令は、2つの命令間に存在することのある依存性に係
わりなくID1からID2へ送られる。別の解決策は、
一対(又はそれ以上)の命令が依存性をもつかどうかを
決定し、もしそうであれば、他のパイプの対応段にバブ
ルをもつ第1の命令を発生して、バブルがパイプライン
を通る発生された命令と対を保つようにすることであ
る。従って、所与の時間周期にわたって処理される命令
の数が減少される。
【0095】性能を改善するために、ここに開示するマ
イクロプロセッサは、依存性をもつ命令をパイプライン
に同時に発生する。依存性は、命令がそれに依存するデ
ータを使用する必要のある点でチェックされる。即ち、
依存性がパイプラインにストールを生じる点は、依存性
の性質に基づいており、依存性のデータがアドレスの計
算に必要とされる場合には、AC1にストールが生じる
が、そのデータが実行に必要とされる場合には、ストー
ルがEXに生じる。ストールのときまで、パイプ又は他
のメカニズムにおける命令の移動は、依存性を解決し、
従って、命令のより効率的な流れを与える。
【0096】7.マルチスレッドのEX動作 図1及び2を参照すれば、マイクロシーケンサ回路23
は、EX段へのマイクロ命令の独立した流れを形成す
る。従って、EXx 段の制御は、EXy 段の制御とは独
立している。
【0097】単一のマイクロ命令ワードを用いて両EX
段を制御するのではなく、2つの独立したマイクロ命令
の流れによって両EX段の実行を制御することにより、
命令の実行において相当の融通性が与えられ、性能が高
められる。更に、2つのEX段を単一のマイクロ命令で
制御するのに必要な付加的なハードウェアが回避され
る。
【0098】特に、ある排他的命令は、EXx 及びEX
y の両方の段を使用することにより有利になる。両方の
EX段を使用すると、排他的命令は、アドレス計算のた
めに両AC段へアクセスし、この場合、ACは、又、マ
イクロ命令制御される。
【0099】両EX(及びAC)段は、単一の命令を実
行するのに使用されるが、各EX段は、マイクロシーケ
ンサからマイクロ命令の2つの独立した流れを受け取り
続ける。2つのEXユニットの動作は、マイクロ命令の
適切なコード化によって維持される。
【0100】8.レジスタ変換ユニット 8.1 レジスタ変換の概要 図1及び2を参照すると、命令レベルデータハザードを
検出して分析するためにレジスタ変換ユニット25aが
使用される。EXパイプ段における実行の完了前に、各
命令は、そのソースオペランドが有効になっていなけれ
ばならない。レジスタ変換ユニットは、各レジスタを追
跡して、アクティブな命令が未解決の書き込み(書き込
み保留)を有するかどうかを決定するのに使用される。
【0101】書き込み保留中のソースレジスタを命令が
有する場合には、その命令に関連した常駐制御ワード
(セクション9及び図19ないし22を参照)がAC1
段に表示されて、ソースレジスタが書き込み保留を有す
ることを指示する。パイプラインを経て命令が進むにつ
れて、各段は、従属レジスタへの書き込みを検出するた
めにライトバックバスを「スヌープ(snoop) 」する。従
属レジスタへの書き込みが検出された場合は、ソースレ
ジスタに関連した残留制御ワードの書き込み保留フィー
ルドがクリアされる。
【0102】図11は、レジスタ変換ユニット25aの
一般的なブロック図である。物理レジスタファイル(図
1の24)は、X86アーキテクチャの8個のローカル
レジスタに関連した情報を記憶するための32個の物理
レジスタを備えている。物理レジスタへのアクセスは、
レジスタ変換ユニット25aにより制御される。物理及
びローカルレジスタに関連した状態情報は、変換制御レ
ジスタ236に記憶される。変換制御回路238は、状
態情報に基づいて物理レジスタへのアクセスを管理す
る。
【0103】真のデータ依存性は、命令の完了を妨げる
RAWハザードから生じる。又、WAR(ライト・アフ
タ・リード)ハザードに対応する依存性、「反依存性」
と称する、及びWAW(ライト・アフタ・ライト)ハザ
ードに対応する依存性、「出力依存性」と称する、も存
在する。真のデータ依存性ではないこれらの反依存性及
び出力依存性は、レジスタ変換ユニット25aによって
制御されるレジスタ再ネーミングを使用することによっ
て移動し得る。レジスタ再ネーミングにおいては、アー
キテクチャが(論理的又は構造的に)定める以上の物理
レジスタが設けられる。論理レジスタが書き込まれるた
びに新たな物理レジスタを指定することにより(結果の
行き先)、レジスタは再ネーミングされ、両WAR及び
WAWハザードを排除する。
【0104】X86アーキテクチャは、プログラマから
見える8個の汎用レジスタを定める(EAX、EBX、
ECX、EDX、EDI、ESI、EBP、ESP)。
ここに示す実施例では、これら8個の汎用レジスタ(論
理レジスタ)をマップするのに使用される32個の物理
レジスタがある。マイクロプロセッサは、条件分岐が実
行を完了する前に命令を予想し実行するので、レジスタ
変換ユニットは、誤って予想した分岐の結果を処理する
ことができねばならない。予想が間違いであった場合に
は、マイクロプロセッサは、状態を条件分岐点まで復帰
しなければならない。以下に述べるように、チェックポ
イント処理を用いて、推論的経路が得られる前に状態情
報をセーブする。間違って予想された条件分岐からの復
帰はチェックポイント処理した物理レジスタへ戻ること
を伴う。
【0105】各AC1パイプ段に対し、レジスタ変換及
び再ネーミングハードウェアによって次の動作が完了さ
れる。 1.ACパイプ段における現在命令の行き先である2つ
までの新たなレジスタを割り当てる(再ネーミングす
る)。この割り当ては、両方の命令が同じレジスタを行
き先として指定する場合に依存性が形成されるためにプ
ログラム順序で行われる。 2.ACパイプ段における命令に対し、RAW依存性を
チェックする。 3.アドレス計算のためにAC中に使用されるレジスタ
に対し、ライトバックバス上の物理レジスタIDをチェ
ックして、レジスタ変換ユニットにおける書き込み保留
中ビットをバイパス及びクリアできるようにする。 4.4つまでのレジスタに対し論理−物理変換を行う。
【0106】8.2 変換制御レジスタ 図12は変換制御レジスタ236を示している。論理I
Dレジスタ240は、論理レジスタを物理レジスタに対
してマップする。サイズレジスタ242は、物理レジス
タが指定される論理レジスタのサイズに対応するコード
を記憶する。この特徴は、以下で説明する。現在レジス
タ244は、所与の論理レジスタに対して最も最近指定
されたレジスタを指示する。従って、新たな物理レジス
タが割り当てられるたびに、その対応する論理レジスタ
に対してそれまで現在レジスタであった物理レジスタに
対する現在ビットがオフにされ、そして新たに割り当て
られたレジスタに対する現在ビットがオンにされる。従
って、いつでも、現在レジスタ244は、8ビットがオ
ンでありそして24ビットがオフである。各物理レジス
タに対し、保留レジスタ246は、その物理レジスタへ
の書き込みが保留中であるかどうかを指示するビットを
有している。
【0107】4つのチェックポイントレジスタ248、
Chkpnt0−Chkpnt3、は、チェックポイン
トが生じるたびに現在レジスタ244のコピーを記憶す
るのに用いられる。好ましい実施例において、チェック
ポイントは、条件分岐又は浮動小数点演算がAC1に通
されるときに生じる。チェックポイントレジスタ248
は、回転ベースで書き込まれる。例外復帰レジスタ25
0は、AC1、AC2及びEXにおける各命令に対する
現在ビットを記憶する。というのは、これらが命令に対
する割り当てがAC1段で行われる前に存在するからで
ある。例外復帰レジスタの内容は、命令が段から段へ移
動するときに命令に従う。
【0108】8.3 レジスタ割り当て 論理レジスタへ結果を書き込む各命令に対し、新たな物
理レジスタがレジスタ変換ユニット25aによって割り
当てられる。レジスタ割り当てプロセスは、最初に、
「フリー」の物理レジスタ、即ち使用中でないレジスタ
を識別する。フリーレジスタの検出については、図13
を参照して説明する。フリーレジスタが位置決めされる
と、論理レジスタ番号が物理レジスタのデータ構造体に
入れられ、現在と表示される。論理レジスタを表してい
た手前の物理レジスタは、その現在ビットがクリアされ
る。
【0109】フリーレジスタを識別する回路が図12及
び13に示されている。レジスタビジーレジスタ252
は、各物理レジスタに対して1ビット位置を有してい
る。レジスタビジーレジスタの各ビットは、保留、現
在、チェックポイント及び例外復帰レジスタにおける対
応位置に応答してセットされる。図13に示すように、
レジスタビジーレジスタ252のビットnは、保留、現
在、チェックポイント及び例外復帰レジスタの第nビッ
トに対する論理オア演算の結果である。レジスタは、レ
ジスタビジーレジスタの対応ビットが「0」にセットさ
れた場合にフリーであり、そしてその対応ビットが
「1」にセットされた場合に使用中である。
【0110】割り当ての際に、現在レジスタの対応ビッ
トは、物理レジスタを現在レジスタとして表示するため
に「1」にセットされる。物理レジスタが指定される論
理レジスタを指示するために論理IDレジスタ240の
対応する3ビットにコードが入れられ、そしてサイズレ
ジスタの対応ビットが、割り当てられる論理レジスタの
サイズにセットされる(以下のテーブル1を参照)。物
理レジスタに対応する保留ビットもセットされる。割り
当てを生じる命令は、指定された物理レジスタへの書き
込みであり、そして論理レジスタからのその後の命令に
よる読み取りはこの新たな物理レジスタからの読み取り
を生じる。この再ネーミングは、AC1パイプ段の間に
生じ、プログラム順序で処理される。命令をプログラム
順序で処理することは、AC1x 及びAC1y における
両命令が同じ論理レジスタをソース及び行き先として指
定する場合に生じる。一例として、これは、両命令がA
DD(加算)であって、AXレジスタがソース及び行き
先の両方として定められる場合に生じる。レジスタの再
ネーミングにより、2つの新たな物理レジスタが論理A
Xレジスタとして割り当てられ、最後の1つは現在レジ
スタとして表示される。以下の例は、各命令がいかに再
ネーミングされるかを示している。
【0111】第1の例:(ADD AX,BX)。命令
ADDがAC1に受け取られたときにAX及びBXレジ
スタに対する物理レジスタIDが現在各々「1」及び
「2」であると仮定する。AXレジスタは行き先でもあ
るから、新たな物理レジスタがAXに対して割り当てら
れる。この物理レジスタは、IDが「3」である(物理
レジスタ「3」がフリーであると仮定すれば)。この加
算命令は、次いで、物理レジスタ「1」と「2」を加
え、その結果をレジスタ「3」に書き込む。AX(物理
レジスタ1)+BX(物理レジスタ2)→AX(物理レ
ジスタ3)
【0112】第2の例:(ADD AX,BX)。AX
レジスタは行き先であるから、新たな物理レジスタがA
Xに割り当てられる。これは、IDが「4」である。手
前の命令でAXレジスタは物理「3」と再ネーミングさ
れているので、これがADDのためのAXソースとして
使用される。というのは、これは、割り当て時に現在と
表示されているからである。それ故、この第2のADD
命令は、物理レジスタ「3」と「2」を加え、その結果
をレジスタ「4」へ書き込む。AX(物理レジスタ3)
+BX(物理レジスタ2)→AX(物理レジスタ4)
【0113】X86アーキテクチャは、幾つかのレジス
タをワード(例えば「AX」)、下位バイト(例えば
「AL」)、上位バイト(例えば「AH」)又はダブル
ワード(例えば「EAX」)としてアドレスできるよう
にするので、レジスタが命令によっていかに指定される
かに基づいて各割り当てごとにサイズが指定される。レ
ジスタの割り当て可能と考えられる部分が、EAXレジ
スタについて図14に示されている。各物理レジスタ
は、コードを記憶するサイズレジスタにサイズレジスタ
に対応する2ビットフィールドを有している。例示的な
コードをテーブル1に示す。 テーブル1 サイズレジスタに対するコード コード サイズ 00 ワード AX 01 下位バイト AL 10 上位バイト AH 11 ダブルワード EAX
【0114】可変サイズのレジスタを用いてレジスタ変
換する方法が図15に示されている。レジスタ変換ユニ
ット(図1の25a)の変換制御回路は、割り当てられ
るべき論理レジスタのサイズを、その論理レジスタに対
する現在レジスタのサイズと比較し、そしてレジスタを
割り当てできるか又は命令をストールしなければならな
いかどうかを決定する。
【0115】割り当て要求が受け取られ(258)、割
り当てられるべきレジスタのサイズが、それに対応する
現在レジスタのサイズと比較される(260及び26
2)。2つの命令が同じ論理行き先レジスタを異なるサ
イズ(即ち、AH及びAL)として指定する場合であっ
て、プログラム順序における第2の命令の論理的行き先
が、第1の命令に割り当てられた論理レジスタの部分を
完全に含まない場合は、サイズに基づくRAW依存性が
形成される。従って、この依存性が解決されるまでレジ
スタを割り当てることができない(264)。
【0116】命令の保留中書き込みを伴う論理レジスタ
のサイズが、それより前の命令によって指定された論理
レジスタの部分を包囲する場合には(以下のテーブル2
に定められたように、例えば、EAXレジスタを用い
て)、新たなレジスタを割り当てることができる(26
6)。 テーブル2 サイズ依存性をもつレジスタを割り当て できるようにするレジスタサイズ 保留書き込みを伴う 新たなレジスタを割り当てる レジスタのサイズ ための許容サイズ AL AL、AX、EAX AH AX、EAX AX AX、EAX EAX EAX
【0117】8.4 2つの行き先をもつ命令 X86命令の大部分は、1つのレジスタ行き先のみを指
定する。2つのレジスタ行き先を指定する命令は僅かで
ある(例えば、XCHG AX,BX)。レジスタ変換
ユニットのハードウェアを複雑にしないように、各クロ
ックごとに命令に対して1つの行き先しか再ネーミング
できない。それ故、2つの行き先を指定する命令は、特
殊なケースに使用される。これらの命令は、AC1パイ
プ段にある間に、1クロック中、他の命令をレジスタ変
換ハードウェアを使用することからストールし、これに
より、第2の行き先を再ネーミングできるようにする。
【0118】8.5 推論的分岐実行のためのチェック
ポイントレジスタ 図12を参照すれば、マイクロプロセッサは、分岐の方
向(条件流れ変更)を予想し、そして分岐が実際に解明
される前に、その予想された方向において命令の実行を
開始する。分岐が誤った予想であった場合には、マイク
ロプロセッサはプロセッサの状態を分岐点まで復帰させ
ねばならない。
【0119】レジスタ変換ユニット(図1の25a)
は、予想された分岐方向における命令を推論的に実行す
る前に、レジスタをチェックポイント処理し、即ち現在
レジスタ244をチェックポイントレジスタ248の1
つにコピーすることにより、マイクロプロセッサが分岐
の境界におけるプロセッサ状態をセーブできるようにす
る。チェックポイントレジスタ248は、回転する順序
で書き込まれる。
【0120】好ましい実施例では、浮動小数点演算に対
してもレジスタがチェックポイント処理される。
【0121】チェックポイント処理は、マイクロプロセ
ッサがチェックポイントレジスタによって定められた状
態へ復帰できるようにするので、各命令ごとに使用する
ことができる。しかしながら、各チェックポイントに対
してリソースを設けなければならず、従って、チェック
ポイント処理の機能と、チェックポイント処理に割り当
てるべきハードウェアリソースとの間で妥協をとらねば
ならない。ここに示す実施例では、4つのチェックポイ
ントレジスタが使用され、いつでも4つまでのチェック
ポイント処理を行うことができる。
【0122】間違って予想された分岐(又は浮動小数点
エラー)からの復帰は、チェックポイント処理された物
理レジスタへ戻ることを伴う。分岐がパイプラインのA
C段に入るときに、現在レジスタ244がチェックポイ
ントレジスタ248の1つにコピーされる。予想された
方向に命令を実行する間に、新たなレジスタが割り当て
られる。新たなレジスタが割り当てられると、現在と表
示された物理レジスタが、通常通りに、その現在ビット
をクリアする。予想された方向が誤りであった場合は、
その分岐に関連したチェックポイントレジスタ248が
現在レジスタへコピーされ、該現在レジスタは、物理レ
ジスタの状態を、その分岐の直前に存在した状態へ復帰
させる。従って、マイクロプロセッサは、誤って予想さ
れた分岐又は浮動小数点エラーから単一のクロックサイ
クルで復帰することができる。
【0123】8.6 例外からの回復 図12を参照すれば、例外からの回復は、誤って予想さ
れた分岐からの回復に類似している。例外が所与の段
(AC1x 、AC1y 、AC2x 、AC2y 、EXx
EXy )で生じた場合には、その段に関連した例外レジ
スタ250が現在レジスタにコピーされる。所与の段の
例外レジスタは、その段における現在命令に対する割り
当て(AC1段で生じた)の前に存在したときの現在レ
ジスタ244のコピーを含んでいるので、関連する例外
レジスタ250を現在レジスタ244にコピーすること
は、物理レジスタと論理レジスタとの関連性を、その例
外を生じた命令がAC1に入る前に存在した関連性へリ
セットする。従って、本発明では、たとえ状態を変更す
る命令が後で例外を生じたとしても、マシンの状態を変
更することができる。
【0124】現在レジスタ244の回復にどの例外レジ
スタを使用すべきかを決定するために、レジスタ変換ユ
ニット25aはパイプコントロールユニット(図1の2
8)からの情報を使用する。例外が生じたときには、パ
イプコントロールユニットはパイプラインの段をフラッ
シュする。どの段がフラッシュされたかを指示すると共
に、フラッシュ時にどの段が有効であったかを指示する
パイプコントロールユニットからの信号を、各段に対す
るXFIRSTビットと一緒に使用することにより、レ
ジスタ変換ユニットは、フラッシュされた最もシニアな
段を決定する。その段に対応する例外レジスタが現在レ
ジスタ244へコピーされる。
【0125】8.7 レジスタ変換ユニットのマイクロ
コントロール 図1を参照すれば、レジスタ変換ユニット25aは、通
常は、パイプラインハードウェアによって発生された信
号により制御される。しかしながら、ある状態において
は、マイクロコントローラ26のマイクロシーケンサに
より命令の一部として発生されたマイクロコード信号を
介してレジスタ変換ユニット25aを制御するのが有用
である。例えば、排他的命令は、どの物理レジスタが論
理レジスタにマップされるかを決定するためにレジスタ
変換ユニットのハードウェアにアクセスすることが必要
である。PUSHA(プッシュ・オール)のような命令
は、それらの実行中に8個全部の論理レジスタの論理−
物理変換を必要とする。
【0126】排他的命令によりレジスタ変換ユニットへ
アクセスする必要性を効率的に受け入れるために、制御
信号は、図16に示すように、マイクロコードによって
制御されるマルチプレクサを介してレジスタ変換ユニッ
ト25aへマルチプレクスされる。ハードウェア及びマ
イクロコードによって(マイクロシーケンサを経て)発
生された制御信号は、マルチプレクサ260へ入力され
る。このマルチプレクサ260は、これを制御するマイ
クロコード選択信号の値に基づいて制御信号を通過させ
る。マイクロコード選択信号は、マイクロコードにより
発生される。従って、命令に関連したマイクロコードが
レジスタ変換ユニット25aを必要とする場合は、マイ
クロ命令ビットの1つがマルチプレクサ260をイネー
ブルし、パイプラインハードウェアからの信号ではなく
て、マイクロコード制御信号を通過させる。マイクロ命
令の他のビットは、所望の機能をイネーブルするための
レジスタ変換ユニット25aへの制御信号として働く。
実行にレジスタ変換ユニットを必要としない命令は、ハ
ードウェアにより発生された制御信号のみを通すように
マルチプレクサをイネーブルする。
【0127】8.8 レジスタID変換及びハザード検
出 論理レジスタの要求に応答して、レジスタ変換ユニット
(図1の25a)は、その要求された論理レジスタへと
マップされた現在物理レジスタの識別を供給する。又、
レジスタ変換ユニットは、各倫理レジスタに対して1つ
づつ8個のビットを出力し、これは、その関連する論理
レジスタに対する現在物理レジスタが書き込み保留中で
あるかどうかを指示する。これらのビットは、RAWハ
ザードを検出するのに使用される。
【0128】好ましい実施例において、レジスタ変換ユ
ニットは、各々1つの物理レジスタを表す複数のセルで
形成される。図17は、レジスタID変換及びハザード
検出に関連した1つのセル270を概略的に示してい
る。trans idバスに出された8個の論理レジス
タの1つを表す3ビットコードに応答して、その指定の
論理レジスタに対する現在物理レジスタを表す5ビット
コードがphy idバスに出される。各セル270
は、trans idバスからコードを受け取る。tr
ans idバスの3ビットコードは、そのセルに対応
する論理IDレジスタのビットと比較される。好ましい
実施例においては、制御レジスタ240ないし252の
ビットがセル間で分割され、各セルがそれに関連した物
理レジスタに対応する各レジスタ240ないし252の
ビットを含むようにする。
【0129】論理IDビットは、比較器272により3
ビットコードと比較される。3ビットコードが論理ID
ビットに等しい場合に、一致信号がイネーブルされる。
この一致信号と、セルに対する現在ビットがアンドゲー
ト274に入力される。従って、セルにより表された物
理レジスタが指定の論理レジスタに関連している場合及
び物理レジスタが指定の論理レジスタに対する現在レジ
スタとして表示された場合には、アンドゲート274の
出力が「1」となる。アンドゲート274の出力は、5
ビットの3状態バッファ276をイネーブルする。アン
ドゲートの出力が「1」の場合には、バッファは、セル
に関連した物理IDをphy idバスへ通す。所与の
論理レジスタIDに対し、1つの物理レジスタのみが現
在レジスタとなり、それ故、1つのセルだけがその3状
態バッファをイネーブルする。
【0130】論理IDビットは、3−8デコーダ278
にも入力される。従って、このデコーダ278の8個の
出力の1つは、そのセルに対してマップされた論理レジ
スタに応答してイネーブルされる。デコーダ278の各
出力は、各アンドゲート280(個々にアンドゲート2
80a−280gと示されている)の入力に接続され
る。各アンドゲート280は、そのセルに関連した物理
レジスタに対し現在ビット及び保留ビットも受け取る。
各アンドゲート280の出力は、各論理レジスタに関連
した各ハザードバスに接続される。例えば、アンドゲー
ト280aは、EAX論理レジスタに関連したハザード
EAXバスに接続される。アンドゲート280gは、E
SP論理レジスタに関連したハザードESPバスに接続
される。
【0131】所与のセルに対し、そのセルがそのセルに
より表された物理レジスタにマップされた論理レジスタ
を表す場合及び物理レジスタが書き込み保留の現在レジ
スタと表示された場合に、せいぜい1つのアンドゲート
280がイネーブルされる。図18に示すように、ハザ
ードバスは、各セルの出力においてワイヤードオアを実
行する。各ハザードバスに対し、関連アンドゲート28
0の1つのみがイネーブルされる。というのは、論理レ
ジスタに関連した1つの現在ビットしかイネーブルされ
ないからである。現在物理レジスタに関連した保留ビッ
トもイネーブルされた場合には、それに対応するアンド
ゲート280がイネーブルされ、ハザードバスは、その
論理レジスタに対して書き込み保留中であることを指示
する。この情報は、RAWハザードを検出するのに使用
される。
【0132】9.送り 上記したように、RAW依存性は、マイクロプロセッサ
を依存命令においてストールさせる。好ましい実施例に
おいては、「送り(フォワーディング)」を用いて、あ
る状況でRAW依存性を排除し、命令のスループットを
高める。この送りは、両方が同時にEX段にある2つの
命令間のRAW依存性を排除するように命令を変更す
る。
【0133】好ましい実施例では2つの形式の送りが使
用される。「オペランド送り」は、ある条件のもとで、
シニアMOV(又は同様の)命令のソースを、その命令
に対するソースデータとしてジュニア命令に送る。「結
果送り」は、ある条件のもとで、シニア命令の結果をそ
の後のMOV(又は同様の)命令の行き先へ送る。
【0134】次のコードは、オペランド送りを示してい
る。 1)MOV AX,BX 2)ADD AX,CX
【0135】図19及び20を参照すれば、オペランド
送りを用いると、ジュニアADD命令は、BX+CX→
AXへと効果的に変更される。各命令は、残留制御ワー
ドに記憶された残留制御情報に組み合わされ、この残留
制御ワードは、他の制御情報(図示せず)の中でも、動
作に対するソース(各ソースに対する書き込み保留があ
るかどうかを指示するフィールドを伴う)及び行き先を
含むものである。従って、物理レジスタ「0」が論理レ
ジスタBXに割り当てられそして物理レジスタ「1」が
論理行き先レジスタAXに割り当てられると仮定すれ
ば、SRC0(ソース0)フィールドには「0」が記憶
され、そしてMOV命令に関連した残留制御ワードのD
ES0(行き先0)フィールドには「1」が記憶され
る。同様に、物理レジスタ「2」が論理レジスタCXに
割り当てられると仮定すれば、送りは、ADD命令に関
連した残留制御ワードのSRC0フィールドに「1」を
記憶できるようにし(MOV命令の行き先レジスタは、
ADD命令のソースの1つであるから)、SRC2フィ
ールドには「2」が記憶され、そしてDES0フィール
ドには「3」が記憶される(レジスタ再ネーミングによ
り、論理行き先AXレジスタに対してフリーレジスタが
見つかるので)。
【0136】明らかなように、MOV命令とADD命令
との間にはRAW依存性が存在する。というのは、MO
V命令は、ADD命令の実行の前に物理レジスタ「1」
に書き込まねばならないからである。しかしながら、オ
ペランド送りを用いると、この依存性を排除することが
できる。図20に示すように、オペランド送りは、MO
Vコマンドに影響を及ぼさない。しかしながら、ADD
命令の残留制御ワードは、SRC0フィールドがMOV
に対する論リソースレジスタBXに関連した物理レジス
タを指すように変更される。
【0137】同様に、結果送りは、ジュニアMOV命令
の残留制御ワードをシニア命令の結果で変更する。結果
送りを説明するために、次のシーケンスを使用する。 1)ADD AX,BX 2)MOV CX,AX
【0138】図21及び22を参照すれば、結果送り
は、ADD命令の結果として発生されたデータがCXレ
ジスタにロードされるようにMOVコマンドを変更す
る。物理レジスタ「0」は論理ソースレジスタBXに割
り当てられ、物理レジスタ「1」は論理ソースレジスタ
AXに割り当てられ、物理レジスタ「2」は論理行き先
レジスタAXに割り当てられ、そして物理レジスタ
「3」は論理行き先レジスタCXに割り当てられる。従
って、2つの命令間にはRAW依存性が存在する。とい
うのは、ADD命令の行き先(物理レジスタ2)は、M
OV命令のソースだからである。
【0139】結果送りの後に(図22)、ADD命令は
不変のままであるが、MOV命令に関連した残留制御ワ
ードは、行き先レジスタCX(物理レジスタ3)が、A
Xが書き込まれるのと同時に、ADDを実行するEXユ
ニットに関連したライトバックバス(図22にX側のラ
イトバックバスとして示された)からそのデータを受け
取るように変更される。従って、RAW依存性は排除さ
れ、ADD及びMOVの両命令が同時に実行される。
【0140】送りは、ある条件のもとでしか使用されな
い。シーケンスにおける命令の1つは、MOV命令又は
同様の「非作用」命令でなければならない。この非作用
命令とは、オペランドデータをある位置から別の位置へ
転送するが、そのデータに対して実質的に動作を行わな
いような命令である。作用命令とは、オペランドデータ
に応答して新たなデータを発生するか又はオペランドデ
ータを変更するものである。X86命令セットにおいて
は、非作用命令は、MOV、LEA、PUSH<reg
>及びPOP<reg>を含む。又、OR<reg1
>,<reg1>及びAND<reg1>,<reg1
>(ソース及び行き先の両レジスタが同じである場合)
は、フラグをセットすることにしか使用されないので、
「非作用」命令と考えることができる。
【0141】更に、好ましい実施例では、送りは、シー
ケンスにおける両命令が同じクロックサイクルにそれら
の各EXユニットにある場合にのみ使用される。送り
は、AC2段の命令に先行する3つまでの命令を(プロ
グラム順序で)サーチし、送りのケースが生じ得るかど
うかを判断する。たとえ送り命令が2命令先行していた
としても、AC2段の命令がEX段へ移動するに充分な
長い時間、送り命令がEX段において遅延する場合に
は、送りが生じ得る。
【0142】図23に示すように、命令「1」及び
「2」が各々X及びY側のEXユニットにあり、そして
命令「3」及び「4」がX及びY側のAC2ユニットに
ある状況においては、命令「4」が命令「3」及び
「1」を見て、オペランド又は結果送り状態が考えられ
るかどうかを判断する。命令「4」は、まだAC2段に
あるから、命令「4」がY側のEX段へ発生されるまで
命令「1」がEX段において遅延しない限り、命令
「1」と共に送ることはできない。同様に、命令「3」
で送り状態が考えられる場合には、「3」及び「4」の
両方が各EX段へ発生された場合だけ送りが生じ、これ
ら命令が少なくとも1つのクロックサイクルに対してE
X段に同時に存在するようにされる。
【0143】命令「4」は、送り状態に対して命令
「2」を見ない。というのは、図示されたアーキテクチ
ャが与えられた場合に、両命令が同時にEXユニットに
存在することがないからである。命令「4」と「2」と
の間のRAW依存性の待ち時間を減少するためにバイパ
スを用いることができる。AC2/EX境界でパイプを
切り換えることのできるアーキテクチャのような別のパ
イプライン構成では、命令「4」と「2」との間で送り
を行うことができる。
【0144】図24は、図23に関連して述べた初期状
態が与えられた場合に命令「3」に関連した送りについ
て監視される状態を示している。この状態において、送
り状態に対して命令「2」のみが監視される。命令
「1」は、命令「3」では送ることができない。という
のは、これらが同時にEX段に存在することはないから
である。命令「3」は命令「4」においてRAW依存性
をもつことはない。というのは、命令「4」は命令
「3」のジュニアだからである(が、図23に示すよう
に、命令「4」は、命令「3」においてRAW依存性を
もつことはある)。
【0145】送り制御回路のブロック図が図25に示さ
れている。送り制御段の回路には、AC2段が関連され
る。送り制御回路300は、AC2パイプ段における命
令のソースオペランドと、EX段における命令のソース
及び行き先オペランドを監視し、そして残留制御情報を
上記したように変更するために、オペランド監視・制御
回路302を備えている。更に、送り状態の可能性が検
出されると、送り制御回路300の命令移動監視回路3
04が命令の移動を監視して、各EXユニットにおける
両命令の存在を検出し、送りを実施する。制御回路30
6は、オペランド監視・制御回路302と、命令移動監
視回路304とを整合する。
【0146】好ましい実施例では、送り回路は、物理レ
ジスタファイル(図1の24)に見られるレジスタファ
イルコントロールの一部である。レジスタファイルコン
トロールも、残留制御ワードを維持する。
【0147】2つの命令パイプラインを用いるプロセッ
サについて送りを説明したが、いかなる数のパイプライ
ンにも同様に使用することができる。この場合は、送り
制御回路は、EX及びAC2段において各パイプライン
のEXユニットの命令に関連した残留制御ワードを監視
する。
【0148】送り及びレジスタ変換は互いに独立してい
る。所与のマイクロプロセッサにおいて、そのいずれか
又は両方の技術を用いて命令スループットを高めること
ができる。
【0149】10.結論 特定の段をもつ2つのパイプラインの特定の実施例につ
いて本発明を説明したが、特許請求の範囲に規定された
本発明は、3つ以上のパイプライン及び異なる段構成に
関連して使用できることに注意されたい。
【0150】ここに開示するパイプコントロールユニッ
トは、パイプラインを通る命令の効率的な流れを与え、
これにより、命令を処理する速度を高める。従って、高
い周波数に依存せずに高い命令スループットを得ること
ができる。更に、レジスタ変換ユニット及び送り構成
は、多数の依存性を排除し、命令をストールする必要性
を低減する。
【0151】幾つかの特定の実施例について本発明を詳
細に説明したが、当業者であれば、これら実施例の種々
の変更や、別の実施例が明らかとなろう。例えば、パイ
プライン制御のための種々の方法及び回路を互いに独立
して使用することに関連して説明したが、これら種々の
方法及び回路の1つ又はそれ以上が一般的に有用な結果
をもたらす。更に、本発明は、特許請求の範囲に包含さ
れるいかなる変更又は別の実施例も網羅するものとす
る。
【図面の簡単な説明】
【図1】スーパースカラー、スーパーパイプライン式マ
イクロプロセッサのブロック図である。
【図2】X及びY実行パイプを含むマイクロプロセッサ
の7つのパイプライン段を示す図である。
【図3】例示的コンピュータシステムのブロック図であ
る。
【図4】パイプラインユニットを通る命令の流れを示す
タイミング図である。
【図5】パイプラインユニットを通る命令の流れを制御
するための制御機構を示すブロック図である。
【図6】順序から外れた命令の完了を示す流れ図であ
る。
【図7】パイプ切り換えを用いたパイプラインを通る命
令の流れを示す図である。
【図8】パイプ切り換えを用いたパイプラインを通る命
令の流れを示す図である。
【図9】パイプ切り換えを用いたパイプラインを通る命
令の流れを示す図である。
【図10】パイプ切り換え方法を説明する流れ図であ
る。
【図11】レジスタ変換ユニットの機能ブロック図であ
る。
【図12】レジスタ変換ユニットに使用される制御レジ
スタを示す図である。
【図13】レジスタビジーレジスタのビットを発生する
回路を示す図である。
【図14】X86アーキテクチャのもとにある可変サイ
ズ拡張レジスタを示す図である。
【図15】可変サイズの論理レジスタを割り当てるフロ
ーチャートである。
【図16】レジスタ変換ユニットを選択可能に制御する
回路を示す図である。
【図17】変換及びハザード検出を行うレジスタ変換ユ
ニットの部分を示す図である。
【図18】変換及びハザード検出を行うレジスタ変換ユ
ニットの部分を示す図である。
【図19】オペランド送りを説明する図である。
【図20】オペランド送りを説明する図である。
【図21】結果送りを説明する図である。
【図22】結果送りを説明する図である。
【図23】送り状態の検出を示す図である。
【図24】送り状態の検出を示す図である。
【図25】送り回路のブロック図である。
【図26】マルチボックス命令のパイプ制御を示す図で
ある。
【図27】マルチボックス命令のパイプ制御を示す図で
ある。
【符号の説明】
10 マイクロプロセッサ 20 CPUコア 21 命令デコーダ 22 アドレス計算ユニット 23 実行ユニット 24 レジスタファイル 25 ACコントロールユニット 26 マイクロコントロールユニット 29 書き込みバッファ 30 プリフェッチバッファ 35 プリフェッチャ 40 分岐処理ユニット(BPU) 50 アドレス変換ユニット(ATU) 60 単一化キャッシュ 62 タグRAM 65 命令ラインキャッシュ 70 浮動小数点ユニット
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/138281 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138572 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138573 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138574 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138655 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138789 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138901 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/138902 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (31)優先権主張番号 08/139597 (32)優先日 1993年10月18日 (33)優先権主張国 米国(US) (72)発明者 スチーブン シー マクマハン アメリカ合衆国 テキサス州 75082 リ チャードソン ウインドメア ドライヴ 3311 (72)発明者 ダグラス ベアード アメリカ合衆国 テキサス州 75252 ダ ラスロイド サークル 18909 アパート メント 518 (72)発明者 マーク ダブリュー ハーヴィン アメリカ合衆国 テキサス州 75252 ダ ラス156 プレストン ロード 17601 (72)発明者 ジョン ケイ アイトリーム アメリカ合衆国 テキサス州 75093 ダ ラス1127 プレストン ロード 3700

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 複数の実行パイプラインを備え、各パイ
    プラインは、パイプラインへと発生された命令を処理し
    てプロセッサ状態を変更するような複数の段を有してい
    るスーパースカラーパイプライン式プロセッサにおい
    て、 発生される命令間のデータ依存性に係わりなく上記複数
    のパイプラインへ命令を発生するための命令発生手段
    と、 上記複数のパイプラインにおける命令間のデータ依存性
    を監視するためのパイプライン制御手段とを備え、 上記パイプライン制御手段は、1つのパイプラインの現
    在段における第1命令を適切に処理するために別のパイ
    プラインの第2命令におけるデータ依存性を解決しなけ
    ればならないことがない限り、上記現在段における第1
    命令が上記データ依存性によって遅延されないように、
    上記パイプラインの段を通る命令の流れを制御すること
    を特徴とするプロセッサ。
  2. 【請求項2】 解決されるべきデータ依存性は、第1パ
    イプラインの第1命令が結果をレジスタへ書き込んだ後
    に第2パイプラインの第2命令がその結果データをその
    レジスタから読み取るようにしなければならないリード
    ・アフタ・ライト(書き込み後の読み取り)依存性を含
    む請求項1に記載のプロセッサ。
  3. 【請求項3】 レジスタの再ネーミングを使用してライ
    ト・アフタ・ライト及びライト・アフタ・リードデータ
    依存性を排除するレジスタ再ネーミング手段を含むレジ
    スタ変換手段を更に備えた請求項1又は2に記載のプロ
    セッサ。
  4. 【請求項4】 選択された命令に対し、シニア命令から
    ジュニア命令へ直接オペランド又は結果を送ることによ
    りデータ依存性を排除するためのデータ送り手段を更に
    備えた請求項1ないし3に記載のプロセッサ。
  5. 【請求項5】 複数の実行パイプラインを備え、各パイ
    プラインは、パイプラインへと発生された命令を処理し
    てプロセッサ状態を変更するような複数の段を有してい
    るスーパースカラーパイプライン式プロセッサにおい
    て、 上記パイプラインへ命令を発生するための命令発生手段
    と、 上記パイプラインにおける命令の相対的なシーケンスを
    監視し、そして命令が例外を生じさせることのある各パ
    イプラインの各段に対し、命令の例外状態を監視するた
    めのパイプ制御手段とを備え、 上記パイプ制御手段は、所与の段に対し、シニア命令が
    もはや例外を生じることがなくなる後までジュニア命令
    がシニア命令の前にプロセッサ状態を変更できないよう
    に、パイプラインにおける命令の流れを制御することを
    特徴とするプロセッサ。
  6. 【請求項6】 複数の実行パイプラインを備え、各パイ
    プラインは、パイプラインへと発生された命令を処理し
    てプロセッサ状態を変更するような複数の段を有してい
    るスーパースカラーパイプライン式プロセッサにおい
    て、 上記パイプラインへ命令を発生するための命令発生手段
    と、 パイプライン間で命令を選択的に切り換えるためのパイ
    プスイッチ手段を含むパイプ制御手段とを備え、 上記パイプスイッチ手段は、命令間の依存性を減少する
    ようにパイプラインにおける命令を順序付けすることを
    特徴とするプロセッサ。
  7. 【請求項7】 複数の実行パイプラインを備え、各パイ
    プラインは、パイプラインへと発生された命令を処理し
    てプロセッサ状態を変更するような実行段を含む複数の
    段を有するスーパースカラーパイプライン式プロセッサ
    において、 上記パイプラインへ命令を発生するための命令発生手段
    を備え、 選択された命令に対し、上記命令発生手段は、少なくと
    も2つのパイプラインへ単一の命令を発生し、 更に、上記パイプラインの各実行段へ独立したマイクロ
    命令流を与えるためのマイクロコントロール手段を備
    え、 各々の選択された命令に対し、上記マイクロコントロー
    ル手段は、少なくとも2つのパイプラインの実行段が独
    立して制御されてその選択された命令を処理するよう
    に、これら実行段へのマイクロ命令の流れを選択的に制
    御することを特徴とするプロセッサ。
  8. 【請求項8】 複数の実行パイプラインを備え、各パイ
    プラインは、パイプラインへと発生された命令を処理し
    てプロセッサ状態を変更するような複数の段を有するス
    ーパースカラーパイプライン式プロセッサにおいて、 上記パイプラインへ命令を発生するための命令発生手段
    と、 各パイプラインに対し、各段の状態情報を監視するため
    のパイプ制御手段とを備え、 各パイプラインに対し、上記パイプ制御手段は、命令が
    1つの段から別の段へ他のパイプラインの対応段におけ
    る他の命令の移動とは独立して進むことができるよう
    に、プロセッサ状態情報に応答して上記段間の命令の流
    れを制御することを特徴とするプロセッサ。
  9. 【請求項9】 複数の実行パイプラインを備え、各パイ
    プラインは、パイプラインへと発生された命令を処理し
    てプロセッサ状態を変更するような複数の段を有するス
    ーパースカラースーパーパイプライン式プロセッサにお
    いて、 上記パイプラインへ第1及び第2の命令を含む命令を発
    生するための命令発生手段と、 上記第1と第2の命令間の依存性を検出するためのパイ
    プ制御手段と、 上記パイプ制御手段による命令依存性の検出に応答し
    て、これら第1及び第2の命令間の依存性を排除するよ
    うにこれら命令の一方のオペランドソースを変更するた
    めのレジスタ変換手段とを備えたことを特徴とするプロ
    セッサ。
  10. 【請求項10】 実行パイプラインを備え、該パイプラ
    インは、パイプラインへと発生された命令を処理してプ
    ロセッサ状態を変更するような複数の段を有し、上記命
    令は、定められた1組の論理レジスタを参照するもので
    あるパイプライン式プロセッサにおいて、 上記論理レジスタの数を越える複数の物理レジスタを含
    んでいるレジスタファイルと、 上記物理レジスタを論理レジスタに割り当てると共に、
    各物理レジスタに対して、その物理レジスタがそれに対
    応する論理レジスタの現在値を保持するかどうかの指示
    を記憶するためのレジスタ変換手段とを備え、 行き先論理レジスタへ結果を書き込む命令に応答して、
    上記レジスタ変換手段は、新たな物理レジスタをその行
    き先論理レジスタに割り当て、そしてその新たな物理レ
    ジスタがその行き先論理レジスタに対する現在レジスタ
    であることを指示し、 更に、物理レジスタを割り当てる前に論理レジスタの各
    々に最も最近割り当てられた1組の物理レジスタを定め
    る状態情報をチェックポイント処理し、そしてこのよう
    にチェックポイント処理された状態情報を、割り当てを
    生じさせる命令に対する現在段に関連させるためのチェ
    ックポイント処理手段と、 上記割り当てを生じさせる命令によって生じた例外に応
    答して上記チェックポイント処理された状態情報を回復
    するために例外処理手段とを備えたことを特徴とするプ
    ロセッサ。
  11. 【請求項11】 実行パイプラインを備え、該パイプラ
    インは、パイプラインへと発生された命令を処理してプ
    ロセッサ状態を変更するような複数の段を有し、上記命
    令は、その命令のためのオペランドのソース及び行き先
    として多数のアドレス可能なサイズを有する定められた
    1組の論理レジスタを参照するものであるパイプライン
    式プロセッサにおいて、 上記論理レジスタの数を越える複数の物理レジスタを含
    んでいるレジスタファイルと、 上記論理レジスタの1つに書き込むための命令及び上記
    論理レジスタに関連したサイズに応答して上記論理レジ
    スタの上記1つに上記物理レジスタの1つを選択的に割
    り当てるためのレジスタ変換手段とを備えたことを特徴
    とするプロセッサ。
  12. 【請求項12】 実行パイプラインを備え、該パイプラ
    インは、パイプラインへと発生された命令を処理してプ
    ロセッサ状態を変更するような複数の段を有し、上記命
    令は、その命令のためのオペランドのソース及び行き先
    として多数のアドレス可能なサイズを有する定められた
    1組の論理レジスタを参照するものであるパイプライン
    式プロセッサにおいて、 上記論理レジスタの数を越える複数の物理レジスタを含
    んでいるレジスタファイルと、 各物理レジスタに、それが現在レジスタであるかどうか
    の指示と、物理レジスタが割り当てられる論理レジスタ
    を識別する論理IDコードとを関連させるスコアボード
    手段と、 要求された論理レジスタに対する論理IDコードを受け
    取り、そしてその受け取った論理IDコードを第2メモ
    リに記憶された論理IDコードと比較するためのレジス
    タ変換手段とを備え、 上記レジスタ変換手段は、上記受け取った論理IDコー
    ドが上記第2メモリに記憶された論理IDコードに対応
    する場合及び上記第1メモリが物理レジスタが現在レジ
    スタであることを指示する場合に物理IDコードを出力
    することを特徴とするプロセッサ。
  13. 【請求項13】 実行パイプラインを備え、該パイプラ
    インは、パイプラインへと発生された命令を処理してプ
    ロセッサ状態を変更するような複数の段を有し、上記命
    令は、その命令のためのオペランドのソース及び行き先
    として多数のアドレス可能なサイズを有する定められた
    1組の論理レジスタを参照するものであるパイプライン
    式プロセッサにおいて、 上記論理レジスタの数を越える複数の物理レジスタを含
    んでいるレジスタファイルと、 各々の論理レジスタに対し、その論理レジスタにデータ
    依存性が存在するかどうかを指示する信号を発生するた
    めのレジスタ変換手段とを備えたことを特徴とするプロ
    セッサ。
  14. 【請求項14】 実行パイプラインを備え、該パイプラ
    インは、パイプラインへと発生された命令を処理してプ
    ロセッサ状態を変更するような複数の段を有し、上記命
    令は、その命令のためのオペランドのソース及び行き先
    として多数のアドレス可能なサイズを有する定められた
    1組の論理レジスタを参照するものであるパイプライン
    式プロセッサにおいて、 各命令に対し、上記実行パイプラインの実行段における
    命令の実行を制御する一連のマイクロ命令を与えるため
    のマイクロコントロール手段と、 論理レジスタに関連した情報を記憶するための複数の物
    理レジスタを備えたレジスタファイルと、 物理レジスタを論理レジスタに割り当てるためのレジス
    タ変換手段とを備え、 選択された命令に対し、上記レジスタ変換手段は、上記
    マイクロコントロール手段からのマイクロ命令によって
    制御されるようにイネーブルされることを特徴とするプ
    ロセッサ。
JP25199094A 1993-10-18 1994-10-18 パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ Expired - Lifetime JP3678444B2 (ja)

Applications Claiming Priority (24)

Application Number Priority Date Filing Date Title
US13828093A 1993-10-18 1993-10-18
US13857293A 1993-10-18 1993-10-18
US13890293A 1993-10-18 1993-10-18
US13827893A 1993-10-18 1993-10-18
US13865593A 1993-10-18 1993-10-18
US13890193A 1993-10-18 1993-10-18
US13828193A 1993-10-18 1993-10-18
US13857493A 1993-10-18 1993-10-18
US13959793A 1993-10-18 1993-10-18
US13827293A 1993-10-18 1993-10-18
US13857393A 1993-10-18 1993-10-18
US13878993A 1993-10-18 1993-10-18
US08/138278 1993-10-18
US08/138901 1993-10-18
US08/138572 1993-10-18
US08/138789 1993-10-18
US08/138574 1993-10-18
US08/138281 1993-10-18
US08/138272 1993-10-18
US08/138280 1993-10-18
US08/139597 1993-10-18
US08/138573 1993-10-18
US08/138655 1993-10-18
US08/138902 1993-10-18

Publications (2)

Publication Number Publication Date
JPH07152559A true JPH07152559A (ja) 1995-06-16
JP3678444B2 JP3678444B2 (ja) 2005-08-03

Family

ID=27583764

Family Applications (1)

Application Number Title Priority Date Filing Date
JP25199094A Expired - Lifetime JP3678444B2 (ja) 1993-10-18 1994-10-18 パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ

Country Status (3)

Country Link
EP (2) EP0779577B1 (ja)
JP (1) JP3678444B2 (ja)
DE (1) DE69408769T2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271582A (ja) * 1994-03-31 1995-10-20 Internatl Business Mach Corp <Ibm> オペレーションの処理システム及び方法
JP2012008622A (ja) * 2010-06-22 2012-01-12 Fujitsu Ltd 演算ユニット
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器
JP2015201216A (ja) * 2006-08-02 2015-11-12 クゥアルコム・インコーポレイテッドQualcomm Incorporated マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2021163449A (ja) * 2020-04-01 2021-10-11 晶心科技股▲ふん▼有限公司Andes Technology Corporation 自己リセットレジスタスコアボードを備えたマイクロプロセッサ

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5742840A (en) * 1995-08-16 1998-04-21 Microunity Systems Engineering, Inc. General purpose, multiple precision parallel operation, programmable media processor
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US6643765B1 (en) 1995-08-16 2003-11-04 Microunity Systems Engineering, Inc. Programmable processor with group floating point operations
US5649138A (en) * 1996-01-04 1997-07-15 Advanced Micro Devices Time dependent rerouting of instructions in plurality of reservation stations of a superscalar microprocessor
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
US5870578A (en) * 1997-12-09 1999-02-09 Advanced Micro Devices, Inc. Workload balancing in a microprocessor for reduced instruction dispatch stalling
US6216222B1 (en) * 1998-05-14 2001-04-10 Arm Limited Handling exceptions in a pipelined data processing apparatus
EP1004959B1 (en) 1998-10-06 2018-08-08 Texas Instruments Incorporated Processor with pipeline protection
EP0992896A1 (en) * 1998-10-06 2000-04-12 Texas Instruments Inc. Pipeline protection
US6862563B1 (en) 1998-10-14 2005-03-01 Arc International Method and apparatus for managing the configuration and functionality of a semiconductor design
US7117342B2 (en) 1998-12-03 2006-10-03 Sun Microsystems, Inc. Implicitly derived register specifiers in a processor
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US7114056B2 (en) 1998-12-03 2006-09-26 Sun Microsystems, Inc. Local and global register partitioning in a VLIW processor
CN1217261C (zh) * 1999-05-13 2005-08-31 Arc国际美国控股公司 用于处理器流水线分段法及再装配的方法以及装置
US6587940B1 (en) * 2000-01-18 2003-07-01 Hewlett-Packard Development Company Local stall/hazard detect in superscalar, pipelined microprocessor to avoid re-read of register file
WO2001069411A2 (en) 2000-03-10 2001-09-20 Arc International Plc Memory interface and method of interfacing between functional entities
KR20030017982A (ko) * 2000-06-02 2003-03-04 선 마이크로시스템즈 인코포레이티드 브이.엘.아이.더블유. 프로세서에서 부분적으로파이프라인으로 연결된 명령을 동기시키는 방법
US6993641B2 (en) 2000-11-08 2006-01-31 Pts Corporation Stall control
US7000095B2 (en) 2002-09-06 2006-02-14 Mips Technologies, Inc. Method and apparatus for clearing hazards using jump instructions
US7124318B2 (en) * 2003-09-18 2006-10-17 International Business Machines Corporation Multiple parallel pipeline processor having self-repairing capability
US20060095732A1 (en) * 2004-08-30 2006-05-04 Tran Thang M Processes, circuits, devices, and systems for scoreboard and other processor improvements
US7571304B2 (en) 2005-03-18 2009-08-04 Sun Microsystems, Inc. Generation of multiple checkpoints in a processor that supports speculative execution
US7634641B2 (en) 2005-03-18 2009-12-15 Sun Microsystems, Inc. Method and apparatus for using multiple threads to spectulatively execute instructions
US8127113B1 (en) 2006-12-01 2012-02-28 Synopsys, Inc. Generating hardware accelerators and processor offloads
CN110187883B (zh) * 2019-05-17 2022-12-06 湖南科技大学 一种面向指令目标操作数的寄存器对分配方法及存储介质

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0762823B2 (ja) 1985-05-22 1995-07-05 株式会社日立製作所 デ−タ処理装置
US4752973A (en) * 1986-05-05 1988-06-28 Wolfberg Larry B Glove
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
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
US5019967A (en) * 1988-07-20 1991-05-28 Digital Equipment Corporation Pipeline bubble compression in a computer system
US5150469A (en) * 1988-12-12 1992-09-22 Digital Equipment Corporation System and method for processor pipeline control by selective signal deassertion
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
CA2016068C (en) * 1989-05-24 2000-04-04 Robert W. Horst Multiple instruction issue computer architecture
DE69033239T2 (de) * 1989-09-25 2000-01-05 Matsushita Electric Ind Co Ltd Rechner mit Pipeline-Struktur
EP0514763A3 (en) * 1991-05-20 1993-08-25 Motorola, Inc. A data processor having a logical register content-addressable memory
US5363495A (en) * 1991-08-26 1994-11-08 International Business Machines Corporation Data processing system with multiple execution units capable of executing instructions out of sequence
GB2263565B (en) * 1992-01-23 1995-08-30 Intel Corp Microprocessor with apparatus for parallel execution of instructions
WO1993020505A2 (en) * 1992-03-31 1993-10-14 Seiko Epson Corporation Superscalar risc instruction scheduling
DE69425311T2 (de) 1993-10-18 2001-03-15 Nat Semiconductor Corp Mikroprozessor mit spekulativer Befehlsausführung
EP0649084A1 (en) 1993-10-18 1995-04-19 Cyrix Corporation Microprocessor branch processing
EP0649083B1 (en) 1993-10-18 2000-07-19 National Semiconductor Corporation A microcontrol unit for a superpipelined, superscalar microprocessor
EP0651331B1 (en) 1993-10-18 2002-01-09 National Semiconductor Corporation A write buffer for a superpipelined, superscalar microprocessor

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07271582A (ja) * 1994-03-31 1995-10-20 Internatl Business Mach Corp <Ibm> オペレーションの処理システム及び方法
JP2015201216A (ja) * 2006-08-02 2015-11-12 クゥアルコム・インコーポレイテッドQualcomm Incorporated マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2017138993A (ja) * 2006-08-02 2017-08-10 クゥアルコム・インコーポレイテッドQualcomm Incorporated マイクロプロセッサ内の複数のレジスタ部を組み合わせる方法およびシステム
JP2012008622A (ja) * 2010-06-22 2012-01-12 Fujitsu Ltd 演算ユニット
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器
JP2021163449A (ja) * 2020-04-01 2021-10-11 晶心科技股▲ふん▼有限公司Andes Technology Corporation 自己リセットレジスタスコアボードを備えたマイクロプロセッサ

Also Published As

Publication number Publication date
EP0779577A2 (en) 1997-06-18
EP0779577A3 (ja) 1997-09-17
JP3678444B2 (ja) 2005-08-03
EP0649085A1 (en) 1995-04-19
DE69408769D1 (de) 1998-04-09
DE69408769T2 (de) 1998-07-09
EP0779577B1 (en) 2002-05-22
EP0649085B1 (en) 1998-03-04

Similar Documents

Publication Publication Date Title
JP3678444B2 (ja) パイプ制御及びレジスタ変換機能を増強したスーパースカラーパイプライン式のプロセッサ
US6138230A (en) Processor with multiple execution pipelines using pipe stage state information to control independent movement of instructions between pipe stages of an execution pipeline
US5630149A (en) Pipelined processor with register renaming hardware to accommodate multiple size registers
US5692168A (en) Prefetch buffer using flow control bit to identify changes of flow within the code stream
US5835951A (en) Branch processing unit with target cache read prioritization protocol for handling multiple hits
US5706491A (en) Branch processing unit with a return stack including repair using pointers from different pipe stages
JP2597811B2 (ja) データ処理システム
US5835967A (en) Adjusting prefetch size based on source of prefetch address
US5584009A (en) System and method of retiring store data from a write buffer
US6073231A (en) Pipelined processor with microcontrol of register translation hardware
US7584346B1 (en) Method and apparatus for supporting different modes of multi-threaded speculative execution
US5732243A (en) Branch processing unit with target cache using low/high banking to support split prefetching
JPH07334364A (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
JP3678443B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用の書き込みバッファ
JP2001273139A (ja) スーパースカラ処理装置、データ処理方法及びコンピュータシステム
GB2287111A (en) Pipelined processing of instructions
JP2005071394A (ja) スーパースケーラマイクロプロセサに於て命令をリタイアさせるシステム及び方法
US5732253A (en) Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches
US10310859B2 (en) System and method of speculative parallel execution of cache line unaligned load instructions
US10067875B2 (en) Processor with instruction cache that performs zero clock retires
EP0649084A1 (en) Microprocessor branch processing
EP0649086B1 (en) Microprocessor with speculative execution
US20050223201A1 (en) Facilitating rapid progress while speculatively executing code in scout mode
US5740416A (en) Branch processing unit with a far target cache accessed by indirection from the target cache
JP3736866B2 (ja) スーパーパイプライン式スーパースカラーマイクロプロセッサ用のマイクロコントロールユニット

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040907

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040921

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20041221

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20041227

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050310

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050411

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050510

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20090520

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100520

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110520

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120520

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20130520

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20130520

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term