高性能微码文本解析器制造技术

技术编号:38332959 阅读:34 留言:0更新日期:2023-07-29 09:15
使用状态机实现的文本解析器的性能通过减少关键依赖路径而得到改善。在一个方面,从状态表电路读取给定文本输入的所有可能的当前状态,然后由输出多路复用器基于当前状态从中选择正确的下一状态和输出,从读取的表中去除对当前状态的依赖,并允许对读取被管线化。此外,多个输入单元被配置为并行操作多个文本字符,每个输入单元将其状态表电路的输出传播到下一个下游输入单元。每个下游输入单元被配置为使用传播的状态来向适当的多路复用器输入提供适当的输出。可以动态地减少可能的输出状态的数目,从而减少选择下一状态所需的输出多路复用器的大小。多路复用器的大小。多路复用器的大小。

【技术实现步骤摘要】
【国外来华专利技术】高性能微码文本解析器

技术介绍

[0001]微码文本解析器允许通过描述如何处理不同字符的微码程序解析不同的文本格式。例如,数据可以以逗号分隔的值布置在文本文件中(这种文件通常称为CSV文件,或作为CSV格式),从而表格数据以纯文本形式存储,每行包括相同数目的字段。CSV格式中的文件使用普通文本逗号作为字段之间的边界字符。当读取CSV文件时,必须检查每个字符以确定它是否是逗号,如果是,则开始或完成字段的输入。因此,CSV解析器的操作状态随着时间的推移而变化,这取决于正在读取或已读取的字符。此外,CSV文件中的字段本身可以包括逗号作为该字段数据的一部分,解析器正确解析文件需要对此类逗号进行特殊处理。例如,考虑以下两个逗号分隔的值:abc,”def,hij”。从

a

开始依次读取这些字符时遇到的第一个逗号会导致解析器改变状态(即,完成输入字段

abc

,然后开始输入下一字段)。类似地,当遇到第一个“字符时,第二个字段被引用并类似地改变状态。然而,在这种情况下,解析器改变为文本输入状态,这样,在遇到下一”字符之前,随后遇到的字符就可以原样读入,从而允许其他特殊字符(例如,字段def,hij的,)包含在字段中。类似的文本解析要求对于解析其他格式的文本也是必要的,例如JavaScript对象符号(“JSON”)或超文本标记语言(“HTML”)。
[0002]通过以基于表的格式描述解析器状态转换,并提供基于当前输入和状态查询表以获得适当输出和下一状态的手段,这样的解析器可以通过基于表的状态机来实现。由于每个新输入对先前状态的依赖性,状态机的性能通常受到限制。对于基于表的状态机,由于每次迭代的表查找,这种性能受到限制。此外,这种依赖性使得跨输入并行化变得困难。

技术实现思路

[0003]提供本
技术实现思路
是为了以简化形式介绍概念的选择,这些概念将在下面的详细描述中进一步描述。本
技术实现思路
不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在用于限制所要求保护主题的范围。
[0004]本文描述了实现改进的文本解析器的方法和系统,该文本解析器包括减少关键依赖路径的基于表的状态机。在一个方面,从状态表电路读取给定输入的所有可能的当前状态,然后由输出多路复用器基于当前状态从中选择正确的下一状态和输出,从而从读取的表中去除对当前状态的任何依赖,并允许对读取被管线化。
[0005]在另一方面,多个输入单元被配置为并行地在多个输入上操作,每个输入单元将其当前输入的状态表电路传播到下一个下游输入单元。每个下游输入单元被配置为使用传播的状态表电路来向适当的输出多路复用器输入提供状态表电路读取。
[0006]在另一方面,实施例可以动态地减少给定输入的可能输出状态的数目,从而减少选择下一状态所需的输出多路复用器的大小。进一步的扩展动态地减少给定输入的状态的数目。
[0007]下面将参考附图详细描述各种示例的进一步特征和优点以及结构和操作。应注意,思想和技术不限于本文所描述的具体示例。本文给出的这些示例仅用于说明目的。基于
本文所包含的教导,其他示例对于相关领域的技术人员来说是显而易见的。
附图说明
[0008]并入本文并形成说明书的一部分的附图说明了本申请的实施例,并与说明书一起进一步用于说明实施例的原理,并使相关领域的技术人员能够制作和使用实施例。
[0009]图1示出了根据实施例的示例基于表的状态机。
[0010]图2示出了根据实施例的具有减少的迭代间隔的示例基于表的状态机。
[0011]图3示出了根据实施例的被配置为并行处理输入的状态机的示例简单实现。
[0012]图4示出了根据实施例的被配置为并行处理输入的示例状态机,该示例状态机通过消除其状态依赖性来改进图3的状态机。
[0013]图5示出了根据实施例的图4的状态机的摘录部分,其示出了状态传播器操作的方面。
[0014]图6示出了根据实施例的示例状态传播器的框图。
[0015]图7示出了根据实施例的示例CSV文件解析器的框图。
[0016]图8示出了根据实施例的用于操作被配置为并行处理输入的文本解析器的方法的流程图。
[0017]图9是可以实现实施例的示例计算机系统的框图。
[0018]当结合附图进行以下详细描述时,实施例的特征和优点将变得更加明显,其中相同的附图标记自始至终标识对应的元件。在附图中,相同的附图编号通常表示相同的、功能相似的和/或结构相似的元件。元件首次出现的图形由相应附图编号中最左边的数字表示。
具体实施方式
I.介绍
[0019]本说明书和附图公开了结合本专利技术的特征的一个或多个实施例。本专利技术的范围不限于所公开的实施例。所公开的实施例仅例示了本专利技术,并且所公开实施例的修改版本也被包含在本专利技术中。本专利技术的实施例由所附权利要求限定。
[0020]说明书中对“一个实施例”、“实施例”和“示例实施例”等的引用表明,所描述的实施例可以包括特定的特征、结构或特性,但每个实施例不一定包括特定的特征、结构或特性。此外,这样的短语不一定指同一实施例。进一步地,当结合实施例描述特定特征、结构或特性时,认为结合其他实施例(无论是否明确描述)实现这样的特征、结构和特性在本领域技术人员的知识范围内。
[0021]在讨论中,除非另有说明,否则使用诸如“实质上”和“关于”之类的形容词来修改本公开实施例的一个或多个特征的条件或关系特性,被理解为意味着该条件或特性被定义为在其预期应用的实施例的操作可接受的公差范围内。
[0022]以下描述了许多示例性实施例。需要注意的是,本文提供的任何章节/小节标题并非旨在限制。本文档中描述了实施例,并且任何类型的实施例都可以包括在任何章节/小节中。此外,任何章节/小节中公开的实施例可以以任何方式与相同章节/小节和/或不同章节/小节所描述的任何其他实施例相结合。II.示例实施例
[0023]本文公开的实施例提供了一种结合了基于表的状态机的高性能文本解析器,该状态机实现了广泛的管线化以隐藏延迟,并允许高时钟频率。现在将描述在状态机上下文中解析逗号分隔值(“CSV”)文件的概述。
[0024]可以参考以下示例表来理解示例CSV文件:名姓电话号码约翰多伊800

555

1212简多伊987

654

