Добавил:
Rumpelstilzchen2018@yandex.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

3-й семестр / Организация ЭВМиС; Орлов С.А., Цилькер Б.Я

..pdf
Скачиваний:
437
Добавлен:
25.12.2020
Размер:
5.43 Mб
Скачать

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

401

 

 

Двухразрядная схема автомата А2 используется относительно редко. Большую известность получила трехразрядная модель. Она, в частности, реализована в процессоре HP PA 8000.

Элементы PHT в автомате А3 можно рассматривать как реверсивные счетчики, работающие в режиме с насыщением. При поступлении на конвейер команды условного перехода происходит обращение к соответствующему счетчику PHT, и в зависимости от текущего состояния счетчика делается прогноз, определяющий дальнейший порядок извлечения команд программы. После прохождения ступени исполнения, когда фактический исход команды становится ясным, содержимое счетчика увеличивается на единицу (если команда завершилась переходом) или уменьшается на единицу (если перехода не было). Счетчики работают в режиме насыщения. Это означает, что добавление единиц сверх максимального числа в счетчике, а также вычитание единиц при нулевом содержимом счетчика уже не производятся.

Интуитивное представление о том, что с увеличением глубины предыстории (увеличением m) точность предсказания должна возрастать, на практике не подтверждается. Результаты исследований, приведенные в [141], показали незначительную разницу в точности предсказания при m = 3 и m = 2, а при m > 3 точность предсказания начинает снижаться. Как следствие, в большинстве известных процессоров используются PHT c двухразрядными элементами (m = 2).

Логика предсказания переходов применительно к двухразрядным счетчикам известна как алгоритм Смита [138]. Алгоритм предполагает четыре состояния счетчика:

00 — перехода не будет (сильное предсказание);01 — перехода не будет (слабое предсказание);10 — переход будет (слабое предсказание);11 — переход будет (сильное предсказание).

Таким образом, основанием для предсказания служит состояние старшего разряда счетчика. Если он содержит единицу, то принимается, что переход произойдет, в противном случае предполагается, что перехода не будет.

Диаграмма состояний двухразрядного автомата А3 приведена на рис. 9.8.

Рис. 9.8. Диаграмма состояний двухразрядного автомата А3

402

Глава 9. Процессоры

 

 

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

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

В качестве шаблонов для доступа к PHT могут быть взяты:

адрес команды условного перехода;содержимое регистра глобальной истории;

содержимое регистра локальной истории;комбинация предшествующих вариантов.

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

Рис. 9.9. Доступ к PHT, исходя из адреса команды перехода

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

В реальных схемах предсказания переходов размер таблицы PHT ограничен. Типичное количество элементов PHT (элементарных счетчиков) в разных процессорах варьируется от 256 до 4096. Для выбора определенного входа в PHT (нужного счетчика) применяется k-разрядный шаблон, где k определяется размером массива. Для упомянутых выше размеров PHT значение k лежит в диапазоне от 8 до 12. Если обращение к PHT определяется счетчиком команд, разрядность которого обычно больше, чем k, в качестве шаблона выступают k младших битов СК (рис. 9.10). Как

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

403

 

 

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

Рис. 9.10. Доступ к PHT, исходя из k младших разрядов адреса команды перехода

В зависимости от типа программы и других факторов наложение может приводить к повышению точности предсказания, ее ухудшению либо вообще не сказываться на точности предсказания. Соответственно, эффекты наложения классифицируют как конструктивный, деструктивный и нейтральный. Многочисленные исследования показали, что чаще всего наложение положительно сказывается на точности предсказаний. Связано это с тем, что исход отдельной команды условного перехода в значительной мере зависит от поведения предшествующих ей команд УП, связь которых с рассматриваемой командой не столь очевидна. Иными словами, между исходами команд условного перехода в программе существует некоторая взаимо­ связь, учет которой дает возможность повысить процент правильных предсказаний. Это наблюдение стало побудительной причиной для создания схем, где улучшение точности предсказания во многом определяется учетом эффекта наложения. Речь идет о схемах с регистрами глобальной и локальной истории.

Регистр глобальной истории (GHR, Global History Register) представляет собой l-разрядный сдвиговый регистр (рис. 9.11). После выполнения очередной команды условного перехода содержимое регистра сдвигается на один разряд влево, а в освободившуюся позицию заносится единица (если исходом команды был переход) или ноль (если перехода не было). Следовательно, кодовая комбинация в GHR отражает историю выполнения последних по времени l команд условного перехода.

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

404

Глава 9. Процессоры

 

 

Рис. 9.11. Доступ к PHT, исходя из содержимого регистра глобальной истории

Регистр локальной истории (LHR, Local History Register) по логике работы аналогичен регистру глобальной истории, но предназначен для фиксации последовательных исходов одной отдельной команды УП. Таким образом, каждой команде УП выделен свой регистр локальной истории, и в схемах предсказания с LHR присутствует так называемая таблица локальной истории, представляющая собой массив регистров локальной истории (рис. 9.12).

Рис. 9.12. Доступ к PHT, исходя из регистров локальной истории

С учетом положительного влияния эффекта наложения на точность предсказаний в некоторых схемах этот эффект еще более усугубляется. Так, в ряде динамических методов предсказания шаблон для доступа к PHT формируется путем объединения адреса команды перехода и содержимого GHR (либо LHR), при этом используется одна из двух операций: конкатенация (сцепление) или сложение по модулю 2 («исключающее ИЛИ»).

