Vizer: A System t oV ectorizeIntel x86 Binaries

msra(2002)

引用 24|浏览12
暂无评分
摘要
Traditional compilers conduct optimizations on intermediate representations derived from high level source code. However, it is sometimes necessary and fruitful to optimize executables or compiled object files. This paper describes the Vizer system which automatically vectorizes object code for the Intel x86 architecture. Binary optimization offers the opportunity to improve performance in situations where the optimizer cannot have access to the source code. A binary optimizer can analyze and modify compiled code to increase performance. It can also edit the code to insert instrumentation and sensor code that lets other tools observe the running program’s behavior. While opportunities for binary optimization arise in many contexts, our interest is motivated from two distinct sources. In the Grid Application Development Software (GrADS) project, we are developing tools that optimize an executable version of the program after resources have been chosen and a mapping from the problem to those resources has been established. The technology developed in Vizer is part of the GrADS compilation system. Our second motivation comes from the opportunities present in legacy binaries—executable programs that we cannot recompile. The Vizer technology gives us a way to apply code optimization techniques directly to these programs and to rewrite them in ways that take advantage of new hardware features such as those on the Intel x86 line of processors. The widespread use of the Intel x86 architecture make it an attractive target for binary optimization. Additionally, Intel regularly adds new features to new models of this line. For example, recent Pentiums support Single Instruction Multiple Data (SIMD) instructions called the Multimedia Extensions, Streaming SIMD (SSE), and Streaming SIMD 2 (SSE2) that operate on packed integer and floating point data. At the same time, however, these machines are backwards-compatible with older models in the line. Thus, code compiled for older processors such as the 80386 can run on the latest Pentium processors. Because of its popularity, there exists a large base of applications originally compiled for older x86 processors. Binary optimization offers a way to update these legacy applications so that they make good use of the modern features available on the latest Pentium models. The Vizer system demonstrates the potential for such improvement by implementing an object-level vectorizer that has the potential to dramatically reduce execution time for some codes. Although vectorization of programs written in higher-level languages has been well studied [1, 10, 6], vectorizing low-level assembly code poses a number of additional challenges. A source-level
更多
查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要