АрхитектураVLIW / EPIC

Содержание

Слайд 2

Классификация архитектур

Скалярные

С параллелизмом
на уровне команд (ILP)

Суперскалярные

VLIW / EPIC

RISC

CISC

Itanium2
Эльбрус 2000

Alpha
Power, PowerPC
SPARC
MIPS

x86
x86-64

Классификация архитектур Скалярные С параллелизмом на уровне команд (ILP) Суперскалярные VLIW /

Слайд 3

Параллелизм на уровне команд (Instruction Level Parallelism)

ILP-процессоры
Имеют несколько исполнительных устройств
Могут исполнять несколько команд

Параллелизм на уровне команд (Instruction Level Parallelism) ILP-процессоры Имеют несколько исполнительных устройств
одновременно

Суперскалярные процессоры
Процессор сам распределяет ресурсы

VLIW / EPIC-процессоры
Very Long Instruction Word /
Explicitly Parallel Instruction Computing
Компилятор распределяет ресурсы процессора

Слайд 4

Архитектура VLIW / EPIC

VLIW – Very Long Instruction Word
EPIC – Explicitly Parallel

Архитектура VLIW / EPIC VLIW – Very Long Instruction Word EPIC –
Instruction Computing
На входе процессора последовательность больших команд, состоящих из нескольких простых операций, которые могут исполняться параллельно.
Преимущества перед суперскалярами:
Меньше места на процессоре тратится на управление, больше остается на ресурсы: регистры, исполнительные устройства, кэш-память.
Более тщательное планирование дает лучшее заполнение исполнительных устройств (больше команд за такт).
Недостатки:
Долгое время планирования потока команд.
Невозможность учесть динамику исполнения программы.

Слайд 5

Сравнение суперскалярных и VLIW/EPIC-процессоров

Какие задачи управления приходится решать, чтобы процессор работал быстро:
Параллельное

Сравнение суперскалярных и VLIW/EPIC-процессоров Какие задачи управления приходится решать, чтобы процессор работал
исполнение команд
Нужно найти независимые команды
Спекулятивное исполнение команд
Нужно заранее угадать, выполнится ли переход
Спекулятивная загрузка данных
Нужно проверить корректность преждевременной загрузки данных
Размещение данных на регистрах
Нужно оптимально использовать регистры процессора

Слайд 6

Сравнение суперскалярных и VLIW/EPIC-процессоров

Какие задачи управления приходится решать, чтобы процессор работал быстро:
Параллельное

Сравнение суперскалярных и VLIW/EPIC-процессоров Какие задачи управления приходится решать, чтобы процессор работал
исполнение команд
SS: Независимые команды ищет процессор
EPIC: Независимые команды ищет компилятор
Спекулятивное исполнение команд
SS: Процессор автоматически предсказывает переход
EPIC: Компилятор подсказывает процессору как поступить
Спекулятивная загрузка данных
SS: Процессор автоматически проверяет корректность
EPIC: Компилятор использует специальную команду проверки
Размещение данных на регистрах
SS: Процессор автоматически отображает программные регистры на аппаратные и управляет стеком регистров
EPIC: Компилятор размещает данные на аппаратных регистрах и управляет стеком регистров с помощью специальных команд

Слайд 7

Сравнение суперскалярных и VLIW/EPIC-процессоров

Какие задачи управления приходится решать, чтобы процессор работал быстро:
Параллельное

Сравнение суперскалярных и VLIW/EPIC-процессоров Какие задачи управления приходится решать, чтобы процессор работал
исполнение команд
SS: Независимые команды ищет процессор
EPIC: Независимые команды ищет компилятор
Спекулятивное исполнение команд
SS: Процессор автоматически предсказывает переход
EPIC: Компилятор подсказывает процессору
Спекулятивная загрузка данных
SS: Процессор автоматически проверяет корректность
EPIC: Компилятор использует специальную команду проверки
Размещение данных на регистрах
SS: Процессор автоматически отображает программные регистры на аппаратные и управляет стеком регистров
EPIC: Компилятор размещает данные на аппаратных регистрах и управляет стеком регистров с помощью специальных команд

