1 / 18

Arquitectura de Computadores II

Arquitectura de Computadores II. Ano lectivo 2003/2004 Nuno Lau (lau@det.ua.pt). 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. Reduzir miss rate.

Download Presentation

Arquitectura de Computadores II

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arquitectura de Computadores II Ano lectivo 2003/2004 Nuno Lau (lau@det.ua.pt)

  2. 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. 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. 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. 2 níveis de cache • tempo m. acesso = hit timeL1+miss rateL1*miss penaltyL1 • miss penaltyL1 = hit timeL2 + miss rateL2 * miss penaltyL2 • Miss rateglobal = miss rateL1 * miss rateL2 Se em 1000 acessos existirem 40 misses em L1 e 20 em L2 quais os miss rates de L1, L2 e global?

  6. 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 timeL2 = 20/2 = 10 ciclos CPI = 1 + 5%*10 + 2%*100 = 3.5 speedup = 6/3.5 = 1.7

  7. 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. Optimização da cache

  9. 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 21264 • 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. 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. 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. 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. 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 • Ciclos j e k • Lêem toda a matriz b • Lêem N elementos da mesma linha da matriz a • Escrevem em 1 linha da matriz x • Pior caso 2N3+N2misses • Realizar as operações em submatrizes for(i=0; i<N; i++) for(j=0; j<N; j++) { r = 0; for(k=0; k<N; k++) r + =a[i][k]*b[k][j]; x[i][j]=r; }

  14. Optimizações por software • Cálculo por blocos • Realizar as operações em submatrizes • B é o factor de bloco for(jb=0; jb<N; jb+=B) for(kb=0; kb<N; kb+=B) for(i=0; i<N; i++) for(j=jb; j<min(jb+B,N); j++) { r=0; for(k=kb; k<min(kb+B,N); k++) r+=a[i][k]*b[k][j]; x[i][j]+=r; }

  15. 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. Organização da memória • Latência (Modelo simplificado) • Enviar endereço 4 ciclos • Esperar por dados 56 ciclos • Receber dados 4 ciclos CPU Cache com blocos de 4 palavras Miss penalty=? 32 cache Miss penalty = 4*4 + 4*56 + 4*4 = 256 ciclos 32 Memória

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

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

More Related