Top Qs
Linha do tempo
Chat
Contexto

Advanced Vector Extensions

Da Wikipédia, a enciclopédia livre

Remove ads

O Advanced Vector Extension (AVX)[1], 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[2] no início de 2011, e mais tarde então pela AMD, com o processador Bulldozer[3], lançado no final do mesmo ano. O AVX fornece novos recursos, instruções e um novo esquema de codificação.

O AVX2 expande a maioria dos comandos inteiros para 256 bits e apresenta operações de multiplicação acumulada fundidas (FMA). O AVX-512 expande o AVX para o suporte de 512 bits usando uma nova codificação de prefixo EVEX, proposta pela Intel em julho de 2013 e suportada pela primeira vez por ela, com o processador Knights Landing, lançado em 2016.[4]


Remove ads

AVX

Resumir
Perspectiva

Características

O AVX utiliza dezesseis registradores YMM. Cada registrador YMM contém:

  • Quatro números de ponto flutuante de precisão dupla de 64 bits.

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.

Thumb
Os registros YMM comparados aos registros XMM.

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[5]). 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.

As instruções do AVX suportam o SIMD de 128 bits e 256 bits. As versões de 128 bits podem ser úteis para melhorar o código antigo sem a necessidade de ampliar a vetorização, evitando assim a penalidade de ir do SSE para o AVX. Elas são mais rápidas em algumas implementações iniciais do AMD do AVX (este modo é conhecido como AVX-128[6]).

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[1].

Mais informação Instrução, Descrição ...

CPUs com AVX

Intel:

  • Processador Sandy Bridge (2011)
  • Processador Sandy Bridge E (2011)
  • Processador Ivy Bridge (2012)
  • Processador Ivy Bridge E (2013)
  • Processador Haswell (2013)
  • Processador Haswell E (2014)
  • Processador Broadwell (2014)
  • Processador Broadwell E (2016)
  • Processador Skylake (2015)
  • Processador Kaby Lake (ULV mobile - 2016) (desktop/mobile - 2017)
  • Processador Skylake-X (2017)
  • Processador Coffee Lake (2017)
  • Processador do Cannon Lake (microarquitetura), esperado para 2018
  • Processador Cascade Lake, esperado em 2018
  • Processador Ice Lake, esperado em 2018

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.

AMD:

  • Processadores baseados em Jaguar e mais recentes
  • Processadores baseados em Puma e mais recentes
  • Processadores "Equipamentos Pesados"
    • Processadores baseados em Bulldozer (2011)
    • Processadores baseados em Piledriver (2012)
    • Processadores baseados em Steamroller (2014)
    • Processadores baseados em Excavator e mais novos (2015)
  • Processadores baseados em Zen (2017)
  • Processadores baseados em Zen+ (2018)
  • Processadores baseados em Zen 2 (2019)

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:

  • Apple OS X: Suporte para AVX adicionado na atualização 10.6.8 (Snow Leopard), lançado em 23 de junho de 2011.
  • O DragonFly BSD adicionou suporte no início de 2013.
  • FreeBSD em um patch enviado em 21 de janeiro de 2012, incluído na versão 9.1.
  • Linux: suportado desde a versão do kernel 2.6.30, lançado em 9 de junho de 2009.
  • O OpenBSD adicionou suporte em 21 de março de 2015.
  • Solaris 10 Update 10 e Solaris 11.
  • Windows: suportado no Windows 7 SP1 e no Windows Server 2008 R2 SP1, Windows 8, Windows 10.
Remove ads

AVX2

Resumir
Perspectiva

Características

O Advanced Vector Extensions 2 (AVX2), também conhecido como Haswell New Instructions[5], é uma expansão do conjunto de instruções AVX introduzido na microarquitetura Haswell da Intel. O AVX2 faz as seguintes adições:

  • Expansão da maioria das instruções SSE e AVX inteiras de vetores para 256 bits.
  • Manipulação de bits de uso geral de três operandos e multiplicação.
  • Reúne o suporte, permitindo que elementos vetoriais sejam carregados de locais  de memória não contíguos.
  • DWORD- e QWORD-
  • Troca de vetores.
  • Suporte de multiplexação acumulada de três operandos (FMA3).

Novas Instruções

Mais informação Instrução, Descrição ...

CPUs com AVX2

Intel:

  • Processador Haswell (2013)
  • Processador Haswell E (2014)
  • Processador Broadwell (2014)
  • Processador Broadwell E (2016)
  • Processador Skylake (2015)
  • Processador Kaby Lake, (ULV mobile - 2016) (desktop/mobile - 2017)
  • Processador Skylake-X (2017)
  • Processador Coffee Lake (2017)
  • Processador Cannon Lake, esperado em 2018
  • Processador Cascade Lake, esperado em 2018
  • Processador Ice Lake, esperado em 2018

AMD:

  • Processador Excavator e mais novos (2015)
  • Processador Zen (2017)
Remove ads

AVX-512

O AVX-512[7] 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[4].

A instrução AVX-512[8] é 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.

CPUs com AVX-512

  • Processadores Knights Landing (2016)
  • Processadores Knights Mill (2017)
  • Processadores Skylake-SP, Skylake-X (2017)
  • Processadores Cannon Lake (2018)
  • Processadores Ice Lake (2019)

Aplicações

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).

Softwares

  • Blender - usa o AVX2 nos ciclos do mecanismo de renderização.
  • OpenSSL - usa funções criptográficas otimizadas para AVX e AVX2 desde a versão 1.0.2[9].
  • Prime95 / MPrime, software usado para o GIMPS - começou a usar as instruções AVX desde a versão 27.x.
  • O dnetc, o software usado pela distributed.net, tem um núcleo AVX2 disponível para seu projeto RC5 e lançará em breve um para seu projeto OGR-28.
  • Einstein @ Home - usa o AVX em alguns de seus aplicativos distribuídos que buscam ondas gravitacionais.
  • RPCS3, emulador de código aberto para o PlayStation 3 - usa as instruções AVX2 e AVX-512 para emular jogos PS3.
  • Network Device Interface, um protocolo de vídeo / áudio IP desenvolvido pela NewTek para produção de transmissão ao vivo - usa AVX e AVX2 para aumentar o desempenho.
Remove ads

Referências

  1. «Introduction to Intel® Advanced Vector Extensions | Intel® Software». software.intel.com (em inglês). Consultado em 30 de maio de 2018
  2. «Intel's Sandy Bridge Microarchitecture». www.realworldtech.com (em inglês). Consultado em 30 de maio de 2018
  3. «Intel® AVX-512 Instructions | Intel® Software». software.intel.com (em inglês). Consultado em 30 de maio de 2018
  4. «Haswell New Instruction Descriptions Now Available! | Intel® Software». software.intel.com (em inglês). Consultado em 30 de maio de 2018
  5. «i386 and x86-64 Options - Using the GNU Compiler Collection (GCC)». gcc.gnu.org (em inglês). Consultado em 30 de maio de 2018
  6. «Improving OpenSSL Performance | Intel® Software». software.intel.com (em inglês). Consultado em 30 de maio de 2018
Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads