Fact-checked by Grok 2 weeks ago

Register renaming

Register renaming is a fundamental hardware technique in out-of-order execution microprocessors that eliminates false data dependencies, specifically write-after-read (WAR) and write-after-write (WAW) hazards, by dynamically mapping a small set of architectural registers specified in instructions to a larger pool of physical registers. This allows instructions to execute in parallel without artificial serialization due to register name conflicts, while preserving true read-after-write (RAW) dependencies that reflect actual data flow. By decoupling the visible architectural state from the internal physical storage, register renaming enhances instruction-level parallelism (ILP) and boosts overall processor performance. The origins of register renaming trace back to Robert M. Tomasulo's 1967 algorithm for the , which introduced an early form using reservation stations, tags, and a common data bus to manage floating-point operations and resolve dependencies dynamically without explicit renaming terminology. The technique was later formalized and extended: Tjaden and Flynn proposed its use for load instructions in 1970, while Keller coined the term "register renaming" in 1975 and advocated its application to all instructions. Adoption accelerated in the 1990s with superscalar processors, such as the and PowerPC series, where partial and full renaming schemes became integral to achieving higher issue widths and clock speeds. In modern implementations, register renaming typically involves a register alias table (RAT) or map table that maintains the current from architectural s to physical ones during the rename stage of the . Upon dispatch, source operands are looked up in the RAT to obtain the physical identifiers holding the latest values (or tags if pending), and the destination architectural is assigned a new free physical from a pool, often managed via a reorder buffer (ROB) for precise and retirement. This process, combined with reservation stations or issue queues, enables out-of-order issue and execution, as seen in processors like series and x86 designs from and . Key variations include the layout of rename buffers (e.g., merged with the register file or standalone) and methods (e.g., direct table or associative), with the rename rate scaled to match the processor's issue width for sustained performance. Today, register renaming is a cornerstone of , employed in nearly all desktop, server, and mobile processors to exploit ILP amid growing transistor budgets, though it introduces complexity in power consumption, area, and recovery from mispredictions. Advances continue to focus on , such as clustered renaming to reduce port contention or value prediction to minimize physical register pressure.

The Problem of Register Hazards

Data Dependencies in Pipelines

In pipelined processors, data dependencies represent situations where the execution of a subsequent relies on the outcome of a prior still in progress, potentially causing stalls or incorrect results if not resolved. These dependencies are broadly categorized into true data dependencies, which reflect actual flow of data between instructions, and false dependencies, which stem from naming conflicts rather than genuine data flow. True data dependencies are exemplified by read-after-write () hazards, where an attempts to read a value that a previous intends to write, such as in a load followed by an arithmetic operation using the loaded value. In contrast, false dependencies include write-after-read (WAR) anti-dependencies, where an writes to a that a later will read, and write-after-write (WAW) output dependencies, where multiple instructions compete to write to the same in sequence. These false dependencies do not affect the logical correctness of the program but can impede efficiency by enforcing artificial ordering. In simple in-order pipelines, data hazards manifest as pipeline stalls, where instructions are delayed to ensure correct data availability, reducing overall throughput. For instance, consider the following assembly code sequence in a classic five-stage pipeline (fetch, decode, execute, memory, write-back):
add $t0, $t1, $t2   # Instruction 1: Computes $t1 + $t2 and writes to $t0
sub $t3, $t0, $t4   # Instruction 2: Computes $t0 - $t4 and writes to $t3 ([RAW](/page/Raw) hazard on $t0)
Here, Instruction 2 cannot proceed to its execute stage until Instruction 1 completes write-back to $t0, typically requiring two stall cycles in the decode stage of Instruction 2 to resolve the dependency. Without mechanisms like forwarding, which bypasses the write-back stage to supply data directly from the execute stage, such stalls insert bubbles into the , effectively serializing execution and diminishing the benefits of overlapping instruction processing. Structural hazards, while distinct from data flow issues, can exacerbate register-related problems when pipeline stages demand concurrent access to shared resources like the register file. For example, in a pipeline where the decode stage reads two source registers and the write-back stage writes one result, a register file with only two read ports and one write port may force a stall if an instruction in decode overlaps with one in write-back targeting the same register. However, these structural conflicts are secondary to the data dependencies that propagate incorrect or premature values through the pipeline stages. A fundamental limitation arises from the fixed register allocation in the (ISA), where a small number of architectural s—such as 16 in or 32 in and —creates a constrained name space. This forces compilers to reuse register names across unrelated computations, artificially introducing WAR and WAW false dependencies that unnecessary constrain instruction reordering and parallelism, even when no true data flow exists.

