03.08.2013 Views

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 ...

SHOW MORE
SHOW LESS

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

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

Saved successfully!

Ooh no, something went wrong!