JP3977016B2 - 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ - Google Patents

仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ Download PDF

Info

Publication number
JP3977016B2
JP3977016B2 JP2000562822A JP2000562822A JP3977016B2 JP 3977016 B2 JP3977016 B2 JP 3977016B2 JP 2000562822 A JP2000562822 A JP 2000562822A JP 2000562822 A JP2000562822 A JP 2000562822A JP 3977016 B2 JP3977016 B2 JP 3977016B2
Authority
JP
Japan
Prior art keywords
register
virtual
instruction
source
numbers
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2000562822A
Other languages
English (en)
Other versions
JP2002521761A (ja
JP2002521761A5 (ja
Inventor
ウィット,デイビッド・ビィ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
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 JP2002521761A publication Critical patent/JP2002521761A/ja
Publication of JP2002521761A5 publication Critical patent/JP2002521761A5/ja
Application granted granted Critical
Publication of JP3977016B2 publication Critical patent/JP3977016B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

Description

【0001】
【発明の分野】
この発明は、プロセッサの分野に関し、より特定的にはプロセッサのレジスタ再命名機能に関する。
【0002】
【関連技術の説明】
US−A−5 546 554では、マッピングユニットに結合される命令を発行する命令ユニットを有するプロセッサが開示される。各命令は、レジスタに対応する少なくとも1つの仮想アドレスを含む。マッピングユニットは、命令を受け、各仮想レジスタアドレスに対してマップ値を生成する。仮想レジスタアドレスが命令の宛先レジスタアドレスとして用いられるたびに新しいマッピングが生成される。
EP−A−0 851 343では、仮想レジスタおよび物理レジスタを含む浮動小数点命令を処理するためのシステムが開示される。このシステムは、仮想レジスタを物理レジスタにマッピングする参照表を含む。
EP−A−0 518 469では、物理レジスタを論理レジスタと関連付けるための可視レジスタマップを有するデータ処理装置が開示される。レジスタ間の転送に関わる命令は、物理レジスタと論理レジスタとの関連付けを変更することによって実行される。命令は、論理識別子を物理レジスタ番号で置換することによって変更される。
EP−A−0 463 628では、コンピュータパイプライン動作における正しい点において対応する物理ホームと論理レジスタとを関連付けることによるレジスタマッピングが開示される。
EP−A−0 730 225では、物理アドレスを論理レジスタに対応するように割当て、かつ論理レジスタと別の物理レジスタとの前の関係を記憶する装置を含むマイクロプロセッサが開示される。これにより、装置が例外条件の際に後戻りすることが可能となる。
スーパースカラプロセッサにおいては、クロックサイクルごとに複数の命令を発行し実行し、かつ設計と一貫した可能な最高のクロック周波数を用いることによって高性能を達成することが試みられている。クロックサイクルごとに実行される命令の数を増加するための方法の1つは、「アウトオブオーダ」(out of order)実行である。アウトオブオーダ実行において、命令は、プログラムシーケンス(または「プログラム順序」)において特定されるものとは異なる順序において実行され得る。プログラムシーケンスにおいて互いに近いある命令は、それらの同時の実行を禁じる従属性を有しているかもしれず、他方では、プログラムシーケンスにおける後の命令は前の命令に対する従属性を有していないかもしれない。したがって、アウトオブオーダ実行により、(平均して)同時に実行される命令の数を増加することによってスーパースカラプロセッサの性能が向上し得る。
【0003】
残念なことに、アウトオブオーダ実行では、プロセッサのハードウェアの複雑さがさらに増す。たとえば、プログラム順序において第1の命令の後の第2の命令は、第1の命令によって読出される記憶場所を更新することがある。換言すると、第2の命令の宛先オペランドが第1の命令の発信元オペランドの1つであり得る。適切にプログラムを実行するために、第1の命令は発信元オペランドとして、記憶場所に記憶された値を第2の命令の実行の前に受取らなければならない。同様に、第1および第2の命令が宛先オペランドとしてある特定の記憶場所を有している場合、第2の命令の結果は、第1および第2の命令の双方を実行した後に(かつ記憶場所を更新する第3の命令を実行する前に)記憶場所に記憶される値であるべきである。
【0004】
一般的に、命令は1つ以上の発信元オペランドと1つ以上の宛先オペランドを有し得る。発信元オペランドは、(宛先オペランドである)1つ以上の結果を生成するために命令定義に従って操作すべき入力値である。発信元および宛先オペランドは、プロセッサの外部のメモリ場所に記憶されるメモリオペランドであるかもしれず、またはプロセッサ内に含まれるレジスタ場所に記憶されるレジスタオペランドであるかもしれない。プロセッサにより用いられる命令セットアーキテクチャはいくつかのアーキテクテッドレジスタを規定する。これらのレジスタは命令セットアーキテクチャにより、存在していることが規定され、命令はアーキテクテッドレジスタを発信元および宛先オペランドとして用いるようにコード化され得る。命令は、命令のオペランドフィールドにおけるレジスタ番号(またはレジスタアドレス)を介してある特定のレジスタを発信元または宛先オペランドとして特定する。レジスタ番号はアーキテクテッドレジスタのうちの選択されたレジスタを一意に識別する。発信元オペランドは発信元レジスタ番号によって識別され、宛先オペランドは宛先レジスタ番号によって識別される。
【0005】
アーキテクテッドレジスタに加えて、いくつかのプロセッサは、命令実行の間に一時的な結果を保持するのに用いることができるさらなるマイクロアーキテクテッドレジスタを規定する。たとえば、いくつかのプロセッサはマイクロコーディング技法を用いて最も複雑な命令を取扱う。マイクロコードルーチンは、複雑な命令に応答して実行され、複数のより単純な命令を含む。マイクロコードルーチンは、複雑な命令を実行すると同時に一時的な結果を生じ得る。これらのマイクロアーキテクテッドレジスタ(または一時レジスタ)はさらなるレジスタ番号に割当てられ、一時レジスタをアーキテクテッドレジスタから一意に識別する。ここではアーキテクテッドレジスタと一時レジスタとは併せて論理レジスタと称する。
【0006】
アウトオブオーダ実行を用いるプロセッサは、レジスタオペランドに関して上記のハザードを経験し得る。このようなハザードに対処するための方法はレジスタ再命名である。レジスタ再命名において、プロセッサは1セットの物理レジスタを実装する。物理レジスタの数は、プロセッサの命令セットアーキテクチャおよびマイクロアーキテクチャによって特定される論理レジスタの数より大きい。命令が発行されると、物理レジスタは命令の宛先レジスタオペランドに割当てられる。割当てられた物理レジスタを識別する物理レジスタ番号は各宛先オペランドに対して与えられ、どの物理レジスタが論理レジスタに対応するのかを示す指標はプロセッサによって維持される。論理レジスタを発信元オペランドとして有する後の命令には、適当な発信元オペランドを読出すための対応する物理レジスタ番号が与えられる。各命令の宛先オペランドを記憶するように異なる物理レジスタを割当てることによって、命令はその宛先オペランドを任意の順序で自由に更新することができるが、これは異なる物理記憶場所が更新されるからである。
【0007】
残念なことに、物理レジスタ番号を宛先オペランド命令に割当て、これらの物理レジスタ番号を、その宛先オペランドを発信元オペランドとして有する後の命令に与えるプロセスは複雑かつ遅いものであり得る。スーパースカラプロセッサにおいて特に困難であるのは、命令の宛先オペランドへの物理レジスタ番号の割当てと、これらの命令と同時にレジスタ再命名ハードウェアを通過している後の従属する命令に物理レジスタ番号を与えること等である。より高い周波数で動作し、なおかつクロックサイクルごとに複数の命令の再命名を取扱うことのできるレジスタ再命名構造が望ましい。
【0008】
レジスタ再命名は、命令が例外条件を経験する際に困難となる。ここで用いられる例外とは、後の命令を破棄することおよび命令フェッチが異なるアドレスで開始されることが必要となる命令の実行におけるエラーのことを指して言う。たとえば、分岐予測誤りは例外条件である。プロセッサは、分岐予測を行なって、条件付き分岐命令の後の命令を投機的にフェッチし、発行し、実行し得る。その予測が誤りである場合、分岐命令の後の命令は破棄され、分岐命令の実行に応じて命令がフェッチされる。さらなる例外条件には、メモリオペランドのアドレスに対するアドレス変換エラーおよび他のアーキテクチャ的またはマイクロアーキテクチャ的エラー条件が含まれ得る。
【0009】
レジスタ再命名が、例外によって後で破棄される命令に適用されていることがあり得るため、論理レジスタの物理レジスタへのマッピングは、例外を経験している命令と一致する状態に回復しなければならない。言換えると、論理レジスタの物理レジスタへのマッピングは、(プログラム順序において)例外を経験している命令の前の命令の実行を反映しているべきであり、例外を経験している命令の後の命令の実行を反映すべきではない。例外に応答してフェッチされる命令が利用可能になるとすぐにレジスタ再命名ハードウェアを通過することができるように、レジスタ再命名マップの回復が迅速であることが望ましい。新しくフェッチされた命令がレジスタ再命名ハードウェアに到達した際にレジスタ再命名マップの回復が依然として行なわれている場合、新しくフェッチされた命令はレジスタ再命名マップが回復されるまで停止されなければならない。プロセッサの性能はこれによって損なわれる。
【0010】
さらに、レジスタ再命名ハードウェアは一般的に、後の命令に対応する値に前に割当てられた物理レジスタを再利用するための機構を含む。物理レジスタを可能な限り効率よく用いるのが望ましく、また、一旦後の状態が対応する論理レジスタにコミットされた際に物理レジスタを自由にするための正確な方法を提供することが望ましい。
【0011】
【発明の概要】
上述の課題は、レジスタ再命名ハードウェアを含むマップユニットを用いたプロセッサによってその大部分が解決される。
第1の局面によれば、この発明は、添付の請求項1に規定されるようなマップユニットを含むプロセッサを提供する。
【0012】
一実施例では、マップユニットは、命令動作を走査して、ライン内従属性を検出することによって仮想レジスタ番号を発信元レジスタに割当てるように構成される。従属性が検出されなかった場合、現先読み状態を示す仮想レジスタ番号が割当てられる。従属性が検出されると、発信元レジスタが従属している発行位置を示す仮想レジスタ番号が割当てられる。その後、物理レジスタ番号が、仮想レジスタ番号に応答する発信元レジスタ番号にマッピングされる。一実装例では、仮想レジスタ番号の割当てと仮想レジスタ番号の物理レジスタ番号へのマッピングとは別個のパイプラインステージにおいて行なわれる。このため、レジスタ再命名機構はより高いクロック周波数において動作可能となり得る。プロセッサの性能は、より高いクロック周波数が達成可能である程度まで向上することができる。
説明されるマップユニットの実施例は、レジスタ再命名機構の性能および効率を向上するためにさまざまな技法を用いる。
第2の局面によれば、この発明は、添付の請求項15に規定されるように、物理レジスタ番号を命令動作の発信元オペランドに割当てるための方法を提供する。
【0015】
概して、プロセッサが考慮される。プロセッサは、レジスタ走査ユニットおよび仮想/物理レジスタマップユニットを含むマップユニットを含む。マップユニットは、複数の宛先レジスタ番号および複数の発信元レジスタ番号を受けるように結合される。複数の発信元レジスタ番号および複数の宛先レジスタ番号を受けるように結合されるレジスタ走査ユニットは、複数の仮想レジスタ番号を割当てるように構成される。複数の仮想レジスタ番号の各々のものは複数の発信元レジスタ番号のそれぞれ異なるものに対応する。さらに、複数の仮想レジスタ番号内のある特定の仮想レジスタ番号は、複数の発信元レジスタ番号内のある特定の発信元レジスタ番号に対応するある特定の物理レジスタ番号の発信元を識別する。レジスタ走査ユニットに結合される仮想/物理レジスタマップユニットは、ある特定の物理レジスタ番号をある特定の仮想レジスタ番号に応答してある特定の発信元レジスタ番号にマッピングするように構成される。
【0016】
さらに、物理レジスタ番号を命令動作の発信元オペランドに割当てるための方法が考慮される。仮想レジスタ番号は、論理レジスタ内の発信元オペランドを識別する発信元レジスタ番号に割当てられる。仮想レジスタ番号は物理レジスタ番号の発信元を識別する。物理レジスタ番号は、仮想レジスタ番号に応答して発信元レジスタ番号にマッピングされる。
【0017】
また、コンピュータシステムが考慮される。コンピュータシステムは、プロセッサおよび入出力(I/O)装置を含む。プロセッサは、複数の仮想レジスタ番号を複数の発信元レジスタ番号に割当てるように構成される。複数の仮想レジスタ番号の各々のものは複数の発信元レジスタ番号のそれぞれ異なるものに対応する。複数の仮想レジスタ番号内のある特定の仮想レジスタ番号は、複数の発信元レジスタ番号内のある特定の発信元レジスタ番号に対応するある特定の物理レジスタ番号の発信元を識別する。さらに、プロセッサは、ある特定の物理レジスタ番号を、ある特定の仮想レジスタ番号に応答してある特定の発信元レジスタ番号にマッピングするように構成される。プロセッサに結合されるI/O装置は、コンピュータシステムとI/O装置が結合される第2のコンピュータシステムとの間で通信するように構成される。
【0018】
この発明の他の目的および利点は、以下の詳細な説明を読み、添付の図面を参照することにより明らかになるであろう。
【0019】
【詳細な説明】
この発明はさまざまな変更および代替の形態の影響を受け得るが、その特定の実施例が図面において例によって示され、ここに詳細に説明される。しかしながら、その図面および詳細な説明は、この発明を、開示される特定の形態に限定することが意図されるものではなく、むしろ、添付の請求の範囲によって規定されるこの発明の精神および範囲内に含まれるすべての変更、均等物および代替例を網羅することが意図される。
【0020】
図1を参照して、プロセッサ10の一実施例のブロック図が示される。他の実施例も可能であり考慮される。図1の実施例において、プロセッサ10はラインプレディクタ(predictor)12、命令キャッシュ(Iキャッシュ)14、アライメントユニット16、分岐履歴テーブル18、間接アドレスキャッシュ20、戻りスタック22、復号ユニット24、プレディクタミス復号ユニット26、マイクロコードユニット28、マップユニット30、マップサイロ32、アーキテクチャ的再命名ブロック34、一対の命令キュー36A−36B、一対のレジスタファイル381−38B、一対の実行コア40A−40B、ロード/ストアユニット42、データキャッシュ(Dキャッシュ)44、外部インターフェイスユニット46、PCサイロおよびリダイレクトユニット48ならびに命令TLB(ITB)50を含む。ラインプレディクタ12は、ITB50、プレディクタミス復号ユニット26、分岐履歴テーブル18、間接アドレスキャッシュ20、戻りスタック22、PCサイロおよびリダイレクトブロック48、アライメントユニット16ならびにIキャッシュ14に接続される。Iキャッシュ14はアライメントユニット16に接続される。アライメントユニット16はさらに、プレディクタミス復号ユニット26および復号ユニット24に接続される。復号ユニット24はさらに、マイクロコードユニット28およびマップユニット30に接続される。マップユニット30は、マップサイロ32と、アーキテクチャ的再命名ブロック34と、命令キュー36A−36Bと、ロード/ストアユニット42と、実行コア40A−40Bと、PCサイロおよびリダイレクトブロック48とに接続される。命令キュー36A−36Bは互いに接続され、かつ、それぞれ対応の実行コア40A−40Bおよびレジスタファイル38A−38Bに接続される。レジスタファイル38A−38Bは互いに接続され、かつそれぞれ対応の実行コア40A−40Bに接続される。実行コア40A−40Bはさらに、ロード/ストアユニット42と、データキャッシュ44と、PCサイロおよびリダイレクトユニット48とに接続される。ロード/ストアユニット42は、PCサイロおよびリダイレクトユニット48と、Dキャッシュ44と、外部インターフェイスユニット46とに接続される。Dキャッシュ44はレジスタファイル38に接続され、外部インターフェイスユニット46は外部インターフェイス52に接続される。ここで文字が後に続く参照番号によって示される要素は、参照番号のみによって集合的に示される。たとえば、命令キュー36A−36Bは集合的に命令キュー36と称することにする。
【0021】
図1の実施例において、プロセッサ10は、可変バイト長、複雑命令セット計算(CISC)命令セットアーキテクチャを用いる。たとえば、プロセッサ10は、x86命令セットアーキテクチャ(IA−32とも称される)を用いてもよい。他の実施例では、固定長命令セットアーキテクチャおよび簡約化命令セット計算(RISC)命令セットアーキテクチャを含む他の命令セットアーキテクチャを用いてもよい。図1に示される特徴のいくつかはそのようなアーキテクチャにおいては省いてもよい。
【0022】
ラインプレディクタ12は、Iキャッシュ14のためのフェッチアドレスを生成するように構成され、さらに、命令動作のラインに関する情報をアライメントユニット16に与えるように構成される。一般的に、ラインプレディクタ12は、プロセッサ10によって前に投機的にフェッチされた命令動作のラインと、ラインのフェッチの際に選択すべき各ラインに対応する1つ以上の次のフェッチアドレスとを記憶する。一実施例では、ラインプレディクタ12は、1Kエントリを記憶するよう構成され、その各々は命令動作の1つのラインを規定する。ラインプレディクタ12は、たとえば256エントリの4つのバンクにバンク分けされてもよく、その各々は所望であれば二重ポート(dual porting)なしに同時読出および更新を可能にするものである。
【0023】
ラインプレディクタ12は、次のフェッチアドレスをIキャッシュ14に与え、対応する命令バイトをフェッチするようにする。Iキャッシュ14は、命令バイトを記憶するための高速キャッシュメモリである。一実施例によれば、Iキャッシュ14は、たとえば、64バイトキャッシュラインを用いる256キロバイトの四重セット連想編成(four way set associative organization)を含んでいてもよい。しかしながら、どのIキャッシュ構造でも適当であろう。さらに、次のフェッチアドレスは入力としてラインプレディクタ12に戻され、命令動作の対応するラインに関する情報をフェッチするようにする。次のフェッチアドレスは、PCサイロおよびリダイレクトユニット48に報告される例外条件に応答してITB50により与えられるアドレスによってオーバライドされ得る。
【0024】
ラインプレディクタによって与えられる次のフェッチアドレスは、(ラインが非分岐命令で終わる場合)ライン内の最終命令に連続するアドレスであり得る。代わりに、次のフェッチアドレスは、ラインの終わりにくる分岐命令のターゲットアドレスであってもよい。さらに別の選択肢では、ラインは戻り命令によって終わっていてもよく、この場合には次のフェッチアドレスは戻りスタック22から引出される。
【0025】
フェッチアドレスに応答して、ラインプレディクタ12は、フェッチアドレスにおいて始まる命令動作のラインに関する情報をアライメントユニット16に与える。アライメントユニット16は、Iキャッシュ14からフェッチアドレスに対応する命令バイトを受け、与えられた命令動作情報に応じて命令バイトを選択して1セットの発行位置とする。より特定的には、ラインプレディクタ12は、ライン命令動作内の各命令に対してシフト量をもたらし、かつ、ラインを構成する命令動作のセットに命令をマッピングする。1つの命令は複数の命令動作に対応していてもよく、このため、その命令に対応するシフト量は命令バイトを選択して複数の発行位置にするよう用いられてもよい。1つの発行位置は、ライン内の各々の可能な命令動作に対して与えられる。一実施例では、命令動作のラインは、最大6の命令に対応する最大8の命令動作を含み得る。一般的に、ここで用いられるように、命令動作のラインとは、復号ユニット24に同時に発行される命令動作の一群を指して言う。命令動作のラインは、マイクロプロセッサ10のパイプラインを通して1ユニットとしての命令キュー36へと進む。命令キュー36に記憶される際、個別の命令動作はいかなる順序で実行されてもよい。
【0026】
復号ユニット24(および、命令キュー36までの後のパイプラインステージ)内の発行位置は、これらのパイプラインステージ内のハードウェアのためのライン内の命令動作のプログラム順序を規定する。アライメントユニット16によって発行位置に位置合わせされる命令動作は、命令キュー36A−36B内に記憶されるまでその発行位置に留まる。したがって、第1の発行場所は、第1の発行場所内の命令動作がプログラム順序において同時に第2の発行位置内にある命令動作の前である場合に、第2の発行場所の前のものとして言及され得る。同様に、第1の発行場所は、第1の発行場所内の命令動作がプログラム順序において同時に第2の発行場所内にある命令動作の後である場合に、第2の発行場所の後のものとして言及され得る。また、発行場所内の命令動作は、ライン内の他の命令動作の前であるまたは後であるとして言及され得る。
【0027】
ここで用いられるように、命令動作(またはROP)は、実行コア40A−40B内の実行ユニットが単一のエンティティとして実行するように構成されるところの動作のことである。単純な命令は単一の命令動作に対応し得るが、より複雑な命令は複数の命令動作に対応し得る。より複雑な命令のいくつかは、マイクロコードユニット28内でマイクロコードルーチンとして実現されてもよい。さらに、非CISC命令セットを用いる実施例では、各命令に対して単一の命令動作を用いてもよい(すなわち、命令と命令動作とはこのような実施例においては同義であり得る)。ある特定の一実施例では、ラインは、最大6の命令に対応する最大8の命令動作を含み得る。さらに、そのある特定の実施例では、分岐命令が検出されるとラインを6の命令および/または8の命令動作未満で終わらせることがある。要望に応じて、ラインに対する命令動作に関するさらなる制限を行なってもよい。
【0028】
ラインプレディクタ12によって生成された次のフェッチアドレスは、分岐履歴テーブル18、間接アドレスキャッシュ20および戻りスタック22に経路付けられる。分岐履歴テーブル18は、次のフェッチアドレスによって識別されるラインを終わらせ得る条件付き分岐命令に対する分岐履歴をもたらす。ラインプレディクタ12は、分岐履歴テーブル18により与えられる予測を用いて、ラインを終わらせる条件付き分岐命令がテークン(taken)として予測されるべきであるかまたはノットテークン(not taken)として予測されるべきかを判定してもよい。一実施例では、ラインプレディクタ12は、テークンまたはノットテークンを選択するよう用いるべき分岐予測を記憶していてもよく、分岐履歴テーブル18は、ラインプレディクタの予測を打消しかつ異なる次のフェッチアドレスが選択されるようにし得る、より正確な予測をもたらすのに用いられる。間接アドレスキャッシュ20は、頻繁に変わる間接分岐ターゲットアドレスを予測するのに用いられる。ラインプレディクタ12は、次のフェッチアドレスとして、前に生成された間接ターゲットアドレスを記憶してもよい。間接アドレスキャッシュ20は、対応するラインが間接分岐命令によって終わる場合にはラインプレディクタ12によって与えられる次のフェッチアドレスをオーバライドしてもよい。さらに、命令動作のライン内の最終命令の後のアドレスは、そのラインがサブルーチン呼出し命令によって終わる場合には戻りスタック22にプッシュされてもよい。戻りスタック22は、その一番上に記憶されるアドレスを、戻り命令によって終わるラインに対する潜在的な次のフェッチアドレスとしてラインプレディクタ12に与える。
【0029】
次のフェッチアドレスおよび命令動作情報を上記のブロックに与えることに加えて、ラインプレディクタ12は、次のフェッチアドレスおよび命令動作情報をPCサイロおよびリダイレクトユニット48に与えるように構成される。PCサイロおよびリダイレクトユニット48は、フェッチアドレスおよびライン情報を記憶し、例外の際に命令フェッチをリダイレクトすることおよび命令の順序正しいリタイアメントを行なうことの責任がある。PCサイロおよびリダイレクトユニット48は、プロセッサ10内で未決着(outstanding)であり得る命令動作の複数のラインに対応するフェッチアドレスおよび命令動作情報を記憶するための循環バッファ(circular buffer)を含んでいてもよい。命令のラインをリタイアする際、PCサイロおよびリダイレクトユニット48は、それぞれ、条件付き分岐および間接分岐の実行に応じて分岐履歴テーブル18および間接アドレスキャッシュ20を更新してもよい。例外を処理する際、PCサイロおよびリダイレクトユニット48は、例外を起こす命令の後の戻りスタック22からのエントリをパージしてもよい。また、PCサイロおよびリダイレクトユニット48は、例外を起こす命令の指標をマップユニット30、命令キュー36およびロード/ストアユニット42に経路付け、これによって、これらのユニットが例外を起こす命令の後の命令を取消し、かつこれに応じて投機的状態を回復し得るようにする。
【0030】
一実施例では、PCサイロおよびリダイレクトユニット48は、各命令動作にシーケンス番号(R♯)を割当て、プロセッサ10内で未決着である命令動作の順序を識別する。PCサイロおよびリダイレクトユニット48は、ラインを有する各々の可能な命令動作にR♯を割当ててもよい。ラインが最大数の命令動作より少ない数を含んでいる場合、割当てられたR♯のいくつかはそのラインに対して用いられないことになる。しかしながら、PCサイロおよびリダイレクトユニット48は、R♯の次のセットを命令動作の次のラインに割当てるように構成されていてもよく、これによって、割当てられたが使用されていないR♯が、命令動作の対応するラインがリタイアされるまで使用されないままとなる。この態様で、所与のラインに割当てられるR♯の一部は、プロセッサ10内のラインを識別するように用いられ得る。一実施例では、最大8のROPがラインに割付けられ得る。したがって、各ライン内の第1のROPには、8の倍数であるR♯が割当てられ得る。使用されないR♯は、適宜自動的にスキップされる。
【0031】
前述の説明では、ラインプレディクタ12が次のアドレスを予測し、命令動作のラインに対する命令動作情報を与えることを説明した。この動作は、各フェッチアドレスがラインプレディクタ12においてヒットする限り行なわれる。ラインプレディクタ12においてミスが検出された際には、アライメントユニット16は対応する命令バイトをIキャッシュ14からプレディクタミス復号ユニット26に経路付ける。プレディクタミス復号ユニット26は、欠けているフェッチアドレスによって特定されるオフセットにおいて始まる命令を復号化し、命令動作のラインおよび次のフェッチアドレスを生成する。プレディクタミス復号ユニット26は、プロセッサ10がその目的で設計されているところのどんな制限をも命令動作のラインに強要する(たとえば、命令動作の最大数、命令の最大数、分岐命令に対する終了など)。あるラインの復号化を完了する際、プレディクタミス復号ユニット26は、その情報をラインプレディクタ12に記憶するため与える。プレディクタミス復号ユニット26が、命令が復号化されるにつれ命令をディスパッチするように構成されてもよいことに注意されたい。代わりに、プレディクタミス復号ユニット26は、命令情報のラインを復号化して、これをラインプレディクタ12に記憶するため与えてもよい。その後、欠けているフェッチアドレスはラインプレディクタ12において再度試みられ、ヒットが検出されることもある。さらに、ラインプレディクタ12におけるヒットが検出され、Iキャッシュ14におけるミスが起こることがある。対応する命令バイトは外部インターフェイスユニット46を介してフェッチされ、Iキャッシュ14に記憶されてもよい。
【0032】
一実施例では、ラインプレディクタ12およびIキャッシュ14は物理アドレス指定(physical addressing)を用いる。しかしながら、例外を検出した際に、PCサイロおよびリダイレクトユニット48は論理(または仮想)アドレスが供給されることになる。したがって、リダイレクトアドレスは、ラインプレディクタ12への表示のためにITB50によって変換される。また、PCサイロおよびリダイレクトユニット48は、相対分岐ターゲットアドレスなどPC相対計算において用いるための仮想先読みPC値を維持する。各ラインに対応する仮想先読みPCは、ITB50によって変換され、対応する物理アドレスがラインプレディクタ12によって生成される物理フェッチアドレスと一致することを確認する。不一致が起こった場合、ラインプレディクタ12は正しい物理アドレスで更新され、正しい命令がフェッチされる。PCサイロおよびリダイレクトユニット48はさらに、保護境界などを超えたフェッチに関連する例外を取扱う。PCサイロおよびリダイレクトユニット48はまた、最も最近リタイアされた命令のアドレスを示すリタイアPC値を維持する。
【0033】
復号ユニット24は、上述のとおり、複数の発行位置においてアライメントユニット16から命令動作を受けるように構成される。復号ユニット24は、並列して各発行位置に位置合わせされる命令バイトを復号化する(命令バイトに対応するどの命令動作がある特定の発行位置において生成されるべきであるかということを示す指標とともに)。復号ユニット24は、各命令動作に対して発信元および宛先オペランドを識別し、実行コア40A−40Bによって用いられる命令動作符号化を生成する。また、復号ユニット24は、マイクロコードで実現される命令に対してマイクロコードユニット28からマイクロコードルーチンをフェッチするように構成される。
【0034】
ある特定の一実施例によれば、プロセッサ10により以下の命令動作が支援されている。すなわち、整数、浮動小数点加算(マルチメディアを含む)、浮動小数点乗算(マルチメディアを含む)、分岐、ロード、ストアアドレス生成およびストアデータである。各命令動作は、最大で2つの発信元レジスタオペランドおよび1つの宛先レジスタオペランドを用い得る。ある特定の一実施例によれば、単一の宛先レジスタオペランドが整数ROPに割当てられ、整数結果および条件コード(condition code)(またはフラグ)更新の双方を記憶するようにしてもよい。対応する論理レジスタはともに、整数動作のリタイアメントの際に対応するPR♯を受けることになる。ある命令は、同じタイプの2つの命令動作を生成して2つの宛先レジスタを更新し得る(たとえば、ESPおよび特定された宛先レジスタを更新するROP)。
【0035】
復号化された命令動作と発信元および宛先レジスタ番号とはマップユニット30に与えられる。マップユニット30は、各命令動作の各々の宛先レジスタオペランドおよび発信元レジスタオペランドに物理レジスタ番号(PR♯)を割当てることによってレジスタ再命名を行なうように構成される。物理レジスタ番号はレジスタファイル38A−38B内のレジスタを識別する。さらに、マップユニット30は各命令動作にキュー番号(IQ♯)を割当て、命令動作を記憶するよう割当てられる命令キュー36A−36B内の場所を識別する。マップユニット30はさらに、命令動作の発信元オペランドに割当てられる各物理レジスタ番号を更新する命令のキュー番号を与えることによって各命令動作に対する従属性の指標をもたらす。マップユニット30は、物理レジスタ番号および命令により、マップサイロ32を、各命令動作に割当てられる番号(および対応する論理レジスタ番号)に更新する。さらに、マップサイロ32は、命令のラインの前の論理レジスタに対応する先読み状態と、PCサイロに関する命令のラインを識別するR♯とを記憶するように構成されてもよい。上述のPCサイロと同様に、マップサイロ32は、エントリの循環バッファを含んでいてもよい。各エントリは、命令動作の1ラインに対応する情報を記憶するように構成されていてもよい。
【0036】
マップユニット30およびマップサイロ32はさらに、PCサイロ48からリタイア指標を受けるように構成される。命令動作のラインをリタイアする際、マップサイロ32は、ラインに割当てられる宛先物理レジスタ番号および対応する論理レジスタ番号をアーキテクチャ的再命名ブロック34に伝達して記憶するようにする。アーキテクチャ的再命名ブロック34は、各論理レジスタに対応する物理レジスタ番号を記憶し、各論理レジスタに対するコミットされたレジスタ状態を表わす。新しい物理レジスタ番号での対応する論理レジスタの更新の際にアーキテクチャ的再命名ブロック34から変位される物理レジスタ番号は、後の命令への割付のために物理レジスタ番号の自由リストに戻される。一実施例では、物理レジスタ番号を自由リストに戻す前に、その物理レジスタ番号はアーキテクチャ的再命名ブロック34内の残っている物理レジスタ番号と比較される。ある物理レジスタ番号が変位された後にも依然としてアーキテクチャ的再命名ブロック34内に表わされている場合、その物理レジスタ番号は自由リストに追加されない。このような実施例は、同じ物理レジスタ番号が1つより多い命令の結果を記憶するよう用いられる場合に用いてもよい。たとえば、x86命令セットアーキテクチャを用いる実施例では、浮動小数点オペランドを記憶するのに十分大きい物理レジスタをもたらしてもよい。このように、どんな物理レジスタをも、いかなるタイプのオペランドを記憶するのにも用いることができる。しかしながら、整数オペランドおよび条件コードオペランドは所与の物理レジスタ内の空間を完全に利用しない。そのような実施例では、プロセッサ10は、ある命令の整数結果および条件コード結果の双方を記憶するように単一の物理レジスタを割当ててもよい。物理レジスタに対応する条件コード結果を上書きする命令の後のリタイアメントによって同じ整数レジスタが更新されないこともあるため、物理レジスタは新しい条件コード結果をコミットする際に自由でないかもしれない。同様に、物理レジスタに対応する整数レジスタを更新する命令の後のリタイアメントにより、条件コードレジスタが更新されないこともあり、このため、物理レジスタは新しい整数結果をコミットする際に自由ではないかもしれない。
【0037】
さらに、マップユニット30およびマップサイロ32は、PCサイロ48から例外指標を受けるように構成される。例外を起こす命令動作を含むラインの後の命令動作のラインは、マップサイロ32内で無効として印付けされる。命令動作の後のラインに対応する物理レジスタ番号は、リタイアメントのための対応するラインの選択の際に自由にされる(アーキテクチャ的再命名ブロック34は無効化された宛先レジスタで更新されない)。さらに、マップユニット30によって維持される先読みレジスタ状態は、例外を起こす命令に対応する先読みレジスタ状態に復元される。
【0038】
命令動作のライン、発信元物理レジスタ番号、発信元キュー番号および宛先物理レジスタ番号は、マップユニット30によって割当てられるキュー番号に従って命令キュー36A−36Bに記憶される。一実施例によれば、命令キュー36A−36Bは対称であり、いかなる命令をも記憶できる。さらに、ある特定の命令動作に対する従属性は、いずれかの命令キューに記憶される他の命令動作に関して起こり得る。マップユニット30はたとえば、命令動作のラインを命令キュー36A−36Bのうちの一方に記憶し、その後に続く命令動作のラインを命令キュー36A−36Bの他方に記憶し得る。命令動作は、少なくとも、命令動作が従属している前の命令動作が実行されレジスタファイル38A−38Bを更新するまで命令キュー36A−36B内に残る(そして命令動作は実行のためスケジュールされる)。一実施例では、命令動作はリタイアされるまで命令キュー36A−36B内に残る。
【0039】
命令キュー36A−36Bは、ある特定の命令動作を実行のためにスケジュールする際に、そのある特定の命令動作がどのクロックサイクルにおいてレジスタファイル38A−38Bを更新することになるのかを定める。実行コア40A−40B内の異なる実行ユニットが異なる数のパイプラインステージ(よって異なるレイテンシ)を用い得る。さらに、ある命令は他のものよりパイプライン内でより長いレイテンシを経験し得る。したがって、(クロックサイクルの数で)ある特定の命令動作に対するレイテンシを測定するカウントダウンが生成される。命令キュー36A−36Bは、更新が起こるまで、特定された数のクロックサイクルだけ待ち、次に、そのある特定の命令動作に従属している命令動作をスケジュールしてもよいことを示す。各命令キュー36A−36Bは、その命令キュー内の命令動作に対するカウントダウンを維持し、カウントダウンの満了の際に従属する命令動作をスケジュールすることを内部で許す。さらに、命令キューは、カウントダウンの満了の際に他方の命令キューに指標を与える。その後、他方の命令キューは従属する命令動作をスケジュールすることができる。このような他方の命令キューへの命令動作完了の送信を遅延することにより、レジスタファイル38A−38Bが、実行コア40A−40Bの一方により与えられる結果を他方のレジスタファイルに伝搬することが可能となる。レジスタファイル38A−38Bの各々は、プロセッサ10によって用いられる物理レジスタのセットを実装しており、実行コア40A−40Bの一方によって更新される。この更新は次に、他方のレジスタファイルに伝搬される。命令キュー36A−36Bは、ある命令を一旦その従属性が満足された(すなわちキュー内のその順序に関してアウトオブオーダである)際にスケジュールし得ることに注意されたい。
【0040】
命令キュー36Aからスケジュールされる命令動作は、レジスタファイル38Aからの発信元物理レジスタ番号に従って発信元オペランドを読出し、実行のために実行コア40Aに伝達される。実行コア40Aは、命令動作を実行し、レジスタファイル38A内の宛先に割当てられる物理レジスタを更新する。命令動作によっては宛先レジスタを有しておらず、実行コア40Aはこの場合には宛先物理レジスタを更新しない。さらに、実行コア40Aは命令動作のR♯および(もしあれば)命令動作に関する例外情報をPCサイロおよびリダイレクトユニット48に報告する。命令キュー36B、レジスタファイル38Bおよび実行コア40Bも同様に動作し得る。
【0041】
一実施例では、実行コア40Aおよび実行コア40Bは対称のものである。各実行コア40はたとえば、浮動小数点加算ユニット、浮動小数点乗算ユニット、2つの整数ユニット、分岐ユニット、ロードアドレス生成ユニット、ストアアドレス生成ユニットおよびストアデータユニットを含んでいてもよい。実行ユニットの他の構成も可能である。
【0042】
宛先レジスタを有さない命令動作には、ストアアドレス生成、ストアデータ動作および分岐動作がある。ストアアドレス/ストアデータ動作は、ロード/ストアユニット42に結果をもたらす。ロード/ストアユニット42は、メモリデータ動作を行なうためにDキャッシュ44にインターフェイスをもたらす。実行コア40A−40Bは、命令のアドレスオペランドに基づいて、それぞれ、ロードROPおよびストアアドレスROPを実行してロードおよびストアアドレスを生成する。より特定的には、ロードアドレスおよびストアアドレスは、その生成の際に(直接、実行コア40A−40BとDキャッシュ44との接続を介して)実行コア40A−40BによってDキャッシュ44に与えられてもよい。Dキャッシュ44をヒットするロードアドレスにより、データがDキャッシュ44からレジスタファイル38に経路づけられることにつながる。一方、ヒットするストアアドレスはストアキューエントリを割付けられる。その後、ストアデータがストアデータ命令動作(これはストアデータをレジスタファイル38A−38Bからロード/ストアユニット42へ経路づけるのに用いられる)によりもたらされる。ストア命令がリタイアされる際、データはDキャッシュ44内に記憶される。また、ロード/ストアユニット42は、(外部インターフェイス46を介して)後のキャッシュフィールのためにDキャッシュ44をミスするロード/ストアアドレスを記憶し、かつ欠けているロード/ストア動作を再度試みるためのロード/ストアバッファを含んでいてもよい。ロード/ストアユニット42はさらに、ロード/ストアメモリ従属性を取扱うよう構成される。
【0043】
次に、図2を参照して、マップユニット30、マップサイロ32およびアーキテクチャ的再命名ブロック34の一実施例のブロック図が、プロセッサ10の一実施例によるその間の相互接続を強調して示される。要望に応じて、付加的な、置換のまたはより少ない相互接続を用いる他の実施例も可能であり考慮される。
【0044】
復号ユニット24は、ROP情報バス60に接続され、ROP情報バス60はさらに、マップユニット30およびマップサイロ32の双方に接続される。命令動作のライン(またはROPのライン)に関する情報が復号ユニット24によってROP情報バス60上にもたらされる。ライン内の各ROPに対し、復号ユニット24は少なくとも以下のもの、すなわち、有効指標と、ROPが宛先レジスタを書込むかどうかの指標と、R♯と、論理宛先レジスタ番号と、論理発信元レジスタ番号(最大2まで)をもたらす。マップユニット30は宛先IQ♯を各ROPに割当て、宛先PR♯を宛先レジスタを書込む各ROPに割当てる。マップユニット30は、割当てられたPR♯およびIQ♯をマップサイロ32へ宛先PR♯/IQ♯バス62上に与える。さらに、マップユニット30は、現先読みレジスタ状態をマップサイロ32へ現先読みレジスタ状態バス64上に与える。一般的に、「先読みレジスタ状態」という術語は、プログラムシーケンスの実行におけるある特定の時点において(すなわち、プログラムシーケンスにおけるそのある特定の時点の前の各命令を実行した後およびプログラムシーケンスにおけるそのある特定の時点の後の各命令を実行する前)論理レジスタの状態(すなわちその中に記憶される値)を識別することを指して言う。現先読みレジスタ状態は、マップユニット30によって処理されているROPのラインの前の論理レジスタに対応する物理レジスタのセットを識別する。換言すると、現先読みレジスタ状態は、各論理レジスタに対応する物理レジスタ番号を記憶する。さらに、本実施例において、現先読みレジスタ状態は、識別される物理レジスタを更新する命令のIQ♯と、IQ♯が依然として有効であるか(すなわち命令がまだリタイアされていないか)を示す有効ビットとを含む。マップサイロ32は、ROPのラインに対するエントリを割付け、現先読みレジスタ状態およびマップユニット30によって与えられる割当てられたPR♯およびIQ♯を記憶する。また、マップサイロ30は、どのROPが有効であり、どのROPが論理レジスタを更新し、どの論理レジスタがROP情報バス60からのこれらのROPによって更新されるかを捕捉してもよい。例示的なマップサイロエントリが以下に示される(図9)。
【0045】
一般的に、ここで言及される「サイロ」は、命令、命令動作または命令動作のラインに対応する情報を記憶するための構造である。サイロは情報をプログラム順序に保ち、命令がプログラム順序においてリタイアされるにつれ(例外条件がない場合)情報はサイロの一番上(または末端)からサイロの一番下(またはヘッド)へと論理的に移動する。ここで用いられるように、命令がリタイアされるのは、命令の結果がアーキテクチャ的状態にコミットされる際である(たとえば、命令の宛先に割当てられる物理レジスタ番号によりアーキテクチャ的再命名ブロック34の更新を可能にすることによって、または命令に対応するストアデータによりDキャッシュ44の更新を可能にすることによって)。
【0046】
マップサイロ32は、リタイア有効ライン66上のリタイア有効信号と、例外情報バス68上の例外有効指標およびR♯とを受けるよう接続される。リタイア有効ライン66および例外情報バス68はPCサイロ48に接続される。アサートされたリタイア有効信号に応答して、マップサイロ32は、サイロのヘッドにおけるエントリからアーキテクチャ的再命名ブロック34へリタイアレジスタ/PR♯バス70上に、リタイアされたレジスタ情報を与える。より特定的には、リタイアレジスタ/PR♯バス70は、更新すべき論理レジスタ番号および対応する物理レジスタ番号を伝達してもよい。本実施例では、ROPのリタイアメントは完全なラインに対して同時に起こる(すなわち、PCサイロ48は、マップサイロ32およびPCサイロ48のヘッドにおけるライン内の各ROPが一旦実行するのに成功するとリタイアメントを信号で知らせる)。したがって、本実施例では最も古いラインをリタイアするための信号が用いられてもよい。他の実施例では、部分的リタイアメントに備えていてもよく、または個別の命令動作を介して記憶を編成してもよく、この場合、リタイアメントは命令動作などによって起こり得る。
【0047】
アーキテクチャ的再命名ブロック34は、リタイアレジスタ/PR♯バス70上の特定される論理レジスタに対応するエントリを更新する前に、これらの論理レジスタに対応する現物理レジスタ番号を読出す。換言すると、アーキテクチャ的再命名ブロック34から変位されている物理レジスタ番号(「前の物理レジスタ番号」)は、アーキテクチャ的再命名ブロック34からポップされる。アーキテクチャ的再命名ブロック34は、前のPR♯を前のPR♯バス72上にもたらし、前のPR♯バス72はマップユニット30に接続され、リタイアレジスタ/PR♯バス70上にもたらされるPR♯により、特定された論理レジスタエントリを更新する。
【0048】
一般的に、前のPR♯は、PR♯の自由リストに追加される資格がある(また、後のROPの宛先レジスタへの割当の資格がある)。しかしながら、本実施例では、プロセッサ10は、物理レジスタ共用技術を用いて、物理レジスタ使用の効率を向上する。たとえば、物理レジスタは、整数値および条件コード値(またはフラグ値)の双方を記憶するよう割当てられてもよい。物理レジスタ記憶部のある部分は整数値を記憶し、別の部分は条件コード値を記憶する。したがって、たとえば、PR♯が割当てられた整数レジスタの更新の際に前のPR♯がポップされた際に、PR♯はその中に記憶される条件コードを依然として表わし得る(またその逆もある)。アーキテクチャ的再命名ブロック34は、前のPR♯を更新されたアーキテクチャ的状態と比較して、どのレジスタが実際に自由にされる資格があるのかを判定する(図2において、PR♯を前のPR♯バス72から捕捉し、捕捉された番号をアーキテクチャ的再命名ブロック34に戻すレジスタ75によって表わされるが、他の実施例では1つのクロックサイクルにおいて更新および比較が行なわれてもよい)。たとえば、アーキテクチャ的再命名ブロック34は、論理レジスタに対応するPR♯を記憶するために連想メモリ(CAM:content addressable memory)を用いてもよい。アーキテクチャ的再命名ブロック34は、前のPR♯バス72上に伝達される各PR♯に対応してカム一致バス74上にカム一致信号を伝達してもよい。マップユニット30は、対応するカム一致信号がアサートされていない場合には前のPR♯バス72上に特定されるレジスタを自由にしてもよい。有利には、物理レジスタ使用はより効率のよいものであってもよく、なおかつ物理レジスタは正確に自由にされてもよい。他の考慮される実施例では、別個の物理レジスタが、命令動作に応答して更新される各論理レジスタに割当てられてもよいことに注意されたい。
【0049】
前のPR♯がアーキテクチャ的再命名ブロック34からポップされる際に自由にされない場合には、前のPR♯によって依然として表わされている論理レジスタを更新する命令のその後のリタイアメントによって、前のPR♯の自由化につながり得ることに注意されたい。その後のリタイアメントの際、カム一致は検出されないかもしれない。
【0050】
ここで用いられるように、物理レジスタが「自由」であるのは、再命名ハードウェアによって処理されている命令の宛先オペランドへの割当に利用可能である場合である。本実施例では、物理レジスタは、物理レジスタが割当てられる論理レジスタを更新する後の命令のリタイアメントの際に自由にされる。他の実施例では代替の態様でレジスタを自由にしてもよい。
【0051】
あるライン内の1つ以上の命令動作が同じ論理レジスタを更新し得ることに注意されたい。したがって、マップサイロ32またはアーキテクチャ的再命名ブロック34のうちの1つが、論理を含みリタイアされる論理レジスタを走査して各論理レジスタに対する最も古い更新を識別し(すなわち、プログラム順序において最終の更新)、その最も古い更新に対応する物理レジスタ番号をアーキテクチャ的再命名ブロック34に記憶する。より新しい更新は、上述の態様と同様に自由にされてもよい(すなわち、カムされ、一致が起こらなければ自由にされる)。
【0052】
マップサイロ32はまたPCサイロ48から例外指標を受けてもよい。PCサイロ48は、例外有効信号をアサートし、例外を経験している命令動作のR♯をマップサイロ32に例外情報バス68を介して与えてもよい。マップサイロ32は、(ライン内の各ROPに対して一定であるR♯の部分を用いて)例外を経験している命令動作を含むROPのラインに対応するサイロエントリを選択する。マップサイロ32は、選択されたエントリ内に記憶される現先読みレジスタ状態をマップユニット30へ回復先読みレジスタ状態バス76上に与える。マップユニット30は先読みレジスタ状態を回復された状態に復元する。さらに、マップサイロ32は、ライン内の、例外を経験するROPの前の、ROPの論理レジスタ番号、PR♯およびIQ♯をもたらす。マップユニット30は、もたらされたPR♯およびIQ♯により、復元された先読み状態を更新する。有利には、先読み状態は迅速に回復される。例外条件に応答してフェッチされる命令は、再命名の迅速な回復によりマップユニット30に到達する際に再命名されてもよい。
【0053】
さらに、例外に応答して、この例外を経験するROPに続いてROPに割当てられた物理レジスタは自由にされる。マップサイロ32は、マップユニット30への自由PR♯バス78上で自由にされるPR♯を伝達する。一実施例では、マップサイロ32は、自由にされるPR♯を1クロックサイクルごとに1ラインの割合で与えるよう構成され得る。さらに、物理レジスタが割当てられたROPはリタイアされなかったので、物理レジスタは、カムするためにアーキテクチャ的再命名ブロック32に伝達される必要はない。
【0054】
ここで図3を参照して、マップユニット30の一実施例のブロック図が示される。他の実施例も可能であり、企図される。図3の実施例では、マップユニット30は、レジスタ走査ユニット80、IQ♯/PR♯制御ユニット82、先読みレジスタ状態84、仮想/物理レジスタマップユニット86、自由リスト制御ユニット88および自由リストレジスタ90を含む。レジスタ走査ユニット80は、バス60A(図2に示すROP情報バス60の一部)により復号ユニット24から発信元および宛先レジスタ番号(および各々に対する有効指標)を受けるよう接続される。レジスタ走査ユニット80は、宛先レジスタ番号および発信元仮想レジスタ番号を仮想/物理レジスタマップユニット86に伝えるよう構成される。IQ♯/PR♯制御ユニット82はバス60B(図2に示すROP情報バス60の一部)に接続され、宛先レジスタ番号およびその宛先レジスタ番号に対応する有効指標を受ける。命令キュー36Aおよび36Bは末端ポインタバス92により末端ポインタを与え、各キューのいずれのエントリが現在そのキューの末端であるかを示す。さらに、IQ♯/PR♯制御ユニット82は宛先PR♯/IQ♯バス62に接続される。仮想/物理レジスタマップユニット86は、回復先読みレジスタ状態バス76、および先読みレジスタ状態84に接続され、これはさらに現先読みレジスタ状態バス64に接続される。またさらに、仮想/物理レジスタマップユニット86は、命令キュー36Aおよび36Bへの発信元/宛先PR♯およびIQ♯バス94によってライン内の各ROPに対して発信元PR♯、発信元IQ♯、宛先PR♯およびIQ♯を与えるよう接続される。自由リスト制御ユニット88は次の自由PR♯バス96および割当てられたPR♯バス99を介してIQ♯/PR♯制御ユニット82に接続され、かつ自由リストレジスタ90に接続される。さらに、自由リスト制御ユニット88は前のPR♯バス72、カム一致バス74、および自由PR♯バス78に接続される。
【0055】
図3の実施例では、マップユニット30は2段階のパイプライン設計を用いてレジスタの再命名を行なう。第1段階では、レジスタ走査ユニット80が仮想レジスタ番号を各発信元レジスタに割当てる。並行して、IQ♯/PR♯制御ユニット82はIQ♯を(命令キュー36Aおよび36Bによって与えられた末端ポインタに基づいて)各ROPに割当て、PR♯を宛先レジスタを有するROPに割当てる。第2段階では、仮想/物理レジスタマップユニット86は仮想レジスタ番号を物理レジスタ番号に(現先読み状態および割り当てられたPR♯に基づいて)マッピングし、IQ♯/PR♯制御ユニット82によって割当てられた物理レジスタ番号を対応のROPの発行位置に経路づけする。
【0056】
レジスタ走査ユニット80によって割当てられた仮想レジスタ番号は、物理レジスタ番号に対する発信元を識別する。たとえば、本実施例では、発信元レジスタに対応する物理レジスタ番号は先読みレジスタ状態84(前にマップユニット30により処理されたROPのラインに対応する更新を反映するもの)か、ROPのライン内の前の発行位置(前のROPの宛先オペランドが発信元オペランドと同じ、すなわちライン内従属性が存在する場合)のいずれかから引出され得る。言換えれば、発信元レジスタ番号に対応する物理レジスタ番号は、ライン内従属性が検出されない限り、先読みレジスタ状態84により維持される物理レジスタ番号である。レジスタ走査ユニット80はライン内従属性検査を効果的に行なう。他の実施例により、所望に応じて他の発信元オペランドの発信元を与えることもできる。
【0057】
物理レジスタ番号のマッピングからのライン内従属性検査/宛先物理レジスタ割当てを複数のパイプライン段階に分けることにより、各段階はより高い周波数で動作され得る。したがって、図3に示すマップユニット30の実施例は、発信元物理レジスタ番号の決定と並行してライン内従属性検査および宛先物理レジスタ割当てを行なう他の実施例と比べて、より高い周波数で動作することが可能である。仮想レジスタ番号を用いることにより、機能の分離が可能になり、また図8を参照して以下に説明するように、発信元物理レジスタ番号の比較的簡単かつ効率的なマッピングが可能になる。
【0058】
IQ♯/PR♯制御ユニット82は、命令キュー36Aおよび36Bのうち1つの末端ポインタで始まる命令キュー番号を割当てる。言換えれば、ライン内の第1のROPは選択された命令キューの末端ポインタをIQ♯として受け、その他のROPは末端ポインタから増加する順にIQ♯を受ける。制御ユニット82はあるライン内のROPの各々を同じ命令キュー36Aおよび36Bに割当て、ROPの次のラインを他の命令キュー36Aおよび36Bに割付ける。制御ユニット82は命令キュー36Aおよび36Bに割付けられたROPの番号の指標をROP割付けバス98を介して伝達する。これにより、受ける側の命令キューは、そのキューに対するROPの割付けを反映するようにその末端ポインタを更新し得る。
【0059】
制御ユニット82は自由リスト制御ユニット88から自由PR♯のセットを受ける。この自由PR♯のセットは、命令動作のライン内の宛先レジスタに割当てられる。一実施例では、プロセッサ10は論理レジスタの更新数を1ラインから4ライン内に制限する(すなわち、プレディクタミス復号ユニット26が5番目の論理レジスタの更新に遭遇すると、ラインはその前の命令において終わる)。したがって、自由リスト制御ユニット88は自由リスト90から4つのPR♯を選択し、その選択されたレジスタを次の自由PR♯バス96によって制御ユニット82に伝達する。制御ユニット82は、割当てられたPR♯バス99を介していずれのPR♯が実際に割当てられたかということで応答し、自由リスト制御ユニット88は割当てられた物理レジスタをこの自由リストから削除する。他の実施例では、ライン内の更新の数に対してさまざまな制限が採用され、これは全く制限されないもの(すなわち各ROPが更新され得るもの)も含み得る。
【0060】
自由リスト制御ユニット88は、物理レジスタの自由化を管理し、かつ後の命令に割当てるためにレジスタを選択するよう構成される。自由リストレジスタ90は、たとえば、各物理レジスタに対応するあるビットを記憶し得る。このビットがセットされていると、対応するレジスタが自由にされる。このビットがクリアされていると、対応するレジスタは現在割当てられている(すなわち自由でない)ということである。自由リスト制御ユニット88は自由リストを走査し、制御ユニット82に伝達するためのレジスタを選択する。たとえば、自由リスト制御ユニット88は自由リストレジスタ90の各端部から初めの2つの自由レジスタについて走査し、本実施例において設けられた4つのレジスタの迅速な選択を可能にし得る。これらの走査は、各端部からの2つのピック・ワン動作(pick one operations)(他方の前に行なわれ、割当てられた物理レジスタを自由リストから取除く動作)として行なわれ得る。
【0061】
自由リスト制御ユニット88は前のPR♯バス72を介してアーキテクチャ的再命名ブロック34からポップされた前の物理レジスタ番号を受ける。その後、前の物理レジスタ番号の各々に対応するカム一致信号がカム一致バス74上で受けられる。対応のカム一致信号がデアサートされる、前のPR♯の各々が、自由リスト制御ユニット88によって自由リストに加えられる。さらに、自由PR♯バス78上で受けられた物理レジスタ番号は無条件で自由リストに加えられる。
【0062】
先読みレジスタ状態84は、仮想/物理レジスタマップユニット86に呈されるROPのラインに対応する更新の前に、先読みレジスタ状態に記憶される。より具体的には、先読みレジスタ状態84が、各論理レジスタに対応する物理レジスタ番号と、(本実施例では)宛先レジスタとして割当てられた物理レジスタ番号を有するROPに対応する命令キュー番号とを記憶する。各クロックサイクルで、先読みレジスタ状態84は現先読みレジスタ状態を現先読みレジスタ状態バス64によりマップサイロ32に伝達する。仮想/物理レジスタマップユニット86は、PR♯の発信元が先読みレジスタ状態84であることを示す仮想レジスタ番号を有する各発信元レジスタに対して先読みレジスタ状態84により示されるような対応の論理レジスタのPR♯およびIQ♯を供給する。仮想レジスタ番号が前の発行位置を示す発信元レジスタには、制御ユニット82により割当てられた対応のPR♯およびIQ♯が供給される。さらに、仮想/物理レジスタマップユニット86は、ROPのラインによって特定された論理宛先レジスタと制御ユニット82により割当てられた宛先PR♯/IQ♯とに従って、先読みレジスタ状態84を更新する。
【0063】
仮想/物理レジスタマップユニット86はさらに、例外条件(上記)に応答して、回復先読みレジスタ状態バス76上でマップサイロ32により与えられる回復先読みレジスタ状態を受けるよう構成される。仮想/物理レジスタマップユニット86は、レジスタ走査ユニット80およびIQ♯/PR♯制御ユニット82からの入力に従って生成された次の先読みレジスタ状態をマップサイロ32により与えられた回復先読み状態でオーバライドし得る。
【0064】
なお、本実施例では、IQ♯は各発信元オペランドに対して経路づけされ、いずれの命令キューエントリに対応のROPが従属しているかを示す。命令キュー36Aおよび36Bは、対応する命令キューエントリにおけるROPの完了を待った後、従属ROPをスケジュールして実行する。
【0065】
次に図4を参照して、レジスタ走査ユニット80の一実施例を表わすブロック図が示される。他の実施例も可能であり企図される。図4の実施例では、レジスタ走査ユニット80は、ROPのライン内の各発行位置に対応する走査ユニットを含む。たとえば、本実施例は、8つの発行位置に対応する8つの走査ユニット100A〜100Hを含む(これより多いものまたは少ないものも実現され得るが)。走査ユニット100A〜100Hは仮想先読みレジスタ状態を伝えるための連続鎖として、また発信元および宛先レジスタ番号を受けるよう並列で接続される。
【0066】
各走査ユニット100A〜100Hは、図3に示すROPバス60Aの一部に接続される。より具体的には、各走査ユニット100A〜100Hは、対応する発行位置におけるROPの発信元および宛先レジスタ番号を受けるように接続される。したがって、バス60AAは走査ユニット100Aに接続され、発行位置ゼロ(すなわちROPのライン内のプログラム順序で1番目のROP)に対して発信元および宛先レジスタ番号を与える。同様に、バス60ABは走査ユニット100Bに接続され、発行位置1に対して発信元および宛先レジスタ番号を与える。その他のバス60AC〜60AHは、図示したように、順に残りの発行位置に対応する発信元および宛先レジスタ番号を与える。各走査ユニット100A〜100Hは、各発信元レジスタに対して発信元仮想レジスタ番号を与えるように構成され、この番号は後で仮想/物理レジスタマップユニット86に伝えられる。
【0067】
走査ユニット100Aは仮想現先読みレジスタ状態を受けるように結合される。この仮想現先読みレジスタ状態は、各論理レジスタに対応する仮想レジスタ番号を含む。仮想現先読み状態内の仮想レジスタ番号は、PR♯(およびIQ♯)の発信元が先読みレジスタ状態84であることを示す。x86命令セットアーキテクチャを採用する一実施例において、たとえば、先読みレジスタ状態84は、アーキテクテッド整数レジスタに対応する8つのレジスタと、条件コードビットの群(群分けは、さまざまな命令によってどれが更新されるかに従って選択され、たとえばOビットを1つの群とし、Cビットを別の群、さらにZ,A,PおよびSビットを第3の群とする)に対応する3つのレジスタと、アーキテクテッド浮動小数点/MMXレジスタに対応する8つのレジスタと、浮動小数点条件コードレジスタに対応する1つのレジスタと、一時マイクロコードレジスタに対応する8つのレジスタとを含む。
【0068】
走査ユニット100Aは発信元レジスタ番号に基づいて仮想現先読みレジスタ状態からの発信元仮想レジスタ番号を割当てる。さらに、発行位置ゼロのROPが宛先レジスタを更新すると、走査ユニット100Aは対応する論理宛先レジスタに対して新しい仮想レジスタ番号を挿入することにより仮想現先読み状態を更新する。この新しい仮想レジスタ番号は、対応する論理レジスタについてのPR♯およびIQ♯の発信元が発行位置ゼロであることを示す。元の仮想レジスタ番号の代わりに新しい仮想レジスタ番号が挿入された更新先読みレジスタ状態が、走査ユニット100Bに伝えられる。
【0069】
走査ユニット100Bは走査ユニット100Aから更新された先読みレジスタ状態を受取り、更新された先読みレジスタ状態からの仮想レジスタ番号を発信元レジスタ番号に割当てる。さらに、走査ユニット100Bは、発行位置1におけるROPが論理レジスタを更新すると、走査ユニット100Aにより与えられる更新された先読みレジスタ状態へ発行位置1を示す新しい仮想レジスタ番号を挿入する。走査ユニット100C〜100Hもまた同様に、先行する走査ユニットにより与えられる更新された先読みレジスタ状態に応答して、発行位置3〜8におけるROPの発信元レジスタに対してそれぞれ仮想レジスタ番号を割当て、宛先レジスタ番号がもしあればそれに従って、更新先読みレジスタ状態を更新する。
【0070】
したがって、ライン内の前のROPがROPの発信元レジスタ番号により特定された論理レジスタを更新すると、前の発行位置を示す仮想レジスタ番号が割当てられる。そうでなければ、対応する論理レジスタについての現先読みレジスタ状態を示す仮想レジスタ番号が割当てられる。言換えれば、前の命令ラインに従属する(現先読みレジスタ状態を介した)ライン内従属は、仮想レジスタ番号により示される。
【0071】
走査ユニット100Hにより与えられたこの更新先読みレジスタ状態は次の仮想先読みレジスタ状態であり、これは、走査ユニット100A〜100Hの各々により与えられる発信元仮想レジスタ番号および宛先レジスタ番号とともに、仮想/物理レジスタマップユニット86に伝達される。仮想/物理レジスタマップユニット86はその後、ROPの後のラインに対して先読みレジスタ状態84を更新するために、ROPのラインに対応する次の先読みレジスタ状態を生成し得る。
【0072】
なお、一実施例では、走査ユニット100A〜100Fの各々は、整数レジスタ、一時レジスタおよび条件コードレジスタを取扱う整数/一時走査回路と、浮動小数点レジスタおよび浮動小数点条件コードレジスタを取扱う浮動小数点走査回路とを含む。したがって、各発信元および宛先レジスタが浮動小数点レジスタであるか整数レジスタであるかの指標は、レジスタ番号とともに経路づけられ、また、どの仮想レジスタ番号をレジスタに割当てるか、または新しい仮想レジスタ番号で置換えるかを決定するのに用いられる。
【0073】
次に図5を参照して、仮想レジスタ番号の符号化の例を表わす表102が示される。他の符号化も可能であり、企図される。具体的には、たとえば、表102に示す最上位ビット(MSB)の論理状態は表に示すものから反転され得る。また他の符号化も同様に可能である。
【0074】
表102は仮想レジスタ番号の符号化を表わし、ここでMSBが、対応するPR♯/IQ♯に対する発信元が先読みレジスタ状態84によって維持される現先読み状態であるか、ライン内の前の発行位置に割当てられた宛先PR♯/IQ♯であるかを決定する。たとえば、MSBがクリアされていれば、仮想レジスタ番号は発信元が現先読み状態であることと、仮想レジスタ番号の最下位ビット(LSB)は現先読み状態内の論理レジスタ番号であることとを示している。MSBがセットされていると、仮想レジスタ番号は発信元が前の発行位置であることを示している。この場合のLSBは前の発行位置番号となる。
【0075】
表102に示す符号化を採用する一実施例では、走査ユニット100Aに与えられた仮想現先読み状態は、MSBがクリアされており、与えられる対応の論理レジスタ番号がLSBである、符号化を含む。走査ユニット100A〜100Hにより更新先読みレジスタ状態中に挿入された新たな仮想レジスタ番号は、MSBがセットされており、挿入する走査ユニットに対応する発行位置番号がLSBで与えられる、符号化を含む。
【0076】
次に図6を参照して、走査ユニット100A〜100Hの各々の一実施例において採用され得る、整数/一時走査回路110の一実施例の一部が示される。他の実施例も可能であり、企図される。図6の実施例では、対応するROPの宛先レジスタ番号は宛先バス112によって伝達され、対応するROPの第1の発信元(SRC1)レジスタ番号はSRC1バス114により伝達され、また対応するROPの第2の発信元(SRC2)レジスタ番号はSRC2バス116により伝達される。バス112、114および116はバス60Aの一部を含み、(たとえば、整数/一時走査回路110が走査ユニット100Aの一部であれば、バス112、114および116はバス60AAの部分となる)。宛先バス112は複数の宛先識別子ユニット(たとえば図6に示すユニット118Aおよび118B)に接続される。宛先識別子ユニット118Aおよび118Bの各々は伝達/書込(pass/write)制御ユニット(たとえば宛先識別子ユニット118Aおよび118Bにそれぞれ接続された伝達/書込制御ユニット120Aおよび120B)に接続される。各伝達制御ユニット120Aおよび120Bはさらに、先行する走査ユニット100A〜100Hにより与えられた仮想レジスタ入力と、後続の走査ユニット100A〜100Hへの仮想レジスタ出力とに接続される(たとえば、伝達/書込制御ユニット120Aは仮想EAX入力バス122Aおよび仮想EAX出力バス124Aに接続され、伝達/書込制御ユニット120Bは仮想EBX入力バス122Bおよび仮想EBX出力バス124Bに接続される)。さらに、SRC1バス114は、複数のSRC1識別子ユニット(たとえば図6に示すSRC1識別子ユニット126Aおよび126B)に接続される。SRC2バス116は、同様に、複数のSRC2識別子ユニット(たとえば図6に示すSRC2識別子ユニット128Aおよび128B)に接続される。SRC1/SRC2識別子ユニット126Aおよび126Bまたは128Aおよび128Bの各々は、図6に示す対応のスイッチ130Aから130Dのイネーブル制御に接続される。スイッチ130Aおよび130Bは仮想EAX入力バス122Aに接続された入力を有し、一方スイッチ130Cおよび130Dは仮想EBX入力バス122Bに接続された入力を有する。スイッチ130Aおよび130CはSRC1仮想レジスタバス132Aに接続された出力を有し、一方スイッチ130Bおよび130DはSRC2仮想レジスタバス132Bに接続された出力を有する。
【0077】
通常、整数/一時走査回路110は対応の発行位置におけるROPの整数/一時発信元レジスタに対して仮想レジスタ番号を割当て、対応する発行位置における整数宛先レジスタに対して新たな仮想レジスタ番号を挿入する。宛先識別子ユニット、伝達/書込制御ユニット、SRC1識別子ユニットおよびSRC2識別子ユニットは、論理整数、一時または条件コードレジスタの1つに対応する。たとえば、宛先識別子ユニット118A、伝達/書込制御ユニット120A、SRC1識別子ユニット126AおよびSRC2識別子ユニット128AはEAXレジスタに対応する。同様に、宛先識別子ユニット118B、伝達/書込制御ユニット120B、SRC1識別子ユニット126BおよびSRC2識別子ユニット128BはEBXレジスタに対応する。宛先識別子ユニット、伝達/書込制御ユニット、SRC1識別子ユニットおよびSRC2識別子ユニットの他のセット(図示せず)は、論理整数レジスタ、一時レジスタまたは条件コードレジスタの他のものに対応する。以下に、EAXレジスタハードウェアについて述べる。EBXレジスタハードウェアはEBXレジスタと同様に動作し、他の同様のハードウェア(図示せず)は残りのレジスタに対して同様に動作する。
【0078】
宛先識別子ユニット118Aは宛先レジスタバス112上の宛先レジスタ番号がEAXレジスタを選択するか否かを判定する。したがって、宛先識別子ユニット118AはEAXが選択されたか否かを判定するために宛先レジスタ番号を復号化し、この復号化は、宛先レジスタ番号が有効であると示す有効信号と、宛先レジスタ番号が整数/一時/条件コードレジスタである(すなわち浮動小数点レジスタではない)ことを示す整数信号とで分類される(qualified)。宛先レジスタがEAXレジスタであれば、宛先識別子ユニット118Aは伝達/書込制御ユニット120Aに信号で知らせ、整数/一時走査回路110が仮想EAX出力バス124A上で採用される発行位置に対応する仮想レジスタ番号を挿入する。そうでなければ、宛先識別子ユニット118Aは伝達/書込制御ユニット120Aに、仮想EAX入力バス122Aにより仮想EAX出力バス124Aへと与えられた仮想レジスタ番号を伝えるよう信号で知らせる。
【0079】
同様に、SRC1識別子ユニット126Aは、SRC1レジスタバス114上のSRC1レジスタ番号がEAXが選択されたか否かを判定するためにSRC1レジスタ番号を復号化し、かつこの復号化を、SRC1レジスタ番号が有効であることを示す有効信号とSRC1レジスタ番号が整数/一時/条件コードレジスタであることを示す整数信号とで分類することにより、SRC1レジスタバス114上のSRC1レジスタ番号がEAXレジスタを選択するか否かを決定する。EAXがSRC1であると選択されると、SRC1識別子ユニット126Aはスイッチ130Aを活性化し、仮想EAX入力バス122AによりSRC1仮想レジスタバス132A上に与えられる仮想レジスタ番号を駆動する。SRC識別子ユニット128AはSRC1識別子ユニット126Aと同様であるが、SRC2レジスタバス116上に与えられたSRC2レジスタ番号において動作し、これに応じてSRC2仮想レジスタバス132Bを駆動するようにまたは駆動しないようにスイッチ130Bを制御する。
【0080】
この形式で、更新先読み状態が次の走査ユニットへ(124Aおよび124Bなどの仮想出力バスを介して)伝えられることができ、また発信元仮想レジスタ番号が(SRC1仮想レジスタバス132AおよびSRC2レジスタ番号バス132Bを介して)割当てられ得る。なお、整数/一時走査回路110は、仮想整数/一時入力の各々を伝達/書込制御ユニット120A(および他の伝達/書込制御ユニット)に経路づけることにより、レジスタ間の移動演算(move operations)を取扱うように変更され得る。現発行位置におけるROPがレジスタ間の移動であることを示すために、さらなる信号が送られ得る。SRC1レジスタ番号および移動信号(move signal)に応答して、SRC1レジスタ番号に対応する仮想整数/一時入力は、宛先レジスタに対応する仮想整数/一時出力へと経路づけられる。さらに、対応する発行位置におけるROPは命令キュー36Aおよび36Bへ伝達することが禁止され(たとえばその有効ビットがリセットされ)、これは、発信元仮想レジスタ番号を宛先仮想レジスタ番号として経路づけることによりこの移動が達成されるからである。このような実施例において、リタイアした物理レジスタを自由にする前にそれらをカムすることにより、宛先PR♯を不注意で早く自由化してしまうのを防ぐことができる。
【0081】
ここで図7を参照して、走査ユニット100A〜100Hの各々の一実施例において採用され得る、浮動小数点走査回路140の一実施例の一部が示される。この他の実施例も可能であり、企図される。走査回路140は、整数/一時操作回路110と同様、SRC1レジスタバス114およびSRC2レジスタバス116を受け、SRC1仮想レジスタバス132AおよびSRC2仮想レジスタバス132B上で仮想レジスタ番号を駆動し得る。図7に示す部分は仮想stI入力(x86命令セットアーキテクチャにおいて規定されたst0〜st7のレジスタのうちの1つであり、0<I<7)を受け、仮想stI出力を回路140が採用される発行位置「現発行位置」)に対して与える。SRC1レジスタバス114に接続されたSRC1識別子ユニット142Aは、SRC1レジスタ番号がstIレジスタを選択しているか否か(すなわちレジスタ番号がstIであり、レジスタが浮動小数点レジスタであり、さらにSRC1レジスタが有効であるか否か)を判定する。SRC1レジスタ番号がstIレジスタを選択している場合、SRC1識別子ユニット142Aは、仮想stI入力バス144によりSRC1仮想レジスタバス132A上へ与えられた仮想レジスタ番号を駆動するようスイッチ130Eを制御する。同様に、SRC2レジスタバス116に接続されたSRC2識別子ユニット142Bは、SRC2レジスタ番号がstIレジスタを選択しているか否かを判定し、仮想stI入力バス144によりSRC2仮想レジスタバス132Bに与えられた仮想レジスタ番号を駆動するようスイッチ130Fを選択的に制御する。
【0082】
さらに、図7に示す浮動小数点走査回路114の部分は、仮想stI出力バス146上のレジスタstIに対応する出力仮想レジスタ番号を与える。さまざまな入力仮想レジスタ番号が出力バス146上の出力仮想レジスタ番号として選択可能であり、これは復号ユニット24により与えられたさまざまな制御信号によって制御される。x86浮動小数点命令はこの浮動小数点レジスタセットをスタックとして扱う。st0はこのスタックの一番上にあるレジスタであり、st1は一番上の次にくるものである、などとなる。特定の命令により、スタックはプッシュされる(現st0レジスタをst1レジスタにするなど)またはポップされる(現st1レジスタをst0レジスタにするなど)。またさらに、交換命令がサポートされ、これがスタックレジスタの一番上(st0)とその他のレジスタのうちの1つとをスワップする。
【0083】
この仮想stI出力の選択により、スイッチ130Gから130Kおよび入力仮想レジスタバス144、148、150、152および154のセットを採用することによりこれらのシチュエーションの多くを取扱う試みがなされる。現発行位置にあるROPが浮動小数点スタックまたはstIレジスタに個別に影響を与えなければ、この伝達信号はスイッチ130G(仮想stI入力バス144と仮想stI出力バス146との間に接続されている)にアサートされ、仮想stI入力が仮想stI出力として与えられる。一方、現発行位置にあるROPがstIレジスタを更新すれば、書込信号がスイッチ130J(バス152とバス146との間に接続されている)にアサートされ、この現発行位置(バス152により伝達される)に対応する仮想レジスタ番号は仮想stI出力バス146上で送信される。現発行位置におけるROPがスタックプッシュまたはポップを起こすと、対応する信号がスイッチ130K(バス154とバス146との間に接続されている)および130I(バス152とバス146との間に接続されている)にそれぞれアサートされる。現発行位置に与えられる更新先読み状態内のstI−1およびstI+1レジスタに対応する仮想レジスタ番号はこれにより与えられる。最後に、現発行位置の2つ前の発行位置から入力された仮想st0はバス148により与えられる。現ROPがFEXC命令の後半部分であれば、EXCH信号がスイッチ130Hにアサートされ、現発行位置の2つ前の発行位置からのst0に対応する仮想レジスタ番号は仮想stI出力として選択される。
【0084】
なお、FEXC命令の前半を取扱うために、st0に対応する浮動小数点走査回路140の部分は前の走査ユニットからの仮想stI入力の各々を含み、いずれかのレジスタを仮想st0出力として任意に選択することができる。さらに、浮動小数点状態レジスタのトップ・オブ・スタック(TOS)フィールドおよび浮動小数点タグワードも同様に浮動小数点操作により影響される。TOSおよびタグワードについての先読み値も同様にプッシュ、ポップおよび交換を通じて伝搬され得る。TOSおよびタグワードの現先読みコピーは、先読みレジスタ状態84に維持され得る。さらに、各発行位置に対応するTOSおよびタグワードの値は、例外回復のためにマップサイロ32に記憶され得る(そして最後の値が先読みレジスタ状態84に更新され得る)。またさらに、レジスタ走査ユニット80は(タグワードで示されるように)無効であるレジスタの使用を検出し、かつ後に例外を取扱うためにレジスタを用いたROPによる例外に気づくことができる。
【0085】
なお、整数/一時走査回路110および浮動小数点走査回路140は、整数から浮動小数点への、および浮動小数点から整数への移動を同様に取扱うことができる。ROPの発信元レジスタが整数であると示されれば、整数/一時走査回路110は発信元仮想レジスタ番号を与える。一方、ROPの発信元レジスタが浮動小数点であると示されれば、浮動小数点走査回路140が発信元仮想レジスタ番号をもたらす。宛先レジスタが浮動小数点であると示されれば、新しい浮動小数点仮想レジスタ番号が浮動小数点走査回路140により更新先読みレジスタ状態中に与えられる。一方、宛先レジスタが整数であると示されれば、新しい整数仮想レジスタ番号が整数/一時走査回路110によって更新先読みレジスタ状態中に与えられる。したがって、浮動小数点から整数レジスタへの移動を有する発行位置には、浮動小数点発信元仮想レジスタ番号が割当てられ、宛先レジスタ番号は整数を示す。一方、整数から浮動小数点レジスタへの移動を有する発行位置は整数発信元仮想レジスタ番号が割当てられ、宛先レジスタ番号は浮動小数点を示す。
【0086】
ここで図8を参照して、仮想/物理レジスタマップユニット86の一実施例のブロック図が示される。他の実施例も可能であり、企図される。図8の実施例では、仮想/物理レジスタマップユニット86はソースIQ♯mux160と、次の先読みIQ♯mux162と、発信元PR♯mux164と、次の先読みPR♯mux168と、トラップIQ♯mux170と、トラップPR♯mux172とを含む。発信元IQ♯mux160は、先読みレジスタ状態84からの各論理レジスタに対応する現先読みIQ♯を受けるように、またIQ♯/PR♯制御ユニット82により割当てられた宛先IQ♯を受けるように、接続される。次の先読みIQ♯mux162も同様に、現先読みIQ♯および宛先IQ♯を受けるよう接続される。発信元IQ♯mux160の出力は命令キュー36Aおよび36Bにパイプラインで接続され、一方次の先読みIQ♯mux162の出力はトラップIQ♯mux170の入力として接続される。トラップIQ♯mux170は、回復先読みレジスタ状態バス76A(回復すべきIQ♯を運ぶ回復先読みレジスタ状態バス76の一部)にさらに接続される。発信元PR♯mux164は、先読みレジスタ状態84からの各論理レジスタに対応する現先読みPR♯を受けるように、またIQ♯/PR♯制御ユニット82により割当てられた宛先PR♯を受けるように接続される。次の先読みPR♯mux168も同様に、現先読みPR♯および宛先PR♯を受けるように接続される。発信元PR♯mux164の出力は命令キュー36Aおよび36Bにパイプライン接続される。次の先読みPR♯mux168の出力はトラップPR♯mux172に接続され、これは回復先読みレジスタ状態バス76B(回復すべきPR♯を運ぶ回復先読みレジスタ状態バス76の一部)にさらに接続される。レジスタ走査ユニット80により割当てられた発信元仮想レジスタ番号は、選択制御として発信元IQ♯mux160および発信元PR♯mux164に与えられる。次の仮想先読み状態は、次の先読みIQ♯mux162および次の先読みPR♯mux168に選択制御として与えられる。PCサイロ48からのトラップ制御はトラップIQ♯mux170およびトラップPR♯mux172に対して選択制御を与える。
【0087】
通常、発信元IQ♯mux160および発信元PR♯mux164は、レジスタ走査ユニット80により与えられた対応する発信元仮想レジスタ番号に応答して各ROPの各発信元オペランドに対して発信元IQ♯およびPR♯を選択する。mux160は、たとえばmux160に対して図示したとおり入力を受けるよう接続され、かつ対応する発信元仮想レジスタ番号を選択制御として受けるmuxの並行なセット(各ROPの各発信元レジスタに対して1つ)として実現され得る。同様に、mux164は、mux164に対して図示したとおり入力を受け、かつ対応する発信元仮想レジスタ番号を選択制御として受けるよう結合されたmuxの並行なセット(各ROPの各発信元レジスタに対して1つ)として実現され得る。発信元仮想レジスタ番号が、現先読み状態がIQ♯/PR♯に対する発信元であることを示す場合、発信元仮想レジスタ番号に含まれる論理レジスタ番号が用いられて、先読みレジスタ状態84により与えられたIQ♯およびPR♯のうち1つを選択する。一方、発信元仮想レジスタ番号が前の発行位置を示す場合、この発行位置番号が用いられて制御ユニット82により割当てられた宛先IQ♯/PR♯のうち1つを選択する。制御ユニット82は、たとえば、各発行位置に対応する宛先IQ♯およびPR♯をもたらし得る。一方、制御ユニット82は制限された数のIQ♯およびPR♯(1ライン中のROPの数より少ない)をもたらし得る。このような実施例では、論理は発信元仮想レジスタ番号および宛先レジスタ有効指標において各ROPに対して行なわれ、宛先IQ♯/PR♯の組合せのうち1つを選択し得る。
【0088】
同様に、次の先読みIQ♯mux162および次の先読みPR♯mux168は、レジスタ走査ユニット80により与えられた対応する次の仮想先読み状態に応答して各論理レジスタに対してIQ♯およびPR♯を選択する。mux162は、たとえば、mux162に対して図示されたとおり入力を受けるよう接続され、かつ対応する仮想レジスタ番号を選択制御として受けるmux(各論理レジスタについて1つ)の並列セットとして実現され得る。同様に、mux168は、mux168に対して図示されたとおり入力を受けるよう接続され、かつ対応する仮想レジスタ番号を選択制御として受ける、mux(各論理レジスタについて1つ)の並列セットとして実現され得る。仮想レジスタ番号が、現先読み状態が特定の論理レジスタのIQ♯/PR♯に対する発信元であることを示す場合、この仮想レジスタ番号中に含まれる論理レジスタ番号が用いられて、先読みレジスタ状態84により与えられたIQ♯およびPR♯のうち1つを選択する。一方、仮想レジスタ番号が発行位置を示す場合、発行位置番号が用いられて制御ユニット82により割当てられた宛先IQ♯/PR♯のうち1つを選択する。
【0089】
図8に示す仮想レジスタ番号に基づいてIQ♯とPR♯との選択を物理的に分離することにより、利点が達成され得る。比較的多数のバスが比較的少量の回路(すなわちmux160,162,164および168で表わされるmux)に経路づけられる。したがって、仮想/物理レジスタマップユニット86により占有される領域の量は、先読みレジスタ状態84およびIQ♯/PR♯制御ユニット82からのバスにより支配され得る。IQ♯およびPR♯は別々の値であるので、これらの値を別々のmuxのセットへと経路づけすることにより、仮想/物理レジスタマップユニット86が占有する領域が減少し得る。一実施例では、IQ♯におけるビット数およびPR♯におけるビット数はほぼ同じであり得る。したがって、仮想/物理レジスタマップユニット86の一方側のIQ♯バスのワイヤリングおよび仮想/物理レジスタマップユニット86の他方側のPR♯バスのワイヤリングは、公平に対照的なレイアウトとなり、両側のワイヤリング空間が効果的に用いられ得ることになる。さらに、命令キュー36Aおよび36Bは、スケジューリング部分(現ROPが従属するROPがいつ完了したか、したがってROPの現セットの1つがいつスケジュールされ得るか、を判定するためのIQ♯を受ける部分)と、命令記憶部(PR♯および命令の実行に用いられる他の情報は記憶するが、IQ♯は記憶しない部分)とに物理的に分けられ得る。したがって、命令キュー36Aおよび36Bは、スケジューリング部分をIQ♯muxの近傍に、また命令記憶部分をPR♯muxの近傍に配置して物理的に構築され、さらに領域の節約を向上させる。
【0090】
図8に示す仮想/物理レジスタマップユニット86は、例外条件に応答して、先読みレジスタ状態84に対する次の先読みレジスタ状態のマッピングをさらに取扱う。トラップIQ♯mux170は、トラップが実行時に認識されると用いられ、マップサイロ32からの回復先読みレジスタ状態に対応するIQ♯を経路づけ、またmux162によって与えられた次の先読み状態をオーバライドする。PCサイロ48はトラップにmux170上での選択制御として信号を送り得る。同様に、回復先読みレジスタ状態内のPR♯は、トラップ信号に応答してトラップPR♯mux172を通じて選択され得る。なお、この他の実施例では、例外条件から回復するための他の方法も採用され得る。たとえば、例外条件はリタイアメント時に取り扱われ得る。
【0091】
次に図9を参照して、マップサイロ32内のエントリ(すなわちROPのあるラインに対応するエントリ)に記憶された情報を表わす表180が示される。他の実施例も可能であり、企図される。
【0092】
表180に示すように、このラインに対応するR♯がR♯(ライン部分)フィールドに記憶される。この記憶されたR♯は、PCサイロ48によりROPのラインに割当てられたR♯のライン部分である。このライン部分はライン内の各ROPについて同じであり、一方R♯のオフセット部分はある特定のROPのライン内の発行位置を識別する。したがって、サイロエントリ(全体としてこのラインに対応する)は、R♯が記憶されるROPに対するR♯のライン部分を比較することによって、例外を経験しているROPに関連づけられ得る。
【0093】
さらに、そのライン中のどのROPが有効であるかの指標はマップサイロエントリのライン(Line)フィールド内の有効ROPに記憶される。たとえば、この指標は1ROPごとに1ビットであり得る。ビットがセットされていると、そのライン内の対応のROPは有効である。ビットがクリアされていると、そのライン内の対応するROPは無効である。またさらに、どのROPが宛先論理レジスタを有するかという指標はROPレジスタ書込フィールドに記憶される。これもまた、指標は1ROPごとに1ビットであり得る。ビットがセットされていれば、ライン内の対応するROPは宛先レジスタを更新する。ビットがクリアであれば、ライン内の対応するROPは宛先レジスタを更新しない。どのROPが宛先レジスタを有するかという指標は、割当てられたPR♯および割当てられたIQ♯のうちどれが以下に述べるような例外イベントにおいて回復状態の部分となるかを決定するのに用いられる。
【0094】
宛先レジスタを有するROPに割当てられたPR♯およびIQ♯は、それぞれエントリの割当てられたPR♯フィールドおよび割当てられたIQ♯フィールドに維持される。さらに、各宛先レジスタの論理レジスタ番号が論理レジスタ番号フィールドに記憶される。これらの論理レジスタ番号が用いられて、回復先読み状態内のどの論理レジスタが、以下に述べるように、割当てられたPR♯および割当てられたIQ♯を受けるかが決定される。さらに、ラインのリタイアメントが成功すると、論理レジスタ番号および対応するPR♯はアーキテクチャ的再命名ブロック34に運ばれて記憶される。
【0095】
ライン内のどのROPが条件コードレジスタを更新するかという指標は、CC書込フィールドに記憶される。更新される条件コードの各部分は、CC書込フィールド内のビットによって別々に表わされ、1セットのビットは、ROPレジスタ書込フィールド内に示される各レジスタ書込みと関連づけられ得る。対応するROPのPR♯およびIQ♯(割当てられたPR♯およびIQ♯フィールドに記憶される)は、例外が検出されると、先読みレジスタ状態内の先読み条件コードレジスタを回復するのに用いられ得る。さらに、CC書込フィールドは割当てられたPR♯フィールド内のどのPR♯が、ROPのラインのリタイアメントが成功するとアーキテクテッド条件コード状態に対応するかを示す。上述したように、本実施例では、整数レジスタ更新および対応の条件コード更新の両者を記憶するために単一の物理レジスタが用いられる。
【0096】
マップサイロエントリに対応するROPのラインのディスパッチングの前に先読みレジスタ状態84内に記憶された現先読みレジスタ状態は、エントリの現先読みレジスタ状態フィールドに記憶される。この現先読みレジスタ状態は、ライン内の例外のイベントにおいて先読みレジスタ状態84を回復するための基準としての役割を果たす。
【0097】
最後に、各発行位置に対応するFP TOSおよび有効ビットは、エントリのFP TOSおよび有効ビットフィールド内に記憶される。例外を経験するROPに対応するFP TOSおよび有効ビットは、例外が検出されると、先読みレジスタ状態84内の先読みFP TOSおよびタグワード内に復元される。
【0098】
ここで図10を参照して、論理レジスタに対する先読みレジスタ状態84の一実施例によって採用され得る先読みレジスタ状態エントリ182の一例のブロック図が示される。エントリ182は、有効フィールド184と、IQ♯フィールド186と、PR♯フィールド188とを含む。有効フィールド184はIQ♯フィールド186が有効であるか否かを示す。IQ♯は、対応するROPが命令キュー36Aおよび36Bから完成されるまでは有効である。したがって、先読み状態84はIQ♯が完成しているロード/ストアユニット42および実行コア40からの指標を受けることができる。一致が検出されると、先読み状態84は有効指標をリセットし得る。この有効指標は、たとえばセットされていると有効でありクリアされていると無効であることを示す、1ビットであり得る。IQ♯フィールド186は論理レジスタを最も最近更新したROPのIQ♯を記憶し、PR♯フィールド188は、ROPの宛先レジスタとして割付けられた物理レジスタのPR♯を記憶する。
【0099】
次に図11を参照して、PCサイロ48によって信号で知らされる例外条件に応答したマップサイロ32の動作を表わすフローチャートが示される。この他の実施例も可能であり、企図される。図11に示すステップは理解しやすいように特定の順序で示されるが、適切であればいかなる順序も採用され得る。さらに、ステップは、マップサイロ32内で採用される組合せ論理(combinatorial logic)において並列で行なわれ得る。
【0100】
ステップ190に示されるように、マップサイロ32は、マップサイロ32に記憶されたエントリのR♯(ライン部分)フィールドに対してPCサイロ48により与えられたR♯をカムする。PCサイロ48により与えられたR♯は特定のROPを識別する。しかしながら、マップサイロ32に対する検査の目的で、R♯のライン部分がカムされる。与えられたR♯より最近のエントリ(プログラム順序で例外の後の命令)はマップサイロ32内で取消される。取消されたエントリの割当てられたPR♯フィールドに記憶されたPR♯は自由にされる。一実施例では、取消されたエントリのPR♯は、1クロックサイクルごとに1エントリの割合で、複数のクロックサイクルにわたって自由にされる。カムが一致を示すサイロエントリが、選択されたマップサイロエントリである。
【0101】
選択されたマップサイロエントリに記憶された現先読みレジスタ状態(すなわち例外を経験するROPを含むROPのラインの前の現先読み状態が、現先読みレジスタ状態82の先読み状態に復元される(ステップ192))。さらに、先読みレジスタ状態84におけるFP TOSおよび有効ビットは、例外を経験するROPの発行位置に対して選択されたマップサイロエントリに記憶された値へと復元される(ステップ192)。
【0102】
選択されたマップサイロエントリ内のROPレジスタ書込フィールドは、例外を経験するROPの前の書込へマスクされる。言換えれば、例外を経験するROPの後のROPレジスタ書込はマスクされて取除かれ、それらがマスキングの後に書込として現われないようにする。(マスキング後の)残りの書込は走査されて、各レジスタへの一番最近の書込が検出される(すなわち、残りの書込のうち2つ以上が同じレジスタに対するものであれば、より最近の書込が保持される)。現先読み状態はこの結果を用いて更新される(ステップ196)。ステップ192およびステップ196は、回復先読みレジスタ状態を先読みレジスタ状態84に送信する前にマップサイロ32において行なわれ得る。代替的には、現先読みレジスタ状態は先読みレジスタ状態84に復元され、またその後ステップ196に関して更新され得る。
【0103】
またさらに、選択されたマップサイロエントリにおけるROPレジスタ書込フィールド(すなわちステップ196のマスキング前の元の値)は、例外を経験するROPの後のレジスタ書込へとマスクされる。言換えれば、例外を経験するROPの前のレジスタ書込はマスクして取除かれる。残りのレジスタ書込のPR♯は自由にされる(ステップ198)。図11に示すフローチャートは、例外に応答して先読み状態を回復するための迅速な方法を有利に提供し得る。
【0104】
なお、上記において、発信元仮想レジスタ番号という用語および仮想発信元レジスタ番号という用語を用いることができる。これらの用語は同じ意味であることが意図される。さらに、上述したように、プロセッサ10により採用された命令セットアーキテクチャにおいて具体化された各命令が単一の命令動作へとマッピングする実施例は、ここに規定される命令動作の意味の範囲内で企図される。
【0105】
次に図12を参照して、バスブリッジ202を介してさまざまなシステム構成要素に結合されたプロセッサ10を含むコンピュータシステム200の一実施例のブロック図が示される。この他の実施例も可能であり、企図される。図示されたシステムでは、メインメモリ204がメモリバス206を介してバスブリッジ202に結合され、グラフィックコントローラ208がAGPバス210を介してバスブリッジ202に結合される。最後に、複数のPCI装置212Aおよび212BがPCIバス214を介してバスブリッジ202に結合される。電気的インタフェースを1つ以上のEISAまたはISA装置218にEISA/ISAバス220を介して適応させるために、二次的バスブリッジ216をさらに設けてもよい。プロセッサ10は外部インタフェース52を介してバスブリッジ202に結合される。
【0106】
バスブリッジ202は、プロセッサ10と、メインメモリ204と、グラフィックコントローラ208と、PCIバス214に取付けられた装置との間にインタフェースをもたらす。バスブリッジ202に接続された装置の1つから命令(operation)を受取ると、バスブリッジ202はその命令のターゲット(たとえば特定の装置、またはPCIバス214の場合にはターゲットはPCIバス214上にある)を識別する。バスブリッジ202はその命令をターゲットの装置へと経路づける。バスブリッジ202は通常、発信元装置またはバスにより用いられるプロトコルからターゲット装置またはバスにより用いられるプロトコルへと命令を変換する。
【0107】
PCIバス214に対するISA/EISAにインタフェースをもたらすことに加えて、二次的バスブリッジ216は所望に応じて付加機能をさらに組入れることができる。たとえば、一実施例では、二次的バスブリッジ216はPCIバス214の所有権を調停するためのマスタPCIアービタ(図示せず)を含む。二次的バスブリッジ216から外部の、または二次的バスブリッジ216に一体化された、入力/出力コントローラ(図示せず)をコンピュータシステム200内に含んで、キーボードおよびマウス222ならびにさまざまなシリアルポートおよびパラレルポートに対して、所望に応じて動作上のサポートを提供することもできる。他の実施例においては、プロセッサ10とバスブリッジ202との間に、外部キャッシュユニット(図示せず)をさらに外部インタフェース52に結合させてもよい。代替的には、この外部キャッシュはバスブリッジ202に結合されてもよく、外部キャッシュに対するキャッシュ制御論理はバスブリッジ202内に一体化され得る。
【0108】
メインメモリ204は、アプリケーションプログラムが記憶され、そこからプロセッサ10が主に実行するメモリである。好適なメインメモリ204は、DRAM(ダイナミックランダムアクセスメモリ)を含み、好ましくは複数のバンクのSDRAM(同期DRAM)を含む。
【0109】
PCI装置212Aおよび212Bは、たとえば、ネットワークインタフェースカード、ビデオアクセレレータ、オーディオカード、ハードもしくはフロッピィディスクドライブまたはドライブコントローラ、SCSI(小型コンピュータシステムインタフェース)アダプタ、およびテレフォニーカードなどのさまざまな周辺機器を表わす。同様に、ISA装置218は、モデム、サウンドカード、およびGPIBまたはフィールドバスインタフェースカードなどの種々のデータ収集カードなど、さまざまなタイプの周辺機器を表わすものである。
【0110】
グラフィックコントローラ218は、文字または画像のディスプレイ226上での表現(rendering)を制御するために設けられる。グラフィックコントローラ208は従来技術で一般に公知である典型的なグラフィックアクセレレータを採用して、メインメモリ204へおよびメインメモリ204から効果的にシフトされ得る3次元データ構造を表現し得る。グラフィックコントローラ208はしたがって、AGPバス210のマスタであってもよく、そこでバスブリッジ202内のターゲットインタフェースへのアクセスを要求しかつそれを受けることができ、よってメインメモリ204へのアクセスを得ることができる。専用グラフィックバスはメインメモリ204からのデータの迅速な再生に適応する。特定の動作に対して、グラフィックコントローラ208はさらに、AGPバス210上でのPCIプロトコルトランザクションを生成するようさらに構成され得る。バスブリッジ202のAGPインタフェースはしたがって、AGPプロトコルトランザクションならびにPCIプロトコルターゲットおよびイニシエータトランザクションの両者をサポートするための機能性を含み得る。ディスプレイ226はそこに画像または文字を表示し得る何らかの電子ディスプレイである。好適なディスプレイ226は、陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)、などを含む。
【0111】
なお、上記の説明ではAGP、PCIおよびISAまたはEISAバスが例として用いられたが、所望に応じて、いかなるバスアーキテクチャで代用してもよい。さらに、コンピュータシステム200はさらなるプロセッサ(コンピュータシステム200のオプション構成要素として示されるプロセッサ10aなど)を含む多重プロセッシングコンピュータシステムであり得る。プロセッサ10aはプロセッサ10と同様である。より具体的には、プロセッサ10aはプロセッサ10の同一の複製物であり得る。プロセッサ10aは(図12に示すような)プロセッサ10と外部インターフェイス52を共有しても、または独立したバスを介してバスブリッジ202に接続されてもよい。
【0112】
上記の開示に従って、レジスタ再命名スキームを採用するプロセッサが示された。一実施例では、この再命名スキームは仮想レジスタ番号を用いて複数の段階に分割される。有利には、このスキームを用いて高周波数動作が可能になり得る。別の実施例では、ROPの各ラインに対応する現先読み状態を格納し(siloing)、またライン内のレジスタ書込に気づくことにより、例外からの迅速な回復が行なわれる。さらに別の実施例では、再命名レジスタの自由化が管理され、同じ再命名レジスタが1つ以上の論理レジスタと対応できるようにする。これにより、効率的な物理レジスタの使用が採用され得る。
【0113】
説明される実施例に対して数多くの変形および変更をなすことができる。この発明が添付の請求の範囲の範囲内に含まれるすべてのそのような変形および変更を含むことが意図される。
【図面の簡単な説明】
【図1】 プロセッサの一実施例のブロック図である。
【図2】 図1に示されるプロセッサの一実施例による、図1に示されるマップユニット、マップサイロおよびアーキテクチャ的再命名ブロックの間の相互接続を強調するブロック図である。
【図3】 図1および図2に示されるマップユニットの一実施例のブロック図である。
【図4】 図3に示されるレジスタ走査ユニットの一実施例のブロック図である。
【図5】 仮想レジスタ番号のために用いることができる1つの符号化を示す表の図である。
【図6】 図4に示される走査ユニットの一実施例の一部分のブロック図である。
【図7】 図4に示される走査ユニットの一実施例の別の部分のブロック図である。
【図8】 図3に示される仮想/物理レジスタマップユニットの一実施例のブロック図である。
【図9】 図1および図2に示されるマップサイロの一実施例において記憶される情報を示す表の図である。
【図10】 論理レジスタのための例示的な先読みレジスタ状態を示すブロック図である。
【図11】 図1、図2および図3に示されるマップユニットの一実施例による先読み状態を復元することを示すフローチャートの図である。
【図12】 図1に示されるプロセッサを含むコンピュータシステムの一実施例のブロック図である。

