龙空技术网

CPU缓存的作用

土法学电脑 2598

前言:

当前姐妹们对“cache缓冲存储器的作用是什么”大约比较关怀,兄弟们都需要剖析一些“cache缓冲存储器的作用是什么”的相关资讯。那么小编同时在网摘上搜集了一些关于“cache缓冲存储器的作用是什么””的相关内容,希望大家能喜欢,咱们快快来了解一下吧!

本篇为02-CPU简介的补充内容。

本篇的内容结构如下:

本篇介绍CPU缓存的相关知识

我们在“第02-CPU简介”中曾介绍过,CPU的性能(The CPU Performance index)主要取决于其主频和工作效率。

Intel® Core™ i7-7700K性能指标

其中,缓存是决定CPU工作效率的重要指标之一。

1.什么是CPU缓存

CPU缓存(CPU Cache)是位于CPU与内存之间的静态随机存取存储器(StaticRandom Access Memory,SRAM)。所谓“静态”指的是这种存储器只要保持通电,里面存储的数据就可以恒常保持。相比之下,电脑的内存——动态随机存取存储器(DRAM)里面所存储的数据则需要周期性地刷新。

内存简介

电脑存储器

SRAM的优势在于它不需要像DRAM一样刷新(每隔一段时间充电一次)电路就能保存它内部存储的数据。因此缓存(SRAM)具有比内存(DRAM)更高的性能。SRAM的缺点是SRAM集成度较低,功耗较DRAM大,相同容量的DRAM内存可以设计得更小,但SRAM却需要保持很大的体积,因此SRAM更加昂贵。

2.CPU缓存的工作原理

电脑在运行程序时,当CPU要读取一个数据,首先将从缓存中查找,如果找到就立即送给CPU处理。缓存与CPU之间的数据交换速度要比CPU和内存之间快得多。

如果CPU没有在缓存中找到需要的数据。

就用相对慢的速度从内存中读取并送给CPU处理。

同时把这个数据所在的数据块调入缓存中。

这样,可以使得下次再使用同样的数据时,可以通过缓存快速读取,而不必再调用内存。而CPU在需要访问特定的数据时,也会先检查一下缓存,看看其中是不是有自己需要的数据。

这样的数据读取机制使CPU读取缓存数据的命中率(hit)非常高(90%左右),也就是说经过上面所示的数据读取与调用后,CPU经常要用的数据很大可能被保存在了缓存中,当它下一次要读取相同的数据时,90%的数据都在缓存中了,无需再从较远的内存中调用。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需访问内存。

一台电脑如果没有CPU缓存,它虽然仍可以工作,但是相比拥有CPU缓存的电脑,它的运行速度会慢很多。
3.CPU缓存解决的问题

由于CPU核心的发展速度远远超过了内存技术的发展速度,导致CPU处理数据的速度太快,快到内存提供的数据跟不上CPU处理数据的速度。缓存没有出现之前,在处理器时钟周期内,CPU常常需要等待内存供应数据,这不仅浪费资源,还降低了CPU的工作效率。

因此缓存便应运而生,它的出现是为了缓解CPU和内存之间速度的不匹配问题。

缓存的出现解决了CPU运行速度提升的瓶颈问题。
4.CPU的三级缓存

CPU缓存有三种不同的等级,包括L1一级缓存、L2二级缓存、L3三级缓存。

L1一级缓存

L1一级缓存也被称为“主缓存”,这个名词出现应该是在Intel公司奔腾(Pentium)处理器时代把缓存开始分类的时候,当时在CPU内部集成的CPU缓存已经不能满足整机的性能需求,而制造工艺上的限制不能在CPU内部大幅提高缓存的数量,所以出现了集成在主板上的缓存,当时人们把CPU内部集成的CPU缓存成为一级缓存,而把CPU外部主板上的缓存称为二级缓存。

一级缓存位于CPU的内部,CPU访问它速度与CPU自身的速度相当,因此一级缓存速度非常快。它是电脑中速度最快的缓存。

一级缓存其实还分为一级数据缓存(Data Cache,D-Cache,L1d)和一级指令缓存(Instruction Cache,I-Cache,L1i),分别用于存放数据及执行数据的指令解码,两者可同时被CPU访问,减少了CPU多核心、多线程争用缓存造成的冲突,提高了处理器的效能。一般CPU的L1i和L1d具备相同的容量,例如i7-8700K的L1即为32KB+32KB。
L2二级缓存

