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

ВС для ГОС (ПИ) / Орлов, Цилькер - Организация ЭВМ (2004)

.pdf
Скачиваний:
458
Добавлен:
25.04.2015
Размер:
9.6 Mб
Скачать

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

К настоящему моменту известно более двух десятков различных способов реализации идеи предсказания переходов [165,230-232], отличающихся друг от друга исходной информацией, на основании которой делается прогноз, сложностью реализации и, главное, точностью предсказания. При классификации схем предсказания переходов обычно выделяют два подхода: статический и динамический, в зависимости от того, когда и на базе какой информации делается предсказание.

Эффективность большинства из приводимых в учебнике методов предсказания переходов иллюстрируется результатами исследований, опубликованными

в[68,95,107,197,207,228]. Все эксперименты проводились по примерно одинаковой методике: численные показатели получены путем имитации методов предсказания переходов при выполнении наборов стандартных тестовых программ. Главное различие заключалось в выборе тестовых программ, что и нашло отражение

всущественном расхождении полученных оценок.

Так, в работе Смита [197] использовались шесть тестовых программ, написанных на языке Фортран:

-ADVAN: решение системы из трех дифференциальных уравнений в частных производных;

-GIBSON: искусственная программа компиляции набора команд, примерно удов-

летворяющего так называемой смеси Гибсона № 5; '

-SCI2: обращение матрицы;

-SINCOS: преобразование массива координат из полярной системы отсчета

впрямоугольную;

-SORTST: сортировка массива из 10 000 целых чисел;

-TBLINK: работа со связанным списком.

Впрочих исследованиях участвовали программы, входящие в различные версии тестовых пакетов SPEC, в частности пакетов SPEC_92, SPEC_95 и CPU2000.

Последующий материал раздела посвящен рассмотрению различных механизмов предсказания переходов.

Статическое предсказание переходов

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

Известные стратегии статического предсказания для команд УП можно классифицировать следующим образом:

-переход происходит всегда (ПВ);

-переход не происходит никогда (ПН);

-предсказание определяется по результатам профилирования;

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

-предсказание определяется кодом операции команды перехода;

-предсказание зависит от направления перехода;

Япри первом выполнении команды переход имеет место всегда,

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

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

Интуитивное представление, что обе стратегии должны приводить к верному предсказанию в среднем в 50% случаев, на практике не подтверждается. Так, по результатам тестирования (рис. 9.8), приведенным в [197], предсказание об обязательном переходе оказалось правильным в среднем для 76% команд УП.

Точностьпредсказания Рис. в.8. Точностьпредсказания переходов при стратегии «переходпроисходитвсегда-

Аналогичный показатель, полученный наином наборе тестовых программ [150], составил 68%. В работе [228] приводятся результаты проверки стратегии ПВ на тестах CPU2000 отдельнодля программ с интенсивными целочисленными вычислениями и программ с преимущественной обработкой чисел в форме с плавающей запятой. Для первых средняя точность предсказаний составила 55t2%, а для вторых — 59,9%. В других источниках встречаются и иные численные оценки точности прогноза при стратегии ПВ, в частности 60% и 71,9%. В то же время в работе [233] отмечается, что для ряда программ, связанных с целочисленной обработкой, процент правильных предсказаний может опускаться ниже 50%.

Цифры свидетельствуют, что успешность стратегии ПВ существенно зависит от характера программы и методов программирования, что, естественно, можно рассматривать как недостаток. Тем не менее стратегия все же используется в ряде ВМ, в частности MIPS-X, SuperSPARC, микропроцессорах i486 фирмы Intel. Связаноэто,скорее всего, с простотой реализации и с тем, чтодля определенного класса программ стратегию можно считать достаточно эффективной.

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

Стратегия ПН реализована в конвейерах микропроцессоров М68020 и МС88000, вычислительной машине VAX 11/780. Сравнительная оценка стратегий ПВ и ПН, полученная при выполнении тестов CPU2000 для целочисленных и вещественных вычислений [228], показана на рис. 9.9.

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

Рис. 9.9. Сравнение статических стратегий ПВ и ПН

Из диаграммы видно, что ни одна из двух стратегий не обладает явным преимуществом над другой. Тем не менее анализ большого количества программ [154] показывает, что условные переходы имеют место более чем в 50% случаев, поэтому если стоимость реализации двух рассмотренных вариантов одинакова, то предпочтение следует отдать стратегии ПВ.

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

Средняя вероятность правильного предсказания, полученная на программах тестового набора SPEC_92, составила 75%. Стратегия используется в процессорах MIPS 4x00 и PowerPC 603.

Припредсказаниинаосновекодаоперациикомандыпереходадляоднихкоманд предполагается, что переход произойдет, для других — его не случится. Например, для команды перехода по переполнению логично предположить, что перехода не будет. На практике назначение разным видам команд УП наиболее вероятного исхода чаще производится по результатам профилирования программ. В исследованиях Е. Смита [197] стратегия ПВ была назначена командам перехода по условиям: «меньше нуля», «равно», «больше или равно», а ПН — всем прочим командам условного перехода. Результаты показаны на рис. 9.10.

Эффективность предсказания зависит от характера программы. Этим, в частности, объясняется различие в выводах, полученных на основе разных исследований. Так, согласно [154] стратегия приводит к успеху в среднем более чем в 75% случаев, а исследования Е. Смита дают цифру 86,7%,

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

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

Рис. 9.10. Точность предсказания переходов при стратегии «переход зависит от кода операции»

команд, говорят о переходе «назад»-, и для такой команды назначается стратегия ПВ. Переход к адресу, превышающему адрес команды перехода, считается переходом «вперед», и такой команде назначается стратегия ПН. В основе рассматриваемого подхода лежит статистика по множеству программ, согласно которой большинство команд УП в программах используются для организации циклов, причем, как правило, переходы происходят к началу цикла (переходы «назад»). Согласно [120], для команд, выполняющих переход -«назад», фактический переход имеет место в 85% случаев. Для переходов «вперед» эта цифра составляет 65%. Таким образом, для команд условного перехода «назад»- логично принять, что переход происходит всегда. Рассматриваемую стратегию иногда называют «Переход назад происходит всегда». Результаты ее оценки [197] приведены на рис. 9.11.

Рис. 9.11.Точностьпредсказанияпереходовпристратегии «переход зависит от направления перехода»

Здесь при тестировании на пакете SPEC_89 средняя точность предсказания составила 65%. Среди ВМ, где описанная стратегия является основной, можно упомянуть MicroSPARC-2 и РА-7хОО. Чаще, однако,стратегия используется в качестве вторичного механизма в схемах динамического прогнозирования переходов.

В последней из рассматриваемых статических стратегий при первом выполне-

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

будет. Предсказания на последующее выполнение команды зависят от правильности начального предсказания. Стратегию можно считать статической только частично,посколькуонаоднозначноопределяетисходкомандылишьприпервом еевыполнении. Точность прогноза в соответствии с данной стратегией выше, чем у всех предшествующих, что подтверждают результаты, приведенные на рис. 9.12 [197].

К сожалению, при больших объемах программ вариант практически нереализуем из-за того, что нужно отслеживать слишком много команд условного перехода.

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

Точностьпредсказания

Рис.9.12.Точностьпредсказанияпереходовпристратегии«припервомвыполнении переход обязательно происходит»

Динамическое предсказание переходов

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

Идеядинамического предсказания переходов предполагает накопление информации об исходе предшествующих команд УП. История переходов фиксируется в форме таблицы, каждый элемент которой состоит из т битов. Нужный элемент таблицы указывается с помощью k-разрядной двоичной комбинации — шаблона (pattern). Этим объясняется общепринятое название таблицы предыстории переходов — таблицаисториидля шаблонов(PHT, Pattern History Table).

При описании динамических схем предсказания переходов их часто расценивают как один из видов автоматов Мура, при этом содержимое элементов РНТ трактуется как информация, отображающая текущее состояние автомата. В работе [230] рассмотрены различные варианты подобных автоматов, однако реально осмысленно говорить лишь о трех вариантах, которые условно обозначим Al, A2 и A3.

Автомат Al имеет только два состояния, поэтому каждый элемент РНТ состоит из одного бита (m= 1), значение которого отражает исход последнего выполнения команды условного перехода. Диаграмма состояний автомата Al приведена па рис. 9.13.

Рис.0.13.ДиаграммасостоянийавтоматаА1

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

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

Два других автомата предполагают большее число состояний, поэтому в них используются РНТ с многоразрядными элементами. Чаще всего ограничиваются двумя разрядами (т =2) и, соответственно, автоматами c четырьмя состояниями.

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

э

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

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

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

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

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

Интуитивное представление о том, что с увеличением глубины предыстории (увеличением т) точность предсказания должна возрастать, на практике не подтверждается. На рис. 9.15 показаны результаты одного из многочисленных исследований, свидетельствующие, что при т > 3 точность предсказания начинает снижаться.

РазрядностьсчетчикавРНТ Рис. 9.15. Зависимость точности предсказания от разрядности элементов РНТ

График показывает также, что различие в точности предсказания при т = 3 и т - 2 незначительно, что удостоверяют также результаты, приведенные в [197] (рис. 9.16).

Точностьпредсказания

Рис.9.1в.ТочностьпредсказанияприиспользованиивРНТдвухразрядных и трехразрядныхсчетчиков

Как следствие, в большинстве известных процессоров используются двухразрядные счетчики (m= 2). Логика предсказания переходов применительно к двухразрядным счетчикам известна как алгоритм Смита [193]. Алгоритм предполагает четыре состояния счетчика:

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

-01 — перехода не будет (слабое предсказание);

-10 — переход будет (слабое предсказание);

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

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

Рис. 9.17. Диаграмма состояний двухразрядного автомата A3

Логику предсказания можно описать диаграммой состояний двухразрядного автомата A3 (рис. 9.17).

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

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

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

-адрес команды условного перехода;

-регистр глобальной истории;

-регистр локальной истории;

-комбинация предшествующих вариантов.

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

При k-разрядном индексе таблица может содержать 2k элементов.

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

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

Рис. 9.18. Индексирование РНТ с помощью адреса команды перехода

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

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

Рис. 9.19.Индексирование РНТс помощью регистра глобальной истории

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

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

Рис. 9.20. Индексирование РНТ с помощью регистров локальной истории

Как и в схеме с адресом команды перехода, каждый счетчик в РНТ фиксирует историю исхода только одной команды УП, но базируясь на более детальных знаниях, отражающих к тому же и последовательность исходов.

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

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

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

Эффективность предсказания на основе подобного шаблоназависит от соотношения количества разрядов (q и k-q), выбранных от каждого из двух источников. Здесь многое определяется и характером программы. В качестве иллюстрации на рис. 9.22 приведена зависимость точности предсказания от соотношения числа битов, взятых от счетчика команд (СК) и регистра глобальной истории (GHR). Данные получены на тестовой программе xlisp (интерпретатор языка LISP) при объеме РНТ, равном 1024 входам.