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