Benutzer:INFNIC/Prozessor (Mikroprozessor)
Ein Mikroprozessor (griech. mikros für klein) ist ein Prozessor in sehr kleinem Maßstab, bei dem alle Bausteine des Prozessors auf einem Mikrochip vereinigt sind.
Geschichte
In den frühen 60ern wurden die Röhren von den Transistoren verdrängt. Anfangs wurden die Prozessoren aus einzelnen Transistoren aufgebaut. Durch die Verkleinerung der Transistor auf nur einige Mikrometer war es möglich immer mehr Transistorfunktionen auf ICs unter zu bringen. Waren es zunächst nur einzelne Gatter, integrierte man immer häufiger auch ganze Register und Funktionseinheiten wie Addierer und Zähler, schließlich dann sogar Registerbänke und Rechenwerke auf einem Chip. Diese zunehmende Integration von immer mehr Transistor- und Gatterfunktionen auf einem Chip führte dann fast zwangsläufig zu dem, was heute als Mikroprozessor bekannt ist.
Als Erfinder des Mikroprozessors gilt die Firma Texas Instruments, die sich diese Idee auch patentieren ließ. Im Jahr 1971 stellte Intel mit dem 4004 die erste CPU auf einem Chip vor. Der Mikroprozessor war geboren. Mit nur 4 Bit breiten Registern und einer Taktfrequenz von knapp über 100 kHz, war der 4004 aber nicht gerade besonders leistungsfähig. Seine im Vergleich mit den klassischen CPUs äußerst kompakte Bauform verhalf dem Mikroprozessor aber schließlich trotzdem zum Durchbruch. Ursprünglich war der 4004 eine Auftragsentwicklung für den japanischen Tischrechnerhersteller Busicom. Intels Projektleiter Ted Hoff hatte die Idee, das Herz dieses Tischrechners in Form eines programmierbaren Bausteins zu realisieren. Dass dabei die erste universell einsetzbare Einchip-CPU der Welt herauskam, war eigentlich nicht beabsichtigt. Da Busicom damals in finanziellen Schwierigkeiten steckte, bot man Intel den Rückkauf des 4004-Designs an, woraufhin Intel mit der Vermarktung des 4004 begann. Der 4004 wurde zum ersten kommerziellen Mikroprozessor der Welt...
Es gab schon Ende der 60er Jahre einen Microprozessor von Rockwell (PPS4 (Parallel Processing System 4bit)), der aber nur für US-Rüstungsprojekte bei Raketensteuerungen Verwendung fand. Zunächst waren dies noch recht einfache Schaltungen. Die Mikroelektronik brachte neben der Miniaturisierung und der enormen Kostenersparnis noch weitere Vorteile wie Geschwindigkeit, geringer Stromverbrauch, Zuverlässigkeit und später auch höhere Komplexität. Dies führte dazu, dass vergleichsweise billige Mikroprozessoren mit der Zeit die teuren Prozessoren der Minicomputer und teilweise sogar der Großrechner verdrängten. Gegen Ende des zwanzigsten Jahrhunderts hielt der Mikroprozessor Einzug in viele elektronische Geräte, vor allem als CPU von Personal-Computern (PCs). Auch als die Strukturgröße der Mikroprozessor-Chips auf einige hundert Nanometer (Nanoelektronik) weiter verkleinert wurde, blieb der Begriff Mikroprozessor bestehen.
Zur Realisierung eines kompletten Computers muss der Mikroprozessor noch um Speicher und Ein-/Ausgabe-Funktionen erweitert werden. Diese stehen in Form weiterer Chips zur Verfügung. Nur wenige Jahre nach der Einführung von Mikroprozessoren erschienen jedoch auch sog. Mikrocontroller, die diese Funktionen auf einem Chip vereinigten.
Beachtenswerte 8-Bit-Prozessoren
Der 4004 wurde 1972 durch den 8008 abgelöst, der erste 8-Bit-Mikroprozessor der Welt. Dieser Prozessor war der Vorläufer für den äusserst erfolgreichen Intel 8080 (1974), den Zilog Z80 (1976) und weitere 8-Bit-Prozessoren von Intel. Der konkurrierende Motorola 6800 war ab August 1974 , im selben Jahr wie der 8080, erhältlich. Die Architektur des 6800 wurde 1975 für den MOS Technology 6502 kopiert und verbessert, der in den 80iger-Jahren in der Popularität mit dem Z80 wetteiferte.
Sowohl der Z80 als auch der 6502 wurden im Hinblick auf tiefe Gesamtkosten entwickelt: So wurde ein kompaktes Gehäuse, tiefe Ansprüche an den Bus und die Einbindung von Schaltungen, die normalerweise in einem separaten Chip zur Verfügung gestellt werden mussten (Der Z80 verfügte zB. über einen eigenen Memory Controller), miteinander kombiniert. Diese Eigenschaften waren es schliesslich, die dem Heimcomputer-Markt in anfangs 1980 zum Durchbruch verhalfen und in Maschinen resultierten, die für US$99 erhätlich waren.
Western Design Center (WDC) stellte den CMOS 65C02 in 1982 vor und lizenzierte das Design an verschiedene Firmen. Dieser Prozessor wurde das Herz der Apple IIc und IIe, wurde in Herzschrittmachern und Deffilibratoren, Autos sowie in industriellen Geräten und Geräten auf dem Verbrauchermarkt eingesetzt. WDC bereitete so den Weg vor für das Lizenzieren von Mikroprozessor-Technologie, das Modell wurde später durch ARM und anderen Hersteller in den 90iger-Jahren übernommen.
Motorola übertrumpfte 1978 die gesamte 8-Bit-Welt mit der Vorstellung des Motorola 6809, wohl eine der leistungsstärksten, unabhängigen und saubersten 8-Bit-Architekturen - und auch eine der komplexesten festverdrahteten Mikroprozessor-Logiken, die auch produziert wurden. Mikroprogrammierung ersetzte zu dieser Zeit die bisher festverdrahteten Logiken - gerade weil die Anforderungen der Designs für eine feste Verdrahtung zu komplex wurden.
Ein weiterer 8-Bit-Mikroprozessor war der Signetics 2650, der aufgrund seiner innovativen und leistungsfähigen Befehlssatz-Architektur kurzzeitig im Zentrum des allgemeinen Interesses stand.
Ein für die Raumfahrt wegweisender Mikroprozessor war der RCA 1802 (a.k.a. CDP1802, RCA COSMAC. Vorgestellt 1974), der in den Voyager,Viking und Galileo-Raumsonden eingesetzt wurde. Der CDP1802 wurde verwendet, weil er mit sehr wenig Energie betrieben konnte und seine Bauart (Silicon on Saphire) einen wesentlich höheren Schutz gegenüber kosmischer Strahlung und elektrostatischen Entladungen bot als jeder andere Prozessor zu dieser Zeit. Der CP1802 wurde als erster Strahlungs-gehärteter Prozessor bezeichnet.
16-Bit-Prozessoren
Der erste Mehrfach-Chip 16-Bit-Mikroprozessor war der IMP-16 von National Semiconductor, vorgestellt 1973. Eine 8-Bit-Version wurde ein Jahr später als der IMP-8 vorgestellt. 1975 stellte National Semiconductor den ersten Ein-Chip-Mikroprozessor vor, PACE, der später gefolgt wurde durch eine NMOS-Version, dem INS8900.
Andere Mehrfach-Chip 16-Bit-Mikroprozessoren waren der TMS 9900 von TI, der auch mit der hauseigenen TI 990-Minicomputer-Modellreihe kompatibel war. Der Chip besass ein grosses 64-Pin DIP-Gehäuse, während die meisten 8-Bit-Prozessoren in das weiter verbreitete, kleinere und billigere 40-Pin DIP-Gehäuse aus Kunstoff eingesetzt wurden. Ein Nachfolger wurde aus dem 9900 entwickelt, der TMS 9980, ebenfalls ein billigeres Gehäuse besass. Er sollte ein Konkurrent zum Intel 8080 darstellen. Der TMS9980 konnte 8 Datenbits zur gleichen Zeit kopieren, aber nur 16KB addressieren. Ein dritter Chip, der TMS 9995, wurde neu entwickelt. Diese Prozessorfamilie wurde später mit dem 99105 und 99110 erweitert.
WDC machte seinen 65C02 16-Bit-tauglich und stellte diesen Prozessor als CMOS 65816 im Jahre 1984 vor. Der 65816 stellte den Kern der Apple IIgs und später des Super Nintendos dar, was ihn zu einem der beliebtesten 16-Bit-Designs machte.
Intel folgte einem anderen Pfad, keine Minicomputer zu emulieren, und "vergrösserte" stattdessen ihr 8080-Design auf 16-Bit. Daraus entstand der Intel 8086, das erste Mitglied der x86-Familie, die heute in den meisten PCs zu finden ist. Intel stellte den 8086 als kostengünstigen Weg vor, Software von der 8080-Linie zu portieren und machte damit gute Geschäfte. Nachfolgend zum 8080 und Intel 8088 wurde der 80186, der 80286 und 1995 der 32-Bit 80386, die alle rückwärtskompatibel waren und so die Marktvorherrschaft von Intel entscheidend stärkten.
32-Bit-Prozessoren
Der erste 32-Bit-Mikroprozessor in einem eigenen Gehäuse war der BELLMAC-32A von AT&T Bell Labs, von dem erste Stücke 1980 erhältlich waren und 1982 in Masse produziert wurde. Nach der Zerschlagung von AT&T in 1984 wurde er in WE 32000 umbenannt (WE für Western Electric), und hatte zwei Nachfolger: Den WE 32100 und WE 32200. Diese Mikroprozessoren wurden in den folgenden Minicomputern von AT&T eingesetzt: 3B2, 3B5, 3B15, "Companion" und "Alexander".
Ein bemerkenswerter 32-Bit-Mikroprozessor ist der MC68000, der 1979 vorgestellt wurde. Er wurde meist als 68K bezeichnet und verfügte über 32-bittige Register, verwendete aber 16 Bit breite interne Busleitungen und ein ebenso breiter externe Datenbus um die Anzahl der Pins zu verringern. Motorola bezeichnete diesen Prozessor im allgemeinen als 16-Bit-Prozessor, obwohl er über eine 32-Bit-Architektur verfügte. Die Kombination aus einem schnellen und grossen Speicher-Adressraum (16 Megabyte) und tiefen Kosten machten im zum beliebtesten Prozessor seiner Klasse. Der Apple Lisa und die Macintosh-Reihe verwendeten den 68K, Mitte der 80iger-Jahren wurde dieser Prozessor auch im Atari ST und Commodore Amiga eingesetzt.
Intel's erster 32-Bit-Mikroprozessor war der iAPX 432, welcher 1981 vorgestellt wurde. Obwohl er über eine fortgeschrittene, objekt-orientierte Architektur verfügte, war ihm kein kommerzieller Erfolg beschieden, nicht zuletzt weil die Leistung gegenüber konkurrierenden Architekturen schlechter abschnitt.
Motorola's Erfolg mit dem 68K führte zur Vorstellung des MC68010, welcher virtuellen Speicher unterstützte. Der MC68020 schliesslich verfügte über 32 Bit breite interne und externe Busse. Dieser Prozessor wurde im Unix-Supermicrocomputer äusserst beliebt, und viele kleinere Firmen stellten Desktop-Systeme mit diesem Prozessor her. Der MC68030 integrierte die MMU in den Chip. Die meisten Computer, die nicht auf DOS liefen, setzten nun einen Chip der 68K-Familie ein. Dieser anhaltende Erfolg führe zum MC68040, der auch die FPU in den Chip integrierte und so die Geschwindigkeit arithmetischer Operationen erhöhte. Ein geplanter MC68050 erreichte nicht die erwünschten Verbesserungen und wurde nicht produziert, der MC68060 wurde auf ein Marktsegment geworfen, das bereits mit viel schnelleren RISC-Designs gesättigt war.
Der 68020 und seine Nachfolger wurde häufig in Embedded Systems eingesetzt.
Während dieser Zeit (Anfang bis Mitte 1980) stellte National Semiconductor ähnlich wie Motorola einen 32-Bit-Prozessor mit einem 16-bittigen Pinout her, den NS 16032 (später umbenannt zu NS 32016), die Version mit einem ebenfalls 32-Bit breiten Bus war der NS 32032. Sequent stellte basierend auf diesem Mikroprozessor Mitte der 80iger-Jahren den ersten SMP-Computer vor.
Andere Systeme setzten den Zilog Z8000 ein, welcher aber zu spät im Markt ankam und bald wieder verschwand.
Prozessor Aufbau
Ein Prozessor besteht aus Registern, einem Rechenwerk, einem Befehlsdecoder sowie einem Steuerwerk. Das Rechenwerk ist für arithmetische und logische Funktionen zuständig, Befehlsdecoder und Steuerwerk sind für die Ausführung der Befehle und die Koordination deryuahah du hastz´die machtsdsdsd]]) bzw. zusätzlichen (etwa einem Fließkommarechenwerk) Rechenwerken ausgestattet sein. Zur effizienteren Bearbeitung von Befehlen werden Pipelines verwendet. Alle komplexeren Signal bewirkt. Einige (sehr einfach aufgebaute und damit sehr billige) Prozessoren haben keine Interruptfähigkeit, sondern müssen über Software abfragen, ob ein äußeres Ereignis vorliegt.
Befehlsbearbeitung
Die Befehlsbearbeitung moderner Mikroprozessoren folgt dem Von-Neumann-Zyklus. Die wichtigsten Phasen sind dabei das Laden des Befehls (FETCH), seine Dekodierung (DECODE) und seine Ausführung (EXECUTE). Gelegentlich unterscheidet man auch noch eine Rückschreibphase, in welcher die Rechenergebnisse in bestimmte Register geschrieben werden. Da moderne Mikroprozessoren parallele Techniken wie etwa Pipelining und Superskalarität einsetzen, werden unter Umständen mehrere Befehle gleichzeitig in dieser Weise bearbeitet.
Ungeordnete Befehlsausführung
Die meisten modernen Hochleistungsprozessoren sind in der Lage, Befehle in ungeordneter, d.h. nicht strikt in der vom Programm vorgegebenen Reihenfolge auszuführen. Die Motivation für eine Abweichung von der vorgegebenen Befehlsfolge besteht darin, dass aufgrund von Verzweigungsbefehlen der Programmlauf nicht immer sicher vorhergesehen werden kann. Möchte man Befehle bis zu einem gewissen Grad parallel ausführen, so ist es in diesen Fällen notwendig, sich für eine Verzweigung zu entscheiden und die jeweilige Befehlsfolge spekulativ auszuführen. Es ist dann möglich, dass der weitere Programmlauf dazu führt, dass eine andere Befehlsfolge ausgeführt werden muss, so dass die spekulativ ausgeführten Befehle wieder rückgängig gemacht werden müssen. In diesem Sinne spricht man von einer ungeordneten Befehlsausführung.
Die Grafik zeigt die wesentlichen Komponenten und das Grundprinzip einer ungeordneten Befehlsausführung. Zunächst erkennt man eine Harvard-Architektur, d.h. eine Trennung von Daten- und Befehlsspeicher, die ein paralleles Laden von Befehlen und ihren Operanden ermöglicht. Es existieren mehrere Rechenwerke, die parallel arbeiten können. Befehle und Operanden werden nun aber nicht direkt in die Rechenwerke eingespeist, sondern zunächst in sogenannte Reservierungs-Stationen. Dabei kann es sich um Befehle handeln, die aufgrund einer Programmverzweigung möglicherweise gar nicht ausgeführt werden müssen. Sobald ein Rechenwerk frei ist, werden Befehl und Operanden aus der zugehörigen Reservierungs-Station geladen, der Befehl ausgeführt und das Ergebnis in einem sogenannten Umbenennungs-Register aufgefangen. Das Zurückhalten des Ergebnisses ist notwendig, da noch nicht klar ist, ob der ausgeführte Befehl überhaupt auszuführen war. Sobald klar ist, dass die Verzweigung korrekt vorhergesagt wurde, sorgt die Komplettierungseinheit dafür, dass die Umbenennungs-Register mit den Architektur-Registern synchronisiert werden. Die Architektur-Register sind die klassischen Prozessor-Register, von denen aus das Ergebnis (ggf. über einen Cache-Speicher) in den Hauptspeicher transportiert wird. Sollte sich herausstellen, dass die Befehle aufgrund einer falsch vorhergesagten Verzweigung nicht auszuführen waren, so werden die Umbenennungs-Register zurückgesetzt. Man spricht dann auch von Branch Recovery.
Adressierungsarten
In modernen Mikroprozessoren werden verschiedene Adressierungsarten für die verwendeten Operanden verwendet. Dabei handelt es sich um verschiedene Methoden zur Berechnung der effektiven logischen Speicheradressen. Die Berechnung der physikalischen Adressen anhand der logischen Adressen ist davon unabhängig und wird in der Regel von einer Memory Management Unit durchgeführt. Das folgende Bild gibt einen Überblick über die die wichtigsten Adressierungsarten.
Registeradressierung
Bei einer Registeradressierung steht der Operand bereits in einem Prozessorregister bereit und muss folglich nicht mehr aus dem Speicher geladen werden. Erfolgt die Registeradressierung implizit, so wird das Register über die Angabe des Opcodes mitadressiert (Beispiel: der Opcode bezieht sich implizit auf den Akkumulator). Bei expliziter Registeradressierung wird die Nummer des Registers im Registerfeld des Opcodes mitgegeben.
Einstufige Adressierung
Bei einstufigen Adressierungsarten kann die effektive Adresse durch eine einzige Adressberechnung ermittelt werden. Es muss also im Laufe der Adressberechnung nicht erneut auf den Speicher zugegriffen werden. Bei unmittelbarer Adressierung enthält der Befehl keine Adresse, sondern den Operanden selbst. Bei direkter Adressierung enthält der Befehl die logische Adresse selbst, es muss also keine Adressberechnung mehr ausgeführt werden. Bei Register-indirekter Adressierung ist die gesuchte logische Adresse bereits in einem Adressregister des Prozessors enthalten. Die Nummer dieses Adressregisters wird über den Opcode übergeben. Bei der indizierten Adressierung erfolgt die Adressberechnung mittels Addition: Der Inhalt eines Registers wird zu einer Basisadresse hinzugerechnet. Bei Programmzähler-relativer Adressierung wird die neue Adresse aus dem aktuellen Wert des Programmzählers und einem Offset ermittelt.
Zweistufige Adressierung
Bei zweistufigen Adressierungsarten sind mehrere Rechenschritte notwendig, um die effektive Adresse zu erhalten. Insbesondere ist im Laufe der Berechnung meist ein zusätzlicher Speicherzugriff notwendig. Als Beispiel sei hier die indirekte absolute Adressierung genannt. Dabei enthält der Befehl eine absolute Speicheradresse. Das Speicherwort, das unter dieser Adresse zu finden ist, enthält die gesuchte effektive Adresse. Es muss also zunächst mittels der absoluten Speicheradresse auf den Speicher zurückgegriffen werden, um die effektive Adresse zu ermitteln. Dies kennzeichnet alle zweistufigen Verfahren.
Beispiele
Literatur
- Thomas Flik: Mikroprozessortechnik und Rechnerstrukturen, Springer-Verlag, Berlin und Heidelberg 2004, ISBN 3-540-22270-7
- Michael S. Malone: Der Mikroprozessor. Eine ungewöhnliche Biographie, Springer-Verlag, Berlin und Heidelberg 1995, ISBN 3-540-60514-2