Calcular o tempo médio para um acesso à memória

Eu acho difícil entender as diferenças entre a taxa de erro local e global e como calcular o tempo médio para um acesso à memória e gostaria apenas de dar um exemplo de um problema que eu tentei resolver. Agradecia que alguém me dissesse se estou no caminho certo, ou se estou errado o que perdi.

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.
Author: Great Cubicuboctahedron, 2016-11-01

1 answers

Agora tornou-se claro para mim o que é exactamente a taxa de miss global e local, e assim percebi que cometi um erro no meu cálculo.

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
 2
Author: Great Cubicuboctahedron, 2016-11-02 11:47:04