当前位置: 代码网 > 科技>电脑产品>硬盘 > 价差20%! 有缓存与无缓存SSD有啥区别? 固态硬盘选购技巧

价差20%! 有缓存与无缓存SSD有啥区别? 固态硬盘选购技巧

2024年07月26日 硬盘 我要评论
价差20%! 有缓存与无缓存SSD有啥区别? 固态硬盘选购技巧

二、dram缓存的作用是什么?

上一节只是简要介绍了ssd的有缓/无缓方案,下面我们就从技术的角度分析,来看看dram缓存的作用到底是什么。

该部分内容有点枯燥,看不进去的朋友可以直接跳转至结尾看选购总结哈。

1.dram缓存可以存储ftl闪存映射表

闪存颗粒的物理特性决定了它不能覆盖写入,一般来说,其擦除以block(块)为单位,而写入以page(页)为单位。

page中含有非常多的存储单元,是闪存颗粒写入数据的最小单位:

同时block是page的上级单位,一个block中有很多个page:

一般来讲,足量的消费级有缓ssd中,dram缓存的主要作用是存储ftl闪存映射表,其与闪存颗粒的容量比例为1:1000,ftl映射表在ssd中就像一本书的目录一样,储存着数据从逻辑地址到物理地址的映射关系。

当主机发来读命令时,ssd能根据需要读取的逻辑数据块查找ftl映射表,获取这些逻辑数据在闪存空间所在的位置,后端便能从闪存上把对应数据读到ssd内部缓存空间,然后前端负责把这些数据返回给主机。

由于dram缓存的读写性能和低延迟表现要远远优于闪存颗粒,所以有缓ssd会充分利用这个特性,在ssd通电时将保存在ssd预留空间中的ftl映射表写入dram颗粒中。

咱们想要读写闪存颗粒中的数据时,可以通过dram缓存中保存的ftl快速找到相应位置,从而提高一块固态硬盘的随机读写速度、降低查找数据保存位置时的延迟。清注意,这个机制对于随机读写的加成较大,对顺序读写的性能影响很小很小。

2.dram缓存还可以在脏盘状态下提高读写性能

在使用闪存颗粒作为存储介质的ssd中,如果我们要对一个已有数据的page进行写入,那么必须先要把这个page所在的block中的数据读出,暂时保存到一个空白的block中,待第一个block清空后再把所有数据写进去。

从示意图可以看出来,在我们眼里一个简单的对ssd的写入数据操作,一旦遇到脏盘情况下,就会分解成先读再擦后写(read-erase-write)三个步骤,并在过程中会造成写入放大问题。

显而易见的,这会增加闪存颗粒的写入量,消耗写入寿命,同时在写入过程中还会提高写入延迟、影响写入速度。

如果在这个写入过程中,ssd上还有我们在操作系统中已经删除、但是只做了标记但未实际进行擦除的数据的话,还需要经过一个更加复杂的垃圾回收+擦写操作,进一步影响ssd的写入量和性能。

以下图为例,在block x和block y上有很多垃圾数据,其中block x上的a、b、c为有效数据,block y上的d、e、f、g为有效数据。垃圾回收就是把一个或者几个block上的有效数据搬出来集中写到某个空闲block上(比如blockz)。当这些block上的有效数据都搬走后,ftl便能擦除这些block,然后又能把这些block拿出来供ssd写入新的数据了。

而有缓ssd中的dram缓存由于速度、延迟等方面的性能明显要好于闪存颗粒,所以在向一个block写入数据的过程中,如果block中的page中已有数据,那么可以使用dram作为中转站,先将page中的数据转移到dram中,然后将block整个擦成空白块后填入需要写入的新数据,最后将dram中转站里保存的原page数据挪到其他block里。

发现了吗?在这个过程中由于dram的参与,还减少了一部分对闪存颗粒的写入量,同时还加快了整个r-e-w的过程,减少了写入延迟。

接下来让我们把问题进一步复杂化,当slc cache容量耗尽时,有一个需要将原本slc cache空间内的数据重写回tlc模式的过程,我们称之为slc cache释放,在这其中要面临大量擦写操作。而在固件的加持下,部分ssd的dram缓存也能在这个过程中起到缓解写入放大的作用。

这也即是说,独立dram缓存在ssd中其实起着万金油的作用,这也是各大存储厂商的消费级旗舰ssd以及更加昂贵的企业级ssd一般都会采用有缓方案的原因。

三、有缓ssd、无缓ssd,用起来有啥区别?

现在技术原理我们已经了解了,那么有缓ssd和无缓ssd在我们实际使用过程中,到底有啥不一样的体验呢?

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com