CN109753285A - 一种基于fpga的xml解析器、可重构计算*** - Google Patents
一种基于fpga的xml解析器、可重构计算*** Download PDFInfo
- Publication number
- CN109753285A CN109753285A CN201811600605.9A CN201811600605A CN109753285A CN 109753285 A CN109753285 A CN 109753285A CN 201811600605 A CN201811600605 A CN 201811600605A CN 109753285 A CN109753285 A CN 109753285A
- Authority
- CN
- China
- Prior art keywords
- xml
- memory
- resolved
- module
- dom tree
- 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.)
- Granted
Links
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了一种基于FPGA的XML解析器,包括一个用于解析XML文件的基于FPGA的软硬件***,所述软硬件***用于从传输网络中下载来自于网络中的待解析的XML文件和一块连续内存的内存首地址;所述软硬件***还用于对接收的待解析XML文件进行解析,并封装解析后的解析数据后,依照所述连续内存的内存首地址,将封装的解析数据写入到PC端指定的连续内存中。该XML解析器能够实现高效解析性能,保证了解析器的实用性。
Description
技术领域
本发明涉及计算机可重构加速领域,具体涉及一种基于FPGA的XML解析器以及一种可重构计算***。
背景技术
可重构计算是一种新型的计算模式,在加速领域备受青睐。与通用处理器CPU等相比,可重构计算具有可定制性的优点,能够为应用定制电路实现加速效果;与专用集成电路ASIC相比,可重构计算能够根据需要实现内部电路重构,更具有灵活性。FPGA即现场可编程逻辑阵列正是一种可重构硬件,本质上是一种无指令、无共享内存的体系结构,能够更好地对一些计算密集型任务进行加速。
在网络传输世界中,XML正逐渐成为web服务的通用语言,其中XML解析是基于XML应用的核心任务。基于树的DOM模型,即文本对象模型是W3C推荐的标准模型。DOM解析过程需要将文本整个读入内存进行解析,当遇到较大的XML文档时解析过程会变慢。
CPB(cycle per byte)即解析每个字节所需周期数,是对XML解析器性能评价的一个重要标准。现有的XML解析器中,软件实现加速的XML解析器都基于通用的CPU,性能受限于CPU的处理性能及操作***调度策略等,由于本身的串行性,效果远不如硬件解析。
硬件实现加速的XML解析器大多是基于FPGA实现的。就目前研究情况而言,已经实现了超越1CPB限制的集成语法检查、语义检查、DOM树构建的高性能XML解析器。但在实现过程中,所有的待解析文本,包括解析后的内容都存储在FPGA上,相对于外界而言是独立的,而实际XML应用是在软件层面的,因此不利于投入到实际应用中。
申请公布号为CN104267998A的专利申请公开了一种基于滑动窗就似乎的硬件XML解析器。包括:初始化存储单元、栈间寄存器、用于产生滑动窗的数据发射模块、用于将XML文档的字符流提取为令牌的词法分析模块、采用XML语法规则对XML文档的令牌进行检查的格式检查模块和XML文档树构建模块,其中:初始化存储单元与数据发射模块相连并传输XML文档的初始化信息,数据发射模块与词法分析模块相连并传输滑动窗信息,词法分析模块与格式检查模块以及XML文档树构建模块相连并传输令牌信息,XML文档树构建模块与内存相连并传输XML文档树信息,用于提高吞吐率的栈间寄存器设置于各相连模块之间。该硬件XML解析器解析后的内容都存储在硬件上,实际XML文件不利于投入到实际应用中。
发明内容
本发明的目的是提供一种基于FPGA的XML解析器,具体采用软硬件协同编程的设计思路,在软件和硬件上同时规定解析接口,软件通过网络将XML文本传输至FPGA处理,随后FPGA返回软件能够直接识别的数据内容,使得整个XML文本在流动中完成解析并投入应用,实现XML高效解析性能的同时,保证解析器的实用性。
本发明的另一目的是提供一种可重构计算***,该可重构计算***包含一个基于FPGA的XML解析器,该可重构计算***能够实现快速的计算任务。
为实现上述发明目的,本发明提供以下技术方案:
一种基于FPGA的XML解析器,包括一个用于解析XML文件的基于FPGA的软硬件***,所述软硬件***用于从传输网络中下载来自于网络中的待解析的XML文件和一块连续内存的内存首地址;
所述软硬件***还用于对接收的待解析XML文件进行解析,并封装解析后的解析数据后,依照所述连续内存的内存首地址,将封装的解析数据写入到PC端指定的连续内存中。
优选地,所述软硬件***包括:
输入输出模块,用于下载待解析XML文件和一块连续内存的内存首地址,并将待解析XML文件转发到语法解析模块,还用于对构建的DOM树进行封装,并依照所述连续内存的内存首地址,控制封装的DOM树写入到PC端指定的连续内存中;
语法解析模块,用于对接收的待解析XML文件进行词法检查、元素嵌套关系检查以及属性名唯一性检查,并生成状态信息作为DOM树构建模块的控制信号;
DOM树构建模块,用于在所述控制信号的控制下,对接收的待解析XML文件进行解析,并根据解析结果构建待解析XML文件的DOM树。
其中,所述输入输出模块包括:
输入缓冲区域,用于将下载的待解析XML文件以AXI4stream形式传递到语法解析模块;
输出缓冲区域,用于封装构建的DOM树,并控制封装的DOM树写入到PC端指定的连续内存中。
所述语法解析模块包括:
词法检查模块,用于提取待解析的XML文本的标记,所述词法检查模块还包含一个XML词法的状态机,该状态机受所述XML文本数据流的驱动产生一个状态,作为DOM树构建模块的控制信号;
元素嵌套关系检查模块,用于检查待解析XML文件的开闭标签是否具有严格的匹配关系;
属性名唯一性检查模块,用于检查待解析XML文件中的每一个元素的所有属性名是否各不相同。
进一步地,采用布隆过滤器实现属性名唯一性检查。
具体地,所述DOM树构建模块包括:
控制器,受所述语法解析模块产生控制信号的控制下,将待解析XML文件解析成元素节点、属性节点、以及内容节点;
内容节点存储器,受所述控制器控制自动存储内容节点;
属性节点存储器,受所述控制器控制自动存储属性节点;
元素节点存储器,受所述控制器控制自动存储元素节点;
节点栈,用于保证DOM树的正确构建;
所述控制器受所述语法解析模块产生控制信号的控制下,将内容节点存储器、属性节点存储器以及元素节点存储器中的元素节点、属性节点、以及内容节点自动按照固定格式排列,形成DOM树。
一种可重构计算***,包括:
至少一个上述的基于FPGA的XML解析器,所述XML解析器从网络中获取待解析XML文件,并对待解析XML文件进行解析,生成DOM树,并将DOM树写入到PC端指定的连续内存中;
至少一个PC端,所述PC端与所述XML解析器通信连接,从PC端指定的连续内存中加载并应用DOM树包含的数据。
在另外一个事实方式中,所述可重构计算***还包括路由器,网络中的待解析XML文件经路由器路由到所述XML解析器,所述XML解析器解析获得的DOM树经所述路由器路由到所述PC端。
与现有技术相比,本发明具有的有益效果为:
本发明的XML解析器采用软硬件协同编程的方式,与其他同类型的XML解析器相比,既具有硬件解析的高效性,同时又直接与客户端软件应用相关联,解析结果能够直接被软件所接受,具有良好的实用性与可扩展性。同时,软硬件协同编程的设计方式可以应用于可重构计算的其他领域,解决硬件加速研究与实际应用相脱节的问题。
本发明提供的可重构计算***因为包含了能够快速解析XML文件的XML解析器,因此能够实现快速的计算任务。
附图说明
图1是实施例提供的基于FPGA的XML解析器的硬件结构示意图;
图2是实施例提供的可重构计算***的结构示意图;
图3是实施例提供的另一个可重构计算***的结构示意图;
图4是实施例提供的多任务条件下可重构计算***的结构示意图;
图5是实施例提供的元素节点、属性节点、内容节点的存储结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
如图1所示,实施例提供了一种基于FPGA的XML解析器,该XML解析器包括硬件部分与软件部分两部分。硬件部分由FPGA硬件承担,负责XML文件的解析任务,软件部分接入正常的基于XML解析的应用。硬件与软件之间采用网络高速通信通道。XML文本文件通过软件发送至FPGA端,FPGA端按照PC端XML解析应用软件的要求,解析成能够识别的部分,完成后通过网络传回PC端,写入内存中,软件能够直接调用该内存的内容。
具体地,软件部分通过网络向FPGA端发送待解析XML文本与一块连续内存的内存首地址。待硬件解析完毕后,将硬件通过网络返回的数据依次写入内存,在PC端的基于XML的应用中能够直接正常使用解析好的内存中的数据。
具体地,硬件部分的FPGA具体包括输入输出模块(IO模块)、语法解析模块(well-formed checking模块)以及DOM树构建模块(DOM Constructor模块)。其中输入输出模块负责与PC端的数据交互,语法解析模块负责将输入的XML文本进行初步解析,转化成状态机,进一步驱动之后的DOM树构建过程。DOM树构建过程即将XML文本解析成计算机可识别的内存数据的过程。
其中,IO模块即与PC端交互的接口部分,通过光纤网络接口进行高速通信。IO模块还设置了缓冲区,将PC端传入的XML文本文件以AXI4stream形式传递到语法解析模块。解析完毕后,FPGA片上对应内存的内容依次被扫描输出,以AXI4stream数据流的形式传递到IO模块,之后封装成数据包通过光纤接口网络返回PC。
语法解析模块所实现的主要内容为词法检查、元素嵌套关系检查与属性名唯一性检查。词法检查即对XML文本输入流进行处理,提取标记,用输入的XML文本数据流驱动一个包含XML词法的状态机(scanner),产生状态(state),作为下一个处理单元的控制信号。元素的嵌套关系指的是XML的开闭标签具有严格的匹配关系。元素本身可以嵌套,这需要使用一个栈(stack)来实现。属性名的唯一性检查是指每一个元素的所有属性名是否各不相同,这里需要使用布隆过滤器(Bloom filter)技术实现。
DOM树构建模块所实现的主要内容就是将数据记录到指定的内存中,这个过程涉及到存储结构设计。通过对XML解析后的内容进行分析,将XML解析后得到的结果抽象成三种数据结构存储起来:元素节点、属性节点、内容节点。三类节点分别存放在三个各自连续的存储结构中,在FPGA端通过三个硬件存储模块Content memory、Attribute memory、Nodememory实现。三类节点中存储PC端软件能够直接识别的数据与地址信息,生成的存储结构关系如附图5所示。在存储数据结构的基础上,通过增加控制器,根据词法检查所生成的状态,可以实现DOM树的自动生成。同时,使用节点栈(Node stack)保证语法树的正确构建。生成的DOM树送到相应的存储模块中暂存。
实施例还提供了一种可重构计算***,即一般情况下,上述XML解析器的应用场景,如图2所示,该可重构计算***包括一个上述基于FPGA的XML解析器,还包括一个PC端,PC端与XML解析器通信连接。应用时,需事先将程序写入FPGA板子中,FPGA与PC端通过网络接口互联。这时PC端的XML应用程序从网络中获取XML文本文件并转发给FPGA做处理。FPGA端解析完毕后将含有DOM树的内存写回PC端指定内存位置,并应用,实现XML硬件解析软件应用的功能。
实施例还提供了另一种可重构计算***,如图3所示,该可重构计算***包括一个上述基于FPGA的XML解析器,还包括一个PC端和路由器,这种情况下,FPGA作为一个外设具有一个对应的网络端口地址,如图3。在该应用条件下,需事先将程序写入FPGA板子中,FPGA与PC分别与接入互联网的路由器互联。网络中XML应用程序中的XML文本文件直接由路由器发送到硬件解析器上,解析完毕后数据再通过路由器转发到PC端指定内存位置,并应用,实现XML硬件解析软件应用的功能。
实施例还提供了一种多任务条件下可重构计算***,如图4所示,该可重构计算***包括一个上述的基于FPGA的XML解析器,和与XML解析器通信连接的PC端。在多任务条件下,可以通过在FPGA中开辟多个解析单元与解析端口的方式实现,具体地,需事先将程序写入FPGA板子中,FPGA与PC端通过网络接口互联。这时PC端的XML应用程序从网络中获取多个XML文本文件并转发给FPGA做处理。FPGA端解析完毕后分别将含有DOM树的内存写回PC端指定内存位置,并应用,实现多任务XML硬件解析软件应用的功能。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种基于FPGA的XML解析器,包括一个用于解析XML文件的基于FPGA的软硬件***,其特征在于:
所述软硬件***用于从传输网络中下载来自于网络中的待解析的XML文件和一块连续内存的内存首地址;
所述软硬件***还用于对接收的待解析XML文件进行解析,并封装解析后的解析数据后,依照所述连续内存的内存首地址,将封装的解析数据写入到PC端指定的连续内存中。
2.如权利要求1所述的基于FPGA的XML解析器,其特征在于,所述软硬件***包括:
输入输出模块,用于下载待解析XML文件和一块连续内存的内存首地址,并将待解析XML文件转发到语法解析模块,还用于对构建的DOM树进行封装,并依照所述连续内存的内存首地址,控制封装的DOM树写入到PC端指定的连续内存中;
语法解析模块,用于对接收的待解析XML文件进行词法检查、元素嵌套关系检查以及属性名唯一性检查,并生成状态信息作为DOM树构建模块的控制信号;
DOM树构建模块,用于在所述控制信号的控制下,对接收的待解析XML文件进行解析,并根据解析结果构建待解析XML文件的DOM树。
3.如权利要求2所述的基于FPGA的XML解析器,其特征在于,所述输入输出模块包括:
输入缓冲区域,用于将下载的待解析XML文件以AXI4stream形式传递到语法解析模块;
输出缓冲区域,用于封装构建的DOM树,并控制封装的DOM树写入到PC端指定的连续内存中。
4.如权利要求2所述的基于FPGA的XML解析器,其特征在于,所述语法解析模块包括:
词法检查模块,用于提取待解析的XML文本的标记,所述词法检查模块还包含一个XML词法的状态机,该状态机受所述XML文本数据流的驱动产生一个状态,作为DOM树构建模块的控制信号;
元素嵌套关系检查模块,用于检查待解析XML文件的开闭标签是否具有严格的匹配关系;
属性名唯一性检查模块,用于检查待解析XML文件中的每一个元素的所有属性名是否各不相同。
5.如权利要求2或4所述的基于FPGA的XML解析器,其特征在于,采用布隆过滤器实现属性名唯一性检查。
6.如权利要求2所述的基于FPGA的XML解析器,其特征在于,所述DOM树构建模块包括:
控制器,受所述语法解析模块产生控制信号的控制下,将待解析XML文件解析成元素节点、属性节点、以及内容节点;
内容节点存储器,受所述控制器控制自动存储内容节点;
属性节点存储器,受所述控制器控制自动存储属性节点;
元素节点存储器,受所述控制器控制自动存储元素节点;
节点栈,用于保证DOM树的正确构建;
所述控制器受所述语法解析模块产生控制信号的控制下,将内容节点存储器、属性节点存储器以及元素节点存储器中的元素节点、属性节点、以及内容节点自动按照固定格式排列,形成DOM树。
7.一种可重构计算***,其特征在于,包括:
至少一个如权利要求1~6所述的基于FPGA的XML解析器,所述XML解析器从网络中获取待解析XML文件,并对待解析XML文件进行解析,生成DOM树,并将DOM树写入到PC端指定的连续内存中;
至少一个PC端,所述PC端与所述XML解析器通信连接,从PC端指定的连续内存中加载并应用DOM树包含的数据。
8.如权利要求7所述的可重构计算***,其特征在于,所述可重构计算***还包括路由器,网络中的待解析XML文件经路由器路由到所述XML解析器,所述XML解析器解析获得的DOM树经所述路由器路由到所述PC端。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600605.9A CN109753285B (zh) | 2018-12-26 | 2018-12-26 | 一种基于fpga的xml解析器、可重构计算*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600605.9A CN109753285B (zh) | 2018-12-26 | 2018-12-26 | 一种基于fpga的xml解析器、可重构计算*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109753285A true CN109753285A (zh) | 2019-05-14 |
CN109753285B CN109753285B (zh) | 2023-07-04 |
Family
ID=66404067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811600605.9A Active CN109753285B (zh) | 2018-12-26 | 2018-12-26 | 一种基于fpga的xml解析器、可重构计算*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109753285B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764808A (zh) * | 2021-01-21 | 2021-05-07 | 西安羚控电子科技有限公司 | 一种跨***、跨语言、跨硬件部件进行接口通讯的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411602A (zh) * | 2011-08-15 | 2012-04-11 | 浙江大学 | 一种基于 fpga 实现的xml 并行投机解析方法 |
CN102646039A (zh) * | 2012-02-29 | 2012-08-22 | 河海大学 | 基于XML Schema的软件界面生成***及方法 |
CN103049439A (zh) * | 2011-10-11 | 2013-04-17 | 腾讯科技(深圳)有限公司 | 标记语言文档的处理方法及浏览器和网络操作*** |
US20140101456A1 (en) * | 2012-10-10 | 2014-04-10 | Xerox Corporation | Confidentiality preserving document analysis system and method |
CN104267998A (zh) * | 2014-10-13 | 2015-01-07 | 上海交通大学 | 基于滑动窗技术的硬件xml解析器 |
-
2018
- 2018-12-26 CN CN201811600605.9A patent/CN109753285B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102411602A (zh) * | 2011-08-15 | 2012-04-11 | 浙江大学 | 一种基于 fpga 实现的xml 并行投机解析方法 |
CN103049439A (zh) * | 2011-10-11 | 2013-04-17 | 腾讯科技(深圳)有限公司 | 标记语言文档的处理方法及浏览器和网络操作*** |
CN102646039A (zh) * | 2012-02-29 | 2012-08-22 | 河海大学 | 基于XML Schema的软件界面生成***及方法 |
US20140101456A1 (en) * | 2012-10-10 | 2014-04-10 | Xerox Corporation | Confidentiality preserving document analysis system and method |
CN104267998A (zh) * | 2014-10-13 | 2015-01-07 | 上海交通大学 | 基于滑动窗技术的硬件xml解析器 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112764808A (zh) * | 2021-01-21 | 2021-05-07 | 西安羚控电子科技有限公司 | 一种跨***、跨语言、跨硬件部件进行接口通讯的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109753285B (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Vieira et al. | Fast packet processing with ebpf and xdp: Concepts, code, challenges, and applications | |
AU2017238633B2 (en) | Efficient state machines for real-time dataflow programming | |
EP1307828B1 (en) | Xml-robot | |
US7454696B2 (en) | Method and apparatus for stream based markup language post-processing | |
US20070136698A1 (en) | Method, system and apparatus for a parser for use in the processing of structured documents | |
CN101329665A (zh) | 解析标记语言文档的方法和解析器 | |
Dai et al. | A 1 cycle-per-byte XML parsing accelerator | |
KR20090064374A (ko) | 데이터 구조를 모듈형 유한 상태 변환기로 변환하는 방법, 컴퓨터 판독가능 매체, 변환 프레임워크, 및 컴파일러 | |
Zhang et al. | A table-driven streaming xml parsing methodology for high-performance web services | |
CN109753285A (zh) | 一种基于fpga的xml解析器、可重构计算*** | |
CN100470483C (zh) | 用于协作处理的***,设备及方法 | |
Guerrouat et al. | A component-based specification approach for embedded systems using FDTs | |
del Mar Gallardo et al. | Pixl: Applying xml standards to support the integration of analysis tools for protocols | |
Nottingham | GPF: A framework for general packet classification on GPU co-processors | |
Loehr | Lucid: A High-Level, Easy-To-Use Dataplane Programming Language | |
Sidhu | High throughput, tree automata based XML processing using FPGAs | |
Štefanič | Developing the guidelines for migration from RESTful microservices to gRPC | |
Ritter et al. | Industry Paper: Hardware Accelerated Application Integration Processing | |
Ciminiera et al. | A practical study of semi‐automatic OSI protocol implementation | |
Pennefather et al. | FRAME: Frame Routing And Manipulation Engine | |
König | Using Interpreters for Scheduling Network Communication in Distributed Real-Time Systems | |
SANTOS et al. | Fast Packet Processing with eBPF and XDP: Concepts, Code, Challenges and Applications | |
Lombardo et al. | An extended algebra for the validation of communication protocols | |
Leue et al. | OpParIm: a method and tool for optimized parallel protocol implementation | |
Baker et al. | Design and Implementation of The Java Embedded Micro-kernel Software Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |