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

os2016-24-03-dist

.pdf
Скачиваний:
11
Добавлен:
21.03.2016
Размер:
4.98 Mб
Скачать

Конфликты управления

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

Иначе PC может быть неверным, когда потребуется на ступени IF.

Врассматриваемом конвейере MIPS, условный переход определится на

ступени 4 (MEM), приводя к трем тактам простоя, как показано ниже:

Branch instruction

IF

ID EX

MEM

WB

 

 

 

 

Branch successor

 

 

stall stall

stall

IF ID

EX

MEM

WB

 

Branch successor + 1

 

 

 

 

IF

ID

EX

MEM WB

Branch successor + 2

 

 

 

 

 

IF

ID

EX

MEM

Branch successor + 3

 

 

 

 

 

 

 

IF

ID

 

 

 

 

 

 

 

 

 

 

3 такта простоя =

 

 

Здесь известен корректный PC

 

 

 

= потери из-за перехода

 

 

(конец ступени/такта MEM)

 

 

 

 

 

 

 

 

 

 

Предположим, что мы останавливаем или сбрасываем конвейер при инструкции перехода,

тогда в рассматриваемом конвейере MIPS, тратится впустую три такта для каждого перехода

Потери из-за перехода = номер ступени, когда переход определится - 1 здесь потери = 4 - 1 = 3 такта

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

41 из 66

 

энергопотребление

 

Конвейерная обработка данных и использование параллелизма уровня инструкций(ILP)

Параллелизм уровня инструкций (ILP) существует, когда инструкции в последовательности независимы и поэтому могут исполняться в конвейере параллельно (с перекрытием).

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

Программы, обладающие большим ILP (меньше зависимостей) обычно показывают лучшую производительность на CPU с конвейером

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

42 из 66

 

энергопотребление

 

Пример статического планирования инструкций компилятором

Для последовательности кода: a = b + c

d = e - f

a, b, c, d ,e, и f

находятся в памяти

Считая, что загрузки занимают один такт, следующий код (планирование конвейера компилятором) исключает простои:

Исходный код с простоями:

Перепланированный код без простоев:

 

LD

Rb,b

LD

Rb,b

простой

LD

Rc,c

LD

Rc,c

DADD

Ra,Rb,Rc

LD

Re,e

 

SD

Ra,a

DADD

Ra,Rb,Rc

 

LD

Re,e

LD

Rf,f

простой

LD

Rf,f

SD

Ra,a

DSUB

Rd,Re,Rf

 

 

 

DSUB

Rd,Re,Rf

 

SD

Rd,d

SD

Rd,d

2 простоя в исходном коде

Предполагается, что конвейер поддерживает пересылку

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

43 из 66

 

энергопотребление

 

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

Статическое предсказание переходов кодируется в инструкциях перехода используя один бит предсказания:

0 = не происходит, 1 = происходит

Требует поддержки ISA

Существует два основных метода для статического предсказания переходов во время компиляции:

Сбор информации о поведении программы при ее запусках и использование при перекомпиляции (профилирование).

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

Эвристическое предсказание переходов на основе направления перехода, помечая переходы назад как происходящие и переходы вперед как не происходящие

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

44 из 66

 

энергопотребление

 

Стандартные подходы и механизмы для повышения ILP

Статическое планирование (компилятор)

(Очень) длинное командное слово (V)LIW

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

Динамическое планирование (CPU)

Динамическое предсказание переходов в CPU и спекулятивное выполнение

SMT (Simultaneous Multi-Threading)

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

45 из 66

 

энергопотребление

 

Intel 80486

Intel 80486DX (1989)

Тактовая частота – 25 (50) МГц

Производительность – 20 (41) MIPS

Количество транзисторов – 1,185 млн.

Площадь кристалла – 81 (67) кв.мм

Техпроцесс – 1 (0,8) мкм

Длина конвейера – 5

Встроенный математический сопроцессор

Производительность – ~1,44 MFLOPS

Кеш

L1: 8 Кбайт

L2: на материнской плате

4-канальная наборно-ассоциативная архитектура

Тепловыделение 4,73 Вт

Желательно внешнее охлаждение

Рисунок: http://people.apache.org/~xli/presentations/history_Intel_CPU.pdf

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

46 из 66

 

энергопотребление

 

http://commons.wikimedia.org/wiki/File:80486DX2_arch.png?uselang=ru

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

47 из 66

 

энергопотребление

 

Intel Pentium

Intel Pentium (1993)

Тактовая частота – 60 (233) МГц

Производительность – 120 (400) MIPS

Количество транзисторов – 3,1 (3,3) млн.

Площадь кристалла – 294 (90 и 83) кв.мм

Техпроцесс – 0,8 (0,35) мкм

Длина конвейера – 5

Суперскалярная архитектура

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

Встроенный математический сопроцессор

Производительность – ~1,44 MFLOPS

Кеш

L1: 16 Кбайт (8 Kb Data + 8 Kb Code)

L2: на материнской плате 1 Мбайт

4-канальная наборно-ассоциативная архитектура

Тепловыделение 8 (15) Вт

Требуется внешнее охлаждение

Рисунок: http://commons.wikimedia.org/wiki/File:Pentium-60-front.jpg?uselang=ru

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

48 из 66

 

энергопотребление

 

http://bitsavers.informatik.uni-stuttgart.de/pdf/intel/pentium/1993_Intel_Pentium_Processor_Users_Manual_Volume_1.pdf

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

49 из 66

 

энергопотребление

 

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

Предположение о направлении перехода основывается на истории переходов

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

Хранит результаты для M последних использованных инструкций перехода

Для каждой хранятся последние N переходов

Sandy Bridge использует 32-битный регистр для хранения истории переходов

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

Процессор загружает на конвейер инструкции из предсказанной ветки перехода, в случае неверного предсказания результат их исполнения не используется

 

Архитектура Intel от i386 до Xeon Phi:

 

Нижний Новгород 2014

процессоры, производительность,

50 из 66

 

энергопотребление

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]