Слайд 8

Сравнение суперскалярных и VLIW/EPIC-процессоров

Какие задачи управления приходится решать, чтобы процессор работал быстро:
Параллельное

Сравнение суперскалярных и VLIW/EPIC-процессоров Какие задачи управления приходится решать, чтобы процессор работал
исполнение команд
SS: Независимые команды ищет процессор
EPIC: Независимые команды ищет компилятор
Спекулятивное исполнение команд
SS: Процессор автоматически предсказывает переход
EPIC: Компилятор подсказывает процессору
Спекулятивная загрузка данных
SS: Процессор автоматически проверяет корректность
EPIC: Компилятор использует специальную команду проверки
Размещение данных на регистрах
SS: Процессор автоматически отображает программные регистры на аппаратные и управляет стеком регистров
EPIC: Компилятор размещает данные на аппаратных регистрах и управляет стеком регистров с помощью специальных команд

Слайд 9

Сравнение суперскалярных и VLIW/EPIC-процессоров

Сравнение суперскалярных и VLIW/EPIC-процессоров

Слайд 10

Предсказание ветвлений

Выборка

Декодирование в RISC

Переименование регистров

Переупорядочение и распараллеливание

Исполнение

Завершение

CISC

RISC

VLIW

Этапы обработки команды

Сравнение конвейеров

Предсказание ветвлений Выборка Декодирование в RISC Переименование регистров Переупорядочение и распараллеливание Исполнение

Слайд 11

Архитектура VLIW / EPIC

История
M-10 (1972)
Cydrome (1984-1988)
Cydra-5
256 bit VLIW (7 ops.), reg. rotation.,

Архитектура VLIW / EPIC История M-10 (1972) Cydrome (1984-1988) Cydra-5 256 bit
sw. pipeline
МВК Эльбрус 3 (1986-1994)
NXP Semiconductors
TriMedia (1987, 1997, …)
VLIW / DSP, 5-8 ops., 256x128 bit regs, 45 FUs
Texas Instruments
C6000
VLIW / DSP

Слайд 12

Архитектура Itanium

Архитектура Itanium

Слайд 13

Семейство процессоров Itanium

2001

2002

2003

2006

Itanium
(Merced)
800 MHz
4 MB L3 cache
180 nm

Itanium2
(McKinley)
1 GHz
3 MB L3 cache
180

Семейство процессоров Itanium 2001 2002 2003 2006 Itanium (Merced) 800 MHz 4
nm

Itanium2
(Madison)
1.5 GHz
6 MB L3 cache
130 nm

Itanium2
(Montecito)
1.66 GHz
2×12 MB L3 cache
2 cores
HyperThreading
90 nm

Itanium
(Tukwila)
1.73 GHz
24 MB L3 cache
4 cores
HyperThreading
65 nm

2010

Слайд 14

Itanium: планы и реальность

Itanium: планы и реальность

Слайд 15

Архитектура Itanium (IA-64)

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

Архитектура Itanium (IA-64) Явный ILP (параллелизм на уровне команд) Компилятор объединяет команды
связки, которые могут быть выполнены параллельно,
Процессор обеспечивает большое число ресурсов для реализации ILP.
Способы увеличения ILP
Явная спекуляция по данным и управлению
(уменьшает задержки по памяти),
Предикатное исполнение команд (устраняет ветвления),
Аппаратная поддержка программной конвейеризации циклов,
Предсказание ветвлений.
Специальные способы увеличения производительности программ
Специальная поддержка модульности программ
(регистровый стек, вращающиеся регистры),
Высокопроизводительная вещественная арифметика,
Специальные векторные инструкции.

Слайд 16

Особенности процессоров архитектуры Itanium (IA-64)

