cálculo del rendimiento de PCI-E

2

¿Podría alguien hacer por mí el cálculo del rendimiento total de PCI-E? El mejor material que pude encontrar fue un pdf de Xilinx que mencionó 2.5Gbps como valor de referencia y una fórmula un tanto torpe que no utilizó la velocidad de reloj. Verás, no tuve ningún problema en memorizar esto hasta que alguien dijo 100Mhz y ahora quiero saber cómo 100Mhz se convierten en 2.5 Gbps.

EDIT

Ambas respuestas son muy buenas. Gracias. Desafortunadamente, solo puedo marcar uno.

    
pregunta Pyjong

2 respuestas

2

En primer lugar, el 100MHz al que hace referencia es la frecuencia de reloj de referencia. El reloj de referencia se comparte entre la placa base y los dispositivos, o se crea a partir de un oscilador local. Esto no es parte del cálculo del rendimiento.

Para obtener las frecuencias de reloj del transceptor (la frecuencia de las líneas TX y RX de alta velocidad), se utiliza un dispositivo de bucle de bloqueo de fase (PLL) para aumentar la frecuencia del reloj de referencia a un valor más alto. Las velocidades de reloj son 1.25GHz (2.5 Giga-transferencias por segundo (GTps)) para PCIe Gen 1, 2.5GHz (5GTps) para PCIe Gen 2, o 4GHz (8GTps) para PCIe Gen 3.

Para calcular el rendimiento, necesita saber algunas cosas adicionales.

  • En primer lugar, la velocidad de datos del transceptor no es la misma que la velocidad de datos utilizable. Los transceptores PCIe utilizan un esquema de codificación para los datos para garantizar que no haya ningún componente de CC en las señales de datos, entre otras cosas. Para Gen 1 y 2, se usa un esquema 8: 10b (se envían 10 bits por cada 8 bits de datos) y 128: 130b para Gen 3.

  • En segundo lugar, sus datos no se envían directamente, sino como paquetes (como el tráfico de red). Estos paquetes de capa de transacción (TLP) tienen un encabezado de 16 bytes para cada parte de los datos. Los fragmentos de datos pueden variar de 1 byte a 4095 bytes de tamaño. Normalmente, el tamaño de la carga útil no es superior a 256 bytes en las PC.

  • En tercer lugar, se envían otros datos a través del enlace en partes inferiores del protocolo (es decir, capa de enlace de datos), como paquetes de realineación, control de flujo (créditos de datos), sumas de verificación CRC y paquetes de interrupción.

Juntando eso, el cálculo se convierte en:

$$ \ mathrm {Velocidad de datos de carril} \ times \ mathrm {LaneCount} \ times \ mathrm {Esquema de codificación} \ times \ mathrm {Efficiency} $$

Para Gen 1/2, \ $ \ mathrm {Esquema de codificación} \ $ es \ $ 0.8 (\ frac {8} {10}) \ $, y para Gen 3, \ $ \ mathrm {Esquema de codificación} \ $ es \ $ 0.985 (\ frac {128} {130}) \ $. Esto proporciona el rendimiento ideal de los TLP (incluido el encabezado) de 2Gbps por línea, 4Gbps por línea y 7.88Gbps por línea para Gen 1, 2 y 3 respectivamente.

En cuanto a cuál es el rendimiento real de los datos, eso depende de la eficiencia. Suponiendo que logre enviar de vuelta a los TLP de 256 bytes de carga útil, su \ $ \ mathrm {Efficency} \ $ sería \ $ 0.94 (\ frac {256} {256 + 16}) \ $.

Sin embargo, en la práctica, habrá otros dispositivos en el bus que envían datos y es posible que el consumidor (los datos del dispositivo también se envían) no pueda manejar esa tasa. Además, hay otros paquetes que se utilizan en niveles más bajos del protocolo para alinear los transceptores y el control de flujo. Todo esto reducirá su eficiencia general.

En un sistema basado en un Stratix V FPGA de gama alta que transfiere datos de la FPGA a la memoria DDR4 en una PC con Intel i7, he podido lograr un rendimiento sostenido de alrededor de 57 Gbps en una interfaz Gen3x8. En términos de \ $ \ mathrm {Efficency} \ $, eso equivale a alrededor de \ $ 0.9 (90 \%) \ $ sobre algunas transferencias muy grandes (de varios gigabytes), o 7 Gbps por carril Gen3.

    
respondido por el Tom Carpenter
3

El cálculo simple solo sería el número de carriles multiplicado por la velocidad del carril. Las tasas de carril son de 2 Gbps para PCIe gen 1 (sin procesar de 2.5 Gbps), 4 Gbps para PCIe gen 2 (de 5 Gbps en bruto) y 7.877 Gbps para PCIe de gen 3 (8 Gbps en crudo). Las tasas de carril son más bajas que las tasas brutas del serializador debido a la sobrecarga de codificación (8b / 10b o 128b / 130b). El número de carriles generalmente será de 1, 2, 4, 8 o 16. Entonces, una tarjeta gen 3 x16 le dará 7.877 * 16 = 126 Gbps. Creo que puede haber otros conteos de carriles posibles, pero no son muy comunes. Si desea realizar un cálculo más exhaustivo, debe tener en cuenta la sobrecarga del paquete de capa de transacción (TLP) de PCIe para obtener tamaños de paquetes razonables, que podrían depender del sistema y la aplicación.

El 100 MHz es solo un reloj de referencia que se distribuye a los componentes del sistema. Cada tarjeta alimentará ese reloj de referencia a través de un PLL para generar los relojes de alta frecuencia requeridos para operar a la velocidad de enlace deseada.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas