¿Qué es AVX-512?
Además de la propia ISA principal, con las instrucciones básicas de la arquitectura AMD64 o EM64T o x86-64, como la quieras llamar, también existen otras muchas extensiones, es decir, conjuntos o sets de instrucciones adicionales que se agregan para completar la ISA y acelerar ciertas cargas de trabajo, por ejemplo, las bibliotecas de TensorFlow las pueden aprovechar. Entre ellas tenemos el conjunto de instrucciones AVX-512.
Es la segunda iteración de AVX o AVX2. Este conjunto de instrucciones llegó a los procesadores Intel en 2013. Y son las siglas de Advanced Vector Extensions. Este repertorio sería incorporado por primera vez en los Intel Xeon Phi (Knights Landing), y más tarde también pasaría a los servidores con los Intel Xeon (Skylake-X).
Pero Intel tomó una decisión algo comprometida y criticada, y es que el conjunto de instrucciones AVX-512 también llegaría a los consumidores, es decir, a los clientes. Esto fue en la microarquitectura Intel Cannon Lake. Más tarde también sería heredada por Ice Lake, Tiger Lake, etc. Algo incomprensible para muchos, ya que esto implica mayor consumo, mayor tamaño del silicio ocupado por unidades funcionales de ejecución grandes (y registros de mayor longitud), y no aporta prácticamente valor, ya que existe muy poco software para clientes que puedan beneficiarse de estas instrucciones.
El objetivo principal de este conjunto de instrucciones era acelerar las tareas relacionadas con la compresión de datos, el procesamiento de imágenes y los cálculos criptográficos. Al ofrecer el doble de potencia de cálculo en comparación con AVX-256, el conjunto de instrucciones AVX-512 ofrecía mejoras notables del rendimiento, pero pese a que agregaba el doble de complejidad, no aportaba el duplicó el rendimiento.
Por todo esto tuvo muchas críticas, entre ellos Linus Torvalds las criticó duramente:
Después de esto, el famoso programador y creador de Linux tendría un equipo AMD Threadripper por primera vez para compilar, ya que estaba algo disgustado con los Intel que siempre había empleado para sus equipos…
¿Fin de AVX-512? No, solo el comienzo de un culebrón…
AVX-512 fue una buena y mala idea a la vez. Intel se adelantó, ya que no había software como para justificar su implantación en el lado del cliente, aunque sí para HPC. AMD fue más inteligente en este sentido y optó por no adoptar las AVX-512 hasta que no hubiese más software que las pudiera aprovechar, y ese momento llegó en Zen 4, para las Ryzen 7000 Series actuales.
Intel por su parte parece ahora algo perdida, ya que fue la impulsora de AVX-512 y ahora las ha bloqueado para sus Alder Lake en adelante. Bien es cierto que los primeros Alder Lake permitían procesar AVX-512 en los P-cores basados en Golden Cove, pero no era así en los E-cores basados en Gracemont. Esto era algo complejo para el planificador de instrucciones, por lo que Intel optó por desactivarlas, aunque físicamente los núcleos podían usarlas.
Veamos los movimientos tan torpes y extraños que hizo Intel para las AVX-512:
- Intel se dirige a la prensa para decir que AVX-512 no sería compatible con los procesadores híbridos con núcleos P y E, tal vez por la mala fama y las críticas recibidas.
- Antes de su lanzamiento apareció una guía de optimización de la propia Intel donde se mostraba el uso de AVX-512 para los Alder Lake, lo cual desconcertó mucho tras el mensaje anterior.
- Por eso Intel tuvo que salir al paso nuevamente ante la prensa, v
Intel por su parte parece ahora algo perdida, ya que fue la impulsora de AVX-512 y ahora las ha bloqueado para sus Alder Lake en adelante. Bien es cierto que los primeros Alder Lake permitían procesar AVX-512 en los P-cores basados en Golden Cove, pero no era así en los E-cores basados en Gracemont. Esto era algo complejo para el planificador de instrucciones, por lo que Intel optó por desactivarlas, aunque físicamente los núcleos podían usarlas.
Veamos los movimientos tan torpes y extraños que hizo Intel para las AVX-512:
- Intel se dirige a la prensa para decir que AVX-512 no sería compatible con los procesadores híbridos con núcleos P y E, tal vez por la mala fama y las críticas recibidas.
- Antes de su lanzamiento apareció una guía de optimización de la propia Intel donde se mostraba el uso de AVX-512 para los Alder Lake, lo cual desconcertó mucho tras el mensaje anterior.
- Por eso Intel tuvo que salir al paso nuevamente ante la prensa, volviendo a negar que estuvieran admitidas las AVX-512 y eliminó las referencias de la guía.
- Llega el momento de lanzar Alder Lake, y los primeros usuarios en probarlo descubren que algunas placas base tienen un firmware que permiten trabajar con AVX-512, algo que los fabricantes de placas base hicieron en contra de la voluntad de Intel.
- Intel se mantuvo en silencio para la prensa mundial, aunque ante los medios taiwaneses aseguró que el soporte AVX-512 seguía presente en los Alder Lake, aunque no estaba activado por defecto. Solo era una posibilidad que tenía el usuario de habilitarlo o no.
- Después de esto, Intel da la noticia de que desactiva las AVX-512 con una nueva actualización del firmware o microcódigo. De este modo pretende poner fin a la polémica, aunque no lo consiguió…
- La misma semana en la que se anuncia la actualización aparecen parches para el BIOS/UEFI que deshabilitaban AVX-512.
- Algunos fabricantes de placas base, como MSI, encuentran la forma de eludir el bloqueo de Intel y permiten activar la función desde el BIOS/UEFI de sus placas base, como un reclamo para los posibles compradores.
- Intel ve que el fantasma se vuelve a resucitar y finalmente decidiría desactivar esta función por hardware. Es decir, en los primeros Alder Lake estaba disponible físicamente y en los Alder Lake lanzados posteriormente no lo está. Por tanto, si quieres AVX-512 habilitado, entonces tienes que comprar los Intel Xeon, que por supuesto son más caros. ¿Marketing o error? Juzga tú mismo…
Mientras tanto, AMD toma otra dirección diferente:
Mientras Intel adoptó las AVX-512 también para los procesadores para cliente, por lo que fue criticado, AMD se mantuvo concentrada en implementar más núcleos de procesamiento, en vez de hacer los ya existentes más complejos.
Llegado el momento de diseñar Zen 4, AMD decide que es buena hora para implementar estas instrucciones en sus AMD Ryzen 7000 Series y EPYC. No obstante, no soportan todo el set de Intel, ya que prescinden de instrucciones como AVX512ER, AVX512PF (Knights Landing), AVX512 4VNNIW, 4FMAPS (Knights Mill) y VP2INTERSECT (Tiger Lake). Además, parece que AMD ha simplificado sus unidades de ejecución con respecto a Intel.