20.01.2015 Views

Arquitetura de Computadores Princípios de Projeto de Computadores

Arquitetura de Computadores Princípios de Projeto de Computadores

Arquitetura de Computadores Princípios de Projeto de Computadores

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Arquitetura</strong> <strong>de</strong> <strong>Computadores</strong><br />

Prof. Eduardo Simões <strong>de</strong> Albuquerque<br />

Adaptado do material do<br />

Prof. Fábio M. Costa<br />

Instituto <strong>de</strong> Informática – UFG<br />

1o. Semestre / 2006<br />

Fundamentos<br />

Parte 2<br />

<strong>Princípios</strong> <strong>de</strong> <strong>Projeto</strong> <strong>de</strong><br />

<strong>Computadores</strong><br />

1


Três áreas <strong>de</strong> aplicação com<br />

características diferentes<br />

• Computação em <strong>de</strong>sktop<br />

◦ custo / <strong>de</strong>sempenho – sistema <strong>de</strong>dicado<br />

• Servidores<br />

◦ custo / <strong>de</strong>sempenho em relação a:<br />

• confiabilida<strong>de</strong>, disponibilida<strong>de</strong>, throughput,<br />

escalabilida<strong>de</strong><br />

• <strong>Computadores</strong> embarcados<br />

◦ custo, consumo <strong>de</strong> energia (potência)<br />

A tarefa do projetista...<br />

• Determinar:<br />

◦ requisitos funcionais<br />

◦ metas <strong>de</strong> preço, potência e <strong>de</strong>sempenho<br />

◦ Influências importantes<br />

• mercado, quantida<strong>de</strong> <strong>de</strong> software existente<br />

• Otimizar o projeto<br />

◦ <strong>de</strong> acordo com as métricas adotadas<br />

• custo/<strong>de</strong>sempenho (<strong>de</strong>sktop)<br />

• throughput e disponibilida<strong>de</strong> (servidor)<br />

• consumo <strong>de</strong> energia (sistemas embarcados)<br />

• etc.<br />

2


A tarefa do projetista<br />

• Combinando:<br />

◦ <strong>Arquitetura</strong> do conjunto <strong>de</strong> instruções<br />

• nível ISA – interface hardware/software<br />

◦ Organização do computador<br />

• componentes funcionais e sua interconexão<br />

◦ Implementação <strong>de</strong> hardware<br />

• circuitos, tecnologias <strong>de</strong> integração, etc.<br />

Evolução do custo <strong>de</strong><br />

Memórias DRAM<br />

3


Evolução do custo: Caso do<br />

Pentium III<br />

Custo <strong>de</strong> um circuito integrado<br />

Intel Pentium 4<br />

4


Custo <strong>de</strong> um circuito integrado<br />

Wafer 8”<br />

564 processadores<br />

MIPS64 R20K<br />

processo: 0.18µm<br />

Distribuição do custo em um<br />

sistema <strong>de</strong> computação<br />

• Gabinete: 6%<br />

◦ folha metálica, plástico: 2%<br />

◦ fonte <strong>de</strong> alimentação, ventoinhas: 2%<br />

◦ cabos, porcas, parafusos: 1%<br />

◦ caixa <strong>de</strong> transporte, manuais: 1%<br />

• Placa do processador: 37%<br />

◦ processador: 22%<br />

◦ DRAM (128MB): 5%<br />

◦ Placa <strong>de</strong> ví<strong>de</strong>o: 5%<br />

◦ Placa-mãe (E/S e re<strong>de</strong> on-board): 5%<br />

• :Dispositivos <strong>de</strong> E/S: 37%<br />

◦ teclado e mouse: 3%<br />

◦ monitor: 19%<br />

◦ disco rígido: 9%<br />

◦ unida<strong>de</strong> <strong>de</strong> DVD: 6%<br />

• SO + pacote office básico: 20%<br />

Fonte: H&P, 2003<br />

5


Custo X preço<br />

Desempenho <strong>de</strong> Sistemas <strong>de</strong><br />

Computação<br />

6


Métricas...<br />

• tempo <strong>de</strong> resposta: sistema <strong>de</strong>dicado<br />

• throughput: sistema compartilhado<br />

• Medida mais confiável: tempo gasto na<br />

execução <strong>de</strong> programas reais<br />

