Основные особенности МК. Понятие микроконтроллера. Классификация микропроцессоров. 8-разрядные МК, страница 9

Использование предикации предполагает, что на этапе компиляции все команды программы, относящиеся к одному пути ветвления, помечаются уникальным идентификатором, называемым предикатом  (predicate), а команды альтернативного направления – другим предикатом.

Каждая простая команда содержит 6-битное поле для хранения значений предикатов. На этапе исполнения команды разных ветвей могут выполняться параллельно, что задается соответствующим значением поля шаблона. Когда процессор вычисляет значение условия перехода и определяет его истинное направление, происходит запись единичного значения в соответствующий предикатный регистр и сброс предикатного регистра, соответствующего ложному направлению. К этому моменту процессор уже, возможно, выполнил некоторое количество команд, соответствующих обоим путям, но до сих пор не сохранил результат этого выполнения, чему препятствовало неопределенное значение соответствующих предикатных регистров. Перед тем, как сделать запись результата, процессор проверяет соответствующий предикатный регистр. Если он установлен, то результат записывается, если сброшен – не записывается.

5. Предварительная загрузка данных – загрузка по предположению (speculative loading) позволяет снизить потери производительности конвейера команд, связанные с простоями при обращении к памяти. Компилятор, просматривая код программы, определяет команды, использующие данные из памяти. Везде, где это возможно, добавляется команда предварительной загрузки на достаточно большом расстоянии перед командой, непосредственно использующей эти данные, а также команда проверки загрузки (speculative check) непосредственно перед командой, использующей эти данные.

На этапе выполнения программы процессор обнаруживает команду предварительной загрузки и пытается заранее загрузить данные из памяти, делая это в тот момент, когда системная шина свободна для обмена. 

 

2. Принципы организации конвейеров команд

Конвейеризация (pipelining) команд является одним из важнейших способов реализации низкоуровневого параллелизма (уровень машинных команд ILP). Зарождение конвейеров команд было связано с попыткой совмещения стадий предварительной выборки команд и фактического их выполнения. По российским источникам, впервые идея совмещенного выполнения операции в АЛУ и опережающей выборки команд была реализована в 1956г. академиком С.А. Лебедевым в ЭВМ М-20. По зарубежным источникам аналогичная идея была реализована в 1959г. (компьютер Stretch фирмы IBM). В свою очередь, полноценный четырехступенчатый конвейер команд был впервые реализован в 1961г. в вычислительной машине Atlas Манчестерского университета.

Сравнение производительности последовательного (бесконвейерного) процессора и процессора с шестиступенчатым конвейером команд

Производительность конвейера команд, также как и производительность процессора определяется числом команд, выполняемых за единицу времени. Стандартной оценкой этой характеристики является MIPS. Производительность последовательного процессора определяется как:

где T – длительность выполнения одной машинной команды

Для оценки производительности конвейера команд необходимо учитывать, что, несмотря на то, что длительность выполнения каждой команды по сравнению с последовательным процессором остается прежней, темп схода выполняемых команд с конвейера составляет , где n – число ступеней конвейера. В связи с этим производительность  n-ступенчатого конвейера в идеале оказывается в n раз больше производительности процессора без конвейера.

Идеализация приведенной оценки базируется на следующих допущениях:

1. длительности всех фаз конвейера одинаковы;

2. время переключения фаз конвейера (передачи команды с одной фазы на другую) пренебрежимо мало по сравнению с длительностью самих фаз;

3. все фазы конвейера максимально загружены, что может иметь место только на линейных участках программы (естественно, в работе конвейера предполагается, что блок IFU осуществляет свою работу по выборке команд по последовательным  адресам).