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

Milo M. K. Martin

dblp:21/3908 · DBLP profile ↗
← Back
41ranked-venue papers
7as first author
2since 2021 · last 2022
—ORCID · none

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

Systems, architecture and hardware · 24 · 7 first-authorSoftware engineering, systems software and programming languages · 24 · 3 first-authorTheory of computation · 4Computer networks · 3 · 2 since 2021Security and privacy · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Computer architecture, parallel and distributed computing, and storage systems
29 papers
Memory systems · 24% Distributed systems · 21% Cloud and datacenter computing · 12%
Software engineering, system software, and programming languages
11 papers
Concurrent programming · 43% Programming languages and type systems · 15% Program verification · 13%
Network and information security
5 papers
Systems and software security · 92% Hardware security and side channels · 8%
Computer networks
1 paper
Datacenter networks · 100%

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

TopicWeightPapersLastEvidence papers
Distributed systems
distributed caching
0.512021
CliqueMap: productionizing an RMA-based distributed caching system · SIGCOMM 2021
Distributed systems › distributed communication
remote memory access
0.512021
CliqueMap: productionizing an RMA-based distributed caching system · SIGCOMM 2021
Systems and software security
memory safety
0.542013
Ironclad C++: a library-augmented type-safe subset of c++ · OOPSLA 2013
Watchdog: Hardware for safe and secure manual memory management and full memory safety · ISCA 2012
SoftBound: highly compatible and complete spatial memory safety for c · PLDI 2009
Memory systems
cache coherence
0.5102010
Token tenure and PATCH: A predictive/adaptive token-counting hybrid · ACM Trans. Archit. Code Optim. 2010
Token tenure: PATCHing token counting using directory-based cache coherence · MICRO 2008
Improving Multiple-CMP Systems Using Token Coherence · HPCA 2005
Cloud and datacenter computing › multi-tenancy
multi-tenant datacenter
0.412020
1RMA: Re-envisioning Remote Memory Access for Multi-tenant Datacenters · SIGCOMM 2020
Interconnection networks and networks-on-chip
remote direct memory access
0.412020
1RMA: Re-envisioning Remote Memory Access for Multi-tenant Datacenters · SIGCOMM 2020
Concurrent programming
memory models
0.442012
An Axiomatic Memory Model for POWER Multiprocessors · CAV 2012
Generating Litmus Tests for Contrasting Memory Consistency Models · CAV 2010
CheckFence: checking consistency of concurrent data types on relaxed memory models · PLDI 2007
Energy-efficient computing › power management › peak power management
computational sprinting
0.322013
Computational sprinting on a hardware/software testbed · ASPLOS 2013
Computational sprinting · HPCA 2012
Energy-efficient computing
thermal management
0.322013
Computational sprinting on a hardware/software testbed · ASPLOS 2013
Computational sprinting · HPCA 2012
Memory systems › memory consistency
memory consistency model
0.332011
Litmus tests for comparing memory consistency models: how long do they need to be? · DAC 2011
InvisiFence: performance-transparent memory ordering in conventional multiprocessors · ISCA 2009
Correctly implementing value prediction in microprocessors that support multithreading or multiprocessing · MICRO 2001
Memory systems › cache coherence
directory-based coherence
0.232010
Token tenure and PATCH: A predictive/adaptive token-counting hybrid · ACM Trans. Archit. Code Optim. 2010
Token tenure: PATCHing token counting using directory-based cache coherence · MICRO 2008
Bandwidth Adaptive Snooping · HPCA 2002
Parallel and multicore computing
transactional memory
0.222010
RETCON: transactional repair without replay · ISCA 2010
Making the fast case common and the uncommon case simple in unbounded transactional memory · ISCA 2007
Systems and software security › memory safety
spatial memory safety
0.222009
SoftBound: highly compatible and complete spatial memory safety for c · PLDI 2009
Hardbound: architectural support for spatial safety of the C programming language · ASPLOS 2008
Program synthesis and code generation › concurrent program synthesis
protocol synthesis
0.212013
TRANSIT: specifying protocols with concolic snippets · PLDI 2013
Programming languages and type systems › type systems
type soundness
0.212013
Ironclad C++: a library-augmented type-safe subset of c++ · OOPSLA 2013
Compilers and program optimization
verified compilation
0.212013
Formal verification of SSA-based optimizations for LLVM · PLDI 2013
Embedded and real-time systems
mobile computing
0.212013
Computational sprinting on a hardware/software testbed · ASPLOS 2013
Cloud and datacenter computing
datacenter services
0.112021
CliqueMap: productionizing an RMA-based distributed caching system · SIGCOMM 2021
Systems and software security › memory safety
hardware-enforced memory safety
0.112012
Watchdog: Hardware for safe and secure manual memory management and full memory safety · ISCA 2012
Systems and software security › memory safety › memory error detection
use-after-free detection
0.112012
Watchdog: Hardware for safe and secure manual memory management and full memory safety · ISCA 2012
Concurrent programming
concurrency bugs
0.112012
Multicore acceleration of priority-based schedulers for concurrency bug detection · PLDI 2012
Concurrent programming › concurrency bug detection
data race detection
0.112012
Multicore acceleration of priority-based schedulers for concurrency bug detection · PLDI 2012
Software testing › concurrency testing
interleaving exploration
0.112012
Multicore acceleration of priority-based schedulers for concurrency bug detection · PLDI 2012
Programming languages and type systems › language semantics › formal semantics
mechanized semantics
0.112012
Formalizing the LLVM intermediate representation for verified program transformations · POPL 2012
Program verification
model checking
0.112012
Multicore acceleration of priority-based schedulers for concurrency bug detection · PLDI 2012
Parallel and multicore computing
memory model
0.112012
An Axiomatic Memory Model for POWER Multiprocessors · CAV 2012
Memory systems › cache management › storage caching
metadata caching
0.112012
Watchdog: Hardware for safe and secure manual memory management and full memory safety · ISCA 2012
Processor architecture and microarchitecture
multicore design
0.112012
Computational sprinting · HPCA 2012
Processor architecture and microarchitecture
speculative execution
0.122009
InvisiFence: performance-transparent memory ordering in conventional multiprocessors · ISCA 2009
Correctly implementing value prediction in microprocessors that support multithreading or multiprocessing · MICRO 2001
Processor architecture and microarchitecture › memory system microarchitecture
store-load forwarding
0.122006
NoSQ: Store-Load Communication without a Store Queue · MICRO 2006
Scalable Store-Load Forwarding via Store Queue Index Prediction · MICRO 2005

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

