[comp.sys.transputer] suitable for realtime packet net?

driscoll@ella.SRC.Honeywell.COM (Kevin Driscoll) (11/16/88)

I am trying to determine if I can use a transputer for a fault tolerant
real-time packet network.  Because of the real-time constraints, I need low
latency at about one megabits/sec.  Source to destination latency will be the
sum of the latencies in each of the intermediate nodes.  The total must be less
than 500 microseconds and there may be 20 nodes in the path, so the latency at
each node must be less than 25 microseconds.  Inmos has given me hundreds of
pages of documentation, but none of it gets into the real nuts and bolts of how
the transputer and its links work.

I need to know how fast data can be shuffled in one link and out another.
Assume the following scenario:  the transputer normally is doing a low priority
task unrelated to its links, a packet of unknown size may arrive on any link at
any time.  How can the transputer be set up to do a context on any link input?
How does it know that a byte has arrived?  Do the links use DMA?  If so, can
the source and the destination both be links and how many cycles does a DMA
transfer need?  How fast can the whole process be done?  Would an external
limit of no more than two packets arriving simultaneously help?

Because of routing constraints on the links, it may be difficult to meet the
jitter requirements of 10 megabits/sec speed.  Is the T212 the only part to
have a 5 megabits/sec speed or does the T222 or T425 have this speed?  Do these
newer parts use concurrent acknowledgement and does this significantly speed up
transfers compared with the sequential acknowledgement used by the T212?  Has
anyone had experience where jitter was a problem?  Can better crystal matching
buy any extra jitter tolerance?  Are there any other tricks to help the jitter
problem?  Does any transputer part have a wider jitter margin than the others?

What is the best way to tell if a link is down considering the real-time
constraints?  Put a time guard on each transfer?  Use a limited elastic buffer
and test for limit violations?

Are there any other hidden problems in using the transputer for this net?

Any answers to any of my questions would be greatly appreciated.  Thank you.
 -----
Kevin R. Driscoll, Principal Research Scientist    (612) 782-7263   FAX: -7438
POST:  Honeywell M/S MN65-2500; 3660 Technology Drive; Mpls, MN 55418-1006
INTERNET:  driscoll@{src,altura}.honeywell.com
UUCP:  driscoll@srcsip.uucp   or   {umn-cs,ems,bthpyd}!srcsip!driscoll
MIXED:  srcsip!driscoll@umn-cs.{cs.umn.edu,arpa}

w-colinp@microsoft.UUCP (Colin Plumb) (11/17/88)

In article <12025@srcsip.UUCP> driscoll@ella.UUCP (Kevin Driscoll) writes:
>I am trying to determine if I can use a transputer for a fault tolerant
>real-time packet network.  Because of the real-time constraints, I need low
>latency at about one megabits/sec.  Source to destination latency will be the
>sum of the latencies in each of the intermediate nodes.  The total must be less
>than 500 microseconds and there may be 20 nodes in the path, so the latency at
>each node must be less than 25 microseconds.  Inmos has given me hundreds of
>pages of documentation, but none of it gets into the real nuts and bolts of how
>the transputer and its links work.

I'll see if I can't help.  I know a fair bit about the link hardware
(ask for the technical note on the TestHardChan instruction - this will
give you some documentation on the hardware that's in the transputer),
but not much about real-time fault-tolerant packet switching.

>I need to know how fast data can be shuffled in one link and out another.
>Assume the following scenario:  the transputer normally is doing a low priority
>task unrelated to its links, a packet of unknown size may arrive on any link at
>any time.  How can the transputer be set up to do a context on any link input?
>How does it know that a byte has arrived?  Do the links use DMA?  If so, can
>the source and the destination both be links and how many cycles does a DMA
>transfer need?  How fast can the whole process be done?  Would an external
>limit of no more than two packets arriving simultaneously help?

Well, I'd just have one process per link, but you can have just one doing
ALTs four ways (is this what you mean by "do a context"?.  On the
transputer, you need to know the length of a packet, so you'd need to
send a header and body separately.

BTW, transputer links (but NOT software channels) behave like byte
streams.  Sender and receiver don't have to agree on message boundaries.

Yes, the links are DMA.  I see no reason to restrict the number of
simultaneous packets.  Have 4 coming in and 4 going out.
No, you can't DMA from one link to the other - something like that
is rumoured in the T810 (8K+ memory, 8 links, lotsa goodies, >Faster
prefix decoding!<), but doesn't exist now.

Don't forget that some of that latency you're talking about is waiting
for the destination link to come available, so you need to beat it
by a bit.

But lessee.. With multiple transfers going on, at 20Mbits/sec, I'd
expect about 1 MByte/sec effective throughput.  Since the message
has to be fully received at one node before it's passed on (I think),
20 us latency = 20 bytes.  Something isn't gonna work here.  You could,
I suppose, engage in some nasty tricks by starting the receiver DMA-ing
into a memory buffer, and the sender copying out, and hope the receiver
is at least as fast as the sender, but there's no way to interlock.

How big are the messages you're trying to send?  If they're one or two
words, I think it could be done, but I wonder if you've thought through
what you're asking for - at one megabit per second, which you mention,
you're allowing 20 bit-times of latency per node.  This is the hardware
realm.

>Because of routing constraints on the links, it may be difficult to meet the
>jitter requirements of 10 megabits/sec speed.  Is the T212 the only part to
>have a 5 megabits/sec speed or does the T222 or T425 have this speed?  Do these
>newer parts use concurrent acknowledgement and does this significantly speed up
>transfers compared with the sequential acknowledgement used by the T212?  Has
>anyone had experience where jitter was a problem?  Can better crystal matching
>buy any extra jitter tolerance?  Are there any other tricks to help the jitter
>problem?  Does any transputer part have a wider jitter margin than the others?

I know the T425 has overlapped acknowldgements, but I don't know about the
T222.  If it has >2K of memory, it probably does.  Yes, they have the slower
bit rates.  Look at the LinkSpecial0 and LinkSpecial123 pins.  The overalpped
acknowledgements do help considerably, especially at the higher bit rates.

Can you give me any more info on the routing requirements?  I've had
some experience with glitches on links, but they were due to reflections
(improperly terminated), not jitter.

>What is the best way to tell if a link is down considering the real-time
>constraints?  Put a time guard on each transfer?  Use a limited elastic buffer
>and test for limit violations?

Sorry, we generally use timeouts - but on the order of half a second, which
seems unusable for your applications.  The problem is that it's impossible to
tell how far an in-progress link trasnfer has progressed.  (The TestHardChan
instruction will tell you, but all 4 links (8 DMA engines) must be idle, or
you risk contention on internal buses.)

>Are there any other hidden problems in using the transputer for this net?

With the trasnputer, there tend to be hidden problems.  Maybe if you can
mail me more details about the application, I can tell you more.

Hope I've been of assistance.
-- 
	-Colin (microsof!w-colinp@sun.com)