In ACTORS media and signal streams will be modeled as data-flow networks. The streams will be mapped onto Linux threads and execute in a virtual CPU under the control of a reservation-based scheduler. Feedback will be used to dynamically adjust the size of the reservations based on actual resource consumption and quality-of-service (QoS) (global feedback) and to adjust the resource consumption within the individual streams (local feedback).
Data-Flow Based Modeling
The standard imperative programming model (e.g. C/C++) is not always the best choice for utilizing modern hardware to the maximum. By raising the abstraction level a few steps we can present the algorithm developer with a less cluttered programming view and at the same time generate code with an improved level of quality. For a large class of embedded system applications including feedback control, signal processing and multimedia streaming and processing, dataflow models and dataflow languages, in particular actor languages, have superior properties.
Actors provides a logical separation of different aspects of an algorithm, namely
– communication, and
This allows for development of predictable systems composed from a set of reusable components, i.e. actors. In traditional programming methods these different properties of an algorithm are interwoven, and often not formally specified, which makes composition and analysis of expected behaviour impossible.
An actor application consists of a network of actors, which in turn may be viewed as an actor itself, and hence provides a proper and predictable mechanism for encapsulation and modularisation. How the actors communicate internally and how they are scheduled depend on the particular model of computation (MoC) for that network. Actors and actor networks may be composed in a hierarchical fashion and may also have different MoCs.
The ACTORS project is based on the CAL language, a data flow oriented actors language that has recently been specified and developed as subproject of the Ptolemy project at the University of California at Berkeley. An actor is a modular component that encapsulates its own state. The only interaction between actors is through FIFO channels connecting â€output portsâ€ to â€input ports”, which they use to send and receive â€tokensâ€.
Since CAL is a smaller and more constrained language than C/C++ the possibilities to generate efficient code are larger. This is particularly important for next generation of microprocessors with special instruction sets for media processing. In ACTORS code generation is performed from CAL directly to machine language, e.g., to ARM11 multicore platforms.
In the systems of today, resource usage in terms of CPU, memory, power, bus utilization, etc., is done in a most ad hoc manner. Moreover, software components that in some respect misuse the common resources are hard to detect and reconfigure. By introducing virtualization, or virtualization-like techniques, including everything from virtual machines to bandwidth scheduling, we have the necessary means for providing different levels of isolation. Virtualization such as reservation-based scheduling (RBS) allows functions and applications to share the processor without temporal or spatial interaction. Reservations can easily be composed, are easier to develop and test, and provide security support.
In many embedded systems worst-case designs are unfeasible for several reasons. One of these is the over-provisioning of resources that this typically implies. Other reasons are uncertainties associated with worst-case resource utilization estimates and on-line changes in objectives, external conditions and use cases. In a feedback-based resource management system, the allocation of resources is based on a comparison of the actual resource utilization by, e.g., a set of activities or tasks, with the desired resource utilization. The difference is then used for deciding how the resources should be allocated to the different activities. The decision mechanism constitutes the feedback controller in the scheduling scheme. Feedback control makes it possible to deal with uncertainties and variations in a controlled way.