一种基于fpga高速读取磁盘阵列中文件的方法

文档序号:9349704阅读:744来源:国知局
一种基于fpga高速读取磁盘阵列中文件的方法
【技术领域】
[0001]本发明涉及云计算领域,尤其涉及一种基于FPGA高速读取磁盘阵列中文件的方法。
【背景技术】
[0002]随着云计算以及大数据处理的发展需求,现场可编程逻辑阵列(FPGA)由于其灵活性、可编程性以及丰富的高速通信接口在这些领域得到了越来越多的应用。同时,由于以太网交换机技术较为成熟,成本也比较低廉,因而成为了 FPGA与磁盘阵列进行通信的首选。然而随着规模的扩展,FPGA与磁盘阵列的文件高速通信成为了云计算领域的瓶颈之一。
[0003]在现有的操作系统及网络环境下,大多数应用程序均需要可靠的通信,而TCP/IP协议成为当代网络应用实现可靠通信的主要选择。然而,当应用于磁盘阵列与FPGA构建的高速局域网络时,TCP/IP协议存在三个主要的问题:(I)在有损网络中吞吐量严重降低,当出现瞬时网络拥塞、转发错误或者光纤问题时,TCP/IP无法区分短暂的网络损坏,并且TCP/IP恢复时间也较长;(2)TCP/IP的缓冲区大小固定,并且发送方窗口大小受限于接收方缓冲区的大小,动态的数据包一旦有未收到应答的情况会对整个网络的传输有极强的影响;(3) TCP/IP协议的设计较为复杂。除了 TCP/IP协议外,UDP协议是一种常用的无连接的通信协议,然而其提供的传送服务不可靠,相应的协议开销也较大。

【发明内容】

