Qué es x86-64 en Linux y qué significan los niveles v2, v3 y v4 para tu CPU

Elígenos como tu fuente preferida en Google.
No se trata de versiones diferentes del kernel Linux ni tampoco de las distribuciones, sino de requisitos de hardware que determinan qué instrucciones puede utilizar el software.
Cuando alguien empieza a utilizar Linux, es normal encontrarse con términos que no aparecen habitualmente en Windows y que pueden generar bastante confusión.
Uno de ellos es x86-64, especialmente cuando aparece acompañado de referencias como v2, v3 o v4. A primera vista parecen versiones del propio sistema, pero no tienen nada que ver con la versión del kernel ni con la distribución instalada.
En realidad, estos nombres están relacionados con las capacidades que tiene el procesador y con las instrucciones máximas que puede ejecutar.
Por ello, entenderlos resulta útil porque algunos programas y bibliotecas para Linux pueden estar preparados para aprovechar funciones más modernas de una CPU, aunque hacerlo también establece unos requisitos mínimos de hardware.
x86-64 es la arquitectura, no una versión de Linux

Cabe señalar que x86-64 es la arquitectura de 64 bits de la familia de procesadores x86, utilizada actualmente por CPU de fabricantes como AMD e Intel.
Cuando una distribución Linux se instala en un equipo x86-64, significa que el software está preparado para esa arquitectura. Pero esto no indica qué generación de Ryzen, Core u otro procesador tienes, ni determina qué versión del kernel utilizas.
Es decir, es la base sobre la que funcionan las instrucciones y características que posteriormente puede aprovechar el software y que, a partir de esa base, aparecen los niveles x86-64-v1, v2, v3 y v4.
Así que no son ediciones de Linux, sino conjuntos de capacidades que una CPU debe incorporar para poder ejecutar software compilado específicamente para cada nivel.
V2, v3 y v4 elevan las exigencias de la CPU

Por otro lado, x86-64-v1 representa el conjunto básico de instrucciones de la arquitectura. A partir de ahí, cada nivel añade nuevas capacidades y mantiene las anteriores.
V2 incorpora, entre otras extensiones, SSE3, SSSE3, SSE4.1, SSE4.2, CMPXCHG16B y POPCNT, cuyo objetivo es permitir que los programas utilicen instrucciones que no formaban parte de la base original.
En cuanto a v3, supone otro salto y añade AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT y MOVBE. Algunas de estas extensiones resultan interesantes para determinados cálculos y cargas de trabajo que pueden beneficiarse de un procesamiento más eficiente.
Por último, v4 vuelve a elevar el listón y se apoya principalmente en AVX-512, con extensiones como AVX512F, AVX512BW, AVX512CD, AVX512DQ y AVX512VL.
Los niveles son acumulativos, por lo que una CPU compatible con v4 debe cumplir también los requisitos de v2 y v3. Por eso no se puede interpretar cada nivel como una alternativa independiente.
Más capacidad también significa menos compatibilidad
Aquí está la parte realmente importante para el usuario, ya que cuanto más específico sea el software respecto a las capacidades del procesador, menor será el número de CPU capaces de ejecutarlo.
Por ejemplo, un programa compilado para x86-64-v3 puede utilizar instrucciones que una CPU antigua no conoce. En ese equipo, el programa podría directamente no funcionar, aunque ambos procesadores sean x86-64.
Esto permite a los desarrolladores mantener versiones más compatibles y, cuando el hardware lo permite, utilizar compilaciones optimizadas para niveles superiores.
Linux puede aprovechar este planteamiento mediante mecanismos como glibc-hwcaps, que permiten seleccionar bibliotecas adaptadas a las características detectadas en el procesador.
Además, v4 no significa automáticamente que un ordenador vaya a ser más rápido. Su ventaja depende de que la app pueda beneficiarse de AVX-512 y de que el procesador implemente las extensiones necesarias.
Cómo saber qué nivel admite tu procesador
Es importante señalar que Linux permite comprobar las capacidades disponibles en el propio sistema. En equipos recientes puede consultarse el cargador dinámico mediante: /lib64/ld-linux-x86-64.so.2 —help.
La información mostrada permite identificar las capacidades y los directorios glibc-hwcaps que el sistema puede utilizar. Así que x86-64 define la arquitectura; v2, v3 y v4 indican hasta qué conjunto de instrucciones puede llegar una CPU.
Para Linux esto abre la puerta a software mejor adaptado al hardware moderno, pero siempre existe un equilibrio entre aprovechar las capacidades de los procesadores actuales y mantener la compatibilidad con equipos más antiguos.
