粗粒度可重构体系结构的算子映射方法及系统技术方案

技术编号:20588253 阅读:72 留言:0更新日期:2019-03-16 06:57
本发明专利技术提供了一种粗粒度可重构体系结构的算子映射方法及系统,包括:数据流图生成步骤、最小循环启动间隔计算步骤、算子调度步骤、调度判断步骤、阵列图构建步骤、排序步骤、前向映射步骤、当前映射判断步骤、反向回溯步骤、所有映射判断步骤和配置生成步骤。本发明专利技术能在较短的编译时间内达到较好的映射性能,获得较高的加速比,且具有较小的面积和能耗开销。对排好序的算子节点依次进行前向映射,当前向映射失败时,采用反向回溯的方式进入一条新的映射路径,尽可能在不降低性能的前提下找到成功的映射方案。

Operator Mapping Method and System for Coarse-grained Reconfigurable Architecture

The present invention provides an operator mapping method and system for coarse-grained reconfigurable architecture, including data flow graph generation step, minimum cycle start interval calculation step, operator scheduling step, scheduling judgment step, array graph construction step, sorting step, forward mapping step, current mapping judgment step, reverse backtracking step, all mapping judgment step and configuration generation step. Step by step. The invention can achieve better mapping performance in shorter compilation time, obtain higher acceleration ratio, and have smaller area and energy consumption. The ordered operator nodes are mapped forward sequentially. When the current mapping fails, a new mapping path is entered by backtracking, and a successful mapping scheme is found as far as possible without degrading the performance.

