WO2001018645A1 - Systeme de renommage de registre - Google Patents

Systeme de renommage de registre Download PDF

Info

Publication number
WO2001018645A1
WO2001018645A1 PCT/JP2000/006070 JP0006070W WO0118645A1 WO 2001018645 A1 WO2001018645 A1 WO 2001018645A1 JP 0006070 W JP0006070 W JP 0006070W WO 0118645 A1 WO0118645 A1 WO 0118645A1
Authority
WO
WIPO (PCT)
Prior art keywords
register
physical
instruction
logical
numbers
Prior art date
Application number
PCT/JP2000/006070
Other languages
English (en)
French (fr)
Inventor
Hajime Seki
Original Assignee
Hajime Seki
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 Hajime Seki filed Critical Hajime Seki
Priority to US10/069,987 priority Critical patent/US7171541B1/en
Priority to JP2001522169A priority patent/JP3592673B2/ja
Priority to DE60045286T priority patent/DE60045286D1/de
Priority to AT00991526T priority patent/ATE489674T1/de
Priority to EP00991526A priority patent/EP1237072B1/en
Publication of WO2001018645A1 publication Critical patent/WO2001018645A1/ja

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, 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
    • 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/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines

Definitions

  • the present invention relates to a register renaming method which enables processing of many instructions per one clock 'cycle in a processor having a' super scalar 'architecture capable of executing out-of-order execution.
  • Processors with a superscalar architecture that can execute out-of-order have more physical registers than the number of logical registers stipulated in the architecture, and are called dynamic register renaming. Is utilized.
  • the dependency is checked by comparing the logical register numbers indicated as operands in a plurality of instructions, and the logical register numbers are respectively renamed to appropriate physical register numbers so that the dependency is canceled.
  • the method using the mapping table requires an extra stage to access the mapping table, but the logic circuit for examining the dependencies between instructions is not It is relatively simple.
  • the present invention has been made in order to solve the above problems, and has as its object a register renaming method that can further increase the number of instructions that can be processed per cycle from the current level. Is to provide. Disclosure of the invention
  • the processor adopting the register renaming method according to the present invention includes a free list that holds the number of a physical register that is free, that is, is not allocated, and a processor that is provided corresponding to each logical register. There is a 'mapping' table in which the physical register numbers are written into the entries.
  • the register renaming method according to the present invention enables processing of more instructions per cycle by pipelining such that the dependency between instructions is detected as preprocessing.
  • the logical register numbers indicated as operands in the instruction group are respectively renamed to appropriate physical register numbers. Signed logical register numbers are assigned to physical register numbers that are taken out of the free list and assigned corresponding to the assigned signs. Unsigned logical register numbers are respectively renamed to physical register numbers obtained by accessing the mapping 'table.
  • the contents of the mapping table are updated. That is, the contents of the entries in the matching table corresponding to the logical register numbers indicated as the destination 'operands' in the instruction group are rewritten to the physical register numbers allocated corresponding to the codes assigned. If the same logical register number is indicated as the destination 'operand' in multiple instructions, the write for the last instruction in the instruction is valid.
  • register renaming of more instructions per cycle can be performed by using a relatively simple circuit by performing the processing in two stages, that is, by pipelining.
  • FIG. 1 is a block diagram of hardware necessary for realizing the register renaming method of the present invention.
  • FIG. 2 is a diagram specifically showing a change in the contents of the “mapping” table and each F register when register “renaming” is performed on a certain instruction sequence in one embodiment of the present invention.
  • the embodiment of the processor that adopts the register renaming method according to the present invention described below assumes that eight logical registers R0, R1,.
  • the hardware is a RISC machine equipped with 32 physical registers P00, P01, ... 31 and is configured to be able to perform register renaming of up to four instructions per cycle.
  • FIG. 1 is a block diagram of hardware necessary for realizing the register 'renaming scheme' of the present invention, where 1 denotes a mating 'table' and 2 denotes a free list.
  • a mapping 'table (hereinafter referred to as MT) 1 is provided in correspondence with eight logical registers R0, R1,... R7, respectively. It consists of eight entries 0 to 17. Each entry of MT is configured to write one physical register number.
  • B Free 'list
  • the free 'list (referred to below as FL) holds the number of physical registers that are free, that is, unassigned.
  • the number of the free physical register is extracted from FL. Conversely, when deallocating a certain physical register, the number of that physical register is registered in FL.
  • the register 2 includes registers 21, 22, 23, 24 and a register file 28.
  • Each F register has a configuration in which one physical register number is written, and the number of a free physical register is extracted from the FL from the F register. That is, as many F registers as the number of instructions for which register and renaming are performed in one cycle are required. In the case of the processor of this embodiment, four F registers of F1, F2, F3, and F4 are provided.
  • the register file 28 in the FL is configured so that one physical register number is written in each entry, and constitutes a circular FIF queue. That is, the number of the physical register whose allocation has been released is added to the end of the queue, and the F register from which the physical register number has been extracted is refilled with the physical register number from the beginning of the queue.
  • register renaming is performed in two stages of (1) preprocessing, (2) execution of register and renaming, and updating of MT contents.
  • the operation content for each stage will be described below.
  • the logical register numbers indicated as operands in the instruction group are respectively renamed to the appropriate physical register numbers, and the contents of ⁇ T are updated. Specifically, the following processing is performed.
  • (2b) Rewrite the contents of the MT entries corresponding to the logical register numbers indicated as the destination 'operand' in the instruction group to the physical register numbers allocated corresponding to the respective attached codes. If the same logical register number is indicated as the destination-operand in multiple instructions, the last instruction in the The writing related to the decree becomes effective.
  • the above instruction sequence is based on the assumption that the data Dl, D2, D3, D4, and D5 enter the registers Rl, R2, 3, R4, and R5, respectively, according to the instruction located before that. + (D3 * D4) ⁇ Calculate / D5 and store it in register R0.
  • each of the second and subsequent instructions compare each source 'register' operand with the destination 'register' operand of the instruction located before that instruction, and assign the same sign if they match: But If there is more than one, select the one in the last instruction among them.
  • each source 'operand is compared to instruction 1's destination' operand R0, and there is no match in this case, so there is no sign.
  • each source 'operand is compared to the destination's operands of instructions 1 and 2, where the first source' operand is the instruction's destination 'operand' and the second source 'operand is instruction 2 Since they match the 'destination' operand, they are marked with @ 1 and @ 2, respectively.
  • each source operand is compared to the destination 'operand' of instructions 1, 2 and 3, where the first source 'operand' matches the destination 'operand' of instructions 1 and 3. Add the sign @ 3 in the latter instruction 3.
  • the preprocessing for register renaming described above can be realized in one cycle by using appropriate circuits.
  • Signed register 'operands' are renamed to physical register numbers which are taken out from FL and assigned according to the assigned codes. Unsigned registers and operands are each reset to the physical register number obtained by accessing MT by the logical register number.
  • the given instruction sequence is read as follows.
  • the contents of the MT entries corresponding to the destination 'operands in the instructions 1 to 4 are rewritten to the physical register numbers allocated in correspondence with the codes respectively assigned.
  • the contents of the MT entries corresponding to R0 and R1 are rewritten to P21 and P08, respectively.
  • R0 there is a triple assignment of P19, P27 and P21, but the last P21 is written to MT.
  • each F register from which the physical register number has been extracted is supplemented with free physical register numbers P31, P01, P17 and P14.
  • the above is the register renaming process for a given instruction sequence in the processor of the present embodiment. It is also possible to adopt a configuration in which the correspondence between the logical register number and the code for updating the contents of the mapping table is determined in the preprocessing stage. In other words, at the preprocessing stage, if the same logical register number is indicated as the destination 'operand' in a plurality of instructions where register renaming is performed at the same time, the instruction other than the instruction located at the rearmost position However, it is determined that updating of the contents of the mapping table is invalid.
  • register renaming method of the present invention by using a pipeline that performs the detection of dependencies between instructions as preprocessing, a relatively simple circuit can be used to increase the number of cycles per cycle. Instruction processing becomes possible.

