stringtranslate.com

Rematerialización

En informática , la rematerialización o remat es una optimización del compilador que ahorra tiempo al recompilar un valor en lugar de cargarlo desde la memoria. Normalmente está estrechamente integrada con la asignación de registros , donde se utiliza como una alternativa a volcar registros a la memoria. Fue concebida por Gregory Chaitin , Marc Auslander , Ashok Chandra , John Cocke , Martin Hopkins y Peter Markstein e implementada en el compilador Pl.8 para la minicomputadora 801 a finales de los años 1970. Preston Briggs, Keith D. Cooper y Linda Torczon realizaron mejoras posteriores en 1992.

Las optimizaciones tradicionales, como la eliminación de subexpresiones comunes y la elevación de invariantes de bucle, suelen centrarse en eliminar los cálculos redundantes. Dado que los cálculos requieren ciclos de CPU , esto suele ser algo bueno, pero tiene el efecto secundario potencialmente devastador de que puede aumentar los rangos vivos de las variables y crear muchas variables nuevas, lo que da como resultado derrames durante la asignación de registros. La rematerialización es casi lo opuesto: disminuye la presión de los registros al aumentar la cantidad de cálculos de la CPU. Para evitar agregar más tiempo de cálculo del necesario, la rematerialización se realiza solo cuando el compilador puede estar seguro de que será beneficiosa, es decir, cuando de lo contrario se produciría un derrame de registros en la memoria.

La rematerialización funciona haciendo un seguimiento de la expresión utilizada para calcular cada variable, utilizando el concepto de expresiones disponibles . A veces, las variables utilizadas para calcular un valor se modifican y, por lo tanto, ya no se pueden utilizar para rematerializar ese valor. En ese caso, se dice que la expresión ya no está disponible. También se deben cumplir otros criterios, por ejemplo, una complejidad máxima en la expresión utilizada para rematerializar el valor; no sería bueno rematerializar un valor utilizando un cálculo complejo que lleva más tiempo que una carga. Por lo general, la expresión tampoco debe tener efectos secundarios .

Enlaces externos