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

ЦСРС_1 / Grebeshkov_Tehnika_mikroproz_sistem_v_kommutazii_uchebnik_dlya_vuzov_2011

.pdf
Скачиваний:
133
Добавлен:
05.05.2015
Размер:
4.74 Mб
Скачать

Техника микропроцессорных систем в коммутации

груженной. Для снижения ненагруженных стадий, оптимизации вычислений путѐм обеспечения параллельного исполнения двух и более команд, в современных МПр используются два и более конвейеров (см. рис. 5.2). Эта схема позволяет избежать появления значительного числа ненагруженных стадий, но усложняет конструкцию микропроцессора, и, следовательно, повышает стоимость производства микропроцессора.

Конвейер для работы с целыми числами

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Входное

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выходное

устройство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

устройство

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конвейер для работы с вещественными числами (формат с плавающей точкой)

Рис. 5.2 – Схема обработки данных с двумя конвейерами

В частности, целочисленный конвейер имеет следующие стадии (для архитектуры 80x86 Pentium) – см. рис. 5.3 [34]:

1.Стадия (ступень) предвыборки PF (Prefetch), которая осуществляет предварительную упреждающую выборку группы команд в буфер команд.

2.Ступень декодирования полей команды D1 (Decoder 1).

3.Ступень декодирования D2 (Decoder 2), на которой производится вычисление абсолютного адреса ячейки памяти операнда, если операнд расположен в физической памяти.

4.На ступени исполнения EX (Execution) производится выборка операндов из РОН или памяти, выполнение операции АЛУ.

5.На ступени записи результата WR (Write Back) производится передача полученного результата в блок регистров общего назначения.

331

Техника микропроцессорных систем в коммутации

Ккэш L2

иОЗУ

64 разряда

 

 

Кэш команд

 

 

 

256

 

Блок

 

 

прогнозирования

 

 

разрядов

 

 

 

 

 

 

 

 

ветвлений

 

 

Буфер предвыборки

 

 

 

 

Конвейер АЛУ для

 

 

PF

обработки целых

 

общего

назначения

 

чисел

 

D1

 

 

 

 

 

 

Регистры

 

D2

 

Регистрыобщего назначения

 

связи

WF

 

 

EX

EX

 

 

 

WB

X1

 

 

 

 

X2

 

 

Внутрипроцессорные

 

 

 

 

 

ER

Конвейер АЛУ для

 

 

 

 

 

 

 

 

обработки чисел с

 

 

 

 

плавающей точкой

Кэш данных

Рис. 5.3 –Пример суперскалярной архитектуры

Для конвейера АЛУ с плавающей точкой выполняются следующие действия:

1.На стадии (ступени) EX производится чтение операндов из РОН или чтение кэш-памяти.

2.На стадии X1 – выполняется часть операции АЛУ с плавающей точкой или запись в регистр РОН.

3.На стадии X2 осуществляется продолжение выполнение команд АЛУ с плавающей точкой.

4.На стадии WF производится округление и запись результат в регистр РОН.

5.На стадии ER (Error Reporting) выводится сообщение о наличии ошибок.

Следует обратить внимание на блок прогнозирования ветвлений на рис. 5.3. Этот блок предназначен для формирования адреса перехода в исполняемой программе на основании анализа ранее выполненных команд. В результате предсказанные команды снача-

332

Техника микропроцессорных систем в коммутации

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

Конвейерная организация вычислений имеет следующие недостатки:

возможны простои конвейера из-за наличия команд, которые требуют исполнения в АЛУ или на других ступенях конвейера за несколько тактов;

возможны простои конвейера, если команды на разных стадиях используют одни и те же данные;

возможны простои конвейера из-за аннулирования содержимого конвейера и его повторной загрузки в случае ошибки при предварительном (спекулятивном) выборе направления условного перехода;

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

Компания AMD, в отличие от компании Intel, для решения задач распараллеливания использует в основном аппаратные средства. Рассмотрим особенности суперскалярной архитектуры более подробно.

Суть суперскалярной архитектуры – наличие параллельной обработки данных с помощью двух или более конвейеров, как правило скалярных. Это позволяет оптимизировать загрузку АЛУ, уменьшить потерю производительности, в результате появления пустых/ненагруженных стадий («пузырьков»). Применение суперскалярной архитектуры обусловлено тем, что исходные данные для i-й операции вырабатываются заранее, например, при выполнении (i – 2)-й или (i – 3)-й операции. Тогда при соответствующем построении вычислительной системы можно совместить во времени выполнение i-й операции с выполнением (i – 1)-й, (i – 2)-й, … операций. В современных МПр данные каждого конвейера могут обрабатываться собственным АЛУ. Суперскалярная архитектура может реализовываться аппаратными средствами, когда из кэш-памяти выбираются не-

