Um projeto de CPU superscalar faz uma forma de computação paralela chamada paralelismo em nível de instrução dentro de uma única CPU, o que permite que mais trabalho seja feito com a mesma taxa de relógio. Isto significa que a CPU executa mais de uma instrução durante um ciclo de relógio, executando várias instruções ao mesmo tempo (chamado despacho de instruções) em unidades funcionais duplicadas. Cada unidade funcional é apenas um recurso de execução dentro do núcleo da CPU, como uma unidade lógica aritmética (ALU), unidade de ponto flutuante (FPU), um bit shifter, ou um multiplicador.
A maioria das CPUs superescalares também são encanadas, mas é possível ter uma CPU superescalar não encanada ou uma CPU não superescalar encanada.
A técnica superescalar é suportada por várias características do núcleo da CPU:
- As instruções vêm de uma lista de instruções encomendada.
- O hardware da CPU pode determinar quais instruções têm quais dependências de dados.
- Pode ler várias instruções por ciclo de relógio
Cada instrução executada por um processador escalar muda um ou dois itens de dados de cada vez, mas cada instrução executada por um processador vetorial lida com muitos itens de dados ao mesmo tempo. Um processador super escalar é uma mistura dos dois:
- Cada instrução processa um item de dados.
- Há múltiplas unidades funcionais duplicadas dentro de cada núcleo da CPU, de modo que múltiplas instruções lidam com itens de dados independentes ao mesmo tempo.
Em uma CPU superscalar, um despachante de instruções lê instruções da memória e decide quais podem ser executadas em paralelo, despachando-as nas múltiplas unidades funcionais duplicadas disponíveis dentro da CPU.
O projeto da CPU Superscalar está preocupado em melhorar a precisão do despachante de instruções e permitir que ele mantenha as múltiplas unidades funcionais ocupadas o tempo todo. A partir de 2008, todas as CPUs de uso geral são superscalar, uma CPU superscalar típica pode incluir até 4 ALUs, 2 FPUs, e duas unidades SIMD. Se o despachante não conseguir manter todas as unidades ocupadas, o desempenho da CPU será menor.


