Определение

Симметричная многопроцессорная обработка (SMP — symmetrical multiprocessing) — параллельная вычислительная архитектура, в которой несколько процессоров поддерживают единую копию операционной системы и совместно используют память и другие ресурсы компьютера. Все процессоры имеют равные права доступа к памяти, системы ввода/вывода и формируют одинаковые внешние прерывания.

Технология симметричной многопроцессорной обработки относится к компьютерной архитектуре, рассчитанной на использование нескольких процессоров. Она открывает длинный ряд продуктов, который начинается технологией Cache-Coherent Non-Uniform Memory Architecture (ccNUMA), или архитектурой неоднородного доступа к памяти с когерентным кэшем, и заканчивается слабосвязанными архитектурами массивных параллельных систем и распределенными системами типа Beowulf. Последние представляют собой не что иное, как кластеры традиционных персональных компьютеров, связанных между собой при помощи таких технологий, как Ethernet, и выполняют программы, написанные специально для параллельной обработки.

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

Следует обратить внимание на слово «практически», поскольку в этой архитектуре все же есть неразделяемый ресурс. В большинстве SMP-систем каждый процессор имеет свою кэш-память. Необходимость в этой более дорогой статической оперативной памяти вызвана тем, что скорость доступа к динамической памяти значительно меньше быстродействия процессоров.

Это, безусловно, приводит к нарушению когерентности кэша, когда SMP-процессору требуется доступ к содержимому ячейки памяти, которая хранится в кэше другого процессора. Подобное затруднение устраняется на аппаратном уровне. Требуемая информация передается из кэша другого процессора, а не из основной памяти, а содержимое исходного кэша аннулируется.

Хотя это решение отличается быстротой, оно создает большую нагрузку, чем однопроцессорная система, поэтому, в частности, между производительностью SMP-систем и однопроцессорных систем нет линейной зависимости. Иными словами, производительность двухпроцессорной системы меньше, чем производительность однопроцессорной системы, умноженная на два, и производительность четырехпроцессорой системы меньше двукратной производительности двух процессоров.

Для ограниченного числа процессоров скорость, обеспечиваемая SMP системами, перевешивает недостаток в виде избыточной нагрузки, благодаря чему эта архитектура как нельзя лучше подходит для приложений, требующих высокой степени кооперации.

Разделяемая память оказывает влияние и на кодирование. Хотя здесь не обязательно обеспечивать передачу данных между процессорами, надо следить, чтобы не возникало «замкнутого круга», когда процессор, обращающийся к элементу данных последним, уничтожает результат работы предыдущих процессоров. Число SMP-процессоров, которые могут совместно использовать операционную систему и другие ресурсы компьютера, лимитировано, в дополнение к этому расхождения в возможностях памяти и пропускной способности шины накладывают свои ограничения. В итоге стандартная настольная SMP-система может иметь не более восьми процессоров. SMP-системы старшего класса и модернизированные SMP-системы типа ссNUMA отличаются большей масштабируемостью.

По существу, архитектура ссNUMA — это SMP-система с разбиением по участкам памяти, фрагменты памяти в которой менее локальны, нежели в SMP-системе. Для приложений, которые не сильно связаны и могут быть естественным образом подразделены на сектора, такая архитектура подходит как нельзя лучше. Системы ссNUMA старшего класса масштабируются до 64 узлов по 128 процессоров. Тем не менее SMP-системы не обладают устойчивостью к сбоям. При выходе из строя одного процессора нельзя гарантировать когерентности кэша для операционной системы и пользовательских приложений. Скорее всего, ссылки на системные переменные и переменные пользовательских приложений так и останутся неразрешенными. Возможно, некоторые указатели не будут иметь смысла. Обращение одного из работоспособных узлов к несуществующей информации может привести к сбою всей системы.

Для развертывания SMP-системы требуется специальная конфигурация, объединяющая в себе операционную систему, системную плату и процессоры. SMP поддерживается большинством диалектов Unix, Linux версии 2.0 и выше, Mac OS 9, OS/2 Warp Server, Windows NT и Windows 2000. Она не поддерживается MS-DOS, Windows 95 и Windows 98. Среди многопотоковых приложений, которые могут эффективно работать в архитектуре SMP, — BackOffice Suite корпорации Microsoft, Lotus Notes и СУБД разработки Oracle, Sybase и Informix.

SMP может быть реализована на различных аппаратных RISC-платформах (UltraSPARC, Alpha, PowerPC и др.), а также на базе процессоров Intel, начиная с 486-й модели.

Права на стандарт Advanced Programmable Interrupt Controller (APIC), который применяется в системах SMP, принадлежат корпорации Intel, поэтому другие производители процессоров, в том числе Via Technologies и Advanced Micro Devices, не могут его использовать. Вместо этого они поддерживают частный стандарт OpenPIC: Via — в процессорах Cyrix 6x86 и AMD — в K6.

Четырехпроцессорная система SMP