Você está na página 1de 15

Arquitetura e

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 %

Efeito Associatividade Map Direto


2 way
perl1 4 way
Tot. Assoc

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 ?

Totalmente Associativo apresenta melhor resultado.


Quanto maior a associatividade, mais blocos podem ser usados para substituio, isto , o espao
da cache melhor aproveitado, j que dependendo do endereo da memria em que se est, possvel
que algumas linhas da cache fiquem ociosas. A diminuio na miss rate inquestionvel, porm o
acrscimo de hardware desta implementao totalmente associativa impossibilita o largo uso comercial.
Est sim em conformidade com o ensinamento de aula e os exerccios praticados junto turma e
nem poderia ser diferente porque este trabalho apenas mais um exerccio de simulao, ainda que com
uma quantidade de instrues e referncias enorme.

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

Poltica de Substituio LRU


FIFO
gcc3 Random

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 %

Poltica de Substituio LRU


FIFO
perl1
Random

Instrues Dados

substituio
Explique os seus resultados.
Qual das polticas de substituio que apresenta o melhor resultado ? Os resultados so
esperados ?

Primeiro, ressaltamos que na tabela constava <assoc> = 1 enquanto o enunciado claramente


expressava totalmente associativo . Rodamos das duas maneiras e aquela que apresentou maior
variao entre as polticas de substituio realmente foi o totalmente associativo, logo, foram os dados
desta configurao totalmente associativa que interpretamos para realizar em definitivo a Tarefa 2.
O mapeamento direto resultaria em muitas linhas da cache ociosa e qualquer tipo de substituio
seria pobre em rendimento.

A melhor poltica o LRU, seguida pelo FIFO e por ltimo Random.


Sim, usualmente para a maioria dos cdigos esta a ordem de perfomance das formas de
substituio, j que existe uma forte localidade temporal das referncias memria. Claro que a maior ou
menor presena desta caracterstica vai depender do cdigo em questo, porm neste exerccio ( gcc3 &
perl1 ) se comportou da maneira usual.
Ainda que o Random alcance a menor perfomance, ele possui de longe o hardware mais simples e
acaba por compensar economicamente a preferncia por este tipo de substituio na fabricao de caches
para vrios processadores.
Tarefa 3 Verificar o efeito do tamanho de bloco
Verifique o efeito do tamanho do bloco mantendo o mesmo tamanho de cache e os outros parmetros de
configurao para mapeamento direto e conjunto associativo (2-way). Utilize apenas 1 nvel de cache
(L1) separadas em instrues e dados. Apresente os seus resultados em tabelas e grficos. Explique os
seus resultados.

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

Tamanho do Bloco 8 bytes


16 bytes
Mapeamento Direto : gcc3 32 bytes
64 bytes

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 %

Tamanho do Bloco 8 bytes


16 bytes
2 way : gcc3 32 bytes
64 bytes

Instrues Dados

Bytes por bloco


Benchmark PERL_1
Instrues Executadas 40,481,644
Instrues L/S Executadas 18,506,376
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 18,464,226 10,939,631 6,856,298 4,738,276
Miss_rate 45.61 % 27.02 % 16.94 % 11.70 %
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 2,070,053 1,762,441 1,583,898 16,60,316
Miss_rate 10.86 % 9.25 % 8.31 % 8.71 %

8 bytes
Tamanho do Bloco
16 bytes
Mapeamento Direto : perl1 32 bytes
64 bytes

Instrues Dados

Bytes por bloco


Benchmark PERL_1
Instrues Executadas 40,481,644
Instrues L/S Executadas 18,506,376
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 16,536,263 9,857,163 6,230,187 4,360,782
Miss_rate 40.85 % 24.35 % 15.39 % 10.77 %
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> 256 128 64 32
<bsize> 8 16 32 64
<assoc> 2 2 2 2
<repl> l* l* l* l*
Misses 1,440,529 1,762,441 1,046,605 1,094,130
Miss_rate 7.56 % 9.25 % 5.49 % 5.74 %

Tamanho do Bloco 8 bytes


16 bytes
2 way : perl1 32 bytes
64 bytes

Instrues Dados

Bytes por bloco


Comentrios Tarefa 3

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

Splitted X Unified Splitted Map. Dir. Splitted 2way

gcc3 Unified Map. Dir. Unified 2way

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 %

Splitted X Unified Splitted Map. Dir. Splitted 2way

perl1 Unified Map. Dir. Unified 2way

Instrues Dados

Map. Direto Vs 2 Way


Splitted Vs Unified
Comentrios Tarefa 4

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.