Calcular o tempo médio para um acesso à memória
Considere a seguinte hierarquia de cache de vários níveis com os seus tempos de procura e taxas de erro:
- L1-cache, 0, 5 ns, 20%
- cache L2, 1, 8 ns, 5%
- cache L3, 4,2 ns, 1, 5%
- memória principal, 70 ns, 0%
Neste caso, os tempos de procura indicados referem-se ao tempo total necessário para verificar se os dados solicitados estão disponíveis no nível actual de hierarquia e transmitir os dados para o nível acima (ou para a CPU). Isto é o mesmo que o hit time, certo? As taxas de miss dadas são locais. E como entendi, a taxa de erro de um nível precisa ser multiplicada pela de erro. taxas de todos os níveis anteriores para ser correto para esse nível.
Digamos que se tivermos 1000 acessos de memória, em L1 20% deles falharão. Então 20% deles vão para L2, lá 5% deles vão falhar. Assim, a partir de 1000 acessos de memória 1000 * 20% * 5% vai chegar lá. Agora, tanto quanto sei... e por favor corrija-me se eu estiver errado, as taxas de erro acima são locais, mas seu produto é o missrate global para cada nível correspondente. Isto significa que a taxa de erro global seria de 0,2 * 0,05 = 1% para L2. Agora, posso estar muito errado com este cálculo, mas é assim que eu penso:AMAT (tempo médio de acesso à memória) = tempo de Hit + taxa de Miss * penalidade de Miss
AMAT = 0.5 + 0.2 * (1.8 + 0.2 * 0.05 * (4.2 + 0.2 * 0.05 * 0.015 * 70))
Depois de calcular isto, obtenho AMAT = 0, 868421 ns
Estou a fazer isto correctamente? Obrigado pela ajuda.1 answers
Antes, o cálculo era assim:
AMAT = 0.5 + 0.2 * (1.8 + 0.2 * 0.05 * (4.2 + 0.2 * 0.05 * 0.015 * 70)) = 0.868421 ns
Isto significa que a taxa local de miss, por exemplo, L1, afeta as contribuições de Miss penalty para cada um mais distante na hierarquia, muitas vezes.. quando já foi contabilizado numa fase anterior.A solução correcta deve ser:
AMAT = 0.5 + 0.2 * (1.8 + 0.05 * (4.2 + 0.015 * 70)) = 0.9125 ns
Então, recursivamente podemos definir:AMAT = L1 Hit time + L1 Miss rate * L1 Miss penalty
L1 Miss penalty = L2 Hit time + L2 Miss rate * L2 Miss penalty
L2 Miss penalty = L3 Hit time + L3 Miss rate * L3 Miss penalty
Pena de Miss L3 = tempo de hit da memória principal