3210示例表格数据表
[0025]下面显示了与上面所示表的表格数据对应的示例CSV文本文件:示例CSV文件
[0026]当打开上面所示的示例CSV文件以供读取时,下面讨论的CSV解析器的实施例在读入时接受上面所示的文本(一次一个字符或多个字符块),并解析文本以将值放入例如上面所示的示例表格数据表的表字段中(注意,示例CSV文件每行末尾的CR

LF是隐式的并且未示出)。通过比较示例CSV文件和对应的示例表格数据表,可以看出一些事情。第一,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种第一文本解析器,被配置为并行处理来自字符流的多个输入字符,所述第一文本解析器包括:第一组状态表电路,所述第一组中的每个状态表电路与一组预定状态中的预定状态对应,并且被配置为基于所述字符流的第一输入字符和对应的所述预定状态生成第一状态表电路输出,其中与所述第一组状态表电路中的每个状态表电路对应的所述第一状态表电路输出共同包括第一组状态表电路输出;第二组状态表电路,所述第二组中的每个状态表电路与所述一组预定状态中的预定状态对应,并且被配置为基于所述字符流的第二输入字符和对应的所述预定状态生成第二状态表电路输出,其中与所述第二组状态表电路中的每个状态表电路对应的所述第二状态表电路输出包括第二组状态表电路输出;第一输出多路复用器(MUX),被配置为接收所述第一组状态表电路输出和所述第一文本解析器的当前状态,并且基于所述当前状态从所述第一组状态表电路输出之中选择第一文本解析器输出;状态传播器,被配置为接收所述第一组状态表电路输出和所述第二组状态表电路输出,并且基于所述第一组状态表电路输出选择将所述第二组状态表电路输出的相应输出中的哪个输出路由到所述状态传播器的相应输出,所述相应输出包括一组状态传播器输出;以及第二输出MUX,被配置为接收所述一组状态传播器输出和所述第一文本解析器的所述当前状态,并且基于所述当前状态从所述一组状态传播器输出之中选择第二文本解析器输出。2.根据权利要求1所述的第一文本解析器,还包括:第二文本解析器,被配置为接受所述第一文本解析器输出和所述第二文本解析器输出中的至少一个文本解析器输出,并且解析所述第一文本解析器输出和所述第二文本解析器输出中的所述至少一个文本解析器输出以生成第三文本解析器输出。3.根据权利要求1所述的第一文本解析器,其中所述第一组状态表电路输出和所述第二组状态表电路输出中的每个状态表电路输出包括输出值和状态值,并且其中所述第一文本解析器输出和所述第二文本解析器输出包括输出值。4.根据权利要求3所述的第一文本解析器,其中所述状态传播器还被配置为基于与所述第一组状态表电路输出中的每个状态表电路输出对应的所述状态值,选择将所述第二组状态表电路输出中的相应状态表电路输出中的哪个状态表电路输出路由到所述状态传播器的相应输出。5.根据权利要求3所述的第一文本解析器,还包括:一个或多个附加输入级,所述一个或多个附加输入级中的每个附加输入级被配置为分别接收所述字符流中的一个或多个附加输入字符,所述字符流中的所述一个或多个附加输入字符在时间上位于所述第一输入字符与所述第二输入字符之间,所述一个或多个附加输入级包括:附加的一组状态表电路,所述附加的一组状态表电路中的每个状态表电路与所述一组预定状态中的预定状态对应,并且被配置为基于所述一个或多个附加输入中的相应的一个附加输入和对应的所述预定状态生成状态表电路输出,其中与所述附加的一组状态表电路中的每个状态表电路对应的所述状态表电路输出共同地包括附加的一组状态表电路输出;
附加状态传播器,被配置为接收所述附加的一组状态表电路输出,并且基于与从状态表电路接收的所述状态表电路输出对应的所述状态值将所述附加的一组状态表电路输出中的每个状态表电路输出路由到所述附加状态传播器的相应输出,所述状态表电路与所述字符流在时间上的下一输入字符对应;以及附加输出MUX,被配置为接收所述附加的一组状态表电路输出和所述文本解析器的所述当前状态,并且基于所述文本解析器的所述当前状态从所述附加的一组状态表电路输出之中选择附加文本解析器输出。6.根据权利要求5所述的第一文本解析器,其中所述第一组状态表电路、所述第二组状态表电路或所述附...

【专利技术属性】
技术研发人员:D
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1