2022年一级缓存、二级缓存、三级缓存区别 .pdf
-
资源ID:34270701
资源大小:67.53KB
全文页数:8页
- 资源格式: PDF
下载积分:4.3金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
2022年一级缓存、二级缓存、三级缓存区别 .pdf
一级缓存、二级缓存、三级缓存是什么?作用?区别?首先简单了解一下一级缓存。目前所有主流处理器大都具有一级缓存和二级缓存,少数高端处理器还集成了三级缓存。其中,一级缓存可分为一级指令缓存和一级数据缓存。 一级指令缓存用于暂时存储并向CPU 递送各类运算指令;一级数据缓存用于暂时存储并向CPU递送运算所需数据, 这就是一级缓存的作用。那么,二级缓存的作用又是什么呢?简单地说,二级缓存就是一级缓存的缓冲器:一级缓存制造成本很高因此它的容量有限,二级缓存的作用就是存储那些CPU 处理时需要用到、一级缓存又无法存储的数据。同样道理,三级缓存和内存可以看作是二级缓存的缓冲器,它们的容量递增,但单位制造成本却递减。需要注意的是,无论是二级缓存、三级缓存还是内存都不能存储处理器操作的原始指令,这些指令只能存储在CPU 的一级指令缓存中, 而余下的二级缓存、 三级缓存和内存仅用于存储CPU所需数据。根据工作原理的不同,目前主流处理器所采用的一级数据缓存又可以分为实数据读写缓存和数据代码指令追踪缓存 2 种,它们分别被 AMD 和 Intel所采用。不同的一级数据缓存设计对于二级缓存容量的需求也各不相同,下面让我们简单了解一下这两种一级数据缓存设计的不同之处。一、AMD 一级数据缓存设计 AMD采用的一级缓存设计属于传统的“ 实数据读写缓存 ” 设计。基于该架构的一级数据缓存主要用于存储CPU 最先读取的数据; 而更多的读取数据则分别存储在二级缓存和系统内存当中。做个简单的假设,假如处理器需要读取 “ AMD ATHLON 64 3000+ IS GOOD” 这一串数据(不记空格) ,那么首先要被读取的“ AMDATHL” 将被存储在一级数据缓存中,而余下的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - “ ON643000+ISGOOD” 则被分别存储在二级缓存和系统内存当中(如下图所示) 。 需要注意的是, 以上假设只是对AMD 处理器一级数据缓存的一个抽象描述, 一级数据缓存和二级缓存所能存储的数据长度完全由缓存容量的大小决定,而绝非以上假设中的几个字节。“ 实数据读写缓存 ” 的优点是数据读取直接快速,但这也需要一级数据缓存具有一定的容量,增加了处理器的制造难度(一级数据缓存的单位制造成本较二级缓存高) 。二、Intel一级数据缓存设计自 P4时代开始, Intel开始采用全新的“ 数据代码指令追踪缓存” 设计。基于这种架构的一级数据缓存不再存储实际的数据, 而是存储这些数据在二级缓存中的指令代码(即数据在二级缓存中存储的起始地址)。假设处理器需要读取“ INTEL P4 IS GOOD” 这一串数据(不记空格) ,那么所有数据将被存储在二级缓存中,而一级数据代码指令追踪缓存需要存储的仅仅是上述数据的起始地址。由于一级数据缓存不再存储实际数据,因此“ 数据代码指令追踪缓存” 设计能够极大地降CPU 对一级数据缓存容量的要求,降低处理器的生产难度。但这种设计的弊端在于数据读取效率较“ 实数据读写缓存设计 ” 低,而且对二级缓存容量的依赖性非常大。在了解了一级缓存、二级缓存的大致作用及其分类以后,下面我们来回答以下硬件一菜鸟网友提出的问题。从理论上讲,二级缓存越大处理器的性能越好,但这并不是说二级缓存容量加倍就能够处理器带来成倍的性能增长。目前 CPU处理的绝大 部 分 数 据 的 大 小 都 在0-256KB 之 间 , 小 部 分 数 据 的 大 小 在256KB-512KB之间,只有极少数数据的大小超过512KB 。所以只要处理器可用的一级、二级缓存容量达到256KB以上,那就能够应付正常的应名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - 用; 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 内的,用来存放内部指令, 2 级缓存和 CPU封装在一起, 也是用来存放指令数据的,三级和四级缓存只在高端的服务器名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - CPU 里有,作用差不多, 速度更快, 更稳定, 更有效并不是缓存越大越好,譬如 AMD 和 INTER就有不同的理论, AMD 认为一级缓存越大越好,所以一级比较大, 而 INTER认为过大会有更长的指令执行时间,所以一级很小,二级缓存那两个公司的理论又反过来了,AMD 的小, INTER的大,一般主流的INTERCPU 的 2 级缓存都在2M左右 我们通常用( L1,L2)来称呼缓存又叫高速缓冲存储器其作用在于缓解主存速度慢、跟不上 CPU 读写速度要求的矛盾。 它的实现原理, 是把 CPU 最近最可能用到的少量信息(数据或指令)从主存复制到CACHE 中,当 CPU 下次再用这些信息时,它就不必访问慢速的主存,而直接从快速的CACHE 中得到,从而提高了得到这些信息的速度,使 CPU有更高的运行效率。 缓存的大小:一般说来,更大一点的cache 容量,对提高命中率是有好处的,如图 4.20 所示, 由于 cache 是用价格很高的静态存储器SRAM 器件实现的,而 cache 容量达到一定大小这后,再增加其容量, 对命中率的提高并不明显,从合理的性能价格比考虑,cache 的容量设置应在一个合理的容量范围之内。缓存要分一级二级三级,是为了建立一个层次存储结构,以达到最高性价比。而且多级组织还可以提高cache 的命中率,提高执行效能。 CPU缓存( Cache Memory )是位于 CPU与内存之间的临时存储器, 它的容量比内存小的多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为 CPU 运算速度要比内存读写速度快很多,这样会使 CPU 花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分, 但这一小部分是短时间内CPU 即将访问的,当 CPU 调用大量数据时,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - 就可避开内存直接从缓存中调用,从而加快读取速度。 由此可见,在 CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU 的性能影响很大,主要是因为CPU 的数据交换顺序和CPU与缓存间的带宽引起的。缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU 处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU 处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高(大多数 CPU 可达 90% 左右) ,也就是说 CPU 下一次要读取的数据90%都在缓存中,只有大约10% 需要从内存读取。这大大节省了CPU 直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU 读取数据的顺序是先缓存后内存。目前缓存基本上都是采用SRAM 存储器,SRAM 是英文 Static RAM 的缩写,它是一种具有静志存取功能的存储器,不需要刷新电路即能保存它内部存储的数据。不像DRAM 内存那样需要刷新电路,每隔一段时间,固定要对DRAM 刷新充电一次,否则内部的数据即会消失,因此SRAM 具有较高的性能,但是SRAM 也有它的缺点,即它的集成度较低,相同容量的DRAM 内存可以设计为较小的体积,但是 SRAM 却需要很大的体积,这也是目前不能将缓存容量做得太大的重要原因。它的特点归纳如下:优点是节能、速度快、不必配合内存刷新电路、可提高整体的工作效率, 缺点是集成度低、 相同的容量体积较大、而且价格较高,只能少量用于关键性系统以提高效率。按照数据读取名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 顺序和与 CPU 结合的紧密程度, CPU 缓存可以分为一级缓存, 二级缓存,部分高端 CPU 还具有三级缓存, 每一级缓存中所储存的全部数据都是下一级缓存的一部分,这三种缓存的技术难度和制造成本是相对递减的,所以其容量也是相对递增的。当 CPU 要读取一个数据时,首先从一级缓存中查找,如果没有找到再从二级缓存中查找,如果还是没有就从三级缓存或内存中查找。一般来说,每级缓存的命中率大概都在80% 左右,也就是说全部数据量的80% 都可以在一级缓存中找到,只剩下20% 的总数据量才需要从二级缓存、三级缓存或内存中读取,由此可见一级缓存是整个 CPU 缓存架构中最为重要的部分。一级缓存( Level 1 Cache )简称 L1 Cache,位于 CPU内核的旁边,是与CPU结合最为紧密的CPU缓存,也是历史上最早出现的CPU 缓存。由于一级缓存的技术难度和制造成本最高, 提高容量所带来的技术难度增加和成本增加非常大,所带来的性能提升却不明显,性价比很低,而且现有的一级缓存的命中率已经很高,所以一级缓存是所有缓存中容量最小的,比二级缓存要小得多。一般来说,一级缓存可以分为一级数据缓存(Data Cache ,D-Cache)和一级指令缓存(Instruction Cache,I-Cache ) 。二者分别用来存放数据以及对执行这些数据的指令进行即时解码,而且两者可以同时被CPU 访问,减少了争用Cache所造成的冲突,提高了处理器效能。目前大多数 CPU 的一级数据缓存和一级指令缓存具有相同的容量,例如AMD的 Athlon XP就具有 64KB的一级数据缓存和64KB的一级指令缓存,其一级缓存就以64KB+64KB 来表示,其余的 CPU 的一级缓存表示方法以此类推。 Intel的采用 NetBurst 架构的 CPU (最典型的就是Pentium 4 )名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 8 页 - - - - - - - - - 的一级缓存有点特殊,使用了新增加的一种一级追踪缓存(Execution Trace Cache,T-Cache 或 ETC )来替代一级指令缓存, 容量为 12K Ops ,表示能存储 12K条即 12000 条解码后的微指令。 一级追踪缓存与一级指令缓存的运行机制是不相同的,一级指令缓存只是对指令作即时的解码而并不会储存这些指令,而一级追踪缓存同样会将一些指令作解码,这些指令称为微指令 (micro-ops ), 而这些微指令能储存在一级追踪缓存之内,无需每一次都作出解码的程序,因此一级追踪缓存能有效地增加在高工作频率下对指令的解码能力,而 Ops 就是 micro-ops ,也就是微型操作的意思。它以很高的速度将 ops 提供给处理器核心。Intel NetBurst微型架构使用执行跟踪缓存,将解码器从执行循环中分离出来。这个跟踪缓存以很高的带宽将uops 提供给核心,从本质上适于充分利用软件中的指令级并行机制。Intel并没有公布一级追踪缓存的实际容量 ,只知道一级追踪缓存能储存12000 条微指令( micro-ops ) 。所以,我们不能简单地用微指令的数目来比较指令缓存的大小。实际上,单核心的 NetBurst 架构 CPU使用 8K ops 的缓存已经基本上够用了, 多出的 4k ops 可以大大提高缓存命中率。 而如果要使用超线程技术的话,12K Ops就会有些不够用, 这就是为什么有时候Intel处理器在使用超线程技术时会导致性能下降的重要原因。例如 Northwood 核心的一级缓存为 8KB+12K Ops,就表示其一级数据缓存为8KB ,一级追踪缓存为12K Ops;而 Prescott核心的一级缓存为16KB+12K Ops ,就表示其一级数据缓存为16KB ,一级追踪缓存为12K Ops 。在这里12K Ops 绝对不等于 12KB ,单位都不同,一个是 Ops,一个是 Byte(字节) ,而且名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 8 页 - - - - - - - - - 二者的运行机制完全不同。 所以那些把 Intel的 CPU 一级缓存简单相加,例如把 Northwood 核心说成是 20KB一级缓存, 把 Prescott核心说成是28KB一级缓存,并且据此认为Intel处理器的一级缓存容量远远低于AMD 处理器 128KB的一级缓存容量的看法是完全错误的,二者不具有可比性。在架构有一定区别的CPU对比中 ,很多缓存已经难以找到对应的东西 , 即使类似名称的缓存在设计思路和功能定义上也有区别了,此时不能用简单的算术加法来进行对比;而在架构极为近似的CPU 对比中,分别对比各种功能缓存大小才有一定的意义。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 8 页 - - - - - - - - -