最近看到一张Phison(群联)主控的汇总表格,Feature里面各种的术语引起了我的兴趣。
BCH,DevSlp,TLC这些一看就知道是啥。其他的就不是非常直观了。
耳边回忆起冬瓜哥雄厚的嗓音 – 有些术语其实就是旧概念重新起个名字以提升Bigger,就是为了方便去忽悠客户。
再想起蛋蛋经常吹嘘的两道拿手菜:”法式甜酸西红柿片配黄油鸡蛋粒”和”特调微辣酸甜汁焗猪柳伴长葱 ” 我似乎明白了什么 …
那我们来看看蛋(Qun)蛋(Lian)是怎么提升Bigger的:
SmartRefresh (这个功能是关于Read Disturb监控的 ) — SSDFans之前有Read Disturb的文章,有兴趣您出门左转看看去。
主控通过RTMS(实时扫描)和ITMS(空闲扫描)对每个块的进行读取,监控ECC健康情况(记录读取错误的bit数量),必要时(错误bit达到某个预设的阈值)主动刷新(读出并重新写入)这个Block的数据,从而避免数据错误。
来自阿呆的提醒:这个read disturb看起来更像是read scrub,两者区别如下。
- Read disturb是Block读到一定次数把数据搬走;
- Read scrub是定期内部扫描全盘,把错误bit多的Block搬走
SmartFlush (缓存写入机制 – 将脏数据写入NAND)
Smart On-the-fly Flushing (时间驱动)
- 设置阈值一个较小的timer,时间一到就赶紧把缓存里的数据写入NAND
- 把随机写入在缓存中重排(尽可能变为顺序写入)再写入NAND
Smart Trigger Flushing (事件驱动)
- 侦测到SATA链路连接丢失(我猜固件是通过检查是否有OOB发生)时,触发缓存写入
- DevSlp –盘进入低功耗模式时触发缓存写入
- Idle-time, 当一段时间没有IO时触发缓存写入 (这时很有可能会触发DevSlp或者是满足on-the-flying的时间要求)
GuaranteedFlush
群联主控支持Flush Cache(E7h)命令,Host可以通过这个命令把数据透写(Write through方式)到NAND上,然后设备才会返回写入成功。
另外,厂商还给缓存写入命令加了一个保护算法,去防止异常掉电对数据的影响 (什么样的算法可以在掉电的情况下保证Flash上的数据,我很好奇?)
http://www.phison.com/English/SsdTechView.asp
E2E data path protection (端到端数据保护)
从Host下来途径PCIe,DDR,Frontend, Backend到NAND每个部分都安插各种校验机制,这个没法细说,细说就暴露本方阵地了。
SmartECC
大概有这么几个纠错方式:
BCH ECC解码 :奥拓上用的解码方式
LDPC ECC 解码:奥迪上用的解码方式[选配]) — 牛逼哄哄的SSD_Dummy正在写一篇LDPC的大作,预计2017年跟大家见面
Read Retry: 解码解不出来的情况下,调整Vref电压重新从NAND上读出来再解
RAID ECC Parity :不是所有的SSD都带RAID,前面如果解码还有解不出来的,RAID XOR兴许还能救你一命
PS:此处感谢作者群Ron和菜鸟两位兄台斧正,不胜感激!
On-the-fly Encryption
有兴趣的话你可以加装AES-256 或FIPS-140-2加密套件 蛋蛋就可以安心地存放小电影啦
原文链接在此:http://www.phison.com/English/SsdTechView.asp