解读CPU缓存,它们如何工作的?

admin8个月前笔记75

近年来,计算机中央处理器已经取得了相当大的进步,晶体管每年都在变小,性能也变得更加强大。每当提到处理器的性能时,人们往往会想到晶体管和频率。实际上,除了更多的晶体管数量和更高的频率之外,缓存也非常重要。

对于大部分人来讲,他们大都听说过缓存。但是,并没有对 CPU 缓存的容量给予足够的关注。那么,CPU 缓存到底有多重要,它是如何工作的?

什么是 CPU 高速缓存?

简而言之,CPU 缓存只是一种非常快速的内存类型。在计算的早期,处理器速度和内存速度都很低。然而,在 1980 年代,处理器速度开始迅速提高。当时的系统内存(RAM)无法应对或匹配不断增加的CPU速度,因此一种新型的超快内存诞生了:CPU缓存。

现在,您的计算机内部有多种类型的内存,例如有主存储(如硬盘或 SSD)存储大部分数据,即操作系统和程序。

还有“随机存取存储器”, 俗称内存,它比主存储快得多,但只是一个短期存储介质,它让计算机及其程序使用 RAM 来存储经常访问的数据,从而帮助保持计算机上的操作良好而快速。

最后,CPU 内部还具有更快的内存单元,称为 CPU 缓存。

计算机内存具有基于其运行速度的层次结构。CPU 缓存位于此层次结构的顶部,是最快的。它也是最接近中央处理的地方,是CPU本身的一部分。从技术上来看,高速缓存的运行速度比 RAM 快 10 到 100 倍,只需要几纳秒即可响应 CPU 请求。

计算机内存也有不同的类型,其中高速缓存是静态RAM(SRAM)的一种形式,而常规系统RAM称为动态RAM(DRAM)。静态RAM可以保存数据而无需不断刷新,这与DRAM不同,这使得SRAM成为缓存的理想选择。

CPU 缓存如何工作?

计算机上的应用程序被设计为 CPU 解释和运行的一组指令。当您运行程序时,指令会从主存储(硬盘驱动器)传输到 CPU,这就是内存层次结构发挥作用的地方。

数据首先加载到 RAM 中,然后发送到 CPU。CPU每秒能够执行大量指令。为了充分利用其功能,CPU 需要访问超快内存,这就是 CPU 缓存的用武之地。

内存控制器从 RAM 获取数据并将其发送到 CPU 缓存,然后内存缓存在 CPU 内来回执行数据。当然,内存层次结构也存在于 CPU 缓存中。

CPU 高速缓存分为三个“级别”:L1、L2 和 L3,内存层次结构则根据速度以及缓存大小进行排列。

一级缓存

L1(级别 1)缓存是计算机系统中存在的最快内存。就访问优先级而言,一级缓存具有 CPU 在完成特定任务时最有可能需要的数据。

一级缓存的大小取决于 CPU。一些高端消费类CPU现在具有1MB的L1缓存,如Intel i9-9980XE,但这些要花费大量资金,而且仍然很少。一些服务器芯片组,如英特尔的Xeon系列,还具有1-2MB的L1内存缓存。

由于一级缓存的大小没有“标准”,因此您必须在购买前仔细查看 CPU 规格以确定确切的一级内存缓存大小。

image.png

英特尔 CPU L1 数据缓存图

一级缓存通常分为两部分:指令缓存和数据缓存。指令高速缓存处理有关 CPU 必须执行的操作的信息,而数据高速缓存保存要对其执行操作的数据。

二级缓存

L2(级别 2)缓存比 L1 缓存慢,但容量更大。L1 缓存可能以 KB 为单位,而 L2 内存缓存以兆字节为单位。例如,AMD Ryzen 5 5600X具有384KB的L1缓存和3MB的L2缓存(加上32MB的L3缓存)。

二级缓存大小因 CPU 而异,但其大小通常在 256KB 到 32MB 之间。大多数 CPU 将包含超过 256KB 的二级缓存,这在现阶段是最小的。此外,一些最强大的 CPU 具有更大的二级内存缓存,远远超过 8MB。

在速度方面,二级缓存落后于一级缓存,但仍然比您的系统 RAM 快得多。一级内存缓存通常比 RAM 快 100 倍,而二级缓存大约快 25 倍。

三级缓存

早期,L3内存缓存实际上是在主板上找到的。现在,CPU 中的 L3 缓存可能非常庞大,高端消费类 CPU 具有高达 32MB 的 L3 缓存,某些服务器 CPU L3 缓存可能会超过此值,最高可达 128MB。

L3 缓存是最大但也是最慢的缓存单元。 但是,虽然芯片本身的每个内核都存在L1和L2缓存,但L3缓存更类似于整个芯片都可以利用的通用内存池。

我们需要多少 CPU 缓存?

缓存越多、容量越大,则会越好,价格也会越高。新一代的CPU自然会比老一代包含更多的CPU缓存,并且缓存也可能更快。

因此,我们可以根据自己的实际应用场景需求,在购买产品之前仔细查看产品的规则,以此来保证买到自己想要的产品。


相关文章

Linux下su与su -命令的本质区别

Linux下su与su -命令的本质区别

su与su -命令的本质区别我首先是用su命令切换到root身份的,但是运行useradd时,出现错误:bash: useradd: command not found。google了一下,原因是在这...

教你如何让页面与 iframe 进行通信

引言这篇文章介绍如何实现页面与 iframe 进行通信,实际工作中可能很难遇到,但一旦遇到了,我们要能够立即想到怎样去实现。iframe 向父级页面发送消息在 iframe 页面,使用 window....

详解 php 流式调用 OpenAI 的 gpt-3.5-turbo 模型接口,实时接收回答并实时传送给前端打字机显示

原理阐明流式接纳 OpenAI 的回来数据后端 Class.ChatGPT.php 顶用 curl 向 OpenAI 建议恳求,运用 curl 的 CURLOPT_WRITEFUNCTION...

如何解决Oracle临时表空间过大

方案一:增加临时表空间的大小--1.临时表空间的使用情况题SELECT D.tablespace_name, SPACE "SUM_SPACE(M)", b...

创建交换分区的两个命令

创建交换分区的两个命令

交换分区在物理内存(RAM)被填满时用来保持内存中的内容。当 RAM 被耗尽,Linux 会将内存中不活动的页移动到交换空间中,从而空出内存给系统使用。虽然如此,但交换空间不应被认为是物理内...

详解:Nginx 反向代理、后端检测模块

详解:Nginx 反向代理、后端检测模块

Nginxshell > yum -y install gcc gcc-c++ make wget zl...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。