next up previous contents
Next: Router Reprogramming Up: Scheduled Routing Previous: Scheduling Virtual Finite State

Flow Control in Scheduled Routing

So far, it has implicitly been assumed that whenever data is ready to be transferred it can always be accepted by the destination. However, if the stream's destination processor is busy, and the source processor is attempting to write data into the mesh, the system must handle the potential for a backlog in the stream. This problem (known as the flow control problem) is handled by a synchronized exchange of control signals along with the data.

Whenever a valid data word can be written to a neighbor, the VFSM asserts the valid line to the remote reader and sends the data. When reading, a VFSM determines whether it has sufficient buffer space to accept another word of data, setting the accept line to the remote writer accordingly. After setting the accept line low, the reader will simply ignore any data presented to it.

The difference from traditional online-routing schemes is that the accept line is driven by the reader at the same time as the valid line. Since the mesh is running schedules that are all offline-generated, a reader always knows when a writer is sending data, and it can generate an `accept' during the same cycle as the data is written. This means that scheduled routing allows a single-cycle protocol for determining flow control.

When the writer VFSM discovers that the reader couldn't accept the data word, it queues the word in its buffer. The next time the writer is scheduled, it will set the accept line low for its writer, and attempt to transfer the buffered word instead of reading a new one. Figure 1.8 shows one VFSM with its incoming and outgoing control and data lines, and summarizes what actions it takes depending on the state of those lines. These actions happen in synchrony across the entire mesh every cycle; this choreography--scheduling which VFSMs run on each node at each cycle--determines how data moves through the mesh.


  
Figure 1.8: NuMesh transfer actions
\begin{figure}
\centering
\begin{tabular}
{c}

\psfig {figure=/home/nu1/metcalf/...
 ...red \\ read fail & node transfers buffer word if valid \end{tabular}\end{figure}


next up previous contents
Next: Router Reprogramming Up: Scheduled Routing Previous: Scheduling Virtual Finite State
Back to Chris Metcalf's home page