Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

John L. Hennessy

dblp:h/JohnLHennessy · DBLP profile ↗
← Back
66ranked-venue papers
10as first author
0since 2021 · last 2003
0000-0003-0356-1041ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Systems, architecture and hardware · 50 · 2 first-authorSoftware engineering, systems software and programming languages · 37 · 7 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 1 first-authorTheory of computation · 1 · 1 first-author

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
47 papers
Memory systems · 42% Parallel and multicore computing · 17% Performance modeling and evaluation · 16%
Software engineering, system software, and programming languages
17 papers
Compilers and program optimization · 66% Program analysis · 14% Programming languages and type systems · 10%

Topics — the 30 heaviest of 128, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Memory systems
cache coherence
0.1121999
A Quantitative Analysis of the Performance and Scalability of Distributed Shared Memory · IEEE Trans. Computers 1999
Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors · ISCA 1998
Evaluating the Memory Overhead Required for COMA Architectures · ISCA 1994
Parallel and multicore computing › multiprocessor system
shared-memory multiprocessor
0.1121999
The Performance Advantages of Integrating Block Data Trabsfer in Cache-Coherent Multiprocessors · ASPLOS 1994
The DASH Prototype: Logic Overhead and Performance · IEEE Trans. Parallel Distributed Syst. 1993
An empirical comparison of the Kendall Square Research KSR-1 and Stanford DASH multiprocessors · SC 1993
Memory systems › shared memory
distributed shared memory
0.141999
Cache-coherent distributed shared memory: perspectives on its development and future challenges · Proc. IEEE 1999
Application and Architectural Bottlenecks in Large Scale Distributed Shared Memory Machines · ISCA 1996
SoftFLASH: Analyzing the Performance of Clustered Distributed Virtual Shared Memory · ASPLOS 1996
Processor architecture and microarchitecture
multiprocessor architecture
0.151999
Hardware/software co-design of the Stanford FLASH multiprocessor · Proc. IEEE 1997
The Stanford FLASH Multiprocessor · ISCA 1994
The Performance Impact of Flexibility in the Stanford FLASH Multiprocessor · ASPLOS 1994
Memory systems › cache coherence
cache-coherent shared memory
0.131999
Cache-coherent distributed shared memory: perspectives on its development and future challenges · Proc. IEEE 1999
Application and Architectural Bottlenecks in Large Scale Distributed Shared Memory Machines · ISCA 1996
The Stanford FLASH Multiprocessor · ISCA 1994
Parallel and multicore computing › multiprocessor system › shared-memory multiprocessor
distributed shared-memory multiprocessor
0.012003
Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance Evaluation · IEEE Trans. Computers 2003
Parallel and multicore computing › parallel computing
parallel application performance
0.012003
Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance Evaluation · IEEE Trans. Computers 2003
Memory systems
cache
0.051995
False Sharing ans Spatial Locality in Multiprocessor Caches · IEEE Trans. Computers 1994
Characterizing the Caching and Synchronization Performance of a Multiprocessor Operating System · ASPLOS 1992
An Analytical Cache Model · ACM Trans. Comput. Syst. 1989
Memory systems › cache coherence
directory-based coherence
0.051993
The DASH Prototype: Logic Overhead and Performance · IEEE Trans. Parallel Distributed Syst. 1993
The DASH Prototype: Implementation and Performance · ISCA 1992
The Directory-Based Cache Coherence Protocol for the DASH Multiprocessor · ISCA 1990
Memory systems
data locality
0.021998
Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors · ISCA 1998
Data Locality and Load Balancing in COOL · PPoPP 1993
Memory systems › cache coherence
cache coherence protocol
0.021999
A Quantitative Analysis of the Performance and Scalability of Distributed Shared Memory · IEEE Trans. Computers 1999
The Performance Impact of Flexibility in the Stanford FLASH Multiprocessor · ASPLOS 1994
Performance modeling and evaluation
performance prediction
0.012000
Efficient performance prediction for modern microprocessors · SIGMETRICS 2000
Memory systems › memory consistency
memory consistency model
0.031992
Hiding Memory Latency using Dynamic Scheduling in Shared-Memory Multiprocessors · ISCA 1992
Performance Evaluation of Memory Consistency Models for Shared Memory Multiprocessors · ASPLOS 1991
Memory Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors · ISCA 1990
Distributed systems
data replication and migration
0.011998
Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors · ISCA 1998
Performance modeling and evaluation
workload characterization
0.031996
Characterizing the Caching and Synchronization Performance of a Multiprocessor Operating System · ASPLOS 1992
Cache Performance of Operating System and Multiprogramming Workloads · ACM Trans. Comput. Syst. 1988
Application and Architectural Bottlenecks in Large Scale Distributed Shared Memory Machines · ISCA 1996
Performance modeling and evaluation › performance diagnosis
performance debugging
0.021993
Mtool: An Integrated System for Performance Debugging Shared Memory Multiprocessor Applications · IEEE Trans. Parallel Distributed Syst. 1993
Performance debugging shared memory multiprocessor programs with MTOOL · SC 1991
Electronic design automation
hardware/software co-design
0.011997
Hardware/software co-design of the Stanford FLASH multiprocessor · Proc. IEEE 1997
Memory systems › non-uniform memory access
CC-NUMA
0.021998
An empirical comparison of the Kendall Square Research KSR-1 and Stanford DASH multiprocessors · SC 1993
Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors · ISCA 1998
High-performance computing
cluster computing
0.011996
SoftFLASH: Analyzing the Performance of Clustered Distributed Virtual Shared Memory · ASPLOS 1996
Performance modeling and evaluation › parallel system performance
multiprocessor performance evaluation
0.021991
Comparative Evaluation of Latency Reducing and Tolerating Techniques · ISCA 1991
Performance Evaluation of Memory Consistency Models for Shared Memory Multiprocessors · ASPLOS 1991
Parallel and multicore computing › parallel programming models
shared-memory parallelization
0.011996
SoftFLASH: Analyzing the Performance of Clustered Distributed Virtual Shared Memory · ASPLOS 1996
Processor architecture and microarchitecture
instruction set architecture
0.041988
Measurement and Evaluation of the MIPS Architecture and Processor · ACM Trans. Comput. Syst. 1988
Tags and Type Checking in Lisp: Hardware and Software Approaches · ASPLOS 1987
VLSI Processor Architecture · IEEE Trans. Computers 1984
High-performance computing › n-body simulation
barnes-hut algorithm
0.011995
Implications of Hierarchical N-Body Methods for Multiprocessor Architectures · ACM Trans. Comput. Syst. 1995
Performance modeling and evaluation › numerical algorithms
fast multipole method
0.011995
Implications of Hierarchical N-Body Methods for Multiprocessor Architectures · ACM Trans. Comput. Syst. 1995
High-performance computing › n-body simulation
hierarchical n-body methods
0.011995
Implications of Hierarchical N-Body Methods for Multiprocessor Architectures · ACM Trans. Comput. Syst. 1995
High-performance computing
scientific computing systems
0.011995
Implications of Hierarchical N-Body Methods for Multiprocessor Architectures · ACM Trans. Comput. Syst. 1995
Compilers and program optimization › register allocation
graph coloring register allocation
0.021990
The Priority-Based Coloring Approach to Register Allocation · ACM Trans. Program. Lang. Syst. 1990
A Simple Interprocedural Register Allocation Algorithm and Its Effectiveness for Lisp · ACM Trans. Program. Lang. Syst. 1989
Compilers and program optimization
register allocation
0.021990
The Priority-Based Coloring Approach to Register Allocation · ACM Trans. Program. Lang. Syst. 1990
A Simple Interprocedural Register Allocation Algorithm and Its Effectiveness for Lisp · ACM Trans. Program. Lang. Syst. 1989
Performance modeling and evaluation › analytical modeling
logp model
0.012003
Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance Evaluation · IEEE Trans. Computers 2003
Memory systems › memory hierarchy
attraction memory
0.011994
Evaluating the Memory Overhead Required for COMA Architectures · ISCA 1994

