Устройство выборки/декодирования



Два кристалла в одном корпусе

Главное преимущество и уникальная особенность Р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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!