【技术实现步骤摘要】
粗粒度可重构体系结构的算子映射方法及系统
本专利技术涉及计算机编译器领域,具体地,涉及粗粒度可重构体系结构的算子映射方法及系统。
技术介绍
粗粒度可重构体系结构的典型应用是加速最内层循环的执行。编译器将循环体的算子提取出来构建数据依赖图,然后映射到粗粒度PE阵列上以软流水的方式执行循环体。两次循环间隔的机器周期称为循环启动间隔II(II,InitiationInterval),II越小,循环执行的速度越快,加速性能就越好。衡量编译器好坏的指标一个是映射后的II,一个是编译时间。已有的REGIMap方法首先在数据流图和时间扩展的PE(ProcessElement)阵列图之间构建兼容图,然后计算兼容图中每条边的权重,最后在兼容图中找到大小与数据流图节点数量相同的最大子团。这种基于子图匹配的方法搜索空间较大,编译时间较长。而且使用这种方法需要为PE增加若干数量的寄存器,大量寄存器的加入会增加功耗和面积开销。
技术实现思路
针对现有技术中的缺陷,本专利技术的目的是提供一种粗粒度可重构体系结构的算子映射方法及系统。根据本专利技术提供的一种粗粒度可重构体系结构的算子映射方法,包括:数据流图生成步骤:根据编译器前端的中间语言文件生成对应的数据流图;最小循环启动间隔计算步骤:根据数据流图的算子数量和PE阵列的数量计算最小循环启动间隔,以最小循环启动间隔作为循环启动间隔的初始值;算子调度步骤:根据当前循环启动间隔,对数据流图的算子进行调度;调度判断步骤:判断算子调度是否成功,若判断结果为否则循环启动间隔加1,并返回所述算子调度步骤,若判断结果为是则进入阵列图构建步骤;阵列图构建步骤:以当前循环启动间隔构建时间扩展的PE阵列图;排序步骤:选择入度与出度和最大的算子作为根节点对算子进行排序;前向映射步骤:对排序后的节点按序前向映射;当前映射判断步骤:判断当前算子节点是否映射成功,若判断结果为否则进入反向回溯步骤,若判断结果为是则进入所有映射判断步骤;反向回溯步骤:反向回溯到当前节点的前一个映射成功的相邻节点,若所述相邻节点为根节点则循环启动间隔加1,并返回所述算子调度步骤,若所述相邻节点为非根节点则返回所述前向映射步骤;所有映射判断步骤:判断所有算子节点是否映射成功,若判断结果为否则反回前向映射步骤,若判断结果为是则进入配置生成步骤;配置生成步骤:输出映射结果,生成粗粒度可重构体系结构的配置信息。较佳的,所述中间语言文件包括:从编译器前端生成的中间代码中提取的待加速的循环体内核部分。较佳的,所述排序步骤包括:选择入度与出度和最大的算子作为根节点,采用深度优先搜索算法对算子进行排序。较佳的,所述前向映射步骤包括:依次计算每个节点可映射到时间扩展的PE阵列图上的所有槽的优先级,将当前节点映射到具有最大优先级的槽;每个槽的优先级为当前节点的未映射的相邻节点数量除以该槽可访问的未映射的槽的数量;将当前节点的映射结果保存到映射表中,并把该节点其他未使用的槽存储到回溯表中。较佳的,所述反向回溯步骤包括:定位到距离当前节点最近的已映射的相邻节点作为回溯节点;查询回溯表,将该回溯节点重新映射到回溯表中所记录的优先级最高的槽;更新回溯表,继续前向映射;如果回溯节点也没有可映射的槽,则继续回溯到该回溯节点的前一个已映射的相邻节点;如果已回溯到根节点,则循环启动间隔加1并返回算子调度步骤。根据本专利技术提供的一种粗粒度可重构体系结构的算子映射系统,包括:数据流图生成模块:根据编译器前端的中间语言文件生成对应的数据流图;最小循环启动间隔计算模块:根据数据流图的算子数量和PE阵列的数量计算最小循环启动间隔,以最小循环启动间隔作为循环启动间隔的初始值;算子调度模块:根据当前循环启动间隔,对数据流图的算子进行调度;调度判断模块:判断算子调度是否成功,若判断结果为否则循环启动间隔加1,并返回算子调度,若判断结果为是则进入阵列图构建;阵列图构建模块:以当前循环启动间隔构建时间扩展的PE阵列图;排序模块:选择入度与出度和最大的算子作为根节点对算子进行排序;前向映射模块:对排序后的节点按序前向映射;当前映射判断模块:判断当前算子节点是否映射成功,若判断结果为否则进入反向回溯,若判断结果为是则进入所有映射判断;反向回溯模块:反向回溯到当前节点的前一个映射成功的相邻节点,若所述相邻节点为根节点则循环启动间隔加1,并返回算子调度,若所述相邻节点为非根节点则返回前向映射;所有映射判断模块:判断所有算子节点是否映射成功,若判断结果为否则反回前向映射,若判断结果为是则进入配置生成;配置生成模块:输出映射结果,生成粗粒度可重构体系结构的配置信息。较佳的,所述中间语言文件包括:从编译器前端生成的中间代码中提取的待加速的循环体内核部分。较佳的,所述排序模块包括:选择入度与出度和最大的算子作为根节点,采用深度优先搜索算法对算子进行排序。较佳的,所述前向映射模块包括:依次计算每个节点可映射到时间扩展的PE阵列图上的所有槽的优先级,将当前节点映射到具有最大优先级的槽;每个槽的优先级为当前节点的未映射的相邻节点数量除以该槽可访问的未映射的槽的数量;将当前节点的映射结果保存到映射表中,并把该节点其他未使用的槽存储到回溯表中。较佳的,所述反向回溯模块包括:定位到距离当前节点最近的已映射的相邻节点作为回溯节点;查询回溯表,将该回溯节点重新映射到回溯表中所记录的优先级最高的槽;更新回溯表,继续前向映射;如果回溯节点也没有可映射的槽,则继续回溯到该回溯节点的前一个已映射的相邻节点;如果已回溯到根节点,则循环启动间隔加1并返回算子调度模块。与现有技术相比,本专利技术具有如下的有益效果:本专利技术能在较短的编译时间内达到较好的映射性能,获得较高的加速比,且具有较小的面积和能耗开销。对排好序的算子节点依次进行前向映射,当前向映射失败时,采用反向回溯的方式进入一条新的映射路径,尽可能在不降低性能的前提下找到成功的映射方案。附图说明通过阅读参照以下附图对非限制性实施例所作的详细描述,本专利技术的其它特征、目的和优点将会变得更明显:图1为本专利技术的流程图;图2为一个大小为3x1的PE阵列;图3为一个包含a~f六个算子节点的数据流图;图4为排序后的算子节点;图5为在循环启动间隔为2时映射失败的情形;图6为图5对应的回溯表;图7为在循环启动间隔为2时映射成功的情形;图8为图7对应的回溯表。具体实施方式下面结合具体实施例对本专利技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本专利技术,但不以任何形式限制本专利技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本专利技术构思的前提下,还可以做出若干变化和改进。这些都属于本专利技术的保护范围。如图1所示,根据本专利技术提供的一种粗粒度可重构体系结构的算子映射方法,包括:数据流图生成步骤:根据编译器前端的中间语言文件生成对应的数据流图(DFG);最小循环启动间隔计算步骤:根据数据流图的算子数量和PE阵列的数量计算最小循环启动间隔,以最小循环启动间隔作为循环启动间隔的初始值。具体为从编译器前端生成的中间代码中提取的待加速的循环体内核部分。算子调度步骤:根据当前循环启动间隔,对数据流图的算子进行调度;调度判断步骤:判断算子调度是否成功,若判断结果为否则循环启动间隔加1,并返回算子调度步骤,若判断本文档来自技高网...

