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

1. Парадокс многоядерности: почему 100 ядер не дают ускорение в 100 раз?

В эпоху развития суперкомпьютеров и многоядерных процессоров возникает фундаментальный инженерный парадокс:

  • При добавлении вычислительных ядер производительность программы растет нелинейно и быстро выходит на плато («стена масштабирования»).
  • Почему в одних задачах (CFD, физика частиц) ускорение достигает тысяч раз, а в транзакционных СУБД останавливается на 10–15 ядрах?
  • Ключ к ответу: Архитектура вычислительной системы, способы разделения памяти (SMP vs NUMA vs Clusters) и доля строго последовательного кода (Закон Амдала).
2. Таксономия Майкла Флинна (1966)

Классификация базируется на разделении двух ортогональных потоков: команд (Instruction Stream) и данных (Data Stream):

Класс Поток команд Поток данных Сущность и характерная реализация
SISD Одиночный Одиночный Классическая фон-неймановская машина (одноядерные ЦП, скалярный конвейер)
SIMD Одиночный Множественный Векторный параллелизм: одна команда управляет сотнями АЛУ (GPU, AVX-512)
MISD Множественный Одиночный Отказоустойчивая обработка: разные алгоритмы над одним потоком датчиков
MIMD Множественный Множественный Многозадачные системы: независимые ядра/процессоры (SMP, NUMA, MPP-кластеры)
3. Класс SISD: Фон-Нейман, конвейер и суперскалярность

Характеристики SISD

  • Один программный счетчик (PC).
  • Последовательная выборка инструкций.
  • Одно адресное пространство данных.
  • Примеры: Intel 8086, PDP-11, современные скалярные ядра.

Почему суперскалярный CPU — SISD?

  • Конвейеризация и внеочередное исполнение (Out-of-Order) работают с одним логическим потоком инструкций.
  • Несмотря на выборку нескольких скалярных команд за такт, архитектурно машина остается SISD.
4. Класс SIMD: Векторные расширения и архитектура GPU

Один блок декодирования транслирует инструкцию на матрицу исполнительных АЛУ (Lockstep execution).

  • Векторные инструкции ЦП: Intel AVX-512 (512-битные ZMM регистры), ARM SVE (длина вектора от 128 до 2048 бит). За одну команду обрабатывается 16 чисел FP32 или 8 чисел FP64.
  • Графические процессоры (GPU): Модель SIMT (Single Instruction, Multiple Threads). Потоки группируются в варпы (32 нити) и выполняют один шейдер параллельно.
  • Узкое место SIMD: Ветвление кода (Thread Divergence). Если в цикле есть if-else, ветви выполняются последовательно с маскированием, снижая КПД.
5. Класс MISD: Отказоустойчивость и мажоритарные комплексы

Несколько независимых вычислителей выполняют разные программы над единым общим входным потоком данных.

Аэрокосмические комплексы

  • Бортовой компьютер Space Shuttle (4+1 дублированных процессора).
  • Системы управления авиалайнерами Fly-by-Wire (Airbus/Boeing).
  • Защита от сбоев из-за радиации (Single Event Upsets) на орбите.

Мажоритарный арбитраж (TMR)

  • Каналы независимо вычисляют траекторию разными алгоритмами.
  • Аппаратный арбитр (Voter) сравнивает результаты: если 2 из 3 сошлись — решение принимается.
  • Устранение единой точки отказа (No Single Point of Failure).
6. Класс MIMD: Доминирующая концепция суперкомпьютеров

Множество процессоров асинхронно исполняют различные инструкции над различными данными.

  • Многопоточность и многозадачность: Каждое ядро имеет собственный счетчик инструкций (PC) и независимый управляющий автомат.
  • Симметричные многопроцессорные системы (SMP): Несколько одинаковых CPU с общим доступом к памяти.
  • Кластерные комплексы: Тысячи независимых серверных узлов, объединенных сетью InfiniBand, обменивающихся сообщениями через MPI.
7. Организация памяти: SMP (UMA) против NUMA

UMA (Uniform Memory Access)

  • Единая разделяемая шина памяти.
  • Задержка доступа к любому адресу ОЗУ одинакова для всех ядер.
  • Ограничение: при росте числа ядер шина перегружается (лимит 4–8 сокетов).

