플러그 앤 플레이

컴퓨팅에서 **플러그 앤 플레이**(Plug and play, **PnP**) 장치 또는 컴퓨터 버스는 물리적인 장치 구성이나 자원 충돌 해결을 위한 사용자 개입 없이 시스템에서 하드웨어 구성 요소를 인식하는 것을 용이하게 하는 사양을 가진 장치 또는 버스를 말한다. "플러그 앤 플레이"라는 용어는 이후 사용자의 설정이 필요 없는 다양한 응용 분야로 확장되었다.

확장 장치는 정의된 메모리 또는 I/O 공간 포트 주소, 직접 메모리 접근 채널, 인터럽트 요청 라인 및 기타 메커니즘을 통해 호스트 시스템과 제어 및 데이터 교환을 하며, 이는 작동을 위해 특정 장치와 고유하게 연결되어야 한다. 일부 컴퓨터는 이러한 자원의 고유한 조합을 메인보드 또는 백플레인의 각 슬롯에 제공했다. 다른 설계는 모든 슬롯에 모든 자원을 제공했으며, 각 주변 장치는 호스트 시스템과 통신하는 데 필요한 레지스터 또는 메모리 블록에 대한 자체 주소 디코딩을 가졌다. 고정된 할당은 시스템 확장을 어렵게 만들었기 때문에, 장치들은 주소 및 기타 자원을 할당하기 위해 하드웨어 점퍼, 전선 또는 제거 가능한 스트랩으로 연결할 수 있는 핀, 특정 주소로 설정할 수 있는 스위치와 같은 여러 수동 방법을 사용했다. 마이크로프로세서가 대중 시장 컴퓨터를 저렴하게 만들면서, 비전문가 사용자도 설치할 수 있도록 I/O 장치의 소프트웨어 구성이 유리해졌다. 장치 소프트웨어 구성을 위한 초기 시스템으로는 MSX 표준, 뉴버스, 아미가 Autoconfig, IBM 마이크로채널 등이 있었다. 처음에는 IBM PC용 모든 확장 카드에 점퍼 스트랩 또는 DIP 스위치로 보드에서 I/O 구성을 물리적으로 선택해야 했지만, 점차 ISA 버스 장치는 소프트웨어 구성이 가능하도록 배열되었다. 1995년까지 마이크로소프트 윈도우는 부팅 시 하드웨어를 열거하고 자원을 할당하는 포괄적인 방법을 포함했으며, 이를 "플러그 앤 플레이" 표준이라고 불렀다.

플러그 앤 플레이 장치는 부팅 시에만 자원을 할당받을 수도 있고, USB 및 IEEE 1394 (FireWire)와 같은 핫플러그 시스템일 수도 있다.

## 장치 구성의 역사
[섬네일|[애플 II용 서드파티 시리얼 인터페이스 카드. 사용자는 X1과 X3의 얇게 연결된 **⧓** 삼각형 사이의 와이어 트레이스를 잘라내고, 카드 중앙의 X2와 X4에 연결되지 않은 **◀▶** 패드에 납땜을 했다. 수정 사항을 되돌리는 것은 더 어려웠다.]]

일부 초기 마이크로컴퓨터 주변 장치들은 최종 사용자가 구성 변경을 위해 물리적으로 일부 전선을 자르고 다른 전선들을 함께 납땜해야 했다. 이러한 변경 사항은 하드웨어 수명 동안 거의 영구적일 것으로 의도되었다.

컴퓨터가 일반 대중에게 더 쉽게 접근 가능해지면서, 납땜 인두 사용에 능숙하지 않은 컴퓨터 사용자들이 더 자주 변경을 해야 할 필요성이 생겨났다. 연결을 자르고 납땜하는 대신, 점퍼 또는 DIP 스위치를 통해 구성이 이루어졌다. 나중에는 이러한 구성 과정이 자동화되어 플러그 앤 플레이가 되었다.

