Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
01.05.2014
Размер:
774.94 Кб
Скачать

Конвейеризация вычислений 4 4 1

иск нужного счетчика и устраняет эффект наложения, но связан со значительнымиаппаратнымизатратами.

Результаты моделирования бимодальной схемы с двухразрядными счетчикамипоказаны нарис. 9.30. По этим данным среднююточность предсказания можно оценить как 92,6%.

Точностьпредсказания Рис. 9.30. Точность предсказаниядвухразрядной бимодальной схемы [197]

Вэкспериментах, где данная идея проверялась на программах тестового пакета SPEC_95, средняя точность предсказания по всем программам пакета составила 53,9%. Несмотря на это, бимодальная схема сдвухразрядными счетчиками довольно распространена. На ее основе построены схемы предсказания переходов в процессорах Alpha 21164, R10000, PowerPC 620, UltraSPARC и др.

Взаключение отметим, что во многих одноуровневых решениях таблица истории переходов (DHT или ВНТ) совмещена с буфером адреса перехода (ВТВ), что позволяет сэкономить на вычислении исполнительных адресов точек перехода.

Двухуровневые схемы предсказания переходов. Одноуровневые схемы предсказания ориентированы на те команды УП, очередной исход которых существенно зависит от их собственных предыдущих исходов. В то же время для многих команд программы наблюдается сильная зависимость не от собственных исходов, а от результатов выполнения других предшествующих им команд УП. Это обстоятельство призваны учесть двухуровневые адаптивные схемы предсказания переходов, впервые предложенные в [229]. Такие схемы часто называют коррели- условного перехода.

В коррелированных схемах предсказания переходов выделяются два уровня таблиц. В роли таблицы первого уровня может выступать регистр глобальной истории (GHR), и тогда двухуровневую схему предсказания называют глобальной. В качестве таблицы первого уровня может также быть взят массив регистров локальной истории (LHR), где отдельный регистр отражает последовательность последних исходов одной команды УП. Такая схема предсказания носит название локальной. Каждый элемент таблицы второго уровня служит для хранения истории переходов отдельной команды УП. Таблица второго уровня обычно состоит из двухразрядных счетчиков и организована в виде матрицы (рис. 9.31). Содержимое счетчика команд (адрес команды УП) определяет один из регистров в таблице первого и одну строку в таблице второго уровня. В свою очередь, кодовая комбинация (шаблон), хранящаяся в выбранном регистре таблицы первого уровня, определяет нужный счетчик в указанном ряду таблицы второго уровня. Выбранный счетчикиспользуетсядля формированияпредсказания. Послевыполнения команды содержимое регистра и счетчика обновляется.

4 4 2 Глава 9. Основные направления в архитектуре процессоров

Рис.9.31. Общаяструктурадвухуровневойсхемыпредсказанияпереходов

Из описания логики двухуровневого предсказания следует, что выбор нужного счетчика обусловливается двумя источниками — адресом команды, для которой делается предсказание, и шаблоном, отражающим историю предшествующих переходов. Того же эффекта можно добиться при помощи схемы двухразрядного бимодального предиктора, если для доступа к ВНТ использовать шаблон, сформированный путем сложения по модулю 2, как это показано на рис. 9.23. Такая схемаизвестнаподназваниемgshare.

Гибридные схемы предсказания переходов. Для всех ранее рассмотренных стратегий характерна сильная зависимость точности предсказания от особенностей программ, в рамках которых эти стратегии реализуются. Та же самая схема, прекрасно проявляя себя с одними программными продуктами, с другими может давать совершенно неудовлетворительные результаты. Кроме того, необходимо учитывать еще один фактор. Прежде уже отмечалось, что точность предсказания повышается с увеличением глубины предыстории переходов, но происходит это лишь после накопления соответствующей информации, на что требуется определенное время: Период накопления предыстории принято называть временем «разогрева». Пока идет «разогрев», точность предсказания весьма низка. Иными словами, ни одна из элементарных стратегий предсказания переходов не является универсальной — со всех сторон лучшей в любых ситуациях. Гибридные или соревновательные схемы объединяют в себе несколько различных механизмов предсказания — элементарных предикторов. Идея состоит в том, чтобы в каждой конкретной ситуации задействовать тот элементарный предиктор, от которого вданном случае можно ожидать наибольшей точности предсказания.

