Desempenho. Sistemas de Computação

Documentos relacionados
Avaliação de desempenho

O Que Veremos. Introdução. Introdução. Definindo Desempenho. Definindo Desempenho. Avaliando e Compreendendo o Desempenho

Avaliando e Compreendendo o Desempenho. Capítulo 4

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

Infraestrutura de Hardware. Desempenho

Desempenho DESEMPENHO DE COMPUTADORES

Desempenho. Na otimização do projeto, as métricas mais importantes são custo e desempenho. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 1

Faculdade de Computação

Faculdade de Computação

Avaliação de Desempenho

Desempenho de Computadores

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

Exemplo Amdahl. O speedup total é dado por:

Faculdade de Computação Arquitetura e Organização de Computadores 2 Prof. Cláudio C. Rodrigues

Unidade Central de Processamento (CPU) Processador. Bernardo Gonçalves Introdução ao Computador 2008/01

Organização de Sistemas Computacionais Processadores: Organização da CPU

Arquitetura de Computadores I

Organização de Computadores

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. RISC versus CISC

Benchmarks. 1. Introdução

SSC0611 Arquitetura de Computadores

Arquitetura de Computadores. Ivan Saraiva Silva

Organização de Computadores

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

Unidade Central de Processamento UCP (CPU)

Material baseado nos slides de: Marcos José Santana Regina Helena Carlucci Santana

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

2ª Lista de Exercícios de Arquitetura de Computadores

Organização de Sistemas de Computadores

Processador: Conceitos Básicos e Componentes

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

Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores. Organização Básica de Computadores

SSC0902 Organização e Arquitetura de Computadores

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS

Arquiteturas RISC e CISC. Adão de Melo Neto

Algoritmos Computacionais

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

Processador. Processador

Arquitetura de Computadores

O que é Arquitetura de Computadores?

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Hierarquia de Memória

2. Conceitos Básicos. Introdução à Ciência da Computação.

SSC510 Arquitetura de Computadores 1ª AULA

Organização de Computadores I

2. A influência do tamanho da palavra

Prova 1 Eng. Elétrica Arquitetura de Computadores Prof. Celso A. Saibel Santos Nome: Data:

SSC PROGRAMAÇÃO CONCORRENTE

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

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Arquitetura de Computadores Aula 11 - Multiprocessamento

1. Conceitos Básicos de Computação

Informática I. Aula /09/2006 1

ci212 desempenho Avaliação de Desempenho

FACULDADE FUCAPI Arquitetura de Computadores Parte I

a) Calcule o valor médio de CPI apresentado na execução deste programa P, utilizando-se C1 sem e com otimização.

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 02: INTRODUÇÃO

Microprocessadores II - ELE 1084

FUNDAMENTOS DA PROGRAMAÇÃO DE COMPUTADORES BIT / CARACTERE / BYTE/ PALAVRA

Arquitetura de Computadores. Conjunto de Instruções

Explorando o paralelismo entre instruções

CAPÍTULO 2 DESEMPENHO

PROCESSADORES SUPERESCALARES FELIPE G. TORRES

Organização e Arquitetura de Computadores I

ORGANIZAÇÃO DE COMPUTADORES

Arquitetura de Computadores II

Sistemas Operacionais

Aula 3: Conceitos Básicos e Medidas de Desempenho

Paralelismo ao Nível das Instruções p. 1

Introdução a Sistemas Operacionais. Adão de Melo Neto

Aula 16: UCP: Conceitos Básicos e Componentes

ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS

ULA. Combina uma variedade de operações lógicas e matemáticas dentro de uma única unidade.

SSC0611 Arquitetura de Computadores

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Transcrição:

Desempenho

Definição Medidas de desempenho utilizadas Tempo de resposta ou tempo de execução: tempo decorrido entre o início da execução de um programa e o seu final Quantidade de trabalho realizada em um determinado intervalo de tempo (throughput) Enfoque será dado em tempo de execução

Medida de desempenho Para maximizar desempenho, devemos minimizar tempo de execução de uma tarefa Para uma máquina X, teremos Desempenho X =1/tempo de execução em X Comparação de desempenhos Desempenho X > Desempenho Y, então Tempo de execução em Y > Tempo de execução em X

Exemplo Uma máquina A executa um programa em 10s e uma máquina B executa o mesmo programa em 15s. Qual é mais rápida? Desempenho A /Desempenho B =Tempo de execução em B/ Tempo de execução em A=15/10=1,5 Dizemos que A é 1,5 vezes mais rápida que B

Medindo desempenho Tempo utilizado como tempo de execução do programa é conhecido como wall-clock time, response time, ou elapsed time Inclui tempo total de execução da tarefa no sistema CPU acesso a disco acesso a memória atividades de E/S overhead de sistema operacional

Medindo desempenho Em sistemas timeshared, o sistema pode tentar maximizar o throughput e não minimizar o elapsed time, então utiliza-se uma medida para saber o tempo de CPU que foi utilizado pelo programa Tempo de execução da CPU (CPU time) tempo que a CPU gastou para realizar um determinado programa não inclui tempo de espera pela CPU por entrada e saída ou gasto pela CPU para executar outros programas CPU time = User time + system CPU time

Medindo desempenho Através do comando time, obtêm-se os seguintes dados: 90.7u 12.9s 2:39 65% Elapsed time= 159s, User time=90,7s, System time=12,9s Porcentagem da CPU utilizada pelo programa (90,7+12,9)/159=65% 35% gasto para espera por E/S ou por outros programas

Outras métricas de desempenho Projetistas de hardware gostariam de utilizar uma medida que mostrasse a rapidez que um hardware pode executar funções básicas Computadores possuem um relógio que possui uma freqüência de operação e determina o momento em que eventos são realizados na máquina Os intervalos de tempo discretos do relógio são denominados ciclos de relógio Período do relógio = 5 ns, Freqüência=200MHZ

Relacionando as métricas Tempo de execução de um programa = Número de ciclos de relógio utilizados pela CPU para o programa Tempo de cada ciclo do relógio Tempo de execução de um programa = Número de ciclos de relógio utilizados pela CPU para o programa / Freqüência do relógio Para aumentar o desempenho de uma máquina se pode reduzir o tempo do ciclo do relógio ou o número de ciclos

Relacionando as métricas - Exemplo Um programa gasta 20s para ser executado em uma máquina A, cujo relógio é de 1GHZ. Queremos construir uma máquina B que execute este mesmo programa em 12s. Sabe-se que a freqüência do relógio pode ser aumentada, mas esse aumento implica em mudanças no projeto, fazendo com que a máquina B necessite 1,2 vezes mais ciclos de relógio que a máquina A para executar o programa. Qual deve ser a freqüência a ser utilizada na máquina B?

Relacionando as métricas - Exemplo Número de ciclos requerido pelo programa executando-o em A Tempo de CPU A =Número de ciclos de CPU A /Freq. do relógio A Número de ciclos da CPU A =20 10 9 Relógio da máquina B Tempo de CPU B =Número de ciclos de CPU B /Freq. do relógio B Número de ciclos de CPU B =1,2 Número de ciclos de CPU A Freq. do relógio B = 1,2 Número de ciclos de CPU A / Tempo de CPU B =2GHZ

Relacionando hardware e software Tempo de execução de um programa pode ser visto como o produto do número de instruções necessárias para executá-lo pelo tempo médio de execução de uma instrução Instruções podem ter número de ciclos de relógio variáveis CPI (clock cycles per instruction): média do número de ciclos por instrução Número de ciclos de relógio de um programa é igual ao produto do número de instruções pelo número médio de ciclos de relógio gasto por cada instrução

Exemplo de desempenho Suponha que existam duas implementações para o mesmo conjunto de instruções. A máquina A possui um relógio de freqüência 1GHZ e uma CPI de 2,4 para um determinado programa com I instruções e a máquina B possui um relógio de freqüência 500 MHZ e CPI de 1,0 para o mesmo programa. Qual máquina executa mais rapidamente? Tempo de CPU A =Número de ciclos A Tempo do ciclo em A= I 2,4 (1/10 9 )=2,4 I ns

Exemplo de desempenho Tempo de CPU B =Número de ciclos B Tempo do ciclo em B= I 1,0 (1/500 10 6 )=2,0 I ns Desempenho B /Desempenho A =Tempo de execução em A/Tempo de execução em B= 2,4 I ns/ 2,0 I ns=1,2 Máquina B é 1,2 vezes mais rápida que a máquina A

Equação de desempenho de um programa Tempo de CPU=(Número de instruções CPI) / Freqüência do relógio Tempo de CPU obtém-se executando o programa Freqüência é dada pelo fabricante Número de instruções pode ser obtido por ferramentas de software ou simulador da arquitetura CPI depende do projeto da máquina e das instruções utilizadas pelo programa

