JP2000515275A - 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ - Google Patents

高速命令整列ユニットを含むスーパースカラマイクロプロセッサ

Info

Publication number
JP2000515275A
JP2000515275A JP10505952A JP50595298A JP2000515275A JP 2000515275 A JP2000515275 A JP 2000515275A JP 10505952 A JP10505952 A JP 10505952A JP 50595298 A JP50595298 A JP 50595298A JP 2000515275 A JP2000515275 A JP 2000515275A
Authority
JP
Japan
Prior art keywords
instruction
unit
bytes
channeling
byte
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.)
Pending
Application number
JP10505952A
Other languages
English (en)
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 JP2000515275A publication Critical patent/JP2000515275A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3816Instruction alignment, e.g. cache line crossing
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • G06F9/30152Determining start or end of instruction; determining instruction length
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags

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)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 命令整列ユニット、命令キャッシュ、複数のデコードユニットおよびプリデコードユニットを有するスーパースカラマイクロプロセッサが提供される。命令整列ユニットは命令キャッシュから固定数の命令を複数のデコードユニットの各々に転送する。命令はプリデコードユニットによってもたらされたプリデコードタグに従って複数バイトから選択される。プリデコードタグは複数バイトのうちいずれのバイトが命令の第1のバイトであるかを示ず開始バイトビットを含む。命令整列ユニットは複数のグループの命令バイトを個別にスキャンし、複数の発行位置の各々に関する開始バイトおよび複数の連続バイトを選択する。命令整列ユニットはまず、複数のグルーブの命令の各々に関する発行位置のグループを選択する。次に、命令整列ユニットは個別にもたらされた発行位置をシフトしてマージし、最終組の発行位置をもたらし、複数のデコードユニットに転送する。

Description

