Systemarchitektur Sommersemester 2009 Universität des Saarlandes Reinhard Wilhelm auf Vorlagen von: Bernd Becker und Christoph Scholl, Institut für Informatik, Albert-Ludwigs-Universität Freiburg, Paul Molitor, Informatik, Universität Halle-Wittenberg, TexPoint fonts used in EMF. Read the TexPoint manual before you delete this box.: AAAA
Einleitung und Überblick
Literatur A. Tanenbaum: Structured Computer Organization (4th Edition). Prentice Hall International 1999. D. Patterson, J. Hennessy: Computer Organization & Design - The Hardware/Software Interface, Morgan Kaufmann Publishers 1994. J. Hennessy, D. Patterson: Rechnerarchitektur, Analyse, Entwurf, Bewertung, Vieweg. J. Keller, W. Paul: Hardware-Design, Teubner, 1998. B. Becker, P. Molitor: Technische Informatik, Pearson W. Stallings: Betriebssysteme: Prinzipien und Umsetzung. Pearson Studium, 2003. A. Tanenbaum: Moderne Betriebssysteme, Pearson Studium, 2002. A. Tanenbaum: Modern Operating Systems, Prentice Hall, 2001 (englische Originalausgabe). Nehmer, Sturm: Systemsoftware, Grundlagen moderner Betriebssysteme, Dpunkt-Verlag, 2001 W. J. Paul: Skriptum Systemarchitektur, SS 2008 Überblick
Systeme – Inhalte der Vorlesung Zunächst: Was ist ein System? Ein System stellt eine Gesamtheit von Komponenten dar, die miteinander durch Beziehungen verbunden sind und gemeinsam einen bestimmten Zweck erfüllen Hier: spezielle Systeme in der Informatik, in denen mindestens eine Komponente ein Rechner ist. Rechner Universalrechner (general purpose computer), PC, Arbeitsplatzrechner eingebetteter Rechner in Auto, Flugzeug, Waschmaschine, Fernseher, CD-Spieler, Spielkonsole, Navigator, Betriebssysteme Überblick
Markanteile Universalrechner ~2% Eingebettete Rechner ~98% Überblick
Verstehen von Systemen Wie versteht man ein System, welches aus sehr vielen Komponenten besteht: einem Rechner, der aus 100 Millionen Transistoren besteht, darauf laufender Software, Betriebssysteme, Übersetzer, Datenbanken, Kommunikationssysteme, Anwendungsprogramme mit Millionen Zeilen Programmcode Durch Erkennen der Struktur, dem Aufbau aus Komponenten, und dem Zusammenwirken dieser Komponenten zur Realisierung ihrer Funktion Methoden: Abstraktion, führt meist zu einer Sicht von Systemen in Schichten und Hierarchien Überblick
Funktionen von und in Rechnersystemen Welche Funktionen erfüllen Rechnersysteme? Berechnen von Ergebnissen aus Eingaben, Speichern von Daten, Steuern von Prozessen. Diese Funktionen finden wir auf allen Abstraktionsebenen wieder: Rechnen: Ausführen eines Programms auf Eingaben, Ausführen einer Wertzuweisung in einem Programm, einer arithmetischen Operation in einer Wertzuweisung, einer Berechnung der Adresse eines Operanden einer Operation. Speichern: Einträge in Datenbanken, Werte des richtigen Typs in Programmvariablen, Darstellungen von skalaren Werten in Registern des Prozessors, Bits in Flip-Flops Steuern eines Prozesses, Steuern des Kontrollflusses in einem Programm, Steuern der Ausführung eines Maschinenbefehls Überblick
Inhalte der Vorlesung Betriebssysteme Rechnerarchitektur Software/Hardware-Schnittstelle Befehlssatzarchitektur (Instruction Set Architecture) Überblick
Die (Befehlssatz-)Architektur als Schnittstelle Anwender Anwendungs-programmierer Anwendungsprogramme Betriebssystem-programmierer Bibliotheksfunktionen, Dienstprogramme Betriebssystem (Befehlssatz-)Architektur - Instruction Set Architecture (ISA) Überblick
Rechnerarchitektur und –organisation Rechnerarchitektur – die Nutzer-(Programmierer-)sicht eines Rechners Befehlssatz, zugreifbare Register, Zahl der Bits für die Darstellung von Daten, Adressierungsmodi, Ein-/Ausgabefunktionen Beispiel: alle x86-Prozessoren haben die gleiche Architektur Rechnerorganisation – die Realisierung der Architektur Aufbau des Rechners aus Komponenten, welche Arten von Speicher, welche arithmetischen Einheiten, welche Steuersignale, … Beispiel: wird die Multiplikation durch eine arithmetische Einheit realisiert oder muss sie in Software realisiert werden? Funktionsweise – wie die Komponenten zusammenspielen, um Befehle auszuführen Überblick
Rechnerarchitektur und –organization, Überblick grober Aufbau eines von-Neumann-Rechners Prozessor Arbeitsspeicher, grobe Arbeitsweise eines Prozessors Hardware/Software Schnittstelle, Befehlssätze Codierung von Daten Arithmetik Schaltkreise Boolesche Algebra, Boolesche Funktionen, Boolesche Ausdrücke Speicherhierarchie, Speicher Ein/Ausgabe, Busse Überblick
Unterhalb der Befehlssatzarchitektur Befehlssatzarchitektur - Instruction Set Architecture (ISA) Implementierung Prozessor (CPU) System-Bus Haupt- speicher Ein-/Ausgabe-Geräte, externe Speicher, externe Kommunikation Überblick
Prinzipielle Arbeitsweise eines Prozessors Fetch-Decode-Excecute-Zyklus Fetch hole den nächsten Maschinensprachebefehl aus dem Arbeitsspeicher und speichere ihn im Befehlsregister IR ab. Die benötigte Adresse steht im Befehlszähler PC Decode analysiere den Befehl und lade die benötigten Daten Execute führe den Befehl aus und speichere das Ergebnis ab BB - TI Kap. 2.2 Überblick 13
Der Fetch-Decode-Execute-Zyklus Prozessor (CPU) ALU Steuerwerk PC IR Systembus Haupt- speicher … 010101011111001010 Überblick
Befehlssatzarchitektur, Assembler und Maschinensprache ADD R1, R2, R3 Assemblersprache Syntax: <opcode> <dst>, <src1>, src2> Semantik: R1 R2 + R3 Übersetzung Maschinensprache – Befehle als Bitketten Befehlsformat opcode src1 src2 dst func Überblick
Datenpfad und Befehlsausführung Prozessor (CPU) ALU Steuerwerk Ausführung von R1 R2 + R3 PC IR Überblick Quelle: K. Diepold, LDV, TUM
Arithmetisch-logische Einheit (ALU) realisiert arithmetische und logische Operationen, Basis: Darstellung von Festkomma-, Gleitkommazahlen, Zeichenketten und logischen Werten. Uns interessierende Eigenschaften: Geschwindigkeit = Tiefe, depth, des benutzten Schaltkreises = Anzahl der maximal notwendigen Schritte durch den Schaltkreis Komplexität, C, = Anzahl der Gatter für die Realisierung Überblick
Komponente der ALU: Addierer Berechnet aus 2 positiven Binärzahlen <a> = <an-1 ... a0>, <b> = <bn-1 ... b0> und dem Eingangsübertrag c Î {0,1} die Binärdarstellung s von <a> + <b> +c Carry-Ripple-Addierer cn-1 = sn FA bn-1 an-1 bn-2 an-2 cn-2 sn-1 sn-2 cn-3 FA b1 a1 s1 c0 FA b0 a0 s0 c-1 Überblick
Verwendeter Baustein: Volladdierer (FA) Der Volladdierer dient zur Addition zweier 1-Bit-Zahlen mit Eingangsübertrag. HA a b c s0 s1 FA a b c s1 s0 realisiert durch Überblick
Komponente von FA: Halbaddierer (HA) s1 s0 Der Halbaddierer dient zur Addition zweier 1-Bit-Zahlen ohne Eingangsübertrag. Å a b s0 s1 Komplexität: C(HA) = 2, Tiefe = Zahl der Schritte: depth(HA) = 1 Überblick
Spezifikation der Funktion von Schaltkreisen Welche Funktion berechnet der Schaltkreis? Wie beschreibt man das? Mehrere zueinander äquivalente Alternativen: Funktionstabellen boolesche Ausdrücke Überblick
Der Halbaddierer (HA) Der Halbaddierer berechnet die Funktion: gegeben durch die Funktionstabelle a b s1 s0 ha : B2 ® B2 mit ha(a, b) = (s1, s0) 1 1 mit und 1 1 Es gilt: 2s1 + s0 = a + b 1 1 1 Alternative Notation: Überblick
Der Volladdierer (FA) Der Volladdierer berechnet die Funktion: Funktionstabelle 1 s0 s1 c b a fa : B3 ® B2 mit Aus der Tabelle ergibt sich: Alternativ: Überblick
Volladdierer als Funktion von Halbaddierern Zur Erinnerung: Also: Überblick
Zusammenfassung Å Volladdierer Halbaddierer HA a0 b0 c s0 s1 a0 b0 s0 Kosten und Tiefe eines FA: C(FA) = 5, depth(FA) = 3 Überblick
Komplexität und Tiefe des Carry-Ripple-Addierers Kosten und Tiefe eines FA: C(FA) = 5, depth(FA) = 3 FA b1 a1 s1 c0 FA b0 a0 s0 c-1 cn-1 = sn FA bn-1 an-1 bn-2 an-2 cn-2 sn-1 sn-2 cn-3 Überblick
Boolesche Funktionen Sei B = {0,1} Eine Abbildung f : Bn ® Bm heißt (vollständig definierte) Boolesche Funktion in n Variablen. B n,m := {f | f :Bn ® Bm} Eine Abbildung f :D ® Bm mit D Bn heisst (partielle) Boolesche Funktion in n Variablen. B n,m (D):= {f | f :D ® Bm} für D Bn Überblick
Boolesche Algebren Boolesche Algebra: algebraische Struktur zum Rechnen mit Booleschen Werten, eine Menge mit zwei binären Operationen und einer unären Operation mit einer Menge von Eigenschaften Überblick
Boolesche Ausdrücke Eine Beschreibungsmöglichkeit für Boolesche Funktionen statt Tabellenform, bei n Variablen 2n Einträge. Ziel: kompaktere Repräsentation. Wir betrachten n Variablen x1 , x2 , ..., xn. Sei Xn = {x1 , x2 , ..., xn } . Boolesche Ausdrücke werden über einem Alphabet A = Xn È {0, 1 , + , × , : , ( , ) } definiert. Wir betrachten die Syntax, ihren Aufbau, und die Semantik, ihre Bedeutung, von booleschen Ausdrücken Überblick
Boolesche Algebra, Boolesche Funktionen, Boolesche Ausdrücke, Schaltkreise Definition von Schaltkreisen, ihre Komplexität, ihre Kosten Die von einem kombinatorischen Schaltkreis berechnete boolesche Funktion Teilschaltkreise, Hierarchischer Entwurf Beispiele Überblick
Modellierung von booleschen Funktionen durch Schaltkreise Idee: gerichteter Graph mit einigen zusätzlichen Eigenschaften: azyklisch, Knoten markiert mit Gattern, allgemeiner, mit Bausteinen aus einer Bibliothek, Eingangs- und Ausgangsgrad „stimmen“, ein- und ausgehende Kanten geordnet. X1 X2 X3 X4 X5 X6 X7 X8 Überblick
Entwurfsziele Korrektheit – System realisiert gewünschte Funktion Spezifikationssprachen Synthetisierung Verifikation Leistung – Realisierung ist effizient, gute Kombination von Schnelligkeit und Kosten Vorlesung nächste Woche Überblick
Leistung verschiedene mögliche Definitionen: Nutzer: Ausführungsgeschwindigkeit von Programmen Rechenzentrumsleiter: Durchsatz – geleistete Arbeit pro Zeit Ausführungsgeschwindigkeit ~ 1/ Ausführungszeit Ausführungszeit (execution time, latency) eines Programms (allg. einer Aktion) – Zeit zwischen Start des Programms (der Aktion) und Terminierung des Programms (der Aktion) Andere Aktionen: arithmetische Operation, Speicherzugriff, E/A-Operation Selten ist die Ausführungszeit für eine Aktion eine Zahl, da der Ausführungszustand die Ausführungszeit beeinflusst. Beispiel: Zeit für E/A-Operation hängt davon ab, wieviele E/A-Operationen an dem Gerät warten. Meist ist die Ausführungszeit durch eine Verteilung gegeben. Zur Vereinfachung werden wir aber mit einer Zahl arbeiten. Mit welcher Zahl? Mittelwert der Verteilung – bei Universalrechnern Laufzeit im schlechtesten Fall – bei Echtzeitsystemen Überblick
Verschiedene Optimierungsziele Entscheidung für mittlere Laufzeit bzw. Laufzeit im schlechtesten Fall führt zu unterschiedlichen Optimierungsstrategien: mache den häufigsten Fall schnell – dies ist die vorherrschende Philosophie der Rechnerarchitekten, bzw. mache den schlechtesten Fall schnell – dies wird für eingebettete Echtzeitsysteme benötigt Überblick
Prinzipieller Aufbau eines Rechners Bestandteile: Prozessor (CPU) Hauptspeicher Externe Speicher Eingabegeräte (Tastatur, Maus) Ausgabegeräte (Bildschirm, Drucker, Plotter) Busse Prozessor (CPU) System-Bus Haupt- speicher Ein-/Ausgabe-Geräte, externe Speicher, externe Kommunikation Überblick
Speicher Anforderungen an Speicher so schnell wie Prozessor – sonst muss der Prozessor warten, so groß, wie jede vorstellbare Anwendung verlangt, - sonst können manche Anwendungen nicht auf dem Rechner realisiert werden, so dauerhaft (persistent), wie es die Daten verlangen – sonst droht Verlust, und bezahlbar. Anforderungen liegen teilweise miteinander im Konflikt: schnelle Speicher sind nicht billig, beliebig große Speicher sind nicht bezahlbar, dauerhafte Speicherung kostet Zeit und Energie. Überblick
Caches Statische RAM-Speicher sind schnell aber teuer, dynamische RAM-Speicher sind billig aber langsam. kleinen Cache in SRAM-Technologie auf Chip + großen Speicher in DRAM-Technologie Vorteil: wegen lokalen Zugriffsverhaltens der Programme im Durchschnitt schneller Zugriff Nachteil: hohe Schwankungsbreite für Zugriffszeiten Für Echtzeitsysteme: korrekte und präzise Analysen der Zugriffszeiten notwendig Überblick
Caches Adreßbus CPU DRAM Speicher Cache- Control Datenbus In der Regel besitzt ein Rechner einen getrennten Cache für Instruktionen (Instruktionscache) und für Daten (Datencache). Er kann durch ein Anwendungsprogramm nicht explizit adressiert werden. Er ist software-transparent, d.h. der Benutzer braucht nichts von seiner Existenz zu wissen. Überblick
Befehle/Adressen/./Operanden Speicher Funktion – Aufbewahrung für Programme und Daten Organisation – meist eine “Hierarchie” oben Besitzer/Verwalter Größe Inhalte/Struktur schnell, klein CPU-Register Cache Befehle/Adressen/./Operanden Programm 1-8 Bytes Cache Controller Blöcke 8-128 Bytes Speicher Seiten Betriebssystem 512-4K bytes Festplatte Dateien Bnutzer/Operator Mbytes langsam, groß Band Überblick unten