Heterogeneous-ISA processor designs have attracted considerable research interest. However, unlike their homogeneous-ISA counterparts, explicit software support for bridging ISA heterogeneity is required. The lack of a compilation toolchain ready to support heterogeneous-ISA targets has been a major factor hindering research in this exciting emerging area. For any such compiler, "getting right" the mechanics involved in state transformation upon migration and doing this efficiently is of critical importance. In particular, any runtime conversion of the current program stack from one architecture to another would be prohibitively expensive. In this paper, we design and develop Unifico, a new multi-ISA compiler that generates binaries that maintain the same stack layout during their execution on either architecture. Unifico avoids the need for runtime stack transformation, thus eliminating overheads associated with ISA migration. Additional responsibilities of the Unifico compiler backend include maintenance of a uniform ABI and virtual address space across ISAs. Unifico is implemented using the LLVM compiler infrastructure, and we are currently targeting the x86-64 and ARMv8 ISAs. We have evaluated Unifico across a range of compute-intensive NAS benchmarks and show its minimal impact on overall execution time, where less than 6% (10%) overhead is introduced on average for high-end (low-end) processors. We also analyze the performance impact of Unifico's key design features and demonstrate that they can be further optimized to mitigate this impact. When compared against the state-of-the-art Popcorn compiler, Unifico reduces binary size overhead from ~200% to ~10%, whilst eliminating the stack transformation overhead during ISA migration.


翻译:异构指令集架构处理器设计已引起广泛研究关注。然而,与同构指令集架构系统不同,此类设计需要显式的软件支持来弥合指令集架构间的异构性。缺乏能够支持异构指令集架构目标的编译工具链,一直是阻碍这一新兴领域研究的主要因素。对于任何此类编译器而言,正确实现迁移时的状态转换机制并保证其高效性至关重要。特别是,将当前程序栈在运行时从一种架构转换为另一种架构的开销将极其高昂。本文设计并实现了Unifico——一种新型多指令集架构编译器,其生成的二进制文件在执行期间可在不同架构上保持相同的栈布局。Unifico避免了运行时栈转换的需求,从而消除了指令集架构迁移相关的开销。该编译器后端的附加职责还包括维护跨指令集架构的统一应用二进制接口和虚拟地址空间。Unifico基于LLVM编译器基础设施实现,当前主要面向x86-64和ARMv8指令集架构。我们通过一系列计算密集型NAS基准测试对Unifico进行评估,结果表明其对总体执行时间的影响极小:在高端(低端)处理器上平均引入的开销低于6%(10%)。我们还分析了Unifico关键设计特性对性能的影响,并论证了可通过进一步优化来降低这种影响。与当前最先进的Popcorn编译器相比,Unifico将二进制文件大小开销从约200%降低至约10%,同时完全消除了指令集架构迁移期间的栈转换开销。

0
下载
关闭预览

相关内容

MIMIC-IT:多模态上下文指令调优
专知会员服务
39+阅读 · 2023年6月11日
Python图像处理,366页pdf,Image Operators Image Processing in Python
国家自然科学基金
3+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
Arxiv
0+阅读 · 1月6日
VIP会员
相关基金
国家自然科学基金
3+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
4+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
国家自然科学基金
0+阅读 · 2015年12月31日
Top
微信扫码咨询专知VIP会员