26.11.2012 Aufrufe

im Fachbereich Informatik Günther Fröhlich Band 1 ...

im Fachbereich Informatik Günther Fröhlich Band 1 ...

im Fachbereich Informatik Günther Fröhlich Band 1 ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Aufbau und Arbeitsweise von Rechenanlagen<br />

<strong>im</strong> <strong>Fachbereich</strong> <strong>Informatik</strong><br />

<strong>Günther</strong> <strong>Fröhlich</strong><br />

<strong>Band</strong> 1 - Rechnerarchitektur


1—2<br />

1 EINFÜHRUNG 1—7<br />

1.1 Entwurfsebenen 1—8<br />

1.2 Merkmale der Ebenen 1—9<br />

1.3 Aspekte der Rechnerarchitektur 1—9<br />

1.4 Thematische Einordnung und Ziel der Vorlesung 1—10<br />

1.5 Rechnergenerationen 1—11<br />

1.6 Aufbau der Zentraleinheit 1—12<br />

1.7 Zur vorläufigen Begriffsklärung: 1—13<br />

2 ELEMENTE DER REGISTER-EBENE 14<br />

2.1 Register 14<br />

2.1.1 einfaches Register 14<br />

2.1.2 Exkurs in die Gatterebene 15<br />

2.1.2.1 Digital-logische Schaltungen 15<br />

2.1.2.2 UND Schaltung - Konjunktion 15<br />

2.1.2.3 ODER Schaltung - Disjunktion 16<br />

2.1.2.4 EXOR Schaltung - exklusives ODER 16<br />

2.1.2.5 NOR Schaltung - Negiertes ODER 16<br />

2.1.2.6 NAND Schaltung - Negiertes UND 16<br />

2.1.2.7 NOT Schaltung - Negation, Komplement 16<br />

2.1.2.8 Flip-Flop - Beispiel der Verknüpfung logischer Funktionen 18<br />

2.1.2.9 Übung: zur Funktionsweise des Flip-Flops 18<br />

2.1.2.10 Beispiel einer physikalischen Realisierung des Schaltgatters Inverter mit Transistor 19<br />

2.1.2.11 Sind in den Computern noch Transistoren? - Zum Stand der Technik bei den Hardwarekomponenten 19<br />

2.1.3 Schieberegister 23<br />

2.1.3.1 Übung: Signaldiagramm eines 4 Bit Registers 23<br />

2.1.3.2 Übung: Multiplikation mit Schieberegister 24<br />

2.1.4 Zähler 24<br />

2.1.5 Modifizierter Zähler 25<br />

2.1.6 Ringzähler 25<br />

2.1.6.1 Übung: Funktionen eines Ringzählers 26<br />

2.1.6.2 Übung: 6 Bit Ringzähler 26<br />

2.2 Bus-System 28<br />

2.2.1 Topologie von Kommunikationspfaden 29<br />

2.2.2 Kennwerte moderner Standardbusse 31<br />

2.3 Tri-State-Register 32<br />

2.3.1 Übung: Datentransfer mit Tri-State-Registern 34<br />

2.4 Multiplexer 35<br />

2.5 Decodierer 36


2.6 Speicher 37<br />

2.6.1 ROM (read-only-memory) 38<br />

2.6.2 PROM, EPROM und EEPROM 39<br />

2.6.3 Siliziumfestplatten - die FLash-Speicher 40<br />

2.6.4 Tri-State-ROM 40<br />

2.6.5 RAM 41<br />

2.6.5.1 Bauformen für Hauptspeichermodule 41<br />

2.6.5.2 Aufbau von DRAM Bausteinen 41<br />

2.6.5.3 Beschleunigung von Blockzugriffen 42<br />

2.6.6 Tri-State RAM 43<br />

2.6.7 Ein kleiner 16 Worte * 8 Bit breiter Speicher 45<br />

2.6.8 Entwicklung der Speicherbausteine 46<br />

3 DIE ARCHITEKTUR DES SAP 48<br />

1—3<br />

3.1 Blockdiagramm des SAP 48<br />

3.2 Das Kontrollwort des SAP 49<br />

3.3 Program Counter PC (Befehlszähler) 49<br />

3.4 Akkumulator A 49<br />

3.5 Register B 49<br />

3.6 Arithmetisch-logische Einheit (ALU) 50<br />

3.6.1 Interner Aufbau der ALU 50<br />

3.6.2 Übung: Das Addierwerk 51<br />

3.7 Speicher 51<br />

3.8 Instruction Register IR (Befehlsregister) 52<br />

3.9 Output Register (Ausgabe-Register) 52<br />

3.10 Ablaufsteuerung 52<br />

4 DIE BEFEHLE DES SAP 53<br />

4.1 LDA 53<br />

4.2 ADD 53<br />

4.3 SUB 53<br />

4.4 OUT 53<br />

4.5 HLT 53<br />

4.6 Ein Beispiel-Programm 54<br />

4.6.1 Übung: Assemblierung eines Befehls 54<br />

4.6.2 Übung: ein SAP Additionsprogramm 54<br />

4.6.3 Übung: Programmierung des SAP 55


1—4<br />

5 DER MASCHINENZYKLUS 56<br />

5.1 Der Hole-Zyklus 57<br />

5.1.1 Die Adreßphase 57<br />

5.1.2 Die Inkrementphase 58<br />

5.1.3 Die Speicherphase 58<br />

5.2 Der Ausführungs-Zyklus 59<br />

5.2.1 LDA-Befehl 59<br />

5.2.1.1 T3-Phase 59<br />

5.2.1.2 T4-Phase 59<br />

5.2.1.3 T5-Phase 60<br />

5.2.2 Übung: LDA Impulsdiagramm 61<br />

5.2.3 ADD-Befehl 61<br />

5.2.3.1 T3-Phase 61<br />

5.2.3.2 T4-Phase 62<br />

5.2.3.3 T5-Phase 62<br />

5.2.4 Übung: ADD Impulsdiagramm 62<br />

5.2.5 SUB-Befehl 63<br />

5.2.6 OUT-Befehl 63<br />

5.2.6.1 T3-Phase 63<br />

5.2.6.2 T4 und T5-Phase 63<br />

5.2.7 HLT-Befehl 63<br />

5.3 Maschinenzyklus 63<br />

5.3.1 Übung: Zykluszeiten 64<br />

6 DIE ABLAUFSTEUERUNG 65<br />

6.1 Befehlsdecodierer 65<br />

6.2 Kontrollmatrix 65<br />

6.2.1 Die Signale des Hole-Zyklus: 66<br />

6.2.2 Die Signale des Ausführungszyklus: 67<br />

6.3 Takterzeugung 67<br />

6.3.1 Das Zusammenwirken mit den anderen Teilen des Rechners 68<br />

6.4 Die gesamte Ablaufsteuerung 68<br />

6.4.1 Übung: Addition 69<br />

6.4.2 Übung: Assemblierung 69<br />

6.4.3 Übung: Speicherphase 70<br />

6.4.4 Übung: der PC in der Inkrementphase 70<br />

6.4.5 Übung: Kontrollmatrix 71<br />

7 MIKROPROGRAMMIERUNG 72<br />

7.1 Das SAP Mikroprogramm 72<br />

7.2 Das Adressierungs-ROM 73<br />

7.2.1 Übung: Inhalt des Adressierungs-ROMs 74<br />

7.2.2 Beispiel: 74


1—5<br />

7.3 Der µ-Zähler 74<br />

7.4 Der Kontrollspeicher oder Mikrocode ROM 75<br />

7.4.1 Übung: Kontrollspeicher 76<br />

7.5 Veränderlicher Maschinenzyklus 76<br />

7.6 Gegenüberstellung µ-Programmierung - hardwired control 78<br />

7.6.1.1 Übung: ABL mit Mikroprogrammierung 79<br />

7.6.1.2 Übung: Erweiterung des SAP 79<br />

8 WEITERENTWICKLUNG DES SAP - DER 8085 80<br />

8.1 Beschränkungen des SAP 80<br />

8.2 Flags 80<br />

8.2.1 Übung: Das Sign-Flag 81<br />

8.2.2 Übung: Das Zero Flag 81<br />

8.2.3 Übung : Handassemblierung 82<br />

8.3 Zeitablauf bei dem Befehl STA 83<br />

8.4 Erzeugen von Sign- und Zero-Flag 83<br />

8.5 Blockdiagramm des 8085 (Intel Corporation) 84<br />

8.6 Der Befehlssatz des 8085 88<br />

8.7 Vergleich SAP - 8085 Befehlssatz 91<br />

8.8 Ein Assemblerprogramm 91<br />

8.9 Assemblieranweisungen 92<br />

8.9.1 Steuerung des Assembliervorganges 92<br />

8.9.2 Anweisungen 92<br />

9 DIE KLASSISCHE VON NEUMANN-MASCHINE 94<br />

9.1 Die Prinzipien 94<br />

10 SCHWÄCHEN DER VON NEUMANN-MASCHINE 95<br />

10.1 Der von Neumann Flaschenhals 95<br />

11 STEIGERUNG DER RECHNERLEISTUNG 97<br />

11.1 Fetch and Overlap 97<br />

11.2 Pipeline 97<br />

11.3 Erhöhung der Taktfrequenz der Prozessoren 98


1—6<br />

11.4 Erhöhung der Datenbreite der Prozessoren 98<br />

11.5 DMA - Direct Memory Access 98<br />

11.5.1 Beispiel einer parallelen Schnittstelle (ohne DMA) 99<br />

11.6 Parallelarbeit - Einprozessorsysteme 99<br />

11.7 Rückkehr zur hardwired-control: RISC Prozessoren 100<br />

11.8 Parallelarbeit - Multiprozessorsysteme 100<br />

12 LITERATUR 101


1 Einführung<br />

Rechnerarchitektur ist eine Übersetzung des englischen Begriffs computer architecture, wobei sich der Begriff architecture<br />

sowohl auf den Zusammenbau und das Zusammenspiel der Bausteine als auch auf den Aufbau und die Arbeitsweise<br />

der einzelnen Bausteine bezieht (Siehe dazu Abschnitt Aspekte der Rechnerarchitektur auf Seite 1—9).<br />

Die Grundaufgabe einer Rechenanlage ist die<br />

• Sammlung<br />

• Speicherung<br />

• Verarbeitung<br />

• Darstellung<br />

von Informationen. Das ist auf Anhieb einleuchtend, ist doch der Computer das Arbeitsmittel der elektronischen Datenverarbeitung.<br />

Aus der Frage:<br />

• welche Art von Daten liegen vor Meßdaten einer Elektronik,<br />

Buchungsaufträge, Graphiken,<br />

Sprache usw.<br />

• wie sollen sie verarbeitet werden real-t<strong>im</strong>e, interaktiv,<br />

Stapelaufträge<br />

• in welcher Form sollen sie dargestellt<br />

werden<br />

• wievielen Benutzern an welchen Orten sollen<br />

sie zur Verfügung stehen<br />

Listen, Graphiken oder<br />

Sprache<br />

Einplatzsysteme,<br />

Mehrplatzsysteme,<br />

lokaler Rechnerverbund,<br />

weltweiter Verbund usw<br />

ergeben sich unterschiedliche Anforderungen an die Rechenanlagen und damit unterschiedliche Architekturen.<br />

Rechnerarchitektur handelt also von<br />

• dem funktionellen Verhalten eines Systems<br />

Transformation Eingabe A --> Ausgabe B, oder B = f(A)<br />

• der Struktur eines Systems<br />

Funktionseinheiten und deren Verbindungen<br />

• dem Entwurf digitaler Rechner<br />

Die Aufgabe, die sich die Rechnerarchitektur gestellt hat, läßt sich wie folgt formulieren:<br />

Aus einer gegebenen Menge elementarer Funktionseinheiten mit definiertem Verhalten ist eine Struktur zu bilden, die<br />

das verlangte Verhalten eines zu entwerfenden Rechners zeigt.<br />

Zwei Architekturen sollen hier schon unterschieden werden:<br />

• Universalrechner-Architektur<br />

• Spezialrechner-Architektur<br />

Universalrechner sind Computer, die auf jedem beliebigen Gebiet einsetzbar sind, Spezialrechner sind für einen best<strong>im</strong>mten<br />

Zweck konzipiert worden. Einfache Beispiele: ein PC ist ein Universalrechner, weil er für die verschiedensten<br />

Aufgaben eingesetzt werden kann (Textverarbeitung, Tabellenkalkulation, Datenbanken, Meßdatenaufnahme, Datenfernübertragung<br />

usw.). Der Computer in der Waschmaschine, der für die Ausführung der verschiedenen Waschprogramme<br />

zuständig ist, der Computer in einem modernen Motor, der für die Zündung eingesetzt wird und ein Computer<br />

zur Prozeßsteuerung, der sofort auf Ereignisse reagieren muß, sind Spezialrechner.<br />

1—7


1—8<br />

Die Rechnerarchitektur entwickelt Konstruktionsregeln für den Aufbau von Computersystemen. Je nach Zweckbest<strong>im</strong>mung<br />

des Computers muß das übergeordnete Konzept für die Hard- und Software best<strong>im</strong>mte Forderungen möglichst<br />

opt<strong>im</strong>al erfüllen.<br />

Forderung nach wird erreicht durch<br />

• opt<strong>im</strong>aler Leistung Spezialrechner (z.B. Prozeßrechner)<br />

• hoher Ausfalltoleranz Ausfall einzelner Komponenten führt<br />

nicht zum Ausfall der Gesamtanlage;<br />

• Erweiterbarkeit des Systems Erweiterbarkeit durch verschiedene Ausbaustufen<br />

• gute Benutzbarkeit und Wartbarkeit.<br />

Architektur-Unterscheidungskriterien:<br />

Kriterium : Beispiele :<br />

Anwendungsbereich Universalrechner<br />

Spezialrechner<br />

Wissenschaftlicher Rechner<br />

Kommerzieller Rechner<br />

Materialien Relais, Röhren, Transistoren, integrierte<br />

Schaltungen<br />

Datendurchsatz:<br />

Wieviele Datenwerte<br />

und Befehle<br />

werden gleichzeitig<br />

bearbeitet ?<br />

SISD Single Instruction-Single Data<br />

SIMD Single Instruction-Multiple<br />

Data<br />

MISD Multiple Instruction-Single<br />

Data<br />

MIMD Multiple Instruction-Multiple<br />

Data<br />

Graphische Benutzeroberflächen, komplexe<br />

Betriebssysteme<br />

Ausgewogene Leistung für eine Reihe<br />

von Aufgaben<br />

Höhere Leistung für spezielle<br />

Aplikationen<br />

Hochleistungs-Gleitkomma-Einheit<br />

Unterstützung für COBOL Dez<strong>im</strong>alarithmetik),<br />

für Datenbanken und<br />

Transaktionsverarbeitung<br />

Neumann -<br />

Struktur<br />

Pipeline -<br />

Rechner<br />

--------<br />

Multiprozessor-Systeme<br />

"Die Materialien der Rechner-Architekten sind die integrierten Halbleiter-Bausteine, aus denen gewisse Komponenten<br />

realisiert werden, die wir die Hardware-Betriebsmittel nennen. Diese Komponenten - Prozessoren, Speicher, Verbindungseinrichtungen<br />

- werden zu einem Rechnersystem zusammengesetzt." 1<br />

Vorschriften für das Zusammenwirken der Komponenten eines Rechnersystems nennt man das Operationsprinzip der<br />

Rechnerarchitektur.<br />

Der Entwurf eines so komplexen Systems wie dem eines Rechners kann auf verschiedenen Ebenen betrachtet werden,<br />

abhängig von den Komponenten, die als unteilbar betrachtet werden.<br />

1.1 Entwurfsebenen<br />

Die drei wesentlichen Entwurfsebenen sind:<br />

1 Giloi W.K., Rechnerarchitektur, Springer-Verlag Berlin-Heidelberg-New York 1981 S.3


• Prozessor-<br />

• Register- und<br />

• Gatter-Ebene<br />

1.2 Merkmale der Ebenen<br />

Ebene<br />

Funktionseinheit<br />

(speichernde und<br />

verarbeitende)<br />

Prozessor CPU, Speicher E/A-<br />

Geräte<br />

Register (parallel<br />

mehrere Bits)<br />

Gatter (1 Bit Informationen)<br />

Der Tabelle läßt sich entnehmen:<br />

Register, Codierer,<br />

Decodierer<br />

Gatter,Flip-Flops<br />

• je komplexer die Komponenten: desto höher die Ebene<br />

Informationseinheit<br />

Wort-Blöcke Programme,Dateien<br />

Worte (Zahlen, Befehle,<br />

Zeichen)<br />

Bits<br />

• die Rechnerarchitektur befaßt sich insbesondere mit der Register- und Prozessorebener. 1<br />

1—9<br />

Zeiteinheit elementarer<br />

Operationen<br />

10-3 - 103sec (Prog.<br />

Ausführungszeiten)<br />

10-9 - 10-6sec<br />

10-10 - 10-8sec<br />

Um die Inhalte der Rechnerarchitektur besser ordnen und möglichst klar voneinander abgrenzen zu können, werden in<br />

dieser Veranstaltung vorwiegend die Begriffe einer Ebene benutzt: die der Registerebene.<br />

1.3 Aspekte der Rechnerarchitektur<br />

Vom Standpunkt des Rechnerarchitekten läßt sich der Entwurf eines Computers einteilen in<br />

• Befehlssatz-Architektur und<br />

• Implementierung.<br />

Diese unterteilt sich wieder in<br />

• Organisation und<br />

• Hardware<br />

Die Befehlssatz-Architektur bildet die Grenze zwischen der Hard- und Software. Auch wenn es an dieser Stelle etwas zu<br />

weit führt, muß darauf hingewiesen werden, daß es prinzipiell unterschiedliche Befehlssatz-Architekturen gibt, die sich<br />

hauptsächlich darin unterscheiden, wie die Operanden auf der CPU gespeichert werden. Die Hauptvarianten sind ein<br />

Stack, ein Akkumulator oder ein Registersatz. Die Operanden in Stack-Architekturen sind <strong>im</strong>plizit an der Spitze des<br />

Stack enthalten; in einer Akkumulator-Architektur ist ein Operand <strong>im</strong>plizit der Akkumulator. Universalregister-<br />

Architekturen haben nur explizite Operanden - entweder Register oder Speicherplätze.<br />

1 Vgl. Hayes, John P., Computer Architecture and Organisation, McGraw-Hill International Book Company, S. 70 f


1—10<br />

Bereitgestellter temporärer<br />

Speicher<br />

Beispiele Explizite Operanden<br />

pro ALU-Befehl<br />

Ziel für Ergebnisse Art des Zugriffs zu<br />

expliziten Operanden<br />

Stack B5500, HP 3000/70 0 Stack Push und Pop zum<br />

oder vom Stack<br />

Akkumulator PDP-8, Intel 8085,<br />

Motorola 6502 (z.B.<br />

in C64, Apple 2...)<br />

Registersatz IBM 360, DEC VAX<br />

und alle heute aktuellen<br />

Prozessoren<br />

1 Akkumulator Laden/Speichern<br />

Akkumulator<br />

2 oder 3 Register oder Speicher Laden/Speichern von<br />

Registern oder dem<br />

Speicher.<br />

Die vergleichsweise einfache Akkumulator-Architektur war bis in die 70ger Jahre aktuell. Der Intel 8086 sollte Sourcecode-kompatibel<br />

zum 8085 sein. Daraus ergab sich für die gesamte Intel 80x86 Reihe eine Mischform zwischen Akkumulator-<br />

und Registersatz-Architektur. Wenn Sie diesen Abschnitt überhaupt nicht verstanden haben, ist das nicht weiter<br />

schl<strong>im</strong>m. Sie können das sicherlich am Ende des Semesters besser einordnen (also, später nochmal die Einleitung lesen!).<br />

Es mußte aber thematisiert werden für die Zielbest<strong>im</strong>mung der Vorlesung <strong>im</strong> nächsten Abschitt.<br />

Der Begriff Organisation beinhaltet Aspekte wie Speichersystem, Busstruktur und den internen CPU-Entwurf. Es gibt<br />

Maschinen mit gleicher Befehlssatz-Architektur, aber unterschiedlicher Organisation (z.B. VAX 11/780 und VAX<br />

8600). Hardware kennzeichnet die Spezifika der Realisierung einer Maschine, wie detailierter Logikentwurf und und<br />

Gehäusetechnologie 1 .<br />

1.4 Thematische Einordnung und Ziel der Vorlesung<br />

Ziel dieser einführenden Vorlesung kann es nicht sein, möglichst vollständig den Stand der modernen Rechnerarchitektur<br />

abzuhandeln. Sie will vielmehr die Grundlagen für das Verständnis von Aufbau und Wirkungsweise digitaler Rechner<br />

auf Registerebene legen. Dazu bietet es sich an, den denkbar einfachsten Computer ( den SAP, s<strong>im</strong>ple as possible)<br />

eingehend darzustellen. Dabei werden alle oben genannten Aspekte des Rechnerentwurfes berücksichtigt. Im Sinne der<br />

Einfachheit handelt es sich be<strong>im</strong> SAP um eine Akkumulator-Architektur mit lediglich fünf Befehlen. Bei der Entwicklung<br />

der Funktionsweise des SAP werden an vielen Stellen Bezüge zu aktuellen Computern und Computerbausteinen<br />

hergestellt. Deshalb mündet die Behandlung des SAP anschließend in eine Beschreibung des 8085, eine Akkumulator-<br />

Maschine, die Industriestandard erreichte und verwand ist mit dem 8086, der in „Maschinenorientiertes Programmieren“<br />

an der Fachhochschule eingesetzt wird. Auch werden Themen der Gatterebene angerissen; einerseits um die Ebenen klar<br />

voneinander trennen zu können, andererseits um entsprechende Funktionen des SAP zu erläutern.<br />

Die thematische Einordnung der Vorlesung läßt sich mit folgendem Bild verdeutlichen:<br />

1 Vergl. Hennessy, Patterson Rechnerarchitektur -Analyse Entwurf, Implementierung, Bewertung, Vieweg 1994 S.13f


Gatter<br />

Ebene<br />

Betrachtungsebene<br />

Prozessor<br />

Ebene<br />

Register<br />

Ebene<br />

Kap. 8<br />

Kap. 2-7<br />

Kap. 2,6,8<br />

Kap. 11<br />

SISD SIMD MISD MIMD<br />

Rechnerklassifikation nach Flinn<br />

1—11<br />

Auf der Gatterebene werden die aktuellen Bauteile erläutert, die mit den integrierten Schaltungen zur Verfügung stehen.<br />

Bezüge zu älteren physikalischen Realisierungen werden aber auch hergestellt.<br />

Am SAP - ein Min<strong>im</strong>alsystem der Kategorie SISD- , wird das bis heute <strong>im</strong>mer noch gültige grundlegende Operationsprinzip<br />

entwickelt. Dabei werden insbesondere Zusammenhänge und funktionelles Verhalten digitaler Einheiten dargestellt.<br />

In Kapitel 9 wird dieses in den Prinzipien der von Neumann-Maschine systematisiert.<br />

Auf Grundlage von Kapitel „Der von Neumann Flaschenhals“ können die Schwächen dieser Architektur diskutiert<br />

werden. Das folgende Kapitel „Steigerung der Rechnerleistung“ stellt Architektur-Maßnahmen vor, um die Wirkung des<br />

von Neumann-Flachenhalses zu min<strong>im</strong>ieren.<br />

1.5 Rechnergenerationen<br />

Seit 1952 gab es Tausende neuer Rechner unterschiedlichster Technologie und mit breit gefächerten Eigenschaften. Um<br />

den Überblick über die Entwicklungen zu erleichtern, hat die Industrie Gruppen von Rechnern in Generationen eingeordnet.<br />

Die Einteilung erfolgte oft nach der Implementierungstechnik, wie in der folgenden Tabelle gezeigt wird. Typischerweise<br />

währt jede Generation 8-10 Jahre, wobei Dauer und Beginn besonders neuerer Generationen ziemlich umstritten<br />

sind. Einigkeit besteht darin, daß die erste Generation die kommerziellen elektronischen Rechner sind, <strong>im</strong> Unterschied<br />

zu den vorangegangenen mechanischen oder elektromechanischen Maschinen.<br />

.


1—12<br />

Generation Jahre Technologie Neuartiges Produkt Neue Firmen und Maschinen<br />

1 1950-19959 Röhren Kommerzielle elektronische<br />

Rechner<br />

IBM 701 UNIVAC1<br />

2 1960-1968 Transistoren Billige Rechner Burroughs 6500, NCR, CDC<br />

6600, Honeywell, IBM 360<br />

3 1969-1977 Integrierte Schaltungen Minicomputer 50 neue Firmen: DEC PDP-11,<br />

Data General Nova<br />

4 1978-199? LSI und VLSI PC und Workstation VAX 11/780, Apple II, Aplollo,<br />

SUN2<br />

5 199?-???? Parallelverarbeitung Multiprozessoren<br />

1.6 Aufbau der Zentraleinheit<br />

Anhand des folgenden Blockschaltbildes eines Taschenrechners sollen einige Begriffe zur Erläuterung der Funktionsweise<br />

eines Computers eingeführt, aber noch nicht wirklich erklärt werden.<br />

?<br />

Blockschaltbild eines Taschenrechners<br />

Was passiert eigentlich bei der Addition zweier Zahlen mit Hilfe eines Taschenrechners ?<br />

• die 1. Zahl (z.B. 5) wird mit der Tastatur eingegeben. Jede einzelne Taste ist über eine Leiterbahn mit dem Speicher<br />

verbunden. Wird die Taste ´5´ gedrückt, wird in einem best<strong>im</strong>mten Teil des Speichers eine Verschlüsselung (Codierung)<br />

abgerufen und die binäre Information landet <strong>im</strong> Speicher. Das Steuerwerk sorgt dafür, daß die ´5´ über die<br />

Ausgabecodetabelle umgewandelt und an die Ausgabeeinheit weitergeleitet und so <strong>im</strong> Display sichtbar wird.<br />

• das Kommando ´+´ wird eingegeben.


1—13<br />

• Mit der Codetabelle wird das Pluszeichen ebenso in eine binäre Information gewandelt wie vorher die ´5´. Das Steuerwerk<br />

interpretiert die Information als Befehl und nicht als Operand.<br />

• die 2. Zahl, (z.B. 2) wird eingegeben, vom Steuerwerk decodiert und <strong>im</strong> Speicher abgelegt und zwar so, daß später<br />

