基于FPGA纯逻辑的双盘NVMe RAID0存储系统

背景介绍

在之前的帖子中,介绍了一个基于FPGA PL的纯逻辑NVME Host IP(FPGA实现高带宽NVMeSSD读写——纯逻辑实现-CSDN博客)。在一些实际应用中,单路NVME的3GB/s的读写速度还无法满足需求,因此我们将单路NVME IP进一步拓展至两个NVME硬盘同时读写。对于一个技术研发人员,冲击NVME的极限高速有着强烈的内在动力以及好奇心。此外,我们曾基于Zynq PS实现过一版双盘读写系统(基于FPGA的双盘NVMe SSD的RAID0模式读写实现及测试_nvme raid模式_ARTBES的博客-CSDN博客),在那个系统中,双盘的写入速度可达单盘的1.9倍,性能几乎拉满。但是双盘读盘的速度仅仅达到了单盘的1.4-1.5倍,距离理想的2倍还有较大的差距。在PS架构中,有很多部分不可控,发出控制信号后,就只能等系统响应,系统慢了也没办法。所以,本系统也是为了进一步实现在底层对NVME读写进行控制,达到NVME的高速读写。

方案介绍

本系统的核心是之前帖子中已经介绍过的单路NVMe读写IP,基于PCIe3.0协议,其内部的基本架构及工作流程参见前贴(FPGA实现高带宽NVMeSSD读写——纯逻辑实现-CSDN博客)。双路NVME系统使用了两个NVMe读写IP,每个IP分别对应一个NVME SSD盘。系统使用RAID0模式,将一个待写入任务分解为若干小的子任务,将不同的子任务同时分配给两个NVME盘,两个NVME IP同时工作,两个NVME SSD同时写入,以实现速度的倍增,实现更高速的写入。系统的数据读出过程与数据写入过程类似,两个单路NVME IP同时工作,独立读取各自对应的存有数据的NVME SSD盘。在该双路NVME IP的前端,需要对应配合一个做任务分配的RAID0控制器。

在本项目中使用了DDR4,其时钟为300MHz,位宽为512bit,理论传输带宽为19.2GB/s。DDR4在系统中只是暂时起了一个缓存的作用,用户将待存数据写入DDR4中或从DDR4中取走从NVME SSD读出的数据。在该架构下,NVME读写DDR的最大带宽只能占用DDR4总带宽的一半,因此NVME IP可使用的理论最大带宽为9.6GB/s。依据之前测得的NVME IP单路传输速率约为3.0GB/s,理论上,目前的架构(板子)最多可以支持3路NVME IP并行工作(同时对DDR4进行读或者写)。实际应用中,一般SSD盘设置为2个或者4个硬盘为一组,这也是我们选用两路NVME硬盘作为系统实现的目标的原因。

Microblaze在单路NVME IP中作为系统控制器,实现读写任务的控制及测速等功能。在双路NVME IP中,仍使用一个Microblaze作为整个系统的控制器实现任务的分发及控制,验证、测速等控制操作。MicroBlaze为IP提供的读写控制信号有R/W、SLBA、NLB以及IP开始工作的Start信号。

系统框图中的存储队列控制器是双路NVME IP的重要子模块,该控制器在单路NVME的系统中可不使用。在双路NVME SSD系统中,该模块主要实现两个硬盘间的任务调度以充分利用DDR4的高带宽。

在这里插入图片描述

难点分析

将NVME IP从单路拓展到多路的最大难点在于对于总线的控制和利用率。如何合理利用DDR带宽,对DDR进行合理调度,使得两个NVME硬盘在工作时互不影响,正是从单个硬盘向多个硬盘拓展的核心。

双路NVME IP开发的过程中,较快的实现了基础功能。不过不是预设的同时工作,而是轮流工作。虽然读写任务是同时向两路NVME SSD盘发出的,但是由于使用DDR控制器的效率低,一路NVME在低速(相比DDR4)与DDR4进行读写操作,另外一路只能排队等待。第二路开始工作后,也是处于低速状态,第一路则又在等待,完全没有发挥DDR4的高带宽。在最终的版本中,对总线进行了实时释放处理,避免NVME的低速操作拉低高速DDR4的速率。

测试平台

系统的开发及测试都是基于Xilinx官方开发板ZCU106和FMC NVMe SSD转接卡组成。在前面的帖子(FPGA实现高带宽NVMe SSD读写_fpga nvme ssd-CSDN博客)中,我们使用了网上购买的单盘版FMC NVMe SSD转接卡。近期,该老哥出了双盘版的FMC NVMe SSD转接卡,刚好赶上我们的IP完成调试,就使用该转接卡进行测试。(之前的双盘系统硬件板卡(基于FPGA的双盘NVMe SSD的RAID0模式读写实现及测试_nvme raid模式_ARTBES的博客-CSDN博客)是为一位合作的客户制作。项目交付后,自己手里也没有该板卡了。)

