AltiVec

AltiVec é uma unidade SIMD desenvolvida pela IBM e Motorola para a família de processadores PowerPC . AltiVec também é uma marca comercial da Motorola, razão pela qual a Apple usa o nome Velocity Engine e a IBM usa o nome VMX (Vector Media Extensions) para esta unidade SIMD.

Com a ajuda do AltiVec, a mesma operação pode ser aplicada a várias palavras de dados simultaneamente. A unidade vetorial suporta até dezesseis elementos por vetor (em vez de calcular números individuais, eles são vistos juntos como um vetor ). Se o software usa todos os recursos do AltiVec, ele pode, teoricamente, concluir tarefas aritméticas em até um décimo sexto do tempo normalmente necessário.

Originalmente integrado aos processadores PowerPC, a unidade SIMD também foi integrada aos processadores IBM Power posteriores (do POWER6) e, finalmente, expandida com o POWER7 como VSX (Vector Scalar Extensions) para 64 registradores com largura de 128 bits. Após o fim dos processadores PowerPC (com a mudança de processadores Apple para processadores Intel), o desenvolvimento adicional continua na IBM na plataforma IBM POWER:

especificação Sobrenome realizado no processador
Power ISA v.2.03 Altivec / VMX POWER6
Power ISA v.2.06 VSX POWER7
Power ISA v.2.07 VSX-2 POWER8
Power ISA v.3.0 VSX-3 POWER9

tecnologia

Um registrador vetorial AltiVec sempre tem 128 bits de largura. Dependendo do tipo de dados usado, 16, 8 ou 4 elementos podem ser mantidos em tal registro vetorial e usados ​​para o cálculo. Além dos tipos de dados inteiros 'byte', 'curto' e 'longo', o tipo de dados de ponto flutuante 'flutuante' (correspondente ao IEEE 754 único) também pode ser usado. Valores de ponto flutuante de precisão dupla ('double') não são suportados pelo AltiVec.

Isso resulta na seguinte configuração de um registro vetorial AltiVec:

Tipo de dados Largura do tipo de dados Itens retidos aceleração
byte 8 bits 16 16 ×
baixo 16 bits 8 ×
grandes 32 bits 4 ×
float (corresponde a IEEE 754 único) 32 bits 4 ×

No entanto, o problema da AltiVec é:

  • Muitos programadores desconhecem as possibilidades e dificilmente sabem mais sobre ela do que “tornar o seu programa mais rápido”, porque o programa de marketing apenas mencionou acelerações nas áreas gráfica, multimédia e de rede. No entanto, isso só leva a programas nessas áreas fazendo uso extensivo de operações de ponto flutuante em particular.
  • A unidade aritmética funciona tão rápido que é difícil sempre fornecê-la com novos suprimentos aritméticos. A arquitetura de banda larga dos processadores G5 não oferece nenhuma vantagem relevante sobre os sistemas G4 anteriores . Os processadores G5 já têm duas unidades de ponto flutuante completas que funcionam independentemente da unidade AltiVec e podem consumir toda a largura de banda do processador. Além disso, a unidade AltiVec do último G4 da Motorola funciona de forma mais eficiente que a do G5, que vem da IBM, e cuja unidade Altivec foi "adaptada" ao processador existente.

Suporte a compilador

O GNU Compiler Collection GCC suporta AltiVec através das chamadas “funções embutidas” , bem como tipos de vetores especiais com os quais operações simples como +, -, *, / etc. são automaticamente 'vetorizadas'.

Evidência individual

  1. https://www.ibm.com/systems/power/openpower/posting.xhtml
  2. Visão geral da unidade de execução AltiVec e do conjunto de instruções , NXP Semiconductors (inglês)
  3. Manuais GCC 3.3.6. Funções integradas do PowerPC AltiVec. In: documentação online do GCC. A equipe GCC, página 5.45.3 , acessada em 23 de novembro de 2010 (uma lista das extensões GCC AltiVec).
  4. Usando instruções vetoriais por meio de funções integradas. Recuperado em 13 de outubro de 2012 .