Återmaterialisering
Inom datavetenskap är rematerialization eller remat en kompilatoroptimering som sparar tid genom att räkna om ett värde istället för att ladda det från minnet. Det är vanligtvis tätt integrerat med registerallokering , där det används som ett alternativ till att spilla register till minnet. Den skapades av Gregory Chaitin , Marc Auslander , Ashok Chandra , John Cocke , Martin Hopkins och Peter Markstein och implementerades i Pl.8-kompilatorn för 801 Minicomputer i slutet av 1970-talet. Senare förbättringar gjordes av Preston Briggs, Keith D. Cooper och Linda Torczon 1992.
Traditionella optimeringar som eliminering av vanliga underuttryck och loopinvariant hissning fokuserar ofta på att eliminera redundant beräkning. Eftersom beräkning kräver CPU- cykler är detta vanligtvis en bra sak, men det har den potentiellt förödande bieffekten att det kan öka frekvensintervallet för variabler och skapa många nya variabler, vilket resulterar i spill under registertilldelningen. Återmaterialisering är nästan motsatsen: den minskar registertrycket genom att öka mängden CPU-beräkningar. För att undvika att lägga till mer beräkningstid än nödvändigt, görs ommaterialisering endast när kompilatorn kan vara säker på att det kommer att vara till nytta - det vill säga när ett registerspill till minnet annars skulle inträffa.
Rematerialisering fungerar genom att hålla reda på uttrycket som används för att beräkna varje variabel, med hjälp av konceptet med tillgängliga uttryck . Ibland ändras variablerna som används för att beräkna ett värde, och kan därför inte längre användas för att återmaterialisera det värdet. Uttrycket sägs då inte längre vara tillgängligt. Andra kriterier måste också uppfyllas, till exempel en maximal komplexitet på uttrycket som används för att rematerialisera värdet; det skulle inte göra någon nytta att återmaterialisera ett värde med hjälp av en komplex beräkning som tar mer tid än en belastning. Vanligtvis får uttrycket inte heller ha några biverkningar .
externa länkar
- Chaitin, Gregory, Marc Auslander, Ashok Chandra, John Cocke, Martin Hopkins och Peter Markstein. "Register Allocation Via Coloring, Computer Languages, Vol. 6, No. 1, 1981, s. 47-57"
- P. Briggs, KD Cooper och L. Torczon. Återmaterialisering . Proceedings of the SIGPLAN 92 Conference on Programming Language Design and Implementation , SIGPLAN Notices 27(7), s.311-321. Juli 1992. CiteSeer-sidan för originaltidningen.
- Mukta Punjabi. Registrera återmaterialisering i GCC . Diskuterar gcc :s implementering av rematerialisering.