Modern Microprocessors – A 90-Minute Guide (2001-2016)
This is no doubt obvious to hardware folks, but one enlightening moment is when I came to understand register renaming.<p>Previously I had the (wrong) idea that rdi, rsi, etc corresponded to physical bits. Register renaming involved some exotic notion where these registers might be saved and restored.<p>Now I understand that rdi, rsi, etc. are nothing but compressed node identifiers in an interference graph. Ideally we'd have infinite registers: each instruction would read from previous registers and output to a new register. And so we would never reuse any register, and there'd be no data hazards.<p>Alas we have finite bits in our ISA, so we must re-use registers. Register renaming is the technique of reconstructing an approximate infinite-register interference graph from its compressed form, and then re-mapping that onto a finite (but larger) set of physical registers.<p>Mostly "register renaming" is a bad name. "Dynamic physical register allocation" is better.