
NSF Org: |
CNS Division Of Computer and Network Systems |
Recipient: |
|
Initial Amendment Date: | August 16, 2012 |
Latest Amendment Date: | February 5, 2014 |
Award Number: | 1217231 |
Award Instrument: | Standard Grant |
Program Manager: |
Marilyn McClure
mmcclure@nsf.gov (703)292-5197 CNS Division Of Computer and Network Systems CSE Directorate for Computer and Information Science and Engineering |
Start Date: | September 1, 2012 |
End Date: | August 31, 2016 (Estimated) |
Total Intended Award Amount: | $172,960.00 |
Total Awarded Amount to Date: | $188,960.00 |
Funds Obligated to Date: |
FY 2014 = $16,000.00 |
History of Investigator: |
|
Recipient Sponsored Research Office: |
601 UNIVERSITY DR SAN MARCOS TX US 78666-4684 (512)245-2314 |
Sponsor Congressional District: |
|
Primary Place of Performance: |
601 University Drive San Marcos TX US 78666-4684 |
Primary Place of
Performance Congressional District: |
|
Unique Entity Identifier (UEI): |
|
Parent UEI: |
|
NSF Program(s): | CSR-Computer Systems Research |
Primary Program Source: |
01001415DB NSF RESEARCH & RELATED ACTIVIT |
Program Reference Code(s): |
|
Program Element Code(s): |
|
Award Agency Code: | 4900 |
Fund Agency Code: | 4900 |
Assistance Listing Number(s): | 47.070 |
ABSTRACT
Embedded computer systems have become essential to many aspects of our lives. Cheaper, smaller, faster, more sophisticated, and more energy-efficient embedded devices spur ever new applications. However, the growing complexity and shift to multicores make programming and debugging these systems difficult. Traditional debugging is time consuming and may interfere with program execution, causing some bugs to become irreproducible and making it unusable in real-time environments. Moreover, tracing a processor?s internal state during execution is only feasible for short program segments and requires large on-chip buffers or wide trace ports, either of which increases system cost and limits scalability. This project is developing the next generation of trace compression methods and infrastructure to make continuous, real-time, unobtrusive, and cost-effective program, data, and bus tracing possible in embedded systems. The approach relies on on-chip hardware to record the processor state and corresponding software modules in the debugger. The novel insight is that a sequence of trace records can be translated, without loss of information, into a much shorter sequence of miss events using small hardware structures. The few remaining miss events are then further compressed using highly-effective yet simple-to-implement encoding schemes, yielding heretofore unseen compression ratios.
The new tracing and debugging infrastructure can help programmers find difficult and intermittent software bugs faster, thus improving productivity. For example, reducing debugging time by just one percent amounts to hundreds of millions of dollars annually in saved salaries, with a concomitant reduction in software cost and time to market. Moreover, higher quality software may eliminate errors in medical, automotive, or mission-critical devices and thus save lives.
PUBLICATIONS PRODUCED AS A RESULT OF THIS RESEARCH
Note:
When clicking on a Digital Object Identifier (DOI) number, you will be taken to an external
site maintained by the publisher. Some full text articles may not yet be available without a
charge during the embargo (administrative interval).
Some links on this page may take you to non-federal websites. Their policies may differ from
this site.
PROJECT OUTCOMES REPORT
Disclaimer
This Project Outcomes Report for the General Public is displayed verbatim as submitted by the Principal Investigator (PI) for this award. Any opinions, findings, and conclusions or recommendations expressed in this Report are those of the PI and do not necessarily reflect the views of the National Science Foundation; NSF has not approved or endorsed its content.
Our society increasingly relies upon embedded computer systems that have become essential to many aspects of our lives, including transportation, civil infrastructure, and medicine. Faster, cheaper, smaller, more sophisticated, and more energy-efficient embedded computer systems spur new applications that require very complex programming. The growing software and hardware complexity and tightening time-to-market deadlines make programming and debugging the most critical aspect of embedded system development. According to one study, software developers spend between 50% and 75% of their time debugging programs, yet the nation still loses approximately $20 to $60 billion a year due to software bugs and glitches. The ongoing shift toward larger numbers of processing cores makes software development and debugging even more challenging. Traditional debugging is time consuming and may interfere with program execution, causing some bugs to become irreproducible and making it unusable in real-time settings such as ignition timing of piston engines. Such systems need to be tested in production environments and must be bug-free. Of course, achieving bug-free software is a challenging proposition in general and especially given the exponential growth in hardware and software complexity. Current solutions only allow the tracing of a processor’s internal state for short program segments and require large on-chip buffers or wide trace ports, both of which increase system cost and limit scalability, making these solutions untenable.
The main goal of this project is developing the next generation of trace compression methods and infrastructure to make continuous, real-time, unobtrusive, and cost-effective program and data tracing possible in embedded systems. Our approach relies on on-chip hardware to record the processor state and corresponding software modules in the debugger. The novel insight is that a sequence of trace records can be translated, without loss of information, into a much shorter sequence using simple yet highly-effective hardware structures, yielding heretofore unreached compression ratios. The new tracing and debugging hardware resources, coupled with sophisticated software debuggers, enable programmers to find difficult and intermittent software bugs faster, resulting in improved reliability and quality of software as well as increased overall productivity. For example, reducing debugging time by just 1% amounts to hundreds of millions of dollars annually in saved salaries, with a concomitant reduction in software cost and time-to-market. Moreover, higher quality software may eliminate errors in medical, automotive, and aviation devices and thus save lives. Our research demonstrates how to design such trace-compression methods that provide real-time, unobtrusive, and cost-effective program and data tracing for future generations of embedded processors.
The primary accomplishment is a first-of-its-kind framework for the automatic and systematic creation of effective compression algorithms. Based on a detailed literature search, we extracted and generalized many “components” from previously published compression algorithms. In our framework, each component uses the same interface to transform an input sequence of values into an output sequence. The common interface makes it possible to replace any component with any other. More importantly, the components can be chained such that the output sequence of one component becomes the input sequence of the next component, thus creating arbitrarily complex chains, that is, compression algorithms. Finally, for each component, we implemented a corresponding inverse component. This approach has two main benefits. First, any combination of components results in a valid algorithm (that may or may not compress the traces well). Second, chaining the inverse components in the opposite direction automatically yields the needed decompression algorithm. Based on this infrastructure, we developed search strategies for automatically determining good compression algorithms. For small numbers of components, we use an exhaustive search. For larger numbers of components, we use a genetic algorithm. Our framework can be employed to independently find good compression algorithms for different trace types. By removing unsuitable components (e.g., with overly large table sizes or complexity), the framework automatically synthesizes well-performing algorithms that can be implemented in hardware without exceeding the available chip resources. This work has initiated a new era in data compression. Heretofore, only relatively few compression algorithms have been published and evaluated. They are all carefully designed by hand to exploit known patterns in data. Our approach makes it possible, for the first time, to literally evaluate millions of compression algorithms and to employ sophisticated search algorithms to automatically find and generate compression algorithms that are tailored to a specific domain (e.g., a specific kind of program trace), adhere to given constraints (e.g., a maximum table size), and deliver superior compression ratios.
Last Modified: 11/28/2016
Modified by: Martin Burtscher
Please report errors in award information by writing to: awardsearch@nsf.gov.