|
|
|
|
|
by CalChris
1687 days ago
|
|
> I'm curious why they have so many more physical registers than... logical? registers Register renaming allows instructions to be executed out-of-order [1] which allows for more instruction throughput. This goes back to 1967 and to the IBM 360/91 with its 4 floating point registers. That's not many registers but Moore's law was making more transistors available. The problem was how to use these transistors to get more throughput from existing programs without changing the ISA and (potentially) breaking compatibility. The solution was Tomasulo's algorithm [2] which allowed (few) architectural registers to be renamed to (many) physical registers. original renamed reordered
mov RAX, 1 mov PHYS1, 1 mov PHYS1, 1; mov RAX, [RCX]
add RBX, RAX add RBX, PHYS1 add RBX, PHYS1
mov RAX, [RCX] mov RAX, [RCX]
The first and third instructions can be executed at the same time on independent functional units. The third is out-of-order with respect to the second.[1] https://inst.eecs.berkeley.edu/~cs152/sp20/lectures/L10-Comp... [2] https://en.wikipedia.org/wiki/Tomasulo_algorithm |
|