SlideShare uma empresa Scribd logo
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




                                                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




                                                 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




                                  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




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




Figura 1 – Estrutura de uma arquitetura escalar genérica
                  Fonte: SHEN 2004
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




Figura 2 – Efeito das dependências no desempenho de uma arquitetura
                           superescalar
                     Fonte: STALLINGS 2002
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



diagrama do Pentium 4 da Intel:




                        Figura 3 – Diagrama do Pentium 4
                             Fonte: STALLINGS 2002
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




                                  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

Mais conteúdo relacionado

Mais procurados (20)

PDF
Processamento paralelo
Alvaro Oliveira
 
PDF
Trabalho: Arquitetura e software paralelo
Verônica Veiga
 
PPTX
Escalonamento no Windows
Felipe Costa
 
PDF
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
Karen Costa
 
PPSX
Processamento paralelo
Gabriel Nepomuceno
 
PDF
Sistemas Operacionais - Aula 05 (Concorrência)
Leinylson Fontinele
 
PDF
Arquitetura pentium
EMSNEWS
 
PDF
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Leinylson Fontinele
 
PDF
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Leinylson Fontinele
 
PPT
Gerências de Processos: Threads
Alexandre Duarte
 
PDF
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Leinylson Fontinele
 
PPT
Apostila 5 processos e threads
Paulo Fonseca
 
PPTX
Sistemas Operacionais - Aula 5 - Concorrência
Charles Fortes
 
PDF
Artigo
sergiorrm2
 
PPTX
Aula 8 semana
Jorge Ávila Miranda
 
PPTX
Processos e threads
Silvino Neto
 
PDF
Sistemas Operacionais - Aula 07 (Thread e Processos)
Leinylson Fontinele
 
PDF
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Leinylson Fontinele
 
PDF
Sistemas Distribuídos - Computação Distribuída e Paralela
Adriano Teixeira de Souza
 
PDF
Augusto loureiro sistemas microprocessados
Lorena Barreto
 
Processamento paralelo
Alvaro Oliveira
 
Trabalho: Arquitetura e software paralelo
Verônica Veiga
 
Escalonamento no Windows
Felipe Costa
 
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
Karen Costa
 
Processamento paralelo
Gabriel Nepomuceno
 
Sistemas Operacionais - Aula 05 (Concorrência)
Leinylson Fontinele
 
Arquitetura pentium
EMSNEWS
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Leinylson Fontinele
 
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Leinylson Fontinele
 
Gerências de Processos: Threads
Alexandre Duarte
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Leinylson Fontinele
 
Apostila 5 processos e threads
Paulo Fonseca
 
Sistemas Operacionais - Aula 5 - Concorrência
Charles Fortes
 
Artigo
sergiorrm2
 
Aula 8 semana
Jorge Ávila Miranda
 
Processos e threads
Silvino Neto
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Leinylson Fontinele
 
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Leinylson Fontinele
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Adriano Teixeira de Souza
 
Augusto loureiro sistemas microprocessados
Lorena Barreto
 

Semelhante a Superescalaridade (20)

PPT
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Heron Carvalho
 
PDF
[Ottoni micro05] resume
Marcio Machado Pereira
 
PDF
[Pereira ic'2011] explorando o paralelismo no nível de threads
Marcio Machado Pereira
 
PDF
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Intel Software Brasil
 
PDF
Implementação_cluster alto_desempenho_fernando_eduardo_20090726-Imetro_2013
Kanda Kassobo
 
PDF
Endereçamento de memória
Elaine Cecília Gatto
 
PPT
O Futuro dos Microprocessadores SO_Custer.ppt
ApebNetherlands
 
PDF
Sistemas Distribuídos - Computação Paralela
Adriano Teixeira de Souza
 
PDF
Sistemas Distribuídos - Computação Paralela - Introdução
Adriano Teixeira de Souza
 
PDF
Ferramentas de Programação Paralela para Arquiteturas Multicore
Helton Ritter
 
ODP
Introdução à Computação de Alto Desempenho - Parte I
Vinícius Hax
 
PDF
Arquiteturas de computadores: Paralelismo
Elaine Cecília Gatto
 
PDF
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
Luciano Palma
 
PDF
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
Intel Software Brasil
 
PDF
Evolução das CPUs
Mário Januário Filho
 
PDF
Arquitetura computadores
Alberto de Oliveira
 
PDF
Paralelização em Sistemas Computacionais por Bruno Domingues
Joao Galdino Mello de Souza
 
PDF
SistemasOperacionais-peter-jandl-jr.pdf
JoelManuel8
 
PDF
Arquitetura de Computadores - Lecom - UFMG
djonatascostsa
 
PPT
Atr cap1
Marravilha
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Heron Carvalho
 
[Ottoni micro05] resume
Marcio Machado Pereira
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
Marcio Machado Pereira
 
Palestra: Computação Paralela na SECOMP 2013 (UNIFEI)
Intel Software Brasil
 
Implementação_cluster alto_desempenho_fernando_eduardo_20090726-Imetro_2013
Kanda Kassobo
 
Endereçamento de memória
Elaine Cecília Gatto
 
O Futuro dos Microprocessadores SO_Custer.ppt
ApebNetherlands
 
Sistemas Distribuídos - Computação Paralela
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Computação Paralela - Introdução
Adriano Teixeira de Souza
 
Ferramentas de Programação Paralela para Arquiteturas Multicore
Helton Ritter
 
Introdução à Computação de Alto Desempenho - Parte I
Vinícius Hax
 
Arquiteturas de computadores: Paralelismo
Elaine Cecília Gatto
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
Luciano Palma
 
FISL14: Como domar uma fera de 1 TFlop que cabe na palma da sua mão!
Intel Software Brasil
 
Evolução das CPUs
Mário Januário Filho
 
Arquitetura computadores
Alberto de Oliveira
 
Paralelização em Sistemas Computacionais por Bruno Domingues
Joao Galdino Mello de Souza
 
SistemasOperacionais-peter-jandl-jr.pdf
JoelManuel8
 
Arquitetura de Computadores - Lecom - UFMG
djonatascostsa
 
Atr cap1
Marravilha
 
Anúncio

Mais de Jerônimo Medina Madruga (20)

PDF
Manual de Produção - Podcasts Educacionais - 2025
Jerônimo Medina Madruga
 
PDF
Manual de Produção - Videoaulas - 2025
Jerônimo Medina Madruga
 
PDF
Manual de Produção - Acessibilidade - 2025
Jerônimo Medina Madruga
 
PDF
Inteligência Artificial na Educação: O Futuro é Agora - CMP 2025
Jerônimo Medina Madruga
 
PDF
A Lógica dos Jogos_ Programando Aventuras com Python - Final - WCD 2025
Jerônimo Medina Madruga
 
PDF
Apresentações Digitais Épicas com IA! - CMP 2024
Jerônimo Medina Madruga
 
PDF
Learning analytics - UFPel Sem Distância 2024
Jerônimo Medina Madruga
 
PDF
Rock 'n' Code: Como criar música programando - I Fórum Virtual de Ciência da ...
Jerônimo Medina Madruga
 
PDF
Análise de projeto: Por que e para que - 2024
Jerônimo Medina Madruga
 
PDF
Uma (breve) introdução a visualização de dados para educadores - 2023
Jerônimo Medina Madruga
 
PDF
Away from the keyboard - Uma visão holística sobre os rumos da carreira de um...
Jerônimo Medina Madruga
 
PDF
Uma (breve) introdução ao Canva (e outras ferramentas) para educadores - 2023
Jerônimo Medina Madruga
 
PDF
Como criar conteúdo digital relevante sem perder os cabelos - 2023
Jerônimo Medina Madruga
 
PDF
Podemos repensar como ensinar programação - Uma (in)finita reflexão sobre est...
Jerônimo Medina Madruga
 
PDF
Workshop: Python e Pygame para iniciantes - IFSUL Jaguarão 2022
Jerônimo Medina Madruga
 
PDF
Como ser (im)produtivo, (i)letrado e (ir)relevante em tempos digitais - Jagua...
Jerônimo Medina Madruga
 
PDF
Do mito à razão - Pensamento mitológico X Pensamento filosófico - 2022
Jerônimo Medina Madruga
 
PDF
How to use Python to create better math lessons - Conf42 Python 2022
Jerônimo Medina Madruga
 
PDF
Como open source pode salvar a (sua) educação - URCAMP 2022
Jerônimo Medina Madruga
 
PDF
Como open source pode salvar a (sua) educação - Tchelinux Live 2022
Jerônimo Medina Madruga
 
Manual de Produção - Podcasts Educacionais - 2025
Jerônimo Medina Madruga
 
Manual de Produção - Videoaulas - 2025
Jerônimo Medina Madruga
 
Manual de Produção - Acessibilidade - 2025
Jerônimo Medina Madruga
 
Inteligência Artificial na Educação: O Futuro é Agora - CMP 2025
Jerônimo Medina Madruga
 
A Lógica dos Jogos_ Programando Aventuras com Python - Final - WCD 2025
Jerônimo Medina Madruga
 
Apresentações Digitais Épicas com IA! - CMP 2024
Jerônimo Medina Madruga
 
Learning analytics - UFPel Sem Distância 2024
Jerônimo Medina Madruga
 
Rock 'n' Code: Como criar música programando - I Fórum Virtual de Ciência da ...
Jerônimo Medina Madruga
 
Análise de projeto: Por que e para que - 2024
Jerônimo Medina Madruga
 
Uma (breve) introdução a visualização de dados para educadores - 2023
Jerônimo Medina Madruga
 
Away from the keyboard - Uma visão holística sobre os rumos da carreira de um...
Jerônimo Medina Madruga
 
Uma (breve) introdução ao Canva (e outras ferramentas) para educadores - 2023
Jerônimo Medina Madruga
 
Como criar conteúdo digital relevante sem perder os cabelos - 2023
Jerônimo Medina Madruga
 
Podemos repensar como ensinar programação - Uma (in)finita reflexão sobre est...
Jerônimo Medina Madruga
 
Workshop: Python e Pygame para iniciantes - IFSUL Jaguarão 2022
Jerônimo Medina Madruga
 
Como ser (im)produtivo, (i)letrado e (ir)relevante em tempos digitais - Jagua...
Jerônimo Medina Madruga
 
Do mito à razão - Pensamento mitológico X Pensamento filosófico - 2022
Jerônimo Medina Madruga
 
How to use Python to create better math lessons - Conf42 Python 2022
Jerônimo Medina Madruga
 
Como open source pode salvar a (sua) educação - URCAMP 2022
Jerônimo Medina Madruga
 
Como open source pode salvar a (sua) educação - Tchelinux Live 2022
Jerônimo Medina Madruga
 
Anúncio

Último (9)

PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PDF
SENAC Modelagem de Dados - Aula02 curso de ADS.pdf
JhonataLamim1
 
PDF
SENAC Modelagem de Dados - Aula01 do curso de ADSpdf
JhonataLamim1
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PDF
Apresentação sobre Funções Matemáticas e o módulo.pdf
Gabriel Vitor
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PDF
Apresentação de Manipulação de strings em Python .pdf
Gabriel Vitor
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
SENAC Modelagem de Dados - Aula02 curso de ADS.pdf
JhonataLamim1
 
SENAC Modelagem de Dados - Aula01 do curso de ADSpdf
JhonataLamim1
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Apresentação sobre Funções Matemáticas e o módulo.pdf
Gabriel Vitor
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Gestão de Mudanças - O que é e como é implementada
Gateware Group
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Apresentação de Manipulação de strings em Python .pdf
Gabriel Vitor
 

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