Enhancing the performance of 16-bit code using augmenting instructions

Enhancing the performance of 16-bit code using augmenting instructions
复制标题

使用增强指令增强 16 位代码的性能

DOI:
10.1145/780732.780767
复制
发表时间:
2003
期刊:
--
影响因子:
--
通讯作者:
Rajiv Gupta
Rajiv Gupta
中科院分区:
--
文献类型:
--
作者:
A. Krishnaswamy;Rajiv Gupta

文献摘要

被引文献

相似文献

在嵌入式领域,内存使用和能耗是关键限制。双宽度指令集嵌入式处理器(例如 ARM)除了 32 位指令集之外还提供 16 位指令集来解决这些问题。使用 16 位指令可以减少代码大小并节省 I-cache 能源,但会牺牲性能。我们观察到,在整个 16 位 Thumb 代码中,存在相当于单个 ARM 指令的 Thumb 指令对。我们开发了一种方法,结合使用编译器和架构支持来利用上述属性来提高 16 位代码的性能。我们通过合并增强扩展 (AX) 来增强 Thumb 指令集。编译器的任务是识别可以安全组合并作为单个 ARM 指令执行的 Thumb 指令对。编译器将此类 Thumb 指令对替换为 AX+Thumb 指令对。 AX 指令与紧随其后的 Thumb 指令合并,在解码时生成单个 ARM 指令。因此,使用 AX 指令,编译器既可以生成紧凑的 16 位代码,又可以为硬件提供生成性能更好的 32 位代码所需的信息。
In the embedded domain, memory usage and energy consumption are critical constraints. Dual width instruction set embedded processors such as the ARM provide a 16-bit instruction set in addition to the 32-bit instruction set to address these concerns. Using 16-bit instructions one can achieve code size reduction and I-cache energy savings at the cost of performance. We have observed that throughout 16-bit Thumb code there exist Thumb instruction pairs that are equivalent to a single ARM instruction. We have developed an approach which uses combination of compiler and architectural support to exploit the above property for improving performance of 16-bit code. We enhance the Thumb instruction set by incorporating Augmenting eXtensions (AX). The task of the compiler is to identify pairs of Thumb instructions that can be safely combined and executed as single ARM instructions. The compiler replaces such pairs of Thumb instructions by AX+Thumb instruction pairs. The AX instruction is coalesced with the immediately following Thumb instruction to generate a single ARM instruction at decode time. Thus, using AX instructions, the compiler can both generate compact 16-bit code and provide hardware with information needed to produce better performing 32-bit code.