Средства разработки приложений


Расширение и инициализация структур данных


Для отражения свойств инструкций и зависимостей, связанных с ранним выполнением, в структуры данных планировщика, представляющие инструкции и зависимости между ними, включены флаги раннего выполнения (см. таблицу 1). Наличие флага раннего выполнения для зависимости означает, что для преодоления данной зависимости можно использовать раннее выполнение. Аналогично, такой флаг для инструкции означает, что она может быть запланирована альтернативным способом - с использованием раннего выполнения. Также специальными флагами помечаются инструкции, которые более предпочтительны для раннего выполнения, либо, наоборот, не должны в нем участвовать.

Таблица 1. Флаги раннего выполнения

Флаг Зависимость может быть устранена с помощью: Инструкция может быть:
BEGIN_DATA ранняя загрузка с помощью ld.a ld.a
BEGIN_CONTROL ранняя загрузка с помощью ld.s ld.s
BE_IN_DATA

BE_IN_CONTROL

использование результата ранней загрузки использование результата ранней загрузки
FINISH_DATA - ld.c
FINISH_CONTROL - chk.s
HARD_DEP невозможно устранить ранняя загрузка не может быть использована
WEAK_DEP ранняя загрузка предпочтительна ранняя загрузка предпочтительна

Инициализация флагов происходит перед началом планирования, когда работает анализ зависимостей по данным. Все так называемые истинные зависимости по памяти (команда, читающая данные из памяти, зависит от ранее выполняемой команды записи этих данных) помечаются анализом зависимостей флагом BEGIN_DATA. Некоторые зависимости при этом помечаются флагом HARD_DEP (например, зависимости, возникающие при волатильных обращениях в память). Флаг зависимости по управлению BEGIN_CONTROL, BE_IN- и FINISH- флаги, а также флаги раннего выполнения для инструкций устанавливаются в процессе планирования при анализе их зависимостей.


Начало  Назад  Вперед



Книжный магазин