📜  多级缓存组织

📅  最后修改于: 2021-09-28 09:56:24             🧑  作者: Mango

缓存是 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