Articulo de referencia

Extensiones vectoriales avanzadas

Las extensiones vectoriales avanzadas ( AVX , también conocidas como instrucciones nuevas de Gesher y luego instrucciones nuevas de Sandy Bridge ) son extensiones SIMD para la a...

Las extensiones vectoriales avanzadas ( AVX , también conocidas como instrucciones nuevas de Gesher y luego instrucciones nuevas de Sandy Bridge ) son extensiones SIMD para la arquitectura del conjunto de instrucciones x86 de los microprocesadores de Intel y Advanced Micro Devices (AMD). Fueron propuestas por Intel en marzo de 2008 y recibieron soporte inicialmente de Intel con la microarquitectura Sandy Bridge [ 1 ] lanzada en el primer trimestre de 2011 y posteriormente por AMD con la microarquitectura Bulldozer [ 2 ] lanzada en el cuarto trimestre de 2011. AVX proporciona nuevas características, nuevas instrucciones y un nuevo esquema de codificación.

AVX2 (también conocido como Haswell New Instructions ) amplía la mayoría de los comandos enteros a 256 bits e introduce nuevas instrucciones. Intel las implementó por primera vez con la microarquitectura Haswell , lanzada en 2013.

AVX-512 amplía la compatibilidad de AVX a 512 bits mediante una nueva codificación de prefijo EVEX propuesta por Intel en julio de 2013 y compatible por primera vez con el coprocesador Knights Landing , lanzado en 2016. [ 3 ] [ 4 ] En los procesadores convencionales, AVX-512 se introdujo con los procesadores de servidor Skylake y HEDT en 2017.

Extensiones vectoriales avanzadas

AVX utiliza dieciséis registros YMM para ejecutar una sola instrucción sobre múltiples datos (véase SIMD ). Cada registro YMM puede almacenar y realizar operaciones simultáneas (matemáticas) sobre:

  • ocho números de punto flotante de precisión simple de 32 bits o
  • cuatro números de coma flotante de doble precisión de 64 bits.

El ancho de los registros SIMD se incrementa de 128 bits a 256 bits y se renombran de XMM0–XMM7 a YMM0–YMM7 (en modo x86-64 , de XMM0–XMM15 a YMM0–YMM15). Las instrucciones SSE heredadas aún se pueden utilizar mediante el prefijo VEX para operar con los 128 bits inferiores de los registros YMM.

AVX introduce un formato de instrucción SIMD de tres operandos llamado esquema de codificación VEX , donde el registro de destino es distinto de los dos operandos fuente. Por ejemplo, una instrucción SSE que utiliza la forma convencional de dos operandos aa + b ahora puede usar una forma no destructiva de tres operandos ca + b , conservando ambos operandos fuente. Originalmente, el formato de tres operandos de AVX estaba limitado a las instrucciones con operandos SIMD (YMM) y no incluía instrucciones con registros de propósito general (por ejemplo, EAX). Posteriormente se utilizó para codificar nuevas instrucciones en registros de propósito general en extensiones posteriores, como BMI . La codificación VEX también se utiliza para instrucciones que operan en los registros de máscara k0-k7 que se introdujeron con AVX-512 .

Se relaja el requisito de alineación de los operandos de memoria SIMD. [ 5 ] A diferencia de sus contrapartes no codificadas en VEX, la mayoría de las instrucciones vectoriales codificadas en VEX ya no requieren que sus operandos de memoria estén alineados con el tamaño del vector. Cabe destacar que la VMOVDQAinstrucción aún requiere que su operando de memoria esté alineado.

El nuevo esquema de codificación VEX introduce un nuevo conjunto de prefijos de código que amplía el espacio de códigos de operación , permite que las instrucciones tengan más de dos operandos y permite que los registros vectoriales SIMD sean más largos que 128 bits. El prefijo VEX también se puede utilizar en las instrucciones SSE heredadas, dándoles una forma de tres operandos y haciendo que interactúen de manera más eficiente con las instrucciones AVX sin necesidad de VZEROUPPERy VZEROALL.

Las instrucciones AVX admiten SIMD de 128 y 256 bits. Las versiones de 128 bits pueden ser útiles para mejorar código antiguo sin necesidad de ampliar la vectorización y evitar la penalización que supone pasar de SSE a AVX; además, son más rápidas en algunas implementaciones antiguas de AVX de AMD. Este modo se conoce a veces como AVX-128. [ 6 ]

En comparación con la serie SSE, AVX mejoró aún más el rendimiento en la reproducción de medios digitales , la navegación web , el cifrado asimétrico y otras funciones.

Nuevas instrucciones

