Aufbau und Funktionsweise eines Computers

Ähnliche Dokumente
Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen

Aufbau und Funktionsweise eines Computers

L3. Datenmanipulation


Die Mikroprogrammebene eines Rechners

2.5 Primitive Datentypen

Instruktionssatz-Architektur

Informationsmenge. Maßeinheit: 1 Bit. 1 Byte. Umrechnungen: Informationsmenge zur Beantwortung einer Binärfrage kleinstmögliche Informationseinheit

Prozessorarchitektur. Kapitel 1 - Wiederholung. M. Schölzel

2.2 Rechnerorganisation: Aufbau und Funktionsweise

Mikroprozessor als universeller digitaler Baustein

II. Grundlagen der Programmierung

Aufbau von modernen Computersystemen

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at

Rechnerarithmetik Ganzzahlen und Gleitkommazahlen Ac 2013

3. Datentypen, Ausdrücke und Operatoren

2. Computer (Hardware) K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16

2 ARITHM. UND LOG. AUSDRÜCKE ZAHLEN

Fragenkatalog Computersysteme Test 25. April 2008

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Rechnerorganisation. IHS 2015/2016 H.-D. Wuttke, K. Henke

D A T E N... 1 Daten Micheuz Peter

Datenpfad einer einfachen MIPS CPU

Rechnergrundlagen SS Vorlesung

Grundlagen der Rechnerarchitektur

Repräsentation von Daten Binärcodierung von rationalen Zahlen und Zeichen

2 Repräsentation von elementaren Daten

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

JAVA-Datentypen und deren Wertebereich

Einführung in die Programmiertechnik

Technische Informatik I

Rechnergrundlagen SS Vorlesung

Skript Zahlensysteme

7. Übung zur Vorlesung Grundlagen der Informatik

Repräsentation von Daten Binärcodierung ganzer Zahlen

Vorlesung Rechnerarchitektur. Einführung

Zahlen in Binärdarstellung

Kapitel 3: Variablen

Technische Informatik 1

Kapitel 2. Zahlensysteme, Darstellung von Informationen

Grundlagen der Informatik 2 Grundlagen der Digitaltechnik. 1. Zahlensysteme

TOTAL DIGITAL - Wie Computer Daten darstellen

Einführung (1) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

3 Rechnen und Schaltnetze

Zahlensysteme: Oktal- und Hexadezimalsystem

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Programmieren. Kapitel 3: Wie funktioniert ein moderner Computer? Wintersemester 2008/2009. Prof. Dr. Christian Werner

Java Kurs für Anfänger Einheit 2 Datentypen und Operationen

Integrierte Schaltungen

Elementare Konzepte von

Technische Informatik. Der VON NEUMANN Computer

, 2015S Übungstermin: Mi.,

Java - Zahlen, Wahrheitswerte und Zeichen. Leibniz Universität IT Services Anja Aue

Prozessor HC680 fiktiv

Aufbau und Funktionsweise eines Computers

4 Der Von-Neumann-Rechner als Grundkonzept für Rechnerstrukturen

Merke: Mit jedem zusätzlichen Bit verdoppelt sich die Anzahl der darstellbaren Zahlen bzw. Zustände

Mikroprozessor bzw. CPU (Central Processing. - Steuerwerk (Control Unit) - Rechenwerk bzw. ALU (Arithmetic Logic Unit)

Der Toy Rechner Ein einfacher Mikrorechner

Zahlendarstellungen und Rechnerarithmetik*

Lösungen: zu 1. a.) b.) c.)

Beschaffung vom Informationssystemen Datenorganisation Kommunikation

Arithmetische und Logische Einheit (ALU)

Teil VIII Von Neumann Rechner 1

Vorlesung Programmieren. Agenda. Dezimalsystem. Zahlendarstellung. Zahlendarstellung. Oder: wie rechnen Computer?

2 Rechnen auf einem Computer

Das Rechnermodell - Funktion

2 Darstellung von Zahlen und Zeichen

