banner
Centro de Noticias
Amplia experiencia junto con equipos avanzados

PCIe para hackers: anatomía del enlace

Aug 20, 2023

La última vez analizamos los pares de diferencias, sus conceptos básicos, las reglas de enrutamiento y las notorias tolerancias de PCIe cuando se trata de pares de diferencias. Ahora, echemos un vistazo a las señales exactas que hacen que PCIe funcione, y también le brindaremos una descripción general de en qué sockets puede instalar PCIe.

Separo los zócalos PCIe en dos categorías: zócalos de escritorio, que son los zócalos PCIe 1x, 16x o quizás x4 que vemos en las placas base de escritorio, y zócalos móviles: mPCIe y M.2. También hay enchufes como ExpressCard que todavía se encuentran en algunos portátiles más antiguos, pero que definitivamente han dejado de ser relevantes. En dispositivos móviles, M.2 es el camino a seguir en lo que respecta a PCIe; si está interesado, escribí una serie corta que habla sobre todo lo relacionado con M.2 antes.

En estos zócalos, la mayoría de las señales serán opcionales y algunas señales serán específicas del zócalo, pero hay algunas señales requeridas en cualquier dispositivo PCIe. Por supuesto, el primer grupo de señales requeridas son los propios pares de diferencias PCIe.

Cualquier interfaz PCIe tiene dos tipos de pares de diferencias: TX y RX; para un enlace x1, tendrá un par de diferencias TX y un par de diferencias RX, y un enlace x16 necesita dieciséis de cada uno. Como era de esperar, RX en un extremo se conecta a TX en el otro extremo y viceversa: es como UART, pero picante. Por supuesto, si está utilizando un extensor PCIe o un adaptador de socket a socket de algún tipo, no necesita realizar ningún intercambio. Si está diseñando una placa para uno de los estándares de extensión PCIe, el nombre habitual es del lado del host. Por ejemplo, supongamos que está colocando un controlador IC PCIe Ethernet en una PCB que se conecta a un zócalo PCIe de escritorio; conecte TX y RX de la placa de zócalo PCIe a los RX y TX de su chip Ethernet, respectivamente.

Si hay fuertes indicios de que se ha violado esta convención, no se preocupe: asegúrese de compararlo con un host o dispositivo existente y vea si puede determinar si el nombre es el esperado o, de hecho, inesperadamente, está invertido. Nuevamente, ¡es como UART! Dicho esto, también hay condensadores de acoplamiento de CA colocados en serie en las líneas TX y RX. Específicamente en el caso de tarjetas de extensión PCIe, ya sea M.2 o PCIe de escritorio, la convención es colocarlas en las líneas del dispositivo TX (host-RX) en la placa del dispositivo y en el lado del host TX (dispositivo-RX) en la placa anfitriona. Esto por sí solo es una divergencia agradable con respecto a UART cuando se trata de diseño e ingeniería inversa.

El tercer tipo de par de diferencias, que siempre está presente, es REFCLK, un par de diferencias de reloj de 100 MHz. Es un reloj rápido, y no estoy seguro de su propósito, pero aparentemente juega un papel en la decodificación de los datos en TX y RX, específicamente, en la recuperación del reloj, siendo vital a pesar de ser órdenes de magnitud más lento que el rango de GBit. ancho de banda de pares PCIe TX y RX. A diferencia de RX y TX, no se puede cambiar la polaridad REFCLK de cualquier manera. Por otro lado, no dolerá tanto si hace que REFCLK pase a través de un conjunto de vías o dos en caso de que necesite invertirlo: son solo 100 MHz. Recuerda respetar a tus pares diferentes y estarás bien.

Se requiere REFCLK, excepto que, en teoría, hay casos en los que puede omitirlo, lo que requiere que ambos extremos del enlace PCIe admitan la recuperación de este reloj a partir de los datos pasados ​​a través de los pares RX y TX, o generen su propio REFCLK. Suena bastante realista, sin embargo, las implementaciones de PCIe sin REFCLK no existen realmente. Incluso SD-Express, un estándar reciente que lleva PCIe a tarjetas SD para velocidades de acceso increíblemente rápidas, no siguió este camino: la única implementación sin REFCLK disponible para el consumidor en el mercado es SATA-Express, un estándar que quedó obsoleto. por M.2 casi tan pronto como las placas base con puertos SATA-Express llegan a las tiendas. Tal como están las cosas, si desea que su enlace PCIe funcione, es absolutamente necesario REFCLK.

Y ahora un poco más sobre los condensadores. Los necesita tanto en TX como en RX para que el enlace funcione, con rangos de 75 nF a 265 nF dependiendo de la generación del enlace PCIe: 200 nF es un buen valor general y 100 nF funcionarán en caso de necesidad. Aparte de eso, opte por el paquete 0402 o 0201, y eso es básicamente todo. REFCLK normalmente no necesita condensadores, pero tampoco deberían doler y ciertos dispositivos pueden requerirlos. Además, aquí hay algo desconcertante: ha habido al menos un caso documentado de un WD SSD barato fabricado en masa que aparentemente omite sus condensadores del lado TX y no se inicializa con una placa host PCIe personalizada hasta que se agregan condensadores adicionales en el lado de la placa base. No es algo que debas hacer de forma predeterminada, sino simplemente una peculiaridad que un fabricante tuvo el descaro de crear.

Luego, hay un trío de señales de control de un solo extremo: CLKREQ, PEWAKE y PREST. CLKREQ se utiliza para ahorrar energía: el dispositivo generalmente configura CLKREQ en nivel bajo para comenzar a recibir REFCLK y puede desactivar CLKREQ (establecerlo en alto) para indicarle al host que puede dejar de proporcionar REFCLK, ahorrando energía. La señal CLKREQ es peculiar: está presente en dispositivos móviles, pero no se usa en computadoras de escritorio, hasta el punto de que las ranuras PCIe de escritorio ni siquiera tenían inicialmente un pin dedicado para ella. Como resultado, las placas “elevadoras de GPU” del minero que examinan el cable USB3 no pasan CLKREQ, solo PEWAKE y PREST. Si su host tiene un pin CLKREQ pero el dispositivo no, conéctelo a tierra; Si su dispositivo tiene un pin CLKREQ pero el host no, ignórelo; de lo contrario, conéctelos.

Bueno, si los mineros que toman atajos se molestan en pasar señales PEWAKE y PREST, entonces deben ser importantes, ¿verdad? Vamos a ver. PERST es el pin de reinicio para el enlace PCIe y el host lo mantiene bajo hasta que todos los relojes (incluido REFCLK) y los rieles de alimentación estén estables y se cumplan otros requisitos para que el host comience a hablar con PCIe; También se utiliza para la gestión del modo de bajo consumo. PEWAKE se usa para la administración de energía al igual que CLKREQ, y parece ser necesario también; esta también es una señal controlada por el dispositivo. Estas dos señales son un poco misteriosas para mí cuando se trata de formas en que puedes omitirlas, por lo que recomiendo tener ambas conectadas a menos que no estén disponibles en uno de los extremos.

Las ranuras de escritorio también tienen señales PRSNT; dependiendo del ancho del enlace, debe acortar PRSNT#1 a una de las señales PRSNT#2. No es que esto sea necesario: PCIe es más que capaz de detectar correctamente el ancho del enlace; sin embargo, las placas base de escritorio suelen necesitar esto en la práctica. Parece usarse para conexión en caliente, algo de lo que PCIe es técnicamente capaz y que funcionará incluso si usas un sistema como Linux; Es posible que Windows simplemente se niegue a procesar PCIe hotplug a menos que baile alrededor de su PC cantando palabras mágicas.

Hay señales I2C tanto en ranuras PCIe de escritorio como en ranuras móviles como mPCIe o M.2. Sin embargo, esas señales rara vez están conectadas a la placa base; cuando lo están, parece ser un capricho del fabricante de la placa base o disposiciones para funciones como VPro. En las placas de servidor, están conectados, lo que provoca cosas divertidas como que algunos controladores SAS originados en el servidor no funcionan en ciertas placas de escritorio con I2C conectado a las ranuras del tamaño de una computadora de escritorio. Si está cableando una ranura PCIe del lado del host, realmente no necesita conectar I2C, y si está cableando un dispositivo, no espere que I2C esté allí de manera confiable. Lo mismo ocurre con las señales JTAG: se usan en entornos de depuración o de servidor, y es mejor dejarlas desconectadas a menos que esté seguro de que su implementación se beneficia de ellas en el lugar donde las usará.

