0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Xilinx ZCU102评估套件上实现NVMe SSD接口

YCqV_FPGA_EETre 来源:FPGA开发圈 2020-06-28 10:01 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

概述

Zynq UltraScale+ MPSoC 系列基于 Xilinx UltraScale MPSoC 架构,在单个器件中集成了功能丰富的、基于 ARM 的 64 位四核或双核处理系统 (PS) 和 Xilinx 可编程逻辑 (PL) UltraScale 架构。此外,还包括片上存储器、多端口外部存储器接口以及丰富的外设接口,尤其是 16.3 Gbps GTH 收发器,该收发器支持与像 NVMe SSD 驱动器这样的 PCI Express Gen3 存储设备接口。本文展示了通过使用 Design Gateway 的 NVMeG3-IP 内核在 Xilinx 的 ZCU102 评估套件上实现 NVMe 固态硬盘 (SSD) 接口的解决方案,该方案可实现惊人的快速性能:写入速度达 2,319 MB/s,读取速度达 3,347 MB/s。

Zynq UltraScale+ MPSoC ZCU102 评估套件简介

ZCU102 是用于快速原型开发的通用评估板,基于 XCZU9EG-2FFVB1156E MPSoC 器件。该评估板包含高速 DDR4 SODIMM 和组件内存接口、FMC 扩展端口、每秒数千兆位的串行收发器、各种外设接口以及用于用户定制设计的 FPGA 逻辑器件,藉此提供一个灵活的原型开发平台。

图 1:ZCU102 评估套件。(图片来源:Xilinx Inc.)

ZCU102 提供可编程逻辑功能,可用于 5G 无线网络、下一代高级驾驶辅助系统 (ADAS) 和工业物联网 (IIoT) 解决方案等最先进的应用。

总之,对于需要像 NVMe SSD 驱动器这样的高性能、高可靠性外部数据存储的应用来说,都有必要采用合适的解决方案,以充分利用支持 PCI Express Gen3 接口的 GTH 收发器。

NVMe SSD 存储简介

NVM Express (NVMe) 定义了主机控制器通过 PCI Express 访问 SSD 的接口。NVM Express 仅使用两个寄存器(命令发出和命令完成),从而优化了命令发出和完成过程。除此以外,NVMe 支持并行操作,在单个队列中支持多达 64K 的命令。64K 命令条目提高了顺序访问和随机访问两方面的传输性能。

NVMe 驱动器为高速数据存储和计算铺平了道路。借助 PCIe Express Gen3 技术,新型 NVMe SSD 驱动器即可实现高达 40 Gbps 的峰值性能。

此处展示了 NVMe 存储设备示例。

在 ZCU102 上 NVMe 主机控制器的实现

图 2:NVMe 实现。(图片来源:Design Gateway)

按照惯例,NVMe 主机是通过将主机处理器与 PCIe 控制器配合使用来实现的,从而实现与 NVMe SSD 的数据传入与传出。实现 NVMe 协议的目的是,为了与通过较高速总线连接的 PCIe 控制器硬件 CPU 外设进行设备驱动器通信。而数据缓冲和命令队列都需要外部 DDR 内存,以便在 PCIe 控制器与 SSD 之间传输数据。

由于 ZCU102 上的 XCZU9EG-2FFVB1156E FPGA 器件上不含 PCIe Gen3 集成块,因此无法采用传统实现方法。

于是,Design Gateway 提出了一种解决方案,即利用 NVMeG3-IP 内核(如图 2 所示)来实现 Zynq UltraScale+ MPSoC 器件(不含 PCIe 集成块)的 NVMe SSD 接口。通过 NVMe 接口,ZCU102 即可构建具有较高性能的多通道 RAID 系统,同时最大限度地降低 FPGA 资源消耗。NVMeG3-IP 内核许可中包含参考设计示例,可帮助设计人员缩短开发时间并降低成本。

Design Gateway 的 NVMeG3-IP 概述

在不具备 PCIe 集成块、CPU 和外部存储器的情况下,具有 PCIe Gen3 IP 软核 (NVMeG3-IP) 的 NVMe IP 内核是访问 NVMe SSD 的理想之选。NVMeG3-IP 包含 PCIe Gen3 IP 软核和 256 KB 存储器。如果您的应用需要具有较高速性能的 NVMe SSD 存储,却又使用了不包含 PCIe 集成块的低成本 FPGA,那么建议您使用该解决方案。

图 3:NVMeG3-IP 框图。(图片来源:Design Gateway)

NVMeG3-IP 特性

NVMeG3-IP 具有许多特性,以下列出了其中一部分特性:

1.实现应用层、事务层、数据链路层以及物理层的某些部分以访问 NVMe SSD,而无需占用 CPU