### MSX
1983년에 출시된 MSX 시스템은 처음부터 플러그 앤 플레이가 가능하도록 설계되었으며, 슬롯과 서브슬롯 시스템을 통해 각 슬롯이 자체적인 가상 주소 공간을 가짐으로써 장치 주소 충돌의 근본적인 원인을 제거했다. 점퍼나 수동 구성은 전혀 필요하지 않았으며, 각 슬롯의 독립적인 주소 공간은 매우 저렴하고 일반적인 칩과 저렴한 글루 로직을 사용할 수 있게 했다. 소프트웨어 측면에서는 드라이버와 확장이 카드 자체의 ROM에 제공되어, 소프트웨어를 구성하기 위해 디스크나 어떠한 사용자 개입도 필요하지 않았다. ROM 확장 기능은 모든 하드웨어 차이점을 추상화하고 ASCII Corporation에서 지정한 표준 API를 제공했다.

### NuBus
섬네일|141x141px|점퍼나 DIP 스위치가 없는 뉴버스 확장 카드
1984년, 뉴버스 아키텍처는 매사추세츠 공과대학교(MIT)에서 장치 구성을 완전히 자동화하는 플랫폼 독립적인 주변 장치 인터페이스로 개발되었다. 이 사양은 이전에 상호 호환되지 않던 빅 엔디언 및 리틀 엔디언 컴퓨터 플랫폼 모두에서 작동할 수 있을 정도로 충분히 지능적이었다. 그러나 이러한 플랫폼 독립적 접근 방식은 인터페이스 복잡성을 증가시켰고, 1980년대에는 비용이 많이 들었던 모든 장치에 지원 칩이 필요했다. 그리고 Apple Macintosh와 NeXT 기기에서의 사용을 제외하고는 이 기술은 널리 채택되지 않았다.

### Amiga Autoconfig와 Zorro 버스
1984년, 코모도어는 확장형 컴퓨터인 아미가 라인을 위해 Autoconfig 프로토콜과 Zorro 확장 버스를 개발했다. 첫 공개는 1985년 라스베이거스에서 열린 CES 컴퓨터 전시회에서 "로레인(Lorraine)"이라는 프로토타입으로 이루어졌다. 뉴버스(NuBus)와 마찬가지로 Zorro 장치에는 점퍼나 DIP 스위치가 전혀 없었다. 구성 정보는 각 주변 장치의 읽기 전용 장치에 저장되었으며, 부팅 시 호스트 시스템은 설치된 카드에 요청된 자원을 할당했다. Zorro 아키텍처는 아미가 제품 라인 외의 일반 컴퓨팅 용도로는 확산되지 않았지만, 나중에 Zorro II와 Zorro III로 업그레이드되어 아미가 컴퓨터의 후속 모델에 사용되었다.

### 마이크로 채널 아키텍처
섬네일|200px|점퍼나 DIP 스위치가 없는 MCA 확장 카드
1987년, IBM은 마이크로 채널 아키텍처를 사용하는 Personal System/2 라인 컴퓨터인 IBM PC의 업데이트 버전을 출시했다. PS/2는 완전 자동 자체 구성이 가능했다. 모든 확장 하드웨어에는 컴퓨터와 함께 작동하도록 하드웨어를 자동 구성하는 데 사용되는 특수 파일이 담긴 플로피 디스크가 제공되었다. 사용자는 장치를 설치하고, 컴퓨터를 켜고, 디스크에서 구성 정보를 로드하면 하드웨어가 인터럽트, DMA 및 기타 필요한 설정을 자동으로 할당했다.

그러나 디스크가 손상되거나 분실되면 문제가 발생했는데, 당시 교체품을 얻을 수 있는 유일한 방법은 우편 또는 IBM의 전화 접속 BBS 서비스를 통하는 것이었다. 디스크가 없으면 어떤 새로운 하드웨어라도 완전히 쓸모없게 되었고, 구성되지 않은 장치를 제거할 때까지 컴퓨터가 전혀 부팅되지 않는 경우도 있었다.

마이크로 채널은 널리 보급되지 못했다. 이는 IBM이 복제 제조업체를 이 차세대 컴퓨팅 플랫폼에서 배제하려 했기 때문이다. MCA용으로 개발하는 모든 사람은 비공개 계약에 서명하고 판매된 각 장치에 대해 IBM에 로열티를 지불해야 했으며, 이는 MCA 장치에 가격 프리미엄을 부과하는 결과를 낳았다. 최종 사용자와 복제 제조업체들은 IBM에 반발하여 자체적인 개방형 표준 버스인 EISA를 개발했다. 결과적으로 MCA는 IBM의 메인프레임에서만 사용되고 다른 곳에서는 쇠퇴했다.

