29.01.2015 Views

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

Embedded Software for SoC - Grupo de Mecatrônica EESC/USP

SHOW MORE
SHOW LESS

Create successful ePaper yourself

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

474 Chapter 34<br />

3.<br />

each process to be exactly one. In other words, two processes driven by<br />

two different active <strong>de</strong>vices can only communicate through a non-blocking<br />

IPC.<br />

An SAG, as given, assumes implicitly a schedule of the processes. The<br />

validity of this schedule has to be checked separately. A valid schedule has<br />

to meet several requirements. A necessary requirement is to have no<br />

<strong>de</strong>adlock. A stronger requirement is to have all the processes meet the<br />

<strong>de</strong>adline. That is, all the processes interfacing with the active <strong>de</strong>vices<br />

should not miss any request initiated by these <strong>de</strong>vices. An even stronger,<br />

but optional, requirement, is to allow efficient utilization of the CPU. That<br />

is, no busy waiting should be employed by any process.<br />

3.3. Energy mo<strong>de</strong>ling at the software architecture level<br />

We <strong>de</strong>note a specific software architecture configuration <strong>for</strong> a given embed<strong>de</strong>d<br />

software program as C. The energy consumption of this software architecture<br />

<strong>for</strong> a fixed amount of computation (application functionality) is <strong>de</strong>noted<br />

by E(C). The energy consumption of the initial architecture is <strong>de</strong>noted by<br />

In an absolute sense, <strong>for</strong> a given embed<strong>de</strong>d system, E(C) <strong>de</strong>pends<br />

on various parameters related to how the software architecture is translated<br />

into the final executable implementation (e.g., compiler optimizations used).<br />

The energy consumption of each software architecture could be accurately<br />

evaluated by specifying it as program source co<strong>de</strong>, feeding it through the<br />

software compilation flow, and using a <strong>de</strong>tailed system simulation framework.<br />

However, this would be too time-consuming to use in the context of an automatic<br />

software architectural trans<strong>for</strong>mation framework, since each candidate<br />

architecture could require hours to evaluate. In our context, the following<br />

observations are worth noting:<br />

We are only interested in comparing the inherent energy efficiency of different<br />

software architectures without regard to the subsequent software<br />

implementation process.<br />

We per<strong>for</strong>m a (one-time) <strong>de</strong>tailed energy profiling of the initial software<br />

architecture. The initial architecture is modified by applying a sequence<br />

of atomic trans<strong>for</strong>mations. Hence, we only require energy change estimates,<br />

i.e., estimates of the difference in energy consumption be<strong>for</strong>e and after<br />

the application of each atomic software architectural trans<strong>for</strong>mation.<br />

The trans<strong>for</strong>mations utilized in our methodology do not affect the “core<br />

functionality” of an application. Rather, they affect energy consumption by<br />

altering the manner in which OS services are employed. As shown later,<br />

this implies that we can use high-level OS energy macro-mo<strong>de</strong>ls to evaluate<br />

the energy impact of software architectural trans<strong>for</strong>mations.<br />

The initial configuration can be easily obtained by doing a one-to-one<br />

mapping from the behavioral mo<strong>de</strong>l to the software architectural mo<strong>de</strong>l,<br />

resulting in a so-called fully parallel software architecture. Such a mapping

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

Saved successfully!

Ooh no, something went wrong!