Многопроцессорность - это использование двух или более центральных процессоров (ЦП) в одной компьютерной системе. Этот термин также относится к способности системы поддерживать более одного процессора или способности распределять задачи между ними. Есть много вариантов этой базовой темы, и определение многопроцессорности может варьироваться в зависимости от контекста, в основном в зависимости от того, как определены процессоры ( несколько ядер на одном кристалле, несколько кристаллов в одном пакете, несколько пакетов в одном системном блоке и т. Д.).
Согласно некоторым онлайн-словарям, мультипроцессор - это компьютерная система, имеющая два или более процессора (несколько процессоров), каждый из которых совместно использует основную память и периферийные устройства для одновременной обработки программ. В учебнике 2009 г. многопроцессорная система определяется аналогично, но при этом отмечается, что процессоры могут совместно использовать «часть или всю системную память и средства ввода-вывода»; он также дал термин " тесно связанная система" как синоним.
В операционной системе уровня, многопроцессорная иногда используется для обозначения выполнения нескольких параллельных процессов в системе, при этом каждый процесс, работающий на отдельном процессоре или ядра, в отличие от одного процесса в любой момент времени. При использовании с этим определением многопроцессорность иногда противопоставляется многозадачности, которая может использовать только один процессор, но переключать его во временных интервалах между задачами (например, система разделения времени ). Однако многопроцессорность означает истинное параллельное выполнение нескольких процессов с использованием более чем одного процессора. Многопроцессорность не обязательно означает, что один процесс или задача использует более одного процессора одновременно; термин параллельная обработка обычно используется для обозначения этого сценария. Другие авторы предпочитают называть методы операционной системы мультипрограммированием и резервируют термин многопроцессорность для аппаратного аспекта наличия более чем одного процессора. В оставшейся части статьи многопроцессорность обсуждается только в аппаратном смысле.
В таксономии Флинна мультипроцессоры, как определено выше, являются машинами MIMD. Поскольку термин «мультипроцессор» обычно относится к сильно связанным системам, в которых все процессоры совместно используют память, мультипроцессоры не являются полным классом машин MIMD, которые также содержат мультикомпьютерные системы с передачей сообщений.
Возможно, первое выражение идеи многопроцессорного было написано Менабреы в 1842 году, о Чарльз Бэббидж «s аналитической машины (как переведено Ад Лавлейс ):«машина может быть пущена в ход, чтобы дать несколько результатов, в том же время, что значительно сократит весь объем процессов ».
В многопроцессорной системе все процессоры могут быть одинаковыми или некоторые могут быть зарезервированы для специальных целей. Сочетание соображений проектирования аппаратного обеспечения и программного обеспечения операционной системы определяет симметрию (или ее отсутствие) в данной системе. Например, соображения аппаратного или программного обеспечения могут требовать, чтобы только один конкретный ЦП отвечал на все аппаратные прерывания, тогда как вся остальная работа в системе может быть распределена между ЦП поровну; или выполнение кода режима ядра может быть ограничено только одним конкретным ЦП, тогда как код пользовательского режима может выполняться в любой комбинации процессоров. Многопроцессорные системы часто легче спроектировать, если наложены такие ограничения, но они, как правило, менее эффективны, чем системы, в которых используются все процессоры.
Системы, которые обрабатывают все ЦП одинаково, называются системами с симметричной многопроцессорной обработкой (SMP). В системах, где все процессоры не равны, системные ресурсы могут быть разделены несколькими способами, включая асимметричную многопроцессорность (ASMP), многопроцессорность с неоднородным доступом к памяти (NUMA) и кластерную многопроцессорность.
В многопроцессорной системе главный / подчиненный главный ЦП управляет компьютером, а подчиненный ЦП выполняет назначенные задачи. Процессоры могут быть совершенно разными по скорости и архитектуре. Некоторые (или все) процессоры могут иметь общую шину, каждый также может иметь частную шину (для частных ресурсов) или они могут быть изолированы, за исключением общего канала связи. Точно так же процессоры могут совместно использовать общую оперативную память и / или иметь частную оперативную память, к которой другой процессор (-ы) не может получить доступ. Роли ведущего и ведомого могут меняться от одного процессора к другому.
Ранним примером многопроцессорной системы ведущий / ведомый является настольный компьютер Tandy / Radio Shack TRS-80 Model 16, выпущенный в феврале 1982 г. и работающий под управлением многопользовательской / многозадачной операционной системы Xenix, версии Microsoft UNIX (называемой TRS). -XENIX). Модель 16 имеет 3 микропроцессора, 8-битный ЦП Zilog Z80 с тактовой частотой 4 МГц, 16-битный ЦП Motorola 68000 с тактовой частотой 6 МГц и Intel 8021 в клавиатуре. Когда система была загружена, Z-80 был ведущим, а процесс загрузки Xenix инициализировал ведомое устройство 68000, а затем передало управление 68000, после чего процессоры сменили роли, и Z-80 стал ведомым процессором, который отвечал за все Операции ввода-вывода, включая диск, связь, принтер и сеть, а также клавиатуру и встроенный монитор, в то время как операционная система и приложения выполнялись на процессоре 68000. Z-80 можно было использовать для решения других задач.
Более ранняя модель TRS-80 Model II, выпущенная в 1979 году, также могла считаться многопроцессорной системой, поскольку в ней были как процессор Z-80, так и микропроцессор Intel 8021 на клавиатуре. 8021 сделал Model II первой настольной компьютерной системой с отдельной съемной легкой клавиатурой, соединенной одним тонким гибким проводом, и, вероятно, первой клавиатурой, в которой использовался выделенный микропроцессор, оба атрибута позже были скопированы годами позже Apple и IBM..
При многопроцессорной обработке процессоры могут использоваться для выполнения одной последовательности инструкций в нескольких контекстах ( одна инструкция, несколько данных или SIMD, часто используется при векторной обработке ), нескольких последовательностей инструкций в одном контексте ( несколько инструкций, одна -data или MISD, используемые для избыточности в отказоустойчивых системах и иногда применяемые для описания конвейерных процессоров или гиперпоточности ), или множественные последовательности инструкций в множественных контекстах ( множественные инструкции, множественные данные или MIMD).
Сильно связанные многопроцессорные системы содержат несколько процессоров, подключенных на уровне шины. Эти процессоры могут иметь доступ к центральной общей памяти (SMP или UMA ) или могут участвовать в иерархии памяти как с локальной, так и с общей памятью (SM) ( NUMA ). IBM p690 Регата является примером высокого конца системы SMP. Intel Xeon процессоры доминируют на рынке многопроцессорной для бизнес - ПК и были единственным основным вариантом x86 до выхода AMD «s Opteron ряда процессоров в 2004 году оба диапазона процессоров имели свой собственный встроенный кэш, но при условии доступа к совместно используемой памяти; процессоры Xeon через общий канал, а процессоры Opteron через независимые каналы к системной RAM.
Многопроцессорные микросхемы, также известные как многоядерные вычисления, включают в себя несколько процессоров, размещенных на одном кристалле, и могут считаться наиболее экстремальной формой тесно связанной многопроцессорной обработки. Системы мэйнфреймов с несколькими процессорами часто тесно связаны.
Слабосвязанные многопроцессорные системы (часто называемые кластерами ) основаны на нескольких автономных однопроцессорных или двухпроцессорных компьютерах, соединенных между собой посредством высокоскоростной системы связи ( обычно используется Gigabit Ethernet ). Кластер Linux Beowulf является примером слабосвязанной системы.
Сильно связанные системы работают лучше и физически меньше, чем слабосвязанные системы, но исторически требовали больших начальных инвестиций и могут быстро обесцениться ; узлы в слабосвязанной системе обычно представляют собой недорогие стандартные компьютеры и могут быть переработаны как независимые машины после выхода из кластера.
Также следует учитывать энергопотребление. Сильно связанные системы, как правило, намного более энергоэффективны, чем кластеры. Это связано с тем, что можно получить значительную экономию, спроектировав компоненты для совместной работы с самого начала в сильно связанных системах, тогда как в слабосвязанных системах используются компоненты, которые не обязательно предназначались специально для использования в таких системах.
Слабосвязанные системы могут запускать разные операционные системы или версии ОС в разных системах.