Motorola 68000
aus Wikipedia, der freien Enzyklopädie
Der Motorola 68000 ist ein 1979 eingeführter CISC-Prozessor aus der 68000er-Familie von Motorola. Er besitzt intern 32-Bit-Register, einen mit 32 Bit adressierten linearen Adressraum, davon 24 Bit extern verfügbar, acht 32-Bit-Datenregister, acht 32-Bit-Adressregister, ein 16-Bit-Statusregister sowie einen 16-Bit-Datenbus. Eine Variante ist der Motorola 68008, bei dem der Datenbus auf 8 Bit sowie der Adressbus auf 20 Bit reduziert sind. Als verbesserte Version kam der Motorola 68010 auf den Markt, der um Fehler bereinigt wurde und verbesserte Unterstützung von virtuellem Speicher bietet. Ein 68010 mit erweitertem Adressbus von 31 Bit wurde als Motorola 68012 angeboten. Später folgten noch der 68020, 68030, 68040 und 68060.
Die Bezeichnung 68000 kommt laut einer modernen Legende von der Anzahl Transistoren, die der Prozessor besitzt. Tatsächlich ist es jedoch die logische Fortsetzung der Typbezeichnung der älteren 8 Bit Motorola Prozessorfamilie Motorola 6800.
Der 68000er (auch 68k genannt) mit 8 MHz Taktfrequenz kam im 64-poligen DIL-Gehäuse (siehe Bild) auf den Markt. Mit dem Übergang zu höheren Taktraten wurden dann ab 16 MHz nur noch 68-polige PLCC-Gehäuse verwendet.
Inhaltsverzeichnis |
[Bearbeiten] Architektur und Befehlssatz
Die Prozessoren der 68000-Familie zeichnen sich durch die große Anzahl der Register und einen weitgehend orthogonalen Befehlssatz aus, d. h. fast alle Maschinenbefehle lassen sich mit allen Adressierungsarten verwenden.
Der 68000 hat nur eine 16 Bit-ALU und auch einen 16 Bit-Instruktionssatz, der aber sowohl mit 8-, 16- als auch 32-Bit-Datentypen umgehen kann (32-Bit-Architektur).
Beispiel für ein typisches M68000 Kommando:
JSR <ea> (Jump to subroutine) |
Befehlsformat 0100 1110 10mm mrrr |
Das Kommando 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 zu JSR (d16,PC). Da hier die PC-relative Adressierung mit Distanzadresse (displacement) zur Anwendung kommt, wird das folgende Wort als vorzeichenbehaftete relative Adresse (displacement) verwendet. Andere Kommandos wie MOVEQ #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 anzugeben (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.
Es ergeben sich nicht wie z. B. beim Intel 8086 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 Schaltkreis 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 von einem reinen 16-Bitter zu erwarten wäre. Zudem kann der Text länger als 64 KiB sein, ohne Modifikation des Programms. 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 Prozessor-Generationen aus der 68000-Familie mit 32 Bit externem Adressbus führt dies offensichtlich zu Problemen. Da diese Art der Programmierung aber auf den frühen Macintosh-Rechnern sehr verbreitet war, hatten spätere Macintosh-Versionen mit 68020-Prozessor ohne Memory Management Unit (MMU) einen speziellen Baustein, genannt Address 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 mit Nanocode und Microcode ist der 68000 gewissermaßen auf Hardwareebene durch den Hersteller programmierbar. Das führte zu so interessanten Varianten wie dem 68000-360, der direkt auf dem Chip eine abgespeckte Fassung des IBM-System/360-Befehlssatzes ausführen konnte und für ein kleines 360-Modell von IBM benutzt wurde. Über die Workstations von Apollo, HP und Sun (Sun-1) oder den Amiga 2500 UX fand die CPU auch ihren Weg in die Unix-Welt – dank optionaler MMU.
Außerdem ermöglichte dies einen einfachen Weg, um Varianten des Chips zu erzeugen. Die erste davon 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 der 68010, 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 zur Verfügung stellte. Später wurden Varianten meist direkt von der ursprünglichen CPU abgeleitet, wie z. B. der 680EC20 vom 68020 (24 statt 32 Adressleitungen) – oder der 68EC040 und der 680LC40 vom 68040 (es fehlten dann entweder die FPU oder die MMU). Ab dem 68020 wurden Schritt für Schritt auch erste 64-Bit-Befehle integriert (für einfache Multiplikationen).
Über drei binär kodierte Interruptleitungen können Interrupts 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.
Der Prozesser enthält ferner Steuerleitungen, die signalisieren, ob als nächstes ein Befehl oder Daten geholt werden. Dies ermöglicht den Aufbau von Rechnern mit getrenntem Speicher für Programme und Daten (Harvard-Architektur).
[Bearbeiten] Verwendung
Der 68000 wurde unter anderem eingesetzt in Computern von Apple (Lisa und Macintosh), im Commodore Amiga, Atari ST und Sinclair QL (68008) sowie in Spielkonsolen wie dem Sega Mega Drive oder dem Neo Geo. Auch Schachcomputern (wie z. B. im Fidelity Mach IV als 68020 mit 20 MHz und Mephisto Amsterdam als 68000 mit 12 MHz) wurde der Prozessor verwendet. In Taschenrechnern von Texas Instruments wie dem TI-89 (Titanium), TI-92 (Plus) und Voyage 200 findet er heute noch Anwendung. Im Airbus A320 steuert er den Elevator Aileron Computer (ELAC), der Teil des Flugsteuerungs-Systems ist.
Das Haupteinsatzgebiet des Prozessors waren und sind, dank der exzellenten Interruptarchitektur, Steuerungsrechner in der Industrie, meist mit einem Echtzeitbetriebssystem wie OS-9, Nucleus oder Linux68k, wobei Letzteres kein Echtzeitbetriebssystem im eigentlichen Sinne ist. In hoher Stückzahl fand sich dieser Prozessor auch in Laserdruckern.
Die Hochleistungsmodelle der 68000-Familie sind der 68040 und 68060 (bis 66 bzw. 75 MHz). Da Apple nach dem 68040 auf PowerPC-CPUs gewechselt ist (und seit 2006 die x86-CPUs von Intel verwendet), wurde der 68060 nur noch in Erweiterungskarten für den Amiga und dem Atari Falcon 030 (CT60) sowie für spezielle Anwendungen (z. B. in eingebetteten Systemen wie in BMW-Modellen der 1990er Jahre oder hochleistungsfähigen Schachcomputern) verwendet. Mit dem Wechsel auch von Amiga auf PowerPC war dann endgültig das Ende erreicht – die strategischen Interessen Motorolas lagen bei Apple und IBM.
Mittlerweile ist der eigentliche 68000 praktisch verschwunden, wird aber noch in Wahlcomputern der Firma Nedap eingesetzt. Motorola fertigt aber eine Vielzahl von Microcontrollern, die vom 68000 abstammen. Die Motorola-Coldfire-Familie („abgespeckter“ 68020 bzw. 68040) ist weiterhin im Bereich eingebetteter Systeme sehr beliebt, und die DragonBall treiben noch immer die Einsteigermodelle der Palm PDAs an und sind in Handys weit verbreitet.
Ein prominentes Beispiel für ein Coldfire-basiertes (und noch dazu Amiga-inspiriertes) System war die Metabox-1000-SetTopBox, die allerdings nie auf den Markt gekommen ist.
[Bearbeiten] Literatur
- C. Vieillefond, Programmierung des 68000, Sybex Verlag 1986, ISBN 3-88745-060-4