Introducción al bus PCIe
Esta página es parte del documento "El bus PCI-Express" (va al Índice general)
- 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
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.
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
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 |
Especificaciones mecánicas
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 |
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.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
- 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...
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)
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
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.
No hay comentarios:
Publicar un comentario