缓存是 CPU 用来减少访问内存的平均时间的随机存取存储器。
多级缓存是通过减少“MISS PENALTY”来提高缓存性能的技术之一。 Miss Penalty 是指每当缓存中出现“未命中”时,将数据从主内存带入缓存所需的额外时间。
为了清楚地理解,让我们考虑一个示例,其中 CPU 需要 10 个内存引用来访问所需的信息,并在以下 3 种系统设计案例中考虑这种情况:
案例 1:没有缓存的系统设计
这里 CPU 直接与主存通信,不涉及缓存。
在这种情况下,CPU 需要访问主存储器 10 次才能访问所需的信息。
案例 2:使用高速缓存的系统设计
在这里,CPU 首先检查所需的数据是否存在于高速缓存中,即高速缓存中是否存在“命中”或“未命中” 。假设高速缓存中有 3 次未命中,则主存储器将仅被访问 3 次。我们可以看到,这里的未命中惩罚减少了,因为主存储器的访问次数少于前一种情况。
案例 3:具有多级高速缓存的系统设计
这里通过引入多级缓存进一步优化了缓存性能。如上图所示,我们正在考虑2级缓存设计。假设有3个未命中在L1高速缓冲存储器和这些3个未中有2个未命中L2高速缓存存储器,则主存储器进行存取只有2次。很明显,这里的 Miss Penalty 比前一种情况大大减少,从而提高了 Cache Memory 的性能。
笔记 :
从以上 3 种情况可以看出,我们试图减少主内存引用的数量,从而减少 Miss Penalty,以提高整体系统性能。此外,需要注意的是,在多级缓存设计中,L1 缓存附加到 CPU 上,体积小但速度快。虽然,L2 Cache 附加到Primary Cache,即L1 Cache,它的大小更大,速度更慢,但仍然比主存储器快。
Effective Access Time = Hit rate * Cache access time
+ Miss rate * Lower level access time
多级缓存的平均访问时间:(T avg )
T avg = H 1 * C 1 + (1 – H 1 ) * (H 2 * C 2 +(1 – H 2 ) *M )
在哪里
H1 是 L1 缓存中的命中率。
H2 是 L2 缓存中的命中率。
C1 是访问 L1 缓存中信息的时间。
C2 是将信息从 L2 缓存传输到 L1 缓存的未命中惩罚。
M 是将信息从主存储器传输到 L2 缓存的 Miss 惩罚。
例子:
求出具有 2 ns 时钟周期时间、每条指令 0.04 次未命中率、25 个时钟周期的未命中损失和 1 个时钟周期的高速缓存访问时间(包括命中检测)的处理器的平均内存访问时间。此外,假设读取和写入未命中惩罚相同,并忽略其他写入停顿。
解决方案:
平均内存访问时间(AMAT)= 命中时间 + 未命中率 * 未命中率。
Hit Time = 1 个时钟周期(Hit time = Hit rate * access time)但是这里直接给出了Hit time,所以,
未命中率 = 0.04
Miss Penalty=25个时钟周期(这是命中后上一级内存所用的时间)
所以,AMAT= 1 + 0.04 * 25
AMAT= 2 个时钟周期
根据问题 1 时钟周期 = 2 ns
AMAT = 4ns