`
yijingyong
  • 浏览: 155249 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

什么是缓存(cache)

阅读更多
操作系统的任务主要是合理地调配系统的各种资源,为各种程序的运行提供环境,它可以看作是硬件和应用软件之间的一个媒介。其中对内存的管理是系统的最主要的职责,怎么样使有限的内存用在刀刃上,怎么要保证系统本身所需的内存(以防止死机,在win2000和winxp里这一点已经做的非常好了
缓存是CPU的一部分,它存在于CPU中
CPU存取数据的速度非常的快,一秒钟能够存取、处理十亿条指令和数据(术语:CPU主频1G),而内存就慢很多,快的内存能够达到几十兆就不错了,可见两者的速度差异是多么的大
缓存是为了解决CPU速度和内存速度的速度差异问题
内存中被CPU访问最频繁的数据和指令被复制入CPU中的缓存,这样CPU就可以不经常到象“蜗牛”一样慢的内存中去取数据了,CPU只要到缓存中去取就行了,而缓存的速度要比内存快很多
一 什么是缓存区容量?
在combo中缓存区容量指的是什么?是不是数字越大,价格便越高,并且性能越高,刻坏的几率越小
这里要特别指出的是:
1.因为缓存只是内存中少部分数据的复制品,所以CPU到缓存中寻找数据时,也会出现找不到的情况(因为这些数据没有从内存复制到缓存中去),这时CPU还是会到内存中去找数据,这样系统的速度就慢下来了,不过CPU会把这些数据复制到缓存中去,以便下一次不要再到内存中去取。
2.因为随着时间的变化,被访问得最频繁的数据不是一成不变的,也就是说,刚才还不
频繁的数据,此时已经需要被频繁的访问,刚才还是最频繁的数据,现在又不频繁了,
所以说缓存中的数据要经常按照一定的算法来更换,这样才能保证缓存中的数据是被访
问最频繁的
3.关于一级缓存和二级缓存
为了分清这两个概念,我们先了解一下RAM
ram和ROM相对的,RAM是掉电以后,其中才信息就消失那一种,ROM在掉电以后信息也不会消失那一种
RAM又分两种,
一种是静态RAM,SRAM;一种是动态RAM,DRAM。前者的存储速度要比后者快得多,我们 现在使用的内存一般都是动态RAM。
有的菜鸟就说了,为了增加系统的速度,把缓存扩大不就行了吗,扩大的越大,缓存的
数据越多,系统不就越快了吗
缓存通常都是静态RAM,速度是非常的快,
但是静态RAM集成度低(存储相同的数据,静态RAM的体积是动态RAM的6倍),
价格高(同容量的静态RAM是动态RAM的四倍),
由此可见,扩大静态RAM作为缓存是一个非常愚蠢的行为,
但是为了提高系统的性能和速度,我们必须要扩大缓存,
这样就有了一个折中的方法,不扩大原来的静态RAM缓存,而是增加一些高速动态RAM做 为缓存,
这些高速动态RAM速度要比常规动态RAM快,但比原来的静态RAM缓存慢,
我们把原来的静态ram缓存叫一级缓存,而把后来增加的动态RAM叫二级缓存。
一级缓存和二级缓存中的内容都是内存中访问频率高的数据的复制品(映射),它们的
存在都是为了减少高速CPU对慢速内存的访问。
通常CPU找数据或指令的顺序是:先到一级缓存中找,找不到再到二级缓存中找,如果还找不到就只有到内存中找了
2.赛扬处理器与奔腾处理器的区别再哪里?
赛扬处理器与奔腾处理器在运算内核上完全相同,不同的地方是二级缓存的大小不同。现有的台式机处理器P4的二级缓存大小是512KB,而P4赛扬的二级缓存大小是128KB。在笔记本上用的奔腾-M处理器的二级缓存大小是1MB,新出的赛扬M处理器的二级缓存大小是512KB,跟P4的一样。奔腾-M和赛扬M处理器除了二级缓存大小不同外,其余地方一样。
什么是二级缓存?
它是干什么用的? 二级缓存又叫L2 CACHE,它是处理器内部的一些缓冲存储器,其作用跟内存一样。它是怎么出现的呢? 要上溯到上个世纪80年代,由于处理器的运行速度越来越快,慢慢地,处理器需要从内存中读取数据的速度需求就越来越高了。然而内存的速度提升速度却很缓慢,而能高速读写数据的内存价格又非常高昂,不能大量采用。从性能价格比的角度出发,英特尔等处理器设计生产公司想到一个办法,就是用少量的高速内存和大量的低速内存结合使用,共同为处理器提供数据。这样就兼顾了性能和使用成本的最优。而那些高速的内存因为是处于CPU和内存之间的位置,又是临时存放数据的地方,所以就叫做缓冲存储器了,简称“缓存”。它的作用就像仓库中临时堆放货物的地方一样,货物从运输车辆上放下时临时堆放在缓存区中,然后再搬到内部存储区中长时间存放。货物在这段区域中存放的时间很短,就是一个临时货场。最初缓存只有一级,后来处理器速度又提升了,一级缓存不够用了,于是就添加了二级缓存。二级缓存是比一级缓存速度更慢,容量更大的内存,主要就是做一级缓存和内存之间数据临时交换的地方用。现在,为了适应速度更快的处理器P4EE,已经出现了三级缓存了,它的容量更大,速度相对二级缓存也要慢一些,但是比内存可快多了。 缓存的出现使得CPU处理器的运行效率得到了大幅度的提升,这个区域中存放的都是CPU频繁要使用的数据,所以缓存越大处理器效率就越高,同时由于缓存的物理结构比内存复杂很多,所以其成本也很高。
什么叫虚拟内存,它与缓存有什么异同呢 虚拟内存是WINDOWS操作系统用来管理内存的一种方法
虚拟内存说穿了就是把内存中的信息分出去一部分存在硬盘上
这样从表面上看就扩大了内存容量(难怪内存中存了这么多东西,原来有一部分被转到了硬盘上)
我们知道内存中存有很多数据和指令,但是这些数据和指令被访问的频率是不同的,有些要被经常访问,有些却被CPU冷落WINDOWS 是个落井下石的坏东西,它大声的说:既然你们被CPU冷落了,干脆把你们打入冷宫吧。于是这些被访问频率低或者不被访问的数据从内存中被赶到了硬盘上。但WINDOWS并非铁石心肠,它还说:如果CPU需要访问你们时,我就把你们送入内存,如果你们更加热门的时候,就可能被CPU带入缓存,如果你们被重新冷落时,我就会无情的把你们再打入冷宫。
而那个冷宫就是硬盘上的虚拟内存。如果你刚才还不知道什么是虚拟内存是什么东西时,那么现在呢?
我还看到有些网友问:虚拟内存和缓存有什么区别呢
它们的原理都是局部时间内被访问的内存地址具有局部性。
现在我们来看看它们的区别。
1.缓存是一种硬件,是CPU的一部分;而虚拟内存并不是一种硬件,而是存在于硬盘上的一个文件,是根据WINDOWS的要求生成的(二者中的信息都是随时变化的)
2.缓存的目的是加快系统的速度,而虚拟内存技术是为了使更多的程序能够在有限的内存中运行。本文出自 51CTO.COM技术博客
分享到:
评论

相关推荐

    简单缓存Cache介绍

    简单缓存Cache介绍 asp.net 缓存 cache

    设置页面缓存Cache

    设置页面缓存Cache

    java 缓存 cache lru 实例

    java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例 java 缓存 cache lru 实例

    高速缓存(Cache)的Verilog代码

    该工程包含数据缓存D_Cache和指令缓存I_Cache的Verilog代码和仿真文件,Cache的详细技术参数包含在.v文件的注释中。 直接相连16KB D_Cache Cache写策略: 写回法+写分配 (二路)组相连16KB I_Cache Cache替换策略: ...

    Django缓存Cache使用详解

    什么是缓存Cache 缓存是一类可以更快的读取数据的介质统称,也指其它可以加快数据读取的存储方式。一般用来存储临时数据,常用介质的是读取速度很快的内存。一般来说从数据库多次把所需要的数据提取出来,要比从内存...

    Cache(数据缓存)

    Cache(数据缓存)PPT,对cache有一个详细地说明,希望大家喜欢.

    hcache缓存cache查看工具

    #直接下载hcache文件到linux,并使用该文件即可 ...#ps: 一般进程缓存的文件并不会太大, 最大的可能性是读写了大文件导致文件被缓存,建议检查下是否存在无用的超大日志,查找大于1G的文件 find / -type f

    ARM高速缓存(Cache)Verilog代码 包含ISE工程

    该工程包含数据缓存D_Cache和指令缓存I_Cache的Verilog代码和仿真文件,附带可运行的ISE工程文件,Cache的详细技术参数包含在.v文件的注释中。 直接相连16KB D_Cache Cache写策略: 写回法+写分配 (二路)组相连16KB ...

    Java 中常用缓存Cache机制的实现

    Java 中常用缓存Cache机制的实现

    springboot 使用spring cache缓存 和 使用fastjson配置redis系列化

    springboot 使用spring cache缓存 和 使用fastjson配置redis系列化,springboot 使用spring cache缓存 和 使用fastjson配置redis系列化,springboot 使用spring cache缓存 和 使用fastjson配置redis系列化,springboot ...

    php数据缓存cache类

    如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好php 数据cache(缓存)是十分必要的。 对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于加载了...

    一个简单至极的php缓存类

    个简单至极的PHP缓存类代码,缓存的应用对于php...默认情况下,缓存时间是 3600 秒,缓存目录是 cache/ 3、读取缓存 $value = $cache->get('data_key'); 4、写入缓存 $value = $cache->put('data_key', 'data_value');

    基于Retrofit2okhttp3的数据缓存cache技术修改了缓存时间能够设置缓存时间了.rar

    基于Retrofit2okhttp3的数据缓存cache技术修改了缓存时间能够设置缓存时间了.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

    php数据缓存cache类.zip

    如果访问量大的话会给数据库造成很大的负担,所以对于变化不经常的内容要做好php 数据cache(缓存)是十分必要的。 对于一般的变量,把该变量变成php语言的格式,写到文件中,用时只要include这个文件就相当于...

    spring-cache(通过key值更新缓存)

    通过spring-cache对方法进行缓存,同时验证如何通过key更新指定的缓存!

    缓存 cache

    opengl(3) opengl太阳系(3) midi(2) opengl动画(2) java浏览器(1) 魔方(1) 路灯(1) java笑脸(1) java(1) ...cache(1) opengl台灯(1) opengl拼图(1) java电话(1) opengl闹钟(1) opengl喷

    cache2k, 轻量级,高性能的Java缓存.zip

    cache2k, 轻量级,高性能的Java缓存 cache2k缓存cache2k是内存高性能的Java缓存库。 Cache,String> cache = new Cache2kBuilder, String>

    ASP.net读Cache缓存简单例子

    ASP.net,Cache缓存,ASP.net读Cache

    .NET缓存 CaChe

    .NET缓存 CaChe缓存 将用户的基本信息缓存到此当中 减少与数据库频繁交互

    springboot 使用spring cache缓存 和 缓存数据落地到redis

    本文是springboot 使用spring cache缓存 和 缓存数据落地到redis的研究笔记,为方便下载查看,特意分享了springboot 使用spring cache缓存 和 缓存数据落地到redis.pdf的文件。希望搭建对springboot 使用spring ...

Global site tag (gtag.js) - Google Analytics