Bagaimana cara perangkat ditentukan dalam penghitungan PCI? (bus / perangkat / fungsi)

8

Saya bingung tentang enumerasi PCI Bus / Perangkat / Fungsi. Melihat halaman Wikipedia untuk konfigurasi PCI , saya melihat bahwa untuk bus yang diberikan, master akan meminta ID vendor dan ID perangkat untuk semua perangkat yang menggunakan fungsi 0. Jika semua 0xFF dikembalikan, maka tidak ada perangkat di sana, dan penghitungan melanjutkan. Jika ID perangkat dan ID vendor yang valid ditemukan, maka ada unit PCI di sana dan itu akan disebutkan. Saya tidak yakin bagaimana perangkat di bus.device.function ditentukan.

Sebagai contoh, katakanlah saya memiliki CPU dengan satu bus PCI dan satu periferal PCI yang terpasang padanya. Saya mengerti bahwa CPU akan melihat bus 0 (secara default) dan akan memeriksa semua nomor perangkat yang melihat fungsi 0. Bagaimana cara menentukan nomor perangkat periferal?

simple_symbols
sumber

Jawaban:

6

Dalam kerangka PCI asli ("PCI Konvensional") dan PCI-X juga, perangkat terkait dengan "slot", masing-masing dengan konektornya sendiri terpasang ke bus paralel yang sama. Setiap slot memiliki pin ID unik yang dinyatakan selama enumerasi. Pencacahan pada dasarnya bertanya (untuk setiap slot): "Hei, apakah ada sesuatu di slot ini?" Perangkat merespons dengan mengarahkan data ke bus sebagai respons terhadap sinyal ini. Kurangnya respons berarti tidak ada perangkat.

Perangkat juga bisa menjadi "jembatan" yang berarti bahwa itu membentuk bus bawahan. Bus itu akan memiliki ID terpisah (ditugaskan dari hulu), dan akan memiliki set slot sendiri yang disebutkan secara independen.

PCI-Express (PCIe) sama sekali berbeda. PCIe sebenarnya bukan bus - seperti sumber daya yang dibagikan di antara perangkat; sebaliknya setiap perangkat memiliki sambungan serial point-to-point sendiri ke perangkat hulu (dan ke perangkat hilir - dan jika memiliki perangkat hilir, itu berarti berfungsi sebagai jembatan juga). Pikirkan PCIe seperti LAN. Setiap jembatan dianalogikan dengan sakelar, yang memiliki banyak port yang terhubung ke perangkat lain. Perangkat lain mungkin perangkat terminal, atau mungkin switch lain (yaitu PCIe bridges).

PCIe dirancang sedemikian rupa sehingga kerangka kerja konseptual dan pengalamatannya (dan karenanya perilaku yang disediakan untuk perangkat lunak) kompatibel dengan PCI dan PCI-X. Implementasinya sangat berbeda. Dalam pencacahan perangkat, misalnya, karena itu point-to-point, satu-satunya pertanyaan yang perlu ditentukan pada setiap titik dalam pencacahan adalah "ada apa di sana?" Karena setiap perangkat memiliki rangkaian kabel sendiri, ID perangkat pada dasarnya semua kode keras (karenanya setiap jembatan, termasuk "root complex" tingkat atas, memberi tahu setiap perangkat apa ID perangkatnya nantinya).

Dalam semua kasus, bagian "fungsi" dari bus / perangkat / fungsi ditangani secara ketat di dalam periferal. Misalnya, pengontrol NIC port ganda sering kali memiliki dua fungsi, satu untuk setiap port. Mereka dapat dikonfigurasi dan dioperasikan secara independen, tetapi jalur data dari CPU ke fungsi adalah sama untuk keduanya.

Gil Hamilton
sumber
1
Jawabannya agak membingungkan: 1) di PCI "nomor perangkat" sebenarnya berarti "nomor slot" (dan masuk akal), 2) Anda mengatakan "PCIe benar-benar berbeda" dan "karena setiap perangkat memiliki set kabel independen sendiri." , ID perangkat pada dasarnya semua hard-coded ", yang berarti set kabel (= slot) memiliki ID hard-coded untuk itu, sehingga sama dengan di PCI. Sekarang, pertanyaannya adalah kapan "hard-coding" terjadi? Switch / jembatan menetapkan ulang ID pada reset?
xealits
2
Ya. Itu bisa dikatakan lebih baik. Intinya adalah bahwa di PCI, kartu berada di bus bersama tetapi "tahu" slot apa yang ada di dalamnya dan hanya merespons ketika pin slot-spesifiknya dinyatakan. Dalam PCIe, bridge memiliki N set "kabel" yang berbeda. Jadi perangkat jembatan memiliki nomor slot diskrit untuk setiap set kabel. Dari sudut pandang jembatan, slot itu memiliki angka yang pasti; hanya harus menentukan apakah ada sesuatu di sana. Kartu itu sendiri tidak tahu apa slotnya. Setelah jembatan menentukan ada sesuatu di sana, itu kemudian memberi tahu perangkat itu apa nomor slotnya.
Gil Hamilton