A method of SCSI data transfer. With this
type of data transfer, the SCSI host adapter and the SCSI device
agree to a transfer rate that both support (this is known as
synchronous negotiation). With this type of data transfer method,
transfer rates of 5 MBytes/sec or 10 MBytes/sec (for FAST SCSI) are
common.
Is SYNCHRONOUS faster than
ASYNCHRONOUS?
Asynchronous is faster on short cables, while synchronous is faster
on long cables. The reason has to do with the propagation delay of
the cable; the turn around time of the silicon; and the interlocked
nature of the asynchronous handshake.
1) We have measured propagation delays from
various cables and found an average of 1.7 nanoseconds per foot,
which is roughly 5.25 ns per meter.
2) The turn-around time is the amount of
time the SCSI chip takes to change an output in response to an
input. If REQ is an input then ACK is an output. Or if ACK is an
input then REQ is an output.
Typical turn-around time for the 53C90 is 40
nanoseconds.
3) The asynchronous transfer uses an
interlocked handshake where a device cannot do the next thing until
it receives positive acknowledgment that the other device received
the last thing.
First REQ goes true (driven by Target),
then ACK is permitted to go true (driven by Initiator),
then REQ is permitted to go false, then ACK is permitted to go
false.
Thus we have four "edges"
propagating down the cable plus 4 turn-around delays. Asynchronous
transfer requires 55 ns setup and no hold time (paragraph in 5.1.5.1
in SCSI-1 or SCSI-2) which gives an upper speed limit around 18
MB/s. A detailed analysis shows that the setup time subtracts out.
This is mostly because we are running at one-third the max rate, but
also because setup for the next byte can begin anytime after ACK is
received true or REQ is received false, depending on who is
receiving. You can either take my word for it or draw the waveforms
yourself. Thus, the asynchronous transfer reduces to:
(4 * 1.7 * 1) + (4 * 40ns) = 167 ns = 6
MB/s (1 foot cable)
(4 * 5.25 * 6) + (4 * 40ns) = 286 ns = 3.5
MB/s (6 meter cable)
(4 * 5.25 * 25) + (4 * 40ns) = 685 ns = 1.5
MB/s (25 meter cable)
Note: cables longer than 6 meters require
external differential transceivers which add delay and degrade the
performance even more than indicated here.
Our simulations say that under very best
conditions (fast silicon, low temperature, high voltage, zero length
cable) we can expect more than 8 MB/s asynchronously. In the lab, I
routinely measure 5 MB/s on 8 foot cables. So, if you were writing
the data manual for this, how would YOU spec it?
The framers of the SCSI spec threw in
synchronous mode to boost the performance on long cables. In
synchronous mode, the sending device is permitted to send the next
byte without receiving acknowledgment that the receiver actually
received the last byte. Kind of a ship and pray method. The
acknowledgment is required to come back sometime, but we just don't
have to wait for it (handwave the offset stuff and the ending
boundary conditions). In this mode any external transceivers add a
time shift, but not a delay. So if you negotiate for 5 MB/s, you get
5MB/s regardless how long the cable is and regardless whether you
are single-ended or differential. But you can't go faster than 5.5
MB/s, except in SCSI-2.
Synchronous mode does have a hold time
(unlike asynch) but again, setup and hold times subtract out. In
SCSI-1 synchronous mode, the speed limit comes from the combined
ASSERTION PERIOD + NEGATION PERIOD which is 90ns + 90ns = 180ns =
5.5 MB/s. Our 53C90 family doesn't quite hit the max, but we do
guarantee 5.0 MB/s. In SCSI-2, anything above 5.0 MB/s is considered
to be FAST. Here the maximum transfer rate is explicitly limited to
100 ns or 10MB/s; you don't have to read between the lines to deduce
it.
Interesting tid-bit: given a SCSI-2 FAST
period of 100 ns and a cable delay of 131 ns on a 25 meter cable,
you can actually stack 1.31 bytes in the 8-bit cable. In FAST and
WIDE SCSI you can stack 5.24 bytes in this copper FIFO.