Tempo <strong>de</strong> execução Y<br />

= n => Computador X é n vezes mais Tempo <strong>de</strong><br />

execução X<br />

rápido que Y<br />

Métricas: tempo<br />

• Inclui:<br />

◦ acessos a disco<br />

◦ acessos à memória<br />

◦ ativida<strong>de</strong>s <strong>de</strong> entrada / saída<br />

◦ tempo <strong>de</strong> escalonamento<br />

◦ tempo <strong>de</strong> CPU<br />

• tempo <strong>de</strong> usuário<br />

• tempo <strong>de</strong> sistema: overhead do SO<br />

• ex.: Unix time utility:<br />

TUser TSys Latency %Utiliz.<br />

90,7µs 12,9µs 2:39 65%<br />

7


Métodos para medição <strong>de</strong><br />

<strong>de</strong>sempenho<br />

• Aplicações reais<br />

◦ Ex.: Word, Photoshop<br />

• Aplicações modificadas<br />

◦ scripts para simular interação, remoção <strong>de</strong> E/S<br />

• Kernels<br />

◦ fragmentos <strong>de</strong> uma aplicação ou programa real, usados<br />

para isolar o <strong>de</strong>sempenho <strong>de</strong> características individuais<br />

da máquina<br />

• Benchmarks <strong>de</strong> brinquedo<br />

◦ exs.: quicksort, quebra-cabeças<br />

• Benchmarks sintéticos<br />

◦ código “artificial”, correspon<strong>de</strong> a um perfil médio <strong>de</strong><br />

execução<br />

Benchmarks mais conhecidos:<br />

<strong>de</strong>sktop<br />

• SPEC (Standard Performance Evaluation<br />

Corporation)<br />

◦ CPU: SPEC CPU2000, SPEC CPU 2004()<br />

◦ Gráficos:<br />

• SPECviewperf: OpenGL<br />

• SPECapc: problemas específicos <strong>de</strong> mo<strong>de</strong>lagem <strong>de</strong><br />

sólidos e CAD 3D<br />

◦ Processamento <strong>de</strong> alto <strong>de</strong>sempenho<br />

◦ Java<br />

◦ Servidores (e-mail, arquivos, Web)<br />

• www.spec.org<br />

8


Benchmarks mais conhecidos:<br />

servidores<br />

• SPEC:<br />

◦ SPECrate – throughput <strong>de</strong> processamento<br />

◦ SPECFS – servidor <strong>de</strong> arquivos<br />

◦ SPECWeb – servidores Web<br />

◦ Consi<strong>de</strong>ram as especificida<strong>de</strong>s da arquitetura<br />

<strong>de</strong> servidores (E/S eficiente,<br />

multiprocessamento)<br />

• Processamento <strong>de</strong> transações<br />

◦ TPC (Transaction Processing Council)<br />

• processamento <strong>de</strong> consultas em BDs, sistemas <strong>de</strong><br />

apoio a <strong>de</strong>cisão, transações baseadas na Web<br />

t<br />

Benchmarks mais conhecidos:<br />

sistemas embutidos<br />

• Dificulda<strong>de</strong> em se ter um único benchmark<br />

<strong>de</strong> uso amplo<br />

• EEMBC (EDN Embed<strong>de</strong>d Microprocessor<br />

Benchmark Consortium) – 5 classes:<br />

◦ automotiva / industrial<br />

◦ eletrônica <strong>de</strong> consumo<br />

◦ re<strong>de</strong><br />

◦ automação <strong>de</strong> escritório<br />

◦ telecomunicações<br />

9


Benchmark Games<br />

•An embarrassed Intel Corp. acknowledged Friday that a bug in a software<br />

program known as a compiler had led the company to overstate the speed<br />

of its microprocessor chips on an industry benchmark by 10 percent.<br />

However, industry analysts said the coding error…was a sad commentary<br />

on a common industry practice of “cheating” on standardized performance<br />

tests…The error was pointed out to Intel two days ago by a competitor,<br />

Motorola …came in a test known as SPECint92…Intel acknowledged that it<br />

had “optimized” its compiler to improve its test scores. The company had<br />

also said that it did not like the practice but felt to compelled to make the<br />

optimizations because its competitors were doing the same thing…At the<br />

heart of Intel’s problem is the practice of “tuning” compiler programs to<br />

recognize certain computing problems in the test and then substituting<br />

special handwritten pieces of co<strong>de</strong>…<br />

Saturday, January 6, 1996 New York Times<br />

SPEC ‘89<br />

• Compiler “enhancements” and performance<br />

800<br />

700<br />

600<br />

SPEC performance ratio<br />

500<br />

400<br />

300<br />

200<br />

100<br />

0<br />

gcc<br />

espresso<br />

spice<br />

doduc<br />

nasa7<br />

li<br />

eqntott<br />

matrix300<br />

fpppp<br />

tomcatv<br />

Benchmark<br />

Compiler<br />

Enhanced compiler<br />

10


SPEC CPU2000<br />

SPEC 2000<br />

Does doubling the clock rate double the performance<br />

Can a machine with a slower clock rate have better performance<br />

1400<br />

1200<br />

1000<br />

Pentium 4 CFP2000<br />

Pentium 4 CINT2000<br />

1.6<br />

1.4<br />

1.2<br />

Pentium M @ 1.6/0.6 GHz<br />

Pentium 4-M @ 2.4/1.2 GHz<br />

Pentium III-M @ 1.2/0.8 GHz<br />

800<br />

1.0<br />

600<br />

0.8<br />

400<br />

200<br />

Pentium III CINT2000<br />

Pentium III CFP2000<br />

0.6<br />

0.4<br />

0<br />

0.2<br />

500 1000 1500 2000 2500 3000 3500<br />

0.0<br />

Clock rate in MHz<br />

SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000 SPECINT2000 SPECFP2000<br />

Always on/maximum clock Laptop mo<strong>de</strong>/adaptive<br />

clock<br />

Minimum power/minimum<br />

clock<br />

Benchmark and power mo<strong>de</strong><br />

11


<strong>Princípios</strong> <strong>de</strong> projeto...<br />

• Tornar rápido o caso comum<br />

◦ gastar mais tempo otimizando as partes do<br />

sistema que são usadas com mais<br />

freqüência<br />

• Lei <strong>de</strong> Amdahl:<br />

◦ melhorias <strong>de</strong> <strong>de</strong>sempenho <strong>de</strong> partes <strong>de</strong> um<br />

sistema são diluídas no cálculo da<br />

melhoria incremental do sistema completo<br />

Fração aperfeiçoada<br />

Tempo <strong>de</strong> execução novo = Tempo <strong>de</strong> execução antigo X (1-Fração aperfeiçoada ) +<br />

Aceleração aperfeiçoada<br />

A lei <strong>de</strong> Amdahl: Exemplo<br />

• Suponha que um programa gaste 100s para<br />

executar em uma certa máquina, com<br />

operações <strong>de</strong> multiplicação respon<strong>de</strong>ndo<br />

por 80s do total. Por quanto <strong>de</strong>vemos<br />

melhorar a velocida<strong>de</strong> <strong>de</strong> operações <strong>de</strong><br />

multiplicação se quisermos que o programa<br />

execute 4 vezes mais rápido<br />

• E para executar 5 vezes mais rápido<br />

Fração aperfeiçoada<br />

Tempo <strong>de</strong> execução novo = Tempo <strong>de</strong> execução antigo X (1-Fração aperfeiçoada ) +<br />

Aceleração aperfeiçoada<br />

12


<strong>Princípios</strong> <strong>de</strong> projeto<br />

• Melhorar a equação <strong>de</strong> <strong>de</strong>sempenho da<br />

CPU:<br />

Instruções Ciclos <strong>de</strong> clock Segundos<br />

X X = Tempo <strong>de</strong> CPU(seg/progr.)<br />

Programa Instrução Ciclo <strong>de</strong> clock<br />

Dependências<br />

◦ tempo <strong>de</strong> ciclo <strong>de</strong> clock: tecnologia <strong>de</strong><br />

hardware e organização<br />

◦ CPI (ciclos por instrução): organização e<br />

arquitetura do conjunto <strong>de</strong> instruções<br />

◦ Contagem <strong>de</strong> instruções (por programa):<br />

arquitetura do conjunto <strong>de</strong> instruções e<br />

tecnologia <strong>de</strong> compiladores<br />

Ciclos <strong>de</strong> clock<br />

