(109) Cuando PCI Express reemplazó al AGP

(109) Cuando PCI Express reemplazó al AGP

por

Porque no hay segunda sin primera (sino estaríamos retrocediendo en el tiempo), mi último artículo les hablará de otro hito materializado en un puerto: PCI Express.

Lo más doloroso para algún techie es decidir cuándo y cómo actualizarse a la nueva tecnología. Creo que lo vivimos todos, y así como cada cual nace sabe de antemano que se morirá tarde o temprano, el que presiona teclas en la computadora sabe también que algún día llegará ese fatídico momento donde dirá, con énfasis en el adjetivo calificativo y una rabia evidentemente sempiterna durante toda la frase, “Esta basura está más vieja que mi mamá”.

Eso fue lo primero que dije cuando noté que algunos videojuegos requerían una tarjeta de video mucho mejor, y gracias a mi mamá, tengo esta cicatriz. Para que Katarn le cortara la cabeza a un Sith tenía primero que entender la letra de una canción Death Metal cualquiera para lograrlo – así de difícil era tratar de jugar mientras mi computadora alegaba hasta en calidad baja y resolución mínima. Para sopesar ello, tenía una opción muy clara: votar esa antigua Radeon 7000 de 64MB que me acompañó por años sin ningún problema, y reemplazarla por algo mucho mejor como una Radeon X700 o GeForce 6600. La sorpresa que me llevé al saber que no había versión AGP, la misma cuando supe que mis zapatillas de planta lisa no servirían para jugar fútbol en el pasto (doh!). El sólo hecho de cambiar la tarjeta gráfica era algo así como un cambio de cancha completo, pero después de investigar algo, mi billetera tenía todas las de perder.

PCI a otro nivel

Así como AGP era la solución de de los cuellos de botella, PCI Express también era una nueva tecnología para solucionar los problemas del anterior, pero estaba en juego algo más allá de las tarjetas gráficas; era cambio arquitectónico sobre cómo comunicar lo que se conectaba en ese bus con el resto del sistema.

Wikipedia (GNU)

PCI sufría de un malestar: todos los dispositivos que se conectaban allí compartirían el mismo bus, por lo que el rendimiento se vería mermado cuando una necesitara más ancho de banda que otro dispositivo. Esta pelea de intereses llevaría, por poner un ejemplo, a que dos controladoras de discos estuviesen rindiendo a la mitad en la transferencia mientras peleaban con los datos que entraban y salían de alguna LAN gracias a la tarjeta de red. Ni hablar de resoluciones HDTV y video en alta resolución, 133MB se escuchaba grande pero en la práctica no es tanto cuando tienes muchas cosas conectadas chupando como reviewer de cumpleaños en botillería sin nadie que atienda.

Llegó el momento de las analogías: imaginemos el caso de la carretera 5 Norte que interconecta a todas las ciudades del país del norte de Chile, pero con sólo 1 línea en vez de 4. Todas las ciudades comparten la misma carretera, y todos se entenderán bien mientras no salga de Arica una caravana gigante que termine por crear un interminable taco en los cientos de kilómetros que faltan a la capital, aún cuando alguien desee llegar sólo a Iquique o la ciudad de más adelante.

Ars Technica (C)

¿Qué sucedería si cada ciudad tuviese una carretera exclusiva hacia Santiago? Eso es PCI Express, una conexión punto-a-punto, con un “switch” al otro extremo de la línea, encargado de mandar cada auto a su destino correspondiente. Y el cambio arquitectónico no era nada de otro mundo, por lo que aquellos dispositivos hechos para PCI sólo tenían que, en el mejor de los casos, cambiar la conexión a PCI Express. De pasada, como estás solo en esta especie de pista recta, no hay miedo en presionar el acelerador hasta que la aguja se de unas diez vueltas al tacómetro. ¿O acaso vas a chocar con una curva?

Hay que tomarse la línea (no esa línea)

HowStuffWorks (C)

La filosofía de PCI Express es la conexión en serie, directa, mientras permitía que la información llegara sin errores, y con el menor esfuerzo posible. La conexión está basada en líneas, cada una de ellas consta de dos pares de “sub-líneas” que transmiten hacia y desde – en total 4 autopistas, dos en sentido contrario a las otras dos. Cada uno de ellos lanza 1 bit al aire por cada ciclo (o hertzio para que no se pierdan), y cada byte está codificado en 10 bits en vez de 8 (luego explico eso). Con esto luego el switch que recibe la información verifica a través de la decodificación del mismo paquete si todo salió bien o mal.

La frecuencia de operación de PCI Express 1.0 es de 2.5GHz, o mejor dicho, 100MHz con un multiplicador de x25, lo que se traduce en 250.000 bits por segundo. Resultado: los datos que pueden salir por una línea en un segundo es de 500MB redondeados, sin embargo, dado que los dos bits de codificación ocupan el 20% de lo que se transfiere, estamos hablando de 400MB reales, o 200MB por cada lado. Mientras AGP lograba los 2133MB en el mejor de los casos, con sólo 8 líneas PCI Express se lograban 3200MB asíncronos por segundo y sin despeinarse. Tecnologías comparables, pero no iguales.

La gran diferencia entre el AGP, PCI y PCI Express era que este último era administrado por un “switch” que tenía lugar en el Northbridge, aquél chip donde pasa todo incluyendo el bus del sistema, para administrar los datos que pasaban y su destino: el CPU, RAM, o el mismo bus central. También trajo bastantes cambios abajo del capot, como lo hizo AGP en su tiempo:

  • Prioridad: Antiguamente, si algún “paquete” de datos de algún dispositivo PCI debía llegar rápido y sin demoras a un lugar, tenía que quedarse en la cola de los otros que habían llegado antes. Con PCI Express, el switch se encarga de ordenarlos en caso que uno necesite tener más prioridad que el otro. Por ejemplo, mientras uno le da duro a un videojuego de acción, los paquetes de información gráfica serán los primeros en llegar en vez de aquellos que mande una tarjeta de red inalámbrica.
  • Punto a Punto: El trabajo del switch también es interconectar cada dispositivo directamente con otro, asegurando el ancho de banda completo a cada uno en vez de dividirlo entre un número determinado de dispositivos conectados.
  • Full Duplex: Mientras el bus PCI estabas recibiendo o enviando datos, considerando la espera entre cada paquete, en PCI Express se pueden hacer ambas cosas simultáneamente. No más “Cambio y Fuera”.
  • Ancho de banda ajustable: Todos los puertos PCI por norma eran iguales, pero en PCI Express se puede crear un puerto con menos líneas para otros dispositivos que no demandan tanto, como tarjetas de sonido, de red, controladores de discos, etcétera. De ahí los puertos PCI Express 1X, 2X y 4X.
  • Menor degradación de la señal: Como la señal ya no es compartida en un mismo bus, la recepción de las señales son mucho más limpias y hay menos errores entre los datos. Cada línea envía una versión “positiva” y otra “negativa/invertida” de la señal al destino, donde se combinan al llegar al switch, limpiando el ruido electromagnético.
  • Coexistencia con software: PCI Express es una tecnología que no es diferente a como PCI funciona a nivel de software, por lo que los sistemas operativos necesitaron muy pocas maniobras para ser compatibles.
  • Donde quieras: La versatilidad de PCI Express es suficiente para que una tarjeta de 8X o 4X pueda insertarse en un puerto PCI Express 16x (pero en muchos casos no al revés). Total, lo único diferente eran el menor número de líneas.
  • Mejor reconocimiento de errores: Nadie es perfecto, y menos las computadoras. Como en el bus PCI Express se codifican los 8bits en 10bits, una pérdida del 20% del ancho de banda es marginal comparado con la posibilidad de recuperar el byte corrupto en el próximo ciclo.
  • Hot Swap: Así como algunos discos SCSI eran posibles de ser intercambiados mientras funcionaban, en PCI Express también es posible si la tarjeta conectada lo permite. Eso sí, no lo intenten con la tarjeta de video mientras funciona, es pésima idea. Ya lo comprobé y tuve que reiniciar.
  • Mayor energía: El puerto AGP podía entregar cerca de 40W a la tarjeta de video, pero PCI Express lograba 75W mientras se usaba el puerto con 16 líneas. No más pines de alimentación aparte, no más estragos a la hora de crear un GPU que consumiera menos.

Aún con todas esas ventajas, la transición a PCI Express fue bastante dolorosa para algunos, pero en el mercado de tarjetas gráficas el cambio era casi obligado cuando apareció el rumor que algunas de las próximas tarjetas gráficas empezarían a sentir el techo de lo que podía ofrecer AGP y el rendimiento que se perdía al no usar las ventajas del nuevo estándar. Se dieron algunos casos alejados de puertos PCI Express 32x, pero el slot era demasiado largo que era mucho más común verlo en tarjetas madres de servidores con algún engendro chupa-ancho-de-banda montado que en las computadoras de los consumidores finales. De hecho solo las he visto por fotos de Google.

¿Verdad que les dije que les iba a explicar eso de la codificación? Eso de 8b/10b mucha gente no lo entiende, así que aquí les va otra analogía. Imagínense que vamos a comprar huevos, y nos encargan 8 bandejas gigantes para llevar en nuestra mochila. Lo más obvio sería comprar aquellas 8 e ir directamente a entregarlas, pero nadie nos asegura que durante el camino se nos pierda o se suelte el paquete entero con las 8 bandejas. La solución que pone en el tapete PCI Express era llevar 8 piezas y 2 bandejas más vacías, que para esta analogía colocaremos una en cada extremo. Si bien aportan con más espacio, es mucho más seguro que lleguen las 8 a salvo si se nos cae el paquete completo y pega en una de las bandejas vacías. Después de tres vueltas habremos entregado 24 bandejas con huevos en vez de 30, pero hey, no tendremos que hacer un cuarto transporte para reponer aquella que se perdió.

Pero no se crean el todo esa analogía. En PCI Express no se ponen un bit al principio y otro al final del byte, sino que se dan vuelta unos bits de posiciones, se intercalan con dos bits, y el resultado es un número decimal que puede resultar en un dato o un caracter. Sí, tampoco lo entiendo yo, pero sí entiendo que no puedo alegar para que me devuelvan esos dos bits demás.

Casi todos con el pulgar arriba

Recordarán en el episodio anterior de nuestra web-novela, “me cambio de puerto”, también conocido como “Cuando llegó el puerto AGP al mundo”, AGP era un cambio que afectaba específicamente a los fabricantes de tarjetas de video y un poco más a aquellos que hacían chipsets y placas madres. Eso no fue nada comparado con el cambio que impulsó PCI Express, porque este nuevo estándar significaba deshacerse por el AGP y los puertos PCI. Así de simple.

La primera tarjeta de sonido PCI Express de Creative recién se presentó el 2007 – PC Watch (C)

O sea, no sólo tenemos en el saco de la actualización a los fabricantes de tarjetas de video, sino a aquellos que hacen placas madres, chipsets, tarjetas de sonido, de red, controladoras de discos, y todo el resto. Por una parte era entendible, pero los cambios que representaban en ellos los nuevos puertos, como también los costos asociados, eran mucho más grandes que la ganancia para el usuario al usar un puerto PCI Express en vez de un PCI. Me explico: una tarjeta de sonido perfectamente podía funcionar en el puerto PCI como una de red. Dicho y hecho, aquellos fabricantes que tenían productos útiles pero poco demandantes no se movieron mucho, lo que terminó por dejar a los fabricantes de placas madres casi-obligados a ofrecer productos con puertos PCI normales para coexistir.

Quienes sí se regocijaron mucho fueron aquellos creadores de portátiles. El nuevo estándar permitía menos espacio para conectar tarjetas WiFi u otras en comparación con el puerto PCI, mientras por otra parte le daba paso a la creación del derivado ExpressCard, que mató a la PCCard por el tamaño y la velocidad. También habían otras soluciones locas como la posibilidad de conectar un puerto PCI Express a un cable de hasta 5 metros, pero existió poco apoyo, al parecer, porque PCI-SIG aún no daba con las especificaciones concretas, por lo menos, hasta hace poco. Otra solución más loca, pero genial al fin y al cabo, es wPCIe, una solución para conectar algo sin cables como una controladora de audio o un chip de video.

En el caso de los servidores era un poco diferente. Allí se necesitaba la mejor velocidad posible, y PCI Express abría las puertas a más tarjetas de red y más controladoras de disco. Allí se usaban principalmente puertos PCI-X, una variación de los antiguos PCI que en su etapa de oro tenían 64-bits, eran algo más largos y andaban entre los 66MHz y 133MHz, pero aún así sostenían los mismos problemas que el PCI. El nuevo estándar era un respiro para los problemas de ancho de banda, así que el cambio fue casi natural pero no inmediato – recuerden que en este sector los billetes que se mueven son más grandes pero a mediano o largo plazo. De hecho apareció un estándar en paralelo llamado PCI Express ExpressModule, que por lo que sé permitía conectar placas madres en placas madres creando un loop infinito de divisiones por cero.

La versatilidad de PCI Express logró algo que también era muy difícil lograr entre AGP y PCI. En los workstations, o “estaciones de trabajo”, para tener una salida a múltiples pantallas usualmente se combinaban tarjetas AGP en conjunto con otras PCI para lograrlo, implementación que era más rara y cara, y nunca llegaron al consumidor final a un precio aterrizado y buen rendimiento. Pero en PCI Express perfectamente se podían conectar una tarjeta de video “A” y otra “B” directamente, permitiendo que tanto NVIDIA como ATI lanzaran soluciones como SLI y Crossfire, respectivamente, donde los chips gráficos se comunicaban directamente.

The Tech Report (C)

Como les comentaba en el artículo anterior, para los usuarios que no querían actualizar aún la placa madre, sumando el procesador y memorias en algunos casos, hubo algunas soluciones gráficas basadas en PCI Express que tenían un chip “Rialto” que actuaba como intermediador entre el chip gráfico y el bus, transformando la señal PCI Express en algo entendible para el AGP. Pero el puerto tenía una fecha de muerte tan fuertemente impresa que empezó a ser una prioridad secundaria. Las GeForce 8800, que salieron el 2007, no tenían ninguna versión compatible con AGP – por lo menos que yo recuerde – y sobre las nuevas Radeon HD 5000 que salieron el 2009, tampoco había una entre sus filas.

0MG tengo un facepalm para compartir xD

Cuando muchos cambiaron del puerto PCI a AGP, no habían foros, redes sociales, blogs, ni Internet para toda la gente: todas las anécdotas sobre el cambio de tecnologías se pasaban de boca en boca. Pero en este cambio sí existen, y gracias a ello pudimos apreciar una obra de arte en el concepto de botar dinero. Un usuario de Tech-Forums intentó poner su tarjeta PCI Express en (presumiblemente) un puerto AGP, sin mucho éxito:

Asunto: NVIDIA 7800 no funciona

Compré una de estas e intenté colocarlo en mi Dell Dimension 2350. Mi amigo me dijo que la parte brillante de metal abajo tiene unas líneas para que yo las pudiese cortar en caso que no entrara. Así que cuidadosamente las corté para que pudiera caber en un puerto de mi computadora. Pero no funciona. ¿Corté algo mal? Pondré una imagen ¿Hay alguna manera de arreglar ésto? Gracias por la ayuda.

Sí hay una manera de solucionarlo: extiende el cupo de tu tarjeta de crédito.

Esta historia está lejos de terminar

Los tipos de PCI-Sig, las 900 compañías detrás del estándar, lanzaron la especificación PCI Express 2.0 el 2007, y trajo cambios mucho más grandes a diferencia de los anteriores 1.0a y 1.1, siempre manteniendo la retrocompatibilidad. La segunda versión doblaba la frecuencia base, pasando de los 2.5GHz a los 5.0GHz. Sin tomar en cuenta la codificación 8b/10b, en una línea se podían transferir 500MB por segundo en cada lado, y en bruto un puerto PCI Express 16X logra alcanzar 16GB por segundo. Lo que hizo PCI-SIG fue simplemente cambiar el multiplicador de x25 a x50. Además, lograron que duplicar el suministro de energía a la tarjeta de video, de 75W a 150W, por lo que algunas tarjetas de video no necesitaban necesariamente de un enchufe 6-pin extra para funcionar.

Las nuevas tarjetas de video que salieron apuntando las nuevas especificaciones fueron las Radeon HD 3000 y GeForce 9000. Eran retrocompatibles con PCI Express 1.1, eso sí algunas pedirían enchufe 6-pin para solucionar el problema de un menor suministro de energía. También hubo algunos casos de tarjetas que se negaban a partir en placas con la versión de PCI Express atrasadas; creo haber visto algunos casos en el foro en su tiempo donde sólo podían cambiar de placa madre para no perder la inversión, o probando con otra fuente de poder más top.

Ahora PCI-SIG planea lanzar al aire el más que retrasado PCI Express 3.0, que tenía como objetivo terminar sus especificaciones el año pasado, pero no logró. La nueva versión traerá lo siguiente:

  • Dejará a PCI Express funcionando a 8GHz, o sea, el bus base de 100MHz multiplicado por 80.
  • La frecuencia dará como resultado una línea pasando 1GB de información por segundo (500MB en cada dirección) aproximadamente.
  • Reemplazará la codificación 8b/10b a favor de 128b/130b (si todo les resulta bien).
  • Logrará suministrar el doble de energía, cerca de 150W.
  • Usuarios preguntando si su tarjeta PCI Express 3.0 le hace a la 2.0.
  • Más de alguno cambiando de placa madre por pavo.

Pero según lo que reportamos anteriormente, el “cacho” de pagar nuevo hardware recién lo viviremos entrado el 2011. El cálculo es simple: si terminan las especificaciones este año, pasará bastante tiempo para que los desarrolladores y arquitectos que tienen los fabricantes de placas madres y chipsets los adapten a sus próximos productos, y perfectamente principios o mediados del próximo año estarán listos. Según el calendario maya, eso es justamente antes del fin del mundo.

Por ahora sólo nos queda mirar cuántos otros fabricantes se están sumando al barco de PCI Express, porque lentamente los puertos PCI están dejando de ser numerosos en las placas madres, y sólo es cosa de darse una vuelta por las vitrinas de tu tienda favorita para notar que estas tarjetas nuevas están empezando a traer uno o dos de esos puertos en vez de sólo traer un par de PCI Express para la tarjeta de video. Menos mal, todos se están cambiando, y recién este año hemos empezado a notar que las tarjetas de sonido, y algunas de red, están usando PCI Express para funcionar. Espero que el cambio de PCI Express 3.0 al próximo estándar sea mucho más fuerte y menos caro, miren que mi vecino recién terminó de pagar las cuotas de esa placa nForce 4 con PCI Express.

Links:
Productos PCI Express 3.0 los veremos el 2011 (CHW)
PCI Express (Wikipedia)
How PCI Works (How Stuff Works)
How PCI Express Works (How Stuff Works)
How AGP Works (How Stuff Works)
PCI Express: An Overview (Ars Technica)
2007 International CESレポート【Creative/Logitech編】 (PC Watch)
PCI-X (Wikipedia)
PCI Express Technology (Dell)
AGP Vs. PCIe – Bandwidth And Power (Tom’s Hardware)
Overview of PCI Express [PDF] (Anirban Expert Consulting)
AGP Battle: GeForce 7800 GS VS. Radeon X850 XT (Y Corner)
GeForce 8 Series (Wikipedia)
PCI Express 1.1, 2.0, 2.1, 3.0 – What’s Happening & Why Do I Care? (Trenton Technology Blog)
PCI Express 2.0: Scalable Interconnect Technology, TNG (Anandtech)