Kapitel 2. Zahlensysteme

Einstieg in die Informatik mit Java

Computergrundlagen Zahlensysteme

68000 Assembler. WAS ist ein Assembler? Ein System, das den Programmierer hilft, eine maschinennahe Programmierung zu realisieren.

Zahlen und Zeichen (1)

Johann Wolfgang Goethe-Universität

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = binär

Grundstrukturen: Speicherorganisation und Zahlenmengen

Auch hier wieder. Control. RegDst Branch MemRead MemtoReg ALUOp MemWrite ALUSrc RegWrite. Instruction[31 26] (also: das Opcode Field der Instruktion)

1. Vorzeichen und Betrag (engl. Sign-/Magnitude) 2. Stellenkomplement 3. Basiskomplement

1. Grundlagen der Informatik Zahlensysteme und interne Informationsdarstellung

3. Rechnerarchitektur

Prof. Dr. Oliver Haase Karl Martin Kern Achim Bitzer. Programmiertechnik Zahlensysteme und Datendarstellung

INFORMATIK Oberstufe. Funktionsweise eines Rechners

Computer-Architektur Ein Überblick

Prinzip 8 der von-neumann Architektur: (8) Alle Daten werden binär kodiert

2.1.2 Gleitkommazahlen

Daten, Informationen, Kodierung. Binärkodierung

Primitive Datentypen und Felder (Arrays)

Random Access Machine (RAM) Berechenbarkeit und Komplexität Random Access Machines

1 Dualsystem Dualzahlen mit Vorzeichen 4. 2 Hexadezimalsystem Hexadezimalzahlen mit Vorzeichen Oktalsystem 13 4 Zahlenring 14

1. Übung - Einführung/Rechnerarchitektur

Thema 1 -- Fortsetzung. Computersystem, Informationsdarstellung

Dualzahlen

Darstellung von Informationen

Grundlagen der Informatik

Lektion 1: Von Nullen und Einsen _ Die binäre Welt der Informatik

Rechner Architektur. Martin Gülck

Im Original veränderbare Word-Dateien

Leseprobe. Taschenbuch Mikroprozessortechnik. Herausgegeben von Thomas Beierlein, Olaf Hagenbruch ISBN:

Transkript:

Aufbau und Funktionsweise eines Computers Ein Überblick Vorlesung am 25.10.05 Folien von A.Weber und W. Küchlin, überarbeitet von D. Huson

Zweierkomplement 2-Komplement-Darstellung für n Bit: positive Zahlen: alle Dualzahlen mit Bit n = 0, Dualdarstellungen der Zahlen {0,...,2 n -2}: c(x) = x negative Zahlen: Komplemente zu 2 n : c(-x) = x, mit x := 2 n - x und x {1,..., 2 n -1}

"Zahlenring" für n = 4: 4-Bit Dualzahlen im Zweierkomplement 0

Schnelle Berechnung des zweier Komplements Zweierkomplementdarstellung z von -z kann erhalten werden durch: Bitweises Vertauschen von 0 und 1; z z* Anschließend Addition von 1, z = z*+ 1 Denn: z+z * = 2 n -1 z * =2 n -1-z = (2 n -z)-1 = z -1 z = z * +1 Bitweises Vertauschen allein definiert das Einerkomplement z *

Beispiel Berechnung zweier Komplement Beispiel: n=4, z=5: z = 0101 2 = 5 10 z* = 1010 2 = 10 10 z*+1 = 1011 2 = 11 10 Nach Definition: c(-5)=2 n -5=16-5=11 X

Eigenschaften des Zweierkomplements Addition negativer Zahlen passt sich in Addition modulo 2 n ein: Eindeutige Darstellung der 0: HöchstesBitzeigt an, ob Zahl positiv oder negativ ist Es gibt eine negative Zahl mehr als positive Zahlen Es gibt kein 2 n-1, sondern dieses Bitmuster muss als -2 n-1 interpretiert werden

Exkurs: Zehnerkomplement Mechanische Rechenmaschinen rechnen mit n Stellen im Zehnersystem, d.h. Rechnen modulo 10 n Ersetze Subtraktion von a durch Addition des Zehnerkomplements z(a) Zehnerkomplement von a istzahlz(a) so dass a + z(a) = 0 (mod 10 n ) z(a) = 10 n a = (10 n 1) a+ 1 (10 n 1) a ist Neunerkomplement n(a); besonders leicht zu berechnen, da (10 n 1) = 999 9, somit kein Borgen bei Subtraktion von a. z(a) = n(a)+1, auch leicht zu berechnen. Beispiel: n=2, z(34) = 65+1 = 66; 43-34 = 43+66 = 109 = 9 (mod 10 2 ) Berechnung des Zweierkomplements ist analog Zehnerkomplement, Einerkomplement entspricht Neunerkomplement

Big Endian, Little Endian Wie besprochen, wird eine ganze Zahl durch ein Computerwort kodiert, welches aus mehreren Bytes zusammengesetzt wird. z.b. Eine 32-Bit Zahl besteht aus vier Bytes. Beim Speichern solcher Zahlen gibt es zwei mögliche Reihenfolgen der Bytes, die Little Endian und Big Endian heissen: Byte0 Byte1 Byte2 Byte3 Byte3 Byte2 Byte1 Byte0 n n+1 n+2 n+3 Little Endian n n+1 n+2 n+3 Big Endian

Little Endian Little Endian heisst, dass das niedrigste Byte des Wortes in dem Byte mit der niedrigsten Adresse gespeichert wird, und das höchste Byte an der höchsten Addresse ( Little end zuerst) Z.B, ein 4 byte Long Byte3 Byte2 Byte1 Byte0 wird wie folgt im Speicher abgelegt: Adresse n+0: Byte0 Adresse n+1: Byte1 Adresse n+2: Byte2 Adresse n+3: Byte3 Intel Prozessoren benutzen die "Little Endian" Byteanordung. Byte0 Byte1 Byte2 Byte3 n n+1 n+2 n+3

Big Endian Big Endian heisst, dass das niedrigste Byte des Wortes in dem Byte mit der höchsten Adresse gespeichert wird, und das höchste Byte an der niedrigsten Addresse ( big end zuerst) z.b, ein 4 byte Long Byte3 Byte2 Byte1 Byte0 wird wie folgt im Speicher abgelegt: Adresse n+0: Byte3 Adresse n+1: Byte2 Adresse n+2: Byte1 Adresse n+3: Byte0 Byte3 Byte2 Byte1 Byte0 n n+1 n+2 n+3 Sun Sparc, IBM und MacOS Prozessoren benutzen die Big Endian" Byteanordung.

Big Endian, Little Endian Beispiel: Repräsentation von 1025

Binärkodierung: Zahlkonversion Dezimal nach Dual : z=z n-1 z n-2...z 1 z 0

Binärkodierung: Zahlkonversion Dezimal nach Dual Wir verarbeiten z=z n-1 z n-2... z 2 z 1 z 0 von rechts nach links und wandeln jede Ziffer ins Dualsystem um: Setze w := 0 Für i=0,...,n-1: setze w :=w 1010 2 + d i, wobei d i die Dualdarstellung von z i ist. Da dual gerechnet wird, ist w nach jedem Durchgang wieder eine Dualzahl. Per Induktion folgt, dass am Ende w die Dualdarstellung von z ist.

Binärkodierung: Zahlkonversion Dual nach Dezimal Sei eine Dualzahl D gegeben, die Dezimaldarstellung z n-1...z 0 wird wie folgt berechnet: Setze i=0 Solange D 0 rechne: setze z i := D % 1010 2, Rest der Division setze D := D / 1010 2, ganzzahlige Division Setze i := i + 1 Die erhaltene Dezimalzifferfolge z 0 z 1... muss zur Ausgabe umgekehrt werden.

