Plug and play

Trong tin học, một thiết bị **plug and play** (**PnP**) hoặc bus máy tính là thiết bị có đặc điểm kỹ thuật tạo điều kiện thuận lợi cho việc nhận dạng một thành phần phần cứng trong hệ thống mà không cần cấu hình thiết bị vật lý hoặc sự can thiệp của người dùng trong việc giải quyết các xung đột tài nguyên. Thuật ngữ "plug and play" kể từ đó đã được mở rộng sang nhiều loại ứng dụng khác nhau mà ở đó việc thiếu thiết lập của người dùng cũng được áp dụng tương tự.

Các thiết bị mở rộng được điều khiển và trao đổi dữ liệu với hệ thống máy chủ thông qua các địa chỉ cổng không gian bộ nhớ hoặc I/O được xác định, các kênh truy cập bộ nhớ trực tiếp, các dòng yêu cầu ngắt và các cơ chế khác, vốn phải được liên kết duy nhất với một thiết bị cụ thể để hoạt động. Một số máy tính cung cấp các tổ hợp duy nhất của các tài nguyên này cho mỗi khe cắm của bo mạch chủ hoặc backplane. Các thiết kế khác cung cấp tất cả tài nguyên cho tất cả các khe cắm, và mỗi thiết bị ngoại vi có giải mã địa chỉ riêng cho các thanh ghi hoặc khối bộ nhớ mà nó cần để giao tiếp với hệ thống máy chủ. Vì các phân bổ cố định làm cho việc mở rộng hệ thống trở nên khó khăn, các thiết bị đã sử dụng một số phương pháp thủ công để gán địa chỉ và các tài nguyên khác, chẳng hạn như các jumper được nối dây cứng, các chân cắm có thể được kết nối bằng dây hoặc các dây đai có thể tháo rời, hoặc các công tắc có thể được thiết lập cho các địa chỉ cụ thể. Khi các bộ vi xử lý làm cho máy tính thị trường đại chúng trở nên hợp túi tiền, việc cấu hình phần mềm cho các thiết bị I/O đã mang lại lợi thế cho phép người dùng không chuyên có thể cài đặt. Các hệ thống đời đầu để cấu hình phần mềm cho các thiết bị bao gồm tiêu chuẩn MSX, NuBus, Amiga Autoconfig, và IBM Microchannel. Ban đầu, tất cả các thẻ mở rộng cho IBM PC đều yêu cầu lựa chọn vật lý cấu hình I/O trên bo mạch bằng các dây nối jumper hoặc công tắc DIP, nhưng ngày càng có nhiều thiết bị bus ISA được sắp xếp để cấu hình bằng phần mềm. Đến năm 1995, Microsoft Windows đã bao gồm một phương pháp toàn diện để liệt kê phần cứng tại thời điểm khởi động và phân bổ tài nguyên, được gọi là tiêu chuẩn "Plug and Play".

Các thiết bị plug and play có thể được phân bổ tài nguyên chỉ tại thời điểm khởi động, hoặc có thể là các hệ thống hotplug như USB và IEEE 1394 (FireWire).

## Lịch sử cấu hình thiết bị

Một số thiết bị ngoại vi máy vi tính đời đầu yêu cầu người dùng cuối phải cắt một số dây và hàn các dây khác lại với nhau để thực hiện các thay đổi cấu hình; những thay đổi như vậy được dự định là sẽ cố định phần lớn trong suốt vòng đời của phần cứng.

Khi máy tính trở nên dễ tiếp cận hơn với công chúng, nhu cầu phát triển cho những thay đổi thường xuyên hơn được thực hiện bởi những người dùng máy tính không có kỹ năng sử dụng mỏ hàn. Thay vì cắt và hàn các kết nối, việc cấu hình được thực hiện bằng các jumper hoặc công tắc DIP.
Sau đó, quá trình cấu hình này đã được tự động hóa: Plug and Play.

### MSX
Hệ thống MSX, ra mắt năm 1983, được thiết kế để trở thành plug and play ngay từ đầu, và đạt được điều này bằng một hệ thống các khe cắm (slot) và khe cắm phụ (subslot), trong đó mỗi khe có không gian địa chỉ ảo riêng, do đó loại bỏ các xung đột địa chỉ thiết bị ngay từ nguồn gốc của nó. Không cần jumper hay bất kỳ cấu hình thủ công nào, và không gian địa chỉ độc lập cho mỗi khe cắm cho phép sử dụng các chip rất rẻ và phổ biến, cùng với glue logic giá rẻ.
Về phía phần mềm, các trình điều khiển và phần mở rộng được cung cấp trong ROM riêng của thẻ, do đó không yêu cầu đĩa hay bất kỳ loại can thiệp nào của người dùng để cấu hình phần mềm. Các phần mở rộng ROM đã trừu tượng hóa mọi sự khác biệt về phần cứng và cung cấp các API tiêu chuẩn theo quy định của ASCII Corporation.

### NuBus
}