De Wikipedia, la enciclopedia libre
  (Redirigido desde AVX2 )
Saltar a navegación Saltar a búsqueda

Las extensiones vectoriales avanzadas ( AVX , también conocidas como Sandy Bridge New Extensions ) son extensiones de la arquitectura del conjunto de instrucciones x86 para microprocesadores de Intel y AMD propuestas por Intel en marzo de 2008 y admitidas por primera vez por Intel con el procesador Sandy Bridge [1] que se distribuyó en el primer trimestre. 2011 y más tarde por AMD con el procesador Bulldozer [2] que se distribuirá en el tercer trimestre de 2011. AVX proporciona nuevas funciones, nuevas instrucciones y un nuevo esquema de codificación.

AVX2 (también conocido como Haswell New Instructions ) expande la mayoría de los comandos enteros a 256 bits e introduce operaciones fusionadas de acumulación múltiple ( FMA ). Primero fueron compatibles con Intel con el procesador Haswell, que se envió en 2013.

AVX-512 expande AVX a la compatibilidad con 512 bits utilizando una nueva codificación de prefijo EVEX propuesta por Intel en julio de 2013 y admitida por primera vez por Intel con el procesador Knights Landing , que se envió en 2016. [3] [4]

Extensiones vectoriales avanzadas [ editar ]

AVX utiliza dieciséis registros YMM para realizar una sola instrucción en varios datos (consulte SIMD ). Cada registro YMM puede contener y realizar operaciones simultáneas (matemáticas) en:

  • ocho números de coma 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 renombra 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 a través del prefijo VEX para operar en 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 de origen. Por ejemplo, una instrucción SSE que usa la forma convencional de dos operandos a = a + b ahora puede usar una forma no destructiva de tres operandos c = a + b , preservando ambos operandos fuente. Originalmente, el formato de tres operandos de AVX se limitaba a las instrucciones con operandos SIMD (YMM) y no incluía instrucciones con registros de propósito general (por ejemplo, EAX). Más tarde 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 las instrucciones que operan en los registros de máscara k0-k7 que se introdujeron conAVX-512 .

El requisito de alineación de los operandos de la memoria SIMD se relaja. [5] A diferencia de sus homólogos no codificados VEX, la mayoría de las instrucciones vectoriales codificadas VEX ya no requieren que sus operandos de memoria estén alineados con el tamaño del vector. En particular, 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 del código de operación , permite que las instrucciones tengan más de dos operandos y permite que los registros vectoriales SIMD tengan una longitud superior a 128 bits. El prefijo VEX también se puede usar en las instrucciones SSE heredadas, dándoles una forma de tres operandos y haciéndolas interactuar de manera más eficiente con las instrucciones AVX sin la necesidad de VZEROUPPERy VZEROALL.

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

Nuevas instrucciones [ editar ]

Estas instrucciones AVX se suman a las que son extensiones de 256 bits de las instrucciones SSE heredadas de 128 bits; la mayoría se pueden utilizar en operandos de 128 y 256 bits.

CPU con AVX [ editar ]

  • Intel
    • Procesadores Sandy Bridge , primer trimestre de 2011 [9]
    • Procesadores Sandy Bridge E , cuarto trimestre de 2011 [10]
    • Procesadores Ivy Bridge , primer trimestre de 2012
    • Procesadores Ivy Bridge E , tercer trimestre de 2013
    • Procesadores Haswell , segundo trimestre de 2013
    • Procesadores Haswell E , tercer trimestre de 2014
    • Procesadores Broadwell , cuarto trimestre de 2014
    • Procesadores Skylake , tercer trimestre de 2015
    • Procesadores Broadwell E , segundo trimestre de 2016
    • Procesadores Kaby Lake , tercer trimestre de 2016 (ULV móvil) / primer trimestre de 2017 (escritorio / móvil)
    • Procesadores Skylake-X , segundo trimestre de 2017
    • Procesadores Coffee Lake , cuarto trimestre de 2017
    • Procesadores Cannon Lake , segundo trimestre de 2018
    • Procesadores Whiskey Lake , tercer trimestre de 2018
    • Procesadores Cascade Lake , cuarto trimestre de 2018
    • Procesadores Ice Lake , tercer trimestre de 2019
    • Procesadores Comet Lake (solo marcas Core y Xeon), tercer trimestre de 2019
    • Procesadores Tiger Lake (Core, Pentium y Celeron [11] ), tercer trimestre de 2020
    • Procesadores Rocket Lake , 2021
    • Procesadores Alder Lake , 2021
    • Procesadores Gracemont , 2021

