Мультипроцессор
Мультипроцессор (от англ. 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, когда на каждом процессоре запускается отдельный процесс, и они обмениваются данными друг с другом путём обмена сообщениями. Многопоточное программирование используется либо явно (в компилируемых языках программирования с помощью системного API (например в C/C++ с помощью POSIX Threads, а также с помощью boost::thread или std::thread в C++, начиная со стандарта C++11), в интерпретируемых языках (Java и C#) с помощью конструкций языка), либо неявно (декларативно с помощью директив компилятора (OpenMP) или автоматически самим компилятором (High Performance Fortran)).
История
[править | править код]Мультипроцессорные машины (SMP/UMA) стали предлагаться на рынке в начале в конце 1980-х — начале 1990-х годов, сначала как минисуперкомпьютеры (например, продукция компаний Alliant (англ.), Convex, Sequent, Encore (англ.) и Synapse), затем как серверы обработки данных, и быстро приобрели популярность на рынке серверного оборудования. Первыми мультипроцессорами с архитектурой x86 на базе процессоров Intel 80386 и Intel 486 стали серверы Compaq SystemPro, поступившие на рынок в конце 1989 — в начале 1990 года. Рост предложений на рынке мультипроцессороных x86-серверов привел компанию Intel к созданию стандарта MultiProcessor Specification[2], который стал на долгие годы стандартом де-факто для SMP-машин c архитектурой x86.
Система | Процессор | Максимум процессоров |
---|---|---|
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 в середине 1980-х годов.
Система | Процессор | Процессоров на узел | Максимум процессоров |
---|---|---|---|
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):
Система | Процессор | Процессоров на узел | Максимум процессоров |
---|---|---|---|
Cray T3E | Alpha 21164 | 2 | 2048 |
BBN TC-2000 | Motorola MC88100 | 1 | 256 |
BBN TC-2000 | Motorola 604 | 2 | 512 |
Развитие миниатюризации в вычислительной электронике позволило размещать несколько процессоров в одном корпусе или на одном кристале (англ. chip-level multiprocessing, CMP), создавая мульти-ядерные процессоры. Это позволяло повышать производительность процессоров путем простого увеличения количества простых по дизайну вычислительных ядер, вместо традиционных попыток повышения тактовой частоты или усложнения вычислительного конвейера одноядерного процессора. При этом многоядерные процессоры более эффективно используют память, работают с многопоточными приложениями, тратят мало электроэнергии и не рассеивают много мощности, что идельно подходит для масштабирования дата-центров.
Начиная примерно с 2005 года все процессоры для потребительского рынка вычислительной техники выпускаются в многоядерном варианте, то есть являются по сути миниатюрными мультипроцессорами (точнее SMP-машинами с UMA-доступом к памяти, с некоторыми оговорками). Дальнейшее развитие этого направления привело к появлению многоядерных мультипроцессоров — систем, где присутствует несколько процессоров, а эти процессоры, в свою очередь, содержат по нескольку ядер. Наиболее распространенный вариант серверов в дата-центрах на 2016 год - сервер с двумя 8-ядерными процессорами класса Intel Xeon, Oracle SPARC или IBM POWER, которые при этом еще и аппаратно поддерживают одновременное исполнение нескольких потоков.
См. также
[править | править код]Литература
[править | править код]- Charles Severance, Kevin Dowd. High Performance Computing (RISC Architectures, Optimization & Benchmarks), 2nd Edition. — O'Reilly Media, 1998. — 466 p. — ISBN 156592312X. (англ.)
- Современные операционные системы (пер. с англ.), Эндрю С. Таненбаум. Глава 8.1 Мультипроцессоры (англ.)
Примечания
[править | править код]- ↑ "1930–35; multi- + process + -ing 1" — Dictionary.com Unabridged: "multiprocessor Архивная копия от 26 декабря 2015 на Wayback Machine"
- ↑ MultiProcessor Specification . Дата обращения: 17 октября 2013. Архивировано 9 января 2017 года.
- ↑ Severance_Dowd, 1998, p. 260.
- ↑ Severance_Dowd, 1998, p. 263.
- ↑ Severance_Dowd, 1998, p. 264.
Ссылки
[править | править код]- multiprocessing - Encyclopædia Britannica, Inc.
В статье не хватает ссылок на источники (см. рекомендации по поиску). |