DIP-64 · MC68010P10 · drawing, not a photo
Motorola 68000Motorola
1982
Motorola 68010
The 68000, fixed: proper virtual memory and a trick for tight loops.
The 68010, from 1982, fits the same socket as the 68000 and fixes what was missing for virtual memory and virtual machines. No Amiga shipped with one, but it is the simplest upgrade you can make to an A500.
- 32
- 16
- 12.5
- 16 MB
What the 68000 lacked
The 68000 had a problem for anyone who wanted virtual memory, the technique where the system pretends to have more memory than it has and fetches what is missing from disk. When an instruction tries to read memory that isn't there, the processor has to stop, wait for the system to bring it in and then carry on. The 68000 didn't save enough information to resume an instruction halfway through.
The 68010, launched in 1982, solves that: on a bus error it saves its internal state on the stack and can continue the instruction afterwards. That is what allowed Unix systems such as Sun's to use virtual memory with a processor from the family.
The differences inside
The MOVE from SR instruction, which reads the processor's status register, became privileged: an ordinary program that uses it triggers an exception. With that, the 68010 meets the Popek and Goldberg requirements for virtualisation, and one system can run another on top of it without the latter noticing the difference. To compensate, MOVE from CCR appeared, which reads only the part that matters to programs.
It added a new register, the VBR, which says where the exception table starts, instead of it always being at address zero. And it added loop mode: if a loop is made of a single short instruction followed by a DBcc, the processor keeps it inside and stops fetching it from memory on every pass. In a simple memory copy, this saves a lot of time.
On the outside it is almost identical to the 68000: 16-bit data bus, 24 address bits and 16 MB. Motorola sold it at 8, 10 and 12.5 MHz, in 64-pin DIP, 68-pin PLCC and 68-pin PGA. There was also the 68012, with 31 address bits, up to 2 GB.
Where it was used
It was in workstations from Sun (Sun-2) and Apollo (DN300 and DN320), in the HP 9000 model 310 and in the AT&T UNIX PC (3B1). In the arcades, Atari used it in, for example, Marble Madness in 1984.
In home computers it stayed in the shadow of the cheaper 68000, and the 68020 arrived as early as 1984.
The 68010 in the Amiga
No Amiga left the factory with a 68010. But since it is pin-for-pin compatible with the 64-pin DIP 68000, you just take one out and put the other in an A500, A1000 or A2000. AmigaOS recognises the processor with nothing to install.
The overall gain is around 10% at the same clock speed. In tight loops, loop mode can give quite a lot more, and there are games that do a lot of work on the processor where you can feel the difference.
The price you pay is MOVE from SR. Some older programs use it in user mode and start throwing errors. For those cases there are programs such as DeciGEL, which catch the exception and do the job in place of the instruction.
Did you know…
The instruction that broke programs on the 68010 is the same one that causes trouble on every later processor in the family: 68020, 68030, 68040 and 68060.
With the VBR, WHDLoad can return to Workbench when you press the quit key, something that isn't possible on a 68000.
Loop mode works like a tiny cache: it holds just two instructions, the one doing the work and the branch.
Motorola's data sheet lists 57 instruction types, one more than the 68000.
Some Atari ST and Mega Drive owners made the same processor swap that you do in an A500.
Sun moved from the 68000, in the Sun-1, to the 68010 in the second generation, the Sun-2.
Where it's found
None of the machines on this site left the factory with this processor: it reached Amigas on accelerator cards, which we also install.