行情
HOME
行情
正文内容
nand cache read Cache 和 Buffer 都是缓存,主要区别是什么?
发布时间 : 2025-04-19
作者 : 小编
访问数量 : 23
扫码分享至微信

Cache 和 Buffer 都是缓存,主要区别是什么?

#秋日生活打卡季#

比如说出国旅游,一个箱子一个腰包,在机场,腰包里装的是机票,护照,人民币。到了酒店,出去玩,腰包里放的是地图,门票,外币。护照人民币在哪里?在酒店的保险柜里。把当前最常用的东西,放在最容易拿的地方,这就是cache。旅游回来,下了飞机坐火车,下了火车上小巴。交了钱,车却不走,司机打开门,对着外面喊,“再上两个,凑够十个就开车!”这就是buffer。

不过Buffer多用于编程方面,Cache多用于非编程方面的叫法。比如为某程序分配一段Buffer,而一般没有说为某程序分配一段Cache的,但是你可以说这个程序有Cache,或者说Cache是泛指,Buffer是特指。而对于磁盘阵列来讲,Buffer=Cache。对于网页来说,cache就是把网页缓存到本地,方便下次打开速度更快

其次,严格来讲,只有cache叫做“缓存”,而buffer应该叫“缓冲区”。

cache的作用是弥补两个设备之间的读写速度差异,基本结构是低速设备-cache-高速设备,其中高速设备主导数据交换(决定读或写什么数据)以典型的内存-cache-CPU场景为例,CPU读写速度远高于内存,就需要在二者之间加入一个cache。CPU从cache中读取(read)数据,未命中时会从内存中加载(load)数据到cache中;写入(write)也是写入cache,然后再把cache中的数据保存(save)到内存。

buffer的作用是将两个设备的读写操作解耦,基本结构是设备A-buffer-设备B,两个设备是等地位的,只是在功能上分别担任发送方和接收方以典型的计算机A-buffer-计算机B的通信场景为例,计算机A可以在任意时间将数据写入buffer,计算机B可以在任意时间从buffer读取已写入的数据,反之亦然。二者不需要考虑对方的读写状态,可以按照自己的节奏读写数据,保证自身高效运转。

以你(CPU)在图书馆读书为例,假设有个助手(OS)在帮你取书、还书。Cache,缓存:这几本书我马上就要读,所以给我放到桌子上。桌子=Cache,以提高效率为目的,桌子上的书随看随拿,不用等着助手去书架上拿,效率当然高。Buffer,缓冲:这本书我读好了,要放回到书架上,但如果每次读好一本书就要站起来走到书架那边去太麻烦了,所以我先把书放到手推车上,等攒满一堆书之后助手再一次性还回到书架上。从书架上拿过来的书同理,先放手推车上,攒上几本后再上桌、或是直接开始看。手推车=Buffer,用于I/O(从书架取书、把书换到书架上)的缓冲。

cache 解决时间问题 —— 不够快,用空间换时间。

buffer 解决空间问题 —— 不够大,用时间换空间。

Cache 和 Buffer 都是缓存,主要区别是什么?

提到这个问题,可能意味着题主意识到了两者的相关性。的确,他们确实有那么一些联系。

首先cache是缓存,buffer是缓冲,虽然翻译有那么一个字的不同,但这不是重点。

个人认为他们最直观的区别在于cache是随机访问,buffer往往是顺序访问。虽然这样说并没有直击本质,不过我们可以待分析完毕之后再来讨论真正的本质。

为了说明这个问题,让我将他们分开来说:read cache(读缓存),read buffer(读缓冲),write cache(写缓存),write buffer(写缓冲)。

无论缓存还是缓冲,其实本质上解决的都是读写速度不匹配的问题,从这个角度,他们非常相似。

首先讨论读缓存跟读缓冲。

读缓存跟读缓冲的最大区别在于,读缓存的目标数据是始终有效的,如果不从缓存中读取,也可以直接读取实际数据,只不过实际数据读取会慢一些,当这个数据在缓存中,读取速度将会变快。

当一个缓存中的数据被多次读取,实际上就减少了该数据从慢速设备中读取的量,这就存在某种算法去选择「什么数据需要保存在cache中」,因为尽可能多的让cache命中能提高性能。

先进入cache的数据不一定先被读取,甚至说进入cache的数据有可能永远不被读取就被清除了,因此read cache呈现出非常明显的随机访问特性。

而读缓冲buffer的数据则不是始终有效,而是实时生成的数据流,每当buffer满或者主动flush buffer的时候触发一次读取,对于小数据,这样可以减少读取次数,对于大数据,这可以控制单次读取的数据量。

