Студентам > Рефераты > Процессоры нового поколения и перспективы их развития
Процессоры нового поколения и перспективы их развитияСтраница: 2/5
команд, следующих в программе друг за другом и
удовлетворяющих
определенным правилам, например, отсутствие регистровых
зависи-
мостей типа "запись после чтения".
В P6 для увеличения пропускной способности
осуществлен пере-
ход к одному 12-стадийному конвейеру. Увеличение
числа стадий
- 5 -
приводит к уменьшению выполняемой на каждой стадии работы
и, как
следствие, к уменьшению времени нахождения команды на
каждой ста-
дии на 33 процента по сравнению с Pentium. Это означает,
что ис-
пользование при производстве P6 той же технологии, что и
при про-
изводстве 100 МГц Pentium, приведет к получению P6 с
тактовой
частотой 133 МГц.
Возможности суперскалярной архитектуры Pentium, с ее
способ-
ностью к выполнению двух команд за такт, было бы трудно
превзойти
без совершенно нового подхода. Примененный в P6 новый
подход уст-
раняет жесткую зависимость между традиционными фазами
"выборки" и
"выполнения", когда последовательность
прохождения команд через
эти две фазы соответствует последовательности команд в
программе.
Новый подход связан с использованием так называемого
пула команд
и с новыми эффективными методами предвидения будущего
поведения
программы. При этом традиционная фаза
"выполнение" заменяется на
две: "диспетчирование/выполнение" и
"откат". В результате команды
могут начинать выполняться в произвольном порядке, но
завершают
свое выполнение всегда в соответствии с их исходным
порядком в
программе. Ядро P6 реализовано как три независимых
устройства,
взаимодействующих через пул команд (рис. 1).
2Основная проблема на пути повышения
2производительности
Решение об организации P6 как трех независимых и
взаимодейс-
твующих через пул команд устройств было принято после
тщательного
анализа факторов, ограничивающих производительность
современных
микропроцессоров. Фундаментальный факт, справедливый для
Pentium
и многих других процессоров, состоит в том, что при
выполнении
реальных программ мощность процессора не используется
в полной
мере. Рассмотрим в качестве примера следующий фрагмент
программы,
записанный на некотором условном языке:
r1 <- mem[r0] /* Команда 1 */
r2 <- r1 + r2 /* Команда 2 */
r5 <- r5 + 1 /* Команда 3 */
r6 <- r6 - r3 /* Команда 4 */
Предположим, что при выполнении первой команды
фрагмента -
загрузки из памяти в регистр r1 - оказалось, что
содержимое соот-
ветствующей ячейки памяти отсутствует в кэше. При
традиционном
подходе процессор перейдет к выполнению команды 2
только после
того, как данные из ячейки mem[r0] основной памяти будут
прочита-
ны через интерфейс шины. Все время ожидания процессор
будет прос-
таивать.
В то время как скорость процессоров за последние 10
лет вы-
росла по меньшей мере в 10 раз, время доступа к
основной памяти
уменьшилось только на 60 процентов. Это увеличивающееся
отстава-
ние скорости работы с памятью по отношению к скорости
процессора
и было той фундаментальной проблемой, которую пришлось
решать при
проектировании P6.
Один из возможных подходов к решению этой проблемы -
перенос
- 6 -
ее центра тяжести на разработку высокопроизводительных
компонен-
тов, окружающих процессор. Однако массовый выпуск систем,
включа-
ющих и высокопроизводительный процессор, и
высокоскоростные спе-
циализированные микросхемы окружения, был бы слишком
дорогостоя-
щим.
Можно было попытаться решить проблему с
использованием гру-
бой силы, а именно увеличить размер кэша второго
уровня, чтобы
уменьшить процент случаев отсутствия необходимых данных
в кэше.
Это решение эффективное, но тоже чрезвычайно
дорогостоящее, осо-
бенно учитывая сегодняшние скоростные требования к
компонентам
кэша второго уровня. P6 проектировался с точки зрения
эффективной
реализации целостной вычислительной системы, и
требовалось, чтобы
высокая производительность системы в целом достигалась с
исполь-
зованием дешевой подсистемы памяти.
2Решение, принятое в P6
Решение сформулированной в предыдущем разделе
проблемы памя-
ти, принятое в P6, заключается в обращении к пулу
команд, извле-
чении из него команд, следующих за командой, требующей
обращения
к памяти, и выполнения до момента завершения
команды-тормоза мак-
симума полезной работы. В приведенном в предыдущем
разделе приме-
ре процессор не может выполнить команду 2 до завершения
команды
1, так как команда 2 зависит от результатов команды 1.
В то же
время процессор может выполнить команды 3 и 4, не
зависящие от
результата выполнения команды 1. Мы будем называть такое
выполне-
ние команд опережающим выполнением. Результаты
опережающего вы-
полнения команд 3 и 4 не могут быть сразу записаны в
регистры,
поскольку мы должны изменять состояние вычислительной
системы
только в соответствии с правильным порядком выполнения
программы.
Эти результаты хранятся в пуле команд и извлекаются
оттуда позд-
нее. Таким образом, процессор выполняет команды в
соответствии с
их готовностью к выполнению, вне зависимости от их
первоначально-
го порядка в программе, то есть с точки зрения реального
порядка
выполнения команд P6 является машиной, управляемой
потоком дан-
ных. В то же время изменение состояния вычислительной
системы,
например запись в регистры, производится в строгом
соответствии с
истинным порядком команд в программе.
Чтение из памяти данных, необходимых для команды
1, может
занимать достаточно много тактов. Тем временем P6
продолжает опе-
режающее выполнение команд, следующих за командой 1, и
успевает
обработать, как правило, 20-30 команд. Среди этих
20-30 команд
будет в среднем пять команд перехода, которые
устройство выбор-
ки/декодирования должно правильно предсказать для того,
чтобы ра-
бота устройства диспетчирования/выполнения не оказалась
бесполез-
ной. Небольшое количество регистров в архитектуре
процессоров
"Intel" приводит к интенсивному использованию
каждого из них и,
как следствие, к возникновению множества мнимых
зависимостей меж-
ду командами, использующими один и тот же регистр.
Поэтому, чтобы
исключить задержку в выполнении команд из-за мнимых
зависимостей,
устройство диспетчирования/выполнения работает с дублями
регист-
ров, находящимися в пуле команд (одному регистру может
соответс-
- 7 -
твовать несколько дублей). Реальный набор регистров
контролирует-
ся устройством отката, и результаты выполнения команд
отражаются
на состоянии вычислительной системы только после того,
как выпол-
ненная команда удаляется из пула команд в соответствии с
истинным
порядком команд в программе.
Таким образом, принятая в P6 технология
динамического выпол-
нения может быть описана как оптимальное выполнение
программы ,
основанное на предсказании будущих переходов, анализе
графа пото-
ков данных с целью выбора наилучшего порядка исполнения
команд и
на опережающем выполнении команд в выбранном оптимальном
порядке.
2Архитектура P6
На рисунке 2 приведена более подробная блок-схема
P6, вклю-
чающая кэши и интерфейс с основной памятью.
Далее мы будем понимать под
"упорядоченным" устройство, ко-
торое работает в соответствии с исходным порядком команд
в прог-
рамме, а под "беспорядочным" - устройство,
которое не обращает
внимания на исходный порядок команд в программе.
Устройство выборки/декодирования является
"упорядоченным"
устройством, которое воспринимает на входе поток команд
из прог-
раммы пользователя и декодирует их, превращая в
последователь-
ность микрокоманд, соответствующих потоку данных в
программе
пользователя.
Устройство диспетчирования/выполнения является
"беспорядоч-
ным" устройством, которое воспринимает поток
данных и планирует
выполнение микрокоманд с учетом зависимостей по данным и
доступ-
ности ресурсов, а также временно сохраняет результаты
опережающе-
го выполнения в пуле команд.
Устройство отката - "упорядоченное"
устройство, которое зна-
ет, как и когда завершить выполнение команды, то есть
перевести
временные результаты опережающего выполнения в постоянное
состоя-
ние вычислительной системы.
Интерфейс шины является "частично
упорядоченным" устройс-
твом, отвечающим за связь трех вышеупомянутых устройств с
внешним
миром. Интерфейс шины взаимодействует непосредственно
с кэшем
2-го уровня и поддерживает до 4 параллельных обращений
к кэшу.
Интерфейс шины также управляет обменом данными с
основной па-
мятью, который происходит с использованием протокола MESI
[1].
2Устройство выборки/декодирования
Структура этого устройства приведена на рисунке 3.
Команды из кэша команд могут быть быстро выбраны
для после-
дующей обработки. Указатель на следующую команду - это
индекс кэ-
ша команд, содержимое которого определяется буфером
переходов,
состоянием процессора и сообщениями о неправильном
предсказании
перехода, поступающими из устройства выполнения целых
команд. Бу-
фер переходов с 512 входами использует расширение
алгоритма Йе
(Yeh), которое обеспечивает более чем 90-процентную
точность
предсказания переходов.
Предположим, что ничего исключительного не
происходит и что
- 8 -
буфер переходов в своих предсказаниях оказался прав (в P6
предус-
мотрены эффективные действия в случае неправильного
предсказания
перехода).
Кэш команд выбирает строку кэша, соответствующую
индексу в
указателе на следующую команду, и следующую за ней
строку, после
чего передает 16 выровненных байтов декодеру. Две строки
считыва-
ются из-за того, что команды в архитектуре Intel
выровнены по
границе байта, и поэтому может происходить передача
управления на
середину или конец строки кэша. Выполнение этой ступени
конвейера
занимает три такта, включая время, необходимое для
вращения пред-
выбранных байтов и их подачи на декодеры команд. Начало
и конец
|