210 research outputs found
A Power-Aware Framework for Executing Streaming Programs on Networks-on-Chip
Nilesh Karavadara, Simon Folie, Michael Zolda, Vu Thien Nga Nguyen, Raimund Kirner, 'A Power-Aware Framework for Executing Streaming Programs on Networks-on-Chip'. Paper presented at the Int'l Workshop on Performance, Power and Predictability of Many-Core Embedded Systems (3PMCES'14), Dresden, Germany, 24-28 March 2014.Software developers are discovering that practices which have successfully served single-core platforms for decades do no longer work for multi-cores. Stream processing is a parallel execution model that is well-suited for architectures with multiple computational elements that are connected by a network. We propose a power-aware streaming execution layer for network-on-chip architectures that addresses the energy constraints of embedded devices. Our proof-of-concept implementation targets the Intel SCC processor, which connects 48 cores via a network-on- chip. We motivate our design decisions and describe the status of our implementation
A Survey of Asynchronous Programming Using Coroutines in the Internet of Things and Embedded Systems
Many Internet of Things and embedded projects are event-driven, and therefore
require asynchronous and concurrent programming. Current proposals for C++20
suggest that coroutines will have native language support. It is timely to
survey the current use of coroutines in embedded systems development. This
paper investigates existing research which uses or describes coroutines on
resource-constrained platforms. The existing research is analysed with regard
to: software platform, hardware platform and capacity; use cases and intended
benefits; and the application programming interface design used for coroutines.
A systematic mapping study was performed, to select studies published between
2007 and 2018 which contained original research into the application of
coroutines on resource-constrained platforms. An initial set of 566 candidate
papers were reduced to only 35 after filters were applied, revealing the
following taxonomy. The C & C++ programming languages were used by 22 studies
out of 35. As regards hardware, 16 studies used 8- or 16-bit processors while
13 used 32-bit processors. The four most common use cases were concurrency (17
papers), network communication (15), sensor readings (9) and data flow (7). The
leading intended benefits were code style and simplicity (12 papers),
scheduling (9) and efficiency (8). A wide variety of techniques have been used
to implement coroutines, including native macros, additional tool chain steps,
new language features and non-portable assembly language. We conclude that
there is widespread demand for coroutines on resource-constrained devices. Our
findings suggest that there is significant demand for a formalised, stable,
well-supported implementation of coroutines in C++, designed with consideration
of the special needs of resource-constrained devices, and further that such an
implementation would bring benefits specific to such devices.Comment: 22 pages, 8 figures, to be published in ACM Transactions on Embedded
Computing Systems (TECS
Virtual Machine Support for Many-Core Architectures: Decoupling Abstract from Concrete Concurrency Models
The upcoming many-core architectures require software developers to exploit
concurrency to utilize available computational power. Today's high-level
language virtual machines (VMs), which are a cornerstone of software
development, do not provide sufficient abstraction for concurrency concepts. We
analyze concrete and abstract concurrency models and identify the challenges
they impose for VMs. To provide sufficient concurrency support in VMs, we
propose to integrate concurrency operations into VM instruction sets.
Since there will always be VMs optimized for special purposes, our goal is to
develop a methodology to design instruction sets with concurrency support.
Therefore, we also propose a list of trade-offs that have to be investigated to
advise the design of such instruction sets.
As a first experiment, we implemented one instruction set extension for
shared memory and one for non-shared memory concurrency. From our experimental
results, we derived a list of requirements for a full-grown experimental
environment for further research
A Monitoring Language for Run Time and Post-Mortem Behavior Analysis and Visualization
UFO is a new implementation of FORMAN, a declarative monitoring language, in
which rules are compiled into execution monitors that run on a virtual machine
supported by the Alamo monitor architecture.Comment: In M. Ronsse, K. De Bosschere (eds), proceedings of the Fifth
International Workshop on Automated Debugging (AADEBUG 2003), September 2003,
Ghent. cs.SE/030902
Delimited continuations for Prolog
Delimited continuations are a famous control primitive that originates in the functional programming world. It allows the programmer to suspend and capture the remaining part of a computation in order to resume it later. We put a new Prolog-compatible face on this primitive and specify its semantics by means of a meta-interpreter. Moreover, we establish the power of delimited continuations in Prolog with several example definitions of high-level language features. Finally, we show how to easily and effectively add delimited continuations support to the WAM
Document number: N4024 Date: 2014-05-22 Project:
Reply-to: Nat Goodspeed ( nat at lindenlab dot com) Oliver Kowalke (oliver dot kowalke at gmail dot com) Distinguishing coroutines and fiber
- …