JPH07334361A - 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置 - Google Patents

命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置

Info

Publication number
JPH07334361A
JPH07334361A JP7134011A JP13401195A JPH07334361A JP H07334361 A JPH07334361 A JP H07334361A JP 7134011 A JP7134011 A JP 7134011A JP 13401195 A JP13401195 A JP 13401195A JP H07334361 A JPH07334361 A JP H07334361A
Authority
JP
Japan
Prior art keywords
program counter
instruction
counter value
circuit
value
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
JP7134011A
Other languages
English (en)
Other versions
JP3628379B2 (ja
Inventor
David S Christie
デイビッド・エス・クリスティー
Scott A White
スコット・エイ・ホワイト
Michael D Goddard
マイケル・ディー・ゴッダード
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of JPH07334361A publication Critical patent/JPH07334361A/ja
Application granted granted Critical
Publication of JP3628379B2 publication Critical patent/JP3628379B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Image Processing (AREA)

Abstract

(57)【要約】 【目的】 マイクロプロセッサのプログラムカウンタ値
を更新するためのメカニズムを提供する。 【構成】 フェッチプログラムカウンタ回路と実行プロ
グラムカウンタ回路とを含むプロセッサ100が開示さ
れる。フェッチプログラムカウンタ回路はフェッチプロ
グラムカウンタ値に加えて下位プログラムカウンタ値を
も与える。実行プログラムカウンタ回路は、下位プログ
ラムカウンタ値ビットを用いて実行プログラムカウンタ
値を発生する。実行プログラムカウンタ回路は複数個の
下位プログラムカウンタビット値を受取り、1つの下位
プログラムカウンタビット値を選択して、それにより多
重パイプラインプロセッサにおける実行プログラムカウ
ンタ値を発生する。

Description

【発明の詳細な説明】
【0001】
【発明の背景】この発明はマイクロプロセッサに関し、
より特定的にはマイクロプロセッサのプログラムカウン
タ値を更新するためのメカニズムに関する。
【0002】マイクロプロセッサとは1つまたは非常に
少数の半導体チップ上で実現されるプロセッサである。
半導体チップ技術はマイクロプロセッサ内の回路密度お
よびスピードをますます増大させているが、しかしなが
らマイクロプロセッサと外部メモリとの間の配線は、パ
ッケージング技術によって制限されている。オンチップ
配線は極めて安価であるが、オフチップ配線は非常に高
価である。マイクロプロセッサの性能を改善することを
意図するいかなる技術も、増大した回路密度およびスピ
ードを利用する一方でパッケージング技術およびプロセ
ッサとその外部メモリとの間の物理的な分離の制限内に
留まらなければならない。回路密度を高めることによっ
て、より一層複雑な設計への道が開けるとはいえ、マイ
クロプロセッサの動作はユーザがそのマイクロプロセッ
サをどうやって使うか理解できるように単純かつ明快な
もののままでなければならない。
【0003】既存のマイクロプロセッサの大多数はスカ
ラ計算を目的としているが、スーパースカラマイクロプ
ロセッサはマイクロプロセッサの進化における次の論理
的なステップである。スーパースカラという語は、スカ
ラ命令の同時実行によって性能を向上させたコンピュー
タの実現例を表わす。スカラ命令は、汎用マイクロプロ
セッサにおいて典型的に見出されるタイプの命令であ
る。今日の半導体処理技術を用いれば、単一のプロセッ
サチップにかつては大規模科学計算用プロセッサにしか
応用できなかった高性能な技術を組入れることができ
る。しかしながら、大規模プロセッサに応用される技術
の多くは、スカラ計算には不適切であるか、マイクロプ
ロセッサに応用するにはあまりに高価であるかのどちら
かである。
【0004】マイクロプロセッサはアプリケーションプ
ログラムを実行する。1つのアプリケーションプログラ
ムには、命令のグループが含まれる。アプリケーション
プログラムを実行するにあたって、プロセッサは何らか
のシーケンスにおいて命令をフェッチし、実行する。1
つの命令の実行にさえ、いくつかのステップが関わって
いる。このステップは、命令をフェッチするステップ
と、それをデコードするステップと、そのオペランドを
組立てるステップと、命令によって特定される動作を行
なうステップと、命令の結果を記憶装置に書込むステッ
プとを含む。命令の実行は周期的クロック信号によって
制御される。クロック信号の周期はプロセッサのサイク
ル時間である。
【0005】プロセッサがプログラムを完了させるのに
かかる時間は、3つの要因によって決定される。すなわ
ち、そのプログラムを実行するのに必要な命令の数と、
1つの命令を実行するのに必要なプロセッササイクルの
平均数と、プロセッサのサイクル時間とである。プロセ
ッサの性能はプロセッサがプログラムを完了させるのに
かける時間を低減することによって向上するが、これに
はこれらの要因の1つ以上を低減することが要求され
る。
【0006】マイクロプロセッサの性能を向上させる1
つの方法は、パイプライン化と呼ばれる技術を用いて、
異なった命令におけるステップを重複させることによる
ものである。命令をパイプライン化するには、命令実行
の様々なステップがパイプライン段と呼ばれる独立的な
ユニットによって行なわれる。パイプライン段はクロッ
クドレジスタによって分離される。異なった命令のステ
ップが、異なったパイプライン段において独立的に実行
される。パイプライン化は、命令を重複させ、それによ
りプロセッサが同時に1つより多くの命令を扱うことが
できるようにすることによって、1つの命令の実行に必
要な総合的な時間を、短縮することはないものの、命令
の実行に必要なサイクルをかなりの数、低減する。これ
はプロセッサのサイクル時間を増大させることなく、ま
たしばしば低減して行なわれる。パイプライン化は、典
型的には命令1つあたりのサイクルの平均数を3のファ
クタ分も低減する。しかしながら、分岐命令を実行する
場合、パイプラインは時折、分岐動作の結果が知られ、
正しい命令が実行のためにフェッチされるまで、止まっ
てしまうかもしれない。この遅延は、分岐遅延ペナルテ
ィとして知られている。パイプライン段の数を増やすこ
とは、典型的には命令1つあたりのサイクルの平均数に
関連して分岐遅延ペナルティを増やすことにも繋がる。
【0007】典型的なマイクロプロセッサは、1つ1つ
のプロセッササイクルごとに1つの命令を実行する。ス
ーパースカラプロセッサが低減する命令1つあたりのサ
イクルの平均数は、異なったパイプライン段での命令の
同時実行を可能にするだけでなく、同一のパイプライン
段において命令を同時に実行できるようにすることによ
り、パイプライン化されたスカラプロセッサで可能な数
を超える。スーパースカラという語は、科学計算でよく
あるようなベクトルまたはアレイ上での多数の同時動作
と区別される、スカラ量上での多数の同時動作を強調す
るものである。
【0008】スーパースカラプロセッサはコンセプトと
しては単純であるが、性能の向上を達成するには、プロ
セッサのパイプラインを広くする以上のことがなされて
いる。パイプラインを広くすればサイクル1つあたりに
1つより多くの命令を実行することが可能になるが、命
令における所与のどのシーケンスもこの能力を利用でき
るという保証はない。命令は互いに独立しているのでは
なく、相互に関連しており、これらの相関のせいで、命
令によっては同一のパイプライン段に入ることが妨げら
れる。さらに、命令をデコードし、実行するためのプロ
セッサのメカニズムは、同時に実行され得る命令を発見
する能力において大きな違いとなり得る。
【0009】スーパースカラ技術は、命令のセットおよ
び他のアーキテクチャ的な特徴からは独立したプロセッ
サ機構に大きく関わっている。したがって、スーパース
カラ技術の魅力の1つは、既存のアーキテクチャとコー
ドの互換性があるプロセッサを開発できる可能性であ
る。多くのスーパースカラ技術は、縮小命令セットコン
ピュータ(RISC)または複合命令セットコンピュー
タ(CISC)アーキテクチャのいずれにも等しく良好
に適用される。しかしながら、RISCアーキテクチャ
の多くにおける規則性のため、スーパースカラ技術は最
初はRISCプロセッサの設計に応用されてきた。
【0010】命令ポインタ(IP)とも呼ばれる、プロ
グラムカウンタ(PC)は、命令がメモリからフェッチ
され実行される際の、命令のメモリアドレスを保存す
る。プログラムカウンタとして言及される、プログラム
カウンタ値を維持し更新するためのプログラムカウンタ
メカニズムは、インクリメンタと、セレクタと、レジス
タとを含む。各命令がフェッチされデコードされるにつ
れ、次の順次命令のアドレスが、インクリメンタを用い
てプログラムカウンタの現在の値に現在の命令のバイト
長を加え、この次の順次命令をレジスタ内に位置づける
ことによって、形成される。分岐が行なわれると、目的
命令のアドレスが増分された値の代わりにセレクタによ
って選択され、この目的アドレスがレジスタ内に位置づ
けられる。
【0011】プログラムカウンタ値は2つの目的を果た
す。プログラムカウンタ値は、フェッチされ実行される
べき次の命令のメモリアドレスを提供する。プログラム
カウンタ値はまた、命令ストリームの実行を止めた問題
に遭遇した命令のアドレスを識別する。このアドレスは
デバッグをする目的で、または訂正動作が行なわれた後
でなされるかもしれない命令ストリームの実行の続行の
ために用いられてもよい。
【0012】マイクロプロセッサにおいてパイプライン
化の実現例を用いる場合、プログラムカウンタ値は、こ
の値が命令フェッチアドレスを提供するパイプラインの
始めに維持される。この値はフェッチPC値として言及
される。このフェッチPC値はパイプラインに入る命令
を指し示す。命令がパイプライン段に沿って伝播するに
つれ、後続する命令がフェッチされ、パイプライン内に
位置づけられる。したがって、フェッチPC値は第1段
以外のパイプラインの段にある命令には対応しない。命
令ストリームの実行を止める問題のほとんどは、パイプ
ラインの初めよりも終わりの近く、または終わりにおい
て検出される傾向にあるので、命令のためのプログラム
カウンタ値は命令が実行されている間維持されていなけ
ればならない。この値は実行PC値と呼ばれる。
【0013】実行PC値を維持するには2つの方法が知
られている。第1の方法は、ある命令のPC値が、その
命令とともにパイプラインを下っていくためのものであ
る。この方法では、各パイプライン段は実行PC値をス
トアするための付加的な記憶装置を必要とする。必要と
される付加的な記憶装置の量は、パイプライン段の数に
比例する。第2の方法は、パイプラインの終わりにおい
てDC回路を二重にするものである。この方法では、命
令の長さの情報だけがパイプライン内の命令に伴う。非
分岐命令が完了する際、命令の長さの値は実行PC値に
加算され、次の命令のための実行PC値が提供される。
分岐命令の完了にあたっては、増分された値ではなく、
その分岐のための目的アドレスが実行PC値として提供
される。
【0014】
【発明の概要】別個に下位プログラムカウンタ値ビット
を提供するフェッチプログラムカウンタ回路と、下位プ
ログラムカウンタ値ビットを用いて実行プログラムカウ
ンタ値を発生する実行プログラムカウンタ回路とを設け
ることによって、実行プログラムカウンタ値を迅速かつ
効率的に発生することが可能になるということが発見さ
れている。また、複数個の下位プログラムカウンタビッ
ト値を受取り、単一の下位プログラムカウンタビット値
を選択する、実行プログラムカウンタ回路を設けること
により、多重パイプラインプロセッサにおいて実行プロ
グラムカウンタ値を容易に発生することが可能になると
いうことも、発見されている。
【0015】
【詳細な説明】この発明を実施するために企図されるベ
ストモードの詳細な説明を以下に述べる。この説明は本
発明にとって例示的なものとして意図されており、限定
的なものととられるべきではない。
【0016】図1を参照して、本発明はX86命令セッ
トを実行するスーパースカラX86マイクロプロセッサ
100との関連で最もよく理解することができる。マイ
クロプロセッサ100は486XLバスまたは他の従来
のマイクロプロセッサバスを介して物理的にアドレス指
定された外部メモリ101に結合される。マイクロプロ
セッサ100は命令キャッシュ104を含み、命令キャ
ッシュ104はバイトキュー106に結合され、バイト
キュー106は命令デコーダ108に結合される。命令
デコーダ108はRISCコア110に結合される。R
ISCコア110は、レジスタファイル112およびリ
オーダバッファ114を、算術論理ユニット131(A
LU0)および算術論理ユニット・シフトユニット13
2(ALU1 & SHF)、特殊レジスタブロック1
33(SRB)、ロード/ストアユニット134(LS
SEC)、分岐セクション135(BRNSEC)、お
よび浮動小数点ユニット136(FPU)などの様々な
機能ユニットとともに含む。
【0017】RISCコア110は、AおよびBオペラ
ンドバス116、タイプおよびディスパッチ(TAD)
バス118、および結果バス140を含み、これらは機
能ユニットならびに変位および命令ストア(INLS)
バス119に結合され、この変位および命令ロードスト
ア(INLS)バス119は、命令デコーダ108とロ
ード/ストアユニット134との間に結合される。Aお
よびBオペランドバス116は、レジスタファイル11
2およびリオーダバッファ114にも結合される。TA
Dバス118は命令デコーダ108にも結合される。結
果バス140はリオーダバッファ114にも結合され
る。加えて、分岐セクション135はリオーダバッファ
114、命令デコーダ108、および命令キャッシュ1
04にX目的バス103を経由して結合される。Aおよ
びBオペランドバス116は4本の並列41ビット幅A
オペランドバスおよび4本の並列41ビット幅Bオペラ
ンドバス、ならびに4本の並列12ビット幅Aタグバ
ス、4本の並列12ビット幅Bタグバス、1本の12ビ
ット幅Aタグ有効バス、1本の12ビット幅Bタグ有効
バス、4本の4ビット幅行先タグバス、および4本の8
ビット幅オペレーションコードバスを含む。タイプおよ
びディスパッチバス118は、4本の3ビット幅タイプ
コードバスおよび1本の4ビット幅ディスパッチバスを
含む。変位およびINLSバス119は、2本の32ビ
ット幅変位バスおよび2本の8ビット幅INLSバスを
含む。
【0018】命令キャッシュ104に加えて、マイクロ
プロセッサ100はデータキャッシュ150(DCAC
HE)および物理タグ回路162をも含む。データキャ
ッシュ150はRISCコアのロード/ストア機能ユニ
ット134に結合され、かつプロセッサ内アドレスおよ
びデータ(IAD)バス102に結合される。命令キャ
ッシュ104はまた、IADバス102とも結合され
る。物理タグ回路162は、命令キャッシュ104とデ
ータキャッシュ150との双方と、IADバスを介して
対話する。命令キャッシュ104およびデータキャッシ
ュ150は双方とも線形にアドレス可能なキャッシュで
ある。命令キャッシュ104およびデータキャッシュ1
50は物理的には分離しているが、しかしながらこれら
のキャッシュは双方とも同じアーキテクチャを用いて編
成される。
【0019】マイクロプロセッサ100はまた、メモリ
管理ユニット(MMU)164とバスインタフェースユ
ニット160(BIU)とを含む。TLB164はIA
Dバスと物理タグ回路162とに結合される。バスイン
タフェースユニット160は物理タグ回路162、デー
タキャッシュ150、ならびにIADバス102および
486XLバスなどの外部マイクロプロセッサバスに結
合される。
【0020】マイクロプロセッサ100は命令のシーケ
ンスを含むコンピュータプログラムを実行する。コンピ
ュータプログラムは典型的には、ハードディスク、フロ
ッピーディスク、またはコンピュータシステム内に位置
づけられる他の不揮発性記憶媒体にストアされる。プロ
グラムが実行されると、そのプログラムは記憶媒体から
メインメモリ101にロードされる。一旦プログラムに
おける命令および関連のデータがメインメモリ101内
に入ると、個々の命令が実行のために準備され、最後に
マイクロプロセッサ100によって実行される。
【0021】メインメモリ101内にストアされた後、
命令はバスインタフェースユニット160を経由して命
令キャッシュ104に送られ、そこで命令は一時的に保
持される。X86命令は命令キャッシュ104によっ
て、命令キャッシュ104が発生するフェッチプログラ
ムカウンタ値を用いて命令デコーダ108に与えられ
る。
【0022】命令デコーダ108は命令を調べ、行なう
べき適切な動作を判断する。たとえば、デコーダ108
はある特定の命令が、PUSH、POP、LOAD、S
TORE、AND、OR、EXOR、ADD、SUB、
NOP、JUMP、条件付きJUMP(BRANC
H)、または他の命令のいずれであるかを判断するだろ
う。デコーダ108がどの特定の命令を存在しているも
のと判断するかに従い、対応する1つまたは複数のRI
SC動作(ROP)がRISCコア110の適切な機能
ユニットにディスパッチされ、各ROPまたはROPの
セットに対応するデコードPC値が発生される。デコー
ドPC値はフェッチPC値と非同期に発生される。
【0023】命令は、典型的には次に述べるフォーマッ
トで複数のフィールドを含む。すなわちこのフォーマッ
トは、OP CODE、OPERAND A、OPER
AND B、およびDESTINATIONである。た
とえば、命令ADD A,B,Cは、レジスタAの内容
をレジスタBの内容に加算し、その結果をレジスタCの
中に位置づけろ、という意味である。LOADおよびS
TORE動作は、わずかに異なったフォーマットを用い
る。たとえば、命令LOAD A,B,Cは、アドレス
から検索されたデータを結果バス上に位置づけろ、とい
うことを意味し、ここにおいてA、B、およびCはAオ
ペランドバス、Bオペランドバス、および変位バス上に
位置づけられたアドレスの構成要素を表わし、これらの
アドレスの構成要素は組合せられて論理アドレスを提供
し、この論理アドレスはセグメントベースと組合せられ
て線形アドレスを提供し、この線形アドレスからデータ
は検索される。またたとえば、命令STORE A,
B,Cは、あるアドレスによって指し示された位置にデ
ータをストアしろという意味であり、ここでAはAオペ
ランドバス上に位置づけられたストアデータであり、B
およびCはBオペランドバスおよび変位バス上に位置づ
けられたアドレスの構成要素を表わしており、これらの
アドレスの構成要素は組合せられて論理アドレスを形成
し、この論理アドレスはセグメントベースと結合されて
線形アドレスを提供し、この線形アドレスにデータはス
トアされる。
【0024】OP CODEは、命令デコーダ108か
らオペレーションコードバスを介してRISCコア11
0の機能ユニットへ与えられる。特定の命令のためのO
PCODEが適切な機能ユニットに与えられなければな
らないだけでなく、命令のための指定されたOPERA
NDも検索され、機能ユニットに送られなければならな
い。特定のオペランドの値がまだ計算されていなけれ
ば、機能ユニットが命令を実行できるようになる前に、
まずその値が計算され機能ユニットに与えられなければ
ならない。たとえば、現在の命令が先行する命令に依存
する場合、現在の命令が実行できるようになる前に、先
行する命令の結果が決定されなければならない。この状
況は、依存性と呼ばれる。
【0025】特定の命令が機能ユニットによって実行さ
れるために必要なオペランドは、レジスタファイル11
2、リオーダバッファ114によってオペランドバスに
与えられるか、結果バス140を介して機能ユニットか
ら送られるかのいずれかである。オペランドバスはオペ
ランドを適切な機能ユニットに伝える。一旦機能ユニッ
トがOP CODE、OPERAND A、およびOP
ERAND Bを受取ると、機能ユニットはその命令を
実行し、その結果を結果バス140に位置づける。結果
バス140はすべての機能ユニットの出力およびリオー
ダバッファ114に結合されている。
【0026】リオーダバッファ114は先入れ先出し
(FIFO)装置として管理される。ある命令が命令デ
コーダ108によってデコードされると、対応するエン
トリがリオーダバッファ114内に割当てられる。命令
によって計算された結果値は次に、その命令の実行が完
了すると割当てられたエントリに書込まれる。結果値は
続いてレジスタファイル112に書込まれ、命令に関連
づけられた例外がなく、命令に影響を与える未決定の推
論的分岐がなければ、その命令はリタイアされる。命令
がリタイアされると、それに関連の実行プログラムカウ
ンタ値もレジスタファイル112内のプログラムカウン
タレジスタにストアされる。関連のエントリがリオーダ
バッファ114の先頭に到達しても命令が完了していな
かった場合、リオーダバッファ114の進行はその命令
が完了するまで止められる。しかしながらさらなるエン
トリを割当て続けることができる。
【0027】各機能ユニットは、その命令のためのオペ
ランドがまだ機能ユニットにとって利用可能なものでは
ないためにまだ完了していない命令からのOP COD
Eをストアするためのそれぞれの予約ステーション回路
(RS)120〜126を含む。各予約ステーション回
路は命令のOP CODEをタグとともにストアする。
このタグは後に予約ステーション回路に到達するであろ
う欠けているオペランドのための場所を予約しておくも
のである。この技術は、未決定の命令が予約ステーショ
ンにおいてそのオペランドとともに組立てられている間
に、マイクロプロセッサ100が他の命令を実行し続け
ることができるようにすることによって、性能を強化す
るものである。
【0028】マイクロプロセッサ100は、デコーダ1
08をRISCコア110の機能ユニットから分離する
ことによって、順序が乱れた発行に対処する。より特定
的には、リオーダバッファ114および機能ユニットの
予約ステーションは、分布命令ウインドウを効果的に確
立する。したがって、デコーダ108は命令がすぐには
実行できない場合でさえ、命令のデコードを続けること
ができる。命令ウインドウは命令のプールとして働く。
この命令のプールから、機能ユニットは前に進み続けつ
つ命令を引出し、実行する。命令ウインドウはこのよう
にして、マイクロプロセッサ100にルックアヘッド能
力をもたらす。依存性がクリアされ、オペランドが利用
可能なものとなるにつれ、ウインドウ内のより多くの命
令が機能ユニットによって実行され、デコーダはさらに
多くのデコードされた命令でウインドウを充填し続け
る。
【0029】マイクロプロセッサ100はRISCコア
の分岐セクション135を用いてその性能を強化する。
分岐が起こると、次の命令はその分岐の結果に依存する
ので、プログラムにおける命令ストリーム内の分岐はマ
イクロプロセッサの命令をフェッチする能力の妨げとな
る。分岐セクション135は、分岐が行なわれるべきか
どうかを判断する。加えて、命令キャッシュ104は先
行する分岐の結果の実行記録をとり続けるための分岐目
的バッファを含む。この記録に基づき、ある特定のフェ
ッチされた分岐の間に、フェッチされた分岐命令がどの
分岐をとるであろうかを決定するための判断がなされ
る。例外または分岐セクション135の決定に基づく分
岐の誤予測があれば、その場合誤って予測された分岐命
令に続いて割当てられたリオーダバッファ114の内容
は廃棄される。
【0030】図2は、命令キャッシュ104のブロック
図である。「可変バイト長命令に特に適した、プリデコ
ードされた命令キャッシュおよびそのための方法(Pre-
Decoded Instruction Cache and Method Therefor Part
iculary Suitable for Variable Byte-Length Instruct
ions)」と題された連続番号 で出願日が の米
国出願が、引用により援用されており、命令キャッシュ
104の構造および動作をより詳細に述べている。
【0031】命令キャッシュ104は線形にアドレス指
定された16キロバイトのフォーウェイセットアソシア
ティブキャッシュである。各セットは256個のエント
リを含み、各エントリは16バイト命令ブロックと、線
形アドレスタグと、次に予測実行される分岐情報とを含
む。命令キャッシュ104はキャッシュ制御装置170
と、アドレス回路172と、プリデコード回路174
と、キャッシュアレイ176とを含む。キャッシュ制御
装置170は、命令キャッシュ104の様々な動作を統
制するための制御信号を与える。アドレス回路172
は、分岐セクション135から受取られる論理目的プロ
グラムカウンタ(TARGET PC)に基づく線形フ
ェッチプログラムカウンタ(FETCH PC)、また
は線形タグアレイ182からの線形タグ、およびサクセ
サアレイからの対応するサクセサ情報を発生する。アド
レス回路172はまた、アドレスの発生と、外部メモリ
からのプリフェッチ命令に関連のX86保護検査とをも
たらす。アドレス回路172は論理アドレスと線形アド
レスとの間の変換を行なうための変換回路として機能す
る。プリデコード回路174はIADバス102を介し
てプリフェッチされたX86命令バイトを受取り、各X
86命令バイトのためのプリデコードビットを割当て、
プリデコードされたX86命令バイトをキャッシュアレ
イ176の中に書込む。キャッシュアレイ176はプリ
デコード回路174から受取られた命令をストアし、線
形FETCH PC信号によってアドレス指定される
と、これらの命令をバイトキュー106に与える。
【0032】キャッシュアレイ176は3つの主要なア
レイに編成される。それらはすなわち、命令キャッシュ
ストアアレイ180と、線形タグアレイ182と、サク
セサアレイ184とである。命令キャッシュストアアレ
イ180は、16バイト命令をストアする。線形タグア
レイ182は、命令に対応する線形アドレスタグをスト
アする。サクセサアレイ184は、命令に対応する、分
岐予測をサポートするために用いられる予測された分岐
情報をストアする。これらのアレイの各々は、アドレス
回路172によって提供される、線形FETCH PC
アドレスによってアドレス指定されている。
【0033】図3を参照して、命令デコーダ108は2
段のパイプライン化されたデコーダであって、これはバ
イトキュー106からプリデコードされたX86命令バ
イトを受取り、それらをそれぞれのROPのシーケンス
に変換し、複数個のディスパッチ位置からROPを迅速
にディスパッチする。多数命令発行のための機会を最大
限にするため、最も単純な命令についてはこの変換はハ
ードワイヤード高速変換経路内で扱われる。好ましい実
施例では、ハードワイヤード高速変換経路は3つのRO
Pまたはそれ未満のものにマッピングするX86命令に
適用される。3つより多くのROPを必要とする命令お
よびあまり使われない命令は、マイクロコードROM内
に含まれるマイクロコードシーケンスによって扱われ
る。X86命令がマイクロコードROMにマッピングし
たときには常に、プリデコードされたX86命令情報が
複数のディスパッチ位置において二重にされ、各ディス
パッチ位置が独立的かつ他のディスパッチ位置と並行に
動けるようにする。
【0034】第1のデコード段では、命令デコーダ10
8はX86のプリデコードされた命令のためのROPが
高速経路において発生されるべきかマイクロコードRO
M経路において発生されるべきかを決定する。ROPシ
ーケンスのための情報は、ROPを4つまで用いて1サ
イクルあたり4つまでのX86命令のための高速経路論
理によって発生されるか、または1つのプリデコードさ
れたX86命令のためのマイクロコードROMから読出
されるかのいずれかである。高速経路およびROPを発
生することが要求されているマイクロコードROM経路
からの情報は、ROPがそこに行くことが指定されてい
る機能ユニットのタイプ、機能ユニットで実行されるべ
き特定の単純なRISCのような命令、ROPのための
ソースおよび行先ポインタ、ROPのサイズ情報、ロー
ドまたはストアROPの場合のアドレス指定モード、な
らびにもしあればROPのための命令からの即値フィー
ルドを含む。好ましくは、マイクロコードROMアクセ
スは高速経路デコード機能とは混合されない。これによ
りマイクロコードROPをシフトしなければならなくな
ることが回避される。第2のデコード段では、命令デコ
ーダ108は高速経路またはマイクロコードROMのい
ずれかからのROP情報を選択して増加させ、完全なR
OPをもたらし、これらは機能ユニット131〜136
において実行される。
【0035】命令デコーダ108はまた、完全にディス
パッチされプリデコードされたX86命令がバイトキュ
ー106の外へシフトされ、次のディスパッチされてい
ないまたは部分的にディスパッチされているプリデコー
ドされたX86命令が「キューの先頭」にシフトされる
ように、バイトキュー106におけるシフトを制御す
る。命令デコーダ108はまた、バイトキュー106に
おける問題を検出し、マイクロコードエントリポイント
を強制することによって、命令キャッシュ104を適切
なように間接的に再び導く。命令デコーダ108はま
た、命令キャッシュ104内のキャッシュ再充填論理に
よって、ならびに分岐セクション135における例外お
よびマイクロ分岐誤予測論理によって開始されるマイク
ロコードROMエントリポイントを受入れる。分岐セク
ション135によって発生されるマイクロコードエント
リポイントは、XTARGETバス103を介して命令
デコーダ108に伝えられる。命令デコーダ108はま
た、各ROPに対応するデコードプログラムカウンタ値
を発生する。
【0036】命令デコーダ108は、ROPマルチプレ
クサ200と、4つのディスパッチ位置回路210、2
11、212、213と、4つのROPセレクタ回路2
20、221、222、223と、ROP共有回路22
6とを、命令デコード制御回路230、ROM制御24
0、およびデコードプログラムカウンタ回路242とと
もに含む。ROPマルチプレクサ200(ROPMU
X)は、バイトキュー106のエントリを4つのディス
パッチ位置210〜213に導く。各ディスパッチ位置
は、それぞれの高速コンバータ250、251、25
2、253(それぞれFASTCONV0、FASTC
ONV1、FASTCONV2、およびFASTCON
V3)と、それぞれの共通段260、261、262、
263(それぞれICOMMON0、ICOMMON
1、ICOMMON2、およびICOMMON3)と、
それぞれのマイクロコードROM270、271、27
2、273(それぞれMROM0、MROM1、MRO
M2、およびMROM3)とを含む。マイクロコードR
OM270〜273は、マイクロコードROM命令デコ
ード制御装置240(IDECCNTL)によって制御
される。ROPマルチプレクサ200、ディスパッチ位
置回路210〜213、マイクロコードROM命令デコ
ード制御装置230、およびデコードプログラムカウン
タ回路242は、一般に命令デコーダ108の第1段を
形成する。命令デコーダ108の第2段は一般に、RO
Pセレクタ回路220〜223(それぞれROPSEL
ECT0、ROPSELECT1、ROPSELECT
2、およびROPSELECT3)、およびROP共有
回路226(ROPSHARED)において実現され
る。
【0037】命令デコーダ108は命令デコード制御装
置230によって制御される。命令デコード制御装置2
30は、TADバス118上に命令タイプ情報をもたら
し、現在のディスパッチウインドウ内のROPのうちい
くつがRISCコア110によって受入れられ得るかを
予測し、この予測を鑑みてどのようにバイトキュー10
6をシフトさせるか命令キャッシュ104に知らせ、バ
イトキュー106の先頭におけるプリデコードされたX
86命令のためにまだこれからディスパッチされるべき
ROPの数をROPマルチプレクサ200に知らせ、マ
イクロコードおよび制御ROMにアクセスするなど、一
般的な制御機能を提供するために、組合せ論理またはプ
ログラマブルアレイ論理において実現される論理を含
む。これらの機能を提供するために、命令デコード制御
装置230はRISCコア110の機能ユニット131
〜136およびプロセッサ100の他のユニットから様
々な情報を受取る。
【0038】各高速コンバータ250、251、25
2、および253は、「単純な」X86命令(すなわち
3つ以下のROPにマッピングするもの)に対して多く
のタイプの高速変換を行なう。各ディスパッチ位置にお
ける高速コンバータはX86命令を、そのX86命令を
実行するのに必要なROPのシーケンスのそれぞれ1つ
(1つのシーケンスは1つまたはそれ以上のROPであ
る)に変換し、ある一定のプレフィックスおよびSIB
バイトのためのROPの動作を変形する。高速コンバー
タ250〜253はプログラマブルアレイ論理として実
現されるか、第2のデコード段の位相1において前にラ
ッチされた組合せ論理しとて実現されるかのいずれかで
ある。
【0039】めったに使われないX86命令および実行
するのに3つより多くのROPからなるROPシーケン
スを必要とするX86命令は、マイクロコードROMに
マッピングされる。一般に3つより多くのROPにマッ
ピングするX86命令は、CALLゲート命令、STR
ING移動命令、および卓越した浮動小数点ルーチンな
どの複合対話型命令である。この場合、命令デコーダ1
08内のROM制御装置240は、エントリポイントと
して知られるマイクロコードROMアドレスを形成し、
このエントリポイントに基づき、マイクロコードROM
270〜273にストアされたマイクロコードROM命
令からのROPシーケンスを、1サイクルあたり4つの
ROPにおいて読出す。各マイクロコードROM27
0、271、272、および273は、高速コンバータ
においては変換可能でないX86命令を扱うための10
24×59ROMアレイである。
【0040】ディスパッチ位置210、211、21
2、および213もまた、それぞれの共通段260、2
61、262、および263を含む。各共通段はパイプ
ライン段として機能する。各共通段260、261、2
62、および263はそれぞれの高速コンバータおよび
マイクロコードROMと関連づけられている。命令が高
速経路命令であるかマイクロコードROM命令であるか
に関わりなくある特定のやり方で効率的に扱うことがで
き、かつマイクロコードROMにおける発生を必要とは
しないX86命令変換動作は部分的に、変換を必要とし
ない共通データとともに、高速コンバータまたはマイク
ロコードROMにおける様々な段の命令部分の処理を伴
うステップでそれぞれの共通段を介して、実行されパイ
プライン化される。各共通段はまた、高速経路命令およ
びMROM命令の双方によって用いられる内部命令デコ
ーダアドレス計算を行なうために使用されるレジスタポ
インタを追跡する。
【0041】各セレクタ回路220、221、222、
および223は、高速コンバータおよびパイプライン段
の出力またはマイクロコードROMおよびパイプライン
段の出力のいずれかを選択し、ディスパッチ情報を発生
する。各セレクタ回路はまた、即値フィールド定数値を
選択し、機能ユニット131〜136への即値アドレス
または定数を駆動する。ROP共有ユニット226はデ
ィスパッチ位置210〜213の各々におけるROP選
択回路からの情報に応答し、すべてのディスパッチ位置
によって共有されるリソースのためのディスパッチ情報
を発生する。デコードプログラムカウンタ回路242は
バイトキュー106から送られるX86命令の各々にお
ける論理プログラムカウンタ値を追跡する。バイトキュ
ー106はプリフェッチストリーム内に非順次フェッチ
を検出すると、その目的のバイトおよび新しい目的アド
レスをデコードプログラムカウンタ回路242に示す。
デコードプログラムカウンタ回路242は次にデコード
プログラムカウンタ値を発生し、これは分岐セクション
135ならびにディスパッチされた各ROPのためのデ
コードプログラムカウンタ値における下位ビットおよび
キャリービットに与えられる。LPCビットおよびキャ
リービットは、命令デコーダ108によってリオーダバ
ッファ114に与えられる。
【0042】デコードPC回路242レジスタ内のデコ
ードPCレジスタの中に維持されるROPデコードプロ
グラムカウンタ値が、X86アーキテクチャにおける論
理アドレスとして維持されるので、セグメント間分岐を
行なうときには、命令キャッシュ104にアクセスする
のに用いられる線形アドレスからデコードPCレジスタ
を更新するために必要な論理アドレスへの変換が必要で
ある。これは命令キャッシュ104において、まず線形
アドレスからセグメントベースポインタを減算して取除
き、論理アドレスを得ることによってなし遂げられる。
この32ビットの論理アドレスは次に命令デコーダ10
8のデコードプログラムカウンタ回路242に駆動さ
れ、これは次にROPデコードプログラムカウンタ値を
発生する。セグメント間分岐を行なわない場合、デコー
ドPC値はデコードプログラムカウンタ回路242で更
新される。
【0043】分岐に続く順次命令については、デコード
プログラムカウンタ回路242は開始位置と終了位置と
の間でバイトキュー内のX86バイトの数をカウント
し、これを開始論理デコードプログラムカウンタ値に加
算して、次のデコードプログラムカウンタ値を発生す
る。
【0044】命令デコーダ制御装置230は、命令デコ
ーダ108の様々なユニットの動作を制御するための適
切なステートマシンのいずれかである。
【0045】図4を参照して、デコードプログラムカウ
ンタ発生器回路242は、キュー300と、スキャン論
理302と、上位部分プログラムカウンタラッチ304
と、下位部分プログラムカウンタラッチ306と、上位
部分プログラムカウンタ発生器回路308と、下位部分
プログラムカウンタ発生器回路310と、プログラムカ
ウンタ値セレクタ回路312とを含む。
【0046】キュー300は32ビット非順次プログラ
ムカウンタ値を有効ビットと同様に保持し、非順次プロ
グラムカウンタ値のビット4:31を上位部分プログラ
ムカウンタラッチ304に与える。キュー300は非順
次プログラムカウンタ値のビット0:3をスキャン論理
302に与える。
【0047】スキャン論理302は命令デコーダ108
によって処理されている4つのROPに対応する4つの
4ビットオフセット値を下位プログラムカウンタ発生器
回路310に与える。4つのオフセット値の各々は、キ
ュー106内にストアされるX86命令とキュー300
内にストアされる現在のデコードプログラムカウンタ値
との間のオフセットを表わす。キュー106内にストア
される各X86命令は、1つより多くのROPにマッピ
ングしてもよい。同じサイクル内で命令デコーダ108
によって処理されている4つのROPが1つのX86命
令に対応していてもよいため、4つのオフセット値はす
べて同じ値を有していてもよい。これらのオフセット値
は、キュー106の先頭における命令のための開始ビッ
トとキュー106内の次の命令のための開始ビットとを
選択するスキャン論理302によって発生される。オフ
セットは、同じサイクル内の命令デコーダ108によっ
て処理されている4つのROPに対して累積される。す
なわち、オフセットは第1のROPとオフセットがその
ために発生されているROPとの間のバイトの数に等し
く、これは2つのROP間にいくつのROPがあるかに
は関わりがない。
【0048】下位プログラムカウンタ発生器回路310
は、加算器320〜323とマルチプレクサ326とを
含む。各加算器320、321、322、323は、4
ビットオフセット値の1つを受取る。加算器320〜3
23は、これらの4ビットオフセット値をラッチ306
からの現在のデコードプログラムカウンタ値におけるビ
ット0:3に加算し、次に来るかもしれないプログラム
カウンタ値における下位ビットすなわちビット0:3を
得る。次に来るかもしれないプログラムカウンタ値の各
々は、ディスパッチされるべきROPに対応する。次に
来るかもしれないプログラムカウンタ値のビット0:3
は、マルチプレクサ326に与えられる。マルチプレク
サ326はこれらの次に来るかもしれないプログラムカ
ウンタ値をマルチプレクスして、対応するROPが命令
デコーダ108によってディスパッチされる際にどの命
令がキュー300から取除かれるかに基づき、次のプロ
グラムカウンタ値をデコードプログラムカウンタラッチ
306に与える。ラッチ306はマルチプレクスされた
値を現在のデコードプログラムカウンタ値としてストア
し、次のデコードプログラムカウンタ値を得るにあたっ
て用いる。
【0049】下位プログラムカウンタ発生器回路310
は、各加算器からのキャリービットを上位プログラムカ
ウンタ発生器回路308のキャリーセレクタ334に与
える。下位プログラムカウンタ発生器回路310はま
た、これらのキャリービットをカウンタ値選択回路31
2にも与える。
【0050】上位プログラムカウンタラッチ304は、
次のプログラムカウンタ値のビット4:31を上位プロ
グラムカウンタ発生器回路308に与える。上位プログ
ラムカウンタ発生器回路は、アドレスインクリメンタ3
30と、マルチプレクサ332と、キャリーセレクタ3
34とを含む。インクリメンタ330は現在のデコード
PC値の上位28ビットを受取り、増分されたデコード
PC値、すなわち上位28ビットが1だけ増分された値
を提供する。この増分されたデコードPC値は、やはり
現在のデコードPC値を受取るマルチプレクサ334に
与えられる。マルチプレクサ332はこれら2つの値の
うち1つを、キャリーセレクタ回路334の制御下で次
のデコードPC値として提供する。キャリーセレクタ回
路334は下位部分プログラムカウンタ発生器回路31
0からのキャリービットを用いて、キャリービットのう
ちどれがディスパッチされるべき次のROPに対応する
かを判断し、かつこのキャリービットの値を用いてマル
チプレクサ332を制御する。ディスパッチされるべき
次のROPのキャリービットが、キャリーを示す活性で
あれば、次のデコードPC値の上位28ビットには増分
されたデコードPC値が用いられる。そうでなければ、
次のデコードPC値の上位28ビットには現在のデコー
ドPC値の上位28ビットが用いられる。
【0051】カウンタ値選択回路312は、マルチプレ
クサ336とディスパッチ割当マルチプレクサ338を
含む。マルチプレクサ336は、キュー300からどの
命令が、命令デコーダ108によって対応するROPが
ディスパッチされる際に取除かれるかに基づき、デコー
ドプログラムカウンタ値(DPC)のビット0:3とし
て、次に来るかもしれない4つの下位プログラムカウン
タ値のうち1つを選択する。マルチプレクサ336はこ
のデコードプログラムカウンタ値をリオーダバッファ1
14に与える。ディスパッチ割当マルチプレクサ338
は次の下位プログラムカウンタ値(LPC)およびキャ
リー値(CARRY)を受取り、これらの値をディスパ
ッチされる各ROPのためにリオーダバッファ114に
与える。
【0052】上位プログラムカウンタ発生器回路308
はデコードプログラムカウンタ値のビット4:31をプ
ログラムカウンタ値選択回路312に与える。プログラ
ムカウンタ値選択回路312はこれらのビットをマルチ
プレクサ336からの選択された下位ビット0:3と組
合せ、完全な、すなわちビット0〜31の、デコードプ
ログラムカウンタ(DPC)値を提供する。
【0053】図5を参照して、リオーダバッファ114
は循環先入れ先出し(FIFO)回路であって、推論的
に実行されるROPの相対的な順序を追跡する。リオー
ダバッファの記憶位置は、それぞれリタイアの結果をレ
ジスタファイル112に送り、命令デコーダ108から
の不整合なROPを受取るために先頭および末尾キュー
ポインタを用いて、動的に割当てられる。命令がデコー
ドされると、その結果値はリオーダバッファ114内の
位置または行先に割当てられ、その行先レジスタ番号は
この位置と関連づけられる。依存性のない後続の命令に
ついては、関連づけられたAおよびBオペランドバスが
レジスタファイル112から駆動される。しかしなが
ら、後続する命令が依存性を有しており、名前を変更さ
れた行先レジスタを参照してその中にストアされている
と考えられる値を得る場合、リオーダバッファ114内
でエントリがアクセスされる。結果をその中で得ること
ができれば、それはオペランドバスにもたらされる。結
果が得られない場合、このリオーダバッファエントリを
識別するタグが、AおよびBオペランドタグバス116
の1本のオペランドタグバスに与えられる。結果または
タグはオペランドバスまたはオペランドタグバスを介し
て機能ユニットにもたらされる。機能ユニットにおける
実行の完了により結果が得られた場合、その結果および
それらのそれぞれの結果タグは、バス5本分の幅の結果
バスと5本の結果タグバス140とを介してリオーダバ
ッファ114および機能ユニットの予約ステーションに
もたらされる。
【0054】リオーダバッファ114は実行プログラム
カウンタレジスタを更新するためにROPと関連してい
るプログラムカウンタ値を保持する圧縮形式を用いる。
この圧縮形式に必要なのは、下位4バイトとビット増分
すなわちキャリーの表示のみである。順次的X86バイ
トについては、付加されるバイトの数は15個以下であ
り、非順次的フェッチについては、分岐が成功裏に完了
すると、新しい分岐目的が結果バスに駆動され、それに
より命令デコーダ108からリオーダバッファ114へ
の新しい分岐位置の書込みは必要でなくなる。
【0055】リオーダバッファ114は、リオーダバッ
ファ制御およびステータス回路400と、リオーダバッ
ファアレイ402と、リオーダバッファオペランドバス
ドライバ404とを含む。リオーダバッファアレイ40
2は一時記憶メモリであって、リオーダバッファ制御お
よびステータス回路400によって制御される。命令デ
コーダ108がROPをディスパッチすると、命令デコ
ーダ108は行先ポインタ(DEST REG)バスの
1本に信号をもたらす。リオーダバッファ制御およびス
テータス回路400はその後、リオーダバッファアレイ
402のエントリを割当てる。リオーダバッファアレイ
402の各エントリは、一時行先レジスタを提供するた
めに割当てられ、ROPが完了するとそこに結果が書込
まれる。リオーダバッファおよびステータス回路400
内の実行プログラムカウンタレジスタの中にストアされ
る実行PC値は、命令がリタイアされると更新される。
複数のリオーダバッファエントリが、レジスタファイル
112内の単一のレジスタに対応することができ、それ
によりレジスタの一時的な名前変更に備えることができ
る。リオーダバッファ制御およびステータス回路400
は、完了されたROPがいつレジスタ112内にリタイ
アされ得るかを決定する。命令がリタイアされると、実
行プログラムカウンタレジスタは更新される。
【0056】リオーダバッファ制御およびステータス回
路400は命令デコーダ108からのAおよびBオペラ
ンドポインタを受取る。リオーダバッファ制御およびス
テータス回路400はこれらのポインタを用いてリオー
ダバッファアレイ402内のエントリに問合わせをし、
ディスパッチされたROPの実行に必要なオペランドが
リオーダバッファアレイ402内に含まれているかどう
かを判断する。
【0057】図6を参照して、リオーダバッファアレイ
402は、レジスタファイルにライトバックされるべき
送られたオペランドの結果を、その結果がもはやプロセ
ッサの推論的状態の一部ではない場合に一時的にストア
するための16個のエントリを含む。16個のリオーダ
バッファエントリの各々は、41ビット結果フィールド
(RESULT)、9ビット行先ポインタフィールド
(P)、4ビット下位プログラムカウンタ値フィールド
(LPC)および11ビット浮動小数点オペレーション
コードフィールド(FPOF)、11ビット浮動小数点
フラグレジスタフィールド(FPFR)、ならびに24
ビット制御およびステータスフィールド(CS)を含
む。
【0058】結果フィールドは機能ユニットからの結果
データをストアする。41ビット結果フィールドは浮動
小数点結果を2つのリオーダバッファエントリ内にスト
アできるようにする。整数結果は41ビットのうちの3
2ビットにストアされる。
【0059】各リオーダバッファエントリの行先ポイン
タフィールドは、ライトバック中に書込まれるべき命令
の実行よりの結果のための、レジスタファイル112内
の行先レジスタアドレスを指定する。リオーダバッファ
制御およびステータス回路400は行先レジスタ(DE
ST REG)バスを介して命令デコーダ108から行
先ポインタを受取り、そのポインタをリオーダバッファ
アレイ402の行先ポインタフィールドにロードし、ポ
インタと関連するROPがリタイアされているときのた
めにそれをストアさせる。ROPがディスパッチされる
と、リオーダバッファ114はリオーダバッファアレイ
402のすべての行先ポインタフィールドをスキャンす
ることによって依存性チェックを行ない、行先ポインタ
とAまたはBオペランドとの間に整合があるかどうかを
判断する。整合があるということは、データ依存性があ
るということを示す。
【0060】浮動小数点オペレーションコードフィール
ドは、リオーダバッファエントリに割当てられた浮動小
数点オペレーションコードのビットのサブセットにセッ
トされる。浮動小数点フラグレジスタフィールドは浮動
小数点動作によりもたらされる浮動小数点フラグの状態
をストアする。浮動小数点フラグは浮動小数点機能ユニ
ット136により検出された、精度、アンダーフロー、
オーバーフロー、ゼロ分割、正規化を取止められたオペ
ランド、および無効オペランドエラーに関連の情報をス
トアする。整数オペランドについては、整数演算により
もたらされるフラグは41ビット結果フィールドの上位
ビット内に保持されるため、対応するフラグフィールド
は必要ではない。
【0061】ステータスおよび制御フィールドは、RO
Bエントリのステータス、たとえばリオーダバッファエ
ントリが割当てられているか、分岐が誤って予測されて
いるか、または命令の実行が例外またはエラー条件をも
たらしているのではないか、ということを示すビットを
含む。ステータスおよび制御フィールドはまた、実行プ
ログラムカウンタ値を発生することに関連のビットをも
含む。より特定的には、ステータスおよび制御フィール
ドは、各ROPのためにデコードPC発生器回路によっ
て与えられるキャリービット、セットされるとROPが
ある特定のX86命令についてROPのシーケンスのう
ちの最後のROPであるということを示す出口ビット、
および結果が有効であることを示して命令が完了してい
ることを表わす完了(または有効)ビットを含む。出口
ビットは、実行プログラムカウンタレジスタ内にストア
された実行PC値をいつ更新すべきかを示す。実行プロ
グラムカウンタ値が更新されるのは、特定のX86命令
のためのROPシーケンスが完了したときのみである。
【0062】再び図5を参照して、ROPを実行して結
果を発生する機能ユニットは、その結果を行先タグを用
いて適切なリオーダバッファエントリに導く。ディスパ
ッチの際、機能ユニットに接続される4つの行先タグバ
スのうちの1つに行先タグがセットされる。機能ユニッ
トは結果バス140のうち1本にその結果を位置づけ、
対応する結果タグおよびステータスバス上に行先タグを
位置づける。リオーダバッファ制御およびステータス回
路400は結果タグバスからの結果タグを受取り、この
タグをリオーダバッファアレイ402内のエントリをア
ドレス指定するのに用いる。結果バスおよびステータス
バスのうち1つに対応する結果バスの1本の上の信号
が、結果タグ値により指定されるリオーダバッファアレ
イエントリにロードされる。
【0063】リオーダバッファ制御およびステータス回
路400はまた、データ依存性についてもチェックし、
未解決の依存性が起こると、オペランドバスと関連のA
およびBオペランドタグバスを用いてオペランドにタグ
をつける。タグは機能ユニットの予約ステーションによ
って用いられるために、依存性が基づいている結果を識
別する。リオーダバッファ114はデータ依存性が検出
されるとレジスタファイル読出を無効にする。リオーダ
バッファ制御およびステータス回路400は、ディスパ
ッチの際にデータ依存性を検出した場合、レジスタファ
イルオペランドバスドライバ404に与えられる無効化
バスのビットをセットすることによって、リオーダバッ
ファアレイ402のエントリ内におけるいかなる依存性
オペランドの読出動作をも無効にする。無効化バスは、
各オペランドバスのための無効化信号を含む。
【0064】リオーダバッファ114が、ソースオペラ
ンドデータが利用可能でないデータには依存しておら
ず、レジスタファイル112またはリオーダバッファ1
14から得ることができると判断した場合、オペランド
データはオペランドバス116を介して機能ユニット予
約ステーションに送られる。読出ポインタのレジスタア
ドレスがエントリの行先ポインタアドレスに一致した場
合、データはリオーダバッファ114内にアドレス指定
される。AまたはBオペランド読出ポインタ(A−RD
PTRまたはB−RDPTR)の読出ポインタは、リオ
ーダバッファ制御およびステータス回路400を介して
リオーダバッファアレイ402をアドレス指定し、オペ
ランドデータをリオーダバッファオペランドバスドライ
バ404に与える。リオーダバッファオペランドバスド
ライバ404は、オペランドデータをAおよびBオペラ
ンドバス116に駆動する。
【0065】ROPは、リオーダバッファ制御およびス
テータス回路400がリオーダバッファアレイ402か
らの結果をレジスタファイル112に書込み、その結果
をライトバックバスの1つに位置づけて行先ポインタを
ライトバックバスに対応する書込ポインタに書込むにつ
れ、リタイアされる。書込ポインタはレジスタファイル
112内のレジスタアドレスを指定し、リタイアされた
結果を受取る。ROPがリタイアされると、リオーダバ
ッファオペランドバスドライバ404はリオーダバッフ
ァアレイ402のLPCフィールドを用いて実行プログ
ラムカウンタ値を発生する。
【0066】リオーダバッファステータスおよび制御回
路400はリオーダバッファ114の様々な条件を検出
し、リオーダ条件バスを用いてプロセッサ100におけ
る様々な回路へ条件信号をリレーする。リオーダ条件バ
スの信号は4つのAおよびBオペランドの各々のために
レジスタファイル112によって受取られ、リオーダバ
ッファ114がいつ送られたオペランドを実行のために
与えるかを示す。充満、空、または単一エントリのリオ
ーダバッファ条件を反映するリオーダバッファ条件バス
上の他の信号は、命令デコーダ108によって受取られ
る。
【0067】図7を参照して、ROB制御およびステー
タス回路400内に含まれる実行プログラムカウンタ発
生器回路598は、下位プログラムカウンタ発生器60
0と、上位プログラムカウンタ発生器下位602と、実
行プログラムカウンタ制御装置604とを含む。下位プ
ログラムカウンタ発生器600は、エントリマルチプレ
クサ610と、分岐マルチプレクサ612と、レジスタ
614とを含む。エントリマルチプレクサ610は、最
も古い4つのリオーダバッファエントリ402にストア
される4つの命令のためのプログラムカウンタ値の下位
4ビットの部分を受取る。エントリマルチプレクサ61
0は、これらの下位プログラムカウンタ値の1つを分岐
マルチプレクサ612に与え、分岐マルチプレクサ61
2はまた、分岐プログラムカウンタ値の下位ビットをも
受取る。分岐マルチプレクサ612はレジスタ614に
4ビット下位実行プログラムカウンタ値を与え、レジス
タ614はこの値を次の実行プログラムカウンタ値とし
て提供する。エントリマルチプレクサ610、分岐マル
チプレクサ612、およびレジスタ614は、実行プロ
グラムカウンタ制御回路604により制御される。
【0068】上位プログラムカウンタ発生器602は、
エントリマルチプレクサ620と、分岐マルチプレクサ
622と、発生上位増分回路624と、加算器回路62
6と、レジスタ628とを含む。エントリマルチプレク
サ620は、下位の4つのリオーダバッファエントリに
ストアされる4つの命令からの分岐目的値を受取り、分
岐目的マルチプレクサがこれらのエントリのうち1つを
実行プログラムカウンタ制御回路604の制御下にある
次の分岐目的として与える。次の分岐目的値は、28ビ
ットの上位分岐目的値と、4ビットの下位分岐目的値と
を含む。上位分岐目的値は分岐マルチプレクサ622に
与えられ、分岐マルチプレクサ622は、レジスタ62
8からの28ビットの上位実行プログラムカウンタ値を
も受取る。分岐マルチプレクサ622はマルチプレクス
された予備的な上位実行プログラムカウンタ値を加算器
回路626に与え、加算器回路626は、発生上位増分
回路624からの増分信号をも受取る。加算器回路62
6はこの加算に基づき、上位実行プログラムカウンタ値
をレジスタ回路628に与える。レジスタ回路628は
クロックド上位実行プログラムカウンタ値を制御回路6
04の制御下で提供する。
【0069】制御装置604は下位の4つのリオーダバ
ッファエントリの各々からの制御情報を受取る。この制
御情報は各エントリのための分岐発生信号および各エン
トリからの更新プログラムカウンタ信号、ならびに各エ
ントリのための有効信号および更新実行プログラムカウ
ンタ信号を含む。この制御情報に基づき、実行プログラ
ムカウンタ制御装置604は上位および下位実行プログ
ラムカウンタ値の発生を制御する。分岐発生信号は、分
岐が行なわれたかどうかを示すものであって、分岐が行
なわれたときに活性であり、それにより分岐アドレスが
用いられるべきであることを示す。有効信号は、ROP
の結果が機能ユニットから返されたこと、すなわち有効
結果が存在するということを示し、分岐結果が返された
ときに活性である。更新実行プログラムカウンタ値信号
は、実行プログラムカウンタ値をいつ更新すべきかを示
し、ROPがリタイアされたときに活性である。
【0070】下位プログラムカウンタ発生器602は新
しい下位実行プログラムカウンタ値を発生するのにマル
チプレクサを用いるので、より大きいパイプラインのた
めの実行プログラムカウンタ値を、下位プログラムカウ
ンタ値が与えられるマルチプレクサの幅を広くするだけ
で発生することが可能である。
【0071】図8を参照して、X86バイトの順次的ス
トリームを実行するプロセッサ100のタイミングが示
される。この例では、予測実行された経路は実際にとら
れており、命令キャッシュ104から直接得ることがで
きる。動作中、マイクロプロセッサパイプラインの効果
的な実行のパイプライン段は5つある。
【0072】フェッチサイクルは実行の第1段である。
フェッチクロックサイクルは命令キャッシュ104の中
で費やされる。命令キャッシュ104はクロックサイク
ルのPH1の間に新しいフェッチプログラムカウンタ値
を形成し、次にフェッチクロックサイクルのPH2にお
いてキャッシュアレイ180および182にアクセスす
る。フェッチプログラムカウンタ値(FPC(31:
0))は、ストアアレイと並行して線形命令キャッシュ
タグアレイにアクセスする。フェッチサイクルのPH2
の終わりの方で、線形タグがフェッチプログラムカウン
タの線形アドレスに一致するかどうかの判断が行なわれ
る。一致していれば、予測実行されたバイトはバイトキ
ュー106に送られる。
【0073】タグおよびストアアレイへのアクセスに加
えて、フェッチプログラムカウンタ値はまた、命令キャ
ッシュ104の分岐予測アレイ184にもアクセスす
る。分岐予測アレイ184はX86バイトのうちどれが
予測実行されるかを識別し、かつ次の予測実行されるブ
ロックが順次的であるか非順次的であるかを識別する。
フェッチサイクルのPH2においてもアクセスされるこ
の情報は、現在フェッチされているブロックのどのバイ
トが有効なバイトとしてバイトキュー106に駆動され
るかを決定する。
【0074】加えて、フェッチクロックサイクルの間、
バイトキュー186は前にフェッチされているがまだ機
能ユニットに発行されてはいないX86バイトを保持し
ていてもよい。その場合、命令キャッシュ104にバイ
ト充填位置が示され、現在のサイクルの第1の予測され
たバイトが、保持されているX86バイトを超えて現在
フェッチされているバイトを充填するためにバイトキュ
ー106が保持しているバイトの数に等しい量だけシフ
トされる。
【0075】分岐予測情報はフェッチサイクルのPH2
において発生するため、プリフェッチされるべき次のブ
ロックは順次的でも非順次的でもあり得る。いずれの場
合も、再びアレイにアクセスするクロックサイクルは1
つある。したがって、分岐予測アレイにより、ブロック
外の分岐は次の順次的ブロックにアクセスするのと同じ
相対的な性能を有する。
【0076】第1のデコードサイクルの始まりで、プリ
フェッチされ予測実行されたバイトは指定された充填位
置においてバイトキュー186に駆動される。これは図
8では第1のデコードサイクルのPH1において起こる
バイトキュー充填として示される。これらのバイトは次
に、バイトキュー106の中の未決定のバイトのいずれ
とでもマージされる。
【0077】バイトキュー106はプリデコード状態の
5ビットに加えて生のX86バイトを、命令の境界がど
こにあるかを示すために含む。バイトキューの先頭は常
に次の予測実行されるX86命令の始まりである。第1
のデコード段のPH1の中途で、バイトキュー106は
命令キャッシュ104からのバイトの次のストリーム
を、バイトキュー106における既存のバイトとマージ
し、マージされたバイトのストリームを命令デコーダ1
08に提示する。命令デコーダ108は各命令がとるR
OPの数およびオペレーションコードの位置を決定し、
これらのオペレーションコードを対応するROP発行位
置0〜3(ここで0は次に発行すべきROPである)と
整列させる。
【0078】命令デコーダ108は命令の境界間のバイ
ト数をカウントするか、命令キャッシュ104内に分岐
を検出して、プログラムカウンタ値をその位置からフェ
ッチされた第1のX86バイトに付与することによっ
て、バイトキュー108内のX86命令の各々に対応す
るROPのためのデコードプログラムカウンタ値を維持
する。オペレーションコードおよびROP位置決め情報
をバイトキュー106内にストアされた即値フィールド
と同様に用いて、命令デコーダ108は第1のデコード
サイクルにおけるPH2および第2のデコードサイクル
におけるPH1の間にデコードPC値を静的に決定す
る。第2のデコードサイクルのPH1の終わりまでに
は、レジスタ読出および書込ポインタはすべて解決さ
れ、動作が決定される。これは、読出書込ポインタ値の
アサートとして図8に示される。
【0079】加えて、第2のデコードサイクルにおける
PH1の間のタイミングは、次のクロック位相において
発行するかもしれない対応するROPのためのリオーダ
バッファエントリを割当ている。したがって、最大4つ
までの付加的なROPが各々PH1の間にリオーダバッ
ファ114内の16個のエントリのうちの1つに割当て
られる。PH2の間、割当てられたすべてのROPのた
めのソース読出ポインタが、レジスタファイル112か
ら読出され、一方で同時にリオーダバッファ114にお
ける推論的ROPのキューにアクセスする。
【0080】この、双方のアレイに対する同時のアクセ
スは、実際のレジスタファイルを用いるかリオーダバッ
ファ114からオペランドまたはタグを進めるかについ
て、遅い選択をできるようにする。まずPHIにおいて
4つのROPエントリを割当て、次にPH2においてリ
オーダバッファ114をスキャンすることによって、デ
ィスパッチされている現在のROP内の読出依存性はま
だ推論的状態にある以前のROPすべてとともに同時に
調査されてよい。
【0081】実行サイクルは標準的なスカラプロセッサ
の実行サイクルに比類するものである。ROPは上述の
読出オペランドバスだけでなく専用のオペレーションコ
ードバスをも介して発行される。これらのオペランドバ
スはタイミング図において実行サイクルのPH1でディ
スチャージしているのを見ることができる。これは信号
A/B読出オペランドバスにおいて示される。
【0082】実行サイクルのPH1の終わりの方で、機
能ユニットはそれらに対してどのROPが発行されたか
ということと、それらにそれらの局所予約ステーション
から発行される準備のできた未決定のROPがあるかど
うかということを判断する。機能ユニットの予約ステー
ション内では、FIFOが常に維持されており、最も古
い命令が確実に最初に実行されるようになっている。機
能ユニット内である命令の実行される準備が整っていれ
ば、機能ユニットはPH1の最後の方で実行を開始し、
PH2を通じて実行を継続する。このタイミングはAL
U122に関連している。
【0083】PH2の終わりでは、待ち時間1のすべて
の機能ユニットについて、結果が準備されており、機能
ユニットは5つの結果バスのうちの1つのために仲裁を
行なう。これはタイミング図では結果バス仲裁信号のア
サートとして示される。実行サイクルのPH2において
アクセスが許可されると、アクセスを許可された機能ユ
ニットは結果サイクルのPH1において割当てられた結
果バスを駆動する。
【0084】結果サイクルはRISCの4段パイプライ
ン上での書込に比類される。結果サイクルは値を直接他
の機能ユニットに送って実行させる。これはRISCシ
ステムにおけるALUの送信に大変似ている。マイクロ
プロセッサ100は発行されているROPの推論的性質
のために結果サイクルとリタイアサイクルとの双方を含
んでおり、その命令がリタイアされるべき次の命令とな
るまでは、レジスタファイルへの直接の書込は行なえな
い。リオーダバッファ114および結果バス140の送
信は、このサイクルをいかなる実行プログラムにとって
もトランスペアレントなものとし、リオーダバッファ1
14への書込のオーバーヘッドについては立ち往生は全
く起こらない。結果サイクルのPH1では、リオーダバ
ッファ114内の推論的ROPの位置は行先結果および
いかなるステータスとともにでも書込まれる。リオーダ
バッファ114内のこのエントリは次に、そのエントリ
が有効でありかつ割当てられているということを示すべ
くセットされる。したがって、このエントリが要求され
た場合、要求される読出アクセスにタグを送る代わり
に、リオーダバッファ114は直接データを送る。
【0085】結果サイクルのPH2では、新しく割当て
られたタグはそれがそのソースオペランドの1つである
ことを要求する後続のROPによって検出され得る。こ
れはタイミング図では、読出および書込ポインタを用い
てのソースA/BオペランドバスへのROBタグ送信を
介しての結果の直接送信として示される。
【0086】リタイアサイクルはパイプラインの最終段
である。これは、実行プログラムカウンタ値が実行プロ
グラムカウンタレジスタ内にストアされるサイクルであ
る。リタイアサイクルのPH1では、動作の結果はレジ
スタファイルに書込まれ、実行プログラムカウンタレジ
スタ内の実行プログラムカウンタ値は次にリタイアされ
るべき命令を指し示すべく更新される。リタイアサイク
ルのPH1では、リオーダバッファ114内のエントリ
は割当を解除され、リオーダバッファ114から書込ま
れる。エントリが割当を解除されているため、結果に対
する後に続く参照は、リオーダバッファ114からの推
論的な読出よりもむしろレジスタファイル112からの
読出において誘発される。レジスタファイル112から
の読出は、プロセッサ100の実際の状態を示す。
【0087】したがって、マイクロプロセッサ100は
パイプラインの異なった段において複数個のプログラム
カウンタ値を用いる5段パイプラインを含む。このよう
なパイプラインとともにこれらのプログラムカウンタ値
を用いることで、マイクロプロセッサ100はクロック
サイクル1つあたり4つまでの単純なX86命令を発行
できるようになる。
【0088】
【その他の実施例】その他の実施例は前掲の特許請求の
範囲内に含まれる。
【0089】たとえば図9を参照して、フェッチプログ
ラムカウンタ値を発生するには、下位プログラムカウン
タ値をキャリー情報とともに提供するものである限り他
の回路を用いてもよい。より特定的には、代替的なフェ
ッチプログラムカウンタ回路700は、キュー702、
上位部分プログラムカウンタラッチ704、下位部分プ
ログラムカウンタラッチ706、上位部分プログラムカ
ウンタ発生器回路708、下位部分プログラムカウンタ
発生器回路710、およびプログラムカウンタ値セレク
タ回路712を含む。
【0090】キュー702は、32ビット非順次プログ
ラムカウンタ値を有効ビット値とともに保持しており、
かつ非順次プログラムカウンタ値のビット4:31を上
位部分プログラムカウンタ発生器回路708に与え、非
順次プログラムカウンタ値のビット0:3を下位部分プ
ログラムカウンタ発生器回路710に与える。非順次プ
ログラムカウンタ値はまた、下位部分プログラムカウン
タラッチ706にも与えられる。
【0091】下位プログラムカウンタラッチは次のプロ
グラムカウンタ値のビット0:3を下位プログラムカウ
ンタ発生器回路710に与える。上位プログラムカウン
タラッチ704は、次のプログラムカウンタ値のビット
4:31を上位プログラムカウンタ発生器回路708に
与える。下位プログラムカウンタ発生器回路710は、
キャリービットを上位プログラムカウンタ発生器回路7
08およびプログラムカウンタ値選択回路712に与え
る。上位プログラムカウンタ発生器回路708は、プロ
グラムカウンタ値のビット4:31をプログラムカウン
タ値選択回路712に与える。
【0092】下位プログラムカウンタ発生器回路710
は、加算器720〜723と、マルチプレクサ730〜
733と、マルチプレクサ740〜743およびマルチ
プレクサ750とを含む。加算器720〜723の1
つ、マルチプレクサ730〜733の1つ、およびマル
チプレクサ740〜743の1つの組合せが、次に来る
かもしれないデコードプログラムカウンタ値における下
位の4ビットを提供する。次に来るかもしれないデコー
ドプログラムカウンタ値の各々は、キュー702からの
ROPに対応する。マルチプレクサ730〜733は、
以前のデコードPC値が分岐であったかどうかに基づ
き、それぞれの加算器720〜723への入力の1つを
提供する。マルチプレクサ740〜743は、X86命
令のバイト長およびX86命令にいくつのROPが対応
するかに基づき、それぞれの加算器720〜723への
他の入力を提供する。各加算器720〜723は、次に
来るかもしれないデコードPC値の下位4ビットとキャ
リービットとを与える。次に来るかもしれないデコード
PC値は、これらの値の1つを次のデコードPC値とし
て与えるマルチプレクサ750へ、およびこれらの値を
リオーダバッファ114に与えるプログラムカウンタ値
選択回路712に提供される。
【0093】上位プログラムカウンタ発生器回路712
は、インクリメンタ760、マルチプレクサ761、イ
ンクリメンタ762、およびキャリーセレクタ764を
含む。インクリメンタ760は、PCラッチ704内に
ストアされる現在のデコードPC値の上位部分を増分
し、この増分された値をマルチプレクサ761に与え
る。マルチプレクサ761はまた、キュー702から非
順次PC値をも受取る。マルチプレクサ761は、分岐
が起こったかどうかに基づき、これらの値の1つをイン
クリメンタ762に与える。インクリメンタ762はこ
の値を受取り、この値をPCラッチ704に与える。イ
ンクリメンタ760および762は、キャリーセレクタ
764によって与えられるキャリービットに基づき、増
分を行なう。キャリーセレクタ764はリオーダバッフ
ァ114にディスパッチされるべき最後の命令における
キャリービットを提供する。インクリメンタ760は次
のデコードPC値のビット4:31を分岐セクション1
35に与える。
【図面の簡単な説明】
【図1】本発明に従うマイクロプロセッサのブロック図
である。
【図2】本発明に従う線形にアドレス指定された命令キ
ャッシュのブロック図である。
【図3】本発明に従う命令デコーダのブロック図であ
る。
【図4】本発明に従う命令デコーダプログラムカウンタ
回路のブロック図である。
【図5】本発明に従うリオーダバッファのブロック図で
ある。
【図6】本発明に従うリオーダバッファアレイのブロッ
ク図である。
【図7】本発明に従うリオーダバッファプログラムカウ
ンタ回路のブロック図である。
【図8】本発明に従う図1のマイクロプロセッサにおけ
る動作のタイミング図である。
【図9】本発明に従う代替的なフェッチプログラムカウ
ンタのブロック図である。
【符号の説明】
400 ROP制御およびステータス回路 598 実行プログラムカウンタ発生器回路 600 下位プログラムカウンタ発生器 602 上位プログラムカウンタ発生器 604 実行プログラムカウンタ制御装置
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スコット・エイ・ホワイト アメリカ合衆国、78748 テキサス州、オ ースティン、ペレンニアル・コート、 11303 (72)発明者 マイケル・ディー・ゴッダード アメリカ合衆国、78739 テキサス州、オ ースティン、オールド・ハーバー・レー ン、6434

Claims (12)

    【特許請求の範囲】
  1. 【請求項1】 命令を処理するためのパイプラインを有
    するマイクロプロセッサにおいて用いるためのプログラ
    ムカウンタ値を発生する装置であって、 上位の第1のプログラムカウンタ部分と、下位の第1の
    プログラムカウンタ部分と、第1のキャリー信号とを有
    する第1のプログラムカウンタ値を提供するための第1
    のプログラムカウンタ回路を備え、第1のカウンタ値は
    検索された命令のプログラムカウント値を表わし、さら
    に下位の第1のプログラムカウンタ部分および第1のキ
    ャリー信号を受取り、下位の第1のプログラムカウンタ
    部分を用いて実行プログラムカウンタ値を発生するため
    の実行プログラムカウンタ回路を備え、実行プログラム
    カウンタ回路は第1のプログラムカウンタ回路に結合さ
    れ、実行プログラムカウンタ値は実行された命令のプロ
    グラムカウンタ値を表わす、命令を処理するためのパイ
    プラインを有するマイクロプロセッサにおいて用いるた
    めのプログラムカウンタ値を発生する装置。
  2. 【請求項2】 下位の第1のプログラムカウンタ部分お
    よびキャリー信号をストアするためのパイプラインにお
    ける各段に対応する記憶位置をさらに備え、記憶位置は
    第1のプログラムカウンタ回路および実行プログラムカ
    ウンタ回路に結合されるパイプラインの各段に対応す
    る、請求項1に記載の装置。
  3. 【請求項3】 第1のプログラムカウンタ回路は、下位
    プログラムカウンタ値発生器回路と上位プログラムカウ
    ンタ値発生器回路とを含む、請求項1に記載の装置。
  4. 【請求項4】 下位プログラムカウンタ値発生器回路
    は、複数個の加算器回路を含み、各加算器回路は現在の
    プログラムカウンタ値および命令長値を受取り、現在の
    プログラムカウンタ値を命令長値に加算して、次のプロ
    グラムカウンタ値における下位部分およびキャリー信号
    を提供する、請求項3に記載の装置。
  5. 【請求項5】 上位プログラムカウンタ値発生器回路は
    インクリメンタ回路を含み、インクリメンタ回路は現在
    のプログラムカウンタ値の上位ビットおよび増分信号を
    受取り、かつ次のプログラムカウンタ値の上位部分を提
    供する、請求項3に記載の装置。
  6. 【請求項6】 上位プログラムカウンタ値発生器回路は
    キャリーセレクタ回路を含み、キャリーセレクタ回路は
    キャリー信号を受取り、かつキャリー信号に基づく増分
    信号を提供する、請求項5に記載の装置。
  7. 【請求項7】 命令を処理するためのパイプラインを有
    するマイクロプロセッサ装置であって、 マイクロプロセッサコアを備え、マイクロプロセッサコ
    アは命令を実行するための機能ユニットを含み、さらに
    上位の第1のプログラムカウンタ部分、下位の第1のプ
    ログラムカウンタ部分、および第1のキャリー信号を有
    する第1のプログラムカウンタ値を提供するための第1
    のプログラムカウンタ回路を備え、第1のカウンタ値は
    検索された命令におけるプログラムカウント値を表わ
    し、さらに下位の第1のプログラムカウンタ部分および
    第1のキャリー信号を受取り、下位の第1のプログラム
    カウンタ部分を用いて実行プログラムカウンタ値を発生
    するための実行プログラムカウンタ回路を備え、実行プ
    ログラムカウンタ回路は第1のプログラムカウンタ回路
    に結合され、実行プログラムカウンタ値は実行された命
    令のプログラムカウンタ値を表わし、機能ユニットは命
    令を実行するとき実行プログラムカウンタ値を用いる、
    命令を処理するためのパイプラインを有するマイクロプ
    ロセッサ装置。
  8. 【請求項8】 下位の第1のプログラムカウンタ部分お
    よびキャリー信号をストアするためのパイプラインの各
    段に対応する記憶位置をさらに備え、記憶位置は第1の
    プログラムカウンタ回路および実行プログラムカウンタ
    回路に結合されるパイプラインの各段に対応する、請求
    項7に記載の装置。
  9. 【請求項9】 第1のプログラムカウンタ回路は下位プ
    ログラムカウンタ値発生器回路と上位プログラムカウン
    タ値発生器回路とを含む、請求項7に記載の装置。
  10. 【請求項10】 下位プログラムカウンタ値発生器回路
    は複数個の加算器回路を含み、各加算器回路は現在のプ
    ログラムカウンタ値および命令長値を受取り、現在のプ
    ログラムカウンタ値を命令長値に加算して、次のプログ
    ラムカウンタ値の下位の部分およびキャリー信号を提供
    する、請求項9に記載の装置。
  11. 【請求項11】 上位プログラムカウンタ値発生器回路
    はインクリメンタ回路を含み、インクリメンタ回路は現
    在のプログラムカウンタ値の上位ビットおよび増分信号
    を受取り、かつ次のプログラムカウンタ値の上位部分を
    提供する、請求項9に記載の装置。
  12. 【請求項12】 上位プログラムカウンタ値発生器回路
    はキャリーセレクタ回路を含み、キャリーセレクタ回路
    はキャリー信号を受取り、かつキャリー信号に基づき増
    分信号を提供する、請求項11に記載の装置。
JP13401195A 1994-06-01 1995-05-31 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置 Expired - Fee Related JP3628379B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/252,030 US5559975A (en) 1994-06-01 1994-06-01 Program counter update mechanism
US252030 1994-06-01

Publications (2)

Publication Number Publication Date
JPH07334361A true JPH07334361A (ja) 1995-12-22
JP3628379B2 JP3628379B2 (ja) 2005-03-09

Family

ID=22954326

Family Applications (1)

Application Number Title Priority Date Filing Date
JP13401195A Expired - Fee Related JP3628379B2 (ja) 1994-06-01 1995-05-31 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置

Country Status (5)

Country Link
US (4) US5559975A (ja)
EP (1) EP0685788B1 (ja)
JP (1) JP3628379B2 (ja)
AT (1) ATE170011T1 (ja)
DE (1) DE69504135T2 (ja)

Families Citing this family (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07200289A (ja) * 1993-12-28 1995-08-04 Fujitsu Ltd 情報処理装置
US5819057A (en) * 1995-01-25 1998-10-06 Advanced Micro Devices, Inc. Superscalar microprocessor including an instruction alignment unit with limited dispatch to decode units
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
US5819059A (en) * 1995-04-12 1998-10-06 Advanced Micro Devices, Inc. Predecode unit adapted for variable byte-length instruction set processors and method of operating the same
WO1996038783A1 (en) * 1995-06-01 1996-12-05 Hal Computer Systems, Inc. Method and apparatus for rotating active instructions in a parallel data processor
US5875315A (en) * 1995-06-07 1999-02-23 Advanced Micro Devices, Inc. Parallel and scalable instruction scanning unit
US7301541B2 (en) 1995-08-16 2007-11-27 Microunity Systems Engineering, Inc. Programmable processor and method with wide operations
US5854921A (en) * 1995-08-31 1998-12-29 Advanced Micro Devices, Inc. Stride-based data address prediction structure
US5752069A (en) * 1995-08-31 1998-05-12 Advanced Micro Devices, Inc. Superscalar microprocessor employing away prediction structure
US5835747A (en) * 1996-01-26 1998-11-10 Advanced Micro Devices, Inc. Hierarchical scan logic for out-of-order load/store execution control
US6038657A (en) * 1995-10-06 2000-03-14 Advanced Micro Devices, Inc. Scan chains for out-of-order load/store execution control
US5872947A (en) * 1995-10-24 1999-02-16 Advanced Micro Devices, Inc. Instruction classification circuit configured to classify instructions into a plurality of instruction types prior to decoding said instructions
US5787241A (en) * 1995-12-18 1998-07-28 Integrated Device Technology, Inc. Method and apparatus for locating exception correction routines
US5930489A (en) * 1996-02-09 1999-07-27 Advanced Micro Devices, Inc. Microprocessor configured to detect memory operations having data addresses indicative of a boundary between instructions sets
US5961580A (en) * 1996-02-20 1999-10-05 Advanced Micro Devices, Inc. Apparatus and method for efficiently calculating a linear address in a microprocessor
US5790826A (en) * 1996-03-19 1998-08-04 S3 Incorporated Reduced register-dependency checking for paired-instruction dispatch in a superscalar processor with partial register writes
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
EP0896700A1 (en) * 1996-05-01 1999-02-17 Advanced Micro Devices, Inc. Superscalar microprocessor including a high performance instruction alignment unit
EP0919025B1 (en) * 1996-07-16 2001-09-26 Advanced Micro Devices, Inc. A parallel and scalable instruction scanning unit
US5867680A (en) * 1996-07-24 1999-02-02 Advanced Micro Devices, Inc. Microprocessor configured to simultaneously dispatch microcode and directly-decoded instructions
US6049863A (en) * 1996-07-24 2000-04-11 Advanced Micro Devices, Inc. Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
US6370636B1 (en) 1996-07-31 2002-04-09 Hyundai Electronics Industries Co., Ltd. Accessing byte lines from dual memory blocks and aligning for variable length instruction execution
DE19634031A1 (de) * 1996-08-23 1998-02-26 Siemens Ag Prozessor mit Pipelining-Aufbau
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
US5852727A (en) * 1997-03-10 1998-12-22 Advanced Micro Devices, Inc. Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
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
US6167506A (en) * 1997-11-17 2000-12-26 Advanced Micro Devices, Inc. Replacing displacement in control transfer instruction with encoding indicative of target address, including offset and target cache line location
US6134649A (en) * 1997-11-17 2000-10-17 Advanced Micro Devices, Inc. Control transfer indication in predecode which identifies control transfer instruction and an alternate feature of an instruction
US6108774A (en) * 1997-12-19 2000-08-22 Advanced Micro Devices, Inc. Branch prediction with added selector bits to increase branch prediction capacity and flexibility with minimal added bits
US6061786A (en) * 1998-04-23 2000-05-09 Advanced Micro Devices, Inc. Processor configured to select a next fetch address by partially decoding a byte of a control transfer instruction
EP0953898A3 (en) * 1998-04-28 2003-03-26 Matsushita Electric Industrial Co., Ltd. A processor for executing Instructions from memory according to a program counter, and a compiler, an assembler, a linker and a debugger for such a processor
US6175908B1 (en) 1998-04-30 2001-01-16 Advanced Micro Devices, Inc. Variable byte-length instructions using state of function bit of second byte of plurality of instructions bytes as indicative of whether first byte is a prefix byte
US6141745A (en) * 1998-04-30 2000-10-31 Advanced Micro Devices, Inc. Functional bit identifying a prefix byte via a particular state regardless of type of instruction
ATE557342T1 (de) * 1998-08-24 2012-05-15 Microunity Systems Eng Prozessor und verfahren zur matrixmultiplikation mit einem breiten operand
US6393527B1 (en) * 1998-12-18 2002-05-21 Ati International Srl Prefetch buffer with continue detect
US6038660A (en) * 1999-05-26 2000-03-14 Infineon Technologies North America Corp. Method and apparatus for updating a program counter
US6438664B1 (en) 1999-10-27 2002-08-20 Advanced Micro Devices, Inc. Microcode patch device and method for patching microcode using match registers and patch routines
US6918028B1 (en) * 2000-03-28 2005-07-12 Analog Devices, Inc. Pipelined processor including a loosely coupled side pipe
US6874081B2 (en) * 2001-05-17 2005-03-29 Broadcom Corporation Selection of link and fall-through address using a bit in a branch address for the selection
US20040167786A1 (en) * 2002-03-08 2004-08-26 Grace John J. System for optimizing selection of a college or a university and a method for utilizing the system provided by a program
TW588243B (en) * 2002-07-31 2004-05-21 Trek 2000 Int Ltd System and method for authentication
US7877581B2 (en) * 2002-12-12 2011-01-25 Pmc-Sierra Us, Inc. Networked processor for a pipeline architecture
US6957319B1 (en) 2003-02-19 2005-10-18 Advanced Micro Devices, Inc. Integrated circuit with multiple microcode ROMs
US20050050278A1 (en) * 2003-09-03 2005-03-03 Advanced Micro Devices, Inc. Low power way-predicted cache
US7117290B2 (en) * 2003-09-03 2006-10-03 Advanced Micro Devices, Inc. MicroTLB and micro tag for reducing power in a processor
US7281120B2 (en) * 2004-03-26 2007-10-09 International Business Machines Corporation Apparatus and method for decreasing the latency between an instruction cache and a pipeline processor
US7649879B2 (en) * 2004-03-30 2010-01-19 Extreme Networks, Inc. Pipelined packet processor
US7889750B1 (en) * 2004-04-28 2011-02-15 Extreme Networks, Inc. Method of extending default fixed number of processing cycles in pipelined packet processor architecture
US20060149931A1 (en) * 2004-12-28 2006-07-06 Akkary Haitham Runahead execution in a central processing unit
US7822033B1 (en) 2005-12-30 2010-10-26 Extreme Networks, Inc. MAC address detection device for virtual routers
US7817633B1 (en) 2005-12-30 2010-10-19 Extreme Networks, Inc. Method of providing virtual router functionality through abstracted virtual identifiers
US7894451B2 (en) * 2005-12-30 2011-02-22 Extreme Networks, Inc. Method of providing virtual router functionality
KR20070101998A (ko) * 2006-04-13 2007-10-18 한국과학기술원 마이크로 컨트롤러의 프로그램 카운터 및 그 제어방법
US8035650B2 (en) * 2006-07-25 2011-10-11 Qualcomm Incorporated Tiled cache for multiple software programs
US7852486B2 (en) * 2008-02-07 2010-12-14 Board Of Regents, The University Of Texas System Wavelength and intensity monitoring of optical cavity
US8495699B2 (en) * 2008-12-23 2013-07-23 At&T Intellectual Property I, L.P. Distributed content analysis network
US20100223673A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with access restrictions
US20100223660A1 (en) * 2009-02-27 2010-09-02 At&T Intellectual Property I, L.P. Providing multimedia content with time limit restrictions
KR101059899B1 (ko) * 2009-04-23 2011-08-29 광주과학기술원 마이크로 프로세서
US8904421B2 (en) 2009-06-30 2014-12-02 At&T Intellectual Property I, L.P. Shared multimedia experience including user input
US8605732B2 (en) 2011-02-15 2013-12-10 Extreme Networks, Inc. Method of providing virtual router functionality
US9785565B2 (en) 2014-06-30 2017-10-10 Microunity Systems Engineering, Inc. System and methods for expandably wide processor instructions
US10198260B2 (en) 2016-01-13 2019-02-05 Oracle International Corporation Processing instruction control transfer instructions
US10061580B2 (en) 2016-02-25 2018-08-28 International Business Machines Corporation Implementing a received add program counter immediate shift (ADDPCIS) instruction using a micro-coded or cracked sequence
US10719248B2 (en) 2018-04-20 2020-07-21 Micron Technology, Inc. Apparatuses and methods for counter update operations
CN112233715B (zh) * 2019-07-15 2024-06-18 美光科技公司 用于存储器系统的维护操作
CN114741117B (zh) * 2022-03-09 2024-08-09 上交所技术有限责任公司 一种跨平台的程序指令重排的验证方法

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3781808A (en) * 1972-10-17 1973-12-25 Ibm Virtual memory system
US3875391A (en) * 1973-11-02 1975-04-01 Raytheon Co Pipeline signal processor
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4155119A (en) * 1977-09-21 1979-05-15 Sperry Rand Corporation Method for providing virtual addressing for externally specified addressed input/output operations
US4179737A (en) * 1977-12-23 1979-12-18 Burroughs Corporation Means and methods for providing greater speed and flexibility of microinstruction sequencing
US4200912A (en) * 1978-07-31 1980-04-29 Motorola, Inc. Processor interrupt system
US4384343A (en) * 1979-02-12 1983-05-17 Honeywell Information Systems Inc. Firmware controlled search and verify apparatus and method for a data processing system
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
FR2554952B1 (fr) * 1983-11-15 1989-04-28 Telecommunications Sa Procede et systeme d'adressage pour memoire dynamique
JPH0658631B2 (ja) * 1983-12-19 1994-08-03 株式会社日立製作所 デ−タ処理装置
US4685078A (en) * 1984-10-31 1987-08-04 International Business Machines Corporation Dual incrementor
US5133062A (en) * 1986-03-06 1992-07-21 Advanced Micro Devices, Inc. RAM buffer controller for providing simulated first-in-first-out (FIFO) buffers in a random access memory
AU587714B2 (en) * 1986-08-27 1989-08-24 Amdahl Corporation Cache storage queue
US4853889A (en) * 1986-09-03 1989-08-01 American Telephone And Telegraph Company, At&T Bell Laboratories Arrangement and method for speeding the operation of branch instructions
US5131086A (en) * 1988-08-25 1992-07-14 Edgcore Technology, Inc. Method and system for executing pipelined three operand construct
US5056006A (en) * 1988-09-12 1991-10-08 General Electric Company Parallel processor with single program storage and sequencer and simultaneous instruction processing
US5051885A (en) * 1988-10-07 1991-09-24 Hewlett-Packard Company Data processing system for concurrent dispatch of instructions to multiple functional units
US5113515A (en) * 1989-02-03 1992-05-12 Digital Equipment Corporation Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
US5155816A (en) * 1989-02-10 1992-10-13 Intel Corporation Pipelined apparatus and method for controlled loading of floating point data in a microprocessor
US5155820A (en) * 1989-02-21 1992-10-13 Gibson Glenn A Instruction format with designations for operand lengths of byte, half word, word, or double word encoded in address bits
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
US5136697A (en) * 1989-06-06 1992-08-04 Advanced Micro Devices, Inc. System for reducing delay for execution subsequent to correctly predicted branch instruction using fetch information stored with each block of instructions in cache
US5471593A (en) * 1989-12-11 1995-11-28 Branigin; Michael H. Computer processor with an efficient means of executing many instructions simultaneously
US5185871A (en) * 1989-12-26 1993-02-09 International Business Machines Corporation Coordination of out-of-sequence fetching between multiple processors using re-execution of instructions
US5546551A (en) * 1990-02-14 1996-08-13 Intel Corporation Method and circuitry for saving and restoring status information in a pipelined computer
US5226130A (en) * 1990-02-26 1993-07-06 Nexgen Microsystems Method and apparatus for store-into-instruction-stream detection and maintaining branch prediction cache consistency
JP2822588B2 (ja) * 1990-04-30 1998-11-11 日本電気株式会社 キャッシュメモリ装置
ATE146611T1 (de) * 1990-05-04 1997-01-15 Ibm Maschinenarchitektur für skalaren verbundbefehlssatz
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
CA2045773A1 (en) * 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
US5325499A (en) * 1990-09-28 1994-06-28 Tandon Corporation Computer system including a write protection circuit for preventing illegal write operations and a write poster with improved memory
US5261063A (en) * 1990-12-07 1993-11-09 Ibm Corp. Pipeline apparatus having pipeline mode eecuting instructions from plural programs and parallel mode executing instructions from one of the plural programs
KR100299691B1 (ko) * 1991-07-08 2001-11-22 구사마 사부로 확장가능알아이에스씨마이크로프로세서구조
JPH0820949B2 (ja) * 1991-11-26 1996-03-04 松下電器産業株式会社 情報処理装置
DE69311330T2 (de) * 1992-03-31 1997-09-25 Seiko Epson Corp., Tokio/Tokyo 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
US5367650A (en) * 1992-07-31 1994-11-22 Intel Corporation Method and apparauts for parallel exchange operation in a pipelined processor
US5450560A (en) * 1992-12-21 1995-09-12 Motorola, Inc. Pointer for use with a buffer and method of operation
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
US5465373A (en) * 1993-01-08 1995-11-07 International Business Machines Corporation Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
US5454117A (en) * 1993-08-25 1995-09-26 Nexgen, Inc. Configurable branch prediction for a processor performing speculative execution
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5574928A (en) * 1993-10-29 1996-11-12 Advanced Micro Devices, Inc. Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments
DE69429061T2 (de) * 1993-10-29 2002-07-18 Advanced Micro Devices, Inc. Superskalarmikroprozessoren

Also Published As

Publication number Publication date
DE69504135D1 (de) 1998-09-24
EP0685788A1 (en) 1995-12-06
US6351801B1 (en) 2002-02-26
US5799162A (en) 1998-08-25
US5559975A (en) 1996-09-24
EP0685788B1 (en) 1998-08-19
US6035386A (en) 2000-03-07
ATE170011T1 (de) 1998-09-15
JP3628379B2 (ja) 2005-03-09
DE69504135T2 (de) 1999-05-06

Similar Documents

Publication Publication Date Title
JP3628379B2 (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
EP0952517B1 (en) Microprocessors load/store functional units and data caches
JP3662296B2 (ja) スーパースカラマイクロプロセッサおよびropを処理する方法
JP3751049B2 (ja) パイプラインプロセッサおよびその動作方法
EP0859980B1 (en) Microcode patching apparatus and method
EP0651322B1 (en) Instruction caches for variable byte-length instructions
US5850543A (en) Microprocessor with speculative instruction pipelining storing a speculative register value within branch target buffer for use in speculatively executing instructions after a return
US5655097A (en) High performance superscalar microprocessor including an instruction cache circuit for byte-aligning CISC instructions stored in a variable byte-length format
JP3182740B2 (ja) 単一クロック・サイクルに非連続命令を取り出すための方法およびシステム。
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
US5113515A (en) Virtual instruction cache system using length responsive decoded instruction shifting and merging with prefetch buffer outputs to fill instruction buffer
EP0651324B1 (en) Speculative instruction queue for variable byte length instructions
US6684323B2 (en) Virtual condition codes
JPH07182163A (ja) スーパスカラ命令デコード/発行装置
WO1998057254A1 (en) Tagging floating point values for rapid detection of special floatint point numbers
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US5895497A (en) Microprocessor with pipelining, memory size evaluation, micro-op code and tags
McMahan et al. 6/spl times/86: the Cyrix solution to executing/spl times/86 binaries on a high performance microprocessor

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20041108

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: 20041124

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20041208

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: 20071217

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20081217

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20091217

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20101217

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

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

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20111217

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20121217

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees