Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Ein Überblick Vorlesung am 20.10.05 Folien von A.Weber und W. Küchlin, überarbeitet von D. Huson W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Computer und Algorithmen Computer sind Geräte zur Verarbeitung von Daten • Beispiel Texterfassung und –erkennung: Algorithmus W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Computer und Algorithmen • Die Datenverarbeitung erfolgt mittels Algorithmen, das sind genau spezifizierte Rechenverfahren, die in endlicher Laufzeit zu einem Ergebnis kommen – Z.B. ein Sortieralgorithmus wird benutzt, um eine Liste von Wörtern alphabetisch aufzulisten – „Neuronale Netze“ oder „SVMs“ werden benutzt, um Texte zu erkennen, oder SPAM zu filtern • Algorithmen werden in mathematischer Sprache verfasst und mittels einer Programmiersprache wie etwa C, C++, Scheme oder Java „implementiert“ W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Abstrakte Maschinenmodelle • Ein wichtiges Ergebnis der Theoretischen Informatik, Turing‘s Theorem, impliziert: alle Computer und alle Programmiersprachen sind theoretisch „gleichmächtig“. Alan Turing • Es gibt also theoeretisch nichts, was z.B. mit Java auf einem heutigen Computer berechnet werden kann, was nicht schon mit Basic auf einem Sinclair ZX80 machbar wäre • Aber: praktische Unterschiede sind sehr gross bezüglich Berechnungsgeschwindigkeit und Speicherplatz W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Abstrakte Maschinenmodelle Hauptspeicher = 1941 Konrad Zuse‘s Z4, Relais Rechner, Deutsches Museum, München = 1980 ZX80, 3,25 MHz 1k RAM 1999 Supercluster zum assemblieren des menschlichen Genomes 1000 Prozessoren, insgesamt 1 TeraByte RAM W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Abstrakte Maschinenmodelle Deshalb können: • alle theoretische Fragen an Hand eines einfachen Modells, die sogenannte Turingmachine, untersucht werden • Algorithmen weitgehend ohne ein konkretes Maschinenmodell entwickelt werden • Programme, in einer modernen Programmiersprache geschrieben sind, auf unterschiedenen Computersystemen laufen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Abstrakte Maschinenmodelle • Trotzdem fließen Eigenschaften realer Computer auch in das Design von Programmiersprachen ein – Z.B. Caching • Dieses Kapitel gibt nur einen kurzen Übersicht über Aufbau und Funktionsweise eines Computers – Thema von Informatik II – Vertieft in Vorlesungen über Rechner-Architektur – Literatur z.B.: Oberschelp/Vossen oder Tanenbaum W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Hard- und Software • Computersysteme bestehen aus Hardware und Software • Hardware: die physikalischen Bestandteile eines Computers, fest gegeben, kann angefasst werden und unveränderlich (bis auf den Austausch von Komponenten) • Software: besteht aus den gespeicherten Programmen, die durch die Hardware ausgeführt werden – Sie ist „unsichtbar“ – Sehr leicht zu ändern / zu speichern / auszuführen, da sich dies nur in der Änderung von magnetischen (bei Festplatten) oder elektrischen (bei Speichern und Prozessoren) Zuständen der Hardware auswirkt, nicht aber in der Änderung fester Bestandteile W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Organisation der Hardware • Architektur eines einfachen Computersystems: • Daten „fliessen“ zwischen den Komponenten über den Bus W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers System-Architektur der Hardware Architektur eines Intel P2 PC Systems mit mehreren Bussen an Brücken W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers System-Architektur der Hardware Architektur eines Intel P4 PC Systems mit mehreren Bussen an Hubs Intel Pentium 4 CPU 3.2 GB/s AGP 4X Graphik >1GB/s PC133 1,06 GB/s DDR 200 1,6 GB/s DDR 266 2,1 GB/s SDRAM/DDR Hauptspeicher MCH 266 MB/s 133 MB/s ATA 100 MB/s 2 IDE Kanäle ICH Local Area Network Schnittstelle PCI Bus 6 Kanal Audio 4 USB Anschlüsse 2 Controller total 24 Mb/s Firmware Hub W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers CPU W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers System-Architektur der Software: Schichtenaufbau eines Rechnersystems W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers System-Architektur der Software: Schichtenaufbau eines Rechnersystems • Anwenderprogramme • Programmierung • Assemblersprache W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers System-Architektur der Software: Schichtenaufbau eines Rechnersystems • Assemblersprache • Systemsoftware • Prozessor W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Anwendersoftware und Systemsoftware • Programme der Anwendersoftware dienen zur Lösung von Problemen der externen Welt der Anwender – z. B. Textverarbeitung, Tabellenkalkulation, Bildbearbeitung, Buchhaltung, Produktionsplanung, Gehaltsabrechnung, Spiele, • Programme der Systemsoftware halten den Rechner am laufen und unterstützen bei der Konstruktion der Anwendersoftware – Systemsoftware umfasst neben Datenbanksystemen und Übersetzern (compiler), vor allem das Betriebssystem. W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Betriebssystem • Das Betriebssystem (operating system) verwaltet die Ressourcen der Hardware (wie Geräte, Speicher und Rechenzeit) • Es stellt der Anwendersoftware eine abstrakte Schnittstelle ( „Systemaufrufschnittstelle“) Anwender zur Verfügung und vereinfacht so die -Software Nutzung der Ressourcen und schützt Systemsoftware vor Fehlbedienungen BetriebsSystem • Das Betriebssystem isoliert die Anwendersoftware von der Hardware: Hardware das Betriebssystem läuft auf der Hardware und die Anwendersoftware auf dem Betriebssystem W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Arten von Rechnersystemen Es gibt heute eine große Vielzahl von Rechnersystemen • Übliche Computer kann man grob einteilen in – – – – PCs (personal computer), Arbeitsplatzrechner (workstation), betriebliche Großrechner (business mainframe) wissenschaftliche Großrechner (supercomputer) • Eingebettete Systeme (embedded system) verbergen sich in allerlei Geräten, wie z. B. Haushaltsgeräten oder Handys – In Autos ist die Elektronik schon für ca. 25% des Wertes verantwortlich (wird bis ca. 40% steigen) Aus Sicht der Informatik „rollende Rechnernetze“ W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Der Kern des Rechners: von Neumann Architektur • Grundsätzlicher Aufbau verschiedener Rechnersysteme im Grundprinzip gleich Von Neumann Architektur Wahlfreier (beliebiger) Zugriff (random access) W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Speicher • Kleinste Speichereinheit 1 Bit hat 2 Zustände – Strom aus/an, Kondensator geladen/ungeladen, … – Zustände werden i.A. mit 0 und 1 bezeichnet • Paket aus n Bits hat 2n Zustände – Mit 2 Speichereinheiten 22=4 Zustände – Mit 8 Bits 28=256 Zustände darstellbar • 1 Byte := 8 Bit – Heutzutage sind Bytes die kleinsten adressierbaren Speichereinheiten • Kleinere Einheiten müssen aus einem Byte extrahiert werden W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Kilo-, Mega, Gigabytes • In der Informatik wird mit kilo meist 1024=210 gemeint – 1 kByte = 1024 Byte – Mit Mega 1024⋅1024=220 • 1 MByte = 1024 kByte – Mit Giga 1024⋅1024⋅1024=230 • 1 GByte = 1024 MByte – Entsprechend kBit, MBit • Manchmal auch kB für kByte und kb für kBit (entsprechend MB, Mb, GB, Gb); manchmal auch KB, Kb, „großes“ K = 1024. – Widerspricht eigentlich dem normierten Sprachgebrauch, in dem k immer 1000, und M immer 1000000 bezeichnen muss W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Wort, Halbwort, Doppelwort • Weitere wichtige Einheiten – Wort (word) = 4 Byte = 32 Bit – Halbwort (short) = 2 Byte = 16 Bit – Doppelwort (long, double) = 8 Byte = 64 Bit • Heutige Rechner können meist 32Bit oder 64Bit auf einmal verarbeiten – PCs mit Intel Pentium noch 32 Bit • Itanium 2 Prozessor schon mit 64 Bit – Bei RISC Workstations meist schon Übergang zu 64Bit vollzogen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Adressen • Mit Speicheradressen von 32Bit Länge können 232Byte=4⋅230Byte=4GByte=4096 MByte adressiert werden – Mit 64Bit können 264Byte=234GByte≈1011GByte adressiert werden Beispiel: mit 4 Bit können wir 16 Byte addressieren: Speicher 10100101 Addresse 0000 10100101 10100101 10100101 10100101 10100101 10100101 10100101 10100101 10100101 ... 0001 0010 0011 0100 0101 0110 0111 1000 1001 ... W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Adressen • Wenn ein Wort aus den Bytes mit den Adressen n, n+1, n+2, n+3 besteht, dann ist n die Adresse des Worts • In einem Speichermodul sind die Werte von n, die durch 4 teilbar sind, die natürlichen Grenzen für Worte • An solchen Stellen beginnende Worte sind an den Wortgrenzen (word boundary) ausgerichtet (aligned) Speicher 10100101 Addresse0000 10100101 10100101 10100101 10100101 10100101 10100101 10100101 10100101 10100101 ... 0001 0010 0011 0100 0101 0110 0111 1000 1001 ... Wort 1 Wort 2 Wort 3 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcode • In (heutigen) Computern können Daten nur in der Form von Bitmustern gespeichert werden • Eine Abbildung von – gewöhnlichem Klartext – in ein Bitmuster (bit pattern) nennt man einen Binärcode (binary code) • Je nach dem Typ der Daten (Zahlen, Schriftzeichen, Befehle) benutzt man einen anderen Binärcode • Bei Kenntnis des Typs kann man ein Bitmuster dekodieren und seinen Sinn erschließen – Verwechselt man den Typ, bekommt das Bitmuster eine ganz andere Bedeutung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Variablen und der Typ von Variablen • Da wir Menschen Dinge gerne mit Namen benennen statt mit numerischen Adressen, kennt jede Programmiersprache das Konzept einer Variable (variable) als abstraktes Analogon zu einer Speicherstelle • Eine Variable hat einen symbolischen Namen (name), – hinter dem eine Adresse verborgen ist, – und der Wert (value) der Variable ist der Wert des dort gespeicherten Bitmusters • Um diesen erschließen zu können, hat die Variable einen Typ (type), der bei ihrer Vereinbarung angegeben werden muss W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Variablen und der Typ von Variablen • In jeder Programmiersprache gibt es einige fest eingebaute elementare (Daten)Typen, wie etwa – char (Schriftzeichen, character), – int (endlich große ganze Zahlen, integer) oder – float (endlich große Gleitkommazahlen, floating point numbers) • Jedem fundamentalen Typ entspricht ein Code, der jedem möglichen Wert des Typs ein Bitmuster einer festen Länge (z.B. 1 word für 1 int) zuordnet – – – – char Æ ASCII oder UNICODE; int Æ Dualzahlen im Zweierkomplement float Æ IEEE 754 Dazu später mehr W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers ASCII Table W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen • Wir unterscheiden zwischen Zahl-Wert und Zahl-Bezeichner • Zu ein- und demselben Zahl-Wert kann es verschiedene Bezeichner geben – z.B. Fünf, 5, V, 101 • Da es unendlich viele Zahl-Werte gibt, ist es sinnvoll, eine Systematik zur Erzeugung von eindeutigen Bezeichnern zu schaffen – Die auch das Rechnen mit Zahlen unterstützt – z.B. Die Verwendung von Römischen Zahlen bietet keine gute Unterstützung W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen • Ein Zahlsystem (number system) besteht aus – endlich vielen Ziffern (digits) und – einer Vorschrift, – wie Zeichenreihen, die aus diesen Ziffern gebildet wurden, als Zahl-Werte zu interpretieren sind • Arabische Zahlsysteme zur Basis β – Der Zahlen-Wert einer natürlichen Zahl z=zn-1...z0 zur Basis β: • Dabei W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen • Basis β der Darstellung wird Radix genannt – Namen einiger wichtiger Zahlsysteme • • • • Radix 10: Dezimaldarstellung Radix 2: Binärdarstellung Radix 8: Oktaldarstellung Radix 16: Hexadezimaldarstellung • Zur Kennzeichnung der Basis wird diese oftmals als Subscript angegeben, z.B.: 710=78=1112 910=118=10012 1510=178=11112 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen • Verschiedene Darstellungen von Ziffern möglich: • Mit eigenen Symbolen – Üblich für Dezimalzahlen • Als Binärzahlen • BCD Kodierung (Binary Coded Decimal) W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen • BCD benutzt 4 Bit zur Darstellung von 10 Ziffern, wird im kaufmännischen EDV-Bereich benutzt, da Vermeidung von Konversionsfehler • Darstellung als Dualzahl effizienter – Statt Dualzahl kann auch Zweierpotenz als Basis genommen werden, etwa Oktal=23, Hexadezimal=24, etc – Bei Oktal und Hexadezimal werden zur Notation der Ziffern von 0 bis 9 auch die arabischen Ziffern genommen – Bei Hexadezimal werden zusätzlich die Buchstaben A, B, C, D, E, F als Bezeichner für die Ziffern, die die Zahlwerte 10, 11, 12, 13, 14, 15 bezeichnen, genommen W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen • Arithmetik im Dualsystem, Oktal, Hexadezimal, 232-, 264System, ... analog zum Dezimalsystem (Überträge dann bei 2, 8, 16, 32, 64) – Beispiel: 012+012=102 • Die Hardware eines Rechners realisiert nur Arithmetik für feste Zahllänge n – Etwa n=32 oder n=64 – Mathematisch gesehen wird Arithmetik modulo 2n realisiert: Überträge in die n+1 –te Stelle fallen weg. – nur 2n Dualzahlen 0 .. 2n-1 W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen • Statt (positive) Zahlen von 0 bis 2n-1 mit Bitmuster der Länge n darzustellen und arithmetische Operationen darauf auszuführen, werden oftmals auch negative Zahlen benötigt • Elegante Möglichkeit: Zweierkomplement-Darstellung – Addition zweier positiver Dualzahlen und solcher in Zweierkomplementdarstellung ergibt das gleiche Bitmuster W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers Binärcodierung elementarer Datentypen: Zweierkomplement • Sei k ∈ lN, x ∈ {0,..., k}. Dann ist das Komplement x der Zahl x zur Zahl k definiert durch: x´ := k – x • Idee: Darstellung negativer Zahlen durch Komplementbildung: c (-x) = x´ • Subtraktion durch Addition des Komplements: y – x = y – x + k – k = y + (k – x) – k = y + x´– k, • wobei Komplementbildung (x → x´) und Reduktion nach k (x → x - k) "leicht" realisierbar seien. W. Küchlin, A. Weber: Einführung in die Informatik – objektorientiert mit Java , Springer-Verlag, Folien überarbeitet von D. Huson