Организация процессоров
Рассмотрим перечисленные способы б) – д).
Механизмы обхода и продвижения данных основаны на идее непосредственной передачи результата с выхода одного функционального блока на вход другого, которое в нем нуждается. На рис. 3.7 показано, как результаты могут передаваться непосредственно с выхода АЛУ на вход (через буферные регистры) для того, чтобы обеспечить следующие команды самыми «свежими» данными предыдущей операции, минуя этапы записи в память или регистр.
Статическое планирование позволяет еще на этапе компиляции переупорядочивать команды таким образом, чтобы они по возможности не конфликтовали друг с другом. Например, рассмотрим 2 оператора языка : A := B + C;
D := E + F. Неоптимизированный код, реализующий эти операции, представлен в первой колонке таблицы 3.1. В данном потоке команд возникают конфликты типа RAW после второй и седьмой команд, а также после 4-ой и восьмой. Конфликты при записи в память могут быть устранены с помощью механизма обходов, а конфликты при чтении памяти – с помощью переупорядочения потока команд, как показано во второй колонке таблицы 3.1.
Таблица 3.1. Исходная последовательность команд Переупорядоченная последовательность
LW Rb, B
LW Rc, C
ADD Ra, Rb, Rc
SW A, Ra
LW Re, E
LW Rf, F
ADD Rd, Re, Rf
SW D, Rd LW Rb, B
LW Rc, C
LW Re, E
ADD Ra, Rb, Rc
LW Rf, F
SW A, Ra
ADD Rd, Re, Rf
SW D, Rd При динамической оптимизации команды, вызвавшие конфликт, могут задерживаться на конвейере, а следующие за ними команды, не вызывающие конфликтов и не зависящие от конфликтных команд, пускаются в обход них. Анализ конфликтных ситуаций и выбор команд для переупорядочивания возлагается на логику управления конвейером в самом процессоре.
При переименовании регистров логические имена регистров, присутствующие в командах, динамически отображаются на физические регистры процессора, которых, как правило, больше (если речь идет о RISC-подобной архитектуре). В результате различные данные, относящиеся к одному и тому же логическому регистру, помещаются в разные физические регистры.
|