SlideShare uma empresa Scribd logo
1 de 12
Baixar para ler offline
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

Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo  Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo Verônica Veiga
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no WindowsFee Kosta
 
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVOINTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVOKaren Costa
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Leinylson Fontinele
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentiumEMSNEWS
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
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...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...Leinylson Fontinele
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: ThreadsAlexandre Duarte
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Leinylson Fontinele
 
Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threadsPaulo Fonseca
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaCharles Fortes
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threadsSilvino Neto
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Leinylson Fontinele
 
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)Leinylson Fontinele
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
Augusto loureiro sistemas microprocessados
Augusto loureiro   sistemas microprocessadosAugusto loureiro   sistemas microprocessados
Augusto loureiro sistemas microprocessadosLorena Barreto
 

Mais procurados (20)

Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo  Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo
 
Escalonamento no Windows
Escalonamento no WindowsEscalonamento no Windows
Escalonamento no Windows
 
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVOINTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES PROF. IVO
 
Processamento paralelo
Processamento paraleloProcessamento paralelo
Processamento paralelo
 
Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)Sistemas Operacionais - Aula 05 (Concorrência)
Sistemas Operacionais - Aula 05 (Concorrência)
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentium
 
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
Sistemas Operacionais - Aula 08 (Sincronização e Comunicação entre Processos)
 
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: Threads
 
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
Sistemas Operacionais - Aula 03 (Conceitos de hardware e software)
 
Apostila 5 processos e threads
Apostila 5   processos e threadsApostila 5   processos e threads
Apostila 5 processos e threads
 
Sistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - ConcorrênciaSistemas Operacionais - Aula 5 - Concorrência
Sistemas Operacionais - Aula 5 - Concorrência
 
Artigo
ArtigoArtigo
Artigo
 
Aula 8 semana
Aula 8 semanaAula 8 semana
Aula 8 semana
 
Processos e threads
Processos e threadsProcessos e threads
Processos e threads
 
Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)Sistemas Operacionais - Aula 07 (Thread e Processos)
Sistemas Operacionais - Aula 07 (Thread e Processos)
 
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
Sistemas Operacionais - Aula 04 - Prática 1 - (SOSim)
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Augusto loureiro sistemas microprocessados
Augusto loureiro   sistemas microprocessadosAugusto loureiro   sistemas microprocessados
Augusto loureiro sistemas microprocessados
 

Semelhante a Superescalaridade

Trabalho sobre processadores
Trabalho sobre processadoresTrabalho sobre processadores
Trabalho sobre processadoresTiago
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentiumTiago
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaLincoln Lamas
 
Implementação de Serviços de Rede - Aula 1 - Estrutura do Sistema Operacional
Implementação de Serviços de Rede - Aula 1 - Estrutura do Sistema OperacionalImplementação de Serviços de Rede - Aula 1 - Estrutura do Sistema Operacional
Implementação de Serviços de Rede - Aula 1 - Estrutura do Sistema OperacionalCleber Fonseca
 
Automação projeto de semáforo
Automação projeto de semáforoAutomação projeto de semáforo
Automação projeto de semáforoantonio sena
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia J Chaves Silva
 
Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4Luis Ferreira
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Carlos Roberto IV
 
Informática para Internet - Informática Aplicada - Aula 07
Informática para Internet - Informática Aplicada - Aula 07Informática para Internet - Informática Aplicada - Aula 07
Informática para Internet - Informática Aplicada - Aula 07Anderson Andrade
 

Semelhante a Superescalaridade (20)

Trabalho sobre processadores
Trabalho sobre processadoresTrabalho sobre processadores
Trabalho sobre processadores
 
Arquitetura de-computadores-apostila-avançada completa
Arquitetura de-computadores-apostila-avançada completaArquitetura de-computadores-apostila-avançada completa
Arquitetura de-computadores-apostila-avançada completa
 
Arquitetura pentium
Arquitetura pentiumArquitetura pentium
Arquitetura pentium
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
 
Implementação de Serviços de Rede - Aula 1 - Estrutura do Sistema Operacional
Implementação de Serviços de Rede - Aula 1 - Estrutura do Sistema OperacionalImplementação de Serviços de Rede - Aula 1 - Estrutura do Sistema Operacional
Implementação de Serviços de Rede - Aula 1 - Estrutura do Sistema Operacional
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Arquitetura 8 3
Arquitetura 8 3Arquitetura 8 3
Arquitetura 8 3
 
Atps sistemas operacionais
Atps sistemas operacionaisAtps sistemas operacionais
Atps sistemas operacionais
 
Clusters, o que é?
Clusters, o que é?Clusters, o que é?
Clusters, o que é?
 
Automação projeto de semáforo
Automação projeto de semáforoAutomação projeto de semáforo
Automação projeto de semáforo
 
Multithreaded tecnologia
Multithreaded tecnologia Multithreaded tecnologia
Multithreaded tecnologia
 
Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4Arquitetura de computadores Módulo 4
Arquitetura de computadores Módulo 4
 
Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015Relatório seminários de AOC - 19 de julho de 2015
Relatório seminários de AOC - 19 de julho de 2015
 
