Folien zu Kapitel 2: Aufbau und Funktionsweise eines Computers

Werbung
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
Herunterladen