论文部分内容阅读
不断增长的片上晶体管数量和功耗预算的上限限制造成了“利用率墙”问题的出现。为特定应用和算法设计加速器被认为是提高效能、缓解“利用率墙”问题的重要方法之一。然而,当前大部分设计方法都是针对于某个应用或者算法,严重限制了加速器的适用性。 本文研究了基于程序数据流图的加速器设计方法,提出了一种面向通用计算需求的多加速器架构,主要包含如下内容: (1)提出选择热点区域数据流图子图作为加速对象,设计并实现了程序热点区域数据流图提取工具。本文首先开发了基于LLVM编译框架的数据流图提取工具,能够获得程序执行时间最长的区域以及对应的数据流图。选择SPEC CPU2006里面的17个测试程序作为程序分析工具输入,最后得到了311个数据流图。 (2)采用Similarity Flooding算法评估数据流图间的相似度,并根据AgglomerativeClustering算法进行聚类分析。由于硬件设计复杂度和片上资源的限制,需要将数百个数据流图加以分类。本文基于经典的Similarity Flooding算法分析了数据流图并得到相似度矩阵。然后,采用Agglomerative Clustering自底向上的聚类算法将数据流图分成15类,同时评估了聚类效果。 (3)根据典型数据流图,设计15个可重构的硬件加速器。本文从每类中选取典型数据流图,并分别设计了类似CGRA架构的可重构硬件加速器。其功能单元的操作类型和路由器互连方式可在程序运行期间动态配置,消除数据流图微小差异对于程序代码在加速器映射上的影响。 (4)完成了多加速器架构设计和仿真。本文设计了基于总线互连、共享一级Cache的多加速架构。15个加速器作为处理器流水线的一部分与通用处理器核集成。最后,基于SimpleScalar仿真平台,通过ARM指令扩展,完成了多加速器架构的仿真。实验结果表明,相比于没有集成加速器的ARM处理器,基于程序数据流图分类的多加速器架构能够使得SPEC测试程序有6.2倍的平均加速比。