Limitations of Out-of-Order Execution Without Renaming

Out-of-order execution, also known as dynamic scheduling, enables processors to issue and execute instructions in a non-sequential order based on resource availability and data readiness, rather than strict program order. This technique uses mechanisms such as instruction dispatch queues and completion buffers (e.g., reorder buffers) to track dependencies and retire instructions in original order while allowing independent ones to proceed ahead. It effectively mitigates true data dependencies, such as read-after-write () hazards, by stalling dependent instructions only until their operands are available from prior operations, thereby overlapping execution of unrelated instructions to exploit (ILP). However, without register renaming fails to address false dependencies, including write-after-read (WAR) and write-after-write (WAW) hazards, which arise from name conflicts in the limited architectural . These false dependencies impose artificial serialization, preventing instructions from reordering even when no true data flow exists, as the hardware cannot distinguish them from real hazards without remapping registers. This unnecessary ordering constraint reduces the effective window of parallelizable instructions, limiting the processor's ability to sustain high throughput in superscalar designs. Consider the following instruction sequence, where a WAW hazard on register r1 serializes execution despite independence:
mul r1, r2, r3    // Long-latency operation writing to r1
add r4, r5, r6    // Independent, could execute early
sub r1, r7, r8    // WAW on r1; without renaming, must wait for mul to complete and write r1
In a dispatch queue for out-of-order issue, the sub instruction stalls behind the mul due to the shared destination register, even though it does not read the prior result, blocking the queue and preventing the independent add from fully utilizing multiple execution units. A similar serialization occurs in WAR cases, where a later write cannot proceed until an earlier read completes, further constraining reordering. This limitation manifests quantitatively in reduced ILP; for instance, in a simple loop with mixed dependencies on a 2-issue , false hazards without renaming extend execution from a potential 7 (with reordering) to 12 , yielding an effective issue rate below 1 per rather than approaching the machine's 2-wide capability. Such constraints typically cap sustained ILP at 1-2 in practical workloads, underscoring the need for renaming to unlock higher parallelism.

Fundamentals of Register Renaming

Architectural and Physical Registers

Architectural registers, also known as logical or visible registers, are the registers defined by the (ISA) and directly accessible to programmers. These registers provide a fixed set of named locations for instructions to read from or write to, forming the interface between software and the processor's execution model. For instance, the ISA exposes 16 general-purpose architectural registers (RAX through R15), which are sufficient for most scalar computations but limit due to their small number. In contrast, physical registers constitute a larger pool of actual hardware storage elements within the , invisible to software and not directly addressable by instructions. Modern out-of-order processors (as of 2023) typically implement 168 to 280 physical registers for integer operations and 160 to 224 for floating-point operations, far exceeding the architectural count to support and dependency resolution; integer and floating-point often use separate files, e.g., has around 100-150 integer physical registers. This expanded allows the hardware to maintain multiple pending versions of a value without overwriting committed state. The core benefit of distinguishing architectural from physical registers lies in dynamic mapping, which breaks false data dependencies. By assigning a unique physical to each write targeting the same architectural , write-after-write (WAW) hazards are eliminated, as later writes do not overwrite earlier uncommitted results. Similarly, write-after-read (WAR) hazards are resolved by redirecting reads to the appropriate physical holding the current value, enabling instructions to proceed out-of-order without violating program semantics. This separation supports greater instruction parallelism, as demonstrated in early implementations like the System/360 Model 91, where tags effectively renamed registers to manage dependencies. A renaming map table (RMT), often one entry per architectural , maintains the current mapping to physical registers. Each RMT entry points to the physical register holding the latest value for its architectural counterpart, updated during instruction dispatch and checkpointed for on mis-speculation. This table ensures architectural state consistency upon instruction retirement, freeing physical registers as values are committed.

The Renaming Process

