ВУЗ:
Составители:
64
разрядный двоичный счетчик. При каждом выполненном переходе счетчик прогнозов
для данного перехода увеличивается, а при невыполненном - уменьшается на единицу.
Если текущее значение счетчика > 2
n
-
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)
Необходимо отметить, что в суперскалярных процессорах происходит очень сложное
и нетривиальное преобразование последовательного потока команд исходной программы
в параллельный поток триад (операция + операнды + назначение результата), параллельно
продвигающихся по очередям команд в исполнительные устройства. Процессор ограни-
чен в возможностях такого преобразования, а также в возможностях спекулятивного ис-
разрядный двоичный счетчик. При каждом выполненном переходе счетчик прогнозов для данного перехода увеличивается, а при невыполненном - уменьшается на единицу. Если текущее значение счетчика > 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) Необходимо отметить, что в суперскалярных процессорах происходит очень сложное и нетривиальное преобразование последовательного потока команд исходной программы в параллельный поток триад (операция + операнды + назначение результата), параллельно продвигающихся по очередям команд в исполнительные устройства. Процессор ограни- чен в возможностях такого преобразования, а также в возможностях спекулятивного ис- 64
Страницы
- « первая
- ‹ предыдущая
- …
- 62
- 63
- 64
- 65
- 66
- …
- следующая ›
- последняя »