基于RapidIO总线的RAID存储系统及方法技术领域
本发明涉及一种RAID存储系统及方法,特别是涉及一种基于RapidIO总线的RAID
存储系统及方法。
背景技术
RapidIO(RapidIO是由Motorola和Mercury等公司率先倡导的一种高性能、低引脚
数、基于数据包交换的互连体系结构,是为满足和未来高性能嵌入式系统需求而设计的一
种开放式互连技术标准)主要应用于嵌入式系统内部互连,支持芯片到芯片、板到板间的通
讯,可作为嵌入式设备的背板(Backplane)连接。其因可靠、高效、低延迟、直接内存共享、中
断、消息方式的传输,可以认为是一种总线,又因为其可以连接多个处理器设备,使这些设
备组成一个网,故又可以认为是一种网络。
RAID(RAID是英文Redundant Array of Independent Disks的缩写,中文简称为
“独立冗余磁盘阵列”)技术是为服务器、数据中心等提供比单个硬盘更高的存储性能和提
供数据备份技术。
以RapidIO总线为基础的综合化平台、数据中心、存储平台,都需要有对Raid存储
的支持。现有技术中有的文献详细阐述了RapidIO做大规模存储的优势、可行性,略述了其
使用服务总线适配器通过10G万兆总线连接服务器网络与RapidIO交换网络,使用盘阵列适
配器连接FC存储网络,该方案中的适配器需要使用处理器参与协议转换存储,从而会增加
相应的协议转换延时、增加系统功耗;现有数据中心方案是将RapidIO总线从服务器中引
出,用于网络互联,而磁盘阵列就在服务器内部,如此一来,别的服务器想访问该服务器中
的硬盘数据,必须经过该服务器处理,需要该服务器处理器转换,增加了存取时延、增加了
系统功耗。所以目前没有直接面向RapidIO总线、网络的RAID存储的设计方案。
发明内容
本发明所要解决的技术问题是提供一种基于RapidIO总线的RAID存储系统及方
法,其可靠、高效、低延迟、直接内存共享、中断、消息方式的传输,可使RAID存储阵列直接连
接RapidIO总线,任何RapidIO处理器节点均可以低延时、高带宽访问Raid存储阵列。
本发明是通过下述技术方案来解决上述技术问题的:一种基于RapidIO总线的
RAID存储系统,其特征在于,其包括Rapid IO CPU节点模块、RapidIO存储模块、RapidIO交
换网模块,其中:
RapidIO CPU节点模块,执行RapidIO驱动、RapidIO存储驱动、MEM系统;
RapidIO交换网模块,主要为由RapidIO交换芯片组成的交换网;
RapidIO存储模块,由一块FPGA芯片和n块SATA硬盘组成的RAID阵列组成,由FPGA
芯片连接RAID阵列,n位自然数。
优选地,所述FPGA芯片包括以下模块:
RapidIO IP模块,该模块提供RapidIO总线支持;
RapidIO Target模块,该模块将RapidIO的Target请求变为LocalBus总线,并返回
Target响应;
RapidIO Initiator模块,该模块产生对远端处理器节点内存空间数据的读写访
问;
RapidIO CMD FIFO模块,该模块将Local Bus收到的读写硬盘的命令结构体进行
队列存储;
DMA_Ctrl模块,该模块从RapidIO CMD FIFO模块中获取命令结构体,并完成硬盘
数据的搬移工作,完成产生Doorbell中断发往远端处理器;
RAID CMD AsyFIFO模块,该模块缓存DMA的读写SATA命令,并作跨时钟域处理;
RAID READ DATA AsyFIFO模块,该模块缓存DMA从RAID硬盘读取的数据,并作跨时
钟域处理;
RAID WRITE DATA AsyFIFO模块,该模块缓存DMA从远端处理器节点读取的数据,
并作跨时钟域处理;
SDtoRD模块,该模块将三路三十二位的SATA硬盘返回的数据,经过校验检测,生成
六十四位数据写入RAID READ DATA AsyFIFO模块;
RDtoSD模块,该模块将六十四位数据根据扇区地址,生成CRC校验扇区数据;
SATA模块,该模块完成SATA协议的控制,内部FIFO用来缓冲SATA硬盘数据。
本发明还提供一种基于RapidIO总线的RAID存储方法,其特征在于,其包括以下步
骤:
步骤一,构建命令结构体;
步骤二,进行RAID存储。
优选地,所述步骤一包括:低位地址、高位地址、扇区低位地址、扇区高位地址、扇
区数量、读写模式、服务识别号,其中:
低位地址和高位地址组成Rapid IO地址,该地址指明RapidIO处理器存放或需要
存放数据的基地址;
扇区低位地址和扇区高位地址组成RAID的扇区地址,该地址指明需要读写磁盘阵
列扇区的基地址;
扇区数量表明本次传输需要读写磁盘阵列扇区的数量;
读写模式定义了本次操作是读磁盘阵列还是写磁盘阵列,读写完成后是否需要发
送Doorbell给处理器;
服务识别号表明是服务哪个处理器的。
优选地,所述步骤二包括以下流程:RAID读取数据流程、RAID写取数据流程。
优选地,所述RAID读取数据流程包括以下步骤:
步骤十一,处理器获取一个命令结构体,并根据需要读取的扇区地址、扇区大小、
自己的ID、需要完成终端、初始化该结构体中sectorLowAddr、sectorHighAddr、
sectorNumber、servID、和rwMode;
步骤十二,获取需要存放数据的地址,并根据该地址值对结构体rioLowAddr和
rioHighAddr赋值;
步骤十三,使用Nwrite或Nwrite_R事务将结构体中的数据写入存储结点命令FIFO
地址中,大小为32B;
步骤十四,DMA_Ctrl模块收到结构体,根据块地址及块大小向磁盘阵列发起读请
求;
步骤十五,磁盘阵列返回数据经SDTORD模块校验检测,返回给DMA_Ctrl模块;
步骤十六,DMA_Ctrl模块发起Nwrite写事务,将数据写入远端处理器的内存中;
步骤十七,DMA_Ctrl模块数据传输完成后,向远端处理器发起Doorbell中断请求;
步骤十八,处理器获取到中断后,即认为内存中数据即为存储中数据,激活挂起任
务,执行相应应用。
优选地,所述RAID写取数据流程包括以下步骤:
步骤二十一,处理器获取一个命令结构体,并根据需要写入的数据内存基地址、需
要读取的扇区地址、扇区大小、自己的ID、需要完成终端、初始化该结构体中rioLowAddr、
rioHighAddr、sectorLowAddr、sectorHighAddr、sectorNumber、servID、和rwMode;
步骤二十二,使用Nwrite或Nwrite_R事务将结构体中的数据写入存储结点命令
FIFO地址中,大小为32B;
步骤二十三,DMA_Ctrl模块收到结构体,根据RapidIO地址及块大小向处理器发起
Nread读请求;
步骤二十四,处理器节点返回相应内存数据;
步骤二十五,DMA_Ctrl模块收到部分数据后,向磁盘阵列发起写请求;
步骤二十六,SDtoRD模块产生CRC校验盘数据,经SATA写入相应硬盘;
步骤二十七,DMA_Ctrl模块数据传输完成后,向远端处理器发起Doorbell中断请
求;
步骤二十八,处理器获取到中断后,即可认为内存中数据被处理,激活挂起任务,
释放相应内存。
本发明的积极进步效果在于:本发明可靠、高效、低延迟、直接内存共享、中断、消
息方式的传输,可使RAID存储阵列直接连接RapidIO总线,任何RapidIO处理器节点均可以
低延时、高带宽访问Raid存储阵列。
附图说明
图1为本发明基于RapidIO总线的RAID存储系统的系统框架图。
图2为本发明基于RapidIO总线的RAID存储方法的流程示意图。
图3为FPGA芯片的结构示意图。
具体实施方式
下面结合附图给出本发明较佳实施例,以详细说明本发明的技术方案。
如图1所示,本发明基于RapidIO(互连体系结构)总线的RAID(独立冗余磁盘阵列)
存储系统包括Rapid IO CPU(处理器)节点模块、RapidIO存储模块、RapidIO交换网模块,其
中:
RapidIO CPU节点模块,执行RapidIO驱动、RapidIO存储驱动、MEM(文件)系统等;
RapidIO交换网模块,主要为由RapidIO交换芯片组成的交换网;
RapidIO存储模块,由一块FPGA(现场可编程门阵列)芯片和n块SATA(串口)硬盘组
成的RAID阵列组成,由FPGA芯片连接RAID阵列,n位自然数。
RapidIO CPU(处理器)节点模块、RapidIO存储模块、RapidIO交换网模块经
RapidIO连接,使任何Rapid IO处理器节点都可以通过RapidIO网络访问任何Rapid IO存
储。
如图3所示,FPGA芯片包括以下模块:
RapidIO IP(网间协议)模块,该模块提供RapidIO总线支持;
RapidIO Target(目标)模块,该模块将RapidIO的Target请求变为LocalBus总线
(用于配置FPGA内部寄存器),并返回Target响应;
RapidIO Initiator(发起)模块,该模块产生对远端处理器节点内存空间数据的
读写访问;
RapidIO CMD(命令)FIFO(First In First Out,先进先出)模块,该模块将Local
Bus(本地总线)收到的读写硬盘的命令结构体进行队列存储,存放不止512个命令结构体;
DMA(Direct Memory Access,直接内存存取)_Ctrl(控制键)模块,该模块从
RapidIO CMD FIFO模块中获取命令结构体,并完成硬盘数据的搬移工作,完成产生
Doorbell中断发往远端处理器;
RAID CMD(命令)AsyFIFO(异步先进先出)模块,该模块缓存DMA的读写SATA命令,
并作跨时钟域处理;
RAID READ DATA(读取数据)AsyFIFO(异步先进先出)模块,该模块缓存DMA从RAID
硬盘读取的数据,并作跨时钟域处理;
RAID WRITE DATA(写入数据)AsyFIFO模块,该模块缓存DMA从远端处理器节点读
取的数据,并作跨时钟域处理;
SDtoRD(SATA to RAID,串口到独立冗余磁盘阵列,或称为“SDtoRD”)模块,该模块
将三路三十二位的SATA硬盘返回的数据,经过校验检测,生成六十四位数据写入RAID READ
DATA AsyFIFO模块;
RDtoSD(RAID to SATA,独立冗余磁盘阵到串口,或称为“RD2SD”)模块,该模块将
六十四位数据根据扇区地址,生成CRC(Cyclic Redundancy Check,循环冗余校验)校验扇
区数据;
SATA(串口)模块,该模块完成SATA协议的控制,内部FIFO用来缓冲SATA硬盘数据,
防止3块硬盘返回数据不同时,导致数据丢失。
如图2所示,基于RAPID IO总线的RAID存储方法包括以下步骤:
步骤一,构建命令结构体;
步骤二,进行Raid存储。
所述步骤一包括:rioLowAddr(低位地址)、rioHighAddr(高位地址)、
sectorLowAddr(扇区低位地址)、sectorHighAddr(扇区高位地址)、sectorNumber(扇区数
量)、rwMode(读写模式)、servID(服务识别号),其中:
rioLowAddr和rioHighAddr组成Rapid IO地址,该地址指明RapidIO处理器存放或
需要存放数据的基地址,一般为该处理器为该块数据申请的内存基地址;
sectorLowAddr和sectorHighAddr组成RAID的扇区地址,该地址指明需要读写磁
盘阵列扇区的基地址;
sectorNumber,该值表明本次传输需要读写磁盘阵列扇区的数量;
rwMode,该值定义了本次操作是读磁盘阵列还是写磁盘阵列,读写完成后是否需
要发送Doorbell给处理器;
servID,该值表明是服务哪个处理器的,一般为该处理器的ID。
该结构体主要功能就是阐明FPGA需要读写的扇区地址在哪里,需要搬移多少扇
区,搬移到哪个ID的哪块内存中,以及完成是否需要发送Doorbell中断通知处理器。
所述步骤二包括:RAID读取数据流程、RAID写取数据流程。
所述RAID读取数据流程包括以下步骤:
步骤十一,处理器获取一个命令结构体,并根据需要读取的扇区地址、扇区大小、
自己的ID、需要完成终端、初始化该结构体中sectorLowAddr、sectorHighAddr、
sectorNumber、servID、和rwMode;
步骤十二,获取需要存放数据的地址,并根据该地址值对结构体rioLowAddr和
rioHighAddr赋值;
步骤十三,使用Nwrite或Nwrite_R事务将结构体中的数据写入存储结点命令FIFO
地址中,大小为32B(或一次写多个);
步骤十四,DMA_Ctrl模块收到结构体,根据块地址及块大小向磁盘阵列发起读请
求;
步骤十五,磁盘阵列返回数据经SDTORD模块校验检测,返回给DMA_Ctrl模块;
步骤十六,DMA_Ctrl模块发起Nwrite写事务,将数据写入远端处理器的内存中;
步骤十七,DMA_Ctrl模块数据传输完成后,向远端处理器发起Doorbell中断请求;
步骤十八,处理器获取到中断后,即认为内存中数据即为存储中数据,激活挂起任
务,执行相应应用。
所述RAID写取数据流程包括以下步骤:
步骤二十一,处理器获取一个命令结构体,并根据需要写入的数据内存基地址、需
要读取的扇区地址、扇区大小、自己的ID、需要完成终端、初始化该结构体中rioLowAddr、
rioHighAddr、sectorLowAddr、sectorHighAddr、sectorNumber、servID、和rwMode;
步骤二十二,使用Nwrite(新写入)或Nwrite_R(右新写入)事务将结构体中的数据
写入存储结点命令FIFO地址中,大小为32B(或一次写多个);
步骤二十三,DMA_Ctrl模块收到结构体,根据RapidIO地址及块大小向处理器发起
Nread读请求;
步骤二十四,处理器节点返回相应内存数据;
步骤二十五,DMA_Ctrl模块收到部分数据后,向磁盘阵列发起写请求;
步骤二十六,SDtoRD模块产生CRC校验盘数据,经SATA写入相应硬盘;
步骤二十七,DMA_Ctrl模块数据传输完成后,向远端处理器发起Doorbell中断请
求;
步骤二十八,处理器获取到中断后,即认为内存中数据被处理,激活挂起任务,释
放相应内存。
以上所述的具体实施例,对本发明的解决的技术问题、技术方案和有益效果进行
了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制
本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本
发明的保护范围之内。