Professional Documents
Culture Documents
Organizao de
Computadores II
UFPEL 2016 / 2
Professor : Julius
Alunos : Lucas Souza Barbosa & Marcelo Teixeira Ruggeri
Tarefa 1 Verificar o efeito da associatividade
Verifique o efeito da associatividade (direta, totalmente associativo e associativo por conjunto) mantendo
os outros parmetros de configurao (apresente um conjunto mnimo de resultados). Utilize apenas 1
nvel de cache (L1) separadas em instrues e dados. Apresente os seus resultados em tabelas e grficos.
Benchmark GCC_3
Instrues Executadas 119,243,603
Instrues L/S Executadas 44,128,859
Mapeamento Direto Conjunto Associativo Conjunto Associativo Totalmente
Parmetros (2 way) (4 way) Associativa
Cache Instrues Cache Instrues Cache Instrues Cache Instrues
<nsets> 64 32 16 1
<bsize> 64 64 64 64
<assoc> 1 2 4 64
<repl> l* l* l* l*
Misses 11,245,088 9,875,872 9,751,012 9,498,400
Miss_rate 9.43 % 8.28 % 8.18 % 7.97 %
Parmetros Mapeamento Direto Conjunto Associativo Conjunto Associativo Totalmente
(2 way) (4 way) Associativa
Cache Dados Cache Dados Cache Dados Cache Dados
<nsets> 64 32 16 1
<bsize> 64 64 64 64
<assoc> 1 2 4 64
<repl> l* l* l* l*
Misses 3,485,503 2,445,171 2,077,151 1,963,789
Miss_rate 7.84 % 5.50 % 4.67 % 4.42 %
* letra L minscula
Map Direto
Efeito Associatividade 2 way
4 way
gcc3
Tot. Assoc
Instrues Dados
assoc
Benchmark PERL_1
Instrues Executadas 119,243,603
Instrues L/S Executadas 44,128,859
Mapeamento Direto Conjunto Associativo Conjunto Associativo Totalmente
Parmetros (2 way) (4 way) Associativa
Cache Instrues Cache Instrues Cache Instrues Cache Instrues
<nsets> 64 32 16 1
<bsize> 64 64 64 64
<assoc> 1 2 4 64
<repl> l* l* l* l*
Misses 4,738,276 4,360,782 4,136,376 4,048,769
Miss_rate 11.70 % 10.77 % 10.22 % 10.00 %
Parmetros Mapeamento Direto Conjunto Associativo Conjunto Associativo Totalmente
(2 way) (4 way) Associativa
Cache Dados Cache Dados Cache Dados Cache Dados
<nsets> 64 32 16 1
<bsize> 64 64 64 64
<assoc> 1 2 4 64
<repl> l* l* l* l*
Misses 1,660,316 1,094,129 948,771 723,118
Miss_rate 8.71 % 5.74 % 4.98 % 3.79 %
Instrues Dados
assoc
Explique os seus resultados e responda as seguintes perguntas:
Qual das polticas de mapeamento que apresenta o melhor resultado ? Por que ? Isto est de
acordo com a teoria vista em aula ?
Sendo que as caches de dados e instrues esto separadas, qual a melhor combinao (menor
taxa de misses) entre cache de instrues e de dados considerando-se qualquer possibilidade de
configurao para ambas ?
A melhor escolha ainda Totalmente Associativo tanto para instrues quanto para dados.
Apenas nas prximas tarefas que visualizaremos um mnimo global na taxa de misses, quando
variarmos apenas a poltica de substituio e posteriormente quando variarmos apenas o tamanho de
bloco.
Caso a pergunta fosse vlida para as Polticas de Substituio :
No caso do gcc3, a segunda melhor combinao poderia ser Fifo para instrues e Random para
dados, em vista desta simulao em especfico, j que o Random tende a ser diferente para cada execuo;
Contudo a variao to pequena ( 8.13% Vs 8.34% ) que poderia ser desprezada.
J no Tamanho de Bloco :
clara o comportamento montono da localidade espacial das instrues, isto , quanto maior o
bloco menor o miss rate sempre para as instrues j que possuem forte localidade espacial.
J o mesmo no se pode afirmar sobre a memria de dados, pois h um mnimo de misses no
bloco de 32 bytes. Tanto diminuir para 16 bytes quanto aumentar o bloco a 64 bytes inferiorizam a cache.
Tarefa 2 Verificar o efeito da poltica de substituio
Verifique o efeito da poltica de substituio (LRU, FIFO, RANDON) utilizando mapeamento totalmente
associativo e mantendo os outros parmetros de configurao. Utilize apenas 1 nvel de cache (L1)
separadas em instrues e dados. Apresente os seus resultados em tabelas e grficos.
Benchmark GCC_3
Instrues Executadas 119,243,603
Instrues L/S Executadas 44,128,859
Totalmente Totalmente Associativa Totalmente Associativa
Parmetros Associativa + LRU + FIFO + RANDOM
Cache Instrues Cache Instrues Cache Instrues
<nsets> 1 1 1
<bsize> 64 64 64
<assoc> 64 ? 64 ? 64 ?
<repl> l* f r
Misses 9,498,400 9,693,422 9,945,144
Replacements 9,498,336 9,693,358 9,945,080
Miss_rate 7.97 % 8.13 % 8.34 %
Parmetros Totalmente Totalmente Associativa Totalmente Associativa
Associativa + LRU + FIFO + RANDOM
Cache Dados Cache Dados Cache Dados
<nsets> 1 1 1
<bsize> 64 64 64
<assoc> 64 64 64
<repl> l* f r
Misses 1,963,789 2,359,040 2,348,419
Replacements 1,963,725 2,358,976 2,348,355
Miss_rate 4.42 % 5.30 % 5.28 %
* letra L minscula
Instrues Dados
substituio
Benchmark PERL_1
Instrues Executadas 40,483,020
Instrues L/S Executadas 18,506,796
Totalmente Totalmente Associativa Totalmente Associativa
Parmetros Associativa + LRU + FIFO + RANDOM
Cache Instrues Cache Instrues Cache Instrues
<nsets> 1 1 1
<bsize> 64 64 64
<assoc> 64 ? 64 ? 64 ?
<repl> l* f r
Misses 4,048,769 4,118,280 4,142,504
Replacements 4,048,705 4,118,216 4,142,440
Miss_rate 10.00 % 10.17 % 10.23 %
Parmetros Totalmente Totalmente Associativa Totalmente Associativa
Associativa + LRU + FIFO + RANDOM
Cache Dados Cache Dados Cache Dados
<nsets> 1 1 1
<bsize> 64 64 64
<assoc> 64 64 64
<repl> l* f r
Misses 723,118 918,177 1,004,273
Replacements 723,054 918,113 1,004,209
Miss_rate 3.79 % 4.82 % 5.27 %
Instrues Dados
substituio
Explique os seus resultados.
Qual das polticas de substituio que apresenta o melhor resultado ? Os resultados so
esperados ?
Benchmark GCC_3
Instrues Executadas 119,243,603
Instrues L/S Executadas 44,128,859
Mapeamento Direto Mapeamento Direto Mapeamento Direto Mapeamento Direto
Parmetros Tam. Bloco = 8 bytes Tam. Bloco = 16 bytes Tam. Bloco = 32 bytes Tam. Bloco = 64 bytes
Cache Instrues Cache Instrues Cache Instrues Cache Instrues
<nsets> 512 256 128 64
<bsize> 8 16 32 64
<assoc> 1 1 1 1
<repl> l* l* l* l*
Misses 48,528,997 27,689,883 17,104,182 11,245,088
Miss_rate 40.70 % 23.22 % 14.34 % 9.43 %
Parmetros Mapeamento Direto Mapeamento Direto Mapeamento Direto Mapeamento Direto
Tam. Bloco = 8 bytes Tam. Bloco = 16 bytes Tam. Bloco = 32 bytes Tam. Bloco = 64 bytes
Cache Dados Cache Dados Cache Dados Cache Dados
<nsets> 512 256 128 64
<bsize> 8 16 32 64
<assoc> 1 1 1 1
<repl> l* l* l* l*
Misses 3,924,427 3,400,978 3,294,232 3,485,503
Miss_rate 8.82 % 7.65 % 7.41 % 7.84 %
* letra L minscula
Instrues Dados
Bytes por bloco
Benchmark GCC_3
Instrues Executadas 119,243,603
Instrues L/S Executadas 44,128,859
Mapeamento 2-way Mapeamento 2-way Mapeamento 2-way Mapeamento 2-way
Parmetros Tam. Bloco = 8 bytes Tam. Bloco = 16 bytes Tam. Bloco = 32 bytes Tam. Bloco = 64 bytes
Cache Instrues Cache Instrues Cache Instrues Cache Instrues
<nsets> 256 128 64 32
<bsize> 8 16 32 64
<assoc> 2 2 2 2
<repl> l* l* l* l*
Misses 42,921,925 24,436,022 15,107,963 9,875,791
Miss_rate 36.00 % 20.49 % 12.67 % 8.28 %
Parmetros Mapeamento 2-way Mapeamento 2-way Mapeamento 2-way Mapeamento 2-way
Tam. Bloco = 8 bytes Tam. Bloco = 16 bytes Tam. Bloco = 32 bytes Tam. Bloco = 64 bytes
Cache Dados Cache Dados Cache Dados Cache Dados
<nsets>
<bsize> 8 16 32 64
<assoc> 2 2 2 2
<repl> l* l* l* l*
Misses 2,905,655 2,408,735 2,284,348 2,444,398
Miss_rate 6.53 % 5.42 % 5.14 % 5.50 %
Instrues Dados
8 bytes
Tamanho do Bloco
16 bytes
Mapeamento Direto : perl1 32 bytes
64 bytes
Instrues Dados
Instrues Dados
Caso as referncias memria apresentem alta localidade espacial, quanto maior for o tamanho do
bloco melhor ser o aproveitamento da cache. Tanto no caso do gcc3 e perl1 esta tendncia se mostrou
verdadeira para os 4 tamanhos de blocos de instruo 8B, 16B, 32B e 64B.
Todavia, nestes dois cdigos a localidade espacial das referncias memria de dados atingiu um
mximo de eficincia no tamanho 32B, decaindo logo a seguir em 64B. O que se passa que ao aumentar
o tamanho do bloco, porm manter igual o tamanho da cache, resultamos em menos blocos (linhas) ao
total e mais espaos que foram buscados na memria, porm no se mostraram teis enquanto
permaneceram na cache. Caso no haja localidade espacial que justifique este aumento no bloco, melhor
manter num nmero intermedirio, como 32B nestes dois exemplos.
Alis, o comportamento da memria de dados foi to errtico que em perl1 a maior taxa de misses
foi com tamanho 16B ( 9% ) quase o dobro dos 32B ( 5% ). A rigor, tanto a memria de instrues quanto
a de cache tem sua utilidade em funo do cdigo, mas muito mais comum no dia-a-dia encontrar
maiores variaes na mem. dados do que na de instrues.
Tarefa 4 Verificar o uso de caches unificadas e separadas
Verifique o efeito do uso de caches unificadas em L1 e compare com resultados de caches de dados e
instrues mantendo se possvel o maior nmero de parmetros sem alterao e com o tamanho das duas
caches splited igual ao tamanho da cache unified (apresente um conjunto mnimo de resultados).
Apresente os seus resultados em tabelas e grficos. Explique os seus resultados.
Benchmark GCC_3
Instrues Executadas 119,243,076
Instrues L/S Executadas 44,128,656
Cache L1 splited Cache L1 Unified
Mapeamento Direto Conjunto Associativo Mapeamento Direto Conjunto
(2 way) Associativo
Parmetros
(2 way)
Cache Instrues Cache Instrues Cache Instrues Cache Instrues
<nsets> 512 256 1024 512
<bsize> 64 64 64 64
<assoc> 1 2 1 2
<repl> l* l* l* l*
Misses 3,848,835 3,141,898 4,029,770 2,788,319
Miss_rate 3.23 % 2.63 % 2.46 % 1.70 %
Parmetros Mapeamento Direto Conjunto Associativo
(2 way)
Cache Dados Cache Dados
<nsets> 512 256
<bsize> 64 64
<assoc> 1 2
<repl> l* l*
Misses 981,935 484,624
Miss_rate 2.21 % 1.09 %
* letra L minscula
Instrues Dados
Map. Direto Vs 2 Way
Splitted Vs Unified
Benchmark PERL_1
Instrues Executadas 40,481,644
Instrues L/S Executadas 18,506,376
Cache L1 splited Cache L1 Unified
Mapeamento Direto Conjunto Associativo Mapeamento Direto Conjunto
(2 way) Associativo
Parmetros
(2 way)
Cache Instrues Cache Instrues Cache Instrues Cache Instrues
<nsets> 512 256 1024 512
<bsize> 64 64 64 64
<assoc> 1 2 1 2
<repl> l* l* l* l*
Misses 1,143,613 669,192 1,244,571 381,353
Miss_rate 2.83 % 1.65 % 2.09 % 0.64 %
Parmetros Mapeamento Direto Conjunto Associativo
(2 way)
Cache Dados Cache Dados
<nsets> 512 256
<bsize> 64 64
<assoc> 1 2
<repl> l* l*
Misses 303,239 69,359
Miss_rate 1.59 % 0.36 %
Instrues Dados
A fim de comparar Splitted versus Unified, resolvemos somar os misses de dados e instrues no
caso da splitted, porque, enfim, com um simulador funcional no existe maneira de comparar as duas,
pois a nica mtrica aceitvel a perfomance, isto , o tempo de execuo.
Porque faltar uma instruo para executar diferente de faltar um dado para load/store. Na falta de
instruo, no h o que fazer, porque eu no conheo a instruo a executar. J na falta do dado,
possvel executar outra instruo se eu tiver acesso a elas e no houver dependncia com este load/store
em andamento.
Em termos de misses, a menor quantidade foi observada na memria unified, pois o peso do
aumento do tamanho da cache foi mais decisivo que a autocorrelao das instrues entre si e da
autocorrelao dos dados entre si.
Porque, ao unificar a cache, dobramos seu tamanho pois ela equivaleria s duas caches de
instruo e de dados junta, logo, teve um tamanho efetivo dobrado. J em favor do splitted, haveria maior
autocorrelao, ou seja, a presena de localidades espaciais e temporais mais fortes. Pois referncias
misturadas a dados e instrues como ocorre na unified ocasionariam mais conflitos.
Como estamos alinhados com a busca da Verdade independe de onde nos levar, mantivemos estes
resultados das simulaes. Porque este caso mais provvel como exceo do que regra, pois tanto na
literatura quanto comercialmente defende-se mais rigorosamente o uso de caches splitted.