VLDB 2026 Research / reviewers in the wild / expert
Michael D. Smith 0001
dblp:163/1790-1
· DBLP profile ↗
38ranked-venue papers
4as first author
0since 2021 · last 2010
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 27 · 3 first-authorSoftware engineering, systems software and programming languages · 15 · 4 first-authorComputer networks · 3Artificial intelligence and machine learning · 1Graphics, computer vision, multimedia, augmented reality and games · 1Applied, interdisciplinary, general and emerging computing · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Computer architecture, parallel and distributed computing, and storage systems
23 papers |
Energy-efficient computing · 26% Processor architecture and microarchitecture · 23% Hardware reliability and fault tolerance · 16% | |
| Software engineering, system software, and programming languages
17 papers |
Compilers and program optimization · 60% Runtime systems and virtual machines · 19% Operating systems · 10% | |
| Artificial intelligence
1 paper |
Information extraction and text analysis · 100% |
Topics — the 30 heaviest of 62, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Energy-efficient computing
power management |
0.2 | 3 | 2010 | Eliminating voltage emergencies via software-guided code transformations · ACM Trans. Archit. Code Optim. 2010 Voltage emergency prediction: Using signatures to reduce operating margins · HPCA 2009 Software-assisted hardware reliability: abstracting circuit-level challenges to the software stack · DAC 2009 |
Compilers and program optimization
dynamic optimization |
0.1 | 3 | 2006 | Improving Region Selection in Dynamic Optimization Systems · MICRO 2005 Generational Cache Management of Code Traces in Dynamic Optimization Systems · MICRO 2003 Managing bounded code caches in dynamic binary optimization systems · ACM Trans. Archit. Code Optim. 2006 |
Hardware reliability and fault tolerance
processor reliability |
0.1 | 1 | 2010 | Eliminating voltage emergencies via software-guided code transformations · ACM Trans. Archit. Code Optim. 2010 |
Energy-efficient computing › power delivery
voltage noise mitigation |
0.1 | 1 | 2010 | Voltage Smoothing: Characterizing and Mitigating Voltage Noise in Production Processors via Software-Guided Thread Scheduling · MICRO 2010 |
Runtime systems and virtual machines › virtual machine implementation
code cache management |
0.1 | 2 | 2006 | Managing bounded code caches in dynamic binary optimization systems · ACM Trans. Archit. Code Optim. 2006 Generational Cache Management of Code Traces in Dynamic Optimization Systems · MICRO 2003 |
Hardware reliability and fault tolerance
soft errors |
0.1 | 1 | 2009 | Software-assisted hardware reliability: abstracting circuit-level challenges to the software stack · DAC 2009 |
Electronic design automation › power integrity
inductive noise |
0.1 | 1 | 2008 | DeCoR: A Delayed Commit and Rollback mechanism for handling inductive noise in processors · HPCA 2008 |
Distributed systems › fault tolerance
rollback recovery |
0.1 | 1 | 2008 | DeCoR: A Delayed Commit and Rollback mechanism for handling inductive noise in processors · HPCA 2008 |
Compilers and program optimization
code layout optimization |
0.1 | 5 | 1999 | Procedure placement using temporal-ordering information · ACM Trans. Program. Lang. Syst. 1999 System Support for Automated Profiling and Optimization · SOSP 1997 Near-optimal Intraprocedural Branch Alignment · PLDI 1997 |
Processor architecture and microarchitecture
branch prediction |
0.1 | 5 | 1999 | Static correlated branch prediction · ACM Trans. Program. Lang. Syst. 1999 An Analysis of Dynamic Branch Prediction Schemes on System Workloads · ISCA 1996 Performance issues in correlated branch prediction schemes · MICRO 1995 |
Natural language and speech › Information extraction and text analysis › sentiment analysis
sentiment classification |
0.1 | 1 | 2007 | The Impact of Time on the Accuracy of Sentiment Classifiers Created from a Web Log Corpus · AAAI 2007 |
Compilers and program optimization › register allocation
graph coloring register allocation |
0.1 | 2 | 2004 | A generalized algorithm for graph-coloring register allocation · PLDI 2004 Quality and Speed in Linear-scan Register Allocation · PLDI 1998 |
Compilers and program optimization
register allocation |
0.1 | 2 | 2004 | A generalized algorithm for graph-coloring register allocation · PLDI 2004 Quality and Speed in Linear-scan Register Allocation · PLDI 1998 |
Operating systems › resource management › memory management
cache replacement |
0.1 | 1 | 2006 | Managing bounded code caches in dynamic binary optimization systems · ACM Trans. Archit. Code Optim. 2006 |
Compilers and program optimization › binary optimization
dynamic binary optimization |
0.1 | 1 | 2006 | Managing bounded code caches in dynamic binary optimization systems · ACM Trans. Archit. Code Optim. 2006 |
Runtime systems and virtual machines › dynamic compilation › just-in-time compilation
trace selection |
0.1 | 1 | 2005 | Improving Region Selection in Dynamic Optimization Systems · MICRO 2005 |
Processor architecture and microarchitecture
instruction set architecture |
0.0 | 4 | 1998 | Informing Memory Operations: Providing Memory Performance Feedback in Modern Processors · ISCA 1996 A high-performance microarchitecture with hardware-programmable functional units · MICRO 1994 Improving the Accuracy of Static Branch Prediction Using Branch Correlation · ASPLOS 1994 |
Processor architecture and microarchitecture › branch prediction
correlated branch prediction |
0.0 | 2 | 1999 | Static correlated branch prediction · ACM Trans. Program. Lang. Syst. 1999 A Comparative Analysis of Schemes for Correlated Branch Prediction · ISCA 1995 |
Memory systems
cache coherence |
0.0 | 2 | 1998 | Informing Memory Operations: Memory Performance Feedback Mechanisms and Their Applications · ACM Trans. Comput. Syst. 1998 Informing Memory Operations: Providing Memory Performance Feedback in Modern Processors · ISCA 1996 |
Cloud and datacenter computing › access control
fine-grained access control |
0.0 | 2 | 1998 | Informing Memory Operations: Memory Performance Feedback Mechanisms and Their Applications · ACM Trans. Comput. Syst. 1998 Informing Memory Operations: Providing Memory Performance Feedback in Modern Processors · ISCA 1996 |
Processor architecture and microarchitecture › branch prediction
static branch prediction |
0.0 | 2 | 1999 | Static correlated branch prediction · ACM Trans. Program. Lang. Syst. 1999 Improving the Accuracy of Static Branch Prediction Using Branch Correlation · ASPLOS 1994 |
Memory systems
cache |
0.0 | 3 | 1999 | Procedure placement using temporal-ordering information · ACM Trans. Program. Lang. Syst. 1999 Procedure Placement Using Temporal Ordering Information · MICRO 1997 Performance issues in correlated branch prediction schemes · MICRO 1995 |
Hardware reliability and fault tolerance › error recovery
checkpoint recovery |
0.0 | 1 | 2010 | Eliminating voltage emergencies via software-guided code transformations · ACM Trans. Archit. Code Optim. 2010 |
Processor architecture and microarchitecture
chip multiprocessor |
0.0 | 1 | 2010 | Voltage Smoothing: Characterizing and Mitigating Voltage Noise in Production Processors via Software-Guided Thread Scheduling · MICRO 2010 |
Parallel and multicore computing › parallel scheduling
thread scheduling |
0.0 | 1 | 2010 | Voltage Smoothing: Characterizing and Mitigating Voltage Noise in Production Processors via Software-Guided Thread Scheduling · MICRO 2010 |
Compilers and program optimization › dynamic optimization
profile-guided optimization |
0.0 | 3 | 1999 | System Support for Automated Profiling and Optimization · SOSP 1997 Static correlated branch prediction · ACM Trans. Program. Lang. Syst. 1999 Better Global Scheduling Using Path Profiles · MICRO 1998 |
Performance modeling and evaluation
workload characterization |
0.0 | 3 | 1997 | The Measured Performance of Personal Computer Operating Systems · ACM Trans. Comput. Syst. 1996 System Support for Automated Profiling and Optimization · SOSP 1997 An Analysis of Dynamic Branch Prediction Schemes on System Workloads · ISCA 1996 |
Memory systems › cache management
cache miss handling |
0.0 | 2 | 1998 | Informing Memory Operations: Memory Performance Feedback Mechanisms and Their Applications · ACM Trans. Comput. Syst. 1998 Informing Memory Operations: Providing Memory Performance Feedback in Modern Processors · ISCA 1996 |
Energy-efficient computing
power delivery |
0.0 | 1 | 2008 | DeCoR: A Delayed Commit and Rollback mechanism for handling inductive noise in processors · HPCA 2008 |
Electronic design automation › power integrity
voltage fluctuation |
0.0 | 1 | 2008 | DeCoR: A Delayed Commit and Rollback mechanism for handling inductive noise in processors · HPCA 2008 |
Methods — techniques the papers use, named apart from their topics
checkpoint-recovery · 0.3sentiment classification · 0.1simulation · 0.1workload characterization · 0.1software-guided code transformation · 0.1on-die voltage sensing · 0.1code rescheduling · 0.1signature-based prediction · 0.1instruction rescheduling · 0.1store queue and reorder buffer reuse · 0.1generational caching · 0.1graph coloring · 0.1generational heuristic · 0.1overlapping trace combination · 0.1last-executed iteration · 0.1path profiling · 0.0trace profiling · 0.0profile-driven optimization · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2010 | Voltage Smoothing: Characterizing and Mitigating Voltage Noise in Production Processors via Software-Guided Thread SchedulingabstractParameter variations have become a dominant challenge in microprocessor design. Voltage variation is especially daunting because it happens so rapidly. We measure and characterize voltage variation in a running Intel Core2 Duo processor. By sensing on-die voltage as the processor runs single-threaded, multi-threaded, and multi-program workloads, we determine the average supply voltage swing of the processor to be only 4 percent, far from the processor's 14percent worst-case operating voltage margin. While such large margins guarantee correctness, they penalize performance and power efficiency. We investigate and quantify the benefits of designing a processor for typical-case (rather than worst-case) voltage swings, assuming that a fail-safe mechanism protects it from infrequently occurring large voltage fluctuations. With today's processors, such resilient designs could yield 15 percent to 20 percent performance improvements. But we also show that in future systems, these gains could be lost as increasing voltage swings intensify the frequency of fail-safe recoveries. After characterizing micro architectural activity that leads to voltage swings within multi-core systems, we show that a voltage-noise-aware thread scheduler in software can co-schedule phases of different programs to mitigate error recovery overheads in future resilient processor designs. Vijay Janapa Reddi, Svilen Kanev, Wonyoung Kim, Simone Campanoni, Michael D. Smith 0001, Gu-Yeon Wei, David Brooks 0001 |
MICRO | 5 |
| 2010 | Eliminating voltage emergencies via software-guided code transformationsabstractIn recent years, circuit reliability in modern high-performance processors has become increasingly important. Shrinking feature sizes and diminishing supply voltages have made circuits more sensitive to microprocessor supply voltage fluctuations. These fluctuations result from the natural variation of processor activity as workloads execute, but when left unattended, these voltage fluctuations can lead to timing violations or even transistor lifetime issues. In this article, we present a hardware--software collaborative approach to mitigate voltage fluctuations. A checkpoint-recovery mechanism rectifies errors when voltage violates maximum tolerance settings, while a runtime software layer reschedules the program's instruction stream to prevent recurring violations at the same program location. The runtime layer, combined with the proposed code-rescheduling algorithm, removes 60% of all violations with minimal overhead, thereby significantly improving overall performance. Our solution is a radical departure from the ongoing industry-standard approach to circumvent the issue altogether by optimizing for the worst-case voltage flux, which compromises power and performance efficiency severely, especially looking ahead to future technology generations. Existing conservative approaches will have severe implications on the ability to deliver efficient microprocessors. The proposed technique reassembles a traditional reliability problem as a runtime performance optimization problem, thus allowing us to design processors for typical case operation by building intelligent algorithms that can prevent recurring violations. Vijay Janapa Reddi, Simone Campanoni, Meeta Sharma Gupta, Michael D. Smith 0001, Gu-Yeon Wei, David Brooks 0001, Kim M. Hazelwood |
ACM Trans. Archit. Code Optim. | 4 |
| 2009 | Software-assisted hardware reliability: abstracting circuit-level challenges to the software stackabstractPower constrained designs are becoming increasingly sensitive to supply voltage noise. We propose a hardware-software collaborative approach to enable aggressive operating margins: a checkpoint-recovery mechanism corrects margin violations, while a run-time software layer reschedules the program's instruction stream to prevent recurring margin crossings at the same program location. The run-time layer removes 60% of these events with minimal overhead, thereby significantly improving overall performance. Vijay Janapa Reddi, Simone Campanoni, Meeta Sharma Gupta, Michael D. Smith 0001, Gu-Yeon Wei, David Brooks 0001 |
DAC | 4 |
| 2009 | Voltage emergency prediction: Using signatures to reduce operating marginsabstractInductive noise forces microprocessor designers to sacrifice performance in order to ensure correct and reliable operation of their designs. The possibility of wide fluctuations in supply voltage means that timing margins throughout the processor must be set pessimistically to protect against worst-case droops and surges. While sensor-based reactive schemes have been proposed to deal with voltage noise, inherent sensor delays limit their effectiveness. Instead, this paper describes a voltage emergency predictor that learns the signatures of voltage emergencies (the combinations of control flow and microarchitectural events leading up to them) and uses these signatures to prevent recurrence of the corresponding emergencies. In simulations of a representative superscalar microprocessor in which fluctuations beyond 4% of nominal voltage are treated as emergencies (an aggressive configuration), these signatures can pinpoint the likelihood of an emergency some 16 cycles ahead of time with 90% accuracy. This lead time allows machines to operate with much tighter voltage margins (4% instead of 13%) and up to 13.5% higher performance, which closely approaches the 14.2% performance improvement possible with an ideal oracle-based predictor. Vijay Janapa Reddi, Meeta Sharma Gupta, Glenn H. Holloway, Gu-Yeon Wei, Michael D. Smith 0001, David Brooks 0001 |
HPCA | 5 |
| 2008 | DeCoR: A Delayed Commit and Rollback mechanism for handling inductive noise in processorsabstractIncreases in peak current draw and reductions in the operating voltage of processors stress the importance of dealing with voltage fluctuations in processors. Noise-margin violations lead to undesired effects, like timing violations, which may result in incorrect execution of applications. Several recent architectural solutions for inductive noise have been proposed that, unfortunately, have a strong correlation to the underlying power-delivery package model and require a feedback loop that is largely constrained by the voltage/current sensor characteristics. The resulting solutions are not robust across a wide range of microprocessor designs and packaging technologies. This paper proposes a Delayed-commit and rollback scheme (DeCoR) that guarantees correctness, insensitive to the package model or the responsiveness of the voltage sensors. In particular, our approach recovers from, rather than attempting to avoid, voltage emergencies. This approach incurs a small performance penalty when compared to an ideal machine that does not have voltage emergencies. We show that explicit checkpoint-recovery schemes, intended to handle infrequent events, e.g., radiation-induced soft errors, suffer from large performance overheads for frequently-occurring voltage emergencies. DeCoR requires very few modifications to modern processor designs, as it leverages the existing store queue and reorder buffers. Unlike conventional designs that conservatively protect all components of the processor from inductive noise with overly-large timing margins, our approach only requires conservative protection of the architected register state and cache write paths. Meeta Sharma Gupta, Krishna K. Rangan, Michael D. Smith 0001, Gu-Yeon Wei, David Brooks 0001 |
HPCA | 3 |
| 2008 | Implementing public-key infrastructure for sensor networksabstractWe present a critical evaluation of the first known implementation of elliptic curve cryptography over F 2 p for sensor networks based on the 8-bit, 7.3828-MHz MICA2 mote. We offer, along the way, a primer for those interested in the field of cryptography for sensor networks. We discuss, in particular, the decisions underlying our design and alternatives thereto. And we elaborate on the methodologies underlying our evaluation. Through instrumentation of UC Berkeley's TinySec module, we argue that, although symmetric cryptography has been tractable in this domain for some time, there has remained a need, unfulfilled until recently, for an efficient, secure mechanism for distribution of secret keys among nodes. Although public-key infrastructure has been thought impractical, we show, through analysis of our original implementation for TinyOS of point multiplication on elliptic curves, that public-key infrastructure is indeed viable for TinySec keys' distribution, even on the MICA2. We demonstrate that public keys can be generated within 34 seconds and that shared secrets can be distributed among nodes in a sensor network within the same time, using just over 1 kilobyte of SRAM and 34 kilobytes of ROM. We demonstrate that communication costs are minimal, with only 2 packets required for transmission of a public key among nodes. We make available all of our source code for other researchers to download and use. And we discuss recent results based on our work that corroborate and improve upon our conclusions. David J. Malan, Matt Welsh, Michael D. Smith 0001 |
ACM Trans. Sens. Networks | 3 |
| 2007 | Improving Performance Isolation on Chip Multiprocessors via an Operating System Scheduler
Alexandra Fedorova, Margo I. Seltzer, Michael D. Smith 0001 |
PACT | 3 |
| 2007 | Extending Object-Oriented Optimizations for Concurrent Programs
Kelly Heffner, David Tarditi, Michael D. Smith 0001 |
PACT | 3 |
| 2007 | The Impact of Time on the Accuracy of Sentiment Classifiers Created from a Web Log Corpus
Kathleen T. Durant, Michael D. Smith 0001 |
AAAI | 2 |
| 2007 | Persistent Code Caching: Exploiting Code Reuse Across Executions and ApplicationsabstractRun-time compilation systems are challenged with the task of translating a program's instruction stream while maintaining low overhead. While software managed code caches are utilized to amortize translation costs, they are ineffective for programs with short run times or large amounts of cold code. Such program characteristics are prevalent in real-life computing environments, ranging from graphical user interface (GUI) programs to large-scale applications such as database management systems. Persistent code caching addresses these issues. It is described and evaluated in an industry-strength dynamic binary instrumentation system - Pin. The proposed approach improves the intra-execution model of code reuse by storing and reusing translations across executions, thereby achieving inter-execution persistence. Dynamically linked programs leverage inter-application persistence by using persistent translations of library code generated by other programs. New translations discovered across executions are automatically accumulated into the persistent code caches, thereby improving performance over time. Inter-execution persistence improves the performance of GUI applications by nearly 90%, while inter-application persistence achieves a 59% improvement. In more specialized uses, the SPEC2K INT benchmark suite experiences a 26% improvement under dynamic binary instrumentation. Finally, a 400% speedup is achieved in translating the Oracle database in a regression testing environment Vijay Janapa Reddi, Daniel A. Connors, Robert S. Cohn, Michael D. Smith 0001 |
CGO | 4 |
| 2007 | Towards a software approach to mitigate voltage emergenciesabstractIncreases in peak current draw and reductions in the operating voltages ofprocessors continue to amplify the importance of dealing with voltage fluctuations in processors. One approach suggested has been to not only react to these fluctuations but also attempt to eliminate future occurrences of these fluctuations by dynamically modifying the executing program. This paper investigates the potential of a very simple dynamic scheme to appreciably reduce the number of run-time voltage emergencies. It shows that we can map many of the voltage emergencies in the execution of the SPEC benchmarks on an aggressive superscalar design to a few static loops, categorize the microarchitectural cause of the emergencies in each important loop through simple observations and a simple priority function, and finally apply straight forward software optimization strategies to mitigate up to 70% of the future voltage swings. Meeta Sharma Gupta, Krishna K. Rangan, Michael D. Smith 0001, Gu-Yeon Wei, David Brooks 0001 |
ISLPED | 3 |
| 2006 | Managing bounded code caches in dynamic binary optimization systemsabstractDynamic binary optimizers store altered copies of original program instructions in software-managed code caches in order to maximize reuse of transformed code. Code caches store code blocks that may vary in size, reference other code blocks, and carry a high replacement overhead. These unique constraints reduce the effectiveness of conventional cache management policies. Our work directly addresses these unique constraints and presents several contributions to the code-cache management problem. First, we show that evicting more than the minimum number of code blocks from the code cache results in less run-time overhead than the existing alternatives. Such granular evictions reduce overall execution time, as the fixed costs of invoking the eviction mechanism are amortized across multiple cache insertions. Second, a study of the ideal lifetimes of dynamically generated code blocks illustrates the benefit of a replacement algorithm based on a generational heuristic. We describe and evaluate a generational approach to code cache management that makes it easy to identify long-lived code blocks and simultaneously avoid any fragmentation because of the eviction of short-lived blocks. Finally, we present results from an implementation of our generational approach in the DynamoRIO framework and illustrate that, as dynamic optimization systems become more prevalent, effective code cache-management policies will be essential for reliable, scalable performance of modern applications. Kim M. Hazelwood, Michael D. Smith 0001 |
ACM Trans. Archit. Code Optim. | 2 |
| 2005 | Improving Region Selection in Dynamic Optimization SystemsabstractThe performance of a dynamic optimization system depends heavily on the code it selects to optimize. Many current systems follow the design of HP Dynamo and select a single interprocedural path, or trace, as the unit of code optimization and code caching. Though this approach to region selection has worked well in practice, we show that it is possible to adapt this basic approach to produce regions with greater locality, less needless code duplication, and fewer profiling counters. In particular, we propose two new region-selection algorithms and evaluate them against Dynamo's selection mechanism, next-executing tail (NET). Our first algorithm, last-executed iteration (LEI), identifies cyclic paths of execution better than NET, improving locality of execution while reducing the size of the code cache. Our second algorithm allows overlapping traces of similar execution frequency to be combined into a single large region. This second technique can be applied to both NET and LEI, and we find that it significantly improves metrics of locality and memory overhead for each. David Hiniker, Kim M. Hazelwood, Michael D. Smith 0001 |
MICRO | 3 |
| 2004 | A generalized algorithm for graph-coloring register allocationabstractGraph-coloring register allocation is an elegant and extremely popular optimization for modern machines. But as currently formulated, it does not handle two characteristics commonly found in commercial architectures. First, a single register name may appear in multiple register classes, where a class is a set of register names that are interchangeable in a particular role. Second, multiple register names may be aliases for a single hardware register. We present a generalization of graph-coloring register allocation that handles these problematic characteristics while preserving the elegance and practicality of traditional graph coloring. Our generalization adapts easily to a new target machine, requiring only the sets of names in the register classes and a map of the register aliases. It also drops easily into a well-known graph-coloring allocator, is efficient at compile time, and produces high-quality code. Categories and subject descriptors D.3.4 [Programming Languages]: Processors—code generation, compilers, optimization, retargetable compilers; G.2.2 [Discrete Michael D. Smith 0001, Norman Ramsey, Glenn H. Holloway |
PLDI | 1 |
| 2004 | A public-key infrastructure for key distribution in TinyOS based on elliptic curve cryptographyabstractWe present the first known implementation of elliptic curve cryptography over F/sub 2p/ for sensor networks based on the 8-bit, 7.3828-MHz MICA2 mote. Through instrumentation of UC Berkeley's TinySec module, we argue that, although secret-key cryptography has been tractable in this domain for some time, there has remained a need for an efficient, secure mechanism for distribution of secret keys among nodes. Although public-key infrastructure has been thought impractical, we argue, through analysis of our own implementation for TinyOS of multiplication of points on elliptic curves, that public-key infrastructure is, in fact, viable for TinySec keys' distribution, even on the MICA2. We demonstrate that public keys can be generated within 34 seconds, and that shared secrets can be distributed among nodes in a sensor network within the same, using just over 1 kilobyte of SRAM and 34 kilobytes of ROM. David J. Malan, Matt Welsh, Michael D. Smith 0001 |
SECON | 3 |
| 2003 | Generational Cache Management of Code Traces in Dynamic Optimization SystemsabstractA dynamic optimizer is a runtime software system that groups a program's instruction sequences into traces, optimizes those traces, stores the optimized traces in a software-based code cache, and then executes the optimized code in the code cache. To maximize performance, the vast majority of the program's execution should occur in the code cache and not in the different aspects of the dynamic optimization system. In the past, designers of dynamic optimizers have used the SPEC2000 benchmark suite to justify their use of simple code cache management schemes. In this paper, we show that the problem and importance of code cache management changes dramatically as we move from SPEC2000, with its relatively small number of dynamically generated code traces, to large interactive Windows applications. We also propose and evaluate a new cache management algorithm based on generational code caches that results in an average miss rate reduction of 18% over a unified cache, which translates into 19% fewer instructions spent in the dynamic optimizer. The algorithm categorizes code traces based on their expected lifetimes and group traces with similar lifetimes together in separate storage areas. Using this algorithm, short-lived code traces can easily be removed from a code cache without introducing fragmentation and without suffering the performance penalties associated with evicting long-lived code traces. Kim M. Hazelwood, Michael D. Smith 0001 |
MICRO | 2 |
| 1999 | Reorganizing global schedules for register allocationabstractArticle Reorganizing global schedules for register allocation Share on Authors: Gang Chen GTE Laboratories, Inc., Waltham, MA GTE Laboratories, Inc., Waltham, MAView Profile , Michael D. Smith Harvard University, Cambridge, MA Harvard University, Cambridge, MAView Profile Authors Info & Claims ICS '99: Proceedings of the 13th international conference on SupercomputingJune 1999 Pages 408–416https://doi.org/10.1145/305138.305224Online:01 May 1999Publication History 3citation484DownloadsMetricsTotal Citations3Total Downloads484Last 12 Months2Last 6 weeks0 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteGet Access Michael D. Smith 0001 |
International Conference on Supercomputing | 2 |
| 1999 | Procedure placement using temporal-ordering informationabstractInstruction cache performance is important to instruction fetch efficiency and overall processor performance. The layout of an executable has a substantial effect on the cache miss rate and the instruction working set size during execution. This means that the performance of an executable can be improved by applying a code-placement algorithm that minimizes instruction cache conflicts and improves spatial locality. We describe an algorithm for procedure placement, one type of code placement, that signicantly differs from previous approaches in the type of information used to drive the placement algorithm. In particular, we gather temporal-ordering information that summarizes the interleaving of procedures in a program trace. Our algorithm uses this information along with cache configuration and procedure size information to better estimate the conflict cost of a potential procedure ordering. It optimizes the procedure placement for single level and multilevel caches. In addition to reducing instruction cache conflicts, the algorithm simultaneously minimizes the instruction working set size of the program. We compare the performance of our algorithm with a particularly successful procedure-placement algorithm and show noticeable improvements in the instruction cache behavior, while maintaining the same instruction working set size. Nicholas C. Gloy, Michael D. Smith 0001 |
ACM Trans. Program. Lang. Syst. | 2 |
| 1999 | Static correlated branch predictionabstractRecent work in history-based branch prediction uses novel hardware structures to capture branch correlation and increase branch prediction accuracy. Branch correlation occurs when the outcome of a conditional branch can be accurately predicted by observing the outcomes of previously executed branches in the dynamic instruction stream. In this article, we show how to instrument a program so that it is practical to collect run-time statistics that indicate where branch correlation occurs, and we then show how to use these statistics to transform the program so that its static branch prediction accuracy is improved. The run-time information that we gather is called a path profile , and it summarizes how often each executed sequence of program points occurs in the program trace. Our path proles are more general than those previously proposed. The code transformation that we present is called static correlated branch prediction (SCBP). It exhibits better branch prediction accuracy than previously thought possible for static prediction techniques. Furthermore, through the use of an overpruning heuristic, we show that it is possible to determine automatically an appropriate trade-off between code expansion and branch predictability so that our transformation improves the performance of multiple-issue, deeply pipelined microprocessors like those being built today. Cliff Young, Michael D. Smith 0001 |
ACM Trans. Program. Lang. Syst. | 2 |
| 1998 | Better Global Scheduling Using Path ProfilesabstractPath profiles record the frequencies of execution paths through a program. Until now, the best global instruction schedulers have relied upon profile-gathered frequencies of conditional branch directions to select sequences of basic blocks that only approximate the frequently-executed program paths. The identified sequences are then enlarged using the profile data to improve the scope of scheduling. Finally, the enlarged regions are compacted so that they complete in a small number of cycles. Path profiles remove the need to approximate the frequently-executed paths that are so important to the success of the compaction phase. In this paper, we describe how one can modify a trace-based instruction scheduler and in particular a superblock schedule; to use path profiles in both the selection and enlargement phases of global scheduling. As our experimental results demonstrate, the use of more detailed profile data allows the scheduler to construct superblocks that are more likely to avoid early exits. This effect leads to more useful speculative code motions and an overall improvement in program performance. We also describe how a path-profile based approach can simplify the engineering of a trace-based scheduler by unifying several trace-enlargement heuristics into a single general mechanism. Cliff Young, Michael D. Smith 0001 |
MICRO | 2 |
| 1998 | Quality and Speed in Linear-scan Register AllocationabstractA linear-scan algorithm directs the global allocation of register candidates to registers based on a simple linear sweep over the program being compiled. This approach to register allocation makes sense for systems, such as those for dynamic compilation, where compilation speed is important. In contrast, most commercial and research optimizing compilers rely on a graph-coloring approach to global register allocation. In this paper, we compare the performance of a linear-scan method against a modern graph-coloring method. We implement both register allocators within the Machine SUIF extension of the Stanford SUIF compiler system. Experimental results show that linear scan is much faster than coloring on benchmarks with large numbers of register candidates. We also describe improvements to the linear-scan approach that do not change its linear character, but allow it to produce code of a quality near to that produced by graph coloring. Omri Traub, Glenn H. Holloway, Michael D. Smith 0001 |
PLDI | 3 |
| 1998 | Using Path Profiles to Predict HTTP Requests
Stuart E. Schechter, Murali Krishnan, Michael D. Smith 0001 |
Comput. Networks | 3 |
| 1998 | Informing Memory Operations: Memory Performance Feedback Mechanisms and Their ApplicationsabstractMemory latency is an important bottleneck in system performance that cannot be adequately solved by hardware alone. Several promising software techniques have been shown to address this problem successfully in specific situations. However, the generality of these software approaches has been limited because current architecturtes do not provide a fine-grained, low-overhead mechanism for observing and reacting to memory behavior directly. To fill this need, this article proposes a new class of memory operations called informing memory operations , which essentially consist of a memory operatin combined (either implicitly or explicitly) with a conditional branch-and-ink operation that is taken only if the reference suffers a cache miss. This article describes two different implementations of informing memory operations. One is based on a cache-outcome condition code, and the other is based on low-overhead traps. We find that modern in-order-issue and out-of-order-issue superscalar processors already contain the bulk of the necessary hardware support. We describe how a number of software-based memory optimizations can exploit informing memory operations to enhance performance, and we look at cache coherence with fine-grained access control as a case study. Our performance results demonstrate that the runtime overhead of invoking the informing mechanism on the Alpha 21164 and MIPS R10000 processors is generally small enough to provide considerable flexibility to hardware and software designers, and that the cache coherence application has improved performance compared to other current solutions. We believe that the inclusion of informing memory operations in future processors may spur even more innovative performance optimizations. Mark Horowitz, Margaret Martonosi, Todd C. Mowry, Michael D. Smith 0001 |
ACM Trans. Comput. Syst. | 4 |
| 1997 | Procedure Placement Using Temporal Ordering InformationabstractInstruction cache performance is very important to instruction fetch efficiency and overall processor performance. The layout of an executable has a substantial effect on the cache miss rate during execution. This means that the performance of an executable can be improved significantly by applying a code-placement algorithm that minimizes instruction cache conflicts. We describe an algorithm for procedure placement, one type of code-placement algorithm, that significantly differs from previous approaches in the type of information used to drive the placement algorithm. In particular we gather temporal ordering information that summarizes the interleaving of procedures in a program trace. Our algorithm uses this information along with cache configuration and procedure size information to better estimate the conflict cost of a potential procedure ordering. We compare the performance of our algorithm with previously published procedure-placement algorithms and show noticeable improvements in the instruction cache behavior. Nicholas C. Gloy, Trevor Blackwell, Michael D. Smith 0001, Brad Calder |
MICRO | 3 |
| 1997 | Near-optimal Intraprocedural Branch AlignmentabstractBranch alignment reorders the basic blocks of a program to minimize pipeline penalties due to control-transfer instructions. Prior work in branch alignment has produced useful heuristic methods. We present a branch alignment algorithm that usually achieves the minimum possible pipeline penalty and on our benchmarks averages within 0.3% of a provable optimum. We compare the control penalties and running times of our algorithm to an older, greedy approach and observe that both the greedy method and our method are close to the lower bound on control penalties, suggesting that greedy is good enough. Surprisingly, in actual execution our method produces programs that run noticeably faster than the greedy method. We also report results from training and testing on different data sets, validating that our results can be achieved in real-world usage. Training and testing on different data sets slightly reduced the benefits from both branch alignment algorithms, but the ranking of the algorithms does not change, and the bulk of the benefits remain. Cliff Young, David S. Johnson 0001, David R. Karger, Michael D. Smith 0001 |
PLDI | 4 |
| 1997 | System Support for Automated Profiling and OptimizationabstractThe Morph system provides a framework for automatic collection and management of profile information and application of profile-driven optimizations. In this paper, we focus on the operating system support that is required to collect and manage profile information on an end-user's workstation in an automatic, continuous, and transparent manner. Our implementation for a Digital Alpha machine running Digital UNIX 4.0 achieves run-time overheads of less than 0.3% during profile collection. Through the application of three code layout optimizations, we further show that Morph can use statistical profiles to improve application performance. With appropriate system support, automatic profiling and optimization is both possible and effective. 1. Introduction Morph is a combination of operating system and compiler technology that provides a practical framework for the advanced compiler optimizations needed to support continued improvements in application performance. Morph is practical becau... Xiaolan Zhang 0001, Nicholas C. Gloy, J. Bradley Chen, Michael D. Smith 0001 |
SOSP | 5 |
| 1996 | An Analysis of Dynamic Branch Prediction Schemes on System WorkloadsabstractRecent studies of dynamic branch prediction schemes rely almost exclusively on user-only simulations to evaluate performance. We find that an evaluation of these schemes with user and kernel refer-ences often leads to different conclusions. By analyzing our own Atom-generated system traces and the system traces from the Instruction Benchmark Suite, we quantify the effects of kernel and user interactions on branch prediction accuracy. We find that user-only traces yield accurate prediction results only when the kernel accounts for less than 5~o of the total executed instructions. Schemes that appear to predict well under user-only traces are not always the most effective on full-system traces: the recently-pro-posed two-level adaptive schemes can suffer from higher aliasing than the original per-branch 2-bit counter scheme. We also find that flushing the branch history state at fixed intervals does not accu-rately model the true effects of user/kernel interaction. Nicholas C. Gloy, Cliff Young, J. Bradley Chen, Michael D. Smith 0001 |
ISCA | 4 |
| 1996 | Informing Memory Operations: Providing Memory Performance Feedback in Modern ProcessorsabstractMemory latency is an important bottleneck in system performance that cannot be adequately solved by hardware alone. Several promising software techniques have been shown to address this problem successfully in specific situations. However, the generality of these software approaches has been limited because current architectures do not provide a fine-grained, low-overhead mechanism for observing and reacting to memory behavior directly. To fill this need, we propose a new class of memory operations called informing memory operations, which essentially consist of a memory operation combined (either implicitly or explicitly) with a conditional branch-and-link operation that is taken only if the reference suffers a cache miss. We describe two different implementations of informing memory operations---one based on a cache-outcome condition code and another based on low-overhead traps---and find that modern in-order-issue and out-of-order-issue superscalar processors already contain the bulk of the necessary hardware support. We describe how a number of software-based memory optimizations can exploit informing memory operations to enhance performance, and look at cache coherence with fine-grained access control as a case study. Our performance results demonstrate that the runtime overhead of invoking the informing mechanism on the Alpha 21164 and MIPS R10000 processors is generally small enough to provide considerable flexibility to hardware and software designers, and that the cache coherence application has improved performance compared to other current solutions. We believe that the inclusion of informing memory operations in future processors may spur even more innovative performance optimizations. Mark Horowitz, Margaret Martonosi, Todd C. Mowry, Michael D. Smith 0001 |
ISCA | 4 |
| 1996 | The Measured Performance of Personal Computer Operating SystemsabstractThis article presents a comparative study of the performance of three operating systems that run on the personal computer architecture derived form the IBM-PC. The operating systems, Windows for Workgroups, Windows NT, and NetBSD (a freely available variant of the UNIX operating system), cover a broad range of system functionality and user requirements, from a single-address-space model to full protection with preemptive multitasking. Our measurements are enable by hardware counters in Intel's Pentium processor that permit measurement of a broad range of processor events including instruction counts and on-chip cache miss counts. We use both microbenchmarks, which expose specific difference between the systems, and application workloads, which provide an indication of expected end-to-end performance. Our microbenchmark results show that accessing system functionality is often more expensive in Windows for Workgroups than in the other two systems due to frequent changes in machine mode and the use of system call hooks. When running native applications, Windows NT is more efficient than Windows, but it incurs overhead similar to that of a microkernel, since its application interface (the Win32 API) is implemented as a user-level server. Overall, system functionality can be accessed most efficiently in NetBSD; we attribute this to its monolithic structure and to the absence of the complications created by hardware backward-compatibility requirements in the other systems. Measurements of application performance show that although the impact of these differences is significant in terms of instruction counts and other hardware events (often a factor of 2 to 7 difference between the systems), overall performance is sometimes determined by the functionality provided by specific subsystems, such as the graphics subsystem or the file system buffer cache. J. Bradley Chen, Yasuhiro Endo, Kee Chan, David Mazières, Antonio Dias, Margo I. Seltzer, Michael D. Smith 0001 |
ACM Trans. Comput. Syst. | 7 |
| 1995 | A Comparative Analysis of Schemes for Correlated Branch PredictionabstractModern high-performance architectures require extremely accurate branch prediction to overcome the performance limitations of conditional branches. We present a framework that categorizes branch prediction schemes by the way in which they partition dynamic branches and by the kind of predictor that they use. The framework allows us to compare and contrast branch prediction schemes, and to analyze why they work. We use the framework to show how a static correlated branch prediction scheme increases branch bias and thus improves overall branch prediction accuracy. We also use the framework to identify the fundamental differences between static and dynamic correlated branch prediction schemes. This study shows that there is room to improve the prediction accuracy of existing branch prediction schemes. Cliff Young, Nicholas C. Gloy, Michael D. Smith 0001 |
ISCA | 3 |
| 1995 | Performance issues in correlated branch prediction schemesabstractAccurate static branch prediction is the key to many techniques for exposing, enhancing, and exploiting Instruction Level Parallelism (ILP). The initial work on static correlated branch prediction (SCBP) demonstrated improvements in branch prediction accuracy, but did not address overall performance. In particular SCBP expands the size of executable programs, which negatively affects the performance of the instruction memory hierarchy. Using the profile information available under SCBP we can minimize these negative performance effects through the application of code layout and branch alignment techniques. We evaluate the performance effect of SCBP and these profile-driven optimizations on instruction cache misses, branch mispredictions, and branch misfetches for a number of recent processor implementations. We find that SCBP improves performance over (traditional) per-branch static profile prediction. We also find that SCBP improves the performance benefits gained from branch alignment. As expected, SCBP gives larger benefits on machine organizations with high mispredict/misfetch penalties and low cache miss penalties. Finally, we find that the application of profile-driven code layout and branch alignment techniques (without SCBP) can improve the performance of the dynamic correlated branch prediction techniques. Nicholas C. Gloy, Michael D. Smith 0001, Cliff Young |
MICRO | 2 |
| 1995 | The Measured Performance of Personal Computer Operating SystemsabstractThis paper presents a comparative study of the performance of three operating systems that run on the personal computer architecture derived from the IBM-PC, The operating systems, Windows for Workgroups, Windows NT, and NetBSD (a freely available variant of the UNIX operating system), cover a broad range ofs ystem functionalist y and user requirements, from a single address space model to full protection with preemptive multi-tasking.Our measurements were enabled by hardware counters in Intel's Pentium processor that permit measurement of a broad range of processor events including instruction counts and on-chip cache miss counts.We used both microbenchmarks, which expose specific differences between the systems, and application workloads, which provide an indication of expected end-to-end performance.Our microbenchmark results show that accessing system functionality is often more expensive in Windows for Workgroups than in the other two systems due to frequent changes in machine mode and the use of system call hooks.When running native applications, Windows NT is more efficient than Windows, but it incurs overhead similar to that of a microkemel since its application interface (the Wln32 API) is implemented as a user-level server.Overall, system functionality can be accessed most efficiently in NetBSD; we attribute this to its monolithic structure, and to the absence of the complications created by hardware backwards compatibility requirements in the other systems.Measurements of application performance show that although the impact of these differences is significant in terms of instruction counts and other hardware events (often a factor of 2 to 7 difference between the systems), overall performance is sometimes determined by the functionality provided by specific subsystems, such as the graphics subsystem or the file system buffer cache. J. Bradley Chen, Yasuhiro Endo, Kee Chan, David Mazières, Antonio Dias, Margo I. Seltzer, Michael D. Smith 0001 |
SOSP | 7 |
| 1994 | Improving the Accuracy of Static Branch Prediction Using Branch CorrelationabstractRecent work in history-based branch prediction uses novel hardware structures to capture branch correlation and increase branch prediction accuracy. We present a profile-based code transformation that exploits branch correlation to improve the accuracy of static branch prediction schemes. Our general method encodes branch history information in the program counter through the duplication and placement of program basic blocks. For correlation histories of eight branches, our experimental results achieve up to a 14.7% improvement in prediction accuracy over conventional profile-based prediction without any increase in the dynamic instruction count of our benchmark applications. In the majority of these applications, code duplication increases code size by less than 30%. For the few applications with code segments that exhibit exponential branching paths and no branch correlation, simple compile-time heuristics can eliminate these branches as code-transformation candidates. Cliff Young, Michael D. Smith 0001 |
ASPLOS | 2 |
| 1994 | PRISC Software Acceleration TechniquesabstractProgrammable reduced instruction set computers (PRISC) are a new class of computers which can offer a programmable functional unit (PFU) in the context of a RISC datapath. PRISC create application-specific instructions to accelerate the performance for a particular application. Our previous work has demonstrated that peephole optimizations in a compiler can utilize PFU resources to accelerate the performance of general purpose programs. However these compiler optimizations are limited by the structure of the input source code. This work generalizes on our previous work, and demonstrates that the performance of general abstract data types such as short-set vectors, hash tables, and finite state machines is significantly accelerated (250%-500%) by using PFU resources. Thus, a wide variety of end-user applications can be specifically designed to use PFU resources to accelerate performance. Results from applications in the domain of computer-aided design (CAD) are presented to demonstrate the usefulness of our techniques.> Rahul Razdan, Karl S. Brace, Michael D. Smith 0001 |
ICCD | 3 |
| 1994 | A high-performance microarchitecture with hardware-programmable functional unitsabstractThis paper explores a novel way to incorporate hardware-programmable resources into a processor microarchitecture to improve the performance of general-purpose applications. Through a coupling of compile-time analysis routines and hardware synthesis tools, we automatically configure a given set of the hardware-programmable functional units (PFUs) and thus augment the base instruction set architecture so that it better meets the instruction set needs of each application. We refer to this new class of general-purpose computers as programmable instruction set computers (PRISC). Although similar in concept, the PRISC approach differs from dynamically programmable microcode because in PRISC we define entirely-new primitive datapath operations. We concentrate on the microarchitectural design of the simplest form of PRISC-a RISC microprocessor with a single PFU that only evaluates combinational functions. We briefly discuss the operating system and the programming language compilation techniques that are needed to successfully build PRISC and, we present performance results from a proof-of-concept study. With the inclusion of a single 32-bit-wide PFU whose hardware cost is less than that of a 1 kilobyte SRAM, our study shows a 22% improvement in processor performance on the SPECint92 benchmarks. Rahul Razdan, Michael D. Smith 0001 |
MICRO | 2 |
| 1992 | Efficient Superscalar Performance Through BoostingabstractThe foremost goal of superscalar processor design is to increase performance through the exploitation of instruction-level parallelism (ILP). Previous studies have shown that speculative execution is required for high instruction per cycle (IPC) rates in non-numerical applications. The general trend has been toward supporting speculative execution in complicated, dynamically-scheduled processors. Performance, though, is more than just a high IPC rate; it also depends upon instruction count and cycle time. Boosting is an architectural technique that supports general speculative execution in simpler, statically-scheduled processors. Boosting labels speculative instructions with their control dependence information. This labelling eliminates control dependence constraints on instruction scheduling while still providing full dependence information to the hardware. We have incorporated boosting into a trace-based, global scheduling algorithm that exploits ILP without adversely affecting the instruction count of a program. We use this algorithm and estimates of the boosting hardware involved to evaluate how much speculative execution support is really necessary to achieve good performance. We find that a statically-scheduled superscalar processor using a minimal implementation of boosting can easily reach the performance of a much more complex dynamically-scheduled superscalar processor. Michael D. Smith 0001, Mark Horowitz, Monica S. Lam |
ASPLOS | 1 |
| 1990 | Boosting Beyond Static Scheduling in a Superscalar ProcessorabstractThis paper describes a superscalar processor that combines the best qualities of static and dynamic instruction scheduling to increase the performance of non-numerical applications. The architecture performs all instruction scheduling statically to take advantage of the compiler's ability to efficiently schedule operations across many basic blocks. Since the conditional branches in non-numerical code are highly data dependent, the architecture introduces the concept of boosted instructions, instructions that are committed conditionally upon the result of later branch instructions. Boosting effectively removes the dependencies caused by branches and makes the scheduling of side-effect instructions as simple as those that are side-effect free. For efficiency, boosting is supported in the hardware by shadow structures that temporarily hold the side effects of boosted instructions until the conditional branches that the boosted instructions depend upon are executed. When the branch condition is determined, the buffered side effects are either committed or squashed. The limited static scheduler in our evaluation system shows that a 1.6-times speedup over scalar code is achievable by boosting instructions above only a single conditional branch. This performance is similar to the performance of a pure dynamic scheduler. Michael D. Smith 0001, Monica S. Lam, Mark Horowitz |
ISCA | 1 |
| 1989 | Limits on Multiple Instruction IssueabstractThis paper investigates the limitations on designing a processor which can sustain an execution rate of greater than one instruction per cycle on highly-optimized, non-scientific applications. We have used trace-driven simulations to determine that these applications contain enough instruction independence to sustain an instruction rate of about two instructions per cycle. In a straightforward implementation, cost considerations argue strongly against decoding more than two instructions in one cycle. Given this constraint, the efficiency in instruction fetching rather than the complexity of the execution hardware limits the concurrency attainable at the instruction level. Michael D. Smith 0001, Mike Johnson, Mark Horowitz |
ASPLOS | 1 |