📜  缓存组织|设置1(简介)

📅  最后修改于: 2021-06-28 08:57:40             🧑  作者: Mango

缓存接近CPU,并且比主内存快。但是同时小于主内存。缓存组织是关于将内存中的数据映射到缓存中的某个位置。

一个简单的解决方案:
进行此映射的一种方法是考虑长内存地址的最后几位,以找到较小的缓存地址,并将其放置在找到的地址中。

简单解决方案的问题:
这种方法的问题是,我们失去了有关高阶位的信息,而没有办法找出属于高阶位的低阶位。

快取组织

解决方案是标签:
为了解决上述问题,更多信息存储在高速缓存中,以告知哪个内存块存储在高速缓存中。我们将其他信息存储为标签
标签

什么是缓存块?
由于程序具有空间局部性(一旦检索到位置,很有可能在不久的将来检索附近的位置)。因此,缓存是以块的形式组织的。典型的高速缓存块大小为32字节或64字节。

cacheBlock

上面的安排是直接映射缓存,它具有以下问题
上面我们已经讨论了存储器地址的最后几位被用于在高速缓存中寻址,而剩余的位被存储为标签。现在想象一下,缓存非常小,地址为2位。假设我们使用主存储器地址的后两位来确定缓存(如下图所示)。因此,如果程序访问2、6、2、6、2,…,则每次访问都会导致命中,因为2和6必须存储在缓存中的同一位置。

块

解决上述问题–关联性
如果我们可以将数据存储在缓存中的任何位置怎么办,那么上面的问题就不会出现了?那会减慢缓存的速度,因此我们在这之间做一些事情。

快取

来源:
https://www.youtube.com/watch?v=sg4CmZ-p8rU

我们将很快讨论缓存组织的更多细节。