Estas instrucciones AVX se suman a las que son extensiones de 256 bits de las instrucciones SSE de 128 bits ya existentes; la mayoría se pueden usar tanto con operandos de 128 bits como de 256 bits.

CPUs con AVX

Los problemas relacionados con la compatibilidad entre los futuros procesadores Intel y AMD se tratan en el conjunto de instrucciones XOP .

  • A TRAVÉS DE :
    • Nano QuadCore
    • Edén X4
  • Zhaoxin :
    • Procesadores basados ​​en WuDaoKou (KX-5000 y KH-20000)

Compatibilidad con compiladores y ensambladores

  • Absoft es compatible con la bandera - mavx .
  • El compilador Free Pascal admite AVX y AVX2 mediante los parámetros -CfAVX y -CfAVX2 a partir de la versión 2.7.1.
  • RAD studio (v11.0 Alexandria) admite AVX2 y AVX-512. [ 12 ]
  • Las funciones de ensamblaje en línea del ensamblador GNU (GAS) admiten estas instrucciones (accesibles a través de GCC), al igual que las primitivas de Intel y el ensamblador en línea de Intel (estrechamente compatible con GAS, aunque más general en su manejo de referencias locales dentro del código en línea). GAS admite AVX a partir de la versión 2.19 de binutils. [ 13 ]
  • GCC, a partir de la versión 4.6 (aunque existía una rama 4.3 con cierto soporte), y el Intel Compiler Suite, a partir de la versión 11.1, son compatibles con AVX.
  • La versión 4.5.1 del compilador Open64 admite AVX con la bandera -mavx .
  • PathScale lo admite mediante el indicador -mavx .
  • El compilador Vector Pascal admite AVX mediante la bandera -cpuAVX32 .
  • El compilador de Visual Studio 2010/2012 admite AVX mediante funciones intrínsecas y el modificador /arch:AVX .
  • NASM a partir de la versión 2.03 y posteriores. Hubo numerosas correcciones de errores y actualizaciones relacionadas con AVX en la versión 2.04. [ 14 ]
  • Otros ensambladores como MASM versión VS2010, YASM , [ 15 ] FASM y JWASM .

Soporte del sistema operativo

AVX agrega nuevos estados de registro a través del archivo de registros YMM de 256 bits, por lo que se requiere compatibilidad explícita del sistema operativo para guardar y restaurar correctamente los registros expandidos de AVX entre cambios de contexto . Las siguientes versiones de sistemas operativos son compatibles con AVX:

Extensiones vectoriales avanzadas 2

Advanced Vector Extensions 2 (AVX2), también conocidas como Haswell New Instructions , [ 25 ] son ​​una expansión del conjunto de instrucciones AVX introducido en la microarquitectura Haswell de Intel . AVX2 realiza las siguientes adiciones:

  • Expansión de la mayoría de las instrucciones SSE y AVX de enteros vectoriales a 256 bits.
  • Recopilar soporte, lo que permite cargar elementos vectoriales desde ubicaciones de memoria no contiguas.
  • Permutaciones de cualquier a cualquier con granularidad DWORD y QWORD
  • desplazamientos vectoriales.

En ocasiones, la extensión de multiplicación y acumulación fusionada de tres operandos (FMA3) se considera parte de AVX2, ya que Intel la introdujo en la misma microarquitectura de procesador. Se trata de una extensión independiente que utiliza su propio indicador CPUID , descrito en su propia página y no a continuación.

Nuevas instrucciones

CPUs con AVX2

AVX-512

AVX-512 son extensiones de 512 bits para las instrucciones SIMD de extensiones vectoriales avanzadas de 256 bits para la arquitectura del conjunto de instrucciones x86 propuestas por Intel en julio de 2013. [ 3 ]

Las instrucciones AVX-512 se codifican con el nuevo prefijo EVEX . Permite 4 operandos, 8 nuevos registros opmask de 64 bits , modo de memoria escalar con difusión automática, control de redondeo explícito y modo de direccionamiento de memoria de desplazamiento comprimido . El ancho del archivo de registros se incrementa a 512 bits y el número total de registros aumenta a 32 (registros ZMM0-ZMM31) en modo x86-64.

