粗粒度可重构阵列分支指令的优化设计与实现
2021-05-28汪翔
汪翔
(上海交通大学电子信息与电气工程学院,上海200240)
0 引言
粗粒度可重构阵列(Coarse-Grained Reconfigurable Array,CGRA)[1-4]是一种由运算处理单元,访存单元,控制单元等组成的字级可重构体系结构。它具有较高的执行能效,又能满足灵活性要求,是一种具有前景的异构加速器解决方案。CGRA 在运行时通过重新配置阵列结构来执行各种应用程序,相比于现场可编程门阵列(FP⁃GA),其字级可重构粒度降低了功耗和面积。通过并行化和深流水化阵列运算[5],达到提升计算能力的效果。
然而,由于基于动态数据流驱动的CGRA 缺乏传统CPU 的程序计数器机制和分支预测机制,CGRA 针对分支语句的优化有限。而相对于ASIC 来说,CGRA 在执行分支操作时往往激活多条路径,产生了较高的功耗。
当前的CGRA 在进行设计时通过加入SIMD 特性[6-9]以提高执行效率和性能功耗比,而如何在数据级并行的CGRA 上实现分支指令的执行也成为了CGRA研究中的一个关键问题。目前CGRA 的分支指令执行技术可以分为以下三种:部分断言技术(PP)[10]、完全断言技术(FP)[11-12]以及双发射单执行技术(DISE)[13]。
针对图1(a)所示的基本分支语句,使用部分断言技术进行映射的伪代码如图1(b)所示,针对两条分支语句分别进行函数计算,最后通过sel 操作选出运算结果,并存储到对应的数据地址上。将该代码映射在CGRA 上的数据流图如图1(c)所示,该方法同时执行两条路径,最后通过多选器选出结果操作数,优点在于架构修改小,适合执行分支路径较短的语句,缺点在于需要同时执行两条路径,造成不必要的功耗和性能开销,传统的静态配置CGRA 便是基于这一技术进行分支执行。……
