缓存又叫高速缓冲存储器,其作用在于缓解主存速度慢、跟不上CPU读写速度要求的矛盾。
       缓存的实现原理,是把CPU最近最可能用到的少量信息(数据或指令)从主存复制到CACHE中,当CPU下次再用这些信息时,它就不必访问慢速的主存,而直接从快速的CACHE中得到,从而提高了得到这些信息的速度,使CPU有更高的运行效率。
       缓存的工作原理:是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。

缓存的大小:一般说来,更大一点的cache容量,对提高命中率是有好处的,由于cache是用价格很高的静态存储器SRAM器件实现的,而cache容量达到一定大小后,再增加其容量,对命中率的提高并不明显,从合理的性能/价格比考虑,cache的容量设置应在一个合理的容量范围之内。

缓存要分一级二级 三级,是为了建立一个层次存储结构,以达到最高性价比。而且多级组织还可以提高cache的命中率,提高执行效能。

一般来说,一级缓存可以分为一级数据缓存(Data Cache,D-Cache)和一级指令缓存(InstructionCache,I-Cache)。二者分别用来存放数据以及对执行这些数据的指令进行即时解码,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。
       目前大多数CPU的一级数据缓存和一级指令缓存具有相同的容量,例如AMD的Athlon。XP就具有64KB的一级数据缓存和64KB的一级指令缓存,其一级缓存就以64KB+64KB来表示,其余的CPU的一级缓存表示方法以此类推。并不是缓存越大越好,譬如AMD和INTER就有不同的理论,AMD认为一级缓存越大越好,所以一级比较大,而INTER认为过大会有更长的指令执行时间,所以一级很小,二级缓存那两个公司的理论又反过来了,AMD的小,INTER的大,一般主流的INTERCPU的2级缓存都在2M左右,我们通常用(L1,L2)来称呼。

CPU缓存(CacheMemory)是位于CPU与内存之间的临时存储器,它的容量比内存小的多,但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。
       根据数据读取顺序和与CPU结合的紧密程度,CPU缓存可以分为一级缓存,二级缓存,部分高端CPU还具有三级缓存,每一级缓存中所储存的全部数据都是下一级缓存的一部分,这三种缓存的技术难度和制造成本是相对递减的,所以其容量也是相对递增的。当CPU要读取一个数据时,首先从一级缓存中查找,如果没有找到再从二级缓存中查找,如果还是没有就从三级缓存或内存中查找。
       一般来说,每级缓存的命中率大概都在80%左右,也就是说全部数据量的80%都可以在一级缓存中找到,只剩下20%的总数据量才需要从二级缓存、三级缓存或内存中读取,由此可见一级缓存是整个CPU缓存架构中最为重要的部分。

目前缓存基本上都是采用SRAM存储器,SRAM是英文StaticRAM的缩写,它是一种具有静志存取功能的存储器,不需要刷新电路即能保存它内部存储的数据。不像DRAM内存那样需要刷新电路,每隔一段时间,固定要对DRAM刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积,这也是目前不能将缓存容量做得太大的重要原因。
       它的特点归纳如下:优点是节能、速度快、不必配合内存刷新电路、可提高整体的工作效率,缺点是集成度低、相同的容量体积较大、而且价格较高,只能少量用于关键性系统以提高效率。

