Аннотация:
Проблема масштабируемости систем оптимизации времени связывания и систем статического анализа не потеряла своей актуальности в настоящее время: несмотря на рост производительности и увеличение объема памяти компьютеров, программы растут в размерах и сложности пропорэ иона льно, особенно когда дело касается таких сложных многомодульных программ, как, например, операционные системы, браузеры и другие. Эффективная оптимизация таких программ с использованием таких мощных инструментов, как межпроцедурные оптимизирующие преобразования, проводимые во время связывания, и преобразования с использованием профиля исполнения программы, требует существенных вычислительных ресурсов. В статье рассматривается подход к масштабированию по памяти системы оптимизаций времени связывания в целях ограничения потребляемой памяти заданным пороговым значением. Предложенный метод включает в себя следующие этапы: аннотирование промежуточного представления на этапе генерации промежуточного кода; во время компоновки чтение объявлений и аннотаций из файлов с промежуточным представлением, предварительный анализ, в котором происходит построение и анализ графа вызовов, отложенную загрузку участков кода во время оптимизаций и выгрузку участков кода по требованию. Также предложен подход к применению масштабирования по памяти к системе статического анали за. Описанный метод масштабирования был реализован на основе инструмента GOLD-plugin системы LLVM[1]. Представленные предварительные результаты тестирования реализации данного подхода на тестах SPEC CPU2000[2] показывают увеличение размера кода на 6%, увеличение накладных расходов по времени на 0.2% и по памяти на 36%.
Ключевые слова:межмодульные анализ и оптимизации, системы межмодульных оптимизаций, масштабирование.