The renaming process occurs primarily during the instruction decode and dispatch stages in an out-of-order processor, where logical (architectural) register names in instructions are dynamically mapped to physical registers to eliminate false dependencies while preserving true data flow. This mapping is maintained in a register map table (RMT), which tracks the current physical register assigned to each architectural register. As instructions are decoded, the process allocates a free physical register from a freelist for the destination operand, updates the RMT entry for the corresponding architectural register to point to this new physical register, and propagates tags (physical register identifiers or pending write tags) to dependent instructions. For source operands, the decoder consults the to replace each architectural name with the physical register containing the most recent value or, if that value is pending from an earlier in-flight , with a tag indicating the future physical register that will hold it. This step resolves read-after-write () dependencies by directing operands to the correct physical locations, while write-after-read () and write-after-write (WAW) hazards are avoided because subsequent writes target unused physical registers rather than overwriting architectural names prematurely. A future file or active list may track pending tags to ensure sources wait for completion before use. Consider a simple sequence of instructions: ADD R1, R2, R3, followed by SUB R4, R1, R5. Assume the initial RMT maps R1 to physical register P1, R2 to P2, R3 to P3, R4 to P4, and R5 to P6, with P5, P7 free. During decode of the ADD, a free physical register P5 is allocated for the destination R1, the RMT updates R1 to P5, and the sources are renamed to P2 and P3 (assuming no prior pending writes). The renamed ADD becomes ADD P5, P2, P3. For the SUB, P7 (next free) is allocated for R4, the RMT updates R4 to P7, and sources are renamed: R1 to P5 (from updated RMT), R5 to P6. Thus, the SUB becomes SUB P7, P5, P6, propagating the tag for R1's new value and enabling independent execution. To support recovery from branch mispredictions or exceptions, the renaming process incorporates checkpointing by saving snapshots of the state at conditional branches or other speculative points, often using a to store these checkpoints along with instruction entries. On misprediction, the processor restores the most recent valid RMT checkpoint, frees allocated physical registers since that point, and rolls back speculative mappings to maintain precise architectural state.

Implementation Techniques

Reservation Stations

Reservation stations form a core component of the register renaming technique introduced in , acting as buffers that hold instructions after the renaming process until their source operands are available for execution. This approach enables by allowing instructions to wait in these stations without stalling the decode pipeline, while preserving data dependencies through tag-based tracking. Developed to exploit multiple arithmetic units efficiently in floating-point operations, the stations facilitate dynamic scheduling in environments with variable transmission times between processing units. In the mechanism of reservation stations, each station is associated with a specific functional unit and stores key elements of a pending , including the , renamed source (represented as indicating either physical identifiers or for results from ongoing operations), and the destination for the result. When an is dispatched to a free station, its sources are checked: available values are loaded immediately, while unresolved dependencies are marked with from the renaming map table. A central common data bus (CDB) then broadcasts completed results from functional units, accompanied by the producing , to all reservation stations and the register file; stations continuously monitor the bus and, upon match, capture the result to resolve the operand, enabling the to proceed to execution when both sources are ready. This tag-matching and broadcasting process ensures precise dependency resolution without direct polling. The use of reservation stations decouples instruction decode and dispatch from execution, permitting the to continue processing subsequent instructions even if earlier ones are delayed, thereby improving throughput in superscalar processors. Additionally, the structure accommodates operations with varying latencies, such as floating-point multiplications, by allowing stations to hold instructions indefinitely until readiness, without blocking unrelated computations. This buffering and scheduling capability was pivotal in early implementations, notably in the , where it enhanced floating-point performance through overlap of multiple arithmetic operations. Modern variants of reservation stations persist in certain embedded processor designs, such as the open-source BOOM core, which employs an issue queue analogous to distributed reservation stations for in resource-constrained environments.

Tag-Indexed Register Files

In tag-indexed register files, the physical register file (PRF) serves as the central storage for operand values, with each entry directly addressable by a unique tag that corresponds to a physical register index. Each PRF entry includes associated status bits, such as valid and ready indicators, to track the availability of the stored data. The rename logic, typically implemented via a register alias table (RAT), maps architectural registers to available physical registers during the decode stage, assigning the physical register index as the tag for source and destination operands of the instruction. This assignment occurs in a single cycle for multiple instructions, supporting high rename bandwidth, such as up to four instructions per cycle in designs like the MIPS R10000. During , the wake-up process begins when an instruction completes and writes its result to the targeted physical in the PRF, simultaneously setting the corresponding ready bit in a status array. Dependent instructions, holding tags for their source , reside in queues or schedulers where (CAM) structures compare incoming completion tags against operand tags to detect readiness. Once all source are ready—verified by matching tags and checking ready bits—the select logic prioritizes and dispatches the instruction to an appropriate , often using priority encoders to favor older instructions and maintain fairness. This approach offers scalability for wide-issue processors by centralizing data storage in the PRF, which minimizes the need for extensive broadcast networks compared to reservation station-based methods. It reduces inter-unit communication overhead, as values are read directly from the PRF using the tag index rather than broadcasting data values across multiple buses, enabling efficient handling of high instruction widths like the six-uop dispatch in the . Tag-indexed PRFs have been widely adopted in high-performance CPUs, including the MIPS R10000 with its 64-entry integer PRF and the family with 128 entries, facilitating robust since the late 1990s.

Comparison of Techniques

Reservation stations and tag-indexed register files represent two primary approaches to implementing register renaming in out-of-order processors, each with distinct trade-offs in performance, hardware complexity, power, and area. In the reservation station approach, inspired by Tomasulo's algorithm, operands are buffered directly within the stations near execution units, enabling rapid access once dependencies resolve via tag broadcasts on a common data bus. This design excels in handling irregular execution latencies, such as those from cache misses or variable functional unit delays, by keeping data close to consumers and minimizing additional reads post-wakeup. Conversely, the tag-indexed approach, common in physical register file (PRF) designs, allocates physical registers at rename time and uses tags for dependency tracking in a centralized file, with wakeup occurring through content-addressable memory (CAM) searches or scans in issue queues. This method provides faster wakeup for uniform operations, such as arithmetic instructions with predictable latencies, supporting higher instructions per cycle (IPC) in superscalar processors by streamlining operand fetching from the PRF after tag matching. Regarding hardware complexity, reservation stations demand more buffering logic per entry, as each station must store full operand values (typically 80-128 bits per micro-op), along with valid bits and tags, leading to larger issue queues and increased control overhead for value forwarding. In contrast, tag-indexed PRF designs require a larger physical register file—often 128-300 registers depending on the microarchitecture—and dedicated CAM structures for allocating and deallocating free registers via a free list, which adds complexity to rename and recovery logic but simplifies issue queues by storing only tags rather than full data. These differences stem from the need to balance dynamic scheduling with precise exception handling, where PRF approaches often incorporate additional structures like active maps for speculation recovery. Power and area implications further highlight these trade-offs. The broadcast mechanism in reservation stations, while effective for dependency resolution, incurs higher dynamic power from frequent tag dissemination across potentially long wires in scaled designs, contributing to increased wire delays and overall energy consumption in wide-issue processors. Tag-indexed PRF methods, however, consume more energy in lookup operations during wakeup scans or CAM matches within issue queues, though they mitigate data movement costs by reading operands only from the PRF at execution time, resulting in lower overall power for data-intensive workloads; area-wise, PRF designs demand more silicon for the expanded register file but benefit from compact queues. For instance, Intel's Sandy Bridge employed 160 physical registers in its PRF, balancing these costs to achieve competitive IPC gains.
AspectReservation StationsTag-Indexed PRF
Performance StrengthBetter for irregular latencies (e.g., hides delays via local buffering)Faster wakeup for uniform ops, higher (e.g., up to 4-issue in R10000-like designs)
ComplexityMore buffering logic per station (values + tags)Larger PRF (128+ registers) + for allocation
Power/AreaHigher from broadcasts and wire delaysMore lookup energy, but less data movement; larger file area
Modern processors often adopt approaches, combining elements like reorder buffers for operations with merged PRF for floating-point to optimize across domains, as seen in early K7 designs.

Historical Development

Early Concepts

The early concepts of register renaming emerged in the 1960s amid efforts to address hazards and enhance parallelism in computer architectures. Research on hazards by James E. Thornton in the design of the highlighted structural and data dependencies that limited instruction throughput, motivating techniques for dynamic scheduling to overlap operations without stalling. Concurrently, pioneering ideas in data flow architectures, led by Jack B. at , emphasized executing instructions based on data availability rather than fixed register names, using tags to track dependencies and foreshadowing the abstraction of logical from physical storage. A pivotal advancement came in 1967 with Robert M. Tomasulo's algorithm, developed for the of the IBM System/360 Model 91, which introduced dynamic scheduling incorporating register renaming through reservation stations to eliminate false dependencies like write-after-write and write-after-read hazards. This approach used tags on registers to map architectural names to temporary locations, allowing while preserving true data dependencies via a common data bus for result broadcasting. The IBM System/360 Model 91 was the first hardware implementation, featuring three add reservation stations, two multiply/divide stations, and a unified to support concurrent floating-point operations. The Model 91's design achieved approximately 3x speedup in floating-point performance over in-order execution equivalents, particularly for workloads with independent instructions, by maximizing unit utilization without relying on optimizations. Although the core concept of renaming dates to these innovations, the term "register renaming" was formalized in later literature, with Robert M. Keller explicitly designating it in 1975 to describe look-ahead processing that extended renaming across all register-using instructions, gaining widespread adoption in superscalar designs.

