Многопрограммная работа ЭВМ. Многомашинные и многопроцессорные вычислительные системы

1. Архитектурный вызов: от одного потока к параллельным мирам

Историческая эволюция вычислительных систем столкнулась с жесткими аппаратными барьерами:

  • Простой оборудования: В однопрограммных ЭВМ ожидание ввода-вывода (I/O) приводило к 99% простоя дорогостоящего процессора.
  • Предел тактовой частоты (Тепловая стена): Нарушение масштабирования Деннарда сделало невозможным бесконечный рост частоты одиночного ядра выше 4–5 ГГц.
  • Единственный выход: Параллелизм на всех уровнях — программная многозадачность ОС, многоядерные процессоры, когерентные мультипроцессоры и суперкомпьютерные кластеры.
2. Многопрограммность операционной системы

Процесс (Process)

  • Изолированное адресное пространство памяти.
  • Аппаратная защита через таблицы страниц MMU.
  • Собственные дескрипторы файлов и права.
  • Межпроцессный обмен только через IPC / системные вызовы ядра.

Поток (Thread)

  • Единица диспетчеризации планировщика ОС.
  • Общее виртуальное адресное пространство и куча (Heap).
  • Собственный стек вызовов и регистровый контекст.
  • Минимальные накладные расходы на обмен данными.
3. Аппаратная цена переключения контекста (Context Switch)

Когда квант времени процесса истекает или процесс блокируется на I/O:

  • Сохранение регистров: ЦП сохраняет Program Counter, Stack Pointer, регистры общего назначения и флаги в структуру PCB ядра.
  • Переключение каталога памяти: Запись нового физического адреса страниц в регистр CR3.
  • Инвалидация TLB: Буфер ассоциативной трансляции адресов сбрасывается, вызывая каскад промахов памяти.
  • «Остывание» кэшей: Новый процесс вытесняет строки L1/L2 кэша прежнего процесса, деградируя быстродействие на 1000–5000 тактов.
4. Иерархия аппаратного параллелизма: ILP, DLP, TLP
  • ILP (Instruction-Level): Внутри одного ядра. Суперскалярность, глубокий конвейер, внеочередное исполнение (Out-of-Order), аппаратное предсказание ветвлений. Прозрачно для программиста.
  • DLP (Data-Level): Параллелизм данных (SIMD). Векторные блоки AVX-512, ARM SVE, потоковые процессоры GPU. Одна инструкция обрабатывает вектор из десятков чисел.
  • TLP (Thread-Level): Параллелизм потоков. Технология SMT (Hyper-Threading), независимые физические ядра CPU, многосокетные серверы и кластеры.
5. Сильносвязанные системы: SMP и архитектура UMA

SMP (Symmetric Multiprocessing) — симметричная архитектура с общей разделяемой памятью (Shared Memory):

  • Все процессоры абсолютно равноправны и имеют доступ ко всей оперативной памяти.
  • UMA (Uniform Memory Access): Время доступа к любому адресу памяти одинаково для всех процессоров.
  • Проблема общей шины: При росте числа процессоров более 4–8 системная шина насыщается (Bus Contention), масштабирование останавливается.
6. Архитектура ccNUMA: распределенная память с общим адресом

Архитектура узла NUMA

Каждый сокет содержит собственный встроенный контроллер памяти и локальные модули DDR4/DDR5 (локальный узел).

Межсокетовый интерконнект

Сокеты связаны высокоскоростными пакетными шинами: Intel UPI или AMD Infinity Fabric.

NUMA Ratio = Latency_Remote / Latency_Local ≈ 1.3 ... 2.0 (локально ~70 нс, удаленно ~140 нс)
7. Проблема кэш-когерентности в SMP / NUMA

Если каждое ядро имеет локальный L1/L2 кэш, изменение переменной в одном кэше делает невалидной копию в других кэшах:

  • Аппаратное решение: Шинный снупинг (Bus Snooping) — контроллеры кэшей постоянно «слушают» широковещательные транзакции адресов на системной шине.
  • Каталожные протоколы (Directory-based): Используются в масштабных серверах для снижения широковещательного трафика через битовую карту владельцев строк.
8. Протокол MESI: состояния 64-байтной строки кэша
Статус Значение в кэше Состояние ОЗУ Права на запись
M (Modified) Единственная измененная копия (Dirty) Устарело (требуется Write-Back) Разрешена мгновенно
E (Exclusive) Единственная чистая копия (Clean) Совпадает с кэшем Разрешена (переход в M)
S (Shared) Разделяется между ядрами для чтения Совпадает с кэшем Запрещена без BusInval
I (Invalid) Недействительные / пустые данные Не определено Кэш-промах (Cache Miss)
9. Аппаратная ловушка: False Sharing (Ложное разделение)

Два независимых потока изменяют две разные переменные, попавшие в одну 64-байтную строку кэша:

  • Ядро 1 пишет в varA → строка в кэше Ядра 2 инвалидируется (I).
  • Ядро 2 пишет в varB → строка в кэше Ядра 1 инвалидируется (I).
  • Эффект кэш-пинг-понга: Строка непрерывно пересылается между сокетами по шине, процессорные конвейеры простаивают, скорость падает в 50–100 раз!
  • Решение: Директива выравнивания alignas(64) или искусственный заполнитель (padding).
10. Слабосвязанные системы: кластеры Beowulf и модель MPI

Кластер — объединение автономных компьютеров (узлов) через высокоскоростную сеть:

  • Каждый узел имеет собственную независимую ОС и физически изолированную память.
  • Модель передачи сообщений (Message Passing): Стандарт MPI (Message Passing Interface).
  • Базовые функции: MPI_Send, MPI_Recv (точка-точка), MPI_Bcast, MPI_Allreduce (коллективные операции), MPI_Barrier (барьерная синхронизация).
11. Кластерные интерконнекты: битва за микросекунды
Интерконнект Задержка (Latency) Механизм передачи Эффективность в HPC
Gigabit Ethernet 20–50 мкс Стек TCP/IP ядра ОС, копирование буферов, прерывания Низкая (узкое место для MPI)
RoCE v2 (RDMA over Ethernet) 1.5–3.0 мкс RDMA аппаратно, обход ядра (Kernel-Bypass), Zero-Copy Высокая (корпоративные дата-центры)
InfiniBand (HDR/NDR) 0.6–1.0 мкс Аппаратная сеть без потерь (Lossless), SHARP (редукция в свитчах) Максимальная (стандарт Top500)
12. Пределы параллелизма: законы Амдала и Густафсона

Закон Амдала (Strong Scaling)

Размер задачи фиксирован. При доле последовательного кода s = 0.05 предел ускорения равен 20 раз при любом числе процессоров!

S_A = 1 / (s + p/n) | lim = 1/s

Закон Густафсона (Weak Scaling)

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

S_G = s + p * n
13. Инженерные принципы выбора архитектуры параллелизма
  • Тесная связность по данным: Использовать SMP/ccNUMA серверы с быстрой общей памятью и привязкой потоков (numactl).
  • Масштабные расчетные сетки (CFD, физика, AI): Использовать кластеры с распределенной памятью, топологией Fat-Tree и интерконнектом InfiniBand / RoCE v2 с поддержкой RDMA.
  • Маскирование задержек: Применение асинхронных неблокирующих вызовов (MPI_Isend/Irecv) для перекрытия сетевых пересылок локальными вычислениями.
14. Резюме: параллелизм и восприятие реальности
Mathjoke - 10 types of people
Мем: «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