333

Техника микропроцессорных систем в коммутации

связанные между собой команды и запускаются параллельно. Параллелизм обнаруживается на стадии исполнения программы. Это характерно для МПр Pentium. В целом для микропроцессорных сис-

тем узлов коммутации реальное быстродействие, Vр следует опре-

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

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

 

k

Vр (

zi ) / Tк ,

i

1

где

 

k — число выполненных задач;

zi — число выполненных в i-й задаче команд; Tk — время решения k задач.

К достоинствам суперскалярной архитектуры можно отнести планирование микропроцессором исполнения потока команд, что повышает быстродействие вычислительной системы. В результате за один такт может исполняться от 2 до 5 команд. Недостатком здесь является наличие сложного многостадийного конвейера на кристалле современного МПр, что приводит к уменьшению физического пространства для размещения АЛУ, регистров, кэш-памяти. Поэтому существуют и другие решения для поддержки параллельного исполнения команд МПр.

С 2001 года для явно-параллельного выполнения программ используется микропрограммная архитектура EPIC. Архитектура EPIC первоначально реализована на МПр типа Intel Itanium и Itanium 2. С помощью специального распараллеливающего компилятора (встроенного микропрограммного обеспечения МПр) выполняется анализ программы на предмет команд, которые могут исполняться параллельно. Такие команды далее объединяются в пакеты команд

– длинные командные слова, VLIW длиной до 128 бит. Также используется «ярлык» длиной 3-5 бит, который специфицирует фор-

334

Техника микропроцессорных систем в коммутации

мат длинной команды. Каждая команда такого пакета запускается на исполнение на «свой» конвейер и соответствующее АЛУ, параллельно с другими командами.

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

Микропроцессоры, поддерживающие EPIC, имеют следующие особенности [86]:

большое количество регистров (в случае Itanium2 имеем до 128 РОН, 128 регистров для операций с плавающей точкой, 8 регистров для хранения данных о переходах);

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

предсказание ветвлений или предикация;

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

Под предикацией в данном случае понимается условное выполнение команд. Фактически предикат – это некоторая логическая переменная, принимающая значение «истинно» или «ложно».

Предикация позволяет не применять при исполнении программ переходы по принципу «Если – То – Иначе» (If – Then – Else). Здесь используется конструкция «Если предикат= <истинно> – То», «Если предикат= <ложно> – То». Этот подход позволяет избежать выполнения сложных условных переходов внутри программы и устраняет потери, связанные с ошибочными предсказаниями переходов.

К достоинствам архитектуры EPIC следует отнести возможность большого числа команд, исполняемых за один такт, например 6. За счет применения развитого компилятора упрощается конструкция конвейера (всего 8 стадий), в результате чего физически на кристалле МПр больше места остается для размещения АЛУ и регистров. К недостаткам архитектуры EPIC можно отнести сравнительно долгое время, которое уходит на планирование запуска потока ко-

335

Техника микропроцессорных систем в коммутации

манд. Рассмотрим далее ещѐ ряд технологий повышения производительности микропроцессорных систем.

5.2Технологии оптимизации вычислений микропроцессоров

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

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

A = B x 6 C = E x 12 A = A x D C = C + 1,

где значение переменных А и С хранится в ячейках оперативной памяти, значение переменных В, D и Е – хранится в регистрах процессора.

Рассмотрим два варианта организации вычислений.

В первом варианте вычисления производятся в порядке следования команд.

Во втором варианте порядок следования команд внутри процессора изменяется следующим образом:

A = B x 6 A = A x D

336

Техника микропроцессорных систем в коммутации

C = E x 12

С = С + 1.

Пусть для хранения промежуточных результатов вычислений А и С используется регистр–аккумулятор, Акк. Значение переменной B пусть хранится в регистре микропроцессора B, значение переменной D пусть хранится в регистре микропроцессора D, значение переменной E пусть хранится в регистре микропроцессора E.

Тогда результаты обработки данных по обоим вариантам можно объединить в следующей таблице 5.1.

Таблица 5.1. Организация вычислений в микропроцессоре

№ шага

Без переупорядочивания

С переупорядочиванием

про-

 

 

 

 

 

Операция

Коли-

Операция

Коли-

граммы

 

 

чество

 

чество

по по-

 

 

 

 

 

тактов

 

тактов

рядку

 

 

 

 

 

 

 

 

1.

<Регистр B> x 6

<Ре-

3

<Регистр B> x 6

3

гистр Акк>

 

<Регистр Акк>

 

 

 

 

 

<Регистр Акк cо значени-

 

<Регистр Акк> x <Ре-

 

2.

ем переменной А >

10

гистр D> <Регистр

3

 

<Ячейка ОЗУ>

 

 