Modern Advancements

Since the 1990s, register renaming has evolved to support deeper and in superscalar processors. A pivotal advancement came with the in 1996, which integrated register renaming with to expose by eliminating false dependencies while allowing instructions to proceed along predicted paths. This design featured physical register files and explicit renaming during the mapping stage, enabling a four-issue superscalar with branch prediction recovery. In the mid-2000s, physical register files (PRFs) scaled significantly to accommodate wider issue widths and larger instruction windows. The Intel Core microarchitecture, introduced in 2006, used ROB-based renaming for integer operations with a 96-entry reorder buffer, alongside a floating-point PRF of approximately 128 entries, facilitating a 4-wide out-of-order issue and improving performance in server and desktop applications. This expansion addressed limitations in earlier designs by providing more resources to sustain long dependency chains without stalling the rename stage. Modern implementations have tackled key challenges such as misprediction recovery and consumption. Rename map checkpoints enable efficient recovery by storing snapshots of the register alias table at points, allowing quick of the correct mapping table upon misprediction without full of the . In CPUs, power-efficient techniques like RAM-CAM renaming structures reduce overhead by using only for active mappings, dissipating 17% to 26% of the of a conventional CAM-based scheme (achieving up to 83% savings) while maintaining low . Recent trends through 2025 emphasize adaptability and domain-specific applications. In ARM-based chips, such as those in the Cortex-A series, dynamic register allocation adapts to workload phases by adjusting the rename buffer size, optimizing for power in heterogeneous mobile SoCs. has also extended to AI accelerators, where optimized mechanisms handle multi-dimensional tensor registers; for instance, the TCX tensor processor uses a renaming scheme that maps architectural tensor registers to a larger physical set, supporting scalable operations without ISA extensions for large arrays. In , extensions enable custom renaming in designs like the BOOM core, allowing developers to tailor physical register counts for specific accelerators via composable custom instructions. Contemporary x86 CPUs, such as Intel's 14th-generation Core series, support renaming with approximately 280 physical registers, enabling 6-wide or greater out-of-order issue widths and sustaining high instruction throughput in multicore environments. In 2024, Intel's Arrow Lake processors (15th generation) with Lion Cove cores expanded the out-of-order window to 416 entries, while AMD's architecture improved renaming to support wider issue with larger PRFs.

