一种数据处理方法、装置及设备制造方法及图纸

技术编号:37418642 阅读:18 留言:0更新日期:2023-04-30 09:41
本公开关于一种数据处理方法、装置及设备,涉及计算机领域。方法包括:对第一电路数据进行编译,得到第一中间数据;对于所述第一中间数据中扇出数量大于扇出阈值的每个循环不变量,基于所述每个循环不变量的扇出树,替换所述第一中间数据中的第一操作数,得到第二中间数据,任一循环不变量的扇出树的节点用于表示所述任一循环不变量,所述第一操作数表示所述循环不变量在所属的循环数据中对应的操作数;基于所述第二中间数据生成第二电路数据。根据本公开的技术方案,基于构建得到的扇出树的关联节点替换循环中循环不变量对应的操作数,得到第二中间数据,减少了循环不变量的扇出数量,从而能够解决高扇出的问题。从而能够解决高扇出的问题。从而能够解决高扇出的问题。

【技术实现步骤摘要】
一种数据处理方法、装置及设备
[0001]本公开基于申请日为2022年09月20日、申请号为63/376,331的美国临时专利申请,并要求该美国临时专利申请的优先权,其全部内容通过引用结合在本公开中作为参考。


[0002]本公开涉及计算机领域,尤其涉及一种数据处理方法、装置及设备。

技术介绍

[0003]现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA)是在可编程阵列逻辑、通用阵列逻辑等可编程器件的基础上进一步发展的产物,是专用集成电路领域中的一种半定制电路。如何设计FPGA电路,是一个研究方向。
[0004]目前,通常采用高层次综合编译器(High

Level Synthesis,HLS编译器)来进行FPGA电路的设计。其中,高层次综合编译器采用的是由更高抽象度的行为描述生产电路的技术。高层次的概念代表的是硬件描述语言里较高的抽象层次。如将C、C++或System C编写的C规范代码等数据转换为寄存器传输级的数据,并综合到FPGA上,以实现FPGA电路的设计。
[0005]上述技术方案存在的问题是,HLS编译器在对数据进行处理,也即对代码进行循环展开时,会使数据发生广播,从而导致高扇出问题,影响设计得到的FPGA电路的工作性能。

技术实现思路

[0006]本公开提供一种数据处理方法、装置及设备,通过在中间表示层中为扇出数量大于扇出阈值的每个循环不变量构建扇出树,基于构建得到的扇出树的关联节点替换循环中每个循环不变量对应的操作数,得到第二中间数据,减少了循环不变量的扇出数量,从而能够解决高扇出的问题。本公开的技术方案如下:
[0007]根据本公开实施例的一方面,提供一种数据处理方法,所述方法包括:
[0008]对第一电路数据进行编译,得到第一中间数据,所述第一电路数据为通过第一编程语言描述目标电路的逻辑结构的数据,所述第一中间数据为通过中间代码语言描述所述目标电路的逻辑结构的数据;
[0009]对于所述第一中间数据中扇出数量大于扇出阈值的每个循环不变量,基于所述每个循环不变量的扇出树,替换所述第一中间数据中的第一操作数,得到第二中间数据,所述循环不变量是指数值不随循环的迭代而发生变化的变量,任一循环不变量的扇出树的节点用于表示所述任一循环不变量,所述第一操作数表示所述循环不变量在所属的循环数据中对应的操作数;
[0010]基于所述第二中间数据生成第二电路数据,所述第二电路数据为通过第二编程语言描述所述目标电路的逻辑结构的数据。
[0011]根据本公开实施例的另一方面,提供一种数据处理装置,包括:
[0012]编译单元,被配置为对第一电路数据进行编译,得到第一中间数据,所述第一电路
数据为通过第一编程语言描述目标电路的逻辑结构的数据,所述第一中间数据为通过中间代码语言描述所述目标电路的逻辑结构的数据;
[0013]替换单元,被配置为对于所述第一中间数据中扇出数量大于扇出阈值的每个循环不变量,基于所述每个循环不变量的扇出树,替换所述第一中间数据中的第一操作数,得到第二中间数据,所述循环不变量是指数值不随循环的迭代而发生变化的变量,任一循环不变量的扇出树的节点用于表示所述任一循环不变量,所述第一操作数表示所述循环不变量在所属的循环数据中对应的操作数;
[0014]生成单元,被配置为基于所述第二中间数据生成第二电路数据,所述第二电路数据为通过第二编程语言描述所述目标电路的逻辑结构的数据。
[0015]在一些实施例中,所述替换单元,还被配置为对于所述第一中间数据中的任一循环数据,获取所述循环数据的循环总迭代次数和循环展开系数,所述循环展开系数用于表示循环体的复制数量;在所述循环总迭代次数与所述循环展开系数的比值大于目标阈值情况下,基于所述循环数据中的每个循环不变量的扇出树,替换所述第一操作数。
[0016]在一些实施例中,所述替换单元,包括:
[0017]识别子单元,被配置为识别所述循环数据中的循环不变量,得到至少一个循环不变量;
[0018]提取子单元,被配置为将所述至少一个循环不变量从所述循环数据中循环体的内部提取至循环体的外部;
[0019]优化子单元,被配置为优化所述循环数据;
[0020]替换子单元,被配置为对于任一循环不变量,替换所述第一操作数为第二操作数,所述第二操作数表示所述扇出树的关联节点所指示的操作数。
[0021]在一些实施例中,所述识别子单元,被配置为确定所述循环数据中的锁存器;对于所述锁存器中的任一变量,采用递归的方式遍历所述循环体的多个指令中的操作数,得到所述变量的多个变量递归结果;响应于所述多个变量递归结果均为真,确定所述变量为循环不变量。
[0022]在一些实施例中,所述识别子单元,被配置为对于所述循环数据中的任一变量,在所述变量定义与赋值的位置位于循环体的外部,且所述变量使用的位置位于循环体的内部的情况下,将所述变量确定为循环不变量。
[0023]在一些实施例中,所述提取子单元,被配置为以深度优先的顺序遍历所述循环数据的循环体,得到循环不变式集合,所述循环不变式集合包括循环不变的至少一个表达式;对于所述循环不变式集合中的任一表达式,确定所述表达式的提取代价,所述提取代价表示提取所述表达式对所述循环数据的影响程度;在所述提取代价不小于代价阈值的情况下,将所述表达式作为循环不变量提取至所述循环体的外部。
[0024]在一些实施例中,所述优化子单元,被配置为对所述循环数据按照预设顺序执行第一操作的任意组合,所述第一操作包括对循环块进行迭代剥离、计算循环次数、计算展开系数以及执行首部或尾部的迭代操作;对所述循环数据按照预设顺序执行第二操作的任意组合,所述第二操作包括复制基本块、对指令进行重映射、更新PHI节点以及连接基本块之间的跳转指令;对所述循环数据按照预设顺序执行第三操作的任意组合,所述第三操作包括更新SE标量演化、更新DT支配树、更新LI循环信息、进行LCSSA格式保护、删除死亡指令与
指令化简以及合并相邻基本块。
[0025]在一些实施例中,所述替换子单元,被配置为对于任一循环不变量,在所述循环数据中循环体的外部为所述循环不变量构建扇出树;在所述循环数据中循环体的内部,替换操作指令中所述循环不变量对应的所述第一操作数为所述第二操作数。
[0026]在一些实施例中,所述替换子单元,还被配置为基于扇出约束系数,在所述循环数据中循环体的外部为所述循环不变量构建扇出树,所述扇出约束系数用于限制扇出树中关联节点的数量;或者,基于节点扇出值,在所述循环数据中循环体的外部为所述循环不变量构建扇出树,所述节点扇出值用于限制所述扇出树的层数。
[0027]根据本公开实施例的另一方面,提供一种电子设备,该电子设备包括:
[0028]处理器;
[0029]用于存储该处理器可执行指令的存储器;
[0030]其中,该处理器被配置为执行该指令,以实本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据处理方法,其特征在于,所述方法包括:对第一电路数据进行编译,得到第一中间数据,所述第一电路数据为通过第一编程语言描述目标电路的逻辑结构的数据,所述第一中间数据为通过中间代码语言描述所述目标电路的逻辑结构的数据;对于所述第一中间数据中扇出数量大于扇出阈值的每个循环不变量,基于所述每个循环不变量的扇出树,替换所述第一中间数据中的第一操作数,得到第二中间数据,所述循环不变量是指数值不随循环的迭代而发生变化的变量,任一循环不变量的扇出树的节点用于表示所述任一循环不变量,所述第一操作数表示所述循环不变量在所属的循环数据中对应的操作数;基于所述第二中间数据生成第二电路数据,所述第二电路数据为通过第二编程语言描述所述目标电路的逻辑结构的数据。2.根据权利要求1所述的数据处理方法,其特征在于,所述对于所述第一中间数据中扇出数量大于扇出阈值的每个循环不变量,基于所述每个循环不变量的扇出树,替换所述第一中间数据中的第一操作数,得到第二中间数据,包括:对于所述第一中间数据中的任一循环数据,获取所述循环数据的循环总迭代次数和循环展开系数,所述循环展开系数用于表示循环体的复制数量;在所述循环总迭代次数与所述循环展开系数的比值大于目标阈值情况下,基于所述循环数据中的每个循环不变量的扇出树,替换所述第一操作数。3.根据权利要求2所述的数据处理方法,其特征在于,所述基于所述循环数据中的每个循环不变量的扇出树,替换所述第一操作数,包括:识别所述循环数据中的循环不变量,得到至少一个循环不变量;将所述至少一个循环不变量从所述循环数据中循环体的内部提取至循环体的外部;优化所述循环数据;对于任一循环不变量,替换所述第一操作数为第二操作数,所述第二操作数表示所述扇出树的关联节点所指示的操作数。4.根据权利要求3所述的数据处理方法,其特征在于,所述识别所述循环数据中的循环不变量,得到至少一个循环不变量,包括:确定所述循环数据中的锁存器;对于所述锁存器中的任一变量,采用递归的方式遍历所述循环体的多个指令中的操作数,得到所述变量的多个变量递归结果;响应于所述多个变量递归结果均为真,确定所述变量为循环不变量。5.根据权利要求3所述的数据处理方法,其特征在于,所述识别所述循环数据中的循环不变量,得到至少一个循环不变量,包括:对于所述循环数据中的任一变量,在所述变量定义与赋值的位置位于循环体的外部,且所述变量使用的位置位于循环体的内部的情况下,将所述变量确定为循环不变量。6.根据权利要求3所述的数据处理方法,其特征在于,所述将所述至少一个循环不变量从所述循环数据中循环体的内部提取至循环体的外部,包括:以深度优先的顺序遍历所述循环数据的循环体,得到循环不变式集合,所述循环不变式集合包括循环不变的至少一个表达式;
对于所述循环不变式集合中的任一表达式,确定所述表达式的提取代价,所述提取代价表示提取所述表达式对所述循环数据的影响程度;在所述提取代价不小于代价阈值的情况下,...

【专利技术属性】
技术研发人员:刘理杨超刘凌志王东
申请(专利权)人:北京交通大学
类型:发明
国别省市:

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

1