Unidade 4 Paralelismo em Nível de Instrução Filipe Moura de Lima Gutenberg Pessoa Botelho Neto Thiago Vinícius Freire de Araújo Ribeiro
Sumário Introdução O Pipeline Pipeline em diferentes CPUs ARM Cortex-A9 Família Intel para PCs Servidores Itanium 2 Referências
Introdução Pipeline de instrução Funciona analogamente a uma linha de montagem industrial onde o produto passa por vários estágios da produção e vários produtos podem ser trabalhados simultaneamente Paralelismo em nível de instruções Grau em que a instruções podem ser executadas em paralelo
ARM Pipeline do Cortex-A9
ARM
ARM
Parceiros
Cortex-A9 Solução ideal para projetos que exigem alto desempenho com baixo consumo de energia Disponível como um único núcleo ou configurável até quatro (2GHz) Sua configuração permite implementá-lo em várias classes de dispositivos como: redes de alto desempenho, computação móvel e automotiva
Cortex-A9
Características Pipeline Alta eficiência Superescalar Emissão de várias instruções Fora de ordem 8 estágios Previsão de desvio Renomeação de registradores ULA / MUL FPU / NEON
Pipeline ALU WB Fe1 Fe2 Fe3 De Re MUL WB Is Br FPU NEON WB Add WB
Intel Atom vs Cortex-A9 1600MHz Singlecore GPU 500MHz Dualcore X ARMFlix. Cortex-A9 browsing example. < http://www.youtube.com/watch?v=w4w6lvql3qa >
Família Intel para PCs Ou, os diferentes estágios da evolução dos pipelines nos processadores Intel para computação pessoal.
386 e 486 Primeiros processador Intel a utilizar paralelismo em nível de instrução A Intel afirma que o 386 era capaz de executar instruções em paralelo, mas não deixa claro qual técnica era utilizada. O 486 introduziu um pipeline de 5 estágios para decodificação e execução de instruções.
Pentium Utilizava dois pipelines para execução de instruções. Predição de desvio. Ao decodificar uma instrução de desvio, o processador decide qual dos possíveis caminhos de execução carregar no pipeline. Predição correta: próximas instruções já estão no pipeline. Predição incorreta: ao menos eu tentei.
Pentium Pro Análise de fluxo de dados Detecta dependência de dados e identifica possibilidades para execução fora de ordem. Execução fora de ordem As microinstruções são executadas de modo que os recursos do processador sejam utilizados de forma mais eficiente.
Pentium Pro Melhoria na predição de desvios Execução especulativa Executa instruções após um desvio, antes de o próprio desvio ser avaliado. Se o caminho errado for escolhido, o resultado é descartado. 12 estágios de pipeline
Pentium Pro
Pentium 4 Microarquitetura NetBurst Até 126 instruções simultâneas, nas unidades de execução fora de ordem e execução especulativa.
Pentium 4
Core 14 estágios de pipeline 4 decodificadores de instrução Até 5 instruções decodificadas por ciclo. Combinação de macro e microinstruções Execução de até 6 micro-operações por ciclo Até 4 micro-operações finalizadas por ciclo
Core
Intel Itanium 2
Intel Itanium 2 Desenvolvido em conjunto pela HP e Intel Primeira versão lançada em 2002 Idealizado para servidores corporativos Buscava solucionar os problemas de performance do Itanium original Memória Itanic Caro e lento Principal competidor: AMD Opteron
Arquitetura EPIC Pesquisada desde 1989 Buscava superar as limitações das arquiteturas RISC Tinha o paralelismo em nível de instrução como foco VLIW (Very Large Instruction Word) Instruções com mais de 32 bits Armazenamento de instruções em bundles
Pipeline 8 estágios Menos do que no Itanium original O tamanho menor do pipeline permite que seja preenchido mais rapidamente em caso de erro de previsão Execução de até 6 instruções por clock Dependência do compilador para muitas tarefas de paralelismo Execução em ordem, término fora de ordem Utiliza uma tabela (scoreboard) para detectar dependências
Pipeline
Problema com previsões de desvios Previsões erradas são percebidas após já estarem avançadas no pipeline A correção exige mudanças no pipeline Invalida muitas das instruções previamente armazenadas
Melhorias na execução de desvios Execução em paralelo dos possíveis caminhos de execução (predication) Armazena resultados em registradores específicos Ao ser descoberto o caminho correto, o resultado já está armazenado O resultado do desvio não tomado é descartado Vários caminhos podem ser testados Até 6 desvios por ciclo Útil para desvios switch (multi-way branching)
Predication
Predication
Melhorias na execução de desvios Desvio atrasado Testa a condição do desvio antes da instrução ser carregada Permite que o teste do desvio seja feito logo para que o hardware conheça a direção correta do desvio antes da instrução chegar
Software Pipeline Utilização de pipeline para executar múltiplas iterações de um loop simultaneamente Três fases Prolog preenchimento do pipeline Kernel pipeline cheio Epilog esvaziamento do pipeline Requer várias adaptações no loop original
Software Pipeline
Conclusão Itanium 2 Várias melhorias para o pipeline A quantidade de diferentes pesquisas necessárias para essas melhorias gerou atrasos no projeto Aumento da complexidade da arquitetura Forte dependência do desempenho do compilador Difícil prever o comportamento em tempo de execução
Referências Hewlett Packard. (2002). Inside the Intel Itanium 2 Processor. Technical White Paper. Layman, M. Sanders, A. Still, A. Lecture Notes: Advanced Processor Architecture Itanium. < http://www.cs.virginia.edu/~skadron/cs451/itanium/itanium.ppt > McNairy, C. and Soltis, D. (2003). Itanium 2 Processor Microarchitecture. IEEE Micro, vol. 23, no. 2, pp. 44-55. Naffzinger, S. D. Colon-Bonet, G. Fischer, T. Riedlinger, R. Sullivan, T. J. Grutkowski, T. (2002). "The implementation of the Itanium 2 microprocessor". IEEE Journal of Solid-State Circuits, vol. 37, no. 11, pp. 1448 1460.
Referências Intel. (2011). Intel 64 and IA-32 Architectures Software Developer s Manual. Vol 1: Basic Architecture; Manual. Celio, C. and Hottelier, T. Design Space Exploration of ILP Engines Optimized for Embarassingly Sequential Codes. <http://www.cs.berkeley.edu/~kubitron/courses/cs252- S10/projects/reports/project4_report.pdf> ARM. Cortex -A Series Programmer s Guide. <http://www.arm.com> ARM. Cortex-A9 Processor Architecture. <http://www.arm.com> Stallings, W. Arquitetura e organização de computadores 8ª edição São Paulo: Pearson Prentice Hall, 2010.