Arquitetura de Computadores I

Documentos relacionados
Organização de Computadores

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

Organização de Computadores e Proj.Integrado. Desempenho Herbert Rausch Fernandes

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

Arquitetura de Computadores. Ivan Saraiva Silva

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

Desempenho de Computadores

Organização de Computadores

Desempenho DESEMPENHO DE COMPUTADORES

ci212 desempenho Avaliação de Desempenho

Arquitetura de Computadores

Arquitetura e Organização de Computadores

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

ARQUITETURA DE COMPUTADORES

ARQUITETURA DE COMPUTADORES

Arquitetura e Organização de Computadores

Organização e Arquitetura de Computadores

Medidas de Desempenho e a Lei de Amdahl

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

MEDIDAS DE DESEMPENHO DE SISTEMA DE COMPUTADORES:

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Estruturas do Sistema de Computação

Comparativo de desempenho do Pervasive PSQL v11

Arquitetura de Computadores I

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

Sistemas Operacionais

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

4 Estrutura do Sistema Operacional Kernel

Everson Scherrer Borges João Paulo de Brito Gonçalves

Características técnicas Baseado no ATMega da empresa AVR, fabricante de micro-controladores em plena ascensão e concorrente do PIC Pode usar ATMega

Sistemas Computacionais II Professor Frederico Sauer

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

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

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas

Introdução aos Computadores

Capítulo 2 (Livro Texto*) - Notas de Aula - Parte II

Sistema de Computação

RISC - Reduced Instruction Set Computer

Arquitetura de Computadores I

1. NÍVEL CONVENCIONAL DE MÁQUINA

Sistemas Distribuídos

Dadas a base e a altura de um triangulo, determinar sua área.

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

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

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

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

Engenharia de Software

Organização e Arquitetura de Computadores I

ARQUITETURA DE COMPUTADORES

Introdução ao Modelos de Duas Camadas Cliente Servidor

Processos. Adão de Melo Neto

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

ESTUDO COMPARATIVO ENTRE AS PLATAFORMAS ARDUINO E PIC

Sistemas Operativos. Threads. 3º ano - ESI e IGE (2011/2012) Engenheiro Anilton Silva Fernandes (afernandes@unipiaget.cv)

COMPILADORES E INTERPRETADORES

Algumas características especiais

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

Guilherme Pina Cardim. Relatório de Sistemas Operacionais I

Organização e Arquitetura de Computadores I

O que veremos nesta aula? Principais Aspectos de Sistemas Operacionais. Visão geral de um sistema computacional

Organização e Arquitetura de computadores

Introdução ao Processamento Paralelo

Arquitetura de Computadores. Ivan Saraiva Silva

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

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

ULA Sinais de Controle enviados pela UC

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

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

ARQUITETURA DE COMPUTADORES

Desempenho. Sistemas de Computação

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

Introdução às Linguagens de Programação

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Sistemas Operacionais

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

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Mecanismo de Interrupção

O que é Arquitetura de Computadores?

Arquitetura e Organização de Computadores

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

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

Ministério da Educação Secretaria de Educação Profissional e Tecnológica Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Sul

INE 5223 Informática para Secretariado

Arquitetura de Von Neumann e os Computadores Modernos

Organização Básica do Computador

Fundamentos de Hardware

Concurso Público para provimento de cargo efetivo de Docentes. Edital 20/2015 CIÊNCIA DA COMPUTAÇÃO I Campus Rio Pomba

Avaliação de Desempenho

Prof.: Roberto Franciscatto. Capítulo 1.1 Introdução

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

28/9/2010. Unidade de Controle Funcionamento e Implementação

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Aula 26: Arquiteturas RISC vs. CISC

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

Contil Informática. Curso Técnico em Informática Processadores Core

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

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

Transcrição:

Arquitetura de Computadores I Avaliação de desempenho Introdução Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Adaptado do material de aula de Hennessy e Patterson

