3 ms·
It's worth going into why the two CPUs. Basically, the original 68000 isn't capable of atomically restarting an instruction interrupted during a memory access
by that_jojo 7y ago
It's worth going into why the two CPUs.
Basically, the original 68000 isn't capable of atomically restarting an instruction interrupted during a memory access cycle, and so there's no way to implement a standard MMU.
So Apollo just chucked in a slave CPU that would detect the interruption of the master CPU, halt it, deal with any remapping or what have you, and then just completely reset the master CPU.
- snvzz 7y agoAlso worth noting that this was solved in 68010 by changing the exception stack frame. On that regard, it's a shame the Amiga released (1985) with a 68000 cpu. Particularly, move from SR became privileged 010+ and thus caused problems when Amiga finally moved past 68000. Those could have been easily avoided by releasing Amiga on 68010 to begin with, which is also a CPU with slightly higher IPC. They compounded the issue by using 68000 again on A500/A2000 (1987), for negligible savings. Of course, this does pale next to the gross mismanagement Commodore did of the Amiga thereon, which ultimately led to Commodore's own demise.