Um processador superescalar é capaz de executar múltiplas instruções dentro de um único programa em paralelo. Ele faz isso analisando o fluxo de instruções para determinar quais instruções não dependem umas das outras e tendo várias unidades de execução dentro do processador para fazer o trabalho simultaneamente (por exemplo, várias ALUs ). O suporte ao compilador geralmente não é necessário para otimizar o código para processadores superescalares, pois a funcionalidade é tipicamente implementada inteiramente em hardware. 1
Um processador vetorial contém instruções especificamente projetadas para operar em grupos inteiros de múltiplos valores de dados de uma só vez (chamados arrays ou vetores ). A maioria dos processadores modernos de alto desempenho contém alguma forma de capacidade de processamento vetorial; por exemplo; A instrução SSE ADDPS
disponível na maioria dos processadores x86 calcula a soma de dois vetores, cada um contendo quatro valores de precisão simples. Compilador, desenvolvedor e suporte ao sistema operacional normalmente são obrigados a usar instruções vetoriais, e nem todos os processadores, mesmo nas gerações atuais, suportam as instruções vetoriais mais avançadas (por exemplo, processadores Intel Celeron e Pentium, mesmo em
Mais informações técnicas sobre como os processadores de hoje alcançam alto desempenho estão disponíveis em esta resposta .
1 Uma abordagem de design alternativa e bastante incomum é ter várias unidades de execução, mas deixar o compilador determinar quais instruções devem ser emitidas para cada unidade de execução para cada ciclo de clock. Isso é chamado de palavra de instrução muito longa e normalmente é encontrado apenas em processadores especializados.