Skript S. 1

Werbung
Computersysteme
Michael Zwick
Technische Universität München
Inhalt
1 Motivation: Wie funktioniert ein Computer? ................................ 10
1.1 Komponenten eines Computers ................................................................................................ 10
1.1.1 Peripherie-Geräte und Netzteil ....................................................................................... 12
• Netzteil .................................................................................................................................... 12
• Grafikkarte .............................................................................................................................. 15
• DVD-ROM .............................................................................................................................. 24
• DVD-Brenner .......................................................................................................................... 33
• Festplatte ................................................................................................................................. 34
1.1.2 Komponenten auf der Hauptplatine - Überblick .............................................................. 42
• Prozessor ................................................................................................................................. 44
• Arbeitsspeicher ........................................................................................................................ 49
• Busse ....................................................................................................................................... 56
• GMCH = Graphics and Memory Controller Hub (B) ............................................................. 65
• ICH = Input/Output Controller Hub (C) ................................................................................. 65
• SIO-Controller = Super Input/Output Controller (D) ............................................................. 65
1.2 Von Neumann-Architektur .......................................................................................................... 66
1.3 Harvard-Architektur .................................................................................................................... 70
1.4 Vom Algorithmus zum Prozessor – Abstraktionsebenen ....................................................... 71
Inhalt
1 Aufgaben ‘‘Wie funktioniert ein Computer’’
81
Netzteil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Grafikkarten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Optische Laufwerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Festplatte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Prozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
Bussystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
Rechner-Architekturen . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
2 Darstellung von Zahlen und Zeichen
89
2.1 Bits, Byte, Datenworte und Logikpegel . . . . . . . . . . . . . . . . . . 90
2.2 Zeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
2.3 Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
2.4 Codierung von Festkommazahlen . . . . . . . . . . . . . . . . . . . . . 98
Vorzeichenlose Festkommazahlen . . . . . . . . . . . . . . . . . . . . . 98
Vorzeichenbehaftete Festkommazahlen . . . . . . . . . . . . . . . . . . 106
Vorzeichen und Betrag . . . . . . . . . . . . . . . . . . . . . . . . . 106
Einer-Komplement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Zweier-Komplement . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
2.5 Codierung von Gleitkommazahlen nach IEEE 754 . . . . . . . . . . . . 118
Format von Gleitkommazahlen . . . . . . . . . . . . . . . . . . . . . 119
Rechnen mit Gleitkommazahlen . . . . . . . . . . . . . . . . . . . . 121
3 Arithmetische Schaltungen
127
3.1 Schaltungselemente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Logikgatter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Multiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Demultiplexer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Decoder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
Speicherelemente: Flipflops und Register . . . . . . . . . . . . . . . . . 132
3.2 Halbaddierer (HA)
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
4
3.3 Volladdierer (VA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
3.4 Ripple-Carry-Addierer/Subtrahierer . . . . . . . . . . . . . . . . . . . . 139
3.5 Carry-Look-Ahead . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Einstufige Carry-Look-Ahead-Schaltung
. . . . . . . . . . . . . . . . . 143
Kaskadierung von Carry-Look-Ahead-Schaltungen . . . . . . . . . . . 145
3.6 Addition und Subtraktion von Gleitkommazahlen . . . . . . . . . . . . 153
3.7 Kombinatorischer Multiplizierer . . . . . . . . . . . . . . . . . . . . . . 153
3.8 Sequentieller Multiplizierer . . . . . . . . . . . . . . . . . . . . . . . . . 157
Multiplexer-basierte Implementierung der Steuerung
. . . . . . . . . . 161
ROM-basierte Implementierung der Steuerung . . . . . . . . . . . . . . 166
Multiplikation vorzeichenbehafteter Zahlen . . . . . . . . . . . . . . . . 170
Multiplikation von Gleitkomma-Zahlen . . . . . . . . . . . . . . . . . . . 170
3.9 Subtraktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
Halb-Subtrahierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Voll-Subtrahierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Ripple-Borrow-Subtrahierer . . . . . . . . . . . . . . . . . . . . . . . . . 175
3.10 Division . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
Kombinatorischer Dividierer . . . . . . . . . . . . . . . . . . . . . . . . . 180
Sequentieller Dividierer . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
Implementierung des Zustandsautomaten mit Multiplexern . . . . . . . 185
Implementierung des Zustandsautomaten mit Speicherbausteinen . . . 188
4 Prozessor-Datenpfad
191
4.1 Vom zu lösenden Problem abhängige Schaltung . . . . . . . . . . . . 191
4.2 Universalrechner: Schaltung unabhängig vom Problem . . . . . . . . 192
Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Beispiel-Schaltung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Verständnisfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
Programmieraufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
Quadratische Gleichung . . . . . . . . . . . . . . . . . . . . . . . . . 200
Kugelvolumen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
5
4.3 Assembler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
Assembler als leicht verständliche hardwarenahe Sprache . . . . . . . 204
Definition einer Assembler-Sprache für den Universalrechner . . . . . . 205
Assembler als Übersetzer . . . . . . . . . . . . . . . . . . . . . . . . . . 210
5 Befehlssätze und deren Klassifikation
215
Befehlssatz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Klassifikation nach Komplexität . . . . . . . . . . . . . . . . . . . . . . 215
CISC = Complex Instruction Set Architecture . . . . . . . . . . . . . 215
RISC = Reduced Instruction Set Architecture . . . . . . . . . . . . . 215
Klassifikation nach Verortung der Operanden . . . . . . . . . . . . . . . 216
Register-Speicher-Architektur . . . . . . . . . . . . . . . . . . . . . 216
Register-Register-Architektur/Load-Store-Architektur . . . . . . . . 216
Klassifikation nach der Anzahl der Operanden . . . . . . . . . . . . . . 216
Drei-Adress-Maschine . . . . . . . . . . . . . . . . . . . . . . . . . . 216
Zwei-Adress-Maschine . . . . . . . . . . . . . . . . . . . . . . . . . 216
Ein-Adress-Maschine/Akkumulator-Maschine . . . . . . . . . . . . 216
Null-Adress-Maschine/Stack-Maschine . . . . . . . . . . . . . . . . 216
6 MMIX-Prozessor
218
6.1 Programmiermodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
6.2 Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Allzweckregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Spezialregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
Verständnisfragen/Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . 222
Allgemein . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Allzweckregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Spezialregister . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6.3 Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Wortbreiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
Ausrichtung der Daten im Speicher - Alignment . . . . . . . . . . . . . 225
Big- und Little Endian . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
Speicherorganisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Text-Segment: Programme und Interrupt-Vektoren
. . . . . . . . . 228
Daten-Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Pool-Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
Stack-Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
6
Betriebssystem-Segment . . . . . . . . . . . . . . . . . . . . . . . . 232
Virtueller Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Verständnis Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . 234
Alignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
Big- und Little-Endian . . . . . . . . . . . . . . . . . . . . . . . . . . 236
Speicherorganisation . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Virtueller Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
6.4 MMIX-Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Aufbau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
Assembler- und Loader-Befehle . . . . . . . . . . . . . . . . . . . . . . 243
Der IS-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Der GREG-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
Der LOC-Befehl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
Die Befehle BYTE, WYDE, TETRA und OCTA . . . . . . . . . . . . . 245
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
Übersetzungsprozess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Befehlswort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258
6.5 MMIX Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Definitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
Register-Register-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Arithmetische Befehle auf Festkommazahlen . . . . . . . . . . . . . 266
Direktoperand in Register schreiben . . . . . . . . . . . . . . . . . . 268
Umwandlung Gleitkommazahl $ Festkommazahl . . . . . . . . . . 271
Arithmetische Befehle auf Gleitkommazahlen . . . . . . . . . . . . . 272
Schiebe-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
Logische Operationen auf Bit-Ebene . . . . . . . . . . . . . . . . . . 276
Register-Speicher-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . 279
Daten vom Speicher in ein Register laden . . . . . . . . . . . . . . . 280
Daten vom Register in den Speicher schreiben (speichern) . . . . . 289
Adressen in ein Register laden . . . . . . . . . . . . . . . . . . . . . . . 294
Zugriff auf Spezialregister . . . . . . . . . . . . . . . . . . . . . . . . . . 296
Verzweigungsbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
Unbedingte Verzweigung . . . . . . . . . . . . . . . . . . . . . . . . 298
Bedingte Verzweigungen . . . . . . . . . . . . . . . . . . . . . . . . 298
7
Befehle für Funktionsaufrufe . . . . . . . . . . . . . . . . . . . . . . . . 302
Namensräume - der PREFIX-Befehl . . . . . . . . . . . . . . . . . . . . 303
Funktionsaufrufe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
Wert-Übergabe und Referenz-Übergabe . . . . . . . . . . . . . . . 306
Aufrufkonventionen . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
Parameterübergabe auf dem Stack beim MMIX
. . . . . . . . . . . 307
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 318
Beispielprogramm: Quadratische Gleichung . . . . . . . . . . . . . 327
7 Pipelining
333
7.1 Pipelining-Datenpfad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
7.2 Pipelining-Konflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Datenkonflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Erkennen von Datenkonflikten . . . . . . . . . . . . . . . . . . . . . 337
Auflösen von Datenkonflikten durch Einfügen von NOP-Befehlen . . 339
Auflösen von Datenkonflikten mittels Befehlsumstellung . . . . . . . 340
Auflösen von Datenkonflikten durch ‘‘Stalls’’ . . . . . . . . . . . . . 342
Auflösen von Datenkonflikten durch Forwarding-Pfade . . . . . . . 342
Strukturkonflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Steuerungskonflikte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 348
8 Cache
351
8.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
8.2 Speicher-Hierarchien . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353
8.3 Begriffsklärungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Cache-Hit, Hit-Time und Hit-Rate . . . . . . . . . . . . . . . . . . . . . 354
Cache-Miss, Miss-Time und Miss-Rate . . . . . . . . . . . . . . . . . . 354
Verdrängungsstrategien . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Schreibstrategien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
8.4 Direkt-Abgebildeter Cache . . . . . . . . . . . . . . . . . . . . . . . . . 357
8.5 Voll-Assoziativer Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
8.6 Set-Assoziativer Cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 361
9 Pipelining
4
8
9
10
1 Motivation: Wie funktioniert ein Computer?
In diesem Kapitel geben wir Ihnen eine kleine Einführung in den Vorlesungsstoff der Computertechnik.
Dieses Kapitel ist jedoch mehr als nur eine Einführung. Es dient als Überblick über den Aufbau und
die Funktionsweise gängiger Arbeitsplatzrechner. Während dieses Kapitel dabei einen kompletten PC
betrachtet, fokussieren die restlichen Kapitel fast ausschliesslich auf den Prozessor.
Ziel dieses Kapitel ist es, Ihnen das Umfeld von Prozessoren und die Interaktion von Prozessoren mit
diesem Umfeld näherzubringen. Wenn Sie verstanden haben, welche Aufgabe Prozessoren in diesem
Umfeld haben, dann kennen Sie automatisch auch das Funktionsvermögen von Prozessoren, wissen
also, was so ein Prozessor eigentlich können muss. Dies ist die Voraussetzung für die restlichen Kapitel dieses Skripts, in denen wir uns einen eigenen Prozessor zusammenbauen werden.
1.1 Komponenten eines Computers
In diesem Kapitel öffnen wir einen gewöhnlichen Arbeitsplatzrechner und schauen uns einmal an, was
da alles drinnen steckt. Dabei werden wir die zutage tretenden Komponenten hinsichtlich Funktion
und Aufbau untersuchen. Nachdem wir uns bis zu den auf der Hauptplatine befindlichen Komponenten vorgearbeitet haben, werden wir durch eine Abstraktion (Verstecken von Details) die prinzipielle
Funktionsweise des PCs zu erläutern.
Nach dieser Abstraktion werden wird wieder detailreicher, wenn wir das reale (nicht abstrahierte) Zusammenspiel der einzelnen Komponenten betrachten.
Nachfolgende Abbildung zeigt den Arbeitsplatzrechner, den wir im Folgenden zerlegen werden.
Abb. 1: Computer-Arbeitsplatz
11
Wir schrauben die Seitenverkleidung ab …
Abb. 2: Öffnen eines Computers
… und identifizieren die dann erscheinenden Komponenten.
DR
NT
DB
DL
GK
FP
FW
Abb. 3: Geräte in einem Computer
12
1.1.1
Peripherie-Geräte und Netzteil
• Netzteil
Das mit NT gekennzeichnete Gerät ist das Netzteil. Es dient zur Stromversorgung des PCs.
Abb. 4: Computer-Netzteil
Computernetzteile wandeln die aus der Steckdose kommenden 230 V Wechselspannung in folgende
Gleichspannungen um:
− +3,3 V und +5 V für das Mainboard (die grosse grüne Platine) und die darauf befindlichen bzw.
damit verbundenen elektrischen Bauteile.
− +12 V für die Motoren der Laufwerke und Lüfter.
− -5 V und -12 V, die heutzutage meist gar nicht mehr verwendet werden, sondern zumeist nur
noch aus Gründen der Kompatibilität zu älteren Geräten vorhanden sind (z.B. -5 V und -12 V für
den ISA-Bus, der in der heutigen Zeit fast nur noch in der Industrie zur Maschinensteuerung
(z.B. CNC-Fräßmaschine) verwendet wird oder -5 V zur ±5 V-Versorgung älterer FloppyController, die zur Verstärkung des Lesesignals noch Operationsverstärker ohne Ladungspumpe einsetzen).
Insbesondere der hohe Stromverbrauch des Hauptprozessors und der Grafikkarte erfordern die Bereitstellung hoher Ströme. Nachfolgende Abbildung zeigt eine typische Aufteilung der Leistung auf die
+3,3 V, +5V und +12 V Leitungen. Die Leitung mit der Bezeichnung +5 VSB (SB = Standby) dient zur
Versorgung bestimmter Rechner-Komponenten im Standby-Modus (z.B. Arbeitsspeicher).
13
Ausgangsspannung
Strom (max.)
+3,3 V
+5 V
+5 VSB
+12 V
26 A
42 A
2,5 A
18 A
12,5 W
216 W
Leistung (max.)
220 W
max. Gesamtleistung
450 W
Abb. 5: Typische Ausgangsleistung eines ATX-Netzteils
Aufgrund dieser hohen Ströme erfolgt die Spannungsreduktion von 230 V auf die gewünschten Ausgangsspannungen nicht durch einen gewöhnlichen Transformator, sondern durch den Einsatz eines
Schaltnetzteils.
In PCs eingesetzte Schaltnetzteile haben oft folgenden Aufbau:
Gleichrichter
°
230 V ~
°
°
•
~
°•
°
•
•
°
LeistungsSchalter
Gleichrichter
HF-Trafo
•
=
°
°
°
1
2
°
°
°
°
~
3
°•
°
Potentialtrennung
°
°
°
°
TiefpassFilter
°
°
•
°
°
•
°
•
•
4
°
•
=
5
Regler
=
7
6
Abb. 6: Prinzip-Aufbau eines Schaltreglers
Eine mögliche Zuordnung der Komponenten ist in nachfolgender Abbildung angegeben.
4
3
2
5
2
6
1
3
7
3
Abb. 7: Identifizierung von Schaltregler-Komponenten
14
°
5V=
°
Der in Abb. 6 gezeigte Schaltregler funktioniert wie folgt:
− Die Netzspannung (230 V Wechselspannung, 50 Hz) wird an einen Gleichrichter (1) angelegt,
der daraus eine Gleichspannung generiert.
− Über einen Leistungsschalter (2) wird diese Spannung der Primärseite eines HF-Trafos (3) zugeführt. Der Leistungsschalter sorgt durch permanentes Ein- und Ausschalten dafür, dass die
am HF-Trafo angelegte Spannung mit einer Frequenz von ca. 20 – 200 kHz ein- und ausgeschaltet wird.
− Der HF-Trafo (3) überträgt die an der Primärseite angelegte Spannung auf seine Sekundärseite.
− Der Gleichrichter (4) erzeugt aus der sekundärseitigen Wechselspannung wieder einen rein positiven Spannungsverlauf, der durch das Tiefpassfilter (5) auf einen Mittelwert gebracht wird.
− Dieser Mittelwert entspricht der aktuellen Ausgangsspannung.
− Die Ausgangsspannung dient als Eingang für den Regler (6), der zur Aufgabe hat, die Ausgangsspannung auf einem bestimmten Niveau zu halten. Dies erreicht der Regler durch Änderung des An-/Aus-Verhältnisses des Signals, das den Leistungsschalter steuert. Die Ausgangsspannung des Schaltnetzteils ist dabei lediglich abhängig vom Tastverhältnis (Verhältnis der
An-/Aus-Zeit) des Signals, das den Leistungsschalter ein- bzw. ausschaltet.
− Die Potentialtrennung (7), die in der Regel durch Optokoppler erreicht wird, verhindert, dass die
230 V Netzspannung über den Regelkreis zum Ausgang des Netzteils gelangt.
Zwar müssen in Schaltreglern auch Trafos eingesetzt werden, diese können jedoch wesentlich kleiner
gebaut werden, da sie durch die Verwendung einer hohen Frequenz (20 – 200 kHz statt 50 Hz Netzfrequenz) wesentlich mehr Leistung (proportional zur Frequenz) übertragen können und die Windungsanzahl somit gering bleiben kann.
Wenige Windungen auf der Sekundärseite ⇔ geringer Innenwiderstand der Sekundärseite ⇔ in der
Sekundärseite wird wenig Leistung in Wärme umgewandelt ⇒ guter Wirkungsgrad.
Nachfolgend angegebene Steckerbelegung eines ATX-Netzteils zeigt, dass aufgrund der hohen
Strombelastung bei +3,3 V und +5 V diese Spannungen über mehrere Kontakte parallel übertragen
werden.
+3,3 V
11
1
+3,3 V
-12 V
12
2
+3,3 V
GND
13
3
GND
PS_ON
14
4
+5 V
GND
15
5
GND
GND
16
6
+5 V
GND
17
7
GND
-5 V
18
8
PW_OK
+5 V
19
9
+5 VSB
+5 V
20
10
+12 V
Abb. 8: Steckerbelegung eines (ATX-) Netzteils
Die Signale PS_ON und PW_OK haben folgende Funktion:
− PS_ON ist die Abkürzung für Power supply on. Dieses Signal ist ein Eingangs-Signal und dient
dazu, das Netzteil einzuschalten. Die Leitung PS_ON muss dabei auf Masse (GND für engl.
Ground) gelegt werden.
− PW_OK ist die Abkürzung für Power ok. Dieses Signal liegt beim Einschalten des Netzteils auf
Masse und wechselt auf einen Pegel von etwa 5 V, wenn sich die vom Netzteil gelieferte Spannung nach dem Einschalten stabilisiert hat. PW_OK ist auf der Hauptplatine mit dem Taktgeber
des Prozessors verbunden und sorgt über die Reset-Leitung dafür, dass der Prozessor erst
dann mit der Abarbeitung von Befehlen beginnt, wenn sich die Versorgungsspannung stabilisiert hat. Auf diese Weise wird verhindert, dass der Prozessor in einen undefinierten Zustand
gerät.
15
• Grafikkarte
Die in Abb. 3 auf Seite 12 mit GK gekennzeichnete Einsteck-Platine ist die Grafikkarte.
Stecker für zusätzliche Stromversorgung
Anschluss für den
Monitor (DVI)
Speicherchips mit Kühlkörper
BIOS
Anschluss für den
Monitor (VGA)
GPU mit Kühlkörper
(GPU = Graphics
Processing Unit)
AGP-Anschluss
(Verbindung zum Prozessor)
Abb. 9: Grafikkarte
Die Grafikkarte besteht aus folgenden Komponenten:
− GPU (Graphics Processing Unit): Der Prozessor der Grafikkarte. Die GPU implementiert die von
der Grafikkarte bereitgestellten Funktionen:
+
+
+
+
+
Kommunikation mit dem PC-Prozessor (hier über AGP)
Ansteuerung der Speicherchips
RAMDAC → Wandlung der digitalen Bildinformationen in analoge Bildschirm-Signale (s.u.)
Kommunikation mit dem Monitor (über VGA oder DVI)
Beschleunigung von 3D-Funktionen
− Speicherchips, um Bilddaten und sonstige anfallende Daten abspeichern zu können
− BIOS (Basic Input Output System), um die Grafikkarte auch schon vor dem Laden von Grafikkartentreibern verwenden zu können (s.u.)
− AGP-Anschluss (oder auch PCI-Express) zur Kommunikation mit dem PC-Prozessor
− VGA- bzw. DVI-Anschluss zur Kommunikation mit dem Monitor
16
Die Grafikkarte hat im wesentlichen zwei Aufgaben:
− Sie dient als Schnittstelle zwischen Computer und Bildschirm.
− Sie beschleunigt grafikrelevante Berechnungen (insbesondere 3D-Berechnungen).
Als Schnittstelle zwischen Computer und Bildschirm übersetzt die Grafikkarte die Daten, die der Prozessor liefert, in Signale, die der Bildschirm zur Anzeige benötigt.
Die Grafikkarte verfügt über einen sog. Grafik-Speicher (oft auch Video-Speicher genannt).
− In diesen Speicher schreibt der Prozessor die Daten, die er als Bild angezeigt bekommen will.
− Die Grafikkarte liest diese Daten aus und erzeugt aus diesen Daten die entsprechenden Bildschirm-Signale.
1
Die einzelnen Byte im Video-Speicher werden direkt auf Pixel -Farben abgebildet. Die Farbe eines
einzelnen Pixels ergibt sich dabei aus der Kombination eines roten (R), grünen (G) und blauen (B)
Bildschirmpunkts. Nachfolgende Abbildung zeigt, wie die im Video-Speicher abgelegten Byte der Intensität (Helligkeit) der jeweiligen Bildschirmpunkte (Grundfarben) zugeordnet werden.
Video-Speicher in der Grafikkarte
Bildschirm
0x3F
pro Grundfarbe 1 Byte
⇒ 24 Bit Farbtiefe
0
G
R
0x00
B
0x78
1 Pixel
0xE8
B
B
R
G
R
G
R
G
R
0xFF
B
B
B
R
G
R
G
R
G
B
B
R
…
R
G
…
…
Abb. 10: Abbildung der im Video-Speicher abgelegten Werte auf die Intensität von Bildschirm-Punkten
Durch Ändern einzelner Byte im Grafik-Speicher kann der Prozessor die Intensität jedes rot (R)-, grün
(G)- oder blau (B)-Anteils eines Pixels ändern. Soll ein Pixel beispielsweise Rot erscheinen, werden
den zugehörigen drei Byte im Grafik-Speicher die Werte R = 0xFF, G = 0x00, B = 0x00 zugeordnet.
Grün entspricht dann R = 0x00, G = 0xFF, B = 0x00 und ein dunkles Grau etwa R = 0x60, G = 0x60, B
= 0x60.
Zum Verständnis der Umwandlung der im Grafik-Speicher der Grafikkarte abgelegten Byte in ein Bildschirm-Signal ist es sinnvoll zu wissen, wie diese Bildschirmsignale überhaupt aussehen.
Bildschirm-Signale, die aus dem DVI-Anschluss kommen, sind digital und können in der Regel nur von
TFT-Bildschirmen verwendet werden.
Die Signale, die aus dem VGA (Video Graphics Array)-Anschluss einer Grafikkarte kommen, sind
analog und so aufgebaut, dass sie sich sehr leicht von einem Röhrenmonitor verarbeiten lassen. Aus
diesem Grund schauen wir uns erst einmal kurz an, wie ein Röhrenmonitor funktioniert (auch wenn
diese gerade von TFT-Bildschirmen vom Markt gedrängt werden).
1
Pixel ist ein aus picture element zusammengesetztes Kunstwort und bezeichnet die Punkte, aus denen gerasterte Bilder
aufgebaut sind. Die Farbe eines Pixels wird dabei aus den drei Grundfarben rot, grün und blau zusammengemischt.
17
Ein (Farb-)Röhrenmonitor enthält drei Kathoden, die jeweils einen Elektronenstrahl aussenden. Jeder
Elektronenstrahl (und somit jede Kathode) ist dabei für eine der drei Grundfarben (RGB) zuständig.
Die drei Elektronenstrahlen können in der Röhre durch sog. Ablenkspulen derart abgelenkt werden,
dass der Auftreffpunkt der Elektronenstrahlen auf der Bildschirmvorderseite horizontal und vertikal
verschoben werden kann. Durch Anlegen einer geeigneten Spannung kann man den Elektronenstrahl
somit an einer beliebigen Stelle auf der Vorderseite der Bildröhre auftreffen lassen.
Abb. 11: Durch geeignete Spannungen an den Ablenkspulen
kann der Auftreffpunkt der drei Elektronenstrahlen beliebig
in horizontaler und vertikaler Richtung verschoben werden.
Um aus den Elektronenstrahlen Farben erzeugen zu können, sind innen auf der Bildschirmvorderseite
abwechselnd phosphorhaltige Stoffe aufgebracht, die bei Elektronenbeschuss entweder Rot, Grün
oder Blau leuchten. Damit die Elektronenstrahlen immer nur die drei zu einem bestimmten Pixel gehörigen Punkte treffen und nicht auch noch benachbarte, ist zwischen den Kathoden und der fluoreszierenden Schicht noch eine Lochblende eingebaut.
Kathoden
3 Elektronenstrahlen
Lochblende
G
R
B
B
B
B
R
G
R
G
R
G
B
B
R
R
G
…
Spulen zur Ablenkung
der Elektronenstrahlen
B
R
G
R
G
R
G
R
Fluoreszierende Schicht
B
Abb. 12: Die von den Kathoden abgegebenen drei Elektronenstrahlen werden von Spulen
abgelenkt und treffen dann auf eine Lochblende, welche die Elektronenstrahlen genau
auf die rot, grün oder blau fluoreszierenden Punkte des gewünschten Pixels fokussiert.
18
…
In
Führt man die drei Elektronenstrahlen wie in nachfolgender Abbildung angegeben über den Bildschirm, werden alle rot, grün und blau fluoreszierenden Punkte von den zugehörigen Elektronenstrahlen getroffen.
Abb. 13: Weg der drei Elektronenstrahlen über den Monitor
An den Ablenkspulen zur horizontalen Ablenkung muss also eine periodisch ansteigende Spannung
(Sägezahn) Hsync anliegen, so dass die drei Elektronenstrahlen von links nach rechts wandern.
− Hat Hsync einen bestimmten negativen Wert, dann befindet sich der Elektronenstrahl ganz
links.
− Hat Hsync einen bestimmten positiven Wert, dann befindet sich der Elektronenstrahl ganz
rechts.
Bei den Ablenkspulen zur vertikalen Ablenkung muss ebenfalls eine von einem bestimmten negativen
Wert bis zu einem bestimmten positiven Wert ansteigende Spannung Vsync angelegt werden, so dass
die drei Elektronenstrahlen von oben nach unten wandern. Vsync muss dabei jedoch eine um die
Anzahl der Bildzeilen niedrigere Frequenz als Hsync haben. So gelangen die drei Elektronenstrahlen
erst dann am unteren Ende der Bildröhre an, wenn alle Zeilen von links nach rechts durchlaufen wurden.
Nachfolgende Abbildung zeigt die von einem VGA-Anschluss gelieferten Signale. Hsync und Vsync
sind dabei die gerade besprochenen Spannungen zur Positionierung der drei Elektronenstrahlen, R,
G, und B sind die Spannungen, welche die Strahlungsintensität der zugehörigen Kathoden und damit
die Intensität jeder Pixel-Grundfarbe steuern.
R
G
B
Hsync
Vsync
t
1. Zeile
2. Zeile
letzte Zeile
1. Bild
Abb. 14: Signale am VGA-Anschluss
19
1. Zeile
2. Bild
Zur Umwandlung der im Grafik-Speicher abgelegten Daten in die analogen Signale R, G und B verwenden Grafikkarten sog. RAMDACs. Diese RAMDACs wenden auf die im Grafik-Speicher (GrafikRAM; RAM = Random Access Memory, s.u.) abgelegten Byte eine Digital-/Analog-Wandlung (DAC =
Digital Analog Converter) an. Die Daten werden dabei byteweise ausgelesen und dann in die analogen Spannungen umgewandelt, die am VGA-Anschluss (vgl. Abb. 14) der Grafikkarte herauskommen.
Nachfolgende Abbildung zeigt den Verlauf der Daten auf dem Weg vom Prozessor zum Bildschirm.
Kabel bei
0x3F
RAMDAC (für Rot)
0x00
0x78
• •••
•• •
•• •
•• •
• •
RAMDAC (für Grün)
0xFF
0xE8
RAMDAC (für Blau)
…
…
…
Prozessor
Digital Cz
Video-Speicher
auf der Grafikkarte
Digital-Analog-Wandler
(RAMDAC)
.
B.
c:\>
+
habel bei Analog
VGABildschirm
Buchse
( VG A)
Abb. 15: Datenverlauf vom Prozessor zum Bildschirm
Die Darstellung von Bildern auf dem Bildschirm funktioniert wie folgt:
− Der Prozessor schreibt die Farbwerte für die Pixel in den Video-Speicher.
− Die im Video-Speicher liegenden Daten werden permanent vom RAMDAC in VGA-Signale
übersetzt und über die VGA-Buchse an den Bildschirm ausgegeben, der das Bild dann anzeigt.
− Das am Bildschirm angezeigte Bild bleibt solange dasselbe, bis der Prozessor andere Werte in
den Video-Speicher der Grafikkarte schreibt.
Die Daten, die der Prozessor in den Video-Speicher schreibt, müssen jedoch erst berechnet werden,
was im Vergleich zu den von der Grafikkarte auszuführenden Aktionen (Auslesen der Daten aus dem
Grafik-Speicher und Wandlung durch die RAMDACs [und der Darstellung am Bildschirm]) relativ lange
dauert.
Nehmen Sie an, auf den Bildschirm soll eine Linie mit einer bestimmten Dicke und einer bestimmten
Länge gezeichnet werden, wie z.B. die nachfolgend abgebildete Linie.
'
In
)
÷
( xz
,
yz )
Abb. 16: Linie
Um im Grafik-Speicher für jedes Pixel die Intensität der drei Grundfarben Rot, Grün und Blau ablegen
zu können, muss der PC-Prozessor zunächst berechnen, welche Pixel beim Zeichnen der Linie mit
welcher Farbe eingefärbt werden müssen.
20
HDMD
Ausgehend von einer mathematischen Beschreibung der Linie, z.B. der Geradengleichung y = mx + t,
kann man bestimmen, welche Pixel von der Linie überhaupt getroffen werden.
2
Nachfolgende Abbildung zeigt, wie ein kurzer Ausschnitt der Linie auf den Pixeln zu liegen kommt.
Farbpunkte
auf dem
Bildschirm
zu zeichnende
Linie
einzelne
Pixel
Abb. 17: Ausschnitt der Linie
Für alle Pixel, die von der Linie berührt werden, muss der Prozessor jetzt berechnen, zu welchem Teil
die Pixel von der Linie bedeckt werden.
− Bedeckt die Linie den Pixel vollständig, wird er schwarz eingefärbt, d.h. im Grafik-Speicher werden an der entsprechenden Speicherstelle für Rot, Grün und Blau jeweils die Werte 0 eingetragen.
− Bedeckt die Linie die Pixel nur zu 40 Prozent, so trägt die Farbe der Linie (hier schwarz) auch
nur zu 40 Prozent zur Farbe des Pixels bei. Die restlichen 60 Prozent der Farbe des Pixels entsprechen der ursprünglichen Farbe des Pixels (bei uns also der Farbe weiss). Mit RGBschwarz =
(0, 0, 0) und RGBweiss = (255, 255, 255) ergibt sich damit für die neue Farbe RGBneu = (0,4 ⋅ 0 +
0,6 ⋅ 255 , 0,4 ⋅ 0 + 0,6 ⋅ 255 , 0,4 ⋅ 0 + 0,6 ⋅ 255), also der neue Farbwert RGBneu = (153,
153, 153).
offen
=
Die Pixel-Darstellung der Linie ergibt sich damit wie folgt:
I
1
|
Abb. 18: Pixeldarstellung der Linie
SX
Der Übergang von der Darstellung „Linie mit y = mx + t“ in die Pixeldarstellung wird in der Computergrafik als rendern bezeichnet.
Das Vorgehen, von der Linie berührte Pixel nicht einfach in der Farbe der Linie darzustellen, sondern
die Farbe des Pixels aus dem prozentualen Anteil der Überdeckung zu Mischen, wird Antialiasing
genannt.
2
Im obersten linken Pixel ist noch einmal dargestellt, wie die Pixel auf dem Bildschirm durch rote, grüne und blaue Punkte
erzeugt werden.
21
Die für die Render-Vorgänge benötigten Berechnungen werden von optimierten Assembler-Routinen
durchgeführt, die im Betriebssystem verankert sind. Diese Routinen können über die Schnittstelle des
Betriebssystems aufgerufen werden, so dass jeder Programmierer Linien, Kreise, aber auch einzelne
Punkte auf dem Bildschirm zeichnen kann.
Obwohl die Render-Vorgänge bereits als optimierter Assembler-Code geschrieben sind, dauert deren
Ausführung (im Vergleich zur Darstellung der im Video-Speicher abgelegten Daten auf dem Bildschirm) relativ lange.
Würden die langsamen Render-Vorgänge direkt auf dem Grafik-Speicher ausgeführt werden, dann
würden Objekte bereits dann auf dem Bildschirm erscheinen, wenn sie noch gar nicht fertig berechnet
sind, was vom Betrachter insbesondere bei bewegten Objekten als sehr störend empfunden würde
(flickern).
*¥
Aus diesem Grund wird beim Rendern nicht direkt in den Grafik-Speicher, sondern in einen sog. BackBuffer gerendert, der ebenfalls auf der Grafikkarte zu finden ist. Ist das Bild fertig gerendert, werden
Grafik-Speicher und Back-Buffer vertauscht. Dabei werden die in den Puffern enthaltenen Daten jedoch nicht kopiert, sondern es wird den RAMDAC-Bausteinen einfach mitgeteilt, dass sich der GrafikSpeicher jetzt an einer anderern Adresse befindet. Der ehemalige Grafik-Speicher wird dann automatisch zum Back-Buffer.
0x3F
0x00
0x78
0xFF
wird gerade dargestellt
0xE8
…
RAMDAC (für Rot)
…
RAMDAC (für Grün)
• •••
•• •
•• •
•• •
• •
c:\>
RAMDAC (für Blau)
0x4C
…
0x38
0x79
0x00
0xFE
wird gerade erstellt und
im Anschluss dargestellt
…
Prozessor
Front- und
Back-Buffer
Digital-Analog-Wandler
(RAMDAC)
VGABuchse
Bildschirm
Abb. 19: Front- und Back-Buffer
Um das Verhältnis von Grafik-Speicher und Back-Buffer zu verdeutlichen, wird der Grafik-Speicher
auch oft Front-Buffer genannt.
22
Die Berechnungen zur Oberflächenstrukturierung, Beleuchtung und Verdeckung sind sehr aufwendig.
Ohne Grafikbeschleunigung müssten diese Berechnungen alle vom PC-Prozessor ausgeführt werden.
Mit Grafikbeschleunigung kann die Arbeit des PC-Prozessors auf die Berechnung der PolygonPositionen beschränkt bleiben, da die Grafikkarte den Rest erledigt. Da die Grafikkarte auf diese Art
von Berechnungen spezialisiert ist, kann sie diese wesentlich schneller ausführen als der PCProzessor. Darüber hinaus arbeitet die Grafikkarte parallel zum Prozessor, so dass die Grafikkarte
beispielsweise ein Bild rendern kann, während der PC-Prozessor gerade die Polygon-Positionen des
nächsten Bildes berechnet.
24
Herunterladen