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

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

3天内不再提示

基于FPGA实现NVME控制器

OpenFPGA 来源:OpenFPGA 2023-09-19 10:43 次阅读

NVME

NVM Express ( NVMe ) 或 Non-Volatile Memory Host Controller Interface Specification( NVMHCIS ) 是一种开放式逻辑设备接口规范,用于访问通过PCI Express总线连接的计算机非易失性存储介质。NVM 的缩写代表非易失性存储器,通常是 NAND 闪存,具有多种物理外形,包括固态驱动器(SSD)、PCIe 附加卡和M.2( mSATA的后继者 )。

从架构上讲,NVMe 逻辑物理存储在 NVMe 控制器芯片内并由该芯片执行,该芯片与存储介质(通常是 SSD)物理位于同一位置。NVMe 的版本更改(例如 1.3 到 1.4)已合并到存储介质中,并且不会影响主板、CPU 等 PCIe 借口兼容组件。

6003ca6e-5695-11ee-939d-92fbcf53809c.png

SATA和NVME外形区别 图片来源:金士顿官网

FPGA实现NVME

NVMe协议基于PCIe协议之上实现NVMe Host与NVMe SSD之间高速数据通信。FPGA实现的简单架构如下:

600ca1c0-5695-11ee-939d-92fbcf53809c.png

FPGA实现NVME控制(图片来源见水印)

下面介绍几个NVME协议的实现的开源项目。

OpenSSD+nvme storage

介绍

OpenSSD的发展历史如下:

601f7106-5695-11ee-939d-92fbcf53809c.png

nvme_comp_storage项目是基于OpenSSD的存储系统,详细的架构如下:

60286ba8-5695-11ee-939d-92fbcf53809c.png6037c706-5695-11ee-939d-92fbcf53809c.png

两个项目都有异常详细的文档介绍,链接如下:

其中OpenSSD是有官方网址的,截止发文前,官网访问受限~

antmicro for nvme

该项目和上面项目类似,唯一的区别就是该项目从底层PCIe到顶层所有的代码都是自己写的(在PCIe项目中有介绍),不想借助官方IP的项目,这个项目很具有借鉴意义。

6041f294-5695-11ee-939d-92fbcf53809c.png

该项目介绍的非常项目,就不赘述了。

NVMe

604dc768-5695-11ee-939d-92fbcf53809c.png

介绍

本项目基于AMD-XILINX FPGA XDMA的NVME控制器,详细的文件架构如下:

NVMe/
├──hw/(RTLcodes)
│├──COMSTRAINTS/(Constraints:Boardconnections)
│├──IP/(IPs:ILA,XDMAIP,Boarddesign)
│├──RTL/(NVMeHardwareDriverRTLcodes)
│├──scripts/
│├──SIM/
│└──SYNTH/(NVMeHardwareDriverProjectdirectories)
├──sw/(NVMesuFileLibrary)
├──SIM/
├──README.md
├──LICENSE
└──CMakeLists.txt

具有硬件加速功能的 NVMe 控制器

介绍

NVMeCHA 是一款超低延迟和高吞吐量的 NVMe 控制器,具有高度并行、流水线和可扩展的架构,具有一个管理控制器和多个完全硬件自动化的 I/O 控制器。管理控制器采用软硬件协同设计,其中 NVMe 管理命令的复杂处理由软件管理,而 PCIe 上的数据传输由硬件处理。这种混合架构结合了软件灵活性和硬件效率,减少了 CPU 资源并提高性能。I/O控制器采用高度并行和流水线的硬件架构设计,允许并行处理许多NVMe I/O命令,而无需任何软件干预。每个I/O控制器对应一个NVMe I/O队列对。

该项目在 Xilinx KCU105 FPGA 板上进行验证,该板通过 PCIe gen3 x8 接口连接到计算机。通过SPDK-Perf基准测试工具进行评估,该NVMe控制器的最大读写带宽均可达到7.0GB/s,占理论PCIe带宽的89%。最大4KB大小的读/写吞吐量可以达到每秒170万次I/O操作(MIOPS)。4KB大小的平均读/写延迟仅为2.4μs/3.2μs。

该项目也进行论文发表: IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,doi:10.1109/TCAD.2021.3088784。

pl-nvme

介绍

这个项目也和上面项目类似,不过性能没有上面的架构强。

该项目包含 Dune NvmeStorage 系统的源代码以及简单的NVMe测试环境,允许使用低级Xilinx FPGA进行接口验证。

包含FPGA源代码、仿真环境或 Nvme 测试 FPGA 固件以及 nvme_test 主机软件。

总结

NVME部分因为基本和FPGA PCIe息息相关,所以基本和PCIe项目同时出现,对于想从底层开始实现的,强烈建议 antmicro 项目。

最后,还是感谢各个大佬开源的项目,让我们受益匪浅。后面有什么感兴趣方面的项目,大家可以在后台留言或者加微信留言,今天就到这,我是爆肝的碎碎思,期待下期文章与你相见。

审核编辑:汤梓红

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

    关注

    1625

    文章

    21663

    浏览量

    601654
  • 闪存
    +关注

    关注

    16

    文章

    1775

    浏览量

    114801
  • 控制器
    +关注

    关注

    112

    文章

    16185

    浏览量

    177329
  • Verilog
    +关注

    关注

    28

    文章

    1343

    浏览量

    109970
  • nvme
    +关注

    关注

    0

    文章

    217

    浏览量

    22580

