¿Cómo se comunica la interfaz de hardware PCI Express con el núcleo del dispositivo?

0

Actualmente estoy leyendo el libro cuyo nombre es "Arquitectura del sistema PCI Express" y necesito algunas respuestas;

1.) ¿Cómo la Interfaz PCI Express envía los TLP (paquetes de la capa de transacción) al núcleo del dispositivo (suponga que el dispositivo es GPU)? ¿La Interfaz PCI Express provoca una interrupción de hardware?

2.) ¿Cómo Pci Express Device Core interpreta estos paquetes?

3.) ¿Cuánto tiempo se necesita para la próxima transmisión de paquetes? ¿Cómo acuerdan el receptor y el transmisor cuándo transmitir y recibir paquetes?

    
pregunta spartacus

2 respuestas

1

Hay muchas capas de abstracción para las interrupciones de PCIe. Tal vez le gustaría leer sobre esto en un nivel de hardware bajo como este núcleo xilinx . Tal vez le interesaría más cómo un sistema operativo lo maneja .

La latencia de la transmisión y el control de flujo serán específicos de la aplicación. Me gustaría señalar que eléctricamente PCIe es dúplex completo, por lo que el control de flujo depende completamente de la aplicación.

Recomendaría explorar el contenido de un controlador de dispositivo Linux.

Quizás puedas ser más específico con tu pregunta. Las personas pasan toda su vida especializándose en la creación de controladores PCIe.

    
respondido por el lm317
0

PCIe es un protocolo de red entre varias entidades que se envían entre sí para leer y escribir solicitudes en sus respectivos espacios de direcciones. Cuando se generan solicitudes, se definen por los dispositivos en el bus. El intercambio de TLP es totalmente simétrico, por lo que el formato es el mismo ya sea que la CPU escriba en una tarjeta de expansión, una tarjeta de expansión inicie una transferencia DMA o dos tarjetas de expansión se comuniquen entre sí.

La CPU y la memoria están conectadas al root complex , que es básicamente un nodo PCIe normal que presenta la memoria del sistema como el espacio de direcciones direccionables (en implementaciones modernas, con una capa de protección / traducción similar a la MMU), así como algunas direcciones especiales que causan que las interrupciones se envíen a la CPU cuando se escriben; también hay paquetes TLP especiales que corresponden a las interrupciones PCI tradicionales ("heredadas").

El mismo mecanismo también funciona para la GPU, excepto que la GPU no entenderá las interrupciones heredadas. Simplemente puede acceder a la memoria de video en paralelo a la GPU, pero escribir en un registro de comando generará una interrupción dentro de la GPU, que redirige el flujo de instrucciones.

El dispositivo PCIe y la GPU se suelen integrar en un solo chip para optimizar los accesos a la RAM de gráficos, pero lógicamente estas son unidades funcionales diferentes.

El control de flujo se implementa utilizando credits , en la capa de enlace (a continuación, debajo de los TLP). En un enlace directo, cada lado anuncia la cantidad de espacio de búfer que queda para los paquetes de un determinado tipo, y se puede enviar el siguiente paquete si hay suficiente espacio disponible (por lo que los paquetes nunca se dividen).

    
respondido por el Simon Richter

Lea otras preguntas en las etiquetas