L2二级缓存也被称为“外部缓存”。它被用于存储最近被处理器访问但还没有被一级缓存存储的数据。二级缓存的容量要比一级缓存大,但速度却没有一级缓存那么快。

概括地说CPU在寻找需要的数据时,没有在一级缓存中找到自己需要的数据,它便会搜索二级缓存。

随着CPU制造工艺的发展,本来处于CPU外部的二级缓存也可以轻易地集成进CPU内部。

在这种情况下再用缓存是否处于CPU内部来判断一、二级缓存已经不再确切。集成进CPU的二级缓存运行速率渐渐可以跟上CPU的运行速度了。
L3三级缓存

早期,出现L3三级缓存的CPU是AMD的K6-III处理器,当时受限于制造工艺,L3只能集成在主板上。随后Intel首次推出L3三级缓存的CPU是Itanium安腾服务器处理器,接着就是P4EE和至强MP。

三级缓存的出现其实对CPU性能提升呈一个爬坡曲线——三级缓存在0到2M的情况下CPU性能提升非常明显,但三级缓存在2M到6M下,对CPU性能的提升可能就只有10%不到了,这是在近代CPU多核共享L3的情况下;当L3集成进CPU正式成为CPU内部缓存后,CPU处理数据时只有5%需要在内存中调用数据,进一步地减少了内存延迟,使系统的响应更为快速。

同理,三级缓存是二级缓存与主内存之间的缓冲器,主要体现在提升CPU对大数据处理方面的性能,对游戏表现方面有较大的帮助。

三级缓存的容量比二级缓存要大,但速度却比二级缓存要慢。三级缓存也被称为共享缓存。因为它的存储空间是被CPU之间的所有内核共享的。

而一级和二级缓存则是专用的,CPU中每个核心都有自己的一级和二级核心。

总结

由于数据的局限性,CPU往往需要在短时间内重复多次读取数据,内存的运行频率自然是远远跟不上CPU的处理速度的。此时,缓存的重要性就凸显出来了,CPU可以避开内存在缓存里读取到想要的数据,称之为命中(hit)。一级的运行速度很快,但是它的数据容量很小,CPU能在一级缓存里命中的概率大概在80%左右;二级、三级缓存的机制也类似如此。这样一来,电脑在运行程序时,CPU需要在内存中读取的数据大概为其所需数据的5%-10%,其余数据命中全部可以在L1、L2、L3中做到,这大大减少了系统的响应时间,总的来说,所有CPU读取数据的顺序都是先缓存再内存。

为了加深读者对CPU缓存和三级缓存的了解,这里用一个比喻来总结以上内容。

如果我们把CPU中的一个核心可以看成是一个只会算加减乘除以及与或非之类的简单逻辑运算的小学生,它的任务也就是不停地算一个个的加减乘除与或非这样的计算题。

那么,我们可以把CPU正在执行的指令理解为小学生脑子里正在算的那一道题。

而L1一级缓存里所储存的东西就是小学生脑子里记住的接下来几道题。一级缓存读写数据的速度和计算数据的速度一样快,并且几乎没有延迟。一级缓存往往是指令缓存和数据缓存分开,因为CPU要算的通常不是1+2,而是x+y,xy的值要去其他的地方去找。

L2二级缓存则是这个小学生手里草稿纸上抄下来的接下来的几十道题(读写的速度也非常快,但是需要多浪费一点时间去找)。

L3三级缓存则是同一学习组里好几个同样在做数学练习题的小学生(CPU上的各个核心)共同看老师在投影屏幕上布置的数学练习习题集,每个人都从那上面抄题来做,因为需要专门找题、抄题,再计算,所以需要的时间也更多。

在CPU之外的内存就相当于教室外面的书架,里面放着好几百本练习册,让小学生们需要算的时候就来拿(因为要出教室才能拿到,所以需要花的时间更多,即速度更慢,延迟更大)。而有时也会有邻近几个学习组共用一组书架的情况(多路CPU)。硬盘,则可以是看做是学校的图书馆,小学生们要算的所有数学练习册都保存在这里,但他们不能自己不能自己进去找,只能通过图书馆管理员(DMA,Direct Memory Access,直接存储器访问)来找到自己需要的那一本练习册,并且放到教室外的书架上,它们才能看到。

相关内容1:02-CPU简介

相关内容2:03-内存简介

标签: #cache缓冲存储器的作用是什么