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

Create successful ePaper yourself

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

variable (SVAR) in the global table, which is stored in shared memory. A PBO can only<br />

access its local table, which contains only the subset <strong>of</strong> data from the global table that is<br />

needed by the PBO. Since every PBO has its own local table, no synchronization is needed<br />

to read from or write to it. Consistency between the global <strong>and</strong> local tables is maintained by<br />

the SVAR mechanism, <strong>and</strong> updates to the tables only occur at predetermined times. Con-<br />

figuration constants are updated only during initialization <strong>of</strong> the PBO. The state variables<br />

corresponding to input ports are updated prior to executing each cycle <strong>of</strong> a periodic PBO,<br />

or be<strong>for</strong>e processing each event <strong>for</strong> an aperiodic PBO. During its cycle, a PBO may update<br />

the state variables corresponding to output ports at any time. These values are only updated<br />

in the global table after the PBO completes its processing <strong>for</strong> that cycle or event. All trans-<br />

fers between the local <strong>and</strong> global tables are per<strong>for</strong>med as critical sections. Although there<br />

is no explicit synchronization or communication among processes, accesses to the same<br />

SVAR in the global table are mutually exclusive, which creates potential implicit block-<br />

ing. Spin-locks are used to lock the global table, <strong>and</strong> it is assumed that the amount <strong>of</strong> data<br />

communicated via the ports on each cycle <strong>of</strong> a PBO is relatively small. It is guaranteed<br />

that the task holding the global lock is on a different processor <strong>and</strong> will not be preempted,<br />

thus it will release the lock shortly. If the total time that a CPU is locked to transfer a state<br />

variable is small compared to the resolution <strong>of</strong> the system clock, then there is negligible<br />

effect on the predictability <strong>of</strong> the system due to this mechanism locking the local CPU.<br />

Since there is only one lock, there is no possibility <strong>of</strong> deadlock. A task busy-waits with the<br />

local processor locked until it obtains the lock <strong>and</strong> goes through its critical section.<br />

Echidna [2] is a real-time operating system designed <strong>for</strong> smaller, single-processor,<br />

embedded microcontrollers. The design is based on the featherweight port based object<br />

(FPBO) [34]. The application programmer interface (API) <strong>for</strong> the FPBO is identical to<br />

that <strong>of</strong> the PBO. In an RTOS, PBOs are separate processes, whereas FPBOs all share the<br />

same context. The Chimera implementation uses data replication to maintain data integrity<br />

<strong>and</strong> avoid race conditions. Echidna implementation takes advantage <strong>of</strong> context sharing to<br />

eliminate the need <strong>for</strong> local tables, which is especially important since memory in embed-<br />

ded processors is a limited resource. Access to global data must still be per<strong>for</strong>med as a<br />

45

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

Saved successfully!

Ooh no, something went wrong!