【発明の詳細な説明】 名称:高速命令整列ユニットを含むスーパースカラマイクロプロセッサ 発明の背景 1.発明の分野 この発明はスーパースカラマイクロプロセッサに関し、特に、可変バイト長の 命令をスーパースカラマイクロプロセッサ内の複数個の命令デコードユニットへ とディスパッチするための高速命令整列ユニットに関する。 2.関連技術の説明 スーパースカラマイクロプロセッサは、多命令の並列実行を可能にすることに よって従来のスカラプロセッサをしのぐ性能を達成することができる。x86系 マイクロプロセッサが広く受入れられているために、マイクロプロセッサ製造業 者はx86命令を実行するスーパースカラマイクロプロセッサを開発する努力を 行なっている。このようなスーパースカラマイクロプロセッサは、比較的高い性 能を達成しつつ、8086、80286、80386および80486のような 前世代のマイクロプロセッサのために開発された非常に多量の既存のソフトウェ アとの旧版互換性を有利に保つ。 x86命令セットは比較的複雑であり、複数個の可変バイト長命令によって特 徴付けられる。x86命令セットを示す一般的なフォーマットが図1に示される 。図に示すように、x86命令は1個から5個のオプションのプリフィックスバ イト102と、それに続くオペレーションコード(opcoad)フィールド104と 、オプションのアドレスモード(Mod R/M)バイト106と、オプション のスケールーインデックスーベース(SIB)バイト108と、オプションの変 位フィールド110と、オプションの即値データ112とからなる。 opcoadフィールド104はある特定の命令のための基本動作を規定する。ある 特定のopcoadのデフォルト動作は1または2以上のプリフィックスバイトによっ て変更され得る。たとえば、プリフィックスバイトは、命令のためのアドレスま たはオペランドサイズを変更し、メモリアドレスにおいて用いられるデフォ ルトセグメントをオーバライドし、または、一続きの動作を何回か繰返すように プロセッサに命令するために用いられ得る。opcoadフィールド104にはもしあ ればプリフィックスバイト102が従い、opcoadフィールド104は1バイトま たは2バイトの長さであり得る。アドレスモード(Mod R/M)バイト10 6は使用されるレジスタおよびメモリアドレスモードを特定する。スケール−イ ンデックス−ベース(SIB)バイト108はスケール係数およびインデックス 係数を用いる32ビットのベース相対アドレシングにおいてのみ用いられる。S IBバイトのベースフィールドはどのレジスタがアドレス計算のための基底値を 含むかを特定し、インデックスフィールドはどのレジスタがインデックス値を含 むかを特定する。スケールフィールドは、インデックス値フィールドがどの変位 とも共に基底値に付加される前にそれによって乗算される2の累乗を特定する。 次の命令フィールドはオプションの変位フィールド110であり、これは1バイ トから4バイトの長さであり得る。変位フィールド110はアドレス計算におい て用いられる定数を含む。オプションの即値フィールド112もまた1バイトか ら4バイトの長さであってもよく、命令オペランドとして用いられる定数を含む 。最短のx86命令はわずか1バイトの長さであり、単一のopcoadバイトを含む 。80286は命令のための最大長を10バイトに設定するが、80386およ び30486は共に15バイトまでの命令長を可能にする。 x86命令セットが複雑であるために高性能なx86互換スーパースカラマイ クロプロセッサの実現が困難になる。難点の1つは、適切なデコードが実行され 得るまでにこのようなプロセッサの並列接続命令デコーダに対して命令が整列さ せられなければならないという事実から生じる。ほとんどのRISC命令フォー マットとは対照的に、x86命令セットが可変バイト長の命令からなるので、1 ライン内の連続的な命令の開始バイトが必ずしも等しく間隔をあけられず、1ラ イン当りの命令の数が固定されない。結果として、簡潔で固定した長さのシフト ロジックの採用はそれ自体では命令整列の問題を解決できない。スキャンロジッ クがプロセッサの単数(複数)のデコードパイプライン段の間に命令の境界を動 的およびシーケンシャルに求めるために提案されているが、このような解決法は 一般に、プロセッサのデコードパイプライン段が、スキャン動作を行なうために 比較的多数のカスケード接続された論理ゲートのレベルおよび/または数クロッ クサイクルの割当てを伴って実現されることを必要とする。 x86互換スーパースカラマイクロプロセッサ内の命令整列およびデコードに 対するさらなる解決法が、同時係属中であり、共通の譲受人に譲渡された特許出 願、すなわち、ウイット他(witt et al.)により1993年10月29日に出 願され、その開示全体が引用によりここに援用される連続番号第08/146, 383号「スーパースカラ命令デコーダ」(“Supersca1ar Instruction Decoder ”)内に説明されている。このような解決法は、命令が命令キャッシュ内にスト アされるときに各可変バイト長命令のためのプリデコード情報が引出されるプリ デコード技術を用いる。プリデコード情報は特に各命令の境界を示す。プロセッ サのデコード段にディスパッチする前に、(バイトキューと称される)整列機構 がシーケンシャルに各命令を配置する。命令を配置する際、整列機構は命令を「 ROP」と称される1以上の固定長のRISC的命令に変換する。次にこれら固 定長のROPが割当てられた命令デコーダへと与えられる。後の命令も同様に扱 われる。この解決法はかなり成功しているが、これもまた一般にカスケード接続 された比論理ゲートの比較的多数のレベルおよび/またはパイプライン段を必要 とする。これはしたがってスーパースカラマイクロプロセッサの最大の全体クロ ック周波数および性能を制限する。 発明の概要 上に概要を述べた問題はこの発明に従うスーパースカラマイクロプロセッサに よって大部分が解決される。ある実施例においては、スーパースカラマイクロプ ロセッサは固定数のバイトを命令キャッシュから複数個のデコードユニットの各 々に転送する命令整列ユニットを用いる。これらバイトは、プリデコードユニッ トによって発生されるプリデコードタグに従って、予め定められたバイトグルー プから選択される。プリデコードタグ(各バイトに異なる1つが関連付けられる )は予め定められたグループ内のどのバイトが命令のための開始バイトであるか を示す。ある具体的な実施例において、命令整列ユニットは8バイトの連続する 命令コードの3つの異なったグループの中で開始バイトを同時に独立して検出 する。命令コードの各グループ内で予め定められた数の開始バイトを独立して求 めると、命令整列ユニットは開始バイトを各開始バイトに従う隣接した7バイト と共に各グループに関連したそれぞれの「仮の」発行チャネルへと独立して送る 。仮の発行チャネルは次に上述の複数個のデコードユニットと結合される1組の 「最終的な」発行チャネルへとシフトおよび/またはマージされる。 別の実施例において、命令バイトのグループが1対の命令チャネリングユニッ トへと転送されるスーパースカラマイクロプロセッサが提供されろ。命令チャネ リングユニットは独立して命令バイトから最大4バイトまでの開始バイトを選択 し、選択された開始バイトと、開始バイトに隣接し、かつその後に続く多数のバ イトとを仮の発行位置に配置する。2組の仮の発行位置を通してチャネリングさ れた命令バイトは次に、第1の命令チャネリングユニットの発行位置内に含まれ る有効命令の数の表示と共に、第3の命令チャネリングユニットへと転送される 。第2の命令チャネリングユニットによって転送された発行位置は次に、第1の 命令チャネリングユニットによって表示された有効命令の数だけシフトされる。 次に、最終的な発行位置が第1の命令チャネリングユニットからの発行位置にお いて転送される対応する有効命令から選択される。残りの最終的な発行位置はい ずれも第2のチャネリングユニットからのシフトされた組の発行位置の対応の発 行位置から選択される。最終的な発行位置が1組のデコードユニットに結合され 、これは命令をデコードし、それらを実行のために機能ユニットへとディスパッ チする。 別の実施例においては、命令整列ユニットが選択するバイト数は24であり、 その最後の8バイトは前にフェッチされた命令キャッシュラインのものであり、 16バイトは現在の命令キャッシュラインのものであるスーパースカラマイクロ プロセッサが提供される。開始バイトがディスパッチのために選択されるとき、 対応の開始ビットは無効にされる。この実施例において、1クロックサイクル当 り4つまでの命令がディスパッチされ得る。前にフェッチされたキャッシュライ ンの最後の8バイトと現在のキャッシュラインの最初の8バイトとが有効開始バ イトを含まない場合、現在のキャッシュラインが前にフェッチされた命令キャッ シュライン位置へと移動され、次の命令キャッシュがフェッチされる。 各8バイト部分が開始バイトを見つけるため独立して調べられ、見つけられた 開始バイトおよびその後の7バイトが発行位置に割当てられる。第1のレベルの 多重化がこれを達成するために実装される。3組の発行グループ(ここでは、前 のキャッシュラインの最後の8バイトに対しては発行グループ1、現在のキャッ シュラインの最初の8バイトに対しては発行グループ2と、現在のキャッシュラ インの最後の8バイトに対しては発行グループ3と呼ぶ)が次に第2のレベルの 多重化へと導かれる。このレベルで、発行グループ1に含まれる有効命令の数だ け発行グループ2をシフトすることによって発行グループ1および発行グループ 2がマージされる。発行グループ3における命令もまたこのレベルでの発行グル ープ1内の有効命令の数だけシフトされる。マージおよびシフトされた発行グル ープは次に第3のレベルの多重化へと導かれる。前にシフトされた発行グループ 3はさらに発行グループ2に含まれる有効命令の数だけシフトされる。二重にシ フトされた発行グループ3は次に前にマージされた発行グループ1および2とマ ージされる。結果として生じる発行グループは命令デコードユニットへと転送さ れ、転送された命令に対する対応の開始ビットがリセットされる。第3の多重化 レベルにはMROMユニットおよびプリデコードユニットからの入力も含まれる 。 この発明に従うスーパースカラマイクロプロセッサは命令整列ユニットを用い ることができる。命令整列ユニットは、開始バイトを見つけるために同時にバイ トのいくつかの小さいフィールドをスキャンし、次に、小さいフィールド内に見 つけられた開始バイトの数だけ、見つけれた命令を独立してシフトすることによ って、少数のカスケード接続されたゲートで実現され得る。計算値を組合せるこ とは必要ではなく、実装がさらに速やかとなる。 概して、この発明は、命令キャッシュと、複数個のデコードユニットと、第1 、第2および第3の命令チャネリングユニットを含む命令整列ユニットとを用い るスーパースカラマイクロプロセッサを目指している。第1および第2の命令チ ャネリングユニットは入力ポートに結合される。入力ポートは命令キャッシュか らの命令バイトの複数個のグループを含む。第1の命令チャネリングユニットは 第1の複数個の命令バイトを選択し、第2の命令チャネリングユニットはディス パッチのために複数個のグループの命令から第2の複数個の命令バイトを選択す る。 第1の複数個の命令バイトは次に第3の命令チャネルリングユニットによって第 2の複数個の命令バイトとマージされ、マージされた複数個の命令バイトを形成 する。このマージされた複数個の命令バイトは次に出力ポートを介して複数個の 命令デコードユニットへとディスパッチされる。 図面の簡単な説明 この発明の他の目的および利点は、以下の詳細な説明を読み、添付の図面を参 照することによって明らかとなるであろう。 図1は、一般的なx86命令フォーマットのブロック図である。 図2は、この発明に従う命令整列ユニットを含むスーパースカラマイクロプロ セッサのブロック図である。 図3Aは、この発明に従う命令整列ユニットの1つの実施例のブロック図であ る。 図3Bは、この発明に従う命令整列ユニットの別の実施例の図であり、第1の レベルの多重化への開始バイトの接続のみを示す。 図4は、隣接した15命令バイトと、15命令バイトの組内の隣接した8バイ トを選択するために必要な多重化接続とを示す図である。 この発明はさまざまに変更され、代替的な形をとり得るが、その具体的な実施 例は例としてのみ示され、ここに詳細に説明される。しかしながら、その図面お よび詳細な説明はこの発明を開示される特定の形態に限定せず、逆に、添付の請 求項によって規定されるようなこの発明の趣旨および範疇内に含まれるすべての 変更、均等物および代替例に及ぶことが理解されるべきである。 発明の詳細な説明 ここで図2を参照すると、この発明に従う命令整列ユニット206を含んだス ーパースカラマイクロプロセッサ200のブロック図が示される。図2の実施例 に示すように、スーパースカラマイクロプロセッサ200はプリフェッチ/プリ デコードユニット202と命令キャッシュ204に結合された分岐予測ユニット 220とを含む。命令整列ユニット206は命令キャッシュ204と(デコード ユニット208と総称される)複数個のデコードユニット208A−208Dと の間に結合される。デコードユニット208A−208Dの各々は(リザベーシ ョンステーション210と総称される)それぞれのリザベーションステーション ユニット210A−210Dに結合され、リザベーションステーション210A −210Dの各々は(機能ユニット212と総称される)それぞれの機能ユニッ ト212A−212Dに結合される。デコードユニット208、リザベーション ステーション210および機能ユニット212はリオーダバッファ216、レジ スタファイル218およびロード/ストアユニット222にさらに結合される。 データキャッシュ224は最後にロード/ストアユニット222に結合されて示 され、MROMユニット209は命令整列ユニット206に結合されて示される 。 概して、命令キャッシュ204はデコードユニット208へのディスパッチの 前に命令を一時的にストアするために設けられる高速キャッシュメモリである。 1つの実施例では、命令キャッシュ204が最大で32キロバイトの、各々が1 6バイトのラインで編成される(ここで各バイトは8ビットからなる)、命令コ ードをキャッシュするように構成される。動作の間、命令コードはメインメモリ (図示せず)からプリフェッチ/プリデコードユニット202を介してコードを プリフェッチすることによって命令キャッシュ204に与えられる。命令キャッ シュ204がセットアソシアティブ構成、フルアソシアティブ構成またはダイレ クトマップ構成に実現され得ることに注目されたい。 プリフェッチ/プリデコードユニット202はメインメモリから命令コードを プリフェッチして命令キャッシュ204内にストアするために設けられる。1つ の実施例では、プリフェッチ/プリデコードユニット202はメインメモリから 命令キャッシュ204へと64ビット幅のコードをバーストするように構成され る。さまざまな具体的なコードプリフェッチ技術およびアルゴリズムがプリフェ ッチ/プリデコードユニット202によって用いられ得ることが理解される。 プリフェッチ/プリデコードユニット202がメインメモリから命令をフェッ チするとき、これは命令コードの各バイトに関連した3つのプリデコードビット 、すなわち、開始ビット、終了ビットおよび「機能」ビットを発生する。プリデ コードビットは各命令の境界を示すタグを形成する。以下により詳細に説明する よ うに、プリデコードタグはまた、所与の命令がデコードユニット208によって 直接的にデコードされ得るか、または命令がMROMユニット209によって制 御されるマイクロコード手順を起動することによって実行されなければならない かのような付加的な情報を伝えることができる。 表1はプリデコードタグのエンコード一例を示ず。表に示すように、所与のバ イトが命令の最初のバイトであれば、そのバイトの開始ビットがセットされる。 そのバイトが命令の最後のバイトであれば、そのバイトの終了ビットがセットさ れる。ある特定の命令がデコードユニット208によって直接デコードできなけ れば、その命令の最初のビットに関連した機能ビットがセットされる。他方、そ の命令がデコードユニット208によって直接デコードできれば、その命令の最 初のビットに関連した機能ビットがクリアされる。ある特定の命令の2番目のバ イトのための機能ビットは、opcoadが第1のバイトである場合にクリアされ、op coadが第2のバイトである場合にセットされる。opcoadが第2のバイトである状 況では最初のバイトがプリフィックスバイトであることに注目される。命令バイ ト番号3−8に対する機能ビット値は、そのバイトがMODRNバイトまたはS IBバイトであるか、またはそのバイトが変位データまたは即値データを含むか を示す。 表1 開始ビット、終了ビットおよび機能ビットのエンコード 上述のように、1つの実施例ではx86命令セット内のある命令がデコードユ ニット208によって直接デコードされ得る。これらの命令は「ファストパス」 命令と称される。x86命令セットの残りの命令は「MROM命令」と称される 。MROM命令はMROMユニット209を起動することによって実行される。 より具体的には、MROM命令に遭遇すると、MROMユニット209はその命 令を規定されたファストパス命令のサブセットへと構文解析し、逐次化して所望 の動作を実行する。ファストパス命令として分類される例示的なx86命令の例 と、ファストパス命令およびMROM命令の両方を扱う方法の説明とが以下に示 される。 可変バイト長命令を命令キャッシュ204からデコードユニット208A−2 08Dによって形成される固定した発行位置へとチャネリングするために命令整 列ユニット206が設けられている。図2−4に関連して説明するように、命令 整列ユニット206は指定されたデコードユニット208A−208Dに命令バ イトをチャネリングするように構成される。命令整列ユニット206は独立して かつ並行して、命令キャッシュ204によって与えられる3つのグループの命令 バイトから命令を選択し、これらのバイトを3つのグループの仮の発行位置へと 配列する。発行位置の各グループは3つのグループの命令バイトの1つと関連付 けられる。仮の発行位置は次に共にマージされて最終的な発行位置を形成し、そ の各々がデコードユニット208の1つに結合される。 命令キャッシュ204からデコードユニット208への命令整列の詳細な説明 を行なう前に、図2の例示的なスーパースカラマイクロプロセッサ200内で用 いられる他のサブシステムに関した一般的な局面を説明する。図2の実施例では 、デコードユニット208の各々が上述の予め定められたファストパス命令をデ コードするためのデコード回路を含む。さらに、各デコードユニット208A− 208Dが変位データおよび即値データを対応のリザベーションステーションユ ニット210A−210Dへと経路付ける。デコードユニット208からの出力 信号は機能ユニット212のためのビット−エンコード実行命令と、オペランド アドレス情報と、即値データおよび/または変位データとを含む。 図2のスーパースカラマイクロプロセッサは追越し実行を支持し、したがって 、レジスタの読出動作および書込動作のためのもともとのプログラムシーケンス を 守るために、レジスタのリネームを実現するために、投機的な命令実行および分 岐予測の誤りからの回復を行なうために、そして正確な例外を容易にするために 、リオーダバッファ216を含む。当業者には認識されるように、リオーダバッ ファ216内の一時的な記憶場所はレジスタの更新を含む命令のデコード時に予 約されてそれによって投機的なレジスタの状態をストアする。リオーダバッファ 216は先入れ先出し構成に実現でき、ここで、投機的な結果は有効にされレジ スタファイルに書込まれるときバッファの「最後部」に移動し、こうしてバッフ ァの「頭部」に新たなエントリのための余地を与える。リオーダバッファ216 の他の具体的な構成も以下にさらに説明するように可能である。分岐予測が正確 でなければ、予測誤り経路に沿う投機的に実行された命令の結果がレジスタファ イル218に書込まれる前にバッファにおいて無効にされ得る。 デコードユニット208A−208Dの出力で与えられるビット−エンコード 実行命令および即値データはそれぞれのリザベーションステーションユニット2 10A−210Dへと直接経路付け(route)られる。1つの実施例では、各リ ザベーションステーションユニット210A−210Dが、対応の機能ユニット への発行を待つ3つまでの未決(pending)命令に対して命令情報(すなわち、 ビットエンコード化実行ビットならびにオペランド値、オペランドタグおよび/ または即値データ)を保持することができる。図2の実施例では、各デコードユ ニット208A−208Dが専用のリザベーションステーションユニット210 A−210Dと関連付けられ、各リザベーションステーションユニット210A −210Dが専用の機能ユニット212A−212Dに同様に関連付けられるこ とが注目される。したがって、4つの専用の「発行位置」がデコードユニット2 08、リザベーションステーションユニット210および機能ユニット212に よって形成される。デコードユニット208Aを介して整列させられ、発行位置 0にディスパッチされた命令がリザベーションステーションユニット210Aに 送られ、続いて実行のために機能ユニット212Aに送られる。同様に、デコー ドユニット208Bに整列させられ、ディスパッチされた命令がリザベーション ステーションユニット210B、機能ユニット212Bに送られ、以下同様であ る。 ある特定の命令のデコード時に、要求されたオペランドがレジスタ場所であれ ばレジスタアドレス情報が同時にリオーダバッファ216およびレジスタファイ ル218へと経路付けられる。当業者はx86レジスタファイルが8個の32ビ ットリアルレジスタ(すなわち、典型的にはEAX、EBX、ECX、EDX、 EBP、ESI、EDIおよびESPと称される)を含むことを認識するであろ う。リオーダバッファ216はこれらのレジスタの内容を変更する結果のための 一時的な記憶場所を含み、それによって追越し実行を可能にする。リオーダバッ ファ216の一時的な記憶場所は各命令に対して予約されており、これはデコー ド時にリアルレジスタの1つの内容を変更する。したがって、特定のプログラム の実行中のさまざまな点で、リオーダバッファ216は所与のレジスタの投機的 に実行された内容を含む1または2以上の場所を含み得る。所与の命令のデコー ドに続いて、リオーダバッファ216が所与の命令におけるオペランドとして用 いられるレジスタに割当てられた前の単数または複数の場所を有すると判断され れば、リオーダバッファ216は対応のリザベーションステーションに、1)最 も最近に割当てられた場所の値か、2)最終的に前の命令を実施する機能ユニッ トによって値がまだ生み出されていなければ最も最近に割当てられた場所のため のタグを送る。リオーダバッファが所与のレジスタのために予約された場所を有 していれば、オペランド値(またはタグ)がレジスタファイル218ではなくリ オーダバッファ216から与えられる。リオーダバッファ216に要求されるレ ジスタのために予約された場所がなければ、その値はレジスタファイル218か ら直接取出される。オペランドがメモリ場所に対応すれば、オペランド値がロー ド/ストアユニット222を介してリザベーションステーションユニットへと与 えられる。 適切なリオーダバッファの実現に関する詳細は、マイク・ジョンソン(Mike J ohnson)による出版物「スーパースカラマイクロプロセッサ設計」(“Supersca lar Microprocessor Design”)、Prentice-Hall,Englewood Cliffs,New Jersey ,1991と、同時係属中であり、共通に譲渡された特許出願、すなわち、ウイット 他(witt,etal.)によって1993年10月29日に出願された連続番号第0 8/146,382号「高性能スーパースカラマイクロプロ セッサ」(“High Performance Superscalar Microprocessor”)とに見られる 。これらの文書は引用によりその全体をここに援用する。 リザベーションステーションユニット210A−210Dは対応の機能ユニッ ト212A−212Dによって投機的に実行されるべき命令情報を一時的にスト アするために設けられる。上述のように、各リザベーションステーションユニッ ト210A−210Dが3つまでの未決命令について命令情報をストアできる。 4つの命令ステーション210A−210Dの各々が対応の機能ユニットによっ て投機的に実行されるべきビットエンコード化実行命令とオペランドの値とをス トアするための場所を含む。特定のオペランドが利用可能でなければ、そのオペ ランドのためのタグがリオーダバッファ216から与えられ、結果が発生される (すなわち、前の命令の実行を完了することによって)まで対応のリザベーショ ンステーション内にストアされる。命令が機能ユニット212A−212Dの1 つによって実行されるとき、その命令の結果がその結果を待っているリザベーシ ョンステーションユニット210A−210Dへと直接渡され、同時にその結果 がリオーダバッファ216を更新するために送られることに注目される(この技 術は通常「結果フォワーディング」と称される)。命令は、いずれかの要求され るオペランドの値が利用可能とされた後に実行のために機能ユニットへと発行さ れる。すなわち、リザベーションステーションユニット210A−210Dの1 つの中の未決命令と関連したオペランドが、要求されるオペランドを変更する命 令に対応するリオーダバッファ216内の前の結果値の場所のタグを付けられて いれば、前の命令のためのオペランド結果が得られるまで命令は対応の機能ユニ ット212に発行されない。したがって、命令が実行される順序は元のプログラ ム命令シーケンスの順序とは同じではないかもしれない。リオーダバッファ21 6は書込後読出の依存が起こる状況でデータの一貫性が維持されることを確実と する。 1つの実施例では、機能ユニット212の各々が加算および減算の整数算術演 算ならびにシフト、回転、論理演算および分岐演算を行なうように構成される。 浮動小数点に対処するために浮動小数点ユニット(図示せず)も用いられ得るこ とに注目される。 機能ユニット212の各々はまた条件付分岐命令の実行に関する情報を分岐予 測ユニット220に与える。分岐予測が正確でなければ、分岐予測ユニット22 0は予測誤り分岐に後の命令処理パイプラインに入っている命令をフラッシュし 、プリフェッチ/プリデコードユニット202に必要とされる命令を命令キャッ シュ204またはメインメモリからフェッチさせる。このような状況では、投機 的に実行され、ロード/ストアユニット222およびリオーダバッファ216に 一時的に記憶されたものを含め、予測誤り分岐命令の後に生じる、元のプログラ ムシーケンスが廃棄されることに注目される。適切な分岐予測機構の例示的構成 は周知である。 機能ユニット212によって生じる結果は、レジスタ値が更新されていればリ オーダバッファ216に送られ、メモリ場所の内容が変更されていればロード/ ストアユニット222に送られる。結果がレジスタに記憶されるべきであれば、 リオーダバッファ216は命令がデコードされたときのレジスタの値のために予 約された場所に結果をストアする。上述のように、結果は、未決命令が要求され るオペランド値を得るために前の命令実行の結果を待っている場合、リザベーシ ョンステーションユニット210A−210Dにブロードキャストされる。 一般に、ロード/ストアユニット222は機能ユニット212A−212Dと データキャッシュ224との間にインターフェイスを与える。1つの実施例では 、ロード/ストアユニット222は未決のロードまたはストアのためのデータお よびアドレス情報に対する8つの記憶場所を有するストアバッファを伴って構成 される。機能ユニット212はロード/ストアユニット222へのアクセスの調 停を行なう。バッファが一杯であれば(full)、機能ユニットはロード/ストア ユニット222が未決のロードまたはストア要求情報のためのあきを有するよう になるまで待たなければならない。ロード/ストアユニット222はまた未決の ストア情報に対してロード命令のための依存性チェックを行なって、データの一 貫性が保たれることを確実とする。 データキャッシュ224は、ロード/ストアユニット222とメインメモリサ ブシステムとの間で転送されるデータを一時的にストアするために与えられる高 速キャッシュメモリである。1つの実施例では、データキャッシュ224は8キ ロバイトまでのデータをストアする容量を有する。データキャッシュ224がセ ットアソシアティブ構成を含むさまざまな具体的メモリ構成で実現され得ること が理解される。 命令キャッシュ204から命令整列ユニット206を介してデコードユニット 208に至る命令のディスパッチに関する詳細を以下に検討する。図3Aは、命 令整列ユニット206の一実施例の内部とデコードユニット208への入力レジ スタとを示すブロック図である。この実施例は(命令バイトバス250と総称さ れる)2つの命令バイトバス250Aおよび250Bを用いて構成される。命令 バイトは命令キャッシュ204によって命令バイトバス250上に出力され、各 命令バイトバスは8バイトを転送する。命令バイトバス250Aは命令チャネリ ングユニット251に結合され、命令バイトバス250Bは命令チャネリングユ ニット252に結合される。図3Aには、プリデコードタグバス254上の入力 情報を受取り、制御出力バス256、257および258を有する制御ユニ25 5も示される。制御出力バス256は命令チャネリングユニット252に結合さ れる。同様に、制御出力バス257は命令チャネリングユニット251に結合さ れ、制御出力バス258は命令チャネリングユニット253に結合される。命令 チャネリングユニット251は4つの仮の発行位置、すなわち、仮の発行位置A 、仮の発行位置B、仮の発行位置C、仮の発行位置Dを生じる。同様に、命令チ ャネリングユニット252は仮の発行位置A'、仮の発行位置B'、発行位置C' および仮の発行位置D'を生じる。発行位置A−DおよびA'−D'の各々は命令 チャネリングユニット253に結合される。命令チャネリングユニット253は 4つの最終的な発行位置267,268,269および270を生じ、これらは デコードユニット208A、208B、208Cおよび208Dにそれぞれ結合 される。この実施例では、仮の発行位置または最終的な発行位置が最大で1つの 有効命令を伝え、有効命令を含む固定数のバイトを伝える。 一般に、命令チャネリングユニット251および252は独立してかつ並行し てそれぞれ命令バイトバス250Aおよび250Bから命令を選択する。選択さ れた命令は命令チャネリングユニット251および252に接続された仮の発行 位置を占める。命令チャネリングユニット253は仮の発行位置A−Dにおいて 伝えられる命令数だけ仮の発行位置A'−D'において伝えられる命令をシフトす る。命令チャネリングユニット253は次に2組の仮の発行位置からの命令を最 終的な発行位置267−270へとマージする。命令選択およびシフティングプ ロセスは以下の段落でより詳細に説明される。 この実施例では、制御ユニット255が命令バイトバス250上で転送される 命令バイトと関連した開始バイトビットを(バス254によって)受取る。制御 ユニット255は命令バイトバス250Aのために開始バイト情報をスキャンし 、セットされた開始バイトを探す。開始バイトビットがセットされていると、命 令バイトバス250A上の対応のバイトが命令の始まりである。制御ユニット2 55は(制御出力バス257上の信号によって)、入力命令バイトバス250A 上の対応のバイトとそれに続く7バイトとを選択するように命令チャネリングユ ニット251に指示する。選択されたバイトが次の利用可能な仮の発行位置を占 める。仮の発行位置Aが最初に使われ、次に仮の発行位置Bが続き、以下同様で ある。制御ユニット255は、命令チャネリングユニット251の発行位置が占 められるか命令バイトバス250Aに関連した開始バイトビットがなくなるまで 、命令バイトバス250Aに関連した開始バイトビットをスキャンし続ける。同 様に、並行して、制御ユニット255は命令バイトバス250Bに関連した開始 バイトビットを処理し、制御出力バス256上で命令チャネリングユニット25 2へと発行位置選択情報を伝える。 図3Aの実施例では、命令バイトビット250A上で転送される命令が命令バ イトバス250B上で転送される命令よりも優先される。したがって、仮の発行 位置A−Dにおいて伝えられる有効命令が制御ユニット255の指示のもと命令 チャネリングユニット253によって最終的な発行位置267−270へと向け られる。有効命令を伝えるとき、仮の発行位置Aは発行位置267に向けられる 。同様に、仮の発行位置Bは有効命令を伝えるときに発行位置268に向けられ 、以下同様である。さらに、命令チャネリングユニット253は命令チャネリン グユニット251によって選択される有効命令の数(すなわち、発行位置A−D において伝えられる有効命令の数)だけ仮の発行位置A'−D'をシフトする。そ の後、シフトされた仮の発行位置は仮の発行位置A−Dからの命令で占められて いなかったこれらの最終的な発行位置267−270を占める。したがって、デ コードユニット208は命令バイトバス250内で配置され得る最大数の命令( 4まで)を受取る。 この実施例の動作を例を用いてさらに説明する。命令バイトバス250Aがあ るクロックサイクルで2つの有効命令を転送し、命令バイトバス250Bもまた 同じクロックサイクルで2つの有効命令を転送すると仮定する。制御ユニット2 55の指示の下、命令チャネリングユニット251は命令バイトバス250Aか ら最初の開始バイトとそれに続く7バイトとを選択し、選択されたバイトを仮の 発行位置Aに与える。制御ユニット255は次に命令バイトバス250Aの第2 の開始バイトを検出し、第2の開始バイトとそれに続く7バイトとが仮の発行位 置Bを占めるように命令チャネリングユニット251に指示を出す。独立してか つ上と並行して、制御ユニット255が命令バイトバス250B上に与えられた 命令バイトと関連した開始バイトビットをスキャンし、第1の開始バイトを検出 する。検出された開始バイトとそれに続く7バイトとが仮の発行位置A'を占め る。スキャンプロセスを続け、制御ユニット255は命令バイトバス250B上 で伝えられる第2の開始バイトを検出する。第2の開始バイトとそれに続く7バ イトとが命令チャネリングユニット252によって仮の発行位置B'へと選択さ れる。なお制御ユニット255のスキャン機構もまた仮の発行位置C'およびD' に送られる命令バイトバス250B上の後の命令を見つけることができる。しか しながら、上から明らかであるように、発行位置C'およびD'は命令チャネリン グユニット253によって実質的に無視されるであろう。 次に、制御ユニット255は制御出力258によって命令チャネリングユニッ ト253に指示する。2つの有効命令が仮の発行位置A−Bに存在するので、仮 の発行位置Aおよび仮の発行位置Bがそれぞれ最終的な発行位置267および2 68を占める。また、2つの有効命令が命令チャネリングユニット251におい て選択されたので、仮の発行位置A'−D'が2つ分位置をシフトされる。このシ フトによって、発行位置A'において伝えられる命令が最終的な発行位置269 と整列させられる。同様に、発行位置B'が最終的な発行位置270と整列させ られる。したがって、もともとは仮の発行位置A'およびB'におけるもので ある2つの有効命令がそれぞれ発行位置269および270を占めろ。デコード ユニット208の各々がこのサイクルで命令を受取る。 別の実施例では、命令チャネリングユニット251および252の出力で1つ の仮の発行位置を占めるように選択されたバイトが別の仮の発行位置を占めるよ うに選択されたバイトと重複する。仮の発行位置または最終的な発行位置を占め るバイト数は固定されており、いくつかの命令は発行位置内のバイト数全部を占 めることができないかも知れない。したがって、後続の命令の開始バイトと恐ら くは他のバイトとが現在の命令位置内のバイト位置を占める。デコードユニット 208の各々がデコードユニットに転送された命令と関連した開始バイトおよび 終了バイトビットを受取る。デコードユニット208は転送されたどのバイトが 完全な有効命令を含むかを判断するために開始バイトビットおよび終了バイトビ ットを検出する。 他の実施例では、異なった数の発行位置およびデコードユニットを用いること ができることは言うまでもない。図3Aと関連して説明される実施例は少数のカ スケード接続された論理レベルで実現でき、したがってこの実施例は高速で動作 が可能となる。この実施例はさまざまな理由のため少数のカスケード接続された 論理レベルで実現できる。第1に、命令バイトバス250上を転送される多数の 命令が互いに独立した小さいグループごとに処理される。この多数の命令と関連 した開始ビット情報中を線形的にスキャンする代わりに小さいグループが並行に 処理され得る。第2に、小さいグループがそのうちの1つで見つけられた有効命 令の数に基づいて共に組合せられる(この実施例では命令バイトバス250A) 。 ここで図3Bを参照すると、命令整列ユニット206の別の実施例が示される 。この実施例の命令チャネリングユニットはマルチプレクサを含み、マルチプレ クサ制御バス311、312および313を介して出力制御ユニット302によ って制御される。(ここでは命令バイトバス300と総称される)3つの命令バ イトバス300A、300Bおよび300Cがさらに示される。命令バイトバス 300Aは「前に」フェッチされた命令キャッシュラインから最後の8命令バイ トバスを伝える。入力命令バイトバス300Bは「最も最近の」命令キャッシュ ラインの最初の8バイトを伝え、命令バイトバス300Cは「最も最近の」命令 キ ャッシュラインの最後の8バイトを伝える。前にフェッチされたキャッシュの最 後の8バイトと最も最近のキャッシュラインの最初の8バイトとからの命令がデ コードユニット208に転送されると、最も最近のキャッシュラインの最後の8 バイトが前にフェッチされた命令キャッシュラインの最後の8バイトへと(すな わち、命令バイトバス300Aへと)移動され、新しいキャッシュラインがフェ ッチされる(そして、命令バイトバス300Bおよび300C上を伝えられる) 。 図3Bを参照すると、入力命令バイトバス300と第1のレベルのマルチプレ クサ301A、301B、301C、301D、304A、304B、304C 、304D、305A、305B、305Cおよび305D(それぞれマルチプ レクサ301,304および305と総称される)との間の信号経路が示される 。2つの第1のレベルの命令チャネリングユニットを有する前の実施例に対して 、この実施例はそれぞれマルチプレクサ301,304および305によって表 わされるように3つの第1レベルの命令チャネリングユニットを有する。第1の レベルの命令チャネリングユニットはそれらと関連した発行位置1A−1D、1 A'−1D'、および1A"−1D"を有する。図3Bはまた第1のレベルのマルチ プレクサ301,304および305と第2のレベルのマルチプレクサ306A 、306B、306C、306D、307A、307B、307Cおよび307 D(それぞれマルチプレクサ306および307とここで総称される)との間の 信号経路を示す。マルチプレクサ306および307は2つの第2のレベルの命 令チャネリングユニットを形成する。第2のレベルの命令チャネリングユニット はそれらと関連した発行位置2A−2Dおよび2A’−2D’を有する。最後に 、第2のレベルのマルチプレクサ306および307と第3のレベルのマルチプ レクサ308A、308B、308Cおよび308D(マルチプレクサ308と ここで総称される)との間の信号経路が示される。マルチプレクサ308は第3 のレベルの命令チャネリングユニットを形成する。第3のレベルの命令チャネリ ングユニットがそれと関連した発行位置3A−3Dを有する。 大まかに言うと、マルチプレクサ301、304および305によって形成さ れた第1のレベルの命令チャネリングユニットの各々は、関連したそれらの命令 バイトバス300A−300Cから個別にかつ並行して命令を選択し、発行位置 1A−1D、IA’−1D’および1A”−1D”にそれぞれ送る。マルチプレ クサ306および307によって形成された第2のレベルの命令チャネリングユ ニットは、発行位置1A−1D内の有効命令の数だけ発行位置1A’−1D’お よび1A”−1D”をそれぞれシフトする。さらに、マルチブレクサ306は、 発行位置1A−1Dと、発行位置1A’−1D’に関連したシフトされた発行位 置とをマージする。マルチプレクサ308によって形成された第3のレベルの命 令チャネリングユニットは、発行位置1A’−1D’における命令数だけ発行位 置2A’−2D’をシフトする。マルチプレクサ308はさらに、発行位置2A −2Dと、発行位置2A’−2D’に関連したシフトされた発行位置とをマージ する。次に、この実施例をさらに完全に説明する。 図3Bには開始バイトを多重化するための信号経路しか示されていない。しか しながら、第1のレベルのマルチプレクサの出力上のスラッシュで示されるよう に、各マルチプレクサによって複数バイトが選択される。所与のマルチプレクサ に対して選択される他のバイトの多重化を以下に図4に関して記載する。第1の レベルのマルチプレクサは、それらが結合された命令バイトバス300に従って グループ化される。したがって、マルチプレクサ301は命令バイトバス300 Aに結合され、マルチプレクサ304は命令バイトバス300Bに結合され、マ ルチプレクサ305は命令バイトバス300Cに結合される。1つの実施例にお いて、マルチプレクサ301Aは命令バイトバス300Aの8つの命令バイトに 結合される。これにより、命令バイトバス300A内に伝えられたすべてのバイ トから開始バイトが選択できるようになる。マルチプレクサ301Bは、最初の バイトを除く、命令バイトバス300Aのバイトの各々に結合される。マルチプ レクサ301Bは最初のバイトに結合される必要はなく、そのバイトが開始バイ トであれば、それはマルチプレクサ301Aによって選択されることとなる。同 様に、マルチプレクサ301Cは最初の2つのバイトに結合される必要はない。 両方のバイトが開始バイトである場合、第1のバイトはマルチプレクサ301A によって選択され、第2のバイトはマルチプレクサ301Bによって選択される こととなる。最後に、マルチプレクサ301Dは、最初の3バイトを除く、命令 バイトバス300Aのバイトの各々に結合して示される。したがって、マルチプ レクサ301A、301B、301Cおよび301Dと、命令バイトバス300 Aからの対応する信号経路との組合せにより、4つまでの開始バイトが命令バス 300Aから選択できるようになる。 図3Bにさらに示されるように、命令バイトバス300Aからマルチプレクサ 301までに描かれる。同様の信号経路が入力命令バイトバス300Bとマルチ プレクサ304との間に示される。これらのマルチプレクサはマルチプレクサ3 01に似た構成であり、マルチプレクサ304Aは301Aに似ており、304 Bは301Bに似ており、304Cは301Cに似ており、304Dは301D に似ている。また、マルチプレクサ304の動作はマルチプレクサ301の動作 からは独立しており、かつそれと並行して行なわれる。命令バイトバス300C とマルチプレクサ305との間の信号経路も、命令バイトバス300Aとマルチ プレクサ301との間のものに似ている。 制御ユニット302はマルチプレクサ制御バス311を介してマルチプレクサ 301、304および305に結合される。制御ユニット302はプリデコード タグ入力ポート300をさらに備えた構成である。入力ポート300は制御ユニ ット302が使用する情報を伝え、命令バイトバス300からの命令バイトをマ ルチプレクサ301、304および305が選択するようにする。1つの実施例 において、入力ポート303に伝えられた情報は、命令バイトバス300に与え られたバイトに関連した開始バイトビットを含む。開始バイト情報は制御ユニッ ト302によってスキャンされ、マルチプレクサ制御バス311に伝えられる信 号を生成するために用いられる。命令バイトバス300A上に伝えられる命令バ イトに関連した開始バイトビットをスキャンすることにより検出された第1の開 始バイトが、その後に続く7バイトとともにマルチプレクサ301Aによって選 択される。マルチプレクサ301Aによって選択されたバイトは、必要に応じて 、命令バイトバス300Bで伝えられた命令バイトにまで食い込むこともある。 同様に、検出された第2の開始バイトは、後に続く7バイトとともにマルチプレ クサ301Bによって選択される。ここでもまた、マルチプレクサ301Bによ って選択されたバイトは、必要に応じて、命令バイトバス300Bで伝えられた 命令バイトまでに食い込むことがある。制御ユニット302は、4つの開始バイ ト が検出されるか、または命令バイトバス300Aに伝えられた命令バイトに関連 した開始バイトビットがなくなるまでスキャンを続ける。 制御ユニット302は、前述のスキャンと並行して、かつそれからは独立して 、命令バイトバス300Bに伝えられた命令バイトに関連した開始バイトビット と、命令バイトバス300Cに伝えられた命令バイトに関連した開始バイトビッ トとをスキャンする。その後、それぞれマルチプレクサ304および305を用 いて命令バイトバス300Bおよび命令バイトバス300Cからバイトを選択す る類似した手順が行なわれる。 先に規定した発行位置を用いて、第2のレベルのマルチプレクサ306および 307の機能を説明することができる。大まかに言えば、マルチプレクサ306 は、制御ユニット302の指示下で発行位置1A−1Dと発行位置1A’−1D ’とをマージして、発行位置2A−2Dを形成するように構成される。マージ機 能は、発行位置1A−1Dにおける有効命令数だけ発行位置1A’−1D’をシ フトし、発行位置2A−2Dを発行位置1A−1Dからの任意の有効命令で埋め 、発行位置1A’−1D’からもたらされたシフトされた発行命令によって残り の発行位置2A−2Dを埋めることによって行なわれる。マルチプレクサ307 は制御ユニット302の指示下で発行位置1A−1Dにおける有効命令の数だけ 発行位置1A”−1D”をシフトし、それにより発行位置2A’−2D’を埋め る。ここで述べたとおり、マルチプレクサ306および307に対するマルチプ レクサ制御バス312は発行位置1A−1Dにおける有効命令数に依存する。 マルチプレクサ308は、制御ユニット302の指示下で発行位置2A−2D と2A’−2D’とをマージして発行位置3A−3Dにするように構成される。 マルチプレクサ308によって行なわれるマージ機能は、発行位置1A’−1D ’における有効命令数だけ発行位置2A’−2D’をシフトし、発行位置2A− 2Dにおける任意の有効命令によって発行位置3A−3Dを埋め、発行位置2A ’−2D’からもたらされたシフトされた発行位置によって残りの発行位置3A −3Dを埋めることによって行なわれる。発行位置3A−3Dに含まれる命令は デコードユニット208に転送される。デコードユニット208に転送された命 令に対応する開始バイトビットがリセットされ、これによりさらなる命令を次 のサイクルにおいて処理することができる。 別の実施例において、テークンと予測された分岐命令に続く命令の開始ビット が分岐予測ユニット220によってリセットされる。このため、1つの場合にお いては(命令がデコードユニット208にディスパッチ済のため)命令バイトバ ス300Aに伝えられた命令バイトに関連した開始ビットがリセットされ、(命 令バイトバス300Bに伝えられた命令バイトが、テークンと予測された分岐命 令を含むため)命令バイトバス300Cに伝えられた命令バイトに関連した開始 ビットがリセットされる。この場合、命令バイトバス300Bに伝えられた命令 バイトは命令バイトバス300Aまで移動され、新しいキャッシュラインが、予 測された分岐命令のターゲットからフェッチされる。 1つの実施例において、マルチプレクサ308はプリデコードユニット202 およびMROMユニット209からの入力をさらに有する。プリデコードユニッ ト202からの入力は図3Bに309として示される。MROMユニット209 からの入力は図3Bに310として示される。MROM入力310は、MROM ユニット209によってMROM命令をデコードユニット208に転送すること ができるようにするために用いられる。プリデコード入力309は、命令キャッ シュ204において命令フェッチのミスが発生した場合に用いられる。この場合 、命令はメインメモリから読出され、(1つのクロックサイクルにつき1つの命 令が)プリデコードユニット202によってプリデコードされる。マイクロプロ セッサ200は、命令キャッシュラインがプリデコードを終え、命令キャッシュ にストアされるまで待機するのではなく、プリデコード入力309を用いてプリ デコード命令をデコードユニット208に経路付ける。 有効命令は、任意のグループの発行命令内で、Aで示される位置が最初に埋め られ、次にBで示される位置が埋められるという具合になるような態様で発行位 置を埋める。たとえば、発行位置1Bは発行位置1Aが有効命令を含まないなら ば有効命令を含まない。さらに、発行位置2B’は発行位置2A’が有効命令を 含まないならば有効命令を含まない。 一例によって、マルチプレクサ306、307および308によって行なわれ るマージおよびシフト動作をさらに明らかにする。この例では、発行位置1Aお よび1Bは有効命令を伝え、発行位置1Cおよび1Dは有効命令を伝えない。さ らに、発行位置1A’は有効命令を伝え、発行位置1B’,1C’および1D’ は有効命令を伝えない。最後に、発行位置1A”は有効命令を伝え、発行位置1 B”、1C”および1D”は有効命令を伝えない。 この例において、発行位置1A’−1D’および1A”−1D”は、発行位置 1A−1Dにおける有効命令数である2だけシフトされる。発行位置1A’−1 D’および1A”−1D”に対するシフトはそれぞれマルチブレクサ306およ び307によって行なわれる。したがって、制御ユニット302は、マルチプレ クサ制御バス312を介して、マルチブレクサ306Aがマルチプレクサ301 A(発行位置1A)からのバイトを選択し、マルチプレクサ306Bがマルチプ レクサ301B(発行位置1B)からのバイトを選択し、かつマルチプレクサ3 06Cがマルチプレクサ304A(発行位置1A’)からのバイトを選択するよ うにする。マルチプレクサ306Dはこの例では有効命令を選択しない。こうし て、発行位置1A−1Dおよび1A’−1D’がマージされる。発行位置2A− 2Dには3つの有効命令が存在する。さらに、制御ユニット302はマルチプレ クサ307A、307Bおよび307Dが有効命令を選択しないようにする。制 御ユニット302はマルチプレクサ307Cがマルチプレクサ305A(発行位 置1A”)からのバイトを選択するようにする。この態様で、発行位置2A’− 2D’は、発行位置1A−1Dにおける有効命令数だけシフトされた発行位置1 A”−1D”を含む。 例を続けると、制御ユニット302はさらに、マルチプレクサ308A、30 8B、308Cおよび308Dがそれぞれマルチプレクサ306A(発行位置2 A)、306B(発行位置2B)、306C(発行位置2C)および307C( 発行位置2C’)からのバイトを選択するようにする。この態様で、発行位置2 A’−2D’は、発行位置1A’−1D’における有効命令数だけ(すなわち1 だけ)シフトされる。最後の組のデコード位置3A−3Dがもたらされている。 この例からわかるように、異なった3組の命令バイトからの4つの有効命令がこ のサイクルのデコードのために選択された。有利なことに、4つのデコード位置 が用いられた。 さまざまなマルチプレクサ301、304および305によって選択されたバ イトは重複し得ることに留意されたい。たとえば、マルチプレクサ301Aは制 御ユニット302によって、命令バイトバス300Aで伝えられる8バイトを選 択するようにされてもよい。しかしながら、命令バイトバス300Aの第2のバ イトが開始バイトであることもあり得る。この場合、制御ユニット302は、マ ルチプレクサ301Bが命令バイトバス300Aの第2バイトから第8バイトま でと、命令バイトバス300Bの第1のバイトとを選択するようにする。したが って、命令バイトバス300Aの第2バイトから第8バイトまではマルチプレク サ301Aおよび301Bの両方によって選択される。開始バイトおよび終了バ イト情報がデコードユニット208に伝えられ、これによりそれらは受取られた 8つのバイトのうちいずれが命令を表わすかを決定し得る。開始バイトと終了バ イトとの間(両端を含む)に含まれるバイトは、選択されたバイトを受取るデコ ードユニットよってデコードされることとなる。デコードユニット208によっ て開始バイトおよび/または終了バイトが検出されない場合、バイトはプリデコ ードユニット202(図2)まで転送されて戻され、プリデコードされる。先に 規定した機能ビットが当該命令がMROM命令であることを示す場合、このバイ トはMROMユニット209(図2)に転送されてさらに処理される。 シフトの効果は、入力がマルチプレクサのグループに結合される態様と、マル チプレクサ制御バスに伝えられる選択信号が発生する態様とによってもたらされ ることに留意されたい。たとえば、図3Bに示されるようなマルチプレクサ30 6Bを想定する。マルチプレクサ306Bは3つの入力、すなわちマルチプレク サ301B、304Aおよび304Bの出力を有する構成である。したがって、 マルチプレクサ306Bは発行位置1Bと、1A’と1B’から選択する。発行 位置1A−1Dにおいて1つの命令が有効である場合、マルチプレクサ306B は発行位置1A’を選択するようにされる。したがって、マルチプレクサ304 の第1の発行位置はマルチプレクサ306の第2の発行位置までシフトされてい る。 図3Bの実施例はまず、命令バイトバス300Aから有効命令を選択し、次に 命令バイトバス300Bから選択し、最後に命令バイトバス300Cから選択し て最後の発行位置3A−3Dに送る。この方法論が採用されたのは、入力命令バ イトバス300Aが最も古い未決命令を含むために、新しい命令をデコード機構 が認識できるようになるようにこれらの命令を最初にデコードする(かつ後に実 行する)ことが一般的に有利だからである。他の実施例において、入力命令バイ トバス300は異なった構成を有してもよく、命令を選択するために種々の機構 が採用され得る。入力命令バイトのグループの数およびサイズは実施例によって も異なるが、必ずしも命令キャッシュラインに関連することは必ずしもない。実 際に、入力命令バイトバス300には、関係のないグループの命令バイトを与え てもよい。他の実施例では、異なった数の命令チャネリングユニットが設けられ てもよいことを理解されたい。さらに、命令バイトバスから選択された開始バイ ト数(および命令数)が実施例によって異なり得ることを理解されたい。 次に図4を参照して、命令バイトバス300(図4)からの1組の隣接したバ イトをデコードユニットに転送する信号経路が示される。上述のとおり、図3B には開始バイト信号経路のみが示された。図3Bの場合と同様に、図4には3つ のレベルのマルチプレクサが示される。第1のレベルのマルチプレクサ400A 、400B、400C、400D、400E、400F、400Gおよび400 H(ここで包括的にマルチプレクサ400と呼ぶ)が1組の連続した命令バイト 401に結合される。命令バイト401は命令バス300上で発生する。マルチ プレクサ制御バス402(制御バス311のサブセット)はマルチプレクサ40 0に結合される。マルチプレクサ400Aにおいて開始バイトが選択され、マル チプレクサ400Bにおいて隣接した次のバイトが選択されるという具合に続く 。たとえば、命令バイト1が開始バイトであれば、命令バイト1がマルチプレク サ400Aによって選択され、命令バイト2がマルチプレクサ400Bによって 選択されるという具合に続く。 図4には、第2のレベルのマルチプレクサがマルチプレクサ403A、403 B、403C、403D、403E、403F、403Gおよび403H(ここ で包括的にマルチプレクサ403と呼ぶ)として示される。マルチプレクサ40 3にはマルチプレクサ400の出力が入力として結合される。さらに、マルチプ レクサ403の入力として入力405が結合される。入力405はマルチプレク サ400に似たマルチプレクサ回路(図示せず)に結合され、これらは制御バス 402と似ているが、異なったバイトを命令バス300から選択する種々の制御 バスに結合される。たとえば、このような選択制御は、制御バス402で発生す る開始バイトビットとは異なった開始バイトビットを見出すことによりもたらす ことができる。マルチプレクサ403はマルチプレクサ制御バス404にさらに 結合され、これは図3Bに示される制御バス312のサブセットである。 マルチプレクサ403の出力は入力として407A、407B、407C、4 07D、407E、407F、407Gおよび407H(ここでは包括的にマル チプレクサ407と呼ぶ)に結合される。マルチプレクサ407への入力として 入力408がさらに結合される。入力408は、(制御バス404に似た種々の 制御バスに結合された)マルチプレクサ403に似たマルチブレクサ回路(図示 せず)に結合される。1つの実施例において、入力408はMROMユニット2 09(図2)からのMROM入力と、プリデコードユニット202(図2)から の入力とをさらに含む。マルチプレクサ407にはマルチプレクサ制御バス40 6がさらに結合され、これは図3Bに示される制御バス313のサブセットであ る。マルチプレクサ407の出力はデコードユニット208のうちの1つの入力 バイトに結合される。 以上の説明により、高性能の命令整列ユニットを開示した。命令整列ユニット は独立した多数のスキャンおよびシフトユニット(命令チャネリングユニット) を採用して、命令を選択してディスパッチするようにする。ここに記載した方法 および装置によりカスケード接続された少数のレベルの論理ゲートでの実装が可 能になり、このユニットを高速設計において特に有用とする。さらに、命令整列 ユニットは、実行すべき命令に関する広範囲のバイトをスキャンすることにより 高性能を達成する。 前掲の開示が十分に認められると当業者には多くの変形および修正が明らかと なるであろう。以下のクレームはこのような変形および修正のすべてを包含する ものと解されるように意図される。
【手続補正書】 【提出日】平成11年1月26日(1999.1.26) 【補正内容】 (1) 明細書第3頁第4行から第8行までの「同時係属中であり、共通の譲 受人に譲渡された特許出願、すなわち、ウィット他(Witt et al.)により199 3年10月29日に出願され、その開示全体が引用によりここに援用される連続 番号第08/146,383号「スーパースカラ命令デコーダ(“Superscalar Instruction Decoder”)」を「発明者らの同時係属中のEP−A−0 651 320「スーパースカラ命令デコーダ」(““Superscalar Instruction Decoder ”)」に補正する。 (2) 明細書第3頁第18行と第19行の間に下記の文章を挿入する。 記 GB−A−2 263 987には、可変長さであり、命令間の区別なしに命 令ストリーム内にシーケンシャルに現れる命令の長さを決定するための装置を説 明しており、その装置は各命令の長さがその点で終了することを示すための終了 ビットを与える。第1のチャネルはシーケンス内の第1の命令を処理し、第2の チャネルは第1の命令に続く命令を処理し、命令の終了ビットはその命令の終了 点と次の命令の始まりとを命令ストリームから決定するために第1のチャネルに よって処理される。 (3) 明細書第3頁第20行から第4頁第5行までを下記のように補正する 。 記 上に概要を述べた問題はこの発明に従うスーパースカラマイクロプロセッサに よって大部分が解決される。 この発明は、命令キャッシュから複数個のデコードユニットへと命令を転送す るための命令整列ユニットであって、 複数グループの命令バイトを転送するように構成された入力ポートと、 前記入力ポートに結合された第1の命令チャネリングユニットとを含み、前記 第1の命令チャネリングユニットは、前記入力ポートによって転送される第1の 前記複数グループの命令バイトから第1の複数個の命令バイトを選択し、転送す るように構成され、第1の複数個の命令バイトは開始バイトと固定数の連続バイ トとを含み、さらに、 前記入力ポートに結合された第2の命令チャネリングユニットを含み、前記第 2の命令チャネリングユニットは、前記入力ポートによって転送される第2の前 記複数グループの命令バイトから第2の複数個の命令バイトを選択し、転送する ように構成され、第2の命令チャネリングユニットは第1の命令チャネリングに よる第1の複数個の命令バイトの選択および転送と並行して第2の複数個の命令 バイトを選択し、転送し、第2の複数個の命令バイトは開始バイトと固定数の連 続バイトとを含み、さらに、 前記第1の命令チャネリングユニットおよび前記第2の命令チャネリングユニ ットに結合された第3の命令チャネリングユニットを含み、前記第3の命令チャ ネリングユニットは前記第1の複数個の命令バイトと前記第2の複数個の命令バ イトとをマージされた複数個の命令バイトへとマージするように構成され、さら に、 前記第3の命令チャネリングユニットに結合された出力ポートを含み、前記出 力ポートは前記複数個のデコードユニットに複数個の命令バイトを転送するよう に構成される、命令整列ユニットを提供する。 この発明はまた、複数グループの命令バイトから可変長命令を選択するための 方法であって、 前記複数グループの命令の1つから開始バイトと固定数の連続バイトとを含む 第1の複数個の命令バイトを選択するステップと、 前記複数グループの命令の別のものから開始バイトと固定数の連続バイトとを 含む第2の複数個の命令バイトを選択するステップとを含み、第2の複数個の命 令バイトは第1の複数個の命令バイトの選択と並行して選択され、前記方法は、 前記第2の複数個の命令バイトを前記第1の複数個の命令バイトにおけるバイ ト数だけシフトし、それによってシフトされた複数個の命令バイトを生じるステ ップと、 前記第1の複数個の命令バイトを前記シフトされた複数個の命令バイトとマー ジし、それによってマージされた複数個の命令バイトを生じるステップとを含み 、前記マージするステップは、前記シフトされた複数個の命令バイトが前記マー ジされた複数個の命令バイト内で前記第1の複数個の命令バイトに続くように行 なわれることを特徴とする、方法を提供する。 ある実施例において、スーパースカラマイクロプロセッサは固定数のバイトを 命令キャッシュから複数個のデコードユニットの各々に転送する命令整列ユニッ トを用いる。これらバイトは、プリデコードユニットによって発生されるプリデ コードタグに従って、予め定められたバイトグループから選択される。プリデコ ードタグ(各バイトに異なる1つが関連付けられる)は予め定められたグループ 内のどのバイトが命令のための開始バイトであるかを示す。ある具体的な実施例 において、命令整列ユニットは8バイトの連続する命令コードの3つの異なった グループの中で開始バイトを同時に独立して検出する。命令コードの各グループ 内で予め定められた数の開始バイトを独立して求めると、命令整列ユニットは開 始バイトを各開始バイトに従う連続した7バイトとともに各グループに関連した それぞれの「仮の」発行チャネルへと独立して送る。仮の発行チャネルは次に上 述の複数個のデコードユニットと結合される1組の「最終的な」発行チャネルへ とシフトおよび/またはマージされる。 (4) 請求の範囲を別紙のとおり補正する。 請求の範囲 1.命令キャッシュからの命令を複数のデコードユニットに転送するための命令 整列ユニットであって、 複数のグループの命令バイトを転送するように構成された入力ポートと、 前記入力ポートに結合された第1の命令チャネリングユニット(251,30 1A−D)とを備え、前記第1の命令チャネリングユニットは、前記入力ポート によって転送された前記複数のグループの命令バイトのうちの第1のものから第 1の複数の命令バイトを選択するように構成され、前記第1の複数の命令バイト は開始バイトと固定数の連続バイトとを含み、さらに 前記入力ポートに結合された第2の命令チャネリングユニット(252,30 4A−D)を備え、前記第2の命令チャネリングユニットは、前記入力ポートに よって転送された前記複数のグループの命令バイトのうちの第2のものから第2 の複数の命令バイトを選択して転送するように構成され、前記第2の命令チャネ リングユニットは、前記第1の複数の命令バイトを選択して転送する前記第1の 命令チャネリングユニットと並行して前記第2の複数の命令バイトを選択して転 送し、前記第2の複数の命令バイトは開始バイトと固定数の連続バイトとを含み 、さらに 前記第1の命令チャネリングユニットおよび前記第2の命令チャネリングユニ ットに結合された第3の命令チャネリングユニット(253,306A−D)を 備え、前記第3の命令チャネリングユニットは、前記第1の複数の命令バイトと 前記第2の複数の命令バイトとをマージして、マージされた複数の命令バイトを もたらすように構成され、さらに 前記第3の命令チャネリングユニットに結合された出力ポートを備え、前記出 力ポートは、複数の命令バイトを前記複数のデコードユニットに転送するように 構成される、命令整列ユニット。 2.前記第1の命令チャネリングユニット、前記第2の命令チャネリングユニッ トおよび前記第3の命令チャネリングユニットが複数のマルチプレクサをさらに 含む、請求項1に記載の命令整列ユニット。 3.前記第1の複数の命令バイト、前記第2の複数の命令バイトおよび前記出力 ポートによって転送された前記複数の命令バイトの数が等しい、請求項2に記載 の命令整列ユニット。 4.前記マージされた複数の命令バイトが、後に前記第2の複数の命令バイトが 続く前記第1の複数の命令バイトを含み、それにより前記第2の複数の命令バイ トは、前記第1の複数の命令バイトにおけるバイト数だけシフトされている、請 求項3に記載の命令整列ユニット。 5.前記出力ポートによって転送された前記複数の命令バイトが、前記マージさ れた複数の命令バイトである、請求項4に記載の命令整列ユニット。 6.前記第1の命令チャネリングユニット、前記第2の命令チャネリングユニッ トおよび前記第3の命令チャネリングユニットに結合された制御ユニット(25 5)をさらに含み、前記制御ユニットは、前記第1の命令チャネリングユニット が前記第1の複数の命令バイトを選択するように構成される、請求項5に記載の 命令整列ユニット。 7.前記制御ユニットが、前記第2の命令チャネリングユニットに前記第2の複 数の命令バイトを選択させるようにさらに構成される、請求項6に記載の命令整 列ユニット。 8.前記制御ユニットが、前記第3の命令チャネリングユニットに前記マージさ れた複数の命令バイトを選択させるようにさらに構成される、請求項7に記載の 命令整列ユニット。 9.前記制御ユニットが制御入力ポートをさらに含み、前記制御ユニットは、前 記制御入力ポートに与えられる情報に従って前記第1の命令チャネリングユニッ ト、前記第2の命令チャネリングユニットおよび前記第3の命令チャネリングユ ニットに指示を与えるようにさらに構成される、請求項8に記載の命令整列ユニ ット。 10.前記制御入力ポートに与えられる前記情報が、前記入力ポートの前記複数 のグループの命令バイト内にある開始命令バイトおよび終了命令バイトを特定す る開始バイトおよび終了バイトビットである、請求項9に記載の命令整列ユニッ ト。 11.スーパースカラマイクロプロセッサであって、 請求項1から10のいずれかに記載の命令整列ユニットを備え、前記マイクロ プロセッサはさらに、 前記命令整列ユニットに結合された既にフェッチ済みの命令ブロックをストア するための命令キャッシュ(204)を含み、前記命令キャッシュは複数のブロ ックのメモリを含み、前記マイクロプロセッサはさらに 前記命令整列ユニットに結合された、前記命令整列ユニットから転送された前 記複数の命令バイトをデコードするための複数のデコードユニット(208A− 208D)を備える、スーパースカラマイクロプロセッサ。 12.前記命令キャッシュに結合され、メインメモリからの命令をプリフェッチ してプリデコードするためのプリフェッチ/プリデコードユニット(202)と 、前記命令キャッシュに結合され、分岐命令のターゲットアドレスを予測するた めの分岐予測ユニット(220)と、 前記命令整列ユニットに結合され、困難な命令をマイクロコード化するための MROMユニット(209)と、 前記複数のデコードユニットに結合され、デコードされた命令を実行するため に複数の機能ユニットのうちの1つが利用できるようになり、かつ前記デコード された命令にそれらのオペランドが与えられるまで、前記デコードされた命令を ストアするための複数のリザベーションステーション(210)と、 前記複数のリザベーションステーションに結合され、前記複数のリザベーショ ンステーションにストアされた前記デコードされた命令を実行するための前記複 数の機能ユニット(212)と、 前記複数の機能ユニットおよび前記複数のデコードユニットに結合され、ロー ド/ストア命令を実行するためのロード/ストアユニット(222)と、 前記ロード/ストアユニットに結合され、既にフェッチされているデータメモ リロケーションをストアするためのデータキャッシュ(224)と、 前記複数の機能ユニット、前記ロード/ストアユニットおよび前記複数のデコ ードユニットに結合されたリオーダバッファ(216)とを含み、前記リオーダ バッファは、結果が投機的でなくなるまで、投機的に実行された結果をストアし 、さらに 前記複数のデコードユニットおよび前記リオーダバッファに結合され、レジス タセットの非投機的な状態をストアするためのレジスタファイル(218)とを 含む、請求項11に記載のスーパースカラマイクロプロセッサ。 13.複数のグループの命令バイトから可変長命令を選択するための方法であっ て、 開始バイトと固定数の連続バイトとを含む第1の複数の命令バイトを前記複数 のグループの命令のうちの1つから選択するステップと、 開始バイトと固定数の連続バイトとを含む第2の複数の命令バイトを前記複数 のグループの命令のうちの別のものから選択するステップとを含み、前記第2の 複数の命令バイトは前記第1の複数の命令バイトの選択と並行して選択され、 前記第1の複数の命令バイトのバイト数だけ前記第2の複数の命令バイトをシ フトして、シフトされた複数の命令バイトをもたらすようにするステップと、 前記第1の複数の命令バイトと前記シフトされた複数の命令バイトとをマージ し、マージされた複数の命令バイトをもたらすようにするステップとを含み、前 記マージするステップは、前記シフトされた複数の命令バイトが前記マージされ た複数の命令バイト内の前記第1の複数の命令バイトに続くように行なわれるこ とを特徴とする、方法。 14.前記マージされた複数の命令バイトを複数のデコードユニットに転送する ステップをさらに含む、請求項13に記載の方法。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ウィット,デイビッド・ビィ アメリカ合衆国、78759 テキサス州、オ ースティン、パスフィンダー・ドライブ、 6318 (72)発明者 ジョンソン,ウィリアム・エム アメリカ合衆国、78746 テキサス州、オ ースティン、コキーナ・レーン、606

Claims (1)

  1. 【特許請求の範囲】 1.スーパースカラマイクロプロセッサであって、 命令キャッシュからの命令を複数のデコードユニットに転送するための命令整 列ユニットを備え、前記命令整列ユニットは、 前記命令キャッシュから複数グループの命令バイトを転送するように構成され た入力ポートと、 前記入力ポートに結合された第1の命令チャネリングユニットとを含み、前記 第1の命令チャネリングユニットは、前記入力ポートによって転送された前記複 数のグループの命令バイトのうちの第1のものから第1の複数の命令バイトを選 択するように構成され、前記命令整列ユニットはさらに 前記入力ポートに結合された第2の命令チャネリングユニットを含み、前記第 2の命令チャネリングユニットは、前記入力ポートによって転送された前記複数 のグループの命令バイトのうちの第2のものから第2の複数の命令バイトを選択 するように構成され、前記命令整列ユニットはさらに 前記第1の命令チャネリングユニットおよび前記第2の命令チャネリングユニ ット結合された第3の命令チャネリングユニットを含み、前記第3の命令チャネ リングユニットは、前記第1の複数の命令バイトと前記第2の複数の命令バイト とをマージして、マージされた複数の命令バイトにずるように構成され、前記命 令整列ユニットはさらに 前記第3の命令チャネリングユニット結合された出力ポートを含み、前記出力 ポートは、複数の命令バイトを前記複数のデコードユニットに転送するように構 成され、前記スーパースカラマイクロプロセッサはさらに 前記命令整列ユニットに結合された、既にフェッチされている命令ブロックを ストアするための前記命令キャッシュを備え、前記命令キャッシュは複数のブロ ックのメモリを含み、前記スーパースカラマイクロプロセッサはさらに 前記命令整列ユニットに結合された、前記命令整列ユニットから転送された前 記複数の命令バイトをデコードするための前記複数のデコードユニットを備える 、スーパースカラマイクロプロセッサ。 2.前記入力ポートが、複数のブロックのメモリにストアされた複数のグループ の命令バイトを転送するようにさらに構成され、前記複数のブロックのメモリの うちの第1のものおよび前記複数のブロックのメモリのうちの第2のものは連続 する、請求項1に記載のスーパースカラマイクロプロセッサ。 3.前記命令整列ユニットの前記第1の命令チャネリングユニットおよび前記命 令整列ユニットの前記第2の命令チャネリングユニットが、前記第1の複数の命 令バイトおよび前記第2の複数の命令バイトを個別に選択するようにさらに構成 される、請求項1に記載のスーパースカラマイクロプロセッサ。 4.前記命令整列ユニットの前記第1の命令チャネリングユニット、前記命令整 列ユニットの前記第2の命令チャネリングユニットおよび前記命令整列ユニット の前記第3の命令チャネリングユニットが、複数のマルチプレクサをさらに含む 、請求項3に記載のスーパースカラマイクロプロセッサ。 5.前記マージされた複数の命令バイトが、前記第2の複数の命令バイトが後に 設けられた前記第1の複数の命令バイトを含み、これにより前記第2の複数の命 令バイトは前記第1の複数の命令バイトのバイト数だけシフトされる、請求項4 に記載のスーパースカラマイクロプロセッサ。 6.前記出力ポートによって転送された前記複数の命令バイトが、前記マージさ れた複数の命令バイトである、請求項5に記載のスーパースカラマイクロプロセ ッサ。 7.前記命令整列ユニットが、前記第1の命令チャネリングユニット、前記第2 の命令チャネリングユニットおよび前記第3の命令チャネリングユニットに結合 された制御ユニットをさらに含み、前記制御ユニットは、前記第1の命令チャネ リングユニットが前記1対1の複数の命令バイトを選択するようにする構成であ る、請求項6に記載のスーパースカラマイクロプロセッサ。 8.前記命令整列ユニットの前記制御ユニットが、前記第2の命令チャネリング ユニットが前記第2の複数の命令バイトを選択するようにさらに構成される、請 求項7に記載のスーパースカラマイクロプロセッサ。 9.前記命令チャネリングユニットの前記制御ユニットが、前記第3の命令チャ ネリングユニットに前記マージされた複数の命令バイトを選択させるようにさら に構成される、請求項8に記載のスーパースカラマイクロプロセッサ。 10.前記制御ユニットが制御入力ポートをさらに含み、前記制御ユニットは、 前記制御入力ポートに与えられる情報に従って前記第1の命令チャネリングユニ ット、前記第2の命令チャネリングユニットおよび前記第3の命令チャネリング ユニットに指示を与えるようにさらに構成される、請求項9に記載のスーパース カラマイクロプロセッサ。 11.前記制御入力ポートに与えられる情報が、前記入力ポートの前記複数のグ ループの入力バイト内の開始命令バイトおよび終了命令バイトを特定する開始バ イトおよび終了バイトビットである、請求項10に記載のスーパースカラマイク ロプロセッサ。 12.前記制御ユニットが、前記第1の命令チャネリングユニットに前記第1の 複数の命令バイトに含まれる前記複数のグループの命令バイトのうちの前記第1 のものにあるバイトを選択させるようにさらに構成され、前記バイトは開始バイ トである、請求項11に記載のスーパースカラマイクロプロセッサ。 13.前記制御ユニットが、前記第1の命令チャネリングユニットに前記第1の 複数の命令バイトに含まれる前記開始バイトに隣接した複数のバイトを選択させ るようにさらに構成される、請求項12に記載のスーパースカラマイクロプロセ ッサ。 14.前記命令整列ユニットの前記出力ポートが、前記複数のデコードユニット のうちの1つに前記バイトおよび前記隣接バイトを転送するように構成される、 請求項13に記載のスーパースカラマイクロプロセッサ。 15.前記命令整列ユニットが、前記入力ポートに結合された第4の命令チャネ リングユニットをさらに含み、前記第4の命令チャネリングユニットは、前記入 力ポートによって転送された前記複数のグループの命令バイトのうちの第3のも のから第3の複数の命令バイトを選択するようにさらに構成される、請求項1に 記載のスーパースカラマイクロプロセッサ。 16.前記命令整列ユニットが、前記第4の命令チャネリングユニットに結合さ れた第5の命令チャネリングユニットをさらに含み、前記第5の命令チャネリン グユニットは、前記第1の複数の命令バイトにおけるバイト数だけ前記第3の複 数の命令バイトをシフトし、それによりシフトされた複数の命令バイトを形成す るように構成される、請求項15に記載のスーパースカラマイクロプロセッサ。 17.前記命令整列ユニットが、前記第5の命令チャネリングユニットに結合さ れ、かつ前記第3の命令チャネリングユニットにさらに結合された第6の命令チ ャネリングユニットをさらに含み、前記第6の命令チャネリングユニットは、前 記マージされた複数の命令バイトと前記シフトされた複数の命令バイトとをマー ジして第2のマージされた複数の命令バイトをもたらすように構成され、前記第 2のマージされた複数の命令バイトは、後に前記第3の複数の命令バイトが続く 前記マージされた複数の命令バイトであり、これにより前記シフトされた複数の 命令バイトは、前記第2の複数の命令バイトにおけるバイト数だけさらにシフト される、請求項16に記載のスーパースカラマイクロプロセッサ。 18.前記出力ポートによって転送された前記複数の命令バイトが、前記マージ された第2の複数の命令バイトである、請求項17に記載のスーパースカラマイ クロプロセッサ。 19.前記命令キャッシュに結合され、メインメモリからの命令をプリフェッチ してプリデコードするためのプリフェッチ/プリデコードユニットと、 前記命令キャッシュに結合され、分岐命令のターゲットアドレスを予測するた めの分岐予測ユニットと、 前記命令整列ユニットに結合され、困難な命令をマイクロコード化するための MROMユニットと、 前記複数のデコードユニットに結合され、デコードされた命令を実行するため に複数の機能ユニットのうちの1つが利用できるようになり、かつ前記デコード された命令にそれらのオペランドが与えられるまで、前記デコードされた命令を ストアするための複数のリザベーションステーションと、 前記複数のリザベーションステーションに結合され、前記複数のリザベーショ ンステーションにストアされた前記デコードされた命令を実行するための前記複 数の機能ユニットと、 前記複数の機能ユニットおよび前記複数のデコードユニットに結合され、ロー ド/ストア命令を実行するためのロード/ストアユニットと、 前記ロード/ストアユニットに結合され、既にフェッチされているデータメモ リロケーションをストアするためのデータキャッシュと、 前記複数の機能ユニット、前記ロード/ストアユニットおよび前記複数のデコ ードユニットに結合されたリオーダバッファとを含み、前記リオーダバッファは 、結果が投機的でなくなるまで、投機的に実行された結果をストアし、さらに 前記複数のデコードユニットおよび前記リオーダバッファに結合され、レジス タセットの非投機的な状態をストアするためのレジスタファイルとを含む、請求 項18に記載のスーパースカラマイクロプロセッサ。 20.命令キャッシュからの命令を複数のデコードユニット転送するための命令 整列ユニットであって、 複数のグループの命令バイトを転送するように構成された入力ポートと、 前記入力ポートに結合された第1の命令チャネリングユニットとを備え、前記 第1の命令チャネリングユニットは、前記入力ポートによって転送された前記複 数のグループの命令バイトのうちの第1のものから第1の複数の命令バイトを選 択するように構成され、さらに 前記入力ポートに結合された第2の命令チャネリングユニットを備え、前記第 2の命令チャネリングユニットは、前記入力ポートによって転送された前記複数 のグループの命令バイトのうちの第2のものから第2の複数の命令バイトを選択 するように構成され、さらに 前記第3の命令チャネリングユニットおよび前記第2の命令チャネリングユニ ットに結合された第3の命令チャネリングユニットを備え、前記第3の命令チャ ネリングユニットは、前記第1の複数の命令バイトと前記第2の複数の命令バイ トとをマージして、マージされた複数の命令バイトをもたらすように構成され、 さらに 前記第3の命令チャネリングユニットに結合された出力ポートを備え、前記出 力ポートは、複数の命令バイトを前記複数のデコードユニットに転送するように 構成される、命令整列ユニット。 21.前記入力ポートが、複数のブロックのメモリにストアされた複数のグルー プの命令バイトを転送するようにさらに構成され、前記複数のブロックのメモリ は前記命令キャッシュにストアされる、請求項20に記載の命令整列ユニット。 22.前記入力ポートが、複数のブロックのメモリにストアされた複数のグルー プの命令を転送するようにさらに構成され、前記複数のブロックのメモリのうち の第1のものおよび前記複数のブロックのメモリのうちの第2のものは連続する 、請求項21に記載の命令整列ユニット。 23.前記第1の命令チャネリングユニットおよび前記第2の命令チャネリング ユニットが、前記第1の複数の命令バイトおよび前記第2の複数の命令バイトを 個別に選択するようにさらに構成される、請求項20に記載の命令整列ユニット 。 24.前記第1の命令チャネリングユニット、前記第2の命令チャネリングユニ ットおよび前記第3の命令チャネリングユニットが、複数のマルチプレクサをさ らに含む、請求項23に記載の命令整列ユニット。 25.および前記出力ポートによって転送された前記第1の複数の命令バイト、 前記第2の複数の命令バイト前記複数の命令バイトの数が等しい、請求項24に 記載の命令整列ユニット。 26.前記マージされた複数の命令バイトが、後に前記第2の複数の命令バイト が続く前記第1の複数の命令バイトを含み、それにより前記第2の複数の命令バ イトは、前記第1の複数の命令バイトにおけるバイト数だけシフトされている、 請求項25に記載の命令整列ユニット。 27.前記出力ポートによって転送された前記複数の命令バイトが、前記マージ された複数の命令バイトである、請求項26に記載の命令整列ユニット。 28.前記第1の命令チャネリングユニット、前記第2の命令チャネリングユニ ットおよび前記第3の命令チャネリングユニットに結合された制御ユニットをさ らに含み、前記制御ユニットは、前記第1の命令チャネリングユニットが前記第 1の複数の命令バイトを選択するように構成される、請求項27に記載の命令整 列ユニット。 29.前記制御ユニットが、前記第2の命令チャネリングユニットに前記第2の 複数の命令バイトを選択させるようにさらに構成される、請求項28に記載の命 令整列ユニット。 30.前記制御ユニットが、前記第3の命令チャネリングユニットに前記マージ された複数の命令バイトを選択させるようにさらに構成される、請求項29に記 載の命令整列ユニット。 31.前記制御ユニットが制御入力ポートをさらに含み、前記制御ユニットは、 前記制御入力ポートに与えられる情報に従って前記第1の命令チャネリングユニ ット、前記第2の命令チャネリングユニットおよび前記第3の命令チャネリング ユニットに指示を与えるようにさらに構成される、請求項30に記載の命令整列 ユニット。 32.前記制御入力ポートに与えられる前記情報が、前記入力ポートの前記複数 のグループの命令バイト内にある開始命令バイトおよび終了命令バイトを特定す る開始バイトおよび終了バイトビットである、請求項31に記載の命令整列ユニ ット。 33.前記制御ユニットが、前記第1の命令チャネリングユニットに前記第1の 複数の命令バイトに含まれる前記複数のグループの命令バイトのうちの前記第1 のものの中にあるバイトを選択させるようにさらに構成される、請求項32に記 載の命令整列ユニット。 34.前記制御ユニットが、前記第1の命令チャネリングユニットに前記第1の 複数の命令バイトに含まれる前記開始バイトに隣接した複数のバイトを選択させ るようにさらに構成される、請求項33に記載の命令整列ユニット。 35.前記出力ポートが、前記バイトおよび前記隣接バイトを前記複数のデコー ドユニットのうちの1つに転送するように構成される、請求項34に記載の命令 整列ユニット。 36.前記入力ポートに結合された第4の命令チャネリングユニットをさらに含 み、前記第4の命令チャネリングユニットは、前記入力ポートによって転送され た前記複数のグループの命令バイトのうちの第3のものから第3の複数の命令バ イトを選択するようにさらに構成される、請求項20に記載の命令整列ユニット 。 37.前記第4の命令チャネリングユニットに結合された第5の命令チャネリン グユニットをさらに含み、前記第5の命令チャネリングユニットは、前記第1の 複数の命令バイトにおけるバイト数だけ前記第3の複数の命令バイトをシフトし 、それによりシフトされた複数の命令バイトを形成するように構成される、請求 項36に記載の命令整列ユニット。 38.前記第5の命令チャネリングユニットに結合され、かつ前記第3の命令チ ャネリングユニットにさらに結合された第6の命令チャネリングユニットをさら に含み、前記第6の命令チャネリングユニットは、前記マージされた複数の命令 バイトと前記シフトされた複数の命令バイトとをマージして第2のマージされた 複数の命令バイトをもたらすように構成され、前記第2のマージされた複数の命 令バイトは、後に前記第3の複数の命令バイトが続く前記マージされた複数の命 令バイトであり、それにより前記シフトされた複数の命令バイトは前記第2の複 数の命令バイトのバイト数だけさらにシフトされる、請求項37に記載の命令整 列ユニット。 39.前記出力ポートによって転送された前記複数の命令バイトが、前記マージ された第2の複数の命令バイトである、請求項38に記載の命令整列ユニット。 40.複数のグループの命令バイトから可変長命令を選択するための方法であっ て、 開始バイトと固定数の連続バイトとを含む第1の複数の命令バイトを前記複数 のグループの命令のうちの1つから選択するステップと、 開始バイトと固定数の連続バイトとを含む第2の複数の命令バイトを前記複数 のグループの命令のうちの別のものから選択するステップと、 前記第1の複数の命令バイトのバイト数だけ前記第2の複数の命令バイトをシ フトして、シフトされた複数の命令バイトをもたらすようにするステップと、 前記第1の複数の命令バイトと前記シフトされた複数の命令バイトとをマージ し、マージされた複数の命令バイトをもたらすようにするステップとを含み、前 記マージするステップは、前記シフトされた複数の命令バイトが前記マージされ た複数の命令バイト内の前記第1の複数の命令バイトに続くように行なわれる、 方法。 41.第1を選択する前記ステップおよび第2を選択する前記ステップが独立し て並行に行なわれる、請求項40に記載の方法。 42.前記マージされた複数の命令バイトを複数のデコードユニットに転送する ステップをさらに含む、請求項40に記載の方法。 43.命令キャッシュからの命令を複数のデコードユニットに転送するための命 令整列ユニットであって、 複数のグループの命令バイトのうちの第1のものから第1の複数の命令バイト を選択するように構成された第1の命令チャネリングユニットと、 前記複数のグループの命令バイトのうちの第2のものから第2の複数の命令バ イトを選択するように構成された第2の命令チャネリングユニットとを含む、命 令整列ユニット。
