Hubbry Logo
Motorola 68010Motorola 68010Main
Open search
Motorola 68010
Community hub
Motorola 68010
logo
8 pages, 0 posts
0 subscribers
Be the first to start a discussion here.
Be the first to start a discussion here.
Motorola 68010
Motorola 68010
from Wikipedia
Motorola 68010/68012
General information
Launched1982
Designed byMotorola
Performance
Max. CPU clock rate8 MHz to 16.67 MHz
Data width16 bits
Address widthMC68010: 24 bits
MC68012: 31 bits
Architecture and classification
Instruction setMotorola 68000 series
Physical specifications
Transistors
Packages
History
PredecessorMotorola 68000
SuccessorMotorola 68020
Motorola 68010 as DIP
Motorola 68010 as PGA

The Motorola MC68010 and Motorola MC68012 are 16/32-bit microprocessors from Motorola, released in 1982 as successors to the Motorola 68000.[3] The 68010 and 68012 added virtualization features, optimized loops and fixed several small flaws to the 68000. The MC68010 variants were pin compatible with its predecessor while the MC68012 is an 84-pin PGA version with its directly accessible memory space extended to 2 GiB.[2][4]

Differences between 68010/68012 and 68000

[edit]

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 the Popek 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 implement virtual memory. This means that the exception stack frame is different.

A 32-bit Vector Base Register (VBR) holds the base address for the exception 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.

Motorola 68012
Die of Motorola 68012

The MC68012 variant, in addition to its memory space being extended to 2 GiB, also added a read-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 the 68020.

Usage

[edit]
Motorola 68451 MMU