Binärcodierung elementarer Datentypen: Zeichen Mitn Bit können 2 n Zeichen dargestellt werden Für 26 Großbuchstaben mindestens 5 Bit erforderlich Wenn Kleinbuchstaben, Sonderzeichen, etc. codiert werden sollen, dann sind 7 Bit sinnvoll Zuordnung Zeichen Bitmuster Konvention Gebräuchlich: ISO 7 Bit (ASCII), EBCDIC Codierung kann aber einige gute Eigenschaften haben (vgl. ASCII Tabelle) Der ASCII Zeichensatz ASCII ist in ISO 8 Bit enthalten (höchstes Bit 0) und 16Bit Unicode (obere 9Bit sind 0)

Binärcodierung elementarer Datentypen: Zeichen C,C++ und alle UNIX Betriebsysteme verwenden ASCII zur Zeichencodierung Javaarbeitet mit UNICODE: Der Zeichenwert wird entweder durch Zeichen in Hochkommata dargestellt: Beispiel: char c = A ; (Falls Tastatur es erlaubt, und das Zeichen kein Sonderzeichen ist) Oder man gibt Bitmuster in UNICODE als Hexadezimalzahl an: Beispiel: char c = \u0041 ; Ziffernzeichen haben nicht den Binärcode der Zahlzeichen Kann durch einfachen Konversionsalgorithmus erhalten werden: int z=c- 0 ; das funktioniert, weil die Ziffern 0-9 in ASCII fortlaufend nummeriert sind.

Binärcodierung elementarer Datentypen: Floating-Point Neben ganzen Zahlen sind auch Gleitkommazahlen wichtiger elementarer Zahlentyp Im Englischen Dezimalpunkt statt Komma, daher Floating-Point Annäherung an reelle Zahlen Aber nur endliche Genauigkeit Enthalten auch spezielle Zahlen, siehe später Darstellung einer Floating-Point-Zahl z

Binärcodierung elementarer Datentypen: Floating-Point Floating-Point-Zahlen nach IEEE 754-1985 32 Bit float 64 Bit double Genauigkeiten

Binärcodierung elementarer Datentypen: Floating-Point Spezielle Floating-Point- Zahlen Es gibt Bitmuster für + (positiv Unendlich) - (negativ Unendlich) NaN( Not a Number ) Wenn kein sinnvolles Ergebnis einer arithmetischen Operation zugewiesen werden kann»etwa 0/0»Oder + + - Beachte aber, dass etwa + + 5 den Wert + hat

Binärcodierung elementarer Datentypen: Floating-Point Im Gegensatz zur Ganzzahlarithmetik kann es bei Floating-Point-Operationen zu Rundungsfehlern (round off error) kommen Multiplikationen erzeugen längere Mantissen, die wieder auf Standardformat gerundet werden müssen Bei der Addition muss eine Mantisse so verschoben werden, dass beide Zahlen mit dem gleichen Exponenten dargestellt sind. Hierbei können einige (im Extremfall alle) Bits der Mantisse eines Summanden aus dem Darstellungsbereich herausfallen Beispiele: Der Einfachheit halber Dezimal Mantisse 3 Stellen 1.34e0 3.45e2=4.623e2 4.62e2 1.34e0+3.45e2 0.0134e2 3.4500e2

Binärcodierung elementarer Datentypen: Floating-Point Bei längeren Berechnungen können sich diese Rundungsfehler sehr schnell aufschaukeln Insbesondere wenn sowohl sehr kleine als auch sehr große Zahlen involviert sind Verschiedene Berechnungsverfahren für dieselbe Funktion kann zu verschiedenen Ergebnissen führen Diese können numerisch stabil oder instabil sein Diese wichtige Problematik wird im Bereich der numerischen Algorithmen genauer untersucht

Binärcodierung elementarer Datentypen: Floating-Point Bei Konversion von Dezimal in Dual kann es bei Floating-Point-Zahlen zu Konversionsfehlern kommen Endlicher Dezimalbruch kann unendlicher Dualbruch sein Beispiel: 0,1 10 =0,00011001100110011... 2 - Deshalb BCD in der kaumännischen EDV