Акк>

 

3.

<Регистр Е> x 12

<Ре-

3

<Регистр Акк>

10

гистр Акк>

 

<Ячейка ОЗУ>

 

 

 

 

4.

<Регистр Акк>

<Ячейка

10

<Регистр Е> x 12

3

ОЗУ>

 

<Регистр Акк>

 

 

 

 

 

<Ячейка ОЗУ со значени-

 

<Регистр Акк> = <Ре-

 

5.

ем переменной А>

10

1

гистр Акк+1>

 

<Регистр Акк>

 

 

 

 

 

 

 

 

6.

<Регистр Акк> x <Регистр

3

<Регистр Акк>

10

D> <Регистр Акк>

<Ячейка ОЗУ>

 

 

 

7.

<Регистр Акк>

<ячейка

10

 

 

ОЗУ>

 

 

 

 

 

 

 

 

 

<Ячейка ОЗУ со значени-

 

 

 

8.

ем переменной С >

10

 

 

 

<Регистр Акк>

 

 

Не используется

9.

<Регистр Акк> = <Регистр

1

 

 

Aкк> + 1

 

 

 

 

 

 

 

 

10.

<Регистр Акк>

<Ячейка

10

 

 

ОЗУ>

 

 

 

 

 

 

 

 

Всего:

 

 

70

 

30

Примечание: стрелка вида « » обозначает запись данных

337

Техника микропроцессорных систем в коммутации

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

Для оптимальной загрузки конвейеров дополнительно используются методы, позволяющие с вероятностью до 95% предсказать направление условного перехода в программе. Эта вероятность повышается, если имеется информация о предыдущих переходах. Для реализации данной процедуры применяется блок прогнозирования ветвлений в составе МПр, который использует блок предварительной дешифрации команд. В результате команды загрузки данных из ОЗУ и/или кэш памяти выполняются задолго до команды (инструкции), использующей эти данные. Особенно это относится к командам условного перехода. Дополнительную эффективность рассматриваемому методу может придать использование современных компиляторов, учитывающих поддержку МПр технологии прогнозирования ветвлений (условных переходов). Например, в процессоре Itanium с архитектурой EPIC именно компилятор обеспечивает поиск независимых команд для параллельного исполнения, реализует спекулятивное исполнение команд и спекулятивную загрузку данных. Рассмотрим эти процедуры подробнее.

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

338

Техника микропроцессорных систем в коммутации

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

Различают статическое и динамическое предсказание ветвления в программе. При статическом предсказании направление перехода задаѐтся разработчиком МПр, например все условные переходы «вперед» будут выполняться, а переходы «назад» – не будут. При динамическом предсказании направление ветвления обусловлено результатами предшествующего выполнения команд и может меняться в процессе исполнения программы. Динамическое предсказание более точно и эффективно, хотя и достаточно сложно для реализации.

В динамике управление переходами осуществляется следующими способами:

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

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

339

Техника микропроцессорных систем в коммутации

числений в регистры или в кэш/ОЗУ. Недостатком данного способа является его сложность.

3. Третьим способом динамической обработки ветвлений является предсказание. Самым простым способом предсказания является выбор для выполнения той ветви, которая следует непосредственно за командой перехода (короткий переход). Но в 50% случаев этот выбор будет ошибочным. Наиболее достоверные предсказания выдаются на основе истории процесса вычислений. Для этого используется блок прогнозирования ветвлений. Блок прогнозирования ветвлений хранит таблицу достаточно большого размера, например, 256 строк. В каждой строке таблицы записаны для выполнения части программы:

1.Адрес команды перехода.

2.Адрес дальнего перехода.

3.Бит «истории», который указывает, по какому направлению произошел переход при последнем использовании команды перехода.

В дополнение к буферу предсказания переходов используется буфер упреждающей выборки. Этот буфер обычно содержит от нескольких единиц до нескольких десятков предварительно выбранных команд, чтобы уменьшить негативный эффект от задержек, связанный с длительным циклом обращений к памяти. Одновременно с подачей команд на вход конвейера устройство управления микропроцессором производит в буфере предварительной выборки просмотр вперед выбранных команд. Если при просмотре обнаружена команда перехода, то по таблице «истории» определяется направление перехода. Буфер упреждающей выборки содержит две зоны: для текущей и альтернативной ветви; поэтому переключение с зоны на зону не вызывает простоев. Описанный механизм ветвления позволяет выбирать правильные пути ветвления с вероятностью более 80%. Устройство управления функционирует на основе предположения, что при повторном выполнении одной и той же команды перехода переход будет осуществлен по одному и тому же адресу. В соответствии с этим в буфер упреждающей выборки выбирается ветвь, предписанная битом «истории», если этой ветви в буфере упреждающей выборки еще нет.

340