Обзор современных процессорных архитектур Начало: Архитектура фон Неймана Принцип программного управления Принцип однородности памяти Принцип адресуемости памяти Улучшения архитектуры фон Неймана Иерархия памяти Параллелизм на уровне команд конвейер, суперскаляр / VLIW, SIMD Исполнение команд вне порядка Повышение частоты Рост длины конвейера RISC (microOps в CISC) … Улучшения архитектуры фон Неймана Иерархия памяти Параллелизм на уровне команд конвейер, суперскаляр / VLIW, SIMD Исполнение команд вне порядка Повышение частоты Рост длины конвейера RISC (microOps в CISC) … В результате имеем… Очень Сложное Ядро Предел: 4 - 6 RISC-инструкций за такт Очень Сложное Ядро Как программировать? Просто… Правильно использовать память Обработка данных блоками Последовательный обход Кэш-буксование Правильно сформировать последовательность команд Компилятор справится… Векторизовать И появились проблемы: Power Wall – барьер мощности Memory Wall – барьер памяти Память медленнее процессоров Frequency Wall – барьер частоты Процессоры греются Транзисторы маленькие, процессоры большие Complexity Wall – барьер сложности Процессоры больше управляют вычислениями, чем вычисляют И появились проблемы: Power Wall – барьер мощности Memory Wall – барьер памяти Память медленнее процессоров Frequency Wall – барьер частоты Процессоры греются Транзисторы маленькие, процессоры большие Complexity Wall – барьер сложности Процессоры больше управляют вычислениями, чем вычисляют И появились проблемы: Power Wall – барьер мощности Memory Wall – барьер памяти Память медленнее процессоров Frequency Wall – барьер частоты Процессоры греются Транзисторы маленькие, процессоры большие Complexity Wall – барьер сложности Процессоры больше управляют вычислениями, чем вычисляют Усложнять и разгонять дальше некуда! Решение проблем: Многопоточность, Многоядерность Решение проблем: Многопоточность, Многоядерность Intel Xeon X7460 2.66 GHz Intel Xeon i7 975 XE 3.33 GHz 6 ядер AMD Phenom X4 955 3.2 GHz 4 ядра, 2 потока на ядро AMD Opteron 8435 2.6 GHz 6 ядер 4 ядра IBM POWER6 5.0 GHz 2 ядра, 2 потока на ядро Решение проблем: Многопоточность, Многоядерность Intel Xeon X7460 2.66 GHz 6 ядер Intel Xeon i7 975 XE 3.33 GHz 4 ядра, 2 потока на ядро L3: 16 MB L2 L2 L2 0 1 2 3 4 5 AMD Opteron 8435 2.6 GHz AMD Phenom X4 955 3.2 GHz 6 ядер 4 ядра IBM POWER6 5.0 GHz 2 ядра, 2 потока на ядро L3: 8 MB L2 L2 L2 L2 0 1 2 3 Решение проблем: Многопоточность, Многоядерность Intel Xeon X7460 2.66 GHz 6 ядер Intel Xeon i7 975 XE 3.33 GHz 4 ядра, 2 потока на ядро L3: 6 MB L2 L2 L2 L2 L2 L2 0 1 2 3 4 5 AMD Opteron 8435 2.6 GHz AMD Phenom X4 955 3.2 GHz 6 ядер 4 ядра IBM POWER6 5.0 GHz 2 ядра, 2 потока на ядро L3: 6 MB L2 L2 L2 L2 0 1 2 3 Решение проблем: Многопоточность, Многоядерность Intel Xeon X7460 2.66 GHz Intel Xeon i7 975 XE 3.33 GHz 6 ядер AMD Phenom X4 955 3.2 GHz 4 ядра, 2 потока на ядро AMD Opteron 8435 2.6 GHz 6 ядер 4 ядра IBM POWER6 5.0 GHz 2 ядра, 2 потока на ядро L3: 32 MB L2: 4MB L2: 4MB 0 1 Решение проблем: Многопоточность, Многоядерность Как программировать? Можно просто запустить много задач… Решение проблем: Многопоточность, Многоядерность Как программировать одну задачу? Параллельное программирование с общей памятью Процесс Задачи: • Совместное использование данных и ресурсов потоками • Синхронизация потоков Решение проблем: Многопоточность, Многоядерность Как программировать одну задачу? Параллельное программирование с общей памятью Процесс Задачи: • Совместное использование данных и ресурсов потоками • Синхронизация потоков Больше потоков – больше нагрузка на память! Решение проблем: Контроллер памяти на чипе Core2 0 1 Core2 2 L2 3 L2 0 1 2 L2 L3 Core2 i7 3 L2 L3 Северный мост Память Память 0 1 2 Core2 i7 3 0 1 2 3 L2 L2 L2 L2 L2 L2 L2 L2 L3 L3 Контроллер памяти Контроллер памяти Память Память Решение проблем: Контроллер памяти на чипе Core2 0 1 Core2 2 L2 3 L2 0 1 2 L2 L3 Core2 i7 3 L2 L3 Северный мост Память 0 1 2 Core2 i7 3 0 1 2 3 L2 L2 L2 L2 L2 L2 L2 L2 L3 L3 Контроллер памяти Контроллер памяти Память Память Память Просто все работает быстрее! Решение проблем: Специализация ядер Процессор Cell PPE – ядро общего назначения SPE – векторные ядра EIB – быстрая асинхронная шина Решение проблем: Специализация ядер Процессор Cell – как программировать? Разбить задачу на подзадачи для вычисления на ядрах SPE Организовать передачу данных между ядрами одновременно с вычислениями Векторизовать вычисления на ядрах SPE Решение проблем: Специализация ядер Процессор Cell – как программировать? Разбить задачу на подзадачи для вычисления на ядрах SPE Организовать передачу данных между ядрами одновременно с вычислениями Векторизовать вычисления на ядрах SPE Сложно? Решение проблем: Специализация ядер Процессор Cell – как программировать? Есть средства для автоматизации создания потоковых программ и программ с массовым параллелизмом. Решение проблем: Специализация ядер Roadrunner на базе Opteron и Cell самый мощный суперкомпьютер Решение проблем: Специализация ядер Roadrunner на базе Opteron и Cell Почти самый «зеленый» суперкомпьютер Решение проблем: Специализация ядер А почему только ядер?... Есть и другие специальные вычислители… Решение проблем: Графические ускорители GPGPU – General-Purpose computing on Graphics Processing Units Расширение возможностей графического конвейера для решения вычислительных задач общего назначения Решение проблем: Графические ускорители Решение проблем: Графические ускорители Как программировать? Разбить задачу на большое число (сотни, тысячи) одинаковых маленьких потоков. Использовать для хранения данных нужный тип памяти, правильно к нему обращаться. registers, local, shared, global, constant, texture Только блоки из 8 потоков могут взаимодействовать между собой. Общая картина Производительность «в среднем» Универсальность Специализация Производительность на «специальных» задачах Разработки завтрашнего дня: GPGPU процессор: Intel Larrabee Разработки будущего: 500 GHz Исследования IBM: Процессор с частотой 500 GHz А они всё разгоняют… Разработки будущего: 80 ядер Исследования Intel: Процессор Polaris с 80 ядрами (1 TFLOP) Разработки будущего: EDGE University of Texas at Austin EDGE – Explicit Data Graph Execution Явное исполнение в соответствии с графом зависимостей по данным До 16 команд за такт До 1024 команд в обработке Разработки будущего: EDGE Процессор TRIPS (Tera-op, Reliable, Intelligently adaptive Processing System) Разработки будущего: EDGE Программа – последовательность гиперблоков до 128 команд в гиперблоке Подготовка кода для исполнения: