Другие ссылки на то, как компилятор Сталина жестоко оптимизирует?

J.M. В заявлении Siskind говорится:

Сталин - оптимизирующий компилятор для Схемы, который выполняет статический анализ всей программы и использует результаты этого анализа для генерации чрезвычайно эффективного кода. Сталин использует большую коллекцию методов статического анализа. Он выполняет новую форму анализа поливариантного потока, который использует повторный моновариантный анализ потока для выполнения потокового направленного расщепления: клонирование специализированных копий процедур и присвоение целей целевым объектам таким клонам для каждого вызова. Он использует результаты анализа потока для выполнения анализа времени жизни, анализа побега, анализа точек и анализа алиасов. Эти анализы поддерживают новую форму облегченного преобразования замыкания, которая устраняет большинство слотов закрытия, используя такие методы, как переменная глобализация и локализация, сжимает статический backchain и обычно устраняет большинство замыканий программ. Он также использует приведенные выше анализы для поддержки управления потоками на основе потоков, основанного на потоках, где сбор мусора во время выполнения заменяется статическим распределением и освобождением по каждому абстракционному значению и по каждой программе. Он также обеспечивает легкое преобразование CPS с потоком, используя расширенные технологии, разработанные с помощью Screamer, для поддержки чрезвычайно эффективных первоклассных продолжений. Наконец, он поддерживает потоковое представление и выбор уровня низкого уровня для выбора реализации (или не реализации) тегов, проверки тегов и диспетчеризации тегов для каждого абстракционного значения и для каждой точки программы. Это устраняет большинство тегов во время выполнения, проверку тегов, тегов, дескрипцию тегов, диспетчеризацию тегов, бокс и распаковку из программ. Эти анализы и оптимизации позволяют Сталину генерировать чрезвычайно эффективный код, который превосходит все другие компиляторы Схемы по коэффициентам в диапазоне от двух до ста, особенно для численно-интенсивного кода. Сталин часто генерирует код, который превосходит рукописный код c и Fortran.

Мне удалось найти следующий очень интересный документ о реализации замыканий/функциональных вызовов: Конверсия облегченного закрытия потока с потоком. Я также отправил электронное письмо автору, чтобы спросить о документах по другим темам, которые упоминаются как написанные в документе преобразования закрытия:

Siskind, J. M. 2000a. Легкая конверсия CPS с потоком. При подготовке.

Siskind, J. M. 2000b. Поперечная поливариантность. При подготовке.

Siskind, J. M. 2000c. Выбор направления потока. При подготовке.

Siskind, J. M. 2000d. Управление потоковым хранилищем. При подготовке

К сожалению, ему никогда не приходилось писать эти бумаги. Мой вопрос к вам: есть ли какие-либо альтернативные или связанные с ними документы, которые охватывают эти темы? Мне очень интересно узнать, как Сталин (или другие компиляторы) может скомпилировать такой язык высокого уровня, как Scheme, который собирает мусор, динамически типизируется, поддерживает функции первого класса и даже продолжения первого класса, может быть статически скомпилирован для такого эффективного кода.

R. Список публикаций Kent Dybvig.

Изменить. Хорошим введением в Chez Scheme является его презентация ICFP и который прошел вместе с этим. Некоторые из статей относятся к Scheme конкретно (макросы, множественные значения, продолжения), а некоторые более широко применимы (Регистрация распределения с использованием Lazy Saves, Eager Restores и Greedy Shu FFL ИНГ).

4
ответ дан 15 янв. '12 в 0:04
источник