Введение в параллельную обработку
Уровни параллелизма в процессорах Параллелизм данных (DLP – Data Level Parallelism) Параллелизм команд (ILP – Instruction Level Parallelism) Параллелизм потоков (TLP – Thread Level Parallelism) Многоядерность
Архитектуры с параллелизмом на уровне данных DLP –Data Level Parallelism
Параллелизм данных Векторные вычисления (SIMD) Единообразная обработка массивов данных
Параллелизм данных Векторно-конвейерные процессоры –Cray –Fujitsu VX/VP –NEC SX Векторные расширения –x86: MMX, 3DNow!, SSE, SSE2, … –PowerPC: AltiVec Перспективные векторные процессоры –STI Cell –Intel Larabee
Особенности векторно- конвейерных процессоров Большое число векторных регистров большого размера Множество различных конвейеров –Конвейер декодирования –Конвейер работы с памятью –Исполнительные конвейеры –… Конвейеры не прерываются, как при скалярном исполнении Сцепление конвейеров: Y = A * B + X C i = A i * B i Y i = C i + X i
Векторно-конвейерный процессор NEC SX-9 8 векторных конвейера По элементных векторных регистра Частота 3.2 GHz Производительность: более 100 GFLOPS Скалярный процессор 64-битный 4 команды/такт Частота 1.6 GHz
Векторные расширения скалярных архитектур Небольшая длина вектора: 64 B, 128 B Небольшое число векторных регистров: 8 – 32 Способы реализации –Векторные операции на скалярных регистрах MMX, 3DNow! Itanium –Разбиение на несколько скалярных операций (μops) SSE, SSE2 на P6, P7 –Исполнение на специальных векторных устройствах SSE, SSE2, … на Core2, Phenom
Перспективные векторные процессоры STI Cell 1 ядро общего назначения (PowerPC) 8 векторных ядер 128 векторных регистра Длина вектора 16 байт Intel Larabee (CPU+GPU) 8 – 48 ядер x86-подобной архитектуры Векторное расширение Длина вектора 64 байта
Архитектуры с параллелизмом на уровне команд ILP – Instruction Level Parallelism
Классификация архитектур Скалярные С параллелизмом на уровне команд (ILP) СуперскалярныеVLIW / EPIC RISCCISC Itanium2 Эльбрус 2000 Alpha Power, PowerPC SPARC MIPS x86 x86-64
ILP-архитектуры ILP-процессоры Имеют несколько исполнительных устройств Исполняют несколько команд одновременно Классификация ILP-архитектур Суперскалярные –Процессор ищет независимые команды и планирует поток вычислений VLIW / EPIC (Very Long Instruction Word / Explicitly Parallel Instruction Computing) –Компилятор ищет независимые команды и планирует поток вычислений
ILP-архитектуры СуперскалярнаяVLIW / EPIC
Способы повышения производительности Повышение темпа исполнения команд требует повышения темпа их доставки. Средства: –Спекулятивное исполнение команд SS: автоматический выбор способа предсказания перехода EPIC: способ предсказания перехода задает компилятор –Спекулятивная загрузка данных SS: проверка корректности автоматическая EPIC: проверка корректности по спец. команде –Разрешение ложных зависимостей по данным SS: переименование регистров EPIC: компилятор не допускает ненужных зависимостей –Оптимизация вызовов подпрограмм SS: регистровый стек управляется процессоров автоматически EPIC: регистровый стек управляется компилятором
Сравнение ILP-архитектур Суперскалярные Сложный конвейер Простой компилятор Меньше ресурсов процессора –Регистры –Исп. устройства –Кэш Меньше команд за такт: 3, 4, 5 (50%)
Архитектура суперскалярных процессоров
Суперскалярные процессоры реализуют динамическое исполнение команд –это средства, которые процессор использует динамически (в ходе исполнения) для увеличении темпа обработки команд: Предсказание переходов Переименование регистров Параллельное исполнение команд Исполнение команд вне порядка
Конвейер процессора Front-end Блок предварительной обработки Back-end Блок завершения Execution core Исполнительное ядро
Схема суперскалярного процессора
Процессор PowerPC 970FX
Конвейер процессора с внеочередным исполнением команд In-Order Front-end Блок упорядоченной предварительной обработки In-Order Back-end Блок порядоченного завершения Out-of-Order Execution core Исполнение вне порядка
Схема суперскалярного процессора с переупорядочением команд
Буфер переупорядочения команд Каждая микрооперация проходит через следующие стадии : 1.Находится в очереди планировщика, но ещё не готова к исполнению 2.Готова к исполнению (все аргументы операции вычислены) 3.Запущена на исполнение (диспетчеризована) 4.Исполнена и ждёт отставки либо отмены спекулятивной ветви 5.Находится в процессе отставки
Оценки производительности для различных архитектур