Claims (20)

  1. プロセッサであって、
    複数の宛先レジスタ番号および複数の発信元レジスタ番号を受けるように結合されるマップユニットを含み、前記マップユニットは
    前記複数の発信元レジスタ番号および前記複数の宛先レジスタ番号を受けるよう結合されるレジスタ走査ユニットを含み、前記レジスタ走査ユニットは複数の仮想レジスタ番号を割当てるように構成され、前記複数の仮想レジスタ番号の各々のものは、前記複数の発信元レジスタ番号の異なるものに対応し、前記複数の仮想レジスタ番号内のある特定の仮想レジスタ番号は、前記複数の発信元レジスタ番号内のある特定の発信元レジスタ番号に対応するある特定の物理レジスタ番号の発信元を識別しており、前記マップユニットはさらに
    前記レジスタ走査ユニットに結合される仮想/物理レジスタマップユニットを含み、前記仮想/物理レジスタマップユニットは、前記ある特定の仮想レジスタ番号に応答して前記ある特定の物理レジスタ番号を前記ある特定の発信元レジスタ番号にマッピングするように構成される、プロセッサ。
  2. 前記ある特定の仮想レジスタ番号は、前記ある特定の物理レジスタ番号の前記発信元を、(i)前記複数の宛先レジスタ番号および前記複数の発信元レジスタ番号に対応する命令のラインの前に前記ある特定の発信元レジスタ番号によって特定される論理レジスタに対応する第1の物理レジスタ番号を記憶する先読みレジスタ状態記憶部と、(ii)命令動作の前記ライン内の前の発行位置とのいずれかとして識別する、請求項1に記載のプロセッサ。
  3. 前記レジスタ走査ユニットは、前記ある特定の発信元レジスタ番号に対応するある特定の命令動作の前の命令動作の前記ライン内の1つ以上の命令動作が前記論理レジスタを更新しない場合に、前記先読みレジスタ状態記憶部を識別する前記ある特定の仮想レジスタ番号をもたらすように構成される、請求項2に記載のプロセッサ。
  4. 前記レジスタ走査ユニットは、前記1つ以上の命令動作が前記論理レジスタを更新する場合に、前記前の発行位置を識別する前記ある特定の仮想レジスタ番号を割当てるように構成される、請求項3に記載のプロセッサ。
  5. 前記レジスタ走査ユニットは、前記1つ以上の命令動作のうちの複数のものが前記論理レジスタを更新する場合に、前記ある特定の命令動作に最も近い前記前の発行位置を識別する前記ある特定の仮想レジスタ番号を割当てるように構成される、請求項4に記載のプロセッサ。
  6. 前記マップユニットは、前記先読みレジスタ状態記憶部をさらに含み、前記先読みレジスタ状態記憶部は、前記プロセッサ内に設けられる各論理レジスタに対応する物理レジスタ番号を記憶するように構成され、前記物理レジスタ番号は、命令動作の前記ラインの前の前記論理レジスタに対応する、請求項5に記載のプロセッサ。
  7. 前記マップユニットは、前記複数の宛先レジスタ指定子の各々に対応する宛先物理レジスタ番号を割当てるように構成される制御ユニットをさらに含み、前記制御ユニットは、前記レジスタ走査ユニットが前記複数の仮想レジスタ番号を割当てるのと並行して前記宛先物理レジスタ番号を割当てるように構成される、請求項6に記載のプロセッサ。
  8. 前記マップユニットに結合される1つ以上の命令キューをさらに含み、前記制御ユニットはさらに、命令キュー番号を命令の前記ラインに割当てるように構成され、前記先読みレジスタ状態記憶部は、前記先読み状態記憶部に記憶される前記物理レジスタ番号によって識別される物理レジスタを更新する命令に対応する命令キュー番号を記憶するように構成され、前記仮想/物理レジスタマップユニットはさらに、前記ある特定の仮想レジスタ番号に応答してある特定の命令キュー番号を前記ある特定の発信元レジスタ番号にマッピングするように構成される、請求項7に記載のプロセッサ。
  9. 前記レジスタ走査ユニットは、複数の走査ユニットを含み、前記複数の走査ユニットの各々のものは、命令動作の前記ライン内の異なる発行位置に対応しており、前記複数の走査ユニットの前記各々のものは、前記異なる発行位置内の前記命令動作の1つに対応する前記複数の発信元レジスタ番号のうちのいくつかのものおよび前記複数の宛先レジスタ番号のうちのいくつかのものを受けるように結合される、請求項2に記載のプロセッサ。
  10. 前記複数の走査ユニットのうちの第1のものは、最初の複数の仮想レジスタ番号を受けるように構成され、前記複数の仮想レジスタ番号の各々のものは前記プロセッサによってもたらされる前記論理レジスタの異なるものに対応する、請求項9に記載のプロセッサ。
  11. 前記複数の走査ユニットのうちの前記第1のものは、前記複数の走査ユニットのうちの前記第1のものによって受取られた前記複数の宛先レジスタ番号のうちの前記1つに応答して、前記最初の複数の仮想レジスタ番号のうちの1つを、命令動作の前記ライン内の第1の発行位置を示す仮想レジスタ番号で置換して、これによって第1の出力される複数の仮想レジスタ番号を形成するように構成される、請求項10に記載のプロセッサ。
  12. 前記複数の走査ユニットのうちの第2のものは、前記複数の走査ユニットのうちの前記第2のものにより受取られる前記複数の発信元オペランドのうちの前記いくつかのものに対応する仮想レジスタ番号が選択されるところの入力される複数の仮想レジスタ番号として前記第1の出力される複数の仮想レジスタ番号を受けるように結合される、請求項11に記載のプロセッサ。
  13. 前記複数の走査ユニットは直列に結合され、前記複数の走査ユニットの各々は、前記複数の走査ユニットのうちの後のものへの入力を形成する出力される複数の仮想レジスタ番号をもたらすように結合され、かつ前記複数の走査ユニットのうちの前のものから、入力される複数の仮想レジスタ番号を受けるように結合される、請求項12に記載のプロセッサ。
  14. 前記直列結合における前記複数の走査ユニットのうちの最終のものからの前記出力される複数の仮想レジスタ番号は、前記先読みレジスタ状態記憶部のための次の仮想先読み状態を表わし、前記仮想/物理レジスタマップユニットは、前記次の仮想先読み状態に応答して前記先読みレジスタ状態記憶部において記憶するために次の先読みレジスタ状態を生成するように構成される、請求項13に記載のプロセッサ。
  15. 物理レジスタ番号を命令動作の発信元オペランドに割当てるための方法であって、
    仮想レジスタ番号を、論理レジスタ内の前記発信元オペランドを識別する発信元レジスタ番号に割当てるステップを含み、前記仮想レジスタ番号は前記物理レジスタ番号の発信元を識別しており、前記方法はさらに
    前記仮想レジスタ番号に応答して前記物理レジスタ番号を前記発信元レジスタ番号にマッピングするステップを含む、方法。
  16. 前記物理レジスタ番号の前記発信元は、(i)前記命令動作を含む命令のラインの前の前記論理レジスタに対応する第1の物理レジスタ番号を記憶する先読みレジスタ状態記憶部と、(ii)命令動作の前記ライン内の前の発行位置とのうちの1つを含む、請求項15に記載の方法。
  17. 前記仮想レジスタ番号を割当てる前記ステップと並行して、第2の物理レジスタ番号を前記前の発行位置内の命令動作の宛先レジスタに割当てるステップをさらに含む、請求項16に記載の方法。
  18. 前記割当てるステップは、複数の前の発行位置の各々を介して前記先読みレジスタ状態記憶部を識別する最初の仮想レジスタ番号を直列に走査するステップと、前記最初の仮想レジスタ番号を、前記宛先レジスタに応答して前記前の発行位置を識別する第2の仮想レジスタ番号で置換するステップとをさらに含む、請求項17に記載の方法。
  19. コンピュータシステムであって、
    複数の仮想レジスタ番号を複数の発信元レジスタ番号に割当てるように構成されるプロセッサを含み、前記複数の仮想レジスタ番号の各々のものは、前記複数の発信元レジスタ番号の異なるものに対応しており、前記複数の仮想レジスタ番号内のある特定の仮想レジスタ番号は、前記複数の発信元レジスタ番号内のある特定の発信元レジスタ番号に対応するある特定の物理レジスタ番号の発信元を識別し、前記プロセッサは、前記ある特定の仮想レジスタ番号に応答して前記ある特定の物理レジスタ番号を前記ある特定の発信元レジスタ番号にマッピングするように構成されており、前記コンピュータシステムはさらに
    前記プロセッサに結合される入出力(I/O)装置を含み、前記I/O装置は、前記コンピュータシステムと前記I/O装置が結合される第2のコンピュータシステムとの間で通信するように構成される、コンピュータシステム。
  20. 複数の仮想レジスタ番号を複数の発信元レジスタ番号に割当てるように構成される第2のプロセッサをさらに含み、前記複数の仮想レジスタ番号の各々のものは、前記複数の発信元レジスタ番号の異なるものに対応し、前記複数の仮想レジスタ番号内のある特定の仮想レジスタ番号は、前記複数の発信元レジスタ番号内のある特定の発信元レジスタ番号に対応するある特定の物理レジスタ番号の発信元を識別し、前記プロセッサは、前記ある特定の仮想レジスタ番号に応答して前記ある特定の物理レジスタ番号を前記ある特定の発信元レジスタ番号にマッピングするように構成される、請求項19に記載のコンピュータシステム。
