本文完成了基于FPGA的大容量存储模块硬件电路的设计,同时探讨了如何利用FPGA丰富的逻揖资源来实现NVMe协议,并且将数据RAID 0方式实时写入SSD阵列,使CPU能通过PCIe接口访问固态存储系统。
本文充分利用FPGA可编程和硬件加速的特性,设计并实现了多块SSD的并行存储控制器。控制模块可以通过FPGA并行访问多块SSD,实现增大存储容量和提高存取速度的目的。
固态存储器简称为SSD,分为基于闪存的SSD和基于DRAM的SSD两种,分别使用Flash和DRAM作为存储介质。SSD在读写数据时,不需要读写头、不需要存储介质转动,通过控制存储芯片内部晶体管的开关状态来存储数据。新一代的固态硬盎普遍采用SATA2接口、SATA3接口、SAS接口、U.2接口、PCIe接口、M.2接口和CFast接口等。
作为主机控制接口,NVMe能够提供优化的命令提交和完成路径。它支持并行操作数据,最多支持64K个I/O队列,毎个I/O队列最多有64K个命令。管理命令队列最多可以有4K个命令。主机软件创建队列的个数应基于系统配置和预期工作负载。NVMe是基于成对的SQ和CQ机制,多个SQ可以利用同一个CQ。主机将一个或多个命令项写入SQ队列后之后,驱动程序将SQ队列的尾指针写入控制器相应的门铃寄存器,控制器发起DMA操作从SQ队列中顺序取出命令项,解析并执行相应的命令,但是控制器执行命令的顺序不一定与命令在SQ队列中的顺序相同。每一个提交队列命令项都严格遵守NVMe协议命令格式,大小为64B,其中包含两个PRP项,表示存放主机存储空间中的数据页的地址。NVMe协议支持MSI/MSI-X和中断聚集以便一次处理多个I/O完成命令。NVMe SSD已经在工业中得到应用。相比传统接口(SAS SATA)的SSD,NVMe SSD更具性能优势,需要更高的I/O化能的