• 20Minuten
blank

Zu spät?

IBM zog den 68000 für den IBM-PC in Betracht, entschied sich aber für den Intel 8088, weil der 68000 noch nicht fertig war. Walden C. Rhines schrieb, dass damit „Motorola mit seiner überlegenen Technologie den wichtigsten Designwettbewerb der letzten 50 Jahre verloren hat“.

Der 68k-Befehlssatz ist besonders gut für die Implementierung von Unix geeignet, und der 68000 und seine Nachfolger wurden die dominierenden CPUs für Unix-basierte Workstations, einschließlich Sun-Workstations und Apollo/Domain-Workstations. Er wurde auch für Massenmarkt-Computer wie den Apple Lisa, Macintosh, Amiga und Atari ST verwendet. Ebenso in Microsoft Xenix-Systemen sowie in einem frühen NetWare Unix-basierten Server. Auch in der ersten Generation von Desktop-Laserdruckern kam er zum Einsatz, darunter der ursprüngliche Apple Inc. LaserWriter und der HP LaserJet.

Mitte bis Ende der 1980er Jahre, als es noch nach einem Dreikampf zwischen IBM-PC, Commodore mit Amiga und dem Atari ST aussah, hatte der Motorola-Prozessor eine hohe Verbreitung und das letztlich der PC das Rennen machte, lag am wenigsten an der CPU. Nicht auszudenken, wie der Prozessormarkt heute aussehen würde, hätte sich IBM etwas später für den PC entschieden oder wäre Motorola etwas früher dran gewesen.

1981 wurde das Motorola 68000 Educational Computer Board auf den Markt gebracht, einen Einplatinencomputer für Bildungs- und Ausbildungszwecke, der neben dem 68000 selbst Speicher, E/A-Geräte, einen programmierbaren Timer und einen Wire-Wrap-Bereich für kundenspezifische Schaltungen enthielt. Das Board wurde bis in die frühen 1990er Jahre an US-Colleges als Hilfsmittel zum Erlernen der Assembler-Programmierung eingesetzt.

1982 wurde die Befehlssatzarchitektur (ISA) des 68000 geringfügig aktualisiert, um virtuellen Speicher zu unterstützen und den Virtualisierungsanforderungen von Popek und Goldberg zu entsprechen. Der aktualisierte Chip wird 68010 genannt. Er fügt auch einen neuen „Schleifenmodus“ hinzu, der kleine Schleifen beschleunigt und die Gesamtleistung bei gleichen Taktraten um etwa 10 % erhöht. Eine weitere erweiterte Version, die 31 Bits des Adressbusses freilegt, wurde ebenfalls in kleinen Stückzahlen als 68012 produziert.

Um kostengünstigere Systeme und Steuerungsanwendungen mit kleineren Speichergrößen zu unterstützen, führte Motorola ebenfalls 1982 den 8-Bit-kompatiblen MC68008 ein. Dabei handelt es sich um einen 68000 mit einem 8-Bit-Datenbus und einem kleineren (20-Bit-)Adressbus. Nach 1982 widmete Motorola den Projekten 68020 und 88000 mehr Aufmerksamkeit.

Bemerkenswerte Architektur

Der 68000 hat einen externen 24-Bit-Adressbus und zwei Byte-Select-Signale. Diese 24 Leitungen können daher 16 MB physikalischen Speicher mit Byte-Auflösung adressieren. Für die Adressenspeicherung und -berechnung werden intern 32 Bits verwendet. Die 8 höherwertigen Adressbits werden jedoch aufgrund des Fehlens von Gerätepins ignoriert. Dies ermöglicht die Ausführung von Software, die für einen logisch flachen 32-Bit-Adressraum geschrieben wurde, während auf einen physikalischen Adressraum von nur 24 Bit zugegriffen wird. Mit dem internen 32-Bit-Adressraum verfolgte Motorola das Ziel der Vorwärtskompatibilität, so dass es möglich war, 68000-Software zu schreiben, die die Vorteile späterer 32-Bit-Implementierungen des Befehlssatzes voll ausnutzen konnte.

