
The University of Manchester Research Transactional Data Structures Link to publication record in Manchester Research Explorer Citation for published version (APA): Jarvis, K. (2011). Transactional Data Structures. University of Manchester. Citing this paper Please note that where the full-text provided on Manchester Research Explorer is the Author Accepted Manuscript or Proof version this may differ from the final Published version. If citing, it is advised that you check and use the publisher's definitive version. General rights Copyright and moral rights for the publications made accessible in the Research Explorer are retained by the authors and/or other copyright owners and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights. Takedown policy If you believe that this document breaches copyright please refer to the University of Manchester’s Takedown Procedures [http://man.ac.uk/04Y6Bo] or contact [email protected] providing relevant details, so we can investigate your claim. Download date:04. Oct. 2021 TRANSACTIONAL DATA STRUCTURES A thesis submitted to the University of Manchester for the degree of Doctor of Philosophy in the Faculty of Engineering and Physical Sciences 2011 By Kimberley Jarvis Computer Science Contents Abstract 11 Declaration 12 Copyright 13 Acknowledgements 14 1 Introduction 15 1.1 Speculative execution . 15 1.1.1 Mutual exclusion . 15 1.1.2 Speculative execution . 16 1.1.3 Techniques to support speculative execution . 16 1.1.4 Infrastructure to support speculative execution . 17 1.1.5 The problem with locks . 18 1.1.6 The concurrency problem . 19 1.2 Memory Transactions . 21 1.2.1 Transactional Memory systems . 21 1.2.2 Design priorities . 22 1.2.3 Design choices . 23 1.2.4 The development of Transactional Memory . 25 1.2.5 Software Transactional Memory . 25 1.2.6 Hardware Transactional Memory . 26 1.2.7 Ease of programming . 28 2 Concurrent Programming 30 2.1 Concurrent IO . 31 2.1.1 The interaction with external entities . 31 2 2.1.2 The database programming model . 32 2.1.3 Atomic sections . 33 2.1.4 Previous work . 35 2.1.5 The Client Server Database Model . 36 2.1.6 Heterogeneous processors . 37 2.2 Parallelism . 39 2.2.1 Temporal uncertainty . 39 2.2.2 Minimising temporal uncertainty . 41 2.2.3 Functional dependencies . 42 2.2.4 Mutable shared state . 43 2.2.5 Coordinating concurrent actions . 44 2.2.6 Previous work . 44 2.2.7 The speculative execution of functional programs . 45 2.2.8 Composable atomic sections . 47 2.3 Compatibility . 49 2.3.1 Disruptive changes to existing software . 49 2.3.2 Compatibility with existing software . 50 2.3.3 Making concurrent programs easier to write . 51 3 Maintaining State 52 3.1 Speculative State . 53 3.1.1 The memory wall . 53 3.1.2 Immutable memory . 55 3.1.3 Memory bandwidth . 56 3.1.4 The effect of speculation . 57 3.1.5 Moving the bottleneck . 58 3.1.6 Cache coherency . 59 3.2 Immutable Data Structures . 61 3.2.1 Supporting speculation . 61 3.2.2 Immutable Data Structures . 62 3.2.3 Immutability and concurrency . 62 3.3 Path Copying . 65 3.3.1 Implementing Immutable Data Structures . 65 3.3.2 Supporting concurrent access . 70 3.3.3 Path copying transformations . 72 3.3.4 Previous work . 77 3 3.4 Binary Trees . 78 3.4.1 A flexible Immutable Data Structure design . 78 3.4.2 The Canonical Binary Tree . 79 3.4.3 Previous work . 82 3.5 Abstract Data Types for Immutable Data . 85 3.5.1 Priority queue . 85 3.5.2 Directed min-tree . 90 3.5.3 Deque . 93 3.5.4 Directed deque . 94 3.5.5 Map . 98 3.5.6 Interval tree with sentinel . 102 3.5.7 Vector . 103 3.5.8 Directed sequence . 107 3.5.9 Previous work . 109 3.6 Balancing . 110 3.6.1 Balancing schemes . 110 3.6.2 Balancing the Canonical Binary Tree . 112 3.6.3 Previous work . 118 3.6.4 Utility functions . 118 3.6.5 Optimisation . 118 3.6.6 Amortised analysis . 120 3.7 Memory Management . 122 3.7.1 Memory allocation and reclamation . 122 3.7.2 Previous work . 123 4 Accessing State 124 4.1 Linearizable objects . 125 4.1.1 Weak isolation . 125 4.1.2 Strong isolation . 126 4.1.3 Linearizability . 127 4.1.4 Previous work . 128 4.1.5 The semantics of weak isolation . 128 4.1.6 Isolation pathologies . 129 4.1.7 Nested transactions . 130 4.2 Persistent Data Structures . 133 4.2.1 Accessing past versions . 133 4 4.2.2 Persistence . 134 4.2.3 The classification of persistent data structures . 135 4.2.4 Previous work . 137 4.2.5 The classification of Transactional Data Structures . 138 4.3 Entanglement . 140 4.3.1 Fine grained irregular parallelism . 140 4.3.2 The composition of Immutable Data Structures . 141 4.3.3 Entanglement and Persistence . 143 4.3.4 Previous work . 144 4.3.5 Low overhead checkpointing . 145 4.4 Minimum Spanning Tree . 146 4.4.1 Experiment . 146 4.4.2 Results . 148 4.4.3 Method . 150 4.4.4 Serial Graph Colouring Implementation . 151 4.4.5 Serial No-Colouring Implementation . 152 4.4.6 The concurrent implementation of Prim's algorithm . 153 4.4.7 Concurrent Graph Colouring Implementation . 154 4.4.8 Previous work . 154 4.4.9 Concurrent No-Colouring Implementation . 155 4.4.10 The performance of the Concurrent No-Colouring Imple- mentation . 157 5 Concurrency Control 159 5.1 Distributed Concurrency Control . 160 5.1.1 Centralised concurrency control . 160 5.1.2 Distributed concurrency control . 161 5.1.3 Transaction management . 162 5.1.4 Previous work . 163 5.1.5 Time Stamp Ordering . 163 5.1.6 Programmer productivity . 164 5.2 Serialisability . 166 5.2.1 Simultaneous access . 166 5.2.2 Implementing concurrency control . 167 5.2.3 Concurrent semantics . 168 5.2.4 Simultaneous semantics . 169 5 5.2.5 Previous work . 170 5.2.6 Variables . 171 5.2.7 Functions and operations . 172 5.2.8 Validate function . 176 5.2.9 Meta-data . 176 5.3 Confluence . 179 5.3.1 Simultaneous modifications . 179 5.3.2 Meld Function . 179 5.3.3 Previous work . 181 6 Contention Management 183 6.1 Progress and Contention Management . 184 6.1.1 Blocking . 184 6.1.2 Guaranteed progress . 185 6.1.3 The Dining Philosophers . 185 6.1.4 Previous work . 188 6.2 Non-blocking Algorithms . 190 6.2.1 Ensuring serialisability without blocking . 190 6.2.2 Lock-free serialisability . 191 6.2.3 Previous work . ..
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages254 Page
-
File Size-