资讯
HOME
资讯
正文内容
nand+cache+read Cache 和 Buffer 都是缓存,主要区别是什么?
发布时间 : 2024-10-06
作者 : 小编
访问数量 : 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的功能在写入场合可以融合使用,所以两者可以被混淆,写入缓冲跟写入缓存往往会同时担当规整化写入尺寸以及减少写入次数的功能,所以两者有时会被混淆,但这只是个名称问题,没有原则性关系。

相关问答

ROM是什么意思?

只读内存(Read-OnlyMemory,ROM)是一种半导体内存,其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的电子或电脑系统中,资料并且不...

DRAM存储器的中文含义是什么,存储器又分为哪几种?

ROM指的是只读存储器(ReadOnlyMemory),只能读不能写,一般是通过半导体开关实现。ROM阵列有一组地址线配上一组位线,地址线和位线间可以通过晶体管短路或...

电脑中的RAM和ROM各指的是什么 - 馨馨后花园 的回答 - 懂得

RAM指的是内存RAM:随机存取存储器,又称作“随机存储器”,是与CPU直接交换数据的内部存储器,也叫主存(内存)。它可以随时读写,而且速度很快,通常作...

电脑显示内存不能为 read 然后资源管理器关闭 随后蓝屏?-ZOL问答

回复longlx8176你要看看是什么蓝屏代码,有些蓝屏代码确实是内存问题,但多数都不是。最直观是用GHOST备份这个系统以后用其他系统盘重装,如果情况依旧估计真...

【latest与uptodate区别】作业帮

[回答]uptodateadj.最新的现代的;最新的用作形容词(adj.)Allourinformationisuptodateonthecomputer.我们计算机上的信息都是最新...

内存单元存储类型?

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

RAM(随机存储器),ROM(只读存储器),内存还有硬盘到底有什么不...

选择A.RAM(randomaccessmemory随机存储器,关机后存储数据丢失)这是基础,最好了解英文就容易多了。ROM(Read-OnlyMemory,只读存储器)一般信息已经固化到...

内存中的ROM与RAM分别是指什么?

ROM只读存储器Read-OnlyMemory例如cdromdvdrom是被写死的只能读无法修改删除写入还有路由器等的rom其实就是把固件系统写入到指定的一个rom芯片中属...

rom里存放文件吗?

ROM(ReadOnlyMemory)的全名为唯读记忆体,它相当于PC机上的硬盘,用来存储和保存数据。ROM数据不能随意更新,但是在任何时候都可以读取。即使是断电,ROM也...

rom缓存升级什么意思?

rom缓存升级说简单一点刷ROM,就是刷操作系统。因为手机的操作系统一般都是写在ROM(readonlymemery)里面,从字面上来看,这个储存区域是只能读出不能写入的...

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

QQ

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

热线

188-0000-0000
专属服务热线

微信

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