_WELCOMETO Radioland

Главная Схемы Документация Студентам Программы Поиск Top50  
Поиск по сайту



Навигация
Главная
Схемы
Автоэлектроника
Акустика
Аудио
Измерения
Компьютеры
Питание
Прог. устройства
Радио
Радиошпионаж
Телевидение
Телефония
Цифр. электроника
Другие
Добавить
Документация
Микросхемы
Транзисторы
Прочее
Файлы
Утилиты
Радиолюб. расчеты
Программирование
Другое
Студентам
Рефераты
Курсовые
Дипломы
Информация
Поиск по сайту
Самое популярное
Карта сайта
Обратная связь

Студентам


Студентам > Рефераты > Процессоры нового поколения и перспективы их развития

Процессоры нового поколения и перспективы их развития

Страница: 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  выровнены  по

границе байта, и поэтому может происходить передача управления на

середину или конец строки кэша. Выполнение этой ступени конвейера

занимает три такта, включая время, необходимое для вращения пред-

выбранных байтов и их подачи на декодеры команд.  Начало и  конец