FPGA实现的PCIe2.0与PCIe1.0 NVMe IP性能测试

这篇具有很好参考价值的文章主要介绍了FPGA实现的PCIe2.0与PCIe1.0 NVMe IP性能测试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景介绍

NVMe协议固态硬盘的速度随所使用的PCIe协议不同而不同。NVMe固态硬盘在PCIe Gen2、Gen3、Gen4条件下,理论有效带宽分别为2GB/s、3.938GB/s、7.877GB/s。目前,基于PCIe Gen5的NVMe SSD在2023年已发布,其理论有效带宽为17.754GB/s。

在之前的帖子中,我们介绍了一个在PCIe3.0协议下的基于FPGA PL的纯逻辑NVMe Host IP(FPGA实现高带宽NVMeSSD读写——纯逻辑实现-CSDN博客),速度可以达到3GB/s,并进一步将其拓展至双路NVMe从而使系统可以同时对两个NVMe硬盘进行读写,速度达到了6GB/s。基于FPGA的技术框架中,AMD(Xilinx)公司只有在其最高端的UltraScale+世代中的Virtex系列的高端器件才提供PCIe 4.0协议的PHY,对应的开发板为型号为VCU128。囿于缺少该板卡,我们还没法进行基于PCIe4.0的NVMe IP的速度测试。

NVMe IP最早的版本是2021年6月发布的基于FPGA Zynq 系列中的PS资源而建的系统(FPGA实现高带宽NVMe SSD读写_fpga nvme ssd-CSDN博客)。在这期间,有不少业界朋友和我们联系,咨询不需要特别高速度的应用中,基于PCIe 2.0和PCIe 1.0协议的NVMe IP性能如何。理论上高版本适配的情况下跑低速协议是适配的,但是没有人会在高性能平台上去做低速的实现,浪费平台性能。本着求实探真的原则,本文中我们对IP进行了适度调整,测试了NVMe IP在PCIe2.0和PCIe1.0协议下的性能。所以本文的测试结果可以客观的反映NVMe IP在Xilinx早期的低速平台上的实际性能。

本NVMe IP的系统框架在之前的帖子中已经介绍过,本篇不再赘述,有兴趣的朋友可以通过我的全部帖子列表(https://blog.csdn.net/weixin_42166371?type=blog)翻看前文。

测试方案

本文的测试内容主要为NVMe IP在PCIe2.0和PCIe1.0协议下的性能,因此选用的主要测试平台是与协议适配的对应Xilinx ZC706,VC707开发板以及FMC接口的NVMe扩展子卡。同时测试高性能平台ZCU106(PCIe 3.0)上IP降速到PCIe 2.0的性能以作为对比。

测试方法与之前的测试相似,使用1000GB的数据,实时测试每个1GB数据的读写性能。

测试平台

系统的开发及测试都是基于Xilinx官方开发板和FMC NVMe SSD转接卡组成。开发板包括ZCU106,ZC706,VC707,其中ZCU106是我们之前使用调试的板子,其支持2路PCIe 3.0,而ZC706和VC707均不支持PCIe 3.0,ZC706支持2路PCIe 2.0,VC707只支持1路PCIe 2.0。根据之前的测试结果,本次实验选用较为稳定性能较好的三星980Pro,同时也是为了验证在较低速度下980Pro的速度是否还会再次变化。

fpga pcie 存储,fpga开发,tcp/ip,网络协议

fpga pcie 存储,fpga开发,tcp/ip,网络协议

测试结果

单路NVMe测试

fpga pcie 存储,fpga开发,tcp/ip,网络协议

fpga pcie 存储,fpga开发,tcp/ip,网络协议

VC707和ZC706平台下测得的读写盘速度都是相近的。从图中可以看出,在PCIe2.0下,单盘的读盘速度约为1.4GB/s,写盘速度则是约为1.2GB/s。三星980Pro的写盘速度没有像PCIe 3.0下的速度跌落,始终保持较为稳定的速度。NVMe协议的固态硬盘在PCIe Gen2 4x理论有效带宽为2GB/s,而我们NVMe IP最高速度达到了1.4GB/s,达到了理论带宽的70%。由于协议中存在物理层编码开销、Packet Non-Payload 开销、TLP 间隔开销以及ACK 与流控开销,我们认为70%的效率已经是一个比较高的数值了。

fpga pcie 存储,fpga开发,tcp/ip,网络协议
fpga pcie 存储,fpga开发,tcp/ip,网络协议
同样我们用VC707和ZC706平台进行了PCIe 1.0的测试,VC707和ZC706的读盘速度均约为820MB/s,写盘速度均约为780MB/s。NVMe协议的固态硬盘在PCIe Gen1 4x理论有效带宽为1GB/s,读盘的有效带宽已达到了理论带宽的82%,这个数据让人十分惊喜。

双路NVMe测试

根据Xilinx的官方手册,VC707只支持一路PCIe 2.0链接,ZC706支持两路PCIe2.0链接,因此我们只使用了ZC706进行双路NVMe测试。

fpga pcie 存储,fpga开发,tcp/ip,网络协议

ZC706平台下的双路PCIe2.0 NVMe系统读写盘速度如图所示。从图中可以看出,双盘的读盘速度约为2.0GB/s,写盘速度则是约为1.8GB/s,这个速度与预期不符(读盘期望值为2.8GB/s左右)。经过一系列测试及查证,发现虽然我们设置的是两路PCIe 2.0,但系统将其自动配置为一路PCIe 2.0和一路PCIe 1.0,总的速度也与两种协议下单路PCIe的速度叠加接近,我们认为这可能是PCIe PHY IP的问题。

高速平台PCIe2.0测试

ZC706平台下的双路PCIe2.0 NVMe测试的意外结果给了我们带来一个疑问,如果使用ZCU106,用其支持的两路PCIe 3.0,对其进行降速到PCIe 2.0,运行出来的结果是什么样子?会不会也出现类似的协议变化的现象?为此我们使用ZCU106分别进行单路PCIe2.0 NVMe和双路PCIe2.0 NVMe的测试。为了简化测试,我们仅进行了PCIe2.0 NVMe读数据的性能测试。

fpga pcie 存储,fpga开发,tcp/ip,网络协议

fpga pcie 存储,fpga开发,tcp/ip,网络协议

单路NVMe测试中,读盘的速度达到了1.5GB/s,这个速度比基于VC707/ZC706平台的1.4GB/s要快一些;在双路NVMe测速中,读盘的速度达到了2.9GB/s,没有出现协议降档的情况(一路PCIe2.0,一路PCIe1.0)。

对于ZCU106平台的PCIe2.0 NVMe速度快于VC707/ZC706平台的PCIe2.0 NVMe,我们认为主要有两个原因,第一是ZCU106系统使用的硬件与VC707/ZC706有一定差异。例如在ZCU106的板子上使用的DDR4,其时钟是300MHz,而在VC707/ZC706上使用的是DDR3,其时钟是200MHz,这使得IP在与DDR传输时的速度不同;第二,由于PCIe 3.0相较于PCIe 2.0已经有一定的协议更新,物理通路相较于传统PCIe 2.0已经有一定提升,因此在支持PCIe3.0的ZCU106上跑PCIe 2.0的速度会比只支持PCIe 2.0的两个板子速度略快。

结语

我们设计的FPGA纯逻辑实现的高带宽NVMe SSD读写的IP同样可以适用于PCIe 2.0和PCIe 1.0的协议标准,其速度可达1.4GB/s及820MB/s,且效率分别达到了70%和83%,这已经比较接近Xilinx平台的最大速度,这同时也证明了我们的IP的适用性。最后的测试结果也表明,我们最初的考虑是有道理的。将高版本的IP在低速协议上可以适配,但是不一定是低速协议实际的速度。

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

声明

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

到了这里,关于FPGA实现的PCIe2.0与PCIe1.0 NVMe IP性能测试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA(基于xilinx)中PCIe介绍以及IP核XDMA的使用

    例如:第一章 PCIe简介以及IP核的使用 PCIe 总线架构与以太网的 OSI 模型类似,是一种分层协议架构, 分为事务层(Transaction Layer)、 数据链路层(Data Link Layer) 和物理层(Physical Layer)。 这些层中的每一层都分为两部分:一部分处理出站(要发送的)信息,另一部分处理入站(接收

    2024年02月08日
    浏览(35)
  • 你所不知道的NVMe SSD固态硬盘读写速度及国货的惊喜--基于FPGA的速度测试

      在\\\"FPGA实现高带宽NVMe SSD读写\\\"帖子中介绍了项目背景及系统架构、FPGA实现NVMe读写的大致实现方法。项目中需要将图像传感器产生的高速数据流实时稳定的持续存储,即不仅要求较高的存储带宽,还同时需要该存储带宽保持始终稳定、持续。   在项目做系统设计的时候

    2024年02月06日
    浏览(40)
  • FPGA PCIe 软核的实现——扒一扒复旦微、国微PCIe软核的实现

    近来复旦微、国微等厂家相继推出了可以兼容XILINX PCIe硬核的PCIe软核,销售也到所里来推广了一下,领导交代让抽自己的时间试用研究一下,看项目中用不用的起来。 读研的时候就接触过,PCIE协议非常非常复杂,要实现非常非常困难,稍微看过一些协议,看球不懂,真给这

    2024年02月16日
    浏览(74)
  • 关于xilinx使用PCIE实现FPGA的部分重配置实现(MCAP)

    平台:vivado21018.3 芯片:xcku115-flva1517-2-i (active) 本文官方文档:Xilinx_Answer_64761_Ultrascale_Devices 本文驱动下载地址:64761 - Bitstream Loading across the PCI Express Link in UltraScale and UltraScale+ Devices for Tandem PCIe and Partial Reconfiguration (xilinx.com) 本文参考:Xilinx基于PCIE的部分重配置实现(一)

    2024年02月01日
    浏览(42)
  • m基于FPGA的Hamming汉明编译码verilog实现,包含testbench测试文件,不使用IP核

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 Hamming编码过程 2.2 Hamming解码与纠错 2.3 FPGA实现 3.Verilog核心程序 4.完整算法代码文件 本系统进行了Vivado2019.2平台的开发,测试结果如下:        在现代数字通信和存储系统中,错误检测和纠正(Error Detection and Correction, EDC)机

    2024年01月23日
    浏览(25)
  • FPGA实现MPEG2视频压缩PCIe传输 提供软硬件工程源码和技术支持

    MJPEG、MPEG2、MPEG4、H264 是流行且兼容性很高的 4 种视频编码格式。其中 MJPEG 对每帧独立进行 JPEG 图象压缩,而不利用帧间相关性,因此压缩效果较差。 MPEG2、MPEG4 和 H264 会进行帧间压缩,但后两者更复杂,效果也更好。MPEG2 虽然比较老 (1994年),但在低压缩率的条件下与 MPEG

    2024年02月08日
    浏览(31)
  • FPGA实现SDI视频解码PCIE传输 提供工程源码和QT上位机源码加技术支持

    FPGA实现SDI视频编解码目前有两种方案: 一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971直接将SDI解码为并行的YCRCB,缺点是成本较高,可以百度一下GS2971的价格; 另一种方案是使用FPGA实现编解码,利用FPGA的GTP/GTX资源实现解串,优点

    2024年02月06日
    浏览(47)
  • FPGA基于RIFFA实现PCIE采集ov5640图像传输,提供工程源码和QT上位机

    PCIE是目前速率很高的外部板卡与CPU通信的方案之一,广泛应用于电脑主板与外部板卡的通讯,PCIE协议极其复杂,想要掌握不容易,所以Xilinx和Altera等FPGA厂商直接推出了相关IP供用户使用,比如Xilinx的XDMA,这种IP直接集成了PCIE通信的所有内核资源,并已封装为AXIS接口,用户在

    2023年04月09日
    浏览(64)
  • m基于FPGA的RS+卷积级联编译码实现,RS用IP核实现,卷积用verilog实现,包含testbench测试文件

    目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 卷积码编码 2.2 RS码编码 2.3 级联编码 2.4 解码过程 3.Verilog核心程序 4.完整算法代码文件获得 Vivado2019.2仿真结果如下:         级联码是一种通过将两种或多种纠错码结合使用来提高纠错能力的编码方案。在RS+卷积级联编码中,

    2024年02月22日
    浏览(38)
  • 紫光同创FPGA实现PCIE测速试验,提供PDS工程和Linux QT上位机源码和技术支持

    紫光同创FPGA实现PCIE测速试验,提供PDS工程和Linux QT上位机源码和技术支持 “苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初心,懂先生站在

    2024年02月08日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包