1. O documento apresenta conceitos sobre arquiteturas superescalares, incluindo suas características, limitações e exemplos de processadores que utilizam essa arquitetura.
2. É descrito o funcionamento básico de uma arquitetura superescalar genérica e suas principais partes.
3. As limitações da superescalaridade incluem dependências de dados, recursos e procedimentais, que podem causar atrasos na execução das instruções.
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Superescalaridade
1. UNIVERSIDADE FEDERAL DE PELOTAS
INSTITUTO DE FÍSICA E MATEMÁTICA
DEPARTAMENTO DE INFORMÁTICA
BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO
SUPERESCALARIDADE
Anderson Chollet
Bruno Machado
Jerônimo Medina Madruga
Mateus Vilar dos Santos
Trabalho de pesquisa apresentado na disciplina de
Arquitetura e Organização de Computadores II do Curso de
Bacharelado em Ciência da Computação, Instituto de Física
e Matemática, Universidade Federal de Pelotas. Professor:
Prof. José Luís Almada Güntzel, Dr.
2007
2. 2
Lista de Figuras
Figura 1 - Estrutura de uma arquitetura superescalar genérica .............................6
Figura 2 - Efeito das dependências no desempenho de uma arquitetura
superescalar ................................................................................................................8
Figura 3 - Diagrama do Pentium 4 .......................................................................10
3. 3
Sumário
Apresentação .........................................................................................................4
1. Introdução .........................................................................................................5
2. Limitações da superescalaridade .....................................................................7
3. Processadores Superescalares.........................................................................9
4. Execução fora de ordem..................................................................................11
Referências ......................................................................................................... 12
4. 4
Apresentação
O objetivo deste trabalho é apresentar conceitos sobre superescalaridade,
abrangendo desde suas características até processadores que utilizam essa
arquitetura e por fim mostrar um estudo mais aprofundado sobre a execução fora de
ordem.
5. 5
1 Introdução
Arquiteturas superescalares são arquiteturas que se utilizam do ILP
(paralelismo a nível de instrução) e do paralelismo de máquina para possibilitar a
leitura, decodificação e execução de mais de uma instrução por ciclo de clock. A
grande vantagem das arquiteturas superescalares é que seu IPC (instruções por
ciclo de clock) é superior a um, ocasionando na maioria dos casos em um
desempenho elevado em comparação com as outras arquiteturas. Mas para que
seja possível esse aumento no desempenho é necessário à utilização de diversos
componentes especiais, que constituem essa arquitetura e que serão analisados
nesse momento:
• Um dos primeiros componentes diferenciais desta arquitetura é seu sistema
de busca de instruções, pois visto que existem múltiplas unidades de
execução, o sistema de busca deverá ser capaz de prover múltiplas
instruções para conseguir usufruir ao máximo da capacidade de execução em
paralelo. O sistema de busca também pode ou não contar com uma lógica de
execução especulativa, para buscar as prováveis instruções a serem
executadas após uma instrução de desvio.
• Outro componente importante é a unidade de decodificação, que devera ter a
capacidade de buscar diversos operandos por ciclo de clock, de acordo com o
número de operandos máximos de uma instrução realizada pela arquitetura
em questão e pelo número de unidades funcionais presentes.
• Para resolver problemas de dependências diretas, também está presente
nesta arquitetura uma janela de instruções, que é um buffer que guarda as
instruções a serem executadas enquanto seus operandos não estão prontos
devido a ocorrências dessas dependências, sendo que essa janela localiza-se
entre os estágios de decodificação e execução.
• Para garantir o paralelismo na execução das instruções, como já citado
anteriormente, é necessário múltiplas unidades de execução pipeline,
possibilitando assim que as diversas instruções despachadas tenham uma
unidade de execução para cada uma delas.
Podemos ver alguns desses componentes na figura abaixo que representa uma
estrutura de uma arquitetura escalar genérica:
6. 6
Figura 1 – Estrutura de uma arquitetura escalar genérica
Fonte: SHEN 2004
7. 7
2 Limitações da superescalaridade
Apesar do evidente ganho em desempenho provido por uma arquitetura
superescalar, essa arquitetura também tem suas limitações. Elas são provenientes
de alguns problemas clássicos da execução de instruções em pipelines, outros
surgem dos modelos superescalares que suportam execução fora de ordem e
alguns são relativos a particularidades de certas arquiteturas. Dentre essas
limitações podemos destacar as seguintes:
Conflito por recursos: ocorre quando duas ou mais instruções concorrem pelo
mesmo recurso ao mesmo tempo, como acesso a uma unidade funcional. Para a
solução desse problema se propõe o aumento de unidades funcionais em muitos
casos.
Dependência procedimental: causada quando a presença de instruções de
desvio ou instruções de tamanho variável. No caso das instruções de desvio, não se
pode executar instruções posteriores a um desvio ao mesmo tempo que se executa
instruções anteriores ao desvio, e no caso de instruções de tamanho variável, é
necessário decodificar toda a instrução para descobrir o número de buscas
necessária para a realização da mesma, evitando assim buscas simultâneas.
Dependência de dados: ocorre quando um dado a ser utilizado em uma
instrução está sendo alterado pela instrução anterior ao mesmo, fazendo com que
essa instrução só possa ser executada quando a anterior já tiver terminado.
Antidependência: Ocorre quando uma instrução altera um dado que esta
sendo usado em uma instrução anterior a ela. Para evitar que o dado seja alterado
antes do término da instrução anterior, a instrução em questão só poderá ser
executada após o término da anterior.
Dependência de saída: ocorre quando duas instruções alteram o mesmo
dado, e com isso dependendo da ordem em que são executadas, pode ocasionar
uma alteração não planejada no mesmo. Esse tipo de problema poderá ocorrer
somente em sistemas onde a ordem das instruções pode ser revertida, que é o caso
de execução fora de ordem que será abordado futuramente.
Todas essas limitações acabam por ocasionar atrasos na execução das
instruções, e isso pode ser exemplificado pelo gráfico mostrado a seguir:
8. 8
Figura 2 – Efeito das dependências no desempenho de uma arquitetura
superescalar
Fonte: STALLINGS 2002
9. 9
3 Processadores Superescalares
O primeiro computador a ter características superescalares foi o
supercomputador CDC 6600, desenvolvido por Seymor Cray e tendo suas primeiras
unidades funcionais em 1964.
Devido ao avanço da tecnologia RISC, que possibilitava a utilização de
instruções simples e a inclusão de diversas unidades funcionais facilmente para os
projetos da época, a superescalaridade chegou aos microprocessadores comerciais
de um único chip finalmente em meados da década de 90, com o i960 da Intel (em
1988) e o 29050 da AMD.
A partir disso começou a se implementar esse tipo de arquitetura em grande
parte dos projetos desenvolvidos na época, como a arquitetura p6 da Intel,
arquitetura na qual são baseados os processadores pentium pro e pentium II, que
utilizava instruções CISC que eram executadas sobre uma micro-arquitetura
superescalar RISC.
Já a arquitetura PowerPC, teve desde seu primeiro representante as
características superescalares embutidas no projeto, visto que esse primeiro
processador , o PowerPC 601, era baseado na arquitetura RS/6000, que também
era superescalar.
Durante essa evolução de processadores superescalares, houve inúmeros
tipos de projetos diferentes, mas podemos classificá-los em três grandes categorias
relacionadas à sua complexidade quanto ao despacho e a execução de instruções:
• Superescalar Estático:
Esses processadores despacham e executam as instruções na ordem do
programa.
• Superescalar Dinâmico:
Essas máquinas permitem a execução fora de ordem, mas geralmente
despacham as instruções na ordem do programa.
• Superescalar Dinâmico com execução especulativa:
Similares ao anterior, mas com a habilidade de prever as instruções que
provavelmente serão executadas após uma instrução e desvio.
Como exemplo de uma arquitetura superescalar atual, ilustramos aqui o
10. 10
diagrama do Pentium 4 da Intel:
Figura 3 – Diagrama do Pentium 4
Fonte: STALLINGS 2002
11. 11
4 Execução fora de ordem
Uma das questões que pode tornar extremamente complexa a implementação
de uma arquitetura superescalar é a possibilidade de haver execução fora de ordem,
ou seja, se as instruções poderão ser executadas fora da ordem prevista pelo
programa.
Esse recurso permite que casos onde existiriam conflitos de dados ou
problemas parecidos sejam contornados seja por técnicas de software ou hardware,
e assim aumenta o desempenho da arquitetura em questão, visto que os atrasos
decorrentes desses problemas diminuirão consideravelmente, além de também
permitir técnicas mais avançadas de predição de desvio.
O grande problema ocasionado pela execução fora de ordem é a
inconsistência de dados, ou seja, dados serem alterados de uma forma não prevista
pelo programa, devido a alterações na ordenação das instruções a serem
executadas. Com isso, é exigido um sistema mais complexo ainda para verificação
de dependências nas instruções a serem executadas, como as técnicas de
renomeação de registradores, buffer de reordenamento e a janela de instruções,
para assegura que não haverá prejuízos relativos a execução não-ordenada do
código.
12. 12
Referências
SUPERSCALAR. Disponível em:
<http://en.wikipedia.org/wiki/Superscalar> Acessado em 10 fev. 2007, 14:20:00.
PATTERSON, David A.; HENNESSY, John. Organização e Projeto de
Computadores: A Interface Hardware/Software. 3ª Edição. Rio de Janeiro:
Elsevier, 2005.
SUPERSCALAR PROCESSORS. Disponível em:
<http://www.cs.swan.ac.uk/~csneal/HPM/superscalar.html> Acessado em 9 fev.
2007, 18:33:00.
SHEN, Jonh P. Modern Processors Design: Fundamentals of Superscalar
Processors (Electrical and Computer Engineering). 1ª Edição, McGraw-Hill, Nova
York, 2004
STALLINGS, William. Computer Organization and Architecture – Design for
Performance. 6ª Edição. Nova Jersey: Prentice Hall, 2002.
ARQUITETURAS SUPERESCALARES. Disponível em:
<http://equipe.nce.ufrj.br/gabriel/arqcomp2/Superscalar.pdf> Acessado em 9 fev.
2007, 17:50:00.
PATTERSON, David A.; HENNESSY, John, Computer Architecture: A
Quantitative Approach. 3ª Edição, Morgan Kaufmann, Nova York, 2003