Открыть сервис

Симметричная многопроцессорная обработка

Симметричная многопроцессорная обработка (SMP, от англ. Symmetric Multi-Processing) — это архитектура вычислительной системы, в которой два или более одинаковых процессора (ядра) подключены к общей оперативной памяти через единую системную шину или коммутатор. Ключевой особенностью SMP является равноправие всех процессоров: каждый из них имеет одинаковый доступ ко всем ресурсам системы, включая память, устройства ввода-вывода и прерывания. Операционная система в такой системе может распределять задачи между любыми процессорами, что обеспечивает балансировку нагрузки и повышение производительности.

История

Концепция многопроцессорной обработки возникла в 1960-х годах в связи с необходимостью повышения вычислительной мощности для научных и военных задач. Первые коммерческие SMP-системы появились в 1980-х годах. Одним из пионеров стала компания Sequent Computer Systems, выпустившая в 1984 году систему Balance 8000 на базе процессоров National Semiconductor NS32032. В 1987 году компания Intel представила архитектуру iPSC/1, которая, однако, была основана на распределённой памяти, а не на общей.

Настоящий прорыв произошёл в 1990-х годах с развитием микропроцессоров. Архитектура x86 от Intel и AMD, а также архитектура PowerPC от IBM и Motorola, стали основой для массовых SMP-серверов и рабочих станций. В 1993 году Intel выпустила спецификацию Multiprocessor Specification (MPS) для платформы x86, которая стандартизировала взаимодействие процессоров с материнской платой и операционной системой. В 1995 году компания Microsoft выпустила Windows NT 3.51, которая поддерживала до четырёх процессоров в SMP-конфигурации.

В 2000-х годах, с появлением многоядерных процессоров, SMP-архитектура стала доминирующей в массовых компьютерах. Многоядерные процессоры, по сути, являются SMP-системами на одном кристалле, где ядра выступают в роли процессоров. В 2005 году Intel выпустила первый двухъядерный процессор Pentium D, а AMD — Athlon 64 X2. С тех пор количество ядер в процессорах постоянно растёт, достигая десятков и сотен в серверных решениях (например, AMD EPYC и Intel Xeon).

Архитектура и принципы работы

Общая память

Основой SMP является общая оперативная память (ОЗУ), к которой все процессоры имеют прямой доступ через единую шину или коммутатор. Каждый процессор может читать и писать в любую ячейку памяти, что упрощает программирование, так как не требуется явное распределение данных между процессорами. Однако это создаёт проблему когерентности кэша: если один процессор изменяет данные в своём кэше, другие процессоры должны быть уведомлены об этом, чтобы не использовать устаревшие копии.

Когерентность кэша

Для обеспечения согласованности данных в SMP-системах используются протоколы когерентности кэша. Наиболее распространённый протокол — MESI (Modified, Exclusive, Shared, Invalid), который отслеживает состояние каждой строки кэша. Другие протоколы включают MOESI (используется в процессорах AMD) и MESIF (используется в процессорах Intel). Эти протоколы реализуются аппаратно на уровне контроллера памяти и шины.

Шина и коммутаторы

В классических SMP-системах процессоры и память соединяются через общую системную шину (например, Front Side Bus в процессорах Intel до 2008 года). Шина является узким местом, так как её пропускная способность ограничена, и при увеличении числа процессоров возникает конкуренция за доступ. В современных SMP-системах, особенно в серверных, используется коммутатор (crossbar switch) или кольцевая топология (например, Intel QuickPath Interconnect, AMD HyperTransport). Эти решения обеспечивают большую пропускную способность и масштабируемость.

Поддержка операционной системы

Для эффективной работы SMP требуется операционная система, поддерживающая многопроцессорность. Современные ОС (Windows, Linux, macOS, FreeBSD) используют механизмы синхронизации, такие как мьютексы, семафоры и спин-блокировки, чтобы предотвратить одновременный доступ к критическим данным. Планировщик задач распределяет потоки между процессорами с учётом загрузки и кэш-аффинности (привязки потока к конкретному процессору для минимизации промахов кэша).

Классификация

По числу процессоров

  • Двухпроцессорные системы — наиболее распространённые в настольных ПК и бюджетных серверах. Обычно реализуются на материнских платах с двумя сокетами.
  • Четырёхпроцессорные системы — используются в серверах среднего уровня и рабочих станциях. Требуют более сложной архитектуры шины.
  • Восьмипроцессорные и более — применяются в высокопроизводительных серверах и суперкомпьютерах. Требуют коммутаторов с высокой пропускной способностью.

По типу процессоров

  • Гомогенные SMP — все процессоры идентичны по архитектуре и производительности. Это наиболее распространённый тип.
  • Гетерогенные SMP — процессоры могут различаться (например, комбинация CPU и GPU, как в архитектуре ARM big.LITTLE). В таких системах операционная система должна учитывать различия в производительности и энергопотреблении.

По реализации

  • Симметричная многопроцессорная обработка на одном кристалле (CMP) — многоядерные процессоры, где ядра являются отдельными процессорами.
  • Симметричная многопроцессорная обработка на нескольких кристаллах — классическая конфигурация с несколькими процессорами на материнской плате.

Преимущества и недостатки

Преимущества

  • Простота программирования — разработчикам не нужно явно управлять распределением памяти, так как все процессоры видят одно и то же адресное пространство.
  • Балансировка нагрузки — операционная система может динамически распределять задачи между процессорами.
  • Совместимость — SMP-системы совместимы с большинством многопоточных приложений, написанных для одноядерных систем.
  • Масштабируемость — добавление процессоров (в пределах архитектурных ограничений) увеличивает производительность.

Недостатки

  • Ограничение масштабируемости — из-за конкуренции за общую шину и память производительность растёт нелинейно. Закон Амдала ограничивает ускорение: если 10% кода не распараллеливается, то максимальное ускорение при любом числе процессоров не превысит 10 раз.
  • Сложность аппаратной реализации — требуется поддержка когерентности кэша, что увеличивает сложность и энергопотребление.
  • Стоимость — SMP-системы с большим числом процессоров дороже, чем кластеры с распределённой памятью.

Применение

Серверы

SMP-архитектура широко используется в серверах баз данных, веб-серверах и серверах приложений. Например, серверы на базе Intel Xeon Platinum 8280 с 28 ядрами каждый могут обрабатывать тысячи одновременных запросов.

Научные вычисления

В суперкомпьютерах SMP-системы часто используются в качестве узлов, соединённых высокоскоростными сетями (например, InfiniBand). Пример — суперкомпьютер «Ломоносов-2» (МГУ имени М.В. Ломоносова), который использует узлы на базе процессоров Intel Xeon.

Рабочие станции

Для задач 3D-моделирования, видеомонтажа и инженерных расчётов используются рабочие станции с двумя или четырьмя процессорами. Например, Dell Precision 7920 Tower поддерживает до двух процессоров Intel Xeon.

Встраиваемые системы

В некоторых встраиваемых системах, особенно в авионике и телекоммуникационном оборудовании, используются SMP-конфигурации на базе процессоров ARM или PowerPC.

Примеры SMP-систем

  • Intel Xeon Phi — сопроцессор с 60–72 ядрами, работающий как SMP-система. Использовался в суперкомпьютерах, например, в «Тианхэ-2» (Китай).
  • AMD EPYC — серверные процессоры с до 64 ядрами, поддерживающие многопроцессорные конфигурации (до 2 сокетов).
  • IBM POWER9 — процессоры для серверов IBM Power Systems, поддерживающие до 8 сокетов в одной системе.
  • Apple M1 Ultra — система на кристалле с 20 ядрами (16 производительных и 4 энергоэффективных), реализующая гетерогенную SMP.

Сравнение с другими архитектурами

SMP vs. NUMA

Архитектура NUMA (Non-Uniform Memory Access) является развитием SMP для систем с большим числом процессоров. В NUMA память разделена на несколько банков, каждый из которых «ближе» к определённому процессору. Доступ к «своей» памяти быстрее, чем к «чужой». NUMA используется в современных серверных процессорах (например, Intel Xeon Scalable, AMD EPYC) для преодоления ограничений шины.

SMP vs. MPP

MPP (Massively Parallel Processing) — архитектура с распределённой памятью, где каждый узел имеет свою память и процессор. В MPP узлы обмениваются данными через сеть, что увеличивает задержки. SMP проще в программировании, но MPP масштабируется до тысяч узлов.

SMP vs. SMT

SMT (Simultaneous Multithreading) — технология, позволяющая одному процессорному ядру выполнять несколько потоков одновременно. Пример — Hyper-Threading от Intel. SMT не заменяет SMP, а дополняет его, увеличивая эффективность использования ядра.

Интересные факты

  • Первая SMP-система на базе процессоров x86 была выпущена компанией Compaq в 1994 году (ProLiant 1500).
  • В 1997 году компания Sun Microsystems выпустила сервер Ultra Enterprise 10000, поддерживавший до 64 процессоров UltraSPARC.
  • В 2006 году компания Intel выпустила процессор Core 2 Duo, который стал первым массовым двухъядерным процессором для настольных ПК.
  • В 2021 году компания Apple представила процессор M1 Max, который в конфигурации с двумя кристаллами (M1 Ultra) обеспечивает 20 ядер и 64 графических ядра.

Источники

  • Patterson, D. A., & Hennessy, J. L. (2017). Computer Organization and Design: The Hardware/Software Interface. Morgan Kaufmann.
  • Tanenbaum, A. S., & Bos, H. (2015). Modern Operating Systems. Pearson.
  • Intel Corporation. (1993). Multiprocessor Specification Version 1.4.
  • AMD Corporation. (2003). HyperTransport Technology Specification.
  • Hennessy, J. L., & Patterson, D. A. (2019). Computer Architecture: A Quantitative Approach. Morgan Kaufmann.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →