[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Apple Crate 2e for auction???
Mark McDougall wrote:
Simon D. Williams wrote:
...and to think I was planning to make do with a 4 processor "crate". With
that much fire-power you'd be able to do some interesting stuff.
20 1MHz CPU's on a severely I/O bound network? I think it's more for
interest's sake than accumulating "fire-power"! ;)
It easily provides additional digital oscillators for CrateSynth!
For some applications, the bandwidth of the network is not a major
issue. CrateSynth is just such an application. After broadcast
booting all the 'Crate machines, the master machine then loads
each machine with its music and voices, then sends a synchronized
start to all machines (broadcast).
The current rev of CrateSynth does not resynchronize during the
playing of a song, since the total drift of my 'Crate in 40 seconds
is 1 millisecond, or about a foot of sound travel distance.
I'm working with Simon on a version which will use the NadaNet bus
simply as a "clock" source (after loading), meaning all 'Synth machine
transitions will be driven by pulses on the bus.
The latter system, of course, stays in sync indefinitely (at the cost
of quantization of note durations to a small fraction of a note).
In the more general case, if the amount of computation to be done on
a machine exceeds the amount of time required to package and send the
"problem" and get and parse the "result", then it's practical to
distribute the application.
This is true at all scales, so it is a "fractal" truth. ;-)
The fundamental issue of application partitioning must be done
with consideration of the data volume per "transaction", the
bandwidth of the communication, and the latency of the communication.
In the case of a bussed network, the latency to send data
increases as the total bandwidth of the network is approached.
The actual protocols determine the efficiency.
NadaNet is CSMA/CA, and it avoids collisions more than 99% of the time,
which is good, because a machine cannot detect when it is causing a
collision. A collision can waste many milliseconds (or more), but
its probability of occurence is relatively low. (The window between
detecting that the network is free and seizing it is only 11 to 21
cycles, and the minimum interval between successful arbitrations is
about 2000 cycles.)
So, from a net utilization point of view, the efficiency is pretty high.
And since requests of any length up to 64KB are atomic on the net,
arbitration only occurs once per request, for all packets.
Of course, long data transfers add to latency for others. NadaNet
transfers data at about 11KB/second.
NadaNet currently uses a fixed priority scheme, so lower priority
machines can starve if higher priority machines hog the bandwidth.
So if you have a 100 millisecond computation, it can't take
more than 1000 bytes sent and received to support it, unless
you want to spend longer communicating than computing, and less
data if the machine is likely to be contending for the bus.
If the "problem" is regular, then it is often straightforward to
arrange that NadaNet will be free when a machine has computed
a result, though this is, of course, not the general case.
-michael
NadaNet networking for Apple II computers!
Home page: http://members.aol.com/MJMahon/
"The wastebasket is our most important design
tool--and it's seriously underused."