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



Documentos relacionados
Organização de Computadores

Desempenho DESEMPENHO DE COMPUTADORES

Arquitetura de Computadores I

Desempenho de Computadores

Arquitetura de Computadores. Ivan Saraiva Silva

Organização de Computadores

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

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

Arquitetura e Organização de Computadores

Introdução à Arquitetura de Computadores

Medidas de desempenho de CPUs. Uma introdução breve

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

Arquitetura de Computadores

Capítulo 1 Introdução

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Organização e Arquitetura de Computadores. Aula 1 - Introdução Juliana F. Camapum Wanderley.

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

1.1. Organização de um Sistema Computacional

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

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

Anotações da Parte 2

Organização e Arquitetura de Computadores. Aula 2 - Desempenho Juliana F. Camapum Wanderley.

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

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

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

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

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

Sistemas Computacionais II Professor Frederico Sauer

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Avaliando e Compreendendo o Desempenho. Capítulo 4

Introdução à Arquitetura de Computadores. Renan Manola Introdução ao Computador 2010/01

Arquitetura e Organização de Computadores

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES

Sistema de Computação

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

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

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

Introdução aos Computadores


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

RISC - Reduced Instruction Set Computer

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

Organização e Arquitetura de Computadores I

Sistemas Operacionais

ci212 desempenho Avaliação de Desempenho

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

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

1. NÍVEL CONVENCIONAL DE MÁQUINA

Edeyson Andrade Gomes

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo ("pipeline") Execução de programas

Arquitetura de Computadores

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

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

BARRAMENTO DO SISTEMA

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

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

Microprocessadores. Prof. Leonardo Barreto Campos 1

Conjunto de Instruções e Arquitectura p.1

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

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

Computadores de Programação (MAB353)

Arquitetura e Organização de Computadores

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

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Figura 1 - O computador

Arquitetura de Computadores. Ivan Saraiva Silva

Desempenho (Parte I): Compreensão e Avaliação

FUNDAMENTOS DE HARDWARE COMO FUNCIONA UM PC? Professor Carlos Muniz

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Fundamentos de Hardware

CP C U P U - Un U i n da d d a e d e Ce C n e t n ral a de d e Pr P oc o es e sam a e m n e t n o o Pr P oc o es e sad a o d r o Aula 03

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Organização e Arquitetura de Computadores I

RISC X CISC - Pipeline

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

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

AULA 1. Informática Básica. Gustavo Leitão. Disciplina: Professor:

Processadores. Guilherme Pontes

Organização e Arquitetura de computadores

Computador Digital Circuitos de um computador (Hardware)

Arquitetura de Von Neumann e os Computadores Modernos

Organização e Arquitetura de computadores

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

O modelo do computador

20/09/2009 TRANSFORMANDO DADOS EM. PROCESSANDO DADOS George Gomes Cabral SISTEMAS NUMÉRICOS INFORMAÇÕES

Softwares de Sistemas e de Aplicação

Processadores. Prof. Alexandre Beletti Ferreira

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

Lição 1 Introdução à programação de computadores

Medidas de Desempenho e a Lei de Amdahl

Sistemas Operacionais

CPU Unidade Central de Processamento. História e progresso

Software Básico (INF1018)

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

ARQUITETURA DE COMPUTADORES

Algumas características especiais

Comparativo de desempenho do Pervasive PSQL v11

Transcrição:

Capítulo 1 Permission is granted to copy and distribute this material for educational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 1998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd Edition David A. Patterson, John L. Hennessy Morgan Kaufmann, 2nd ed., 1997, ISBN 1558604286 Copyright 1998 Morgan Kaufmann Publishers." Lecture slides created by Michael Wahl in English Tradução: Christian Lyra Gomes Revisão: Wagner M. N. Zola This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder. 1 Introdução Um campo em mudança rápida: válvula -> transistor -> IC -> VLSI (veja a seção 1.4) dobra a cada 1.5 anos: capacidade de memória velocidade do processador (Devido a avanços na tecnologia e organização) Coisas que vocês aprenderão: como os computadores funcionam, os fundamentos básicos como analisar o desempenho deles (e como não analisar!) pontos que afetam os processadores modernos (caches, pipelines) Por que aprender isso? você quer ser chamado de Cientista da Computação você quer escrever programas que as pessoas usem (necessita desempenho) você necessita tomar uma decisão de compra ou oferecer um conselho (consultoria?) especializado 2

