JP5273982B2 - データ処理システム内のレジスタリネーミング - Google Patents

データ処理システム内のレジスタリネーミング Download PDF

Info

Publication number
JP5273982B2
JP5273982B2 JP2007259996A JP2007259996A JP5273982B2 JP 5273982 B2 JP5273982 B2 JP 5273982B2 JP 2007259996 A JP2007259996 A JP 2007259996A JP 2007259996 A JP2007259996 A JP 2007259996A JP 5273982 B2 JP5273982 B2 JP 5273982B2
Authority
JP
Japan
Prior art keywords
register
mapping
specifier
physical
instruction
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.)
Active
Application number
JP2007259996A
Other languages
English (en)
Other versions
JP2008090848A (ja
Inventor
メラニー・エマニュエル・ルーシー・ビンセン
フローラン・ベゴン
セドリック・デニ・ロベール・エロ
ノルベール・ベルナール・ウジェヌ・ラタイユ
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2008090848A publication Critical patent/JP2008090848A/ja
Application granted granted Critical
Publication of JP5273982B2 publication Critical patent/JP5273982B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

Description

本発明は、データ処理システムに関する。より具体的には、本発明は、アーキテクチャ上のレジスタセットのレジスタ指定子を物理レジスタセットのレジスタ指定子にマップするレジスタリネーミングを使用するデータ処理システムに関する。
レジスタリネーミングは、アウトオブオーダー処理のサポートで公知の補助的技術である。そのようなシステムは、ゲート数を減少し、かつ電力消費を低減することが主な考察事項でない、ハイパフォーマンスアプリケーションを対象としている。
各々がリネーミングを要求する多数のレジスタを参照するプログラム命令を扱う場合に、レジスタリネーミング技術に問題が発生する。多数のレジスタを一度にリネームすることをサポートするのに必要な機構は、不都合な多数のゲート数とそれに関連する不都合な大電力消費とを必要とする。さらに、一度リネーミング機構がレジスタをリネームすると、次いでそれらのリネーム済レジスタ指定子の全てを、命令パイプラインに沿って並列に、それらのレジスタを利用するユニットに渡す必要がある。それらの多数のリネーム済レジスタ指定子を、命令パイプラインに沿って並列に渡すことにも、不都合なゲート数及び面積のペナルティが、それに関連する不都合な電力消費の増大とともに要求される。上記の問題は、ゲート数、面積及び電力消費が特に制約条件とはならないシステムでは、重大ではないこともあるが、ゲート数、面積及び消費電力を低く維持することが好ましい、小型の、安価かつ電力効率の良いプロセッサの環境内では、重大な問題を露呈する。
上記に対する代替案として、多数のレジスタリネーミングを要求する命令をストールし、いくらかの処理サイクルに亘る前記レジスタリネーミングを達成可能にすることがある。しかしながら、不都合なことには、これによって後続のプログラム命令をストールするとともに、さらに一度リネーム済レジスタ指定子が生成されると、前記レジスタ指定子を、不都合なほどに広い経路を端から端までパイプラインに沿って並列に渡す必要がある。
一構成から検討すると、本発明は、データ処理のための装置であって、
物理レジスタセットと、
アーキテクチャ上のレジスタ指定子セットのレジスタ指定子に応答して、前記レジスタ指定子を物理レジスタセットのレジスタにマップするレジスタリネーミング回路とを具備し、
前記アーキテクチャ上のレジスタ指定子セットは、命令セット内の命令によって指定されるレジスタを表すとともに、前記物理レジスタセットは、前記命令セットの命令を処理するための物理レジスタであり、
前記レジスタリネーミング回路は、所定数より多くのレジスタマッピングを要求する動作を指示するプログラム命令に応答し、
(i)前記所定数のレジスタマッピングを、初期レジスタマッピングセットと、残余レジスタマッピングセットとに分割し、
(ii)さらなる処理のためにメインチャネル上に出力される、物理レジスタのレジスタ指定子を生成するために、前記初期レジスタマッピングセットを実行し、
(iii)前記初期レジスタマッピングセットの実行に続いて、前記レジスタリネーミング回路によって少なくとも1つの他のプログラム命令のレジスタ指定子を生成するとともに前記メインチャネル上に出力するのと同時に、かつ前記メインチャネルと別のバックグラウンドチャネル上に出力する、物理レジスタのレジスタ指定子を生成するために、前記残余レジスタマッピングセットを実行する
ことを特徴とする装置である。
現実的には、多数の物理レジスタ指定子を要求する命令の物理レジスタ指定子を、実際には一度に全て消費することはなく、従って単一動作内で生成する必要も、命令パイプラインに沿って一緒に渡す必要もないことを、本技術は認識している。本技術は、さらなる処理のためにレジスタ指定子を出力するレジスタリネーミング回路から、メインチャネルと、バックグラウンドチャネルとの両者を構成することで、この認識を利用している。これにより、初期レジスタ指定子セットと、後続プログラム命令のレジスタ指定子とを、メインチャネル下流のさらなる処理のために、レジスタリネーミング回路から出力する。多数のレジスタ指定子を要求するプログラム命令の実行を開始するさらなる処理に必要とされる初期レジスタ指定子が、標準的であるメインチャネルの下流で遅延なく利用可能となることとともに、後続のプログラム命令も、標準的であるメインチャネルの下流でそれらのレジスタ指定子を提供しうることを、これにより構成する。メインチャネルに沿って送信される他のレジスタ指定子と同時に、さらなる処理のために、多数のレジスタ指定子を要求する命令の残余レジスタ指定子セットを渡しうる機構を、バックグラウンドチャネルは構成する。
例として、ARM命令セットのロード/ストア多重命令を考察する。そのような命令は、例えば、メモリから読み込まれたデータ値をロードする8本のレジスタを指定しても良い。このロード/ストア多重命令は、レジスタリネーミングを採用するシステムの環境内で、データ値を適切な物理レジスタにロード可能にするために、リネーム済物理レジスタセットのレジスタ指定子を供給する必要がある、ロード/ストアユニットが実行する。しかしながら、そのようなロード/ストアユニットは、通常は、並列にデータ値をロードするために、限られた容量を具備しているとともに、この容量は、発生するレジスタロードの総数よりも少ないことが多い。このように、もしメインチャネルの下流でロード/ストア動作全体を開始するのに必要なレジスタ指定子をロード/ストアユニットに渡すとともに、次いで前記バックグラウンドチャネルを介して後続のレジスタ指定子を供給すれば、全てのリネーミング動作を一度に(in one go)実行可能にするリネーミングステージをストールさせることなく、前記リネーミングステージから多数のレジスタ指定子を並列に渡すことを必要とせず、また残余レジスタ指定子がある間に後続のプログラム命令がメインチャネルを介して自分のリネーミング物理レジスタ指定子を渡すことを可能にすることを妨げることなく、前記ロード/ストアユニットが適切にロード/ストア多重命令を実行する作業を適切に維持することができる。
バックグラウンドチャネルは、さらなる処理のために前記残余レジスタ指定子セットの全てを単一動作で渡し終える(pass out)ことが可能であるが、前記残余レジスタ指定子セットをシーケンスとしてバックグラウンドチャネルに出力するように構成する方が、より効率的であるとともにより柔軟性がある。
これを補助するために、レジスタリネーミング回路は、実行すべき残余レジスタマッピングセットを示すアーキテクチャ上のレジスタ指定子を格納するためのバッファーメモリを具備している。このバッファーメモリは、残余レジスタマッピングセットを実行及び出力する順番を示す順序つきリストとして、アーキテクチャ上のレジスタ指定子を格納しても良く、かつこの順序は、さらなる処理のためにレジスタ指定子を一度に生成するとともに渡すアーキテクチャモデルとの整合性を維持する方法によって、それらのレジスタ指定子を使用するさらなる処理を実行する回路が使用することが想定される順序に一致しても良い。
本技術から発生しうる制約は、もしアーキテクチャ上のレジスタ指定子が、実行すべき残余レジスタマッピングセット内に含まれるならば、それに関連する残余アーキテクチャ上のレジスタ指定子セットを伴う先行するプログラム命令が、対象となるアーキテクチャ上のレジスタ指定子が適切にリマッピングされる対象となる程度に処理されるまで、当該アーキテクチャ上のレジスタ指定子がリマッピングの対象とはならないことである。これにより、リネーミング動作を具備するとともに上流のインオーダー動作が維持される。なぜなら、アウトオブオーダー動作が許容されることを可能にするのは、前記リネーミング動作であるとともに、通常は関連する回復機構及び結合機構であるからである。
発生しうる他の制約は、先行命令からの実行すべき残りのマッピングが空でない限り、命令が残余マッピングセットを使用しないことである。
所定数を越えるとともに、メインチャネルとバックグラウンドチャネルとの両者の使用を要求する多数のレジスタ指定子を具備するプログラム命令は、広範な種々の異なる形態をとりうることが好ましい。本技術を使用可能である1つの際立った実施例の形式は、関連するロード/ストアユニットで実行されるロード/ストア命令で使用しても良い。この環境では、バックグラウンドチャネルが、ロード/ストアユニットに直接物理レジスタのレジスタ指定子を渡すことが可能である。もし、ロード/ストアユニットが、どのプロセッササイクルでもN個のレジスタ指定子を消費する性能を有するならば、ロード/ストアユニットを好ましい程度に完全に占有することを維持するために、処理サイクル内でN個までのレジスタ指定子の受け渡しをサポート可能なように、バックグラウンドチャネルの幅を選択するために、このことを使用しても良い。
他の構成から検討すると、本発明は、データ処理のための方法であって、
アーキテクチャ上のレジスタ指定子セットのレジスタ指定子を、物理レジスタセットのレジスタにマップする段階を具備し、
前記アーキテクチャ上のレジスタ指定子セットは、命令セット内の命令によって指定されるレジスタを表すとともに、前記物理レジスタセットは、前記命令セットの命令を処理するための物理レジスタであり、
所定数より多くのレジスタマッピングを要求する動作を指定するプログラム命令に応答し、
(i)前記所定数のレジスタマッピングを、初期レジスタマッピングセットと、残余レジスタマッピングセットとに分割し、
(ii)さらなる処理のためにメインチャネル上に出力される、物理レジスタのレジスタ指定子を生成するために、前記初期レジスタマッピングセットを実行し、
(iii)前記初期レジスタマッピングセットの実行に続いて、前記レジスタリネーミング回路によって少なくとも1つの他のプログラム命令のレジスタ指定子を生成するとともに前記メインチャネル上に出力するのと同時に、かつ前記メインチャネルと別のバックグラウンドチャネル上に出力する、物理レジスタのレジスタ指定子を生成するために、前記残余レジスタマッピングセットを実行する
ことを特徴とする方法を構成する。
さらなる他の構成から検討すると、本発明は、データ処理のための装置であって、
物理レジスタセット手段と、
アーキテクチャ上のレジスタ指定子セットのレジスタ指定子に応答して、前記レジスタ指定子を前記物理レジスタセットのレジスタにマップするレジスタリネーミング手段とを具備し、
前記アーキテクチャ上のレジスタ指定子セットは、命令セット内の命令によって指定されるレジスタを表すとともに、前記物理レジスタセットは、前記命令セットの命令を処理するための物理レジスタであり、
前記レジスタリネーミング手段は、所定数より多くのレジスタマッピングを要求する動作を指定するプログラム命令に応答し、
(i)前記所定数のレジスタマッピングを、初期レジスタマッピングセットと、残余レジスタマッピングセットとに分割し、
(ii)さらなる処理のためにメインチャネル上に出力される、物理レジスタのレジスタ指定子を生成するために、前記初期レジスタマッピングセットを実行し、
(iii)前記初期レジスタマッピングセットの実行に続いて、前記レジスタリネーミング回路によって少なくとも1つの他のプログラム命令のレジスタ指定子を生成するとともに前記メインチャネル上に出力するのと同時に、かつ前記メインチャネルと別のバックグラウンドチャネル上に出力する、物理レジスタのレジスタ指定子を生成するために、前記残余レジスタマッピングセットを実行する
ことを特徴とする装置を構成する。
本発明の上記の及び他の目的、特徴及び利点は、添付図面と関連付けて読むべき後続の例示的な実施態様の詳細な説明から明らかになる。
図1は、プリフェッチステージ6と、デコードステージ8と、リネーミングステージ10と、発行ステージ12と、実行ステージ14(及び関連する物理レジスタ15)と、ライトバックステージ16とを具備する命令パイプラインにプログラム命令を供給する命令キャッシュ4を具備するデータ処理装置2を図示している。実際には、そのようなデータ処理装置2の内部に、追加の及び/又は代替のパイプラインステージを具備するのが好ましい。さらに、完全なデータ処理装置2は通常、当業者に明らかであるとともに、簡潔を旨とするために図1から省略されている、多くの追加構成要素を具備するのが好ましい。
第1メイン実行ユニット18と、積和ユニット20と、第2メイン実行ユニット22と、(システムのデータ側のステートマシンであるロード/ストアユニットに要求を送信するように動作する)アドレスロード/ストアステージ24とを含み、プログラム命令を並列に処理可能である複数のユニットを、実行ステージ14は具備する。第1メイン実行ユニット18と、積和ユニット20とは、ライトバックユニット26を共有する。第2メイン実行ユニット22と、アドレスロード/ストアステージ24とは、各々専用のライトバックユニット28,30をそれぞれ具備している。スーパースカラシステムでは普通であるが、並列実行のために、発行ステージ12から、実行ステージ14の種々の適切な部分に、複数の命令を並列に発行しても良い。リネーミングステージ10は、レジスタリネーミングを実行することによって、発行ステージ12がアウトオブオーダー命令発行を実行することを許可する。アウトオブオーダー実行を容易にするためのレジスタリネーミングは、それ自体公知の技術であり、かつ本明細書ではこれ以上説明しない。本技術は、インオーダー命令発行システムでも、即ち全てのレジスタ指定子をパイプラインに沿って次々と送り込むことを回避するのにも有用である。
本技術のリネーミングステージ10は、レジスタ指定子及び他の制御信号を命令パイプライン内の下流方向に渡す、メインチャネル出力32と、バックグラウンドチャネル出力34との両者を具備する。メインチャネル32は、比較的少数のレジスタ指定子を要求する命令の殆どに使用するとともに、従って、例えば読み込まれる3本のレジスタと書き込まれる2本のレジスタに関連するレジスタ指定子を渡すだけの能力を有する幅のような、そのような通常の命令に合致した幅を具備するが、これらのサイズは、純粋に実施例であるとともに、対象とする応用例に依存する異なる幅を使用しても良い。バックグラウンドチャネル34は、メインチャネル32に沿って渡すいかなる信号とも独立に、1処理サイクル当たり2個のレジスタ指定子をアドレスロード/ストアステージ24に供給することをサポートする幅を具備する。
ロード/ストア命令が、メインチャネルの性能を超える数の(即ち、所定数よりも多くの)レジスタ指定子を要求する状況に遭遇した場合、実行すべきレジスタマッピングを、初期セットと、残余セットとに分割する。 初期セットを最初に実行し、結果をリネーミングステージ10から、通常のメインチャネル32の下流の発行ステージ12に渡す。残余リマッピングセットを、バックグラウンド動作として後続の処理サイクル上で実行するとともに、結果を一度に2つ、バックグラウンドチャネル34に沿って、アドレスロード/ストアステージ24に直接渡す。このように、一度初期マッピングセットをリネーミングステージ10で実行するとともに、メインチャネル32に沿って渡したら、後続のプログラム命令をストールさせることなしに、前記後続のプログラム命令を扱うためにメインチャネル32及びリネーミングステージ10のリネーミング能力の少なくともいくらかが利用可能になる。後続のプログラム命令が、実行すべき残余リマッピングセット内に含まれるアーキテクチャ上のレジスタを指定する場合には、リマッピングそれ自体は順番に実行すべき制約を受けるので、例外が存在する。そのような後続プログラム命令を停止する。
図2は、ロード多重命令と、後続のプログラム命令とに関連するマッピング動作を実行する、リネーミングステージ10を図示している。状態Aでは、リネーミングステージ10で、ロード多重命令LDMを受信するとともに、前記LDMは、レジスタr13内部に保持される値によって指定されるメモリアドレスから開始するメモリから順に読み込まれるデータ値を、レジスタr0−r7にロードすることを指示する。この実施例内のリネーミングステージ10は、一度に5個のレジスタ指定子をメインチャネル32に沿って発行ステージ12に渡す能力を具備しているが、これは前記LDM命令の完全な実行のために必要とされる、8個のリマップされたレジスタ指定子の全てを渡すのには不十分である。リネーミングステージ10内部に具備するリネーミングエンジン36は、1処理サイクル内で、5個のレジスタリネーミング動作を実行する(form)能力を具備する。このように、時刻Aで図示する状態では、レジスタr0−r4のリネーミングを実行するとともに、これらのリネーム済レジスタ指定子を、前記LDM命令に関連する制御信号とともに、一緒にメインチャネル32に沿って、発行ステージ12に渡し終えるとともに、そこからアドレスロード/ストアステージ24に渡し終える。未だリネームされていない残余アーキテクチャ上のレジスタセットr5−r7の指定子を「リネーム対象リスト」内に格納するバッファーメモリ38を構成する。
状態Bは、後続の命令MOVが、指定されたデータ値をレジスタr8にロードすることを指示する、後続のサイクルを図示している。対象レジスタ、即ちr8のリネーミング要求をリネーミングエンジン36に渡すとともに、返却されるリネーム済レジスタ指定子をMOV命令に関連する制御信号とともに、メインチャネル32に沿って下流の発行ステージ12に一緒に発行する。同時に、残余アーキテクチャ上のレジスタを表す「リネーム対象リスト」内の次の2本のアーキテクチャ上のレジスタを、リネームするためにリネーミングエンジン36に送信する。この実施例では、バッファーメモリ8内部に格納される順序つきリスト内の次の2本のアーキテクチャ上のレジスタは、レジスタr5とr6である。これらのレジスタr5とr6とを、「リネーム対象リスト」から削除し、リネーミングエンジン36でマップするとともに、バックグラウンドチャネル34上で、アドレスロード/ストアステージ24に直接、そのロード/ストアパイプラインに沿って出力する。状態Bは、1本のアーキテクチャ上のレジスタr7を、リマップするためにバッファーメモリ38内に留めておく。
状態Cは、レジスタr9に保持されるデータ値に固定値を加算するとともに、次いでこの結果をレジスタr9に書き戻すADD命令を実行する次の処理サイクルを図示している。レジスタr9に関するリネーミング要求をリネーミングエンジン36に送信する。「リネーム対象リスト」内の最後のアーキテクチャ上のレジスタr7も、バッファーメモリ38からリネーミングエンジン36に送信し、リネーミング対象にするとともに、次いでロード/ストアパイプラインへのバックグラウンドチャネル34上に出力する。これにより、バッファーメモリ38は空になる。レジスタr9に関するADD命令用のリネーム済レジスタ指定子を、前記ADD命令に関連する制御信号と一緒に、同時にメインチャネル32に沿って渡し終える。
図3は、リネーミングステージ10の動作を図示するフローチャートである。図3のフローチャートは、やむを得ず、ハードウェア動作には反映されない方式で、動作を順に実行するものとして表すものと解する。それでも、全体の動作は、同一の結果を達成するとともに、図3で図示された動作を構成する種々のハードウェアによる実施がいかにして構成可能であるか当業者には明らかである。
段階42で、リネーミングステージ10は、リネーミングを要求する命令の受信を待機する。段階44は、バッファーメモリ38の「リネーム対象リスト」内に格納されることによって既に留保中のリマッピング動作対象であるアーキテクチャ上のレジスタをリマップする要求を、受信した命令が具備するか否かを検査する。もしそのような留保中のリマッピングが検出されたら、リネーミングステージ10は、直前のリマッピングが完了する後まで、新規リマッピングの実行を待機する。
段階46で、新規プログラム命令が、所定数より多くの実行すべきレジスタリマッピングを要求するか否かを判定する。例えば、2,3のレジスタのみをロードする指示をするLDM命令は、リマップするとともに、バックグラウンドチャネル34の使用を要求せずに、パイプラインの残りの部分に渡しても良い。しかしながら、長いレジスタリストを具備するLDM命令は、バックグラウンドチャネル34の使用を要求する。
もし所定数を超えないならば、次いでリネーミングエンジン36がレジスタリネーミングを実行する段階48に処理が進むとともに、次いで対象となる命令とともに物理レジスタ指定子を一緒に、メインチャネル32に沿って発行ステージ12に出力する段階50に進む。
もし所定数を超えるならば、次いで「リネーム対象リスト」が空であるか否かの判定を行う段階47に進む。もし「リネーム対象リスト」が空でなければ、次いで段階42でリネーミングのために受信された命令を、「リネーム対象リスト」内で異なる命令からのアーキテクチャ上のレジスタ指定子を混同しないように、「リネーム対象リスト」が空になるまでストールする。このストール状況は稀であるとともに、多くの場合、他の理由によるストールに導く。段階52で、リネーミングを要求する最初の5本のレジスタをリネーミング動作対象とする。リネーミングを要求する前記残余アーキテクチャ上のレジスタ指定子を、バッファーメモリ38の「リネーム対象リスト」へ格納する。段階54で、リマップされた5本のレジスタの物理レジスタ指定子を、対象命令とともに、一緒にメインチャネル32上で渡し終える。(図3の段階54,50は、リマッピング要求する命令の受信に関して、通常同じタイミングを有する。)段階54の後に、次の処理サイクルで、バッファーメモリ38内に格納された「リネーム対象リスト」上の次の2本までのレジスタを、リネーミングエンジン36を使用してリネームする。これは、図2のステージB及びCで説明している。段階58で、残余アーキテクチャ上のレジスタ指定子セットのリネーム済メンバーである物理レジスタ指定子を、バックグラウンドチャネル34からアドレスロード/ストアステージ24へ、ロード/ストアパイプライン内に出力する。段階60では、バッファーメモリ38内に格納された「リネーム対象リスト」内にレジスタが残っているか否かを判定するとともに、もし残っていれば、段階56に処理を戻す。
添付図面を参照しながら、本明細書で本発明の例示的な実施形態を詳細に説明してきたが、本発明はそれらの明確な実施形態に限定されるものではなく、かつ本願特許請求の範囲で定義される本発明の範囲及び趣旨から逸脱することなく、種々の変形例及び修正例を、当業者が容易に想到可能であると解するべきである。
図1は、レジスタリネーミングステージを有するとともに、レジスタ指定子を渡すメインチャネル及びバックグラウンドチャネルの両者を含む、命令パイプラインを具備するデータ処理装置を図式的に説明している。 図2は、ロード/ストア多重命令処理中の複数の時刻における、図1のシステムの一部を形成するレジスタリネーミング回路を図式的に説明している。 図3は、レジスタ指定子を渡す、メインチャネル及びバックグラウンドチャネルの両者を利用するレジスタリネーミング回路の動作を図式的に説明するフローチャートである。
符号の説明
4 命令キャッシュ
6 プリフェッチステージ
8 デコードステージ
10 リネーミングステージ
12 発行ステージ
14 実行ステージ
15 物理レジスタ
16 ライトバックステージ
18 第1メイン実行ユニット
20 積和ユニット
22 第2メイン実行ユニット
24 アドレスロード/ストアステージ
26 ライトバックユニット
28 ライトバックユニット
30 ライトバックユニット
32 メインチャネル
34 バックグラウンドチャネル

Claims (19)

  1. データ処理のための装置であって、
    物理レジスタセットと、
    アーキテクチャ上のレジスタ指定子セットのレジスタ指定子に応答して、前記レジスタ指定子を物理レジスタセットのレジスタにマップするレジスタリネーミング回路とを具備し、
    前記アーキテクチャ上のレジスタ指定子セットは、命令セット内の命令によって指定されるレジスタを表すとともに、前記物理レジスタセットは、前記命令セットの命令を処理するための物理レジスタであり、
    前記レジスタリネーミング回路は、所定数より多くのレジスタマッピングを要求する動作を指示するプログラム命令に応答し、
    (i)前記所定数より多くのレジスタマッピングを、初期セットのレジスタマッピングと、残余セットのレジスタマッピングとに分割し、
    (ii)さらなる処理のためにメインチャネル上に出力される、物理レジスタのレジスタ指定子を生成するために、前記初期セットのレジスタマッピングを実行し、
    (iii)前記初期セットのレジスタマッピングの実行に続いて、前記レジスタリネーミング回路によって少なくとも1つの他のプログラム命令のレジスタ指定子を生成するとともに前記メインチャネル上に出力するのと同時に、かつ前記メインチャネルと別のバックグラウンドチャネル上に出力する、物理レジスタのレジスタ指定子を生成するために、前記残余セットのレジスタマッピングを実行する
    ことを特徴とする装置。
  2. 前記バックグラウンドチャネルに出力する物理レジスタのレジスタ指定子とともに、減少した残余レジスタマッピングセットを、各々が生成するレジスタマッピングのシーケンスとして、前記残余レジスタマッピングを実行することを特徴とする請求項1に記載の装置。
  3. 前記残余セットのレジスタマッピングを示すアーキテクチャ上のレジスタ指定子を格納するためのバッファーメモリを前記レジスタリネーミング回路が具備することを特徴とする請求項1に記載の装置。
  4. 残余セットのレジスタマッピングを実行する順番を指示する順序つきリストとして、前記バッファーメモリが前記アーキテクチャ上のレジスタ指定子を格納することを特徴とする請求項3に記載の装置。
  5. 前記残余セットのレジスタマッピングで使用されるアーキテクチャ上のレジスタ指定子を有するプログラム命令は、前記アーキテクチャ上のレジスタ指定子が前記残余セットのレジスタマッピングの対象から削除される後までは、レジスタマッピングの対象とならないことを特徴とする請求項1に記載の装置。
  6. もし、前記所定数より多くのレジスタマッピングを要求する動作を指示する先行プログラム命令からの残余セットのレジスタマッピングが残っているならば、前記所定数より多くのレジスタマッピングを要求する前記動作を指示する前記プログラム命令をストールすることを特徴とする請求項1に記載の装置。
  7. 前記プログラム命令は、ロード/ストアユニットで実行するロード/ストア多重命令であることを特徴とする請求項1に記載の装置。
  8. 前記バックグラウンドチャネルが、前記物理レジスタのレジスタ指定子を、前記ロード/ストアユニットに直接渡すことを特徴とする請求項7に記載の装置。
  9. 前記ロード/ストアユニットは、1処理サイクル内で、N本の物理レジスタに格納された値を消費するロード/ストア動作を実行することが可能であるとともに、1処理サイクル内で、N本までの物理レジスタのレジスタ指定子を、前記ロード/ストアユニットに渡すように、前記バックグラウンドチャネルを構成することを特徴とする請求項7に記載の装置。
  10. データ処理のための方法であって、
    アーキテクチャ上のレジスタ指定子セットのレジスタ指定子を、物理レジスタセットのレジスタにマップする段階を具備し、
    前記アーキテクチャ上のレジスタ指定子セットは、命令セット内の命令によって指定されるレジスタを表すとともに、前記物理レジスタセットは、前記命令セットの命令を処理するための物理レジスタであり、
    所定数より多くのレジスタマッピングを要求する動作を指示するプログラム命令に応答し、
    (i)前記所定数より多くののレジスタマッピングを、初期セットのレジスタマッピングと、残余セットのレジスタマッピングとに分割し、
    (ii)さらなる処理のためにメインチャネル上に出力される、物理レジスタのレジスタ指定子を生成するために、前記初期セットのレジスタマッピングを実行し、
    (iii)前記初期セットのレジスタマッピングの実行に続いて、前記レジスタリネーミング回路によって少なくとも1つの他のプログラム命令のレジスタ指定子を生成するとともに前記メインチャネル上に出力するのと同時に、かつ前記メインチャネルと別のバックグラウンドチャネル上に出力する、物理レジスタのレジスタ指定子を生成するために、前記残余セットのレジスタマッピングを実行する
    ことを特徴とする方法。
  11. 前記バックグラウンドチャネルに出力する物理レジスタのレジスタ指定子とともに、減少した残余レジスタマッピングセットを、各々が生成するレジスタマッピングのシーケンスとして、前記残余レジスタマッピングを実行することを特徴とする請求項10に記載の方法。
  12. バッファーメモリ内に、前記残余セットのレジスタマッピングを示すアーキテクチャ上のレジスタ指定子を格納する段階を具備することを特徴とする請求項10に記載の方法。
  13. 残余セットのレジスタマッピングを実行する順番を指示する順序つきリストとして、前記バッファーメモリが前記アーキテクチャ上のレジスタ指定子を格納することを特徴とする請求項12に記載の方法。
  14. 前記残余セットのレジスタマッピングで使用されるアーキテクチャ上のレジスタ指定子を有するプログラム命令は、前記アーキテクチャ上のレジスタ指定子が前記残余セットのレジスタマッピングの対象から削除される後までは、レジスタマッピングの対象とならないことを特徴とする請求項10に記載の方法。
  15. もし、前記所定数より多くのレジスタマッピングを要求する動作を指示する先行プログ
    ラム命令からの残余セットのレジスタマッピングが残っているならば、前記所定数より多く
    のレジスタマッピングを要求する前記動作を指示する前記プログラム命令をストールする
    ことを特徴とする請求項10に記載の方法。
  16. 前記プログラム命令は、ロード/ストアユニットで実行するロード/ストア多重命令でる請求項10に記載の方法。
  17. 前記バックグラウンドチャネルが、前記物理レジスタのレジスタ指定子を、前記ロード/ストアユニットに直接渡すことを特徴とする請求項16に記載の方法。
  18. 前記ロード/ストアユニットは、1処理サイクル内で、N本の物理レジスタに格納された値を消費するロード/ストア動作を実行することが可能であるとともに、1処理サイクル内で、N本までの物理レジスタのレジスタ指定子を、前記ロード/ストアユニットに渡すように、前記バックグラウンドチャネルを構成することを特徴とする請求項16に記載の方法。
  19. データ処理のための装置であって、
    物理レジスタセット手段と、
    アーキテクチャ上のレジスタ指定子セットのレジスタ指定子に応答して、前記レジスタ指定子を前記物理レジスタセットのレジスタにマップするレジスタリネーミング手段とを具備し、
    前記アーキテクチャ上のレジスタ指定子セットは、命令セット内の命令によって指定されるレジスタを表すとともに、前記物理レジスタセットは、前記命令セットの命令を処理するための物理レジスタであり、
    前記レジスタリネーミング手段は、所定数より多くのレジスタマッピングを要求する動作を指定するプログラム命令に応答し、
    (i)前記所定数より多くのレジスタマッピングを、初期セットのレジスタマッピングと、残余セットのレジスタマッピングとに分割し、
    (ii)さらなる処理のためにメインチャネル上に出力される、物理レジスタのレジスタ指定子を生成するために、前記初期セットのレジスタマッピングを実行し、
    (iii)前記初期レジスタマッピングセットのマッピングの実行に続いて、前記レジスタリネーミング回路によって少なくとも1つの他のプログラム命令のレジスタ指定子を生成するとともに前記メインチャネル上に出力するのと同時に、かつ前記メインチャネルと別のバックグラウンドチャネル上に出力する、物理レジスタのレジスタ指定子を生成するために、前記残余セットのレジスタマッピングを実行する
    ことを特徴とする装置。
JP2007259996A 2006-10-03 2007-10-03 データ処理システム内のレジスタリネーミング Active JP5273982B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0619522.6 2006-10-03
GB0619522A GB2442499B (en) 2006-10-03 2006-10-03 Register renaming in a data processing system

Publications (2)

Publication Number Publication Date
JP2008090848A JP2008090848A (ja) 2008-04-17
JP5273982B2 true JP5273982B2 (ja) 2013-08-28

Family

ID=37453891

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007259996A Active JP5273982B2 (ja) 2006-10-03 2007-10-03 データ処理システム内のレジスタリネーミング

Country Status (4)

Country Link
US (1) US7844800B2 (ja)
JP (1) JP5273982B2 (ja)
CN (1) CN101158893B (ja)
GB (1) GB2442499B (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101794214B (zh) 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
US9201656B2 (en) * 2011-12-02 2015-12-01 Arm Limited Data processing apparatus and method for performing register renaming for certain data processing operations without additional registers
US9652246B1 (en) * 2012-12-20 2017-05-16 Marvell International Ltd. Banked physical register data flow architecture in out-of-order processors
US10007521B1 (en) 2012-12-20 2018-06-26 Marvell International Ltd. Banked physical register data flow architecture in out-of-order processors
US10095522B2 (en) * 2014-12-23 2018-10-09 Intel Corporation Instruction and logic for register based hardware memory renaming
US9912774B2 (en) 2015-12-22 2018-03-06 Intel Corporation Accelerated network packet processing
US11223520B1 (en) 2017-01-31 2022-01-11 Intel Corporation Remote control plane directing data plane configurator
US10686735B1 (en) * 2017-04-23 2020-06-16 Barefoot Networks, Inc. Packet reconstruction at deparser
US10523578B1 (en) 2017-07-23 2019-12-31 Barefoot Networks, Inc. Transmission of traffic management data to processing pipeline
US10771387B1 (en) 2017-09-28 2020-09-08 Barefoot Networks, Inc. Multiple packet data container types for a processing pipeline
CN117271437B (zh) * 2023-11-21 2024-02-23 英特尔(中国)研究中心有限公司 一种处理器

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3220881B2 (ja) * 1992-12-29 2001-10-22 株式会社日立製作所 情報処理装置
US5548776A (en) * 1993-09-30 1996-08-20 Intel Corporation N-wide bypass for data dependencies within register alias table
EP0686912B1 (en) * 1994-06-03 1998-12-16 Motorola, Inc. Data processor with an execution unit for performing load instructions and method of operation
EP0918290A1 (en) * 1997-11-19 1999-05-26 Interuniversitair Micro-Elektronica Centrum Vzw Method for transferring data structures from and to vector registers of a processor
US6513109B1 (en) * 1999-08-31 2003-01-28 International Business Machines Corporation Method and apparatus for implementing execution predicates in a computer processing system
US6629233B1 (en) * 2000-02-17 2003-09-30 International Business Machines Corporation Secondary reorder buffer microprocessor
US7428631B2 (en) * 2003-07-31 2008-09-23 Intel Corporation Apparatus and method using different size rename registers for partial-bit and bulk-bit writes
US7272701B2 (en) * 2003-10-22 2007-09-18 Intel Corporation Method and apparatus for limiting ports in a register alias table having high-bandwidth and low-bandwidth structures
KR100628573B1 (ko) * 2004-09-08 2006-09-26 삼성전자주식회사 조건부실행명령어의 비순차적 수행이 가능한 하드웨어장치 및 그 수행방법
US7363469B2 (en) * 2006-03-28 2008-04-22 International Business Machines Corporation Method and system for on-demand scratch register renaming

Also Published As

Publication number Publication date
US20080082792A1 (en) 2008-04-03
CN101158893A (zh) 2008-04-09
GB2442499A (en) 2008-04-09
US7844800B2 (en) 2010-11-30
CN101158893B (zh) 2012-10-03
JP2008090848A (ja) 2008-04-17
GB2442499B (en) 2011-02-16
GB0619522D0 (en) 2006-11-15

Similar Documents

Publication Publication Date Title
JP5273982B2 (ja) データ処理システム内のレジスタリネーミング
JP5431308B2 (ja) システムおよびパイプラインプロセッサにおける条件命令実行の加速のためのローカル条件コードレジスタの使用方法
JP2003526157A (ja) オンチップダイナミックramを備えたvliwコンピュータ処理アーキテクチャ
US11693661B2 (en) Mechanism for interrupting and resuming execution on an unprotected pipeline processor
US20220113966A1 (en) Variable latency instructions
CN105242963A (zh) 执行机构间的切换控制
US20240036876A1 (en) Pipeline protection for cpus with save and restore of intermediate results
US20210294639A1 (en) Entering protected pipeline mode without annulling pending instructions
EP2761478A1 (en) Bi-directional copying of register content into shadow registers
US8127114B2 (en) System and method for executing instructions prior to an execution stage in a processor
WO2014190699A1 (zh) 一种cpu指令处理方法和处理器
US20210326136A1 (en) Entering protected pipeline mode with clearing
JP3756410B2 (ja) 述語データを提供するシステム
US20080126743A1 (en) Reducing Stalls in a Processor Pipeline
JP2009169767A (ja) パイプライン型プロセッサ
WO2020214624A1 (en) Variable latency instructions
US11194577B2 (en) Instruction issue according to in-order or out-of-order execution modes
US9983932B2 (en) Pipeline processor and an equal model compensator method and apparatus to store the processing result
US10552156B2 (en) Processing operation issue control
US7490226B2 (en) Method using vector component comprising first and second bits to regulate movement of dependent instructions in a microprocessor

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120903

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120911

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121029

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130514

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5273982

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250