1. Grundlagen der Informatik Organisation und Architektur von Rechnern Inhalt Grundlagen digitaler Systeme Boolesche Algebra / Aussagenlogik Organisation und Architektur von Rechnern Algorithmen, Darstellung von Algorithmen mit Struktogrammen und Programmablaufplänen Zahlensysteme und interne Informationsdarstellung
Peter Sobe
1
Rechneraufbau: Hardware-Struktur CPU Systembus
Memory RAM
E/A Bridge
GPU E/A-Bus
Netzwerk
Peter Sobe
DiskController
…
2
Rechneraufbau: CPU-Struktur Spezialregister
Datenregister
Rechenwerk
Steuerwerk
Lade-/SpeicherEinrichtung
CPU
Systembus Memory RAM Peter Sobe
Hier ist nicht alles gezeigt! Eine reale CPU ist wesentlich komplexer. 3
Schichtenmodell Strukturierung des Rechensystems (Hardware und Software) in mehrere aufeinander liegende Schichten. Höhere Schichten benutzen darunter liegende über Schnittstellen Nur die Schnittstellen sind nach oben sichtbar, die Implementierung der zugehörigen Schicht bleibt verborgen (’information hiding’). Schichten können ausgetauscht werden (unter Beibehaltung ihrer Schnittstelle), ohne dass die darüber liegenden Schichten geändert werden müssen. Beispiel: Verschiedene Sprachschichten
High-level language level (C): A = B + C;
Peter Sobe
Assembly language level (MC68020): MOVE.W B, D1 ADD.W C, D1 MOVE.W D1, A 4
Beispiel Machine language level (MC68020) (in bits): 1000:
MOVE.W
(0x2002).W,D1
0011 0010
0010 0000
0011 0000
1000 0010
1004:
ADD.W
(0x2004).W,D1
1101 0010
0010 0000
0111 0000
1000 0100
1008:
MOVE.W
D1,(0x2000).W
0011 0010
0001 0000
1100 0000
0001 0000
2000:
A
2002:
B
2004:
C
Peter Sobe
5
Schichten Schnittstellen zwischen den Schichten Einzelne Schichten können ausgetauscht werden, sofern die Schnittstellen zu den benachbarten Schichten beibehalten werden.
ausführbares Programm Laufzeitsystem, Bibliotheken, Dienste
Schnittstelle für ausführbare Programme
Betriebssystem Befehlssatz und Speicherarchitektur
Mikroarchitektur Digitale Logik Elektrische Schaltung Peter Sobe
6
x86-Architektur (1) Betrachtet ausgehend vom äußeren Erscheinungsbild: Registersatz: Anzahl der Register, Freiheiten bzw. Beschränkungen bei deren Verwendung Befehlssatz: Befehlsliste und evtl. verschiedene Varianten der Befehle, wenn unterschiedliche Adressierungsarten zugelassen sind.
Alles andere betrifft die Implementierung und Realisierung
Peter Sobe
7
x86-Architektur (2) Intel 80x86-Familie 80186
8086
Co-Proz. Busbreite Daten/Adress. (Bit) 16/20 8087
80188 80286
80287
80386DX
80386SX
80387
80486DX
80486SX
80487
Pentium
Verbesserung der Implementierung der Architektur von 12 CPI beim 8086 auf 1.5 - 3 CPI beim Pentium (CPI = Cycles Per Instruction). Peter Sobe
Große Bedeutung durch Einsatz in IBM-kompatiblen PCs. Aufgrund der hohen 16/24 Stückzahlen ‚Mainstream’ der 16/24 (SX) derzeitigen 32/32 (DX) Rechnerentwicklung. 32/32 64/32
CISC-Prozessoren aus historischen Gründen „binär abwärtskompatibel“ zum ‚Urahnen’ 8086 Stetige Verbesserung der Technologie (Taktfrequenz von 4.77 bis 10 MHz beim 8086/8088 auf über 3 GHz beim Pentium). 8
x86-Architektur (3) Allgemeine Register AX – Akkumulator-Register, Ziel und Quelle für Rechenoperationen Teilung in hohes Byte (AH) und niedriges Byte (AL) BX - Basis-Register für Anfangsadressen, Teilung in hohes Byte (BH) und niedriges Byte (BL) CX – Count Register, Teilung in hohes Byte (CH) und niedriges Byte (CL), allgemein verwendbar, spezielle Bedeutung bei Schleifen DX - Daten-Register , Teilung in hohes Byte (DH) und niedriges Byte (DL)
EAX EAX
RAX (bei x86-64)
AX AX
AH AH 64 Bit Peter Sobe
32 Bit
16 Bit
ALAL 8 Bit 9
x86-Architektur (4) Pointer-Register SP Stack-Pointer: zur Adressierung des Stacks verwendet BP Base-Pointer: zur Adressierung des Stacks verwendet IP Instruction-Pointer: Offset des nächsten Befehls
Index-Register SI Source-Index: Unterstützung von Adressierungen esi Quelle (eng: source) für Stringoperationen DI Destination-Index: Unterstützung von Adressierungen edi Ziel (eng: destination) für Stringoperationen
Segment-Register CS Code-Segment: zeigt auf aktuelles Codesegment DS Daten-Segment: zeigt auf aktuelles Datensegment SS Stack-Segment: zeigt auf aktuelles Stapelsegment ES Extra-Segment: zeigt auf weiteres Datensegment Peter Sobe
10
x86-Architektur (5)
Statusflags CF Carry-Flag Übertragflag AF Auxiliary Carry-Flag Hilfsübertragflag ZF Zero-Flag Nullflag SF Sign-Flag Vorzeichenflag PF Parity-Flag Paritätsflag OF Overflow-Flag Überlaufflag Kontrollflags TF Trap-Flag Einzelschrittflag IF Interrupt Enable-Flag Interruptflag
Peter Sobe
11
x86-Architektur (6) V
Exponent Signifikant
R0 R1
8 x 80-Bit-Gleitkommaregister (internes IEEE-Format)
R2 R3 R4 R5 R6 R7 79 78
64 63
0
Gleitkomma-Register dienen zur kurzfristigen Speicherung Fließkomma-Variablenwerten, um vom Fließkomma-Rechenwerk verknüpft zu werden Peter Sobe
12
x86: Datentypen und Befehle
CISC-Befehlsformat (variable Länge)
Adressierungsarten - unmittelbar - Register indirekt - direkt - indiziert - Register Peter Sobe
13
x86-Befehlssatz ohne Gleitkommabefehle Transferoperationen (s.g. Moves) MOV DST, SRC
Move SRC to DST
PUSH SRC
Push SRC onto Stack
POP DST
Pop value from Stack to DST
XCHG DS1, DS2
Exchange DS1 and DS2
Diese Befehle werden benutz, um Variablenwerte vor deren Verwendung in Rechenoperationen in die Register zu holen, oder von den Registern wieder zurück in den Hauptspeicher zu kopieren. Oben ist nur eine Auswahl der gebräuchlichsten Befehle angegeben. Peter Sobe
14
x86-Befehlssatz ohne Gleitkommabefehle Arithmetische Operationen ADD DST,SRC
Add SRC to DST
SUB DST,SRC
Subtract SRC from DST
MUL SRC
Multiply EAX by SRC (unsigned)
IMUL SRC
Multiply EAX by SRC (signed)
DIV SRC
Divide EDX-EAX by SRC (unsigned)
IDIV SRC
Divide EDX-EAX by SRC (signed)
INC DST
Add 1 to DST
DEC DST
Subtract 1 from DST
NEG DST
Negate DST (subtract it from 0)
Peter Sobe
15
x86-Befehlssatz ohne Gleitkommabefehle Steuerfluss JMP ADDR
Jump to ADDR
Jxx ADDR
Conditional Jump to ADDR (xx zzum Beispiel NE für ‚NOT Equal‘ als Ergebnis des letzten Vergleichs mit CMP (Compare)
CALL ADDR
Call Procedure at ADDR
RET
Return from Procedure
LOOPxx
Loop until Condition is met
Peter Sobe
16
x86-Befehlssatz ohne Gleitkommabefehle Boolean AND DST,SRC
Boolean AND SRC into DST
OR DST,SRC
Boolean OR SRC into DST
XOR DST,SRC
Boolean Exclusive OR SRC to DST
NOT DST
Replace DST with 1‘s complement
Shift/Rotate SAL/SAR DST,#
Shift DST left/right # of Bits
SHL/SHR DST,#
Shift logical DST left/right # of Bits
ROL/ROR DST,#
Rotate DST left/right # of Bits
RCL/RCR DST,#
Rotate DST through carry # of Bits
Vergleichsoperationen TST SRC1,SRC2
Boolean AND Operands, Set Flags
CMP SRC1,SRC2
Set Flags based on SRC1-SRC2
Peter Sobe
17
Mikroarchitektur Pentium 4 Umsetzung der IA-32 CISC-Befehle in 1 bis 4 Ops (interne RISC-Befehle) durch Decoder. Ausführung in supersklarer RISCArchitektur Trace Execution Cache (TEC) für Ops mit eigener Sprungvorhersage, 3 Ops pro Takt wie PentiumIII Verbesserte Sprungvorhersage für x86Befehle mit größerem BTB 20-stufige I-Pipe, Taktraten bis über 3 GHz 13 Funktionseinheiten, davon max. 6 gleichzeitig aktivierbar 8 KB Datencache (klein, aber schnell); Hardware-Prefetching mit Quad Pumped Speicherschnittstelle (3,2 GByte/s) Befehlssätze (MMX, SSE, SSE2) Optional: Hyperthreading (SMT)
Peter Sobe
18
Hyperthreading Intels Implementierung von SMT: 2-fach Hyper-Threading für den P4, auch für Atom CPUs, Verhält sich für das Betriebssystem wie zwei logische Prozessoren, d. h. Multiprozessor-Software ist ohne Änderung lauffähig.
P4-Pipeline mit SMT Pipeline-Register (Queues) und einige Pipelinestufen verdoppelt, die meisten Stufen werden abwechselnd von beiden Threads genutzt. Verdoppelung der Register durch RegisterRenaming implementiert. Nur 5% zusätzliche Chipfläche. Konflikte beim Nutzen der gemeinsamen Caches (Cache Aliase) können Leistung einschränken.
Peter Sobe
19