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

Распределение регистров при планировании инструкций для архитектуры Эльбрус-90микро

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

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

Регистры, по сути, являются одним из архитектурных ресурсов, которые должны учитываться при планировании инструкций, откуда и вытекает взаимосвязь рассматриваемых фаз [1].

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

В промышленных компиляторах наиболее часто регистры распределяют до или после планирования, используя классический алгоритм Четина-Бриггса (раскраска графа несовместимости) с дополнительными эвристиками [2]. Однако ряд исследований [1, 3, 4] показывает, что большей эффективности – минимизации кода, уменьшения количества обращений в память и уменьшения времени компиляции – можно добиться совмещением фаз планирования и распределения.

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

Содержание:

Введение
1. Предыдущие исследования
2. Специфика микропроцессора МЦСТ R-500
3. Общее описание алгоритма
4. Уменьшение алгоритмической сложности
5. Учет регистров как архитектурного ресурса
6. Оптимизация задержек при обращении в память
7. Откачка в память констант и удаление ненужных инструкций
8. Результаты
9. Выводы
Литература

Распределение регистров при планировании инструкций для архитектуры Эльбрус-90микро

Фазы распределения регистров и планирования инструкций в оптимизирующем компиляторе имеют много общего и выполняют схожие задачи. В статье представлен алгоритм одновременного распределения регистров и планирования инструкций, который позволяет устранить дублирующие функциональности и лучше учесть взаимные требования указанных фаз. Эффективность алгоритма продемонстрирована на задачах пакета SPEC CINT95.

old.mcst.ru