JP2000562822A 1998-07-31 1999-01-18 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ Expired - Fee Related JP3977016B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/127,100 US6122656A (en) 1998-07-31 1998-07-31 Processor configured to map logical register numbers to physical register numbers using virtual register numbers
US09/127,100 1998-07-31
PCT/US1999/001046 WO2000007096A1 (en) 1998-07-31 1999-01-18 Processor configured to map logical register numbers to physical register numbers using virtual register numbers

Publications (3)

Publication Number Publication Date
JP2002521761A JP2002521761A (ja) 2002-07-16
JP2002521761A5 JP2002521761A5 (ja) 2006-03-02
JP3977016B2 true JP3977016B2 (ja) 2007-09-19

Family

ID=22428306

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000562822A Expired - Fee Related JP3977016B2 (ja) 1998-07-31 1999-01-18 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ

Country Status (6)

Country Link
US (2) US6122656A (ja)
EP (1) EP1099157B1 (ja)
JP (1) JP3977016B2 (ja)
KR (1) KR100592122B1 (ja)
DE (1) DE69904189T2 (ja)
WO (1) WO2000007096A1 (ja)

Families Citing this family (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6792523B1 (en) * 1995-12-19 2004-09-14 Intel Corporation Processor with instructions that operate on different data types stored in the same single logical register file
US5940859A (en) * 1995-12-19 1999-08-17 Intel Corporation Emptying packed data state during execution of packed data instructions
US6230262B1 (en) * 1998-07-31 2001-05-08 Advanced Micro Devices, Inc. Processor configured to selectively free physical registers upon retirement of instructions
US6212623B1 (en) * 1998-08-24 2001-04-03 Advanced Micro Devices, Inc. Universal dependency vector/queue entry
US6266763B1 (en) 1999-01-05 2001-07-24 Advanced Micro Devices, Inc. Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6625723B1 (en) * 1999-07-07 2003-09-23 Intel Corporation Unified renaming scheme for load and store instructions
US6594754B1 (en) * 1999-07-07 2003-07-15 Intel Corporation Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
US6505293B1 (en) 1999-07-07 2003-01-07 Intel Corporation Register renaming to optimize identical register values
US6446194B1 (en) * 1999-07-08 2002-09-03 International Business Machines Corporation Virtual register renamed instruction issue for execution upon virtual/physical rename buffer wrap around detection signaling available physical register
US6636959B1 (en) 1999-10-14 2003-10-21 Advanced Micro Devices, Inc. Predictor miss decoder updating line predictor storing instruction fetch address and alignment information upon instruction decode termination condition
US6647490B2 (en) 1999-10-14 2003-11-11 Advanced Micro Devices, Inc. Training line predictor for branch targets
US6546478B1 (en) 1999-10-14 2003-04-08 Advanced Micro Devices, Inc. Line predictor entry with location pointers and control information for corresponding instructions in a cache line
US7496734B1 (en) * 2000-04-28 2009-02-24 Stmicroelectronics, Inc. System and method for handling register dependency in a stack-based pipelined processor
US20020144091A1 (en) * 2001-04-03 2002-10-03 Larry Widigen Method and apparatus for dynamic register management in a processor
US7124331B2 (en) * 2002-05-14 2006-10-17 Sun Microsystems, Inc. Method and apparatus for providing fault-tolerance for temporary results within a CPU
US20030217249A1 (en) * 2002-05-20 2003-11-20 The Regents Of The University Of Michigan Method and apparatus for virtual register renaming to implement an out-of-order processor
US6549442B1 (en) 2002-07-25 2003-04-15 Neomagic Corp. Hardware-assisted fast bank-swap in a content-addressable-memory (CAM) processor
US7043626B1 (en) 2003-10-01 2006-05-09 Advanced Micro Devices, Inc. Retaining flag value associated with dead result data in freed rename physical register with an indicator to select set-aside register instead for renaming
US7529913B2 (en) * 2003-12-23 2009-05-05 Intel Corporation Late allocation of registers
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
US8280908B2 (en) * 2006-06-30 2012-10-02 Microsoft Corporation Merging file system directories
US8677105B2 (en) 2006-11-14 2014-03-18 Soft Machines, Inc. Parallel processing of a sequential program using hardware generated threads and their instruction groups executing on plural execution units and accessing register file segments using dependency inheritance vectors across multiple engines
US8006042B2 (en) * 2007-11-26 2011-08-23 Globalfoundries Inc. Floating point bypass retry
US7877559B2 (en) * 2007-11-26 2011-01-25 Globalfoundries Inc. Mechanism to accelerate removal of store operations from a queue
US8539397B2 (en) * 2009-06-11 2013-09-17 Advanced Micro Devices, Inc. Superscalar register-renaming for a stack-addressed architecture
US8914617B2 (en) * 2009-12-26 2014-12-16 Intel Corporation Tracking mechanism coupled to retirement in reorder buffer for indicating sharing logical registers of physical register in record indexed by logical register
EP3156896B1 (en) 2010-09-17 2020-04-08 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
KR101638225B1 (ko) 2011-03-25 2016-07-08 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 명령어 시퀀스 코드 블록의 실행
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
KR101636602B1 (ko) 2011-03-25 2016-07-05 소프트 머신즈, 인크. 분할가능한 엔진에 의해 인스턴스화된 가상 코어를 이용한 코드 블록의 실행을 지원하는 메모리 프래그먼트
KR101639854B1 (ko) 2011-05-20 2016-07-14 소프트 머신즈, 인크. 복수의 엔진에 의해 명령어 시퀀스들의 실행을 지원하기 위한 상호접속 구조
TWI666551B (zh) 2011-05-20 2019-07-21 美商英特爾股份有限公司 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行
CN104040492B (zh) * 2011-11-22 2017-02-15 索夫特机械公司 微处理器加速的代码优化器和依赖性重排序方法
WO2013077876A1 (en) 2011-11-22 2013-05-30 Soft Machines, Inc. A microprocessor accelerated code optimizer
EP2783280B1 (en) 2011-11-22 2019-09-11 Intel Corporation An accelerated code optimizer for a multiengine microprocessor
US9430243B2 (en) * 2012-04-30 2016-08-30 Apple Inc. Optimizing register initialization operations
US9996348B2 (en) * 2012-06-14 2018-06-12 Apple Inc. Zero cycle load
US9395988B2 (en) * 2013-03-08 2016-07-19 Samsung Electronics Co., Ltd. Micro-ops including packed source and destination fields
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
CN105210040B (zh) 2013-03-15 2019-04-02 英特尔公司 用于执行分组成块的多线程指令的方法
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
KR20150130510A (ko) 2013-03-15 2015-11-23 소프트 머신즈, 인크. 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9292288B2 (en) * 2013-04-11 2016-03-22 Intel Corporation Systems and methods for flag tracking in move elimination operations
EP3060978B1 (en) * 2013-10-27 2021-08-11 Advanced Micro Devices, Inc. Processor and methods for floating point register aliasing
US9329867B2 (en) * 2014-01-08 2016-05-03 Qualcomm Incorporated Register allocation for vectors
US11068271B2 (en) 2014-07-28 2021-07-20 Apple Inc. Zero cycle move using free list counts
US11200062B2 (en) 2019-08-26 2021-12-14 Apple Inc. History file for previous register mapping storage and last reference indication
US11416254B2 (en) 2019-12-05 2022-08-16 Apple Inc. Zero cycle load bypass in a decode group

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AT354159B (de) * 1975-02-10 1979-12-27 Siemens Ag Assoziativspeicher mit getrennt assoziierbaren bereichen
US4453212A (en) * 1981-07-13 1984-06-05 Burroughs Corporation Extended address generating apparatus and method
US4928223A (en) * 1982-10-06 1990-05-22 Fairchild Semiconductor Corporation Floating point microprocessor with directable two level microinstructions
US4807115A (en) * 1983-10-07 1989-02-21 Cornell Research Foundation, Inc. Instruction issuing mechanism for processors with multiple functional units
DE3751503T2 (de) * 1986-03-26 1996-05-09 Hitachi Ltd Datenprozessor in Pipelinestruktur mit der Fähigkeit mehrere Befehle parallel zu dekodieren und auszuführen.
CA1286784C (en) * 1986-08-27 1991-07-23 Joseph A. Petolino, Jr. Cache storage queue
US5067069A (en) * 1989-02-03 1991-11-19 Digital Equipment Corporation Control of multiple functional units with parallel operation in a microcoded execution unit
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
US5129067A (en) * 1989-06-06 1992-07-07 Advanced Micro Devices, Inc. Multiple instruction decoder for minimizing register port requirements
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
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
US5058048A (en) * 1990-04-02 1991-10-15 Advanced Micro Devices, Inc. Normalizing pipelined floating point processing unit
US5053631A (en) * 1990-04-02 1991-10-01 Advanced Micro Devices, Inc. Pipelined floating point processing unit
EP0459232B1 (en) * 1990-05-29 1998-12-09 National Semiconductor Corporation Partially decoded instruction cache and method therefor
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
GB9112754D0 (en) * 1991-06-13 1991-07-31 Int Computers Ltd Data processing apparatus
US5325494A (en) * 1991-06-21 1994-06-28 Kabushiki Kaisha Toshiba Computer
GB9123271D0 (en) * 1991-11-02 1991-12-18 Int Computers Ltd Data processing system
SG45269A1 (en) * 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
GB2263985B (en) * 1992-02-06 1995-06-14 Intel Corp Two stage window multiplexors for deriving variable length instructions from a stream of instructions
IE80854B1 (en) * 1993-08-26 1999-04-07 Intel Corp Processor ordering consistency for a processor performing out-of-order instruction execution
US5630149A (en) * 1993-10-18 1997-05-13 Cyrix Corporation Pipelined processor with register renaming hardware to accommodate multiple size registers
US5784589A (en) * 1993-10-18 1998-07-21 Cyrix Corporation Distributed free register tracking for register renaming using an availability tracking register associated with each stage of an execution pipeline
EP0651321B1 (en) * 1993-10-29 2001-11-14 Advanced Micro Devices, Inc. Superscalar microprocessors
US5546554A (en) * 1994-02-02 1996-08-13 Sun Microsystems, Inc. Apparatus for dynamic register management in a floating point unit
US5481693A (en) * 1994-07-20 1996-01-02 Exponential Technology, Inc. Shared register architecture for a dual-instruction-set CPU
US5675759A (en) * 1995-03-03 1997-10-07 Shebanow; Michael C. Method and apparatus for register management using issue sequence prior physical register and register association validity information
US5881305A (en) 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
EP0851343B1 (en) * 1996-12-31 2005-08-31 Metaflow Technologies, Inc. System for processing floating point operations
US5987259A (en) * 1997-06-30 1999-11-16 Sun Microsystems, Inc. Functional unit switching for the allocation of registers
US6119223A (en) 1998-07-31 2000-09-12 Advanced Micro Devices, Inc. Map unit having rapid misprediction recovery

Also Published As

Publication number Publication date
JP2002521761A (ja) 2002-07-16
KR20010053622A (ko) 2001-06-25
DE69904189D1 (de) 2003-01-09
US6247106B1 (en) 2001-06-12
WO2000007096A1 (en) 2000-02-10
KR100592122B1 (ko) 2006-06-21
US6122656A (en) 2000-09-19
EP1099157B1 (en) 2002-11-27
DE69904189T2 (de) 2003-08-21
EP1099157A1 (en) 2001-05-16

Similar Documents

Publication Publication Date Title
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
US6119223A (en) Map unit having rapid misprediction recovery
EP1116103B1 (en) Mechanism for store-to-load forwarding
EP0686914B1 (en) Resynchronisation of a superscalar processor
US5889982A (en) Method and apparatus for generating event handler vectors based on both operating mode and event type
JP3628379B2 (ja) 命令を処理するためのパイプラインを有するマイクロプロセッサ装置およびそれにおいて用いるためのプログラムカウンタ値を発生する装置
US6192465B1 (en) Using multiple decoders and a reorder queue to decode instructions out of order
JP3714992B2 (ja) 複数の動作を同時に行なうためのプロセッサ、その中のスタック、およびスタック制御方法
JP4344870B2 (ja) 特殊浮動小数点数の迅速な検出のための浮動小数点値のタグ付け
EP0957428B1 (en) Method and apparatus for fetching non-contiguous instructions in a data processing system
US5721855A (en) Method for pipeline processing of instructions by controlling access to a reorder buffer using a register file outside the reorder buffer
US5978901A (en) Floating point and multimedia unit with data type reclassification capability
EP1116102B1 (en) Method and apparatus for calculating indirect branch targets
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
KR100698493B1 (ko) 좁은 피연산자들에서 계산을 수행하는 방법 및 장치
JP2839075B2 (ja) 処理システムを動作させる方法及び処理システム
JP3866920B2 (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US6332191B1 (en) System for canceling speculatively fetched instructions following a branch mis-prediction in a microprocessor
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
US6405303B1 (en) Massively parallel decoding and execution of variable-length instructions
US6175909B1 (en) Forwarding instruction byte blocks to parallel scanning units using instruction cache associated table storing scan block boundary information for faster alignment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20060112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20060711

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20061010

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20061017

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20070620

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

Free format text: PAYMENT UNTIL: 20100629

Year of fee payment: 3

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110629

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120629

Year of fee payment: 5

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

Year of fee payment: 5

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees