Rematerialização - Rematerialization

Na ciência da computação , rematerialização ou remat é uma otimização do compilador que economiza tempo ao recomputar um valor em vez de carregá-lo da memória. Ele é tipicamente integrado com a alocação de registros , onde é usado como uma alternativa para espalhar os registros para a memória. Foi concebido por Gregory Chaitin , Marc Auslander , Ashok Chandra , John Cocke , Martin Hopkins e Peter Markstein e implementado no compilador Pl.8 para o Minicomputador 801 no final dos anos 1970. Melhorias posteriores foram feitas por Preston Briggs , Keith D. Cooper e Linda Torczon em 1992.

Otimizações tradicionais, como eliminação de subexpressão comum e içamento invariante de loop geralmente se concentram na eliminação de computação redundante. Uma vez que a computação requer ciclos de CPU , isso geralmente é uma coisa boa, mas tem o efeito colateral potencialmente devastador de aumentar os intervalos ativos de variáveis ​​e criar muitas novas variáveis, resultando em vazamentos durante a alocação de registro. A rematerialização é quase o oposto: ela diminui a pressão do registro , aumentando a quantidade de computação da CPU. Para evitar adicionar mais tempo de computação do que o necessário, a rematerialização é feita apenas quando o compilador pode ter certeza de que será benéfico - ou seja, quando um vazamento de registro na memória ocorreria de outra forma.

A rematerialização funciona monitorando a expressão usada para calcular cada variável, usando o conceito de expressões disponíveis . Às vezes, as variáveis ​​usadas para calcular um valor são modificadas e, portanto, não podem mais ser usadas para rematerializar esse valor. Diz-se então que a expressão não está mais disponível. Outros critérios também devem ser atendidos, por exemplo, uma complexidade máxima na expressão usada para rematerializar o valor; não seria bom rematerializar um valor usando um cálculo complexo que leva mais tempo do que uma carga. Normalmente, a expressão também não deve ter efeitos colaterais .

links externos

  • Chaitin, Gregory, Marc Auslander, Ashok Chandra, John Cocke, Martin Hopkins e Peter Markstein. "Register Allocation Via Coloring, Computer Languages, Vol. 6, No. 1, 1981, pp. 47-57"
  • P. Briggs, KD Cooper e L. Torczon. Rematerialização . Proceedings of the SIGPLAN 92 Conference on Programming Language Design and Implementation , SIGPLAN Notices 27 (7), p.311-321. Julho de 1992. A página CiteSeer do artigo original.
  • Mukta Punjabi. Registre a Rematerialização no GCC . Discute a implementação de rematerialização do gcc .