专利名称:基于fpga的高速存储与传输装置的制作方法
技术领域:
本发明涉及一种基于FPGA的高速存储或读取数据的方法及装置,采用大规模现场可编程门阵列FPGA(Field programmable gate array)作为实现平台,实现数据的存储 与传输。在FPGA中实现RAID控制器和SATA控制器并组成存储阵列,并且可以通过caml ink 接口,光纤接口或者PCIE接口与外界交换数据。本发明涉及计算机领域,存储领域和嵌入 式系统,该装置可以广泛应用于图像记录和高速数据采集系统,以及系统仿真。
背景技术:
存储技术在计算机发展中始终是一个关键技术。其技术特性决定了计算机的数据 存储性能,进而决定了计算机的整体性能以及应用环境。近年来随着数字图像和数字采集 技术的发展,高速存储技术扮演着越来越重要的角色。现有的存储技术存在以下问题1、基于专用集成电路(ASIC)的RAID控制器和SATA控制,灵活性低,升级困难, PCB(Printed Circuit Board)面积大,很难实现设备小型化;2、RAID控制器和SATA控制是基于总线的,命令、状态信息和数据都通过总线传 输,数据传输的有效带宽低;3、输入输出接口单一,无法满足不同场合的应用需求;4、同一个内存既用来存放运行时的软件代码又用来作为高速数据缓存,没有将两 者从物理上分开,导致高速缓存单元成为高速数据存储的又一个瓶颈。
发明内容
本发明提供一种基于FPGA的高速存储或读取数据的方法及装置,所述方法和装 置优化了系统架构,提高了高速数据缓存的带宽和性能,从而提高了高速存储的带宽。本发明提供一种基于FPGA的高速存储或读取数据的方法,所述方法包括通过PLB总线向输入输出模块(4)发送接口选择命令和配置信息,所述输入输出 模块(4)选择对应的接口形式,然后将接口配置好,配置结束后将输入输出模块(4)中的配 置结束标志位置1。所述向输入输出模块(4)发送的命令和配置信息具体包括接口选择 命令,输入/输出接口的通道个数,工作模式,数据位宽,接口缓冲区大小。本发明实施方式提供一种基于FPGA的高速存储或读取数据的方法,所述方法还 包括通过PLB总线向RAID控制器(1)发送RAID级别选择命令和配置信息,所述RAID 控制器(1)选择对应的RAID级别,然后配置好SATA控制器组(2)中的各个SATA控制器, 配置结束后将RAID控制器(1)中的配置结束标志位置1。所述向RAID控制器(1)发送的 命令和配置信息具体包括RAID级别,条带化参数(条带化参数指的是将数据分割成相同 大小的数据块分别写入磁盘阵列中不同硬盘时确定该数据块大小的值),磁盘管理参数,控 制器个数,硬盘个数。
本发明实施方式提供一种基于FPGA的高速存储或读取数据的方法,所述的RAID 控制器(1)存储数据的具体步骤包括A、命令解析模块2 (103)解析从PLB总线接收的命令和配置信息;B、从输入输出模块(4)接收数据并写入第i个缓冲区(105)缓冲区_i,同时数据 计数模块(107)对写入缓冲区」的数据量进行计数;C、由第i个NPI接口控制器接口控制_i (108)将第i个缓冲区(105)缓冲区_i 中的数据通过NPI接口传给多端口存储器控制器组(3)中的第i个多端口存储器控制器 MPMC_i,同时协调模块(106)内部的计数器对传给多端口存储器控制器组(3)的数据量进 行计数;D、MPMC_i负责将数据写入存储单元_2 (9)中;E、当协调模块(106)内部的计数器的计数值达到L时,协调模块(106)产生脉冲 信号通知SATA控制器组(2)的第j个SATA控制器SATA_ctrl_j将刚刚写入存储单元_2(9) 中缓存的L个字节的数据写入磁盘阵列(10)中,随即将协调模块(106)内部计数器的计数 值清零,改变j的值,重复上面E步骤,直到所有数据都存储结束;F、当数据计数模块(107)计数值达到K时,数据分配与组合模块(104)将输入输 出模块(4)接收的数据写入第i+Ι个缓冲区(105)(缓冲区_i+l),随即将数据计数模块 (107)计数值清零;G、重复上面B到F步骤,直到所有数据都存储结束。所述L和K都是参数,是软件 可读可写的。本发明实施方式提供一种基于FPGA的高速存储或读取数据的方法,所述的RAID 控制器(1)读取数据时的具体步骤包括A、命令解析模块2 (103)解析从PLB总线接收的命令和配置信息;B、数据分配与组合模块(104)根据存储时的分配策略控制协调模块(106)依次产 生信号通知SATA控制器组(2)的N/M个SATA控制器将磁盘阵列(10)中某个逻辑地址处 的K个数据读出;C、读出的数据会分别通过N/M个SATA控制器的NPI接口传送到多端口存储器控 制器组(3)中的第i个多端口存储器控制器MPMC_i ;D、由第i个多端口存储器控制器MPMC_i将K个数据写入存储单元_2 (9)中缓存;E、数据分配与组合模块(104)依次通过第i个NPI接口控制器接口控制_i将存 储单元_2(9)中缓存的K个数据读出并且写入第i个缓冲区(105)缓冲区」缓存,随即将 这些数据发送给输入输出模块(4),由输入输出模块(4)将数据传输给其它板卡/装置等;F、改变i的值,重复上面B到E步骤,直到所有数据都读取完并传输结束;所述L 和K都是参数,是软件可读可写的。本发明实施方式提供一种基于FPGA的高速存储或读取数据的装置,该装置包括输入输出模块⑷该模块具有三种输入输出接口形式=Camlink接口,PCIE接口, 光纤接口。可以通过这三种接口形式以及它们任意的组合形式来传入传出数据;RAID控制器⑴当存储数据时,根据接收到的命令和配置信息将来自输入输出 模块(4)的数据按照某种分配策略分配给多端口存储器控制器组(3),由多端口存储器控 制器组(3)负责将数据写入存储单元_2 (9)缓存,然后控制SATA控制器组(2)将存储单元_2(9)中缓存的数据写入磁盘阵列(10);当读取数据时,根据存储时的分配策略采用对 应的数据组合策略,首先控制SATA控制器组(2)将磁盘阵列(10)中的数据写入存储单元 _2(9)中缓存,然后RAID控制器(1)控制多端口存储器控制器组(3)将存储单元_2 (9)中 缓存的数据依次顺序读出,并将数据传递给输入输出模块(4),由输入输出模块(4)将数据 传输给其它板卡/装置等;多端口存储器控制器组(3)由M(M取值为1,2,3或者4)个多端口存储器控制器 (MPMC)组成,每个MPMC的端口数目是可以配置的(端口数为1到8个),每个端口可以配 置成INACTIVE/XCL/PLB/SDMA/NPI/PPC440MC/VFBC接口形式。MPMC可以同时仲裁全部八个 端口,从而有效利用存储器。MPMC可以控制8/16/32/64位的SDRAM/DDR/DDR2存储器,多端 口存储器控制器(MPMC)可以是xilinx公司提供的MPMC存储器控制器,也可以是自己开发 的与其功能类似的存储器控制器;存储单元—2 (9)由多个存储器芯片按某种扩展方式组合而成的,存储芯片可以 是SDRAM/DDR/DDR2类型的存储器,随扩展方式的不同,其位宽可以是8/16/32/64位,其接 口形式可以是DIMM或者SODIMM插槽,也可以是存储芯片直接焊接在FPGA周围;SATA控制器组(2)由N(N取值为1到24)个SATA控制器组成,即是SATA_ctrl_l 到SATA_ctrl_N,每个SATA控制器都通过PLB总线与嵌入式处理器(6)连接,通过NPI接口 与多端口存储器控制器组(3)连接。PLB总线实现SATA控制器组(2)与嵌入式处理器(6) 之间控制信息和状态信息的交换,NPI接口实现SATA控制器(2)与存储单元_2(9)之间数 据的交换。存储数据时,根据接收到的命令和配置信息从存储单元_2(9)中指定的起始地 址处读取指定数量的数据,然后写入磁盘阵列(10)中指定的逻辑地址处,读取数据时,按 照软件的设置从磁盘阵列(10)中指定的逻辑地址处读取指定数量的数据,然后写入存储 单元_2(9)中指定的起始地址处;RocketIO (5)是集成在FPGA内的硬核,该模块又称为千兆位级收发器,串行传输 的速度在150Mbps 11. 18Gbps,支持PCIE,SATA,FC,SRI0,infiniband等多种高速串行协 议,主要功能包括8B/10B编码/解码,串并/并串转换,逗点检测,时钟修正,预侧重和线性 均衡等;嵌入式处理器(6)该模块可以是FPGA内嵌的硬核PPC405或者是PPC440,也可以 是软核 microblaze ;存储器控制器模块(7)该模块既可以是xilinx公司提供的存储器控制器xps_ mCh_emC或MPMC或ppc440mc_ddr2,也可以是自己开发的与它们功能类似的存储器控制器, 只要该存储器控制器能够控制存储器进行数据读取/存储即可。XpS_mCh_emC可以控制 SRAM和Flash存储器,其位宽可以是16/32/64位。XpS_mCh_emC的端口数目是可以配置的 (端口数为0到4个),接口形式可以是PLB或MCH或PLB和MCH的组合。MPMC同多端口存 储器控制器组(3)中的MPMC—样。Ppc440mc_ddr2,支持16/32/64位数据宽度和拥有ECC功 能的72位数据宽度的DDR2SDRAM存储器,该模块通过Memory Controller Interface (MCI) 与嵌入式处理器PPC440的PPC440MC接口连接;存储单元_1 (8)由多个存储器芯片按某种扩展方式组合而成的,存储芯片可以 是DDR2/SRAM/FLASH类型的存储器,随扩展方式的不同,其位宽可以是16/32/64位,其接口 形式可以是DIMM或者SODIMM插槽,也可以是存储芯片直接焊接在FPGA周围;
磁盘阵列(10)可以是具有SATA接口的HDD硬盘(又称机械硬盘)或者是SSD硬盘(又称固态硬盘),还可以是具有SATA接口的存储板卡或者存储装置;FPGA加载、配置模块(11)完成FPGA比特流的存储和加载。本发明实施方式提供一种基于FPGA的高速存储或读取数据的装置,该装置的输 入输出模块⑷还包括camlink接口模块(401)实现camlink接口的数据输入或者输出。该模块由 IPIFO (4011)和 USR_L0GIC0(4012)组成,USR_L0GIC0 (4012)又由命令解析模块 0 (4013), camlink接口控制器0(4014),缓冲区0(4015),读写控制模块(4016)组成。IPIFO (4011) 实现PLB接口协议,命令解析模块0 (4013)用来解析嵌入式处理器通过PLB接口传递的命 令和控制信息,并将执行结果状态信息等通过PLB总线传递给嵌入式处理器。camlink接口 控制器0(4014)用来实现camlink协议。缓冲区0(4015)用来缓存输入或者输出的数据。 读写控制模块(4016)实现缓冲区的读写控制,通过本地总线实现与RAID控制器(1)的数 据交换。当存储数据时,相机/采集卡/采集装置等输出的数据从camlink接口输入该装 置,当读取数据时,该装置可以通过camlink接口将接收的、存储的或按照某种算法产生的 数据发送给其它板卡/装置等。camlink接口由三个camlink插头组成,这三个插头可以 配置成①一个ful 1模式接口加上一个base模式接口或②一个midl Ie模式接口加上一个 base模式接口或③两个base模式接口 ;光纤接口模块(402)实现光纤接口的数据输入或者输出。该模块由IPIFl (4021) 和USR_L0GIC1 (4022)组成,USR_L0GIC1 (4022)又由命令解析模块1 (4023),光纤接口控制 器1(4024),缓冲区1(4025),读写控制模块(4016)组成。IPIFl (4021)实现PLB接口协议, 命令解析模块1 (4023)用来解析嵌入式处理器通过PLB接口传递的命令和控制信息,并将 执行结果状态信息等通过PLB总线传递给嵌入式处理器。光纤接口控制器1(4024)用来实 现光纤协议。缓冲区1(4025)用来缓存输入或者输出的数据。当存储数据时,采集卡/采 集装置等输出的数据从光纤接口输入该装置,当读取数据时,该装置可以通过光纤接口将 接收的、存储的或按照某种算法产生的数据发送给其它板卡/装置等。光纤接口共有四个 通道,这四个通道可以配置成4个单通道模式,2个双通道(将2个单通道捆绑成1个双通 道)模式,1个四通道(将4个单通道捆绑成1个四通道)模式;PCIE接口模块(403) =PCIE接口的数据输入或者输出。该模块由PLBV46 Endpointbridge (4031)和PCIE core (4032)组成。当存储数据时,采集卡/采集装置等输 出的数据从PCIE接口输入该装置,当读取数据时,该装置可以通过PCIE接口将接收的、存 储的或按照某种算法产生的数据发送给其它板卡/装置等。PCIE接口共有四个通道,这四 个通道可以配置成XI,X2,X4模式。本发明实施方式提供一种基于FPGA的高速存储或读取数据的装置,该装置的 RAID_ctrl (1)还包括IPIF2(101)用于实现PLB总线协议,该模块包括独立的主设备/从设备附属逻 辑,既能够作为主设备又可以作为从设备;命令解析模块2 (103)用于解析从PLB总线接收的命令和配置信息;数据分配与组合模块(104)用于管理和控制数据的分配和组合;缓冲区」(105) (i的取值为1到M的自然数)用来缓存数据,缓冲区_1 (105)到缓冲区_M(105)与接口控制_1 (108)到接口控制_M(108) —一对应,同时还与多端口存储器控制器组⑶中的MPMC_1(3)到MPMC_M(3)——对应;协调模块(106)用于通知SATA控制器组(2)中各个SATA控制器(SATA控制器 组(2)中共有N个SATA控制器)何时可以去存储单元_2 (9)取数据或向其写入数据,该模 块也可以得到各个SATA控制器的执行状态信息(例如,向硬盘写数据中,从硬盘读数据中, 空闲中);数据计数模块(107)用于对接收的或发送的数据进行计数,32位计数器,其计数 值是接收的或发送的数据量,以字节为单位;接口控制_i (i的取值为1到M的自然数)是NPI接口控制器,实现NPI接口协 议,数据宽度为64位,一次burst读或写最多可以传输256个字节数据,每次burst之后硬 件会自动更新地址,得到下一个burst的起始地址。由上述本发明提供的技术方案可以看出,本发明利用高速串行技术扩展了接口传 输形式,提高了数据输入输出的带宽,通过优化系统架构,提高了高速数据缓存的带宽和性 能,从而提高了高速存储的带宽。同时,本发明提供的技术方案充分利用了 FPGA的可编程 逻辑资源,减少了外围ASIC芯片和PCB面积,具有小型化,低功耗,应用广的特点。
图1是系统框图;图2是输入输出模块子模块图;图3是RAID控制器子模块图;图4是SATA控制器组子模块图;图5是多端口存储器控制器组子模块图;图6是实例图;附图标记说明如下O-FPGA,I-RAID 控制器,2-SATA 控制器组,3-多端口存储器控制器组,4-输入输出模块,5-RocketI0,6-嵌入式处理器,7-存储器控制器模块,8-存储单元_1,9-存储单元_2,10-磁盘阵列,Il-FPGA加载、配置模块,101-IPIF2,102-USR_L0GIC2,103-命令解析模块2,
104-数据分配与组合模块,105-缓冲区_1、缓冲区_2、缓冲区_3…缓冲区_M,106_协调模块,107-数据计数模块,108-接口控制_1、接口控制_2、接口控制_3…接口控制_M,401-camlink 接口模块,4011-IPIF0,4012-USR_L0GIC0,4013-命令解析模块0,4014-camlink 接口控制器 0,4Ol5-缓冲区 0,4016-读写控制模块,402-光纤接口模块,4021-IPIF1,4022_USR_L0GIC1,4023-命令解析模块1,
4024-光纤接口控制器1,4O25-缓冲区 1,403-PCIE 接 口 模块4031-PLBV46Endpoint bridge,4032-PCIE core,Sl_0-plb_v46,S1_1_NPI 接口,S1_2-SATA 控制器 SATA_ctrl,Sl_3-多端口存储器控制器MPMC,S1_4-DDR2 内存条,S1_5-PPC440_0,Sl_6_clock_generator,Sl_7-proc_sys_reset,Sl_8-jtagppc_ctrl,Sl_9-xps_uartl6550,Sl_10-ppc440mc_ddr2,Sl_ll-xps_intc,S1_12_PLB 总线,Sl_13-xps_systemace 芯片,S1_14_CF 卡,Sl_15-xps_sysace,Sl_16-xps_ll_TEMAC,Sl_17-xps_ll_FIF0,
说明SATA_ctrl_l到SATA_ctrl_N都是同样的模块,SATA控制器组(2)就是由这 N个SATA-ctrl组成的。MPMC_1到MPMC_M都是同样的模块,多端口存储器控制器组(3)就 是由这M个MPMC组成的。
具体实施例方式本发明实施方式提供一种基于FPGA的高速存储或读取数据的方法及装置,存储 数据时,该装置将从camlink接口或PCIE接口或光纤接口输入的数据通过MPMC的NPI接 口直接写入高速缓存单元缓存,然后由多个SATA控制器以RAIDO或者RAIDl的方式将缓存 的数据写入磁盘阵列,读取数据时,该装置控制多个SATA控制器将磁盘阵列中的数据通过 NPI接口直接写入高速缓存单元缓存,然后将高速缓存单元中缓存的数据按照存储数据时 的顺序依次读出,并通过caml ink接口或PCIE接口或光纤接口输出。为了更好的描述本发明实施方式所述的方法和步骤,现结合附图6对本发明的具 体实施方式进行说明实施例1 本实施例以存储数据为例,本发明的具体实施方式
提供一种基于FPGA 的高速存储或读取数据的方法及装置,本实施例的技术场景为,图像数据从camlink接口 进入装置,以RAIDO方式存储到磁盘阵列。本实施例中的一种基于FPGA的高速存储或读取数据的装置包括FPGA, FPGA加载、配置模块,高速数据缓存单元,磁盘阵列,camlink接口,PCIE接口和光纤 接口。为了叙述方便,本实施例中FPGA(O)选用XILINX公司的XC5VFX130T-2FF1738, XC5VFX130T-2FF1738的结构和特性可以参见XILINX公司提供的技术手册,当然在实际情 况中也可以选择其它型号的FPGA。嵌入式处理器(6)选用XC5VFX130T-2FF1738中内嵌的 硬IP核PPC440,存储器控制器模块(7)选用的是软IP核ppC440mC_ddr2,多端口存储器控 制器组(3)是由2个软IP核MPMC组成的,分别是MPMC_1和MPMC_2,SATA控制器组(2)是 由 12个SATA控制器组成的,分别是SATA_ctrll,SATA_ctrl2,SATA_ctrl3. . . SATA_ctrll2, DDR2内存条1,DDR2内存条2和DDR2内存条3都是容量为512M字节、64位的DDR2内存 条。磁盘阵列(10)是由12块SEAGATES公司的硬盘组成(硬盘型号为ST3320418AS)。本实施例中的一种基于FPGA的高速存储数据的方法,包括以下步骤1,xps_sysace和xps_systemace将存于CF里的FPGA配置文件读出,将FPGA配 置好,并将PPC440执行的软件代码存入DDR2内存条3中;2,PPC440执行软件代码,检测各个硬件模块,初始化各个硬件模块,并设置各个模 块的参数、工作模式,建立中断机制等;3,图像数据由camlink接口进入装置,经过camlink接口模块(401)中的camlink 接口控制器0(4014)解析后写入缓冲区0(4015)缓存,随即通过读写控制模块(4016)将其 传送给RAID控制器⑴;4,RAID控制器(1)中的数据分配与组合模块(104)将camlink接口模块(4)传 过来的图像数据按照这样的方式进行分配第1个512M(该值是个参数,是软件可读可写 的)字节写入缓冲区_1,第2个512M字节写入缓冲区_2,第3个512M字节写入缓冲区_1 和第4个512M字节写入缓冲区_2…如此交替直到所有图像数据都存储结束。图像数据的 分配是这样实现的数据计数模块(107)对camlink接口模块(4)传过来的图像数据进行计数,当数据计数模块的值第1次大于O而小于512M时,数据分配与组合模块(104)将数 据写入缓冲区_1,当数据计数模块的值等于512M时,数据计数模块输出满标志脉冲信号, 随即将数据计数模块的计数值清零,当数据计数模块的值第2次大于0而小于512M时,数 据分配与组合模块(104)将数据写入缓冲区_2,当数据计数模块的值等于512M时,数据计 数模块输出满标志脉冲信号,随即将数据计数模块的计数值清零…如此循环,DDR2内存条 1与DDR2内存条2以乒乓切换的方式使用,直到所有图像数据都存储结束;5,在接口控制_1 (108)的控制下缓冲区_1中的数据通过NPI接口传输到 MPMC_1 (Sl_3)中,随即MPMC_1 (Sl_3)将数据写入DDR2内存条1 (Sl_4)中缓存,同样如此, 在接口控制_2(108)的控制下缓冲区_2中的数据通过NPI接口传输到MPMC_2(S1_3)中, 随即MPMC_2(S1_3)将数据写入DDR2内存条2(S1_4)中缓存;6,接口控制_1(108)在向MPMC_1(S1_3)传输数据的同时协调模块(106)内部计 数器对写入MPMC_1 (Sl_3)的数据进行计数,当计数器第1次等于16M (该值是个参数,是软 件可读可写的)字节时,协调模块(106)通知SATA_ctrll去DDR2内存条1取数据,随即 将计数器清零,当计数器第2次等于16M字节时,协调模块(106)通知SATA_ctrl2去DDR2 内存条1取数据,随即将计数器清零…当计数器第6次等于16M字节时,协调模块(106)通 知SATA_ctrl6去DDR2内存条1取数据,随即将计数器清零,当计数器第7次等于16M字节 时,协调模块(106)又通知SATA_ctrll去DDR2内存条1取数据,随即将计数器清零…如此 循环,直到所有数据都存储结束,同样如此,接口控制_2(108)在向MPMC_2(S1_3)传输数据 的同时协调模块(106)内部计数器对写入MPMC_2(S1_3)的数据进行计数,当计数器第1次 等于16M字节时,协调模块(106)通知SATA_ctrl7去DDR2内存条2取数据,随即将计数器 清零,当计数器第2次等于16M字节时,协调模块(106)通知SATA_ctrl8去DDR2内存条2 取数据,随即将计数器清零…当计数器第6次等于16M字节时,协调模块(106)通知SATA_ ctrll2去DDR2内存条2取数据,随即将计数器清零,当计数器第7次等于16M字节时,协调 模块(106)又通知SATA_ctrl7去DDR2内存条2取数据,随即将计数器清零…如此循环,直 到所有数据都存储结束;7,SATA_ctrl_l到SATA_ctrl_6收到协调模块(106)的通知信号后就去内存条1 中各自对应的起始地址处取16M字节的数据,然后将它们写入各自控制的硬盘中,同样如 此,SATA_ctrl_7到SATA_ctrl_12收到协调模块(106)的通知信号后就去内存条2中各自 对应的起始地址处取16M字节的数据,然后将它们写入各自控制的硬盘中。8,重复上面步骤3-7,直到所有数据都存储结束。本发明实施例1详细叙述了图像数据从camlink接口进入装置,然后以RAIDO方 式存储到12个硬盘组成的磁盘阵列的全过程。高性能的系统架构设计使得MPMC_1,MPMC_2 和12个SATA控制器都并行的工作,从而大大的提高了存储带宽。实施例2 本实施例以存储数据为例,本发明的具体实施方式
提供一种基于FPGA 的高速存储或读取数据的方法及装置,本实施例的技术场景为,图像数据从camlink接口 进入装置,以RAIDl方式存储到磁盘阵列。本实施例中的一种基于FPGA的高速存储或读取数据的装置与实施例1相同。本实施例中的一种基于FPGA的高速存储数据的方法,包括以下步骤步骤1,2,3与实施例1相同;
4,RAID控制器(1)中的数据分配与组合模块(104)将camlink接口模块(4)传 过来的图像数据同时写入缓冲区_1和缓冲区_2 ;5,在RAID控制器(1)中接口控制_1 (108)的控制下缓冲区_1中的数据通过NPI 接口传输到MPMC_1中,随即MPMC_1 (Sl_3)将数据写入DDR2内存条1 (Sl_4)中缓存,与此 同时,在接口控制2(108)的控制下缓冲区_2中的数据通过NPI接口传输到MPMC_2(S1_3) 中,随即MPMC_2 (Sl_3)将数据写入DDR2内存条2 (Sl_4)中缓存;6,接口控制_1(108)在向MPMC_1(S1_3)传输数据的同时协调模块(106)内部计 数器对写入MPMC_1 (Sl_3)的数据进行计数,当计数器第1次等于16M字节时(该值是个 参数,是软件可读可写的),协调模块(106)通知SATA_ctrll去DDR2内存条1取数据,协 调模块(106)通知SATA_ctrl7去DDR2内存条2取数据,随即将计数器清零,当计数器第2 次等于16M字节时,协调模块(106)通知SATA_ctrl2去DDR2内存条1取数据,协调模块 (106)通知SATA_ctrl8去DDR2内存条2取数据,随即将计数器清零…当计数器第6次等于 16M字节时,协调模块(106)通知SATA_ctrl6去DDR2内存条1取数据,协调模块(106)通 知SATA_ctrll2去DDR2内存条2取数据,随即将计数器清零,当计数器第7次等于16M字 节时,协调模块(106)又通知SATA_ctrll去DDR2内存条1取数据,协调模块(106)又通知 SATA_ctrl7去DDR2内存条2取数据,随即将计数器清零…如此循环,直到所有数据都存储 结束;7,SATA_ctrl_l到SATA_ctrl_6收到协调模块(106)的通知信号后就去内存条1 中各自对应的起始地址处取16MB字节的数据,然后将它们写入各自控制的硬盘中,SATA_ ctrl_7到SATA_ctrl_12收到协调模块(106)的通知信号后就去内存条2中各自对应的起 始地址处取16MB字节的数据,然后将它们写入各自控制的硬盘中;8,重复上面步骤3-7,直到所有数据都存储结束。本发明实施例2详细叙述了图像数据从camlink接口进入装置,然后以RAIDl方 式存储到12个硬盘组成的磁盘阵列的全过程。高性能的系统架构设计使得MPMC_1,MPMC_2 和12个SATA_控制器都并行的工作,从而大大的提高了存储带宽。实施例3 本实施例以读取数据为例,本发明的具体实施方式
提供一种基于FPGA 的高速存储或读取数据的方法及装置,本实施例的技术场景为,将磁盘阵列中以RAIDO方 式存储的图像数据读出,并通过光纤接口传输给其它板卡/装置等。本实施例中的一种基于FPGA的高速读取数据的装置与实施例1相同。本实施例中的一种基于FPGA的高速读取数据的方法,包括以下步骤步骤1,2与实施例1相同。3,数据分配与组合模块(104)控制协调模块(106)依次产生信号通知SATA控制 器组(2)中的SATA_ctrll到SATA_ctrl6这6个SATA控制器将磁盘阵列(10)中某个逻辑 地址L_ADD处的第一个512M个数据读出,同样如此,数据分配与组合模块(104)控制协调 模块(106)依次产生信号通知SATA控制器组(2)中的SATA_ctrl7到SATA_ctrll2这6个 SATA控制器将磁盘阵列(10)中逻辑地址(L_ADD+512M)处的第二个512M个数据读出;4,由SATA_ctrl 1到SATA_ctrl6读出的数据会通过这6个SATA控制器的NPI接口 传送到多端口存储器控制器组(3)中的第1个多端口存储器控制器MPMC_1,由SATA_ctrl7 到SATA_ctrll2读出的数据会通过这6个SATA控制器的NPI接口传送到多端口存储器控制器组(3)中的第2个多端口存储器控制器MPMC_2 ;5,由第1个多端口存储器控制器MPMC_1将第一个512M个数据写入DDR2内存条 1中缓存,由第2个多端口存储器控制器MPMC_2将第二个512M个数据写入DDR2内存条2
中缓存;6,数据分配与组合模块(104)通过第1个NPI接口控制器接口控制_1依次将DDR2内存条1中缓存的第一个512M个数据读出并且写入第1个缓冲区(105)缓冲区_1缓存, 随即将这些数据发送给输入输出模块(4),数据分配与组合模块(104)通过第2个NPI接 口控制器接口控制_2依次将DDR2内存条2中缓存的第二个512M个数据读出并且写入第 2个缓冲区(105)缓冲区_2缓存,随即将这些数据发送给输入输出模块(4);7,输入输出模块(4)中的光纤接口模块(402)先从第1个缓冲区(105)缓冲区_1 中连续读取第一个512M字节数据,并且将这些数据通过光纤传输给其它板卡/装置等,然 后再从第2个缓冲区(105)缓冲区_2中连续读取第二个512M字节数据,并且将这些数据 通过光纤传输给其它板卡/装置等;8,修改逻辑地址L_ADD,重复上面步骤3到7,直到所有数据都读取完并传输结束。本发明实施例3详细叙述了将磁盘阵列中以RAIDO方式存储的图像数据读出,并 通过光纤传输给其它板卡/装置的全过程。高性能的系统架构设计使得MPMC_1,MPMC_2和 12个3々1々_控制器都并行的工作,多通道绑定的光纤接口增加了传输数据的带宽和距离, 从而大大的提高了数据读取与传输的带宽。本领域技术人员可以理解说明书附图6只是一个优选的示意图,附图中的模块并 不一定是实施本发明所必须的。上述本发明实施例序号仅仅是为了描述,不代表实施例的优劣。权利要求的内容记载的方案也是本发明实施例的保护范围。本领域普通技术人员可以理解上述实施例中提供的方法与装置的全部或者部分 处理是可以通过程序或硬件完成,所述的程序可以存储与一种计算机可以读取存储的介质 中。综上所述,本发明具体实施方式
提供的技术方案,利用高速串行技术扩展了接口 传输形式,提高了数据输入输出的带宽,通过优化系统架构,提高了高速数据缓存的带宽和 性能,从而提高了高速存储的带宽。同时减少了外围ASIC芯片和PCB面积,具有小型化,低 功耗,应用广的特点。以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此, 任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或 者替换,都应涵盖在本发明的保护范围之内,因此,本发明的保护范围应该以权利要求的保 护范围为准。
权利要求
一种基于FPGA的高速存储或读取数据的方法,其特征在于,所述方法包括通过PLB总线向输入输出模块(4)发送接口选择命令和配置信息,所述输入输出模块(4)选择对应的接口形式,然后将接口配置好,配置结束后将输入输出模块(4)中的配置结束标志位置1。
2.根据权利要求1所述的方法,其特征在于,所述向输入输出模块(4)发送的命令和配 置信息具体包括接口选择命令,输入/输出接口的通道个数,工作模式,数据位宽,接口缓 冲区大小。
3.一种基于FPGA的高速存储或读取数据的方法,其特征在于,所述方法包括通过PLB总线向RAID控制器(1)发送RAID级别选择命令和配置信息,所述RAID控制 器(1)选择对应的RAID级别,并配置好SATA控制器组(2)中的各个SATA控制器,配置结 束后将RAID控制器(1)中的配置结束标志位置1。
4.根据权利要求3所述的方法,其特征在于,所述向RAID控制器(1)发送的命令和配 置信息具体包括RAID级别,条带化参数,磁盘管理参数,控制器个数,硬盘个数。
5.根据权利要求3或4所述的方法,其特征在于,所述的RAID控制器(1)存储数据的 具体步骤包括A、命令解析模块2(103)解析从PLB总线接收的命令和配置信息;B、数据分配与组合模块(104)从输入输出模块(4)接收数据并写入第i个缓冲区 (105)buffer_i,同时数据计数模块(107)对写入buffer_i的数据量进行计数;C、由第i个NPI接口控制器NPI_ctrl_i(108)将第i个缓冲区(105)buffer_i中的数 据通过NPI接口传给多端口存储器控制器组(3)中的第i个多端口存储器控制器MPMC_i, 同时协调模块(106)内部的计数器对传给多端口存储器控制器组(3)的数据量进行计数;D、,MPMC_i负责将数据写入存储单元_2(9)中;E、当协调模块(106)内部的计数器的计数值达到L时,协调模块(106)产生脉冲信号 通知SATA控制器组(2)的第j个SATA控制器SATA_ctrl_j将刚刚写入存储单元—2 (9)中 缓存的L个字节的数据写入磁盘阵列(10)中,随即将协调模块(106)内部计数器的计数值 清零,改变j的值,重复上面E步骤,直到所有数据都存储结束;F、当数据计数模块(107)计数值达到K时,数据分配与组合模块(104)将从输入输出 模块(4)接收的数据写入第i+1个缓冲区(105)buffer_i+l,随即将数据计数模块(107)的 计数值清零;G、重复上面B到F步骤,直到所有数据都存储结束;所述L和K都是参数,是软件可读 可写的。
6.根据权利要求3或4所述的方法,其特征在于,所述的RAID控制器(1)读取数据时 的具体步骤包括A、命令解析模块2(103)解析从PLB总线接收的命令和配置信息;B、数据分配与组合模块(104)根据存储时的分配策略控制协调模块(106)依次产生信 号通知SATA控制器组(2)的N/M个SATA控制器将磁盘阵列(10)中某个逻辑地址处的K 个数据读出;C、读出的数据将分别通过N/M个SATA控制器的NPI接口传送到多端口存储器控制器 组(3)中的第i个多端口存储器控制器MPMC_i ;D、由第i个多端口存储器控制器MPMC_i将K个数据写入存储单元—2(9)中缓存;E、数据分配与组合模块(104)依次通过第i个NPI接口控制器NPI_ctrl_i将存储单 元_2(9)中缓存的K个数据读出并且写入第i个缓冲区(105)buffer_i缓存,随即将这些 数据发送给输入输出模块(4),由输入输出模块(4)将数据传输给其它板卡/装置;F、改变i的值,重复上面B到E步骤,直到所有数据都读取完并传输结束;所述L和K 都是参数,是软件可读可写的。
7. 一种基于FPGA的高速存储或读取数据的装置,其特征在于,所述装置包括 输入输出模块(4):该模块具有三种输入输出接口形式Camlink接口,PCIE接口,光纤 接口 ;可以通过这三种接口形式以及它们任意的组合形式来传入传出数据;RAID控制器(1)当存储数据时,根据接收到的命令和配置信息将来自输入输出模块 (4)的数据按照某种分配策略分配给多端口存储器控制器组(3),由多端口存储器控制器 组(3)负责将数据写入存储单元_2 (9)缓存,然后控制SATA控制器组(2)将存储单元_2(9) 中缓存的数据写入磁盘阵列(10),当读取数据时,根据存储时的分配策略采用对应的数据 组合策略,首先控制SATA控制器组(2)将磁盘阵列(10)中的数据写入存储单元_2 (9)中 缓存,然后RAID控制器(1)控制多端口存储器控制器组(3)将存储单元_2 (9)中缓存的数 据顺序读出,并将数据传递给输入输出模块(4),由输入输出模块(4)将数据传输给其它板 卡/装置;多端口存储器控制器组(3)由M个多端口存储器控制器MPMC组成,每个MPMC的端口 数目是可以配置的,每个端口配置成INACTIVE/XCL/PLB/SDMA/NPI/PPC440MC/VFBC接口形 式;MPMC可以同时仲裁全部八个端口,从而有效利用存储器;MPMC可以控制8/16/32/64位 的SDRAM/DDR/DDR2存储器,多端口存储器控制器MPMC是xilinx公司提供的MPMC存储器 控制器,或是自己开发的与其功能类似的存储器控制器;所述M取值为1,2,3或者4 ;存储单元_2(9)由多个存储器芯片按某种扩展方式组合而成的,存储芯片是SDRAM/ DDR/DDR2类型的存储器,随扩展方式的不同,其位宽相应为8/16/32/64位,其接口形式是 DIMM或者S0DIMM插槽,或是存储芯片直接焊接在FPGA周围;SATA控制器组(2)由N个SATA控制器组成,即是SATA_ctrl_l到SATA_ctrl_N,每个 SATA控制器都通过PLB总线与嵌入式处理器(6)连接,通过NPI接口与多端口存储器控制 器组(3)连接;PLB总线实现SATA控制器组(2)与嵌入式处理器(6)之间控制信息和状态 信息的交换,NPI接口实现SATA控制器(2)与存储单元_2(9)之间数据的交换;存储数据 时,根据接收到的命令和配置信息从存储单元_2 (9)中指定的逻辑地址处读取指定数量的 数据,然后写入磁盘阵列(10)中指定的逻辑地址处,读取数据时,按照软件的设置从磁盘 阵列(10)中指定的逻辑地址处读取指定数量的数据,然后写入存储单元_2(9)中指定的起 始地址处;所述N取值为1到24 ;RocketI0(5)是集成在FPGA内的硬核,该模块又称为千兆位级收发器,串行传输的速 度在 150Mbps 11. 18Gbps,支持 PCIE, SATA, FC, SRIO, infiniband 多种高速串行协议,主 要功能包括8B/10B编码/解码,串并/并串转换,逗点检测,时钟修正,预侧重和线性均衡; 嵌入式处理器(6)该模块是FPGA内嵌的硬核PPC405或者PPC440,或是软核 microblaze ;存储器控制器模块(7)该模块是xilinx公司提供的存储器控制器XpS_mCh_emC或MPMC或ppc440mc_ddr2,或是自己开发的与它们功能类似的存储器控制器;Xps_mCh_emC可 以控制SRAM和Flash存储器,其位宽是16/32/64位;XpS_mCh_emC的端口数目是可以配 置的,接口形式为PLB或MCH或PLB和MCH的组合;MPMC是xilinx公司提供的MPMC存储 器控制器,或是自己开发的与其功能类似的存储器控制器;PpC440mC_ddr2支持16/32/64 位数据宽度和拥有ECC功能的72位数据宽度的DDR2SDRAM存储器,该模块通过Memory Controllerlnterface (MCI)与嵌入式处理器 PPC440 的 PPC440MC 接 口连接;存储单元_1 (8)由多个存储器芯片按某种扩展方式组合而成的,存储芯片是DDR2/ SRAM/FLASH类型的存储器,随扩展方式的不同,其位宽相应为16/32/64位,其接口形式是 DIMM或者S0DIMM插槽,或是存储芯片直接焊接在FPGA周围;磁盘阵列(10):是具有SATA接口的HDD硬盘或者是SSD硬盘,或者是具有SATA接口 的存储板卡或者存储装置;FPGA加载、配置模块(11)完成FPGA比特流的存储和加载。
8.根据权利要求7所述的装置,其特征在于,所述输入输出模块(4)还包括 camlink接口模块(401)实现camlink接口的数据输入或者输出;该模块由 IPIF0 (4011)和 USR_L0GIC0(4012)组成,USR_L0GIC0 (4012)又由命令解析模块 0 (4013), camlink接口控制器0(4014),缓冲区0(4015),读写控制模块(4016)组成;IPIF0 (4011)实 现PLB接口协议,命令解析模块0 (4013)用来解析嵌入式处理器通过PLB接口传递的命令 和控制信息,并将执行结果状态信息等通过PLB总线传递给嵌入式处理器;camlink接口控 制器0(4014)用来实现camlink协议;缓冲区0(4015)用来缓存输入或者输出的数据;读写 控制模块(4016)实现缓冲区的读写控制,并通过本地总线与RAID控制器(1)交换数据;当 存储数据时,相机/采集卡/采集装置输出的数据从camlink接口输入该装置,当读取数据 时,该装置可以通过camlink接口将接收的、存储的或按照某种算法产生的数据发送给其 它板卡/装置;camlink接口由三个camlink插头组成,这三个插头可以配置成①一个full 模式接口加上一个base模式接口或②一个midlle模式接口加上一个base模式接口或③ 两个base模式接口 ;光纤接口模块(402):实现光纤接口的数据输入或者输出;该模块由IPIF1(4021)和 USR_L0GIC1 (4022)组成,USR_L0GIC1 (4022)又由命令解析模块1 (4023),光纤接口控制器 1(4024),缓冲区1(4025),读写控制模块(4016)组成;IPIF1(4021)实现PLB接口协议,命 令解析模块1 (4023)用来解析嵌入式处理器通过PLB接口传递的命令和控制信息,并将执 行结果状态信息通过PLB总线传递给嵌入式处理器;光纤接口控制器1(4024)用来实现光 纤协议;缓冲区1(4025)用来缓存输入或者输出的数据;当存储数据时,采集卡/采集装置 输出的数据从光纤接口输入该装置,当读取数据时,该装置可以通过光纤接口将接收的、存 储的或按照某种算法产生的数据发送给其它板卡/装置;光纤接口共有四个通道,这四个 通道可以配置成4个单通道模式,2个双通道模式,1个四通道模式;PCIE接口模块(403) :PCIE接口的数据输入或者输出;该模块由PLBV46 Endpointbridge (4031)和PCIE core (4032)组成;当存储数据时,采集卡/采集装置/PC等 输出的数据从PCIE接口输入该装置,当读取数据时,该装置可以通过PCIE接口将接收的、 存储的或按照某种算法产生的数据发送给其它板卡/装置/PC ;PCIE接口共有四个通道,这 四个通道可以配置成XI,X2,X4模式。
9.根据权利要求7所述的装置,其特征在于,所述RAID_ctrl(l)还包括 IPIF2 (101)用于实现PLB总线协议,该模块包括独立的主设备/从设备附属逻辑,既 能够作为主设备又可以作为从设备;命令解析模块2(103)用于解析从PLB总线接收的命令和配置信息; 数据分配与组合模块(104)用于管理和控制数据的分配和组合; 缓冲区_i(105):用来缓存数据,缓冲区_1 (105)到缓冲g_M(105)与接口控 制_1(108)到接口控制_M(108) —一对应,同时还与多端口存储器控制器组(3)中的 MPMC_1 (3)到MPMC_M(3)——对应;i的取值为1到M的自然数;协调模块(106)用于通知SATA控制器组(2)中各个SATA控制器何时可以去存储单 元_2(9)取数据或向其写入数据,该模块也可以得到各个SATA控制器的执行状态信息;所 述SATA控制器组(2)中共有N个SATA控制器;数据计数模块(107)用于对接收/发送的数据进行计数,32位计数器,其计数值是接 收/发送的数据量,以字节为单位;接口控制」是NPI接口控制器,实现NPI接口协议,数据宽度为64位,一次burst 读或写最多可以传输256个字节数据,每次burst之后硬件会自动更新地址,得到下一个 burst的起始地址;i的取值为1到M的自然数。
全文摘要
本发明提供一种基于FPGA的高速存储或读取数据的方法及装置,所述方法及装置属于计算机领域和存储领域,该装置包括RAID控制器(1),SATA控制器组(2),多端口存储器控制器组(3),输入输出模块(4),RocketIO(5),嵌入式处理器(6),存储器控制器模块(7),存储单元_1(8),存储单元_2(9),磁盘阵列(10),FPGA加载、配置模块(11)。其中模块1-7是在FPGA中实现的,模块1-4通过PLB总线与嵌入式处理器相连。嵌入式处理器作为核心处理单元,协调控制整个系统工作。该装置可以同时控制多个硬盘,通过软件配置可以实现RAID0和RAID1。该装置具有camlink接口,PCIE接口和光纤接口。该装置减少了外围ASIC芯片和PCB面积,具有小型化,低功耗,应用广的优点。
文档编号G06F3/06GK101833424SQ20101013492
公开日2010年9月15日 申请日期2010年3月26日 优先权日2010年3月26日
发明者吴威, 吴钦章, 张娟, 苏海冰, 郭帅 申请人:中国科学院光电技术研究所