5 results on '"Concurrent data structure"'
Search Results
2. Software-based contention management for efficient compare-and-swap operations
- Author
-
Danny Hendler, Dave Dice, and Ilya Mirsky
- Subjects
Java ,Computer Networks and Communications ,business.industry ,Concurrent data structure ,Computer science ,Distributed computing ,Multiprocessing ,Thread (computing) ,Software_PROGRAMMINGTECHNIQUES ,computer.software_genre ,Data structure ,Computer Science Applications ,Theoretical Computer Science ,Compare-and-swap ,Software ,Computational Theory and Mathematics ,Operating system ,business ,computer ,Implementation ,computer.programming_language - Abstract
Many concurrent data-structure implementations - both blocking and non-blocking - use the well-known compare-and-swap CAS operation, supported in hardware by most modern multiprocessor architectures, for inter-thread synchronization. A key weakness of the CAS operation is its performance in the presence of memory contention. When multiple threads concurrently attempt to apply CAS operations to the same shared variable, at most a single thread will succeed in changing the shared variable's value and the CAS operations of all other threads will fail. Moreover, significant degradation in performance occurs when variables manipulated by CAS become contention 'hot spots', because failed CAS operations congest the interconnect and memory devices and slow down successful CAS operations. In this work, we study the following question: can software-based contention management improve the efficiency of hardware-provided CAS operations? In other words, can a software contention management layer, encapsulating invocations of hardware CAS instructions, improve the performance of CAS-based concurrent data structures? To address this question, we conduct what is, to the best of our knowledge, the first study on the impact of contention management algorithms on the efficiency of the CAS operation. We implemented several Java classes, that extend Java's AtomicReference class, and encapsulate calls to the native CAS instruction with simple contention management mechanisms tuned for different hardware platforms. A key property of our algorithms is the support for an almost-transparent interchange with Java's AtomicReference objects, used in implementations of concurrent data structures. We evaluate the impact of these algorithms on both a synthetic micro-benchmark and on CAS-based concurrent implementations of widely-used data structures such as stacks and queues. Our performance evaluation establishes that lightweight software-based contention management support can greatly improve performance under medium and high contention levels while typically incurring only small overhead under low contention. In some cases, applying efficient contention management for CAS operations used by a simpler data-structure implementation yields better results than highly optimized implementations of the same data structure that use native CAS operations directly. Copyright © 2014 John Wiley & Sons, Ltd.
- Published
- 2014
3. A concurrent van Emde Boas array as a fast and simple concurrent dynamic set alternative
- Author
-
Konrad Kułakowski
- Subjects
Java ,Computer Networks and Communications ,Concurrent data structure ,Computer science ,Parallel computing ,Thread (computing) ,Computer Science Applications ,Theoretical Computer Science ,Set (abstract data type) ,Tree (data structure) ,Computational Theory and Mathematics ,Parallel processing (DSP implementation) ,Van Emde Boas tree ,Concurrent computing ,Node (circuits) ,computer ,Software ,computer.programming_language - Abstract
SUMMARY Increasing demand for computationally efficient algorithms and processors has turned the attention of researchers toward parallel and concurrent solutions. Because the frequency of contemporary processors cannot be tweaked infinitely, the only hopes for squeezing more performance from computers are parallel processing and parallel computation. The important part of every parallel solution is concurrent data structures, which allow multithread programming environments to be taken advantage of. In this article, a new concurrent dynamic set structure is proposed. It is based on the van Emde Boas trees concept, where on every node of a tree, an array of the node's children is stored. The structure is equipped with a simple but effective locking algorithm, which allows it to be used concurrently by any number of threads. The presented algorithm idea is accompanied by an experimental implementation written in JAVA 6. Preliminary tests prove that, especially for moderately larger data sets with a predominance of read operations, the concurrent van Emde Boas array proposed in this article may be a viable alternative for other structures providing a similar functionality. Copyright © 2013 John Wiley & Sons, Ltd.
- Published
- 2013
4. Micro-transactions for concurrent data structures
- Author
-
Karthik Chandrashekar Iyer, Fadi Meawad, Jan Vitek, and Martin Schoeberl
- Subjects
Java ,Computer Networks and Communications ,Concurrent data structure ,Computer science ,Transactional memory ,Multiprocessing ,Data structure ,computer.software_genre ,Computer Science Applications ,Theoretical Computer Science ,Concurrency control ,Java Optimized Processor ,Computational Theory and Mathematics ,Atomic operations ,Operating system ,Software transactional memory ,computer ,Software ,computer.programming_language - Abstract
SUMMARY Transactional memory is a promising technique for enforcing disciplined access to shared data in a multiprocessor system. Transactional memory simplifies the implementation of a variety of concurrent data structures. In this paper, we study the benefits of a modest, real-time aware, hardware implementation of transactional memory that we call micro-transactions. In particular, we argue that hardware support for micro-transactions allows us to efficiently implement certain data structures. Those data structures are difficult to realize with the atomic operations provided by stock hardware and provide real-time guarantees for those operations. Our main implementation platform is the Java Optimized Processor system, a field-programmable gate array (FPGA) implementation of the Java virtual machine, optimized for real-time Java. We report on the performance of data structures implemented with locks, atomic instructions, and micro-transactions. Our results suggest that transactional memory is an interesting alternative to traditional concurrency control mechanisms. Copyright © 2012 John Wiley & Sons, Ltd.
- Published
- 2012
5. FairThreads: mixing cooperative and preemptive threads in C
- Author
-
Frédéric Boussinot
- Subjects
Computer Networks and Communications ,Computer science ,Readers–writers problem ,Concurrent data structure ,Concurrency ,Distributed computing ,Process (computing) ,Preemption ,020207 software engineering ,Multiprocessing ,02 engineering and technology ,Thread (computing) ,Java concurrency ,Gang scheduling ,Computer Science Applications ,Theoretical Computer Science ,Scheduling (computing) ,Computational Theory and Mathematics ,Green threads ,0202 electrical engineering, electronic engineering, information engineering ,Reactive programming ,020201 artificial intelligence & image processing ,Software - Abstract
FairThreads introduces fair threads which are executed in a cooperative way when linked to a scheduler, and in a preemptive way otherwise. Constructs exist for programming the dynamic linking/unlinking of threads during execution. Users can profit from the cooperative scheduling when threads are linked. For example, data only accessed by the threads linked to the same scheduler does not need to be protected by locks. Users can also profit from the preemptive scheduling provided by the operating system (OS) when threads are unlinked, for example to deal with blocking I/Os. In the cooperative context, for the threads linked to the same scheduler, FairThreads make it possible to use broadcast events. Broadcasting is a powerful, abstract, and modular means of communication. Basically, event broadcasting is made possible by the specific way threads are scheduled by the scheduler to which they are linked (the ‘fair’ strategy). FairThreads give a way to deal with some limitations of the OS. Automata are special threads, coded as state machines, which do not need the allocation of a native thread and which have efficient execution. Automata also give a means to deal with the limited number of native threads available when large numbers of concurrent tasks are needed, for example in simulations. Copyright © 2005 John Wiley & Sons, Ltd.
- Published
- 2006
Catalog
Discovery Service for Jio Institute Digital Library
For full access to our library's resources, please sign in.