Устройство выборки/декодирования
Два кристалла в одном корпусе
Главное преимущество и уникальная особенность Р6 - размещен-ная в одном корпусе с процессором вторичная статическая кэш-па-мять размером 256 кб, соединенная с процессором специально выде-ленной шиной. Такая конструкция должна существенно упростить про-ектирование систем на базе Р6. Р6 - первый предназначенный для массового производства микропроцессор, содержащий два чипа в од-ном корпусе.
Кристалл ЦПУ в Р6 содержит 5,5 миллионов транзисторов; крис-
талл кэш-памяти второго уровня - 15,5 миллионов. Для сравнения,
последняя модель Pentium включала около 3,3 миллиона транзисто-
ров, а кэш-память второго уровня реализовывалась с помощью внеш-
него набора кристаллов памяти.
Столь большое число транзисторов в кэше объясняется его ста-
тической природой. Статическая память в P6 использует шесть тран-
зисторов для запоминания одного бита, в то время как динамической
памяти было бы достаточно одного транзистора на бит. Статическая
память быстрее, но дороже.
Хотя число транзисторов на кристалле с вторичным кэшем втрое
больше, чем на кристалле процессора, физические размеры кэша
меньше: 202 квадратных миллиметра против 306 у процессора. Оба
кристалла вместе заключены в керамический корпус с 387 контактами
(“dual cavity pin-drid array”). Оба кристалла производятся с при-
менением одной и той же технологии (0,6 мкм, 4- слойная ме-
талл-БиКМОП, 2,9 В). Предполагаемое максимальное потребление
|
|
энергии: 20 Вт при частоте 133 МГц.
Первая причина объединения процессора и вторичного кэша в
одном корпусе - облегчение проектирования и производства высокоп-
роизводительных систем на базе Р6. Производительность вычисли-
тельной системы, построенной на быстром процессоре, очень сильно
зависит от точной настройки микросхем окружения процессора, в
частности вторичного кэша. Далеко не все фирмы-производители
компьютеров могут позволить себе соответствующие исследования. В
Р6 вторичный кэш уже настроен на процессор оптимальным образом,
что облегчает проектирование материнской платы.
Вторая причина объединения - повышение производительности.
Кзш второго уровня связан с процессором специально выделенной ши-
ной шириной 64 бита и работает на той же тактовой частоте, что и
процессор.
Первые процессоры Рentium с тактовой частотой 60 и 66 МГц
обращались к вторичному кэшу по 64-разрядной шине с той же такто-
вой частотой. Однако с ростом тактовой частоты Pentium для проек-
тировщиков стало слишком сложно и дорого поддерживать такую час-
тоту на материнской плате. Поэтому стали применяться делители
частоты. Например, у 100 МГц Pentium внешняя шина работает на
|
|
частоте 66 МГц (у 90 МГц Pentium - соответственно 60 МГц). Penti-
um использует эту шину как для обращений к вторичному кэшу, так и
· 4 -
для обращения к основной памяти и другим устройствам, например к
набору чипов PCI.
Использование специально выделенной шины для доступа к вто-
ричному кэшу улучшает производительность вычислительной системы.
Во-первых, при этом достигается полная синхронизация скоростей
процессора и шины; во-вторых, исключается конкуренция с другими
операциями ввода-вывода и связанные с этим задержки. Шина кэша
второго уровня полностью отделена от внешней шины, через которую
происходит доступ к памяти и внешним устройствам. 64-битовая
внешняя шина может работать со скоростью, равной половине, одной
третьей или одной четвертой от скорости процессора, при этом шина
вторичного кэша работает независимо на полной скорости.
Объединение процессора и вторичного кэша в одном корпусе и
их связь через выделенную шину является шагом по направлению к
методам повышения производительности, используемым в наиболее
мощных RISC-процессорах. Так, в процессоре Alpha 21164 фирмы «Di-
gital» кэш второго уровня размером 96 кб размещен в ядре процес-
|
|
сора, как и первичный кэш. Это обеспечивает очень высокую произ-
водительность кэша за счет увеличения числа транзисторов на крис-
талле до 9,3 миллиона. Производительность Alpha 21164 составляет
330 SPECint92 при тактовой частоте 300 МГц. Производительность Р6
ниже (по оценкам «Intel» - 200 SPECint92 при тактовой частоте 133
МГц), однако Р6 обеспечивает лучшее соотношение стоимость/произ-
водительность для своего потенциального рынка.
При оценке соотношения стоимость/производительность следует
учитывать, что, хотя Р6 может оказаться дороже своих конкурентов,
большая часть других процессоров должна быть окружена дополни-
тельным набором чипов памяти и контроллером кэша. Кроме того, для
достижения сравнимой производительности работы с кэшом, другие
процессоры должны будут использовать кэш большего, чем 256 кб
размера.
«Intel», как правило, предлагает многочисленные вариации
своих процессоров. Это делается с целью удовлетворить разнообраз-
ным требованиям проектировщиков систем и оставить меньше прост-
ранства для моделей конкурентов. Поэтому можно предположить, что
вскоре после начала выпуска Р6 появятся как модификации с увели-
ченным объемом вторичной кэш-памяти, так и более дешевые модифи-
|
|
кации с внешним расположением вторичного кэша, но при сохраненной
выделенной шине между вторичным кэшом и процессором.
Pentium как точка отсчета
Процессор Pentium со своей конвейерной и суперскалярной ар-хитектурой достиг впечатляющего уровня производительности.
Pentium содержит два 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 проектировался с точки зрения эффективной
реализации целостной вычислительной системы, и требовалось, чтобы
высокая производительность системы в целом достигалась с исполь-
зованием дешевой подсистемы памяти.
Решение, принятое в P6
Решение сформулированной в предыдущем разделе проблемы памя-ти, принятое в P6, заключается в обращении к пулу команд, извле-чении из него команд, следующих за командой, требующей обращения к памяти, и выполнения до момента завершения команды-тормоза мак-симума полезной работы. В приведенном в предыдущем разделе приме-ре процессор не может выполнить команду 2 до завершения команды 1, так как команда 2 зависит от результатов команды 1. В то же время процессор может выполнить команды 3 и 4, не зависящие от результата выполнения команды 1. Мы будем называть такое выполне-ние команд опережающим выполнением. Результаты опережающего вы-полнения команд 3 и 4 не могут быть сразу записаны в регистры, поскольку мы должны изменять состояние вычислительной системы только в соответствии с правильным порядком выполнения программы. Эти результаты хранятся в пуле команд и извлекаются оттуда позд-нее. Таким образом, процессор выполняет команды в соответствии с их готовностью к выполнению, вне зависимости от их первоначально-го порядка в программе, то есть с точки зрения реального порядка выполнения команд P6 является машиной, управляемой потоком дан-ных. В то же время изменение состояния вычислительной системы, например запись в регистры, производится в строгом соответствии с истинным порядком команд в программе.
Чтение из памяти данных, необходимых для команды 1, может
занимать достаточно много тактов. Тем временем P6 продолжает опе-
режающее выполнение команд, следующих за командой 1, и успевает
обработать, как правило, 20-30 команд. Среди этих 20-30 команд
будет в среднем пять команд перехода, которые устройство выбор-
ки/декодирования должно правильно предсказать для того, чтобы ра-
бота устройства диспетчирования/выполнения не оказалась бесполез-
ной. Небольшое количество регистров в архитектуре процессоров
«Intel» приводит к интенсивному использованию каждого из них и,
как следствие, к возникновению множества мнимых зависимостей меж-
ду командами, использующими один и тот же регистр. Поэтому, чтобы
исключить задержку в выполнении команд из-за мнимых зависимостей,
устройство диспетчирования/выполнения работает с дублями регист-
ров, находящимися в пуле команд (одному регистру может соответс-
· 7 -
твовать несколько дублей). Реальный набор регистров контролирует-
ся устройством отката, и результаты выполнения команд отражаются
на состоянии вычислительной системы только после того, как выпол-
ненная команда удаляется из пула команд в соответствии с истинным
порядком команд в программе.
Таким образом, принятая в P6 технология динамического выпол-
нения может быть описана как оптимальное выполнение программы ,
основанное на предсказании будущих переходов, анализе графа пото-
ков данных с целью выбора наилучшего порядка исполнения команд и
на опережающем выполнении команд в выбранном оптимальном порядке.
Архитектура P6
На рисунке 2 приведена более подробная блок-схема P6, вклю-чающая кэши и интерфейс с основной памятью.
Далее мы будем понимать под «упорядоченным» устройство, ко-
торое работает в соответствии с исходным порядком команд в прог-
рамме, а под «беспорядочным» - устройство, которое не обращает
внимания на исходный порядок команд в программе.
Устройство выборки/декодирования является «упорядоченным»
устройством, которое воспринимает на входе поток команд из прог-
раммы пользователя и декодирует их, превращая в последователь-
ность микрокоманд, соответствующих потоку данных в программе
пользователя.
Устройство диспетчирования/выполнения является «беспорядоч-
ным» устройством, которое воспринимает поток данных и планирует
выполнение микрокоманд с учетом зависимостей по данным и доступ-
ности ресурсов, а также временно сохраняет результаты опережающе-
го выполнения в пуле команд.
Устройство отката - «упорядоченное» устройство, которое зна-
ет, как и когда завершить выполнение команды, то есть перевести
временные результаты опережающего выполнения в постоянное состоя-
ние вычислительной системы.
Интерфейс шины является «частично упорядоченным» устройс-
твом, отвечающим за связь трех вышеупомянутых устройств с внешним
миром. Интерфейс шины взаимодействует непосредственно с кэшем
2-го уровня и поддерживает до 4 параллельных обращений к кэшу.
Интерфейс шины также управляет обменом данными с основной па-
мятью, который происходит с использованием протокола MESI [1].
Устройство выборки/декодирования
Структура этого устройства приведена на рисунке 3.
Команды из кэша команд могут быть быстро выбраны для после-
дующей обработки. Указатель на следующую команду - это индекс кэ-
ша команд, содержимое которого определяется буфером переходов,
состоянием процессора и сообщениями о неправильном предсказании
перехода, поступающими из устройства выполнения целых команд. Бу-
фер переходов с 512 входами использует расширение алгоритма Йе
(Yeh), которое обеспечивает более чем 90-процентную точность
предсказания переходов.
Предположим, что ничего исключительного не происходит и что
· 8 -
буфер переходов в своих предсказаниях оказался прав (в P6 предус-
мотрены эффективные действия в случае неправильного предсказания
перехода).
Кэш команд выбирает строку кэша, соответствующую индексу в
указателе на следующую команду, и следующую за ней строку, после
чего передает 16 выровненных байтов декодеру. Две строки считыва-
ются из-за того, что команды в архитектуре Intel выровнены по
границе байта, и поэтому может происходить передача управления на
середину или конец строки кэша. Выполнение этой ступени конвейера
занимает три такта, включая время, необходимое для вращения пред-
выбранных байтов и их подачи на декодеры команд. Начало и конец
команд помечаются.
Три параллельных декодера принимают поток отмеченных байтов
и обрабатывают их, отыскивая и декодируя содержащиеся в потоке
команды. Декодер преобразует команды архитектуры Intel в микроко-
манды-триады (два операнда, один результат). Большинство команд
архитектуры Intel преобразуются в одну микрокоманду, некоторые
требуют четырех микрокоманд, а сложные команды требуют обращения
к микрокоду, представляющему из себя набор заранее составленных
последовательностей микрокоманд. Некоторые команды, так называе-
мые байт-префиксы, модифицируют следующую за ними команду, что
также усложняет работу декодера. Микрокоманды ставятся в очередь,
посылаются в таблицу псевдонимов регистров, где ссылки на логи-
ческие регистры преобразуются в ссылки на физические регистры P6,
после чего каждая из микрокоманд вместе с дополнительной информа-
цией о ее состоянии (статусе) посылается в пул команд. Пул команд
реализован в виде массива контекстно-адресуемой памяти, называе-
мого также буфером переупорядочивания.
В этой точке заканчивается «упорядоченная» часть конвейера.
Дата добавления: 2019-07-15; просмотров: 179; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!