При конкатенации k-разрядный шаблон для обращения к PHT образуется посредством взятия q младших битов из одного источника, к которым пристыковываются kq младших разрядов, взятых из второго источника (рис. 9.13).

Эффективность предсказания на основе подобного шаблона зависит от соотношения количества разрядов (q и kq), выбранных от каждого из двух источников. Здесь многое определяется и характером программы.

Вариант со сложением по модулю 2 предполагает побитовое применение операции «Исключающее ИЛИ» к k младшим разрядам обоих источников (рис. 9.14).

Результаты экспериментов, приведенные в [141], позволяют дать сравнительную оценку рассмотренных схем динамического предсказания.

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

405

 

 

Рис. 9.13. Формирование шаблона для доступа к PHT путем конкатенации

Рис. 9.14. Формирование шаблона для доступа к PHT путем сложения по модулю 2

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

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

одноуровневые или бимодальные;двухуровневые или коррелированные;гибридные;асимметричные.

Одноуровневые схемы предсказания переходов. В многочисленных исследованиях, проводившихся на самых разнообразных программах, была отмечена интересная закономерность. В поведении многих команд условного перехода явно прослеживается тенденция повторяемости исхода: одни команды программы, как правило,

406

Глава 9. Процессоры

 

 

завершаются переходом, в то время как другие — остаются без оного, то есть имеет место бимодальное распределение исходов. Идея одноуровневых схем предсказания, известных также под вторым названием — бимодальные схемы [119], сводится к отделению команд, имеющих склонность завершаться переходом, от команд, при выполнении которых переход обычно не происходит. Такая дифференциация позволяет для каждой команды выбрать наиболее подходящее предсказание. Для реализации идеи в составе схемы предсказания достаточно иметь лишь одну таблицу, каждый элемент которой отображает историю исходов одной команды УП. Для обращения к элементу, ассоциированному с определенной командой УП, используется адрес этой команды (или его младшие биты). Таким образом, одноуровневые схемы предсказания переходов можно определить как схемы, содержащие один уровень таблиц истории переходов (обычно единственную таблицу), адресуемых с помощью адреса команды условного перехода.

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

Вторая схема ориентирована на то, что команды программы извлекаются из кэшпамяти команд. Каждая ячейка кэш-памяти содержит дополнительный разряд, который используется только применительно к командам условного перехода. Состояние разряда отражает исход предыдущего выполнения команды (1 — переход был, 0 — перехода не было). Новое предсказание совпадает с результатом предшествующего выполнения данной команды. При занесении такой команды в кэш-память рассматриваемый разряд устанавливается в единицу. Это напоминает стратегию «при первом выполнении переход обязательно происходит» с той лишь разницей, что первое предсказание, хотя и носит статический характер, происходит в ходе заполнения кэш-памяти, то есть динамически. После выполнения команды состояние дополнительного бита корректируется: если переход имел место, в него заносится единица, а в противном случае — ноль. Точность предсказания по данным, приведенным в [141], в среднем составляет 90%. Главный недостаток схемы заключается в дополнительных затратах времени на обновление состояния контрольного разряда в кэш-памяти команд.

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

407

 

 

В третьей схеме (рис. 9.15) PHT состоит из одноразрядных элементов и носит название таблицы истории переходов (BHT, Branch History Table).

Рис. 9.15. Однобитовая бимодальная схема предсказания

Состояние элемента BHT определяет, произошел ли переход в ходе последнего выполнения команды условного перехода (1) или нет (0). Каждой команде УП

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

впервой и последней итерациях цикла.

Схема была реализована в процессорах Alpha 21064 и AMD K5. Согласно результатам большинства исследований, средняя точность успешного прогноза с помощью однобитовой бимодальной схемы не превышает 78%. В то же время в работе [141] получено значение 90,4%.

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

Рис. 9.16. Одноуровневая схема предсказания с таблицей DHT

Для обозначения таблицы истории переходов в данной схеме используют аббревиатуру DHT (Decode History Table). Слово «decode» (декодирование) в названии отражает особенность работы с таблицей. Если к обычной BHT обращение происходит при выборке любой команды, вне зависимости от того, на самом ли деле она команда условного перехода, поиск в DHT начинается только после декодирования команды, то есть когда выяснилось, что данная команда является командой условного перехода. Реализуется DHT на базе обычного ЗУ с произвольным доступом.

408

Глава 9. Процессоры

 

 

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

Рис. 9.17. Схема Смита

Вкачестве ассоциативного признака (тега) при поиске нужного счетчика выступает адрес команды условного перехода. Такой подход позволяет ускорить поиск нужного счетчика и устраняет эффект наложения, но связан со значительными аппаратными затратами. По результатам моделирования бимодальной схемы с двухразрядными счетчиками точность предсказания можно оценить как 92,6%, хотя на некоторых программах точность предсказания составила 53,9%. Несмотря на это, бимодальная схема с двухразрядными счетчиками довольно распространена. На ее основе построены схемы предсказания переходов в процессорах Alpha 21164, R10000, PowerPC 620, UltraSPARC и др.

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

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

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

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

409

 

 

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

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

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

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

410

Глава 9. Процессоры

 

 

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

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

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

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

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

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