Organização de Computadores B - Trabalho 2
Universidade Federal do Rio Grande do Sul Instituto de Informática
César Garcia Daudt cesar.daudt@inf.ufrgs.br
1. Investigar a inuência do tipo de mapeamento empregado (direto, associativo por conjunto e totalmente associativo) e da política de reposição no desempenho da cache
As respostas para as perguntas a seguir são baseadas nos resultados encontrados nas tabelas 1 e 2 e nos grácos 1, 2, 3, 4, 5, 6, 7 e 8
LRU (l) RANDOM (r) FIFO (f) No Conj. Tam. Bloco Assoc. ICache DCache ICache DCache ICache DCache
32 32 1 0.1301 0.1117 0.1301 0.1117 0.1301 0.1117 16 32 2 0.1164 0.0833 0.1145 0.0905 0.1168 0.087 8 32 4 0.1235 0.0737 0.1137 0.0832 0.1244 0.0791 4 32 8 0.13 0.0712 0.1143 0.0802 0.1302 0.0767 2 32 16 0.1327 0.0708 0.1141 0.0804 0.1339 0.0781 1 32 32 0.135 0.0705 0.1143 0.0804 0.135 0.078
Tabela 1: Benchmark Amp
LRU (l) RANDOM (r) FIFO (f) No Conj. Tam. Bloco Assoc. ICache DCache ICache DCache ICache DCache
32 32 1 0.2339 0.071 0.2339 0.071 0.2339 0.071 16 32 2 0.2384 0.0514 0.2306 0.0573 0.2387 0.0515 8 32 4 0.2434 0.0274 0.2294 0.0391 0.2437 0.0315 4 32 8 0.2408 0.0269 0.2284 0.0355 0.242 0.032 2 32 16 0.2391 0.0274 0.2284 0.0362 0.2398 0.0316 1 32 32 0.2389 0.0278 0.2288 0.0364 0.2398 0.0314
Tabela 2: Benchmark Basicmath
1.1. Dentre os experimentos realizados, qual das políticas de reposição
apresenta o melhor resultado para cada uma das caches em sua
opinião? Por quê?
Para a cache de dados, tanto no benchmark amp quanto no benchmark basimath, a política de substituição LRU mostrou-se mais eciente. Conforme visto em aula, geralmente, para dados, é útil lograrmos da localidade temporal, o que é feito exatamente por LRU: manter na cache os dados mais utilizados recentemente.
Figura 1: Gráco Associatividade vs. Desempenho da Cache de Instruções - Benchmark Amp
Figura 2: Gráco Num. de Conjuntos vs. Desempenho da Cache de Instruções - Benchmark Amp
Para a cache de instruções, a melhor política medida foi a RANDOM. Isso pode ter ocorrido pelo fato de que a localidade temporal em instruções ocorre apenas em laços e a localidade espacial para partes seqüenciais. No entanto, para desvios, nenhum desses princípios é seguido. Assim, se cada bloco tiver a mesma chance de ser substituído (por usarmos uma política randômica), podemos ter um desempenho melhor num caso em que as situações descritas antes estão misturadas.
Figura 3: Gráco Associatividade vs. Desempenho da Cache de Dados - Benchmark Amp
Figura 4: Gráco Núm. de Conjuntos vs. Desempenho da Cache de Dados - Benchmark Amp
1.2. A primeira linha das tabelas acima representam que tipo de cache
em termos de mapeamento? Considerando essas mesmas linhas
citadas, explique o porquê dos resultados obtidos para as três
políticas aplicadas.
A primeira linha da tabela dene caches com mapeamento direto. Assim, como cada bloco da memória é sempre mapeado no mesmo lugar da cache, a política de substituição não faz nenhuma diferença no desempenho.
Figura 5: Gráco Associatividade vs. Desempenho da Cache de Instruções - Benchmark Ba-sicmath
Figura 6: Gráco Num. de Conjuntos vs. Desempenho da Cache de Instruções - Benchmark Basicmath
1.3. Considerando-se que as caches de dados e instruções estão
sepa-radas, qual a melhor combinação (em termos da menor taxa de
misses obtida) entre cache de instruções e de dados
considerando-se qualquer possibilidade de conguração para ambas (em termos
de associatividade, n
ode conjuntos e política de reposição)?
Assumindo que apenas os dados medidos na questão são relevantes (ou seja, disconsiderando custo-benefício e aplicação): Para o benchmark amp, a melhor cache de instruções possui um mapeamento com associatividade 4, 8 conjuntos e política de substituição RANDOM, com uma taxa de cache-miss de 11,37%. A melhor cache de dados possui mapeamento totalmente associativo e política de substituição LRU, com uma taxa de cache-miss igual a 7,05%.
Figura 7: Gráco Associatividade vs. Desempenho da Cache de Dados - Benchmark Basicmath
Figura 8: Gráco Núm. de Conjuntos vs. Desempenho da Cache de Dados - Benchmark Basicmath
16, 2 ou 4 conjuntos e política de substituição RANDOM, com uma taxa de miss de 22,84%. Para a cache de dados, usamos um mapeamento com associatividade 8, 4 conjuntos e política de substituição LRU, com uma taxa de cache-miss igual a 2,69%.
1.4. Qual o comportamento das duas caches quando do aumento da
associatividade (e conseqüente diminuição do número de
conjun-tos)?
Para a cache de dados, em ambos os benchmarks, o aumento da associatividade ocasiona uma melhora no desempenho. No entanto, este ganho se torna inexpressivo após certo ponto crítico. Na cache de instruções, temos casos diferenciados. No benchmark Amp, para todas as políticas, há ganho de desempenho quando se aumenta a associatividade de 1 para 2. Após esse ponto,
somente a política RANDOM se benecia do aumento da associatividade, saturando o ganho na associatividade 4. No benchmark Basicmath, a política RANDOM se benecia do aumento da associatividade, tenho sua melhora estagnada por volta da associatividade 8. As outras políticas têm diminuição do desempenho até a associatividade 4, e após isso têm leve melhora de eciência com o aumento da associatividade.
2. Investigar a inuência da variação do tamanho do bloco no desempenho da cache Os resultados e respostas podem ser vericados e comparados com os valores nas tabelas 3, 4 e nos grácos 9, 10, 11 e 12.
No Conj. Tam. Bloco Assoc. Política ICache DCache
128 8 1 LRU 0.4547 0.2292 64 16 1 LRU 0.243 0.1447 32 32 1 LRU 0.1301 0.1117 16 64 1 LRU 0.0754 0.1147 8 128 1 LRU 0.0501 0.1444 4 256 1 LRU 0.0352 0.2294 2 512 1 LRU 0.0313 0.3619 1 1024 1 LRU 0.0371 0.5408
Tabela 3: Benchmark Amp
No Conj. Tam. Bloco Assoc. Política ICache DCache
128 8 1 LRU 0.7368 0.0597 64 16 1 LRU 0.4079 0.0625 32 32 1 LRU 0.2339 0.071 16 64 1 LRU 0.1476 0.0802 8 128 1 LRU 0.0982 0.1215 4 256 1 LRU 0.068 0.1558 2 512 1 LRU 0.0548 0.2185 1 1024 1 LRU 0.0504 0.2837
Tabela 4: Benchmark Basicmath
2.1. Qual o comportamento observado para as duas caches em termos
de percentual de erro no seu acesso?
O comportamento presente é antagônico para as duas caches: enquanto que a Cache de Ins-truções tem sua eciência melhorada com o aumento do tamanho do bloco, o oposto ocorre na Cache de Dados.
Figura 9: Gráco Tam. do Bloco vs. Desempenho da Cache de Instruções - Benchmark Amp
Figura 10: Gráco Tam. do Bloco vs. Desempenho da Cache de Dados - Benchmark Amp
2.2. Como você explicaria os comportamentos observados para as
ca-ches de instruções e de dados?
O aumento no tamanho do bloco benecia da localidade espacial possivelmente necessária ao perl da Cache de Instruções. Já que as próximas instruções a serem executadas, muito provavelmente estão próximas da instrução atual, com blocos maiores temos mais instruções próximas condensadas em um mesmo bloco, diminuindo a taxa de falta na cache.
Quando se trata de dados, a localidade espacial não está necessariamente presente. Aumentando o tamanho dos blocos, diminui-se a quantidade total de blocos da cache. Assim, a probabilidade de encontrarmos os diferentes blocos de dados desejados é menor.
Figura 11: Gráco Tam. do Bloco vs. Desempenho da Cache de Instruções - Benchmark Basicmath
Figura 12: Gráco Tam. do Bloco vs. Desempenho da Cache de Dados - Benchmark Basicmath 3. Investigar a inuência do tamanho total da cache e do tamanho de bloco no
desempenho da cache
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache 1k 64 16 1 LRU 24.30 14.47 2k 128 16 1 LRU 19.06 11.28 4k 256 16 1 LRU 13.93 9.6 8k 512 16 1 LRU 6.45 5.63 16k 1024 16 1 LRU 2.24 3.52 32k 2048 16 1 LRU 1.84 2.38
Tabela 5: Benchmark Amp, Bloco de Tamano 16, Associatividade 1
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 32 32 1 LRU 13.01 11.17 2k 64 32 1 LRU 10.11 8.41 4k 128 32 1 LRU 7.27 6.53 8k 256 32 1 LRU 3.55 3.72 16k 512 32 1 LRU 1.35 2.51 32k 1204 32 1 LRU 1.14 1.86
Tabela 6: Benchmark Amp, Bloco de Tamano 32, Associatividade 1
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 32 16 2 LRU 21.71 11.73 2k 64 16 2 LRU 17.26 9.27 4k 128 16 2 LRU 13.99 5.25 8k 256 16 2 LRU 5.55 3.76 16k 512 16 2 LRU 1.73 1.14 32k 1204 16 2 LRU 0.40 0.17
Tabela 7: Benchmark Amp, Bloco de Tamano 16, Associatividade 2
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 16 32 2 LRU 11.64 8.33 2k 32 32 2 LRU 9.20 5.99 4k 64 32 2 LRU 7.39 3.64 8k 128 32 2 LRU 3.17 2.37 16k 256 32 2 LRU 1.12 0.69 32k 512 32 2 LRU 0.21 0.10
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache 1k 16 16 4 LRU 21.93 11.21 2k 32 16 4 LRU 17.14 8.70 4k 64 16 4 LRU 14.46 5.44 8k 128 16 4 LRU 5.64 1.81 16k 256 16 4 LRU 0.95 0.90 32k 512 16 4 LRU 0.43 0.13
Tabela 9: Benchmark Amp, Bloco de Tamano 16, Associatividade 4
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 8 32 4 LRU 12.35 7.37 2k 16 32 4 LRU 9.04 5.42 4k 32 32 4 LRU 7.59 3.61 8k 64 32 4 LRU 2.96 1.04 16k 128 32 4 LRU 0.49 0.49 32k 256 32 4 LRU 0.23 0.07
Tabela 10: Benchmark Amp, Bloco de Tamano 32, Associatividade 4
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 64 16 1 LRU 40.79 6.25 2k 128 16 1 LRU 33.67 3.47 4k 256 16 1 LRU 27.17 2.19 8k 512 16 1 LRU 20.75 1.58 16k 1024 16 1 LRU 14.04 0.01 32k 2048 16 1 LRU 4.43 0.01
Tabela 11: Benchmark Basicmath, Bloco de Tamano 16, Associatividade 1
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 32 32 1 LRU 23.39 7.10 2k 64 32 1 LRU 19.62 3.45 4k 128 32 1 LRU 19.03 2.18 8k 256 32 1 LRU 12.31 1.66 16k 512 32 1 LRU 8.53 0.01 32k 1204 32 1 LRU 2.84 0.01
Figura 13: Gráco Tam. da Cache vs. Desempenho da Cache de Instruções - Benchmark Amp
Figura 14: Gráco Tam. da Cache vs. Desempenho da Cache de Dados - Benchmark Amp
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 32 16 2 LRU 40.53 3.81 2k 64 16 2 LRU 33.00 1.30 4k 128 16 2 LRU 24.10 0.12 8k 256 16 2 LRU 15.13 0.01 16k 512 16 2 LRU 8.90 0.01 32k 1204 16 2 LRU 3.39 0.01
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache 1k 16 32 2 LRU 23.84 5.14 2k 32 32 2 LRU 19.26 1.50 4k 64 32 2 LRU 14.36 0.14 8k 128 32 2 LRU 8.97 0.01 16k 256 32 2 LRU 5.58 0.01 32k 512 32 2 LRU 2.25 0.01
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache 1k 16 16 4 LRU 39.82 3.09 2k 32 16 4 LRU 32.09 0.58 4k 64 16 4 LRU 24.25 0.08 8k 128 16 4 LRU 14.16 0.01 16k 256 16 4 LRU 8.37 0.01 32k 512 16 4 LRU 1.58 0.01
Tabela 15: Benchmark Basicmath, Bloco de Tamano 16, Associatividade 4
Tamanho Total No Conj. Tam. Bloco Assoc. Política ICache DCache
1k 8 32 4 LRU 24.34 2.74 2k 16 32 4 LRU 18.80 0.89 4k 32 32 4 LRU 14.22 0.08 8k 64 32 4 LRU 8.30 0.01 16k 128 32 4 LRU 5.40 0.01 32k 256 32 4 LRU 1.19 0.01
Tabela 16: Benchmark Basicmath, Bloco de Tamano 32, Associatividade 4
3.1. Compare, linha a linha, os resultados obtidos considerando-se a
mesma associatividade (1, 2 e 4), descrevendo o comportamento
das caches de instruções e de dados quando comparadas
congura-ções de cache de mesmo tamanho total, porém com tamanhos de
blocos diferentes. Existe alguma diferença observável em termos
de taxa de faltas?
Comparando os resultados dentro de mesmos grupos de associatividade e tamanho total, nota-se que as congurações com blocos de tamanho 32 têm, na maioria dos casos, um denota-sempenho melhor do que as com tamanho 16. Nas caches de instrução, essa característica pode ser explicada pela localidade espacial das instruções. Na cache de dados, este comportamento é vericado para o benchmark Amp mas não para o benchmark Basicmath, onde somente as alterações na associatividade alteraram signicativamente a eciência da cache.
Figura 15: Gráco Tam. da Cache vs. Desempenho da Cache de Instruções - Benchmark Basicmath
Figura 16: Gráco Tam. da Cache vs. Desempenho da Cache de Dados - Benchmark Basicmath
3.2. Compare os resultados obtidos quando do aumento do tamanho
da cache através do aumento do n
ode conjuntos, mantendo-se o
mesmo tamanho de bloco (16 ou 32 bytes) para as 3
associativi-dades (1, 2 e 4). Ou seja, compare os resultados de taxa de faltas
obtidos quando do aumento do tamanho da cache para caches de
associatividade 1 e tamanho de bloco 16 bytes contra caches de
associatividade 2 e tamanho de bloco 16 bytes, o mesmo sendo
feito em relação às caches com tamanho de bloco de 32 bytes.
Existe diferença signicativa nas taxas observadas?
Para a cache de instruções, variando-se a associatividade e mantendo o tamanho de bloco constante, as mudanças não são signicativas. Isso é exemplicado no gráco 13, onde as linhas se agrupam de acordo com o tamanho de seus blocos, independentemente da associatividade.
No que diz respeito à cache de dados, o parâmetro mais importante melhora do desempenho, xando-se o tamanho da cache, é a associatividade. A variação no tamanho do bloco, para a mesma associatividade, não gera ganho signicativo.
4. Questão Final
Finalmente, responda a seguinte questão: se um cache 2-way associativa possui atraso 20% maior que a de mapeamento direto, qual das duas deveria ser escolhida para compor um processador, assumindo que a CPU pode executar tão rápido quanto se queira, e a penalidade de um miss é de 20 vezes o atraso da cache de mapeamento direto.
Considerando duas caches, respectivamente, uma com mapeamento 2-way associativo (dados em 1) e outra com mapeamento direto (dados em 2), extraímos a relação em 3. Considera-se, também, que o atraso na cache com mapeamento direto é t e o miss rate das caches é m.
T1 = (1 − m) · 1, 2t + m · 20 · t = t(1, 2 + 18, 8m) (1)
T2 = (1 − m) · t + m · 20 · t = t(1 − 19m) (2)
A cache com mapeamento direto deve ser utilizada quando T1 < T2, ou seja:
T1 < T2 ⇔
T1
T2
< 1 ⇔ m > 0, 2
37, 8 ⇔ m > 0, 005291005 (3) Assim, vemos que o mapeamento direto deve ser utilizado para uma taxa de misses maior que 0,53%, aproximadamente.