Konsversion von Gleitkommazahlen dezimal nach dual 0. Sei eine Gleitkommazahl z=0,z 0 z 1 z 2... gegeben Zusatz-Hausaufgabe: warum funktioniert das?

Programme als Daten Auch Programme können als Daten aufgefasst und wie solche gespeichert werden Programme im Quelltext (source code) sind einfach Texte in einer Programmiersprache wie Java Sie bestehen also aus Schriftzeichen Genauer: Der Typ des Binärcodes ist char Programme in Objektcode (object code) bestehen aus Befehlen, die in der spezifischen Sprache eines Prozessor-Typs geschrieben sind Typ des Binärcodes also abhängig vom Prozessor-Typ

Generelle von-neumann Architektur Mikroarchitektur einer CPU

Von Neumann Architektur eines Rechners Prozessor = Steuerwerk + arithmetisch-logische Einheit (ALU) + Register Steuerwerk: holt aus Speicher Befehle (=Bitmuster) und interpretiert sie es setzt sie in elektrische Signale um, die die ALU und den Datentransport im Prozessor steuern Register: Plätze mit sehr schnellem Zugriff zur lokalen Zwischenspeicherung von Daten ALU: führt Operationen zur Bearbeitung von Daten aus (insbes. Verknüpfungen +, DIV, Boolesche etc)

Von Neumann Architektur Daten und Programm gemeinsam im Hauptspeicher Programm = Folge von Instruktionen (Befehlen), codiert als Bitmuster Befehl: Operationscode (OP-Code) plus Operanden Befehle sind in Maschinensprache Fundamentaler Instruktionszyklus (unter Kontrolle des Steuerwerks) zur Programm-Ausführung Befehlszähler (PC): spezielles Register zur Speicherung der Adresse des aktuellen Befehls Instruktionsregister (IR): speichert auszuführenden Befehl

Register MAR: Memory Address Register: Addresse der Instruktion MDR: Memory Data Register: Binärdarstellung der Instruktion IR: Instruction Register: Auszuführende Instruktion PC: Program Counter: Adresse der Instruktion R1..Rn: Arbeitsregister MAR und MDR: Schnittstelle zum Speicher

Prozessor und Programm-Ausführung Fundamentaler Instruktionszyklus : 1. Hole nächsten Befehl in den Prozessor 2. Decodiere den Befehl (Umsetzung in Steuersignale) 3. Hole ggf. Operanden aus dem Speicher in Register 4. Führe Operation aus Wiederhole ab Schritt 1.

Beispiele von Assemblerbefehle Prozessorbefehle Syntax, z.b: <operation code> <CPU register destination> <memory address content pointer> <operation code> <CPU destination register> <CPU source register> <operation code> <destination> <source operand 1> <source operand 2> Beispiele: LOAD R1 $00C Lade Wort von Speicheraddresse $00C in Register R1 ADD R3 R1 R2 Addiere Register R1 und R2 und schreibe in R3 MOV R4 R3 Verschiebe Wert von R3 nach R4 SUB R3 R2 R1 Subtrahiere R1 von R2 und schreibe in R3 STOR R4 $00C Speicher Inhalt von R4 an der Addresse $00C HALT Beende Programmlauf Quelle: http://homepages.feis.herts.ac.uk/~msc_ice/unit2/

Beschreibung einiger Assemblerbefehle Daten laden und speichern, z.b.: LOAD R ADDR STOR R ADDR BLOD R ADDR BSTR R ADDR LODI R V16 V8, V16: 8- oder 16-Bit Zahl Lade Wort an Adresse ADDR in Register R Speichere Register R an Addresse ADDR Lade Byte an Addresse ADDR in das Low- Byte von R Speichere Low-Byte von R an die Addresse ADDR Lade Register mit V16 (immediate)