Простой широкий конвейер
Много команд за такт (до 6)
Большие

Особенности процессоров архитектуры Itanium (IA-64) Простой широкий конвейер Много команд за такт
вычислительные ресурсы
Много исполнительных устройств (11)
Большой объем (до 12 MB) кэш-памяти
Большое число регистров (264)

Слайд 18

Регистры IA-64

Регистры IA-64

Слайд 19

Регистры IA-64

128 целочисленных регистра
64 бита + 1 бит NAT
r0 = 0
целочисленные скалярные

Регистры IA-64 128 целочисленных регистра 64 бита + 1 бит NAT r0
и векторные данные (1,2,4,8 байт)
128 вещественных регистра
82 бита (17 + 64 + 1)
f0 = 0.0, f1 = 1.0
вещественные скалярные и векторные данные (82, 2х32 бита)
64 предикатных регистра
1 бит
p0 = 1
указания, выполнять ли команду
8 регистров ветвлений
64 бита
адреса перехода
128 прикладных регистра
Instruction Pointer

Слайд 20

Вращение регистров

Верхние 75% регистров вращающиеся:
целочисленные: r32 – r127
вещественные: f32 – f127
предикатные: p16

Вращение регистров Верхние 75% регистров вращающиеся: целочисленные: r32 – r127 вещественные: f32
– p63
При выполнении специальной команды перехода (в цикле) вращающиеся регистры сдвигаются вправо на один:
Используется при программной конвейеризации циклов.

Слайд 21

Стек регистров

При вызове подпрограмм и возврате происходит сдвиг регистрового окна – целочисленные

Стек регистров При вызове подпрограмм и возврате происходит сдвиг регистрового окна –
регистры работают как стек.
Для автоматического сохранения/восстановления регистров в памяти при «переполнении/переизбытке» стека работает аппаратура RSE (Register Stack Engine). Она приостанавливает выполнение команд, ждущих соответствующие регистры.

Слайд 22

Иерархия кэш-памяти Itanium2

Иерархия кэш-памяти Itanium2

Слайд 23

Виртуальная память в IA-64

64-битное виртуальное адресное пространство
Размер страницы: 4 KB – 4

Виртуальная память в IA-64 64-битное виртуальное адресное пространство Размер страницы: 4 KB
GB
32 entry L1d TLB (4KB), 128 entry Data TLB (4KB-4GB)
Схема преобразования виртуального адреса в физический:

Слайд 24

Конвейер Itanium2

Короткий 8-стадийный конвейер
Полностью детерминированный путь команд
Упорядоченная выборка команд, неупорядоченное завершение
Рассчитан на

Конвейер Itanium2 Короткий 8-стадийный конвейер Полностью детерминированный путь команд Упорядоченная выборка команд,
малые задержки при чтении данных!

Слайд 25

Исполнительные устройства

Число операций за такт

Исполнительные устройства Число операций за такт

Слайд 26

Сравнение Itanium2 и Opteron

Сравнение Itanium2 и Opteron

Слайд 27

Itanium2 Montecito (2006)

Montecito: 2 ядра по 2 потока (HyperThreading)

Itanium2 Montecito (2006) Montecito: 2 ядра по 2 потока (HyperThreading)

Слайд 28

Команды IA-64

Команды IA-64 имеют RISC-подобный фиксированный формат:
Пример команды: (p3) add r1 = r3,

Команды IA-64 Команды IA-64 имеют RISC-подобный фиксированный формат: Пример команды: (p3) add
r4
Команды IA-64 объединяются в связки по три:

Слайд 29

Команды IA-64
Связка содержит 3 команды, поле шаблона и стоп-биты.
Шаблон указывает типы команд

