Симметричная многопроцессорная обработка
Симметричная многопроцессорная обработка (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 →