JP3689369B2 - 2次リオーダ・バッファ・マイクロプロセッサ - Google Patents

2次リオーダ・バッファ・マイクロプロセッサ Download PDF

Info

Publication number
JP3689369B2
JP3689369B2 JP2001560801A JP2001560801A JP3689369B2 JP 3689369 B2 JP3689369 B2 JP 3689369B2 JP 2001560801 A JP2001560801 A JP 2001560801A JP 2001560801 A JP2001560801 A JP 2001560801A JP 3689369 B2 JP3689369 B2 JP 3689369B2
Authority
JP
Japan
Prior art keywords
instruction
reorder buffer
register
instructions
rename
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
JP2001560801A
Other languages
English (en)
Other versions
JP2003523574A (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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2003523574A publication Critical patent/JP2003523574A/ja
Application granted granted Critical
Publication of JP3689369B2 publication Critical patent/JP3689369B2/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/3013Organisation of register space, e.g. banked or distributed register file according to data content, e.g. floating-point registers, address registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3856Reordering of instructions, e.g. using queues or age tags
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3854Instruction completion, e.g. retiring, committing or graduating
    • G06F9/3858Result writeback, i.e. updating the architectural state or memory

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Microcomputers (AREA)
  • Executing Machine-Instructions (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、一般にマイクロプロセッサの分野に関し、より詳細には複数ターゲットを備えた命令に2次リオーダ・バッファを使用するマイクロプロセッサに関する。
【0002】
【従来の技術】
out-of-order実行(out-of-order execution)を可能にするためにマイクロプロセッサのリオーダ・バッファを使用することは周知のことである。たとえば、Hennessy & Pattersonによる「Computer Architecture a Quantitative Approach」の309〜317ページ(Morgan Kaufmann、第2版、1996年)を参照されたい。リオーダ・バッファは、ある命令が最終的にコミットされるまで実行した命令の結果を記憶するために使用する。多くのスーパスカラ・プロセッサでは、複数の命令を単一サイクルで発行することができる。最高パフォーマンスを達成するために、発行した命令ごとにその命令が発行されたサイクル中にリネーム・レジスタ(rename register)の割振りを行わなければならない。通常、発行した各命令は、マイクロプロセッサの単一レジスタの内容に影響し、したがって、単一リネーム・レジスタ項目だけを必要とする。しかし、それ以外の場合には、命令(以下、複雑命令(complex instruction)という)は2つまたはそれ以上のレジスタの内容に影響する。最適パフォーマンスを達成する場合には、このような複雑命令のレジスタ・リネームもその発行サイクルで行わなければならない。
【0003】
【発明が解決しようとする課題】
残念ながら、従来のマイクロプロセッサで使用するリネーム・バッファは、単一サイクルで実行できる割振りの回数が制限されている。単一サイクルで実行できるリネーム割振りの回数に関するこの制限は、複数の割振りを必要とする命令の存在と結びつくと、発行ユニットが複雑になり、その結果、複数命令のうちの1つが複雑命令である場合に発行ユニットが特定の1サイクルで最大数の命令を発行できなくなる可能性がある。
【0004】
【課題を解決するための手段】
したがって、本発明は、マイクロプロセッサ内で命令を実行する方法であって、複数レジスタの内容に影響する命令を発行することと、命令の影響を受ける第1のレジスタの内容を記憶するために第1のリオーダ・バッファから第1のリネーム・レジスタを割り振ることと、命令の影響を受ける第2のレジスタの内容を記憶するために第2のリオーダ・バッファから第2のリネーム・レジスタを割り振ることを含み、第2のリオーダ・バッファを使用する第2のリネーム・レジスタの割振りにより、命令が第1のリオーダ・バッファ内の複数の割振りスロットを消費するのを防止する方法を提供する。
【0005】
本発明は、命令キャッシュから命令を受け取るように構成され、実行用の命令を発行するように適合された発行ユニットと、命令の1次レジスタ用にリネーム・レジスタを割り振るように専用化された第1のリオーダ・バッファと、命令の2次レジスタ用にリネーム・レジスタを割り振るように専用化された第2のリオーダ・バッファとを含み、発行ユニットが、少なくとも2つのレジスタの内容に影響する複雑命令を発行したときに、その命令の1次レジスタ用に第1のリオーダ・バッファ内のリネーム・レジスタを割り振り、その命令の2次レジスタ用に第2のリオーダ・バッファ内のリネーム・レジスタを割り振るように構成されているプロセッサをさらに提供する。
【0006】
本発明は、システム・メモリと、入力手段と、ディスプレイと、上記のプロセッサとを含むデータ処理システムをさらに提供する。
【0007】
好ましくは、本発明は、命令が単純命令、複雑命令、あるいはその両者の組合せを含むかどうかにかかわらず、サイクルあたり最大数の命令を発行可能なマイクロプロセッサを提供する。
【0008】
第1のリオーダ・バッファがサイクルあたり最大数の割振りをサポートする一実施形態では、第2のリオーダ・バッファを使用する第2のレジスタの割振りにより、複雑命令が第1のリオーダ・バッファ内の複数の割振りスロットを必要とするのを防止する。この方法は、2次リオーダ・バッファ内で割り振られるレジスタに対する依存関係を含む第2の命令を発行することをさらに含むことができる。一実施形態では、2次リオーダ・バッファ内で割り振られたレジスタに対する第2の命令の依存関係を示すリオーダ・バッファ情報は、続いて第2の命令が発行されたときに、2次リオーダ・バッファのみをチェックして依存関係の有無を確認するよう発行ユニットを制限するためにリオーダ・バッファ情報を使用するように、第2の命令に関連づけられる。
【0009】
【発明の実施の形態】
次に図1を参照すると、本発明によるデータ処理システム100の実施形態が示されている。システム100は、1つまたは複数の中央演算処理装置(プロセッサ)101a、101b、101cなど(まとめてまたは総称してプロセッサ(複数も可)101という)を有する。一実施形態の各プロセッサ101は、縮小命令セット・コンピュータ(RISC)マイクロプロセッサを含む。RISCプロセッサに関する追加情報は、一般に、C. May他編集の「PowerPC Architecture: A specification for a New Family of RISC Processors 」(Morgan Kaufmann、1994年、第2版)に記載されている。
【0010】
プロセッサ101は、システム・バス113を介してシステム・メモリ(RAM)250および他の様々なコンポーネントに結合されている。読取専用メモリ(ROM)102は、システム・バス113に結合され、システム100の所与の基本機能を制御する基本入出力システム(BIOS)を含む。
【0011】
図1はさらに、システム・バス113に結合された入出力アダプタ107とネットワークまたは通信アダプタ106とを示している。入出力アダプタ107は、たとえば、ハード・ディスク103または磁気テープ記憶駆動機構105あるいはその両方とやりとりする小型コンピュータ・システム・インタフェース(SCSI)アダプタである。入出力アダプタ107とハード・ディスク103と磁気テープ記憶装置105は、本明細書ではまとめて大容量記憶装置104という(図2を参照)。ネットワーク・アダプタ106はバス113と外部ネットワークを相互接続し、データ処理システム100が他のこのようなシステムとやりとりできるようにする。表示モニタ136はディスプレイ・アダプタ112によってシステム・バス113に接続され、そのディスプレイ・アダプタ112はグラフィックス主体のアプリケーションのパフォーマンスを改善するためのグラフィックス・アダプタとビデオ・コントローラ(ともに図示せず)を含む場合もある。一実施形態のアダプタ107、106、112は、中間バス・ブリッジ(図示せず)を介してシステム・バス113に接続された1つまたは複数の入出力バスに接続されている。ハード・ディスク・コントローラ、ネットワーク・アダプタ、グラフィックス・アダプタなどの周辺装置を接続するための適当な入出力バスとしては、オレゴン州ヒルズバラのPCI Special Interest Groupから入手可能で、参照により本明細書に組み込まれるPCI Local Bus Specification Rev. 2.2によるPeripheral Components Interface(PCI)バスを含む。追加の入出力装置は、ユーザ・インタフェース・アダプタ108およびディスプレイ・アダプタ112を介してシステム・バス113に接続されたものとして示されている。キーボード109、マウス110、スピーカ111はいずれもユーザ・インタフェース・アダプタ108を介してバス113に相互接続されており、そのユーザ・インタフェース・アダプタ108は、たとえば、複数の装置アダプタを単一集積回路に集積するSuperI/Oチップを含むことができる。このようなチップに関する追加情報については、www.national.comにおいてナショナル・セミコンダクタ社から入手可能な「PC87338/PC97338 ACPI 1.0 and PC98/99 Compliant SuperI/O」というデータ・シート(1998年11月)を参照されたい。
【0012】
したがって、図1に構成したように、システム100は、プロセッサ101の形をした処理手段と、システム・メモリ250および大容量記憶装置104を含む記憶手段と、キーボード109およびマウス110などの入力手段と、スピーカ111およびディスプレイ136を含む出力手段とを含む。一実施形態では、システム・メモリ250の一部分と大容量記憶装置104が集合的に、IBM社のAIX(R)オペレーティング・システムなどのオペレーティング・システムを記憶して、図1に示す様々なコンポーネントの機能を調整する。AIXオペレーティング・システムの追加の詳細については、www.ibm.comにおいてIBM社から入手可能な「AIX Version 4.3 Technical Reference: Base Operating System and Extensions, Volumes 1 and 2」(資料番号SC23−4159およびSC23−4160)、「AIX Version 4.3 System User's Guide: Communications and Networks」(資料番号SC23−4122)、「AIX Version 4.3 System User's Guide: Operating System and Devices」(資料番号SC23−4121)に記載され、本明細書に参照として組みこまれている。
【0013】
次に図2に移行すると、システム100での使用に適しているプロセッサ101の一実施形態の簡略ブロック図が提示されている。図示の実施形態のプロセッサ101は、モノリシック半導体基板上に製作された集積回路スーパスカラ・マイクロプロセッサを含む。プロセッサ101は、以下により詳細に述べるように、様々な実行ユニット、レジスタ、バッファ、メモリ、その他の機能ユニットを含む。図2に示すように、プロセッサ101は、バス・インタフェース・ユニット(BIU)212およびプロセッサ・バス213を介してシステム・バス113に結合されており、そのプロセッサ・バス213はシステム・バス113のようにアドレス・バス、データ・バス、制御バスを含む。BIU212は、プロセッサ101と、システム・メモリ250および大容量記憶装置104など、システム・バス113に結合された他の装置との情報転送を制御する。プロセッサ101は、システム・バス113に結合された他の装置のうち、以下の説明を理解するために不要であり、したがって、簡略化のために省略されている装置を含む場合もあることが分かるだろう。
【0014】
BIU212は、プロセッサ101内の命令キャッシュおよびメモリ管理ユニット(MMU)214とデータ・キャッシュおよびメモリ管理ユニット216に接続されている。命令キャッシュ214およびデータ・キャッシュ216内のような高速キャッシュにより、プロセッサ101は、システム・メモリ250から以前転送されたデータまたは命令のサブセットに対して比較的高速のアクセス時間を達成することができ、したがって、データ処理システム100の動作速度が改善される。データ・キャッシュ216および命令キャッシュ214内に記憶されたデータおよび命令はそれぞれアドレス・タグによって識別されアクセスされるが、各アドレス・タグは、そのデータまたは命令が常駐するシステム・メモリの物理アドレスのうちの指定の数のビット(通常は上位ビット)を含む。順次フェッチ・ユニット217は、各クロック・サイクル中に命令キャッシュ214から実行用の命令を取り出す。一実施形態では、順次フェッチ・ユニット217が命令キャッシュ214からブランチ命令を取り出した場合、そのブランチ命令はブランチ処理ユニット(BPU)218に転送されて実行される。順次フェッチ・ユニット217は非ブランチ命令を命令待ち行列219に転送し、そこで命令は記憶され、プロセッサ101の他の機能ユニットによる実行を一時的に保留する。ディスパッチ・ユニット220は、記憶した命令を待ち行列219から取り出し、その命令を発行ユニット(ISU)221に転送する責任がある。ディスパッチ・ユニット220は、完了ユニット240から受け取った命令完了情報に部分的に基づいて、発行ユニット221への命令のディスパッチをスケジューリングする。ISU221の図示の実施形態は、1つまたは複数の発行待ち行列222a、222b、222cなど(まとめてまたは総称して発行待ち行列(複数も可)222という)を含む。ISU221は、可能な場合には各サイクルで新しい命令を実行ユニットに発行することにより、完全にロードされたパイプラインを維持する責任がある。一実施形態では、命令はISU221からout-of-order方式で発行される。
【0015】
図示の実施形態では、プロセッサ101の実行回路は、BPU218に加え、固定小数点ユニット(FXU)223、ロード/ストア・ユニット(LSU)228、浮動小数点ユニット(FPU)230を含む、順次命令を実行するための複数の機能ユニットを含む。それぞれの実行ユニット223、228、230は通常、パイプライン方式で各プロセッサ・サイクル中に特定のタイプの1つまたは複数の命令を実行する。たとえば、FXU223は、指定の汎用レジスタ(GPR)232から受け取ったソース・オペランドを使用して、加算、減算、AND、OR、XORなどの固定小数点数理論理演算を実行する。固定小数点命令の実行に続いて、FXU223はその命令のデータ結果をGPRバッファ232に出力し、そのバッファは結果バス262上で受け取った結果用の記憶域を提供する。FPU230は通常、浮動小数点レジスタ(FPR)236から受け取ったソース・オペランドに対して浮動小数点乗算および除算などの単精度および倍精度の浮動小数点算術論理演算を実行する。FPU230は浮動小数点命令の実行から得られるデータを選択したFPRバッファ236に出力し、そのバッファはその結果データを記憶する。その名前が暗示するように、LSU228は通常、データ・キャッシュ216、低レベル・キャッシュ・メモリ(図示せず)、またはシステム・メモリ250から、選択したGPR232またはFPR236にデータをロードする浮動小数点および固定小数点のロード命令と、GPR232またはFPR236のうちの選択した1つのレジスタからデータ・キャッシュ216に、最終的にはシステム・メモリ250にデータを記憶する浮動小数点および固定小数点のストア命令を実行する。
【0016】
好ましい実施形態では、プロセッサ101はout-of-order命令実行を使用して、そのスーパスカラ・アーキテクチャのパフォーマンスをさらに改善する。したがって、データ依存関係を維持する限り、命令の元のプログラム順序とは異なる順序でFXU223、LSU228、FPU230によって命令を実行することができる。前に示した通り、一連のパイプライン・ステージとしてFXU223、LSU228、FPU230のそれぞれによって命令が処理される。一実施形態のプロセッサ101は、5つの別個のパイプライン・ステージ、すなわち、フェッチ、デコード/ディスパッチ、実行、終了、完了を含む。
【0017】
フェッチ・ステージ中に、順次フェッチ・ユニット217は、命令キャッシュ214から1つまたは複数の非ブランチ命令を取り出し、フェッチした命令を命令待ち行列219内に記憶する。これに対して、順次フェッチ・ユニット217は、ブランチ命令があると、そのブランチ命令を実行のために命令ストリームからBPU218に転送する。BPU218は、一実施形態では、ブランチが行われるかどうかを予測することにより、BPU218が未解決の条件付きブランチ命令を投機的に実行できるようにするブランチ履歴テーブルなどの動的予測メカニズムを含む、ブランチ予測メカニズムを含む。
【0018】
デコード/ディスパッチ・ステージ中に、ディスパッチ・ユニット220およびISU221は、1つまたは複数の命令をデコードし、発行待ち行列222から実行ユニット223、228、230に通常はプログラム順序で発行する。ISU221は、命令の結果(複数も可)をGPR232またはFPR237にコミットする前にその結果(複数も可)を一時的に記憶するために、GPRリネーム・バッファ233またはFPRリネーム・バッファ237内の1つまたは複数のリネーム・バッファを割り振ることができる。さらに、どの命令が完了したかを追跡する手段として完了ユニット240の複数スロット完了バッファ(完了テーブル)内に命令(またはその命令を表す命令識別子またはタグ)を記憶することもできる。
【0019】
実行ステージ中に、実行ユニット223、228、230は、示された演算用のオペランドおよび実行資源が使用可能になったときに便宜的にISU220から発行された命令を実行する。一実施形態の各実行ユニット223、228、230は、オペランドまたは実行資源が使用可能になるまで、その実行ユニットにディスパッチされた命令を記憶する予約ステーションを装備している。命令の実行が終了した後、実行ユニット223、228、230は、データ結果がある場合に、命令タイプに応じてそのデータ結果をGPRまたはFPRのいずれかに記憶する。図示の実施形態では、実行ユニット223、228、230は、どの命令が実行を終了したかを完了ユニット240に通知する。最後に、完了ユニット240の完了テーブルを離れたプログラム順序で命令が完了する。FXU223およびFPU230によって実行される命令は、命令のデータ結果をGPRリネーム・バッファ233およびFPRリネーム・バッファ237からGPR232およびFPR236にそれぞれ転送することによって完了する。
【0020】
プロセッサ101は好ましくは、out-of-order方式の投機的命令実行をサポートする。命令は、予測したブランチ指示で投機的になる場合もあれば、割込み条件を発生する可能性のある命令以上に投機的になる場合もある。ブランチ予測違い(branch misprediction)または割込みが発生した場合、ハードウェアはパイプラインからの望ましくない命令を自動的にフラッシュし、望ましくない結果を廃棄し、精密な例外と適切なブランチ経路に沿って順次実行した命令の効果を提示する。間違った投機的結果は1クロック・サイクル中にすべてのユニットから選択的にフラッシュされ、命令発行によって次のクロック・サイクルを再開することができる。プロセッサ101は、複数のロード・ユニットと単一のストア・ユニットを含むことができる。しかし、プロセッサ101が単一ロード/ストア・ユニットなどの他の構成を含むことができることは当業者には明白であるはずである。
【0021】
命令を発行すると、ISU221は、任意の2つの命令間の相対年齢(relative age)を容易に決定することができるように、その命令にタグを付ける。一実施形態では、整数値(ITAG)で順次命令にタグを付ける。発行した命令の発行順序および相対年齢を決定するためのメカニズムを提供することに加え、ITAGはそれぞれの対応する命令の速記表現を提供する。各命令のITAG値は、それが常駐するパイプライン・ステージと待ち行列項目に関連づけられている。ITAGを使用すると、(プロセッサ生成のフラッシュ命令に応答して)フラッシュ命令に関連するITAGと特定の待ち行列項目または機能ユニット・ステージとの規模比較が実行され、フラッシュした命令と同じくらい新しいかまたはフラッシュした命令より新しい命令(すなわち、同時に発行されたかまたは後で発行されたもの)に関するものである場合にその項目が無効になるという命令フラッシュ・メカニズムが容易になる。フラッシュした命令(およびその後のすべての命令)のすべてのレムナントはマシンから「フラッシュ」され、フェッチ・ユニットは「フラッシュした」命令のアドレスから始まるフェッチにリダイレクトされる。
【0022】
本発明の一実施形態は、複数のリネーム項目を必要とする命令に関する命令発行とレジスタ・リネームを処理する方法を企図するものである。PowerPC(R)命令セットなどの多くの命令セットでは、大多数の命令は単一レジスタのみの内容を更新する。(PowerPC(R)命令セットに関する詳細情報は、モトローラ社から入手可能な「PowerPC 620 RISC Microprocessor User's Manual」(資料番号MPC620UM/AD)に記載されているが、これは参照により本明細書に組み込まれる。)したがって、このような命令は、その結果がGPR232にコミットされるまでその命令の結果を一時的に記憶するために、単一のリネーム・レジスタ項目のみを必要とする。複数の並列実行ユニットを使用し、サイクルあたり複数の命令を発行できるようになっているスーパスカラ・マシンでは、命令とその結果に割り振られたリネーム・レジスタとの1対1の対応により、発行およびリネーム割振りプロセスが簡略化される。たとえば、プロセッサがサイクルあたり4つの命令を発行可能である場合、レジスタ・リネーム制御論理回路はサイクルあたり最高4つのリネーム・レジスタを割り振るように設計されている。しかし、命令セットが複数のリネーム・レジスタの割振りを必要とする1つまたは複数の命令も含む場合、発行/リネーム・メカニズムがより複雑なものになる。たとえば、PowerPC(R)命令セットでは、いくつかの命令は2つのレジスタ(結果レジスタ)の内容に影響する。この開示のため、複数のレジスタの内容に影響する命令は複雑命令という。プロセッサがout-of-order実行を完全にサポートする場合、結果レジスタのそれぞれには、複雑命令が発行されたサイクル中にリネーム・レジスタが割り振られなければならない。従来、複雑命令に必要な複数のリネーム・レジスタは、複雑命令が発行されたサイクル中に他の命令が発行されるのを防止していた。所与のサイクル中に割り振られる必要があるリネーム・レジスタの総数が指定の最大値を超えたかどうかを判定するために、発行論理回路が必要であった。たとえば、プロセッサがサイクルあたり4つの「単純」命令(すなわち、単一レジスタのみの内容に影響する命令)を発行可能で(しかも、そのサイクル中に4つのリネーム・レジスタを割振り可能で)あり、プロセッサの発行ユニットが複雑命令を発行した場合、発行ユニットは、他の3つの発行スロットがすべて同じサイクル中に命令を発行するのを防止することが要求されるだろう。すなわち、プロセッサは、3つの残りの発行スロットのうちの1つが命令を発行するのを防止しなければならず、さらに、2つの残りの発行スロットが複雑命令そのものを発行しなかったことを保証しなければならないだろう。したがって、複数発行スーパスカラ・マイクロプロセッサ内に複雑命令が存在すると発行論理回路の複雑さが増し、最大数の命令が単一サイクル中に発行されるのを防止することにより、パフォーマンスが悪影響を受けていた。
【0023】
次に図3に移行すると、本発明の一実施形態によるリオーダ・バッファ300が示されている。リオーダ・バッファ300は、1次リオーダ・バッファ302と2次リオーダ・バッファ303とを含む。1次リオーダ・バッファ302は1次リネームGPR304を含み、2次リオーダ・バッファ303は2次リネームGPR306を含む。1次リネームGPR302と2次リネームGPR304の組合せは、図2に参照番号233で示されているリネームGPRを含む。(リオーダ・バッファ300の図示の実施形態はリネームGPR233に固有のものであるが、リオーダ・バッファ300は、リネームGPR233の代わりにまたはリネームGPR233に加えて、リネームFPR237を含むこともできる。)好ましい実施形態では、1次リオーダ・バッファ302において単純命令用のすべてのリネーム・レジスタが割り振られている。また、1次リオーダ・バッファ302は、各複雑命令に関連する1次レジスタのために1次リネーム・レジスタ304を割り振るためにも使用する。これに対して2次リオーダ・バッファ303は、単純命令を発行したときは使用しないが、複雑命令の2次レジスタのために2次リネーム・レジスタ306を割り振るために使用する。PowerPC命令セットを使用する一例として、単純ロード命令LOAD RT, RA, RBを発行した場合、その命令が最終的にコミットされるまで(すなわち、その結果がGPR(レジスタ・ファイル)232内のターゲット・レジスタRTに書き込まれるとき)その命令の結果を保持する命令が発行されると、リネーム・レジスタ304が割り振られる。この例のロード命令は単一レジスタのみの内容に影響するので、単一リネーム・レジスタのみを割り振る必要がある。第2の例では、更新付きロード(LU)命令などの複雑命令を発行する(たとえば、LU RT, RA, RB)。この更新付きロード命令では、レジスタRAおよびRBの内容に基づいて有効アドレスを計算し、計算した有効アドレスが付いたメモリ位置の内容をターゲット・レジスタRTにロードする。また、この命令は、計算した有効アドレスの値でRAの内容を更新する。LU命令は、その命令が実行されるたびにソース・メモリ・アドレスを自動的にインクリメントする単一命令を提供することによるソフトウェア・ループの実現を含む、様々な状況で有用である。LU命令は、2つのレジスタの内容に影響し、したがって、発行したときに2つのリネーム・レジスタを割り振る必要があるので、複雑命令である。図示の実施形態では、レジスタAおよびB内のオペランド情報がデュアル・ポート式レジスタ・ファイル232から読み取られる。しかし、この例では、1次リオーダ・バッファ302内の1次リネーム・レジスタ304がターゲット・レジスタRTのために割り振られ、2次リオーダ・バッファ303では2次レジスタ(RA)値のために2次リネーム・レジスタ306が割り振られる。比較すると、従来通りに設計されたプロセッサは、命令が発行されたときに(単一)リオーダ・バッファ内のRTおよびRA両方のレジスタのためにレジスタを割り振らざるを得なくなるだろう。このプロセッサはサイクルあたり指定の数のレジスタを割り振ることしかできず、しかも、LU命令はこれらの割振りスロットのうちの2つを消費するので、従来のプロセッサは、望ましくないことに、LU命令が発行されたサイクル中に最大許容数より少ない命令を発行せざるを得なくなるだろう。この例ではLU命令を使用するが、PowerPC命令セットおよび1つまたは複数の複雑命令を含むその他の命令セットに精通した人であれば、2つのレジスタの内容に影響するどの命令でも本明細書に開示したように2次リオーダ・バッファを含めたことによって利益を得ることが分かるだろう。
【0024】
レジスタ・リネームのために2次リオーダ・バッファ303の形の追加資源を組み込むことにより、有利なことに、プロセッサ101は、命令が単純命令か、複雑命令か、あるいはその組合せかにかかわらず、各サイクル中に最大許容数の命令を発行することができる(最大数の命令が発行できる状態になっているものと想定する)。2次リオーダ・バッファ303によって提供された資源がない場合、複雑命令の発行は、プロセッサの(単一)リオーダ・バッファ内の複数のリネーム・レジスタの割振りを必要とすることになるだろう。単一リオーダ・バッファが単一サイクルで割り振ることができるリネーム・レジスタの数はアーキテクチャ上、制限されているので、複雑命令は、複雑命令が発行されたサイクル中にプロセッサが最大数の命令を発行するのを防止することになるだろう。そのうえ、複雑命令がある場合に、所与のサイクル中にいくつの命令が発行可能であるかを決定するために必要なインテリジェンスにより、発行論理回路に対して要求される複雑さが大幅に増大する。
【0025】
2次リオーダ・バッファ303の存在により、そのオペランド・レジスタのいずれかが現在、2次リオーダ・バッファ303で割り振られているかどうかを命令が判定するメカニズムが必要になる。一実施形態のプロセッサ101では、両方のリオーダ・バッファをサーチして依存関係を決定するために複雑命令が移行中である間に各命令が発行されることが要求されるだけである。この実施形態は簡略化の利点を享受しているが、望ましくないことに、発行サイクル中にサーチされるリオーダ・バッファ項目の数が増加する。所与のサイクル中に発行できる命令の数が増加するにつれて、命令の依存関係を決定するために検査しなければならないリオーダ・バッファ項目の数を最小限にすることがますます望ましいことになる。この問題に対処するため、本発明の一実施形態では、ある命令の最初の実行時にリオーダ・バッファ情報が記録されるメカニズムを企図している。その場合、リオーダ・バッファ情報は、その命令がどのリオーダ・バッファを検査しなければならないかを決定するために、その命令のその後の実行時に使用される。図4に移行すると、以下のコード・セグメント例に関連して、この実施形態の例証となる流れ図が記載されている。
LQ R4, R25, R26
ADD R7, R5, R2
【0026】
ブロック400は、LQ(ロード・クワッド)命令の発行を表している。LQ命令は、PowerPC(R)命令セット内の複雑命令であって、示されているターゲット・レジスタ(R4)ならびに次の順次レジスタ(R5)の内容に影響するものである。ADD命令はR5ソース・オペランドを含むので、ADD命令はLQ命令に依存する。このコード・セグメントの最初の実行時に、好ましくは発行ユニットにより、LQ命令に続くすべての命令(すなわち、LQ命令が発行された後であるがLQ命令がコミットされる前に発行されるすべての命令)が両方のリオーダ・バッファをサーチして依存関係を検出せざるを得ない。したがって、ブロック402で発行ユニットはR5に対するADD命令の依存関係を検出するが、そのR5は2次リオーダ・バッファ303の2次リネーム・レジスタ306で割り振られている。ADD命令とLQ命令との2次バッファの依存関係を検出すると、発行ユニット221は、ADD命令の依存関係が2次リオーダ・バッファ303で見つかったことを示すリオーダ・バッファ情報を記録するように構成されている(ブロック404)。一実施形態では、このリオーダ・バッファ情報は、ADD命令を含む命令キャッシュ項目内の専用ビットまたはビット・セットに記憶される。その後、ADD命令が実行されると(ブロック406)、ADD命令に対応するリオーダ・バッファ情報は、(最初の実行時と同様に)ADD命令の依存関係が2次リオーダ・バッファで見つかったことを発行ユニット221に通知する。このようにして、発行ユニット221は有利なことに、リオーダ・バッファ300に対するそのサーチを2次リオーダ・バッファ303に制限することができる。この例はLQ命令に関連して説明しているが、このメカニズムはPowerPC(R)のLU命令などの他の複雑命令とともに使用する。したがって、2次リオーダ・バッファを選択的に使用可能にしたり使用不能にするためのメカニズムとともに2次発行バッファを組み込むことにより、本発明は、発行ユニット上でのパフォーマンスの犠牲を最小限にしながらサイクルあたり最大の命令発行を可能にするための手段を有利に提供する。
【0027】
本発明が、好ましい実施形態により、2次リネーム方式で2次レジスタを割り振るための追加のリネーム機構を実現することにより、マイクロプロセッサのパフォーマンスにおいて発行/リネーム・メカニズムのパフォーマンスの簡略化および改善を企図することは、この開示内容の恩恵を受ける当業者には明白なことになるだろう。
【図面の簡単な説明】
【図1】 データ処理システムのブロック図である。
【図2】 図1のデータ処理システムでの使用に適しているプロセッサのブロック図である。
【図3】 本発明の一実施形態による1次リオーダ・バッファと2次リオーダ・バッファを含むリオーダ・バッファのブロック図である。
【図4】 本発明の一実施形態の動作を示す流れ図である。

Claims (11)

  1. マイクロプロセッサ内で命令を実行する方法であって、
    第1のレジスタと第2のレジスタの内容に影響する複雑命令を発行することと、
    命令の影響を受ける第1のレジスタの内容を記憶するために第1のリオーダ・バッファから第1のリネーム・レジスタを割り振ることと、
    命令の影響を受ける第2のレジスタの内容を記憶するために第2のリオーダ・バッファから第2のリネーム・レジスタを割り振ることを含み、
    第2のリオーダ・バッファを使用する第2のリネーム・レジスタの割振りにより、命令が第1のリオーダ・バッファ内の複数の割振りスロットを消費するのを防止する方法。
  2. 発行した命令が複雑命令を含み、第1のリオーダ・バッファがサイクルあたり最大数の割振りをサポートし、複雑命令を発行することが、単一サイクル中に複雑命令を含む1組の命令を発行することを含み、その1組の命令内の命令の数が第1のリオーダ・バッファによってサポートされるサイクルあたりの最大数の割振りに等しい、請求項1に記載の方法。
  3. 前記1組の命令が、前記複雑命令と単一レジスタの内容に影響する単純命令との組合せを含む、請求項2に記載の方法。
  4. 発行した命令が複雑命令を含み、複雑命令の発行以後、第2の命令を発行することであって、第2の命令が第2のリネーム・レジスタに依存することと、それに応答してリオーダ・バッファ情報を第2の命令に関連づけることであって、そのリオーダ・バッファ情報が2次バッファ内で割り振られたレジスタに対する第2の命令の依存関係を示すことをさらに含む、請求項1または2に記載の方法。
  5. リオーダ・バッファ情報を記録した後で第2の命令を発行したときに、リオーダ・バッファ情報を使用して、第2の命令のリオーダ・ルックアップを2次リオーダ・バッファ制限することをさらに含む、請求項4に記載の方法。
  6. 第2のリネーム・レジスタの割振りにより、プロセッサが発行できる最大数の命令が命令タイプと無関係であるように第1のリオーダ・バッファ・スロットが保持される、請求項2に記載の方法。
  7. 命令キャッシュから命令を受け取るように構成され、実行用の命令を発行するように適合された発行ユニットと、
    命令の1次レジスタ用にリネーム・レジスタを割り振るように専用化された第1のリオーダ・バッファと、
    命令の2次レジスタ用にリネーム・レジスタを割り振るように専用化された第2のリオーダ・バッファとを含み、
    発行ユニットが、少なくとも2つのレジスタの内容に影響する複雑命令を発行したときに、その命令の1次レジスタ用に第1のリオーダ・バッファ内のリネーム・レジスタを割り振り、その命令の2次レジスタ用に第2のリオーダ・バッファ内のリネーム・レジスタを割り振るように構成されているプロセッサ。
  8. 発行ユニットが、第2の命令が第1の命令に依存しているかどうかを判定するために第2の命令を発行したときに1次および2次リオーダ・バッファをチェックするようにさらに構成されている、請求項7に記載のプロセッサ。
  9. 第2の命令が2次リオーダ・バッファ内で割り振られたレジスタに依存することを検出したときに、発行ユニットが第2の命令に対応する命令キャッシュ項目にリオーダ・バッファ情報を記録し、そのリオーダ・バッファ情報が2次リオーダ・バッファ内の項目に対する第2の命令の依存関係を示す、請求項8に記載のプロセッサ。
  10. その後、リオーダ・バッファ情報を記録した後で第2の命令を発行したときに、そのリオーダ・バッファ情報に応答して、2次リオーダ・バッファのみをチェックして依存関係の有無を確認するように、発行ユニットが構成されている、請求項9に記載のプロセッサ。
  11. システム・メモリと、
    入力手段と、
    ディスプレイと、
    請求項7ないし10のいずれかに記載のプロセッサとを含むデータ処理システム。
JP2001560801A 2000-02-17 2001-02-16 2次リオーダ・バッファ・マイクロプロセッサ Expired - Fee Related JP3689369B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/506,527 US6629233B1 (en) 2000-02-17 2000-02-17 Secondary reorder buffer microprocessor
US09/506,527 2000-02-17
PCT/GB2001/000650 WO2001061479A1 (en) 2000-02-17 2001-02-16 Secondary reorder buffer microprocessor

Publications (2)

Publication Number Publication Date
JP2003523574A JP2003523574A (ja) 2003-08-05
JP3689369B2 true JP3689369B2 (ja) 2005-08-31

Family

ID=24014947

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001560801A Expired - Fee Related JP3689369B2 (ja) 2000-02-17 2001-02-16 2次リオーダ・バッファ・マイクロプロセッサ

Country Status (8)

Country Link
US (1) US6629233B1 (ja)
EP (1) EP1256053B1 (ja)
JP (1) JP3689369B2 (ja)
AT (1) ATE248399T1 (ja)
AU (1) AU2001232126A1 (ja)
DE (1) DE60100665D1 (ja)
TW (1) TW475149B (ja)
WO (1) WO2001061479A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862676B1 (en) 2001-01-16 2005-03-01 Sun Microsystems, Inc. Superscalar processor having content addressable memory structures for determining dependencies
US6968447B1 (en) 2001-04-13 2005-11-22 The United States Of America As Represented By The Secretary Of The Navy System and method for data forwarding in a programmable multiple network processor environment
US6950927B1 (en) 2001-04-13 2005-09-27 The United States Of America As Represented By The Secretary Of The Navy System and method for instruction-level parallelism in a programmable multiple network processor environment
US20060277398A1 (en) * 2005-06-03 2006-12-07 Intel Corporation Method and apparatus for instruction latency tolerant execution in an out-of-order pipeline
GB2442499B (en) * 2006-10-03 2011-02-16 Advanced Risc Mach Ltd Register renaming in a data processing system
US9262171B2 (en) * 2009-06-30 2016-02-16 Oracle America, Inc. Dependency matrix for the determination of load dependencies
JP5423217B2 (ja) 2009-08-04 2014-02-19 富士通株式会社 演算処理装置、情報処理装置、および演算処理装置の制御方法
US8578136B2 (en) 2010-06-15 2013-11-05 Arm Limited Apparatus and method for mapping architectural registers to physical registers
KR102010317B1 (ko) * 2013-03-14 2019-08-13 삼성전자주식회사 재명명 테이블 재구성을 위한 리오더-버퍼를 기초로 하는 동적 체크포인팅
US9448799B2 (en) * 2013-03-14 2016-09-20 Samsung Electronics Co., Ltd. Reorder-buffer-based dynamic checkpointing for rename table rebuilding
US10713049B2 (en) * 2014-04-25 2020-07-14 Avago Technologies International Sales Pte. Limited Stunt box to broadcast and store results until retirement for an out-of-order processor
US10241800B2 (en) * 2015-06-16 2019-03-26 International Business Machines Corporation Split-level history buffer in a computer processing unit
US10175985B2 (en) * 2016-03-28 2019-01-08 International Business Machines Corporation Mechanism for using a reservation station as a scratch register
US10445091B1 (en) 2016-03-30 2019-10-15 Apple Inc. Ordering instructions in a processing core instruction buffer
US10552152B2 (en) 2016-05-27 2020-02-04 Arm Limited Method and apparatus for scheduling in a non-uniform compute device
US10445094B2 (en) * 2016-05-27 2019-10-15 Arm Limited Method and apparatus for reordering in a non-uniform compute device
US10795815B2 (en) 2016-05-27 2020-10-06 Arm Limited Method and apparatus for maintaining data coherence in a non-uniform compute device
US10936321B2 (en) * 2019-02-01 2021-03-02 International Business Machines Corporation Instruction chaining
US11144324B2 (en) * 2019-09-27 2021-10-12 Advanced Micro Devices, Inc. Retire queue compression
US11113068B1 (en) * 2020-08-06 2021-09-07 Microsoft Technology Licensing, Llc Performing flush recovery using parallel walks of sliced reorder buffers (SROBs)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69506623T2 (de) * 1994-06-03 1999-07-22 Motorola Inc Datenprozessor mit einer Ausführungseinheit zur Durchführung von Ladebefehlen und Verfahren zu seinem Betrieb
US5727177A (en) 1996-03-29 1998-03-10 Advanced Micro Devices, Inc. Reorder buffer circuit accommodating special instructions operating on odd-width results
DE69814415T2 (de) * 1997-01-29 2004-03-11 Advanced Micro Devices, Inc., Sunnyvale Zeilenorientierter wiedereinordnungsspeicher für superskalaren mikroprozessor
US6035394A (en) * 1998-02-17 2000-03-07 International Business Machines Corporation System for providing high performance speculative processing of complex load/store instructions by generating primitive instructions in the load/store unit and sequencer in parallel

Also Published As

Publication number Publication date
US6629233B1 (en) 2003-09-30
EP1256053B1 (en) 2003-08-27
ATE248399T1 (de) 2003-09-15
JP2003523574A (ja) 2003-08-05
EP1256053A1 (en) 2002-11-13
WO2001061479A1 (en) 2001-08-23
AU2001232126A1 (en) 2001-08-27
TW475149B (en) 2002-02-01
DE60100665D1 (de) 2003-10-02

Similar Documents

Publication Publication Date Title
US6728866B1 (en) Partitioned issue queue and allocation strategy
JP3689369B2 (ja) 2次リオーダ・バッファ・マイクロプロセッサ
EP2674856B1 (en) Zero cycle load instruction
EP0886209B1 (en) Extensible risc microprocessor architecture
EP0751458B1 (en) Method and system for tracking resource allocation within a processor
US5611063A (en) Method for executing speculative load instructions in high-performance processors
EP1385085B1 (en) High performance risc microprocessor architecture
US6105129A (en) Converting register data from a first format type to a second format type if a second type instruction consumes data produced by a first type instruction
US6826704B1 (en) Microprocessor employing a performance throttling mechanism for power management
US5961636A (en) Checkpoint table for selective instruction flushing in a speculative execution unit
US6393555B1 (en) Rapid execution of FCMOV following FCOMI by storing comparison result in temporary register in floating point unit
US5887161A (en) Issuing instructions in a processor supporting out-of-order execution
US8069340B2 (en) Microprocessor with microarchitecture for efficiently executing read/modify/write memory operand instructions
US6609190B1 (en) Microprocessor with primary and secondary issue queue
US7284117B1 (en) Processor that predicts floating point instruction latency based on predicted precision
US5913048A (en) Dispatching instructions in a processor supporting out-of-order execution
US5778210A (en) Method and apparatus for recovering the state of a speculatively scheduled operation in a processor which cannot be executed at the speculated time
US6697939B1 (en) Basic block cache microprocessor with instruction history information
US5721857A (en) Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
JPH10312282A (ja) 命令完了を改良するための方法および装置
US5717882A (en) Method and apparatus for dispatching and executing a load operation to memory
US6247117B1 (en) Apparatus and method for using checking instructions in a floating-point execution unit
US5740393A (en) Instruction pointer limits in processor that performs speculative out-of-order instruction execution
US5778220A (en) Method and apparatus for disabling interrupts in a highly pipelined processor
JPH10283187A (ja) プロセッサのアーキテクチャ状態を維持するための方法および装置

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050112

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050415

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050610

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

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20090617

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20100617

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20110617

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees