RSB WS19
RSB WS19
Fachbereich Informatik
Andreas Mäder
Universität Hamburg
Fakultät für Mathematik, Informatik und Naturwissenschaften
Fachbereich Informatik
Technische Aspekte Multimodaler Systeme
Wintersemester 2019/2020
A. Mäder 1
Gliederung
64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
A. Mäder 2
Gliederung (cont.)
64-040 Rechnerstrukturen und Betriebssysteme
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 3
Gliederung
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
von-Neumann Konzept
Exkurs: Geschichte
Personal Computer
Moore’s Law
System on a chip
Roadmap und Grenzen des Wachstums
Literatur
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
A. Mäder 4
Gliederung (cont.)
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 5
Informatik
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
Brockhaus-Enzyklopädie: „Informatik“
Die Wissenschaft von der systematischen Verarbeitung von
Informationen, besonders der automatischen Verarbeitung mit Hilfe
von Digitalrechnern (→ Computer). . . .
A. Mäder 6
Informatik
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
Brockhaus-Enzyklopädie: „Informatik“
Die Wissenschaft von der systematischen Verarbeitung von
Informationen, besonders der automatischen Verarbeitung mit Hilfe
von Digitalrechnern (→ Computer). . . .
A. Mäder 6
Informatik
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
Brockhaus-Enzyklopädie: „Informatik“
Die Wissenschaft von der systematischen Verarbeitung von
Informationen, besonders der automatischen Verarbeitung mit Hilfe
von Digitalrechnern (→ Computer). . . .
A. Mäder 6
Trennung von Hardware und Software
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
unterschiedliche Paradigmen
I SW: Hardware ist „notwendiges Übel“
I Abstraktion von der Hardware
I Entwicklung in Hochsprachen (Produktivität)
I HW: Optimierungsziel sind technische Werte
= Taktfrequenz, Latenz, Durchsatz, Leistungsaufnahme etc.
I Maschinenbefehl wird auf Hardwarearchitektur ausgeführt
I technische Entwicklung: Moore’s Law
...
A. Mäder 7
Trennung von Hardware und Software
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
unterschiedliche Paradigmen
I SW: Hardware ist „notwendiges Übel“
I Abstraktion von der Hardware
I Entwicklung in Hochsprachen (Produktivität)
I HW: Optimierungsziel sind technische Werte
= Taktfrequenz, Latenz, Durchsatz, Leistungsaufnahme etc.
I Maschinenbefehl wird auf Hardwarearchitektur ausgeführt
I technische Entwicklung: Moore’s Law
A. Mäder 7
Trennung von Hardware und Software
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
unterschiedliche Paradigmen
I SW: Hardware ist „notwendiges Übel“
I Abstraktion von der Hardware
I Entwicklung in Hochsprachen (Produktivität)
I HW: Optimierungsziel sind technische Werte
= Taktfrequenz, Latenz, Durchsatz, Leistungsaufnahme etc.
I Maschinenbefehl wird auf Hardwarearchitektur ausgeführt
I technische Entwicklung: Moore’s Law
...
A. Mäder 7
Trennung von Hardware und Software
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
unterschiedliche Paradigmen
I SW: Hardware ist „notwendiges Übel“
I Abstraktion von der Hardware
I Entwicklung in Hochsprachen (Produktivität)
I HW: Optimierungsziel sind technische Werte
= Taktfrequenz, Latenz, Durchsatz, Leistungsaufnahme etc.
I Maschinenbefehl wird auf Hardwarearchitektur ausgeführt
I technische Entwicklung: Moore’s Law
Problem
... verschiedene Sichtweisen
A. Mäder 7
Motivation
Wie funktioniert ein Digitalrechner?
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
⇒ Informatik Basiswissen
⇒ Bewertung von Trends und Perspektiven
⇒ Chancen und Grenzen der Miniaturisierung
A. Mäder 8
Fortschritt
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 9
Fortschritt (cont.)
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
Instr./sec.
Kriterien / Maßgrößen
Verbmobil Spracherkennung
I Rechenleistung: MIPS HDTV/DVR-Video
1G
I MBytes (RAM, HDD) MPEG1 VCD
DVD-Video
MIDI-Synth
I Mbps MP3
Audio-CD
1M
I MPixel JPEG
1 Seite ASCII
1K
Zuse Z1
Athlon/P4
Pentium/90
⇒ jede Rechnergeneration
Apple2 Atari ST
A. Mäder 10
vor 50 Jahren
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
I [Link]/[Link]
I [Link]/office/pao/History/computers/[Link]
I [Link]/wiki/Apollo_Guidance_Computer
I [Link]/wiki/IBM_System/360
A. Mäder 11
vor 50 Jahren (cont.)
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 12
vor 50 Jahren (cont.)
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 13
vor 50 Jahren (cont.)
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 14
vor 50 Jahren (cont.)
1 Einführung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 14
von-Neumann Konzept
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 15
von-Neumann Rechner: IAS Computer
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 16
Programmverarbeitung
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
Operation ausführen,
Befehlszähler um 1 erhöhen
oder Sprungadresse laden
Programmende?
Nein
Ja
Ende
A. Mäder 17
von-Neumann Rechner
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 18
Hardwareaufbau / Rechnerarchitektur
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0
A A A
NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU OPC
ALU OPC
ALU
A1 A0 COUT Y A1 A0 COUT Y A1 A0 COUT Y
S 2:1 Y
S 2:1 Y
S 2:1 Y
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
0 0 0
select_addr_mux select_addr_mux select_addr_mux
clock
RAM clock
RAM clock
RAM
CLK enable_areg A CLK enable_areg A CLK enable_areg A
BR AR BR AR BR AR
D D D D D D
ENA ENA ENA ENA ENA ENA
0 0 0
A A A
NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU OPC
ALU OPC
ALU
A1 A0 COUT Y A1 A0 COUT Y A1 A0 COUT Y
S 2:1 Y
S 2:1 Y
S 2:1 Y
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
0 0 0
select_addr_mux select_addr_mux select_addr_mux
clock
RAM clock
RAM clock
RAM
CLK enable_areg A CLK enable_areg A CLK enable_areg A
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 20
PRIMA: Befehl holen
BR = RAM[PC]
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 21
PRIMA: decodieren
Steuersignale = decode(BR)
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 22
PRIMA: PC inkrementieren
PC = PC+1
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 23
PRIMA: rechnen
Akku = Akku + RAM[AR]
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 24
PRIMA: speichern
RAM[AR] = Akku
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 25
PRIMA: springen
PC = AR
1.1 Einführung - von-Neumann Konzept 64-040 Rechnerstrukturen und Betriebssysteme
BR AR
D D
ENA ENA
0
A
INCR
CLK CLK
NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU
A1 A0 COUT Y
S 2:1 Y
PC AKKU
D D
ENA ENA
CLK CLK
NR 00_H
Q
NR 00_H
Q
STW
A1 A0
2:1
Befehl alu_function
AkkuInhalt enable_pc S
Y DIN
Overflow select_pcmux
0
select_addr_mux
enable_breg nCS
RAM
clock CLK enable_areg A
enable_ram_write
cycle3_execute
cycle2_address execute
cycle1_fetch
address
fetch
A. Mäder 27
Abakus
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
Wert in Spalte 8 0 0 5 14 2 5 2 10 7 0
Kugel = 5
Kugel = 1
Zehnerpotenz
der Spalte 1010 10 9 10 8 10 7 10 6 10 5 10 4 10 3 10 2 10 1 10 0
A. Mäder 28
Mechanische Rechenmaschinen
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 29
Difference Engine
Charles Babbage 1822: Berechnung nautischer Tabellen
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
Original von 1832 und Nachbau von 1989, London Science Museum
A. Mäder 30
Analytical Engine
Charles Babbage 1837-1871: frei programmierbar, Lochkarten, unvollendet
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 31
Zuse Z1
Konrad Zuse 1937: 64 Register, 22-bit, mechanisch, Lochfilm
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 32
Zuse Z3
Konrad Zuse 1941, 64 Register, 22-bit, 2000 Relays, Lochfilm
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 33
Atanasoff-Berry Computer (ABC)
[Link] 1942: 50-bit Festkomma, Röhren und Trommelspeicher,
fest programmiert
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 34
ENIAC – Electronic Numerical Integrator and Computer
Mauchly & Eckert, 1946: Röhren, Steckbrett-Programm
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 35
First computer bug
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 36
EDVAC
Mauchly, Eckert & von Neumann, 1949: Röhren, speicherprogrammiert
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 37
Manchester Mark-1
Williams & Kilburn, 1949: Trommelspeicher, Indexregister
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 38
Manchester EDSAC
Wilkes 1951: Mikroprogrammierung, Unterprogramme, speicherprogrammiert
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 39
erste Computer, ca. 1950
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 40
erste Betriebssysteme
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 41
zweite Generation: Transistoren
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 42
Festplatten
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
I Magnettrommel
I Festplatte
IBM 350 RAMAC (1956)
5 MByte, 600 ms Zugriffszeit
[Link]
A. Mäder 43
dritte Generation: ICs
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 44
vierte Generation: VLSI
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 45
Xerox Alto: first workstation
1.2 Einführung - Exkurs: Geschichte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 46
Personal Computer: Aufbau des IBM PC (1981)
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 47
PC Prototyp (1981) und Hauptplatine
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 48
Aufbau mit PCI-Bus (2000)
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 49
Hauptplatine (2005)
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
[Link]/wiki/Computerhardware_für_Anfänger
A. Mäder 50
Aufbau (2010)
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
2 GB/s DMI
12 Hi Speed USB 2.0 Ports; 480 Mb/s Intel® High
Dual EHCI; USB Port Disable each x2 Definition Audio
Optional
Intel [Link]
I Mehrkern-Prozessoren („dual-/quad-/octa-core“)
I schnelle serielle Direktverbindungen statt PCI/ISA Bus
A. Mäder 51
Aufbau (2017)
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
Three Independent
DP/HDMI Display Support DMI 3.0
I Speichercontroller und externe Anbindung (PCI Express) in CPU
I Grafikprozessor in CPU
A. Mäder 52
Rechner-Spektrum
1.3 Einführung - Personal Computer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 53
Moore’s Law
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 54
Moore’s Law (cont.)
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 55
Moore’s Law: Transistoren pro Speicherchip
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 56
Moore’s Law: Evolution der Prozessoren
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 57
Moore’s Law: Evolution der Prozessoren
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 57
Moore’s Law: Evolution der Prozessoren
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 57
Moore’s Law: Evolution der Prozessoren
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 57
Moore’s Law: Evolution der Prozessoren
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
16-Core SPARC T3
Transistor count Six-Core Core i7
2,600,000,000 Six-Core Xeon 7400 10-Core Xeon Westmere-EX
Dual-Core Itanium 2 8-core POWER7
Quad-core z196
AMD K10
1,000,000,000 POWER6
Quad-Core Itanium Tukwila
8-Core Xeon Nehalem-EX
Itanium 2 with 9MB cache Six-Core Opteron 2400
AMD K10 Core i7 (Quad)
Core 2 Duo
Itanium 2 Cell
100,000,000 AMD K8
Barton Atom
Pentium 4
AMD K7
AMD K6-III
curve shows transistor
AMD K6
10,000,000 count doubling every Pentium III
two years Pentium II
AMD K5
Pentium
80486
1,000,000
80386
80286
100,000
68000
80186
8086 8088
8085
10,000 6800 6809
8080 Z80
A. Mäder 58
Moore’s Law: Kosten pro Komponente
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 59
Moore’s Law: Formel und Beispiele
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 60
Leistungssteigerung der Spitzenrechner seit 1993
[Link] [Link]/wiki/Supercomputer
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 61
Leistungssteigerung der Spitzenrechner seit 1993
[Link] [Link]/wiki/Supercomputer
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 61
Leistungssteigerung der Spitzenrechner seit 1993 (cont.)
[Link] [Link]/wiki/Supercomputer
1.4 Einführung - Moore’s Law 64-040 Rechnerstrukturen und Betriebssysteme
10 EFlop/s
1 EFlop/s
100 PFlop/s
10 PFlop/s
1 PFlop/s
Performance
100 TFlop/s
10 TFlop/s
1 TFlop/s
100 GFlop/s
10 GFlop/s
1 GFlop/s
100 MFlop/s
1995 2000 2005 2010 2015 2020
A. Mäder 63
SoC: System on a chip
1.5 Einführung - System on a chip 64-040 Rechnerstrukturen und Betriebssysteme
energieeffizient
I
A. Mäder 64
SoC: System on a chip (cont.)
1.5 Einführung - System on a chip 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 65
SoC Beispiele
1.5 Einführung - System on a chip 64-040 Rechnerstrukturen und Betriebssysteme
I Bluetooth-Controller (2000)
[Fur00]
Prozess 0,25 —m
Metall 3-Layer
VDD 2,5 V
Transistoren 4,3 Mill.
Chipfläche 20 mm2
Taktrate 0 . . . 13 MHz
MIPS 12
Power 75 mW
MIPS/W 160
A. Mäder 66
SoC Beispiele (cont.)
SD 3.0
NAND/NOR USB SS/HS
LPDDR2 LPDDR2 Flash host/target
eMMC SSD
2x MIPI® HSI EMIF 1 EMIF 2 GPMC MMC/SD SATA 2.0 USB 3.0 OTG
3x USB 2.0 USB HS
host target
MIPI LLI
OMAP5430 (ULPI/TLL/HSIC)
TI C2C Companion
3G/4G MIPI LLI/
modem USB/HSIC Dynamic memory manager ARM ARM UniPortSM-M device
L2 cache Cortex-M4 Cortex-M4 MIPI CSI-3
UART/SPI Up to
four
SDIO ARM® ARM POWERVR™ mini- IVA-HD 3x MIPI CSI-2 +
cameras
Cortex™-A15 Cortex-A15 SGX544-MPx C64x video CPI
McBSP MPCore MPCore 3D graphics DSP accelerator Camera control
A. Mäder 67
SoC Beispiele (cont.)
1.5 Einführung - System on a chip 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 68
SoC Beispiele (cont.)
1.5 Einführung - System on a chip 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 69
Grenzen des Wachstums
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 70
Roadmap: IRDS
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 71
Roadmap: IRDS (cont.)
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
Table MM01 – More Moore – Logic Core Device Technology Roadmap (Ausschnitt, 2017)
YEAR OF PRODUCTION 2017 2019 2021 2024 2027 2030 2033
P54M36 P48M28 P42M24 P36M21 P32M14 P32M14T2 P32M14T4
Logic industry "Node Range" Labeling (nm) "10" "7" "5" "3" "2.1" "1.5" "1.0"
IDM-Foundry node labeling i10-f7 i7-f5 i5-f3 i3-f2.1 i2.1-f1.5 i1.5-f1.0 i1.0-f0.7
finFET finFET LGAA LGAA LGAA VGAA, LGAA VGAA, LGAA
Logic device structure options
FDSOI LGAA finFET VGAA VGAA 3DVLSI 3DVLSI
Logic device mainstream device finFET finFET LGAA LGAA LGAA VGAA VGAA
DEVICE STRUCTURES
...
Design scaling factor for SRAM (111) bitcell - 1,00 1,00 1,00 1,00 1,25 1,00
...
Datapath speed improvement at Vdd - relative 1,00 1,19 1,21 1,34 1,56 1,60 1,70
Power density of logic path cube at fmax - relative 1,00 1,20 1,21 1,82 2,69 4,49 8,00
fmax of a single CPU core at Vdd (GHz) 2,5 3,0 3,0 3,3 3,9 4,0 4,2
favg at constant power density and Vdd (GHz) 2,50 2,48 2,51 1,84 1,45 0,89 0,53
...
CPU SiP throughput at fmax (TFLOPS/sec)
INTERCONNECT TECHNOLOGY
0,16 0,27 0,46 0,79 1,34 2,27 3,86
Conductor Cu, non-Cu Cu, non-Cu Cu, non-Cu Cu, non-Cu Cu, non-Cu Cu, non-Cu Cu, non-Cu
...
Number of wiring layers 14 16 18 20 20 20 20
A. Mäder 72
Moore’s Law
Beispiel für die Auswirkung von Moore’s Law
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 73
Moore’s Law: Schöpferische Pause
Beispiel für die Auswirkung von Moore’s Law
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 73
Moore’s Law: Schöpferische Pause
Beispiel für die Auswirkung von Moore’s Law
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 73
Wie geht es jetzt weiter?
1.6 Einführung - Roadmap und Grenzen des Wachstums 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 75
Literatur (cont.)
1.7 Einführung - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 76
Gliederung
2 Informationsverarbeitung 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
Semantic Gap
Abstraktionsebenen
Beispiel: HelloWorld
Definitionen und Begriffe
Informationsübertragung
Zeichen
Literatur
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
A. Mäder 77
Gliederung (cont.)
2 Informationsverarbeitung 64-040 Rechnerstrukturen und Betriebssysteme
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 78
Definition: Digitalrechner
2 Informationsverarbeitung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 79
Befehlssatz und Semantic Gap
. . . verstehen eine begrenzte Menge einfacher Befehle . . .
2.1 Informationsverarbeitung - Semantic Gap 64-040 Rechnerstrukturen und Betriebssysteme
I Semantic gap:
Diskrepanz zu einfachen elementaren Anweisungen
I Vermittlung zwischen Mensch und Computer erfordert
zusätzliche Abstraktionsebenen und Software
A. Mäder 80
Rechnerarchitektur bzw. -organisation
2.1 Informationsverarbeitung - Semantic Gap 64-040 Rechnerstrukturen und Betriebssysteme
I diverse Optimierungs-Kriterien/Möglichkeiten:
I Performanz, Größe, Leistungsaufnahme . . .
I Kosten: Hardware, Software, Entwurf . . .
I Zuverlässigkeit, Wartungsfreundlichkeit, Sicherheit . . .
Achtung / Vorsicht:
I Gesamtverständnis erfordert Kenntnisse auf allen Ebenen
I häufig Rückwirkung von unteren auf obere Ebenen
A. Mäder 81
Rückwirkung von unteren Ebenen: Arithmetik
2.1 Informationsverarbeitung - Semantic Gap 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 82
Rückwirkung von unteren Ebenen: Performanz
2.1 Informationsverarbeitung - Semantic Gap 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 83
Maschine mit mehreren Ebenen
2.2 Informationsverarbeitung - Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 84
Abstraktionsebenen und Sprachen
2.2 Informationsverarbeitung - Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 85
Virtuelle Maschine
2.2 Informationsverarbeitung - Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 86
Übliche Einteilung der Ebenen
2.2 Informationsverarbeitung - Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 87
Beispiel: Sechs Ebenen
2.2 Informationsverarbeitung - Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
Intel x86
Instruktions-Cache
Chip Hardware
A. Mäder 88
Hinweis: Ebenen vs. Vorlesungen im BSc-Studiengang
2.2 Informationsverarbeitung - Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
Anwendungsebene: SE1+SE2, AD . . .
Assemblerebene: RSB
Betriebssystemebene: RSB, VSS
Rechnerarchitektur: RSB
Mikroarchitektur: RSB
Logikebene: RSB
Device-Level: –
A. Mäder 89
HelloWorld: Anwendungsebene Quellcode
2.3 Informationsverarbeitung - Beispiel: HelloWorld 64-040 Rechnerstrukturen und Betriebssysteme
Übersetzung
gcc -S HelloWorld .c
gcc -c HelloWorld .c
gcc -o HelloWorld .exe HelloWorld .c
A. Mäder 90
HelloWorld: Assemblerebene cat HelloWorld.s
2.3 Informationsverarbeitung - Beispiel: HelloWorld 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 91
HelloWorld: Objectcode od -x HelloWorld.o
2.3 Informationsverarbeitung - Beispiel: HelloWorld 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 92
HelloWorld: Disassemblieren objdump -d HelloWorld.o
2.3 Informationsverarbeitung - Beispiel: HelloWorld 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 93
HelloWorld: Maschinencode od -x [Link]
2.3 Informationsverarbeitung - Beispiel: HelloWorld 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 94
Hardware: „Versteinerte Software“
2.3 Informationsverarbeitung - Beispiel: HelloWorld 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 95
Information
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 96
Repräsentation: Beispiele
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
Beispiel: Mit der Information „25“ sei die abstrakte Zahl gemeint,
die sich aber nur durch eine Repräsentation angeben lässt:
I Text deutsch: fünfundzwanzig
I Text englisch: twentyfive
...
I Zahl römisch: XXV
I Zahl dezimal: 25
I Zahl binär: 11001
I Zahl Dreiersystem: 221
...
I Morse-Code: • • −−− •••••
A. Mäder 97
Interpretation: Information vs. Repräsentation
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
5 · (2 + 3) = 25
A. Mäder 98
Repräsentation: Ebenen
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 99
Repräsentation: digitale und analoge Welt
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
Beispiel: Binärwerte in
2,5 V CMOS-Technologie
A. Mäder 100
Information vs. Nachricht
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
I Aussagen
N1 Er besucht General Motors
N2 Unwetter am Alpenostrand
N3 Sie nimmt ihren Hut
A. Mäder 101
Information vs. Nachricht (cont.)
2.4 Informationsverarbeitung - Definitionen und Begriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 102
Modell der Informationsübertragung
2.5 Informationsverarbeitung - Informationsübertragung 64-040 Rechnerstrukturen und Betriebssysteme
Information wird in
Nachricht überführt Nachricht wird interpretiert
-1
I1 N1 N2 I2
α α
A. Mäder 103
Modell der Informationsübertragung (cont.)
2.5 Informationsverarbeitung - Informationsübertragung 64-040 Rechnerstrukturen und Betriebssysteme
Störungen
und Rauschen
Beispiele
I Bitfehler beim Speichern
I Störungen beim Funkverkehr
I Schmutz oder Kratzer auf einer CD/DVD
I usw.
A. Mäder 104
Verarbeitung von Information
2.5 Informationsverarbeitung - Informationsübertragung 64-040 Rechnerstrukturen und Betriebssysteme
Repräsentation
natürlicher Zahlen
durch Stellenwert-
systeme
A. Mäder 105
Informationstreue
2.5 Informationsverarbeitung - Informationsübertragung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 106
Informationstreue (cont.)
2.5 Informationsverarbeitung - Informationsübertragung 64-040 Rechnerstrukturen und Betriebssysteme
Beispiele
I Gilt x 2 ≥ 0?
I float: ja
I signed integer: nein
I Gilt (x + y ) + z = x + (y + z)?
I integer: ja
I float: nein
1.0E20 + (-1.0E20 + 3.14) = 0
A. Mäder 107
Beschreibung von Information durch Zeichen
2.6 Informationsverarbeitung - Zeichen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
I Z1 = {0; 1}
I Z2 = {0; 1; 2; : : : ; 9; A; B; C; D; E; F}
I Z3 = {¸; ˛; ‚; : : : ; !}
I Z4 = {CR; LF}
A. Mäder 108
Beschreibung von Information durch Zeichen (cont.)
2.6 Informationsverarbeitung - Zeichen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 109
Binärzeichen
2.6 Informationsverarbeitung - Zeichen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
I Z1 = {0; 1}
I Z2 = {high; low}
I Z3 = {rot, grün}
I Z4 = {+; −}
A. Mäder 110
Alphabet
2.6 Informationsverarbeitung - Zeichen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
I A1 = {0; 1; 2; : : : ; 9}
I A2 = {Mo; Di; Mi; Do; Fr; Sa; So}
I A3 = {A; B; C; : : : ; Z}
A. Mäder 111
Zeichenkette
2.6 Informationsverarbeitung - Zeichen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
I s=H e l l o , w o r l d !
A. Mäder 112
Zahlen- und Zeichendarstellung in RSB
2.6 Informationsverarbeitung - Zeichen 64-040 Rechnerstrukturen und Betriebssysteme
4. Arithmetik
A. Mäder 113
Literatur
2.7 Informationsverarbeitung - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 114
Gliederung
3 Ziffern und Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
Konzept der Zahl
Stellenwertsystem
Umrechnung zwischen verschiedenen Basen
Zahlenbereich und Präfixe
Festkommazahlen
Darstellung negativer Zahlen
Gleitkomma und IEEE 754
Maschinenworte
Literatur
4. Arithmetik
5. Zeichen und Text
A. Mäder 115
Gliederung (cont.)
3 Ziffern und Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 116
Konzept der Zahl
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
„Das Messen ist der Ursprung der Zahl als Abstraktion der Anzahl
von Objekten die man abzählen kann. . . “ [Ifr10]
Abstraktion zum:
I Zählen
I Speichern
I Rechnen
A. Mäder 117
Eigenschaften eines Zahlensystems
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 118
Abstraktion: Verschiedene Symbole für eine Zahl
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
[Ifr10]
A. Mäder 119
Zählen mit den Fingern („digits“)
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
[Ifr10]
A. Mäder 120
Speicherung
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
Knotenschnüre [Ifr10]
A. Mäder 121
Rechnen: Römische Ziffern
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 122
Babylon: Einführung der Null, 3 Jh. v. Chr.
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
[Ifr10]
A. Mäder 123
Babylon: Sexagesimalsystem
3.1 Ziffern und Zahlen - Konzept der Zahl 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 124
Dezimalsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 125
Stellenwertsystem („Radixdarstellung“)
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 126
Dualsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 127
Dualsystem: Potenztabelle
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
I Basis 2
I Zeichensatz ist {0; 1}
I Beispiele:
02 = 010
12 = 110
112 = 310 21 + 2 0
11 01002 = 5210 25 + 2 4 + 2 2
1111 11102 = 25410 28 + 2 7 + : : : + 2 2 + 2 1
A. Mäder 129
Addition im Dualsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
1011 0011 = 179
+ 0011 1001 = 57
Ü 11 11 11
1110 1100 = 236
A. Mäder 130
Multiplikation im Dualsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 131
Multiplikation im Dualsystem (cont.)
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
10110011 · 1101 = 179 · 13 = 2327
10110011 1 = 1001 0001 0111
10110011 1 = 0x917
00000000 0
10110011 1
Ü 11101111
100100010111
A. Mäder 132
Oktalsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
I Basis 8
I Zeichensatz ist {0; 1; 2; 3; 4; 5; 6; 7}
I C-Schreibweise mit führender 0 als Präfix:
0001 = 110
I
A. Mäder 133
Hexadezimalsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
I Basis 16
I Zeichensatz ist {0; 1; 2; : : : ; 9; A; B; C; D; E; F }
I C-Schreibweise mit Präfix 0x – Klein- oder Großbuchstaben
I 0x00000001 = 110
0x000000f e = 25410 = 15 · 16 + 14
0x0000f f f f = 65 53510 = 15 · 4 096 + 15 · 256 + 15 · 16 + 15
0xca f ebabe = : : : erstes Wort in Java Class-Dateien
usw.
I viel leichter lesbar als entsprechende Dualzahl
I Umwandlung aus/vom Dualsystem durch Zusammenfassen
bzw. Ausschreiben von je vier Bits:
0x0 = 0000; 0x1 = 0001; 0x2 = 0010; : : : ; 0x9 = 1001,
0xA = 1010; 0xB = 1011; 0xC = 1100;
0xD = 1101; 0xE = 1110; 0xF = 1111
A. Mäder 134
Beispiel: Darstellungen der Zahl 2019
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
Binär
1 1 1 1 1 1 0 0 0 1 1
1 · 210 + 1 · 29 + 1 · 28 + 1 · 27 + 1 · 26 + 1 · 25 + 0 · 24 + 0 · 23 + 0 · 22 + 1 · 21 + 1 · 20
1 024 + 512 + 256 + 128 + 64 + 32 + 0 + 0 + 0 + 2 + 1
Oktal 3 7 4 3
3 · 83 + 7 · 82 + 4 · 81 + 3 · 80
1 536 + 448 + 32 + 3
Dezimal 2 0 1 9
2 · 103 + 0 · 102 + 1 · 101 + 9 · 100
2 000 + 0 + 10 + 9
Hexadezimal 7 E 3
7 · 162 + E · 161 + 3 · 160
1 792 + 224 + 3
A. Mäder 135
Umrechnung Dual-/Oktal-/Hexadezimalsystem
3.2 Ziffern und Zahlen - Stellenwertsystem 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
Hexadezimal 1 9 4 8 . B 6
z }| { z }| { z }| { z }| { z }| { z }| {
Binär 0001100101001000.101101100
| {z } | {z } | {z } | {z } | {z } | {z } | {z } | {z }
Oktal 1 4 5 1 0 . 5 5 4
Hexadezimal 7 B A 3 . B C 4
z }| { z }| { z }| { z }| { z }| { z }| { z }| {
Binär 0111101110100011.101111000100
| {z } | {z } | {z } | {z } | {z } | {z } | {z } | {z } | {z }
Oktal 7 5 6 4 3 . 5 7 0 4
A. Mäder 136
Umrechnung zwischen verschiedenen Basen
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
1. vorberechnete Potenztabellen
2. Divisionsrestverfahren
3. Horner-Schema
A. Mäder 137
Umwandlung über Potenztabellen
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 138
Potenztabellen Dual/Dezimal
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 140
Potenztabellen: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 141
Divisionsrestverfahren
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 142
Divisionsrestverfahren: Beispiel
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 143
Divisionsrestverfahren: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
1 : 2 = 0 Rest 1 2 10
A. Mäder 144
Divisionsrestverfahren: Algorithmus
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 145
Horner-Schema
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
Vorgehensweise:
I Darstellung der umzuwandelnden Zahl im Horner-Schema
I Durchführung der auftretenden Multiplikationen und
Additionen im Zielsystem
A. Mäder 146
Horner-Schema: Beispiel
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
3. Arithmetische Operationen
1 · 1010 = 1010
+ 110
1 0000 · 1010 = 1010 0000
+ 11
1010 0011
A. Mäder 147
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 148
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
3. Arithmetische Operationen
1 · 2=2
+0
2 · 2=4
+1
5 · 2 = 10
+ 0
10 · 2 = 20
+ 0
20 · 2 = 40
+ 0
40 · 2 = 80
+ 1
81 · 2 = 162
+ 1
163
A. Mäder 149
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Horner-Schema: Beispiel (cont.)
3.3 Ziffern und Zahlen - Umrechnung zwischen verschiedenen Basen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 150
Zahlenbereich bei fester Wortlänge
3.4 Ziffern und Zahlen - Zahlenbereich und Präfixe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 151
Präfixe
3.4 Ziffern und Zahlen - Zahlenbereich und Präfixe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 152
Präfixe für Einheiten im Dezimalsystem
3.4 Ziffern und Zahlen - Zahlenbereich und Präfixe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 153
Präfixe für Einheiten im Dualsystem
3.4 Ziffern und Zahlen - Zahlenbereich und Präfixe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 154
Präfixe für Einheiten im Dualsystem
3.4 Ziffern und Zahlen - Zahlenbereich und Präfixe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 155
Festkommadarstellung
3.5 Ziffern und Zahlen - Festkommazahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 156
Nachkommastellen im Dualsystem
3.5 Ziffern und Zahlen - Festkommazahlen 64-040 Rechnerstrukturen und Betriebssysteme
I 2−1 = 0,5
2−2 = 0,25
2−3 = 0,125
2−4 = 0,0625
2−5 = 0,03125
2−6 = 0,015625
2−7 = 0,0078125
2−8 = 0,00390625
...
I alle Dualbrüche sind im Dezimalsystem exakt darstellbar
(d.h. mit endlicher Wortlänge)
I dies gilt umgekehrt nicht
A. Mäder 157
Nachkommastellen im Dualsystem (cont.)
3.5 Ziffern und Zahlen - Festkommazahlen 64-040 Rechnerstrukturen und Betriebssysteme
I gebrochene Zahlen können je nach Wahl der Basis evtl. nur als
unendliche periodische Brüche dargestellt werden
I insbesondere erfordern viele endliche Dezimalbrüche im
Dualsystem unendliche periodische Brüche
I Beispiel: Dezimalbrüche, eine Nachkommastelle
B=10 B=2 B=2 B=10
0,1 0; 00011 0,001 0,125
0,2 0; 0011 0,010 0,25
0,3 0; 01001 0,011 0,375
0,4 0; 0110 0,100 0,5
0,5 0; 1 0,101 0,625
0,6 0; 1001 0,110 0,75
0,7 0; 10110 0,111 0,875
0,8 0; 1100
0,9 0; 11100
A. Mäder 158
Umrechnung: Dezimalbruch nach Dual
3.5 Ziffern und Zahlen - Festkommazahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 159
Umrechnung: Dezimalbruch nach Dual (cont.)
3.5 Ziffern und Zahlen - Festkommazahlen 64-040 Rechnerstrukturen und Betriebssysteme
Divisionsrestverfahren
I statt Division: bei Nachkommastellen Multiplikation · 2
I man nimmt den Dezimalbruch immer mit 2 mal
I Resultat < 1: eine 0 an den Dualbruch anfügen
–"– ≥ 1: eine 1 –"–
und den ganzzahligen Anteil streichen: −1,0
I Ende, wenn Ergebnis 1,0 (wird zu 0)
–"– wenn Rest sich wiederholt ⇒ Periode
I Beispiel: Dezimal 0,59375
2 · 0; 59375 = 1; 1875 → 1 2−1
2 · 0; 1875 = 0; 375 →0 ..
.
2 · 0; 375 = 0; 75 →0 ↓ Leserichtung
2 · 0; 75 = 1; 5 →1 ..
.
2 · 0; 5 = 1; 0 →1 2 −5
A. Mäder 160
Darstellung negativer Zahlen
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 161
Betrag und Vorzeichen
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 162
Exzess-Codierung (Offset-basiert)
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
z = c − of f set
A. Mäder 163
Exzess-Codierung: Beispiele
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 164
b-Komplement
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
Kb (z) = b n − z; für z 6= 0
= 0; für z = 0
I Stellenwertschreibweise
n−2
X
z = −an−1 · b n−1 + ai · b i
i=−m
I Dualsystem: 2-Komplement
I Dezimalsystem: 10-Komplement
A. Mäder 165
b-Komplement: Beispiele
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 166
(b − 1)-Komplement
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
I Dualsystem: 1-Komplement
I Dezimalsystem: 9-Komplement
A. Mäder 167
(b − 1)-Komplement / b-Komplement: Trick
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 168
(b − 1)-Komplement / b-Komplement: Trick (cont.)
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 169
Subtraktion mit b-Komplement
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
Kb (z) + z = b n =0
x − y = x + Kb (y )
x − y = x + Kb−1 (y ) + 1
A. Mäder 170
Subtraktion mit Einer- und Zweierkomplement
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 171
Veranschaulichung: Zahlenkreis
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
1110
-1 0 1
0010 1110 0 1
0010 1110
-7 0 1
0010
-2 2 -1 2 -6 2
1101 0011 1101 0011 1101 0011
-3 3 -2 3 -5 3
1100 -4 4 0100 1100 -3 4 0100 1100 -4 4 0100
-5 5 -4 5 -3 5
1011 0101 1011 0101 1011 0101
-6 6 -5 6 -2 6
1010
-7 -8 7 0110 1010
-6 -7 7 0110 1010
-1 -0 7 0110
A. Mäder 172
Darstellung negativer Zahlen: Beispiele
3.6 Ziffern und Zahlen - Darstellung negativer Zahlen 64-040 Rechnerstrukturen und Betriebssysteme
N +N -N -N -N -N
Dezimal Binär VZ+Betrag 1-Komplement 2-Komplement Exzess-128
1 0000 0001 1000 0001 1111 1110 1111 1111 0111 1111
2 0000 0010 1000 0010 1111 1101 1111 1110 0111 1110
3 0000 0011 1000 0011 1111 1100 1111 1101 0111 1101
4 0000 0100 1000 0100 1111 1011 1111 1100 0111 1100
5 0000 0101 1000 0101 1111 1010 1111 1011 0111 1011
6 0000 0110 1000 0110 1111 1001 1111 1010 0111 1010
7 0000 0111 1000 0111 1111 1000 1111 1001 0111 1001
8 0000 1000 1000 1000 1111 0111 1111 1000 0111 1000
9 0000 1001 1000 1001 1111 0110 1111 0111 0111 0111
10 0000 1010 1000 1010 1111 0101 1111 0110 0111 0110
20 0001 0100 1001 0100 1110 1011 1110 1100 0110 1100
30 0001 1110 1001 1110 1110 0001 1110 0010 0110 0010
40 0010 1000 1010 1000 1101 0111 1101 1000 0101 1000
50 0011 0010 1011 0010 1100 1101 1100 1110 0100 1110
60 0011 1100 1011 1100 1100 0011 1100 0100 0100 0100
70 0100 0110 1100 0110 1011 1001 1011 1010 0011 1010
80 0101 0000 1101 0000 1010 1111 1011 0000 0011 0000
90 0101 1010 1101 1010 1010 0101 1010 0110 0010 0110
100 0110 0100 1110 0100 1001 1011 1001 1100 0001 1100
127 0111 1111 1111 1111 1000 0000 1000 0001 0000 0001
128 — — — 1000 0000 0000 0000
MSB 0 1 1 1 0
A. Mäder 173
Gleitkommaformat
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 174
Gleitkomma: Motivation
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 175
Gleitkomma: Dezimalsystem
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
z = (−1)s · m · 10e
I s Vorzeichenbit
I m Mantisse als Festkomma-Dezimalzahl
I e Exponent als ganze Dezimalzahl
A. Mäder 176
Gleitkomma: Beispiel für Zahlenbereiche
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
Stellen Zahlenbereich
Mantisse Exponent 0← →∞
3 1 10−12 10 9
3 2 10−102 1099
3 3 10−1002 10999
3 4 10−10002 109999
4 1 10−13 109
4 2 10−103 1099
4 3 10−1003 10999
4 4 10−10003 109999
5 1 10−14 109
5 2 10−104 1099
5 3 10−1004 10999
5 4 10−10004 109999
10 3 10−1009 10999
20 3 10−1019 10999
A. Mäder 177
Gleitkomma: Historie
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 178
Gleitkomma: Zahlenbereiche
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 179
Gleitkomma: Normalisierte Darstellung
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
z = (−1)s · m · 10e
normalisierte Darstellung
I Exponent anpassen, bis Mantisse im Bereich 1 ≤ m < b liegt
⇒ Darstellung ist dann eindeutig
⇒ im Dualsystem: erstes Vorkommabit ist dann 1
und muss nicht explizit gespeichert werden
A. Mäder 180
IEEE 754 Standard
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 181
IEEE 754: float und double
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 182
IEEE 754: Zahlenbereiche
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 183
Matlab-Demo: demoieee754
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 184
Matlab-Demo: demoieee754 (cont.)
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 185
Beispiele: float
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 186
Beispiele: float (cont.)
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 187
Gleitkomma: Addition, Subtraktion
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 188
Gleitkomma-Addition: Beispiel
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
y = (a + b)
= (9; 725 · 107 + 0; 3016 · 107 ) Angleichung der Exponenten
= (9; 725 + 0; 3016) · 107 Distributivgesetz
= (10; 0266) · 107 Addition der Mantissen
= 1; 00266 · 108 Normalisierung
A. Mäder 189
Achtung: Auslöschung
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 190
Gleitkomma: Multiplikation, Division
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
Division entsprechend:
I Division der Mantissen und Vorzeichen
A. Mäder 191
IEEE 754: Infinity Inf , Not-a-Number NaN, ±0
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 192
IEEE 754: Infinity Inf , Not-a-Number NaN, ±0 (cont.)
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
0 V 0 0. . . 0 0 0. . . 0
Inf V 1 1. . . 1 0 0. . . 0
A. Mäder 193
IEEE 754: Infinity Inf , Not-a-Number NaN, ±0 (cont.)
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
0 / 0 = NaN
1 / 0 = Infinity
-1 / 0 = -Infinity
1 / Infinity = 0.0
Infinity + Infinity = Infinity
Infinity + -Infinity = NaN
Infinity * -Infinity = -Infinity
Infinity + NaN = NaN
Infinity * 0 = NaN
sqrt (2) = 1 .4142135623730951
sqrt ( -1) = NaN
0 + NaN = NaN
NaN == NaN = false Achtung
Infinity > NaN = false Achtung
A. Mäder 194
ULP: Unit in the last place
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
I IEEE 754 fordert eine Genauigkeit von 0,5 ULP für die
elementaren Operationen: Addition, Subtraktion,
Multiplikation, Division, Quadratwurzel
= der bestmögliche Wert
I gute Mathematik-Software garantiert ≤ 1 ULP auch für höhere
Funktionen: Logarithmus, Sinus, Cosinus usw.
I [Link]ützung, z.B. [Link]( double d )
A. Mäder 195
Rundungsfehler
3.7 Ziffern und Zahlen - Gleitkomma und IEEE 754 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 196
Datentypen in der Praxis: Maschinenworte
3.8 Ziffern und Zahlen - Maschinenworte 64-040 Rechnerstrukturen und Betriebssysteme
I 32-bit Rechner
I Wortlänge für Integerwerte ist 32-bit
I adressierbarer Speicher ist 232 Bytes (4 GiB)
I bereits zu knapp für speicherhungrige Applikationen
I inzwischen sind 64-bit Rechner bei PCs/Laptops Standard
I kleinere Wortbreiten: embedded-Systeme (Steuerungsrechner),
Mobilgeräte etc.
A. Mäder 197
Datentypen auf Maschinenebene
3.8 Ziffern und Zahlen - Maschinenworte 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 198
Datentypen auf Maschinenebene (cont.)
3.8 Ziffern und Zahlen - Maschinenworte 3 Data representation 64-040 Rechnerstrukturen und Betriebssysteme
Table 1. Data sizes
Microsoft
Borland
Watcom
Microsoft
Intel Windows
Borland
Watcom
Gnu v.3.x
Intel Linux
Microsoft
Intel Windows
Gnu
Intel Linux
I Prozessor
I Betriebssystem
bool 2 1 1 1 1 1 1 1 1 1 1 1 1
I Compiler char
wchar_t
1 1
2
1 1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
4
1
4
short int 2 2 2 2 2 2 2 2 2 2 2 2 2
int 2 2 2 4 4 4 4 4 4 4 4 4 4
long int 4 4 4 4 4 4 4 4 4 4 4 8 8
__int64 8 8 8 8 8 8 8 8
enum 2 2 1 4 4 4 4 4 4 4 4 4 4
float 4 4 4 4 4 4 4 4 4 4 4 4 4
double 8 8 8 8 8 8 8 8 8 8 8 8 8
long double 10 10 8 8 16 10 8 12 12 8 16 16 16
__m64 8 8 8 8 8 8
__m128 16 16 16 16 16 16 16
__m256 32 32 32 32
pointer 2 2 2 4 4 4 4 4 4 8 8 8 8
far pointer 4 4 4
function pointer 2 2 2 4 4 4 4 4 4 8 8 8 8
data member pointer 2 4 6 4 4 8 4 4 4 4 4 8 8
(min)
data member pointer 4 6 12 12 8 12 4 4 12 12 8 8
(max)
member function 2 12 6 4 4 12 4 8 8 8 8 16 16
pointer (min)
[Link]/optimize/ member function 12 6 16 16 12 16 8 8 24 24 16 16
calling_conventions.pdf pointer (max)
Table 1 shows how many bytes of storage various objects use for different compilers.
Differences in data representation can cause problems when exchanging binary data files
between programs, when exchanging data with a DLL compiled with a different compiler,
and when porting C++ code that relies on a specific data format.
A. Mäder 199
Literatur
3.9 Ziffern und Zahlen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 200
Literatur (cont.)
3.9 Ziffern und Zahlen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 201
Literatur (cont.)
3.9 Ziffern und Zahlen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 202
Gliederung
4 Arithmetik 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
Addition und Subtraktion
Multiplikation
Division
Höhere Funktionen
Mathematische Eigenschaften
Literatur
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
A. Mäder 203
Gliederung (cont.)
4 Arithmetik 64-040 Rechnerstrukturen und Betriebssysteme
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 204
Wiederholung: Stellenwertsystem („Radixdarstellung“)
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 205
Integer-Datentypen in C und Java
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
C:
I Zahlenbereiche definiert in Headerdatei
/usr/include/limits.h
LONG_MIN, LONG_MAX, ULONG_MAX etc.
I Zweierkomplement (signed), Ganzzahl (unsigned)
I die Werte sind plattformabhängig (!)
Java:
I 16-bit, 32-bit, 64-bit Zweierkomplementzahlen
I Wrapper-Klassen Short, Integer, Long
Short. MAX_VALUE = 32767
Integer . MIN_VALUE = -2147483648
Integer . MAX_VALUE = 2147483647
Long. MIN_VALUE = -9223372036854775808 L
...
I Werte sind für die Sprache fest definiert
A. Mäder 206
Addition im Dualsystem
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
1011 0011 = 179
+ 0011 1001 = 57
Ü 11 11 11
1110 1100 = 236
A. Mäder 207
unsigned Addition: Visualisierung
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
Integer addition
32
28
24
20
16
14
12 12
10
8
8
4
6
0 4
0
2 2
4
6
8 0
10
12
14 [BO15]
A. Mäder 208
unsigned Addition: Visualisierung (cont.)
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
Overflow
16
14 Normal
12
10
8
14
6 12
4 10
8
2
6
0 4
0
2 2
4
6
8 0
10
12
14 [BO15]
A. Mäder 209
unsigned Addition: Überlauf
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
x +y
2w+1 Overflow
x +u y
2w
0
I Wortbreite ist w
I Zahlenbereich der Operanden x, y ist 0 : : : (2w − 1)
I Zahlenbereich des Resultats s ist 0 : : : (2w +1 − 2)
I Werte s ≥ 2w werden in den Bereich 0 : : : 2w − 1 abgebildet
A. Mäder 210
Subtraktion im Dualsystem
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
1011 0011 = 179
- 0011 1001 = 57
Ü 1111
111 1010 = 122
A. Mäder 211
Subtraktion mit b-Komplement
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
Kb (z) + z = b n =0
x − y = x + Kb (y )
x − y = x + Kb−1 (y ) + 1
A. Mäder 212
signed Addition: Visualisierung 2-Komplement
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
Normal
Negative
overflow Positive
8 overflow
6
0
6
-2 4
-4 2
0
-6
-2
-8 -4
-8
-6 -6
-4
-2
0 -8
2
4
6 [BO15]
x +y
+2w Positive overflow
Case 4 x +t y
+2w –1 +2w –1
Case 3
0 0
Case 2
–2w –1 –2w –1
Case 1
Negative overflow
–2w
I Wortbreite des Resultats ist w : Bereich −2w −1 : : : (2w −1 − 1)
I Überlauf positiv wenn Resultat ≥ 2w −1 : Summe negativ
–"– negativ –"– < −2w −1 : Summe positiv
A. Mäder 214
Überlauf: Erkennung
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
I Java-Codebeispiel
int a, b, sum; // operands and sum
boolean ovf; // ovf flag indicates overflow
sum = a + b;
ovf = ((a < 0) == (b < 0)) && ((a < 0) != (sum < 0));
A. Mäder 215
Subtraktion mit Einer- und Zweierkomplement
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 216
Veranschaulichung: Zahlenkreis
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
1110
-1 0 1
0010 1110 0 1
0010 1110
-7 0 1
0010
-2 2 -1 2 -6 2
1101 0011 1101 0011 1101 0011
-3 3 -2 3 -5 3
1100 -4 4 0100 1100 -3 4 0100 1100 -4 4 0100
-5 5 -4 5 -3 5
1011 0101 1011 0101 1011 0101
-6 6 -5 6 -2 6
1010
-7 -8 7 0110 1010
-6 -7 7 0110 1010
-1 -0 7 0110
A. Mäder 217
Zahlenkreis: Addition, Subtraktion
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
2-Kompl. 0010+0100=0110
0100+0101=1001
0110-0010=0100
0000
1111 0001
1110
-1 0 1
0010
-2 2
1101 0011
-3 3
1100 -4 4 0100
-5 5
1011 0101
-6 6
1010
-7 -8 7 0110
1001 0111
1000 0010 1110
0100
0101
0110
A. Mäder 218
Zahlenkreis: Addition, Subtraktion (cont.)
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
2-Kompl. 1110+1101=1011
1110+1001=0111
1110+0110=0100
0000
1111 0001
1110
-1 0 1
0010
-2 2
1101 0011
-3 3
1100 -4 4 0100
-5 5
1011 0101
-6 6
1010
-7 -8 7 0110
1001 0111
1000 1110
1101
1001
0110
A. Mäder 219
Zahlenkreis: Addition, Subtraktion (cont.)
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
1-Kompl. 0010+0100=0110
0100+0101=1001
0110+1101+1=0100
0000
1111 0001
1110 0 1
0010
-1 2
1101 0011
-2 3
1100 -3 4 0100
-4 5
1011 0101
-5 6
1010
-6 -7 7 0110
1001 0111
1000 0010 1101
0100
0101
0110
A. Mäder 220
Zahlenkreis: Addition, Subtraktion (cont.)
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
1-Kompl. 1101+1100+1=1010
1101+1000=0101
1101+0110+1=0100
0000
1111 0001
1110 0 1
0010
-1 2
1101 0011
-2 3
1100 -3 4 0100
-4 5
1011 0101
-5 6
1010
-6 -7 7 0110
1001 0111
1000 1101
1100
1000
0110
A. Mäder 221
in C: unsigned Zahlen
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 222
in C: Casting-Regeln
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 223
in C: unsigned / signed Interpretation
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
2w
2w–1 +2w–1
Unsigned
Two’s
0 0 complement
–2w–1
2w
Two’s
complement 0 0
–2w–1
A. Mäder 224
in C: Vorsicht bei Typumwandlung
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
I Arithmetische Ausdrücke:
bei gemischten Operanden: Auswertung als unsigned
I
A. Mäder 225
Sign-Extension
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
x 0 = xw −1 ; : : : xw −1 ; xw −1 ; xw −2 ; : : : x0
I Zahlenbeispiele
0110 4-bit signed: +6
0000 0110 8-bit signed: +6
0000 0000 0000 0110 16-bit signed: +6
A. Mäder 227
Ariane-5 Absturz
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 228
Ariane-5 Absturz (cont.)
4.1 Arithmetik - Addition und Subtraktion 64-040 Rechnerstrukturen und Betriebssysteme
I [Link]
A. Mäder 229
Multiplikation im Dualsystem
4.2 Arithmetik - Multiplikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 230
Multiplikation im Dualsystem (cont.)
4.2 Arithmetik - Multiplikation 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
10110011 · 1101 = 179 · 13 = 2327
10110011 1 = 1001 0001 0111
10110011 1 = 0x917
00000000 0
10110011 1
Ü 11101111
100100010111
A. Mäder 231
unsigned Multiplikation
4.2 Arithmetik - Multiplikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 232
signed Multiplikation 2-Komplement
4.2 Arithmetik - Multiplikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 233
Java Puzzlers No. 3
J. Bloch, N. Gafter: Java Puzzlers: Traps, Pitfalls, and Corner Cases. Addison-Wesley, 2005
4.2 Arithmetik - Multiplikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 234
Division im Dualsystem
4.3 Arithmetik - Division 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 235
Division im Dualsystem (cont.)
4.3 Arithmetik - Division 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
10010 =310 = 110 01002 =112 = 10 00012
1100100 / 11 = 0100001
1 0
11 1
−11
0 0
0 0
1 0
10 0
100 1
−11
1 1 (Rest)
A. Mäder 236
Division im Dualsystem (cont.)
4.3 Arithmetik - Division 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 237
Höhere mathematische Funktionen
4.4 Arithmetik - Höhere Funktionen 64-040 Rechnerstrukturen und Betriebssysteme
√
Berechnung von x, log x, exp x, sin x . . . ?
A. Mäder 238
Reziprokwert: Iterative Berechnung von 1=x
4.4 Arithmetik - Höhere Funktionen 64-040 Rechnerstrukturen und Betriebssysteme
yi+1 = yi · (2 − x · yi )
I Beispiel x = 3, y0 = 0; 5:
y1 = 0; 5 · (2 − 3 · 0; 5) = 0; 25
y2 = 0; 25 · (2 − 3 · 0; 25) = 0; 3125
y3 = 0; 3125 · (2 − 3 · 0; 3125) = 0; 33203125
y4 = 0; 3332824
y5 = 0; 3333333332557231
y6 = 0; 3333333333333333
A. Mäder 239
√
Quadratwurzel: Heron-Verfahren für x
Babylonisches Wurzelziehen
4.4 Arithmetik - Höhere Funktionen 64-040 Rechnerstrukturen und Betriebssysteme
√
I Sukzessive Approximation von y = x gemäß
yn + x=yn
yn+1 =
2
I quadratische Konvergenz in der Nähe der Lösung
I Anzahl der gültigen Stellen verdoppelt sich mit jedem Schritt
A. Mäder 240
Informationstreue
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
Beispiele:
I Gilt x 2 ≥ 0?
I float: ja
I signed integer: nein
I Gilt (x + y ) + z = x + (y + z)?
I integer: ja
I float: nein
1.0E20 + (-1.0E20 + 3.14) = 0
A. Mäder 241
Festkomma Addition
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
unsigned Arithmetik
I Wortbreite auf w begrenzt
I kommutative Gruppe / Abel’sche Gruppe
I Abgeschlossenheit 0 ≤ a ⊕uw b ≤ 2w − 1
I Kommutativgesetz a ⊕uw b = b ⊕uw a
I Assoziativgesetz a ⊕uw (b ⊕uw c) = (a ⊕uw b) ⊕uw c
I neutrales Element a ⊕uw 0 = a
I Inverses a ⊕uw a = 0; a = 2w − a
A. Mäder 242
Festkomma Addition (cont.)
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 243
Festkomma Multiplikation
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
unsigned Arithmetik
I Wortbreite auf w begrenzt
I Modulo-Arithmetik a ⊗uw b = (a · b) mod 2w
I ⊗uw und ⊕uw bilden einen kommutativen Ring
I ⊕uw ist eine kommutative Gruppe
I Abgeschlossenheit 0 ≤ a ⊗uw b ≤ 2w − 1
I Kommutativgesetz a ⊗uw b = b ⊗uw a
I Assoziativgesetz a ⊗uw (b ⊗uw c) = (a ⊗uw b) ⊗uw c
I neutrales Element a ⊗uw 1 = a
I Distributivgesetz a ⊗uw (b ⊕uw c) = (a ⊗uw b) ⊕uw (a ⊗uw c)
A. Mäder 244
Festkomma Multiplikation (cont.)
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
signed Arithmetik
I signed und unsigned Multiplikation sind auf Bit-Ebene identisch
I ...
isomorphe Algebren
I unsigned Addition und Multiplikation; Wortbreite w
I signed Addition und Multiplikation; Wortbreite w 2-Kompl.
I isomorph zum Ring der ganzen Zahlen modulo 2w
A. Mäder 245
Gleitkomma Addition
Vergleich mit kommutativer Gruppe
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
I Abgeschlossen? Ja
I Kommutativ? Ja
I Assoziativ? Nein
(Überlauf, Rundungsfehler)
I Null ist neutrales Element? Ja
I Inverses Element existiert? Fast
(außer für NaN und Infinity)
I Monotonie? a ≥ b −→ (a + c) ≥ (b + c) Fast
(außer für NaN und Infinity)
A. Mäder 246
Gleitkomma Multiplikation
Vergleich mit kommutativem Ring
4.5 Arithmetik - Mathematische Eigenschaften 64-040 Rechnerstrukturen und Betriebssysteme
I Abgeschlossen? Ja
(aber Infinity oder NaN möglich)
I Kommutativ? Ja
I Assozativ? Nein
(Überlauf, Rundungsfehler)
I Eins ist neutrales Element? Ja
I Distributivgesetz? Nein
I Monotonie? a ≥ b; c ≥ 0 −→ (a · c) ≥ (b · c) Fast
(außer für NaN und Infinity)
A. Mäder 247
Literatur
4.6 Arithmetik - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 248
Literatur (cont.)
4.6 Arithmetik - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 249
Gliederung
5 Zeichen und Text 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
Ad-Hoc Codierungen
ASCII und ISO-8859
Unicode
Tipps und Tricks
Base64-Codierung
Literatur
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
A. Mäder 250
Gliederung (cont.)
5 Zeichen und Text 64-040 Rechnerstrukturen und Betriebssysteme
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 251
Wiederholung: Zeichen
5 Zeichen und Text 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 253
Flaggen-Signale
5.1 Zeichen und Text - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
Q R S T U V W X
[Link]/wiki/Winkeralphabet
A. Mäder 254
Flaggen-Alphabet
5.1 Zeichen und Text - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A B C D E F G
H I J K L M N
O P Q R S T U
V W X Y Z
[Link]/wiki/Flaggenalphabet
A. Mäder 255
Braille: Blindenschrift
5.1 Zeichen und Text - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A/1 B/2 C/3 D/4 E/5 F/6 G/7 H/8 I/9 J/0
A. Mäder 256
Morse-Code
5.1 Zeichen und Text - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 257
Morse-Code (cont.)
5.1 Zeichen und Text - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
I Codierung
I Häufigkeit der Buchstaben = 1 / Länge des Codewortes
I Effizienz: kürzere Codeworte
I Darstellung als Codebaum
A. Mäder 258
Morse-Code: Baumdarstellung (Ausschnitt)
5.1 Zeichen und Text - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 259
ASCII
American Standard Code for Information Interchange
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 260
ASCII: Codetabelle
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
Code …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F
0… NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1… DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2… SP ! " # $ % & ' ( ) * + , - . /
3… 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4… @ A B C D E F G H I J K L M N O
5… P Q R S T U V W X Y Z [ \ ] ^ _
6… ` a b c d e f g h i j k l m n o
7… p q r s t u v w x y z { | } ~ DEL
A. Mäder 261
ISO-8859 Familie
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
I Latin-1: Westeuropäisch
I Latin-2: Mitteleuropäisch
I Latin-3: Südeuropäisch
I Latin-4: Baltisch
I Latin-5: Kyrillisch
I Latin-6: Arabisch
I Latin-7: Griechisch
I usw.
A. Mäder 262
ISO-8859-1: Codetabelle (1)
Erweiterung von ASCII für westeuropäische Sprachen
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
Code …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F
0…
nicht belegt
1…
2… SP ! " # $ % & ' ( ) * + , - . /
3… 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4… @ A B C D E F G H I J K L M N O
5… P Q R S T U V W X Y Z [ \ ] ^ _
6… ` a b c d e f g h i j k l m n o
7… p q r s t u v w x y z { | } ~
8…
nicht belegt
9…
A… NBSP ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ SHY ® ¯
B… ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿
C… À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
D… Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
E… à á â ã ä å æ ç è é ê ë ì í î ï
F… ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
A. Mäder 263
ISO-8859-1: Codetabelle (2)
Sonderzeichen gemeinsam für alle 8859 Varianten
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
Code …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F
0… NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1… DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2…
3…
4… wie ISO/IEC 8859, Windows-125X und US-ASCII
5…
6…
7… DEL
8… PAD HOP BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3
9… DCS PU1 PU2 STS CCH MW SPA EPA SOS SGCI SCI CSI ST OSC PM APC
A…
B…
C…
wie ISO/IEC 8859-1 und Windows-1252
D…
E…
F…
A. Mäder 264
ISO-8859-2
Erweiterung von ASCII für slawische Sprachen
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
Code …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F
0… NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1… DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2… SP ! " # $ % & ' ( ) * + , - . /
3… 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4… @ A B C D E F G H I J K L M N O
5… P Q R S T U V W X Y Z [ \ ] ^ _
6… ` a b c d e f g h i j k l m n o
7… p q r s t u v w x y z { | } ~ DEL
8… PAD HOP BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3
9… DCS PU1 PU2 STS CCH MW SPA EPA SOS SGCI SCI CSI ST OSC PM APC
A… NBSP Ą ˘ Ł ¤ Ľ Ś § ¨ Š Ş Ť Ź SHY Ž Ż
B… ° ą ˛ ł ´ ľ ś ˇ ¸ š ş ť ź ˝ ž ż
C… Ŕ Á Â Ă Ä Ĺ Ć Ç Č É Ę Ë Ě Í Î Ď
D… Đ Ń Ň Ó Ô Ő Ö × Ř Ů Ú Ű Ü Ý Ţ ß
E… ŕ á â ă ä ĺ ć ç č é ę ë ě í î ď
F… đ ń ň ó ô ő ö ÷ ř ů ú ű ü ý ţ ˙
A. Mäder 265
ISO-8859-15
Modifizierte ISO-8859-1 mit ¤ (0xA4)
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
Code …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F
0… NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI
1… DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2… SP ! " # $ % & ' ( ) * + , - . /
3… 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4… @ A B C D E F G H I J K L M N O
5… P Q R S T U V W X Y Z [ \ ] ^ _
6… ` a b c d e f g h i j k l m n o
7… p q r s t u v w x y z { | } ~ DEL
8… PAD HOP BPH NBH IND NEL SSA ESA HTS HTJ VTS PLD PLU RI SS2 SS3
9… DCS PU1 PU2 STS CCH MW SPA EPA SOS SGCI SCI CSI ST OSC PM APC
A… NBSP ¡ ¢ £ € ¥ Š § š © ª « ¬ SHY ® ¯
B… ° ± ² ³ Ž µ ¶ · ž ¹ º » Œ œ Ÿ ¿
C… À Á Â Ã Ä Å Æ Ç È É Ê Ë Ì Í Î Ï
D… Ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ü Ý Þ ß
E… à á â ã ä å æ ç è é ê ë ì í î ï
F… ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ
A. Mäder 266
Microsoft: Codepages 437, 850, 1252
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
I [Link]
I verbesserte Version: Codepage 850, 858 (¤-Symbol an 0xD5)
I Codepage 1252 entspricht (weitgehend) ISO-8859-1
I Sonderzeichen liegen an anderen Positionen als bei ISO-8859
A. Mäder 267
Microsoft: Codepage 850
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
Code …0 …1 …2 …3 …4 …5 …6 …7 …8 …9 …A …B …C …D …E …F
0… ☺ ☻ ♥ ♦ ♣ ♠ • ◘ ○ ◙ ♂ ♀ ♪ ♫ ☼
1… ► ◄ ↕ ‼ ¶ § ▬ ↨ ↑ ↓ → ← ∟ ↔ ▲ ▼
2… ! " # $ % & ' ( ) * + , - . /
3… 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4… @ A B C D E F G H I J K L M N O
5… P Q R S T U V W X Y Z [ \ ] ^ _
6… ` a b c d e f g h i j k l m n o
7… p q r s t u v w x y z { | } ~ ⌂
8… Ç ü é â ä à å ç ê ë è ï î ì Ä Å
9… É æ Æ ô ö ò û ù ÿ Ö Ü ø £ Ø × ƒ
A… á í ó ú ñ Ñ ª º ¿ ® ¬ ½ ¼ ¡ « »
B… ░ ▒ ▓ │ ┤ Á Â À © ╣ ║ ╗ ╝ ¢ ¥ ┐
C… └ ┴ ┬ ├ ─ ┼ ã Ã ╚ ╔ ╩ ╦ ╠ ═ ╬ ¤
D… ð Ð Ê Ë È ı Í Î Ï ┘ ┌ █ ▄ ¦ Ì ▀
E… Ó ß Ô Ò õ Õ µ þ Þ Ú Û Ù ý Ý ¯ ´
F… ± ‗ ¾ ¶ § ÷ ¸ ° ¨ · ¹ ³ ² ■
A. Mäder 268
Austausch von Texten?
5.2 Zeichen und Text - ASCII und ISO-8859 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 269
Unicode: Motivation
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 270
Unicode: Versionen und History
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 272
Unicode: in Webseiten (HTML)
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
<html >
<head >
<META http -equiv="Content -Type" content ="text/html;
charset =utf -8">
<title >UTF -8 Sampler </title >
<META ...
</head >
...
A. Mäder 273
Unicode: Demo
[Link]
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
1. English: The quick brown fox jumps over the lazy dog.
2. Jamaican: Chruu, a kwik di kwik brong fox a jomp huova di liezi daag de, yu no siit?
3. Irish: "An ḃfuil do ċroí ag bualaḋ ó ḟai�os an ġrá a ṁeall lena ṗóg éada ó ṡlí do leasa ṫú?" "D'ḟuascail Íosa Úrṁac na hÓiġe Beannaiṫe pór Éava agus Áḋaiṁ."
4. Dutch: Pa's wijze lynx bezag vroom het fikse aquaduct.
5. German: Falsches Üben von Xylophonmusik quält jeden größeren Zwerg. (1)
6. German: Im finſteren Jagdſchloß am offenen Felsquellwaſſer patzte der affig-fla�erha�e kauzig-höfliche Bäcker über ſeinem verſi�en kniffligen C-Xylophon. (2)
7. Norwegian: Blåbærsyltetøy ("blueberry jam", includes every extra le�er used in Norwegian).
8. Swedish: Flygande bäckasiner söka strax hwila på mjuka tuvor.
9. Icelandic: Sævör grét áðan því úlpan var ónýt.
10. Finnish: (5) Törkylempijävongahdus (This is a perfect pangram, every le�er appears only once. Transla�ng it is an art on its own, but I'll say "rude lover's yelp". :-D)
11. Finnish: (5) Albert os� fago�n ja töräy� puhkuvan melodian. (Albert bought a bassoon and hooted an impressive melody.)
12. Finnish: (5) On sangen hauskaa, e�ä polkupyörä on maanteiden jokapäiväinen ilmiö. (It's pleasantly amusing, that the bicycle is an everyday sight on the roads.)
13. Polish: Pchnąć w tę łódź jeża lub osiem skrzyń fig.
14. Czech: Příliš žluťoučký kůň úpěl ďábelské ódy.
15. Slovak: Starý kôň na hŕbe kníh žuje �ško povädnuté ruže, na stĺpe sa ďateľ učí kvákať novú ódu o živote.
16. Slovenian: Šerif bo za domačo vajo spet kuhal žgance.
17. Greek (monotonic): ξεσκεπάζω την ψυχοφθόρα βδελυγμία
18. Greek (polytonic): ξεσκεπάζω τὴν ψυχοφθόρα βδελυγμία
19. Russian: Съешь же ещё этих мягких французских булок да выпей чаю.
20. Russian: В чащах юга жил-был цитрус? Да, но фальшивый экземпляр! ёъ.
21. Bulgarian: Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
22. Sami (Northern): Vuol Ruoŧa geđggiid leat máŋga luosa ja čuovžža.
23. Hungarian: Árvíztűrő tükörfúrógép.
24. Spanish: El pingüino Wenceslao hizo kilómetros bajo exhaus�va lluvia y frío, añoraba a su querido cachorro.
25. Spanish: Volé cigüeña que jamás cruzó París, exhibe flor de kiwi y atún.
26. Portuguese: O próximo vôo à noite sobre o Atlân�co, põe freqüentemente o único médico. (3)
27. French: Les naïfs ægithales hâ�fs pondant à Noël où il gèle sont sûrs d'être déçus en voyant leurs drôles d'œufs abîmés.
28. Esperanto: Eĥoŝanĝo ĉiuĵaŭde.
29. Hebrew: .זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן
30. Japanese (Hiragana):
いろはにほへど ちりぬるを
わがよたれぞ つねならむ
うゐのおくやま けふこえて
あさきゆめみじ ゑひもせず (4)
A. Mäder 274
Unicode: Demo (cont.)
[Link]
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
Šota Rustaveli's Vepxis Tqaosani, ;Th, The Knight in the Tiger's Skin (Georgian):
¾³¬¸¯¹° À¬³¬«¸¬, ´»¯» ±²¨ «¨³Æ¹´¨¹ ¹µ¼²°¹¨ À¸µ³¨¹¨, Â¬ÂÆ²¹, Ä¿¨²¹¨ «¨ ³°Ä¨¹¨,
Ȩ¬¸¯¨ ¯¨´¨ ³¸µ³¨¹¨; ³µ³Â´¬¹ ¼¸¯¬´° «¨ ¨¾¼¸°´«¬, ³°ÈÆ«¬ ³¨¹ Á¬³¹¨ ´«µ³¨¹¨, «¾°¹°¯
«¨ ¾¨³°¯ ÈÆ¬«°«¬ ³®°¹¨ ¬²¨¯¨ ±¸¯µ³¨¨¹¨.
A. Mäder 275
Unicode: Latin-Zeichen
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 276
Unicode: Mathematische Symbole und Operatoren
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
I Pfeile [Link]/charts/PDF/[Link]
I Operatoren [Link]/charts/PDF/[Link]
I ...
I Dingbats [Link]/charts/PDF/[Link]
A. Mäder 277
Unicode: Asiatische Sprachen
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 278
Unicode: Java2D Fontviewer
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 279
Unicode: Repräsentation?
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 280
UTF-8
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
[Link]
A. Mäder 281
UTF-8: Algorithmus
5.3 Zeichen und Text - Unicode 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 282
Sprach-Einstellungen: Locale
5.4 Zeichen und Text - Tipps und Tricks 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 283
dos2unix, unix2dos
5.4 Zeichen und Text - Tipps und Tricks 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 284
iconv
5.4 Zeichen und Text - Tipps und Tricks 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
iconv -f iso-8859-1 -t utf-8 -o [Link] [Link]
A. Mäder 285
Base64-Codierung
5.5 Zeichen und Text - Base64-Codierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 286
Base64-Codierung: Prinzip
5.5 Zeichen und Text - Base64-Codierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 287
Base64-Codierung: Prinzip (cont.)
5.5 Zeichen und Text - Base64-Codierung 64-040 Rechnerstrukturen und Betriebssysteme
Text content M a n
ASCII 77 97 110
Bit pattern 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 1 1 0 1 1 1 0
Index 19 22 5 46
Base64-encoded T W F u
A. Mäder 288
Base64-Codierung: Java
5.5 Zeichen und Text - Base64-Codierung 64-040 Rechnerstrukturen und Betriebssysteme
[Link].Base64InputStream
[Link].Base64OutputStream
I JAXB (Java Architecture for XML Binding)
in [Link]
parseBase64Binary, printBase64Binary
Beispiel in Java ist auch eine Insel [Ull18]
[Link]/javainsel/04_008.html#u4.7.4
I ...
A. Mäder 289
Literatur
5.6 Zeichen und Text - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 290
Gliederung
6 Logische Operationen 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
Boole’sche Algebra
Boole’sche Operationen
Bitweise logische Operationen
Schiebeoperationen
Anwendungsbeispiele
Literatur
7. Codierung
8. Schaltfunktionen
A. Mäder 291
Gliederung (cont.)
6 Logische Operationen 64-040 Rechnerstrukturen und Betriebssysteme
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 292
Nutzen einer (abstrakten) Algebra?!
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
Spezifiziert durch
I die Art der Elemente (z.B. ganze Zahlen, Aussagen usw.)
I die Verknüpfungen (z.B. Addition, Multiplikation)
I zentrale Elemente (z.B. Null-, Eins-, inverse Elemente)
A. Mäder 293
Boole’sche Algebra
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 294
Grundverknüpfungen
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 295
Anzahl der binären Funktionen
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 296
Anzahl der binären Funktionen (cont.)
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
x= 0 1 0 1
y= 0 0 1 1 Bezeichnung Notation alternativ Java / C
0 0 0 0 Nullfunktion 0 0
0 0 0 1 AND x ∩y x ∧y x&&y
0 0 1 0 Inhibition x <y x<y
0 0 1 1 Identität y y y
0 1 0 0 Inhibition x >y x>y
0 1 0 1 Identität x x x
0 1 1 0 XOR x ⊕y x 6= y x!=y
0 1 1 1 OR x ∪y x ∨y x||y
1 0 0 0 NOR ¬(x ∪ y ) x ∨y !(x||y)
1 0 0 1 Äquivalenz ¬(x ⊕ y ) x =y x==y
1 0 1 0 NICHT x ¬x x !x
1 0 1 1 Implikation x ≤y x →y x<=y
1 1 0 0 NICHT y ¬y y !y
1 1 0 1 Implikation x ≥y x ←y x>=y
1 1 1 0 NAND ¬(x ∩ y ) x ∧y !(x&&y)
1 1 1 1 Einsfunktion 1 1
A. Mäder 297
Boole’sche Algebra - formale Definition
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 298
Rechenregeln: Ring / Algebra
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
¬(a ∨ b) = ¬a ∧ ¬b ¬(a ∧ b) = ¬a ∨ ¬b
a a
b b
a b a b
Verwendung
I bei der Minimierung logischer Ausdrücke
I beim Entwurf von Schaltungen
I siehe Kapitel 8 Schaltfunktionen und 9 Schaltnetze
A. Mäder 300
XOR: Exklusiv-Oder / Antivalenz
6.1 Logische Operationen - Boole’sche Algebra 64-040 Rechnerstrukturen und Betriebssysteme
I a ⊕ b = (¬a ∧ b) ∨ (a ∧ ¬b)
genau einer von den Termen a und b ist wahr
I a ⊕ b = (a ∨ b) ∧ ¬(a ∧ b)
entweder a ist wahr, oder b ist wahr, aber nicht beide
gleichzeitig
I a⊕a = 0
A. Mäder 301
Logische Operationen in Java und C
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
I Vergleichsoperationen
I Logische Grundoperationen
I Bitweise logische Operationen
= parallele Berechnung auf Integer-Datentypen
I Auswertungsreihenfolge
I Operatorprioritäten
I Auswertung von links nach rechts
I (optionale) Klammerung
A. Mäder 302
Vergleichsoperationen
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 303
Logische Operationen in C
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 304
Logische Operationen in C (cont.)
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
I (a > b) || ((b != c) && (b <= d))
I Ausdruck Wert
!0x41 0x00
!0x00 0x01
!!0x00 0x00
0x69 && 0x55 0x01
0x69 || 0x55 0x01
A. Mäder 305
Logische Operationen in C: Logisch vs. Bitweise
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 306
Logische Operationen in C: verkürzte Auswertung
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
Ternärer Operator
I hconditioni ? htrue-expressioni : hfalse-expressioni
I Beispiel: (x < 0) ? -x : x Absolutwert von x
A. Mäder 307
Logische Operationen in Java
6.2 Logische Operationen - Boole’sche Operationen 64-040 Rechnerstrukturen und Betriebssysteme
Ternärer Operator
I hconditioni ? htrue-expressioni : hfalse-expressioni
I Beispiel: (x < 0) ? -x : x Absolutwert von x
A. Mäder 308
Bitweise logische Operationen
6.3 Logische Operationen - Bitweise logische Operationen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 309
Bitweise logische Operationen (cont.)
6.3 Logische Operationen - Bitweise logische Operationen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 310
Bitweise logische Operationen: Beispiel
6.3 Logische Operationen - Bitweise logische Operationen 64-040 Rechnerstrukturen und Betriebssysteme
x = 0010 1110
y = 1011 0011
A. Mäder 311
Schiebeoperationen
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
I fünf Varianten
Shift-Left shl
Logical Shift-Right srl
Arithmetic Shift-Right sra
Rotate-Left rol
Rotate-Right ror
A. Mäder 312
Shift-Left (shl)
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1
0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0
A. Mäder 313
Logical Shift-Right (srl)
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1
0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1
A. Mäder 314
Arithmetic Shift-Right (sra)
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1
1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1
A. Mäder 315
Arithmetic Shift-Right: Beispiel
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1
1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 0
A. Mäder 316
Arithmetic Shift-Right: Division durch Zweierpotenzen?
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 317
Rotate-Left (rol)
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1
0 0 1 0 0 0 0 1 1 0 1 0 0 1 1 0
A. Mäder 318
Rotate Right (ror)
6.4 Logische Operationen - Schiebeoperationen 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 1
1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1
A. Mäder 319
Shifts statt Integer-Multiplikation
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 320
Beispiel: bit-set, bit-clear
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 321
Beispiel: Byte-Swapping network to/from host
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
Linux: /usr/include/netinet/in.h
...
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define ntohl(x) __bswap_32 (x)
# define ntohs(x) __bswap_16 (x)
# define htonl(x) __bswap_32 (x)
# define htons(x) __bswap_16 (x)
# endif
...
A. Mäder 322
Beispiel: RGB-Format für Farbbilder
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
I [Link](TYPE_INT_ARGB)
A. Mäder 323
Beispiel: RGB-Rotfilter
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 324
Beispiel: RGB-Graufilter
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 325
Beispiel: Bitcount – while-Schleife
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
while( x != 0 ) {
count += (x & 0 x00000001 ); // unterstes bit addieren
x = x >>> 1; // 1-bit rechts - schieben
}
return count;
}
A. Mäder 326
Beispiel: Bitcount – parallel, tree
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
I [Link]()
public static int bitCount (int i) {
// HD , Figure 5-2
i = i - ((i >>> 1) & 0 x55555555 );
i = (i & 0 x33333333 ) + ((i >>> 2) & 0 x33333333 );
i = (i + (i >>> 4)) & 0 x0f0f0f0f ;
i = i + (i >>> 8);
i = i + (i >>> 16);
return i & 0x3f;
}
A. Mäder 327
Beispiel: Bitcount – parallel, tree (cont.)
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 328
Tipps & Tricks: Rightmost bits
D. E. Knuth: The Art of Computer Programming, Vol 4.1 [Knu09]
6.5 Logische Operationen - Anwendungsbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 329
Literatur
6.6 Logische Operationen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 330
Literatur (cont.)
6.6 Logische Operationen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 331
Gliederung
7 Codierung 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
Grundbegriffe
Ad-Hoc Codierungen
Einschrittige Codes
Quellencodierung
Symbolhäufigkeiten
Informationstheorie
Entropie
A. Mäder 332
Gliederung (cont.)
7 Codierung 64-040 Rechnerstrukturen und Betriebssysteme
Kanalcodierung
Fehlererkennende Codes
Zyklische Codes
Praxisbeispiele
Literatur
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 333
Definition: Codierung
7.1 Codierung - Grundbegriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 334
Code, Codewörter
7.1 Codierung - Grundbegriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 335
Gründe für den Einsatz von Codes
7.1 Codierung - Grundbegriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 336
Wichtige Aspekte
7.1 Codierung - Grundbegriffe 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 337
Darstellung von Codes
7.1 Codierung - Grundbegriffe 64-040 Rechnerstrukturen und Betriebssysteme
I Wertetabellen
I jede Zeile enthält das Urbild (zu codierende Symbol) und das
zugehörige Codewort
I sortiert, um das Auffinden eines Codeworts zu erleichtern
I technische Realisierung durch Ablegen der Wertetabelle im
Speicher, Zugriff über Adressierung anhand des Urbilds
I Codebäume
I Anordnung der Symbole als Baum
I die zu codierenden Symbole als Blätter
I die Zeichen an den Kanten auf dem Weg von der Wurzel zum
Blatt bilden das Codewort
I Logische Gleichungen
I Algebraische Ausdrücke
A. Mäder 338
Codierung von Text
7.2 Codierung - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 339
Codierungen für Dezimalziffern
7.2 Codierung - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 340
Codierungen für Dezimalziffern (cont.)
7.2 Codierung - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 341
Begriffe für Binärcodes
7.2 Codierung - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 342
Dualcode
7.2 Codierung - Ad-Hoc Codierungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 343
Einschrittige Codes
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 344
Einschrittige Codes: Matlab-Demo
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
I maximaler Ablesefehler
I 2n−1 beim Dualcode
I 1 beim einschrittigen Code
A. Mäder 345
Ablesen des Wertes aus Dualcode
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 346
Ablesen des Wertes aus einschrittigem Code
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 347
Gray-Code: Prinzip eines Winkeldrehgebers
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 348
Gray-Code: mehrstufiger Drehgeber
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 349
Gray-Code: 5-bit Codierscheibe
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
[Link]/technik/mechatronik/[Link]
A. Mäder 350
Gray-Code: 10-bit Codierscheibe
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 351
Einschrittiger Code: rekursive Konstruktion
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
{ 0, 1 }
{ 00, 01, 11, 10 }
{ 000, 001, 011, 010, 110, 111, 101, 100 }
...
⇒ Gray-Code
A. Mäder 352
Karnaugh-Veitch Diagramm
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x3 x2 00 01 11 10 x3 x2 00 01 11 10
00 0 1 3 2 00 0000 0001 0011 0010
A. Mäder 353
Einschrittiger Code: KV-Diagramm
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x3 x2 00 01 11 10 x3 x2 00 01 11 10
00 0 1 3 2 00 0 1 3 2
01 4 5 7 6 01 4 5 7 6
11 12 13 15 14 11 12 13 15 14
10 8 9 11 10 10 8 9 11 10
I Pfade
0,1,3,2,6,7,5,13,15,14,10,11,9,8,12,4 1,3,7,6,14,15,11,9,13,12,4,5
I jeder Pfad entspricht einem einschrittigen Code
I geschlossener Pfad: zyklisch einschrittiger Code
A. Mäder 354
Einschrittiger Code: KV-Diagramm (cont.)
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x3 x2 00 01 11 10 x3 x2 00 01 11 10
00 0 1 3 2 00 0 1 3 2
01 4 5 7 6 01 4 5 7 6
11 12 13 15 14 11 12 13 15 14
10 8 9 11 10 10 8 9 11 10
I Pfade
4,5,13,15,7,6,14,10,8,12 2,6,14,10
linke und rechte Spalte unterscheiden sich um 1 Bit
I
obere und untere Zeile unterscheiden sich um 1 Bit
⇒ KV-Diagramm als „außen zusammengeklebt“ denken
⇒ Pfade können auch „außen herum“ geführt werden
A. Mäder 355
Gray-Code: Umwandlung in/von Dualcode
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
I gray(x) = x ^ (x >>> 1)
A. Mäder 356
Gray-Code: Umwandlung in/von Dualcode (cont.)
7.3 Codierung - Einschrittige Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 357
Optimalcodes: Codes variabler Länge
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 358
Fano-Bedingung
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 359
Fano-Bedingung: Beispiele
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 360
Morse-Code
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 361
Morse-Code (cont.)
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
I Codierung
I Häufigkeit der Buchstaben = 1 / Länge des Codewortes
I Effizienz: kürzere Codeworte
I Darstellung als Codebaum
A. Mäder 362
Morse-Code: Codebaum (Ausschnitt)
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 363
Morse-Code: Umschlüsselung
7.4 Codierung - Quellencodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 364
Codierung nach Fano (Shannon-Fano Codierung)
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 365
Codierung nach Fano: Beispiel
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
mittlere Codewortlänge L
I L= 0:45 · 1 + 0:3 · 2 + 0:15 · 3 + 0:1 · 3 = 1:8
I zum Vergleich: Blockcode mit 2 Bits benötigt L= 2
A. Mäder 366
Codierung nach Fano: Deutsche Großbuchstaben
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 367
Codierung nach Huffman
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 368
Codierung nach Huffman: Beispiel
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 369
Bildung eines Huffman-Baums
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
I Alphabet = {E; I; N; S; D; L; R}
I relative Häufigkeiten
E = 18; I = 10; N = 6; S = 7; D = 2; L = 5; R = 4
A. Mäder 370
Bildung eines Huffman-Baums (cont.)
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
D R L N S I E
2 4 5 6 7 10 18
6 21
D R L N S I E I 11 13 E
2 4 5 6 7 10 18 10 18
11 31
L N 6 S I E 13 E 21
5 6 7 10 18 18
13 52
6 S I 11 E 21 31
7 10 18
A. Mäder 371
Bildung eines Huffman-Baums (cont.)
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
52
0 1
21 31
1 0 1
0
I 11 13
E I 00
10
0 1 0 1 18
L 010
L N 6 N 011
S
5 6 0 1 D 1000
7
R 1001
S 101
D R
E 11
2 4
1001 00 11 101 11
R I E S E
A. Mäder 372
Codierung nach Huffman: Deutsche Großbuchstaben
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
0 1
E N
R I S T D
H A U L C G
M O B Z W F
K V
Ü P Ä
Ö
J
Y
ca. 4.5 Bits/Zeichen,
Q X 1.7-Mal besser als ASCII
A. Mäder 374
Codierung nach Huffman: Minimale Codelänge
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 375
Codierung nach Huffman: Symbole mit p ≥ 0:5
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 376
Dynamic Huffman Coding
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 377
Kraft-Ungleichung
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 378
Kraft-Ungleichung: Beispiel
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 379
Kraft-Ungleichung: Beweisidee
7.5 Codierung - Symbolhäufigkeiten 64-040 Rechnerstrukturen und Betriebssysteme
m−1
X
um + uj · q m−j ≤ q m (∗)
j=1
I Beispiel
I pi = 1 und pj = 0 ∀j 6= i
I dann wird mit Sicherheit das Symbol Ai empfangen
I der Empfang bringt keinen Informationsgewinn
A. Mäder 381
Geeignetes Maß für die Information?
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 382
Erinnerung: Logarithmus
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
I Rechenregeln
I log (x · y ) = log (x) + log (y ) (Addition statt Multiplikation)
I b logb (x)
=x und x
logb (b ) = x
I logb (x) = loga (x)
loga (b)
I log2 (x) = ln(x)= ln(2) = ln(x)=0; 693141718
A. Mäder 383
Definition: Informationsgehalt
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 384
Einheit Bit
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
„Bit“ Verwechslungsgefahr
Bit: als Maß für den Informationsgehalt Maßeinheit
bit : Anzahl der Binärstellen –"–
Bit : Binärzeichen, Symbol 0 oder 1 (Kap. „5 Zeichen und Text“)
A. Mäder 385
Ungewissheit, Überraschung, Information
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 386
Informationsgehalt: Beispiele
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
Meteorit
I die Wahrscheinlichkeit, an einem Tag von einem Meteor
getroffen zu werden, sei pM = 10−16
A. Mäder 387
Informationsgehalt: Beispiele (cont.)
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
Würfeln
I bei vielen Spielen hat die 6 eine besondere Bedeutung
I hier betrachten wir aber zunächst nur die Wahrscheinlichkeit
von Ereignissen, nicht deren Semantik
A. Mäder 388
Informationsgehalt: Beispiele (cont.)
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 389
Informationsgehalt: Beispiele (cont.)
7.6 Codierung - Informationstheorie 64-040 Rechnerstrukturen und Betriebssysteme
Einzelner Buchstabe
I die Wahrscheinlichkeit, in einem Text an einer gegebenen Stelle
das Zeichen „A“ anzutreffen sei W {A} = p = 0; 01
A. Mäder 390
Entropie
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
Obige Definition der Information lässt sich nur jeweils auf den
Empfang eines speziellen Zeichens anwenden
I Was ist die durchschnittliche Information bei Empfang
eines Symbols?
I diesen Erwartungswert bezeichnet man als Entropie des
Systems (auch mittlerer Informationsgehalt)
A. Mäder 391
Entropie (cont.)
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
H = E{I(Ai )}
X
= pi · I(Ai )
i
X 1
= pi · log2 ( )
pi
i
X
=− pi · log2 (pi )
i
A. Mäder 392
Entropie: Beispiele
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
H= −( 2 log2 ( 21 ) + (1
1
− 12 ) log2 (1 − 12 )) = 1:0
I mittlerer Informationsgehalt beim Empfang einer Binärstelle mit
gleicher Wahrscheinlichkeit für beide Symbole ist genau 1 Bit
A. Mäder 393
Entropie: Diagramm
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Wahrscheinlichkeit der "0"
A. Mäder 394
Entropie: Symbolverteilung
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 395
Entropie: einige Eigenschaften
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 396
Möglicher Informationsgehalt
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 397
Redundanz
7.7 Codierung - Entropie 64-040 Rechnerstrukturen und Betriebssysteme
I relative Redundanz: r = H0 −H
H0
C = 1 − H(F )
A. Mäder 399
Erinnerung: Modell der Informationsübertragung
7.8 Codierung - Kanalcodierung 64-040 Rechnerstrukturen und Betriebssysteme
Störungen
und Rauschen
I Informationsquelle
I Sender mit möglichst effizienter Kanalcodierung
I gestörter und verrauschter Übertragungskanal
I Empfänger mit Decodierer und Fehlererkennung/-korrektur
I Informationssenke und -verarbeitung
A. Mäder 400
Binärer symmetrischer Kanal
7.8 Codierung - Kanalcodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 401
Kanalkapazität: Diagramm
7.8 Codierung - Kanalcodierung 64-040 Rechnerstrukturen und Betriebssysteme
0.9
0.8
0.7
Bits pro Binärstelle
0.6
0.5
0.4
0.3
0.2
0.1
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
Bitfehlerwahrscheinlichkeit
A. Mäder 402
Kanalkapazität: Konsequenzen
7.8 Codierung - Kanalcodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 403
Shannon-Theorem
C. E. Shannon: Communication in the Presence of Noise; Proc. IRE, Vol.37,
No.1, 1949
7.8 Codierung - Kanalcodierung 64-040 Rechnerstrukturen und Betriebssysteme
Gegeben:
binärer symmetrischer Kanal mit der Störwahrscheinlichkeit P
und der Kapazität C(P )
Shannon-Theorem
Falls die Übertragungsrate R kleiner als C(P ) ist,
findet man zu jedem › > 0 einen Code C mit
der Übertragungsrate R(C) und C(P ) ≥ R(C) ≥ R und
der Fehlerdecodierwahrscheinlichkeit < ›
home/text/others/shannon/entropy/[Link]
A. Mäder 404
Shannon-Theorem (cont.)
C. E. Shannon: Communication in the Presence of Noise; Proc. IRE, Vol.37,
No.1, 1949
7.8 Codierung - Kanalcodierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 405
Fehlererkennende / -korrigierende Codes
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
Motivation
I Informationstheorie
I Kanalkapazität
I Shannon-Theorem
⇒ fehlererkennende Codes
⇒ fehlerkorrigierende Codes
A. Mäder 406
Fehlertypen
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 407
Begriffe zur Fehlerbehandlung
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 408
Einschub: GF (2), GF (2)n
[Link]/wiki/Endlicher_Körper
[Link]/wiki/GF(2)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 409
Begriffe zur Fehlerbehandlung (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
I zyklischer Code
ein Block-Code (identische Wortlänge aller Codewörter)
I
A. Mäder 410
Verfahren zur Fehlerbehandlung
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 411
Hamming-Abstand
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
a = 0110 0011
b = 1010 0111
⇒ Hamming-Abstand von a und b ist 3
Hamming-Gewicht von b ist 5
I Java: [Link]( a ^ b )
A. Mäder 412
Fehlererkennende und -korrigierende Codes
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 413
Fehlererkennende und -korrigierende Codes (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
I Hamming-Abstand 2 3
110 111 110 111 110 111
A. Mäder 414
Fehlererkennende und -korrigierende Codes (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
00000 00001
00010 00011 00100 00101
00110 00111
01000 01001
01010 01011 01100 01101
01110 01111 10000 10001
10010 10011 10100 10101
10110 10111
11000 11001
11010 11011 11100 11101
11110 11111
Hamming-Abstand 0 1 2 3 4 5
Fehlererkennung 4-bit
A. Mäder 415
Prüfinformation
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
verschiedene Verfahren
I Prüfziffer, Parität
I Summenbildung
I CRC-Verfahren (cyclic-redundancy check)
I BCH-Codes (Bose, Ray-Chauduri, Hocquengham)
I RS-Codes (Reed-Solomon)
A. Mäder 416
Paritätscode
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 417
Paritätscode: Eigenschaften
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 418
Zweidimensionale Parität
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 419
Zweidimensionale Parität: Beispiel
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 420
Zweidimensionale Parität: Einzelfehler
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 421
Zweidimensionale Parität: Dezimalsystem
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 422
International Standard Book Number
ISBN-10 (1970), ISBN-13
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 423
ISBN-10: Prüfverfahren
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 424
ISBN: Fehlertypen
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 425
3-fach Wiederholungscode / (3,1)-Hamming-Code
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 426
Hamming-Code
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
I Hamming-Abstand 3
I korrigiert 1-bit Fehler, erkennt (viele) 2-bit und 3-bit Fehler
(N; n)-Hamming-Code
I Datenwort n-bit (d1 ; d2 ; : : : ; dn )
um k-Prüfbits ergänzen (p1 ; p2 ; : : : ; pk )
⇒ Codewort mit N = n + k bit
I Fehlerkorrektur gewährleisten: 2k ≥ N + 1
I 2k Kombinationen mit k-Prüfbits
I 1 fehlerfreier Fall
I N zu markierende Bitfehler
A. Mäder 427
Hamming-Code (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
Position 1 2 3 4 5 6 7 8 9 ...
0 1 1 0 0 1 1 0 0
1 0 1 0 1 0 1 0 1
Bit p1 p2 d1 p3 d2 d3 d4 p4 d5 ...
A. Mäder 428
Hamming-Code (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
Schema: 2 . . . 5 Prüfbits
0 1 2 3 4
22 2 2 2
c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31
p1p2 d1p3 d2 d3 d4p4 d5 d6d7 d8 d9 d10d11 p5 d12d13d14 d15d16 d17d18d19 d20 d21d22 d23 d24 d25d26
(7,4)-Hamming-Code (15,11)-Hamming-Code
I p1 = d1 ⊕ d2 ⊕ d4 I p1 = d1 ⊕ d2 ⊕ d4 ⊕ d5 ⊕ d7 ⊕ d9 ⊕ d11
p2 = d1 ⊕ d3 ⊕ d4 p2 = d1 ⊕ d3 ⊕ d4 ⊕ d6 ⊕ d7 ⊕ d10 ⊕ d11
p3 = d2 ⊕ d3 ⊕ d4 p3 = d2 ⊕ d3 ⊕ d4 ⊕ d8 ⊕ d9 ⊕ d10 ⊕ d11
p4 = d5 ⊕ d6 ⊕ d7 ⊕ d8 ⊕ d9 ⊕ d10 ⊕ d11
A. Mäder 429
(7,4)-Hamming-Code
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
I Codewort c = G · d
A. Mäder 430
(7,4)-Hamming-Code (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
Fazit: Hamming-Codes
+ größere Wortlangen: besseres Verhältnis von Nutz- zu Prüfbits
+ einfaches Prinzip, einfach decodierbar
− es existieren weit bessere Codes
A. Mäder 431
(7,4)-Hamming-Code: Beispiel
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
1 1 0 1 1
0 1 0 1
B1 0 1 1C 0 1 B1C
B
B1
C 0 B C
B 0 0 C B1C B0C
0C B C
B0
c = G ·d = B 1 1 B0C
1C · @ A = B
C B C C
B0 1
1 0 0C
C
B1C
B C
B
@0 0
0 1 0A @1A
0 0 0 1 0
A. Mäder 432
(7,4)-Hamming-Code: Beispiel (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
1
0 1
B1C
0 1 B C 0 1
1 0 1 0 1 0 1 B0C
B C 0
H · c = 0 1 1 0 0 1 1 · B0C = 0A
@ A B C @
0 0 0 1 1 1 1 B1C
B C 0
@1A
0
A. Mäder 433
(7,4)-Hamming-Code: Beispiel (cont.)
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
I im Fehlerfall c = (1; 1; 1; 0; 1; 1; 0)
1
0 1
B1C
0 1 B C 0 1
1 0 1 0 1 0 1 B1C
B C 1
H · c = @0 1 1 0 0 1 1 A · B0
B C
C = @1A
0 0 0 1 1 1 1 B1C
B C 0
@1A
0
⇒ Fehlerstelle:
` ´
1 1 1 0 1 1 0
0 1
1 0 1 0 1 0 1
@0 1 1 0 0 1 1A
0 0 0 1 1 1 1
Index: 1 2 3 4 5 6 7
A. Mäder 434
Fehlerrate
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 435
Fehlerrate: (7,4)-Hamming-Code
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
[Hei05]
A. Mäder 436
Fehlerrate: (23,12)-Golay-Code
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
[Hei05]
A. Mäder 437
Fehlerrate: (2048,8)-Randomcode
7.9 Codierung - Fehlererkennende Codes 64-040 Rechnerstrukturen und Betriebssysteme
[Hei05]
A. Mäder 438
Binärpolynome
7.10 Codierung - Zyklische Codes 64-040 Rechnerstrukturen und Betriebssysteme
100 1101 = 1 · x 6 + 0 · x 5 + 0 · x 4 + 1 · x 3 + 1 · x 2 + 0 · x 1 + 1 · x 0
= x6 + x3 + x2 + x0
= x0 + x3 + x4 + x6
= x 0 + x −3 + x −4 + x −6
:::
A. Mäder 439
Zyklische Codes (CRC)
7.10 Codierung - Zyklische Codes 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 440
Zyklische Codes (CRC) (cont.)
7.10 Codierung - Zyklische Codes 64-040 Rechnerstrukturen und Betriebssysteme
p5 p4 p3 p2 p1 di
I Codewort erstellen
I Datenwort di um k 0-bits verlängern, Grad des Polynoms: k
I bitweise in CRC-Check schieben
I Divisionsrest bildet Registerinhalt pi
I Prüfbits pi an ursprüngliches Datenwort anhängen
A. Mäder 441
Zyklische Codes (CRC) (cont.)
7.10 Codierung - Zyklische Codes 64-040 Rechnerstrukturen und Betriebssysteme
I [Link]/wiki/Cyclic_redundancy_check
[Link]/wiki/Computation_of_CRC
[Link]/wiki/Zyklische_Redundanzprüfung
[Link]/wiki/LFSR
A. Mäder 442
Praxisbeispiel: EAN-13 Produktcode
[Link]/wiki/European_Article_Number
7.11 Codierung - Praxisbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 443
Compact Disc
Audio-CD und CD-ROM
7.11 Codierung - Praxisbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 444
Compact Disc (cont.)
Audio-CD und CD-ROM
7.11 Codierung - Praxisbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 445
Compact Disc: Mehrstufige Codierung
7.11 Codierung - Praxisbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 446
Farbbilder: JPEG
7.11 Codierung - Praxisbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
mehrere Codierungsschritte
1. Farbraumkonvertierung: RGB nach YUV verlustbehaftet
2. Aufteilung in Blöcke zu je 8x8 Pixeln verlustfrei
3. DCT (discrete cosinus transformation) verlustfrei
4. Quantisierung (einstellbar) verlustbehaftet
5. Huffman-Codierung verlustfrei
A. Mäder 447
Video: MPEG
7.11 Codierung - Praxisbeispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 448
Literatur
7.12 Codierung - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 449
Literatur (cont.)
7.12 Codierung - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 450
Gliederung
8 Schaltfunktionen 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
Definition
Darstellung
Normalformen
Entscheidungsbäume und OBDDs
Realisierungsaufwand und Minimierung
Minimierung mit KV-Diagrammen
A. Mäder 451
Gliederung (cont.)
8 Schaltfunktionen 64-040 Rechnerstrukturen und Betriebssysteme
Literatur
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 452
Schaltfunktionen
8.1 Schaltfunktionen - Definition 64-040 Rechnerstrukturen und Betriebssysteme
y = f (b1 ; b2 ; : : : ; bn ) ∈ {0; 1}
A. Mäder 453
Beschreibung von Schaltfunktionen
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
I textuelle Beschreibungen
formale Notation, Schaltalgebra, Beschreibungssprachen
I tabellarische Beschreibungen
Funktionstabelle, KV-Diagramme . . .
I graphische Beschreibungen
Kantorovic-Baum (Datenflussgraph), Schaltbild . . .
I Verhaltensbeschreibungen ⇒ „was“
I Strukturbeschreibungen ⇒ „wie“
A. Mäder 454
Funktionstabelle
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
x3 x2 x1 f (x)
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
A. Mäder 455
Funktionstabelle (cont.)
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 456
Verhaltensbeschreibung
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 457
umgangssprachlich: Mehrdeutigkeit
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 458
Strukturbeschreibung
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 459
Funktional vollständige Basismenge
8.2 Schaltfunktionen - Darstellung 64-040 Rechnerstrukturen und Betriebssysteme
f (x1 ; x2 ) = x1 ⊕ x2
g (x1 ; x2 ) = x1 ∧ x2
A. Mäder 460
Normalformen
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
ai : Koeffizienten
n
X
f (x) = ai x i
x i : Basisfunktionen
i=0
A. Mäder 461
Normalformen (cont.)
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 462
Definition: Normalform
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 463
Disjunktive Normalform (DNF)
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
fˆi · m(i);
_
f = mit m(i) : Minterm(i)
i=1
A. Mäder 464
Disjunktive Normalform: Minterme
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
x3 x2 x1 Minterme
0 0 0 x3 ∧ x2 ∧ x1
0 0 1 x3 ∧ x2 ∧ x1
0 1 0 x3 ∧ x2 ∧ x1
0 1 1 x3 ∧ x2 ∧ x1
1 0 0 x3 ∧ x2 ∧ x1
1 0 1 x3 ∧ x2 ∧ x1
1 1 0 x3 ∧ x2 ∧ x1
1 1 1 x3 ∧ x2 ∧ x1
A. Mäder 465
Disjunktive Normalform: Beispiel
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
x3 x2 x1 f (x)
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
I Funktionstabelle: Minterm 0 ≡ xi 1 ≡ xi
I für f sind nur drei Koeffizienten der DNF gleich 1
⇒ DNF: f (x) = (x3 ∧ x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 )
A. Mäder 466
Allgemeine disjunktive Form
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
DNF f (x) = (x3 ∧ x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 )
minimierte disjunktive Form f (x) = (x3 ∧ x2 ) ∨ (x3 ∧ x2 ∧ x1 )
A. Mäder 467
Allgemeine disjunktive Form
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
DNF f (x) = (x3 ∧ x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 )
minimierte disjunktive Form f (x) = (x3 ∧ x2 ) ∨ (x3 ∧ x2 ∧ x1 )
f (x) = (x2 ∧ x1 ) ∨ (x3 ∧ x2 ∧ x1 )
A. Mäder 467
Konjunktive Normalform (KNF)
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
fˆi · —(i);
^
f = mit —(i) : Maxterm(i)
i=1
A. Mäder 468
Konjunktive Normalform: Maxterme
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
x3 x2 x1 Maxterme
0 0 0 x3 ∨ x2 ∨ x1
0 0 1 x3 ∨ x2 ∨ x1
0 1 0 x3 ∨ x2 ∨ x1
0 1 1 x3 ∨ x2 ∨ x1
1 0 0 x3 ∨ x2 ∨ x1
1 0 1 x3 ∨ x2 ∨ x1
1 1 0 x3 ∨ x2 ∨ x1
1 1 1 x3 ∨ x2 ∨ x1
A. Mäder 469
Konjunktive Normalform: Beispiel
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
x3 x2 x1 f(x)
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
I Funktionstabelle: Maxterm 0 ≡ xi 1 ≡ xi
I für f sind fünf Koeffizienten der KNF gleich 0
⇒ KNF: f (x) = (x3 ∨ x2 ∨ x1 ) ∧ (x3 ∨ x2 ∨ x1 ) ∧ (x3 ∨ x2 ∨ x1 ) ∧
(x3 ∨ x2 ∨ x1 ) ∧ (x3 ∨ x2 ∨ x1 )
A. Mäder 470
Allgemeine konjunktive Form
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
KNF f (x) = (x3 ∨ x2 ∨ x1 ) ∧ (x3 ∨ x2 ∨ x1 ) ∧ (x3 ∨ x2 ∨ x1 ) ∧
(x3 ∨ x2 ∨ x1 ) ∧ (x3 ∨ x2 ∨ x1 )
minimierte konjunktive Form
f (x) = (x3 ∨ x2 ) ∧ (x2 ∨ x1 ) ∧ (x3 ∨ x1 )
A. Mäder 471
Reed-Muller Form
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
fˆi · RM(i)
M
f =
i=1
A. Mäder 472
Reed-Muller Form: Basisfunktionen
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
I Basisfunktionen sind:
{1}, (0 Variablen)
{1; x1 }, (1 Variable )
{1; x1 ; x2 ; x2 x1 }, (2 Variablen)
{1; x1 ; x2 ; x2 x1 ; x3 ; x3 x1 ; x3 x2 ; x3 x2 x1 }, (3 Variablen)
...
{RM(n − 1); xn · RM(n − 1)} (n Variablen)
A. Mäder 473
Reed-Muller Form: Umrechnung
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
f (x1 ; x2 ; x3 ) = (x1 ∨ x2 )x3
= (x1 ⊕ x2 ⊕ x1 x2 )x3
= ((1 ⊕ x1 ) ⊕ x2 ⊕ (1 ⊕ x1 )x2 )x3
= (1 ⊕ x1 ⊕ x2 ⊕ x2 ⊕ x1 x2 )x3
= x3 ⊕ x1 x3 ⊕ x1 x2 x3
A. Mäder 474
Reed-Muller Form: Transformationsmatrix
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
A0 = (1)
„ «
1 0
A1 =
1 1
A. Mäder 475
Reed-Muller Form: Transformationsmatrix (cont.)
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
0 1
1 0 0 0
B1 1 0 0C
A2 = B
@1
C
0 1 0A
1 1 1 1
1 0 0 0 0 0 0 0
0 1
B1 1 0 0 0 0 0 0C
B C
B1 0 1 0 0 0 0 0C
B C
B1 1 1 1 0 0 0 0C
A3 = B
B1
C
B 0 0 0 1 0 0 0C
C
B1 1 0 0 1 1 0 0C
B C
@1 0 1 0 1 0 1 0A
1 1 1 1 1 1 1 1
...
„ «
An−1 0
An =
An−1 An−1
A. Mäder 476
Reed-Muller Form: Beispiel
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
x3 x2 x1 f (x)
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 0
A. Mäder 477
Reed-Muller Form: Beispiel (cont.)
8.3 Schaltfunktionen - Normalformen 64-040 Rechnerstrukturen und Betriebssysteme
1 0 0 0 0 0 0 0 0 0
0 1 0 1 0 1
B1 1 0 0 0 0 0 0C B0C B0C
B C B C B C
B1 0 1 0 0 0 0 0C
C B1C B1C
B C B C
B
B1 1 1 1 0 0 0 0C B 1CC = B0C
C B C
r = A3 · f = B
B1 0 0 0 1 0 0 ·B
B 0C B0C B
C B C
B0C
C
B1 1 0 0 1 1 0 0C
C B0C B0C
B C B C
B
@1 0 1 0 1 0 1 0A @1A @0A
1 1 1 1 1 1 1 1 0 1
Basisfunktionen: {1; x1 ; x2 ; x2 x1 ; x3 ; x3 x1 ; x3 x2 ; x3 x2 x1 }
führt zur gesuchten RMF:
f (x3 ; x2 ; x1 ) = r · RM(3) = x2 ⊕ x3 x2 x1
A. Mäder 478
Grafische Darstellung: Entscheidungsbäume
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel: Multiplexer
f (a; b; c) = (a ∧ c) ∨ (b ∧ c)
A. Mäder 479
Entscheidungsbaum: Beispiel
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
I f (a; b; c) = (a ∧ c) ∨ (b ∧ c)
I rot: 0-Zweig
grün: 1-Zweig
A. Mäder 480
Entscheidungsbaum: Beispiel (cont.)
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
I f (a; b; c) = (a ∧ c) ∨ (b ∧ c)
⇒ Knoten entfernt
I rot: 0-Zweig
grün: 1-Zweig
A. Mäder 481
Reduced Ordered Binary-Decision Diagrams (ROBDD)
Binäres Entscheidungsdiagramm
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 482
ROBDD vs. Entscheidungsbaum
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
Entscheidungsbaum ROBDD
f = (a b c) ∨ (a b) ∨ (a b) ∨ (a b c)
a
0 1
a
0 1
b b
b b
c c
c c c c
1 0 1 1 1 1 0 1 1 0
A. Mäder 483
ROBDD: Beispiele
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
f (x) = x g = (a b) ∨ c Parität p = x1 ⊕ x2 ⊕ : : : xn
x a x1
0 1 0 1 0 1
0 1 b x2 x2
c x3 x3
0 1
xn xn
0 1
A. Mäder 484
ROBDD: Problem der Variablenordnung
8.4 Schaltfunktionen - Entscheidungsbäume und OBDDs 64-040 Rechnerstrukturen und Betriebssysteme
x2 x2 x2
x3 x3 x3 x3 x3
x4 x4 x4 x4 x4
x5 x5 x5
x6 x6
0 1 0 1
A. Mäder 485
Minimierung von Schaltfunktionen
8.5 Schaltfunktionen - Realisierungsaufwand und Minimierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 486
Algebraische Minimierungsverfahren
8.5 Schaltfunktionen - Realisierungsaufwand und Minimierung 64-040 Rechnerstrukturen und Betriebssysteme
I Heuristische Verfahren
I Suche nach Primimplikanten ( = kürzeste Konjunktionsterme)
I Quine-McCluskey-Verfahren und Erweiterungen
A. Mäder 487
Algebraische Minimierung: Beispiel
8.5 Schaltfunktionen - Realisierungsaufwand und Minimierung 64-040 Rechnerstrukturen und Betriebssysteme
I Ausgangsfunktion in DNF
y (x) = x3 x2 x1 x0 ∨ x3 x2 x1 x0
∨ x3 x2 x1 x0 ∨ x3 x2 x1 x0
∨ x3 x2 x1 x0 ∨ x3 x2 x1 x0
∨ x3 x2 x1 x0 ∨ x3 x2 x1 x0
I Zusammenfassen benachbarter Terme liefert
y (x) = x3 x2 x1 ∨ x3 x2 x0 ∨ x3 x2 x1 ∨ x3 x2 x0 ∨ x3 x2 x1
I aber bessere Lösung ist möglich (weiter Umformen)
y (x) = x2 x1 ∨ x3 x0 ∨ x3 x1
A. Mäder 488
Grafische Minimierungsverfahren
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 489
Erinnerung: Karnaugh-Veitch Diagramm
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x3 x2 00 01 11 10 x3 x2 00 01 11 10
00 0 1 3 2 00 0000 0001 0011 0010
A. Mäder 490
KV-Diagramme: 2 . . . 4 Variable (2×2, 2×4, 4×4)
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x0 x1 x0
x1 0 1 x3 x2 00 01 11 10
0 00 01 00 0000 0001 0011 0010
A. Mäder 491
KV-Diagramm für Schaltfunktionen
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 492
KV-Diagramm: Zuordnung zur Funktionstabelle
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 y=f(x)
x0
0 0 f(0 0) 0 1
x1
0 1 f(0 1)
0 00 01
1 0 f(1 0)
1 1 f(1 1) 1 10 11
x2 x1 x0 y=f(x)
0 0 0 f(0 0 0)
0 0 1 f(0 0 1) x1 x0
x2 00 01 11 10
0 1 0 f(0 1 0)
0 1 1 f(0 1 1) 0 000 001 011 010
1 0 0 f(1 0 0) 1 100 101 111 110
1 0 1 f(1 0 1)
1 1 0 f(1 1 0)
1 1 1 f(1 1 1)
A. Mäder 493
KV-Diagramm: Eintragen aus Funktionstabelle
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 y=f(x)
x0
0 0 0
x1 0 1
0 1 0
0 0 0
1 0 1
1 1 1 1 1 1
x2 x1 x0 y=f(x)
0 0 0 0
0 0 1 0 x1 x0
x2 00 01 11 10
0 1 0 1
0 1 1 1 0 0 0 1 1
1 0 0 0 1 0 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0
A. Mäder 494
KV-Diagramm: Beispiel
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x3 x2 00 01 11 10 x3 x2 00 01 11 10
00 0 1 3 2 00 1 0 0 1
01 4 5 7 6 01 0 0 0 0
11 12 13 15 14 11 0 0 1 0
10 8 9 11 10 10 0 0 1 0
A. Mäder 495
Schleifen: Zusammenfassen benachbarter Terme
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 496
Schleifen: Ablesen der Schleifen
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 y=f(x) f (x1 ; x0 ) = x1
x0
0 0 0
x1 0 1
0 1 0
0 0 0
1 0 1
1 1 1 1 1 1
x2 x1 x0 y=f(x)
f (x2 ; x1 ; x0 ) = x2 x1 ∨ x1 x0
0 0 0 0
0 0 1 0 x1 x0
x2 00 01 11 10
0 1 0 1
0 1 1 1 0 0 0 1 1
1 0 0 0 1 0 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0
A. Mäder 497
Schleifen: Ablesen der Schleifen (cont.)
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x3 x2 00 01 11 10 x3 x2 00 01 11 10
00 1 0 0 1 00 1 0 0 1
01 0 0 0 0 01 0 0 0 0
11 0 0 1 0 11 0 0 1 0
10 0 0 1 0 10 0 0 1 0
A. Mäder 498
Schleifen: interaktive Demonstration
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x2 x1 x0 x3
O1
Edit function
Inputs: 4 Outputs: 1
O1
x0
1 0 1 0
1 1 1 0
x2
1 1 1 0
x3
1 0 0 0
x1
Costs: 10 gates with 45 inputs
A. Mäder 500
KV-Diagramm Editor: Screenshots (cont.)
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x2 x1 x0 x3
O1
Edit loops
Inputs: 4 Outputs: 1
O1
DNF KNF
x0
1 0 1 0
1 1 1 0
x2
1 1 1 0
x3
1 0 0 0
x1
Costs: 6 gates with 22 inputs
A. Mäder 501
KV-Diagramm Editor: Screenshots (cont.)
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x2 x1 x0 x3
O1
Edit loops
Inputs: 4 Outputs: 1
O1
DNF KNF
x0
1 0 1 0
1 1 1 0
x2
1 1 1 0
x3
1 0 0 0
x1
Costs: 4 gates with 10 inputs
A. Mäder 502
KV-Diagramm Editor: Screenshots (cont.)
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x2 x1 x0 x3
O1
Edit loops
Inputs: 4 Outputs: 1
O1
DNF KNF
x0
1 0 1 0
1 1 1 0
x2
1 1 1 0
x3
1 0 0 0
x1
Costs: 4 gates with 11 inputs
Konjunktive Form
A. Mäder 503
Don’t-Care Terme
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 504
KV-Diagramm Editor: 6 Variablen, Don’t-Cares
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x4 x5 x2 x1 x0 x3
O1
Edit function
Inputs: 6 Outputs: 1
O1
x4
x0 x0
0 1 0 0 0 0 0 0
0 1 1 * * 0 * *
x2 x2
0 * 0 0 0 0 * 0
x3 x3
1 1 0 * 1 0 0 *
x1 x1
x0 x0
* 1 * * * * * *
0 0 * * 0 0 * *
x5 x2 x2
* 0 0 0 0 * 0 0
x3 x3
* 0 0 * * 0 * 1
x1 x1
Costs: 9 gates with 56 inputs
A. Mäder 505
KV-Diagramm Editor: 6 Variablen, Don’t-Cares (cont.)
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
x4 x5 x2 x1 x0 x3
O1
Edit loops
Inputs: 6 Outputs: 1
O1
DNF KNF
x4
x0 x0
0 1 0 0 0 0 0 0
0 1 1 * * 0 * *
x2 x2
0 * 0 0 0 0 * 0
x3 x3
1 1 0 * 1 0 0 *
x1 x1
x0 x0
* 1 * * * * * *
0 0 * * 0 0 * *
x5 x2 x2
* 0 0 0 0 * 0 0
x3 x3
* 0 0 * * 0 * 1
x1 x1
Costs: 5 gates with 17 inputs
A. Mäder 506
Quine-McCluskey-Algorithmus
8.6 Schaltfunktionen - Minimierung mit KV-Diagrammen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 507
Literatur
8.7 Schaltfunktionen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 508
Literatur (cont.)
8.7 Schaltfunktionen - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 509
Gliederung
9 Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
Definition
Schaltsymbole und Schaltpläne
Hades: Editor und Simulator
Logische Gatter
Inverter, AND, OR
A. Mäder 510
Gliederung (cont.)
9 Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 511
Gliederung (cont.)
9 Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 512
Schaltnetze: Definition
9.1 Schaltnetze - Definition 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 513
Schaltnetze: Definition (cont.)
9.1 Schaltnetze - Definition 64-040 Rechnerstrukturen und Betriebssysteme
I Begriff: „Schaltnetz“
I technische Realisierung von Schaltfunktionen / Funktionsbündeln
I Struktur aus einfachen Gatterfunktionen:
triviale Funktionen mit wenigen (2 . . . 4) Eingängen
I in der Praxis können Schaltnetze nicht statisch betrachtet
werden: Gatterlaufzeiten spielen eine Rolle
A. Mäder 514
Elementare digitale Schaltungen
9.2 Schaltnetze - Schaltsymbole und Schaltpläne 64-040 Rechnerstrukturen und Betriebssysteme
I Schaltsymbole
I Grundgatter (Inverter, AND, OR usw.)
I Kombinationen aus mehreren Gattern
I Arithmetisch/Logische Operationen
A. Mäder 515
Schaltpläne (schematics)
9.2 Schaltnetze - Schaltsymbole und Schaltpläne 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 516
Schaltsymbole
9.2 Schaltnetze - Schaltsymbole und Schaltpläne 64-040 Rechnerstrukturen und Betriebssysteme
Schaltzeichen Benennung
DIN 40700
..
(ab 1976) Fruher in USA
UND - Glied
&
(AND)
ODER - Glied
>
_1
(OR)
NICHT - Glied
1
(NOT)
Exklusiv-Oder - Glied
=1
(Exclusive-OR, XOR)
Aquivalenz - Glied
=
(Logic identity)
A. Mäder 517
Logische Gatter
9.2 Schaltnetze - Schaltsymbole und Schaltpläne 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 518
Schaltplan-Editor und -Simulator
9.3 Schaltnetze - Hades: Editor und Simulator 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 519
Hades: Grundkomponenten
9.3 Schaltnetze - Hades: Editor und Simulator 64-040 Rechnerstrukturen und Betriebssysteme
I Anzeige / Leuchtdiode i3
A Y
i13 i16 i22
I Siebensegmentanzeige
...
AND (2 inputs) NAND (2 inputs)
A A
i5 i19
Y Y
i11 i21
B B
i6 i20
A. Mäder 520
Hades: glow-mode Visualisierung
9.3 Schaltnetze - Hades: Editor und Simulator 64-040 Rechnerstrukturen und Betriebssysteme
I Defaultwerte
blau glow-mode ausgeschaltet
hellgrau logisch 0
rot logisch 1
orange tri-state Z ⇒ kein Treiber (bidirektionale Busse)
magenta undefined X ⇒ Kurzschluss, ungültiger Wert
cyan unknown U ⇒ nicht initialisiert
A. Mäder 521
Hades: Bedienung
9.3 Schaltnetze - Hades: Editor und Simulator 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 522
Gatter: Verstärker, Inverter, AND, OR
9.4.1 Schaltnetze - Logische Gatter - Inverter, AND, OR 64-040 Rechnerstrukturen und Betriebssysteme
BUFFER
INVERTER
i5 i19
i11 i21
i6 i20
i8 i9
i24 i23
i7 i14
A. Mäder 523
Grundschaltungen: De Morgan Regel
9.4.1 Schaltnetze - Logische Gatter - Inverter, AND, OR 64-040 Rechnerstrukturen und Betriebssysteme
AND (2 inputs)
s
AND
d
f
AND_deMorgan
g
OR (2 inputs)
w
OR
e
r
OR_deMorgan
t
A. Mäder 524
Gatter: AND/NAND mit zwei, drei, vier Eingängen
9.4.1 Schaltnetze - Logische Gatter - Inverter, AND, OR 64-040 Rechnerstrukturen und Betriebssysteme
BUFFER
INVERTER
i5 i19
AND2 NAND2
i6 i20
i28 i21
i31 i35
i32 i36
[HenHA] Hades Demo: 10-gates/00-gates/and
A. Mäder 525
Gatter: AND mit zwölf Eingängen
9.4.1 Schaltnetze - Logische Gatter - Inverter, AND, OR 64-040 Rechnerstrukturen und Betriebssysteme
A0 B0
A1 B1
A2 B2
A3 B3
A4 B4
A5 B5
Y Z
A6 B6
A7 B7
A8 B8
A9 B9
A10 B10
A11 B11
[HenHA] Hades Webdemo:
10-gates/00-gates/andbig
A. Mäder 526
Gatter: OR/NOR mit zwei, drei, vier Eingängen
9.4.1 Schaltnetze - Logische Gatter - Inverter, AND, OR 64-040 Rechnerstrukturen und Betriebssysteme
BUFFER
INVERTER
i5 i19
OR2 NOR2
i6 i20
i28 i21
i31 i35
i32 i36
[HenHA] Hades Demo: 10-gates/00-gates/or
A. Mäder 527
Komplexgatter
9.4.1 Schaltnetze - Logische Gatter - Inverter, AND, OR 64-040 Rechnerstrukturen und Betriebssysteme
A1 A1
a f
A2 A2
s g
Y
AOI21 OAI21
B1 B1
d h
1 y
A1 A1
2 u
A2 A2
A3 A3
3 i
Y Y
AOI33 OAI32
B1 B1
4 o
B2
B3 B2
5 p
6
[HenHA] Hades Demo: 10-gates/00-gates/complex
A. Mäder 528
Gatter: XOR und XNOR
9.4.2 Schaltnetze - Logische Gatter - XOR und Parität 64-040 Rechnerstrukturen und Betriebssysteme
BUFFER
INVERTER
A i13 B i22
S F
i11 i21
D G
W R
i24 i23
E T
A. Mäder 529
XOR und drei Varianten der Realisierung
9.4.2 Schaltnetze - Logische Gatter - XOR und Parität 64-040 Rechnerstrukturen und Betriebssysteme
a
Symbol
XOR_ab
I b
XOR_cd
I AND-OR d
NAND-NAND
XOR_ef
I
f
g
XOR_gh
I mit Multiplexer h
A. Mäder 530
XOR zur Berechnung der Parität
9.4.2 Schaltnetze - Logische Gatter - XOR und Parität 64-040 Rechnerstrukturen und Betriebssysteme
I 4-bit Parität: d3 ⊕ d2 ⊕ d1 ⊕ d0
d3
d2
d1
d0
A. Mäder 531
XOR zur Berechnung der Parität (cont.)
9.4.2 Schaltnetze - Logische Gatter - XOR und Parität 64-040 Rechnerstrukturen und Betriebssysteme
d1
d2
d3
d4
d5
d6
o
d7
odd
A. Mäder 532
2:1-Multiplexer
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 533
2:1-Multiplexer (cont.)
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
s a1 a0 y
0 * 0 0
0 * 1 1
1 0 * 0
1 1 * 1
s a1 a0 y
0 * a0 a0
1 a1 * a1
A. Mäder 534
n:1-Multiplexer
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 535
2:1 und 4:1 Multiplexer
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
Y10 Y
[d] A0
0
SEL
[s] Select
[6] B3
MUX 4:1
[5] B2
3
Y3210
B1 Y
[4]
0
SEL
[3] B0
[2] Select1
Select0
[1] [HenHA] Hades Demo: 10-gates/40-mux-demux/mux21-mux41
MUX 2:1
clk-1Hz
1
Y
SlowOrFast
0
clk-0.25Hz
SEL
Select
MUX 4:1
1 3
Selection
Y
0
0
SEL
Select1
Select0
Y3
DEMUX 1:4
Y2
Y1
D
Y0
SelectDemux1 SEL
SelectDemux0
A. Mäder 537
8-bit Multiplexer: Integrierte Schaltung 74151
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
STROBE
[s]
[0] D0
[1] D1
[2] D2
[3] D3
[4] D4
[5] D5
[6] D6
I
[b] B
acht Dateneingänge: d7 ; : : : ; d0
[c] C ein Kontrollsignal (Maskierung)
A. Mäder 538
16-bit Demultiplexer: Integrierte Schaltung 74154
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
G1/
I vier Steuereingänge: a, b, c, d
ein Dateneingang: g1 ⊕ g2
G2/
A
16 Datenausgänge: y0 , . . . , y15
Y0 Y1 Y2 Y3
Y4 Y5 Y6 Y7
Y8 Y9 Y10 Y11
A. Mäder 539
16-bit Demultiplexer: 74154 als Adressdecoder
9.4.3 Schaltnetze - Logische Gatter - Multiplexer 64-040 Rechnerstrukturen und Betriebssysteme
0 1 2 3 [d]
[a] 4 5 6 7
8 9 A B
data
C D E F
- +
Y15
Y14
Y13
Y12
Y11
'154 Y10
Y9
Y8
Y7
Y6
Y5
Y4
Y3
Y2
Y1
Y0
A. Mäder 540
Beispiele für Schaltnetze
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 541
Beispiel: „Würfel“-Decoder
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
I Eingabewert von 0 . . . 6
I Anzeige ein bis sechs Augen: eingeschaltet
Wert b2 b1 b0 x1 x2 x3 x4 x5 x6 x7
0 0 0 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 1 0 0 0
2 0 1 0 1 0 0 0 0 0 1
3 0 1 1 1 0 0 1 0 0 1
4 1 0 0 1 0 1 0 1 0 1
5 1 0 1 1 0 1 1 1 0 1
6 1 1 0 1 1 1 0 1 1 1
A. Mäder 542
Beispiel: „Würfel“-Decoder (cont.)
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
[d] b2
[s] b1
[a] b0
A. Mäder 543
Beispiel: Umwandlung vom Dualcode in den Graycode
XOR benachbarter Bits
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
G3
B3
0 1 2 3
4 5 6 7 G2
8 9 A B
C D E F
- + B2
[a] G1
B1
G0
B0
A. Mäder 544
Beispiel: Umwandlung vom Graycode in den Dualcode
XOR-Kette
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
G3
B3
0 1 2 3
4 5 6 7 G2
8 9 A B
C D E F
- + B2
[a] G1
B1
G0
B0
A. Mäder 545
(7,4)-Hamming-Code: Encoder und Decoder
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 546
(7,4)-Hamming-Code: Encoder und Decoder (cont.)
9.5 Schaltnetze - Einfache Schaltnetze 64-040 Rechnerstrukturen und Betriebssysteme
i21 I1
i1
i25 I2
i2
i26 I3
i3
i27 I4
i28
i29
i30
Encoder
A. Mäder 547
Siebensegmentanzeige
9.6 Schaltnetze - Siebensegmentanzeige 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 548
Siebensegmentanzeige: Funktionen
9.6 Schaltnetze - Siebensegmentanzeige 64-040 Rechnerstrukturen und Betriebssysteme
b = 1111100111100100 e
c
d
c = 1101111111110100
d = 1011011011011110
e = 1010001010111111
f = 1000111111110011
g = 0011111011111111
A. Mäder 549
Siebensegmentanzeige: Bündelminimierung
9.6 Schaltnetze - Siebensegmentanzeige 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 550
Siebensegmentdecoder: Ziffern 0 . . . 9
9.6 Schaltnetze - Siebensegmentanzeige 64-040 Rechnerstrukturen und Betriebssysteme
A3
[f]
A2
[d]
A1
[s]
A0
[a]
(A3..A0)
A. Mäder 551
Siebensegmentdecoder: Integrierte Schaltung 7449
9.6 Schaltnetze - Siebensegmentanzeige 64-040 Rechnerstrukturen und Betriebssysteme
[k] ndark
[f] A3
'49
[d] A2
[s] A1
[a] A0
(A3..A0)
A. Mäder 552
Siebensegmentanzeige: mehrstufige Realisierung
9.6 Schaltnetze - Siebensegmentanzeige 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 553
Logische und arithmetische Operationen
9.7 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen 64-040 Rechnerstrukturen und Betriebssysteme
I Multiplizierer
I Quadratwurzel
I Barrel-Shifter
I ALU
A. Mäder 554
Halbaddierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
a b co s
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
co = a ∧ b
s = a⊕b
A. Mäder 555
Volladdierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 556
Schaltbilder für Halb- und Volladdierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
cout
b
s
a
COUT
A S
CIN
A. Mäder 557
n-bit Addierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
I Summe: sn = an ⊕ bn ⊕ cn
s 0 = a0 ⊕ b 0
s 1 = a1 ⊕ b 1 ⊕ c 1
s 2 = a2 ⊕ b 2 ⊕ c 2
...
sn = an ⊕ bn ⊕ cn
A. Mäder 558
n-bit Addierer (cont.)
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 559
n-bit Addierer (cont.)
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
+ schnell
− teuer (Flächenbedarf der Hardware)
I Mischformen: Ripple-block CLA, Block CLA, Parallel Prefix
I andere Ideen: Carry-Select, Conditional Sum, Carry-Skip
...
A. Mäder 560
Ripple-Carry Adder
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
I Überlauf-Erkennung: co (n) 6= co (n − 1)
A. Mäder 561
Ripple-Carry Adder: 4-bit
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A3
A2
A1
A0
VA
VA
VA
B3 VA
B2
B1
B0
A. Mäder 562
Ripple-Carry Adder: Hades-Beispiel mit Verzögerungen
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A7 A6 A5 A4 A3 A2 A1 A0
A B A B A B A B A B A B A B A B
ADD ADD ADD ADD ADD ADD ADD ADD
CO CI CO CI CO CI CO CI CO CI CO CI CO CI CO CI
SUM SUM SUM SUM SUM SUM SUM SUM
COUT S7 S6 S5 S4 S3 S2 S1 S0
A. Mäder 563
Subtrahierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
Zweierkomplement
I (A − B) ersetzt durch Addition des 2-Komplements von B
I 2-Komplement: Invertieren aller Bits und Addition von Eins
I Carry-in Eingang des Addierers bisher nicht benutzt
A. Mäder 564
Subtrahierer: Beispiel 7483 – 4-bit Addierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A3
Cout
A2
A1
Out3
A0
Out2
B3 Out1
B2
=1 '83 Out0
B1
=1
B0
Cmpl Cin F
=1 0 0 A+B
0 1 A+B+1 (A++)
1 0 A-B-1 (A--)
1 1 A-B
=1
cmpl
Cin
A. Mäder 565
Schnelle Addierer
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 566
Carry-Select Adder: Prinzip
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 567
Carry-Select Adder: Beispiel
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
B7 B6 B5 B4 B3 B2 B1 B0
A7 A6 A5 A4 A3 A2 A1 A0
A B A B A B A B A B A B A B
ADD ADD ADD ADD ADD ADD ADD
CO CI CO CI CO CI CO CI
0 CO CI CO CI CO CI
0
SUM SUM SUM SUM SUM SUM SUM
A B
A B A B A B A B A B A B A B ADD
2:1 2:1
ADD ADD ADD ADD ADD ADD ADD CO CI
CO CI CO CI CO CI CO CI
1 CO CI CO CI CO CI
1 SUM
SUM SUM SUM SUM SUM SUM SUM
COUT S7 S6 S5 S4 S3 S2 S1 S0
A. Mäder 568
Carry-Select Adder: Beispiel ARM v6
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
a,b[3:0] a,b[31:28]
+ +, +1 +, +1
c s s+1
mux
mux
mux
A. Mäder 569
Carry-Lookahead Adder: Prinzip
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 570
Carry-Lookahead Adder: SUM-Funktionsblock
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
cin
si
gi
bin
ain
pi
I 1-bit Addierer, s = ai ⊕ bi ⊕ ci
I keine Berechnung des Carry-out
I Ausgang gi = ai ∧ bi liefert generate carry
pi = ai ∨ bi –"– propagate carry
A. Mäder 571
Carry-Lookahead Adder: CLA-Funktionsblock
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
A1
Pin_ij
A2
Gin_ij
cout_j+1
B1
cin_i cout_i
Pout_ik
Pin_j+1k
A1
A2
Gout_ik
B1
Gin_j+1k
outputs
SUM:15 S15 S14 S13 S12 S11 S10 S9 S8 S7 S6 S5 S4 S3 S2 S1 S0 SUM:0
inputs
A:15 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 A:0
adders
CLA tree
CARRY_IN
G P C CIN
(j+1,k) G
(i,j) P
(i,k)
C
G P C
A. Mäder 573
Addition mehrerer Operanden
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
I Addierer-Bäume
I Beispiel: Bitcount
i11
ADD
i10
ADD2
i9
i8
ADD
i7
ADD3
i6
i5
ADD
i4
ADD2
i3
i2
ADD
i1
i0
A. Mäder 574
Addierer: Zusammenfassung
9.7.1 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Addierer 64-040 Rechnerstrukturen und Betriebssysteme
I Halbaddierer (a ⊕ b)
I Volladdierer (a ⊕ b ⊕ ci )
I Ripple-Carry
I Kaskade aus Volladdierern, einfach und billig
I aber manchmal zu langsam, Verzögerung: O(n)
I Carry-Select Prinzip
√
I Verzögerung O( n)
I Carry-Lookahead Prinzip
I Verzögerung O(ln n)
A. Mäder 575
Multiplizierer
9.7.2 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Multiplizierer 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 576
2x2-bit Multiplizierer – als zweistufiges Schaltnetz
9.7.2 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Multiplizierer 64-040 Rechnerstrukturen und Betriebssysteme
(B1,B0) Y3
Y3
[f] B1
[d] B0
Y2
Y2
[s] A1
[a] A0
(A1,A0) Y1
Y1
Y0 Y0
A. Mäder 577
4x4-bit Multiplizierer – Array
9.7.2 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Multiplizierer 64-040 Rechnerstrukturen und Betriebssysteme
X3 X2 X1 X0
Pin Cin
X 0
Y
X Pout 0
0
Y2 X*Y X*Y X*Y X*Y
P7 P6 P5 P4 P3 P2 P1 P0
B A
X_7:4 X_3:0
0 1 2 3 0 1 2 3
4 5 6 7 4 5 6 7
8 9 A B 8 9 A B P XOR P
sqrt( X )
C D E F C D E F
- + - +
ADD
Co Ci
Sum/Diff B
CAS CAS
A. Mäder 579
Multiplizierer
9.7.2 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Multiplizierer 64-040 Rechnerstrukturen und Betriebssysteme
I CORDIC-Algorithmen
I Multiplikation, Division
I iterative Berechnung höherer Funktionen: Exponentialfunktion,
Logarithmus, trigonometrische Funktionen
A. Mäder 580
Priority Encoder
9.7.3 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Prioritätsencoder
64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 581
4:2 Prioritätsencoder
9.7.3 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Prioritätsencoder
64-040 Rechnerstrukturen und Betriebssysteme
X3
Y1
X2
Y0
X1
X0
[HenHA] Hades Demo: 10-gates/45-priority/priority42
A. Mäder 582
4:2 Prioritätsencoder: Kaskadierung
9.7.3 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Prioritätsencoder
64-040 Rechnerstrukturen und Betriebssysteme
X3
Y1
X2
Y0
X1
X0
A. Mäder 583
8:3 Prioritätsencoder
9.7.3 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Prioritätsencoder
64-040 Rechnerstrukturen und Betriebssysteme
X7
X6
Y2
X5
Y1
X4
Y0
X3
X2
X1
X0
D3
I n-Dateneingänge Di
Q3
n-Datenausgänge Qi
D2
Q2
I usw. D0
Q0
SHL_2
A. Mäder 585
8-bit Barrel-Shifter
9.7.4 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Barrel-Shifter 64-040 Rechnerstrukturen und Betriebssysteme
D7
Q7
D6
Q6
D5
Q5
D4
Q4
D3
Q3
D2
Q2
D1
Q1
D0
Q0
0
SHL_1
SHL_2
[HenHA] Hades Webdemo:
SHL_4 10-gates/60-barrel/shifter8
A. Mäder 586
Shift-Right, Rotate etc.
9.7.4 Schaltnetze - Schaltnetze für Logische und Arithmetische Operationen - Barrel-Shifter 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 587
Arithmetisch-Logische Einheit (ALU)
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 588
ALU: Addierer und Subtrahierer
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 589
ALU: Addierer und Subtrahierer
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
A3
Cout
A2
A1
Out3
A0
Out2
B3 Out1
B2
=1 '83 Out0
B1
=1
B0
Cmpl Cin F
=1 0 0 A+B
0 1 A+B+1 (A++)
1 0 A-B-1 (A--)
1 1 A-B
=1
cmpl
Cin
A. Mäder 590
ALU: Addierer und bitweise Operationen
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
Cout
=1 =1 =1 =1
XOR
Out3
1 1 1 1
Out2
OR Out1
Out0
AND
A3
A2 ADDER
A1
A0
Komplement
B3
=1 '83
B2
B1
=1
B0
S1 S0 Cmpl Cin F
=1 0 0 0 0 A+B
cmpl 0 0 0 1 A+B+1 (A++)
0 0 1 0 A-B-1 (A--)
Cin =1 0 0 1 1 A-B
0 1 x x A AND B
S1 1 0 x x A OR B
1 1 x x A XOR B
S0
A. Mäder 591
ALU: Prinzip
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 592
ALU: 74181 – Aufbau
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
S3..S0 (function) Y
A Y
A
A
B
Y Y
C Y
B
D
S3
A
B Y
S2
C
S1 A
B
CN+4/
Y
S0 C
A
A Y
CN+4/
A B Y B
B Y C
C A A
S3 S2 S1 S0 M =1 M =0 Cn = 1 (no carry)
Y B Y
X
A B C
B Y
A
C
B
Y
C X
B3 D
0 0 0 0 F = !A F=A
A
Y
F3
B
B3, A3
A
A A Y A
F = !(A or B) F = A or B
Y B Y B Y
F3
B C
A
B Y
B
0 0 0 1
A Y C
A3
A
F = !A and B F = A or !B
B Y
A
C
A
0 0 1 0
B
Y B
C Y
C
F = !A and B F = -1
D
D
B Y
A
B Y
0 0 1 1
C A C
Y
A B A
C B
B2
F = !B F = (A or B) + (A and !B)
A
B
Y
F2 0 1 0 1
B2, A2
A
A A Y A
Y B Y B Y
F2
F = A xor B F=A-B-1
B C B
A Y
A
B
Y
0 1 1 0
A2 C
D
C
Y B
C
Y
0 1 1 1
A
Y A=B
F = !A or B F = A + (A and B)
A
A B
B
C
Y
A
B
C
D
Y
A=B 1 0 0 0
Y
A B
B Y
1 0 0 1 F = A xnor B F=A+B
C
B1
B1, A1
B
A A
A
Y A
1 0 1 0
Y B Y B Y
F1
B C B
A1
A Y
A
B
C
Y
A
1 0 1 1 F = A and B F = (A and B) - 1
Y
A B
F=1 F=A+A
Y
B
1 1 0 0
A
1 1 0 1 F = A or !B F = (A or B) + A
B Y
C A
Y
A B
B Y
F = A or B F = (A or !B) + A
C
B0 1 1 1 0
A
F0
Y
F=A F=A-1
B
B0, A0 1 1 1 1
A
A A Y A
Y B Y B Y
F0
B C B
M M
CN/ CN/
A. Mäder 593
ALU: 74181 – Funktionstabelle
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
4 5 6 7
2
1
'181 0 1 1 1 F = A and !B F = (A and !B) - 1
8 9 A B B2 F0
0
C D E F
- + B1
A=B Flag 1 0 0 0 F = !A or B F = A + (A and B)
Y 1 0 1 1 F = A and B F = (A and B) - 1
M
M
X
1 1 0 0 F=1 F=A+A
1 1 1 0 F = A or B F = (A or !B) + A
1 1 1 1 F=A F=A-1
A. Mäder 594
ALU: 74181 und 74182 CLA
12-bit ALU mit Carry-Lookahead Generator 74182
9.8 Schaltnetze - ALU (Arithmetisch-Logische Einheit) 64-040 Rechnerstrukturen und Betriebssysteme
F3,F0
0 1 2 3
4 5 6 7
8 9 A B
C D E F
- +
C_OUT
i2
CN_in
0 0 C_IN 0
A. Mäder 595
Zeitverhalten einer Schaltung: Modellierung
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 596
Gatterverzögerung vs. Leitungslaufzeiten
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
0.7 sec
A
gate-delay
B
0.7 sec
X
wire- and
gate-delay
Y
A. Mäder 597
Gatterverzögerung vs. Leitungslaufzeiten (cont.)
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
I Leitungslaufzeiten
lokale Leitungen: schneller (weil Strukturen kleiner)
I
SIA’97 [Link]
A. Mäder 598
Zeitverhalten
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
I mögliche Verfeinerungen
I gatterabhängige Schaltzeiten für INV, NAND, NOR, XOR etc.
I unterschiedliche Schaltzeiten für Wechsel: 0→1 und 1→0
I unterschiedliche Schaltzeiten für 2-, 3-, 4-Input Gatter
I Schaltzeiten sind abhängig von der Anzahl nachfolgender
Eingänge (engl. fanout)
A. Mäder 599
Exkurs: Lichtgeschwindigkeit und Taktraten
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
Abschätzungen:
I Prozessor: ca. 3 cm Diagonale < 10 GHz Taktrate
I Platine: ca. 20 cm Kantenlänge < 1 GHz Takt
⇒ prinzipiell kann (schon heute) ein Signal innerhalb eines Takts
nicht von einer Ecke des ICs zur Anderen gelangen
A. Mäder 600
Impulsdiagramme
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 601
Impulsdiagramm: Beispiel
9.9 Schaltnetze - Zeitverhalten von Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
1
A
0
1
B
0
1
A B
0
1
A B
0
1
A
0
1
A A
0
t 2t 3t 4t 5t 6t 7t ...
A. Mäder 603
Hazards: Klassifikation
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 604
Hazards: statisch vs. dynamisch
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
statischer 0-Hazard
statischer 1-Hazard
dynamischer 0-Hazard
dynamischer 1-Hazard
A. Mäder 606
Strukturhazards: Beispiele
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
t= 0.3 sec t= 0.1 sec 0-hazard t= 0.3 sec t= 0.1 sec 1-hazard
0-Hazard 1-Hazard
A B
t= 0.3 sec t= 0.3 sec t= 0.3 sec t= 0.3 sec t= 0.3 sec
...
t= 0.1 sec
Y
C
A. Mäder 607
Strukturhazards: Beispiele (cont.)
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 608
Strukturhazards extrem: NAND-Kette
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
out
in
A. Mäder 609
Strukturhazards extrem: NAND-Kette (cont.)
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 610
Strukturhazards im KV-Diagramm
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x2 00 01 11 10 x2 00 01 11 10
0 0 0 1 0 0 0 0 1 0
1 1 1 1 0 1 1 1 1 0
A. Mäder 611
Strukturhazards im KV-Diagramm (cont.)
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
X0
X0
X1.X0
X1
X1
f
i3
X2./X1
X2
X2
A. Mäder 612
Strukturhazards beseitigen
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
x1 x0 x1 x0
x2 00 01 11 10 x2 00 01 11 10
0 0 0 1 0 0 0 0 1 0
1 1 1 1 0 1 1 1 1 0
A. Mäder 613
Strukturhazards beseitigen (cont.)
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
X0
X0
X1.X0
X1
X1
f
i3
X2./X1
X2
X2
X2.X0
A. Mäder 614
Hazards: Funktionshazard
9.10 Schaltnetze - Hazards 64-040 Rechnerstrukturen und Betriebssysteme
1 1 1 1 0 1 1 1 1 0
A. Mäder 615
Literatur
9.11 Schaltnetze - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 616
Literatur (cont.)
9.11 Schaltnetze - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 617
Interaktives Lehrmaterial
9.11 Schaltnetze - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 618
Gliederung
10 Schaltwerke 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
Definition und Modelle
Asynchrone (ungetaktete) Schaltungen
Synchrone (getaktete) Schaltungen
A. Mäder 619
Gliederung (cont.)
10 Schaltwerke 64-040 Rechnerstrukturen und Betriebssysteme
Flipflops
RS-Flipflop
D-Latch
D-Flipflop
JK-Flipflop
Hades
Zeitbedingungen
Taktschemata
Beschreibung von Schaltwerken
Entwurf von Schaltwerken
Beispiele
Ampelsteuerung
Zählschaltungen
verschiedene Beispiele
Literatur
11. Rechnerarchitektur I
A. Mäder 620
Gliederung (cont.)
10 Schaltwerke 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 621
Schaltwerke
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 622
Schaltwerke: Blockschaltbild
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
Eingangsvariablen x Ausgangsvariablen y
Schaltnetz
Taktsignal
A. Mäder 623
Schaltwerke: Blockschaltbild (cont.)
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
Eingangsvariablen x Ausgangsvariablen y
Schaltnetz
Taktsignal
A. Mäder 624
Synchrone und Asynchrone Schaltwerke
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 625
Theorie: Endliche Automaten
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 626
Mealy-Modell und Moore-Modell
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 627
Mealy-Modell und Moore-Modell (cont.)
10.1 Schaltwerke - Definition und Modelle 64-040 Rechnerstrukturen und Betriebssysteme
I Mealy-Automat Moore-Automat
λ y λ y
x x
z
δ z+ z
δ z+
τ τ
A. Mäder 628
Asynchrone Schaltungen: Beispiel Ringoszillator
10.2 Schaltwerke - Asynchrone (ungetaktete) Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
value 1
000008284
reset-counter
A. Mäder 629
Asynchrone Schaltungen: Beispiel Ringoszillator (cont.)
10.2 Schaltwerke - Asynchrone (ungetaktete) Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 630
Asynchrone Schaltungen: Probleme
10.2 Schaltwerke - Asynchrone (ungetaktete) Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 631
Synchrone Schaltungen
10.3 Schaltwerke - Synchrone (getaktete) Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 632
Zeitglieder / Flipflops
10.3 Schaltwerke - Synchrone (getaktete) Schaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 633
Flipflops
10.4 Schaltwerke - Flipflops 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 634
Flipflops: Typen
10.4 Schaltwerke - Flipflops 64-040 Rechnerstrukturen und Betriebssysteme
I Basis-Flipflop „Reset-Set-Flipflop“
I getaktetes RS-Flipflop
I JK-Flipflop
I weitere. . .
A. Mäder 635
RS-Flipflop: NAND- und NOR-Realisierung
10.4.1 Schaltwerke - Flipflops - RS-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
/S /S /R Q NQ NAND
Q
0 0 1 1 forbidden
0 1 1 0
1 0 0 1
NQ 1 1 Q* NQ* store
/R
R
Q S R Q NQ NOR
0 0 Q* NQ* store
0 1 0 1
1 0 1 0
NQ
S 1 1 0 0 forbidden
A. Mäder 636
RS-Flipflop: Varianten des Schaltbilds
10.4.1 Schaltwerke - Flipflops - RS-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
/S
_Q
_NQ
/R
_Q1
/S1
_NQ1
/R1
A. Mäder 637
NOR RS-Flipflop: Zustandsdiagramm und Flusstafel
10.4.1 Schaltwerke - Flipflops - RS-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
Eingabe [S R]
00 01 11 10
Zustand Folgezustand [Q Q]
11
00 11 01 00 10
01 01 01 00 00
00 11 00 00 00 00
10 01
10 10 00 00 10
stabiler Zustand
00
*0 0*
*1 1*
10 01
**
11
A. Mäder 638
RS-Flipflop mit Takt
10.4.1 Schaltwerke - Flipflops - RS-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
I Struktur
R C S R Q NQ NOR
Q
0 X X Q* NQ* store
C 1 0 0 Q* NQ* store
1 0 1 0 1
NQ 1 1 0 1 0
S
1 1 1 0 0 forbidden
I Q = (NQ ∨ (R ∧ C))
NQ = (Q ∨ (S ∧ C))
A. Mäder 639
RS-Flipflop mit Takt (cont.)
10.4.1 Schaltwerke - Flipflops - RS-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
I Impulsdiagramm
S
NQ
I Q = (NQ ∨ (R ∧ C))
NQ = (Q ∨ (S ∧ C))
A. Mäder 640
Pegelgesteuertes D-Flipflop (D-Latch)
10.4.2 Schaltwerke - Flipflops - D-Latch 64-040 Rechnerstrukturen und Betriebssysteme
I Takteingang C
I Dateneingang D
I aktueller Zustand Q, Folgezustand Q+
C D Q+
0 0 Q
0 1 Q
1 0 0
1 1 1
I Wert am Dateneingang wird durchgeleitet, wenn das Taktsignal
1 ist ⇒ high-aktiv
0 ist ⇒ low-aktiv
A. Mäder 641
Pegelgesteuertes D-Flipflop (D-Latch) (cont.)
10.4.2 Schaltwerke - Flipflops - D-Latch 64-040 Rechnerstrukturen und Betriebssysteme
NQ
I Symbol
A. Mäder 642
D-Latch: Zustandsdiagramm und Flusstafel
10.4.2 Schaltwerke - Flipflops - D-Latch 64-040 Rechnerstrukturen und Betriebssysteme
Eingabe [C D]
10
00 01 11 10
0*
Zustand [Q] Folgezustand [Q+ ]
0 0 0 0 1 0
1 1 1 1 0
11 stabiler Zustand
10
1
11
0*
A. Mäder 643
Flankengesteuertes D-Flipflop
10.4.3 Schaltwerke - Flipflops - D-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
I Takteingang C
I Dateneingang D
I aktueller Zustand Q, Folgezustand Q+
C D Q+
0 ∗ Q
1 ∗ Q
↑ 0 0
↑ 1 1
I Wert am Dateneingang wird gespeichert, wenn das Taktsignal
sich von 0 auf 1 ändert ⇒ Vorderflankensteuerung
–"– 1 auf 0 ändert ⇒ Rückflankensteuerung
I Realisierung als Master-Slave Flipflop oder direkt
A. Mäder 644
Master-Slave D-Flipflop
10.4.3 Schaltwerke - Flipflops - D-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 645
Master-Slave D-Flipflop (cont.)
10.4.3 Schaltwerke - Flipflops - D-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
NQ
A. Mäder 646
Vorderflanken-gesteuertes D-Flipflop
10.4.3 Schaltwerke - Flipflops - D-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
NQ
D
A. Mäder 647
JK-Flipflop
10.4.4 Schaltwerke - Flipflops - JK-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
I Takteingang C
I Steuereingänge J („jump“) und K („kill“)
I aktueller Zustand Q, Folgezustand Q+
C J K Q+ Funktion
∗ ∗ ∗ Q Wert gespeichert
↑ 0 0 Q Wert gespeichert
↑ 0 1 0 Rücksetzen
↑ 1 0 1 Setzen
↑ 1 1 Q Invertieren
I universelles Flipflop, sehr flexibel einsetzbar
I in integrierten Schaltungen nur noch selten verwendet
(höherer Hardware-Aufwand als Latch/D-Flipflop)
A. Mäder 648
JK-Flipflop: Realisierung mit D-Flipflop
10.4.4 Schaltwerke - Flipflops - JK-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
clk
A. Mäder 649
JK-Flipflop: Realisierung als Master-Slave Schaltung
10.4.4 Schaltwerke - Flipflops - JK-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
J
Q
NQ
K
A. Mäder 650
JK-Flipflop: tatsächliche Schaltung im IC 7476
10.4.4 Schaltwerke - Flipflops - JK-Flipflop 64-040 Rechnerstrukturen und Betriebssysteme
Q /Q
nPRESET
CLOCK
nCLEAR
A. Mäder 651
Flipflop-Typen: Komponenten/Symbole in Hades
10.4.5 Schaltwerke - Flipflops - Hades 64-040 Rechnerstrukturen und Betriebssysteme
D1 Q1 D3 Q3
nSET4
D2 Q2 D4 Q4
NR2 nRESET4
JK flipflop
J5
nCLK5 Q5
K5 NQ5
nRESET5
D8 Q8 D9 Q9
A. Mäder 652
Flipflop-Typen: Impulsdiagramme
10.4.5 Schaltwerke - Flipflops - Hades 64-040 Rechnerstrukturen und Betriebssysteme
1
C
0
1
D
0
1
Q (D-Latch)
0
1
Q (D-FF)
0
A. Mäder 654
Flipflops: Vorlauf- und Haltezeit
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
ts th
tFF
A. Mäder 655
Zeitbedingungen: Eingangsvektor
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
λ y
thold tsetup
τδmin
x τδ
τδmax
z δ z+
Takt t1 t2
tFF
Takt
A. Mäder 656
Zeitbedingungen: Eingangsvektor (cont.)
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 657
Zeitbedingungen: interner Zustand
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
τδmax
λ y
tFF
τδmin
x δ
thold tsetup
z τδ z+
Takt t1 t2
tFF
Takt
A. Mäder 658
Zeitbedingungen: interner Zustand (cont.)
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 659
Zeitbedingungen: interner Zustand (cont.)
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
τδmax
tFF
τδmin
thold tsetup
Takt t1 t2
A. Mäder 660
Maximale Taktfrequenz einer Schaltung
10.5 Schaltwerke - Zeitbedingungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 661
Taktsignal: Prinzip
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
0
t
0
t
Periode
A. Mäder 662
Taktsignal: Varianten
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 663
Taktsignal: Varianten (cont.)
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
0
t
1
Pegelsteuerung
0
t
1
Vorderflanke
0
t
1
Rückflanke
0
t
A. Mäder 664
Taktsignal: Prinzip und Realität
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
0
t
0
t
0
t
I Werteverläufe in realen Schaltungen stark gestört
I Überschwingen/Übersprechen benachbarter Signale
I Flankensteilheit nicht garantiert (bei starker Belastung)
ggf. besondere Gatter („Schmitt-Trigger“)
A. Mäder 665
Problem mit Pegelsteuerung
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 666
Zweiphasentakt
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 667
Zweiphasentakt (cont.)
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
0
t
1
0
t
Φ1 D Q
0
t
1
0
Φ2 Φ1 Φ2
t
I nicht überlappender Takt mit Phasen Φ1 und Φ2
I vorderes D-Latch übernimmt Eingangswert D während Φ1
bei Φ2 übernimmt das hintere D-Latch und liefert Q
A. Mäder 668
Zweiphasentakt: Erzeugung
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
t_delay = 5 nsec.
CLK
PHI1
PHI2
PHI4
A. Mäder 669
Zweiphasentakt: Erzeugung (cont.)
10.6 Schaltwerke - Taktschemata 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 670
Beschreibung von Schaltwerken
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
I algebraische Formeln/Gleichungen
I Flusstafel und Ausgangstafel
I Zustandsdiagramm
I State-Charts (hierarchische Zustandsdiagramme)
I Programme (Hardwarebeschreibungssprachen)
A. Mäder 671
Flusstafel und Ausgangstafel
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 672
Beispiel: Ampel
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
I Flusstafel
Zustand Codierung Folgezustand
z1 z0 z1+ z0+
rot 0 0 0 1
rot-gelb 0 1 1 0
grün 1 0 1 1
gelb 1 1 0 0
A. Mäder 673
Beispiel: Ampel (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
I Ausgangstafel
Zustand Codierung Ausgänge
z1 z0 rt ge gr
rot 0 0 1 0 0
rot-gelb 0 1 1 1 0
grün 1 0 0 0 1
gelb 1 1 0 1 0
A. Mäder 674
Zustandsdiagramm
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 675
Zustandsdiagramm: Moore-Automat
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
x B
Zustand
A 100
x 1 Name
000
Ausgangs-
werte
y y C Übergang
D 110
Bedingung
100 x x
A. Mäder 676
Zustandsdiagramm: Mealy-Automat
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
x / 100
B Zustand
A x / 111 1 / 110
Name
A. Mäder 677
„State-Charts“
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
I erweiterte Zustandsdiagramme
1. Hierarchien, erlauben Abstraktion
I Knoten repräsentieren entweder einen Zustand
I oder einen eigenen (Unter-) Automaten
I History-, Default-Mechanismen
2. Nebenläufigkeit, parallel arbeitende FSMs
3. Timer, Zustände nach max. Zeit verlassen
A. Mäder 678
„State-Charts“ (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel Digitaluhr
A. Mäder 679
Endliche Automaten
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 680
Endliche Automaten (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
I in der Programmierung . . .
Erkennung des Worts: „a b a“
a b a
S0 S1 S2 S3
b
a
b
S4
a,b
A. Mäder 681
Endliche Automaten (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
[Link]/tutorials/
finite-state-machines-theory-and-implementation--gamedev-11867
A. Mäder 682
Endliche Automaten (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
Accept setSucceeded
PENDING ACTIVE SUCCEEDED
setRejected
setAborted
CancelRequest CancelRequest
REJECTED
setSucceeded
setRejected
RECALLING PREEMPTING ABORTED
Accept setAborted
setCancelled setCancelled
Client Triggered
Server Triggered
[Link]/actionlib/DetailedDescription
A. Mäder 683
Endliche Automaten (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
WAITING FOR
GOAL ACK
[PENDING] [ACTIVE]
Client Triggered
[PREEMPTED]
WAITING FOR
RECALLING [RECALLED]
[REJECTED] RESULT
[Link]/actionlib/DetailedDescription
A. Mäder 684
Endliche Automaten (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
[Link]/doc/libs/1_71_0/libs/statechart/doc
A. Mäder 685
Endliche Automaten (cont.)
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
[Link]/pnp-software/fwprofile, [Link]/fwprofile
A. Mäder 686
Hardwarebeschreibungssprachen
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 687
D-Flipflop in Verilog
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 688
D-Flipflop in VHDL
Very High Speed Integrated Circuit Hardware Description Language
10.7 Schaltwerke - Beschreibung von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
library ieee;
use ieee. std_logic_1164 .all;
A. Mäder 689
Entwurf von Schaltwerken: sechs Schritte
10.8 Schaltwerke - Entwurf von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 690
Entwurf von Schaltwerken: Zustandscodierung
10.8 Schaltwerke - Entwurf von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 691
Entwurf von Schaltwerken: Probleme
10.8 Schaltwerke - Entwurf von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 692
Überprüfung der Vollständigkeit
10.8 Schaltwerke - Entwurf von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 693
Überprüfung der Widerspruchsfreiheit
10.8 Schaltwerke - Entwurf von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 694
Vollständigkeit und Widerspruchsfreiheit: Beispiel
10.8 Schaltwerke - Entwurf von Schaltwerken 64-040 Rechnerstrukturen und Betriebssysteme
x1
B
A x1 x0
x1
C
D
I Verkehrsampel
I drei Varianten mit unterschiedlicher Zustandscodierung
I Zählschaltungen
I einfacher Zähler, Zähler mit Enable (bzw. Stop),
I Vorwärts-Rückwärts Zähler, Realisierung mit JK-Flipflops und
D-Flipflops
I Digitaluhr
I BCD Zähler
I DCF77 Protokoll
I Siebensegment-Anzeige
A. Mäder 696
Schaltwerksentwurf: Ampel
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
Beispiel Verkehrsampel:
I drei Ausgänge: {rot, gelb, grün}
I vier Zustände: {rot, rot-gelb, grün, gelb}
I zunächst kein Eingang, feste Zustandsfolge wie oben
A. Mäder 697
Schaltwerksentwurf: Ampel – Variante 1
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 698
Schaltwerksentwurf: Ampel – Variante 1 (cont.)
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
clk
A. Mäder 699
Schaltwerksentwurf: Ampel – Variante 2
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
clk
A. Mäder 701
Schaltwerksentwurf: Ampel – Variante 3
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 702
Schaltwerksentwurf: Ampel – Variante 3 (cont.)
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
1
clk
A. Mäder 703
Schaltwerksentwurf: Ampel – Zusammenfassung
10.9.1 Schaltwerke - Beispiele - Ampelsteuerung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 704
Zählschaltungen
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
I n-bit Vorwärtszähler
I n-bit Zähler mit Stop und/oder Reset
I Vorwärts-/Rückwärtszähler
I synchrone und asynchrone Zähler
I Beispiel: Digitaluhr (BCD Zähler)
A. Mäder 705
2-bit Zähler: Zustandsdiagramm
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
00
1
11 01
1
10
A. Mäder 706
2-bit Zähler mit Enable: Zustandsdiagramm, Flusstafel
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
Eingabe e e
e
00
Zustand Folgezustand
e 00 01 00
e e
01 10 01
10 11 10
11 01
e
11 00 11
e
e
10
e
A. Mäder 707
3-bit Zähler mit Enable, Vor-/Rückwärts
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
e Eingabe ev ev e∗
e v
000
e v Zustand Folgezustand
e e
000 001 111 000
111
e v e v
001
001 010 000 001
e v e v 010 011 001 010
e v e v
011 100 010 011
e 110 010 e
100 101 011 100
101 110 100 101
e v e v
110 111 101 110
e v e v
111 000 110 111
e v e v
101 011
e e
100
e v e v
A. Mäder 708
5-bit Zähler mit Reset: Zustandsdiagramm und Flusstafel
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 709
4-bit Binärzähler mit JK-Flipflops
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
Z0 Z1 Z2 Z3
clock
A. Mäder 710
4-bit Binärzähler mit D-Flipflops (kaskadierbar)
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
carry_in
carry_out
Q0 Q1 Q2 Q3
clk
A. Mäder 711
Asynchroner n-bit Zähler/Teiler mit D-Flipflops
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
clkin/256
A. Mäder 712
Asynchrone 4-bit Vorwärts- und Rückwärtszähler
10.9.2 Schaltwerke - Beispiele - Zählschaltungen 64-040 Rechnerstrukturen und Betriebssysteme
Z0 Z1 Z2 Z3
CLK_UP
Y0 Y1 Y2 Y3
CLK_DOWN
CLK-1kHz
CLK-1Hz
fast-or-slow
slow/fast
I DCF 77 Zeitsignal
I Langwelle 77,5 KHz
I Sender nahe Frankfurt
I ganz Deutschland abgedeckt
I pro Sekunde wird ein Bit übertragen
I Puls mit abgesenktem Signalpegel: „Amplitudenmodulation“
I Pulslänge: 100 ms entspricht Null, 200 ms entspricht Eins
I Pulsbeginn ist Sekundenbeginn
I pro Minute werden 59 Bits übertragen
I Uhrzeit hh:mm (implizit Sekunden), MEZ/MESZ
I Datum dd:mm:yy, Wochentag
I Parität
I fehlender 60ster Puls markiert Ende einer Minute
A. Mäder 715
Funkgesteuerte DCF 77 Uhr (cont.)
10.9.3 Schaltwerke - Beispiele - verschiedene Beispiele 64-040 Rechnerstrukturen und Betriebssysteme
47 0/1 4 – s.o. – 0
48 0/1 8 – s.o. – 0 =2
49 0/1 10 Kalendermonat – Stelle 10 1 =1
50 0/1 1 Kalenderjahr – Stelle 1 1
51 0/1 2 – s.o. – 0
52 0/1 4 – s.o. – 0
53 0/1 8 – s.o. – 1 =9
54 0/1 10 Kalenderjahr – Stelle 10 1
55 0/1 20 – s.o. – 0
56 0/1 40 – s.o. – 0
57 0/1 80 – s.o. – 0 =1
58 0/1 Prüfbit zu 36 . . . 57 (even) 1
59 – Marke fehlt, weder 0 noch 1 wird gesendet
Beispiel: Mo. 02.12.19: 19.35
A. Mäder 716
Funkgesteuerte DCF 77 Uhr: Gesamtsystem
10.9.3 Schaltwerke - Beispiele - verschiedene Beispiele 64-040 Rechnerstrukturen und Betriebssysteme
i16
clocks mins_1
shifter
mins_10
DCF-77 sender
dcf_in
hrs_1
[Link]
5/9/97
i15
hrs_10
A. Mäder 717
Multiplex-Siebensegment-Anzeige
10.9.3 Schaltwerke - Beispiele - verschiedene Beispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 718
Multiplex-Siebensegment-Anzeige (cont.)
10.9.3 Schaltwerke - Beispiele - verschiedene Beispiele 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 719
Multiplex-Siebensegment-Anzeige (cont.)
10.9.3 Schaltwerke - Beispiele - verschiedene Beispiele 64-040 Rechnerstrukturen und Betriebssysteme
7-segment decoder
1 0
'49
RAM
'219
1
0
'590
1:n decoder
3:8
counter
A. Mäder 720
Literatur
10.10 Schaltwerke - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 721
Interaktives Lehrmaterial
10.10 Schaltwerke - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 722
Gliederung
11 Rechnerarchitektur I 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
Motivation
von-Neumann Rechner
A. Mäder 723
Gliederung (cont.)
11 Rechnerarchitektur I 64-040 Rechnerstrukturen und Betriebssysteme
Beschreibungsebenen
Software
HW Abstraktionsebenen
Hardwarestruktur
Speicherbausteine
Busse
Mikroprogrammierung
Beispielsystem: ARM
Wie rechnet ein Rechner?
Literatur
12. Instruction Set Architecture
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 724
Was ist Rechnerarchitektur?
11.1 Rechnerarchitektur I - Motivation 64-040 Rechnerstrukturen und Betriebssysteme
Definitionen
1. The term architecture is used here to describe the attributes of a system as
seen by the programmer, i.e., the conceptual structure and functional
behaviour, as distinct from the organization and data flow and control, the
logical and the physical implementation. [Amdahl, Blaauw, Brooks]
A. Mäder 725
Was ist Rechnerarchitektur? (cont.)
11.1 Rechnerarchitektur I - Motivation 64-040 Rechnerstrukturen und Betriebssysteme
From these building blocks the computer architect can construct anyone of
a number of different types of computers, ranging from the smallest
hand-held pocket-calculator to the largest ultra-fast super computer. The
functional behaviour of the components of one computer are similar to that
of any other computer, whether it be ultra-small or ultra-fast.
By this we mean that a memory performs the storage function, an adder
does addition, and an input/output interface passes data from a processor
to the outside world, regardless of the nature of the computer in which
they are embedded. The major differences between computers lie in the
way of the modules are connected together, and the way the computer
system is controlled by the programs. In short, computer architecture is the
discipline devoted to the design of highly specific and individual computers
from a collection of common building blocks. [Stone]
A. Mäder 726
Rechnerarchitektur: zwei Aspekte
11.1 Rechnerarchitektur I - Motivation 64-040 Rechnerstrukturen und Betriebssysteme
1. Operationsprinzip:
das funktionelle Verhalten der Architektur Befehlssatz
= Programmierschnittstelle
= ISA – Instruction Set Architecture
Befehlssatzarchitektur
= Maschinenorganisation: Wie werden Befehle abgearbeitet?
2. Hardwarearchitektur:
der strukturelle Aufbau des Rechnersystems Mikroarchitektur
= Art und Anzahl der Hardware-Betriebsmittel +
die Verbindungs- / Kommunikationseinrichtungen
= (technische) Implementierung
A. Mäder 727
Wdh. von-Neumann Konzept
11.2 Rechnerarchitektur I - von-Neumann Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 728
Wdh. Programmverarbeitung
11.2 Rechnerarchitektur I - von-Neumann Rechner 64-040 Rechnerstrukturen und Betriebssysteme
Operation ausführen,
Befehlszähler um 1 erhöhen
oder Sprungadresse laden
Programmende?
Nein
Ja
Ende
A. Mäder 729
Wdh. Programmverarbeitung (cont.)
11.2 Rechnerarchitektur I - von-Neumann Rechner 64-040 Rechnerstrukturen und Betriebssysteme
I Ausführungszyklus
Instruction
Befehl aus Programmspeicher holen
Fetch
Operand
Operanden ermitteln und laden
Fetch
Next
Folgeoperation ermitteln
Instruction
A. Mäder 730
Wdh. von-Neumann Rechner
11.2 Rechnerarchitektur I - von-Neumann Rechner 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 731
Wdh. von-Neumann Rechner (cont.)
11.2 Rechnerarchitektur I - von-Neumann Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 732
Wdh. Hardwareaufbau / Rechnerarchitektur
11.2 Rechnerarchitektur I - von-Neumann Rechner 64-040 Rechnerstrukturen und Betriebssysteme
0 0 0
A A A
NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU OPC
ALU OPC
ALU
A1 A0 COUT Y A1 A0 COUT Y A1 A0 COUT Y
S 2:1 Y
S 2:1 Y
S 2:1 Y
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
0 0 0
select_addr_mux select_addr_mux select_addr_mux
clock
RAM clock
RAM clock
RAM
CLK enable_areg A CLK enable_areg A CLK enable_areg A
BR AR BR AR BR AR
D D D D D D
ENA ENA ENA ENA ENA ENA
0 0 0
A A A
NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN NR 00_H
Q
NR 00_H
Q Y A B CIN
OPC
ALU OPC
ALU OPC
ALU
A1 A0 COUT Y A1 A0 COUT Y A1 A0 COUT Y
S 2:1 Y
S 2:1 Y
S 2:1 Y
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
NR 00_H
Q
0 0 0
select_addr_mux select_addr_mux select_addr_mux
clock
RAM clock
RAM clock
RAM
CLK enable_areg A CLK enable_areg A CLK enable_areg A
[BO15]
Virtual memory
Files
A. Mäder 734
Das Compilierungssystem
11.3.1 Rechnerarchitektur I - Beschreibungsebenen - Software 64-040 Rechnerstrukturen und Betriebssysteme
printf.o
Pre-
hello.c hello.i Compiler hello.s Assembler hello.o Linker hello
processor
(cc1) (as) (ld)
(cpp)
Source Modified Assembly Relocatable Executable
program source program object object
(text) program (text) programs program
(text) (binary) (binary)
[BO15]
A. Mäder 735
Das Compilierungssystem (cont.)
11.3.1 Rechnerarchitektur I - Beschreibungsebenen - Software 64-040 Rechnerstrukturen und Betriebssysteme
temp = v[k];
High Level Language
Program v[k] = v[k+1];
v[k+1] = temp;
Compiler
lw $15, 0($2)
Assembly Language lw $16, 4($2)
Program sw $16, 0($2)
sw $15, 4($2)
Assembler
0000 1001 1100 0110 1010 1111 0101 1000
Machine Language 1010 1111 0101 1000 0000 1001 1100 0110
Program 1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
Machine Interpretation
Control Signal
Specification ALUOP[0:3] <= InstReg[9:11] & MASK
[PH16b]
A. Mäder 736
Abstraktion im VLSI-Entwurf
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
Hardware Abstraktionsebenen
− keine einheitliche Bezeichnung in der Literatur
I Architekturebene
I Funktion/Verhalten Leistungsanforderungen
I Struktur Netzwerk
aus Prozessoren, Speicher, Busse, Controller . . .
I Nachrichten Programme, Prokolle
I Geometrie Systempartitionierung
I/O
CPU Speicher
Control
Datenbus
Adressbus
A. Mäder 737
Abstraktion im VLSI-Entwurf (cont.)
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
flags
OPW control STW CPU
DB
AB
A. Mäder 738
Abstraktion im VLSI-Entwurf (cont.)
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
I Register-Transfer Ebene
I Funktion/Verhalten Daten- und Kontrollfluss, Automaten . . .
I Struktur RT-Diagramm
aus Register, Multiplexer, ALUs . . .
I Nachrichten Zahlencodierungen, Binärworte . . .
I Geometrie Floorplan
OPW
ALU aluOp
Res
ldAccu enDB
Accu
DB
A. Mäder 739
Abstraktion im VLSI-Entwurf (cont.)
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
I Logikebene (Schaltwerkebene)
I Funktion/Verhalten Boole’sche Gleichungen
I Struktur Gatternetzliste, Schematic
aus Gatter, Flipflops, Latches . . .
I Nachrichten Bit
I Geometrie Moduln
ALU
A. Mäder 740
Abstraktion im VLSI-Entwurf (cont.)
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
o
i1
i2
gnd
A. Mäder 741
Abstraktion im VLSI-Entwurf (cont.)
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 742
Y-Diagramm
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
Architektur
Algorithmisch
Verhalten Struktur
Funktional
Systemspezifikation CPU, Speicher Netzwerk
Polygone
Moduln
Floorplan
Cluster
Systempartitionierung
D. Gajski, R. Kuhn 1983:
Geometrie „New VLSI Tools“ [GK83]
A. Mäder 743
Y-Diagramm (cont.)
11.3.2 Rechnerarchitektur I - Beschreibungsebenen - HW Abstraktionsebenen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 744
Systemmodellierung
11.4 Rechnerarchitektur I - Hardwarestruktur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 745
Rechnerarchitektur: Hardwarestruktur
11.4 Rechnerarchitektur I - Hardwarestruktur 64-040 Rechnerstrukturen und Betriebssysteme
I bisher:
I Gatter und Schaltnetze
I Flipflops als einzelne Speicherglieder
I Schaltwerke zur Ablaufsteuerung
A. Mäder 746
Speicher
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
I Klassifikation
I Speicherkapazität?
I Schreibzugriffe möglich?
I Schreibzugriffe auf einzelne Bits/Bytes oder nur Blöcke?
I Information flüchtig oder dauerhaft gespeichert?
I Zugriffszeiten beim Lesen und Schreiben
I Technologie
A. Mäder 747
Speicherbausteine: Varianten
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
byte- Typische
Typ Kategorie Löschen adressierbar flüchtig Anwendung
SRAM Lesen/Schreiben elektrisch ja ja Level-2 Cache
DRAM Lesen/Schreiben elektrisch ja ja Hauptspeicher
(alt)
SDRAM Lesen/Schreiben elektrisch ja ja Hauptspeicher
ROM nur Lesen — nein nein Geräte in großen
Stückzahlen
PROM nur Lesen — nein nein Geräte in kleinen
Stückzahlen
EPROM vorw. Lesen UV-Licht nein nein Prototypen
EEPROM vorw. Lesen elektrisch ja nein Prototypen
Flash Lesen/Schreiben elektrisch nein nein Speicherkarten,
Mobile Geräte,
SSDs
A. Mäder 748
ROM: Read-Only Memory
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
address input
A3 wordline 15
0 1 2 3
4 5 6 7 A2 wordline 14
8 9 A B
C D E F A1 wordline 13
- +
A0 . . .
[a]
memory matrix
4:16
wordline 1
wordline 0
address-decoder
bitline 7 bitline 0
output buffers
[HenHA] Hades Webdemo:
40-memories/20-rom/rom
D7 D6 D5 D4 D3 D2 D1 D0
A. Mäder 749
RAM: Random-Access Memory
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 750
RAM: Blockschaltbild
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
write
nWriteEnable buffers
bitline 0 (in)
wordline 3
A1
A0
wordline 2
Addr.
Decoder latch latch latch latch
nWriteEnable
2:4
wordline 1
2-bit Adresse
4-bit Datenwort wordline 0
bitline 0 (out)
output
nChipSelect buffers
ras
decoder
array of
latch
memory
cells
A[n:0]
latch
mux
data
cas out
Furber: ARM SoC Architecture [Fur00]
A. Mäder 752
SRAM: statisches RAM
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 753
SRAM: Sechs-Transistor Speicherstelle („6T“)
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
DATA_IN data_in
/write_enable
nENA_BITLINE
wordline (address)
WORDLINE
bitline /bitline
Datenwort 0x801B
in Adresse 0x006
andere Speicherworte
noch ungültig
A. Mäder 755
SRAM: Beispiel IC 6116
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 756
DRAM: dynamisches RAM
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 757
SRAM vs. DRAM
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
wordline wordline
T
T T
2 Inverter = 4T C
VCC
...
sense-amp
data-out
GND
I 6 Transistoren/bit I 1 Transistor/bit
I statisch (kein refresh) I C = 5 fF ≈ 47 000 Elektronen
I schnell I langsam (sense-amp)
I 10 . . . 50 × DRAM Fläche I minimale Fläche
A. Mäder 758
DRAM: Stacked- und Trench-Zelle
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
data-in
ena
wordline
Masse bitline
...
sense-amp
data-out
Wordline n+1
Row Address
2λ 2λ
Wordline n+2
Wordline n+3
8 λ2
... ... ...
/RAS
Sense- Sense-
...
Amp n Amp n+1
/CAS I/O
Column address decoder / Latch / Mux. data
Treiber
Column Address
A. Mäder 760
DRAM: Varianten
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
I veraltete Varianten
I FPM: fast-page mode
I EDO: extended data-out
I ...
I heute gebräuchlich
I SDRAM: Ansteuerung synchron zu Taktsignal
I DDR-SDRAM: double-data rate Ansteuerung wie SDRAM
Daten werden mit steigender und fallender Taktflanke übertragen
I DDR2 . . . DDR5: Varianten mit höherer Taktrate
aktuelle Übertragungsraten bis 51,2 GByte/sec pro Speicherkanal
I GDDR3 . . . GDDR6 (Graphics Double Data Rate)
derzeit bis 128 GByte/sec
I HBM . . . HBM3 (High Bandwidth Memory)
derzeit bis 512 GByte/sec
I HMC . . . HMC2 (Hybrid Memory Cube)
derzeit bis 480 GByte/sec
A. Mäder 761
SDRAM: Lesezugriff auf sequenzielle Adressen
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
mclk
seq
wait
ras
cas
D[31:0]
N cycle S cycle S cycle
[Fur00]
A. Mäder 762
Flash
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 763
Typisches Speichersystem
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
ROM0e
control
RAMwe3 RAMwe2 RAMwe1 RAMwe0
A[31:0]
various
RAMoe
we
we
we
A[n:0]
we
oe
A[n:0]
A[n:0]
oe
oe
A[n:0]
oe
A[31:0]
32-bit ARM Proz.
ARM
SRAM SRAM SRAM SRAM 4 × 8-bit SRAMs
D[31:0] D[7:0] D[7:0] D[7:0] D[7:0] 4 × 8-bit ROMs
A[m:0]
A[m:0]
A[m:0]
oe
oe
oe
oe
A. Mäder 764
Typisches Speichersystem: Adressdecodierung
11.4.1 Rechnerarchitektur I - Hardwarestruktur - Speicherbausteine 64-040 Rechnerstrukturen und Betriebssysteme
mas[0] mas[1]
A[0]A[1]
mclk
RAMwe0
RAMwe1
RAMwe2
RAMwe3
RAMoe
r/w
ROMoe
A[31] [Fur00]
A. Mäder 765
Bussysteme
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 766
Bussysteme (cont.)
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
I typische Aufgaben
I Kernkomponenten (CPU, Speicher . . . ) miteinander verbinden
I Verbindungen zu den Peripherie-Bausteinen
I Verbindungen zu Systemmonitor-Komponenten
I Verbindungen zwischen I/O-Controllern und -Geräten
I ...
Address bus
Data bus
A. Mäder 767
Bussysteme (cont.)
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 768
Bus: Mikroprozessorsysteme
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
I Steuersignale Control
I clock: Taktsignal
I read/write: Lese-/Schreibzugriff (aus Sicht des Prozessors)
I wait: Wartezeit/-zyklen für langsame Geräte
I ...
I um Leitungen zu sparen, teilweise gemeinsam genutzte
Leitungen sowohl für Adressen als auch Daten.
Zusätzliches Steuersignal zur Auswahl Adressen/Daten
A. Mäder 769
Adressbus: Evolution beim Intel x86
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
[TA14]
I typische Parameter
Symbol [ns] Min Max
TAD Adressausgabeverzögerung 4
TML Adresse ist vor MREQ stabil 2
TM MREQ-Verzögerung nach fallender Flanke von Φ in T1 3
TRL RD-Verzögerung nach fallender Flanke von Φ in T1 3
TDS Setup-Zeit vor fallender Flanke von Φ 2
TMH MREQ-Verzögerung nach fallender Flanke von Φ in T3 3
TRH RD-Verzögerung nach fallender Flanke von Φ in T3 3
TDH Hold-Zeit nach der Deaktivierung von RD 0
A. Mäder 772
Asynchroner Bus: Lesezugriff
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 773
Bus Arbitrierung
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 775
Bus Bandbreite
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
I [Link]/wiki/List_of_interface_bit_rates
A. Mäder 776
Beispiel: PCI-Bus
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
I Abwärtskompatibilität
I PCI-Bus als logische Verbindung (SW-Layer) zu Komponenten
I technisch: PCIe
I Auto-Konfiguration
I angeschlossene Geräte werden automatisch erkannt
I eindeutige Hersteller- und Geräte-Nummern
I Betriebssystem kann zugehörigen Treiber laden
I automatische Zuweisung von Adressbereichen und IRQs
A. Mäder 777
PCI-Bus: Peripheriegeräte
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
00:02.0 VGA compatible controller : Intel Corporation Sky Lake Integrated Graphics (rev 07)
Subsystem : Dell Device 06dc
Flags : bus master , fast devsel , latency 0, IRQ 134
Memory at e0000000 (64-bit , non - prefetchable ) [size =16M]
Memory at d0000000 (64-bit , prefetchable ) [size =256M]
I/O ports at f000 [size =64]
Expansion ROM at <unassigned > [ disabled ]
Capabilities : <access denied >
Kernel driver in use: i915_bpo
00:04.0 Signal processing controller : Intel Corporation Device 1903 (rev 08)
Subsystem : Dell Device 06dc
Flags : bus master , fast devsel , latency 0, IRQ 16
Memory at e1340000 (64-bit , non - prefetchable ) [size =32K]
Capabilities : <access denied >
Kernel driver in use: proc_thermal
00:14.0 USB controller : Intel Corporation Device 9d2f (rev 21) (prog -if 30 [XHCI ])
Subsystem : Dell Device 06dc
Flags : bus master , medium devsel , latency 0, IRQ 125
Memory at e1330000 (64-bit , non - prefetchable ) [size =64K]
...
A. Mäder 778
PCI-Bus: Peripheriegeräte (cont.)
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 779
PCI-Bus: Leitungen („mindestens“)
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 780
PCI-Bus: Transaktionen
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 781
RS-232: Serielle Schnittstelle
11.4.2 Rechnerarchitektur I - Hardwarestruktur - Busse 64-040 Rechnerstrukturen und Betriebssysteme
t
bi
ity
it
op
tb
r
d0
d1
d2
d3
d4
d5
d6
d7
pa
ar
st
+12V
st
-12V
s 1 1 0 0 1 0 0 0 stop = 00010011
A. Mäder 782
Ablaufsteuerung mit Mikroprogramm
11.4.3 Rechnerarchitektur I - Hardwarestruktur - Mikroprogrammierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 783
Mikroprogramm: Beispiel Ampel
11.4.3 Rechnerarchitektur I - Hardwarestruktur - Mikroprogrammierung 64-040 Rechnerstrukturen und Betriebssysteme
µROM
addr next outputs comment
0 1 0 0 1 rot
2 1 2 0 1 1 rot-gelb
µPC
2 3 1 0 0 grün
clk
3 0 0 1 0 gelb
nreset
2
rot
gelb
next grün
rot-gelb
A. Mäder 784
Mikroprogramm: Beispiel zur Auswahl des Folgezustands
11.4.3 Rechnerarchitektur I - Hardwarestruktur - Mikroprogrammierung 64-040 Rechnerstrukturen und Betriebssysteme
µROM
nextA select nextA nextB outputs comment
rot
extern µMUX.s gelb
0 grün
µMUX
0
4:1
2:1
xa 3
1
xs
A. Mäder 785
Praktikum RSB: D·CORE
11.4.3 Rechnerarchitektur I - Hardwarestruktur - Mikroprogrammierung 64-040 Rechnerstrukturen und Betriebssysteme
Steuerwerk
µPC
IR
µMUX
4:1
DECODER 2:1
C-Flag
...BUF
Reg
nWE
nWE
2 1 0
Y X PC_MUX
Adressbus RAM / ROM
MAR A 15..0
PC +2
ADD4 ALU
instruction
coprocessor
multiply
control
decode cycle
PLA count
load/store
multiple
A. Mäder 787
typisches ARM SoC System
11.4.4 Rechnerarchitektur I - Hardwarestruktur - Beispielsystem: ARM 64-040 Rechnerstrukturen und Betriebssysteme
external
bus
interface
AHB or ASB
bridge UART
DMA
controller
timer
APB
parallel i/f
function C in
logic functions adder C
V
logic/arithmetic
result mux
N
zero detect Z
result [Fur00]
read read
write A B
ALU bus
A bus
B bus
[Fur00]
A. Mäder 790
Multi-Port Registerbank: Floorplan/Chiplayout
11.4.4 Rechnerarchitektur I - Hardwarestruktur - Beispielsystem: ARM 64-040 Rechnerstrukturen und Betriebssysteme
Vss
ALU ALU
bus bus
PC PC
bus register cells
A bus
INC
B bus
bus
[Fur00]
A. Mäder 791
Kompletter Prozessor: ARM 3
11.4.4 Rechnerarchitektur I - Hardwarestruktur - Beispielsystem: ARM 64-040 Rechnerstrukturen und Betriebssysteme
Inkrementer
address register
I
Adress-Register
P
I C incrementer
PC
register
bank
I Steuerwerk
ALU
I bis ARM 7: 3-stufige Pipeline
fetch, decode, execute
data out register data in register
[Fur00] D[31:0]
A. Mäder 792
ARM Datentransfer: Register-Operationen
11.4.4 Rechnerarchitektur I - Hardwarestruktur - Beispielsystem: ARM 64-040 Rechnerstrukturen und Betriebssysteme
increment increment
Rd PC Rd PC
registers registers
Rn Rm Rn
mult mult
as ins. as ins.
as instruction as instruction
[7:0]
increment increment
PC Rn PC
registers registers
Rn Rd
mult mult
lsl #0 shifter
=A / A+ B / A- B =A + B /A - B
[11:0]
(a) 1st cycle - compute address (b) 2nd cycle – store & auto-index [Fur00]
A. Mäder 794
ARM Datentransfer: Funktionsaufruf/Sprungbefehl
11.4.4 Rechnerarchitektur I - Hardwarestruktur - Beispielsystem: ARM 64-040 Rechnerstrukturen und Betriebssysteme
increment increment
R14
registers registers
PC PC
mult mult
lsl #2 shifter
=A+ B =A
[23:0]
(a) 1st cycle - compute branch target (b) 2nd cycle - save return address [Fur00]
A. Mäder 795
Wie rechnet ein Rechner?
11.5 Rechnerarchitektur I - Wie rechnet ein Rechner? 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 796
Hardwareorganisation eines typischen Systems
11.5 Rechnerarchitektur I - Wie rechnet ein Rechner? 64-040 Rechnerstrukturen und Betriebssysteme
CPU
Register file
PC ALU
System bus Memory bus
I/O Main
Bus interface
bridge memory
CPU
Register file
PC ALU
System bus Memory bus
CPU
Register file
PC ALU
System bus Memory bus
CPU
Register file
PC ALU
System bus Memory bus
A. Mäder 801
Literatur
11.6 Rechnerarchitektur I - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 802
Literatur (cont.)
11.6 Rechnerarchitektur I - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 803
Literatur (cont.)
11.6 Rechnerarchitektur I - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 804
Gliederung
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
Speicherorganisation
A. Mäder 805
Gliederung (cont.)
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
Befehlssatz
Befehlsformate
Adressierungsarten
Intel x86-Architektur
Befehlssätze
Literatur
13. Assembler-Programmierung
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 806
Rechnerstrukturen und Betriebssysteme – Einordnung
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
Application
Operating System
Softwareentwicklung
Compiler Firmware
Instruction Set
Architecture
Vorlesung RSB Instr. Set Proc. I/O system
Datapath & Control
Digital Design
Circuit Design
Layout [PH16b]
A. Mäder 807
Befehlssatzarchitektur – ISA
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
Disk
Expansion slots for
other devices such
as network adapters
controller adapter controller
I des Verhaltens
I Organisation des programmierbaren Speichers
I Datentypen und Datenstrukturen: Codierungen und Darstellungen
I Befehlssatz
I Befehlsformate
I Modelle für Befehls- und Datenzugriffe
I Ausnahmebedingungen
A. Mäder 808
Befehlssatzarchitektur – ISA (cont.)
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
software
instruction set
hardware
[PH16b]
A. Mäder 809
Merkmale der Instruction Set Architecture
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
I Rechnerklasse Stack-/Akku-/Registermaschine
I Registersatz Anzahl und Art der Rechenregister
A. Mäder 810
Beispiele für charakteristische ISA
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 811
Artenvielfalt vom „Embedded Architekturen“
12 Instruction Set Architecture 64-040 Rechnerstrukturen und Betriebssysteme
[bit] 4 . . . 32 8 — 16 . . . 32 32 32 32 8 . . . 64 16 . . . 32
Sicherheit keine mittel keine gering gering gering gering hoch hoch
A. Mäder 812
Speicherorganisation
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
I Adressierung
I Wortbreite, Speicherkapazität
I „Big Endian“ / „Little Endian“
I „Alignment“
I „Memory-Map“
I Beispiel: PC mit Windows
I spätere Themen
I Cache-Organisation für schnelleren Zugriff
I Virtueller Speicher für Multitasking
I Synchronisation in Multiprozessorsystemen (z.B. MESI-Protokoll)
A. Mäder 813
Aufbau und Adressierung des Speichers
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 814
Hauptspeicherorganisation
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 817
Wdh. Datentypen auf Maschinenebene
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 818
Wdh. Datentypen auf Maschinenebene (cont.)
3 Data
12.1 Instruction Set Architecture - Speicherorganisation representation 64-040 Rechnerstrukturen und Betriebssysteme
Table 1. Data sizes
Microsoft
Borland
Watcom
Microsoft
Intel Windows
Borland
Watcom
Gnu v.3.x
Intel Linux
Microsoft
Intel Windows
Gnu
Intel Linux
I Prozessor
I Betriebssystem
bool 2 1 1 1 1 1 1 1 1 1 1 1 1
I Compiler char
wchar_t
1 1
2
1 1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
2
1
4
1
4
short int 2 2 2 2 2 2 2 2 2 2 2 2 2
int 2 2 2 4 4 4 4 4 4 4 4 4 4
long int 4 4 4 4 4 4 4 4 4 4 4 8 8
__int64 8 8 8 8 8 8 8 8
enum 2 2 1 4 4 4 4 4 4 4 4 4 4
float 4 4 4 4 4 4 4 4 4 4 4 4 4
double 8 8 8 8 8 8 8 8 8 8 8 8 8
long double 10 10 8 8 16 10 8 12 12 8 16 16 16
__m64 8 8 8 8 8 8
__m128 16 16 16 16 16 16 16
__m256 32 32 32 32
pointer 2 2 2 4 4 4 4 4 4 8 8 8 8
far pointer 4 4 4
function pointer 2 2 2 4 4 4 4 4 4 8 8 8 8
data member pointer 2 4 6 4 4 8 4 4 4 4 4 8 8
(min)
data member pointer 4 6 12 12 8 12 4 4 12 12 8 8
(max)
member function 2 12 6 4 4 12 4 8 8 8 8 16 16
pointer (min)
[Link]/optimize/ member function 12 6 16 16 12 16 8 8 24 24 16 16
calling_conventions.pdf pointer (max)
Table 1 shows how many bytes of storage various objects use for different compilers.
Differences in data representation can cause problems when exchanging binary data files
between programs, when exchanging data with a DLL compiled with a different compiler,
and when porting C++ code that relies on a specific data format.
A. Mäder 819
Byte-Order
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 820
Big- vs. Little Endian
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 821
Byte-Order: Beispiel
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
Dezimal: 15213
int A = 15213;
int B = -15213; Binär: 0011 1011 0110 1101
long int C = 15213; Hex: 3 B 6 D
[BO15]
A. Mäder 822
Byte-Order: Beispiel Datenstruktur
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 823
Byte-Order: Beispiel x86 und SPARC
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 824
Netzwerk Byte-Order
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 825
Beispiel: Byte-Swapping network to/from host
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
Linux: /usr/include/netinet/in.h
...
# if __BYTE_ORDER == __LITTLE_ENDIAN
# define ntohl(x) __bswap_32 (x)
# define ntohs(x) __bswap_16 (x)
# define htonl(x) __bswap_32 (x)
# define htons(x) __bswap_16 (x)
# endif
...
A. Mäder 826
Programm zum Erkennen der Byte-Order
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 827
„Misaligned“ Zugriff
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 828
Memory Map
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
ROM0e
control
RAMwe3 RAMwe2 RAMwe1 RAMwe0
A[31:0]
various
RAMoe
we
we
we
A[n:0]
we
oe
A[n:0]
A[n:0]
oe
oe
A[n:0]
oe
A[31:0]
32-bit ARM Proz.
ARM
SRAM SRAM SRAM SRAM 4 × 8-bit SRAMs
D[31:0] D[7:0] D[7:0] D[7:0] D[7:0] 4 × 8-bit ROMs
A[m:0]
A[m:0]
A[m:0]
oe
oe
oe
oe
A. Mäder 830
Adressabbildung Hardware: ARM (cont.)
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
mas[0] mas[1]
A[0]A[1]
Adressdecoder Hardware
mclk
RAMwe0
RAMwe1
RAMwe2
RAMwe3
RAMoe
r/w
ROMoe
A[31] [Fur00]
A. Mäder 831
Adressabbildung in Betriebssystemen
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
gemeinsam
genutzter 1 GiB I Kernel, Treiber usw. im oberen
Systembereich 1 GiB-Bereich
C0000000h
gemeinsam
genutzt für 1GiB I Systembibliotheken (DLLs)
Anwendungen
80000000h
privater
Adressbereich knapp 2 GiB I 2 GiB für Anwendungen
Anwendungen
A. Mäder 833
Adressabbildung in Betriebssystemen (cont.)
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
⇒ Adressbereich
A. Mäder 834
Adressabbildung in Betriebssystemen (cont.)
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
mehrstufige Abbildung:
1. alle Hardwarekomponenten, Ein-/Ausgabeeinheiten und
Interrupts ⇒ Adressbereich
2. Adressbereich ⇒ physikalischer Speicher
A. Mäder 835
Speicherhierarchie
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
L0:
Regs CPU registers hold words retrieved
from the L1 cache.
L1: L1 cache
Smaller, faster, (SRAM) L1 cache holds cache lines retrieved
and costlier from the L2 cache.
(per byte) L2: L2 cache
storage (SRAM) L2 cache holds cache lines retrieved
devices from L3 cache.
L3: L3 cache
(SRAM)
L3 cache holds cache lines retrieved
from main memory.
Larger, slower,
and cheaper L4: Main memory
(per byte) (DRAM)
storage Main memory holds disk blocks
devices retrieved from local disks.
später mehr . . .
A. Mäder 836
Speicherhierarchie: Cache
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
CPU chip
L1 Register file
cache
(SRAM) ALU
Cache bus System bus Memory bus
Main
L2 cache Memory
Bus interface memory
(SRAM) bridge
(DRAM)
[BO15]
I Cache Strategien
I Welche Daten sollen in Cache?
I Welche werden aus (vollem) Cache entfernt?
I Cache Abbildung: direct-mapped, n-fach assoz., voll assoziativ
I Cache Organisation: Größe, Wortbreite etc.
A. Mäder 837
Speicher ist wichtig!
12.1 Instruction Set Architecture - Speicherorganisation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 838
ISA-Merkmale des Prozessors
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
I Befehlszyklus
I Befehlsklassen
I Registermodell
I n-Adress Maschine
I Adressierungsarten
A. Mäder 839
Befehlszyklus
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 840
Instruction Fetch
„Befehl holen“ Phase im Befehlszyklus
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 841
Instruction Decode
„Befehl decodieren“ Phase im Befehlszyklus
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
Operand Fetch
I wird meist zu anderen Phasen hinzugezählt
RISC: Teil von Instruction Decode
CISC: –"– Instruction Execute
1. Operanden holen
A. Mäder 842
Instruction Execute
„Befehl ausführen“ Phase im Befehlszyklus
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 843
Welche Befehle braucht man?
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
Befehlsklassen Beispiele
I arithmetische Operationen add, sub, inc, dec, mult, div
logische Operationen and, or, xor
schiebe Operationen shl, sra, srl, ror
I Vergleichsoperationen cmpeq, cmpgt, cmplt
I Datentransfers load, store, I/O
I Programm-Kontrollfluss jump, jmpeq, branch, call, return
I Maschinensteuerung trap, halt, (interrupt)
A. Mäder 844
Befehls-Decodierung
12.2 Instruction Set Architecture - Befehlssatz 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 845
Befehlsformate
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
unbenutzt
Zielregister
Opcode Immediate-Wert
01001110111111100000000000001000
31 0
A. Mäder 846
Befehlsformat: drei Beispielarchitekturen
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 847
Befehlsformat: Beispiel MIPS
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
I festes Befehlsformat
I alle Befehle sind 32 Bit lang
I Opcode-Feld ist immer 6-bit breit
I codiert auch verschiedene Adressierungsmodi
wenige Befehlsformate
I R-Format
I Register-Register ALU-Operationen
I I-/J-Format
I Lade- und Speicheroperationen
I alle Operationen mit unmittelbaren Operanden
I Jump-Register
I Jump-and-Link-Register
A. Mäder 848
MIPS: Übersicht
„Microprocessor without Interlocked Pipeline Stages“
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 849
MIPS: Registermodell
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 850
MIPS: Befehlssatz
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 851
MIPS: Hardwarestruktur
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
0
M
u
x
1
Add
4 Add
Add result
Shift
left 2
Read
Instruction
[PH16b]
A. Mäder 852
MIPS: Befehlsformate
Befehl im R-Format
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
00000010111111100001100000100010
31 0
op rs rt rd shift funct
op:
I Opcode Typ des Befehls 0 = „alu-op“
rs: source register 1 erster Operand 23 = „r23“
rt: source register 2 zweiter Operand 30 = „r30“
rd: destination register Zielregister 3 = „r3“
shift: shift amount (optionales Shiften) 0 = „0“
funct: ALU function Rechenoperation 34 = „sub“
⇒ r3 = r23 - r30 sub r3, r23, r30
A. Mäder 853
MIPS: Befehlsformate
Befehl im I-Format
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
10001101000001010000000000000110
31 0
op rs rt address
op:
I Opcode Typ des Befehls 35 = „lw“
rs: base register Basisadresse 8 = „r8“
rt: destination register Zielregister 5 = „r5“
addr: address offset Offset 6 = „6“
⇒ r5 = MEM[r8+6] lw r5, 6(r8)
A. Mäder 854
Befehlsformat: Beispiel M·CORE
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 855
D·CORE
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
I ähnlich M·CORE
I gleiches Registermodell, aber nur 16-bit Wortbreite
I Program Counter PC
I 16 Universalregister R0 . . . R15
I Statusregister C („carry flag“)
A. Mäder 856
D·CORE: Registermodell
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
15 0 15 0
R0 (SP) PC IR
R1
R2 C - Befehlsregister
R3
R4 - 16 Universalregister
R5 - Programmzähler MAR
R6 - 1 Carry-Flag
R7 MDR
R8
R9 MRR
R10
R11 nWE
R12
R13 nOE
R14
R15 (Link) - Bus-Interface
Befehl Funktion
mov move register
addu, addc Addition (ohne, mit Carry)
subu Subtraktion
and, or, xor logische Operationen
lsl, lsr, asr logische, arithmetische Shifts
cmpe, cmpne . . . Vergleichsoperationen
movi, addi . . . Operationen mit Immediate-Operanden
ldw, stw Speicherzugriffe, load/store
br, jmp unbedingte Sprünge
bt, bf bedingte Sprünge
jsr Unterprogrammaufruf
trap Software interrupt
rfi return from interrupt
A. Mäder 858
D·CORE: Befehlsformate
12.3 Instruction Set Architecture - Befehlsformate 64-040 Rechnerstrukturen und Betriebssysteme
15 12 8 4 0 15 12 8 4 0
15 12 8 4 0 IR<11:0> IMM12
OPC sub-opc imm4 RX Immediate
[Link]
15 0
[Link]
15 0
A. Mäder 859
Adressierungsarten
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 860
Beispiel: Add-Befehl
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 861
Beispiel: Datenpfad
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
I Register (-bank)
I liefern Operanden
I speichern Resultate
I interne Hilfsregister
A. Mäder 862
Woher kommen die Operanden?
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 863
n-Adress Maschine n = {3 . . . 0}
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 865
Beispiel: Stack-Maschine / 0-Adress Maschine
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
push D D E
mul D*E
push C C D*E
add C+D*E
push B B C+D*E
push A A B C+D*E
div (A-B)/(C+D*E)
pop Z
A. Mäder 866
Adressierungsarten
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
I „immediate“
I Operand steht direkt im Befehl
I kein zusätzlicher Speicherzugriff
I aber Länge des Operanden beschränkt
I „direkt“
I Adresse des Operanden steht im Befehl
I keine zusätzliche Adressberechnung
I ein zusätzlicher Speicherzugriff
I Adressbereich beschränkt
I „indirekt“
I Adresse eines Pointers steht im Befehl
I erster Speicherzugriff liest Wert des Pointers
I zweiter Speicherzugriff liefert Operanden
I sehr flexibel (aber langsam)
A. Mäder 867
Adressierungsarten (cont.)
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
I „register“
I wie Direktmodus, aber Register statt Speicher
I 32 Register: benötigen 5 bit im Befehl
I genug Platz für 2- oder 3-Adress Formate
I „register-indirekt“
I Befehl spezifiziert ein Register
I mit der Speicheradresse des Operanden
I ein zusätzlicher Speicherzugriff
I „indiziert“
I Angabe mit Register und Offset
I Inhalt des Registers liefert Basisadresse
I Speicherzugriff auf (Basisadresse+offset)
I ideal für Array- und Objektzugriffe
I Hauptmodus in RISC-Rechnern (auch: „Versatz-Modus“)
A. Mäder 868
Immediate Adressierung
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 869
Direkte Adressierung
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
Registers
31 15 0
addr32
Memory
I Adresse des Operanden steht im Befehl
I keine zusätzliche Adressberechnung
I ein zusätzlicher Speicherzugriff: z.B. R3 = MEM[addr32]
I Adressbereich beschränkt, oder 2-Wort Befehl (wie Immediate)
A. Mäder 870
Indirekte Adressierung
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
Registers
31 15 0
addr32
3
tmp
2
Indexaddressing
op rs rt rd ...
Memory
Register
Word
Register
Updateaddressing
op rs rt Address Memory
1.
Register Word
2.
A. Mäder 872
Beispiel: MIPS Adressierungsarten
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
1. Immediate addressing
op rs rt Immediate
immediate
2. Register addressing
op rs rt rd ... funct Registers
Register register
3. Base addressing
op rs rt Address Memory
PC Word PC + offset
5. Pseudodirect addressing
op Address Memory
A. Mäder 873
typische Adressierungsarten
12.4 Instruction Set Architecture - Adressierungsarten 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 874
Intel x86-Architektur
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 875
Intel x86: Evolution
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 876
Beispiel: Core i9-9980XE Prozessor
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 877
x86: Speichermodell
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
Bit-Offset
31 23 15 8 7 0
28
24
20
16
12
Byte-Offset
A. Mäder 878
x86: Speichermodell (cont.)
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel 4EH FH
12H EH
[IA64]
7AH DH
36H AH
Byte at Address 9H
1FH 9H
Contains 1FH Quadword at Address 6H
A4H 8H Contains
7AFE06361FA4230BH
Word at Address 6H 23H 7H
Contains 230BH 0BH 6H
45H 5H
67H 4H
Word at Address 2H
Contains 74CBH 74H 3H
CBH 2H Double quadword at Address 0H
Word at Address 1H Contains
Contains CB31H 31H 1H 4E127AFE06361FA4230B456774CB3112
12H 0H
A. Mäder 879
x86: Register
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
63 31 15 0
8086
RAX EAX AX AH AL accumulator
E... ab 386
RBX EBX BX BH BL base addr
R... x86-64
RCX ECX CX CH CL count: String, Loop
CS code segment
SS stack segment
DS data segment
FS
FPR7
GS
RIP EIP IP PC
FP Status
EFLAGS status
A. Mäder 880
x86: EFLAGS Register
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
I
V V
I I I A V R 0 N O O D I T S Z A P C
0 0 0 0 0 0 0 0 0 0 T F F F F F F 0 F 0 F 1 F
D C M F P
P F
L
X ID Flag (ID)
X Virtual Interrupt Pending (VIP)
X Virtual Interrupt Flag (VIF)
X Alignment Check / Access Control (AC)
X Virtual-8086 Mode (VM)
X Resume Flag (RF)
X Nested Task (NT)
X I/O Privilege Level (IOPL)
S Overflow Flag (OF)
C Direction Flag (DF)
X Interrupt Enable Flag (IF)
X Trap Flag (TF)
S Sign Flag (SF)
S Zero Flag (ZF)
S Auxiliary Carry Flag (AF)
S Parity Flag (PF)
S Carry Flag (CF)
A. Mäder 881
x86: Datentypen
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
bytes 15
word 31
high low
doubleword 63
high word low word
79 63 32 31 0
A. Mäder 882
x86: Befehlssatz
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
Funktionalität
Datenzugriff mov, xchg
Stack-Befehle push, pusha, pop, popa
Typumwandlung cwd, cdq, cbw (byte→word), movsx . . .
Binärarithmetik add, adc, inc, sub, sbb, dec, cmp, neg . . .
mul, imul, div, idiv . . .
Dezimalarithmetik (packed/unpacked BCD) daa, das, aaa . . .
Logikoperationen and, or, xor, not, sal, shr, shr . . .
Sprungbefehle jmp, call, ret, int, iret, loop, loopne . . .
String-Operationen ovs, cmps, scas, load, stos . . .
„high-level“ enter (create stack frame) . . .
diverses lahf (load AH from flags) . . .
Segment-Register far call, far ret, lds (load data pointer)
A. Mäder 883
x86: Befehlsformate
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 884
x86: Befehlsformat-Modifier („prefix“)
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 885
x86 Befehlscodierung: Beispiele
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
a. JE EIP + displacement
[PH16b]
4 4 8
JE Condition Displacement
b. CALL
8 32
CALL Offset
A. Mäder 886
x86 Befehlscodierung: Beispiele (cont.)
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
Instruction Function
If equal (CC) {EIP=name};
JE name
EIP–128 name < EIP+128
M[EDI]=M[ESI];
MOVSL
EDI=EDI+4; ESI=ESI+4
[PH16b]
A. Mäder 887
x86: Assembler-Beispiel print( . . . )
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 888
x86: Assembler-Beispiel main( . . . )
12.5 Instruction Set Architecture - Intel x86-Architektur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 890
Bewertung der ISA (cont.)
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 891
Bewertung der ISA (cont.)
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 892
Bewertung der ISA (cont.)
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
I MIPS-Prozessor [HP17]
0% 5% 10% 15% 20% 25% 30% 35% 40% 0% 5% 10% 15% 20% 25% 30% 35% 40%
typische Merkmale
I Instruktionssätze mit mehreren hundert Befehlen (> 300)
I unterschiedlich lange Instruktionsformate: 1 . . . n-Wort Befehle
I komplexe Befehlscodierung
I mehrere Schreib- und Lesezugriffe pro Befehl
I viele verschiedene Datentypen
A. Mäder 894
CISC – Complex Instruction Set Computer (cont.)
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 895
CISC – Complex Instruction Set Computer (cont.)
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
Vor- / Nachteile
+ nah an der Programmiersprache, einfacher Assembler
+ kompakter Code: weniger Befehle holen, kleiner I-Cache
− Befehlssatz vom Compiler schwer auszunutzen
− Ausführungszeit abhängig von: Befehl, Adressmodi . . .
− Instruktion holen schwierig, da variables Instruktionsformat
− Speicherhierarchie schwer handhabbar: Adressmodi
− Pipelining schwierig
Beispiele
I Intel x86 / IA-64, Motorola 68 000, DEC Vax
A. Mäder 896
CISC – Mikroprogrammierung
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 897
CISC – Mikroprogrammierung (cont.)
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
I kurze Mikroprogrammworte
I Spalten enthalten Mikrooperationscode
I mehrstufige Decodierung für Kontrollleitungen
A. Mäder 898
horizontale Mikroprogrammierung
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
µ Instr.
Load µ-Programmsteuerwerk
MUX
µPC
CS ROM
horizontales
next
address
WCS RAM µ Programmwort
field
Bs Bo
nextPC Control Vector
next PC
Logic
RE
WE
End ALU Logical Unit MUL RF
Bi +- & or not *
CC
VN
Execution Unit
Mikroprogrammierung
A. Mäder 899
vertikale Mikroprogrammierung
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
Mikroprogrammierung
A. Mäder 900
RISC – Reduced Instruction Set Computer
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
Vor- / Nachteile
+ fest-verdrahtete Logik, kein Mikroprogramm
+ einfache Instruktionen, wenige Adressierungsarten
+ Pipelining gut möglich
+ Cycles per Instruction = 1
in Verbindung mit Pipelining: je Takt (mind.) ein neuer Befehl
− längerer Maschinencode
− viele Register notwendig
I optimierende Compiler nötig / möglich
I High-performance Speicherhierarchie notwendig
A. Mäder 903
CISC vs. RISC
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
ursprüngliche Debatte
I streng geteilte Lager
I pro CISC: einfach für den Compiler; weniger Code Bytes
I pro RISC: besser für optimierende Compiler;
schnelle Abarbeitung auf einfacher Hardware
aktueller Stand
I Grenzen verwischen
I RISC-Prozessoren werden komplexer
I CISC-Prozessoren weisen RISC-Konzepte oder gar RISC-Kern auf
I für Desktop Prozessoren ist die Wahl der ISA kein Thema
I Code-Kompatibilität ist sehr wichtig!
I mit genügend Hardware wird alles schnell ausgeführt
I eingebettete Prozessoren: eindeutige RISC-Orientierung
+ kleiner, billiger, weniger Leistungsverbrauch
A. Mäder 904
ISA Design heute
12.6 Instruction Set Architecture - Befehlssätze 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 905
Literatur
12.7 Instruction Set Architecture - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 906
Literatur (cont.)
12.7 Instruction Set Architecture - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 907
Literatur (cont.)
12.7 Instruction Set Architecture - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 908
Gliederung
13 Assembler-Programmierung 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
A. Mäder 909
Gliederung (cont.)
13 Assembler-Programmierung 64-040 Rechnerstrukturen und Betriebssysteme
Motivation
Grundlagen der Assemblerebene
x86 Assembler
Elementare Befehle + Adressierung
Operationen
Kontrollfluss
Sprungbefehle und Schleifen
Mehrfachverzweigung (Switch)
Funktionsaufrufe und Stack
Speicherverwaltung
Elementare Datentypen
Arrays
Strukturen
Linker und Loader
Literatur
14. Rechnerarchitektur II
15. Betriebssysteme
A. Mäder 910
Wdh. Compilierungssystem
13.1 Assembler-Programmierung - Motivation 64-040 Rechnerstrukturen und Betriebssysteme
printf.o
Pre-
hello.c hello.i Compiler hello.s Assembler hello.o Linker hello
processor
(cc1) (as) (ld)
(cpp)
Source Modified Assembly Relocatable Executable
program source program object object
(text) program (text) programs program
(text) (binary) (binary)
[BO15]
A. Mäder 911
Warum Assembler?
13.1 Assembler-Programmierung - Motivation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 913
Assemblersicht des Programmierers
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
[BO15]
beobachtbare Zustände
I Programmzähler (Instruction Pointer) x86-64 rip Register
I Adresse der nächsten Anweisung
I Registerbank rax . . . rbp Register
I häufig benutzte Programmdaten r8 . . . r15 Register
I Zustandscodes EFLAGS Register
I gespeicherte Statusinformationen über die letzte
arithmetische Operation
I für bedingte Sprünge benötigt (Conditional Branch)
A. Mäder 914
Assemblersicht des Programmierers (cont.)
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
I Speicher
I byteweise adressierbares Array
I Code, Nutzerdaten, (einige) OS Daten
I beinhaltet Kellerspeicher für Unterprogrammaufrufe „Stack“
I –"– dynamischen Adressraum „Heap“
A. Mäder 915
Umwandlung von C in Objektcode
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
[BO15]
A. Mäder 916
Compilieren zu Assemblercode: Funktion sum()
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
sum.c sum.s
[BO15]
A. Mäder 917
Assemblercode: sum.s
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
! "#
$"#
% !
% & '
! (
!
)
* $
A. Mäder 918
Assemblercode: sum.s
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
! "#
$"#
% ! % !
! (
!
)
* $
A. Mäder 919
Assembler: Datentypen
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 920
Assembler: Befehle/Operationen
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 921
Objektcode: Funktion sumstore()
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
I 14 Bytes Programmcode
I x86-Instruktionen mit 1-, 3- oder 5 Bytes
Erklärung s.u.
I Startadresse: 0x400595
I vom Compiler/Assembler gewählt
A. Mäder 922
Assembler und Linker
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
Assembler
I übersetzt .s zu .o
I binäre Codierung jeder Anweisung
I (fast) vollständiges Bild des ausführbaren Codes
I keine Verknüpfungen zu Code aus anderen Dateien /
zu Bibliotheksfunktionen
Linker / Binder
I löst Referenzen zwischen Dateien auf
I kombiniert mit statischen Laufzeit-Bibliotheken
I z.B. Code für malloc, printf
I manche Bibliotheken sind dynamisch verknüpft
I Verknüpfung wird beim Laden in Speicher bzw.
zur Laufzeit erstellt
A. Mäder 923
Beispiel: Maschinenbefehl für Speichern
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
I C-Code
I speichert Wert t nach Adresse aus dest
I Assembler
I Kopiere einen 8-Byte Wert in den Hauptspeicher
I Quad-Worte in x86-64 Terminologie
I Operanden
t: Register %rax
dest: Register %rbx
*dest: Speicher M[%rbx]
I Objektcode (x86-Befehlssatz)
I 3-Byte Befehl
I an Speicheradresse 0x40059e
A. Mäder 924
Objektcode Disassembler: objdump
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
! "
#
[BO15]
I objdump -d . . .
I Werkzeug zur Untersuchung des Objektcodes
I rekonstruiert aus Binärcode den Assemblercode
I kann auf vollständigem, ausführbaren Programm ([Link])
oder einer .o Datei ausgeführt werden
A. Mäder 925
Was kann „disassembliert“ werden?
13.2 Assembler-Programmierung - Grundlagen der Assemblerebene 64-040 Rechnerstrukturen und Betriebssysteme
! " "
# ! $
%%%&%%% ' $ (
%%%&%%% )) *
%%%&%%& # + ,
%%%&%% * -%$
%%%&%%) .% &% %% % * -%$ %%%&%.%
%%%&%% .& # /# % * -%$ %/# #.&
[BO15]
A. Mäder 926
x86 Assemblerprogrammierung
13.3 Assembler-Programmierung - x86 Assembler 64-040 Rechnerstrukturen und Betriebssysteme
I Adressierungsarten
I arithmetische Operationen
I Statusregister
I Umsetzung von Programmstrukturen
Einschränkungen
I Beispiele nutzen nur die 64-bit Datentypen
long bei Linux (unter Windows nur 4-Byte!)
I x86-64 wird wie 16-Register 64-bit Maschine benutzt (=RISC)
I CISC Komplexität und Tricks bewusst vermieden
I Beispiele nutzen gcc/as Syntax (vs. Microsoft, Intel)
A. Mäder 927
Datentransfer „move“
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 928
movq Operanden-Kombinationen
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 929
movq: Operanden/Adressierungsarten
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
I Immediate: $x → x
I positiver (oder negativer) Integerwert
I Register: %R → Reg[R]
I Inhalt eines der 16 Universalregister rax . . . r15
A. Mäder 930
Beispiel: Funktion swap()
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
Register Funktion
%rdi Argument xp
%rsi Argument yp
%rax t0
%rdx t1
A. Mäder 931
Funktionsweise von swap()
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
Register Speicher
A. Mäder 932
Funktionsweise von swap()
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
Register Speicher
A. Mäder 932
Funktionsweise von swap()
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
Register Speicher
A. Mäder 932
Funktionsweise von swap()
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
Register Speicher
A. Mäder 932
Funktionsweise von swap()
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
Register Speicher
A. Mäder 932
Indizierte Adressierung
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
I allgemeine Form
I Imm(Rb,Ri,S) → Mem[Reg[Rb]+S*Reg[Ri]+Imm]
I hImmi Offset
I hRbi Basisregister: eines der 16 Integer-Register
I hRii Indexregister: jedes außer %rsp
%rbp grundsätzlich möglich, jedoch unwahrscheinlich
I hSi Skalierungsfaktor 1, 2, 4 oder 8
I gebräuchlichste Fälle
I (Rb) → Mem[Reg[Rb]]
I Imm(Rb) → Mem[Reg[Rb] + Imm]
I (Rb,Ri) → Mem[Reg[Rb] + Reg[Ri]]
I Imm(Rb,Ri) → Mem[Reg[Rb] + Reg[Ri] + Imm]
I (Rb,Ri,S) → Mem[Reg[Rb] + S*Reg[Ri]]
A. Mäder 933
Beispiel: Adressberechnung
13.3.1 Assembler-Programmierung - x86 Assembler - Elementare Befehle + Adressierung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 934
Arithmetische Operationen
13.3.2 Assembler-Programmierung - x86 Assembler - Operationen 64-040 Rechnerstrukturen und Betriebssysteme
I binäre Operatoren
Format Berechnung
addq hsrci , hdsti hdsti = hdsti+hsrci
subq hsrci , hdsti hdsti = hdsti-hsrci
imulq hsrci , hdsti hdsti = hdsti*hsrci
salq hsrci , hdsti hdsti = hdsti<<hsrci auch shlq
sarq hsrci , hdsti hdsti = hdsti>>hsrci arithmetisch
shrq hsrci , hdsti hdsti = hdsti>>hsrci logisch
xorq hsrci , hdsti hdsti = hdsti^hsrci
andq hsrci , hdsti hdsti = hdsti&hsrci
orq hsrci , hdsti hdsti = hdsti|hsrci
A. Mäder 935
Arithmetische Operationen (cont.)
13.3.2 Assembler-Programmierung - x86 Assembler - Operationen 64-040 Rechnerstrukturen und Betriebssysteme
I unäre Operatoren
Format Berechnung
incq hdsti hdsti = hdsti+1
decq hdsti hdsti = hdsti-1
negq hdsti hdsti = -hdsti
notq hdsti hdsti = ~hdsti
Imm(Rb,Ri,S) → Reg[Rb]+S*Reg[Ri]+Imm
I wird oft von Compilern für arithmetische Berechnung genutzt
s. Beispiele
A. Mäder 936
Beispiel: arithmetische Operationen
13.3.2 Assembler-Programmierung - x86 Assembler - Operationen 64-040 Rechnerstrukturen und Betriebssysteme
arith:
leaq (%rdi,%rsi), %rax # t1
long
long arith
arith addq %rdx, %rax # t2
(long
(long x,
x, long
long y,y, long
long z)z) leaq (%rsi,%rsi,2), %rdx
{
{ salq $4, %rdx # t4
long
long t1
t1 == x+y;
x+y; leaq 4(%rdi,%rdx), %rcx # t5
long
long t2
t2 == z+t1;
z+t1; imulq %rcx, %rax # rval
long
long t3
t3 == x+4;
x+4; ret
long
long t4
t4 == y
y ** 48;
48;
long
long t5
t5 == t3
t3 ++ t4;
t4;
long
long rval
rval == t2
t2 *
* t5;
t5; Register Funktion
return
return rval;
}
rval; %rdi Argument x
}
%rsi Argument y
%rdx Argument z, t4
%rax t1, t2, rval
%rcx t5
A. Mäder 937
Kontrollfluss / Programmstrukturen
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
I Zustandscodes
I Setzen
I Testen
I Ablaufsteuerung
I Verzweigungen: „If-then-else“
I Schleifen: „Loop“-Varianten
I Mehrfachverzweigungen: „Switch“
A. Mäder 938
x86: EFLAGS Register
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
I
V V
I I I A V R 0 N O O D I T S Z A P C
0 0 0 0 0 0 0 0 0 0 T F F F F F F 0 F 0 F 1 F
D C M F P
P F
L
X ID Flag (ID)
X Virtual Interrupt Pending (VIP)
X Virtual Interrupt Flag (VIF)
X Alignment Check / Access Control (AC)
X Virtual-8086 Mode (VM)
X Resume Flag (RF)
X Nested Task (NT)
X I/O Privilege Level (IOPL)
S Overflow Flag (OF)
C Direction Flag (DF)
X Interrupt Enable Flag (IF)
X Trap Flag (TF)
S Sign Flag (SF)
S Zero Flag (ZF)
S Auxiliary Carry Flag (AF)
S Parity Flag (PF)
S Carry Flag (CF)
I x86-64: RFLAGS =
b EFLAGS, mit „0“ erweitert
A. Mäder 939
Prozessor aus Sicht des Programmierers
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
I temporäre Daten
%rax, . . .
I Top of Stack
%rsp
I Programmzähler
%rip
I Flag-Bits
CF, ZF, SF, OF
A. Mäder 940
Zustandscodes
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 941
Zustandscodes (cont.)
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 942
Zustandscodes (cont.)
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 943
Zustandscodes lesen: set. . . -Befehle
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
! "
A. Mäder 944
Beispiel: Zustandscodes lesen
13.3.3 Assembler-Programmierung - x86 Assembler - Kontrollfluss 64-040 Rechnerstrukturen und Betriebssysteme
int
int gt
gt (long
(long x,
x, long
long y)
y)
{
{
return
return x
x >
> y;
y;
}
}
A. Mäder 945
Sprünge („Jump“): j. . . -Befehle
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
!"
# $
A. Mäder 946
Assembler: Label
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 947
if-Verzweigung / bedingter Sprung
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
absdiff:
long
long absdiff
absdiff cmpq %rsi, %rdi # x:y
(long
(long x,
x, long
long y)
y) jle .L4
{
{ movq %rdi, %rax
long
long result;
result; subq %rsi, %rax
if
if (x
(x >
> y)
y) ret
result
result == x-y;
x-y; .L4: # x <= y
else
else movq %rsi, %rax
result
result == y-x;
y-x; subq %rdi, %rax
return
return result;
result; ret
}
}
Register Funktion
%rdi Argument x
%rsi Argument y
%rax Rückgabewert
A. Mäder 948
if Übersetzung – goto
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
I Compilerabhängigkeit -fno-if-conversion
A. Mäder 949
if Übersetzung – goto (cont.)
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
val
val =
= x>y
x>y ?
? x-y
x-y :
: y-x;
y-x;
ntest
ntest == !Test;
!Test;
if
if (ntest)
(ntest) goto
goto Else;
Else;
val
val == Then_Expr;
Then_Expr;
goto
goto Done;
Done;
Else:
Else:
val
val == Else_Expr;
Else_Expr;
Done:
Done:
.
. .. .
.
A. Mäder 950
if Übersetzung – conditional move
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
I cmov..-Befehl -fif-conversion
I kein Sprung
long
long absdiff
absdiff
(long
(long x,x, long
long y)
y)
{
{
long
long result;
result;
if
if (x
(x >> y)
y)
Register Funktion
result
result == x-y;
x-y; %rdi Argument x
else
else %rsi Argument y
result
result == y-x;
y-x; %rax Rückgabewert
return
return result;
result;
}
}
absdiff:
movq %rdi, %rax # x
subq %rsi, %rax # result = x-y
movq %rsi, %rdx
subq %rdi, %rdx # eval = y-x
cmpq %rsi, %rdi # x:y
cmovle %rdx, %rax # if <=, result = eval
ret
A. Mäder 951
if Übersetzung – conditional move (cont.)
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
result
result = Then_Expr;
= Then_Expr
eval =
eval = Else_Expr;
Else_Expr;
nt
nt =
= !Test;
!Test;
if
if (nt)
(nt) result
result = = eval;
eval;
return
return result;
result;
A. Mäder 952
do ... while Übersetzung
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
I C Code goto-Version
do loop:
Body Body
while (Test); if (Test)
goto loop
A. Mäder 953
do ... while Übersetzung (cont.)
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 954
do ... while Übersetzung (cont.)
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
long
long pcount_goto
pcount_goto
(unsigned
(unsigned long
long x)
x) {{
long
long result
result =
= 0;
0;
loop:
loop: Register Funktion
result
result +=
+= x
x &
& 0x1;
0x1; %rdi Argument x
x
x >>=
>>= 1;
1;
if(x) %rax Rückgabewert
if(x) goto
goto loop;
loop;
return
return result;
result;
}
}
A. Mäder 955
while Übersetzung – Sprung zu Test
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 956
while Übersetzung – Sprung zu Test (cont.)
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 957
while Übersetzung – do ... while
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
I C Code -O1
while (Test)
Body
A. Mäder 959
for Übersetzung
13.3.4 Assembler-Programmierung - x86 Assembler - Sprungbefehle und Schleifen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 961
switch Mehrfachverzweigungen
13.3.5 Assembler-Programmierung - x86 Assembler - Mehrfachverzweigung (Switch) 64-040 Rechnerstrukturen und Betriebssysteme
long
long my_switch
I Implementierungsoptionen my_switch
(long
(long x, x, long
long y,
y, long
long z)
z)
1. Folge von „If-then-else“ {{
+ gut bei wenigen Alternativen long
long ww == 1;1;
switch(x)
switch(x) {{
− langsam bei vielen Fällen
case
case [Link]
2. Sprungtabelle „Jump Table“ ww == y*z;
y*z;
I Vermeidet einzelne Abfragen break;
break;
I möglich falls Alternativen kleine case
case [Link]
ww == y/z;
y/z;
ganzzahlige Konstanten sind
/*
/* Fall
Fall Through
Through */
*/
I Compiler (gcc) wählt eine der case
case [Link]
beiden Varianten entsprechend ww +=
+= z;
z;
der Fallstruktur break;
break;
case
case [Link]
case
case [Link]
ww -=
-= z;
z;
break;
break;
default:
default:
ww == 2;
2;
}}
return
return w; w;
}}
A. Mäder 962
Sprungtabelle
13.3.5 Assembler-Programmierung - x86 Assembler - Mehrfachverzweigung (Switch) 64-040 Rechnerstrukturen und Betriebssysteme
switch(x) Targ0:
switch(x) {{ jtab: Targ0 Code Block
case
case val_0:
val_0: 0
Block Targ1
Block00
case
case val_1:
val_1: Targ2 Targ1:
Block Code Block
Block11 •
• • • 1
• • • •
case
case val_n-1:
val_n-1: •
Block
Blockn-1
n-1 Targ2: Code Block
}} Targn-1
2
•
•
goto
goto *JTab[x];
*JTab[x]; •
A. Mäder 963
Sprungtabelle (cont.)
13.3.5 Assembler-Programmierung - x86 Assembler - Mehrfachverzweigung (Switch) 64-040 Rechnerstrukturen und Betriebssysteme
C Code Sprungtabelle
long .section .rodata
long my_switch(long
my_switch(long x,
x, long
long y,
y, long
long z)
z) .section
.align
.rodata
{{ .align 88
.L4:
.L4:
long
long ww == 1; 1; .quad
.quad .L8
.L8 ## xx == 00
switch(x)
switch(x) {{ .quad
.quad .L3
.L3 ## xx == 11
.. .. .. .quad
.quad .L5
.L5 ## xx == 22
.quad
.quad .L9
.L9 ## xx == 33
}} .quad .L8 ## xx == 44
.quad .L8
return
return w; w; .quad
.quad .L7
.L7 ## xx == 55
}} .quad
.quad .L7
.L7 ## xx == 66
my_switch:
movq %rdx, %rcx Register Funktion
cmpq $6, %rdi # x:6 %rdi Arg. x
ja .L8 # use default %rsi Arg. y
jmp *.L4(,%rdi,8) # goto *Jtab[x] %rdx Arg. z
A. Mäder 964
Sprungtabelle (cont.)
13.3.5 Assembler-Programmierung - x86 Assembler - Mehrfachverzweigung (Switch) 64-040 Rechnerstrukturen und Betriebssysteme
I Tabellenstruktur
I jedes Ziel benötigt 4 Bytes
I Basisadresse bei .L4
I Sprünge
I Direkt: jmp .L8
I Indirekt: jmp *.L4(,%rdi,8)
I Start der Sprungtabelle: .L4
I Register %rdi speichert x
I Skalierungsfaktor 8 für Tabellenoffset
I Sprungziel: effektive Adresse .L4 + x × 8
A. Mäder 965
Sprungtabelle (cont.)
13.3.5 Assembler-Programmierung - x86 Assembler - Mehrfachverzweigung (Switch) 64-040 Rechnerstrukturen und Betriebssysteme
switch(x)
switch(x) {{
.section
.section .rodata
.rodata
case
case 1:
1: //
// .L3
.L3
.align
.align 88 ww == y*z;
y*z;
.L4:
.L4: break;
.quad .L8
break;
.quad .L8 ## xx == 00 case
.quad
.quad .L3
.L3 ## xx == 11 case 2:
2: //
// .L5
.L5
.quad
.quad .L5
.L5 ## xx == 22 ww == y/z;
y/z;
.quad
.quad .L9
.L9 ## xx == 33 /*
/* Fall
Fall Through
Through */
*/
.quad
.quad .L8
.L8 ## xx == 44
.quad .L7
case
case 3:
3: //
// .L9
.L9
.quad .L7 ## xx == 55
.quad
.quad .L7
.L7 ## xx == 66
ww +=
+= z;
z;
break;
break;
case
case 5:
5:
case
case 6:
6: //
// .L7
.L7
ww -=
-= z;
z;
break;
break;
default:
default: //
// .L8
.L8
ww == 2;
2;
}}
A. Mäder 966
Mechanismen für Prozeduraufrufe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Kontrollübergabe P(…)
P(…) {{
••
I zu Unterprogrammcode ••
I zurück zu Aufruf yy == Q(x);
Q(x);
I Datenübergabe print(y)
print(y)
••
I Argumente }}
I Rückgabewert
I Speicherverwaltung
I Allokation während der Ausführung int
int Q(int
Q(int i)i)
I Freigabe nach return {{
int
int tt == 3*i;
3*i;
int
int v[10];
v[10];
••
••
return
return v[t];
v[t];
}}
A. Mäder 967
Mechanismen für Prozeduraufrufe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Kontrollübergabe P(…)
P(…) {{
••
I zu Unterprogrammcode ••
I zurück zu Aufruf yy == Q(x);
Q(x);
I Datenübergabe print(y)
print(y)
••
I Argumente }}
I Rückgabewert
I Speicherverwaltung
I Allokation während der Ausführung int
int Q(int
Q(int i)i)
I Freigabe nach return {{
int
int tt == 3*i;
3*i;
int
int v[10];
v[10];
••
••
return
return v[t];
v[t];
}}
A. Mäder 967
Mechanismen für Prozeduraufrufe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Kontrollübergabe P(…)
P(…) {{
••
I zu Unterprogrammcode ••
I zurück zu Aufruf yy == Q(x);
Q(x);
I Datenübergabe print(y)
print(y)
••
I Argumente }}
I Rückgabewert
I Speicherverwaltung
I Allokation während der Ausführung int
int Q(int
Q(int i)i)
I Freigabe nach return {{
int
int tt == 3*i;
3*i;
int
int v[10];
v[10];
••
••
return
return v[t];
v[t];
}}
A. Mäder 967
Mechanismen für Prozeduraufrufe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Kontrollübergabe P(…)
P(…) {{
••
I zu Unterprogrammcode ••
I zurück zu Aufruf yy == Q(x);
Q(x);
I Datenübergabe print(y)
print(y)
••
I Argumente }}
I Rückgabewert
I Speicherverwaltung
I Allokation während der Ausführung int
int Q(int
Q(int i)i)
I Freigabe nach return {{
int
int tt == 3*i;
3*i;
int
int v[10];
v[10];
••
••
return
return v[t];
v[t];
}}
A. Mäder 967
Mechanismen für Prozeduraufrufe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Kontrollübergabe P(…)
P(…) {{
••
I zu Unterprogrammcode ••
I zurück zu Aufruf yy == Q(x);
Q(x);
I Datenübergabe print(y)
print(y)
••
I Argumente }}
I Rückgabewert
I Speicherverwaltung
I Allokation während der Ausführung int
int Q(int
Q(int i)i)
I Freigabe nach return {{
int
int tt == 3*i;
3*i;
int
int v[10];
v[10];
••
••
return
return v[t];
v[t];
}}
A. Mäder 967
Stack (Kellerspeicher)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Speicherregion
I Startadresse vom OS vorgegeben
I Zugriff mit Stackoperationen
Stack “Bottom”
I wächst in Richtung niedrigerer
Adressen stack
A. Mäder 968
Stack (Kellerspeicher) (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 969
Stack: Push
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
pushq hsrci
Stack “Bottom”
I holt Operanden aus hsrci
dekrementiert %rsp um 8
Increasing
I
Addresses
I speichert den Operanden unter der
von %rsp vorgegebenen Adresse
Stack
Grows
Down
Stack Pointer: %rsp
Stack “Top”
A. Mäder 970
Stack: Push
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
pushq hsrci
Stack “Bottom”
I holt Operanden aus hsrci
dekrementiert %rsp um 8
Increasing
I
Addresses
I speichert den Operanden unter der
von %rsp vorgegebenen Adresse
Stack
Grows
Down
-8
Stack Pointer: %rsp
Stack “Top”
A. Mäder 970
Stack: Pop
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
popq hdsti
Stack “Bottom”
I liest den Operanden unter der
von %rsp vorgegebenen Adresse Increasing
Addresses
I inkrementiert %rsp um 8
I schreibt gelesenen Wert in hdsti
Stack
Grows
Down
Stack Pointer: %rsp
Stack “Top”
A. Mäder 971
Stack: Pop
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
popq hdsti
Stack “Bottom”
I liest den Operanden unter der
von %rsp vorgegebenen Adresse Increasing
Addresses
I inkrementiert %rsp um 8
I schreibt gelesenen Wert in hdsti
Stack
Grows
Stack Pointer: %rsp +8 Down
Stack “Top”
A. Mäder 971
Funktions-/Prozeduraufruf
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
void
void multstore(long
multstore(long x, x, long
long y,
y, long
long
*dest)
*dest)
{{
long
long tt == mult2(x,
mult2(x, y);
y);
*dest
*dest == t;
t; 0000000000400540
0000000000400540 <multstore>:
<multstore>:
}} 400540:
400540: push
push %rbx
%rbx ## Save
Save %rbx
%rbx
400541:
400541: mov
mov %rdx,%rbx
%rdx,%rbx ## Save
Save dest
dest
400544:
400544: callq
callq 400550
400550 <mult2>
<mult2> ## mult2(x,y)
mult2(x,y)
400549:
400549: mov
mov %rax,(%rbx)
%rax,(%rbx) ## Save
Save at
at dest
dest
40054c:
40054c: pop
pop %rbx
%rbx ## Restore
Restore %rbx
%rbx
40054d: retq
40054d: retq ## Return
Return
long
long mult2(long
mult2(long a, a, long
long b)
b)
{{
0000000000400550
0000000000400550 <mult2>:
<mult2>:
long
long ss == aa ** b;
b; 400550:
400550: mov
mov %rdi,%rax
%rdi,%rax ## aa
return s;
return s; 400553:
400553: imul
imul %rsi,%rax
%rsi,%rax ## aa ** bb
}}
400557:
400557: retq
retq ## Return
Return
A. Mäder 973
Kontrollübergabe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Prozeduraufruf callq
•
0000000000400540 <multstore>:
0x130 •
0000000000400540 <multstore>:
•• 0x128 •
•• 0x120
400544:
400544: callq
callq 400550
400550 <mult2>
<mult2>
400549:
400549: mov
mov %rax,(%rbx)
%rax,(%rbx)
••
•• %rsp 0x120
%rip 0x400544
0000000000400550
0000000000400550 <mult2>:
<mult2>:
400550:
400550: mov
mov %rdi,%rax
%rdi,%rax
••
••
400557:
400557: retq
retq
A. Mäder 974
Kontrollübergabe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
%rip 0x400550
0000000000400550
0000000000400550 <mult2>:
<mult2>:
400550:
400550: mov
mov %rdi,%rax
%rdi,%rax
••
••
400557:
400557: retq
retq
A. Mäder 975
Kontrollübergabe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Rücksprung retq
•
0000000000400540 <multstore>:
0x130 •
0000000000400540 <multstore>:
•• 0x128 •
•• 0x120
400544:
400544: callq
callq 400550
400550 <mult2>
<mult2>
400549: 0x118 0x400549
400549: mov
mov %rax,(%rbx)
%rax,(%rbx)
••
•• %rsp 0x118
%rip 0x400557
0000000000400550
0000000000400550 <mult2>:
<mult2>:
400550:
400550: mov
mov %rdi,%rax
%rdi,%rax
••
••
400557:
400557: retq
retq
A. Mäder 976
Kontrollübergabe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
%rip 0x400549
0000000000400550
0000000000400550 <mult2>:
<mult2>:
400550:
400550: mov
mov %rdi,%rax
%rdi,%rax
••
••
400557:
400557: retq
retq
A. Mäder 977
Datenübergabe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I Register Stack
I Konvention
I die ersten 6 Argumente: Register %rdi, %rsi. . .
I Stack wenn notwendig
I Rückgabewert: Register %rax
A. Mäder 978
Datenübergabe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
void
void multstore
multstore
(long
(long x,
x, long
long y,
y, long
long *dest)
*dest)
{{
long
long tt == mult2(x,
mult2(x, y);
y);
*dest
*dest == t;
t;
}}
0000000000400540
0000000000400540 <multstore>:
<multstore>:
## xx inin %rdi,
%rdi, yy in
in %rsi,
%rsi, dest
dest in
in %rdx
%rdx
•• •• ••
400541:
400541: movmov %rdx,%rbx
%rdx,%rbx ## Save
Save dest
dest
400544:
400544: callq
callq 400550
400550 <mult2>
<mult2> ## mult2(x,y)
mult2(x,y)
## tt inin %rax
%rax
400549:
400549: movmov %rax,(%rbx)
%rax,(%rbx) ## Save
Save at
at dest
dest
•• •• ••
long
long mult2
mult2 0000000000400550
0000000000400550 <mult2>:
<mult2>:
(long
(long a,
a, long
long b)
b) ## aa in
in %rdi,
%rdi, bb in
in %rsi
%rsi
{{ 400550:
400550: mov
mov %rdi,%rax
%rdi,%rax ## aa
long
long ss == aa ** b;
b; 400553:
400553: imul
imul %rsi,%rax
%rsi,%rax ## aa ** bb
return
return s;s; ## ss in
in %rax
%rax
}} 400557:
400557: retq
retq ## Return
Return
A. Mäder 979
Stack-basierende Programmierung
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 980
Stack-Frame
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack “Top”
I Speicherverwaltung durch Funktion
I bei Aufruf wird Stack gefüllt: „Set-up“ Code
I bei Return wieder freigegeben: „Finish“ Code
A. Mäder 981
Beispiel: Prozeduraufrufe
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
yoo(…)
yoo(…)
{{
•• yoo
•• who(…)
who(…)
who();
who(); {{ who
•• •• •• ••
•• amI();
amI(); amI(…)
amI(…) amI amI
}} •• •• •• {{
amI();
amI(); ••
•• •• •• amI
••
}} amI();
amI();
•• amI
••
}}
A. Mäder 982
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
%rbp
{{
•• yoo
who %rsp
••
who();
who();
•• amI amI
••
}}
amI
amI
A. Mäder 983
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ who
•• • • •
• • • %rbp
who();
who();
amI();
amI(); amI who
•• • • • amI
• • • %rsp
•• amI();
amI();
}} •• •• •• amI
}}
amI
A. Mäder 984
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ amI(…)
amI(…) who
•• • • •
{•
{ • •
who();
who();
amI();
amI();
•• • ••• amI amI who
• •• •
• •
•• amI();
amI();
amI();
amI(); %rbp
}} •• • •
••
• • amI amI
}} •• %rsp
}}
amI
A. Mäder 985
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ amI(…)
amI(…) who
•• • •• ••
{•
{ amI(…)
who();
who(); amI(…)
amI();
amI();
•• • ••{• amI amI who
• ••{•
• •••
•• amI();
amI();
amI();
amI();
}} •• •
•• •••• amI amI
• amI();
amI();
}} •• •
•
}} •• %rbp
amI amI
}}
%rsp
A. Mäder 986
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ amI(…)
amI(…) who
•• • •• ••
{•
{ amI(…)
who();
who(); amI(…)
amI();
amI();
•• • ••{• amI amI who
• ••{ •amI(…)
amI(…)
• •••
•• amI();
amI(); {{
amI();
}} amI();
•
•• •
•• ••• •• amI amI
• amI();
amI();
}} •• • ••
• amI();
amI();
}} •• •
• amI amI
}} ••
}} %rbp
amI
%rsp
A. Mäder 987
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ amI(…)
amI(…) who
•• • •• ••
{•
{ amI(…)
who();
who(); amI(…)
amI();
amI();
•• • ••{• amI amI who
• ••{•
• •••
•• amI();
amI();
amI();
amI();
}} •• •
•• •••• amI amI
• amI();
amI();
}} •• •
•
}} •• %rbp
amI amI
}}
%rsp
A. Mäder 988
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ amI(…)
amI(…) who
•• • • •
{•
{ • •
who();
who();
amI();
amI();
•• • ••• amI amI who
• •• •
• •
•• amI();
amI();
amI();
amI(); %rbp
}} •• • •
••
• • amI amI
}} •• %rsp
}}
amI
A. Mäder 989
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ who
•• • • •
• • • %rbp
who();
who();
amI();
amI(); amI who
•• • • • amI
• • • %rsp
•• amI();
amI();
}} •• •• •• amI
}}
amI
A. Mäder 990
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ amI(…)
amI(…) who
•• • • •
{•
{ • •
who();
who();
amI();
amI();
•• • ••• amI amI who
• •• •
• •
•• amI();
amI();
amI();
amI(); %rbp
}} •• • •
••
• • amI amI
}} •• %rsp
}}
amI
A. Mäder 991
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
{{ who(…)
who(…) yoo
•
{•
{ who
•• • • •
• • • %rbp
who();
who();
amI();
amI(); amI who
•• • • • amI
• • • %rsp
•• amI();
amI();
}} •• •• •• amI
}}
amI
A. Mäder 992
Beispiel: Prozeduraufrufe (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
Stack
yoo(…)
yoo(…) yoo
%rbp
{{
•• yoo
who %rsp
••
who();
who();
•• amI amI
••
}}
amI
amI
A. Mäder 993
x86-64/Linux Stack-Frame
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
„Caller“ Stack-Frame
I Rücksprungadresse
I von call-Anweisung erzeugt
I Argumente für aktuellen Aufruf !
A. Mäder 994
Register Sicherungskonventionen
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 995
Register Sicherungskonventionen (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I %rax
I Rückgabewert
Return value %rax
I Caller-Saved %rdi
I kann lokal geschrieben werden
%rsi
%rdx
I %rdi. . . %r9 Arguments
I Argumente %rcx
I Caller-Saved %r8
I können lokal geschrieben werden
%r9
%r10
I %r10, %r11 Caller-saved
I Caller-Saved temporaries %r11
I können lokal geschrieben werden
A. Mäder 996
Register Sicherungskonventionen (cont.)
13.3.6 Assembler-Programmierung - x86 Assembler - Funktionsaufrufe und Stack 64-040 Rechnerstrukturen und Betriebssysteme
I %rsp
I Behandlung durch call/return
I Sonderfall, quasi Callee-Save
A. Mäder 997
Elementare Datentypen
13.4.1 Assembler-Programmierung - Speicherverwaltung - Elementare Datentypen 64-040 Rechnerstrukturen und Betriebssysteme
I Ganzzahl (Integer)
I wird in allgemeinen Registern gespeichert
I abhängig von den Anweisungen: signed/unsigned
I Intel x86 as Bytes C Architektur-, Compiler-, OS-abhängig
Single s 4 float
Double l 8 double
Extended t 10/12 long double
A. Mäder 998
Array: Allokation / Speicherung
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
I T A[N];
I Array A mit Daten von Typ T und N Elementen
I fortlaufender Speicherbereich von N × sizeof(T) Bytes
A. Mäder 999
Array: Zugriffskonvention
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
I T A[N];
I Array A mit Daten von Typ T und N Elementen
I Bezeichner A zeigt auf erstes Element des Arrays: Element 0
A. Mäder 1000
Beispiel: einfacher Arrayzugriff
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
!
" ! # $
" ! # $
A. Mäder 1001
Beispiel: einfacher Arrayzugriff (cont.)
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
Register Funktion
%rdi Array Startadresse
%rsi Array Index
A. Mäder 1002
Beispiel: einfacher Arrayzugriff (cont.)
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1003
Zwei- und mehrdimensionale Arrays
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1004
Java: Array von Pointern auf Arrays von Elementen
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
class MatrixDemo {
int matrix [][]; // matrix [i]->
A. Mäder 1005
Zweidimensionale Arrays in C
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1006
Zweidimensionale Arrays in C (cont.)
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
!
" !
# !
!!
" #
A. Mäder 1007
Mehrdimensionale Arrays: entsprechend
13.4.2 Assembler-Programmierung - Speicherverwaltung - Arrays 64-040 Rechnerstrukturen und Betriebssysteme
I d-dimensionales N1 × N2 × · · · × Nd Array
I Element adressiert mit Tupel (n1 ; n2 ; : : : ; nd ),
mit d (zero-offset) Indizes nk ∈ [0; N − K − 1]
A. Mäder 1008
Strukturen (Records)
13.4.3 Assembler-Programmierung - Speicherverwaltung - Strukturen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1009
Beispiel: Strukturzugriffe
13.4.3 Assembler-Programmierung - Speicherverwaltung - Strukturen 64-040 Rechnerstrukturen und Betriebssysteme
I Arrayzugriff in Struktur
"
A. Mäder 1010
Beispiel: Strukturzugriffe (cont.)
13.4.3 Assembler-Programmierung - Speicherverwaltung - Strukturen 64-040 Rechnerstrukturen und Betriebssysteme
! ! " !
#$ % & ' ( !
A. Mäder 1011
Ausrichtung der Datenstrukturen (Alignment)
13.4.3 Assembler-Programmierung - Speicherverwaltung - Strukturen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1012
Beispiel: Structure Alignment
13.4.3 Assembler-Programmierung - Speicherverwaltung - Strukturen 64-040 Rechnerstrukturen und Betriebssysteme
struct
struct S1
S1 {{
char
char c;
c;
int
int i[2];
i[2];
double
double v;v;
}} *p;
*p;
c i[0] i[1] v
p p+1 p+5 p+9 p+17
Multiple of 4 Multiple of 8
Multiple of 8 Multiple of 8
A. Mäder 1013
Linker und Loader
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
!!
!
A. Mäder 1014
Linker und Loader (cont.)
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1015
Linker und Loader (cont.)
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
+ Modularität
Programm in übersichtlichen kleinen Dateien
I
⇒ vorgefertigte Programmbibliotheken
+ Effizienz
⇒ Zeitvorteil
I nach Änderung müssen nur kleine Teile neu übersetzt werden
I ermöglicht paralleles Compilieren
⇒ (Speicher-) Platzvorteil
I wichtige Funktionen in Datei aggregiert (z.B. malloc, printf)
A. Mäder 1016
Aufgaben des Linkers
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
!!
!
A. Mäder 1017
Aufgaben des Linkers (cont.)
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
2. „Relocation“
Programmcode und -daten der Quelldateien zusammenfassen
I
Symboltabellen zusammenfassen
I
A. Mäder 1018
Statisches / dynamisches Linken
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1019
Statisches / dynamisches Linken (cont.)
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1020
Assembler-Programmierung
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
I Speicherverwaltung
I dynamische Speicherverwaltung / der „Heap“
I Objektorientierte Konzepte
I Daten mit zugehörigen Methoden kombinieren
A. Mäder 1021
Assembler-Programmierung (cont.)
13.5 Assembler-Programmierung - Linker und Loader 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1022
Literatur
13.6 Assembler-Programmierung - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1023
Literatur (cont.)
13.6 Assembler-Programmierung - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1024
Gliederung
14 Rechnerarchitektur II 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
A. Mäder 1025
Gliederung (cont.)
14 Rechnerarchitektur II 64-040 Rechnerstrukturen und Betriebssysteme
14. Rechnerarchitektur II
Pipelining
Befehlspipeline
MIPS
Bewertung
Parallelität
Amdahl’s Gesetz
Superskalare Rechner
Parallelrechner
Symmetric Multiprocessing
Speicherhierarchie
Speichertypen
Cache Speicher
Literatur
15. Betriebssysteme
A. Mäder 1026
Pipelining / Fließbandverarbeitung
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
stage F
instr. result(s)
& operands f1 f2 f3 fk
Grundidee
I Operation F kann in Teilschritte zerlegt werden
I jeder Teilschritt fi braucht ähnlich viel Zeit
I Teilschritte f1 : : : fk können parallel zueinander ausgeführt
werden
I Trennung der Pipelinestufen („stage“) durch Register
I Zeitbedarf für Teilschritt fi Zugriffszeit auf Register (tF F )
A. Mäder 1027
Pipelining / Fließbandverarbeitung (cont.)
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
Pipelining-Konzept
I Prozess in unabhängige Abschnitte aufteilen
I Objekt sequenziell durch diese Abschnitte laufen lassen
I zu jedem Zeitpunkt werden zahlreiche Objekte bearbeitet
I –"– sind alle Stationen ausgelastet
Konsequenz
I Pipelining lässt Vorgänge gleichzeitig ablaufen
I reale Beispiele: Autowaschanlagen, Fließbänder in Fabriken
A. Mäder 1028
Pipelining / Fließbandverarbeitung (cont.)
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
Arithmetische Pipelines
I Idee: lange Berechnung in Teilschritte zerlegen
wichtig bei komplizierteren arithmetischen Operationen
I die sonst sehr lange dauern (weil ein großes Schaltnetz)
I die als Schaltnetz extrem viel Hardwareaufwand erfordern
I Beispiele: Multiplikation, Division, Fließkommaoperationen . . .
+ Erhöhung des Durchsatzes, wenn Berechnung mehrfach
hintereinander ausgeführt wird
Befehlspipeline im Prozessor
I Idee: die Phasen der von-Neumann Befehlsabarbeitung
(Befehl holen, Befehl decodieren . . . ) als Pipeline implementieren
→ folgt in Befehlspipeline, ab Folie 1038
A. Mäder 1029
Beispiel: Schaltnetz ohne Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
300 ps 20 ps
R
Combinational Delay = 320 ps
e
logic Throughput = 3.12 GOPS
g
Clock [BO15]
A. Mäder 1030
Beispiel: Version mit 3-stufiger Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
Clock [BO15]
A. Mäder 1031
Prinzip: 3-stufige Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
I ohne Pipeline
OP1
OP2
OP3
Time
OP1 A B C
OP2 A B C
OP3 A B C
Time
A. Mäder 1032
Timing: 3-stufige Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
239
Clock
OP1 A B C
OP2 A B C
OP3 A B C
[BO15]
Clock
A. Mäder 1033
Timing: 3-stufige Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
241
Clock
OP1 A B C
OP2 A B C
OP3 A B C
[BO15]
Clock
A. Mäder 1033
Timing: 3-stufige Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
300
Clock
OP1 A B C
OP2 A B C
OP3 A B C
[BO15]
Clock
A. Mäder 1033
Timing: 3-stufige Pipeline
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
359
Clock
OP1 A B C
OP2 A B C
OP3 A B C
[BO15]
Clock
A. Mäder 1033
Limitierungen: nicht uniforme Verzögerungen
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
50 ps 20 ps 150 ps 20 ps 100 ps 20 ps
Clock
OP1 A B C
OP2 A B C
OP3 A B C
Time
[BO15]
A. Mäder 1034
Limitierungen: Register „Overhead“
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps 50 ps 20 ps
R R R R R R
Comb. Comb. Comb. Comb. Comb. Comb.
logic e logic e logic e logic e logic e logic e
g g g g g g
A. Mäder 1035
Limitierungen: Datenabhängigkeiten
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
R
Combinational
e
logic
g
Clock
OP1
OP2
OP3
Time [BO15]
A. Mäder 1036
Limitierungen: Datenabhängigkeiten (cont.)
14.1 Rechnerarchitektur II - Pipelining 64-040 Rechnerstrukturen und Betriebssysteme
Clock
OP1 A B C
OP2 A B C
OP3 A B C
OP4 A B C
Time
[BO15]
A. Mäder 1037
von-Neumann Befehlszyklus
14.1.1 Rechnerarchitektur II - Pipelining - Befehlspipeline 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1038
von-Neumann Befehlszyklus (cont.)
14.1.1 Rechnerarchitektur II - Pipelining - Befehlspipeline 64-040 Rechnerstrukturen und Betriebssysteme
Instruction Data
lw $2, 200($0) 800 ps fetch
Reg ALU
access
Reg
Instruction
lw $3, 300($0) 800 ps fetch
...
800 ps
[PH16b]
A. Mäder 1039
von-Neumann Befehlszyklus (cont.)
14.1.1 Rechnerarchitektur II - Pipelining - Befehlspipeline 64-040 Rechnerstrukturen und Betriebssysteme
Instruction Data
lw $2, 200($0) 200 ps fetch
Reg ALU
access
Reg
Instruction Data
lw $3, 300($0) 200 ps fetch
Reg ALU
access
Reg
A. Mäder 1040
Klassische 5-stufige Pipeline
14.1.1 Rechnerarchitektur II - Pipelining - Befehlspipeline 64-040 Rechnerstrukturen und Betriebssysteme
Stufe 1 2 3 4 5
IF ID EX MEM WB
A. Mäder 1041
Klassische 5-stufige Pipeline (cont.)
14.1.1 Rechnerarchitektur II - Pipelining - Befehlspipeline 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1042
MIPS: serielle Realisierung ohne Pipeline
14.1.2 Rechnerarchitektur II - Pipelining - MIPS 64-040 Rechnerstrukturen und Betriebssysteme
PCsrc
M
Add
u
Add
x
4 result
Shift
left 2
Registers ALU operation MemWrite
Read 3
Read ALUSrc
PC register1 Read
address Read MemtoReg
data1 Zero
register2
Instruction ALU
Write Read result Address Read
register data2 M data M
Instruction u
memory Write u
data x Data x
Write memory
RegWrite
data
16 32
Sign
extend MemRead
RISC Pipelining
A. Mäder 1043
MIPS: mit 5-stufiger Pipeline
14.1.2 Rechnerarchitektur II - Pipelining - MIPS 64-040 Rechnerstrukturen und Betriebssysteme
MUX
RS1
RS2 Branch
Register taken
Zero?
File
MEM / WB
EX / MEM
ID / EX
IF / ID
MUX
IR
PC Memory
MUX
ALU
Sign Imm
Extend
MUX
Memory
WB Data
RISC Pipelining
A. Mäder 1044
MIPS: mit 5-stufiger Pipeline (cont.)
14.1.2 Rechnerarchitektur II - Pipelining - MIPS 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1045
Prozessorpipeline – Begriffe
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
Begriffe
I Pipeline-Stage: einzelne Stufe der Pipeline
I Pipeline Machine Cycle:
Instruktion kommt einen Schritt in Pipeline weiter
I Durchsatz: Anzahl der Instruktionen, die in jedem Takt
abgeschlossen werden
I Latenz: Zeit, die eine Instruktion benötigt, um alle
Pipelinestufen zu durchlaufen
A. Mäder 1046
Prozessorpipeline – Bewertung
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1047
Prozessorpipeline – Bewertung (cont.)
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
Analyse
I N Instruktionen; K Pipelinestufen
I ohne Pipeline: N · K Taktzyklen
I mit Pipeline: K + N − 1 Taktzyklen
I „Speedup“ S = K+N−1 ,
N ·K
limN→∞ S = K
A. Mäder 1048
Prozessorpipeline – Bewertung (cont.)
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
10
Speedup, 10 Pipelinestufen (N*10)/(10+N-1)
N Befehle
0 Speedup
0 20 40 60 80 100
A. Mäder 1049
Prozessorpipeline – Dimensionierung
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1050
Prozessorpipeline – Auswirkungen
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
MIPS-Befehlsformate [PH16b]
A. Mäder 1051
Prozessorpipeline – Auswirkungen (cont.)
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1052
Pipeline Schema
14.1.3 Rechnerarchitektur II - Pipelining - Bewertung 64-040 Rechnerstrukturen und Betriebssysteme
Taktzyklen
1 2 3 4 5 6 7 8
Instruktionen
RISC Pipelining
A. Mäder 1053
Motivation: ständig steigende Anforderungen
14.2 Rechnerarchitektur II - Parallelität 64-040 Rechnerstrukturen und Betriebssysteme
Vielfältige Möglichkeiten
I wie viele und welche Prozessoren?
I Kommunikation zwischen den Prozessoren?
I Programmierung und Software/Tools?
A. Mäder 1054
Begriffe
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1055
Wie kann man Performanz verbessern?
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
I weniger Befehle
I gute Algorithmen
I bessere Compiler
I mächtigere Befehle (CISC)
I weniger Zeit pro Befehl
I bessere Technologie
I Architektur: Pipelining, Caches . . .
I einfachere Befehle (RISC)
I parallele Ausführung
I superskalare Architekturen, SIMD, MIMD
A. Mäder 1056
Amdahl’s Gesetz
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
1
I Speedup Sg esamt =
(1 − f ) + f =SX
A. Mäder 1057
Amdahl’s Gesetz (cont.)
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
1
Speedup Sg esamt =
(1 − f ) + f =SX
I nur ein Teil f des Gesamtproblems wird beschleunigt
potentiell 1 CPU n CPUs
serieller parallelisierbarer aktiv aktiv
Anteil Anteil
...
(1-f) f f
T (1-f)×T (f/n)×T
A. Mäder 1058
Amdahl’s Gesetz (cont.)
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
I Arbeit koordinieren
I Ergebnisse zusammensammeln
A. Mäder 1059
Amdahl’s Gesetz: Beispiele
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
SX f Sg esamt
10 0; 1 1=(0; 9 +0; 01) = 1; 1
2 0; 5 1=(0; 5 +0; 25) = 1; 33
2 0; 9 1=(0; 1 +0; 45) = 1; 82
1; 1 0; 98 1=(0; 02+0; 89) = 1; 1
4 0; 5 1=(0; 5 +0; 125) = 1; 6
4 536 0; 8 1=(0; 2 +0; 0 : : :) = 5; 0
9 072 0; 99 1=(0; 01+0; 0 : : :) = 98; 92
10
Speedup 1/((1-f)+f/10)
f
0
0 0.2 0.4 0.6 0.8 1
SX = 10
A. Mäder 1061
Amdahl’s Gesetz: Beispiele (cont.)
14.2.1 Rechnerarchitektur II - Parallelität - Amdahl’s Gesetz 64-040 Rechnerstrukturen und Betriebssysteme
10
Speedup n
1/((1-0.9)+0.9/n)
1/((1-0.8)+0.8/n)
1/((1-0.5)+0.5/n)
n
0
1 2 3 4 5 6 7 8 9 10
A. Mäder 1062
Befehlspipeline
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 1063
Parallele Pipelines
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
[TA14]
A. Mäder 1064
Superskalarer Prozessor
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1065
Superskalar
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1066
Superskalar – Datenabhängigkeiten
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
Datenabhängigkeiten
I RAW – Read After Write
Instruktion Ix darf Datum erst lesen, wenn Ix−n geschrieben hat
I WAR – Write After Read
Instruktion Ix darf Datum erst schreiben, wenn Ix−n gelesen hat
I WAW – Write After Write
Instruktion Ix darf Datum erst überschreiben, wenn Ix−n
geschrieben hat
A. Mäder 1067
Superskalar – Datenabhängigkeiten (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
„Register Renaming“
I Hardware löst (einige) Datenabhängigkeiten der Pipeline auf
I zwei Arten von Registersätzen
1. Architektur-Register: „logische Register“ der ISA
2. viele Hardware-Register: „Rename Register“ (180 Int, 168 FP)
I dynamische Abbildung von ISA- auf Hardware-Register
A. Mäder 1069
Superskalar – Pipeline (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
I Dynamisches Scheduling
⇒ out-of-order Reihenfolge
der Instruktionen
A. Mäder 1070
Superskalar – Pipeline (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1071
Superskalar – Pipeline (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1072
Superskalar – Probleme
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1073
Superskalar – Probleme (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
⇒ zusätzliche Optimierungsmöglichkeiten
A. Mäder 1074
Beispiel: Pentium 4 / NetBurst Architektur
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1075
Beispiel: Pentium 4 / NetBurst Architektur (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
Basic
B s Pentium
Pe tium 4 Processor
Proc ss r Misprediction
i pr d tion Pipeline
pe e
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
6 17 18 19 20
TC Nxt IP
P TC Fetch
t Drive
v Alloc
l Rename Que Sch Sch Sch Disp
D p Disp RF RF Ex Flgs Br Ckk Drive
D iv
A. Mäder 1076
Beispiel: Pentium 4 / NetBurst Architektur (cont.)
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
Front-End
n BTB Instruction
I stru t o
64-bits
6 - s wide
(4K
(4 Entries) TLB/Prefetch
L Prefetcher System
S se
Instruction
n i n Decoder
De d Bus
Microcode
r c d
ROM
Trace
T Cache
C he BTB
BT Trace
T ce Cache
ch Quad
op Queue
µo Q e e Q ad
(512
( 12 Entries)
n (12K
1 µops)
p Pumped
mpe
Allocator
A o o / Register
er Renamer
Ren 3.2
3 2 GB/s
/
Memory
M o uop Queue
u Integer/Floating
n g F atin PointPo t uop
p Queue Bus
u
Memory Scheduler Fast Slow/General FP Scheduler Simple FP Interface
f e
Unit
Integer
e Register
i r File / Bypass Network FP Register
Reg / Bypass
B p s
AGU AGU
A U 2x
2 ALU
A 2x
2 ALU
A Slow
S w ALU
L FP L2
2 Cache
h
MMXX FP
P (256K Byte
Load
a Store
S r Simple
i e Simple e Complex
mp x SSE Move
ve
Address Address
d Instr. Instr.
n t Instr.
nstr.
8-way)
8-way
SSE2
E2
48GB/s
L1 Data
ata Cache (8Kbyte
( byte 4-way)
4-w 256
2 6 bits
bit
A. Mäder 1077
Beispiel: Core 2 Architektur
14.2.2 Rechnerarchitektur II - Parallelität - Superskalare Rechner 64-040 Rechnerstrukturen und Betriebssysteme
SSE SSE
ALU SSE Store Store Load
ALU Shuffle ALU Shuffle
Branch ALU Address Data Address
ALU MUL
128 Bit
FMUL
128 Bit Memory Ordering Buffer
FADD
FDIV (MOB)
Store Load
Internal Results Bus 128 Bit 256
128 Bit Bit
32 KB Dual Ported Data Cache 16 Entry
Intel Core 2 Architecture (8 way) DTLB
A. Mäder 1078
Parallelrechner mit mehreren Prozessoren
14.2.3 Rechnerarchitektur II - Parallelität - Parallelrechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1079
Flynn-Klassifikation
14.2.3 Rechnerarchitektur II - Parallelität - Parallelrechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1080
Detaillierte Klassifikation
14.2.3 Rechnerarchitektur II - Parallelität - Parallelrechner 64-040 Rechnerstrukturen und Betriebssysteme
parallele Rechnerarchitektur
[TA14]
A. Mäder 1081
Anmerkungen
14.2.3 Rechnerarchitektur II - Parallelität - Parallelrechner 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1082
SMP: Symmetric Multiprocessing
14.2.4 Rechnerarchitektur II - Parallelität - Symmetric Multiprocessing 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1083
SMP: Eigenschaften
14.2.4 Rechnerarchitektur II - Parallelität - Symmetric Multiprocessing 64-040 Rechnerstrukturen und Betriebssysteme
Symmetric Multiprocessing
I alle CPUs gleichrangig, Zugriff auf Speicher und I/O
CPUs
P1
write 100
Memory
W1 → 100 W1 → 100 W2 → 200
P2
write 200 W2 → 200 R3 ← 100 R4 ← 200
R3 ← 200 W2 → 200 R3 ← 200
R3 ← 200 R3 ← 200 W1 → 100
read
P3 read
A. Mäder 1086
SMP: Erreichbarer Speedup (bis 32 Threads)
14.2.4 Rechnerarchitektur II - Parallelität - Symmetric Multiprocessing 64-040 Rechnerstrukturen und Betriebssysteme
M.J .Bridges [Link].: Revisiting the Sequential Programming Model for the Multicore Era, IEEE Micro 2008 [Br+ 08]
A. Mäder 1087
Speicherhierarchie
14.3 Rechnerarchitektur II - Speicherhierarchie 64-040 Rechnerstrukturen und Betriebssysteme
L0:
Regs CPU registers hold words retrieved
from the L1 cache.
L1: L1 cache
Smaller, faster, (SRAM) L1 cache holds cache lines retrieved
and costlier from the L2 cache.
(per byte) L2: L2 cache
storage (SRAM) L2 cache holds cache lines retrieved
devices from L3 cache.
L3: L3 cache
(SRAM)
L3 cache holds cache lines retrieved
from main memory.
Larger, slower,
and cheaper L4: Main memory
(per byte) (DRAM)
storage Main memory holds disk blocks
devices retrieved from local disks.
A. Mäder 1088
Speicherhierarchie (cont.)
14.3 Rechnerarchitektur II - Speicherhierarchie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1089
Prozessor-Memory Gap
14.3 Rechnerarchitektur II - Speicherhierarchie 64-040 Rechnerstrukturen und Betriebssysteme
10.000.000,0
1.000.000,0
Disk
100.000,0
0,1
0,0
CPU
1985 1990 1995 2000 2003 2005 2010 2015
Year [BO15]
A. Mäder 1090
Motivation
14.3 Rechnerarchitektur II - Speicherhierarchie 64-040 Rechnerstrukturen und Betriebssysteme
2nd-Level Cache
Main Memory
Disk Storage
A. Mäder 1091
Motivation (cont.)
14.3 Rechnerarchitektur II - Speicherhierarchie 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1092
Verwaltung der Speicherhierarchie
14.3 Rechnerarchitektur II - Speicherhierarchie 64-040 Rechnerstrukturen und Betriebssysteme
I Register ↔ Memory
I Compiler
I Assembler-Programmierer
I Cache ↔ Memory
I Hardware
I Memory ↔ Disk
I Hardware und Betriebssystem: Paging, Segmentation
I Programmierer und –"– : Dateien
A. Mäder 1093
L0: Register
14.3.1 Rechnerarchitektur II - Speicherhierarchie - Speichertypen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1094
L1-L4: Halbleiterspeicher RAM
14.3.1 Rechnerarchitektur II - Speicherhierarchie - Speichertypen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1095
L5: Festplatten
14.3.1 Rechnerarchitektur II - Speicherhierarchie - Speichertypen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1096
L6: Hintergrundspeicher
14.3.1 Rechnerarchitektur II - Speicherhierarchie - Speichertypen 64-040 Rechnerstrukturen und Betriebssysteme
I enorme Speicherkapazität
I langsame Zugriffszeiten
A. Mäder 1097
Speicherhierarchie: zwei Beispiele
14.3.1 Rechnerarchitektur II - Speicherhierarchie - Speichertypen 64-040 Rechnerstrukturen und Betriebssysteme
[HP17]
A. Mäder 1098
Eigenschaften der Speichertypen
14.3.1 Rechnerarchitektur II - Speicherhierarchie - Speichertypen 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1099
Cache
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
I „Memory Wall“:About
Who Cares DRAMthe
zuMemory
langsamHierarchy?
für CPU
Processor-DRAM Memory Gap (latency)
10000
µProc
55%/yr.
1000 CPU
(2X/1.5yr)
“Moore’s Law”
Performance
Processor-Memory
100 Performance Gap:
(grows 50% / year)
10
DRAM 7-9%/yr.
DRAM
(2X/10 yrs)
1
2001
1988
1989
1990
1991
1992
1993
1996
1997
1998
1999
1980
1981
1982
1983
1984
1985
1986
1987
2000
1995
2002
1994
2004
2003
2005
Year [PH16b]
A. Mäder 1100
Cache (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1101
Cache (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
CPU chip
register file
L1
ALU
cache
cache bus system bus memory bus
I/O main
L2 cache bus interface
bridge memory
[BO15]
A. Mäder 1102
gemeinsamer Cache / „unified Cache“
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
FF..FF16
registers
instructions
processor
instructions
address and data
data
copies of
instructions address
copies of
data
memory
cache
00..0016
instructions [Fur00]
and data
A. Mäder 1103
separate Instruction-/Data Caches
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
FF..FF16
copies of
instructions address
instructions
cache
address instructions
instructions
registers
processor
address
copies of
data
data memory
cache
00..0016 [Fur00]
A. Mäder 1104
Cache – Position
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1105
Cache – Position (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
I Virtueller Cache
+ Adressumrechnung durch MMU oft nicht nötig
− Cache leeren bei Kontextwechseln
A. Mäder 1106
Cache – Position (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
I Physikalischer Cache
+ Cache muss nie geleert werden
− Adressumrechnung durch MMU immer nötig
A. Mäder 1107
Cache – Position (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1108
Cache – Strategie
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1109
Cache – Performanz
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
Cacheperformanz
I Begriffe
Treffer (Hit) Zugriff auf Datum, ist bereits im Cache
Fehler (Miss) –"– ist nicht –"–
Treffer-Rate RHit Wahrscheinlichkeit, Datum ist im Cache
Fehler-Rate RMiss 1 − RHit
Hit-Time THit Zeit, bis Datum bei Treffer geliefert wird
Miss-Penalty TMiss zusätzlich benötigte Zeit bei Fehler
I Mittlere Speicherzugriffszeit = THit + RMiss · TMiss
I Beispiel
THit = 1 Takt, TMiss = 20 Takte, RMiss = 5 %
⇒ Mittlere Speicherzugriffszeit = 2 Takte
A. Mäder 1110
Cache Organisation
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
set 1: •••
S = 2s sets valid tag 0 1 ••• B–1
•••
m-1 0
v tag 0 1 • • • B–1
set 0: •••
v tag 0 1 • • • B–1 <tag> <set index> <block offset>
v tag 0 1 • • • B–1
set 1: •••
v tag 0 1 • • • B–1
•••
v tag 0 1 • • • B–1
set S-1: •••
v tag 0 1 • • • B–1
[BO15]
A. Mäder 1112
Adressierung von Caches (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
Address A:
t bits s bits b bits
m-1 0
v tag 0 1 • • • B–1
set 0: •••
v tag 0 1 • • • B–1 <tag> <set index> <block offset>
v tag 0 1 • • • B–1
set 1: •••
v tag 0 1 • • • B–1
•••
v tag 0 1 • • • B–1
set S-1: •••
v tag 0 1 • • • B–1
[BO15]
A. Mäder 1113
Cache – Organisation
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1114
Cache: direkt abgebildet / „direct mapped“
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
001
010
011
111
101
100
110
000
Cache
Memory [PH16b]
A. Mäder 1115
Cache: direkt abgebildet / „direct mapped“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
•••
+ einfachste Cache-Art
+ große Caches möglich
− Effizienz, z.B. Zugriffe auf A, A + n · S. . .
⇒ „Cache Thrashing“
Beispiel (s.o.): Zugriff auf „00101“, „01101“, „10101“, „11101“
A. Mäder 1116
Cache: direkt abgebildet / „direct mapped“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1117
Cache: direkt abgebildet / „direct mapped“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
0 1 2 3 4 5 6 7
(2) The tag bits in the cache (3) If (1) and (2), then
line must match the =?
cache hit,
tag bits in the address and block offset
selects
t bits s bits b bits
starting byte.
0110 i 100
m-1
tag set index block offset0
[BO15]
A. Mäder 1118
Cache: direkt abgebildet / „direct mapped“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
decoder
compare mux
hit data
A. Mäder 1119
Cache: bereichsassoziativ / „set associative“
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
•••
valid tag cache block
set S-1:
valid tag cache block
[BO15]
A. Mäder 1120
Cache: bereichsassoziativ / „set associative“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
•••
valid tag cache block
t bits s bits b bits set S-1:
valid tag cache block
00 001
m-1
tag set index block offset0
[BO15]
A. Mäder 1121
Cache: bereichsassoziativ / „set associative“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
0 1 2 3 4 5 6 7
1 1001
selected set (i):
1 0110 w0 w1 w2 w3
A. Mäder 1122
Cache: bereichsassoziativ / „set associative“ (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
Prinzip address
[Fur00]
decoder
compare mux
hit data
compare mux
decoder
A. Mäder 1123
Cache: voll-assoziativ
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
− benötigt E-Vergleicher
− nur für sehr kleine Caches realisierbar
A. Mäder 1124
Cache – Dimensionierung
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
Address A:
t bits s bits b bits
m-1 0
v tag 0 1 • • • B–1
set 0: •••
v tag 0 1 • • • B–1 <tag> <set index> <block offset>
v tag 0 1 • • • B–1
set 1: •••
v tag 0 1 • • • B–1
•••
v tag 0 1 • • • B–1
set S-1: •••
v tag 0 1 • • • B–1
[BO15]
I Parameter: S, B, E
I Cache speichert immer größere Blöcke / „Cache-Line“
I Wortauswahl durch hblock offseti in Adresse
A. Mäder 1125
Cache – Dimensionierung (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1126
Cache – Dimensionierung (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
[PH16b]
A. Mäder 1127
Cache – Dimensionierung (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
25%
1k 4k 16k
64k 256k
20%
15%
Miss
rate
10%
5%
0%
16 32 64 128 256
Block size [HP17]
A. Mäder 1128
Cache-Misses
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
I cold miss
I Cache ist (noch) leer
I conflict miss
I wenn die Kapazität des Cache eigentlich ausreicht, aber
unterschiedliche Daten in den selben Block abgebildet werden
I Beispiel für „Trashing“ beim direct-mapped Cache mit S=8:
abwechselnder Zugriff auf Blöcke 0, 8, 0, 8, 0, 8 . . .
ist jedesmal ein Miss
I capacity miss
I wenn die Menge der aktiven Blöcke („working set“) größer ist
als die Kapazität des Cache
A. Mäder 1129
Cache Ersetzungsstrategie
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1130
Cache Schreibstrategie
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1131
Cache-Kohärenz
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
⇒ einfacherer Instruktions-Cache
⇒ Cache-Kohärenz Problem betrifft D-Cache
I Cache-Kohärenz Protokolle und „Snooping“
I alle Prozessoren(P1 , P2 . . . ) überwachen alle Bus-Transaktionen
Cache „schnüffelt“ am Speicherbus
I Prozessor P2 greift auf Daten zu, die im Cache von P1 liegen
P2 Schreibzugriff ⇒ P1 Cache aktualisieren / ungültig machen
P2 Lesezugriff ⇒ P1 Cache liefert Daten
I Was ist mit gleichzeitige Zugriffen von P1 , P2 ?
A. Mäder 1132
Cache-Kohärenz (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1133
MESI Protokoll
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1134
MESI Protokoll (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
RME WH
replacement
SHR
LRU
SHW
SHR SHW
Bus Transactions
RH = Read hit = Snoop push
MODIFIED EXCLUSIVE RMS = Read miss, shared
RME = Read miss, exclusive = Invalidate transaction
WH WH = Write hit
RH RH
WM = Write miss = Read-with-intent-to-modify
SHR = Snoop hit on a read
SHW = Snoop hit on a write or = Read
read-with-intent-to-modify
WH
A. Mäder 1135
MESI Protokoll (cont.)
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
I „Snooping“ Beispiel
MESI-Status Wert A: CPU1 CPU2
CPU 1 CPU 2 Hauptspeicher
E A
CPU 1 lädt Wert A E I
M
CPU 1
A
CPU 2 Hauptspeicher
CPU 1 SNOOP! - -
(CPU2 read gestoppt) - -
CPU 2 lädt A S S
CPU 1 CPU 2 Hauptspeicher
S A S A
A. Mäder 1136
Cache Effekte bei Matrixzugriffen
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1137
Cache vs. Programmcode
14.3.2 Rechnerarchitektur II - Speicherhierarchie - Cache Speicher 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1138
Literatur
14.4 Rechnerarchitektur II - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1139
Literatur (cont.)
14.4 Rechnerarchitektur II - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1140
Literatur (cont.)
14.4 Rechnerarchitektur II - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1141
Gliederung
15 Betriebssysteme 64-040 Rechnerstrukturen und Betriebssysteme
1. Einführung
2. Informationsverarbeitung
3. Ziffern und Zahlen
4. Arithmetik
5. Zeichen und Text
6. Logische Operationen
7. Codierung
8. Schaltfunktionen
9. Schaltnetze
10. Schaltwerke
11. Rechnerarchitektur I
12. Instruction Set Architecture
13. Assembler-Programmierung
A. Mäder 1142
Gliederung (cont.)
15 Betriebssysteme 64-040 Rechnerstrukturen und Betriebssysteme
14. Rechnerarchitektur II
15. Betriebssysteme
Historische Entwicklung
Interrupts
Prozesse und Threads
Synchronisation und Kommunikation
Scheduling
Speicherverwaltung
I/O und Dateiverwaltung
Literatur
A. Mäder 1143
Betriebssysteme in RSB
15 Betriebssysteme 64-040 Rechnerstrukturen und Betriebssysteme
Dateisysteme
I
I Virtualisierung; Container
Systembus(se)
I
I Hauptspeicher
I Festplatten / SSDs
I Ein-/Ausgabeeinheiten (I/O)
I kein Betriebssystem
I Programmierer arbeitet direkt mit Computer an Konsole
I Benutzer können nur nacheinander am Computer arbeiten
− Reservierung des Systems
längerer Job: wird nicht fertig oder
Reservierungen verschieben sich
kürzerer Job: System bleibt ungenutzt
− „Rüstzeit“: Vorbereitung auf Programmlauf
A. Mäder 1146
2. einfache Batch-Systeme
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1147
2. einfache Batch-Systeme (cont.)
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
I wichtige Eigenschaften
I Memory protection: Jobs haben keinen Zugriff auf
Monitor-Speicherbereich
I Timer begrenzt Laufzeit von Jobs
I privilegierte Instruktionen nur durch Monitor ausführbar
I Interrupts bessere, flexiblere Kontrolle der Jobs
⇒ zwei Modi
1. User Mode für Batch-Job
I einige Speicherbereiche sind gesperrt
I einige Befehle sind nicht ausführbar
2. Kernel Mode für Monitor
I Zugriff auf geschützte Speicheradressen
I privilegierte Befehle sind ausführbar
I Overhead, verglichen mit serieller Abarbeitung
− Prozessor muss zusätzlich Monitor bearbeiten
− zusätzlicher Speicherbedarf für Monitor
+ insgesamt aber bessere Auslastung des Computers
A. Mäder 1148
3. Multiprogramm Batch-Systeme
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
Time
I Multiprogramming, Multitasking
Program A Run Wait Run Wait
I Beispiel
JOB1 JOB2 JOB3
Type of job Heavy compute Heavy I/O Heavy I/O
Duration 5 min 15 min 10 min
Memory required 50 M 100 M 75 M
Need disk? No No Yes
Need terminal? No Yes No
Need printer? No No Yes
Uniprogramming Multiprogramming
Processor use 20% 40%
Memory use 33% 67%
Disk use 33% 67%
Printer use 33% 67%
Elapsed time 30 min 15 min
Throughput 6 jobs/hr 12 jobs/hr
Mean response time 18 min 10 min
A. Mäder 1150
3. Multiprogramm Batch-Systeme (cont.)
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
100% 100%
CPU CPU
0% 0%
100% 100%
Memory Memory
0% 0%
100% 100%
Disk Disk
0% 0%
100% 100%
Terminal Terminal
0% 0%
100% 100%
Printer Printer
0% 0%
time 0 5 10 15
minutes
time
(a) Uniprogramming (b) Multiprogramming
A. Mäder 1151
4. Time-Sharing Betrieb
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1152
aktuelle Betriebssysteme
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
Pass Control
to Process
I Architekturansätze
I Monolithischer Kernel alle Funktionalitäten, Treiber etc.
in gemeinsamen Kernel; das Programm „Betriebssystem“
I Microkernel enthält nur
I Scheduling
I Interprozess-Kommunikation
I Adressverwaltung
B restliche Funktionalität als getrennte Prozesse
I hybride Kernel Mischformen
Monolithic Kernel Microkernel "Hybrid kernel"
based Operating System based Operating System based Operating System
System
OS user user user
VFS, System call
File UNIX
mode mode mode
Server Server
Application UNIX Device File
IPC, File System
IPC Server Driver Server
kernel
mode
Application Device
Scheduler, Virtual Memory kernel kernel kernel
IPC Driver
mode mode mode
Device Drivers, Dispatcher, ... Basic IPC, Virtual Memory, Scheduling Basic IPC, Virtual Memory, Scheduling
A. Mäder 1154
aktuelle Betriebssysteme (cont.)
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
user level
processes
processes
& scheduler
file network
systems protocols
virtual
kernel
memory
char device block device network de-
drivers drivers vice drivers
hardware
system network inter-
CPU terminal disk
memory face controller
A. Mäder 1155
aktuelle Betriebssysteme (cont.)
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
I weitere Konzepte
I Multithreading ⇒ bessere Granularität
I Multiprocessing (SMP)
IVerwaltung mehrerer Prozessoren
Ifür Benutzer transparent
+ Verfügbarkeit, Performanz, Skalierbarkeit etc.
− schwierig zu implementieren . . .
Time Blocked Running
Process 1
Process 2
Process 3
Process 1
Process 2
Process 3
A. Mäder 1156
aktuelle Betriebssysteme (cont.)
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1157
Aufgaben eines Betriebssystems
15.1 Betriebssysteme - Historische Entwicklung 64-040 Rechnerstrukturen und Betriebssysteme
I Prozessverwaltung
I Prozesse starten und beenden
I Scheduling: Prozesse CPUs zuordnen
I Prozesswechsel
I Prozesssynchronisation und Interprozesskommunikation
I Verwaltung der dazu notwendigen Datenstrukturen
(Prozesskontrollblock)
I Speicherverwaltung
I Zuordnung des (virtuellen) Adressraums zu Prozessen
I Swapping: Hauptspeicher ⇔ sekundärer Speicher
I Seitenadressierung (Paging) und Segmentierung
I Ein-/Ausgabeverwaltung
I Verwaltung von FIFOs
I Zuordnung von I/O-Geräten und -Kanälen zu Prozessen
I weitere Funktionen
I Interruptverarbeitung
I Abrechnung der Ressourcen (Accounting)
I Protokollierung (Monitoring)
A. Mäder 1158
Interrupts
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1159
Interrupt: Beispiel
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1160
Interrupt: Beispiel (cont.)
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
1 4 1 4 1 4
Interrupt Interrupt
2b Handler Handler
END END
3a
3 3
3b
(a) No interrupts (b) Interrupts; short I/O wait (c) Interrupts; long I/O wait
A. Mäder 1161
Interrupt: Programmablauf
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
Interrupts
Disabled
Check for
Fetch next Execute interrupt;
START instruction instruction initiate interrupt
Interrupts
handler
Enabled
I Kontrolltransfer HALT
User Program Interrupt Handler
Interrupt i
occurs here
i+1
M
A. Mäder 1162
Interrupt: Programmablauf (cont.)
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
1 1
4 4
I/O operation
I/O operation;
processor waits
2a concurrent with
processor executing
5 5
2b
2
4
I/O operation
4 3a concurrent with
processor executing
I/O operation;
processor waits 5
5 3b
(b) With interrupts
A. Mäder 1163
Interrupt: Programmablauf (cont.)
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
Time
4 4
5
2
4
4
3 I/O operation
concurrent with
I/O operation; processor executing;
processor waits then processor
waits
5
5
(b) With interrupts
A. Mäder 1165
Interruptverarbeitung (cont.)
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
T–M T–M
Y N+1
Control Control
Stack Stack
T T
N+1 Y+L+1
Program Program
Counter Counter
Y Start Y Start
Interrupt General Interrupt General
Service Registers Service Registers
Y + L Return Routine T Y + L Return Routine T–M
Stack Stack
Pointer Pointer
Processor Processor
T–M T
N User's N User's
N+1 N+1
Program Program
Main Main
Memory Memory
A. Mäder 1166
Mehrfache Interrupts
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
Interrupt Interrupt
Handler Y Handler Y
A. Mäder 1167
Mehrfache Interrupts (cont.)
15.2 Betriebssysteme - Interrupts 64-040 Rechnerstrukturen und Betriebssysteme
15
10 t=
t=
t = 25
t= t = 25 Disk
40 interrupt service routine
t=
35
A. Mäder 1168
Prozesse
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
PC
einem Zustand
(code)
I
I zugehörigen Systemressourcen b
Context
Process Data
B h
Program
(code)
A. Mäder 1169
Fehler bei Prozessabarbeitung
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Synchronisationsfehler
Prozess muss warten
I
A. Mäder 1170
Komponenten eines Prozesses
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
Identifier
Program
State Priority
counter
A. Mäder 1171
Komponenten eines Prozesses (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Prozesskontrollblock Identifier
speichert Verwaltungsinformation State
Priority
Program counter
Memory pointers
Context data
I/O status
information
Accounting
information
A. Mäder 1172
Prozessablauf
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
5000
Process A
8000
Process B
12000
Process C
A. Mäder 1173
Prozessablauf (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
1 5000 27 12004
2 5001 28 12005
I 3 Prozesse: A, B, C 3
4
5002
5003
--------------------Timeout
29 100
I Dispatcher (blau) 5 5004 30 101
6 5005 31 102
--------------------Timeout 32 103
7 100 33 104
8 101 34 105
9 102 35 5006
10 103 36 5007
11 104 37 5008
12 105 38 5009
13 8000 39 5010
5000 8000 12000
5001 8001 12001 14 8001 40 5011
5002 8002 12002 15 8002 --------------------Timeout
5003 8003 12003 16 8003 41 100
5004 12004 --------------- I/O Request 42 101
5005 12005 17 100 43 102
5006 12006 18 101 44 103
5007 12007 19 102 45 104
5008 12008
20 103 46 105
5009 12009
5010 12010 21 104 47 12006
5011 12011 22 105 48 12007
(a) Trace of Process A (b) Trace of Process B (c) Trace of Process C
23 12000 49 12008
24 12001 50 12009
5000 = Starting address of program of Process A 25 12002 51 12010
8000 = Starting address of program of Process B 26 12003 52 12011
12000 = Starting address of program of Process C
--------------------Timeout
A. Mäder 1174
laufende Prozesse
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Prozesse starten
I neuer Batch-Job
I interaktiver Login (Kommandozeile / Shell)
I durch Betriebssystem: neuer Dienst, z.B.: nach Booten
I durch laufenden Prozess: explizite Parallelität
A. Mäder 1175
laufende Prozesse (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Prozessende
I normales Programmende, Berechnung/Aufgabe fertig
I Zeitlimit überschritten:
maximale Laufzeit, Warten auf Benutzereingabe . . .
I Timeout: Warten auf Event/Systemsignal
I Speicherlimit: kein (virtueller) Speicher mehr verfügbar
I Adressverletzung: versuchter Zugriff auf ungültige Speicheradresse
I Zugriffsfehler: ungültiger Zugriff auf Ressource,
z.B.: Schreiben in read-only Datei
I Ein-/Ausgabefehler:
Lesefehler in Datei, Datei nicht vorhanden . . .
I Arithmetischer Fehler: Teilen durch 0 . . .
I Datenfehler: „falscher“ Typ in Datenstrukturen . . .
I ungültiger Befehl: kein Assemblerbefehl (in Datensegment?)
I unerlaubter Befehl: privilegierter Befehl im User Mode
I Parent Anfrage an Child
I Parent terminiert ⇒ Child-Prozess beenden
I Abbruch durch: Betriebssystem, Operator, Benutzer
A. Mäder 1176
Prozessmodell
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
Event
Occurs Event
Wait
Blocked
A. Mäder 1177
Prozessmodell (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Trace
Process A
Process B
Process C
Dispatcher
0 5 10 15 20 25 30 35 40 45 50
A. Mäder 1178
Prozessmodell (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
Timeout
Blocked Queue
Event Event Wait
Occurs
A. Mäder 1179
Prozessmodell (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
Timeout
Event 1 Queue
Event 1 Event 1 Wait
Occurs
Event 2 Queue
Event 2 Event 2 Wait
Occurs
Event n
Event n Event n Wait
Occurs
A. Mäder 1180
Prozessunterbrechung
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
t
ai
Occurs
e
Event
at
W
iv
t
ct
en
A
Ev
Suspend
Suspend Blocked
A. Mäder 1181
Kontrollstrukturen
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
Process
Image
Memory Tables
Process
Memory 1
Files
Process 1
Process 2
Process
Process 3 Image
Process
n
Process n
A. Mäder 1182
Kontrollstrukturen (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Prozesstabellen
I Speicherverwaltung: Memory Tables
I Verwaltung von virtuellem Speicher
I Zuordnung für Hauptspeicher (RAM)
I Zuordnung für sekundären Speicher (HDD, SSD)
I Attribute für Speicherblöcke, z.B.: Speicherschutz
I Ein-/Ausgabeverwaltung: I/O Tables
I Zuordnung zu Prozessen
I Status von I/O-Befehlen
I Informationen zu Befehlen: Startadresse in Hauptspeicher,
Datengröße
I Datei-Verwaltung: File Tables
I Existenz von Dateien / Dateinamen
I Ort auf Sekundärspeicher
I Status, z.B.: geöffnet (rw, ro)
I weitere Attribute: Zugriffsrechte, Zeitstempel etc.
A. Mäder 1183
Prozessabbild / Process image
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Programmcode
I Datenstrukturen des Programms: statische Datenstrukturen
und dynamischer Speicher, z.B.: Heap
I Stack: Unterprogrammaufrufe und -Datenstrukturen
→ siehe Abschnitt 13.3 Funktionsaufrufe und Stack
I Prozesskontrollblock, siehe Folie 1171
I Identifier, Parent, Child-Liste
I Register: für Benutzer sichtbar + „Rename-Register“
I Status-Register: Programmzähler, Flags, Modus
Interrupts Enabled . . .
I Stack-Pointer
I Scheduling Information: Zustand des Prozessmodells, Priorität . . .
I Informationen für Interprozesskommunikation
I Privilegien: Zugriffsrechte auf Speicherbereiche, I/O . . .
I Speicherverwaltung: Tabellen für Virtual Memory
I aktuelle Ressourcen, z.B.: geöffnete Dateien
I ...
A. Mäder 1184
Prozessabbild / Process image (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1185
Prozessabbild / Process image (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
Process
Control Block
Running
Ready
Blocked
A. Mäder 1186
Kontextwechsel
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Interrupt-Mechanismen
I Interrupt: asynchrones, externes Ereignis
I Trap: Fehler während der Programmabarbeitung
I System-Call: Aufruf einer Betriebssystemfunktion
I kein „wartender“ Interrupt ⇒ nächsten Befehl holen
I Interrupt löst Kontextwechsel aus
I Programmzähler mit Interrupt Handler initialisieren
I Wechsel User Mode ⇒ Kernel Mode für privilegierte Instruktionen
I Kontextwechsel
I Kontext des Prozesses sichern
I Prozesskontrollblock aktualisieren
I –"– in „passende“ Warteschlange einfügen
I anderen Prozess zur Ausführung wählen
I dessen Prozesskontrollblock aktualisieren
I Speicherstrukturen für neuen Prozess aktualisieren (Seitentabelle)
I Kontext des neuen Prozesses einrichten
A. Mäder 1187
Kontextwechsel (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Realisierungen Process
Identification
I getrennter Betriebssystemkernel Processor State Process Control
Information Block
P1 P2 Pn
Process Control
Information
Kernel
User Stack
I innerhalb des Benutzerprogramms
P1 P2 Pn Private User
OS OS OS Address Space
Func- Func- Func- (Programs, Data)
tions tions tions
Kernel Stack
I eigene Services/Prozesse (Microkernel)
P1 P2 Pn OS1 OSk Shared Address
Space
Process Switching Functions
A. Mäder 1188
Prozesse und Threads
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Prozess
Betriebssystem: Zuordnung zu Ressourcen
I
A. Mäder 1189
Prozesse und Threads (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
I Multithreading
I mehrere parallele Ausführungen innerhalb eines Prozesses
I von Programmiersprache und Betriebssystem abhängig
= instruction trace
A. Mäder 1190
Threads
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1191
Threads (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1192
Threads (cont.)
15.3 Betriebssysteme - Prozesse und Threads 64-040 Rechnerstrukturen und Betriebssysteme
P P P
A. Mäder 1193
Nebenläufigkeit
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1195
Mutual Exclusion / gegenseitiger Ausschluss
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1196
Mutual Exclusion / gegenseitiger Ausschluss (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
I Software Mechanismen
I Implementierung in Software nicht trivial!!!
(Dekker-Algorithmus; E. W. Dijkstra; Peterson-Algorithmus)
I Semaphor: Integer Variable, für die drei atomare Operationen
möglich sind: initialisieren, increment, decrement
I Mutex / binärer Semaphor: Werte 0 und 1
I Monitor: Programmiersprachen Konzept, das Variablen und
Zugriffsprozeduren als Datentyp kapselt. Immer nur ein Prozess
hat Zugriff darauf.
A. Mäder 1197
Semaphor
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1198
Semaphor (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiele
Queue for Value of
semaphore lock semaphore lock A B C
Critical
1 region
Normal
semWait(lock)
execution
0
Blocked on
semWait(lock)
semaphore
B –1 lock
semWait(lock)
C B –2
semSignal(lock)
C –1
semSignal(lock)
semSignal(lock)
1
Note that normal
execution can
proceed in parallel
but that critical
regions are serialized.
A. Mäder 1199
Semaphor (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
C issues semWait
Blocked queue Blocked queue
Processor
A CD B
Ready queue
s=0 2
B issues semWait
Blocked queue
Processor Processor
AC D D
Ready queue D issues semSignal Ready queue D issues semSignal
s = –1 3
s = –3 6
B C A B
Blocked queue Blocked queue
D issues semSignal, later times out
4 Processor
B AC D C D
Ready queue Processor Ready queue D issues semSignal
s=0 s = –2 7
A B
Blocked queue Blocked queue
A. Mäder 1200
Monitor
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1201
Monitor (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
queue of
entering
processes
MONITOR
condition variables
Procedure 1
condition cn
Procedure k
urgent queue
initialization code
Exit
A. Mäder 1202
Nachrichtenaustausch (Message Passing)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1203
Deadlock
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1204
Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
c b 2 3 2
4 d a 4 1
A. Mäder 1205
Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1206
Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
Progress
of Q
1 2
Release
A
P and Q
want A
A Release
Required B
Get A
3 deadlock P and Q
B
inevitable want B
Required
5
Get B
4
6
Progress
Get A Get B Release A Release B of P
= both P and Q want resource A
A
= both P and Q want resource B
Required
A. Mäder 1207
Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1208
Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
Progress
of Q
1 2 3
Release
A
4
A Release P and Q
Required B want A
P and Q
Get A
want B
B
Required
5
Get B
Progress
Get A Release A Get B Release B of P
A. Mäder 1209
Ressourcen
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1210
Ressourcen (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1211
Bedingungen für Deadlock
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
1. Mutual Exclusion
I ohne Mutual Exclusion kein Deadlock
⇒ aber u.U. inkonsistente Daten
2. Hold-and-Wait
I Prozess hat exklusiven Zugriff auf Ressource und fragt weitere an
3. No Preemption: Ressourcen können nicht entzogen werden
I Preemption hier als zwangsweiser Entzug der Ressource
I Circular Wait: mehrere Prozesse/Tasks warten zyklisch
aufeinander
A. Mäder 1212
Maßnahmen gegen Deadlock
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
1. Deadlock verhindern
I indirekt: drei notwendige Bedingungen für Deadlock
I zu Mutual Exclusion: meist unverzichtbar
I zu Hold-and-Wait: Prozess fordert gleichzeitig (atomar) alle
Ressourcen/Locks an
I zu No-Preemption: Test auf Ressource, wenn nicht verfügbar: kein
Warten, sondern Rückgabe; Betriebssystem „entzieht“ Ressource
I direkt: Circular Wait nicht zulassen
I Einführen einer Ordnung/Reihenfolge für alle Ressourcen
I muss in allen Prozessen eingehalten werden
2. Deadlock vermeiden
Ressource nicht zuteilen, wenn Deadlock möglich
I
A. Mäder 1213
Maßnahmen gegen Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
3. Deadlock Erkennung
I Periodischer Test auf Deadlock und ggf. (partielles) Rücksetzen
A. Mäder 1214
Maßnahmen gegen Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
•Inefficient
•Works well for •Delays process
processes that perform a initiation
Requesting all resources at
single burst of activity •Future resource
once
•No preemption requirements must
necessary be known by
processes
•Convenient when
Conservative;
applied to resources
Prevention undercommits •Preempts more
Preemption whose state can be
resources often than necessary
saved and restored
easily
•Future resource
Midway between that requirements must
Manipulate to find at least •No preemption
Avoidance of detection and be known by OS
one safe path necessary
prevention •Processes can be
blocked for long
periods
A. Mäder 1215
Maßnahmen gegen Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
Ra Ra
He He
ld ld
sts by es
ts by
q ue qu
Re Re
P1 P2 P1 P2
ts ts
He es He es
qu qu
ld
by Re ld
by Re
Rb Rb
A. Mäder 1216
Maßnahmen gegen Deadlock (cont.)
15.4 Betriebssysteme - Synchronisation und Kommunikation 64-040 Rechnerstrukturen und Betriebssysteme
P1 P2 P3 P4
Ra Rb Rc Rd
A. Mäder 1217
Scheduling und Ressourcenmanagement
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1219
Scheduling und Ressourcenmanagement (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
I verschiedene Zustände im
Prozessmodell (vergl. Folie 1177)
Running
Ready
Blocked
Short Term
Blocked,
Suspend
Ready,
Suspend
Medium Term
Long Term
New Exit
A. Mäder 1220
Scheduling und Ressourcenmanagement (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
I Scheduling Queues
Long-term Time-out
scheduling
Medium-term
scheduling
Interactive Ready, Suspend Queue
users
Medium-term
scheduling
Blocked Queue
Event Event Wait
Occurs
A. Mäder 1221
Short-term Scheduling
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
I Aktivierung
I neuer Prozess in Ready Queue
I Interrupt (bringt Prozess in Ready)
I periodisch
I Funktion zur Auswahl der Prozesse abhängig von
I Prioritäten
I Ressourcenbedarf
I Prozessabarbeitung
w : bisherige Wartezeit
e : bisherige Ausführungszeit (Execution time)
s : gesamte Ausführungszeit (Service time)
I Preemption: Unterbrechung von Jobs?
I ohne: gestarteter Prozess läuft bis Ende oder I/O waiting
I mit: Prozess wird unterbrochen und in Ready-Queue eingereiht
A. Mäder 1222
Short-term Scheduling (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
RQ1
Admit
RQn
Preemption
Event Wait
Event
occurs Blocked Queue
A. Mäder 1223
Scheduling Algorithmen
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1224
Scheduling Algorithmen (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
Ready Queue
Admit Dispatch Release
Processor
Auxiliary Queue
A. Mäder 1225
Scheduling Algorithmen (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
I Feedback Scheduling
I Preemptive
I Round-Robin mit mehreren Queues: Start in Hochpriorisierter,
sukzessiver Abstieg in weniger priorisierte Queues
I relativer Vorzug kurz laufender Prozesse
RQ0 Release
Admit
Processor
RQ1 Release
Processor
RQn Release
Processor
A. Mäder 1227
Scheduling Algorithmen (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1228
Scheduling Algorithmen (cont.) 0 5 10 15 20
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
Beispiel
Fir st-Come-Fir st B
I Ser ved (FCFS) C
D
Process Arrival Time Service Time E
A 0 3 A
Round-Robin B
B 2 6 (RR), q = 1 C
C 4 4 D
E
D 6 5
A
E 8 2 Round-Robin B
(RR), q = 4 C
D
E
A
Shor test Process B
Next (SPN) C
D
E
A
Shor test Remaining B
Time (SRT) C
D
E
A
Highest Response B
Ratio Next (HRRN) C
D
E
A
Feedback B
q=1 C
D
E
A
Feedback B
q = 2i C
D
E
A. Mäder 1229
Scheduling Algorithmen (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1230
Multiprozessor Scheduling
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
I unterschiedliche Kopplungen:
Cluster (schwach) . . . Symmetrical Multiprocessing (stark)
I Scheduling auch für Spezial- (Co-) Prozessoren
I Granularität, wichtig für Synchronisation
I Parallelität inhärent in Thread
I Parallelität innerhalb eines Prozesses / Multithreading
I kommunizierende Prozesse (Shared-Memory)
I verteilte Prozesse in Netzwerk (Message-Passing)
I Menge unabhängiger Prozesse
A. Mäder 1231
Multiprozessor Scheduling (cont.)
15.5 Betriebssysteme - Scheduling 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1232
Aufgaben des Betriebssystems
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1233
Virtueller Speicher
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1234
Virtueller Speicher (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Frame / Kachel
I Block fester Größe im Hauptspeicher
I Page / Seite
Block fester Größe im sekundären Speicher (HDD, SSD),
I
⇒ Paging
I Segment
I Block variabler Größe im sekundären Speicher, kann temporär
I in passenden Bereich im Hauptspeicher kopiert werden
⇒ Segmentierung
I in Seiten unterteilt werden, die jeweils kopiert werden
⇒ Segmentierung + Paging
A. Mäder 1235
Memory Management
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Adressumsetzung / Relocation
I logische Adressen: Adressen in (Assembler-) Programm
I relative Adressen:
relativ zu Bezug (Basisadresse), i.d.R. logische Adressen
I physikalische / absolute Adressen:
Adressen des Hauptspeichers
Process control
Process Control Block
information Entry point
to program
Branch
Program instruction
Increasing
address
values
Reference
to data
Data
Current top
of stack
Stack
A. Mäder 1236
Memory Management (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Relative address
Adder Program
Absolute
address
Data
Interrupt to
operating system
Stack
Process image in
main memory
A. Mäder 1237
Memory Management (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
20K
Dispatcher X
35K No access
allowed
50K
Process A
80K
90K Branch instruction
(not allowed)
Process B X
Reference to
data (allowed)
140K
Process C
Reference to
data (not allowed)
X
190K
A. Mäder 1238
Memory Management (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1239
Memory Management (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1240
Memory Management (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Inefficient use of
Partitions are created dynamically, No internal
processor due to the
so that each process is loaded into a fragmentation; more
Dynamic Partitioning need for compaction to
partition of exactly the same size as efficient use of main
counter external
that process. memory.
fragmentation.
No internal
Each process is divided into a
fragmentation; improved
number of segments. A process is
memory utilization and
Simple Segmentation loaded by loading all of its External fragmentation.
reduced overhead
segments into dynamic partitions
compared to dynamic
that need not be contiguous.
partitioning.
No external
As with simple paging, except that
fragmentation; higher
it is not necessary to load all of the
Virtual Memory degree of Overhead of complex
pages of a process. Nonresident
Paging multiprogramming; memory management.
pages that are needed are brought in
large virtual address
later automatically.
space.
No internal
As with simple segmentation,
fragmentation, higher
except that it is not necessary to
degree of
Virtual Memory load all of the segments of a Overhead of complex
multiprogramming;
Segmentation process. Nonresident segments that memory management.
large virtual address
are needed are brought in later
space; protection and
automatically.
sharing support.
A. Mäder 1241
Partitionierung
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
⇒ Overlay-Techniken 6M
− interne Fragmentierung: 8M
8M
⇒ schlechte Speicherausnutzung 8M
⇒ obsolet 8M
12M
8M
8M
16M
8M
A. Mäder 1242
Partitionierung (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I dynamische Partitionierung
Operating Operating Operating Operating
System 8M System System System
36M
Process 3 18M
22M
4M
Process 2 14M
Process 1 20M Process 1 20M 20M
6M
Process 4 8M Process 4 8M Process 4 8M
14M
6M 6M 6M
4M 4M 4M 4M
⇒ obsolet 22M
6M
Best Fit
Last 18M
allocated 2M
block (14M)
8M 8M
6M 6M
14M 14M
Next Fit
Allocated block
Free block
36M
20 M
Possible new allocation
A. Mäder 1244
Segmentierung
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Virtual Address
Segment Number Offset
A. Mäder 1245
Segmentierung (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Length Base
0 001011101110 0000010000000000
1 011110011110 0010000000100000 +
Process segment table
00100011000 1 0 0 0 0
16-bit physical address
A. Mäder 1246
Segmentierung (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Adressierung
Register
Seg Table Ptr
Segment table
d
Segment
Seg #
+
Length Base
A. Mäder 1247
Segmentierung (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
MMU
Virtuelle Adresse Physikalische Adresse
zur
Laufzeit
pid = 1
phys. Mem. from processor
pid = 1 b f nt
upper bound virtual address base of segment
.data
4000 .text.
> +
.data 1
.data 1
access rights R/W
1000 I/D
S/U
.text 1 11000
0 .text 1 address physical addr
10000 access trap to memory
.text 2 9600
=
pid = 2 3600
.data 2
3000 1000 protection
.data 2 violation trap
......
......
A. Mäder 1248
Paging
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Virtual Address
Page Number Offset Real
Memory Address
Processor Management
Virtual Unit
Page Table Entry Address Main
P MOther Control Bits Frame Number Memory
A. Mäder 1249
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
A.1
A.0 A.2
0 0
A.5
1 1
2 2
B.0 B.1 B.2 B.3
3 3
4 4
5 5
6 6
A.7
7 User
A.9
8 program
B
9
A.8
10
User
program
A
B.5 B.6
A. Mäder 1250
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
0 0 000101110111 10
0 000101
1 000110
2 011001
Process
page table
00011001110 1 1 1 1 0
16-bit physical address
A. Mäder 1251
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Adressierung
Register
n bits Page Table Ptr
Page Table
m bits
Offset
Page
Frame
Page#
+
Frame #
A. Mäder 1252
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Beispiel
Frame Main memory Main memory Main memory Main memory Main memory Main memory
number
0 0 A.0 0 A.0 0 A.0 0 A.0 0 A.0
1 1 A.1 1 A.1 1 A.1 1 A.1 1 A.1
2 2 A.2 2 A.2 2 A.2 2 A.2 2 A.2
3 3 A.3 3 A.3 3 A.3 3 A.3 3 A.3
4 4 4 B.0 4 B.0 4 4 D.0
5 5 5 B.1 5 B.1 5 5 D.1
6 6 6 B.2 6 B.2 6 6 D.2
7 7 7 7 C.0 7 C.0 7 C.0
8 8 8 8 C.1 8 C.1 8 C.1
9 9 9 9 C.2 9 C.2 9 C.2
10 10 10 10 C.3 10 C.3 10 C.3
11 11 11 11 11 11 D.3
12 12 12 12 12 12 D.4
13 13 13 13 13 13
14 14 14 14 14 14
(a) Fifteen Available Frames (b) Load Process A (c) Load Process B (d) Load Process C (e) Swap out B (f) Load Process D
nach (f)
0 0 0 — 0 7 0 4 13
1 1 1 — 1 8 1 5 14
2 2 2 — 2 9 2 6 Free frame
3 3 Process B 3 10 3 11 list
Process A page table Process C 4 12
page table page table Process D
page table
A. Mäder 1253
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Seitengröße
I 1 KiB, 4 KiB, 8 KiB . . . 16 GiB (Hardware-, BS-abhängig!)
I klein vs. groß
+ weniger interne Fragmentierung
− aber sehr viele Seiten
− Prozesstabelle größer
− Datentransfer zu sekundärem Speicher für große Seiten effizienter
I mehrstufige Übersetzung
Tabelle wird zu groß ⇒ mehrstufige Tabellen
I
A. Mäder 1254
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
mehrstufige Übersetzung
Virtual Address
10 bits 10 bits 12 bits Frame # Offset
Root page
table ptr
Page
Frame
+ +
4-kbyte page
Root page table table (contains
(contains 1024 PTEs) 1024 PTEs)
A. Mäder 1255
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
2m 1 Frame # Offset
m bits
Inverted Page Table Real Address
(one entry for each
physical memory frame)
A. Mäder 1256
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Translation
Lookaside Buffer
TLB hit
Offset
Load
page
Page Table
TLB miss
Frame # Offset
Real Address
Page fault
A. Mäder 1257
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I voll-assoziativer Cache
Virtual Address Virtual Address
Page # Offset Page # Offset
5 502 5 502
Page # PT Entries
19
511
37
27
14
37 1
211
5 37
90
37 502 37 502
Frame # Offset Translation Lookaside Buffer Frame # Offset
Real Address Real Address
Page Table
A. Mäder 1258
Paging (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
TLB Operation
Virtual Address
Page # Offset
TLB
TLB miss
TLB
hit Cache Operation
Real Address
Main
Memory
Page Table
Value
A. Mäder 1259
aktuelle Betriebssysteme
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Übersicht Adressierung
Logical address = Logical address =
Relative address = 1502 Page# = 1, Offset = 478 Segment# = 1, Offset = 752
0000010111011110 0000010111011110 0001001011110000
Segment 0
750 bytes
Page 0
User process
(2700 bytes)
752
478
Page 1
1950 bytes
Segment 1
Page 2
fragmentation
Internal
(b) Paging
(page size = 1K)
A. Mäder 1260
aktuelle Betriebssysteme (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Virtual Address
Segment Number Page Number Offset
I Segmentierung + Paging
I Segmentierung ⇒ logische Trennung (Text, Data)
I + Paging ⇒ effiziente Verwaltung
I im Betriebssystem festlegen
I wann Seiten Laden? (auf Anfrage, Prepaging)
I wo in Hauptspeicher?, welche Seiten werden ausgelagert?
= Platzierungs- und Ersetzungsstrategie
I wieviel Multiprogramming? (Anzahl der Prozesse)
I wieviel Hauptspeicher pro Prozess (fest, dynamisch . . . )
I vielfältige Wechselwirkungen: Anwendungsszenario, Caching etc.
A. Mäder 1261
aktuelle Betriebssysteme (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Adressierung
Virtual Address
Seg # Page # Offset Frame # Offset
Segment Page
Table Table
Offset
Page#
Page
Frame
Seg#
+ +
A. Mäder 1262
aktuelle Betriebssysteme (cont.)
15.6 Betriebssysteme - Speicherverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1263
Ein-/Ausgabegeräte
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Mensch-Maschine Schnittstellen
I Displays, Tastatur, Maus, Terminals, Drucker . . .
I Schnittstellen zu Computerperipherie
I Festplatten, Speichermedien, Sensoren, Controller . . .
I Kommunikation zwischen Computersystemen
I Netzwerk, Modems . . .
I Charakteristika
I Datenrate
I Anwendung
I Schnittstellen
I Protokoll / Fehlerbedingungen
I Daten (Zeichen, Datenstrukturen, Blöcke von Bytes . . . )
I Repräsentation der Daten
I ...
A. Mäder 1264
Ein-/Ausgabegeräte (cont.)
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Gigabit Ethernet
Graphics display
Hard disk
Ethernet
Optical disk
Scanner
Laser printer
Floppy disk
Modem
Mouse
Keyboard
A. Mäder 1265
I/O-Optimierung
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
I Effizienz
I I/O oft als „Bottleneck“ im System
I extrem langsam, verglichen mit Hauptspeicher oder CPU
I Generalität
einheitliche Schnittstelle für (möglichst viele) Geräte (-klassen)
I
1. Programmed I/O
I/O-Modul führt Operation aus
I
2. Interrupt gesteuert
Befehl von Prozessor an I/O-Modul
I
A. Mäder 1267
Ein-/Ausgabe Behandlung (cont.)
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
Address
Address Lines Register
Request to DMA
Acknowledge from DMA
Control
Interrupt
Logic
Read
Write
A. Mäder 1268
Ein-/Ausgabe Behandlung (cont.)
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
DMA
Processor DMA I/O I/O Memory
I/O
I/O I/O
System bus
I/O bus
A. Mäder 1269
Ein-/Ausgabe Behandlung (cont.)
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
In
I/O Device
(a) No buffering
A. Mäder 1270
Ein-/Ausgabe Behandlung (cont.)
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
In Move
I/O Device
In Move
I/O Device
In Move
I/O Device •
•
A. Mäder 1271
Weitere Themen
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
File
allocation
User access
control
A. Mäder 1272
Weitere Themen
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
ENDe
A. Mäder 1272
Weitere Themen
15.7 Betriebssysteme - I/O und Dateiverwaltung 64-040 Rechnerstrukturen und Betriebssysteme
ENDe
A. Mäder 1272
Literatur
15.8 Betriebssysteme - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1273
Literatur (cont.)
15.8 Betriebssysteme - Literatur 64-040 Rechnerstrukturen und Betriebssysteme
A. Mäder 1274