您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页CPU缓存浅说

CPU缓存浅说

来源:化拓教育网
CPU 缓 存 浅 说

缓存(Cache),全名叫“缓冲存取器”。

电脑中,用到缓存的地方很多,而CPU的缓存是最重要的。所以,下面说的是CPU缓存。除非特殊说明,都是以传统的“实数据读写缓存”为例的。

缓存是咋来的?

由于CPU的速度越来越快,需要主内存用更快的数据读写速度,为CPU快速提供数据。可偏偏主内存不长脸,速度提升相当地慢(其实,主内存的速度不是不能提高地,但如果要使主内存速度能与CPU相匹配,用现在的技术,那主内存可得老大了,老贵了,估计普通老百姓很难装备得起)。

如果CPU每次都要到主内存中读写数据,那CPU总要处于等待状态中,结果是再快的CPU也闲半拉膀子,整个电脑的速度都叫主内存拖了后腿。

咋办呢?

CPU的设计者想出一个既能快,有不贵的高招。那就是在CPU和主内存之间添加一个速度快,体积小的内存(通常叫它缓存)。弄出一个“缓存+主内存”的内存体系。

缓存能干啥?

在电脑中,缓存的意思一般是指“临时保存”。那么CPU的缓存临时保存什么呢?

现在,CPU对主内存数据的读写一般都会经过缓存。如果仅仅是简单的数据通过,那加个缓存真就是脱裤 子放屁了。

缓存的最大作用,就是可以将通过的数据中被CPU反复读写的数据暂存起来。当CPU再次读写这些数据 时,不用再到很慢的主内存中去了,而是就近就便地直接用缓存中现存的东西就行了。只有在缓存中找不到时,才去主内存中读写。

缓存中的东西会根据数据重复使用率而随时自动更新。

不过,仅仅能暂存还是不够的。CPU不仅要求缓存能暂存东西,还需要缓存的读写速度能比主内存快,与 CPU相匹配。

所以,缓存使用的SRAM (Static Random Access Memory静态随机存取器)采用了与CPU相同的半导体工艺,速度和CPU差不多。当然比主内存快老鼻子了。

说道这儿,大家都明白了吧。

缓存速度越快,容量越大(暂存的数据越多),越能适应CPU的速度,越能发挥CPU的性能,越能提高电脑整体的速度。

要说,CPU设计者真不白给。既能识别,又能暂存,还能更新,而且高速。真不简单。

但是,也有叫人郁闷的地方。那就是,缓存使用的静态随机存取器(SRAM)这玩意实在是集成度太差,在 容量相同的情况下,比其它类的存储器体积大得多,价格高得多。直接影响着CPU的体积和价格(因为缓存一般是在CPU芯片上的)。而且使用静态随机存取器(SRAM)的缓存体积、价格与性能的提高并不成正比例关系。也就是常说的性价比不高。所以,一般缓存都做得不大。

各级缓存中的数据构成

随着CPU速度的不断跃进,缓存到现在已经发展到一级、二级、三级了。常见的CPU有一级和二级缓存,高档一点的还有三级缓存。

用专业点儿的话讲,每一级缓存中所储存的全部数据,在下一级缓存中也有。 如果举个比较形象(但并不严谨)的例子的话,是这样的:

假设三级缓存中暂存”ABCDEFGHJKLMNOP”15个数据的话,二级缓存中则可能只暂存“ABCDEFGHJK”10个数据,而一级缓存中则可能只暂存“ABCDE”5个数据。一级缓存中暂存的是CPU重复使用率最高的数据。

咋读写数据?

CPU读写数据时,先在一级缓存中寻找,没找到;再到二级缓存中寻找,还没找到;再到三级缓存(如果有三级缓存的话)中寻找,还没找到。那就是真没有了。只好到主内存中去寻找了。不过,一般都会在缓存中找到90%以上的数据。

还是例子比较形象:

