Processadores SIMD e Vetoriais
Processadores SIMD e vetoriais exploram o paralelismo a nível de dados aplicando uma única instrução a muitos elementos de dados simultaneamente, acelerando computações regulares e repetitivas, como kernels de multimídia, científicos e de aprendizado de máquina.
Definition
SIMD (single-instruction multiple-data) e processamento vetorial são técnicas arquitetônicas nas quais uma instrução executa simultaneamente a mesma operação em múltiplos elementos de dados mantidos em registradores vetoriais amplos ou pistas SIMD, explorando o paralelismo a nível de dados.
Scope
Este tópico aborda a execução de instrução única e múltiplos dados (SIMD): processadores vetoriais clássicos com registradores vetoriais e pistas pipelined, extensões SIMD em CPUs comerciais, mascaramento e predicação, e as condições sob as quais o paralelismo de dados é lucrativo. Ele trata da arquitetura de hardware paralelo a dados. Exclui o paralelismo a nível de thread entre núcleos (multicore e multiprocessadores em chip) e o modelo de GPU com muitos núcleos (arquitetura de GPU), com os quais se sobrepõe.
Core questions
- Como a aplicação de uma instrução a muitos elementos de dados alcança aceleração paralela?
- Como os processadores vetoriais diferem das extensões SIMD em CPUs comerciais?
- Como as operações condicionais são tratadas com mascaramento e predicação?
- Que tipos de computações se beneficiam mais da execução paralela a dados?
Key concepts
- instrução única, múltiplos dados (SIMD)
- registradores e pistas vetoriais
- comprimento do vetor e strip mining
- mascaramento e predicação
- gather/scatter
- extensões SIMD de CPU
- paralelismo a nível de dados
- execução orientada ao throughput
Key theories
- Paralelismo a nível de dados via instrução única, múltiplos dados
- Quando a mesma operação se aplica independentemente a muitos elementos de um array, uma instrução pode acionar muitas pistas paralelas ou uma unidade vetorial pipelined, amortizando a busca de instruções e o controle sobre grandes dados e proporcionando alto throughput para computações regulares.
Mechanisms
Um processador vetorial mantém arrays de elementos em registradores vetoriais e os processa através de unidades funcionais pipelined ou replicadas, com uma instrução especificando uma operação sobre todo o vetor; vetores longos são processados em blocos (strip mining). As extensões SIMD em CPUs fornecem registradores de largura fixa operados elemento a elemento. O mascaramento permite a execução condicional por elemento, e as operações gather/scatter lidam com acesso à memória não contíguo.
Clinical relevance
O hardware paralelo a dados oferece grande parte do throughput de pico dos processadores modernos. As extensões SIMD aceleram codecs de mídia, processamento de imagem, física e a álgebra linear densa subjacente ao aprendizado profundo, enquanto as arquiteturas vetoriais impulsionam a supercomputação. O uso eficaz depende de compiladores e programadores que exponham computações regulares e vetorizáveis.
History
O processamento vetorial foi pioneiro em supercomputadores como o CDC STAR-100 e especialmente o Cray-1 na década de 1970. O paralelismo de dados reentrou nas CPUs comerciais através de extensões SIMD (MMX, SSE, AVX, NEON) a partir do final da década de 1990, e as extensões vetoriais escaláveis e o ressurgimento de cargas de trabalho numéricas densas renovaram o interesse em arquiteturas vetoriais.
Key figures
- Seymour Cray
- Michael J. Flynn
- John L. Hennessy
- David A. Patterson
Related topics
Seminal works
- hennessy2019
- patterson2020
Frequently asked questions
- Qual é a diferença entre extensões SIMD e um processador vetorial?
- As extensões SIMD adicionam registradores de largura fixa (por exemplo, 128 ou 256 bits) a uma CPU convencional, operando em um número definido de elementos por instrução. Um processador vetorial é construído em torno de registradores e instruções vetoriais que operam sobre vetores longos, muitas vezes de comprimento variável, tipicamente através de pistas profundamente pipelined.
- Por que nem todos os programas se beneficiam do SIMD?
- O SIMD acelera computações que aplicam a mesma operação a muitos elementos de dados independentes com acesso regular à memória. Programas dominados por ramificações, dependências de dados irregulares ou acesso à memória disperso ganham pouco, porque as pistas paralelas não podem ser mantidas utilmente ocupadas.