The 68010 could be used with the 68451 MMU. However, aspects of its design, such as its 1 clock memory access penalty, made this configuration unpopular. Some vendors used their own MMU designs, such as Sun Microsystems in their Sun-2 workstation and Convergent Technologies in the AT&T UNIX 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 smaller Unix systems, both with the 68451 MMU (for example in the Torch 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's DN300 and DN320,[6] and HP 9000 Model 310), as well as various research machines. Most other vendors (such as Apple Computer) stayed with the 68000 until the 68020 was introduced.

The 68010 was used on some arcade video games, most notably Marble Madness for the Atari System 1. Some owners of Amiga and Atari ST computers and even Sega 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%.

References

[edit]
[edit]
Revisions and contributorsEdit on WikipediaRead on Wikipedia
from Grokipedia
The Motorola MC68010 (often abbreviated as 68010) is a 16/32-bit complex instruction set computer (CISC) microprocessor developed by Motorola as the first major enhancement to its pioneering 68000 processor, released in 1982 to support virtual memory operations and improve overall system performance in advanced computing applications. Building on the 68000's 32-bit internal architecture and register set, the 68010 maintains compatibility with its predecessor through a 16-bit external data bus and 24-bit address bus, enabling direct addressing of up to 16 megabytes of memory while introducing hardware mechanisms for efficient virtual memory management, such as bus error retry capabilities and enhanced exception stack frames. Key additions include three new supervisor-mode registers—the Vector Base Register (VBR) for flexible interrupt vectoring, and the Status Function Code (SFC) and Data Function Code (DFC) registers for memory access control—along with a high-performance loop mode that optimizes repetitive instruction execution by eliminating fetch cycles in certain single-instruction loops. These features, combined with an expanded instruction set that forms a superset of the 68000's commands, allow the 68010 to handle complex tasks like delayed bus errors and breakpoint acknowledgments more effectively, making it suitable for multitasking environments and embedded systems requiring robust error recovery. Available in clock speeds ranging from 8 MHz to 16.67 MHz, the 68010 was produced in packages like 64-pin DIP, 68-pin LCC, and 68-pin PGA, and is largely pin-compatible with the 68000, facilitating drop-in upgrades in compatible systems. Despite its advancements, the 68010 saw limited adoption in consumer microcomputers due to its higher cost and the sufficiency of the original 68000 for most personal computing needs; instead, it found niche use in high-end workstations, scientific instruments, and early virtual memory-enabled systems where its specialized features provided tangible benefits over the base 68000 architecture.

Introduction and history

Overview

The Motorola 68010 is a 16/32-bit complex instruction set computing (CISC) developed by and released in 1982 as a minor upgrade to the original 68000. It belongs to the influential M68000 family of processors, which were widely used in early personal computers, workstations, and embedded systems due to their and compatibility. The 68010 was designed primarily to address key limitations of the 68000, including inadequate support for management and inefficiencies in loop execution, while ensuring full with existing 68000 software and hardware. This allowed it to serve as a in many systems, facilitating upgrades without major redesigns. Initial variants operated at clock speeds ranging from 8 MHz to 16.67 MHz. The processor features approximately 69,000 transistors. It maintains pin compatibility with the 68000 in corresponding packages, such as the 64-pin DIP, simplifying integration into existing motherboards. A related variant, the 68012, extends the 68010's addressing capabilities to 32 bits externally while retaining core compatibility.

Development and release

The Motorola 68010 emerged as a direct successor to the , a 16/32-bit introduced in that achieved widespread adoption in early personal computers and workstations due to its advanced architecture and performance. Despite this success, the 68000 had notable architectural shortcomings, including non-restartable bus errors that prevented reliable handling of page faults and made integration with memory management units (MMUs) challenging for systems. These limitations impeded support for multitasking operating systems like Unix variants, prompting Motorola to prioritize enhancements in the next iteration of its 68k family. Motorola's design team focused on rectifying these flaws to evolve the 68000 family toward more robust, high-end capabilities, including better recovery and to improve efficiency in small, repetitive code sequences common in . The 68010 maintained essential compatibility with the 68000 while introducing mechanisms for restartable instructions, enabling seamless without requiring extensive software rewrites. This evolution positioned the processor as part of Motorola's broader strategy to compete in and scientific markets demanding advanced OS features. Introduced in 1982, the 68010 became commercially available in mid-1983 and was marketed primarily as a drop-in upgrade for existing 68000-based designs, leveraging pin compatibility to facilitate adoption in systems requiring MMU support. Official data sheets detailing its specifications were published by in May 1985, providing comprehensive documentation for engineers integrating the chip into new hardware.

Architecture and compatibility

Core design

The Motorola 68010 features a 32-bit internal , including eight 32-bit registers (D0–D7) and eight 32-bit registers (A0–A7, with A7 serving as the stack pointer). Additionally, it includes three new supervisor-mode registers: the 32-bit Vector Base Register (VBR) for relocating the exception vector table, and the 3-bit Status Function Code (SFC) and Function Code (DFC) registers for specifying function codes during CPU-generated bus cycles. It employs a 16-bit external bus and a 24-bit bus, enabling access to a 16 MB . This design maintains the core register model of the 68000 family while optimizing for enhanced performance through internal enhancements. The processor operates in two modes: supervisor mode for privileged operations and user mode for application execution, ensuring protected access to system resources. User-mode instructions are fully compatible with those of the MC68000, allowing seamless execution of existing application code without modification. The bus interface is asynchronous, mirroring the MC68000's structure to support byte, word, and long-word data transfers, which facilitates integration into existing 68000-based systems. This compatibility extends to pin-for-pin interchangeability, simplifying upgrades. Housed in a typical 64-pin (DIP), the 68010 operates at 5 V and dissipates approximately 1–2 W of power at 10 MHz frequencies, balancing with in embedded applications. While user-mode is fully compatible with the MC68000, supervisor-mode operations introduce changes—such as new instructions and mechanisms—that require operating system adjustments for complete functionality.

Instruction set enhancements

The Motorola 68010 retains the full instruction set of the MC68000, comprising approximately 56 base instruction types that support a variety of data movement, arithmetic, logical, and control operations essential for . This compatibility ensures that existing MC68000 software runs without modification on the 68010, with the core set focused on byte, word, and long-word operations across multiple addressing modes. However, to address security concerns in multitasking environments and facilitate integration with units (MMUs), the 68010 introduces targeted modifications that enhance privilege separation without broadly expanding the instruction repertoire. A key enhancement is the addition of the unprivileged MOVE from CCR instruction, which allows user-mode programs to read the contents of the Condition Code Register (CCR)—containing flags for extend (X), negative (N), zero (Z), overflow (V), and carry (C)—and store them zero-extended to a word in a destination effective address. This instruction, unavailable on the MC68000, compensates for restrictions on broader register access by providing a safe mechanism for user-level code to inspect arithmetic results without invoking a privilege violation exception. In syntax, it operates as MOVE CCR, , where <ea> denotes any valid effective address, and it does not affect the CCR itself during execution. To bolster operating system security, the 68010 modifies the MOVE from SR instruction, making it privileged such that attempts to execute it in user mode now generate a privilege violation exception, trapping to supervisor mode. On the MC68000, this instruction could be performed in user mode, potentially exposing supervisor bits like the supervisor/user (S) flag and interrupt mask levels, which risked compromising system integrity in virtualized setups. The change enforces stricter isolation, requiring supervisor privilege for accessing the full (SR), which combines the CCR with additional control bits, thereby optimizing the 68010 for secure OS implementations alongside MMU usage. Exception handling receives subtle optimizations in the 68010 to support transparent recovery from bus errors, particularly during memory accesses in virtual memory systems. This restartability allows affected instructions—such as those involving data fetches or stores—to resume execution from the point of interruption after the error is resolved by the MMU or handler, using an expanded 26-word exception stack frame that includes fault addresses and status details. Unlike the MC68000's simpler 7-word frame, this mechanism enables precise continuation without full instruction re-execution in many cases, reducing overhead for page faults while maintaining backward compatibility for non-MMU scenarios. The addressing modes remain unchanged from the MC68000, preserving support for register direct, immediate, absolute, program counter relative, register indirect, and indexed variants to ensure seamless code portability. These modes, exemplified by operations like MOVE D0, (A1)+ for post-increment indirect or ADD #5, D2 for immediate addition, continue to facilitate efficient memory and register manipulations without requiring recompilation. Overall, these enhancements prioritize MMU-friendly operations and security refinements over wholesale additions, positioning the 68010 as a bridge to more advanced 68000-family processors.

Key features

Loop mode

The loop mode of the Motorola 68010 is a dedicated performance optimization feature designed to accelerate the execution of small, repetitive code sequences commonly found in mathematical and routines. It is activated specifically through the use of DBcc (decrement and if condition) instructions, which test a condition code, decrement a data register (Dn), and if the condition is false and Dn is not equal to -1. When the displacement is -4 (pointing back to a preceding single-word instruction) and the targeted instruction is one of 33 supported loopable —such as MOVE, ADD, or CLR with compatible addressing modes like (An), (An)+, or -(An)—the processor enters loop mode. In this state, the 68010 employs a 6-byte prefetch mechanism, equivalent to three 16-bit words, to hold the loop body: the 4-byte DBcc instruction (opcode plus displacement) and the 2-byte loop instruction. During operation, the processor fetches the loop instructions once at the start and caches them internally using a two-word prefetch queue and a one-word decode register, suppressing subsequent fetches on each . Instead, only read/write cycles occur, with the counter decremented and the condition re-evaluated at the end of each pass. This reuse of the cached instructions eliminates the need for repeated memory accesses to the loop body, significantly reducing bus traffic. For example, a typical MOVE long-word operation in loop mode requires 9 cycles for the first and 3 cycles thereafter, compared to 12 cycles initially and 4 cycles in standard execution on the 68000, achieving up to 50% faster performance for qualifying tight loops by cutting bus cycles from five to two per after the initial setup. Activation requires the entire loop to fit precisely within the 6-byte limit, with no intervening branches, and the loop must execute at least twice before entering the mode fully; otherwise, it falls back to conventional 68000-compatible execution. Limitations include support for only specific instructions and addressing modes, exclusion of long-word operations in certain cases, and automatic exit upon interrupts, trace exceptions, bus errors, or resets, which clear the prefetch queue. Tracing is also disabled in loop mode to maintain efficiency, and loops cannot span boundaries that would require additional fetches. This feature proved particularly beneficial in early applications involving tight loops for mathematical and graphics routines.

Virtualization and error handling

The Motorola 68010 introduced restartable instructions to enable reliable recovery, a critical enhancement over the MC68000's non-restartable design. When a occurs, such as during an MMU-generated , the processor saves its internal state—including the , , and partial instruction buffers—onto the supervisor stack in a 29-word frame. This allows the operating system to resolve the fault, such as by loading the required page into physical memory, after which the instruction can resume from the point of interruption without corruption or . A key addition is the 32-bit Vector Base Register (VBR), which permits dynamic relocation of the exception vector table anywhere in , supporting multiple tables for multitasking environments. On reset, the VBR is cleared to zero, but it can be loaded via the MOVE to VBR instruction in supervisor mode, enabling operating systems to switch contexts efficiently without fixed addressing constraints. This feature, absent in the MC68000, facilitates secure and flexible essential for virtualized systems. The 68010 integrates seamlessly with external memory management units like the MC68451 to provide paged . The MC68451 translates logical addresses to physical ones, supporting up to 32 variable-sized segments (from 256 bytes to 16 MB) and a 32-entry buffer for paging, while handling faults by latching addresses and control signals for OS intervention. The processor's restartability ensures that faulted bus cycles can be retried post-resolution, enabling full implementations. Additionally, attempts to execute privileged instructions—such as MOVE from or moves—in user mode trigger a privilege violation exception, trapping to supervisor mode to safeguard the operating system from unauthorized access. These improvements addressed the MC68000's limitations in supporting full virtualization, where non-restartable faults could lead to unreliable page handling and vector table rigidity hindered multitasking. By enabling instruction continuation and dynamic vectors, the 68010 made it feasible to implement protected, paged environments in Unix systems without requiring custom workarounds.

Variants

Motorola 68010

The 68010 is the baseline variant in the 68010 family of microprocessors, introduced by in 1982 as an enhanced successor to the 68000 while preserving pin compatibility and largely binary compatibility, with minor differences in the handling of certain privileged instructions. This allowed it to serve as a for the earlier processor in existing systems, facilitating upgrades without significant hardware modifications. The 68010 incorporates optimizations such as loop mode and improved restart capabilities, contributing to modest performance gains of 5-10% over the 68000 at equivalent clock speeds. Housed in a 64-pin (DIP), the 68010 is fully pin-compatible with the 68000's DIP configuration, enabling straightforward socket swaps in compatible motherboards. It also became available in 68-pin leaded (PLCC) and 68-pin PGA packages for surface-mount and other applications. The processor employs a 24-bit external address bus, supporting a maximum space of 16 MB, directly matching the 68000's addressing capabilities. Initial production models operated at clock speeds of 8 MHz to 12.5 MHz, with subsequent versions extending to 16 MHz for higher-performance applications. At a typical 10 MHz clock, the 68010 achieves performance in the range of 1-1.5 million (MIPS), reflecting its incremental improvements over the predecessor. Production of the 68010 continued into the mid-1990s, aligning with the broader phase-out of the 68000 series. It shares core architectural enhancements with the 68012 but retains the standard 68000-compatible for broader adoption in scenarios.

Motorola 68012

The Motorola 68012 is a variant of the 68010 microprocessor introduced in 1982, designed specifically for systems requiring expanded memory addressing beyond the 16 MB limit of the 68000 and 68010 without necessitating a full upgrade to the more advanced 68020. It shares the core architecture and virtual memory capabilities of the 68010 but incorporates enhancements tailored for larger-scale environments, such as those involving greater physical or multiprocessor configurations. Unlike the 68-pin packaging of the 68000 and 68010, the 68012 uses an 84-pin (PGA) package, rendering it not pin-compatible with its predecessors and requiring distinct designs. This larger package accommodates the expanded external address bus, which extends to 31 bits—supporting up to 2 GB of physical memory—through the addition of eight extra address lines (A24–A31) beyond the 23 lines of the 68000 family. To facilitate atomic operations in multiprocessor systems, the 68012 introduces a dedicated read-modify-write cycle (RMC) pin, which signals an indivisible bus operation to maintain data integrity during access, such as with the TAS instruction. Clock speeds for the 68012 range from 8 to 12.5 MHz, aligning closely with the 68010's performance profile while optimizing for environments with significantly larger memory footprints. Despite these advancements, the 68012 saw limited adoption due to its increased design complexity compared to standard 68010 implementations.

Applications and legacy

Usage in systems

The Motorola 68010 found application in early workstations, notably the Sun-2 series introduced by in 1983. These systems, including models like the Sun-2/120 and Sun-2/170, employed a 10 MHz 68010 processor paired with Sun's custom (MMU) to support in the early versions of , enabling up to 8 MB of physical memory and 16 MB of virtual addressing. This configuration marked one of the first commercial Unix workstations with hardware-assisted memory protection, facilitating multiuser environments until the series was phased out around 1985 in favor of Sun-3 models. In personal computing, the 68010 powered the UNIX PC, also known as the 3B1, released in 1984 as an office-oriented desktop system running a customized version of Release 2. Equipped with a 10 MHz 68010 and up to 4 MB of RAM, it targeted business users with integrated applications for word processing, spreadsheets, and communications, though its high cost limited widespread adoption. Additionally, aftermarket upgrades incorporating the 68010 were available for early Macintosh models like the 128K and 512K, providing modest performance gains over the original 68000 by leveraging loop mode optimizations, often combined with memory expansions for improved multitasking. The 68010 appeared in gaming hardware, particularly ' arcade machine, released in 1984. This title utilized a 7.16 MHz 68010 as the main CPU on the board, handling graphics processing and game logic alongside a 6502 for sound and I/O, contributing to the game's smooth 60 Hz frame rate and innovative 3D marble-rolling mechanics. Other notable uses included the P/15 and P/20 minicomputers from 1985, which featured a dual-processor architecture with two 12.5 MHz 68010s—one as the job processor for user tasks and the other as an I/O processor—optimized for multiuser System V Release 2 Unix environments supporting 8 to 16 concurrent users. The 68010 also featured in accelerator cards for the and 2000, where it served as a drop-in replacement or enhancement for the stock 68000, offering slight speedups in sprite-heavy applications. Upgrades to the Atari ST were similarly rare, typically limited to enthusiast modifications for marginal performance benefits in TOS 2.06-compatible systems. Overall, the 68010 saw limited adoption compared to the 68000, as its enhancements provided only incremental gains in most non-virtualized workloads, resulting in far fewer units deployed across systems estimated in the low hundreds of thousands.

Impact and successors

The Motorola 68010 experienced limited popularity primarily due to its incremental improvements over the 68000, offering only a 5-10% performance boost at equivalent clock speeds through optimizations like faster integer multiply/divide operations and loop mode enhancements, which failed to justify its higher cost for consumer applications. Released in 1982, it also arrived too late for key system designs such as the Apple Macintosh and , which were already committed to the cheaper and widely available 68000, and its specialized features like recovery were unnecessary for floppy-based micros without needs. The swift launch of the more substantial 68020 in , with its 32-bit architecture, pipelining, and expanded instruction set, further overshadowed the 68010, diverting adoption toward processors promising greater leaps in capability. Despite these hurdles, the 68010 played a pivotal role in advancing 68k-family systems by introducing restartable instructions and fault recovery mechanisms, which bridged the gap for implementation when paired with external coprocessors like the 68451 MMU. This capability directly influenced Unix ports to 68k platforms, enabling demand-paged and multitasking in early workstations, and shaped subsequent MMU designs by demonstrating practical in a CISC environment. The 68010 reached the end of its production life by the late , rendered obsolete as the 68020 and 68030 integrated similar virtualization support alongside onboard MMUs, eliminating the need for external components and streamlining system design. Its successors built directly on these foundations: the 68020 incorporated the 68010's loop optimizations and error-handling while adding a three-stage , 32-bit addressing, and more registers for enhanced performance, paving the way for the 68030's further refinements in caching and integration. In terms of legacy, the 68010 facilitated early multitasking environments in niche professional markets, such as Unix-based engineering workstations, contributing to the 68k series' enduring influence on operating systems like those in Sun and NeXT systems. Today, it maintains relevance among retro computing enthusiasts, inspiring homebrew projects that leverage its features for custom 68k-based machines.

References

Add your contribution
Related Hubs
User Avatar
No comments yet.