在缓存的成千上万个数据中,CPU需要找150个,一般可以在一级缓存中找到120个(行话叫80%命中率);再到二级缓存中找另外的30个,一般可以找到24个(还是80%的命中率);接下来到三级缓存中去找最后6个,一般还能找到5个(仍是80%的命中率)。加起来,在缓存中总共可以找到约149个,命中率约99%(如果没有三级缓存,命中率约为96%)。可见,需要到主内存中寻找的数据是相当少的喽。

注意,千万要分清。命中率是对要找的数量而言的(例如:150个)。不是占缓存总数据量的百分比。

为啥要弄出多级的缓存呢?

简单地说,三种级别缓存的技术难度、制造成本、容量、速度等是不同的。

一级缓存(Level 1 Cache),简称L1。

一级缓存可分为一级指令缓存(Instruction Cache,I-Cache)和一级数据缓存(Data Cache,D-Cache)。 指令缓存用于暂存并向CPU递送各类指令;数据缓存用于暂存并向CPU递送各类数据。两者可以同时被CPU读写,一般具有相同的容量。CPU缓存标示中常见的KBxKB,表示的就是两种一级缓存的容量。

一级缓存使用的静态随机存取器(SRAM)速度和CPU差不多。

在大多数CPU上,一级缓存和核心一起在一块芯片上,常被称为“片内缓存”。

一级缓存是整个CPU缓存系统中最重要的部分。不仅是因为在各种缓存中,其可以用最快的速度为CPU 提供80%需要数据,而且还因为,只有一级缓存中才有指令缓存。这个指令缓存,对调用各级缓存中的数据起着举足轻重的作用。

二级缓存(Level 2 Cache),简称L2。

当一级缓存不够用时,二级缓存应运而生了。 二级缓存比一级缓存速度慢,但容量大。

一开始,由于受到CPU体积、价格、制作工艺等,二级缓存是做在片外的(例如:主板上)。采用的 是体积、造价都比静态随机存取器(SRAM)低得多的动态随机存取器(DRAM,Dynamic Random Access Memory),但又比主内存高得多,所以又叫高速动态随即存取器。所以容量可以做得比较大,存储的数据比一级缓存多。

随着CPU制作工艺的提高,二级缓存也能轻易地集成在CPU芯片中,容量也在逐年提升。因而出现了内 部和外部之分。内部二级缓存运行速度与CPU相同,而外部二级缓存速度只是CPU的一半。

速度可以不低于一级缓存,容量却可以大于一级缓存,使得二级缓存成为目前决定CPU性能的关键之一。 同一核心的CPU,二级缓存越大,性能越好。

还有另外一个原因是,从P4时代开始,Intel(英特尔)开始采用的 “数据代码指令追踪缓存”技术。 这种技术下的一级数据缓存不再存储实际的数据,而是存储这些数据在二级缓存中的指令代码(数据在二级缓存中存储的起始地址)。这样就极大地降低了CPU对一级数据缓存大小的要求。但对二级缓存的依赖性却非常大。

通常用μOps值来表示数据代码指令追踪缓存的容量。例如:现在常见的12KμOps,表示能存储12000条解码后的微指令(micro-ops)。要注意,12KμOps绝对不等于12KB。

“数据代码指令追踪缓存”技术使Intel的C却要求PU(P4之后),一级缓存一般比AMD的CPU小,对二级缓存比AMD的大。

三级缓存(Level 3 Cache),简称L3。

为了适应速度更快的CPU,已经出现了三级缓存。它的容量更大,速度比二级缓存慢。但基本上对CPU性能的提高显得不是很重要。因为,经过一级、二级缓存的命中,CPU需要在三级缓存中寻找的数据已经很少了。

就啰嗦这些吧,也不知浅说明白没有。

归根到底就是一句话,缓存越大越好!只要手头宽裕,还是弄个大的好。

都是从网上学来的,纯属个人理解,绝非权威观点。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务