viernes, 14 de junio de 2013

TRABAJO No. 8 - Introducción al bus PCIe

Introducción al bus PCIe

Esta página es parte del documento "El bus PCI-Express" (va al Índice general)
PCI-Express[1] es la evolución del bus PCI, es una reformulación radicalmente distinta de este aunque mantiene totalmente la compatibilidad software. PCI-Express es un bus, i.e, una red de comunicaciones de alta velocidad en distancias cortas y con baja latencia para interconectar dispositivos y tarjetas entre sí dentro de un chasis. Sus características más importantes son:
  • Es una red punto a punto de conmutación de paquetes.[2] La red se construye mediante enlaces punto a punto full-dúplex + conmutadores. Cada enlace está compuesto por uno o varios lanes, que son dos pares de hilos, un par de transmisión y otro de recepción como muestra la Ilustración 1. Cada par es un canal símplex en el que la señal de tensión transmitida es diferencial (LVDS - Low Voltage Diferential Signaling), lo que mejora la inmunidad al ruido
  • La arquitectura de la red está divida en capas. El transceptor PCIe implementa en hardware los 3 niveles inferiores del modelo OSI. Estos niveles son: Nivel de transacción (Transaction Layer), Nivel de enlace (Link layer), Nivel físico (Physical Layer) y se explican en el Apartado 2
  • La transmisión es serie.[3] En cada lane la transmisión de bits en ambos sentidos es en serie lo que evita el problema del jitter (el desfase entre las señales que viajan en paralelo a través del bus) en el receptor, que se produce siempre en alta velocidad
  • La velocidad del bus es escalable añadiendo más lanes al enlace. Cada lane proporciona (especificación inicial) una velocidad bruta[4] de 250MB/s/sentido. La norma admite 1 (x1), 2 (x2), 4 (x4), 8 (x8), 16 (x16) y 32 (x32) lanes por enlace. El ancho del conector varía en función de este número como muestra la Ilustración 2
  • Calidad de servicio (QoS). Es capaz de diferenciar distintos tipos de tráfico[5] y de ofrecer cierto nivel de calidad de servicio (QoS – Quality of Service) como se explicará más adelante
  • Compatibilidad software con PCI. La interfaz software del bus (el “driver model”) permanece igual, no hay que cambiar los drivers del sistema operativo ni el software de sistema, todo queda exactamente igual. Se trata por tanto de una evolución y no de una revolución, algo lógico teniendo en cuenta la inercia del mercado.
  • Conexión y cambio de tarjetas en caliente. Especialmente importante en servidores.


