Skip to content
DenseChip
Learn
PracticeCode labInterview

DenseChip

Navigate

Menu

LearnPracticeCode labInterview

Tools

All toolsSV editorCode repoResume
DenseChip

Practice, courses, and chip-design tools in one focused workspace.

LearnPracticeCode labInterviewToolsLearning paths

© 2026 DenseChip

AboutContactPrivacyTerms
Skip to lesson

Course contents

  • Architecture Metrics Reference
  • Workload Taxonomy for Architects
  • Architecture Glossary
  • Computer Architecture Cheatsheet
  • Pipeline Fundamentals14
    • Pipeline Throughput
    • Branch Prediction and Fetch
    • Out-of-Order Superscalar Execution
      • Superscalar Issue Width
      • In-Order Versus Out-of-Order
      • Register Renaming
      • Reorder Buffer and Commit
      • Why IPC Saturates
  • Memory Hierarchy15
  • NoC and Interconnect Architecture6
  • Coherency and Memory Ordering9
  • Performance Analysis9
  • Accelerator Architectures6
  • SoC Architecture Tradeoffs9
  • Architecture Interview Prep14
Loading lesson

‹Out-of-Order Superscalar Execution
  1. Topics
  2. Computer Architecture
  3. Pipeline Fundamentals
  4. Out-of-Order Superscalar Execution
  5. Register Renaming

Computer Architecture · All levels

Register Renaming

Renaming maps logical registers to physical ones so only true dependencies stall.

On this page

    False versus true dependencies

    Only read-after-write (RAW) is a true data dependency. Write-after-write (WAW) and write-after-read (WAR) are name collisions on a reused logical register, not data flow.

    Renaming removes the false ones. Each write allocates a fresh physical register, so independent writes never collide.

    Type

    Example

    True flow?

    Handling

    RAW

    ADD r2 <- r1, after LD r1

    Yes

    Wait for the operand; forward or bypass when ready

    WAW

    Two writes to r1 with no read between

    No

    Give each write its own physical register

    WAR

    Write to r4 after a read of r4

    No

    Read keeps the old physical register; write takes a new one

    The rename map and free list

    A rename map records the current physical register for each logical one. A free list holds unallocated physical registers for new writes.

    On commit, the overwritten physical register returns to the free list. On a mispredict, the map is restored from the checkpoint or rebuilt at the ROB tail.

    Step

    Instruction

    Rename map for r1

    Note

    Start

    -

    r1 -> p10

    Reader of r1 uses p10

    Rename

    ADD r1 <- r2 + r3

    r1 -> p14

    Fresh p14 from the free list; p10 kept for older readers

    Rename

    ADD r1 <- r4 + r5

    r1 -> p21

    WAW avoided: the two writes target p14 and p21

    Commit

    First ADD commits

    r1 -> p21

    p10 returns to the free list when no reader remains

    How many physical registers

    The pool must cover every live value: all architectural registers plus every in-flight write. A full rename stage with no free register stalls dispatch even when execution units are idle.

    The example below uses stated parameters, not a product figure.

    Diagram
    32 architectural registers, 64-entry instruction window (stated example)
    in-flight writes at most = window size = 64
    physical registers needed >= 32 + 64 = 96
    choice with margin: 128 physical registers

    Common mistakes

    Common pitfall

    Reasoning about dependencies with logical register names after renaming exists. Always check physical tags: two writes to r1 are independent once renamed.

    Common pitfall

    Forgetting the rename stall. A full window is not the only dispatch stop: an empty free list stalls rename with execution units idle.

    Interview

    Likely probes: which dependencies renaming removes, and what the free list bounds.

    • Renaming removes WAW and WAR; RAW stays and waits.

    • Physical count must cover arch state plus in-flight writes.

    • Mispredict recovery must restore the map, not just flush the window.

    Check yourself Two writes to r1 have no read between them. Is the second stalled on the first after renaming?

    No. Each write takes a fresh physical register, so the WAW name collision is gone and they execute independently.

    Check yourself The window has free entries but dispatch stalls. Which structure is plausibly empty?

    The free list: with no physical register for the next write, rename cannot proceed.

    Related topics

    • In-order versus out-of-order

    • Reorder buffer and commit

    • Out-of-order core implementation

    Previous

    16 / 86

    Next: Reorder Buffer and Commit

    Up next

    Up nextReorder Buffer and Commit

    Sign in to save progress

    Practice this lessonReport an error

    See also

    • Superscalar Issue Width
    • Why IPC Saturates