Description

明 細 書 レジスタ'リネーミング方式 技術分野
本発明は、 out-of-order 実行の可能なスーパースカラ'アーキテクチャ をとるプロセッサにおいて、 1クロック 'サイクル当り多くの命令の処 理を可能とするようなレジスタ ·リネーミング方式に関するものである。 背景技術
Out-of-order実行の可能なス一パースカラ 'アーキテクチャをとるプロ セッサにおいては、 アーキテクチャ上規定されている論理レジスタの数 を上回る数の物理レジスタを備えており、 動的レジスタ ·リネーミング という手法が活用される。
すなわち、 各サイクルごとに、 複数の命令においてオペランドとして 示される論理レジスタ番号を比べて依存関係を調べ、 その依存関係が解 消するように論理レジスタ番号をそれぞれ適切な物理レジスタ番号にリ ネームする。
レジスタ ·リネーミングを実現するには、 リオーダ'バッファを用いる 方式とマツビング'テーブルを用いる方式が知られている。 リオーダ'バ ッファを用いる方式は、 例えば、 米国カリフォルニア州サンタクララ (Santa Clara) のインテル社 (Intel Corporation) から入手可能な商標べ ンティアム (Pentium) プロセッサにおいて採用されている。 マツピン グ'テーブルを用いる方式は、 Keller, R. M. "Look-Ahead Processors." Computing Surveys, Vol. 7, no. 4 (December 1975) , pp. 177-195に示されて おり、例えば、米国カリフォルニァ州マウンテンビュー (Mountain View) の M I P S社 (MIPS Technologies, Inc.) から入手可能な商標 RIOOOOプ 口セッサにおいて採用されている。
リォーダ 'バッファを用いる方式と比較して、 マツピング ·テ一ブルを 用いる方式は、 マッピング'テ一ブルをアクセスするためのステージが 余分に必要となるが、 命令間の依存性を調べる論理回路は比較的単純な ものですむ。
ス—パースカラ.プロセッサにおいては、 より効率的にレジスタ'リネ
—ミングを行い、 1サイクル当りより多くの命令のデコード Z発行を行 うことによって、 処理性能を向上させることが求められている。
しかしながら、 1サイクル当りレジスタ ·リネーミングを行う命令の 数を現在の水準よりさらに増やすのは、 そのための論理回路が極度に大 規模なものとなるため困難であるという問題がある。
本発明は、 上記問題点を解決するため創案されたものであり、 その目 的は、 1サイクル当り処理できる命令の数を現在の水準よりさらに増や すことを可能とするレジスタ ·リネーミング方式を提供することにある。 発明の開示
本発明によるレジスタ ·リネーミング方式を採用するプロセッサは、 フリーな、 即ち、 割り付けられていない物理レジスタの番号を保持する フリ一 ·リス ト、 及び、 各論理レジスタにそれぞれ対応して設けられた 各エントリに物理レジスタ番号が書き込まれるようになつているマツピ ング'テーブルを備える。
本発明によるレジスタ ·リネーミング方式は、 命令間の依存性の検出 を前処理として行うようなパイプライン化によって、 1サイクル当りよ り多くの命令の処理を可能とするものである。
まず、 同時にレジスタ'リネーミングが行われる複数の命令について 以下のような前処理が行われる。
( a ) デステイネ一ション 'オペランドとして示される論理レジスタ番 号の各々に対し、 命令順の符号を付す。 この符号は将来フリ一 ·リスト から取り出され割り付けられる物理レジスタ番号に置き換えられるべき 指標である。
( b ) ソ一ス'オペランドとして示される論理レジスタ番号の各々に対 し、 同時に レジス タ · リ ネー ミ ングが行われる命令と W A R (writ-after-read)依存関係にある場合に、 その依存関係にある命令のデス ティネーション 'オペランドに付される符号を付す。
上記のような前処理の後に、 命令群中にオペランドとして示される論 理レジスタ番号をそれぞれ適切な物理レジスタ番号にリネームする。 符 号を付された論理レジスタ番号は、 それぞれ付された符号に対応してフ リー ·リストから取り出され割り付けられる物理レジスタ番号にリネー ムする。 符号を付されていない論理レジスタ番号は、 それぞれマツピン グ'テーブルをアクセスして得られる物理レジスタ番号にリネームする。 同じタイミングで、 マッピング'テ一ブルの内容の更新が行われる。 即ち、 命令群中でデスティネーション 'オペランドとして示される論理 レジスタ番号にそれぞれ対応するマツビング 'テーブルのェントリの内 容を、 それぞれ付された符号に対応して割り付けられる物理レジスタ番 号に書き換える。 複数の命令において同じ論理レジスタ番号がデスティ ネーション 'オペランドとして示されている場合には、 その中の最後方 に位置する命令に関する書き込みが有効となる。
以上のように、 2段階で行う、即ちパイプライン化することによって、 比較的単純な回路を用いて、 1サイクル当りより多くの命令のレジスタ ·リネーミングを行うことが可能となる。 図面の簡単な説明
第 1図は、 本発明のレジスタ'リネーミング方式を実現するために必 要となるハードウェアのブロック図である。 第 2図は、 本発明の一実施 例において、 ある命令列に関してレジスタ'リネーミングが行われる際 の、 マッピング'テーブル及び各 Fレジスタの内容の変化を具体的に示 す図である。 発明を実施するための最良の形態
以下に、 本発明によるレジスタ ·リネーミング方式を実現する好まし い一実施例について、 図面を参照しながら説明する。 なお、 以下に述べ る本発明によるレジスタ'リネーミング方式を採用するプロセッサの実 施例は、 アーキテクチャ上は R0, R1, ... R7の 8つの論理レジスタの存在 を想定しているが、 ハードウェアとしては P00, P01, ... 31の3 2個の 物理レジスタを備える RISC マシンであり、 1サイクル当り 4つまでの 命令のレジスタ'リネーミングを行えるように構成されているものとす 。
図 1は本発明のレジスタ 'リネーミング方式を実現するために必要と なるハードウエアのブロック図であって、 1はマツビング 'テーブ^^、 2はフリー'リストを表している。
次に、 上記各構成要素ごとにその詳細な構成を説明する。
(A) マッピング 'テーブル (M T)
図 1に示されるように、 本実施例においては、 マッピング 'テーブル (以下では M Tと記す) 1は R0, R1, ... R7の 8つの論理レジスタにそれ ぞれ対応して設けられた 1 0 〜 1 7の 8つのエントリで構成される。 M Tの各々のエントリは、 1つの物理レジスタ番号が書き込まれる構成と なっている。 ( B ) フリー'リスト (F L )
フリー'リス ト (以下では F Lと記す) は、 フリーな、 即ち、 割り付 けられていなレ、物理レジスタの番号を保持するものである。
フリーな物理レジスタを割り付ける際に、 F Lからフリーな物理レジ スタの番号が取り出される。 逆に、 ある物理レジスタの割り付けを解除 する際に、 その物理レジスタの番号が F Lに登録されるようになってい る。
図 ] に示されるように、 本実施例においては、 し 2は レジスタ 2 1、 2 2、 2 3、 2 4とレジスタ'ファイル 2 8を具備する。
各々の Fレジスタは 1つの物理レジスタ番号が書き込まれる構成とな つており、 F Lからフリ一な物理レジスタの番号が取り出されるのは、 Fレジスタからとなっている。 即ち、 1サイクルでレジスタ.リネーミ ングが行われる命令の数だけ Fレジスタが必要で、 本実施例のプロセッ サの場合、 Fl, F2, F3, F4の 4つの Fレジスタを備えている。
F Lにあるレジスタ 'ファイル 2 8は、 各々のエントリに 1つの物理 レジスタ番号が書き込まれるようになつており、 循環型の F I F〇キュ 一を構成する。 即ち、 割り付けが解除された物理レジスタの番号がキュ 一の末尾に加えられ、 物理レジスタ番号が取り出された Fレジスタにキ ユーの先頭から物理レジスタ番号が補充されるようになっている。
ついで、本実施例におけるレジスタ'リネーミングの過程を説明する。 本実施例においては、 ①前処理、 ②レジスタ.リネーミングの実行及 び M Tの内容の更新、 の 2ステージで、 レジスタ ·リネーミングが行わ れる。 以下に各ステージごとに動作内容を説明する。
① 前処理
同時にレジスタ'リネーミングが行われる複数の命令について以下の ような前処理が行われる。 ( l a ) デスティネ一ション 'オペランドとして示される論理レジスタ 番号の各々に対し、 @1 @2, …と命令順の符号を付す。 本実施例におい ては、 符号 @1, @2, @3, @4は、 F Lにある Fレジスタ Fl, F2, F3, F4に それぞれ対応するものである。
( l b ) ソース'オペランドとして示される論理レジスタ番号の各々に 対し、 同時にレジスタ · リ ネーミ ングが行われる命令と W A R (writ-after-read)依存関係にある場合に、 その依存関係にある命令のデス ティネーシヨン'オペランドに付される符号を付す。 即ち、 2番目以降 に位置する命令の各々において、 ソース'オペランドとして示される論 理レジスタ番号の各々をその命令以前に位置する命令のデスティネーシ ョン 'オペランドとして示される論理レジスタ番号と比較し、 一致する 場合に同じ符号を付す。 一致するものが複数個存在する場合には、 その 中の最後方に位置する命令におけるものを選択する。
② レジスタ'リネーミングの実行及び M Tの内容の更新
上記のような前処理の後に、 命令群中にオペランドとして示される論 理レジスタ番号をそれぞれ適切な物理レジスタ番号にリネームし、 \ T の内容を更新する。 具体的には、 以下のような処理が行われる。
( 2 a ) 符号を付された論理レジスタ番号は、 それぞれ付された符号に 対応して F Lから取り出され割り付けられる物理レジスタ番号にリネ一 ムする。 符号を付されていない論理レジスタ番号は、 それぞれ M Tをァ クセスして得られる物理レジスタ番号にリネームする。
( 2 b ) 命令群中でデスティネーション 'オペランドとして示される論 理レジスタ番号にそれぞれ対応する M Tのェントリの内容を、 それぞれ 付された符号に対応して割り付けられる物理レジスタ番号に書き換え る。 複数の命令において同じ論理レジスタ番号がデスティネーション- オペランドとして示されている場合には、 その中の最後方に位置する命 令に関する書き込みが有効となる。
以上が、 木実施例におけるレジスタ 'リネーミングの過程であるが、 ついで、 具体的な動作例について説明する。 いま、 本実施例のプロセッ サにおいて、 以下のような 4つの命令のレジスタ'リネーミングを行う ものとしょう:
命令 1 mul R0, Rl, R2 ; R0 = Rl * R2
命令 2 mul Rl, R3, R4 ; Rl = R3 * R4
命令 3 add R0, R0, Rl ; R0 = R0 + Rl
命令 4 div R0, R0, R5 ; R0 = R0 / R5
以上の命令列は、それ以前に位置する命令によって、 Rl, R2, 3, R4, R5 の各レジスタにそれぞれデータ Dl, D2, D3, D4, D5が入るものとして、 { (D 1*D2) + (D3*D4) } /D5 を計算し、 レジスタ R0 に格納する、 とレ、うも のである。
本実施例のプロセッサにおいて、 上記命令列に関してレジスタ'リネ 一ミングが行われる過程を、 以下に詳細に説明する。
まず、 レジスタ.リネーミングのための前処理が次のように行われる。 命令 1 mul R0 (@1) , Rl (none) , R2 (none)
命令 2 mul Rl (@2) , R3 (none) , R4 (none)
命令 3 add R0 (@3) , R0 (@1) , Rl (@2)
命令 4 div R0 (@4) , R0 (@3) , R5 (none)
即ち、 各命令において命令コードの次に示されるデスティネ一ション 'レジスタ 'オペランドに対して、 それぞれ順に符号 @1, @2, @3, @4を 付す。
2番目以降に位置する命令の各々において、 各ソース'レジスタ 'オペ ランドをその命令以前に位置する命令のデスティネ一ション'レジスタ' オペランドと比較し、 一致する場合に同じ符号を付す: 一致するものが 複数個存在する場合には、 その中の最後方に位置する命令におけるもの を選択する。
命令 1においては、 いずれのソース'オペランドにも符号を付すこと はない。 実際には、 「符号を付されない」 ソース'オペランドにはデフォ ルトの符号 (例えば @ 0 ) が付されることになる。
命令 2においては、 各ソース'オペランドを命令 1のデスティネ一シ ヨン'オペランド R0 と比較し、 この場合一致するものはないので符号 を付すことはない。
命令 3においては、 各ソース'オペランドを命令 1及び 2のデスティ ネーシヨン'オペランドと比較し、 この場合、 第 1 ソース'オペランドが 命令 1のデステイネ一ション 'オペランドと、 第 2ソース'オペランドが 命令 2のデスティネーション'オペランドと一致するので、 それぞれ符 号 @1, @2を付す。
命令 4においては、 各ソース ·オペランドを命令 1、 2及び 3のデス ティネーシヨン'オペランドと比較し、 この場合、 第 1ソース'オペラン ドが命令 1及び 3のデステイネ一ション 'オペランドと一致するので、 後の方の命令 3における符号 @3を付す。
以上のようなレジスタ ·リネーミングのための前処理は、 適切な回路 を用いることにより 1サイクルで実現される。
次サイクルにおいて、 レジスタ'リネーミングの実行及ぴ M Tの内容 の更新が行われるが、 この時点の M T及び F Lにある各 Fレジスタの内 容が図 2 (A)に示されるようなものであるとしょう。
符号を付されたレジスタ 'ォペランドは、 それぞれ付された符号に対 応して F Lから取り出され割り付けられる物理レジスタ番号にリネーム する。 また、 符号を付されていないレジスタ ·オペランドは、 それぞれ M Tを論理レジスタ番号でアクセスして得られる物理レジスタ番号にリ ネームし、 与えられた命令列は次のような内容に読み替えられる。
命令 1 mul PI 9, P03, P22
命令 2 mul P08, P29, P05
命令 3 add P27, PI 9, P08
命令 4 div P21, P27, P07
また、 命令 1〜 4におけるデスティネーション 'オペランドにそれぞ れ対応する M Tのェントリの内容を、 それぞれ付された符号に対応して 割り付けられる物理レジスタ番号に書き換える。 ここでは、 図 2 ( B )に 示されるように、 R0及ぴ R1に対応する M Tのェントリの内容がそれぞ れ P21、 P08に書き換えられている。 R0に関しては、 P19, P27, P21の 3 重の割り付けが存在するが、 M Tには最後の P21が書き込まれる。 さら に、 図 2 ( B )に示されるように、 物理レジスタ番号が取り出された各 F レジスタにフリーな物理レジスタの番号 P31, P01, P17, P14が補充され ている。
以上が、 本実施例のプロセッサにおける、 与えられた命令列に関する レジスタ'リネーミングの過程である。 また、 前処理の段階で、 マッピング 'テーブルの内容の更新に関する 論理レジスタ番号と符号の対応関係を確定しておくような構成とするこ ともできる。 即ち、 前処理の段階で、 同時にレジスタ ·リネーミングが 行われる複数の命令において、 同じ論理レジスタ番号がデスティネーシ ョン 'オペランドとして示されている場合、 その中の最後方に位置する 命令以外は、 マッピング'テ一ブルの内容の更新に関しては、 無効であ ることを確定しておくようにする。
例えば、 上述の動作例で、 前処理の段階で、
命令 1 R0→ @ 1 :無効 命令 2 Rl→ @ 2 有効
命令 3 R0 -> @ 3 無効
命令 4 R0→ @ 4 有効
と確定しておき、 次サイクルにおいて、 有効の場合のみ、 付された符号 に対応して割り付けられる物理レジスタ番号の書き込みを可とする。 以上のように、 マツビング 'テーブルの内容の更新に関しても前処理 を行うような構成とすることで、 さらなる回路の簡素化が可能となる。 産業上の利用可能性
以上のように、 本発明のレジスタ ·リネーミング方式によれば、 命令 間の依存性の検出を前処理として行うようなパイブライン化によって、 比較的単純な回路を用いて、 ]サイクル当りより多くの命令の処理が可 能となる。

