Motorola 68000



DerMotorola 68000 ist ein 1979 eingeführterCISC-Prozessor aus der68000er-Familie vonMotorola (späterFreescale, heuteNXP). Er besitzt intern 32-Bit-Register, einen mit32 Bit adressierten linearen Adressraum, davon 24 Bit extern verfügbar, acht 32-Bit-Datenregister, neun 32-Bit-Adressregister, ein 16-Bit-Statusregister sowie einen 16-Bit-Datenbus.
Eine Variante ist derMotorola 68008, bei dem der Datenbus auf 8 Bit sowie der Adressbus auf 20 Bit in der DIP-Version (bzw. 22 Bit in der PLCC-Version) reduziert sind. Als verbesserte Version kam derMotorola 68010 auf den Markt, der um Fehler bereinigt wurde und verbesserte Unterstützung vonvirtuellem Speicher bietet. Ein 68010 mit erweitertem Adressbus von 31 Bit wurde alsMotorola 68012 angeboten. Später folgten noch der68020,68030,68040 und68060.
Die Bezeichnung 68000 stammt laut einermodernen Legende von der AnzahlTransistoren, die der Prozessor besitzt. Tatsächlich ist es jedoch die logische Fortsetzung der Typbezeichnung der älteren 8-Bit-Motorola-ProzessorfamilieMotorola 6800. Die Architektur der 68000-Familie basiert auf Mainframes, wie z. B. IBM360 sowie der LSI11/PDP11 von Digital Equipment, aber mit einem linearen Adressbereich, auf den ohne Verfahren wie Multiplexing,Segmentierung oderPaging direkt zugegriffen werden kann.
Der 68000er (auch 68k genannt) mit 8 MHz Taktfrequenz kam im 64-poligenDIL-Gehäuse (siehe Bild) auf den Markt.
Architektur und Befehlssatz
[Bearbeiten |Quelltext bearbeiten]Die Prozessoren der 68000-Familie zeichnen sich durch die große Anzahl der Register und einen weitgehendorthogonalen Befehlssatz aus, d. h. fast alle Maschinenbefehle lassen sich mit allen Adressierungsarten verwenden. Der Befehlssatz ist folgendermaßen aufgebaut:
- BEFEHL.s <ea1>, <ea2>
Die Prozessoren der 68000-Familie sind sogenannte Zwei-Adress-Maschinen, wobei bei den meisten Befehlen eine variable Datenbreite mit .s = {B,W,L} verwendet werden kann (entspricht 8, 16 oder 32 Bit) und für die beiden Quell- und Ziel-Operanden <ea1> bzw. <ea2> eine der 68000-Adressierungsarten eingesetzt werden kann:
Schreibweise | Beschreibung | Beispiel |
---|---|---|
Dn | Datenregister direkt | CLR.B D0 |
An | Adressregister direkt | MOVEA.W A0,A1 |
(An) | Adressregister indirekt | CLR.B (A0) |
(An)+ | Adressregister indirekt mit Postinkrement | CLR.B (A0)+ |
−(An) | Adressregister indirekt mit Predekrement | CLR.B −(A0) |
d16(An) | Adressregister indirekt mit 16 Bit Offset | CLR.B 255(A0) |
d8(An,Ri.s) | Adressreg. ind. mit 8 Bit Offset und Indexregister | CLR.B $44(A0,D0.L) |
d16(PC) | PC-relativ mit 16 Bit Offset | CLR.B 22(PC) |
d8(PC,Ri.s) | PC relativ mit 8 Bit Offset und Indexreg. | CLR.B 10(PC,A1.W) |
#xxxxxxxx | Konstante (Immediate) | MOVEQ #15,D0 |
$xxxx | Speicherdirekt mit 16-Bit-Adresse (Absolute Short) | CLR.B $8000 |
$xxxxxxxx | Speicherdirekt mit 32-Bit-Adresse (Absolute Long) | CLR.B $11008000 |
oder die komplexen MC68020/30/40/60-Adressierungsarten:
Schreibweise | Beschreibung | Beispiel |
---|---|---|
(dis1,An,Ri.s*scl) | Adressreg. indirekt mit 16-/32-Bit Offset | MOVE.B ($12345678,A1,A2.L*2),D0 |
([dis1,An],Ri.s*scl,dis2) | Doppelt indirekt mit Post-Index | MOVE.W ([5,A2],D0.W,$23456),D1 |
([dis1,An,Ri.s*scl],dis2) | Doppelt indirekt mit Pre-Index | MOVE.W ([5,A2,D0.W],$23456),D1 |
(dis1,PC,Ri.s*scl) | PC-indirekt mit 16- oder 32-Bit Offset | JSR (WEITER,PC) |
([dis1,PC],Ri.s*scl,dis2) | PC-relativ,doppelt ind m. Post-Index | JSR ([SPRUNG,PC],D1,2) |
([dis1,PC,Ri.s*scl],dis2) | PC-relativ,doppelt ind. m. Pre-Index | MOVE.L ([PARAMETER,PC,D1.W],4),D1 |
Der 68000 hat nur eine 16-Bit-ALU und auch einen 16-Bit-Befehlssatz, der aber sowohl mit 8-, 16- als auch mit 32-Bit-Datentypen umgehen kann (32-Bit-Architektur). Die Typen MC68020/030/040/060 dagegen haben eine 32-Bit-ALU.
Beispiel für ein typisches M68000-Kommando:
JSR <ea> (Jump to subroutine) |
Befehlsformat0100 1110 10mm mrrr |
Das Kommando (Opcode) ist 16 Bit breit. Drei Bits (m) werden für den Adressierungsmodus verwendet, drei weitere Bits für das benutzte (r) Register bzw. eine Distanzadresse (displacement).
0100 1110 1011 1010 wird so zuJSR (d16,PC). Da hier diePC-relative Adressierung mit Distanzadresse (displacement) zur Anwendung kommt, wird das folgende Wort als vorzeichenbehaftete relative Adresse (displacement) verwendet. Andere Kommandos wieMOVEQ #n,Dx sind sogar vollständig in 16 Bit kodiert.
Die Fähigkeit des 68000, bei fast allen Kommandos auch 32 Bit breite Adressen und Daten zu verstehen (die dann natürlich bei einem 16-Bit-Bus in mehreren Zyklen gelesen werden mussten), vereinfachte die Softwareentwicklung ungemein, da es sich quasi um eine 32-Bit-Architektur handelte.
Im Gegensatz z. B. zumIntel 8086 bereitet es keine Probleme, Datensätze über 64 KiB Größe zu adressieren. Wegen der 16-Bit-ALU und des 16-Bit-Datenbusses wird der 68000 oft 16-Bit-Prozessor genannt, er führt jedoch klaglos 32-Bit-Software aus. Wegen der 16-Bit-ALU kostet z. B. eine 32-Bit-Addition die doppelte Zeit. Der Schaltungsblock zur Generierung von Adressen hat jedoch volle 32 Bit, so dass z. B. das Durchsuchen eines Textes mit 8 Bit breiten Zeichen nicht langsamer ist, als es von einemreinen 16-Bitter zu erwarten wäre. Zudem kann der Text ohne Modifikation des Programms länger als 64 KiB sein. 68000-Software ist 32-Bit-Software.
Der Inhalt der oberen 8 Bit eines Adressregisters wird vom 68000 beim Speicherzugriff ignoriert. Dadurch ist es möglich, diese Bits frei zu nutzen, beispielsweise für Meta-Informationen zu einem Zeiger (pointer). Bei späteren Prozessorgenerationen aus der 68000-Familie mit 32 Bit externem Adressbus führt das offensichtlich zu Problemen. Da diese Art der Programmierung aber auf den frühenMacintosh-Rechnern sehr verbreitet war, hatten spätere Macintosh-Versionen mit 68020-Prozessor ohneMemory Management Unit (MMU) einen speziellen Baustein, genanntAddress Management Unit (AMU), anstelle der MMU, der die oberen 8 Bit von Adressen optional ausmaskierte, um alte Software in einem 24-Bit-Kompatibilitätsmodus verwenden zu können.Als Prozessor mitNanocode undMicrocode ist der 68000 gewissermaßen auf Hardwareebene durch den Hersteller programmierbar. In derPC XT/370-Steckkarte, die einSystem/370 auf einemPC/XT ermöglichte, wurde ein 68000 mit modifiziertem Microcode eingesetzt, um einen Teil der System/370-Instruktionen direkt auszuführen. Die restlichen Instruktionen wurden auf einem weiteren 68000 emuliert oder auf dem alsFPU eingesetzten modifizierten8087 ausgeführt.[1]
Das längste Kommando des 68k ist 22 Byte lang und ist ein MOVE-Kommando, welches Daten von einer Speicherstelle in eine andere kopiert, wobei beide Speicherstellen doppelt-indirekt mit 32 bit Displacements adressiert werden.
Varianten
[Bearbeiten |Quelltext bearbeiten]Die erste Variante war der 68008, bei dem nur der Nanocode so verändert wurde, dass der Datenbus nur noch mit 8 Bit Breite angesprochen wurde. Eine weitere Variante war der68010, der wesentlich besser mit virtuellem Speicher betrieben werden konnte und zudem noch einige Detailverbesserungen aufwies. Ein Ableger des 68010 war der nicht lange verfügbare 68012, der mehr Adressleitungen für größere Speicher (bis zu 2 GiB) zur Verfügung stellte. Später wurden Varianten meist direkt von der ursprünglichen CPU abgeleitet, wie z. B. der 68EC020 vom 68020 (24 statt 32 Adressleitungen) – oder der 68EC040 und der 68LC040 vom68040 (es fehlten dann entweder dieFPU oder dieMMU). Ab dem68020 wurden Schritt für Schritt auch erste64-Bit-Befehle integriert (für einfache Multiplikationen).
Über drei binär kodierte Interruptleitungen könnenInterrupts mit sieben unterschiedlichen Prioritäten ausgelöst werden, davon ist die höchste nicht maskierbar. Zusammen mit entsprechenden Peripheriebausteinen sind bis zu 256 vektorisierte Interrupts möglich.
Ferner enthält der Prozessor Steuerleitungen, die signalisieren, ob als Nächstes ein Programmbefehl oder ein Datum geholt wird. Das ermöglicht zwar den Aufbau von Rechnern mit getrenntem Speicher für Programme und Daten; eineHarvard-Architektur ist aber nicht möglich, da die dazu notwendigen getrennten Busse für Programme und Daten hier nicht vorhanden sind.
- Motorola MC68008 im PLCC-Gehäuse
- Motorola MC68008
Register
[Bearbeiten |Quelltext bearbeiten]

Das Register-Programmier-Modell kann man in User- und Supervisor-Register einteilen gemäß den beiden Modi, welche die 68000-Familie aufweist. Diese User-/Supervisor-Modi bilden zusammen mit den Exceptions (Ausnahmebehandlungen) einen Schutzmechanismus und schützen das System vor Abstürzen. Angezeigt wird der Modus im S-Bit des Statusregisters SR. Im Supervisor-Modus darf man alle, im User-Modus nur bestimmte Ressourcen der CPU verwenden. Daraus erklärt sich auch die Verwendung des Programmier-Modells:
- User Register-Modell: wird vom Anwender-Programmierer bzw. von einem Compiler genutzt
- Supervisor Register-Modell: wird vom System-Programmierer (Betriebssystem) genutzt
In einem Echtzeit Multi-Tasksystem läuft üblicherweise der Betriebssystem-Kern im Supervisor-Modus und die Anwender-Tasks bzw. Programme im User-Modus. Dadurch ist der Kern von den Anwender-Tasks isoliert. Dieser Schutz kann beispielsweise durch den Einsatz einer MMU zusätzlich auf die Hardware ausgeweitet werden, da die CPU den Zustand des S-Bits im Statusregister SR auch hardwaremäßig nach außen gibt.
Verwendung
[Bearbeiten |Quelltext bearbeiten]Bereits zu Beginn der 1980er Jahre fand die CPU, dank optionalerMMU, ihren Weg in dieUnix-Welt. Sie wurde in hohen Stückzahlen in dieWorkstations vonApollo Computer (Apollo),HP (HP 9000-300) undSun (Sun-1) oder auch vonDigital Equipment Corporation (Vax 100) undSGI verbaut.
Mitte der 1980er Jahre folgten dann Personal- und Home-Computer, der erste warLisa vonApple, die schon bald vomMacintosh (Mac) abgelöst wurde. Er wurde auch imCommodoreAmiga, imAtari ST undSinclair QL (68008) verbaut.
Ende der 1980er und Anfang der 1990er fand er sich dann inSpielkonsolen wie demSega Mega Drive oder demNeo Geo. Auch inSchachcomputern (wie z. B. im Fidelity Mach IV als 68020 mit 20 MHz undMephisto Amsterdam als 68000 mit 12 MHz) wurde der Prozessor verwendet.
InTaschenrechnern vonTexas Instruments wie demTI-89 (Titanium),TI-92 (Plus) undVoyage 200 findet er heute noch Anwendung. Im AirbusA320 findet er im Elevator Aileron Computer (ELAC) Verwendung, der Teil desFlugsteuerungs-Systems ist. Des Weiteren wird er dort im Display Management Computer (DMC), einem Teil desElektronischen-Informations-Systems (EFIS), eingesetzt.
Das Haupteinsatzgebiet des Prozessors waren und sind Steuerungsrechner in der Industrie, meist mit einemEchtzeitbetriebssystem wieOS-9 oderpSOS,Nucleus oderLinux68k, wobei Letzteres kein Echtzeitbetriebssystem im eigentlichen Sinne ist. Dieser Einsatz und die große Verbreitung waren nicht zuletzt dank der guten Interruptarchitektur und in Kombination mit demVMEbus möglich. In hoher Stückzahl fand sich der Prozessor auch inLaserdruckern. Zusätzlich wurde er aufLAN-Karten (Schneider und Koch) und aufSCSI-Controllern (DPD), aber auch inModems (Zyxel) verwendet. Auch die Automobilindustrie – vornehmlich (Motor-)Steuergeräte – bevorzugte bis zum Erscheinen des PowerPC den Einsatz der MC683xx-Controller-Familie.
Die Hochleistungsmodelle der68000-Familie sind der68040 und68060 (bis 66 bzw. 75 MHz). Da Apple nach dem 68040 aufPowerPC-CPUs wechselte, wurde der 68060 nur noch in Erweiterungskarten für den Amiga und denAtari Falcon 030 (CT60) sowie für spezielle Anwendungen (z. B. inVMEbus-Rechnern, etwa von Motorola, sowieeingebetteten Systemen, wie inBMW-Modellen der 1990er Jahre oder hochleistungsfähigenSchachcomputern) verwendet.
Mittlerweile ist der Ur-68000 weitgehend verschwunden, wird aber noch inWahlcomputern der FirmaNedap eingesetzt. Motorola fertigt eine Vielzahl vonMikrocontrollern, die vom 68000 abstammen. DieMotorola-Coldfire-Familie (auf 68k basierende Entwicklung) ist weiterhin im Bereich eingebetteter Systeme sehr beliebt und geht bis zum V5 mit 400 MHz; diese Variante findet in HP-Laserdruckern Verwendung. DieDragonBall-Ableger wurden in den Einsteigermodellen derPalmPDAs verwendet und sind in einfachenHandys verbreitet.
Ein prominentes Beispiel für ein Coldfire-basiertes (Amiga-inspiriertes) System war dieMetabox-1000-SetTopBox, die allerdings nie auf den Markt gekommen ist.
Die FirmaApollo Computer hat auf Basis des C5 FPGA Boards eine 68080 CPU programmiert, die kompatibel zu 68K CPUs ist.
Weitere Komponenten
[Bearbeiten |Quelltext bearbeiten]Die Prozessoren68020,68030,68040 und68060 hatten bereits Funktionen integriert, die in anderen Prozessorarchitekturen erst erheblich später eingeführt wurden:
- interneHarvard-Architektur
- Branch Caches /Prediction
- Barrel-Shifter
- Pipelining /Prefetch
- User / Supervisor Mode (auchProtected Mode oderKernel Mode genannt)
Andere wesentliche Errungenschaften beziehen sich auf die Embedded Controller (Single-Chip) der M68000-Familie, die M683xx-Familie. Dazu gehören z. B. der MC68332, MC68360, MC68376. Diese Typen waren wegweisend mit folgenden Funktionen:
- BDM (Background Debug Mode). Daraus ist der Industriestandard JTAG-Debugger entstanden, da der BDM die JTAG-Leitungen verwendete bzw. sich die Leitungen teilte. Unter der IEEE-ISTO 5001-2003 und unter dem Namen Nexus wurde diese zur Standard-Schnittstelle für Embedded Systeme. Sowohl die physikalische Schnittstelle als auch das Protokoll entspricht dem Motorola BDM.
- Dual Core, wobei die zweite CPU als intelligenter Peripheriecontroller eingesetzt wurde, z. B. beim
MC68332 als TPU –Time Processing Unit oder beim
MC68360 als CPM –Communication Processor Module bzw.QUICC (Quad Integrated Communication Controller). Dieser Controller erlaubte das Verarbeiten aller möglichenseriellen Protokolle. Es ist der Vorgänger des bekanntenPower QUICC derPower-Architecture-Familie.
Literatur
[Bearbeiten |Quelltext bearbeiten]- C. Vieillefond:Programmierung des 68000, Sybex Verlag, 1986,ISBN 3-88745-060-4
- Werner Hilf, Anton Nausch:M68000 Familie Teil 1 Grundlagen und Architektur, te-wi (1984),ISBN 3-921803-16-0
- Werner Hilf, Anton Nausch:M68000 Familie Teil 2 Anwendung und Bausteine, te-wi (1984),ISBN 3-921803-30-6
- Werner Hilf:M68000-Grundlagen Band 1, Architektur, Hardware, Befehlssatz, MC68020/30/40, MC68332, Franzis, München 1994,ISBN 3-7723-6333-4
- Werner Hilf:M68000 Anwendungen Band 2, Anwender- und Systemprogrammierung, Coprozessoren, Interfacetechnik, Software auf Diskette, MC68020/30/40, MC68332, Franzis, München 1994,ISBN 3-7723-6303-2
- Werner Hilf:Mikroprozessoren für 32-Bit-Systeme, Architektur, Hardware, Befehlssatz, Markt&Technik,ISBN 3-89090-922-1
Weblinks
[Bearbeiten |Quelltext bearbeiten]- 40 Jahre Motorola 68000 – Der Sprung ins 32-Bit-Zeitalter Elektronikpraxis
- 68000er-Prozessoren: Bilder und Beschreibungen auf cpu-collection.de (englisch)
- MOTOROLA M68000 FAMILY PROGRAMMER’S REFERENCE MANUAL. Motorola Inc. 1992 Dokumentation des Herstellers, Beschreibung der Opcodes und Datenformate.
- M68000 8-/16-/32-Bit Microprocessors User’s Manual. Motorola Inc. 1993 Dokumentation des Herstellers, Beschreibung der elektrischen Signale.
Einzelnachweise
[Bearbeiten |Quelltext bearbeiten]- ↑F.T. Kozuh: System/370 capability in a desktop computer. IBM Systems Journal, abgerufen am 16. April 2022.