Okay, this is AFAIK, based on some classes I took in college.
This is assuming you want to know about an ordinary Symetric Multiprocessing system. cc-numa, numa, and other whacky ways to run things are not included.
> Do they share RAM on different clock timings?
No, they share the ram based on who needs it for each individual cycle, by arbitration.
> Do they share only certain parts of RAM, or all of it?
All of it is shared.
> Is there some multi-port RAM involved?
No. Just an arbiter on the system bus. The PIII bus is designed to have multiple processors on it and they self-arbitrate. The Athlon/Alpha bus is designed to be point-to-point, where the CPU talks directly to the chipset and such. In either case, there's no need for multi-port RAM or cycle stealing.
Also remember that memory is too slow for modern CPUs. So cycle stealing would be a Bad Thing.
The headache comes in when you consider the cache and the issues of cache coherence between processors. The processor cache is not shared between processors, so that has to be kept up to date with the rest of the system, and if another processor access what's in your cache, you have to mark that data as invalid.
> Which CPU talks to peripherals, and who decides?
All of the CPUs talk to peripherals. The OS handles the decision with semaphores and mutexes and stuff.
Of course, the problem is that the processors guarantee that semaphores work via the mutex instructions. Which rasies a lot of hairy problems for the 6502, as far as synchronization. In order to adequately syncronize processes and not have things stomping on each other, you need to make sure that you can create semaphores.
Nontheless, it isn't impossible to do a multi-6502 system. It would just be a wacky project.
Incidentally, I wonder how small a 65816 could be made, in terms of the die size. I'm picturing a connection-machine style supercomputer for 3D graphics. With one processor and a few megs of RAM for each processor, you could do some interesting things, especially if you could fit a lot of processors on a single chip, including RAM and perepherals.
|
|