L1,L2,L3 Cache缓存原理

落日映苍穹つ 2024-03-22 16:40 158阅读 0赞

一、介绍

CPU缓存(Cache Memory)也被称为Cache,是存储器子系统的组成部分,存放着程序经常使用的指令和数据。从广义的角度上看,Cache是快设备为了缓解访问慢设备延时的预留的Buffer,从而可以在掩盖访问延时的同时,尽可能地提高数据传输率。

二、位置

CPU缓存位于CPU与内存之间的临时存储器,一般在在CPU内核里,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。最初缓存只有一级,二级缓存(L2 CACHE)出现是为了协调一级缓存与内存之间的速度。二级缓存比一级缓存速度更慢,容量更大,主要就是做一级缓存和内存之间数据临时交换的地方用。实际上,现在Intel和AMD处理器在一级缓存的逻辑结构设计上有所不同,所以二级缓存对CPU性能的影响也不尽相同。

d743c6e0d6034772b2a42808d0592683.png

三、工作原理

缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。

四、为什么要分级

CPU中有L1、L2、L3甚至L4级Cache。为什么搞这么麻烦CPU厂商直接把L1和L2加倍不就好了吗?
最早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类。当时集成在CPU内核中的缓存已不足以满足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。

64fd597c7101937700dfc911337285f6.jpeg

一般来说,每级缓存的命中率大概都在80%左右,也就是说全部数据量的80%都可以在一级缓存中找到,只剩下20%的总数据量才需要从二级缓存、三级缓存或内存中读取,由此可见一级缓存是整个CPU缓存架构中最为重要的部分。

多级CACHE的设计,只是为了一个目的:既快,又成本低。这就是因为主内存不够快,而又必须得控制成本不能让电脑太贵而设计的。也就是说,如果现在主流的内存DRAM够快的话,这几级cache就会完全消失的。

参考:

Cache为什么有那么多级?为什么一级比一级大?是不是Cache越大越好? - 知乎

二级缓存是什么意思 为什么要分一二三级缓存-电子发烧友网

发表评论

表情:
评论列表 (有 0 条评论,158人围观)

还没有评论,来说两句吧...

相关阅读

    相关 LTE L1/L2/L3

    参考OSI七层模型,层一是物理层,层二是数据链路层,层三是网络层。例如MAC地址属于层二,IP属于层三。 由此而来的二层交换机和三层交换机的不同就在于: 二层交换机属于链路

    相关 L1L2正则化

    什么是正则化? 正则化就是在损失函数后加上一个正则化项(惩罚项),其实就是常说的结构风险最小化策略,即经验风险(损失函数)加上正则化。一般模型越复杂,正则化值越大。 常