换句话说,无论数据量大还是小,单次读取数据量都按照buffer尺寸进行归一化了。通常来说,先喂给buffer的数据一定会先被读取,所有buffer的数据几乎一定会被读取,这是很明显的顺序访问特性。

从上面的情况看到,读缓存以及读缓冲很明确的反应出了我所说的表面特性。而其本质特性在于cache的目标是减少读取总量每次cache命中都减小了读取总量。

而buffer并不能减少读取总量,只能规整化每次读取数据的尺寸大小。

要说到write cache跟write buffer?

我们先说write buffer,write buffer是read buffer的对应,对于小数据的写入,它需要填满write buffer再进行一次写入,对于大数据,大数据会被分割到buffer尺寸的大小分批写入。

因此,write buffer 的用处在于使得每次写入的数据量相对固定。如果一次写入4k对某个设备来说效率最高,那么把buffer定为4k,小数据积攒到4k写一次,大数据分割到每个碎片4k多次写入,这样就是write buffer的用处。

最后我们来说write cache。所谓write cache,就是要设法减少写入次数。也就是说,如果某些数据需要产生多次写入,那么使用cache就可以只将最终数据写入,导致最终写入数据减少。

在实际应用中,我们有时会使用到write buffer跟write cache的合体形态。buffer本身需要规整尺寸,与此同时,buffer还允许多次随机写入,使得多次写入的数据只用写入最后一次,这属于cache的特性。

BT软件使用的写缓存往往具有类似特性,因而这种形态它同时既是buffer又是cache。

正因为在写入场合buffer跟cache没有那么明显的分界,所以才会有产生buffer跟cache究竟有啥区别的疑问。

结论

在read(读取)的场合,cache通常被用于减少重复读取数据时的开销,而buffer则用于规整化每次读取数据的尺寸,在读取场合两者用途差别很大。

在write(写入)的场合,两者功能依然没变,但由于cache跟buffer的功能在写入场合可以融合使用,所以两者可以被混淆,写入缓冲跟写入缓存往往会同时担当规整化写入尺寸以及减少写入次数的功能,所以两者有时会被混淆,但这只是个名称问题,没有原则性关系。

相关问答

计算机内外存储器的不同?-ZOL问答

RAM:RandomAccessMemory,随机存储器ROM:Read-OnlyMemory,只读存储器Cache:缓存有用(0)回复展开查看全部6条讨论相关问题2019联想...

内存单元存储类型?

计算机内存就是暂时存储程序以及数据的地方,内存一般采用半导体存储单元,包括随机存储器(RAM),只读存储器(ROM),以及高速缓存(CACHE)。只读存储器(ROM)ROM表...

cpbuffer的作用是什么?

mysqlCache和Buffer区别有:1、buffer是给块设备做缓冲,只记录文件系统的metadata,而cached用来给文件做缓冲;2、buffer是用来存储目录里面有什么内容,权限...

番茄小说下载的小说在哪个文件夹肿么删除-ZOL问答

默认储存路径:内部存储/android/data/app/com.dragon.read/files/audio_cache需要注意的是,我们在番茄小说下载了小说等内容之后,文件的格式都是采用了加密...

RAM为何是计算机中访问速度最快的存储器?-ZOL问答

其实寄存器、cache、RAM、ROM都可以说是存储器。速度:寄存器>cache>RAM>ROM。至于你要问的RAM为什么快,一个原因是:它是与CPU直接交换数据的内部存储器...

番茄小说一般在本地文件哪个目录 - 业百科

番茄小说一般在本地文件哪个目录,番茄小说一般在本地文件内部存储/android/data/app/com.dragon.read/files/audio_cache。在番茄小说下载内容之后,文件是采用...

请问上位机用vb和s7-300PLC通讯怎么实现?

LC站中第四个槽安...下面以西门子PLC为例说下实现方法:一、通过STEP7软件建立一个新项目OPC,在项目中添加SIMATIC300站和一个PC站,其中PLC站中第四个槽安装...

笔记本一开机就一直鸣叫,是为什么?-ZOL问答

9短ROMBIOS校验错误10短CMOSshutdownregisterread/write错误11短Cachememory错误1长3短内存错误(内存损坏,请更换)1长8...

checkpoint和SCN有什么关系?

Checkpoint很多人都把checkpoint的概念给复杂化了,其实checkpoint这个数据库概念引入的真正意义就是用来减少在数据库恢复过程中所花的时间(instancerecover.....

...xtendedmemory13.totalmemory14.viruswarning15.CPUL1_作业帮

[回答]你很热爱电脑我决定收你为徒

 鬼鸟  关于房产税 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2025  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部