CPU中的一级缓存,二级缓存,三级缓存相关推荐

  1. 我的架构梦:(二)MyBatis的一级、二级、分布式缓存的应用以及源码分析

    mybatis的一级.二级.分布式缓存的应用以及源码分析 一.mybatis缓存 二.一级缓存 三.一级缓存源码分析 四.二级缓存 五.二级缓存整合redis 六.二级缓存整合redis源码分析 一. ...

  2. dropdownlist三级联动怎么实现_简单三步,轻松搞定一级、二级、三级下拉菜单

    工作中,为了录入数据方便,数据规范,我们经常采用下拉菜单来制作规范模板,今天,技巧君和大家分享一下一级.二级和三级联动下拉菜单制作方法,文末有示例文件下载方法哦! 下拉菜单示例 一级下拉菜单 一级下拉 ...

  3. 网络安全NISP证书一级、二级、三级介绍

    ​介绍 国家信息安全水平测试(NISP)是中国信息安全测评中心测试.颁证,国家实行网络空间安全人才培养基地经营管理,并授权网安世纪科技有限公司为NISP资格证书管理处. NISP验证分成一级.二级.三 ...

  4. 承装承修承试电力资质一级、二级、三级、四级、五级怎么办理?

    许可证分为承装.承修.承试三个类别. 取得承装类许可证的,可以从事电力设施的安装活动,取得承修类许可证的,可以从事电力设施的维修活动,取得承试类许可证的,可以从事电力设施的试验活动 . 承装类承装(修 ...

  5. 【mybatis】Mybatis中的一级、二级缓存

    [mybatis]简介 [mybatis]mybatis & mybatis-plus & hibernate的区别 [mybatis]核心成员分析 [mybatis]Mybatis的 ...

  6. Spring中Bean的生命周期以及三级缓存介绍

    Bean的生命周期以及三级缓存介绍 简述 测试代码编写 创建IOC容器(Bean创建) 1.refresh()方法 2.finishBeanFactoryInitialization(beanFact ...

  7. 什么是Spring三级缓存 对象在三级缓存中的创建流程 【三级缓存 循环依赖】

    一.什么是Spring三级缓存 第一级缓存:也叫单例池,存放已经经历了完整生命周期的Bean对象. 第二级缓存:存放早期暴露出来的Bean对象,实例化以后,就把对象放到这个Map中.(Bean可能只经 ...

  8. 分销系统开发|一级分销二级分销三级分销区别解析

    分销系统开发|分销系统模式由于能够在低成本的情况下让团队快速裂变,以及迅速提升产品销量等特点,成为了许多商家都在运用的商业销售方式.今天就在这里具体说一下,分销模式中的一级分销.二级分销和三级分销都有 ...

  9. 计算机会计二级科目,(完整版)会计科目一览表(一级科目二级科目三级科目)..pdf...

    会计科目一览表 会计科目一览表 序号 序号 编号 科 目 编号 科 目 一级科目 二级科 目 三级科目 一级科目 二级科 目 三级科目 一.资产类 一.资产类 现金 1 现金 1 1001 1001 ...

最新文章

  1. 分布式缓存系统Memcached简介与实践(.NET memcached client library)
  2. local_listener 与 remote_listener 参数说明
  3. Button控件的基本使用(初识封装、减少代码冗余性、代码优化)
  4. APIO/CTSC2017游记
  5. 嵌入式操作系统内核原理和开发(地址空间)
  6. [渝粤教育] 西南科技大学 电气CAD 在线考试复习资料
  7. 如何看数据库是否处在force_logging模式下
  8. java语言标识符的声明规范
  9. 新中大连接服务器文件,新中大服务器数据库未能连接
  10. 2022网易校招易计划在线课程
  11. 用数据全方位解读《欢乐颂2》
  12. Java类和对象之对象引用之模拟手机功能
  13. linux云服务器,内存占用率很高解决方法
  14. 机器学习从入门到创业手记-1.2 机器学习的概念
  15. FPGA开发基本流程
  16. 【CSAPP】计算机系统知识点(新国立NUS课程,中文版)
  17. vue项目如何放到服务器上,怎么把vue项目放在node服务器上?
  18. SqlServer 获取当年时间的时间戳
  19. 魔兽世界8.0哪个服务器稳定,魔兽世界8.0国服开服了!为了不落后!这九件事急需了解掌握...
  20. WebRTC技术实现视频及语音聊天

热门文章

  1. mysql8.0之后的随机密码_MySQL 8.0系列——生成随机密码
  2. 云服务器为什么要设置防火墙?怎么设置防火墙?
  3. plex媒体播放器:Plex Media Player for Mac
  4. 【C语言】高级宏定义
  5. java-net-php-python-jspm失踪儿童登记系统计算机毕业设计程序
  6. python图像文字识别(附灰度化二值化和压缩图片)
  7. BlackBerry 10使用Google TTS做中文文本朗读,开发语言C++ Qt Cascade
  8. 如何利用HOSTS文件打造迷你防火墙
  9. 微信小程序全局组件注册使用
  10. 如何实现Jenkins 编译结果通知到QQ好友及QQ群组很遗憾 2019年1月1日腾讯停止了webqq机器人的服务支持...