2. 与配置为 4 通道 PCIe Gen3(128 位总线接口)的 Xilinx PCIe PHY IP 配合操作

3. 包含 256 KB 的 RAM 数据缓冲区

4. 经由 dgIF typeS 的简单用户接口

5. 支持六个命令,即“识别”、“关闭”、“写入”、“读取”、"SMART" 和“刷新”(支持其他命令作为可选项)

6. 支持的 NVMe 器件:

基类代码:01h(大容量存储),子类代码:08h(非易失性),编程接口:02h (NVMHCI)

最小存储器页大小 (MPSMIN):0 (4 KB)

最大数据传输大小 (MDTS):至少 5 (128 KB) 或 0(无限制)
LBA 单元:512 字节 或 4096 字节

7. 用户时钟频率必须大于或等于 PCIe 时钟(Gen3 为 250 MHz)

8. 可用参考设计:

带有 AB17-M2FMC 适配器板的 ZCU102

带有 AB18-PCIeX16/AB16-PCIeXOVR 适配器板的 KCU105

带有 AB18-PCIeX16 适配器板的 VCU118

Design Gateway 将 NVMeG3-IP 开发成可以作为 NVMe 主机控制器运行,以访问 NVMe SSD。用户接口和标准特性旨在实现易用性,无需了解 NVMe 协议的相关知识。NVMeG3-IP 的附加特性是内置的 PCIe IP 软核,它能通过纯逻辑实现 PCIe 协议的数据链路层和物理层的某些部分。因此,借助内置的 PCIe IP 软核和 Xilinx PCIe PHY IP 内核,NVMeG3-IP 即可在不带 PCIe 集成块的 FPGA 上运行。Xilinx 的 PCIe PHY IP 是一款可用的免费 IP 内核,包含收发器和逻辑均衡器。

NVMeG3-IP 支持六个 NVMe 命令,即识别、关闭、写入、读取、SMART 和刷新。NVMeG3-IP 中集成了 256 KB 的 BlockRAM,可用作数据缓冲区。该系统无需 CPU 和外部存储器。如需更多详细信息,请查阅 NVMeG3-IP 规格书,可从我们的网站下载此规格书。

XCZU9EG-2FFVB1156E FPGA 器件的 FPGA 资源使用情况,如下表 1 所示。

表 1:Ultrascale/Ultrascale+ 器件的示例实现统计数据

ZCU102 的实现和性能结果

图 4 展示了基于 ZCU102 的参考设计概览,以演示 NVMeG3-IP 的操作。该演示系统中的 NVMeG3IPTest 模块包括以下模块:TestGen、LAxi2Reg、CtmRAM、IdenRAM 和 FIFO。

有关 NVMeG3-IP 参考设计的更多详细信息,请参考 Design Gateway 网站上提供的 NVMeG3-IP 参考设计文档。

图 4:NVMeG3-IP 参考设计概览。(图片来源:Design Gateway)

该演示系统旨在对 ZCU102 上的 NVMe SSD 进行数据写入/验证。用户可通过串行控制台控制测试操作。要连接 NVMe SSD 与 ZCU102,就需要使用 AB17-M2FMC 适配器板,如图 5 所示。

图 5:安装在 ZCU102 上的 NVMeG3-IP 演示环境。(图片来源:Design Gateway)

使用 512 GB 的 Samsung 970 Pro 时,在 ZCU102 上运行演示系统的示例测试结果如图 6 所示。

图 6:使用 Samsung 970 PRO S 时,ZCU102 上 NVMe SSD 的读/写性能。(图片来源:Design Gateway)

总结

NVMeG3-IP 内核提供了一个在 ZCU102 评估套件上实现 NVMe SSD 接口的解决方案;同时也为不含 PCIe 集成块的 Xilinx Zynq UltraScale+ MPSoC 器件系列提供了解决方案。NVMeG3-IP 的设计目标是在不使用 CPU 的情况下,以最低的 FPGA 资源使用量实现 NVMe SSD 访问的最高性能。它非常适合不使用 CPU 的高性能 NVMe 存储,能够利用 GTH 收发器实现多个 NVMe SSD 接口,而不受 FPGA 器件上包含的 PCIe 集成模块数量限制。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22282

    浏览量

    630076
  • 存储器
    +关注

    关注

    39

    文章

    7714

    浏览量

    170799
  • SSD
    SSD
    +关注

    关注

    21

    文章

    3061

    浏览量

    121753

原文标题:在 Xilinx ZCU102 评估套件上实现 NVMe SSD 接口

