法律状态公告日
法律状态信息
法律状态
2019-12-13
授权
授权
2017-05-24
实质审查的生效 IPC(主分类):G06F17/50 申请日:20161116
实质审查的生效
2017-04-26
公开
公开
技术领域
本发明涉及计算机与电路设计领域,尤其涉及一种高层次综合工具中的指引文件自动生成方法及系统。
背景技术
在现代的数字集成电路设计中,存在着许多数据密集型应用,例如数字媒体处理、加密算法处理等。这些数据密集型应用在高层次设计中会存在许多循环语句。关于循环的优化在编译器等计算机科学领域都存在着大量的研究。
对于高层次综合来说,循环能在高层次综合中得到更加灵活的配置以及优化。随着集成电路单位面积上的门电路的集成度越来越高,我们可以牺牲一些面积来获取更快的上市周期和更优的硬件性能。在高层次综合过程中将程序中的循环部分进行展开从而可以暴露更多硬件优化的机会,例如全局调度优化。这样能使得综合出来的硬件使用更少的运行周期,使得高层次综合生成的硬件性能得以极大的提升。
在现今的高层次综合工具中常用人工定义的方式对循环展开进行指引从而提升高层次综合的效果,但要求设计人员有相当丰富的循环处理经验,而且给设计人员带来额外的工作量,大大降低了设计的效率。
发明内容
为了解决上述技术问题,本发明的目的是:提供一种简单、易于实现和操作的高层次综合工具中针对循环展开的指引文件自动生成方法。
为了解决上述技术问题,本发明的另一目的是:提供一种简单、易于实现和操作的高层次综合工具中针对循环展开的指引文件自动生成系统。
本发明所采用的技术方案是:一种高层次综合工具中的指引文件自动生成方法,包括有以下步骤:
A、获取代码中的循环信息,若存在人工定义的循环展开因子,则直接执行步骤C,否则执行步骤B;
B、根据循环信息对循环进行展开处理,通过设计空间探索计算得到循环展开因子;
C、根据步骤A或步骤B中得到的循环展开因子生成高层次综合工具的指引文件。
进一步,所述步骤A中的循环信息包括有循环名称、循环迭代距离和人工定义的循环展开因子。
进一步,所述步骤B具体包括以下子步骤:
B1、根据循环信息建立循环依赖关系图;
B2、计算最大迭代并行距离;
B3、计算内存总线最大访问量;
B4、通过设计空间探索计算得到循环展开因子。
进一步,所述步骤B2中的最大迭代并行距离为指令间没有数据依赖的距离。
进一步,所述步骤B3中的内存总线最大访问量根据最大迭代并行距离与访存指令能占满内存总线数的最大值计算得到。
本发明所采用的另一技术方案是:一种高层次综合工具中的指引文件自动生成系统,该系统包括:
收集判断单元,用于获取代码中的循环信息,并判断是否存在人工定义的循环展开因子,如存在,则直接运行文件生成单元;否则运行循环处理单元;
循环处理单元,用于根据循环信息对循环进行展开处理,通过设计空间探索计算得到循环展开因子;
文件生成单元,用于根据收集判断单元或循环处理单元中得到的循环展开因子生成高层次综合工具的指引文件。
进一步,所述循环信息包括有循环名称、循环迭代距离和人工定义的循环展开因子。
进一步,所述循环处理单元包括有:
循环依赖图建立子单元,用于根据循环信息建立循环依赖图。
迭代并行距离计算子单元,用于计算最大迭代并行距离。
内存总线访问量计算子单元,用于计算内存总线的最大访问量。
设计空间探索子单元,用于通过设计空间探索计算得到所需的循环展开因子。
进一步,所述迭代并行距离计算子单元中的最大迭代并行距离为指令间没有数据依赖的距离
进一步,所述内存总线访问量计算子单元中的内存总线最大访问量根据最大迭代并行距离与访存指令能占满内存总线数的最大值计算得到。
本发明的有益效果是:通过本发明方法,利用循环展开因子自动生成高层次综合工具的循环指引文件,进而供高层次综合工具使用,无需人工编写循环的处理代码,大大减少设计人员的工作量和压力,而且也显著提高了高层次综合工具生成硬件的效果。
本发明的另一有益效果是:通过本发明的系统,利用循环展开因子自动生成高层次综合工具的循环指引文件,进而供高层次综合工具使用,这样则无需人工编写循环的处理代码,大大减少设计人员的工作量和压力,而且也显著提高了高层次综合工具生成硬件的效果。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是本发明高层次综合工具中针对循环展开的指引文件自动生成方法的步骤图;
图2是本发明高层次综合工具中针对循环展开的指引文件自动生成方法的具体实施例的步骤图;
图3是循环依赖图的生成示意图;
图4是本发明具体实施例中进行高层次综合的代码;
图5为图4代码循环展开前的中间表达式代码;
图6为图4代码循环展开75次后的中间表达式代码简图;
图7是本发明高层次综合工具中针对循环展开的指引文件自动生成系统的结构框图;
图8是本发明高层次综合工具中针对循环展开的指引文件自动生成系统的具体实施例的结构框图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明:
参照图1,一种高层次综合工具中的指引文件自动生成方法,包括有以下步骤:
A、获取代码中的循环信息,若存在人工定义的循环展开因子,则直接执行步骤C,否则执行步骤B;
B、根据循环信息对循环进行展开处理,通过设计空间探索计算得到循环展开因子;
C、根据步骤A或步骤B中得到的循环展开因子生成高层次综合工具的指引文件。
进一步作为优选的实施方式,所述步骤A中的循环信息包括有循环名称、循环迭代距离和人工定义的循环展开因子。其中循环的迭代距离是指循环的迭代因子的取值范围,以附图3为例,该for循环的迭代距离即为迭代因子i的取值范围,即5。
参照图2,进一步作为优选的实施方式,所述步骤B具体包括以下子步骤:
B1、根据循环信息建立循环依赖关系图;
参照图3,根据图左的代码创建图右的循环依赖关系图,具体步骤为:遍历程序中的所有指令,根据数据依赖关系,即读操作、写操作以及带有回边的PHI指令,创建循环依赖关系图。当程序中包含调用函数时,由于包含了循环体外的数据依赖关系,将中止循环展开的操作。
B2、计算最大迭代并行距离;
进一步作为优选的实施方式,所述步骤B2中的最大迭代并行距离为指令间没有数据依赖的距离,其计算公式为:
InstParallelNum=Σn∈recurrence>DepDistn
其中DepDistn是迭代路径中无依赖关系的第n对指令间的距离,recurrence>
B3、计算内存总线最大访问量;
进一步作为优选的实施方式,所述步骤B3中的内存总线最大访问量根据最大迭代并行距离与访存指令能占满内存总线数的最大值计算得到,其计算公式为:
IncreaseCost=ΔMux.AddressFanInCost+ΔMux.DataFanInCost+ΔDataPathCost
计算出循环展开消耗的资源,其中AddressFanInCost为多路器的对内存访问的资源开销,DataFanInCost为数据扇入的多路器资源的消耗量。
ΔMux.AddressFanInCost=getMuxCost(NumAddrFanIn,AddrWidth)
ΔMux.DataFanInCost=getMuxCost(NumDataFanIn,DataWidth)
其中的Unrollfactor即循环的展开因子。
其中的saturedCount计算公式为:
其中bandwidth是指数据总线带宽,InstWitdth是访存字节大小。
如图4所述代码利用上述公式计算后可得,当Unrollfactor为75时,其NumAddrFanIn为0,AddrWidth为32,NumDataFanIn为0,DataWidth为32。从而可以得到Mux.AddressFanInCost为0,Mux.DataFanInCost为0。而此时的DataPathCost为253524,此时的总代价小于且最为接近预设的阈值256000。由此可得可接受的最大的Unrollfactor为75。
B4、通过设计空间探索计算得到循环展开因子;
本发明具体实施例中,设计空间探索(Design Space Exploration)采用二分搜索的方式进行,其搜索范围是从0到步骤A中得到的循环迭代距离即全展开,其约束条件为步骤B3中求得的资源消耗量,当资源消耗量小于预设的阈值时,则进行循环展开的操作。如图4所示例子,可得搜索范围为0到1000。而当Unrollfactor为75时,可以得到IncreasedCost为253524,满足预设阈值且不需要增加多路器的内存访问消耗。所以调用75来作为我们生成循环展开指引文件的展开因子,循环展开前的中间表达式代码如图5所示,循环展开75次后的中间表达式代码简图如图6所示。
参照图7,一种高层次综合工具中的指引文件自动生成系统,该系统包括:
收集判断单元,用于获取代码中的循环信息,并判断是否存在人工定义的循环展开因子,如存在,则直接运行文件生成单元;否则运行循环处理单元;
循环处理单元,用于根据循环信息对循环进行展开处理,通过设计空间探索计算得到循环展开因子;
文件生成单元,用于根据收集判断单元或循环处理单元中得到的循环展开因子生成高层次综合工具的指引文件。
进一步作为优选的实施方式,所述循环信息包括有循环名称、循环迭代距离和人工定义的循环展开因子。
参照图8,进一步作为优选的实施方式,所述循环处理单元包括有:
循环依赖图建立子单元,用于根据循环信息建立循环依赖图。
迭代并行距离计算子单元,用于计算最大迭代并行距离。
内存总线访问量计算子单元,用于计算内存总线的最大访问量。
设计空间探索子单元,用于通过设计空间探索计算得到所需的循环展开因子。
进一步作为优选的实施方式,所述迭代并行距离计算子单元中的最大迭代并行距离为指令间没有数据依赖的距离
进一步作为优选的实施方式,所述内存总线访问量计算子单元中的内存总线最大访问量根据最大迭代并行距离与访存指令能占满内存总线数的最大值计算得到。
以上对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
机译: 用于自动生成功能并将其安装到数据文件中的系统。分布式自动化系统中的系统组件,包括系统计划工具
机译: 在用户操作期间从大量文件中检测精确文件系统事件并自动生成文件系统事件的系统和方法
机译: 在具有存储装置的图像处理系统中产生文件名的方法和装置,其中提供了文件名和第二字符序列,其中通过增加先前分配并存储在存储器中的文件号来自动生成文件号