Embedded DSP computing is currently shifting towards manycore architectures in order to cope with the ever growing computational demands. Actor based dataflow languages are being considered as a programming model. In this paper we present a code generator for CAL, one such dataflow language. We propose to use a compilation tool with two intermediate representations. We start from a machine model of the actors that provides an ordering for testing of conditions and firing of actions. We then generate an Action Execution Intermediate Representation that is closer to a sequential imperative language like C and Java. We describe our two intermediate representations and show the feasibility and portability of our approach by compiling a CAL implementation of the Two-Dimensional Inverse Discrete Cosine Transform on a general purpose processor, on the Epiphany manycore architecture and on the Ambric massively parallel processor array. © 2014 IEEE.
The arrival of manycore platforms has imposed programming challenges for mainstream embedded system developers. In this paper, we discuss the significance of actor-oriented dataflow languages and present our compilation framework for CAL Actor Language that leads to increased portability and retargetability. We demonstrate the applicability of our approach with streaming applications targeting the Epiphany many-core architecture. We have performed an in-depth analysis of MPEG-4 SP implemented on Epiphany using our framework and studied the effects of actor composition. We have identified hardware aspects such as increased off-chip memory bandwidth and larger local memories that could result in further performance improvements.
Manycore architectures are gaining attention as a means to meet the performance and power demands of high-performance embedded systems. However, their widespread adoption is sometimes constrained by the need formastering proprietary programming languages that are low-level and hinder portability. We propose the use of the concurrent programming language occam-pi as a high-level language for programming an emerging class of manycore architectures. We show how to map occam-pi programs to the manycore architecture Platform 2012 (P2012). We describe the techniques used to translate the salient features of the language to the native programming model of the P2012. We present the results from a case study on a representative algorithm in the domain of real-time image processing: a complex algorithm for corner detectioncalled Features from Accelerated Segment Test (FAST). Our results show that the occam-pi program is much shorter, is easier to adapt and has a competitive performance when compared to versions programmed in the native programming model of P2012 and in OpenCL.
During 2013, an evaluation of all the research conducted at Halmstad University was carried out. The purpose was to assess the quality of the research, coproduction, and collaboration in research, as well as the impact of the research. The evaluation was dubbed the Assessment of Research and Coproduction 2013, or ARC13. (Extract from Executive Summary)
This paper highlights the collaboration between industry and academia in research. It describes more than two decades of intensive development and research of new hardware and software platforms to support innovative, high-performance sensor systems with extremely high demands on embedded signal processing capability. The joint research can be seen as the run before a necessary jump to a new kind of computational platform based on parallelism. The collaboration has had several phases, starting with a focus on hardware, then on efficiency, later on software development, and finally on taking the jump and understanding the expected future. In the first part of the paper, these phases and their respective challenges and results are described. Then, in the second part, we reflect upon the motivation for collaboration between company and university, the roles of the partners, the experiences gained and the long-term effects on both sides. Copyright © 2014 ACM.
Recently we showed that an expressive class of mathemat-ical equations can be automatically translated into simula-tion codes. Focusing on the expressivity of equations oncontinuous functions, this work considered only minimal in-teraction with discrete behaviors and only a static numberof statically connected components. However, the interac-tion between continuous and hybrid components in manycyber physical domains is highly coupled, and such systemsare often highly dynamic in both respects. This paper givesan overview of a proposed core language for capturing ex-ecutable hybrid models of highly dynamic cyber physicalsystems.
Recently we showed that an expressive class of mathematical equations can be automatically translated into simulation codes. By focusing on the expressivity of equations formed from continuous functions, this work did not accommodate a wide range of discrete behaviors or a dynamic collection of components. However, the interaction between continuous and hybrid components in many cyber-physical domains is highly coupled, and such systems are often highly dynamic in both respects. This paper gives an overview of a proposed core language for capturing executable hybrid models of highly dynamic cyber-physical systems. © 2012 IEEE.
Developing Cyber-Physical Systems requires methods and tools to support simulation and verification of hybrid (both continuous and discrete) models. The Acumen modeling and simulation language is an open source testbed for exploring the design space of what rigorous-but-practical next-generation tools can deliver to developers of Cyber-Physical Systems. Like verification tools, a design goal for Acumen is to provide rigorous results. Like simulation tools, it aims to be intuitive, practical, and scalable. However, it is far from evident whether these two goals can be achieved simultaneously.
This paper explains the primary design goals for Acumen, the core challenges that must be addressed in order to achieve these goals, the "agile research method" taken by the project, the steps taken to realize these goals, the key lessons learned, and the emerging language design. © ICST Institute for Computer Sciences, Social Informatics and Telecommunications Engineering 2016.
Accurate programming is a practical approach to producing high quality programs. It combines ideas from test-automation, test-driven development, agile programming, and other state of the art software development methods. In addition to building on approaches that have proven effective in practice, it emphasizes concepts that help programmers sharpen their understanding of both the problems they are solving and the solutions they come up with. This is achieved by encouraging programmers to think about programs in terms of properties.
Network protocols today play a major role in embedded software for industrial automation, with constant efforts to adapt existing device software to new emerging standards. In earlier work, we have proposed a compilation-based approach using a domain-specific language, Protege, which automatically generates protocol stack implementations in C from modular high-level descriptions. In this paper, we provide a case study of the Protege language in an industrial setting. We have implemented the Modbus protocol over TCP/IP and over serial line, and tested it using an industrial gateway. Our implementation demonstrates Protege's advantages for software productivity, easy maintenance and code reuse, and it achieves many desirable properties of industrial embedded network software.
Network software is typically organized according toa layered architecture that is well understood. However, writingcorrect and efficient code that conforms with the architecture stillremains a problem. To overcome this problem we propose to usea domain specific language based approach. The architecturalconstraints are captured in a domain specific notation that can beused as a source for automatic program generation. Conformancewith the architecture is thus assured by construction. Knowledgefrom the domain allows us to generate efficient code. In addition,this approach enforces reuse of both code and designs, one ofthe major concerns in software architecture. In this paper, weillustrate our approach with PADDLE, a tool that generates packetprocessing code from packet descriptions. To describe packets weuse a domain specific language of dependent types that includespacket overlays. From the description we generate C librariesfor packet processing that are easy to integrate with other partsof the code. We include an evaluation of our tool.
This paper describes a domain-specific language embeddedin Haskell, IPS, for the implementation of protocol stacks for embeddedsystems. IPS profits from Haskell’s features and generates C implementationsby embedded compilation.
Ad hoc data formats, i.e. semistructured non-standard dataformats, are pervasive in many domains that need software tools—bioinformatics,demographic surveys, geophysics and network software are justa few. Building tools becomes easier if parsing and other standard inputoutputprocessing can be automated. Modern approaches for dealingwith ad hoc data formats consist of domain specific languages based ontype systems. Compilers for these languages generate data structures andparsing functions in a target programming language in which tools andapplications are then written. We present a monadic library in Haskellthat implements a data description language. Using our library, Haskellprogrammers have access to data description primitives that can be usedfor parsing and that can be integrated with other libraries and applicationprograms without the need of yet another compiler.
Protocol stack specifications are well-structured documents that follow a number of conventions and notations that have proven very useful for the design and dissemination of communication protocols. Protocol stack implementations on the other hand, are done in low-level languages, using error-prone programming techniques resulting in programs that are difficult to relate to the specifications, difficult to maintain, modify, extend and reuse. To overcome these problems we propose a domain-specific language that provides abstractions close to the notations used in protocol specifications. From descriptions in our language we generate C programs that can be integrated with other systems software. The language provides constructs to describe packet formats, including physical layout, constraints and dependencies. It also provides constructs for state machines and for layering protocols into stacks. Experiments show that the C programs we generate are comparable in performance and binary size to hand-crafted C programs.
Communication software, most notoriously protocolstacks, are an area of growing interest. Many companiesimplement new or revised protocols for new applicationrequirements, and reimplement well-known infrastructureprotocol stacks to accomodate to new hardware andsoftware platforms. However, due to the complexity andperformance-critical nature of communication software,implementing protocol stacks remains a time-consumingand error-prone task with considerable impact on time tomarket, scalability and maintainance. The work at handinvestigates how to provide program development supportfor protocol stack implementation to make it easier andmore likely to be correct while respecting non-functionalconstraints. We present a language-based approach for theimplementation of protocol stacks. We define a domainspecificembedded language, IPS, for declaratively describingoverlaid protocol stacks. In IPS a high-level packetspecification is described using a data description languagewhich is compiled into a.) an internal data representation,and b.) packet processing functions in C. Both are then integratedinto the dataflow framework of a protocol overlayspecification. IPS generates highly portable C code for variousarchitectures from this source. We present the compilationframework for generating packet processing andprotocol logic code, and a preliminary evaluation.