References

  1. [1]
    [PDF] The design space of register renaming techniques
    Register renaming is a technique to remove false data dependencies—write after read (WAR) and write after write (WAW)— that occur in straight line code ...
  2. [2]
    [PDF] An Efficient Algorithm for Exploiting Multiple Arithmetic Units
    The common data bus improves performance by efficiently utilizing the execution units without requiring specially optimized code.
  3. [3]
    [PDF] Register Renaming
    Register renaming changes register names to eliminate WAR/WAW hazards, dynamically mapping names to locations, and using a map table.Missing: explanation | Show results with:explanation
  4. [4]
    Register renaming - Arm Developer
    The register renaming scheme facilitates out-of-order execution in Write-after-Write (WAW) and Write-after-Read (WAR) situations for the general purpose ...
  5. [5]
    Register Renaming
    Register renaming is a pipelining method that renames register operands to value names, eliminating name dependences between instructions.Missing: explanation | Show results with:explanation
  6. [6]
    [PDF] Lecture 9 Pipeline Hazards - Stanford University
    • Output dependency => WAW hazard addu. $t0, $t1, $t2 subu. $t0, $t4, $t5. • Anti dependency => WAR hazard ... Data Hazard Example. • Dependencies backwards in ...
  7. [7]
    [PDF] False Dependencies Register Renaming Compiler ... - cs.wisc.edu
    Both b and c are loaded into %r2. This limits the ability to move the load of c prior to any use of %r2 that uses b. remove false dependencies.Missing: ISA | Show results with:ISA
  8. [8]
    Pipeline Hazards – Computer Architecture
    RAW hazards – can happen in any architecture; WAR hazards – Can't happen in MIPS 5 stage pipeline because all instructions take 5 stages, and reads are ...
  9. [9]
    12. Handling Data Hazards - UMD Computer Science
    In this module we have discussed about how data hazards can be handled by forwarding. This technique requires needs extra hardware paths and control.
  10. [10]
    [PDF] CS61C Precheck: RISC-V Pipelining, Hazards Fall 2025
    There are two main causes of structural hazards: • Register File: The register file is accessed both during ID, when it is read to decode the instruction and ...
  11. [11]
    [PDF] Out-of-Order Execution & Dynamic Scheduling - Overview of 15-740
    Two steps to enable out-of-order execution: Step #1: Register renaming – to avoid “false” dependencies. Step #2: Dynamically schedule – to enforce “true ...
  12. [12]
    [PDF] Microarchitectural innovations: boosting microprocessor ...
    Instruction 3 has an antidependence with instruction 2 and an output dependence with instruction 1 as it overwrites register r1. Without register renaming ...<|control11|><|separator|>
  13. [13]
    Physical Register - an overview | ScienceDirect Topics
    The distinction between architectural registers and physical registers is evident in Intel processors, which expose eight general purpose registers in 32-bit ...Missing: seminal papers
  14. [14]
  15. [15]
    [PDF] Dynamic Register Renaming Through Virtual-Physical Registers
    This paper presents a dynamic register renaming scheme that delays physical register allocation using virtual-physical registers, which are tags without ...
  16. [16]
    [PDF] Quick Recap: Explicit Register Renaming - People @EECS
    Feb 18, 2009 · Current Map Table. Freelist. • Note that physical register P0 is “dead ... Superscalar Register Renaming (Try #2). Rename Table. Op. Src1 ...
  17. [17]
    [PDF] Out-of-Order Execution & Register Renaming - DSpace@MIT
    Renaming and Out-of-order execution was first implemented in 1969 in IBM 360 ... • Out-of-order machines: shadow registers and memory buffers for each ...
  18. [18]
    [PDF] The IBM System/360 Model 91: Machine Philosophy and Instruction
    The set program mask (SPM) implementation has a minor optimization ... R. M. Tomasulo, “An Efficient Algorithm for Exploiting. Multiple Arithmetic ...
  19. [19]
    [PDF] BOOM v2: an open-source out-of-order RISC-V core
    Sep 26, 2017 · Some processors, such as Intel's. Sandy Bridge processor, use a “unified reservation station” where all uops are placed in a single issue window ...
  20. [20]
    [PDF] The nMips R10000 Superscalar Microprocessor - UCSD CSE
    Separate register files store integer and floating-point registers, which the processor renames independently. The integer and floating-point map tables contain ...
  21. [21]
    [PDF] The Microarchitecture of the Pentium 4 Processor
    ABSTRACT. This paper describes the Intel®. NetBurst™ microarchitecture of Intel's new flagship Pentium® 4 processor. This microarchitecture is the basis of ...
  22. [22]
    [PDF] Week 7: OOO v.3 aka Physical Register File (PRF) microarchitecture
    ▫ Register renaming. ▫ Speculation. ▫ Precise interrupts. ▫ Hardware ... ▫ No map table in the backend so can't flash copy AMT into RMT. ▫ But ...
  23. [23]
  24. [24]
    Parallel operation in the control data 6600 - ACM Digital Library
    Parallel operation in the control data 6600. Author: James E. Thornton. James ... 1964, fall joint computer conference, part II: very high speed computer systems.
  25. [25]
  26. [26]
    Look-Ahead Processors | ACM Computing Surveys
    Look-Ahead Processors. Author: Robert M. Keller. Robert M. Keller. Department ... Published: 01 December 1975 Publication History. 124citation1,640 ...
  27. [27]
    [PDF] THE ALPHA 21264 MICROPROCESSOR
    Register renaming exposes application instruction parallelism since it eliminates unnecessary dependencies and allows specu- lative execution. Register renaming ...Missing: 1996 | Show results with:1996
  28. [28]
    [PDF] copy-free, checkpointed register renaming
    Recovery amounts to copying back a checkpoint into the main table. A checkpoint is taken when the processor re- names an instruction which initiates a new ...
  29. [29]
    Efficient Register Renaming and Recovery for High-Performance ...
    Aug 7, 2025 · In this paper, we present a new hybrid RAM–CAM register renaming scheme, which combines the best of both approaches. In a steady state, a RAM ...Missing: mobile | Show results with:mobile
  30. [30]
  31. [31]
    The Rename Stage - RISCV-BOOM documentation
    Renaming is a technique to rename the ISA (or logical) register specifiers in an instruction by mapping them to a new space of physical registers.Missing: explanation | Show results with:explanation<|control11|><|separator|>