Inom datateknik hänvisar registeromdöpning till en teknik som används för att undvika onödigt seriellt utförande av programinstruktioner på grund av att samma register återanvänds av dessa instruktioner. Kort sagt handlar det om att ge olika instruktioner olika fysiska registernamn så att namnkonflikter inte tvingar instruktioner att vänta i onödan.
Definition och princip
Registeromdöpning innebär att arkitekturella register (de register som syns i instruktionerna, t.ex. R1, R2) mappas till ett större antal fysiska register internt i processorn. När en instruktion skriver till ett arkitekturellt register tilldelas en fri fysisk registerplats; läsningar hänvisar till den fysiska plats som för närvarande är associerad med det arkitekturella registret. På så sätt kan två instruktioner som i koden skriver till samma arkitekturella register ändå exekveras parallellt om deras resultat lagras i olika fysiska register.
Vilka problem löser det?
- Tar bort falska beroenden: registeromdöpning eliminerar namnberoenden (WAW — write-after-write och WAR — write-after-read) som inte representerar verkliga dataflöden.
- Ökar instruktionernas parallellism: gör det möjligt att köra instruktioner utanför ordning (out-of-order) utan att skapa onödiga synkpunkter.
- Minskar pipeline-stall: färre väntetider orsakas av registeråteranvändning.
Exempel
Tänk dig två instruktioner i följd:
1) ADD R1, R2, R3 ; R1 = R2 + R3 2) SUB R1, R4, R5 ; R1 = R4 - R5
Utan registeromdöpning måste instruktion 2 vänta på att instruktion 1 ska skriva till R1 (namnberoende). Med registeromdöpning tilldelas instruktion 1 t.ex. fysisk register P10 och instruktion 2 får P11. Båda kan då utföras parallellt och deras resultat bevaras i var sitt fysiska register tills de commit:as till det arkitekturella R1 i rätt ordning.
Hur implementeras det i hårdvaran?
- Register Alias Table (RAT) eller Rename Table: en tabell som mappar arkitekturella register till aktuella fysiska register.
- Fysiskt registerfil: ett större set fysiska register där data lagras under utpekade fysiska namn.
- Free list: håller reda på tillgängliga fysiska register som kan användas vid omdöpning.
- Reorder Buffer (ROB) eller commit-logik: ser till att instruktioner görs synliga i arkitekturens register i rätt ordning och frigör fysiska register när de inte längre behövs.
- Reservationsstationer / Tomasulos algoritm: i vissa designer används reserverstationer för att hantera operandberoenden tillsammans med omdöpning.
Begränsningar och nackdelar
- Ökad hårdvarukomplexitet: fler kretsar för tabeller, fler fysiska register och logik för commit/återställning.
- Högre effekt- och areakostnad: flera fysiska register och större styrlogik kräver mer ström och kiselarea.
- Begränsad effekt om antalet fysiska register är litet: om fria fysiska register tar slut kan man ändå få stall eller behöva spill/komplicerad återanvändning.
- Kan inte ta bort sanna beroenden (RAW — read-after-write): dessa måste fortfarande respekteras.
Tillämpning
Registeromdöpning används i nästan alla moderna superskalära och out-of-order-processorer, både i x86- och ARM-designs samt i högpresterande RISC-processorer. Tekniken är en viktig del i att uppnå hög instruktion-per-cykel (IPC) i dagens CPU-arkitekturer.
Sammanfattning
Registeromdöpning är en central optimering i modern CPU-design som minskar falska beroenden genom att mappa arkitekturella register till ett större set fysiska register. Resultatet blir färre onödiga väntetider, bättre parallellism och högre prestanda — på bekostnad av ökad hårdvarukomplexitet och energiförbrukning.