Advanced Vector Extensions
O Advanced Vector Extension (AVX), também conhecido como Sandy Bridge New Extensions, são extensões da arquitetura do conjunto de instruções x86 para microprocessadores da Intel e da AMD, propostas pela Intel em março de 2008 e primeiramente suportada pela Intel com o processador Sandy Bridge no início de 2011, e mais tarde então pela AMD, com o processador Bulldozer, lançado no final do mesmo ano. O AVX fornece novos recursos, instruções e um novo esquema de codificação.
Características
O AVX utiliza dezesseis registradores YMM. Cada registrador YMM contém: A largura do arquivo de registro SIMD é aumentada de 128 bits para 256 bits e renomeada de XMM0 – XMM7 para YMM0 – YMM7 (no modo x86-64, YMM0 – YMM15). Em processadores com o suporte a AVX, as instruções SSE (anteriormente operavam em registradores XMM de 128 bits) podem ser estendidas usando o prefixo VEX para operar nos 128 bits mais baixos dos registradores YMM. Ele introduz um formato de instrução SIMD de três operandos, em que o registrador de destino é distinto dos dois operandos de origem. Por exemplo, uma instrução SSE usando a forma convencional de dois operandos a = a + b agora pode usar uma forma não destrutiva de três operandos c = a + b, preservando ambos os operandos fonte. O formato de três operandos do AVX é limitado às instruções com operandos SIMD (YMM) e não inclui instruções com registradores de propósito geral (por exemplo, EAX) (esse suporte aparecerá pela primeira vez no AVX2). O novo esquema de codificação VEX introduz um novo conjunto de prefixos de código que estende o espaço do opcode, permitindo que as instruções tenham mais de dois operandos e que os registradores vetoriais SIMD sejam maiores que 128 bits. O prefixo VEX também pode ser usado nas instruções herdadas do SSE, dando-lhes um formato de três operandos, e fazendo com que eles interajam mais eficientemente com as instruções do AVX, sem a necessidade de VZEROUPPER e ZEROALL.
Novas Instruções
Estas instruções são adicionais às que são extensões de 256 bits das instruções SSE de 128 bits e a maioria é utilizável em operandos de 128 e 256 bits.
CPUs com AVX
Nem todas as CPUs das famílias listadas acima suportam o AVX. Geralmente, CPUs com a denominação "Core i3/i5/i7" as suportam, já as CPUs "Pentium" e "Celeron" não.
Suporte ao sistema operacional
O AVX adiciona um novo estado de registro através do arquivo de registro YMM de 256 bits, portanto, é necessário suporte explícito ao sistema operacional para salvar e restaurar adequadamente os registros expandidos do AVX entre os comutadores de contexto. As seguintes versões dos sistemas operacionais suportam o AVX:
Imagem: jurvetson · BY · Openverse
Características
O Advanced Vector Extensions 2 (AVX2), também conhecido como Haswell New Instructions, é uma expansão do conjunto de instruções AVX introduzido na microarquitetura Haswell da Intel. O AVX2 faz as seguintes adições:
Imagem: HawkeyeUK · BY-SA · Openverse
O AVX-512 são extensões de 512 bits para as instruções SIMD de extensões de vetor avançadas de 256 bits para a arquitetura de conjunto de instruções x86 propostas pela Intel em julho de 2013 e programadas para serem suportadas em 2015 com o processador Knights Landing da Intel. A instrução AVX-512 é codificada com o novo prefixo EVEX. Ele permite 4 operandos, 7 novos registros opmask de 64 bits, modo de memória escalar com transmissão automática, controle de arredondamento explícito e modo de endereçamento de memória de deslocamento comprimido. A largura do arquivo de registro é aumentada para 512 bits e a contagem total de registros aumentada para 32 (registra ZMM0-ZMM31) no modo x86-64.
Imagem: n.stauffer · BY-NC-SA · Openverse
O AVX é adequado para cálculos de ponto flutuante intensivo em aplicações multimídia, científicas e financeiras (o AVX2 adiciona suporte para operações inteiras). Aumenta o paralelismo e o rendimento em cálculos SIMD de ponto flutuante, reduz a carga do registrador devido às instruções não destrutivas e melhora o desempenho do software Linux RAID (AVX2).


