Асимметричное мультипроцессирование


AMP или ASMP (от англ.: Asymmetric multiprocessing, рус.: Асимметричная многопроцессорная обработка или Асимметричное мультипроцессирование) — тип многопроцессорной архитектуры компьютерной системы, который использовался до того, как была создана технология симметричного мультипроцессирования (SMP). Также использовался как более дешевая альтернатива в системах, которые поддерживали SMP.

В системе с асимметричной многопроцессорностью не все процессоры играют одинаковую роль. Например, система может использовать (либо на аппаратном, либо на уровне операционной системы) только один процессор для выполнения кода операционной системы, или поручать только одному процессору выполнение операций ввода-вывода. В других AMP-системах все процессоры могут выполнять код операционной системы и операции ввода-вывода, так что с этой стороны они ведут себя как симметричная многопроцессорная система, но определенная периферийная аппаратура может быть подсоединена только к одному процессору, так что со стороны работы с этой аппаратурой система предстаёт асимметричной.

В 1960-е—1970-е годы увеличить вычислительную мощность компьютера можно было, просто добавив в него ещё один процессор. Добавить ещё один такой же процессор было дешевле, чем покупать новый компьютер, работающий вдвое быстрее. Также простое добавление ещё одного процессора было выгоднее, чем покупка второго целого компьютера, для которого требовался отдельный машинный зал, дополнительное периферийное оборудование и персонал для обслуживания.

Первыми системами, к которым можно было добавлять второй процессор, были B5000 от компании Burroughs, DECsystem-1055, и IBM System/360 модель 65MP. Кроме того в некоторых университетах тоже были построены экспериментальные компьютеры со сдвоенными процессорами[1].

Однако проблема с добавлением процессора заключалась в том, что операционные системы того времени были разработаны только для однопроцессорных компьютеров, а внесение изменений для надежной поддержки двух процессоров требовало много времени. Чтобы обойти эту трудность, в операционные системы с поддержкой одного процессора вносили незначительные изменения лишь для минимальной поддержки второго процессора. «Минимальная поддержка» означала, что операционная система запускалась на «загрузочном процессоре» (boot processor), а на втором процессоре исполнялись только пользовательские программы. Например, в Burroughs B5000 второй процессор аппаратно не имел возможности исполнять «управляющий код»[2].

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