AVX-512 consta de múltiples subconjuntos de instrucciones, no todos los cuales están diseñados para ser compatibles con todos los procesadores que los implementan. El conjunto de instrucciones consta de lo siguiente:

  • AVX-512 Foundation (F) : agrega varias instrucciones nuevas y amplía la mayoría de las instrucciones SSE-SSE4.1 y AVX/AVX2 de punto flotante de 32 y 64 bits con esquema de codificación EVEX para admitir registros de 512 bits, máscaras de operación, difusión de parámetros y control de excepciones y redondeo integrado. 
  • Instrucciones de detección de conflictos AVX-512 (CD) : detección de conflictos eficiente para permitir que se vectoricen más bucles, compatible con Knights Landing [ 3 ]. 
  • Instrucciones exponenciales y recíprocas AVX-512 (ER) : operaciones exponenciales y recíprocas diseñadas para ayudar a implementar operaciones trascendentales, compatibles con Knights Landing [ 3 ]. 
  • Instrucciones de precarga AVX-512 (PF) : nuevas capacidades de precarga, compatibles con Knights Landing [ 3 ]. 
  • Extensiones de longitud de vector AVX-512 (VL) : extienden la mayoría de las operaciones AVX-512 para operar también en registros XMM (128 bits) y YMM (256 bits) (incluidos XMM16-XMM31 y YMM16-YMM31 en modo x86-64) [ 26 ]. 
  • Instrucciones de byte y palabra AVX-512 (BW) : extiende AVX-512 para cubrir operaciones con enteros de 8 y 16 bits [ 26 ]. 
  • Instrucciones AVX-512 de doble palabra y cuádruple palabra (DQ) : operaciones con enteros de 32 y 64 bits mejoradas [ 26 ]. 
  • Multiplicación y suma fusionada de enteros AVX-512 (IFMA) : multiplicación y suma fusionada para enteros de 512 bits. [ 27 ] : 746 
  • Las instrucciones de manipulación de bytes vectoriales (VBMI) de AVX-512 añaden instrucciones de permutación de bytes vectoriales que no están presentes en AVX-512BW.
  • Instrucciones de red neuronal vectorial AVX-512 con precisión variable de palabra (4VNNIW) : instrucciones vectoriales para el aprendizaje profundo. 
  • AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS) : instrucciones vectoriales para aprendizaje profundo. 
  • VPOPCNTDQ recuento de bits establecido en 1. [ 28 ] 
  • VPCLMULQDQ multiplicación sin acarreo de palabras cuádruples. [ 28 ] 
  • Instrucciones de red neuronal vectorial AVX-512 (VNNI) : instrucciones vectoriales para aprendizaje profundo. [ 28 ] 
  • Instrucciones nuevas para el campo de Galois AVX-512 (GFNI) : instrucciones vectoriales para calcular el campo de Galois . [ 28 ] 
  • Instrucciones AVX-512 Vector AES (VAES) : instrucciones vectoriales para codificación AES . [ 28 ] 
  • Instrucciones de manipulación de bytes vectoriales AVX-512 2 (VBMI2) : carga, almacenamiento y concatenación de bytes/palabras con desplazamiento. [ 28 ] 
  • Algoritmos de bits AVX-512 (BITALG) : instrucciones de manipulación de bits de byte/palabra que expanden VPOPCNTDQ. [ 28 ] 
  • Instrucciones de punto flotante AVX-512 Bfloat16 (BF16) : instrucciones vectoriales para la aceleración de la IA. 
  • Instrucciones de punto flotante de precisión media AVX-512 (FP16) : instrucciones vectoriales para operar con números complejos y de punto flotante con precisión reducida. 
  • Instrucciones de manipulación de bits AVX-512 (BMM) : instrucciones para la multiplicación de matrices de bits y la inversión de bits. 

Solo la extensión principal AVX-512F (AVX-512 Foundation) es necesaria para todas las implementaciones, aunque todas las implementaciones actuales también admiten CD (detección de conflictos). Todos los procesadores centrales con AVX-512 también admiten VL, DQ y BW. Las extensiones del conjunto de instrucciones ER, PF, 4VNNIW y 4FMAPS actualmente solo están implementadas en los coprocesadores de computación de Intel.

Las instrucciones SSE/AVX actualizadas en AVX-512F utilizan los mismos mnemónicos que las versiones AVX; pueden operar en registros ZMM de 512 bits y también admitirán registros XMM/YMM de 128/256 bits (con AVX-512VL) y operandos enteros de byte, palabra, doble palabra y cuádruple palabra (con AVX-512BW/DQ y VBMI). [ 27 ] : 23

Los subconjuntos descontinuados incluyen:

  • AVX-512 Intersección de pares de vectores a un par de registros de máscara (VP2INTERSECT) : calcula la intersección entre palabras dobles/cuádruples a un par de registros de máscara. Intel lo ha descontinuado , pero AMD aún lo admite. 
  • Xeon Phi ER, PF, 4FMAPS, 4VNNIW.

Tabla de compatibilidad de CPU AVX-512

[ 29 ]

^Nota 1 : Intel no admite oficialmente la familia de instrucciones AVX-512 en losAlder Lake. A principios de 2022, Intel comenzó a deshabilitar (desactivar) AVX-512 en silicio en los microprocesadores Alder Lake para evitar que los clientes lo habilitaran. [ 30 ] En CPU más antiguas de la familia Alder Lake con algunas combinaciones heredadas de revisiones de BIOS y microcódigo, era posible ejecutar instrucciones de la familia AVX-512 al deshabilitar todos los núcleos de eficiencia que no contienen el silicio para AVX-512. [ 31 ] [ 32 ] [ 33 ]

Compiladores compatibles con AVX-512

  • Clang 3.9 y versiones posteriores [ 34 ]
  • GCC 4.9 y versiones posteriores [ 35 ]
  • ICC 15.0.1 y versiones posteriores [ 36 ]
  • Compilador de C++ de Microsoft Visual Studio 2017 [ 37 ]

Ensambladores compatibles con AVX-512

AVX-VNNI, AVX-IFMA

AVX-VNNI es una variante codificada en VEX de la extensión del conjunto de instrucciones AVX512-VNNI . De manera similar, AVX-IFMA es una variante codificada en VEX de AVX512-IFMA . Estas extensiones proporcionan los mismos conjuntos de operaciones que sus contrapartes AVX-512, pero están limitadas a vectores de 256 bits y no admiten ninguna característica adicional de la codificación EVEX , como la difusión, los registros opmask o el acceso a más de 16 registros vectoriales. Estas extensiones permiten admitir operaciones VNNI e IFMA incluso cuando AVX-512 no está implementado en el procesador.

CPUs con AVX-VNNI

CPUs con AVX-IFMA

AVX-NE-CONVERT

AVX-NE-CONVERT introduce un conjunto de instrucciones para convertir números de coma flotante de precisión media (FP16) y precisión simple (FP32) entre Bfloat16 (BF16) . Estas nuevas instrucciones están codificadas en VEX y, por lo tanto, se limitan a los registros vectoriales AVX2 y carecen de compatibilidad con máscaras de operación de AVX-512. La difusión solo se admite mediante dos instrucciones especiales para cargar números desde la memoria; no se admite como una función de codificación de instrucciones.

Nuevas instrucciones

CPUs con AVX-NE-CONVERT

AVX-VNNI-INT8, AVX-VNNI-INT16

Estos conjuntos de instrucciones amplían aún más la extensión AVX-VNNI al añadir compatibilidad con más combinaciones de tipos de datos de entrada para la VPDP*serie de instrucciones. Mientras que VPDPBUSD(S)las instrucciones de AVX-VNNI toman un vector de bytes sin signo como primer operando de entrada y un vector de bytes con signo como segundo operando de entrada, AVX-VNNI-INT8 añade variantes de estas instrucciones que admiten entradas de bytes con y sin signo en cualquier posición. Del mismo modo, mientras VPDPWSSD(S)que AVX-VNNI toma dos vectores de palabras de 16 bits con signo como operandos de entrada, AVX-VNNI-INT16 añade compatibilidad con entradas de palabras de 16 bits con y sin signo en cualquier posición.

Para las instrucciones que aceptan entradas con y sin signo, existen instrucciones distintas para los dos posibles órdenes de entrada (con signo/sin signo y sin signo/con signo), ya que la codificación VEX solo admite que el segundo operando de entrada sea un operando de memoria. Esto permite que la instrucción cargue desde la memoria cualquiera de los tipos de datos admitidos.

Nuevas instrucciones en AVX-VNNI-INT8

Nuevas instrucciones en AVX-VNNI-INT16

CPUs con AVX-VNNI-INT8

CPUs con AVX-VNNI-INT16

AVX10

AVX10, anunciado en julio de 2023, [ 40 ] es un nuevo conjunto de instrucciones AVX "convergente". Aborda varios problemas de AVX-512; en particular, que está dividido en demasiadas partes [ 41 ] (20 indicadores de características). El documento técnico inicial también hacía que el soporte para vectores de 512 bits fuera opcional, pero a partir de la revisión 3.0, se eliminó la enumeración de la longitud del vector y los vectores de 512 bits son obligatorios. [ 42 ]

