¿Método de transferencia de datos de PCI Express? Serie vs paralelo

2

Esto es probablemente muy básico, así que por favor, descárgate conmigo.
Por un lado, leí que PCIe se usa para la comunicación de datos en serie, pero por otro lado, viene con los sabores x1, x2, x4, x8, x16 y x32.
Pero, ¿cuál es el uso, o más bien, el punto de tener, digamos, 32 vías para una comunicación de datos en serie?

* EDIT

Tal vez debería haber elaborado.

Claro, 32 líneas significa 32 veces más rápido, pero entonces no puede decir que la comunicación es serie , porque por definición significa que cada ciclo de reloj transfiere un bit de información, mientras que en PCIe x32 , 32 bits se transfieren en cada ciclo de reloj.

    
pregunta so.very.tired

2 respuestas

6

Es 32 veces más rápido.

Las tarjetas gráficas requieren una gran cantidad de transferencia de datos de alta velocidad, por lo que obtienen muchos carriles; otros dispositivos como tarjetas de sonido e interfaces seriales pueden ser atendidos adecuadamente por un solo carril, que es más barato.

En respuesta a su edición:

  

Claro, 32 líneas significa 32 veces más rápido, pero entonces no se puede decir que la comunicación sea en serie, porque por definición significa que cada ciclo de reloj transfiere un bit de información, mientras que en PCIe x32, se transfieren 32 bits a cada uno ciclo de reloj

No del todo: ¡los carriles no están sincronizados entre sí! Esa es la diferencia clave entre varios carriles en serie y una interfaz paralela. Cada carril tiene su propio reloj. Incluso si varios carriles transmiten de manera sincrónica, ya que no es necesario que los carriles tengan exactamente la misma longitud que pueden recibir de forma asíncrona.

enlace explica esto.

(Estoy tratando de encontrar una buena explicación de si los bytes están divididos en los carriles disponibles antes o después de que se aplique la codificación 8b / 10b, pero este detalle de la capa física parece no tener una explicación clara)

    
respondido por el pjc50
3

El punto es, por supuesto, la velocidad.

Actualmente hay tres versiones de PCI Express con una cuarta versión en desarrollo. La versión 1 usó una tasa de señalización en serie de 2.5GHz. Por lo tanto, si se utilizara una tarjeta / zócalo de ancho x1, el ancho de banda de señalización máximo es de 2.5G * (10 bits para 1 byte) = 250MB / s. Se señalizan 10 bits para 8 bits de datos, por lo que la eficiencia es del 80%. Por supuesto, hay pares de cables TX y RX para la comunicación en cada "ancho" o "carril" de la ranura, por lo que una ranura x1 tiene 1 ruta TX y 1 ruta RX, ya que es "línea". Las ranuras de ancho x2 rara vez se ven en mi experiencia. x4 es 4 carriles TX y 4 carriles RX, permitiendo 250MB / s * 4 = 1GB / s. x8 slot = 2GB / s. Ranura x16 = 4GB / s.

PCIe v2.0 duplicó la velocidad de señalización de 2.5GHz a 5.0GHz, lo que por supuesto duplica todos los anchos de banda anteriores.

PCIe v3.0 no pudo duplicar la velocidad de señalización, pero la elevó a 8.0GHz. También cambiaron la especificación para incluir menos bits de verificación, enviando 130 bits por 128 bits de datos, aumentando la eficiencia a 98.46%. ranura x1 = 8.0G * (128bits / 130bits) = 985MB / sa x16 slot = 15.754GB / s.

PCIe v4.0 todavía se está especificando, pero en 2017, pretende aumentar la velocidad de señalización hasta 16.0GHz, duplicando efectivamente las velocidades de v3.0. El esquema de codificación no ha cambiado (todavía).

Agregado (para responder una pregunta refinada):

Este enlace explica por qué los enlaces serie son más rápidos que los paralelos, y esencialmente dice que los enlaces paralelos se ven más afectados por los problemas de demora de propagación y de interferencia, ya que las velocidades de reloj aumentan, lo que limita su velocidad. Los enlaces serie utilizan un sistema de transmisión "diferencial" o "de fase opuesta", donde se utilizan dos cables para cada enlace TX y RX. Los cables se conducen con voltajes de polaridad opuestos, de manera que el receptor solo necesita detectar si las señales son de una u otra forma, lo que casi elimina los problemas que afectaban a los enlaces paralelos. Esta es la razón por la que los enlaces seriales pueden ir al rango de gigahertz, y los enlaces paralelos son mucho más limitados.

Y de lo mencionado Artículo de Wikipedia , "Los datos transmitidos en enlaces de varios carriles están intercalados, lo que significa que cada byte sucesivo se envía por carriles sucesivos. La especificación de PCIe se refiere a este intercalado como separación de datos. Si bien requiere una complejidad de hardware significativa para sincronizar (o descifrar) los datos segmentados entrantes, la segmentación puede reducir significativamente la latencia del byth n en un enlace. "

AndrewM tiene que decir, " La respuesta es que los enlaces en serie de varios carriles conectan los bytes a través de los carriles en el remitente y los almacenan en la memoria contigua en el receptor (según corresponda). Esto mantiene la resistencia a las diferencias de tiempo de propagación, al tiempo que aumenta el ancho de banda. "

De modo que los datos están a rayas , al mismo tiempo, bajan todos los enlaces al mismo tiempo. Por lo tanto, los datos se dividen en bloques y se envían, en paralelo (más o menos, el trabajo del receptor para sincronizar los datos), bajando todos los enlaces disponibles. es una forma de paralelización ... solo usando enlaces seriales.

    
respondido por el rdtsc

Lea otras preguntas en las etiquetas