Claims

請 求 の 範 囲
1 . アーキテクチャ上規定されている論理レジスタの数を上回る数の物 理レジスタと、 割り付けられていない物理レジスタの番号を保持するフ リ一 'リストと、 各論理レジスタにそれぞれ対応して設けられた各ェン トリに物理レジスタ番号が書き込まれるようになっているマツビング- テ一ブルとを具備する out-of-order実行の可能なスーバースカラ'ァ一キ テクチヤを採用するプロセッサにおいて、
同時にレジスタ ·リネーミングが行われる複数の命令において、 ( a ) デスティネーション 'オペランドとして示される論理レジスタ番 号の各々に対し命令順の符号を付し、
( b ) ソース'オペランドとして示される論理レジスタ番号の各々に対 し、 同時に レジスタ ' リ ネー ミ ングが行われる命令と W A R (writ-after-read)依存関係にある場合に、 その依存関係にある命令のデス ティネーション'オペランドに付される符号を付した後に、
符号を付された論理レジスタ番号は、 それぞれ付された符号に対応し て該フリー ·リス 卜から取り出され割り付けられる物理レジスタ番号に リネームし、 符号を付されていない論理レジスタ番号は、 それぞれ該マ ッビング 'テーブルをアクセスして得られる物理レジスタ番号にリネ一 ムするようなレジスタ'リネーミング方式。
2 . 1クロック 'サイクル当りレジスタ'リネーミングを行う命令の数だ けの各々 1つの物理レジスタ番号が書き込まれるようになっている Fレ ジスタと、 各々のェントリに 1つの物理レジスタ番号が書き込まれるよ うになつているレジスタ 'ファイルで構成される循環型の F I F〇キュ 一を具備し、
割り付けが解除された物理レジスタの番号を随時該キューの末尾に加 え、
Fレジスタから物理レジスタ番号が取り出されるのに応じて、 物理レ ジスタ番号が取り出された Fレジスタに該キューの先頭から物理レジス タ番号を補充するようになっているフリ一' リス ト。
PCT/JP2000/006070 1999-09-08 2000-09-06 Systeme de renommage de registre WO2001018645A1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
US10/069,987 US7171541B1 (en) 1999-09-08 2000-09-06 Register renaming system
JP2001522169A JP3592673B2 (ja) 1999-09-08 2000-09-06 レジスタ・リネーミング方式
DE60045286T DE60045286D1 (de) 1999-09-08 2000-09-06 Registerumbenennungssystem
AT00991526T ATE489674T1 (de) 1999-09-08 2000-09-06 Registerumbenennungssystem
EP00991526A EP1237072B1 (en) 1999-09-08 2000-09-06 Register renaming system

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP11/254149 1999-09-08
JP25414999 1999-09-08