【技术保护点】
1.一种粗粒度可重构体系结构的算子映射方法,其特征在于,包括:数据流图生成步骤:根据编译器前端的中间语言文件生成对应的数据流图;最小循环启动间隔计算步骤:根据数据流图的算子数量和PE阵列的数量计算最小循环启动间隔,以最小循环启动间隔作为循环启动间隔的初始值;算子调度步骤:根据当前循环启动间隔,对数据流图的算子进行调度;调度判断步骤:判断算子调度是否成功,若判断结果为否则循环启动间隔加1,并返回所述算子调度步骤,若判断结果为是则进入阵列图构建步骤;阵列图构建步骤:以当前循环启动间隔构建时间扩展的PE阵列图;排序步骤:选择入度与出度和最大的算子作为根节点对算子进行排序;前向映射步骤:对排序后的节点按序前向映射;当前映射判断步骤:判断当前算子节点是否映射成功,若判断结果为否则进入反向回溯步骤,若判断结果为是则进入所有映射判断步骤;反向回溯步骤:反向回溯到当前节点的前一个映射成功的相邻节点,若所述相邻节点为根节点则循环启动间隔加1,并返回所述算子调度步骤,若所述相邻节点为非根节点则返回所述前向映射步骤;所有映射判断步骤:判断所有算子节点是否映射成功,若判断结果为否则反回前向映射步骤,若判断结果为是则进入配置生成步骤;配置生成步骤:输出映射结果,生成粗粒度可重构体系结构的配置信息。...

【技术特征摘要】
1.一种粗粒度可重构体系结构的算子映射方法,其特征在于,包括:数据流图生成步骤:根据编译器前端的中间语言文件生成对应的数据流图;最小循环启动间隔计算步骤:根据数据流图的算子数量和PE阵列的数量计算最小循环启动间隔,以最小循环启动间隔作为循环启动间隔的初始值;算子调度步骤:根据当前循环启动间隔,对数据流图的算子进行调度;调度判断步骤:判断算子调度是否成功,若判断结果为否则循环启动间隔加1,并返回所述算子调度步骤,若判断结果为是则进入阵列图构建步骤;阵列图构建步骤:以当前循环启动间隔构建时间扩展的PE阵列图;排序步骤:选择入度与出度和最大的算子作为根节点对算子进行排序;前向映射步骤:对排序后的节点按序前向映射;当前映射判断步骤:判断当前算子节点是否映射成功,若判断结果为否则进入反向回溯步骤,若判断结果为是则进入所有映射判断步骤;反向回溯步骤:反向回溯到当前节点的前一个映射成功的相邻节点,若所述相邻节点为根节点则循环启动间隔加1,并返回所述算子调度步骤,若所述相邻节点为非根节点则返回所述前向映射步骤;所有映射判断步骤:判断所有算子节点是否映射成功,若判断结果为否则反回前向映射步骤,若判断结果为是则进入配置生成步骤;配置生成步骤:输出映射结果,生成粗粒度可重构体系结构的配置信息。2.根据权利要求1所述的粗粒度可重构体系结构的算子映射方法,其特征在于,所述中间语言文件包括:从编译器前端生成的中间代码中提取的待加速的循环体内核部分。3.根据权利要求1所述的粗粒度可重构体系结构的算子映射方法,其特征在于,所述排序步骤包括:选择入度与出度和最大的算子作为根节点,采用深度优先搜索算法对算子进行排序。4.根据权利要求3所述的粗粒度可重构体系结构的算子映射方法,其特征在于,所述前向映射步骤包括:依次计算每个节点可映射到时间扩展的PE阵列图上的所有槽的优先级,将当前节点映射到具有最大优先级的槽;每个槽的优先级为当前节点的未映射的相邻节点数量除以该槽可访问的未映射的槽的数量;将当前节点的映射结果保存到映射表中,并把该节点其他未使用的槽存储到回溯表中。5.根据权利要求4所述的粗粒度可重构体系结构的算子映射方法,其特征在于,所述反向回溯步骤包括:定位到距离当前节点最近的已映射的相邻节点作为回溯节点;查询回溯表,将该回溯节点重新映射到回溯表中所记录的优先级最高的槽;更新回溯表,继续前向映射;如果回溯节点也没有可映射的槽,则继续回溯到该回溯节点的前一个已映射的相邻节点;如果已回溯到根节点,则循环启动间隔加...

【专利技术属性】
技术研发人员:尹文志赵仲元绳伟光
申请(专利权)人:上海交通大学
类型:发明
国别省市:上海,31

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

1