Me gustaría aclarar cómo funciona el espacio de direcciones de configuración en PCI y PCIe.
Es decir, un periférico PCI en un bus se dirige con el par device:function
(el bus
o el domain:bus
no están incluidos, ya que solo se considera 1 bus).
¿Cómo se determina la dirección device
? ¿Qué lo establece?
Según la respuesta a esta pregunta en superusuario y en otros textos, la dirección device
es en realidad la dirección de la ranura PCI y, por lo tanto, debe conectarse en el hardware durante la fabricación. ¿Es correcto?
Entonces, ¿cómo se define esta dirección en el caso de PCIe?
De la misma respuesta:
cada dispositivo tiene su propia conexión en serie punto a punto individual a su dispositivo ascendente
- por lo tanto, en PCIe, cada ranura está conectada a un dispositivo de conmutación ascendente en topología en estrella. ¿Y las direcciones de las ranuras son reasignadas por el interruptor al reiniciar? (Entonces, cuando se enciende, el conmutador llama a los dispositivos en cada ranura y si hay una respuesta, ¿el conmutador asigna device
a la ranura?) Como en la misma respuesta:
(por lo tanto, cada puente, incluido el "complejo raíz" de nivel superior, le dice a cada dispositivo cuál será su ID de dispositivo)
¿O también se resuelven en hardware / firmware del switch? (Y el interruptor siempre tiene una dirección device
asignada a esos cables que van a una ranura).
Parece que para que la capacidad de conexión en caliente sea más fácil, cada ranura debe tener una dirección permanente en el bus (en la "red" del conmutador PCIe).