Design and Implementation of TinyGALS: A Programming Model for ...
Design and Implementation of TinyGALS: A Programming Model for ...
Design and Implementation of TinyGALS: A Programming Model for ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
TinyGUYS provides a possible hidden avenue <strong>for</strong> data flow between modules.<br />
Also note that the Click Queue element is not equivalent to the queue on a <strong>TinyGALS</strong><br />
module input port. In Click, arrival <strong>of</strong> data in a queue does not cause downstream objects<br />
to be scheduled, as in <strong>TinyGALS</strong>. This highlights the fact that Click configurations cannot<br />
have two push chains (where the end elements are activated as tasks) separated by a Queue.<br />
Additionally, since Click is a pure polling system, it does not respond to events immedi-<br />
ately, unlike <strong>TinyGALS</strong>, which is interrupt-driven <strong>and</strong> allows preemption to occur in order<br />
to process events. Much <strong>of</strong> this is due to the fact that Click’s design is motivated by high<br />
throughput routers, whereas <strong>TinyGALS</strong> is motivated by a power- <strong>and</strong> resource-constrained<br />
plat<strong>for</strong>m; a <strong>TinyGALS</strong> system goes to sleep when there are no external events to which to<br />
respond.<br />
Aside from the polling/interrupt-driven difference, push processing in Click is equiv-<br />
alent to synchronous communication between components in a <strong>TinyGALS</strong> module. Pull<br />
processing in Click, however, does not have a natural equivalent in <strong>TinyGALS</strong>. In Figure<br />
24, elements C5 <strong>and</strong> C6 are grouped into a module C. If we reverse the arrow directions<br />
inside <strong>of</strong> module C, control flow in this new <strong>TinyGALS</strong> model will be the same as in Click.<br />
However, elements C5 <strong>and</strong> C6 may have to be rewritten to reflect the fact that C6 is now a<br />
source object, rather than a sink object.<br />
In Click, execution is synchronous within each push (or pull) chain, but execution is<br />
asynchronous between chains, which are separated by a Queue element. From this global<br />
point <strong>of</strong> view, the execution model <strong>of</strong> Click is quite similar to the globally asynchronous,<br />
locally synchronous execution model <strong>of</strong> <strong>TinyGALS</strong>.<br />
Unlike <strong>TinyGALS</strong>, elements in Click have no way <strong>of</strong> sharing global data. The only<br />
way <strong>of</strong> passing data between Click elements is to add annotations to a packet (in<strong>for</strong>mation<br />
attached to the packet header, but which is not part <strong>of</strong> the packet data).<br />
Unlike Click, <strong>TinyGALS</strong> does not contain timers associated with elements, although<br />
this can be emulated by linking a CLOCK component with an arbitrary component. Also<br />
53