model checking · 0.6remote procedure call · 0.5remote memory access · 0.5extended finite state machine · 0.5constraint solving · 0.5concolic execution · 0.5micro-ops · 0.3simulation · 0.3proof assistant · 0.2formal verification · 0.2shadow memory · 0.1register renaming · 0.1power budgeting · 0.1phase-change material thermal capacitance · 0.1interactive theorem proving · 0.1coq · 0.1tool-based model comparison · 0.1bounded litmus test exploration · 0.1
YearPublicationVenuePosition
2022 Aquila: A unified, low-latency fabric for datacenter networks
Dan Gibson, Hema Hariharan, Eric Lance, Moray McLaren, Behnam Montazeri, Hassan M. G. Wassel, Zhehua Wu, Sunghwan Yoo, Raghuraman Balasubramanian, Prashant Chandra, Michael Cutforth, Peter Cuy, David Decotigny, Rakesh Gautam, Alex Iriza, Milo M. K. Martin, Rick Roy, Zuowei Shen, Monica Wong-Chan, Joe Zbiciak, Amin Vahdat
NSDI18
2021 CliqueMap: productionizing an RMA-based distributed caching system
abstract
Distributed in-memory caching is a key component of modern Internet services. Such caches are often accessed via remote procedure call (RPC), as RPC frameworks provide rich support for productionization, including protocol versioning, memory efficiency, auto-scaling, and hitless upgrades. However, full-featured RPC limits performance and scalability as it incurs high latencies and CPU overheads. Remote Memory Access (RMA) offers a promising alternative, but meeting productionization requirements can be a significant challenge with RMA-based systems due to limited programmability and narrow RMA primitives.
Arjun Singhvi, Aditya Akella, Maggie Anderson, Rob Cauble, Harshad Deshmukh, Dan Gibson, Milo M. K. Martin, Amanda Strominger, Thomas F. Wenisch, Amin Vahdat
SIGCOMM7
2020 1RMA: Re-envisioning Remote Memory Access for Multi-tenant Datacenters
abstract
Remote Direct Memory Access (RDMA) plays a key role in supporting performance-hungry datacenter applications. However, existing RDMA technologies are ill-suited to multi-tenant datacenters, where applications run at massive scales, tenants require isolation and security, and the workload mix changes over time. Our experiences seeking to operationalize RDMA at scale indicate that these ills are rooted in standard RDMA's basic design attributes: connectionorientedness and complex policies baked into hardware.
Arjun Singhvi, Aditya Akella, Dan Gibson, Thomas F. Wenisch, Monica Wong-Chan, Sean Clark 0003, Milo M. K. Martin, Moray McLaren, Prashant Chandra, Rob Cauble, Hassan M. G. Wassel, Behnam Montazeri, Simon L. Sabato, Joel Scherpelz, Amin Vahdat
SIGCOMM7
2014 WatchdogLite: Hardware-Accelerated Compiler-Based Pointer Checking
Santosh Nagarakatte, Milo M. K. Martin, Steve Zdancewic
CGO2
2013 Computational sprinting on a hardware/software testbed
abstract
CMOS scaling trends have led to an inflection point where thermal constraints (especially in mobile devices that employ only passive cooling) preclude sustained operation of all transistors on a chip --- a phenomenon called "dark silicon." Recent research proposed computational sprinting --- exceeding sustainable thermal limits for short intervals --- to improve responsiveness in light of the bursty computation demands of many media-rich interactive mobile applications. Computational sprinting improves responsiveness by activating reserve cores (parallel sprinting) and/or boosting frequency/voltage (frequency sprinting) to power levels that far exceed the system's sustainable cooling capabilities, relying on thermal capacitance to buffer heat.
Arun Raghavan, Laurel Emurian, Marios C. Papaefthymiou, Kevin P. Pipe, Thomas F. Wenisch, Milo M. K. Martin
ASPLOS7
2013 Syntax-guided synthesis
Rajeev Alur, Rastislav Bodík, Garvit Juniwal, Milo M. K. Martin, Mukund Raghothaman, Sanjit A. Seshia, Rishabh Singh, Armando Solar-Lezama, Emina Torlak, Abhishek Udupa
FMCAD4
2013 Ironclad C++: a library-augmented type-safe subset of c++
abstract
The C++ programming language remains widely used, despite inheriting many unsafe features from C---features that often lead to failures of type or memory safety that manifest as buffer overflows, use-after-free vulnerabilities, or abstraction violations. Malicious attackers can exploit such violations to compromise application and system security.
Christian DeLozier, Richard A. Eisenberg, Santosh Nagarakatte, Peter-Michael Osera, Milo M. K. Martin, Steve Zdancewic
OOPSLA5
2013 TRANSIT: specifying protocols with concolic snippets
abstract
With the maturing of technology for model checking and constraint solving, there is an emerging opportunity to develop programming tools that can transform the way systems are specified. In this paper, we propose a new way to program distributed protocols using concolic snippets. Concolic snippets are sample execution fragments that contain both concrete and symbolic values. The proposed approach allows the programmer to describe the desired system partially using the traditional model of communicating extended finite-state-machines (EFSM), along with high-level invariants and concrete execution fragments. Our synthesis engine completes an EFSM skeleton by inferring guards and updates from the given fragments which is then automatically analyzed using a model checker with respect to the desired invariants. The counterexamples produced by the model checker can then be used by the programmer to add new concrete execution fragments that describe the correct behavior in the specific scenario corresponding to the counterexample.
Abhishek Udupa, Arun Raghavan, Jyotirmoy V. Deshmukh, Sela Mador-Haim, Milo M. K. Martin, Rajeev Alur
PLDI5
2013 Formal verification of SSA-based optimizations for LLVM
abstract
Modern compilers, such as LLVM and GCC, use a static single assignment(SSA) intermediate representation (IR) to simplify and enable many advanced optimizations. However, formally verifying the correctness of SSA-based optimizations is challenging because SSA properties depend on a function's entire control-flow graph.
Jianzhou Zhao, Santosh Nagarakatte, Milo M. K. Martin, Steve Zdancewic
PLDI3
2012 An Axiomatic Memory Model for POWER Multiprocessors
Sela Mador-Haim, Luc Maranget, Susmit Sarkar, Kayvan Memarian, Jade Alglave, Scott Owens, Rajeev Alur, Milo M. K. Martin, Peter Sewell, Derek Williams
CAV8
2012 Computational sprinting
abstract
Although transistor density continues to increase, voltage scaling has stalled and thus power density is increasing each technology generation. Particularly in mobile devices, which have limited cooling options, these trends lead to a utilization wall in which sustained chip performance is limited primarily by power rather than area. However, many mobile applications do not demand sustained performance; rather they comprise short bursts of computation in response to sporadic user activity. To improve responsiveness for such applications, this paper explores activating otherwise powered-down cores for sub-second bursts of intense parallel computation. The approach exploits the concept of computational sprinting, in which a chip temporarily exceeds its sustainable thermal power budget to provide instantaneous throughput, after which the chip must return to nominal operation to cool down. To demonstrate the feasibility of this approach, we analyze the thermal and electrical characteristics of a smart-phone-like system that nominally operates a single core (~1W peak), but can sprint with up to 16 cores for hundreds of milliseconds. We describe a thermal design that incorporates phase-change materials to provide thermal capacitance to enable such sprints. We analyze image recognition kernels to show that parallel sprinting has the potential to achieve the task response time of a 16W chip within the thermal constraints of a 1W mobile platform.
Arun Raghavan, Anuj Chandawalla, Marios C. Papaefthymiou, Kevin P. Pipe, Thomas F. Wenisch, Milo M. K. Martin
HPCA7
2012 Watchdog: Hardware for safe and secure manual memory management and full memory safety
abstract
Languages such as C and C++ use unsafe manual memory management, allowing simple bugs (i.e., accesses to an object after deallocation) to become the root cause of exploitable security vulnerabilities. This paper proposes Watchdog, a hardware-based approach for ensuring safe and secure manual memory management. Inspired by prior software-only proposals, Watchdog generates a unique identifier for each memory allocation, associates these identifiers with pointers, and checks to ensure that the identifier is still valid on every memory access. This use of identifiers and checks enables Watchdog to detect errors even in the presence of reallocations. Watchdog stores these pointer identifiers in a disjoint shadow space to provide comprehensive protection and ensure compatibility with existing code. To streamline the implementation and reduce runtime overhead: Watchdog (1) uses micro-ops to access metadata and perform checks, (2) eliminates metadata copies among registers via modified register renaming, and (3) uses a dedicated metadata cache to reduce checking overhead. Furthermore, this paper extends Watchdog's mechanisms to detect bounds errors, thereby providing full hardware-enforced memory safety at low overheads.
Santosh Nagarakatte, Milo M. K. Martin, Steve Zdancewic
ISCA2
2012 Multicore acceleration of priority-based schedulers for concurrency bug detection
abstract
Testing multithreaded programs is difficult as threads can interleave in a nondeterministic fashion. Untested interleavings can cause failures, but testing all interleavings is infeasible. Many interleaving exploration strategies for bug detection have been proposed, but their relative effectiveness and performance remains unclear as they often lack publicly available implementations and have not been evaluated using common benchmarks. We describe NeedlePoint, an open-source framework that allows selection and comparison of a wide range of interleaving exploration policies for bug detection proposed by prior work.
Santosh Nagarakatte, Sebastian Burckhardt, Milo M. K. Martin, Madan Musuvathi
PLDI3
2012 Formalizing the LLVM intermediate representation for verified program transformations
abstract
This paper presents Vellvm (verified LLVM), a framework for reasoning about programs expressed in LLVM's intermediate representation and transformations that operate on it. Vellvm provides a mechanized formal semantics of LLVM's intermediate representation, its type system, and properties of its SSA form. The framework is built using the Coq interactive theorem prover. It includes multiple operational semantics and proves relations among them to facilitate different reasoning styles and proof techniques.
Jianzhou Zhao, Santosh Nagarakatte, Milo M. K. Martin, Steve Zdancewic
POPL3
2011 Litmus tests for comparing memory consistency models: how long do they need to be?
abstract
Memory consistency litmus tests are small parallel programs that are designed to illustrate subtle differences between memory consistency models by exhibiting different outcomes for different models. In this paper, we show that for a class of memory models that is restricted yet expressive enough to include all store-atomic hardware memory models, litmus tests of a bounded size are sufficient for illustrating differences between memory consistency models in this class. We establish a bound of two threads and no more than six memory access instructions for differentiating litmus tests in this class of models. Thus, we can prove equivalence of two specification of memory consistency models in this class by exploring a bounded number of litmus tests. We build a tool for comparing memory models based on this result, and we use the tool to explore and map the space of this class of models.
Sela Mador-Haim, Rajeev Alur, Milo M. K. Martin
DAC3
2010 Generating Litmus Tests for Contrasting Memory Consistency Models
Sela Mador-Haim, Rajeev Alur, Milo M. K. Martin
CAV3
2010 RETCON: transactional repair without replay
abstract
Over the past decade there has been a surge of academic and industrial interest in optimistic concurrency, i.e. the speculative parallel execution of code regions that have the semantics of isolation. This work analyzes scalability bottlenecks of workloads that use optimistic concurrency. We find that one common bottleneck is updates to auxiliary program data in otherwise non-conflicting operations, e.g. reference count updates and hashtable occupancy field increments.
Colin Blundell, Arun Raghavan, Milo M. K. Martin
ISCA3
2010 CETS: compiler enforced temporal safety for C
abstract
Temporal memory safety errors, such as dangling pointer dereferences and double frees, are a prevalent source of software bugs in unmanaged languages such as C. Existing schemes that attempt to retrofit temporal safety for such languages have high runtime overheads and/or are incomplete, thereby limiting their effectiveness as debugging aids. This paper presents CETS, a compile-time transformation for detecting all violations of temporal safety in C programs. Inspired by existing approaches, CETS maintains a unique identifier with each object, associates this metadata with the pointers in a disjoint metadata space to retain memory layout compatibility, and checks that the object is still allocated on pointer dereferences. A formal proof shows that this is sufficient to provide temporal safety even in the presence of arbitrary casts if the program contains no spatial safety violations. Our CETS prototype employs both temporal check removal optimizations and traditional compiler optimizations to achieve a runtime overhead of just 48% on average. When combined with a spatial-checking system, the average overall overhead is 116% for complete memory safety
Santosh Nagarakatte, Jianzhou Zhao, Milo M. K. Martin, Steve Zdancewic
ISMM3
2010 Overcoming an Untrusted Computing Base: Detecting and Removing Malicious Hardware Automatically
abstract
The computer systems security arms race between attackers and defenders has largely taken place in the domain of software systems, but as hardware complexity and design processes have evolved, novel and potent hardware-based security threats are now possible. This paper presents a hybrid hardware/software approach to defending against malicious hardware. We propose BlueChip, a defensive strategy that has both a design-time component and a runtime component. During the design verification phase, BlueChip invokes a new technique, unused circuit identification (UCI), to identify suspicious circuitry-those circuits not used or otherwise activated by any of the design verification tests. BlueChip removes the suspicious circuitry and replaces it with exception generation hardware. The exception handler software is responsible for providing forward progress by emulating the effect of the exception generating instruction in software, effectively providing a detour around suspicious hardware. In our experiments, BlueChip is able to prevent all hardware attacks we evaluate while incurring a small runtime overhead.
Matthew Hicks, Murph Finnicum, Samuel T. King, Milo M. K. Martin, Jonathan M. Smith
IEEE Symposium on Security and Privacy4
2010 Token tenure and PATCH: A predictive/adaptive token-counting hybrid
abstract
Traditional coherence protocols present a set of difficult trade-offs: the reliance of snoopy protocols on broadcast and ordered interconnects limits their scalability, while directory protocols incur a performance penalty on sharing misses due to indirection. This work introduces Patch (Predictive/Adaptive Token-Counting Hybrid), a coherence protocol that provides the scalability of directory protocols while opportunistically sending direct requests to reduce sharing latency. Patch extends a standard directory protocol to track tokens and use token-counting rules for enforcing coherence permissions. Token counting allows Patch to support direct requests on an unordered interconnect, while a mechanism called token tenure provides broadcast-free forward progress using the directory protocol's per-block point of ordering at the home along with either timeouts at requesters or explicit race notification messages. Patch makes three main contributions. First, Patch introduces token tenure, which provides broadcast-free forward progress for token-counting protocols. Second, Patch deprioritizes best-effort direct requests to match or exceed the performance of directory protocols without restricting scalability. Finally, Patch provides greater scalability than directory protocols when using inexact encodings of sharers because only processors holding tokens need to acknowledge requests. Overall, Patch is a “one-size-fits-all” coherence protocol that dynamically adapts to work well for small systems, large systems, and anywhere in between.
Arun Raghavan, Colin Blundell, Milo M. K. Martin
ACM Trans. Archit. Code Optim.3
2009 InvisiFence: performance-transparent memory ordering in conventional multiprocessors
abstract
A multiprocessor's memory consistency model imposes ordering constraints among loads, stores, atomic operations, and memory fences. Even for consistency models that relax ordering among loads and stores, ordering constraints still induce significant performance penalties due to atomic operations and memory ordering fences. Several prior proposals reduce the performance penalty of strongly ordered models using post-retirement speculation, but these designs either (1) maintain speculative state at a per-store granularity, causing storage requirements to grow proportionally to speculation depth, or (2) employ distributed global commit arbitration using unconventional chunk-based invalidation mechanisms. In this paper we propose InvisiFence, an approach for implementing memory ordering based on post-retirement speculation that avoids these concerns. InvisiFence leverages minimalistic mechanisms for post-retirement speculation proposed in other contexts to (1) track speculative state efficiently at block-granularity with dedicated storage requirements independent of speculation depth, (2) provide fast commit by avoiding explicit commit arbitration, and (3) operate under a conventional invalidation-based cache coherence protocol. InvisiFence supports both modes of operation found in prior work: speculating only when necessary to minimize the risk of rollback-inducing violations or speculating continuously to decouple consistency enforcement from the processor core. Overall, InvisiFence requires approximately one kilobyte of additional state to transform a conventional multiprocessor into one that provides performance-transparent memory ordering, fences, and atomic operations.
Colin Blundell, Milo M. K. Martin, Thomas F. Wenisch
ISCA2
2009 SoftBound: highly compatible and complete spatial memory safety for c
abstract
The serious bugs and security vulnerabilities facilitated by C/C++'s lack of bounds checking are well known, yet C and C++ remain in widespread use. Unfortunately, C's arbitrary pointer arithmetic, conflation of pointers and arrays, and programmer-visible memory layout make retrofitting C/C++ with spatial safety guarantees extremely challenging. Existing approaches suffer from incompleteness, have high runtime overhead, or require non-trivial changes to the C source code. Thus far, these deficiencies have prevented widespread adoption of such techniques.
Santosh Nagarakatte, Jianzhou Zhao, Milo M. K. Martin, Steve Zdancewic
PLDI3
2008 Hardbound: architectural support for spatial safety of the C programming language
abstract
The C programming language is at least as well known for its absence of spatial memory safety guarantees (i.e., lack of bounds checking) as it is for its high performance. C's unchecked pointer arithmetic and array indexing allow simple programming mistakes to lead to erroneous executions, silent data corruption, and security vulnerabilities. Many prior proposals have tackled enforcing spatial safety in C programs by checking pointer and array accesses. However, existing software-only proposals have significant drawbacks that may prevent wide adoption, including: unacceptably high run-time overheads, lack of completeness, incompatible pointer representations, or need for non-trivial changes to existing C source code and compiler infrastructure.
Joseph Devietti, Colin Blundell, Milo M. K. Martin, Steve Zdancewic
ASPLOS3
2008 Token tenure: PATCHing token counting using directory-based cache coherence
abstract
Traditional coherence protocols present a set of difficult tradeoffs: the reliance of snoopy protocols on broadcast and ordered interconnects limits their scalability, while directory protocols incur a performance penalty on sharing misses due to indirection. This work introduces PATCH (Predictive/Adaptive Token Counting Hybrid), a coherence protocol that provides the scalability of directory protocols while opportunistically sending direct requests to reduce sharing latency. PATCH extends a standard directory protocol to track tokens and use token counting rules for enforcing coherence permissions. Token counting allows PATCH to support direct requests on an unordered interconnect, while a mechanism called token tenure uses local processor timeouts and the directorypsilas per-block point of ordering at the home node to guarantee forward progress without relying on broadcast. PATCH makes three main contributions. First, PATCH introduces token tenure, which provides broadcast-free forward progress for token counting protocols. Second, PATCH deprioritizes best-effort direct requests to match or exceed the performance of directory protocols without restricting scalability. Finally, PATCH provides greater scalability than directory protocols when using inexact encodings of sharers because only processors holding tokens need to acknowledge requests. Overall, PATCH is a ldquoone-size-fits-allrdquo coherence protocol that dynamically adapts to work well for small systems, large systems, and anywhere in between.
Arun Raghavan, Colin Blundell, Milo M. K. Martin
MICRO3
2007 Making the fast case common and the uncommon case simple in unbounded transactional memory
abstract
Hardware transactional memory has great potential to simplify the creation ofcorrect and efficient multithreaded programs, allowing programmers to exploitmore effectively the soon-to-be-ubiquitous multi-core designs. Several recentproposals have extended the original bounded transactional memory to unboundedtransactional memory, a crucial step toward transactions becoming ageneral-purpose primitive. Unfortunately, supporting the concurrent executionof an unbounded number of unbounded transactions is challenging, and as aresult, many proposed implementations are complex.
Colin Blundell, Joseph Devietti, E. Christopher Lewis, Milo M. K. Martin
ISCA4
2007 CheckFence: checking consistency of concurrent data types on relaxed memory models
abstract
Concurrency libraries can facilitate the development of multi-threaded programs by providing concurrent implementations of familiar data types such as queues or sets. There exist many optimized algorithms that can achieve superior performance on multiprocessors by allowing concurrent data accesses without using locks. Unfortunately, such algorithms can harbor subtle concurrency bugs. Moreover, they requirememory ordering fences to function correctly on relaxed memory models.
Sebastian Burckhardt, Rajeev Alur, Milo M. K. Martin
PLDI3
2006 Bounded Model Checking of Concurrent Data Types on Relaxed Memory Models: A Case Study
Sebastian Burckhardt, Rajeev Alur, Milo M. K. Martin
CAV3
2006 NoSQ: Store-Load Communication without a Store Queue
abstract
This paper presents NoSQ (short for no store queue), a microarchitecture that performs store-load communication without a store queue and without executing stores in the out-of-order engine. NoSQ implements store-load communication using speculative memory bypassing (SMB), the dynamic short-circuiting of DEF-store-load-USE chains to DEF-USE chains. Whereas previous proposals used SMB as an opportunistic complement to conventional store queue-based forwarding, NoSQ uses SMB as a store queue replacement. NoSQ relies on two supporting mechanisms. The first is an advanced store-load bypassing predictor that for a given dynamic load can predict whether that load will bypass and the identity of the communicating store. The second is an efficient verification mechanism for both bypassed and non-bpyassed loads using in-order load re-execution with an SMB-aware store vulnerability window (SVW) filter. The primary benefit of NoSQ is a simple, fast datapath that does not contain store-load forwarding hardware; all loads get their values either from the data cache or from the register file. Experiments show that this simpler design - despite being more speculative - slightly outperforms a conventional store-queue based design on most benchmarks (by 2% on average)
Tingting Sha, Milo M. K. Martin, Amir Roth
MICRO2
2005 Improving Multiple-CMP Systems Using Token Coherence
abstract
Improvements in semiconductor technology now enable chip multiprocessors (CMPs). As many future computer systems will use one or more CMPs and support shared memory, such systems will have caches that must be kept coherent. Coherence is a particular challenge for multiple-CMP (M-CMP) systems. One approach is to use a hierarchical protocol that explicitly separates the intra-CMP coherence protocol from the inter-CMP protocol, but couples them hierarchically to maintain coherence. However, hierarchical protocols are complex, leading to subtle, difficult-to-verify race conditions. Furthermore, most previous hierarchical protocols use directories at one or both levels, incurring indirections - and thus extra latency - for sharing misses, which are common in commercial workloads. In contrast, this paper exploits the separation of correctness substrate and performance policy in the recently-proposed token coherence protocol to develop the first M-CMP coherence protocol that is flat for correctness, but hierarchical for performance. Via model checking studies, we show that flat correctness eases verification. Via simulation with micro-benchmarks, we make new protocol variants more robust under contention. Finally, via simulation with commercial workloads on a commercial operating system, we show that new protocol variants can be 10-50% faster than a hierarchical directory protocol.
Michael R. Marty, Jesse D. Bingham, Mark D. Hill, Alan J. Hu, Milo M. K. Martin, David A. Wood 0001
HPCA5
2005 Formal Verification and its Impact on the Snooping versus Directory Protocol Debate
abstract
This invited paper argues that to facilitate formal verification, multiprocessor systems should (1) decouple enforcing coherence from enforcing a memory consistency model and (2) decouple the interconnection network from the cache coherence protocol (by not relying on any specific interconnect ordering or synchronicity properties). Of the two dominant classes of cache coherence protocols - directory protocols and snooping protocols - these two desirable properties favor use of directory protocols over snooping protocols. Although the conceptual simplicity of snooping protocols is seductive, aggressive implementations of snooping protocols lack these decoupling properties, making them perhaps more difficult in practice to reason about, verify, and implement correctly. Conversely, directory protocols may seem more complicated, but they are more amenable to these decoupling properties, which simplify protocol design and verification. Finally, this paper describes the recently-proposed token coherence protocol's adherence to these properties and discusses some of its implications for future multiprocessor systems.
Milo M. K. Martin
ICCD1
2005 Scalable Store-Load Forwarding via Store Queue Index Prediction
abstract
Conventional processors use a fully-associative store queue (SQ) to implement store-load forwarding. Associative search latency does not scale well to capacities and bandwidths required by wide-issue, large window processors. In this work, we improve SQ scalability by implementing store-load forwarding using speculative indexed access rather than associative search. Our design uses prediction to identify the single SQ entry from which each dynamic load is most likely to forward. When a load executes, it either obtains its value from the predicted SQ entry (if the address of the entry matches the load address) or the data cache (otherwise). A forwarding misprediction - detected by pre-commit filtered load reexecution - results in a pipeline flush. SQ index prediction is generally accurate, but for some loads it cannot reliably identify a single SQ entry. To avoid flushes on these difficult loads while keeping the single-SQ-access-per-load invariant, a second predictor delays difficult loads until all but the youngest of their "candidate" stores have committed. Our predictors are inspired by store-load dependence predictors for load scheduling (Store Sets and the Exclusive Collision Predictor) and unify load scheduling and forwarding. Experiments on the SPEC2000 and MediaBench benchmarks show that on an 8-way issue processor with a 512-entry reorder buffer, our technique performs within 3.3% of an ideal associative SQ (same latency as the data cache) and either matches or exceeds the performance of a realistic associative SQ (slower than data cache) on 31 of 47 programs.
Tingting Sha, Milo M. K. Martin, Amir Roth
MICRO2
2005 Verifying Safety of a Token Coherence Implementation by Parametric Compositional Refinement
Sebastian Burckhardt, Rajeev Alur, Milo M. K. Martin
VMCAI3
2004 Using Speculation to Simplify Multiprocessor Design
abstract
Summary form only given. Modern multiprocessors are complex systems that often require years to design and verify. A significant factor is that engineers must allocate a disproportionate share of their effort to ensure that rare corner-case events behave correctly. We propose using "speculation for simplicity " to enable designers to focus on common-case scenarios. Our approach is to speculate that rare events will not occur and rely on an efficient recovery mechanism to undo the effects of misspeculations. We illustrate the potential of speculation to simplify multiprocessor design with three examples. First, we simplify the design of a directory cache coherence protocol by speculatively relying on point-to-point ordering of messages in an adoptively routed interconnection network. Second, we simplify a snooping cache coherence protocol by treating a rare coherence state transition as a misspeculation. Third, we simplify interconnection network design by removing the virtual channels and then recovering from deadlocks when they occur. Experiments with full-system simulation and commercial workloads show that speculation is a viable approach for simplifying system design. Systems can incur as many as ten recoveries per second due to misspeculations without significantly degrading performance, and our speculatively simplified designs incur far fewer recoveries.
Daniel J. Sorin, Milo M. K. Martin, Mark D. Hill, David A. Wood 0001
IPDPS2
2003 Using Destination-Set Prediction to Improve the Latency/Bandwidth Tradeoff in Shared-Memory Multiprocessors
abstract
Destination-set prediction can improve the latency/bandwidth tradeoff in shared-memory multiprocessors. The destination set is the collection of processors that receive a particular coherence request. Snooping protocols send requests to the maximal destination set (i.e., all processors), reducing latency for cache-to-cache misses at the expense of increased traffic. Directory protocols send requests to the minimal destination set, reducing bandwidth at the expense of an indirection through the directory for cache-to-cache misses. Recently proposed hybrid protocols trade-off latency and bandwidth by directly sending requests to a predicted destination set.This paper explores the destination-set predictor design space, focusing on a collection of important commercial workloads. First, we analyze the sharing behavior of these workloads. Second, we propose predictors that exploit the observed sharing behavior to target different points in the latency/bandwidth tradeoff. Third, we illustrate the effectiveness of destination-set predictors in the context of a multicast snooping protocol. For example, one of our predictors obtains almost 90% of the performance of snooping while using only 15% more bandwidth than a directory protocol (and less than half the bandwidth of snooping).
Milo M. K. Martin, Pacia J. Harper, Daniel J. Sorin, Mark D. Hill, David A. Wood 0001
ISCA1
2003 Token Coherence: Decoupling Performance and Correctness
abstract
Many future shared memory multiprocessor servers will both target commercial workloads and use highly integrated "glueless" designs. Implementing low latency cache coherence in these systems is difficult, because traditional approaches either add indirection for common cache to cache misses (directory protocols) or require a totally ordered interconnect (traditional snooping protocols). Unfortunately, totally ordered interconnects are difficult to implement in glueless designs. An ideal coherence protocol would avoid indirections and interconnect ordering; however, such an approach introduces numerous protocol races that are difficult to resolve. We propose a new coherence framework to enable such protocols by separating performance from correctness. A performance protocol can optimize for the common case (i.e., absence of races) and rely on the underlying correctness substrate to resolve races, provide safety, and prevent starvation. We call the combination Token Coherence, since it explicitly exchanges and counts tokens to control coherence permissions. We develop TokenB, a specific Token Coherence performance protocol that allows a glueless multiprocessor to both exploit a low latency unordered interconnect (like directory protocols) and avoid indirection (like snooping protocols). Simulations using commercial workloads show that our new protocol can significantly outperform traditional snooping and directory protocols.
Milo M. K. Martin, Mark D. Hill, David A. Wood 0001
ISCA1
2002 Bandwidth Adaptive Snooping
abstract
This paper advocates that cache coherence protocols use a bandwidth adaptive approach to adjust to varied system configurations (e.g., number of processors) and workload behaviors. We propose Bandwidth Adaptive Snooping Hybrid (BASH), a hybrid protocol that ranges from behaving like snooping (by broadcasting requests) when excess bandwidth is available to behaving like a directory protocol (by unicasting requests) when bandwidth is limited. BASH adapts dynamically by probabilistically deciding to broadcast or unicast on a per request basis using a local estimate of recent interconnection network utilization. Simulations of a microbenchmark and commercial and scientific workloads show that BASH robustly performs as well or better than the best of snooping and directory protocols as available bandwidth is varied. By mixing broadcasts and unicasts, BASH outperforms both snooping and directory protocols in the mid-range where a static choice of either is inefficient.
Milo M. K. Martin, Daniel J. Sorin, Mark D. Hill, David A. Wood 0001
HPCA1
2002 SafetyNet: Improving the Availability of Shared Memory Multiprocessors with Global Checkpoint/Recovery
abstract
We develop an availability solution, called SafetyNet, that uses a unified, lightweight checkpoint/recovery mechanism to support multiple long-latency fault detection schemes. At an abstract level, SafetyNet logically maintains multiple, globally consistent checkpoints of the state of a shared memory multiprocessor, and it recovers to a pre-fault checkpoint of the system and re-executes if a fault is detected. SafetyNet efficiently coordinates checkpoints across the system in logical time and uses "logically atomic" coherence transactions to free checkpoints of transient coherence state. SafetyNet minimizes performance overhead by pipelining checkpoint validation with subsequent parallel execution. We illustrate SafetyNet avoiding system crashes due to either dropped coherence messages or the loss of an interconnection network switch. Using a full-system simulation of a 16-way multiprocessor running commercial workloads, we find that SafetyNet: 1) adds statistically insignificant runtime overhead in the common-case of fault-free execution, and 2) avoids a crash when tolerated faults occur.
Daniel J. Sorin, Milo M. K. Martin, Mark D. Hill, David A. Wood 0001
ISCA2
2002 Specifying and Verifying a Broadcast and a Multicast Snooping Cache Coherence Protocol
abstract
We develop a specification methodology that documents and specifies a cache coherence protocol in eight tables: the states, events, actions, and transitions of the cache and memory controllers. We then use this methodology to specify a detailed, modern three-state broadcast snooping protocol with an unordered data network and an ordered address network that allows arbitrary skew. We also present a detailed specification of a new protocol called multicast snooping (Bilir et al., 1999) and, in doing so, we better illustrate the utility of the table-based specification methodology. Finally, we demonstrate a technique for verification of the multicast snooping protocol, through the sketch of a manual proof that the specification satisfies a sequentially consistent memory model.
Daniel J. Sorin, Manoj Plakal, Anne Condon, Mark D. Hill, Milo M. K. Martin, David A. Wood 0001
IEEE Trans. Parallel Distributed Syst.5
2001 Correctly implementing value prediction in microprocessors that support multithreading or multiprocessing
abstract
This paper explores the interaction of value prediction with thread-level parallelism techniques, including multithreading and multiprocessing, where correctness is defined by a memory consistency model. Value prediction subtly interacts with the memory consistency model by allowing data dependent instructions to be reordered We find that predicting a value and later verifying that the value eventually calculated is the same as the value predicted is not always sufficient. We present an example of a multithreaded pointer manipulation that can generate a surprising and erroneous result when value prediction is implemented without considering memory consistency correctness. We show that this problem can occur with real software, and we discuss how to apply existing techniques to eliminate the problem in both sequentially consistent systems and systems that obey relaxed memory consistency models.
Milo M. K. Martin, Daniel J. Sorin, Harold W. Cain, Mark D. Hill, Mikko H. Lipasti
MICRO1
2000 Timestamp snooping: an approach for extending SMPs
Milo M. K. Martin, Daniel J. Sorin, Anastasia Ailamaki, Alaa R. Alameldeen, Ross M. Dickson, Carl J. Mauer, Kevin E. Moore, Manoj Plakal, Mark D. Hill, David A. Wood 0001
ASPLOS1
1997 Exploiting Dead Value Information
abstract
We describe dead value information (DVI) and introduce three new optimizations which exploit it. DVI provides assertions that certain register values are dead, meaning they will not be read before being overwritten. The processor can use DVI to track dead registers and dynamically eliminate unnecessary save and restore instructions from the execution stream at procedure calls and context switches. Our results indicate that dynamic saves and restore instances can be reduced by 46% for procedure calls and by 51% for context switches. In addition, save/restore elimination for procedure calls can improve overall performance by up to 5%. DVI also allows the processor to manage physical registers efficiently, reducing the size requirements of the physical register file. When the system clock rate as proportional to the register file cycle time, this optimization can improve performance. All of these optimizations can be supported with only a few new instructions and minimal additional hardware structures.
Milo M. K. Martin, Amir Roth, Charles N. Fischer
MICRO1