《国产fpga nvme ip高速存储方案设计_fpga 高速存储-CSDN博客》
《国微pcie switch 8748高速存储方案设计_国产pcie switch-CSDN博客》
《FPGA NVME高速存储设计_690t fpga-CSDN博客》
《zynq多host高速存储方案设计_zu11eg-CSDN博客》
《zynq nvme高速存储之ext4文件系统_zynq pcie-CSDN博客》
《ftp/nfs卸载自定义文件系统数据_windwos nfs存储删除-CSDN博客》
《PCIe+Switch高速存储方案设计_pcie switch-CSDN博客》
《zynq/nvme/ext4/fpga高速存储设计_zynq实现大容量存储-CSDN博客》
《linux内核零拷贝技术_linux内核数据拷贝-CSDN博客》
《linux系统raid0测试实验_raid0实验-CSDN博客》
《全网最全PCIe枚举算法分析(以ZYNQ平台实例讲解)_pcie 枚举-CSDN博客》
国产高速存储方案主要是使用nvme ip实现高速存储方案,nvme ip采用纯verilog语言实现,用户拿到nvme ip使用起来也很简单。
先看看效果如
zu7eg板子,这个芯片支持pcie3.0 x4.
zynq 7045板子只支持pcie 2.0 x4
速度测试,测试nvme ip的代码采用c语言,在zu板卡上再ps端跑测试代码,测试性能如下所示。
zu7eg测试速度如下:
zynq7045测试速度如下:
ssd是990 pro
ssd 970 evo
nvme ip bd工程如下所示,注意到这个bd工程搭建了arm核,这个核仅仅是用于测试nvme ip的测试代码,用户正式使用时可以换成自己的verilog代码。
zu7eg 使用ps测试的bd工程
zu7eg资源使用情况
zynq7035使用mb软核作为测试的bd工程如下:
zynq7035资源使用情况
nvme协议分析
nvme协议初始化
nvme io命令分析
nvme ip接口
nvme 提供了admin管理命令读写接口,用户通过填充admin sq buff实现发送命令,通过polling cq寄存器确认该命令是否完成。
nvme提供了io命令,io命令提供了lba,command id,len,opcode,prp地址等寄存器,用户填充这些命令后,通过trigger寄存器实现命令发送,nvme ip实现了qd128队列深度,用户通过polling寄存器找到空闲 的queue node实现sq的填充。通过polling cq完成寄存器确认 某个command id命令是否完成。
nvme ip支持如下命令