Hardware Reference
In-Depth Information
as well as the buffers. Switching activity on the links besides data correlations is
directly related to the rate of new valid words appearing on the wires of the link,
while the buffers not used due to less credits can be gated to save dynamic (clock
gating) or idle power (power gating).
2.6
Request-Acknowledge Handshake and Bufferless
Flow Control
Similar to ready/valid handshake, link level flow control can be implemented using
another 2-wire handshake protocol, called the req/ack protocol (Dally and Towles
2004 ; Bertozzi and Benini 2004 ). A request is made by the sender when it wants
to send a new valid word, while an acknowledgment (ack
1) is returned by the
receiver when the word is actually written at the receiver. Equivalently, when there
is no buffer space available to store the new word a not acknowledgement (ack
D
0
or nack) is sent back to the sender. With req/ack protocol the sender is not aware of
receiver's buffer status as done in ready/valid or credit-based flow control protocols.
Therefore, every issued request is always optimistic meaning “data are sent”. The
sender after issuing a request has two choices: Either to wait for an ack, possibly
arriving in the next cycles, before placing next available data on the channel or to
actually send new data and manage possible nacks as they arrive.
In the first case that the sender waits for an ack throughput is limited to 50 %
since a new transaction can begin every other cycle (one cycle to request, one cycle
to wait for an ack before trying to send a new piece of data). In the second version,
the sender puts a word in the channel in cycle i as long as an ack was received in
cycle i 1 referring to a previous transmission. The next cycle, since no ack has
returned the sender prepares a new word to put on the channel. The previous one is
not erased but it is put on hold in an auxiliary buffer. If the receiver acknowledges the
receipt of data, the word in the auxiliary buffer is erased and replaced by the current
data on the channel. If not, the sender understands that the receiver was stalled and
stops transmission. In the next cycles, it continues trying to send its data but now
sends first the data in the auxiliary buffer that have not been acknowledged yet by the
receiver and delays the propagation of new data. This primitive form of speculative
req/ack protocol works just like a 2-slot EB which requires at least 2 extra places to
hold the in-flight data (not acknowledged in this case). For larger round-trip times
it can be proven that req/ack has the same buffering requirements as the ready/valid
protocol (Dally and Towles 2004 ), unless other hybrid flow control techniques are
employed (Minkenberg and Gusat 2009 ).
Another flow control strategy that was developed around the idea of minimum
buffering (equal to one register per stage) is bufferless flow control (Moscibroda
and Mutlu 2009 ). Bufferless flow control is a degenerate case of req/ack flow
control, where data that cannot be written at the receiver (that would have not been
acknowledged) are not kept at the sender and are dropped. In the next cycle, new
D
Search WWH ::




Custom Search