Desempenho Meça, informe e resuma Faça escolhas inteligentes Vital para entender a motivação organizacional subjacente Por que alguns hardwares são melhores do que outros para diferentes programas? Que fatores do desempenho de sistema são relacionados ao hardware? (por exemplo, precisamos de uma nova máquina ou de um novo sistema operacional?) Como o conjunto de instruções da máquina afeta o desempenho? Tendo somente o manual do conjunto de instruções e uma aplicação/sistema a ser executado, é impossível de determinar o desempenho deste sistema. Diferentes tipos de métricas de desempenho podem ser aplicadas para diferentes tipos de aplicações, assim como diferentes aspectos podem ser avaliados para determinar o desempenho Requisitos de memória, precisão, tempo de resposta,

Desempenho Qual destes aviões possui melhor desempenho? Mas o que é considerado como desempenho para um avião? Capacidade? Velocidade? Autonomia? Vazão?

Desempenho Suponha a execução de um programa em 2 estações de trabalho diferentes A estação mais rápida é aquela que termina a execução primeiro Suponha a execução de programas em 2 estações de trabalho compartilhadas A estação mais rápida é aquela que completa a execução de mais programas durante um mesmo intervalor de tempo Usuário tradicional: reduzir o tempo de resposta Tempo entre o início e o fim de uma tarefa, também chamado tempo de execução Usuário tradicional: aumentar a vazão (throughput) Quantidade de trabalho realizado em um dado intervalo de tempo

Desempenho do computador TEMPO, TEMPO, TEMPO!!!! Tempo de resposta (latência) Quanto tempo leva para meu trabalho ser realizado? Quanto tempo leva para realizar um trabalho específico? Quanto tempo preciso esperar para finalizar minha simulação? Vazão (throughput) Quantos trabalhos a máquina pode realizar em um intervalo de tempo? Qual é a velocidade média de execução? Quanto trabalho está sendo feito? Tempo de reposta vsvazão Se atualizarmos uma máquina com um novo processador, em que melhoramos? Se acrescentarmos uma máquina ao laboratório, em que melhoramos? -

Tempo de execução Tempo decorrido (real time) - Conta tudo (acessos a disco e a memória, E/S etc.) - Um número útil, mas normalmente não é ideal para fins de comparação Tempo de CPU (user time + system time) - Não conta E/S ou tempo gasto executando outros programas pode ser dividido em tempo de sistema e tempo de usuário Nosso foco: tempo de CPU do usuário (user time) -Tempo gasto executando as linhas de código que estão em nosso programa desconsiderando chamadas de sistema e tratamento por parte do SO Exemplo: Comando time do linux

Ciclos de relógio (clock) Em vez de informar o tempo de execução em segundos, normalmente usamos ciclos segundos = ciclos segundos programa programa ciclos Os tiques de clock indicam quando iniciar as atividades (uma abstração): tempo Tempo de ciclo = tempo entre os tiques = (fração de) segundos por ciclo Velocidade de clock (freqüência) = número de ciclos por segundo Um clock de 4Ghz possui um período de ciclo de...(ps)

Ciclos de relógio (clock) Em vez de informar o tempo de execução em segundos, normalmente usamos ciclos segundos = ciclos segundos programa programa ciclos Os tiques de clock indicam quando iniciar as atividades (uma abstração): tempo Tempo de ciclo = tempo entre os tiques = segundos por ciclo Velocidade de clock (freqüência) = ciclos por segundo Um clock de 4Ghz possui um período de ciclo de 1 Kilo = 10 3 ; 1 Mega = 10 6 ; Giga = 10 9 ; Tera = 10 12 1 seg. = 10 3 ms = 10 6 us = 10 9 ns = 10 12 ps

Como melhorar o desempenho Tempo de Exec. = Número de ciclos Tempo de um programa programa ciclo Portanto, para melhorar a quantidade de segundos para a execução de um programa (tudo mais sendo igual), você pode (aumentar ou diminuir?) o número de ciclos necessários para um programa, ou o período de duração de um ciclo de clock ou, dito de outra maneira, a velocidade de clock. Desta forma tem-se: Tempo de execução = nro de ciclos de clock * período do clock ou nro de ciclos de clock / freqüência do clock

