一种针对粗粒度可重构结构的降低多类访存冲突编译方法技术

技术编号:27221077 阅读:25 留言:0更新日期:2021-02-04 11:40
一种针对粗粒度可重构结构的降低多类访存冲突编译方法,在编译器后端面高度时,采用访存压力分摊方法进行处理,调整不同子DFG的启动时间,调度结果将会通过数组起始地址偏置分配方法处理,对一时间内所有的访存操作访问的不同数组起始地址进行调整,还包括冲突感知映射方法的处理,根据冲突矩阵和当前映射情况将不同操作映射至PE上,重排序和回溯算法确保了映射过程的正确性。本发明专利技术的有益效果为:有效降低多数组间的多存储体冲突,大幅度降低主存利用DMA传递数据至片上存储器的时间代价;避免访存冲突,带来CGRA上更高的应用加速比;编译器后端流程结构简单,算法复杂度低,编译速度快。速度快。速度快。

【技术实现步骤摘要】
一种针对粗粒度可重构结构的降低多类访存冲突编译方法


[0001]本专利技术涉及粗粒度可重构结构编译器领域,具体地,涉及降低粗粒度可重构结构中的多存储体冲突和互联冲突的数据分区和算子映射方法。

技术介绍

[0002]随着微电子工艺的发展,摩尔定律逐渐走向终结,微处理器的主频难以取得进一步的提升。粗粒度可重构架构(Coarse-Grained Reconfigurable architecture,CGRA)在后摩尔定律时代是相较传统架构能实现更高能效比的体系结构。粗粒度可重构架构往往被应用于加速计算密集型应用程序中。在现代实际生活应用程序中,应用执行时间主要消耗在少量循环内核处。因此,针对将循环内核映射到可重构架构上的优化,对于提升可重构架构计算密集型应用的性能具有重要意义。
[0003]典型的CGRA结构是定义于ADRES[1]模型,如附图1所示。具体由:片上存储缓冲区(on-chip memory buffer,OMB),全局寄存器缓冲区(global register buffer,GRB),指令存储器(context memory)和运算单元阵列(processing element array,PEA)构成。运算单元阵列的每一个运算单元(processing element,PE)结构如附图2所示,包含指令控制单元(context control unit),功能单元(function unit),输出寄存器(output register)和本地寄存器缓冲区(local register buffer,LRB)。基于软流水技术,编译器将计算密集型应用程序循环部分抽象为循环内核形式,通常使用数据流图(data flow gragh,DFG)表示。编译器将DFG中不同运算及访存操作调度(schedule)并映射(mapping)到PEA中不同PE上。多个PE并行执行数据访存及运算,以获得更高的应用加速比和算力。不同的调度及映射策略直接决定了CGRA完成计算密集型运算的加速比和算力。高效地选取调度及映射策略以最小化循环内核实际执行时间,是实现粗粒度可重构架构编译器首要目的之一。
[0004]软件流水线策略带来了对片上存储器缓冲区并行提供数据的要求,当同一时间内访存操作超过的并行提供数据的最大限制后,存在的访存冲突会带来流水线停滞。造成访存冲突的原因有多种,包括多个访存操作同时访问多存储体(Multi-bank)片上存储器(Multi-Bank OMB)同一个存储体(Bank),以及多个访存操作同时占用相同的互联资源。通过对不同实际应用领域常见的循环内核分析统计,我们得到以下特征:第一,循环内核中访存操作占全部操作的47.9%。第二,发生在同一控制周期(Control Step,CS)的访存操作之间的访存冲突造成的时延占总运行时间的68.4%。通过上述分析,可以在编译器调度和映射策略的选取上综合考虑访存冲突因素以降低循环内核运行时间,规划片上存储器内的数据放置以降低主存与片上存储器数据传输时间,以提升应用加速比和算力。
[0005]相关研究及分析
[0006]一、对减少访存冲突的研究
[0007]对减少访存冲突的研究分为两个部分,包括单控制周期内对片上存储器同一存储体访问产生的冲突(多存储体冲突),与单控制周期内抢占同一硬件互联资源造成的冲突(互联冲突)。对于目标CGRA硬件结构,互联冲突主要由多操作同时占用列总线产生,故互联
冲突在本硬件结构中被称为列总线冲突。国内外对减少访存冲突的研究,多集中在对循环内核中访存操作分析,并依此减少多存储体冲突。[2]对循环内核访存数组聚类以保证不同的存储体具有尽可能相等的利用率。[3][4]在[2]方法的基础上将对单个数组的访存操作尽可能映射到同一列PE上,避免多存储体内的数据冗余。[5]分析循环内核单一控制周期内针对单个数组的访存,利用线性变换将单个数组各元素分配到不同存储体内不同位置。[6]在[5]的基础上,将存储体划分为多个块,提升线性变换复杂度以覆盖更复杂的单数组并发访存情况。[7]针对线性变换参数的选取过程优化以加快编译速度。[8]将线性变换参数选取从仅对单数组的分析扩充到多数组,并提出算法对无冲突存储体合并。[9]在[8]多数组线性变换分析的基础上,对调度过程进行优化,进一步避免多存储体冲突。
[0008]然而,上述研究存在三个问题:一是上述研究全部围绕如何降低多存储体冲突展开,但都忽视了互联冲突所带来的性能损失,这一性能损失在访存操作数量占比高的循环内核会大幅度降低性能;二是上述研究解决多存储体冲突的策略仅能解决两访存操作在整个运算过程中访问地址距离不变的情况,而不适用于访存操作之间的关系随着循环迭代的进行而变化的情况;三是上述研究使用复杂的线性变换放置数据策略来解决多存储体冲突,带来了片上存储器内数据存储复杂度的提高,这会导致主存利用直接存储器访问(Direct Memory Access,DMA)传递数据至片上存储器的时间代价提高,进而导致可重构处理器应用加速比的降低。
[0009]二、对CGRA编译器后端调度与映射问题的研究
[0010]粗粒度可重构架构编译器将源程序中循环内核部分生成的中间表示(intermediate representation,IR)转化为数据流图DFG的形式,通过调度和映射过程将图中算子分配给不同PE,最后生成对应PE的配置指令。该问题在算法领域中属于NP问题,所以需要启发性算法高效地搜索可行调度及映射结果。[10]提出的粗粒度可重构架构的模调度(CGRA Modulo Schedule)是多数可重构架构编译器后端的实现基础。[11]提出边缘中心模调度(Edge-centric Modulo Scheduling,EMS)采用以路径问题为主要目标的调度方法。[12]提出的EPIMap将调度和映射问题转化成了寻找最大公共子图问题。[13]提出的RegiMap考虑PE上的LRB对调度过程中长距离数据依赖进行优化,并将映射过程转化成了寻找满足约束的最大组问题。[14]提出的PolyMap利用多面体模型编译对循环内核外的循环间映射流分析,调整循环内核之间执行顺序。[15]提出的MEMMap考虑访存延迟,建立了一个精确的公式解决使用OMB作为路由资源时的CGRA映射问题。[16]提出的RAMP在调度过程中灵活地探索多种路由数据策略,并选择可行且所需资源最少的策略。[17]同时考虑PE、GRB、LRB、OMB资源解决调度和映射问题。此外,[3][4]对传统EMS[11]进行优化,[9]的Dual-Force Directed Scheduling策略为CGRA编译器后端调度与映射问题提出了不同解决方案。然而,上述研究多数未考虑访存冲突对性能的影响,少数考虑访存冲突的调度方案也仅考虑了多存储体冲突,而未考虑互联冲突。这和本专利技术同时针对解决Bank冲突和互联冲突以提升应用加速比和算力有所不同。
[0011]参考文献
[0012][1]Y.Park,J.J.K.Park,and S.Mahlke本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种访存压力分摊方法,作为CGRA编译器后端调度过程中的一个步骤,其特征在于,通过增加控制周期的数量,并调整DFG内不同子图之间的启动时间,将循环内核中每一个控制周期访存操作数量降低,减少每一个控制周期内发生访存冲突的可能性,提升可重构处理器应用加速比。2.如权利要求1所述的访存压力分摊方法,其特征在于,编译器后端对DFG中位于不同控制周期中的节点数量和访存节点数量计数,通过贪婪算法调整不同子图的启动时间,在放置每一个子图时,将节点数量和访存节点数量平均地分配到不同的控制周期中。3.如权利要求2所述的访存压力分摊方法,其特征在于,在当前策略得到的结果不满足每个控制周期内的节点数量限制的情况下,算法在分配启动时间时同时考虑分摊节点数量和访存节点操作数量,在保证单控制周期内节点数量约束下,分摊访存压力。4.一种数据放置方法,作为CGRA编译器后端处理的一个步骤,其特征在于,固定存储体数量,不进行线性变换,仅通过调整数组起始地址来降低多存储体冲突。5.如权利要求4所述的数据放置方法,其特征在于,同一控制周期内两个对不同数组的访存操作和不发生多存储体冲突的条件为:其中,循环内核访存的数组数量为K,数组名记为A1,A2,

,A
K
,当控制周期为r时,对第k个数组A
k
中位置为A
k
[a0i0+a1i1+

a
n-1
i
n-1
+a
n
]元素的访存被记作的向量形式,i0,i1,

,i
n-1
为循环索引,a0,a1,

,a
n-1
为线性变换系数;数组A
k
的所有元素将会被放置到片上存储器首地址为O
k
的位置,BankNum为片上存储器存储体数量。6.如权利要求5的数据放置方法,其特征在于,其目标为选取各数组在片上存储器存储的首地址O
k
,降低在循环内核执行全过程中下式满足的次数,其中,定义两次访问之间的曼哈顿距离为访问索引之间的距离,即哈顿距离为访问索引之间的距离,即在遍历所有可能的数组偏置组合情况下,算法复杂度达到Θ(BankNum
K
)。7.如权利要求6的数据放置方法,其特征在于,选取各数组在片上存储器存储的首地址O
k
时基于贪婪算法,算法复杂度降低至Θ(BankNum
×
K)。8.一种...

【专利技术属性】
技术研发人员:绳伟光陈雨歌蒋剑飞景乃锋王琴毛志刚
申请(专利权)人:上海交通大学
类型:发明
国别省市:

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

1