论文标题
关于并发的体系结构映射
On Architecture to Architecture Mapping for Concurrency
论文作者
论文摘要
从一个体系结构到另一种体系结构的映射程序在诸如二进制翻译,分解,仿真,虚拟化和应用程序迁移等技术中起关键作用。尽管多层体系结构无处不在,但最先进的翻译工具不能正确处理并发原则。这样做是很具有挑战性的,因为架构之间的并发模型存在细微的差异。 作为回应,我们解决了挑战的各个方面。首先,我们在两个主流体系结构家族的并发模型之间进行了正确,有效的翻译:X86和ARM(版本7和8)。我们在X86和ARMV8和ARMV7之间开发直接映射,以及消除栅栏算法,以消除直接映射后冗余围栏。尽管我们的映射将ARMV8用作映射X86和ARMV7之间的中间模型,但我们认为它不应将其用作分解器中的中间模型,因为它不允许常见的编译器转换。 其次,我们建议并实施一种技术,用于插入内存围栏,以在不同体系结构之间安全迁移程序。我们的技术检查了针对X86和ARM的鲁棒性,并在违反稳健性的情况下插入了围栏。我们的实验表明,在大多数程序中,我们的两种技术都与跨这些体系结构进行移植应用程序相比,我们的两种技术都少了围栏。
Mapping programs from one architecture to another plays a key role in technologies such as binary translation, decompilation, emulation, virtualization, and application migration. Although multicore architectures are ubiquitous, the state-of-the-art translation tools do not handle concurrency primitives correctly. Doing so is rather challenging because of the subtle differences in the concurrency models between architectures. In response, we address various aspects of the challenge. First, we develop correct and efficient translations between the concurrency models of two mainstream architecture families: x86 and ARM (versions 7 and 8). We develop direct mappings between x86 and ARMv8 and ARMv7, and fence elimination algorithms to eliminate redundant fences after direct mapping. Although our mapping utilizes ARMv8 as an intermediate model for mapping between x86 and ARMv7, we argue that it should not be used as an intermediate model in a decompiler because it disallows common compiler transformations. Second, we propose and implement a technique for inserting memory fences for safely migrating programs between different architectures. Our technique checks robustness against x86 and ARM, and inserts fences upon robustness violations. Our experiments demonstrate that in most of the programs both our techniques introduce significantly fewer fences compared to naive schemes for porting applications across these architectures.