AVX10 presenta una interfaz CPUID simplificada para probar la compatibilidad con instrucciones, que consiste en el número de versión de AVX10 (que indica el conjunto de instrucciones compatibles, siendo las versiones posteriores siempre un superconjunto de una anterior). [ 43 ] Por ejemplo, AVX10.2 indica que una CPU es capaz de la segunda versión de AVX10. [ 44 ] Las revisiones iniciales de las especificaciones técnicas de AVX10 también incluían la longitud máxima de vector admitida como parte del nombre de la extensión ISA, por ejemplo, AVX10.2/256 significaría una segunda versión de AVX10 con una longitud de vector de hasta 256 bits, pero las revisiones posteriores hicieron que eso fuera innecesario.

La primera versión de AVX10, denominada AVX10.1, no introduce instrucciones ni características de codificación adicionales a las ya presentes en AVX-512 (específicamente, en Intel Sapphire Rapids : AVX-512F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, BITALG, VNNI, GFNI, VPOPCNTDQ, VPCLMULQDQ, VAES, BF16, FP16). Para las CPU compatibles con AVX10 y vectores de 512 bits, todas las banderas de características AVX-512 heredadas permanecerán activadas para facilitar que las aplicaciones compatibles con AVX-512 continúen utilizando instrucciones AVX-512. [ 44 ]

AVX10.1 se lanzó por primera vez en Intel Granite Rapids [ 44 ] (T3 2024) y AVX10.2 estará disponible en Diamond Rapids [ 45 ] y Nova Lake . [ 46 ]

Aplicaciones

Software

  • Criptografía
    • Los kits de herramientas BSAFE C utilizan AVX y AVX2 cuando corresponde para acelerar varios algoritmos criptográficos. [ 48 ]
    • OpenSSL utiliza funciones criptográficas optimizadas para AVX y AVX2 desde la versión 1.0.2. [ 49 ] Se agregó compatibilidad con AVX-512 en la versión 3.0.0. [ 50 ] Algunas de estas optimizaciones también están presentes en varios clones y bifurcaciones, como LibreSSL.
  • Ciencia, ingeniería y otras
    • Esri ArcGIS Data Store utiliza AVX2 para el almacenamiento de gráficos. [ 56 ]
    • Prime95 /MPrime, el software utilizado para GIMPS , comenzó a usar las instrucciones AVX desde la versión 27.1, AVX2 desde la 28.6 y AVX-512 desde la 29.1. [ 57 ]
    • Einstein@Home utiliza AVX en algunas de sus aplicaciones distribuidas que buscan ondas gravitacionales . [ 58 ]
    • TensorFlow desde la versión 1.6 y versiones superiores requiere una CPU que admita al menos AVX. [ 59 ]
    • EmEditor 19.0 y versiones posteriores utilizan AVX2 para acelerar el procesamiento. [ 60 ]
    • Microsoft Teams utiliza instrucciones AVX2 para crear un fondo borroso o personalizado detrás de los participantes del chat de vídeo, [ 61 ] y para la supresión del ruido de fondo. [ 62 ]
    • simdjson , una biblioteca de análisis JSON , utiliza AVX2 y AVX-512 para lograr una mayor velocidad de decodificación. [ 63 ] [ 64 ]
    • x86-simd-sort , una biblioteca con algoritmos de ordenación para tipos de datos numéricos de 16, 32 y 64 bits, utiliza AVX2 y AVX-512. La biblioteca se utiliza en NumPy y OpenJDK para acelerar los algoritmos de ordenación. [ 65 ]
    • El motor OCR de Tesseract utiliza AVX, AVX2 y AVX-512 para acelerar el reconocimiento de caracteres. [ 66 ]

Reducción de la frecuencia

Dado que las instrucciones AVX son más extensas, consumen más energía y generan más calor. La ejecución de instrucciones AVX complejas a altas frecuencias de reloj de la CPU puede afectar su estabilidad debido a una caída de voltaje excesiva durante los picos de carga. Algunos procesadores Intel cuentan con mecanismos para reducir el límite de frecuencia de Turbo Boost cuando se ejecutan dichas instrucciones. Esta reducción se produce incluso si la CPU no ha alcanzado sus límites térmicos y de consumo de energía.

En Skylake y sus derivados, la limitación de rendimiento se divide en tres niveles: [ 67 ] [ 68 ]

  • L0 (100%): El límite normal de presión del turbo.
  • L1 (~85%): El límite de "AVX boost". Se activa suavemente mediante instrucciones "pesadas" de 256 bits (unidad de punto flotante: aritmética de punto flotante y multiplicación de enteros). Se activa físicamente mediante instrucciones "ligeras" (todas las demás) de 512 bits.
  • L2 (~60%): El límite de "aumento AVX-512". Se activa suavemente mediante instrucciones pesadas de 512 bits.