## ISA와 PCI 자동 구성
시간이 지나면서, 많은 ISA (Industry Standard Architecture) 카드들은 독자적이고 다양한 기술을 통해 하드웨어를 자동 구성하거나 소프트웨어 구성 기능을 제공했다. 종종 카드에는 소프트웨어로 구성 가능하지만 자체적으로는 자동 구성되지 않는 하드웨어를 자동으로 설정할 수 있는 구성 프로그램이 디스크에 포함되어 있었다. 일부 카드에는 점퍼와 소프트웨어 구성이 모두 있었고, 일부 설정은 각각에 의해 제어되었다. 이러한 절충은 설정해야 하는 점퍼의 수를 줄이면서, 예를 들어 기본 주소 설정을 위한 비휘발성 레지스터와 같은 특정 설정에 대한 큰 비용을 피할 수 있게 했다. 필요한 점퍼 문제는 계속되었지만, ISA 및 기타 유형의 장치에 자동 구성 하드웨어가 점점 더 많이 포함되면서 점차 줄어들었다. 그러나 이러한 노력만으로는 최종 사용자가 하드웨어에 적합한 소프트웨어 드라이버를 가지고 있는지 확인하는 문제를 해결하지 못했다.

ISA PnP 또는 (레거시) 플러그 앤 플레이 ISA는 하드웨어, 시스템 BIOS, 운영 체제 소프트웨어의 수정 사항을 조합하여 리소스 할당을 자동으로 관리하는 플러그 앤 플레이 시스템이었다. 이는 1990년대 중반 PCI 버스에 의해 대체되었다.

PCI 플러그 앤 플레이(자동 구성)는 1990년대 PCI BIOS 사양을 기반으로 하며, PCI BIOS 사양은 2000년대 ACPI에 의해 대체되었다.

## 레거시 플러그 앤 플레이

1995년에 마이크로소프트는 윈도우 95를 출시했는데, 이 운영체제는 장치 감지 및 구성을 가능한 한 자동화하려고 노력했지만, 필요한 경우 수동 설정으로 되돌아갈 수도 있었다. 윈도우 95의 초기 설치 과정에서 시스템에 설치된 모든 장치를 자동으로 감지하려고 시도했다. 모든 것을 완전히 자동 감지하는 것은 완전한 산업 지원이 없는 새로운 프로세스였기 때문에, 감지 과정에서 진행 상황 추적 로그 파일에 계속 기록되었다. 장치 탐색에 실패하고 시스템이 멈추는 경우, 최종 사용자는 컴퓨터를 재부팅하고 감지 프로세스를 다시 시작할 수 있었으며, 설치 프로그램은 추적 로그를 사용하여 이전 중단 지점을 건너뛸 수 있었다.

당시 시스템에는 자동 구성이 가능한 장치와 점퍼 및 DIP 스위치를 통해 여전히 수동 설정을 사용하는 장치가 혼합되어 있을 수 있었다. 도스의 오래된 환경이 여전히 윈도우 95 아래에 잠복해 있었으며, 시스템은 세 가지 다른 방식으로 장치를 로드하도록 구성될 수 있었다.
* 윈도우 95 장치 관리자 드라이버만 사용
* CONFIG.SYS 및 AUTOEXEC.BAT 구성 파일에 로드된 도스 드라이버 사용
* 도스 드라이버와 윈도우 95 장치 관리자 드라이버를 혼합하여 사용

마이크로소프트는 모든 장치 설정을 완전히 제어할 수 없었으므로, 구성 파일에는 윈도우 95 자동 구성 프로세스에 의해 삽입된 드라이버 항목과 컴퓨터 사용자가 수동으로 삽입하거나 수정한 드라이버 항목이 혼합되어 포함될 수 있었다. 윈도우 95 장치 관리자는 또한 여전히 수동 구성이 필요한 장치에 대한 자원을 확보하기 위해 여러 반자동 구성 옵션을 사용자에게 제공할 수 있었다.

