Duda técnica sobre cachés L1 y L2.

Buenas,

Supongamos que tenemos un sistema con 2 cachés, L1 y L2. Tras ejecutar un programa en ensamblador, la tasa de aciertos a la caché L1 es de 0.33, y a L2, de 0.40. Si se han producido 2 aciertos a la caché L1, y 2 aciertos a la caché L2 (uno de estos aciertos se produce también en L1). Si me dan un tiempo de acceso a caché L1 de 1 ns, a L2 de 5 ns, y a memoria principal de 50 ns. ¿Cómo podría calcular el tiempo medio de acceso?.

Yo lo he hecho basándome en la fórmula Tm = HxTL1 + (1-H) x Tfallo.

En tiempo fallo, teniendo en cuenta que la siguiente memoria en la jerarquía es L2, lo he calculado con la mísma fórmula, pero aplicada a L2:

TmL2= HxTl2 + (1-H)xTfallo. Donde Tfallo en este caso es 50 ns de acceso a memoria principal, el valor calculado TmL2, lo he sustituido en el Tfallo de L1 y calculé así el tiempo medio, pero no sé si está bien calculado así...

¿Algun alma caritativa me puede iluminar? :P

Gracias!
Yo diria que es de la siguiente manera:

Calculemos todos los casos posilbes (es decir de donde se acaban leyendo los datos: L1, L2 o M) y la probabilidad de cada uno de ellos. Serian:

caso L1: L1 (acierto L1) --> probabilidad 0,33 es decir P(L1)=0,330
caso L2: L1 fallo (0,67) pero L2 acerto (0,40) --> P(L2) = 0,67 x 0,40 = 0,268
caso M: L1 fallo (0,67), L2 fallo (0,60) se uso la memoria general --> P(M) = 0,67 x 0,60 = 0,402

(Observa como sus prob. suman 1 = 0,330 + 0,268 + 0,402 )
Como los tiempos de acceso en cada caso son 1ns, 5ns, 50ns entonces el tiempo medio (o valor esperado ) seria x1*p1+x2*p2+...+xn*pn
Es decir:
TL1*P(L1) + TL2*P(L2) + TM*P(M) = 1*0,330 + 5*0,268 + 50*0,402 = 21,77 ns

Supongo.

P.D. Tu metodo es correcto salvo la notacion que puede inducir a error
Si H es la tasa o prob. de acierto de L1
LLamaria Q a la tasa o prob de acierto de L2
y entonces Tm = H*TL1+(1-H)*Tq
Donde Tq seria el tiempo medio en caso de fallar L1. Luego
Tq = Q*TL2 + (1-Q)*TM

Luego Tm = H*TL1+(1-H)*Q*TL2+(1-H)*(1-Q)*TM

Que es lo mismo que estudiar los tres casos, y sus probabilidades:
P(L1) = H
P(L2) = (1-H)*Q
P(M) = (1-H)*(1-Q)
y calcular el valor esperado del tiempo TL1*P(L1) + TL2*P(L2) + TM*P(M)
Oido cocina!

Muchas gracias por la respuesta ;)
2 respuestas