En informática , la rematerialización o remat es una optimización del compilador que ahorra tiempo al volver a calcular un valor en lugar de cargarlo desde la memoria. Por lo general, está estrechamente integrado con la asignación de registros , donde se usa como una alternativa a la transferencia de registros a la memoria. Fue concebido por Gregory Chaitin , Marc Auslander , Ashok Chandra , John Cocke , Martin Hopkins y Peter Markstein e implementado en el compilador Pl.8 para la minicomputadora 801 a fines de la década de 1970. Preston Briggs realizó mejoras posteriores., Keith D. Cooper y Linda Torczon en 1992.
Las optimizaciones tradicionales, como la eliminación de subexpresiones comunes y la elevación invariante de bucle, a menudo se centran en eliminar el cálculo redundante. Dado que el cálculo requiere ciclos de CPU , esto suele ser algo bueno, pero tiene el efecto secundario potencialmente devastador de que puede aumentar los rangos en vivo de variables y crear muchas variables nuevas, lo que resulta en derrames durante la asignación de registros. La rematerialización es casi lo contrario: disminuye la presión del registro al aumentar la cantidad de cálculo 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á beneficioso, es decir, cuando se produciría un derrame de registros en la memoria.
La rematerialización funciona realizando 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 volver a materializar ese valor. Entonces se dice que la expresión ya no está disponible. También deben cumplirse otros criterios, por ejemplo, una complejidad máxima en la expresión utilizada para rematerializar el valor; No serviría de nada volver a materializar un valor mediante 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
- Chaitin, Gregory, Marc Auslander, Ashok Chandra, John Cocke, Martin Hopkins y Peter Markstein. "Asignación de registros a través de colorear, Computer Languages, Vol. 6, No. 1, 1981, págs. 47-57"
- P. Briggs, KD Cooper y L. Torczon. Rematerialización . Actas de la Conferencia SIGPLAN 92 sobre Diseño e Implementación de Lenguajes de Programación , Avisos SIGPLAN 27 (7), p.311-321. Julio de 1992. La página de CiteSeer para el artículo original.
- Mukta Punjabi. Registrar Rematerialización en GCC . Analiza la implementación de gcc de la rematerialización.