• Relatar o <strong>de</strong>sempenho em termos do número <strong>de</strong> ciclos gastos ao<br />

invés <strong>de</strong> tempo:<br />

segundos ciclos segundos<br />

= X<br />

programa programa ciclo<br />

• “Tics” <strong>de</strong> clock indicam quando iniciar alguma ativida<strong>de</strong><br />

• Tempo <strong>de</strong> ciclo = tempo entre ticks = segundos por ciclo<br />

• Taxa <strong>de</strong> clock (freqüência) = ciclos por segundo<br />

◦ (1Hz = 1 ciclo/segundo)<br />

• Ex.: processador <strong>de</strong> 2.4GHz tem um tempo <strong>de</strong> ciclo <strong>de</strong>:<br />

time<br />

1<br />

= 0,42 x 10 9 s = 0,42ns<br />

2.4 x 10 9<br />

13


Formas <strong>de</strong> melhorar a<br />

eficiência<br />

segundos ciclos segundos<br />

= X<br />

programa programa ciclo<br />

• Reduzir o número <strong>de</strong> ciclos por programa<br />

◦ otimizações feitas pelo compilador<br />

◦ conjunto <strong>de</strong> instruções otimizado<br />

• Reduzir o tempo <strong>de</strong> clock (i.e., aumentar a<br />

freqüência)<br />

◦ tecnologia <strong>de</strong> hardware<br />

◦ organização da máquina<br />

Número <strong>de</strong> ciclos gastos em<br />

um programa<br />

• Po<strong>de</strong>ria assumir que o número <strong>de</strong> ciclos é igual ao número <strong>de</strong><br />

instruções do programa:<br />

1st instruction<br />

2nd instruction<br />

3rd instruction<br />

4th<br />

5th<br />

6th<br />

...<br />

• Mas:<br />

◦ algumas instruções são mais complexas do que outras, gastando mais<br />

tempo<br />

◦ instruções diferentes gastam tempos diferentes em máquinas diferentes<br />

14


Diferentes números <strong>de</strong> ciclos<br />

para diferentes instruções<br />

• Multiplicação gasta mais tempo do que<br />

adição<br />

• Operações <strong>de</strong> ponto flutuante gastam mais<br />

tempo que operações <strong>de</strong> inteiros<br />

• Acesso à memória toma mais tempo do que<br />

acesso a registradores<br />

Exercício: tempo <strong>de</strong> clock<br />

• “Our favorite program runs in 10 seconds on computer<br />

A, which has a 400 Mhz. clock. We are trying to help a<br />

computer <strong>de</strong>signer build a new machine B, that will run<br />

this program in 6 seconds. The <strong>de</strong>signer can use new (or<br />

perhaps more expensive) technology to substantially<br />

increase the clock rate, but has informed us that this<br />

increase will affect the rest of the CPU <strong>de</strong>sign, causing<br />

machine B to require 1.2 times as many clock cycles as<br />

machine A for the same program. What clock rate<br />

should we tell the <strong>de</strong>signer to target”<br />

15


Tempo <strong>de</strong> clock e <strong>de</strong>sempenho<br />

Dobrar a freqüência <strong>de</strong> clock dobra o <strong>de</strong>sempenho<br />

Po<strong>de</strong> uma máquina com clock mais lento ter um <strong>de</strong>sempenho melhor<br />

10<br />

9<br />

8<br />

7<br />

10<br />

9<br />

8<br />

7<br />

SPECint<br />

6<br />

5<br />

4<br />

SPECfp<br />

6<br />

5<br />

4<br />

3<br />

2<br />

1<br />

3<br />

2<br />

1<br />

0<br />

0<br />

50<br />

100<br />

150<br />

200 250<br />

50<br />

100<br />

150<br />

200 250<br />

Clock rate (MHz)<br />

Pentium<br />

Clock rate (MHz)<br />

Pentium<br />

Pentium Pro<br />

Pentium Pro<br />

Exercício: CPI<br />

• Suponha que temos duas máquinas implementando a<br />

mesma arquitetura <strong>de</strong> conjunto <strong>de</strong> instruções<br />

• Para um certo programa:<br />

◦ a máquina A tem um período <strong>de</strong> clock <strong>de</strong> 10ns e uma CPI = 2,0<br />

◦ a máquina B tem um período <strong>de</strong> clock <strong>de</strong> 20ns e uma CPI = 1,2<br />