Table of Contents

 [hide

Enlace básico x1

Fig. 1. Enlace básico x1 (lane)
Fig. 2. Conectores PCIe
Un enlace básico del bus está compuesto por un lane, que, como se ha dicho, son 2 pares de hilos. Cada par es un canal símplex que transporta una señal LVDS (Low Voltage Diferential Signaling). La velocidad básica de un lane es 250MB/s/sentido.
La Fig. 1. muestra un lane: son dos pares de hilos (cada flecha gruesa es un par), uno de TX y otro de RX. Los datos se transmiten en serie y en paquetes/tramas.
Un enlace puede tener más de un lane para aumentar así su velocidad. Los conectores varían su ancho en función del número de lanes como muestra la Fig. 2.
Tabla 1. La velocidad del enlace es escalable incrementando el número de lanes
Bus Velocidad (MB/s)
PCI (32bit-33MHz) 132
PCIe, conector x01 250 (básica)
PCIe, conector x04 1000 (=250x4)
PCIe, conector x08 2000 (=250x8)
PCIe, conector x16 4000 (=250x16)

La norma PCI-Express asegura que una tarjeta x1 puede conectarse en todos conectores más anchos y negociar la velocidad básica[6] x1. No ocurre lo mismo con tarjetas x2 y superiores en las que se permite que podamos introducir la tarjeta en el conector, pero no que la tarjeta funcione, tal como se muestra en la Tabla 2
Tabla 2. Interoperabilidad entre tarjetas y conectores (slots)
Tarjeta\Slot x1 x4 x8 x16
x1 Garantizado Garantizado Garantizado Garantizado
x4 No Garantizado Permitido Permitido
x8 No No Garantizado Permitido
x16 No No No Garantizado
Si tenemos dos tarjetas x4 insertadas en zócalos también x4, eso no significa necesariamente que el enlace sea x4, puede ser menor. Durante la fase de inicialización, el nivel físico de las tarjetas negocia el número de lanes que se usan, y este puede ser menor si una de las partes por alguna razón no admite esa velocidad.

Especificaciones mecánicas

Fig. 3. Conector x1 (36 pines)
Fig. 4. Conector x16 (164 pines)
Existen diferentes especificaciones mecánicas para el conector en función del tamaño de la tarjeta (form factor). Para los conectores estándar x1 y x4 en placa base, sus dimensiones físicas se muestran en la Ilustración 3 y la Ilustración 4, y los pines del conector x1 en la Tabla 3. Como ya hemos dicho, hay 4 tamaños diferentes de conector, todos ellos poseen una ranura en el extremo de 1.78mm que impide conectar la tarjeta al revés y pines espaciados 1.00mm. El conector x1 es el más pequeño y tiene 36 pines, el x4 tiene 64 pines, el x8 tiene 98 y el x16 tiene 164 pines. La altura del conector sobre la placa es de 11mm. La profundidad de todos ellos es de 8.70mm
Fig. 5. Esquema eléctrico un enlace básico PCI-Express, la longitud del cable en general debe ser menor de 50.8cm
La Ilustración 5 muestra el esquema eléctrico de un enlace (un lane). Aunque la norma dice que la longitud de los enlaces debe ser menor de 50.8cm, bajo ciertas condiciones de impedancia en el backplane, se pueden permitir distancias mayores. La señal transmitida es LVDS (Low Voltage Diferential Signal) lo que dota a los enlaces PCIe de una alta capacidad e inmunidad al ruido.


Tabla 3: Señales del conector x1 (36 pines)
Pin Fila B del conector Fila A del conector
# Nombre Descripción Nombre Descripción
01 +12V +12V PRSNT#1 Hot plug presence detect
02 +12V +12V +12V +12V
03 RSVD Reserved +12V +12V
04 GND Ground GND Ground
05 SMCLK SMBus clock JTAG2 TCK
06 SMDAT SMBus data JTAG3 TDI
07 GND Ground JTAG4 TDI
08 +3.3V +3.3V JTAG5 TMS
09 JTAG1 +TRST# +3.3V +3.3V
10 +3.3Vaux +3.3V +3.3V +3.3V
11 WAKE#' Link Reactivation PWRGD Power Good
12 RSVD Reserved GND Ground
13 GND Ground REFCLK+ Reference Clock, Differential pair
14 HSOp(0) Transmitter Lane 0, Differential pair REFCLK- Reference Clock, Differential pair
15 HSOn(0) Transmitter Lane 0, Differential pair GND Ground
16 GND Ground HSIp(0) Receiver Lane 0, Differential pair
17 PRSNT#2 Hotplug detect HSIn(0) Receiver Lane 0, Differential pair
18 GND Ground GND Ground


Fig. 6. Ancho de banda/pin de diferentes buses
La trasmisión serie de esta tecnología de bus permite reducir drásticamente el número de pines de los conectores reduciendo la complejidad del cableado y enrutamiento de pistas. En la XXX se puede ver la relación “Ancho de banda/pin” de diferentes tecnologías de bus, calculada como “Velocidad máxima de pico/número total de pines incluyendo alimentación, direccionamiento y control”.


Arquitectura de red

PCI-Express, a diferencia de PCI, es una red construida mediante enlaces punto a punto y conmutadores de paquetes (Fig. 7 y Fig. 8). Las redes de acceso múltiple como PCI son redes difícilmente escalables y sus prestaciones se degradan rápidamente al aumentar el número de usuarios/dispositivos.
Fig. 7. Red punto a punto (PCI-Express)
Fig. 8. Red de acceso múltiple (PCI)
En PCI-Express, en cambio, la escalabilidad del bus es doble ya que, por una parte, podemos añadir más enlaces para conectar más dispositivos a media que se necesite y, por otro lado, podemos aumentar la velocidad de cada enlace de la red usando más lanes[1] (conectores más anchos). Una arquitectura de red típica PCI-Express se puede ver en la Fig. 9, el detalle del conmutador de tramas se muestra en la Fig. 10
Fig. 9. Topología típica de un bus PCI-Express
Fig. 10. Detalle de un conmutador PCI-Express
Igual que un router de Internet, el conmutador encamina las tramas entre las distintas tarjetas conectadas al bus, cada una de las cuales tiene su propia dirección de red.
La arquitectura OSI de PCI-Express tiene 3 niveles en hardware, como muestra la Fig. 11, que se explicarán con más detalle en el siguiente apartado
Fig. 11. Arquitectura en niveles o capas del bus PCI-Express
Fig. 12. Encapsulación (tunneling) de tramas en cada nivel
  • Nivel Software. No está implementado en la tarjeta, representa a todo el software del sistema operativo (los drivers) que utilizan los servicios que ofrece el nivel de transacción para enviar datos/mensajes a las tarjetas conectadas al bus. Como se ha dicho, la interfaz software es exactamente igual que en el caso de PCI, no hay que cambiar el software.
  • Nivel de transacción. Ofrece un conjunto de primitivas read_* y write_* no bloqueantes al nivel SW para que este pueda ordenar la transmisión y recepción de tramas (que en este nivel se llaman TLP - Transaction Layer Packet) desde o hacia la tarjeta.
  • Nivel de enlace. Secuenciación de los paquetes y encaminamiento, fiabilidad en el enlace (comprobación de CRC y retransmisión) y control de flujo, entre otras cosas.
  • Nivel físico. De/serialización de los datos, codificación con el código 8B/10B, de/modulación de los símbolos, recuperación de sincronismo, blanqueador (scrambler) basado en LFSR, igualación de canal (mediante preénfasis/deénfasis) usando secuencias de entrenamiento, negociación del enlace (¿cuántos lanes se usan?), etc...
Igual que ocurre en el modelo OSI o Internet, la trama del nivel i se encapsula dentro de la trama del nivel i-1 en un proceso conocido como tunneling hasta que, finalmente, el último nivel (el nivel físico) transmite la trama por el medio.
Las cabeceras que se introducen en cada nivel contienen información de control que permite la secuenciación de las tramas, su encaminamiento y la provisión de fiabilidad en el enlace entre otras cosas. Sin embargo, estas cabeceras también añaden redundancia que resta capacidad al canal y aumenta la latencia, algo crítico en un bus de E/S. El formato de trama de PCI-Express es un compromiso entre características, flexibilidad y latencia, como se explica en el Apartado 2.

Calidad de servicio (QoS)

Fig. 13. Tipos de tráfico de E/S
Fig. 14. En PCI-Express, la velocidad de transmisión no se comparte (a diferencia de lo que ocurre en PCI)
Las aplicaciones multimedia actuales cada vez son más exigentes con el sistema E/S ya que cada vez generan más tráfico y este, a su vez, puede tener restricciones temporales severas.
A modo de ejemplo, una tarjeta capturadora de televisión digital necesita entregar las tramas MPEG en la memoria principal con un retardo no superior a cierto umbral, si la trama llega a destiempo entonces no sirve para nada porque el instante de reproducción ya habrá pasado, es como si nunca hubiera llegado.
La característica de tiempo real de este tráfico obliga al bus de E/S a diferenciarlo del resto y a darle un tratamiento especial, prioritario (en telemática esto se llama disciplina de cola).
En PCI-Express existe, como se estudiará en el siguiente apartado, un mecanismo básico de etiquetado del tráfico (TC – Traffic Class) y de disciplina de cola en los buffers (VC – Virtual Channels) proporcionando así calidad de servicio (QoS – Quality of Service), algo de lo que carece PCI 2.2 o PCI-X.
Además, como consecuencia de la arquitectura de red punto a punto, la velocidad del enlace está disponible para cada conector/dispositivo, no está compartida entre todos, como se muestra en la Fig. 14.


Comparación con otros buses

Fig. 15: Ámbito de aplicación de PCI-Express, HT e Infiniband
Fig. 16. Formato de trama de HyperTransport y de PCI-Express
PCI-Express no fue diseñado para interconectar procesadores o memorias. Aunque existen otros buses mejores y que pueden sustituir a PCI-Express, tal como HyperTransport o quizá incluso InfiniBand, su relación con ellos no es de competencia porque tienen objetivos distintos.
HyperTransport e InfiniBand son buses de altas prestaciones, muy caros y demasiado complejos para ser usados como un simple bus local para el PC.
En la Fig. 15 se ve como HyperTransport permite conexiones chip-chip o tarjeta-tarjeta a una velocidad muy alta (actualmente 41.6GB/s) y con una latencia muy baja debido principalmente a que su formato de trama tiene una cabecera más corta, como se muestra la Fig. 16.
Así pues, estos buses están dirigidos a segmentos de mercado diferentes (grandes centros de datos y de cálculo) y no compiten con PCI-Express.
PCI-Express surge como una alternativa más sencilla y barata propuesta por Intel (grupo de trabajo “Arapahoe”) cuya relación coste/prestaciones es excelente (su coste es similar al de PCI) y su enorme flexibilidad le convierte en una tecnología de bus preparada para resistir el paso del tiempo. En los próximos años se convertirá en el sistema de E/S unificado para equipos de sobremesa y portátiles, es lo que se conoce como bus de E/S de tercera generación (3GIO).
La Fig. 17 muestra la evolución de los buses del PC a lo largo de la historia comparados con otras redes y la Ilustración 18 los compara en función no sólo de su velocidad sino también de su latencia.
Fig. 17. Evolución de los buses de PC
Fig. 18. Velocidad vs latencia en los buses

No hay comentarios:

Publicar un comentario