Гибридная схема предсказания переходов, предложенная Макфарлингом [ 165], содержит два элементарных предиктора, отличающихся по своим характеристикам (размером таблиц предыстории и временем «разогрева») и работающих независимо друг от друга. Выбор предиктора, наиболее подходящего в данной ситуации, обеспечивается селектором, представляющим собой таблицу двухразрядных счетчиков, которые часто называют счетчиками выбора предиктора (рис. 9.32),

Адресация конкретного счетчика в таблице (индексирование) осуществляется k младшими разрядами адреса команды условного перехода, для которой осуществляется предсказание. Обновление таблиц истории в каждом из предикторов производится обычным образом, как это происходит при их автономном исполь-

Конвейеризация вычислений 4 4 3

Рис. 9.32. Гибридный предиктор Макфарлинга

зовании. В свою очередь, изменение состояния счетчиков селектора выполняется по следующим правилам. Если оба предиктора одновременно дали одинаковое предсказание (верное или неверное), содержимое счетчика не изменяется. При правильном предсказании от первого предиктора и неверном от второго содержимое счетчика увеличивается, а в противоположном случае — уменьшается на единицу. Выбор предиктора, на основании которого делается результирующая оценка, реализуется с помощью мультиплексора, управляемого старшим разрядом соответствующего счетчика селектора.

В работе [95] идея гибридного механизма была обобщена на случай п предикторов. Общая структуратакой схемы предсказания переходов показана на рис. 9.33. При выполнении команды УП предсказания формируются одновременно всеми предикторами, однако реальные действия осуществляются на основании только одного из них.

Рис. 9.33. Общая схема гибридного предиктора

Выбор подходящего предиктора обеспечивает механизм селекции (рис. 9.34). В схеме имеется буфер предыстории переходов (ВТВ), в котором каждая запись дополнена п двухразрядными счетчиками выбора предиктора, по числу используемых элементарных предикторов. Счетчики позволяют отследить самый предпочтительныйэлементарныйпредиктордлякаждойкомандыУП,представленной вВТВ.

4 4 4 Глава 9. Основные направления вархитектуре процессоров

Рис. 9.34. Механизм выбора предиктора

При записи в ВТВ нового элемента во все ассоциированные с ним счетчики заносится число 3. Для каждой команды условного перехода предсказание генерируется всеми п предикторами, но во внимание принимаются только те из них, для которых соответствующий счетчик выбора предиктора содержит число 3. Если это число встретилось более чем в одном счетчике, выбор единственного предиктора, наоснованиикоторогоиделается окончательноепредсказание, обеспечиваетшифратор приоритета. После выполнения команды условного перехода содержимое соответствующих ей счетчиков выбора обновляется, при этом действует следующий алгоритм. Если среди предикторов, счетчики которых равнялись 3, хотя бы один дал верное предсказание, то содержимое всех счетчиков, связанных с неверно сработавшими предикторами, уменьшается на единицу. В противном случае содержимое всех счетчиков, связанных с предикторами, проноз которых подтвердился, увеличивается на единицу. Такая политика гарантирует, что по крайней мере в одном из счетчиков будет число 3. Еще одно преимущество рассматриваемой схемы выбора состоит в том, что она позволяет, например, отличить предик- тор-<юракул», давший правильное предсказание последние пять раз, от предиктора, верно определившего исход последние четыре раза. Стандартные счетчики с насыщением такую дифференциацию не обеспечивают.

По имеющимся оценкам,точность предсказания переходов спомощью гибридных стратегий в среднем составляет 97,13%, что существенно выше по сравнению с прочими вариантами.

Асимметричная схема предсказания переходов. Асимметричная схема сочетает в себе черты гибридных и коррелированных схем предсказания. От гибридных схем она переняла одновременное срабатывание нескольких различных элементарных предикторов, В асимметричной схеме таких предикторов три, и каждый из них использует собственную таблицу РНТ. Для доступа к таблицам, аналогично коррелированным схемам, используется как адрес команды условного перехода, так и содержимое регистра глобальной истории (рис. 9.35).

Шаблон для обращения к каждой из трех РНТ формируется по-разному (применены различные функции хэширования). При выполнении команды условного перехода каждый из трех предикторов выдвигает свое предположение, но окончательноерешение принимается по мажоритарной схеме. После завершения команды условного перехода содержимое всех трех таблиц обновляется.

Конвейеризация вычислений 4 4 5

Рис. 9.35. Структураасимметричной схемыпредсказания переходов

Правильный подбор алгоритмов хэширования позволяет практически исключить влияние на точность предсказания эффекта наложения. Средняя точность предсказания с помощью асимметричной схемы, полученная на тестовом пакете SPEC_95, составила 72,6%.

