论文部分内容阅读
近些年来体系结构的设计发生了许多变化,从原来的单核到现在的多核以及集群的设计,这种变化的一个重要目标就是满足应用的计算需求。然而应用的多样性以及差异性使得这种“one fits all”的体系结构设计哲学变得不可能,同时一些新兴应用环境(嵌入式领域以及移动智能设备,如手机,数码相机)的出现也给传统体系结构的设计带来非常大得挑战,传统体系结构在适用于这些应用背景时所面临的一个非常难解决的问题就是无法满足它们在性能,功耗以及成本上的严苛要求。为了满足应用在性能以及功耗方面的需求,我们必须要针对每一个应用程序进行专门的分析,挖掘他们的内在特征和算法本质,进而根据这些特点设计专门的体系结构,于是领域专用的体系结构设计便在这种大环境下应用而生。这种专用结构所带来的性能提升以及功耗降低主要得益于它里面针对特殊计算流程所定制的硬件功能模块。然而在领域专用的结构设计里面一个关键而困难的问题便是如何自动化的实现专用体系结构的设计,并获得有效性以及灵活性的平衡,概括起来有以下两个问题需要回答: 1.给定来自于一个领域或者多个领域当中的一组程序,我们需要设计多少种定制体系结构才能满足应用的加速要求 2.对于每一个结构类别,它最关键的计算结构是怎样的,什么样的算法模式才应该定制为硬件加速单元 在本论文当中我们针对多个程序组成的集合按专用加速体系结构适应性分类和共性可加速操作的生成问题,提出一种全自动化的解决方案。该方法注意到了领域应用之间存在的相似性,使用频繁子图挖掘的方法来识别多个应用之间的公共计算操作,并将这些公共计算结构定制为扩展的指令。这种共性挖掘能够充分揭示领域应用之间的核心操作结构和关键计算模式。本论文方法的技术优势在于: 整个流程通过频繁子图挖掘的机制实现了完全的自动化,不需要任何的人工参与。本发明可在使用者对于目标应用程序集完全不了解的情况下挖掘关键结构; 本论文充分利用了领域当中各个应用之间的相似性来挖掘多个应用之间频繁出现的主流计算结构,这也就保证解决了方法的可重用性以及灵活性; 本技术能够将来自不同领域背景的应用程序分类到少数几个高内聚性的分组当中,从而约减了硬件加速电路设计的复杂度。 本论文的主要创新点在于: 基于算法内在相似度的程序分析流程 对输入的一组源程序程序进行自动化的分析,不需要任何的人工参与以及指导,最终生成高内聚性的分组,以及每一个分组关键的计算结构和算法模式。 算法内在相似度的度量指标 能够将算法相似性这种抽象的东西建模,具体化为公共子图的集合,同时提供了一种量化的手段来衡量应用相似性的程度,领域相似性的程序以及领域当中应用相似性的波动情况等,为后面基于算法内在相似性(公共计算结构)的聚类提供数学基础。 基于频繁子图的共性操作提取算法 实现了数据流图中的频繁子图挖掘,从而提取多个应用程序当中的公共操作和相同的计算结构。 针对领域专用加速的程序聚类算法 针对领域专用的加速器设计,将来自同一领域或者不同领域的多个应用根据算法相似性进行分类,并提供每一类当中的关键计算结构和特点,从而约减设计空间,为设计者提供直接的指导和建议。