![]() |
MikrocomputertechnikProf. Jürgen Plate |
| Zeitraum | Schaltungstechnik | Verbreitung | Programmierung | Geschwindigkeit |
|---|---|---|---|---|
| 1945-1955 | Relais, Röhren | wenige Exemplare | Steckbrett, Maschinencode | 103Op./s |
| 1955-1965 | Transistoren, Dioden | Hunderte | Assembler, FORTRAN | 104Op./s |
| 1965-1980 | Integrierte Schaltungen | Tausende | höhere Programmierspachen | 106Op./s |
| ab 1980 | Hoch integrierte Schaltungen (VLSI) | Millionen | höhere Programmiersprachen | > 107Op./s |
Handelte es sich bei den ersten Systemen noch um nur in wenigen Stückzahlen gefertige Geräte mit hohen Anschaffungs- und Betriebskosten sowie riesigem Platzbedarf und geringer Zuverlässigkeit, so beanspruchen die die ab 1955 entwickelten Maschinen ihre Rolle als erste kommerziell erfolgreiche Systeme.
Die Fortschritte der Fertigungstechnik erlauben eine immer weiter voranschreitende Packungsdichte der integrierten Schaltungen und verbilligen gleichzeitig deren Herstellung. Mit dem Personal Computer (PC) und den Heimcomputern (denen nur eine kurze Lebendauer beschieden war) begann der Einzug der Mikrocomputer und Mikrocontroller in alle Lebensbereiche. Heute enthält beispielsweise ein Mittelklassse-PKW eine zweistellige Anzahl vom Mikrocontrollern.
Parallel zur Entwicklung der CPU entwickelte sich die Landschaft der zugehörigen Peripherie. Die erste Rechnergeneration verfügte noch über keine dedizierten Peripheriegeräte. Eingaben wurden direkt, durch Schalttafeln und Erstellung von Hardwareverbindungen, an der Maschine vorgenommen. Ausgaben erfolgten über Lampen oder andere Signalgeber. Ab den 1955er Jahren finden sich zunehmen externe Geräte zur Abwicklung und dauerhaften Speicherung der verarbeiteten Daten und Programme. Es begann mit Lochstreifen, die später durch Lochkarten abgelöst wurden. Als Ein- und Ausgabegerät kamen modifizierte Fernschreiber oder entsprechend angepasste elektrische Schreibmaschinen hinzu. Später wurden sie von Textbildschirmen abgelöst. Bei Embedded Systemen (Computersysteme, die in Geräten zur Steuerung dienen) gibt es meist keine Peripherie im klassischen Sinn, sondern dort fungieren Sensoren und Aktoren (Relais, Motoren etc.) als Ein- und Ausgabe.
Wesentliches Element einer Rechnerarchitektur ist der Prozessor (engl. central processing unit, CPU), der die Hauptteile der Verarbeitung übernimmt. Der stetiger Leistungszuwachs der CPU richtete sich in der Vergangenheit nach dem Moore'schen Gesetz, das auf Basis empirischer Daten eine Verdopplung der Transistorenanzahl pro Chip (und damit der Leistungsfähigkeit) alle anderthalb Jahre voraussagt.
Aktuelle Prozessoren folgen dem folgenden schematischen Aufbau, der die zentralen Architekturkomponenten Leitwerk, Rechenwerk (arithmetic and logic unit, ALU), Registersatz und typischerweise den Mikroprogrammspeicher umfaßt.

