Hem Utveckling Vad är registerallokering? - definition från techopedia

Vad är registerallokering? - definition från techopedia

Innehållsförteckning:

Anonim

Definition - Vad betyder registerallokering?

Registerallokering avser praxis att tilldela variabler till register samt hantera överföring av data till och från register. Registreringsallokering kan ske:

  • På ett grundblock, känt som lokal registerallokering
  • Över en hel funktion eller procedur, så kallad global registerallokering
  • Över funktionsgränser genomgått med en samtalsgraf, så kallad inter-processural registerallokering

Techopedia förklarar Register Allocation

Under sammanställningen bör kompilatorn bestämma hur variabler tilldelas till ett litet, specifikt registerområde. Vissa av variablerna kanske inte används eller sägs vara "live" samtidigt. Detta leder till att vissa register tilldelas flera variabler. Trots det kan inga två samtidiga livevariabler tilldelas exakt samma register utan att förstöra värdet.


Variabler som inte kan tilldelas till vissa register måste lagras i RAM och bör laddas in och ut för varje läs- respektive skrivning, en procedur som kallas spill. Att komma åt register är mycket snabbare än åtkomst till RAM. Dessutom påskyndar det körningstiden för det sammanställda programmet; därför syftar effektiva kompilatorer till att tilldela så många variabler till register som de kan.


I allmänhet tilldelar de flesta registerallokerare varje variabel till huvudminnet eller ett centralt processenhetsregister (CPU). Hastighet är den viktigaste fördelen när du använder ett register. Datorer har ett begränsat antal register, vilket innebär att inte alla tillgängliga variabler kan tilldelas register. Processen att flytta en variabel från ett register till minnet kallas spill, medan den omvända proceduren för att flytta en variabel från minne till ett register kallas fyllning. Intelligent registerallokering är ett avgörande steg för alla kompilatorer.


Det finns två typer av registerallokering:

  • Lokal registerallokering: Detta är en process för tilldelning av ett grundblock (eller hyperblock eller superblock) åt gången. Lokal registerallokering ökar hastigheten.
  • Global registertilldelning: Om registerutnyttjandet är dåligt med lokal tilldelning är det viktigt att använda global tilldelning av register. I enkel global registerallokering fördelas de mest aktiva värdena i varje inre slinga. Fullständig global registerallokering använder en procedur för att identifiera liveintervall i en kontrollflödesgraf, tilldela liveintervall och dela också intervall efter behov.
Vad är registerallokering? - definition från techopedia