CN100380322C - 硬件加速的验证解析器 - Google Patents
硬件加速的验证解析器 Download PDFInfo
- Publication number
- CN100380322C CN100380322C CNB2003801061661A CN200380106166A CN100380322C CN 100380322 C CN100380322 C CN 100380322C CN B2003801061661 A CNB2003801061661 A CN B2003801061661A CN 200380106166 A CN200380106166 A CN 200380106166A CN 100380322 C CN100380322 C CN 100380322C
- Authority
- CN
- China
- Prior art keywords
- data
- token
- state table
- control word
- conversion
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Devices For Executing Special Programs (AREA)
- Document Processing Apparatus (AREA)
- Computer And Data Communications (AREA)
Abstract
提供一种硬件加速验证解析器,通过根据令牌并行访问状态表和数据字典以及对其各自的输出进行合并和选择性的改向,从而消除来自主处理器的验证解析的大部分(如果不是全部)的处理和开销;通过上述合并的数据形成的一部分转换控制字(TCW)被用于在状态表中前进,一部分TCW被用于控制与以例如XMLTM等支持互联性和平台无关性的语言编写的文本文件对应的树形结构数据对象的形成。提供堆栈以提供嵌套元素和集合元素。优选地,TSDO的形成可异步执行,并与验证解析并行、自动地执行。
Description
说明
发明背景
发明领域
本发明一般涉及对在通过网络互联的单个数据处理器中使用的解析和验证文件,例如XML文件,进行验证解析器处理,尤其涉及用于对这些文件的验证进行加速的硬件验证处理器。
现有技术的描述
近几年来,在计算机和将计算机连接到网络中的链路之间的数字通信领域得到了迅速的发展,这与几年前个人计算机的迅速增长在许多方面都是相类似的。这种在远程处理的互连性和可能性方面的增长极大地增加了在上述网络系统中的单个计算机的有效性能和功能。然而,单个计算机和系统的用途以及当计算机被置入服务时它们的用户的喜好和技术状态这些方面的多样性已经造成了个人机器及它们的操作系统的性能和配置产生了基本程度的变化,个人机器及它们的操作系统共同地被称为“平台”,这些平台通常在某些程度上相互不兼容,尤其是在操作系统和程序语言的层面上。
平台特性和对通信能力和远程处理能力以及为了支持它的足够程度的兼容性的同时需求的这种不兼容已经导致了面向对象程序设计的发展(其接纳了这样一种概念,即,通过实体、属性和关系的参考系统将应用程序以及数据集合为一组或多或少通用的模块)和大量体现这种概念的程序设计语言。可扩展标记语言TM(XMLTM)就是这样的语言,它其已经得到广泛的使用,并且能够作为文件而在任意构造和体系结构的网络上传输。
在这样的语言中,某些字符串与某些指令或标识符相对应,包括特殊字符和其它重要的数据(它们集合起来被称作控制字),其允许数据或操作有效地进行自我识别以便它们可以在随后被当作“对象”,这样,相关的数据和命令可被以不同语言翻译成不同应用程序的适当格式和命令,从而产生各个相连的平台的足以支持在给定机器处的期望的处理的一定程度的兼容性。这些字符串的检测通过称为解析(parsing)的操作来实现,这与将表达式(例如句子)的语法分解为其组成部分以及对其进行语法描述的更常规的应用类似。
当解析XMLTM文件时,大部分和可能主要的中央处理器(CPU)执行时间被用来遍历该文件搜索控制字、特殊字符和其它被定义作为正在被处理的具体XMLTM的规范的重要数据。此举典型地通过软件来完成,该软件查询每个字符并确定它是否属于预定义的感兴趣字符串的集合,例如,一组包括“<command>”、“<data type=dataword>”、“</command>”等的字符串。如果目标字符串的任意一个被检测到,则令牌被保存,该令牌具有在文件中指向用于令牌的起点和长度的位置的指针。这些令牌被积累直到全部文件被解析。
随后这个过程必须跟随有处理,以便对照包含在“文件模型”(例如文件类型定义(DTD)规范或XMLTM规范)中的规则和定义来评估令牌,以确保令牌的收集和它们在文件中所表示的字符串是良好构造的,以形成无歧义和内部一致的文件。这些处理通常称为验证,并通常以与上面讨论的用于查找感兴趣的字符串的处理几乎相同的方式来进行,但其对除了表示字符节的单个8位(或更长)字节的字节序列相对应的16位(或更长)令牌进行操作,并检测令牌和其它令牌的内容或变量(argument)之间一致性以提供支持平台无关性和互联性的语言的自定义特征和性能,这些平台无关性和互联性的语言例如XML、SGMLTTM(XMLTM是其简化形式)和HTMLTM(其本质上是XMLTM的特例)。
用于查找令牌的解析和用于验证的解析通常都使用概念性的基于表格的有限自动机(FSM)或状态表来实现以搜索这些感兴趣的字符串或者找到的并由令牌表示的元素之间的一致性(consistency)。状态表位于存储器中,它被设计为在文件中搜索字符或令牌的具体模式(specificpattern)。为了解析以查找感兴趣的字符串,当前的状态被用作进入状态表的基址,输入字符或令牌的ASCII表示是进入该表的索引。感兴趣的字符串可具有几种类型中的任意一种,例如是元素、属性/属性表或数据,元素可为简单元素或者是集合(aggregate)且可被嵌套。用于验证的解析主要是查看字符串所表示的类型和自我嵌套以确定哪些元素或令牌与另外的特殊令牌有关,以及确定它们之间的分级关系。
这些处理的目标不仅是确定该文件是否是符合语言(例如XMLTM)标准以及在它的整体上具有由DTD或XMLTM规范定义的正确结构的有效文件,而且还开发了分级数据结构,例如树形结构文件对象,其中这种结构将完全代表数据的信息内容。因此,虽然解析以查找感兴趣的字符串非常耗时和消耗处理器时,但是用于验证的解析更是如此。也就是说,因为(例如)XMLTM数据是文本的,而且不仅数据还有数据结构(其可被自由地说明以表述信息内容)必须从这种文本中提取,所以可容易地理解为这种所需的处理是特别耗时和消耗处理器的。
同时,需要的适当处理集合元素和灵活嵌套(其可以多层次级别)的处理的潜在的复杂性使得专用或硬件处理器的使用变得复杂,从而降低了本地计算机的CPU上的处理负荷。也就是说,尽管通常认为专用或硬件处理器因为降低了控制专用处理器自身的开销而经常能提供与专用处理器相比增加的处理速度,但在处理功能变得更复杂或更需要灵活性时,不能确定专用处理器是否切实可行或是否能在性能上提供显著的优点。通常,增加的复杂性和/或对功能的灵活性的需求只能通过硬件需求的进一步增加来提供,这对于许多应用或者可能的性能增益来说可能是不经济的。由于这一原因,不管需要的处理时间是多少,验证解析已经在编程通用计算机上执行。
发明内容
本发明提供了一种用于验证处理的硬件加速器,其中以有限的硬件获得实质性能增益。
为了实现本发明的这些或其它目标,提供用于以支持平台无关性和互联性的计算机语言编写的令牌化的文本文件的加速验证解析的方法和硬件加速验证解析器,包括:用于根据令牌从数据字典和状态表检索数据的装置、用于将来自状态表和数据字典的数据进行合并以形成转换控制字的加法器、用于将转换控制字的部分和其它令牌合并以从状态表检索更多数据的加法器,以及用于在转换控制字的部分的控制下形成对应于令牌化的文本文件的树形结构数据对象(tree structured data object)的逻辑电路(logic)。
附图的简要说明
前述和其它目标,方面和有益效果在参照附图对本发明的优选实施方式进行详细的描述后将会被更好地理解,其中:
图1是根据本发明的硬件验证解析加速器的高层次示意图;
图1A是示例性的说明其构成的树形结构文件对象图;
图2是根据本发明的状态表的优选的逻辑布局的图;
图3是表示状态表条目(entry)的优选格式的图;
图4是表示根据本发明的图1的元素和属性缓冲器的优选的逻辑布局的图;
图5是优选的示例性数据字典条目格式的图;
图6是表示根据本发明的转换控制字(TCW)的优选逻辑布局的图;
图7是表示图1中示意地表示的验证解析加速器的操作概况的流程图;
图8是表示本发明操作以执行TCW更新规则的流程图;以及
图9、10和11A-11E是表示TCW操作的流程图。
本发明的优选实施方案的详细说明
现在参照附图,更具体地参照图1,图1以高级别示意形式示出了根据本发明的硬件验证解析加速器的概况。可以理解,本发明对已经被解析用于提供或设置令牌的文件进行操作,其中,令牌与通常的文本格式的原始文件(典型地为XMLTM文件)中感兴趣的字符串相对应。(尽管本发明将结合解析XMLTM文件的优选应用来进行描述,但可以理解,将从下面的描述中更加明显的本发明的原理也可应用于解析以任何程序设计语言表示的文件,具体地说,可应用于面向对象的程序设计语言,根据固定的或用户可定义的规则识别与其相关的对象和它们的结构)这种令牌化的文件存储在存储器/缓冲器110中,存储器/缓冲器110是根据分别包含文件基址、文件界地址(limit address)和文件下一地址的寄存器112、114和116来进行访问的。
令牌被顺次取回并存储在令牌缓冲器120中。部分令牌然后被用于提供到加法器130的地址(其提供进入状态表160的地址)、进入数据字典150和到命名空间(namespace)映射存储器(避免可能由不同开发者对不同的文件使用同样的元素名的问题的XMLTM的事件(incident),这是本领域技术人员应该理解的,不需要进行进一步讨论)140的地址的一部分。对于通过寄存器152提供进入数据字典150的基址的命名空间映射存储器140,缺省地址是从寄存器142提供的。
考虑到非常高级别抽象的图1的其余部分,加法器170、转换控制字(TCW)寄存器180、堆栈190、加法器130和状态表160形成循环,通常由箭头A指示,其允许状态表从一个状态推进到另一个状态。堆栈190主要是在令牌被考虑以提供对嵌套的令牌的评估,以及确定双亲元素(parent element)和子女元素(child element)之间的联系和关系是否正确和良好构建时,为了交换令牌的顺序的目的。堆栈的控制由来自状态表160和基于当前令牌并行地得到的数据字典150的信息的组合而得到。因此,堆栈190可被看作提供XMLTM语法的特殊特征(例如集合),其将延迟到下面的详细讨论时进一步讨论。
因此,循环A的总的功能是从包括下一状态的状态表得到信息、进一步在加法器170对数据执行加法运算、从TCW寄存器180中的组合信号中获得用于创建最终的树形结构数据对象(TSDO)的数据、堆栈命令、中断和控制信号,以及将寄存器192和194中的基址和/或下一状态分别加到下一令牌。用于提供将节点增加到TSDO的控制信号的提取与当前令牌的验证相对应,检测到的错误将通过发出中断来表示。TCW主要是具有某些更新、中断以及应用了堆栈规则的数据字典150和状态表160的状态转换控制与控制标记的组合。
TCW寄存器因此运行以合并和改向(redirect)控制信号和从状态表160和数据字典150的内容之间检索到的数据(其代表令牌的允许的语法),以使得通过状态表的推进效果在某种意义上被控制以检测错误,以及如果没有错误被检测到,则分别根据属性缓冲器302和304供应的基址和界地址,利用在元素和属性缓冲器200缓冲的数据适当构建TSDO300。这一体系结构依靠通过状态表内容进行的调整(accommodation)而支持被用作数据字典的文件定义的标准和既定类型,其中,状态表内容可被任意地设置以实现上述支持。加速器处理单元100负责配合将在下面描述的本发明的操作以及构建TSDO。
同时还提供了与加速器处理单元接口的主处理器400,其被用于控制根据本发明的硬件加速器的操作的初始化。从下面将可以理解到由于利用了本发明的硬件加速器,验证解析处理中的主处理器400的任务被减少了,所需的操作只是进行简单的存储器访问和提供中断服务。本质上,几乎所有的对应于下列文件语法和元素嵌套和集合元素的验证处理开销被移到验证解析加速器,处理器操作被限制为对来自硬件加速器100的处理调用做简单响应(在需要时)。也可提供支持处理器以处理一些或所有来自硬件加速器100的处理调用。
具有上述的概况作为背景,有助于理解本发明的硬件加速验证解析器,以参照表示示例性TSDO的构成的图1A讨论该示例性的TSDO300,TSDO300是由本发明实现的验证解析处理的目标。TSDO优选地在存储器中构建为双向链表数据结构,每个单元(member)/节点具有7个元素(例如:兄弟元素(sibling element)、子女元素、属性表、名称长度、名称指针、值长度和值指针),如TSDO单元布局中所示。这样,被描述的8行元素(每一个符合TSDO单元布局)符合TSDO的8个个别单元,且水平偏移以指示兄弟和双亲/子女关系。
为了形成双向链表,几个元素的每个都包含两个指针p、n,分别指向包含具有指定类型或相同类型的前一元素和下一元素的前一单元和下一单元。因此,“下一兄弟元素指针”指向与当前单元具有相同缩进(indent)的单元。类似地,提供指向或者来自单元的属性表元素和属性的指针。“前一子女元素”指向双亲元素。如第三到五以及第二、六和七行所示,前和后指针形成兄弟单元之间的链。其余的元素是实际数据的长度和位置。根据这些信息,五个控制(例如:双亲节点、当前元素节点、当前属性节点、双亲元素和第一属性)优选地被提供以与当前的单元/节点符合,如图所示。这些控制主要跟踪当前单元是否是元素或属性,以及是否是它们所处在的节点、元素的属性表的第一属性、直接双亲单元和根节点。当每条信息的性质(nature)在TSDO的结构中被全面和清楚地定义的时候,跟随这些控制允许对树进行遍历以对期望的信息进行定位。
类似地,回顾根据其进行操作的数据文档的特性可能对理解本发明有帮助。在XMLTM的示例性情况中,元素和数据在文档中被具体化,该文档本质上是文本的但遵循可为不同类型的文件自由构建的规则。在文本文件中被具体化的规则实际上被总结在称为“文件模型”的文档中,该文件模型的文档被用于对文本文件进行验证,其可被考虑为与文本文档分离,虽然这是不需要但。这些规则可由开发者自由定义,但是存在一些标准化的规则集,其经常为方便起见而被使用。
在目前,定义由XMLTM文件或具有其它任意能共同使用的(interoperable)语言形式的文件遵循的规则的文档被称作文件模型,其通常遵循几种形式中的一种,尽管其它的形式还没有被完全开发出来。文件模型定义了可在文件内与可同给定的元素相关的属性一起出现的元素,其还定义了关于该文件的结构信息,例如元素的子女-双亲关系、子女元素可能出现的顺序、子女元素的数量,以及元素是否为空或是否可包括文本和属性的缺省值。文件类型定义(DTD)是XMLTM文件模型描述的一个公知的例子。
DTD语言被特别地开发出来用于定义SGMLTM文件的验证规则。如上所暗示,XMLTM是SGMLTM的简化的子集,DTD也可被用于定义XMLTM的验证规则。但是应该认识到,因为具体的文件或文件类验证所需要的信息必须相同而不管其被传输或使用的形式,所以在验证信息的表示类型(例如DTD和XMLTM规范)之间的变换在理论上应该是非常微不足道(trivial)的,在DTD方面的讨论应该可等同地应用于相同信息的任何其它形式。通过相同的令牌,非常复杂并强烈依赖于印刷标记(typographicalsymbol)的DTD语法的细节对本发明的原理不是重要性的,因此不需要详细讨论。
还应该理解到XMLTM文件(以及以其它支持平台无关性和互联性的语言编写的文件)主要提供数据结构,这些数据结构的使用需要可编程地(programmatically)遍历数据结构以可选择地访问数据的能力。能够读取XMLTM文件并提供对其内容和结构的访问的软件模块被称作XMLTM处理器或XMLTM API,虽然它是普通和推荐的惯例(practice)以将可接受的、商业上可得到的和工业标准的API能够在任何具有相同API的适应实现工具(compliant implementation)下运行,但是也可由开发者自由地实现。
当前有两种目前可被看作工业标准主要API规范:文件对象模型(DOM)和用于XMLTM的简单API(SAX)。因为DOM更一般化,所以下文将参照DOM描述本发明,因此本领域技术人员也能够使用SAX来实现本发明。DOM是基于XMLTM文件的内存储的树形表示法。当XMLTM文件被加载到处理器中时,该处理器必须构造适当表示该文件的内存储的树形结构。(相反地,验证本质上是遵循适当构造的文件的树形结构的构造。)DOM也定义了应该可被用来可编程地遍历XMLTM树和操纵其元素、值和属性的可编程的接口(包括方法和属性的名称)。换句话说,在验证过程中建立的TSDO数据结构支持DOM API或其它相似的允许使用该文件内容的API和实现工具。
将前述内容作为背景,可容易地理解,在通用计算机上使用软件对XMLTM或以其它支持互操作性的语言形式的文件进行验证解析的处理可能非常地消耗处理器,而且较慢,这是因为需要很多存储器访问来用于对关于内容、结构和语法(被指定用于DTD等的每个元素)进行多重比较。DTD等中的元素的数目在理论上是不受限制的(unlimited),并能够以相对简单的数据结构达到数千,同时子女元素和兄弟元素的属性数目可达到需要的大小,数据文件可容易地包含任意给定元素或属性的数以百万计的实例(instance)。换句话说,必须在通用处理器上以软件中提供的一般性处理(generality)导致了主要的处理复杂度和负荷。比较起来,可从下面的讨论中看出,根据本发明的硬件加速验证解析器以相对简单和一致的流水线的方式处理数据,用这种方式能以非常高的速度执行并需要相对少量的硬件,这是因为比较以及执行比较的规则在DTD(被包含于数据字典)中具体化,且信号出现在状态表条目中,状态表条目能被快速地合并和改向以控制与图1的循环A中的令牌的快速顺序评估并发的处理器的并行操作。
现在参照图2,状态表160的逻辑布局被示意性地示出。状态表根据具体的DTD等被构建并具有所有允许的元素。同样应该理解,因为下一状态在部分地以16位令牌值索引的各自状态表条目(如图3所示,下面将讨论)中被指定,所以令牌实际上包含下一状态。如图1所示,在加法器130处,令牌缓冲器120中的值(或该值的一部分)与状态表基址和下一状态偏移地址组合以访问状态表中的条目。
具体地,优选地以片段的形式提供通过状态表基址索引的状态表以减小高速存储需求,然后使用令牌(其可通过使用调色板(pallette)机制进行优化)对状态表的列进行索引,而通过下一状态偏移对行进行索引。这种情况下,这三部分地址可被简单连接(concatenate)以形成完整地址,例如通过简单地将来自各自地址部分源的寄存器的不同部分进行加载来形成。
状态表条目的优选的格式在图3中表示。每个状态表条目的长度优选地为64位,并被分为两个32位的字。当然,如本领域技术人员所显而易见的那样,也可使用其它格式。
反过来,低位地址字被分为16位令牌值和分别用于令牌标记和控制标记的两个8位标记字段。(令牌被优选地以与在同时提交的美国临时专利申请60/421,775(代理人的案卷号为FS-00766/02890051PR)中描述的硬件解析加速器一致的方式定义,其被完全并入本文作为参考,但根据它的基本原理,它们的形式对本发明的实施来说并不具有特别的重要性。但是在这一点上应该注意到:16位令牌值字段对于本发明来说有些多余,这是因为该令牌值已经被用于对状态表的列进行索引,从而可被指定为保留字段。)提供令牌标记主要用于跟踪嵌套、给定的元素是否是集合以及由令牌所表示的元素的类型。由字段的每个八位所表示的单独标记优选地分别为:增量嵌套(increment nesting)、元素是集合、新元素名、元素值、属性名、属性值、元素结束和减量嵌套(decrement nesting)。类似地,由控制标记字段的单个字节所表示的单个标记优选地分别为:设定结束到主处理器中断、设定到主处理器特殊中断、(保留)、停止状态表引擎处理(这些控制标记可被复制到如图9和10所示的TCW中)、保存元素或属性名、保存元素或属性值、字符调色板跳跃使能(skipenable)以及结束当前令牌,其中,字符调色板跳跃使能在很大程度上是多余的但被包含以与上面合并的申请中描述的硬件处理器加速器相对应,在这里可为保留字段。
来自状态表的这些数据与来自数据字典(与DTD、XMLTM规范等对应)的数据在加法器170合并,优选地为它们的级联,且部分合并的结果被提供到元素和属性缓冲器;其优选的逻辑布局在图4中被示意性地表示。数据字典条目的优选的格式在图5中示出。
数据字典优选地被构造为散列表;散列关键字在125处从令牌得到。数据字典条目的优选格式为128位长。这些条目从描述以XMLTM或其它支持互联性的语言编写的数据文件(将)遵循的规则的DTD、XMLTM规范等得到。(外部成分将DTD、XMLTM规范等内部的文本信息转换为数据字典格式,如本领域技术人员所公知的那样。因此不需要进一步讨论实际执行该转换的机制。)16个位容纳与来自寄存器120的当前令牌对应的令牌值,并被用于与来自状态表的令牌值信息比较以作为验证解析器正确操作的内部校验,具体地说是用于状态表和数据字典之间的同步校验。(也就是说,这一比较在通常的操作中不是必需的,但对于测试和调试是有价值的。)为堆栈命令标记提供4位,其中3位被使用(例如,分别用于进栈、出栈和传递),1位保留。堆栈命令标记表示(例如)给定元素所需要的元素的嵌套和集合。用于完成一个字节的另外4位也被保留。8位被提供用于字节标记。这些位被用于识别与元素相关的数据类型(例如布尔型、二进制、十进制等)。就8位来说,可使用该类型标记字段识别256种不同的数据类型。应该注意到,根据其基本原理,类型标记字段对于本发明的操作不是必需的,但它考虑到升级以允许值的验证以与元素数据类型进行匹配。这些字段的后面是三个32位字,分别提供状态表基址、两个指向数据模式和范围参考以及属性规则参考。上面的这些字段中,与当前令牌相关的堆栈命令标记、类型标记和状态表基址被指引到TCW寄存器180,而其余的被用于与令牌比较和/或对文件(例如,XMLTM)进行相关测试,优选地以可自由运行的、响应非常快速的专用逻辑电路来进行。
转换控制字(TCW)和被提供以缓冲它的寄存器180的优选的逻辑布局在图6中表示。理论上,缓冲寄存器的使用不是必需的但认为是理想的,因此优选地作为简单且便宜的权宜之计来确保数据和控制信号被改向时的同步性,如上所暗示。对于理解本发明来说,注意应用到TCW的信号源以及它们被导引到图1的验证解析器体系结构的各个部分是重要的。每个字段的源/接收器(source/sink)的细节在图8-10中示出。
如图6所示的TCW的优选的逻辑布局包括三个32位字,包括从数据字典接收并发送到寄存器194的状态表基址,以及从状态表接收并被发送到寄存器192的下一状态偏移。其余的32位包括:从数据字典接收并用于控制堆栈190操作的4位堆栈命令字段,4位集合状态标记字段(其中只有2位优选地用于表示当前令牌和/或前一令牌是否是集合,这是因为集合可在树形结构的不同层次上包括元素),从数据字典接收的8位类型标记字段(其来源在图8中示出,它们的用途在图10中示出,如上所述)和用于从状态表接收并用于控制如图10所示的EAB和TSDO操作的令牌标记和控制标记两个8位字段。数据字典令牌值字段没有从数据字典或状态表载入(carry over),这是因为(假设这些值顺利地比较)该令牌值在令牌缓冲器中很容易得到。
与特定令牌(具有为新的元素名设定的令牌标记)相关的令牌文本串的散列值被用于索引数据字典。令牌值是为令牌分配的特殊数值,其被用于查找状态表的列。有时候它是表示令牌是表示字符串文字或整数值的一般值。其它时间它是元素名或标签名的编码数。
再参照图4,现在对元素和属性缓冲器(EAB)进行更详细的讨论。本领域技术人员应该理解,体系结构的上述的部分已经使得数据可用,EAB的所有字段可通过主要包括存储器访问和比较的操作来从其填充,其中,该操作简单、直接且快速地由加速器处理单元来执行,而语法、嵌套和集合的跟踪和操作完全由有限状态机和根据本发明的相关加速器寄存器来处理。
具体地,给定的被解析的元素可为任何一种元素类型、属性类型或值类型;其中的每一个在TSDO300中必须不同地处理。EAB收集和保持指向具体节点(在TSDO中还没有被放置)周围的属性或数据的指定结构(structure-specifying)指针以在完成时创建双向链表结构TSDO,如上参照图1A所暗示。关于EAB的具体字段,元素嵌套开始和结束计数可从上面结合图3描述的令牌标记(例如第1和第8位)直接计算/累计,而用于元素和属性的名称基址和长度,以及它们与每个令牌对应的值可容易地从令牌缓冲器120得到。双亲/子女和集合的关系和类型,以及用于TSDO300的当前节点的控制信息直接从如图6所示的TCW得到,在令牌化的文件的每个元素/令牌被验证时允许新的节点加到TSDO。
现在参照图7,总结根据本发明的硬件验证解析加速器100的整体操作和功能。硬件加速器的操作从通过为状态表160和数据字典150加载数据的初始化开始(705,710),被加载的数据与待被解析和验证的具有例如上面讨论的优选格式的文件相对应。接着,该待被验证的令牌化的文件被加载到存储器110中(715),堆栈控制寄存器和状态表基址被初始化(720,725),下一状态偏移被设定为初始状态(730)。
对令牌化的文件的处理从提取(735)第一(或下一)令牌到令牌缓冲器120中开始。令牌被散列成用于数据字典查找操作的散列关键字。查找操作740然后在存储器140中执行以更新数据字典基址,查找操作745能使用该地址在与该数据字典基址对应的数据字典150中执行。状态表可使用状态表寄存器192和194通过加法器130提供的新的令牌和当前内容而被并发访问750。接下来,通过加法器170,TCW寄存器根据下面将结合图8和9详细讨论的规则用从数据字典150和状态表160得到的数据进行更新755。EAB200然后根据基于TCW中的标记设置的规则进行更新760。如果在TCW中根据包含在状态表条目中的控制标记设定中断标记,则可同时将中断发送到主处理器。如果没有中断,则EAB中收集的信息根据TCW中的基于令牌和控制标志设置的规则被加765到TSDO,并在检查是否设置中断770,上述TCW也从被访问的状态表条目中得到。同时,进栈、出栈或传递操作(pass through)775在堆栈190中执行以支持多级集合(例如由其它XMLTM元素组成的XMLTM元素)。除非数据被推到堆栈顶端,新的基址和下一状态偏移数据将从该堆栈输出,寄存器192和194被更新780。通过上面的过程,硬件加速器现在已经验证了令牌并将节点加到TSDO,且通过重复上面的过程对下一令牌复位(为了对寄存器192、194的语法、嵌套和集合元素进行适当评估)。
TCW更新规则非常简单,在图8中表示。首先,令牌标记、控制标记和下一状态偏移字段从状态表条目被复制805到TCW寄存器/缓冲器180。然后,在集合状态标记字段内,“当前元素是集合”标记被复制810到“前一元素是集合”标记中。如果(815)“新的元素名”标记在令牌标记字段中被设置,那么“堆栈命令”、“类型标记”和“状态表基址”字段被从数据字典输出复制820到TCW中,然后,如果(825)令牌标记字段中的“元素是集合”被设置,那么“集合状态标记”字段中的“当前元素是集合”标记位被设置830。否则,“当前元素是集合”标记被复位835。如果令牌标记字段中的“新的元素名”标记没有被设置,令牌字段中的“元素的结束”标记位和“元素是集合”标记位被设置,如840所确定的那样,那么堆栈命令字段“出栈”标记位被设置,类型标记和状态表基址字段被清除845,如图9所示。否则,堆栈命令字段“传递”标记位被设置,类型标记和状态表基址字段被清除850。
如图9所示,为了发出中断,从与当前令牌对应的条目的状态机输出直接得到的控制标记位被简单地并行跟随(如虚线箭头所表示)或者被并行地测试,以提供结束中断或特殊中断到主处理器,如在910或920处所示。类似地,如果堆栈命令(直接从数据字典150输出得到)是“进栈”,那么状态表基址和下一状态偏移被推到堆栈190顶端,状态表基址寄存器192和下一状态偏移寄存器194通过对应的TCW字段被更新,如在930处所示。如果堆栈命令标记符合“出栈”命令,那么状态表基址和下一状态偏移值从该堆栈中出栈,然后被用于分别更新寄存器192、194,如在940处所示。如果“传递”堆栈命令字段标记被设定,那么在堆栈190没有执行操作的情况下寄存器192、194通过各自的TCW字段被更新,如在950处所示。
类似地,EAB和TSDO中的操作也优选地由TCW中的标记控制,如图10所示。如果“元素的结束”令牌标记被设置且“元素是集合”令牌标记也被设置,则为了完成子女元素的TSDO操作(下面将要描述)被触发,如在1010处所示。否则,“保存属性名的元素”标记结合其它标记被用在操作1020和1030中(在下面的讨论中假设被设置)以基于可能在上述标记反映的元素类型触发适当的操作。如果(1021)“新元素名”标记被附加地设置,那么EAB中的元素名基址和元素名长度字段通过令牌缓冲器120被更新,元素值基址和长度字段在EAB中被清除1023。如果(1024)“属性名”标记被设置,那么属性基址和长度字段在EAB中根据令牌缓冲器120被复位1025,属性值基址和长度字段在EAB中被清除1026。如果(1031)“元素值”标记被设置,则元素值基址和长度字段通过令牌缓冲器被更新1032、1033。如果(1034)“属性值”标记被设置,那么属性值基址和长度字段通过令牌缓冲器120被更新1035、1036。总之,EAB200中的选择的字段根据元素类型被更新和清除。
如果“保存元素或属性名和“新的元素名”都被设置(如上所述),以及在TCW的集合状态标记字段中的“前一元素是集合”标记也被设置,那么开始“增加子女元素”操作的加法操作(下面将要描述)被触发,且EAB“元素嵌套开始计数”字段值被增加。否则,如果“前一元素是集合”标记没有被设置,那么在TSDO中“增加兄弟元素”操作被触发。
另一方面,如果“保存元素或属性”和“元素值”标记的组合被设定,那么“更新元素值操作”(下面描述)在TSDO中被触发。类似地,“保存元素或属性”和“属性值”标记的组合触发TSDO开始“增加属性”操作。
一旦被初始化,上面提到的五个TSDO操作就可在被启动的加速器处理单元400的控制下通过根据本发明的硬件验证解析加速器自动地执行,如上所述。这种处理可与验证解析操作同时执行,并进一步通过本发明支持处理的加速。所有这些操作都很简单、简短和直接,因此可以被快速执行并占用少的主处理器负担,如果有的话。
如图11A所示的“增加兄弟元素”操作包括分配新的TSDO条目、设置当前节点的“下一”指针为新分配的条目地址、设置新的条目“前一”指针为当前节点地址、复制EAB元素名基址和长度字段到新的条目中相应的字段(参见图1A)以及分别设置TSDO控制的“当前元素节点”和“元素第一属性”为新的条目并设置为空。图11B所示的“增加子女元素”的操作与“增加兄弟元素”的操作除了执行EAB“嵌套级开始计数”字段增加的加法步骤1110以外是相同的。
图11C所示的“完成子女元素”操作通过对形成的TSDO结构进行遍历到由“当前元素节点”TSDO控制字段指向的条目的开始的点,并使用兄弟元素“p”指针以在树形层次结构中上移,直到兄弟元素“p”指针变为空来执行。然后将该TSDO条目的“子女条目” “p”指针中的指针复制到“当前元素节点”TSDO控制字段。然后“嵌套条目开始计数”TSDO控制字段被复制到“嵌套级结束计数”TSDO控制字段, “嵌套条目开始计数”TSDO控制字段的值减小。图11D中所示的“更新元素值”TSDO操作只包括将元素值基址和长度EAB字段复制到被“当前元素节点”TSDO控制字段指向的TSDO条目的“值指针”和“值长度”字段。
“增加属性”TSDO操作首先分配新的TSDO条目,并将属性名基址和长度以及属性值基址和长度指针复制到新的条目。然后,如果(1120)“元素第一属性”TSDO控制寄存器为空,“当前属性节点”TSDO控制被设置以指向新的TSDO条目,当前节点的“n”和“p”指针和新的条目链接(如上所述),而当前节点的“元素第一属性”被设置为新的条目(例如,在“p”指针被加到新的条目之前)。如果元素第一属性不为空,那么当前节点的“n”和“p”指针和新的条目链接,“当前属性节点”TSDO控制被设置为新的TSDO条目。
由于前述,可以看到本发明提供了一种装置和方法来对XML或其它支持互操作性的语言文件进行非常快速的验证解析,同时从主处理器消除了这种处理操作和复杂的支持开销,从而大量提高了验证解析处理的速度。这一加速通过与用于验证的解析和并行检索数据字典和状态表信息并行地形成TSDO的潜在和优选自动操作而得到具体支持。被需要用来提供上述加速的硬件是非常简单和在数量上是有限的,因此是廉价和高的成本效益。
虽然本发明以单个优选实施方案来进行描述,但是本领域技术人员应该认识到,本发明的实施可在附加的权利要求的精神和范围内进行修改。
Claims (13)
1.一种用于令牌化的文本文件的硬件加速验证解析器,所述令牌化的文本文件由支持平台无关性和互操作性的计算机语言编写,所述验证解析器包括:
用于根据令牌从数据字典和状态表检索数据的装置;
用于将来自所述状态表和所述数据字典的所述数据合并以形成转换控制字的装置;
用于将所述转换控制字的部分与另一令牌合并以进一步从所述状态表取回数据的装置;以及
用于在所述转换控制字的部分的控制下形成与所述令牌化的文本文件对应的树形结构数据对象的装置;
其中所述转换控制字包括:
一状态表基础地址;
多个所述数据字典的类型标记;和
多个所述状态表的令牌标记;而且
其中用于形成树形结构数据对象的装置使用多个所述数据字典的类型标记的至少一个和多个所述状态表的令牌标记的至少一个。
2.如权利要求1所述的硬件加速验证解析器,还包括:
用于得到支持嵌套数据结构的下一转换状态的装置,其中使用所述转换控制字控制堆栈的操作得到所述下一转换状态,所述嵌套数据结构用支持的语言定义。
3.如权利要求2所述的硬件加速验证解析器,还包括:
用于从所述令牌化的文本文件形成数据结构的装置。
4.如权利要求3所述的硬件加速验证解析器,其中,所述用于形成数据结构的装置包括元素和属性缓冲器。
5.如权利要求1所述的硬件加速验证解析器,还包括:
用于从所述令牌化的文本文件形成数据结构的装置。
6.如权利要求5所述的硬件加速验证解析器,其中,所述用于形成数据结构的装置包括元素和属性缓冲器。
7.如权利要求1所述的硬件加速验证解析器,其中形成树形结构数据对象的装置与所述合并所述来自所述状态表和所述数据字典的数据的装置以及合并部分所述转换控制字的装置并行操作。
8.一种对令牌化的文档进行加速验证解析的方法,所述方法包括以下步骤:
根据令牌从数据字典和状态表检索数据;
将来自所述状态表和所述数据字典的所述数据合并以形成转换控制字,其包括一状态表基础地址,多个所述数据字典的类型标记;和多个所述状态表的令牌标记;
将所述转换控制字的部分与另一令牌合并以从所述状态表检索更多数据;以及
使用多个所述数据字典的类型标记的至少一个和多个所述状态表的令牌标记的至少一个,来形成一树形结构数据对象。
9.如权利要求8所述的方法,进一步包括;
使用所述转换控制字对堆栈进行操作以得到下一转换状态的步骤。
10.如权利要求8所述的方法,进一步包括如下步骤:
验证输入流与一组有效输入序列中的一个相一致。
11.如权利要求10所述的方法,进一步包括如下步骤:
当输入流与一组有效的、可允许的输入序列相偏离时产生通知。
12.如权利要求8所述的方法,进一步包括:
当输入流与一组有效的、可允许的输入序列相偏离时产生通知的步骤。
13.如权利要求8所述的方法,其中形成树形结构数据对象的过程与所述合并所述来自所述状态表和所述数据字典的数据的过程以及合并部分所述转换控制字的过程并行进行。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US42177302P | 2002-10-29 | 2002-10-29 | |
US60/421,774 | 2002-10-29 | ||
US60/421,773 | 2002-10-29 | ||
US60/421,775 | 2002-10-29 | ||
US10/334,086 | 2002-12-31 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1726465A CN1726465A (zh) | 2006-01-25 |
CN100380322C true CN100380322C (zh) | 2008-04-09 |
Family
ID=35925173
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003801061657A Expired - Fee Related CN100430896C (zh) | 2002-10-29 | 2003-10-03 | 硬件解析器加速器 |
CNB2003801061642A Expired - Fee Related CN100357846C (zh) | 2002-10-29 | 2003-10-03 | 入侵检测加速器 |
CNB2003801061661A Expired - Fee Related CN100380322C (zh) | 2002-10-29 | 2003-10-03 | 硬件加速的验证解析器 |
Family Applications Before (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2003801061657A Expired - Fee Related CN100430896C (zh) | 2002-10-29 | 2003-10-03 | 硬件解析器加速器 |
CNB2003801061642A Expired - Fee Related CN100357846C (zh) | 2002-10-29 | 2003-10-03 | 入侵检测加速器 |
Country Status (1)
Country | Link |
---|---|
CN (3) | CN100430896C (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4945410B2 (ja) * | 2006-12-06 | 2012-06-06 | 株式会社東芝 | 情報処理装置及び情報処理方法 |
US8117347B2 (en) * | 2008-02-14 | 2012-02-14 | International Business Machines Corporation | Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1203678A (zh) * | 1995-10-06 | 1998-12-30 | 科尔威尔技术公司 | 存储和检索数字化数据的系统 |
US5995963A (en) * | 1996-06-27 | 1999-11-30 | Fujitsu Limited | Apparatus and method of multi-string matching based on sparse state transition list |
CN1266246A (zh) * | 1999-03-03 | 2000-09-13 | 富士通株式会社 | 输入字符串的设备和方法 |
CN1302400A (zh) * | 1999-05-04 | 2001-07-04 | 密克罗奇普技术公司 | 指令集可以配置的微控制器 |
US20020038320A1 (en) * | 2000-06-30 | 2002-03-28 | Brook John Charles | Hash compact XML parser |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5319776A (en) * | 1990-04-19 | 1994-06-07 | Hilgraeve Corporation | In transit detection of computer virus with safeguard |
US5414833A (en) * | 1993-10-27 | 1995-05-09 | International Business Machines Corporation | Network security system and method using a parallel finite state machine adaptive active monitor and responder |
JP3606387B2 (ja) * | 1994-09-13 | 2005-01-05 | 松下電器産業株式会社 | コンパイル装置 |
JP4153989B2 (ja) * | 1996-07-11 | 2008-09-24 | 株式会社日立製作所 | 文書検索配送方法および装置 |
CA2307529A1 (en) * | 2000-03-29 | 2001-09-29 | Pmc-Sierra, Inc. | Method and apparatus for grammatical packet classifier |
CN1132390C (zh) * | 2001-03-16 | 2003-12-24 | 北京亿阳巨龙智能网技术有限公司 | 一种基于业务独立模块的电信业务开发方法 |
-
2003
- 2003-10-03 CN CNB2003801061657A patent/CN100430896C/zh not_active Expired - Fee Related
- 2003-10-03 CN CNB2003801061642A patent/CN100357846C/zh not_active Expired - Fee Related
- 2003-10-03 CN CNB2003801061661A patent/CN100380322C/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1203678A (zh) * | 1995-10-06 | 1998-12-30 | 科尔威尔技术公司 | 存储和检索数字化数据的系统 |
US5995963A (en) * | 1996-06-27 | 1999-11-30 | Fujitsu Limited | Apparatus and method of multi-string matching based on sparse state transition list |
CN1266246A (zh) * | 1999-03-03 | 2000-09-13 | 富士通株式会社 | 输入字符串的设备和方法 |
CN1302400A (zh) * | 1999-05-04 | 2001-07-04 | 密克罗奇普技术公司 | 指令集可以配置的微控制器 |
US20020038320A1 (en) * | 2000-06-30 | 2002-03-28 | Brook John Charles | Hash compact XML parser |
Also Published As
Publication number | Publication date |
---|---|
CN1726464A (zh) | 2006-01-25 |
CN1735850A (zh) | 2006-02-15 |
CN1726465A (zh) | 2006-01-25 |
CN100430896C (zh) | 2008-11-05 |
CN100357846C (zh) | 2007-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7458022B2 (en) | Hardware/software partition for high performance structured data transformation | |
US7512592B2 (en) | System and method of XML query processing | |
Tidwell | XSLT: mastering XML transformations | |
US7437666B2 (en) | Expression grouping and evaluation | |
US20040083221A1 (en) | Hardware accelerated validating parser | |
CN100410961C (zh) | 可扩展标记语言流化转换器 | |
US7328403B2 (en) | Device for structured data transformation | |
US20060167869A1 (en) | Multi-path simultaneous Xpath evaluation over data streams | |
KR20050000348A (ko) | 중간 언어 표현 방법 및 시스템 | |
Pokorny | Modelling stars using XML | |
Lee et al. | Reasoning about XML schema languages using formal language theory | |
US7143101B2 (en) | Method and apparatus for self-describing externally defined data structures | |
US6920462B2 (en) | Method and device for performing a query on a markup document to conserve memory and time | |
CN100380322C (zh) | 硬件加速的验证解析器 | |
Reshadi et al. | Hdml: Compiled VHDL in xml | |
Grün | Pushing XML Main Memory Databases to their Limits. | |
WO2004040447A2 (en) | Hardware accelerated validating parser | |
Li | XML Parsing, SAX/DOM. | |
Zhang | Efficient XML stream processing and searching | |
Karlsson | XML to RDBMS | |
Zhang et al. | IBP: An index-based XML parser model | |
Alvestad et al. | Development of a Demand Driven Dom Parser | |
Kråkenes et al. | Development of a Demand Driven Dom Parser | |
Neiman | A proposed change to the SOAP-based XML standard for the improved delivery of web services | |
Gruca | MASTER OF ENGINEERING |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080409 Termination date: 20101003 |