A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Aveiro, 28 de Abril de 2004 1 Arquitectura de Computadores II Ano lectivo 2003/2004 Nuno

Apresentações semelhantes


Apresentação em tema: "Aveiro, 28 de Abril de 2004 1 Arquitectura de Computadores II Ano lectivo 2003/2004 Nuno"— Transcrição da apresentação:

1 Aveiro, 28 de Abril de Arquitectura de Computadores II Ano lectivo 2003/2004 Nuno

2 Aveiro, 28 de Abril de Reduzir hit time Caches simples e pequenas Acesso à cache em pipeline (aumenta o débito, não a latência) Trace caches Evitar a conversão de endereço virtual para endereço físico

3 Aveiro, 28 de Abril de Reduzir miss rate Blocos maiores Mais associatividade Victim caches Pequenas caches totalmente associativas que armazenam blocos retirados da cache Prefetching Por hardware ou controlado por software Optimizações por software

4 Aveiro, 28 de Abril de Reduzir miss penalty Early restart/critical word first Non-blocking caches Caches com vários níveis Cache L1 pequena e rápida Velocidade é crítica Cache L2 grande Velocidade afecta apenas o miss penalty de L1 Reduzir o miss rate global

5 Aveiro, 28 de Abril de níveis de cache tempo m. acesso = hit time L1 +miss rate L1 *miss penalty L1 miss penalty L1 = hit time L2 + miss rate L2 * miss penalty L2 Miss rate global = miss rate L1 * miss rate L2 Se em 1000 acessos existirem 40 misses em L1 e 20 em L2 quais os miss rates de L1, L2 e global?

6 Aveiro, 28 de Abril de Desempenho da cache multi- nível Processador com CPI base de 1, frequência de 500MHz, tempo de acesso à memória de 200ns, miss rate na cache de nível 1 de 5% e acesso em 1 ciclo. Qual o speedup se a cache de nível 2 tem um tempo de acesso de 20 ns e reduzir o miss rate para 2%? miss penalty = 200ns/2ns = 100 ciclos CPI = 1 + memory stall cycles/instrução = 1 + 5%*100 = 6 hit time L2 = 20/2 = 10 ciclos CPI = 1 + 5%*10 + 2%*100 = 3.5 speedup = 6/3.5 = 1.7

7 Aveiro, 28 de Abril de Trace cache Aumenta a localidade espacial dos dados da cache No mesmo bloco da cache podem existir endereços não adjacentes Blocos da trace cache capturam o padrão de acesso dinâmico às instruções Mais do que 1 basic block, mais do que 1 salto condicional com previsão podem coexistir no mesmo bloco Melhor utilização do espaço para dados Pentium 4 coloca a trace cache depois da descodificação. Armazena na trace cache instruções já descodificadas (uops)

8 Aveiro, 28 de Abril de Optimização da cache Técnica Miss penalty Miss rate Hit Time Complexidade hardware Caches multi-nível+2 Critical Word first/early restart+2 Victim caches++2 Aumentar tamanho bloco-+0 Aumentar Tamanho cache+-1 Aumentar associatividade+-1 Por software+0 Caches não bloqueantes+3 Hardware prefetch++2/3 Caches pequenas e simples-+0 Trace cache+3

9 Aveiro, 28 de Abril de Exemplos Pentium4 DL1 8KB (16KB 90nm), 64bytes, 4-way (8-way 90nm), write-through IL1 Trace cache 12Kuops L2 única, 256KB (1MB 90nm), 128 bytes, 8-way, non-blocking AMD Athlon XP DL1 e IL1 64KB, 64 bytes, 2-way L2 única 512KB, 16-way Alpha DL1 e IL1 64KB, 64 bytes, 2-way, write-back L2 várias configurações Itanium2 DL1 16KB, 64 bytes, 4-way, write-through; IL1 16KB, 64 bytes, 4-way L2 256KB, 128 bytes, 8-way, write-back, non-blocking L3 3MB, 128 bytes, 12-way, write-back

10 Aveiro, 28 de Abril de Optimizações por software Agrupamento de dados Dados que são acedidos na mesma zona do código devem ser colocados na mesma zona de memória int x[10000],y[10000] for(i=0;i<10000;i++) soma += x[i] + y[i] struct {int x,y;}a[10000] for(i=0;i<10000;i++) soma += a[i].x + a[i].y Aumentar a localidade espacial

11 Aveiro, 28 de Abril de Optimizações por software Reordenamento de ciclos Acesso à memória deve ser realizado de forma sequencial Ordem de ciclos encadeados deve ser considerada for(j=0;j<100;j++) for(i=0;i<2500;i++) x[i][j] = 3*x[i][j] for(i=0;i<2500;i++) for(j=0;j<100;j++) x[i][j] = 3*x[i][j] Aumentar a localidade espacial

12 Aveiro, 28 de Abril de Optimizações por software Fusão de ciclos Acesso à memória deve ser realizado de forma sequencial Agrupar sequências de ciclos for(j=0;j<10000;j++) x[i] = 3*y[i] + c[i] for(j=0;j<10000;j++) z[i] = x[i] + c[i] for(j=0;j<10000;j++) { x[i] = 3*y[i] + c[i] z[i] = x[i] + c[i] } Aumentar a localidade temporal

13 Aveiro, 28 de Abril de Optimizações por software Cálculo por blocos Reorganizar ordem das operações de forma a que o conjunto de dados de trabalho numa fase caiba na cache Realizar o máximo de operações em cada conjunto antes de passar para o próximo for(i=0; i

14 Aveiro, 28 de Abril de Optimizações por software Cálculo por blocos for(jb=0; jb

15 Aveiro, 28 de Abril de Organização da memória Latência (Modelo simplificado) Enviar endereço Esperar por dados Receber dados Sistema de memória Latência Estrutura da cache Interligação CPU-cache, cache-memória A organização do sistema de memória pode reduzir a latência na leitura de vários endereços consecutivos

16 Aveiro, 28 de Abril de Organização da memória Latência (Modelo simplificado) Enviar endereço4 ciclos Esperar por dados56 ciclos Receber dados4 ciclos CPU cache Memória 32 Cache com blocos de 4 palavras Miss penalty=? Miss penalty = 4*4 + 4*56 + 4*4 = 256 ciclos

17 Aveiro, 28 de Abril de Organização da memória Aumentar a largura da memória e do barramento de acesso à memória CPU cache Memória 32 32*4 Cache com blocos de 4 palavras Miss penalty=? Miss penalty = = 64 ciclos

18 Aveiro, 28 de Abril de Organização da memória Aumentar apenas a largura da memória CPU cache 32 Cache com blocos de 4 palavras Miss penalty=? Miss penalty = *4 = 76 ciclos banco 0 banco 1 banco 2 banco 3


Carregar ppt "Aveiro, 28 de Abril de 2004 1 Arquitectura de Computadores II Ano lectivo 2003/2004 Nuno"

Apresentações semelhantes


Anúncios Google