CN105068766B - 一种基于fpga高速读取磁盘阵列中文件的方法 - Google Patents
一种基于fpga高速读取磁盘阵列中文件的方法 Download PDFInfo
- Publication number
- CN105068766B CN105068766B CN201510500763.7A CN201510500763A CN105068766B CN 105068766 B CN105068766 B CN 105068766B CN 201510500763 A CN201510500763 A CN 201510500763A CN 105068766 B CN105068766 B CN 105068766B
- Authority
- CN
- China
- Prior art keywords
- file
- fpga
- disk array
- frame
- file content
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于FPGA高速读取磁盘阵列中文件的方法,包括:FPGA向磁盘阵列发送读文件请求;磁盘阵列反馈读文件请求应答;FPGA获取文件大小并申请相应的存储空间,构建FPGA存储地址通知发送到磁盘阵列;磁盘阵列向FPGA发送FPGA存储地址通知应答;磁盘阵列对待读取文件进行分包处理以构建文件内容帧发送给FPGA;FPGA对其进行保序处理,当文件内容帧需应答时,反馈文件内容应答帧;磁盘阵列接收到文件内容应答帧后,判断保序序号与发送序号是否一致,若不一致则重新发送对应的文件内容帧至FPGA;磁盘阵列接收到最后一帧文件内容应答帧后,向FPGA发送文件内容完成帧;FPGA向磁盘阵列发送文件内容完成应答帧。本发明可以提高传输速度及传输可靠性,减小FPGA设计复杂度。
Description
技术领域
本发明涉及云计算领域,尤其涉及一种基于FPGA高速读取磁盘阵列中文件的方法。
背景技术
随着云计算以及大数据处理的发展需求,现场可编程逻辑阵列(FPGA)由于其灵活性、可编程性以及丰富的高速通信接口在这些领域得到了越来越多的应用。同时,由于以太网交换机技术较为成熟,成本也比较低廉,因而成为了FPGA与磁盘阵列进行通信的首选。然而随着规模的扩展,FPGA与磁盘阵列的文件高速通信成为了云计算领域的瓶颈之一。
在现有的操作系统及网络环境下,大多数应用程序均需要可靠的通信,而TCP/IP协议成为当代网络应用实现可靠通信的主要选择。然而,当应用于磁盘阵列与FPGA构建的高速局域网络时,TCP/IP协议存在三个主要的问题:(1)在有损网络中吞吐量严重降低,当出现瞬时网络拥塞、转发错误或者光纤问题时,TCP/IP无法区分短暂的网络损坏,并且TCP/IP恢复时间也较长;(2)TCP/IP的缓冲区大小固定,并且发送方窗口大小受限于接收方缓冲区的大小,动态的数据包一旦有未收到应答的情况会对整个网络的传输有极强的影响;(3)TCP/IP协议的设计较为复杂。除了TCP/IP协议外,UDP协议是一种常用的无连接的通信协议,然而其提供的传送服务不可靠,相应的协议开销也较大。
发明内容
针对现有技术存在的缺陷,本发明的目的在于提供一种基于FPGA高速读取磁盘阵列中文件的方法,以提高传输速度及传输可靠性。
为了实现上述目的,本发明采用如下技术方案:
一种基于FPGA高速读取磁盘阵列中文件的方法,包括以下步骤:
S1,通过一FPGA处理单元向一磁盘阵列发送包含有待读取文件的文件名的读文件请求;所述磁盘阵列接收到所述读文件请求后查找所述待读取文件并反馈回相应的读文件请求应答,所述读文件请求应答包括所述待读取文件的文件大小,其中当所述待读取文件在所述磁盘阵列中不存在时,所述文件大小为0;
S2,所述FPGA处理单元根据反馈回的所述读文件请求应答获取所述文件大小,然后申请与所述文件大小相应的存储空间,并获取所述存储空间的起始存储地址,再利用该起始存储地址构建FPGA存储地址通知发送到所述磁盘阵列;所述磁盘阵列接收到所述FPGA存储地址通知后,向所述FPGA处理单元发送FPGA存储地址通知应答;
S3,所述磁盘阵列按照预定格式对所述待读取文件进行分包处理以构建若干文件内容帧发送给所述FPGA处理单元,所述文件内容帧包括对应的发送序号及所述待读取文件的相应数据,其中最后一帧所述文件内容帧以及其余的部分所述文件内容帧设置为需要应答;所述FPGA处理单元接收到所述文件内容帧后将其中所述待读取文件的相应数据写入对应的存储空间并对其进行保序处理,以记录相应的保序序号,同时丢弃发送序号与保序序号不一致的所述文件内容帧,并且当接收到的所述文件内容帧需要应答时,向所述磁盘阵列反馈相应的文件内容应答帧,所述文件内容应答帧包括对应文件内容帧的保序序号及其发送序号;
S4,所述磁盘阵列接收到所述文件内容应答帧后,判断所述文件内容应答帧中的所述保序序号与所述发送序号是否一致,如果不一致,则重新发送对应的所述文件内容帧至所述FPGA处理单元;
S5,所述磁盘阵列接收到最后一帧所述文件内容应答帧后,向所述FPGA处理单元发送相应的文件内容完成帧;所述FPGA处理单元接收到所述文件内容完成帧后,向所述磁盘阵列发送文件内容完成应答帧,文件读取操作结束。
进一步地,所述步骤S1还包括:如果所述FPGA处理单元在预定时间内未收到所述读文件请求应答,则重新发送对应的所述读文件请求,如果超过预定次数仍未接收到所述读文件请求应答,则终止发送所述读文件请求,并输出一读文件请求错误报警。
进一步地,如果所述FPGA处理单元在预定时间内未收到所述FPGA存储地址通知应答,则重新发送对应的所述FPGA存储地址通知,如果超过预定次数仍未接收到所述FPGA存储地址通知应答,则终止发送所述FPGA存储地址通知,并输出一存储地址通知错误报警。
优选地,所述FPGA处理单元与所述磁盘阵列采用IP通信协议进行通信。
优选地,所述FPGA处理单元通过DMA的方式将所述待读取文件的相应数据写入对应的存储空间。
与现有技术相比较,本发明具有如下优点:针对文件请求、FPGA存储地址通知以及文件内容完成帧请求采用了简单的应答式可靠传输,从而减小了FPGA设计复杂度;针对待读取文件内容传输采用了主动触发式的可靠传输,磁盘阵列能够依据其盘阵服务器的处理器性能、网络传输状况以及网络传输距离控制主动触发的频率,提供系统通信的灵活性以及环境适应性,极大减少FPGA端的可靠协议开发复杂度。
附图说明
图1是本发明实施例中FPGA处理单元与外围应用服务器的队列接口示意图;
图2是本发明实施例中采用的可靠通信帧的帧结构示意图;
图3是本发明实施例中可靠通信帧首部的结构示意图;
图4是本发明的基于FPGA高速读取磁盘阵列中文件的方法的通信流程示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举优选实施例进行说明。
图1示出了FPGA处理单元与外围应用服务器(例如WEB协议加速器)的队列接口示意图。如图所示,外围应用服务器与FPGA处理单元通过磁盘文件打开接口、DDR(双倍速率同步动态随机存储器)存储位置接口和文件内容接口通信;FPGA处理单元与磁盘阵列通过万兆以太网通信,如图2所示,本发明的以太网帧格式是建立在IP协议基础之上的,因此协议的开销小于TCP以及UDP协议。其中,以太网帧的可靠通信帧首部的定义如图3所示,其中端口号占用2字节,用来区分FPGA处理单元发起的是哪一个文件的请求(实现文件名与本地队列维护的映射表),因此该协议能够同时支持最多65536个文件并发传送;操作码占用1字节,用来区分可靠通信帧的类型(0x23表示读文件请求,0x24表示读文件请求应答,0x25表示FPGA存储地址通知,0x26表示FPGA存储地址通知应答,0x27表示文件内容帧,0x28表示文件内容应答帧,0x30表示文件内容完成帧,0x31表示文件内容完成应答帧);数据内容大小占用2字节,表示本次传输的数据内容长度(支持以太网的巨型帧传输,最大支持65535字节);序列号占用1字节,表示本次数据传输的发送序号(利用该序号维护收发通信的可靠传输);文件名占用6字节,表示本次传输的文件名称;DDR位置/文件按大小占用8字节,表示本次数据内容在DDR存储的位置或者文件大小;数据域为本次传输的文件数据内容。
本发明的基于FPGA高速读取磁盘阵列中文件的方法的通信流程如图4所示,从图中可以看出,针对文件请求、FPGA存储地址通知以及文件内容完成帧请求采用了简单的应答式可靠传输,从而减少了FPGA设计复杂度;针对待读取文件内容传输采用了主动触发式的可靠传输,磁盘阵列能够依据其盘阵服务器的处理器性能、网络传输状况以及网络传输距离控制主动触发的频率,提供系统通信的灵活性以及环境适应性,极大减少FPGA端的可靠协议开发复杂度,下面结合图4介绍该方法的流程:
当外围应用服务器需要通过FPGA处理单元从磁盘阵列中获取文件时,首先将待读取文件的文件名写入到磁盘文件打开接口中的读文件请求队列raid_create_request_fifo队列中去,FPGA处理单元一旦检测到该队列为非空,则通过构建读文件请求信号向磁盘阵列发起读取文件请求(操作码0x23)。磁盘阵列通过以太网口获取该读文件请求,并根据可靠通信帧首部获取待读取文件的文件名称以及相应的端口号,并在本地磁盘阵列查找文件,如果文件存在则获取文件大小,如果不存在,则将文件大小设置为0,然后构建包含文件大小的读文件请求应答(操作码0x24),并将该读文件请求应答通过以太网传到FPGA处理单元。FPGA处理单元接收到该读文件请求应答后,根据其中的文件大小能够获知该文件是否存在以及文件大小,然后将上述文件信息写入到磁盘文件打开接口的读文件响应队列Raid_create_request_status_fifo中。在上述的传输通信过程中,若FPGA处理单元发送完读文件请求以后超过一定的时间没有接收到磁盘阵列发起的读文件请求应答,则重新发起本次读文件请求,如果连续一定次数(例如三次)都没有应答,则终止本次读文件请求,并输出一读文件请求错误报警信息至读文件响应队列Raid_create_request_status_fifo。
FPGA处理单元获取需要读取的文件大小以后,则通过DDR存储位置接口的内存空间分配请求队列向外围应用服务器申请存储空间的起始地址。外围应用服务器接收到该信息后,向本地内存管理模块申请连续存储空间,并将存储空间的首地址传输到DDR存储位置接口的内存空间地址FIFO中。FPGA处理单元一旦检测到内存空间地址FIFO非空,则从该FIFO中获取DDR起始存储地址并构建以太帧格式(操作码0x25)的FPGA存储地址通知,接着向磁盘阵列发起FPGA存储地址通知。磁盘阵列接收到所述FPGA存储地址通知以后,向FPGA处理单元发送FPGA存储地址通知应答,表示接收到了对方发送的FPGA存储地址通知。如果FPGA处理单元没有接收到FPGA存储地址通知应答,则在预设的超时时间内重新发起FPGA存储地址通知。如果超过一定次数(例如三次)仍然没有接收到FPGA存储地址通知应答,则终止发送本次FPGA存储地址通知,并输出一存储地址通知错误报警信息至读文件响应队列Raid_create_request_status_fifo。
完成上述操作以后,表示FPGA处理单元已经准备好了存储空间,可以进行文件内容的传输。磁盘阵列接着根据文件的大小以及构建的云服务器能支持的以太网每帧能够传输的最大长度(支持以太网的Jumbo帧),将文件内容切分为多个包封装放入发送队列中,并在这些发送数据队列中增加可靠通信帧首部,以构建文件内容帧(操作码0x27)。考虑到磁盘阵列上的Linux或者其它操作系统对发送与接收模式的切换需要较长的时间,因此上述基于简单应答的可靠传输通信将会极大降低磁盘阵列与FPGA处理单元之间的吞吐带宽。考虑到云计算平台应用的场景位于局域网内,网络环境相对可靠,因此磁盘阵列通过流水线的方式向FPGA处理单元发送一定数目内容帧后,再通过主动触发的方式让FPGA处理单元汇报没有接收到的帧(通过序列号的方法进行维护),其实现方法可以通过将序列号的最高位设为1(低7位用作收发双方保序,最高位用来控制是否产生文件内容应答帧)使得FPGA处理单元能够产生文件内容应答帧(如图4所示,一般每隔一定文件内容帧产生一次文件内容应答帧,最后一帧文件内容帧必须产生文件内容应答帧)。
对于FPGA处理单元,其每发送一次读文件请求,将该文件对应的当前保序序号设置为0,每接收到一个对应的文件按内容帧后通过DMA(直接内存存取)的方式将其中待读取文件的相应数据写入对应的存储空间,并进行保序处理,即,获取该文件内容帧的发送序号并与FPGA处理单元的当前保序序号进行比较,如果两个序号相等,则将当前保序序号进行加1操作,并将接收到的文件内容帧的可靠通信帧首部剥离出来,将其中需要传输的地址、长度以及传输内容写入到文件内容接口的Mem_file_content_fifo中。如果接收到文件内容帧的发送序号与FPGA处理单元当前保序序号不一致,则丢弃接收到的文件内容帧。如果接收到的文件内容帧的发送序号最高位为1,则将当前保序序号以及文件内容帧的发送序号写入到文件内容应答帧,并发送给磁盘阵列。磁盘阵列接收到文件内容应答帧后,通过对比文件内容应答帧中的FPGA处理单元保序序号与磁盘阵列的发送序号是否一致来判断发送过程中是否出现丢包,如果所述保序序号与磁盘阵列的发送序号相同,则表示传送完成;如果保序序号与磁盘阵列的发送序号不同,则保序序号与发送序号之间序号对应的发送数据未能正确到达FPGA处理单元,并重新传输上述丢失的文件内容帧。
当磁盘阵列收到所传文件最后一帧的文件内容应答帧后,向FPGA处理单元发送该文件的文件内容完成帧(操作码0x30)。FPGA接收到文件内容完成帧后,将会发送文件内容完成应答帧给磁盘阵列,并关闭此文件的读操作,释放对应的端口资源。
以上所述为本发明的较佳实施方式,并非用于限制本发明的范围,凡在本发明精神和原则之内所做的任何修改、等同替换和改进等,均含于本发明的保护范围之内。本发明的保护范围以本发明的权利要求为准。
Claims (5)
1.一种基于FPGA高速读取磁盘阵列中文件的方法,其特征在于,包括以下步骤:
S1,通过一FPGA处理单元向一磁盘阵列发送包含有待读取文件的文件名的读文件请求;所述磁盘阵列接收到所述读文件请求后查找所述待读取文件并反馈回相应的读文件请求应答,所述读文件请求应答包括所述待读取文件的文件大小,其中当所述待读取文件在所述磁盘阵列中不存在时,所述文件大小为0;
S2,所述FPGA处理单元根据反馈回的所述读文件请求应答获取所述文件大小,然后申请与所述文件大小相应的存储空间,并获取所述存储空间的起始存储地址,再利用该起始存储地址构建FPGA存储地址通知发送到所述磁盘阵列;所述磁盘阵列接收到所述FPGA存储地址通知后,向所述FPGA处理单元发送FPGA存储地址通知应答;
S3,所述磁盘阵列按照预定格式对所述待读取文件进行分包处理以构建若干文件内容帧发送给所述FPGA处理单元,所述文件内容帧包括对应的发送序号及所述待读取文件的相应数据,其中最后一帧所述文件内容帧、以及部分其他帧所述文件内容帧设置为需要应答;所述FPGA处理单元接收到所述文件内容帧后将其中所述待读取文件的相应数据写入对应的存储空间并对其进行保序处理,以记录相应的保序序号,同时丢弃发送序号与保序序号不一致的所述文件内容帧,并且当接收到的所述文件内容帧需要应答时,向所述磁盘阵列反馈相应的文件内容应答帧,所述文件内容应答帧包括对应文件内容帧的保序序号及其发送序号;
S4,所述磁盘阵列接收到所述文件内容应答帧后,判断所述文件内容应答帧中的所述保序序号与所述发送序号是否一致,如果不一致,则重新发送对应的所述文件内容帧至所述FPGA处理单元;
S5,所述磁盘阵列接收到最后一帧所述文件内容应答帧后,向所述FPGA处理单元发送相应的文件内容完成帧;所述FPGA处理单元接收到所述文件内容完成帧后,向所述磁盘阵列发送文件内容完成应答帧,文件读取操作结束。
2.根据权利要求1所述的基于FPGA高速读取磁盘阵列中文件的方法,其特征在于,所述步骤S1还包括:如果所述FPGA处理单元在预定时间内未收到所述读文件请求应答,则重新发送对应的所述读文件请求,如果超过预定次数仍未接收到所述读文件请求应答,则终止发送所述读文件请求,并输出一读文件请求错误报警。
3.根据权利要求1所述的基于FPGA高速读取磁盘阵列中文件的方法,其特征在于,所述步骤S2还包括:如果所述FPGA处理单元在预定时间内未收到所述FPGA存储地址通知应答,则重新发送对应的所述FPGA存储地址通知,如果超过预定次数仍未接收到所述FPGA存储地址通知应答,则终止发送所述FPGA存储地址通知,并输出一存储地址通知错误报警。
4.根据权利要求1所述的基于FPGA高速读取磁盘阵列中文件的方法,其特征在于,所述FPGA处理单元与所述磁盘阵列采用IP通信协议进行通信。
5.根据权利要求1所述的基于FPGA高速读取磁盘阵列中文件的方法,其特征在于,所述FPGA处理单元通过DMA的方式将所述待读取文件的相应数据写入对应的存储空间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510500763.7A CN105068766B (zh) | 2015-08-14 | 2015-08-14 | 一种基于fpga高速读取磁盘阵列中文件的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510500763.7A CN105068766B (zh) | 2015-08-14 | 2015-08-14 | 一种基于fpga高速读取磁盘阵列中文件的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105068766A CN105068766A (zh) | 2015-11-18 |
CN105068766B true CN105068766B (zh) | 2017-10-31 |
Family
ID=54498147
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510500763.7A Expired - Fee Related CN105068766B (zh) | 2015-08-14 | 2015-08-14 | 一种基于fpga高速读取磁盘阵列中文件的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105068766B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075416A (zh) * | 2010-12-17 | 2011-05-25 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现tcp连接数据缓存的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001028179A2 (en) * | 1999-10-14 | 2001-04-19 | Bluearc Uk Limited | Apparatus and method for hardware implementation or acceleration of operating system functions |
-
2015
- 2015-08-14 CN CN201510500763.7A patent/CN105068766B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102075416A (zh) * | 2010-12-17 | 2011-05-25 | 曙光信息产业(北京)有限公司 | 一种软硬件结合实现tcp连接数据缓存的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105068766A (zh) | 2015-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220311544A1 (en) | System and method for facilitating efficient packet forwarding in a network interface controller (nic) | |
US9154453B2 (en) | Methods and systems for providing direct DMA | |
JP5828966B2 (ja) | Pcieスイッチング・ネットワークにおけるパケット伝送を実現する方法、装置、システム、及び記憶媒体 | |
US7561573B2 (en) | Network adaptor, communication system and communication method | |
US7475167B2 (en) | Offloading data path functions | |
KR102505220B1 (ko) | 피씨아이이를 통한 알피씨 및 지알피씨 터널링을 이용한 스토리지 서비스 기반 엔브이엠이 에스에스디를 위한 신규한 방법 | |
US9003053B2 (en) | Message acceleration | |
JP4347247B2 (ja) | データ転送要求を実行するための方法、システム、およびプログラム | |
CN113490927B (zh) | 具有硬件集成和乱序放置的rdma输送 | |
US7676607B2 (en) | Hardware acceleration apparatus for iSCSI target system using TOE and method for performing read/write command using the apparatus | |
CN104583993B (zh) | 用于优化半活跃工作负荷的装置和方法 | |
US20140222960A1 (en) | Method and Apparatus for Rapid Data Distribution | |
US11303737B2 (en) | Method and device for data transmission | |
CN104025550B (zh) | 从数据项获得信息的方法及装置 | |
CN110087140B (zh) | 一种传输流媒体数据的方法、装置、介质及设备 | |
CN102790776A (zh) | 心跳连接归一处理方法、终端、服务器及通信系统 | |
CN102118434A (zh) | 数据包传输方法和设备 | |
TWI257790B (en) | System for protocol processing engine | |
EP3928213A1 (en) | Rdma transport with hardware integration | |
US20240220347A1 (en) | Network interface card, message sending method, and storage apparatus | |
CN110121868A (zh) | 通过被配置为加速服务的加速组件的消息传输 | |
US7580410B2 (en) | Extensible protocol processing system | |
CN105933325A (zh) | 一种基于NFSoRDMA的内核态RPC通信加速方法 | |
CN116260887A (zh) | 数据传输方法、数据发送装置、数据接收装置和存储介质 | |
US20120063463A1 (en) | Packet aligning apparatus and packet aligning method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171031 Termination date: 20200814 |
|
CF01 | Termination of patent right due to non-payment of annual fee |