O que é um computador? Componentes: entrada (mouse, teclado) saída (monitor, impressora) memória (discos, DRAM, SRAM, CD) rede Nosso foco primário: o processador (datapath e controle) implementado utilizando-se milhões de transistores Impossível de entender olhando para cada transistor nós precisamos de... 3 Abstração Examinando em profundidade revela-se mais informações High-level Linguagem de language programação de progra m (in alto C) nível (ex. C) swap(int v[], int k) {i nt temp; t emp = v[k]; v[k] = v[ k+1] ; v[k+1] = t emp; } A abstração omite detalhes desnecessários, e nos ajuda a lidar com a complexidade Assembly Linguagem de language progra montagem m (for (assembly) MI PS) para o MIPS C com piler swap: muli $2, $5,4 add $2, $4, $2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31 Quais são alguns dos detalhes que aparecem nestas abstrações? Binary machine Linguagem languagede máquina progra-binária m - para (for o MIPS PS) Assem bler 00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000 4

Abstração Software Applications Systems software Hardware software Applications software Systems software lat E X gcc Compilers Virtual memory Operating systems File system as I/O device drivers Assemblers 5 Arquitetura de Conjunto de Instruções (Instruction Set Architecture) Uma abstração muito importante interface entre o hardware e o software de baixo nível padroniza instruções, padrões de bits da linguagem de máquina, etc. vantagem: diferentes implementações da mesma arquitetura desvantagem: as vezes impede a utilização de inovações Verdadeiro ou falso: Compatibilidade binária é extraordinariamente importante? Arquiteturas de Conjunto de instruções modernas: 80x86/Pentium/K6, PowerPC, DEC Alpha, MIPS, SPARC, HP 6

Performance 1200 1100 DEC Alpha 21264/600 1000 900 800 Performance 700 600 500 400 DEC Alpha 5/500 300 DEC Alpha 5/ 300 200 DEC Al pha 4/266 SUN-4/ M IPS MI PS IBM IBM PO WER 100 100 260 M /120 M2000 RS6000 DEC AXP/500 HP 9000/ 750 0 1987 1988 1989 199 0 1991 1992 1993 1994 1995 1996 Year 1997 7 Para onde estamos nos dirigindo Problemas de desempenho (Capítulo 2) vocabulário e motivação Uma arquitetura de conjunto de instruções específica (Capítulo 3) Aritmética e como construir uma ULA (Capítulo 4) Construindo um processador para executar nossas instruções (Capítulo 5) Pipeline para melhorar o desempenho (Capítulo 6) Memória: cache e memória virtual (Capítulo 7) I/O (Capítulo 8) Chave para uma boa nota: leia o livro! 8

Capítulo 2 Permission is granted to copy and distribute this material for educational purposes only, provided that the complete bibliographic citation and following credit line is included: "Copyright 1998 Morgan Kaufmann Publishers." Permission is granted to alter and distribute this material provided that the following credit line is included: "Adapted from Computer Organization and Design: The Hardware/Software Interface, 2nd Edition David A. Patterson, John L. Hennessy Morgan Kaufmann, 2nd ed., 1997, ISBN 1558604286 Copyright 1998 Morgan Kaufmann Publishers." Lecture slides created by Michael Wahl in English Tradução: Christian Lyra Gomes Revisão: Wagner M. N. Zola This material may not be copied or distributed for commercial purposes without express written permission of the copyright holder. 9 Desempenho Medida, apresentação e sumarização Faça medidas inteligentes Ver além do marketing Chave para o entendimento das motivações organizacionais fundamentais Por que alguns hardwares são melhores que outros para diferentes programas? Quais os fatores de desempenho do sistema estão relacionados ao hardware? (ex., precisamos de uma nova máquina, ou de um novo sistema operacional?) Como o conjunto de instruções de uma máquina afeta o desempenho? 10

Qual desses aviões possui 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 mais rápido é o concorde em relação ao 747?? Quanto maior é o 747 em relação ao Douglas DC -8? 11 Desempenho Computacional: Tempo, Tempo, Tempo Tempo de resposta (latência) dados? Quanto tempo demora até o meu processo ser executado? Quanto tempo demora para executar o meu processo? Quanto tempo eu devo esperar por uma consulta ao banco de Vazão Quantos processos a máquina consegue executar de uma vez? Qual é a média da taxa de execução? Quanto trabalho está sendo feito? Se nós fizermos um upgrade de uma máquina com um novo processador, o que nós melhoramos? Se nós adicionarmos uma nova máquina ao laboratório o que nós melhoramos? 12

Tempo de execução Elapsed Time (Tempo decorrido) conta tudo (acessos ao disco e à memória, I/O, etc.) um número útil, mas muitas vezes não é bom para o propósito de comparações Tempo de CPU não conta o I/O nem o tempo gasto rodando outros programas pode ser divido em tempo de sistema e de usuário Nosso foco: tempo de CPU de usuário tempo gasto executando linhas de código que estão no nosso programa 13 A definição do Livro de Desempenho Para um programa qualquer executando 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 Problema: máquina A roda um programa em 20 segundos máquina B roda o mesmo programa em 25 segundos 14

Ciclos de relógio Em vez de reportar o tempo de execução em segundos, nós freqüentemente usamos ciclos segundos? programa ciclos programa segundos ciclos ticks de relógio quando iniciar uma atividade (uma abstração):? tempo tempo de ciclo = tempo entre ticks = segundos por ciclo freqüência de relógio = ciclos por segundo (1 Hz. = 1 ciclo/sec) Um relógio de 200 Mhz tem ciclo 1 200? 10 6? 10 9? 5 nanosegundos tempo de 15 Como melhorar o desempenho segundos? programa ciclos programa? segundos ciclos Então, para melhorar o desempenho (mantendo todo o resto igual) você pode: o # de ciclos requerido por um programa, ou o tempo de ciclo de relógio ou, dizendo de outra maneira, a freqüência do relógio. 16

Quantos ciclos são requeridos por um programa? Podemos assumir que # de ciclos = # de instruções 1a instrução 2a instrução 3a instrução 4a 5a 6a... tempo Esta afirmação é incorreta, Instruções diferentes demoram tempos diferentes em diferentes máquinas. Por que? dica: lembre-se que essas são instruções de máquina, e não linhas de código C 17 Diferentes números de ciclos para diferentes instruções tempo? Multiplicação leva mais tempo do que adição? Operações de ponto flutuante demoram mais que operações com inteiros? Acessar a memória leva mais tempo que acessar registradores? Ponto importante: mudar o tempo de ciclo freqüentemente muda o número de ciclos necessários para cada instrução (mais adiante) 18

Exemplo Nosso programa favorito roda em 10 segundos no computador A, que tem um relógio de 400 Mhz. Nós vamos ajudar um projetista de computadores a construir um novo computador B, que irá rodar esse programa em 6 segundos. O projetista pode usar uma nova (ou talvez mais cara) tecnologia para aumentar substancialmente a freqüência do relógio, mas nos informou que esse aumento afetaria o resto do projeto da CPU, fazendo com que o computador B precise de 1,2 vezes mais ciclos de relógio que o computador A, para o mesmo programa. Qual deve ser a freqüência de relógio que nós devemos pedir que o projetista alcance?" Não se assuste, nós podemos facilmente resolver isso a partir dos princípios básicos 19 Agora que nós entendemos ciclos Um determinado programa pode necessitar um certo número de instruções (instruções de máquina) um certo número de ciclos um certo número número de segundos Nós temos um vocabulário que relaciona essas quantidades: tempo de ciclo (segundos por ciclo) freqüência de relógio (ciclos por segundo) CPI (ciclos por instrução) Uma aplicação que faça uso intensivo de ponto flutuante pode ter um CPI mais alto MIPS (Milhões de instrução por segundo) este pode ser mais alto para um programa que use instruções simples 20

Desempenho Desempenho é determinado pelo tempo de execução Alguma dessas outras variáveis é igual a desempenho? # de ciclos para executar um programa? # de instruções em um programa? # de ciclos por segundo? média de # de ciclos por instrução? média de # de instruções por segundo? Falácia comum: pensar que uma das variáveis é indicativa de desempenho quando na verdade não é. 21 Exemplo de CPI Suponha que temos duas implementações da mesma arquitetura de conjunto de instruções (ISA). Para algum programa, Máquina A tem um tempo de ciclo de relógio de 10 ns e CPI de 2.0 Máquina B tem um tempo de ciclo de relógio de 20 ns e CPI de 1.2 Qual máquina é mais rápida para este programa, e quanto mais rápida ela é? Se duas máquinas tem uma mesma ISA qual das quantidades vistas (i.e., freqüência de relógio, CPI, tempo de execução, # de instruções, MIPS) sempre deverá ser idêntica? 22

Exemplo de # de Instruções Um projetista de compilador está tentando decidir qual dentre duas seqüências de código usar para uma máquina em particular. Baseado na implementação do hardware, existem três classes diferentes de instruções: Classe A, Classe B e Classe C, sendo que cada uma utiliza um, dois e três ciclos, respectivamente. A primeira seqüência de código possui 5 instruções: 2 de A, 1 de B e 2 de C A segunda seqüência de código possui 6 instruções: 4 de A 1 de B e 1 de C. Qual das seqüências é mais rápida? Quanto mais rápida? Qual é a CPI de cada seqüência? 23 Exemplo de MIPS Dois compiladores diferentes estão sendo testados em uma máquina de 100 Mhz com 3 classes diferentes de instruções: Classe A, Classe B, e Classe C, gastando um, dois e três ciclos (respectivamente). Ambos os compiladores são utilizados para produzir uma grande pedaço de software. O código do primeiro compilador usa 5 milhões de instruções da classe A, 1 milhão da classe B e 1 milhão da classe C. O código do segundo compilador usa 10 milhões de instruções da classe A, 1 milhão da classe B e 1 milhão da classe C. Qual código será mais rápido de acordo com o MIPS? Qual código será mais rápido de acordo com o tempo de execução? 24

