![]()
|
The 38th Annual IEEE/ACM International Symposium on Microarchitecture, 2005
| |||
Building Efficient Software Dynamic Translators
DescriptionModern software for high-performance and network-based computing is becoming increasingly dynamic and adaptive. Software dynamic translation (SDT) is a technology that enables software malleability and adaptivity at the instruction-level by providing facilities for run-time monitoring and code modification. SDT has many exciting applications, including dynamic code optimizers, computer architecture simulators security checkers, binary instruction set translators, and host machine virtualization.Although SDT is a compelling and useful technology, there are three significant barriers to its acceptance as a general technique to building and deploying software. First, to build adaptive systems based on SDT is complex, time consuming and error prone due to the close coupling of the dynamic translator to the underlying processor architecture and operating system. Second, the performance overhead of SDT, including code translation, instrumentation and multithreading support, can impose a significant penalty. Finally, it is complex to debug dynamically translated programs as typical debuggers do not work for code that has been modified at run-time. To address these challenges, we developed a system, called Strata, for reconfigurable and low overhead SDT. Strata is available for several computing platforms, including SPARC/Solaris 9, x86/Linux, MIPS/IRIX, Sony Playstation 2 MIPS/Linux, and PowerPC/MacOS. It has been used for program security, dynamically compiled computer architecture simulation, dynamic optimization, operating system call interposition, instruction compression/decompression, program instrumentation for self-managing systems, and on-demand application downloading for smartcards. Strata is designed as an object-oriented virtual machine with target independent and dependent services that can be easily reconfigured and retargetted for new applications and computing platforms. Strata uses several novel mechanisms to reduce the overhead of code translation. These capabilities address the several sources of translation overhead involving direct and indirect control transfers and multithreading. Strata also provides capabilities for dynamically inserting and removing program instrumentation, including "instrumentation optimizations" that reduce instrumentation overhead. Tutorial TopicsThis tutorial will describe SDT, its applications, and the approaches used for code translation and instrumentation. The tutorial will explore Strata and its mechanisms for easing the burden and performance penalty of using SDT. Unlike past tutorials, this tutorial will focus on implementation and actual uses of the technology. To make the tutorial practical and implementation oriented, we will use Stratas software implementation to illustrate all concepts presented.The tutorial will have three parts: 1) an introduction to SDT and its applications, 2) reconfigurable and low overhead dynamic translation, and 3) case studies on binary-level code security. In the first part of the tutorial, we will introduce SDT with special attention given to the challenges of developing new uses of SDT, including the overhead of program interception, translation and instrumentation. The second part of the tutorial will describe Strata and how it addresses the challenges from the introduction. We will present Stratas translation process and how its virtual machine organization eases reconfiguring and retargeting the system. The tutorial will then describe Stratas overhead reduction techniques, including partial inlining, indirect branch target caching, and fast-return handling. We will also discuss how Strata supports multithreaded programs. The final part will present case studies of using SDT technology for code security and embedded software development. SDT can be used to protect legacy code against code injection attacks (e.g. buffer overrun attacks) using a variety of complementary techniques (e.g., instruction-set and address-space randomization, software stack protection, etc.), return-to-libc style attacks, and dynamically enforcing user-specified security policies. The technology can also be used in embedded systems for code compression and decompression, memory management, and dynamic code partition loading and unloading. To illustrate how to implement such SDT systems, the tutorial will show Stratas implementation for a security application in which a program is encrypted and then decrypted on-the-fly as it executes. This case study will serve as an example for those wishing to implement their own SDT applications with Strata. Target AudienceThe tutorial will have enough breadth and detail to be beneficial to both engineers/researchers new to SDT and those who are experienced with dynamic translation. The tutorial will assume that attendees have an undergraduate level background in computer science/computer engineering.Presenter BiographiesBruce Childers is an Assistant Professor in the Department of Computer Science at the University of Pittsburgh. Dr. Childers received a BS degree (Computer Science, 1991) from the College of William and Mary, and a PhD degree (Computer Science, 2000) from the University of Virginia. His research interests are compilers and software development tools, computer architecture, and embedded systems. Current research projects include continuous compilation to synergistically apply both static and dynamic code optimizations, debugging for dynamically translated code, power-aware real-time systems, and demand-driven software testing.Jack Davidson is a Professor in the Department of Computer Science at the University of Virginia. Dr. Davidson received the B.A.S. and M.S. degrees in computer science from Southern Methodist University in 1975 and 1977, respectively. He received the Ph.D. degree in computer science from the University of Arizona in 1981. His main research interests include compilers, code generation, optimization, security, embedded systems, and computer architecture. Current research projects include continuous compilation to synergistically apply both static and dynamic code optimizations, compilation for embedded systems, and software security and reliability. | ||||
| | Paper submission | Home | Call for papers (PDF) | Workshops and Tutorials | Technical Program | Hotel information | Organizing committee | Prior MICRO conferences | | ||||