En los últimos años, muchas compañías han introducido circuitos integrados para el mercado PCI Express (PCIe) emergente. Estas soluciones han incluido controladores de sistema (North Bridges), procesadores gráficos, conmutadores de puerto y línea, y dispositivos ‘puente’ entre PCI Express y Peripheral Component Interconnect (PCI) y Peripheral Component Interconnect Extended (PCI-X), Gigabit Ethernet y Fibre Channel.
El ecosistema PCI Express, contando silicio, software, equipos de test y propiedad intelectual, supera las 450 compañías. Los sistemas con PCI Express se espera que estén disponibles a muy corto plazo, por lo que las pruebas de interoperatividad se deben realizar a varios niveles para garantizar que esta tecnología es adoptada.
El PCI Special Interest Group (PCI-SIG) Serial Technical Working Group ha presentado procedimientos para realizar pruebas eléctricas y de configuración que se lanzarán próximamente para protocolos de enlace, de transacción y plataforma BIOS.
Mientras estas aplicaciones ofrezcan una lista exhaustiva de procedimientos, que es costosa de cubrir al detalle, se pueden producir problemas de interoperatividad. Este artículo detalla varios ejemplos de test eléctricos, transferencias de paquetes de inicialización Data Link Layer (DLL) y BIOS.
En todos los casos menos uno (inicialización de canal virtual), un error en cualquier paso puede producir fallos de interoperatividad, donde las pruebas de compatibilidad actuales son positivas.
Estabilidad de reloj de frecuencia
Los procedimientos de test a primer nivel comienzan en la capa física, involucrando especificaciones eléctricas y estabilidad. Una de las pruebas más importante para la interoperatividad a nivel eléctrico es la inestabilidad y la generación de ruido.
Una fuente común de inestabilidad, que se suele pasar por alto en un flujo de datos serie, es el reloj de referencia. Al exponer a la fuente de alimentación para los circuitos de distribución de reloj o los transceptores PCI Express a un ruido excesivo se provocan ratios de inestabilidad que pueden fomentar la aparición de fallos. Con el objetivo de reducir este ruido a unos poco milivoltios, la fuente de alimentación y los osciladores de reloj y buffers se deben desacoplar y filtrar de una manera apropiada. Revisando las señales de salida se verifica el ruido con un nivel adecuado.
Inicialización de canal virtual
Después de que se ha completado la prueba, una serie de paquetes DLL se envía a cada dispositivo PCIe para la inicialización de crédito Virtual Channel Zero (VC0). Estos paquetes de inicialización de control de flujo conocen la profundidad de buffer para cada tipo de canal virtual: repartido, no repartido y completo (ver Figura 1) y se deben mandar en ese orden.
A diferencia de los paquetes de prueba de enlace de capa física, TS1 y TS2, que por definición se envían consecutivamente, los paquetes DLL deben tener huecos. Sin embargo, los dispositivos PCI Express varían en función de los paquetes DLL no consecutivos durante la inicialización VC0. Si una capa de receptor de dispositivo espera paquetes DLL consecutivos, el dispositivo PCI Express que transmite permite los saltos entre estos paquetes. La inicialización VC0 fallará. El puerto receptor del dispositivo de debe permitir la recepción de paquetes no consecutivos o el dispositivo de transmisión de paquetes PCI Express sólo debe enviar paquetes consecutivos.
Desgraciadamente, este tipo de fallo de interoperatividad se vincula al hardware y este método de transferencia de paquetes DLL se debe tener en cuenta en silicio.
No obstante, mientras que los procedimientos de test eléctricos y de configuración están especificados totalmente, los métodos adicionales para comprobar enlaces y protocolos de transacción y BIOS todavía no han aparecido. Mientras tanto, existen tres ‘bloqueos’ a la hora de testar la interoperatividad de dispositivos PCI Express, independientemente del BIOS de sistema.
Establecimiento de BIOS de sistema
Los dispositivos PCI Express necesitan aceptar Spread Spectrum Clocking (SSC) con un reloj modulado en no más de 0.5%. Cuando se testan conmutadores y ‘puentes’ PCI Express de compañías como PLX, u otros tipos de productos PCI Express, este SSC se suele tomar del Root Complex (RC) o chipset, y es muy recomendado que se siga este procedimiento. No obstante, si el reloj usado es de otra fuente, como es un reloj on-board, existe la seguridad de que de que el reloj RC quede inutilizado empleando el comando CMOS / Setup en el establecimiento de BIOS.
Si el reloj RC no queda inutilizado cuando se prueba el enlace con el dispositivo PCI Express, esta conexión fallará. Además, hay que chequear la BIOS para garantizar que el reloj RC está inactivo, y algunas versiones no ofrecen esta opción. Si no se puede desactivar, entonces el dispositivo debe usar este reloj.
En una situación en la que se debe usar un reloj externo y no se puede inutilizar el reloj RC, hay que eliminar las conexiones de la BIOS de todos los módulos de memoria. Después del arranque, la BIOS no se puede cargar debido a la escasez de memoria, y se visualizará un error de memoria insuficiente de carga, previniendo la activación del reloj RC. Cuando se realiza la comprobación del enlace, las herramientas de test muestran esta conectividad de capa. Si bien es cierto que sin registradores de estado de configuración programados, los paquetes de capa de transacción o DLL se pueden transferir.
Otra cuestión de interoperatividad potencial relacionada con la BIOS es el ancho de slot del conector PCI Express. Muchas tarjetas de test tendrán slot de x16 líneas, que normalmente permiten un conector add-in con un ancho de línea PCI Express igual o inferior a este enlace x16. Principalmente, los anchos de x16 líneas se utilizan para tarjetas gráficas y la BIOS para estos dispositivos se pueden ‘forzar’ para una conexión x16-lane. Estas soluciones BIOS ofrecen secuencias TS1 y TS2 en todos los enlaces. Cuando se usa cualquier conector con menos de x16, el enlace no funciona de manera alguna. Si este es el caso, otros conectores de tarjeta se suelen presentar para conexiones x1 y x4-lane.
Un tercer problema de interoperatividad, que puede provocar la BIOS utilizada, es la enumeración y la configuración de puertos subordinados en un conmutador PCI Express multipuesto. Como sucede con PCI, los estándares PCI Express permiten hasta 255 buses subordinados con el soporte de una BIOS.
Todavía, algunas versiones BIOS hacen posible una configuración de un puerto upstream y downstream de un conmutador PCI Express (ver Figura 2). Aquí, el RC descubrirá y configurará el puerto upstream (A) y el puerto dowstream (B), pero los puertos C y H no se podrán configurar. Los puertos subsecuentes, el conmutador y cualquier otro punto final que se haya conectado a través a través del puerto dowstream B (punto final 1) no tendrán conectividad. Además, serán ‘invisibles’ para el RC y el conmutador, debiéndose establecer una formación de enlace de capa física. Sin embargo, no se pueden producir transferencias de datos. La versión BIOS usada se debe verificar para garantizar su soporte a los conmutadores multimedia.
Estos ejemplos de fallos de interoperatividad potencial están siendo estudiados mediante la revisión de los procesos de desarrollo de BIOS y la publicación de procedimientos de test estándares, incluyendo pruebas de BIOS, de fabricantes de productos PCI-SIG y PCI Express.
En esta fase de desarrollo de soluciones PCI Express, diversos eventos y plugfets han solventado muchos de estos quebraderos de cabeza. Los proveedores de silicio PCI Express, software, IP y test han realizado grandes esfuerzos para asegurar el despliegue de esta fase de interconexión de próxima generación.