Benchmarks O melhor desempenho é determinado rodando uma aplicação real Usa-se programas com uma carga de trabalho típica esperada Ou, carga típica esperada de uma classe de aplicações ex. compiladores/editores, aplicações científicas, gráficos, etc Pequenas benchmarks boa para arquitetos e projetistas Fácil de padronizar pode ser usada de forma abusiva SPEC (Sistema de avaliação de desempenho cooperativa) companhias entram em acordo a respeito de um conjunto de programas e suas entradas Ainda assim podem ser usada de forma abusiva (bug dos outros da Intel) indicador valioso do desempenho (e da tecnologia de compiladores) 25 SPEC 89 Melhorias no Compilador e desempenho 800 700 600 S PE C perform ance rat io 500 400 300 200 100 0 gcc espresso spice doduc nasa7 l i eqnt ot t m atrix300 f pppp t omcatv Benchmark Compiler Enhanced compiler 26

SPEC 95 go Inteligência Artificial; joga Go m88ksim Simula o chip Motorola 88k ; roda programas de teste gcc Compilador Gnu C gerando código SPARC compress Comprime e descomprime um arquivo em memória li interpretador Lisp ijpeg Compressão e descompressão gráfica perl Manipula strings e números primos em linguagem Perl vortex Um programa de Banco de dados tomcatv Um programa de geração de malhas swim Modelo de águas superficiais com um grid de 513 x 513 su2cor Física Quântica; Simulação Monte Carlo hydro2d Astrofísica; mgrid Resolverdor de Multigrid em 3-D de campos potênciais applu Equações diferenciais parabólicas e elípticas trub3d Simulador isotrópico, turbulência homgênea em um cubo apsi Resolve problemas de temperatura, velocidade do ar e distribuição de poluentes fpppp Química Quântica wave5 Física de Plasmas; simulação de partículas eletromagnéticas 27 SPEC 95 Dobrando-se a freqüência de relógio, dobra-se o desempenho? Uma máquina com uma freqüência de relógio menor pode ter um melhor desempenho? 10 9 8 7 10 9 8 7 SPECint 6 5 4 S PE Cfp 6 5 4 3 2 1 3 2 1 0 0 50 100 150 Clock rat e (MHz) 200 250 Pentium 50 100 Clock rate (M Hz) 150 P entium 200 250 Pentium Pro P entium P ro 28

Lei de Amdahl Tempo de execução depois da melhoria = Tempo de execução não afetado + (tempo de execução afetado / quantidade de melhoria) Exemplo: Suponha que um programa roda em 100 segundos em uma máquina, sendo que a multiplicação é responsável por 80 segundos desse tempo. Quanto devemos melhorar na velocidade da multiplicação para que o programa fique 4 vezes mais rápido? " E que tal fazer com que ele fique 5 vezes mais rápido? Princípio: torne o caso comum mais rápido 29 Exemplo Suponha que nós queremos melhorar uma máquina fazendo com que todas as instruções de ponto flutuante sejam 5 vezes mais rápidas. Se o tempo de execução de um benchmark antes da melhoria é de 10 segundos, qual vai ser a aceleração (speedup) se metade desses 10 segundos é gasto executando-se instruções de ponto flutuante? Nós estamos procurando por um benchmark que nos mostre a nova unidade de ponto flutuante descrita acima, e queremos um benchmark genérico que mostre uma aceleração (speedup) de 3. Um benchmark que estamos considerando demora 100 segundos no hardware de ponto flutuante antigo. Quanto do tempo de execução devem ser de instruções de ponto flutuante nesse programa para que a nossa aceleração desejada seja alcançada nesse benchmark? 30

Lembre-se Desempenho é específico para um(s) programa(s) em particular Tempo de execução total é uma medida consistente do desempenho A melhoria de desempenho de uma arquitetura vem de: melhoria na freqüência do relógio (sem afetar a CPI) Avanço na organização do processador que diminua a CPI melhorias no compilador que diminua a CPI e/ou contagem de instruções Falácia: esperar que a melhoria de um dos aspectos do desempenho de uma máquina afete o desempenho total Você não deve acreditar em tudo que lê! Leia com cuidado! (veja os artigos de jornais, ex. Exercício 2.37) 31