JPH06230961A - データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法 - Google Patents

データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法

Info

Publication number
JPH06230961A
JPH06230961A JP5040755A JP4075593A JPH06230961A JP H06230961 A JPH06230961 A JP H06230961A JP 5040755 A JP5040755 A JP 5040755A JP 4075593 A JP4075593 A JP 4075593A JP H06230961 A JPH06230961 A JP H06230961A
Authority
JP
Japan
Prior art keywords
register
instruction
map
free
physical
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
JP5040755A
Other languages
English (en)
Inventor
Mitchell Alsup
ミッチェル・アルサップ
Michael C Becker
マイケル・シー・ベッカー
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.)
Motorola Solutions Inc
Original Assignee
Motorola 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 Motorola Inc filed Critical Motorola Inc
Publication of JPH06230961A publication Critical patent/JPH06230961A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/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)
  • Retry When Errors Occur (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 データ処理システムにおいて、バックアップ
機能を備えて、レジスタ再命名を実行する方法。 【構成】 レジスタ再命名装置18は、論理・物理(L
P)マップ30,フリー・リスト32,およびこの2つ
の間で情報を交換するための内部スワップ・バス90に
よって構成される。前記レジスタ再命名ハードウェア1
8は命令シーケンサ12および命令デコード/発行論理
16に接続される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は一般にデータ・プロセッ
サに関し、より具体的にはレジスタ再命名を用いるデー
タ・プロセッサに関する。
【0002】
【従来の技術】推論的に命令(例:分岐)を実行するデ
ータ・プロセッサは、誤った分岐予測の場合のように、
「推論的」な命令をデータ・プロセッサが完全に実行で
きない場合に、データ・プロセッサの状態を復元する機
構を備えなければならない。通常、これらのデータ・プ
ロセッサは、アーキテクチャ上の実行の流れから見て厳
正な意味の実行順序を緩和して、これにより、命令のダ
イナミックな再配列を可能にすることによって、データ
・プロセッサ全体の性能を改善する。分岐予測の誤りま
たは命令の例外から、データ・プロセッサが実行する命
令実行順序が、アーキテクチャ上プロセッサ・モデルが
要求する意味から逸脱する場合がある。そのような場合
には、データ・プロセッサは、あたかも分岐の予測誤り
の結果出された命令が発生しなかったかのように、当該
分岐予測の誤りまたは例外状態が発生した時点または発
生する前の発行ポイントへと、バックアップ動作を実行
する必要がある。したがって、膨大な数の予測および/
または例外が発生する可能性がある場合には、データ・
プロセッサは、アーキテクチャ上の正しい順序を復元す
るために、迅速なバックアップ動作を実行する機構を必
要とする。
【0003】既知の高性能データ・プロセッサは通常、
物理レジスタの使用を介して、高速データ記憶を処理し
ており、この方法によってプログラムは、必要なデータ
・オペランドが格納されている指定の物理レジスタを指
定する。一般に、命令を符号化すると、プログラムが使
用できる物理レジスタの数が制限される。たとえば、2
個のソース・レジスタと1個の宛先物理レジスタを扱う
32ビット符号化機能では、物理レジスタの最大数は32
である(この場合、符号化された各フィールドは5ビッ
トの命令符号化を用いる)。高度なパイプライン方式の
コンピュータ・アーキテクチャでは、レジスタ内のデー
タ記憶期間が長くなっており、多くのプログラムがより
多くの物理レジスタを利用できるというメリットを受け
ることができる。命令の符号化を確保しながら、より多
くの物理(ハードウェア)レジスタを提供するために、
データ処理システムが採用する1つの機構がレジスタ再
命名である。この再命名機構は、命令の符号化フィール
ドにある元の論理(プログラム)レジスタ番号を、物理
レジスタのプール内に割り当てることによって動作す
る。この論理レジスタは、命令の実行中にプログラムが
操作するものである。物理レジスタのプールは一般に、
構築された(architected )レジスタの数より大きい
(すなわち数が多い)。システムがリセットされると、
データ処理システムがエミュレートしている命令セット
・アーキテクチャの各論理レジスタに、これを表す物理
レジスタが割り当てられる。現在割り当てられていない
物理レジスタはフリー・リスト内に保存される。
【0004】
【発明が解決しようとする課題】レジスタ割当は、プロ
グラムによって決定される。最初、すべての論理レジス
タは、再命名機構によって、一意の物理レジスタ番号に
割当られる。プログラムが、プログラム(論理)レジス
タ値の変更を指定するたびに、再命名機構は、使用可能
な物理レジスタのプールから新しい物理レジスタ(「被
再命名」レジスタ)を探して、当該プログラム・レジス
タに割り当てる。この変更されたプログラム・レジスタ
に対して読み取りを行うたびに、この新しい再命名レジ
スタを使用する。このため個々の論理レジスタは、任意
のときにおいて、1つまたは複数の再命名(物理)レジ
スタに再割当できる。しかしながら、任意の時におい
て、当該論理レジスタの最新のマッピングになるのは、
ただ1つの物理レジスタ・マッピングだけである。分岐
を越えた高度な命令の推論的な実行を可能にするために
は、データ処理システムを以前のマッピングにバックア
ップする機能が必要になる。したがって、データ処理シ
ステムのバックアップが必要になる場合は常に、古いレ
ジスタ・マッピングを復元しなければならない。またク
ロック・サイクルごとに複数の命令を発行できる高性能
データ処理システムでは、レジスタ再命名機構は複数命
令発行ハードウェアをサポートしなければならない。実
質的には、レジスタ再命名機構は、複数の命令をバック
アップする機能と、複数の命令に対するレジスタ・マッ
ピングの両方をサポートしなければならない。
【0005】
【課題を解決するための手段】データ処理システムにお
いて、バックアップ機能を備えてレジスタ再命名を実行
する方法が提供される。このデータ処理システムは、所
定数の実行装置に対する命令パケットのデコードと発行
を制御するために、命令順序付け・発行論理を備えてい
る。レジスタ再命名機構は命令順序付け・発行論理およ
び実行装置に結合されている。このレジスタ再命名機構
は論理・物理(LP)レジスタ・マップおよびフリー・
リストによって構成されており、これは命令順序付け手
段が各命令パケットを発行すると直ちに、所定数の論理
レジスタを、所定の物理レジスタ・セットに割り当てる
ためのものである。
【0006】このレジスタ再命名機構は、LPレジスタ
・マップ内のレジスタ・マップ・セルの第1セットの各
セル、およびフリー・リスト内のフリー・セルの第1セ
ットの各セルの中に、一意の物理レジスタ名を格納し、
各フリー・セルに結合された制御ラッチ内の1つのビッ
トを、第1論理値に設定することによって、LPレジス
タ・マップを初期化する。
【0007】第1命令発行チェックポイントでは、第1
命令パケットをデコードする命令順序付け・発行論理に
応答して、レジスタ再命名機構は、レジスタ・マップ・
セルの第1セット内に格納された第1宛先レジスタ群内
の一意の物理レジスタを、選択した数のフリー・セル内
の第1ラッチから割り当てられた物理レジスタ名と交換
し、選択された数のフリー・セルのそれぞれに結合され
た制御ラッチ内のビットを切り換える。このレジスタ再
命名機構は同時に、レジスタ・マップ・セルの第1セッ
ト内に格納された第1ソース・レジスタ群内の一意の物
理レジスタ名のそれぞれを、レジスタ・マップ・セルの
第1セットから、レジスタ・マップ・セルの第2セット
の中にコピーする。
【0008】第2命令発行チェックポイントでは、つぎ
の命令パケットが、命令順序付け・発行論理によってデ
コードされた後、レジスタ再命名機構は、新しい宛先レ
ジスタ群を、新しく選択された数の各フリー・セル内の
第1ラッチから新しく割り当てられた物理レジスタ名と
交換することによって、各フリー・セルを、新しい宛先
レジスタ名群で更新し、新しく選択された数の各フリー
・セルに結合された制御ラッチ内のビットを切り換え
る。
【0009】命令順序付・発行論理がバックアップ動作
の実行を必要とする場合には、レジスタ再命名機構は、
LPレジスタ・マップを、命令順序付・発行論理が指定
するところの以前の命令発行チェックポイントに復元す
る。これを行うには、現在命令発行チェックポイントに
おけるフリー・セルの制御ビットの論理状態を検査し、
命令順序付・発行論理が指定するところの以前の命令発
行チェックポイントと、現在チェックポイントとの間に
送出された命令発行チェックポイントにおいて、相補形
論理状態を有する、フリー・セルの制御ビットの最初の
ビットを検索する。またレジスタ再命名機構は、現在命
令発行チェックポイントと、指定された命令発行チェッ
クポイントとの間の制御ビットをそれぞれ切り換える。
【0010】
【実施例】本発明は、多岐にわたるコンピュータ・シス
テム環境で実現できる。したがって、図1のデータ処理
システム10は、図示目的だけのものであって、本発明
の範囲を限定することを意図するものではない。図1
は、本発明の好適実施例に従ってレジスタ再命名を実行
するデータ処理システム10を示したものである。演算
中、シーケンサ・ウインドウ制御論理回路12が、実行
対象の命令群(パケット)を選択し、この選択した命令
の命令アドレスを命令キャッシュ14に提供する。命令
キャッシュ14は要求された命令の位置を突きとめ、命
令もしくは命令パケットを命令デコード/発行論理16
に送る。レジスタ再命名ハードウェア18は、(実行す
べき各命令について)入ってくる論理レジスタ名を、物
理レジスタ名に割り当て、つぎの発行サイクルのための
対応表の中に新しいエントリを作る。この物理レジスタ
名は索引付けされて、物理レジスタ・ファイル20の中
に入れられる。実行装置24による命令の実行が未了で
あると、パケットの各命令に対して割り当てられた物理
レジスタの中に格納されているデータ値は、予約ステー
ション22に格納される。この予約ステーション22
は、シーケンサ12から、発行ポイントおよび後退ポイ
ントを指示する制御情報を受け取る。また予約ステーシ
ョン22は、命令スロットおよびウィンドウ制御情報を
保存する。
【0011】このマッピング・プロセスと同時に、命令
デコード/発行論理16は、各命令を検査して、各命令
が値を送出するか否かを判断する。命令が値を送出する
場合には、再命名ハードウェア18内のレジスタ・マッ
プは本発明に従って更新される。命令デコード/発行論
理16が再命名ハードウェア18に送出した(書き込む
ための)論理レジスタ名は、特定の順序(スロット情
報)を有しており、この情報によって、再命名ハードウ
ェア18は当該命令に物理レジスタ名を割り当てること
ができる。物理レジスタ・ファイル20は、この物理レ
ジスタ名またはこれに相当するなんらかの機能(例:
「TAG」)を用いて、結果を書き込むべき正しい物理
レジスタを、実行装置24に指示する。シーケンサ12
は各命令群(「PACKET」)を追跡して、再命名ハ
ードウェア18および予約ステーション22に、各命令
パケットの識別子(「発行ポイント」)を送出する。ま
たシーケンサ12は各命令パケットを追跡して、実行装
置24の1つが命令の実行を完了したことによって、ど
のパケットもしくはパケット群を後退してもよいか
(「後退チェックポイント」)、再命名ハードウェア1
8および予約ステーション22に指示する。
【0012】図2に示すように、レジスタ再命名ハード
ウェア18は、論理・物理(LP)マップ30,フリー
・リスト32,ならびにLPマップ30とフリー・リス
ト32との間で物理レジスタ名を交換する手段となる物
理レジスタ・スワップ・バス90によって構成される。
図2に示す実施例では、LPマップ30は、M行および
X列を有するマップ・セル40〜55のマトリックスに
よって構成され、ここでMはデータ処理システム10の
アーキテクチャ・モデル内の論理レジスタの数に等しい
整数であり、Xは発行ポイントの数に等しい整数であ
る。フリー・リスト32は、N行のポインタ80〜83
およびX列を有するフリー・リスト・セル60〜75の
マトリックスによって構成され、ここでNは命令発行ス
ロットの数、Xは発行ポイントの数にあたる。図2に示
すLPマップ30およびフリー・リスト32は、4×4
のマトリックス配列になっている。したがってLPマッ
プ30は、4個の論理レジスタR0〜R3をマッピング
(割当)するための16個のマップ・セル40〜55に
よって構成され、フリー・リスト32は、4個の命令ス
ロットそれぞれのフリー物理レジスタを格納するため
に、16個のフリー・リスト・セル60〜75によって
構成されている。
【0013】命令(または命令群)が命令デコード/発
行論理16によってデコードされるたびに、読み取り対
象となる論理レジスタは、それらの値が見つかる物理レ
ジスタ「名」を探すための索引を、再命名ハードウェア
(18)内の論理・物理(LP)マップ30に付ける。
この「名前」は予約ステーション22に送られる。本発
明に基づき、書き込み対象となる論理レジスタは、フリ
ー・リスト32から物理レジスタ名を取り出し、物理レ
ジスタ・スワップ・バス90を介して、当該物理レジス
タ名をLPマップ30内に入れる。この時点でLPマッ
プ30は、LPマップ30内のマッピング配列の一部で
ある1個のマップ・セル、たとえばマップ・セル40内
に、新しいレジスタ・マッピングが格納されることにな
る。したがってLPマップ30は、命令デコード/発行
論理16が命令もしくは命令群をデコードされるたびに
発生する異なるレジスタ・マッピング(論理・物理間)
を格納する。フリー・リスト32は、フリー・リスト・
セル60〜75のそれぞれの中に、データ処理システム
10が再使用できる使用可能な(「使用されていな
い」)物理レジスタを格納する。使用されていないレジ
スタとは、LPマップ30内に有効なエントリがない物
理レジスタであり、そのため割当(マッピング)用に選
択できる。各発行ポイントについて、フリー・リスト3
2は、一緒にデコードされた命令群が書き込める現在の
フリー物理レジスタ名をすべて格納する。このフリー・
リスト32は、命令スロット(SLOT)情報によって
索引が付けられており、この情報は、ある命令の相対的
位置を、同時にデコードされた他の命令に示すものであ
る。
【0014】図3〜図9は、データ処理システム10が
本発明に従って実行するレジスタ再命名動作を順追って
示したものである。この一連の例では、データ処理シス
テム10は4個の論理レジスタ(R0〜R3)と4個の
発行ポイントを有しており、そのため、発行幅(IW)
は4である。本発明では、レジスタ再命名動作を実行す
るのに必要な物理レジスタ(P)の数を1ー1式で算出
する。
【0015】
【数1ー1】 P=R*(IW+1) このため、図3〜図9に示す一連の例では、レジスタ再
命名動作をサポートするのに必要な物理レジスタの数は
20となる。
【0016】図3に、初期化(I0)の間に発生するレ
ジスタ・マッピングを示す。初期化の間に、物理レジス
タP0〜P3がフリー・リスト32から取り出されて、
物理レジスタ・スワップ・バス90を介して、LPマッ
プ30に転送される。このため図に示すように、論理レ
ジスタR0〜R3はLPマップ30内の物理レジスタP
0〜P3にそれぞれ割り当てられる。黒く塗られた領域
は、LPマップ30およびフリー・リスト・セル32内
の割り当てられていないセルを示している。このため、
初期化時に、論理レジスタR0〜R3はそれぞれ物理レ
ジスタPO〜P3に割り当てられ、物理レジスタP4〜
P19はフリー・リスト32の中に格納される。この初
期化の結果、物理レジスタP0〜P3が「可視」にな
る。実質的には、可視の物理レジスタは、LPマップ3
0内の、これに対応する論理レジスタによる索引が付け
られている位置に見つかる。
【0017】図4に、レジスタ再命名シーケンスにおけ
る第1発行ポイント(I1)を示す。第1発行ポイント
では、命令デコード/発行論理16は、以下の表に示す
ような4つのADD命令によって構成される第1命令パ
ケット(PACKET1)をデコードする。
【0018】
【表1】 SLOT0 ADD(R1+R2)−> R0 SLOT1 ADD(R1+R2)−> R1 SLOT2 ADD(R1+R2)−> R2 SLOT3 ADD(R1+R2)−> R3 前述のように、フリー・リスト32は命令スロット(S
LOT0〜3)によって索引が付けられており、そのた
め第1ADD命令はSLOT0に割り当てられ、最後の
ADD命令はSLOT3に割当られる。そのため、命令
SLOT0内ではP4がフリー物理レジスタなので、宛
先論理レジスタR0は物理レジスタP4に割り当てられ
る。同様に、命令SLOT1内ではP5がフリー物理レ
ジスタなので、宛先論理レジスタR1は物理レジスタP
5に割り当てられる(以下同様)。発行ポイントI1で
は、物理レジスタP4〜P7がフリー・リスト32から
取り出されて、LPマップ30のマップ・セル104〜
107内にそれぞれ入れられる。そのため第1発行ポイ
ント(I1)におけるR0〜R3のレジスタ・マッピン
グはそれぞれP4〜P7となる。
【0019】図11に示すように、本発明に基づくフリ
ー・リスト・セル60〜79はそれぞれ、2つの物理レ
ジスタ名(すなわちLASTとCURRENT)、およ
びどの物理レジスタ名がCURRENTであるかを指定
する1個のポインタ80〜83(図2)を含んでいる。
データ処理システム10が書き込み動作を実行するたび
に、CURRENT物理レジスタ名が、前記のようにL
Pマップ30に転送され、LPマップ30からの物理レ
ジスタ名は、フリー・リスト32内の、LASTの位置
に入れられる。ついでポインタ(例:ポインタ80)が
切り替わって、LASTがCURRENTになる。これ
により前記のように、物理レジスタP4がフリー・リス
ト32から取り出されて、スワップ・バス90を介して
LPマップ30に転送される。その結果、P4が宛先論
理レジスタR0に割当られ、可視となる。LPマップ3
0内でR0に以前割り当てられていた物理レジスタ名
(P0)は、対応するフリー・リスト・セルのファース
ト(first) 名ラッチ116(図11)の中に格納され、
これによって「不可視」となる。不可視レジスタとは、
論理的な意味で上書きされたものであるが、分岐の予測
誤りまたは例外によって、シーケンサ12が「バックア
ップ動作」を実行する必要があれば、可視にできるもの
をいう。ついでポインタ80(図2)が切り替わって、
割り当てられたLAST(不可視)物理レジスタ(P
0)を、フリー・リスト・セル60内のCURRENT
フリー物理レジスタに指定する。したがって、物理レジ
スタP0〜P3は以前の初期化の時にR0〜R3に割り
当てられていたので、P0〜P3は、それぞれフリー・
リスト・セル60〜63のファースト名ラッチ116
(図11)の中に格納され、ポインタ(80)は、P0
〜P3をCURRENTフリー物理レジスタとして示す
ように切り換えられる。同様に、PACKET1内の命
令が発行された結果、物理レジスタP4〜P7が論理レ
ジスタR0〜R3に現在割り当てられている(「可視」
になっている)ので、P4〜P7は、図4の黒く塗られ
た部分が示すように、それぞれフリー・リスト・セル6
0〜63のLAST名ラッチ120(図11)の中に格
納される。
【0020】図5に示す第2発行ポイント(I2)で
は、命令デコード/発行論理16は、表IIに示すよう
に3つのADD命令を含んでいる命令PACKET2を
デコードする。
【0021】
【表2】 SLOT0 ADD(R1+R2)−> R3 SLOT1 ADD(R3+R2)−> R1 SLOT2 NOP SLOT3 ADD(R1+R2)−> R2 前述のように、フリー・リスト32は命令スロットによ
って索引付けされている。したがって、第1ADD命令
はSLOT0に割り当てられる。そのため、フリー・リ
スト32の命令SLOT0内では、P8がフリー物理レ
ジスタであるので、宛先論理レジスタR3は物理レジス
タP8に割り当てられる。同様に、宛先論理レジスタR
1は、フリー・リスト32の命令SLOT1内ではP9
がフリー物理レジスタであるので、物理レジスタP9に
割り当てられる。SLOT2内でデコードされるNOP
命令はレジスタ・マッピングに影響を及ぼさない。その
ためフリー物理レジスタP10は、図5の矢印が示すよ
うに、SLOT2のために、隣接するフリー・リスト・
セルにコピーされる。同様に、PACKET2でデコー
ドされる命令はいずれも、論理レジスタR0のマッピン
グに影響を及ぼさないので、再命名ハードウェア18
は、図5に示すように、R0に対する以前のレジスタ・
マッピング(P4)を、LPマップ30内で隣接するマ
ップ・セルにコピーする。最後のADD命令は、宛先論
理レジスタR2を、SLOT3内のフリー論理レジスタ
(P11)で再命名する必要がある。このため第2発行
ポイントにおけるR0〜R3のレジスタ・マッピング
は、図5に示すようにそれぞれP4,P9,P11,P
8となる。LPマップ3内で以前割り当てられていた物
理レジスタ名P5,P6,P7は、フリー・リスト・セ
ル64〜67(図2)内のLAST名の位置に入れら
れ、ラストがカレントになるように、ポインタ81が切
り換えられる。
【0022】図6に示す第3発行ポイントでは、命令デ
コード/発行論理16は、以下の表IIIに示すよう
に、2つのADD命令と2つのNOP命令によって構成
される命令PACKET3をデコードする。
【0023】
【表3】 SLOT0 ADD(R1+R2)−> R0 SLOT1 NOP SLOT2 ADD(R1+R2)−> R1 SLOT3 NOP SLOT0でデコードされる第1のADD命令によっ
て、論理宛先レジスタR0は、SLOT0内のフリー物
理レジスタP12に再割当される。一方第2のADD命
令によって、レジスタR1は、SLOT2内のフリー物
理レジスタP14に再割当される。PACKET2でデ
コードされる命令は論理レジスタR2,R3のマッピン
グに影響を及ぼさないので、以前R2,R3にそれぞれ
割り当てられていた物理レジスタP11,P18は、矢
印が示すように、LPマップ30内の隣接するマップ・
セル内にコピーされる。同様に、割り当てられなかった
SLOT1およびSLOT3のフリー物理レジスタは、
図7の矢印が示すように、フリー・リスト32内の隣接
するフリー・リスト・セル内にコピーされる。このため
第3命令発行ポイント(I3)におけるR0〜R3のレ
ジスタ・マッピングはそれぞれP12,P14,P1
1,P8となる。前述のように、以前割り当てられてい
た物理レジスタ(P4,P9)はラスト名ラッチ内に入
れられ、ポインタはラスト名がカレント名になるように
切り替わる。
【0024】図7に示すレジスタ再命名シーケンスの第
4発行ポイント(I3)では、命令デコード/発行論理
16は、以下の表IVに示すように3つのADD命令と
1つのNOP命令によって構成される命令PACKET
4をデコードする。
【0025】
【表4】 SLOT0 ADD(R1+R2)−> R0 SLOT1 ADD(R1+R2)−> R1 SLOT2 ADD(R1+R2)−> R1 SLOT3 NOP SLOT0内でデコードされる第1ADD命令によっ
て、レジスタR0は、フリー・リスト32のSLOT0
内のフリー物理レジスタであるP16に再割当される。
SLOT1内でデコードされる第2ADD命令によっ
て、R1は、SLOT1内のフリー物理レジスタである
P17に再割当される。第3ADD命令によって、R1
は、フリー・リスト32のSLOT2内のフリー物理レ
ジスタであるP18に再割当される。前述のように、N
OP命令は、LPマップ30内のレジスタ・マッピング
には影響を及ぼさない。パケット3内でデコードされる
命令は論理レジスタR2,R3のマッピングには影響を
及ぼさないので、図7に示すように、命令発行ポイント
I4では、それらの以前の物理レジスタ・マッピングP
11,P8はそれぞれ、隣接するマップ・セル内にコピ
ーされる。このため、第4命令発行ポイントにおけるR
0〜R4のレジスタ・マッピングはそれぞれP16,P
18,P11,P8となる。以前割り当てられていた物
理レジスタ(P12,P14)は、矢印が示すように、
フリー・リスト32内の対応するフリー・リスト・セル
のラスト名ラッチ内に入れられる。ポインタが切り替わ
り、ラスト名の物理レジスタが、カレント名の物理レジ
スタになる。
【0026】本発明に基づくレジスタ再命名シーケンス
中、最終的には、LPマップ30およびフリー・リスト
32は共にラップアラウンドして、古い物理レジスタ名
の上に上書きされる。実行装置24が、「バックアッ
プ」発生の機会がなく、上書きされた発行ポイント内の
すべての命令の実行を完了する限り、これは問題を生じ
ない。したがって図8に示す第5命令発行チェックポイ
ント(I5)では、命令発行論理が、以下の表Vに示す
ような4つのADD命令によって構成される命令PAC
KET5をデコードする。
【0027】
【表5】 SLOT0 ADD(R1+R2)−> R3 SLOT1 ADD(R1+R2)−> R1 SLOT2 ADD(R1+R2)−> R0 SLOT3 ADD(R1+R2)−> R2 図8に示すように、フリー・リスト32はラップアラウ
ンドしており、そのため、使用可能な第1のフリー物理
レジスタはP0〜P3となる。PACKET5が発行さ
れた結果発生するレジスタ・マッピング(論理・物理
間)は、前述のようにLPマップ30の中に格納され
る。このため、第5命令発行ポインにおいて、論理レジ
スタR0〜R3に対して発生するレジスタ・マッピング
はそれぞれP2,P1,P3,P0となる。以前割り当
てられていた物理レジスタ(P16,P18,P11,
P8)は、矢印が示すように、フリー・リスト32内の
対応するフリー・リスト・セルのラスト名ラッチの中に
入れられる。ここでも、ポインタが切り替わり、ラスト
名の物理レジスタ(P8,P18,P16,P11)
が、カレント名の物理レジスタとなる。
【0028】例外(例:割り込み)発生の結果、または
分岐予測の誤りが原因で、データ処理システム10が、
シーケンサ12の状態を以前の発行ポイントに復元する
必要がある場合には、「バックアップ」動作が実行され
る。図3〜図8に示すように、データ処理システム10
が実行するレジスタ再命名動作全体を通じて、後退チェ
ックポイント(RETIRE POINT)はずっと同
じ場所にあり、命令デコード/発行論理16が各命令パ
ケットを発行すると直ちに、シーケンサ12は発行ポイ
ントのみ(例:I1〜I5)を進ませた。本発明では、
例外状況または分岐予測誤りが発生すると、シーケンサ
12は、レジスタ再命名ハードウェア18に、最新の良
好な発行ポイント(たとえばチェックポイントI2)を
提供し、再命名ハードウェア18は「バックアップ」を
行い、これによって物理レジスタ・マッピングを発行ポ
イントI2に存在するレジスタ・マッピングに復元す
る。このためシーケンサ12の管理下において、レジス
タ再命名ハードウェア18は発行ポイントをチェックポ
イントI2まで戻す。したがってLPマップ30および
フリー・リスト32は、それらの発行ポイントを発行ポ
イントI2に移動する。本発明では、フリー・リスト3
2も、試みた最新の発行ポイント(I6)と、最新の良
好な発行ポイント(I2)との間にある「カレント」ポ
インタ80〜83のすべてを切り換える。これを行って
いる間、フリー・リスト32は、発行ポイントI2にお
いてフリーであった物理レジスタを、物理レジスタのフ
リー・プールに復元する。図6に戻ると、論理レジスタ
R0〜R3に対するLPマップ30内の物理レジスタ・
マッピングはそれぞれP4,P9,P11,P8であっ
た。このため図10(図9?)に示すように、LPマッ
プ30およびフリー・リスト32は、発行ポイントI2
(図6)に対し示されているのと同一のレジスタ・マッ
ピングおよびフリー物理レジスタを反映する。
【0029】図10はLPマップ30のマップ・セル4
0(図2)をブロック図に示したものである。好適実施
例では、LPマップ30は所定のマップ・セル40〜5
5によって構成されており、各マップ・セルは、マップ
・セル40と同一の構造を有している。図11(図10
?)に示すように、初期化されると直ちに、シーケンサ
12が提供する第1制御信号(CONTROL1)に応
答して、初期物理レジスタ名が、マルチプレクサ110
を介してラッチ112の中に格納される。このため論理
レジスタR0〜R3は前述のように、最初は物理レジス
タP0〜P3に割り当てられる。命令デコード/発行論
理16が、論理宛先レジスタに対するレジスタ割当を変
更する命令もしくは命令群をデコードするたびに、物理
レジスタ名(PR)がSLOT番号によってフリー・リ
スト32から検索されて、LPマップ30内のマップ・
セルの中に格納される。パケット内(例:PACKET
2)でデコードされる命令がいずれも、特定の論理レジ
スタ番号(例:R0)に対する物理レジスタ・マッピン
グを変更しない場合には、前記の特定の論理レジスタ番
号に対して以前割り当てられていた物理レジスタ名(す
なわちP4)が、当該命令パケットの発行ポイント(I
2)に関連するマップ・セルの中に転送される。したが
って、マルチプレクサ110は初期物理レジスタ名(す
なわちフリー・リスト32から新しく割り当てられた物
理レジスタ)、または以前のセルからの物理レジスタ名
のいずれかを、ラッチ112の中に格納することができ
る。
【0030】図11はフリー・リスト32のフリー・リ
スト・セル60(図2)をブロック図に示したものであ
る。好適実施例では、フリー・リスト32は、所定数の
フリー・リスト・セル60〜75によって構成され、各
フリー・リスト・セルは、フリー・リスト・セル60と
同一の構造を有している。図に示すように、初期化され
ると直ちに、シーケンサ12が提供する第2制御信号
(CONTROL2)に応答して、初期物理レジスタ名
が、マルチプレクサ114を介してラッチ116の中に
格納される。このため、フリー物理レジスタP4〜P1
9は、前述のように、命令スロット番号によってフリー
・リスト32の中に格納される。命令もしくは命令群が
論理レジスタに対する物理レジスタ・マッピングを変更
するたびに、フリー・リスト32が更新される。したが
って書き込み対象となる論理レジスタは、フリー・リス
ト・セル(例:セル60)から物理レジスタ名を取り出
し、マルチプレクサ122を介して、当該物理レジスタ
名をLPマップ30に転送する。マルチプレクサ122
は物理レジスタ名およびSLOT番号(N)をスワップ
・バス90(図2)を介して位置づける。前述のよう
に、フリー・リスト32は、各発行ポイントについて、
一緒にデコードされる命令群が書き込めるのと同じ数の
フリー物理レジスタ名を、各発行ポイントに対して格納
する(すなわち、ライトバック(write-back)SLO
T)。
【0031】フリー・リスト・セル60は2つの物理レ
ジスタ名(すなわちLASTとCURRENT)、なら
びにどの名前がCURRENTであるかを指定する1個
のポインタ(CONTROL4)を含んでいる。好適実
施例では、CONTROL4信号は符号化信号(CON
TROL4=CONTROL2/CONTROL3*)
であり、この信号の論理状態は、マルチプレクサ11
4,118に対する制御信号の論理状態を検査すること
によって決定される。各書き込み動作の後、レジスタ再
命名ハードウェア18はLPマップ30内のCURRE
NT物理レジスタ名を、フリー・リスト32から割り当
てられているフリー物理レジスタ名と交換する。したが
って、CURRENT物理レジスタ名がLPマップ30
に転送され、LPマップ30からの物理レジスタ名が、
フリー・リスト内のLAST名の場所に入れられ、ポイ
ンタ80の1つのビットが、LASTがCURRENT
になるように切り替わる。LAST名が格納されるラッ
チは、ポインタ80が提供するCONTROL4の状態
によって決定される。たとえばCURRENT物理レジ
スタ名(例:P4)がラッチ116の中に格納された場
合には、CONTROL4信号によって、MUX122
はスワップ・バス90を介して、物理レジスタP4をL
Pマップ30に提供する。ついで、論理レジスタに以前
割り当てられていた物理レジスタ(例:P0)は、ラッ
チ120(LAST名の場所)の中に入れられ、ポイン
タ80は、LAST(ラッチ120)がCURRENT
になるように切り替わる。それぞれの命令発行ポイント
に対してこのプロセスがひき続き行われる。このためシ
ーケンサ12がバックアップを実行すると、レジスタ再
命名ハードウェア18は、ポインタ80内のビットを切
り換えることによって、以前のフリー物理レジスタを復
元し、これによりCONTROL4信号は、P0に代わ
ってP4をフリー物理レジスタに指定する。
【0032】図12は、本発明に基づくバックアップ機
能を備えたレジスタ再命名順序付けの流れ図200であ
る。図12に示すように、ステップ202では、シーケ
ンサ12によって、再命名ハードウェア18はLPマッ
プ30を初期化し、これによって物理レジスタの第1セ
ット(例:P0〜P3)を、前述のように論理レジスタ
R0〜R3に割り当てる。ステップ204では、シーケ
ンサ12は再命名ハードウェア18に対して、命令デコ
ード/発行論理16によってデコードされる各命令パケ
ットの命令ポイント番号を提供する。
【0033】ステップ206の間に、再命名ハードウェ
ア18は、パケット内の各命令が、LPマップ30に問
い合わせて、ソース論理レジスタの物理レジスタ名の位
置を突きとめられるようにし、新しい物理レジスタ名を
宛先論理レジスタに割り当てられるようにする。したが
って宛先論理レジスタに対する物理レジスタ名が取り入
れられて、前記宛先論理レジスタに以前割り当てられて
いた物理レジスタは、(前述のように)LPマップ30
から外されて、フリー・リスト32の中に入れられ、
「不可視」となる。当該宛先論理レジスタに対応する論
理レジスタに、命令が書き込みを行うと、可視の物理レ
ジスタは不可視になる。そのため以前割り当てられてい
た可視の物理レジスタ(例:P0)が不可視となるの
は、再命名ハードウェア18がP0を、新しく割り当て
られたレジスタ(例:P4)が以前占めていたフリー・
リスト32内の命令スロット(例:SLOT0)に入れ
る場合である。ついで、この新しく割り当てられたレジ
スタP4はLPマップ30内に入れられて可視となる。
【0034】ステップ208に示すように、例外状況ま
たは分岐予測誤りが発生する場合には、シーケンサ12
は、レジスタ再命名ハードウェア18に対して、「バッ
クアップ」動作が必要であることを知らせる。「バック
アップ」を必要としない場合には、ステップ210で、
実行装置24が、以前デコードされた命令の実行を完了
したか否かをシーケンサが判断する。命令もしくは命令
群が実行を完了している場合には、ステップ212で、
シーケンサ12は、レジスタ再命名ハードウェア18に
対して新しい後退ポイントを発行する。命令が完了して
いない場合には、命令デコード/発行論理16が新しい
命令パケットをデコードし、シーケンサ12は、レジス
タ再命名ハードウェア18に対して新しい発行ポイント
を発行する。
【0035】付録Aは、本発明に基づきレジスタ再命名
を実行するCモデルを、ソース・コード形式で示したも
のである。付録AのCモデルは、入ってくる論理レジス
タ(例:R0〜R3)を、物理レジスタ内に割り当て、
つぎの命令発行サイクルのための対応表(LPマップ3
0)の中に新しいエントリを作る。ライン29〜ライン
32はつぎのマップ・エントリを初期化して、現在発行
ポイントと同じマッピングを含むようにし、完了表を
「未完了状態」に初期化する。命令パケット内のすべて
の命令が、レジスタ・マッピング(例:記憶、分岐)を
変更しない命令でもよいので、このアプローチは保存性
が高い。ライン35〜ライン38は、各命令がLPマッ
プ30に問い合わせて、つぎの発行サイクルの割り当て
に対して必要な更新を行えるようにする。したがってラ
イン39〜ライン44は、デコードされた命令からの論
理レジスタに対応する、現在のLPマップ30内の物理
レジスタを読み取る。
【0036】付録Aのライン46〜ライン51は、つぎ
の命令発行サイクルのために、LPマップ30を更新す
る。この更新は「完了状態」変数をベースにしている。
割り当てるべき新しい物理レジスタは、このマップ・エ
ントリを以前使用していた命令セットの完了による循環
待機索引順で、フリー・リスト32のセクションからも
たらされる。割当フィールド(エントリ)は2つ維持さ
れており、第1エントリは命令の実行の成功に対応し、
第2エントリは実行の不成功に対応する。第1割当エン
トリは、命令セットをシーケンサが放棄した場合(バッ
クアップ発生時)に使用され、第2割当フィールドは、
命令が実行を完了した場合(後退の発生時)に使用され
る。このため第1割当エントリは、単にポイント変数を
操作するだけで、シーケンサ12が、レジスタ・マッピ
ングをバックアップして、割り当てるべき新しいレジス
タを獲得できるようにする。同様に、命令が実行されて
完了した場合には、第2割当エントリは、以前の命令群
(例:PACKET1)が当該マッピング・スロットを
使用するように割り当てた物理レジスタを含む。実質的
には、PACKET1の命令が実行されて完了に至る場
合には、これらの命令内の論理レジスタに関連した「古
い」物理レジスタは、後続の割当(マッピング)に使用
できる。したがって前回のパスで割り当てられた新しい
宛先レジスタは現在、有効なレジスタ・データを含んで
いる。ライン53〜ライン57は、命令デコード/発行
論理16において、関連する命令のなかった(例:図7
に示すようなNOP命令)スロットに対するフリー・リ
スト32を更新している。
【0037】このため本発明は、レジスタ再命名を実行
する一方で、以前の命令発行ポイントへとバックアップ
動作を実行する機能を組み込んでいる方法を提供するも
のである。本発明は好適実施例に従って説明されている
が、当業者にとっては、本発明が数多くの方法で実行で
きることは明かであろう。したがって添付請求の範囲
は、本発明の真正の意図および範囲に属する本発明のす
べての変形をカバーすることを意図している。
【0038】
【付録A】 Line 1| # define NUMBER_OF_REGISTERS (16) Line 2| # define NUMBER_OF_ISSUES (6) Line 3| # define NUMBER_OF_PREDICTIONS (16) Line 4| Line 5| struct Register_Map {unsigned current NUMBER_OF_REGISTERS], Line 6| new [2] [ NUMBER_OF_ISSUES ], Line 7| completed; Line 8| } map [ NUMBER_OF_PREDICTIONS ]; Line 9 | Line 10 | unsigned issue_point, Line 11 | retire_point; Line 12 | Line 13 |struct Instruction {unsigned current op_code, Line 14 | destination, Line 15 | source1 Line 16 | source2, Line 17 | used_d, Line 18 | used_s1, Line 19 | used_s2, Line 20 | mod_d, Line 21 | } issue [ NUMBER_OF_PISSUES ]; Line 22 | Line 23 |void map_registers (struct Instruction*i) Line 24 |{ Line 25 | unsigned n, Line 26 | new_issue, Line 27 | completed; Line 28 | Line 29 |new_issue = (issue_point + 1) % NUMBER_OF_ISSUES; Line 30 |completed = (map [issue_point]. completed; Line 31 |map [new_issue] = (map [issue_point]; Line 32 |map [new_issue]. completed = FALSE; Line 33 | Line 34 |for (n = 0; n < NUMBER_OF_ISSUES; n++, i++) Line 35 |if (i ->op_code ! = NO_OPERATION ) Line 36 |{ Line 37 | unsigned destination = i ->destination; Line 38 | Line 39 | if (i ->used_s1) Line 40 | i ->source1 = map [issue_point]. current [i ->source1 ]; Line 41 | if (i ->used_s2) Line 42 | i ->source2 = map [issue_point]. current [i ->source2 ]; Line 43 | if (i ->used_d) Line 44 | i ->destination = map [issue_point]. current destination ]; Line 45 | Line 46 | if (i ->mod_d) Line 47 |{ Line 48 | map [new_issue]. current[destination] = map [issueミpoint]. new [completed] [n] Line 49 | map [new_issue]. new[0][n] = map [issueミpoint]. new [completed] [n] Line 50 | map [new_issue]. new[1][n] = destination; Line 51 | } Line 52 |} Line 53 |else Line 54 |{ Line 55 |map [new_issue]. new[0][n] = Line 56 |map [new_issue]. new[1][n] = map [issue_point]. new [completed][n Line 57 |} Line 58 |}
【図面の簡単な説明】
【図1】本発明の好適実施例に基づき、バックアップ機
能を備えたレジスタ再命名機構を有するデータ処理シス
テムをブロック図で示したものである。
【図2】本発明の好適実施例に従って使用するために、
レジスタ・マッピング論理およびフリー・リスト論理を
有するところの図1のレジスタ再命名機構をブロック図
で示したものである。
【図3】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図4】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図5】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図6】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図7】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図8】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図9】本発明に基づき、データ処理システム10が実
行するレジスタ再命名動作を順追って例示したものであ
る。
【図10】本発明の好適実施例に従って、図2のレジス
タ・マッピング論理の1個のマッピング・セルをブロッ
ク図で示したものである。
【図11】本発明の好適実施例に従って、図2のフリー
・リスト論理の1個のフリー・リスト・セルをブロック
図で示したものである。
【図12】本発明に従って、レジスタ再命名動作を示し
た流れ図である。
【符号の説明】
10 データ処理システム 12 シーケンサ・ウィンドウ制御論理 14 命令キャッシュ 16 命令デコード/発行論理 18 再命名ハードウェア 20 物理レジスタ・ファイル 22 予約ステーション 24 実行装置 30 LPマップ 32 フリー・リスト 40〜55 マップ・セル 60〜75 フリー・リスト・セル 80〜83 ポインタ 90 物理レジスタ・スワップ・バス 110,114,118,122 マルチプレクサ 112,116,120 ラッチ 200 再命名順序付けの流れ図 202 論理・物理(LP)レジスタ・マップを初期化
する 204 新しい発行チェックポイントに対する命令を発
行する 206 LPマップに問い合わせて、ソース・レジスタ
の物理レジスタ名の位置を突きとめる。フリー・リスト
から物理レジスタ名を取り出して、LPレジスタ・マッ
プ内に格納することによって、宛先レジスタに新しい物
理レジスタ名を割り当てる。 208 例外状況または分岐予測誤りが発生しているか
? 210 命令は完了したか? 212 命令を後退させる(新しい後退ポイント) 214 現在発行ポイントから最新の良好な発行ポイン
トまでLPレジスタ・マップをバックアップする

Claims (3)

    【特許請求の範囲】
  1. 【請求項1】 データ処理システム(10)であって、
    前記システムは:命令パケットをデコードし、発行し、
    経路設定するための命令順序付け手段(12,14,1
    6);前記命令順序付け手段(12,14,16)に結
    合されており、前記命令パケット内の所定数の命令を実
    行するための実行手段(22,24);前記実行手段
    (22,24)に結合されており、所定数の物理レジス
    タ内に、複数のデータ・オペランドを格納するためのレ
    ジスタ記憶手段(20);ならびに前記レジスタ記憶手
    段(20)および前記命令順序付け手段(12,14,
    16)に結合されており、内部バス(90)を介してフ
    リー・リスト(32)に結合された論理・物理(LP)
    レジスタ・マップ(30)を有するところのレジスタ再
    命名手段(18)であって、前記レジスタ再命名手段
    (18)は、前記命令順序付け手段(12,14,1
    6)から所定数の論理レジスタ番号および制御信号を受
    け取り、これに応答して複数の論理・物理レジスタ・マ
    ッピングを生成するところの前記レジスタ再命名手段;
    によって構成されることを特徴とするデータ処理システ
    ム(10)において;命令パケットをデコードする前記
    命令順序付け手段(12,14,16)に応答して、複
    数の命令発行チェックポイントのそれぞれにおいて発生
    する物理レジスタ・マッピングの現在セットを維持し、
    ならびに前記命令順序付け手段(12,14,16)を
    以前の命令発行チェックポイントへとバックアップする
    ための方法であって、前記方法は:前記LPレジスタ・
    マップ(30)を初期化する段階であって、該段階は、
    レジスタ・マップ・セルの第1セットの各セル、および
    フリー・セルの第1セットの各セルの中に、一意の物理
    レジスタ名を格納し、前記フリー・セルのそれぞれに結
    合された制御ラッチ内の1つのビットを、第1論理値に
    設定することによって、前記LPレジスタ・マップを初
    期化する段階;前記レジスタ・マップ・セルの第1セッ
    トに格納された、第1宛先レジスタ群内の一意の物理レ
    ジスタ名をそれぞれ、選択した数のフリー・セル内の第
    1ラッチから割り当てられた物理レジスタ名と、前記内
    部バス(90)を介して交換し、前記の選択された数の
    各フリー・セルに結合された前記制御ラッチ内の前記ビ
    ットを切り換えて、その一方で同時に、第1命令発行チ
    ェックポイントにおいて第1命令パケットをデコードす
    る前記順序付け手段に応答して、前記レジスタ・マップ
    ・セルの第1セット内に格納された第1ソース・レジス
    タ群の一意の物理レジスタ名をそれぞれ、前記レジスタ
    ・マップ・セルの第1セットから、レジスタ・マップ・
    セルの第2セットの中にコピーする段階;第2命令発行
    チェックポイントにおいて、新しい命令パケットが前記
    命令順序付け手段(12,14,16)によって発行さ
    れた後に、前記各フリー・セルを前記新しい宛先レジス
    タ名群で更新する段階であって、該段階は、前記新しい
    宛先レジスタ名群を、新たに選択された数の各フリー・
    セル内の第1ラッチから新たに割り当てられた物理レジ
    スタ名と交換し、前記新たに選択された数の各フリー・
    セルに結合された前記制御ラッチ内の前記ビットを切り
    換えることによって、前記各フリー・セルを前記新しい
    宛先レジスタ名群で更新する段階;ならびに前記LPレ
    ジスタ・マップ(30)を、前記命令順序付け手段が指
    定した前記の以前の命令発行ポイントに復元する段階で
    あって、該段階は、現在命令発行チェックポイントにお
    ける前記フリー・セルの前記制御ビットの論理状態を検
    査して、前記の以前の命令発行チェックポイントと、前
    記現在チェックポイントとの間で発行された前記命令発
    行チェックポイントにおいて、相補論理状態を有する、
    前記フリー・セルの前記制御ビットの第1ビットを検索
    し、ならびに前記各制御ビットを、前記現在命令発行チ
    ェックポイントと、前記命令順序付け手段(12,1
    4,16)が指定した前記の以前の命令発行チェックポ
    イントとの間で切り換えることによって、前記LPレジ
    スタ・マップ(30)を、前記命令順序付け手段が指定
    した前記の以前の命令発行ポイントに復元する段階;に
    よって構成されることを特徴とするところの、命令パケ
    ットをデコードする前記命令順序付け手段(12,1
    4,16)に応答して、複数の命令発行チェックポイン
    トのそれぞれにおいて発生する物理レジスタ・マッピン
    グの現在セットを維持し、ならびに前記命令順序付け手
    段(12,14,16)を以前の命令発行チェックポイ
    ントへとバックアップするための方法。
  2. 【請求項2】 データ処理システム(10)であって、
    前記データ処理システムは、所定数の命令発行チェック
    ポイントのそれぞれにおいて命令パケットをデコードす
    るための命令順序付け手段(12,14,16)、前記
    命令順序付け手段(12,14,16)に結合されてい
    て前記命令順序付け手段が発行する命令を実行するため
    の実行手段(22,24)、ならびに内部バス(90)
    を介してフリー・リスト(32)に結合された論理・物
    理(LP)マップ(30)によって構成されるレジスタ
    再命名手段(18)を有しており、また前記レジスタ再
    命名手段(18)は、前記命令順序付け手段(12,1
    4,16)が、各命令パケットに1つもしくは複数の命
    令を含むところの複数の命令パケットのそれぞれを発行
    すると直ちに、所定数の論理レジスタを所定の物理レジ
    スタ・セットに割り当てることを特徴とするところのデ
    ータ処理システム(10)において、レジスタ再命名を
    実行する方法であって、前記方法は:前記レジスタ再命
    名手段(18)内の前記LPレジスタ・マップ(30)
    を初期化する段階であって、該段階は、前記LPレジス
    タ・マップ(30)内のレジスタ・マップ・セルの第1
    セットの各セル、および前記フリー・リスト内のフリー
    ・セルの第1セットの各セルの中に、一意の物理レジス
    タ名を格納し、前記各フリー・セルに結合された制御ラ
    ッチ内の1つのビットを、第1論理値に設定することに
    よって、前記LPレジスタ・マップ(30)を初期化す
    る段階;前記レジスタ・マップ・セルの第1セット内に
    格納されているところの、第1命令発行チェックポイン
    トにおいて発行される第1命令パケットによって指定さ
    れる第1宛先レジスタ群の一意の物理レジスタ名をそれ
    ぞれ、選択された数のフリー・セル内の第1ラッチから
    割り当てられた物理レジスタ名と交換し、前記の選択さ
    れた数のフリー・セルに結合された前記制御ラッチ内の
    前記ビットを切り換え、その一方で同時に、前記第1命
    令パケットをデコードする前記命令順序付け手段(1
    2,14,16)に応答して、前記レジスタ・マップ・
    セルの第1セット内に格納された、第1ソース・レジス
    タ群内の一意の物理レジスタ名をそれぞれ、前記レジス
    タ・マップ・セルの第1セットから、レジスタ・マップ
    ・セルの第2セットの中にコピーする段階;第2命令発
    行チェックポイントにおいて、つぎの命令パケットが前
    記命令順序付け手段によって発行された後に、前記各フ
    リー・セルを新しい宛先レジスタ名群で更新する段階で
    あって、該段階は、前記新しい宛先レジスタ名群を、新
    たに選択された数の各フリー・セル内の第1ラッチから
    新たに割り当てられた物理レジスタ名と交換し、前記の
    新たに選択された数の各フリー・セルに結合された前記
    制御ラッチ内の前記ビットを切り換えることによって、
    前記各フリー・セルを新しい宛先レジスタ名群で更新す
    る段階;ならびに前記LPレジスタ・マップ(30)
    を、前記命令順序付け手段(12,14,16)が指定
    する指定命令発行チェックポイントに復元する段階であ
    って、該段階は、現在命令発行チェックポイントにおけ
    る前記フリー・セルの前記制御ビットの論理状態を検査
    して、前記指定命令発行チェックポイントと、前記現在
    チェックポイントとの間で発行された前記命令発行チェ
    ックポイントにおいて、相補論理状態を有する、前記フ
    リー・セルの前記制御ビットの第1ビットを検索し、な
    らびに前記各制御ビットを、前記現在命令発行チェック
    ポイントと、前記指定命令発行チェックポイントとの間
    で切り換えることによって、LPレジスタ・マップ(3
    0)を指定命令発行チェックポイントに復元する段階;
    によって構成されることを特徴とするレジスタ再命名を
    実行する方法。
  3. 【請求項3】 命令パケットをデコードするための命令
    順序付け手段(12,14,16)、前記命令順序付け
    手段(12,14,16)に結合されていて前記命令順
    序付け手段(12,14,16)が発行する命令を実行
    するための実行手段(22,24)、ならびにレジスタ
    再命名手段(18)であって、前記レジスタ再命名手段
    は、論理・物理(LP)マップ(30)およびフリー・
    リスト(32)によって構成されており、前記命令順序
    付け手段(12,14,16)が前記命令パケットを発
    行すると直ちに、所定数の論理レジスタを、所定の物理
    レジスタのセットに割り当てるための前記レジスタ再命
    名手段(18)を有するデータ処理システム(10)内
    において、レジスタ再命名を実行する方法であって、前
    記方法は:前記レジスタ再命名手段(18)内の前記L
    Pレジスタ・マップ(30)を初期化する段階であっ
    て、該段階は、前記LPレジスタ・マップ(30)内の
    レジスタ・マップ・セルの第1セットの各セル、および
    前記フリー・リスト内のフリー・セルの第1セットの各
    セルの中に、一意の物理レジスタ名を格納し、前記各フ
    リー・セルに結合された制御ラッチ内の1つのビット
    を、第1論理値に設定することによって、LPレジスタ
    ・マップ(30)を初期化する段階;前記レジスタ・マ
    ップ・セルの第1セット内に格納された、第1宛先レジ
    スタ群内の一意の物理レジスタ名のそれぞれを、選択さ
    れた数のフリー・セル内の第1ラッチから割り当てられ
    た物理レジスタ名と交換し、前記の選択された数の各フ
    リー・セルに結合された前記制御ラッチ内の前記ビット
    を切り換え、その一方で同時に、第1命令発行チェック
    ポイントにおいて第1命令パケットをデコードする前記
    命令順序付け手段(12,14,16)に応答して、前
    記レジスタ・マップ・セルの第1セット内に格納され
    た、第1ソース・レジスタ群内の一意の物理レジスタ名
    のそれぞれを、前記レジスタ・マップ・セルの第1セッ
    トから、レジスタ・マップ・セルの第2セットの中にコ
    ピーする段階;第2命令発行チェックポイントにおい
    て、つぎの命令パケットが前記命令順序付け手段によっ
    て発行された後に、前記各フリー・セルを新しい宛先レ
    ジスタ名群で更新する段階であって、該段階は、前記新
    しい宛先レジスタ名群を、新たに選択された数のフリー
    ・セル内の第1ラッチから新たに割り当てられた物理レ
    ジスタ名と交換し、前記の新たに選択された数の各フリ
    ー・セルに結合された前記制御ラッチ内の前記ビットを
    切り換えることによって、前記各フリー・セルを新しい
    宛先レジスタ名群で更新する段階;ならびに前記命令順
    序付け手段(12,14,16)を介して、前記第1命
    令パケット内の1つまたは複数の命令が実行を完了した
    か否かを判断し、前記レジスタ再命名手段(18)に命
    令後退チェックポイントを発行して、前記第1命令パケ
    ット内の1つまたは複数の命令が完了したことを示す段
    階;前記LPレジスタ・マップ(30)を分岐命令発行
    チェックポイントに復元する段階であって、該段階は、
    現在命令発行チェックポイントにおける前記フリー・セ
    ルの前記制御ビットの論理状態を検査して、相補論理状
    態を有する、以前の命令発行チェックポイントの前記制
    御ビットの第1ビットを検索し、ならびに前記各制御ビ
    ットを、前記現在命令発行チェックポイントと、前記分
    岐命令発行チェックポイントとの間で切り換えることに
    よって、前記LPレジスタ・マップ(30)を分岐命令
    発行チェックポイントに復元する段階;によって構成さ
    れることを特徴とするところのレジスタ再命名を実行す
    る方法。
JP5040755A 1993-01-04 1993-02-05 データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法 Pending JPH06230961A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US000338 1993-01-04
US08/000,338 US5694564A (en) 1993-01-04 1993-01-04 Data processing system a method for performing register renaming having back-up capability

Publications (1)

Publication Number Publication Date
JPH06230961A true JPH06230961A (ja) 1994-08-19

Family

ID=21691070

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5040755A Pending JPH06230961A (ja) 1993-01-04 1993-02-05 データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法

Country Status (3)

Country Link
US (1) US5694564A (ja)
EP (1) EP0606697A1 (ja)
JP (1) JPH06230961A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001018645A1 (fr) * 1999-09-08 2001-03-15 Hajime Seki Systeme de renommage de registre
JP2002543490A (ja) * 1999-04-27 2002-12-17 トランジティブ テクノロジーズ リミテッド プログラムコード変換において使用する例外処理の方法および装置
JP2009076083A (ja) * 1995-02-14 2009-04-09 Fujitsu Ltd 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2012230687A (ja) * 2007-01-24 2012-11-22 Qualcomm Inc 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器

Families Citing this family (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2284493B (en) * 1993-12-01 1998-04-01 Intel Corp Exception handling in a processor that performs speculative out-of-order instruction execution
WO1996025705A1 (en) * 1995-02-14 1996-08-22 Fujitsu Limited Structure and method for high-performance speculative execution processor providing special features
US5740414A (en) * 1995-02-14 1998-04-14 Hal Computer Systems, Inc. Method and apparatus for coordinating the use of physical registers in a microprocessor
GB2300991B (en) * 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
US5664120A (en) * 1995-08-25 1997-09-02 International Business Machines Corporation Method for executing instructions and execution unit instruction reservation table within an in-order completion processor
JPH1097423A (ja) * 1996-09-20 1998-04-14 Hitachi Ltd ループ処理の並列実行制御に適したレジスタ構成を有するプロセッサ
US5881305A (en) * 1996-12-13 1999-03-09 Advanced Micro Devices, Inc. Register rename stack for a microprocessor
US5996063A (en) * 1997-03-03 1999-11-30 International Business Machines Corporation Management of both renamed and architected registers in a superscalar computer system
US5996068A (en) * 1997-03-26 1999-11-30 Lucent Technologies Inc. Method and apparatus for renaming registers corresponding to multiple thread identifications
US5878242A (en) * 1997-04-21 1999-03-02 International Business Machines Corporation Method and system for forwarding instructions in a processor with increased forwarding probability
US6003126A (en) * 1997-07-01 1999-12-14 International Business Machines Special instruction register including allocation field utilized for temporary designation of physical registers as general registers
JP3452771B2 (ja) * 1997-10-02 2003-09-29 富士通株式会社 命令制御システム及びその方法
US5974525A (en) * 1997-12-05 1999-10-26 Intel Corporation System for allowing multiple instructions to use the same logical registers by remapping them to separate physical segment registers when the first is being utilized
US6094716A (en) * 1998-07-14 2000-07-25 Advanced Micro Devices, Inc. Register renaming in which moves are accomplished by swapping rename tags
CA2420785C (en) * 2000-08-31 2012-07-17 Hajime Seki Computer system for processing instructions each containing a group of operations to be executed out of order
US7844799B2 (en) 2000-12-23 2010-11-30 International Business Machines Corporation Method and system for pipeline reduction
EP1217514A3 (en) * 2000-12-23 2003-08-13 International Business Machines Corporation Method and apparatus for bypassing pipeline stages
US7308563B2 (en) * 2001-09-28 2007-12-11 Intel Corporation Dual-target block register allocation
US7111125B2 (en) * 2002-04-02 2006-09-19 Ip-First, Llc Apparatus and method for renaming a data block within a cache
JP3799423B2 (ja) * 2002-07-30 2006-07-19 財団法人理工学振興会 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置
US7069411B1 (en) 2003-08-04 2006-06-27 Advanced Micro Devices, Inc. Mapper circuit with backup capability
US20050251662A1 (en) * 2004-04-22 2005-11-10 Samra Nicholas G Secondary register file mechanism for virtual multithreading
US7324106B1 (en) * 2004-07-27 2008-01-29 Nvidia Corporation Translation of register-combiner state into shader microcode
US7624253B2 (en) * 2006-10-25 2009-11-24 Arm Limited Determining register availability for register renaming
TWI389026B (zh) * 2009-06-08 2013-03-11 Rdc Semiconductor Co Ltd 暫存器更名表的回復方法與回復系統
US9009684B2 (en) * 2012-04-18 2015-04-14 International Business Machines Corporation Method, apparatus and product for porting applications to embedded platforms
US9471325B2 (en) * 2013-07-12 2016-10-18 Qualcomm Incorporated Method and apparatus for selective renaming in a microprocessor
US9733940B2 (en) * 2014-11-17 2017-08-15 International Business Machines Corporation Techniques for instruction group formation for decode-time instruction optimization based on feedback
GB2538766B (en) * 2015-05-28 2018-02-14 Advanced Risc Mach Ltd Register renaming
US11294683B2 (en) * 2020-03-30 2022-04-05 SiFive, Inc. Duplicate detection for register renaming

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5621242A (en) * 1979-07-28 1981-02-27 Fujitsu Ltd Pipeline control method for computer operation
JPS59107688A (ja) * 1982-12-13 1984-06-21 Fuji Photo Film Co Ltd 半導体撮像装置
JPS6051948A (ja) * 1983-08-31 1985-03-23 Hitachi Ltd 情報処理装置
US4901233A (en) * 1987-07-20 1990-02-13 International Business Machines Corporation Computer system with logic for writing instruction identifying data into array control lists for precise post-branch recoveries
US5197132A (en) * 1990-06-29 1993-03-23 Digital Equipment Corporation Register mapping system having a log containing sequential listing of registers that were changed in preceding cycles for precise post-branch recovery
US5226164A (en) * 1991-04-24 1993-07-06 International Business Machines Corporation Millicode register management and pipeline reset

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009076083A (ja) * 1995-02-14 2009-04-09 Fujitsu Ltd 特殊機能を提供する高性能投機的実行プロセッサの構造及び方法
JP2002543490A (ja) * 1999-04-27 2002-12-17 トランジティブ テクノロジーズ リミテッド プログラムコード変換において使用する例外処理の方法および装置
WO2001018645A1 (fr) * 1999-09-08 2001-03-15 Hajime Seki Systeme de renommage de registre
US7171541B1 (en) * 1999-09-08 2007-01-30 Hajime Seki Register renaming system
JP2012230687A (ja) * 2007-01-24 2012-11-22 Qualcomm Inc 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2014211881A (ja) * 2007-01-24 2014-11-13 クゥアルコム・インコーポレイテッドQualcomm Incorporated 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2016167284A (ja) * 2007-01-24 2016-09-15 クゥアルコム・インコーポレイテッドQualcomm Incorporated 誤予測された分岐のためにフラッシュするセグメント化パイプライン
JP2014179098A (ja) * 2013-03-14 2014-09-25 Samsung Electronics Co Ltd マイクロプロセッサ及びこれを使用した電子機器

Also Published As

Publication number Publication date
US5694564A (en) 1997-12-02
EP0606697A1 (en) 1994-07-20

Similar Documents

Publication Publication Date Title
JPH06230961A (ja) データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
KR100334479B1 (ko) 컴퓨터 처리 시스템에서 로드 동작의 순서 변경 방법 및 장치
CN106990941B (zh) 使用寄存器重命名处理移动指令
US5758112A (en) Pipeline processor with enhanced method and apparatus for restoring register-renaming information in the event of a branch misprediction
US6035391A (en) Floating point operation system which determines an exchange instruction and updates a reference table which maps logical registers to physical registers
US5465373A (en) Method and system for single cycle dispatch of multiple instructions in a superscalar processor system
US6625723B1 (en) Unified renaming scheme for load and store instructions
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
JP3919802B2 (ja) プロセッサ、およびプロセッサにおいて命令演算をスケジューリングするための方法
CN107735775B (zh) 用于使用与指针相关联的范围信息来执行指令的装置和方法
US6009509A (en) Method and system for the temporary designation and utilization of a plurality of physical registers as a stack
US6405304B1 (en) Method for mapping instructions using a set of valid and invalid logical to physical register assignments indicated by bits of a valid vector together with a logical register list
US7155599B2 (en) Method and apparatus for a register renaming structure
EP0605866B1 (en) Method and system for enhanced instruction dispatch in a superscalar processor system utilizing independently accessed intermediate storage
US5596735A (en) Circuit and method for addressing segment descriptor tables
US6338134B1 (en) Method and system in a superscalar data processing system for the efficient processing of an instruction by moving only pointers to data
JPH09120359A (ja) プロセッサ内の資源割当て追跡方法及びそのシステム
EP0605868A1 (en) Method and system for indexing the assignment of intermediate storage buffers in a superscalar processor system
JP3154660B2 (ja) 条件レジスタ・データを一時的にバッファリングする方法およびシステム
US6209081B1 (en) Method and system for nonsequential instruction dispatch and execution in a superscalar processor system
US20080016326A1 (en) Latest producer tracking in an out-of-order processor, and applications thereof
US20040073775A1 (en) Data flow oriented storage
US7370178B1 (en) Method for latest producer tracking in an out-of-order processor, and applications thereof
JP3170472B2 (ja) レジスタ・リマップ構造を有する情報処理システム及び方法
JP3138259B2 (ja) カウントによる高速レジスタ・リネームのためのシステムおよび方法