wieder eindeutig auf die Zahl zugegriffen werden kann. Wie <strong>im</strong> ersten Schritt wird wieder die Ausgabeeinheit aktiviert,<br />

also die eingetippte Zahl angezeigt.<br />

• die Taste ´=´ wird betätigt. Decodierung wie zuvor. Wird jetzt vom Steuerwerk als Startsignal interpretiert, die Rechenoperation<br />

auszuführen. Das Steuerwerk sorgt jetzt dafür, das ein Programm aus dem Programmspeicher aktiviert<br />

wird, um die beiden Zahlen <strong>im</strong> Rechenwerk zu addieren.<br />

Zu diesem Zweck werden die Operanden aus dem Datenspeicher an das Rechenwerk über einen Datenbus (Datenleitungen)<br />

geleitet. Das Ergebnis wird <strong>im</strong> Datenspeicher abgelegt und das Steuerwerk leitet das Ergebnis an die Ausgabeeinheit.<br />

Schon diese sinnfällige und formale Betrachtung eines Computers führt zum ersten Prinzip der Von Neumann Maschine<br />

(vgl. Kapitel 9):<br />

1. Der Rechner besteht zumindest aus Speicher, Rechenwerk, Steuerwerk und Ein/Ausgabegeräten (Min<strong>im</strong>alsystem).<br />

1.7 Zur vorläufigen Begriffsklärung:<br />

? Was ist ein Mikroprozessor ?<br />

Ein Mikroprozessor ist die Zusammenfassung des Rechenwerkes und des Steuerwerkes in einem Baustein. Weitere Erklärungen<br />

folgen <strong>im</strong> Abschnitt: Beispiel einer physikalischen Realisierung des Schaltgatters Inverter mit Transistor.<br />

? Was ist ein Mikrocomputer ?<br />

Wie der Name schon sagt, ist es ein kleiner Computer. Genauer gesagt ist es ein Computer, der einen Mikroprozessor,<br />

mehrere Speicher- und Ein/Ausgabe-Bausteine enthält. 1<br />

1 Vgl. Malvino, Digital Computer Electronics, An Introduction to Microcomputers, THM New Delhi, S.7


2 Elemente der Register-Ebene<br />

In diesem Kapitel werden vorwiegend Elemente (Funktionseinheiten) vorgestellt, die zur Erstellung des SAP erforderlich<br />

sind.<br />

2.1 Register<br />

Ein Register besteht aus einer Menge von Speicherelementen, die zu einer Einheit zusammengefaßt sind. In der einfachsten<br />

Form dient ein Register nur der Speicherung von einem binären Wort (mehrere Bits). Daneben gibt es Register, die<br />

die gespeicherten Bits nach rechts oder links verschieben können und Register, die zählen können.<br />

2.1.1 einfaches Register<br />

Einfaches Register<br />

Flankentriggerung<br />

Das Register kann ein Byte vom Eingang X übernehmen. Es ist steuerbar, wann genau die Übernahme dieser am Eingang<br />

anliegenden Daten stattfinden soll:<br />

Mit Hilfe der Steuersignale LOAD und CLK.<br />

LOAD = L : Eingangsdaten werden nicht übernommen,<br />

LOAD = H : Eingangsdaten werden bei der nächsten positiven Taktflanke von CLK übernommen.


Wenn dann LOAD wieder auf L geht, hat das X keinen Einfluß mehr auf das gespeicherte Byte. Das folgende Impulsdiagramm<br />

zeigt eine mögliche Signalfolge an den beiden Steuereingängen 1<br />

H<br />

CLK L<br />

steigende fallende<br />

Taktflanke Taktflanke<br />

t i<br />

Impulsdiagramm eines Ladevorgangs<br />

Die Daten X, die zum Zeitpunkt ti anliegen, werden in das Register übernommen.<br />

Zeitachse t<br />

Bedingt durch die interne Funktionsweise der Register (Hardware-Eigenschaft der Register), können die Daten<br />

am Eingang nur dann sicher übernommen werden, wenn<br />

• die am Eingang anliegenden Daten und das Load-Signal bereits für eine gewisse Zeit vor der schaltenden Flanke<br />

anliegen (setup-t<strong>im</strong>e)<br />

• die am Eingang anliegenden Daten und das Load-Signal noch für eine gewisse Zeit nach der schaltenden Flanke<br />

anliegen (hold-t<strong>im</strong>e).<br />

Manche Register besitzen zusätzlich einen Steuereingang CLR. Mit CLR = H wird der gespeicherte Inhalt gelöscht indem<br />

alle Bits auf 0 gesetzt werden. Die Steuereingänge LOAD und CLK wirken nur bei CLR = L.<br />

2.1.2 Exkurs in die Gatterebene<br />

Die Speicherfunktion eines Registers soll exemplarisch auf der Ebene unterhalb der Registerebene, der logischen Gatterebene,<br />

betrachtet werden. Dazu werden <strong>im</strong> folgenden einige digital-logische Schaltungen erläutert.<br />

tion. Im folgenden werden die logischen Grundfunktionen<br />

dargestellt.<br />

2.1.2.1 Digital-logische Schaltungen<br />

Alle physikalische digitale Schaltungen lassen sich mit<br />

Hilfe von logischen Funktionen beschreiben. Betrachtet<br />

man digitale Schaltungen auf der Ebene der logischen<br />

Funktionen, hat man den Vorteil, von der technischen<br />

Verwirklichung der Schaltung absehen zu können, denn<br />

auf der Ebene der logischen Funktionen ist es unerheblich,<br />

ob Relais, Transistorschaltungen oder integrierte<br />

Schaltungen eingesetzt werden. Ein Schaltgatter ist<br />

die physikalische Realisierung einer logischen Funk-<br />

1 Impulsdiagramme oder Zeitdiagramme sind die häufigst verwendete Form der Visualisierung und Beschreibung von elektrischen Signalen. Sie<br />

ähneln sehr den Zeitverläufen, von Signalen auf einem Logic Analyzer. Das Zeitdiagramm erlaubt es, sowohl einzelne Signalzustände als auch<br />

Zeitbedingungen und Kausalzusammenhänge zwischen Signalen zu erkennen.<br />

2.1.2.2 UND Schaltung - Konjunktion<br />

15<br />

Der Ausgang einer UND-Schaltung ist 1, wenn beide<br />

Eingänge 1 sind.<br />

Wahrheitstafel:


16<br />

X<br />

Y<br />

x y z = x ^ y<br />

0 0 0<br />

0 1 0<br />

1 0 0<br />

1 1 1<br />

Symbol:<br />

&<br />

2.1.2.3 ODER Schaltung - Disjunktion<br />

Der Ausgang einer ODER-Schaltung ist 1, wenn mindestens<br />

ein Eingang 1 ist.<br />

X<br />

Y<br />

Wahrheitstafel:<br />

x y z = x v y<br />

0 0 0<br />

0 1 1<br />

1 0 1<br />

1 1 1<br />

Symbol:<br />

�1<br />

2.1.2.4 EXOR Schaltung - exklusives<br />

ODER<br />

Der Ausgang einer EXOR-Schaltung ist 1, wenn genau<br />

ein Eingang 1 ist.<br />

Wahrheitstafel:<br />

Z<br />

Z<br />

x y z = x xor y<br />

0 0 0<br />

0 1 1<br />

1 0 1<br />

1 1 0<br />

Symbol<br />

X<br />

Y<br />

=1<br />

2.1.2.5 NOR Schaltung - Negiertes ODER<br />

Der Ausgang einer NOR-Schaltung ist 1, wenn beide<br />

Eingänge 0 sind.<br />

X<br />

Y<br />

Wahrheitstafel:<br />

x y z= x nor y<br />

0 0 1<br />

0 1 0<br />

1 0 0<br />

1 1 0<br />

Symbol:<br />

�1<br />

2.1.2.6 NAND Schaltung - Negiertes UND<br />

Der Ausgang einer NAND-Schaltung ist 0, wenn beide<br />

Eingänge 1 sind.<br />

X<br />

Y<br />

Wahrheitstafel:<br />

x y z = x nand<br />

y<br />

0 0 1<br />

0 1 1<br />

1 0 1<br />

1 1 0<br />

Symbol:<br />

&<br />

2.1.2.7 NOT Schaltung - Negation, Komplement<br />

Der Ausgang ist das Gegenteil des Eingangs.<br />

Z<br />

Z<br />

Z


Wahrheitstafel:<br />

x not x<br />

0 1<br />

1 0<br />

Symbol:<br />

X X<br />

17


18<br />

2.1.2.8 Flip-Flop - Beispiel der Verknüpfung logischer Funktionen<br />

Betrachten wir die Grundfunktion eines Registers: Speicherung eines Dateneingangs solange, wie es erforderlich ist. Ein<br />

8 Bit Register besteht aus 8 parallel geschalteten Elementen, die entweder eine 0 oder eine 1 speichern können. Ein solches<br />

Element heißt Flip-Flop. Es kann wie folgt aufgebaut werden:<br />

Schaltung eines Flip-Flops<br />

Das Flip-Flop hat die zwei Eingänge Steuerung (St) und Daten ein (Din) und einen Ausgang Daten aus (Dout).<br />

Wenn Steuerung angeschaltet wird (d.h. auf 1 gesetzt wird), dann ist Daten aus gleich Daten ein. Wenn nun Steuerung<br />

abgeschaltet wird (d.h. auf 0 gesetzt wird), kann Daten aus nicht wechseln, egal wie oft Daten ein wechselt. Deshalb<br />

behält das Flip-Flop, nachdem Steuerung ausgeschaltet ist, den letzten Wert, den Daten ein hatte, als Steuerung noch<br />

gleich 1 war.<br />

2.1.2.9 Übung: zur Funktionsweise des Flip-Flops<br />

Überprüfen Sie die Funktionsweise des Flip-Flops, indem Sie die folgende Tabelle vervollständigen.<br />

Vorraussetzung: In Daten aus steht eine 0<br />

St : Steuerung, entspricht dem LOAD-Signal des Registers<br />

DE : Daten ein<br />

DA : Daten aus<br />

Takt ST DE Gatter 1 Gatter 2 Gatter 3 Gatter 4 Gatter 5 6 = DA<br />

1 1 1<br />

2 0 1<br />

3 0 0<br />

4 1 0


2.1.2.10 Beispiel einer physikalischen Realisierung des Schaltgatters Inverter mit Transistor<br />

1<br />

Kurze Funktionsbeschreibung eines npn-Transistors:<br />

Ein Transistor ist ein Bauteil mit drei Zuleitungen: Wenn eine Spannung an der Basis anliegt, kann auch Strom vom<br />

Kollektor zum Emitter fließen. Liegt an der Basis keine Spannung an, ist der Stromfluß vom Kollektor zum Emitter<br />

unterbrochen. Ein Transistor ist ein elektronisch gesteuerter Schalter.<br />

Ein Invertiergatter mit Transistor sieht folgendermaßen aus:<br />

Ist x = 0, ist der Stromfluß vom Kollektor zum Emitter (Erdung) unterbrochen, also f(x) = 1. Im umgekehrten Fall (x=1)<br />

fließt ein Kollektor-Emitter Strom, der Ausgang F(x) n<strong>im</strong>mt den Wert 0 an.Der Wertebereich eines Transistors beträgt 2<br />

bis 5 V für logisch 1, 0 bis 0.5 V für 0 in der positiven Schaltungslogik.<br />

2.1.2.11 Sind in den Computern noch Transistoren? - Zum Stand der Technik bei den Hardwarekomponenten<br />

Ab 1959 wurden Computer auf der Basis von Halbleiterschaltungen mit einzelnen Transistoren, Dioden, Widerständen<br />

und Kondensatoren gebaut. Öffnet man heutzutage einen Computer, sucht man vergebens nach solchen (dem einen oder<br />

anderen) bekannten Bausteinen. Vielmehr sieht man diverse Platinen mit sogenannten Chips, diesen flachen, rechteckigen<br />

Bausteinen mit kleinen Metallfüßchen. In diesen Chips sind mehrere Transistorschaltungen integriert. Eine Grundlage<br />

dafür bildet heute häufig die Metalloxidschalttechnik (MOS), bei der die Transistoren auf einem gemeinsamen Substratplättchen<br />

mit den drei Schichten Metall, Siliziumoxid und Silizium aufgebaut werden. Wieviele Transistoren bilden<br />

eine in einem Chip integrierte Schaltung (IC = integrated circuit)? Auch das hat sich seit der Einführung der MOS Technologie<br />

(1969) ständig verändert. Je nachdem, wieviele Schaltungen in einem Chip integriert sind, spricht man von:<br />

1 Entnommen dem Script ´Rechnerarchitektur´ von Johannes Arz, 1991, S.21<br />

19


20<br />

Bezeichnung Anzahl Schaltelemente<br />

Small Scale Integration<br />

< 25<br />

SSI<br />

Medium Scale Integration<br />

< 210<br />

MSI<br />

Large Scale Integration<br />

< 215 z.B. Intel 8080<br />

LSI<br />

Very Large Scale Integration < 220 z.B. Intel 8086 -<br />

VLSI<br />

80386<br />

Motorola 680xx<br />

Familie<br />

Ultra Large Scale Integration > 220 z.B. Intel<br />

ULSI<br />

80486<br />

Seit Anfang der siebziger Jahre entwickelt sich das Gebiet der VLSI-Design in einem nahezu unvergleichlichen Innovationstempo.<br />

Das läßt sich am besten durch die Zunahme der Integrationsdichte ausdrücken: jeweils alle drei Jahre vervierfacht<br />

sich die Zahl der auf einem Chip integrierten Komponeneten.<br />

Die typischen heute eingesetzten VLSI-Bausteine sind der 16 MBit-DRAM-Speicherchip mit 35 bis 50 Millionen Einzelkomponenten<br />

und CPU-Chips, die wegen der höheren Architektur-Verbindungs- und Layout-Komplexität nur bis zu<br />

16 Millionen Komponenten enthalten. Die folgende Abbildung stellt grob die Entwicklungskurve dar, die dieser Zunahme<br />

der Integrationsdichte zugrundeliegt. (Moore´s Law). Wenn allein die Möglichkeiten der schon heute verwendeten<br />

Technologie ausgeschöpft werden, ist bis zum Jahr 2010 nicht mit einem Abflachen der Kurve zu rechnen. 1<br />

1 Vgl. Christian Märtin, Rechnerarchitektur, Struktur, Organisation, Implementierungstechnik, Hanser Studienbücher der <strong>Informatik</strong>, 1994, S. 74


Moores Law zur Entwicklung der VLSI-Integrationsdichte<br />

Neben der bereits erwähnten MOS-Technologie gibt es noch alternative Schaltkreisfamilien, mit denen die logischen<br />

Funktionen technisch realisiert werden können:<br />

21


22<br />

Bezeichnung<br />

Beschreibung Besonderheit Integrationsgrad<br />

• RTL Widerstand-Transistor Logik<br />

Gatter sind durch Widerstände<br />

und Transistoren realisiert<br />

• DL Diodenlogik<br />

Gatter sind durch Widerstände<br />

und Dioden realisiert<br />

• DTL Dioden-Transistor-Logik<br />

Gatter sind durch Widerstände<br />

Dioden und Transistoren realisiert.<br />

• TTL Transistor-Transistor Logik<br />

Gatter sind durch Widerstände<br />

und Transistoren realisiert. TTL<br />

ist eine Weiterentwicklung der<br />

DTL.<br />

• ECL Emittergekoppelte Logik<br />

Gatter sind durch Widerstände<br />

und Transistoren realisiert<br />

• MOS Metalloxydschalttechnik<br />

Der wesentliche Nachteil der Gatter in<br />

RTL ist ihre Belastungsabhängigkeit,<br />

d.h. die Veränderung des Schaltverhaltens<br />

bei Verbindung des Ausgangs mit<br />

den Eingängen anderer Gatter. Deshalb<br />

hat sich die Widerstand-Transistor-Logik<br />

nicht durchgesetzt.<br />

Vorteil gegenüber DTL:<br />

• kürzere Schaltzeit<br />

• geringerer Platzbedarf<br />

• Ausnutzung der Stromverstärkung<br />

der Transistoren<br />

Schaltzeit -<br />

Gatterlaufzeit<br />

25...30 ns.<br />

10 ns<br />

Verwendet bipolare Transistoren 10K ..200K 150...500 ps bei<br />

Kanallängen von<br />

0,3 µ bis 0,8 µ 1<br />

Ermöglicht besonders hohe Integrationsdichte<br />

MOS-Transistor gehört zur Gruppe der<br />

Feldeffekttransistoren<br />

Geringe Verlustleistung, also geringe<br />

Wärmebildung.<br />

Die CMOS-Technologie bildet eine<br />

Kombination von PMOS und NMOS<br />

Technologie und hat von allen dreien<br />

den geringsten Stromverbrauch.. CMOS-<br />

Schaltkreise sind zur Zeit in der Computer-Technik<br />

am weitesten verbreitet.<br />

BiCMOS (bipolar und CMOS)ist eine<br />

Verbindung von ECL und CMOS auf<br />

einem Siliziumchip. Hohe Integrationsdichte,<br />

geringer Leistungverbrauch und<br />

100K..2M<br />

200...1000 ps<br />

bei Kanallängen<br />

von 0,3µ bis 0,8<br />

µ<br />

1 1 µ ist ein Mikrometer und entspricht einem Tausendstel Mill<strong>im</strong>eter. Er ist die übliche Maßeinheit für die Breite der Leiterbahnen auf modernen,<br />

hochintegrierten Schaltungen wie Mikroprozessoren, Speicherbausteinen etc. Je dünner die Leiterbahnen sind, desto kleiner ist die Verlustleistung<br />