文章出处:【微信号:FPGA-EETrend,微信公众号:FPGA开发圈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Xilinx高性能NVMe Host控制器IP+PCIe 3.0软核控制器IP,纯逻辑实现,AXI4和AXI4-Stream DMA接口,支持PCIe 3.0和4.0

    、Cache Flush和逻辑数据块擦除功能。NVMe AXI4 Host Controller IP具备DMA Wr/Rd引擎和SQn/CQn引擎,实现对PCIe SSD的DMA读写功能。
    发表于 11-14 22:40

    NVMe高速传输之摆脱XDMA设计45:板资源占用率分析

    测试平台实物连接图分别如图 1 和图 2 所示。 图中 SSD 通过 FMC to M.2 适配器连接到 FPGA 开发板。 图1 ZCU106 连接实物图 图2 VCU709连接实物图
    发表于 11-13 08:36

    NVMe高速传输之摆脱XDMA设计44:工程设计考量?

    连接到pci_exp引脚。 mig_7series 模块为 Xilinx 提供的 DDR 接口控制器, 该模块将 AXI 总线信号转换为 DDR 接口信号实现对 PL 端 DDR 存储
    发表于 11-12 09:52

    NVMe高速传输之摆脱XDMA设计43:如何板验证?

    ZCU106 FPGA 开发板分别搭建并执行测试。 同时为证明 NoP 逻辑加速引擎对不同 SSD 的适配性, 测试选用了三种不同型号的 SSD, 分别是三星970EVO Plu
    发表于 10-30 18:10

    NVMe高速传输之摆脱XDMA设计18:UVM验证平台

    验证的硬核 IP,因此验证过程中可以只使用其接口进行模拟,这将极大减小验证平台复杂度和构建难度,同时对验证的完备性影响较小.验证平台由 UVM 验证包、DUT、AXI BRAM IP 和 NVMe
    发表于 07-31 16:39

    NVMe IP高速传输却不依赖便利的XDMA设计之三:系统架构

    尽可能降低功耗,减少运行中的 I/O 队列数量。 因此, 需要实现动态的队列管理功能, 满足高性能的同时适应不同的应用环境。 具体要求为使用 PCIe3.0 以上接口的高性能固态硬盘的顺序读写数据
    发表于 06-29 17:42

    NVMe协议研究扫盲

    JohnsonZynq挂载NVMe SSD,借助Linux系统中的NVMe驱动程序实现了对
    发表于 06-02 23:28

    NVMe固态和SSD哪个好?一文解析存储技术差异

    SSD(固态硬盘)通过NAND闪存替代机械硬盘的盘片,实现读写速度的飞跃。而NVMe(Non-VolatileMemoryExpress)并非物理硬件,而是一种基于PCIe通道的传输协议。若将
    的头像 发表于 05-21 11:21 2297次阅读

    NVMe协议简要分析

    NVM Express(NVMe)是一种高性能、可扩展的接口协议,用于通过PCI express(PCIe)总线,实现主机软件与NVM设备之间的通信。目前,由于NVMe
    发表于 05-15 00:34

    NVMe协议分析

    NVM Express(NVMe)是一种高性能、可扩展的接口协议,用于通过PCI express(PCIe)总线,实现主机软件与NVM设备之间的通信。目前,由于NVMe
    的头像 发表于 05-15 00:29 2410次阅读
    <b class='flag-5'>NVMe</b>协议分析

    NVMe控制器IP设计之接口转换

    (addr、en、data_db)转换为与AXI PCIe IP模块相连接的AXI4-Lite接口。该模块的主要功能是队列管理模块需要更新SSD内部门铃寄存器时,通过访问BAR空间实现
    发表于 05-10 14:33

    NVME控制器之队列管理模块

    如图1所示。 图1 队列管理模块框图 NVMe协议中,使用队列来传输、缓存和处理命令条目,以实现Host端和NVMe SSD端之间的通
    发表于 05-03 20:19

    NVME控制器设计1

    的相关寄存器来发送 DMA 或队列管理请求, NVMe控制模块得到任务信息后生成对应的 NVMe 命令, 并通过指令提交与完成机制实现NVMe
    发表于 04-24 09:45

    蜂鸟N203移植到xilinx ZCU104板子,用JTAG调试的时出现报错怎么解决?

    求助各位大佬,蜂鸟N203移植到xilinx ZCU104板子,用JTAG调试的时候出现这样的错误 vivado里面跟JTAG有关的约束如下:
    发表于 04-17 06:33

    蜂鸟N203移植到xilinx ZCU104板子,用JTAG调试的时候出现错误怎么解决?

    求助各位大佬,蜂鸟N203移植到xilinx ZCU104板子,用JTAG调试的时候出现这样的错误 vivado里面跟JTAG有关的约束如下:
    发表于 03-07 16:46