# Motorola-68000er-Familie

Die Motorola-68000er-Familie, auch als 680x0 oder m68k bzw. 68k bezeichnet, ist eine Serie von historischen CISC-Mikroprozessoren der Firma Motorola.
Eingesetzt wurden die Prozessoren dieser Familie in vielen Heimcomputern wie dem Atari ST, Amiga oder Macintosh, in Servern beispielsweise von Apollo, Hewlett-Packard oder Sun Microsystems, aber auch in Spielkonsolen wie dem Atari Jaguar oder Sega Mega Drive. Im Bereich eingebetteter Systeme sind Abkömmlinge dieser Familie (683xx) bis heute im Einsatz.
Alle Prozessoren dieser Serie haben einen einfachen, aber mächtigen Befehlssatz mit vielen Adressierungsarten und Operandengrößen von 8, 16 und 32 Bit. Beispielsweise existiert der Datentransferbefehl "move", der als echter Zweiadressbefehl ein Datum von einer Speicherstelle zur anderen kopieren kann, ohne dabei den Umweg über ein CPU-Register zu gehen. Die Byte-Reihenfolge der 68k-Familie ist Big-Endian.

## Die 68K-Prozessoren
### Mitglieder dieser Familie

* Motorola 68000
* Motorola 68HC001 – 68000 mit 8- oder 16-Bit-Bus und 24-Bit-Adressen
* Motorola 68008
* Motorola 68010
* Motorola 68012
* Motorola 68020, Motorola 68EC020
* Motorola 68030, Motorola 68EC030
* Motorola 68040, Motorola 68EC040, Motorola 68LC040
* Motorola 68060, Motorola 68EC060
* Motorola CPU32 (Motorola 68330)
* Motorola Coldfire
* Motorola Dragonball
* Motorola 68440 – zweikanaliger DMA-Controller für den 68000/10
* Motorola 68450 – vierkanaliger DMA-Controller für den 68000/10
* Motorola 68451 – externe MMU für den 68000/10
* Motorola 68851 – externe MMU für den 68020
* Motorola 68881 – externe FPU für den 68020 und 68030
* Motorola 68882 – externe FPU für den 68020 und 68030

### Nummerierungsschema

Die Prozessoren mit geraden Nummern (68000, 68020, 68040, 68060) waren für größere Änderungen an der Architektur vorgesehen, die ungeraden Nummern (68010, 68030, 68050, 68070) waren dagegen Architekturoptimierungen. Die Prozessoren 68050 und 68070 waren zwar geplant, wurden aber von Motorola nie produziert. Philips hatte auf Basis des 68000 den SCC68070 entwickelt.
Zum Beispiel waren der Motorola 68010 (und auch der 68012) ein 68000 mit Optimierungen für Schleifenoperationen und der Möglichkeit, nach einem Seitenfehler (pagefault) eine Instruktion zu pausieren. Das ermöglichte mit Hilfe einer Speicherverwaltungseinheit (MMU) den Einsatz von virtuellem Speicher (virtual memory). Ansonsten gab es keine weiteren Änderungen an der Architektur. Ähnlich war es auch bei dem 68030. Dieser war im Prinzip nur eine verkleinerte Version des 68020, bei der die MMU und ein zusätzlicher Datencache (256 Byte) in die CPU integriert wurden. Den 68030 gab es mit einer Geschwindigkeit von bis zu 50 MHz.
Die Änderungen vom 68000/68010 zum 68020/68030 waren dagegen sehr umfangreich.

### Spin Off

* Freescale ColdFire
* Freescale DragonBall (MC68328)
* APOLLO CORE 68080

## Geschichte

Die Serie beginnt 1979 mit dem Motorola 68000. Er besitzt intern 32-Bit-Register, einen mit 32 Bit adressierten linearen Adressraum, eine 16-Bit-ALU sowie einen 16-Bit-Datenbus. Nach außen hat er nur 24 Adressleitungen, real benutzbar sind also nicht 4 GiB, sondern nur 16 MiB Speicher, was damals aber keine relevante Einschränkung darstellte.
Der Motorola 68008 ist eine reduzierte Variante des 68000 mit einem 8 Bit breiten Daten- und einem 20 Bit breiten Adressbus. Neben ihrer Verwendung als Hauptprozessor beispielsweise im Sinclair QL wurde diese CPU gerne als Controller in der Steuerungstechnik eingesetzt.
Wenig erfolgreich war der Motorola 68010, der einige Fehler des 68000 behob. Speziell wurde der Umgang mit Speicherzugriffsfehlern verbessert, was für die sinnvolle Unterstützung einer MMU notwendig war. Außerdem erhielt die Pipeline einen speziellen Modus, der kurze Schleifen aus zwei Befehlen deutlich beschleunigte, indem diese ohne wiederholtes Lesen der Befehle ausgeführt wurden.
Der Motorola 68012 war eine Variante des 68010, bei dem zusätzliche Adressleitungen die Adressierung von bis zu 2 GiB Speicher erlaubten.
Mit dem Motorola 68020 wurde der Prozessor komplett auf 32-Bit umgestellt, verfügte erstmals über einen Cache für Instruktionen (Größe 256 Byte) und konnte problemlos mit der FPU 68881 bzw. 68882 oder der MMU 68851 eingesetzt werden. Die preisgünstige Variante 68EC020 hatte nur 24 Adressleitungen herausgeführt.
Der Motorola 68030 enthielt eine integrierte programmierbare MMU, mit deren Hilfe virtuelle Speicherverwaltung möglich wurde, und getrennte Cachespeicher für Daten (256 Bytes) und Befehle (256 Bytes). Dem 68EC030 fehlte die interne MMU.
Mit dem Motorola 68040 wurde die FPU auf dem Chip integriert sowie der Level-1-Cache auf 4 KiB vergrößert. Durch interne Taktverdoppelung hat ein 68040 mit 25 MHz etwa die Integer-Rechenleistung eines mit 50 MHz getakteten 68030. Bei der Variante 68LC040 fehlte die FPU oder war wegen eines Defekts abgeschaltet.
Der Motorola 68060 bot wiederum eine deutliche Leistungsverbesserung gegenüber dem 68040; er ließ Taktfrequenzen von bis zu 75 MHz zu (erhältlich waren meist aber Taktfrequenzen von 50 MHz) und konnte dank „SuperScalar“ bis zu zwei Integer-Instruktionen pro Takt ausführen. Hauptsächlich wurde er für eingebettete (embedded) Anwendungen eingesetzt, da die Prozessoren von Intel aufgrund der wesentlich größeren Stückzahlen sehr viel preiswerter waren, bei Servern mittlerweile hauptsächlich RISC-Prozessoren Verwendung fanden und mit dem PowerPC bereits ein markttechnischer Nachfolger im PC- und Workstation-Bereich zur Verfügung stand. Außer in einigen erweiterten Amiga-Computern und als eingebettetes System fand der Motorola 68060 praktisch keine Anwendung mehr.
Nach dem 68060 wurde die Entwicklung des 68000er-Kerns für Embedded-Zwecke weitergeführt. Dafür wurde der Kern um zusätzliche Peripherie erweitert. Zusätzlich wurde die Komplexität reduziert, um den Stromverbrauch und die Herstellungskosten zu senken. Aus diesen Änderungen gingen die Motorola-Coldfire- und die Dragonball-Familie hervor, die heute in vielen Geräten (wie Mobiltelefonen und PDAs, z. B. von Palm) eingesetzt werden.
Typische 68k-Betriebssysteme sind OS-9, AmigaOS, Atari-TOS, Mac OS (vormals Macintosh System Software), MiNT, Linux68k, NetBSD und OpenBSD.