• Qual das duas máquinas é mais rápida para este<br />

programa Qual a diferença entre elas<br />

• Se duas máquinas têm a mesma ISA, qual das seguintes<br />

quantida<strong>de</strong>s é sempre idêntica<br />

◦ freqüência <strong>de</strong> clock, CPI, tempo <strong>de</strong> execução, número <strong>de</strong> instruções por<br />

programa, MIPS<br />

16


Exemplo: Número <strong>de</strong><br />

instruções por programa<br />

• Um projetista <strong>de</strong> compilador está tentando se <strong>de</strong>cidir<br />

entre duas seqüências <strong>de</strong> código para uma máquina<br />

particular.<br />

• Baseado na implementação <strong>de</strong> hardware, há três classes<br />

distintas <strong>de</strong> instruções: Classe A, Classe B e Classe C,<br />

que requerem respectivamente um, dois e três ciclos <strong>de</strong><br />

clock.<br />

◦ A primeira seqüência tem 5 instruções: 2 <strong>de</strong> A, 1 <strong>de</strong> B e 2 <strong>de</strong> C<br />

◦ A segunda seqüência tem 6 instruções: 4 <strong>de</strong> A, 1 <strong>de</strong> B e 1 <strong>de</strong> C<br />

◦ Qual seqüência será mais rápida Qual a diferença<br />

◦ Qual é a CPI para cada seqüência<br />

MIPS<br />

• Milhões <strong>de</strong> instruções por segundo<br />

◦ mais alto para programas que usam<br />

instruções simples<br />

17


Exemplo: MIPS<br />

• Dois compiladores diferentes estão sendo testados para uma<br />

máquina <strong>de</strong> 100MHz com três classes diferentes <strong>de</strong> instruções:<br />

Classe A, Classe B, e Classe C, que requerem 1, 2 e 3 ciclos <strong>de</strong><br />

relógio respectivamente. Ambos os compiladores são usados<br />

para produzir código para um programa em gran<strong>de</strong> escala.<br />

◦ O código do primeiro compilador usa 2 milhões <strong>de</strong> instruções<br />

Classe A, 1 milhão <strong>de</strong> instruções Classe B, e 2 milhões <strong>de</strong><br />

instruções Classe C.<br />

◦ O código do segundo compilador usa 4 milhões <strong>de</strong> instruções<br />

Classe A, 1 milhão <strong>de</strong> instruções Classe B e 1 milhão <strong>de</strong><br />

instruções classe C.<br />

• Qual seqüência será mais rápida <strong>de</strong> acordo com MIPS<br />

• Qual seqüência será mais rápida <strong>de</strong> acordo com o tempo <strong>de</strong><br />

exec.<br />

Resumindo<br />

• Desempenho é específico para cada programa<br />

◦ o tempo <strong>de</strong> execução total é a medida <strong>de</strong> <strong>de</strong>sempenho consistente<br />

• Para uma dada arquitetura, melhorias <strong>de</strong> <strong>de</strong>sempenho<br />

resultam <strong>de</strong>:<br />

◦ melhoria na freqüência <strong>de</strong> relógio<br />

◦ melhorias na arquitetura e na organização do processador para reduzir a<br />

contagem <strong>de</strong> CPI<br />

◦ melhorias nos compiladores para reduzir tanto a CPI quanto a contagem<br />

<strong>de</strong> instruções/programa<br />

• Armadilha: esperar que melhorias no <strong>de</strong>sempenho <strong>de</strong> um<br />

aspecto da máquina vão afetar seu <strong>de</strong>sempenho global<br />

na mesma proporção<br />

18


Outros princípios <strong>de</strong> projeto<br />

visando <strong>de</strong>sempenho<br />

• Explorar o “princípio da localida<strong>de</strong>”<br />

• Explorar as oportunida<strong>de</strong>s <strong>de</strong><br />

paralelismo<br />

• Empregar técnicas <strong>de</strong> otimização no<br />

compilador<br />

Bibliografia<br />

Hennessy & Patterson<br />

Cap. 1: Fundamentos do<br />

<strong>Projeto</strong> <strong>de</strong> <strong>Computadores</strong><br />

Patterson & Hennessy<br />

Cap. 2: O Papel da Performance<br />

19

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!