System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及编译器,特别是涉及一种面向专用集成电路(asic)的分支代码后端编译方法、运行方法、装置、存储介质及芯片。
技术介绍
1、由于海量数据处理需求的出现,市场上随之出现了以查表为导向执行不同操作的专用芯片或模块。该类芯片/模块的运算逻辑在于,从输入数据中提取数据作为关键字,在存储器中进行查询;根据查询结果执行某些运算。例如,一些数据处理器(data processingunit,dpu)就采用这种查表型运算逻辑,如图1所示,示出了现有的一种dpu的工作原理示意图。
2、这种查表型芯片的一个明显的特征是不包含逻辑判断、分支指令,无需通过逻辑判断和分支指令的跳转运行不同的指令(进而实现对数据的不同处理方式),而是通过查表得到要运行的指令。
3、为了使芯片容易使用,通常会提供编译器,以让用户可以使用高级语言编写程序,由编译器将程序编译为芯片运行所需的程序。从编译器的输出结果来看:基于cpu的程序以指令为中心,指令在数据的影响下,通过逻辑判断和分支指令执行不同的运算,编译器输出结果是指令与附加的初始化数据一起构成的可执行程序;而查表型芯片以数据为中心,通过查表获取要执行的运算,编译器输出结果指导查表的数据集。这种数据集包含了运算单元所需的关键字描述信息和查表结果预设信息。芯片的运算单元根据关键字描述信息从输入数据中提取关键字,从而进行查表,并根据查表结果进行相应运算。
4、但为了处理较为复杂的运算,如需要多次查表的情况,芯片运算单元的结果作为下一次查表的输入进行多次运算,或将多个运算单元串联
技术实现思路
1、本专利技术所要解决的技术问题在于,提供一种分支代码后端编译方法、运行方法、装置及存储介质,可以将高级语言编写的分支代码直接编译成可直接执行的后端程序,避免手工编制表格数据,从而提高了查表型芯片的易用性和数据的可靠性。
2、为解决上述技术问题,作为本专利技术的一方面,提供一种分支代码后端编译方法,其至少包括如下步骤:
3、接收具有分支的查表代码,进行编译处理,为所述查表代码的后序代码中每一分支生成一特征码,并在前序代码对应的前置描述信息,以及后序代码对应的后置描述信息的预定位置存储各特征码;
4、对于前序代码,从对应的前置描述信息中获取各特征码,并根据每一特征码形成所述前序代码的一个条目,并存入前序代码对应的数据集;
5、对于后序代码的每一分支,从后置描述信息中获得所述分支对应的特征码,根据所述特征码形成所述分支对应的条目,并存入后序代码对应的数据集中。
6、其中,所述接收具有分支的查表代码,进行编译处理,为所述查表代码的后序代码中每一分支生成不同的特征码,并将所述各特征码加入到前置描述信息或后置描述信息中,具体包括:
7、接收具有分支的查表代码,确定其前序代码和后序代码,以及后序代码中的分支数量,为后序代码中每一分支生成一个唯一的特征码;
8、将每一特征码加入每一分支对应的前置描述信息中的查表结果部分预设的特征码字段中;
9、将后序代码的每一分支的特征码加入每一分支对应的后置描述信息中关键字字段中。
10、其中,对于前序代码,从对应的前置描述信息中获取各特征码,并根据每一特征码形成所述前序代码的一个条目,并存入前序代码对应的数据集,具体包括:
11、对于前序代码,从前置描述信息中的查表结果特征码字段获取各特征码;将每一特征码以及与其前序代码中对应的关键字、预设查表结果组成所述前序代码对应的一个条目,并存入数据集的前置表中,其中,所述特征码作为所述条目的预设查表结果的一部分。
12、其中,对于后序代码的每一分支,从后置描述信息中获得所述分支对应的特征码,根据所述特征码形成所述分支对应的条目,并存入后序代码对应的数据集中,具体包括:
13、对于后序代码每一分支,根据所述分支的后置描述信息的关键字描述字段中获取特征码,将所述特征码以及与其后序代码中对应的关键字、预设查表结果组成所述分支对应的一个条目,并存入数据集的后置表中,其中,所述特征码作为所述条目的关键字的一部分。
14、相应地,本专利技术的另一方面,还提供一种分支代码后端代码运行方法,其包括如下步骤:
15、获取输入数据中的关键字,采用所述关键字对采用如前述方法所形成的数据集的前置表进行第一次查表并执行运算;
16、获得第一次运算后的结果,所述第一次运算的结果包括有特征码;
17、根据所述运算结果以及后序代码的描述信息,从输入数据中提取数据构造关键字;
18、根据所构造的关键字对所述数据集的后置表进行第二次查表,并根据查表结果运算,并输出运算结果。
19、相应地,本专利技术的再一方面,还提供一种分支代码后端编译装置,其至少包括:
20、编译模块,用于接收具有分支的查表代码,进行编译处理,为所述查表代码的后序代码中每一分支生成一特征码,并在前序代码对应的前置描述信息,以及后序代码对应的后置描述信息的预定位置存储各特征码;
21、运行时支持模块,用于对于前序代码,从对应的前置描述信息中获取各特征码,并根据每一特征码形成所述前序代码的一个条目,并存入前序代码对应的数据集;以及用于对于后序代码的每一分支,从后置描述信息中获得所述分支对应的特征码,根据所述特征码形成所述分支对应的条目,并存入后序代码对应的数据集中。
22、其中,所述编译模块进一步包括:
23、解析单元,用于接收具有分支的查表代码,确定其前序代码和后序代码,以及后序代码中的分支数量,为后序代码中每一分支生成一个唯一的特征码;
24、前置描述信息生成单元,用于将每一特征码加入每一分支对应的前置描述信息中的查表结果部分预设的特征码字段中;
25、后置描述信息生成单元,用于将后序代码的每一分支的特征码加入每一分支对应的后置描述信息中关键字字段中。
26、其中,所述运行时支持模块进一步包括:
27、前置表生成单元,用于对于前序代码,从前置描述信息中的查表结果特征码字段获取各特征码;将每一特征码以及与其前序代码中对应的关键字、预设查表结果组成所述前序代码对应的一个条目,并存入数据集的前置表中,其中,所述特征码作为所述条目的预设查表结果的一部分;
28、后置表生成单元,用于对于后序代码每一分支,根据所述分支的后置描述信息的关键字描述字段中获取特征码,将所述特征码以及与其后序代码中对应的关键字、预设查表结果组成所述分支对应的一个条目,并存入数据集的后置表中,其中,所述特征码作为所述条目的关键字的一部分。
...【技术保护点】
1.一种分支代码后端编译方法,其特征在于,至少包括如下步骤:
2.如权利要求1所述的方法,其特征在于,所述接收具有分支的查表代码,进行编译处理,为所述查表代码的后序代码中每一分支生成不同的特征码,并将所述各特征码加入到前置描述信息或后置描述信息中,具体包括:
3.如权利要求2所述的方法,其特征在于,对于前序代码,从对应的前置描述信息中获取各特征码,并根据每一特征码形成所述前序代码的一个条目,并存入前序代码对应的数据集,具体包括:
4.如权利要求3所述的方法,其特征在于,对于后序代码的每一分支,从后置描述信息中获得所述分支对应的特征码,根据所述特征码形成所述分支对应的条目,并存入后序代码对应的数据集中,具体包括:
5.一种分支代码后端代码运行方法,其特征在于,包括如下步骤:
6.一种分支代码后端编译装置,其特征在于,至少包括:
7.如权利要求6所述的装置,其特征在于,所述编译模块进一步包括:
8.如权利要求7所述的装置,其特征在于,所述运行时支持模块进一步包括:
9.一种芯片,其特征在于
10.一种计算机可读存储介质,其存储有可执行的指令,其特征在于,所述可执行的指令被执行时,实现如权利要求1至5中任一项所述的方法。
...【技术特征摘要】
1.一种分支代码后端编译方法,其特征在于,至少包括如下步骤:
2.如权利要求1所述的方法,其特征在于,所述接收具有分支的查表代码,进行编译处理,为所述查表代码的后序代码中每一分支生成不同的特征码,并将所述各特征码加入到前置描述信息或后置描述信息中,具体包括:
3.如权利要求2所述的方法,其特征在于,对于前序代码,从对应的前置描述信息中获取各特征码,并根据每一特征码形成所述前序代码的一个条目,并存入前序代码对应的数据集,具体包括:
4.如权利要求3所述的方法,其特征在于,对于后序代码的每一分支,从后置描述信息中获得所述分支对应的特征码,...
【专利技术属性】
技术研发人员:刘静涛,李伟伟,
申请(专利权)人:深圳云豹智能有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。