本次系统使用的转接卡如下图所示,也同时放个链接吧,给有需要的朋友。该板卡经过本系统的测试,功能正确,速度较高。(咸鱼:https://m.tb.cn/h.5hzAFLG?tk=uupGWYFRa21

在这里插入图片描述

小吐槽一下这个板子,在之前的单盘板中,FMC接口与NVME 盘位是异侧的,子卡插在ZCU106的开发板上后,NVME SSD朝上,可以清楚的看到硬盘的工作状态(图片详见前贴)。在双盘版中,FMC接口与NVME SSD在同侧,子卡插到开发板后,完全看不到硬盘的工作状态了。希望在下一版能做个更新。

完整测试系统如下图所示:

在这里插入图片描述

为测试IP模块的读写性能,使用递增序列作为测试数据,分别测试NVME SSD写入及读出的速度。测试系统以双路NVME Host IP为核心,利用MicroBlaze实现测试数据的写入及读出(用于校验),并使用一段DDR4存储空间作为NVME读写数据的缓存空间,即将需写入NVME SSD的测试数据提前送至DDR4,或是存入从NVME SSD读出的数据。其中在大数据量测试中,反复读取DDR4中的数据或覆盖写入DDR4中的内存空间。

测试方案

系统的测试分为功能测试(数据准确性测试)及读写性能测试。本次使用的测试平台及环境与之前的测试一致,时间基准验证不再重复。
功能验证测试是向SSD中连续写入预设的1GB数据,同时再读出该数据,将读出的数据与预设数据进行对比,以证明数据在读写过程中均没有错误;
读写性能测试是向SSD连续写入/读出1000GB的数据,地址连续,计算完成读写所用时间,得到的性能参数。因本系统为双路NVME,为了测试系统效率,还对之前未使用的NVME SSD进行了单盘读写性能测试。

测试硬盘

本次测试主要目的为验证IP的功能、性能及稳定性,因此选用的硬盘均为工业用硬盘,包括三星980Pro,三星990Pro,至誉PE4,忆芯Starblaze四款硬盘。
其中,三星980Pro为以前帖子中测试过的硬盘,不再赘述。忆芯Starblaze所用硬盘和之前的型号不一样,但性能基本相近。所以本文仅贴出用于测试的硬盘照片,以证事实,具体性能见前贴(国产工业级VS家(商)用NVMe SSD固态硬盘速度测评–基于FPGA的速度测试_ARTBES的博客-CSDN博客

在这里插入图片描述
三星990Pro是三星SSD中最新的旗舰产品,于2022年8月发布,它最高支持PCIe 4.0接口,具有较高的随机读写性能。本次使用的测试盘为2T容量。

在这里插入图片描述

在这里插入图片描述

本次测试,至誉科技提供的硬盘为其新品PE4,1.92TB

在这里插入图片描述

测试硬盘

在这里插入图片描述

在这里插入图片描述

首先是PCIe 3.0的单盘性能。三星980Pro和三星990Pro都是读盘速度稳定在较高速度约为3.05GB/s,但是写盘存在一定问题:在200GB以前速度较快,约为2.9GB/s,在200GB附近出现速度跌落,跌落后的速度约为1.5GB/s。至誉硬盘的写入速度约为2.65GB/s,读出速度约为2.75GB/s。忆芯硬盘的写入速度为2.3GB/s,读出速度为3.08GB/s。忆芯硬盘的读出速度是四款测试硬盘中最快的,甚至超过了业界旗舰的三星Pro 序列硬盘,只是可惜其写入速度不够理想,让人抱以期待。

在这里插入图片描述

在这里插入图片描述

PCIe 3.0标准下,双路NVME 系统读盘速度最大可达6.1GB/s(990Pro,忆芯,980Pro),峰值6098MB/s(忆芯),写盘速度最大可达5.9GB/s(990Pro),峰值5887MB/s(990Pro)。

以双路NVME 系统的实测速度与最大可达理论速度(即单路NVME 系统的两倍)作为衡量IP效率的指标,读盘的最大效率为99%(990Pro,至誉),写盘的最大效也可达到99%(980Pro,990Pro),其他测试的几种硬盘也都在97%以上。具体来说,三星980Pro的写盘效率达到99%,读盘效率为97%;忆芯硬盘的写入效率为98%,读出效率为97%;至誉硬盘的写入效率为98%,读出效率达到99%。该效率性能可以说明本IP在设计中,对DDR控制器是使用是成功的,充分发挥了DDR4的高带宽。

双路NVME系统测试中,三星980Pro与三星990Pro在写入一定数据之后开始下降,最初的写入速度为5.75GB/s,在250GB附近开始下降至4.0GB/s,再到450G下降至2.7GB/s,根据数据推测为250GB附近第一个盘速度开始下降,450GB附近第二个盘速度下降。该速度下跌情况与单路NVME 系统测试结果一致,表明三星的这两款硬盘的读速稳定性差于国产的两款工业硬盘。

硬盘的测试结果表明,双路NVME IP功能正常,写盘最高速度可达5887MB/s,读盘最高速度可达6098MB/s,IP整体传输速度不低于6098MB/s。双路NVME RAID0的效率最大可达99%,已经接近了效率的极限。相比使用PS实现的双路NVME系统,读出速度由原来的4 GB/s提升至6.1 GB/s,写入速度由原来最高4.3 GB/s提升至5.9 GB/s,达到了我们最初的预想,几乎触碰到性能的天花板了。该双路NVME IP与国外老牌的NVME IP相比也毫不逊色。

DesignGateway公司发布的NVME IP是经Xilinx公司官方认证的 IP(https://china.xilinx.com/products/boards-and-kits/1-u4bqh3.html特色技术文档 NVMe-IP core),该IP(http://www.dgway.com/NVMe-IP_X_E.html)的双路NVME写入性能最高为4238 MB/s,读出性能最高为6202 MB/s。综合考虑IP的读写总体性能,本文IP的性能高于国外权威商业IP。

结语

本系统使用FPGA纯逻辑的方式实现了双路NVME SSD的RAID0读写。经过测试,本次的IP相较于上一版基于嵌入式ARM处理器的版本有较大的提升。在PCIe3.0标准下,双路NVME系统读盘速度最大可达6.1GB/s,写盘速度最大可达5.9GB/s,系统效率最大可达99%,并能保持在97%以上。从国内现有相关IP的公开报道中来看,本NVME IP的速度和效率都达到了某种极值。我们的实验中可能仍然存在一些不足之处,如果有朋友有更好的方法欢迎联系我们。

如果需要讨论,联系方式如下:
地址:北京市海淀区中关村南大街5号北京理工大学。
电话:13810602873(微信同号)
E-mail:liuzhenyu@bit.edu.cn

声明

在本文的结尾,我们做如下声明:本次的测试仅仅是作为与该领域感兴趣的朋友交流之用。由于测试环境受限,有的硬盘的速度可能并没有达到该盘的最大值,测试结果仅代表我们在此次实验中的测试结果,不代表盘的最优性能。我们仅对某款型号的某块盘,基于FPGA平台,用自己的测试程序做了统一的、无差别的测试而得到了结果。我们仅对我们的方法及所用的盘负责,保证不出现虚假或是伪造的结果。但不是对市场上所有的该型号或类似的产品性能做出推断或推论。本文的数据发布出来,仅供大家参考。

番外篇

在本系统IP的测试过程中,有航天领域的用户和我联系,他们对高速存储产品对震动以及冲击等外部环境有着极高(近乎变态)的要求。原本设想做特殊加固处理,但是被用户否了。

进一步,在与国产硬盘厂家沟通中,才发现他们早就觉察到了市场的这个需求,已经开始了布局。忆芯公司预计将在今年底推出BGA封装的NVME SSD。将FLASH芯片和控制芯片封装到一起,做成芯片封装形式的NVME存储产品能满足某些特殊以及极端环境下,对震动、冲击以及耐久性等的要求,作为一家全国产的存储产品提供商,忆芯公司提供100%国产自主设计的产品,不管是阻容、主控还是FLASH芯片都做到了全国产,希望他们的产品早点面世。

至誉科技(武汉)有限公司则更快了一步,可以提供一款BGA封装的NVME SSD产品,容量从128GB到1TB,四种容量。两家国内公司的产品,虽然所采用的技术路线不同,但也都是在国产的道路上奋力前行着,为我们国家的科技发展做着自己的贡献。这里,把两家公司的销售经理的联系方式留给大家,有具体需要的话,直接联系:

北京忆芯科技有限公司——冯经理:
  邮箱:hero.feng@starblaze-tech.com
  电话:18683435252
至誉科技(武汉)有限公司——汪经理
邮箱:wang.fan@exascend.com
电话:18898361595

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值