¿Por qué PCIe y sistemas de señalización similares no usan enlaces dúplex completos?

4

Me gustaría obtener más ancho de banda PCIe para las aplicaciones informáticas de GPU. Se me ocurrió que los enlaces bidireccionales PCIe son en realidad un doble simplex (un par de enlaces unidireccionales). Eso significa que si no hay datos para transmitir en 1 dirección, ¡la mitad de los enlaces están inactivos!

Entonces, mi pregunta es obviamente, ¿por qué no permitir que los enlaces sean bidireccionales (half-duplex)?

No puedo pensar en ninguna otra capa física de red que sea bidireccional, excepto I2C y Wifi, que dudo que pueda alcanzar velocidades de GhZ. ¿La alta velocidad es incompatible con la bidireccionalidad?

Actualizar: Pensé en una interfaz bidireccional de alta velocidad: un bus de memoria. ¡La memoria XDR usa señalización diferencial y reclama 20 Gbits / s por pin! ¿Por qué funciona para la memoria pero no para PCIe?

    
pregunta Yale Zhang

3 respuestas

4

Creo que está asumiendo que el número de rutas físicas es el cuello de botella, y que si solo tuviera más ancho de banda, la lógica dentro de la GPU ya no se contendría. No creo que ese sea realmente el caso. Para brindarle más ancho de banda en una dirección, necesita más área, energía y recursos dedicados a los receptores. Entonces, toda su canalización debe diseñarse para que sea compatible con esta nueva doble velocidad de datos. Por no mencionar que una serda de alta velocidad es una bestia compleja, por lo que ahora harías cada pieza aún más difícil al tratar de soportar tanto RX como TX.

Cuando los diseñadores quieren duplicar el ancho de banda, es simple simplemente agregar carriles, solo paso y repetir. Cuando PCI-SIG quiere aumentar la velocidad máxima para la próxima generación, es más fácil agregar funciones y aumentar la frecuencia.

PCIe en particular se basa en el concepto de que cada par de carriles es bidireccional. Desde el momento en que se inicia y negocia la velocidad y los parámetros de TX / RX, para luego controlar el flujo. Si decidiera quitar un TX y cambiarlo a un RX, ahora otro TX en una parte separada del chip tendría que asumir sus funciones y todo se vuelve bastante complicado.

Aunque técnicamente, si alguien deseara diseñar un sistema de enlace de HS que le permitiera cambiar su TX a RX para un ancho de banda de recepción adicional, se podría hacer. Pero realmente solo tendría sentido si los pines fueran caros, porque ¿por qué agregar toda la complejidad a su sistema y diseño para admitir esto cuando podría agregar solo algunos pines?

    
respondido por el Some Hardware Guy
1
  

¿La alta velocidad es incompatible con la bidireccionalidad?

Sí, debido al tiempo de respuesta. Se necesita aproximadamente 1 ns para que una señal viaje 30 cm, más el retardo a través de TX y RX en cada extremo. Por lo tanto, tomará al menos varios nanosegundos, posiblemente cientos de nanosegundos, para invertir la dirección.

Luego tiene que averiguar cómo controlar el cambio, lo que hace que la señalización sea más compleja e impone una latencia propia. Tenga en cuenta que los carriles PCIe pueden no tener un retardo de propagación exactamente idéntico, por lo que las señales que se activan al mismo tiempo pueden llegar en diferentes momentos.

    
respondido por el pjc50
1

Me siento mal por responder a mí mismo, pero a diferencia de la mayoría de las personas que piensan que no se puede hacer de manera eficiente, creo que la respuesta está más calificada.

Estoy de acuerdo en que no se puede hacer para PCIe. El supuesto principal es que la comunicación es igual a igual. Entonces, sería bastante difícil, como reclamó SomeHardwareGuy porque si estás intentando enviar y no hay TX disponibles, deberías almacenar tu paquete en un búfer.

Pero la comunicación bidireccional a velocidades de GHz es posible en un bus de memoria. La diferencia clave debe ser que solo el controlador de memoria inicia la comunicación, por lo que se sabe con precisión en qué ciclos de reloj quién debe transmitir y quién debe recibir (Wow, entonces esos tiempos de memoria (por ejemplo, tCAS) no son solo para presumir, sino que son en realidad para sincronizar el controlador de memoria con la memoria). Eso significa que no hay necesidad de almacenar paquetes en búfer y no hay necesidad de negociar si se deben usar enlaces para RX o TX.

    
respondido por el Yale Zhang

Lea otras preguntas en las etiquetas