SDAC 12º - M9 TGEI
SDAC 12º - M9 TGEISDAC 12º - M9 TGEI
SDAC 12º - M9 TGEI
 
Módulo de Estudos em Tempo Real
Módulo de Estudos em Tempo RealMódulo de Estudos em Tempo Real
Módulo de Estudos em Tempo Real
 
Resumo assembly x86 16 bits
Resumo assembly x86 16 bitsResumo assembly x86 16 bits
Resumo assembly x86 16 bits
 
gabarito.pdf
gabarito.pdfgabarito.pdf
gabarito.pdf
 
Projeto BUS-BUS
Projeto BUS-BUSProjeto BUS-BUS
Projeto BUS-BUS
 
Informática para Internet - Informática Aplicada - Aula 07
Informática para Internet - Informática Aplicada - Aula 07Informática para Internet - Informática Aplicada - Aula 07
Informática para Internet - Informática Aplicada - Aula 07
 
Apresentação do Curso
Apresentação do CursoApresentação do Curso
Apresentação do Curso
 

Mais de Jerônimo Medina Madruga

PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019Jerônimo Medina Madruga
 
Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019Jerônimo Medina Madruga
 
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019Jerônimo Medina Madruga
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Jerônimo Medina Madruga
 
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...Jerônimo Medina Madruga
 
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...Jerônimo Medina Madruga
 
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...Jerônimo Medina Madruga
 
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...Jerônimo Medina Madruga
 
Rock And Code: Como criar música programando
Rock And Code: Como criar música programandoRock And Code: Como criar música programando
Rock And Code: Como criar música programandoJerônimo Medina Madruga
 
Remember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalhoRemember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalhoJerônimo Medina Madruga
 
Como se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul BagéComo se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul BagéJerônimo Medina Madruga
 
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...Jerônimo Medina Madruga
 
Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017Jerônimo Medina Madruga
 
Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017Jerônimo Medina Madruga
 
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017Jerônimo Medina Madruga
 
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...Jerônimo Medina Madruga
 
Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016Jerônimo Medina Madruga
 
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...Jerônimo Medina Madruga
 
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...Jerônimo Medina Madruga
 

Mais de Jerônimo Medina Madruga (20)

PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
PyGame Over: Insert coins to learn with Python - Tchelinux Porto Alegre 2019
 
Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019Rock & Code - Como criar música programando - Tchelinux pelotas 2019
Rock & Code - Como criar música programando - Tchelinux pelotas 2019
 
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
Rock 'n' Code - Como criar música programando - Tchelinux Camaquã 2019
 
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
Desenvolvendo Jogos com PyGame - Jerônimo Medina Madruga - Tchelinux 2019 Rio...
 
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...Dê a cara a tapa  como se destacar no mercado de trabalho - Tchelinux Sant'An...
Dê a cara a tapa como se destacar no mercado de trabalho - Tchelinux Sant'An...
 
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
Rock 'n' Code: Como criar música programando - I Semana Acadêmica da Licencia...
 
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
Do Zero ao Python - I Semana Acadêmica da Licenciatura em Computação - IFSul ...
 
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
Desmistificando a gamificação: como "jogos" podem potencializar a educação - ...
 
Rock And Code: Como criar música programando
Rock And Code: Como criar música programandoRock And Code: Como criar música programando
Rock And Code: Como criar música programando
 
Do zero ao python em 40 minutos!
Do zero ao python em 40 minutos!Do zero ao python em 40 minutos!
Do zero ao python em 40 minutos!
 
Remember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalhoRemember the name: Como se tornar um rockstar no mercado de trabalho
Remember the name: Como se tornar um rockstar no mercado de trabalho
 
Como se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul BagéComo se tornar um programador melhor - Saci 2017 IFSul Bagé
Como se tornar um programador melhor - Saci 2017 IFSul Bagé
 
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...Dê a cara a tapa  5 estratégias para se sobressair no mercado e ser um profis...
Dê a cara a tapa 5 estratégias para se sobressair no mercado e ser um profis...
 
Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017Aprendendo a aprender software livre - Tchelinux Bagé 2017
Aprendendo a aprender software livre - Tchelinux Bagé 2017
 
Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017Moodle direto das trincheiras - Tchelinux UCPel 2017
Moodle direto das trincheiras - Tchelinux UCPel 2017
 
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
Aprendendo Software Livre como Neo Aprendeu Kung Fu - Tchelinux UCPel 2017
 
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
Tudo que você queria saber sobre software livre mas não tinha coragem de perg...
 
Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016Aprendendo a aprender software livre - Tchelinux Bagé 2016
Aprendendo a aprender software livre - Tchelinux Bagé 2016
 
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
Need for (web) speed: Uma introdução a otimização de velocidade de sites e We...
 
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...Dê a Cara a Tapa: Uma Palestra Intrigante sobre Oceano Azul, Cauda Longa, Mer...
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