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.

Determinacy <strong>of</strong> a system without global variables. We will first examine the case<br />

where there are no TinyGUYS global variables.<br />

Let us consider a module M that contains a component C which produces events on<br />

the outports <strong>of</strong> M. Suppose the iteration <strong>of</strong> module M is interrupted one or more times.<br />

Since source DAGs must not be connected to triggered DAGs, the interrupt(s) cannot cause<br />

the production <strong>of</strong> events on outports <strong>of</strong> M that would be used in the case <strong>of</strong> a normal<br />

uninterrupted iteration. However, the interrupt(s) may cause insertion <strong>of</strong> events into other<br />

module inport queues, <strong>and</strong> hence insertions into the global event queue. Depending on the<br />

relative timing between the interrupts <strong>and</strong> the production <strong>of</strong> events by C at outports <strong>of</strong> M,<br />

the order <strong>of</strong> events in the global event queue may not be consistent between multiple runs<br />

<strong>of</strong> the system if the same interrupts occur during the same module iteration, but at slightly<br />

different times. This is a source <strong>of</strong> non-determinacy.<br />

If we wish to reduce the non-determinacy in the system, a partial solution is to delay<br />

producing outputs from the module being iterated until the end <strong>of</strong> its iteration. If we know<br />

the order <strong>of</strong> interrupts, then we can predict the state <strong>of</strong> the system after a single module<br />

iteration even if it is interrupted one or more times. Figure 14 shows a system execution in<br />

which a single module iteration is interrupted by multiple interrupts. In our notation, a i j,k<br />

refers to an active system state after an interrupt Ii starting from quiescent state q j <strong>and</strong> after<br />

module iteration mk. In Figure 14, the superscript in ax j,k is a shorth<strong>and</strong> <strong>for</strong> the sequence <strong>of</strong><br />

interrupts I0,I1,I2,...,In.<br />

I0<br />

q0<br />

I1I2 In<br />

...<br />

a x 0,0<br />

a x 0,1<br />

...<br />

a x 0,n<br />

Figure 14: One or more interrupts where modules have delayed output.<br />

In order to determine the value <strong>of</strong> active system state ax j,k , we can “add” the combined<br />

system states. Suppose active state a1 0,0 would be the next state after an iteration <strong>of</strong> the<br />

28<br />

q1

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

Saved successfully!

Ooh no, something went wrong!