Ciclos necessários por programa Poderíamos considerar que o número de ciclos é igual ao número de instruções? 6ª. 5ª. 4ª. 3ª. Instrução 2ª. Instrução 1ª. Instrução Tempo

Ciclos necessários por programa Poderíamos considerar que o número de ciclos é igual ao número de instruções! 6ª. 5ª. 4ª. 3ª. Instrução 2ª. Instrução 1ª. Instrução Tempo Essa suposição é incorreta, pois: Diferentes instruções levam a diferentes períodos em diferentes máquinas

Diversidade arquitetural Por exemplo: Multiplicação vs adição Operações de ponto flutuante vs operações de inteiros Acessar a memória vs acesso a registradores

Exemplo Nosso programa favorito é executado em 10 segundos no computador A, que possui uma freqüência de relógio de 4MHz. Estamos tentando ajudar um projetista de computador a construir uma nova máquina B, que execute esse programa em 6 segundos. O projetista determinou que um aumento substancial na velocidade de clock é possível, mas esse aumento afetará o restante do projeto da CPU, fazendo com que o computador B exija 1,2 vez mais ciclos de relógio do que o computador A para esse programa. Que freqüência de relógio/velocidade de clock devemos pedir para que o projetista almeje? Lembrando: Tempo de execução = nro de ciclos de clock / freqüência do clock 1 seg. = 10 3 ms = 10 6 us = 10 9 ns = 10 12 ps 1 Hz = 1 ciclo/seg., 1KHz = 10 3 ciclo/seg., 1MHz = 10 6 ciclo/seg.

Exemplo - Solução TexecA = 10seg; NroCiclosA=?; FreqA=4*10 6 TexecB = 6seg; NroCiclosB=1,2* NroCiclosA; FreqA=? Lembrando: TExecA=NroCiclosA / FreqA 10 = NroCiclosA / 4 * 10 6 NroCiclosA = 40 * 10 6 TExecB=NroCiclosB / FreqB 6 = (1,2 * NroCiclosA) / FreqB FreqB = 8* 10 6 ou seja 8MHz Tempo de execução = nro de ciclos de clock / freqüência do clock 1 seg. = 10 3 ms = 10 6 us = 10 9 ns = 10 12 ps 1 Hz = 1 ciclo/seg., 1KHz = 10 3 ciclo/seg., 1MHz = 10 6 ciclo/seg.

Tendo sido entendido os ciclos Um dado programa vai exigir Um dado número de instruções Um dado número de ciclos Um dado número de segundos Tem-se agora um vocabulário que relaciona estas quantidades Período de ciclo (segundos por ciclo) Frequência de relógio (ciclos por segundo) CPI (ciclos por instrução) Aplicações com intensas operações de pto flutuante acarretam em um maior CPI MIPS (milhões de instruções por segundo) Pode ser grande para programas que usam instruções simples

Desempenho Deteminado pelo tempo de execução Alguma das variáveis pode ser utilizada para determinar desempenho? # de ciclos de execução de um programa? # de instruções em um programa? # de ciclos por segundo? # médio de ciclos por instrução? # médio de instruções por segundo?

Desempenho Para um programa sendo executado na máquina X, DesempenhoX = 1 / Tempo_execuçãoX X é n vezes mais rápido do que Y DesempenhoX / DesempenhoY = n Problema: - se a máquina A executa um programa em 20 segundos - e a máquina B executa o mesmo programa em 25 segundos - defina quantas vez a máquina A é mais rápida que a máquina B.

CPI Número de ciclos de clock por instrução Específico para cada instrução em um dada arquitetura Pode-se contabilizar o número de ciclos médio por instrução como medida de desempenho Considerando o número de instruções no cálculo de desempenho: Nro de ciclos de relógio = nro de instruções de um dado programa * CPI Como diferentes instruções executam em um número de ciclos de relógio diferentes, a CPI é dada por uma média ponderada das instruções executadas pelo programa.

