Symmetric Multiprocessing¶
Symmetric Multiprocessing (SMP, симметричная многопроцессорная обработка) — это архитектура вычислительных систем, в которой два или более идентичных процессора (ядра) подключены к общей оперативной памяти и работают под управлением единой операционной системы, имея равные права на доступ ко всем ресурсам. В SMP-системах каждый процессор может выполнять любые задачи, включая системные и пользовательские процессы, что обеспечивает высокую степень параллелизма и гибкость распределения нагрузки.
¶История
Концепция симметричной многопроцессорной обработки возникла в 1960-х годах как развитие идей многопроцессорности в мейнфреймах. Первые коммерческие SMP-системы появились в 1970-х годах: например, IBM System/370 Model 168 (1972) поддерживала до двух процессоров. Однако широкое распространение SMP началось в 1980-х годах с развитием микропроцессоров и стандартизацией шин (например, Multibus, VMEbus).
В 1990-х годах SMP стала стандартной архитектурой для серверов и рабочих станций. Компании Intel и AMD внедрили поддержку SMP в свои процессоры (например, Intel Pentium Pro, 1995), а операционные системы (Windows NT, Linux, Unix) получили встроенные механизмы управления многопроцессорностью. С появлением многоядерных процессоров в середине 2000-х годов SMP перешла на уровень одного кристалла: каждое ядро в многоядерном процессоре действует как полноценный процессор в SMP-конфигурации.
¶Архитектура и принцип работы
¶Общая память
Ключевая особенность SMP — все процессоры разделяют единое адресное пространство оперативной памяти. Каждый процессор может читать и писать в любую ячейку памяти, что упрощает программирование, но требует механизмов синхронизации для предотвращения конфликтов доступа.
¶Когерентность кэша
Поскольку каждый процессор имеет собственный кэш, данные в них могут расходиться. Для обеспечения согласованности используется протокол когерентности кэша (например, MESI, MOESI). Когда один процессор изменяет данные в своём кэше, протокол уведомляет другие процессоры о необходимости инвалидации или обновления соответствующих строк кэша.
¶Шина или межсоединение
Процессоры соединяются с памятью и устройствами ввода-вывода через общую шину (например, Front Side Bus в старых системах) или через более сложные топологии (кольцо, кроссбар, mesh). В современных многоядерных процессорах используется внутрикристальная сеть (например, Intel Ring Bus, AMD Infinity Fabric).
¶Планирование задач
Операционная система распределяет потоки (threads) между процессорами, стремясь к балансировке нагрузки. В SMP-системах возможна как симметричная обработка (любой процессор выполняет любую задачу), так и асимметричная (специализированные процессоры для определённых задач), но термин SMP подразумевает именно симметричный подход.
¶Классификация
¶По типу соединения
- SMP на общей шине — классическая схема, где все процессоры подключаются к одной шине памяти. Проста, но ограничена пропускной способностью шины (обычно до 4–8 процессоров).
- SMP с перекрёстной коммутацией (crossbar) — каждый процессор имеет прямой путь к каждому модулю памяти. Обеспечивает более высокую производительность, но сложнее и дороже.
- SMP с кольцевой топологией — процессоры соединяются в кольцо, данные передаются последовательно. Используется в некоторых многоядерных процессорах (например, Intel Xeon Phi).
¶По масштабу
- Двухпроцессорные системы (2P) — наиболее распространённые серверные конфигурации.
- Четырёхпроцессорные (4P) — используются в высокопроизводительных серверах.
- Восьмипроцессорные и выше (8P+) — применяются в мейнфреймах и суперкомпьютерах, но требуют сложных межсоединений и специальных протоколов.
¶По реализации
- Аппаратная SMP — физически несколько процессоров на материнской плате.
- Многоядерная SMP — несколько ядер в одном процессоре, каждое из которых является самостоятельным процессором с точки зрения ОС.
¶Преимущества и недостатки
¶Преимущества
- Повышение производительности — параллельное выполнение нескольких задач или потоков одной задачи.
- Масштабируемость — возможность добавления процессоров для увеличения вычислительной мощности (в пределах архитектурных ограничений).
- Универсальность — любой процессор может выполнять любую работу, что упрощает программирование и балансировку.
- Отказоустойчивость — при выходе из строя одного процессора система может продолжать работу на остальных (если ОС поддерживает graceful degradation).
¶Недостатки
- Ограничение пропускной способности памяти — при большом числе процессоров общая шина или межсоединение становятся узким местом.
- Сложность синхронизации — необходимость блокировок, семафоров и других механизмов для предотвращения гонок данных.
- Проблема когерентности кэша — накладные расходы на поддержание согласованности данных между кэшами.
- Закон Амдала — ускорение ограничено долей последовательных вычислений в программе; при большом числе процессоров эффективность падает.
¶Применение
SMP широко используется в:
- Серверы баз данных — параллельная обработка запросов, транзакций.
- Веб-серверы — обработка множества одновременных подключений.
- Научные вычисления — моделирование, расчёты, обработка данных.
- Графические станции — рендеринг, видеомонтаж, CAD.
- Операционные системы — все современные ОС (Windows, Linux, macOS, FreeBSD, Solaris) поддерживают SMP.
¶Альтернативы и эволюция
SMP не является единственной архитектурой многопроцессорности. Существуют:
- NUMA (Non-Uniform Memory Access) — процессоры имеют разное время доступа к разным участкам памяти, что позволяет строить системы с большим числом процессоров (десятки и сотни).
- MPP (Massively Parallel Processing) — множество узлов с собственной памятью, соединённых высокоскоростной сетью.
- Гетерогенные системы — сочетание процессоров разных типов (например, CPU + GPU), где симметрия отсутствует.
Современные многоядерные процессоры (например, Intel Core i9, AMD Ryzen Threadripper) фактически реализуют SMP на уровне одного кристалла, но для масштабирования за пределы 8–16 ядер часто используются гибридные подходы (SMP + NUMA).
¶Интересные факты
- Первый коммерческий SMP-компьютер — Burroughs B5000 (1961), который поддерживал до двух процессоров.
- В 1990-х годах SMP-системы на базе процессоров Intel Pentium Pro (1995) стали стандартом для серверов начального уровня.
- Операционная система Linux получила поддержку SMP в версии 2.0 (1996), а Windows NT — с версии 3.1 (1993).
- В современных процессорах Intel и AMD количество ядер достигает 64 и более, что делает SMP-архитектуру внутри одного чипа доминирующей.
¶Источники
- Hennessy, J. L., Patterson, D. A. Computer Architecture: A Quantitative Approach. — 6th ed. — Morgan Kaufmann, 2017.
- Tanenbaum, A. S., Bos, H. Modern Operating Systems. — 4th ed. — Pearson, 2014.
- Intel Corporation. Intel 64 and IA-32 Architectures Software Developer’s Manual. — 2023.
- AMD Corporation. AMD64 Architecture Programmer’s Manual. — 2022.
- Stallings, W. Operating Systems: Internals and Design Principles. — 9th ed. — Pearson, 2018.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