La transición de frecuencia puede ser suave o dura. Una transición dura implica que la frecuencia se reduce tan pronto como se detecta una instrucción de este tipo; una transición suave implica que la frecuencia se reduce solo después de alcanzar un número umbral de instrucciones coincidentes. El límite es por hilo. [ 67 ]

En Ice Lake , solo persisten dos niveles: [ 69 ]

  • L0 (100%): El límite normal de presión del turbo.
  • L1 (~97%): Se activa con cualquier instrucción de 512 bits, pero solo cuando el aumento de un solo núcleo está activo; no se activa cuando se cargan varios núcleos.

Los procesadores Rocket Lake no activan la reducción de frecuencia al ejecutar ningún tipo de instrucción vectorial, independientemente del tamaño del vector. [ 69 ] Sin embargo, la reducción de frecuencia aún puede ocurrir debido a otras razones, como alcanzar los límites térmicos y de potencia.

La reducción de la frecuencia implica que el uso de AVX en una carga de trabajo mixta con un procesador Intel puede conllevar una penalización en la frecuencia. Evitar el uso de instrucciones amplias y pesadas ayuda a minimizar el impacto en estos casos. AVX-512VL permite el uso de operandos de 256 o 128 bits en las instrucciones AVX-512, lo que lo convierte en una opción predeterminada sensata para cargas mixtas. [ 70 ]

En las variantes compatibles y desbloqueadas de procesadores que reducen la frecuencia, las compensaciones de reducción de la relación de reloj (normalmente llamadas compensaciones AVX y AVX-512) son ajustables y pueden desactivarse por completo (establecerse en 0x) a través de la utilidad de overclocking/ajuste de Intel o en la BIOS si esta lo admite. [ 71 ]

Véase también

