Cuando hablamos de procesadores, es común encontrarnos con el término «instrucciones AVX«, hasta el punto de que en algunos casos son necesarias para que funcionen determinados programas o juegos, y podemos incluso encontrarnos en la tesitura de que un juego o programa no nos funciona si el procesador no cuenta con ellas. Pero, ¿qué son las instrucciones AVX y para qué las necesita el procesador? ¿Es tu procesador compatible con ellas? Vamos a verlo.
Antes de nada debes saber que, al final, un procesador se compone de transistores capaces de ejecutar unas u otras instrucciones, así que las capacidades del procesador, o qué es capaz de hacer más bien, dependen de las instrucciones para las que hayan sido programados. Unos procesadores tienen un conjunto de instrucciones y otros procesadores tienen otros, pero en general suelen ser bastante comunes, ya que, en cualquier caso, dependen en gran medida de la programación del software que ejecutan y de si las aprovecha o no.
Hoy en día, tanto Intel como AMD utilizan prácticamente los mismos conjuntos de instrucciones, por lo que es importante señalar que independientemente de la marca de procesador que hayas elegido para tu PC, difícilmente te encontrarás en la tesitura de que algo no funciona porque la CPU no tiene cierto conjunto de instrucciones… a lo sumo es algo que podría sucederte si tienes una APU o algún modelo demasiado antiguo (anterior a 2011).
Así que de todo ese maremagnum que podemos encontrarnos de distintos tipos de instrucciones, vamos a contar y explicar en este artículo, esencialmente, las denominadas AVX y para qué las utilizan los procesadores que tenemos en nuestros equipos. Para que comprendas cuál es su importancia a la hora de llevar a cabo cierto tipo concreto de tareas. Así que vamos con ellas.
Qué son las instrucciones AVX
Las instrucciones AVX son un término que viene del inglés «Advanced Vector eXtensions«, también conocidas como Sandy Bridge New Extensions, dado que fueron propuestas por Intel en 2008 y fueron inicialmente implementadas en los procesadores Sandy Bridge (por ejemplo, en el famoso Core i5-2500K que la marca lanzó allá por 2011). Fue a partir de ese momento en el que la industria viró en esa dirección y se separó paulatinamente de lo que permitían hacer los SoC previos a esa fecha.
Básicamente, estas instrucciones AVX consisten en un conjunto específico de instrucciones para procesadores Intel y AMD que añadieron a la arquitectura x86 de sus procesadores, en el caso de Intel a partir de Sandy Bridge en 2011 y en el caso de AMD a partir de Bulldozer, también en 2011. AVX proporciona nuevas características y nuevas instrucciones que dictaminan cómo gestiona el procesador los datos a la hora de procesarlos y suponen una evolución evidente respecto de las viejas CPU anteriores a 2011.
Las instrucciones AVX tienen variantes, como AVX2 que amplió la mayoría de comandos del procesador a 256 bits e introdujo operaciones fusionadas de acumulación múltiple (FMA). Por su parte, AVX-512 amplía la compatibilidad de AVX a 512 bits utilizando una nueva codificación de prefijo EVEX propuesta por Intel en 2013 e integrada por primera vez en los procesadores Knights Landing, en 2016.
Para qué usan los procesadores las instrucciones AVX
Estas instrucciones sirven para decirle al procesador cómo debe gestionar los datos que le llegan, dependiendo del tipo de dato. En otras palabras, son una especie de índice o incluso diccionario que le da al procesador una mayor capacidad de gestión, con autonomía para poder decidir qué método es el más eficiente para tener un mejor rendimiento. De esta forma, podríamos decir que el procesador es capaz de organizar cada proceso en función de la información que le llega para optimizar todos los procesos y ser mucho más eficiente.
Estos son los tipos de instrucciones AVX que podemos encontrar en la actualidad (y también os hacemos un breve resumen indicando para qué sirve cada uno de ellos).
Instrucción | Descripción |
---|---|
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 | Copia un operando de la memoria de 32, 64 o 128 bit en un registro de vector XMM o YMM |
VINSERTF128 | Reemplaza la mitad inferior de la mitad superior de un registro YMM de 256 bits con un operando de 128 bits. La otra mitad del destino no se cambia. |
VEXTRACTF128 | Extrae la mitad inferior de la mitad superior de un registro YMM de 256 bit y copia el valor a un operando destino de 128 bit. |
VMASKMOVPS, VMASKMOVPD | Lee condicionalmente cualquier número de elementos de un operando de memoria vectorial SIMD en un registro de destino, dejando los elementos vectoriales restantes sin leer y configurando los elementos correspondientes en el registro de destino a cero. Alternativamente, escribe condicionalmente cualquier número de elementos desde un operando de registro de vector SIMD a un operando de memoria de vector, dejando los elementos restantes del operando de memoria sin cambios. En la arquitectura de procesador AMD Jaguar, esta instrucción con un operando de origen de memoria tarda más de 300 ciclos de reloj cuando la máscara es cero, en cuyo caso la instrucción no debe hacer nada. Esto parece ser un defecto de diseño. |
VPERMILPS, VPERMILPD | Permute en el carril. Mezcla los elementos vectoriales de 32 bits o 64 bits de un operando de entrada. Estas son instrucciones de 256 bits en el carril, lo que significa que operan en todos los 256 bits con dos datos aleatorios separados de 128 bits, por lo que no pueden generar aleatorios en los carriles de 128 bits. |
VPERM2F128 | Mezcla los cuatro elementos vectoriales de 128 bit de dos operandos de origen de 256 bits en un solo operando de destino de 256 bit, con una constante inmediata como selector. |
VZEROALL | Establece todos los registros YMM a cero y los marca como no utilizados. Se usa para cambiar entre 128 y 256 bits. |
VZEROUPPER | Establece la mitad superior de todos los registros YMM a cero. Se usa par cambiar entre 128 y 256 bits. |
Si esto te suena a chino, no te preocupes porque es así para la mayoría de los mortales. Sin embargo, con saber que existen diferentes tipos de instrucciones AVX y que es el procesador el que se encarga de ejecutarlas, es más que suficiente para que te quedes con el concepto. Al fin y al cabo tampoco vamos a analizar aquí la arquitectura del sistema, ¿verdad? No obstante, continuemos con ello porque todavía hay algo más de miga que, incluso como usuario de a pie, te puede interesar.
¿Tu procesador tiene estas instrucciones?
Hay ocasiones en las que, si tienes un procesador relativamente antiguo (anterior a Sandy Bridge de Intel o Bulldozer de AMD), algunas aplicaciones o juegos podrían no funcionar y no sabes el motivo. Muy probablemente sea porque ese software necesita utilizar alguna de las instrucciones AVX arriba expuestas para funcionar, y si tu procesador no la tiene, no podrá funcionar, así que en ocasiones es importante saber si el procesador que tienes es o no compatible con ciertas instrucciones.
Estos son los procesadores compatibles con AVX:
- Intel: Sandy Bridge (2011), Sandy Bridge-E (2011), Ivy Bridge (2012), Ivy Bridge-E (2013), Haswell (2013), Haswell-E (2014), Broadwell (2014), Broadwell-E (2016), Skylake (2015), Kaby Lake (2016-2017), Skylake-X (2017), Coffee Lake (2017), Cannon Lake (2018), Whiskey Lake (2018), Cascade Lake (2018), Ice Lake (2019), Comet Lake (solo los Core, 2019), Tiger Lake (2020) y todas las generaciones lanzadas a partir de ahí que incluyen las más actuales que han presentado los norteamericanos.
- AMD: Jaguar y más nuevos, Puma y más nuevos, Bulldozer (2011), Piledriver (2012), Steamroller (2014), Excavator (2015), Zen (2017), Zen+ (2018), Zen 2 (2019) y todas las generaciones de procesador AMD lanzados a partir de ahí.
Si tienes un procesador que no aparece en esta lista quiere decir que no es compatible con este tipo de instrucciones, pero como también verás estamos hablando de que prácticamente todos los procesadores que tienen 13 años o menos ya las incorporan, así que sería raro que conservaras una CPU tan sumamente antigua a día de hoy, ¿no? Al fin y al cabo, prácticamente todos los procesadores que AMD e Intel han lanzado desde el año 2011 ya son compatibles con estas instrucciones AVX y han dejado atrás está vieja disyuntiva.
En resumidas cuentas, si tienes un PC tan antiguo como para que haya programas o juegos que no te funcionen porque el procesador no tiene algún conjunto de instrucciones AVX, quizá ya sí que sea hora de que te plantees actualizar el PC a uno nuevo, al menos en lo que se refiere al procesador, para que sea compatible con estas instrucciones AVX.
¿Cómo ver si las soporta mi procesador?
Debes saber que todos los procesadores de AMD e Intel modernos soportan estas instrucciones. Si quieres certificar el tipo de instrucciones AVX que soporte tu procesador, puedes averiguarlo fácilmente. El software CPU-Z te ofrece esta información, indicando si tu procesador las soporta y además, el resto de instrucciones soportas. Para ello debemos seguir estos pasos:
- Tienes que descargar el software CPU-Z, que nos da mucha información útil. Puedes descargarlo desde la página oficial sin ningún tipo de coste.
- Instalamos el programa CPU-Z, ya que siempre va bien tenerlo en el sistema para consultar la información del procesador. Debes saber que también puedes descargar la versión portable, que no requiere de instalación.
- Abríamos el programa y en la pestaña CPU (la inicial) buscaremos el recuadro de «Instructions».
Podemos ver en la sección «Instructions» todos los tipos de instrucciones que soporta nuestro procesador. Este es el método más sencillo que existe para averiguarlo. Lo normal es que el procesador soporte AVX, AVX2 y AVX512F, que son los tipos de instrucciones más habituales en las CPU modernas.
¿Hay muchos juegos que necesitan las instrucciones AVX para funcionar?
Tal y como hemos comentado anteriormente, es probable que tengáis un procesador lo suficientemente antiguo como para que no soporte algunos programas que necesitan las instrucciones AVX para funcionar, pero tampoco hay tantos títulos que hacen uso de las mismas. Los más generales o más antiguos no suelen necesitarlas ya que están programados para que no sea necesario utilizarlas, pero si que es cierto que muchos de los títulos que podemos encontrar actualmente cuentan con ellas, lo que hace que obviamente una CPU que no las incorpora no pueda ejecutar el programa.
Muchos de los juegos que podemos encontrar por ejemplo de Ubisoft suelen necesitar estas instrucciones para funcionar, pero también es cierto que la compañía suele hacer cambios permitiendo que no sea necesario en títulos más antiguos tal y como podemos imaginar. Assassin’s Creed: Odyssey es uno de los grandes juegos que podemos tomar como ejemplo de esta compañía, pero también debéis tener en cuenta que cada vez serán más los juegos que necesiten utilizar este conjunto de instrucciones, mientras que hay algunos que se actualizan para no incorporarlos.
Uno de estos ejemplos es Horizon Zero Dawn, el título llegó con la necesidad de que nuestro procesador tuviera instrucciones AVX, pero tras unos cuantos parches de hace bastantes años dejó de necesitarlas para poder funcionar en cualquier ordenador. La mejor opción al final es tal y como hemos comentado tratar de encontrar un procesador que admita estas instrucciones aunque sea de una generación anterior, ya que el número de juegos que hacen uso de ellas cada vez irán creciendo más al haberse incorporado prácticamente como un estándar en todos los procesadores de nueva generación y similares.
Instrucciones AVX-512
Las instrucciones AVX-512 son una variante de las instrucciones AVX que aparecieron en los procesadores Intel de décima generación. Su particularidad es que son instrucciones SIMD con 512 bits de longitud en los datos, lo que significa que pueden operar con 4 instrucciones de 128 bits, 8 de 64 bits o 16 de 32 bits. Dota al procesador de mucha más versatilidad y paralelismo a la hora de ejecutar instrucciones sin parangón.
Es bastante posible que, si eres un aficionado al hardware, hayas leído bastante sobre estas instrucciones en concreto en los últimos tiempos, ya que son especialmente utilizadas para acelerar ciertos algoritmos de inteligencia artificial (el tema de moda, desde luego) pero no son tan eficientes como un procesador dedicado.
Se espera que, como Intel y AMD las integran por defecto en sus procesadores, los desarrolladores de software las aprovechen. Este tipo de instrucciones AVX-512 son especialmente importantes para el segmento de la inteligencia artificial y machina learning. Así que cobran especialmente importancia, sobre todo, ante la creciente integración de Microsoft Copilot dentro de Windows. Por tanto, aunque el procesador carezca de las nuevas NPU (Neural Processing Units) igualmente podrá ser utilizado para tareas de inteligencia artificial.