Font Size: a A A

Dynamic Translation And Optimization Of A Number Of Key Technologies

Posted on:2007-05-19Degree:DoctorType:Dissertation
Country:ChinaCandidate:J H LiFull Text:PDF
GTID:1118360212484576Subject:Computer architecture
Abstract/Summary:PDF Full Text Request
Dynamic binary translation is just-in-time (JIT) compilation from the binary code of one architecture to another. Dynamic optimization is run-time improvement of code. Dynamic binary translation and optimization technology is well studied and extensively used in dynamic binary translator, dynamic binary optimizer, and high level language virtual machine. These systems have significant meanings in many fields, such as legacy code migration, hardware design, program performance improvement, network application, system security, and parallel programming model. The research in dynamic binary translation and optimization has been one of hot spots in compiler technology.This dissertation focuses on a series of optimization used in dynamic binary translator, dynamic binary optimizator, and high-level language virtual machine. The dissertation begins a deep discussion of the main parameters which may affect the performance of dynamic binary translation and optimization system, and proposes the annotation directed binary translation and optimization, which combines the static compilation and dynamic compilation to improve the performance of the binary running on the computer system. After that, the dissertation analyzes the key challenges of translating SIMD instructions and proposes a solution for generating optimized translation for SIMD instructions. Then, the dissertation turns the focus to the performance of real-life application and proposes a module translation reuse method for decreasing the translation overhead of real-life desktop application. At last, the dissertation researches the array boundary check overhead of Java program in the high performance computation field and porposes an adaptive translation scheme to speculatively hoist the array boundary check out of loops.The main contributions of this dissertation are:1. This dissertation analyzes the reasons that lead to the low performance of the translated code, and proposes a solution to narrow these gaps through annotating the source binary with useful information. The dissertation describes the overall framework of annotation directed binary translation and introduces an extendable annotation format.2. This dissertation proposes an SIMD data type analysis algorithm which translates SSE instructions into Itanium instructions. It use three Itanium floating-point registers and two Itanium general registers to simulate one XMMregister and efficiently synchronize the latest SIMD value among these mapping registers. This algorithm can be used for efficient synchronization where one source register is mapped to multiple mapping registers.3. Based on the SIMD data type analysis algorithm, this dissertation proposes three algorithms that optimize translation for SIMD instructions: the SMD data type re-assignment algorithm, the translate-time inter-block mismatch removal algorithm, and the runtime inter-block data type mismatch removal algorithm. They further improve the translated code by avoiding inter-block data type mismatches and by lowering the execution cost of the translated code block.4. We propose a translation reuse engine that uses a novel verification method and a module-aware memory management mechanism to improve the performance of real-life desktop application. Some real-life desktop application tends to frequently load and unload some modules at run time and most of the loading and unloading are performed on a few "hot" modules. Dynamic loading and unloading these "hot" modules leads to repeatedly translating and excessive memory consumption. The translation reuse engine and the module-aware memory management mechanism address these issues.5. The dissertation proposes an adaptive translation scheme to speculatively hoist the array boundary check out of loops. Though Java is a very promising language for high performance computation, its performance is still unsatisfactory. One cause is the excessive array boundary checks in numerical simulations. An effective way is to hoist the checks outside the loop. Code replication method and versioning method partitions the iteration space into safe and unsafe regions, and executes a fully-optimized version for the safe regions and an un-optimized version for unsafe region. However, the versioning method has to generate multiple versions and is very conservative in the region partition and generating the version for the unsafe region. This dissertation addresses these issues by exploiting the characteristics of dynamic optimization. First, it doesn't generate the version for unsafe region until a hoisted check failure is detected in run time. Second, it is more optimal in partitioning region and generating the version for the unsafe region using the information gets from the hoisted check failure.
Keywords/Search Tags:Dynamic binary translation, Dynamic optimization, Compiler annotation, SIMD instruction translation, Translation reuse, Array boundary check
PDF Full Text Request
Related items