NUMA (Non-Uniform Memory Access)

  • Каждый сокет имеет локальный контроллер и банк памяти (NUMA Node).
  • Локальный доступ: задержка ~60–80 нс.
  • Удаленный доступ (через UPI/Infinity Fabric): задержка ~120–160 нс (штраф NUMA).
8. Метрики производительности: MIPS, GFLOPS, TFLOPS
  • MIPS (Million Instructions Per Second): Частота / CPI. Субъективная метрика: CISC выполняет задачу меньшим числом инструкций, чем RISC, поэтому сравнение MIPS не отражает реальной скорости.
  • FLOPS (Floating-Point Operations Per Second): Операции с плавающей запятой в секунду.
    Rpeak = N_ядер × Частота (ГГц) × FLOP/цикл
  • В современных CPU x86 (AVX-512 FMA) ядро выполняет 32 DP FLOP/цикл.
  • В GPU NVIDIA с тензорными ядрами пиковая производительность достигает сотен TFLOPS/PFLOPS.
9. Методики тестирования: Linpack HPL и SPEC CPU

Бенчмарк Linpack (HPL)

  • Решение плотной системы линейных уравнений Ax = b методом LU-разложения.
  • Формирует мировой рейтинг суперкомпьютеров TOP500.
  • Метрика {max}$ показывает реальную скорость в сравнении с пиковой {peak}$ (КПД ~60–85%).

Пакет SPEC CPU (2017)

  • Набор реальных компилируемых прикладных программ (gcc, сжатие xz, трассировка лучей).
  • Делится на целочисленный SPECint и тест вычислений с плавающей точкой SPECfp.
  • Стандарт для сравнения архитектур CPU.
10. Закон Джина Амдала (Strong Scaling)

Оценивает ускорение параллельной системы при фиксированном объеме задачи:

S_Amdahl = 1 / (s + p / n), где s + p = 1
  • $ — доля строго последовательного кода, $ — параллельная доля, $ — число процессоров.
  • Предел при o \infty$: {max} = rac{1}{s}$.
  • Если в алгоритме всего 5% последовательного кода ( = 0.05$), предельное ускорение никогда не превысит 20 раз, даже на 100 000 ядер!
11. Закон Густафсона-Барсиса (Weak Scaling)

Оценивает ускорение при пропорциональном увеличении объема задачи вместе с ростом числа процессоров:

S_Gustafson = s + p × n = 1 + (n - 1) × p
  • На практике мощные суперкомпьютеры используют не для того, чтобы быстрее решить маленькую задачу, а для моделирования задач гигантского масштаба.
  • При = 0.05$ и = 64$:
    — По закону Амдала (Strong Scaling): pprox 15.42$ раз (эффективность 24.1%).
    — По закону Густафсона (Weak Scaling): = 60.85$ раз (эффективность 95.1%).
12. Strong Scaling vs Weak Scaling на практике
Параметр Закон Амдала (Strong Scaling) Закон Густафсона (Weak Scaling)
Размер задачи Фиксирован (N = const) Растет пропорционально узлам (N ~ n)
Цель вычислений Сократить время ожидания ответа Увеличить точность и детализацию модели
Характер кривой Асимптотическое насыщение (/s$) Близкое к линейному возрастание ( + p \cdot n$)
Область применения Транзакционные СУБД, настольные ПК Суперкомпьютерное моделирование (CFD, климат, LLM)
13. Инженерные меры по преодолению барьеров масштабирования
  • Преодоление задержек NUMA: Привязка процессов к сокетам (CPU Pinning / numactl), выделение HugePages, использование архитектуры NUMA-aware аллокаторов памяти.
  • Снижение последовательной доли ($): Декомпозиция блокировок (Lock-free алгоритмы, шардирование таблиц, асинхронные барьеры).
  • Снижение накладных расходов сети: Использование RDMA (InfiniBand/RoCE), топологии Fat-Tree или Dragonfly, протоколы AllReduce с аппаратным ускорением в коммутаторах (SHARP).
14. Резюме: параллелизм и восприятие реальности
Mathjoke Meme
Мем: «Mathjoke (10 types of people in the world) — Существует 10 типов людей: те, кто понимает двоичную систему счисления, и те, кто не понимает».
Автор: MjolnirPants (Wikimedia Commons).
Источник: Wikimedia Commons (File:Mathjoke.jpg).
Лицензия: Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
Изменения: Оптимизировано разрешение и встроено offline через Data URI (Base64) без изменения содержания.
Слайд 1 из 15