APP下载

一种基于模拟退火的动态发射型CGRA编译方法

2021-05-28杨伟东

现代计算机 2021年10期

杨伟东

(上海交通大学电子信息与电气工程学院,上海200240)

0 引言

可重构架构因为其相较于ASIC的灵活性和相较于CPU的高能效比,在Dennard缩放定律逐渐失效的现在[1],获得了学术界和工业界的广泛关注[2-6]。相比于FPGA(Field Programmable Gate Array),粗粒度可重构架 构(Coarse-Grained Reconfigurable Architectures,CGRA)因为其粗粒度的重构粒度,降低了重构代价,带来更高的能效比。

传统的CGRA属于静态放置静态发射(Static Issue,Static Placement,SISP)型CGRA[7-8],该类型的CGRA一般由指令进行驱动,需要编译器显式指明每条指令的执行时间和对应的处理单元,给编译器开发带来了较多约束,例如:计算资源的约束、存储资源的约束、互连约束,等等。这些约束可能导致编译器用调度效率来交换调度正确性,将优化压力集中到编译器上,给编译器开发带来了严峻的挑战。而且,如果CGRA内部存在同步机制,每个处理单元(Processing Element,PE)需要等待执行时间最久的PE的任务完成,使得其他处理单元处于闲置状态,从而导致CGRA性能降低。

针对以上问题,Zhao在文献[9]提出一种静态放置动态发射(Static-Placement,Dynamic-Issue,SPDI)型CGRA,通过硬件机制减少编译器在时间域上的约束,对编译器的开发更加友好,同时通过算子的动态执行来减小同步机制带来的性能损失。

本文面向以上SPDI型CGRA开展编译技术研究,充分发挥其硬件性能。

1 SPDI型CGRA架构

SPDI型CGRA主要加速程序中计算密集型循环。该类型CGRA不需要配置信息显式指明算子的执行时间,其内部的Token Buffer机制可以根据算子的输入操作数是否就绪以及CGRA内部的资源情况动态地决定算子的发射时间,该类型的CGRA架构如图1所示。

图1 SPDI型CGRA架构[9]

登录APP查看全文