[0004]针对现有技术存在的缺陷,本发明的目的在于提供一种基于FPGA高速读取磁盘阵列中文件的方法,以提高传输速度及传输可靠性。
[0005]为了实现上述目的,本发明采用如下技术方案:
[0006]—种基于FPGA高速读取磁盘阵列中文件的方法,包括以下步骤:
[0007]SI,通过一 FPGA处理单元向一磁盘阵列发送包含有待读取文件的文件名的读文件请求;所述磁盘阵列接收到所述读文件请求后查找所述待读取文件并反馈回相应的读文件请求应答,所述读文件请求应答包括所述待读取文件的文件大小,其中当所述待读取文件在所述磁盘阵列中不存在时,所述文件大小为O ;
[0008]S2,所述FPGA处理单元根据反馈回的所述读文件请求应答获取所述文件大小,然后申请与所述文件大小相应的存储空间,并获取所述存储空间的起始存储地址,再利用该起始存储地址构建FPGA存储地址通知发送到所述磁盘阵列;所述磁盘阵列接收到所述FPGA存储地址通知后,向所述FPGA处理单元发送FPGA存储地址通知应答;
[0009]S3,所述磁盘阵列按照预定格式对所述待读取文件进行分包处理以构建若干文件内容帧发送给所述FPGA处理单元,所述文件内容帧包括对应的发送序号及所述待读取文件的相应数据,其中最后一帧所述文件内容帧以及其余的部分所述文件内容帧设置为需要应答;所述FPGA处理单元接收到所述文件内容帧后将其中所述待读取文件的相应数据写入对应的存储空间并对其进行保序处理,以记录相应的保序序号,同时丢弃发送序号与保序序号不一致的所述文件内容帧,并且当接收到的所述文件内容帧需要应答时,向所述磁盘阵列反馈相应的文件内容应答帧,所述文件内容应答帧包括对应文件内容帧的保序序号及其发送序号;
[0010]S4,所述磁盘阵列接收到所述文件内容应答帧后,判断所述文件内容应答帧中的所述保序序号与所述发送序号是否一致,如果不一致,则重新发送对应的所述文件内容帧至所述FPGA处理单元;
[0011]S5,所述磁盘阵列接收到最后一帧所述文件内容应答帧后,向所述FPGA处理单元发送相应的文件内容完成帧;所述FPGA处理单元接收到所述文件内容完成帧后,向所述磁盘阵列发送文件内容完成应答帧,文件读取操作结束。
[0012]进一步地,所述步骤SI还包括:如果所述FPGA处理单元在预定时间内未收到所述读文件请求应答,则重新发送对应的所述读文件请求,如果超过预定次数仍未接收到所述读文件请求应答,则终止发送所述读文件请求,并输出一读文件请求错误报警。
[0013]进一步地,如果所述FPGA处理单元在预定时间内未收到所述FPGA存储地址通知应答,则重新发送对应的所述FPGA存储地址通知,如果超过预定次数仍未接收到所述FPGA存储地址通知应答,则终止发送所述FPGA存储地址通知,并输出一存储地址通知错误报塾目ο
[0014]优选地,所述FPGA处理单元与所述磁盘阵列采用IP通信协议进行通信。
[0015]优选地,所述FPGA处理单元通过DMA的方式将所述待读取文件的相应数据写入对应的存储空间。
[0016]与现有技术相比较,本发明具有如下优点:针对文件请求、FPGA存储地址通知以及文件内容完成帧请求采用了简单的应答式可靠传输,从而减小了 FPGA设计复杂度;针对待读取文件内容传输采用了主动触发式的可靠传输,磁盘阵列能够依据其盘阵服务器的处理器性能、网络传输状况以及网络传输距离控制主动触发的频率,提供系统通信的灵活性以及环境适应性,极大减少FPGA端的可靠协议开发复杂度。
【附图说明】
[0017]图1是本发明实施例中FPGA处理单元与外围应用服务器的队列接口示意图;
[0018]图2是本发明实施例中采用的可靠通信帧的帧结构示意图;
[0019]图3是本发明实施例中可靠通信帧首部的结构示意图;
[0020]图4是本发明的基于FPGA高速读取磁盘阵列中文件的方法的通信流程示意图。
【具体实施方式】
[0021]为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举优选实施例进行说明。
[0022]图1示出了 FPGA处理单元与外围应用服务器(例如WEB协议加速器)的队列接口示意图。如图所示,外围应用服务器与FPGA处理单元通过磁盘文件打开接口、DDR (双倍速率同步动态随机存储器)存储位置接口和文件内容接口通信;FPGA处理单元与磁盘阵列通过万兆以太网通信,如图2所示,本发明的以太网帧格式是建立在IP协议基础之上的,因此协议的开销小于TCP以及UDP协议。其中,以太网帧的可靠通信帧首部的定义如图3所示,其中端口号占用2字节,用来区分FPGA处理单元发起的是哪一个文件的请求(实现文件名与本地队列维护的映射表),因此该协议能够同时支持最多65536个文件并发传送;操作码占用I字节,用来区分可靠通信帧的类型(0x23表示读文件请求,0x24表示读文件请求应答,0x25表示FPGA存储地址通知,0x26表示FPGA存储地址通知应答,0x27表示文件内容帧,0x28表示文件内容应答帧,0x30表示文件内容完成帧,0x31表示文件内容完成应答帧);数据内容大小占用2字节,表示本次传输的数据内容长度(支持以太网的巨型帧传输,最大支持65535字节);序列号占用I字节,表示本次数据传输的发送序号(利用该序号维护收发通信的可靠传输);文件名占用6字节,表示本次传输的文件名称;DDR位置/文件按大小占用8字节,表示本次数据内容在DDR存储的位置或者文件大小;数据域为本次传输的文件数据内容。
[0023]本发明的基于FPGA高速读取磁盘阵列中文件的方法的通信流程如图4所示,从图中可以看出,针对文件请求、FPGA存储地址通知以及文件内容完成帧请求采用了简单的应答式可靠传输,从而减少了 FPGA设计复杂度;针对待读取文件内容传输采用了主动触发式的可靠传输,磁盘阵列能够依据其盘阵服务器的处理器性能、网络传输状况以及网络传输距离控制主动触发的频率,提供系统通信的灵活性以及环境适应性,极大减少FPGA端的可靠协议开发复杂度,下面结合图4介绍该方法的流程:
[0024]当外围应用服务器需要通过FPGA处理单元从磁盘阵列中获取文件时,首先将待读取文件的文件名写入到磁盘文件打开接口中的读文件请求队列raid_create_request_fifo队列中去,FPGA处理单元一旦检测到该队列为非空,贝Ij通过构建读文件请求信号向磁盘阵列发起读取文件请求(操作码0x23)。磁盘阵列通过以太网口获取该读文件请求,并根据可靠通信帧首部获取待读取文件的文件名称以及相应的端口号,并在本地磁盘阵列查找文件,如果文件存在则获取文件大小,如果不存在,则将文件大小设置为0,然后构建包含文件大小的读文件请求应答(操作码0x24),并将该读文件请求应答通过以太网传到FPGA处理单元。FPGA处理单元接收到该读文件请求应答后,根据其中的文件大小能够获知该文件是否存在以及文件大小,然后将上述文件信息写入到磁盘文件打开接口的读文件响应队列Raid_create_request_status_fifo中。在上述的传输通信过程中,
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1