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.

critical section to maintain data integrity. However, instead <strong>of</strong> using semaphores, Echidna<br />

constraints when preemption can occur.<br />

To summarize, in both the PBO <strong>and</strong> FPBO model, the s<strong>of</strong>tware components only com-<br />

municate with other components via SVARs, which are similar to global variables. Updates<br />

to an SVAR are made atomically, <strong>and</strong> the components always read the latest value <strong>of</strong> the<br />

SVAR. The SVAR concept is the motivation behind the TinyGUYS strategy <strong>of</strong> always read-<br />

ing the latest value. However, in <strong>TinyGALS</strong>, since components within a module may be<br />

tightly coupled in terms <strong>of</strong> data dependency, updates to TinyGUYS are buffered until a<br />

module has completed execution. This is more closely related to the local tables in the<br />

Chimera implementation than the global tables in the Echidna implementation. However,<br />

there is no possibility <strong>of</strong> blocking when using the TinyGUYS mechanism.<br />

6.3 Click<br />

Click [25, 24] is a flexible, modular s<strong>of</strong>tware architecture <strong>for</strong> creating routers. A Click<br />

router configuration consists <strong>of</strong> a directed graph, where the vertices are called elements <strong>and</strong><br />

the edges are called connections. In this section, we provide a detailed description <strong>of</strong> the<br />

constructs <strong>and</strong> processing in Click <strong>and</strong> compare it to <strong>TinyGALS</strong>.<br />

Elements in Click An element is a s<strong>of</strong>tware module which usually per<strong>for</strong>ms a simple<br />

computation as a step in packet processing. An element is implemented as a C++ object<br />

that may maintain private state. Each element belongs to one element class, which spec-<br />

ifies the code that should be executed when the element processes a packet, as well as<br />

the element’s initialization procedure <strong>and</strong> data layout. An element can have any number<br />

<strong>of</strong> input <strong>and</strong> output ports. There are three types <strong>of</strong> ports: push, pull, <strong>and</strong> agnostic. In<br />

Click diagrams, push ports are drawn in black, pull ports in white, <strong>and</strong> agnostic ports with<br />

a double outline. Each element supports one or more method interfaces, through which<br />

they communicate at runtime. Every element supports the simple packet-transfer interface,<br />

46

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

Saved successfully!

Ooh no, something went wrong!