(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.<br />

Kleinere Chips aber heißen: preiswertere Herstellung mit geringer Ausschußrate. Die Halbleiterhersteller arbeiten ständig daran, die Leiterbahnen<br />

noch schmaler zu machen. Daher läßt sich an der Leiterbahnbreite auch die Aktualität eines Chips abschätzen.


• GaAs Schaltkreise mit Galiumarsenid-<br />

Transistoren<br />

kurze Schaltzeit.<br />

23<br />

10K...200K 50...200 ps<br />

Jetzt ist es mal wieder genug mit der Gatterebene - zurück zu den Registern, zur Erläuterung des nächsten Register-Typs:<br />

2.1.3 Schieberegister<br />

Ein Schieberegister kann die gespeicherten Bits nach links (und/oder nach rechts) verschieben.<br />

Schieberegister<br />

CLR = H bewirkt, daß das gesamte Register auf 0 gesetzt wird. Wenn CLR wieder auf L geht, können die folgenden<br />

Steuersignale wirken.<br />

• SHL = H : mit jeder positiven Taktflanke werden die gespeicherten Bits um eine Stelle nach links verschoben; das<br />

rechte Bit wird dem Eingang Din entnommen. Auf diese Weise kann das ganze Register mit mehreren Takt<strong>im</strong>pulsen<br />

über den Din-Eingang seriell geladen werden.<br />

• LOAD = H: das Register wird bei der nächsten positiven Taktflanke mit dem anliegenden X geladen. Mit einem<br />

eventuell vorhandenen SHR-Eingang können Rechtsverschiebungen bewirkt werden.<br />

SHL und LOAD dürfen nicht gleichzeitig auf H gesetzt werden!<br />

2.1.3.1 Übung: Signaldiagramm eines 4 Bit Registers<br />

Es ist für ein 4 Bit Register das Diagramm für die gegebene Signalfolge zu vervollständigen: welche Werte<br />

nehmen die Datenausgänge Q 1 - Q 4 in den Phasen t2 und t3 an? Beachten Sie, daß der Dateneingang X 1 -X 4 nicht angegeben<br />

ist !


24<br />

___________<br />

SHL ___| |___________________________<br />

_____<br />

CLR ___________________________| |_________<br />

____<br />

LOAD ________________| |_____________________<br />

H __ __ __ __ __<br />

CLK L __| |__| |__| |__| |__| |____> Zeit t<br />

| t0 | t1 | t2 | t3 |<br />

_____<br />

Din ___| |______________________________________<br />

_____<br />

Q1 ______| |_________________________________<br />

Q2 _______________________________________________<br />

______<br />

Q3 |________________________________________<br />

_____<br />

Q4 ______| |_________________________________<br />

Q4 Q3 Q2 Q1<br />

----------------------<br />

initial 0 1 0 0<br />

nach 1. aufst. Flanke 1 0 0 1<br />

nach 2. aufst. Flanke ......................<br />

nach 3. aufst. Flanke ......................<br />

2.1.3.2 Übung: Multiplikation mit Schieberegister<br />

Der Inhalt eines 8 Bit Schieberegisters betrage binär 0000 0100. Welche Operationen müssen ausgeführt<br />

werden, um den Registerinhalt mit 8 zu multiplizieren ?<br />

2.1.4 Zähler<br />

Ein Zähler zählt die Anzahl der eintreffenden Takte. Er zählt die Takte nur dann, wenn das Signal COUNT gesetzt ist.<br />

Zählerregister


Wenn COUNT = L : keine Änderung des gespeicherten Zählerstandes<br />

Wenn COUNT = H : der Zähler wird bei jeder abfallenden Taktflanke<br />

um 1 erhöht.<br />

2.1.5 Modifizierter Zähler<br />

SIG/ bezeichnet das zu SIG komplementäre Signal.<br />

o----- CLR/ ist aussagelogisch die doppelte Verneinung von<br />

Modifizierter Zähler<br />

----- CLR und hat deshalb die selbe Wirkung, d.h. die Funktion wird zum gleichen Zeitpunkt ausgelöst.<br />

Dieser Zähler wird bei CLR/ = L auf 0 gesetzt.<br />

Der Takteingang ist bei abfallender Flanke aktiv; d.h. bei der nächsten negativen Taktflanke von Signal CLK/ wird der<br />

Zähler um 1 erhöht, wenn COUNT = H ist.<br />

2.1.6 Ringzähler<br />

Ein Ringzähler enthält ein Wort, in dem <strong>im</strong>mer nur ein Bit gesetzt ist, also genau eine Ausgangsleitung aktiv ist.<br />

6-Bit Ringzähler<br />

Wirkungsweise Bei jeder abfallenden Taktflanke werden seine Bits um eine Stelle nach links verschoben.<br />

Das links herausfallende Bit wird rechts wieder eingespeist, so daß man besser von einer<br />

Links-Rotation (und nicht -Verschiebung) sprechen sollte.<br />

Mit dem Signal CLR/ = L bekommt der Ringzähler den initialen Inhalt<br />

Q = 0001<br />

25


26<br />

Wenn dann CLR/ wieder auf H geht, bewirken aufeinanderfolgende Takt<strong>im</strong>pulse Linksrotationen.<br />

Die nächste abfallende Taktflanke verschiebt das Bit auf der MSB- in die LSB-Position; alle übrigen Bits werden um<br />

eine Stelle nach links verschoben.<br />

LSB : Least Significant BIT - das unterste, niederwertigste Bit.<br />

MSB : MOST Significant BIT - das oberste, hochwertigste Bit.<br />

Die Inhalte sind also nacheinander:<br />

Anmerkung<br />

Q = 0010<br />

....<br />

....<br />

....<br />

....<br />

Der Ringzähler wird mit dem CLK-Signal, der (modifizierte) Zähler_2 hingegen mit dem dazu komplementären<br />

CLK/-Signal versorgt.<br />

Dieser Unterschied (von einer halben Taktperiode) ist gewollt; er wird be<strong>im</strong> Zusammenspiel der Komponenten be<strong>im</strong><br />

Aufbau des SAP erläutert.<br />

2.1.6.1 Übung: Funktionen eines Ringzählers<br />

Wann wird rotiert?<br />

Wann wird mit 1 initialisiert?<br />

Wie verhält sich der folgende Ringzähler ?<br />

2.1.6.2 Übung: 6 Bit Ringzähler<br />

Der 6-Bit-Ringzähler von Seite 25 sei mit einem Takt der Frequenz 1 kHz verbunden. CLR/ werde auf L<br />

und dann auf H gesetzt. Wie sieht das Impulsdiagramm für die Ausgänge Ti aus, in Abhängigkeit vom CLK-Signal ?


H __ __ __ __ __<br />

| v | v | v | v | v<br />

CLK L __| |__| |__| |__| |__| |____> Zeit t<br />

_____<br />

T1 |__________________________________________<br />

T2 _______________________________________________<br />

T3 ______________________________________________<br />

T4 _______________________________________________<br />

T5 _______________________________________________<br />

T6 _______________________________________________<br />

T1 - T6 bilden den Inhalt des 6 Bit Ringzählers<br />

27


28<br />

2.2 Bus-System<br />

Jetzt sind einige Registertypen bekannt. Sie sollen nun in einem System verbunden werden.<br />

Erinnerung an den Taschenrechner: Die Operanden werden aus dem Datenspeicher an das Rechenwerk über eine Datenleitung,<br />

einen Datenbus geleitet.<br />

Ein Bus besteht aus einer Menge von Leitungen, die von mehreren Komponenten als gemeinsamer Weg für den Transfer<br />

von Daten genutzt werden; über ein Bussystem werden die Daten den einzelnen Komponenten zur Verfügung gestellt.<br />

Ein Bus hat weder eine speichernde noch eine verarbeitende Eigenschaft.<br />

Beispiel: Im folgenden Beispiel werden 3 bisher bekannte Registern über einen BUS miteinander verbunden.<br />

Verbindung von drei Registern über einen Bus<br />

In den nächsten fünf Taktzyklen liegen folgende Steuersignale an:(der Zähler ist mit 0 initialisiert)<br />

Inhalt von<br />

C A B Bus<br />

C C , L A , L B 1 1 1 1<br />

C C , SHL A , L B 2 2 2 2<br />

C C , SHL A , L B 3 4 4 4<br />

C C , L B 4 4 4 4<br />

C C , L B 5 4 4 4<br />

Das Problem wird einigermaßen deutlich: Der letzte Baustein <strong>im</strong> Bussystem (hier Register B) sieht <strong>im</strong>mer die Information,<br />

die ein vor ihm liegender Baustein auf den Bus schickt. Wenn L B = H, dann erhält B den Inhalt von A oder von C.<br />

Um zu verhindern, daß jedes Register unkontrolliert seine Daten auf den Bus gibt, verwendet man sogenannte<br />

Tri-State-Register.


2.2.1 Topologie von Kommunikationspfaden<br />

Die Verbindung zwischen den einzelnen Komponenten eines Rechners kann jedoch nicht nur durch einen Bus, sondern<br />

auf sehr unterschiedliche Weise realisiert sein.. Das folgende Bild zeigt die gebräuchlichsten Varianten von Kommunikationspfaden:<br />

vollständige Vernetzung<br />

Ring<br />

Sternverbindung<br />

Vollständige Vernetzung Das einfachste Verbindungskonzept ist die vollständige Vernetzung. Es wird jede Komponente<br />

mit jeder anderen Komponente über jeweils l Leitungen verbunden. Der Nachteil<br />

bei dieser Topologie: je mehr Leitungen l verwendet und je mehr Komponenten<br />

verknüpft werden, desto höher ist der Hardwareaufwand und damit der Preis. Vorteil:<br />

max<strong>im</strong>ale Übertragungsrate wegen der Parallelität (jede Komponente kann mit einer<br />

anderen Komponente zu einem Zeitpunkt kommunizieren)<br />

Sternverbindung Preiswertere Alternative zur vollständigen Vernetzung, bei der alle Komponenten an<br />

einen speziellen zentralen Knoten angeschlossen sind, der eine Verteilerfunktion erfüllen<br />

muß. Je nach Komplexität des zentralen Verteilers können bei k Komponenten bis<br />

zu k/2 Knoten gleichzeitig Transferoperationen ausführen.<br />

Ring Die Ringstruktur benötigt nur k Verbindungen, jede Komponente hat aber nur einen<br />

linken und einen rechten Nachbarn, mit der sie kommunizieren kann. Jeder Knoten muß<br />

Nachrichten, die nicht für ihn best<strong>im</strong>mt sind, weiterreichen können. Jede Komponente<br />

ist also zugleich Verteiler und Empfänger bzw. Sender. Diese Struktur wird vor allem<br />

zum Verbinden von Rechnern in einem Local Area Network (LAN) verwendet. Nachteil:<br />

mangelhafte Ausfallsicherheit, da be<strong>im</strong> Ausfall einer Komponente das gesamte<br />

System funktionsunfähig wird.<br />

Beispiel: Der Token Ring der Firma IBM. Jedes beteiligte Computersystem ist über<br />

einen Controller mit dem Netz verbunden. Kommunikationswünsche teilt jeder Rechner<br />

seinem zugehörigen Controller mit, der dann das Notwendige veranlaßt. Wie wird eine<br />

Kommunikation abgewickelt? Im Ring kreist von Controller zu Controller ein „Token“,<br />

das ist ein in best<strong>im</strong>mter Weise belegtes Byte. Nur der Computer kann senden, dessen<br />

Controller das Token besitzt. Damit ein Computer eine Nachricht senden kann, muß der<br />

zugehörige Controller also das Token „fangen“ und aus dem Ring entfernen. Gefangen<br />

werden kann das Token, wenn es auf seiner Reise den Controller erreicht. Nachdem das<br />

Bus<br />

29


30<br />

Token entfernt ist, weiß der Computer, daß kein anderer Knotenrecher Daten sendet,<br />

und er kann selbst senden. Nach Beendigung der Datenübermittlung gibt der Controller<br />

das Token wieder frei und läßt damit einem anderen potentiellen Sender die Chance, das<br />

Token zu fangen und dann zu senden. 1<br />

Bus Es ist die bei Rechnern am häufigsten verwendete Verbindungsstruktur, da der Hardwareaufwand<br />

und damit die Kosten am niedrigsten sind. Außerdem ist es sehr einfach,<br />

neue Komponenten anzuschließen (Erweiterbarkeit des Systems) . Nachteil: Es kann<br />

jeweils nur ein Knoten Transferoperationen durchführen. 2<br />

1 Duden, <strong>Informatik</strong>, Mannhe<strong>im</strong> 1993 S. 773<br />

2 C.Müller Schloer RISC-Workstation Architekturen S. 241f<br />

3 Duden, <strong>Informatik</strong>, Mannhe<strong>im</strong> 1993 S. 114f<br />

Beispiel: Ein sehr verbreitetes Rechnernetz, das auf einer busartigen Struktur basiert, ist<br />

das Ethernet, das Ende der 70er Jahre von der Firma Xerox entwickelt wurde. Das Ethernet<br />

besitzt keinen zentralen Controller, vielmehr wird die Auswahl eines Senders<br />

sowie die korrekte Übermittlung der Daten von den angeschlossenen Computern nach<br />

einem auf den ersten Blick aufwendigen Schema (Protokoll) selbst vorgenommen. A<br />

sendet an B: Zuerst übermittelt A die Daten an sein Ethernet Interface. Das Interface<br />

hört zunächst den Ether ab, um festzustellen, ob er gerade für eine andere Datenübertragung<br />

benutzt wird. Ist der Ether frei, so sendet das Interface von A die Daten sofort.<br />

Andernfalls wartet das Interface, bis die laufende Übertragung beendet ist und startet<br />

anschließend eine Datenübertragung. Problem: Zwei Rechner wollen senden und warten<br />

auf die Freigabe des Ether durch einen dritten Rechner. In diesem Fall starten beide<br />

gleichzeitig ihre Datenübertragung, sobald der dritte Computer seine Übertragung beendet<br />

und den Ether freigegeben hat. Es kommt zu einer Kollision, da sich die Signale der<br />

beiden Sender gegenseitig stören. Eine Kollision von Signalen mehrerer Sender wird<br />

dadurch entdeckt, daß jeder Sender stets gleichzeitig den Ether abhört und überprüft, ob<br />

das abgehörte Signal und das gesendete übereinst<strong>im</strong>men. Stellt der Sender Differenzen<br />

zwischen gesendetem und abgehörtem Signal fest, so sendet er sofort ein Störsignal, um<br />

allen übrigen Geräten mitzuteilen, daß eine Kollision festgestellt wurde. Anschließend<br />

bricht er seine Sendung ab, wartet eine zufällig gewählte Zeitspanne, um die Wahrscheinlichkeit<br />

einer erneuten Kollision zu vermindern. 3<br />

Sternverbindung


Ethernet<br />

Token Ring<br />

2.2.2 Kennwerte moderner Standardbusse<br />

AT-Bus EISA Future-<br />

Bus<br />

Micro-<br />

Channel<br />

VESA SCSI VME-BUS PCI<br />

Firma IBM - - IBM Shugart Motorola<br />

Einführungs- 1981 1989 1984 1987 > 1990 1979 1981 1993<br />

31


32<br />

jahr<br />

Protokoll<br />

Bustakt MHz<br />

Adreßbreite<br />

Datenbreite<br />

Blocktransfer<br />

syn-<br />

chron4,7<br />

7<br />

24<br />

8,16<br />

ja (DMA)<br />

2.3 Tri-State-Register<br />

syn-<br />

chron4,7<br />

7<br />

32<br />

8,16,32<br />

ja<br />

asynchron<br />

32<br />

8..256<br />

ja<br />

asynchron<br />

8,16,32<br />

ja<br />

synchron<br />

> 32<br />

32<br />

32<br />

ja<br />

syn/asyn<br />

8<br />

8+1 Par.<br />

ja<br />

asynchron<br />

32<br />

8,16,32<br />

ja<br />

asynchron<br />

Tri-State-Schalter haben den Zusammenbau von Rechnern, deren Komponenten über einen Bus verbunden sind, erheblich<br />

vereinfacht.<br />

Eine Digitalschaltung hat normalerweise die zwei Ausgangszustände H und L, bzw. 1 und 0.<br />

Ein Tri-State-Element hat zusätzlich noch einen hochohmigen 3. Ausgangszustand.<br />

Das Symbol des Tri-State-Schalters:<br />

|\<br />

Din_______| \_________ Dout<br />

| /|<br />

|/ |<br />

ENABLE_______|<br />

Die Wirkungsweise:<br />

Enable<br />

Din Dout<br />

L X offen<br />

H L L<br />

H H H<br />

• ENABLE = H: Dout = Din (Schalter geschlossen)<br />

• ENABLE = L: der Ausgang ist vom Eingang getrennt (Schalter offen)<br />

Eine Hauptanwendung der Tri-State-Schalter besteht darin, den (normalen) Ausgang eines Registers mit 2 Zuständen in<br />

einen Tri-State-Ausgang zu wandeln.<br />

Aus einem (normalen) Register mit zwei möglichen Ausgangszuständen wird durch Hinzufügung von Tri-State-<br />

Schaltern an den Ausgängen ein Tri-State-Register:<br />

> 32<br />

32<br />

64<br />

ja


x3 x2 x1 x0<br />

| | | |<br />

V V V V<br />

-------------------------<br />

| |------ LOAD<br />

| A | | _________| LOAD |-- L C<br />

| |_________| | | |<br />

E A --| ENABLE |_________ | | C B | | _________| LOAD |-- L D<br />

| |_________| | | |<br />

E B --| ENABLE |_________ | | D


34<br />

2.3.1 Übung: Datentransfer mit Tri-State-Registern<br />

Die vier Register in der Abb. oben haben die Inhalte<br />

A = 0011 B = 0110 C = 1001 D = 1100<br />

Welche Vorgänge laufen ab und was steht in den Registern, wenn E C und L B auf H gesetzt werden, und ein positiver<br />

Takt<strong>im</strong>puls aufgetreten ist ?


2.4 Multiplexer<br />

Ein Multiplexer ist ein Gerät, das Signale von mehreren Eingangsleitungen auf eine Ausgangsleitung überträgt. Welche<br />

der Eingangsleitungen zu einem Zeitpunkt mit der Ausgangsleitung verbunden wird, kann entweder durch Steuerleitungen<br />

von außen festgelegt oder vom Multiplexer selbständig best<strong>im</strong>mt werden.<br />

Multiplex bezeichnet einen Datenübertragungskanal, bei dem entweder ein Sender mit mehreren Empfängern oder ein<br />

Empfänger mit mehreren Sendern verbunden ist. Eine Multiplexverbindung ist <strong>im</strong> allgemeinen nur sinnvoll, wenn die<br />

Arbeitsgeschwindigkeit des Einzelgerätes (Sender bzw. Empfänger) wesentlich größer ist, als die der angeschlossenen<br />

Geräte (Empfänger bzw. Sender). Multiplexkanäle lohnen sich zum Beispiel für die Verbindung relativ langsamer Drucker<br />

mit einer Steuereinheit. Im Multiplexbetrieb unterscheidet man zwischen:<br />

Art Beschreibung Beispiel<br />

s<strong>im</strong>plex Datenübertragungskanal, bei dem die eine Datenrichtung<br />

nur als Sender von Daten und die andere nur<br />

als Empfänger verwendet werden kann.<br />

halbduplex<br />

Datenübertragungskanal, bei dem die eine Datenrichtung<br />

als Sender von Daten und die andere als Empfänger<br />

verwendet werden kann.<br />

duplex Datenübertragungskanal, bei dem beide Datenendeinrichtungen<br />

gleichzeitig Daten senden und empfangen<br />

können.<br />

Quellen<br />

X0 X1 ... Xk-1<br />

|/ |/ |/<br />

/|m /| m /| m<br />

| | |<br />

| | |<br />

v v v<br />

----------------------<br />

------> | |<br />

Select : | Multiplexer |<br />

------> | |<br />

----------------------<br />

|/<br />

/| m<br />

v<br />

Z<br />

35<br />

Radio- und Ferhsehübertragungen<br />

Sprechfunkgeräte<br />

Telefon<br />

Eines von den k Leitungsbündeln kann seine Eingangswerte an den Ausgang weitergeben. Die Auswahl geschieht durch<br />

die 'Select'-(Input)Leitungen.<br />

Beispiel:


36<br />

|x0 |x1 |x2 |x3<br />

| | | |<br />

v v v v<br />

-----------------<br />

s0----> | |<br />

s1----> | |<br />

-----------------<br />

|<br />

v<br />

z<br />

s0 s1 z<br />

0 0 0<br />

0 1 1<br />

1 0 2<br />

1 1 3<br />

Mit k Select-Leitungen kann man einen von 2 k Eingängen auf den Ausgang durchschalten. Welche Datenquelle durchgeschaltet<br />

wird, hängt nicht vom Dateneingangssignal ab, sondern vom Steuersignal-Eingang, also vom Zustand der<br />

Selectleitungen.<br />

2.5 Decodierer<br />

S0<br />

S1<br />

X0 X1 X2 X3<br />

&<br />

& & &<br />

≥ 1<br />

Digitallogische Schaltung eines Multiplexers<br />

Ein Decodierer entschlüsselt eine 0-1-Kombination (Eingangswert) in eine 1, die an genau einem Ausgang des Decodierers<br />

erscheint.<br />

Der Decodierer in symbolischer Darstellung:<br />

Z


x2 x1 x0<br />

| | |<br />

v v v<br />

------------------------<br />

| 1/8 |<br />

| Decodierer |<br />

------------------------<br />

| | | | | | | |<br />

v v v v v v v v<br />

z7 z6 z5 z0<br />

Beispiel:<br />

Funktion und Realisierung eines 1/4 Decodierers.<br />

Seine Funktion sei festgelegt durch:<br />

x1 x0 aktiver Ausgang z<br />

0 0 0<br />

0 1 1<br />

1 0 2<br />

1 1 3<br />

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<br />

0. Die Realisierung:<br />

Schaltbild eines 1 aus 4 Decodierers<br />

Welcher Ausgang aktiviert wird, hängt vom Dateneingangssignal ab, ist also eine Funktion von X0 und X1.<br />

2.6 Speicher<br />

Ein Speicher kann (in einer ersten Näherung) als eine Anzahl von Registern aufgefaßt werden; eine typische Größenordnung<br />

bei Mikro-Rechnern lag in den 80gern bei 65536 (= 64K) und liegt heute zwischen 4 und 128 Megabyte. Im Speicher<br />

eines Rechners können Befehle und Daten abgelegt werden. Die Begriffe Adresse und Inhalt sind zu unterscheiden.<br />

Der Inhalt einer Zelle ist binär in ihr abgelegt. Die einzelnen Speicherzellen kann man sich mit Nummern 0 bis ... durchnumeriert<br />

vorstellen. Die Nummern sind aber nirgends <strong>im</strong> Speicher wirklich abgelegt, sondern allein durch die Anordnung<br />

der Zellen ist hardwaremäßig eine Reihenfolge festgelegt. Diese Nummern sind die Adressen der Speicherzellen.<br />

37


38<br />

Speicher<br />

Daten<br />

2.6.1 ROM (read-only-memory)<br />

Adresse<br />

Ein ROM stellt die einfachste Speicherart dar. Seine Speicherzellen haben feste Inhalte, die nur gelesen werden können.<br />

ROMs werden vom Hersteller nach Kundenwunsch durch den Einbau von Dioden festprogrammiert ausgeliefert, so daß<br />

ein nachträgliches ändern des Speicherinhaltes nicht mehr möglich ist. ROMs werden vorwiegend als Speicher für feste<br />

Programme (z.B. Betriebssystemkomponenten) und für unveränderbare Daten verwendet. Durch Anlegen best<strong>im</strong>mter<br />

Signale können die einzelnen Speicherzellen gelesen werden. Dabei bedeutet das Lesen einer Zelle, daß der Inhalt der<br />

Zelle an dem ROM-Ausgang erscheint. Um n Speicherzellen ansprechen zu können, sind offenbar n Adreßleitungen<br />

erforderlich,- für jede Zelle eine Leitung. Da die Anzahl n sehr groß sein kann, würde das zu einem nicht vertretbaren<br />

Hardware-Aufwand führen. Deshalb wird eine Adreß-Decodierung eingeführt.<br />

Speicherbaustein mit integriertem Decodierer<br />

Mit Hilfe dieses 1/8 Decodierers lassen sich die Zellen eines 8 Byte großen Speichers mit 3 (und nicht mit 8 !) Adreßleitungen<br />

ansprechen. Die Adreß-Decodierung ist Teil des Speicher-Bausteins.<br />

Anmerkungen:<br />

. der Speicherbaustein hat: 3 Adreß-(Input-)Leitungen und 4 Daten-Leitungen<br />

. der 1/8 Decodierer erzeugt jeweils einen aktiven Ausgang zur Adressierung einer Speicherzelle<br />

. mit n Adreßleitungen können max<strong>im</strong>al 2 n Speicherzellen adressiert werden<br />

Das ganze noch mal ein bißchen genauer mit einem 4*8 Bit Lesespeicher mit Diodenzellen:


Adreßleitungen<br />

a<br />

b<br />

Adressendecoder<br />

&<br />

&<br />

&<br />

&<br />

A0<br />

A1<br />

A 3<br />

Diode<br />

Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0<br />

4*8 Bit ROM mit Diodenspeicherzellen 1<br />

Dieser Lesespeicher wurde nach folgender Belegungstabelle programmiert:<br />

2.6.2 PROM, EPROM und EEPROM<br />

b a Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0<br />

0 0 0 1 1 0 0 0 1 0<br />

0 1 1 0 0 0 0 0 0 0<br />

1 0 1 1 1 1 0 0 0 1<br />

1 1 0 0 0 0 0 0 0 0<br />

Es handelt sich um Varianten von Festwertspeichern, die unabhängig von einer Stromversorgung ihren Inhalt behalten.<br />

Dem ROM haftet der Nachteil an, daß sich dessen Herstellung nur dann lohnt, wenn große Stückzahlen <strong>im</strong> jeweiligen<br />

Programm gefertigt werden. Die Halbleiterhersteller bieten aus diesem Grund Festwertspeicher an, die der Anwender<br />

selbst mit Hilfe spezieller Geräte programmieren kann: PROM (programmable ROM).Bei der Programmierung werden<br />

die in einer Matrixanordnung befindlichen Dioden von den Ausgangsleitungen getrennt, und zwar dadurch, daß nach der<br />

Anwahl einer best<strong>im</strong>mten Adresse ein Strominpuls auf die entsprechende Diodenstrecke gegeben wird, der ein mit ihr in<br />

Reihe liegendes Sicherungselement zum Abschmelzen bringt. Damit n<strong>im</strong>mt diese Speicherzelle das 0-Signal an. Der<br />

Speicher ist nur ein einziges mal programmierbar.<br />

Be<strong>im</strong> EPROM (erasable PROM) handelt es sich um einen programmierbaren und wieder löschbaren Festwertspeicher.<br />

Das Programmieren erfolgt elektrisch durch Aufladen einer schwebenden Gate-Elektrode eines MOS-<br />

Feldeffekttransistors. Diese Gate Ladung bleibt etwa 10 Jahre erhalten und gewährleistet den Inhalt des Speichers auch<br />

wenn die Betriebsspannung abgeschaltet wird. 2<br />

1 Einführung in die Elektronik 2, Kontaktlose Signalverarbeitung, Stam Verlag Köln, 1989, S.189<br />

2 Den genauen Aufbau des EPROMS finden Sie zum Beispiel bei: Einführung in die Elektronik 2, Kontaktlose Signalverarbeitung, Stam-Verlag Köln,<br />

1989, S. 194ff<br />

39


40<br />

Das Löschen erfolgt optisch mit intensiver Einwirkung von UV-Licht auf die Speicherzellen durch ein <strong>im</strong> IC-Gehäuse<br />

befindliches Quarzfenster. Durch den Photoeffekt wird die Isolierschicht um das Floating-Gate schwach leitend, so daß<br />

die Ladungsträger abwandern können. Der Löschvorgang dauert ungefähr 20 Minuten.<br />

Es verbindet mit gewissen Einschränkungen die Vorteile des RAM mit und eines PROM. Es kann vom Hersteller oder<br />

Anwender mit einem dauerhaften Inhalt versehen werde. Den gesamten Inhalt kann man wieder löschen, indem der<br />

Speicherbaustein einige Zeit lang einer starken ultravioletten Strahlung ausgesetzt wird. Hierzu besitzt sein Gehäuse an<br />

der Oberseite ein verschließbares Fenster, durch das die Strahlung den Schaltkreis erreichen kann. Anschließend kann<br />

das EPROM einen neuen Inhalt erhalten.<br />

Ein EEPROM ist ein elektrisch löschbares EPROM. Es hat den Vorteil, daß der Baustein be<strong>im</strong> Löschen in der Schaltung<br />

verbleiben kann.<br />

Unter der Zugriffszeit eines Speichers versteht man die Zeit, die zwischen dem Anlegen der Adreßbits und dem Anstehen<br />

des Inhalts am Ausgang vergeht. Diese Zeit ist sehr stark von der verwendeten Technologie abhängig.<br />

2.6.3 Siliziumfestplatten - die FLash-Speicher<br />

In den letzten Jahren ist eine neue Art nicht flüchtiger Speicher auf den Markt gekommen, die häufig in tragbaren Klein-<br />

und Kleinstcomputern als Ersatz für Diskettenlaufwerke oder Festplatten dienen: die Flash-Speicher. Der Aufbau der<br />

Speicherzellen st<strong>im</strong>mt <strong>im</strong> wesentlichen mit denen der EEPROM überein. Sie benötigen aber nur eine Lösch- und Programmierspannung<br />

von 12 V, so daß sich problemlos 10000 Programmier- und Löschzyklen ausführen lassen. Flash-<br />

Speicher können fast so flexibel programmiert werden wie RAM-Chips, wobei sie aber <strong>im</strong> Gegensatz zu diesen die eingeschriebenen<br />

Daten nicht verlieren. Im PC-Bereich werden Flash-Speicher bereits häufig als Datenträger für das BIOS<br />

(Basic Input Output System) eingesetzt. Neue BIOS Versionen können so auf Diskette distributiert oder in Mailboxen<br />

zum Down-Load angeboten werden. Die Kosten für das Wechseln von EPROMs entfallen.<br />

2.6.4 Tri-State-ROM<br />

Ergänzt man die Datenleitungen eines Speichers durch Tri-State-Schalter, so erhält man Tri-State-Speicher. Die Abbildung<br />

zeigt einen 2048 Bytes großen ROM mit 11 Adreß- und 8 Daten-Leitungen.Ein L an ENABLE bewirkt, daß der<br />

Ausgng hochohmig wird; mit ENABLE = H steht der Inhalt des adressierten Bytes am Ausgang an.<br />

Tri-State-ROM


2.6.5 RAM<br />

Ein RAM (random-access memory oder auch read-write memory) ist vergleichbar mit einer Menge von adressierbaren<br />

Registern. Wenn eine Adresse angelegt ist, kann der Inhalt einer Speicherzelle gelesen oder neu beschrieben werden.<br />

• Kernspeicher: der Inhalt bleibt auch bei abgeschalteter Spannung erhalten (nicht flüchtig); Kernspeicher haben<br />

jedoch einen hohen Leistungsverbrauch, einen langsamen Zugriff und eine geringe Packungsdichte.<br />

• Halbleiterspeicher: bei Abschalten der Spannung geht der Inhalt verloren (flüchtig). Man unterscheidet zwischen<br />

statischen und dynamische Halbleiterspeichern.<br />

Bei dynamischen Bausteinen, sogenannten DRAMs, muß die in einem Kondensator gespeicherte Information in festen<br />

Abständen (einige ms) aufgefrischt (refresh) werden. Während eines Refreshzyklus ist kein Speicherzugriff<br />

möglich, da ist der Speicher mit sich selbst beschäftigt. Das führt zu einer längeren Zugriffszeit als bei statischen<br />

RAMs. Aus Kostengründen werden Hauptspeicher üblicherweise mit DRAMs aufgebaut.<br />

Bei SRAM Bausteinen muß die in einem Flipflop gespeicherte Information nicht aufgefrischt werden. Die Speicherzelle<br />

von SRAM Bausteinen benötigt mehr Transistoren als eine DRAM-Zelle, so daß auf der gleichen Chipfläche<br />

nur ein Viertel der Speicherkapazität erreicht werden kann, jedoch ist die Zugriffszeit bei SRAMs deutlich kürzer.<br />

Sie werden daher für den Aufbau von schnellen Zwischenspeichern (sogenannten Caches - denken Sie an den Secondlevel<br />

Cache von 256 kB auf dem Mainboard Ihres Computers) verwendet<br />

2.6.5.1 Bauformen für Hauptspeichermodule<br />

DIP Dual Inline Package<br />

Schaltungsgehäuse mit in zwei Reihen angeordneten Aschlüssen. Sie werden in heutigen PCs und Workstations<br />

nicht mehr als Hauptspeichermodule verwendet. Üblich waren Speichergrößen von 32, 64 und 128KB.<br />

SIP Single Inline Package Module.<br />

Schaltungsgehäuse mit in einer Reihe angeordneten Aschlüssen. In dieser Bauform wurden die ersten 1MB<br />

Speicherbausteine hergestellt. Sie wurden abgelöst von den<br />

SIMM Single Inline Memory Module<br />

Dabei sind die Speicherbausteine auf eine kleine Platine aufgelötet. Die Platinen werden hochkannt in entsprechende<br />

Fassungen eingesetzt. Mit dieser Technik werden sehr hohe Speicherdichten erreicht. Heute sind Speicherbausteine<br />

mit den Kapazitäten von 1 und 4MB gebräuchlich.<br />

2.6.5.2 Aufbau von DRAM Bausteinen<br />

Bei DRAM Bausteinen werden die Speicherzellen üblicherweise Matrixförmig angeordnet. Die Adressen werden in eine<br />

Row- und eine Column-Adresse aufgeteilt. Mit dem RAS-Signal (row-address strobe) wird die Row-Adresse in dem<br />

Register RA abgespeichert und anschließend die entsprechende Reihe ausgelesen. Für den Begriff Reihe kann gleichbedeutend<br />

auch Wort oder Page verwendet werden. Durch das darauffolgende CAS-Signal (column address strobe) wird<br />

der Spaltenanteil der Adresse in das Register CA eingelesen. Die Spaltenadresse legt fest, auf welche Bits innerhalb<br />

einer Reihe zugegriffen wird. Be<strong>im</strong> Lesezugriff wird die Information auf den Ausgang gelegt, bei einem Schreibvorgang<br />

wird die neue Information an der entsprechenden Stelle <strong>im</strong> ausgelesenen Wort eingeschoben und be<strong>im</strong> Zurückschreiben<br />

gespeichert.<br />

Die Speicherzugriffszeit beträgt üblicherweise 70 bis 100 ns, die Speicherzykluszeit zwischen 130 und 200 ns. Der Unterschied<br />

zwischen der Zugriffs- und Zykluszeit ergibt sich aus einer sogenannten Precharge-T<strong>im</strong>e, die wegen interner<br />

Umladevorgänge abgewartet werden muß, bevor der nächste Zugriff gestartet werden kann.<br />

41


42<br />

Am folgenden Blockschaltbild eines DRAMs läßt sich sehen, daß neben den eigentlichen Lesezellen in einem Speicherbaustein<br />

noch Verstärker, Adreßdecodierer, Puffer für Adressen und Daten und Steuerlogik mit den entsprechenden<br />

Signalen enthalten sind. Es sind aber nur sehr wenig Kontakte zur Außenwelt notwendig, nämlich die Adreßleitungen<br />

und die Steuersignale, die die gewünschte Funktion (Lesen oder Schreiben) angeben.<br />

Adreßleitungen<br />

mit der von<br />

der CPU<br />

angefordertenAdresse<br />

Steuersignale<br />

für<br />

die angeforderte<br />

Funktion:<br />

Lesen oder<br />

Schreiben<br />

Speicherblock<br />

Speichersteuerung<br />

Adreßdekodierer<br />

Steuersignale<br />

......<br />

RAS (row address strobe)<br />

Row<br />

Address<br />

Register<br />

Column<br />

Address<br />

Register<br />

CAS (column<br />

address strobe)<br />

Wortauswahl<br />

Datenbus<br />

Abtast-Verstärker<br />

Speicherzellen-matrix<br />

aus Kondensatoren<br />

Bit-Auswahl + Treiber<br />

Daten<br />

Interner Aufbau eines DRAM Speicherbausteins und seine Verbindugen zur Außenwelt<br />

2.6.5.3 Beschleunigung von Blockzugriffen<br />

Read<br />

/Write<br />

Moderne DRAM-Bausteine verfügen über spezielle Zugriffsmechanismen, die einen beschleunigten Zugriff auf Daten<br />

innerhalb einer Reihe ermöglichen. Der grundlegende Mechanismus ist dabei der, daß die Row-Adresse nur einmal angelegt<br />

werden muß und sich anschließend verkürzte Zugriffe mit reinen Column-Adressen durchführen lassen. An einem<br />

Beispiel wird erläutert, wie sich verkürzte Blockzugriffe auf die Blockzugriffszeiten auswirken:<br />

Die Taktfrequenz eines Prozessors sei 25 MHz. Ein Taktzyklus dauert damit 40 ns. Vom Beginn eines Speicherzugriffs<br />

bis zum Bereitstellen des Datums vergehen 3 Taktzyklen, d.h. die Zugriffszeit beträgt 120 ns. Bevor der nächste Speicherzugriff<br />

gestartet werden kann, müssen weitere 2 Taktzyklen (Precharge T<strong>im</strong>e) abgewartet werden, d.h. die Speicher-


zykluszeit beträgt 5 Taktzyklen und damit 200 ns. Blockzugriffe können jedoch beschleunigt durchgeführt werden. Die<br />

Zugriffszeit für das erste Wort beträgt wiederum 3 Taktzyklen, danach steht aber <strong>im</strong> Abstand von je 2 Taktzyklen das<br />

nächste Wort zur Verfügung. Zur Gesamtzeit eines Blockzugriffs muß man noch weitere zwei Taktzyklen addieren, da<br />

vor Beginn eines Folgezugriffs noch die Precharge-Zeit abgewartet werden muß. Ein Blockzugriff auf 8 Worte innerhalb<br />

einer Reihe dauert damit 3 + 7*2 + 2 Taktzyklen und damit 760 ns. Wären 8 Einzelzugriffe durchgeführt worden, hätte<br />

man 8*5 Taktzyklen oder 1600 ns benötigt.<br />

Eine andere Möglichkeit zur Beschleunigung von Blockzugriffen ist das Interleaving. Hierbei wird das Speichersystem<br />

in 2 k unabhängige Module, sogenannte Speicherbänke unterteilt. Die Daten werden dabei so auf die Bänke verteilt, daß<br />

aufeinanderfolgende Worte <strong>im</strong> Adreßraum in aufeinanderfolgenden Bänken abgespeichert werden. Die Speicherbänke<br />

sind so ausgelegt, daß sie vollständig unabhängig voneinander arbeiten können. Es können deshalb Folgeadressen ausgegeben<br />

werden, bevor der aktuelle Zugriff abgeschlossen ist. Durch diese zeitliche Verzahnung erhält man bei 2 k unabhängigen<br />

Bänken eine Beschleunigung um einen Faktor =2 k . 1<br />

2.6.6 Tri-State RAM<br />

Die meisten RAMs haben Tri-State-Ausgänge, d.h. die Ausgänge des RAMs können mit einem Bus verbunden und von<br />

ihm getrennt werden. Ein RAM mit typischen Eingangssignalen:<br />

WE<br />

ADR<br />

CE<br />

Data in<br />

RAM<br />

Data out<br />

Die Adreß-Bits wählen die Speicherzelle aus. Die Steuersignale WE und CE legen die Operation fest: schreiben, lesen<br />

oder nichts tun.<br />

WE bezeichnet das Write Enable-Signal<br />

CE bezeichnet das Chip Enable-Signal<br />

Die Funktionen des RAMs:<br />

CE WE Funktion Ausgang<br />

H H schreiben getrennt (hochohmig)<br />

H L lesen verbunden<br />

L X ---- getrennt (hochohmig)<br />

• Schreib-Operation: die Eingangs-Daten D IN werden bei der adressierten Speicherzelle abgelegt. Die Ausgabe-<br />

Datenleitungen sind hochohmig.<br />

1 C.Müller Schloer RISC-Workstation Architekturen S. 125ff<br />

43


44<br />

• Lese-Operation: der Inhalt der adressierten Speicherzelle erscheint an den Ausgangsleitungen, weil die Tri-State-<br />

Schalter geschlossen sind.<br />

• keine Operation: die Inhalte aller Zellen bleiben ungeändert; der Ausgang ist hochohmig.<br />

Beispiel: ein RAM-Baustein mit Tri-State-Ausgängen<br />

--------<br />

A3 |1 16| VCC<br />

CE |2 15| A2<br />

WE |3 14| A1<br />

D3 |4 13| A0<br />

Q3 |5 12| D0<br />

D2 |6 11| Q0<br />

Q2 |7 10| D1<br />

GND |8 9| Q1<br />

--------<br />

Dieser 64-Bit RAM ist in 16 Worten mit jeweils 4 Bits organisiert.<br />

Die Bedeutung der verschiedenen Pins:<br />

• 4 Adreß-Bits (A0 - A3) können auf 24 = 16 Worte zugreifen.<br />

Pin_1 (A3), Pin_15 (A2), PIN_14 (A1) und Pin_13 (A0).<br />

• Die Eingabe-Daten:<br />

Din_4 (D3) Pin_6 (D2), Pin_10 (D1) und Pin_12 (D0).<br />

• Die Ausgabe-Daten:<br />

Pin_5 (Q3), Pin_7 (Q2), Pin_9 (Q1) und Pin_11 (Q0).<br />

Chip-Enable Pin_2 - Write-Enable Pin_3<br />

• Spannungsversorgung Pin_16: +5 Volt - Erdung Pin_8.<br />

Ein Impulsdiagramm verdeutlicht das Lesen und Schreiben eines RAMs mit den Signalen CE und WE :


________________________<br />

A0 _ _ _ H _ _ _ _ _ _ _ _ |_____L________<br />

_________________________________________<br />

A1 _ _ _ _ _ _ _ _ H _ _ _ _ _ _ _ _ _ _ _ _<br />

_________________<br />

A2 ________________L_______| _ _ _ _H_ _ _ _ _<br />

__________________________________________<br />

A3 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _<br />

______________________<br />

D0 _____L____________|_ _ _ _ _ H _ _ _ _ _ _<br />

D1 _________________L________________________<br />

__________________________________________<br />

D2 _ _ _ _ _ _ _ _ _H_ _ _ _ _ _ _ _ _ _ _ _ _<br />

______________________<br />

D3_______L__________|_ _ _ _ _ _H_ _ _ _ _ _<br />

Q0 __________________________________________<br />

Q1 __________________________________________<br />

Q2 __________________________________________<br />

Q3 __________________________________________<br />

____________________________________________<br />

CE __|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ |_<br />

__ __<br />

WE ____| |_____________________________| |______<br />

^ ^ ^ ^ ^ ^ ^<br />

t1 t2 t3 t4 t5 t6 t7<br />

2.6.7 Ein kleiner 16 Worte * 8 Bit breiter Speicher<br />

Es werden zwei RAM-Bausteine so zusammengeschaltet, daß mit jeder der 16 möglichen Adressen auf ein 8-Bit Wort<br />

zugegriffen wird. Dabei wird gezeigt, wie Befehle und Daten <strong>im</strong> Speicher abgelegt werden können, noch bevor der<br />

Rechner läuft.<br />

45


46<br />

Schaltbild eines 8 Bit breiten RAMs<br />

• Adressierung des Speichers: die Adreßbits werden von Schaltern (A3 A2 A1 A0) geliefert. Es kann jede Adresse<br />

von 0000 bis 1111 eingestellt werden. Wirkung: Schalter oben (offen) enspricht einer '1'.<br />

• Eingabedaten setzen: Die Datenbits werden von zwei anderen Schalter-Zeilen geliefert:<br />

das höherwertige Nibble: D7 D6 D5 D4<br />

das niederwertige Nibble: D3 D2 D1 D0<br />

(Nibble ist die Zusammenfassung von 4 Bit = ein halbes Byte)<br />

Es können Datenworte von 0000 0000 bis 1111 1111 eingestellt werden (in Hex: 00 bis FF).<br />

Wirkung: Ist ein Schalter unten (geschlossen), so entspricht das einer Input-0; es wird eine also eine 0 gespeichert.<br />

Um Daten bei best<strong>im</strong>mten Adressen abzulegen, ist schrittweise wie folgt vorzugehen:<br />

1. Schalter READ-WRITE in Stellung READ (-> WE = low).<br />

2. Schalter 'RUN_PROG' in Stellung PROG; (-> CE = high) bleibt in dieser Stellung<br />

bis alle Zellen beschrieben sind. Der Schalter legt CE von jedem RAM auf<br />

H.<br />

3. Adreß- und Datenschalter einstellen.<br />

4. Schalter 'READ_WRITE' für eine kurze Zeit in Stellung WRITE legen. Über Pin_3<br />

wird WE damit auf H gesetzt. Die am Eingang anliegenden Daten werden jetzt in<br />

die adressierte Speicherzelle übernommen.<br />

5. Weiter bei 3., wenn eine weitere Zelle beschrieben werden soll.<br />

6. Schalter 'RUN_PROG' in Stellung 'RUN'<br />

2.6.8 Entwicklung der Speicherbausteine<br />

Die folgende Tabelle gibt die Entwicklung der Technik dynamischer Speicherbausteine über die Jahre 1983 bis 1995 an<br />

:


Jahr D<strong>im</strong>ension (µ) max<strong>im</strong>ale Kapazität<br />

(MBit)<br />

Zahl der Transistoren (Millionen)<br />

1983 2,50 ... 2,00 0,25 0,5<br />

1986 1,25 ... 1,00 1 2<br />

1989 0,80 ... 0,70 4 8<br />

1992 0,50 ... 0,30 16 32<br />

1995 0,30 ... ? 64 128<br />

Danach wurde etwa alle drei Jahre die Kanallänge der Feldeffekttransistoren (CMOS-Technik) halbiert, wodurch sich<br />

bei gleicher Chipfläche eine Vervierfachung der Anzahl der Transistoren ergibt.<br />

Für den Speicherbaustein gilt, daß die Adreßdecodierung um so komplexer wird, je größer die Kapazität des Bausteins<br />

ist. Durch diese Eigenheit und weitere Effekte wird bei den Speicherbausteinen die Gesetzmäßigkeit, wonach eine Halbierung<br />

der Kanallänge zu einer Verdoppelung der Arbeitsgeschwindigkeit führt, weitgehend überdeckt. Dadurch sind<br />

über die Jahre die Speicherbauteile zwar auch schneller geworden, aber in einem wesentlich geringeren Maße als die<br />

Prozessoren, deren Taktfrequenz sich alle drei Jahre verdoppelt hat.<br />

47


48<br />

3.1 Blockdiagramm des SAP<br />

3 Die Architektur des SAP<br />

Die Abbildung unten zeigt die Struktur des Rechners in Form eines Blockdiagramms: 1<br />

C P<br />

CLK<br />

CLR<br />

EP<br />

Schalter<br />

4 Adreß-<br />

Schalter<br />

LM<br />

CLK<br />

8 Daten-<br />

Schalter<br />

Schalter WE<br />

CE<br />

LI<br />

CLK<br />

CLR<br />

E I<br />

CLK<br />

CLR<br />

Program<br />

Counter<br />

MUX<br />

MAR<br />

Anzahl<br />

Leitungen = Bit-<br />

Breite der<br />

Verbindung<br />

RAM<br />

16*8<br />

Instruction<br />

Register<br />

Control<br />

Unit<br />

Das Kontrollwort : C P E P L M E R L I E I L A E A S U E U L B L O<br />

CE<br />

1 Vgl. Malvino, Digital Computer Electronics, S.141<br />

12<br />

4<br />

4<br />

4<br />

8<br />

8<br />

8<br />

Akkumulator<br />

ALU<br />

Register<br />

B<br />

Output<br />

Register<br />

Binary<br />

Display<br />

Blockdiagramm des SAP<br />

8<br />

8<br />

8<br />

8<br />

8<br />

LA<br />

CLK<br />

EA<br />

E U<br />

SU<br />

L B<br />

CLK<br />

L O<br />

CLK<br />

Bit 0..3 des<br />

Opcodes<br />

Bit 4..7 des<br />

Opcodes


3.2 Das Kontrollwort des SAP<br />

Entsprechend der bisherigen Konvention bedeutet:<br />

C P - Count Program Counter<br />

E P - Enable Program Counter<br />

L M - Load Memory Address Register<br />

E R - Enable RAM = CE Chip Enable<br />

L I - Load Instruction Register<br />

E I - Enable Instruction Register<br />

L A - Load Akkumulator<br />

E A - Enable Akkumulator<br />

S U - Substract Unit<br />

E U - Enable Unit<br />

L B - Load B Register<br />

L O - Load Output Register<br />

Über den Schalter S wird best<strong>im</strong>mt, ob bei einem Speicherzugriff<br />

die Speicheradresse aus den vier Adreßschaltern<br />

oder von den Busleitungen genommen werden.<br />

Der Schalter WE legt fest, ob der Speicherzugriff<br />

schreibend oder lesend sein wird.<br />

Alle Komponenten sind über einen Bus miteinander<br />

verbunden und können über diesen Signale austauschen.<br />

Der Bus besteht aus 8 Leitungen zur gleichzeitigen<br />

Übertragung von 8 Bits. Sämtliche Abläufe<br />

erfolgen auf Veranlassung der Ablaufsteuerung; sie erzeugt<br />

die erforderlichen Steuersignale und gibt sie an<br />

die angeschlossenen Komponenten weiter. Alle mit<br />

dem Bus verbundenen Register-Ausgänge sind Tristate-<br />

Ausgänge. Die übrigen Register haben 'twostate'-<br />

Ausgänge; sie treiben die mit Ihnen verbundenen Komponenten<br />

direkt. Die Komponenten <strong>im</strong> einzelnen:<br />

3.3 Program Counter PC (Befehlszähler)<br />

Der Program Counter liefert (während der Rechner<br />

läuft) die Speicheradresse des Befehls, der als nächster<br />

ausgeführt werden soll.<br />

• Er ist ein Register, das von 0000 bis 1111 zählen<br />

kann.<br />

49<br />

• Der Inhalt kann (vor dem Start) mit dem Signal<br />

CLR auf den Zählerstand 0 gesetzt werden.<br />

• Der Inhalt wird bei aktivem CP-Signal mit jeder<br />

ansteigenden Flanke von CLK um 1 erhöht.<br />

• Die Zählerausgänge sind über Tri-State-Gatter mit<br />

den 4 niederwertigen Busleitungen verbunden.<br />

Das Signal EP aktiviert die Tri-State-Gatter und schaltet<br />

so den aktuellen Zählerstand auf den Bus durch;<br />

damit wird er für andere angeschlossene Komponenten<br />

verfügbar.<br />

3.4 Akkumulator A<br />

Der Akkumulator ist ein 8-Bit-Register und dient zur<br />

Aufnahme eines der beiden Operanden bei arithmetischen<br />

Operationen (der andere Operand ist der Inhalt<br />

des B-Registers) sowie zur Übernahme des Ergebnisses<br />

nach Durchführung der Operation durch die ALU. Er<br />

kann sowohl Daten vom Bus übernehmen als auch<br />

(wenn EA aktiv) Daten auf den Bus übertragen. Außerdem<br />

sind seine Ausgänge direkt mit einem Operandeneingang<br />

der ALU verbunden. Die Datenübernahme von<br />

den Busleitungen erfolgt unter Kontrolle der Signale<br />

LA und CLK. Ist LA inaktiv (low), so befindet sich der<br />

Akkumulator unabhängig vom Taktsignal CLK <strong>im</strong><br />

Speicherzustand und es werden keine neuen Daten<br />

übernommen. Ist LA aktiv (high), so werden mit der<br />

nächsten ansteigenden Flanke von CLK die Bussignale<br />

übernommen und gespeichert.<br />

3.5 Register B<br />

Das Register B enthält den zweiten Eingangsoperanden<br />

für die ALU. Sein Eingang ist mit den 8 Busleitungen<br />

verbunden; die Datenübernahme von den Busleitungen<br />

erfolgt unter Kontrolle der Signale LB und CLK. Im<br />

Unterschied zum Akkumulator sind die Ausgänge des<br />

B-Registers nicht mit dem Bus verbunden, sondern<br />

gehen lediglich zur ALU. Diese verknüpft den Registerinhalt<br />

als zweiten Operanden mit dem Inhalt des<br />

Akkumulators, der den ersten Operanden für die arithmetisch-logischen<br />

Operationen liefert.


50 Die Architektur des SAP<br />

3.6 Arithmetisch-logische Einheit<br />

(ALU)<br />

Die ALU kann nur addieren und subtrahieren. Die<br />

beiden Operanden werden ihr durch den Akkumulator<br />

A und das Register B direkt zugeführt. Die Subtraktion<br />

wird durch Addition des Zweierkomplements vollzogen.<br />

Das Signal S U entscheidet darüber, ob addiert<br />

oder subtrahiert wird. Ist SU inaktiv (low), so wird der<br />

Inhalt des Registers B zum Inhalt des Akkumulators addiert;<br />

ist SU aktiv (high), so wird der Inhalt von Register<br />

B vom Inhalt des Akkumulators subtrahiert. Der<br />

Ausgang der ALU ist über Tri-State-Gatter mit dem<br />

Bus verbunden, so daß das Ergebnis der arithmetischen<br />

Operation den anderen Komponenten zur Verfügung<br />

gestellt werden kann. Die Tri-State-Gatter werden<br />

durch das Signal EU gesteuert. Ist EU inaktiv (low), so<br />

sind die ALU-Ausgänge elektrisch vom Bus getrennt,<br />

andernfalls mit ihm verbunden.<br />

3.6.1 Interner Aufbau der ALU<br />

Im Folgenden werden die Bausteine der ALU auf Gatterebene<br />

dargestellt, mit deren Hilfe der Rechner in der<br />

Lage ist, die Rechenoperationen Addition und Subtraktion<br />

auszuführen.<br />

Der einfachste Baustein ist ein sogenannter Half-Adder,<br />

der zwei Dateneingänge mit einem EXOR Gatter addiert.<br />

Sind beide Einganssignale high, entsteht ein Übertrag<br />

(Carry), der über das UND-Gatter als Carry Bit<br />

nach außen geführt wird:<br />

Half-Adder<br />

Der Half-Adder addiert also lediglich zwei Bit. Um<br />

zwei 8 Bit breite Datenworte (Akkumulator und Register<br />

B) addieren zu können, benötigt man eine Parallelschaltung<br />

von acht Addierern.<br />

Die Wahrheitstafel:<br />

A B CARRY SUM<br />

0 0 0 0<br />

0 1 0 1<br />

1 0 0 1<br />

1 1 1 0<br />

Aber das kann noch nicht die ganze Wahrheit sein;<br />

wenn ein Carry-Flag erzeugt wird, sollte auch der folgende<br />

Addierer dieses als Eingang in die Addition<br />

miteinbeziehen.<br />

Ein Full-Adder berücksichtigt das Carry-Bit der vorherigen<br />

Bitaddition als Dateneingang.<br />

Die Wahrheitstafel:<br />

Full-Adder<br />

A B C CARRY SUMME<br />

0 0 0 0 0<br />

0 0 1 0 1<br />

0 1 0 0 1<br />

0 1 1 1 0<br />

1 0 0 0 1<br />

1 0 1 1 0<br />

1 1 0 1 0<br />

1 1 1 1 1<br />

Die Verknüpfung von Full-Adder und Half-Adder führt<br />

zum einfachen 4 Bit Addierwerk:


Die Architektur des SAP 51<br />

Vier Bit Addierwerk<br />

Jetzt muß unser Rechenwerk noch erweitert werden,<br />

damit es auch subtrahieren kann. Die Subtraktion wird<br />

durchgeführt durch Addition des Zweierkomplements.<br />

Also Z.B. die Subtraktion der Zahlen 8 - 5 sieht binär<br />

folgendermaßen aus:<br />

• 1000 BIN (8 Dez )<br />

• -0101 (5)<br />

ist dasselbe wie<br />

• 1000 BIN (8 Dez )<br />

• +1011 (Zweierkomplement)<br />

• =0011 (3 Dez )<br />

Wir müssen unserem Rechenwerk also beibringen, bei<br />

einer Subtraktion aus dem zweiten Operanden (B-<br />

Register) das Zweierkomplement zu bilden:<br />

3.6.2 Übung: Das Addierwerk<br />

Führen Sie die Addition der Zahlen 5 und 8<br />

mit einem 4 Bit Addierwerk durch.<br />

Best<strong>im</strong>men Sie dafür:<br />

• A 3 ... A 0<br />

• B 3 ... B 0<br />

• C 4 ... C 1<br />

• S 3 ... S 0<br />

3.7 Speicher<br />

Die Speicherkomponente umfaßt die Teile<br />

• eigentlicher RAM-Speicher<br />

• MAR (memory-address-register)<br />

• Adreßmultiplexer und<br />

• Schalter für die Eingabe von Daten (S, 4 Adr, 8<br />

Dat, WE)<br />

Der RAM-Speicher hat 4 Adreßeingänge A0 bis A3, so<br />

daß der Adreßraum die 16 Adressen 0HEX bis FHEX<br />

umfaßt. Jede Speicherzelle enthält ein Byte. Der Speicher<br />

kann nicht vom Rechner aus, sonden nur manuell<br />

beschrieben werden (Programmierung). Hierzu dienen<br />

4 parallele Schalter zur Adressenwahl und 8 parallele<br />

Schalter zur Dateneinstellung. Vom Rechner aus kann<br />

der RAM nur gelesen, nicht aber beschrieben werden.<br />

Über den Bus stellt der Rechner die Leseadresse bereit<br />

(Busleitungen 0 bis 3) und überträgt sie in das 4-Bit-<br />

Adreßregister MAR. Dessen Ausgänge gehen unmittelbar<br />

zu den Adreßeingängen des Speichers.<br />

Schalter S steuert den Adreß-Multiplexer. Seine Stellung<br />

entscheidet darüber, ob die Quelle der in das<br />

Adreßregister zu ladenden Speicheradresse das manuell<br />

bediente Schalterfeld (Speicher programmieren) oder<br />

der Bus (Speicher lesen) ist.<br />

Die Speicherausgänge sind über Tri-State-Gatter mit<br />

dem Bus verbunden.<br />

Das MAR-Register ist ein 4-Bit-Register. Signal LM<br />

kontrolliert zusammen mit dem Signal CLK die Adreßübernahme.<br />

Ist LM inaktiv (low), so befindet sich das<br />

Register <strong>im</strong> Ruhezustand und reagiert nicht auf das<br />

CLK-Signal. Ist LM aktiv (high), so übern<strong>im</strong>mt das<br />

Register mit der nächstfolgenden ansteigenden Flanke<br />

von CLK die an den Adreß-Schaltern eingestellte bzw.<br />

am Bus anliegende Adreßinformation.<br />

Die Stellung des Schalters WE legt fest, ob sich der<br />

Speicher in der Betriebsart 'Schreiben' (Speicher manuell<br />

programmieren) oder 'Lesen' (Rechner liest Befehle<br />

und Daten) befindet.


52 Die Architektur des SAP<br />

3.8 Instruction Register IR (Befehlsregister)<br />

Dieses Register dient zur Aufnahme des jeweils nächsten<br />

auszuführenden Maschinenbefehls. Es wird über<br />

den Bus aus dem Speicher geladen. Die vier höherwertigen<br />

Bits jedes Befehls bilden den Befehlscode. Sie<br />

gelangen von dem Ausgang des IR unmittelbar zu dem<br />

Eingang der Ablaufsteuerung und veranlassen diese, die<br />

dem Befehl entsprechende Folge von Steuersignalen zu<br />

erzeugen. Die vier niederwertigen Bits eines Befehls<br />

enthalten einen Operanden oder sind ohne Bedeutung.<br />

Die Übernahme eines Befehls vom Bus erfolgt unter<br />

Kontrolle der Signale LI und CLK. Ist LI inaktiv (low),<br />

so befindet sich das Register unabhängig von dem<br />

Taktsignal CLK <strong>im</strong> Speicherzustand und es werden<br />

keine neuen Daten übernommen. Ist LI aktiv (high), so<br />

werden mit der nächsten ansteigenden Flanke von CLK<br />

die Bussignale übernommen und gespeichert.Die an<br />

den Ausgängen des IR vorhandenen Signale werden<br />

unterschiedlich behandelt. Die 4 höherwertigen Bits,<br />

die den Operationscode des Befehls bilden, werden<br />

unmittelbar der Ablaufsteuerung zugeleitet (I7 I6 I5 I4).<br />

Die 4 niederwertigen Bits (Operandenbits) werden über<br />

die 4 niederwertigen Busleitungen den anderen Komponenten<br />

verfügbar gemacht.<br />

Die Steuerung erfogt über Signal EI. Ist EI inaktiv<br />

(low), so sind die Tri-State-Registerausgänge hochohmig,<br />

das Register ist elektrisch vom Bus getrennt. Ist EI<br />

aktiv (high), so sind die Registerausgänge zum Bus<br />

durchgeschaltet.<br />

3.9 Output Register (Ausgabe-<br />

Register)<br />

Das Ausgabe-Register dient der Kommunikation des<br />

Rechners mit der Außenwelt. Es entspricht bei größeren<br />

Systemen der Ausgabeeinheit (z.B. dem Bildschirm).<br />

Das Ausgabe-Register ist völlig analog dem Register<br />

Baufgebaut. Der einzige Unterschied besteht darin, daß<br />

die Ausgangsbits unmittelbar mit je einer Leuchtdiode<br />

zur Anzeige des Registerinhaltes verbunden sind. Die<br />

Übernahme der Bussignale erfolgt unter Kontrolle der<br />

Signale LO und CLK. Ist LO inaktiv (low), so befindet<br />

sich das O-Register unabhängig von dem Taktsignal<br />

CLK <strong>im</strong> Speicherzustand und es werden keine neuen<br />

Daten übernommen. Ist LO aktiv (high), so werden mit<br />

der nächsten ansteigenden Flanke von CLK die Bussignale<br />

übernommen und gespeichert.<br />

3.10 Ablaufsteuerung<br />

Die Ablaufsteuerung sorgt für die zeitliche Steuerung<br />

sämtlicher Abläufe innerhalb des Rechners. Sie sendet<br />

zu Beginn ein CLR-Signal an den PC und IR, wodurch<br />

beide auf 0 gesetzt werden. Sie sendet das Takt-Signal<br />

CLK an alle Register; damit werden die Operationen<br />

des Rechners genau aufeinander abgest<strong>im</strong>mt.<br />

Die Signale, die (nach unten eingezeichnet) aus der<br />

Ablaufsteuerung austreten, bilden ein 12 Bit großes<br />

Kontrollwort:<br />

CP EP LM CE LI EI LA EA SU EU LB LO<br />

Dieses Wort best<strong>im</strong>mt wie die Register bei der nächsten<br />

positiven Taktflanke reagieren. Aktiviert die Ablaufsteuerung<br />

beispielsweise zu einem best<strong>im</strong>mten Zeitpunkt<br />

die beiden Signale LB und ER , so veranlaßt sie<br />

damit zu diesem Zeitpunkt das Laden des B-Registers<br />

mit dem Inhalt der vom Speicheradreßregister (MAR)<br />

adressierten Speicherzelle. Die Ablaufsteuerung sorgt<br />

dafür, daß die verschiedenen Teile des SAP korrekt<br />

zusammenarbeiten: damit die Kontrollsignale in der<br />

richtigen Reihenfolge zu den richtigen Zeitpunkten an<br />

den entsprechenden Komponenten ankommen.


Die Befehle des SAP 53<br />

4 Die Befehle des SAP<br />

Ohne Programm ist die Hardware nutzlos. Also müssen<br />

vor dem Start irgendwie Befehle in den Speicher geladen<br />

werden. Zunächst nur: die 5 Befehle des SAP:<br />

4.1 LDA<br />

• Syntax: LDA adr<br />

• Bedeutung: Load RAM data into Akkumulator.<br />

• Datenfluß: A


54 Die Befehle des SAP<br />

4.6 Ein Beispiel-Programm<br />

Adresse | Mnemonics<br />

0 LDA 9<br />

1 ADD A<br />

2 ADD B<br />

3 SUB C<br />

4 OUT<br />

5 HLT<br />

---------------------------<br />

6 FF<br />

7 FF<br />

8 FF<br />

9 01<br />

A 02<br />

B 03<br />

C 04<br />

D FF<br />

E FF<br />

F FF<br />

Das Ergebnis der Ausführung ist:<br />

Um Befehle und Daten <strong>im</strong> Speicher ablegen zu können,<br />

müssen die Opcodes (Operation Codes) der Befehle<br />

festgelegt werden:<br />

Mnemonic | Opcode<br />

LDA 0000<br />

ADD 0001<br />

SUB 0010<br />

OUT 1110<br />

HLT 1111<br />

Der Speicher wird über die Schalter des SAP programmiert.<br />

Der Opcode ist in die 4 MSB-Positionen zu schreiben.<br />

Die Adresse ist in die 4 LSB-Positionen zu schreiben.<br />

Beispiel: LDA F ... bei Adresse 0<br />

0: |0000 1111|<br />

Die OUT- und HLT-Befehle haben keinen Adreßteil.<br />

D.h. die 4 LSBs sind ohne Bedeutung.<br />

Die allgemeine Form der Befehle in Maschinensprache:<br />

XXXX XXXX<br />

| |____Adreß-Feld<br />

|_________Opcode-Feld<br />

4.6.1 Übung: Assemblierung eines Befehls<br />

B<br />

Übersetzen Sie in Maschinensprache LDA<br />

Lösung:..............................<br />

4.6.2 Übung: ein SAP Additionsprogramm<br />

Der Wert des Ausdrucks 16+20+24-32 ist<br />

in Form eines SAP-Programms zu berechnen (die Zahlen<br />

sind Dez<strong>im</strong>alzahlen).


Die Befehle des SAP 55<br />

4.6.3 Übung: Programmierung des SAP<br />

S 45.<br />

"Schreiben" Sie das obige Programm in den Speicher des SAP. Nehmen Sie das RAM-Schaltdiagramm von<br />

Schalter<br />

WE<br />

Read_Write<br />

Schalter<br />

CE<br />

RUN_Prog<br />

A 3 ...A<br />

0<br />

D 7. ..D<br />

4<br />

D 3 ..D<br />

0


56 Der Maschinenzyklus<br />

Der Teil des Rechners, der für jeden Zeitpunkt festlegt<br />

• welche Wege die Daten nehmen und<br />

• welche Operationen durchgeführt werden müssen,<br />

5 Der Maschinenzyklus<br />

wird als Ablaufsteuerung (ABL) bezeichnet. Die Ablaufsteuerung ermöglicht die automatische Wirkungsweise des<br />

Rechners.<br />

Nachdem das Programm (mit den Daten) in den Speicher geladen ist, geht mit einem Start-Signal die Kontrolle des Systems<br />

an die Ablaufsteuerung über. Sie erzeugt die Kontrollworte, welche die Befehle holen und ausführen.<br />

Die Befehle werden einzeln geholt und ausgeführt; dabei durchläuft die Maschine verschiedene Phasen. Die Phasen<br />

werden mit Hilfe eines Ringzählers erzeugt.<br />

-------------------------<br />

| |<br />

| Ringzähler


Der Maschinenzyklus 57<br />

__ _____ _____ _____ _____ _____ _____ _____<br />

CLK |___| |___| |___| |___| |___| |___| |___| |_<br />

||||||||<br />

_________ _________<br />

T0 | |_______________________________________| |_<br />

_________<br />

T1 ________| |_________________________________________<br />

_________<br />

T2 ________________| |_________________________________<br />

_________<br />

T3 ________________________| |_________________________<br />

_________<br />

T4 ________________________________| |_________________<br />

_________<br />

T5 ________________________________________| |_________<br />

5.1 Der Hole-Zyklus<br />

Im folgenden wird gezeigt, welche Kontrollworte die ABL in den Phasen erzeugen muß, damit ein Befehl ausgeführt<br />

wird. Die Phasen T0, T1 und T2 bilden den Hole-Zyklus (fetch-cycle) des SAP.<br />

5.1.1 Die Adreßphase<br />

Der Zeitabschnitt T0 wird als Adreßphase bezeichnet, weil in dieser Phase die Adresse <strong>im</strong> PC in das MAR transferiert<br />

wird. In dieser Phase sind die Komponenten PC, MAR und ABL aktiv. Damit der Transfer stattfindet, müssen in dieser<br />

Phase (zwischen 2 aufeinanderfolgenden negativen Taktflanken) die Kontrollsignale EP und LM aktiv sein. D.h. ABL<br />

muß in der T0-Phase folgendes Kontrollwort ausgeben:<br />

CP EP LM CE LI EI LA EA SU EU LB LO<br />

0 1 1 0 0 0 0 0 0 0 0 0<br />

Zeichnen Sie die beteiligten Komponenten des SAP:<br />

Das MAR übern<strong>im</strong>mt vom Bus den Inhalt des PC. Denn in der Mitte von T0 tritt eine positive Taktflanke auf und zu<br />

diesem Zeitpunkt übern<strong>im</strong>mt MAR die am Eingang anliegenden Werte.


58 Der Maschinenzyklus<br />

5.1.2 Die Inkrementphase<br />

Die T1-Phase wird als Inkrementphase bezeichnet, weil in ihr der PC um 1 erhöht wird. Die beteiligten Komponenten:<br />

PC und ABL<br />

Die aktiven Kontrollsignale: CP<br />

Das Kontrollwort in der T1-Phase:<br />

CP EP LM CE LI EI LA EA SU EU LB LO<br />

1 0 0 0 0 0 0 0 0 0 0 0<br />

Zeichnen Sie die beteiligten Komponenten des SAP:<br />

Bei der nächsten positiven Taktflanke (in der Mitte von T1) wird der PC um 1 erhöht.<br />

5.1.3 Die Speicherphase<br />

Die T2-Phase wird als Speicherphase bezeichnet, weil der adressierte RAM-Befehl in das Befehlsregister übertragen<br />

wird. Die beteiligten Komponenten: MAR, RAM, IR<br />

Die aktiven Kontrollsignale: CE, LI. Das Kontrollwort in der T2-Phase:<br />

CP EP LM CE LI EI LA EA SU EU LB LO<br />

0 0 0 1 1 0 0 0 0 0 0 0<br />

Zeichnen Sie die beteiligten Komponenten des SAP:<br />

Bei der nächsten positiven Taktflanke (in der Mitte von T2) übern<strong>im</strong>mt IR das adressierte RAM-Wort.<br />

Im Hole-Zyklus werden also nacheinander 3 Kontrollworte ausgegeben:


Der Maschinenzyklus 59<br />

CP EP LM CE LI EI LA EA SU EU LB LO Wirkung<br />

---------------------------------------------------------------<br />

0 1 1 0 0 0 0 0 0 0 0 0 MAR


60 Der Maschinenzyklus<br />

5.2.1.3 T5-Phase<br />

In der T5-Phase werden keine Aktivitäten abgewickelt. Die Komponente ABL muß ein Kontrollwort ausgeben, bei dem<br />

alle Bits inaktiv sind. Deshalb wird die T5-Phase bei dem LDA-Befehl auch als 'tu-nichts' Phase (no operation - nop)<br />

bezeichnet.


Der Maschinenzyklus 61<br />

Die Ausführungsphasen für den Befehl LDA:<br />

CP EP LM CE LI EI LA EA SU EU LB LO Wirkung<br />

-----------------------------------------------------------------<br />

0 0 1 0 0 1 0 0 0 0 0 0 MAR


62 Der Maschinenzyklus<br />

5.2.3.2 T4-Phase<br />

In T4 gelangt das adressierte Wort nach Register B. (Es gilt wie <strong>im</strong>mer: die Übernahme findet in der Mitte von T4 statt,-<br />

bei der nächsten positiven Taktflanke) CE = 1, LB = 1<br />

5.2.3.3 T5-Phase<br />

In T5: EU = 1, LA = 1 (,SU = 0 -> addieren). D.h. das Ergebnis der ALU gelangt in den Akkumulator. In der Mitte von<br />

T5 bei der positiven Taktflanke wird die Summe in den Akkumulator geladen.)<br />

Anmerkung:<br />

Die Durchlaufzeiten (propagation t<strong>im</strong>e) verhindern, daß der Akkumulator bei der einen Flanke mehr als einmal geladen<br />

wird. Wenn die positive Taktflanke kommt, ändert sich der Inhalt des Akkus. Damit ändert sich auch der Inhalt der<br />

ALU. Der neue ALU-Inhalt kommt erst nach zwei Laufzeitverzögerungen (eine für den Akkumulator und eine für die<br />

ALU) an. Es ist dann zu spät den Akkumulator zu setzen; der Akkumulator wird also mit einer positiven Flanke nur einmal<br />

geladen.<br />

Zusammenfassung der Ausführungsphasen für den ADD-Befehl:<br />

CP EP LM CE LI EI LA EA SU EU LB LO Wirkung<br />

---------------------------------------------------------------<br />

T3 0 0 1 0 0 1 0 0 0 0 0 0 MAR


Der Maschinenzyklus 63<br />

S U ___________________________<br />

5.2.5 SUB-Befehl<br />

Dieser Befehl ist dem ADD-Befehl sehr ähnlich. Er unterscheidet sich nur in der Phase T5 von ihm: SU = 1 (subtrahieren).<br />

5.2.6 OUT-Befehl<br />

Annahme: am Ende des Hole-Zyklus steht <strong>im</strong> IR = 1110 xxxx<br />

5.2.6.1 T3-Phase<br />

In T3 wird der Inhalt des Akkumulator in das O-Register geladen.<br />

Aktive Signale: EA = 1, LO = 1<br />

5.2.6.2 T4 und T5-Phase<br />

In diesen Phasen sind keine Aktionen erforderlich: nichts tun<br />

Zusammenfassung der Ausführungsphasen für den OUT-Befehl:<br />

CP EP LM CE LI EI LA EA SU EU LB LO Wirkung<br />

---------------------------------------------------------------<br />

T3 0 0 0 0 0 0 0 1 0 0 0 1 O


64 Der Maschinenzyklus<br />

___ ___ ___ ___ ___ ____ _____<br />

|___| |___| |___| |___| |___| |___| |___| _<br />

||||||||<br />

des Ringzählers<br />

|||<br />

||<br />

1 Maschinenzyklus ist die Zeit für das Holen und Ausführen von einem Befehl. Dadurch ist die Programmlaufzeit direkt<br />

proportional der Anzahl der Befehle.)<br />

5.3.1 Übung: Zykluszeiten<br />

Der SAP habe eine Taktquelle mit einer Frequenz von 1 MHz. (1 Million Taktzyklen in einer Sekunde)-<br />

Wie groß ist ein Maschinenzyklus?<br />

- Wie lange läuft ein Programm mit 12 Befehlen?


Die Ablaufsteuerung 65<br />

6 Die Ablaufsteuerung<br />

Die Ablaufsteuerung ist der Ausgangspunkt für alle Rechneraktionen; sie muß die Kontrollsignale für jeden Befehl erzeugen.<br />

Zunächst werden die einzelnen Komponenten der Ablaufsteuerung vorgestellt.<br />

6.1 Befehlsdecodierer<br />

Ein Befehl wird <strong>im</strong> Hole-Zyklus in das IR geladen. Das Opcodefeld (die 4 höherwertigen Bits) gelangt direkt in die<br />

Ablaufsteuerung. Hier werden die 4 Bits verarbeitet.<br />

Wiederholung: Decodierer<br />

...entschlüsselt eine beliebige 0-1 Kombination (Eingangswert) in eine 1, die an genau einem Ausgang des Decodierers<br />

erscheint.<br />

Der Befehlsdecodierer <strong>im</strong> SAP ist ein 1 zu 5 Decodierer. Vervollständigen Sie das Schaltbild des Decodierers:<br />

|I7 |I6 |I5 |I4<br />

| | | |<br />

| | | | | | | |<br />

& ---- LDA<br />

& ---- ADD<br />

& ---- SUB<br />

& ---- OUT<br />

& ---- HLT<br />

Es ist zu erkennen, daß bei Opcode=0000 nur der Ausgang LDA aktiv ist. Entsprechendes gilt für die anderen Opcodes.<br />

6.2 Kontrollmatrix<br />

Matrix ist hier ein 2-d<strong>im</strong>ensionaler Schaltkreis, der an zwei Eingängen (jeweils Bitgruppen) von zwei verschiedenen<br />

Quellen versorgt wird.<br />

Die Kontrollmatrix soll die Kontrollworte erzeugen. Sie wird gesteuert von


66 Die Ablaufsteuerung<br />

- den Ausgangssignalen LDA, ADD, SUB und OUT des<br />

Befehlsdecodierers und<br />

- den Signalen T0 bis T5 des Ringzählers.<br />

Am Ausgang der Matrix erscheinen dann die Kontrollworte, die festlegen, welche Komponenten in einer best<strong>im</strong>mten<br />

Phase etwas tun sollen. Es werden die Signale für den Hole- und den Ausführungszyklus erzeugt.<br />

Es handelt sich damit um die zentrale Stelle <strong>im</strong> Rechner !<br />

6.2.1 Die Signale des Hole-Zyklus:<br />

Schaltbild der Kontrollmatrix<br />

In dem Schaltkreis der Kontrollmatrix gehen nacheinander T0, T1 und T2 auf H. Man kann erkennen:<br />

T0 = 1 bewirkt EP = 1, LM = 1<br />

T1 = 1 bewirkt CP = 1<br />

T2 = 1 bewirkt CE = 1, LI = 1<br />

Das sind genau die Signale der Kontrollworte in den drei Phasen des Holezyklus:<br />

MAR


Die Ablaufsteuerung 67<br />

6.2.2 Die Signale des Ausführungszyklus:<br />

Es gehen nacheinander T3, T4 und T5 auf 1.<br />

Gleichzeitig geht einer der (mit dem Decodierer verbundenen) Eingänge auf 1. Das führt zu den richtigen Ausgangssignalen<br />

der Kontrollmatrix.<br />

Beispiel:<br />

Wenn LDA = 1, dann sind anderen Eingänge vom Decodierer = 0.<br />

Demnach sind die zu betrachtenden UND-Gatter: das 1., 4., 7. und 10.<br />

Ist T3=1, liefern das 1. und 7. UND Gatter eine 1. Über die OR-Gatter werden so LM = 1 und EI = 1.<br />

Ist T4=1, liefern das 4. und 10. UND Gatter eine 1. Über die OR-Gatter werden so CE = 1 und LA = 1<br />

Ist T5=1, liefert kein UND Gatter eine 1, d.h. das Kontrollwort = 00...0<br />

Das Ergebnis st<strong>im</strong>mt mit dem überein, was bei LDA weiter oben verlangt worden ist. Entsprechendes gilt für ADD, SUB<br />

und OUT.<br />

LDA ADD SUB OUT HLT<br />

T3 L M E I L M E I L M E I E A L O<br />

T4 CE L A CE L B CE L B nop<br />

T5 nop L A E U L A E U S U nop<br />

Die Kontrollmatrix des SAP benötigt für die Erzeugung der Kontrollworte für die vier Befehle 19 AND-Gatter und 6<br />

OR-Gatter.<br />

6.3 Takterzeugung<br />

Es gibt einen Schaltkreis für die CLK- und CLR-Erzeugung; er besitzt einen HLT- und START/STOP-Eingang.<br />

| HLT<br />

V<br />

-------------------<br />

Schalter | |----> CLR<br />

START/STOP------>| Takt-Erzeugung |<br />

| |----> CLK<br />

-------------------<br />

Funktion:<br />

• Schalter in Stellung 'STOP': CLR = H (aktiv)<br />

CLK = L (konstant)<br />

• Schalter in Stellung 'START':CLR = L<br />

___ ___<br />

CLK = ___| |__| |__ , wenn HLT=0<br />

CLK = L , wenn HLT=1


68 Die Ablaufsteuerung<br />

6.3.1 Das Zusammenwirken mit den anderen Teilen des Rechners<br />

Zu Beginn steht der Start/Stop Schalter in Stellung 'STOP' -> CLR = H und die Register werden mit 0 (Ringzähler mit 1)<br />

initialisiert.<br />

Register Inhalt Bedeutung<br />

PC 0000 das Programm beginnt mit dem Befehl bei Adresse 0.<br />

IR 0000 0000 Opcode-Feld = 0000, deshalb ist HLT-Ausgang vom Befehlsdecodierer =<br />

0. Die Takterzeugung könnte laufen.<br />

Ringzähler<br />

000001 Der Rechner befindet sich in Phase T0 und liefert (EP=1, LM=1)<br />

Der Rechner verharrt in diesem Zustand, bis der Start/Stop Schalter in Stellung 'START' gelegt wird. Nun beginnt die<br />

Takterzeugung und mit der ersten positiven Taktflanke gelangt der Inhalt des PC (=0) in das MAR (EP=LM=1)<br />

- ... der Rechner läuft.<br />

Es werden solange Takt<strong>im</strong>pulse erzeugt bis der HLT-Befehl in das IR geladen wird. Wenn IR = 1111 XXXX, dann erzeugt<br />

der Befehlsdecodierer HLT = 1. Dieses Signal gelangt an den HLT-Eingang der Takterzeugung: der Takt wird<br />

angehalten.<br />

6.4 Die gesamte Ablaufsteuerung<br />

Der Befehlszähler, der Ringzähler, die Kontrollmatrix und die Takterzeugung erzeugen die Kontrollsignale für den Hole-<br />

und Ausführungszyklus.<br />

Blockschaltbild der Ablaufsteuerung


Die Ablaufsteuerung 69<br />

Ablauf:<br />

Zunächst werden manuell das Programm und die Daten <strong>im</strong> Speicher abgelegt. Dann bringt der Operator den Schalter in<br />

Stellung 'START'.<br />

Das CLK-Signal steuert alle Register, in Abhängigkeit von dem Kontrollwort am Ausgang von ABL. Der Holezyklus<br />

lädt den nächsten Befehl in das IR. Nach der Decodierung des Opcodes erzeugt die Kontrollmatrix automatisch die Signale<br />

für den Ausführungszyklus. Am Ende des Ausführungszyklus steht der Ringzähler wieder auf 000001. Und der<br />

nächste Maschinenzyklus beginnt. Die Verarbeitung endet, wenn der HLT-Befehl ins IR geladen ist.<br />

Ergänzende Bemerkungen:<br />

Der Rechner besteht aus 5 Teilen:<br />

1. Input: Schalter zum Programmieren<br />

2. Output: O-Register, Binary-Display<br />

3. Speicher: MAR, RAM<br />

4. Arithmetik: AKKU, ALU, B-Register<br />

5. Kontrolle: ABL, PC, IR<br />

6.4.1 Übung: Addition<br />

Inhalt von Akku = 0000 1111 = 0F<br />

bei Adr F <strong>im</strong> RAM = 0000 0110 = 06<br />

Nach der Ausführung von ADD F<br />

. was steht <strong>im</strong> Register B ?<br />

. was steht <strong>im</strong> Akku?<br />

6.4.2 Übung: Assemblierung<br />

OUT<br />

ADD C<br />

SUB F<br />

zu übersetzen in SAP-Maschinencode:<br />

= CPU


70 Die Ablaufsteuerung<br />

LDA 8<br />

6.4.3 Übung: Speicherphase<br />

In der Speicherphase (T2): die Inhalte vor der nächsten positiven Taktflanke:<br />

MAR = 0111 = 7H<br />

RAM7 = 0011 1100 = 3CH<br />

IR = 0001 1011 = 1BH<br />

Was sind die Inhalte nach der positiven Taktflanke?<br />

6.4.4 Übung: der PC in der Inkrementphase<br />

In der Inkrementphase (T1): ist der Inhalt von PC vor der aufsteigenden Taktflanke = 0111 = 7. Welches ist<br />

der Inhalt nach der positiven Taktflanke?


Die Ablaufsteuerung 71<br />

6.4.5 Übung: Kontrollmatrix<br />

die AND-Gatter (der Kontrollmatrix) sind durchnumeriert 1...19. Welche AND-Gatter haben einen H-<br />

Ausgang, wenn folgende Bedingungen vorliegen ?<br />

a. OUT und T3 = 1<br />

b. ADD und T3 = 1<br />

c. SUB und T5 = 1


72 Mikroprogrammierung<br />

7 Mikroprogrammierung<br />

Die Kontrollmatrix ist eine Möglichkeit für die Erzeugung von Kontrollsignalen; in diesem Zusammenhang spricht man<br />

von einer 'hardwired control' bzw. einer festverdrahteten Kontrolleinheit (Kontrolleinheit = Ablaufsteuerung + PC-Reg +<br />

IR-Reg).<br />

Bei größeren Befehlssätzen wird die Kontrollmatrix sehr unübersichtlich; sie besteht aus sehr vielen Gattern. Deshalb<br />

wurde nach einer alternativen Lösung gesucht. Die alternative Lösung lautet: Mikroprogrammierung. Die wesentliche<br />

Idee dabei ist, daß die Kontrollworte in einem Speicher abgelegt sind. Das vereinfacht den Aufbau der Kontrolleinheit<br />

erheblich.<br />

7.1 Das SAP Mikroprogramm<br />

Die Kontrolleinheit gibt dauernd Kontrollworte aus, in jeder Phase Ti ein Kontrollwort. Das sind Anweisungen für den<br />

Rest des Rechners: die Verarbeitungseinheit.<br />

Jedes Kontrollwort bewirkt einen kleinen Verarbeitungsschritt; deshalb die Bezeichnung Mikrobefehl (<strong>im</strong> Gegensatz zu<br />

den Maschinenbefehlen LDA, SUB, ADD,...). Jeder Maschinenbefehl besteht aus 6 Mikrobefehlen. Eine Zusammenstellung<br />

für alle SAP Maschinenbefehle:<br />

(wobei die Kontrollworte C P E P L M CE L I E I L A E A S U E U L B L O in HEX-Schreibweise angegeben werden)<br />

Phase Kontrollwort Befehl aktiv<br />

T0 600 Hole E P L M<br />

T1 800 C P<br />

T2 180 C E L I<br />

---------------------------------------------------------------<br />

T3 240 LDA L M E I<br />

T4 120 CE L A<br />

T5 000 nop<br />

---------------------------------------------------------------<br />

T3 240 ADD L M E I<br />

T4 102 C E L B<br />

T5 024 L A E U<br />

---------------------------------------------------------------<br />

T3 240 SUB L M E I<br />

T4 102 CE L B<br />

T5 02C L A E U S U<br />

---------------------------------------------------------------<br />

T3 011 OUT E A L O<br />

T4 000 nop<br />

T5 000 nop<br />

---------------------------------------------------------------<br />

Diese Mikrobefehle können in einem Kontrollspeicher abgelegt werden; die µ-Befehle des<br />

- Hole-Zyklus bei den Adressen 0H bis 2H - Ausführungs-Zyklus für<br />

LDA 3 -- 5


Mikroprogrammierung 73<br />

ADD 6 -- 8<br />

SUB 9 -- B<br />

OUT C -- E H<br />

Dann muß eine Möglichkeit geschaffen werden, die verschiedenen µ-Befehlsfolgen zu aktivieren, d.h. <strong>im</strong> einzelnen:<br />

• die Anfangsadresse der µ-Folge beschaffen,<br />

• die Adresse schrittweise erhöhen,<br />

• die Adressen dem Kontrollspeicher zuführen.<br />

Das leisten ein Adressierungs-ROM und ein Zähler, die sich in einer µ-programmierten Kontrolleinheit befinden:<br />

Sie besteht aus:<br />

• Adressierungs-ROM<br />

• µ-Zähler<br />

• Kontrollspeicher<br />

7.2 Das Adressierungs-ROM<br />

12 Bit Mikrobefehl<br />

Blocckschaltbild der mikroprogrammierten Kontrolleinheit<br />

Das Adressierungs-ROM enthält die Anfangsadressen der µ-Befehlsfolgen (nur für die Ausführungszyklen). Also:<br />

ROM-Adr Inhalt<br />

0 0011 für LDA<br />

1 0110 für ADD


74 Mikroprogrammierung<br />

7.2.1 Übung: Inhalt des Adressierungs-ROMs<br />

Was muß bei den übrigen Adressen <strong>im</strong> Adr.-ROM stehen?<br />

Wenn die Opcode-Bits I 7 I 6 I 5 I 4 am Adr-ROM anliegen, werden die Anfangsadressen ausgegeben.<br />

7.2.2 Beispiel:<br />

Wird der ADD-Befehl ausgeführt, liegt der Opcode 0001 an I7I6I5I4 und bildet die Adresse, die am Adressierungs-<br />

ROM anliegt. Am Ausgang des Adressierungs-ROMs steht dann: 0110.<br />

7.3 Der µ-Zähler<br />

Der µ-Zähler ist eine Komponente der Register-Ebene<br />

| | | |<br />

V V V V<br />

----------------------<br />

------|LOAD |<br />

CLK-----------o|> |<br />

------|CLR |<br />

----------------------<br />

| | | |<br />

V V V V<br />

mit folgender Wirkungsweise:<br />

Signal Erläuterung Wirkung auf µ-Zähler<br />

CLR = H Reset µ-Zähler = 0<br />

LOAD = L wird mit jeder neg. Flanke von<br />

CLK:(also zwischen zwei Phasen)<br />

µ-Zähler = µ-Zähler + 1<br />

LOAD = H bei der nächsten neg. Flanke von CLK: µ-Zähler übern<strong>im</strong>mt den Wert am Eingang<br />

T2 = H Da in der vorliegenden Kontrolleinheit der µ-Zähler übern<strong>im</strong>mt den am Ein-<br />

der LOAD-Eingang mit T2 verbunden ist: gang anliegenden Wert, - bei der<br />

nächsten neg. Flanke von CLK; also<br />

am Ende von T2.<br />

T0,T1,T3,T4,T5 der µ-Zähler zählt (jeweils bei neg. µ-Zähler = µ-Zähler + 1<br />

=H<br />

Flanke von CLK), also am Ende von jeder<br />

Phase.


Mikroprogrammierung 75<br />

Der Ablauf:<br />

1. CLR = H, CLK = L<br />

--> µ-Zähler = 0000<br />

__ __ __ __<br />

2. (mit Start): CLR= L u. CLK = _____| |__| |__| |__|<br />

------->| | |<br />

T0 T1 T2<br />

in Phase T0 (... bis zur ersten neg. Flanke von CLK): µ-Zähler = 0000<br />

in Phase T1: = 0001<br />

in Phase T2: = 0010<br />

... soweit der Ablauf <strong>im</strong> Hole-Zyklus.<br />

Der Opcode <strong>im</strong> IR steuert den Ausführungszyklus.<br />

Wenn ein ADD-Befehl geholt worden ist:<br />

I 7 I 6 I 5 I 4 = 0001<br />

liegt am Ausgang des Adressierungs-ROM der Wert 0110<br />

Diese Start-Adresse ist die Eingabe für den µ-Zähler. 0110 wird vom µ-Zähler übernommen, wenn LOAD=1, bei der<br />

nächsten neg. Flanke von CLK: also am Ende von T2.<br />

Anschließend zählt der µ-Zähler weiter:<br />

in Phase T3: µ-Zähler = 0110<br />

T4 0111<br />

T5 1000<br />

Jetzt beginnt wieder die T0-Phase (mit der pos. Flanke von T0 am CLR-Eingang). Der µ-Zähler erhält den Wert 0, das<br />

ist wieder die Start-Adresse für den Hole-Zyklus. Es beginnt der nächste Maschinenzyklus.<br />

7.4 Der Kontrollspeicher oder Mikrocode ROM<br />

Im Kontrollspeicher sind die µ-Befehle abgelegt. Im Hole-Zyklus bekommt er die Adressen 0000, 0001, 0010.<br />

Demnach liegen am Ausgang die Kontrollworte 600, 800 und 180.<br />

Wenn ein ADD-Befehl ausgeführt wird, so bekommt der Kontrollspeicher anschließend die Adressen:<br />

0110 \<br />

0111 > = Adresse der µ-Befehle des Ausführungs-Zyklus bei ADD<br />

1000 /<br />

und am Ausgang erscheinen:<br />

240 \


76 Mikroprogrammierung<br />

102 > = Kontrollworte = µ-Befehle.<br />

024 /<br />

7.4.1 Übung: Kontrollspeicher<br />

Zeigen Sie, welche Inhalte der µ-Zähler und Kontrollspeicher bei einem ADD Befehl haben.<br />

__ __ __ __ __ __ __<br />

CLK ____________| |__| |__| |__| |__| |__| |__| |__<br />

Ringzähler -T0---->| T1 | T2 | T3 | T4 | T5 | T0 |<br />

| | | | | | |<br />

µ-Zähler _______________|_____|_____|_____|_____|_____|_____|<br />

| | | | | | |<br />

Kontroll- | | | | | | |<br />

speicher _______________|_____|_____|_____|_____|_____|_____|<br />

| | | | | | |<br />

7.5 Veränderlicher Maschinenzyklus<br />

Die Befehle LDA und OUT benötigen nicht alle Phasen des Ausführungszyklus, LDA benötigt nur zwei, OUT nur eine.<br />

Die restlichen Phasen bewirken nichts (sind nop's). Bisher sind alle Maschinenzyklen gleich lang. Kommt es allerdings<br />

auf die Ausführungsgeschwindigkeit an, so sind die nop-Zeiten zu el<strong>im</strong>inieren.<br />

Die nop-Phasen können eingespart werden, indem die µ-programmierte Kontrolleinheit ergänzt wird (es wird hier nur<br />

eine von vielen Möglichkeiten vorgestellt):<br />

Das nop-Kontrollwort ist 000HEX.<br />

Wenn der Kontrollspeicher dieses Kontrollwort erzeugt, soll der aktuelle Maschinenzyklus sofort beendet werden, d.h.<br />

es soll mit Phase T0 weitergehen.


Mikroprogrammierung 77<br />

Erkennung eines NOP Kontrollwortes<br />

Zu diesem Zweck wird das NOP-Signal (000HEX) über ein OR-Gatter mit dem CLR-Eingang des Ringzählers verbunden:<br />

Das hat zur Folge<br />

Reset des Ringzählers bei NOP<br />

• für den LDA-Befehl: in den Phasen T0 bis T4 ändert sich nichts. Wenn T5 beginnt, gibt der Kontrollspeicher<br />

000HEX aus. NOP wird H und deshalb T0 = H und µ-Zähler = 0.<br />

• für den OUT-Befehl: Verminderung um 2 Phasen. Wenn T4 beginnt, gibt der Kontrollspeicher 000 aus.<br />

Variable Maschinenzyklen sind bei heutigen Rechnern weit verbreitet. Beispiel: der INTEL 8085-Mikroprozessor realisiert<br />

2 bis 6 Phasen.


78 Mikroprogrammierung<br />

7.6 Gegenüberstellung µ-Programmierung - hardwired control<br />

1 µ-Programmierung hardwired<br />

control<br />

Änderungen leicht schwer<br />

Erweiterbarkeit leicht schwer<br />

Platzbedarf mittel groß<br />

Struktur regulär irregulär<br />

Komplexität mittel hoch<br />

Entwicklungszeit mittel lang<br />

Geschwindigkeit mittel schnell<br />

Nach der obigen Tabelle gibt es also offensichtliche technische Vorteile, die µ-Programmierung einzusetzen.<br />

Änderungen und Erweiterungen des Befehlssatzes sind bei festverdrahteter Kontrolleinheit sehr aufwendig, da eine<br />

neue Kontrollmatrix erstellt werden muß. Bei der µ-programmierten Kontolleinheit brauchen nur zwei ROMs modifiziert<br />

und ausgewechselt werden.<br />

Voraussetzung hierfür ist:<br />

• freier Speicherplatz <strong>im</strong> Kontrollspeicher<br />

• freie Bitkombinationen für neue Befehle<br />

"Be<strong>im</strong> MOTOROLA 68000 ist ca. ein Viertel des Mikrocode-ROMs unbenutzt und etwa ein Achtel des Opcodes nicht<br />

<strong>im</strong>plementiert." 2<br />

Bei CPU-Familien, also Prozessoren, die von Anfang an mit verschiedenen Ausbaustufen geplant werden (z.B.<br />

MOTOROLA 68000 Familie mit den bis heute eingeführten Prozessoren 68000, 68010, 68020, 68030, 68040) bietet<br />

sich deshalb der Einsatz der µ-Programmierung besonders an.<br />

Die reguläre Struktur dieser Logik - es handelt sich um ein ROM <strong>im</strong> Kontrast zur kombinatorischen Logik - vermindert<br />

die Komplexität. "Damit wird das Ganze überschaubarer und setzt die Entwicklungszeit herab. Ein komplexeres<br />

Steuerwerk bei konstanten Entwicklungskosten könnte <strong>im</strong>plementiert werden. Die Regularität der Struktur vereinfacht<br />

das Chip Layout. Dies hat seinerseits beträchtliche Zeiteinsparungen (vermutlich Monate) und geringere Anzahl von<br />

Fehlerquellen zur Folge." 3<br />

In einem Fall ist die hardwired control überlegen. Sie ist schneller. Es sind nur die Gatterlaufzeiten maßgebend.<br />

Beispiele:<br />

Prozessor Control Anzahl<br />

Mnemonics<br />

Anzahl<br />

Opcodes<br />

Opcode-<br />

Breite<br />

Register-<br />

Breite<br />

6502 hardwired 56 151 8 bit 8 bit<br />

Intel<br />

8080/85<br />

hardwired >160


Mikroprogrammierung 79<br />

Bei der Prozessorentwicklung wurden <strong>im</strong>mer leistungsfähigere Befehlssätze <strong>im</strong>plementiert (CISC-Prozessoren -<br />

Complex Instruction Set Computer), so daß die Hersteller um den Einsatz der Mikroprogrammierung aus oben genannten<br />

Gründen nicht herumkamen. Der Punkt ist deshalb wichtig, weil in den letzten Jahren mit der Entwicklung von sogenannten<br />

RISC-Prozessoren (Reduced Instruction Set Computer) die hardwired control wegen der opt<strong>im</strong>alen Geschwindigkeit<br />

wieder eingesetzt wird.<br />

7.6.1.1 Übung: ABL mit Mikroprogrammierung<br />

Zeichnen Sie das Blockschaltbild einer Ablaufsteuerung mit Mikroprogrammierung.<br />

7.6.1.2 Übung: Erweiterung des SAP<br />

Sie kennen jetzt die vollständige Architektur unseres SAP. Schlüpfen Sie doch mal in die Rolle eines Computer<br />

Architekten und erweitern die Architektur des SAP so, daß er die Befehle Store Akkumulator to Adress (STA)<br />

und den Befehl Jump to Adress (JMP) ausführen kann.<br />

Vorgehensweise:<br />

• Genaue Definition des Befehls, Beschreibung des notwendigen Datenflusses<br />

• Welche vorhandenen Bausteine müssen verändert, erweitert werden<br />

• Welche zusätzlichen Bausteine werden benötigt<br />

• Legen Sie den Opcode für die Befehle fest<br />

• 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<br />

8 Weiterentwicklung des SAP - der 8085<br />

8.1 Beschränkungen des SAP<br />

• Das RAM läßt sich nur manuell beschreiben.<br />

• Der SAP kennt keine Programmsteuerung auf Grund von Zuständen, Bedingungen.<br />

• Er kennt weder bedingte noch absolute Sprungbefehle.<br />

• Er kennt keine Subroutines.<br />

• Er kennt keine Interrupts.<br />

• Sein Speicher faßt mit 16 Byte nur sehr bescheidene Programme.<br />

Der SAP ist noch keine Universalrechenmaschine; allgemeine Probleme lassen sich nicht in einem Algorithmus fassen,<br />

wenn nur die bekannten 5 Befehle zur Verfügung stehen. Die einfache Aufgabe, "führe eine Aktion n-mal durch", kann<br />

der SAP nicht durchführen, weil er nicht prüfen kann, wann die Aktion zum n.-mal durchgeführt wurde.<br />

Im folgenden sollen Grundzüge eines Rechnersystems dargestellt werden, für das die Beschränkungen des SAP nicht<br />

mehr gelten: ein 8 Bit breiter Mikroprozessor mit 64 k adressierbarem RAM und festverdrahteter Ablaufsteuerung (hardwired<br />

control). Es gab mehrere solcher Systeme von Ende der 70ger bis Mitte der 80ger Jahre. (Z80 in Rechnern mit<br />

Betriebssystem CPM, 6502 in Commodore C64 und Apple II und 8080/8085 von Intel als Industriestandard ...) Die folgenden<br />

Ausführungen beziehen sich auf den 8085.<br />

Um einen Programmablauf auf Grund von Zuständen - conditions- (größer, kleiner, null, negativ...) formulieren zu können,<br />

müssen diese Zustände vom Prozessor angezeigt werden.<br />

8.2 Flags<br />

Flags sind Flip-Flops, die während eines Programmablaufes sich ändernde Zustände signalisieren. Diese Flags sind an<br />

der ALU angeschlossen.<br />

Erzeugte Flags des Universalrechners vom Typ Intel 8085:<br />

Sign Flag - Ist der Inhalt des Akkumulators negativ, wird das Sign Flag gesetzt (Flip-Flop wird high)<br />

Zero Flag - Ist der Inhalt des Akkumulators Null, wird das Zero Flag gesetzt.<br />

Carry-Flag - Führt eine Addition zu einem Überlauf, wird das Carry Flag gesetzt.<br />

Parity-Flag - Ist die Anzahl bits <strong>im</strong> Akkumulator mit dem Wert 1 geradzahlig, wird das Parity-Flag gesetzt.<br />

Diese Flags sind Bits in einem 8 Bit Register F (siehe Blockdiagramm des 8085 <strong>im</strong> Anhang).


Weiterentwicklung des SAP - der 81<br />

8.2.1 Übung: Das Sign-Flag<br />

Ist das oberste Bit <strong>im</strong> Akkumulator (bzw. ALU) gesetzt, so repräsentiert dies einen negativen Wert. Das<br />

Sign Flag soll darüber Auskunft geben, ob der Wert positiv oder negativ ist.<br />

Überlegen Sie, wie die Signale bit7 bis bit0 der ALU verarbeitet werden müssen, damit bei positivem Vorzeichen die<br />

Leitung (Sign-Flag <strong>im</strong> Register F) auf low, andernfalls auf high gesetzt wird.<br />

1<br />

8.2.2 Übung: Das Zero Flag<br />

Will man eine Aktion n-mal durchführen, so ließe sich das wie folgt formulieren:<br />

1. - Lade in ein Zählerregister Z die Zahl n<br />

2. - führe die Aktion aus<br />

3. - dekrementiere das Zählerregister Z<br />

4. - ist Z 0, dann weiter bei 2<br />

5. - fertig<br />

Um diesen Algorithmus programmieren zu können, muß man ein Register auf den Inhalt 0 testen können. Überlegen Sie,<br />

wie die Signale bit7 bis bit0 der ALU verarbeitet werden müssen, damit bei Eintreten des Wertes 0 eine Leitung (Zero<br />

Flag) auf high gesetzt wird.<br />

Die Aufgabe wird nun genauer formuliert und mit Instruktionen des 8085 gelöst.<br />

Aufgabenstellung: Addiere die Zahlen von 1 bis 10<br />

Label Instruction<br />

1.-Lade den Akkumulator mit 0 MVI A, 0<br />

2.-Lade in das Register C die Zahl 10 MVI C, 0A<br />

3.-Aktion ausführen=addiere C zu Akkumulator Loop: ADD C<br />

4.-dekrementiere das Zählerregister C DCR C


82 Weiterentwicklung des SAP - der<br />

5.-ist C 0, dann weiter bei 3 JNZ Loop<br />

6.-ablegen des Ergebnisses bei 3020H STA 3020H<br />

7.-fertig HLT<br />

Das Ergebniss wird zwar nirgendwo angezeigt, das kümmert jetzt aber nicht weiter. Was hier interessiert, ist die Instruktion<br />

JNZ - Jump if not Zero. Sie fordert zunächst einen Verstoß gegen das bisherige Prinzip, eine Instruktion nach der<br />

anderen in aufsteigender Folge abzuarbeiten, indem einfach der PC nach jedem Befehl erhöht wird und so auf die nächste<br />

Instruktion <strong>im</strong> RAM zeigt. Daraus folgt, der PC muß beschreibbar sein, alle "Jump to address" Befehle machen nichts<br />

anderes, als den PC mit einem neuen Wert zu beschreiben, von dem aus die Verarbeitung wieder in aufsteigender Adreßreihenfolge<br />

weiter geht.<br />

Da der Programmspeicher 64 k RAM umfaßt, muß der PC ein 16 Bit Register sein. JNZ ist ein Beispiel für einen bedingten<br />

Sprung, wobei die Bedingung das Zero-Flag des F-Registers bildet. Dementsprechend gibt es noch die Instruktionen<br />

JZ (Jump if Zero), JM (Jump if minus) und den absoluten Sprungbefehl JMP (Jump, no condition)<br />

8.2.3 Übung : Handassemblierung<br />

Assemblieren Sie das obige Programm anhand der Tabelle ab Adresse 2000H. Assemblieren heißt: Übersetzen<br />

der Mnemonics und Labels in Opcodes und Adressen<br />

Adresse Hex Inhalt Mnemonic<br />

2000 3E MVI A, 0<br />

2001 00<br />

2002<br />

2003<br />

2004<br />

2005<br />

2006<br />

2007<br />

2008<br />

2009<br />

200A<br />

200B<br />

200C<br />

Wie man diesem Assemblerlisting entnehmen kann, benötigen die einzelnen Befehle unterschiedlich viele Bytes <strong>im</strong><br />

Speicher. Der ADD C Befehl z.B. benötigt 1 Byte, der JNZ 2 Byte und der STA 3 Byte. Be<strong>im</strong> SAP gab es <strong>im</strong>mer nur 1<br />

Byte Befehle ! (4 bit Opcode und 4 bit Operand). Da das Instruktionsregister be<strong>im</strong> 8085 auch nur 8 bit breit ist, kann<br />

also nicht jeder Befehl auf einmal vollständig geholt werden, d.h. die fetch-Phase ist nicht wie früher mit 3 Taktzyklen<br />

abgeschlossen. Wie ein Befehlszyklus aus mehreren Maschinenzyklen (be<strong>im</strong> SAP war das noch das selbe !) aufgebaut<br />

ist, wird nun am Beispiel des STA address erläutert:<br />

Der Befehl STA bewirkt, daß der Inhalt des Akkumulators unter der direkten Adresse abgespeichert wird, die durch das<br />

zweite und dritte Byte des Befehls angegeben ist. Im ersten Maschinenzyklus (M1) gibt die Zentraleinheit den Inhalt des<br />

Programmzählers (PC) auf den Adreß-Bus, führt einen Zyklus MEMORY READ aus, wodurch aus dem Speicher der<br />

Operationcode des neuen Befehls (STA) abgerufen wird. Das ist also bisher nichts anderes als unsere bekannte fetch-<br />

Phase und der Opcode von STA steht <strong>im</strong> Instruktionsregister IR. In der 4. Taktperiode von M1 interpretiert die Ablaufsteuerung<br />

mittels des Befehlsdecodierers den Opcode und setzt das Signal, die Steuerleitung für STA auf high. Jetzt


Weiterentwicklung des SAP - der 83<br />

sorgt die Kontrollmatrix dafür, daß 3 weitere Maschinenzyklen ausgeführt werden, zwe<strong>im</strong>al MEMORY READ und<br />

einmal MEMORY WRITE um die Adresse einzulesen, wo der Akkuinhalt abgelegt werden soll und um die Daten abzulegen.<br />

Dafür inkrementiert der 8085 den PC, womit das nächste Byte des Befehls angesprochen wird und führt einen<br />

MEMORY READ <strong>im</strong> Maschinenzyklus M 2 mit der Adresse PC+1 aus. Der angesprochene Speicher stellt die adressierten<br />

Daten auf dem Datenbus für die CPU bereit. Der 8085 speichert diese Daten - das niederwertige Byte der Adresse<br />

3020 H, also die 20 H - vorübergehend intern in der Zentraleinheit ab. Er benutzt dafür das Register Z, das nicht <strong>im</strong><br />

Blockschaltbild des 8085 eingetragen ist, weil der Programmierer keinen Zugriff darauf hat. Nun inkrementiert der 8085<br />

den PC erneut auf die Adresse PC+2 und liest aus dem Speicher das nächste DatenByte aus (M 3 ) welches das höherwertige<br />

Byte der direkten Adresse ist und legt es <strong>im</strong> internen Register W ab.<br />

Jetzt hat der Prozessor alle drei Byte des STA-Befehls geholt und dafür bereits drei Maschinenzyklen benötigt. Die folgende<br />

Ausführung bedeutet, daß die in M2 und M3 eingeholten Daten auf den Adreßbus gelegt werden, worauf der<br />

Inhalt des Akkumulators auf den Datenbus gebracht und anschließend ein Maschinenzyklus MEMORY WRITE ausgeführt<br />

wird (M4) Damit ist der Befehlszyklus beendet und es geht weiter bei M1 des nächsten Befehls.<br />

8.3 Zeitablauf bei dem Befehl STA<br />

<br />

M -Zyklus <br />

T-Periode T1 T2 T3 T4 T1 T2 T3 T1 T2 T3 T1 T2 T3<br />

Clk<br />

Art des Masch.zyklus<br />

_ _ _ _<br />

__/ \_/ \_/ \_/ \<br />

_ _ _<br />

__/ \_/ \_/ \<br />

_ _ _<br />

__/ \_/ \_/ \<br />

_ _ _<br />

__/ \_/ \_/ \<br />

Speicher lesen Speicher lesen Speicher lesen Speicher<br />

schreiben<br />

Adreßbus Die Adresse (Inhalt<br />

des Pro-grammzählers)<br />

zeigt auf das<br />

1. Byte (Operations-code)<br />

des Befehls<br />

Datenbus Operationscode des<br />

Befehls<br />

Die Adresse<br />

(PC+1) zeigt<br />

auf das 2.<br />

Byte des Befehls<br />

Niederwertiges<br />

Byte der direktenAdresse.<br />

Zeitdiagramm STA<br />

8.4 Erzeugen von Sign- und Zero-Flag<br />

Die Adresse<br />

(PC+2) zeigt<br />

auf das 3.<br />

Byte des Befehls<br />

Höherwertiges<br />

Byte der direktenAdresse.<br />

Die Adresse ist die<br />

in M2 und M3 abgerufene<br />

direkte Adresse.<br />

Inhalt des Akkumulators.<br />

Die folgende Schaltung zeigt mit den Symbolen der früheren DIN-Norm, wie die Flags erzeugt werden können.


84 Weiterentwicklung des SAP - der<br />

Schaltbild für die Erzeugung von Sign- und Zero-Flag<br />

8.5 Blockdiagramm des 8085 (Intel Corporation)<br />

Blockdiagramm des 8085 (Intel Corporation)


Weiterentwicklung des SAP - der 85<br />

Anschlußbezeichnungen und Funktionen des 8085


86 Weiterentwicklung des SAP - der<br />

Bezeich- Nummer Eingang E Funktion<br />

nung<br />

Ausgang A<br />

A8 - A15 21 - 28 A Adressen-Bus: Die höherwertigen 8 Bits der Speicheradresse oder die 8<br />

Bit der E/A Adresse; die Ausgänge sind während der Betriebszustände<br />

HOLD HALT und RESET hochohmig<br />

AD0 - AD7 12-19 E/A Gemultiplexter Adressen/Datenbus: Während der ersten Taktperiode<br />

eines Maschinenzyklus stehen am Bus die niederwertigen 8 Bit der<br />

Speicheradresse (oder die E/A-Adresse) an. In der zweiten und dritten<br />

Taktperiode wird der Bus anschließend zum Datenbus.<br />

ALE 30 A Adressenspeicher-Freigabe: Das Signal tritt in der ersten Taktperiode<br />

eines Maschinenzyklus auf und<br />

ermöglicht, daß die Adresse in den integrierten Adressenspeichern<br />

von Peripherie-Bausteinen ge<br />

speichert wird. Die fallende Flanke des ALE-Signals ist so eingestellt,<br />

daß die Aufbau- und Haltezeiten der Adresseninformation<br />

garantiert sind.<br />

Die fallende Flanke von ALF kann auch zum Takten der Status-<br />

Information verwendet werden. Der Ausgang ALE wird niemals hochohmig.<br />

S0, S1 und 29,33 A Maschinenstatus<br />

IO-M/ 34<br />

IO-M/ S1 S0 Status<br />

0 0 1 Speicher schreiben<br />

0 1 0 Speicher lesen<br />

1 0 1 ElAschreiben<br />

1 1 0 E/A lesen<br />

0 1 1 Operationscode-Abruf<br />

1 1 1 lnterrupt-Quittung<br />

* 0 0 Halt<br />

* X X Hold<br />

* X X Reset<br />

* = hochohmig (Tri-state)<br />

RD/ 32 A<br />

X = undefiniert.<br />

S1 kann als voreilendes RW/ -Statussignal verwendet erden. IO-M/, ,<br />

S0 und S1 werden am Anfang eines Maschinenzyklus gültig und bleiben<br />

es über den gesamten Zyklus. Die abfallende Flanke des ALESignals<br />

kann zum Speichern der Zustände dieser Leitungen verwendet werden.<br />

Lesen (Read): Ein L-Signal an RD/ gibt an, daß der ausgewählte Speicher-<br />

oder E/A-Baustein<br />

gelesen werden soll und daß der Daten-Bus für die Daten-übertragung<br />

zur Verfügung steht.<br />

Der Ausgang ist in den Betriebsarten »Hold«, »Halt« und »Reset« hochohmig.<br />

WR/ 31 A Schreiben (Write): Ein L-Signal an WR/ gibt an, daß am Daten-Bus<br />

anstehenden<br />

die Daten in den ange wählten Speicherplatz oder E/A-Kanal geschrieben<br />

werden sollen. Die Daten werden mit der steigenden Flanke von WR/<br />

übergeben. Während<br />

der Betriebs arten »Hold«, »Halt« und »Reset« ist der Ausgang hochohmig.<br />

READY 35 E Ein H-Signal an READY während eines Lese- oder Schreibzyklus zeigt<br />

an, daß der Speicher oder der<br />

Peripherie-Baustein zum Ausgeben oder Aufnehmen von Daten bereit<br />

ist. Wenn der READY-Eingang L<br />

Signal führt, wartet die Zentraleinheit über eine ganze Zahl von


Weiterentwicklung des SAP - der 87<br />

Taktperioden, bis READY auf H-Pegel<br />

übergeht, worauf der Lese- oder Schreibzyklus beendet wird.<br />

HOLD 39 E HOLD zeigt an, daß eine andere Einheit den Adres sen- und Daten-Bus<br />

anfordert. Nach dem Eintreffen<br />

der HOLD-Anforderung gibt die Zentraleinheit den Bus frei, sobald die<br />

augenblicklich ablaufende Bus-<br />

Operation beendet ist. Interne Operationen können weiterhin ablaufen.<br />

Der Mikroprozessor hat erst dann<br />

wieder Zugang zum Bus, wenn das Signal HOLD zurückgenommen wird.<br />

Sobald das HOLD-Signal<br />

quittiert ist, werden die Adressen- und Daten-Leitungen sowie RD, WR<br />

und IO-M hochohmig.<br />

HLDA 38 A Quittung von HOLD. Das Signal zeigt an, daß die Zentraleinheit eine<br />

HOLD-Anforderung empfangen<br />

hat und den Bus in der nächsten Taktperiode frei geben wird. HLDA<br />

geht auf L-Signal über, sobald die<br />

HOLD-Anforderung zurückgenommen ist. Die Zentraleinheit übern<strong>im</strong>mt den<br />

Bus eine halbe Takt-<br />

periode nach dem Obergang von HLDA auf L-Pegel.<br />

INTR 10 E Unterbrechungs-Anforderung: Der Eingang wird als allgemeiner Interrupteingang<br />

verwendet. Er wird nur<br />

während der vorletzten Taktperiode eines Befehls abgefragt sowie<br />

während der Zustände »Hold« und<br />

»Halt«. Wenn der Eingang aktiv ist, wird das Inkrementieren des Programmzählers<br />

(PC) gesperrt und<br />

INTA ausgegeben. Während dieses Zyklus kann ein RESTART- oder CALL-<br />

Befehl für den Sprung zu dem<br />

lnterrupt-Bedienungsprogramm eingefügt werden. Der Eingang INTR wird<br />

über Software freigegeben<br />

und gesperrt. Er wird ferner durch Reset« sowie unmittelbar nach<br />

Annahme einer Unterbrechungsanforderung gesperrt.<br />

INTA 11 A INTERRUPT-Quittung: Der Ausgang wird in dem Befehlszyklus<br />

nach Annahme eines INTR-Signals anstelle von RD verwendet<br />

(und hat den gleichen Zeitablauf). Er kann zur<br />

Aktivierung des Unterbrechungs-Steuerbausteins SAB 8259A<br />

oder eines an deren lnterrupt-Kanals verwendet werden.<br />

RST 5.5 9 E RESTART-Interrupt: Diese drei Eingänge haben den<br />

RST 6.5 8 gleichen Zeitablauf wie INTR, bewirken jedoch, daß automatisch<br />

ein interner RESTART<br />

RST 7.5 7 -Befehl eingefügt wird. Die Priorität dieser lnterrupt-<br />

Eingänge ist so geordnet, wie in nachfolgender Tabelle<br />

gezeigt. Diese lnterrupts haben eine höhere Priorität,<br />

als INTR. Außerdem können sie durch Verwendung des Befehls<br />

SIM einzeln maskiert werden.<br />

TRAP 6 E Der lnterrupt-Eingang TRAP ist ein nicht maskierbarer<br />

RESTART-lnterrupt-Eingang. Er wird gleichzeitig mit INTR<br />

oder RST 5.5-7.5 abgefragt und von keiner Maske oder<br />

lnterrupt-Freigabe beeinflußt. Er hat von allen lnterrupt-Eingängen<br />

die höchste Priorität (siehe nachfolgende<br />

Tabelle)<br />

RESET IN 36 E Ein L-Signal an diesem Eingang setzt den Programmzähler<br />

auf 9 und das lnterrupt-Freigabe- sowie HLDA Flipflop<br />

zurück. Der Daten- und Adressen-Bus sowie die Steuerleitungen<br />

sind, solange RESET ansteht hochohmig. Da RESET<br />

asynchron arbeitet, können die internen Register und


88 Weiterentwicklung des SAP - der<br />

Flags des Prozessors durch RESET mit undefinierbaren<br />

Ergebnissen verändert werden. RESET IN ist ein Schmitt-<br />

Trigger-Eingang und ermöglicht den Anschluß einer R-C-<br />

Kombination zur RESET-Verzögerung be<strong>im</strong> Zuschalten der<br />

Versorgungsspannung. Die Zentraleinheit bleibt so lange<br />

zurückgesetzt, wie RESET IN ansteht<br />

RESET QUT 3 A Zeigt an, daß die Zentraleinheit rückgesetzt wird. Dieser<br />

Ausgang kann als System-Rücksetzsignal verwendet<br />

werden. Das Signal ist mit dem Prozessortakt synchronisiert.<br />

Seine Dauer erstreckt sich über eine ganze Zahl<br />

von Taktperioden<br />

Xi, X 2 1, 2 E An X 1 und X 2 wird ein Quarz, eine LC- oder eine RC Kombination<br />

zur Anregung des internen Taktgenerators angeschlossen.<br />

X 1 kann auch als Eingang für einen externen<br />

Takt verwendet werden. Die Eingangsfrequenz wird halbiert<br />

und ergibt die interne Arbeitsfrequenz des Prozessors<br />

CLK 37 A Taktausgang zur Verwendung als Systemtakt. Die Periodendauer<br />

des Signals CLK beträgt das Doppelte der Eingangs-<br />

Periodendauer an X 1, X 2.<br />

SID 5 E Eingang für serielle Datenübertragung. Der Zustand dieses<br />

Eingangs wird bei jeder Ausführung eines RIM-Befehls<br />

in das Bit 7 des Akkumulators über tragen.<br />

SOD 4 A Ausgang für serielle Datenübertragung. Der Ausgang SOD<br />

wird entsprechend der Form des Befehls SIM gesetzt bzw.<br />

rückgesetzt<br />

Vcc 40 Versorgungsspannung (+5V><br />

V 55 20 Masse (0V)<br />

8.6 Der Befehlssatz des 8085<br />

Befehl Operanden Kurzbeschreibung Bytes T-States engl. Beschreibung<br />

ACI A, data, Cy Byte 2 wird unter Berücksichtigung des Übertrags zum<br />

Akku-Inhalt addiert<br />

2 7 add <strong>im</strong>mediate with Carry<br />

ADC reg A, r, Cy Der Akku-Inhalt wird unter Berücksichtigung des Übertrags<br />

zum adressierten Registerinhalt addiert und wieder <strong>im</strong><br />

Akku gespeichert<br />

1 4 add Register with Carry<br />

ADC M A, M, H&L, Der Akku-Inhalt wird unter Berücksichtigung des Über- 1 7 add Memory with Carry<br />

Cy<br />

trags zum Inhalt der durch H&L adressierten Speicherzelle<br />

addiert und wieder <strong>im</strong> Akku gespeichert<br />

ADD reg A, r Der Akku-Inhalt wird zum adressierten Registerinhalt<br />

addiert und wieder <strong>im</strong> Akku gespeichert<br />

1 4 add Register<br />

ADD M A, M, H&L Der Akku-Inhalt wird zum Inhalt der durch H&L adressierten<br />

Speicherzelle addiert und wieder <strong>im</strong> Akku gespeichert<br />

1 7 add Memory<br />

ADI A, B2 Byte 2 wird zum Akku-Inhalt addiert 2 7 add <strong>im</strong>mediate<br />

ANA reg A, r Bitweise UND-Verknüpfung des Akkus mit dem Registerinhalt<br />

1 4 AND Register<br />

ANA M A, M, H&L Bitweise UND-Verknüpfung des Akkus mit dem durch<br />

H&L adressierten Speicherzelle<br />

1 7 AND Memory<br />

ANI A, data Bitweise UND-Verknüpfung des Akkus mit Byte 2 2 7 AND <strong>im</strong>mediate<br />

CALL PC, M, SP, adr unbedingter Unterprogrammaufruf mit Ablage der Rücksprungadresse<br />

<strong>im</strong> Stack-Register<br />

3 18 call unconditional<br />

CC PC, M, SP, adr bedingter Unterprogrammaufruf mit Ablage der Rücksprungadresse<br />

<strong>im</strong> Stack-Register<br />

3 9/18 call conditional<br />

CM PC, M, SP;adr Bei Sign-Bit = 1 wird das Programm an adr fortgesetzt 3 11/17 call on minus


Weiterentwicklung des SAP - der 89<br />

CMA A Bildung des 1er Komplements des Akkus 1 4 complement accumulator<br />

CMC Cy Übertragbit komplementieren 1 4 complement carry<br />

CMP reg A, r Vergleiche Akku mit Registeri 1 4 compare register<br />

CMP M A, M, H&L Vergleiche Akku-Inhalt mit der durch H&L adressierten<br />

Speicherzelle<br />

1 7 compare memory<br />

CNC PC, M, SP, adr Bei Carry-Bit = 0 wird das Programm an adr fortgesetzt 3 11/17 call on no carry<br />

CNZ PC, M, SP, adr Bei Zero-Bit = 0 wird das Programm an adr fortgesetzt 3 11/17 call on no zero<br />

CP PC, M, SP, adr Bei Sign-Bit = 0 wird das Programm an adr fortgesetzt 3 9/18 call on positive<br />

CPE PC, M, SP, adr Bei Paritäts-Bit = 1 wird das Programm an adr fortgesetzt 3 9/18 call on even<br />

CPI A, data Vergleiche Akku-Inhalt mit Byte 2 2 7 compare <strong>im</strong>mediate<br />

CPO PC, M, SP, adr Bei Paritäts-Bit = 0 wird das Programm an adr fortgesetzt 3 9/18 call on odd<br />

CZ PC, M, SP, adr Bei Zero-Bit = 1 wird das Programm an adr fortgesetzt 3 11/17 call on zero<br />

DAA A Umwandlung des Akku-Inhalts in eine 2stellige Dez<strong>im</strong>alzahl<br />

1 4 dec<strong>im</strong>al adjust akkumulator<br />

DAD rp, H&L der Inhalt des Registerpaares wird zum Inhalt von H&L<br />

addiert<br />

1 10 add register pair to H&L<br />

DCR reg r der Registerinhalt wird um 1 verringert 1 4 decrement register<br />

DCR M M, H&L der Inhalt der durch H&L adressierten Speicherzelle wird<br />

um 1 verringert<br />

1 10 decrement memory<br />

DCX rp der Inhalt des Registerpaares wird um 1 verringert 1 6 decrement register pair<br />

DI nach diesem Befehl ist die Interruptverarbeitung gesperrt 1 4 disable interrupt<br />

EI eine Interruptanforderung wird nach dem nächsten Befehl<br />

bedient<br />

1 4 enable interrupt<br />

HLT der Prozessor wird angehalten 1 5 halt<br />

IN A, data Übernahme der Daten aus einer E/A-Schnittstelle, die<br />

durch B2 adressiert ist<br />

2 10 input<br />

INR reg r erhöhe den Inhalt des Registers um 1 1 4 increment register<br />

INR M M, H&L erhöhe den Inhalt der von H&L adressierten Speicherzelle<br />

um 1<br />

1 10 increment memory<br />

INX rp der Inhalt des Registerpaares wird um 1 erhöht 1 6 increment register-pair<br />

JC PC, adr springe, wenn Übertragsflag gesetzt ist 3 7/10 jump carry<br />

JM PC, adr springe, wenn Vorzeichenflag gesetzt ist (negativ) 3 7/10 jump minus<br />

JMP PC, adr unbedingter Sprung zu der spezifizierten Adresse 3 10 jump unconditional<br />

JNC PC, adr springe, wenn Übertragsflag nicht gesetzt ist 3 7/10 jump non carry<br />

JNZ PC, adr springe, wenn Nullflag nicht gesetzt ist 3 7/10 jump non zero<br />

JP PC, adr springe, wenn Vorzeichenflag nicht gesetzt ist (positiv) 3 7/10 jump plus<br />

JPE PC, adr springe, wenn Paritätsflag gesetzt ist 3 7/10 jump even<br />

JPO PC, adr springe, wenn Paritätsflag nicht gesetzt ist 3 7/10 jump odd<br />

JZ PC, adr springe, wenn Nullflag gesetzt ist 3 7/10 jump zero<br />

LDA adr, A lade Akku mit dem Inhalt der adressierten Speicherzelle 3 13 load accumulator direct<br />

LDAX rp, A lade den Akku mit dem Inhalt der durch das Registerpaar<br />

adressierten Speicherzelle<br />

1 7 load accumulator indirect<br />

LHLD adr, H&L lade H&L mit der durch B2 B3 und durch (B2 B3)+1<br />

adressierten Speicherzelle<br />

3: 16 load H&L direct<br />

LXI rp, adr lade Registerpaar mit Byte 2 und Byte 3. Registerpaar kann<br />

sein: BC, DE, HL<br />

3 10 load register pair <strong>im</strong>mediate<br />

MOV r r1, r2 der Inhalt von r2 wird nach r1 geladen 1 5 move register<br />

MOV M,r r, M, H&L r wird mit dem Inhalt der durch H&L adressierten Speicherzelle<br />

geladen<br />

1 7 move from memory<br />

MOV r,M M, r, H&l die durch H&L adressierte Speicherzelle wird mit dem<br />

Inhalt von r beschrieben<br />

1 7 move to memory<br />

MVI r r, data lade r mit Byte 2 2 7 move <strong>im</strong>mediate<br />

MVI M M, data, H&L beschreibe den durch H&L adressierten Speicherplatz mit<br />

Byte 2<br />

2 10 move to memory <strong>im</strong>mediate<br />

NOP keine Operation 1 4 no operation<br />

ORA r A, r bitweise ODER-Verknüpfung des Akkus mit dem Inhalt<br />

des Registers<br />

1 4 OR register<br />

ORA M A, M, H&L bitweise ODER-Verknüpfung des Akkus mit dem Inhalt<br />

der durch H&L adressierten Speicherzelle<br />

1 7 OR memory<br />

ORI A, data bitweise ODER-Verknüpfung des Akkus mit Byte 2 2 7 OR <strong>im</strong>mediate


90 Weiterentwicklung des SAP - der<br />

OUT A, data Ausgabe des Akku-Inhalts an die durch B2 adressierte E/A-<br />

Schnittstelle<br />

2 10 output<br />

PCHL HL, PC Programm wird an der Stelle fortgesetzt, die in H&L steht 1 5 H&L to program counter<br />

POP PSW M, SP, A,<br />

Flags<br />

lade den Akku und die Flags in der spezifizierten Weise<br />

aus dem Stack-Register<br />

1 10 pop processor status word<br />

POP rp rp, SP, M lade das Registerpaar in der spezifizierten Weise aus dem<br />

Stack-Register<br />

1 10 pop<br />

PUSH M, SP, A, verschiebe den Inhalt des Akkus und den Zustand der Flags 1 11 push prozessor status word<br />

PSW<br />

Flags ins Stack-Register<br />

PUSH rp rp, M, SP verschiebe den Inhalt des Registers in das Stack-Register 1 11 push<br />

RAL A Linksrotation des Akku-Inhaltes über das Carry-Flag 1 4 rotate akkumulator left through<br />

carry<br />

RAR A Rechtssrotation des Akku-Inhaltes über das Carry-Flag 1 4 rotate akkumulator right through<br />

carry<br />

RC PC,M, SP, Bei Carry-Bit = 1 wird das Programm an der Adresse 1 10 return on carry<br />

Flags fortgesetzt, die in dem über den Stapelzeiger adressierten<br />

Wort steht<br />

RET PC,M, SP, Das Programm wird an der Adresse fortgesetzt, die in dem 1 10 return unconditional<br />

Flags über den Stapelzeiger adressierten Wort steht<br />

RIM ?<br />

RLC A Linkssrotation des Akku-Inhaltes 1 4 rotate accumulator left<br />

RM PC,M, SP, Bei Carry-Bit = 1 wird das Programm an der Adresse 1 11 return on minus<br />

Flags fortgesetzt, die in dem über den Stapelzeiger adressierten<br />

Wort steht<br />

RNC PC,M, SP, Bei Carry-Bit = 0 wird das Programm an der Adresse 1 11 return on no carry<br />

Flags fortgesetzt, die in dem über den Stapelzeiger adressierten<br />

Wort steht<br />

RNZ PC,M, SP, Bei Zero-Bit = 0 wird das Programm an der Adresse fort- 1 11 return on no zero<br />

Flags gesetzt, die in dem über den Stapelzeiger adressierten Wort<br />

steht<br />

RP PC,M, SP, Bei Sign-Bit = 0 wird das Programm an der Adresse fortge- 1 11 return on positiv<br />

Flags setzt, die in dem über den Stapelzeiger adressierten Wort<br />

steht<br />

RPE PC,M, SP, Bei Parity-Bit = 1 wird das Programm an der Adresse 1 11 return on parity even<br />

Flags fortgesetzt, die in dem über den Stapelzeiger adressierten<br />

Wort steht<br />

RPO PC,M, SP, Bei Parity-Bit = 0 wird das Programm an der Adresse 1 11 return on parity odd<br />

Flags fortgesetzt, die in dem über den Stapelzeiger adressierten<br />

Wort steht<br />

RRC A Rechtssrotation des Akku-Inhaltes 1 4 rotate accumulator right<br />

RST M, SP, PC Sprungbefehl mit fester Adressierung (NNN) <strong>im</strong> 8 Bit<br />

Abstand.. Die Adreßbits NNN sind Bit 3,4 und 5 in der 16<br />

Bit Adresse. Alle anderen Bits sind 0.<br />

1 11 restart<br />

RZ PC,M, SP, Bei Zero-Bit = 0 wird das Programm an der Adresse fort- 1 11 return on zero<br />

Flags gesetzt, die in dem über den Stapelzeiger adressierten Wort<br />

steht<br />

SBB reg A, r, Cy der Registerinhalt wird unter Berücksichtigung des Carry-<br />

Flags vom Akkumulator subtrahiert.<br />

1 4 subtract register with borrow<br />

SBB M A, M, H&L,Cy der Inhalt der durch H&L adressierten Speicherzelle wird<br />

unter Berücksichtigung des Carry-Flags vom Akkumulator<br />

subtrahiert<br />

1 7 subtract memory with borrow<br />

SBI A, data, Cy Byte 2 wird unter Berücksichtigung des Carry-Flags vom<br />

Akkumulator subtrahiert<br />

2 7 subtract <strong>im</strong>mediate with borrow<br />

SHLD adr, H&L der Inhalt von H&L wird an der angegeben Adresse gespeichert<br />

3 16 store H&L direct<br />

SIM ?<br />

SPHL H&L, SP Der Inhalt von H&L wird in den Stack-Pointer geladen 1 5 move H&L to SP<br />

STA adr, A der Akku-Inhalt wird in der mit B2 und B3 adressierten<br />

Speicherzelle gespeichert<br />

3 13 store accumulator direct<br />

STAX rp, M, A der Akkumulatorinhalt wird unter der durch rp spezifiezierten<br />

Adresse gespeichert<br />

1 7 store accumulator indirect<br />

STC Cy Übertrags-Bit setzen 1 4 set carry<br />

SUB reg A, r Der Inhalt von r wird vom Akku-Inhalt subtrahiert 1 4 subtract register


Weiterentwicklung des SAP - der 91<br />

SUB M A, M,H&L der Inhalt der durch H&L adressierten Speicherzelle wird<br />

vom Akkumulator subtrahiert<br />

1 7 subtract memory<br />

SUI A, data Byte 2 wird vom Akku-Inhalt subtrahiert 2 7 subtract <strong>im</strong>mediate<br />

XCHG H&L, D&E Vertausche Inhalt von H&L mit D&E 1 4 exchange H&L with D&E<br />

XRA reg A, r, Akku-Inhalt wird mit Inhalt von Register r exklusiv-oder 1 4 Exclusive Or register with<br />

verknüpft und <strong>im</strong> Akku gespeichert<br />

accumulator<br />

XRA M A, H&M, M Die über H&L Register adressierte Speicherzelle wird mit<br />

Akku-Inhalt exklusiv-oder verknüpft und <strong>im</strong> Akku gespeichert<br />

XRI A, data Akku-Inhalt wird mit B2 exklusiv-oder verknüpft und <strong>im</strong><br />

Akku gespeichert<br />

XTHL H&L, SP, M Vertausche den Inhalt des Registerpaares H&L mit dem<br />

spezifizierten Inhalt des Stackregisters.<br />

8.7 Vergleich SAP - 8085 Befehlssatz<br />

1 7 Exclusive Or memory with<br />

accumulator<br />

2 7 Exclusive Or register with<br />

accumulator<br />

1 18 exchange stack top with H&L<br />

• Der Opcode benötigt 1 Byte (SAP nur 4 Bit).<br />

• Der Spalte T-States kann man entnehmen, daß die Befehle sehr unterschiedliche<br />

Zeit benötigen. (4-18)<br />

• Es gibt verschiedene Adressierungsarten:<br />

• Register addressing - der Operand des Befehls ist der Inhalt eines Registers.<br />

Beispiel: ADD B addiert zum Inhalt des Akkumulators den Inhalt von<br />

Register B.<br />

• Direct addressing - der Operand ist die Adresse, auf deren Inhalt sich der<br />

Befehl bezieht. Beispiel: LDA address oder STA address.<br />

• Immediate addressing - statt der Adresse wird als Operand der Wert selbst<br />

angegeben. Beispiel: MVI A, byte läd den Datenwert in den Akkumulator, der<br />

<strong>im</strong> Speicher direkt hinter dem Opcode von MVI abgelegt ist.<br />

• Implied addressing - bedeutet, daß die Adresse des zu bearbeitenden Datenwortes<br />

schon <strong>im</strong> Opcode enthalten ist. Beispiel: RAL (Rotate arithmetic<br />

left), RAR und RET.<br />

• Es gibt Befehle, die nur 1 Byte zur vollständigen Spezifikation benötigen<br />

(z.B. ADD B). Diese benötigen wegen der kürzeren Fetch-Phase nur 4 T-States.<br />

Zwei Byte Befehle (z.B. IN byte, also Einlesen eines Datenwortes von einer<br />

Schnittstelle) benötigen eine zusätzlichen Fetch-Phase und deshalb 7-10 T-<br />

States.<br />

8.8 Ein Assemblerprogramm<br />

Der Übergang vom Betriebssystem zu den Anwenderprogrammen ist von ersteren abhängig. Wir treffen folgende Konventionen:<br />

• Die erste Anweisung (Einsprungpunkt vom Betriebssystem) ist durch das Label START markiert.<br />

• Ein Programm wird mit einer Unendlosschleife beendet.<br />

Das folgende Programm fügt ein Eingabebyte zu einer Liste von Bytes, die ab 41 H beginnt und deren Länge in 40 H<br />

steht, wenn die Eingabe noch nicht in der Liste enthalten ist.<br />

START LXI H,40H Hier geht es los


92 Weiterentwicklung des SAP - der<br />

MOV B,M Länge der Liste<br />

INX H Zeiger auf Start der Liste<br />

LDA 30H Hole Eingabe<br />

SRLST: CMP M Ist Eingabe = Element der Liste<br />

JZ DONE ja, dann Ende<br />

INX H nein, gehe zum nächsten Element<br />

DCR B<br />

JNZ SRLST sind alle Elemente geprüft<br />

MOV M,A ja, füge Eingabe zur Liste<br />

LXI H,40H<br />

INR M Addiere 1 zur Listenlänge Ende des Programms<br />

DONE: JMP DONE<br />

8.9 Assemblieranweisungen<br />

8.9.1 Steuerung des Assembliervorganges<br />

Anweisung Beschreibung<br />

DATA Eingabe fester Daten (Konstante) in den Speicher<br />

DB wie DATA für Bytes (define byte)<br />

DW wie DATA für Wörter (define word)<br />

DS Reservierung für Variable (define storage)<br />

EQUATE Benennung von Konstanten (keine Speicherplatzbelegung)<br />

DEFINE wie EQUATE<br />

ORIGIN Angabe der Stelle <strong>im</strong> Speicher ab der a~ diesem Befehl Maschinenbefehle und Daten<br />

<strong>im</strong> Speicher abgelegt werden<br />

RESERVE Zuweisung eines Namens an einen Speicherbereich (keine Speicherplatzbelegung)<br />

8.9.2 Anweisungen<br />

END Ende des Textes des Quellprogramms<br />

LIST Ausgabe eines Übersetzungsprotokolls (Listing)<br />

NAME Name des Programms, erscheint <strong>im</strong> Listing als Header<br />

TITLE wie Name<br />

PAGE Seitenvorsprung <strong>im</strong> Listing<br />

SPACE Zeilenvorschub <strong>im</strong> Listing<br />

PUNCH Druck des Objectcodes auf dem Lochstreifenstanzer<br />

Beispiele<br />

KONST1 DATA 23<br />

NL DB 13,10,´§´<br />

WORT DW 32000<br />

LOGO DB ´FBI´


Weiterentwicklung des SAP - der 93<br />

HOCHSCHUL DATA ´FH Darmstadt´, 13, 10<br />

E<br />

´FB <strong>Informatik</strong>´, 13, 10, ´$´<br />

ADREND EQU *<br />

CR EQU 13<br />

LF EQU 10<br />

MAXIMUM EQU 1000<br />

MINIMUM EQU MAXIMUM - 500<br />

ROM ORG 1000H<br />

START ORG 100H<br />

BUFFERA RESERVE 1000H<br />

ORG HOSCHSCHULE<br />

ADRESSE RESERVE<br />

NAME<br />

LIST<br />

´Titel meines Programms´<br />

SPACE<br />

END<br />

4


94 Die klassische Von Neumann-<br />

9 Die klassische Von Neumann-Maschine<br />

1946 stellten Burks, Goldstine und von Neumann den Entwurf für eine Allzweck-Rechenmaschine zusammen.<br />

9.1 Die Prinzipien<br />

1. Der Rechner besteht zumindest aus Speicher, Rechenwerk, Steuerwerk und Ein/Ausgabegeräten (Min<strong>im</strong>alsystem).<br />

2. Die Rechenanlage führt ein gespeichertes Programm aus, das aus einer Folge von Befehlen besteht, d.h. die Struktur<br />

der Anlage ist unabhängig von dem bearbeiteten Problem. Das Problem wird durch einen austauschbaren Inhalt des<br />

Speichers beschrieben, die Rechenanlage ist also speicherprogrammierbar.<br />

3. Befehle und Daten liegen in einem gemeinsamen 'Hauptspeicher'.<br />

4. Der Hauptspeicher besteht aus einer Reihe von Zellen gleicher Größe, die fortlaufend durchnumeriert werden; die<br />

Nummern heißen Adressen. Auf diese Adressen wird <strong>im</strong> Programm Bezug genommen, um Informationen abzulegen<br />

oder zu lesen.<br />

5. Das Programm ist <strong>im</strong> Hauptspeicher unter konsekutiven Adressen a, a+1, a+2, ... gespeichert. Im allgemeinen wird<br />

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<br />

(Reihenfolge der Ausführung).<br />

6. Jeder Befehl enthält einen Operator und evtl. eine Angabe zur Bezeichnung eines Operanden. Diese Angabe ist in<br />

der Regel nicht der Operand, sondern ein Verweis in Form der Adresse der Zelle, die den Operanden enthält. D.h.<br />

das Programm kann unabhängig von den Werten der Operanden formuliert werden.<br />

7. Von der in 4. festgelegten natürlichen Reihenfolge weicht der Automat nur dann ab, wenn ein sogenannter Sprungbefehl<br />

vorliegt.<br />

Die Tatsache, daß die Anweisungen eines Programms linear geordnete Teilfolgen bilden, erlaubt auf der Hardware-<br />

Ebene die Anwendung des Befehlszählerprinzips und damit die Konstruktion einer einfachen Kontrolleinheit.<br />

(Das Befehlszählerprinzip besagt, daß nach Befehl bei der Adresse N der Befehl mit der Adresse N+1 drankommt.)<br />

"Das Operationsprinzip der von Neumann-Architektur besteht darin, daß eine Operation grundsätzlich <strong>im</strong>mer auf den<br />

Inhalt der in der Operationsanweisung (dem Maschinenbefehl) referierten Speicherzelle (Register) angewandt wird, ohne<br />

Anschauung der Tatsache, was der jeweilige Inhalt der Speicherzelle bedeutet. Eine Speicherzelle wird durch die Angabe<br />

einer Adresse referiert, der Inhalt einer Zelle kann ein Maschinenbefehl oder ein skalarer Datenwert sein. Man kann<br />

dieses Operationsprinzip als ein Prinzip des min<strong>im</strong>alen Speicheraufwandes bezeichnen." 1<br />

Die Von Neumann Maschine kann einem Speicherzelleninhalt nicht ansehen, was er repräsentiert - einen Befehl oder<br />

einen skalaren Datenwert? Die Interpretation einer Informationseinheit erfolgt nach folgendem Muster:<br />

• die Maschine entscheidet auf Grund des Zustandes, in dem sie sich zum Zeitpunkt der Interpretation befindet, ob sie<br />

eine Bitkette als Befehl oder Datum interpretiert (s. Holezyklus und Ausführungszyklus - Ringzähler der Ablaufsteuerung).<br />

• die Interpretation eines Datums geschieht auf Grund des Typs der Anweisung, dessen Argument das Datum ist.<br />

1 Giloi W.K., Rechnerarchitektur, S.35


Schwächen der Von Neumann- 95<br />

10 Schwächen der Von Neumann-Maschine<br />

Die Von Neumann Maschine besitzt eine Architektur des min<strong>im</strong>alen Hardware-Aufwandes. Die "stürmische Entwicklung<br />

auf der Bauelemente-Seite berechtigt zu der Aussage, daß Rechnerarchitekturen, die unter dem Aspekt der Hardware-Min<strong>im</strong>alität<br />

entwickelt wurden, nicht mehr zeitgemäß sind." 1 Warum eigentlich ?<br />

• Die Verarbeitung von strukturierten Datentypen (s<strong>im</strong>ples Beispiel: die Berechnung des arithmetischen Mittels von<br />

einem Zahlen-Array(1..n)) macht eine entsprechend große Zahl von Speicherzugriffen notwendig, nicht nur auf die<br />

Array-Elemente selbst, sondern auch auf den jeweils erforderlichen expliziten Befehl zum Holen des Elements. Hinzu<br />

kommt der Aufwand für die Interpretation dieser Befehle, für die Indexoperationen und Adreßberechnungen.<br />

"Dies war nur solange zu rechtfertigen, wie das Holen eines Speicherworts, die Befehlsinterpretation einschließlich<br />

einer Adreßberechnung, die Indexoperationen eine <strong>im</strong> Verhältnis zur eigentlichen datentransformierenden Operation<br />

kurze Zeit benötigte. Während dies bei den Rechnern der 2. Generation noch der Fall war, gilt dies heute in keiner<br />

Weise mehr, wo für die arithmetischen Operationen nicht mehr Zeit als für die genannten organisatorischen Operationen<br />

aufgewendet werden muß." 2<br />

• Eine Architektur des min<strong>im</strong>alen Hardware-Aufwandes erlaubt nicht die Vervielfachung der Hardware-<br />

Betriebsmittel mit dem Ziel der Parallelarbeit.<br />

• Eine Architektur des min<strong>im</strong>alen Hardware-Aufwandes erlaubt nicht den Einbau der zur Erzielung einer Ausfalltoleranz<br />

notwendigen Redundanzen.<br />

10.1 Der von Neumann Flaschenhals<br />

Zur Erinnerung: Der OUT-Befehl des SAP überträgt den Inhalt des Akkumulators an das Output-Display. Das gilt ebenso<br />

für den 8085, nur daß als Ausgabeeinheit ein Bildschirm angeschlossen werden kann. Nehmen wir an, <strong>im</strong> Speicher<br />

des 8085 steht ein Text, der am Bildschirm ausgegeben werden soll. Betrachten wir formal, welche Schritte durchgeführt<br />

werden müssen, um den Text der Länge n-Zeichen am Bildschirm auszugeben:<br />

1. Die Startadresse des Textes ins MAR schreiben<br />

2. Loop: Memory lesen und in Akkumulator ablegen<br />

3. Akkumulatorinhalt mit OUT-Befehl an den Bildschirm schicken.<br />

4. Testen, ob alle Zeichen ausgegeben sind, wenn ja, -> Ende<br />

5. Nein: MAR inkrementieren.<br />

6. Weiter bei Loop<br />

7. Ende: Fertig.<br />

Es soll hier nicht gezeigt werden, wie das Maschinenprogramm aussieht. Es soll deutlich werden, daß die Daten des<br />

Speichers erst in den Akkumulator geladen werden müssen, bevor sie an ein anderes Gerät weitergegeben werden können.<br />

Dazu gehört die Adreßbest<strong>im</strong>mung (MAR inkrementieren) für jedes einzelne Datenwort. Analog verhält es sich<br />

be<strong>im</strong> Einlesen eines Zeichens (z.B. von der Tastatur) und Ablegen <strong>im</strong> Speicher. In einer von Neumann-Maschine müssen<br />

die Daten vom Eingabe- zum Ausgabegerät <strong>im</strong>mer den Umweg über die CPU nehmen. Das nennt man den von Neumann<br />

Flaschenhals:<br />

"In seiner einfachsten Form besteht ein von Neumann-Rechner aus drei Teilen: einer ... CPU, einem Speicher und einem<br />

Verbindungsweg, der ein einzelnes Wort zwischen CPU und Speicher (oder eine Adresse zum Speicher) transportieren<br />

kann. Ich möchte diesen Weg den von Neumann-Flaschenhals nennen. Die Aufgabe eines Programms ist es, den Inhalt<br />

des Speichers zu verändern. Berücksichtigt man, daß die Aufgabe dadurch gelöst werden muß, daß man einzelne Worte<br />

hin und zurück durch den von Neumann-Flaschenhals pumpt, so versteht man den Grund für diesen Namen. Ironischer-<br />

1 Giloi W.K., Rechnerarchitektur, S.10<br />

2 Giloi W.K., Rechnerarchitektur, S.11


96 Schwächen der Von Neumann-<br />

weise besteht ein Großteil des Verkehrs in diesem Flaschenhals nicht aus nützlichen Daten, sondern nur aus den Namen<br />

von Daten, wie auch aus Operationen und Daten, die benötigt werden, um solche Namen zu berechnen. Bevor ein Wert<br />

aber diesen Weg gesandt werden kann, muß seine Adresse in der CPU vorhanden sein; diese muß dazu entweder vom<br />

Speicher über den Verbindungsweg zur CPU gesandt oder von der CPU generiert werden. Wird die Adresse vom Speicher<br />

zu CPU gesandt, so muß deren Speicheradresse zunächst vom Speicher zur CPU gesandt oder in der CPU generiert<br />

worden sein, und so weiter. Wird die Adresse andererseits von der CPU generiert, so geschieht das entweder aufgrund<br />

einer festen Regel (z.B. "Addiere 1 zum Inhalt des Befehlszählers") oder aufgrund eines Befehls, der über den Datenweg<br />

zur CPU gesandt worden war, in welchem Falle dessen Adresse über den Weg gesandt worden sein mußte.... und so<br />

weiter." 1<br />

Es wurde eine Reihe von Verfahren entwickelt, um die Auswirkungen dieses Flaschenhalses zu min<strong>im</strong>ieren. Sie sind<br />

Gegenstand des nächsten Kapitels.<br />

1 Backus J,Can Programming be Liberated from the von Neumann Style?, CACM 21, zitiert bei Giloi W.K., Rechnerarchitektur, S.37


11.1 Fetch and Overlap<br />

11 Steigerung der Rechnerleistung<br />

Dieses Verfahren wurde z.B. be<strong>im</strong> Intel 8080/85 realisiert und basiert auf folgender Überlegung: Wenn die Ausführungsphase<br />

eines Befehls nicht den externen Daten/Adressbus benötigt, sondern nur die ALU und den internen Datenbus,<br />

dann kann man den Daten/Adreßbus schon für andere Aufgaben benutzen.<br />

Man kann also die Ausführung eines Programmes beschleunigen, wenn man den nächsten Befehl vorbereitet während<br />

ein Befehl gerade ausgeführt wird. Dieses Verfahren nennt man fetch-execute overlap.<br />

Ein Beispiel soll das erläutern:<br />

Zwei Befehle, ADD B, und MOV B,A sollen nacheinander ausgeführt werden:<br />

Clock ---<br />

___|<br />

---<br />

___|<br />

---<br />

___|<br />

---<br />

___|<br />

---<br />

___|<br />

---<br />

___|<br />

---<br />

___|<br />

T 1 T 2 T 3 T 4 T 1 T 2 T 3 T 4<br />

ADD B PC OUT PC+1<br />

-> PC<br />

INSTR<br />

-> IR<br />

B -><br />

TMP<br />

A+TMP<br />

-> A<br />

MOV B,A PC OUT PC+1<br />

-> PC<br />

1<br />

ADD T<strong>im</strong>ing Diagramm<br />

INSTR<br />

-> IR<br />

---<br />

___|<br />

In den ersten drei T-States wird der Opcode für die ADD B Instruktion geholt. In T 4 wird der Inhalt des Registers B in<br />

das temporäre Register geladen. Während des zweiten Maschinenzyklus von ADD B beginnt die Hole-Phase des Befehls<br />

MOV B,A.<br />

Während T1 wird der Inhalt des Programmzählers an das Memory übertragen. Während T2 wird der ADD B Befehl<br />

vollendet, indem der Inhalt des Akkumulators zu dem temporären Register addiert und der Inhalt wieder <strong>im</strong> Akkumulator<br />

abgelegt wird. Für die Addition in T2 wird der interne Bus benötigt - das Inkrementieren des Befehlszählers benötigt<br />

jedoch nicht den Datenbus und kann deshalb zu diesem Zeitpunkt durchgeführt werden. Der ADD Befehl benötigt also<br />

statt 6 T-States real nur 4. Das gilt für den ADD Befehl <strong>im</strong>mer, unabhängig von dem folgenden Befehl, weil während der<br />

Hole-Phase des nächsten Befehls noch nicht das Ergebnis des ADD-Befehls benötigt wird.<br />

11.2 Pipeline<br />

Betrachtet man den Zeitablauf des STA-Befehls in Kapitel 8, so kann man den Befehlszyklus unterteilen in Befehl holen<br />

(in M1) - Operand holen (in M2 + M3) - Befehl ausführen (in M4). Nehmen wir an, daß alle drei Phasen ungefähr<br />

gleichlang sind (das wird erreicht zum Beispiel durch Einsatz eines CACHE-Memories), kann man daran denken, drei<br />

solche Bearbeitungszyklen überlappt auszuführen derart, daß die drei Zyklen jeweils um eine Phase verschränkt werden.<br />

Das setzt für jede der Phasen eine autonome Bearbeitungseinheit voraus, verlangt also, das Prinzip des min<strong>im</strong>alen Hardwareaufwandes<br />

zu verlassen.<br />

Das Prinzip läßt sich wie folgt beschreiben:<br />

BH = Befehl holen<br />

OH = Operanden holen<br />

1 Vgl. Malvino, Digital Computer Electronics, S.230<br />

A -><br />

TMP


98 Inhaltsverzeichnis<br />

BA = Befehl ausführen<br />

Befehl<br />

Nr. BH OH BA<br />

i .----------.----------.----------. --------------------> t<br />

i+1 .----------.----------.----------.<br />

i+2 .----------.----------.----------.<br />

Man kann sich dieses Verfahren als ein Fließband vorstellen. Während Befehl i+2 sich in der Phase Befehl holen befindet,<br />

holt sich der Befehl i+1 seine Operanden und der Befehl i wird gerade ausgeführt. Der Effekt ist, daß in jeder Phase<br />

ein Befehl abgearbeitet und somit eine dreifache Arbeitsgeschwindigkeit erreicht wird. Dies gilt aber nur, wenn in einem<br />

Programm keine Sprungbefehle enthalten sind. Nehmen wir an, der Befehl i sei ein Sprungbefehl: der normale Befehlsfluß<br />

wird unterbrochen und der Befehl i+1 kann erst geholt werden, wenn der Befehl i vollständig abgearbeitet<br />

worden ist. Trotz dieser Schwierigkeiten wurde das Prinzip der Pipelines in moderneren Rechnern perfektioniert. Es<br />

werden ganze Pipelines parallel aufgebaut, also die Befehle für beide Ergebnisse einer Bedingung (Branch Not Equal .. )<br />

vorsorglich geholt, und die Pipeline, die nicht verwendet wird, wird wieder verworfen, wenn das Ergebniss der Bedingung<br />

vorliegt.<br />

11.3 Erhöhung der Taktfrequenz der Prozessoren<br />

Im Zuge der Hardwareentwicklung wurde es möglich, die CPU um ein vielfaches schneller zu takten. Während ein PC<br />

mit Intel 8086 Prozessor mit 4,77 MHz betrieben wurde, laufen heutige PC´s mit über 300 MHz. Taktfrequenzen von 1<br />

GHz werden bereits anvisiert. Unabhängig von sonstigen Verbesserungen der Prozessorleistung bedeutet dies, daß ein<br />

Befehl entsprechend der Taktfrequenz schneller abgearbeitet wird. Bezüglich der Erläuterungen in Kapitel 2 bedeutet<br />

dies, daß die Register mit einem Bruchteil der Setup- und Holdt<strong>im</strong>e auskommen müssen. Der Alpha Chip von DEC wird<br />

mittlerweile mit einer Taktfrequenz von 600 MHz betrieben. Die Chip-Entwickler sind also schon sehr nahe an der<br />

Grenze des physikalisch machbaren mit Silizium als Grundstoff angelangt.<br />

11.4 Erhöhung der Datenbreite der Prozessoren<br />

Die Erweiterung der internen Datenbreite von 8 über 16, 32, 64 bis 128 Bit bei den Mikroprozessoren erhöht die Rechenleistung<br />

ganz erheblich, weil gegebenenfalls mehrere Instruktionen in einem Maschinenzyklus auf einmal geholt<br />

werden können (für den CALL Befehl benötigt der 8085 <strong>im</strong>merhin 3 Maschinenzyklen, nur um den Befehl zu holen).<br />

11.5 DMA - Direct Memory Access<br />

Mit einem Befehl (IN be<strong>im</strong> 8085) werden Daten von einem Peripheriegerät (Tastatur, Diskette, Festplatte...) gewöhnlich<br />

eingelesen. Dabei wird der Akkumulator als Zwischenspeicher benötigt (Vergleiche die Ausführungen in Kapitel 10).<br />

Die Idee von DMA besteht darin, die Geschwindigkeit der Datenübertragung zu erhöhen, indem der Datentransport<br />

ohne den Umweg über die CPU (mit Zwischenablage <strong>im</strong> Akkumulator) organisiert wird. Die Daten gehen direkt vom<br />

Memory zum Peripheriegerät und umgekehrt. Ein DMA Controller ist <strong>im</strong> Prinzip eine für die Ein/-Ausgabe opt<strong>im</strong>ierte<br />

CPU mit hardwired control. Während eines Datentransports mittels DMA muß die CPU angehalten werden, damit der<br />

Daten- und Adreßbus nicht zur gleichen Zeit von beiden Einheiten benutzt wird. Dies mindert die Effizienz des Verfahrens,<br />

weil die CPU nicht parallel Befehle bearbeiten kann, während die Datenübertragung stattfindet. Die CPU und der<br />

DMA-Controller müssen sich also verständigen, wer über den Bus verfügen darf. Be<strong>im</strong> 8085 gibt es dafür die Kontrollsignale<br />

HOLD und HLDA, wobei HOLD vom Controller als Anforderung an die CPU und HLDA von der CPU an den<br />

Controller als Bestätigung geschickt wird. Das folgende Blockdiagramm soll den Zusammenhang verdeutlichen:


11.5.1 Beispiel einer parallelen Schnittstelle (ohne DMA)<br />

Wenn man Datenfelder über eine Schnittstelle ausgeben möchte, sind für jedes Byte mehrere Befehle zu durchlaufen.<br />

Dies ist <strong>im</strong> folgenden Programm am Beispiel einer parallelen Schnittstelle dargestellt, deren Ausgaberegister bei der<br />

Adresse F000 steht. Ausgegeben werden soll der Speicherbereich, dessen Startadresse bei 1010 und dessen Endadresse<br />

bei 1012 gespeichert ist. Dazu wird jedes Byte aus dem Datenfeld in den Akkumulator geladen und anschließend an die<br />

Schnittstelle ausgegeben. Dann wird das Indexregister abgefragt, ob das Ende bereits erreicht ist. Solange das nicht der<br />

Fall ist, wird die Programmschleife <strong>im</strong>mer wieder ausgeführt und Byte für Byte übertragen. Man sieht, daß zur Ausgabe<br />

eines Bytes 5 Befehle innerhalb des Loops durchlaufen werden müssen, die zusammen 23 Taktzyklen erfordern. Das<br />

Programm benutzt den Befehlssatz des 6802 Mikroprozessors. 1<br />

Adr. Hex-Code Marke MNem. Operand Zyklen Kommentar<br />

1000 FE 10 00 LDX #$ 1010 Startadreese<br />

3 A6 00 LOOP LDA A 00,X 5 Zeichen holen<br />

5 B7 F0 00 STA A F000 5 Zeichen ausgeben<br />

8 08 INX 4 Nächste Adresse<br />

9 BC 10 02 CPX $ 1012 5 Endadresse<br />

C 26 F5 BNE LOOP 4 Wiederholung<br />

E 39 RTS --<br />

1010 00 00 WORD $0000 23 Startadresse<br />

2 02 00 WORD $0200 Endadresse<br />

Be<strong>im</strong> Einsatz von DMA teilt die CPU dem DMA Controller die Startadresse (<strong>im</strong> Beispiel $0000) und die Anzahl der zu<br />

übertragenden Bytes ($0200) mit. Die Startadresse wird <strong>im</strong> Adreßregister des DMA gespeichert. Dieses DMA Adreßregister<br />

(siehe Zählerregister in Kapitel 2) wird bei jedem Taktzyklus um eins erhöht, bis alle Daten übertragen sind.<br />

"Gegenüber einer programmgesteuerten Übertragung ergibt sich also die 23fache Übertragungsgeschwindigkeit. Dies<br />

gilt allerdings nur, solange die Zeit zur Initialisierung der DMA-Übertragung nicht ins Gewicht fällt. Deshalb ist es nicht<br />

sinnvoll, nur wenige Bytes per DMA zu übertragen." 2<br />

11.6 Parallelarbeit - Einprozessorsysteme<br />

Moderne Mikroprozessoren sind bereits in der Lage, mehrere Befehle gleichzeitig auszuführen. Dies ermöglicht die<br />

Superskalararchitektur, die dadurch gekennzeichnet ist, daß mehrere Ausführungseinheiten auf einer CPU <strong>im</strong>plementiert<br />

sind.<br />

1 U. Tietze, Ch. Schenk, Halbleiter-Schaltungstechnik, Springer Verlag, 1990, S.704<br />

2 U. Tietze, Ch. Schenk, Halbleiter-Schaltungstechnik, S.706


100 Inhaltsverzeichnis<br />

Beispiel : der Power PC von IBM Motorola und Apple verfügt über ein Integer-Rechenwerk, ein Fließkommarechenwerk<br />

und eine Einheit zur Berechnung der Sprungadressen, so daß er bis zu 3 Befehle gleichzeitig ausführen kann. Ähnliches<br />

gilt für Intels Pentium, DECs Alpha und andere moderne Prozessoren. Weitere Ausführungen hierzu finden sie <strong>im</strong><br />

<strong>Band</strong> 2 der Vorlesung: Prinzipien von RISC-Architekturen<br />

11.7 Rückkehr zur hardwired-control: RISC Prozessoren<br />

RISC steht für Reduced Instruction Set Computer, was soviel bedeutet wie „Rechner mit reduziertem Befehlssatz. Ganz<br />

grob und allgemein gilt: Der Vorteil der RISC-Prozessoren gegenüber den CISC-Varianten (IBM 360/370/390, DEC<br />

VAX, Intel 80x86 und Motorola 680x0 Familie etc. ) ist, daß sie auf Grund eines vereinfachten, regelmäßigen Befehlssatzes<br />

mit einer hardwired control erheblich schneller arbeiten. Typische RISC Vertreter sind DECs Alpha, die Prozessoren<br />

von Mips, Sun, sowie der Power PC. Auch hier gilt für vertiefende Betrachtungen der Hinweis auf den oben genannten<br />

<strong>Band</strong> 2 der Vorlesung.<br />

11.8 Parallelarbeit - Multiprozessorsysteme<br />

Mildert das Problem des Von Neumann Flaschenhalses.<br />

Parallelarbeit bedeutet gleichzeitige Ausführung mehrerer Operationen. Dies erfordert, daß Hardware-Betriebsmittel, die<br />

Rechenoperationen ausführen können (ALUs, komplette CPUs) mehrfach vorhanden sind. Strukturell weicht eine Maschine,<br />

die Parallelarbeit ermöglicht, <strong>im</strong>mer von der Von Neumann Struktur ab - Parallelarbeit erfordert nämlich andere<br />

Kontrollstrukturen als die der Von Neumann Architektur, da Parallelarbeit gegebenenfalls synchronisiert werden muß.<br />

Das bedeutet, daß nur von einander unabhängige Operationen parallel ausgeführt werden können; Operationen, die vom<br />

Ausgang anderer Operationen abhängig sind, müssen synchronisiert werden. Solche Kontrollaufgaben sind in der Von<br />

Neumann Architektur weder notwendig noch vorgesehen.<br />

"Parallelarbeit und das Von Neumann Prinzip schließen sich damit gegenseitig aus. Nicht ausgeschlossen ist jedoch, daß<br />

die Prozessoren eines für Parallelarbeit konzipierten Multiprozessor-Systems Von Neumann Maschinen sind." 1<br />

Moderne Prozessoren setzen zur Performance-Steigerung auf alle hier angesprochenen Konzepte. Beispielsweise ging<br />

die Firma Digital am Anfang der neunziger Jahre davon aus, daß in den folgenden 10 Jahren eine Steigerung der Rechenleistung<br />

um den Faktor 1000 möglich sein wird:<br />

• Steigerung der Taktgeschwindigkeit um den Faktor 10<br />

• Steigerung des Befehlsdurchsatzes pro Taktzyklus um den Faktor 10<br />

• Steigerung des Befehlsdurchsatzes durch multiprocessing um den Faktor 10<br />

Die Konzepte und Probleme von Multiprozessorsystemen werden <strong>im</strong> <strong>Band</strong> 3 der Vorlesung: Konzepte paralleler und<br />

massiv paralleler Rechnerarchitekturen ausführlich behandelt.<br />

1 Giloi W.K., Rechnerarchitektur, S.38


12 Literatur<br />

Giloi W.K., Rechnerarchitektur, Springer-Verlag Berlin-Heidelberg-New York 1981<br />

Giloi W.K., Rechnerarchitektur, 2. Auflage 1993, Springer-Verlag Berlin-Heidelberg-New York<br />

Hennessy, Patterson Rechnerarchitektur -Analyse Entwurf, Implementierung, Bewertung, Vieweg 1994 S.13f<br />

Malvino, Digital Computer Electronics, An Introduction to Microcomputers, THM New Delhi, S.7<br />

MärtinChristian , Rechnerarchitektur, Struktur, Organisation, Implementierungstechnik, Hanser Studienbücher der <strong>Informatik</strong>,<br />

1994,<br />

Duden, <strong>Informatik</strong>, Mannhe<strong>im</strong> 1993<br />

Einführung in die Elektronik 2, Kontaktlose Signalverarbeitung, Stam Verlag Köln, 1989<br />

Werner Hilf, Anton Nausch, M68000 Familie, Grundlagen und Architektur, te-wi Verlag, 1984<br />

U. Tietze, Ch. Schenk, Halbleiter-Schaltungstechnik, Springer Verlag, 1990, S.704<br />

Siemens, Mikrocomputer-Bausteine, Datenbuch 1980/81

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!