[发明专利]一种可重构编译器中循环流水迭代间启动间距自动分析方法有效
申请号: | 201510593950.4 | 申请日: | 2015-09-17 |
公开(公告)号: | CN105302624B | 公开(公告)日: | 2018-10-26 |
发明(设计)人: | 吴艳霞;郭振华;张国印;谢东良 | 申请(专利权)人: | 哈尔滨工程大学 |
主分类号: | G06F8/41 | 分类号: | G06F8/41 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 150001 黑龙江省哈尔滨市南岗区*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种可重构编译器中循环流水迭代间启动间距自动分析方法。对计数类循环进行循环流水迭代间启动间距信息模型的构建;将计数类循环的代码转换成SCoPs数据结构形式;根据计数类循环程序的SCoPs数据结构,进行循环流水迭代间写后读RAW数据依赖关系分析,得到RAW_DDA模型描述的计数类循环程序的RAW数据依赖关系分析结果RAW_DDA;基于计数类循环程序的RAW_DDA模型,进行循环流水迭代间启动间距的自动分析,得到循环流水迭代间非固定启动间距模型NF_II描述的启动间距自动分析结果。本发明能够减少循环流水执行时迭代间启动等待延时,具有通用性。 | ||
搜索关键词: | 一种 可重构 编译器 循环 流水 迭代间 启动 间距 自动 分析 方法 | ||
【主权项】:
1.一种可重构编译器中循环流水迭代间启动间距自动分析方法,其特征在于:包括以下步骤,步骤一:对计数类循环进行循环流水迭代间启动间距信息模型的构建,其中循环流水迭代间启动间距信息模型包括SCoPs数据结构、RAW_DDA模型和非固定启动间距模型NF_II;步骤二:将计数类循环的代码转换成SCoPs数据结构形式;步骤三:根据计数类循环程序的SCoPs数据结构,进行循环流水迭代间写后读RAW数据依赖关系分析,得到RAW_DDA模型描述的计数类循环程序的RAW数据依赖关系分析结果RAW_DDA;步骤四:基于计数类循环程序的RAW_DDA模型,进行循环流水迭代间启动间距的自动分析,得到循环流水迭代间非固定启动间距模型NF_II描述的启动间距自动分析结果,得到启动间距向量其中,表示循环体中迭代点Ir=pr+k·θr与Ir=pr+(k+1)·θr之间的启动间距;delay表示依赖关系next在循环Loop(r)中循环体迭代之间时钟延时;T(Loop(r+1))表示在循环Loop(r)中索引变量为Ir时循环Loop(r+1)流水执行时的时钟周期;根据RAW_DDA得到的RAW数据依赖关系分析结果进行多层循环的迭代间启动间距分析时,将多层循环按照递归表示成多个单层循环的形式,Loop(r)中循环体迭代之间启动间距是由与索引变量Ir相关的RAW数据依赖关系所决定,其中1≤r≤m,Loop(r)的启动间距向量与索引变量Ir存在一对一仿射关系,如式(1)所示,其中,k是正整数;循环体中迭代点Ir=pr+k·θr与Ir=pr+(k+1)·θr之间的启动间距为启动间距由NEXT(Array(Ir))决定,独立的数据依赖关系NEXT=(next,δ,Δ)与启动间距向量中每个启动间距的关系如式(2)所示,其中delay表示依赖关系next在循环Loop(r)中循环体迭代之间时钟延时;在循环Loop(r)中,根据RAW依赖关系next的依赖距离δ获得具有依赖关系next的两次迭代之间的延时delay,如式(3)所示,其中T(Loop(r+1))表示在循环Loop(r)中索引变量为Ir时循环Loop(r+1)流水执行时的时钟周期;循环Loop(r)的两次迭代之间延时delay由最内层循环Loop(m)的循环体以递归形式计算得到,循环Loop(m)的迭代间启动间距向量为在实现循环内部流水执行的同时,实现循环层间也进行流水执行,最内层循环Loop(m)的执行时间根据公式(4)计算得出;根据式(5)从最内层循环逆向递归求出深度1<r≤m的循环Loop(r)的运行时钟周期T;首先,对最内层循环Loop(m)的启动间距向量进行分析;采用基于硬件延时的流水线划分算法对循环体进行流水线划分;按照式(5)对迭代间启动间距向量进行初始化;然后对的RAW_DDA模型中数据依赖关系集合[NEXT]进行筛选,当Δ*θm≥δ时,则该依赖关系next会对循环体下一次迭代执行产生推后影响,对符合该条件的next依赖关系进行遍历,根据式(2)进行启动间距向量的更新;所述的计数类循环为:索引变量向量其中m为多层循环的最大深度;Loop(r)表示索引变量为Ir的循环,其中1≤r≤m,循环体用表示,表示循环体由索引向量控制,索引变量Ir=(pr,qr,θr),其中,pr和qr分别表示索引变量Ir的初值和终值,且是(I1,I2,...,Ir‑1)的整值函数,θr表示循环变量Ir的增量且θr为常数;所述的SCoPs数据结构表示为:SCoPs由context和一系列声明statement构成一个二元组<Context,[Statement]>,其中context是SCoP约束参数的集合;每个声明statement都是一个四元组<Name,Domain,Schedule,[Access]>,Statement的单位是多层循环Loop中循环体其中1≤r≤m,其中Name表示声明statement的名称;Domain是声明的迭代域,表示一个statement在多层循环中的多维迭代空间域;Schedule是多维空间中迭代向量的整型映射,表示迭代空间中statement的迭代向量;[Access]是声明中对数组元素的访存操作集合,主要包括读、写、读写三种;所述的RAW_DDA模型是指:RAW_DDA=(statement,I,[Array],[NEXT]),其中RAW_DDA表示循环流水迭代间数据依赖关系分析结果,statement表示多层循环程序中的一个循环体的声明;I表示循环体索引变量Ir,1≤r≤m;[Array]是与索引变量Ir相关的RAW数据依赖关系的数组集合,用Array(Ir)表示;[NEXT]表示statement声明中所有迭代间RAW数据依赖关系集合,NEXT(Array(Ir))表示Array(Ir)中单个数组所引起的RAW数据依赖关系集合,其中NEXT是一个三元组(next,δ,Δ),其中δ表示迭代间RAW数据依赖关系的依赖距离,Δ表示依赖关系next在循环体中跨过的流水段延时;所述的非固定启动间距模型NF_II是指:多层循环中循环体迭代间启动间距信息用二维向量表示,1≤r≤m,其中表示循环体在索引变量Ir控制下流水启动时的延时向量,即循环体在迭代空间中迭代点(I1,I2,...,Ir,...,Im)与(I1,I2,...,Ir+θr,...,Im)之间的启动延时按照字典顺序生成的迭代间启动间距向量。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201510593950.4/,转载请声明来源钻瓜专利网。