我昨天在《FPGA搞不定LDPC?分布式ECC助阵SSD》一文中抛出了“砖”之后,果真引到了“玉”。
一位来自Fusion-io的朋友站出来说:“我们现在的LDPC是FPGA的。”
另一位朋友则表示:“LDPC用软件实现就可以了,放硬件里不费事么?FPGA中的core就可以处理LDPC了。”
我们再看看昨天那几位大牛后来怎么说。
J君:“至于FPGA内能否放入大逻辑面积的纠错控制器(如BCH72bit,LDPC等),那要看你用什么FPGA。”
F君:“现在的FPGA有能实现BCH72带宽3GB/s的吗?
原来的Flash出错概率低,可以很多通道共享一个ECC引擎,现在不行了,需要更多引擎。
比如原来的数据带宽是3GB/s,但因为出错概率低,可能ECC达到500MB/s的纠错带宽就行了。”
L君:“不能用硬盘那套LDPC来套用到SSD,第一是信道模型不同,第二是出错BER和纠错要求不一样,第三是带宽和性能差了1-2个数量级。
所以现在是ECC带宽限制SSD带宽。
提高ECC带宽主要有集中思路,硬件上就是
1. 提升ECC硬件芯片频率;
2. 提升译码并行度,增大矩阵计算量64*64 –128*128等;
3. 针对LDPC算法和计算逻辑进行深度优化,译码QoS,负载均衡调度等。高性能LDPC本身就是并行分布式的,放不同逻辑上面做还是由于性能高后逻辑资源不够。
软件层面考虑,就是和FTL深度整合了,后期用容量换性能,要求弹性FTL,占用户存储空间,不过这个相当复杂,涉及用户数据搬移,以及非结构化FTL,没见真正做出来。”
S君:“是说FTL在host端么?我认为这是趋势。”
L君:“其实并不一定是在host,SSD主控本身功能做强也能实现弹性FTL,不过要加CPU,纯FPGA搞不定。
如果算法全做host,对硬件控制器公司就是灾难。
按照这种做法,就是白牌服务器的做法。用户直接找个代工厂,用标准解决方案就行,SSD只提供读写擦,ECC三种基本功能,其它全软件做。”
P君:“要把一些CPU计算放进ASIC里面。”
L君:“没错,要跟CPU抢业务才能提高门槛,学术性讲就是降低CPU负载。”
S君:“我的观点是充分利用CPU,以后多路服务器CPU的能力根本用不完,内存都可能爆过外设。尽量去用CPU而不是降低CPU使用。
将FTL放到host,还可以绑定应用,使得用户程序更快。”
Q君:“有点软件定义闪存的概念。”
看着看着,以我的水平根本插不上嘴,剩下的只会叫好了。于是就干脆把以上的讨论分享给大家。
翻了翻之前写过的东西,我在上一次讨论Host-based与Device-based之争时,就提出过“越接近CPU越有利于软件定义”。
所谓软件定义闪存,之前我也看到百度提出过这个概念,不过那个还不属于通用的商业产品。具体到PCIeSSD上,偏“软”的——即Host-Based架构的代表Fusion-io,支持Atomic-write(原子写,参考《十亿IOPS不是梦?Fusion-io闪存API另类分析》一文);后来还推出那个专门针对MySQL数据库优化,压缩并且还提高性能的文件系统(见下图)。
回到今天的主题,在《破解PCIeSSD进化:从踩坑到解决方案》一文中,笔者并没有讨论Host-Based和Device-Based。当时不是没考虑过这一点,但对于普通用户来说,这个架构差异对实际使用体验的直接影响并不是很大。但对于业内专业人士则不同了,比如在本月16日举行的《存储技术之巅》第一次线下交流活动中,大家就展开了热烈的讨论。
在本文的标题之前,似乎应该加个定语“使用FPGA主控的PCIeSSD”,因为目前ASIC控制器的卡,以PMC/IDT系和Intel为主基本都是Device-Based,不存在与Host-Based两条技术路线之争。
所谓Host-Based,即SSD的FTL——包括地址转换/块分配(通常所说的LBA)、磨损平衡和垃圾回收在OS驱动层实现。
而Device-Based则利用卡上FPGA控制器的处理资源来实现FTL,操作系统上安装的驱动应该不包含这部分工作。
在国内最早宣传Device-Based PCIeSSD的大约就是Memblaze,下面我们也来看看另外一家Shannon宝存科技是如何来对比二者的。
Host-Based的缺点是需要PCIeSSD容量1/1000的内存来放元数据,比如6.4TB的卡大约就是6.4GB,这一点上Device-Based完胜。那么容量、效率和灵活性这几点,我觉得可以归结为一点——Device-Based卡上的FPGA需要干更多工作,功耗和发热也许会大些?另外可能会受其处理能力的限制。
Device-Based温度会不会更高?
关于这个问题,我曾听说国外一家大品牌PCIeSSD的工作温度能达到90多摄氏度(注:应该不是Device-Based架构,这里指主控散热片表面温度),也就是说没有必然性?
但到了SFF-8639和NVMe时代之后,FPGA的处理性能和散热确实成为不可忽视的因素了(至少在Device-Based卡上如此),因此我们看到了PMCASIC主控的PBlaze4。
Host-Based能否实现NVMe?
由于NVMe在操作系统中集成标准驱动,那么Host-Based在驱动中实现FTL这种方式还可行吗?宝存表示他们有“曲线救国”的方法,具体还不方便透露。据我所知,NVMe也允许个性化驱动,比如像希捷/LSINytro那样的方案,SAS控制器也是能够支持NVMe的。
RAID如何实现?
为了让PCIeSSD像硬盘那样支持RAID保护,Memblaze和宝存分别提出了自己的方案。
上图来自宝存在Flash Memory Summit2014上的演讲《Buildingefficient RAID-5 systems across SSDs at the FTLLayer》,我们看到这个跨盘的RAID还带有硬件加速,可能是使用FPGA的加速单元来做RAID5 XOR计算吧。
另一方面,我听说Memblaze的RAID实现有点类似于Linux下的LVM(镜像)?而且他们这款产品(应该还是FPGA)已经带有一些Host-Based的色彩了。
不知大家有没有Host-Based和Device-Based向融合发展的感觉?
提起HostRAID,笔者又想起了自己在10年前踩过的坑。
2003年,Adaptec在Ultra320SCSI上引入HostRAID0/1的支持,无需硬件RAID卡就能做简单的阵列级别。我当时推荐销售在2个客户的机器上用29320卡分别做的RAID0和1,结果在Windows下都出现了死机的问题,经过反复排查才发现是卡的问题——确切说应该是当时HostRAID驱动还不成熟。
注意:Adaptec要支持那个HostRAID就不能使用普通的SCSI驱动,而LSI的SCSI卡(53C1020/1030)同样的功能则对驱动程序透明。他们2个真的有点像今天的Host-Based和Device-Based,虽说做RAID0/1对CPU等资源的占用基本可以忽略不计。
还是那句话,稳定的产品不是测出来的,但也少不了测试。
我又班门弄斧地写了以上这些,不专业之处还望大家多指正。
本文出自黄亮的微信公众号,企业存储技术(微信号:huangliang_storage),欢迎大家关注!