存储专栏:FPGA搞不定LDPC?分布式ECC助阵SSD
黄亮 发表于:14年11月26日 11:51 [原创] 存储在线
在本月16日举行的《存储技术之巅》第一次线下交流活动中,精通Oracle的女神Lunar和Greenliant绿芯科技VP李炫辉先生,分别带来了“Oracle在非传统存储上的应用交流”和“闪存技术及市场发展趋势”这2个分享主题。
数据库方面我不专业,因此就班门弄斧分享点闪存方面的收获和心得。本文是第一篇,后面计划还有2个小的话题。
在原本我为大家准备的内容之前,先插入一段业内高人的讨论——这两天在网上的新发现:)在未经确认的情况下,暂时隐去了他们的名字/昵称。
FPGA搞不定LDPC?在SSD上的生命力能否延续
F君:“FPGA最大的问题是搞不定ECC,绕不过去的问题,以后必然是ASIC。
至少ECC是在ASIC里,主控另说。”
L君:“FPGA高ECC主要是逻辑资源不够,Flash通道多后,一个FPGA带宽就上不去了,每个通道都需要独立计算ECC。”
F君:“ECC组合逻辑比较大,比如BCH32,在FPGA上能跑100M的频率就不错了,提供的带宽不够以后性能的增长。而且以后的Flash的BER(bit error rate,误码率)越来越大,肯定需要更强ECC,需要资源更大。”
L君:“所以LDPC硬Core成为一个关键竞争力。
应该说LDPC Core硬化,做到芯片里,FPGA目前基本没有合适的能承载LDPC的商用方案。”
在《破解PCIe SSD进化:从踩坑到解决方案》一文中,我曾经提到“FPGA(现场可编程门阵列)的特点是设计灵活性强,缺点是封装尺寸和发热量比ASIC较大,数量达到一定规模后成本不如ASIC。”
上面这段聊天中,我没看到来自Fusion-io或者宝存科技的人发表意见。很早就听说Fusion-io考虑过自己做ASIC控制器;而国内Memblaze最新的PBlaze4在NVMe时代也开始转向使用PMC的ASIC。
关于BCH纠错,我首先想起了当年看到的SandForce SSD控制器结构图,应该是每512byte 55b的ECC引擎。
随着NAND闪存制程的不断缩小以及TLC应用的推进,误码率确实在提高,因此更好的纠错算法显得越发重要。
上图来自Altera在Flash Memory Summit2014上的演讲资料,可以看到LDPC和BCH的对比优势。
在我印象中,另一位闪存行业的资深人士曾经表示:“在LDPC上面,除了Marvell和LSI都是小学生。”
为什么这样说呢,因为LDPC技术在硬盘控制器上也发展了一些年头。我们知道硬盘的磁记录密度已经非常大了,对模拟信号转换之后的纠错也是必不可少的。而今天的硬盘控制器(含前置放大)主要就是Marvell和LSI(与希捷合作)两家提供。当然硬盘和SSD的速度不可同日而语,那么当初LSI收购SandForce以及最终卖给希捷也有一定技术互补的成分吧。
好奇心使我继续翻看上面那个文档,如上图中红圈的部分,FPGA应该也能实现LDPC。
继续看上图,Altera认为并行化的Parity矩阵允许更快的(LDPC)算法执行。
李炫辉:“BCH算法需要更强的计算资源,而FPGA资源有限,LDPC则可以在同样数量校验码的情况下,实现更多位的纠错,但是只有在错码率较高的情况下,LDPC的效率才会高。
因此我推测,转向LDPC后,利用3D或多层制程技术的高容量NAND颗粒,可以大幅度提升单卡容量,但是性能提升会相对有限。
因此,如何平衡大容量以及性能会是架构设计面临的问题。”
我的另一位朋友,《存储技术之巅》Super管理员,拥有FPGA开发经验的Carol_cao表示:“需要多少资源?高端FPGA那么多资源,不够?
不过这么贵的产品,做ASIC一定是看到了市场,或者说已经做出了部分市场,要不然得玩死;
不走高制程,ASIC价格也下不来,制程高了,很多问题来了;
没有底蕴没有实力的不敢这么做呀。”
点评:至于FPGA到底能否实现承载LDPC的商用方案?在效率上有没有价值?笔者不是SSD设计方面的专家,在这里不敢下什么结论,只是希望为大家进一步的讨论抛砖引玉。
文章开头引用的话中有一句“每个通道都需要独立计算ECC”,而ONFi和ToggleDDR闪存接口速率也越来越高,这对单芯片ASIC的处理能力会不会也有挑战呢?(注:PCIe SSD上32个通道是比较普遍的现象)
分布式ECC:NAND封装闪存控制器
如上图,未来我们会看到一种将NAND Flash和闪存控制器(包含ECC和FTL)集成于一颗芯片的方案。
Greenliant这家公司是做IC出身,现在也做PCIe SSD,这意味着右边的芯片要把来自闪存工厂的半导体也封装进去。那么,我认为已经拥有控制器技术的三星、美光等也可能这么干吧。
我还注意到左边的逻辑单元中没看到PCIe或者SATA等主机接口,那么这种“NANDrive”应该还需要转接一下。
上图中的G-card Controller就是刚才所说的“枢纽芯片”,其内部除了PCIe 2.0 x4接口之外,System Controller管理者控制缓存和数据缓存,此外还有8个NANDrive ArrayController模块,各自控制5颗NANDrive组成多个RAID组。
也许就是因为将ECC和FTL这部分闪存控制功能甩了出去(听李总说还可以做全局FTL),G-card Controller芯片能够加强其它部分,因此被称为“板载硬件RAID的控制器架构”。
深夜我忽然想起:上图中的G-card Controller有没有可能换成FPGA呢?来看看下面这个图。
在Violin Memory全闪存阵列中,FPGA的应用就分成了2部分——RAID控制和闪存控制,IBM FlashSystem(TMS)的情况也是类似。这里的Flash Control和闪存尚未封装在一起,整个存储系统的规模也比单卡要大。
李炫辉:“Greenliant下一代产品除了对外的接口会采用标准协议外,内部ASIC与分布式控制器之间,以及控制器与颗粒之间均会采用私有协议(也就是说FPGA没法加进来玩了)。同时在算法上也会根据不同的颗粒特性做调整。
因此Greenliant的下一代产品也是基于自己的ASIC芯片,现在第一代产品(PCIe SSD,据说已经支持NVMe)用了FPGA。”
未来的几天中,我还想跟大家分享Host-Based和Device-Based的融合,以及SSD掉电保护的相关内容,感谢关注。
本文出自黄亮的微信公众号,企业存储技术(微信号:huangliang_storage),欢迎大家关注!