Processador super escalar
Trabalho acadêmico: Processador super escalar. Pesquise 862.000+ trabalhos acadêmicosPor: AndersonDias • 24/9/2013 • Trabalho acadêmico • 4.112 Palavras (17 Páginas) • 828 Visualizações
PROCESSADOR SUPER ESCALAR
Notas de aula (Stalling) - Carlos Sica - 1999
1. Histórico
1.1 Computação Paralela
A área de sistemas de computação, estuda paralelismo desde o surgimento dos computadores. Já na década de 40, Von Neumann debatia algoritmos para soluções de equações diferenciais com técnica de paralelismo. As idéias de executar tarefas simultaneamente e de antecipar atividades são amplamente utilizadas atualmente nas arquiteturas. Neste contexto são discutidos os seguintes conceitos: busca antecipada de instruções (lookahead); superposição de fases de execução de instrução (overlap), múltiplas unidades funcionais, estágios de execução (pipeline), processamento vetorial e multiprocessamento.
Assim, dentre os principais motivos para o surgimento da computação paralela citam-se: desempenho, modularidade, tolerância a falhas e o aparecimento de microprocessadores de 32 bits e, os níveis de paralelismo mais evidentes são:
• Hardware (múltiplas unidades funcionais e pipeline)
• Micromáquina (microcódigo)
• Convencional (conjunto de recursos visíveis ao programador)
• Sistema operacional (concorrência de processos)
• Linguagem de programação (fragmentação de programa)
1.2 RISC x CISC
Segundo (Stallings, 1996), numa implementação da arquitetura super escalar de um processador, instruções comuns como: aritmética inteira e de ponto flutuante, leitura e escrita na memória e desvios condicionais, podem ser inicializadas simultaneamente e executadas independentemente e tal implementação aumenta o grau de complexidade relacionada às instruções pipelined.
As implementações da arquitetura superescalar são feitas baseadas, principalmente, na arquitetura RISC, porém, elas podem ser feitas tanto na RISC como na CISC. A primeira afirmação é devida ao fato de que o pequeno conjunto de instruções da arquitetura RISC, já o revela em parte como sendo a técnica superescalar.
Apesar do período de gestação da arquitetura RISC para a decolagem comercial desde o verdadeiro início da pesquisa com o IBM801 e o RISC de Berkeley ter sido de sete a oito anos, a disponibilização da primeira máquina superescalar comercialmente ocorreu em um ou dois anos.
2. Introdução
O termo escalar é utilizado para distinguir os modelos de execução:
• de uma única instrução manipulando operandos discretos;
• das instruções vetoriais, que desencadeiam a ativação em paralelo de múltiplos elementos de processamento, todos executando uma única operação.
Além destes dois modelos, existe o que executa várias instruções concorrentemente, sem que elas precisem ter o mesmo código de operação (não vetoriais). Este modelo é utilizado pelos computadores superescalares, assim chamados, por processarem instruções escalares em grande grau de paralelismo.
Computadores superescalares são máquinas projetadas para melhorar a performance de execução de instruções escalares, em outras palavras, eles exploram o paralelismo em baixo nível e, assim, podem executar diversas instruções de máquina simultaneamente, contanto que, todas sejam provenientes do mesmo programa objeto.
O nome contrasta com o propósito dos processadores vetoriais e matriciais, pois, utilizam a técnica de processar várias instruções de um mesmo tipo em paralelo, enquanto que um superescalar pode processar simultaneamente instruções diferentes.
Este debate é feito porque cada máquina é especializada em executar determinados tipos de programas específicos e, como na maioria das aplicações, a massa de operações são quantidades escalares, a "filosofia" superescalar representa o próximo passo na condução dos processadores de propósito geral para a alta performance, que podem então, executar eficientemente uma larga gama de programas de aplicação não se limitando à aplicações vetoriais ou matriciais.
2.1 Superescalar x superpipelined
Uma técnica alternativa para atingir alta performance no processamento é intitulada como superpipelined, termo utilizado pela primeira vez em 1988 [JOUP88]. Essa técnica explora o fato de que o estágio de pipeline executa tarefas que requerem menos de meio ciclo de clock. Assim, um processador com velocidade de clock interno dobrada, permite um aumento de performance de duas tarefas executadas em um único ciclo de clock externo. (MIPS R4000)
Comparação:
Uma máquina usando pipeline básico executa uma instrução por ciclo de clock e tem e um estágio de pipeline por clock também. O pipeline tem quatro estágios: busca, decodificação, execução e armazenamento do resultado. Note que, ainda que várias instruções estejam sendo executadas concorrentemente, somente uma instrução está no estágio de execução de cada vez.
A implementação superpipelined é capaz de executar dois estágios de pipeline de cada vez. Um forma alternativa de enxergar isso, é entender que a função executada em cada estágio, pode ser dividida em duas partes não sobrepostas e cada pode executar em meio ciclo de clock. Uma implementação superpipelined que se comporta deste modo é chamada de grau 2.
A implementação superescalar pode executar duas instâncias de cada estágio em paralelo.
Tanto o superpipelined como o superescalar comparados, tem o mesmo número de instruções executando ao mesmo tempo no mesmo estado. O processador superpipelined parece com o superescalar ao início de cada programa de cada desvio de fluxo.
2.2 Limitações
A técnica superescalar depende da capacidade de executar múltiplas instruções em paralelo. O termo intruction-level parallelism refere-se ao grau no qual, em média, instruções de um programa podem ser executadas em paralelo. A combinação das técnicas de otimização baseada em compilador e baseada em hardware, pode ser utilizada para maximizar o nível de paralelismo das instruções. Antes de analisar a técnica utilizada pelas máquinas superescalares para incrementar o nível de paralelismo, é necessário entender as limitações de paralelismo que o sistema deve tolerar.
[JONH91] lista cinco limitações: True data dependency, Procedural dependency, Resource
...