论文部分内容阅读
飞速发展的计算机系统应用不断对处理器计算能力提出更高需求。面向特定应用的处理器扩展技术主要包括指令系统扩展及专用硬件加速部件扩展这两种方式,可有效提高特定应用的性能,并保持通用处理器灵活的编程模式。从高级语言源程序开始的处理器扩展自动设计技术可以在取得高性能和低功耗的同时,有效提高设计效率,缩短上市时间,拉近设计方法学的发展与生产工艺发展之间的差距,因此日渐得到学术界和工业界的重视,是近年来的研究热点之一。位操作密集型应用在加密、通信等领域广泛存在。当前处理器扩展自动设计方法应用于位操作密集型程序时仍存在一定不足。对此进行深入分析,结合编译技术开展优化,改善自动设计流程,具有重要的理论意义和实际应用需求。
本文面向位操作密集型应用,针对处理器扩展自动设计流程中的编译相关技术开展研究,以提高从高级语言源程序开始的处理器扩展设计的效果。论文首先建立了面向处理器扩展设计的编译支撑平台,同时支持扩展指令和硬件加速部件设计这两种设计流程;接下来对典型的位操作密集型应用进行了详细分析,针对两种主要处理器扩展设计流程中共同的位操作优化需求,提出了基于位值流图的位操作分析及优化方法。在此基础上,本文面向扩展指令自动选择及高层次综合技术,分别建立了相应的数据流图位操作扩展和变换方法。针对位操作密集型应用,在处理器扩展自动设计流程中采用这些方法,可以在更小的硬件开销下获得更高的性能提升。本文的主要内容及贡献包括:
1)建立了面向处理器扩展自动设计的编译支撑平台。从高级编程语言源程序开始的处理器扩展设计对编译技术提出了新的需求。本文指出面向扩展指令自动选择和高层次综合的编译优化既具有共性又具有差异,为二者建立了统一的编译支撑平台。对于给定的用高级编程语言描述的应用程序,本文提出的编译支撑平台可以自动进行前端编译及传统优化,并可根据拟进行的处理器扩展设计流程来选择和配置相应的编译分析优化算法;在对应用进行分析和优化的基础上,可进行扩展指令自动选择,并自动生成周期级精确的支持扩展指令的模拟模块,也可进行高层次综合,生成硬件加速部件的寄存器传输级设计描述。这为处理器扩展自动设计及相关编译技术研究提供了支撑平台,也是本文后续工作的基础。
2)提出了位值流图这种中间表示及相应的位操作优化方法。高级编程语言往往不支持直接的位读写操作描述,只能通过一系列按位与、按位或及移位操作来描述位读写操作。这使得高级编程语言描述与处理器扩展设计的硬件描述需求之间出现了较大差异。处理器扩展设计在一定程度上突破了已有指令系统体系结构的限制,使得在编译器中进行更加系统的位操作分析与优化具有了更实际的意义。本文面向位操作密集型应用,针对两种自动设计流程中对直接的位操作描述及有效的位运算优化的共同需求,提出了一种新的中间表示--位值流图,来刻画操作之间的位值依赖关系;本文描述了从数据流图开始建立位值流图的方法,提出了基于位值流图的位级别常数传播、位级别拷贝复制传播、位级别常数折叠和根据运算规则进行的位级别运算优化等优化方法。实验结果表明,采用基于位值流图的分析和优化,可以简化原本使用与、或、移位等操作表示的位操作,有效减少单位逻辑操作数量及移位操作数量,为后续扩展指令选择和高层次综合中的数据流图位操作扩展及变换提供支撑。
3)提出了面向扩展指令自动选择的数据流图位操作扩展及变换方法。本文分析了面向位操作密集型应用进行扩展指令自动选择时存在的问题,设计并实现了一种数据流图位操作扩展和变换方法,以提高扩展指令自动选择算法的效果。该方法设计了一类新的数据流图结点--BM(Bit Manipulation)结点,来直接描述位读取和赋值操作。对于给定的应用程序,该方法首先建立位值流图,并进行基于位值流图的分析和优化,之后将优化后的位值流图转换为带有BM结点的数据流图,并基于此数据流图进行扩展指令选择,并自动生成扩展指令模拟模块。实验结果表明,针对位操作密集型应用,引入BM结点后的编译策略可以更好地支持扩展指令自动选择工作。本文方法应用于位操作密集型程序时,可以在更小的总面积约束下取得比已有方法更高的加速比。
4)提出了面向高层次综合的数据流图位操作扩展及变换方法。本文分析了面向位操作密集型应用进行高层次综合时存在的问题,设计并实现了一种数据流图位操作扩展和变换方法。该方法根据高层次综合工具接口,引入part_select、part_set及reverse三类结点对数据流图进行扩展;在建立位值流图及优化后,提出一种变换算法,可以有效地将优化后的位值流图转换为使用直接描述位读写操作的指令扩展后的数据流图,从而使后续高层次综合流程可以更有效地产生相应硬件设计。实验结果表明,对于所采用的位操作密集型应用,本文方法可以有效减少高层次综合所生成的硬件设计所用的面积及时间。