Referencias

  1. Kanter, David (25 de septiembre de 2010). "Microarquitectura Sandy Bridge de Intel" . www.realworldtech.com . Consultado el 17 de febrero de 2018 .
  2. Hruska, Joel (24 de octubre de 2011). "Analizando Bulldozer: Por qué el chip de AMD es tan decepcionante - Página 4 de 5 - ExtremeTech" . ExtremeTech . Consultado el 17 de febrero de 2018 .
  3. 1 2 3 4 5 James Reinders (23 de julio de 2013), Instrucciones AVX-512 , Intel , consultado el 20 de agosto de 2013
  4. "Especificaciones del producto del procesador Intel Xeon Phi 7210 (16 GB, 1,30 GHz, 64 núcleos)" . Intel ARK (Especificaciones del producto) . Consultado el 16 de marzo de 2018 .
  5. "14.9". Manual del desarrollador de software de las arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica (PDF) ( ed. -051US ). Intel Corporation. pág. 349. Recuperado el 23 de agosto de 2014. Los argumentos de memoria para la mayoría de las instrucciones con prefijo VEX funcionan normalmente sin causar #GP(0) en ninguna alineación de granularidad de byte (a diferencia de las instrucciones SSE heredadas).  
  6. "Opciones i386 y x86-64: uso de la colección de compiladores GNU (GCC)" . Consultado el 9 de febrero de 2014 .
  7. "La microarquitectura de las CPU de Intel, AMD y VIA: una guía de optimización para programadores de lenguaje ensamblador y creadores de compiladores" (PDF) . Consultado el 17 de octubre de 2016 .
  8. "Programación de ajedrez AVX2" . Archivado del original el 10 de julio de 2017. Consultado el 17 de octubre de 2016 .
  9. "Intel ofrece un vistazo a Nehalem y Larrabee" . ExtremeTech. 17 de marzo de 2008.
  10. 1 2 "Especificaciones del producto del procesador Intel® Celeron® 6305 (4M de caché, 1,80 GHz, con IPU)" . ark.intel.com . Consultado el 10 de noviembre de 2020 .
  11. Butler, Michael; Barnes, Leslie; Das Sarma, Debjit; Gelinas, Bob (marzo-abril de 2011). "Bulldozer: Un enfoque para el rendimiento de la computación multihilo" (PDF) . IEEE Micro . 31 (2): 6–15 . doi : 10.1109/MM.2011.23 . S2CID 28236214. Archivado del original (PDF) el 19 de mayo de 2024. 
  12. "Novedades - RAD Studio" . docwiki.embarcadero.com . Consultado el 17 de septiembre de 2021 .
  13. "Cambios en GAS" . sourceware.org . Consultado el 3 de mayo de 2024 .
  14. 1 2 "NASM - El ensamblador de red, Apéndice C: Historial de versiones de NASM" . nasm.us. Consultado el 3 de mayo de 2024 .
  15. "Notas de la versión YASM 0.7.0" . yasm.tortall.net .
  16. Agregar soporte para los estados FPU extendidos en amd64, tanto para ABI nativas de 64 bits como de 32 bits , svnweb.freebsd.org, 21 de enero de 2012 , consultado el 22 de enero de 2012
  17. "Anuncio de lanzamiento de FreeBSD 9.1" . Consultado el 20 de mayo de 2013 .
  18. x86: agregar soporte del kernel de Linux para el estado YMM , consultado el 13 de julio de 2009.
  19. Linux 2.6.30 - Linux Kernel Newbies , consultado el 13 de julio de 2009
  20. Twitter , consultado el 23 de junio de 2010
  21. "Los desarrolladores están logrando que macOS Ventura funcione en Macs de hace una década que no cuentan con soporte" . 23 de agosto de 2022.
  22. Se agregó compatibilidad para guardar/restaurar el estado de la FPU mediante XSAVE/XRSTOR. , consultado el 25 de marzo de 2015
  23. Compatibilidad con punto flotante para controladores de 64 bits , consultado el 6 de diciembre de 2009.
  24. Zhang, Rui (27 de febrero de 2020). "Autovectorización AVX-512 en MSVC" . Blog del equipo de C++ . Consultado el 13 de junio de 2026 .
  25. Nuevas descripciones de instrucciones de Haswell ya disponibles , Software.intel.com , consultado el 17 de enero de 2012
  26. 1 2 3 James Reinders (17 de julio de 2014). "Instrucciones AVX-512 adicionales" . Intel . Recuperado el 3 de agosto de 2014 .
  27. 1 2 "Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel" (PDF) . Intel . Consultado el 29 de enero de 2014 .
  28. 1 2 3 4 5 6 7 "Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel® y funciones futuras" . Intel . Consultado el 16 de octubre de 2017 .
  29. "Emulador de desarrollo de software Intel® | Software Intel®" . software.intel.com . Consultado el 11 de junio de 2016 .
  30. Alcorn, Paul (2 de marzo de 2022). "Intel elimina el soporte AVX-512 de Alder Lake y ahora lo desactiva en silicio" . Tom's Hardware . Consultado el 7 de marzo de 2022 .
  31. Cutress, Ian; Frumusanu, Andrei (19 de agosto de 2021). "Día de la Arquitectura de Intel 2021: Detalles de Alder Lake, Golden Cove y Gracemont" . AnandTech . Archivado del original el 25 de agosto de 2021. Recuperado el 25 de agosto de 2021 .
  32. Alcorn, Paul (19 de agosto de 2021). "Día de la Arquitectura Intel 2021: Chips Alder Lake, núcleos Golden Cove y Gracemont" . Tom's Hardware . Consultado el 21 de agosto de 2021 .
  33. Cutress, Ian; Frumusanu, Andrei. "Análisis del procesador Intel Core i9-12900K de 12.ª generación: rendimiento híbrido y complejidad híbrida" . www.anandtech.com . Archivado del original el 4 de noviembre de 2021. Consultado el 5 de noviembre de 2021 .
  34. "Notas de la versión LLVM 3.9 — Documentación de LLVM 3.9" . releases.llvm.org . Consultado el 3 de abril de 2017 .
  35. "Serie de lanzamientos de GCC 4.9: cambios, nuevas características y correcciones Proyecto GNU - Fundación del Software Libre (FSF)" . gcc.gnu.org . Consultado el 3 de abril de 2017 . 
  36. "Notas de la versión de Intel® Parallel Studio XE 2015 Composer Edition C++ | Intel® Software" . software.intel.com . Consultado el 3 de abril de 2017 .
  37. "Microsoft Visual Studio 2017 es compatible con Intel® AVX-512" . 11 de julio de 2017.
  38. "Se publica la compatibilidad del compilador AMD Zen 5 con GCC: confirma nuevas funciones AVX y más" . www.phoronix.com . Consultado el 10 de febrero de 2024 .
  39. 1 2 3 " [ PARCHE ] Agregar soporte para procesadores AMD znver6" . 19 de noviembre de 2025.
  40. Bonshor, Gavin (25 de julio de 2023). "Intel presenta los conjuntos de instrucciones AVX10 y APX: Unificando AVX-512 para arquitecturas híbridas" . AnandTech . Archivado del original el 25 de julio de 2023. Recuperado el 21 de agosto de 2024 .
  41. Mann, Tobias (15 de agosto de 2023). "AVX10 de Intel promete los beneficios de AVX-512 sin inconvenientes" . www.theregister.com . Consultado el 20 de agosto de 2023 .
  42. Larabel, Michael (19 de marzo de 2025). "Intel AVX10 elimina la opción de 512 bits: No habrá núcleos E AVX10 de solo 256 bits en el futuro" . Phoronix . Consultado el 19 de marzo de 2025 .
  43. "The Converged Vector ISA: Intel® Advanced Vector Extensions 10 Technical Paper" . Intel .
  44. 1 2 3 "Especificación de la arquitectura de Intel® Advanced Vector Extensions 10 (Intel® AVX10)" . Intel .
  45. Larabel, Michael (23 de octubre de 2024). "Intel prepara el compilador GCC para las nuevas características AMX e ISA antes de Diamond Rapids" . Phoronix . Consultado el 23 de octubre de 2024 .
  46. "Intel ahora confirma que Nova Lake será compatible con AVX10.2 y extensiones APX" . www.phoronix.com . Consultado el 13 de noviembre de 2025 .
  47. "Linux RAID" . LWN. 17 de febrero de 2013.{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  48. "Comparación de implementaciones de la biblioteca criptográfica BSAFE" . 25 de julio de 2023.
  49. "Mejora del rendimiento de OpenSSL" . 26 de mayo de 2015. Consultado el 28 de febrero de 2017 .
  50. "Notas de la versión 3.0.0 de OpenSSL" . GitHub . 7 de septiembre de 2021.
  51. Jaroš, Milán; Strakoš, Petr; Říha, Lubomír (28 de mayo de 2022). "Renderizado en Blender usando vectorización AVX-512" (PDF) . Grupo de usuarios de Intel eXtreme Performance . Universidad Técnica de Ostrava . Consultado el 28 de octubre de 2022 .
  52. "MASSIVE X requiere un procesador compatible con AVX" . Native Instruments . Consultado el 29 de noviembre de 2019 .
  53. "dav1d: rendimiento y finalización de la primera versión" . 21 de noviembre de 2018. Consultado el 22 de noviembre de 2018 .
  54. "Notas de la versión dav1d 0.6.0" . 6 de marzo de 2020.
  55. "Notas de la versión 0.7.0 de SVT-AV1" . 26 de septiembre de 2019.
  56. "Requisitos del sistema de ArcGIS Data Store 11.2" . ArcGIS Enterprise . Consultado el 24 de enero de 2024 .
  57. "Notas de la versión de Prime95" . Consultado el 10 de julio de 2022 .
  58. "Aplicaciones Einstein@Home" .
  59. "Tensorflow 1.6" . GitHub .
  60. Novedad en la versión 19.0: EmEditor (Editor de texto)
  61. "Requisitos de hardware para Microsoft Teams" . Microsoft . Consultado el 17 de abril de 2020 .
  62. "Reducir el ruido de fondo en las reuniones de Teams" . Soporte técnico de Microsoft . Consultado el 5 de enero de 2021 .
  63. Langdale, Geoff; Lemire, Daniel (2019). "Análisis de gigabytes de JSON por segundo". The VLDB Journal . 28 (6): 941– 960. arXiv : 1902.08318 . doi : 10.1007/s00778-019-00578-5 . S2CID 67856679 . 
  64. "Notas de la versión simdjson 2.1.0" . GitHub . 30 de junio de 2022.
  65. Larabel, Michael (6 de octubre de 2023). "OpenJDK fusiona x86-simd-sort de Intel para acelerar la ordenación de datos entre 7 y 15 veces" . Phoronix .
  66. Larabel, Michael (7 de julio de 2022). "El motor Tesseract OCR 5.2 logra el éxito con AVX-512F" . Phoronix .
  67. 1 2 Lemire, Daniel (7 de septiembre de 2018). "AVX-512: cuándo y cómo usar estas nuevas instrucciones" . Blog de Daniel Lemire .
  68. BeeOnRope. "Instrucciones SIMD que reducen la frecuencia de la CPU" . Stack Overflow .
  69. 1 2 Downs, Travis (19 de agosto de 2020). "Reducción de frecuencia de Ice Lake AVX-512" . Blog Performance Matters .
  70. "x86 - Rendimiento de AVX 512 frente a AVX2 para bucles de procesamiento de matrices simples" . Stack Overflow .
  71. "Guía de Intel® Extreme Tuning Utility (Intel® XTU) para el overclocking : Ajuste avanzado" . Intel . Consultado el 18 de julio de 2021. Véase la imagen en la sección enlazada, donde la relación AVX2 se ha establecido en 0. 
  • Guía de Intel Intrinsics
  • Manual de referencia del lenguaje ensamblador x86
Obtenido de " https://en.wikipedia.org/w/index.php?title=Advanced_Vector_Extensions&oldid=1359142050 "