Demo Data from SIGIR 2026 / reviewers in the wild / expert
Mark A. Heinrich
dblp:06/3163 · also Mark Heinrich
· DBLP profile ↗
23ranked-venue papers
3as first author
2since 2021 · last 2025
0000-0002-2843-5503ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Systems, architecture and hardware · 20 · 2 first-author · 2 since 2021Software engineering, systems software and programming languages · 8 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 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
19 papers |
Performance modeling and evaluation · 41% Memory systems · 39% Storage systems · 5% | |
| Software engineering, system software, and programming languages
1 paper |
Program analysis · 50% Program verification · 50% |
Topics — the 30 heaviest of 45, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Memory systems › non-volatile memory
persistent memory |
0.7 | 1 | 2023 | Hardware Support for Durable Atomic Instructions for Persistent Parallel Programming · DAC 2023 |
Performance modeling and evaluation
simulation |
0.5 | 3 | 2020 | KnightSim: A Fast Discrete Event-Driven Simulation Methodology for Computer Architectural Simulation · IEEE Trans. Computers 2020 Digital System Simulation: Methodologies and Examples · DAC 1998 Hardware/software co-design of the Stanford FLASH multiprocessor · Proc. IEEE 1997 |
Performance modeling and evaluation › simulation
discrete-event simulation |
0.4 | 1 | 2020 | KnightSim: A Fast Discrete Event-Driven Simulation Methodology for Computer Architectural Simulation · IEEE Trans. Computers 2020 |
Performance modeling and evaluation › simulation › parallel and distributed simulation
parallel simulation |
0.4 | 1 | 2020 | KnightSim: A Fast Discrete Event-Driven Simulation Methodology for Computer Architectural Simulation · IEEE Trans. Computers 2020 |
Memory systems
cache coherence |
0.3 | 8 | 2007 | Integrated Memory Controllers with Parallel Coherence Streams · IEEE Trans. Parallel Distributed Syst. 2007 Exploring Virtual Network Selection Algorithms in DSM Cache Coherence Protocols · IEEE Trans. Parallel Distributed Syst. 2004 The Impact of Negative Acknowledgments in Shared Memory Scientific Applications · IEEE Trans. Parallel Distributed Syst. 2004 |
Memory systems › cache coherence
cache coherence protocol |
0.2 | 4 | 2023 | Hardware Support for Durable Atomic Instructions for Persistent Parallel Programming · DAC 2023 A Quantitative Analysis of the Performance and Scalability of Distributed Shared Memory · IEEE Trans. Computers 1999 SMTp: An Architecture for Next-generation Scalable Multi-threading · ISCA 2004 |
Storage systems
crash consistency |
0.2 | 1 | 2023 | Hardware Support for Durable Atomic Instructions for Persistent Parallel Programming · DAC 2023 |
Performance modeling and evaluation › simulation
architectural simulation |
0.2 | 2 | 2020 | KnightSim: A Fast Discrete Event-Driven Simulation Methodology for Computer Architectural Simulation · IEEE Trans. Computers 2020 FLASH vs. (Simulated) FLASH: Closing the Simulation Loop · ASPLOS 2000 |
Memory systems › shared memory
distributed shared memory |
0.1 | 5 | 2004 | SMTp: An Architecture for Next-generation Scalable Multi-threading · ISCA 2004 Cache-coherent distributed shared memory: perspectives on its development and future challenges · Proc. IEEE 1999 Exploring Virtual Network Selection Algorithms in DSM Cache Coherence Protocols · IEEE Trans. Parallel Distributed Syst. 2004 |
Memory systems
memory controller |
0.1 | 1 | 2007 | Integrated Memory Controllers with Parallel Coherence Streams · IEEE Trans. Parallel Distributed Syst. 2007 |
Processor architecture and microarchitecture
multiprocessor architecture |
0.0 | 4 | 1999 | 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 |
Interconnection networks and networks-on-chip › routing algorithms
deadlock-free routing |
0.0 | 1 | 2004 | Exploring Virtual Network Selection Algorithms in DSM Cache Coherence Protocols · IEEE Trans. Parallel Distributed Syst. 2004 |
Processor architecture and microarchitecture
multithreading |
0.0 | 1 | 2004 | SMTp: An Architecture for Next-generation Scalable Multi-threading · ISCA 2004 |
Memory systems
protocol optimization |
0.0 | 1 | 2004 | The Impact of Negative Acknowledgments in Shared Memory Scientific Applications · IEEE Trans. Parallel Distributed Syst. 2004 |
Processor architecture and microarchitecture › multithreading
simultaneous multithreading |
0.0 | 1 | 2004 | SMTp: An Architecture for Next-generation Scalable Multi-threading · ISCA 2004 |
Interconnection networks and networks-on-chip
virtual channels |
0.0 | 1 | 2004 | Exploring Virtual Network Selection Algorithms in DSM Cache Coherence Protocols · IEEE Trans. Parallel Distributed Syst. 2004 |
Interconnection networks and networks-on-chip
cluster interconnect |
0.0 | 1 | 2003 | Active I/O Switches in System Area Networks · HPCA 2003 |
Parallel and multicore computing › multiprocessor system › shared-memory multiprocessor
distributed shared-memory multiprocessor |
0.0 | 1 | 2003 | Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance Evaluation · IEEE Trans. Computers 2003 |
Interconnection networks and networks-on-chip
in-network computing |
0.0 | 1 | 2003 | Active I/O Switches in System Area Networks · HPCA 2003 |
Parallel and multicore computing › parallel computing
parallel application performance |
0.0 | 1 | 2003 | Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance Evaluation · IEEE Trans. Computers 2003 |
Electronic design automation
hardware/software co-design |
0.0 | 2 | 1998 | Digital System Simulation: Methodologies and Examples · DAC 1998 Hardware/software co-design of the Stanford FLASH multiprocessor · Proc. IEEE 1997 |
Memory systems › cache coherence
cache-coherent shared memory |
0.0 | 2 | 1999 | Cache-coherent distributed shared memory: perspectives on its development and future challenges · Proc. IEEE 1999 The Stanford FLASH Multiprocessor · ISCA 1994 |
Parallel and multicore computing › multiprocessor system
shared-memory multiprocessor |
0.0 | 3 | 2004 | Architectural Support for Uniprocessor and Multiprocessor Active Memory Systems · IEEE Trans. Computers 2004 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 |
Program verification › invariant verification
invariant checking |
0.0 | 1 | 2000 | Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000 |
Program analysis › program analysis infrastructure
meta-level compilation |
0.0 | 1 | 2000 | Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000 |
Program verification › protocol verification
protocol code verification |
0.0 | 1 | 2000 | Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000 |
Program analysis
static analysis |
0.0 | 1 | 2000 | Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000 |
Processor architecture and microarchitecture
chip multiprocessor |
0.0 | 1 | 2007 | Integrated Memory Controllers with Parallel Coherence Streams · IEEE Trans. Parallel Distributed Syst. 2007 |
Memory systems
data locality |
0.0 | 1 | 1998 | Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors · ISCA 1998 |
Distributed systems
data replication and migration |
0.0 | 1 | 1998 | Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM Multiprocessors · ISCA 1998 |
Methods — techniques the papers use, named apart from their topics
hardware support for atomic instructions · 0.7parallel implementation · 0.4event engine optimization · 0.4simulation · 0.3analytical modeling · 0.1system-specific checkers · 0.1meta-level compilation · 0.1execution-driven simulation · 0.0address remapping · 0.0hardware gold-standard comparison · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2025 | Persistent Memory Objects on the CheapabstractPersistent Memory Objects (PMOs) are the state-of-the-art OS-based approach for persistent memory (PM) management.Recent PMO designs have limited performance due to the properties of the PM substrate.To address this challenge, this paper introduces LPMO, or lightweight PMOs, that enables two key performance optimization techniques: softwarebased DRAM caching and prediction.First, through DRAM caching, LPMO moves reads/writes to a faster medium, while retaining crash consistency.Second, LPMO introduces softwarebased predecryption to predict when pages might be used and decrypt them ahead of time.Our evaluation shows that software-based DRAM Caching and software-based predecryption with LPMO can improve the performance of a PMO system by up to 1.25× compared to the prior state-of-the-art implementations when using LPMO locally.When bundled with a stream predictor, the improvement reaches 1.81×, depending on the workload.To further demonstrate the flexibility and performance benefits of our LPMO design, we evaluated our solution in a CXL memory system and introduce a CXL memory hierarchy that our LPMO system can configure.In such a CXL Derrick Greenspan, Naveed Ul Mustafa, Jongouk Choi, Mark A. Heinrich, Yan Solihin |
ICS | 4 |
| 2023 | Hardware Support for Durable Atomic Instructions for Persistent Parallel ProgrammingabstractPersistent memory is emerging as an attractive main memory fabric capable of hosting persistent data. However, its programmability is hampered by the lack of persistent synchronization primitives. Atomic instructions are immensely useful for higher-level synchronization (locks and barriers) and for supporting lock-free data structures, but they have no durable/persistent version. In this paper, we propose a new approach to solve the problem: durable atomic instructions (DAIs). We show that DAIs can be supported with minor hardware support (low-cost modifications to the cache coherence protocol), and simultaneously achieve high performance, scalability, and crash consistency. Khan Shaikhul Hadi, Naveed Ul Mustafa, Mark A. Heinrich, Yan Solihin |
DAC | 3 |
| 2020 | KnightSim: A Fast Discrete Event-Driven Simulation Methodology for Computer Architectural SimulationabstractIn this paper we introduce a fast discrete event-driven simulation methodology, called KnightSim, that is intended for use in the development of future computer architectural simulations. KnightSim extends an older event-driven simulation library by (1) incorporating corrections to functional issues that were introduced by the recent additions of stack protection, pointer mangling, and source fortification in the Linux software stack, (2) incorporating optimizations to the event engine, and (3) introducing a novel parallel implementation. KnightSim implements events as independently executable x86 “KnightSim Contexts”. KnightSim Contexts comprise a mechanism for fast context execution and automatically model occupancy and contention, which readily lends itself to use in computer architectural simulations. We present the implementation methodologies of KnightSim and Parallel KnightSim with a detailed performance analysis. Our performance analysis makes direct comparisons between KnightSim, Parallel KnightSim, and the discrete event-driven simulation engines found in three different mainstream computer architectural simulators. Our results show that on average KnightSim achieves speedups of 2.8 to 11.9 over the other discrete event-driven simulation engines. Our results also show that on average Parallel KnightSim can achieve speedups over KnightSim of 1.89, 3.33, 5.84, and 9.24 for 2, 4, 8, and 16 threaded executions respectively. Christopher E. Giles, Christina L. Peterson, Mark A. Heinrich |
IEEE Trans. Computers | 3 |
| 2017 | M2S-CGM: A Detailed Architectural Simulator for Coherent CPU-GPU SystemsabstractWe introduce M2S-CGM a detailed architectural simulator that models the interactions between CPUs and GPUs operating in coherent heterogeneous compute environments. M2S-CGM extends an existing and established x86 CPU model and Southern Islands GPU model, adds a new custom-built memory system model and switching fabric called CGM, and incorporates a well-known SDRAM model. The CGM memory system simulator provides configurable entire system simulation and can support a range of non-coherent and coherent CPU-GPU configurations. M2S-CGM supports the runtime for OpenCL-based benchmarks in addition to traditional multithreaded CPU benchmarks and can run benchmarks from established heterogeneous benchmark collections. This allows us to experiment with different coherent CPU-GPU configurations and propose effective future improvements in these systems. We present the makeup of M2S-CGM's software architectural design, provide a validation of the simulator, and provide coherent CPU-GPU execution results. Our validation results show average differences between our physical test system and M2S-CGM, of 10.4%, 22%, and 6.4% for 2 threaded, 4 threaded, and heterogeneous benchmark runs respectively. Our coherent CPU-GPU experimental results show an average speedup of 2.8 for our benchmarks over the baseline noncoherent system. Christopher E. Giles, Mark A. Heinrich |
ICCD | 2 |
| 2007 | Simplifying Active Memory Clusters by Leveraging Directory Protocol ThreadsabstractAddress re-mapping techniques in so-called active memory systems have been shown to dramatically increase the performance of applications with poor cache and/or communication behavior on shared memory multiprocessors. However, these systems require custom hardware in the memory controller for cache line assembly/disassembly, address translation between re-mapped and normal addresses, and coherence logic. In this paper we make the important observation that on a traditional flexible distributed shared memory (DSM) multiprocessor node, equipped with a coherence protocol thread context as in SMTp or a simple dedicated in-order protocol processing core as in a CMP, the address re-mapping techniques can be implemented in software running on the protocol thread or core without custom hardware in the memory controller while delivering high performance. We implement the active memory address re-mapping techniques of parallel reduction and matrix transpose (two popular kernels in scientific, multimedia, and data mining applications) on these systems, outline the novel coherence protocol extensions needed to make them run efficiently in software protocols, and evaluate these protocols on four different DSM multiprocessor architectures with multi-threaded and/or dual-core nodes. The proposed protocol extensions yield speedup of 1.45 for parallel reduction and 1.29 for matrix transpose on a 16-node DSM multiprocessor when compared to non-active memory baseline systems and achieve performance comparable to the existing active memory architectures that rely on custom hardware in the memory controller Dhiraj D. Kalamkar, Mainak Chaudhuri, Mark A. Heinrich |
ISPASS | 3 |
| 2007 | Integrated Memory Controllers with Parallel Coherence StreamsabstractPrevious work in scalable hardware distributed shared memory (DSM) multiprocessors has established the critical and dominant role that protocol processing bandwidth (or its inverse, occupancy) plays in determining overall performance in architectures with standalone memory/coherence controllers. However, with recent architectural trends toward integrated (on-chip) memory controllers and the well-known fact that processor frequency is increasing more rapidly than memory systems, we must ask whether parallel coherence processing engines (either multiple integrated protocol processors/cores or multiple protocol threads) are needed in DSM machines constructed from modern processor architectures and, if so, when. We construct a useful analytical model to give the designer insight into when parallel coherence streams will improve performance and verify our model via detailed simulation on 64-threaded microbenchmarks and parallel applications and on single-node multiprogrammed workloads. Surprisingly, and contrary to related work, we find that, in these architectures, adding a second coherence engine has almost no impact on performance. Further, for less-tuned applications that suffer from hot spots (contentious requests to the same memory line), additional engines offer no benefit whatsoever. Even with double the memory bandwidth (or channels), an additional coherence processing stream yields only slight performance improvement. Only for a special class of DSM machines employing directoryless broadcast protocols over unordered interconnects does parallel "snoop" processing offer reasonable performance improvement for communication-intensive applications. Overall, given the architectural trends, this is good news for DSM designers who want to minimize the resources necessary (protocol threads or integrated protocol processor cores for maintaining internode coherence, respectively) to create SMTp-based or multi-CMP-based scalable DSM machines using directory protocols. Mainak Chaudhuri, Mark A. Heinrich |
IEEE Trans. Parallel Distributed Syst. | 2 |
| 2004 | SMTp: An Architecture for Next-generation Scalable Multi-threadingabstractWe introduce the SMTp architecture - an SMT processor augmented with a coherence protocol thread context, that together with a standard integrated memory controller can enable the design of (among other possibilities) scalable cache-coherent hardware distributed shared memory (DSM) machines from commodity nodes. We describe the minor changes needed to a conventional out-of-order multi-threaded core to realize SMTp, discussing issues related to both deadlock avoidance and performance. We then compare SMTp performance to that of various conventional DSM machines with normal SMT processors both with and without integrated memory controllers. On configurations from 1 to 32 nodes, with 1 to 4 application threads per node, we find that SMTp delivers performance comparable to, and sometimes better than, machines with more complex integrated DSM-specific memory controllers. Our results also show that the protocol thread has extremely low pipeline overhead. Given the simplicity and the flexibility of the SMTp mechanism, we argue that next-generation multi-threaded processors with integrated memory controllers should adopt this mechanism as a way of building less complex high-performance DSM multiprocessors. Mainak Chaudhuri, Mark A. Heinrich |
ISCA | 2 |
| 2004 | Architectural Support for Uniprocessor and Multiprocessor Active Memory SystemsabstractWe introduce an architectural approach to improve memory system performance in both uniprocessor and multiprocessor systems. The architectural innovation is a flexible active memory controller backed by specialized cache coherence protocols that permit the transparent use of address remapping techniques. The resulting system shows significant performance improvement across a spectrum of machine configurations, from uniprocessors through single-node multiprocessors (SMPs) to distributed shared memory clusters (DSMs). Address remapping techniques exploit the data access patterns of applications to enhance their cache performance. However, they create coherence problems since the processor is allowed to refer to the same data via more than one address. While most active memory implementations require cache flushes, we present a new approach to solve the coherence problem. We leverage and extend the cache coherence protocol so that our techniques work transparently to efficiently support uniprocessor, SMP and DSM active memory systems. We detail the coherence protocol extensions to support our active memory techniques and present simulation results that show uniprocessor speedup from 1.3 to 7.6 on a range of applications and microbenchmarks. We also show remarkable performance improvement on small to medium-scale SMP and DSM multiprocessors, allowing some parallel applications to continue to scale long after their performance levels off on normal systems. Mainak Chaudhuri, Mark A. Heinrich, William Evan Speight |
IEEE Trans. Computers | 3 |
| 2004 | The Impact of Negative Acknowledgments in Shared Memory Scientific ApplicationsabstractNegative acknowledgments (NACKs) and subsequent retries, used to resolve races and to enforce a total order among shared memory accesses in distributed shared memory (DSM) multiprocessors, not only introduce extra network traffic and contention, but also increase node controller occupancy, especially at the home. We present possible protocol optimizations to minimize these retries and offer a thorough study of the performance effects of these messages on six scalable scientific applications running on 64-node systems and larger. To eliminate NACKs, we present a mechanism to queue pending requests at the main memory of the home node and augment it with a novel technique of combining pending read requests, thereby accelerating the parallel execution for 64 nodes by as much as 41 percent (a speedup of 1.41) compared to a modified version of the SGI Origin 2000 protocol. We further design and evaluate a protocol by combining this mechanism with a technique that we call write string forwarding, used in the AlphaServer GS320 and Piranha systems. We find that without careful design considerations, especially regarding atomic read-modify-write operations, this aggressive write forwarding can hurt performance. We identify and evaluate the necessary micro-architectural support to solve this problem. We compare the performance of these novel NACK-free protocols with a base bitvector protocol, a modified version of the SGI Origin 2000 protocol, and a NACK-free protocol that uses dirty sharing and write string forwarding as in the Piranha system. To understand the effects of network speed and topology the evaluation is carried out on three network configurations. Mainak Chaudhuri, Mark A. Heinrich |
IEEE Trans. Parallel Distributed Syst. | 2 |
| 2004 | Exploring Virtual Network Selection Algorithms in DSM Cache Coherence ProtocolsabstractDistributed shared memory (DSM) multiprocessors typically require disjoint networks for deadlock-free execution of cache coherence protocols. This is normally achieved by implementing virtual networks with the help of virtual channels or virtual lanes multiplexed on a single physical network. To keep the coherence protocol simple, messages are usually assigned to virtual lanes in a predefined static manner based on a cycle-free lane assignment dependence graph. However, this static split of virtual networks (such as request and reply networks) may lead to underutilization of certain virtual networks while saturating the other networks. In this paper, we explore different static and dynamic schemes to select the virtual lanes for outgoing messages and mix the load among them without restricting any particular type of message to be carried only by a particular virtual network. We achieve this by exposing the selection algorithms to the coherence protocol itself, so that it can inject messages into selected virtual lanes based on some local information, and still enjoy deadlock-freedom. Our execution-driven simulation on five applications from the SPLASH-2 suite shows that as the system scales, the virtual network selection algorithms play an important role. For 128-node systems, our dynamic selection algorithm speeds up parallel execution by as much as 22 percent over an optimized baseline system running a modified SGI Origin 2000 protocol. We also explore how network latency, the number of message buffers per virtual lane, and the depth of network interface output queues affect the relative performance of various virtual lane selection algorithms. Mainak Chaudhuri, Mark A. Heinrich |
IEEE Trans. Parallel Distributed Syst. | 2 |
| 2003 | Active I/O Switches in System Area NetworksabstractWe present an active switch architecture to improve the performance of systems connected via system area networks. Our programmable active switches not only flexibly route packets between any combination of hosts and I/O devices, but also have the capability of running application-level code, forming a parallel processor in the SAN subsystem. By replacing existing SAN-based switches with a new active switch architecture, we can design a prototype system with otherwise commercially available, commodity parts that can dramatically speed up data-intensive applications and workloads on modern multi-programmed servers. We explain the programming model and detail the microarchitecture of our active switch, and analyze simulation results for nine benchmark applications that highlight various advantages of active switch-based systems. Mark A. Heinrich |
HPCA | 2 |
| 2003 | Latency, Occupancy, and Bandwidth in DSM Multiprocessors: A Performance EvaluationabstractWhile 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. Computers | 2 |
| 2002 | Leveraging cache coherence in active memory systemsabstractActive memory systems help processors overcome the memory wall when applications exhibit poor cache behavior. They consist of either active memory elements that perform data parallel computations in the memory system itself, or an active memory controller that supports address re-mapping techniques that improve data locality. Both active memory approaches create coherence problems---even on uniprocessor systems---since there are either additional processors operating on the data directly, or the processor is allowed to refer to the same data via more than one address. While most active memory implementations require cache flushes, we propose a new technique to solve the coherence problem by extending the coherence protocol. Our active memory controller leverages and extends the coherence mechanism, so that re-mapping techniques work transparently on both uniprocessor and multiprocessor systems.We present a microarchitecture for an active memory controller with a programmable core and specialized hardware that accelerates cache line assembly and disassembly. We present detailed simulation results that show uniprocessor speedup from 1.3 to 7.6 on a range of applications and microbenchmarks. In addition to uniprocessor speedup, we show single-node multiprocessor speedup for parallel active memory applications and discuss how the same controller architecture supports coherent multi-node systems called active memory clusters. Mainak Chaudhuri, Mark A. Heinrich |
ICS | 3 |
| 2000 | Using Meta-level Compilation to Check FLASH Protocol CodeabstractBuilding systems such as OS kernels and embedded software is difficult. An important source of this difficulty is the numerous rules they must obey: interrupts cannot be disabled for ~too long," global variables must be protected by locks, user pointers passed to OS code must be checked for safety before use, etc. A single violation can crash the system, yet typically these invariants are unchecked, existing only on paper or in the implementor's mind.This paper is a case study in how system implementors can use a new programming methodology, meta-level compilation (MC), to easily check such invariants. It focuses on using MC to check for errors in the code used to manage cache coherence on the FLASH shared memory multiprocessor. The only real practical method known for verifying such code is testing and simulation. We show that simple, system-specific checkers can dramatically improve this situation by statically pinpointing errors in the program source. These checkers can be written by implementors themselves and, by exploiting the system-specific information this allows, can detect errors unreachable with other methods. The checkers in this paper found 34 bugs in FLASH code despite the care used in building it and the years of testing it has undergone. Many of these errors fall in the worst category of systems bugs: those that show up sporadically only after days of continuous use. The case study is interesting because it shows that the MC approach finds serious errors in well-tested, non-toy systems code. Further, the code to find such bugs is usually 10-100 lines long, written in a few hours, and exactly locates errors that, if discovered during testing, would require several days of investigation by an experienced implementor.The paper presents 8 checkers we wrote, their application to five different protocol implementations, and a discussion of the errors that we found. Andy Chou, Benjamin Chelf, Dawson R. Engler, Mark A. Heinrich |
ASPLOS | 4 |
| 2000 | FLASH vs. (Simulated) FLASH: Closing the Simulation LoopabstractSimulation is the primary method for evaluating computer systems during all phases of the design process. One significant problem with simulation is that it rarely models the system exactly, and quantifying the resulting simulator error can be difficult. More importantly, architects often assume without proof that although their simulator may make inaccurate absolute performance predictions, it will still accurately predict architectural trends.This paper studies the source and magnitude of error in a range of architectural simulators by comparing the simulated execution time of several applications and microbenchmarks to their execution time on the actual hardware being modeled. The existence of a hardware gold standard allows us to find, quantify, and fix simulator inaccuracies. We then use the simulators to predict architectural trends and analyze the sensitivity of the results to the simulator configuration. We find that most of our simulators predict trends accurately, as long as they model all of the important performance effects for the application in question. Unfortunately, it is difficult to know what these effects are without having a hardware reference, as they can be quite subtle. This calls into question the value, for architectural studies, of highly detailed simulators whose characteristics are not carefully validated against s real hardware design. Jeff Gibson, Robert Kunz, David Ofelt, Mark A. Heinrich |
ASPLOS | 4 |
| 1999 | Cache-coherent distributed shared memory: perspectives on its development and future challengesabstractDistributed 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. IEEE | 2 |
| 1999 | A Quantitative Analysis of the Performance and Scalability of Distributed Shared MemoryabstractScalable 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. Computers | 1 |
| 1998 | Digital System Simulation: Methodologies and ExamplesabstractTwo major trends in the digital design industry are the increase insystem complexity and the increasing importance of short designtimes. The rise in design complexity is motivated by consumerdemand for higher performance products as well as increases inintegration density which allow more functionality to be placed ona single chip. A consequence of this rise in complexity is a significantincrease in the amount of simulation required to design digitalsystems. Simulation time typically scales as the square of theincrease in system complexity [4]. Short design times are importantbecause once a design has been conceived there is a limited timewindow in which to bring the system to market while its performanceis competitive.Simulation serves many purposes during the design cycle of a digitalsystem. In the early stages of design, high-level simulation isused for performance prediction and analysis. In the middle of thedesign cycle, simulation is used to develop the software algorithmsand refine the hardware. In the later stages of design, simulation isused make sure performance targets are reached and to verify thecorrectness of the hardware and software. The different simulationobjectives require varying levels of modeling detail. To keep designtime to a minimum, it is critical to structure the simulation environmentto make it possible to trade-off simulation performance formodel detail in a flexible manner that allows concurrent hardwareand software development.In this paper we describe the different simulation methodologies fordeveloping complex digital systems, and give examples of one suchsimulation environment. The rest of this paper is organized as follows.In Section 2 we describe and classify the various simulationmethodologies that are used in digital system design and describehow they are used in the various stages of the design cycle. In Section3 we provide examples of the methodologies. We describe asophisticated simulation environment used to develop a large ASICfor the Stanford FLASH multiprocessor. Kunle Olukotun, Mark A. Heinrich, David Ofelt |
DAC | 2 |
| 1998 | Flexible Use of Memory for Replication/Migration in Cache-Coherent DSM MultiprocessorsabstractGiven 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 |
ISCA | 2 |
| 1997 | Hardware/software co-design of the Stanford FLASH multiprocessorabstractHardware/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. IEEE | 1 |
| 1996 | Integrating Performance Monitoring and Communication in Parallel Computers
Margaret Martonosi, David Ofelt, Mark A. Heinrich |
SIGMETRICS | 3 |
| 1994 | The Performance Impact of Flexibility in the Stanford FLASH MultiprocessorabstractA 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 |
ASPLOS | 1 |
| 1994 | The Stanford FLASH MultiprocessorabstractThe 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 |
ISCA | 3 |