Methods — techniques the papers use, named apart from their topics

simulation · 0.1trace-driven simulation · 0.1analytical modeling · 0.1protocol processors · 0.0profile-based analysis · 0.0lightweight instrumentation · 0.0cache coherence protocol · 0.0programmable memory controller · 0.0directory protocol comparison · 0.0benchmarking · 0.0heuristics · 0.0graph coloring · 0.0runtime scheduling · 0.0programmer-supplied reference pattern · 0.0data flow analysis · 0.0c++ metaprogramming · 0.0memoization · 0.0integer linear programming · 0.0
YearPublicationVenuePosition
2003 Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance Evaluation
abstract
While the desire to use commodity parts in the communication architecture of a DSM multiprocessor offers advantages in cost and design time, the impact on application performance is unclear. We study this performance impact through detailed simulation, analytical modeling, and experiments on a flexible DSM prototype, using a range of parallel applications. We adapt the logP model to characterize the communication architectures of DSM machines. The l (network latency) and o (controller occupancy) parameters are the keys to performance in these machines, with the g (node-to-network bandwidth) parameter becoming important only for the fastest controllers. We show that, of all the logP parameters, controller occupancy has the greatest impact on application performance. Of the two contributions of occupancy to performance degradation-the latency it adds and the contention it induces-it is the contention component that governs performance regardless of network latency, showing a quadratic dependence on o. As expected, techniques to reduce the impact of latency make controller occupancy a greater bottleneck. Surprisingly, the performance impact of occupancy is substantial, even for highly-tuned applications and even in the absence of latency hiding techniques. Scaling the problem size is often used as a technique to overcome limitations in communication latency and bandwidth. Through experiments on a DSM prototype, we show that there are important classes of applications for which the performance lost by using higher occupancy controllers cannot be regained easily, if at all, by scaling the problem size.
Mainak Chaudhuri, Mark A. Heinrich, Chris Holt, Jaswinder Pal Singh, Edward Rothberg, John L. Hennessy
IEEE Trans. Computers6
2000 Efficient performance prediction for modern microprocessors
abstract
Generating an accurate estimate of the performance of a program on a given system is important to a large number of people. Computer architects, compiler writers, and developers all need insight into a machine's performance. There are a number of performance estimation techniques in use, from profile-based approaches to full machine simulation. This paper discusses a profile-based performance estimation technique that uses a lightweight instrumentation phase that runs in order number of dynamic instructions, followed by an analysis phase that runs in roughly order number of static instructions. This technique accurately predicts the performance of the core pipeline of a detailed out-of-order issue processor model while scheduling far fewer instructions than does full simulation. The difference between the predicted execution time and the time obtained from full simulation is only a few percent.
David Ofelt, John L. Hennessy
SIGMETRICS2
1999 Cache-coherent distributed shared memory: perspectives on its development and future challenges
abstract
Distributed shared memory is an architectural approach that allows multiprocessors to support a single shared address space that is implemented with physically distributed memories. Hardware-supported distributed shared memory is becoming the dominant approach for building multiprocessors with moderate to large numbers of processors. Cache coherence allows such architectures to use caching to take advantage of locality in applications without changing the programmer's model of memory. We review the key developments that led to the creation of cache-coherent distributed shared memory and describe the Stanford DASH multiprocessor, the first working implementation of hardware-supported scalable cache coherence. We then provide a perspective on such architectures and discuss important remaining technical challenges.
John L. Hennessy, Mark A. Heinrich, Anoop Gupta
Proc. IEEE1
1999 A Quantitative Analysis of the Performance and Scalability of Distributed Shared Memory
abstract
Scalable cache coherence protocols have become the key technology for creating moderate to large-scale shared-memory multiprocessors. Although the performance of such multiprocessors depends critically on the performance of the cache coherence protocol, little comparative performance data is available. Existing commercial implementations use a variety of different protocols, including bit-vector/coarse-vector protocols, SCI-based protocols, and COMA protocols. Using the programmable protocol processor of the Stanford FLASH multiprocessor, we provide a detailed, implementation-oriented evaluation of four popular cache coherence protocols. In addition to measurements of the characteristics of protocol execution (e.g., memory overhead, protocol execution time, and message count) and of overall performance, we examine the effects of scaling the processor count from 1 to 128 processors. Surprisingly, the optimal protocol changes for different applications and can change with processor count even within the same application. These results help identify the strengths of specific protocols and illustrate the benefits of providing flexibility in the choice of cache coherence protocol.
Mark A. Heinrich, Vijayaraghavan Soundararajan, John L. Hennessy, Anoop Gupta
IEEE Trans. Computers3
1998 Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors
abstract
Given the limitations of bus-based multiprocessors, CC-NUMA is the scalable architecture of choice for shared-memory machines. The most important characteristic of the CC-NUMA architecture is that the latency to access data on a remote node is considerably larger than the latency to access local memory. On such machines, good data locality can reduce memory stall time and is therefore a critical factor in application performance. In this paper we study the various options available to system designers to transparently decrease the fraction of data misses serviced remotely. This work is done in the context of the Stanford FLASH multiprocessor. FLASH is unique in that each node has a single pool of DRAM that can be used in a variety of ways by the programmable memory controller. We use the programmability of FLASH to explore different options for cache-coherence and data-locality in compute-server workloads. First, we consider two protocols for providing base cache-coherence, one with centralized directory information (dynamic pointer allocation) and another with distributed directory information (SCI). While several commercial systems are based on SCI, we find that a centralized scheme has superior performance. Next, we consider different hardware and software techniques that use some or all of the local memory in a node to improve data locality. Finally, we propose a hybrid scheme that combines hardware and software techniques. These schemes work on the same base platform with both user and kernel references from the workloads. The paper thus offers a realistic and fair comparison of replication/migration techniques that has not previously been feasible.
Vijayaraghavan Soundararajan, Mark A. Heinrich, Ben Verghese, Kourosh Gharachorloo, Anoop Gupta, John L. Hennessy
ISCA6
1997 Hardware/software co-design of the Stanford FLASH multiprocessor
abstract
Hardware/software co-design is a methodology for solving design problems in systems with processors or embedded controllers where the design requirements mandate a functionality and performance level for the system, independent of the hardware and software boundary. In addition to the challenges of functional correctness and total system performance, design time is often a critical factor. To design MAGIC, the programmable memory and communication controller for the Stanford FLASH multiprocessor, the authors employed a hardware/software co-design methodology. This methodology allowed them to concurrently design the hardware and software thereby reducing design time while simultaneously ensuring that the design would meet ambitious performance goals. Serializing the hardware and software design would have lengthened the design time and significantly increased the amount of redesign when the tradeoffs between the hardware and software implementations became clear late in the design process. The co-design approach led them to build a series of hierarchical simulators that allowed them to begin design verification early and to reduce the level of effort required to ensure a functional design.
Mark A. Heinrich, David Ofelt, Mark Horowitz, John L. Hennessy
Proc. IEEE4
1996 SoftFLASH: Analyzing the Performance of Clustered Distributed Virtual Shared Memory
abstract
One potentially attractive way to build large-scale shared-memory machines is to use small-scale to medium-scale shared-memory machines as clusters that are interconnected with an off-the-shelf network. To create a shared-memory programming environment across the clusters, it is possible to use a virtual shared-memory software layer. Because of the low latency and high bandwidth of the interconnect available within each cluster, there are clear advantages in making the clusters as large as possible. The critical question then becomes whether the latency and bandwidth of the top-level network and the software system are sufficient to support the communication demands generated by the clusters.To explore these questions, we have built an aggressive kernel implementation of a virtual shared-memory system using SGI multiprocessors and 100Mbyte/sec HIPPI interconnects. The system obtains speedups on 32 processors (four nodes, eight processors per node plus additional reserved protocol processors) that range from 6.9 on the communication-intensive FFT program to 21.6 on Ocean (both from the SPLASH 2 suite). In general, clustering is effective in reducing internode miss rates, but as the cluster size increases, increases in the remote latency, mostly due to increased TLB synchronization cost, offset the advantages. For communication-intensive applications, such as FFT, the overhead of sending out network requests, the limited network bandwidth, and the long network latency prevent the achievement of good performance. Overall, this approach still appears promising, but our results indicate that large low latency networks may be needed to make cluster-based virtual shared-memory machines broadly useful as large-scale shared-memory multiprocessors.
Andrew Erlichson, Neal Nuckolls, Greg Chesson, John L. Hennessy
ASPLOS4
1996 Application and Architectural Bottlenecks in Large Scale Distributed Shared Memory Machines
abstract
Many of the programming challenges encountered in small to moderate-scale hardware cache-coherent shared memory machines have been extensively studied. While work remains to be done, the basic techniques needed to efficiently program such machines have been well explored. Recently, a number of researchers have presented architectural techniques for scaling a cache coherent shared address space to much larger processor counts. In this paper, we examine the extent to which applications can achieve reasonable performance on such large-scale, cache-coherent, distributed shared address space machines, by determining the problems sizes needed to achieve a reasonable level of efficiency. We also look at how much programming effort and optimization is needed to achieve high efficiency, beyond that needed at small processor counts. For each application, we discuss the main architectural bottlenecks that prevent smaller problem sizes or less optimized programs from achieving good efficiency. Our results show that while there are some applications that either do not scale or must be heavily optimized to do so, for most of the applications we studied it is not necessary to heavily modify the code or restructure algorithms to scale well upto several hundred processors, once the basic techniques for load balancing and data locality are used that are needed for small-scale systems as well. Programs written with some care perform well without substantially compromising the ease of programming advantage of a shared address space, and the problem sizes required to achieve good performance are surprisingly small. It is important to be careful about how data structures and layouts interact with system granularities, but these optimizations are usually needed for moderate-scale machines as well.
Chris Holt, Jaswinder Pal Singh, John L. Hennessy
ISCA3
1995 Load Balancing and Data locality in Adaptive Hierarchical N-Body Methods: Barnes-Hut, Fast Multipole, and Rasiosity
Jaswinder Pal Singh, Chris Holt, Takashi Totsuka, Anoop Gupta, John L. Hennessy
J. Parallel Distributed Comput.5
1995 Implications of Hierarchical N-Body Methods for Multiprocessor Architectures
abstract
To design effective large-scale multiprocessors, designers need to understand the characteristics of the applications that will use the machines. Application characteristics of particular interest include the amount of communication relative to computation, the structure of the communication, and the local cache and memory requirements, as well as how these characteristics scale with larger problems and machines. One important class of applications is based on hierarchical N-body methods, which are used to solve a wide range of scientific and engineering problems efficiently. Important characteristics of these methods include the nonuniform and dynamically changing nature of the domains to which they are applied, and their use of long-range, irregular communication. This article examines the key architectural implications of representative applications that use the two dominant hierarchical N-body methods: the Barnes-Hut Method and the Fast Multipole Method. We first show that exploiting temporal locality on accesses to communicated data is critical to obtaining good performance on these applications and then argue that coherent caches on shared-address-space machines exploit this locality both automatically and very effectively. Next, we examine the implications of scaling the applications to run on larger machines. We use scaling methods that reflect the concerns of the application scientist and find that this leads to different conclusions about how communication traffic and local cache and memory usage scale than scaling based only on data set size. In particular, we show that under the most realistic form of scaling, both the communication-to-computation ratio as well as the working-set size (and hence the ideal cache size per processor) grow slowly as larger problems are run on larger machines. Finally, we examine the effects of using the two dominant abstractions for interprocessor communication: a shared address space and explicit message passing between private address spaces. We show that the lack of an efficiently supported shared address space will substantially increase the programming complexity and performance overheads for these applications.
Jaswinder Pal Singh, John L. Hennessy, Anoop Gupta
ACM Trans. Comput. Syst.2
1994 The Performance Impact of Flexibility in the Stanford FLASH Multiprocessor
abstract
A flexible communication mechanism is a desirable feature in multiprocessors because it allows support for multiple communication protocols, expands performance monitoring capabilities, and leads to a simpler design and debug process. In the Stanford FLASH multiprocessor, flexibility is obtained by requiring all transactions in a node to pass through a programmable node controller, called MAGIC. In this paper, we evaluate the performance costs of flexibility by comparing the performance of FLASH to that of an idealized hardwired machine on representative parallel applications and a multiprogramming workload. To measure the performance of FLASH, we use a detailed simulator of the FLASH and MAGIC designs, together with the code sequences that implement the cache-coherence protocol. We find that for a range of optimized parallel applications the performance differences between the idealized machine and FLASH are small. For these programs, either the miss rates are small or the latency of the programmable protocol can be hidden behind the memory access time. For applications that incur a large number of remote misses or exhibit substantial hot-spotting, performance is poor for both machines, though the increased remote access latencies or the occupancy of MAGIC lead to lower performance for the flexible design. In most cases, however, FLASH is only 2%–12% slower than the idealized machine.
Mark A. Heinrich, Jeffrey Kuskin, David Ofelt, John Heinlein, Joel Baxter, Jaswinder Pal Singh, Richard Simoni, Kourosh Gharachorloo, David Nakahira, Mark Horowitz, Anoop Gupta, Mendel Rosenblum, John L. Hennessy
ASPLOS13
1994 The Performance Advantages of Integrating Block Data Trabsfer in Cache-Coherent Multiprocessors
abstract
Integrating support for block data transfer has become an important emphasis in recent cache-coherent shared address space multiprocessors. This paper examines the potential performance benefits of adding this support. A set of ambitious hardware mechanisms is used to study performance gains in five important scientific computations that appear to be good candidates for using block transfer. Our conclusion is that the benefits of block transfer are not substantial for hardware cache-coherent multiprocessors. The main reasons for this are (i) the relatively modest fraction of time applications spend in communication amenable to block transfer, (ii) the difficulty of finding enough independent computation to overlap with the communication latency that remains after block transfer, and (iii) long cache lines often capture many of the benefits of block transfer in efficient cache-coherent machines. In the cases where block transfer improves performance, prefetching can often provide comparable, if not superior, performance benefits. We also examine the impact of varying important communication parameters and processor speed on the effectiveness of block transfer, and comment on useful features that a block transfer facility should support for real applications.
Steven Cameron Woo, Jaswinder Pal Singh, John L. Hennessy
ASPLOS3
1994 Evaluating the Memory Overhead Required for COMA Architectures
abstract
Cache only memory architectures (COMA) have an inherent memory overhead due to the organization of main memory as a large cache called an attraction memory. This overhead consists of memory left unallocated for performance reasons as well as additional physical memory required due to the cache organization of memory. The authors examine the effect of data reshuffling and data replication on the memory overhead. Data reshuffling occurs when space needs to be allocated to store a remote memory line in the local memory. Data that is reshuffled is sent between memories via replacement messages. A simple mathematical model predicts the frequency of data reshuffling as a function of the attraction memory parameters. Simulation data shows that the frequency of data reshuffling is sensitive to the allocation policy and associativity of the memory but is relatively unaffected by the block size chosen. The simulation data also shows that data replication in the attraction memory is important for good performance, but most gains can be achieved through replication in the processor caches.>
Truman Joe, John L. Hennessy
ISCA2
1994 The Stanford FLASH Multiprocessor
abstract
The FLASH multiprocessor efficiently integrates support for cache-coherent shared memory and high-performance message passing, while minimizing both hardware and software overhead. Each node in FLASH contains a microprocessor, a portion of the machine's global memory, a port to the interconnection network, The MAGIC chip handles all communication both within the node and among nodes, using hardwired data paths for efficient data movement and a programmable processor optimized for executing protocol operations. The use of the protocol processor makes FLASH very flexible/spl minus/it can support a variety of different communication mechanisms/spl minus/and simplifies the design and implementation. This paper presents the architecture of FLASH and MAGIC, and discusses the base cache-coherence and message-passing protocols. Latency and occupancy numbers, which are derived from our system-level simulator and our Verilog code, are given for several common protocol operations. The paper also describes our software strategy and FLASH's current status.>
Jeffrey Kuskin, David Ofelt, Mark A. Heinrich, John Heinlein, Richard Simoni, Kourosh Gharachorloo, John Chapin, David Nakahira, Joel Baxter, Mark Horowitz, Anoop Gupta, Mendel Rosenblum, John L. Hennessy
ISCA13
1994 False Sharing ans Spatial Locality in Multiprocessor Caches
abstract
The performance of the data cache in shared-memory multiprocessors has been shown to be different from that in uniprocessors. In particular, cache miss rates in multiprocessors do not show the sharp drop typical of uniprocessors when the size of the cache block increases. The resulting high cache miss rate is a cause of concern, since it can significantly limit the performance of multiprocessors. Some researchers have speculated that this effect is due to false sharing, the coherence transactions that result when different processors update different words of the same cache block in an interleaved fashion. While the analysis of six applications in the paper confirms that false sharing has a significant impact on the miss rate, the measurements also show that poor spatial locality among accesses to shared data has an even larger impact. To mitigate false sharing and to enhance spatial locality, we optimize the layout of shared data in cache blocks in a programmer-transparent manner. We show that this approach can reduce the number of misses on shared data by about 10% on average.>
Josep Torrellas, Monica S. Lam, John L. Hennessy
IEEE Trans. Computers3
1993 Data Locality and Load Balancing in COOL
abstract
Large-scale shared memory multiprocessors typically support a multilevel memory hierarchy consisting of per-processor caches, a local portion of shared memory, and remote shared memory. On such machines, the performance of parallel programs is often limited by the high latency of remote memory references. In this paper we explore how knowledge of the underlying memory hierarchy can be used to schedule computation and distribute data structures, and thereby improve data locality. Our study is done in the context of COOL, a concurrent object-oriented language developed at Stanford. We develop abstractions for the programmer to supply optional information about the data reference patterns of the program. This information is used by the runtime system to distribute tasks and objects so that the tasks execute close (in the memory hierarchy) to the objects they reference.
Rohit Chandra, Anoop Gupta, John L. Hennessy
PPoPP3
1993 A parallel adaptive fast multipole method
abstract
We present parallel versions of a representative N-body application that uses Greengard and Rokhlin's adaptive Fast Multipole Method (FMMJ While parallel implementations of the umform FMM are straightforward and have been developed on alfferent architectures, the aalzptive version complicates the task of obtaining eflective parallel peflormance owing to the nonunz~onn and dynamically changing nature of the problem &mains to which it is applied.We propose and evaluate two techniques for providing load balancing and data locality, both of which take advantageof key insights into the method and its typical applications.Using the better of these techm"ques, we demonstrate 45-fold speedups on galactic sinudations on a 48-processor Stanford DASH machine, a state-of-the-art shared address space multiprocessor even for relatively small problems.We also show good speedups on a 2-ring Kendall Square Research KSR-I.Finally we summarize some key architectural implications of this important computational method.Permission to copy without fee aft or pan of Ibis material is Sranted, provided that the copies am not made or distrit!uted for direct ccmtmerciaf advantage, the ACM copyright ndice and the tiUe of the ~bficstion and 54 its date appear, and notice is given that copyins is by permis$icm of the Association for Com@ing Machinery.To copy dheww, m to repubfish, requires 8 fee andh specific pxmission.
Jaswinder Pal Singh, Chris Holt, John L. Hennessy, Anoop Gupta
SC3
1993 An empirical comparison of the Kendall Square Research KSR-1 and Stanford DASH multiprocessors
abstract
Two interesting variants of large-scale shared-addressspace parallel architectures are cache-coherent non-uru~ormmemory-access machines (CC-NUMA) and cache-only memory architectures (COMA).Both have distributed main memory and use directory-based cache coherence.While both architectures m-grate and replicate data at the cache level automatically under hardware control, COIUA machines do this at the main memory level as well.Previous work had discussed the general advantages and disadvantages of the two opes of architectures, and presented results comparing the performance of small problems on simulated architectures of the two types.In this piper, we compare the parallel performance of a recent realizatwn of each type of architecturuhe Stanford DASH multiprocessor (CC-NUMA) and the Kendall Square Research KSR-1 (COMA).Using a suite of important computatwrtai kernels and complete scientific applicatwns, we examt"ne performance dl~erences resulting both from the CC-NUMAICOMA nature of the machines as well as from spectfii dt~erences in system implementation.
Jaswinder Pal Singh, Truman Joe, Anoop Gupta, John L. Hennessy
SC4
1993 The Accuracy of Trace-Driven Simulations of Multiprocessors
abstract
In trace-driven simulation, traces generated for one set of system characteristics are used to simulate a system with different characteristics. However, the execution path of a multiprocessor workload may depend on the order of events occurring on different processing elements. The event order, in turn, depends on system charcteristics such as memory-system latencies and buffer-sizes. Trace-driven simulations of multiprocessor workloads are inaccurate unless the dependencies are eliminated from the traces.We have measured the effects of these inaccuracies by comparing trace-driven simulations to direct simulations of the same workloads. The simulators predicted identical performance only for workloads whose traces were timing-independent. Workloads that used first-come first-served scheduling and/or non-deterministic algorithms produced timing-dependent traces, and simulation of these traces produced inaccurate performance predictions. Two types of performance metrics were particularly affected: those related to synchronization latency and those derived from relatively small numbers of events. To accurately predict such performance metrics, timing-independent traces or direct simulation should be used.
Stephen R. Goldschmidt, John L. Hennessy
SIGMETRICS2
1993 Compile-time Copy Elimination
abstract
Abstract Single‐assignment and functional languages have value semantics that do not permit side‐effects. This lack of side‐effects makes automatic detection of parallelism and optimization for data locality in programs much easier. However, the same property poses a challenge in implementing these languages efficiently. This paper describes an optimizing compiler system that solves the key problem of aggregate copy elimination. The methods developed rely exclusively on compile‐time algorithms, including interprocedural analysis, that are applied to an intermediate data flow representation. By dividing the problem into update‐in‐place and build‐in‐place analysis, a small set of relatively simple techniques—edge substitution, graph pattern matching, substructure sharing and substructure targeting—was found to be very powerful. If combined properly and implemented carefully, the algorithms eliminate unnecessary copy operations to a very high degree. No run‐time overhead is imposed on the compiled programs.
Peter Schnorf, Mahadevan Ganapathi, John L. Hennessy
Softw. Pract. Exp.3
1993 Mtool: An Integrated System for Performance Debugging Shared Memory Multiprocessor Applications
abstract
The authors describe Mtool, a software tool for analyzing performance losses in shared memory parallel programs. Mtool augments a program with low overhead instrumentation which perturbs the program's execution as little as possible while generating enough information to isolate memory and synchronization bottlenecks. After running the instrumented version of the parallel program, the programmer can use Mtool's window-based user interface to view compute time, memory, and synchronization objects. The authors describe Mtool's low overhead instrumentation methods, memory bottleneck detection technique, and attention focusing mechanisms, contrast Mtool with other approaches, and offer a case study to demonstrate its effectiveness.>
Aaron J. Goldberg, John L. Hennessy
IEEE Trans. Parallel Distributed Syst.2
1993 The DASH Prototype: Logic Overhead and Performance
abstract
The fundamental premise behind the DASH project is that it is feasible to build large-scale shared-memory multiprocessors with hardware cache coherence. The hardware overhead of directory-based cache coherence in a 48-processor is examined. The data show that the overhead is only about 10-15%, which appears to be a small cost for the ease of programming offered by coherent caches and the potential for higher performance. The performance of the system is discussed, and the speedups obtained by a variety of parallel applications running on the prototype are shown. Using a sophisticated hardware performance monitor, the effectiveness of coherent caches and the relationship between an application's reference behavior and its speedup are characterized. The optimizations incorporated in the DASH protocol are evaluated in terms of their effectiveness on parallel applications and on atomic tests that stress the memory system.>
Daniel Lenoski, James Laudon, Truman Joe, David Nakahira, Luis Stevens, Anoop Gupta, John L. Hennessy
IEEE Trans. Parallel Distributed Syst.7
1992 Characterizing the Caching and Synchronization Performance of a Multiprocessor Operating System
abstract
Good cache memory performance is essential to achieving high CPU utilization in shared-memory multiprocessors.While the performance of caches is determined by both application end operating system (OS ) references, most research has focused on the cache performance of applications afone.This is partiafly due to the difficulty of measuring OS activity and as a resrtl~the cache performance of the OS is largely unknown.In this paper, we characterize the cache performance of a commercial System V UNIX rtrttrtittg on a four-CPU multiprocessor.The related issue of the performance impact of the OS synchronization activity is tdso stttdicd.For our study, we use a hardware monitor that records the cache misses in the machine without perturbing it.We study three multiprocessor workloads: a parallel Compilq a multiprogrsmmed load and a commercial database.Our results show that OS misses occur frequently enough to stall CPUS for 17-21 'Yoof their non-idle time.Further, if we include application misses induced by OS interference in the cache, then the SQU time reaches 25%.A detailed analysis reveals three major sources of OS misses: instruction fetehea, process migratiom and data accesses in block operations.As for synchronization behavior, we find that OS syncfrrordzation has low overhead if supported correctly end that OS locks show good locality and low contention.
Josep Torrellas, Anoop Gupta, John L. Hennessy
ASPLOS3
1992 Hiding Memory Latency using Dynamic Scheduling in Shared-Memory Multiprocessors
abstract
The large latency of memory accesses is a major impediment to achieving high performance in large scale shared-memory multi-processsors. Relaxing the memory consistency model is an attractive technique for hiding this latency by allowing the overlap of memory accesses with other computation and memory accesses. Previous studies on relaxed models have shown that the latency of write accesses can be hidden by buffering writes and allowing reads to bypass pending writes. Hiding the latency of reads by exploiting the overlap allowed by relaxed models is inherently more difficult, however, simply because the processor depends on the return value for its future computation.
Kourosh Gharachorloo, Anoop Gupta, John L. Hennessy
ISCA3
1992 The DASH Prototype: Implementation and Performance
abstract
The fundamental premise behind the DASH project is that it is feasible to build large-scale shared-memory multiprocessors with hardware cache coherence. While paper studies and software simulators are useful for understanding many high-level design trade-offs, prototypes are essential to ensure that no critical details are overlooked. A prototype provides convincing evidence of the feasibility of the design allows one to accurately estimate both the hardware and the complexity cost of various features, and provides a platform for studying real workloads. A 16-processor prototype of the DASH multiprocessor has been operational for the last six months. In this paper, the hardware overhead of directory-based cache coherence in the prototype is examined. We also discuss the performance of the system, and the speedups obtained by parallel applications running on the prototype. Using a sophisticated hardware performance monitor, we characterize the effectiveness of coherent caches and the relationship between an application's reference behavior and its speedup.
Daniel Lenoski, James Laudon, Truman Joe, David Nakahira, Luis Stevens, Anoop Gupta, John L. Hennessy
ISCA7
1992 Sharlit - A Tool for Building Optimizers
abstract
This paper presents Sharlit, a tool to support the construction of modular and extensible global optimizers. We will show how Sharlit helps in constructing data-flow analyzers and the transformations that use data-flow analysis information, both are major components of any optimizer. Sharlit is implemented in C++ and uses C++ in the same way that YACC uses C. Thus we assume the reader has some familiarity with C++ [9].
Steven W. K. Tjiang, John L. Hennessy
PLDI2
1992 Programming for Different Memory Consistency Models
abstract
The memory consistency model, or memory model, supported by a shared-memory multiprocessor directly affects its performance. The most commonly assumed memory model is sequential consistency (SC). While SC provides a simple model for the programmer, it imposes rigid constraints on the ordering of memory accesses and restricts the use of common hardware and compiler optimizations. To remedy the shortcomings of SC, several relaxed memory models have been proposed in the literature. These include processor consistency (PC), weak ordering (WO), release consistency (RCsc/RCpc), total store ordering (TSO), and partial store ordering (PSO). While the relaxed models provide the potential for higher performance, they present a more complex model for programmers when compared to SC. Our previous research has addressed this tradeoff by taking a programmer-centric approach. We have proposed memory models (DRF0, DRF1, PL) that allow the programmer to reason with SC, but require certain information about the memory accesses. This information is used by the system to relax the ordering among memory accesses while still maintaining SC for the programmer. Our previous models formalized the information that allowed optimizations associated with WO and RCsc to be used. This paper extends the above approach by defining a new model, PLpc, that allows optimizations of the TSO, PSO, PC, and RCpc models as well. Thus, PLpc provides a unified programming model that maintains the ease of reasoning with SC while providing for efficiency and portability across a wide range of proposed system designs.
Kourosh Gharachorloo, Sarita V. Adve, Anoop Gupta, John L. Hennessy, Mark D. Hill
J. Parallel Distributed Comput.4
1992 Finding and Exploiting Parallelism in an Ocean Simulation Program: Experience, Results, and Implications
abstract
How to code and compile large application programs for execution on parallel processors is perhaps the biggest challenge facing the widespread adoption of multiprocessing. To gain insight into this problem, an ocean simulation application was converted to a parallel version. The parallel program demonstrated near-linear speed-up on an Encore Multimax, a 16-processor bus-based shared-memory machine. Parallelizing an existing sequential application—not just a single loop or computational kernel—leads to interesting insights about what issues are significant in the process of finding and implementing parallelism, and what the major challenges are. Three levels of approach to the problem of finding parallelism—loop-level parallelization, program restructuring, and algorithm modification—were attempted, with widely varying results. Loop-level parallelization did not scale sufficiently. High-level restructuring was useful for much of the application, but obtaining an efficient parallel program required algorithm changes to one portion of it. Implementation issues for scalable performance, such as data locality and synchronization, are also discussed. The nature, requirements, and success of the various transformations lend insight into the design of parallelizing tools and parallel programming environments.
Jaswinder Pal Singh, John L. Hennessy
J. Parallel Distributed Comput.2
1991 Performance Evaluation of Memory Consistency Models for Shared Memory Multiprocessors
abstract
The memory consistency model supported by a multiprocessor architecture determines the amount of buffering and pipelining
Kourosh Gharachorloo, Anoop Gupta, John L. Hennessy
ASPLOS3
1991 Multiprocessor Simulation and Tracing Using Tango
Helen Davis, Stephen R. Goldschmidt, John L. Hennessy
ICPP (2)3
1991 Two Techniques to Enhance the Performance of Memory Consistency Models
Kourosh Gharachorloo, Anoop Gupta, John L. Hennessy
ICPP (1)3
1991 MTOOL: A Method for Isolating Memory Bottlenecks in Shared Memory Multiprocessor Programs
Aaron J. Goldberg, John L. Hennessy
ICPP (2)2
1991 Comparative Evaluation of Latency Reducing and Tolerating Techniques
abstract
Techniques that can cope with the large latency of memory accesses are essential for achieving high processor utilization in large-scale shared-memory multiprocessors. In this paper, we consider four architectural techniques that address the latency problem: (i) hardware coherent caches, (ii) relaxed memory consistency, (iii) softwarecontrolled prefetching, and (iv) multiple-context support. While some studies of benefits of the individual techniques have been done, no study evaluates all of the techniques within a consistent framework. This paper attempts to remedy this by providing a comprehensive evaluation of the benefits of the four techniques, both individually and in combinations, using a consistent set of architectural assumptions. The results in this paper have been obtained using detailed simulations of a large-scale shared-memory multiprocessor. Our results show that caches and relaxed consistency uniformly improve performance. The improvements due to prefetching and multiple contexts are sizeable, but are much more applicationdependent. Combinations of the various techniques generally attain better performance than each one on its own. Overall, we show that using suitable combinations of the techniques, performance can be improved by 4 to 7 times.
Anoop Gupta, John L. Hennessy, Kourosh Gharachorloo, Todd C. Mowry, Wolf-Dietrich Weber
ISCA2
1991 Efficient and Exact Data Dependence Analysis
abstract
Data dependence testing is the basic step in detecting loop level parallelism in numerical programs. The problem is equivalent to integer linear programming and thus in general cannot be solved efficiently. Current methods in use employ inexact methods that sacrifice potential parallelism in order to improve compiler efficiency. This paper shows that in practice, data dependence can be computed exactly and efficiently. There are three major ideas that lead to this result. First, we have developed and assembled a small set of efficient algorithms, each one exact for special case inputs. Combined with a moderately expensive backup test, they are exact for all the cases we have seen in practice. Second, we introduce a memorization technique to save results of previous tests, thus avoiding calling the data dependence routines multiple times on the same input. Third, we show that this approach can both be extended to compute distance and direction vectors and to use unknown symbolic terms without any loss of accuracy or efficiency, We have implemented our algorithm in the SUIF system, a general purpose compiler system developed at Stanford. We ran the algorithm on the PERFECT Club Benchmarks and our data dependence analyzer gave an exact solution in all cases efficiently.
Dror E. Maydan, John L. Hennessy, Monica S. Lam
PLDI2
1991 Performance debugging shared memory multiprocessor programs with MTOOL
abstract
Article Free Access Share on Performance debugging shared memory multiprocessor programs with MTOOL Authors: Aaron J. Goldberg Department of Computer Science, Stanford University Department of Computer Science, Stanford UniversityView Profile , John L. Hennessy Computer Systems Laboratory, Stanford University Computer Systems Laboratory, Stanford UniversityView Profile Authors Info & Claims Supercomputing '91: Proceedings of the 1991 ACM/IEEE conference on SupercomputingAugust 1991 Pages 481–490https://doi.org/10.1145/125826.126075Online:01 August 1991Publication History 31citation529DownloadsMetricsTotal Citations31Total Downloads529Last 12 Months7Last 6 weeks1 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 Alerts New Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF
Aaron J. Goldberg, John L. Hennessy
SC2
1991 MTOOL: A Method for Detecting Memory Bottlenecks
abstract
This paper presents a new, relatively inexpensive method for detecting regions (e.g. loops and procedures) in a program where the memory hierarchy is performing poorly. By observing where actual measured execution time differs from the time predicted given a perfect memory system, we can isolate memory bottlenecks. MTOOL, an implementation of the approach aimed at applications programs running on MIPS-chip based workstations is described and results for some of the Perfect Club and SPEC benchmarks are summarized.
Aaron J. Goldberg, John L. Hennessy
SIGMETRICS2
1990 Estimating the Performance Advantages of Relaxing Consistency in a Shared Memory Multiprocessor
Josep Torrellas, John L. Hennessy
ICPP (1)2
1990 Share Data Placement Optimizations to Reduce Multiprocessor Cache Miss Rates
Josep Torrellas, Monica S. Lam, John L. Hennessy
ICPP (2)3
1990 Memory Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors
abstract
Scalable shared-memory multiprocessors distribute memory among the processors and use scalable interconnection networks to provide high bandwidth and low latency communication. In addition, memory accesses are cached, buffered, and pipelined to bridge the gap between the slow shared memory and the fast processors. Unless carefully controlled, such architectural optimizations can cause memory accesses to be executed in an order different from what the programmer expects. The set of allowable memory access orderings forms the memory consistency model or event ordering model for an architecture.
Kourosh Gharachorloo, Daniel Lenoski, James Laudon, Phillip B. Gibbons, Anoop Gupta, John L. Hennessy
ISCA6
1990 The Directory-Based Cache Coherence Protocol for the DASH Multiprocessor
abstract
DASH is a scalable shared-memory multiprocessor currently being developed at Stanford's Computer Systems Laboratory. The architecture consists of powerful processing nodes, each with a portion of the shared-memory, connected to a scalable interconnection network. A key feature of DASH is its distributed directory-based cache coherence protocol. Unlike traditional snoopy coherence protocols, the DASH protocol does not rely on broadcast; instead it uses point-to-point messages sent between the processors and memories to keep caches consistent. Furthermore, the DASH system does not contain any single serialization or control point. While these features provide the basis for scalability, they also force a reevaluation of many fundamental issues involved in the design of a protocol. These include the issues of correctness, performance and protocol complexity. In this paper, we present the design of the DASH coherence protocol and discuss how it addresses the above issues. We also discuss our strategy for verifying the correctness of the protocol and briefly compare our protocol to the IEEE Scalable Coherent Interface protocol.
Daniel Lenoski, James Laudon, Kourosh Gharachorloo, Anoop Gupta, John L. Hennessy
ISCA5
1990 Analysis of Critical Architectural and Program Parameters in a Hierarchical Shared Memory Multiprocessor
abstract
Scalable shared-memory multiprocessors are the subject of much current research, but little is known about the performance behavior of these machines. This paper studies the performance effects of two machine characteristics and two program characteristics that seem to be major factors in determining the performance of a hierarchical shared-memory machine. We develop an analytical model of the traffic in a machine loosely based on Stanford's DASH multiprocessor and use program parameters extracted from multiprocessor traces to study its performance. It is shown that both locality in the data reference stream and the amount of data sharing in a program have an important impact on performance. Although less obvious, the bandwidth within each cluster in the hierarchy also has a significant performance effect. Optimizations that improve the intracluster cache coherence protocol or increase the bandwidth within a cluster can be quite effective.
Josep Torrellas, John L. Hennessy, Thierry Weil
SIGMETRICS2
1990 A Spectral Lower Bound Techniqye for the Size of Decision Trees and Two Level AND/OR Circuits
abstract
A universal lower-bound technique for the size and other implementation characteristics of an arbitrary Boolean function as a decision tree and as a two-level AND/OR circuit is derived. The technique is based on the power spectrum coefficients of the n dimensional Fourier transform of the function. The bounds vary from constant to exponential and are tight in many cases. Several examples are presented.>
Yigal Brandman, Alon Orlitsky, John L. Hennessy
IEEE Trans. Computers3
1990 The Priority-Based Coloring Approach to Register Allocation
abstract
Global register allocation plays a major role in determining the efficacy of an optimizing compiler. Graph coloring has been used as the central paradigm for register allocation in modern compilers. A straightforward coloring approach can suffer from several shortcomings. These shortcomings are addressed in this paper by coloring the graph using a priority ordering. A natural method for dealing with the spilling emerges from this approach. The detailed algorithms for a priority-based coloring approach are presented and are contrasted with the basic graph-coloring algorithm. Various extensions to the basic algorithms are also presented. Measurements of large programs are used to determine the effectiveness of the algorithm and its extensions, as well as the causes of an imperfect allocation. Running time of the allocator and the impact of heuristics aimed at reducing that time are also measured.
Fred C. Chow, John L. Hennessy
ACM Trans. Program. Lang. Syst.2
1989 Characteristics of Performance-Optimal Multi-Level Cache Hierarchies
abstract
The increasing speed of new generation processors will exacerbate the already large difference between CPU cycle times and main memory access times. As this difference grows, it will be increasingly difficult to build single-level caches that are both fast enough to match these fast cycle times and large enough to effectively hide the slow main memory access times. One solution to this problem is to use a multi-level cache hierarchy. This paper examines the relationship between cache organization and program execution time for multi-level caches. We show that a first-level cache dramatically reduces the number of references seen by a second-level cache, without having a large effect on the number of second-level cache misses. This reduction in the number of second-level cache hits changes the optimal design point by decreasing the importance of the cycle-time of the second-level cache relative to its size. The lower the first-level cache miss rate, the less important the second-level cycle time becomes. This change in relative importance of cycle time and miss rate makes associativity more attractive and increases the optimal cache size for second-level caches over what they would be for an equivalent single-level cache system.
Steven A. Przybylski, Mark Horowitz, John L. Hennessy
ISCA3
1989 Copy Elimination in Functional Languages
abstract
Copy elimination is an important optimization for compiling functional languages. Copies arise because these languages lack the concepts of state and variable; hence updating an object involves a copy in a naive implementation. Copies are also possible if proper targeting has not been carried out inside functions and across function calls. Targeting is the proper selection of a storage area for evaluating an expression. By abstracting a collection of functions by a target operator, we compute targets of function bodies that can then be used to define an optimized interpreter to eliminate copies due to updates and copies across function calls. The language we consider is typed lambda calculus with higher-order functions and special constructs for array operations. Our approach can eliminate copies in divide and conquer problems like quicksort and bitonic sort that previous approaches could not handle.
K. Gopinath, John L. Hennessy
POPL2
1989 An Analytical Cache Model
abstract
Trace-driven simulation and hardware measurement are the techniques most often used to obtain accurate performance figures for caches. The former requires a large amount of simulation time to evaluate each cache configuration while the latter is restricted to measurements of existing caches. An analytical cache model that uses parameters extracted from address traces of programs can efficiently provide estimates of cache performance and show the effects of varying cache parameters. By representing the factors that affect cache performance, we develop an analytical model that gives miss rates for a given trace as a function of cache size, degree of associativity, block size, subblock size, multiprogramming level, task switch interval, and observation interval. The predicted values closely approximate the results of trace-driven simulations, while requiring only a small fraction of the computation cost.
Anant Agarwal, Mark Horowitz, John L. Hennessy
ACM Trans. Comput. Syst.3
1989 A Simple Interprocedural Register Allocation Algorithm and Its Effectiveness for Lisp
abstract
Register allocation is an important optimization in many compilers, but with per-procedure register allocation, it is often not possible to make good use of a large register set. Procedure calls limit the improvement from global register allocation, since they force variables allocated to registers to be saved and restored. This limitation is more pronounced in LISP programs due to the higher frequency of procedure calls. An interprocedural register allocation algorithm is developed by simplifying a version of interprocedural graph coloring. The simplification corresponds to a bottom-up coloring of the interference graph. The scheme is evaluated using a number of LISP programs. The evaluation considers the scheme's limitations and compares these “software register windows” against the hardware register windows used in the Berkeley RISC and SPUR processors.
Peter Steenkiste, John L. Hennessy
ACM Trans. Program. Lang. Syst.2
1988 An Evaluation of Directory Schemes for Cache Coherence
abstract
The problem of cache coherence in shared-memory multiprocessors is addressed using two basic approaches: directory schemes and snoopy cache systems. Directory schemes for cache coherence are potentially attractive in large multiprocessor systems that are beyond the scaling limits of the snoopy cache schemes. Slight modifications to directory schemes can make them competitive in performance with snoopy cache schemes for small multiprocessors. Trace-driven simulation, using data collected from several real multiprocessor applications, is used to compare the performance of standard directory schemes, modifications to these schemes, and snoopy cache protocols. In addition, the simulations show that most blocks that are written into are present in only a small number of other caches, which makes broadcast invalidates inefficient. This result suggests that a directory structure that stores with each block only a small number of pointers to caches containing the block is sufficient.>
Anant Agarwal, Richard Simoni, John L. Hennessy, Mark Horowitz
ISCA3
1988 Performance Tradeoffs in Cache Design
abstract
A series of simulations that explore the interactions between various organizational decisions and program execution time are presented. The tradeoffs between cache size and CPU/cache cycle-time, set associativity and cycle time, and block size and main-memory speed, are investigated. The results indicate that neither cycle time nor cache size dominates the other across the entire design space. For common implementation technologies, performance is maximized when the size is increased to the size is increased to the 32-kB to 128-kB range with modest penalties to the cycle time. If set associativity impacts the cycle time by more than a few nanoseconds, it increases overall execution time. Since the block size and memory-transfer rate combine to affect the cache miss penalty, the optimum block size is substantially smaller than that which minimizes the miss rate. The interdependence between optimal cache configuration and the main memory speed necessitates multilevel cache hierarchies for high-performance uniprocessors.>
Steven A. Przybylski, Mark Horowitz, John L. Hennessy
ISCA3
1988 Cache Performance of Operating System and Multiprogramming Workloads
abstract
Large caches are necessary in current high-performance computer systems to provide the required high memory bandwidth. Because a small decrease in cache performance can result in significant system performance degradation, accurately characterizing the performance of large caches is important. Although measurements on actual systems have shown that operating systems and multiprogramming can affect cache performance, previous studies have not focused on these effects. We have developed a program tracing technique called ATUM (Address Tracing Using Microcode) that captures realistic traces of multitasking workloads including the operating system. Examining cache behavior using these traces from a VAX processor shows that both the operating system and multiprogramming activity significantly degrade cache performance, with an even greater proportional impact on large caches. From a careful analysis of the causes of this degradation, we explore various techniques to reduce this loss. While seemingly little can be done to mitigate the effect of system references, multitasking cache miss activity can be substantially reduced with small hardware additions.
Anant Agarwal, John L. Hennessy, Mark Horowitz
ACM Trans. Comput. Syst.2
1988 Measurement and Evaluation of the MIPS Architecture and Processor
abstract
MIPS is a 32-bit processor architecture that has been implemented as an nMOS VLSI chip. The instruction set architecture is RISC-based. Close coupling with compilers and efficient use of the instruction set by compiled programs were goals of the architecture. The MIPS architecture requires that the software implement some constraints in the design that are normally considered part of the hardware implementation. This paper presents experimental results on the effectiveness of this processor as a program host. Using sets of large and small benchmarks, the instruction and operand usage patterns are examined both for optimized and unoptimized code. Several of the architectural and organizational innovations in MIPS, including software pipeline scheduling, multiple-operation instructions, and word-based addressing, are examined in light of this data.
Thomas R. Gross, John L. Hennessy, Steven A. Przybylski, Chris Rowen
ACM Trans. Comput. Syst.2
1987 Tags and Type Checking in Lisp: Hardware and Software Approaches
abstract
One of the major factors that distinguishes LISP from many other languages (Pascal, C, Fortran, etc.) is the need for run-time type checking. Run-time type checking is implemented by adding to each data object a tag that encodes type information. Tags must be compared for type compatibility, removed when using the data, and inserted when new data items are created. This tag manipulation, together with other work related to dynamic type checking and generic operations, constitutes a significant component of the execution time of LISP programs. This has led both to the development of LISP machines that support tag checking in hardware and to the avoidance of type checking by users running on stock hardware. To understand the role and necessity of special-purpose hardware for tag handling, we first measure the cost of type checking operations for a group of LISP programs. We then examine hardware and software implementations of tag operations and estimate the cost of tag handling with the different tag implementation schemes. The data shows that minimal levels of support provide most of the benefits, and that tag operations can be relatively inexpensive, even when no special hardware support is present.
Peter Steenkiste, John L. Hennessy
ASPLOS2
1986 Reducing the Cost of Branches
abstract
Pipelining is the major organizational technique that computers use to reach higher single-processor performance. A fundamental disadvantage of pipelining is the loss incurred due to branches that require stalling or flushing the pipeline. Both hardware solutions and architectural changes have been proposed to overcome these problems. This paper examines a range of schemes for reducing branch cost focusing on both static (compile-time) and dynamic (hardware-assisted) prediction of branches. These schemes are investigated from quantitative performance and implementation viewpoints. 1
Scott McFarling, John L. Hennessy
ISCA2
1985 SWAMI: a flexible logic implementation system
abstract
A new system for logic synthesis and VLSI layout, the Stanford Weinberger Array Minimizer and Implementor (SWAMI), has been developed. This paper describes the system's algorithms and presents preliminary results. The minimization of logic expressions uses local sum-of-products minimization, kernel factorization and common subexpression recognition and generates improved expressions of arbitrary depth. Logic expressions are realized in nMOS technology using one dimensional Weinberger array structures or a new extension of Weinberger arrays to two dimensions. The placement phase uses heuristic techniques, including simulated annealing. MIN-CUT linear arrangement and local constructive clustering.
Chris Rowen, John L. Hennessy
DAC2
1984 VLSI Processor Architecture
abstract
A processor architecture attempts to compromise between the needs of programs hosted on the architecture and the performance attainable in implementing the architecture. The needs of programs are most accurately reflected by the dynamic use of the instruction set as the target for a high level language compiler. In VLSI, the issue of implementation of an instruction set architecture is significant in determining the features of the architecture. Recent processor architectures have focused on two major trends: large microcoded instruction sets and simplified, or reduced, instruction sets. The attractiveness of these two approaches is affected by the choice of a single-chip implementation. The two different styles require different tradeoffs to attain an implementation in silicon with a reasonable area. The two styles consume the chip area for different purposes, thus achieving performance by different strategies. In a VLSI implementation of an architecture, many problems can arise from the base technology and its limitations. Although circuit design techniques can help alleviate many of these problems, the architects must be aware of these limitations and understand their implications at the instruction set level.
John L. Hennessy
IEEE Trans. Computers1
1983 Postpass Code Optimization of Pipeline Constraints
abstract
Pipeline interlocks are used in a pipelined architecture to prevent the execution of a machine instruction before its operands are available.An alternative to this complex piece of hardware is to rearrange the instructions at compile time to avoid pipeline interlocks.This problem is called code reorganization and is studied here.The basic problem of reorganization of machine-level instructions at compile time is shown to be NP-complete.A heuristic algorithm is proposed, and its properties and effectiveness are explored.Empirical data from MIPS, a VLSI processor design, are given.The impact of code reorganization techniques on the rest of a compiler system is discussed.
John L. Hennessy, Thomas R. Gross
ACM Trans. Program. Lang. Syst.1
1982 Hardware/Software Tradeoffs for Increased Performance
abstract
Most new computer architectures are concerned with maximizing performance by providing suitable instruction sets for compiled code and providing support for systems functions. We argue that the most effective design methodology must make simultaneous tradeoffs across all three areas: hardware, software support, and systems support. Recent trends lean towards extensive hardware support for both the compiler and operating systems software. However, consideration of all possible design tradeoffs may often lead to less hardware support. Several examples of this approach are presented, including: omission of condition codes, word-addressed machines, and imposing pipeline interlocks in software. The specifics and performance of these approaches are examined with respect to the MIPS processor.
John L. Hennessy, Norman P. Jouppi, Forest Baskett, Thomas R. Gross, John Gill
ASPLOS1
1982 Code Generation and Reorganization in the Presence of Pipeline Constraints
abstract
Pipeline interlocks are used in a pipelined architecture to prevent the execution of a machine instruction before its operands are available. An alternative to this complex piece of hardware is to rearrange the instructions at compile-time to avoid pipeline interlocks. This problem, called code reorganization, is studied. The basic problem of reorganization of machine level instructions at compile-time is shown to be NP-complete. A heuristic algorithm is proposed and its properties and effectiveness are explored. The impact of code reorganization techniques on the rest of a compiler system are discussed.
John L. Hennessy, Thomas R. Gross
POPL1
1982 The Design and Implementation of Parametric Types in Pascal
abstract
Abstract Parametric types offer an attractive solution to the problems of dealing with arrays in Pascal. These problems arise from the use of strong, static type checking, especially of array‐type procedure arguments. Parametric types provide solutions both for the array procedure argument problem and allow the consistent inclusion of arrays with dynamic bounds. A parametric type mechanism is proposed and design issues are discussed. The inclusion of parametric types has major effects on the implementation of a language like Pascal. The implementation issues and implementation versus design tradeoffs are examined. The implementation strategy used can be extended to accommodate the standard and generic types in Ada.
John L. Hennessy, Hilding Elmquist
Softw. Pract. Exp.1
1982 Compilation of the Pascal Case Statement
abstract
Abstract Pascal case statements can be compiled using a variety of methods, including comparison trees and branch tables. The scheme discussed here combines the two techniques to allow comparison trees with entries that are branch tables. The use of a combination of the two techniques is shown to adapt well to certain instances of case statements. Extensions to the standard case statement also require such a scheme to obtain an efficient implementation.
John L. Hennessy, Noah Mendelsohn
Softw. Pract. Exp.1
1982 Symbolic Debugging of Optimized Code
abstract
of Optimized
John L. Hennessy
ACM Trans. Program. Lang. Syst.1
1981 Program Optimization and Exception Handling
abstract
Optimization of programs that may contain exception handling facilities requires new techniques. Program optimizations that do not account for exception handling facilities may incorrectly transform a procedure that can raise an exception, producing different results from the unoptimized version. Restricted exception handling mechanisms that allow optimization are discussed. Data flow equations for determining the effects of exception handling are presented.
John L. Hennessy
POPL1
1981 WSClock - A Simple and Effective Algorithm for Virtual Memory Management
abstract
A new virtual memory management algorithm WSCLOCK has been synthesized from the local working set (WS) algorithm, the global CLOCK algorithm, and a new load control mechanism for auxiliary memory access. The new algorithm combines the most useful feature of WS—a natural and effective load control that prevents thrashing—with the simplicity and efficiency of CLOCK. Studies are presented to show that the performance of WS and WSCLOCK are equivalent, even if the savings in overhead are ignored.
Richard W. Carr, John L. Hennessy
SOSP2
1981 The Formal Definition of a Real-Time Language
John L. Hennessy, Richard B. Kieburtz
Acta Informatica1
1980 An Interactive Graphics System for custom design
abstract
The Interactive Graphics System/370 (IGS/370) is one of a series of highly interactive programs [1][2] used extensively within IBM for the design of multiplanar chips, macros, modules, cards, and boards. The programs were developed for IBM's internal use and are not marketed by IBM. This paper describes the hardware and system software environment and the design functions, capacity and performance of IGS/370. The geometric descriptions and associated attributes defining the LSI devices are entered by a beam-directed refresh cathode ray tube, a digitizer, or a graphics interface language. Many capabilities exist for the creation and modification of all phases of design. Data library items called cells, consisting of rectangles, lines, polygons, circles, alphanumerics, attributes and references to other cells, are created, edited and manipulated into a final design. These final designs, output in the graphics interface language, then become source data for the checking and post-processing programs which result in the manufactured product.
P. Carmody, A. M. Barone, J. K. Morrell, A. Weiner, John L. Hennessy
DAC5
1980 Parallelism and Representation Problems in Distributed Systems
abstract
A hierarchical view of program representation is used to explain the problems of matching various representations to underlying distributed architectures. If a program is to effectively use a distributed computer system, it is necessary to represent and detect a high degree of parallelism. Methods of detecting such parallelism and their limitations are discussed. The actual machine level representation of a high-level language program also affects the ability to achieve a good match between the computer system resources and the program. The concept of an ideal machine for the program leads naturally to a representation employing a directly executed language. The initial program representation profoundly influences the possibility of obtaining a good representation at other levels of the hierarchy. A poor initial language representation leads to unnecessary architectural contraints or insufficient information to efficiently execute a program. The issue of suitable initial representation for distributed hardware is approached employing a functional language basis.
Michael J. Flynn, John L. Hennessy
IEEE Trans. Computers2