论文标题
Pathcas:并发搜索数据结构的有效中间立场
PathCAS: An Efficient Middle Ground for Concurrent Search Data Structures
论文作者
论文摘要
为了最大程度地提高并发数据结构的性能,研究人员经常转向高度复杂的细粒技术,从而产生高效且优雅的算法,但是,这些算法通常很难理解和证明是正确的。尽管存在更简单的技术(例如交易记忆),但相对于精细粒度对应物,它们的性能或可移植性可能有限。在这种复杂性 - 性能谱的两端的两端方法已经进行了广泛的探索,但是对中间立场的了解相对较少:愿意为简单起见牺牲某些绩效的方法,同时保持与最先进的手工设计的竞争力。 在本文中,我们探索了这一中间立场,并介绍了Pathcas,这是一种原始的,它结合了多字CAS(KCAS)和交易记忆方法的想法,同时仔细避开开销。我们展示了如何使用内部二进制搜索树作为示例,然后将Pathcas相对简单地实现有效的搜索数据结构,然后将其扩展到AVL树。我们的最佳实现优于许多手工搜索树:在搜索量较重的工作量中,它与BCCO树相媲美[5],这是搜索性能[3]的最快已知并发二进制树。我们的结果表明,PATHCA可以产生并发的数据结构,这些数据结构相对容易构建和证明正确,同时提供了令人惊讶的高性能。
To maximize the performance of concurrent data structures, researchers have often turned to highly complex fine-grained techniques, resulting in efficient and elegant algorithms, which can however be often difficult to understand and prove correct. While simpler techniques exist, such as transactional memory, they can have limited performance or portability relative to their fine-grained counterparts. Approaches at both ends of this complexity-performance spectrum have been extensively explored, but relatively less is known about the middle ground: approaches that are willing to sacrifice some performance for simplicity, while remaining competitive with state-of-the-art handcrafted designs. In this paper, we explore this middle ground, and present PathCAS, a primitive that combines ideas from multi-word CAS (KCAS) and transactional memory approaches, while carefully avoiding overhead. We show how PathCAS can be used to implement efficient search data structures relatively simply, using an internal binary search tree as an example, then extending this to an AVL tree. Our best implementations outperform many handcrafted search trees: in search-heavy workloads, it rivals the BCCO tree [5], the fastest known concurrent binary tree in terms of search performance [3]. Our results suggest that PathCAS can yield concurrent data structures that are relatively easy to build and prove correct, while offering surprisingly high performance.