dc.contributor | Hand, Steven | |
dc.creator | Roy, Amitabha | |
dc.date.accessioned | 2018-11-24T13:11:13Z | |
dc.date.available | 2011-10-31T12:13:23Z | |
dc.date.available | 2018-11-24T13:11:13Z | |
dc.date.issued | 2011-07-12 | |
dc.identifier | http://www.dspace.cam.ac.uk/handle/1810/239410 | |
dc.identifier | https://www.repository.cam.ac.uk/handle/1810/239410 | |
dc.identifier.uri | http://repository.aust.edu.ng/xmlui/handle/123456789/2915 | |
dc.description.abstract | More than a decade after becoming a topic of intense research there is no
transactional memory hardware nor any examples of software transactional memory
use outside the research community. Using software transactional memory in large
pieces of software needs copious source code annotations and often means
that standard compilers and debuggers can no longer be used. At the same time,
overheads associated with software transactional memory fail to motivate
programmers to expend the needed effort to use software transactional
memory. The only way around the overheads in the case of general unmanaged code
is the anticipated availability of hardware support. On the other hand, architects
are unwilling to devote power and area budgets in mainstream microprocessors to
hardware transactional memory, pointing to transactional memory being a
"niche" programming construct. A deadlock has thus ensued that is blocking
transactional memory use and experimentation in the mainstream.
This dissertation covers the design and construction of a software transactional
memory runtime system called SLE_x86 that can potentially break this
deadlock by decoupling transactional memory from programs using it. Unlike most
other STM designs, the core design principle is transparency rather than
performance. SLE_x86 operates at the level of x86 machine code, thereby
becoming immediately applicable to binaries for the popular x86
architecture. The only requirement is that the binary synchronise using known
locking constructs or calls such as those in Pthreads or OpenMP
libraries. SLE_x86 provides speculative lock elision (SLE) entirely in
software, executing critical sections in the binary using transactional
memory. Optionally, the critical sections can also be executed without using
transactions by acquiring the protecting lock.
The dissertation makes a careful analysis of the impact on performance due to
the demands of the x86 memory consistency model and the need to transparently
instrument x86 machine code. It shows that both of these problems can be
overcome to reach a reasonable level of performance, where transparent
software transactional memory can perform better than a lock. SLE_x86 can
ensure that programs are ready for transactional memory in any form, without
being explicitly written for it. | |
dc.language | en | |
dc.publisher | University of Cambridge | |
dc.publisher | Faculty of Computer Science and Technology | |
dc.publisher | Computer Laboratory | |
dc.subject | Software transactional memory | |
dc.subject | x86 memory consistency model | |
dc.subject | Hybrid binary rewriting | |
dc.subject | Lock elision | |
dc.title | Software lock elision for x86 machine code | |
dc.type | Thesis | |