Tôi đã từng thiết kế phần cứng PCI-Express cần hỗ trợ đầy đủ phích cắm nóng trong phần cứng và phần mềm, và chắc chắn là có thể, nhưng nó khá liên quan và cần hỗ trợ phần mềm rộng rãi - phần cứng thực sự khá đơn giản. Tôi đã phải thiết kế phần cứng, sau đó triển khai BIOS (UEFI) và hỗ trợ kernel (Linux) cho các thiết bị PCIe tùy ý cắm nóng trên sợi và đồng.
Từ quan điểm phần mềm, người ta phải nhớ rằng PCIe tiếp tục với mô hình phần mềm PCI, bao gồm các khái niệm về bus, thiết bị, địa chỉ chức năng. Khi bus PCI được liệt kê, nó được thực hiện như một tìm kiếm đầu tiên:
Việc liệt kê PCIe thường được thực hiện hai lần. Đầu tiên, BIOS của bạn (UEFI hoặc cách khác) sẽ làm điều đó, để tìm ra ai có mặt và họ cần bao nhiêu bộ nhớ. Dữ liệu này sau đó có thể được chuyển đến HĐH máy chủ, những người có thể lấy nó, nhưng Linux và Windows cũng thường thực hiện quy trình liệt kê riêng của họ. Trên Linux, điều này được thực hiện thông qua hệ thống con PCI lõi, tìm kiếm xe buýt, áp dụng mọi yêu cầu nếu cần dựa trên ID của thiết bị và sau đó tải trình điều khiển có ID phù hợp trong chức năng thăm dò của nó. Thiết bị PCI được ID thông qua sự kết hợp của ID nhà cung cấp (16 bit, ví dụ Intel là 0x8086) và ID thiết bị (16 bit khác) - nguồn internet phổ biến nhất có tại đây: http://pcidatabase.com / .
Phần mềm tùy chỉnh xuất hiện trong quá trình liệt kê này và đó là bạn phải dự trữ trước các số PCI Bus và phân đoạn bộ nhớ cho các thiết bị tiềm năng trong tương lai - đôi khi còn được gọi là ' đệm xe buýt '. Điều này tránh sự cần thiết phải liệt kê lại xe buýt trong tương lai mà thường không thể thực hiện được mà không làm gián đoạn hệ thống. Một thiết bị PCI có BAR ( thanh ghi địa chỉ cơ sở) yêu cầu máy chủ lưu trữ bao nhiêu và loại (bộ nhớ hoặc không gian I / O) mà thiết bị cần - đây là lý do tại sao bạn không cần các trình nhảy như ISA nữa :) Tương tự, nhân Linux thực hiện cắm nóng PCIe thông qua pciehp người lái xe. Windows thực hiện những điều khác nhau dựa trên phiên bản - các phiên bản cũ hơn (tôi nghĩ XP) bỏ qua bất cứ điều gì BIOS nói và thực hiện việc thăm dò riêng. Các phiên bản mới hơn mà tôi tin là tôn trọng ACPI DSDT được cung cấp bởi phần sụn máy chủ (BIOS / EFI) và sẽ kết hợp thông tin đó.
Điều này có vẻ khá liên quan và nó là! Nhưng hãy nhớ rằng bất kỳ máy tính xách tay / thiết bị nào có khe cắm ExpressCard (thực hiện PCIe như bạn có thể có ExpressCards chỉ có USB) đều phải thực hiện việc này, mặc dù nhìn chung phần đệm khá đơn giản - chỉ cần một bus. Phần cứng cũ của tôi từng là một bộ chuyển đổi PCIe có 8 thiết bị khác phía sau nó, vì vậy phần đệm có phần phức tạp hơn.
Từ quan điểm phần cứng, nó dễ dàng hơn nhiều. Các chân GND của thẻ thực hiện liên lạc trước và chúng tôi sẽ đặt IC điều khiển trao đổi nóng từ LTC hoặc tương tự trên thẻ để cấp nguồn sau khi kết nối được thực hiện. Tại thời điểm này, ASIC hoặc FPGA trên bo mạch bắt đầu trình tự khởi động và bắt đầu thử liên kết đào tạo liên kết PCI Express của nó. Giả sử máy chủ hỗ trợ cắm nóng và PCI Express SLTCAP / SLTCTRLthanh ghi (trong thông số kỹ thuật: Thanh ghi khả năng khe cắm PCI Express, Thanh ghi điều khiển khe cắm PCI Express. Có 1 và 2 cho điều này cũng đủ để phân chia thành hai regs). Đối với cổng đó được định cấu hình để cho biết cổng có khả năng cắm nóng, phần mềm có thể bắt đầu liệt kê thiết bị mới. Thanh ghi trạng thái khe cắm (SLTSTA, Thanh ghi trạng thái khe cắm PCI Express) chứa các bit mà thiết bị đích có thể đặt chỉ báo lỗi nguồn, chốt giải phóng cơ học và tất nhiên phát hiện sự hiện diện + sự thay đổi hiện diện.
Các thanh ghi nói trên được đặt trong 'Không gian cấu hình PCI (Express)', là một vùng nhỏ của bản đồ bộ nhớ (4K cho PCIe) được phân bổ cho mỗi bdf tiềm năng (bus: device: function). Các thanh ghi thực tế thường nằm trên thiết bị ngoại vi.
Về phía máy chủ, chúng ta có thể sử dụng PRSNT1 # / PRSNT2 # như các tín hiệu DC đơn giản cung cấp khả năng kích hoạt IC chuyển đổi nguồn hoặc chạy đến GPIO trên chipset / PCH để tạo IRQ và kích hoạt SW 'hey, một cái gì đó đã được chèn , đi tìm nó và cấu hình nó! ' công Việt Hằng ngày.
Đây là rất nhiều thông tin không trả lời trực tiếp câu hỏi của bạn (xem bên dưới để biết tóm tắt nhanh), nhưng hy vọng nó sẽ cung cấp cho bạn một nền tảng tốt hơn để hiểu quy trình. Nếu bạn có bất kỳ câu hỏi nào về các phần cụ thể của quy trình, hãy cho tôi biết trong một nhận xét tại đây hoặc gửi email cho tôi và tôi có thể thảo luận thêm + cập nhật câu trả lời này với thông tin đó.
Tóm lại - thiết bị ngoại vi phải được thiết kế có hỗ trợ phích cắm nóng từ POV phần cứng. Một máy chủ / khe cắm được thiết kế phù hợp cũng có khả năng cắm nóng, và trên một bo mạch chủ cao cấp, tôi hy vọng nó sẽ an toàn. Tuy nhiên, phần mềm hỗ trợ cho vấn đề này hoàn toàn là một câu hỏi khác và bạn không may gặp phải BIOS mà OEM của bạn đã cung cấp cho bạn.
Trong thực tế, bạn sử dụng công nghệ này bất cứ khi nào bạn gỡ / lắp PCICard ExpressCard khỏi máy tính. Ngoài ra, các hệ thống lưỡi hiệu suất cao (viễn thông hoặc cách khác) cũng sử dụng công nghệ này thường xuyên.
Nhận xét cuối cùng - lưu tệp PDF được liên kết của Thông số cơ sở, PCI-SIG thường tính phí cho việc đó :)