Multiplexación de canales PCIe

0

Según Wikipedia

  

La velocidad de bits de 8 GT / s de PCI Express 3.0 ofrece 985 MB / s por   carril

985MBps * 8 = 7880MBps (63Gbps).

Si estoy usando una NIC Ethernet de 10 Gbps con interfaz PCIe 3.0 8x y estoy enviando o recibiendo datos a una velocidad de línea completa de 10 Gbps, asumo que mis datos entre el sistema operativo y la tarjeta de red se están multiplexando sobre múltiples canales PCIe en la placa base ranura en la que está mi tarjeta.

Suponiendo que sea correcto, ¿cómo mantiene PCIe el orden de los paquetes cuando se multiplexa en múltiples canales o no hay soporte para ordenar los datos? ¿Cómo obtengo 10Gbps de rendimiento con 8Gbps por canal?

    
pregunta jwbensley

1 respuesta

1

La tarjeta es efectivamente un Serializador / Deserializador (SerDes para abreviar). Una implementación posible es que hay un reloj para el bus paralelo que se ejecuta a la velocidad PCIe 3.0, que bloquea los 8 bits de datos entrantes. Luego, internamente, hay un registro de desplazamiento que se ejecuta a un reloj más rápido (velocidades de 10Gb ethernet) que simplemente lo cambia. El proceso se puede realizar a la inversa para convertir los datos de Ethernet en señales PCIe.

Hay una fuerte correlación entre qué pin PCIe corresponde a qué bit del búfer paralelo, que es lo que garantiza el orden correcto tanto en el modo de transmisión como en el de recepción (ej .: pin 0 es siempre bit 0, pin 1 es siempre bit 1, etc.). El paralelismo está expuesto en el nivel de bits.

Hay más complicaciones cuando se trata de los protocolos Ethernet / PCIG / 10G reales (10Gb Ethernet utiliza una codificación 64b / 66b ), pero esta imagen básica resume principalmente la idea general.

    
respondido por el helloworld922

Lea otras preguntas en las etiquetas