Capítulo 1 Abstrações do Computador e Tecnologia
A Revolução do Computador Progresso na tecnologia do computador Sustentado pela Moore s Law onde a capacidade do transistor dobra a cada18-24 meses Faz novas aplicações viáveis Computadores em automóveis Telefones celulares Projeto genoma humano sequenciar um a um os genes que codificam as proteínas do corpo humano World Wide Web Máquinas de Busca Computadores são pervasivos
Classes de Computadores Computadores Desktop Propósito geral, variedade de software Sujeito ao balanceamento de custo/desempenho Computadores servidores Baseado em rede Alta capacidade, desempenho e confiabilidade Vão desde pequenos até mega servidores Computadores embarcados Escondidos como componentes do sistema Severas restrições de energia/desempenho/custo
O Mercado de Processador
O que você aprenderá Como programas são traduzidos para linguagem de máquina E como o hardware executam tais programas A interface de hardware/softwae O que determina o desempenho do programa E como isto pode ser melhorado Como projetista de hardware melhoram desempenho O que é o processamento paralelo
Entendendo Desempenho Algoritmo Determina o número de operações executadas Linguagem de programação, compilador, arquitetura Determina o número de instruções de máquinas executadas por operação Sistema de memória e processador Determina quão rápida as intruções são executadas Sistema de E/S (incluindo SO) Determina quão rápida operações de E/S são executadas
Abaixo do seu Programa Software de aplicação Escrito em linguagens de alto nível Software do sistema Compilador: traduz código em alto nível para código de máquina Sistema operacional: Hardware Tratar entrada/saída Gerenciar armazenamento e memória Escalonamento de tarefas & compartilhamento de recursos Processador, memória, controladores de E/S
Níveis de Código de Programa Linguagem alto nível Nível de abstração mais próximo do domínio do problema Fornece produtividade e portabilidade Linguagem Assembly Representação textual das instruções Representação do hardware Dígitos binários (bits) Instruções e dados codificados
Componentes de um computador The BIG Picture Mesmo componentes para todos os tipos de computador Desktop, servidor, embarcado Entrada/Saída inclui Dispositivo de interface com o usuário Display, teclado, mouse Disp. de armazenagem Hard disk, CD/DVD, flash Adaptadores de rede Comunicação com outros computadores
Anatomia de Computador Disp. de saída Cabo de rede Disp. de entrada Disp. De entrada
Anatomia de um Mouse Mouse ótico LED ilumina a área de trabalho Pequena câmera de baixa resolução Processador de imagem básico Checa por movimentos x, y Botões & roda Substituição do mouse mecânico (protótipo em 1967)
Através do Espelho Tela LCD: elementos de imagem (pixels) A imagem é armazenada no frame buffer (armazena o mapa de bit) Matriz de exibição: varia de 640x480 à 2560x1600 Número de colunas x número de linhas = número de pixels Frame buffer com 4 bits per pixel Cathode ray tube Tonalidade mais clara
Abrindo a Caixa dual in-line memory model
Dentro do Processador (CPU) Caminho de dados (músculo): executa operações em dados Controle (cérebro): conta ao caminho de dados, memória, e dispostivos E/S o que fazer de acordo com as instruções do programa Memória cache Pequena memória SRAM (static random access memory) rápida (que não precisa ser atualizada periodicamente) para acesso imediato aos dados
Dentro do Processador AMD Barcelona: 4 núcleos de processador
Abstrações The BIG Picture Abstração nos ajuda a lidar com a complexidade Esconde detalhes de baixo nível Arquitetura de conjunto de instruções (ISA - Instruction set architecture) A interface do hardware/software Application binary interface O ISA mais a interface de software do sistema Implementação Os detalhes subjacentes e a interface
Um Lugar Seguro para os Dados Memória principal volátil Perde instrúções e dados quando desligado Memória secundária não volátil Disco magnético Memória flash Disco óptico (CDROM, DVD)
Redes Comunicação e compartilhamento de recursos Local area network (LAN): Ethernet Dentro de um prédio Wide area network (WAN): Internet Wireless network: WiFi, Bluetooth
Tendências da Tecnologia Tecnologia eletrônica continua a evoluir Melhorou capacidade e desempenho Reduziu custo capacidade da DRAM quadruplicou a cada três anos Ano Tecnologia Desempenho/custo relativo 1951 Vacuum tube 1 1965 Transistor 35 1975 Integrated circuit (IC) 900 1995 Very large scale IC (VLSI) 2,400,000 2005 Ultra large scale IC 6,200,000,000
Definindo Desempenho Qual avião tem o melhor desempenho? maior capacidade Boeing 777 Boeing 747 BAC/Sud Concorde Douglas DC-8-50 0 100 200 300 400 500 Passenger Capacity Boeing 777 Boeing 747 BAC/Sud Concorde Douglas DC- 8-50 0 2000 4000 6000 8000 10000 Cruising Range (miles) maior alcance maior velocidade Boeing 777 Boeing 747 BAC/Sud Concorde Douglas DC-8-50 Boeing 777 Boeing 747 BAC/Sud Concorde Douglas DC- 8-50 0 500 1000 1500 Cruising Speed (mph) 0 100000 200000 300000 400000 Passengers x mph
Tempo de Resposta e Vazão Tempo de resposta Quanto tempo leva para realizar uma tarefa Computadores desktop e embarcados Vazão (servidores) Trabalho total realizado por unidade de tempo e.g., tarefas/transações/ por hora Como o tempo de resposta e vazão são afetados por Substituir o processador com uma versão mais rápida? Adicionar mais processadores? Focaremos no tempo de resposta por agora
Exercício As seguintes mudanças para um sistema computacional aumenta vazão, diminui tempo de resposta, ou ambos? 1. Substituir o processador em um computador com uma versão mais rápida? 2. Adicionar processadores adicionais a um sistema que usa várias processadores para tarefas separadas por exemplo, procurando na World Wide Web
Exercício As seguintes mudanças para um sistema computacional aumenta vazão, diminui tempo de resposta, ou ambos? 1. Substituir o processador em um computador com uma versão mais rápida? Diminuir tempo de resposta quase sempre melhora vazão. Neste caso, ambos tempo de resposta e vazão são melhorados 2. Adicionar processadores a um sistema que usa vários processadores para tarefas separadas por exemplo, procurando na World Wide Web 3. nenhuma tarefa é executada mais rápida, assim somente vazão é aumentada. Se a demanda por processamento for alta, o sistema pode forçar enfileiramento dos processos. Neste caso, ambos são melhorados
Desempenho Relativo Define Desempenho = 1/Tempo de execução X é n vezes mais rápido do que Y Desempenho Tempo de execucao X Desempenho Y Y Tempo de execucao X n Exemplo: tempo necessário para executar um programa 10s em A, 15s em B Tempo de execução B / Tempo de Execução A = 15s / 10s = 1.5 Assim A é 1.5 vezes mais rápido do que B
Exercício O desempenho do computador C é quatro vezes mais rápido do que o desempenho do computador B, o qual executa uma dada aplicação em 28 segundos. Quanto tempo o computador C levará para executar aquela aplicação? O computador C executará em: Tempo de Execução B / Tempo de Execução do C = n Tempo de Execução do C = 28/4=7s
Medindo Tempo de Execução Tempo decorrido Tempo de resposta total, incluindo todos os aspectos Processamento, E/S, sobrecarga do SO, tempo ocioso Determina desempenho do sistema Tempo de CPU Tempo gasta no processamento de uma determinada tarefa Disconta tempo de E/S, outras tarefas compartilhadas Compreende o tempo de CPU do usuário e o tempo de CPU do sistema Diferentes programas são afetados diferentemente pela CPU e desempenho do sistema
Relógio da CPU Operação de hardware digital é governado por um relógio de taxa constante Período de relógio relógio (ciclos) computação e transf. de dados atualiza estado Período do relógio: duração de um ciclo de clock e.g., 0.25ns = 250ps = 250 10 12 s Frquência do relógio (taxa): ciclos por segundo e.g., 4.0GHz = 4000MHz = 4.0 10 9 Hz
Tempo de CPU Tempo de CPU Ciclos de Relógio Tempo de Ciclo Ciclos de Relógio Taxa de Relógio Desempenho melhorado por Redução do número de ciclos de relógio Aumento da taxa de relógio Engenheiros eletrônicos devem sempre balancear taxa de relógio contra contagem de ciclo
Exemplo de Tempo da CPU Computador A: relógio 2GHz, tempo de CPU 10s Projetando computador B Objetivo: tempo de CPU de 6s Pode ter relógio mais rápido, mas causa 1.2 ciclos de relógio de A Quão rápido deve ser o relógio do computador B? Taxa de Relógio Ciclos de Relógio Taxa de Relógio B A B Ciclos de RelógioB 1.2 Ciclos de Relógio Tempo de CPUB 6s Tempo de CPU Taxa de Relógio 10s 2GHz 1.22010 6s 9 A 2010 9 2410 6s 9 4GHz A A
Contagem de Instrução e CPI Ciclos de Relógio Cont. Instrução Ciclos por Instrução T. de CPU Cont. Instrução CPI Tempo de Ciclo Cont. Instrução CPI Taxa de Relógio Contagem de instrução para um programa Determinado pelo programa, ISA e compilador Ciclos médios por instrução Determinado pelo hardware da CPU Se diferentes instruções têm diferentes CPI (clock cycles per instruction) CPI médio afetado pela mistura de instruções
Exemplo de CPI Computador A: T. ciclo = 250ps, CPI = 2.0 Computador B: T. ciclo = 500ps, CPI = 1.2 Mesmo ISA Qual é mais rápido, e por quanto? Tempo de CPU A Tempo de CPU B Tempo de CPU B Tempo de CPU A Contagem de Inst. CPI A I 2.0 250ps I500ps Contagem de Inst. CPI B I1.2500ps I 600ps I 600ps I500ps 1.2 Tempo de Ciclo A A é mais rápido Tempo de Ciclo B por esta quant.
CPI em Mais Detalhes Se diferentes classes de instrução levam diferentes números de ciclos Ciclos de Relógio n i1 (CPIi Cont. Instruçãoi) Média ponderada do CPI CPI Ciclos de relógio Cont. Instrução n i1 CPI i Cont. Instruçãoi Cont. Instrução Frequência relativa
Exemplo de CPI (1) Um projetista de compilador está decidindo entre dois segmentos de código para um computador CPI para cada classe de instrução Classe A B C CPI para classe 1 2 3 O projetista está considerando duas sequências de código que requerem as seguintes ICs Classe A B C IC na sequência 1 2 1 2 IC na sequência 2 4 1 1 Instruction count
Exemplo de CPI (2) Sequências de códigos alternativos compilados usando instruções em classes A, B e C Instruction count Classe A B C CPI para classe 1 2 3 IC na sequência 1 2 1 2 IC na sequência 2 4 1 1 Sequência 1: IC = 5 Ciclos de Relógio = 2 1 + 1 2 + 2 3 = 10 Avg. CPI = 10/5 = 2.0 Sequência 2: IC = 6 Ciclos de Relógio = 4 1 + 1 2 + 1 3 = 9 Avg. CPI = 9/6 = 1.5 Seq. 2 é mais rápido (mesmo tendo uma instrução a mais)
Resumo de Desempenho The BIG Picture Instruções CiclosdeRelógio TempodeCPU Programa Instrução Segundos CiclodeRelógio Desempenho depende Algoritmo: afeta IC, possivelmente CPI Linguagem de programação: afeta IC, CPI Compilador: afeta IC, CPI ISA: afeta IC, CPI, T c
Exercício (1) Uma dada aplicação escrita em Java executa em 15 segundos em um processador desktop. Um novo compilador Java solicita somente 0.6 instruções referente ao antigo compilador, porém aumenta o CPI por 1.1. Quão rápido nós podemos esperar que a aplicação execute usando este novo compilador? Tempo A Tempo B Tempo B Tempo A Contagem de Inst. CPI T. Ciclo A 0.6Contagem de Inst. 1.1CPI T. Ciclo A 0.6I1.1CPI T. Ciclo A ICPI T. Ciclo A
Exercício (2) Tempo B 0.61.1 0.66 Tempo A Tempo 0.6615 segundos B Tempo 9.9 segundos B
Tendências de Potência Em 20 anos, tensão reduziu de 5V para 1V Cada nova geração, reduziu cerca de 15% Em tecnologia CMOS (complementary metal oxide semiconductor) Power Capacitive load Voltage 2 Frequency 30 5V 1V 1000
Redução da Potência Suponha que uma nova CPU tem 85% da carga capacitiva da CPU antiga 15% de redução da tensão e 15% da frequência 2 Pnew Cold 0.85(Vold 0.85) Fold 0.85 4 0.85 2 P C V F old old old O limite da potência Não podemos mais reduzir a tensão Não podemos remover mais calor old 0.52 Novo processador usa metade da potência do antigo processador Como podemos melhorar o desempenho?
Desempenho uniprocessador Restringido pela potência, paralelismo a nível de instrução e latência de memória
Multiprocessadores Microprocessadores de vários núcleos Mais do que um processador por chip Requer programação paralela explicitamente Compare com paralelismo a nível de instrução Hardware executa múltiplias instruções ao mesmo tempo Escondido do programador Difícil de fazer Programação para desempenho Balanceamento de carga Otimizando comunicação e sincronização
SPEC CPU Benchmark Programas usados para medir desempenho Supostamente típico da carga de trabalho real Standard Performance Evaluation Corp (SPEC) Desenvolve benchmarks para CPU, I/O, Web, SPEC CPU2006 Tempo decorrido para executar uma seleção de programas Desprezível E/S, foco no desempenho da CPU Normaliza em relação a máquina de referência: divide o T. execução da referência pelo medido (SPECratio) Resume como média geométrica das taxas de desempenho n n Taxa do tempo de execução i i1
CINT2006 for Opteron X4 2356 Name Description IC 10 9 CPI Tc (ns) Exec time Ref time SPECratio perl Interpreted string processing 2,118 0.75 0.40 637 9,777 15.3 bzip2 Block-sorting compression 2,389 0.85 0.40 817 9,650 11.8 gcc GNU C Compiler 1,050 1.72 0.47 24 8,050 11.1 mcf Combinatorial optimization 336 10.00 0.40 1,345 9,120 6.8 go Go game (AI) 1,658 1.09 0.40 721 10,490 14.6 hmmer Search gene sequence 2,783 0.80 0.40 890 9,330 10.5 sjeng Chess game (AI) 2,176 0.96 0.48 37 12,100 14.5 libquantum Quantum computer simulation 1,623 1.61 0.40 1,047 20,720 19.8 h264avc Video compression 3,102 0.80 0.40 993 22,130 22.3 omnetpp Discrete event simulation 587 2.94 0.40 690 6,250 9.1 astar Games/path finding 1,082 1.79 0.40 773 7,020 9.1 xalancbmk XML parsing 1,058 2.70 0.40 1,143 6,900 6.0 Geometric mean 11.7 Altas taxas de falta de cache: indica que o dado solicitado não está disponível na memória física
SPEC Power Benchmark Consumo de potência do servidor em diferentes níveis de carga de trabalho Desempenho: ssj_ops/sec Potência: Watts (Joules/sec) Overall ssj_ops per Watt 10 i0 10 ssj_ops i power i0 i Considera a carga alvo de 0% à 100%
SPECpower_ssj2008 para X4 Carga alvo % Desempenho (ssj_ops/sec) Potência Média (Watts) 100% 231,867 295 90% 211,282 286 80% 185,803 275 70% 163,427 265 60% 140,160 256 50% 118,324 246 40% 920,35 233 30% 70,500 222 20% 47,126 206 10% 23,066 180 0% 0 141 Montante global 1,283,590 2,605 ssj_ops/ power 493 2.3 GHz AMD Opteron X4 com 16GB RAM e 500GB de disco
Armadilha: Lei de Amdahl Melhorando o aspecto de um computador e esperando uma melhoria proporcional no desempenho global T melhorado Tafetado T fator de melhoria não afetado Ex.: multiplicação leva 80s de um total de 100s 5x mais rápido Quanto de melhoria no desempenho da multiplicação para conseguir 5 no global? 80 T improved 100 80 n Não pode ser feito! 80 20 20 n Corolário: torma o caso comum rápido
Falácia: Baixa Potência em Ocioso Olhar de volta para o benchmark de potência X4 Em 100% de carga: 295W Em 50% de carga: 246W (83%) Em 10% de carga: 180W (61%) Centro de dados do Google Principalmente opera em 10% 50% de carga Em 100% de carga menos do que 1% do tempo Considerar projeto de processadores para considerar a potência proporcional a carga
Armadilha: MIPS Como uma Métrica de Desempenho MIPS: Millions of Instructions Per Second MIPS Computadores mais rápidos têm maior taxa de MIPS Não leva em consideração Diferença nos ISAs entre computadores Diferenças em complexidades entre instruções Contagem de Instrução Tempo de Execução10 Contagem de Instrução Contagem de Instrução CPI 10 Taxa de Relógio 6 6 Taxa de Relógio 6 CPI10 CPI varia entre programas em uma dada CPU
Exercício Considere as seguintes medidas de desempenho para um programa Medida Contagem de instrução Computador A Computador B 10 bilhões 8 bilhões Taxa de relógio 4 GHz 4 GHz CPI 1.0 1.1 a) Qual computador tem a maior taxa de MIPS? b) Qual computador é mais rápido?
Solução a) Qual computador tem a maior taxa de MIPS? MIPS MIPS A B Taxa de Relógio 6 CPI 10 A Taxa de Relógio 6 CPI 10 B A B 410 110 9 6 9 410 1.110 6 410 3 3.63610 3 a) Qual computador é mais rápido? Tempo CPU Tempo CPU A B Contagem de Instrução Taxa de Relógio Contagem de Instrução Taxa de Relógio A B A B CPI CPI A B 9 1010 1.0 2.5s 9 410 9 810 1.1 9 410 2s
Observações finais Custo/desempenho está melhorando Devido ao desenvolvimento da tecnologia subjacente Camadas hierárquicas de abstração Em hardware e software Arquitetura do conjunto de instruções A interface hardware/software Tempo de execução: a melhor medida de desempenho Potência é um fator limitante Usar paralelismo para melhorar desempenho