cache(高速缓冲存储器)中的数据就是主存的一个子集,CPU访问存储器时会先访问cache,如果cache没有找到需要的数据,就会去主存找,于是引入cache命中率,用来描述在cache完成存取的占比,我们希望数据都可以在cache直接找到,所以这个命中率越接近1越好。

cache的命中率:

在这里插入图片描述
h:cache命中率
Nc: cache完成存取的次数
Nm:主存完成存取的次数

平均访问时间:

在这里插入图片描述
ta:cache/主存系统的平均访问时间
tc:命中时cache的访问时间(即cache存取周期)
tm:未命中时主存的访问时间(包括访问cache未命中的时间和未命中后访问主存的时间,即主存存取周期)

访问效率:

e = t c t a = t c h t c + ( 1 − h ) t m = ( 上 下 同 除 t c ) 1 h + ( 1 − h ) r = 1 r + ( 1 − r ) h e= \frac{t_c}{t_a}=\frac{t_c}{ht_c+(1-h)t_m}=(上下同除{t_c})\frac{1}{h+(1-h)r}=\frac{1}{r+(1-r)h} e=tatc=htc+(1h)tmtc=(tc)h+(1h)r1=r+(1r)h1

r:主存慢于cache的倍率,   r = t m t c . \ r=\frac{t_m}{t_c} .  r=tctm.
访问效率e:cache访问时间与平均访问时间的比值。从表达式中可以看出,   r = t m t c . \ r=\frac{t_m}{t_c} .  r=tctm. t m > t c . {t_m}>{t_c} . tm>tc.所以 r > 1 r>1 r>1 ( 1 − r ) < 0 (1-r)<0 (1r)<0,所以命中率h越高, r + ( 1 − r ) h r+(1-r)h r+(1r)h越小,访问效率越高

例题:

假设CPU执行某段程序时,cache完成存取的次数1900次,主存完成存取的次数100次。已知:Cache的存取周期为50ns,主存的存取周期为250ns。求命中率,Cache-主存系统的平均访问时间和效率。
h = N c N c + N m = 1900 1900 + 100 = 1 r + ( 1 − r ) h = 0.95 h= \frac{N_c}{N_c+N_m}=\frac{1900}{1900+100}=\frac{1}{r+(1-r)h}=0.95 h=Nc+NmNc=1900+1001900=r+(1r)h1=0.95
t a = h t c + ( 1 − h ) t m = 0.95 ∗ 50 + 0.05 ∗ 250 = 60 n s t_a= ht_c+(1-h)t_m=0.95*50+0.05*250=60ns ta=htc+(1h)tm=0.9550+0.05250=60ns
e = t c t a = 50 60 ∗ 100 % = 83.3 % e= \frac{t_c}{t_a}= \frac{50}{60}*100\%=83.3\% e=tatc=6050100%=83.3%

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