MIPS MIPS: Million Instructions Per Second Para um dado programa, MIPS=Número de instruções / (Tempo de execução 10 6 ) Máquinas mais rápidas possuem MIPS maiores Problemas Máquinas com conjuntos de instruções diferentes não podem ser comparadas porque o número de instruções vai diferir entre elas Não se pode considerar uma medida única, pois cada programa executado apresenta uma medida diferente Pode variar inversamente ao desempenho

Exemplo de problema com MIPS Considere uma máquina com freqüência de relógio de 250MHZ que possui três classes de instruções A, B e C com as seguintes medidas de CPI: Classe A=1, Classe B=2 e Classe C=3. Suponha que para um mesmo programa obtivemos código utilizando dois compiladores diferentes, resultando em: Número de instruções (em bilhões) Código do A B C Compilador 1 5 1 1 Compilador 2 10 1 1 Qual executará mais rápido de acordo com a métrica MIPS e com o tempo de execução?

Exemplo de problema com MIPS Tempo de execução=número de ciclos/freqüência Número de ciclos=cpi A número A + CPI B número B + CPI C número C Número de ciclos para compilador 1=10 10 9 Número de ciclos para compilador 2=15 10 9 Tempo de execução para compilador 1= 40s Tempo de execução para compilador 2= 60s Compilador 1 mais rápido que 2

Exemplo de problema com MIPS MIPS=Número de instruções/(tempo de execução 10 6) Número de instruções para compilador 1=7 10 9 Número de instruções para compilador 2=12 10 9 MIPS para compilador 1=7 10 9 / (40 10 6 )= 175 MIPS para compilador 2=12 10 9 / (60 10 6 )= 200 Compilador 2 produz código com maior MIPS mas maior tempo de execução

MFLOPS MFLOPS: Million FLoating-point Operations Per Second Para um dado programa, MFLOPS=Número de operações em ponto flutuante/ (Tempo de execução 10 6 ) Operações de ponto flutuante consistem de operações de adição, subtração, multiplicação ou divisão aplicadas a números representados em ponto flutuante

MFLOPS Programas diferentes requerem números diferentes de operações em ponto flutuante medida aplicada para programas que utilizam intensamente estas operações MFLOPS seria uma medida mais justa para comparar desempenho do que MIPS, partindo-se do pressuposto que máquinas diferentes executam números de instruções diferentes, mas igual número de operações em ponto flutuante Na realidade, o conjunto de operações em ponto flutuante varia de máquina para máquina

MFLOPS Operações em ponto flutuante possuem tempos de execução variáveis Um programa que possui 100% de somas em ponto flutuante é executado mais rápido que um outro que possua 100% de divisões, acarretando a dependência da medida MFLOPS ao programa

Como avaliar e comparar desempenho? Executar programas e verificar tempo de execução Programas utilizados freqüentemente pelo usuário Programas desenvolvidos especialmente para medir desempenho (benchmark) Programas devem ser aplicações típicas do ambiente em que a máquina irá ser utilizada Otimização de compiladores direcionados aos programas de benchmark Programas de benchmark devem ser grandes

SPEC benchmark System Performance Evaluation Cooperative Possui vários programas para benchmark em várias áreas: CPU, gráficos, paralelismo SPEC CPU 2000 programas CPU intensivos para dar ênfase no desempenho da CPU, arquitetura de memória e compilador 12 programas com inteiros (C e C++) e 14 com ponto flutuante (Fortran) Problemas reais compilador C, jogo de xadrez, banco de dados orientado a objetos, problemas de otimização, análise de fluidos, teste de números primos, modelo de acelerador de partículas

SPEC benchmark Para uma arquitetura com um determinado conjunto de instruções, o desempenho da máquina pode ser aumentado de três maneiras: aumento da freqüência do relógio melhorias na organização do processador de modo que CPI se torne menor melhoramentos do compilador que gera menor número de instruções ou gera instruções com CPI médio menor

SPEC benchmark SPECint 500 400 300 200 100 0 Pentium III Esperado 0 500 1000 1500 Freqüência

SPECfp 400 300 200 100 0 0 500 1000 1500 Freqüência Pentium III Esperado

SPEC benchmark SPECfp 400 300 200 100 0 0 500 1000 1500 Freqüência Pentium III Pentium III Pro