Demo Data from VLDB 2026 / reviewers in the wild / expert
Susan J. Eggers
dblp:e/SJEggers
· DBLP profile ↗
56ranked-venue papers
9as first author
0since 2021 · last 2011
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 38 · 6 first-authorSoftware engineering, systems software and programming languages · 35 · 5 first-authorDatabases, data management, data science and information retrieval · 2 · 2 first-authorTheory of computation · 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
35 papers |
Processor architecture and microarchitecture · 61% Memory systems · 11% Reconfigurable computing and FPGAs · 10% | |
| Software engineering, system software, and programming languages
22 papers |
Compilers and program optimization · 42% Program analysis · 30% Runtime systems and virtual machines · 14% |
Topics — the 30 heaviest of 94, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Processor architecture and microarchitecture › multithreading
simultaneous multithreading |
0.3 | 11 | 2003 | An evaluation of speculative instruction execution on simultaneous multithreaded processors · ACM Trans. Comput. Syst. 2003 Improving server software support for simultaneous multithreaded processors · PPoPP 2003 Mini-Threads: Increasing TLP on Small-Scale SMT Processors · HPCA 2003 |
Processor architecture and microarchitecture
dataflow architecture |
0.1 | 2 | 2007 | The WaveScalar architecture · ACM Trans. Comput. Syst. 2007 Area-Performance Trade-offs in Tiled Dataflow Architectures · ISCA 2006 |
Processor architecture and microarchitecture
tiled architecture |
0.1 | 2 | 2007 | The WaveScalar architecture · ACM Trans. Comput. Syst. 2007 Area-Performance Trade-offs in Tiled Dataflow Architectures · ISCA 2006 |
Processor architecture and microarchitecture
instruction set architecture |
0.1 | 2 | 2011 | Checked Load: Architectural support for JavaScript type-checking on mobile processors · HPCA 2011 Integrating Register Allocation and Instruction Scheduling for RISCs · ASPLOS 1991 |
Processor architecture and microarchitecture › instruction set architecture
ISA extension |
0.1 | 1 | 2011 | Checked Load: Architectural support for JavaScript type-checking on mobile processors · HPCA 2011 |
Reconfigurable computing and FPGAs
FPGA memory architecture |
0.1 | 1 | 2009 | Performance and power of cache-based reconfigurable computing · ISCA 2009 |
Runtime systems and virtual machines
dynamic compilation |
0.1 | 4 | 2000 | The benefits and costs of DyC's run-time optimizations · ACM Trans. Program. Lang. Syst. 2000 Calpa: a tool for automating selective dynamic compilation · MICRO 2000 An Evaluation of Staged Run-Time Optimizations in DyC · PLDI 1999 |
Processor architecture and microarchitecture
multithreading |
0.1 | 5 | 2003 | An evaluation of speculative instruction execution on simultaneous multithreaded processors · ACM Trans. Comput. Syst. 2003 Supporting Fine-Grained Synchronization on a Simultaneous Multithreading Processor · HPCA 1999 Impact of Sharing-Based Thread Placement on Multithreaded Architectures · ISCA 1994 |
Compilers and program optimization
instruction scheduling |
0.1 | 5 | 2006 | Instruction scheduling for a tiled dataflow architecture · ASPLOS 2006 Balanced Scheduling: Instruction Scheduling When Memory Latency is Uncertain · PLDI 1993 The Marion System for Retargetable Instruction Scheduling · PLDI 1991 |
Program analysis › static analysis
pointer analysis |
0.1 | 2 | 2005 | Program Slicing with Dynamic Points-To Sets · IEEE Trans. Software Eng. 2005 Improving program slicing with dynamic points-to data · SIGSOFT FSE 2002 |
Program analysis › static analysis
program slicing |
0.1 | 2 | 2005 | Program Slicing with Dynamic Points-To Sets · IEEE Trans. Software Eng. 2005 Improving program slicing with dynamic points-to data · SIGSOFT FSE 2002 |
Program analysis
static analysis |
0.1 | 2 | 2005 | Program Slicing with Dynamic Points-To Sets · IEEE Trans. Software Eng. 2005 Improving program slicing with dynamic points-to data · SIGSOFT FSE 2002 |
Processor architecture and microarchitecture
instruction scheduling |
0.1 | 2 | 2006 | Instruction scheduling for a tiled dataflow architecture · ASPLOS 2006 Improving Balanced Scheduling with Compiler Optimizations that Increase Instruction-Level Parallelism · PLDI 1995 |
Compilers and program optimization
partial evaluation |
0.1 | 2 | 2002 | Towards automatic construction of staged compilers · POPL 2002 The benefits and costs of DyC's run-time optimizations · ACM Trans. Program. Lang. Syst. 2000 |
Electronic design automation › multi-objective optimization
area-time tradeoff |
0.1 | 1 | 2006 | Area-Performance Trade-offs in Tiled Dataflow Architectures · ISCA 2006 |
Electronic design automation
design space exploration |
0.1 | 1 | 2006 | Area-Performance Trade-offs in Tiled Dataflow Architectures · ISCA 2006 |
Compilers and program optimization
dynamic optimization |
0.1 | 2 | 2000 | The benefits and costs of DyC's run-time optimizations · ACM Trans. Program. Lang. Syst. 2000 An Evaluation of Staged Run-Time Optimizations in DyC · PLDI 1999 |
Parallel and multicore computing
thread-level parallelism |
0.0 | 2 | 2003 | Mini-Threads: Increasing TLP on Small-Scale SMT Processors · HPCA 2003 Tuning Compiler Optimizations for Simultaneous Multithreading · MICRO 1997 |
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.0 | 2 | 2011 | Checked Load: Architectural support for JavaScript type-checking on mobile processors · HPCA 2011 Fast, Effective Dynamic Compilation · PLDI 1996 |
Operating systems › resource management › process management › CPU scheduling
thread scheduling |
0.0 | 1 | 2003 | Improving server software support for simultaneous multithreaded processors · PPoPP 2003 |
Memory systems › memory management
memory allocation |
0.0 | 1 | 2003 | Improving server software support for simultaneous multithreaded processors · PPoPP 2003 |
Processor architecture and microarchitecture
speculative execution |
0.0 | 1 | 2003 | An evaluation of speculative instruction execution on simultaneous multithreaded processors · ACM Trans. Comput. Syst. 2003 |
Memory systems
cache coherence |
0.0 | 7 | 1995 | Reducing False Sharing on Shared Memory Multiprocessors through Compile Time Data Transformations · PPoPP 1995 Evaluating the Performance of Four Snooping Cache Coherency Protocols · ISCA 1989 The Effect of Sharing on the Cache and Bus Performance of Parallel Programs · ASPLOS 1989 |
Memory systems
cache |
0.0 | 3 | 1998 | An Analysis of Database Workload Performance on Simultaneous Multithreaded Processors · ISCA 1998 Effective Cache Prefetching on Bus-Based Multiprocessors · ACM Trans. Comput. Syst. 1995 Balanced Scheduling: Instruction Scheduling When Memory Latency is Uncertain · PLDI 1993 |
Compilers and program optimization
program specialization |
0.0 | 1 | 2002 | Towards automatic construction of staged compilers · POPL 2002 |
Reconfigurable computing and FPGAs › FPGA-based heterogeneous computing
CPU-FPGA platform |
0.0 | 1 | 2009 | Performance and power of cache-based reconfigurable computing · FPGA 2009 |
GPUs and heterogeneous computing › heterogeneous supercomputing
FPGA for HPC |
0.0 | 1 | 2009 | Performance and power of cache-based reconfigurable computing · ISCA 2009 |
Compilers and program optimization › partial evaluation
binding-time analysis |
0.0 | 1 | 2000 | The benefits and costs of DyC's run-time optimizations · ACM Trans. Program. Lang. Syst. 2000 |
Compilers and program optimization › dynamic optimization
profile-guided optimization |
0.0 | 1 | 2000 | Calpa: a tool for automating selective dynamic compilation · MICRO 2000 |
Program analysis › static analysis
call graph construction |
0.0 | 2 | 2005 | Program Slicing with Dynamic Points-To Sets · IEEE Trans. Software Eng. 2005 Improving program slicing with dynamic points-to data · SIGSOFT FSE 2002 |
Methods — techniques the papers use, named apart from their topics
simulation · 0.3hardware type prediction · 0.2profile-driven scheduling · 0.1cache architecture design · 0.1C-based FPGA programming · 0.1dead-assignment elimination · 0.1pareto analysis · 0.1cycle-level simulation · 0.1RTL modeling · 0.1dynamic points-to analysis · 0.1dynamic function pointer analysis · 0.1performance measurement · 0.0workload characterization · 0.0dynamic analysis · 0.0value profiling · 0.0execution frequency profiling · 0.0cost-benefit modeling · 0.0trace analysis · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2011 | Checked Load: Architectural support for JavaScript type-checking on mobile processorsabstractDynamic languages such as Javascript are the de-facto standard for web applications. However, generating efficient code for dynamically-typed languages is a challenge, because it requires frequent dynamic type checks. Our analysis has shown that some programs spend upwards of 20% of dynamic instructions doing type checks, and 12.9% on average. In this paper we propose Checked Load, a low-complexity architectural extension that replaces software-based, dynamic type checking. Checked Load is comprised of four new ISA instructions that provide flexible and automatic type checks for memory operations, and whose implementation requires minimal hardware changes. We also propose hardware support for dynamic type prediction to reduce the cost of failed type checks. We show how to use Checked Load in the Nitro JavaScript just-in-time compiler (used in the Safari 5 browser). Speedups on a typical mobile processor range up to 44.6% (with a mean of 11.2%) in popular JavaScript benchmarks. While we have focused our work on JavaScript, Checked Load is sufficiently general to support other dynamically-typed languages, such as Python or Ruby. Owen Anderson, Emily Fortuna, Luis Ceze, Susan J. Eggers |
HPCA | 4 |
| 2010 | 2010 Athena lectureabstractSusan Eggers, a Professor of Computer Science and Engineering at the University of Washington, joined her department in 1989. She received a B.A. in 1965 from Connecticut College and a Ph.D. in 1989 from the University of California, Berkeley. Her research interests are in computer architecture and back-end compiler optimization, with an emphasis on experimental performance analysis. With her colleague Hank Levy and their students, she developed the first commercially viable multithreaded architecture, Simultaneous Multithreading, adopted by Intel (as Hyperthreading), IBM, Sun and others. Her current research is in the areas of distributed dataflow machines, FPGAs and chip multiprocessors. In 1989 Professor Eggers was awarded an IBM Faculty Development Award, in 1990 an NSF Presidential Young Investigator Award, in 1994 the Microsoft Professorship in Computer Science and Engineering, and in 2009 the ACM-W Athena Lecturer. She is a Fellow of the ACM and IEEE, a Fellow of the AAAS, and a member of the National Academy of Engineering. Susan J. Eggers |
PLDI | 1 |
| 2009 | Performance and power of cache-based reconfigurable computingabstractCHiMPS is a C-based compiler for high-performance computing (HPC) on heterogeneous CPU-FPGA computing platforms. CHiMPS efficiently supports random accesses to main memory through the many-cache memory model, enabling a broader range of applications to take advantage of FPGA-based acceleration. Many-cache creates multiple caches on top of an FGPA's small, independent memories, each targeting a particular data structure or region of memory in an application and each customized for the memory operations that access it. This poster presents the analyses and optimizations of the CHiMPS compiler that construct many-cache caches, and presents the details of the cache parameters on a Xilinx Virtex-5 LX110T FPGA. Detailed simulation results on HPC kernels demonstrate a 7.8x (geometric mean) performance boost over CPU-only execution of the same source code, FPGA power usage that is on average 4.1x less, and consequently performance per watt that is also greater, by a geometric mean of 21.3x. Andrew Putnam, Susan J. Eggers, Dave Bennett, Eric Dellinger, Jeff Mason, Henry Styles, Prasanna Sundararajan, Ralph Wittig |
FPGA | 2 |
| 2009 | Performance and power of cache-based reconfigurable computingabstractMany-cache is a memory architecture that efficiently supports caching in commercially available FPGAs. It facilitates FPGA programming for high-performance computing (HPC) developers by providing them with memory performance that is greater and power consumption that is less than their current CPU platforms, but without sacrificing their familiar, C-based programming environment. Andrew Putnam, Susan J. Eggers, Dave Bennett, Eric Dellinger, Jeff Mason, Henry Styles, Prasanna Sundararajan, Ralph Wittig |
ISCA | 2 |
| 2008 | CHiMPS: A C-level compilation flow for hybrid CPU-FPGA architecturesabstractThis paper describes CHiMPS, a C-based accelerator compiler for hybrid CPU-FPGA computing platforms. CHiMPS’s goal is to facilitate FPGA programming for high-performance computing developers. It inputs generic ANSIC code and automatically generates VHDL blocks for an FPGA. The accelerator architecture is customized with multiple caches that are tuned to the application. Speedups of 2.8x to 36.9x (geometric mean 6.7x) are achieved on a variety of HPC benchmarks with minimal source code changes. Andrew Putnam, Dave Bennett, Eric Dellinger, Jeff Mason, Prasanna Sundararajan, Susan J. Eggers |
FPL | 6 |
| 2007 | The WaveScalar architectureabstractSilicon technology will continue to provide an exponential increase in the availability of raw transistors. Effectively translating this resource into application performance, however, is an open challenge that conventional superscalar designs will not be able to meet. We present WaveScalar as a scalable alternative to conventional designs. WaveScalar is a dataflow instruction set and execution model designed for scalable, low-complexity/high-performance processors. Unlike previous dataflow machines, WaveScalar can efficiently provide the sequential memory semantics that imperative languages require. To allow programmers to easily express parallelism, WaveScalar supports pthread-style, coarse-grain multithreading and dataflow-style, fine-grain threading. In addition, it permits blending the two styles within an application, or even a single function. To execute WaveScalar programs, we have designed a scalable, tile-based processor architecture called the WaveCache. As a program executes, the WaveCache maps the program's instructions onto its array of processing elements (PEs). The instructions remain at their processing elements for many invocations, and as the working set of instructions changes, the WaveCache removes unused instructions and maps new ones in their place. The instructions communicate directly with one another over a scalable, hierarchical on-chip interconnect, obviating the need for long wires and broadcast communication. This article presents the WaveScalar instruction set and evaluates a simulated implementation based on current technology. For single-threaded applications, the WaveCache achieves performance on par with conventional processors, but in less area. For coarse-grain threaded applications the WaveCache achieves nearly linear speedup with up to 64 threads and can sustain 7--14 multiply-accumulates per cycle on fine-grain threaded versions of well-known kernels. Finally, we apply both styles of threading to equake from Spec2000 and speed it up by 9x compared to the serial version. Steven Swanson, Andrew Schwerin, Martha Mercaldi Kim, Andrew Petersen 0001, Andrew Putnam, Ken Michelson, Mark Oskin, Susan J. Eggers |
ACM Trans. Comput. Syst. | 8 |
| 2006 | Reducing control overhead in dataflow architecturesabstractIn recent years, computer architects have proposed tiled architectures in response to several emerging problems in processor design, such as design complexity, wire delay, and fabrication reliability. One of these architectures, WaveScalar, uses a dynamic, tagged-token dataflow execution model to simplify the design of the processor tiles and their interconnection network and to achieve good parallel performance. However, using a dataflow execution model reawakens old problems, including the instruction overhead required for control flow. Previous work compiling the functional language Id to the Monsoon Dataflow System found this overhead to be 2–3× that of programs written in C and targeted to a MIPS R3000.In this paper, we present and analyze three compiler optimizations that significantly reduce control overhead with minimal additional hardware. We begin by describing how to translate imperative code into dataflow assembly and analyze the resulting control overhead. We report a similar 2–4× instruction overhead, which suggests that the execution model, rather than a specific source language or target architecture, is responsible. Then, we present the compiler optimizations, each of which is designed to eliminate a particular type of control overhead, and analyze the extent to which they were able to do so. Finally, we evaluate the effect using all optimizations together has on program performance. Together, the optimizations reduce control overhead by 80% on average, increasing application performance between 21–37%. Andrew Petersen 0001, Andrew Putnam, Martha Mercaldi Kim, Andrew Schwerin, Susan J. Eggers, Steven Swanson, Mark Oskin |
PACT | 5 |
| 2006 | Instruction scheduling for a tiled dataflow architectureabstractThis paper explores hierarchical instruction scheduling for a tiled processor. Our results show that at the top level of the hierarchy, a simple profile-driven algorithm effectively minimizes operand latency. After this schedule has been partitioned into large sections, the bottom-level algorithm must more carefully analyze program structure when producing the final schedule.Our analysis reveals that at this bottom level, good scheduling depends upon carefully balancing instruction contention for processing elements and operand latency between producer and consumer instructions. We develop a parameterizable instruction scheduler that more effectively optimizes this trade-off. We use this scheduler to determine the contention-latency sweet spot that generates the best instruction schedule for each application. To avoid this application-specific tuning, we also determine the parameters that produce the best performance across all applications. The result is a contention-latency setting that generates instruction schedules for all applications in our workload that come within 17% of the best schedule for each. Martha Mercaldi Kim, Steven Swanson, Andrew Petersen 0001, Andrew Putnam, Andrew Schwerin, Mark Oskin, Susan J. Eggers |
ASPLOS | 7 |
| 2006 | Area-Performance Trade-offs in Tiled Dataflow ArchitecturesabstractTiled architectures, such as RAW, SmartMemories, TRIPS, and WaveScalar, promise to address several issues facing conventional processors, including complexity, wire-delay, and performance. The basic premise of these architectures is that larger, higher-performance implementations can be constructed by replicating the basic tile across the chip. This paper explores the area-performance trade-offs when designing one such tiled architecture, WaveScalar. We use a synthesizable RTL model and cycle-level simulator to perform an area/performance pareto analysis of over 200 WaveScalar processor designs ranging in size from 19mm2to 575mm2and having a 22 FO4 cycle time. We demonstrate that, for multi-threaded workloads, WaveScalar performance scales almost ideally from 19 to 101mm2when optimized for area efficiency and from 44 to 202mm2when optimized for peak performance. Our analysis reveals that WaveScalar's hierarchical interconnect plays an important role in overall scalability, and that WaveScalar achieves the same (or higher) performance in substantially less area than either an aggressive out-of-order superscalar or Sun's Niagara CMP processor Steven Swanson, Andrew Putnam, Martha Mercaldi Kim, Ken Michelson, Andrew Petersen 0001, Andrew Schwerin, Mark Oskin, Susan J. Eggers |
ISCA | 8 |
| 2006 | Modeling instruction placement on a spatial architectureabstractIn response to current technology scaling trends, architects are developing a new style of processor, known as spatial computers. A spatial computer is composed of hundreds or even thousands of simple, replicated processing elements (or PEs), frequently organized into a grid. Several current spatial computers, such as TRIPS, RAW, SmartMemories, nanoFabrics and WaveScalar, explicitly place a program's instructions onto the grid. Designing instruction placement algorithms is an enormous challenge, as there are an exponential (in the size of the application) number of different mappings of instructions to PEs, and the choice of mapping greatly affects program performance. In this paper we develop an instruction placement performance model which can inform instruction placement. The model comprises three components, each of which captures a different aspect of spatial computing performance: inter-instruction operand latency, data cache coherence overhead, and contention for processing element resources. We evaluate the model on one spatial computer, WaveScalar, and find that predicted and actual performance correlate with a coefficient of -0.90. We demonstrate the model's utility by using it to design a new placement algorithm, which outperforms our previous algorithms. Although developed in the context of WaveScalar, the model can serve as a foundation for tuning code, compiling software, and understanding the microarchitectural trade-offs of spatial computers in general. Martha Mercaldi Kim, Steven Swanson, Andrew Petersen 0001, Andrew Putnam, Andrew Schwerin, Mark Oskin, Susan J. Eggers |
SPAA | 7 |
| 2005 | Program Slicing with Dynamic Points-To SetsabstractProgram slicing is a potentially useful analysis for aiding program understanding. However, in reality even slices of small programs are often too large to be useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we use dynamic points-to data, which represents optimistic pointer information, to obtain a bound on the best case slice size improvement that can be achieved with improved pointer precision. Our experiments show that slice size can be reduced significantly for programs that make frequent use of calls through function pointers because for them the dynamic pointer data results in a considerably smaller call graph, which leads to fewer data dependences. Programs without or with only few calls through function pointers, however, show considerably less improvement. We discovered that C programs appear to have a significant fraction of direct and nonspurious pointer data dependences so that reducing spurious dependences via pointers is only of limited benefit. Consequently, to make slicing useful in general for such programs, improvements beyond better pointer analyses are necessary. On the other hand, since we show that collecting dynamic function pointer information can be performed with little overhead (average slowdown of 10 percent for our benchmarks), dynamic pointer information may be a practical approach to making slicing of programs with frequent function pointer use more successful in practice. Markus Mock, Darren C. Atkinson, Craig Chambers, Susan J. Eggers |
IEEE Trans. Software Eng. | 4 |
| 2003 | Mini-Threads: Increasing TLP on Small-Scale SMT ProcessorsabstractSeveral manufacturers have recently announced the first simultaneous-multithreaded processors, both as single CPU and as components of multi-CPU chips. All are small scale, comprising only two to four thread contexts. A significant impediment to the construction of larger-scale SMT is the register file size required by a large number of contexts. This paper introduces and evaluates mini-threads, a simple extension to SMT that increases thread-level parallelism without the commensurate increase in register file size. A mini-threaded SMT CPU adds additional per-thread state to each hardware context; an application executing in a context can create mini-threads that will utilize its own per-thread state, but share the context's architectural register set. The resulting performance will depend on the benefits of additional TLP compared to the costs of executing mini-threads with fewer registers. Our results quantify these factors in detail and demonstrate that mini-threads can improve performance significantly, particularly on small-scale, space-sensitive CPU designs. Joshua Redstone, Susan J. Eggers, Henry M. Levy |
HPCA | 2 |
| 2003 | Improving server software support for simultaneous multithreaded processorsabstractSimultaneous multithreading (SMT) represents a fundamental shift in processor capability. SMT's ability to execute multiple threads simultaneously within a single CPU offers tremendous potential performance benefits. However, the structure and behavior of software affects the extent to which this potential can be achieved. Consequently, just like the earlier arrival of multiprocessors, the advent of SMT processors prompts a needed re-evaluation of software that will run on them. This evaluation is complicated, since SMT adopts architectural features and operating costs of both its predecessors (uniprocessors and multiprocessors). The crucial task for researchers is to determine which software structures and policies - multi-processor, uniprocessor, or neither - are most appropriate for SMT.This paper evaluates how SMT's changes to the underlying hardware affects server software, and in particular, SMT's effects on memory allocation and synchronization. Using detailed simulation of an SMT server implemented in three different thread models, we find that the default policies often provided with multiprocessor operating systems produce unacceptably low performance. For each area that we examine, we identify better policies that combine techniques from both uniprocessors and multi-processors. We also uncover a vital aspect of multi-threaded synchronization (interaction with operating system thread scheduling) that previous research on SMT synchronization had overlooked. Overall, our results demonstrate how a few simple changes to applications' run-time support libraries can dramatically boost the performance of multi-threaded servers on SMT, without requiring modifications to the applications themselves. Luke K. McDowell, Susan J. Eggers, Steve D. Gribble |
PPoPP | 2 |
| 2003 | Comprehensive synchronization elimination for Java
Jonathan Aldrich, Emin Gün Sirer, Craig Chambers, Susan J. Eggers |
Sci. Comput. Program. | 4 |
| 2003 | An evaluation of speculative instruction execution on simultaneous multithreaded processorsabstractModern superscalar processors rely heavily on speculative execution for performance. For example, our measurements show that on a 6-issue superscalar, 93% of committed instructions for SPECINT95 are speculative. Without speculation, processor resources on such machines would be largely idle. In contrast to superscalars, simultaneous multithreaded (SMT) processors achieve high resource utilization by issuing instructions from multiple threads every cycle. An SMT processor thus has two means of hiding latency: speculation and multithreaded execution. However, these two techniques may conflict; on an SMT processor, wrong-path speculative instructions from one thread may compete with and displace useful instructions from another thread. For this reason, it is important to understand the trade-offs between these two latency-hiding techniques, and to ask whether multithreaded processors should speculate differently than conventional superscalars.This paper evaluates the behavior of instruction speculation on SMT processors using both multiprogrammed (SPECINT and SPECFP) and multithreaded (the Apache Web server) workloads. We measure and analyze the impact of speculation and demonstrate how speculation on an 8-context SMT differs from superscalar speculation. We also examine the effect of speculation-aware fetch and branch prediction policies in the processor. Our results quantify the extent to which (1) speculation is critical to performance on a multithreaded processor because it ensures an ample supply of parallelism to feed the functional units, and (2) SMT actually enhances the effectiveness of speculative execution, compared to a superscalar processor by reducing the impact of branch misprediction. Finally, we quantify the impact of both hardware configuration and workload characteristics on speculation's usefulness and demonstrate that, in nearly all cases, speculation is beneficial to SMT performance. Steven Swanson, Luke K. McDowell, Michael M. Swift, Susan J. Eggers, Henry M. Levy |
ACM Trans. Comput. Syst. | 4 |
| 2002 | Towards automatic construction of staged compilersabstractSome compilation systems, such as offline partial evaluators and selective dynamic compilation systems, support staged optimizations. A staged optimization is one where a logically single optimization is broken up into stages, with the early stage(s) performing preplanning set-up work, given any available partial knowledge about the program to be compiled, and the final stage completing the optimization. The final stage can be much faster than the original optimization by having much of its work performed by the early stages. A key limitation of current staged optimizers is that they are written by hand, sometimes in an ad hoc manner. We have developed a framework called the Staged Compilation Framework (SCF) for systematically and automatically converting single-stage optimizations into staged versions. The framework is based on a combination of aggressive partial evaluation and dead-assignment elimination. We have implemented SCF in Standard ML. A preliminary evaluation shows that SCF can speed up classical optimization of some commonly used C functions by up to 12× (and typically between 4.5× and 5.5×). Matthai Philipose, Craig Chambers, Susan J. Eggers |
POPL | 3 |
| 2002 | Improving program slicing with dynamic points-to dataabstractProgram slicing is a potentially useful analysis for aiding program understanding. However, slices of even small programs are often too large to be generally useful. Imprecise pointer analyses have been suggested as one cause of this problem. In this paper, we use dynamic points-to data, which represents optimal or optimistic pointer information, to obtain a bound on the best case slice size improvement that can be achieved with improved pointer precision. Our experiments show that slice size can be reduced significantly for programs that make frequent use of calls through function pointers because for them the dynamic pointer data results in a considerably smaller call graph, which leads to fewer data dependences. Programs without or with only few calls through function pointers, however, show only insignificant improvement. We identified Amdahl's law as the reason for this behavior: C programs appear to have a large fraction of direct data dependences so that reducing spurious dependences via pointers is only of limited benefit. Consequently, to make slicing useful in general for such programs, improvements beyond better pointer analyses will be necessary. On the other hand, since we show that collecting dynamic function pointer information can be performed with little overhead (average slowdown of 10% for our benchmarks), dynamic pointer information may be a practical approach to making slicing of programs with frequent function pointer use more successful in reality. Markus Mock, Darren C. Atkinson, Craig Chambers, Susan J. Eggers |
SIGSOFT FSE | 4 |
| 2001 | Dynamic points-to sets: a comparison with static analyses and potential applications in program understanding and optimizationabstractIn this paper, we compare the behavior of pointers in C programs, as approximated by static pointer analysis algorithms, with the actual behavior of pointers when these programs are run. In order to perform this comparison, we have implemented several well known pointer analysis algorithms, and we have built an instrumentation infrastructure for tracking pointer values during program execution. Markus Mock, Manuvir Das, Craig Chambers, Susan J. Eggers |
PASTE | 4 |
| 2000 | An Analysis of Operating System Behavior on a Simultaneous Multithreaded Architecture
Joshua Redstone, Susan J. Eggers, Henry M. Levy |
ASPLOS | 2 |
| 2000 | Calpa: a tool for automating selective dynamic compilationabstractSelective dynamic compilation systems, typically driven by annotations that identify run-time constants, can achieve significant program speedups. However, manually inserting annotations is a tedious and time-consuming process that requires careful inspection of a program's static characteristics and run-time behavior and much trial and error in order to select the most beneficial annotations. Calpa is a system that generates annotations automatically for the DyC dynamic compiler. Calpa combines execution frequency and value profile information with a model of dynamic compilation cost and dynamically generated code benefit to choose run-time constants and other dynamic compilation strategies. For the programs tested so far, Calpa generates annotations of the same or better quality as those found by a human, but in a fraction of the time. The result was equal or-better program speedups from dynamic compilation, but without the need for programmer intervention. Markus Mock, Craig Chambers, Susan J. Eggers |
MICRO | 3 |
| 2000 | DyC: an expressive annotation-directed dynamic compiler for C
Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers |
Theor. Comput. Sci. | 5 |
| 2000 | The benefits and costs of DyC's run-time optimizationsabstractDyC selectively dynamically compiles programs during their execution, utilizing the run-time-computed values of variables and data structures to apply optimizations that are based on partial evaluation. The dynamic optimizations are preplanned at static compile time in order to reduce their run-time cost; we call this staging . DyC's staged optimizations include (1) an advanced binding-time analysis that supports polyvariant specialization (enabling both single-way and multiway complete loop unrolling), polyvariant division, static loads, and static calls, (2) low-cost, dynamic versions of traditional global optimizations, such as zero and copy propagation and dead-assignment elimination, and (3) dynamic peephole optimizations, such as strength reduction. Because of this large suite of optimizations and its low dynamic compilation overhead, DyC achieves good performance improvements on programs that are larger and more complex than the kernels previously targeted by other dynamic compilation systems. This paper evaluates the benefits and costs of applying DyC's optimizations. We assess their impact on the performance of a variety of small to medium-sized programs, both for the regions of code that are actually transformed and for the entire application as a whole. Our study includes an analysis of the contribution to performance of individual optimizations, the performance effect of changing the applications' inputs, and a detailed accounting of dynamic compilation costs. Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers |
ACM Trans. Program. Lang. Syst. | 5 |
| 1999 | Supporting Fine-Grained Synchronization on a Simultaneous Multithreading ProcessorabstractThis paper proposes and evaluates new synchronization schemes for a simultaneous multithreaded processor. We present a scalable mechanism that permits threads to cheaply synchronize within the processor, with blocked threads consuming no processor resources. We also introduce the concept of lock release prediction, which gains an additional improvement of 40%. Overall, we show that these improvements in synchronization cost enable parallelization of code that could not be effectively parallelized using traditional techniques. Dean M. Tullsen, Jack L. Lo, Susan J. Eggers, Henry M. Levy |
HPCA | 3 |
| 1999 | An Evaluation of Staged Run-Time Optimizations in DyCabstractPrevious selective dynamic compilation systems have demonstrated that dynamic compilation can achieve performance improvements at low cost on small kernels, but they have had difficulty scaling to larger programs. To overcome this limitation, we developed DyC, a selective dynamic compilation system that includes more sophisticated and flexible analyses and transformations. DyC is able to achieve good performance improvements on programs that are much larger and more complex than the kernels. We analyze the individual optimizations of DyC and assess their impact on performance collectively and individually. Brian Grant, Matthai Philipose, Markus Mock, Craig Chambers, Susan J. Eggers |
PLDI | 5 |
| 1999 | Static Analyses for Eliminating Unnecessary Synchronization from Java Programs
Jonathan Aldrich, Craig Chambers, Emin Gün Sirer, Susan J. Eggers |
SAS | 4 |
| 1999 | Software-Directed Register Deallocation for Simultaneous Multithreaded ProcessorsabstractThis paper proposes and evaluates software techniques that increase register file utilization for simultaneous multithreading (SMT) processors. SMT processors require large register files to hold multiple thread contexts that can issue instructions out of order every cycle. By supporting better interthread sharing and management of physical registers, an SMT processor can reduce the number of registers required and can improve performance for a given register file size. Our techniques specifically target register deal location. While out-of-order processors with register renaming are effective at knowing when a new physical register must be allocated, they have limited knowledge of when physical registers can be deallocated. We propose architectural extensions that permit the compiler and operating system to: 1) free registers immediately upon their last use, and 2) free registers allocated to idle thread contexts. Our results, based on detailed instruction-level simulations of an SMT processor, show that these techniques can increase performance significantly for register-intensive, multithreaded programs. Jack L. Lo, Sujay S. Parekh, Susan J. Eggers, Henry M. Levy, Dean M. Tullsen |
IEEE Trans. Parallel Distributed Syst. | 3 |
| 1998 | An Analysis of Database Workload Performance on Simultaneous Multithreaded ProcessorsabstractSimultaneous multithreading (SMT) is an architectural technique in which the processor issues multiple instructions from multiple threads each cycle. While SMT has been shown to be effective on scientific workloads, its performance on database systems is still an open question. In particular, database systems have poor cache performance, and the addition of multithreading has the potential to exacerbate cache conflicts. This paper examines database performance on SMT processors using traces of the Oracle database management system. Our research makes three contributions. First, it characterizes the memory-system behavior of database systems running on-line transaction processing and decision support system workloads. Our data show that while DBMS workloads have large memory footprints, there is substantial data reuse in a small, cacheable "critical" working set. Second, we show that the additional data cache conflicts caused by simultaneous-multithreaded instruction scheduling can be nearly eliminated by the proper choice of software-directed policies for virtual-to-physical page mapping and per-process address offsetting. Our results demonstrate that with the best policy choices, D-cache miss rates on an 8-context SMT are roughly equivalent to those on a single-threaded superscalar. Multithreading also leads to better interthread instruction cache sharing, reducing I-cache miss rates by up to 35%. Third, we show that SMT's latency tolerance is highly effective for database applications. For example, using a memory-intensive OLTP workload, an 8-context SMT processor achieves a 3-fold increase in instruction throughput over a single-threaded superscalar with similar resources. Jack L. Lo, Luiz André Barroso, Susan J. Eggers, Kourosh Gharachorloo, Henry M. Levy, Sujay S. Parekh |
ISCA | 3 |
| 1997 | Tuning Compiler Optimizations for Simultaneous MultithreadingabstractCompiler optimizations are often driven by specific assumptions about the underlying architecture and implementation of the target machine. For example, when targeting shared-memory multiprocessors, parallel programs are compiled to minimize sharing, in order to decrease high-cost, inter-processor communication. This paper reexamines several compiler optimizations in the context of simultaneous multithreading (SMT), a processor architecture that issues instructions from multiple threads to the functional units each cycle. Unlike shared-memory multiprocessors, SMT provides and benefits from fine-grained sharing of processor and memory system resources; unlike current multiprocessors, SMT exposes and benefits from inter-thread instruction-level parallelism when hiding latencies. Therefore, optimizations that are appropriate for these conventional machines may be inappropriate for SMT. We revisit three optimizations in this light: loop-iteration scheduling, software speculative execution, and loop tiling. Our results show that all three optimizations should be applied differently in the context of SMT architectures: threads should be parallelized with a cyclic, rather than a blocked algorithm; non-loop programs should not be software speculated and compilers no longer need to be concerned about precisely sizing tiles to match cache sizes. By following these new guidelines compilers can generate code that improves the performance of programs executing on SMT machines. Jack L. Lo, Susan J. Eggers, Henry M. Levy, Sujay S. Parekh, Dean M. Tullsen |
MICRO | 2 |
| 1997 | Annotation-Directed Run-Time Specialization in CabstractWe present the design of a dynamic compilation system for C. Directed by a few declarative user annotations specifying where and on what dynamic compilation is to take place, a binding time analysis computes the set of run-time constants at each program point in each annotated procedure's control flow graph; the analysis supports program-point-specific polyvariant division and specialization. The analysis results guide the construction of a specialized run-time specializer for each dynamically compiled region; the specializer supports various caching strategies for managing dynamically generated code and supports mixes of speculative and demand-driven specialization of dynamic branch successors. Most of the key cost/benefit trade-offs in the binding time analysis and the run-time specialize are open to user control through declarative policy annotations. Our design is being implemented in the context of art existing optimizing compiler. Brian Grant, Markus Mock, Matthai Philipose, Craig Chambers, Susan J. Eggers |
PEPM | 5 |
| 1997 | Converting Thread-Level Parallelism to Instruction-Level Parallelism via Simultaneous MultithreadingabstractTo achieve high performance, contemporary computer systems rely on two forms of parallelism: instruction-level parallelism (ILP) and thread-level parallelism (TLP). Wide-issue super-scalar processors exploit ILP by executing multiple instructions from a single program in a single cycle. Multiprocessors (MP) exploit TLP by executing different threads in parallel on different processors. Unfortunately, both parallel processing styles statically partition processor resources, thus preventing them from adapting to dynamically changing levels of ILP and TLP in a program. With insufficient TLP, processors in an MP will be idle; with insufficient ILP, multiple-issue hardware on a superscalar is wasted. This article explores parallel processing on an alternative architecture, simultaneous multithreading (SMT), which allows multiple threads to complete for and share all of the processor's resources every cycle. The most compelling reason for running parallel applications on an SMT processor is its ability to use thread-level parallelism and instruction-level parallelism interchangeably. By permitting multiple threads to share the processor's functional units simultaneously, the processor can use both ILP and TLP to accommodate variations in parallelism. When a program has only a single thread, all of the SMT processor's resources can be dedicated to that thread; when more TLP exists, this parallelism can compensate for a lack of per-thread ILP. We examine two alternative on-chip parallel architectures for the next generation of processors. We compare SMT and small-scale, on-chip multiprocessors in their ability to exploit both ILP and TLP. First, we identify the hardware bottlenecks that prevent multiprocessors from effectively exploiting ILP. Then, we show that because of its dynamic resource sharing, SMT avoids these inefficiencies and benefits from being able to run more threads on a single processor. The use of TLP is especially advantageous when per-thread ILP is limited. The ease of adding additional thread contexts on an SMT (relative to adding additional processors on an MP) allows simultaneous multithreading to expose more parallelism, further increasing functional unit utilization and attaining a 52% average speedup (versus a four-processor, single-chip multiprocessor with comparable execution resources). This study also addresses an often-cited concern regarding the use of thread-level parallelism or multithreading: interference in the memory system and branch prediction hardware. We find the multiple threads cause interthread interference in the caches and place greater demands on the memory system, thus increasing average memory latencies. By exploiting threading-level parallelism, however, SMT hides these additional latencies, so that they only have a small impact on total program performance. We also find that for parallel applications, the additional threads have minimal effects on branch prediction. Jack L. Lo, Susan J. Eggers, Joel S. Emer, Henry M. Levy, Rebecca L. Stamm, Dean M. Tullsen |
ACM Trans. Comput. Syst. | 2 |
| 1996 | Exploiting Choice: Instruction Fetch and Issue on an Implementable Simultaneous Multithreading ProcessorabstractSimultaneous multithreading is a technique that permits multiple independent threads to issue multiple instructions each cycle. In previous work we demonstrated the performance potential of simultaneous multithreading, based on a somewhat idealized model. In this paper we show that the throughput gains from simultaneous multithreading can be achieved without extensive changes to a conventional wide-issue superscalar, either in hardware structures or sizes. We present an architecture for simultaneous multithreading that achieves three goals: (1) it minimizes the architectural impact on the conventional superscalar design, (2) it has minimal performance impact on a single thread executing alone, and (3) it achieves significant throughput gains when running multiple threads. Our simultaneous multithreading architecture achieves a throughput of 5.4 instructions per cycle, a 2.5-fold improvement over an unmodified superscalar with similar hardware resources. This speedup is enhanced by an advantage of multithreading previously unexploited in other architectures: the ability to favor for fetch and issue those threads most efficiently using the processor each cycle, thereby providing the "best" instructions to the processor. Dean M. Tullsen, Susan J. Eggers, Joel S. Emer, Henry M. Levy, Jack L. Lo, Rebecca L. Stamm |
ISCA | 2 |
| 1996 | Fast, Effective Dynamic CompilationabstractDynamic compilation enables optimization based on the values of invariant data computed at run-time. Using the values of these run-time constants, a dynamic compiler can eliminate their memory loads, perform constant propagation and folding, remove branches they determine, and fully unroll loops they bound. However, the performance benefits of the more efficient, dynamically-compiled code are offset by the run-time cost of the dynamic compile. Our approach to dynamic compilation strives for both fast dynamic compilation and high-quality dynamically-compiled code: the programmer annotates regions of the programs that should be compiled dynamically; a static, optimizing compiler automatically produces pre-optimized machine-code templates, using a pair of dataflow analyses that identify which variables will be constant at run-time; and a simple, dynamic compiler copies the templates, patching in the computed values of the run-time constants, to produce optimized, executable code. Our work targets general- purpose, imperative programming languages, initially C. Initial experiments applying dynamic compilation to C programs have produced speedups ranging from 1.2 to 1.8. Joel Auslander, Matthai Philipose, Craig Chambers, Susan J. Eggers, Brian N. Bershad |
PLDI | 4 |
| 1995 | Simultaneous Multithreading: Maximizing On-Chip ParallelismabstractThis paper examines simultaneous multithreading, a technique permitting several independent threads to issue instructions to a superscalar's multiple functional units in a single cycle. We present several models of simultaneous multithreading and compare them with alternative organizations: a wide superscalar, a fine-grain multithreaded processor, and single-chip, multiple-issue multiprocessing architectures. Our results show that both (single-threaded) superscalar and fine-grain multithreaded architectures are limited their ability to utilize the resources of a wide-issue processor. Simultaneous multithreading has the potential to achieve 4 times the throughput of a superscalar, and double that of fine-grain multithreading. We evaluate several cache configurations made possible by this type of organization and evaluate tradeoffs between them. We also show that simultaneous multithreading is an attractive alternative to single-chip multiprocessors; simultaneous multithreaded processors with a variety of organizations outperform corresponding conventional multiprocessors with similar execution resources.While simultaneous multithreading has excellent potential to increase processor utilization, it can add substantial complexity to the design. We examine many of these complexities and evaluate alternative organizations in the design space. Dean M. Tullsen, Susan J. Eggers, Henry M. Levy |
ISCA | 2 |
| 1995 | Improving Balanced Scheduling with Compiler Optimizations that Increase Instruction-Level ParallelismabstractTraditional list schedulers order instructions based on an optimistic estimate of the load latency imposed by the hardware and therefore cannot respond to variations in memory latency caused by cache hits and misses on non-blocking architectures. In contrast, balanced scheduling schedules instructions based on an estimate of the amount of instruction-level parallelism in the program. By scheduling independent instructions behind loads based on what the program can provide, rather than what the implementation stipulates in the best case (i.e., a cache hit), balanced scheduling can hide variations in memory latencies more effectively. Jack L. Lo, Susan J. Eggers |
PLDI | 2 |
| 1995 | Reducing False Sharing on Shared Memory Multiprocessors through Compile Time Data TransformationsabstractWe have developed compiler algorithms that analyze explicitly parallel programs and restructure their shared data to reduce the number of false sharing misses. The algorithms analyze per-process shared data accesses, pinpoint the data structures that are susceptible to false sharing and choose an appropriate transformation to reduce it. The transformations either group data that is accessed by the same processor or separate individual data items that are shared. Tor E. Jeremiassen, Susan J. Eggers |
PPoPP | 2 |
| 1995 | Extensibility, Safety and Performance in the SPIN Operating SystemabstractThis paper describes the motivation, architecture and performance of SPIN, an extensible operating system. SPIN provides an extension infrastructure, together with a core set of extensible services, that allow applications to safely change the operating system's interface and implementation. Extensions allow an application to specialize the underlying operating system in order to achieve a particular level of performance and functionality. SPIN uses language and link-time mechanisms to inexpensively export fine-grained interfaces to operating system services. Extensions are written in a type safe language, and are dynamically linked into the operating system kernel. This approach offers extensions rapid access to system services, while protecting the operating system code executing within the kernel address space. SPIN and its extensions are written in Modula-3 and run on DEC Alpha workstations. Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gün Sirer, Marc E. Fiuczynski, Craig Chambers, Susan J. Eggers |
SOSP | 8 |
| 1995 | Effective Cache Prefetching on Bus-Based MultiprocessorsabstractCompiler-directed cache prefetching has the potential to hide much of the high memory latency seen by current and future high-performance processors. However, prefetching is not without costs, particularly on a shared-memory multiprocessor. Prefetching can negatively affect bus utilization, overall cache miss rates, memory latencies and data sharing. We simulate the effects of a compiler-directed prefetching algorithm, running on a range of bus-based multiprocessors. We show that, despite a high memory latency, this architecture does not necessarily support prefetching well, in some cases actually causing performance degradations. We pinpoint several problems with prefetching on a shared-memory architecture (additional conflict misses, no reduction in the data-sharing traffic and associated latencies, a multiprocessor's greater sensitivity to memory utilization and the sensitivity of the cache hit rate to prefetch distance) and measure their effect on performance. We then solve those problems through architectural techniques and heuristics for prefetching that could be easily incorporated into a compiler: (1) victim caching, which eliminates most of the cache conflict misses caused by prefetching in a direct-mapped cache, (2) special prefetch algorithms for shared data, which significantly improve the ability of our basic prefetching algorithm to prefetch individual misses, and (3) compiler-based shared-data restructuring, which eliminates many of the invalidation misses the basic prefetching algorithm does not predict. The combined effect of these improvements is to make prefetching effective over a much wider range of memory architectures. Dean M. Tullsen, Susan J. Eggers |
ACM Trans. Comput. Syst. | 2 |
| 1994 | The Effectiveness of Multiple Hardware ContextsabstractMultithreaded processors are used to tolerate long memory latencies. By executing threads loaded in multiple hardware contexts, an otherwise idle processor can keep busy, thus increasing its utilization. However, the larger size of a multi-thread working set can have a negative effect on cache conflict misses. In this paper we evaluate the two phenomena together, examining their combined effect on execution time. Radhika Thekkath, Susan J. Eggers |
ASPLOS | 2 |
| 1994 | Impact of Sharing-Based Thread Placement on Multithreaded ArchitecturesabstractMultithreaded architectures context switch between instruction streams to hide memory access latency. Although this improves processor utilization, it can increase cache interference and degrade overall performance. One technique to reduce the interconnect traffic is to co-locate threads that share data on the same processor. Multiple threads sharing in the cache should reduce compulsory and invalidation misses, thereby improving execution rime. To test this hypothesis, the authors compared a variety of thread placement algorithms via trace-driven simulation of fourteen coarse- and medium-grain parallel applications on several multithreaded architectures. The results contradict the hypothesis. Rather than decreasing, compulsory and invalidation misses remained neatly constant across all placement algorithms, for all processor configurations, even with an infinite cache. That is, sharing-based-placement had no (positive) effect on execution time. Instead load balancing was the critical factor that affected performance. The results were due to one or both of the following reasons: (1) the sequential and uniform access of shared data by the application's threads and (2) the insignificant number of data references that require interconnect access, relative to the total number of instructions.> Radhika Thekkath, Susan J. Eggers |
ISCA | 2 |
| 1993 | Limitations of Cache Prefetching on a Bus-Based MultiprocessorabstractCompiler-directed cache prefetching has the potential to hide much of the high memory latency seen by current and future high-performance processors. However, prefetching is not without costs, particularly on a multiprocessor. Prefetching can negatively affect bus utilization, overall cache miss rates, memory latencies and data sharing. We simulated the effects of a particular compiler-directed prefetching algorithm, running on a bus-based multiprocesssor. We showed that, despite a high memory latency, this architecture is not very well-suited for prefetching. For several variations on the architecture, speedups for five parallel programs were no greater than 39%, and degradations were as high as 7%, when prefetching was added to the workload. We examined the sources of cache misses, in light of several different prefetching strategies, and pinpointed the causes of the performance changes. Invalidation misses pose a particular problem for current compiler-directed prefetchers. We applied two techniques that reduced their impact: a special prefetching heuristic tailored to write-shared data, and restructuring shared data to reduce false sharing, thus allowing traditional prefetching algorithms to work well. Dean M. Tullsen, Susan J. Eggers |
ISCA | 2 |
| 1993 | Balanced Scheduling: Instruction Scheduling When Memory Latency is UncertainabstractTraditional list schedulers order instructions based on an optimistic estimate of the load delay imposed by the implementation. Therefore they cannot respond to variations in load latencies (due to cache hits or misses, congestion in the memory interconnect, etc.) and cannot easily be applied across different implementations. We have developed an alternative algorithm, known as balanced scheduling, that schedule instructions based on an estimate of the amount of instruction level parallelism in the program. Since scheduling decisions are program-rather than machine-based, balanced scheduling is unaffected by implementation changes. Since it is based on the amount of instruction level parallelism that a program can support, it can respond better to variations in load latencies. Performance improvements over a traditional list scheduler on a Fortran workload and simulating several different machine types (cache-based workstations, large parallel machines with a multipath interconnect and a combination, all with non-blocking processors) are quite good, averaging between 3% and 18%. Daniel R. Kerns, Susan J. Eggers |
PLDI | 2 |
| 1992 | Architectural Support for Single Address Space Operating SystemsabstractRecent microprocessor announcements show a trend toward wide-address computers: architectures that support 64 bits of virtual address space.Such architectures facilitate fundamentally new operating system organizations that promote efficient data sharing and cooperation, both between complex applications and between parts of the operating system itself.Machinery. Eric J. Koldinger, Jeffrey S. Chase, Susan J. Eggers |
ASPLOS | 3 |
| 1991 | Integrating Register Allocation and Instruction Scheduling for RISCsabstractarticle Free Access Share on Integrating register allocation and instruction scheduling for RISCs Authors: David G. Bradlee View Profile , Susan J. Eggers View Profile , Robert R. Henry View Profile Authors Info & Claims ACM SIGOPS Operating Systems ReviewVolume 25Issue Special IssueApr. 1991 pp 122–131https://doi.org/10.1145/106974.106986Published:01 April 1991Publication History 101citation1,061DownloadsMetricsTotal Citations101Total Downloads1,061Last 12 Months66Last 6 weeks9 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 SiteeReaderPDF David G. Bradlee, Susan J. Eggers |
ASPLOS | 2 |
| 1991 | Eliminating False Sharing
Susan J. Eggers, Tor E. Jeremiassen |
ICPP (1) | 1 |
| 1991 | The Effect on RISC Performance of Register Set Size and Structure Versus Code Generation Strategy
David G. Bradlee, Susan J. Eggers |
ISCA | 2 |
| 1991 | On the Validity of Trace-Driven Simulation for MultiprocessorsabstractTrace-driven simulation is a commonly-used technique for evaluating multiprocessor memory systems.How- Eric J. Koldinger, Susan J. Eggers, Henry M. Levy |
ISCA | 2 |
| 1991 | The Marion System for Retargetable Instruction Schedulingabstractarticle Free Access Share on The Marion system for retargetable instruction scheduling Authors: David G. Bradlee Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, Washington Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, WashingtonView Profile , Robert R. Henry Tera Computer, 400 N 34th Street, Seattle, WA and Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, Washington Tera Computer, 400 N 34th Street, Seattle, WA and Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, WashingtonView Profile , Susan J. Eggers Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, Washington Department of Computer Science and Engineering, FR-35, University of Washington, Seattle, WashingtonView Profile Authors Info & Claims ACM SIGPLAN NoticesVolume 26Issue 6June 1991 pp 229–240https://doi.org/10.1145/113446.113465Published:01 May 1991Publication History 36citation502DownloadsMetricsTotal Citations36Total Downloads502Last 12 Months28Last 6 weeks2 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 SiteeReaderPDF David G. Bradlee, Susan J. Eggers |
PLDI | 3 |
| 1991 | Simplicity Versus Accuracy in a Model of Cache Coherency OverheadabstractThe important factors building a model of coherency overhead for a single-bus, shared memory multiprocessor are analyzed. Three architectural features are examined: the size of the coherency block, the cache size, and the type of bus operation used to carry out a particular coherency function. The experiments judge the effect of each architectural parameter on model accuracy by selectively including it in a base model and then comparing the model's predictions of coherency overhead to the results of detailed multiprocessor simulations. The results indicate that coherency block size is critical to include in a model of coherency overhead. This improves the accuracy of the base model by a factor of approximately 5-50, depending on the application. Cache size and the type of coherency-related bus operation are less important, contributing a 1.5% (for 128 kbyte caches) and 6% improvement, respectively, averaged over all traces.> Susan J. Eggers |
IEEE Trans. Computers | 1 |
| 1990 | Techniques for Efficient Inline Tracing on a Shared-Memory MultiprocessorabstractWhile much current research concerns multiprocessor design, few traces of parallel programs are available for analyzing the effect of design trade-offs. Existing trace collection methods have serious drawbacks: trap-driven methods often slow down program execution by more than 1000 times, significantly perturbing program behavior; microcode modification is faster, but the technique is neither general nor portable. Susan J. Eggers, David Keppel, Eric J. Koldinger, Henry M. Levy |
SIGMETRICS | 1 |
| 1989 | The Effect of Sharing on the Cache and Bus Performance of Parallel ProgramsabstractBus bandwidth ultimately limits the performance, and therefore the scale, of bus-based, shared memory multiprocessors. Previous studies have extrapolated from uniprocessor measurements and simulations to estimate the performance of these machines. In this study, we use traces of parallel programs to evaluate the cache and bus performance of shared memory multiprocessors, in which coherency is maintained by a write-invalidate protocol. In particular, we analyze the effect of sharing overhead on cache miss ratio and bus utilization. Susan J. Eggers, Randy H. Katz |
ASPLOS | 1 |
| 1989 | Evaluating the Performance of Four Snooping Cache Coherency ProtocolsabstractWrite-invalidate and write-broadcast coherency protocols have been criticized for being unable to achieve good bus performance across all cache configurations. In particular, write-invalidate performance can suffer as block size increases; and large cache sizes will hurt write-broadcast. Read-broadcast and competitive snooping extensions to the protocols have been proposed to solve each problem. Susan J. Eggers, Randy H. Katz |
ISCA | 1 |
| 1988 | A Characterization of Sharing in Parallel Programs and Its Application to Coherency Protocol EvaluationabstractTrace-driven simulation is used to analyze the memory reference patterns of write-shared data in several parallel applications. A characterization of write sharing is developed (based on the notion of a write run), and the traces are examined using metrics derived from the characterization. The results indicate that the amount of write sharing in all programs is small, and that it is characterized by short-to-medium sequences of per-processor references, with little contention for either data or locks. A simple model of write sharing is developed from the write run characterization. By applying the results of the sharing analysis to the model, weighted by machine-specific cycle costs for carrying out coherency-related bus-operations, relative protocol performance can be estimated. These results are compared to those from detailed architectural simulations.> Susan J. Eggers, Randy H. Katz |
ISCA | 1 |
| 1986 | An In-Cache Address Translation MechanismabstractIn the design of SPUR, a high-performance multiprocessor workstation, the use of large caches and hardware-supported cache consistency suggests a new approach to virtual address translation. By performing translation in each processor's virtually-tagged cache, the need for separate translation lookaside buffers (TLBs) is eliminated. Eliminating the TLB substantially reduces the hardware cost and complexity of the translation mechanism and eliminates the translation consistency problem. Trace-driven simulations show that normal cache behavior is only minimally affected by caching page table entries, and that in many cases, using a separate device would actually reduce system performance. David A. Wood 0001, Susan J. Eggers, Garth A. Gibson, Mark D. Hill, Joan M. Pendleton, Scott A. Ritchie, George S. Taylor, Randy H. Katz, David A. Patterson 0001 |
ISCA | 2 |
| 1985 | Implementing A Cache Consistency ProtocolabstractWe present an ownership-based multiprocessor cache consistency protocol, designed for implementation by a single chip VLSI cache controller. The protocol and its VLSI realization are described in some detail, to emphasize the important implementation issues, in particular, the controller critical sections and the inter- and intra-cache interlocks needed to maintain cache consistency. The design has been carried through to layout in a P-Well CMOS technology Randy H. Katz, Susan J. Eggers, David A. Wood 0001, Charles L. Perkins, Robert G. Sheldon |
ISCA | 2 |
| 1981 | A Compression Technique for Large Statistical Data-Bases
Susan J. Eggers, Frank Olken, Arie Shoshani |
VLDB | 1 |
| 1980 | Efficient Access of Compressed Data
Susan J. Eggers, Arie Shoshani |
VLDB | 1 |