섬네일|PC ISA 인터페이스에서 흔히 발생하는 문제인 극히 제한된 인터럽트 선택 옵션을 가진 ISA 인터페이스 카드의 예시.<br>Kouwell KW-524J 듀얼 시리얼, 듀얼 패러렐 포트, 8비트 ISA, 1992년 제조:<br>* 시리얼 1: IRQ 3/4/9<br>* 시리얼 2: IRQ 3/4/9<br>* 패러렐 1: IRQ 5/7<br>* 패러렐 2: IRQ 5/7<br>(3,4,5,7,9 모두 각 포트의 선택 가능한 옵션이 될 수 없는 기술적인 이유는 없다.)
또한, 일부 후기 ISA 장치는 자동 구성이 가능했지만, PC ISA 확장 카드가 인터럽트 요청 라인에 대해 매우 적은 수의 선택지만을 허용하는 것이 일반적이었다. 예를 들어, 네트워크 인터페이스는 인터럽트 3, 7, 10으로만 제한될 수 있었고, 사운드 카드는 인터럽트 5, 7, 12로만 제한될 수 있었다. 이는 이미 다른 장치에 의해 사용되는 인터럽트가 있는 경우 구성 선택지가 거의 없음을 의미한다.

PC 컴퓨터의 하드웨어는 인터럽트를 공유할 수 없었기 때문에 장치 확장 옵션을 추가적으로 제한했다. 일부 다기능 확장 카드는 듀얼 포트 시리얼 카드와 같이 각 시리얼 포트에 별도의 인터럽트가 필요한 경우와 같이 다른 카드 기능에 대해 여러 인터럽트를 사용하기도 했다.

이러한 복잡한 운영 환경으로 인해 자동 감지 프로세스는 때때로 부정확한 결과를 초래했으며, 특히 확장 장치가 많은 시스템에서 그러했다. 이는 윈도우 95 내에서 장치 충돌을 야기하여 완전히 자체 구성되어야 할 장치가 작동하지 않는 결과를 낳았다. 장치 설치 프로세스의 불안정성으로 인해 플러그 앤 플레이는 때때로 플러그 앤 프레이(Plug and Pray)라고 불리기도 했다.

대략 2000년까지는 ISA 및 PCI 슬롯이 혼합된 PC 컴퓨터를 여전히 구매할 수 있었기 때문에 수동 ISA 장치 구성이 필요할 수 있었다. 그러나 윈도우 2000 및 윈도우 XP와 같은 새로운 운영 체제가 연속적으로 출시되면서, 마이크로소프트는 자동 감지를 지원하지 않는 구형 장치에 대해 더 이상 드라이버를 제공하지 않겠다고 말할 수 있는 충분한 영향력을 갖게 되었다. 어떤 경우에는 사용자가 다음 운영 체제 릴리스를 지원하기 위해 새로운 확장 장치 또는 완전히 새로운 시스템을 구매해야 했다.

## 현재의 플러그 앤 플레이 인터페이스
현재 여러 완전히 자동화된 컴퓨터 인터페이스가 사용되고 있으며, 이들은 소프트웨어 설치 외에는 컴퓨터 사용자의 장치 구성이나 다른 조치를 필요로 하지 않는다. 이러한 인터페이스에는 다음이 포함된다.

* IEEE 1394 (FireWire)
* PCI, 미니 PCI
* PCI Express, 미니 PCI 익스프레스, 선더볼트
* PCMCIA, PC Card, 익스프레스카드
* SATA, 시리얼 부착 SCSI
* USB
* DVI, HDMI

이러한 인터페이스 대부분의 성능에 대한 기술 정보는 최종 사용자에게 거의 제공되지 않는다. FireWire와 USB 모두 모든 장치가 공유해야 하는 대역폭을 가지고 있지만, 대부분의 최신 운영 체제는 사용 중이거나 사용 가능한 대역폭의 양을 모니터링하고 보고하거나 현재 인터페이스를 사용 중인 장치를 식별할 수 없다.

## 같이 보기
* 설정보다 관습 (PnP의 원칙)
* Autoconfig (아미가)
* 핫 스와핑
* PCI 구성 공간

## 각주

## 외부 링크
* 윈도우 2000의 플러그 앤 플레이 (ZDNet)
* https://community.rapid7.com/docs/DOC-2150 

분류:메인보드
분류:컴퓨터 주변기기