Anotações da Parte 2



Documentos relacionados
Desempenho DESEMPENHO DE COMPUTADORES

CAPÍTULO 2 DESEMPENHO

Arquitetura de Computadores I

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Arquitetura de Computadores. Ivan Saraiva Silva

Organização de Computadores

Organização de Computadores

Arquitetura de Computadores

Desempenho de Computadores

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Aula 5 Consolidando Conhecimentos de Desempenho e Resumindo Prof. Julio Saraçol

Visão Geral da Arquitetura de Computadores. Prof. Elthon Scariel Dias

Capítulo 1. This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder.

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

Sistemas Computacionais II Professor Frederico Sauer

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

ARQUITETURA DE COMPUTADORES

Avaliando e Compreendendo o Desempenho. Capítulo 4

Técnicas de Manutenção de Computadores

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Introdução à Computação: Arquitetura von Neumann

Os textos nestas caixas foram adicionados pelo Prof. Joubert

Introdução à Arquitetura de Computadores

Aula 26: Arquiteturas RISC vs. CISC

MAC Organização de Computadores Gargalo de Memória

Medidas de Desempenho e a Lei de Amdahl

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Informática I. Aula 5. Aula 5-13/05/2006 1

Capítulo 1 Introdução

INSTITUTO DE EMPREGO E FORMAÇÃO PROFISSIONAL, I.P.

Edeyson Andrade Gomes

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Arquitetura e Organização de Computadores 2. Apresentação da Disciplina

Organização e Arquitetura de Computadores I. Introdução. Ivan Saraiva Silva Leonardo Casillo

1. NÍVEL CONVENCIONAL DE MÁQUINA

Arquitetura e Organização de Computadores

BARRAMENTO DO SISTEMA

O quê um Processador e qual a sua função?

CPU Unidade Central de Processamento. História e progresso

Sistema de Computação

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Algumas características especiais

ci212 desempenho Avaliação de Desempenho

Processadores. Guilherme Pontes

Organização e Arquitetura de Computadores I. de Computadores

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES


Microprocessadores. Prof. Leonardo Barreto Campos 1

SIS17 - Arquitetura de Computadores. Introdução (Parte III)

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 2 Evolução e desempenho do computador

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitetura de Computadores

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

A história do Processadores O que é o processador Características dos Processadores Vários tipos de Processadores

Curso de Instalação e Gestão de Redes Informáticas

Arquitetura e Organização de Computadores. Capítulo 0 - Introdução

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

Arquitetura e Organização de Computadores 2

Medição do Desempenho

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Organização e Arquitetura de Computadores I. de Computadores

ARQUITETURA DE COMPUTADORES

Avaliação de Desempenho

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

William Stallings Arquitetura e Organização de Computadores 8 a Edição. retrospectiva Pearson Prentice Hall. Todos os direitos reservados.

O que é Arquitetura de Computadores?

Previsão do Desempenho. AC1 13ª aula Previsão do Desempenho 1

Organização de Computadores (Aula 3) Componentes de um Computador Unidade Central de Processamento (CPU)

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

ARQUITETURA DE COMPUTADORES

Processadores clock, bits, memória cachê e múltiplos núcleos

RISC X CISC - Pipeline

Arquitetura de Computadores. por Helcio Wagner da Silva

Organização de Computadores 1

RISC - Reduced Instruction Set Computer

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

SIS17-Arquitetura de Computadores

Fundamentos de Hardware

Conceitos e Evolução Capítulos 1 e 2

Introdução a Informática. Prof.: Roberto Franciscatto

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

29/3/2011. Primeira unidade de execução (pipe U): unidade de processamento completa, capaz de processar qualquer instrução;

Arquitetura de Von Neumann e os Computadores Modernos

Computador Eletrônico Digital. Organização de Computadores (Aula 3) Componentes de um Computador (1) É um sistema composto por:

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Informática I. Aula 4. Aula 4-11/09/2006 1

ARQUITETURA DE COMPUTADORES

ARTIGO IV PRINCIPAIS PARTES DA CPU

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Transcrição:

Anotações da Parte 2 OBS: Essas anotações são adaptações do material suplementar (apresentações PPT) ao Livro do Hennessy e Patterson, complementado com material de suporte do Livro do Stallings. Supõe-se que os estudantes tenham noções de lógica digital e de linguagem assembly para o entendimento das aulas. 1

Desempenho/Performance Implica em: Medir, reportar e sumarizar Fazer coisas inteligentes Usar para marketing Questões: 1. Por que alguns hardwares são melhores que outros para diferentes programas? 2. Quais fatores de desempenho são ligados ao hardware? (i.e., preciso de uma nova máquina ou de um novo sistema operacional?) 3. Como o conjunto de instruções pode afetar o desempenho da máquina? 2

Qual desses aviões tem o melhor desempenho? Avião Passageiros Alcance (mi) Velocidade (mph) Boeing 737-100 101 630 598 Boeing 747 470 4150 610 BAC/Sud Concorde 132 4000 1350 Douglas DC-8-50 146 8720 544 Quanto o Concorde é mais rápido 747? Quanto o 747 é maior que Douglas DC-8? Qual o melhor avião? Questão-chave: Como comparar o desempenho de arquiteturas diferentes? Que parâmetros devem ser utilizados, como isolar o efeito de cada um deles, métrica usada,... Ver: TOP500 - mais poderosos supercomputadores http://en.wikipedia.org/wiki/top500#top_10_ranking 3

Desempenho do Computador = TEMPO, TEMPO, TEMPO Tempo de Resposta (latência) Quanto tempo leva minha tarefa para rodar? Quanto tempo leva a execução da minha tarefa? Quanto tempo devo esperar para uma consulta a uma base? Vazão (Throughput) Quantas tarefas a máquina pode rodar por vez? Qual é a taxa de execução? Quanto trabalho é feito? Um upgrade em uma máquina com um novo processador melhora o quê? Uma nova máquina na rede do laboratório melhora o quê? 4

Tempo de Execução Tempo gasto Leva em conta tudo (acesso a disco e memória, I/O, etc.) Um número útil, mas às vezes não tão bom para propósitos de comparação Tempo de CPU (CPU time) Não conta tempo de I/O nem tempo gasto em outros programas Pode ser dividido em tempo do sistema e tempo do usuário NOSSO FOCO: Tempo de CPU do usuário Tempo gasto apenas na execução das instruções que estão dentro do programa (código compilado) 5

Definição de Desempenho do Livro/Curso Para algum programa rodando na máquina X, Desempenho X = 1 / Tempo-de-Execução X X é N vezes mais rápida que Y" Desempenho X / Desempenho Y = N OU Tempo-de-Execução Y / Tempo-de-Execução X = N Problema: Máquina A roda um programa em 20s Máquina B roda o mesmo programa em 25s Como comparar os desempenhos? 6

Ciclos de Clock Ao invés de observar o tempo de execução em segundos, Hennessy e Patterson preferem usar ciclos: seconds program cycles program seconds cycle Ninst program cycle inst seconds cycle Pulsos de Clock indicam quando iniciar/terminar atividades (isto é uma abstração para facilitar o entendimento do funcionamento...): clock1 clock2 clock3... time Tempo de ciclo = Tempo entre pulsos = segundos/ciclo Taxa de clock (frequência) = ciclos/segundo (1 Hz = 1 ciclo/s) Um computador com clock de 200 MHz tem um tempo de ciclo de 1 200 10 6 10 9 5 s 7

Como melhorar o desempenho? seconds program cycles program seconds cycle Então, para melhorar o desempenho (mantendo-se todo o resto inalterado) pode-se pensar em reduzir: O Número de clocks requeridos pelo programa, ou Tempo do ciclo de clock (ou seja, aumentar a taxa de clock!) 8

1st instruction 2nd instruction 3rd instruction 4th 5th 6th... Quantos clocks são requeridos por um programa? Podemos assumir que No. de ciclos = No. de instruções? time Esta afirmação é incorreta: Diferentes instruções gastam tempos diferentes em máquinas diferentes. Por que? Estas são instruções de máquina, não linhas de código em C. 9

Diferentes no. de ciclos para diferentes instruções time Multiplicação gasta mais tempo que adição Operações de ponto flutuante são mais lentas que as de inteiros Acesso à memória gasta mais tempo que acesso a registradores Ponto importante: mudanças no tempo de ciclo podem alterar o número de ciclos exigidos para executar cada uma das classes de instruções anteriores (como será visto mais tarde...) 10

