cache是什么文件夹 (Cache是怎么组织和工作的)

文章编号:8975 更新时间:2024-02-20 分类:互联网资讯 阅读次数:

资讯内容

我们经常能够看到2-ways,4-ways cache,它是什么意思呢?Cache和内存地址是怎么对应起来的呢?今天我们就介绍这个内容。

cache是什么文件夹Cache是怎么组织

CPU 中,Cache Memory 处于 Memory Hierarchy 的最顶端,其下是内存和外存。

那么 CPU 是如何访问 Cache 的呢?和访问内存类似,CPU 微架构也对各级 Cache 地址空间进行了编码,只是这些编码并不能够被软件所体察。为简化起见,我们忽略各级 Cache 的区别,仅仅讨论一般意义上 Cache 的访问。

Cache 的组成和访问方式

在现代大多数处理器中,Cache 被分为很多行(Cache Line),Cache Line 大小不一,从 16 Byte 到 128 Byte 不等,一般大小是 64 个 Byte,我们在这之后都认为 Cache Line 有 64B 组成。我们假设有 512KB 的 Cache,就可以划分成 8192 个 Cache Line。

那么一个地址访问如何映射到 Cache 中去呢?我们都知道地址分为逻辑地址(虚拟地址)、线性地址和物理地址。一个虚拟地址变换成物理地址的简单过程如下图,我就不详细说明了:

变换过程中线性地址到物理地址需要用到页表(page Table)。页表由很多项组成,每一项叫一个页表项,整个页表由操作系统维护,并放置在内存中(或磁盘中)。从上文(L1,L2,L3 Cache 究竟在哪里?)我们知道,一次内存访问需要数百个时钟周期,如果每次地址转换都要查看内存页表也太浪费时间了。现代计算机为了加速这一过程,引入了翻译后援缓冲器 TLB。TLB 可以看作页表的 Cache,CPU 每次转换地址都会查看 TLB,如果有了就不用去取内存页表了。

那么 TLB 和 Cache 有什么关系呢?可以说 TLB 命中是 Cache 命中的基本条件。TLB 不命中,会更新 TLB 项,这个代价非常大,Cache 命中的好处基本都没有了。在 TLB 命中的情况下,物理地址才能够被选出,Cache 的命中与否才能够达成。如下图:

n-ways Set-Associative Cache

从前文可以看出知道物理地址,那就能够知道 Cache 命中与否。那么 Cache 地址和物理地址的对应关系有很多种。我们先看两个极端的例子:

直接映射可以理解为每个地址都可以立刻直接且只能映射到某个 Cache Line 上。还是举前面那个 512KB Cache 的例子。假设我们有 1GB 物理内存,我们把它们分成 8192 份,每份就是 128KB。则我们的直接映射 Cache 算法就是每个 128KB 块里面所有的地址都只能映射到相应的 Cache Line 中。我们判断 Cache 命中的算法就很简单,直接地址/128KB,商就是 Cache Line 的地址,如果里面的确是该地址就命中,否则就不明中,简单高效,运算十分迅速。意义图如下:

图片来自 HardwareSecrets

这样做看起来很高效,哪有那些坏处呢?那就是 Cache Miss 率极高,因为数据的相关性和局限性,同一时刻需要用的数据大部分都在附近,会造成 Cache 频繁换进换出,造成颠簸。一个改进的做法是用 interleave,但也会造成 Cache Miss 很大,冷热不均。

全映射就是所有 Cache Line 可以对应说有地址。这样 Cache 就不会造成冷热不均,Cache Miss 减小了很多,但与此同时带来了另外的问题,那就是查找 Cache 命中与否的代价 (Overhead) 很高。一条不命中的寻找,要遍历整个 Cache,才能最终确定下来。

直接映射在 Cache 刚刚发明时大行其道,但随着 Cache 的发展,它的问题也被暴露了出来,于此同时全相连也不是很好的解决办法。人们退而求在两个极端方法直接寻找平衡,提出了 n 路组相联映射 (n-ways Set-Associative mapping):

这里 n 路,是指将 Cache 分成 n 个组(set),每一组对应一个地址。也就是说一个地址可以映射到 n 个 Cache Line 中。我们举个 4 ways 的例子。我们先把 Cache 每 4 个分成一组:

同样的 1GB 内存也做出调整:

标签: 硬件中央处理器设计CPUCPU

本文地址: https://yihaiquanyi.com/article/b4a7baff91672de858bf.html

上一篇:为什么一级比三级耗电量大为什么一级比一级...
下一篇:l2cacheverilogL2Cache终究在哪里L3L1...

发表评论