cache中命中率和平均访问时间
这张图讨论了平均访问时间(Average Access Time)在缓存-主存层次结构中的重要性,并提出了相关的优化目标。图中展示了 CPU 和主存(DRAM)之间通过缓存的交互,重点在于提升命中率,以优化访问速度。
图中内容解释:
-
缓存与主存的层次结构:
- CPU 首先访问缓存,若命中,则直接从缓存中获取数据;若未命中,则需要从较慢的主存(DRAM)中读取数据。
- 缓存包含了部分主存数据的临时拷贝,能够加快频繁访问数据的速度。
-
目标:
- 提高平均访问时间:要减少 CPU 访问数据的平均时间,必须提升命中率。命中率越高,访问缓存的次数越多,从而减少主存访问的延迟。
- 透明性:缓存的设计应该是“对程序员透明的”,即程序员不需要特别关心缓存的存在,编程上也无需进行特殊处理。
-
命中率和缺失率:
- 命中率(α):缓存命中的概率,即 CPU 访问数据时从缓存中成功找到的频率。
- 缺失率(1 - α):即剩余未命中的比例,需要从主存中读取数据的情况。
-
平均访问时间公式:
- 图中给出了平均访问时间的公式:
t a v e = α t c + ( 1 − α ) ( t c + t m ) t_{ave} = \alpha t_c + (1 - \alpha)(t_c + t_m) tave=αtc+(1−α)(tc+tm)- α t c \alpha t_c αtc:表示命中缓存的情况,所需时间是命中率乘以缓存访问时间 t c t_c tc。
- ( 1 − α ) ( t c + t m ) (1 - \alpha)(t_c + t_m) (1−α)(tc+tm):表示未命中的情况,访问主存的时间是 t c + t m t_c + t_m tc+tm,乘以未命中率 1 − α 1 - \alpha 1−α。
- 简化后的公式:
t a v e = t c + ( 1 − α ) t m t_{ave} = t_c + (1 - \alpha) t_m tave=tc+(1−α)tm - 该公式表明,为了减少平均访问时间,增大命中率 α 或减少主存访问时间 t m t_m tm 都是有效的方式。
- 图中给出了平均访问时间的公式:
-
挑战:
- 挑战在于使命中率尽可能高,从而最大化缓存的性能优势,减少访问主存的频率。
总结
- 这张图强调了缓存的命中率对系统性能的影响,并展示了平均访问时间的计算公式。为了提高整体性能,应尽量提高缓存命中率,以减少高延迟的主存访问。
这张图计算了要达到目标的平均访问时间(5 ns),缓存需要多高的命中率。
问题描述:
- 缓存访问时间(Cache Access Time):4 ns(片上静态内存)
- 主存访问时间(Main Memory Access Time):40 ns(最快的动态内存)
- 目标平均访问时间(Average Access Time, t a v e t_{ave} tave):5 ns
问题是,缓存的命中率需要多高,才能在这两种内存之间达到这个目标的平均访问时间。
计算公式:
使用平均访问时间的公式:
t
a
v
e
=
α
t
c
+
(
1
−
α
)
(
t
m
)
t_{ave} = \alpha t_c + (1 - \alpha)(t_m)
tave=αtc+(1−α)(tm)
其中:
- t a v e t_{ave} tave 是目标的平均访问时间。
- t c t_c tc 是缓存访问时间。
- t m t_m tm 是主存访问时间。
- α \alpha α 是命中率(Hit Ratio)。
通过公式变换,命中率
α
\alpha
α 的计算公式为:
α
=
1
−
t
a
v
e
−
t
c
t
m
\alpha = 1 - \frac{t_{ave} - t_c}{t_m}
α=1−tmtave−tc
代入数值计算:
根据图中的公式:
α
=
1
−
5
−
4
40
=
1
−
1
40
=
0.975
=
97.5
%
\alpha = 1 - \frac{5 - 4}{40} = 1 - \frac{1}{40} = 0.975 = 97.5\%
α=1−405−4=1−401=0.975=97.5%
结论:
- 要达到 5 ns 的平均访问时间,缓存的命中率需要达到 97.5%。
- 图中的文字强调了这个命中率的重要性,并表明缓存的命中率必须非常高才能满足所需的访问性能。
这说明缓存的高命中率在保持整体系统性能中扮演着关键角色,尤其是在主存访问时间较长的情况下。
这张图解释了命中率对平均访问时间的影响,并通过计算例子来说明高命中率如何显著减少平均访问时间。
公式解释:
图中公式:
T
=
T
c
+
(
1
−
H
)
T
M
T = T_c + (1 - H) T_M
T=Tc+(1−H)TM
- ( T ): 平均访问时间
- ( T_c ): 命中时间(缓存访问时间)
- ( T_M ): 缺失后访问主存的时间(缺失惩罚)
- ( H ): 命中率(访问缓存时找到所需数据的概率)
例子分析:
-
例1: 当命中率 ( H = 0.85 ),( T_c = 1 )ns,( T_M = 20 )ns。
T = 1 + ( 1 − 0.85 ) × 20 = 1 + 0.15 × 20 = 1 + 3 = 4 ns T = 1 + (1 - 0.85) \times 20 = 1 + 0.15 \times 20 = 1 + 3 = 4 \text{ ns} T=1+(1−0.85)×20=1+0.15×20=1+3=4 ns -
例2: 若命中率提高到 ( H = 0.95 ):
T = 1 + ( 1 − 0.95 ) × 20 = 1 + 0.05 × 20 = 1 + 1 = 2 ns T = 1 + (1 - 0.95) \times 20 = 1 + 0.05 \times 20 = 1 + 1 = 2 \text{ ns} T=1+(1−0.95)×20=1+0.05×20=1+1=2 ns -
例3: 若命中率提升至 ( H = 0.99 ):
T = 1 + ( 1 − 0.99 ) × 20 = 1 + 0.01 × 20 = 1 + 0.2 = 1.2 ns T = 1 + (1 - 0.99) \times 20 = 1 + 0.01 \times 20 = 1 + 0.2 = 1.2 \text{ ns} T=1+(1−0.99)×20=1+0.01×20=1+0.2=1.2 ns
总结:
随着命中率 ( H ) 的提高,平均访问时间 ( T ) 明显减少。这说明提高命中率对加速系统的访问速度非常重要,因为较高的命中率意味着更多的访问可以直接从缓存中获取,从而减少了慢速主存访问的频率。