基于Nandflash阵列的高速存储技术
2013-09-28张峰
张 峰
(中国西南电子技术研究所,成都610036)
1 引 言
高速数据存储广泛应用于机载高分辨率对地观测和地面对空跟踪测量设备中。以典型大视场面阵CCD数字摄像机为例,按像元数10k×10k(全色),2幅/秒,其单幅图像数据量将达到300 MB/s;而光电精纬仪、高分辨率合成孔径雷达(SAR)成像等地面测量设备能够产生每秒吉比特量级数据,如何完成这些高速数据的实时存储,成为日益紧迫的研究课题。在传统存储方式中,通常选用磁盘(ATA、SATA接口)[1-4]作为存储介质,但磁盘是通过磁头高速旋转与磁道接触实现数据存取,在高空空气稀薄不能提供足够的动力使磁头与磁道充分接触,易丢失数据,限制了这种存储方式在航空航天领域的应用。而本文提出的基于Nandflash阵列的存储方式,不依靠空气动力,是以电信号作为访问方式,存取数据稳定可靠,是航空航天等领域复杂情况下实现高速数据存储的理想选择[5]。国内中科院、清华及北理工等单位也进行了对Nandflash存储技术的研究。
本文提出的高速大容量基于Nandflash阵列的存储方式,充分利用了阵列间的并行流水方式,发挥出了此种方式的读写速度极致,实验表明,存储速度可达900 MB/s,读取速度可达1200MB/s,可完全满足CCD相机及SAR成像G数量级的数据存储需求。
2 高速大容量Nandflash存储阵列硬件设计
与Norflash相比,Nandflash强调降低每比特的成本,并提高数据存储密度,目前主流单片Nandflash容量可达到 8 GB、16 GB或 32 GB,因此,采用Nandlflash阵列实现高速海量数据存储成为可能,并逐渐成为一种趋势。
按照数据采集-缓存-存储-下传的数据流程,存储阵列硬件设计考虑如下。
(1)数据采集
采用多通道FC光纤接口,作为数据输入端,目前主流FC速度可达到2 Gb/s及4 Gb/s,若以四通道FC接口,则数据输入总速度可达8Gb/s或16 Gb/s,考虑8B/10B变换及协议包开销,有效数据速率在6.0~12 Gb/s之间,可满足高分辨率高帧频CCD相机和SAR成像数据采集带宽需求。
(2)数据缓存
采用乒乓交叉缓存技术[6],保证相机数据的实时连续采集与存储,存储器可采用DDR2或DDR3,数据位宽以64位或32位为宜。
(3)数据存储
采用Nandflash阵列为存储介质,以每组8片或4片为宜,与乒乓缓存的数据位宽对应。若以8组Nandflash组成一个存储阵列(称为存储阵列A),则需要Nandflash颗粒为8×8=64个,可考虑有多个存储阵列,分别为存储阵列B、C、D。存储阵列个数以实际工程项目需求为主,并考虑数据的冗余及备份。
(4)数据下传
采用CPCIE接口或网络,若采用CPCIE接口,可将存储模块视为一个CPCIE总线的外设板,通过交换板与其他功能模块实现数据交互;若采用网络接口传输数据,增加了存储阵列的灵活性,但网络接口下传速度慢(千兆网利用率最高约80%,即80 MB/s左右)。
基于以上考虑,设计的高速大容量Nandlflash存储阵列如图1所示。存储模块共由两个Nandflash阵列组成,每一个存储阵列含有8组共64片Nandflash颗粒 ,缓存 DDR2为 64位 、512 MB 、266 MHz工作时钟;每个存储阵列含有二通道FC接口,实现数据输入;四通道CPCIE接口,实现数据输出;一个网络接口,用于接收命令或下传数据;Flash用于存储阵列的坏块(Bad Block)信息。两个存储阵列之间通过高速串行总线如FC、PCIE、SRIO接口以及多路LVTTL电平信号进行数据交互,实现存储阵列间的数据同步。
图1 高速大容量Nandflash存储阵列硬件框图Fig.1 The structure of Nandflash-based arrays recoring system
3 高速大容量Nandflash存储阵列软件设计
软件设计主要在FPGA内实现各种功能接口,下面分别介绍。
(1)数据采集
在FPGA内实现光纤FC接口控制器。此处可基于FPGA内自带的高速串行收发器GTX,实现FC协议;例如一个先进先出缓存器FIFO(称为FIFO-A),FIFO-A数据位宽为64位,深度为1024。FIFOA的数据输入端接FC接口,用于接收经FC接口进入FPGA内的数据;FIFO-A数据输出端接乒乓缓存DDR2控制器。
(2)数据缓存
在FPGA内实现乒乓缓存DDR2控制器[7]。DDR2控制器利用Xilinx公司的IP core generater产生,在产生过程中,配置DDR2数据位宽为64位,时钟为266MHz,使能差错校验(ECC),突发长度为4 byte,信号电平为SSTL18-ClassII;FIFO(称为FIFOB),FIFO-B数据位宽64位,深度为1024。FIFO-B的数据输入端接DDR2控制器,数据输出端接Nandflash,按照Nandflash的分组Group1~Group8,分别接到FIFO-B的数据位,如Group1接FIFO-B数据位Data0~data7,Group2接FIFO-B数据位Data8~data15,Group8接FIFO-B数据位Data56~data63。
(3)数据存储
在FPGA内用硬件逻辑语言VHDL实现存储介质Nandflash阵列控制器。Nandflash阵列按组(Group)分布,每组8片,共8组。组内地址数据线共用,控制信号共用,组内数据并行存储,组间采用串行流水结构,提高数据存储速率;在FPGA内实现Norflash控制器,Norflash用于存储并映射Nandflash的坏块信息,Nandflash颗粒为 4 GB,16384个块(Block),每一个块对应Norflash中的一个地址,若为坏块,则相应数据置1(高电平);反之,置0;当DDR2中的数据写入到Nandflash存储阵列时,需先查询坏块映射表,若对应的地址数据为0,表示Nandflash中的对应块可以将数据写入;若数据为1,表明Nandflash中的对应块是坏块,需要跳过,并将数据写入到下一个非坏块。如何设计并映射坏块信息是软件实现的难点。
(4)数据下传
在FPGA内实现CPCIE控制器。CPCIE协议即为PCIE协议,是对PCIE协议的机械结构加强,可利用FPGA内带的PCIE End Point硬核简化工程难度。若采用网络接口实现数据下传,则可利用FPGA中内嵌的网络硬核。数据下传完毕后,可供其他功能模块进行分析、判读、处理、回放。
4 测试结果
实验条件如下。
(1)Nandflash存储阵列性能指标:FPGA为XC5VFX70T-1136,Nandflash为K9WBG08U1M 。
(2)测试环境指标:PC机CPU为Pentium(R)Dual-Core E5200@2.50 Hz,内存2GB,操作系统Windows XP Professional Service Pack 3,ISE版本10.1.03。
实验数据来自程序产生的模拟数据,通过写满Nandflash阵列存储后,再读出,并比较数据完整性。表1列出了测试出的系统主要性能,表中值为10次实验平均值。
表1 系统性能Table 1 System performance
结果分析,基于Nandflash阵列的存储方式相比于硬盘存储方式,就存储速度而言,有很大的提高;因为所有接口均以硬件语言VHDL实现,减少了对操作系统的依赖,同时也降低了存储阵列的配置灵活性。下一步考虑在FPGA中内嵌的PowerPC440上加载操作系统,以增加系统的灵活性。基于Nandflash阵列实现的高速存储已在某星载项目中实现应用与验证。
5 结束语
本文研究设计的高速大容量Nandflash存储阵列,主要利用了Nandflash高密度存储的优点,以阵列方式满足了大容量存储要求,以并行流水方式,实现了高速存储。设计中的主要难点在于对坏块信息的管理与映射。文中不仅实现了Nandflash阵列的控制器,还基于FPGA内嵌高速收发器实现了FC及PCIE协议,以及网络通信功能。由于本文提出的存储方案在速度及抗振动方面的优异表现,在宽带及卫星通信中有广泛的应用前景。下一步的工作考虑在数据存储后,实现图像数据的实时压缩,供数据的判读、回放或其他处理。
[1]李志鹏.连续数据记录系统中IDE数据接口的实现[J].无线电工程,2010,40(2):48-50.LI Zhi-peng.Implementation of IDE Interface in Sustained Data Recording System[J].Radio Engineering,2010,40(2):48-50.(in Chinese)
[2]张峰.基于SATA的高速CCD存储方案设计[J].半导体光电,2010,31(5):782-786.ZHANG Feng.A High-speed Method of CCD Image Data Storage System Based on SATA[J].Semiconductor Opto-Electronics,2010,31(5):782-786.(in Chinese)
[3]赵涛.基于SCSI总线的高速数据存储系统软件设计[J].现代电子技术,2008(14):59-62.ZHAO Tao.Software Design of High Speed Data Storage System Based on SCSI Bus[J].Modern Electronic Technology,2008(14):59-62.(in Chinese)
[4]ZHANGFeng,WU Qin-zhang,REN Guo-qiang.A High-speed Method of CCD Image Data Storage System[C]//Proceedings of 2010 Second International Conference on Advanced Computer Control.Shenyang:IEEE,2010:45-48.
[5]王烨,张峰,李燕斌.SATA高速存储的FPGA实现[J].电讯技术,2012,52(11):1801-1804.WANG Ye,ZHANG Feng,LI Yan-bin.A high-speed recording system of SATA based on FPGA[J].Telecommunication Engineering,2012,52(11):1801-1804.(in Chinese)
[6]张峰.基于SRIO的高速图像串行传输系统设计[J].光电工程,2010,37(10):89-92.ZHANG Feng.A High-speed Serial Transport Platform Based on SRIO for High-resolution Image[J].Opto-Electronic Engineering,2010,37(10):89-92.(in Chinese)