JP10505952A 1996-07-16 1996-07-16 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ Pending JP2000515275A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1996/011759 WO1998002798A1 (en) 1996-07-16 1996-07-16 A superscalar microprocesser including a high speed instruction alignment unit

Publications (1)

Publication Number Publication Date
JP2000515275A true JP2000515275A (ja) 2000-11-14

Family

ID=22255461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10505952A Pending JP2000515275A (ja) 1996-07-16 1996-07-16 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ

Country Status (3)

Country Link
EP (1) EP0912924A1 (ja)
JP (1) JP2000515275A (ja)
WO (1) WO1998002798A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066893A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ATE521032T1 (de) 2001-01-30 2011-09-15 Silicon Hive Bv Computerbefehl mit befehlsabruf-steuerbit
US12254319B2 (en) 2021-09-24 2025-03-18 Intel Corporation Scalable toggle point control circuitry for a clustered decode pipeline

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2834289B2 (ja) * 1990-07-20 1998-12-09 株式会社日立製作所 マイクロプロセッサ
DE69231011T2 (de) * 1991-02-08 2000-09-28 Fujitsu Ltd., Kawasaki Cachespeicher zur Verarbeitung von Befehlsdaten und Datenprozessor mit demselben
SG45269A1 (en) * 1992-02-06 1998-01-16 Intel Corp End bit markers for instruction decode
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
US5463748A (en) * 1993-06-30 1995-10-31 Intel Corporation Instruction buffer for aligning instruction sets using boundary detection
US5689672A (en) * 1993-10-29 1997-11-18 Advanced Micro Devices, Inc. Pre-decoded instruction cache and method therefor particularly suitable for variable byte-length instructions
US5604909A (en) * 1993-12-15 1997-02-18 Silicon Graphics Computer Systems, Inc. Apparatus for processing instructions in a computing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010066893A (ja) * 2008-09-09 2010-03-25 Renesas Technology Corp データプロセッサ

