Лекция 12. Особенности архитектуры современных ЭВМ
163
1. Необходимость наличия блокировок конвейера. Дело в том, что
время исполнения большинства инструкций может очень сильно варьи-
роваться. Скажем, умножение (и тем более деление) чисел требуют на
стадии выполнения нескольких тактов, а сложение или побитовые опе-
рации – одного такта; а для других операций это время может быть раз-
личным. Соответственно, должен быть какой-то механизм, который бы
«притормаживал» выборку и декодирование новых инструкций до тех
пор, пока не будут завер
шены старые. Методов решения этой проблемы
много, но их развитие приводит к одному – в процессорах прямо перед
исполнительными устройствами появляются специальные блоки-
диспетчеры, которые накапливают подготовленные к исполнению ин-
струкции, отслеживают выполнение ранее з
апущенных инструкций
и по мере освобождения исполнительных устройств отправляют на них
новые инструкции. Даже если исполнение займет много тактов – внут-
ренняя очередь диспетчера позволит в большинстве случаев не оста-
навливать подготавливающий все новые и новые инструкции конвейер.
2. Необходимость наличия системы сброса процессора. Поскольку
операции выборки и выполнения команды всегда выделены в отдель-
ные стади
и конвейера, то в тех случаях, когда в программном коде про-
исходит разветвление (условный переход), зачастую оказывается, что
по какой из веток пойти – пока неизвестно: инструкция, вычисляющая
код условия, еще не выполнена. В результате процессор вынужден либо
приостанавливать выборку новых инструкций до тех пор, пока не будет
вычислен код условия (а это может занять очень много времени и в ти-
пичном цикле сильно затормозит процессор), ли
бо, руководствуясь со-
ображениями блока предсказания переходов, «угадывать», какой из пе-
реходов скорее всего окажется правильным.
3. Наконец, конвейер обычно требует наличия специального пла-
нировщика, призванного решать конфликты по данным. Если в про-
грамме иде
т зависимая цепочка инструкций (когда инструкция 2, сле-
дующая за инструкцией 1, использует для своих вычислений данные,
только что вычисленные инструкцией 1), а время исполнения одной ин-
струкции (от момента запуска на стадию выполнения и до записи полу-
ченных результатов в регистры) превосходит один такт, то мы вынуж-
дены придержать выполнение очередн
ой инструкции до тех пор, пока
не будет полностью выполнена предыдущая команда.
Таким образом, идея конвейера в процессоре очень красива на
словах и в теории, однако реализовать ее даже в простом варианте
чрезвычайно трудно. Но выгода от конвейеризации столь велика и не-
сомненна, что приходится с этими трудностями мириться, и ничего
лучшего до сих пор не придумано.
В процессорах марки Pentium
впервые в семействе процессоров
Intel конвейер получил качественное развитие. По сравнению с более
ранними процессорами фирмы Intel он усложнен тем, что содержит два