05.08.2014 Views

here - Stefan-Marr.de

here - Stefan-Marr.de

here - Stefan-Marr.de

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

1.2. Problem Statement<br />

and garbage collection [Jones et al., 2011] led to highly efficient VM implementations<br />

that can support a wi<strong>de</strong> variety of use cases. The diversity<br />

in supported use case as well as availability turned these VMs into relevant<br />

targets for language implementation. With the invokedynamic<br />

byteco<strong>de</strong> [Rose, 2009; Thalinger and Rose, 2010], the JVM improved its<br />

support for dynamic languages even further. Moreover, other language<br />

paradigms may benefit from improved support.<br />

1.2. Problem Statement<br />

While many domains, e. g., web applications or single-use scripts, are sensitive<br />

to programmer productivity, the field of concurrent and parallel programming<br />

frequently requires a tra<strong>de</strong>off in favor of performance. In practice,<br />

the need for parallel execution only arises when certain performance properties<br />

like minimal latency, responsiveness, or high throughput are required<br />

and these requirements cannot be fulfilled with sequential implementations.<br />

Sequential performance improvements eventually level off because of physical<br />

and engineering limitations, known as the power wall, memory wall, and<br />

instruction-level parallelism wall [Asanovic et al., 2006]. Additionally, the rise of<br />

<strong>de</strong>vices that are sensitive to energy efficiency further increases the need for<br />

parallelization. Compared to today’s personal computers, the restricted energy<br />

budget of mobile and autonomous <strong>de</strong>vices effectively reduces available<br />

sequential processing power. Thus, it becomes more common for application<br />

<strong>de</strong>velopers to consi<strong>de</strong>r performance, further increasing the necessity to utilize<br />

parallel and concurrent programming techniques.<br />

When exploiting parallel hardware, the diversity of concurrent and parallel<br />

programming concepts and the absence of a one-size-fits-all solution<br />

suggest using problem-specific abstractions to enable application <strong>de</strong>velopers<br />

to address the in<strong>here</strong>nt complexity. However, today’s VMs support only a<br />

small and often low-level set of such concepts. While the rise of dynamic languages<br />

led, for example, to explicit support of customizable method lookup<br />

strategies in the JVM through the invokedynamic byteco<strong>de</strong>, VMs do not<br />

provi<strong>de</strong> similar mechanisms to enable library and language implementers to<br />

build custom abstractions for concurrent and parallel programming. On the<br />

contrary, platforms such as the JVM and CLI, which feature shared memory<br />

semantics and thread-based concurrency mo<strong>de</strong>ls, make it hard to faithfully<br />

implement abstractions like the actor mo<strong>de</strong>l [Karmani et al., 2009]. On such<br />

platforms, implementation simplicity or correct language semantics are often<br />

3

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!