Exemplo de CPI Suponha que tenhamos duas implementações da mesma arquitetura do conjunto de instruções (ISA) Para um determinado programa, A máquina A tem tempo de ciclo de clock de 250 ps e CPI de 2,0 A máquina B tem tempo de ciclo de clock de 500 ps e CPI de 1,2 Que máquina é mais rápida para esse programa e o quanto? Lembrando: Nro de ciclos de clock = nro de instruções * CPI Tempo de execução = nro de ciclos de clock * período de um clock Desempenho = 1 / Tempo de execução

Exemplo de CPI Suponha que tenhamos duas implementações da mesma arquitetura do conjunto de instruções (ISA) Para um determinado programa, A máquina A tem tempo de ciclo de clock de 250 ps e CPI de 2,0 A máquina B tem tempo de ciclo de clock de 500 ps e CPI de 1,2 Que máquina é mais rápida para esse programa e o quanto? Programa tem nroinstrucoesx NroCiclosA = nroinstrucoesx * 2; NroCiclosB = nroinstrucoesx * 1,2 TExecA = NroCiclosA * PeriodoClockA = nroinstrucoesx * 2 * 250 = 500* nroinstrucoesx TExecB = NroCiclosB * PeriodoClockB = nroinstrucoesx * 1,2 * 500 = 600*nroInstrucoesX DesempenhoA / DesempenhoB=TExecB/TExecA= 600*nroInstrucoesX/500*nroInstrucoesX Logo a máquina A é 1,2X mais rápida do que a máquina B

Equação de desempenho A partir do exemplo anterior, podemos escrever a equação básica de desempenho: Tempo de execução = nro de instruções * CPI * período de clock ou (nro de instruções * CPI) / frequência

Equação de desempenho A partir do conhecimento dos funcionamento das diferentes instruções que compõem uma dada arquitetura e que é empregado em um dado programa, o número de ciclos de clock pode ser calculado a partir da seguinte equação

Exemplo de CPI O projetista de um compilador deseja decidir entre duas possíveis seqüências de código para a resolução de um problema. Dado os tipos de instrução é o número de ciclos por instrução (CPI) de cada tipo defina: 1) Qual o código mais rápida? 2) Qual a CPI de cada um dos programas?

Exemplo de CPI O projetista de um compilador deseja decidir entre duas possíveis seqüências de código para a resolução de um problema. Dado os tipos de instrução é o número de ciclos por instrução de cada tipo, qual seqüência é mais rápida? O código 1 executa 2+1+2=5 Instruções. O código 2 executa 4+1+1=6 Instruções. O número de ciclos de clock para o codigo 1 =(2x1)+(1x2)+(2x3)= 10 ciclos. O número de ciclos de clock para o codigo 2 =(4x1)+(1x2)+(1x3)= 9 ciclos. CPI código 1= 10/5 =2,0 CPI código 2 = 9/6=1,5 O código 2 é mais rápido, mesmo que execute uma instrução a mais pois tem CPI mais baixo.

Lei de Amdahl O ganho de desempenho que pode ser obtido melhorando uma determinada parte do sistema é limitado pela fração de tempo que essa parte é utilizada pelo sistema durante a sua operação. Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / Quantidade de melhoria) Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido?

Lei de Amdahl Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / Quantidade de melhoria) 100/4 = (100-80) + (80 / n) (25 20)*n = 80 n = 16 Quantidade de melhoria a ser aplicada sobre a parte melhorável

Lei de Amdahl O ganho de desempenho que pode ser obtido melhorando uma determinada parte do sistema é limitado pela fração de tempo que essa parte é utilizada pelo sistema durante a sua operação. Tempo de execução após melhoria = Tempo de execução não afetado + (Tempo de execução afetado / Quantidade de melhoria) Exemplo: Suponha que um programa seja executado em 100 segundos em uma máquina, com multiplicação responsável por 80 segundos desse tempo. O quanto precisamos melhorar a velocidade da multiplicação se queremos que o programa seja executado 4 vezes mais rápido? Que tal torná-lo 5 vezes mais rápido?

Bibliografia Hennessy, J. e Patterson, D. Organização e Projeto de Computadores: A interface Hardware/Software. 3ª Edição, Capítulo 4.