Qual é a diferença entre as abordagens superescalar e super pipelined?

São abordagens complementares.

A super pipeline tenta aumentar o desempenho reduzindo o tempo do ciclo do relógio. Isso permite que cada estágio do pipeline seja muito raso, resultando em um grande número de estágios do tubo. Um ciclo de relógio mais curto significa

Mais rápido

relógio. Desde que seus ciclos por instrução (CPI) não sejam alterados, um relógio mais rápido significa melhor desempenho. A super pipeline funciona melhor com código que não se ramifica com frequência ou que se prevê com facilidade.

Tentativas superescalares para aumentar o desempenho executando várias instruções em paralelo. Se você pode emitir mais instruções a cada ciclo - sem diminuir a taxa de clock -, seu CPI diminui, aumentando o desempenho.

Superscalar divide-se em dois sabores gerais: em ordem e fora de ordem. O superescalar em ordem fornece principalmente benefícios ao código com paralelismo no nível de instruções entre uma pequena janela de instruções consecutivas. Superescalar fora de ordem permite que o pipeline encontre paralelismo em janelas de código maiores e oculte latências associadas a instruções de execução longa. (Exemplo: carregar instruções que perdem o cache.) Em ordem versus fora de ordem formam um continuum: Alguns processadores têm problemas de ordem, mas conclusão de fora de ordem, por exemplo.

Resumindo em poucas palavras: a super pipeline busca melhorar o

sequencial

taxa de instrução, enquanto superscalar procura melhorar

paralelo

taxa de instrução.

Os processadores mais modernos são

ambos

superescalar

e

super pipelined. Eles têm dutos profundos para atingir altas taxas de clock e um amplo problema de instruções para usar o paralelismo no nível das instruções.

Como sempre na arquitetura de computadores, essas são categorias amplas e nem todas as máquinas se encaixam de maneira precisa em caçambas específicas.

EDIT: Adicionados alguns pequenos esclarecimentos, incluindo o resumo “serial vs. paralelo”.