原文标题:优秀的 Verilog/FPGA开源项目介绍(三十九)- NVMe

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于FPGA的模糊PID控制器的设计实现

    本文主要详解基于FPGA的模糊PID控制器的设计实现,首先介绍了FPGA工作原理、基本特点以及FPGA的优势,其次阐述了使用Altera的
    的头像 发表于 06-01 09:26 1.7w次阅读

    Xilinx FPGA NVMe Host Controller IP,NVMe主机控制器

    Gen2 SSDØ无需CPU和外部存储Ø自动实现对PCIe SSD的PCIe设备枚举、NVMe控制器识别和NVMe队列设置Ø支持对PCI
    发表于 02-21 10:16

    Xilinx FPGA NVMe主机控制器IP,高性能版本介绍应用

    SSDØ无需CPU和外部存储Ø自动实现对PCIe SSD的PCIe设备枚举、NVMe控制器识别和NVMe队列设置Ø支持对PCIe SSD
    发表于 03-09 13:56

    Xilinx FPGA高性能NVMe SSD主机控制器NVMe Host Controller IP

    FPGAØ支持PCIe Gen4,PCIe Gen3,PCIe Gen2 SSDØ无需CPU和外部存储Ø自动实现对PCIe SSD的PCIe设备枚举、NVMe
    发表于 03-27 17:23

    高性能NVMe主机控制器,Xilinx FPGA NVMe Host Accelerator IP

    FPGAØ支持PCIe Gen4,PCIe Gen3,PCIe Gen2 SSDØ无需CPU和外部存储Ø自动实现对PCIe SSD的PCIe设备枚举、NVMe
    发表于 04-10 22:55

    高性能NVMe主机控制器,Xilinx FPGA PCIe 3

    ,Ultrascale,7 Series FPGAØ支持PCIe Gen4,PCIe Gen3,PCIe Gen2 SSDØ无需CPU和外部存储Ø自动实现对PCIe SSD的PCIe设备枚举、
    发表于 04-20 14:41

    Flashtec NVMe 3108 PCIe第四代NVMe固态硬盘控制器怎么样?

    )新推出的企业和数据中心固态硬盘外形尺寸(EDSFF) E1.S等行业标准,采用体积更小、且支持第四代PCIe的非易失性存储高速(NVMe)固态硬盘。  这些固态硬盘要求控制器具备体积小和低功耗的特点
    发表于 11-23 06:10

    NandFlash控制器FPGA实现方法技巧

    NandFlash控制器FPGA实现方法技巧与程序案例分享。
    发表于 09-21 09:40 78次下载

    使用Verilog实现基于FPGA的SDRAM控制器

    摘 要:介绍了SDRAM的特点和工作原理,提出了一种基于FPGA的SDRAM控制器的设计方法,使用该方法实现控制器可非常方便地对SDRAM进行控制
    发表于 06-20 13:04 2172次阅读

    基于FPGA的VGA图像控制器的设计与实现

    基于FPGA的VGA图像控制器的设计与实现
    发表于 08-30 15:10 13次下载

    如何使用FPGA实现HDLC协议控制器

     为了实现军航管制系统中雷达数据的可靠传输,根据HDLC协议的帧结构和循环冗余校验(CRC)原理,提出了一种新型的基于并行机制的HDLC协议控制器,讨论采用FPGA新技术实现HDLC协
    发表于 11-04 18:04 15次下载
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>实现</b>HDLC协议<b class='flag-5'>控制器</b>

    实现基于FPGA的SPIFlash控制器设计

    实现基于FPGA的SPIFlash控制器设计(嵌入式开发工作怎么样)-该文档为实现基于FPGA的SPIFlash
    发表于 07-30 09:10 5次下载
    <b class='flag-5'>实现</b>基于<b class='flag-5'>FPGA</b>的SPIFlash<b class='flag-5'>控制器</b>设计

    基于FPGA的SDRAM控制器的设计与实现简介

    基于FPGA的SDRAM控制器的设计与实现简介(嵌入式开发工程师和基层公务员)-该文档为基于FPGA的SDRAM控制器的设计与
    发表于 07-30 09:34 11次下载
    基于<b class='flag-5'>FPGA</b>的SDRAM<b class='flag-5'>控制器</b>的设计与<b class='flag-5'>实现</b>简介

    步进电机控制器FPGA实现

    电子发烧友网站提供《步进电机控制器FPGA实现.pdf》资料免费下载
    发表于 10-07 16:29 1次下载
    步进电机<b class='flag-5'>控制器</b>的<b class='flag-5'>FPGA</b>的<b class='flag-5'>实现</b>

    Xilinx FPGA NVMe控制器NVMe Host Controller IP

    NVMe Host Controller IP可以连接高速存储PCIe SSD,无需CPU和外部存储,自动加速处理所有的NVMe协议命令,具备独立的数据写入AXI4-Stream/FIFO接口和数
    的头像 发表于 02-18 11:27 842次阅读
    Xilinx <b class='flag-5'>FPGA</b> <b class='flag-5'>NVMe</b><b class='flag-5'>控制器</b>,<b class='flag-5'>NVMe</b> Host Controller IP