Also Published As

Publication number Publication date
WO1998002798A1 (en) 1998-01-22
EP0912924A1 (en) 1999-05-06

Similar Documents

Publication Publication Date Title
US5758114A (en) High speed instruction alignment unit for aligning variable byte-length instructions according to predecode information in a superscalar microprocessor
EP0957428B1 (en) Method and apparatus for fetching non-contiguous instructions in a data processing system
JP3794917B2 (ja) 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
US5337415A (en) Predecoding instructions for supercalar dependency indicating simultaneous execution for increased operating frequency
US5748978A (en) Byte queue divided into multiple subqueues for optimizing instruction selection logic
US6049863A (en) Predecoding technique for indicating locations of opcode bytes in variable byte-length instructions within a superscalar microprocessor
JP3977016B2 (ja) 仮想レジスタ番号を用いて論理レジスタ番号を物理レジスタ番号にマッピングするように構成されるプロセッサ
JP3803723B2 (ja) 分岐予測を選択する分岐セレクタを採用する分岐予測機構
US5850532A (en) Invalid instruction scan unit for detecting invalid predecode data corresponding to instructions being fetched
JPH07182163A (ja) スーパスカラ命令デコード/発行装置
EP0697650A2 (en) Apparatus and method for instruction queue scanning
JPH04229326A (ja) スカラ命令の並列実行を得る方法およびシステム
JPH087681B2 (ja) スカラ命令並列実行可能性を判定し指示する方法及び並列実行可能な隣接するスカラ命令を識別する方法
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
JP2005500616A (ja) 2レベルの分岐予測キャッシュによる分岐予測
US5765016A (en) Reorder buffer configured to store both speculative and committed register states
US5968163A (en) Microcode scan unit for scanning microcode instructions using predecode data
JP3794918B2 (ja) 復帰選択ビットを用いて分岐予測のタイプを分類する分岐予測
US5991869A (en) Superscalar microprocessor including a high speed instruction alignment unit
JP2002521762A (ja) 命令のリタイアメント時に物理レジスタを選択的に自由にするよう構成されたプロセッサ
US5852727A (en) Instruction scanning unit for locating instructions via parallel scanning of start and end byte information
JP2000515275A (ja) 高速命令整列ユニットを含むスーパースカラマイクロプロセッサ
US5890006A (en) Apparatus for extracting instruction specific bytes from an instruction
JP2001522082A (ja) より小さな数の分岐予測および代替ターゲットを用いて近似的により大きな数の分岐予測をすること
US5940602A (en) Method and apparatus for predecoding variable byte length instructions for scanning of a number of RISC operations