| General information | |
|---|---|
| Launched | 1982 |
| Designed by | Motorola |
| Performance | |
| Max.CPUclock rate | 8 MHz to 16.67 MHz |
| Data width | 16 bits |
| Address width | MC68010: 24 bits MC68012: 31 bits |
| Physical specifications | |
| Transistors |
|
| Packages | |
| Architecture and classification | |
| Instruction set | Motorola 68000 series |
| History | |
| Predecessor | Motorola 68000 |
| Successor | Motorola 68020 |


TheMotorola MC68010 andMotorola MC68012 are 16/32-bitmicroprocessors fromMotorola, released in 1982 as successors to theMotorola 68000.[3] The 68010 and 68012 added virtualization features, optimized loops and fixed several small flaws to the 68000. The MC68010 variants werepin compatible with its predecessor while the MC68012 is an 84-pinPGA version with its directly accessible memory space extended to 2 GiB.[2][4]
The 68010 and 68012 are completely user-mode compatible with the 68000, except that the MOVE from SR instruction traps in user mode, so that, to support user-mode code using that instruction, a supervisor-mode trap handler must simulate the instruction and continue the user-mode code after that instruction. This was done so that the 68010 and 68012 would meet thePopek and Goldberg virtualization requirements, specifically that a new OS could run as guest and not be aware.[2]: §1.3.2 A new unprivileged MOVE from CCR instruction was added to compensate for the penalty of trapping user-mode MOVE from SR.
The 68010 and 68012 can recover from bus faults, and continue the faulting instruction, allowing them to implementvirtual memory. This means that the exception stack frame is different.
A 32-bit Vector Base Register (VBR) holds the base address for theexception vector table. The 68000 vector table was always based at address zero.
A "loop mode" accelerates loops consisting of only a "loopable" instruction and a DBcc (Decrement/Branch on condition); an example would be MOVE and DBRA. The two-instruction mini-loop opcodes are prefetched and held in the 6-byte instruction cache while subsequent memory read/write cycles are only needed for the data operands for the duration of the loop.[2]: §7.1.3 It provided for performance improvements averaging 50%, as a result of the elimination of instruction opcodes fetching during the loop.

The MC68012 variant, in addition to its memory space being extended to 2 GiB, also added aread-modify-write cycle (RMC) pin, indicating that an indivisible read-modify-write cycle in progress, in order to help the design of multiprocessor systems with virtual memory.
The expansion of the memory space in the 68012 caused an issue for any programs that used the high byte of an address to store data, a programming trick that was successful with those processors that only have a 24-bit address bus (68000 and 68010). A similar problem affected the68020.

The 68010 could be used with the68451MMU. However, aspects of its design, such as its 1clockmemory access penalty, made this configuration unpopular. Some vendors used their own MMU designs, such asSun Microsystems in theirSun-2workstation andConvergent Technologies in theAT&TUNIX PC/3B1.
The 68010 was never as popular as the 68000 in the years when it was available. However, because of the 68010's small speed boost over the 68000 and its support for virtual memory, it can be found in a number of smallerUnix systems, both with the 68451 MMU (for example in theTorch Triple X), and with a custom MMU (such as the Sun-2 workstation, AT&T UNIX PC/3B1, Convergent Technologies MiniFrame, Plexus P/15 and P/20,[5]NCR Tower XP,Apollo Computer'sDN300 and DN320,[6] andHP 9000 Model 310), as well as various research machines. Most other vendors (such asApple Computer) stayed with the 68000 until the68020 was introduced.
The 68010 was used in somearcade video games, most notablyMarble Madness for theAtari System 1. Some owners ofAmiga andAtari ST computers and evenSega Genesis game consoles replaced their system's 68000 CPU with a 68010 to gain a small speed boost.[7][8] In practice, the overall speed gain over a 68000 at the same frequency is less than 10%.