Exemplo Nosso programa favorito roda em 10s no computador A, o qual tem um clock de 4 GHz. Nós estamos tentando ajudar um projetista de computadores a construir uma nova máquina B, que irá rodar o mesmo programa em 6s. O projetista pode usar uma nova tecnologia (gastar muito mais) para aumentar substancialmente a taxa de clock. Porém, ele nos informa que isso irá afetar todo o projeto do restante da CPU, de forma que máquina B irá exigir 1.2 vezes ciclos a mais de clock que a máquina A para execução do programa. Qual a taxa de clock deveria ser o buscada pelo projetista? Calma, calma... Isto pode ser respondido utilizando alguns princípios fundamentais propostos no livro texto... Aprenderemos isso mais tarde... 11

Já que entendemos o que ciclos representam Um programa irá exigir: Um certo no. de instruções (instruções de máquina) Um certo no. de ciclos Um certo no. de segundos Nós temos um vocabulário para relatar essas quantidades: Tempo de ciclo (segundos / ciclo) Taxa de clock (ciclos / segundo) CPI (Ciclos Por Instrução cycles per instruction) Uma aplicação com uso intensivo de floating points tem CPI alto MIPS (Milhões de Instruções Por Segundo) Poderia ser bem elevado para programas usando instruções simples do que mais complexas FLOPS? 12

Desempenho Desempenho está intimamente ligado ao tempo de execução Outras variáveis também podem ser usadas para medir desempenho: No. de ciclos para executar um programa? No. de instruções um programa? No. de ciclos por segundo (frequência de clock)? No. médio de ciclos por instrução (CPI)? No. médio de instruções por segundo? Erro comum: pensar que APENAS UMA destas variáveis é indicativa de desempenho quando ela sozinha realmente NÃO É. Mais recentemente, outras preocupações apareceram... 13

Dissipação e Consumo Preocupações mais recentes: Em Novembro de 1971, a Intel lançou o 1o. microprocessador em um único chip do mundo, o Intel 4004. Ele tinha 2.300 transistores, rodava com um clock de 740 KHz e executava 60.000 instruções por segundo, enquanto dissipava 0.5 W. Os chips microprocessadores atuais empregam bilhões de transistores, incluem múltiplos cores de processamento em uma única pastilha de silício, rodam com clocks da ordem de Giga Hertz, e exibem um desempenho superior a 4 milhões de vezes ao do 4004 original. Fonte: Andrew Danowitz, Kyle Kelley, James Mao, John P. Stevenson, Mark Horowitz. CPU DB: Recording Microprocessor History. Apr. 2012. URL: http://queue.acm.org/detail.cfm?id=2181798 Computação móvel, ubíqua, sensores. Como comparar arquiteturas tão diferentes? Dê uma olhada em http://cpudb.stanford.edu/ 14

Exemplo de CPI x desempenho Suponha que existam 2 implementações possíveis para um mesmo Conjunto de Instruções (Instruction Set Architecture ou ISA). Para um certo programa: Maq. A tem um tempo de ciclo de clock de 10 ns e um CPI de 2.0 Maq. B tem um tempo de ciclo de clock 20 ns e um CPI de 1.2 Qual máquina roda mais rápido o programa, e o quanto é mais rápida? Se 2 máquinas tiverem o mesmo ISA, qual das variáveis (taxa de clock, CPI, tempo de execução, No. de instruções,...) será sempre idêntica? 15

Exemplo do No. de instruções x desempenho Um projetista de compilador deve decidir entre 2 sequências de código para uma máquina X. Baseado na implementação do HW, existem 3 classes de instruções: Classe A B C Ciclos 1 2 3 A 1a. sequência de código tem 5 instruções: 2 de A, 1 de B e 2 de C A 2a. sequência tem 6 instruções: 4 de A, 1 de B e 1 de C Qual sequência é mais rápida? Em quanto? Qual é o CPI para cada sequência? 16

Exemplo MIPS x desempenho Dois diferentes compiladores estão sendo testados para uma máquina com 1 GHz, com 3 diferentes classes de instruções: Classe A, Classe B e Classe C, as quais requerem 1, 2 e 3 ciclos (respectivamente). Ambos compiladores são usados para produzir um código para um software grande porte. O Código do 1o. compilador usa 5 Milhões de instruções Classe A, 2 Milhões de Classe B e 2 Milhões de Classe C. O Código do 2o. compilador usa 10 Milhões de instruções Classe A, 1 Milhão de Classe B e 1 Milhão de Classe C. Qual é a sequência mais rápida de acordo com o valor MIPS? Qual é a mais rápida de acordo com o tempo de execução? 17

Benchmarks Desempenho é melhor estimado usando-se uma aplicação real Usar programas com workloads típicos Ou, usar classes de aplicações típicas esperadas (compiladores, editores, aplicações científicas, gráficas, etc.) Pequenos benchmarks Interessantes para arquitetos e designers, simples para padronizar e ser de uso livre para todos SPEC (System Performance Evaluation Cooperative)...founded in 1988 by a small number of workstation vendors who realized that the marketplace was in desperate need of realistic, standardized performance tests 1ª geração SPEC CPU89 Fabricantes entraram num acordo para definir um conjunto de programas e entradas reais para avaliação Usado livremente por todos Indicador valioso de desempenho (e tecnologia de compilação) 18

Benchmarks SPEC CPU2006 (Standard Performance Evaluation Corporation) URL: http://www. spec.org/cpu2006/results/ 5ª geração de pacotes SPEC Aplicações com uso intensivo do processador 17 programas FP (C, C++, Fortran) e 12 INT (C, C++) Atualmente, outros SPEC [http://www.spec.org/spec/]: SPECjvm98: Java SPECweb99: servidores WWW SPECmail2001: servidor de correio eletrônico 19

SPEC performance ratio SPEC 89 Melhorias no Compilador x desempenho 800 700 600 500 400 300 200 100 0 gcc espresso spice doduc nasa7 li eqntott matrix300 fpppp tomcatv Benchmark Compiler Enhanced compiler Fonte: Hennessy, John. L.; Patterson, David A. Organização e Projeto de Computadores, 3a Ed, 2005. Campus 20

SPEC 95 Benchmark go m88ksim gcc compress li ijpeg perl vortex tomcatv swim su2cor hydro2d mgrid applu trub3d apsi fpppp wave5 Description Artificial intelligence; plays the game of Go Motorola 88k chip simulator; runs test program The Gnu C compiler generating SPARC code Compresses and decompresses file in memory Lisp interpreter Graphic compression and decompression Manipulates strings and prime numbers in the special-purpose programming language Perl A database program A mesh generation program Shallow water model with 513 x 513 grid quantum physics; Monte Carlo simulation Astrophysics; Hydrodynamic Naiver Stokes equations Multigrid solver in 3-D potential field Parabolic/elliptic partial differential equations Simulates isotropic, homogeneous turbulence in a cube Solves problems regarding temperature, wind velocity, and distribution of pollutant Quantum chemistry Plasma physics; electromagnetic particle simulation 21

SPECint SPECfp SPEC 95 Dobrar a taxa de clock implica em dobrar o desempenho? É possível que uma máquina com um clock mais baixo tenha desempenho superior a uma máquina com clock mais alto? 10 9 8 7 6 10 9 8 7 6 5 5 4 4 3 3 2 2 1 1 0 50 100 150 200 250 0 50 100 150 200 250 Clock rate (MHz) Pentium Pentium Pro Clock rate (MHz) Pentium Pentium Pro Fonte: Hennessy, John. L.; Patterson, David A. Organização e Projeto de Computadores, 3a Ed, 2005. Campus Leia mais sobre a história do(s) Pentium(s) x Desempenho em: http://arstechnica.com/uncategorized/2004/07/3979-2/ e http://arstechnica.com/features/2004/07/pentium-2/ Sobre a evolução das arquiteturas Pentium em Michael Karbo, Denmark, Europe. 1996-2012. URL: http://karbosguide.com/books/pcarchitecture/chapter15.htm 22

SPEC 2006 por fabricante Fonte: http://cpudb.stanford.edu/visualize/spec_int_2006 23

Benchmarks recentes 24

Benchmarks Outro portal para comparação de desempenho para embedded cores (processadores embarcados): CoreMark, an EEMBC (Embedded Microprocessor Benchmark Consortium) Benchmark. http://www.coremark.org/home.php Excelente site para comparações: CPU DB (cpudb.stanford.edu) Base de dados aberta e extensível montada pelo pessoal de Stanford, com informações sobre processadores comerciais de 17 fabricantes, contendo dados de 790 processadores produzidos nos últimos 40 anos (desde 1971 Intel 4004) Ver artigo A.Danowitz et al. CPU DB: Recording Microprocessor History. Apr. 2012. URL: http://queue.acm.org/detail.cfm?id=2181798 25

