`
阅读更多

CPU缓存

多数CPU只有一级缓存和二级缓存,部分还有三级缓存
CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。

CPU的缓存是提高了CPU对内存反复的数据的处理速度。CPU要运算的数据都是从内存取来的,但是内存速度比CPU慢很多,CPU总是在干等,划 不来,于是在CPU里设计了高速缓存(容量相对内存很小)。事先把CPU可能会用到的数据从内存取到缓存,由于预测机制的作用,在90%以上的情况下, CPU需要的数据就在缓存里面,很快就可以取到。 这样明显可以大幅提高系统的效率。

而硬盘的缓存是提高CPU与硬盘之间的速度.同 样,内存里面的数据大部分是从硬盘取来的, 内存速度比硬盘要快几十倍,内存等硬盘读盘也等得很烦。 于是在硬盘里面设计了跟内存速度差不多的缓存 事先把内存可能用到的数据从硬盘读到缓存。 然后内存要数据的话,先到硬盘缓存找找, 实在找不到再让硬盘读盘。

高速缓存分为一级缓存(即L1 Cache)和二级缓存(即L2Cache)。CPU在运行时首先从一级缓存读取数据,然后从二级缓存读取数据,然后从内存和虚拟内存读取数据,因此高速 缓存的容量和速度直接影响到CPU的工作性能。 一级缓存都内置在CPU内部并与CPU同速运行,可以有效的提高CPU的运行效率。一级缓存越大,CPU的运行效率越高,但受到CPU内部结构的限制,一 级缓存的容量都很小。 二级缓存对CPU运行效率的影响也很大,现在的二级缓存一般都集成在中,但有分为芯片内部和外部两种,集成在芯片内部的二级缓存与CPU同频率二级缓存 (即全速二级缓存),而集成在芯片外部的二级缓存的运行频率 是CPU的运行频率的一半(即半速二级缓存),因此运行效率较低。 但是一级缓存和二级缓存的大,它究竟有多少好处呢?你得告诉我们经销商,实际上你得用最普通的话跟他讲。所以我们给他们打个比方,说这个就好比你开汽车的 时候,后备箱是整个的一级缓存,假如说扶手里面有一个小箱子,那是你的二级缓存。二级缓存大好在哪里呢?就是你随时开车的时候,随时在里面都可以取东西 了。假如你二级缓存小的话,你还得把车停下来,到后备箱里取东西。
首先我们来简单了解一下一级缓存。目前所有主流处理器大都具有一级缓存和二 级缓存,少数高端处理器还集成了三级缓存。其中,一级缓存可分为一级指令缓存和一级数据缓存。一级指令缓存用于暂时存储并向CPU递送各类运算指令;一级 数据缓存用于暂时存储并向CPU递送运算所需数据,这就是一级缓存的作用(如果大家对上述文字理解困难的话,可参照下图所示)。
那么,二级缓 存的作用又是什么呢?简单地说,二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU处理时需要用 到、一级缓存又无法存储的数据。同样道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。需要注意的是,无论是二级 缓存、三级缓存还是内存都不能存储处理器操作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下的二级缓存、三级缓存和内存仅用于存储CPU 所需数据。
根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令追踪缓存2种,它们分别被AMD和Intel所采用。不同的一级数据缓存设计对于二级缓存容量的需求也各不相同,下面让我们简单了解一下这两种一级数据缓存设计的不同之处。

 

CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将 访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储 器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存 间的带宽引起的。

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

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

最 早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类。当时集成在CPU内核中的缓存已不足以满足CPU的需 求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处 理器效能。英特尔公司在推出Pentium 4处理器时,用新增的一种一级追踪缓存替代指令缓存,容量为12KμOps,表示能存储12K条微指令。

随 着CPU制造工艺的发展,二级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。现在再用集成在CPU内部与否来定义一、二级缓存,已不确切。而且随 着二级缓存被集成入CPU内核中,以往二级缓存与CPU大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为CPU提供更高的传输速度。

二级缓存是CPU性能表现的关键之一,在CPU核心不变化的情况下,增加二级缓存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二级缓存上有差异,由此可见二级缓存对于CPU的重要性。

CPU 在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有二级缓存的CPU中, 读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准确预测将要执行的 数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比 例了。目前的较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约5%的数据需要从 内存中调用,这进一步提高了CPU的效率。

为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算 法是“最近最少使用算法”(LRU算法),它是将最近一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器 清零,其他各行计数器加1。当需要替换时淘汰行计数器计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要 的数据淘汰出缓存,提高缓存的利用率。

CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量则分为128KB、 256KB、512KB、1MB、2MB等。一级缓存容量各产品之间相差不大,而二级缓存容量则是提高CPU性能的关键。二级缓存容量的提升是由CPU制 造工艺所决定的,容量增大必然导致CPU内部晶体管数的增加,要在有限的CPU面积上集成更大的缓存,对制造工艺的要求也就越高。

CPU的二级缓存是默认开启的,所谓的在注册表中修改相应的secondlevelcache键值来打开二级缓存是不对的,那只是一个映射,如果不开启二级缓存,电脑的性能会很受影响.
Windows XP系统中,默认状态下CPU二级缓存并未打开。为了提高系统性能,我们可以通过修改注册表,或使用“Windows优化大师”等软件来开启它。
运 行注册表编辑器,展开HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Memory Management分支,双击右侧窗口中的“SecondLevelDataCace”,然后在弹出的窗口中直接填入当前计算机所使用的CPU的二级缓 存容量即可。
赛扬处理器的二级缓存为128KB,应将其值设置为80(16进制,下同)。PⅡ、PⅢ、P4均为512KB二级缓存,应设置为 200;PⅢE(EB)、P4 Willamette只有256KB二级缓存,应设置为100;AMD Duron只有64KB二级缓存,应设置为40;K6-3拥有256KB二级缓存;Athlon拥有512KB二级缓存;Athlon XP拥有256KB二级缓存;Athlon XP(Barton核心)拥有512KB二级缓存。
使用Windows优化大师也可以正确设置CPU的二级缓存:启动Windows优化大师,选择“系统性能优化”,在“文件系统优化”中,最上面就是关于CPU二级缓存的设置项。拖动滑块到相应的位置后,保存设置并重新启动计算机即可。

先我们来简单了解一下一级缓存。目前所有主流处理器大都具有一级缓存和二级缓存,少数高端处理器还集成了三级缓存。其中,一级缓存可分为一级指令缓 存和一级数据缓存。一级指令缓存用于暂时存储并向CPU递送各类运算指令;一级数据缓存用于暂时存储并向CPU递送运算所需数据,这就是一级缓存的作用



那么,二级缓存的作用又是什么呢?简单地说,二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二 级缓存的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。同样道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单 位制造成本却递减。需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处理器操作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下 的二级缓存、三级缓存和内存仅用于存储CPU所需数据。

根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令追踪缓存2种,它们分别被AMD和Intel所采用。不同的一级数据缓存设计对于二级缓存容量的需求也各不相同,下面让我们简单了解一下这两种一级数据缓存设计的不同之处。
一、AMD一级数据缓存设计

AMD 采用的一级缓存设计属于传统的“实数据读写缓存”设计。基于该架构的一级数据缓存主要用于存储CPU最先读取的数据;而更多的读取数据则分别存储在二级缓 存和系统内存当中。做个简单的假设,假如处理器需要读取“AMD ATHLON 64 3000+ IS GOOD”这一串数据(不记空格),那么首先要被读取的“AMDATHL”将被存储在一级数据缓存中,而余下的“ON643000+ISGOOD”则被分 别存储在二级缓存和系统内存当中(如下图所示)。



需要注意的是,以上假设只是对AMD处理器一级数据缓存的一个抽象 描述,一级数据缓存和二级缓存所能存储的数据长度完全由缓存容量的大小决定,而绝非以上假设中的几个字节。“实数据读写缓存”的优点是数据读取直接快速, 但这也需要一级数据缓存具有一定的容量,增加了处理器的制造难度(一级数据缓存的单位制造成本较二级缓存高)。
二、Intel一级数据缓存设计

自 P4时代开始,Intel开始采用全新的“数据代码指令追踪缓存”设计。基于这种架构的一级数据缓存不再存储实际的数据,而是存储这些数据在二级缓存中的 指令代码(即数据在二级缓存中存储的起始地址)。假设处理器需要读取“INTEL P4 IS GOOD”这一串数据(不记空格),那么所有数据将被存储在二级缓存中,而一级数据代码指令追踪缓存需要存储的仅仅是上述数据的起始地址(如下图所示)。



由于一级数据缓存不再存储实际数据,因此“数据代码指令追踪缓存”设计能够极大地降CPU对一级数据缓存容量的要求,降低处理器的生产难度。但这种设计的弊端在于数据读取效率较“实数据读写缓存设计”低,而且对二级缓存容量的依赖性非常大。

在了解了一级缓存、二级缓存的大致作用及其分类以后,下面我们来回答以下硬件一菜鸟网友提出的问题。
从 理论上讲,二级缓存越大处理器的性能越好,但这并不是说二级缓存容量加倍就能够处理器带来成倍的性能增长。目前CPU处理的绝大部分数据的大小都在 0-256KB之间,小部分数据的大小在256KB-512KB之间,只有极少数数据的大小超过512KB。所以只要处理器可用的一级、二级缓存容量达到 256KB以上,那就能够应付正常的应用;512KB容量的二级缓存已经足够满足绝大多数应用的需求。

这其中,对于采用“实数据读写 缓存”设计的AMD Athlon 64、Sempron处理器而言,由于它们已经具备了64KB一级指令缓存和64KB一级数据缓存,只要处理器的二级缓存容量大于等于128KB就能够存 储足够的数据和指令,因此它们对二级缓存的依赖性并不大。这就是为什么主频同为1.8GHz的Socket 754 Sempron 3000+(128KB二级缓存)、Sempron 3100+(256KB二级缓存)以及Athlon 64 2800+(512KB二级缓存)在大多数评测中性能非常接近的主要原因。所以对于普通用户而言754 Sempron 2600+是值得考虑的。

反 观Intel目前主推的P4、赛扬系列处理器,它们都采用了“数据代码指令追踪缓存”架构,其中Prescott内核的一级缓存中只包含了12KB一级指 令缓存和16KB一级数据缓存,而Northwood内核更是只有12KB一级指令缓存和8KB一级数据缓存。所以P4、赛扬系列处理器对二级缓存的依赖 性是非常大的,赛扬D 320(256KB二级缓存)与赛扬 2.4GHz(128KB二级缓存)性能上的巨大差距就很好地证明了这一点;而赛扬D和P4 E处理器之间的性能差距同样十分明显。

最 后,如果您是狂热的游戏发烧友或者从事多媒体制作的专业用户,那么具有1MB二级缓存的P4处理器和具有512KB/1MB二级缓存的Athlon 64处理器才是您理想的选择。因为在高负荷的运算下,CPU的一级缓存和二级缓存近乎“爆满”,在这个时候大容量的二级缓存能够为处理器带来5%-10% 左右的性能提升,这对于那些要求苛刻的用户来说是完全有必要的。

 

目前所有主流处理器大都具有一级缓存和二级缓存,少数高端处理器还集成了三级缓存。其中,一级缓存可分为一级指令缓存和一级数据缓存。一级指令缓存用于暂时存储并向CPU递送各类运算指令;一级数据缓存用于暂时存储并向CPU递送运算所需数据,这就是一级缓存的作用.

二 级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU处理时需要用到、一级缓存又无法存储的数据。同样 道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处 理器操作的原始指令,这些指令只能存储在CPU的一级指令缓存中,而余下的二级缓存、三级缓存和内存仅用于存储CPU所需数据。

根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令追踪缓存2种,它们分别被AMD和Intel所采用。不同的一级数据缓存设计对于二级缓存容量的需求也各不相同,下面让我们简单了解一下这两种一级数据缓存设计的不同之处。

 

一级最重要,但是现在CPU的一级缓存几乎都一样,所以忽略。
二级缓存的话对于Intel的CPU是很重要的,Intel的CPU的二级缓存越大性能提升非常明显,而AMD的CPU虽然二级缓存也很重要,但是二级缓存大小对AMD的CPU的性能提升不是很明显。
三级缓存其实只是做了个辅助的作用,除了服务器,其实对我们家庭机没什么用的,内存还是很重要的。

所以说现在衡量CPU性能除了频率外就是二级缓存的大小了

分享到:
评论

相关推荐

    CPU缓存失效导致性能下降:主板BIOS损坏导致CPU缓存失效.pdf

    CPU缓存失效是一个可能导致计算机性能显著下降的问题,尤其是在运行依赖CPU处理能力的旧版3D游戏时。本文通过一个实例,讲述了如何诊断和解决由主板BIOS损坏导致的CPU缓存失效问题。 案例中,一台配置为Athlon XP ...

    从底层数据结构和CPU缓存两方面剖析LinkedList的查询效率为什么比ArrayList低.docx

    其次,从 CPU 缓存方面,CPU 缓存对数组友好,因为数组结构是连续的内存, CPU 缓存可以读入一整片连续的内存空间,提高查询效率,而 LinkedList 结构是非连续的内存,不利于 CPU 缓存的使用。 知识点1:ArrayList ...

    5-3JMM-CPU缓存一致性协议MESI.mp4

    5-3JMM-CPU缓存一致性协议MESI.mp4

    15、CPU缓存架构详解&高性能内存队列Disruptor实战

    在IT领域,优化系统性能是至关重要的,而这往往与CPU缓存和内存管理息息相关。本文将深入探讨CPU缓存架构及其对系统性能的影响,并详细解析高性能内存队列——Disruptor的实际应用。 首先,让我们来了解一下CPU缓存...

    浅谈CPU缓存的分级.pdf

    CPU 缓存的分级 CPU 缓存是现代桌面级 CPU 的一个重要组件,它提供了临时的高速数据存储空间,大大减轻了内存对 CPU 性能的制约。典型的 CPU 缓存结构是由一级缓存(L1 Cache)和二级缓存(L2 Cache)组成,部分...

    CPU缓存的主要作用

    ### CPU缓存的主要作用 在计算机系统中,CPU缓存是一项关键的技术,它极大地提高了处理器访问数据的速度,从而显著提升了程序执行效率。本文将详细探讨CPU缓存的重要性、其工作原理以及如何通过优化代码来充分利用...

    cpp-CJAG两个位于同一个位置的虚拟机之间基于CPU缓存的通信

    本文将探讨“cpp-CJAG”项目,它关注的是两个位于同一物理位置的虚拟机之间如何利用CPU缓存进行高效通信。 标题中的"cpp-CJAG"可能是一个开源项目或研究,专注于使用C++编程语言来实现CPU缓存通信机制。C++是一种...

    基于CPU缓存操作模式差异的虚拟机检测方法.pdf

    【基于CPU缓存操作模式差异的虚拟机检测方法】 虚拟化技术在当今的信息安全领域扮演着重要的角色,尤其是在恶意软件分析中。虚拟机检测技术,作为反分析的一种手段,对于恶意软件作者和安全研究人员同样至关重要。...

    CPU缓存浅说[文].pdf

    CPU缓存是计算机硬件系统中的一个重要组成部分,主要目的是解决CPU与主内存速度不匹配的问题,以提高计算机的整体运行效率。缓存(Cache)是一种高速、小容量的存储器,位于CPU与主内存之间,用于暂时存储CPU频繁...

    称“芯”快意——深入CPU缓存的世界.pdf

    《深入CPU缓存的世界》是一本探讨CPU高速缓存的专业指南,旨在帮助读者理解这个对计算机性能至关重要的组件。CPU缓存,源自法语“cache”,意为隐藏珍贵物品的地方,它在计算机中扮演的角色正是存储频繁访问的数据,...

    Intel和AMD的CPU缓存有啥不一样.pdf

    Intel和AMD的CPU缓存技术比较 在计算机系统中,CPU缓存是提高系统性能的关键技术。 Intel和AMD是两大CPU制造商,都提供了自己的缓存技术。了解Intel和AMD的CPU缓存技术有何不同,是深入了解计算机系统性能优化的...

    CPU缓存+北桥+南桥+前端总线.docx

    CPU缓存是现代计算机系统中不可或缺的组成部分,它在提高处理器性能方面起着至关重要的作用。缓存的主要目的是解决CPU与内存之间速度不匹配的问题,因为CPU的工作速度远高于内存,而频繁的数据交换会导致大量的等待...

    CPU缓存+北桥+南桥+前端总线.pdf

    CPU缓存是计算机硬件中的关键组成部分,其主要目的是提高处理器的性能。缓存是一个小容量、高效率的存储器,位于CPU与主内存之间,它能够存储CPU频繁访问的数据,以便快速响应处理器的请求。 **一级缓存(L1 Cache)*...

    2005,我们“芯芯”相印——双核心CPU缓存数据一致性浅析.pdf

    双核心CPU缓存数据一致性浅析 本文主要讨论双核心CPU缓存数据一致性问题。随着双核心CPU的出现,缓存数据一致性问题变得越来越重要。双核心CPU的设计主要有两种:独立缓存设计和共享缓存设计。独立缓存设计是指每个...

    15、CPU缓存架构详解&高性能内存队列Disruptor实战(1).pdf

    ### CPU缓存架构详解 #### 1.1 CPU高速缓存概念 在现代计算机系统中,CPU缓存作为连接CPU与主内存之间的桥梁,扮演着至关重要的角色。它是一种小型而快速的存储器,用于存储最近频繁访问的数据,从而显著减少CPU...

    cpu二级缓存设置

    #### 一、CPU缓存基础知识 在深入了解如何开启或配置CPU的二级缓存之前,我们需要先对CPU缓存的基本概念有所了解。 **1.1 一级缓存(L1 Cache)** 一级缓存是位于CPU内部的高速缓存,分为指令缓存和数据缓存两...

    并发研究之CPU缓存一致性协议(MESI)1

    在计算机科学领域,CPU缓存一致性是多处理器系统中至关重要的概念,特别是在现代多核心处理器的设计中。CPU高速缓存的存在是为了缓解CPU运算速度与内存访问速度之间存在的差距,因为CPU的发展速度远超内存和硬盘。...

    浅谈Linux内核之CPU缓存.pdf

    浅谈Linux内核之CPU缓存.pdf

    cpu-cache-line-demo:使用Golang原语的CPU缓存行无效

    使用Golang原语的CPU缓存行无效 介绍 一直是并行性的陷阱。 对于在高速缓存行边界内分配的共享上下文上同时进行读/写更新的应用程序,性能上的损失变得明显。 现代CPU倾向于利用高速缓存来频繁更新内存位置。 CPU...

Global site tag (gtag.js) - Google Analytics