Вы находитесь на старом сайте МЦСТ. Актуальный материал смотрите на новом сайте.

Развитие модели подсистемы памяти вычислительных комплексов серии Эльбрус

Скорость работы при загрузке некоторых операционных систем
Скорость работы при загрузке некоторых операционных систем

Подавляющее большинство современных программ написано с использованием высокоуровневых языков программирования. Одной из ключевых особенностей таких языков является возможность повторного использования ранее написанных программных блоков, называемых функциями или процедурами, посредством их идентификации и по-следующего обращения к ним, например, по имени или по адресу в памяти. Использова-ние функций придает программированию более упорядоченный характер, однако влечет за собой появление неявных избыточностей в результирующем коде и, как следствие, по-терю в скорости вычислений. Примерами таких избыточностей, называемых межпроце-дурными, могут быть дублирующие вычисления в вызывающей и вызываемой функциях. Оптимизации, направленные на удаление межпроцедурных избыточностей, являются неотъемлемой частью оптимизирующих компиляторов.
В качестве одного из основных средств выявления и устранения межпроцедурных избыточностей оптимизирующими компиляторами применяется подстановка тела вызы-ваемой функции в точку вызова (inline-подстановка, инлайн-подстановка) [1]. Суть этого преобразования состоит в замене операции вызова процедуры на ее тело. Применительно к EPIC-архитектурам [2], подстановка тела функции в точку вызова обладает еще одним важным, с точки зрения производительности, эффектом. А именно, помимо возможности устранения межпроцедурных избыточностей, компилятор получает возможность совмест-ного планирования вызывающей и вызываемой процедур. Другими словами, часть опера-ций вызывающей и вызываемой процедур может исполняться параллельно. Алгоритмам проведения inline-подстановок посвящена статья [3].
На практике подстановка тела функции в точку вызова не всегда возможна. Например, бывают случаи, когда вызов процедуры происходит не по имени, а по адресу (вызовы по косвенности, неявные вызовы), т.е. в момент вызова неизвестно, какая именно процедура будет вызвана и, соответственно, тело какой процедуры можно подставить в данную точку. Известный подход к решению данной проблемы состоит в статическом межпроцедурном анализе указателей [4, 5], с помощью которого иногда удается узнать, какая именно процедура вызывается. Однако в большинстве случаев возможностей статического анализа хватает лишь на то, чтобы немного сократить множество процедур, которые могут быть потенциально вызваны в данной точке.
В статье предложен динамический метод сбора статистической информации о ко-личестве и частоте вызовов той или иной процедуры в процессе пробного запуска про-граммы. Кроме того, предложен метод использования собранной информации в инлайн-подстановках.

Подробнее... Загрузить файл 

Содержание:

Введение
1. Сбор профильной информации
2. Специализированная подстановка тела функции в место вызова на основе профиля значений
3. Экспериментальные результаты
Заключение
Литература

Развитие модели подсистемы памяти вычислительных комплексов серии Эльбрус Развитие модели подсистемы памяти вычислительных комплексов серии Эльбрус

Одним из способов ускорения работы программ явля-ется их оптимизация на этапе компиляции. К числу наиболее широко используемых оптимизирующих преобразований отно-сится подстановка тела вызываемой функции в точку вызова (инлайн-подстановка). Изложено повышение эффективности инлайн-подстановок за счет использования профильной ин-формации. Предложена техника профилирования значений переменных и метод специализированной инлайн-подстановки, основанный на профиле значений. Исследовано влияние пред-ложенных методов на время исполнения ряда задач.

old.mcst.ru