Rematerializare - Rematerialization

În informatică , rematerializarea sau remat este o optimizare a compilatorului, care economisește timp recalculând o valoare în loc să o încarce din memorie. De obicei, este strâns integrat cu alocarea registrelor , unde este utilizat ca alternativă la deversarea registrelor în memorie. A fost conceput de Gregory Chaitin , Marc Auslander , Ashok Chandra , John Cocke , Martin Hopkins și Peter Markstein și implementat în compilatorul Pl.8 pentru 801 Minicomputer la sfârșitul anilor 1970. Îmbunătățirile ulterioare au fost făcute de Preston Briggs , Keith D. Cooper și Linda Torczon în 1992.

Optimizările tradiționale, cum ar fi eliminarea comună a subexpresiei și ridicarea invariantă a buclelor, se concentrează adesea pe eliminarea calculelor redundante. Deoarece calculul necesită cicluri de procesor , acesta este de obicei un lucru bun, dar are efectul secundar potențial devastator că poate crește intervalele de variabile în timp real și poate crea multe variabile noi, rezultând în scurgeri în timpul alocării registrului. Rematerializarea este aproape opusă: scade presiunea registrului prin creșterea cantității de calcul al procesorului. Pentru a evita adăugarea mai multor timp de calcul decât este necesar, rematerializarea se face numai atunci când compilatorul poate avea încredere că va fi de folos - adică atunci când s-ar produce o revărsare a registrului în memorie.

Rematerializarea funcționează ținând evidența expresiei utilizate pentru a calcula fiecare variabilă, utilizând conceptul de expresii disponibile . Uneori, variabilele utilizate pentru a calcula o valoare sunt modificate și, prin urmare, nu mai pot fi utilizate pentru a rematerializa acea valoare. Se spune că expresia nu mai este disponibilă. Trebuie îndeplinite și alte criterii, de exemplu o complexitate maximă a expresiei utilizate pentru a rematerializa valoarea; nu ar fi bine să rematerializăm o valoare folosind un calcul complex care necesită mai mult timp decât o încărcare. De obicei, expresia nu trebuie să aibă nici efecte secundare .

linkuri externe

  • Chaitin, Gregory, Marc Auslander, Ashok Chandra, John Cocke, Martin Hopkins și Peter Markstein. "Înregistrați alocarea prin colorare, limbaje computerizate, vol. 6, nr. 1, 1981, pp. 47-57"
  • P. Briggs, KD Cooper și L. Torczon. Rematerializare . Lucrările Conferinței SIGPLAN 92 privind proiectarea și implementarea limbajului de programare , notificările SIGPLAN 27 (7), p.311-321. Iulie 1992. Pagina CiteSeer pentru lucrarea originală.
  • Mukta Punjabi. Înregistrați rematerializarea în GCC . Discută despre implementarea rematerializării de către gcc .