前面文章讲解了《zynq高速存储方案》,那种方案是针对单个pcie host设计的方案,当项目需求记录速度很高,并且没有国产化要求时,可以考虑使用Zynq UltraScale+ 系列的ZU11EG芯片,该芯片成本低,且支持4个PCIe硬核,可以将该4个pcie都配置成host模式,在每个host下挂载pcie 3.0 x4的SSD固态硬盘,这样每个pcie host能够跑的速率就是ssd盘能够支持的最大速率,如果选择三星的SSD盘,那么PCIe3.0 x4读写速率能够到3GB/s,那么4个pcie host的理论速度就能够到达12GB/s,NVME协议还是通过软件实现,这里4张SSD可以独立存储或者组成Raid0阵列,具体怎么用就看用户的具体需求,常见设计如下图所示。
如上图所示,FPGA接收到数据后直接下盘,对于NVME协议解析和文件系统部分就放到CPU端处理,CPU和FPGA相互配合完成整个数据存储过程,这种方案不方便国产化,因为Zynq UltraScale目前市场上没有国产化的支持,同时该方案不方便可移植性,当客户对容量有要求时,该方案不方便扩盘。所以不同方案只有在特定的需求中使用,建议使用Switch存储方案。
MicroBlaze使用
这种方案对host的个数是固定的,可以尝试不让CPU参与,用FPGA内部硬核MicroBlaze处理器初始化PCIe的基本配置,解析NVME协议,这种方式使用也很方便,不需要枚举PCIe树。用该方案局限性在于对FPGA的更换,当更换FPGA后,对于MicroBlaze处理器可能不完全兼容,所以这种方式处理局限性很大。
NVME IP使用
作者已经完成纯Verilog语言对NVME协议解析,支持多队列,队列深度可配,软件对NVME IP操作比较简单,结构框图如下图所示。
FPGA做存储
仅仅用FPGA做存储,这种方案硬件成本是最低的和方便国产化,单但是软件成本是很高,不方便移植,对FPGA人员开发能力要求高。FPGA解析TCP网络协议与上位机通讯,解析NVME协议,编写文件系统,FPGA实现这个每一个功能都是很复杂的,但是完成后对硬件成本和国产化确实很有帮助。反正就是不同方案用于不同应用场景。
目前FPGA已经完成TCP和UDP网络协议,万兆网TCP协议速度能够到600MB/s,现在购买10Gb的MAC用也是很方便,将10Gb的MAC挂载到PCIe交换机上,速度也是杠杠的。NVME协议和文件系统都已经完成。