No todas las CPU de las familias enumeradas admiten AVX. Generalmente, las CPU con la denominación comercial "Core i3 / i5 / i7 / i9" las admiten, mientras que las CPU "Pentium" y "Celeron" no.

  • AMD :
    • Procesadores basados ​​en Jaguar y más nuevos
    • Procesadores basados ​​en Puma y más nuevos
    • Procesadores de "equipo pesado"
      • Procesadores basados ​​en bulldozer, cuarto trimestre de 2011 [12]
      • Procesadores basados ​​en Piledriver , cuarto trimestre de 2012 [13]
      • Procesadores basados ​​en apisonadora, primer trimestre de 2014
      • Procesadores basados ​​en excavadoras y más nuevos, 2015
    • Procesadores basados ​​en Zen , primer trimestre de 2017
    • Procesadores basados ​​en Zen + , segundo trimestre de 2018
    • Procesadores basados ​​en Zen 2 , tercer trimestre de 2019
    • Procesadores Zen 3 , cuarto trimestre de 2020

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

  • VÍA :
    • Nano QuadCore
    • Eden X4
  • Zhaoxin :
    • Procesadores basados ​​en WuDaoKou (KX-5000 y KH-20000)

Soporte de compilador y ensamblador [ editar ]

  • Absoft es compatible con el indicador -mavx.
  • El compilador Free Pascal admite AVX y AVX2 con los modificadores -CfAVX y -CfAVX2 de la versión 2.7.1.
  • Las funciones de ensamblador en línea de GNU Assembler (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 (muy compatible con GAS, aunque más general en su manejo de referencias locales dentro del código en línea).
  • GCC comenzando con la versión 4.6 (aunque había una rama 4.3 con cierto soporte) y Intel Compiler Suite comenzando con la versión 11.1 admite AVX.
  • La versión 4.5.1 del compilador de Open64 admite AVX con el indicador -mavx.
  • PathScale admite a través de la bandera -mavx.
  • El compilador de Vector Pascal es compatible con AVX a través del indicador -cpuAVX32.
  • El Visual Studio 2010 / 2012 compilador soporta AVX vía intrínseca y / arch: interruptor de AVX.
  • Otros ensambladores como la versión MASM VS2010 , YASM , [14] FASM , NASM y JWASM .

Soporte del sistema operativo [ editar ]

AVX agrega un nuevo estado de registro a través del archivo de registro YMM de 256 bits de ancho, por lo que se requiere soporte explícito del sistema operativo para guardar y restaurar correctamente los registros expandidos de AVX entre cambios de contexto . Las siguientes versiones del sistema operativo son compatibles con AVX:

  • DragonFly BSD : soporte agregado a principios de 2013.
  • FreeBSD : soporte agregado en un parche enviado el 21 de enero de 2012, [15] que se incluyó en la versión estable 9.1 [16]
  • Linux : soportado desde la versión 2.6.30 del kernel, [17] lanzado el 9 de junio de 2009. [18]
  • macOS : compatibilidad agregada en la actualización 10.6.8 ( Snow Leopard ) [19] publicada el 23 de junio de 2011.
  • OpenBSD : soporte agregado el 21 de marzo de 2015. [20]
  • Solaris : compatible con Solaris 10 Update 10 y Solaris 11
  • Windows : compatible con Windows 7 SP1, Windows Server 2008 R2 SP1, [21] Windows 8 , Windows 10
    • Windows Server 2008 R2 SP1 con Hyper-V requiere una revisión para admitir procesadores AMD AVX (serie Opteron 6200 y 4200), KB2568088

Extensiones vectoriales avanzadas 2 [ editar ]

Advanced Vector Extensions 2 (AVX2), también conocido como Haswell New Instructions , [22] es 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
  • manipulación de bits de propósito general de tres operandos y multiplicación
  • Reúna soporte, permitiendo que los elementos vectoriales se carguen desde ubicaciones de memoria no contiguas
  • Permutaciones de granularidad de DWORD y QWORD any-to-any
  • cambios de vector.

A veces, otra extensión que usa una bandera cpuid diferente se considera parte de AVX2; esas instrucciones se enumeran en su propia página y no a continuación:

  • Soporte de acumulación múltiple fusionada de tres operandos (FMA3)

Nuevas instrucciones [ editar ]

CPU con AVX2 [ editar ]

  • Intel
    • Procesador Haswell (solo marca Core y Xeon), segundo trimestre de 2013
    • Procesador Haswell E , tercer trimestre de 2014
    • Procesador Broadwell , cuarto trimestre de 2014
    • Procesador Broadwell E , tercer trimestre de 2016
    • Procesador Skylake (solo marca Core y Xeon), tercer trimestre de 2015
    • Procesador Kaby Lake (solo marca Core y Xeon), tercer trimestre de 2016 (ULV móvil) / primer trimestre de 2017 (escritorio / móvil)
    • Procesador Skylake-X , segundo trimestre de 2017
    • Procesador Coffee Lake (solo marca Core y Xeon), cuarto trimestre de 2017
    • Procesador Cannon Lake , segundo trimestre de 2018
    • Procesador Cascade Lake , segundo trimestre de 2019
    • Procesador Ice Lake , tercer trimestre de 2019
    • Procesador Comet Lake (solo marcas Core y Xeon), tercer trimestre de 2019
    • Procesador Tiger Lake (Core, Pentium y Celeron [11] ), tercer trimestre de 2020
    • Procesador Rocket Lake , 2021
    • Procesador Alder Lake , 2021
    • Procesadores Gracemont , 2021
  • AMD
    • Procesador de excavadora y posterior, segundo trimestre de 2015
    • Procesador Zen , primer trimestre de 2017
    • Procesador Zen + , segundo trimestre de 2018
    • Procesador Zen 2 , tercer trimestre de 2019
    • Procesador Zen 3 , 2020
  • VÍA :
    • Nano QuadCore
    • Eden X4

AVX-512 [ editar ]

AVX-512 son extensiones de 512 bits de las instrucciones SIMD de extensiones vectoriales avanzadas de 256 bits para la arquitectura de conjuntos de instrucciones x86 propuestas por Intel en julio de 2013 y son compatibles con el procesador Knights Landing de Intel. [3]

Las instrucciones AVX-512 están codificadas con el nuevo prefijo EVEX . Permite 4 operandos, 8 nuevos registros de máscara de operación de 64 bits , modo de memoria escalar con transmisión automática, control de redondeo explícito y modo de direccionamiento de memoria de desplazamiento comprimido . El ancho del archivo de registro aumenta a 512 bits y el recuento total de registros aumenta a 32 (registros ZMM0-ZMM31) en modo x86-64.

AVX-512 consta de múltiples extensiones, no todas diseñadas para ser compatibles con todos los procesadores que las implementan. El conjunto de instrucciones consta de lo siguiente:

  • AVX-512 Foundation: agrega varias instrucciones nuevas y expande la mayoría de las instrucciones SSE-SSE4.1 y AVX / AVX2 de punto flotante de 32 y 64 bits con el esquema de codificación EVEX para admitir registros de 512 bits, máscaras de operación, transmisión de parámetros y redondeo integrado y control de excepciones
  • Instrucciones de detección de conflictos (CD) AVX-512: detección de conflictos eficiente para permitir la vectorización de más bucles, compatible con Knights Landing [3]
  • Instrucciones exponenciales y recíprocas (ER) AVX-512: operaciones exponenciales y recíprocas diseñadas para ayudar a implementar operaciones trascendentales, respaldadas por Knights Landing [3]
  • Instrucciones de captación previa (PF) AVX-512: nuevas capacidades de captación previa, compatibles con Knights Landing [3]
  • Extensiones de longitud de vector AVX-512 (VL): extiende la mayoría de las operaciones de AVX-512 para que también operen en registros XMM (128 bits) y YMM (256 bits) (incluidos XMM16-XMM31 y YMM16-YMM31 en modo x86-64) [ 23]
  • AVX-512 Byte and Word Instructions (BW): amplía AVX-512 para cubrir operaciones con enteros de 8 y 16 bits [23]
  • Instrucciones de palabra doble y cuádruple AVX-512 (DQ): operaciones mejoradas con enteros de 32 y 64 bits [23]
  • AVX-512 Suma de multiplicación fusionada de enteros (IFMA): suma de multiplicación fusionada para enteros de 512 bits. [24] : 746
  • Las instrucciones de manipulación de bytes vectoriales (VBMI) de AVX-512 agregan instrucciones de permutación de bytes vectoriales que no están presentes en AVX-512BW.
  • AVX-512 Vector Neural Network Instrucciones Palabra de precisión variable (4VNNIW): instrucciones vectoriales para el aprendizaje profundo.
  • AVX-512 Fused Multiply Accumulation Packed Precisión simple (4FMAPS): instrucciones vectoriales para el aprendizaje profundo.
  • VPOPCNTDQ: recuento de bits establecido en 1. [25]
  • VPCLMULQDQ: multiplicación sin acarreo de cuatro palabras. [25]
  • Instrucciones de red neuronal vectorial AVX-512 (VNNI)  : instrucciones vectoriales para el aprendizaje profundo. [25]
  • AVX-512 Campo de Galois Nuevas instrucciones (GFNI)  : instrucciones vectoriales para calcular el campo de Galois . [25]
  • Instrucciones vectoriales AVX-512 AES (VAES)  : instrucciones vectoriales para la codificación AES . [25]
  • Instrucciones de manipulación de bytes vectoriales AVX-512 2 (VBMI2)  : carga, almacenamiento y concatenación de bytes / palabras con desplazamiento. [25]
  • Algoritmos de bits AVX-512 (BITALG)  : instrucciones de manipulación de bits de bytes / palabras que expanden VPOPCNTDQ. [25]

Todas las implementaciones solo requieren la extensión principal AVX-512F (AVX-512 Foundation), aunque todos los procesadores actuales también admiten CD (detección de conflictos); Los coprocesadores informáticos admitirán adicionalmente ER, PF, 4VNNIW, 4FMAPS y VPOPCNTDQ, mientras que los procesadores de escritorio admitirán VL, DQ, BW, IFMA, VBMI, VPOPCNTDQ, VPCLMULQDQ, etc.

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 bytes, palabras, palabras dobles y cuatro palabras (con AVX-512BW / DQ y VBMI). [24] : 23

CPU con AVX-512 [ editar ]

[26]

Compiladores compatibles con AVX-512 [ editar ]

  • GCC 4.9 y más reciente [27]
  • Clang 3.9 y más reciente [28]
  • ICC 15.0.1 y más reciente [29]
  • Compilador de Microsoft Visual Studio 2017 C ++ [30]
  • Java 9 [31]
  • Ir 1,11 [32]
  • Julia [33] [34]

Aplicaciones [ editar ]

  • Adecuado para cálculos intensivos en coma flotante en aplicaciones multimedia, científicas y financieras (AVX2 agrega soporte para operaciones con números enteros ).
  • Aumenta el paralelismo y el rendimiento en los cálculos SIMD de punto flotante .
  • Reduce la carga del registro debido a las instrucciones no destructivas.
  • Mejora el rendimiento del software RAID de Linux (se requiere AVX2, AVX no es suficiente) [35]

Software [ editar ]

  • Blender usa AVX2 en los ciclos del motor de renderizado.
  • Bloombase utiliza AVX, AVX2 y AVX-512 en su Módulo criptográfico Bloombase (BCM).
  • Botan usa tanto AVX como AVX2 cuando están disponibles para acelerar algunos algoritmos, como ChaCha.
  • Crypto ++ usa tanto AVX como AVX2 cuando están disponibles para acelerar algunos algoritmos, como Salsa y ChaCha.
  • OpenSSL utiliza funciones criptográficas optimizadas para AVX y AVX2 desde la versión 1.0.2. [36] Este soporte también está presente en varios clones y bifurcaciones, como LibreSSL.
  • Prime95 / MPrime, el software utilizado para GIMPS , comenzó a usar las instrucciones AVX desde la versión 27.x.
  • El decodificador dav1d AV1 puede usar AVX2 en CPU compatibles. [37]
  • dnetc , el software utilizado por Distributed.net , tiene un núcleo AVX2 disponible para su proyecto RC5 y pronto lanzará uno para su proyecto OGR-28.
  • Einstein @ Home usa AVX en algunas de sus aplicaciones distribuidas que buscan ondas gravitacionales . [38]
  • Folding @ home usa AVX en núcleos de cálculo implementados con la biblioteca GROMACS .
  • Horizon: Zero Dawn usa AVX1 en su motor de juego Decima.
  • RPCS3 , un emulador de PlayStation 3 de código abierto, usa instrucciones AVX2 y AVX-512 para emular juegos de PS3.
  • Network Device Interface , un protocolo de audio / video IP desarrollado por NewTek para la producción de transmisiones en vivo, utiliza AVX y AVX2 para un mayor rendimiento.
  • TensorFlow desde la versión 1.6 y tensorflow versiones anteriores requieren una CPU que admita al menos AVX. [39]
  • Los codificadores de video x264 , x265 y VTM pueden usar AVX2 o AVX-512 para acelerar la codificación.
  • Varios basadas en CPU criptomoneda mineros (como cpuminer de pooler para Bitcoin y litecoin ) uso AVX y AVX2 para varias rutinas de criptografía relacionada, incluyendo SHA-256 y scrypt .
  • libsodium utiliza AVX en la implementación de la multiplicación escalar para los algoritmos Curve25519 y Ed25519 , AVX2 para BLAKE2b , Salsa20 , ChaCha20 y AVX2 y AVX-512 en la implementación del algoritmo Argon2 .
  • La implementación de referencia de código abierto libvpx del codificador / decodificador VP8 / VP9, ​​utiliza AVX2 o AVX-512 cuando está disponible.
  • FFTW puede utilizar AVX, AVX2 y AVX-512 cuando estén disponibles.
  • LLVMpipe , un renderizador OpenGL de software en Mesa que utiliza la infraestructura Gallium y LLVM , utiliza AVX2 cuando está disponible.
  • glibc utiliza AVX2 (con FMA ) para implementación optimizada (es decir expf, sinf, powf, atanf, atan2f) de varias funciones matemáticas en libc .
  • El kernel de Linux puede usar AVX o AVX2, junto con AES-NI como implementación optimizada del algoritmo criptográfico AES-GCM .
  • Linux kernel utiliza AVX o AVX2 cuando estén disponibles, en la implementación optimizada de varios otros códigos de cifrado: camelia , CAST5 , CAST6 , Serpent , Twofish , Morus-1280 , y otras primitivas: Poly1305 , SHA-1 , SHA-256 , SHA-512 , ChaCha20 .
  • POCL, un lenguaje informático portátil, que proporciona implementación de OpenCL , hace uso de AVX, AVX2 y AVX512 cuando es posible.
  • .NET Core y .NET Framework pueden utilizar AVX, AVX2 a través del System.Numerics.Vectorsespacio de nombres genérico .
  • .NET Core , a partir de la versión 2.1 y más extensamente después de la versión 3.0, puede usar directamente todos los intrínsecos AVX, AVX2 a través del System.Runtime.Intrinsics.X86espacio de nombres.
  • EmEditor 19.0 y superior utiliza AVX-2 para acelerar el procesamiento. [40]
  • El softsynth Massive X de Native Instruments requiere AVX. [41]
  • Microsoft Teams usa instrucciones AVX2 para crear un fondo borroso o personalizado detrás de los participantes del chat de video, [42] y para la supresión del ruido de fondo. [43]
  • simdjson, una biblioteca de análisis JSON utiliza AVX2 para lograr una velocidad de decodificación mejorada. [44]

Desaceleración [ editar ]

Dado que las instrucciones AVX son más amplias y generan más calor, algunos procesadores Intel tienen disposiciones para reducir el límite de frecuencia de Turbo Boost cuando se ejecutan tales instrucciones. En Skylake y sus derivados, la limitación se divide en tres niveles: [45] [46]

  • L0 (100%): El límite normal de impulso turbo.
  • L1 (~ 85%): El límite de "refuerzo AVX". Activado por software mediante instrucciones "pesadas" de 256 bits (unidad de punto flotante: matemáticas FP y multiplicación de enteros). Activado de forma dura por instrucciones "ligeras" (todas las demás) de 512 bits.
  • L2 (~ 60%): El límite de "refuerzo AVX-512". Activado por software mediante instrucciones pesadas de 512 bits.

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

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

  • L0 (100%): El límite normal de impulso turbo.
  • L1 (~ 97%): Activado por cualquier instrucción de 512 bits, pero solo cuando el refuerzo 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 instrucciones vectoriales, independientemente del tamaño del vector. [47] Sin embargo, la reducción del reloj todavía puede ocurrir debido a otras razones, como alcanzar límites térmicos y de potencia.

La reducción del reloj significa que el uso de AVX en una carga de trabajo mixta con un procesador Intel puede incurrir en una penalización de frecuencia a pesar de ser más rápido en un contexto "puro". 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 bits o 128 bits en AVX-512, lo que lo convierte en un valor predeterminado razonable para cargas mixtas. [48]

Ver también [ editar ]

  • Extensiones de protección de memoria
  • Extensión vectorial escalable para ARM : un nuevo conjunto de instrucciones vectoriales (que complementa a VFP y NEON ) similar a AVX-512, con algunas características adicionales.

Referencias [ editar ]

  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. ^ a b c d e James Reinders (23 de julio de 2013), Instrucciones de 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 arquitecturas Intel 64 e IA-32 Volumen 1: Arquitectura básica (PDF) (-051US ed.). Corporación Intel. pag. 349 . Consultado el 23 de agosto de 2014 . Los argumentos de memoria para la mayoría de las instrucciones con prefijo VEX operan normalmente sin causar #GP (0) en ninguna alineación de granularidad de bytes (a diferencia de las instrucciones SSE heredadas).
  6. ^ "Opciones de 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 Intel, AMD y VIA: una guía de optimización para programadores de ensamblaje y fabricantes de compiladores" (PDF) . Consultado el 17 de octubre de 2016 .
  8. ^ "Programación de ajedrez AVX2" . Archivado desde el 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. ^ "Procesador Intel Core i7-3960X Extreme Edition" . Consultado el 17 de enero de 2012 .
  11. ^ a b "Especificaciones del producto del procesador Intel® Celeron® 6305 (caché de 4 M, 1,80 GHz, con IPU)" . ark.intel.com . Consultado el 10 de noviembre de 2020 .
  12. ^ Dave Christie (7 de mayo de 2009), Striking a balance , blogs de desarrolladores de AMD, archivado desde el original el 9 de noviembre de 2013 , consultado el 17 de enero de 2012
  13. ^ Nuevas instrucciones "Bulldozer" y "Piledriver" (PDF) , AMD, octubre de 2012
  14. ^ "Notas de la versión de YASM 0.7.0" . yasm.tortall.net .
  15. ^ Agregue soporte para los estados de 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
  16. ^ "Anuncio de FreeBSD 9.1-RELEASE" . Consultado el 20 de mayo de 2013 .
  17. ^ x86: agregar compatibilidad con el kernel de Linux para el estado YMM , consultado el 13 de julio de 2009
  18. Linux 2.6.30 - Linux Kernel Newbies , consultado el 13 de julio de 2009
  19. ^ Twitter , consultado el 23 de junio de 2010[ fuente no confiable? ]
  20. ^ Agregue soporte para guardar / restaurar el estado de FPU usando XSAVE / XRSTOR. , consultado el 25 de marzo de 2015
  21. ^ Soporte de coma flotante para controladores de 64 bits , consultado el 6 de diciembre de 2009
  22. ^ Descripciones de instrucciones nuevas de Haswell ahora disponibles , Software.intel.com , consultado el 17 de enero de 2012
  23. ↑ a b c James Reinders (17 de julio de 2014). "Instrucciones adicionales de AVX-512" . Intel . Consultado el 3 de agosto de 2014 .
  24. ^ a b "Referencia de programación de extensiones de conjunto de instrucciones de arquitectura Intel" (PDF) . Intel . Consultado el 29 de enero de 2014 .
  25. ^ a b c d e f g "Referencia de programación de extensiones y funciones futuras del conjunto de instrucciones de la arquitectura Intel®" . Intel . Consultado el 16 de octubre de 2017 .
  26. ^ "Emulador de desarrollo de software Intel® | Software Intel®" . software.intel.com . Consultado el 11 de junio de 2016 .
  27. ^ "GCC 4.9 Release Series - Cambios, nuevas características y correcciones - Proyecto GNU - Free Software Foundation (FSF)" . gcc.gnu.org . Consultado el 3 de abril de 2017 .
  28. ^ "Notas de la versión LLVM 3.9 - documentación de LLVM 3.9" . releases.llvm.org . Consultado el 3 de abril de 2017 .
  29. ^ "Notas de la versión de Intel® Parallel Studio XE 2015 Composer Edition C ++ | Software Intel®" . software.intel.com . Consultado el 3 de abril de 2017 .
  30. ^ "Microsoft Visual Studio 2017 es compatible con Intel® AVX-512" .
  31. ^ "Notas de la versión de JDK 9" .
  32. ^ "Notas de la versión Go 1.11" .
  33. ^ "Desmitificando la vectorización automática en Julia" . juliacomputing.com . 27 de septiembre de 2017 . Consultado el 11 de abril de 2020 .
  34. ^ "[ANN] LoopVectorization" . JuliaLang . 1 de enero de 2020 . Consultado el 11 de abril de 2020 .
  35. ^ "Linux RAID" . LWN. 17 de febrero de 2013. Archivado desde el original el 15 de abril de 2013.
  36. ^ "Mejora del rendimiento de OpenSSL" . 26 de mayo de 2015 . Consultado el 28 de febrero de 2017 .
  37. ^ "dav1d: rendimiento y finalización de la primera versión" . 21 de noviembre de 2018 . Consultado el 22 de noviembre de 2018 .
  38. ^ "Aplicaciones de Einstein @ Home" .
  39. ^ "Tensorflow 1.6" .
  40. ^ Nuevo en la versión 19.0 - EmEditor (Editor de texto)
  41. ^ "MASSIVE X requiere un procesador compatible con AVX" . Instrumentos nativos . Consultado el 29 de noviembre de 2019 .
  42. ^ "Requisitos de hardware para Microsoft Teams" . Microsoft . Consultado el 17 de abril de 2020 .
  43. ^ "Reducir el ruido de fondo en las reuniones de equipos" . Soporte de Microsoft . Consultado el 5 de enero de 2021 .
  44. ^ Langdale, Geoff; Lemire, Daniel (2019). "Análisis de Gigabytes de JSON por segundo". El diario VLDB . 28 (6): 941–960. arXiv : 1902.08318 . doi : 10.1007 / s00778-019-00578-5 . S2CID 67856679 . 
  45. ^ a b Lemire, Daniel. "AVX-512: cuándo y cómo utilizar estas nuevas instrucciones" . Blog de Daniel Lemire .
  46. ^ BeeOnRope. "Instrucciones SIMD que reducen la frecuencia de la CPU" . Desbordamiento de pila .
  47. ^ a b Downs, Travis. "Downclocking de Ice Lake AVX-512" . Blog de Performance Matters .
  48. ^ "x86: rendimiento de AVX 512 frente a AVX2 para bucles de procesamiento de matrices simples" . Desbordamiento de pila .

Enlaces externos [ editar ]

  • Guía de intrínsecos de Intel
  • Manual de referencia del lenguaje ensamblador x86