ARM x Intel x86 em notebooks 26

Desempenho: Algumas leis conhecidas Durante os últimos anos, várias leis foram estabelecidas para se tentar prever o impacto dos ganhos tecnológico nas futuras gerações de arquitetura. Duas das mais importantes: Lei de Moore Lei de Amdahl 27

Lei de Moore Aumento na densidade de componentes no chip Relação indireta com o desempenho Gordon Moore: cofundador da Intel No. de transistores num chip dobrará a cada ano Desde os anos 70, o desenvolvimento tem sido um pouco mais lento No. de transistores 2x a cada 18 meses (1,5 ano) Custo do chip tem se mantido o mesmo Maior densidade empacotamento menor distância para sinais elétricos maior velocidade da lógica desempenho mais alto Menor tamanho maior flexibilidade Menos conexões mais confiabilidade 28

Crescimento do No. de Transistores da CPU Fonte: STALLINGS, W. Arquitetura de Computadores, 5ª Edição, Prentice Hall do Brasil. 29

Evolução Intel 80 s até 2000 30

Tecnologia x escala 31

Lei de Amdahl Gene Amdahl (1967) Tempo de Execução após ganho = Tempo de Execução Não-Afetado + (Tempo de Execução Afetado / Ganho ) Problema: "Suponha que o programa roda em 100s em uma máquina, com operações de multiplicação responsáveis por 80s deste tempo. Quanto deve aumentar a velocidade da multiplicação para que o programa rode 4 vezes mais rápido?" E para fazê-lo 5 vezes mais rápido? Princípio 1: Tornar o que é mais comum o mais rápido possível! 32

Ganho de velocidade Speed-up speedup = 1 (1 f ) + f SUf Onde: Speedup : speedup ou ganho de velocidade total f : fração do tempo de execução afetada pelo ganho SUf: speedup do recurso melhorado Outra forma de calcular: speedup = SUf SUf f. (SUf 1) 33

Desempenho e speedup x tempo Fonte: Andrew Danowitz, Kyle Kelley, James Mao, John P. Stevenson, Mark Horowitz. CPU DB: Recording Microprocessor History. Apr. 2012. URL: http://queue.acm.org/detail.cfm?id=2181798 34

Exemplo 1 Suponha que queremos que uma máquina execute todas as instruções de ponto-flutuante 5x mais rápido que a sua versão anterior. Se o tempo de execução de um benchmark antes do ganho na parte de ponto-flutuante é igual a 10s, qual será o speedup (ganho de velocidade) se o programa gasta a metade dos 10s total executando de instruções ponto-flutuante? Só a parte em PF do programa foi afetada speedup = 1/0,6 = 1,667 Reflexão: Qual o speedup máximo que poderia ser alcançado por esse tipo de melhoria, considerando esse benchmark? 35

Exemplo 2 Nós agora usamos um benchmark para avaliar a unidade pontoflutuante descrita anteriormente e queremos que o benchmark global verifique um speedup de 3. O benchmark que estamos considerando roda em 100s com o antigo hardware de ponto-flutuante. Quanto do tempo de execução (percentual) deveria estar associado a operações ponto-flutuante de forma a alcançar o speedup desejado com o uso deste benchmark? Resp: 83,3%, considerando o ganho 5x na parte ponto-flutuante. 36

Gargalo de desempenho Velocidade do Processor aumenta Capacidade da Memória aumenta Ganho de velocidade da memória << Ganho da velocidade da CPU Gargalo de von Neumann (conhecido desde os anos 50) Outros fatores de impacto (menos dependentes do HW) Compilador SO (multitarefas, escalonamento, etc ) Máquina virtual I/O 37

Frequência Lógica (CPU) x Memória Fonte: STALLINGS, W. Arquitetura de Computadores, 5ª Edição, Prentice Hall do Brasil. 38

Soluções Aumentar o no. de bits recuperados / unidade de tempo Lembram-se da vazão? Fazer a DRAM ficar mais larga ao invés de mais profunda Mudar a interface com a DRAM Caches (vários níveis) Reduzir a frequência de acessos à memória Caches mais complexas e cache on chip Aumentar a banda de interconexão Barramentos de alta velocidade Hierarquia de barramentos 39

Dispositivos de I/O Periféricos com demandas intensivas de I/O Altíssima vazão de dados Processadores poderiam manipular isso (ex. placas gráficas) Movimentação de dados é um problema Soluções: Caching Buffering Barramentos de alta velocidade Estruturas de barramentos mais elaboradas Variação na configuração de processadores 40

Taxas típicas de dados de dispositivos I/O Fonte: STALLINGS, W. Arquitetura de Computadores, 5ª Edição, Prentice Hall do Brasil. 41

Balanceamento é a chave para desempenho Componentes do Processador Memória principal Dispositivos de E/S Estruturas de interconexão Vocês já ouviram falar desses termos antes, lembram-se? CPU: ALU (datapath) + control interrupts Cache main bus Main Memory I/O Controller I/O Controller I/O Controller I/O Controller Graphics display Keyboard Network 42

Melhorias na Arquitetura e Organização dos Chips Aumento da velocidade do HW Redução (em tamanho) da lógica de portas Mais portas por unidade de área, maior taxa de clock Tempo de propagação do sinal reduzido Aumento de tamanho e velocidade das caches Parte da CPU é dedicada a caches Tempos de acesso a cache caem significativamente Mudança na arquitetura e organização da CPU Unidades funcionais Ganho efetivo na velocidade de execução Paralelismo 43

Problemas com Taxa de Clock e Densidade da Lógica Potência Densidade de potência aumenta com o aumento da densidade de lógica e da velocidade do clock Dissipação é um problema Atraso RC Velocidade do fluxo de elétrons é limitada pela R e C dos materiais que constroem a lógica Aumento de delay proporcional à carga RC Conexões mais finas mais resistência Conexões mais próximas mais capacitância Latência das Memórias Solução: Ênfase maior nas abordagens que focam na Arquitetura e Organização 44

Intel Microprocessor Performance Fonte: STALLINGS, W. Arquitetura de Computadores, 5ª Edição, Prentice Hall do Brasil. 45

Aumento da Capacidade das Caches Tipicamente de 2 a 3 níveis de cache entre memória e CPU Densidade de Chip aumenta Mais cache on chip acesso mais rápido à cache Pentium chip: cerca de 10% do chip para cache Pentium 4: cerca de 50% 46

Lógica de Execução Mais Complexa Execução paralela de instruções Pipeline trabalha como linha de montagem Diferentes estágios de execução sendo utilizados por diferentes instruções ao longo do pipeline Arquiteturas superscalares permitem vários pipelines dentro de um único processador Instruções que não dependem umas das outras podem ser executadas em paralelo dentro da CPU 47

Retornos não tão grandes Organização interna da complexidade de processadores Nível de paralelismo a ser tratado Ganhos obtidos podem ser significativamente modestos Benefícios da cache são limitados Aumentar o clock implica em complicar a dissipação de potência Alguns limites da física estarão sendo atingidos em pouco tempo Computação quântica? Outras soluções? 48

Observações Finais Desempenho é específico para determinado(s) programa(s) Tempo Total de Execução é um sumário consistente de medida de desempenho global Para uma dada arquitetura, o desempenho pode ser aumentado: Aumentando a taxa de clock (desconsiderando efeitos no CPI) Melhorando a organização do processador, que baixa o CPI Melhorando o compilador que reduz o CPI e/ou o no. de instruções ATENÇÃO: Ganhos de desempenho são apenas um dos aspectos do desempenho da máquina que afeta o desempenho total Não se deve acreditar sempre em tudo que foi escrito por outros! Leia com cuidado e entenda o que aquilo quer dizer! (Hennessy & Patterson) 49

Melhoria de desempenho mais recentes... Pipelining Cache on board (dentro da CPU) Diferentes níveis de cache (L1, L2,...) Predição de desvio (para pipelines) Análise do fluxo de dados (redução de dependências) Execução especulativa (ocupação das unidades funcionais) 50

Exemplos e Exercícios 51

Exemplo (p.252 3ª Ed.) Lição 1: considerar apenas um fator (Número de instruções) para avaliar o desempenho é um erro! 52

Exemplo (p.253 3ª Ed.)... Lição 2: Compilador influencia no código gerado e, portanto, no desempenho! 53

Exemplo (p.268 3ª Ed.) Lição 3: Ter número MIPS maior não é sinônimo de melhor desempenho! 54