im Fachbereich Informatik Günther Fröhlich Band 1 - Rechnerarchitektur

im Fachbereich Informatik Günther Fröhlich Band 1 - Rechnerarchitektur
Aufbau und Arbeitsweise von Rechenanlagen
im Fachbereich Informatik
Günther Fröhlich
Band 1 - Rechnerarchitektur
1—2
1 EINFÜHRUNG
1—7
1.1 Entwurfsebenen
1—8
1.2 Merkmale der Ebenen
1—9
1.3 Aspekte der Rechnerarchitektur
1—9
1.4 Thematische Einordnung und Ziel der Vorlesung
1—10
1.5 Rechnergenerationen
1—11
1.6 Aufbau der Zentraleinheit
1—12
1.7 Zur vorläufigen Begriffsklärung:
1—13
2 ELEMENTE DER REGISTER-EBENE
14
2.1 Register
2.1.1 einfaches Register
2.1.2 Exkurs in die Gatterebene
2.1.2.1 Digital-logische Schaltungen
2.1.2.2 UND Schaltung - Konjunktion
2.1.2.3 ODER Schaltung - Disjunktion
2.1.2.4 EXOR Schaltung - exklusives ODER
2.1.2.5 NOR Schaltung - Negiertes ODER
2.1.2.6 NAND Schaltung - Negiertes UND
2.1.2.7 NOT Schaltung - Negation, Komplement
2.1.2.8 Flip-Flop - Beispiel der Verknüpfung logischer Funktionen
2.1.2.9 Übung: zur Funktionsweise des Flip-Flops
2.1.2.10 Beispiel einer physikalischen Realisierung des Schaltgatters Inverter mit Transistor
2.1.2.11 Sind in den Computern noch Transistoren? - Zum Stand der Technik bei den Hardwarekomponenten
2.1.3 Schieberegister
2.1.3.1 Übung: Signaldiagramm eines 4 Bit Registers
2.1.3.2 Übung: Multiplikation mit Schieberegister
2.1.4 Zähler
2.1.5 Modifizierter Zähler
2.1.6 Ringzähler
2.1.6.1 Übung: Funktionen eines Ringzählers
2.1.6.2 Übung: 6 Bit Ringzähler
14
14
15
15
15
16
16
16
16
16
18
18
19
19
23
23
24
24
25
25
26
26
2.2 Bus-System
2.2.1 Topologie von Kommunikationspfaden
2.2.2 Kennwerte moderner Standardbusse
28
29
31
2.3 Tri-State-Register
2.3.1 Übung: Datentransfer mit Tri-State-Registern
32
34
2.4 Multiplexer
35
2.5 Decodierer
36
1—3
2.6 Speicher
2.6.1 ROM (read-only-memory)
2.6.2 PROM, EPROM und EEPROM
2.6.3 Siliziumfestplatten - die FLash-Speicher
2.6.4 Tri-State-ROM
2.6.5 RAM
2.6.5.1 Bauformen für Hauptspeichermodule
2.6.5.2 Aufbau von DRAM Bausteinen
2.6.5.3 Beschleunigung von Blockzugriffen
2.6.6 Tri-State RAM
2.6.7 Ein kleiner 16 Worte * 8 Bit breiter Speicher
2.6.8 Entwicklung der Speicherbausteine
3 DIE ARCHITEKTUR DES SAP
37
38
39
40
40
41
41
41
42
43
45
46
48
3.1 Blockdiagramm des SAP
48
3.2 Das Kontrollwort des SAP
49
3.3 Program Counter PC (Befehlszähler)
49
3.4 Akkumulator A
49
3.5 Register B
49
3.6 Arithmetisch-logische Einheit (ALU)
3.6.1 Interner Aufbau der ALU
3.6.2 Übung: Das Addierwerk
50
50
51
3.7 Speicher
51
3.8 Instruction Register IR (Befehlsregister)
52
3.9 Output Register (Ausgabe-Register)
52
3.10 Ablaufsteuerung
52
4 DIE BEFEHLE DES SAP
53
4.1 LDA
53
4.2 ADD
53
4.3 SUB
53
4.4 OUT
53
4.5 HLT
53
4.6 Ein Beispiel-Programm
4.6.1 Übung: Assemblierung eines Befehls
4.6.2 Übung: ein SAP Additionsprogramm
4.6.3 Übung: Programmierung des SAP
54
54
54
55
1—4
5 DER MASCHINENZYKLUS
56
5.1 Der Hole-Zyklus
5.1.1 Die Adreßphase
5.1.2 Die Inkrementphase
5.1.3 Die Speicherphase
57
57
58
58
5.2 Der Ausführungs-Zyklus
5.2.1 LDA-Befehl
5.2.1.1 T3-Phase
5.2.1.2 T4-Phase
5.2.1.3 T5-Phase
5.2.2 Übung: LDA Impulsdiagramm
5.2.3 ADD-Befehl
5.2.3.1 T3-Phase
5.2.3.2 T4-Phase
5.2.3.3 T5-Phase
5.2.4 Übung: ADD Impulsdiagramm
5.2.5 SUB-Befehl
5.2.6 OUT-Befehl
5.2.6.1 T3-Phase
5.2.6.2 T4 und T5-Phase
5.2.7 HLT-Befehl
59
59
59
59
60
61
61
61
62
62
62
63
63
63
63
63
5.3 Maschinenzyklus
5.3.1 Übung: Zykluszeiten
63
64
6 DIE ABLAUFSTEUERUNG
65
6.1 Befehlsdecodierer
65
6.2 Kontrollmatrix
6.2.1 Die Signale des Hole-Zyklus:
6.2.2 Die Signale des Ausführungszyklus:
65
66
67
6.3 Takterzeugung
6.3.1 Das Zusammenwirken mit den anderen Teilen des Rechners
67
68
6.4 Die gesamte Ablaufsteuerung
6.4.1 Übung: Addition
6.4.2 Übung: Assemblierung
6.4.3 Übung: Speicherphase
6.4.4 Übung: der PC in der Inkrementphase
6.4.5 Übung: Kontrollmatrix
68
69
69
70
70
71
7 MIKROPROGRAMMIERUNG
72
7.1 Das SAP Mikroprogramm
72
7.2 Das Adressierungs-ROM
7.2.1 Übung: Inhalt des Adressierungs-ROMs
7.2.2 Beispiel:
73
74
74
1—5
7.3 Der µ-Zähler
74
7.4 Der Kontrollspeicher oder Mikrocode ROM
7.4.1 Übung: Kontrollspeicher
75
76
7.5 Veränderlicher Maschinenzyklus
76
7.6 Gegenüberstellung µ-Programmierung - hardwired control
7.6.1.1 Übung: ABL mit Mikroprogrammierung
7.6.1.2 Übung: Erweiterung des SAP
78
79
79
8 WEITERENTWICKLUNG DES SAP - DER 8085
80
8.1 Beschränkungen des SAP
80
8.2 Flags
8.2.1 Übung: Das Sign-Flag
8.2.2 Übung: Das Zero Flag
8.2.3 Übung : Handassemblierung
80
81
81
82
8.3 Zeitablauf bei dem Befehl STA
83
8.4 Erzeugen von Sign- und Zero-Flag
83
8.5 Blockdiagramm des 8085 (Intel Corporation)
84
8.6 Der Befehlssatz des 8085
88
8.7 Vergleich SAP - 8085 Befehlssatz
91
8.8 Ein Assemblerprogramm
91
8.9 Assemblieranweisungen
8.9.1 Steuerung des Assembliervorganges
8.9.2 Anweisungen
92
92
92
9 DIE KLASSISCHE VON NEUMANN-MASCHINE
9.1 Die Prinzipien
10 SCHWÄCHEN DER VON NEUMANN-MASCHINE
10.1 Der von Neumann Flaschenhals
11 STEIGERUNG DER RECHNERLEISTUNG
94
94
95
95
97
11.1 Fetch and Overlap
97
11.2 Pipeline
97
11.3 Erhöhung der Taktfrequenz der Prozessoren
98
1—6
11.4 Erhöhung der Datenbreite der Prozessoren
98
11.5 DMA - Direct Memory Access
11.5.1 Beispiel einer parallelen Schnittstelle (ohne DMA)
98
99
11.6 Parallelarbeit - Einprozessorsysteme
99
11.7 Rückkehr zur hardwired-control: RISC Prozessoren
100
11.8 Parallelarbeit - Multiprozessorsysteme
100
12 LITERATUR
101
1—7
1 Einführung
Rechnerarchitektur ist eine Übersetzung des englischen Begriffs computer architecture, wobei sich der Begriff architecture sowohl auf den Zusammenbau und das Zusammenspiel der Bausteine als auch auf den Aufbau und die Arbeitsweise
der einzelnen Bausteine bezieht (Siehe dazu Abschnitt Aspekte der Rechnerarchitektur auf Seite 1—9).
Die Grundaufgabe einer Rechenanlage ist die
•
Sammlung
•
Speicherung
•
Verarbeitung
•
Darstellung
von Informationen. Das ist auf Anhieb einleuchtend, ist doch der Computer das Arbeitsmittel der elektronischen Datenverarbeitung. Aus der Frage:
•
welche Art von Daten liegen vor
•
wie sollen sie verarbeitet werden
•
•
in welcher Form sollen sie dargestellt
werden
wievielen Benutzern an welchen Orten sollen sie zur Verfügung stehen
Meßdaten einer Elektronik,
Buchungsaufträge, Graphiken,
Sprache usw.
real-time, interaktiv,
Stapelaufträge
Listen, Graphiken oder
Sprache
Einplatzsysteme,
Mehrplatzsysteme,
lokaler Rechnerverbund,
weltweiter Verbund usw
ergeben sich unterschiedliche Anforderungen an die Rechenanlagen und damit unterschiedliche Architekturen.
Rechnerarchitektur handelt also von
•
dem funktionellen Verhalten eines Systems
Transformation Eingabe A --> Ausgabe B, oder B = f(A)
•
der Struktur eines Systems
Funktionseinheiten und deren Verbindungen
•
dem Entwurf digitaler Rechner
Die Aufgabe, die sich die Rechnerarchitektur gestellt hat, läßt sich wie folgt formulieren:
Aus einer gegebenen Menge elementarer Funktionseinheiten mit definiertem Verhalten ist eine Struktur zu bilden, die
das verlangte Verhalten eines zu entwerfenden Rechners zeigt.
Zwei Architekturen sollen hier schon unterschieden werden:
•
Universalrechner-Architektur
•
Spezialrechner-Architektur
Universalrechner sind Computer, die auf jedem beliebigen Gebiet einsetzbar sind, Spezialrechner sind für einen bestimmten Zweck konzipiert worden. Einfache Beispiele: ein PC ist ein Universalrechner, weil er für die verschiedensten
Aufgaben eingesetzt werden kann (Textverarbeitung, Tabellenkalkulation, Datenbanken, Meßdatenaufnahme, Datenfernübertragung usw.). Der Computer in der Waschmaschine, der für die Ausführung der verschiedenen Waschprogramme zuständig ist, der Computer in einem modernen Motor, der für die Zündung eingesetzt wird und ein Computer zur Prozeßsteuerung, der sofort auf Ereignisse reagieren muß, sind Spezialrechner.
1—8
Die Rechnerarchitektur entwickelt Konstruktionsregeln für den Aufbau von Computersystemen. Je nach Zweckbestimmung des Computers muß das übergeordnete Konzept für die Hard- und Software bestimmte Forderungen möglichst
optimal erfüllen.
Forderung nach
• optimaler Leistung
• hoher Ausfalltoleranz
•
•
Erweiterbarkeit des Systems
gute Benutzbarkeit und Wartbarkeit.
wird erreicht durch
Spezialrechner (z.B. Prozeßrechner)
Ausfall einzelner Komponenten führt
nicht zum Ausfall der Gesamtanlage;
Erweiterbarkeit durch verschiedene Ausbaustufen
Graphische Benutzeroberflächen, komplexe
Betriebssysteme
Architektur-Unterscheidungskriterien:
Kriterium :
Anwendungsbereich
Beispiele :
Universalrechner
Spezialrechner
Wissenschaftlicher Rechner
Kommerzieller Rechner
Materialien
Datendurchsatz:
Wieviele Datenwerte und Befehle
werden gleichzeitig bearbeitet ?
Relais, Röhren, Transistoren, integrierte Schaltungen
SISD Single Instruction-Single Data
SIMD Single Instruction-Multiple
Data
MISD Multiple Instruction-Single
Data
MIMD Multiple Instruction-Multiple
Data
Ausgewogene Leistung für eine Reihe von Aufgaben
Höhere Leistung für spezielle
Aplikationen
Hochleistungs-Gleitkomma-Einheit
Unterstützung für COBOL Dezimalarithmetik), für Datenbanken und
Transaktionsverarbeitung
Neumann Struktur
Pipeline Rechner
-------Multiprozessor-Systeme
"Die Materialien der Rechner-Architekten sind die integrierten Halbleiter-Bausteine, aus denen gewisse Komponenten
realisiert werden, die wir die Hardware-Betriebsmittel nennen. Diese Komponenten - Prozessoren, Speicher, Verbindungseinrichtungen - werden zu einem Rechnersystem zusammengesetzt." 1
Vorschriften für das Zusammenwirken der Komponenten eines Rechnersystems nennt man das Operationsprinzip der
Rechnerarchitektur.
Der Entwurf eines so komplexen Systems wie dem eines Rechners kann auf verschiedenen Ebenen betrachtet werden,
abhängig von den Komponenten, die als unteilbar betrachtet werden.
1.1 Entwurfsebenen
Die drei wesentlichen Entwurfsebenen sind:
1 Giloi W.K., Rechnerarchitektur, Springer-Verlag Berlin-Heidelberg-New York 1981 S.3
1—9
•
Prozessor-
•
Register- und
•
Gatter-Ebene
1.2 Merkmale der Ebenen
Funktionseinheit
(speichernde und
verarbeitende)
Ebene
Prozessor
Register (parallel
mehrere Bits)
Gatter (1 Bit Informationen)
Informationseinheit
Zeiteinheit elementarer Operationen
-3
10
- 103sec (Prog.
CPU, Speicher E/AGeräte
Register, Codierer,
Decodierer
Wort-Blöcke Programme,Dateien
Worte (Zahlen, Befehle, Zeichen)
Ausführungszeiten)
10-9 - 10-6sec
Gatter,Flip-Flops
Bits
10-10 - 10-8sec
Der Tabelle läßt sich entnehmen:
• je komplexer die Komponenten: desto höher die Ebene
• die Rechnerarchitektur befaßt sich insbesondere mit der Register- und Prozessorebener.1
Um die Inhalte der Rechnerarchitektur besser ordnen und möglichst klar voneinander abgrenzen zu können, werden in
dieser Veranstaltung vorwiegend die Begriffe einer Ebene benutzt: die der Registerebene.
1.3 Aspekte der Rechnerarchitektur
Vom Standpunkt des Rechnerarchitekten läßt sich der Entwurf eines Computers einteilen in
• Befehlssatz-Architektur und
• Implementierung.
Diese unterteilt sich wieder in
• Organisation und
• Hardware
Die Befehlssatz-Architektur bildet die Grenze zwischen der Hard- und Software. Auch wenn es an dieser Stelle etwas zu
weit führt, muß darauf hingewiesen werden, daß es prinzipiell unterschiedliche Befehlssatz-Architekturen gibt, die sich
hauptsächlich darin unterscheiden, wie die Operanden auf der CPU gespeichert werden. Die Hauptvarianten sind ein
Stack, ein Akkumulator oder ein Registersatz. Die Operanden in Stack-Architekturen sind implizit an der Spitze des
Stack enthalten; in einer Akkumulator-Architektur ist ein Operand implizit der Akkumulator. UniversalregisterArchitekturen haben nur explizite Operanden - entweder Register oder Speicherplätze.
1 Vgl. Hayes, John P., Computer Architecture and Organisation, McGraw-Hill International Book Company, S. 70 f
1—10
Bereitgestellter tem- Beispiele
porärer Speicher
Explizite Operanden Ziel für Ergebnisse
pro ALU-Befehl
Art des Zugriffs zu
expliziten Operanden
Stack
B5500, HP 3000/70
0
Stack
Push und Pop zum
oder vom Stack
Akkumulator
PDP-8, Intel 8085, 1
Motorola 6502 (z.B.
in C64, Apple 2...)
Akkumulator
Laden/Speichern
IBM 360, DEC VAX 2 oder 3
und alle heute aktuellen Prozessoren
Register oder Speicher Laden/Speichern von
Registern oder dem
Speicher.
Registersatz
Akkumulator
Die vergleichsweise einfache Akkumulator-Architektur war bis in die 70ger Jahre aktuell. Der Intel 8086 sollte Sourcecode-kompatibel zum 8085 sein. Daraus ergab sich für die gesamte Intel 80x86 Reihe eine Mischform zwischen Akkumulator- und Registersatz-Architektur. Wenn Sie diesen Abschnitt überhaupt nicht verstanden haben, ist das nicht weiter
schlimm. Sie können das sicherlich am Ende des Semesters besser einordnen (also, später nochmal die Einleitung lesen!). Es mußte aber thematisiert werden für die Zielbestimmung der Vorlesung im nächsten Abschitt.
Der Begriff Organisation beinhaltet Aspekte wie Speichersystem, Busstruktur und den internen CPU-Entwurf. Es gibt
Maschinen mit gleicher Befehlssatz-Architektur, aber unterschiedlicher Organisation (z.B. VAX 11/780 und VAX
8600). Hardware kennzeichnet die Spezifika der Realisierung einer Maschine, wie detailierter Logikentwurf und und
Gehäusetechnologie1.
1.4 Thematische Einordnung und Ziel der Vorlesung
Ziel dieser einführenden Vorlesung kann es nicht sein, möglichst vollständig den Stand der modernen Rechnerarchitektur abzuhandeln. Sie will vielmehr die Grundlagen für das Verständnis von Aufbau und Wirkungsweise digitaler Rechner auf Registerebene legen. Dazu bietet es sich an, den denkbar einfachsten Computer ( den SAP, simple as possible)
eingehend darzustellen. Dabei werden alle oben genannten Aspekte des Rechnerentwurfes berücksichtigt. Im Sinne der
Einfachheit handelt es sich beim SAP um eine Akkumulator-Architektur mit lediglich fünf Befehlen. Bei der Entwicklung der Funktionsweise des SAP werden an vielen Stellen Bezüge zu aktuellen Computern und Computerbausteinen
hergestellt. Deshalb mündet die Behandlung des SAP anschließend in eine Beschreibung des 8085, eine AkkumulatorMaschine, die Industriestandard erreichte und verwand ist mit dem 8086, der in „Maschinenorientiertes Programmieren“
an der Fachhochschule eingesetzt wird. Auch werden Themen der Gatterebene angerissen; einerseits um die Ebenen klar
voneinander trennen zu können, andererseits um entsprechende Funktionen des SAP zu erläutern.
Die thematische Einordnung der Vorlesung läßt sich mit folgendem Bild verdeutlichen:
1 Vergl. Hennessy, Patterson Rechnerarchitektur -Analyse Entwurf, Implementierung, Bewertung, Vieweg 1994 S.13f
1—11
Betrachtungsebene
Prozessor
Ebene
Kap. 8
Register
Ebene
Kap. 2-7
Gatter
Ebene
Kap. 11
Kap. 2,6,8
SISD
SIMD
MISD
Rechnerklassifikation nach Flinn
MIMD
Auf der Gatterebene werden die aktuellen Bauteile erläutert, die mit den integrierten Schaltungen zur Verfügung stehen.
Bezüge zu älteren physikalischen Realisierungen werden aber auch hergestellt.
Am SAP - ein Minimalsystem der Kategorie SISD- , wird das bis heute immer noch gültige grundlegende Operationsprinzip entwickelt. Dabei werden insbesondere Zusammenhänge und funktionelles Verhalten digitaler Einheiten dargestellt.
In Kapitel 9 wird dieses in den Prinzipien der von Neumann-Maschine systematisiert.
Auf Grundlage von Kapitel „Der von Neumann Flaschenhals“ können die Schwächen dieser Architektur diskutiert
werden. Das folgende Kapitel „Steigerung der Rechnerleistung“ stellt Architektur-Maßnahmen vor, um die Wirkung des
von Neumann-Flachenhalses zu minimieren.
1.5 Rechnergenerationen
Seit 1952 gab es Tausende neuer Rechner unterschiedlichster Technologie und mit breit gefächerten Eigenschaften. Um
den Überblick über die Entwicklungen zu erleichtern, hat die Industrie Gruppen von Rechnern in Generationen eingeordnet. Die Einteilung erfolgte oft nach der Implementierungstechnik, wie in der folgenden Tabelle gezeigt wird. Typischerweise währt jede Generation 8-10 Jahre, wobei Dauer und Beginn besonders neuerer Generationen ziemlich umstritten sind. Einigkeit besteht darin, daß die erste Generation die kommerziellen elektronischen Rechner sind, im Unterschied zu den vorangegangenen mechanischen oder elektromechanischen Maschinen.
.
1—12
Generation
Jahre
Technologie
Neuartiges Produkt
1
Neue Firmen und Maschinen
1950-19959
Röhren
Kommerzielle elektro- IBM 701 UNIVAC1
nische Rechner
2
1960-1968
Transistoren
Billige Rechner
Burroughs 6500, NCR,
6600, Honeywell, IBM 360
3
1969-1977
Integrierte Schaltungen
Minicomputer
50 neue Firmen: DEC PDP-11,
Data General Nova
4
1978-199?
LSI und VLSI
PC und Workstation
VAX 11/780, Apple II, Aplollo,
SUN2
5
199?-????
Parallelverarbeitung
Multiprozessoren
CDC
1.6 Aufbau der Zentraleinheit
Anhand des folgenden Blockschaltbildes eines Taschenrechners sollen einige Begriffe zur Erläuterung der Funktionsweise eines Computers eingeführt, aber noch nicht wirklich erklärt werden.
Blockschaltbild eines Taschenrechners
?
Was passiert eigentlich bei der Addition zweier Zahlen mit Hilfe eines Taschenrechners ?
•
die 1. Zahl (z.B. 5) wird mit der Tastatur eingegeben. Jede einzelne Taste ist über eine Leiterbahn mit dem Speicher
verbunden. Wird die Taste ´5´ gedrückt, wird in einem bestimmten Teil des Speichers eine Verschlüsselung (Codierung) abgerufen und die binäre Information landet im Speicher. Das Steuerwerk sorgt dafür, daß die ´5´ über die
Ausgabecodetabelle umgewandelt und an die Ausgabeeinheit weitergeleitet und so im Display sichtbar wird.
•
das Kommando ´+´ wird eingegeben.
1—13
•
Mit der Codetabelle wird das Pluszeichen ebenso in eine binäre Information gewandelt wie vorher die ´5´. Das Steuerwerk interpretiert die Information als Befehl und nicht als Operand.
•
die 2. Zahl, (z.B. 2) wird eingegeben, vom Steuerwerk decodiert und im Speicher abgelegt und zwar so, daß später
wieder eindeutig auf die Zahl zugegriffen werden kann. Wie im ersten Schritt wird wieder die Ausgabeeinheit aktiviert, also die eingetippte Zahl angezeigt.
•
die Taste ´=´ wird betätigt. Decodierung wie zuvor. Wird jetzt vom Steuerwerk als Startsignal interpretiert, die Rechenoperation auszuführen. Das Steuerwerk sorgt jetzt dafür, das ein Programm aus dem Programmspeicher aktiviert wird, um die beiden Zahlen im Rechenwerk zu addieren.
Zu diesem Zweck werden die Operanden aus dem Datenspeicher an das Rechenwerk über einen Datenbus (Datenleitungen) geleitet. Das Ergebnis wird im Datenspeicher abgelegt und das Steuerwerk leitet das Ergebnis an die Ausgabeeinheit.
Schon diese sinnfällige und formale Betrachtung eines Computers führt zum ersten Prinzip der Von Neumann Maschine
(vgl. Kapitel 9):
1. Der Rechner besteht zumindest aus Speicher, Rechenwerk, Steuerwerk und Ein/Ausgabegeräten (Minimalsystem).
1.7 Zur vorläufigen Begriffsklärung:
?
Was ist ein Mikroprozessor ?
Ein Mikroprozessor ist die Zusammenfassung des Rechenwerkes und des Steuerwerkes in einem Baustein. Weitere Erklärungen folgen im Abschnitt: Beispiel einer physikalischen Realisierung des Schaltgatters Inverter mit Transistor.
?
Was ist ein Mikrocomputer ?
Wie der Name schon sagt, ist es ein kleiner Computer. Genauer gesagt ist es ein Computer, der einen Mikroprozessor,
mehrere Speicher- und Ein/Ausgabe-Bausteine enthält.1
1 Vgl. Malvino, Digital Computer Electronics, An Introduction to Microcomputers, THM New Delhi, S.7
2 Elemente der Register-Ebene
In diesem Kapitel werden vorwiegend Elemente (Funktionseinheiten) vorgestellt, die zur Erstellung des SAP erforderlich sind.
2.1 Register
Ein Register besteht aus einer Menge von Speicherelementen, die zu einer Einheit zusammengefaßt sind. In der einfachsten Form dient ein Register nur der Speicherung von einem binären Wort (mehrere Bits). Daneben gibt es Register, die
die gespeicherten Bits nach rechts oder links verschieben können und Register, die zählen können.
2.1.1 einfaches Register
Einfaches Register
Flankentriggerung
Das Register kann ein Byte vom Eingang X übernehmen. Es ist steuerbar, wann genau die Übernahme dieser am Eingang anliegenden Daten stattfinden soll:
Mit Hilfe der Steuersignale LOAD und CLK.
LOAD = L : Eingangsdaten werden nicht übernommen,
LOAD = H : Eingangsdaten werden bei der nächsten positiven Taktflanke von CLK übernommen.
15
Wenn dann LOAD wieder auf L geht, hat das X keinen Einfluß mehr auf das gespeicherte Byte. Das folgende Impulsdiagramm zeigt eine mögliche Signalfolge an den beiden Steuereingängen1
H
CLK L
Zeitachse t
steigende
Taktflanke
fallende
Taktflanke
ti
Impulsdiagramm eines Ladevorgangs
Die Daten X, die zum Zeitpunkt ti anliegen, werden in das Register übernommen.
Bedingt durch die interne Funktionsweise der Register (Hardware-Eigenschaft der Register), können die Daten
am Eingang nur dann sicher übernommen werden, wenn
•
die am Eingang anliegenden Daten und das Load-Signal bereits für eine gewisse Zeit vor der schaltenden Flanke
anliegen (setup-time)
•
die am Eingang anliegenden Daten und das Load-Signal noch für eine gewisse Zeit nach der schaltenden Flanke
anliegen (hold-time).
Manche Register besitzen zusätzlich einen Steuereingang CLR. Mit CLR = H wird der gespeicherte Inhalt gelöscht indem alle Bits auf 0 gesetzt werden. Die Steuereingänge LOAD und CLK wirken nur bei CLR = L.
2.1.2 Exkurs in die Gatterebene
Die Speicherfunktion eines Registers soll exemplarisch auf der Ebene unterhalb der Registerebene, der logischen Gatterebene, betrachtet werden. Dazu werden im folgenden einige digital-logische Schaltungen erläutert.
tion. Im folgenden werden die logischen Grundfunktionen dargestellt.
2.1.2.1 Digital-logische Schaltungen
2.1.2.2 UND Schaltung - Konjunktion
Alle physikalische digitale Schaltungen lassen sich mit
Hilfe von logischen Funktionen beschreiben. Betrachtet
man digitale Schaltungen auf der Ebene der logischen
Funktionen, hat man den Vorteil, von der technischen
Verwirklichung der Schaltung absehen zu können, denn
auf der Ebene der logischen Funktionen ist es unerheblich, ob Relais, Transistorschaltungen oder integrierte
Schaltungen eingesetzt werden. Ein Schaltgatter ist
die physikalische Realisierung einer logischen Funk-
Der Ausgang einer UND-Schaltung ist 1, wenn beide
Eingänge 1 sind.
Wahrheitstafel:
1 Impulsdiagramme oder Zeitdiagramme sind die häufigst verwendete Form der Visualisierung und Beschreibung von elektrischen Signalen. Sie
ähneln sehr den Zeitverläufen, von Signalen auf einem Logic Analyzer. Das Zeitdiagramm erlaubt es, sowohl einzelne Signalzustände als auch
Zeitbedingungen und Kausalzusammenhänge zwischen Signalen zu erkennen.
16
x
0
0
1
1
y
0
1
0
1
z = x ^ y
0
0
0
1
X
Y
=1
Z
2.1.2.5 NOR Schaltung - Negiertes ODER
Symbol:
X
Y
&
Z
Der Ausgang einer NOR-Schaltung ist 1, wenn beide
Eingänge 0 sind.
Wahrheitstafel:
x
0
0
1
1
2.1.2.3 ODER Schaltung - Disjunktion
y
0
1
0
1
z= x nor y
1
0
0
0
Der Ausgang einer ODER-Schaltung ist 1, wenn mindestens ein Eingang 1 ist.
Symbol:
Wahrheitstafel:
x
0
0
1
1
y
0
1
0
1
z = x v y
0
1
1
1
X
Y
Ø1
Z
2.1.2.6 NAND Schaltung - Negiertes UND
Symbol:
X
Y
Ø1
Z
Der Ausgang einer NAND-Schaltung ist 0, wenn beide
Eingänge 1 sind.
Wahrheitstafel:
2.1.2.4 EXOR Schaltung - exklusives
ODER
Der Ausgang einer EXOR-Schaltung ist 1, wenn genau
ein Eingang 1 ist.
Wahrheitstafel:
x
0
0
1
1
y
0
1
0
1
z = x xor y
0
1
1
0
Symbol
x
y
0
0
1
1
0
1
0
1
z = x nand
y
1
1
1
0
Symbol:
X
Y
&
Z
2.1.2.7 NOT Schaltung - Negation, Komplement
Der Ausgang ist das Gegenteil des Eingangs.
17
Wahrheitstafel:
x
0
1
not x
1
0
Symbol:
X
X
18
2.1.2.8 Flip-Flop - Beispiel der Verknüpfung logischer Funktionen
Betrachten wir die Grundfunktion eines Registers: Speicherung eines Dateneingangs solange, wie es erforderlich ist. Ein
8 Bit Register besteht aus 8 parallel geschalteten Elementen, die entweder eine 0 oder eine 1 speichern können. Ein solches Element heißt Flip-Flop. Es kann wie folgt aufgebaut werden:
Schaltung eines Flip-Flops
Das Flip-Flop hat die zwei Eingänge Steuerung (St) und Daten ein (Din) und einen Ausgang Daten aus (Dout).
Wenn Steuerung angeschaltet wird (d.h. auf 1 gesetzt wird), dann ist Daten aus gleich Daten ein. Wenn nun Steuerung
abgeschaltet wird (d.h. auf 0 gesetzt wird), kann Daten aus nicht wechseln, egal wie oft Daten ein wechselt. Deshalb
behält das Flip-Flop, nachdem Steuerung ausgeschaltet ist, den letzten Wert, den Daten ein hatte, als Steuerung noch
gleich 1 war.
2.1.2.9 Übung: zur Funktionsweise des Flip-Flops
Überprüfen Sie die Funktionsweise des Flip-Flops, indem Sie die folgende Tabelle vervollständigen.
Vorraussetzung: In Daten aus steht eine 0
St : Steuerung, entspricht dem LOAD-Signal des Registers
DE : Daten ein
DA : Daten aus
Takt
1
2
3
4
ST
1
0
0
1
DE
1
1
0
0
Gatter 1
Gatter 2
Gatter 3
Gatter 4
Gatter 5
6 = DA
19
2.1.2.10 Beispiel einer physikalischen Realisierung des Schaltgatters Inverter mit Transistor1
Kurze Funktionsbeschreibung eines npn-Transistors:
Ein Transistor ist ein Bauteil mit drei Zuleitungen: Wenn eine Spannung an der Basis anliegt, kann auch Strom vom
Kollektor zum Emitter fließen. Liegt an der Basis keine Spannung an, ist der Stromfluß vom Kollektor zum Emitter
unterbrochen. Ein Transistor ist ein elektronisch gesteuerter Schalter.
Ein Invertiergatter mit Transistor sieht folgendermaßen aus:
Ist x = 0, ist der Stromfluß vom Kollektor zum Emitter (Erdung) unterbrochen, also f(x) = 1. Im umgekehrten Fall (x=1)
fließt ein Kollektor-Emitter Strom, der Ausgang F(x) nimmt den Wert 0 an.Der Wertebereich eines Transistors beträgt 2
bis 5 V für logisch 1, 0 bis 0.5 V für 0 in der positiven Schaltungslogik.
2.1.2.11 Sind in den Computern noch Transistoren? - Zum Stand der Technik bei den Hardwarekomponenten
Ab 1959 wurden Computer auf der Basis von Halbleiterschaltungen mit einzelnen Transistoren, Dioden, Widerständen
und Kondensatoren gebaut. Öffnet man heutzutage einen Computer, sucht man vergebens nach solchen (dem einen oder
anderen) bekannten Bausteinen. Vielmehr sieht man diverse Platinen mit sogenannten Chips, diesen flachen, rechteckigen Bausteinen mit kleinen Metallfüßchen. In diesen Chips sind mehrere Transistorschaltungen integriert. Eine Grundlage dafür bildet heute häufig die Metalloxidschalttechnik (MOS), bei der die Transistoren auf einem gemeinsamen Substratplättchen mit den drei Schichten Metall, Siliziumoxid und Silizium aufgebaut werden. Wieviele Transistoren bilden
eine in einem Chip integrierte Schaltung (IC = integrated circuit)? Auch das hat sich seit der Einführung der MOS Technologie (1969) ständig verändert. Je nachdem, wieviele Schaltungen in einem Chip integriert sind, spricht man von:
1 Entnommen dem Script ´Rechnerarchitektur´ von Johannes Arz, 1991, S.21
20
Bezeichnung
Small Scale Integration
SSI
Medium Scale Integration
MSI
Large Scale Integration
LSI
Very Large Scale Integration
VLSI
Ultra Large Scale Integration
ULSI
Anzahl Schaltelemente
< 25
< 210
< 215 z.B. Intel 8080
< 220 z.B. Intel 8086 80386
Motorola 680xx
Familie
> 220
z.B. Intel
80486
Seit Anfang der siebziger Jahre entwickelt sich das Gebiet der VLSI-Design in einem nahezu unvergleichlichen Innovationstempo. Das läßt sich am besten durch die Zunahme der Integrationsdichte ausdrücken: jeweils alle drei Jahre vervierfacht sich die Zahl der auf einem Chip integrierten Komponeneten.
Die typischen heute eingesetzten VLSI-Bausteine sind der 16 MBit-DRAM-Speicherchip mit 35 bis 50 Millionen Einzelkomponenten und CPU-Chips, die wegen der höheren Architektur-Verbindungs- und Layout-Komplexität nur bis zu
16 Millionen Komponenten enthalten. Die folgende Abbildung stellt grob die Entwicklungskurve dar, die dieser Zunahme der Integrationsdichte zugrundeliegt. (Moore´s Law). Wenn allein die Möglichkeiten der schon heute verwendeten
Technologie ausgeschöpft werden, ist bis zum Jahr 2010 nicht mit einem Abflachen der Kurve zu rechnen. 1
1 Vgl. Christian Märtin, Rechnerarchitektur, Struktur, Organisation, Implementierungstechnik, Hanser Studienbücher der Informatik, 1994, S. 74
21
Moores Law zur Entwicklung der VLSI-Integrationsdichte
Neben der bereits erwähnten MOS-Technologie gibt es noch alternative Schaltkreisfamilien, mit denen die logischen
Funktionen technisch realisiert werden können:
22
Bezeichnung
Beschreibung
Besonderheit
• RTL
Widerstand-Transistor Logik
Gatter sind durch Widerstände
und Transistoren realisiert
Der wesentliche Nachteil der Gatter in
RTL ist ihre Belastungsabhängigkeit,
d.h. die Veränderung des Schaltverhaltens bei Verbindung des Ausgangs mit
den Eingängen anderer Gatter. Deshalb
hat sich die Widerstand-Transistor-Logik
nicht durchgesetzt.
• DL
Diodenlogik
Integrationsgrad
Schaltzeit Gatterlaufzeit
Gatter sind durch Widerstände
und Dioden realisiert
• DTL
Dioden-Transistor-Logik
25...30 ns.
Gatter sind durch Widerstände
Dioden und Transistoren realisiert.
• TTL
Transistor-Transistor Logik
10 ns
Vorteil gegenüber DTL:
Gatter sind durch Widerstände
• kürzere Schaltzeit
und Transistoren realisiert. TTL
• geringerer Platzbedarf
ist eine Weiterentwicklung der
DTL.
• Ausnutzung der Stromverstärkung
der Transistoren
• ECL
Emittergekoppelte Logik
Verwendet bipolare Transistoren
10K ..200K
Gatter sind durch Widerstände
und Transistoren realisiert
• MOS
Metalloxydschalttechnik
150...500 ps bei
Kanallängen von
0,3 µ bis 0,8 µ1
Ermöglicht besonders hohe Integrations- 100K..2M
dichte
MOS-Transistor gehört zur Gruppe der
Feldeffekttransistoren
Geringe Verlustleistung, also geringe
Wärmebildung.
Die CMOS-Technologie bildet eine
Kombination von PMOS und NMOS
Technologie und hat von allen dreien
den geringsten Stromverbrauch.. CMOSSchaltkreise sind zur Zeit in der Computer-Technik am weitesten verbreitet.
200...1000 ps
bei Kanallängen
von 0,3µ bis 0,8
µ
BiCMOS (bipolar und CMOS)ist eine
Verbindung von ECL und CMOS auf
einem Siliziumchip. Hohe Integrationsdichte, geringer Leistungverbrauch und
1 1 µ ist ein Mikrometer und entspricht einem Tausendstel Millimeter. Er ist die übliche Maßeinheit für die Breite der Leiterbahnen auf modernen,
hochintegrierten Schaltungen wie Mikroprozessoren, Speicherbausteinen etc. Je dünner die Leiterbahnen sind, desto kleiner ist die Verlustleistung
(Wärme) und desto kürzer sind die Schaltzeiten so daß der Integrationsgrad auf einem Chip entsprechend steigen und oder die Fläche. sinken kann.
Kleinere Chips aber heißen: preiswertere Herstellung mit geringer Ausschußrate. Die Halbleiterhersteller arbeiten ständig daran, die Leiterbahnen
noch schmaler zu machen. Daher läßt sich an der Leiterbahnbreite auch die Aktualität eines Chips abschätzen.
23
kurze Schaltzeit.
• GaAs
Schaltkreise mit GaliumarsenidTransistoren
10K...200K
50...200 ps
Jetzt ist es mal wieder genug mit der Gatterebene - zurück zu den Registern, zur Erläuterung des nächsten Register-Typs:
2.1.3 Schieberegister
Ein Schieberegister kann die gespeicherten Bits nach links (und/oder nach rechts) verschieben.
Schieberegister
CLR = H bewirkt, daß das gesamte Register auf 0 gesetzt wird. Wenn CLR wieder auf L geht, können die folgenden
Steuersignale wirken.
•
SHL = H : mit jeder positiven Taktflanke werden die gespeicherten Bits um eine Stelle nach links verschoben; das
rechte Bit wird dem Eingang Din entnommen. Auf diese Weise kann das ganze Register mit mehreren Taktimpulsen
über den Din-Eingang seriell geladen werden.
•
LOAD = H: das Register wird bei der nächsten positiven Taktflanke mit dem anliegenden X geladen. Mit einem
eventuell vorhandenen SHR-Eingang können Rechtsverschiebungen bewirkt werden.
SHL und LOAD dürfen nicht gleichzeitig auf H gesetzt werden!
2.1.3.1 Übung: Signaldiagramm eines 4 Bit Registers
Es ist für ein 4 Bit Register das Diagramm für die gegebene Signalfolge zu vervollständigen: welche Werte
nehmen die Datenausgänge Q1 - Q4 in den Phasen t2 und t3 an? Beachten Sie, daß der Dateneingang X1-X4 nicht angegeben ist !
24
___________
SHL
|___________________________
_____
CLR ___________________________|
|_________
____
LOAD ________________|
|_____________________
CLK
___|
H
L
__
__|
__
|__|
__
|__|
__
|__|
__
|__|
|____>
Zeit t
Din
| t0 | t1 | t2 | t3 |
_____
___|
|______________________________________
Q1
______|
Q2
_______________________________________________
_____
|_________________________________
______
Q3
|________________________________________
_____
Q4
______|
|_________________________________
initial
nach 1. aufst. Flanke
nach 2. aufst. Flanke
nach 3. aufst. Flanke
Q4
Q3
Q2
Q1
---------------------0
1
0
0
1
0
0
1
......................
......................
2.1.3.2 Übung: Multiplikation mit Schieberegister
Der Inhalt eines 8 Bit Schieberegisters betrage binär 0000 0100. Welche Operationen müssen ausgeführt
werden, um den Registerinhalt mit 8 zu multiplizieren ?
2.1.4 Zähler
Ein Zähler zählt die Anzahl der eintreffenden Takte. Er zählt die Takte nur dann, wenn das Signal COUNT gesetzt ist.
Zählerregister
25
Wenn COUNT = L : keine Änderung des gespeicherten Zählerstandes
Wenn COUNT = H : der Zähler wird bei jeder abfallenden Taktflanke
um 1 erhöht.
2.1.5 Modifizierter Zähler
Modifizierter Zähler
SIG/ bezeichnet das zu SIG komplementäre Signal.
o----- CLR/ ist aussagelogisch die doppelte Verneinung von
----- CLR und hat deshalb die selbe Wirkung, d.h. die Funktion wird zum gleichen Zeitpunkt ausgelöst.
Dieser Zähler wird bei CLR/ = L auf 0 gesetzt.
Der Takteingang ist bei abfallender Flanke aktiv; d.h. bei der nächsten negativen Taktflanke von Signal CLK/ wird der
Zähler um 1 erhöht, wenn COUNT = H ist.
2.1.6 Ringzähler
Ein Ringzähler enthält ein Wort, in dem immer nur ein Bit gesetzt ist, also genau eine Ausgangsleitung aktiv ist.
6-Bit Ringzähler
Wirkungsweise
Bei jeder abfallenden Taktflanke werden seine Bits um eine Stelle nach links verschoben.
Das links herausfallende Bit wird rechts wieder eingespeist, so daß man besser von einer
Links-Rotation (und nicht -Verschiebung) sprechen sollte.
Mit dem Signal CLR/ = L bekommt der Ringzähler den initialen Inhalt
Q = 0001
26
Wenn dann CLR/ wieder auf H geht, bewirken aufeinanderfolgende Taktimpulse Linksrotationen.
Die nächste abfallende Taktflanke verschiebt das Bit auf der MSB- in die LSB-Position; alle übrigen Bits werden um
eine Stelle nach links verschoben.
LSB : Least Significant BIT - das unterste, niederwertigste Bit.
MSB : MOST Significant BIT - das oberste, hochwertigste Bit.
Die Inhalte sind also nacheinander:
Q = 0010
....
....
....
....
Der Ringzähler wird mit dem CLK-Signal, der (modifizierte) Zähler_2 hingegen mit dem dazu komplementären CLK/-Signal versorgt.
Anmerkung
Dieser Unterschied (von einer halben Taktperiode) ist gewollt; er wird beim Zusammenspiel der Komponenten beim
Aufbau des SAP erläutert.
2.1.6.1 Übung: Funktionen eines Ringzählers
Wie verhält sich der folgende Ringzähler ?
Wann wird rotiert?
Wann wird mit 1 initialisiert?
2.1.6.2 Übung: 6 Bit Ringzähler
Der 6-Bit-Ringzähler von Seite 25 sei mit einem Takt der Frequenz 1 kHz verbunden. CLR/ werde auf L
und dann auf H gesetzt. Wie sieht das Impulsdiagramm für die Ausgänge Ti aus, in Abhängigkeit vom CLK-Signal ?
27
H
CLK
L
__
|
__|
__
v |
|__|
__
v |
|__|
__
v |
|__|
__
v |
|__|
v
|____>
Zeit t
_____
T1
|__________________________________________
T2
_______________________________________________
T3
______________________________________________
T4
_______________________________________________
T5
_______________________________________________
T6
_______________________________________________
T1 - T6 bilden den Inhalt des 6 Bit Ringzählers
28
2.2 Bus-System
Jetzt sind einige Registertypen bekannt. Sie sollen nun in einem System verbunden werden.
Erinnerung an den Taschenrechner: Die Operanden werden aus dem Datenspeicher an das Rechenwerk über eine Datenleitung, einen Datenbus geleitet.
Ein Bus besteht aus einer Menge von Leitungen, die von mehreren Komponenten als gemeinsamer Weg für den Transfer
von Daten genutzt werden; über ein Bussystem werden die Daten den einzelnen Komponenten zur Verfügung gestellt.
Ein Bus hat weder eine speichernde noch eine verarbeitende Eigenschaft.
Beispiel:
Im folgenden Beispiel werden 3 bisher bekannte Registern über einen BUS miteinander verbunden.
Verbindung von drei Registern über einen Bus
In den nächsten fünf Taktzyklen liegen folgende Steuersignale an:(der Zähler ist mit 0 initialisiert)
CC, L A,
LB
CC, SHLA, LB
CC, SHLA, LB
CC,
LB
CC,
LB
C
1
2
3
4
5
A
1
2
4
4
4
Inhalt von
B
1
2
4
4
4
Bus
1
2
4
4
4
Das Problem wird einigermaßen deutlich: Der letzte Baustein im Bussystem (hier Register B) sieht immer die Information, die ein vor ihm liegender Baustein auf den Bus schickt. Wenn L = H, dann erhält B den Inhalt von A oder von C.
B
Um zu verhindern, daß jedes Register unkontrolliert seine Daten auf den Bus gibt, verwendet man sogenannte Tri-State-Register.
29
2.2.1 Topologie von Kommunikationspfaden
Die Verbindung zwischen den einzelnen Komponenten eines Rechners kann jedoch nicht nur durch einen Bus, sondern
auf sehr unterschiedliche Weise realisiert sein.. Das folgende Bild zeigt die gebräuchlichsten Varianten von Kommunikationspfaden:
vollständige Vernetzung
Ring
Sternverbindung
Bus
Vollständige Vernetzung
Das einfachste Verbindungskonzept ist die vollständige Vernetzung. Es wird jede Komponente mit jeder anderen Komponente über jeweils l Leitungen verbunden. Der Nachteil bei dieser Topologie: je mehr Leitungen l verwendet und je mehr Komponenten
verknüpft werden, desto höher ist der Hardwareaufwand und damit der Preis. Vorteil:
maximale Übertragungsrate wegen der Parallelität (jede Komponente kann mit einer
anderen Komponente zu einem Zeitpunkt kommunizieren)
Sternverbindung
Preiswertere Alternative zur vollständigen Vernetzung, bei der alle Komponenten an
einen speziellen zentralen Knoten angeschlossen sind, der eine Verteilerfunktion erfüllen muß. Je nach Komplexität des zentralen Verteilers können bei k Komponenten bis
zu k/2 Knoten gleichzeitig Transferoperationen ausführen.
Ring
Die Ringstruktur benötigt nur k Verbindungen, jede Komponente hat aber nur einen
linken und einen rechten Nachbarn, mit der sie kommunizieren kann. Jeder Knoten muß
Nachrichten, die nicht für ihn bestimmt sind, weiterreichen können. Jede Komponente
ist also zugleich Verteiler und Empfänger bzw. Sender. Diese Struktur wird vor allem
zum Verbinden von Rechnern in einem Local Area Network (LAN) verwendet. Nachteil: mangelhafte Ausfallsicherheit, da beim Ausfall einer Komponente das gesamte
System funktionsunfähig wird.
Beispiel: Der Token Ring der Firma IBM. Jedes beteiligte Computersystem ist über
einen Controller mit dem Netz verbunden. Kommunikationswünsche teilt jeder Rechner
seinem zugehörigen Controller mit, der dann das Notwendige veranlaßt. Wie wird eine
Kommunikation abgewickelt? Im Ring kreist von Controller zu Controller ein „Token“,
das ist ein in bestimmter Weise belegtes Byte. Nur der Computer kann senden, dessen
Controller das Token besitzt. Damit ein Computer eine Nachricht senden kann, muß der
zugehörige Controller also das Token „fangen“ und aus dem Ring entfernen. Gefangen
werden kann das Token, wenn es auf seiner Reise den Controller erreicht. Nachdem das
30
Token entfernt ist, weiß der Computer, daß kein anderer Knotenrecher Daten sendet,
und er kann selbst senden. Nach Beendigung der Datenübermittlung gibt der Controller
das Token wieder frei und läßt damit einem anderen potentiellen Sender die Chance, das
Token zu fangen und dann zu senden.1
Bus
Es ist die bei Rechnern am häufigsten verwendete Verbindungsstruktur, da der Hardwareaufwand und damit die Kosten am niedrigsten sind. Außerdem ist es sehr einfach,
neue Komponenten anzuschließen (Erweiterbarkeit des Systems) . Nachteil: Es kann
jeweils nur ein Knoten Transferoperationen durchführen.2
Beispiel: Ein sehr verbreitetes Rechnernetz, das auf einer busartigen Struktur basiert, ist
das Ethernet, das Ende der 70er Jahre von der Firma Xerox entwickelt wurde. Das Ethernet besitzt keinen zentralen Controller, vielmehr wird die Auswahl eines Senders
sowie die korrekte Übermittlung der Daten von den angeschlossenen Computern nach
einem auf den ersten Blick aufwendigen Schema (Protokoll) selbst vorgenommen. A
sendet an B: Zuerst übermittelt A die Daten an sein Ethernet Interface. Das Interface
hört zunächst den Ether ab, um festzustellen, ob er gerade für eine andere Datenübertragung benutzt wird. Ist der Ether frei, so sendet das Interface von A die Daten sofort.
Andernfalls wartet das Interface, bis die laufende Übertragung beendet ist und startet
anschließend eine Datenübertragung. Problem: Zwei Rechner wollen senden und warten
auf die Freigabe des Ether durch einen dritten Rechner. In diesem Fall starten beide
gleichzeitig ihre Datenübertragung, sobald der dritte Computer seine Übertragung beendet und den Ether freigegeben hat. Es kommt zu einer Kollision, da sich die Signale der
beiden Sender gegenseitig stören. Eine Kollision von Signalen mehrerer Sender wird
dadurch entdeckt, daß jeder Sender stets gleichzeitig den Ether abhört und überprüft, ob
das abgehörte Signal und das gesendete übereinstimmen. Stellt der Sender Differenzen
zwischen gesendetem und abgehörtem Signal fest, so sendet er sofort ein Störsignal, um
allen übrigen Geräten mitzuteilen, daß eine Kollision festgestellt wurde. Anschließend
bricht er seine Sendung ab, wartet eine zufällig gewählte Zeitspanne, um die Wahrscheinlichkeit einer erneuten Kollision zu vermindern.3
Sternverbindung
1 Duden, Informatik, Mannheim 1993 S. 773
2 C.Müller Schloer RISC-Workstation Architekturen S. 241f
3 Duden, Informatik, Mannheim 1993 S. 114f
31
Ethernet
Token Ring
2.2.2 Kennwerte moderner Standardbusse
Firma
Einführungs-
AT-Bus
EISA
FutureBus
MicroChannel
IBM
-
-
IBM
1981
1989
1984
1987
VESA
> 1990
SCSI
VME-BUS
Shugart
Motorola
1979
1981
PCI
1993
32
jahr
Protokoll
syn-
syn-
asynchron
Bustakt MHz
chron4,7
chron4,7
32
> 32
Adreßbreite
7
7
8..256
Datenbreite
24
32
8,16
8,16,32
ja (DMA)
ja
Blocktransfer
ja
asynchron
synchron
syn/asyn
asynchron
32
8
32
32
8,16,32
32
8+1 Par.
8,16,32
64
ja
ja
ja
ja
ja
asynchron
> 32
2.3 Tri-State-Register
Tri-State-Schalter haben den Zusammenbau von Rechnern, deren Komponenten über einen Bus verbunden sind, erheblich vereinfacht.
Eine Digitalschaltung hat normalerweise die zwei Ausgangszustände H und L, bzw. 1 und 0.
Ein Tri-State-Element hat zusätzlich noch einen hochohmigen 3. Ausgangszustand.
Das Symbol des Tri-State-Schalters:
|\
Din_______| \_________
| /|
|/ |
ENABLE_______|
Dout
Die Wirkungsweise:
Enable
Din
Dout
L
H
H
X
L
H
offen
L
H
•
ENABLE = H: Dout = Din (Schalter geschlossen)
•
ENABLE = L: der Ausgang ist vom Eingang getrennt (Schalter offen)
Eine Hauptanwendung der Tri-State-Schalter besteht darin, den (normalen) Ausgang eines Registers mit 2 Zuständen in
einen Tri-State-Ausgang zu wandeln.
Aus einem (normalen) Register mit zwei möglichen Ausgangszuständen wird durch Hinzufügung von Tri-StateSchaltern an den Ausgängen ein Tri-State-Register:
33
x3
x2
x1
x0
|
|
|
|
V
V
V
V
------------------------|
|------ LOAD
|
<|------ CLK
------------------------|q3
|q2
|q1
|q0
_|_
_|_
_|_
_|_
\ /\
\ /\
\ /\
\ /\
| \
| \
| \
| \
|
\__|___\__|___\__|___\___________ ENABLE
|
|
|
|
V
V
V
V
y3
y2
y1
y0
Wenn ENABLE = L: Ausgang Y ist hochohmig, d.h. getrennt von Register-Inhalt
ENABLE = H: Y = Q
In der Darstellung unten sind vier Tri-State-Register über einen Bus miteinander verbunden:
B U S
| |
| |
____________
| |
|
|_________| |
L --| LOAD
|_________ |
__________
A
|
|
| |________|
|
CLK--|>
A
|
| _________| LOAD
|-|
|_________| |
|
|
E --| ENABLE
|_________ |
| C
<|-A
|__________|
| |________|
|
| |________| ENABLE |-| |
|________|
| |
| |
____________
| |
|
|_________| |
L --| LOAD
|_________ |
__________
B
|
|
| |________|
|
CLK--|>
B
|
| _________| LOAD
|-|
|_________| |
|
|
E --| ENABLE
|_________ |
| D
<|-B
|__________|
| |________|
|
| |________| ENABLE |-| |
|________|
| |
| |
L
C
CLK
E
C
L
D
CLK
E
D
Die Eingabe-Daten für Register A kommen vom Bus; andererseits ist der Tri-State-Ausgang von Register A auch mit
dem Bus verbunden. Die übrigen Register sind in derselben Weise mit dem Bus verbunden.
Alle Steuereingänge sind H-aktiv. D.h. ein Steuersignal für LOAD muß H sein, damit Daten übernommen werden; und
ein ENABLE-Signal muß H sein, damit ein Register-Ausgang mit dem Bus verbunden ist.
Mit dieser Bus-Organisation läßt sich ein Wort von einem Register in eine anderes transferieren.
Die Register arbeiten alle mit demselben Takt-Signal; aber solange alle LOAD- und ENABLE- Signale Low sind, sind
die Register vom Bus getrennt.
Um einen Datentransfer durchzuführen, müssen die entsprechenden Steuersignale auf H gesetzt werden. Es werden z.B.
die Daten von Register A nach Register D transferiert, wenn EA und LD auf H gehen: der Inhalt von Register A erscheint auf dem Bus und Register D ist zur Datenübernahme bereit. Mit der nächsten positiven Taktflanke wird in Register D der Inhalt von Register A abgelegt.
34
2.3.1 Übung: Datentransfer mit Tri-State-Registern
Die vier Register in der Abb. oben haben die Inhalte
A = 0011
B = 0110
C = 1001
D = 1100
Welche Vorgänge laufen ab und was steht in den Registern, wenn EC und LB auf H gesetzt werden, und ein positiver
Taktimpuls aufgetreten ist ?
35
2.4 Multiplexer
Ein Multiplexer ist ein Gerät, das Signale von mehreren Eingangsleitungen auf eine Ausgangsleitung überträgt. Welche
der Eingangsleitungen zu einem Zeitpunkt mit der Ausgangsleitung verbunden wird, kann entweder durch Steuerleitungen von außen festgelegt oder vom Multiplexer selbständig bestimmt werden.
Multiplex bezeichnet einen Datenübertragungskanal, bei dem entweder ein Sender mit mehreren Empfängern oder ein
Empfänger mit mehreren Sendern verbunden ist. Eine Multiplexverbindung ist im allgemeinen nur sinnvoll, wenn die
Arbeitsgeschwindigkeit des Einzelgerätes (Sender bzw. Empfänger) wesentlich größer ist, als die der angeschlossenen
Geräte (Empfänger bzw. Sender). Multiplexkanäle lohnen sich zum Beispiel für die Verbindung relativ langsamer Drucker mit einer Steuereinheit. Im Multiplexbetrieb unterscheidet man zwischen:
Art
simplex
halbduplex
duplex
Beschreibung
Datenübertragungskanal, bei dem die eine Datenrichtung nur als Sender von Daten und die andere nur
als Empfänger verwendet werden kann.
Datenübertragungskanal, bei dem die eine Datenrichtung als Sender von Daten und die andere als Empfänger verwendet werden kann.
Datenübertragungskanal, bei dem beide Datenendeinrichtungen gleichzeitig Daten senden und empfangen
können.
Beispiel
Radio- und Ferhsehübertragungen
Sprechfunkgeräte
Telefon
Quellen
X0 X1 ...
Xk-1
|/ |/
|/
/|m /| m
/| m
|
|
|
|
|
|
v
v
v
---------------------------> |
|
Select : |
Multiplexer
|
------> |
|
---------------------|/
/| m
v
Z
Eines von den k Leitungsbündeln kann seine Eingangswerte an den Ausgang weitergeben. Die Auswahl geschieht durch
die 'Select'-(Input)Leitungen.
Beispiel:
36
|x0 |x1 |x2 |x3
|
|
|
|
v
v
v
v
----------------s0----> |
|
s1----> |
|
----------------|
v
z
s0
0
0
1
1
s1
0
1
0
1
z
0
1
2
3
Mit k Select-Leitungen kann man einen von 2k Eingängen auf den Ausgang durchschalten. Welche Datenquelle durchgeschaltet wird, hängt nicht vom Dateneingangssignal ab, sondern vom Steuersignal-Eingang, also vom Zustand der
Selectleitungen.
X0
X1
X2
X3
S0
S1
&
&
&
&
≥1
Z
Digitallogische Schaltung eines Multiplexers
2.5 Decodierer
Ein Decodierer entschlüsselt eine 0-1-Kombination (Eingangswert) in eine 1, die an genau einem Ausgang des Decodierers erscheint.
Der Decodierer in symbolischer Darstellung:
37
x2 x1 x0
|
|
|
v
v
v
-----------------------|
1/8
|
|
Decodierer
|
-----------------------| | | | | | | |
v v v v v v v v
z7 z6 z5
z0
Beispiel:
Funktion und Realisierung eines 1/4 Decodierers.
Seine Funktion sei festgelegt durch:
x1
0
0
1
1
x0
0
1
0
1
aktiver Ausgang z
0
1
2
3
Einer der vier Ausgänge wird durch die Eingänge x0 und x1 ausgewählt. Nur der ausgewählte hat den Wert 1, alle anderen 0. Die Realisierung:
Schaltbild eines 1 aus 4 Decodierers
Welcher Ausgang aktiviert wird, hängt vom Dateneingangssignal ab, ist also eine Funktion von X0 und X1.
2.6 Speicher
Ein Speicher kann (in einer ersten Näherung) als eine Anzahl von Registern aufgefaßt werden; eine typische Größenordnung bei Mikro-Rechnern lag in den 80gern bei 65536 (= 64K) und liegt heute zwischen 4 und 128 Megabyte. Im Speicher eines Rechners können Befehle und Daten abgelegt werden. Die Begriffe Adresse und Inhalt sind zu unterscheiden.
Der Inhalt einer Zelle ist binär in ihr abgelegt. Die einzelnen Speicherzellen kann man sich mit Nummern 0 bis ... durchnumeriert vorstellen. Die Nummern sind aber nirgends im Speicher wirklich abgelegt, sondern allein durch die Anordnung der Zellen ist hardwaremäßig eine Reihenfolge festgelegt. Diese Nummern sind die Adressen der Speicherzellen.
38
Speicher
Adresse
Daten
2.6.1 ROM (read-only-memory)
Ein ROM stellt die einfachste Speicherart dar. Seine Speicherzellen haben feste Inhalte, die nur gelesen werden können.
ROMs werden vom Hersteller nach Kundenwunsch durch den Einbau von Dioden festprogrammiert ausgeliefert, so daß
ein nachträgliches ändern des Speicherinhaltes nicht mehr möglich ist. ROMs werden vorwiegend als Speicher für feste
Programme (z.B. Betriebssystemkomponenten) und für unveränderbare Daten verwendet. Durch Anlegen bestimmter
Signale können die einzelnen Speicherzellen gelesen werden. Dabei bedeutet das Lesen einer Zelle, daß der Inhalt der
Zelle an dem ROM-Ausgang erscheint. Um n Speicherzellen ansprechen zu können, sind offenbar n Adreßleitungen
erforderlich,- für jede Zelle eine Leitung. Da die Anzahl n sehr groß sein kann, würde das zu einem nicht vertretbaren
Hardware-Aufwand führen. Deshalb wird eine Adreß-Decodierung eingeführt.
Speicherbaustein mit integriertem Decodierer
Mit Hilfe dieses 1/8 Decodierers lassen sich die Zellen eines 8 Byte großen Speichers mit 3 (und nicht mit 8 !) Adreßleitungen ansprechen. Die Adreß-Decodierung ist Teil des Speicher-Bausteins.
Anmerkungen:
. der Speicherbaustein hat: 3 Adreß-(Input-)Leitungen und 4 Daten-Leitungen
. der 1/8 Decodierer erzeugt jeweils einen aktiven Ausgang zur Adressierung einer Speicherzelle
. mit n Adreßleitungen können maximal 2n Speicherzellen adressiert werden
Das ganze noch mal ein bißchen genauer mit einem 4*8 Bit Lesespeicher mit Diodenzellen:
39
Diode
Adreßleitungen
&
a
&
b
A0
A1
&
&
A3
Adressendecoder
Q7
Q6 Q5
Q4 Q3 Q2 Q1 Q0
4*8 Bit ROM mit Diodenspeicherzellen1
Dieser Lesespeicher wurde nach folgender Belegungstabelle programmiert:
b
a
Q7
Q6
Q5
Q4
Q3
Q2
Q1
Q0
0
0
0
1
1
0
0
0
1
0
0
1
1
0
0
0
0
0
0
0
1
0
1
1
1
1
0
0
0
1
1
1
0
0
0
0
0
0
0
0
2.6.2 PROM, EPROM und EEPROM
Es handelt sich um Varianten von Festwertspeichern, die unabhängig von einer Stromversorgung ihren Inhalt behalten.
Dem ROM haftet der Nachteil an, daß sich dessen Herstellung nur dann lohnt, wenn große Stückzahlen im jeweiligen
Programm gefertigt werden. Die Halbleiterhersteller bieten aus diesem Grund Festwertspeicher an, die der Anwender
selbst mit Hilfe spezieller Geräte programmieren kann: PROM (programmable ROM).Bei der Programmierung werden
die in einer Matrixanordnung befindlichen Dioden von den Ausgangsleitungen getrennt, und zwar dadurch, daß nach der
Anwahl einer bestimmten Adresse ein Strominpuls auf die entsprechende Diodenstrecke gegeben wird, der ein mit ihr in
Reihe liegendes Sicherungselement zum Abschmelzen bringt. Damit nimmt diese Speicherzelle das 0-Signal an. Der
Speicher ist nur ein einziges mal programmierbar.
Beim EPROM (erasable PROM) handelt es sich um einen programmierbaren und wieder löschbaren Festwertspeicher.
Das Programmieren
erfolgt elektrisch durch Aufladen einer schwebenden Gate-Elektrode eines MOSFeldeffekttransistors. Diese Gate Ladung bleibt etwa 10 Jahre erhalten und gewährleistet den Inhalt des Speichers auch
wenn die Betriebsspannung abgeschaltet wird. 2
1 Einführung in die Elektronik 2, Kontaktlose Signalverarbeitung, Stam Verlag Köln, 1989, S.189
2 Den genauen Aufbau des EPROMS finden Sie zum Beispiel bei: Einführung in die Elektronik 2, Kontaktlose Signalverarbeitung, Stam-Verlag Köln,
1989, S. 194ff
40
Das Löschen erfolgt optisch mit intensiver Einwirkung von UV-Licht auf die Speicherzellen durch ein im IC-Gehäuse
befindliches Quarzfenster. Durch den Photoeffekt wird die Isolierschicht um das Floating-Gate schwach leitend, so daß
die Ladungsträger abwandern können. Der Löschvorgang dauert ungefähr 20 Minuten.
Es verbindet mit gewissen Einschränkungen die Vorteile des RAM mit und eines PROM. Es kann vom Hersteller oder
Anwender mit einem dauerhaften Inhalt versehen werde. Den gesamten Inhalt kann man wieder löschen, indem der
Speicherbaustein einige Zeit lang einer starken ultravioletten Strahlung ausgesetzt wird. Hierzu besitzt sein Gehäuse an
der Oberseite ein verschließbares Fenster, durch das die Strahlung den Schaltkreis erreichen kann. Anschließend kann
das EPROM einen neuen Inhalt erhalten.
Ein EEPROM ist ein elektrisch löschbares EPROM. Es hat den Vorteil, daß der Baustein beim Löschen in der Schaltung
verbleiben kann.
Unter der Zugriffszeit eines Speichers versteht man die Zeit, die zwischen dem Anlegen der Adreßbits und dem Anstehen des Inhalts am Ausgang vergeht. Diese Zeit ist sehr stark von der verwendeten Technologie abhängig.
2.6.3 Siliziumfestplatten - die FLash-Speicher
In den letzten Jahren ist eine neue Art nicht flüchtiger Speicher auf den Markt gekommen, die häufig in tragbaren Kleinund Kleinstcomputern als Ersatz für Diskettenlaufwerke oder Festplatten dienen: die Flash-Speicher. Der Aufbau der
Speicherzellen stimmt im wesentlichen mit denen der EEPROM überein. Sie benötigen aber nur eine Lösch- und Programmierspannung von 12 V, so daß sich problemlos 10000 Programmier- und Löschzyklen ausführen lassen. FlashSpeicher können fast so flexibel programmiert werden wie RAM-Chips, wobei sie aber im Gegensatz zu diesen die eingeschriebenen Daten nicht verlieren. Im PC-Bereich werden Flash-Speicher bereits häufig als Datenträger für das BIOS
(Basic Input Output System) eingesetzt. Neue BIOS Versionen können so auf Diskette distributiert oder in Mailboxen
zum Down-Load angeboten werden. Die Kosten für das Wechseln von EPROMs entfallen.
2.6.4 Tri-State-ROM
Ergänzt man die Datenleitungen eines Speichers durch Tri-State-Schalter, so erhält man Tri-State-Speicher. Die Abbildung zeigt einen 2048 Bytes großen ROM mit 11 Adreß- und 8 Daten-Leitungen.Ein L an ENABLE bewirkt, daß der
Ausgng hochohmig wird; mit ENABLE = H steht der Inhalt des adressierten Bytes am Ausgang an.
Tri-State-ROM
41
2.6.5 RAM
Ein RAM (random-access memory oder auch read-write memory) ist vergleichbar mit einer Menge von adressierbaren
Registern. Wenn eine Adresse angelegt ist, kann der Inhalt einer Speicherzelle gelesen oder neu beschrieben werden.
•
Kernspeicher: der Inhalt bleibt auch bei abgeschalteter Spannung erhalten (nicht flüchtig); Kernspeicher haben
jedoch einen hohen Leistungsverbrauch, einen langsamen Zugriff und eine geringe Packungsdichte.
•
Halbleiterspeicher: bei Abschalten der Spannung geht der Inhalt verloren (flüchtig). Man unterscheidet zwischen
statischen und dynamische Halbleiterspeichern.
Bei dynamischen Bausteinen, sogenannten DRAMs, muß die in einem Kondensator gespeicherte Information in festen Abständen (einige ms) aufgefrischt (refresh) werden. Während eines Refreshzyklus ist kein Speicherzugriff
möglich, da ist der Speicher mit sich selbst beschäftigt. Das führt zu einer längeren Zugriffszeit als bei statischen
RAMs. Aus Kostengründen werden Hauptspeicher üblicherweise mit DRAMs aufgebaut.
Bei SRAM Bausteinen muß die in einem Flipflop gespeicherte Information nicht aufgefrischt werden. Die Speicherzelle von SRAM Bausteinen benötigt mehr Transistoren als eine DRAM-Zelle, so daß auf der gleichen Chipfläche
nur ein Viertel der Speicherkapazität erreicht werden kann, jedoch ist die Zugriffszeit bei SRAMs deutlich kürzer.
Sie werden daher für den Aufbau von schnellen Zwischenspeichern (sogenannten Caches - denken Sie an den Secondlevel Cache von 256 kB auf dem Mainboard Ihres Computers) verwendet
2.6.5.1 Bauformen für Hauptspeichermodule
DIP
Dual Inline Package
Schaltungsgehäuse mit in zwei Reihen angeordneten Aschlüssen. Sie werden in heutigen PCs und Workstations nicht mehr als Hauptspeichermodule verwendet. Üblich waren Speichergrößen von 32, 64 und 128KB.
SIP
Single Inline Package Module.
Schaltungsgehäuse mit in einer Reihe angeordneten Aschlüssen. In dieser Bauform wurden die ersten 1MB
Speicherbausteine hergestellt. Sie wurden abgelöst von den
SIMM
Single Inline Memory Module
Dabei sind die Speicherbausteine auf eine kleine Platine aufgelötet. Die Platinen werden hochkannt in entsprechende Fassungen eingesetzt. Mit dieser Technik werden sehr hohe Speicherdichten erreicht. Heute sind Speicherbausteine mit den Kapazitäten von 1 und 4MB gebräuchlich.
2.6.5.2 Aufbau von DRAM Bausteinen
Bei DRAM Bausteinen werden die Speicherzellen üblicherweise Matrixförmig angeordnet. Die Adressen werden in eine
Row- und eine Column-Adresse aufgeteilt. Mit dem RAS-Signal (row-address strobe) wird die Row-Adresse in dem
Register RA abgespeichert und anschließend die entsprechende Reihe ausgelesen. Für den Begriff Reihe kann gleichbedeutend auch Wort oder Page verwendet werden. Durch das darauffolgende CAS-Signal (column address strobe) wird
der Spaltenanteil der Adresse in das Register CA eingelesen. Die Spaltenadresse legt fest, auf welche Bits innerhalb
einer Reihe zugegriffen wird. Beim Lesezugriff wird die Information auf den Ausgang gelegt, bei einem Schreibvorgang
wird die neue Information an der entsprechenden Stelle im ausgelesenen Wort eingeschoben und beim Zurückschreiben
gespeichert.
Die Speicherzugriffszeit beträgt üblicherweise 70 bis 100 ns, die Speicherzykluszeit zwischen 130 und 200 ns. Der Unterschied zwischen der Zugriffs- und Zykluszeit ergibt sich aus einer sogenannten Precharge-Time, die wegen interner
Umladevorgänge abgewartet werden muß, bevor der nächste Zugriff gestartet werden kann.
42
Am folgenden Blockschaltbild eines DRAMs läßt sich sehen, daß neben den eigentlichen Lesezellen in einem Speicherbaustein noch Verstärker, Adreßdecodierer, Puffer für Adressen und Daten und Steuerlogik mit den entsprechenden
Signalen enthalten sind. Es sind aber nur sehr wenig Kontakte zur Außenwelt notwendig, nämlich die Adreßleitungen
und die Steuersignale, die die gewünschte Funktion (Lesen oder Schreiben) angeben.
Speicherblock
Speicherzellen-matrix
aus Kondensatoren
RAS (row address strobe)
Row
Address
Register
Adreßleitungen
mit der von
der CPU
angeforderten
Adresse
Speichersteuerung
Adreßdekodierer
Steuersignale
......
Steuersignale für
die angeforderte
Funktion:
Lesen oder
Schreiben
Wortauswahl
Read
/Write
Column
Address
Register
Abtast-Verstärker
Bit-Auswahl + Treiber
CAS (column
address strobe)
Daten
Datenbus
Interner Aufbau eines DRAM Speicherbausteins und seine Verbindugen zur Außenwelt
2.6.5.3 Beschleunigung von Blockzugriffen
Moderne DRAM-Bausteine verfügen über spezielle Zugriffsmechanismen, die einen beschleunigten Zugriff auf Daten
innerhalb einer Reihe ermöglichen. Der grundlegende Mechanismus ist dabei der, daß die Row-Adresse nur einmal angelegt werden muß und sich anschließend verkürzte Zugriffe mit reinen Column-Adressen durchführen lassen. An einem
Beispiel wird erläutert, wie sich verkürzte Blockzugriffe auf die Blockzugriffszeiten auswirken:
Die Taktfrequenz eines Prozessors sei 25 MHz. Ein Taktzyklus dauert damit 40 ns. Vom Beginn eines Speicherzugriffs
bis zum Bereitstellen des Datums vergehen 3 Taktzyklen, d.h. die Zugriffszeit beträgt 120 ns. Bevor der nächste Speicherzugriff gestartet werden kann, müssen weitere 2 Taktzyklen (Precharge Time) abgewartet werden, d.h. die Speicher-
43
zykluszeit beträgt 5 Taktzyklen und damit 200 ns. Blockzugriffe können jedoch beschleunigt durchgeführt werden. Die
Zugriffszeit für das erste Wort beträgt wiederum 3 Taktzyklen, danach steht aber im Abstand von je 2 Taktzyklen das
nächste Wort zur Verfügung. Zur Gesamtzeit eines Blockzugriffs muß man noch weitere zwei Taktzyklen addieren, da
vor Beginn eines Folgezugriffs noch die Precharge-Zeit abgewartet werden muß. Ein Blockzugriff auf 8 Worte innerhalb
einer Reihe dauert damit 3 + 7*2 + 2 Taktzyklen und damit 760 ns. Wären 8 Einzelzugriffe durchgeführt worden, hätte
man 8*5 Taktzyklen oder 1600 ns benötigt.
Eine andere Möglichkeit zur Beschleunigung von Blockzugriffen ist das Interleaving. Hierbei wird das Speichersystem
in 2k unabhängige Module, sogenannte Speicherbänke unterteilt. Die Daten werden dabei so auf die Bänke verteilt, daß
aufeinanderfolgende Worte im Adreßraum in aufeinanderfolgenden Bänken abgespeichert werden. Die Speicherbänke
sind so ausgelegt, daß sie vollständig unabhängig voneinander arbeiten können. Es können deshalb Folgeadressen ausgegeben werden, bevor der aktuelle Zugriff abgeschlossen ist. Durch diese zeitliche Verzahnung erhält man bei 2k unabhängigen Bänken eine Beschleunigung um einen Faktor =2k .1
2.6.6 Tri-State RAM
Die meisten RAMs haben Tri-State-Ausgänge, d.h. die Ausgänge des RAMs können mit einem Bus verbunden und von
ihm getrennt werden. Ein RAM mit typischen Eingangssignalen:
Data in
WE
ADR
RAM
CE
Data out
Die Adreß-Bits wählen die Speicherzelle aus. Die Steuersignale WE und CE legen die Operation fest: schreiben, lesen
oder nichts tun.
WE bezeichnet das Write Enable-Signal
CE bezeichnet das Chip Enable-Signal
Die Funktionen des RAMs:
•
CE
H
WE
H
Funktion
schreiben
H
L
L
X
lesen
----
Ausgang
getrennt (hochohmig)
verbunden
getrennt (hochohmig)
Schreib-Operation: die Eingangs-Daten DIN werden bei der adressierten Speicherzelle abgelegt. Die AusgabeDatenleitungen sind hochohmig.
1 C.Müller Schloer RISC-Workstation Architekturen S. 125ff
44
•
Lese-Operation: der Inhalt der adressierten Speicherzelle erscheint an den Ausgangsleitungen, weil die Tri-StateSchalter geschlossen sind.
•
keine Operation: die Inhalte aller Zellen bleiben ungeändert; der Ausgang ist hochohmig.
Beispiel: ein RAM-Baustein mit Tri-State-Ausgängen
A3
CE
WE
D3
Q3
D2
Q2
GND
-------|1
16|
|2
15|
|3
14|
|4
13|
|5
12|
|6
11|
|7
10|
|8
9|
--------
VCC
A2
A1
A0
D0
Q0
D1
Q1
Dieser 64-Bit RAM ist in 16 Worten mit jeweils 4 Bits organisiert.
Die Bedeutung der verschiedenen Pins:
•
4 Adreß-Bits (A0 - A3) können auf 24 = 16 Worte zugreifen.
Pin_1 (A3), Pin_15 (A2), PIN_14 (A1) und Pin_13 (A0).
•
Die Eingabe-Daten:
Din_4 (D3) Pin_6 (D2), Pin_10 (D1) und Pin_12 (D0).
•
Die Ausgabe-Daten:
Pin_5 (Q3), Pin_7 (Q2), Pin_9 (Q1) und Pin_11 (Q0).
Chip-Enable Pin_2
- Write-Enable Pin_3
•
Spannungsversorgung Pin_16: +5 Volt - Erdung Pin_8.
Ein Impulsdiagramm verdeutlicht das Lesen und Schreiben eines RAMs mit den Signalen CE und WE :
45
________________________
A0 _ _ _ H _ _ _ _ _ _ _ _ |_____L________
_________________________________________
A1 _ _ _ _ _ _ _ _ H _ _ _ _ _ _ _ _ _ _ _ _
_________________
A2 ________________L_______| _ _ _ _H_ _ _ _ _
__________________________________________
A3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
______________________
D0 _____L____________|_ _ _ _ _ H _ _ _ _ _ _
D1 _________________L________________________
__________________________________________
D2 _ _ _ _ _ _ _ _ _H_ _ _ _ _ _ _ _ _ _ _ _ _
______________________
D3_______L__________|_ _ _ _ _ _H_ _ _ _ _ _
Q0 __________________________________________
Q1 __________________________________________
Q2 __________________________________________
Q3 __________________________________________
____________________________________________
CE __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_
__
WE ____|
__
|_____________________________|
^ ^
t1 t2
^
t3
^
t4
|______
^ ^
t5 t6
^
t7
2.6.7 Ein kleiner 16 Worte * 8 Bit breiter Speicher
Es werden zwei RAM-Bausteine so zusammengeschaltet, daß mit jeder der 16 möglichen Adressen auf ein 8-Bit Wort
zugegriffen wird. Dabei wird gezeigt, wie Befehle und Daten im Speicher abgelegt werden können, noch bevor der
Rechner läuft.
46
Schaltbild eines 8 Bit breiten RAMs
•
Adressierung des Speichers: die Adreßbits werden von Schaltern (A3 A2 A1 A0) geliefert. Es kann jede Adresse
von 0000 bis 1111 eingestellt werden. Wirkung: Schalter oben (offen) enspricht einer '1'.
•
Eingabedaten setzen: Die Datenbits werden von zwei anderen Schalter-Zeilen geliefert:
das höherwertige Nibble: D7 D6 D5 D4
das niederwertige Nibble: D3 D2 D1 D0
(Nibble ist die Zusammenfassung von 4 Bit = ein halbes Byte)
Es können Datenworte von 0000 0000 bis 1111 1111 eingestellt werden (in Hex: 00 bis FF).
Wirkung: Ist ein Schalter unten (geschlossen), so entspricht das einer Input-0; es wird eine also eine 0 gespeichert.
Um Daten bei bestimmten Adressen abzulegen, ist schrittweise wie folgt vorzugehen:
1.
2.
3.
4.
5.
6.
Schalter READ-WRITE in Stellung READ
(-> WE = low).
Schalter 'RUN_PROG' in Stellung PROG; (-> CE = high) bleibt in dieser Stellung bis alle Zellen beschrieben sind. Der Schalter legt CE von jedem RAM auf
H.
Adreß- und Datenschalter einstellen.
Schalter 'READ_WRITE' für eine kurze Zeit in Stellung WRITE legen. Über Pin_3
wird WE damit auf H gesetzt. Die am Eingang anliegenden Daten werden jetzt in
die adressierte Speicherzelle übernommen.
Weiter bei 3., wenn eine weitere Zelle beschrieben werden soll.
Schalter 'RUN_PROG' in Stellung 'RUN'
2.6.8 Entwicklung der Speicherbausteine
Die folgende Tabelle gibt die Entwicklung der Technik dynamischer Speicherbausteine über die Jahre 1983 bis 1995 an
:
47
Jahr
Dimension (µ)
1983
1986
1989
1992
1995
2,50
1,25
0,80
0,50
0,30
...
...
...
...
...
2,00
1,00
0,70
0,30
?
maximale Kapazität
(MBit)
Zahl der Transistoren (Millionen)
0,25
1
4
16
64
0,5
2
8
32
128
Danach wurde etwa alle drei Jahre die Kanallänge der Feldeffekttransistoren (CMOS-Technik) halbiert, wodurch sich
bei gleicher Chipfläche eine Vervierfachung der Anzahl der Transistoren ergibt.
Für den Speicherbaustein gilt, daß die Adreßdecodierung um so komplexer wird, je größer die Kapazität des Bausteins
ist. Durch diese Eigenheit und weitere Effekte wird bei den Speicherbausteinen die Gesetzmäßigkeit, wonach eine Halbierung der Kanallänge zu einer Verdoppelung der Arbeitsgeschwindigkeit führt, weitgehend überdeckt. Dadurch sind
über die Jahre die Speicherbauteile zwar auch schneller geworden, aber in einem wesentlich geringeren Maße als die
Prozessoren, deren Taktfrequenz sich alle drei Jahre verdoppelt hat.
48
3 Die Architektur des SAP
3.1 Blockdiagramm des SAP
Die Abbildung unten zeigt die Struktur des Rechners in Form eines Blockdiagramms:1
Anzahl
Leitungen = BitBreite der
Verbindung
CP
CLK
CLR
EP
Program
Counter
Schalter
4 AdreßSchalter
MUX
LM
CLK
4
8
8
8
SU
LB
Register
B
Output
Register
CLK
LO
CLK
8
Instruction
Register 4
Binary
Display
CLK
CLR
LA
CLK
EA
EU
8
8
MAR
RAM
16*8
Akkumulator
ALU
CE
CLR
EI
8
4
8 DatenSchalter
Schalter WE
LI
CLK
8
Control
Unit
Bit 0..3 des
Opcodes
Bit 4..7 des
Opcodes
12
Das Kontrollwort : CPEPLMER LIEILAEA SUEULBLO
CE
Blockdiagramm des SAP
1 Vgl. Malvino, Digital Computer Electronics, S.141
49
3.2 Das Kontrollwort des SAP
Entsprechend der bisherigen Konvention bedeutet:
CP - Count Program Counter
EP - Enable Program Counter
LM - Load Memory Address Register
ER - Enable RAM = CE Chip Enable
LI - Load Instruction Register
EI - Enable Instruction Register
LA - Load Akkumulator
EA - Enable Akkumulator
SU - Substract Unit
EU - Enable Unit
LB - Load B Register
LO - Load Output Register
Über den Schalter S wird bestimmt, ob bei einem Speicherzugriff die Speicheradresse aus den vier Adreßschaltern oder von den Busleitungen genommen werden. Der Schalter WE legt fest, ob der Speicherzugriff
schreibend oder lesend sein wird.
Alle Komponenten sind über einen Bus miteinander
verbunden und können über diesen Signale austauschen. Der Bus besteht aus 8 Leitungen zur gleichzeitigen Übertragung von 8 Bits. Sämtliche Abläufe
erfolgen auf Veranlassung der Ablaufsteuerung; sie erzeugt die erforderlichen Steuersignale und gibt sie an
die angeschlossenen Komponenten weiter. Alle mit
dem Bus verbundenen Register-Ausgänge sind TristateAusgänge. Die übrigen Register haben 'twostate'Ausgänge; sie treiben die mit Ihnen verbundenen Komponenten direkt. Die Komponenten im einzelnen:
3.3 Program Counter PC (Befehlszähler)
Der Program Counter liefert (während der Rechner
läuft) die Speicheradresse des Befehls, der als nächster
ausgeführt werden soll.
•
Er ist ein Register, das von 0000 bis 1111 zählen
kann.
•
Der Inhalt kann (vor dem Start) mit dem Signal
CLR auf den Zählerstand 0 gesetzt werden.
•
Der Inhalt wird bei aktivem CP-Signal mit jeder
ansteigenden Flanke von CLK um 1 erhöht.
•
Die Zählerausgänge sind über Tri-State-Gatter mit
den 4 niederwertigen Busleitungen verbunden.
Das Signal EP aktiviert die Tri-State-Gatter und schaltet so den aktuellen Zählerstand auf den Bus durch;
damit wird er für andere angeschlossene Komponenten
verfügbar.
3.4 Akkumulator A
Der Akkumulator ist ein 8-Bit-Register und dient zur
Aufnahme eines der beiden Operanden bei arithmetischen Operationen (der andere Operand ist der Inhalt
des B-Registers) sowie zur Übernahme des Ergebnisses
nach Durchführung der Operation durch die ALU. Er
kann sowohl Daten vom Bus übernehmen als auch
(wenn EA aktiv) Daten auf den Bus übertragen. Außerdem sind seine Ausgänge direkt mit einem Operandeneingang der ALU verbunden. Die Datenübernahme von
den Busleitungen erfolgt unter Kontrolle der Signale
LA und CLK. Ist LA inaktiv (low), so befindet sich der
Akkumulator unabhängig vom Taktsignal CLK im
Speicherzustand und es werden keine neuen Daten
übernommen. Ist LA aktiv (high), so werden mit der
nächsten ansteigenden Flanke von CLK die Bussignale
übernommen und gespeichert.
3.5 Register B
Das Register B enthält den zweiten Eingangsoperanden
für die ALU. Sein Eingang ist mit den 8 Busleitungen
verbunden; die Datenübernahme von den Busleitungen
erfolgt unter Kontrolle der Signale LB und CLK. Im
Unterschied zum Akkumulator sind die Ausgänge des
B-Registers nicht mit dem Bus verbunden, sondern
gehen lediglich zur ALU. Diese verknüpft den Registerinhalt als zweiten Operanden mit dem Inhalt des
Akkumulators, der den ersten Operanden für die arithmetisch-logischen Operationen liefert.
50
Die Architektur des SAP
3.6 Arithmetisch-logische Einheit
(ALU)
Die ALU kann nur addieren und subtrahieren. Die
beiden Operanden werden ihr durch den Akkumulator
A und das Register B direkt zugeführt. Die Subtraktion
wird durch Addition des Zweierkomplements vollzogen. Das Signal SU entscheidet darüber, ob addiert
oder subtrahiert wird. Ist SU inaktiv (low), so wird der
Inhalt des Registers B zum Inhalt des Akkumulators addiert; ist SU aktiv (high), so wird der Inhalt von Register B vom Inhalt des Akkumulators subtrahiert. Der
Ausgang der ALU ist über Tri-State-Gatter mit dem
Bus verbunden, so daß das Ergebnis der arithmetischen
Operation den anderen Komponenten zur Verfügung
gestellt werden kann. Die Tri-State-Gatter werden
durch das Signal EU gesteuert. Ist EU inaktiv (low), so
sind die ALU-Ausgänge elektrisch vom Bus getrennt,
andernfalls mit ihm verbunden.
A
0
0
1
1
B
0
1
0
1
CARRY SUM
0
0
0
1
0
1
1
0
Aber das kann noch nicht die ganze Wahrheit sein;
wenn ein Carry-Flag erzeugt wird, sollte auch der folgende Addierer dieses als Eingang in die Addition
miteinbeziehen.
Ein Full-Adder berücksichtigt das Carry-Bit der vorherigen Bitaddition als Dateneingang.
3.6.1 Interner Aufbau der ALU
Im Folgenden werden die Bausteine der ALU auf Gatterebene dargestellt, mit deren Hilfe der Rechner in der
Lage ist, die Rechenoperationen Addition und Subtraktion auszuführen.
Der einfachste Baustein ist ein sogenannter Half-Adder,
der zwei Dateneingänge mit einem EXOR Gatter addiert. Sind beide Einganssignale high, entsteht ein Übertrag (Carry), der über das UND-Gatter als Carry Bit
nach außen geführt wird:
Full-Adder
Die Wahrheitstafel:
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
CARRY
0
0
0
1
0
1
1
1
SUMME
0
1
1
0
1
0
0
1
Die Verknüpfung von Full-Adder und Half-Adder führt
zum einfachen 4 Bit Addierwerk:
Half-Adder
Der Half-Adder addiert also lediglich zwei Bit. Um
zwei 8 Bit breite Datenworte (Akkumulator und Register B) addieren zu können, benötigt man eine Parallelschaltung von acht Addierern.
Die Wahrheitstafel:
Die Architektur des SAP
51
•
Vier Bit Addierwerk
Jetzt muß unser Rechenwerk noch erweitert werden,
damit es auch subtrahieren kann. Die Subtraktion wird
durchgeführt durch Addition des Zweierkomplements.
Also Z.B. die Subtraktion der Zahlen 8 - 5 sieht binär
folgendermaßen aus:
1000BIN
(8 Dez)
•
•
-0101
(5)
ist dasselbe wie
•
1000BIN
•
+1011
•
=0011
(8 Dez)
(Zweierkomplement)
(3 Dez)
Wir müssen unserem Rechenwerk also beibringen, bei
einer Subtraktion aus dem zweiten Operanden (BRegister) das Zweierkomplement zu bilden:
•
B3 ... B0
C4 ... C1
•
S3 ... S0
3.7 Speicher
Die Speicherkomponente umfaßt die Teile
•
eigentlicher RAM-Speicher
•
MAR (memory-address-register)
•
Adreßmultiplexer und
•
Schalter für die Eingabe von Daten (S, 4 Adr, 8
Dat, WE)
Der RAM-Speicher hat 4 Adreßeingänge A0 bis A3, so
daß der Adreßraum die 16 Adressen 0HEX bis FHEX
umfaßt. Jede Speicherzelle enthält ein Byte. Der Speicher kann nicht vom Rechner aus, sonden nur manuell
beschrieben werden (Programmierung). Hierzu dienen
4 parallele Schalter zur Adressenwahl und 8 parallele
Schalter zur Dateneinstellung. Vom Rechner aus kann
der RAM nur gelesen, nicht aber beschrieben werden.
Über den Bus stellt der Rechner die Leseadresse bereit
(Busleitungen 0 bis 3) und überträgt sie in das 4-BitAdreßregister MAR. Dessen Ausgänge gehen unmittelbar zu den Adreßeingängen des Speichers.
Schalter S steuert den Adreß-Multiplexer. Seine Stellung entscheidet darüber, ob die Quelle der in das
Adreßregister zu ladenden Speicheradresse das manuell
bediente Schalterfeld (Speicher programmieren) oder
der Bus (Speicher lesen) ist.
Die Speicherausgänge sind über Tri-State-Gatter mit
dem Bus verbunden.
3.6.2 Übung: Das Addierwerk
Das MAR-Register ist ein 4-Bit-Register. Signal LM
kontrolliert zusammen mit dem Signal CLK die Adreßübernahme. Ist LM inaktiv (low), so befindet sich das
Register im Ruhezustand und reagiert nicht auf das
CLK-Signal. Ist LM aktiv (high), so übernimmt das
Register mit der nächstfolgenden ansteigenden Flanke
von CLK die an den Adreß-Schaltern eingestellte bzw.
am Bus anliegende Adreßinformation.
Führen Sie die Addition der Zahlen 5 und 8
mit einem 4 Bit Addierwerk durch.
Die Stellung des Schalters WE legt fest, ob sich der
Speicher in der Betriebsart 'Schreiben' (Speicher manuell programmieren) oder 'Lesen' (Rechner liest Befehle und Daten) befindet.
Bestimmen Sie dafür:
•
A3 ... A0
52
3.8 Instruction Register IR (Befehlsregister)
Dieses Register dient zur Aufnahme des jeweils nächsten auszuführenden Maschinenbefehls. Es wird über
den Bus aus dem Speicher geladen. Die vier höherwertigen Bits jedes Befehls bilden den Befehlscode. Sie
gelangen von dem Ausgang des IR unmittelbar zu dem
Eingang der Ablaufsteuerung und veranlassen diese, die
dem Befehl entsprechende Folge von Steuersignalen zu
erzeugen. Die vier niederwertigen Bits eines Befehls
enthalten einen Operanden oder sind ohne Bedeutung.
Die Übernahme eines Befehls vom Bus erfolgt unter
Kontrolle der Signale LI und CLK. Ist LI inaktiv (low),
so befindet sich das Register unabhängig von dem
Taktsignal CLK im Speicherzustand und es werden
keine neuen Daten übernommen. Ist LI aktiv (high), so
werden mit der nächsten ansteigenden Flanke von CLK
die Bussignale übernommen und gespeichert.Die an
den Ausgängen des IR vorhandenen Signale werden
unterschiedlich behandelt. Die 4 höherwertigen Bits,
die den Operationscode des Befehls bilden, werden
unmittelbar der Ablaufsteuerung zugeleitet (I7 I6 I5 I4).
Die 4 niederwertigen Bits (Operandenbits) werden über
die 4 niederwertigen Busleitungen den anderen Komponenten verfügbar gemacht.
Die Steuerung erfogt über Signal EI. Ist EI inaktiv
(low), so sind die Tri-State-Registerausgänge hochohmig, das Register ist elektrisch vom Bus getrennt. Ist EI
aktiv (high), so sind die Registerausgänge zum Bus
durchgeschaltet.
3.9 Output Register (AusgabeRegister)
Das Ausgabe-Register dient der Kommunikation des
Rechners mit der Außenwelt. Es entspricht bei größeren
Systemen der Ausgabeeinheit (z.B. dem Bildschirm).
Das Ausgabe-Register ist völlig analog dem Register
Baufgebaut. Der einzige Unterschied besteht darin, daß
die Ausgangsbits unmittelbar mit je einer Leuchtdiode
zur Anzeige des Registerinhaltes verbunden sind. Die
Übernahme der Bussignale erfolgt unter Kontrolle der
Signale LO und CLK. Ist LO inaktiv (low), so befindet
sich das O-Register unabhängig von dem Taktsignal
CLK im Speicherzustand und es werden keine neuen
Daten übernommen. Ist LO aktiv (high), so werden mit
der nächsten ansteigenden Flanke von CLK die Bussignale übernommen und gespeichert.
Die Architektur des SAP
3.10 Ablaufsteuerung
Die Ablaufsteuerung sorgt für die zeitliche Steuerung
sämtlicher Abläufe innerhalb des Rechners. Sie sendet
zu Beginn ein CLR-Signal an den PC und IR, wodurch
beide auf 0 gesetzt werden. Sie sendet das Takt-Signal
CLK an alle Register; damit werden die Operationen
des Rechners genau aufeinander abgestimmt.
Die Signale, die (nach unten eingezeichnet) aus der
Ablaufsteuerung austreten, bilden ein 12 Bit großes
Kontrollwort:
CP EP LM CE LI EI LA EA SU EU LB LO
Dieses Wort bestimmt wie die Register bei der nächsten
positiven Taktflanke reagieren. Aktiviert die Ablaufsteuerung beispielsweise zu einem bestimmten Zeitpunkt die beiden Signale LB und ER, so veranlaßt sie
damit zu diesem Zeitpunkt das Laden des B-Registers
mit dem Inhalt der vom Speicheradreßregister (MAR)
adressierten Speicherzelle. Die Ablaufsteuerung sorgt
dafür, daß die verschiedenen Teile des SAP korrekt
zusammenarbeiten: damit die Kontrollsignale in der
richtigen Reihenfolge zu den richtigen Zeitpunkten an
den entsprechenden Komponenten ankommen.
Die Befehle des SAP
4 Die Befehle des SAP
Ohne Programm ist die Hardware nutzlos. Also müssen
vor dem Start irgendwie Befehle in den Speicher geladen werden. Zunächst nur: die 5 Befehle des SAP:
53
4.3 SUB
•
Syntax:
•
Bedeutung: Subtract RAM data from Akkumulator.
•
Datenfluß: A <-- A - M
•
Beispiel:
SUB 1 - Subtrahiere den Inhalt der Zelle 1 vom
Akku
4.1 LDA
SUB adr
•
Syntax:
•
Bedeutung: Load RAM data into Akkumulator.
•
Datenfluß: A <-- M
•
Syntax:
•
Beispiele:
LDA F - Lade den Inhalt von Zelle F in den Akku
LDA 5 - Lade den Inhalt von Zelle 5 in den Akku
•
Bedeutung: Load output-register with Akkumulator
•
Datenfluß: O <-- A
LDA adr
4.4 OUT
OUT
Der Befehl hat keine Parameter. Nach Ausführung von
OUT wird das Ergebnis im Display sichtbar.
4.2 ADD
•
Syntax:
•
Bedeutung: Add RAM data to Akkumulator.
•
Datenfluß: A <-- A + M
•
Beispiele:
ADD E - Addiere den Inhalt der Zelle E zum Akku
ADD 9 - Addiere den Inhalt der Zelle 9 zum Akku
ADD adr
LDA, ADD, SUB: referenzieren den Speicher
und heißen deshalb memory reference instructions.
LDA, ADD, SUB, OUT und HLT sind Mnemonics,
d.h. Abkürzungen, die man sich leicht merken kann.
Im SAP gibt es keinen Befehl STA adr, mit dem der
Inhalt des Akkus im Speicher abgelegt werden könnte
(der SAP hat keinen Schreibzugriff auf seinen Speicher).
4.5 HLT
•
Syntax:
•
Bedeutung : Anhalten der Programmausführung,
Stop des Clocksignals.
HLT
Der Befehl hat keine Parameter.
Die Verarbeitung von Daten wird angehalten. HLT
bezeichnet das Ende des Programms.
54
Die Befehle des SAP
4.6 Ein Beispiel-Programm
0: |0000 1111|
Adresse
|
Mnemonics
0
LDA 9
1
ADD A
2
ADD B
3
SUB C
4
OUT
5
HLT
Die OUT- und HLT-Befehle haben keinen Adreßteil.
D.h. die 4 LSBs sind ohne Bedeutung.
Die allgemeine Form der Befehle in Maschinensprache:
XXXX XXXX
|
|____Adreß-Feld
|_________Opcode-Feld
--------------------------6
FF
7
FF
8
FF
9
01
A
02
B
03
C
04
D
FF
E
FF
F
FF
4.6.1 Übung: Assemblierung eines Befehls
Übersetzen Sie in Maschinensprache LDA
B
Lösung:..............................
Das Ergebnis der Ausführung ist:
Um Befehle und Daten im Speicher ablegen zu können,
müssen die Opcodes (Operation Codes) der Befehle
festgelegt werden:
Mnemonic
LDA
ADD
SUB
OUT
HLT
|
Opcode
0000
0001
0010
1110
1111
Der Speicher wird über die Schalter des SAP programmiert.
Der Opcode ist in die 4 MSB-Positionen zu schreiben.
Die Adresse ist in die 4 LSB-Positionen zu schreiben.
Beispiel: LDA F ... bei Adresse 0
4.6.2 Übung: ein SAP Additionsprogramm
Der Wert des Ausdrucks 16+20+24-32 ist
in Form eines SAP-Programms zu berechnen (die Zahlen sind Dezimalzahlen).
Die Befehle des SAP
55
4.6.3 Übung: Programmierung des SAP
"Schreiben" Sie das obige Programm in den Speicher des SAP. Nehmen Sie das RAM-Schaltdiagramm von
S 45.
Schalter
WE
Read_Write
Schalter
CE
RUN_Prog
A3...A
D7...D
D3..D
0
4
0
56
Der Maschinenzyklus
5 Der Maschinenzyklus
Der Teil des Rechners, der für jeden Zeitpunkt festlegt
•
welche Wege die Daten nehmen und
•
welche Operationen durchgeführt werden müssen,
wird als Ablaufsteuerung (ABL) bezeichnet. Die Ablaufsteuerung ermöglicht die automatische Wirkungsweise des
Rechners.
Nachdem das Programm (mit den Daten) in den Speicher geladen ist, geht mit einem Start-Signal die Kontrolle des Systems an die Ablaufsteuerung über. Sie erzeugt die Kontrollworte, welche die Befehle holen und ausführen.
Die Befehle werden einzeln geholt und ausgeführt; dabei durchläuft die Maschine verschiedene Phasen. Die Phasen
werden mit Hilfe eines Ringzählers erzeugt.
------------------------|
|
|
Ringzähler
<|o---- CLK
|
|----- CLR
------------------------|
|
|
|
|
|
T5 T4 T3 T2 T1 T0
T = T5 T4 ... T0 bezeichnet die Ausgangssignale des Ringzählers. Bei Start des Rechners (mit CLR = 1) ist T = 000001.
Dann folgende negative Taktflanken von CLK erzeugen nacheinander durch Linksrotation die Ringworte:
T = 000010
000100
001000
010000
100000
000001
u.s.w.
Die Abbildung unten zeigt den zeitlichen Ablauf der Ausgangsimpulse:
Jede Phase beginnt mit einer negativen Taktflanke und endet bei der nächsten negativen Taktflanke;
Der Ringzähler erzeugt also (immer wieder) 6 Phasen. Jeder Befehl soll in diesen 6 Phasen geholt und ausgeführt werden. Wichtige Anmerkung: in der Mitte einer jeden Phase tritt eine positive Taktflanke auf!
Der Maschinenzyklus
CLK
57
__
_____
_____
_____
_____
_____
_____
_____
|___|
|___|
|___|
|___|
|___|
|___|
|___|
|_
|<-T0-->|<-T1-->|<-T2-->|<-T3-->|<-T4-->|<-T5-->|<-T0-->|
T0
_________
_________
|
|_______________________________________|
|_
T1
_________
________|
|_________________________________________
T2
_________
________________|
|_________________________________
T3
_________
________________________|
|_________________________
T4
_________
________________________________|
|_________________
T5
_________
________________________________________|
|_________
5.1 Der Hole-Zyklus
Im folgenden wird gezeigt, welche Kontrollworte die ABL in den Phasen erzeugen muß, damit ein Befehl ausgeführt
wird. Die Phasen T0, T1 und T2 bilden den Hole-Zyklus (fetch-cycle) des SAP.
5.1.1 Die Adreßphase
Der Zeitabschnitt T0 wird als Adreßphase bezeichnet, weil in dieser Phase die Adresse im PC in das MAR transferiert
wird. In dieser Phase sind die Komponenten PC, MAR und ABL aktiv. Damit der Transfer stattfindet, müssen in dieser
Phase (zwischen 2 aufeinanderfolgenden negativen Taktflanken) die Kontrollsignale EP und LM aktiv sein. D.h. ABL
muß in der T0-Phase folgendes Kontrollwort ausgeben:
C P EP LM CE
0 1 1 0
L I E I L A EA
0 0 0 0
S U EU LB LO
0 0 0 0
Zeichnen Sie die beteiligten Komponenten des SAP:
Das MAR übernimmt vom Bus den Inhalt des PC. Denn in der Mitte von T0 tritt eine positive Taktflanke auf und zu
diesem Zeitpunkt übernimmt MAR die am Eingang anliegenden Werte.
58
Der Maschinenzyklus
5.1.2 Die Inkrementphase
Die T1-Phase wird als Inkrementphase bezeichnet, weil in ihr der PC um 1 erhöht wird. Die beteiligten Komponenten:
PC und ABL
Die aktiven Kontrollsignale: CP
Das Kontrollwort in der T1-Phase:
C P EP LM CE
1 0 0 0
L I E I L A EA
0 0 0 0
S U EU LB LO
0 0 0 0
Zeichnen Sie die beteiligten Komponenten des SAP:
Bei der nächsten positiven Taktflanke (in der Mitte von T1) wird der PC um 1 erhöht.
5.1.3 Die Speicherphase
Die T2-Phase wird als Speicherphase bezeichnet, weil der adressierte RAM-Befehl in das Befehlsregister übertragen
wird. Die beteiligten Komponenten: MAR, RAM, IR
Die aktiven Kontrollsignale: CE, LI. Das Kontrollwort in der T2-Phase:
C P EP LM CE
0 0 0 1
L I E I L A EA
1 0 0 0
S U EU LB LO
0 0 0 0
Zeichnen Sie die beteiligten Komponenten des SAP:
Bei der nächsten positiven Taktflanke (in der Mitte von T2) übernimmt IR das adressierte RAM-Wort.
Im Hole-Zyklus werden also nacheinander 3 Kontrollworte ausgegeben:
Der Maschinenzyklus
59
C P EP LM CE
L I E I L A EA
SU EU LB LO Wirkung
--------------------------------------------------------------0 1 1 0
0 0 0 0
0 0 0 0
MAR <-- PC
1 0 0 0
0 0 0 0
0 0 0 0
PC <-- PC+1
0 0 0 1
1 0 0 0
0 0 0 0
IR <-- RAM
5.2 Der Ausführungs-Zyklus
Die nächsten 3 Phasen (T3, T4, T5) bilden den Ausführungszyklus des SAP. Hier sind die Register-Transfers von dem
auszuführenden Befehl abhängig; das bedeutet, daß jeder Befehl gesondert behandelt werden muß.
5.2.1 LDA-Befehl
Am Ende des Holezyklus befindet sich im IR ein Befehl.
Annahme: Der Inhalt von IR ist 0000 1001 (LDA 9)
Da die Ablaufsteuerung direkt mit dem IR verbunden ist, kann sie den Opcode (0000) unmittelbar verarbeiten (decodieren).
5.2.1.1 T3-Phase
In der T3-Phase wird das Adreßfeld (1001) ins MAR transferiert.
Beteiligte Komponenten: MAR, IR, ABL
Aktive Kontrollsignale: LM, EI
Zeichnen Sie die beteiligten Komponenten des SAP:
5.2.1.2 T4-Phase
In der T4-Phase wird bei der nächsten positiven Taktflanke das adressierte RAM-Wort in das Register A geladen.
Beteiligte Komponenten: MAR, RAM, A, ABL
Aktive Kontrollsignale: CE, LA
Zeichnen Sie die beteiligten Komponenten des SAP:
60
Der Maschinenzyklus
5.2.1.3 T5-Phase
In der T5-Phase werden keine Aktivitäten abgewickelt. Die Komponente ABL muß ein Kontrollwort ausgeben, bei dem
alle Bits inaktiv sind. Deshalb wird die T5-Phase bei dem LDA-Befehl auch als 'tu-nichts' Phase (no operation - nop)
bezeichnet.
Der Maschinenzyklus
Die Ausführungsphasen für den Befehl LDA:
C P EP LM CE
L I E I L A EA
S U EU LB LO
Wirkung
----------------------------------------------------------------0 0 1 0
0 1 0 0
0 0 0 0
MAR <-- Adr
0 0 0 1
0 0 1 0
0 0 0 0
A
<-- RAM
0 0 0 0
0 0 0 0
0 0 0 0
nop
5.2.2 Übung: LDA Impulsdiagramm
Erstellen Sie das Impulsdiagramm für LDA (Hole- und Ausführungszyklus):
CLK
|<-T0-->|<-T1-->|<-T2-->|<-T3-->|<-T4-->|<-T5-->|<-T0-->|
des Ringzählers
___
___
___
___
___
_____
____
|___|
|___|
|___|
|___|
|___|
|___|
|___|
_
EP
_________________________________________________________
LM
________________________________________________________
CP
__________________________________________________________
CE
__________________________________________________________
LI
__________________________________________________________
EI
__________________________________________________________
LA
__________________________________________________________
5.2.3 ADD-Befehl
Am Ende des Holezyklus befinde sich im IR der Befehl
0001 1011
(ADD BHEX)
5.2.3.1 T3-Phase
In T3 wird das Adreßfeld in das MAR transferiert. EI = 1, LM = 1
61
62
Der Maschinenzyklus
5.2.3.2 T4-Phase
In T4 gelangt das adressierte Wort nach Register B. (Es gilt wie immer: die Übernahme findet in der Mitte von T4 statt,bei der nächsten positiven Taktflanke) CE = 1, LB = 1
5.2.3.3 T5-Phase
In T5: EU = 1, LA = 1 (,SU = 0 -> addieren). D.h. das Ergebnis der ALU gelangt in den Akkumulator. In der Mitte von
T5 bei der positiven Taktflanke wird die Summe in den Akkumulator geladen.)
Anmerkung:
Die Durchlaufzeiten (propagation time) verhindern, daß der Akkumulator bei der einen Flanke mehr als einmal geladen
wird. Wenn die positive Taktflanke kommt, ändert sich der Inhalt des Akkus. Damit ändert sich auch der Inhalt der
ALU. Der neue ALU-Inhalt kommt erst nach zwei Laufzeitverzögerungen (eine für den Akkumulator und eine für die
ALU) an. Es ist dann zu spät den Akkumulator zu setzen; der Akkumulator wird also mit einer positiven Flanke nur einmal geladen.
Zusammenfassung der Ausführungsphasen für den ADD-Befehl:
C P EP LM CE
L I E I L A EA
S U EU LB LO
Wirkung
--------------------------------------------------------------T3
0 0 1 0
0 1 0 0
0 0 0 0
MAR <-- Adr
T4
0 0 0 1
0 0 0 0
0 0 1 0
B
<-- RAM
T5
0 0 0 0
0 0 1 0
0 1 0 0
A
<-- Summe
5.2.4 Übung: ADD Impulsdiagramm
Erstellen Sie das Impulsdiagramm für ADD (nur Ausführungszyklus):
CLK
|<-T3-->|<-T4-->|<-T5-->|
des Ringzählers
___
___
___
|___|
|___|
|___|
|__
LM
___________________________
CE
___________________________
EI
___________________________
LB
___________________________
EU
___________________________
LA
___________________________
Der Maschinenzyklus
SU
63
___________________________
5.2.5 SUB-Befehl
Dieser Befehl ist dem ADD-Befehl sehr ähnlich. Er unterscheidet sich nur in der Phase T5 von ihm: SU = 1 (subtrahieren).
5.2.6 OUT-Befehl
Annahme: am Ende des Hole-Zyklus steht im IR = 1110 xxxx
5.2.6.1 T3-Phase
In T3 wird der Inhalt des Akkumulator in das O-Register geladen.
Aktive Signale: EA = 1, LO = 1
5.2.6.2 T4 und T5-Phase
In diesen Phasen sind keine Aktionen erforderlich: nichts tun
Zusammenfassung der Ausführungsphasen für den OUT-Befehl:
C P EP LM CE
L I E I L A EA
S U EU LB LO
Wirkung
--------------------------------------------------------------T3
0 0 0 0
0 0 0 1
0 0 0 1
O <-- Akku
T4
0 0 0 0
0 0 0 0
0 0 0 0
nop
T5
0 0 0 0
0 0 0 0
0 0 0 0
nop
5.2.7 HLT-Befehl
Annahme: am Ende des Hole-Zyklus steht im IR: 1111 XXXX
Die Ablaufsteuerung muß irgendwie die Verarbeitung anhalten; beim SAP geschieht dies dadurch, daß der Takt abgestellt wird.
5.3 Maschinenzyklus
Beim SAP gibt es sechs Phasen (3 Hole- und 3 Ausführungs-Phasen). Diese sechs Phasen bilden einen Maschinenzyklus.
64
Der Maschinenzyklus
___
|___|
___
|___|
___
|___|
___
|___|
___
|___|
____
_____
|___|
_
|___|
|<-T0-->|<-T1-->|<-T2-->|<-T3-->|<-T4-->|<-T5-->|<-T0-->|
des Ringzählers
|<---Holezyklus-------->|<--Ausführungszyklus-->|
|<---------------Maschinenzyklus--------------->|
1 Maschinenzyklus ist die Zeit für das Holen und Ausführen von einem Befehl. Dadurch ist die Programmlaufzeit direkt
proportional der Anzahl der Befehle.)
5.3.1 Übung: Zykluszeiten
Der SAP habe eine Taktquelle mit einer Frequenz von 1 MHz. (1 Million Taktzyklen in einer Sekunde)Wie groß ist ein Maschinenzyklus?
- Wie lange läuft ein Programm mit 12 Befehlen?
Die Ablaufsteuerung
65
6 Die Ablaufsteuerung
Die Ablaufsteuerung ist der Ausgangspunkt für alle Rechneraktionen; sie muß die Kontrollsignale für jeden Befehl erzeugen.
Zunächst werden die einzelnen Komponenten der Ablaufsteuerung vorgestellt.
6.1 Befehlsdecodierer
Ein Befehl wird im Hole-Zyklus in das IR geladen. Das Opcodefeld (die 4 höherwertigen Bits) gelangt direkt in die
Ablaufsteuerung. Hier werden die 4 Bits verarbeitet.
Wiederholung: Decodierer
...entschlüsselt eine beliebige 0-1 Kombination (Eingangswert) in eine 1, die an genau einem Ausgang des Decodierers
erscheint.
Der Befehlsdecodierer im SAP ist ein 1 zu 5 Decodierer. Vervollständigen Sie das Schaltbild des Decodierers:
|I7
|I6
|
|I5
|
|I4
|
|
& ---- LDA
& ---- ADD
& ---- SUB
& ---- OUT
& ---- HLT
|
|
|
|
|
|
|
|
Es ist zu erkennen, daß bei Opcode=0000 nur der Ausgang LDA aktiv ist. Entsprechendes gilt für die anderen Opcodes.
6.2 Kontrollmatrix
Matrix ist hier ein 2-dimensionaler Schaltkreis, der an zwei Eingängen (jeweils Bitgruppen) von zwei verschiedenen
Quellen versorgt wird.
Die Kontrollmatrix soll die Kontrollworte erzeugen. Sie wird gesteuert von
66
Die Ablaufsteuerung
- den Ausgangssignalen LDA, ADD, SUB und OUT des
Befehlsdecodierers und
- den Signalen T0 bis T5 des Ringzählers.
Am Ausgang der Matrix erscheinen dann die Kontrollworte, die festlegen, welche Komponenten in einer bestimmten
Phase etwas tun sollen. Es werden die Signale für den Hole- und den Ausführungszyklus erzeugt.
Es handelt sich damit um die zentrale Stelle im Rechner !
Schaltbild der Kontrollmatrix
6.2.1 Die Signale des Hole-Zyklus:
In dem Schaltkreis der Kontrollmatrix gehen nacheinander T0, T1 und T2 auf H. Man kann erkennen:
T0 = 1 bewirkt
T1 = 1 bewirkt
T2 = 1 bewirkt
EP = 1, LM = 1
CP = 1
CE = 1, LI = 1
Das sind genau die Signale der Kontrollworte in den drei Phasen des Holezyklus:
MAR <-PC <-IR <--
PC
PC + 1
RAMMAR
Die Ablaufsteuerung
67
6.2.2 Die Signale des Ausführungszyklus:
Es gehen nacheinander T3, T4 und T5 auf 1.
Gleichzeitig geht einer der (mit dem Decodierer verbundenen) Eingänge auf 1. Das führt zu den richtigen Ausgangssignalen der Kontrollmatrix.
Beispiel:
Wenn LDA = 1, dann sind anderen Eingänge vom Decodierer = 0.
Demnach sind die zu betrachtenden UND-Gatter: das 1., 4., 7. und 10.
Ist T3=1, liefern das 1. und 7. UND Gatter eine 1. Über die OR-Gatter werden so LM = 1 und EI = 1.
Ist T4=1, liefern das 4. und 10. UND Gatter eine 1. Über die OR-Gatter werden so CE = 1 und LA = 1
Ist T5=1, liefert kein UND Gatter eine 1, d.h. das Kontrollwort = 00...0
Das Ergebnis stimmt mit dem überein, was bei LDA weiter oben verlangt worden ist. Entsprechendes gilt für ADD, SUB
und OUT.
T3
T4
T5
LDA
L M EI
CE LA
nop
ADD
LM E I
CE LB
L A EU
SUB
LM E I
CE LB
LA EU SU
OUT HLT
E A LO
nop
nop
Die Kontrollmatrix des SAP benötigt für die Erzeugung der Kontrollworte für die vier Befehle 19 AND-Gatter und 6
OR-Gatter.
6.3 Takterzeugung
Es gibt einen Schaltkreis für die CLK- und CLR-Erzeugung; er besitzt einen HLT- und START/STOP-Eingang.
| HLT
V
------------------Schalter
|
|----> CLR
START/STOP------>| Takt-Erzeugung |
|
|----> CLK
-------------------
Funktion:
• Schalter in Stellung 'STOP': CLR = H
(aktiv)
CLK = L
(konstant)
• Schalter in Stellung 'START':CLR = L
___
___
|__| |__ , wenn HLT=0
, wenn HLT=1
CLK = ___|
CLK = L
68
Die Ablaufsteuerung
6.3.1 Das Zusammenwirken mit den anderen Teilen des Rechners
Zu Beginn steht der Start/Stop Schalter in Stellung 'STOP' -> CLR = H und die Register werden mit 0 (Ringzähler mit 1)
initialisiert.
Register
PC
IR
Ringzähler
Inhalt
0000
0000 0000
000001
Bedeutung
das Programm beginnt mit dem Befehl bei Adresse 0.
Opcode-Feld = 0000, deshalb ist HLT-Ausgang vom Befehlsdecodierer =
0. Die Takterzeugung könnte laufen.
Der Rechner befindet sich in Phase T0 und liefert (EP=1, LM=1)
Der Rechner verharrt in diesem Zustand, bis der Start/Stop Schalter in Stellung 'START' gelegt wird. Nun beginnt die
Takterzeugung und mit der ersten positiven Taktflanke gelangt der Inhalt des PC (=0) in das MAR (EP=LM=1)
- ... der Rechner läuft.
Es werden solange Taktimpulse erzeugt bis der HLT-Befehl in das IR geladen wird. Wenn IR = 1111 XXXX, dann erzeugt der Befehlsdecodierer HLT = 1. Dieses Signal gelangt an den HLT-Eingang der Takterzeugung: der Takt wird
angehalten.
6.4 Die gesamte Ablaufsteuerung
Der Befehlszähler, der Ringzähler, die Kontrollmatrix und die Takterzeugung erzeugen die Kontrollsignale für den Holeund Ausführungszyklus.
Blockschaltbild der Ablaufsteuerung
Die Ablaufsteuerung
69
Ablauf:
Zunächst werden manuell das Programm und die Daten im Speicher abgelegt. Dann bringt der Operator den Schalter in
Stellung 'START'.
Das CLK-Signal steuert alle Register, in Abhängigkeit von dem Kontrollwort am Ausgang von ABL. Der Holezyklus
lädt den nächsten Befehl in das IR. Nach der Decodierung des Opcodes erzeugt die Kontrollmatrix automatisch die Signale für den Ausführungszyklus. Am Ende des Ausführungszyklus steht der Ringzähler wieder auf 000001. Und der
nächste Maschinenzyklus beginnt. Die Verarbeitung endet, wenn der HLT-Befehl ins IR geladen ist.
Ergänzende Bemerkungen:
Der Rechner besteht aus 5 Teilen:
1.
Input:
Schalter zum Programmieren
2.
Output:
3.
Speicher: MAR, RAM
4.
Arithmetik: AKKU, ALU, B-Register
5.
Kontrolle: ABL, PC, IR
O-Register, Binary-Display
6.4.1 Übung: Addition
Inhalt von Akku = 0000 1111 = 0F
bei Adr F im RAM = 0000 0110 = 06
Nach der Ausführung von ADD F
. was steht im Register B ?
. was steht im Akku?
6.4.2 Übung: Assemblierung
zu übersetzen in SAP-Maschinencode:
OUT
ADD C
SUB F
= CPU
70
Die Ablaufsteuerung
LDA 8
6.4.3 Übung: Speicherphase
In der Speicherphase (T2): die Inhalte vor der nächsten positiven Taktflanke:
MAR = 0111
= 7H
RAM7 = 0011 1100 = 3CH
IR
= 0001 1011 = 1BH
Was sind die Inhalte nach der positiven Taktflanke?
6.4.4 Übung: der PC in der Inkrementphase
In der Inkrementphase (T1): ist der Inhalt von PC vor der aufsteigenden Taktflanke = 0111 = 7. Welches ist
der Inhalt nach der positiven Taktflanke?
Die Ablaufsteuerung
71
6.4.5 Übung: Kontrollmatrix
die AND-Gatter (der Kontrollmatrix) sind durchnumeriert 1...19. Welche AND-Gatter haben einen HAusgang, wenn folgende Bedingungen vorliegen ?
a. OUT und T3 = 1
b. ADD und T3 = 1
c. SUB und T5 = 1
72
Mikroprogrammierung
7 Mikroprogrammierung
Die Kontrollmatrix ist eine Möglichkeit für die Erzeugung von Kontrollsignalen; in diesem Zusammenhang spricht man
von einer 'hardwired control' bzw. einer festverdrahteten Kontrolleinheit (Kontrolleinheit = Ablaufsteuerung + PC-Reg +
IR-Reg).
Bei größeren Befehlssätzen wird die Kontrollmatrix sehr unübersichtlich; sie besteht aus sehr vielen Gattern. Deshalb
wurde nach einer alternativen Lösung gesucht. Die alternative Lösung lautet: Mikroprogrammierung. Die wesentliche
Idee dabei ist, daß die Kontrollworte in einem Speicher abgelegt sind. Das vereinfacht den Aufbau der Kontrolleinheit
erheblich.
7.1 Das SAP Mikroprogramm
Die Kontrolleinheit gibt dauernd Kontrollworte aus, in jeder Phase Ti ein Kontrollwort. Das sind Anweisungen für den
Rest des Rechners: die Verarbeitungseinheit.
Jedes Kontrollwort bewirkt einen kleinen Verarbeitungsschritt; deshalb die Bezeichnung Mikrobefehl (im Gegensatz zu
den Maschinenbefehlen LDA, SUB, ADD,...). Jeder Maschinenbefehl besteht aus 6 Mikrobefehlen. Eine Zusammenstellung für alle SAP Maschinenbefehle:
(wobei die Kontrollworte CPEPLMCE LIEILAEA SUEULBLO in HEX-Schreibweise angegeben werden)
Phase
Kontrollwort
Befehl
aktiv
T0
600
Hole
E P LM
T1
800
CP
T2
180
C E LI
--------------------------------------------------------------T3
240
LDA
L M EI
T4
120
CE LA
T5
000
nop
--------------------------------------------------------------T3
240
ADD
L M EI
T4
102
C E LB
T5
024
L A EU
--------------------------------------------------------------T3
240
SUB
L M EI
T4
102
CE LB
T5
02C
L A EU SU
--------------------------------------------------------------T3
011
OUT
E A LO
T4
000
nop
T5
000
nop
---------------------------------------------------------------
Diese Mikrobefehle können in einem Kontrollspeicher abgelegt werden; die µ-Befehle des
- Hole-Zyklus
bei den Adressen 0H bis 2H
- Ausführungs-Zyklus für
LDA
3
--
5
Mikroprogrammierung
73
ADD
SUB
OUT
6
9
C
----
8
B
EH
Dann muß eine Möglichkeit geschaffen werden, die verschiedenen µ-Befehlsfolgen zu aktivieren, d.h. im einzelnen:
•
die Anfangsadresse der µ-Folge beschaffen,
•
die Adresse schrittweise erhöhen,
•
die Adressen dem Kontrollspeicher zuführen.
Das leisten ein Adressierungs-ROM und ein Zähler, die sich in einer µ-programmierten Kontrolleinheit befinden:
12 Bit Mikrobefehl
Blocckschaltbild der mikroprogrammierten Kontrolleinheit
Sie besteht aus:
•
Adressierungs-ROM
•
µ-Zähler
•
Kontrollspeicher
7.2 Das Adressierungs-ROM
Das Adressierungs-ROM enthält die Anfangsadressen der µ-Befehlsfolgen (nur für die Ausführungszyklen). Also:
ROM-Adr
0
1
Inhalt
0011
0110
für LDA
für ADD
74
Mikroprogrammierung
7.2.1 Übung: Inhalt des Adressierungs-ROMs
Was muß bei den übrigen Adressen im Adr.-ROM stehen?
Wenn die Opcode-Bits I7I6I5I4 am Adr-ROM anliegen, werden die Anfangsadressen ausgegeben.
7.2.2 Beispiel:
Wird der ADD-Befehl ausgeführt, liegt der Opcode 0001 an I7I6I5I4 und bildet die Adresse, die am AdressierungsROM anliegt. Am Ausgang des Adressierungs-ROMs steht dann: 0110.
7.3 Der µ-Zähler
Der µ-Zähler ist eine Komponente der Register-Ebene
|
|
|
|
V
V
V
V
---------------------------|LOAD
|
CLK-----------o|>
|
------|CLR
|
---------------------|
|
|
|
V
V
V
V
mit folgender Wirkungsweise:
Signal
CLR = H
LOAD = L
LOAD = H
Erläuterung
Reset
wird mit jeder neg. Flanke von
CLK:(also zwischen zwei Phasen)
bei der nächsten neg. Flanke von CLK:
Wirkung auf µ-Zähler
µ-Zähler = 0
µ-Zähler = µ-Zähler + 1
µ-Zähler übernimmt den Wert am Eingang
T2
= H
Da in der vorliegenden Kontrolleinheit der µ-Zähler übernimmt den am Einder LOAD-Eingang mit T2 verbunden ist: gang anliegenden Wert, - bei der
nächsten neg. Flanke von CLK; also
am Ende von T2.
µ-Zähler = µ-Zähler + 1
T0,T1,T3,T4,T5 der µ-Zähler zählt (jeweils bei neg.
=H
Flanke von CLK), also am Ende von jeder Phase.
Mikroprogrammierung
75
Der Ablauf:
1.
CLR = H, CLK = L
--> µ-Zähler = 0000
__
__
__
__
2. (mit Start): CLR= L u. CLK = _____| |__| |__| |__|
------->|
|
|
T0
T1
T2
in Phase T0 (... bis zur ersten neg. Flanke von CLK): µ-Zähler = 0000
in Phase T1:
= 0001
in Phase T2:
= 0010
... soweit der Ablauf im Hole-Zyklus.
Der Opcode im IR steuert den Ausführungszyklus.
Wenn ein ADD-Befehl geholt worden ist:
I7I6I5I4 = 0001
liegt am Ausgang des Adressierungs-ROM der Wert 0110
Diese Start-Adresse ist die Eingabe für den µ-Zähler. 0110 wird vom µ-Zähler übernommen, wenn LOAD=1, bei der
nächsten neg. Flanke von CLK: also am Ende von T2.
Anschließend zählt der µ-Zähler weiter:
in Phase T3: µ-Zähler = 0110
T4
T5
0111
1000
Jetzt beginnt wieder die T0-Phase (mit der pos. Flanke von T0 am CLR-Eingang). Der µ-Zähler erhält den Wert 0, das
ist wieder die Start-Adresse für den Hole-Zyklus. Es beginnt der nächste Maschinenzyklus.
7.4 Der Kontrollspeicher oder Mikrocode ROM
Im Kontrollspeicher sind die µ-Befehle abgelegt. Im Hole-Zyklus bekommt er die Adressen 0000, 0001, 0010.
Demnach liegen am Ausgang die Kontrollworte 600, 800 und 180.
Wenn ein ADD-Befehl ausgeführt wird, so bekommt der Kontrollspeicher anschließend die Adressen:
0110
0111
1000
\
> = Adresse der µ-Befehle des Ausführungs-Zyklus bei ADD
/
und am Ausgang erscheinen:
240
\
76
Mikroprogrammierung
102
024
> = Kontrollworte
/
= µ-Befehle.
7.4.1 Übung: Kontrollspeicher
Zeigen Sie, welche Inhalte der µ-Zähler und Kontrollspeicher bei einem ADD Befehl haben.
__
__
__
__
__
__
__
CLK
____________| |__| |__| |__| |__| |__| |__| |__
Ringzähler
-T0---->| T1 | T2 | T3 | T4 | T5 | T0 |
|
|
|
|
|
|
|
µ-Zähler
_______________|_____|_____|_____|_____|_____|_____|
|
|
|
|
|
|
|
Kontroll|
|
|
|
|
|
|
speicher
_______________|_____|_____|_____|_____|_____|_____|
|
|
|
|
|
|
|
7.5 Veränderlicher Maschinenzyklus
Die Befehle LDA und OUT benötigen nicht alle Phasen des Ausführungszyklus, LDA benötigt nur zwei, OUT nur eine.
Die restlichen Phasen bewirken nichts (sind nop's). Bisher sind alle Maschinenzyklen gleich lang. Kommt es allerdings
auf die Ausführungsgeschwindigkeit an, so sind die nop-Zeiten zu eliminieren.
Die nop-Phasen können eingespart werden, indem die µ-programmierte Kontrolleinheit ergänzt wird (es wird hier nur
eine von vielen Möglichkeiten vorgestellt):
Das nop-Kontrollwort ist 000HEX.
Wenn der Kontrollspeicher dieses Kontrollwort erzeugt, soll der aktuelle Maschinenzyklus sofort beendet werden, d.h.
es soll mit Phase T0 weitergehen.
Mikroprogrammierung
77
Erkennung eines NOP Kontrollwortes
Zu diesem Zweck wird das NOP-Signal (000HEX) über ein OR-Gatter mit dem CLR-Eingang des Ringzählers verbunden:
Reset des Ringzählers bei NOP
Das hat zur Folge
•
für den LDA-Befehl: in den Phasen T0 bis T4 ändert sich nichts. Wenn T5 beginnt, gibt der Kontrollspeicher
000HEX aus. NOP wird H und deshalb T0 = H und µ-Zähler = 0.
•
für den OUT-Befehl: Verminderung um 2 Phasen. Wenn T4 beginnt, gibt der Kontrollspeicher 000 aus.
Variable Maschinenzyklen sind bei heutigen Rechnern weit verbreitet. Beispiel: der INTEL 8085-Mikroprozessor realisiert 2 bis 6 Phasen.
78
Mikroprogrammierung
7.6 Gegenüberstellung µ-Programmierung - hardwired control
1
µ-Programmierung
hardwired
control
Änderungen
Erweiterbarkeit
Platzbedarf
Struktur
Komplexität
Entwicklungszeit
Geschwindigkeit
leicht
leicht
mittel
regulär
mittel
mittel
mittel
schwer
schwer
groß
irregulär
hoch
lang
schnell
Nach der obigen Tabelle gibt es also offensichtliche technische Vorteile, die µ-Programmierung einzusetzen.
Änderungen und Erweiterungen des Befehlssatzes sind bei festverdrahteter Kontrolleinheit sehr aufwendig, da eine
neue Kontrollmatrix erstellt werden muß. Bei der µ-programmierten Kontolleinheit brauchen nur zwei ROMs modifiziert
und ausgewechselt werden.
Voraussetzung hierfür ist:
•
freier Speicherplatz im Kontrollspeicher
•
freie Bitkombinationen für neue Befehle
"Beim MOTOROLA 68000 ist ca. ein Viertel des Mikrocode-ROMs unbenutzt und etwa ein Achtel des Opcodes nicht
implementiert."2
Bei CPU-Familien, also Prozessoren, die von Anfang an mit verschiedenen Ausbaustufen geplant werden (z.B.
MOTOROLA 68000 Familie mit den bis heute eingeführten Prozessoren 68000, 68010, 68020, 68030, 68040) bietet
sich deshalb der Einsatz der µ-Programmierung besonders an.
Die reguläre Struktur dieser Logik - es handelt sich um ein ROM im Kontrast zur kombinatorischen Logik - vermindert die Komplexität. "Damit wird das Ganze überschaubarer und setzt die Entwicklungszeit herab. Ein komplexeres
Steuerwerk bei konstanten Entwicklungskosten könnte implementiert werden. Die Regularität der Struktur vereinfacht
das Chip Layout. Dies hat seinerseits beträchtliche Zeiteinsparungen (vermutlich Monate) und geringere Anzahl von
Fehlerquellen zur Folge."3
In einem Fall ist die hardwired control überlegen. Sie ist schneller. Es sind nur die Gatterlaufzeiten maßgebend.
Beispiele:
Prozessor
Control
6502
Intel
8080/85
Motorola
680xx
Intel 80x86
hardwired
hardwired
Mikroprogrammierung
Mikroprogrammierung
Anzahl
Mnemonics
56
>160
Anzahl
Opcodes
151
<256
OpcodeBreite
RegisterBreite
8 bit
8 bit
8 bit
8 bit
77
?
16 bit
32 bit
?
?
16 bit
16 oder
32 bit
Was soll die kleine Tabelle belegen ?
1 Werner Hilf, Anton Nausch, M68000 Familie, Grundlagen und Architektur, te-wi Verlag, 1984, S.2-1
2 Werner Hilf, Anton Nausch, M68000 Familie, S. 2-4
3 Werner Hilf, Anton Nausch, M68000 Familie, S. 2-4
Mikroprogrammierung
79
Bei der Prozessorentwicklung wurden immer leistungsfähigere Befehlssätze implementiert (CISC-Prozessoren Complex Instruction Set Computer), so daß die Hersteller um den Einsatz der Mikroprogrammierung aus oben genannten Gründen nicht herumkamen. Der Punkt ist deshalb wichtig, weil in den letzten Jahren mit der Entwicklung von sogenannten RISC-Prozessoren (Reduced Instruction Set Computer) die hardwired control wegen der optimalen Geschwindigkeit wieder eingesetzt wird.
7.6.1.1 Übung: ABL mit Mikroprogrammierung
Zeichnen Sie das Blockschaltbild einer Ablaufsteuerung mit Mikroprogrammierung.
7.6.1.2 Übung: Erweiterung des SAP
Sie kennen jetzt die vollständige Architektur unseres SAP. Schlüpfen Sie doch mal in die Rolle eines Computer Architekten und erweitern die Architektur des SAP so, daß er die Befehle Store Akkumulator to Adress (STA)
und den Befehl Jump to Adress (JMP) ausführen kann.
Vorgehensweise:
•
•
•
•
•
Genaue Definition des Befehls, Beschreibung des notwendigen Datenflusses
Welche vorhandenen Bausteine müssen verändert, erweitert werden
Welche zusätzlichen Bausteine werden benötigt
Legen Sie den Opcode für die Befehle fest
Entscheiden Sie sich für eine ABL und modifizieren sie so, daß der neue Befehl erkannt und behandelt werden kann.
80
Weiterentwicklung des SAP - der
8 Weiterentwicklung des SAP - der 8085
8.1 Beschränkungen des SAP
•
Das RAM läßt sich nur manuell beschreiben.
•
Der SAP kennt keine Programmsteuerung auf Grund von Zuständen, Bedingungen.
•
Er kennt weder bedingte noch absolute Sprungbefehle.
•
Er kennt keine Subroutines.
•
Er kennt keine Interrupts.
•
Sein Speicher faßt mit 16 Byte nur sehr bescheidene Programme.
Der SAP ist noch keine Universalrechenmaschine; allgemeine Probleme lassen sich nicht in einem Algorithmus fassen,
wenn nur die bekannten 5 Befehle zur Verfügung stehen. Die einfache Aufgabe, "führe eine Aktion n-mal durch", kann
der SAP nicht durchführen, weil er nicht prüfen kann, wann die Aktion zum n.-mal durchgeführt wurde.
Im folgenden sollen Grundzüge eines Rechnersystems dargestellt werden, für das die Beschränkungen des SAP nicht
mehr gelten: ein 8 Bit breiter Mikroprozessor mit 64 k adressierbarem RAM und festverdrahteter Ablaufsteuerung (hardwired control). Es gab mehrere solcher Systeme von Ende der 70ger bis Mitte der 80ger Jahre. (Z80 in Rechnern mit
Betriebssystem CPM, 6502 in Commodore C64 und Apple II und 8080/8085 von Intel als Industriestandard ...) Die folgenden Ausführungen beziehen sich auf den 8085.
Um einen Programmablauf auf Grund von Zuständen - conditions- (größer, kleiner, null, negativ...) formulieren zu können, müssen diese Zustände vom Prozessor angezeigt werden.
8.2 Flags
Flags sind Flip-Flops, die während eines Programmablaufes sich ändernde Zustände signalisieren. Diese Flags sind an
der ALU angeschlossen.
Erzeugte Flags des Universalrechners vom Typ Intel 8085:
Sign Flag - Ist der Inhalt des Akkumulators negativ, wird das Sign Flag gesetzt (Flip-Flop wird high)
Zero Flag - Ist der Inhalt des Akkumulators Null, wird das Zero Flag gesetzt.
Carry-Flag - Führt eine Addition zu einem Überlauf, wird das Carry Flag gesetzt.
Parity-Flag - Ist die Anzahl bits im Akkumulator mit dem Wert 1 geradzahlig, wird das Parity-Flag gesetzt.
Diese Flags sind Bits in einem 8 Bit Register F (siehe Blockdiagramm des 8085 im Anhang).
Weiterentwicklung des SAP - der
81
8.2.1 Übung: Das Sign-Flag
Ist das oberste Bit im Akkumulator (bzw. ALU) gesetzt, so repräsentiert dies einen negativen Wert. Das
Sign Flag soll darüber Auskunft geben, ob der Wert positiv oder negativ ist.
Überlegen Sie, wie die Signale bit7 bis bit0 der ALU verarbeitet werden müssen, damit bei positivem Vorzeichen die
Leitung (Sign-Flag im Register F) auf low, andernfalls auf high gesetzt wird.
1
8.2.2 Übung: Das Zero Flag
Will man eine Aktion n-mal durchführen, so ließe sich das wie folgt formulieren:
1. - Lade in ein Zählerregister Z die Zahl n
2. - führe die Aktion aus
3. - dekrementiere das Zählerregister Z
4. - ist Z <> 0, dann weiter bei 2
5. - fertig
Um diesen Algorithmus programmieren zu können, muß man ein Register auf den Inhalt 0 testen können. Überlegen Sie,
wie die Signale bit7 bis bit0 der ALU verarbeitet werden müssen, damit bei Eintreten des Wertes 0 eine Leitung (Zero
Flag) auf high gesetzt wird.
Die Aufgabe wird nun genauer formuliert und mit Instruktionen des 8085 gelöst.
Aufgabenstellung: Addiere die Zahlen von 1 bis 10
Label Instruction
1.-Lade den Akkumulator mit 0
MVI A, 0
2.-Lade in das Register C die Zahl 10
MVI C, 0A
3.-Aktion ausführen=addiere C zu Akkumulator Loop: ADD C
4.-dekrementiere das Zählerregister C
DCR C
82
Weiterentwicklung des SAP - der
5.-ist C <> 0, dann weiter bei 3
6.-ablegen des Ergebnisses bei 3020H
7.-fertig
JNZ
Loop
STA 3020H
HLT
Das Ergebniss wird zwar nirgendwo angezeigt, das kümmert jetzt aber nicht weiter. Was hier interessiert, ist die Instruktion JNZ - Jump if not Zero. Sie fordert zunächst einen Verstoß gegen das bisherige Prinzip, eine Instruktion nach der
anderen in aufsteigender Folge abzuarbeiten, indem einfach der PC nach jedem Befehl erhöht wird und so auf die nächste Instruktion im RAM zeigt. Daraus folgt, der PC muß beschreibbar sein, alle "Jump to address" Befehle machen nichts
anderes, als den PC mit einem neuen Wert zu beschreiben, von dem aus die Verarbeitung wieder in aufsteigender Adreßreihenfolge weiter geht.
Da der Programmspeicher 64 k RAM umfaßt, muß der PC ein 16 Bit Register sein. JNZ ist ein Beispiel für einen bedingten Sprung, wobei die Bedingung das Zero-Flag des F-Registers bildet. Dementsprechend gibt es noch die Instruktionen
JZ (Jump if Zero), JM (Jump if minus) und den absoluten Sprungbefehl JMP (Jump, no condition)
8.2.3 Übung : Handassemblierung
Assemblieren Sie das obige Programm anhand der Tabelle ab Adresse 2000H. Assemblieren heißt: Übersetzen der Mnemonics und Labels in Opcodes und Adressen
Adresse Hex
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
200A
200B
200C
Inhalt
3E
00
Mnemonic
MVI A, 0
Wie man diesem Assemblerlisting entnehmen kann, benötigen die einzelnen Befehle unterschiedlich viele Bytes im
Speicher. Der ADD C Befehl z.B. benötigt 1 Byte, der JNZ 2 Byte und der STA 3 Byte. Beim SAP gab es immer nur 1
Byte Befehle ! (4 bit Opcode und 4 bit Operand). Da das Instruktionsregister beim 8085 auch nur 8 bit breit ist, kann
also nicht jeder Befehl auf einmal vollständig geholt werden, d.h. die fetch-Phase ist nicht wie früher mit 3 Taktzyklen
abgeschlossen. Wie ein Befehlszyklus aus mehreren Maschinenzyklen (beim SAP war das noch das selbe !) aufgebaut
ist, wird nun am Beispiel des STA address erläutert:
Der Befehl STA bewirkt, daß der Inhalt des Akkumulators unter der direkten Adresse abgespeichert wird, die durch das
zweite und dritte Byte des Befehls angegeben ist. Im ersten Maschinenzyklus (M1) gibt die Zentraleinheit den Inhalt des
Programmzählers (PC) auf den Adreß-Bus, führt einen Zyklus MEMORY READ aus, wodurch aus dem Speicher der
Operationcode des neuen Befehls (STA) abgerufen wird. Das ist also bisher nichts anderes als unsere bekannte fetchPhase und der Opcode von STA steht im Instruktionsregister IR. In der 4. Taktperiode von M1 interpretiert die Ablaufsteuerung mittels des Befehlsdecodierers den Opcode und setzt das Signal, die Steuerleitung für STA auf high. Jetzt
Weiterentwicklung des SAP - der
83
sorgt die Kontrollmatrix dafür, daß 3 weitere Maschinenzyklen ausgeführt werden, zweimal MEMORY READ und
einmal MEMORY WRITE um die Adresse einzulesen, wo der Akkuinhalt abgelegt werden soll und um die Daten abzulegen.
Dafür inkrementiert der 8085 den PC, womit das nächste Byte des Befehls angesprochen wird und führt einen
MEMORY READ im Maschinenzyklus M2 mit der Adresse PC+1 aus. Der angesprochene Speicher stellt die adressierten Daten auf dem Datenbus für die CPU bereit. Der 8085 speichert diese Daten - das niederwertige Byte der Adresse
3020H, also die 20H - vorübergehend intern in der Zentraleinheit ab. Er benutzt dafür das Register Z, das nicht im
Blockschaltbild des 8085 eingetragen ist, weil der Programmierer keinen Zugriff darauf hat. Nun inkrementiert der 8085
den PC erneut auf die Adresse PC+2 und liest aus dem Speicher das nächste DatenByte aus (M3) welches das höherwertige Byte der direkten Adresse ist und legt es im internen Register W ab.
Jetzt hat der Prozessor alle drei Byte des STA-Befehls geholt und dafür bereits drei Maschinenzyklen benötigt. Die folgende Ausführung bedeutet, daß die in M2 und M3 eingeholten Daten auf den Adreßbus gelegt werden, worauf der
Inhalt des Akkumulators auf den Datenbus gebracht und anschließend ein Maschinenzyklus MEMORY WRITE ausgeführt wird (M4) Damit ist der Befehlszyklus beendet und es geht weiter bei M1 des nächsten Befehls.
8.3 Zeitablauf bei dem Befehl STA
M -Zyklus
T-Periode
Clk
Art des Masch.zyklus
Adreßbus
Datenbus
<------------------------ Befehlszyklus ------------------------>
<------ M1 ---->
<--- M2 --->
<--- M3 --->
<---- M4 ---->
T1 T2 T3 T4
T1 T2 T3
T1 T2 T3
T1 T2 T3
_
_
_
_
_
_
_
_
_
_
_
_
_
__/ \_/ \_/ \
__/ \_/ \_/ \
__/ \_/ \_/ \
__/ \_/ \_/ \_/ \
Speicher lesen
Die Adresse (Inhalt
des Pro-grammzählers) zeigt auf das
1. Byte (Operations-code) des Befehls
Operationscode des
Befehls
Speicher lesen
Speicher lesen
Die Adresse
(PC+1) zeigt
auf das 2.
Byte des Befehls
Die Adresse
(PC+2) zeigt
auf das 3.
Byte des Befehls
Niederwertiges
Byte der direkten Adresse.
Höherwertiges
Byte der direkten Adresse.
Speicher
schreiben
Die Adresse ist die
in M2 und M3 abgerufene direkte Adresse.
Inhalt des Akkumulators.
Zeitdiagramm STA
8.4 Erzeugen von Sign- und Zero-Flag
Die folgende Schaltung zeigt mit den Symbolen der früheren DIN-Norm, wie die Flags erzeugt werden können.
84
Weiterentwicklung des SAP - der
Schaltbild für die Erzeugung von Sign- und Zero-Flag
8.5 Blockdiagramm des 8085 (Intel Corporation)
Blockdiagramm des 8085 (Intel Corporation)
Weiterentwicklung des SAP - der
Anschlußbezeichnungen und Funktionen des 8085
85
86
Weiterentwicklung des SAP - der
Bezeichnung
A8 - A15
Nummer
21 - 28
Eingang E
Ausgang A
A
AD0 - AD7
12-19
E/A
ALE
30
A
S0, S1 und
IO-M/
29,33
34
A
RD/
32
A
WR/
31
A
READY
35
E
Funktion
Adressen-Bus: Die höherwertigen 8 Bits der Speicheradresse oder die 8
Bit der E/A Adresse; die Ausgänge sind während der Betriebszustände
HOLD HALT und RESET hochohmig
Gemultiplexter Adressen/Datenbus: Während der ersten Taktperiode
eines Maschinenzyklus stehen am Bus die niederwertigen 8 Bit der
Speicheradresse (oder die E/A-Adresse) an. In der zweiten und dritten
Taktperiode wird der Bus anschließend zum Datenbus.
Adressenspeicher-Freigabe: Das Signal tritt in der ersten Taktperiode
eines Maschinenzyklus auf und
ermöglicht, daß die Adresse in den integrierten Adressenspeichern
von Peripherie-Bausteinen ge
speichert wird. Die fallende Flanke des ALE-Signals ist so eingestellt, daß die Aufbau- und Haltezeiten der Adresseninformation
garantiert sind.
Die fallende Flanke von ALF kann auch zum Takten der StatusInformation verwendet werden. Der Ausgang ALE wird niemals hochohmig.
Maschinenstatus
IO-M/ S1
S0
Status
0
0
1
Speicher schreiben
0
1
0
Speicher lesen
1
0
1
ElAschreiben
1
1
0
E/A lesen
0
1
1
Operationscode-Abruf
1
1
1
lnterrupt-Quittung
*
0
0
Halt
*
X
X
Hold
*
X
X
Reset
*
= hochohmig (Tri-state)
X = undefiniert.
S1 kann als voreilendes RW/ -Statussignal verwendet erden. IO-M/, ,
S0 und S1 werden am Anfang eines Maschinenzyklus gültig und bleiben
es über den gesamten Zyklus. Die abfallende Flanke des ALESignals
kann zum Speichern der Zustände dieser Leitungen verwendet werden.
Lesen (Read): Ein L-Signal an RD/ gibt an, daß der ausgewählte Speicher- oder E/A-Baustein
gelesen werden soll und daß der Daten-Bus für die Daten-übertragung
zur Verfügung steht.
Der Ausgang ist in den Betriebsarten »Hold«, »Halt« und »Reset« hochohmig.
Schreiben (Write): Ein L-Signal an WR/ gibt an, daß am Daten-Bus
anstehenden
die Daten in den ange wählten Speicherplatz oder E/A-Kanal geschrieben
werden sollen. Die Daten werden mit der steigenden Flanke von WR/
übergeben. Während
der Betriebs arten »Hold«, »Halt« und »Reset« ist der Ausgang hochohmig.
Ein H-Signal an READY während eines Lese- oder Schreibzyklus zeigt
an, daß der Speicher oder der
Peripherie-Baustein zum Ausgeben oder Aufnehmen von Daten bereit
ist. Wenn der READY-Eingang L
Signal führt, wartet die Zentraleinheit über eine ganze Zahl von
Weiterentwicklung des SAP - der
HOLD
39
E
HLDA
38
A
INTR
10
E
INTA
11
A
RST 5.5
RST 6.5
9
8
E
RST 7.5
7
TRAP
6
E
RESET IN
36
E
87
Taktperioden, bis READY auf H-Pegel
übergeht, worauf der Lese- oder Schreibzyklus beendet wird.
HOLD zeigt an, daß eine andere Einheit den Adres sen- und Daten-Bus
anfordert. Nach dem Eintreffen
der HOLD-Anforderung gibt die Zentraleinheit den Bus frei, sobald die
augenblicklich ablaufende BusOperation beendet ist. Interne Operationen können weiterhin ablaufen. Der Mikroprozessor hat erst dann
wieder Zugang zum Bus, wenn das Signal HOLD zurückgenommen wird.
Sobald das HOLD-Signal
quittiert ist, werden die Adressen- und Daten-Leitungen sowie RD, WR
und IO-M hochohmig.
Quittung von HOLD. Das Signal zeigt an, daß die Zentraleinheit eine
HOLD-Anforderung empfangen
hat und den Bus in der nächsten Taktperiode frei geben wird. HLDA
geht auf L-Signal über, sobald die
HOLD-Anforderung zurückgenommen ist. Die Zentraleinheit übernimmt den
Bus eine halbe Taktperiode nach dem Obergang von HLDA auf L-Pegel.
Unterbrechungs-Anforderung: Der Eingang wird als allgemeiner Interrupteingang verwendet. Er wird nur
während der vorletzten Taktperiode eines Befehls abgefragt sowie
während der Zustände »Hold« und
»Halt«. Wenn der Eingang aktiv ist, wird das Inkrementieren des Programmzählers (PC) gesperrt und
INTA ausgegeben. Während dieses Zyklus kann ein RESTART- oder CALLBefehl für den Sprung zu dem
lnterrupt-Bedienungsprogramm eingefügt werden. Der Eingang INTR wird
über Software freigegeben
und gesperrt. Er wird ferner durch <>Reset« sowie unmittelbar nach
Annahme einer Unterbrechungsanforderung gesperrt.
INTERRUPT-Quittung: Der Ausgang wird in dem Befehlszyklus nach Annahme eines INTR-Signals anstelle von RD verwendet (und hat den gleichen Zeitablauf). Er kann zur
Aktivierung des Unterbrechungs-Steuerbausteins SAB 8259A
oder eines an deren lnterrupt-Kanals verwendet werden.
RESTART-Interrupt: Diese drei Eingänge haben den
gleichen Zeitablauf wie INTR, bewirken jedoch, daß automatisch ein interner RESTART
-Befehl eingefügt wird. Die Priorität dieser lnterruptEingänge ist so geordnet, wie in nachfolgender Tabelle
gezeigt. Diese lnterrupts haben eine höhere Priorität,
als INTR. Außerdem können sie durch Verwendung des Befehls SIM einzeln maskiert werden.
Der lnterrupt-Eingang TRAP ist ein nicht maskierbarer
RESTART-lnterrupt-Eingang. Er wird gleichzeitig mit INTR
oder RST 5.5-7.5 abgefragt und von keiner Maske oder
lnterrupt-Freigabe beeinflußt. Er hat von allen lnterrupt-Eingängen die höchste Priorität (siehe nachfolgende
Tabelle)
Ein L-Signal an diesem Eingang setzt den Programmzähler
auf 9 und das lnterrupt-Freigabe- sowie HLDA Flipflop
zurück. Der Daten- und Adressen-Bus sowie die Steuerleitungen sind, solange RESET ansteht hochohmig. Da RESET
asynchron arbeitet, können die internen Register und
88
Weiterentwicklung des SAP - der
RESET QUT 3
A
Xi, X2
1, 2
E
CLK
37
A
SID
5
E
SOD
4
A
Vcc
V55
40
20
Flags des Prozessors durch RESET mit undefinierbaren
Ergebnissen verändert werden. RESET IN ist ein SchmittTrigger-Eingang und ermöglicht den Anschluß einer R-CKombination zur RESET-Verzögerung beim Zuschalten der
Versorgungsspannung. Die Zentraleinheit bleibt so lange
zurückgesetzt, wie RESET IN ansteht
Zeigt an, daß die Zentraleinheit rückgesetzt wird. Dieser Ausgang kann als System-Rücksetzsignal verwendet
werden. Das Signal ist mit dem Prozessortakt synchronisiert. Seine Dauer erstreckt sich über eine ganze Zahl
von Taktperioden
An X1 und X2 wird ein Quarz, eine LC- oder eine RC Kombination zur Anregung des internen Taktgenerators angeschlossen. X1 kann auch als Eingang für einen externen
Takt verwendet werden. Die Eingangsfrequenz wird halbiert und ergibt die interne Arbeitsfrequenz des Prozessors
Taktausgang zur Verwendung als Systemtakt. Die Periodendauer des Signals CLK beträgt das Doppelte der EingangsPeriodendauer an X1, X2.
Eingang für serielle Datenübertragung. Der Zustand dieses Eingangs wird bei jeder Ausführung eines RIM-Befehls
in das Bit 7 des Akkumulators über tragen.
Ausgang für serielle Datenübertragung. Der Ausgang SOD
wird entsprechend der Form des Befehls SIM gesetzt bzw.
rückgesetzt
Versorgungsspannung (+5V>
Masse (0V)
8.6 Der Befehlssatz des 8085
Befehl
ACI
Operanden
A, data, Cy
ADC reg
A, r, Cy
ADC M
A, M, H&L,
Cy
ADD reg
A, r
ADD M
A, M, H&L
ADI
A, B2
ANA reg
A, r
ANA M
A, M, H&L
ANI
A, data
CALL
PC, M, SP, adr
CC
PC, M, SP, adr
CM
PC, M, SP;adr
Kurzbeschreibung
Byte 2 wird unter Berücksichtigung des Übertrags zum
Akku-Inhalt addiert
Der Akku-Inhalt wird unter Berücksichtigung des Übertrags zum adressierten Registerinhalt addiert und wieder im
Akku gespeichert
Der Akku-Inhalt wird unter Berücksichtigung des Übertrags zum Inhalt der durch H&L adressierten Speicherzelle
addiert und wieder im Akku gespeichert
Der Akku-Inhalt wird zum adressierten Registerinhalt
addiert und wieder im Akku gespeichert
Der Akku-Inhalt wird zum Inhalt der durch H&L adressierten Speicherzelle addiert und wieder im Akku gespeichert
Byte 2 wird zum Akku-Inhalt addiert
Bitweise UND-Verknüpfung des Akkus mit dem Registerinhalt
Bitweise UND-Verknüpfung des Akkus mit dem durch
H&L adressierten Speicherzelle
Bitweise UND-Verknüpfung des Akkus mit Byte 2
unbedingter Unterprogrammaufruf mit Ablage der Rücksprungadresse im Stack-Register
bedingter Unterprogrammaufruf mit Ablage der Rücksprungadresse im Stack-Register
Bei Sign-Bit = 1 wird das Programm an adr fortgesetzt
Bytes
2
T-States
7
engl. Beschreibung
add immediate with Carry
1
4
add Register with Carry
1
7
add Memory with Carry
1
4
add Register
1
7
add Memory
2
7
add immediate
1
4
AND Register
1
7
AND Memory
2
7
AND immediate
3
18
call unconditional
3
9/18
call conditional
3
11/17
call on minus
Weiterentwicklung des SAP - der
89
CMA
A
Bildung des 1er Komplements des Akkus
1
4
complement accumulator
CMC
Cy
Übertragbit komplementieren
1
4
complement carry
CMP reg
A, r
Vergleiche Akku mit Registeri
1
4
compare register
CMP M
A, M, H&L
1
7
compare memory
CNC
PC, M, SP, adr
Vergleiche Akku-Inhalt mit der durch H&L adressierten
Speicherzelle
Bei Carry-Bit = 0 wird das Programm an adr fortgesetzt
3
11/17
call on no carry
CNZ
PC, M, SP, adr
Bei Zero-Bit = 0 wird das Programm an adr fortgesetzt
3
11/17
call on no zero
call on positive
CP
PC, M, SP, adr
Bei Sign-Bit = 0 wird das Programm an adr fortgesetzt
3
9/18
CPE
PC, M, SP, adr
Bei Paritäts-Bit = 1 wird das Programm an adr fortgesetzt
3
9/18
CPI
A, data
Vergleiche Akku-Inhalt mit Byte 2
2
7
CPO
PC, M, SP, adr
Bei Paritäts-Bit = 0 wird das Programm an adr fortgesetzt
3
9/18
call on odd
CZ
PC, M, SP, adr
Bei Zero-Bit = 1 wird das Programm an adr fortgesetzt
3
11/17
call on zero
DAA
A
1
4
decimal adjust akkumulator
DAD
rp, H&L
1
10
add register pair to H&L
DCR reg
r
Umwandlung des Akku-Inhalts in eine 2stellige Dezimalzahl
der Inhalt des Registerpaares wird zum Inhalt von H&L
addiert
der Registerinhalt wird um 1 verringert
1
4
decrement register
DCR M
M, H&L
1
10
decrement memory
DCX
rp
der Inhalt der durch H&L adressierten Speicherzelle wird
um 1 verringert
der Inhalt des Registerpaares wird um 1 verringert
1
6
DI
nach diesem Befehl ist die Interruptverarbeitung gesperrt
1
4
disable interrupt
EI
eine Interruptanforderung wird nach dem nächsten Befehl
bedient
der Prozessor wird angehalten
1
4
enable interrupt
1
5
halt
Übernahme der Daten aus einer E/A-Schnittstelle, die
durch B2 adressiert ist
erhöhe den Inhalt des Registers um 1
2
10
input
HLT
IN
A, data
INR reg
r
INR M
M, H&L
INX
JC
call on even
compare immediate
decrement register pair
1
4
increment register
1
10
increment memory
rp
erhöhe den Inhalt der von H&L adressierten Speicherzelle
um 1
der Inhalt des Registerpaares wird um 1 erhöht
1
6
PC, adr
springe, wenn Übertragsflag gesetzt ist
3
7/10
JM
PC, adr
springe, wenn Vorzeichenflag gesetzt ist (negativ)
3
7/10
jump minus
JMP
PC, adr
unbedingter Sprung zu der spezifizierten Adresse
3
10
jump unconditional
JNC
PC, adr
springe, wenn Übertragsflag nicht gesetzt ist
3
7/10
JNZ
PC, adr
springe, wenn Nullflag nicht gesetzt ist
3
7/10
jump non zero
JP
PC, adr
springe, wenn Vorzeichenflag nicht gesetzt ist (positiv)
3
7/10
jump plus
JPE
PC, adr
springe, wenn Paritätsflag gesetzt ist
3
7/10
jump even
JPO
PC, adr
springe, wenn Paritätsflag nicht gesetzt ist
3
7/10
jump odd
JZ
PC, adr
springe, wenn Nullflag gesetzt ist
3
7/10
jump zero
increment register-pair
jump carry
jump non carry
LDA
adr, A
lade Akku mit dem Inhalt der adressierten Speicherzelle
3
13
load accumulator direct
LDAX
rp, A
1
7
load accumulator indirect
LHLD
adr, H&L
3:
16
load H&L direct
LXI
rp, adr
3
10
load register pair immediate
MOV r
r1, r2
lade den Akku mit dem Inhalt der durch das Registerpaar
adressierten Speicherzelle
lade H&L mit der durch B2 B3 und durch (B2 B3)+1
adressierten Speicherzelle
lade Registerpaar mit Byte 2 und Byte 3. Registerpaar kann
sein: BC, DE, HL
der Inhalt von r2 wird nach r1 geladen
1
5
move register
MOV M,r
r, M, H&L
1
7
move from memory
MOV r,M
M, r, H&l
1
7
move to memory
MVI r
r, data
r wird mit dem Inhalt der durch H&L adressierten Speicherzelle geladen
die durch H&L adressierte Speicherzelle wird mit dem
Inhalt von r beschrieben
lade r mit Byte 2
MVI M
M, data, H&L
beschreibe den durch H&L adressierten Speicherplatz mit
Byte 2
keine Operation
2
1
4
no operation
ORA r
A, r
1
4
OR register
ORA M
A, M, H&L
1
7
OR memory
ORI
A, data
bitweise ODER-Verknüpfung des Akkus mit dem Inhalt
des Registers
bitweise ODER-Verknüpfung des Akkus mit dem Inhalt
der durch H&L adressierten Speicherzelle
bitweise ODER-Verknüpfung des Akkus mit Byte 2
2
7
OR immediate
NOP
2
7
move immediate
10
move to memory immediate
90
Weiterentwicklung des SAP - der
OUT
A, data
PCHL
HL, PC
POP PSW
M, SP, A,
Flags
rp, SP, M
POP rp
Ausgabe des Akku-Inhalts an die durch B2 adressierte E/ASchnittstelle
Programm wird an der Stelle fortgesetzt, die in H&L steht
2
10
output
1
5
H&L to program counter
lade den Akku und die Flags in der spezifizierten Weise
aus dem Stack-Register
lade das Registerpaar in der spezifizierten Weise aus dem
Stack-Register
verschiebe den Inhalt des Akkus und den Zustand der Flags
ins Stack-Register
1
10
pop processor status word
1
10
pop
1
11
push prozessor status word
PSW
M, SP, A,
Flags
PUSH rp
rp, M, SP
verschiebe den Inhalt des Registers in das Stack-Register
1
11
push
RAL
A
Linksrotation des Akku-Inhaltes über das Carry-Flag
1
4
RAR
A
Rechtssrotation des Akku-Inhaltes über das Carry-Flag
1
4
RC
PC,M, SP,
Flags
1
10
RET
PC,M, SP,
Flags
?
Bei Carry-Bit = 1 wird das Programm an der Adresse
fortgesetzt, die in dem über den Stapelzeiger adressierten
Wort steht
Das Programm wird an der Adresse fortgesetzt, die in dem
über den Stapelzeiger adressierten Wort steht
rotate akkumulator left through
carry
rotate akkumulator right through
carry
return on carry
1
10
return unconditional
PUSH
RIM
RLC
A
Linkssrotation des Akku-Inhaltes
1
4
rotate accumulator left
RM
PC,M, SP,
Flags
1
11
return on minus
RNC
PC,M, SP,
Flags
1
11
return on no carry
RNZ
PC,M, SP,
Flags
1
11
return on no zero
RP
PC,M, SP,
Flags
1
11
return on positiv
RPE
PC,M, SP,
Flags
1
11
return on parity even
RPO
PC,M, SP,
Flags
Bei Carry-Bit = 1 wird das Programm an der Adresse
fortgesetzt, die in dem über den Stapelzeiger adressierten
Wort steht
Bei Carry-Bit = 0 wird das Programm an der Adresse
fortgesetzt, die in dem über den Stapelzeiger adressierten
Wort steht
Bei Zero-Bit = 0 wird das Programm an der Adresse fortgesetzt, die in dem über den Stapelzeiger adressierten Wort
steht
Bei Sign-Bit = 0 wird das Programm an der Adresse fortgesetzt, die in dem über den Stapelzeiger adressierten Wort
steht
Bei Parity-Bit = 1 wird das Programm an der Adresse
fortgesetzt, die in dem über den Stapelzeiger adressierten
Wort steht
Bei Parity-Bit = 0 wird das Programm an der Adresse
fortgesetzt, die in dem über den Stapelzeiger adressierten
Wort steht
Rechtssrotation des Akku-Inhaltes
1
11
return on parity odd
1
4
rotate accumulator right
1
11
restart
1
11
return on zero
1
4
subtract register with borrow
1
7
subtract memory with borrow
2
7
subtract immediate with borrow
3
16
store H&L direct
RRC
A
RST
M, SP, PC
SIM
Sprungbefehl mit fester Adressierung (NNN) im 8 Bit
Abstand.. Die Adreßbits NNN sind Bit 3,4 und 5 in der 16
Bit Adresse. Alle anderen Bits sind 0.
PC,M, SP,
Bei Zero-Bit = 0 wird das Programm an der Adresse fortFlags
gesetzt, die in dem über den Stapelzeiger adressierten Wort
steht
A, r, Cy
der Registerinhalt wird unter Berücksichtigung des CarryFlags vom Akkumulator subtrahiert.
A, M, H&L,Cy der Inhalt der durch H&L adressierten Speicherzelle wird
unter Berücksichtigung des Carry-Flags vom Akkumulator
subtrahiert
A, data, Cy
Byte 2 wird unter Berücksichtigung des Carry-Flags vom
Akkumulator subtrahiert
adr, H&L
der Inhalt von H&L wird an der angegeben Adresse gespeichert
?
SPHL
H&L, SP
Der Inhalt von H&L wird in den Stack-Pointer geladen
1
5
move H&L to SP
STA
adr, A
3
13
store accumulator direct
STAX
rp, M, A
1
7
store accumulator indirect
STC
Cy
der Akku-Inhalt wird in der mit B2 und B3 adressierten
Speicherzelle gespeichert
der Akkumulatorinhalt wird unter der durch rp spezifiezierten Adresse gespeichert
Übertrags-Bit setzen
1
4
set carry
SUB reg
A, r
Der Inhalt von r wird vom Akku-Inhalt subtrahiert
1
4
subtract register
RZ
SBB reg
SBB M
SBI
SHLD
Weiterentwicklung des SAP - der
SUB M
A, M,H&L
SUI
XCHG
91
1
7
subtract memory
A, data
der Inhalt der durch H&L adressierten Speicherzelle wird
vom Akkumulator subtrahiert
Byte 2 wird vom Akku-Inhalt subtrahiert
2
7
subtract immediate
H&L, D&E
Vertausche Inhalt von H&L mit D&E
1
4
exchange H&L with D&E
XRA reg
A, r,
1
4
XRA M
A, H&M, M
1
7
Exclusive Or register with
accumulator
Exclusive Or memory with
accumulator
XRI
A, data
2
7
XTHL
H&L, SP, M
Akku-Inhalt wird mit Inhalt von Register r exklusiv-oder
verknüpft und im Akku gespeichert
Die über H&L Register adressierte Speicherzelle wird mit
Akku-Inhalt exklusiv-oder verknüpft und im Akku gespeichert
Akku-Inhalt wird mit B2 exklusiv-oder verknüpft und im
Akku gespeichert
Vertausche den Inhalt des Registerpaares H&L mit dem
spezifizierten Inhalt des Stackregisters.
1
18
Exclusive Or register with
accumulator
exchange stack top with H&L
8.7 Vergleich SAP - 8085 Befehlssatz
•
•
•
•
Der Opcode benötigt 1 Byte (SAP nur 4 Bit).
Der Spalte T-States kann man entnehmen, daß die Befehle sehr unterschiedliche
Zeit benötigen. (4-18)
Es gibt verschiedene Adressierungsarten:
• Register addressing - der Operand des Befehls ist der Inhalt eines Registers. Beispiel: ADD B addiert zum Inhalt des Akkumulators den Inhalt von
Register B.
• Direct addressing - der Operand ist die Adresse, auf deren Inhalt sich der
Befehl bezieht. Beispiel: LDA address oder STA address.
• Immediate addressing - statt der Adresse wird als Operand der Wert selbst
angegeben. Beispiel: MVI A, byte läd den Datenwert in den Akkumulator, der
im Speicher direkt hinter dem Opcode von MVI abgelegt ist.
• Implied addressing - bedeutet, daß die Adresse des zu bearbeitenden Datenwortes schon im Opcode enthalten ist. Beispiel: RAL (Rotate arithmetic
left), RAR und RET.
Es gibt Befehle, die nur 1 Byte zur vollständigen Spezifikation benötigen
(z.B. ADD B). Diese benötigen wegen der kürzeren Fetch-Phase nur 4 T-States.
Zwei Byte Befehle (z.B. IN byte, also Einlesen eines Datenwortes von einer
Schnittstelle) benötigen eine zusätzlichen Fetch-Phase und deshalb 7-10 TStates.
8.8 Ein Assemblerprogramm
Der Übergang vom Betriebssystem zu den Anwenderprogrammen ist von ersteren abhängig. Wir treffen folgende Konventionen:
• Die erste Anweisung (Einsprungpunkt vom Betriebssystem) ist durch das Label START markiert.
• Ein Programm wird mit einer Unendlosschleife beendet.
Das folgende Programm fügt ein Eingabebyte zu einer Liste von Bytes, die ab 41 H beginnt und deren Länge in 40 H
steht, wenn die Eingabe noch nicht in der Liste enthalten ist.
START
LXI
H,40H Hier geht es los
92
Weiterentwicklung des SAP - der
MOV
INX
LDA
B,M
H
30H
Länge der Liste
Zeiger auf Start der Liste
Hole Eingabe
M
DONE
Ist Eingabe = Element der Liste
ja, dann Ende
INX
DCR
JNZ
MOV
LXI
INR
H
B
SRLST
M,A
H,40H
M
nein, gehe zum nächsten Element
JMP
DONE
SRLST: CMP
JZ
DONE:
sind alle Elemente geprüft
ja, füge Eingabe zur Liste
Addiere 1 zur Listenlänge Ende des Programms
8.9 Assemblieranweisungen
8.9.1 Steuerung des Assembliervorganges
Anweisung
DATA
DB
DW
DS
EQUATE
DEFINE
ORIGIN
RESERVE
Beschreibung
Eingabe fester Daten (Konstante) in den Speicher
wie DATA für Bytes (define byte)
wie DATA für Wörter (define word)
Reservierung für Variable (define storage)
Benennung von Konstanten (keine Speicherplatzbelegung)
wie EQUATE
Angabe der Stelle im Speicher ab der a~ diesem Befehl Maschinenbefehle und Daten im Speicher abgelegt werden
Zuweisung eines Namens an einen Speicherbereich (keine Speicherplatzbelegung)
8.9.2 Anweisungen
END
LIST
NAME
TITLE
PAGE
SPACE
PUNCH
Ende des Textes des Quellprogramms
Ausgabe eines Übersetzungsprotokolls (Listing)
Name des Programms, erscheint im Listing als Header
wie Name
Seitenvorsprung im Listing
Zeilenvorschub im Listing
Druck des Objectcodes auf dem Lochstreifenstanzer
Beispiele
KONST1
NL
WORT
LOGO
DATA
DB
DW
DB
23
13,10,´§´
32000
´FBI´
Weiterentwicklung des SAP - der
HOCHSCHUL
E
ADREND
CR
LF
MAXIMUM
MINIMUM
ROM
START
BUFFERA
ADRESSE
DATA
EQU
EQU
EQU
EQU
EQU
ORG
ORG
RESERVE
ORG
RESERVE
NAME
LIST
SPACE
END
´FH Darmstadt´, 13, 10
´FB Informatik´, 13, 10, ´$´
*
13
10
1000
MAXIMUM - 500
1000H
100H
1000H
HOSCHSCHULE
´Titel meines Programms´
4
93
94
Die klassische Von Neumann-
9 Die klassische Von Neumann-Maschine
1946 stellten Burks, Goldstine und von Neumann den Entwurf für eine Allzweck-Rechenmaschine zusammen.
9.1 Die Prinzipien
1.
Der Rechner besteht zumindest aus Speicher, Rechenwerk, Steuerwerk und Ein/Ausgabegeräten (Minimalsystem).
2.
Die Rechenanlage führt ein gespeichertes Programm aus, das aus einer Folge von Befehlen besteht, d.h. die Struktur
der Anlage ist unabhängig von dem bearbeiteten Problem. Das Problem wird durch einen austauschbaren Inhalt des
Speichers beschrieben, die Rechenanlage ist also speicherprogrammierbar.
3.
Befehle und Daten liegen in einem gemeinsamen 'Hauptspeicher'.
4.
Der Hauptspeicher besteht aus einer Reihe von Zellen gleicher Größe, die fortlaufend durchnumeriert werden; die
Nummern heißen Adressen. Auf diese Adressen wird im Programm Bezug genommen, um Informationen abzulegen
oder zu lesen.
5.
Das Programm ist im Hauptspeicher unter konsekutiven Adressen a, a+1, a+2, ... gespeichert. Im allgemeinen wird
nach dem Befehl in der Zelle mit der Adresse a der unter Adresse a+1, dann der unter Adresse a+2 u.s.w. ausgeführt
(Reihenfolge der Ausführung).
6.
Jeder Befehl enthält einen Operator und evtl. eine Angabe zur Bezeichnung eines Operanden. Diese Angabe ist in
der Regel nicht der Operand, sondern ein Verweis in Form der Adresse der Zelle, die den Operanden enthält. D.h.
das Programm kann unabhängig von den Werten der Operanden formuliert werden.
7.
Von der in 4. festgelegten natürlichen Reihenfolge weicht der Automat nur dann ab, wenn ein sogenannter Sprungbefehl vorliegt.
Die Tatsache, daß die Anweisungen eines Programms linear geordnete Teilfolgen bilden, erlaubt auf der HardwareEbene die Anwendung des Befehlszählerprinzips und damit die Konstruktion einer einfachen Kontrolleinheit.
(Das Befehlszählerprinzip besagt, daß nach Befehl bei der Adresse N der Befehl mit der Adresse N+1 drankommt.)
"Das Operationsprinzip der von Neumann-Architektur besteht darin, daß eine Operation grundsätzlich immer auf den
Inhalt der in der Operationsanweisung (dem Maschinenbefehl) referierten Speicherzelle (Register) angewandt wird, ohne
Anschauung der Tatsache, was der jeweilige Inhalt der Speicherzelle bedeutet. Eine Speicherzelle wird durch die Angabe einer Adresse referiert, der Inhalt einer Zelle kann ein Maschinenbefehl oder ein skalarer Datenwert sein. Man kann
dieses Operationsprinzip als ein Prinzip des minimalen Speicheraufwandes bezeichnen."1
Die Von Neumann Maschine kann einem Speicherzelleninhalt nicht ansehen, was er repräsentiert - einen Befehl oder
einen skalaren Datenwert? Die Interpretation einer Informationseinheit erfolgt nach folgendem Muster:
•
die Maschine entscheidet auf Grund des Zustandes, in dem sie sich zum Zeitpunkt der Interpretation befindet, ob sie
eine Bitkette als Befehl oder Datum interpretiert (s. Holezyklus und Ausführungszyklus - Ringzähler der Ablaufsteuerung).
•
die Interpretation eines Datums geschieht auf Grund des Typs der Anweisung, dessen Argument das Datum ist.
1 Giloi W.K., Rechnerarchitektur, S.35
Schwächen der Von Neumann-
95
10 Schwächen der Von Neumann-Maschine
Die Von Neumann Maschine besitzt eine Architektur des minimalen Hardware-Aufwandes. Die "stürmische Entwicklung auf der Bauelemente-Seite berechtigt zu der Aussage, daß Rechnerarchitekturen, die unter dem Aspekt der Hardware-Minimalität entwickelt wurden, nicht mehr zeitgemäß sind."1 Warum eigentlich ?
•
Die Verarbeitung von strukturierten Datentypen (simples Beispiel: die Berechnung des arithmetischen Mittels von
einem Zahlen-Array(1..n)) macht eine entsprechend große Zahl von Speicherzugriffen notwendig, nicht nur auf die
Array-Elemente selbst, sondern auch auf den jeweils erforderlichen expliziten Befehl zum Holen des Elements. Hinzu kommt der Aufwand für die Interpretation dieser Befehle, für die Indexoperationen und Adreßberechnungen.
"Dies war nur solange zu rechtfertigen, wie das Holen eines Speicherworts, die Befehlsinterpretation einschließlich
einer Adreßberechnung, die Indexoperationen eine im Verhältnis zur eigentlichen datentransformierenden Operation
kurze Zeit benötigte. Während dies bei den Rechnern der 2. Generation noch der Fall war, gilt dies heute in keiner
Weise mehr, wo für die arithmetischen Operationen nicht mehr Zeit als für die genannten organisatorischen Operationen aufgewendet werden muß."2
•
Eine Architektur des minimalen Hardware-Aufwandes erlaubt nicht die Vervielfachung der HardwareBetriebsmittel mit dem Ziel der Parallelarbeit.
•
Eine Architektur des minimalen Hardware-Aufwandes erlaubt nicht den Einbau der zur Erzielung einer Ausfalltoleranz notwendigen Redundanzen.
10.1 Der von Neumann Flaschenhals
Zur Erinnerung: Der OUT-Befehl des SAP überträgt den Inhalt des Akkumulators an das Output-Display. Das gilt ebenso für den 8085, nur daß als Ausgabeeinheit ein Bildschirm angeschlossen werden kann. Nehmen wir an, im Speicher
des 8085 steht ein Text, der am Bildschirm ausgegeben werden soll. Betrachten wir formal, welche Schritte durchgeführt
werden müssen, um den Text der Länge n-Zeichen am Bildschirm auszugeben:
1.
2.
3.
4.
5.
6.
7.
Loop:
Ende:
Die Startadresse des Textes ins MAR schreiben
Memory lesen und in Akkumulator ablegen
Akkumulatorinhalt mit OUT-Befehl an den Bildschirm schicken.
Testen, ob alle Zeichen ausgegeben sind, wenn ja, -> Ende
Nein: MAR inkrementieren.
Weiter bei Loop
Fertig.
Es soll hier nicht gezeigt werden, wie das Maschinenprogramm aussieht. Es soll deutlich werden, daß die Daten des
Speichers erst in den Akkumulator geladen werden müssen, bevor sie an ein anderes Gerät weitergegeben werden können. Dazu gehört die Adreßbestimmung (MAR inkrementieren) für jedes einzelne Datenwort. Analog verhält es sich
beim Einlesen eines Zeichens (z.B. von der Tastatur) und Ablegen im Speicher. In einer von Neumann-Maschine müssen die Daten vom Eingabe- zum Ausgabegerät immer den Umweg über die CPU nehmen. Das nennt man den von Neumann Flaschenhals:
"In seiner einfachsten Form besteht ein von Neumann-Rechner aus drei Teilen: einer ... CPU, einem Speicher und einem
Verbindungsweg, der ein einzelnes Wort zwischen CPU und Speicher (oder eine Adresse zum Speicher) transportieren
kann. Ich möchte diesen Weg den von Neumann-Flaschenhals nennen. Die Aufgabe eines Programms ist es, den Inhalt
des Speichers zu verändern. Berücksichtigt man, daß die Aufgabe dadurch gelöst werden muß, daß man einzelne Worte
hin und zurück durch den von Neumann-Flaschenhals pumpt, so versteht man den Grund für diesen Namen. Ironischer1 Giloi W.K., Rechnerarchitektur, S.10
2 Giloi W.K., Rechnerarchitektur, S.11
96
Schwächen der Von Neumann-
weise besteht ein Großteil des Verkehrs in diesem Flaschenhals nicht aus nützlichen Daten, sondern nur aus den Namen
von Daten, wie auch aus Operationen und Daten, die benötigt werden, um solche Namen zu berechnen. Bevor ein Wert
aber diesen Weg gesandt werden kann, muß seine Adresse in der CPU vorhanden sein; diese muß dazu entweder vom
Speicher über den Verbindungsweg zur CPU gesandt oder von der CPU generiert werden. Wird die Adresse vom Speicher zu CPU gesandt, so muß deren Speicheradresse zunächst vom Speicher zur CPU gesandt oder in der CPU generiert
worden sein, und so weiter. Wird die Adresse andererseits von der CPU generiert, so geschieht das entweder aufgrund
einer festen Regel (z.B. "Addiere 1 zum Inhalt des Befehlszählers") oder aufgrund eines Befehls, der über den Datenweg
zur CPU gesandt worden war, in welchem Falle dessen Adresse über den Weg gesandt worden sein mußte.... und so
weiter."1
Es wurde eine Reihe von Verfahren entwickelt, um die Auswirkungen dieses Flaschenhalses zu minimieren. Sie sind
Gegenstand des nächsten Kapitels.
1 Backus J,Can Programming be Liberated from the von Neumann Style?, CACM 21, zitiert bei Giloi W.K., Rechnerarchitektur, S.37
11 Steigerung der Rechnerleistung
11.1 Fetch and Overlap
Dieses Verfahren wurde z.B. beim Intel 8080/85 realisiert und basiert auf folgender Überlegung: Wenn die Ausführungsphase eines Befehls nicht den externen Daten/Adressbus benötigt, sondern nur die ALU und den internen Datenbus, dann kann man den Daten/Adreßbus schon für andere Aufgaben benutzen.
Man kann also die Ausführung eines Programmes beschleunigen, wenn man den nächsten Befehl vorbereitet während
ein Befehl gerade ausgeführt wird. Dieses Verfahren nennt man fetch-execute overlap.
Ein Beispiel soll das erläutern:
Zwei Befehle, ADD B, und MOV B,A sollen nacheinander ausgeführt werden:
Clock
ADD B
--___|
--___|
--___|
--___|
--___|
--___|
--___|
--___|
T1
PC OUT
T2
PC+1
-> PC
T3
INSTR
-> IR
T4
B ->
TMP
T1
T2
A+TMP
-> A
PC+1
-> PC
T3
T4
INSTR
-> IR
A ->
TMP
MOV B,A
PC OUT
1
ADD Timing Diagramm
In den ersten drei T-States wird der Opcode für die ADD B Instruktion geholt. In T4 wird der Inhalt des Registers B in
das temporäre Register geladen. Während des zweiten Maschinenzyklus von ADD B beginnt die Hole-Phase des Befehls
MOV B,A.
Während T1 wird der Inhalt des Programmzählers an das Memory übertragen. Während T2 wird der ADD B Befehl
vollendet, indem der Inhalt des Akkumulators zu dem temporären Register addiert und der Inhalt wieder im Akkumulator abgelegt wird. Für die Addition in T2 wird der interne Bus benötigt - das Inkrementieren des Befehlszählers benötigt
jedoch nicht den Datenbus und kann deshalb zu diesem Zeitpunkt durchgeführt werden. Der ADD Befehl benötigt also
statt 6 T-States real nur 4. Das gilt für den ADD Befehl immer, unabhängig von dem folgenden Befehl, weil während der
Hole-Phase des nächsten Befehls noch nicht das Ergebnis des ADD-Befehls benötigt wird.
11.2 Pipeline
Betrachtet man den Zeitablauf des STA-Befehls in Kapitel 8, so kann man den Befehlszyklus unterteilen in Befehl holen
(in M1) - Operand holen (in M2 + M3) - Befehl ausführen (in M4). Nehmen wir an, daß alle drei Phasen ungefähr
gleichlang sind (das wird erreicht zum Beispiel durch Einsatz eines CACHE-Memories), kann man daran denken, drei
solche Bearbeitungszyklen überlappt auszuführen derart, daß die drei Zyklen jeweils um eine Phase verschränkt werden.
Das setzt für jede der Phasen eine autonome Bearbeitungseinheit voraus, verlangt also, das Prinzip des minimalen Hardwareaufwandes zu verlassen.
Das Prinzip läßt sich wie folgt beschreiben:
BH = Befehl holen
OH = Operanden holen
1 Vgl. Malvino, Digital Computer Electronics, S.230
98
Inhaltsverzeichnis
BA = Befehl ausführen
Befehl
Nr.
i
i+1
i+2
BH
OH
BA
.----------.----------.----------.
--------------------> t
.----------.----------.----------.
.----------.----------.----------.
Man kann sich dieses Verfahren als ein Fließband vorstellen. Während Befehl i+2 sich in der Phase Befehl holen befindet, holt sich der Befehl i+1 seine Operanden und der Befehl i wird gerade ausgeführt. Der Effekt ist, daß in jeder Phase
ein Befehl abgearbeitet und somit eine dreifache Arbeitsgeschwindigkeit erreicht wird. Dies gilt aber nur, wenn in einem
Programm keine Sprungbefehle enthalten sind. Nehmen wir an, der Befehl i sei ein Sprungbefehl: der normale Befehlsfluß wird unterbrochen und der Befehl i+1 kann erst geholt werden, wenn der Befehl i vollständig abgearbeitet
worden ist. Trotz dieser Schwierigkeiten wurde das Prinzip der Pipelines in moderneren Rechnern perfektioniert. Es
werden ganze Pipelines parallel aufgebaut, also die Befehle für beide Ergebnisse einer Bedingung (Branch Not Equal .. )
vorsorglich geholt, und die Pipeline, die nicht verwendet wird, wird wieder verworfen, wenn das Ergebniss der Bedingung vorliegt.
11.3 Erhöhung der Taktfrequenz der Prozessoren
Im Zuge der Hardwareentwicklung wurde es möglich, die CPU um ein vielfaches schneller zu takten. Während ein PC
mit Intel 8086 Prozessor mit 4,77 MHz betrieben wurde, laufen heutige PC´s mit über 300 MHz. Taktfrequenzen von 1
GHz werden bereits anvisiert. Unabhängig von sonstigen Verbesserungen der Prozessorleistung bedeutet dies, daß ein
Befehl entsprechend der Taktfrequenz schneller abgearbeitet wird. Bezüglich der Erläuterungen in Kapitel 2 bedeutet
dies, daß die Register mit einem Bruchteil der Setup- und Holdtime auskommen müssen. Der Alpha Chip von DEC wird
mittlerweile mit einer Taktfrequenz von 600 MHz betrieben. Die Chip-Entwickler sind also schon sehr nahe an der
Grenze des physikalisch machbaren mit Silizium als Grundstoff angelangt.
11.4 Erhöhung der Datenbreite der Prozessoren
Die Erweiterung der internen Datenbreite von 8 über 16, 32, 64 bis 128 Bit bei den Mikroprozessoren erhöht die Rechenleistung ganz erheblich, weil gegebenenfalls mehrere Instruktionen in einem Maschinenzyklus auf einmal geholt
werden können (für den CALL Befehl benötigt der 8085 immerhin 3 Maschinenzyklen, nur um den Befehl zu holen).
11.5 DMA - Direct Memory Access
Mit einem Befehl (IN beim 8085) werden Daten von einem Peripheriegerät (Tastatur, Diskette, Festplatte...) gewöhnlich
eingelesen. Dabei wird der Akkumulator als Zwischenspeicher benötigt (Vergleiche die Ausführungen in Kapitel 10).
Die Idee von DMA besteht darin, die Geschwindigkeit der Datenübertragung zu erhöhen, indem der Datentransport
ohne den Umweg über die CPU (mit Zwischenablage im Akkumulator) organisiert wird. Die Daten gehen direkt vom
Memory zum Peripheriegerät und umgekehrt. Ein DMA Controller ist im Prinzip eine für die Ein/-Ausgabe optimierte
CPU mit hardwired control. Während eines Datentransports mittels DMA muß die CPU angehalten werden, damit der
Daten- und Adreßbus nicht zur gleichen Zeit von beiden Einheiten benutzt wird. Dies mindert die Effizienz des Verfahrens, weil die CPU nicht parallel Befehle bearbeiten kann, während die Datenübertragung stattfindet. Die CPU und der
DMA-Controller müssen sich also verständigen, wer über den Bus verfügen darf. Beim 8085 gibt es dafür die Kontrollsignale HOLD und HLDA, wobei HOLD vom Controller als Anforderung an die CPU und HLDA von der CPU an den
Controller als Bestätigung geschickt wird. Das folgende Blockdiagramm soll den Zusammenhang verdeutlichen:
11.5.1 Beispiel einer parallelen Schnittstelle (ohne DMA)
Wenn man Datenfelder über eine Schnittstelle ausgeben möchte, sind für jedes Byte mehrere Befehle zu durchlaufen.
Dies ist im folgenden Programm am Beispiel einer parallelen Schnittstelle dargestellt, deren Ausgaberegister bei der
Adresse F000 steht. Ausgegeben werden soll der Speicherbereich, dessen Startadresse bei 1010 und dessen Endadresse
bei 1012 gespeichert ist. Dazu wird jedes Byte aus dem Datenfeld in den Akkumulator geladen und anschließend an die
Schnittstelle ausgegeben. Dann wird das Indexregister abgefragt, ob das Ende bereits erreicht ist. Solange das nicht der
Fall ist, wird die Programmschleife immer wieder ausgeführt und Byte für Byte übertragen. Man sieht, daß zur Ausgabe
eines Bytes 5 Befehle innerhalb des Loops durchlaufen werden müssen, die zusammen 23 Taktzyklen erfordern. Das
Programm benutzt den Befehlssatz des 6802 Mikroprozessors.1
Adr.
1000
3
5
8
9
C
E
1010
2
Hex-Code
FE 10 00
A6 00
B7 F0 00
08
BC 10 02
26 F5
39
00 00
02 00
Marke
LOOP
MNem.
LDX
LDA A
STA A
INX
CPX
BNE
RTS
WORD
WORD
Operand
#$ 1010
00,X
F000
$ 1012
LOOP
$0000
$0200
Zyklen
5
5
4
5
4
-23
Kommentar
Startadreese
Zeichen holen
Zeichen ausgeben
Nächste Adresse
Endadresse
Wiederholung
Startadresse
Endadresse
Beim Einsatz von DMA teilt die CPU dem DMA Controller die Startadresse (im Beispiel $0000) und die Anzahl der zu
übertragenden Bytes ($0200) mit. Die Startadresse wird im Adreßregister des DMA gespeichert. Dieses DMA Adreßregister (siehe Zählerregister in Kapitel 2) wird bei jedem Taktzyklus um eins erhöht, bis alle Daten übertragen sind.
"Gegenüber einer programmgesteuerten Übertragung ergibt sich also die 23fache Übertragungsgeschwindigkeit. Dies
gilt allerdings nur, solange die Zeit zur Initialisierung der DMA-Übertragung nicht ins Gewicht fällt. Deshalb ist es nicht
sinnvoll, nur wenige Bytes per DMA zu übertragen."2
11.6 Parallelarbeit - Einprozessorsysteme
Moderne Mikroprozessoren sind bereits in der Lage, mehrere Befehle gleichzeitig auszuführen. Dies ermöglicht die
Superskalararchitektur, die dadurch gekennzeichnet ist, daß mehrere Ausführungseinheiten auf einer CPU implementiert sind.
1 U. Tietze, Ch. Schenk, Halbleiter-Schaltungstechnik, Springer Verlag, 1990, S.704
2 U. Tietze, Ch. Schenk, Halbleiter-Schaltungstechnik, S.706
100
Inhaltsverzeichnis
Beispiel : der Power PC von IBM Motorola und Apple verfügt über ein Integer-Rechenwerk, ein Fließkommarechenwerk und eine Einheit zur Berechnung der Sprungadressen, so daß er bis zu 3 Befehle gleichzeitig ausführen kann. Ähnliches gilt für Intels Pentium, DECs Alpha und andere moderne Prozessoren. Weitere Ausführungen hierzu finden sie im
Band 2 der Vorlesung: Prinzipien von RISC-Architekturen
11.7 Rückkehr zur hardwired-control: RISC Prozessoren
RISC steht für Reduced Instruction Set Computer, was soviel bedeutet wie „Rechner mit reduziertem Befehlssatz. Ganz
grob und allgemein gilt: Der Vorteil der RISC-Prozessoren gegenüber den CISC-Varianten (IBM 360/370/390, DEC
VAX, Intel 80x86 und Motorola 680x0 Familie etc. ) ist, daß sie auf Grund eines vereinfachten, regelmäßigen Befehlssatzes mit einer hardwired control erheblich schneller arbeiten. Typische RISC Vertreter sind DECs Alpha, die Prozessoren von Mips, Sun, sowie der Power PC. Auch hier gilt für vertiefende Betrachtungen der Hinweis auf den oben genannten Band 2 der Vorlesung.
11.8 Parallelarbeit - Multiprozessorsysteme
Mildert das Problem des Von Neumann Flaschenhalses.
Parallelarbeit bedeutet gleichzeitige Ausführung mehrerer Operationen. Dies erfordert, daß Hardware-Betriebsmittel, die
Rechenoperationen ausführen können (ALUs, komplette CPUs) mehrfach vorhanden sind. Strukturell weicht eine Maschine, die Parallelarbeit ermöglicht, immer von der Von Neumann Struktur ab - Parallelarbeit erfordert nämlich andere
Kontrollstrukturen als die der Von Neumann Architektur, da Parallelarbeit gegebenenfalls synchronisiert werden muß.
Das bedeutet, daß nur von einander unabhängige Operationen parallel ausgeführt werden können; Operationen, die vom
Ausgang anderer Operationen abhängig sind, müssen synchronisiert werden. Solche Kontrollaufgaben sind in der Von
Neumann Architektur weder notwendig noch vorgesehen.
"Parallelarbeit und das Von Neumann Prinzip schließen sich damit gegenseitig aus. Nicht ausgeschlossen ist jedoch, daß
die Prozessoren eines für Parallelarbeit konzipierten Multiprozessor-Systems Von Neumann Maschinen sind." 1
Moderne Prozessoren setzen zur Performance-Steigerung auf alle hier angesprochenen Konzepte. Beispielsweise ging
die Firma Digital am Anfang der neunziger Jahre davon aus, daß in den folgenden 10 Jahren eine Steigerung der Rechenleistung um den Faktor 1000 möglich sein wird:
• Steigerung der Taktgeschwindigkeit um den Faktor 10
• Steigerung des Befehlsdurchsatzes pro Taktzyklus um den Faktor 10
• Steigerung des Befehlsdurchsatzes durch multiprocessing um den Faktor 10
Die Konzepte und Probleme von Multiprozessorsystemen werden im Band 3 der Vorlesung: Konzepte paralleler und
massiv paralleler Rechnerarchitekturen ausführlich behandelt.
1 Giloi W.K., Rechnerarchitektur, S.38
12 Literatur
Giloi W.K., Rechnerarchitektur, Springer-Verlag Berlin-Heidelberg-New York 1981
Giloi W.K., Rechnerarchitektur, 2. Auflage 1993, Springer-Verlag Berlin-Heidelberg-New York
Hennessy, Patterson Rechnerarchitektur -Analyse Entwurf, Implementierung, Bewertung, Vieweg 1994 S.13f
Malvino, Digital Computer Electronics, An Introduction to Microcomputers, THM New Delhi, S.7
MärtinChristian , Rechnerarchitektur, Struktur, Organisation, Implementierungstechnik, Hanser Studienbücher der Informatik, 1994,
Duden, Informatik, Mannheim 1993
Einführung in die Elektronik 2, Kontaktlose Signalverarbeitung, Stam Verlag Köln, 1989
Werner Hilf, Anton Nausch, M68000 Familie, Grundlagen und Architektur, te-wi Verlag, 1984
U. Tietze, Ch. Schenk, Halbleiter-Schaltungstechnik, Springer Verlag, 1990, S.704
Siemens, Mikrocomputer-Bausteine, Datenbuch 1980/81
Was this manual useful for you? yes no
Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Download PDF

advertisement