¿Puede existir un bus PCIe por sí solo?

5

Las soluciones SoC modernas (FPGA + ARM) pueden existir como una placa PCIe, pero también pueden funcionar desconectadas (con una fuente de alimentación de 19 V). Entonces, mi pregunta es: ¿existe una solución que ofrezca solo una placa base / bus PCIe, sin las características típicas de las PC domésticas (como el zócalo de la CPU, las ranuras de RAM, SATA y todo eso)?

Básicamente, lo que busco es simplemente un tejido PCIe de propósito general que puede conectarse a una fuente de alimentación y proporcionar capacidades de alimentación y comunicación a las tarjetas PCIe. En cuanto a las tarjetas que me interesan, estoy hablando principalmente de aceleradores SoC, GPU y Xeon Phi.

P.S .: sí, sé que esto se puede construir sobre las placas base COTS existentes, me pregunto específicamente si hay una solución sin cabeza, y si es incluso factible. Gracias!

    
pregunta Dmitri Nesteruk

1 respuesta

10

Todos los buses PCIe deben tener un "Root Complex" (RC) que es lo que configura y enumera todos los dispositivos. Ya sea que se trate de una PC de escritorio y FPGA, o algún otro dispositivo SoC, depende de usted siempre y cuando proporcione la funcionalidad requerida.

Puede obtener muchos dispositivos SoC, incluidos los híbridos ARM SoC / FPGA que le permitirán proporcionar la funcionalidad RC en una forma compacta. Sin embargo, lo que hay que recordar es que una vez que haya enumerado el bus (una vez que el RC haya detectado todas las tarjetas, direcciones asignadas, etc.), aún debe poder interactuar con cualquier dispositivo que esté usando. Por lo general, eso significa una computadora que ejecuta un sistema operativo que tiene los controladores necesarios para el dispositivo.

Muchos de estos dispositivos SoC pueden ejecutar instalaciones de Linux de pleno derecho que, suponiendo que haya controladores de Linux para su dispositivo, puedan alojar el bus PCIe y controlar todos los dispositivos: se interconectan con módulos informáticos, GPU, etc.

Por supuesto, no siempre se necesita un sistema operativo en ejecución para usar PCIe. PCIe es solo un protocolo de comunicación genérico. Una vez que haya enumerado el bus con su RC, la forma en que se comunica entre dos dispositivos depende totalmente de usted si usted mismo está diseñando los dispositivos. Por ejemplo, podría configurar dos o más dispositivos FPGA en un backplane con uno como RC y otros como puntos finales. A continuación, puede programar su FPGA como desee.

Si se configura con capacidad de bus maestro durante la enumeración, pueden hablar con otros dispositivos, transferir datos, enviar interrupciones, lo que quieran. Pero, lo que es más importante, pueden hacerlo todo con total autonomía, sin necesidad de una computadora o sistema operativo para instruirlos. El único requisito es que exista una estructura definida sobre cómo se hace esto; las otras tarjetas tienen que entender lo que se les dice y saber cómo reaccionar. Puede crear sistemas de FPGA que se comuniquen entre sí y transfieran datos utilizando circuitos lógicos puros en lugar de un sistema operativo.

Esto no se limita solo a los FPGA. Puede incluir GPU y otros dispositivos en su bus. Sin embargo, para hacerlo, debe saber cómo comunicarse con el dispositivo a bajo nivel. Debe saber qué registros hacen qué, qué secuencias de comandos enviar, etc. Para un dispositivo como un FPGA que usted mismo ha programado, eso está bien, pero para cosas como módulos de cómputo y GPU, esta información de bajo nivel no está disponible, y no tendría el lujo de usar los controladores que el fabricante del dispositivo han escrito para los sistemas operativos principales.

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas