Today, most general desktop PCs uses processors that incorporate SIMD (Single Instruction Multiple Data) units. These SIMD units, however, are for the most part underutilized with the exception of a few multimedia applications. As a result, the processing power of modern processors is not fully unleashed. In this research, we propose a system that applies automatic vectorization techniques to binary code at runtime to increase the utilization ratio of SIMD units, which will speed up the execution of programs. We will refer to this system as Selftrans. Selftrans extracts parallelism from binary x86 machine code without requiring its source code, and translates it into a binary code that utilizes the SIMD units. This paper describes the design and implementation of Selftrans. We will show that Selftrans is (1) capable of automatic vectorization of binary machine code, (2) that SIMDization can significantly improve performance, and (3) that it is possible to perform architecture-specific optimization for various processors.
['Takashi Nakamura', 'Satoshi Miki', 'Shuichi Oikawa']
Automatic Vectorization by Runtime Binary Translation