Publications (1)

Publication Number Publication Date
WO2001018645A1 true WO2001018645A1 (fr) 2001-03-15

Family

ID=17260916

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2000/006070 WO2001018645A1 (fr) 1999-09-08 2000-09-06 Systeme de renommage de registre

Country Status (7)

Country Link
US (1) US7171541B1 (ja)
EP (1) EP1237072B1 (ja)
JP (1) JP3592673B2 (ja)
CN (1) CN1264087C (ja)
AT (1) ATE489674T1 (ja)
DE (1) DE60045286D1 (ja)
WO (1) WO2001018645A1 (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004012079A1 (ja) * 2002-07-30 2004-02-05 The Circle For The Promotion Of Science And Engineering 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置
KR100861701B1 (ko) 2007-01-10 2008-10-06 연세대학교 산학협력단 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법
US11294683B2 (en) * 2020-03-30 2022-04-05 SiFive, Inc. Duplicate detection for register renaming

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7200738B2 (en) * 2002-04-18 2007-04-03 Micron Technology, Inc. Reducing data hazards in pipelined processors to provide high processor utilization
CN100524208C (zh) * 2006-10-26 2009-08-05 中国科学院计算技术研究所 对状态寄存器进行重命名的方法和使用该方法的处理器
CN101794214B (zh) 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
GB2496934B (en) * 2012-08-07 2014-06-11 Imagination Tech Ltd Multi-stage register renaming using dependency removal
US9471325B2 (en) * 2013-07-12 2016-10-18 Qualcomm Incorporated Method and apparatus for selective renaming in a microprocessor
JP6511462B2 (ja) * 2013-10-27 2019-05-15 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッドAdvanced Micro Devices Incorporated 浮動小数点レジスタエイリアシングのためのプロセッサ及び方法
CN111506347B (zh) * 2020-03-27 2023-05-26 上海赛昉科技有限公司 一种基于指令写后读相关假设的重命名的方法
CN114356420B (zh) * 2021-12-28 2023-02-17 海光信息技术股份有限公司 指令流水线的处理方法及装置、电子装置及存储介质
US11714620B1 (en) 2022-01-14 2023-08-01 Triad National Security, Llc Decoupling loop dependencies using buffers to enable pipelining of loops

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06149569A (ja) * 1992-11-10 1994-05-27 Oki Electric Ind Co Ltd レジスタ番号変更装置
JPH06230961A (ja) * 1993-01-04 1994-08-19 Motorola Inc データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JPH11184696A (ja) * 1997-12-25 1999-07-09 Nec Corp 情報処理装置および割り込み処理方法
JP2000172505A (ja) * 1998-12-11 2000-06-23 Hitachi Ltd レジスタ番号変換を行うプロセッサ

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4992938A (en) * 1987-07-01 1991-02-12 International Business Machines Corporation Instruction control mechanism for a computing system with register renaming, map table and queues indicating available registers
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
US5655115A (en) * 1995-02-14 1997-08-05 Hal Computer Systems, Inc. Processor structure and method for watchpoint of plural simultaneous unresolved branch evaluation
US6112019A (en) * 1995-06-12 2000-08-29 Georgia Tech Research Corp. Distributed instruction queue
US5919256A (en) * 1996-03-26 1999-07-06 Advanced Micro Devices, Inc. Operand cache addressed by the instruction address for reducing latency of read instruction
US5893145A (en) * 1996-12-02 1999-04-06 Compaq Computer Corp. System and method for routing operands within partitions of a source register to partitions within a destination register
US6185671B1 (en) * 1998-03-31 2001-02-06 Intel Corporation Checking data type of operands specified by an instruction using attributes in a tagged array architecture
US6442677B1 (en) * 1999-06-10 2002-08-27 Advanced Micro Devices, Inc. Apparatus and method for superforwarding load operands in a microprocessor

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06149569A (ja) * 1992-11-10 1994-05-27 Oki Electric Ind Co Ltd レジスタ番号変更装置
JPH06230961A (ja) * 1993-01-04 1994-08-19 Motorola Inc データ処理システムにおいてバックアップ機能を備えてレジスタ再命名を実行する方法
JPH11184696A (ja) * 1997-12-25 1999-07-09 Nec Corp 情報処理装置および割り込み処理方法
JP2000172505A (ja) * 1998-12-11 2000-06-23 Hitachi Ltd レジスタ番号変換を行うプロセッサ

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004012079A1 (ja) * 2002-07-30 2004-02-05 The Circle For The Promotion Of Science And Engineering 命令制御装置、機能ユニット、プログラム変換装置および言語処理装置
KR100861701B1 (ko) 2007-01-10 2008-10-06 연세대학교 산학협력단 레지스터 값의 유사성에 기반을 둔 레지스터 리네이밍시스템 및 방법
US11294683B2 (en) * 2020-03-30 2022-04-05 SiFive, Inc. Duplicate detection for register renaming
US11640301B2 (en) 2020-03-30 2023-05-02 SiFive, Inc. Duplicate detection for register renaming

Also Published As

Publication number Publication date
US7171541B1 (en) 2007-01-30
DE60045286D1 (de) 2011-01-05
EP1237072B1 (en) 2010-11-24
JP3592673B2 (ja) 2004-11-24
CN1264087C (zh) 2006-07-12
EP1237072A1 (en) 2002-09-04
CN1373869A (zh) 2002-10-09
EP1237072A4 (en) 2003-01-08
ATE489674T1 (de) 2010-12-15

Similar Documents

Publication Publication Date Title
JP3571263B2 (ja) レジスタ名称変更システム
KR100592122B1 (ko) 가상 레지스터 번호들을 이용하여 논리적 레지스터 번호들을 물리적 레지스터 번호들로 맵핑시키도록 구성된 프로세서
US5627981A (en) Software mechanism for accurately handling exceptions generated by instructions scheduled speculatively due to branch elimination
US5548776A (en) N-wide bypass for data dependencies within register alias table
US5367650A (en) Method and apparauts for parallel exchange operation in a pipelined processor
US5996068A (en) Method and apparatus for renaming registers corresponding to multiple thread identifications
US6594754B1 (en) Mapping destination logical register to physical register storing immediate or renamed source register of move instruction and using mapping counters
US5471633A (en) Idiom recognizer within a register alias table
US5452426A (en) Coordinating speculative and committed state register source data and immediate source data in a processor
US7769986B2 (en) Method and apparatus for register renaming
US5974525A (en) 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
GB2496934A (en) Multi-stage register renaming using dependency removal and renaming maps.
WO2001018645A1 (fr) Systeme de renommage de registre
US6266763B1 (en) Physical rename register for efficiently storing floating point, integer, condition code, and multimedia values
JP7156776B2 (ja) リタイアフェーズ中に部分書込み結果をマージするシステムおよび方法
KR100572040B1 (ko) 명령들의 퇴거시 물리적인 레지스터들을 선택적으로 자유화하도록 구성된 프로세서
US6862676B1 (en) Superscalar processor having content addressable memory structures for determining dependencies
US7406587B1 (en) Method and system for renaming registers in a microprocessor
EP0698846B1 (en) Instruction result labeling in a counterflow pipeline processor
US20050102494A1 (en) Method and apparatus for register stack implementation using micro-operations
US10853080B2 (en) System and method of merging partial write results for resolving renaming size issues
KR20010032275A (ko) 계산기 시스템
US6266761B1 (en) Method and system in an information processing system for efficient maintenance of copies of values stored within registers
CN116954722B (zh) 一种寄存器间数据转移的方法
EP1050800A1 (en) A pipelined execution unit

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A1

Designated state(s): CA CN IN JP KR US

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
ENP Entry into the national phase

Ref country code: JP

Ref document number: 2001 522169

Kind code of ref document: A

Format of ref document f/p: F

WWE Wipo information: entry into national phase

Ref document number: 008126046

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 10069987

Country of ref document: US

WWE Wipo information: entry into national phase

Ref document number: 2000991526

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2000991526

Country of ref document: EP