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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined decoding, e.g. using predecoding
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
- G06F9/30152—Determining start or end of instruction; determining instruction length
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30174—Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/321—Program or instruction counter, e.g. incrementing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3856—Reordering of instructions, e.g. using queues or age tags
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, 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
を更新するためのメカニズムを提供する。 【構成】 フェッチプログラムカウンタ回路と実行プロ
グラムカウンタ回路とを含むプロセッサ100が開示さ
れる。フェッチプログラムカウンタ回路はフェッチプロ
グラムカウンタ値に加えて下位プログラムカウンタ値を
も与える。実行プログラムカウンタ回路は、下位プログ
ラムカウンタ値ビットを用いて実行プログラムカウンタ
値を発生する。実行プログラムカウンタ回路は複数個の
下位プログラムカウンタビット値を受取り、1つの下位
プログラムカウンタビット値を選択して、それにより多
重パイプラインプロセッサにおける実行プログラムカウ
ンタ値を発生する。
Description
より特定的にはマイクロプロセッサのプログラムカウン
タ値を更新するためのメカニズムに関する。
少数の半導体チップ上で実現されるプロセッサである。
半導体チップ技術はマイクロプロセッサ内の回路密度お
よびスピードをますます増大させているが、しかしなが
らマイクロプロセッサと外部メモリとの間の配線は、パ
ッケージング技術によって制限されている。オンチップ
配線は極めて安価であるが、オフチップ配線は非常に高
価である。マイクロプロセッサの性能を改善することを
意図するいかなる技術も、増大した回路密度およびスピ
ードを利用する一方でパッケージング技術およびプロセ
ッサとその外部メモリとの間の物理的な分離の制限内に
留まらなければならない。回路密度を高めることによっ
て、より一層複雑な設計への道が開けるとはいえ、マイ
クロプロセッサの動作はユーザがそのマイクロプロセッ
サをどうやって使うか理解できるように単純かつ明快な
もののままでなければならない。
ラ計算を目的としているが、スーパースカラマイクロプ
ロセッサはマイクロプロセッサの進化における次の論理
的なステップである。スーパースカラという語は、スカ
ラ命令の同時実行によって性能を向上させたコンピュー
タの実現例を表わす。スカラ命令は、汎用マイクロプロ
セッサにおいて典型的に見出されるタイプの命令であ
る。今日の半導体処理技術を用いれば、単一のプロセッ
サチップにかつては大規模科学計算用プロセッサにしか
応用できなかった高性能な技術を組入れることができ
る。しかしながら、大規模プロセッサに応用される技術
の多くは、スカラ計算には不適切であるか、マイクロプ
ロセッサに応用するにはあまりに高価であるかのどちら
かである。
ログラムを実行する。1つのアプリケーションプログラ
ムには、命令のグループが含まれる。アプリケーション
プログラムを実行するにあたって、プロセッサは何らか
のシーケンスにおいて命令をフェッチし、実行する。1
つの命令の実行にさえ、いくつかのステップが関わって
いる。このステップは、命令をフェッチするステップ
と、それをデコードするステップと、そのオペランドを
組立てるステップと、命令によって特定される動作を行
なうステップと、命令の結果を記憶装置に書込むステッ
プとを含む。命令の実行は周期的クロック信号によって
制御される。クロック信号の周期はプロセッサのサイク
ル時間である。
かかる時間は、3つの要因によって決定される。すなわ
ち、そのプログラムを実行するのに必要な命令の数と、
1つの命令を実行するのに必要なプロセッササイクルの
平均数と、プロセッサのサイクル時間とである。プロセ
ッサの性能はプロセッサがプログラムを完了させるのに
かける時間を低減することによって向上するが、これに
はこれらの要因の1つ以上を低減することが要求され
る。
つの方法は、パイプライン化と呼ばれる技術を用いて、
異なった命令におけるステップを重複させることによる
ものである。命令をパイプライン化するには、命令実行
の様々なステップがパイプライン段と呼ばれる独立的な
ユニットによって行なわれる。パイプライン段はクロッ
クドレジスタによって分離される。異なった命令のステ
ップが、異なったパイプライン段において独立的に実行
される。パイプライン化は、命令を重複させ、それによ
りプロセッサが同時に1つより多くの命令を扱うことが
できるようにすることによって、1つの命令の実行に必
要な総合的な時間を、短縮することはないものの、命令
の実行に必要なサイクルをかなりの数、低減する。これ
はプロセッサのサイクル時間を増大させることなく、ま
たしばしば低減して行なわれる。パイプライン化は、典
型的には命令1つあたりのサイクルの平均数を3のファ
クタ分も低減する。しかしながら、分岐命令を実行する
場合、パイプラインは時折、分岐動作の結果が知られ、
正しい命令が実行のためにフェッチされるまで、止まっ
てしまうかもしれない。この遅延は、分岐遅延ペナルテ
ィとして知られている。パイプライン段の数を増やすこ
とは、典型的には命令1つあたりのサイクルの平均数に
関連して分岐遅延ペナルティを増やすことにも繋がる。
のプロセッササイクルごとに1つの命令を実行する。ス
ーパースカラプロセッサが低減する命令1つあたりのサ
イクルの平均数は、異なったパイプライン段での命令の
同時実行を可能にするだけでなく、同一のパイプライン
段において命令を同時に実行できるようにすることによ
り、パイプライン化されたスカラプロセッサで可能な数
を超える。スーパースカラという語は、科学計算でよく
あるようなベクトルまたはアレイ上での多数の同時動作
と区別される、スカラ量上での多数の同時動作を強調す
るものである。
しては単純であるが、性能の向上を達成するには、プロ
セッサのパイプラインを広くする以上のことがなされて
いる。パイプラインを広くすればサイクル1つあたりに
1つより多くの命令を実行することが可能になるが、命
令における所与のどのシーケンスもこの能力を利用でき
るという保証はない。命令は互いに独立しているのでは
なく、相互に関連しており、これらの相関のせいで、命
令によっては同一のパイプライン段に入ることが妨げら
れる。さらに、命令をデコードし、実行するためのプロ
セッサのメカニズムは、同時に実行され得る命令を発見
する能力において大きな違いとなり得る。
び他のアーキテクチャ的な特徴からは独立したプロセッ
サ機構に大きく関わっている。したがって、スーパース
カラ技術の魅力の1つは、既存のアーキテクチャとコー
ドの互換性があるプロセッサを開発できる可能性であ
る。多くのスーパースカラ技術は、縮小命令セットコン
ピュータ(RISC)または複合命令セットコンピュー
タ(CISC)アーキテクチャのいずれにも等しく良好
に適用される。しかしながら、RISCアーキテクチャ
の多くにおける規則性のため、スーパースカラ技術は最
初はRISCプロセッサの設計に応用されてきた。
グラムカウンタ(PC)は、命令がメモリからフェッチ
され実行される際の、命令のメモリアドレスを保存す
る。プログラムカウンタとして言及される、プログラム
カウンタ値を維持し更新するためのプログラムカウンタ
メカニズムは、インクリメンタと、セレクタと、レジス
タとを含む。各命令がフェッチされデコードされるにつ
れ、次の順次命令のアドレスが、インクリメンタを用い
てプログラムカウンタの現在の値に現在の命令のバイト
長を加え、この次の順次命令をレジスタ内に位置づける
ことによって、形成される。分岐が行なわれると、目的
命令のアドレスが増分された値の代わりにセレクタによ
って選択され、この目的アドレスがレジスタ内に位置づ
けられる。
す。プログラムカウンタ値は、フェッチされ実行される
べき次の命令のメモリアドレスを提供する。プログラム
カウンタ値はまた、命令ストリームの実行を止めた問題
に遭遇した命令のアドレスを識別する。このアドレスは
デバッグをする目的で、または訂正動作が行なわれた後
でなされるかもしれない命令ストリームの実行の続行の
ために用いられてもよい。
化の実現例を用いる場合、プログラムカウンタ値は、こ
の値が命令フェッチアドレスを提供するパイプラインの
始めに維持される。この値はフェッチPC値として言及
される。このフェッチPC値はパイプラインに入る命令
を指し示す。命令がパイプライン段に沿って伝播するに
つれ、後続する命令がフェッチされ、パイプライン内に
位置づけられる。したがって、フェッチPC値は第1段
以外のパイプラインの段にある命令には対応しない。命
令ストリームの実行を止める問題のほとんどは、パイプ
ラインの初めよりも終わりの近く、または終わりにおい
て検出される傾向にあるので、命令のためのプログラム
カウンタ値は命令が実行されている間維持されていなけ
ればならない。この値は実行PC値と呼ばれる。
られている。第1の方法は、ある命令のPC値が、その
命令とともにパイプラインを下っていくためのものであ
る。この方法では、各パイプライン段は実行PC値をス
トアするための付加的な記憶装置を必要とする。必要と
される付加的な記憶装置の量は、パイプライン段の数に
比例する。第2の方法は、パイプラインの終わりにおい
てDC回路を二重にするものである。この方法では、命
令の長さの情報だけがパイプライン内の命令に伴う。非
分岐命令が完了する際、命令の長さの値は実行PC値に
加算され、次の命令のための実行PC値が提供される。
分岐命令の完了にあたっては、増分された値ではなく、
その分岐のための目的アドレスが実行PC値として提供
される。
を提供するフェッチプログラムカウンタ回路と、下位プ
ログラムカウンタ値ビットを用いて実行プログラムカウ
ンタ値を発生する実行プログラムカウンタ回路とを設け
ることによって、実行プログラムカウンタ値を迅速かつ
効率的に発生することが可能になるということが発見さ
れている。また、複数個の下位プログラムカウンタビッ
ト値を受取り、単一の下位プログラムカウンタビット値
を選択する、実行プログラムカウンタ回路を設けること
により、多重パイプラインプロセッサにおいて実行プロ
グラムカウンタ値を容易に発生することが可能になると
いうことも、発見されている。
ストモードの詳細な説明を以下に述べる。この説明は本
発明にとって例示的なものとして意図されており、限定
的なものととられるべきではない。
トを実行するスーパースカラ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)などの様々な
機能ユニットとともに含む。
ンドバス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バスを
含む。
プロセッサ100はデータキャッシュ150(DCAC
HE)および物理タグ回路162をも含む。データキャ
ッシュ150はRISCコアのロード/ストア機能ユニ
ット134に結合され、かつプロセッサ内アドレスおよ
びデータ(IAD)バス102に結合される。命令キャ
ッシュ104はまた、IADバス102とも結合され
る。物理タグ回路162は、命令キャッシュ104とデ
ータキャッシュ150との双方と、IADバスを介して
対話する。命令キャッシュ104およびデータキャッシ
ュ150は双方とも線形にアドレス可能なキャッシュで
ある。命令キャッシュ104およびデータキャッシュ1
50は物理的には分離しているが、しかしながらこれら
のキャッシュは双方とも同じアーキテクチャを用いて編
成される。
管理ユニット(MMU)164とバスインタフェースユ
ニット160(BIU)とを含む。TLB164はIA
Dバスと物理タグ回路162とに結合される。バスイン
タフェースユニット160は物理タグ回路162、デー
タキャッシュ150、ならびにIADバス102および
486XLバスなどの外部マイクロプロセッサバスに結
合される。
ンスを含むコンピュータプログラムを実行する。コンピ
ュータプログラムは典型的には、ハードディスク、フロ
ッピーディスク、またはコンピュータシステム内に位置
づけられる他の不揮発性記憶媒体にストアされる。プロ
グラムが実行されると、そのプログラムは記憶媒体から
メインメモリ101にロードされる。一旦プログラムに
おける命令および関連のデータがメインメモリ101内
に入ると、個々の命令が実行のために準備され、最後に
マイクロプロセッサ100によって実行される。
命令はバスインタフェースユニット160を経由して命
令キャッシュ104に送られ、そこで命令は一時的に保
持される。X86命令は命令キャッシュ104によっ
て、命令キャッシュ104が発生するフェッチプログラ
ムカウンタ値を用いて命令デコーダ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値と非同期に発生される。
トで複数のフィールドを含む。すなわちこのフォーマッ
トは、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オペランドバスおよび変位バス上に位置づ
けられたアドレスの構成要素を表わしており、これらの
アドレスの構成要素は組合せられて論理アドレスを形成
し、この論理アドレスはセグメントベースと結合されて
線形アドレスを提供し、この線形アドレスにデータはス
トアされる。
らオペレーションコードバスを介してRISCコア11
0の機能ユニットへ与えられる。特定の命令のためのO
PCODEが適切な機能ユニットに与えられなければな
らないだけでなく、命令のための指定されたOPERA
NDも検索され、機能ユニットに送られなければならな
い。特定のオペランドの値がまだ計算されていなけれ
ば、機能ユニットが命令を実行できるようになる前に、
まずその値が計算され機能ユニットに与えられなければ
ならない。たとえば、現在の命令が先行する命令に依存
する場合、現在の命令が実行できるようになる前に、先
行する命令の結果が決定されなければならない。この状
況は、依存性と呼ばれる。
れるために必要なオペランドは、レジスタファイル11
2、リオーダバッファ114によってオペランドバスに
与えられるか、結果バス140を介して機能ユニットか
ら送られるかのいずれかである。オペランドバスはオペ
ランドを適切な機能ユニットに伝える。一旦機能ユニッ
トがOP CODE、OPERAND A、およびOP
ERAND Bを受取ると、機能ユニットはその命令を
実行し、その結果を結果バス140に位置づける。結果
バス140はすべての機能ユニットの出力およびリオー
ダバッファ114に結合されている。
(FIFO)装置として管理される。ある命令が命令デ
コーダ108によってデコードされると、対応するエン
トリがリオーダバッファ114内に割当てられる。命令
によって計算された結果値は次に、その命令の実行が完
了すると割当てられたエントリに書込まれる。結果値は
続いてレジスタファイル112に書込まれ、命令に関連
づけられた例外がなく、命令に影響を与える未決定の推
論的分岐がなければ、その命令はリタイアされる。命令
がリタイアされると、それに関連の実行プログラムカウ
ンタ値もレジスタファイル112内のプログラムカウン
タレジスタにストアされる。関連のエントリがリオーダ
バッファ114の先頭に到達しても命令が完了していな
かった場合、リオーダバッファ114の進行はその命令
が完了するまで止められる。しかしながらさらなるエン
トリを割当て続けることができる。
ランドがまだ機能ユニットにとって利用可能なものでは
ないためにまだ完了していない命令からのOP COD
Eをストアするためのそれぞれの予約ステーション回路
(RS)120〜126を含む。各予約ステーション回
路は命令のOP CODEをタグとともにストアする。
このタグは後に予約ステーション回路に到達するであろ
う欠けているオペランドのための場所を予約しておくも
のである。この技術は、未決定の命令が予約ステーショ
ンにおいてそのオペランドとともに組立てられている間
に、マイクロプロセッサ100が他の命令を実行し続け
ることができるようにすることによって、性能を強化す
るものである。
08をRISCコア110の機能ユニットから分離する
ことによって、順序が乱れた発行に対処する。より特定
的には、リオーダバッファ114および機能ユニットの
予約ステーションは、分布命令ウインドウを効果的に確
立する。したがって、デコーダ108は命令がすぐには
実行できない場合でさえ、命令のデコードを続けること
ができる。命令ウインドウは命令のプールとして働く。
この命令のプールから、機能ユニットは前に進み続けつ
つ命令を引出し、実行する。命令ウインドウはこのよう
にして、マイクロプロセッサ100にルックアヘッド能
力をもたらす。依存性がクリアされ、オペランドが利用
可能なものとなるにつれ、ウインドウ内のより多くの命
令が機能ユニットによって実行され、デコーダはさらに
多くのデコードされた命令でウインドウを充填し続け
る。
の分岐セクション135を用いてその性能を強化する。
分岐が起こると、次の命令はその分岐の結果に依存する
ので、プログラムにおける命令ストリーム内の分岐はマ
イクロプロセッサの命令をフェッチする能力の妨げとな
る。分岐セクション135は、分岐が行なわれるべきか
どうかを判断する。加えて、命令キャッシュ104は先
行する分岐の結果の実行記録をとり続けるための分岐目
的バッファを含む。この記録に基づき、ある特定のフェ
ッチされた分岐の間に、フェッチされた分岐命令がどの
分岐をとるであろうかを決定するための判断がなされ
る。例外または分岐セクション135の決定に基づく分
岐の誤予測があれば、その場合誤って予測された分岐命
令に続いて割当てられたリオーダバッファ114の内容
は廃棄される。
図である。「可変バイト長命令に特に適した、プリデコ
ードされた命令キャッシュおよびそのための方法(Pre-
Decoded Instruction Cache and Method Therefor Part
iculary Suitable for Variable Byte-Length Instruct
ions)」と題された連続番号 で出願日が の米
国出願が、引用により援用されており、命令キャッシュ
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に与える。
レイに編成される。それらはすなわち、命令キャッシュ
ストアアレイ180と、線形タグアレイ182と、サク
セサアレイ184とである。命令キャッシュストアアレ
イ180は、16バイト命令をストアする。線形タグア
レイ182は、命令に対応する線形アドレスタグをスト
アする。サクセサアレイ184は、命令に対応する、分
岐予測をサポートするために用いられる予測された分岐
情報をストアする。これらのアレイの各々は、アドレス
回路172によって提供される、線形FETCH PC
アドレスによってアドレス指定されている。
段のパイプライン化されたデコーダであって、これはバ
イトキュー106からプリデコードされたX86命令バ
イトを受取り、それらをそれぞれのROPのシーケンス
に変換し、複数個のディスパッチ位置からROPを迅速
にディスパッチする。多数命令発行のための機会を最大
限にするため、最も単純な命令についてはこの変換はハ
ードワイヤード高速変換経路内で扱われる。好ましい実
施例では、ハードワイヤード高速変換経路は3つのRO
Pまたはそれ未満のものにマッピングするX86命令に
適用される。3つより多くのROPを必要とする命令お
よびあまり使われない命令は、マイクロコードROM内
に含まれるマイクロコードシーケンスによって扱われ
る。X86命令がマイクロコードROMにマッピングし
たときには常に、プリデコードされたX86命令情報が
複数のディスパッチ位置において二重にされ、各ディス
パッチ位置が独立的かつ他のディスパッチ位置と並行に
動けるようにする。
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
において実行される。
パッチされプリデコードされたX86命令がバイトキュ
ー106の外へシフトされ、次のディスパッチされてい
ないまたは部分的にディスパッチされているプリデコー
ドされたX86命令が「キューの先頭」にシフトされる
ように、バイトキュー106におけるシフトを制御す
る。命令デコーダ108はまた、バイトキュー106に
おける問題を検出し、マイクロコードエントリポイント
を強制することによって、命令キャッシュ104を適切
なように間接的に再び導く。命令デコーダ108はま
た、命令キャッシュ104内のキャッシュ再充填論理に
よって、ならびに分岐セクション135における例外お
よびマイクロ分岐誤予測論理によって開始されるマイク
ロコードROMエントリポイントを受入れる。分岐セク
ション135によって発生されるマイクロコードエント
リポイントは、XTARGETバス103を介して命令
デコーダ108に伝えられる。命令デコーダ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)において実現され
る。
置230によって制御される。命令デコード制御装置2
30は、TADバス118上に命令タイプ情報をもたら
し、現在のディスパッチウインドウ内のROPのうちい
くつがRISCコア110によって受入れられ得るかを
予測し、この予測を鑑みてどのようにバイトキュー10
6をシフトさせるか命令キャッシュ104に知らせ、バ
イトキュー106の先頭におけるプリデコードされたX
86命令のためにまだこれからディスパッチされるべき
ROPの数をROPマルチプレクサ200に知らせ、マ
イクロコードおよび制御ROMにアクセスするなど、一
般的な制御機能を提供するために、組合せ論理またはプ
ログラマブルアレイ論理において実現される論理を含
む。これらの機能を提供するために、命令デコード制御
装置230はRISCコア110の機能ユニット131
〜136およびプロセッサ100の他のユニットから様
々な情報を受取る。
2、および253は、「単純な」X86命令(すなわち
3つ以下のROPにマッピングするもの)に対して多く
のタイプの高速変換を行なう。各ディスパッチ位置にお
ける高速コンバータはX86命令を、そのX86命令を
実行するのに必要なROPのシーケンスのそれぞれ1つ
(1つのシーケンスは1つまたはそれ以上のROPであ
る)に変換し、ある一定のプレフィックスおよびSIB
バイトのためのROPの動作を変形する。高速コンバー
タ250〜253はプログラマブルアレイ論理として実
現されるか、第2のデコード段の位相1において前にラ
ッチされた組合せ論理しとて実現されるかのいずれかで
ある。
するのに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アレイである。
2、および213もまた、それぞれの共通段260、2
61、262、および263を含む。各共通段はパイプ
ライン段として機能する。各共通段260、261、2
62、および263はそれぞれの高速コンバータおよび
マイクロコードROMと関連づけられている。命令が高
速経路命令であるかマイクロコードROM命令であるか
に関わりなくある特定のやり方で効率的に扱うことがで
き、かつマイクロコードROMにおける発生を必要とは
しないX86命令変換動作は部分的に、変換を必要とし
ない共通データとともに、高速コンバータまたはマイク
ロコードROMにおける様々な段の命令部分の処理を伴
うステップでそれぞれの共通段を介して、実行されパイ
プライン化される。各共通段はまた、高速経路命令およ
びMROM命令の双方によって用いられる内部命令デコ
ーダアドレス計算を行なうために使用されるレジスタポ
インタを追跡する。
および223は、高速コンバータおよびパイプライン段
の出力またはマイクロコードROMおよびパイプライン
段の出力のいずれかを選択し、ディスパッチ情報を発生
する。各セレクタ回路はまた、即値フィールド定数値を
選択し、機能ユニット131〜136への即値アドレス
または定数を駆動する。ROP共有ユニット226はデ
ィスパッチ位置210〜213の各々におけるROP選
択回路からの情報に応答し、すべてのディスパッチ位置
によって共有されるリソースのためのディスパッチ情報
を発生する。デコードプログラムカウンタ回路242は
バイトキュー106から送られるX86命令の各々にお
ける論理プログラムカウンタ値を追跡する。バイトキュ
ー106はプリフェッチストリーム内に非順次フェッチ
を検出すると、その目的のバイトおよび新しい目的アド
レスをデコードプログラムカウンタ回路242に示す。
デコードプログラムカウンタ回路242は次にデコード
プログラムカウンタ値を発生し、これは分岐セクション
135ならびにディスパッチされた各ROPのためのデ
コードプログラムカウンタ値における下位ビットおよび
キャリービットに与えられる。LPCビットおよびキャ
リービットは、命令デコーダ108によってリオーダバ
ッファ114に与えられる。
ードPCレジスタの中に維持されるROPデコードプロ
グラムカウンタ値が、X86アーキテクチャにおける論
理アドレスとして維持されるので、セグメント間分岐を
行なうときには、命令キャッシュ104にアクセスする
のに用いられる線形アドレスからデコードPCレジスタ
を更新するために必要な論理アドレスへの変換が必要で
ある。これは命令キャッシュ104において、まず線形
アドレスからセグメントベースポインタを減算して取除
き、論理アドレスを得ることによってなし遂げられる。
この32ビットの論理アドレスは次に命令デコーダ10
8のデコードプログラムカウンタ回路242に駆動さ
れ、これは次にROPデコードプログラムカウンタ値を
発生する。セグメント間分岐を行なわない場合、デコー
ドPC値はデコードプログラムカウンタ回路242で更
新される。
プログラムカウンタ回路242は開始位置と終了位置と
の間でバイトキュー内のX86バイトの数をカウント
し、これを開始論理デコードプログラムカウンタ値に加
算して、次のデコードプログラムカウンタ値を発生す
る。
ーダ108の様々なユニットの動作を制御するための適
切なステートマシンのいずれかである。
ンタ発生器回路242は、キュー300と、スキャン論
理302と、上位部分プログラムカウンタラッチ304
と、下位部分プログラムカウンタラッチ306と、上位
部分プログラムカウンタ発生器回路308と、下位部分
プログラムカウンタ発生器回路310と、プログラムカ
ウンタ値セレクタ回路312とを含む。
ムカウンタ値を有効ビットと同様に保持し、非順次プロ
グラムカウンタ値のビット4:31を上位部分プログラ
ムカウンタラッチ304に与える。キュー300は非順
次プログラムカウンタ値のビット0:3をスキャン論理
302に与える。
によって処理されている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があるかに
は関わりがない。
は、加算器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はマルチプレクスされた
値を現在のデコードプログラムカウンタ値としてストア
し、次のデコードプログラムカウンタ値を得るにあたっ
て用いる。
は、各加算器からのキャリービットを上位プログラムカ
ウンタ発生器回路308のキャリーセレクタ334に与
える。下位プログラムカウンタ発生器回路310はま
た、これらのキャリービットをカウンタ値選択回路31
2にも与える。
次のプログラムカウンタ値のビット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ビットが用いられる。
クサ336とディスパッチ割当マルチプレクサ338を
含む。マルチプレクサ336は、キュー300からどの
命令が、命令デコーダ108によって対応するROPが
ディスパッチされる際に取除かれるかに基づき、デコー
ドプログラムカウンタ値(DPC)のビット0:3とし
て、次に来るかもしれない4つの下位プログラムカウン
タ値のうち1つを選択する。マルチプレクサ336はこ
のデコードプログラムカウンタ値をリオーダバッファ1
14に与える。ディスパッチ割当マルチプレクサ338
は次の下位プログラムカウンタ値(LPC)およびキャ
リー値(CARRY)を受取り、これらの値をディスパ
ッチされる各ROPのためにリオーダバッファ114に
与える。
はデコードプログラムカウンタ値のビット4:31をプ
ログラムカウンタ値選択回路312に与える。プログラ
ムカウンタ値選択回路312はこれらのビットをマルチ
プレクサ336からの選択された下位ビット0:3と組
合せ、完全な、すなわちビット0〜31の、デコードプ
ログラムカウンタ(DPC)値を提供する。
は循環先入れ先出し(FIFO)回路であって、推論的
に実行されるROPの相対的な順序を追跡する。リオー
ダバッファの記憶位置は、それぞれリタイアの結果をレ
ジスタファイル112に送り、命令デコーダ108から
の不整合なROPを受取るために先頭および末尾キュー
ポインタを用いて、動的に割当てられる。命令がデコー
ドされると、その結果値はリオーダバッファ114内の
位置または行先に割当てられ、その行先レジスタ番号は
この位置と関連づけられる。依存性のない後続の命令に
ついては、関連づけられたAおよびBオペランドバスが
レジスタファイル112から駆動される。しかしなが
ら、後続する命令が依存性を有しており、名前を変更さ
れた行先レジスタを参照してその中にストアされている
と考えられる値を得る場合、リオーダバッファ114内
でエントリがアクセスされる。結果をその中で得ること
ができれば、それはオペランドバスにもたらされる。結
果が得られない場合、このリオーダバッファエントリを
識別するタグが、AおよびBオペランドタグバス116
の1本のオペランドタグバスに与えられる。結果または
タグはオペランドバスまたはオペランドタグバスを介し
て機能ユニットにもたらされる。機能ユニットにおける
実行の完了により結果が得られた場合、その結果および
それらのそれぞれの結果タグは、バス5本分の幅の結果
バスと5本の結果タグバス140とを介してリオーダバ
ッファ114および機能ユニットの予約ステーションに
もたらされる。
カウンタレジスタを更新するためにROPと関連してい
るプログラムカウンタ値を保持する圧縮形式を用いる。
この圧縮形式に必要なのは、下位4バイトとビット増分
すなわちキャリーの表示のみである。順次的X86バイ
トについては、付加されるバイトの数は15個以下であ
り、非順次的フェッチについては、分岐が成功裏に完了
すると、新しい分岐目的が結果バスに駆動され、それに
より命令デコーダ108からリオーダバッファ114へ
の新しい分岐位置の書込みは必要でなくなる。
ファ制御およびステータス回路400と、リオーダバッ
ファアレイ402と、リオーダバッファオペランドバス
ドライバ404とを含む。リオーダバッファアレイ40
2は一時記憶メモリであって、リオーダバッファ制御お
よびステータス回路400によって制御される。命令デ
コーダ108がROPをディスパッチすると、命令デコ
ーダ108は行先ポインタ(DEST REG)バスの
1本に信号をもたらす。リオーダバッファ制御およびス
テータス回路400はその後、リオーダバッファアレイ
402のエントリを割当てる。リオーダバッファアレイ
402の各エントリは、一時行先レジスタを提供するた
めに割当てられ、ROPが完了するとそこに結果が書込
まれる。リオーダバッファおよびステータス回路400
内の実行プログラムカウンタレジスタの中にストアされ
る実行PC値は、命令がリタイアされると更新される。
複数のリオーダバッファエントリが、レジスタファイル
112内の単一のレジスタに対応することができ、それ
によりレジスタの一時的な名前変更に備えることができ
る。リオーダバッファ制御およびステータス回路400
は、完了されたROPがいつレジスタ112内にリタイ
アされ得るかを決定する。命令がリタイアされると、実
行プログラムカウンタレジスタは更新される。
路400は命令デコーダ108からのAおよびBオペラ
ンドポインタを受取る。リオーダバッファ制御およびス
テータス回路400はこれらのポインタを用いてリオー
ダバッファアレイ402内のエントリに問合わせをし、
ディスパッチされたROPの実行に必要なオペランドが
リオーダバッファアレイ402内に含まれているかどう
かを判断する。
402は、レジスタファイルにライトバックされるべき
送られたオペランドの結果を、その結果がもはやプロセ
ッサの推論的状態の一部ではない場合に一時的にストア
するための16個のエントリを含む。16個のリオーダ
バッファエントリの各々は、41ビット結果フィールド
(RESULT)、9ビット行先ポインタフィールド
(P)、4ビット下位プログラムカウンタ値フィールド
(LPC)および11ビット浮動小数点オペレーション
コードフィールド(FPOF)、11ビット浮動小数点
フラグレジスタフィールド(FPFR)、ならびに24
ビット制御およびステータスフィールド(CS)を含
む。
データをストアする。41ビット結果フィールドは浮動
小数点結果を2つのリオーダバッファエントリ内にスト
アできるようにする。整数結果は41ビットのうちの3
2ビットにストアされる。
タフィールドは、ライトバック中に書込まれるべき命令
の実行よりの結果のための、レジスタファイル112内
の行先レジスタアドレスを指定する。リオーダバッファ
制御およびステータス回路400は行先レジスタ(DE
ST REG)バスを介して命令デコーダ108から行
先ポインタを受取り、そのポインタをリオーダバッファ
アレイ402の行先ポインタフィールドにロードし、ポ
インタと関連するROPがリタイアされているときのた
めにそれをストアさせる。ROPがディスパッチされる
と、リオーダバッファ114はリオーダバッファアレイ
402のすべての行先ポインタフィールドをスキャンす
ることによって依存性チェックを行ない、行先ポインタ
とAまたはBオペランドとの間に整合があるかどうかを
判断する。整合があるということは、データ依存性があ
るということを示す。
ドは、リオーダバッファエントリに割当てられた浮動小
数点オペレーションコードのビットのサブセットにセッ
トされる。浮動小数点フラグレジスタフィールドは浮動
小数点動作によりもたらされる浮動小数点フラグの状態
をストアする。浮動小数点フラグは浮動小数点機能ユニ
ット136により検出された、精度、アンダーフロー、
オーバーフロー、ゼロ分割、正規化を取止められたオペ
ランド、および無効オペランドエラーに関連の情報をス
トアする。整数オペランドについては、整数演算により
もたらされるフラグは41ビット結果フィールドの上位
ビット内に保持されるため、対応するフラグフィールド
は必要ではない。
Bエントリのステータス、たとえばリオーダバッファエ
ントリが割当てられているか、分岐が誤って予測されて
いるか、または命令の実行が例外またはエラー条件をも
たらしているのではないか、ということを示すビットを
含む。ステータスおよび制御フィールドはまた、実行プ
ログラムカウンタ値を発生することに関連のビットをも
含む。より特定的には、ステータスおよび制御フィール
ドは、各ROPのためにデコードPC発生器回路によっ
て与えられるキャリービット、セットされるとROPが
ある特定のX86命令についてROPのシーケンスのう
ちの最後のROPであるということを示す出口ビット、
および結果が有効であることを示して命令が完了してい
ることを表わす完了(または有効)ビットを含む。出口
ビットは、実行プログラムカウンタレジスタ内にストア
された実行PC値をいつ更新すべきかを示す。実行プロ
グラムカウンタ値が更新されるのは、特定のX86命令
のためのROPシーケンスが完了したときのみである。
果を発生する機能ユニットは、その結果を行先タグを用
いて適切なリオーダバッファエントリに導く。ディスパ
ッチの際、機能ユニットに接続される4つの行先タグバ
スのうちの1つに行先タグがセットされる。機能ユニッ
トは結果バス140のうち1本にその結果を位置づけ、
対応する結果タグおよびステータスバス上に行先タグを
位置づける。リオーダバッファ制御およびステータス回
路400は結果タグバスからの結果タグを受取り、この
タグをリオーダバッファアレイ402内のエントリをア
ドレス指定するのに用いる。結果バスおよびステータス
バスのうち1つに対応する結果バスの1本の上の信号
が、結果タグ値により指定されるリオーダバッファアレ
イエントリにロードされる。
路400はまた、データ依存性についてもチェックし、
未解決の依存性が起こると、オペランドバスと関連のA
およびBオペランドタグバスを用いてオペランドにタグ
をつける。タグは機能ユニットの予約ステーションによ
って用いられるために、依存性が基づいている結果を識
別する。リオーダバッファ114はデータ依存性が検出
されるとレジスタファイル読出を無効にする。リオーダ
バッファ制御およびステータス回路400は、ディスパ
ッチの際にデータ依存性を検出した場合、レジスタファ
イルオペランドバスドライバ404に与えられる無効化
バスのビットをセットすることによって、リオーダバッ
ファアレイ402のエントリ内におけるいかなる依存性
オペランドの読出動作をも無効にする。無効化バスは、
各オペランドバスのための無効化信号を含む。
ンドデータが利用可能でないデータには依存しておら
ず、レジスタファイル112またはリオーダバッファ1
14から得ることができると判断した場合、オペランド
データはオペランドバス116を介して機能ユニット予
約ステーションに送られる。読出ポインタのレジスタア
ドレスがエントリの行先ポインタアドレスに一致した場
合、データはリオーダバッファ114内にアドレス指定
される。AまたはBオペランド読出ポインタ(A−RD
PTRまたはB−RDPTR)の読出ポインタは、リオ
ーダバッファ制御およびステータス回路400を介して
リオーダバッファアレイ402をアドレス指定し、オペ
ランドデータをリオーダバッファオペランドバスドライ
バ404に与える。リオーダバッファオペランドバスド
ライバ404は、オペランドデータをAおよびBオペラ
ンドバス116に駆動する。
テータス回路400がリオーダバッファアレイ402か
らの結果をレジスタファイル112に書込み、その結果
をライトバックバスの1つに位置づけて行先ポインタを
ライトバックバスに対応する書込ポインタに書込むにつ
れ、リタイアされる。書込ポインタはレジスタファイル
112内のレジスタアドレスを指定し、リタイアされた
結果を受取る。ROPがリタイアされると、リオーダバ
ッファオペランドバスドライバ404はリオーダバッフ
ァアレイ402のLPCフィールドを用いて実行プログ
ラムカウンタ値を発生する。
路400はリオーダバッファ114の様々な条件を検出
し、リオーダ条件バスを用いてプロセッサ100におけ
る様々な回路へ条件信号をリレーする。リオーダ条件バ
スの信号は4つのAおよびBオペランドの各々のために
レジスタファイル112によって受取られ、リオーダバ
ッファ114がいつ送られたオペランドを実行のために
与えるかを示す。充満、空、または単一エントリのリオ
ーダバッファ条件を反映するリオーダバッファ条件バス
上の他の信号は、命令デコーダ108によって受取られ
る。
タス回路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により制御される。
エントリマルチプレクサ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の制御下で提供する。
ッファエントリの各々からの制御情報を受取る。この制
御情報は各エントリのための分岐発生信号および各エン
トリからの更新プログラムカウンタ信号、ならびに各エ
ントリのための有効信号および更新実行プログラムカウ
ンタ信号を含む。この制御情報に基づき、実行プログラ
ムカウンタ制御装置604は上位および下位実行プログ
ラムカウンタ値の発生を制御する。分岐発生信号は、分
岐が行なわれたかどうかを示すものであって、分岐が行
なわれたときに活性であり、それにより分岐アドレスが
用いられるべきであることを示す。有効信号は、ROP
の結果が機能ユニットから返されたこと、すなわち有効
結果が存在するということを示し、分岐結果が返された
ときに活性である。更新実行プログラムカウンタ値信号
は、実行プログラムカウンタ値をいつ更新すべきかを示
し、ROPがリタイアされたときに活性である。
しい下位実行プログラムカウンタ値を発生するのにマル
チプレクサを用いるので、より大きいパイプラインのた
めの実行プログラムカウンタ値を、下位プログラムカウ
ンタ値が与えられるマルチプレクサの幅を広くするだけ
で発生することが可能である。
トリームを実行するプロセッサ100のタイミングが示
される。この例では、予測実行された経路は実際にとら
れており、命令キャッシュ104から直接得ることがで
きる。動作中、マイクロプロセッサパイプラインの効果
的な実行のパイプライン段は5つある。
フェッチクロックサイクルは命令キャッシュ104の中
で費やされる。命令キャッシュ104はクロックサイク
ルのPH1の間に新しいフェッチプログラムカウンタ値
を形成し、次にフェッチクロックサイクルのPH2にお
いてキャッシュアレイ180および182にアクセスす
る。フェッチプログラムカウンタ値(FPC(31:
0))は、ストアアレイと並行して線形命令キャッシュ
タグアレイにアクセスする。フェッチサイクルのPH2
の終わりの方で、線形タグがフェッチプログラムカウン
タの線形アドレスに一致するかどうかの判断が行なわれ
る。一致していれば、予測実行されたバイトはバイトキ
ュー106に送られる。
えて、フェッチプログラムカウンタ値はまた、命令キャ
ッシュ104の分岐予測アレイ184にもアクセスす
る。分岐予測アレイ184はX86バイトのうちどれが
予測実行されるかを識別し、かつ次の予測実行されるブ
ロックが順次的であるか非順次的であるかを識別する。
フェッチサイクルのPH2においてもアクセスされるこ
の情報は、現在フェッチされているブロックのどのバイ
トが有効なバイトとしてバイトキュー106に駆動され
るかを決定する。
バイトキュー186は前にフェッチされているがまだ機
能ユニットに発行されてはいないX86バイトを保持し
ていてもよい。その場合、命令キャッシュ104にバイ
ト充填位置が示され、現在のサイクルの第1の予測され
たバイトが、保持されているX86バイトを超えて現在
フェッチされているバイトを充填するためにバイトキュ
ー106が保持しているバイトの数に等しい量だけシフ
トされる。
において発生するため、プリフェッチされるべき次のブ
ロックは順次的でも非順次的でもあり得る。いずれの場
合も、再びアレイにアクセスするクロックサイクルは1
つある。したがって、分岐予測アレイにより、ブロック
外の分岐は次の順次的ブロックにアクセスするのと同じ
相対的な性能を有する。
フェッチされ予測実行されたバイトは指定された充填位
置においてバイトキュー186に駆動される。これは図
8では第1のデコードサイクルのPH1において起こる
バイトキュー充填として示される。これらのバイトは次
に、バイトキュー106の中の未決定のバイトのいずれ
とでもマージされる。
5ビットに加えて生のX86バイトを、命令の境界がど
こにあるかを示すために含む。バイトキューの先頭は常
に次の予測実行されるX86命令の始まりである。第1
のデコード段のPH1の中途で、バイトキュー106は
命令キャッシュ104からのバイトの次のストリーム
を、バイトキュー106における既存のバイトとマージ
し、マージされたバイトのストリームを命令デコーダ1
08に提示する。命令デコーダ108は各命令がとるR
OPの数およびオペレーションコードの位置を決定し、
これらのオペレーションコードを対応するROP発行位
置0〜3(ここで0は次に発行すべきROPである)と
整列させる。
ト数をカウントするか、命令キャッシュ104内に分岐
を検出して、プログラムカウンタ値をその位置からフェ
ッチされた第1のX86バイトに付与することによっ
て、バイトキュー108内のX86命令の各々に対応す
るROPのためのデコードプログラムカウンタ値を維持
する。オペレーションコードおよびROP位置決め情報
をバイトキュー106内にストアされた即値フィールド
と同様に用いて、命令デコーダ108は第1のデコード
サイクルにおけるPH2および第2のデコードサイクル
におけるPH1の間にデコードPC値を静的に決定す
る。第2のデコードサイクルのPH1の終わりまでに
は、レジスタ読出および書込ポインタはすべて解決さ
れ、動作が決定される。これは、読出書込ポインタ値の
アサートとして図8に示される。
PH1の間のタイミングは、次のクロック位相において
発行するかもしれない対応するROPのためのリオーダ
バッファエントリを割当ている。したがって、最大4つ
までの付加的なROPが各々PH1の間にリオーダバッ
ファ114内の16個のエントリのうちの1つに割当て
られる。PH2の間、割当てられたすべてのROPのた
めのソース読出ポインタが、レジスタファイル112か
ら読出され、一方で同時にリオーダバッファ114にお
ける推論的ROPのキューにアクセスする。
スは、実際のレジスタファイルを用いるかリオーダバッ
ファ114からオペランドまたはタグを進めるかについ
て、遅い選択をできるようにする。まずPHIにおいて
4つのROPエントリを割当て、次にPH2においてリ
オーダバッファ114をスキャンすることによって、デ
ィスパッチされている現在のROP内の読出依存性はま
だ推論的状態にある以前のROPすべてとともに同時に
調査されてよい。
の実行サイクルに比類するものである。ROPは上述の
読出オペランドバスだけでなく専用のオペレーションコ
ードバスをも介して発行される。これらのオペランドバ
スはタイミング図において実行サイクルのPH1でディ
スチャージしているのを見ることができる。これは信号
A/B読出オペランドバスにおいて示される。
能ユニットはそれらに対してどのROPが発行されたか
ということと、それらにそれらの局所予約ステーション
から発行される準備のできた未決定のROPがあるかど
うかということを判断する。機能ユニットの予約ステー
ション内では、FIFOが常に維持されており、最も古
い命令が確実に最初に実行されるようになっている。機
能ユニット内である命令の実行される準備が整っていれ
ば、機能ユニットはPH1の最後の方で実行を開始し、
PH2を通じて実行を継続する。このタイミングはAL
U122に関連している。
の機能ユニットについて、結果が準備されており、機能
ユニットは5つの結果バスのうちの1つのために仲裁を
行なう。これはタイミング図では結果バス仲裁信号のア
サートとして示される。実行サイクルのPH2において
アクセスが許可されると、アクセスを許可された機能ユ
ニットは結果サイクルのPH1において割当てられた結
果バスを駆動する。
ン上での書込に比類される。結果サイクルは値を直接他
の機能ユニットに送って実行させる。これはRISCシ
ステムにおけるALUの送信に大変似ている。マイクロ
プロセッサ100は発行されているROPの推論的性質
のために結果サイクルとリタイアサイクルとの双方を含
んでおり、その命令がリタイアされるべき次の命令とな
るまでは、レジスタファイルへの直接の書込は行なえな
い。リオーダバッファ114および結果バス140の送
信は、このサイクルをいかなる実行プログラムにとって
もトランスペアレントなものとし、リオーダバッファ1
14への書込のオーバーヘッドについては立ち往生は全
く起こらない。結果サイクルのPH1では、リオーダバ
ッファ114内の推論的ROPの位置は行先結果および
いかなるステータスとともにでも書込まれる。リオーダ
バッファ114内のこのエントリは次に、そのエントリ
が有効でありかつ割当てられているということを示すべ
くセットされる。したがって、このエントリが要求され
た場合、要求される読出アクセスにタグを送る代わり
に、リオーダバッファ114は直接データを送る。
られたタグはそれがそのソースオペランドの1つである
ことを要求する後続のROPによって検出され得る。こ
れはタイミング図では、読出および書込ポインタを用い
てのソースA/BオペランドバスへのROBタグ送信を
介しての結果の直接送信として示される。
である。これは、実行プログラムカウンタ値が実行プロ
グラムカウンタレジスタ内にストアされるサイクルであ
る。リタイアサイクルのPH1では、動作の結果はレジ
スタファイルに書込まれ、実行プログラムカウンタレジ
スタ内の実行プログラムカウンタ値は次にリタイアされ
るべき命令を指し示すべく更新される。リタイアサイク
ルのPH1では、リオーダバッファ114内のエントリ
は割当を解除され、リオーダバッファ114から書込ま
れる。エントリが割当を解除されているため、結果に対
する後に続く参照は、リオーダバッファ114からの推
論的な読出よりもむしろレジスタファイル112からの
読出において誘発される。レジスタファイル112から
の読出は、プロセッサ100の実際の状態を示す。
パイプラインの異なった段において複数個のプログラム
カウンタ値を用いる5段パイプラインを含む。このよう
なパイプラインとともにこれらのプログラムカウンタ値
を用いることで、マイクロプロセッサ100はクロック
サイクル1つあたり4つまでの単純なX86命令を発行
できるようになる。
範囲内に含まれる。
ラムカウンタ値を発生するには、下位プログラムカウン
タ値をキャリー情報とともに提供するものである限り他
の回路を用いてもよい。より特定的には、代替的なフェ
ッチプログラムカウンタ回路700は、キュー702、
上位部分プログラムカウンタラッチ704、下位部分プ
ログラムカウンタラッチ706、上位部分プログラムカ
ウンタ発生器回路708、下位部分プログラムカウンタ
発生器回路710、およびプログラムカウンタ値セレク
タ回路712を含む。
ラムカウンタ値を有効ビット値とともに保持しており、
かつ非順次プログラムカウンタ値のビット4:31を上
位部分プログラムカウンタ発生器回路708に与え、非
順次プログラムカウンタ値のビット0:3を下位部分プ
ログラムカウンタ発生器回路710に与える。非順次プ
ログラムカウンタ値はまた、下位部分プログラムカウン
タラッチ706にも与えられる。
グラムカウンタ値のビット0:3を下位プログラムカウ
ンタ発生器回路710に与える。上位プログラムカウン
タラッチ704は、次のプログラムカウンタ値のビット
4:31を上位プログラムカウンタ発生器回路708に
与える。下位プログラムカウンタ発生器回路710は、
キャリービットを上位プログラムカウンタ発生器回路7
08およびプログラムカウンタ値選択回路712に与え
る。上位プログラムカウンタ発生器回路708は、プロ
グラムカウンタ値のビット4:31をプログラムカウン
タ値選択回路712に与える。
は、加算器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に提供される。
は、インクリメンタ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に与える。
である。
ャッシュのブロック図である。
る。
回路のブロック図である。
ある。
ク図である。
ンタ回路のブロック図である。
る動作のタイミング図である。
ンタのブロック図である。
Claims (12)
- 【請求項1】 命令を処理するためのパイプラインを有
するマイクロプロセッサにおいて用いるためのプログラ
ムカウンタ値を発生する装置であって、 上位の第1のプログラムカウンタ部分と、下位の第1の
プログラムカウンタ部分と、第1のキャリー信号とを有
する第1のプログラムカウンタ値を提供するための第1
のプログラムカウンタ回路を備え、第1のカウンタ値は
検索された命令のプログラムカウント値を表わし、さら
に下位の第1のプログラムカウンタ部分および第1のキ
ャリー信号を受取り、下位の第1のプログラムカウンタ
部分を用いて実行プログラムカウンタ値を発生するため
の実行プログラムカウンタ回路を備え、実行プログラム
カウンタ回路は第1のプログラムカウンタ回路に結合さ
れ、実行プログラムカウンタ値は実行された命令のプロ
グラムカウンタ値を表わす、命令を処理するためのパイ
プラインを有するマイクロプロセッサにおいて用いるた
めのプログラムカウンタ値を発生する装置。 - 【請求項2】 下位の第1のプログラムカウンタ部分お
よびキャリー信号をストアするためのパイプラインにお
ける各段に対応する記憶位置をさらに備え、記憶位置は
第1のプログラムカウンタ回路および実行プログラムカ
ウンタ回路に結合されるパイプラインの各段に対応す
る、請求項1に記載の装置。 - 【請求項3】 第1のプログラムカウンタ回路は、下位
プログラムカウンタ値発生器回路と上位プログラムカウ
ンタ値発生器回路とを含む、請求項1に記載の装置。 - 【請求項4】 下位プログラムカウンタ値発生器回路
は、複数個の加算器回路を含み、各加算器回路は現在の
プログラムカウンタ値および命令長値を受取り、現在の
プログラムカウンタ値を命令長値に加算して、次のプロ
グラムカウンタ値における下位部分およびキャリー信号
を提供する、請求項3に記載の装置。 - 【請求項5】 上位プログラムカウンタ値発生器回路は
インクリメンタ回路を含み、インクリメンタ回路は現在
のプログラムカウンタ値の上位ビットおよび増分信号を
受取り、かつ次のプログラムカウンタ値の上位部分を提
供する、請求項3に記載の装置。 - 【請求項6】 上位プログラムカウンタ値発生器回路は
キャリーセレクタ回路を含み、キャリーセレクタ回路は
キャリー信号を受取り、かつキャリー信号に基づく増分
信号を提供する、請求項5に記載の装置。 - 【請求項7】 命令を処理するためのパイプラインを有
するマイクロプロセッサ装置であって、 マイクロプロセッサコアを備え、マイクロプロセッサコ
アは命令を実行するための機能ユニットを含み、さらに
上位の第1のプログラムカウンタ部分、下位の第1のプ
ログラムカウンタ部分、および第1のキャリー信号を有
する第1のプログラムカウンタ値を提供するための第1
のプログラムカウンタ回路を備え、第1のカウンタ値は
検索された命令におけるプログラムカウント値を表わ
し、さらに下位の第1のプログラムカウンタ部分および
第1のキャリー信号を受取り、下位の第1のプログラム
カウンタ部分を用いて実行プログラムカウンタ値を発生
するための実行プログラムカウンタ回路を備え、実行プ
ログラムカウンタ回路は第1のプログラムカウンタ回路
に結合され、実行プログラムカウンタ値は実行された命
令のプログラムカウンタ値を表わし、機能ユニットは命
令を実行するとき実行プログラムカウンタ値を用いる、
命令を処理するためのパイプラインを有するマイクロプ
ロセッサ装置。 - 【請求項8】 下位の第1のプログラムカウンタ部分お
よびキャリー信号をストアするためのパイプラインの各
段に対応する記憶位置をさらに備え、記憶位置は第1の
プログラムカウンタ回路および実行プログラムカウンタ
回路に結合されるパイプラインの各段に対応する、請求
項7に記載の装置。 - 【請求項9】 第1のプログラムカウンタ回路は下位プ
ログラムカウンタ値発生器回路と上位プログラムカウン
タ値発生器回路とを含む、請求項7に記載の装置。 - 【請求項10】 下位プログラムカウンタ値発生器回路
は複数個の加算器回路を含み、各加算器回路は現在のプ
ログラムカウンタ値および命令長値を受取り、現在のプ
ログラムカウンタ値を命令長値に加算して、次のプログ
ラムカウンタ値の下位の部分およびキャリー信号を提供
する、請求項9に記載の装置。 - 【請求項11】 上位プログラムカウンタ値発生器回路
はインクリメンタ回路を含み、インクリメンタ回路は現
在のプログラムカウンタ値の上位ビットおよび増分信号
を受取り、かつ次のプログラムカウンタ値の上位部分を
提供する、請求項9に記載の装置。 - 【請求項12】 上位プログラムカウンタ値発生器回路
はキャリーセレクタ回路を含み、キャリーセレクタ回路
はキャリー信号を受取り、かつキャリー信号に基づき増
分信号を提供する、請求項11に記載の装置。
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)
| 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)
| 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 |
-
1994
- 1994-06-01 US US08/252,030 patent/US5559975A/en not_active Expired - Lifetime
-
1995
- 1995-05-30 EP EP95303671A patent/EP0685788B1/en not_active Expired - Lifetime
- 1995-05-30 DE DE69504135T patent/DE69504135T2/de not_active Expired - Lifetime
- 1995-05-30 AT AT95303671T patent/ATE170011T1/de not_active IP Right Cessation
- 1995-05-31 JP JP13401195A patent/JP3628379B2/ja not_active Expired - Fee Related
-
1996
- 1996-09-23 US US08/716,764 patent/US5799162A/en not_active Expired - Lifetime
-
1998
- 1998-02-10 US US09/037,436 patent/US6035386A/en not_active Expired - Lifetime
-
2000
- 2000-01-14 US US09/483,493 patent/US6351801B1/en not_active Expired - Lifetime
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 |