Суперконвейерные процессоры

Эффективность конвейера находится в прямой зависимости от того, с какой частотой на его вход подаются объекты обработки. Добиться n-кратного увеличения темпа работы конвейера можно двумя путями:

-разбиением каждой ступени конвейера на п «подступеней» при одновременном повышении тактовой частоты внутри конвейера также в п раз;

-включением в состав процессора п конвейеров, работающих с перекрытием.

Вданном разделе рассматривается первый из этих подходов, известный как ceперконвейеризация (термин впервые был применен в 1988 году). Иллюстрацией эффекта суперконвейеризации может служитьдиаграмма, приведенная на рис. 9.36, где рассмотрен ранее обсуждавшийся пример (см. рис. 9.3). Каждая из шести ступеней стандартного конвейера разбита на две более простые подступени, обозначенные индексами 1 и 2. Выполнение операции в подступенях занимает половину тактового периода. Тактирование операций внутри конвейера производится с частотой, вдвое превышающей частоту «внешнего» тактирования конвейера, благодарящему на каждой ступени конвейера можно в пределах одного «внешнего» тактового периода выполнить две команды. '

Всущности, суперконвейеризация сводится к увеличению количества ступеней конвейера как за счет добавления новых ступеней, так и путем дробления имеющихся ступеней на несколько простых подступеней. Главное требование — возможность реализации операции в каждой подступени наиболее простыми техническими средствами, а значит, с минимальными затратами времени. Вторым, не менее важным, условием является одинаковость задержки во всех подступенях.

Критерием для причисления процессора к суперконвейерным служит число ступеней в конвейере команд. К суперконвейерным относят процессоры, где таких ступеней больше шести. Первым серийным суперконвейерным процессором считается MIPS R4000, конвейер команд которого включает в себя восемь ступе-

4 4 6 Глава9. Основные направления в архитектуре процессоров •

Рис. 9.36. Традиционная и суперконвейерная обработка команд

ней. Суперконвейеризация здесь сталаследствием разбиенияэтапов выборки команды и выборки операнда, а также введения в конвейер дополнительного этапа проверки тега, появление которой обусловлено архитектурой системы команд машины.

К сожалению, выигрыш, достигаемый за счет суперконвейеризации, на практике может оказаться лишь умозрительным. Удлинение конвейера ведет не только к усугублению проблем, характерных для любого конвейера, но и возникновению дополнительных сложностей. В длинном конвейере возрастает вероятность конфликтов. Дороже встает ошибка предсказания перехода — приходится очищать большее число ступеней конвейера, на что требуется больше времени. Усложняется логика взаимодействия ступеней конвейера. Тем не менее создателям ВМ удается успешно справляться с большинством из перечисленных проблем, свидетельством чего служит неуклонное возрастание числа ступеней в конвейерах команд современных процессоров (табл. 9.1).

Архитектуры с полным и сокращенным набором команд 4 4 7

Архитектуры с полным и сокращенным набором команд

Современная технология программирования ориентирована на языки высокого уровня (ЯВУ), главная задача которых — облегчить процесс написания программ. Более 90% всего процесса программирования осуществляют на ЯВУ. К сожалению, операции, характерные для ЯВУ, отличаются от операций, реализуемых машинными командами. Эта проблема получила название семантическогоразрыва и ведет она к недостаточно эффективному выполнению программ. Пытаясь преодолеть семантический разрыв, разработчики ВМ расширяют систему команд, дополняя ее командами, реализующими сложные операторы ЯВУ на аппаратурном уровне, вводят дополнительные виды адресации и т. п. Вычислительные машины, где реализованыэтисредства,принятоназывать ВМсполнымнаборомкоманд(CISC — Complex Instruction Set Computer). К типу CISC можно отнести практически все ВМ, выпускавшиеся до середины 80-х годов и значительную часть из выпускаемых в настоящее время.

Характерные для CISC способы решения проблемы семантического разрыва, вместе с тем ведут к усложнению архитектуры ВМ, главным образом устройства управления, что, в свою очередь, негативно сказывается на производительности в целом. Кроме того, в CISC очень сложно организовать эффективный конвейер команд, который, как уже отмечалось, является одним из наиболее перспективных путей повышения производительности ВМ. Все это заставило более внимательно проанализировать программы, получаемые после компиляции с ЯВУ. Был предпринят комплекс исследований [128,158,177,178,209], в результате которых обнаружились интересные закономерности:

