You are on page 1of 3

Medindo o desempenho da cache

Organizao e Arquitetura de computadores


Melhorando o desempenho da cache

O tempo de CPU pode ser dividido entre os ciclos de clock eu a CPU gasta executando o programa e os ciclos de clock que gasta esperando o sistema de memria
Tempo de cpu = (ciclos de clock de execuo da CPU + ciclos de clock de stall de memria) x (tempo de ciclo de clock) Stalls de memria tem origem nas falhas de cache Ciclos de clock de stall de memria = ciclos de stall de leitura + ciclos de stall de escrita Ciclos de stall de leitura podem ser definidos em funo do nmero de acesso de leitura por programa, a penalidade de falha nos ciclos de clock e a taxa de falhas de leitura: Ciclos de stall de leitura = leituras/programa x (taxa de falhas de leitura) x (penalidade de falha de leitura) As escritas so mais complicadas, pois temos duas origens de stalls: as falhas de escrita, que exigem a busca do bloco antes de continuar a escrita e os stalls do buffer de escrita, que ocorrem quando o buffer de escrita est cheio: Ciclos de stall de escrita = (escritas/programa) x (taxa de falhas de escrita) x (penalidade de falha de escrita) + (stalls do buffer de escrita)

Prof. Dr. Luciano Jos Senger

Medindo o desempenho da cache


Na maioria das organizaes write-back as penalidades de falha de leitura e escrita so iguais (equivalentes ao tempo para buscar o bloco da memria)
Considerando que os stalls no buffer de escrita insignificantes:
Ciclos de clock de stall de memria = acessos a memria/programa x taxa de falhas x penalidade de falha Ciclos de clock de stall de memria = instrues /programa x falhas/instruo x penalidade de falha

Medindo o desempenho da cache


Exemplo
Suponha que uma taxa de falhas de cache de instrues para um programa seja de 2% e que uma taxa de falhas de cache de dados seja de 4%. Se um processador tem um CPI igual a 2 sem qualquer stall de memria e a penalidade de falha de 100 ciclos para todas as falhas, determine o quanto mais rpido um processador executaria com uma cache perfeita que nunca falhasse (utilizando as frequncias de instrues do SPECint2000: 36% load/store)
Ciclos de falha de instrues = I x 2% x 100 = 2,00 x I Ciclos de falha de dados = I x 36% x 4%x 100 = 1,44 x I Nmero total de stalls de memria: 2,00 + 1,44 = 3,44 I Cpi com stalls de memria: 2,00 + 3,44 = 5,44 Cpi sem stalls de memria: 2,00 O desempenho da cache perfeira: 5,44 / 2 = 2,72

Medindo o desempenho da cache


Exemplo
Oque acontece se processador for tornado mais rpido mas o sistema de memria no?
A quantidade de tempo gasto nos stalls de memria tomar uma frao cada vez maior do tempo de execuo Por exemplo, reduzindo o CPI de 2 para 1, tem-se Tempo de cpu com stalls = 1 + 3,44 = 4,44 Tempo de cpu com sistema de cache perfeito = 1 4,44/1 = 4,44 vezes mais rpido A quantidade de tempo de execuo gasto em stalls da memria teria subido de : 3,44 / 5,44 = 63% Para 3,44 / 4,44 = 77%

Desempenho da cache com velocidade de clock aumentada


Suponha que aumentemos o desempenho do computador do exemplo anterior dobrando sua velocidade de clock. Como a velocidade da memria principal improvvel de ser alterada, considere que o tempo absoluto para manipular uma falha de cache no mude. O quanto mais rpido ser o computador com clock mais rpido, considerando a mesma taxa de falhas do exemplo anterior?
Medida em ciclos de clock mais rpidos, a nova penalidade de falha ser o dobro dos ciclos de clock, ou 200 ciclos de clock: Total de ciclos de falha por instruo = (2% x 200) + 36%x(4%x200) = 6,88 Cpi do computador com falhas na cache = 2 + 6,88 = 8,88 Cpi do computador com falhas na cache (mais lento) = 5,44 Desempenho com clock rpido / desempenho com clock lento = tempo de execuo com clock lento / tempo de execuo com clock rpido = (CI x CPI x ciclo de clock) / (CI x CPI x ciclo de clock/2) = 5,44/ (8,88 x ) = 1,23 Assim, o computador com clock mais rpido cerca de 1,2 vezes mais rpido e no 2 vezes mais rpido, que ele teria sido se considerssemos apenas a frequncia de clock e ignorssemos as falhas de cache

Reduzindo as falhas de cache com um posicionamento de blocos mais flexvel flex


