Рематериализация - Rematerialization

Рематериализация или же remat это оптимизация компилятора что экономит время за счет пересчета значения вместо загрузки его из памяти. Обычно он тесно интегрирован с распределение регистров, где он используется как альтернатива проливание записывает в память. Это было задумано Григорий Чайтин, Марк Ауслендер, Ашок Чандра, Джон Кок, Мартин Хопкинс и Питер Маркштейн и реализован в компиляторе Pl.8 для миникомпьютера 801 в конце 1970-х. Позже улучшения были сделаны Престон Бриггс, Кейт Д. Купер, и Линда Торчон в 1992 г.

Традиционные оптимизации, такие как исключение общего подвыражения и инвариантный подъем цикла часто сосредотачиваются на устранении избыточных вычислений. Поскольку для вычислений требуется ЦПУ циклов, это обычно хорошо, но у него есть потенциально разрушительный побочный эффект, заключающийся в том, что он может увеличивать живые диапазоны переменных и создавать много новых переменных, что приводит к разливам во время распределения регистров. Рематериализация почти противоположна: она уменьшается регистрировать давление за счет увеличения объема вычислений ЦП. Чтобы избежать добавления большего времени вычислений, чем необходимо, рематериализация выполняется только тогда, когда компилятор может быть уверен, что это принесет пользу, то есть когда в противном случае произошел бы сброс регистра в память.

Рематериализация работает путем отслеживания выражения, используемого для вычисления каждой переменной, с использованием концепции доступные выражения. Иногда переменные, используемые для вычисления значения, изменяются, и поэтому больше не могут использоваться для рематериализации этого значения. Затем говорят, что выражение больше не доступно. Также должны быть выполнены другие критерии, например максимальная сложность выражения, используемого для рематериализации значения; Было бы бесполезно рематериализовать значение с помощью сложных вычислений, которые занимают больше времени, чем загрузка. Обычно в выражении также не должно быть побочные эффекты.

внешняя ссылка

  • Чайтин, Грегори, Марк Ауслендер, Ашок Чандра, Джон Кок, Мартин Хопкинс и Питер Маркштейн. "Распределение регистров с помощью раскраски, Компьютерные языки, Том 6, № 1, 1981, стр. 47-57"
  • П. Бриггс, К. Д. Купер и Л. Торцон. Рематериализация. Материалы конференции SIGPLAN 92 по проектированию и реализации языков программирования, Уведомления SIGPLAN 27 (7), стр. 311-321. Июль 1992 г. Страница CiteSeer для оригинальной статьи.
  • Мукта пенджаби. Зарегистрируйте рематериализацию в GCC. Обсуждает gcc Осуществление рематериализации.