0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SSD中有个重要参数,就是写放大

SSDFans 来源:未知 作者:李倩 2018-07-24 15:39 次阅读

由于GC的存在,就有一个问题,用户要写入一定的数据,SSD为了腾出空间写这些数据,需要额外的做一些数据的搬移,也就是额外的写,最后导致的后果往往就是SSD往闪存中写入的数据量比实际用户写入SSD的数据量多。因此,我们SSD中有个重要参数,就是写放大(WA, Write Amplification):

对空盘来说(未触发GC),写放大一般为1,即用户写入多少数据,SSD写入闪存也是多少数据量(这里忽略SSD内部数据的写,如映射表的写入)。在SandForce控制器出来之前,写放大最小值为1。但是由于SandForce控制器内部具有实时数据压缩模块,它能对用户写入的数据进行实时压缩,然后再把它们写入到闪存,因此WA可以做到小于1。举个例子,用户写入8KB数据,经压缩后,数据变为4KB,如果这个时候还没有垃圾回收,那么写放大就只有0.5。

一说到SandForce的主控,过去好多年了,我对她的爱还是没有减弱,女神一般的存在呀。。。

来看看GC触发后,WA是怎么算的。以前面GC为例,我们挑选每个Die上的Block 0做垃圾回收:

一共36个方块,其中有12个有效数据块,我们做完垃圾回收后,需把这12个有效数据块写回:

后面还可以写入24个方块的用户数据。因此,为了写这24个方块的用户数据,SSD实际写了12个方块的原有效数据,再加上该24个方块的用户数据,总共写入36个方块数据,按照写放大定义:WA= 36/24 = 1.5 。

写放大越大,意味着额外写入闪存的数据越多,一方面磨损闪存,减少SSD寿命,另一方面,写入这些额外数据时会占用底层闪存带宽,影响SSD性能。因此,SSD设计的一个目标不是没有蛀牙,而是让WA尽量小。减小写放大,可以使用前面提到的压缩办法(主控决定),顺序写也可以减小写放大(垃圾集中,但顺序写可遇不可求,取决于用户workload),还有就是增大OP (这个可控)。

增大OP怎么就能减小写放大? 先定义OP比例=(闪存空间-用户空间)/用户空间。

还是以前面SSD空间为例,SSD容量是180个小方块,当OP是36个小方块时,整个SSD闪存空间为216个小方块,OP比例是36/180= 20%。那么180个小方块的用户数据平均分摊到216个小方块时,每个小方块的平均有效数据为180/216 = 0.83,一个闪存块上的有效数据为0.83*9 = 7.5,也就是一个闪存块上面平均有7.5个小绿块和1.5个小红块。为了写1.5个用户数据方块,需要写9个方块的数据(原有7.5个有效数据,加1.5个用户数据),写放大是9/1.5 = 6。

如果整个SSD闪存空间不变,还是216个小方块,调整OP比例至72个小方块 (牺牲用户空间,OP比例50%),因此,SSD容量就变成144个小方块。144个小方块的用户数据平均分摊到216个小方块时,每个小方块的平均有效数据为144/216 = 0.67,一个闪存块上的有效数据为0.67*9 = 6,也就是一个闪存块上面平均有6个小绿块和3个小红块。为了写3个用户数据方块,需要写9个方块的数据(原有6个有效数据,加3个用户数据),写放大是9/3 = 3。

从中看出,OP越大,写放大越小。很好理解,OP越大,每个闪存块有效数据越少,垃圾越多,因此需要重写更少的数据,因此写放大越小。同时,由于GC需要重写的数据越少,SSD满盘写性能也越好。

当然,上面说的都是最坏情况(垃圾数据平均分摊到每个闪存块上)。现实是,垃圾数据更多时候并不是平均分配到每个闪存块上去,有些块上的垃圾多,有些块上的垃圾少,实际GC挑选闪存块,是挑垃圾多的,因此,实际写放大是小于前面的计算值的。

OP大小和写放大以及SSD耐写度的关系见图:

图1-1 OP大小对写放大和耐写度的影响

总结一下:

WA越小越好,因为越小意味着对闪存损耗越小,可以给闪存延年益寿,从而支持更多的用户数据写入量;OP越大越好,OP越大,意味着写放大越小,意味着SSD写性能越好。

影响写放大的因素主要有:

OP: 我们已经看到,OP越大,WA越小;

用户写入的数据Pattern:如前面看到的,如果用户都是顺序写入,GC做的量就少(极好情况下是整个闪存块都是无效数据,只需擦除无需数据搬移),写放大小;

GC策略:在挑选源闪存块的时候,如果不是挑选有效数据最少(垃圾数据越多)的块作为源闪存块,就会增加写放大;另外,控制后台GC产生空闲闪存块的数量,也能减小写放大;

磨损平衡:为平衡每个闪存块的擦除次数,需要数据的搬移;

Read disturb和Data Retention handling:数据搬移增加写放大;

主控:带压缩和不带压缩的控制器肯定会影响写放大;

Trim:有没有Trim,对写放大影响很大,后面Trim章节会介绍。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 闪存
    +关注

    关注

    16

    文章

    1772

    浏览量

    114780
  • 数据
    +关注

    关注

    8

    文章

    6842

    浏览量

    88758
  • SSD
    SSD
    +关注

    关注

    20

    文章

    2847

    浏览量

    117151

原文标题:SSD写放大

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    LED芯片的14重要参数

    本文通过介绍LED芯片的14重要参数,来帮助大家具体了解LED芯片。
    发表于 02-22 09:59 9830次阅读

    SSD是什么意思,什么是SSD

    、SONY等一大批国外实力厂家的不断开发研究,SSD市场已经全面开花了。不过不要担心,中国第一款SSD已经由深圳亿正存储科技公司于2007年1月1日宣布研发完成,并可以大批量进行生产,而且读与速度均大于
    发表于 03-25 16:20

    SSD1289寄存器函数

    ;}这是一例程的关于SSD1289寄存器的一函数,有两点不明白:1、这个 (u32)0x6c000000中的0x6c000000代表什么,为什么有这个数字,难道涉及
    发表于 03-21 21:12

    功放的种类和几个重要参数

    领域中会得到更加广泛的应用。功放的几个重要参数1、输入灵敏度,是指功放所需较小输入信号电平,它是要求将音源信号放大到足够推动后级功放所需要的必要条件。2、谐波失真度,这是功放一项极重要
    发表于 05-28 03:46

    ADC噪声系数参数在数据转换器中有哪些应用?

    噪声系数(NF)是RF系统设计师常用的一参数,它用于表征RF放大器、混频器等器件的噪声,并且被广泛用作无线电接收机设计的一工具。 那么你们知道ADC噪声系数
    发表于 07-30 07:44

    求大神解释下在ssd1306 oled中怎么数据啊,看了一天的数据手册也只会写命令不会写数据啊

    还有ssd1306不像lcd1602中有rom,字库这些东西吗,那个怎么数据到gddram啊,我都快疯了;都怀疑自己是不是傻子了,使用51驱动的{:4_108:}
    发表于 08-01 22:02

    SSD1306芯片介绍

    一、基础认识及引脚介绍屏幕参数:尺寸:0.96英寸分辨率:128*64驱动芯片:SSD1306驱动接口协议:SPI引脚说明:二、SSD1306芯片介绍SSD1306是一款带控制器的用于
    发表于 01-25 06:24

    如何在射频设计中有效地使用S参数

    如何在射频设计中有效地使用S参数 S参数测量是
    发表于 07-23 11:36 2648次阅读

    怎么使用SSD才能避免越越慢?

    江湖传言:SSD越慢。没错,其实这是有科学依据的:可用闪存空间富裕时,SSD是无需做GC的,因为总有空闲的空间可写。SSD使用早期,由于没有触发GC,无需额外的读写,所以速度很快。
    的头像 发表于 06-02 10:58 5265次阅读
    怎么使用<b class='flag-5'>SSD</b>才能避免越<b class='flag-5'>写</b>越慢?

    为什么程序员都博客

    几乎每一程序员都听说过博客有很多好处,但真的动手去的却很少。其中有重要的原因
    的头像 发表于 12-25 09:26 1631次阅读

    读、、擦除是SSD对NAND的三大基本操作

    通过一系列的介绍和实验验证,我们看到了TRIM的价值和实现原理。在TRIM的帮助下,NVMe SSD的GC等操作效率更高,进而达到降低放大,提高产品性能和寿命的效果。
    的头像 发表于 04-28 11:39 1w次阅读

    SSD性能同样重要参数有哪些

    之对应的当然就是随机(Random,简写为Ran)读写了,用了一段时间的SSD,大部分数据都零散地存在各个地方,这时体现出的速度就是随机读写了,它当然比顺序读写差一些。
    的头像 发表于 08-27 16:09 2055次阅读
    对<b class='flag-5'>SSD</b>性能同样<b class='flag-5'>重要</b>的<b class='flag-5'>参数</b>有哪些

    如何衡量SSD的寿命水平?关于SSD的可用年数

    随着SSD闪存才MLC转向TLC、QLC,不仅写入性能越来越低,寿命、可靠性也愈发引人关注,总有网友担心SSD会被死,所以写入寿命很重要。 如何衡量
    的头像 发表于 11-27 15:18 2570次阅读

    如何衡量SSD的寿命水平?SSD硬盘多久才能写死?

    随着SSD闪存才MLC转向TLC、QLC,不仅写入性能越来越低,寿命、可靠性也愈发引人关注,总有网友担心SSD会被死,所以写入寿命很重要。 如何衡量
    的头像 发表于 11-27 15:54 6278次阅读

    如何简单的装饰器

    今天介绍的是一已经存在十三年,但是依旧不红的库 decorator,好像很少有人知道他的存在一样。 这个库可以帮你做什么呢 ? 其实很简单,就是可以帮你更方便地python装饰器代码,更
    的头像 发表于 11-01 09:54 464次阅读
    如何<b class='flag-5'>写</b>一<b class='flag-5'>个</b>简单的装饰器