Автор: Пользователь скрыл имя, 09 Ноября 2011 в 22:35, доклад
Процессор - устройство, осуществляющее процесс автоматической обработки
данных и программное управление этим процессом. Процессоры можно классифици-
ровать, например, по следующим признакам:
Конфликты по управлению возникают при конвейеризации команд условных перехо-
дов. По статистике до 15%-20% всех команд в программе - это команды условных перехо-дов. Конфликт проявляется в том, что адрес условного перехода определяется только в
конце выполнения команды, в то время, как конвейер уже должен быть заполнен коман-
дами из какой-то одной ветви. Если не обрабатывать конфликт, то производительность
конвейера может снижаться в 2 и большее число раз. Способы борьбы с конфликтами по
управлению можно разделить на 2 группы: статические и динамические.
К статическим методам можно отнести:
1) Возврат, т.е.
статическое прогнозирование
мого, либо - всегда не выполняемого с последующей очисткой конвейера в слу-
чае неправильного прогноза и возвратом к нужной команде.
2) Разворачивание циклов. Поскольку многие условные переходы связаны с определе-
нием условия выхода из цикла, то в случае, когда число шагов цикла заранее известно и
невелико, можно «развернуть» цикл, то есть продублировать тело цикла столько раз,
сколько необходимо, отказавшись от проверки условия вообще. Это приведет к увеличе-
нию кода программы, но избавит от конфликта по управлению.
3) Задержанные переходы (использование «слотов задержки»).
Под слотами задержки понимают участки программы, которые будут занесены в кон-
вейер и успеют выполниться до выяснения адреса перехода в условной команде. Идея их
использования состоит в том, чтобы заполнять слоты задержки «полезными» или «не-
вредными» командами, то есть такими, которые либо не зависят от условия, либо - не
приведут к нарушению логики программы, даже если их выполнение окажется лишним.
(Рис. 4.9)
4) Предсказание переходов на основе профиля программы. Профилирова-
ние (profiling) предусматривает составление прогноза о выполнении тех или иных перехо-
дов на основе статистических наблюдений за программой по результатам ее многократно-
го прогона.
К динамическим методам можно отнести:
1) Приостановку конвейера до выяснения адреса перехода.
2) Реализацию команд условного перехода в процессоре таким образом,
чтобы адрес перехода выяснялся на начальных этапах выполнения
команды.
3) Динамическое
предсказание ветвлений в
Динамическое предсказание ветвлений в процессорах осуществляется с помощью
буферов предсказания перехода (БПП - Branch Predicting Buffer -BPB). Чаще всего в
них используется счетчик прогнозов, который представляет собой обычный n64
разрядный двоичный счетчик. При каждом выполненном переходе счетчик прогнозов
для данного перехода увеличивается, а при невыполненном - уменьшается на единицу.
Если текущее значение счетчика > 2n-1, то переход прогнозируется как выполняемый,
иначе - как невыполняемый. На практике ограничиваются либо 1-битным, либо 2-
битными счетчиками, которые при этом обеспечивают вероятность правильного
прогноза соответственно до 70% и 85%.
Для еще большего ускорения предсказания используют буфер целевых адресов пе-
реходов (Branch Target Buffer - BTB), представляющий собой ассоциативную
кэш -память, в которой в качестве тегов используются адреса команд ветвления в текущей
части программы, а в ячейках содержатся счетчики прогнозов и целевые адреса перехода
при условии его выполнения. Процессор при выборке команды проверяет, не хранится ли
ее адрес в BTB, считывает счетчик прогнозов и в зависимости от его значения принимает
решение о выборке команд по следующему адресу или по адресу, указанному в BTB.
4.5.4 Суперскалярные архитектуры
Итак, использование конвейера команд позволяет в лучшем случае снизить показатель
CPI до 1, то есть
на каждом такте с конвейера
должна «сходить» новая
манда. В этом случае производительность нашего процессора ARC должна увеличиться в
4 раза, при его длительности такта в 10 нс (тактовая частота 100 Мгц) имеем производи-
тельность в 100 MIPS. Но во-первых, у Celeron такой показатель равняется, как мы выяс-
нили, где-то 250, а во-вторых - как показано ранее, достижение показателя 1 CPI не всегда
возможно из-за конфликтов при конвейеризации. То есть реально мы будем иметь в луч-
шем случае 1,5-2 CPI. Как же достигается такая высокая производительность в Celeron и
других процессорах с архитектурой P6? Для этого в них используется суперскалярная об-
работка, то есть обработка с многопотоковым конвейером команд, когда процессор может
выполнять больше 1 команды за такт (CPI < 1, или - IPC > 1).
Фактически в суперскалярном процессоре несколько потоков проходят через несколь-
ко исполнительных устройств, а остальные ступени так или иначе работают с одним пото-
ком. Для согласования
разных скоростей потоков
RISC - подобные инструкции, переупорядочивания и потоков в исполнительных устрой-
ствах применяют различные очереди инструкций (буферы FIFO), которые есть у каждого
из исполнительных устройств (рис. 4.10)
Необходимо отметить, что в суперскалярных процессорах происходит очень сложное
и нетривиальное преобразование последовательного потока команд исходной программы
в параллельный поток триад (операция + операнды + назначение результата), параллельно
продвигающихся по очередям команд в исполнительные устройства. Процессор ограни-
чен в возможностях такого преобразования, а также в возможностях спекулятивного ис-
65
полнения (подготовки загрузки альтернативных ветвей ветвления) и прогнозирования
ветвлений размером т.н. «окна исполнения», то есть той частью программного кода, кото-
рый процессор «видит» в процессе выполнения в данном такте. Все это ограничивает воз-
можности распараллеливания потоков команд до величин порядка 6-8.
Рис. 4.10
4.5.5 Процессоры с длинным командным словом (VLIW).
В процессорах с длинным командным словом (Very Long Instruction Word) использу-
ется альтернативный суперскалярной обработке принцип распараллеливания по-
следовательного алгоритма. В основном вся тяжесть планирования загрузки большого
числа исполнительных устройств в таком процессоре (а у него блочное операцион-
ное устройство) ложится на программиста, или - на оптимизирующий компилятор. В
процессор поступают уже сформированные триады для всех исполнительных устройств,
так что ему только остается выполнять эти длинные команды. В результате он не огра-
ничен размером окна исполнения, так как и программист, и компилятор видят весь код
программы, и могут извлечь из него максимальный параллелизм.
66
Такой подход позволяет достичь принципиально более высокой производительности
(например, тестирование процессоров Itanium с архитектурой IA-64, использующей прин-
ципы VLIW, указывает на 10-кратное ускорение при выполнении ряда вычислений), но
такие процессоры обладают и рядом недостатков:
- в целом
менее эффективная загрузка
можно сформировать достаточное количество команд для параллельного исполнения;
- сложности обработки условных переходов;
- сложность программирования и др.
Последнее обстоятельство ограничивает применение процессоров VLIW, даже Intel, в
персональных ЭВМ, так как для этого придется кардинально переписывать все программ-
ное обеспечение, поскольку в существующем виде оно не даст прироста производитель-
ности на этих процессорах. Сфера применения VLIW-процессоров пока ограничена сер-
верами, производительными рабочими станциями, а также многопроцессорными ЭВМ.
Что касается обработки условных переходов, то тут можно отметить широкое исполь-
зование в процессорах VLIW так называемых условных (conditional) команд. Это коман-
ды, использующие предварительно рассчитанные логические значения (предикаты), для
выполнения, либо пропуска какого-то действия (наподобие операторов языков высокого
уровня c := iif (a>b, a, c)), что позволяет избавиться от нескольких ветвей при коротких
условных переходах и использовать один поток команд без необходимости предсказывать
адрес для следующей выборки.
4.6 Обзор архитектур процессоров Intel
Корпорация Intel является "законодателем мод" на рынке микропроцессоров, а ее про-
дукты стали де-факто стандартом в компьютерной индустрии. Конечно, существует
большое количество других производителей и распространенных семейств МП (те же
процессоры Motorola и др.), однако наиболее распространенными во всем мире, и особен-
но в России, являются все же процессоры Intel.
Кроме того, в течении многих лет другие разработчики МП (AMD, NextGen, VIA и др.)
выпускают свои аналоги процессоров, совместимых по системам команд с МП Intel. По-
этому, анализируя эволюцию процессоров Intel, мы проследить историю развития микро-
процессоров общего назначения вообще. А история развития процессоров Intel подтвер-
ждает в целом закон Мура, сформулированный одним из основателей империи Intel Гор-
доном Муром еще в 1965 году: "каждые 1,5-2 года выпускается новый процессор, степень
интеграции которого (и производительность) вдвое выше, чем у предыдущего."Согласно
информации Intel /11/, за 24 года количество транзисторов в кристалле МП увеличилось
более чем в 3700 раз от 29 тыс. в процессоре i8086 (выпущен в 1978 г.) до 108 млн в Intel__