Команды IA-64 Связка содержит 3 команды, поле шаблона и стоп-биты. Шаблон указывает
в связке. Он определяет, какие исполнительные устройства будут задействованы при исполнении.
Типы команд: Устройство:
M – memory / move M
I – complex integer / multimedia I
A – simple integer / logic / multimedia I или M
F – floating point (normal / SIMD) F
B – branch B
L+X – extended I / B
Стоп-биты определяют, после каких команд должен быть переход на следующий такт.

Слайд 30

Команды IA-64

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

Команды IA-64 Всего возможно 24 различных шаблона: Процессор загружает максимум по 2
сочетания шаблонов в связках могут полностью загрузить исполнительные устройства:

Слайд 31

Команды IA-64

Логические (and, …)
Арифметические (add, …)
Команды сравнения (cmp, …)
Команды сдвига (shl, …)
SIMD

Команды IA-64 Логические (and, …) Арифметические (add, …) Команды сравнения (cmp, …)
целочисленные (pmpy, …)
Команды ветвлений (br, …)
Команды управления циклом (br.cloop, …)
Вещественные (fma, …)
SIMD вещественные (fpma, …)
Команды чтения / записи данных в памяти (ld, ...)
Команды присваивания (mov, …)
Команды управления кэшированием (lfetch, …)

Слайд 32

Особенности целочисленной арифметики в Itanium2

До 6 операций за такт
Операция fma (y=a*b+c) выполняется

Особенности целочисленной арифметики в Itanium2 До 6 операций за такт Операция fma
на регистрах FR
Реализованы некоторые операции над некоторыми векторами (1B, 2B, 4B)
Целочисленное деление реализуется программно
Пример деления 32-битных целых чисел:

Слайд 33

Особенности вещественной арифметики в Itanium2

Максимальная производительность
2 за такт: двойная точность
4 за такт:

Особенности вещественной арифметики в Itanium2 Максимальная производительность 2 за такт: двойная точность
одинарная точность (SIMD)
Основная операция
fma: f = a * b + c (4 такта)
Быстрое преобразование значений между целыми и вещественными регистрами
FP ? INT (getf): 5 тактов
INT ? FP (setf): 6 тактов
Операции деления (вещественного и целочисленного) и взятия квадратного корня реализованы программно

Слайд 34

Особенности вещественной арифметики в Itanium2

Вещественное деление (32-bit float)
Вычисление корня (32-bit float)

Особенности вещественной арифметики в Itanium2 Вещественное деление (32-bit float) Вычисление корня (32-bit float)

Слайд 35

Предсказание ветвлений в Itanium2

BHT – таблица истории ветвлений
Адрес перехода и информация о

Предсказание ветвлений в Itanium2 BHT – таблица истории ветвлений Адрес перехода и
предсказании в кэше L1i
Таблица на 12K 4-битных историй
Pattern History Table
Таблица на 16K 2-битных счетчиков
RSB – Буфер стека возврата
8 элементов
Предсказание косвенных переходов
Использует 8 регистров ветвлений, подсказки компилятора
Механизм предсказания выхода из циклов
Использует специальные счетчики

Слайд 36

Предвыборка инструкций в Itanium2

Автоматическая предвыборка следующей кэш-строки в кэш команд L1, если

Предвыборка инструкций в Itanium2 Автоматическая предвыборка следующей кэш-строки в кэш команд L1,
она содержится в кэше L2.
Подсказка компилятора в команде перехода:
br.few

br.many

Подсказка компилятора:
brp.few

brp.many

Move address to Branch Register

Слайд 37

Фрагмент кода на ассемблере для IA-64

Синтаксис инструкций:

Фрагмент кода на ассемблере для IA-64 Синтаксис инструкций:

Слайд 38

Средства повышения производительности в IA-64

Предикатное исполнение команд
Аппаратные счетчики циклов
Спекуляция по данным и

Средства повышения производительности в IA-64 Предикатное исполнение команд Аппаратные счетчики циклов Спекуляция
управлению
Регистровый стек, RSE
Аппаратная поддержка программной конвейеризации циклов
Intel Itanium Architecture Overview, p.40

