Организация процессоров
После выполнения собственно команд процессора выполняется переход на начало памяти микропрограмм, и весь машинный цикл повторяется для следующей команды (адрес которой находится в регистре PC.)
В результате среднее число тактов на команду (clocks per instruction - CPI) – около 3-4 на команду, и, кроме того, 1 загрузка команды из памяти. В командах обращения к памяти требуется 1 дополнительное обращение к памяти.
Производительность этого процессора можно оценить следующим образом. Среднее время выполнения (в тактах) : Tк = 3t + 1,5tmem,
где t – длительность одного такта процессора, = tmem – длительность обращения к памяти. При тактовой частоте 100Мгц t=10нс. Пусть время обращения к памяти составляет даже 20нс. Получаем Тк = 3*10нс + 1,5*20нс = 60нс. Производительность = 1/Тк = 1/60нс = менее 20 МIPS. Показатели производительности многих современных процессоров (и RISC и CISC) даже на такой же частоте намного выше (Например, Celeron 400 Мгц имеет производительность около 1000 MIPS – на частоте 100 МГц он бы имел производительность 250MIPS, то есть в 10 раз больше, чем у рассмотренного процессора). Как достигается повышение производительности ? Во-первых, можно несколько улучшить показатель CPI, если перейти к жесткой логике управления, то есть вместо микроподпрограммы выполнения команды реализовать аппаратную схему, выполняющую алгоритм заданной команды. С другой стороны, можно использовать КЭШ-память для ускорения доступа к основной памяти. Однако, этих мер недостаточно для повышения производительности в 10 и более раз.
В современных процессорах для повышения производительности применяют, в том числе, 2 основных подхода: конвейеризацию команд и суперскалярное выполнение команд (многопотоковые конвейеры команд). Эти подходы мы и рассмотрим далее.
Рис. 3.8 3.5.3 Конвейер команд В общем случае приведенные ранее основные пять этапов выполнения команды процессора общего назначения требуют разного времени, но – сопоставимого. Если добиться (введением фиксаторов и синхронизацией), чтобы каждый этап занимал одинаковое время, можно организовать конвейер команд, в котором одновременно на разных этапах выполнения будут находиться несколько команд (Рис.3.6).
|