No mapeamento direto, existe apenas uma posio onde o bloco pode ser encontrado na cache. No outro extremo, est um esquema onde um bloco pode ocupar qualquer lugar na cache: totalmente associativo
Todas a entradas devem ser pesquisadas, oque torna o hardware mais caro: vivel apenas para caches com pequenos nmeros de blocos

Reduzindo as falhas de cache com um posicionamento de blocos mais flexvel flex


Forma de mapeamento
Mapeamento direto
(nmero do bloco) mdulo (nmero de blocos na cache)

Mapeamento associativo por conjunto


(nmero do bloco) mdulo (nmero de conjuntos na cache)

Faixa intermediria: mapeamento por conjunto


Existe um nmero fixo de locais onde cada bloco pode ser colocado Uma cache associativa por conjuntos com n locais para um bloco chamada de cache associativa por conjunto de n vias Uma cache associativa por conjunto de n vias consiste em diversos conjuntos, cada um consistindo em n blocos Cada bloco mapeado para um conjunto nico na cache, determinado pelo campo ndice, e um bloco pode ser colocado em qualquer elemento deste conjunto O posicionamento associativo por conjunto combina o mapeamento direto com o mapeamento totalmente associativo, de forma que um bloco diretamente mapeado para um conjunto e, ento, uma correspondncia pesquisada em todos os blocos dos conjuntos

Como o bloco pode ser posicionado em qualquer elemento do conjunto, todas as tags de todos os elementos do conjunto A vantagem de aumentar a associatividade diminuir a taxa de falhas A desvantagem a reduo do tempo de acerto

Falhas e associatividade nas caches


Considere trs caches pequenas, cada uma consistindo em quatro blocos de 1 word cada
Uma cache totalmente associativa Uma cache associativa por conjunto de 2 vias Uma diretamente mapeada Encontre o nmero de falhas para cada organizao de cache, dada a seguinte sequncia de endereos de bloco: 0, 8, 0, 6, 8 Diretamente mapeado:

Falhas e associatividade nas caches


Diretamente mapeada gera cinco falhas para cinco acessos:

Cache associativa por conjunto tem dois conjuntos, com ndices de 0 e 1, com dois elementos por conjunto:

Falhas e associatividade nas caches


J que existe a possibilidade de escolha entre qual bloco ser substitudo, uma regra deve ser utilizada
Bloco menos recentemente usado: o bloco usado a mais tempo ser substitudo

Falhas e associatividade na cache


A cache totalmente associativa tem 4 blocos na cache, em um nico conjunto
Apresenta o melhor desempenho, com 3 falhas:

Apresenta 4 falhas

Quanta reduo na taxa de falhas obtida pela associatividade? Considerando o SPEC2000 pra uma cache de dados de 64K com um bloco de 16 words e mostra a associatividade mudando do mapeamento direto para oito vias:

Localizando um bloco no cache


Cada bloco em um cache associativa por conjunto tem um campo tag que fornece o endereo do bloco
Tal valor comparado com o endereo de origem contido em uma requisio do processador

Localizando um bloco na cache


Se o tamanho da cache for mantido igual, aumentar a associatividade aumenta o nmero de blocos por conjunto, que o nmero de comparaes simultneas necessrias para realizar a pesquisa em paralelo
Cada aumento por um fator de dois na associatividade dobra o nmero de blocos por conjunto e divide por dois o nmero de conjuntos A escolha entre mapeamento direto, associativo por conjunto ou totalmente associativo em qualquer hierarquia de memria depender do custo de uma falha em comparao como curso da implementao da associatividade, ambos em tempo e em hardware extra

Reduzindo penalidade com cache multinvel


Processadores modernos utilizam um nvel adicional de cache O objetivo reduzir a penalidade de falha na cache primria

Consideraes finais Considera


O sistema de memria pode ter um efeito significativo no tempo de execuo dos programas Na medida que os processadores tornam-se mais rpidos, aumenta o efeito relativo dos ciclos de stall de memria O nmero de ciclos de stall de memria depende da taxa de falhas e da penalidade de falha Para reduzir a taxa de falhas, utiliza-se o mapeamento associativo; caches associativas por conjunto apresentam taxas de falha maiores (em relao a totalmente associativa), mas so mais rpidas de serem acessadas O grau de associatividade que produz o melhor desempenho depende da tecnologia e dos detalhes de implementao A anlise dos parmetros de desempenho similar para caches multinveis

Leituras recomendadas
Patterson, David A. e Hennessy, John L. Organizao e Projeto de Computadores: A Interface Hardware/Software. Ed. LTC, 162. Ed., 2004, Rio de Janeiro. Captulo 7

Slides de arquitetura de computadores


www.cse.psu.edu/~mji

Tutorial sobre memria


http://www.corsairmemory.com/corsair/products/tech/memory_basics/153707/main .swf