Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level
碩士 === 國立中正大學 === 資訊工程研究所 === 102 === As computer hardware evolves, the importance of parallel programming paradigm increases. As more and more multi-core processors emerge, traditional sequential programming paradigm no longer suffices. Yet only few modern dynamic programming languages can leverage...
Main Authors: | , |
---|---|
Other Authors: | |
Format: | Others |
Language: | en_US |
Published: |
2014
|
Online Access: | http://ndltd.ncl.edu.tw/handle/49813811049358903093 |
id |
ndltd-TW-102CCU00392080 |
---|---|
record_format |
oai_dc |
spelling |
ndltd-TW-102CCU003920802015-10-13T23:38:24Z http://ndltd.ncl.edu.tw/handle/49813811049358903093 Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level HSU, SZU-KAI 許斯凱 碩士 國立中正大學 資訊工程研究所 102 As computer hardware evolves, the importance of parallel programming paradigm increases. As more and more multi-core processors emerge, traditional sequential programming paradigm no longer suffices. Yet only few modern dynamic programming languages can leverage such advantage. Ruby, for example, despite its wide adoption, only includes threads as a simple parallel primitive. The global virtual machine lock of official Ruby runtime makes it impossible to exploit full parallelism. Though various alternative Ruby implementations do eliminate the global virtual machine lock, they only provide developers dated locking mechanism for data synchronization. However, traditional locking mechanism error-prone by nature. Software Transactional Memory is one of the promising alternatives among others. It applies the concept of database transaction to memory manipulations, which ensures atomicity, consistency, isolation, and durability. The abstraction of transactions also avoids some common synchronization errors in the context of locking mechanism. This paper introduces a new virtual machine: GobiesVM to provide a native software transactional memory based solution for dynamic programming languages to exploit parallelism. We also proposed a simplified variation of Transactional Locking II algorithm. Our version combines the original read-set and the write-set into a single object set which makes the algorithm more comprehensive and reduces overhead regarding multiple set maintenance. The empirical results of our experiments show that support of STM at virtual machine level enables developers to write straightforward code without compromising parallelism or sacrificing thread safety. Existing source code only requires minimal or even none modification, which allows developers to easily switch their legacy codebase to a parallel environment. The performance evaluations of GobiesVM also indicate the difference between sequential and parallel execution is significant. LIN, PO-CHING 林柏青 2014 學位論文 ; thesis 28 en_US |
collection |
NDLTD |
language |
en_US |
format |
Others
|
sources |
NDLTD |
description |
碩士 === 國立中正大學 === 資訊工程研究所 === 102 === As computer hardware evolves, the importance of parallel programming paradigm increases. As more and more multi-core processors emerge, traditional sequential programming paradigm no longer suffices. Yet only few modern dynamic programming languages can leverage such advantage. Ruby, for example, despite its wide adoption, only includes threads as a simple parallel primitive. The global virtual machine lock of official Ruby runtime makes it impossible to exploit full parallelism. Though various alternative Ruby implementations do eliminate the global virtual machine lock, they only provide developers dated locking mechanism for data synchronization. However, traditional locking mechanism error-prone by nature. Software Transactional Memory is one of the promising alternatives among others. It applies the concept of database transaction to memory manipulations, which ensures atomicity, consistency, isolation, and durability. The abstraction of transactions also avoids some common synchronization errors in the context of locking mechanism. This paper introduces a new virtual machine: GobiesVM to provide a native software transactional memory based solution for dynamic programming languages to exploit parallelism. We also proposed a simplified variation of Transactional Locking II algorithm. Our version combines the original read-set and the write-set into a single object set which makes the algorithm more comprehensive and reduces overhead regarding multiple set maintenance. The empirical results of our experiments show that support of STM at virtual machine level enables developers to write straightforward code without compromising parallelism or sacrificing thread safety. Existing source code only requires minimal or even none modification, which allows developers to easily switch their legacy codebase to a parallel environment. The performance evaluations of GobiesVM also indicate the difference between sequential and parallel execution is significant.
|
author2 |
LIN, PO-CHING |
author_facet |
LIN, PO-CHING HSU, SZU-KAI 許斯凱 |
author |
HSU, SZU-KAI 許斯凱 |
spellingShingle |
HSU, SZU-KAI 許斯凱 Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level |
author_sort |
HSU, SZU-KAI |
title |
Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level |
title_short |
Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level |
title_full |
Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level |
title_fullStr |
Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level |
title_full_unstemmed |
Software Transactional Memory in a Dynamic Programming Language at Virtual Machine Level |
title_sort |
software transactional memory in a dynamic programming language at virtual machine level |
publishDate |
2014 |
url |
http://ndltd.ncl.edu.tw/handle/49813811049358903093 |
work_keys_str_mv |
AT hsuszukai softwaretransactionalmemoryinadynamicprogramminglanguageatvirtualmachinelevel AT xǔsīkǎi softwaretransactionalmemoryinadynamicprogramminglanguageatvirtualmachinelevel |
_version_ |
1718086287561326592 |