Register renaming is an technique performed by CPUs to map limited numbers of architecture registers (also called logical registers, e.g. rax
, rbx
, …) to a larger set of physical registers. This process is performed dynamically during execution.
The reasons CPUs implement register renaming instead of adding available architectural registers include 1
- backward and forward compatibility
- more available registers increasing the number of bit needed to encode each register
- limiting the number of architectural registers reduces the cost of saving and restoring all the visible states
- to break false dependencies between instructions that happened to use the same register names so that CPUs can process instructions out of order