Система асимметричной многопроцессорной обработки ( AMP или ASMP ) — это многопроцессорная компьютерная система, в которой не все из нескольких взаимосвязанных центральных процессоров (ЦП) обрабатываются одинаково. Например, система может разрешать (на уровне оборудования или операционной системы ) только одному ЦП выполнять код операционной системы или может разрешать только одному ЦП выполнять операции ввода-вывода. Другие системы AMP могут разрешать любому ЦП выполнять код операционной системы и выполнять операции ввода-вывода, так что они будут симметричны относительно ролей процессора, но подключать некоторые или все периферийные устройства к определенным ЦП, так что они будут асимметричны относительно подключения периферийных устройств.
Асимметричная многопроцессорная обработка была единственным методом обработки нескольких ЦП до появления симметричной многопроцессорной обработки (SMP). Она также использовалась для предоставления менее дорогих вариантов [1] в системах, где SMP была доступна.
Для компьютеров размером с комнату 1960-х и 1970-х годов экономически эффективным способом увеличения вычислительной мощности было добавление второго ЦП. Поскольку эти компьютеры уже были близки к самым быстрым из доступных (близко к пику соотношения цена/производительность), два ЦП стандартной скорости были намного дешевле, чем ЦП, работающий в два раза быстрее. Кроме того, добавление второго ЦП было дешевле, чем второй полноценный компьютер, которому требовались собственные периферийные устройства, что требовало гораздо больше места на полу и большего количества обслуживающего персонала.
Известными ранними предложениями AMP от производителей компьютеров были Burroughs B5000 , DECsystem-1055 и IBM System/360 model 65MP. Также существовали двухпроцессорные машины, построенные в университетах. [2]
Проблема с добавлением второго ЦП в компьютерную систему заключалась в том, что операционная система была разработана для систем с одним ЦП, и ее расширение для эффективной и надежной работы с несколькими ЦП занимало много времени. Чтобы заполнить этот пробел, операционные системы, предназначенные для одного ЦП, изначально были расширены для обеспечения минимальной поддержки второго ЦП. При этой минимальной поддержке операционная система работала на «загрузочном» процессоре, а другой мог запускать только пользовательские программы. В случае Burroughs B5000 аппаратное обеспечение второго процессора не было способно запускать код «управления состоянием». [3]
Другие системы позволяли операционной системе работать на всех процессорах, но либо подключали все периферийные устройства к одному процессору, либо подключали определенные периферийные устройства к определенным процессорам.
Опцией на Burroughs B5000 был «Процессор B». Этот второй процессор, в отличие от «Процессора A», не имел соединения с периферийными устройствами, хотя два процессора совместно использовали основную память, и Процессор B не мог работать в состоянии управления. [3] Операционная система работала только на Процессоре A. Когда требовалось выполнить пользовательское задание, оно могло быть запущено на Процессоре B, но когда это задание пыталось получить доступ к операционной системе, процессор останавливался и посылал сигнал Процессору A. Затем запрошенная служба операционной системы запускалась на Процессоре A.
На B5500 либо процессор A, либо процессор B могли быть обозначены как процессор 1 с помощью переключателя на панели инженера, при этом другой процессор был процессором 2; оба процессора совместно использовали основную память и имели аппаратный доступ к процессорам ввода-вывода, следовательно, и к периферийным устройствам, но только процессор 1 мог отвечать на периферийные прерывания. [4] Когда задание на процессоре 2 требовало службы операционной системы, оно перенаправлялось на процессор 1, который отвечал как за инициирование активности процессора ввода-вывода, так и за реагирование на прерывания, указывающие на завершение. На практике это означало, что хотя пользовательские задания могли выполняться как на процессоре 1, так и на процессоре 2 и могли получать доступ к внутренним библиотечным процедурам, не требующим поддержки ядра, операционная система планировала их на последнем, когда это было возможно. [5]
Control Data Corporation предложила две конфигурации своей серии CDC 6000 , которые имели два центральных процессора . CDC 6500 [6] был CDC 6400 с двумя центральными процессорами. CDC 6700 был CDC 6600 с добавленным к нему центральным процессором CDC 6400.
Эти системы были организованы совершенно иначе, чем другие мультипроцессоры в этой статье. Операционная система работала на периферийных процессорах , в то время как пользовательское приложение работало на ЦП. Таким образом, термины ASMP и SMP не совсем применимы к этим мультипроцессорам.
Корпорация Digital Equipment Corporation (DEC) предложила двухпроцессорную версию своей системы DECsystem-1050 , которая использовала два процессора KA10; все периферийные устройства были подключены к одному процессору, основному процессору, и основной процессор запускал код операционной системы. [7] Это предложение было распространено на процессоры KL-10 и KS-10 в линейке PDP-10; в этих системах загрузочный процессор обозначен как «политический процессор», который запускает интерпретатор команд, обменивается заданиями в памяти и из нее и выполняет несколько других функций; другие функции операционной системы и ввод-вывод могут выполняться любым из процессоров, и если политический процессор выходит из строя, другой процессор берет на себя функции политического процессора. [8]
Корпорация Digital Equipment разработала, но так и не выпустила многопроцессорный PDP-11 , PDP-11/74, [9] работающий на многопроцессорной версии RSX-11M . [10] В этой системе любой процессор мог запускать код операционной системы и мог выполнять ввод-вывод, но не все периферийные устройства были доступны всем процессорам; большинство периферийных устройств были подключены к одному или другому из ЦП, так что процессор, к которому не было подключено периферийное устройство, когда ему требовалось выполнить операцию ввода-вывода на этом периферийном устройстве, запрашивал процессор, к которому было подключено периферийное устройство, для выполнения этой операции. [10]
Первая многопроцессорная система VAX компании DEC , VAX-11/782, представляла собой асимметричную двухпроцессорную систему; только первый процессор имел доступ к устройствам ввода-вывода. [11]
Для IBM System/370 Model 168 были доступны два варианта для присоединения второго процессора. [12] Одним из них был IBM 3062 Attached Processing Unit , в котором второй процессор не имел доступа к каналам и поэтому был похож на процессор B B5000 или второй процессор на VAX-11/782. Другой вариант предлагал полноценный второй ЦП и, таким образом, был больше похож на System/360 model 65MP.