Слайд 39

Предикатное исполнение команд

Позволяет зависимости по управлению (т.е. условные переходы) преобразовать в зависимости

Предикатное исполнение команд Позволяет зависимости по управлению (т.е. условные переходы) преобразовать в
по данным.
Пример: if (a==b) y=4; else y=3;

Слайд 40

Аппаратные счетчики циклов

Архитектурная поддержка циклов
По специальной команде перехода счетчики автоматически уменьшаются и

Аппаратные счетчики циклов Архитектурная поддержка циклов По специальной команде перехода счетчики автоматически
делается проверка на выход из цикла
Можно не задействовать регистры общего назначения.
Пример:
mov ar.lc = 10 ;;
Label:
… тело цикла …
br.cloop.sptk Label

Слайд 41

Спекуляция по управлению

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

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

Слайд 42

Спекуляция по данным

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

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

Слайд 43

Программная конвейеризация цикла

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

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

Слайд 51

Процессоры Itanium 9300 (Tukwila)

Особенности нового Itanium-а
Частота: до 1.73 GHz
Режим Turbo boost: до

Процессоры Itanium 9300 (Tukwila) Особенности нового Itanium-а Частота: до 1.73 GHz Режим
1.86 GHz
4 ядра
Hyperthreading – 2 потока на ядро
Интегрированный контроллер памяти
Шина QPI – Quick Path Interconnect
Первый в мире процессор, содержащий более 2 млрд. транзисторов

Слайд 52

Процессоры Transmeta

Процессоры Transmeta

Слайд 53

Процессоры Transmeta

Особенности архитектуры
Архитектура VLIW
Динамическая трансляция кода: x86 ? VLIW
Интегрированный северный мост
Ориентация на

Процессоры Transmeta Особенности архитектуры Архитектура VLIW Динамическая трансляция кода: x86 ? VLIW
низкое энергопотребление
Процессоры
Crusoe (2000) 1.0 GHz
Efficion (2003) 1.7 GHz

Слайд 54

Динамическая двоичная компиляция

Технология Code Morphing
Преобразование команд x86 в команды VLIW
Хранение транслированного кода

Динамическая двоичная компиляция Технология Code Morphing Преобразование команд x86 в команды VLIW
в специальной области памяти (32 MB)
Динамическая оптимизация VLIW-кода

Слайд 55

Динамическая двоичная компиляция

Технология Code Morphing
Преобразование команд x86 в команды VLIW
Хранение транслированного кода

Динамическая двоичная компиляция Технология Code Morphing Преобразование команд x86 в команды VLIW
в специальной области памяти (32 MB)
Динамическая оптимизация VLIW-кода

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

Слайд 56

Динамическая двоичная компиляция

Технология Code Morphing
Преобразование команд x86 в команды VLIW
Хранение транслированного кода

Динамическая двоичная компиляция Технология Code Morphing Преобразование команд x86 в команды VLIW
в специальной области памяти (32 MB)
Динамическая оптимизация VLIW-кода

Слайд 57

Динамическая двоичная компиляция

Технология Code Morphing
Преобразование команд x86 в команды VLIW
Хранение транслированного кода

Динамическая двоичная компиляция Технология Code Morphing Преобразование команд x86 в команды VLIW
в специальной области памяти (32 MB)
Динамическая оптимизация VLIW-кода

Слайд 58

Динамическая двоичная компиляция

Технология Code Morphing
Преобразование команд x86 в команды VLIW
Хранение транслированного кода

Динамическая двоичная компиляция Технология Code Morphing Преобразование команд x86 в команды VLIW
в специальной области памяти (32 MB)
Динамическая оптимизация VLIW-кода

Слайд 59

Динамическая двоичная компиляция

Технология Code Morphing
Преобразование команд x86 в команды VLIW
Хранение транслированного кода

Динамическая двоичная компиляция Технология Code Morphing Преобразование команд x86 в команды VLIW
в специальной области памяти (32 MB)
Динамическая оптимизация VLIW-кода