Ansicht von unten auf einen Motorola XC68020
Ansicht von unten auf einen Motorola XC68020 (Foto: Wikipedia)

Dies hinderte die Programmierer jedoch nicht daran, inkompatible Software zu schreiben. „24-Bit“-Software, die das obere Adressbyte verwarf oder es für andere Zwecke als die Adressierung verwendete, konnte bei 32-Bit-Implementierungen des 68000 fehlschlagen. Frühe Versionen (vor 7.0) von Apples Mac OS verwendeten beispielsweise das obere Byte von Speicherblock-Masterzeigern, um Flags wie „locked“ und „purgeable“ zu speichern. Spätere Versionen des Betriebssystems verschoben die Flags an eine nahegelegene Stelle, und Apple begann mit der Auslieferung von Computern mit „sauberen“ 32-Bit-ROMs, beginnend mit der Veröffentlichung des Mac IIci von 1989.

Die CPU hat acht 32-Bit-Allzweck-Datenregister (D0-D7) und acht Adressregister (A0-A7). Dies war in vielerlei Hinsicht eine gute Anzahl von Registern zu dieser Zeit. Sie war klein genug, um es dem 68000 zu ermöglichen, schnell auf Interrupts zu reagieren und dennoch groß genug, um die meisten Berechnungen schnell zu machen, da sie vollständig innerhalb des Prozessors durchgeführt werden konnten, ohne Teilergebnisse im Speicher zu halten.

Man beachte, dass eine Ausnahmeroutine im Supervisor-Modus auch den Benutzer-Stack-Pointer A7 speichern kann, was insgesamt 8 Adressregister ergeben würde. Das Design des 68000 mit zwei Stapelzeigern macht dies jedoch normalerweise unnötig, es sei denn, es wird ein Taskwechsel in einem Multitasking-System durchgeführt.

Mit den beiden Registertypen können gleichzeitig eine 32-Bit-Adress- und eine 16-Bit-Datenberechnung bewältigt werden. Dies führt zu einer Verkürzung der Befehlsausführungszeit, da Adressen und Daten parallel verarbeitet werden können.

Der 68000 verfügt über ein 16-Bit-Statusregister. Die oberen 8 Bits sind das Systembyte, und seine Änderung ist privilegiert. Die unteren 8 Bits sind das Benutzerbyte, auch bekannt als Bedingungscoderegister (CCR), und seine Änderung ist nicht privilegiert. Die 68000-Vergleichs-, Arithmetik- und Logikoperationen modifizieren die Bedingungscodes, um ihre Ergebnisse zur Verwendung durch spätere bedingte Sprünge aufzuzeichnen.

68000 im Amiga 500
68000 im Amiga 500

Die Entwickler haben versucht, die Assemblersprache orthogonal zu gestalten. Das heißt, die Anweisungen sind in Operationen und Adressmodi unterteilt, und fast alle Adressmodi sind für fast alle Anweisungen verfügbar. Es gibt 56 Befehle und eine Mindestgröße von 16 Bit. Viele Befehle und Adressierungsmodi sind länger, um mehr Adress- oder Modusbits aufzunehmen.

Die CPU sowie später die gesamte Familie, verfügt über zwei Privilegierungsebenen. Der Benutzermodus erlaubt den Zugriff auf alles, außer auf privilegierte Befehle wie die Steuerung der Unterbrechungsebene. Das Supervisor-Privileg erlaubt den Zugriff auf alles. Ein Interrupt wird immer zum Supervisor. Das Supervisor-Bit wird im Statusregister gespeichert und ist für Benutzerprogramme sichtbar. Ein Vorteil dieses Systems ist, dass die Supervisor-Ebene einen eigenen Stapelzeiger hat. Das ermöglicht es einem Multitasking-System, sehr kleine Stapel für Aufgaben zu verwenden, da die Entwickler nicht den Speicher zuweisen müssen, der erforderlich ist, um die Stapelrahmen eines maximalen Stapels von Interrupts aufzunehmen.

Autor

Abonnieren
Benachrichtige mich bei
guest

0 Comments
Inline Feedbacks
Alle Kommentare anzeigen