Plug and Play (сокр. PnP), дословно переводится как «Подключи и играй (работай)» — технология, предназначенная для быстрого определения и конфигурирования устройств в компьютере и других технических устройствах. В зависимости от аппаратного интерфейса и программной платформы (ОС, BIOS), процедура Plug and Play может производиться на этапе начальной загрузки системы или в режиме горячей замены — так это делается, например, для интерфейсов USB и IEEE 1394[1].
Некоторые ранние компьютерные системы, например, Apple II, могли требовать от пользователя перепаивать и разрезать контакты на платах расширения для их переконфигурирования[2]. Такая техника переконфигурирования была сложной и радикально уменьшала срок работы оборудования.
По мере того, как компьютеры становились доступными всё более широким слоям публики, стали требоваться более простые, удобные и доступные для частого использования технологии переконфигурирования. Первоначально вместо обрезки и перепайки проводников для смены конфигурации карт расширения были предложены джамперы (перемычки) и DIP-переключатели.
Позднее процесс переконфигурирования плат расширения был автоматизирован[3].
MSX
Выпущенная в 1983 году система MSX[4] была изначально разработана как система, ориентированная на работу с Plug and Play. Это было реализовано с использованием специально организованной системы слотов расширения, каждый из которых, включая субслоты в случае использования расширителя слотов (slot expander)[5], обладал собственным виртуальным адресным пространством, что устраняло сам источник для возможных конфликтов адресов между устройствами. Для конфигурирования системы не требовалось переключать джамперы или проводить любые другие процедуры в ручном режиме. Независимое адресное пространство позволяло использовать в устройствах расширения дешевые микросхемы. Слой промежуточной логики, осуществлявший ретрансляцию виртуальных адресов в реальные, так же оказался весьма дешёв в реализации.
На стороне программного обеспечения драйверы и расширения программного обеспечения поставлялись в постоянной памяти, расположенной на картах расширения. Это позволило ASCII Corporation создать систему, которая не требовала дисков с драйверами и каких-либо пользовательских манипуляций с программным обеспечением во время установки дополнительного оборудования. Расширения BIOS, устанавливаемые на ПЗУ (ROM Extansions в терминологии MSX), обеспечивали реализацию слоя аппаратных абстракций (HAL), который позволял программному обеспечению работать со стандартным API устройств, не обращая внимания на особенности его аппаратной реализации.
NuBus
Разработанная в 1984 в Массачусетском технологическом институте архитектура шины расширения NuBus была задумана[6] как нейтральный по отношению к используемой платформе интерфейс с полностью автоматическим конфигурированием подключённых к нему устройств. Спецификация интерфейса включала в себя даже одновременную поддержку как big endian, так и little endian представления чисел, бывших ранее одной из причин несовместимости платформ. Однако, повышенная сложность реализации нейтрального по отношению к платформе интерфейса, требовавшая более дорогих чипов, в 1980-х годах стала фактором, воспрепятствовавшим широкому распространению этого интерфейса.
Amiga Autoconfig и Zorro II
В 1984 году компания Commodore разработала протокол Autoconfig и шину расширения Zorro для своего семейства персональных компьютеров Amiga. Разработка была впервые представлена публике на выставке Consumer Electronics Show, проходившей в Лас-Вегасе в 1985, под названием «Lorraine», данному прототипу технологии. Так же, как и NuBus, устройства, подключаемые к шине Zorro, не требовали никаких джамперов и DIP-переключателей. Сведения о конфигурации устройства хранились в ПЗУ карты расширения, и хост-система-при загрузке выделяла карте необходимые ей ресурсы. Архитектура Zorro не получила широкого распространения в индустрии и, практически, не применялась за пределами продуктовой линейки Amiga. Однако, она последовательно обновлялась до версии Zorro II и 32-битной Zorro III.
Micro Channel Architecture
В 1987-м IBM выпустила обновленную линейку моделей IBM PC, известную как семейство Personal System/2, использовавшую новую шину расширения — Micro Channel Architecture[7]. PS/2 были способны к полностью автоматическому самоконфигурированию. Каждое из устройств расширения поставлялось в комплекте с дискетой, содержащей специальный файл, предназначенный для конфигурирования системы. Пользователь устанавливал плату расширения, включал компьютер, вставлял дискету, и компьютер автоматически назначал прерывания, каналы DMA и прочие требуемые плате ресурсы.
По сравнению с реализациями в упомянутых выше системах такая схема автоконфигурирования имела один недостаток: дискета могла испортиться или потеряться, а единственный способ восстановления необходимого файла настроек — это получение его от компании по почте или загрузка с BBS компании IBM. Без диска новое устройство было полностью бесполезным, и компьютер не мог нормально загрузиться до того, как это устройство не будет отключено от шины расширения. В то же время, преимуществом такого подхода была теоретическая возможность обновить информацию, необходимую для работы устройства.
Шина MCA не получила широкой поддержки[8], поскольку IBM препятствовала её использованию независимыми производителями IBM-PC-совместимых компьютеров. Каждый из разработчиков устройств, совместимых с MCA, подписывал с IBM соглашение о неразглашении технических деталей и должен был платить лицензионные отчисления с каждого устройства, что повышало их стоимость.
EISA
Выпущенный консорциумом из девяти производителей IBM-PC-совместимых компьютеров стандарт EISA позиционировался как альтернатива MCA. Он обладал чрезвычайно схожим способом реализации Plug and Play, основанном на файлах конфигурации, поставляемых в комплекте с дискетами. Однако, в отличие от MCA, компьютер с несконфигурированным устройством EISA всё же мог загрузиться и продолжить работу без доступа программного обеспечения к этому устройству.
Так же как и Micro Channel, EISA не получила широкого распространения, и в дальнейшем сама технология и основанная на ней реализация Plug and Play не развивались.
ISA и PCI
Шина ISA появилась раньше, чем в системы с её использованием стала внедряться технология Plug and Play. В связи с этим карты расширения, работающие с этой шиной, использовали массу разнообразных техник настройки, включая джамперы, DIP-переключатели, фирменные драйверы и утилиты и прочие методы в разнообразных комбинациях. Появление на картах Plug and Play в виде спецификации от Microsoft дополнительно усложнило эту систему, тем более, что различные операционные системы реализовывали Plug and Play по-разному.
Остроту проблемы с настройкой карт ISA для конечных пользователей сняло, скорее, не внедрение Plug and Play, а постепенный выход этого стандарта из широкого оборота. Упомянутая спецификация Microsoft ISA PnP, она же Legacy Plug and Play, включала в себя требования как к оборудованию, так и к доработкам BIOS и поведению операционной системы. Она потеряла свою актуальность по мере распространения стандарта PCI, в котором технология Plug and Play была реализована изначально.
В 1995 году Microsoft выпустила Windows 95, в которой впервые попыталась автоматизировать определение установленных устройств и их конфигурирование в той степени, в которой это было вообще возможно и с реализацией режима возврата к ручному конфигурированию системы, если это было необходимо. Во время процесса начальной установки Windows 95 она пыталась первоначально определить все устройства, установленные в системе. Постольку этот процесс не поддерживался индустрией в полном объёме и не обладал обратной совместимостью, операционная система писала журнал, в котором маркировала попытки автоопределения устройств. Если в результате этой процедуры компьютер подвисал, то у пользователя оставалась возможность принудительно его перезагрузить. Процесс автоопределения конфигурации компьютера при новой её загрузке продолжался с пропуском той его фазы, которая ранее вызвала зависание. Таким образом система могла постепенно пройти процедуру определения конфигурации компьютера до конца[9].
VMEbus и производные технологии
Несмотря на то, что в первоначальной реализации шины VMEbus технология Plug and Play реализована не была, ряд расширений и производных стандартов, в частности, VME64x, поддерживает Plug and Play. В целом ситуацию с конфигурированием VMEbus-совместимых плат можно сравнить c ситуацией с платами ISA — не полностью общепринятые стандарты сочетаются с частными решениями отдельных производителей в произвольных комбинациях.
Текущее состояние технологии
В настоящее время основная острота проблемы с автоопределением конфигурации компьютеров операционной системой для компьютеров общего применения давно уже снята. Абсолютное большинство устройств, интерфейсов расширения и операционных систем поддерживает процедуры Plug and Play.
В то же время в большинстве случаев пользователь оказывается лишён контроля за тонкостями настройки своих устройств и периферийных интерфейсов компьютера. Например, такие интерфейсы, как FireWire и USB, делят пропускную способность между всеми устройствами, подключенными к конкретному порту такого интерфейса, но у пользователя нет возможности управлять распределением полосы пропускания между этими устройствами. Оно обеспечивается автоматически средствами операционной системы.
↑Apple II Card Electrical Woes (неопр.). BigMESSoWires.com (Big Mess o' Wires). — «On the Disk II card, while the Apple II was idle, I measured 600 mV… Cut the trace for the B VCC side power supply of 3.3 and use wire wrap wire and solder it to +5v.» Дата обращения: 25 ноября 2018. Архивировано 17 октября 2018 года.
↑Does it pay to Plug and Play (COVER STORY (англ.) // BYTE : magazine. — 1991. — October.
↑The IBM PS/2: 25 years of PC history (неопр.) (10 июля 2012). — «By the time of the PS/2's launch in 1987, IBM PC ... The line launched in April 1987 with ... its new expansion bus, dubbed Micro Channel Architecture.» Дата обращения: 29 ноября 2018. Архивировано 17 октября 2018 года.