AVX-512 son extensiones de 512 bits a las instrucciones SIMD de extensiones vectoriales avanzadas de 256 bits para la arquitectura de conjunto de instrucciones x86 (ISA) propuestas por Intel en julio de 2013, e implementadas en Intel Xeon Phi x200 (Knights Landing) [1] y Skylake- X CPU; esto incluye la serie Core-X (excluyendo Core i5-7640X y Core i7-7740X), así como la nueva familia de procesadores escalables Xeon y la serie integrada Xeon D-2100. [2]
AVX-512 no es el primer conjunto de instrucciones SIMD de 512 bits que Intel ha introducido en procesadores: las instrucciones SIMD anteriores de 512 bits utilizadas en los coprocesadores Xeon Phi de primera generación , derivadas del proyecto Larrabee de Intel , son similares pero no compatibles binariamente y solo parcialmente compatible con la fuente. [1]
AVX-512 consta de varias extensiones que se pueden implementar de forma independiente. Esta política se aparta del requisito histórico de implementar todo el bloque de instrucciones. Todas las implementaciones de AVX-512 solo requieren la extensión principal AVX-512F (AVX-512 Foundation).
Conjunto de instrucciones
El conjunto de instrucciones AVX-512 consta de varios conjuntos separados, cada uno de los cuales tiene su propio bit de función CPUID único; sin embargo, normalmente se agrupan según la generación del procesador que los implementa.
- F, CD, ER, PF
- Presentado con Xeon Phi x200 (Knights Landing) y Xeon E5-26xx V5 ( Skylake EP / EX "Purley", previsto para el segundo semestre de 2017), siendo los dos últimos (ER y PF) específicos de Knights Landing.
- AVX-512 Foundation (F) : expande la mayoría de las instrucciones AVX basadas en 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, implementado por Knights Landing y Skylake Xeon
- Instrucciones de detección de conflictos (CD) AVX-512: detección eficiente de conflictos para permitir la vectorización de más bucles , implementada por Knights Landing [1] y Skylake X
- Instrucciones exponenciales y recíprocas (ER) AVX-512: operaciones exponenciales y recíprocas diseñadas para ayudar a implementar operaciones trascendentales , implementadas por Knights Landing [1]
- Instrucciones de captación previa (PF) AVX-512 : nuevas capacidades de captación previa, implementadas por Knights Landing [1]
- VL, DQ, BW
- Introducido con Skylake X y Cannon Lake .
- Extensiones de longitud vectorial (VL) de AVX-512: amplía la mayoría de las operaciones de AVX-512 para que también operen en registros XMM (128 bits) e YMM (256 bits) [3]
- Instrucciones AVX-512 Doubleword y Quadword (DQ) : agrega nuevas instrucciones AVX-512 de 32 y 64 bits [3]
- AVX-512 Byte and Word Instructions (BW) : amplía AVX-512 para cubrir operaciones con enteros de 8 y 16 bits [3]
- IFMA, VBMI
- Introducido con Cannon Lake . [4]
- AVX-512 Suma de multiplicación fusionada de enteros (IFMA) : suma de multiplicación fusionada de enteros con precisión de 52 bits.
- Las instrucciones de manipulación de bytes vectoriales (VBMI) de AVX-512 agregan instrucciones de permutación de bytes vectoriales que no estaban presentes en AVX-512BW.
- 4VNNIW, 4FMAPS
- Introducido con Knights Mill . [5] [6]
- AVX-512 Vector Neural Network Instrucciones Word variable precision (4VNNIW) : instrucciones vectoriales para aprendizaje profundo, palabras mejoradas, precisión variable.
- AVX-512 Fused Multiply Accumulation Packed Precisión simple (4FMAPS) : instrucciones vectoriales para aprendizaje profundo, punto flotante, precisión simple.
- VPOPCNTDQ
- Instrucción de conteo de población vectorial . Introducido con Knights Mill y Ice Lake . [7]
- VNNI, VBMI2, BITALG
- Introducido con Ice Lake. [7]
- Instrucciones de red neuronal vectorial AVX-512 (VNNI) : instrucciones vectoriales para el aprendizaje profundo.
- Instrucciones de manipulación de bytes vectoriales AVX-512 2 (VBMI2) : carga, almacenamiento y concatenación de bytes / palabras con desplazamiento.
- Algoritmos de bits AVX-512 (BITALG) : instrucciones de manipulación de bits de bytes / palabras que expanden VPOPCNTDQ.
- VP2INTERSECT
- Introducido con Tiger Lake.
- Intersección de par de vectores AVX-512 a un par de registros de máscara (VP2INTERSECT) .
- GFNI, VPCLMULQDQ, VAES
- Introducido con Ice Lake. [7]
- Estas no son características del AVX-512 per se. Junto con AVX-512, permiten versiones codificadas en EVEX de instrucciones GFNI, PCLMULQDQ y AES.
Codificación y características
El prefijo VEX utilizado por AVX y AVX2, aunque flexible, no dejaba suficiente espacio para las funciones que Intel quería agregar a AVX-512. Esto les ha llevado a definir un nuevo prefijo llamado EVEX .
En comparación con VEX, EVEX agrega los siguientes beneficios: [6]
- Codificación de registro ampliada que permite 32 registros de 512 bits.
- Agrega 8 nuevos registros de máscara de operación para enmascarar la mayoría de las instrucciones AVX-512.
- Agrega un nuevo modo de memoria escalar que realiza automáticamente una transmisión.
- Agrega espacio para un control de redondeo explícito en cada instrucción.
- Agrega un nuevo modo de direccionamiento de memoria de desplazamiento comprimido .
Los registros extendidos, el bit de ancho de SIMD y los registros de máscara de operación de AVX-512 son obligatorios y todos requieren soporte del sistema operativo.
Modos SIMD
Las instrucciones AVX-512 están diseñadas para combinarse con instrucciones AVX / AVX2 de 128/256 bits sin una penalización en el rendimiento. Sin embargo, las extensiones AVX-512VL permiten el uso de instrucciones AVX-512 en registros XMM / YMM de 128/256 bits, por lo que la mayoría de las instrucciones SSE y AVX / AVX2 tienen nuevas versiones AVX-512 codificadas con el prefijo EVEX que permiten el acceso a nuevas funciones. como opmask y registros adicionales. A diferencia de AVX-256, las nuevas instrucciones no tienen nuevos mnemónicos pero comparten el espacio de nombres con AVX, lo que hace que la distinción entre las versiones codificadas VEX y EVEX de una instrucción sea ambigua en el código fuente. Dado que AVX-512F solo funciona en valores de 32 y 64 bits, las instrucciones SSE y AVX / AVX2 que operan en bytes o palabras están disponibles solo con la extensión AVX-512BW (compatibilidad con Byte y Word). [6]
Nombre | Juegos de extensión | Registros | Tipos |
---|---|---|---|
SSE heredado | SSE-SSE4.2 | xmm0-xmm15 | flotadores individuales. Desde SSE2: bytes, palabras, palabras dobles, palabras cuádruples y flotantes dobles. |
AVX-128 (VEX) | AVX, AVX2 | xmm0-xmm15 | bytes, palabras, palabras dobles, palabras cuádruples, flotantes simples y flotantes dobles. |
AVX-256 (VEX) | AVX, AVX2 | ymm0-ymm15 | flotador simple y flotador doble. De AVX2: bytes, palabras, palabras dobles, palabras cuádruples |
AVX-128 (EVEX) | AVX-512VL | xmm0-xmm31 (k1-k7) | palabras dobles, cuádruples, flotante simple y flotante doble. Con AVX512BW: bytes y palabras |
AVX-256 (EVEX) | AVX-512VL | ymm0-ymm31 (k1-k7) | palabras dobles, cuádruples, flotante simple y flotante doble. Con AVX512BW: bytes y palabras |
AVX-512 (EVEX) | AVX-512F | zmm0-zmm31 (k1-k7) | palabras dobles, cuádruples, flotante simple y flotante doble. Con AVX512BW: bytes y palabras |
Registros extendidos
511 256 | 255 128 | 127 0 |
ZMM0 | YMM0 | XMM0 |
ZMM1 | YMM1 | XMM1 |
ZMM2 | YMM2 | XMM2 |
ZMM3 | YMM3 | XMM3 |
ZMM4 | YMM4 | XMM4 |
ZMM5 | YMM5 | XMM5 |
ZMM6 | YMM6 | XMM6 |
ZMM7 | YMM7 | XMM7 |
ZMM8 | YMM8 | XMM8 |
ZMM9 | YMM9 | XMM9 |
ZMM10 | YMM10 | XMM10 |
ZMM11 | YMM11 | XMM11 |
ZMM12 | YMM12 | XMM12 |
ZMM13 | YMM13 | XMM13 |
ZMM14 | YMM14 | XMM14 |
ZMM15 | YMM15 | XMM15 |
ZMM16 | YMM16 | XMM16 |
ZMM17 | YMM17 | XMM17 |
ZMM18 | YMM18 | XMM18 |
ZMM19 | YMM19 | XMM19 |
ZMM20 | YMM20 | XMM20 |
ZMM21 | YMM21 | XMM21 |
ZMM22 | YMM22 | XMM22 |
ZMM23 | YMM23 | XMM23 |
ZMM24 | YMM24 | XMM24 |
ZMM25 | YMM25 | XMM25 |
ZMM26 | YMM26 | XMM26 |
ZMM27 | YMM27 | XMM27 |
ZMM28 | YMM28 | XMM28 |
ZMM29 | YMM29 | XMM29 |
ZMM30 | YMM30 | XMM30 |
ZMM31 | YMM31 | XMM31 |
El ancho del archivo de registro SIMD se incrementa de 256 bits a 512 bits y se amplía de 16 a un total de 32 registros ZMM0-ZMM31. Estos registros se pueden direccionar como registros YMM de 256 bits desde extensiones AVX y registros XMM de 128 bits desde Extensiones SIMD de transmisión , y las instrucciones AVX y SSE heredadas se pueden extender para operar en los 16 registros adicionales XMM16-XMM31 y YMM16-YMM31 cuando se usa EVEX forma codificada.
Registros de Opmask
La mayoría de las instrucciones AVX-512 pueden indicar uno de los 8 registros de máscara de operación (k0 – k7). Para las instrucciones que usan un registro de máscara como máscara de operación, el registro 'k0' es especial: una constante codificada que se usa para indicar operaciones sin máscara. Para otras operaciones, como las que escriben en un registro de máscara de operación o realizan operaciones aritméticas o lógicas, 'k0' es un registro válido y funcional. En la mayoría de las instrucciones, la máscara de operación se usa para controlar qué valores se escriben en el destino. Una bandera controla el comportamiento de la máscara de operación, que puede ser "cero", que pone a cero todo lo no seleccionado por la máscara, o "fusionar", lo que deja intacto todo lo que no está seleccionado. El comportamiento de fusión es idéntico a las instrucciones de fusión.
Los registros de máscara de operación normalmente tienen 16 bits de ancho, pero pueden tener hasta 64 bits con la extensión AVX-512BW. [6] Sin embargo, la cantidad de bits que se utilizan realmente depende del tipo de vector de las instrucciones enmascaradas. Para las palabras flotantes simples o dobles de 32 bits, se utilizan 16 bits para enmascarar los 16 elementos en un registro de 512 bits. Para palabras dobles flotantes y cuádruples, se utilizan como máximo 8 bits de máscara.
El registro de máscara de operación es la razón por la que se agregaron en AVX-512 varias instrucciones bit a bit que, naturalmente, no tienen anchos de elemento. Por ejemplo, las variantes AND, OR o de 128 bits a nivel de bits existen ahora en variantes de palabra doble y palabra cuádruple, con la única diferencia en el enmascaramiento final.
Nuevas instrucciones de opmask
Los registros opmask tienen una nueva mini extensión de instrucciones que operan directamente sobre ellos. A diferencia del resto de las instrucciones AVX-512, estas instrucciones están codificadas en VEX. Las instrucciones iniciales de la máscara de operación son todas versiones de 16 bits (Word). Con AVX-512DQ se agregaron versiones de 8 bits (Byte) para satisfacer mejor las necesidades de enmascaramiento de 8 valores de 64 bits, y con AVX-512BW se agregaron versiones de 32 bits (Doble) y 64 bits (Cuádruple) para que puedan enmascarar hasta 64 valores de 8 bits. Las instrucciones KORTEST y KTEST se pueden usar para configurar los indicadores x86 basados en registros de máscara, de modo que puedan usarse junto con instrucciones condicionales y de rama x86 no SIMD.
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
KAND | F | Máscaras AND lógicas bit a bit |
KANDN | F | Máscaras lógicas y NO bit a bit |
KMOV | F | Moverse desde y hacia registros de máscara o registros de propósito general |
KUNPCK | F | Desembalaje para registros de mascarillas |
KNOT | F | NO registro de máscara |
KOR | F | Máscaras OR lógicas bit a bit |
KORTEST | F | O máscaras y banderas fijas |
KSHIFTL | F | Desplazar registros de máscara a la izquierda |
KSHIFTR | F | Desplazar registros de máscara a la derecha |
KXNOR | F | Máscaras XNOR lógicas bit a bit |
KXOR | F | Máscaras XOR lógicas bit a bit |
KADD | BW / DQ | Agregar dos máscaras |
KTEST | BW / DQ | Comparación bit a bit y establecer banderas |
Nuevas instrucciones en la base AVX-512
Muchas instrucciones AVX-512 son simplemente versiones EVEX de instrucciones SSE o AVX antiguas. Sin embargo, hay varias instrucciones nuevas y antiguas que se han reemplazado con nuevas versiones de AVX-512. Las instrucciones nuevas o modificadas en su mayor parte se enumeran a continuación. Estas fundaciones instrucciones también incluyen las extensiones de AVX-512VL y AVX-512BW desde esas extensiones sólo le agregan nuevas versiones de estas instrucciones en lugar de nuevas instrucciones.
Mezclar usando mascarilla
No hay versiones con prefijo EVEX de las instrucciones de mezcla de SSE4 ; en cambio, AVX-512 tiene un nuevo conjunto de instrucciones de combinación que utilizan registros de máscara como selectores. Junto con las instrucciones generales de comparación en máscara a continuación, se pueden utilizar para implementar operaciones ternarias genéricas o cmov, similar al VPCMOV de XOP .
Dado que la combinación es una parte integral de la codificación EVEX, estas instrucciones también pueden considerarse instrucciones básicas de movimiento. Usando el modo de mezcla de puesta a cero, también se pueden usar como instrucciones de enmascaramiento.
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VBLENDMPD | F | Mezclar vectores float64 usando el control opmask |
VBLENDMPS | F | Mezclar vectores float32 usando el control opmask |
VPBLENDMD | F | Mezclar vectores int32 usando el control opmask |
VPBLENDMQ | F | Mezclar vectores int64 usando el control opmask |
VPBLENDMB | BW | Mezclar vectores enteros de bytes usando el control de máscara de operación |
VPBLENDMW | BW | Mezclar vectores enteros de palabras usando el control opmask |
Comparar en máscara
AVX-512F tiene cuatro nuevas instrucciones de comparación. Al igual que sus homólogos de XOP , utilizan el campo inmediato para seleccionar entre 8 comparaciones diferentes. Sin embargo, a diferencia de su inspiración XOP, guardan el resultado en un registro de máscara e inicialmente solo admiten comparaciones de dos y cuatro palabras. La extensión AVX-512BW proporciona las versiones de bytes y palabras. Tenga en cuenta que se pueden especificar dos registros de máscara para las instrucciones, uno para escribir y otro para declarar el enmascaramiento regular. [6]
Inmediato | Comparación | Descripción |
---|---|---|
0 | Ecualizador | Igual |
1 | LT | Menos que |
2 | LE | Menor o igual |
3 | FALSO | Poner a cero |
4 | NEQ | No es igual |
5 | NLT | Mayor que o igual |
6 | NLE | Mas grande que |
7 | CIERTO | Establecer en uno |
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VPCMPD
| F | Comparar palabras dobles firmadas / no firmadas en una máscara |
VPCMPQ
| F | Comparar palabras cuádruples firmadas / sin firmar en una máscara |
VPCMPB
| BW | Comparar bytes firmados / no firmados en la máscara |
VPCMPW
| BW | Comparar palabras firmadas / no firmadas en una máscara |
Máscara de conjunto lógico
La última forma de establecer máscaras es mediante el uso de máscara de conjunto lógico. Estas instrucciones ejecutan Y o NAND, y luego establecen la máscara de destino de destino en función de que los valores de resultado sean cero o distintos de cero. Tenga en cuenta que, al igual que las instrucciones de comparación, estas toman dos registros de máscara de operación, uno como destino y otro como máscara de operación normal.
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VPTESTMD , VPTESTMQ | F | AND lógico y máscara configurada para enteros de 32 o 64 bits. |
VPTESTNMD , VPTESTNMQ | F | NAND lógica y máscara configurada para enteros de 32 o 64 bits. |
VPTESTMB , VPTESTMW | BW | AND lógico y máscara de conjunto para enteros de 8 o 16 bits. |
VPTESTNMB , VPTESTNMW | BW | NAND lógico y máscara establecida para enteros de 8 o 16 bits. |
Comprimir y expandir
Las instrucciones de compresión y expansión coinciden con las operaciones APL del mismo nombre. Usan la máscara de operación de una manera ligeramente diferente a otras instrucciones AVX-512. Comprimir solo guarda los valores marcados en la máscara, pero los guarda compactados saltando y sin reservar espacio para valores no marcados. Expandir funciona de manera opuesta, cargando tantos valores como se indique en la máscara y luego extendiéndolos a las posiciones seleccionadas.
Instrucción | Descripción |
---|---|
VCOMPRESSPD ,
| Almacene valores de punto flotante de precisión doble / simple empaquetados dispersos en una memoria densa |
VPCOMPRESSD ,
| Almacene valores enteros de palabra doble / cuádruple empaquetados dispersos en una memoria densa / registro |
VEXPANDPD ,
| Cargue valores de punto flotante de precisión doble / simple empaquetados dispersos desde una memoria densa |
VPEXPANDD ,
| Cargue valores enteros de palabra doble / cuádruple empaquetados dispersos desde la memoria densa / registro |
Permutar
Se ha agregado un nuevo conjunto de instrucciones de permutaciones para dos permutaciones de entrada completas. Todos toman tres argumentos, dos registros fuente y un índice; el resultado se genera sobrescribiendo el primer registro de origen o el registro de índice. AVX-512BW amplía las instrucciones para incluir también versiones de 16 bits (palabra), y la extensión AVX-512_VBMI define las versiones en bytes de las instrucciones.
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VPERMB | VBMI | Permutar elementos de bytes empaquetados. |
VPERMW | BW | Permutar elementos de palabras empaquetadas. |
VPERMT2B | VBMI | Permutación de bytes completa que sobrescribe la primera fuente. |
VPERMT2W | BW | Permutación de palabra completa sobreescritura de la primera fuente. |
VPERMI2PD , VPERMI2PS | F | Permutación completa de punto flotante simple / doble que sobrescribe el índice. |
VPERMI2D , VPERMI2Q | F | Permutación completa de palabras dobles / cuádruples sobrescribiendo el índice. |
VPERMI2B | VBMI | Permutación de bytes completa que sobrescribe el índice. |
VPERMI2W | BW | Permutación de palabra completa sobrescribiendo el índice. |
VPERMT2PS , VPERMT2PD | F | Permutación completa de coma flotante simple / doble que sobrescribe la primera fuente. |
VPERMT2D , VPERMT2Q | F | Permutación completa de doble palabra / cuádruple sobreescritura de la primera fuente. |
VSHUFF32x4 , VSHUFF64x2 ,
| F | Mezcle cuatro líneas empaquetadas de 128 bits. |
VPMULTISHIFTQB | VBMI | Seleccione bytes no alineados empaquetados de fuentes de cuatro palabras. |
Lógica ternaria bit a bit
Dos nuevas instrucciones agregadas pueden implementar lógicamente todas las operaciones bit a bit posibles entre tres entradas. Toman tres registros como entrada y un campo inmediato de 8 bits. Cada bit en la salida se genera usando una búsqueda de los tres bits correspondientes en las entradas para seleccionar una de las 8 posiciones en el inmediato de 8 bits. Dado que solo son posibles 8 combinaciones usando tres bits, esto permite que se realicen todas las posibles operaciones bit a bit de 3 entradas. [6] Estas son las únicas instrucciones vectoriales bit a bit en AVX-512F; Las versiones EVEX de las instrucciones vectoriales bit a bit de dos fuentes SSE y AVX AND, ANDN, OR y XOR se agregaron en AVX-512DQ.
La diferencia en las versiones de palabra doble y palabra cuádruple es solo la aplicación de la máscara de operación.
Instrucción | Descripción |
---|---|
VPTERNLOGD , VPTERNLOGQ | Lógica ternaria bit a bit |
Tabla de la verdad :
A0 | A1 | A2 | Y doble (0x80) | O doble (0xFE) | Mezcla bit a bit (0xCA) |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
Conversiones
Se agregaron varias instrucciones de conversión o movimiento; estos completan el conjunto de instrucciones de conversión disponibles en SSE2.
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
| F | Conversión descendente de cuatro palabras o palabras dobles en palabras dobles, palabras o bytes; insaturados, saturados o saturados sin signo. El reverso de las instrucciones de extensión de signo / cero de SSE4.1 . |
VPMOVWB , VPMOVSWB ,VPMOVUSWB | BW | Abajo convierte palabra en byte; insaturados, saturados o saturados sin signo. |
VCVTPS2UDQ , VCVTPD2UDQ ,
| F | Convierta con o sin truncamiento, empaquetados de punto flotante de precisión simple o doble en enteros empaquetados de dos palabras sin signo. |
VCVTSS2USI , VCVTSD2USI ,
| F | Convierta con o sin trunción, escalar de punto flotante de precisión simple o doble en un entero de dos palabras sin signo. |
VCVTPS2QQ , VCVTPD2QQ ,
| DQ | Convierta con o sin truncamiento, empaquetados de punto flotante de precisión simple o doble en enteros de cuatro palabras empaquetados con o sin signo. |
VCVTUDQ2PS , VCVTUDQ2PD | F | Convierta enteros empaquetados de dos palabras sin signo en coma flotante de precisión simple o doble empaquetados. |
VCVTUSI2PS , VCVTUSI2PD | F | Convierta enteros escalares de dos palabras sin signo en punto flotante de precisión simple o doble. |
VCVTUSI2SD , VCVTUSI2SS | F | Convierta enteros escalares sin signo en punto flotante de precisión simple o doble. |
VCVTUQQ2PS , VCVTUQQ2PD | DQ | Convierta enteros de cuatro palabras sin signo empaquetados en coma flotante de precisión simple o doble empaquetada. |
VCVTQQ2PD , VCVTQQ2PS | F | Convierta enteros de cuatro palabras empaquetados en coma flotante de precisión simple o doble empaquetados. |
Descomposición de punto flotante
Entre las nuevas características únicas de AVX-512F se encuentran las instrucciones para descomponer valores de punto flotante y manejar valores especiales de punto flotante . Dado que estos métodos son completamente nuevos, también existen en versiones escalares.
Instrucción | Descripción |
---|---|
VGETEXPPD , VGETEXPPS | Convertir exponentes de valores fp empaquetados en valores fp |
VGETEXPSD , VGETEXPSS | Convierta el exponente del valor fp escalar en valor fp |
VGETMANTPD , VGETMANTPS | Extraiga el vector de mantisas normalizadas del vector float32 / float64 |
VGETMANTSD , VGETMANTSS | Extraiga float32 / float64 de mantisa normalizada del escalar float32 / float64 |
VFIXUPIMMPD , VFIXUPIMMPS | Arregle los valores especiales de float32 / float64 empaquetados |
VFIXUPIMMSD , VFIXUPIMMSS | Arregle el valor especial escalar float32 / float64 |
Aritmética de coma flotante
Este es el segundo conjunto de nuevos métodos de punto flotante, que incluye una nueva escala y cálculo aproximado de recíproco y recíproco de raíz cuadrada. Las instrucciones recíprocas aproximadas garantizan tener como máximo un error relativo de 2 −14 . [6]
Instrucción | Descripción |
---|---|
VRCP14PD , VRCP14PS | Calcule los recíprocos aproximados de los valores de float32 / float64 empaquetados |
VRCP14SD , VRCP14SS | Calcule los recíprocos aproximados del valor escalar float32 / float64 |
VRNDSCALEPS , VRNDSCALEPD | Redondee los valores float32 / float64 empaquetados para incluir un número determinado de bits de fracción |
VRNDSCALESS , VRNDSCALESD | Redondea el valor escalar float32 / float64 para incluir un número determinado de bits de fracción |
VRSQRT14PD , VRSQRT14PS | Calcule recíprocos aproximados de raíces cuadradas de valores empaquetados float32 / float64 |
VRSQRT14SD , VRSQRT14SS | Calcule el recíproco aproximado de la raíz cuadrada del valor escalar float32 / float64 |
VSCALEFPS , VSCALEFPD | Escale los valores empaquetados float32 / float64 con valores float32 / float64 |
VSCALEFSS , VSCALEFSD | Escale el valor escalar float32 / float64 con el valor float32 / float64 |
Transmisión
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VBROADCASTSS , VBROADCASTSD | F, VL | Transmitir valor de punto flotante simple / doble |
VPBROADCASTB , VPBROADCASTW , VPBROADCASTD ,VPBROADCASTQ | F, VL, DQ, BW | Difundir un valor entero de byte / palabra / palabra doble / palabra cuádruple |
VBROADCASTI32X2 , VBROADCASTI64X2 , VBROADCASTI32X4 , VBROADCASTI32X8 ,VBROADCASTI64X4 | F, VL, DQ, BW | Difunda dos o cuatro valores enteros de dos o cuatro palabras |
Diverso
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VALIGND , VALIGNQ | F, VL | Alinear vectores de palabra doble o palabra cuádruple |
VDBPSADBW | BW | Suma de diferencias absolutas (SAD) empaquetadas en doble bloque en bytes sin firmar |
VPABSQ | F | Palabra cuádruple de valor absoluto empaquetado |
VPMAXSQ , VPMAXUQ | F | Máximo de cuatro palabras empaquetadas firmadas / sin firmar |
VPMINSQ , VPMINUQ | F | Mínimo de cuatro palabras empaquetadas firmadas / sin firmar |
VPROLD , VPROLVD , VPROLQ , VPROLVQ , VPRORD , VPRORVD , VPRORQ ,VPRORVQ | F | Bit gira a la izquierda o a la derecha |
VPSCATTERDD , VPSCATTERDQ , VPSCATTERQD ,VPSCATTERQQ | F | Dispersión empaquetada de doble palabra / cuádruple con índices de palabra doble y cuádruple firmados |
VSCATTERDPS , VSCATTERDPD , VSCATTERQPS ,VSCATTERQPD | F | Float32 / float64 empaquetados en dispersión con índices de palabra doble y cuádruple firmados |
Nuevas instrucciones por conjuntos
Detección de conflictos
Las instrucciones en la detección de conflictos AVX-512 (AVX-512CD) están diseñadas para ayudar a calcular de manera eficiente subconjuntos de elementos libres de conflictos en bucles que normalmente no se podrían vectorizar de manera segura. [8]
Instrucción | Nombre | Descripción |
---|---|---|
VPCONFLICTD , VPCONFLICTQ | Detecte conflictos dentro del vector de valores empaquetados de palabras dobles o cuádruples. | Compara cada elemento en la primera fuente con todos los elementos en lugares iguales o anteriores en la segunda fuente y forma un vector de bits de los resultados. |
VPLZCNTD , VPLZCNTQ | Cuente el número de bits cero iniciales para valores empaquetados de palabra doble o cuádruple. | LZCNT Instrucción vectorizada . |
VPBROADCASTMB2Q ,VPBROADCASTMW2D | Máscara de difusión al registro vectorial. | Máscara de 8 bits a vector de palabra cuádruple o máscara de 16 bits a vector de palabra doble. |
Exponencial y recíproco
Las instrucciones exponenciales y recíprocas de AVX-512 contienen instrucciones recíprocas aproximadas más precisas que las de la base AVX-512; el error relativo es como máximo 2 −28 . También contienen dos nuevas funciones exponenciales que tienen un error relativo de 2 −23 como máximo . [6]
Instrucción | Descripción |
---|---|
VEXP2PD , VEXP2PS | Calcule exponencial aproximado 2 ^ x de valores de coma flotante de precisión simple o doble empaquetados |
VRCP28PD , VRCP28PS | Calcule recíprocos aproximados de valores de coma flotante de precisión simple o doble empaquetados |
VRCP28SD , VRCP28SS | Calcule el recíproco aproximado del valor escalar de punto flotante de precisión simple o doble |
VRSQRT28PD , VRSQRT28PS | Calcule recíprocos aproximados de raíces cuadradas de valores de coma flotante de precisión simple o doble empaquetados |
VRSQRT28SD , VRSQRT28SS | Calcule el recíproco aproximado de la raíz cuadrada del valor escalar de punto flotante de precisión simple o doble |
Prefetch
Las instrucciones de captación previa de AVX-512 contienen nuevas operaciones de captación previa para la nueva funcionalidad de dispersión y recopilación introducida en AVX2 y AVX-512. T0
captación previa significa captación previa en caché de nivel 1 y T1
significa captación previa en caché de nivel 2.
Instrucción | Descripción |
---|---|
VGATHERPF0DPS , VGATHERPF0QPS , VGATHERPF0DPD ,VGATHERPF0QPD | Utilizando índices firmados dword / qword, busque previamente ubicaciones de memoria de bytes dispersos que contengan datos de precisión simple / doble utilizando opmask k1 y la sugerencia T0. |
VGATHERPF1DPS , VGATHERPF1QPS , VGATHERPF1DPD ,VGATHERPF1QPD | Utilizando índices dword / qword firmados, busque previamente ubicaciones de memoria de bytes dispersos que contengan datos de precisión simple / doble utilizando opmask k1 y T1 hint. |
VSCATTERPF0DPS , VSCATTERPF0QPS , VSCATTERPF0DPD ,VSCATTERPF0QPD | Utilizando índices dword / qword firmados, busque previamente ubicaciones de memoria de bytes dispersos que contengan datos de precisión simple / doble utilizando la máscara de escritura k1 y la pista T0 con la intención de escribir. |
VSCATTERPF1DPS , VSCATTERPF1QPS , VSCATTERPF1DPD ,VSCATTERPF1QPD | Utilizando índices firmados de dword / qword, busque previamente las ubicaciones de memoria de bytes dispersos que contengan datos de precisión simple / doble utilizando la máscara de escritura k1 y la pista T1 con la intención de escribir. |
4FMAPS y 4VNNIW
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
V4FMADDPS , V4FMADDSS | 4FMAPS | Multiplicación combinada combinada de punto flotante de precisión simple empaquetada / escalar (4 iteraciones) |
V4FNMADDPS , V4FNMADDSS | 4FMAPS | Punto flotante de precisión simple empaquetada / escalar fusionada multiplicar-sumar y negar (4 iteraciones) |
VP4DPWSSD | 4VNNIW | Producto escalar de palabras con signos con acumulación de palabras dobles (4 iteraciones) |
VP4DPWSSDS | 4VNNIW | Producto escalar de palabras con signos con acumulación y saturación de palabras dobles (4 iteraciones) |
BW, DQ y VBMI
AVX-512DQ agrega nuevas instrucciones de palabra doble y cuádruple. AVX-512BW agrega versiones de bytes y palabras de las mismas instrucciones, y agrega versiones de bytes y palabras de instrucciones de palabras dobles / cuádruples en AVX-512F. Unas instrucciones que reciben sólo formas de la palabra con AVX-512BW formas byte adquieren con la extensión AVX-512_VBMI ( VPERMB
, VPERMI2B
, VPERMT2B
, VPMULTISHIFTQB
).
Se agregaron dos nuevas instrucciones al conjunto de instrucciones de la máscara: KADD
y KTEST
(formas B y W con AVX-512DQ, D y Q con AVX-512BW). El resto de las instrucciones de máscara, que solo tenían formas de palabras, obtuvieron formas de bytes con AVX-512DQ y formas de dos palabras / cuatro palabras con AVX-512BW. KUNPCKBW
se extendió a KUNPCKWD
y KUNPCKDQ
por AVX-512BW.
Entre las instrucciones agregadas por AVX-512DQ hay varias instrucciones SSE, AVX que no obtuvieron las versiones AVX-512 con AVX-512F, entre ellas están todas las instrucciones de dos entradas bit a bit y las instrucciones de extracción / inserción de números enteros.
Las instrucciones que son completamente nuevas se tratan a continuación.
Instrucciones de coma flotante
Se introducen tres nuevas operaciones de coma flotante. Dado que no solo son nuevos en AVX-512, tienen versiones empaquetadas / SIMD y escalares.
Las VFPCLASS
instrucciones comprueban si el valor de punto flotante es uno de los ocho valores especiales de punto flotante, cuál de los ocho valores activará un bit en el registro de máscara de salida está controlado por el campo inmediato. Las VRANGE
instrucciones realizan operaciones mínimas o máximas en función del valor del campo inmediato, que también puede controlar si la operación se realiza de forma absoluta o no y por separado cómo se maneja la señal. Las VREDUCE
instrucciones operan en una sola fuente y restan de ella la parte entera del valor fuente más un número de bits especificado en el campo inmediato de su fracción.
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VFPCLASSPS , VFPCLASSPD | DQ | Pruebe los tipos de valores de coma flotante de precisión simple y doble empaquetados. |
VFPCLASSSS , VFPCLASSSD | DQ | Pruebe los tipos de valores escalares de coma flotante de precisión simple y doble. |
VRANGEPS , VRANGEPD | DQ | Cálculo de restricción de rango para valores de coma flotante empaquetados. |
VRANGESS , VRANGESD | DQ | Cálculo de restricción de rango para valores de coma flotante escalar. |
VREDUCEPS , VREDUCEPD | DQ | Realice una transformación de reducción en valores de coma flotante empaquetados. |
VREDUCESS , VREDUCESD | DQ | Realice una transformación de reducción en valores de coma flotante escalar. |
Otras instrucciones
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VPMOVM2D , VPMOVM2Q | DQ | Convierta el registro de máscara en un registro vectorial de palabra doble o cuádruple. |
VPMOVM2B , VPMOVM2W | BW | Convierta el registro de máscara en un registro vectorial de bytes o palabras. |
VPMOVD2M , VPMOVQ2M | DQ | Convierta un registro vectorial de dos o cuatro palabras en un registro de máscara. |
VPMOVB2M , VPMOVW2M | BW | Convierta el registro vectorial de bytes o palabras en un registro de máscara. |
VPMULLQ | DQ | Multiplicar el resultado bajo de la tienda de cuatro palabras empaquetadas. Una versión de cuatro palabras de VPMULLD. |
VBMI2
Amplíe VPCOMPRESS y VPEXPAND con variantes de bytes y palabras. Las instrucciones de turno son nuevas.
Instrucción | Descripción |
---|---|
VPCOMPRESSB , VPCOMPRESSW | Almacene valores enteros de bytes / palabras empaquetados dispersos en una memoria densa / registro |
VPEXPANDB , VPEXPANDW | Cargue valores enteros de bytes / palabras empaquetados dispersos desde una memoria / registro denso |
VPSHLD | Concatenar y desplazar los datos empaquetados de forma lógica |
VPSHLDV | Los datos empaquetados de desplazamiento variable y concatenados se dejan lógicos |
VPSHRD | Concatenar y desplazar datos empaquetados a la lógica correcta |
VPSHRDV | Datos empaquetados de desplazamiento variable y concatenados lógicos a la derecha |
VNNI
Instrucciones de red neuronal vectorial.
Instrucción | Descripción |
---|---|
VPDPBUSD | Multiplica y agrega bytes sin firmar y firmados |
VPDPBUSDS | Multiplica y agrega bytes sin firmar y firmados con saturación |
VPDPWSSD | Multiplica y suma números enteros de palabras con signo |
VPDPWSSDS | Multiplica y suma números enteros de palabras con saturación |
IFMA
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VPMADD52LUQ | IFMA | Empaquetado multiplicado de enteros de 52 bits sin signo y agregue los productos bajos de 52 bits a los acumuladores de qword |
VPMADD52HUQ | IFMA | Empaquetado multiplicado por enteros de 52 bits sin firmar y agregue los productos de 52 bits altos a acumuladores de 64 bits |
VPOPCNTDQ y BITALG
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VPOPCNTD , VPOPCNTQ | VPOPCNTDQ | Devuelve el número de bits establecido en 1 en palabra doble / palabra cuádruple |
VPOPCNTB , VPOPCNTW | BITALG | Devuelve el número de bits establecido en 1 en byte / palabra |
VPSHUFBITQMB | BITALG | Mezclar bits de elementos de cuatro palabras utilizando índices de bytes en la máscara |
VP2INTERSECT
Instrucción | Conjunto de extensión | Descripción |
---|---|---|
VP2INTERSECTD , VP2INTERSECTQ | VP2INTERSECT | Calcule la intersección entre palabras dobles / cuádruples para un par de registros de máscara |
GFNI
Instrucciones nuevas del campo Galois codificado en EVEX :
Instrucción | Descripción |
---|---|
VGF2P8AFFINEINVQB | Transformación afín del campo de Galois inversa |
VGF2P8AFFINEQB | Transformación afín del campo de Galois |
VGF2P8MULB | El campo de Galois multiplica los bytes |
VPCLMULQDQ
VPCLMULQDQ con AVX-512F agrega una versión de 512 bits codificada en EVEX de la instrucción PCLMULQDQ. Con AVX-512VL, agrega versiones de 256 y 128 bits codificadas en EVEX. VPCLMULQDQ solo (es decir, en CPU que no son AVX512) agrega solo la versión de 256 bits con codificación VEX. (La disponibilidad de la versión de 128 bits codificada en VEX se indica mediante diferentes bits de CPUID: PCLMULQDQ y AVX). Las variaciones de la instrucción de más de 128 bits realizan la misma operación en cada porción de 128 bits de los registros de entrada, pero lo hacen no extenderlo para seleccionar cuatro palabras de diferentes campos de 128 bits (el significado del operando imm8 es el mismo: se selecciona la palabra cuádruple baja o alta del campo de 128 bits).
Instrucción | Descripción |
---|---|
VPCLMULQDQ | Cuatro palabras de multiplicación sin llevar |
VAES
Instrucciones AES codificadas en VEX y EVEX . Las variaciones de la instrucción de más de 128 bits realizan la misma operación en cada porción de 128 bits de los registros de entrada. Las versiones VEX se pueden utilizar sin compatibilidad con AVX-512.
Instrucción | Descripción |
---|---|
VAESDEC | Realice una ronda de un flujo de descifrado AES |
VAESDECLAST | Realice la última ronda de un flujo de descifrado AES |
VAESENC | Realice una ronda de un flujo de cifrado AES |
VAESENCLAST | Realice la última ronda de un flujo de cifrado AES |
BF16
Instrucciones de aceleración AI que operan en el formato Bfloat16 .
Instrucción | Descripción |
---|---|
VCVTNE2PS2BF16 | Convierta dos números empaquetados de precisión simple en un número Bfloat16 empaquetado |
VCVTNEPS2BF16 | Convierta un número de precisión único empaquetado en un número Bfloat16 empaquetado |
VDPBF16PS | Calcule el producto escalar de dos pares Bfloat16 y acumule el resultado en un número de precisión único empaquetado |
Instrucciones heredadas actualizadas con versiones codificadas con EVEX
Codificación heredada | Grupo | Instrucciones | Extensiones AVX-512 | ||
---|---|---|---|---|---|
SSE SSE2 MMX | AVX SSE3 SSE4.1 | AVX2 FMA | |||
sí | sí | No | VADD | VADDPD , VADDPS , VADDSD ,VADDSS | F, VL |
VAND | VANDPD , VANDPS , VANDNPD ,VANDNPS | VL, DQ | |||
VCMP | VCMPPD , VCMPPS , VCMPSD ,VCMPSS | F | |||
VCOM | VCOMISD , VCOMISS | F | |||
VDIV | VDIVPD , VDIVPS , VDIVSD ,VDIVSS | F, VL | |||
VCVT | VCVTDQ2PD , VCVTDQ2PS , VCVTPD2DQ , VCVTPD2PS ,
| F, VL | |||
VMAX | VMAXPD , VMAXPS , VMAXSD ,VMAXSS | F, VL | |||
VMIN | VMINPD , VMINPS , VMINSD ,VMINSS | F | |||
VMOV | VMOVAPD , VMOVAPS , VMOVD , VMOVQ ,
| F, VL, BW | |||
VMUL | VMULPD , VMULPS , VMULSD ,VMULSS | F, VL | |||
VOR | VORPD , VORPS | VL, DQ | |||
VSQRTP | VSQRTPD , VSQRTPS , VSQRTSD ,VSQRTSS | F, VL | |||
VSUB | VSUBPD , VSUBPS , VSUBSD ,VSUBSS | F, VL | |||
VUCOMI | VUCOMISD , VUCOMISS | F | |||
VUNPCK | VUNPCKHPD , VUNPCKHPS , VUNPCKLPD ,VUNPCKLPS | F, VL | |||
VXOR | VXORPD , VXORPS | VL, DQ | |||
No | sí | No | VEXTRACTPS | VEXTRACTPS | F |
VINSERTPS | VINSERTPS | F | |||
VPALIGNR | VPALIGNR | VL, BW | |||
VPEXTR | VPEXTRB , VPEXTRW , VPEXTRD ,VPEXTRQ | BW, DQ | |||
VPINSR | VPINSRB , VPINSRW , VPINSRD ,VPINSRQ | BW, DQ | |||
sí | sí | sí | VPACK | VPACKSSWB , VPACKSSDW , VPACKUSDW ,VPACKUSWB | VL, BW |
VPADD | VPADDB , VPADDW , VPADDD , VPADDQ ,
| F, VL, BW | |||
VPAND | VPANDD , VPANDQ , VPANDND ,VPANDNQ | F, VL | |||
VPAVG | VPAVGB , VPAVGW | VL, BW | |||
VPCMPEQ | VPCMPEQB , VPCMPEQW , VPCMPEQD ,VPCMPEQQ | F, VL, BW | |||
VPCMPGT | VPCMPGTB , VPCMPGTW , VPCMPGTD ,VPCMPGTQ | F, VL, BW | |||
VPMAX | VPMAXSB , VPMAXSW , VPMAXSD , VPMAXSQ , VPMAXUB , VPMAXUW , VPMAXUD ,VPMAXUQ | F, VL, BW | |||
VPMIN | VPMINSB , VPMINSW , VPMINSD , VPMINSQ , VPMINUB , VPMINUW , VPMINUD ,VPMINUQ | F, VL, BW | |||
VPMOV | VPMOVSXBW , VPMOVSXBD , VPMOVSXBQ , VPMOVSXWD , VPMOVSXWQ , VPMOVSXDQ ,
| F, VL, BW | |||
VPMUL | VPMULDQ , VPMULUDQ , VPMULHRSW , VPMULHUW , VPMULHW , VPMULLD , VPMULLQ ,VPMULLW | F, VL, BW | |||
VPOR | VPORD , VPORQ | F, VL | |||
VPSUB | VPSUBB , VPSUBW , VPSUBD , VPSUBQ , VPSUBSB , VPSUBSW , VPSUBUSB ,VPSUBUSW | F, VL, BW | |||
VPUNPCK | VPUNPCKHBW , VPUNPCKHWD , VPUNPCKHDQ , VPUNPCKHQDQ ,
| F, VL, BW | |||
VPXOR | VPXORD , VPXORQ | F, VL | |||
VPSADBW | VPSADBW | VL, BW | |||
VPSHUF | VPSHUFB , VPSHUFHW , VPSHUFLW , VPSHUFD ,
| F, VL, BW | |||
No | sí | sí | VEXTRACTO | VEXTRACTF32X4 , VEXTRACTF64X2 , VEXTRACTF32X8 , VEXTRACTF64X4 ,
| F, VL, DQ |
VINSERT | VINSERTF32x4 , VINSERTF64X2 , VINSERTF32X8 , VINSERTF64x4 ,
| F, VL, DQ | |||
VPABS | VPABSB , VPABSW , VPABSD ,VPABSQ | F, VL, BW | |||
VPERM | VPERMD , VPERMILPD , VPERMILPS , VPERMPD , VPERMPS ,VPERMQ | F, VL | |||
VPMADD | VPMADDUBSW VPMADDWD | VL, BW | |||
No | No | sí | VFMADD | VFMADD132PD , VFMADD213PD , VFMADD231PD ,
| F, VL |
VFMADDSUB | VFMADDSUB132PD , VFMADDSUB213PD , VFMADDSUB231PD ,
| F, VL | |||
VFMSUBADD | VFMSUBADD132PD , VFMSUBADD213PD , VFMSUBADD231PD ,
| F, VL | |||
VFMSUB | VFMSUB132PD , VFMSUB213PD , VFMSUB231PD ,
| F, VL | |||
VFNMADD | VFNMADD132PD , VFNMADD213PD , VFNMADD231PD ,
| F, VL | |||
VFNMSUB | VFNMSUB132PD , VFNMSUB213PD , VFNMSUB231PD ,
| F, VL | |||
VGATHER | VGATHERDPS , VGATHERDPD , VGATHERQPS ,VGATHERQPD | F, VL | |||
VPGATHER | VPGATHERDD , VPGATHERDQ , VPGATHERQD ,VPGATHERQQ | F, VL | |||
VPSRAV | VPSRAVW , VPSRAVD ,VPSRAVQ | F, VL, BW |
CPU con AVX-512
- Intel
- Desembarco de los caballeros (Xeon Phi x200): [1] [9] AVX-512 F, CD, ER, PF
- Knights Mill (Xeon Phi x205): [7] AVX-512 F, CD, ER, PF, 4FMAPS, 4VNNIW, VPOPCNTDQ
- Skylake-SP , Skylake-X : [10] [11] [12] AVX-512 F, CD, VL, DQ, BW
- Lago Cannon : [7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI
- Lago en cascada : AVX-512 F, CD, VL, DQ, BW, VNNI
- Cooper Lake : AVX-512 F, CD, VL, DQ, BW, VNNI, BF16
- Ice Lake , [7] Rocket Lake : [13] [14] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES
- Tiger Lake (excepto Pentium y Celeron [15] ): [16] AVX512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, VP2INTERSECT
- Rápidos de zafiro : BF16
- Lago Raptor :
- Lago de meteoritos :
- Rápidos de granito
- Lago Lunar :
- Tecnología Centaur
- Núcleo "CNS" (8c / 8t, AVX512F / CD / VL / BW / DQ / IFMA / VBMI) [17] [18]
- AMD
- Zen 4 : BF16 [19] [20]
Subconjunto AVX-512 | F | CD | ER | PF | 4FMAPS | 4VNNIW | VPOPCNTDQ | VL | DQ | BW | IFMA | VBMI | VNNI | BF16 | VBMI2 | BITALG | VPCLMULQDQ | GFNI | VAES | VP2INTERSECT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Procesadores Knights Landing (Xeon Phi x200) (2016) | sí | sí | No | |||||||||||||||||
Procesadores Knights Mill (Xeon Phi x205) (2017) | sí | sí | No | |||||||||||||||||
Procesadores Skylake-SP , Skylake-X (2017) | No | No | No | sí | No | |||||||||||||||
Procesadores Cannon Lake (2018) | sí | No | ||||||||||||||||||
Procesadores Cascade Lake (2019) | No | sí | No | |||||||||||||||||
Procesadores Cooper Lake (2020) | sí | No | ||||||||||||||||||
Procesadores Ice Lake (2019) | sí | sí | No | sí | No | |||||||||||||||
Procesadores Tiger Lake (2020) | sí | |||||||||||||||||||
Procesadores Rocket Lake (2021) | No |
QEMU admite la emulación de AVX-512 en su TCG.
Actuación
Intel "Vectorization" Advisor (a partir de la versión 2016 Update 3) admite el análisis de calidad de código vectorial y rendimiento AVX-512 nativo para el procesador Intel Xeon Phi (nombre en código Knights Landing ) de segunda generación . Junto con el perfil tradicional de puntos de acceso, las recomendaciones del asesor y la integración "perfecta" de los diagnósticos de vectorización del compilador Intel, el análisis de la encuesta del asesor también proporciona métricas AVX-512 ISA y nuevos "rasgos" específicos de AVX-512, por ejemplo, dispersión, compresión / expansión, utilización de máscara. [21] [22]
En algunos procesadores, las instrucciones AVX-512 provocan una limitación de frecuencia incluso mayor que la de sus predecesores, lo que genera una penalización por cargas de trabajo mixtas. El descenso adicional se activa por el ancho de 512 bits de los vectores y depende de la naturaleza de las instrucciones que se ejecutan, y el uso de la parte de 128 o 256 bits de AVX-512 (AVX-512VL) no lo activa. Como resultado, gcc y clang prefieren usar los vectores de 256 bits por defecto. [23]
Ver también
- Conjunto de instrucciones FMA (FMA)
- Conjunto de instrucciones XOP (XOP)
- Extensión vectorial escalable para ARM : un nuevo conjunto de instrucciones vectoriales (que complementa VFP y NEON ) que admite anchos de bits muy amplios y un código binario único que puede adaptarse automáticamente al ancho máximo admitido por hardware.
Referencias
- ↑ a b c d e f James Reinders (23 de julio de 2013). "Instrucciones AVX-512" . Intel . Consultado el 20 de agosto de 2013 .
- ^ "Inteligencia avanzada para soluciones de borde de alta densidad" . Intel . Intel . Consultado el 8 de febrero de 2018 .
- ^ a b c James Reinders (17 de julio de 2014). "Instrucciones adicionales de AVX-512" . Intel . Consultado el 3 de agosto de 2014 .
- ^ Anton Shilov. "Los procesadores Intel 'Skylake' para PC no son compatibles con las instrucciones AVX-512" . Kitguru.net . Consultado el 17 de marzo de 2015 .
- ^ https://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/
- ^ a b c d e f g h "Referencia de programación de extensiones del conjunto de instrucciones de la arquitectura Intel" (PDF) . Intel . Consultado el 29 de enero de 2014 .
- ^ a b c d e f "Referencia de programación de extensiones y características futuras del conjunto de instrucciones de la arquitectura Intel" . Intel . Consultado el 16 de octubre de 2017 .
- ^ "AVX-512 Arquitectura / Cartel Demikhovsky" (PDF) . Intel . Consultado el 25 de febrero de 2014 .
- ^ "Resumen del producto del procesador Intel Xeon Phi" . Intel . Consultado el 12 de octubre de 2016 .
- ^ "Intel presenta la plataforma de la serie X: hasta 18 núcleos y 36 subprocesos, desde $ 242 hasta $ 2,000" . Ars Technica . Consultado el 30 de mayo de 2017 .
- ^ "Intel Advanced Vector Extensions 2015/2016: Support in GNU Compiler Collection" (PDF) . Gcc.gnu.org . Consultado el 20 de octubre de 2016 .
- ^ Patrizio, Andy. "Hoja de ruta de Intel Xeon para fugas de 2016" . Itworld.org . Consultado el 20 de octubre de 2016 .
- ^ "Revisión de Intel Core i9-11900K: ¿el procesador para juegos más rápido del mundo?" . www.techpowerup.com .
- ^ "« Añadir rocketlake a gcc »commit" . gcc.gnu.org .
- ^ "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 .
- ^ "Uso de la colección de compiladores GNU (GCC): opciones x86" . GNU . Consultado el 14 de octubre de 2019 .
- ^ https://centtech.com/ai-technology/
- ^ "x86, x64 instrucción de latencia, latencia de memoria y volcados de CPUID (instlatx64)" . users.atw.hu .
- ^ "Las CPU basadas en AMD Zen 4 podrían presentar hasta 24 núcleos, y llegará el soporte AVX512" . TechnoSports . 2021-05-24 . Consultado el 25 de mayo de 2021 .
- ^ Hagedoorn, Hilbert. "AMD trabajando en un prodigioso procesador EPYC de 96 núcleos" . Guru3D.com . Consultado el 25 de mayo de 2021 .
- ^ "Novedades de Intel Advisor XE 2016 Update 3 - Software Intel" . Software.intel.com . Consultado el 20 de octubre de 2016 .
- ^ "Asesor Intel - Software Intel" . Software.intel.com . Consultado el 20 de octubre de 2016 .
- ^ Cordes, Peter. "Instrucciones SIMD que reducen la frecuencia de la CPU" . Desbordamiento de pila .