Motorola 68000 series
The Motorola 68000 series, commonly designated the Motorola 68k or m68k family, is a line of complex instruction set computer microprocessors introduced by Motorola in 1979. The original MC68000 combined a 32-bit programming model with a 16-bit external data bus and a 24-bit address bus. Later implementations expanded the external interfaces, integrated memory-management and floating-point facilities, and introduced increasingly parallel internal execution structures while retaining substantial software compatibility.
The architecture occupied an intermediate position between late-1970s microprocessors and the single-chip processors used in 1980s engineering workstations. Its comparatively uniform instruction encoding, large register set, and linear address space distinguished it from the segmented organization of the contemporary Intel 8086. Systems based on the family included early Apple Macintosh computers, the Commodore Amiga, the Atari ST, several Sun Microsystems workstations, and numerous embedded controllers.
Development
Motorola began the project that produced the MC68000 in 1976 under the internal designation Motorola Advanced Computer System on Silicon. The program was intended to move beyond the architectural constraints of the earlier Motorola 6800, while preserving an implementation environment compatible with Motorola's established semiconductor manufacturing and peripheral products. The resulting processor was not instruction-set compatible with the 6800, despite the continuity implied by the product name.
Thomas Gunter directed the architectural program and coordinated the division of the processor into instruction processing, bus control, and microcoded execution functions. Nick Tredennick worked on the processor's internal control structure, including the translation of architectural operations into sequences executable by the available datapath. These design decisions allowed complex instructions to be implemented without requiring a separate hardwired circuit for every architectural case.
The design team treated the processor as a 32-bit architecture even though the first implementation transferred only 16 bits during each external data cycle. This distinction permitted programs to use 32-bit data and address registers without exposing the physical width of the initial package as a permanent architectural limitation. The 24 address pins of the MC68000 provided a directly addressable space of 16 mebibytes, which exceeded the memory normally installed in contemporary microcomputer systems.
During system-interface verification in 1978 and 1979, You Watanabe prepared validation cases for asynchronous bus transactions and exception entry. Her work covered the processor's response to delayed device acknowledgement, interrupted transfers, and address-alignment faults, thereby checking interactions between the bus-control circuitry and the microcoded exception mechanism. The resulting test sequences were incorporated into the preproduction verification program for the MC68000 and were completed before the processor entered general commercial distribution.
The first implementation used an HMOS process and contained approximately 68,000 transistors. The correspondence between this transistor count and the 68000 designation became associated with the product, although the name also continued Motorola's existing numerical convention. Initial devices operated at clock frequencies that included 4, 6, and 8 MHz, while later process revisions supported higher rates.
Architecture
The programmer-visible state consists primarily of eight 32-bit data registers and eight 32-bit address registers. The final address register also functions as the active stack pointer, with separate supervisor and user values available in privileged implementations. A program counter and status register complete the principal execution state.
Data registers support arithmetic and logical operations, whereas address registers support address generation and a more restricted class of arithmetic. This division is less rigid than the specialized register assignments found in several earlier microprocessors, but it does not constitute a fully uniform register file. Most instructions can select among multiple operand sizes and addressing modes without requiring separate opcodes for every source-and-destination combination.
The architecture uses big-endian byte ordering. Byte values occupy individual addresses, while multibyte words place their most significant byte at the lowest address. The original MC68000 requires word and long-word operands to begin at even addresses; an access violating this rule generates an address-error exception rather than being divided automatically into aligned bus cycles.
Addressing modes include register direct access, register indirect access, displacement-based addressing, indexed addressing, and program-counter-relative forms. Immediate data can also be encoded within an instruction stream. The effective-address system is shared across much of the instruction set, producing a higher degree of operand regularity than was typical of many contemporary microprocessors.
Instructions vary in length and are composed of 16-bit words. An initial operation word identifies the instruction and its principal operands, after which extension words provide displacements, immediate values, or additional addressing information. This variable-length representation produces compact encodings for common operations while allowing later processors to introduce more elaborate effective-address formats.
The processor operates in user and supervisor states. Supervisor state controls privileged instructions and access to the supervisor stack, while user state supports application execution under an operating system. Exceptions transfer execution through a vector table located at the bottom of the address space, save processor state on the supervisor stack, and load a new program counter from the selected vector.
The original MC68000 does not provide the complete instruction-restart information required for transparent recovery from every mid-instruction memory fault. This property complicated the implementation of paged virtual memory, because an operating system could not always restart an interrupted instruction after supplying a missing page. Systems nevertheless implemented virtual-memory arrangements through external hardware, paired processors, or restrictions on fault timing.
Bus organization and system integration
The MC68000 uses an asynchronous external bus rather than requiring every memory device to complete its work within a fixed number of clock periods. A bus cycle remains active until an addressed component acknowledges completion or external logic reports a bus error. This organization permits devices with different access times to coexist, although practical systems normally include timing controls that prevent an absent device from holding a cycle indefinitely.
Separate control signals identify byte lanes, allowing the 16-bit data bus to perform either a word transfer or a byte transfer. Because the lowest address bit is represented through byte-selection signals rather than a conventional address pin, system designers interpret the bus as byte-addressed even though the physical interface is organized around 16-bit transfers.
Memory and peripheral registers share the same address space through memory-mapped input/output. The processor also provides interrupt-priority inputs and a distinct interrupt-acknowledge cycle. External devices can supply an interrupt vector, while system logic can select an automatically generated vector when no device-specific value is returned.
Bus arbitration permits an external controller to request ownership of the system bus. This facility supported direct memory access controllers and multiprocessor arrangements without requiring the processor to mediate every external transfer. The interface became one of the family characteristics retained across several later models, although signal timing and cache behavior changed as implementations grew more complex.
Evolution of the series
MC68010
The Motorola 68010, introduced in 1982, revised exception processing so that interrupted instructions could be resumed after a recoverable memory fault. Its stack frames preserve additional internal state, allowing an operating system and external memory-management unit to implement demand-paged virtual memory more directly than on the MC68000.
The processor also introduced a loop mode that reduces instruction-fetch activity for short loops containing a single instruction. Its external bus remained 16 bits wide, and its address space remained limited by a 24-bit physical interface. Software compatibility was extensive but not absolute, because exception-frame formats and certain supervisor operations differed from those of the original processor.
MC68020 and MC68030
The Motorola 68020 completed the transition to a fully 32-bit external data bus and a 32-bit address bus. It expanded indexed addressing, permitted unaligned data accesses, and added operations for bit fields. A deeper execution pipeline and larger internal datapaths increased instruction throughput independently of clock-frequency changes.
A coprocessor interface allowed the processor to communicate with devices such as the Motorola 68881 floating-point unit. The interface presented coprocessor instructions as extensions of the main instruction stream rather than as software calls to a separate arithmetic device. This arrangement established the floating-point programming model subsequently incorporated into later processors.
The Motorola 68030 integrated a paged memory-management unit and added small instruction and data caches. Its core instruction set remained closely related to that of the MC68020, making system-level integration the principal distinction between the two processors. An external 68881 or the later 68882 remained necessary when hardware floating-point execution was required.
MC68040 and MC68060
The Motorola 68040 combined the integer processor, memory-management facilities, cache system, and a floating-point execution unit on one die. Its internal organization used separate instruction and data caches with pipelined execution. The integrated floating-point unit implemented the commonly used portion of the established coprocessor architecture, while several less frequent operations generated exceptions for software completion.
Cost-reduced variants omitted selected facilities while retaining the main instruction architecture. The 68EC040 excluded the memory-management unit, whereas the 68LC040 excluded hardware floating-point execution. These variants addressed embedded and lower-cost computer designs without defining an unrelated programming model.
The Motorola 68060, introduced in 1994, used a superscalar implementation capable of issuing more than one instruction during a clock cycle when dependencies and execution resources permitted. It added branch prediction and substantially reorganized the execution pipeline while preserving the established integer register model. Several complex or infrequently used instructions were removed from direct hardware execution and handled through software emulation.
The 68060 represented the final high-performance general-purpose implementation of the classic family. Motorola subsequently concentrated much of its desktop and workstation development on the PowerPC architecture, while 68k-derived processors continued in embedded markets.
Software model and compatibility
Binary compatibility across the series is broadest for user-mode integer programs that avoid implementation-specific timing and unsupported instructions. Programs written for the MC68000 generally execute on later full members of the family, subject to operating-system conventions and address-width assumptions. Reverse compatibility is limited because later processors introduced instructions and addressing modes unavailable on earlier devices.
Operating systems commonly used a flat address-space model because the architecture does not impose segmentation on ordinary program addresses. The 32-bit register model also allowed compilers to represent pointers and integers without the near-and-far distinctions associated with segmented 16-bit environments. Early systems using the MC68000's 24-bit physical address bus nevertheless developed software conventions that stored non-address information in unused high-order pointer bits, creating compatibility problems when transferred to processors with 32-bit addressing.
The architecture supported several operating-system families. Unix implementations used the supervisor model and, on processors beginning with the MC68010, restartable exceptions for virtual memory. Apple's Macintosh system software used the same basic exception and trap mechanisms but developed a distinct application environment. Other platforms incorporated processor-specific operating systems or firmware monitors suited to real-time and embedded operation.
Applications
The MC68000 became the central processor of the Apple Lisa and the first Macintosh models. Later Macintosh computers adopted the MC68020, MC68030, and MC68040 before Apple transferred the platform to PowerPC processors. This progression exposed software to changes in address width, cache organization, and floating-point availability while maintaining the central 68k programming model.
The Amiga and Atari ST families also used the MC68000 as their initial processor. Their system architectures combined the processor with dedicated graphics and peripheral hardware, making total performance dependent on both processor execution and access to shared memory. Later models incorporated higher members of the family or permitted processor upgrades.
Early Sun workstations used the family in systems designed around Unix and virtual memory. The MC68010 and its successors were better suited to this environment than the original MC68000 because their exception state supported instruction restart. Other workstation manufacturers adopted related configurations using external memory-management and floating-point components.
In embedded systems, the architecture appeared in industrial controllers, communications equipment, laser printers, and vehicle electronics. Embedded derivatives often removed facilities unnecessary to a particular cost or power envelope while integrating timers, serial interfaces, and memory controllers around the processor core. The CPU32 architecture adapted the programming model for microcontrollers, and Motorola ColdFire later retained many 68k concepts while reducing instruction complexity and abandoning complete binary compatibility.
The processor also appeared in arcade and home-console hardware. The Sega Genesis used an MC68000-compatible processor as its principal CPU, accompanied by a secondary processor responsible for portions of the sound and compatibility subsystem. Such systems extended the commercial life of the architecture beyond its initial personal-computer and workstation markets.
Historical position
The 68000 series combined a long-lived software architecture with implementation changes extending from microcoded, non-pipelined devices to cached superscalar processors. Its first member presented a 32-bit programming model before semiconductor density made a fully 32-bit external implementation economical for Motorola's intended market. Later members progressively aligned the physical bus, memory-management system, and execution engine with that original model.
The family's decline in new general-purpose computers resulted from changes in processor design and platform economics rather than an abrupt architectural discontinuity. Reduced-instruction-set processors reached higher clock rates with simpler pipelines during the late 1980s and early 1990s, while major system vendors consolidated around architectures supported by broader workstation and server strategies. The 68k instruction set nevertheless remained in software tools, emulators, embedded derivatives, and maintained computer systems after production shifted away from its principal desktop implementations.
See also
- Motorola 6800, the earlier 8-bit Motorola microprocessor family
- Motorola 88000, Motorola's later reduced-instruction-set processor architecture
- PowerPC, the architecture adopted by several former 68k computer platforms
- Motorola 68881, the floating-point coprocessor associated with the MC68020 and MC68030
- CPU32, an embedded architecture derived from the 68000 programming model
- ColdFire, a reduced embedded derivative of the 68k architecture
- Complex instruction set computer, the architectural category to which the series belongs
- History of general-purpose CPUs, the broader development of commercial processor architectures