-Реализация сложных команд, эквивалентных операторам ЯВУ, требует увеличения емкости управляющей памяти в микропрограммном УУ. Микропрограмкак их доля в общем объеме программы зачастую не превышает 0,2%.

-В откомпилированной программе операторы ЯВУ реализуются в виде процедур (подпрограмм), поэтому на операции вызова процедуры и возврата из нее приходится от 15 до 45% вычислительной нагрузки.

-При вызове процедуры вызывающая программа передает этой процедуре некоторое количество аргументов. Согласно [209], в 98% случаев число передаваемых аргументов не превышает шести. Примерно такое же положение сложилось и с параметрами, которые процедура возвращает вызывающей программе. Более 80% переменных, используемых программой [177,178], являютсялокальными, то есть создаются при входе в процедуру и уничтожаются при выходе из нее. Количество локальных переменных, создаваемых отдельной процедурой, в 92% случаев не превышает шести [209].

-Почти половину операций в ходе вычислений составляет операция присваивания, сводящаяся к пересылке данных между регистрами, ячейками памяти или регистрами и памятью.

4 4 8 Глава9. Основные направления в архитектуре процессоров

Детальный анализ результатов исследований привел к серьезному пересмотру традиционных архитектурных решений, следствием чего стало появление архитектуры с сокращенным набором команд (RISC — Reduced Instruction Set Computer). Термин «RISC» впервые был использован Паттерсоном и Дитцелем в 1980 году.

Основные черты RISC-архитектуры

Главные усилия в архитектуре RISC направлены на построение максимально эффективного конвейера команд, то есть такого, где все команды извлекаются из памяти и поступают в ЦП на обработку в виде равномерного пoтока, причем ни одна команда не должна находиться в состоянии ожидания, а ЦП должен оставаться загруженным на протяжении всего времени. Кроме того, идеальным будет вариант, когда любой этап цикла команды выполняется в течение одного тактового периода,

Последнее условие относительно просто можно реализоватьдля этапа выборки. Необходимо лишь, чтобы все команды имели стандартную длину, равную ширине шины данных, соединяющей ЦП и память. Унификация времени исполнения для различных команд — значительно более сложная задача, поскольку наряду с регистровыми существуют также команды с обращением к памяти.

Помимо одинаковой длины команд, важно иметь относительно простую подсистему декодирования и управления: сложное устройство управления (УУ) будет вносить дополнительные задержки в формирование сигналов управления. Очевидный путь существенного упрощения УУ — сокращение числа выполняемых команд, форматов команд и данных, а также видов адресации.

Излишне напоминать, что в сокращенном списке команд должны оставаться те, которые используются наиболее часто. Исследования показали, что 80-90% времени выполнения типовых программ приходится на относительно малую часть команд (10-20%). К наиболее часто востребуемым действиям относятся пересылка данных, арифметические и логические операции. Основная причина, препятствующая сведению всех этапов цикла команды к одному тактовому периоду, - потенциальная необходимость доступа к памяти для выборки операндов и/или записи результатов. Следует максимально сократить число команд, имеющих доступ к памяти. Это соображение добавляет к ранее упомянутым принципам RISC еще два:

-доступ к памяти во время исполнения осуществляется только командами «Чтение» и «Запись»;

-все операции, кроме «Чтение» и «Запись», имеют тип «регистр-регистр».

Для упрощения выполнения большинства команд и приведения их к типу «ре- гистр-регистр* требуется снабдить ЦП значительным числом регистров общего назначения. Большое число регистров в регистровом файле ЦП позволяет обеспечить временное хранение промежуточных результатов, используемых как операнды в последующих операциях, и ведет к уменьшению числа обращений к памяти, ускоряя выполнение операций. Минимальное число регистров, равное 32, принято как стандарт де-факто большинством производителей RISC-компьютеров,

Суммируя сказанное, концепцию RISC-компьютера можно свести к следующимположениям:

-выполнение всех (или, по крайней мере, 75% команд) за один цикл;

-стандартная однословная длина всех команд, равная естественной длине слова

иширине шины данных и допускающая унифицированную поточную обработку всех команд;

Архитектуры с полным и сокращенным набором команд 4 4 9

-малое число команд (не более 128);

-малое количество форматов команд (не более 4);

-малое число способов адресации (не более 4);

-доступ к памяти только посредством команд «Чтение» и -«Запись»;

-все команды, за исключением «Чтения» и «Записи», используют внутрипроцессорные межрегистровые пересылки;

-устройство управления «жесткой» логикой;

-относительно большой (не менее 32) процессорный файл регистров общего назначения (согласно [210] число РОН в современных RISC-микропроцессо- рах может превышать 500).

Регистры в RISC-процессорах

Отличительная черта RISC-архитектуры — большое число регистров общего назначения, что объясняется стремлением свести все пересылки к типу «регистррегистр». Но увеличение числаРОН способно дать эффект лишь при разумном их использовании. Оптимизацияиспользования регистров в RISC-процессорахобес- печивается как программными, так и аппаратными средствами.

Программная оптимизация выполняется на этапе компиляции программы, написанной на ЯВУ. Компилятор стремится так распределить регистры процессора, чтобы разместить в них те переменные, которые в течение заданного периода времени будут использоваться наиболее интенсивно.

На начальном этапе компилятор выделяет каждой переменной виртуальный регистр. Число виртуальных регистров в принципе не ограничено. Затем компилятор отображает виртуальные регистры на ограниченное количество физических регистров. Виртуальные регистры, использование которых не перекрывается, отображаются на один и тот же физический регистр. Если в определенном фрагменте программы физических регистров не хватает, то их роль для оставшихся виртуальных регистров выполняют ячейки памяти. В ходе вычислений содержимое каждой такой ячейки с помощью команды «Чтение» временно засылается в регистр, после чего командой «Запись» вновь возвращается в ячейку памяти.

Задача оптимизации состоит в определении того, каким переменным в данной точке программы выгоднее всего выделить физические регистры. Наиболее распространенный метод, применяемыйдля этой цели, известен какраскраска графа. В общем случае метод формулируется следующим образом. Имеется граф, состоящий из узлов и ребер. Необходимо раскрасить узлы так, чтобы соседние узлы имели разный цвет и чтобы при этом общее количество привлеченных цветов было минимальным. В нашем случае роль узлов выполняют виртуальные регистры. Если два виртуальных регистра одновременно присутствуют в одном и том же фрагменте программы, они соединяются ребром. Делается попытка раскрасить граф в n цветов, где п — число физических регистров. Если такая попытка не увенчалась успехом, то узлам, которые не удалось раскрасить, вместо физических регистров выделяются ячейки в памяти.

На рис. 9.37 приведен пример раскраски графа [36], в котором шесть виртуальных регистров отображаются на три физических. Показаны временная последо-

4 5 0 Глава 9. Основные направления в архитектуре процессоров

вательность активного вовлечения в выполнение каждого виртуального регистра (рис. 9.37, а) и раскрашенный граф (рис. 9.37, б).

Как видно, не удалось раскрасить только виртуальный регистр F, его придется отображать на ячейку памяти.

Аппаратная оптимизация использования регистров в RISC-процессорах ориентирована на сокращение затрат времени при работе с процедурами. Наибольшее время в программах, написанных на ЯВУ, расходуется на вызовы процедур и возврат из них. Связано это с созданием и обработкой большого числа локальных переменных и констант. Одним из механизмов для борьбы с этим эффектом являются так называемыерегистровые окна. Главная их задача — упростить и ускорить передачу параметров от вызывающей процедуры к вызываемой и обратно.

Рис. 9.37. Иллюстрация методараскраски графа:a — временная последовательность активногоиспользованиявиртуальныхрегистров;б—графвзаимного использования регистров

Регистровый файл разбивается на группы регистров, называемые окнами. Отдельное окно назначается глобальным переменным. Глобальные регистры доступны всем процедурам, выполняемым в системе в любое время. С другой стороны, каждой процедуре выделяется отдельное окно в регистровом файле. Все окна имеют одинаковый размер (обычно по 32 регистра) и состоят из трех полей. Левое поле каждого регистрового окна одновременно является и правым полем предшествующего ему окна (рис. 9.38). Среднее поле служит для хранения локальных переменных и констант процедуры.

База окна (первый в последовательности регистров окна) указывается полем, называемым указателем текущего окна (CWP, Current Window Pointer), обычно расположенным в регистре (слове) состояния ЦП. Если текущей процедуре назначено регистровое окно j CWP содержитзначение j

Каждой вновь вызванной процедуре выделяется регистровое окно, непосредственно следующее за окном вызвавшей ее процедуры. Последние k регистров окна; одновременно являются первыми k регистрами окна j + 1. Если процедура, занимающая окно j обращается к процедуре, которой в данной архитектуре должно быть назначено окно j + 1, она может передать в процессе вызова k аргументов.

Соседние файлы в папке Организация ЭВМ и систем