独家揭秘|小米14魔改存储芯片多出8GB空间背后的秘诀

图片

在昨天发表的文章下面,有粉丝朋友要求“评价下小米256GB多8GB的技术”。小编也是好奇,本文就让我们一起来看看这个“高科技”背后的秘密。(提前声明:本文内容仅代表个人观点,如果不当之处,小米公司不要投诉我哈,我支持雷总!)

图片

首先,让我们看看雷总在小米14发布会上对这个“小创新”的阐述:

图片

发布会内容中,提到的256GB内存,其实就是一个UFS4.0设备(基于NAND存储颗粒的移动存储产品)。这里还有一个名词“FBO焕新存储”。小编认为这个就是可以多8GB的关键。

图片

根据公开信息查到,针对UFS文件系统功能优化FBO特性是由小米与西部数据联合研发,并得到了其他厂商(比如美光、三星、海力士、铠侠等)支持,合入了UFS 4.0规范,在2022年8月正式发布在JEDEC组织。基于这一点,也得给小米点这个赞,创新不易!

图片

小米工程师向linux社区提交的UFS FBO功能优化patch记录:

图片

基于文件优化特性(FBO)是一种帮助移动设备在其使用寿命内保持性能优势的新技术,主要目的是为了解决手机的碎片化

碎片化的本质:碎片化会导致数据存储效率低下。随着时间的推移,当一个存储设备被填满并且无法再按顺序写入数据时,或者当一个数据更新过程发生时,碎片化就会产生。在更新过程中,新的NAND块被使用,而未更新的数据仍然保留在原始的NAND块中。即使数据在逻辑上是顺序更新的,它也可能不是物理NAND块中的顺序存储。当这种情况发生时,数据会分散(随机)存储在存储设备的不同位置上。这反过来会导致较慢的性能,因为设备需要从各个物理位置收集数据时进行多次读取。

小米14中的UFS 4.0,跟SSD一样,底层存储颗粒都是NAND。那你知道NAND闪存是怎么工作的吗?其实,它就是由很多个晶体管组成的。这些晶体管里面存储着电荷,代表着我们的二进制数据,要么是“0”,要么是“1”。NAND闪存原理上是一个CMOS管,有两个栅极,一个是控制栅极(Control Gate), 一个是浮栅(Floating Gate). 浮栅的作用就是存储电荷,而浮栅与沟道之间的氧化层(Oxide Layer)的好坏决定着浮栅存储电荷的可靠性,也就是NAND闪存的寿命。

图片

但是呢,这些晶体管的电荷可不是永久存在的。它们就像一群顽皮的孩子,喜欢跑来跑去。如果你经常让它们进行“擦除”和“写入”的操作(NAND闪存中,P/E Cycle,也称为擦除次数),它们就会觉得累,电荷的存储能力也会逐渐下降(浮栅与沟道之间的氧化层被磨损的越来越严重,导致浮栅中电子的控制越来越艰难)。直到有一天,它们再也不想存储电荷了,那这个时候,你的SSD的寿命也就差不多了。

图片

所以呢,SSD寿命评估的底层机理,其实就是计算NAND闪存的擦除和写入次数(P/E Cycle)。每个晶体管都有一个固定的擦除和写入次数,就像我们的腿一样,跑多了会累,会磨损。当这些晶体管达到一定的磨损程度时,它们就再也存储不了电荷了,这时候你的SSD可就要退休了哦!

目前市面上主要流通的就是4种NAND类型:SLC、MLC、TLC、QLC。随着每个寿命从高到低依次是SLC>MLC>TLC>QLC.

图片

随着单个cell含有的bit数越多,NAND的可靠性也会有所降低。同时写延迟也在不断的增加。SLC写延迟在0.5ms级别,到QLC写延迟达到10-20ms,40倍的差距。

图片

NAND存储产品的寿命,最怕垃圾数据太多,也就是碎片化严重,会导致NAND颗粒的写放大增加,降低NAND的寿命

举个例子,最坏情况下的,假如我要写入一个4KB的数据Z覆盖A,并恰好目标块没有空余的页区,需要进行GC回收。这个时候就需要把B、C、D、E、F五分数据都搬走,然后擦除整个数据块,擦除完成后再整体写入6个数据页。这个整个过程,Host虽然只写了4KB的数据,但实际过程中,由于GC的问题,NAND最终写入了24KB。那么写放大WAF=24KB/4KB=6.

图片

SSD产品中影响WAF的因素有很多,其中“OP预留空间”是跟本次雷总说的魔改8GB的空间有关。

  • SSD FTL算法的设计会影响写入放大的大小

  • Wear Leveling,WL磨损均衡:这一机制主要是通过均衡所有的闪存颗粒,从而延长整体的使用寿命,然而依旧是增加整体的写放大

  • Over-Provisioning,OP预留空间:也会影响NAND写入的比例,最终影响写放大

  • Garbage Collection,GC垃圾回收:比如上面的例子,就是GC垃圾回收搬迁数据,擦除数据块后写入带来了整体写放大提升。

  • 业务读写的数据模型:随机写和顺序写对NAND的写入比例有非常大的影响,直接影响写放大的系数

  • 系统层的TRIM操作:会影响invalid无效数据是否在GC过程中搬迁,对写放大影响也有重要的作用。

预留空间OP是什么呢?
当一块SSD的数据写满时,需要额外的空间在启动垃圾回收之前接受新写入的数据,这块额外的空间,我们就称为预留空间。当然,这块预留空间是对用户不可见的。

预留空间主要分为两个部分:

图片

(1)由于标称容量与NAND闪存计算差异造成的本征预留空间OP1。
市场上SSD标称的容量是按照千进制(1000)来计算的,但是NAND闪存的容量是按照1024计算的。
我们简单列个式子计算一下:

市场SSD标称 1GB(GigaByte)= 1000MB= 1000*1000KB= 1000*1000*1000Byte= 10^9Byte  (1,000,000,000Byte).

NAND闪存 1GB(GibiByte)= 1024MB= 1024*1024KB =1024*1024*1024Byte =2^30Byte  (1,073,741,824Byte).

这两个计算方式之间正好相差7.37%。所以说SSD本征的预留空间就有7.37%。

(2)SSD由于性能要求而预留空间OP2,这部分也是标称OP。
这个部分预留空间主要用于垃圾回收GC,存储SSD主控的固件(Firmware),备用数据块(Spare Blocks)等。
标称预留空间OP=(SSD物理总容量-用户数据空间)/用户数据空间

图片

从上面这个表格中我们看到标称预留空间(Marketed OP)为0%的时候,其实这时的内部仍然有7%的本征预留空间。

预留空间OP有什么好处?预留空间牺牲了用户数据空间,那TA要是再没有什么好处,用户就真的要崩溃咯。其实预留空间OP的好处有很多:提高写入性能、降低写放大、提升NAND闪存使用寿命等。

所以,结合上面几个关键信息点,这个事情的逻辑应该是这样:

  • 小米研发了基于文件优化的特性FBO,减小碎片化,增加NAND的顺序写入,降低了写放大,提升了UFS使用寿命

  • 原本UFS 4.0 256GB预留了10GB空间,用于坏块管理和FW垃圾回收等功能,现在由于有FBO的出现,只需要2GB就可以完成原本10GB的工作,这样就省出来了8GB给用户

小编理解大概是这个逻辑,不知道各位是否有其他的看法,欢迎评论区留言交流!


小编每日撰文不易,如果您看完有所受益,欢迎点击文章底部左下角“关注”并点击“分享”、“在看”,非常感谢!

精彩推荐:

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

古猫先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值