Vorlesungsscript Rechnerarchitektur S. Geisel Berufsakademie Sachsen Staatliche Studienakademie Bautzen Bautzen, den 11.10.2002 Nur für die Vorlesung bestimmt 1 Was ist Rechnerarchitektur? nach von Neumann: Ist bestimmt durch das Operationsprinzip für die Hardware und die Struktur ihres Aufbaus aus einzelnen HardwareBetriebsmitteln. Hardwarestruktur: Hardwareressourcen, Verbindungsstrukturen, Kommunikationsstrukturen Operationsprinzip : Informationsstruktur (Maschinendatentypen wie Integer, Gleitkomma) und Steuerstrukturen (Ablaufsteuerung, Ressourcenverwaltung, Datenzugriffssteuerung) Ablaufsteuerung z.B. programmcounter-, (ein Zähler zählt hoch und zeigt damit auf die nächste Befehlsadresse) von Neumann-Architektur daten-, (Operation wird ausgeführt wenn Operanden, aus anderen Befehlen errechnet, vorliegen) Datenflussarchitektur anforderungsgetriebene (Operation wird ausgeführt um Operanden für aktuelle Operation zu bekommen) Reduktionsarchitektur nach Blouw: Maschinensprache≅Prozessorarchitektur≅Befehlssatz des Prozessors≅Prozessordatentypen≅Instruction-SetProcessor≅Instruction-Set-Architectur 2 Grundschaltungen 2.1 Transistor in der Digitaltechnik: Umschaltung zwischen zwei logischen Zuständen 0 (Low, False) und 1 (High, True) die physikalisch durch entsprechende Spannungen repräsentiert werden z.B. 0V und +5V FET (Feldeffekt-Transistor): Source Gate Drain Kanal Silizium 2.2 AND (Konjunktion) y=a∧b ; andere Schreibweise: y=a•b a b y Vc Vc a b y Symbole nach DIN Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 1 a 0 0 1 1 b 0 1 0 1 2.3 y 0 0 0 1 OR (Disjunktion) y=a∨b; andere Schreibweise: y=a+b a b y 0 0 0 0 1 1 1 0 1 1 1 1 2.4 & ≥1 NOT (Komplement) y=a a 0 1 2.5 y 1 0 NAND y = a∧b a 0 0 1 1 2.6 b 0 1 0 1 y 1 1 1 0 & NOR y = a∨b a 0 0 1 1 2.7 b 0 1 0 1 y 1 0 0 0 ≥1 XOR (Antivalenz; Exklusiv OR) y=a⊕b; andere Schreibweise: y=a≠b a b y 0 0 0 0 1 1 1 0 1 1 1 0 =1 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 2 2.8 Halbadder a 0 0 1 1 b 0 1 0 1 y 0 1 1 0 c 0 0 0 1 a b ≥1 & c-Übertrag (carry) a & b HA 2.9 Volladder b 0 0 1 1 0 0 1 1 c* 0 1 0 1 0 1 0 1 y 0 1 1 0 1 0 0 1 c 0 0 0 1 0 1 1 1 a b c* & c*-Übertrag der (i-1)ten-Stelle a y y c a 0 0 0 0 1 1 1 1 c b & & & & & ≥1 ≥1 c y & c* VA y c Paralleladdierer für vierstellige Dualzahlen a0 b0 c-1 a3 b3 a2 b2 a1 b1 VA3 c y3 • • VA2 c2 y2 VA1 c1 y1 VA0 c0 y0 der Paralleladdierer kann wegen des Übertrages dennoch nur sequentiell arbeiten! (jeder Volladder muss immer auf das Ergebnis des vorherigen VA warten) Vorausberechnung des Gesamtübertrages für Überlaufkontrolle möglich durch spezielle Schaltungen, so das mehrere VA zu Blöcken zusammengefasst werden können, die jeweils kaskadiert werden und separat addieren Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 3 2.10 Subtraktion meistens durch Addition des negativen Subtrahenden realisiert durch geeignete Darstellung negativer Zahlen z.B. Zweierkomplement (ist logisches Komplement[Einerkomplement] plus 1) 3-4=3+(-4) = -1 3=0011 4=0100 Einerkomplement von 4 (0->1, 1->0): 1011 Zweierkomplement von 4 (Einerkomplement +1): 1011 +0001 1100 3=0011 4=0100 0011 + Einerkomplement 1011 1110 es entsteht richtig -1 (im Einerkomplement-Zahlensystem) 0011 + Zweierkomplement 1100 1111 es entsteht richtig -1 (im Zweierkomplement-Zahlensystem) Einerkomplement 1100 + Einerkomplement 1011 (1)0111 es entsteht Übertrag und +7 statt -7 Zweierkomplement 1101 + Zweierkomplement 1100 (1)1001 Es entsteht Übertrag aber richtig -7 (-3)+(-4) = -7 3=0011 4=0100 folglich muss beim Einerkomplement eine Nachbehandlung des Ergebnisses erfolgen durch addieren des Übertrages. Beim Zweierkomplement kann der Übertrag ignoriert werden. Bitmuster (n=4) Vorzeichenbit Einerkomplement 0000 0 0 0001 1 1 0010 2 2 0011 3 3 0100 4 4 0101 5 5 0110 6 6 0111 7 7 1000 -7 -0 1001 -1 -6 1010 -2 -5 1011 -3 -4 1100 -4 -3 1101 -5 -2 1110 -6 -1 1111 -7 -0 Beachte: beim Vorzeichenbit und Einerkomplement gibt es auch –0 Zweierkomplement 0 1 2 3 4 5 6 7 -8 -7 -6 -5 -4 -3 -2 -1 Offsetbinär -8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 Andere mathematische Operationen werden meist durch die Addition ersetzt. Bsp.: Ganzzahlige Multiplikation durch 0*0=0 3*4=12 0011*0100 0*1=0 0000 1*0=0 0000 1*1=1 0011 0000 0001100 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 4 Zwischenergebnisse sind immer 0 oder der Multiplikand! ∞ Sinusfunktion durch Taylorreihen sin x = ∑ (−1) k k =0 x 2 k +1 (2k + 1)! Exponentialfunktionen durch den Logarithmus und dieser durch Taylorreihen In modernen Prozessoren werden vorberechnete Werte in Tabellen vorgehalten und spezielle Vereinfachungen angewendet (z.B. Multiplikation mit 2 durch Verschiebung um ein Bit nach links), um die Performance zu steigern. 2.11 Speicherschaltungen 2.11.1 RS-Flip-Flop gewünschte Funktion ist die von zwei Tastern, wovon einer ein Licht einschaltet und der andere Taster zum ausschalten dient. Mögliche Realisierung: Vc b y a a 0 0 1 1 b 0 1 0 1 Y y-1 bzw. bei Initialisierung 0 oder 1 0 1 0|1|y-1|¬(y-1) bistabile NAND Kippstufe (Flipflop) für statische Speicher (z.B. Register); sehr schnell R-RESET S-SET t-Zeitindex Schaltung eines RS-Latch (kein Flipflop der bei Taktsignal flankengesteuert wäre, sondern pegelgesteuerter Latch) R & Q S R & S t 0 1 2 3 4 5 6 7 8 R 0 0 0 1 1 1 1 1 1 S 0 0 1 1 1 0 0 1 1 S R Q Q* Q* Q 0 1 1 1 1 1 0 0 0 Q* 0 1 0 0 0 1 1 1 1 Zustand initialisieren Kippt Stabil Stabil Kippt Stabil Stabil Für Q gilt ungültige Zustände! Q=Q* Setzen Speichern Speichern Ungültig Löschen Speichern Speichern RS-Latch hat instabile Zustände während des kippens. Daher RS-Flipflop der durch eine zusätzliche Taktleitung R und S nur bei stabiler Rückkopplung schaltet. Bei RS-Flip-Flop ist S=R=0 (bzw. da bei NAND vorher invertiert S=R=1) nicht erlaubt. Daher noch andere Flipflops z.B. D-Flipflop um solche Probleme zu umgehen. Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 5 2.11.2 ROM (read only memory) z.B. als Diodenmatrix aber auch in Transistortechnik Spaltenleitung Zeilen(Wort)leitung offen! Speicherinhalt wird während des Produktionsprozesses durch die Masken festgelegt. Nur für hohe Stückzahlen. 2.11.3 PROM (programable) Spaltenleitung Zeilen(Wort)leitung offen! Speicherinhalt kann durch erhöhte Spannung einmalig gebrannt werden (Brenndauer je Bit einige ms!). 2.11.4 EPROM (erasable) • • durch UV-Licht werden gebrannte Stellen wieder "repariert" (5-15 min) gesamter EPROM wird gelöscht! 2.11.5 EEPROM (electrical) • • • • • durch höhere Spannung (20-40V) kann Speicherinhalt wieder gelöscht werden höhere Spannungen auch durch Ladungspumpen auf dem EEPROM erreichbar Einsatz in Telefonen, Chipkarten Flash-Speicher als spezielle Form des EEPROM der nur blockweise (nicht byteweise) gelöscht/wiederbeschrieben werden kann (für BIOS, Speicher für digitale Fotokamera, USB-Memory-Stick) ca. 100.000 mal wiederbeschreibbar 2.11.6 RAM (random access memory) verliert Speicherinhalt ohne Versorgungsspannung! 2.11.6.1 - SRAM (statischer) nicht zerstörend derzeit schneller als DRAM (<10ns) für Cache, Register realisiert durch FlipFlop-Schaltungen Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 6 2.11.6.2 - DRAM (dynamischer) Steuerung muss regelmäßig Daten auslesen und erneut einschreiben (refresh) da der Kondensator sich selbst entlädt (ca. aller 2-4 ms) beim Lesen (und Schreiben) wird der Speicherinhalt ebenfalls gelöscht! preiswert, da geringer Schaltungsaufwand für Hauptspeicher Zeilenleitung E C Spaltenleitung D Abbildung 1 CMOS DRAM Speicherelement E (Enable) Zeilenleitung 0 1 0 0 ... 1 1 D (Data) Spaltenleitung 1 1 1 0 ... 0 1 C (Konden- Funktion sator) 0 1 1 1 ... 1 0 Daten liegen an, Zelle aber nicht gewählt SET C hält Spannung READ Kondensator entlädt über D 2.11.7 MRAM (magnetic) • • • (Prinzip ähnlich der alten Ferritkernspeicher) 2 magnetische Schichten, deren obere Schicht beim schreiben umpolarisiert wird speichert auch ohne Versorgungsspannung sehr schnell Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 7 Abbildung 2 MRAM Speichermatrix 2.12 Multiplexer/Demultiplexer z.B. für Befehlsdekodierung, Speicheradressierung (auch Telefonvermittlungstechnik) Multiplexer: eine von mehreren Eingangsleitung wird auf eine Ausgangsleitung durchgeschaltet Demultiplexer: eine Eingangsleitung x wird auf eine von mehreren Ausgangsleitung y durchgeschaltet Schaltleitungen s adressieren die gewünschte Eingangs- bzw. Ausgangsleitung Tabelle 1 Schaltfunktion Demultiplexer x 0 0 0 0 1 1 1 1 s1 0 0 1 1 0 0 1 1 S2 0 1 0 1 0 1 0 1 y1 0 0 0 0 1 0 0 0 y2 0 0 0 0 0 1 0 0 y3 0 0 0 0 0 0 1 0 y4 0 0 0 0 0 0 0 1 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 8 x & & s1 & y1 & y2 & y3 & y4 s2 Abbildung 3 1-auf-4 Demultiplexer 3 Datenübertragung in der Rechnerarchitektur (Bussysteme) 3.1 • • • 3.2 • • • • 3.3 • • • • • 3.4 • • • • 3.5 Probleme: in der Regel nicht nur eine Datenquelle und Datensenke (HS, µP, Geräte) es muss physischer Transport der Information zw. Quelle und Senke erfolgen zeitlicher Ablauf ist vorgegeben Gemeinsamkeiten: alle Datenübertragungen haben logische Signalpfade (Daten-, Adress- und Steuersignale) Implementierung der Signalpfade als physikalisch getrennte Medien Ausnahmen: z.B. Modem (Datenpfad = Adresspfad), Ethernet-Netzwerk (Datenpfad = Adresspfad = Steuerpfad), Normalfall: physisch = logisch drei zeitliche Phasen: Anbahnungsphase (herstellen einer Verbindung zw. Quelle und Senke), Durchführungsphase (Daten werden übertragen), Abschlussphase (Trennung nach Bestätigung einer erfolgreichen/erfolglosen Übertragung) Formen parallel <-> seriell unidirektional <-> bidirektional simplex – halbduplex – (voll)duplex synchron <-> asynchron statisch <-> dynamisch (Veränderung der Topologie während der Arbeit möglich) µP-Bus intern, extern extern getrennt für Speicher und Peripherie parallel, log.=phys., synchron IO-Register, Adressregister, Steuerlogik interne Bussysteme ISA, PCI, AGP..., 3.6 externe Bussysteme SCSI, USB, RS232, Centronics Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 9 4 Das von Neumann Rechnerkonzept 4.1 Schematischer Aufbau Eingabe Verarbeitung Ausgabe E A Zentraleinheit Hauptspeicher Zusatzspeicher 1. der Rechner enthält zumindest Speicher, Rechenwerk, Steuerwerk und Ein-, Ausgabegeräte 2. die Zentraleinheit arbeitet taktgesteuert 3. die intern verwendete Signalmenge ist binär kodiert 4. im Rechner werden Worte fester Länge verarbeitet 5. der Speicher besteht aus fortlaufend adressierten Speicherworten fester Länge 6. der Inhalt des Speicherwortes wird über seine Adresse angesprochen 7. der Rechner verarbeitet extern eingegebene Programme und Daten, die intern gespeichert werden 8. Programmbefehle und Datenworte werden in einem einheitlichen Hauptspeicher gehalten 9. der Prozessor verarbeitet Programmbefehle und Datenworte sequentiell 10. die Verarbeitung der Befehle erfolgt fortlaufend in der Reihenfolge ihrer Speicherung im Hauptspeicher 11. die sequentielle Verarbeitung kann nur durch einen unbedingten oder bedingten Sprungbefehl verändert werden 12. jede Aufgabe, die als Algorithmus beschreibbar ist, kann auf diesem Rechner verarbeitet werden Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 10 4.2 Beispielarchitektur Blockstruktur und grundlegende Datenflüsse des von-Neumann-Computers PG EG EG ... 1 AG AG ... 1 2 ZE HS 7 TZ 6 PD VD 5 7 6 3 4 P SW PG EG AG P ZE SW RW HS TZ PD VD periphere Geräte Eingabegerät Ausgabegerät Prozessor Zentraleinheit Steuerwerk Rechenwerk Hauptspeicher Takt/Zeit Programmdaten (Befehle) Verarbeitungsdaten RW 1 2 3 4 5 6 7 Eingabedaten Ausgabedaten Befehle Operanden (auch Resultate) Adressen für Befehle und Operanden Steuer- und Zustandsinformationen Takt Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 11 4.2.1 Rechenwerk Struktur: Arithmetisch-Logische-Einheit + Register Funktionen der ALU: • Arithmetische Operationen z.B. Addier-/Subtrahierwerk, Vergleichswerk, Multiplizierwerk, Gleitkommarechenwerk • Logische Operationen z.B. Negation, ODER, UND, XOR • Schiebeoperationen z.B. links/rechts, Anzahl Schritte, logisch/arithmetisch, zyklisch/nichtzyklisch • Vergleichsoperationen z.B. auf 0, auf FFFF Schaltung Rechenwerk Datenbus 12 13 14 HR ER AC 15 <ER> <ER> 16 AV 17 Ü0 EG 1 18 19 & + 20 BB AC ER EG BB Akkumulator AV Addiervorrichtung Eingangsregister HR Hilfsregister 1-Generator (+1 für Zweierkomplement bei Subtraktion) Bedingungsbit 4.2.2 Steuerwerk 4.2.2.1 Befehle elementare Programmstrukturen 1.) Reihenfolge 2.) Verzweigung (IF) 3.) Wiederholung (DO-WHILE) Struktur maschinenorientierter Befehle 1.) Operationsteil 2.) Operandenteil (z.B. Adressen, Konstanten) Programmstatus (Flag / Statusregister) Operation Adresse Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 12 - in einem Register oder in spezieller Speicherstelle gibt Informationen über das Ergebnis der Operation z.B. Bedingungen > = < positiv, Null, negativ; Richtung von Zeichenkettenoperationen, Verzweigungen; sonstige Infos wie Unterbrechung, Überlauf, Übertrag 4.2.2.2 Operationssteuerung 1.) Funktionsbitsteuerung (Bits des Operationsteils am Befehlsregister werden direkt für Steuersignale verwendet. Nur so viele Steuersignale möglich wie Bits im Operationsteil!) 2.) Kodierte Steuerung (über einen Decodierer wird Operationsteil in Steuersignale umgesetzt. Aus n Bits Operationsteil können 2n Steuerfunktionen erzeugt werden.) –schnell, nicht so flexibel wie Mikroprogrammsteuerung 3.) Mikroprogrammsteuerung (Bits des Operationsteils werden als Adresse auf den Anfang eines Mikroprogramms im Mikroprogrammspeicher interpretiert. Die Bits der einzelnen Mikrobefehle werden direkt in Steuersignale umgesetzt.) – Mikrocode kann eventuell auch geändert werden (Nachbildung alter Architekturen auf modernen Anlagen: Emulator; dynamische Anpassung während der Laufzeit auf Programm) Schaltung Steuerwerk Datenbus 8 BR OT 10 BZ BA AT Adressbus 7 +1 11 9 11 10 9 8 7 L START STOP T OE BB ZS BD Spru Sprb OA ... 1 aus n BR OT AT BZ BA BD ZS Spru Sprb L START STOP T OE BB zum RW bzw. Operationssteuerungen Befehlsregister Operationsteil Adressteil Befehlszähler Befehlsadresse Befehlsdecoder Zentrale Steuerschleife Sprung unbedingt Sprung bedingt Lesen (an Speicher) Start Signal Stop Signal Takt Operationsende Bedingungsbit Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 13 OA RW Operationsart Rechenwerk Schaltung Zentrale Steuerschleife T Spru Sprb SR L c S T & 1 & 11 1 R a b BB 7 S +1 d 8 e 9 R T & 10 f g & SE 1 & 1 & OE SR T Spru Sprb L BB OE SE a-g 7-11 - - STOP START Schieberegister (bei jedem Takt werden das über a eingetragenen Bit in Richtung g geschoben) Taktleitung unbedingter Sprung bedingter Sprung Lesen Bedingungsbit Operationsende Sprungende die 7 mindestens benötigten Takte für einen Steuerschleifendurchlauf Tore (Gate) Signal Start, einen Takt lang, startet Steuerung Signal Operationsende OE kommt von Operationssteuerungen, wenn diese beendet sind oder Signal Steuerungsende SE kommt bei Sprungbefehlen von Zentraler Steuerschleife, wenn diese beendet ist -> wodurch ein neuer Zyklus eingeleitet wird, falls kein Signal Stop anliegt die RS-Flipflops speichern die Sprungsignale Spru und Sprb in Takt 5 bis sie beim Takt 1 wieder rückgesetzt werden Operationssteuerungen sind nicht dargestellt!! Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 14 Tabelle 2 Takte unbedingter Sprung Takt geöffnete Tore 7 8 abgegebene Funktion Darstellung Signale 1 L Befehl "Lesen" an Speicher 2 Befehlsadresse an Speicher <AR>:=<BA> 3 warten auf Speicher 4 +1 neuen Befehl in Befehlsregister <BR>:=<DR> Befehlsadresse erhöhen (nicht notwendig) 5 9 Spru Operationsart aus Operationsteil des Befehls in <BD>:=<BR> Befehlsdecoder dekodieren -> ist Sprungbefehl 6 11 Adressteil des Befehls in Befehlsadressregister <BA>:=<BR> übertragen 7 SE Sprungende bedingter Sprung: auswerten des BB-Signals vom Rechenwerk in Takt 6 um Tor 11 zu schalten oder nicht Tabelle 3 Takte Befehl an Rechenwerk z.B. Addition Takt 1 2 3 4 geöffnete Tore 7 8 5 9 6 7 10 abgegebene Funktion Signale L Befehl "Lesen" an Speicher Befehlsadresse an Speicher warten auf Speicher +1 Befehl in Befehlsregister Befehlsadresse um 1 erhöhen OA Operationsart aus Operationsteil des Befehls in Befehlsdecoder dekodieren ->Signal zu entsprechender Operationssteuerung z.B. Addition Leertakt Adressteil des Befehls auf Adressbus legen z.B. für Adresse zweiter Operand für Addition Darstellung Operationssteuerung Addition Operand ist in AC bzw. HR geladen Ergebnis wird wieder an AC bzw. HR ausgegeben Signal OE bestätigt Ende der Addition Tabelle 4 Takte Operationssteuerung Addition Takt 1 2 3 4 5 6 geöffnete Tore 12 16,17 7 bis X X+1 19 X+2 14 abgegebene Funktion Signale warten auf Steuerschleife (muss Adresse anlegen) L Befehl "Lesen" an Speicher warten auf Speicher warten auf Speicher Daten aus Speicher in Extraregister Daten aus HR und ER in Addiervorrichtung OE warten auf AV Ergebnis in AC aufnehmen Ergebnis in HR Ende melden Darstellung <ER>:=<DR> X1:=<HR> X2:=<ER> <AC>:=Y <HR>:=<AC> Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 15 Schaltung Operationssteuerung Addition OA T SR a b L c d e f 12 16 g 17 ... h i 19 14 OE SR OA OE Schieberegister (bei jedem Takt werden das über a eingetragenen Bit in Richtung g geschoben) Operationsart (in diesem Fall Addition) vom Steuerwerk Operationsende ans Steuerwerk Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 16 4.2.3 Speicherorganisation SM AD A 0000000000 (=0) 0000000001 0000000010 0000000011 (=A) 0000000100 . . . AT 1 aus Amax+1 1111111110 1111111111 (=Amax) LV 2 AR 0000000011 ST 3 123456 DR HSS T 1 6 4 5 1 L S Datenbus Adressbus SW RW AR DR ST LV HSS AD AT A T SW RW L S RW Adressregister Datenregister Schreibtreiber Lesevorrichtung Hauptspeichersteuerung Adressdecoder (Demultiplexer) Adresstreiber Adressen Takt Steuerwerk Rechenwerk Lesen Schreiben Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 17 Hauptspeichersteuerung SR T 1 e 3 f 1 2 g 1 5 h & 4 L S T R & S 6 SR Schieberegister (bei jedem Takt werden die über e eingetragenen Bit in Richtung h geschoben) e,f,g,h die vier benötigten Takte für einen Speicherzugriff 1-6 Tore (Gate) Tabelle 5 Hauptspeicher lesen Takt 1 2 3 4 geöffnete Tore Funktion 1 in Adressregister die Adresse übernehmen 2,3 in Datenregister Inhalt der Adresse übernehmen Daten werden eventuell zerstört 4,6 gelesene Information entnehmen oder Informationen einschreiben in Datenregister 2,5 Daten aus Datenregister werden zurück in Speicher geschrieben Darstellung <AR>:=Adr <DR>:=<<Adr>> <Adr>:=000...00 IL:=<DR> <DR>:=IS <Adr>:= <Adr>:=<DR> - Zykluszeit tZykl: gesamte Speichervorgangszeit ->4 Takte - Zugriffszeit tZ: von anlegen der Adresse bis Daten bereitstehen -> 3 Takte Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 18 4.2.4 Das Ein-/Ausgabeinterface eines PCs 4.2.4.1 IO-Adressen 64k (65536) Portadressen für Geräte, Zähler, Zeitgeber die mit dem IN und OUT-Befehl angesprochen werden können. Die ersten 256 Port können direkt im Befehl angegeben werden, die anderen Adressen müssen im DX Register stehen. Ziel bzw. Quelle der Daten ist das AX-Register. Auch als Memory-mapped-I/O bzw. programmed-I/O (PIO Modes der Festplatten) bezeichnet. 4.2.4.2 Interruptsystem • • • • Interruptrequest (IRQ) von Gerät (auch Prozessor) fordert Unterbrechung des aktuell ablaufenden Programms Interrupt-Controller leitet IRQ als Interrupt (INT) an Prozessor Prozessor setzt Arbeit fort an zugehöriger Interruptadresse aus Interrupttabelle Interrupttabelle wird von BIOS und BS vorinitialisiert, kann aber auch von Programmen überschrieben werden Interruptauslöser: • Hardwaregesteuerte Interrupts: Signale InterruptRequest, Nicht Maskierbarer Interrupt • Programmgesteuerte Interrupts: Befehle INTOverflow, INTn • Prozessorinterne Interrupts: DIV0, Einzelschritt ... Interruptvectortabelle enthält 256 32bit Adressen für die Interruptbehandlungsroutinen. Treten mehrere Interrupts gleichzeitig auf, wird entsprechend der festgelegten Priorität abgearbeitet und die aktuelle Interruptbehandlung ggf. unterbrochen. Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 19 Adr. Hauptspeicher ... Aktuelles Programm CPU Interner Interrupt 7. ... Tastaturbehandlungsroutine Befehl INTn 6. Interruptlogik ... INT Nr. 255 ... 77 76 75 74 73 72 71 70 ... 21 ... F E D C B A 9 8 7 6 5 4 3 2 1 0 3FC ... 1DC 1D8 1D4 1D0 1CC 1C8 1C4 1C0 ... 084 ... 3C 38 34 30 2C 28 24 20 1D 18 14 10 C 8 4 0 ... Frei ... IRQ15: IRQ14: Festplatte IRQ13: Coprozessor IRQ12: IRQ11: IRQ10: IRQ09: IRQ08: Echtzeituhr ... DOS ... IRQ7: Drucker IRQ6: Diskette IRQ5: Festplatte IRQ4: COM1 IRQ3: COM2 IRQ2: zweiter INT-Contr. IRQ1: Tastatur IRQ0: Timer (18,2 mal/s) reserviert unbekannter Befehl Hardcopy CPU: num. Überlauf CPU: Breakpoint CPU: NMI (RAM Fehler) CPU: Einzelschritt CPU: Division durch 0 3. NMI 6a. Interruptcontroller (2 kaskadierte) 5. ... 2. Tastaturcontroller IO-Adressen 060h: Scancode 064h: Status 1. Abbildung 4 Interruptaufruf am Beispiel Tastatur 4.2.4.3 DMA-Controller Daten können zwischen Geräten und Speicher sowie zwischen Speicher und Speicher ohne die CPU ausgetauscht werden. Die Startadressen und die Größe der zu übertragenden Daten müssen programmiert werden. • PC: (third-party-DMA) 43 Byte Zwischenspeicher, 2 kaskadierte Controller, je 4 Kanäle, z.B. für LPT im ECPMode, Soundkarten, Festplatten (DMA Modes) • Einige Geräte haben eigene DMA Controller (first-party-DMA) z.B. PCI-Geräte im Bus-Mastering-Mode, Festplatten (UltraDMA Modes) Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 20 Tabelle 6 DMA Kanäle 16 BIT ISA, EISA, & MCA BUS Kanal DMA CONTROLLER #1 0 1 2 3 DMA CONTROLLER #2 4 5 6 7 Funktion Dynamic Memory Refresh Unassigned oder SDLC Floppy Disk Controller Unassigned First DMA Controller Unassigned Unassigned Unassigned 4.2.5 Spezialprozessoren Grafikprozessoren Gleitkommaprozessoren (Floating Point Unit) MMX und 3DNow! 4.2.6 Maßnahmen zur Steigerung der Performance Zugriffszeit Kosten pro Bit Register Cache Hauptspeicher Festplatten etc. (auch virtueller Speicher) Bandlaufwerke etc. Speicherkapazität Abbildung 5 Speicherpyramide 4.2.6.1 Prefetch • • vorausladen von Befehlen durch Sprünge wird sequentielle Abfolge unterbrochen ->Prefetch-Queue muss geleert und neu geladen werden! 4.2.6.2 Sprungvorhersage (Branch Prediction) siehe weiter unten (Pipeline-Architektur) 4.2.6.3 Register • • Spezialregister die besonders effektiv bestimmte Befehle ausführen Anzahl Register erhöhen um Zwischenergebnisse erneut zu verwenden 4.2.6.4 Cache • • • • mehrere Level (1-n) oft getrennter Instruktion- und Datencache auf Level 1 auf Prozessor-Chip oder extra Speicherbausteine durch schnellen SRAM und des Zugriffsverfahren schneller als Hauptspeicher Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 21 Beispiel eines direkt abgebildeten Cache (direct mapped) mit 2048 Einträgen und 32 Byte Cachezeilengröße->64kByte Cache Eintrag 2047 ... 7 6 5 4 3 2 1 0 Valid (1bit) Tag (16bit) Data (32 Byte) ... ... ... 1 1 Adressen, die den Eintrag benutzen 65504-65535, 131040-131071, ... ... D0 10 ... AA 96-127, 65632-65663, 131168-131199, ... 64-95, 65600-65631, 131136-131167, ... 32-63, 65568-65599, 131104-131135, ... 0-31, 65536-65567, 131072-131103, ... Das Valid-Bit gibt an, ob die Daten der Zeile gültig sind. Der Cache wird adressiert durch LINE (die Eintragsnummer), TAG (ist es der korrekte Speichereintrag), WORD (das 32bit-Wort in der Zeile) und ggf. BYTE (wenn auf nur ein Byte im Wort zugegriffen werden soll). Dadurch kann sofort auf die Daten zugegriffen werden, falls kein Cache-Miss auftritt. 16Bit (64KByte Speicherblock) TAG TAG 65535 ... 1 11Bit (2048 Zeilen) LINE LINE 2047 .... 2047 ... 1 4 GByte 0 0 2047 ... 0 Speicherinhalt A0 ... 00 ... ... AA ... 10 D0 ... 01 00 FD ... ... 00 .. 34 FF 3Bit (8 Worte) WORD 2Bit (4Byte) BYTE Phys. Adresse 4294967295 ... ... 65599 ... 65569 65568 ... 65535 65534 65533 ... ... 31 ... 1 0 Cache-Miss (Fehlschlag): ganze Zeile (im Beispiel 32Byte) werden aus Hauptspeicher gelesen. Teilassoziative Cache kann man sich als mehrere parallele Caches vorstellen (oft 2 oder 4-Wege). Dadurch können auch bei gleicher Position im Speicherblock (TAG) Werte mehrerer Blöcke im Cache gehalten werden. Es wird aber mehr Zeit benötigt, da mehrere TAG-Vergleiche stattfinden müssen und auch bei Cache-Miss muss durch eine Strategie (z.B. LRU) festgelegt werden, welche LINE gelöscht wird. Voll-assoziative Cache können beliebige Zeilen parallel ablegen, werden aber durch die aufwendigen TAG-Vergleiche nicht eingesetzt. 4.2.6.5 RISC • • • • geringe Taktzahl pro Befehl (möglichst 1) durch Nutzung von fest verdrahteten Schaltungen statt Mikrocode geringe Anzahl Befehle hohe Anzahl Register Heute: Mischformen z.B. Pentium Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 22 4.2.6.6 Parallelität Design Kriterien 1.) In welchem Bereich liegen Art, Größe und Anzahl der Verarbeitungselemente (CPU)? 2.) In welchem Bereich liegen Art, Größe und Anzahl der Speichermodule (HS)? 3.) Wie sind die Verarbeitungs- und Speicherelemente zusammengeschlossen (Verbindungsnetz)? Welche Aufgabe soll gelöst werden: Tabelle 7 Ebenen der Parallelarbeit in von-Neumann-Sprachen Programmebene Benutzerprogramme (Jobs) Prozesse (Tasks) Anweisungen (Threads) Elementaroperationen Kennzeichnung mehrere Jobs werden gleichzeitig ausgeführt mehrere Prozesse laufen konkurrent ab mehrere Anweisungen eines Programms werden gleichzeitig ausgeführt mehrere Operationen eines zusammengesetzten Ausdrucks werden gleichzeitig ausgeführt Parallelitätsgrad niedrig hoch niedrig bis hoch niedrig mehrere Tasks parallel eine Task parallel -> Threads, optimierte Anweisungen Unterstützung durch Programmiersprache, Compiler, Laufzeitsystem, Betriebssystem, Hardware oder spezielle Programmierung der Anwendung auf Instruktionsebene: Pipeline-Design, superscalare Architekturen auf Prozessorebene: Mehrprozessorsysteme (mehrere Prozessoren, gemeinsamer HS) - teuer, schwer zu bauen - einfach zu Programmieren (Betriebssystem) auf Rechnerebene: Mehrrechnersysteme (mehrere Prozessoren mit eigenem HS) - billig, einfach zu bauen - komplexe Programmierung (netzwerkweites Betriebssystem, verteilte Verarbeitung z.B. Corba) Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 23 4.3 Kommerzielle Prozessoren 4.3.1 Intel Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 24 Tabelle 8 80x86 Register nach [Messmer] Register Bezeichnung Aufgabe [E]AX (AH,AL) Akkumulator Multiplikation/Division, I/O, schnelle Verschiebung [E]BX (BH,BL) Base Zeiger auf Basisadresse im Datensegment [E]CX (CH,CL) Counter Zählwerte für Wiederholen, Verschieben, Rotieren [E]DX (DH,DL) Daten Multiplikation, Division, I/O [E]BP Base-Pointer Zeiger auf Basisadresse im Stacksegment [E]SI Source-Index Quellzeichenkette und Indexzeiger [E]DI Destination-Index Zielzeichenkette und Indexzeiger [E]SP Stack-Pointer Stackzeiger CS Codesegment Segment der Befehle DS Datensegment Segment der Daten SS Stacksegment Segment des Stack ES Extrasegment frei verwendbares Segment FS " " GS " " [E]IP Instruction-Pointer Offset der Befehle [E]Flags Flags Indikatoren für Prozessorstatus und Operationsergebnisse [E] ab 80386 als 32bit-Register, FS und GS ab 80386 Flag C P A Z S T I D O IOP N R V µP Bezeichnung Carry (Übertrag) Parity Auxiliary Carry Zero (Null) Sign (Vorzeichen) Trap (Einzelschritt) Interrupt Enable Direction (Richtung) Overflow I/O-Protection Level Nested Task Resume Virtual 8086 286 286 386 386 Aufgabe Übertrag bei einer Bereichsüberschreitung Ergebnis weist gerade Zahl Einsen auf Übertrag bei Bereichsüberschreitung der unteren 4 Bit (BCD-Zahlen) Ergebnis ist Null höchstwertiges Bit (nur bei vorzeichenbehafteter Arith. sinnvoll) nach jedem Schritt wird Int1 ausgelöst (Debuggen; mit POPF setzen) Prozessor akzeptiert HW-IRQ (CLI, STI löschen und setzen Bit) Richtung für Stringoperationen wie MOVS Ergebnis zu groß 2bit für Angabe der minimalen Schutzebene (von OS verwaltet) überwacht unterbrochene Tasks Debug-Tasks deaktivieren virtueller Mode aktiv (wie mehrere 8086 Realmode) Realmode-Adressberechnung Der 8086 teilt seinen Speicher in Segmente auf. Die 20 Adressleitungen können max. 220Byte= 1MByte Speicher adressieren. Ein Register ist 16bit lang und kann somit nur 216Byte=64kByte adressieren. Daher wird eine Aufteilung der Adresse auf zwei Register, Segment- und Offsetregister, notwendig. Damit ergebe sich ein Adressraum von 64k*64k=4GByte. Da beim 8086 nur 1MByte möglich war, wurde eine 16Byte Verzahnung für die Segmente eingeführt. Bsp: die Adressangabe 1FB1:02AD bedeutet Segment 1FB1, Offset 02AD damit ergibt sich die absolute Hauptspeicheradresse 1FB1h * 16 + 02ADh = 8113 * 16 + 685 = 130493 Virtualmode Protectedmode 8086, 286, 386+387,486, Pentium,Pentium II,Pentium III, Celeron, Pentium 4, XEON, Titanium 4.3.2 Weitere Prozessoren AMD K6, K6 II + 3DNow!, K6 III, K7 Athlon, Duron, Athlon XP IBM Power-PC DEC Alpha Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 25 4.3.3 Hauptspeicher Tabelle 9 Speichertypen Typ Standard (Fast Page Mode) RAM VRAM (Video RAM; auch Volatile RAM) WRAM (Windows RAM) CMOS-RAM PRAM (Parameter RAM) EDO-RAM (Extented Data Out DRAM) SDRAM (Synchronous DRAM) DDR-SDRAM (Double Data Rate SDRAM) DRDRAM (Direct RAMBUS DRAM) Beschreibung Single Port; langsam schnell; gleichzeitige Lese- und Schreibzugriffe (Dual Port); für Grafikkarten 25% schnellerer VRAM der Daten in Blöcken (Windows) holt durch Batterie mit Strom versorgt, daher kein Datenverlust beim Ausschalten; PRAM ist Begriff von Apple, CMOS-RAM bei PCs verbesserter DRAM; 5-20% höhere Bearbeitungsgeschwindigkeit durch nächsten Speicherzugriff, wenn vorheriger Zugriff noch nicht abgeschlossen ist arbeitet synchron zum Prozessortakt (Burst-EDOSDRAM Technologie) doppelte Übertragungsrate von SDRAM (Übertragung bei steigender und fallender Flanke) hohe Taktraten; eigenes Bussystem; nutzt steigende und fallende Flanke Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 26 Tabelle 10 Speichermodultypen Modultyp DIP (Dual Inline Package) Chip SIP-Modulen (SingleInline-Package) SIMM (Single Inline Memory Module) Beschreibung die Gehäuse der Chips haben kleine Beinchen, sogenannte Pins, mit denen sie in den jeweiligen Sockel auf dem Motherboard eingesetzt werden Module mit einzelnen Pins (Drähten); veraltet Kontaktleisten mit 30 oder 72 Pins; jede Seite hat die gleichen Kontakte DIMM (Dual Inline Memory 168 pins, unterstützt 64 bit Speicheradressen Module) RIMM (Rambus Inline Memory Module) eingetragenes Warenzeichen von RAMBUS, ähnlich DIMM, andere PINBelegung DRAM-Bausteine werden als Chip oder als Modul eingesetzt. Bei letzteren sind mehrere Chips zusammengefasst. Bei der Kennzeichnung der RAM-Bausteine wird hinter dem Bindestrich die Zugriffszeit angegeben. Ihre Maßeinheit sind Nanosekunden. Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 27 5 Klassifikation 5.1 Nach Flynn Anzahl (Single, Multi) der Befehle(Instructions) und Daten (Data) Variante Beispiel SISD Intel 286 SIMD Vektorrechner, StreamingSimdExtension, MultiMediaeXtension, 3D Now MISD sinnlos MIMD Parallelrechner 5.2 Umfassendere Klassifikationen Parallele Rechnerarchitektur SISD (von-Neumann) SIMD Vektorprozessoren MISD ? Arrayprozessoren Multiprozessoren UMA Bus MIMD COMA Switch Mehrcomputer NUMA CC-NUMA NC-NUMA MPP Gitter COW Hyperwürfel Abbildung 6 Taxonomie paralleler Computer [Tanenbaum99] 5.3 Wieso Supercomputer/parallele Systeme? - viele wissenschaftliche Probleme sind sehr komplex (Mathematik/Physik/Chemie...) - viele technische Probleme sind zeitaufwendig (Simulationen/Festigkeitsberechnungen...) - viele kommerzielle Probleme mit großen Datenmengen die z.B. suchen/sortieren/analysieren im Datawarehouse 5.4 • • Pipeline-Architektur ist ein Befehl in einer Stufe der zentralen Steuerschleife/Mikrocode abgearbeitet, kann der nächste Befehl "nachrücken", so das eine "Pseudo"-Parallelität entsteht, die im optimalen Fall pro Takt einen Befehl fertig abgearbeitet hat z.B. Athlon: 10 stufige Integer, 15 stufige Gleitkomma; Pentium III: 10 stufig ;Pentium 4: 20 stufig Tabelle 11 5-stufige Pipeline Instr. 1 Instr. 2 Instr. 3 Instr. 4 Instr. 5 IF ID EX MEM WB IF ID IF EX ID IF MEM EX ID IF Instruction Fetch (Befehl aus Hauptspeicher holen) Instruction Decode (Befehl dekodieren) Execution (Befehl ausführen) Memory Load/Store (HS<->Register) Writeback (Ergebnisse zurückschreiben) WB MEM EX ID IF WB MEM EX ID WB MEM EX WB MEM WB Zeit Problem: • es müssen Zwischenpuffer zwischen den einzelnen Stufen eingeführt werden (vorhergehende Stufe kann nicht gleichzeitig in ein Register schieben wenn nächste Stufe Register liest) Lösung: • die Pipeline kann nicht mit beliebig hoher Stufenzahl implementiert werden Problem: Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 28 • nicht alle Stufen und Befehle benötigen gleiche Taktzahl zur Ausführung Lösung: • durch getrennte Pipelines für verschiedene Befehle (superscalare Arch.) • optimale Wahl der Pipelineaufteilung Problem: • nur theoretische Annahme das Code sequentiell abläuft unbedingter Sprung • nächster Befehl im Hauptspeicher, der Sprungbefehl folgt, ist nicht der, der als nächstes ausgeführt werden muss • das es ein Sprungbefehl ist, ist erst nach Instruction-Decode-Stufe der Pipeline bekannt bedingter Sprung • wird gesprungen oder nicht? Konsequenz: Pipeline muss durch NOP (not operation) vorhergehende Stufen leer laufen lassen Lösung: Sprungvorhersage Variante 1: • allgemeine Annahmen, das bedingte Sprünge rückwärts im Speicher von Schleifen stammen und daher meist ausgeführt werden; bedingte Sprünge nach vorn im Speicher von Fehlerbehandlungen stammen und daher selten ausgeführt werden • der voraussichtlich nächste Befehl an dieser Adresse wird in Pipeline geladen und ausgeführt, war die Entscheidung falsch muss die Pipeline neu geladen werden 1 2 3 4 5 6 7 8 • • Sprungbefehl 3 wird als Schleife angenommen und daher als nächstes Befehl 1 in Pipeline geladen Sprungbefehl 5 wird als Fehlerbehandlung angenommen und daher Befehl 6 in Pipeline geladen Variante 2: • dynamische Sprungvorhersage durch speichern - der Adresse schon einmal ausgeführter Sprungbefehle und - ob der Sprung ausgeführt wurde in einer Branch-History-Table (spezieller Cache) • wird ein Sprung decodiert, wird in der Branch-History-Table nach ihm gesucht und der nächste Befehl entsprechend der Kennzeichnung in die Pipeline geladen • für noch nicht gespeicherte Sprünge gilt Variante 1 Gültig Sprung/keinSprung Sprungbefehlsadresse/Tag Sprungzieladresse (für berechnete Zieladr. notw.) 1 A300 1 A310 1 AB00 0 A310 Variante 3: • statische Sprungvorhersage durch Compiler/Programmierer der mit speziellen Sprungbefehlen häufigste Sprungdurchführung der CPU vorgibt • auch durch Simulationen ermittelbar weiter Varianten... 5.5 Superscalare Architektur • • mehrere Ausführungseinheiten arbeiten parallel z.B. Pentium III: 2 Integer Einheiten, 2 Gleitkomma Einheiten Athlon: 3 Integer Einheiten, 2 Gleitkomma Einheiten Problem: Datenabhängigkeiten: 1. eine Operation nutzt Ergebnisse einer anderen Operation (Regel: ReadAfterWrite) Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 29 2. eine Operation versucht ein Register zu überschreiben, was eine vorige Operation noch liest (Regel: WriteAfterRead) 3. eine Operation versucht ein Register zu überschreiben, was eine vorige Operation noch schreibt (Regel: WriteAfterWrite) mögliche Lösungen • eigene Register pro Einheit mit internem umbenennen der Register (Register Renaming) für 2. und 3. • umordnen der Operationen durch Compiler oder Prozessor (reorder) 5.6 Vectorprozessoren z.B. Gray T90 für Verarbeitung von Vektoren z.B. for (i=0;i<n;i++) a[i]=b[i]+c[i] Eingabevektoren VektorALU 5.7 Arrayprozessoren z.B. Thinking Machines MP-2 für die Verarbeitung von Feldern (z.B. Matrizenberechnungen, Bildbearbeitung) 5.8 HS HS HS ALU ALU ALU HS HS HS ALU ALU ALU Befehlseinheit Mehrprozessormaschinen UMA (Uniform Memory Architecture) jede CPU bekommt gleiche Zeit für HS Zugriff Ausprägung: SMP (symmetr. Multiprozessor) gleichartige Prozessoren werden gekoppelt z.B. SUN Enterprise 10000 (64 CPUs) NUMA (NonUniform Memory Architecture) Zugriff auf entfernten Speichern (auch lokaler Speicher einer entfernten CPU) ist langsamer als auf lokalen Speicher; wird aber dennoch mit LOAD und STORE abgewickelt ein gemeinsamer Adressraum COMA (Cache Only Memory Architecture) lokaler Speicher wird als Cache aufgefasst Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 30 Problem beim Cache: mehrere Caches aber ein gemeinsamer HS Lösung: MESI-Cache-Konzept definiert vier Zustände jedes Cache-Eintrages 1. Modified : Cachezeile gültig, Speicher ungültig, keine Kopien 2. Exclusiv : Cachezeile in einem Cache, aktuell 3. Shared (Geteilt): Cachezeile in mehreren Caches, aktuell 4. Invalid (Ungültig): Cache hat keine gültigen Daten (wird bei PC-Multiprozessormaschinen eingesetzt) 5.9 Mehrrechnersysteme • Nachrichtenaustausch statt LOAD und STORE um Daten auszutauschen MPP (Massiv Parallele Prozessoren) viele CPUs über Hochgeschwindigkeits-Verbindungsnetz gekoppelt z.B. CRAY T3E (2048 CPUs), DEC Alpha 21164, IBM SP/2 COW (Cluster Of Workstations) bzw. NOW (Network Of Workstations) viele Rechner über Netzwerk gekoppelt bei Cluster wird ein gemeinsames Festplattenarray genutzt 5.10 Innovative Architekturen Datenflussgetriebene Architekturen • komplexe Datentypen von Prozessor unterstützt • assoziative Speicher -> Daten werden anhand von "Variablennamen" erkannt und nicht durch Adresse im Hauptspeicher • Variablen können als nur-lese, einmal-benutzbar und ähnliches definiert werden Spracharchitekturen (Prozessor ist für die Sprache optimiert bzw. kann die Hochsprachenbefehle direkt verarbeiten) • Lisp • Prolog • FORTRAN • Java ungetaktet (jede "Baugruppe" optimale Geschwindigkeit, "Baugruppen" müssen gekoppelt werden) Licht (schnelle Schaltelemente, teilweise mit Farbstoffen, z.B. für Netzwerke) Bio-Computer (Nervenzellen, DANN Quantencomputer (Molekülkette verarbeiten parallele Algorithmen z.B. Kryptografie, Sortier- und Suchalgorithmen) Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 31 6 Assembler 6.1 Was ist Assembler? 1.) Assemblerprogramm Tabelle 12 Tools für Assemblerprogrammierung Programme Editor Assembler Linker Lader Debugger/Simulator Beispiele WordPad TASM TLINK /t MSDOS TD Ausgabe *.asm *.obj *.exe, *.com, *.dll Prozess/Task Register/Speicherinhalt/schrittweise Befehle 2.) Assemblersprache Quelldarstellung von Zielanweisungen der Ebenen: 1. Executive des Betriebssystems (z.B. Interrupts, DLL-Aufrufe) 2. konventionelle Maschinenebene (Maschinenbefehle) zwei Klassen von Anweisungen: 1. ausführbare Anweisungen (Befehle z.B. JMP, MOV, ADD) 2. Pseudokommandos (z.B. ORG, DB, DW, IF, Marken ) Format einer Assembler-Sprache [Marke:] Operation [Operanden]n [;Kommentar] Intel Motorola DEC Zielop./Quellop.1 Quellop.2 Quellop.2 Quellop.1/Zielop. Quellop.2 Quellop.1/Zielop. Quellop.2 Quellop.1 Zielop. A:=A+B (Quellop.1 wird Zielop.) A+B=B A+B=B (bei zwei Adressen) A+B=C (bei drei Adressen) Abbildung 7 Operandenformate 6.2 Wieso Assembler? durchschnittlich 5-10 Assembleranweisungen für eine Hochsprachenanweisung notwendig 1% des Programms für 50% der Ausführungszeit verantwortlich 10% des Programms für 90% der Ausführungszeit verantwortlich Assembler ca. 2-3 mal schneller als Hochsprache für Prozessautomatisierung / Echtzeitanforderungen für E/A-Operationen für Performancesteigerungen / Programmoptimierung Einbettung in Hochsprachen Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 32 6.3 Assembler für Intel-Prozessoren Grundstruktur COM-Programm (max. 64kByte) im Hauptspeicher (.MODEL TINY) SI Stacksegment Datensegment Entspricht der COM-Datei z.B. BP Codesegment IP CS=DS=SS Program Segment Prefix 100h groß Zugriff auf Register (AX, BX, ... Flags) Zugriff auf den Speicher (MOV) Adressraum 8086: 20 Adressleitungen = 220 Bit = 1MByte 16bit Register Adresse=16*Segment+Offset Zugriff auf Ports (IN, OUT) Sprünge (JMP, JNZ, JZ...) Stackoperationen (PUSH, POP) DOS-Aufrufe (INT) Macros 6.4 Übung doskey /i tasm datei tlink /t datei td datei debug datei Befehl ADD MOV DEC DIV OUT INT JMP JNZ Tastaturzeilenpuffer /i Insertmodus Turbo Assembler (in G:\sprachen\bp\bin) auch dpmi*.*!! /t für Tiny = .COM-Programm Turbo Debugger u unassemble d display h? help Verwendung Beispiel Takte 8086 3 10 3 80-90 10 51 15 16 Takte Pentium 1 1 1 17 12 16 1 3 Addition ADD AX,03h Verschieben MOV AL,Variable Dekrementieren DEC AH ganzzahlige Division DIV BL (AL ist implizit!) an Port ausgeben OUT 034h,AL Interrupt auslösen INT 21h unbed. Sprung JMP ShortLabel bed. Sprung (Jump NON JNZ ShortLabel ZERO) CMP vergleicht zwei Werte CMP al, cl IN liest Wert von Port IN AL,034h die Taktangaben gelten nur bei optimalen Bedingungen d. h. keine Pipelineunterbrechung, Befehl ist dekodiert usw. Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 33 Beispiel: Addition zweier Zahlen .model TINY .DATA A DB 03h B DB 02h C DB (?) .CODE .STARTUP start: MOV BL,B MOV AL,A ADD AL,BL MOV C,AL .EXIT END Start ;NEAR Aufrufe festlegen für COM-Programme ;Datensegment definieren ;A mit dem Bytewert 3 belegen ;B mit dem Bytewert 2 belegen ;C als undefinierte Variable belegen ; Codesegment-Anfang ; ORG 100h Befehl für PSP ;Register BL mit Daten aus B laden ;Register AL:=AL+BL P:\ASSEMB~1>tasm test1 P:\ASSEMB~1>tlink /t test1 P:\ASSEMB~1>debug test1.com -d 1E6A:0100 8A 1E 11 01 A0 10 01 02-C3 A2 12 1E6A:0110 03 02 00 2D E8 32 00 73-12 83 C7 -r AX=0000 BX=0000 CX=0013 DX=0000 SP=FFFE DS=1E6A ES=1E6A SS=1E6A CS=1E6A IP=0100 1E6A:0100 8A1E1101 MOV BL,[0111] -p AX=0000 BX=0002 CX=0013 DX=0000 SP=FFFE DS=1E6A ES=1E6A SS=1E6A CS=1E6A IP=0104 1E6A:0104 A01001 MOV AL,[0110] -p AX=0003 BX=0002 CX=0013 DX=0000 SP=FFFE DS=1E6A ES=1E6A SS=1E6A CS=1E6A IP=0107 1E6A:0107 02C3 ADD AL,BL -p AX=0005 BX=0002 CX=0013 DX=0000 SP=FFFE DS=1E6A ES=1E6A SS=1E6A CS=1E6A IP=0109 1E6A:0109 A21201 MOV [0112],AL -p AX=0005 BX=0002 CX=0013 DX=0000 SP=FFFE DS=1E6A ES=1E6A SS=1E6A CS=1E6A IP=010C 1E6A:010C B44C MOV AH,4C -p AX=4C05 BX=0002 CX=0013 DX=0000 SP=FFFE DS=1E6A ES=1E6A SS=1E6A CS=1E6A IP=010E 1E6A:010E CD21 INT 21 -p Programm normal beendet -d 0100 1E6A:0100 8A 1E 11 01 A0 10 01 02-C3 A2 12 1E6A:0110 03 02 05 2D E8 32 00 73-12 83 C7 -q 01 B4 4C CD 21 03 FE C8 75 F1 .............L.! ...-.2.s......u. BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0111=02 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC DS:0110=03 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PO NC BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PE NC DS:0112=00 BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PE NC BP=0000 SI=0000 DI=0000 NV UP EI PL NZ NA PE NC 01 B4 4C CD 21 03 FE C8 75 F1 .............L.! ...-.2.s......u. 6.5 Einbettung in Pascal (und andere Hochsprachen) integrierter Assembler Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 34 als Unterprogramm: function GetHashCode(const Buffer; Count: Word): Word; assembler; asm LES DI,Buffer MOV CX,Count XOR AX,AX @@1: ROL AX,5 XOR AL,ES:[DI] INC DI LOOP @@1 end; als Inlinecode: {$APPTYPE CONSOLE} var A,B,C: Byte; Begin A:=3; B:=2; Asm MOV BL,A MOV AL,B ADD AL,BL MOV C,AL End; WriteLn(C); end. einlinken von Objekt-Dateien beim Linkvorgang können Objektdateien aus dem Assembler mit den Hochsprachendateien zusammengelinkt werden {$L Dateiname} Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 35 7 Leistungsmessung Verfahren 1. Auswahl von Hardwarekenndaten (Taktraten, Operationsgeschwindigkeit, Kernprogramme, Mixe) 2. Laufzeitmessung existierender Programme (synthetische Programme, Benchmarks) 3. Messung des Betriebs bestehender Anlagen (HW-Monitor, Software-Monitor) 4. modelltheoretische Verfahren (Simulationen, analytische Modelle) Leistungskennwerte: • MIPS (Million Instructions Per Second): Welche Operation wurden hierfür gewählt? • FLOPS (Floatpoint Instructions Per Second): Wieviel bit? Welche Operation? Benchmarks: z.B. • WHETSTONE • DHRYSTONE • SPEC • TPS (Transactions per Second) für Datenbanken z.B. TPC-C-Benchmark 8 Praktikum PC-Technik Aufbau eines PC • Motherboard AT,ATX (schwarze Kabel zusammen für Stromanschluss AT; rot markierte Ader bei Flachbandkabel zu Netzstecker;BIOS/RTC/CMOS/Chipsatz) • Speichermodule • Bussysteme • Prozessorsockel • Jumper/Brücken/"Mäuseklavier" DIP-Switch um Portadressen/IRQ/DMA festzulegen • Anschlüsse Speaker/Reset/LEDs... Betriebssysteminstallation MSDOS Netzwerkinstallation Netzwerkkarte/Treiber Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 36 Übung Assembler .model TINY .DATA A DB 03h B DB 02h C DB (?) .CODE .STARTUP start: MOV BL,B MOV AL,A ADD AL,BL MOV C,AL .EXIT END Start ; gibt ein Zeichen auf ; .MODEL TINY .CODE ORG 100h Start: mov ax,0B800h mov ds,ax mov si,00100h mov al,'A' mov ah,070h mov [si],Ax .EXIT END Start ;NEAR Aufrufe festlegen für COM-Programme ;Datensegment definieren ;A mit dem Bytewert 3 belegen ;B mit dem Bytewert 2 belegen ;C als undefinierte Variable belegen ; Codesegment-Anfang ; ORG 100h Befehl für PSP ;Register BL mit Daten aus B laden ;Register AL:=AL+BL dem Videospeicher aus (auch unter Win NT möglich!) ;für COM-Programm nur NEAR-Aufrufe(max. 64k) (COre iMage) ;organisiert Codesegment auf Adresse 100h für .COM ;Videospeicheradresse laden ;ds direkt laden nicht erlaubt ;Position im Videospeicher (80 Spalten * 24 Zeilen * 2 Attributbyte ) ;Zeichen laden ;schwarz auf weiss ;auf [ds:si] ausgeben ;Code zum beenden wird eingefügt ;definiert 'Start:' als Eintrittspunkt ;Programm gibt eine Zeichenkette durch Aufruf einer DOS-Funktion (INT 21h) aus ; .MODEL TINY ;für COM-Programm nur NEAR-Aufrufe(max. 64k) (COre iMage) .DATA Text db 'Hallo',13,10,7,'$' ;12=$ ist Endekennzeichen in DOS .CODE ORG mov mov int mov int END Start Start: 100h ah,09h dx,OFFSET Text 21h ah,4Ch 21h ;organisiert Codesegment auf Adresse 100h für .COM ;Funktionsaufruf 9 festlegen ;Adresse des Textes laden ;DOS Aufrufen ;INT21 4Ch zum beenden ;definiert 'Start:' als Eintrittspunkt {Pascal-Programm zur Ausgabe einer Zeichenkette} program Project2; {$APPTYPE CONSOLE} begin write('Hallo' +#13#10#7); end. ;pollt den Scancode der Tastatur in einer REPEAT UNTIL Schleife ;gibt den Scancode auf dem Bildschirm aus ;Programm wird nach 16 Durchläufen der FOR Schleife verlassen ;d.h. nach 7 Tastendrücken (drücken und loslassen je ein Scancode) .model tiny .code .startup start: mov bx, 0000fh ;Zähler auf 16 setzen xor cx,cx ;CX null setzen lesen: IN al,060h ;von Port 60h (Tastatur) lesen mov dl, al ;Scancode für Ausgabe in DL mov ah,02h ;Code für Ausgabe eines Zeichens int 21h ;DOS Aufrufen cmp al,cl ;Compare auf Gleichheit setzt Flags jz lesen ;Sprung wenn Zeroflag Null ist mov cl,al ;Scancode in CL "merken" dec bx ;Zähler verringern cmp bx,0h ;Compare ob Null setzt Flags jnz lesen ;Sprung wenn Zeroflag nicht null ist .exit end start Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 37 Tastatur auslesen Beginn Zähler:=16 Scancode:=0 Scancode einlesen Scancode anzeigen ja Scancode neu=alt ? nein AltScancode:=Scancode Zähler dekrementieren nein Zähler=0 ? ja Ende Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 38 Übung Suchen Sie folgende Fragen mit Hilfe des WWW zu beantworten: Benchmarking: • Welche weiteren Benchmarkingtests für Datenbanken gibt es außer TPC-C? • Wie viel SPEC-„Punkte“ hat ihr Rechner etwa (bzw. ein entsprechender)? • Welcher Computer ist derzeit der schnellste? Wie ist dieser Computer ausgestattet und welche Architektur verwendet er? • Wo kann der Supercomputer der TU Chemnitz, der Earthsimulator und der IBM White in die Taxonomie eingeordnet werden? Innovative Architekturen: • Wie funktioniert ein Quantencomputer? Wie viele Qubits sind derzeit realisiert? • Welche Varianten von Biocomputern gibt es? • Welche Prozessoren emuliert die CPU von Transmeta? • Wie vielfach schneller ist die Umschaltzeit von auf Lichtwellen basierenden Schaltelementen gegenüber Transistoren? • Wieviel Millionen Transistoren hat maximal ein heutiger Chip? • Wieviel Register hat die Java Virtual Machine ? (www.sun.com) Einige Links sind im Iexplorer zu finden unter: (Favoriten|Studienrichtungen|Informatik|Rechnerarchitektur) Schreiben Sie sich die gefundenen URLs auf. Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 39 Tabelle 13 IO-Adressen eines PC Addr. 000-00Fh 010-01Fh 020-02Fh 030-03Fh 040-04Fh 050-05Fh 060-06Fh 070-07Fh 080-08Fh 090-09Fh 0A0-0Afh 0B0-0BFh 0C0-0CFh 0D0-0DFh 0E0-0Efh 0F0-0FFh 100-10Fh 110-11Fh 120-12Fh 130-13Fh 140-14Fh 150-15Fh 160-16Fh 170-17Fh First Quad (xx0h to xx3h) Interrupt Contr. #1 System timers Keyboard & PS/2 Mouse (060h), Speaker (061h) RTC/CMOS, NMI DMA page register 02 (081-083h) Second Quad Third Quad (xx4h to xx7h) (xx8h to xxBh) DMA controller, channels 0 to 3 (System use) (System use) (System use) (System use) (System use) Keyboard & PS/2 Mouse (064h) (System use) DMA page register DMA page register DMA page 3 (087h) 4-6 (089-08Bh) register 7 (08Fh) (System use) Interrupt Contr. #2 (System use) (System use) DMA controller, channels 4-7 (0C0-0DFh) DMA controller, channels 4-7 (0C0-0DFh) (System use) Floating point unit (FPU/NPU/Math coprocessor) (System use) (System use) (System use) SCSI host adapter (130-15Fh) “ “ 4. IDE controller, master drive Secondary IDE controller, master ... 1E0-1EFh 1F0-1FFh 200-20Fh 210-21Fh ... 3. IDE controller, master Primary IDE controller, master Joystick port 230-23Fh Non-NE2000 NE2000 network card (240-25Fh) NE2000 network card (240-25Fh) Sound card 250-25Fh 260-26Fh Non-NE2000 (System use) 270-27Fh 280-28Fh 2B0-2BFh NE2000 network card (260-27Fh) LPT2 (color) Plug&Play devices LPT3 (monochrom) NE2000 network card (260-27Fh) Sound card Non-NE2000 NE2000 network card (280-29Fh) NE2000 network card (280-29Fh) 290-29Fh 2A0-2Afh (System use) Sound card SCSI host adapter (220-23Fh) SCSI host adapter (220-23Fh) Sound card 220-22Fh 240-24Fh Fourth Quad (xxCh to xxFh) Non-NE2000 NE2000 network card (2A0-2BFh) NE2000 network card (2A0-2BFh) Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 40 2C0-2CFh 2D0-2DFh 2E0-2Efh 2F0-2FFh 300-30Fh COM4 COM2 Sound card (MIDI) Non-NE2000 NE2000 network card (300-31Fh) NE2000 network card (300-31Fh) 310-31Fh Non-NE2000 320-32Fh 330-33Fh 350-35Fh 360-36Fh 370-37Fh 380-38Fh 390-39Fh 3A0-3AFh 3B0-3BFh 3C0-3CFh 3D0-3DFh 3E0-3EFh 3F0-3FFh NE2000 network card (320-33Fh) Hard disk controller PC/XT Sound card (MIDI) NE2000 network card (320-33Fh) SCSI host adapter (330-34Fh) SCSI host adapter (340-35Fh) Non-NE2000 NE2000 network card (340-35Fh) SCSI host adapter (340-35Fh) NE2000 network card (340-35Fh) Tape accelerator card 3. IDE (slave) Non-NE2000 NE2000 network card (360-37Fh) Secondary IDE Tape accelerator card LPT1 (color) (slave) LPT2 (monochrom) NE2000 network card (360-37Fh) Sound card (FM) VGA/Monochrome Video VGA/EGA Video VGA/CGA Video Tape accelerator card LPT1 (monochrom) COM3 4. IDE (slave) Floppy disk controller Tape accelerator card Primary IDE (slave) COM1 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 41 Literaturverzeichnis [1] Bundschuh/Sokolowsky: Rechnerstrukturen und Rechnerarchitekturen Vieweg, 1988 [2] Coy: Aufbau und Arbeitsweise von Rechenanlagen Vieweg, 1988 [3] Podschun: Das Assembler-Buch Addison-Wesley, 1999 [4] Giloi: Rechnerarchitektur Springer, 1993 [5] Messmer: PC-Hardwarebuch Addison-Wesley, 1993 [6] Tanenbaum/Goodman: Computerarchitektur Prentice Hall, 1999 [7] Seifart/Beikirch: Digitale Schaltungen Verlag Technik Berlin, 1998 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 42 Inhaltsverzeichnis 1 2 Was ist Rechnerarchitektur? ................................................1 Grundschaltungen ...........................................................1 2.1 TRANSISTOR ........................................................................................................................................................1 2.2 AND (KONJUNKTION) .........................................................................................................................................1 2.3 OR (DISJUNKTION) ..............................................................................................................................................2 2.4 NOT (KOMPLEMENT) ..........................................................................................................................................2 2.5 NAND .................................................................................................................................................................2 2.6 NOR ....................................................................................................................................................................2 2.7 XOR (ANTIVALENZ; EXKLUSIV OR)...................................................................................................................2 2.8 HALBADDER ........................................................................................................................................................3 2.9 VOLLADDER.........................................................................................................................................................3 2.10 SUBTRAKTION ......................................................................................................................................................4 2.11 SPEICHERSCHALTUNGEN ......................................................................................................................................5 2.11.1 RS-Flip-Flop ...............................................................................................................................................5 2.11.2 ROM (read only memory) ...........................................................................................................................6 2.11.3 PROM (programable) .................................................................................................................................6 2.11.4 EPROM (erasable)......................................................................................................................................6 2.11.5 EEPROM (electrical) ..................................................................................................................................6 2.11.6 RAM (random access memory) ...................................................................................................................6 2.11.6.1 2.11.6.2 SRAM (statischer)................................................................................................................................................6 DRAM (dynamischer)..........................................................................................................................................7 2.11.7 MRAM (magnetic).......................................................................................................................................7 2.12 MULTIPLEXER/DEMULTIPLEXER ..........................................................................................................................8 3 Datenübertragung in der Rechnerarchitektur (Bussysteme) ....................9 3.1 PROBLEME: ..........................................................................................................................................................9 3.2 GEMEINSAMKEITEN: ............................................................................................................................................9 3.3 FORMEN ...............................................................................................................................................................9 3.4 µP-BUS ................................................................................................................................................................9 3.5 INTERNE BUSSYSTEME .........................................................................................................................................9 3.6 EXTERNE BUSSYSTEME ........................................................................................................................................9 4 Das von Neumann Rechnerkonzept ............................................10 4.1 SCHEMATISCHER AUFBAU .................................................................................................................................10 4.2 BEISPIELARCHITEKTUR ......................................................................................................................................11 4.2.1 Rechenwerk ...............................................................................................................................................12 4.2.2 Steuerwerk.................................................................................................................................................12 4.2.2.1 4.2.2.2 4.2.3 4.2.4 4.2.4.1 4.2.4.2 4.2.4.3 4.2.5 4.2.6 4.2.6.1 4.2.6.2 4.2.6.3 4.2.6.4 4.2.6.5 4.2.6.6 Befehle ...................................................................................................................................................................12 Operationssteuerung ...............................................................................................................................................13 Speicherorganisation ................................................................................................................................17 Das Ein-/Ausgabeinterface eines PCs.......................................................................................................19 IO-Adressen............................................................................................................................................................19 Interruptsystem.......................................................................................................................................................19 DMA-Controller .....................................................................................................................................................20 Spezialprozessoren ....................................................................................................................................21 Maßnahmen zur Steigerung der Performance ..........................................................................................21 Prefetch...................................................................................................................................................................21 Sprungvorhersage (Branch Prediction)...................................................................................................................21 Register...................................................................................................................................................................21 Cache......................................................................................................................................................................21 RISC .......................................................................................................................................................................22 Parallelität...............................................................................................................................................................23 4.3 KOMMERZIELLE PROZESSOREN .........................................................................................................................24 4.3.1 Intel ...........................................................................................................................................................24 4.3.2 Weitere Prozessoren..................................................................................................................................25 4.3.3 Hauptspeicher ...........................................................................................................................................26 5 Klassifikation ............................................................28 5.1 NACH FLYNN .....................................................................................................................................................28 5.2 UMFASSENDERE KLASSIFIKATIONEN .................................................................................................................28 5.3 WIESO SUPERCOMPUTER/PARALLELE SYSTEME?...............................................................................................28 5.4 PIPELINE-ARCHITEKTUR ....................................................................................................................................28 5.5 SUPERSCALARE ARCHITEKTUR ..........................................................................................................................29 5.6 VECTORPROZESSOREN .......................................................................................................................................30 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 43 5.7 ARRAYPROZESSOREN.........................................................................................................................................30 5.8 MEHRPROZESSORMASCHINEN ............................................................................................................................30 5.9 MEHRRECHNERSYSTEME ...................................................................................................................................31 5.10 INNOVATIVE ARCHITEKTUREN ..........................................................................................................................31 6 Assembler .................................................................32 6.1 WAS IST ASSEMBLER? .......................................................................................................................................32 6.2 WIESO ASSEMBLER?..........................................................................................................................................32 6.3 ASSEMBLER FÜR INTEL-PROZESSOREN ..............................................................................................................33 6.4 ÜBUNG ...............................................................................................................................................................33 6.5 EINBETTUNG IN PASCAL (UND ANDERE HOCHSPRACHEN) .................................................................................34 7 Leistungsmessung ..........................................................36 8 Praktikum PC-Technik ......................................................36 Vorlesungsscript Rechnerarchitektur - S. Geisel - Berufsakademie Bautzen 44