Diese, nach dem Erfinder als "von-Neumann-Architektur" bezeichnete, Architektur prägt den Aufbau von Rechenanlagen seit den 1950er Jahren und gilt im Kern bis heute (siehe unten, 1.1). Einige Engpässe der von-Neumann-Architektur beruhen auf der Gleichbehandlung von Daten und darauf arbeitenden Programmen und der sequenziellen Verarbeitung.
Moderne CPU-Architekturen (z. B. Intel Pentium, AMD Athlon und Power PC) verfügen innerhalb einer CPU über mehrere Rechenwerke, insbesondere solche für Fest- und Gleitkommaoperationen.
Das Leitwerk steuert den gesamten Verarbeitungsfluss. Zur Regelung der Verarbeitung speichert das Leitwerk prozessorinterne Zustände (Status von Berechnungen und Fehlerindikatoren) in CPU-internen Speichern, den sog. Registern.
Der Registersatz wird durch eine Reihe von Speicherzellen, die direkt in
der CPU untergebracht sind realisiert. Diese Speicherform stellt die
schnellste und gleichzeitig teuerste Form des Speichers dar. Register besitzen
typischerweise eine feste Länge, die mit der verarbeitbaren Wortlänge der CPU
korrespondiert. Häufig werden die zur Verfügung stehenden
Register bezüglich ihrer Funktionsweise, d.h. ihres Einsatzgebietes
unterschieden, da oftmals nicht jedes Register für jeden Maschinenbefehl zur
Verfügung steht. Minimalanforderung an einen Registersatz ist die Bereitstellung
eines Befehlszählers (Befehlszeigerregister, engl. Instruction Pointer Register),
der die Adresse des nächsten abzuarbeitenden Befehls enthält.
Darüber hinaus sind Register zur Aufnahme des Rechenergebnisses (Akkumulator) und zur
Aufnahme von Adressen (Stackpointer, Indexregister) sowie ein Status- und Kontrollregister
üblich.
Im Jahre 1944 legte John von Neumann, ein ehemaliges Mitglied des ENIAC-Projektes, ein Architektur-Konzept für einen speicherprogrammierten Universalrechner vor. Sein erster Entwurf ist heute als "von-Neumann-Maschine" oder "von-Neumann-Architektur" bekannt - ein weitsichtiges und visionäres Konzept, das auch noch aktuellen Computern zugrunde liegt. Eine Von-Neumann-Maschine weist folgende wichtige Merkmale auf:
Die Struktur des Rechners ist unabhängig von dem zu bearbeitenden Problem (
Universalrechner). Die verschiedenen Aufgaben werden durch entsprechende Programme gelöst.
Programme und von diesen benötigte Daten werden in einem gemeinsamen Speicher abgelegt.
Die Speicherplätze sind gleichlang und werden über Adressen einzeln angesprochen.

Die bedeutendste Neuerung war von Neumanns Idee, Programm und Daten zuerst in den Speicher zu laden und dann auszuführen. Bis dahin war das Programm noch hardwaremäßig verschaltet oder wurde über Lochstreifen schrittweise eingelesen und sofort (streng sequentiell) bearbeitet. Nun war es möglich:
v.
Neumann-FlaschenhalsDa Daten und Befehle im Speicher gehalten werden, wird die Verbindung und Datenübertragung zwischen CPU und Speicher bzw. zur Ein-/Ausgabe über den Systembus zum sogenannten Von-Neumann-Flaschenhals. Jeglicher Datenverkehr von und zur CPU wird über den internen Bus abgewickelt, dessen Transfergeschwindigkeit langsamer ist, als die Verarbeitungsgeschwindigkeit der CPU. Dieses Problem versucht man in modernen PC's durch die Verwendung von schnellem Cache-Speicher, der meist in der CPU integriert ist, abzuschwächen.
Die CPU kann nur elementare, (fest verdrahtete) Befehle
verarbeiten (
Maschinenbefehle). Jedes Programm besteht also
aus einer Folge elementarer Befehle. Da im Speicher nicht zwischen
Daten und Befehlen unterschieden wird, muss das Leitwerk
entscheiden, ob der Inhalt einer Speicherzelle als Befehl oder
Datum aufzufassen ist. Es gibt somit zwei Zustände des
Rechners: Befehl holen (Interpretieren als Befehl) und Befehl
ausführen (Interpretation als Datum). Entsprechend gibt es
zwei Phasen der Programmabarbeitung:
Dieses Zweiphasenschema erfordert eine streng sequentielle Ausführung eines Programms, d.h. es sind zwar Sprünge möglich, jedoch keine parallele Bearbeitung mehrerer Befehle. Ein v. Neumann-Rechner bearbeitet zu jedem Zeitpunkt immer nur einen Befehl, der immer eine Datenoperation im Rechenwerk bewirkt.

Die CPU besteht aus Recheneinheit (ALU) und Steuereinheit. Die ALU hat eine feste Wortbreite, z. B. 8, 16, 32 oder 64 Bit, ihre Aufgabe besteht in der Bearbeitung der Daten, besonders dem Ausführen von arithmetischen und logischen Operationen.
Zur wichtigsten Aufgabe der Steuereinheit gehört die Koordination der zeitlichen Abläufe im Rechner. Dazu muss die Steuereinheit die Befehle aus dem Speicher holen, entschlüsseln und deren Ausführung steuern. Die Steuereinheit besteht aus Befehlsregister, Befehlsdecoder, Speicheradressregister und Befehlszähler (Program Counter).
Der Speicher eines von-Neumann-Rechners besteht aus einer Vielzahl von Speicherworten, die wahlfrei adressiert werden können.
Innerhalb eines von-Neumann-Rechners erfolgt der Datentransport auf internen Datenwegen, den Bussen:

Der Befehl im OR wird nun decodiert (Befehlsdecoder) und der Ablaufsteuerung zugeführt. Diese ist in der Regel als Mikroprogramm realisiert. Die Ablaufsteuerung erzeugt nun die nötigen Steuersignale.
Benötigt der Befehl Operanden, so wird deren Adresse
aus dem Inhalt des AR ermittelt. Häufig ist im Befehl nicht
die tatsächliche Operandenadresse, sondern nur eine
Teilinformation enthalten, die noch geeignet ergänzt werden
muss (
Adressrechnung.
Nun erfolgt ein Speicherzugriff (4a) auf die so festgestellten Operanden-Adresse. Der Operand wird in das vom Op-Code spezifizierte Register oder in das Rechenwerk (4b) oder in die ausgewählte Speicherzelle gebracht.
Falls durch den Op-Code weitere Teiloperationen gefordert sind, werden diese nun ausgeführt. Dabei kann auch der Inhalt des BZ verändert werden (Sprungbefehle, Unterprogramm-Aufrufe).
Die Befehlszyklen verschiedener Befehle können unterschiedlich lang sein. Die tatsächliche Dauer eines Befehlszyklus hängt von der Taktfrequenz der CPU ab. Der gesamte Ablauf in der CPU wird durch einen zentralen Takt gesteuert. Ein Befehlszyklus kann in eine Reihe von Maschinenzyklen zerlegt werden (z.B. Speicherzugriff in einem Maschinenzyklus). Ein Maschinenzyklus kann eine oder mehrere Taktperioden (Arbeitstakt des Prozessors) dauern.
Die nächste Operation kann bereits begonnen werden, wenn die vorhergehende in die nächste "Station" gelangt ist.
Gleichzeitige Bearbeitung mehrerer Befehle (schematisch dargestellt)
Zur selben Zeit führt jedes Verarbeitungselement
verschiedene Operationen auf unterschiedlichen Daten durch.
überlappende Befehlszyklen
MIMD.
Meist besitzt jeder Prozessor einen eigenen Speicher, z. B. Transputer. Fehlertolerante Mehrrechnersysteme eng/lose gekoppelt (z. B. in der Raumfahrt).
Die Harvard-Architektur ist im Kern älter aus die von-Neumann-Architektur, denn die ersten Computer (etwa die Zuse 3) hatten eigentlich nur einen Datenspeicher. Der "Programmspeicher" manifestierte sich als Lochstreifen oder -karten. Erst später wurde das Programm auf Speichermedien, z. B. einem Trommelspeicher abgelegt. Typisch war also die Trennung von Daten- und Programmspeicher.
Die Harvard-Architektur bezeichnet heute ein Schaltungskonzept zur Realisierung besonders schneller CPUs und Signalprozessoren. Befehlsspeicher und Datenspeicher sind voneinander getrennt und werden über getrennte Busse angesteuert. Daher können Befehle und Daten gleichzeitig geladen, bzw. geschrieben werden. Bei einer klassischen Von-Neumann-Architektur sind hierzu mindestens zwei aufeinander folgende Buszyklen notwendig. Zudem sorgt die Trennung von Daten und Programm dafür, dass bei Softwarefehlern kein Programmcode überschrieben werden kann. Nachteilig ist allerdings, dass nicht benötigter Datenspeicher nicht als Programmspeicher genutzt werden kann.
Die Harvard-Architektur wurde zunächst überwiegend in RISC-Prozessoren konsequent umgesetzt. "RISC" steht für "Reduced Instruction Set Computer" (Computer mit eingeschränktem Befehlssatz - siehe unten). RISC-Prozessoren haben einen kleinen Befehlssatz, bei dem aber fast alle Befehle innerhalb eines einzigen Taktzyklus ausgeführt werden können.
Moderne Prozessoren in Harvard-Architektur sind in der Lage, parallel mehrere Rechenwerke gleichzeitig mit Daten zu füllen und auf diesen Daten Befehle auszuführen. Ein weiterer Vorteil der Trennung besteht darin, dass Datenwortbreite und Befehlswortbreite unabhängig voneinander sind. Damit kann, falls erforderlich, die Effizienz des Programmspeicherbedarfs verbessert werden, da sie nicht direkt von den Datenbusbreiten abhängig ist, sondern ausschließlich vom Befehlssatz. Besonders bekannte Vertreter dieser Architektur sind die Produkte der Firma Microchip Technology Inc. (PIC) und die Mikrocontroller der AVR-Reihe von Atmel.
Eine bedeutende Erweiterung der Harvard-Architektur wurde von Analog Devices durch die Einführung der SHARC-(Super-Harvard-Architecture)-Technologie vorgenommen, bei der die Speichersegmente als Dual-Port-RAMs ausgeführt sind, die kreuzweise zwischen den Programm- und Daten-Bussen liegen.
Viele moderne Prozessoren verwenden eine Mischform aus Harvard- und von-Neumann-Architektur, bei der innerhalb des Prozessors Daten und Programm voneinander getrennt verwaltet werden. Es existieren eigene Cache-Speicher und Memory Management Units mit getrennten internen Bussen. Extern wird jedoch in einem gemeinsamen Speicher zugegriffen. Beim Pipelining besteht der Vorteil dieser Mischform darin, dass deren einzelne Pipelinestufen in Bezug auf Speicherzugriffe getrennt arbeiten können.
Hat man anfangs versucht, beim Design neuer Prozessor-Chips immer mehr und immer leistungsfähigere Befehle zu integrieren (Complex Instruction Set Computer, CISC), so wird beim RISC-Prozessor der umgekehrte Weg beschritten.
Für jeden Befehl des Prozessors gibt es eine fest verdrahtete Folge von Ablaufschritten im Chip, das Mikroprogramm. Je komplexer und mächtiger ein Befehl ist, desto mehr Einzelschritte muss das Mikroprogramm auf den Chip durchlaufen und desto mehr Taktzyklen sind notwendig, bis der Prozessor den nächsten Befehl verarbeiten kann. So liegt z.B. beim Prozessor 8088 die Zahl der Taktzyklen für einen Befehl zwischen 2 und 190.
RISC-Prozessoren haben einen kleinen Befehlssatz, bei dem aber fast alle Befehle innerhalb eines einzigen Taktzyklus ausgeführt werden können. Das bedeutet auch eine Vereinfachung des Chips und erreicht auf diese Weise höhere Taktfrequenzen. Typische RISC-Mikrocontroller sind die PIC-Modelle von Microchip und etliche Atmel-Prozessoren.
Single-Chip-Mikrocomputer
Mikroelekronik, ständige Erhöhung der
Integrationsdichte.
Die zunehmende Integrationsdichte führte zu immer stärkerer Spezialisierung
der Funktion und zur Einschränkung der Einsatzmöglichkeiten
kundenspezifische LSI-Schaltkreise. Auswege:
Der erste Mikroprozessor wurde 1970/71 von Intel als Steuerbaustein für ein Bildschirmterminal entwickelt. Da er für den vorgesehenen Zweck zu langsam war, wurde er als universeller Steuerbaustein vermarktet (4004, 8008). Durch Zufall kam dieses Produkt zur richtigen Zeit als Alternative zu kundenspezifischen Bausteinen auf den Markt. Folge: sensationell zunehmende Entwicklung des Mikrocomputer-Einsatzes. Die Entwicklung erfolgte in zwei Richtungen:
Verwendung des Mikrocomputer als spezieller Steuerungsrechner
Personal Computer

letzte Entwicklungen: autonomes, "sehendes" Fahrzeug

Kennzeichen:
Technische Entwicklung:
| Anzahl Transistoren eines Intel 8080 Mikroprozessors | 4 500 |
| Anzahl Transistoren eines Intel 80286 Mikroprozessors | 134 000 |
| Anzahl Transistoren eines Intel 80386 Mikroprozessors | 275 000 |
| Anzahl Transistoren eines Intel Pentium Mikroprozessors | 3 100 000 |
| Anzahl Transistoren eines Intel Pentium 4 Mikroprozessors | 42 000 000 |
| Anzahl Transistoren eines AMD KG (Athlon 64) Mikroprozessors | 105 900 000 |
| Anzahl Transistoren eines Intel Core i7 Mikroprozessors | 731 000 000 |
| Anzahl Transistoren eines Eight Core Xeon Nehalem-EX Mikroprozessors | 2 300 000 000 |
| Anzahl Transistoren eines RV820 ATI/AMD Grafikprozessors | 2 154 000 000 |
| Anzahl Transistoren eines GF100 NVIDIA Grafikprozessors | 3 000 000 000 |
| Festplattenkosten pro Gigabyte 1990 | 53 000 |
| Festplattenkosten pro Gigabyte 1995 | 850 |
| Festplattenkosten pro Gigabyte 2000 | 20 |
| Festplattenkosten pro Gigabyte 2005 | 1 |
| Festplattenkosten pro Gigabyte 2010 | 0.1 |
| RAM-Kosten pro Gigabyte 1990 | 120 000 |
| RAM-Kosten pro Gigabyte 1995 | 33 000 |
| RAM-Kosten pro Gigabyte 2000 | 1 400 |
| RAM-Kosten pro Gigabyte 2005 | 190 |
| RAM-Kosten pro Gigabyte 2010 | 20 |
Zum vorhergehenden Abschnitt |
Zum Inhaltsverzeichnis |
Zum nächsten Abschnitt |