Мультипроцессор

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Мультипроцессор (от англ. multiprocessor, multiprocessing[1]) — это подкласс многопроцессорных компьютерных систем, где есть несколько процессоров и одно адресное пространство, видимое для всех процессоров. В таксономии Флинна мультипроцессоры относятся к классу SM-MIMD-машин. Мультипроцессор запускает одну копию ОС с одним набором таблиц, в том числе тех, которые следят какие страницы памяти свободны.

Классификация[править | править вики-текст]

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

По способу адресации памяти различают несколько типов мультипроцессоров, среди которых: UMA (Uniform Memory Access), NUMA (Non Uniform Memory Access) и COMA (Cache Only Memory Access).

Помимо этого мультипроцессоры могут быть гомогенного типа, когда все процессоры в системе одинаковы, или гетерогенного типа - когда процессоры в системе разного типа.

Программирование[править | править вики-текст]

В программировании мультипроцессоров можно использовать две модели программирования: многопоточность, где на каждом процессоре запускается поток исполнения, и они обмениваются друг с другом данными через общие переменные в общей памяти, либо (более сложный) message passing, когда на каждом процессоре запускается отдельный процесс, и они обмениваются данными друг с другом путем обмена сообщениями. Многопоточное программирование используется либо явно: в C/C++ с помощью POSIX Threads, в Java и C# - с помощью конструкций языка; либо неявно: декларативно с помощью директив компилятора (OpenMP) или автоматически сами компилятором (High Performance Fortran).

История[править | править вики-текст]

Мультипроцессорные машины (SMP/UMA) стали предлагаться на рынке в начале в конце 80-ых - начале 90-ых годов, сначала как минисуперкомпьютеры (например, продукция компаний Alliant, Convex, Sequent, Encore, и Synapse), затем как сервера обработки данных, и быстро приобрели популярность на рынке серверного оборудования. Первымм мультипроцессорами с архитектурой x86 на базе процессоров Intel 80386 и Intel 486 стали сервера Compaq SystemPro, поступившие на рынок в конце 1989 - в начале 1990 года. Рост предложений на рынке мультипроцессороных x86-серверов привел компанию Intel к созданию стандарта MultiProcessor Specification[2], который стал на долгие годы стандартом де-факто для SMP-машин c архитектурой x86.

Примеры SMP/UMA систем в 1998 году[3]
Система Процессор Максимум процессоров
SGI Power Challenge MIPS R10000 36
DEC AlphaServer 8400 Alpha 21164 14
Sun E6000 UltraSPARC II 30
Sun E10000 UltraSPARC II 64
HP/Convex Exemplar PA-8000 16
Cray T90 Cray Vector 32

Первыми мультипроцессорами ccNUMA-типа были компьютер KSR1 компании Kendall Square Research и Denelcor HEP компании Denelcor в середине 80-ых годов.

Примеры ccNUMA систем в 1998 году[4]
Система Процессор Процессоров на узел Максимум процессоров
Data General AV-20000 Pentium 4 32
Sequent NUMA-Q 2000 Pentium 4 32
SGI Origin 2000 MIPS R10000 2 128
HP Exemplar X-Class PA-8000 16 256
HP 9000 V-Class

Были созданы также мультипроцессоры и без когерентности кэша (nccNUMA):

Примеры nccNUMA систем в 1998 году[5]
Система Процессор Процессоров на узел Максимум процессоров
Cray T3E Alpha 21164 2 2048
BBN TC-2000 Motorola MC88100 1 256
BBN TC-2000 Motorola 604 2 512

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

См. также[править | править вики-текст]

Литература[править | править вики-текст]

Примечания[править | править вики-текст]

  1. "1930–35; multi- + process + -ing 1" — Dictionary.com Unabridged: "multiprocessor"
  2. MultiProcessor Specification
  3. Severance_Dowd, 1998, p. 260
  4. Severance_Dowd, 1998, p. 263
  5. Severance_Dowd, 1998, p. 264

Ссылки[править | править вики-текст]