Richard L. Hudson

dblp:40/6797 · DBLP profile ↗
← Back
13ranked-venue papers
4as first author
0since 2021 · last 2013
—ORCID · none

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

Software engineering, systems software and programming languages · 7 · 3 first-authorSystems, architecture and hardware · 6 · 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.

Software engineering, system software, and programming languages
8 papers
Concurrent programming · 46% Runtime systems and virtual machines · 42% Compilers and program optimization · 6%
Computer architecture, parallel and distributed computing, and storage systems
6 papers
Parallel and multicore computing · 61% Memory systems · 26% Processor architecture and microarchitecture · 10%

Topics — the 25 heaviest of 27, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Parallel and multicore computing
parallel programming models
0.212013
River trail: a path to parallelism in JavaScript · OOPSLA 2013
Concurrent programming
transactional memory
0.222008
Concurrent GC leveraging transactional memory · PPoPP 2008
Enforcing isolation and ordering in STM · PLDI 2007
Concurrent programming › transactional memory
software transactional memory
0.122007
Enforcing isolation and ordering in STM · PLDI 2007
McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006
Runtime systems and virtual machines
garbage collection
0.132008
Concurrent GC leveraging transactional memory · PPoPP 2008
Garbage Collecting the World: One Car at a Time · OOPSLA 1997
Compiler Support for Garbage Collection in a Statically Typed Language · PLDI 1992
Runtime systems and virtual machines › garbage collection
concurrent garbage collection
0.112008
Concurrent GC leveraging transactional memory · PPoPP 2008
Runtime systems and virtual machines
language runtime
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Concurrent programming
memory models
0.112007
Enforcing isolation and ordering in STM · PLDI 2007
Processor architecture and microarchitecture
chip multiprocessor
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Parallel and multicore computing
concurrent programming
0.112007
Open nesting in software transactional memory · PPoPP 2007
Parallel and multicore computing
parallel programming runtimes
0.112007
Enabling scalability and performance in a large scale CMP environment · EuroSys 2007
Parallel and multicore computing › transactional memory
software transactional memory
0.112007
Open nesting in software transactional memory · PPoPP 2007
Concurrent programming › transactional memory
nested transactions
0.112006
McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006
Programming languages and type systems › dynamic languages
javascript
0.012013
River trail: a path to parallelism in JavaScript · OOPSLA 2013
Runtime systems and virtual machines
dynamic compilation
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Compilers and program optimization › dynamic optimization
profile-guided optimization
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems
cache
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems › cache
cache miss
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems › cache › prefetching
linked data structure prefetching
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Memory systems › cache
prefetching
0.012004
Prefetch inection based on hardware monitoring and object metadata · PLDI 2004
Parallel and multicore computing
transactional memory
0.012007
Open nesting in software transactional memory · PPoPP 2007
Parallel and multicore computing › synchronization
fine-grained locking
0.012006
McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006
Parallel and multicore computing › synchronization
lock-based synchronization
0.012006
McRT-STM: a high performance software transactional memory system for a multi-core runtime · PPoPP 2006
Runtime systems and virtual machines › garbage collection
distributed garbage collection
0.011997
Garbage Collecting the World: One Car at a Time · OOPSLA 1997
Distributed systems
distributed object systems
0.011997
Garbage Collecting the World: One Car at a Time · OOPSLA 1997
Programming languages and type systems
statically typed languages
0.011992
Compiler Support for Garbage Collection in a Statically Typed Language · PLDI 1992

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

