DISE: Implementing Application Meta-Features via Software-Programmable Decoding

Dynamic Instruction Stream Editing (DISE) is a cooperative software-hardware scheme for efficiently adding meta-features—e.g., safety/security checking, profiling, and dynamic code decompression—to an application. DISE implements meta-features by providing a programmable processor decoder that macro-expands certain instructions into parameterized instruction sequences. The technique is similar in spirit to programmable microcode and exploits the macro-expansion-style decoding technology already present in many of today’ s processors. DISE is a single facility that unifies the implementation of a large class of meta-features previously requiring either special-purpose hardware widgets or software-only tools like binary rewriters. Meta-features implemented via DISE require no new hardware widgets and avoid many of the costs of binary rewriting, primarily static code bloat and the fix ed overhead of the rewriting process itself. The dynamic character of DISE makes it appropriate for meta-features with fine grain intermittent usage patterns (e.g., sampled profiling) as well as applications that have no natural software implementations (e.g., dynamic code decompression). In this paper, we introduce DISE and show how it can be used to formulate three meta-features: path profiling, memory fault isolation, and dynamic code decompression. We find DISE to be general, powerful, and efficient. We describe the requirements of a DISE implementation and show one particular design. We also discuss the implications of DISE on all facets of a system. Using cycle-level simulation we show that DISE-implemented meta-features have competitive raw performance and a profitable dynamic cost structure.

[1]  James R. Larus,et al.  Optimally profiling and tracing programs , 1992, POPL '92.

[2]  Todd M. Austin,et al.  The SimpleScalar tool set, version 2.0 , 1997, CARN.

[3]  James R. Larus,et al.  The use of program profiling for software maintenance with applications to the year 2000 problem , 1997, ESEC '97/FSE-5.

[4]  Will Sherwood,et al.  Patchable control store for reduced microcode risk in a VLSI VAX microcomputer , 1984, MICRO 17.

[5]  Ashok K. Agrawala,et al.  Dynamic Problem-Oriented Redefinition of Computer Architecture via Microprogramming , 1978, IEEE Transactions on Computers.

[6]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multi-threaded programs , 1997, TOCS.

[7]  B. Miller,et al.  The Paradyn Parallel Performance Measurement Tools , 1995 .

[8]  DuesterwaldEvelyn,et al.  Software profiling for hot path prediction , 2000 .

[9]  K. Ebcioglu,et al.  Daisy: Dynamic Compilation For 10o?40 Architectural Compatibility , 1997, Conference Proceedings. The 24th Annual International Symposium on Computer Architecture.

[10]  Erik R. Altman,et al.  Daisy: Dynamic Compilation For 10o?40 Architectural Compatibility , 1997, Conference Proceedings. The 24th Annual International Symposium on Computer Architecture.

[11]  Kourosh Gharachorloo,et al.  Shasta: a low overhead, software-only approach for supporting fine-grain shared memory , 1996, ASPLOS VII.

[12]  Robert Wahbe,et al.  Efficient software-based fault isolation , 1994, SOSP '93.

[13]  R. L. Sites,et al.  ATUM: a new technique for capturing address traces using microcode , 1986, ISCA '86.

[14]  Andrew Wolfe,et al.  Executing compressed programs on an embedded RISC architecture , 1992, MICRO.

[15]  Todd M. Austin,et al.  DIVA: a reliable substrate for deep submicron microarchitecture design , 1999, MICRO-32. Proceedings of the 32nd Annual ACM/IEEE International Symposium on Microarchitecture.

[16]  Alec Wolman,et al.  Instrumentation and optimization of Win32/intel executables using Etch , 1997 .

[17]  R. Nair,et al.  Exploiting Instruction Level Parallelism In Processors By Caching Scheduled Groups , 1997, Conference Proceedings. The 24th Annual International Symposium on Computer Architecture.

[18]  James R. Larus,et al.  Efficient path profiling , 1996, Proceedings of the 29th Annual IEEE/ACM International Symposium on Microarchitecture. MICRO 29.

[19]  Michael Burrows,et al.  Eraser: a dynamic data race detector for multithreaded programs , 1997, TOCS.

[20]  Thomas W. Reps,et al.  The Use of Program Profiling for Software Testing , 1997, GI Jahrestagung.

[21]  James R. Larus,et al.  EEL: machine-independent executable editing , 1995, PLDI '95.

[22]  Gurindar S. Sohi,et al.  A programmable co-processor for profiling , 2001, Proceedings HPCA Seventh International Symposium on High-Performance Computer Architecture.

[23]  Mikko H. Lipasti,et al.  Implementing optimizations at decode time , 2002, ISCA.

[24]  Barton P. Miller,et al.  The Paradyn Parallel Performance Measurement Tool , 1995, Computer.

[25]  P. Glaskowski Pentium 4 (partially) previewed , 2000 .

[26]  Trevor N. Mudge,et al.  Improving code density using compression techniques , 1997, Proceedings of 30th Annual International Symposium on Microarchitecture.