Esse termo foi criado em 1987, que refere -se a uma máquina que é projetada para
melhorar o desempenho da execução de instruções escalares. Na maioria das aplicações, a maior
parte das operações é de grandezas escalares. Logo, a abordagem superescalar
representa o próximo passo na evolução de processadores de uso geral e de alto desempenho.
Muitos pesquisadores chegaram a investigar os processadores superescalar, suas pesquisas chegaram a indicar que algum
grau de melhoria de desempenho é possível. As diferenças em resultados surgem das diferenças tanto no hardware da máquina
simulada quanto das aplicações sendo simuladas.
SUPERESCALAR VERSUS SUPERPIPELINE
Uma outra abordagem para alcançar melhor desempenho é conhecida como superpipeline, termo
criado em 1988. O superpipeline explora o fato de que muitos estágios de pipeline executam tarefas
que requerem menos do que metade de um ciclo de clock. Assim, a velocidade interna de clock
dobrada possibilita o desempenho de duas tarefas em um ciclo de clock externo
O pipeline tem quatro estágios: 1- busca instrução, 2- decodifi cação da operação, 3- executar operação e
4- atualização do resultado
LIMITAÇÕES
A abordagem superescalar depende da habilidade de executar várias instruções em paralelo. O
termo paralelismo em nível de instruções refere -se ao grau em que, as instruções de um programa
podem ser executadas em paralelo. Uma combinação de otimização baseada em compilador e
técnicas de hardware pode ser usada para maximizar o paralelismo em nível de instruções.
Antes de analisar as técnicas de design usadas em máquinas superescalares para aumentar o
paralelismo em nível de instruções, temos que olhar as limitações fundamentais do paralelismo com
as quais o sistema deve lidar. Que são cinco limitações:
1- Dependência de dados
verdadeira. 2- Dependência
procedural. 3- Conflitos de
recursos. 4- Dependência
de saída. 5-
Antidependência.
A segunda instrução pode ser obtida e decodificada, mas não
pode ser executada até que a primeira execute. O motivo é que a
segunda instrução precisa de dados produzidos pela primeira.
Esta situação é conhecida como dependência de dados verdadeira
DEPENDENCIAS PROCEDURAIS
A presença de desvios em uma sequência de instruções complica a operação do pipeline. As
instruções que vêm depois de um desvio (tomado ou não) possuem uma dependência procedural com
o desvio e não podem ser executadas até que o desvio seja executado.
Este tipo de dependência procedural afeta também um pipeline escalar. A consequência para um
pipeline superescalar é mais severa, porque uma oportunidade de magnitude maior é perdida com cada
atraso.
CONFLITO DE RECURSOS
Um conflito de recursos é a competição de duas ou mais instruções pelo mesmo recurso e ao
mesmo tempo. Exemplos de recursos incluem memória, cache, barramentos, entradas para banco
de registradores e unidades funcionais.
Em termos de pipeline, um conflito de recurso mostra o comportamento parecido de uma dependência
de dados. No entanto, há algumas diferenças. Para começar, os conflitos de recursos
podem ser evitados pela a duplicação de recursos, levando em conta que uma dependência de dados
verdadeira não pode ser eliminada. Além disso, quando uma operação leva muito tempo para se
completar, conflitos de recursos podem ser minimizados pelo pipeline na unidade funcional
apropriada.