experimental evaluation · 0.1write buffering · 0.1undo logging · 0.1optimistic concurrency · 0.1conflict detection · 0.1hardware performance monitoring · 0.1garbage collection · 0.1JIT compiler analysis · 0.1transactional memory · 0.1mature object space · 0.0non-blocking collection · 0.0
YearPublicationVenuePosition
2013 River trail: a path to parallelism in JavaScript
abstract
JavaScript is the most popular language on the web and is a crucial component of HTML5 applications and services that run on consumer platforms ranging from desktops to phones. However, despite ample amount of hardware parallelism available to web applications on such platforms, JavaScript web applications remain predominantly sequential. Common parallel programming solutions accepted by other programming languages failed to transfer themselves to JavaScript due to differences in programming models, the additional requirements of the web and different developer expectations.
Stephan Herhut, Richard L. Hudson, Tatiana Shpeisman, Jaswanth Sreeram
OOPSLA2
2008 Concurrent GC leveraging transactional memory
abstract
We predict that the ever-growing number of cores on our desktops will require a re-examination of concurrent programming. Two technologies are likely to become mainstream in response: Transactional memory provides a superior programming model to traditional lock-based concurrency, while Concurrent GC can take advantage of multiple cores to eliminate perceptible pauses in desktop applications such as games or Internet telephony. This paper proposes a combination of the two technologies, producing a synergy that improves scalability while eliminating the annoyance of user-perceivable pauses.
Phil McGachey, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Vijay Menon 0002, Bratin Saha, Tatiana Shpeisman
PPoPP3
2008 Practical weak-atomicity semantics for java stm
abstract
As memory transactions have been proposed as a language-level replacement for locks, there is growing need for well-defined semantics. In contrast to database transactions, transaction memory (TM) semantics are complicated by the fact that programs may access the same memory locations both inside and outside transactions. Strongly atomic semantics, where non transactional accesses are treated as implicit single-operation transactions, remain difficult to provide without specialized hardware support or significant performance overhead. As an alternative, many in the community have informally proposed that a single global lock semantics [18,10], where transaction semantics are mapped to those of regions protected by a single global lock, provide an intuitive and efficiently implementable model for programmers.
Vijay Menon 0002, Steven Balensiefer, Tatiana Shpeisman, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Bratin Saha, Adam Welc
SPAA5
2007 Enabling scalability and performance in a large scale CMP environment
abstract
Hardware trends suggest that large-scale CMP architectures, with tens to hundreds of processing cores on a single piece of silicon, are iminent within the next decade. While existing CMP machines have traditionally been handled in the same way as SMPs, this magnitude of parallelism introduces several fundamental challenges at the architectural level and this, in turn, translates to novel challenges in the design of the software stack for these platforms. This paper presents the "Many Core Run Time" (McRT), a software prototype of an integrated language runtime that was designed to explore configurations of the software stack for enabling performance and scalability on large scale CMP platforms. This paper presents the architecture of McRT and discusses our experiences with the system, including experimental evaluation that lead to several interesting, non-intuitive findings, providing key insights about the structure of the system stack at this scale. A key contribution of this paper is to demonstrate how McRT enables near linear improvements in performance and scalability for desktop workloads such as the popular XviD encoder and a set of RMS (recognition, mining, and synthesis) applications. Another key contribution of this work is its use of McRT to explore non-traditional system configurations such as a light-weight executive in which McRT runs on "bare metal" and replaces the traditional OS. Such configurations are becoming an increasingly attractive alternative to leverage heterogeneous computing uints as seen in today's CPU-GPU configurations.
Bratin Saha, Ali-Reza Adl-Tabatabai, Anwar M. Ghuloum, Mohan Rajagopalan, Richard L. Hudson, Leaf Petersen, Vijay Menon 0002, Brian R. Murphy, Tatiana Shpeisman, Eric Sprangle, Anwar Rohillah, Doug Carmean, Jesse Fang
EuroSys5
2007 Enforcing isolation and ordering in STM
abstract
Transactional memory provides a new concurrency control mechanism that avoids many of the pitfalls of lock-based synchronization. High-performance software transactional memory (STM) implementations thus far provide weak atomicity: Accessing shared data both inside and outside a transaction can result in unexpected, implementation-dependent behavior. To guarantee isolation and consistent ordering in such a system, programmers are expected to enclose all shared-memory accesses inside transactions.
Tatiana Shpeisman, Vijay Menon 0002, Ali-Reza Adl-Tabatabai, Steven Balensiefer, Dan Grossman, Richard L. Hudson, Katherine F. Moore, Bratin Saha
PLDI6
2007 Open nesting in software transactional memory
abstract
Transactional memory (TM) promises to simplify concurrent programming while providing scalability competitive to fine-grained locking. Language-based constructs allow programmers to denote atomic regions declaratively and to rely on the underlying system to provide transactional guarantees along with concurrency. In contrast with fine-grained locking, TM allows programmers to write simpler programs that are composable and deadlock-free.
Vijay Menon 0002, Ali-Reza Adl-Tabatabai, Antony L. Hosking, Richard L. Hudson, J. Eliot B. Moss, Bratin Saha, Tatiana Shpeisman
PPoPP5
2006 McRT-Malloc: a scalable transactional memory allocator
abstract
Emerging multi-core processors promise to provide an exponentially increasing number of hardware threads with every generation. Applications will need to be highly concurrent to fullyuse the power of these processors. To enable maximum concurrency, libraries (such as malloc-free packages) would therefore need to use non-blocking algorithms. But lock-free algorithms are notoriously difficult to reason about and inappropriate for average programmers. Transactional memory promises to significantly ease concurrent programming for the average programmer. This paper describes a highly efficient non-blocking malloc/free algorithm that supports memory allocation and deallocation inside transactional code blocks. Thus this paper describes a memory allocator that is suitable for emerging multi-core applications, while supporting modern concurrency constructs.This paper makes several novel contributions. It is the first to integrate a software transactional memory system with a malloc/free based memory allocator. We present the first algorithm which ensures that space allocated in an aborted transaction is properly freed and does not lead to a space blowup. Unlike previous lock-free malloc packages, our algorithm avoids atomic operations on typical code paths, making our algorithm substantially more efficient.
Richard L. Hudson, Bratin Saha, Ali-Reza Adl-Tabatabai, Ben Hertzberg
ISMM1
2006 McRT-STM: a high performance software transactional memory system for a multi-core runtime
abstract
Applications need to become more concurrent to take advantage of the increased computational power provided by chip level multiprocessing. Programmers have traditionally managed this concurrency using locks (mutex based synchronization). Unfortunately, lock based synchronization often leads to deadlocks, makes fine-grained synchronization difficult, hinders composition of atomic primitives, and provides no support for error recovery. Transactions avoid many of these problems, and therefore, promise to ease concurrent programming.We describe a software transactional memory (STM) system that is part of McRT, an experimental Multi-Core RunTime. The McRT-STM implementation uses a number of novel algorithms, and supports advanced features such as nested transactions with partial aborts, conditional signaling within a transaction, and object based conflict detection for C/C++ applications. The McRT-STM exports interfaces that can be used from C/C++ programs directly or as a target for compilers translating higher level linguistic constructs.We present a detailed performance analysis of various STM design tradeoffs such as pessimistic versus optimistic concurrency, undo logging versus write buffering, and cache line based versus object based conflict detection. We also show a MCAS implementation that works on arbitrary values, coexists with the STM, and can be used as a more efficient form of transactional memory. To provide a baseline we compare the performance of the STM with that of fine-grained and coarse-grained locking using a number of concurrent data structures on a 16-processor SMP system. We also show our STM performance on a non-synthetic workload -- the Linux sendmail application.
Bratin Saha, Ali-Reza Adl-Tabatabai, Richard L. Hudson, Chi Cao Minh, Ben Hertzberg
PPoPP3
2004 Prefetch inection based on hardware monitoring and object metadata
abstract
Cache miss stalls hurt performance because of the large gap between memory and processor speeds - for example, the popular server benchmark SPEC JBB2000 spends 45% of its cycles stalled waiting for memory requests on the Itanium® 2 processor. Traversing linked data structures causes a large portion of these stalls. Prefetching for linked data structures remains a major challenge because serial data dependencies between elements in a linked data structure preclude the timely materialization of prefetch addresses. This paper presents Mississippi Delta (MS Delta), a novel technique for prefetching linked data structures that closely integrates the hardware performance monitor (HPM), the garbage collector's global view of heap and object layout, the type-level metadata inherent in type-safe programs, and JIT compiler analysis. The garbage collector uses the HPM's data cache miss information to identify cache miss intensive traversal paths through linked data structures, and then discovers regular distances (deltas) between these linked objects. JIT compiler analysis injects prefetch instructions using deltas to materialize prefetch addresses.We have implemented MS Delta in a fully dynamic profile-guided optimization system: the StarJIT dynamic compiler [1] and the ORP Java virtual machine [9]. We demonstrate a 28-29% reduction in stall cycles attributable to the high-latency cache misses targeted by MS Delta and a speedup of 11-14% on the cache miss intensive SPEC JBB2000 benchmark.
Ali-Reza Adl-Tabatabai, Richard L. Hudson, Mauricio J. Serrano, Sreenivas Subramoney
PLDI2
2003 Sapphire: copying garbage collection without stopping the world
abstract
Abstract The growing use in concurrent systems of languages that require garbage collection (GC), such as Java, is raising practical interest in concurrent GC. Sapphire is a new algorithm for concurrent copying GC for Java. It stresses minimizing the amount of time any given application thread may need to block to support the collector. In particular, Sapphire is intended to work well in the presence of a large number of application threads, on small‐ to medium‐scale shared memory multiprocessors. Sapphire extends previous concurrent copying algorithms, and is most closely related to replicating copying collection, a GC technique in which application threads observe and update primarily the old copies of objects. The key innovations of Sapphire are: (1) the ability to ‘flip’ one thread at a time (changing the thread's view from the old copies of objects to the new copies), as opposed to needing to stop all threads and flip them at the same time; (2) exploiting Java semantics and assuming any data races occur on volatile fields, to avoid a barrier on reads of non‐volatile fields; and (3) working in concert with virtually any underlying (non‐concurrent) copying collection algorithm. Copyright © 2003 John Wiley & Sons, Ltd.
Richard L. Hudson, J. Eliot B. Moss
Concurr. Comput. Pract. Exp.1
2000 Cycles to Recycle: Garbage Collection on the IA-64
abstract
The IA-64, Intel's 64-bit instruction set architecture, exhibits a number of interesting architectural features. Here we consider those features as they relate to supporting garbage collection (GC). We aim to assist GC and compiler implementors by describing how one may exploit features of the IA-64. Along the way, we record some previously unpublished object scanning techniques, and offer novel ones for object allocation (suggesting some simple operating system support that would simplify it) and the Java “jsr problem”. We also discuss ordering of memory accesses and how the IA-64 can achieve publication safety efficiently. While our focus is not on any particular GC implementation or programming language, we draw on our experience designing and implementing GC for the Intel Java Virtual Machine for the IA-64.
Richard L. Hudson, J. Eliot B. Moss, Sreenivas Subramoney, Weldon Washburn
ISMM1
1997 Garbage Collecting the World: One Car at a Time
abstract
A new garbage collection algorithm for distributed object systems, called DMOS (Distributed. Mature Object Space), is presented. It is derived from two previous algorithms, MOS (Mature Object Space), sometimes called the train algorithm, and PMOS (Persistent Mature Object Space). The contribution of DMOS is that it provides the following unique combination of properties for a distributed collector: safety, completeness, non-disruptiveness, incrementality, and scalability. Furthermore, the DMOS collector is non-blocking and does not use global tracing.
Richard L. Hudson, Ronald Morrison, J. Eliot B. Moss, David S. Munro
OOPSLA1
1992 Compiler Support for Garbage Collection in a Statically Typed Language
abstract
We consider the problem of supporting compacting garbage collection in the presence of modern compiler optimizations. Since our collector may move any heap object, it must accurately locate, follow, and update all pointers and values derived from pointers. To assist the collector, we extend the compiler to emit tables describing live pointers, and values derived from pointers, at each program location where collection may occur. Significant results include identification of a number of problems posed by optimizations, solutions to those problems, a working compiler, and experimental data concerning table sizes, table compression, and time overhead of decoding tables during collection. While gc support can affect the code produced, our sample programs show no significant changes, the table sizes are a modest fraction of the size of the optimized code, and stack tracing is a small fraction of total gc time. Since the compiler enhancements are also modest, we conclude that the approach is practical.
Amer Diwan, J. Eliot B. Moss, Richard L. Hudson
PLDI3