Beschreibung einiger Assemblerbefehle Operations (OP) wie Addition (ADD), Subtraktion (SUB), Multiplikation (MUL), Ganzahldivision (DIV) oder der Rest einer Ganzzahldivision (REM): OP Rc Ra Rb OPI Rc Ra V8 Sprünge, z.b.: JPA ADDR JPZ R ADDR JPN R ADDR RC=Ra OP Rb Rc= Ra OP V8 (immediate) Springe an die angegebene Addresse (jump-always) Falls Wert in Register R null, springe an die angegebene Adresse (jump-on-zero) Falls Wert in Register R negativ, springe an die angegebene Adresse (jump-on-negative)

Beispiel Assemblerprogrammierung Address Memory mnemonic content $000 LD R1 $00C $001 LD R2 $00D $002 ADD R3 R1 R2 $003 MOV R4 R3 $004 SUB R3 R2 R1 $005 MOV R5 R3 $006 ST R4 $00C $007 ST R5 $00D $008 HALT...... $00C 5 $00D 8 $xxx=wortadresse im Speicher Wenn wir das Programm bei $000 starten, welche Werte befinden sich nach Programmlauf in den Speicherplätzen $00C und $00D? Quelle: http://homepages.feis.herts.ac.uk/~msc_ice/unit2/

Verbindung Speicher und CPU Quelle: http://homepages.feis.herts.ac.uk/~msc_ice/unit2/

Beispiel Befehlsausführung LOAD LOAD R Addr 1. Transferiere Addr ins MAR (Memory Address Register) 2. Signalisiere Lesewunsch auf Controlbus und übertrage MAR auf den Addressbus Memory produziert Inhalt von Addr auf Datenbus. Übernehme Daten ins MDR (Data Register) 3. Transferiere (Inhalt von) MDR durch die ALU nach R

Befehlsausführung IMiC CPU STOR R Addr 1. Transferiere Addr ins MAR 2. Transferiere R ins MDR Signalisiere Schreibwunsch auf Controlbus. Transferiere MAR und MDR auf Address- und Datenbus 3. Memory übernimmt Bits vom Datenbus und speichert sie an die im Addressbus übermittelte Adresse.

Schichtenaufbau der Hardware Instruction Set Architecture (ISA) Interpretation durch Mikroprogramm Mikroarchitektur Ausführung durch Hardware Digitale Logik ISA: Was der (Assembler-) Programmierer sieht (sichtbare Register und mögliche Operationen) Mikro-Architektur: ALU, Datenpfade, verborgene Register, Details und Zwischenschritte der Ausführung Digitale Logik: UND-, ODER-, NOT- Gatter: Logik der digitalen Schaltungen

Mikroarchitektur einer CPU Mikro-Architektur IMiC (Integer Micro Computer)...

Ein paar Takte zur Geschwindigkeit... Chips sind getaktet : Pro Takt wird eine einfache Operation ausgeführt Heute 2 GHz: 1 Takt = 0.5 ns Lichtstrecke bei 0.5 ns = 15 cm Im Abstand von 1.5 m beobachten wir am Chip also die vergangenen Zustände von vor 9-10 Takten!

Ein paar Takte zur Geschwindigkeit... Komplexe Operation brauchen mehrere Takte (z.b. Multiplikation, externe Operanden) Partielle Lösung: pipelining: nachfolgende Operationen werden vorbereitet Neues Problem: bei Sprüngen alles umsonst Lösung hierzu: viele Register, schnelle Zwischenspeicher (Caches)

Chip Technik CPU in VLSI Technik VLSI=very large scale integration Transistoren als Grundstruktur Größenordnung 0.1 Micron = 100 nm = = 1/10 000 000 m Moore s Law: Anzahl Transistoren/Chip verdoppelt sich in jeweils 18 Monaten Pentium II: 7 Mill. Transistoren Itanium-2: 220 Mill. Transistoren Phys. Grenze (1 Transistor besteht aus wenigen Atomen) um 2020