Слайд 60

Процессор Transmeta Efficion

Особенности
Ширина командного слова 256 бит (8 команд)
Кэш L1: 64 data

Процессор Transmeta Efficion Особенности Ширина командного слова 256 бит (8 команд) Кэш
/ 128 KB code
Кэш L2: 1 MB
Интегрированный северный мост
Контроллер памяти DDR
Шина AGP
Шина HyperTransport
Технология энергосбережения LongRun

Слайд 61

Процессор Transmeta Efficion

Стадии конвейера

Процессор Transmeta Efficion Стадии конвейера

Слайд 62

Процессор Transmeta Efficion

Структура команды
Исполнительные устройства

Отображение регистров

Процессор Transmeta Efficion Структура команды Исполнительные устройства Отображение регистров

Слайд 63

Архитектура Эльбрус 2000

Бабаян
Борис Арташесович
чл.корр. РАН
Intel Fellow

Архитектура Эльбрус 2000 Бабаян Борис Арташесович чл.корр. РАН Intel Fellow

Слайд 64

Эльбрус 2000

ELBRUS – ExpLicit Basic Resources Utilization Scheduling
(явное планирование использования основных ресурсов)
Особенности

Эльбрус 2000 ELBRUS – ExpLicit Basic Resources Utilization Scheduling (явное планирование использования
архитектуры E2K
Архитектура VLIW переменной длины
Двоичная трансляция кода: x86 ? VLIW
Аппаратная поддержка типов данных
Реализации
МВК Эльбрус 3 (1986-1994)
Эльбрус 3М (2005) 300 MHz

Слайд 65

Процессор Эльбрус

Характеристики
Командное слово переменной длины (2 – 16 слогов)
До 23 операций за

Процессор Эльбрус Характеристики Командное слово переменной длины (2 – 16 слогов) До
такт
Конвейер
Целочисленный: 8 тактов
Чтение/запись: 9 тактов
Двоичная трансляция команд
Аппаратная поддержка типов данных
Разрядность данных
Целые: 32, 64
Вещественные: 32, 64, 80
Кэш-память
данных L1: 64 KB
кода L1: 64 KB
L2: 256 KB

Слайд 66

Процессор Эльбрус

Формат команды:
Число слогов: 2 – 16
Типы слогов (максимальное число в команде)
Заголовок

Процессор Эльбрус Формат команды: Число слогов: 2 – 16 Типы слогов (максимальное
(1)
Операции АЛУ (6)
Управление подготовкой перехода (3)
Дополнительные операции АЛУ при зацеплении (2)
Загрузка из буфера предварительной выборки массивов в регистр (4)
Литеральные константы для ФУ (4)
Логические операции с предикатами (3)
Предикаты и маски для управления ФУ (3)
До 6 предикатов в команде
Регистры
Общего назначения: 256 (64 бита): целочисл. и веществ.
Механизм переключения окон
32 предикатных регистра (1 бит)

Слайд 67

Процессор Эльбрус

ALU0...ALU5 – арифметико-логические устройства;
APU – устройство предварительной подкачки массивов;
APB

Процессор Эльбрус ALU0...ALU5 – арифметико-логические устройства; APU – устройство предварительной подкачки массивов;
– буфер предварительной подкачки массивов;
Bypass – обходные каналы;
CU – устройство управления;
PF – предикатный файл;
IB – буфер команд;
D$L1 – кэш данных 1-го уровня;
D$L2 – кэш данных 2-го уровня;
MAU – устройств организации доступа в оперативную память;
MMU – устройство организации виртуальной памяти.

Слайд 68

Процессор Эльбрус

Динамическая трансляция кода

Процессор Эльбрус Динамическая трансляция кода
Имя файла: АрхитектураVLIW-/-EPIC.pptx
Количество просмотров: 469
Количество скачиваний: 1