Los dispositivos PCIe móviles suelen funcionar con una alimentación de 3,3 V, mientras que los dispositivos de escritorio pueden funcionar con 3,3 V o 12 V, para dispositivos menos o más potentes, respectivamente. Como resultado, si está agregando un zócalo PCIe del tamaño de una computadora de escritorio y no tiene 12 V a mano, es posible que algunas tarjetas de escritorio no funcionen al azar. Se espera que las ranuras x1 proporcionen menos energía en 12 V que las ranuras más grandes, y los fabricantes de placas base de escritorio a menudo aprovechan este margen: si está diseñando una tarjeta x1, no espere que proporcione los 75 W completos (66 W en 12 V), y si estás diseñando una placa base con una ranura x1, la buena noticia es que no necesitas proporcionar los 75 W completos.

Tanto el lado del host como el lado del dispositivo pueden tener diferentes anchos de enlace; las opciones son x1, x2, x4, x8 y x16, donde el número indica la cantidad de pares que se utilizan; Debido a la forma en que funcionan los enlaces PCIe en el nivel bajo, estos tienen que ser potencias de dos. Como tal, no espere que un enlace x3 funcione si de alguna manera conecta tres carriles desde un host a un dispositivo; se reducirá a x2. PCIe es flexible con respecto al ancho de los enlaces: el host y el dispositivo eligen el máximo común denominador. No importa si su host tiene un enlace x4 y su dispositivo es x16, o si su host es x16 y su dispositivo es x4, se conformará con un ancho de enlace x4, usando cuatro pares, sin preocuparse de que uno de los extremos tenga doce más para repuesto. Hay excepciones muy raras a esto, concretamente, algunas tarjetas destinadas a servidores; Dicho esto, incluso esos son casos en los que “la tarjeta x8 no funcionará con una conexión x4” y un enlace 1x seguirá funcionando como alternativa.

Esto añade bastante flexibilidad: si alguno de los lados no tiene suficientes carriles para coincidir con el otro, siempre puedes esperar que funcione al menos un enlace x1. Por ejemplo, puede colocar una GPU x16 en una ranura x1 de escritorio cortando una muesca en la ranura y tal vez cortocircuitando los pines PRSNT de la ranura; sin embargo, asegúrese de que su tarjeta no necesite más energía proporcionada por la ranura que su La ranura 1x está dispuesta a proporcionar, lo que bien podría ser el caso si conectas una GPU adicional directamente a una ranura 1x cortada. Cuando se trata de ranuras y tarjetas PCIe de escritorio, verá anchos de ranuras físicas x1, x4 y x16, y las ranuras y tarjetas x8 son principalmente una ocurrencia del servidor. Hay algunas GPU de gama baja que en realidad son tarjetas x8, pero usan un ancho de borde de tarjeta de ranura física x16, y lo mismo ocurre con las tarjetas x2: usan un ancho de borde de tarjeta de ranura x4. Rara vez, o nunca, verá tarjetas o ranuras físicas x2 y x8.

Al realizar un enlace de varios carriles, debe asegurarse de conectar el carril 0 con el 0, el 1 con el 1, etc. Aparentemente existe la posibilidad de invertir todo el enlace en caso de que eso pueda ayudarle con su diseño; digamos, en el caso de un enlace x4, podría conectar el carril 0 al 3, el 1 al 2, etc. Sin embargo, no está claro qué tan ampliamente es compatible: parece ser opcional y no automático.

Al igual que Ethernet, las velocidades de enlace PCIe han aumentado con cada generación, a través de aumentos graduales en la velocidad de datos, el tipo de codificación y otras mejoras incrementales. La misma historia que con los anchos de enlace: hay una gran compatibilidad hacia adelante y hacia atrás, un dispositivo Gen1 funcionará en una ranura Gen5 y un dispositivo Gen5 funcionará en una ranura Gen1, nuevamente, eligiendo el máximo común denominador. Por supuesto, el enlace podría terminar limitado por las expectativas: si conecta una tarjeta controladora USB3 Gen3 x1 en la ranura PCIe x1 Gen1 de una placa base antigua, espere que el rendimiento del puerto USB3 sea limitado (y, por supuesto, lo mismo ocurre con conectar GPU a través de un enlace x1). Sin embargo, esto significa que, por lo general, no necesita preocuparse por las generaciones de PCIe a menos que esté apuntando a un objetivo de velocidad determinado.

Afortunadamente, si tiene alguna pregunta sobre PCIe que sea muy profunda, hay mucha información en línea y las especificaciones incluso para el PCIe 5.0 de última generación son bastante fáciles de encontrar. Puede ser un poco denso en comparación con lo que estás leyendo ahora, pero cuando profundices, te ayudará. La próxima vez, completemos su mapa mental de PCIe, para que cada vez que se proponga ampliar los límites de PCIe, sepa cómo abordarlo.