我们先来看一道例题:
CPU执行一段程序时,cache完成存储的次数为3000次,主存完成存储的次数为400次,已知cache存取周期为50ns,主存存取周期为250ns,求cache/主存系统的效率和平均访问时间?
思路:cache,中译名高速缓冲存储器,其作用是为了更好的利用局部性原理,减少CPU访问主存的次数。简单地说,CPU正在访问的指令和数据,其可能会被以后多次访问到,或者是该指令和数据附近的内存区域,也可能会被多次访问。因此,第一次访问这一块区域时,将其复制到cache中,以后访问该区域的指令或者数据时,就不用再从主存中取出。
现在回到开始的问题:当CPU发出读请求时,如果cache命中,就直接对cache进行读操作,与主存无关;如果cache中没有需要的信息,则需要访问主存并把该块信息从主存中调到cache中,再次访问cache获取需要的信息。
所以:⑴命中率:CPU欲访问的信息已经在Cache中的比率称之为命中率。
设执行程序时,cache访问次数Nc,访问主存次数Nm,则
h= N c N c + N m \frac{Nc}{Nc+Nm} Nc+NmNc=0.882
⑵平均访问时间:设Tc为命中时cache访问时间,Tm为未命中时主存访问时间
则Ta=h*Tc+(1-h)*Tm=73.6 ns
⑶访问cache效率:e= T c T a \frac{Tc}{Ta} TaTc*100%= T c h ∗ T c + ( 1 − h ) ∗ T m \frac{Tc}{h*Tc+(1-h)*Tm} h∗Tc+(1−h)∗TmTc*100%=0.679