Данная подсистема обеспечивает оптимальную загрузку вычислительных узлов процессора и минимизацию их простоев. Это достигается за счет изменения порядка исполнения команд программы, не приводящего к искажению результата.
Рассмотрим возможность изменения порядка исполнения команд программы на примере.
Пример 5.1.
Пусть в программе задана следующая последовательность команд:
- 1) А = В + С;
- 2 )К = А+М;
- 3 )Z=X+ Y.
Предположим, что в процессоре имеется два блока для выполнения арифметических операций, которые могут работать параллельно. Как видно, команды 1 и 3 совершенно не зависят друг от друга. В команде 2 один из операндов (Л) — результат выполнения команды 1, значит, она может быть выполнена только после нее. В такой ситуации целесообразно изменить порядок выполнения. Сначала лучше выполнить команды 1 и 3 двумя параллельно работающими блоками, а затем команду 2, когда операнд А уже будет готов.
К устройствам подсистемы исполнения с изменением последовательности относятся следующие узлы.
Таблица назначения регистров. Устройство задает соответствие между регистрами архитектуры х86, которые, как известно, указываются в командах в качестве источника одного из операндов и приемника результата, и внутренними регистрами процессора, применяемыми при исполнении МО.
Буфер переупорядочивания микроопераций. Он является ассоциативным запоминающим устройством, хранящим подготовленные к исполнению МО, из которых состоят команды программы. Это устройство называют также пулом команд (англ, pool — общий фонд, общий котел). Сюда заносятся подготовленные к исполнению МО вместе с операндами, для хранения которых в буфере есть 40 элементов, размером 256 бит. Каждый из элементов может хранить МО, два связанных с ней операнда, результат ее выполнения и несколько битов состояния.
Станция-резервуар. Устройство выполняет функции диспетчера, определяющего порядок выполнения МО, хранящихся в буфере переупорядочивания. Оно оценивает возможность изменения порядка исполнения МО и обеспечивает их выполнение в оптимальной с точки зрения производительности последовательности, направляя их в вычислительные блоки исполнительного устройства.