eekee wrote:
Didn't the 68020 have an MMU? Why did AmigaOS continue to not use it? Maybe I shouldn't ask when I'm not planning to use it, but hey!
By 'original', Solar is referring to the Amiga 1200 model, as opposed to the add-on upgrade he used. The original Amiga - which was retroactively dubbed 'Amiga 1000' later - and the Amiga 500 used the earlier 68000.
And now, a history lesson. You can skip the rest of this if you like, but you might find it interesting.
The 68000 (designed in 1979) had no
memory management unit, and no support for virtual memory in any other form;
according to Wikipedia, it had a hook for an MMU co-processor, and it could use the 68451 MMU to implement memory protection, but a flaw in the original design made it unusable for virtual memory. This was only learned later when the 68451 was actually designed.
The
68010 fixed the virtual memory problem and a few others which made the 68K problematic for certain high-end uses, and the 68451 MMU, which was originally meant for the 68K, was released primarily to go with it. However, the 68010 was still expensive when most of the systems using the 68K - the Lisa, Macintosh, Amiga, and Atari ST, among others - fixed their designs, and more importantly, none of them saw either memory protection or virtual memory as priorities. Several Unix workstations, most notably the Sun-2, did use a 68010 with a 68451, but it simply was seen as an expensive and unnecessary addition for the consumer market systems.
Note that both of these were 16/24/32 CPUs, with a 32-bit internal data size but only using 24 bits of a given register for addressing; the external buss pins had 16 data lines and 24 address lines on the packaging. This isn't directly relevant, but it does show that - just as with the segmentation in the 8086 - the package size (especially for the
DIP form factor which was still nigh-universal) was seen as being as much of a priority as the memory capacity, if not more so.
When the
68020 was being designed (around 1982, roughly the same period when the
80186 and
80286 were released, but before design on the
80386 had really begun), they had moved to a
Pin Grid Array packaging to allow them to make the jump to a true 32-bit bus, but on-chip MMUs weren't seen as being feasible yet given the die sizes and photolithographic processes of the time (this was also why on-chip FPUs didn't start appearing on commercial microprocessors until around 1989). Thus, they introduced an upgraded external MMU, the
68851.
By the time of its release in 1984, however, both Intel and Acorn were working on the problem, and the ARM250 (the 'high performance' version of the
ARM2, used on upscale models of the original
Archimedes) and 80386 were among the first CPUs to have an on-chip MMU (though other delays with the development of the Archimedes meant that the Acorn CPUs - ownership of which was to soon be spun off into ARM Holdings Ltd. - didn't see release until 1987).
Motorola wouldn't catch up on this until the
'030 in 1987, by which time the Mac, Amiga, and Atari ST all had a growing software base which any future OS which did use the MMU would have to accommodate - and all of these parties had already had to do something similar already with the move to the 68020, since they needed to ensure that the software was '32-bit clean' to avoid conflicts with the change to the bus size. It would be years before any of them got around to implementing MMU support, and it had to remain an extra rather than a core feature given the number of older systems which were still in use.
By the time use of the MMU was gaining momentum among the operating system developers, the Motorola chip line was itself pretty much at the end of its lifespan, since after 1991 Motorola had fully committed to their part in
PowerPC production after the disastrous delays in the release of the
68040. They didn't want to commit much effort into the last design of that series, the
68060, which was developed mainly to fulfill outstanding commitments.