last year I was thinking about building a modernized Elf and since then I have been thinking, looking at other people's schematics and drawing some of my own. Slowly I'm getting ready to actually build something. The starting point is giong to be a bus card with 10 96 pin slots sitting in a Micro ATX case.
Anyway, someone here suggested last year to use a second 1802 as graphics processor. That got me thinking. Can we build a system with several processors? A Parallelf?
I think a solution with several CPUs which share the same memory space is out of the question. The logic to prevent the CPUs from fighting over control of the bus would be extensive and practically synchronize the CPUs so much that we would have little advantage over a single processor system.
But how about adding more processors for dedicated tasks like graphics? And we could do the same for IO, sound or disk IO. The cards would be complete single board computers with their own CPU, ROM, RAM and whatever is needed for their specific tasks. The main CPU would not control any IO device directly, but have some kind of interface to exchange data and commands with the other CPU cards. The question is, what kind of interface we could build with reasonable effort?
Bidirectional parallel IO ports like the CDP1851 or Intel 8255: This would be reasonably fast and both CPUs could be notified by interrupts when data has been sent. But what if there are more than two CPUs? That would mean that the main processor needs a bidirectional port for each attached card with its own processor. A lot of wiring and somewhat clumsy.
Bidirectional serial IO ports: The same Idea as before, but with serial IO. Again we would need quite a few IO ports, but at least the wiring to connect the CPUs would be reduced.
Simple shared memory: The main CPU would share a certain amount of dual port memory with each other CPU card, let's say 1k. Both CPUs could read and write to this memory, but synchronization would be hard. Perhaps they could notify each other with interrupts or a handshake over EF lines and Q.
DMA: Connecting the CPUs over DMA would be possible. We would need some bus drivers to temporarily connect the busses of the CPUs involved, but I'm not quite sure how to make one CPU send data and the other one listen. I fear, this would be some more complicated logic controlling the DMAin and DMAout lines.
Now, let me know what you think. I know I am behaving like a kid in a candy store, but I love leaving the beaten paths. For the traditional approach I have my good old Elf II.
- Thanks. That was a bit hasty. It's on the list for the next changes. I will probably get home from work earlier tomorrow and then have a little more time.