PC Games Hardware WISSEN "So funktioniert Ihr Computer" So funktioniert Ihr Computer (Vorschau)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
www.pcgameshardware.de • www.pcghx.de
Wissen & Hintergründe • Viele Infografiken •
Illustrationen • Für Einsteiger & Profis
PC Games Hardware Wissen
164
Seiten
Wissen
So funktioniert
Ihr Computer
€ 11,99 01/2013
Österreich 13,50 € | Schweiz sfr 20,00 |
Holland/Belgien/Luxemburg € 13,90
DAS HARDWARE-MAGAZIN FÜR PC-SPIELER
Silencio 352 Silencio 550 Matte Silencio 550 White
Erhältlich bei:
alternate.de | atelco.de | bora-computer.de | caseking.de | gamersware.de | hardwareversand.de | kmcomputer.de
mindfactory.de | snogard.de | telbay.de | x-hardware.de | brack.ch | digitec.ch | steg-electronics.ch | ditech.at | e-tec.at
Editorial
PC Games Hardware Wissen
So funktioniert
Ihr Computer
Früher gab es Computer noch als Bausatz. Bevor IBM den
gleichnamigen PC auf den Markt brachte, war es üblich,
einen Haufen sündhaft teurer Elektronikteile selbst zusammenzubauen.
Familienväter, Studenten und Ingenieure
– oft begleitet vom ebenso neugierigen Nachwuchs
– zogen sich in den Hobbykeller zurück und schraubten
bessere Taschenrechner zusammen, begeistert von der
Technik und den geheimnisvollen Schaltkreisen.
Heute, fast 40 Jahre später, sind PCs natürlich nicht mehr
mit den Plastikkisten von damals zu vergleichen. Geblieben
jedoch ist die Faszination für die Technik: Wie wird
aus Stromimpulsen ein Rechenwerk, das Millionen Berechnungen
in einem Bruchteil einer Sekunde ausführt?
Wie kann eine lose Sammlung von unscheinbaren Chips
atemberaubend echt wirkende 3D-Landschaften auf den
Bildschirm zaubern? Und warum dauert der Rechnerstart
trotz aller Fortschritte immer noch so quälend lange?
Unser erster Band aus der Reihe „PC Games Hardware
Wissen“ nimmt sich dieser und vieler weiterer Fragen
an. Für alle, die ihren PC nicht nur einschalten, sondern
vielmehr an dem Geschehen hinter der Blechwand interessiert
sind, haben wir auf 160 Seiten detaillierte Erklärungen,
Dutzende Infografiken oder einfach nur Wissenswertes
zusammengestellt. Vielleicht bauen Sie ja auch
eines Tages einen Rechner aus Schaltkreisen zusammen
– denn das geht immer noch!*
Christian Gögelein
* Zum Beispiel unter www.mycpu.eu
So funktioniert ein PC 3
Inhalt
37
71
Prozessoren
Startseite .............................................7
Überblick .............................................8
Transistoren, Binärsystem ..................14
ALUs, Adder, FPUs etc.......................16
Pipelining, Branch Prediction etc........20
Caches...............................................24
SMP und SMT....................................27
Befehlssätze und Erweiterungen .......31
Integrierte Grafik................................ 34
Turbomodus...................................... 36
Grafikkarten
Startseite ...........................................37
Überblick .......................................... 38
Direct 3D 11 .......................................42
Texturen............................................. 48
Schatten ........................................... 53
Shader ...............................................56
HDR .................................................. 58
Anti-Aliasing .......................................62
Multi-GPU ......................................... 66
Mainboard
Startseite............................................71
Überblick ...........................................72
BIOS ..................................................78
PCI-Express ...................................... 84
USB .................................................. 88
SATA ................................................. 90
Thunderbolt .......................................92
Infrastruktur
Startseite .......................................... 93
RAM ................................................. 94
Festplatten (HDD) .............................100
Solid State Disks (SSD).....................104
Optische Laufwerke .........................108
Netzteile ........................................... 112
Peripherie
Startseite ......................................... 119
Monitore ...........................................120
Soundausgabe ................................126
Netzwerke ........................................130
WLAN ..............................................133
PowerLAN .......................................137
Mäuse ..............................................138
Tastaturen ........................................140
Windows
Startseite .........................................143
Systemstart .....................................144
Kernel ..............................................150
Dateisystem .....................................153
Treiber ..............................................156
4 So funktioniert ein PC
Inhalt
www.pcgh.de ■ www.pcghx.de
DAS HARDWARE-MAGAZIN FÜR PC-SPIELER
119
112
Ein Unternehmen der Marquard Media International AG
Verleger Jürg Marquard
Verlag
Vorstand
Chefredakteur (V.i.S.d.P.)
Computec Media AG
Dr.-Mack-Straße 83, 90762 Fürth
Telefon: 0911/2872-100
Telefax: 0911/2872-200
redaktion@pcgameshardware.de
www.pcgameshardware.de | www.pcghx.de
Albrecht Hengstenberg (Vorsitzender),
Rainer Rosenbusch, Ingo Griebl
Thilo Bayer (tb), verantwortlich für den redaktionellen Inhalt,
Adresse siehe Verlagsanschrift
Leitende Redakteure Marco Albert (ma)
Redaktion Frank Stöwer (fs), Carsten Spille (cs), Raffael Vötter (rv),
Andreas Link (al), Lars Craemer (lc), Stephan Wilke (sw),
Reinhard Staudacher (rs), Philipp Reuther (pr)
Product Manager Daniel Waadt (dw)
Mitarbeiter dieser Ausgabe Tom Loske (tl), Mark Mantel (mm), Dominik Neugebauer (dn)
Lektorat Claudia Brose (Ltg.), Birgit Bauer, Esther Marsch, Heidi Schmidt
Layout Frank Pfründer (Ltg.), Hans Strobel
Layoutkoordination Albert Kraus
Titelgestaltung Frank Pfründer
Fotografie Heft tb, ma, cs, fs, dw, sw, rv, rs, pr
Bildnachweis Sofern nicht anders angegeben: PC Games Hardware
CD, DVD, Video
COO
Vertrieb, Abonnement
Marketing
Produktion
Chefredakteur Online
Redaktion
Entwicklung
Webdesign
Jürgen Melzer (Ltg.), Alexander Wadenstorfer, Thomas Dziewiszek,
Michael Schraut, Daniel Kunoth, Marcus Winkler (Praktikant),
Dominik Pache (Praktikant)
Hans Ippisch
Werner Spachmüller (Ltg.), Nikolaus Krier
Jeanette Haag
Martin Closmann, Jörg Gleichmar
www.pcgameshardware.de
Thilo Bayer
Andreas Link, Lars Craemer, Marco Albert, Frank Stöwer, Carsten Spille,
Raffael Vötter, Stephan Wilke, Reinhard Staudacher, Philipp Reuther
Markus Wollny (Ltg.), René Giering, Aykut Arik, Tobias Hartlehnert
Tony von Biedenfeld, Emanuel Popa
Anzeigen
CMS Media Services GmbH, Dr.-Mack-Straße 83, 90762 Fürth
Anzeigenleiter
Gunnar Obermeier
verantwortlich für den Anzeigenteil, Adresse siehe Verlagsanschrift
Anzeigenberatung Print
Anne Müller: Tel.: +49 911 2872-251; anne.mueller@computec.de
Alto Mair: Tel.: +49 911 2872-144; alto.mair@computec.de
René Behme: Tel.: +49 911 2872-152; rene.behme@computec.de
Bernhard Nusser: Tel.: +49 911 2872-254; bernhard.nusser@computec.de
93
Anzeigenberatung Online Stöer Digital Media GmbH, Stresemannstraße 29, 22789 Hamburg
Telefon: Tel.: +49 40 46 85 67-0, Fax: +49 40 46 85 67-39
E-Mail: info@stroeerdigitalmedia.de
Anzeigendisposition anzeigen@computec.de
Datenübertragung via E-Mail: anzeigen@computec.de
Es gelten die Mediadaten Nr. 26 vom 01.01.2013.
PC Games Hardware wird in den AWA- und ACTA-Studien geführt. Ermittelte Reichweite: 351.000 Leser
Abonnement – http://abo.pcgameshardware.de
Die Abwicklung (Rechnungsstellung, Zahlungsabwicklung und Versand)
erfolgt über unser Partnerunternehmen DPV Direct GmbH:
Post-Adresse:
Leserservice Computec, 20080 Hamburg, Deutschland
Ansprechpartner für Reklamationen ist Ihr Computec-Team unter:
Deutschland
E-Mail: computec@dpv.de, Tel.: 0911-99399098, Fax: 01805-8618002*
Support: Montag 07:00–20:00 Uhr, Dienstag–Freitag 07:30–20:00 Uhr, Samstag 09:00–14:00 Uhr
* (0,14 €/Min. aus dem dt. Festnetz, max. 0,42 €/Min. aus dem dt. Mobilfunk)
Österreich, Schweiz und weitere Länder:
E-Mail: computec@dpv.de, Tel: +49-911-99399098, Fax: +49-1805-8618002
Support: Montag 07:00–20:00 Uhr, Dienstag–Freitag 07:30–20:00 Uhr, Samstag 09:00–14:00 Uhr
Abonnementpreis für 12 Ausgaben: Magazin € 47,88 (€ 51,60 Österreich, € 59,88 Ausland),
DVD € 60,- (€ 67,20 Österreich, € 72,- Ausland)
Einzelversand/Nachbestellung
Online: www.pcgh.de/go/shop, E-Mail: computec@dpv.de, Tel.: 0911-99399098 , Fax: 01805-8618002*
* (0,14 €/Min. aus dem dt. Festnetz, max. 0,42 €/Min. aus dem dt. Mobilfunk)
ISSN/Vertriebskennzeichen PC Games Hardware: 1616-6922 / B 53384
Vertrieb: DPV Deutscher Pressevertrieb GmbH, Düsternstr. 1-3, 20355 Hamburg, Internet: www.dpv.de
Druck: RR Donnelley Europe, ul. Obroncow Modlina 11, 30-733 Krakau, Polen
COMPUTEC MEDIA ist nicht verantwortlich für die inhaltliche Richtigkeit der Anzeigen und übernimmt keinerlei Verantwortung für in
Anzeigen dargestellte Produkte und Dienstleistungen. Die Veröffentlichung von Anzeigen setzt nicht die Billigung der angebotenen
Produkte und Service-Leistungen durch COMPUTEC MEDIA voraus. Sollten Sie Beschwerden zu einem unserer Anzeigenkunden,
seinen Produkten oder Dienstleistungen haben, möchten wir Sie bitten, uns dies schriftlich mitzuteilen. Schreiben Sie unter Angabe
des Magazins, in dem die Anzeige erschienen ist, inkl. der Ausgabe und der Seitennummer an: CMS Media Services GmbH, Franziska
Schmidt, Anschrift siehe oben.
Einsendungen Manuskripte und Programme:
Mit der Einsendung von Manuskripten jeder Art gibt der Verfasser die Zustimmung zur Veröffentlichung in den von der Verlagsgruppe
herausgegebenen Publikationen. Urheberrecht: Alle in PCGH veröffentlichten Beiträge bzw. Datenträger sind urheberrechtlich
geschützt. Jegliche Reproduktion oder Nutzung bedarf der vorherigen, ausdrücklichen und schriftlichen Genehmigung des Verlags.
Marquard Media
Deutschsprachige Titel
SFT, WIDESCREEN, PC GAMES, PC Games MMORE, PC GAMES HARDWARE, BUFFED,
X3, PLAY 3, GAMES & MORE, GAMES AKTUELL, N-ZONE, XBG GAMES, PLAY BLU
Polen
COSMOPOLITAN, JOY, SHAPE, HOT, PLAYBOY, CKM, VOYAGE
Ungarn
JOY, SHAPE, ÉVA, IN STYLE, PLAYBOY, CKM
So funktioniert ein PC 5
dAS Kult-MAgAzIN füR gAMeR
KompleTT inTeraKTiv
KompleTT in DeuTsCh
nur für apple ipaD
eDGe is the trademark of future publishing limited, a future plc group company,
uK 2013. used under licence. all rights reserved.
edge de #259 – NOveMbeR 2013
Tom ClanCys The Division
Killer-app für XboX one
Jetzt IM APP StORe
MIt gRAtIS-leSePRObe!
Bild: Sven Döring/AMD
Prozessoren
So funktioniert ein PC 7
Prozessor
Bild: Intel
Prozessoren mit Dutzenden Kernen lassen sich zwar realisieren (wie
hier im Bild beim Polaris-Prototyp), die Kerne selbst enthalten aber nur
einen Bruchteil der Funktionen vergleichbarer aktueller CPUs.
So funktioniert
ein Prozessor
Seit den Anfängen in den
70er-Jahren faszinieren
Prozessoren nicht nur
technikinteressierte Anwender
– in aktuellen Modellen
erreichen hunderte Millionen
von kleinsten elektrischen
Schaltern eine Rechenleistung,
die vor zwei Jahrzehnten den
schnellsten Supercomputern
vorbehalten war. Wie aus den
Schaltern eine komplexe Rechenmaschine
wird, zeigen die
folgenden Seiten; zunächst jedoch
ein kurzer Überblick der
Funktionsgruppen.
Prozessoraufbau
Ein aktueller Prozessor besteht
aus mehreren Baugruppen,
die unterschiedlich viel Platz
einnehmen. Die eigentlichen
Rechenwerke belegen oft nur
einen Bruchteil der Chipfläche.
Der restliche Platz wird für verschiedene
Funktionen benötigt,
das Gros des Transistor budgets
geht dabei für Cache-Speicher
drauf. Grundsätzlich verfügen
Prozessoren über:
z Den eigentlichen CPU-Kern
mit den Recheneinheiten
z Gegebenenfalls einen
Grafikkern
z Zwischenspeicher (L1, L2, L3)
z Ein- und Ausgabeeinheiten
z Einen Speichercontroller
(inkl. diverser North bridge-
Funktionen)
CPU intern
Die Recheneinheiten eines
Prozessors sind relativ einfach
gestrickt und funktionieren
grundsätzlich immer noch so
wie zu den Anfangszeiten der
Computergeschichte. Durch bestimmte
Verschaltungsmuster
können elementare Operationen
wie eine Addition durchgeführt
werden. Durch Kopplung
mehrerer dieser Einheiten lassen
sich auch Multiplikationen,
Divisionen und viele weitere
arithmetische Operationen umsetzen.
Befehlsverarbeitung
Das Prinzip der Befehlsverarbeitung
hat sich ebenfalls nicht
geändert: Ein Befehl wird zunächst
vom Prozessor geholt,
dann dekodiert und ausgeführt.
Schließlich wird das Ergebnis
zurückgeschrieben. Gleichwohl
hat sich die Geschwindigkeit
der Abarbeitung in den vergangenen
Jahrzehnten natürlich
drastisch erhöht.
Doch was ist eigentlich ein „Befehl“?
Mit dem ersten x86-Prozessor
führte Intel den gleichnamigen
x86-Befehlssatz ein.
Darin waren (und sind bis
heute) 80 Instruktio nen enthalten,
die hauptsächlich für
die Berechnung von mathematischen
Aufgaben, aber auch
für die Manipulation von Zeichenketten
oder Sprüngen im
Code verwendet werden. Einfache
Instruktionen heißen zum
Beispiel ADD (Addition), MOV
(Move, zum Bewegen von Daten
in Speicher bzw. Register)
oder CMP (Compare, vergleicht
Operanden).
Arbeitsschritte
Befehle lagen früher in Form
von Lochkarten vor, sind heute
aber in der Regel im Arbeitsspeicher
oder auf Festspeichern
wie einer Festplatte vorhanden.
Weil aber selbst der Arbeitsspeicher
noch bis zu 1.000-mal
8 So funktioniert ein PC
Prozessor
langsamer ist, als die CPU intern
rechnen kann, setzen die
Entwickler auf chipinterne Zwischenspeicher,
die häufig benötigte
Daten „cachen“. Damit
wird das zeitraubende Laden
von Daten aus dem Arbeitsspeicher
nicht immer, aber relativ
häufig vermieden.
Die Befehlsdekodierung läuft je
nach Prozessor unterschiedlich
ab. Grundsätzlich wird dabei
ermittelt, welche Operation
durchgeführt werden soll (Addition,
Division, Sprung etc.).
Zusätzlich werden die Speicheradressen
festgelegt, in denen
sich die zu verarbeitenden Daten
befinden. Intel und AMD
zerlegen die standardisierten
x86-Operationen dabei zusätzlich
in kleinere, maschinengerechtere
Befehlsgruppen.
Micro- und
Makro-Ops
Intel nennt diese Gruppen Mikro-Instruktionen
(„Micro-Ops“),
bei AMD heißen sie Makro-Instruktionen
(„Makro-Ops“). Seit
Einführung der schlanken Instruktionen
mit dem Pentium
Pro gelten x86-CPUs auch als
RISC-Prozessoren. RISC-CPUs
verfügen über einen reduzierten
Befehlssatz („Reduced Instruction
Set Computer“), sind
dabei aber deutlich schneller
als solche mit einem komplexen
Befehlssatz („Complex Instruction
Set Computer“, „CISC“)
Sind alle Daten vorhanden, wird
der Befehl ausgeführt. Die Operanden
werden von einer Ausführungseinheit
(Arithmetic
Logic Unit, kurz: ALU) verarbeitet;
aus zwei Operanden wird
so zum Beispiel die Summe
gebildet. Schließlich wird das
Ergebnis in den (Cache-)Speicher
zurückgeschrieben. Der
Befehlszähler („Program Counter“)
wird erhöht und die Befehlsverarbeitung
wird mit der
nächsten Operation fortgesetzt
– so lange, bis das Programm
beendet ist.
Rechenwerke
Die Rechenwerke eines Prozessors
sind primär für Operationen
mit Ganzzahlen ausgelegt.
Viele Anwendungen,
darunter besonders Spiele,
haben aber einen hohen Anteil
an Berechnungen mit Kommazahlen
(Fließpunktoperationen).
Schon früh konstruierten
die Chip-Ingenieure spezielle
Fließpunkt-Einheiten. Anfangs
steckten diese noch in eigenen
Gehäusen und mussten über
das Mainboard mit dem Prozessor
verbunden werden. Seit der
486-Generation sind die Fließpunkteinheiten
Teil des Hauptprozessors.
Bald stieß auch die Fließpunkteinheit
an ihre Grenzen. Intel
führte mit dem Pentium III erstmals
eine SSE-Einheit ein. Diese
Einheit ist deshalb besonders
interessant, weil sie auf einen
eigenen Registersatz zurückgreift,
der viermal breiter ist
als bei einem 32-Bit-Prozessor.
So wird es möglich, mit einer
Instruktion mehrere Daten zu
verarbeiten, was bei einigen
Aufgaben deutliche Leistungsgewinne
bringt. Soll zum Beispiel
die Helligkeit eines Bildes
erhöht werden, kann eine Instruktion
(eine Addition auf den
Farbwert der RGB-Kanäle) auf
verschiedene Daten (die Pixel
des Bildes) angewendet werden
– mit nahezu vierfacher Geschwindigkeit.
Cache-Hierarchie
Während seiner Arbeit muss
der Prozessor ständig auf den
Mit Intels 486 hielten Fließpunkteinheiten Einzug in die Prozessor-Architektur.
Dies verhalf auch (3D-)Spielen zum Durchbruch.
Intels Pentium Pro brachte eine Reihe neuer Funktionen, unter anderem
die Befehlszerlegung in Micro-Ops
Noch relativ leicht zu überblicken war ein 8088-Prozessor mit knapp
29.000 Transistoren. Mit jeder neuen Generation kamen danach neue
Funktionen und Techniken hinzu
Bild: Intel
Bild: Intel
Bild: Intel
So funktioniert ein PC 9
Prozessor
Prozessor-Trends:
Was bringt die Zukunft?
Die Prozessorentwicklung wird in mehrfacher Hinsicht gebremst.
Einerseits stoßen CPUs an ein Taktlimit, das bei knapp 4 Gigahertz
liegt. Seit knapp zehn Jahren hat kein Prozessor die Schwelle von 3,8
GHz überschritten. Andererseits kann auch die Zahl der CPU-Kerne
nicht beliebig gesteigert werden – jedenfalls nicht, wenn „normale“
CPU-Kerne verwendet werden. AMD und Intel werden künftig vermutlich
auf abgespeckte Kerne setzen, welche die vollwertigen Kerne bei
speziellen Rechenaufgaben unterstützen. Intel spricht konkret bereits
von Kryptographie-Kernen, welche die Verschlüsselung drastisch beschleunigen
sollen. Integrierte Grafikkerne sind bereits Realität.
Bild: Digital Revolution
Die niedrigen Spannungen aktueller Prozessoren benötigen aufwendige
Spannungswandler auf Mainboards. Aktuelle CPUs verwenden intern
sogar mehrere Spannungen.
Arbeitsspeicher (RAM) zugreifen.
Dieser ist zwar sehr preiswert,
aber im Vergleich zum
Prozessor sehr langsam.
Eine ausgefeilte Cache-Hierarchie
sorgt daher bei Prozessoren
für eine deutlich reduzierte
Anzahl von Speicheranfragen.
Der schnellste und leistungsfähige
Cache stellt Daten in der
Regel innerhalb von drei bis
vier Taktzyklen bereit. Er heißt
Level-1(L1)-Cache und wird nur
sparsam eingesetzt. Aktuelle
Prozessoren verfügen pro Kern
über 64 bis 128 Kilobyte L1-
Cache, der in einen Daten- und
einen Befehlscache unterteilt
ist.
An zweiter Stelle steht der L2-
Cache, der üblicherweise 256
bis 512 Kilobyte groß ist. Er ist
mit circa zehn bis 20 Taktzyklen
langsamer als der L1-Cache.
Schließlich steht ein gemeinsamer
Level-3-Cache für alle Kerne
zur Verfügung. Er ist meist
sechs bis acht Megabyte groß
und mit 40 bis 100 Taktzyklen
deutlich langsamer.
Im Gegensatz zum DRAM-Arbeitsspeicher
ist Cache-Speicher
aus SRAM-Zellen zusammengesetzt.
Diese bestehen aus
vier bis sechs Transistoren und
benötigen mehr Die-Fläche als
DRAM; dafür können Informationen
dauerhaft gespeichert
werden und müssen nicht in
festen Intervallen sogenannte
Refresh-Zyklen durchlaufen.
Pipelining und OoO
Die immer größer werdenden
Caches haben die Verarbeitung
von Daten zwar stark beschleunigt.
Sie können aber nicht verhindern,
dass manche Daten
immer noch aus dem Speicher
oder – noch schlimmer – von
der Festplatte geholt werden
müssen. Um die Recheneinheiten
besser auszulasten, verfügen
alle modernen x86-Prozessoren
seit dem Pentium über
„Pipelines“; gemeint ist damit,
dass mehrere Befehle parallel
abgearbeitet werden. Während
ein Befehl ausgeführt wird,
wird ein weiterer schon dekodiert
und ein dritter geholt.
Pipelining bringt vor allem
dann Vorteile, wenn die Befehle
unabhängig voneinander
ausgeführt werden können;
dies ist jedoch nur selten der
Fall. Viel häufiger kommt es vor,
dass ein Befehl auf das Ergebnis
einer anderen Operation
warten muss. Um die „Wartezeit“
sinnvoll zu nutzen, haben
AMD und Intel eine sogenannte
„Out-of-Order“(OoO)-Execution
ersonnen. Damit lassen sich
Befehle spekulativ ausführen,
was im Erfolgsfall einige Taktzyklen
spart (siehe Kasten im entsprechenden
Abschnitt).
Kommunikationswege
Ein Prozessor alleine könnte
wenig ausrichten. Mindestens
ebenso wichtig ist die Anbindung
an den Rest des Systems.
Während der Anwender beispielsweise
ein Spiel spielt, werden
in einer zentralen Schleife
permanent wichtige Parameter
wie Maus- und Tastatureingaben
abgefragt, Daten aus dem
Speicher geholt, verarbeitet, an
die Grafikkarte gesendet oder
zurückgeschrieben und viele
weitere Aufgaben erledigt. Bis
vor einigen Jahren wurde für
den kompletten Datenverkehr
von und zum Prozessor ein eigener
Bus verwendet, der „Front
Side Bus“. Diese Verbindung
wurde jedoch immer mehr zum
Flaschenhals und daher erst
10 So funktioniert ein PC
Prozessor
von AMD, später auch von Intel
durch eine schnellere Punktzu-Punkt-Verbindung
ersetzt.
Die Speichermodule werden
zusätzlich von einem speziellen
On-Die-Controller angesprochen,
was die Wartezeit weiter
verkürzt hat.
Stromversorgung und
Leistungsaufnahme
Früher liefen Prozessoren noch
mit der einheitlichen I/O-Spannung
des Mainboards (5 bzw.
3,3 Volt). Aufgrund der stetig
steigenden Verlustleistung sind
die Hersteller jedoch bemüht,
die CPU-Spannung weiter zu
senken. Als Folge dieser Anstrengungen
laufen heutige Prozessoren
mit Spannungen um
ein Volt, die vom Mainboard eigens
bereitgestellt werden müssen.
Das hat zur Folge, dass die
Mainboard-Hersteller spezielle
Spannungswandler integrieren
müssen, die mittlerweile einen
beachtlichen Teil des Boards in
Anspruch nehmen und darüber
hinaus ordentlich Wärme produzieren.
Die Leistungsaufnahme der
Prozessoren steigt ebenfalls
mit jedem neuen Transistor.
Die Hersteller versuchen, dies
durch Energiesparfunktionen
wie Cool’n’quiet oder EIST
aufzufangen. Dennoch bleibt
das grundsätzliche Problem
bestehen: Bei jedem Transistor-Schaltvorgang
wird Energie
„verbraucht“. Würden alle Transistoren
eines Prozessors zur
gleichen Zeit schalten, würde
der Chip augenblicklich durchbrennen
– selbst mit einer Wasserkühlung.
Auf den folgenden Seiten erfahren
Sie, wie die Funktionsgruppen
eines Prozessors im Detail
funktionieren.
x86-Befehlssatz (Auszug)
Abkürzung
Bedeutung (engl.)
Englisch
AAA
ASCII adjust after addition
AAD
ASCII adjust before divide
AAM
ASCII adjust alter multiply
AAS
ASCII adjust after subtract
Abkürzung
JS
JZ
LAHF
LDS
LEA
ADC
Add with carry
LES
ADD
Add
LOCK
AND
And
LODS
CALL
Call
LODSB
CBW
Convert byte to word
LODSW
CLC
Clear carry flag
LOOP
CLD
Clear direction flag
LOOPE
CLI
Clear interrupt flag
LOOPNE
CMC
Complement carry flag
LOOPNZ
CMP
Compare
LOOPZ
CMPS
Compare string
MOV
CMPSB
Compare string bytewise
MOVS
CMPSW
Compare string wordwise
MOVSB
CWD
Convert word to double word
MOVSW
DAA
Decimal adjust after addition
MUL
DAS
Decimal adjust after subtract
NEG
DEC
Decrement
NOP
DIV
Divide (unsigned)
NOT
ESC
Escape (to external device)
OR
HLT
Halt
OUT
IDIV
Integer divide (signed)
POP
IMUL
Integer multiply (signed)
POPF
IN
Input from
PUSH
INC
Increment
PUSHF
INT
Interrupt
RCL
INTO
Interrupt if overflow
RCR
IRET
Interrupt return
REP
JA
Jump if above
REPE
JAE
Jump if above or equal
REPNE
JB
Jump if below
REPNZ
JBE
Jump if below or equal
REPZ
JCXZ
Jump if CX equal zero
RET
JE
Jump if equal
ROL
JG
Jump if greater
ROR
JGE
Jump if greater or equal
SAHF
JL
Jump if less
SAL
JLE
Jump if less or equal
SAR
JMP
Jump
SBB
JNA
Jump if not above
SCAS
JNAE
Jump if not above and not equal
SCASB
JNB
Jump if not below
SCASW
JNBE
Jump if not below and not equal
SHL
JNE
Jump if not equal
SHR
JNG
Jump if not greater
STC
JNGE
Jump if not greater and not equal
STD
JNL
Jump if not less
STI
JNLE
Jump if not less and not equal
STOS
JNO
Jump if no overflow
STOSB
JNP
Jump if no parity
STOSW
JNS
Jump if no sign
SUB
JNZ
Jump if not zero
TEST
JO
Jump if overflow
WAIT
JP
Jump if parity
XCHG
JPE
Jump if parity even
XLAT
JPO
Jump if parity odd
XOR
Bedeutung (engl.)
Jump if sign
Jump if zero
Load AH with flags
Load pointer using DS
Load effective address to register
Load pointer using ES
Lock Bus
Load string to AL/AX
Load string bytewise to AL
LODSW Load string wordwise to AX
Loop CX times
Loop CX times while equal
Loop CX times while not equal
Loop CX times while not zero
Loop CX times while zero
Move
Move string
Move string bytewise
Move string wordwise
Muliply (unsigned)
Negate
No Operation
Invert
Or
Output to
Pop
Pop flags
Push
Push flags
Rotate through carry left
Rotate through carry right
Repeat CX times
Repeat CX times while equal
Repeat CX times while not equal
Repeat CX times while not zero
Repeat CX times while zero
Return from procedure
Rotate left
Rotate right
Store AH into flags
Shift arithmetic left
Shift arithmetic right
Subtract with borrow
Scan string
Scan string bytewise
Scan string wordwise
Shift logical left
Shift logical right
Set carry flag
Set direction flag
Set Interrupt flag
Store string from AL/AX
Store string bytewise from AL
Store string wordwise from AX
Subtract
Test
Wait for test
Exchange
Translate byte to AL
Exclusive or
So funktioniert ein PC 11
Prozessor
Beispiel: Wie ein Prozessor Verarbeitung funktioniert eines Tastendrucks
Vorbereitung
Programme werden normaler -
weise linear abgearbeitet. Ein
spezielles Register, der Program
Counter (PC), hält die Adresse
bereit, an welcher jener Befehl
steht, der als Nächstes bearbeitet
werden soll. Der PC wird nach
jeder Instruktion erhöht, bis das
Programm beendet ist.
1 Befehl analysieren
Der x86-Befehl wird nun dekodiert und in kleinere Instruktionen zerlegt. Diese kleineren Instruktionen haben den Vorteil,
dass sie alle einfach gehalten sind, die gleiche Länge haben und damit schnell ausgeführt werden können. Bei einigen
Prozessoren werden die bereits dekodierten Befehle in einem speziellen Cache gespeichert. Beim Pen tium 4 hieß dieser
„Trace Cache“, Sandy Bridge verfügt über einen ähnlich gestrickten „Micro-Op-Cache“, der annähernd 1.500 dekodierte
Mikro-Instruktionen aufnehmen kann. Bei Intel-Architekturen wird zwischen einfachen und komplexen x86-Befehlen
unterschieden; während für einfache Instruktionen drei Dekoder bereitstehen, gibt es für komplexe Anweisungen nur
einen. Bei der Befehlsdekodierung wird außerdem festgelegt, ob und welche Befehle sich umsortieren lassen. Durch die
„Out-of-Order-Execution“ können die Einheiten der CPU besser ausgelastet werden.
2
Am Anfang unseres Beispiels wird
also der erste (x86-)Befehl geholt,
er soll bereits im Speicher (RAM)
liegen. Dazu wird die entsprechende
Adresse an das RAM gesendet,
wo die entsprechenden Zeilen und
Spalten adressiert werden müssen.
Bis die Daten über den Bus (bzw.
die Punkt-zu-Punkt-Verbindung)
geschickt werden und dort ankommen,
vergehen Dutzende bis
mehrere Hundert CPU-Taktzyklen.
Muss das Programm von der Festplatte
geholt werden, vervielfacht
sich die Wartezeit. Meist werden
gleichzeitig die benachbarten
Speicherzellen mit ausgelesen und
in eine Cacheline des Prozessors
gelegt. Bei der Bearbeitung eines
Programmes liegen die Befehle
normalerweise hintereinander; die
folgenden Befehle sind dann schon
im (Instruktions-)Cache vorhanden
und können wesentlich schneller
bereitgestellt werden.
Ausführung vorbereiten
Der Befehl ist jetzt dekodiert und zerlegt – idealerweise können die Operanden gleich mit an die Ausführungs einheiten
übergeben werden. Ein Befehl der Art „Addiere 20 zu 6“ könnte also sofort verarbeitet werden. In der Regel wird ein
Compiler versuchen, die benötigten Daten im Voraus bereitzustellen. Wenn die Operanden aber von dem Ergebnis einer
vorhergehenden Instruktion abhängig sind, klappt dies nicht. Bis die Daten eintreffen, verharrt der Befehl in diesem Fall
in der „Reservation Station“. Je nachdem, welcher Befehl ausgeführt werden soll, nimmt die Operation nun unterschiedliche
Wege (im Folgenden dargestellt als 4a, 4b und 4c).
Befehl ausführen
Anschließend werden die Ausführungseinheiten für
die Befehlsausführung vorbereitet. Konkret heißt das,
dass die Recheneinheiten (ALUs) für die entsprechende
Operation mit den zugehörigen Registern verschaltet
werden. Je nach Architektur stehen unterschiedlich viele
ALUs für diverse Aufgaben bereit. Üblich sind heute drei
bis sechs ALUs für Ganzzahl- und/oder Speicherzugriffe
sowie drei weitere ALUs für Fließpunktoperationen (diese
heißen dann FPUs). Häufig setzen Chipentwickler auch
hybride Rechenwerke ein; so gibt es dann beispielsweise
mehrere Ausführungseinheiten für einfache Befehle, aber
nur eine Einheit, die komplexe Befehle berechnen kann.
Da komplexe Befehle selten gehäuft vorkommen, resultiert
daraus unterm Strich ein Performance-Plus.
4
4a
4b
4c
Integer-Operation
Im Fall 4a soll eine Ganzzahl verarbeitet werden; eine
einfache Addition kann bei einem Phenom zum Beispiel
von sechs verschiedenen Ausführungseinheiten berechnet
werden.
Fließpunkt-/SSE-Operation
Sollen bei dem Befehl Zahlen mit Nachkommastellen
verarbeitet werden, wird dafür eine Fließpunkteinheit
bemüht. Seit der Nehalem-Architektur gibt es eigene
Rechen werke für Fließpunkt-Additionen, -Multiplikationen
und -Divisionen. Für SSE-Befehle (bzw. MMX/3dnow) sind
ebenfalls spezielle Ausführungseinheiten vorgesehen.
Speicher-Operation
Oft müssen Daten vom und zum Speicher bewegt
werden (siehe Schritt 3); dafür bieten moderne Prozessoren
eigene Einheiten an. Zum Laden und Speichern
gibt es meist drei Einheiten (AGUs).
3
128 Entry ITLB 1
32 KB I-cache (8 way)
Instruction
Fetch Unit
µcode
Sequencer
Port 0
Complex Decoder
4 µops
x86 Instruction Pre-Decoder, Fetch Buffer
Simple
Decoder
128 bits
1 µops
7+ Entry µop Buffer
Simple
Decoder
4 µops
Register Alias Table and Allocator
4 µops
96 Entry Reorder Buffer (ROB)
3
4
2
4 µops
Simple
Decoder
1 µops 1 µops
32 Entry Reservation Station
4 µops
Retirement Register File
(Program Visible State)
Port 1 Port 2 Port 3 Port 4 Port 5
4c
Shared Bus
Interface
Unit
4 MB Shared
L2 Cache
(16 way)
64 Bit
ALU
4a
128 bit
FADD
128 bit
SSE
ALU
Shift Rotate
128 bit
FMUL FDIV
128 bit
SSE
4b
64 bit
ALU Branch
128 bit
SSE
Store
Data
Store Address
Memory Reorder Buffer (MOB)
Load
Address
Internal Results Bus
Symbolische Darstellung: Blockschaltbild bezieht sich auf die Core-Architektur
5
128 bits
6
Store
128 bits
32 KB dual ported D-cache (8 way) 256 Entry DTLB
Load
256 bits
12 So funktioniert ein PC
Prozessor
Ergebnis schreiben
Schließlich liegt das Resultat der Operation vor; es wird aber nicht direkt in
den Cache geschrieben, sondern normalerweise in die „Reservation Station“
geschickt. Dort steht das Ergebnis unmittelbar für nachfolgende Instruktionen zur
Verfügung, was die Ausführungszeit verkürzt.
Andere Befehle dagegen sorgen dafür, dass weitere Operanden geladen werden
und wieder andere können den Program Counter direkt verstellen – was dann als
„Sprung“ bezeichnet wird.
Die Ergebnisse der Speicher-Einheiten (AGU) gehen in einen speziellen Puffer,
den Memory Reorder Buffer (MOB). Dort können die Zugriffe umsortiert werden.
Das ist sinnvoll, weil damit schnelle Lesezugriffe den langsamen Schreibzugriffen
vorgezogen werden können.
5 Speicher aktualisieren
6
Hat die Rechenoperation ein Ergebnis zur Folge, so wird
dieses schließlich in den Cache und/oder den Speicher
geschrieben. Bei einigen BIOS-Versionen kann man
das sogar steuern. „Write Back“ bedeutet dabei, dass
der Wert nur in den Cache geschrieben wird. Mit „Write
Through“ werden Cache und Speicher gleichermaßen
aktualisiert, was etwas mehr Zeit kostet.
Generell sind Schreibzugriffe weniger performancekritisch
als Lesezugriffe. Diverse Puffer und Algorithmen
sorgen dafür, dass die aktualisierten Daten ge bündelt
und am Stück in den Speicher geschrieben
werden.
So funktioniert ein PC 13
Prozessor
Bild: Intel Bild: Intel
Prozessoren bestehen mittlerweile aus mehr als einer Milliarde Transistoren.
Intels erster Mikroprozessor, der 4004, vereinte gerade mal 2.300
elektrische Schalter.
Das Grundprinzip
eines Prozessors
Ein Transistor
unter dem
Mikroskop: In
der Mitte ist das
Metall (schwarz)
zu erkennen.
Wenn hier Strom
anliegt, können
Elektronen
von der Quelle
zum Ziel fließen
(schwarz, links
und rechts am
Rand)
Auch modernste Prozessoren
verarbeiten Befehle
immer noch nach
jenem Prinzip, welches der in
Ungarn geborene Mathematiker
John von Neumann bereits
im Jahre 1945 konzipierte.
Elementarer Aufbau
Sein früher Rechner bestand
aus den Funktionseinheiten
Steuerwerk, Rechenwerk, Speicher,
Eingabe- und Ausgabewerk,
wobei mit Ein- und Ausgabe
hier nicht Tastatur und
Bildschirm gemeint sind, sondern
die Schnittstellen außerhalb
der zentralen Recheneinheit,
also des Prozessors.
Zur Lösung eines Problems
muss von außen eine Bearbeitungsvorschrift,
das Programm,
eingegeben und im Speicher
abgelegt werden. Ohne dieses
Programm ist die Maschine
nicht arbeitsfähig. Programme,
Daten, Zwischen- und Endergebnisse
werden in demselben
Speicher abgelegt.
Der Speicher ist in gleich große
Zellen unterteilt, die fortlaufend
durchnummeriert sind.
Über die Nummer (Adresse)
einer Speicherzelle kann deren
Inhalt abgerufen oder verändert
werden. Aufeinanderfolgende
Befehle eines Programms werden
in aufeinanderfolgenden
Speicherzellen abgelegt. Das
Ansprechen des nächsten Befehls
geschieht vom Steuerwerk
aus durch Erhöhen der Befehlsadresse
um Eins.
Von-Neumann-Zyklus
Der Prozess der Befehlsverarbeitung
bei Von-Neumann-Rechnern
wird Von-Neumann-Zyklus
genannt und besteht aus folgenden
fünf nacheinander ablaufenden
Teilschritten: FETCH,
DECODE, FETCH OPERANDS,
EXECUTE, UPDATE INSTRUC-
TION POINTER.
Das grundlegende Prinzip dieser
Befehlsverarbeitung ist bis
heute unverändert geblieben,
der Einfachheit halber wird es
in CPU-Schaubildern manchmal
auf die drei Phasen Fetch
(engl.: „holen“), Decode
(engl.: „entschlüsseln“) und
Execute (eng.: „ausführen“)
reduziert.
Befehlsverarbeitung
im Detail
Beim FETCH-Schritt wird aus
RAM- oder ROM-Speicher der
nächste zu bearbeitende Befehl
geholt. Dieser Befehl wird bei
DECODE durch das Steuerwerk
in Schaltinstruktionen aufgelöst,
die das Rechenwerk „verstehen“
kann. Aus RAM oder ROM werden
nun bei FETCH OPERANDS
die Operanden geholt, also die
Werte, die durch den Befehl verändert
werden sollen bzw. die
als Parameter verwendet werden,
also etwa die beiden Operanden
einer Addition.
Bei EXECUTE wird die Operation
vom Rechenwerk ausgeführt.
Bei UPDATE INST-
RUCTION POINTER wird der
Befehlszähler erhöht, damit der
Rechner „weiß“, an welcher
Stelle des Programms er sich gerade
befindet. Das geschieht parallel
zum DECODE und FETCH
OPERANDS. Beim EXECUTE
kann der Befehlszähler wieder
verändert werden (Sprungbefehl).
14 So funktioniert ein PC
Prozessor
Anschließend kann der Zyklus
von vorn beginnen und der
nächste Schritt des Programms
ausgeführt werden.
Schalter und
Transistoren
Prozessoren arbeiten mit
Strom, respektive mit elektrischen
Schaltern, Transistoren
genannt. Der Transistoreffekt
wurde 1947 durch William
Shockley, John Bardeen und
Walter Brattain in den Bell Laboratories
von der Firma AT&T
entdeckt. Später erhielten sie
dafür den Nobelpreis für Physik.
Durch einen kleinen Steuerstrom
kann in einem Transistor
ein wesentlich größerer Strom
gesteuert werden.
Der Transistor wurde auf der
Grundlage der Diode entwickelt.
Eine Diode besteht aus
zwei dotierten Halbleiterschichten
(NP- beziehungsweise
PN-dotiert) und lässt
Strom nur in einer Richtung
durchfließen. Ein Transistor ist
im Wesentlichen eine Zusammenschaltung
aus drei Diodenhälften
(NPN beziehungsweise
PNP), wobei die obere und
untere Schicht als Kollektor
beziehungsweise Emitter und
die mittlere Schicht als Basis
bezeichnet werden (siehe Bild).
Bipolartransistor
Beim Bipolartransistor steuert
ein Strom IB im Basis-Emitter-Kreis
einen (stärkeren)
Strom IC im Kollektor-Emitter-Kreis.
Der Vorteil dieser
stark miniaturisierten Schalter:
Es passen Tausende, ja Millionen
davon auf einen einzigen
Chip. Die Kombination aus diesen
Millionen von Transistoren
erlaubt die Darstellung von unzähligen
Funktionen, die wiederum
in ihrer Kombination den
Befehlssatz eines Prozessors
ausmachen.
Das Dual-System
Nein, das hat nichts mit Restmüll-Recycling
zu tun. Das Dual-System
beschreibt ein Stellenwertsystem
zur Darstellung von
Zahlen auf der Basis 2. Warum
ausgerechnet die 2? Wenn eine
Informationseinheit nur zwei
Zustände (Ein/Aus) annehmen
kann, dann kann man Zahlen
natürlich nicht im Dezimalsystem
(Basis 10) darstellen, wie
wir es normalerweise tun. Man
muss sich auf das Dual-System
beschränken. Während bei
unserem Dezimalsystem zehn
Zahlen (0 bis 9) möglich sind,
ehe wir eine zusätzliche Stelle
benötigen (10), sind es bei Dualzahlen
nur zwei. Zählen würden
wir demnach so: 0, 1, 10,
11, 100, 101, 110 usw., wobei die
Dualzahl 10 im Dezimalsystem
der 3 entspricht, die duale 11
der 4 usw. Es ändert sich also
nichts an den Zahlen, sondern
nur an der Schreib weise.
Mit diesen Dualzahlen im binären
Code (daher auch Binärzahlen
oder Zahlen im Binärcode
genannt) kann eine
aus Schaltungen bestehende
Maschine nun arbeiten. Man
muss nur festlegen, dass eine
Eins dem Zustand „Strom fließt“
bzw. „Spannung angelegt“ entspricht,
eine Null dem Zustand
„Strom fließt nicht“ bzw. „Keine
Spannung angelegt“. Der Übersicht
halber benötigt man noch
eine feste Größe, um bei einer
Zahlenfolge von 1110 erkennen
zu können, ob eine 1 und
eine 110 (also eine dezimale
1 und eine 6) oder eine 1110
(entspricht dezimaler 14) dargestellt
werden soll. Dazu muss
man sich zuvor auf die Bitlänge
einigen.
Wie ein Transistor
Strom leitet
Transistoren funktionieren wie Schalter: Liegt ein schwacher Strom
an (Mitte, blau), kann ein stärkerer Strom von der Quelle zur Ableitung
fließen (unten, gelb).
Wie ein Transistor
aufgebaut ist
Dotierung bedeutet zunächst nichts weiter als eine strukturelle Änderung
der Materialbeschaffenheit. Klingt zwar kompliziert, ist jedoch
sehr einfach. Unterschieden wird zwischen p- und n-Dotierung eines
Materials. N-dotiert bedeutet, dass zusätzliche negative Ladungsträger
(beispielsweise Elektronen) in das Material eingefügt wurden und
es somit über eine negative Ladung verfügt. P-dotiert kann zweierlei
bedeuten: Entweder es wurden zusätzliche positive Ladungsträger in
das Material eingefügt oder dem Material wurden Elektronen entzogen,
wodurch sogenannte Löcher entstehen.
Kommen eine p- und eine n-dotierte Schicht zusammen, dann wandern
die Elektronen aus der n- in die p-dotierte Schicht – ein Strom
fließt. Um dies zu verhindern, wird eine sogenannte Sperrschicht zwischen
die beiden unterschiedlich geladenen Schichten eingefügt, die
als Isolator fungiert. Somit fließt kein – oder kein messbarer – Strom.
Das Prinzip eines Transistors basiert auf der vorläufigen Deaktivierung
dieser Sperrschicht, sodass ein Stromfluss möglich ist (Schaltzustand
1), oder die Sperrschicht isoliert (Schaltzustand 0). Da hierfür lediglich
eine geringfügige Änderung in der Steuerspannung beziehungsweise
im Steuerstrom nötig ist, ermöglicht dies eine sehr hohe Schaltgeschwindigkeit
und somit eine sehr hohe Taktfrequenz.
Die Bezeichnung npn-dotiert oder pnp-dotiert bezeichnet übrigens
lediglich die Reihenfolge der dotierten Schichten. Ist ein Transistor aus
n-dotiertem Material, Sperrschicht, p-dotiertem Material, Sperrschicht
und n-dotiertem Material zusammengesetzt, dann spricht man von einem
npn-dotierten Halbleiter und umgekehrt.
Illustration: Carola Giese
So funktioniert ein PC 15
Prozessor
So funktionieren Adder,
ALUs, FPUs und Register
Die Komponenten eines
Von-Neumann-Rechners
Das Grundprinzip eines Universalrechners nach von Neumann: Prinzipiell
arbeiten auch aktuelle CPUs noch nach diesen Vorgaben.
Wie ein Halbadder
die Summe berechnet
Halbadder: Das schematische Schaltbild zeigt die im Fließtext beschriebenen
Operanden A, B, S und C sowie die logischen Operatoren
XOR und UND.
A
B
Rechenwerk
Ein- und Ausgabe-System
Zentraleinheit
Verbindungseinrichtungen
S
C
Steuerarbeit
Speicher
A B C S
0 0 0 0
0 1 0 1
1 0 0 1
1 1 1 0
Der kleinste Datentyp,
den ein PC kennt, ist
das Byte, eine Zahl
bestehend aus acht Bit, also
acht Stellen. Das Byte wird
rechtsbündig geschrieben
und linksseitig mit Nullen aufgefüllt.
Beim Zählen 1, 2, 3,
… würde man also so schreiben:
00000001, 00000010,
00000011, ….
Der Halbadder
Mit dieser binären Schreibweise
kann man zwar Informationen
und Zahlen binär
speichern. Doch wie wird
ein ganzer Rechner daraus?
Dazu benötigt man getreu der
Von-Neumann-Architektur zusätzlich
ein Rechenwerk. Dieses
enthält eine oder mehrere ALUs
(Arithmetic Logic Unit), welche
die Berechnungen ausführen
und „Entscheidungen treffen“
können. Dazu wiederum sind
viele Teilschaltungen wie Vergleicher,
Halbadder, Volladder
usw. notwendig.
Um zu zeigen, wie man überhaupt
binär rechnen kann,
möchten wir beispielhaft die
Schaltung eines Halbadders erklären.
Ein Halbadder ist eine
elektrische Schaltung, die aus
zwei Ein-Bit-Ausgangswerten A
und B ein Zwei-Bit-Ergebnis produziert,
das aus einer Summe S
und einem Carry-Bit („Übertrag“)
C besteht. Der Aufbau ist
im Schaubild links dargestellt.
Die benötigten Funktionen (im
Fachjargon „Gatter“ genannt“)
sind: XOR („exklusives ODER“)
sowie AND („UND“). Ein XOR
liefert immer dann eine 1 als
Ergebnis, wenn A und B voneinander
differieren. Ansonsten
liefert XOR eine 0. Die
UND-Funktion dagegen liefert
immer dann eine 1 als Ergebnis,
wenn A und B mit 1 belegt sind.
Ansonsten liefert UND eine 0.
Neben diesen beiden Funktionen
gibt es noch das ODER.
Hier wird eine Eins als Ergebnis
geschrieben, wenn eine der
beiden Ausgangszahlen an der
Stelle eine Eins hatte. Bei einer
NICHT-Funktion dagegen wird
die Zahl einfach invertiert, also
überall, wo eine Null stand,
wird eine Eins geschrieben und
umgekehrt.
Wie die Summe berechnet
wird
Wir haben zwei Zahlen A und B,
eine Summe S und einen Übertrag
C. Beschränken wir uns auf
die Berechnung der Summe S.
Die Formel für die Schaltung
des Halbadders lautet: S = A XOR
B. Im Bild links sehen wir den
schematischen Schaltplan eines
Halbadders. Steht zum Beispiel
in Zelle A eine 1 und in B
eine 0, kann man mit logischen
Operatoren wie folgt rechnen.
Verknüpfen wir „A XOR B“, so
erhalten wir als Ergebnis eine 1.
Das XOR bedeutet also, dass in
dem Moment eine 1 als Ergebnis
geliefert wird, wenn einer
der beiden Operanden eine 1
als Wert hatte (aber nicht beide).
Verknüpfen wir dagegen mit
UND, so erhalten wir nur dann
eine 1, wenn beide Zahlen die
1 als Wert trugen. Der Operator
NICHT dagegen ist nur auf
einen Operanden anwendbar.
Er macht nichts anderes, als die
16 So funktioniert ein PC
Prozessor
Zahl zu invertieren. War zuvor
eine 1 an der Stelle, erhalten
wir als Ergebnis eine 0 und umgekehrt.
Aus nichts anderem als
diesen logischen Verknüpfungen
ist ein Halbadder aufgebaut.
Natürlich funktioniert das Ganze
auch mit komplizierteren
Zahlen. „NICHT 0111“ würde
zum Beispiel als Ergebnis
„1000“ liefern. Eine ODER-Verknüpfung
zwischen „1001“
und „1010“ würde als Ergebnis
„1011“ ausspucken, während
ein XOR als Ergebnis „0011“ hätte.
Dieselben beiden Zahlen mit
UND statt mit ODER verknüpft,
hätte „1000“ als Ergebnis.
Rechenwerke
Wie man sieht, kann man mit
simplen logischen Funktionen
binäre Zahlen manipulieren
oder mathe matische Berechnungen
durchführen – wenngleich
dahinter eine ganze
Wissenschaft steckt. Mit der
richtigen Abfolge an Schritten
ist ein simpler Prozessor bereits
in der Lage, Zahlen zu addieren.
Ein paar dieser Einheiten miteinander
kombiniert – und man
kann subtrahieren, multiplizieren
oder Ganzzahlen dividieren.
Gatter und Flip-Flops
Neben den Gattern gibt es
weitere aus Transistoren aufgebaute
Schaltungen, die für
den Betrieb eines Rechenwerks
wichtig sind. An vorderster
Stelle steht das sogenannte Flip-
Flop, welches einen Zustand
(1 oder 0) über einen längeren
Zeitraum speichern kann. In
der einfachsten Ausführung, einem
ungetakteten RS-Flip-Flop,
werden zwei NAND-Gatter
(engl. für „Nicht-Und“-Gatter)
kombiniert, die zwei Eingänge
R und S schalten zwei Ausgänge
Q und ¬Q (siehe Grafik auf der
rechten Seite).
Register
Aus Flipflops bestehen auch die
prozessorinternen Speicher,
die sogenannten Register. Diese
beseitigen einen der vielen
Flaschenhälse in der ursprünglichen
Von-Neumann-Architektur.
Register sind schnelle Zwischenspeicher
direkt im Kern
des Prozessors. Damit stellt
der Prozessor letztlich seine eigentlichen
Berechnungen an.
So müssen die Daten nicht im
quälend langsamen Arbeitsspeicher
miteinander verrechnet
werden.
Registersätze
Ein klassischer x86-PC-Prozessor
verfügt über 14 Register:
acht Universalregister (GPR,
General Purpose Register)
sowie sechs spezialisierte Register,
in denen Zahlen zur
Berechnung abgelegt werden
oder Zeiger auf die Stelle des
Programmcodes gesetzt werden
können, an der sich der
Rechner gerade im Programmablauf
befindet. Ein Prozessor
kann Operationen auf Länge
der Register durchführen. Das
bedeutet, dass ein 32-Bit-Prozessor
Operationen mit 32-Bit-Zahlen
durchführen kann, also
mit Zahlen, die 32 Nullen oder
Einsen enthalten können. Jeder
Operand bei mathematischen
Operationen liegt also im Bereich
von 0 bis 4.294.967.295
(= 2 hoch 32).
Arbeiten
mit Registern
Der normale Anwendungsprogrammierer,
der eine Programmierhochsprache
wie C++, Visual
Basic oder Java beherrscht,
kommt normalerweise mit Regis
tern nie in Berührung. Er
Wie ein Flipflop arbeitet
Das Flip-Flop stellt die einfachste Form eines Speichers dar und kann
ein Bit so lange speichern, wie Strom anliegt (sogenannter flüchtiger
Speicher).
R
S
&
&
Flipflop-Typen
Registersatz einer x86-CPU
Diese Register besitzt ein klassischer 8086-16-Bit-Prozessor.
Bei 32-Bit-CPUs heißen die verlängerten Register EAX, EBX, usw.
(„E“ für „Extended“)
AX
BX
CX
DX
AH
BH
CH
DH
FLAGS
Q
Q
Es gibt nicht den einen Flipflop-Speicher; stattdessen wurden im Laufe
der Zeit viele verschiedene Typen entwickelt, die alle für unterschiedliche
Anforderungen
optimiert
sind. In Prozessoren
kommen
meist flankengesteuerte
Flipflops zum
Einsatz; diese
behalten ihre Information
auch
dann, wenn sich
das Eingangssignal
ändert.
Nicht taktgesteuerte
Flipflops
SP
BP
SI
DI
IP
CS
DS
SS
ES
Flipflops
AL
BL
CL
DL
FLAGS
R
0
0
1
1
Taktzustandsgesteuerte
Flipflops
Taktgesteuerte
Flipflops
Einflankengesteuerte
Flipflops
S
0
1
0
1
Taktflankengesteuerte
Flipflops
Q
1
1
0
0
Zweiflankengesteuerte
Flipflops
Accumulator Register
Base Register
Count Register
Data Register
Stack Pointer
Base Pointer
Sourceindex
Destination Index
Instruction Pointer
Status Flags
Code Segment
Data Segment
Stack Segment
Extra Segment
So funktioniert ein PC 17
Prozessor
Bild: DEC
Server-Prozessoren
(hier Alpha
21164) besaßen
Features wie
64-Bit-Fähigkeit
schon lange vor
den Intel- und
AMD-Prozessoren.
Wie eine Fließkommazahl
zusammengesetzt ist
Eine Fließkommazahl besteht grundsätzlich aus drei Elementen: der
Mantisse, der Basis und einem Exponenten. Die Zahl 17,5 dargestellt
als Fließkommazahl würde man 1,75 mal 10 hoch 1 schreiben. Um eine
solche Zahl in ein 32 Bit breites Register zu quetschen, muss man zuerst
einmal definieren, welche Stellen wofür verwendet werden sollen.
Gemäß Spezifikation IEEE 754 für Float-Zahlen mit einfacher Genauigkeit
wird dabei ein Bit für das Vorzeichen verwendet (eine Fließkommazahl
kann ja auch negativ sein), 8 Bit für den Exponenten und der Rest
für die Nachkomma stellen (Mantisse).
Bit
31 24 23 16 15 8 7 0
S E E E E E E E E M M M M M M M M M M M M M M M M M M M M M M M
Exponent
Nachkommastelle (Mantisse)
Vorzeichen (Sign)
Zu Zeiten der 386er-Generation war es
üblich, Co-Prozessoren nachzurüsten.
Dafür gab es eigens einen Sockel auf
dem Mainboard. Mit dem 486 begann
später die Integration in die CPU.
programmiert mit einigermaßen
verständlichen Prozeduren,
Funktionen, Klassen und
Bibliotheken. Anders sieht die
Sache allerdings auf Maschinensprache-Ebene
aus. Hier können
die Register eines Prozessors
unmittelbar beschrieben, ausgelesen
und miteinander verarbeitet
werden. Im End effekt
werden natürlich auch die
Quellcodes von Hochsprachen
in Maschinensprache übersetzt.
Allerdings übernimmt diese Arbeit
der Compiler.
Von 32 zu 64 Bit
Das Bearbeiten größerer Zahlen
mit 32-Bit breiten (oder
noch kleineren) Registern ist
ziemlich umständlich, da die
Zahlen dann in zwei oder mehrere
Teile aufgespaltet werden
müssen – andernfalls würde ein
moderner PC ja schon an der
Berechnung der Staatsverschuldung
scheitern. Doch nicht
nur aus diesem Grund wünschen
sich die Programmierer
möglichst breite Register. Ein
32-Bit-Register kann auch nur
eine beschränkte Anzahl an Adressen
im Arbeitsspeicher aufnehmen;
für ein 32-Bit-System
bedeutet das: Bei 4 GByte RAM
ist Schluss. Mehr Speicher kann
ein 32-Bit-Prozessor nicht adressieren
(zumindest nicht auf
herkömmlichem Wege).
Die Einführung von 64-Bit-Prozessoren,
also von Prozessoren
mit 64 Bit breiten Registern,
entschärft das Problem, indem
hier rein rechnerisch 2 hoch
64 Byte RAM adressiert werden
können, also satte 16.777.216
Terabyte. Eine schier unvorstellbar
große Menge. Aus diesem
Grund haben die aktuellen
64-Bit-x86-Prozessoren eine
freiwillige Selbstbeschränkung:
Nur 40 Bit stehen für die Adressierung
des Arbeitsspeichers
zur Verfügung. Das sind 1 TByte
RAM, was für die nächsten Jahre
erst einmal genügen sollte.
Die FPU
Die normale ALU ist nicht in der
Lage, Fließkomma-Berechnungen
anzustellen – sie kann nur
ganze Zahlen verrechnen. An einer
Berechnung wie 125,4845
geteilt durch 17,5 scheitert die
ALU kläglich. Dafür ist sie nicht
konzipiert worden. Ein Programm,
das solche Berechnungen
mit einem x86-Prozessor
ohne FPU durchführen wollte,
musste die Funktion aufwendig
per Software emulieren. Mit einem
mathematischen Koprozessor
dagegen können solche
Berechnungen „in Hardware“
und damit wesentlich schneller
durchgeführt werden. Die
meisten FPUs stellen Operationen
für die Grundrechenarten,
Logarithmus-, Wurzel- und Potenzrechnung
und trigonometrische
Funktionen zur Verfügung.
Rundungsfehler
Bei der Darstellung und vor allem
bei der Weiterverarbeitung
von Fließkommazahlen sollte
man aber stets im Hinterkopf
behalten, dass eine solche Zahl
lediglich eine mehr oder minder
genaue Rundung der reellen
Zahl darstellt. Je geringer
dabei die Anzahl an Bits, die
für die Mantisse zu Verfügung
stehen, desto ungenauer die
Rundung. Ein Beispiel: Nehmen
wir die Berechnung 10 geteilt
durch 3. Dabei kommt 3,3
Periode heraus. Mit nur einer
Nachkommastelle erhält man
das Ergebnis 3,3. Multipliziert
man dieses Ergebnis mit 1.000,
kommt man auf 3.300 – was
falsch ist! Denn in Wahrheit ist
das Ergebnis 3.333,3 Periode.
18 So funktioniert ein PC
Prozessor
Wie eine Pipeline funktioniert
Der ständig wiederkehrende Funktionsablauf in einem Prozessor besteht
im Wesentlichen aus den Stufen IF (Instruction Fetch), ID (Instruction
Decoding), EX (Execution) und WB (Write Back), wobei sich der
der Ablaufplan im Bereich EX je nach Darstellung um einen MEM- oder
Fetch-Operands-Zyklus erweitern lässt – schließlich müssen nicht nur
die Instruktio nen aus dem Speicher geladen werden, sondern auch
noch die zu verarbeitenden Daten. Gehen wir also in unserem Beispiel
einmal von der Reihenfolge IF, ID, EX, MEM und WB aus. Das sind fünf
verschiedene Vorgänge, die ein Prozessor nacheinander ausführen
muss, um einen einzigen Befehl zu verarbeiten – grundsätzlich spiegeln
diese auch die fünf Phasen der Befehlsverarbeitung eines Von-Neumann-Rechners
wider.
Leerlauf
Ein solcher vereinfachter Prozessor hätte einen CPI-Wert von fünf. Für
jeden Befehl benötigt die CPU also selbst im Idealfall fünf ganze Takte,
wobei dieser Idealfall höchst selten eintritt. Schließlich dauert bereits
ein Zugriff auf den im Verhältnis deutlich langsameren Arbeitsspeicher
etliche Dutzend bis hundert Prozessortakte. In dieser Zeit ist unser
Prozessor zum Warten verdammt; eine Zeit, in der die CPU nichts weiter
tun kann, als Däumchen zu drehen, bis die Infrastruktur die Daten
aus dem RAM gelesen hat.
Fließbandprinzip
Statt alle Einheiten an einer einzelnen Operation arbeiten zu lassen,
unterteilen aktuelle Prozessoren die Aufgaben in möglichst kleine Teilbereiche
– genau wie einst Henry Ford bei der Produktion von Autos.
Der Trick des Pipelinings ist es nun, die Schritte IF, ID, EX, MEM und
WB genau wie am Fließband zwar nach wie vor hintereinander auszuführen,
jedoch den nächsten IF-Arbeitsschritt bereits dann zu beginnen,
wenn Stufe 2 der Pipeline noch mit ID beschäftigt ist. So wird die
Pipeline bei jedem Takt mit einer neuen Instruktion gefüttert.
Effizientere Verarbeitung
Zwar dauert es genau wie am Fließband nach wie vor genauso viele
Taktzyklen wie ohne Pipeline, bis die erste Instruktion abgearbeitet
ist. Anschließend jedoch wird der Prozessor nach jedem Takt wieder
mit einer Instruktion fertig, während der Non-Pipelined-Prozessor hier
erst wieder mit seiner nächsten Instruktion beginnen würde. Durch die
CPU-Pipeline haben wir es also geschafft, den CPI-Wert unseres Beispielprozessors
von bisher bestenfalls 5 auf bis zu 1 zu verringern.
t
i
1 2 3 4 5 6 7 8 9
IF
ID EX MEM
IF
ID EX MEM
IF
ID EX MEM
IF
So funktionieren
Pipelines und OoO
ID EX MEM WB
IF ID EX MEM WB
Die fünfstufige Pipeline unserer Beispiel-CPU: Ab dem fünften Takt
wird die CPU mit jedem Zyklus mit einer Instruktion fertig.
WB
WB
WB
Um eine einzige Funktion
auszuführen, benötigte
der Urvater der
heutigen Prozessoren, der Intel
8086, unzählige Takte abhängig
von der Art der Instruktion. Der
Fachbegriff dafür lautet CPI
(Clockcycles per Instruction).
Dieser Wert beschreibt die Anzahl
der Takte, die benötigt werden,
um eine Instruktion auszuführen.
Dem grundsätzlichen Problem
der langwierigen Befehlsverarbeitung
versucht man mit dem
Fließbandprinzip zu begegnen;
wie einst bei Henry Ford erwies
es sich als zweckmäßig, die Verarbeitung
einer Instruktion in
mehrere, etwa gleich große
Einzelschritte zu zerlegen (detaillierte
Erklärung im Kasten
rechts).
Pipelining
Als erster Mikroprozessor mit
einer (einstufigen) Pipeline
gilt der MOS Technology 6502
von 1975. Aber auch in der x86-
Welt war bereits der allererste
IBM-kompatible Prozessor, der
Intel 8086 im Jahre 1978, mit
einer primitiven Form des Pipelinings
ausgestattet. Seine
Bus-Interface-Unit schickte die
Abfolge an Instruktionen durch
eine 6-Byte-Prefetch-Queue an
die Execution-Einheit, sodass
die Stufen Fetch und Execution
gleichzeitig ausgeführt werden
konnten.
Pionier 486
Als Vater des echten Pipelinings
auf den x86ern jedoch gilt der
Intel 80486, der eine dreistufige
Locate-Fetch-Execution-Pipeline
besaß und im Jahre 1989
eingeführt wurde. Damals, als
die Luft bei der CPU-Entwicklung
noch nicht so dünn war
wie heute, hatte die Einführung
einer neuen Prozessor-Generation
aufgrund der neuen Features,
zu denen auch Pipelining
gehörte, tatsächlich einen deutlichen
Performance-Schub bei
gleicher Taktfrequenz zur Folge.
Heute können die CPU-Designer
schon froh sein, wenn
eine neue Generation 20 bis
30 Prozent weniger CPI benötigt
als der Vorgänger. Das liegt
mitunter natürlich daran, dass
sich dieses Prinzip nicht beliebig
erweitern lässt.
Pipeline-Probleme
Ein Prozessor ist kein streng sequenzieller
Automat, bei dem
alle Vorgänge vorhersehbar
sind. Ein Programm ist vor allem
eine Ansammlung von unzähligen
Entscheidungsfindungen.
Die Wenn-dann-Struktur
eines Programms steht jedoch
in direkter Konkurrenz zu einer
möglichst tiefen Pipeline.
Das ist immer dann kritisch,
wenn beispielsweise die dritte
Instruktion vom Ergebnis der
ersten Instruktion abhängt.
Bereits in unserer äußerst kurzen
Beispiel-CPU mit fünf Pipeline-Stufen
ist das ein Problem,
denn wenn die Instruktion Nr.
3 in die ID-Stufe geladen wird,
ist die Instruktion Nr. 1 noch
nicht fertig berechnet.
Es gibt nun zwei Möglichkeiten,
eine CPU in so einem Fall
verfahren zu lassen: Entweder
wartet die CPU mit dem Start
der dritten Instruktion so lange,
bis das Ergebnis der ersten
20 So funktioniert ein PC
Prozessor
Instruktion feststeht. Das ist die
einfachste Art der Implementierung,
aber auch die langsamste.
Im schlimmsten Fall arbeitet
der Prozessor wie ein Prozessor
ohne Pipeline, weil er ständig
auf das Ergebnis einer vorherigen
Stufe wartet.
Spekulative
Ausführung
Die andere Möglichkeit der
Im plementierung lautet, die
Pipeline einfach auf Verdacht
arbeiten zu lassen. Wenn die
Instruktion 1 zwei Takte später
das Ergebnis hat, das Instruktion
3 „angenommen“ hat, bleibt
die heile Welt des Pipelinings
erhalten.
Übel wird es allerdings, wenn
sich die CPU „verschätzt“ hat
und die Instruktion 3 unter
falschen Voraussetzungen auf
die Reise geschickt hat. Dann
muss die komplette Pipeline
geleert („geflusht“) werden, alle
in der Pipeline befindlichen
Stationen müssen ihre Arbeit
auf den Müll werfen. Wenn
das permanent geschieht, kann
eine Pipelined-CPU sogar langsamer
arbeiten als eine Non-Pipelined-CPU,
da das Flushen
einer Pipeline selbst bereits etliche
Takte für sich in Anspruch
nimmt.
Branch-Prediction
Trotzdem arbeiten fast alle
Pipelined-CPUs mit diesen
Berechnungen auf Verdacht.
Allerdings haben die CPU-Entwickler
ihren Babys ein Feature
mit auf den Weg gegeben,
das dafür sorgt, dass ein Pipeline-Flush
so selten wie möglich
nötig ist. Dieses Feature nennt
sich Branch-Prediction-Unit,
zu Deutsch: Sprungvorhersage.
Eine Sprungvorhersage (eigentlich
ist dies eine falsche
Übersetzung, „branch prediction“
lautet korrekt übersetzt
„Abzweigungsvorhersage“ oder
„Verzweigungsvorhersage“) versucht
zu erraten, welche Richtung
der Programmfluss bei
einem bedingten Sprung einlegen
wird. Hierbei werden die
verschiedenen Verzweigungsmöglichkeiten
des Programmflusses
genauestens geprüft und
nach Wahrscheinlichkeiten gewichtet.
Die Verzweigung mit
der höchsten Wahrscheinlichkeit
wird anschließend als weiterer
Verlauf des Programms definiert
und die Pipeline mit den
entsprechenden Instruktionen
gefüllt.
Doch wie das Wort „Wahrscheinlichkeit“
schon zeigt, gibt
es keine Garantie, dass der Programmfluss
die vorhergesagte
Richtung auch wirklich einschlägt.
Somit wird es immer
den Fall geben, dass aufgrund
eines Versagens der Sprungvorhersage-Logik
die Pipeline ausgespült
und neu gefüllt werden
muss. Die perfekte Sprungvorhersage
mit 99 Prozent Treffsicherheit
(oder gar mehr) hat
bisher noch niemand konstruieren
können, Informatiker und
Ingenieure rund um den Globus
beschäftigen sich mit dem
Modell der „Sprungvorhersage“.
Branch Target Buffer
Besser als eine bloße Sprungvorhersage
ist eine Sprungzielvorhersage.
Sobald man in der
ID-Stage erkennt, dass es sich
um einen Sprung handelt, kann
man prüfen, ob dieser Sprung
schon einmal stattfand, und
gegebenenfalls sein Sprungziel
aus einem Puffer holen. Somit
kann man den Programmzähler
sofort auf dieses Sprungziel
stellen und die dortigen Instruktionen
in die Pipeline laden.
Intels Pentium (1) brachte erstmals zwei Pipelines; eine davon konnte
aber nur einfache Aufgaben berechnen (V-Pipe), während die andere
universell einsetzbar war (U-Pipe).
Spekulative Ausführung
Speculative Execution: Wird ein Sprung zweimal hintereinander ausgeführt,
ändert der Predictor seine Vorhersage von Nojump auf Jump.
-
-
-
Beim K6 kombinierte
AMD den
Befehlssatz der
fünften CPU-Generation
mit der Outof-Order-Fähigkeit
der sechsten Gen e-
ration.
+
state 3: predict jump
state 2: predict jump
state 1: predict nojump
state 0: predict nojump
-
+
+
+
Quelle: www.kreissl.info
Bild: Intel
So funktioniert ein PC 21
Prozessor
Wie ein super skalarer
Prozessor arbeitet
Eine fünfstufige Pipeline mit zweifacher Superskalarität. Hier können
zwei Befehle gleichzeitig ausgeführt werden.
Fetch Decode Execute
Fetch Decode Execute
Fetch
Fetch
Decode
Decode
Fetch
Mem
Access
Mem
Access
Execute
Execute
Decode
Pipelining und
Out-of-Order-Execution
Write
Back
Write
Back
Mem
Access
Mem
Access
Execute
Fetch Decode Execute
Im unserem abgebildeten Beispiel laufen drei Befehle parallel; erschwerend
kommt hinzu, dass die grüne Instruktion (addiere F1 und F2 und
schreibe das Ergebnis in F3) vom Ergebnis der roten abhängig ist. Im
oberen Teil der Grafik muss die grüne Instruktion warten, bis das Ergebnis
der roten vorliegt. Es müssen daher zwei Wartezyklen (S, stall) eingelegt
werden. Dies blockiert auch die blaue Operation. Dennoch sind
alle drei Aufgaben bereits nach 9 Taktzyklen erledigt – ohne Pipelining
hätten die drei Instruktionen 15 Taktzyklen benötigt.
In der unteren Hälfte ist die gleiche Aufgabe auf einem Out-of-Order-Execution-fähigen
Chip zu sehen. Hier wurde die ursprünglich dritte
Instruktion (blau) vorgezogen. Sie kann nun ohne Wartezeit bearbeitet
werden. Als Nebeneffekt ergibt sich, dass die grüne Instruktion nun nur
noch einen Takt auf das Ergebnis der roten Instruktion warten muss.
Taktzyklus
1 2 3 4 5 6 7 8 9
IF ID EX M WB
IF ID S S EX M WB
IF S S ID EX M WB
add F1, F2 => F3
add F1, F3 => F4
sub R1, R2 => R3
Taktzyklus
1 2 3 4 5 6 7 8 9
IF ID EX M WB
IF ID EX M WB
IF ID S EX M WB
Legende:
IF (Instruction Fetch): Der nächste Befehl wird geholt. ID (Instruction Decode): Der Befehl
wird dekodiert. EX (Execute): Der Befehl wird ausgeführt. M (Memory): Der Speicher wird
adressiert. WB (Write Back): Das Ergebnis der Berechnung wird geschrieben. S (Stall):
Die Pipeline läuft leer.
Dies geschieht in der Regel mithilfe
eines Branch Target Buffers
(BTB) oder eines Branch
Target Adress Cache. Diese
Tabelle enthält Vorhersageinformationen,
Zieladressen und
Tags.
Superskalarität
Mit einem strikt nach von Neumann
arbeitenden Prozessor
würde man niemals eine IPC >
1 erreichen können (bzw. CPI
< 1). Die Tatsache, dass heutige
Prozessoren einen IPC von
deutlich mehr als 1 haben, beruht
schlicht und ergreifend auf
der Tatsache, dass die Entwickler
die von-Neumann-Architektur
nach eigenen Vorstellung
etwas verbogen haben und den
Prozessoren, beginnend mit
dem Intel Pentium (586), die
superskalare Arbeitsweise eingeimpft
haben.
Dabei geht es nicht ausschließlich
um das Pipelining. Eine superskalare
CPU unterscheidet
sich von einem nicht-superskalaren
Prozessor hauptsächlich
im Leitwerk. So teilt das Leitwerk
einer Recheneinheit nicht
mehr lediglich eine Instruktion
pro Takt zu, sondern gleich
mehrere unterschiedliche Instruktionen
für mehrere unterschiedliche
Recheneinheiten.
Es gibt damit im Grunde nicht
nur eine Pipeline, sondern
mehrere parallele. Der Prozessor
ist damit in der Lage, mehrere
Instruktionen parallel abzuarbeiten,
solange diese oder
ihr Ergebnis nicht voneinander
abhängig sind.
Somit kann eine zweifach superskalare
CPU bei gleichem
Takt im Idealfall doppelt so viele
Instruktionen pro Sekunde
abarbeiten wie ein serieller Prozessor.
Um dies zu erreichen,
muss beispielsweise der Dekoder
mehr als nur eine Instruktion
pro Taktzyklus dekodieren
können. Es müssen mehrere
von einander unabhängige Recheneinheiten
vorhanden sein.
Die erste Implementierung superskalarer
Arbeitsweise fand
in der fünften x86-Generation
statt, im Intel 586 alias Pentium.
Out-of-order
Execution
Mit der Superskalarität wurde
es noch wichtiger, die Recheneinheiten
optimal auszulasten.
Zu diesem Zweck ersannen
die Entwickler die „Out-of-Order
Execution“ (kurz: OoO, zu
Deutsch: „Ausführung außerhalb
der Reihenfolge“). Sie bietet
einen enormen Zuwachs an
Geschwindigkeit, denn so können
Instruktionen bereits ausgeführt
werden, wenn sie noch
gar nicht an der Reihe sind.
Ein Beispiel: Nehmen wir an,
dass eine Instruktion Daten aus
dem Speicher einlesen muss.
Dies führt dazu, dass der Prozessor
für mehrere hundert
bis tausend Taktzyklen auf die
Daten warten muss und quasi
zum Nichtstun verdammt ist.
Gibt es jedoch in der Pipeline
Instruktionen, die von der derzeit
auf Daten aus dem Speicher
wartenden Instruktion weder
abhängen noch mit ihr in Zusammenhang
stehen, kann der
Prozessor die nötige Wartezeit
mit der Ausführung dieser Instruktionen
überbrücken.
Out-of-Order Execution wurde
in der x86-Welt erstmals mit
dem Pentium Pro eingeführt.
Dennoch gibt es auch heute
noch CPUs, die zugunsten einer
niedrigen Leistungsaufnahme
auf OoO verzichten – Intels
Atom ist ein Beispiel dafür.
22 So funktioniert ein PC
Z87-GD65
GAMING
JUST GAME!
Stabile Netzwerkverbindung mit Killer Ethernet!
Geringe Latenzzeiten und ein optimaler Ping sorgen
dafür, dass du dich ganz dem Spiel widmen kannst.
Biete deinen Ohren beste Sound-Qualität! Der Audio
Boost Schaltkreis wurde konzipiert um hochwertiges
Audiomaterial perfekt wiederzugeben.
TOP QUALITÄT
& STABILITÄT
OVERCLOCKEN
IN 1 SEKUNDE
REALISTISCHER
SURROUND SOUND
game.msi.com
© 2013 Micro-Star Int‘l Co.,Ltd., Alle Rechte vorbehalten. Intel, das Intel Logo, Intel Inside, Intel Core und Core Inside sind Marken der Intel Corporation in den USA und
anderen Ländern. Weitere verwendete Marken und Handelsnamen beziehen sich auf die jeweiligen Eigentümer oder deren Produkte.
MSI Motherboards erhalten Sie bei: Amazon · Acom · Arlt · Alternate · Atelco · Bora Computer · Caseking · Computeruniverse · Cyberport · Home of Hardware · sowie im Fachhandel
Prozessor
So funktionieren
Caches
teme besaßen Cache-Bausteine
aus SRAM-Speicher auf den
Mainboards, um den Zugriff
auf häufig verwendete Codestellen
und Daten zu beschleunigen.
Bild: Intel Bild: Intel
Cache kann man aufgrund der uniformen Struktur leicht auf dem Wafer
oder entsprechenden Bildern („Die-Shots“) erkennen.
Bei älteren Prozessoren nahm der Cache bis zu 50 Prozent der kompletten
Chipfläche ein (hier ein Core 2 Duo). Bei aktuellen Modellen ist
es aufgrund des integrierten Grafikkerns prozentual deutlich weniger.
Der klassische von-Neumann-Rechner
besitzt
keinen Cachespeicher,
ja nicht einmal
Register. Sämtliche Operationen
werden direkt aus dem
Speicher heraus ausgeführt
– und das dauert! Experimentierfreudige
Leser können das
gerne mal ausprobieren und im
BIOS des Computers L1- und
L2 Cache deaktivieren. Von
der enormen Performance des
Prozessors bleibt dann absolut
nichts mehr übrig.
Langsamer Speicher
Verantwortlich dafür ist zum
einen die Diskrepanz zwischen
CPU- und Speichertakt. Während
aktuel le Prozessoren mit
4 GHz Taktfrequenz und mehr
arbeiten, kriechen selbst die
schnellen DDR3-Speicher mit
knapp einem Gigahertz vor
sich hin – intern sind es gar nur
266 MHz.
Damit könnte man noch leben.
Doch noch schlimmer sind
die miserablen Zugriffszeiten
von DRAM-Speicher: Von
der Anforderung von Daten
bis zur Lieferung vergehen je
nach Plattform zwischen 150
und 500 Prozessortakte! Im
schlimmsten Fall (wenn OoO
oder andere Funktionen nicht
greifen), kann der Prozessor in
dieser Zeit nichts anderes tun
als warten.
Cache-Geschichte
Dieser Missstand wurde bereits
früh erkannt. Schon 8088-Sys-
Der Trick dabei: Daten, die bereits
einmal aus dem Speicher
geholt wurden, werden in einen
Puffer geschrieben. Benötigt
die CPU dieselben Teile
wenig später noch einmal,
was relativ häufig vorkommt,
braucht sie nicht erneut darauf
zu warten. Die Daten müssen
dann nicht mehr aus dem RAM
gelesen, sondern können relativ
schnell aus dem Pufferspeicher
bereitgestellt werden.
Cache-Hierarchie
Allerdings sind klassische
Cache-Bausteine auf den Mainboards
immer noch relativ
langsam, arbeiten sie doch
meist mit der Taktfrequenz
der Infrastruktur, während
die CPU meist 10 bis 20 Mal
so hoch taktet. Daher integrierte
Intel beim 80486 zum
ersten Mal zusätzlichen Cache
auch direkt in die CPU. Der
gestufte Cache war erfunden.
Beim 486er waren es meist 2x
4 KiByte Puffer in der CPU als
Level-1-Cache sowie größerer
(damals meist 256 kByte), aber
langsamerer Level-2-Cache auf
dem Mainboard.
Der Vorteil des in tegrier ten
Caches: Die Wege sind kürzer,
die Latenzzeiten sinken gewaltig,
der Cache arbeitet mit vollem
CPU-Takt und die Anbindung
kann breiter ausgeführt
werden, als es die Infrastruktur
vorgibt. Mit stetig verbesserten
Produktionstechniken konnte
einige Jahre später auch der
L2-Cache direkt in die CPU integriert
werden. Seitdem be-
24 So funktioniert ein PC
Prozessor
sitzt praktisch jede CPU einen
On-Die-Level-1- und Level-2-
Cache.
SRAM-Speicher
Implementiert wird Cache
durch sogenanntes SRAM. Statisches
RAM (engl. Static Random
Access Memory) bezeichnet
einen Typ von flüchtigen
Speicherbausteinen. Im Gegensatz
zu DRAMs müssen außer
der Betriebsspannung keine
Signale zum Auffrischen erzeugt
werden, um die Daten zu
erhalten. Eine SRAM-Speicherzelle
besteht aus zwei Transistoren,
die als Flipflop (siehe
unter „Flipflop“ und im Artikel
„So funktioniert die Infrastruktur:
Speicher“) geschaltet sind,
und weiteren Transistoren für
die Steuerung des Schreib- und
Lesevorgangs.
In der Regel sind für eine Speicherzelle
sechs CMOS-Transistoren
nötig. Jede Speicherzelle
bildet 1 Bit ab. SRAM hat sehr
geringe Zugriffszeiten und
ist damit als Cachespeicher
prädestiniert. Aufgrund der
einfachen Ansteue rung ist es
auch die bevorzugte Speichertechnologie
für Embedded
Memory (im Chip integrierter
Speicher). Der Nachteil im Vergleich
zu DRAMs ist der höhere
Flächenbedarf auf dem Wafer
bei gleicher Speicherkapazität
und der damit vielfach höhere
Preis.
Cache-Arbeitsweisen
Je nach Prozessor ist ein zweigeteilter
Split-Cache oder ein
einheitlicher Unified-Cache
verbaut, der Daten und Befehle
gemischt speichert. Die
aktuellen CPUs von AMD und
Intel verwenden Split- Caches
für den L1- und Unified-
Cache für den L2-/L3-Zwischenspeicher.
Aus Platzgründen
kann der L1-Cache in der
CPU nicht sehr groß sein. Je
nach Philosophie des Prozessorherstellers
bewegt er sich
zwischen 16 und 128 kByte.
Cache-Organisation
Der Cache wird in Zeilen
(Cache Lines) oder Sets eingeteilt.
Erfolgt ein Lesezugriff auf
einen Bereich im Arbeitsspeicher,
dann füllt die CPU eine
Cache-Zeile mit dem Inhalt aus
diesem Speicherblock.
Es gibt verschiedene Organisationen
von Caches. Der
einfachste ist der Direct-mapped-Cache.
Hier ist jedem Set
nur ein Cache-Eintrag zugeordnet.
Der Nachteil des Direct-mapped-Caches
ist, dass
nur Speicherbereiche in der
Größe des Caches gepuffert
werden können. Wird auf Speicherbereiche
außerhalb dieses
Bereiches zugegriffen, ist der
gesamte Inhalt des Eintrages
wertlos und muss neu geladen
werden.
Assoziativer Cache
Hier eilen teil- oder mehrwegassozia
tive Caches zu Hilfe.
Die Adressen werden dabei in
mehreren Ebenen gespeichert
und miteinander verknüpft.
Erfolgt ein Zugriff auf eine Adresse
außerhalb des aktuellen
Blocks, die aber dieselbe Anfangsadresse
enthält, so wird
der Speicherblock nicht komplett
ausgetauscht, sondern in
einer anderen Ebene gespeichert.
Ein gern verwendeter Vergleich
ist der Briefträger: Er
sortiert die Post nicht nur in
Straßenzüge (Tags), sondern
obendrein auch nach der Straßenseite.
Bei einem Abstecher
Der 80386 (hier ein
selteneres Modell
von AMD statt von
Intel) musste noch
mit externem Cache
auf dem Mainboard
auskommen.
486-CPUs besaßen
als erste
x86-Prozessoren
einen 8 kByte
großen On-Die-L1-
Cache, Derivate
anderer Hersteller
(Cyrix, TI) mussten
mit 1 kByte auskommen.
Die Cachebausteine auf den Mainboards
waren früher in Form von
steckbaren Modulen verbaut. So
konnten sie – je nach Einsatzgebiet
– auch bequem (aber teuer)
nachgerüstet werden.
So funktioniert ein PC 25
Prozessor
Wie Cache-Speicher
intern aufgebaut ist
Ein SRAM-Cache benötigt zur Speicherung eines einzigen Bits satte
sechs Transistoren. Vier Transistoren speichern die Information, die
restlichen werden zum Ein- und Auslesen benötigt. Daneben gibt es
aber auch eine Reihe alternativer und verbesserter SRAM-Designs;
in der Nehalem-Architektur beispielsweise kommen SRAM-Zellen mit
acht Transistoren zum Einsatz, die für einen geringeren Energiebedarf
sorgen sollen.
Warum es für kurze Zeit
Slot-Prozessoren gab
Der erste AMD Athlon besaß ebenso wie der Pentium III Katmai einen
L2-Cache in Form von auf der CPU-Platine aufgelöteten SRAM-Chips.
Dazu war damals die Slot-Bauweise nötig. Später passte der Cache
aufgrund des besseren Herstellungsprozesses wieder auf den Chip –
die Slot-Gehäuse verschwanden wieder.
Bild: AMD
in die Seitenstraße greift er
sich nur das Briefbündel für
eine Straßenseite und legt
das zweite Bündel der gegenüberliegenden
Straßenseite
der alten Straße weg. Wenn er
aus der Seitenstraße zurückkommt,
hat er immer noch das
Bündel der Seite in der Hand,
bei der er abgebogen ist. Level-
1-Caches aktueller CPUs sind
in der Regel 2-Wege-assoziativ,
Level-2-Caches 16-Wege-assoziativ.
Trace Cache
Mit dem Pentium 4 hat Intel einen
Sonderfall des L1-Instruction-
Cache eingeführt, den sogenannten
Trace Cache. Seit dem
6x86 arbeiten x86-Prozessoren
extern wie CISC-Prozessoren
mit komplexem Befehlssatz, dekodieren
jedoch jede Instruktion
vor ihrer Ausführung in RI-
SC-artige Mikro-Operationen.
Dieser Vorgang der Dekodierung
kostet natürlich Rechenzeit
und um diese zu sparen,
speicherte der Pen tium 4 im
12.000 Mikro-Operationen
(µOps) fassenden L1- Trace-
Cache die bereits dekodierten
RISC-artigen Befehle für die
weitere Verwendung ab. Der
Trace Cache verschwand wenig
später wieder, erlebte aber
mit der Sandy-Bridge-Architektur
ein Comeback und ist heute
Bestandteil fast aller Intel-Prozessoren.
Cacheverwaltung
Zusätzlich zu den erwähnten
Va rianten unterscheidet man
zwischen inklusiver und exklusiver
Cacheverwaltung. Bei der
inklusiven Verwaltung nehmen
die einzelnen Cache-Stufen
keine Rücksicht darauf, ob
Daten bereits in der anderen
Stufe liegen oder nicht. Es kann
also vorkommen, dass Daten
sowohl im L1- als auch im L2-
Cache liegen (oder analog dazu
im L2- und L3-Cache) und damit
mehrfach vorhanden sind.
Angesichts der geringen Größe
der Caches eigentlich eine
böse Verschwendung.
Allerdings arbeitet ein inklusiver
Cache aufgrund des niedrigeren
Verwaltungsaufwandes
in der Regel mit sehr niedrigen
Latenzzeiten. Beim exklusiven
Cache dagegen können Daten
niemals gleichzeitig in L1 und
L2 liegen und damit Platz verschwenden.
Die beiden Cachestufen
werden so verwaltet, als
wären sie ein großer Cache-
Pool – mit dem einzigen Unterschied,
dass der L1 noch
einmal schneller arbeitet als
der L2.
Cachegröße
Je größer der Cachespeicher,
desto mehr Daten kann die
CPU im Puffer halten und desto
größer ist die Wahrscheinlichkeit,
dass sich ein benötigtes
Datenpaket bereits im Cache
befindet. Aktuell scheint der
beste Kompromiss zwischen
Cache-Größe und Platzbedarf
auf dem CPU-Kern bei zirka
sechs bis acht Megabyte für
den L3-Cache zu liegen; sämtliche
Mittelklasse-Prozessoren,
egal ob bei AMD oder Intel, bewegen
sich in diesem Rahmen.
Bei den L1- und L2-Caches
herrscht bereits seit einigen
Jahren Stillstand. Die L1-
Caches sind bei AMD und Intel
pro Kern gleichermaßen
zwischen 64 und 128 Kilobyte
groß; beim L2-Cache gibt es
dagegen größere Unterschiede:
Während Intel in der Regel
zwischen 256 und 512 Kilobyte
pro Kern verbaut, spendiert
AMD bis zu 2.048 Kilobyte.
26 So funktioniert ein PC
Prozessor
Mit der Pipelining-Technik
ist es den Dekodern
möglich, mehrere
Aufgaben eines Programms
gleichzeitig zur Ausführung
abzuschicken und somit im Idealfall
eine Leistungssteigerung
um den Faktor der Pipelinezahl
zu erreichen.
Allerdings ist das nur äußerst
selten der Fall, da innerhalb eines
Programms Operanden in
der einen Pipeline häufig vom
Ergebnis einer Operation in
einer anderen Pipeline abhängig
sind. Um die Auslastung zu
verbessern, versuchten die Entwickler
daher schon früh, ganze
Prozesse parallel laufen zu lassen.
Seit klar war, dass die physikalische
Taktgrenze, die bei
ungefähr vier bis fünf Gigahertz
liegt, mit aktuellen Techniken
kaum überwunden werden
kann, führte kein Weg mehr an
Multiprocessing vorbei.
Prozesse und
Threads
Wenn wir auf unserem Computer
ein Programm starten,
öffnen wir damit in der Regel
einen Prozess. Früher, zu
DOS-Zeiten, bestand ein Prozess
immer auch nur aus einem
Thread. Bei vielen Kommandozeilen-Anwendungen
ist das
auch heute noch so. Wenn das
Programm gestartet wird, sind
keine Ein- oder Ausgaben mehr
möglich, ohne die Laufzeit des
Programms zu unterbrechen.
So funktionieren
SMP und SMT
Windows-Programme oder
allgemein Programme mit
Benutzer oberfläche bestehen
zumindest aus zwei Threads:
der Oberfläche und dem eigentlichen
Arbeitsthread. So ist es
möglich, eine Oberfläche auch
dann noch zu bedienen, wenn
das Programm auf Vollgas werkelt,
bei einer Videosoftware
zum Beispiel während ein Film
umgewandelt wird.
Eine andere Möglichkeit ist,
Oberfläche und Programm
strikt zu trennen. In einem
solchen Fall öffnet die Oberfläche
beim Start der Videoumwandlung
ein zusätzliches
Programm, meist auf Kommandozeilenebene.
Ein typischer
Vertreter dieser Gattung
ist der MP3-Encoder Lame.
Multitasking
Bis zum Pentium III waren
x86-Prozessoren lediglich in
der Lage, immer nur einen
Thread eines Prozesses zu bearbeiten.
Dass moderne Betriebssystem
wie Linux oder
Windows seit dem Intel 80286
trotzdem in der Lage sind, ihren
Anwendern Multitasking
anzubieten – also das scheinbar
gleichzeitige Arbeiten mit mehreren
Programmen –, darf nicht
darüber hinwegtäuschen.
Dieses präemptive Multitasking
arbeitet mit einem Scheduler.
Der Reihe nach darf jede Anwendung
abhängig von ihrer
Priorität Prozessorzeit in Anspruch
nehmen – mit Betonung
auf „der Reihe nach“. Effektiv in
Bearbeitung ist aber immer nur
ein Thread. Der Anwender hat
lediglich den Eindruck, mehrere
Programme würden tatsächlich
gleichzeitig arbeiten, da
der Wechsel zwischen den einzelnen
Tasks sehr schnell vonstatten
geht.
Ob Zweikern-Prozessor oder SMP-System mit dutzenden Prozessoren
– Voraussetzung für eine Leistungssteigerung ist die Aufteilung
in Threads.
Hyper-Threading soll die Funktionseinheiten
moderner CPUs besser
auslasten. Bis heute klappt das im
Alltag aber nur selten.
Programme wie Seti@
Home eignen sich hervorragend
für die Zerlegung
in Teilaufgaben.
Bild: Intel
So funktioniert ein PC 27
Prozessor
Mehr Prozessoren
Um tatsächlich mehrere Aufgaben
gleichzeitig zu erledigen,
sind Systeme mit mehreren
Prozessoren notwendig. Das
Betriebssystem kann dann
entweder mehrere Prozesse
gleichmäßig auf die Prozessoren
aufteilen. Daneben ist es
aber auch möglich, einen Prozess
auf mehreren Prozessoren
laufen zu lassen. Dazu muss der
Prozess aber aus mehreren unabhängigen
Threads bestehen.
Das zu realisieren fällt in das
Aufgabengebiet der Programmierer
und der Compiler.
Vorteil dieses Multi-Processings
oder Multi-Threadings: entweder
ein deutliches Geschwindigkeitsplus,
wenn das Programm
Mehrprozessor-Systeme
unterstützt, oder ein besseres
Ansprechverhalten, wenn nur
ein Prozessor mit einer Aufgabe
ausgelastet ist und der zweite
nach wie vor vollständig zum
Arbeiten zur Verfügung steht.
Hyper-Threading
Aus diesem Grund hat Intel vor
einigen Jahren eine – wenn man
so will – abgespeckte Version
von Symmetric Multiprocessing
(SMP) in seine Prozessoren integriert,
das Simultaneous Multi
Threading (SMT).
Vermarktet wurde dieses Feature
unter dem Namen Hyper-Threading
(HT). Der Clou
an HT ist nun, die Vorteile
von SMP-Systemen auf nur einen
Prozessor zu projizieren,
zumindest teilweise. Bei aktiviertem
HT gaukelt der Prozessor
dem System einfach zwei
CPU-Kerne vor, obwohl physikalisch
nur einer vorhanden
ist. Intel spricht dabei von logischen
Prozessoren (LPs). Das
Betriebssystem glaubt, zwei
Prozessoren gefunden zu haben,
und verwaltet das System
wie ein waschechtes Mehr-Prozessorsystem.
Mit optimiertem
Code können sich drastische
Leistungssteigerungen einstellen;
bei Single-Threaded-Software
passiert jedoch gar nichts,
in Einzelfällen arbeiten Hyper-Threading-CPUs
sogar langsamer
als Modelle ohne diese
Technik.
Echtes Multi-
Processing
Beim SMP dagegen werden
dem Betriebssystem nicht nur
zwei oder mehrere Prozessoren
bzw. Prozessorkerne in Form
von logischen Prozessoren vorgegaukelt,
es kommen tatsächlich
zwei oder mehr Prozessoren
zum Einsatz. Der Vorteil
liegt auf der Hand: Die Rechenleistung
des Systems steigt im
Idealfall mit der Anzahl der Prozessoren.
Im Normalfall ist jede
Standardsoft ware auf SMP-Systemen
einsatzfähig, wenn auch
mit unterschiedlichem Erfolg.
Die Voraussetzungen, damit
eine Software auch in der Praxis
von SMP profitiert, sind
dieselben wie beim SMT: Es
müssen mindestens so viele
Arbeitsprozesse bzw. Arbeitsthreads
existieren, wie Prozessoren
vorhanden sind. Wenn
das nicht der Fall ist, steht ein
Prozessor „Däumchen drehend“
herum, während der andere
unter Volllast arbeitet.
Beispiel: Wie Hyper-Threading Verarbeitung funktioniert eines Tastendrucks
Intel unterscheidet drei Arten, wie die Bauteile der CPU für zwei LPs verwaltet werden: shared, replicated und partitioned. Im Bild ist die ursprüngliche
Aufteilung der Funktionseinheiten im Pentium 4 zu sehen; bei der späteren Implementierung im Nehalem-Architektur stellte Intel weniger detaillierte Informationen
zur Verfügung und bis heute ist unklar, wie genau die Technik dort umgesetzt wurde.
I-Fetch Queue Rename Queue Sched
IP
Register
Read
Execute
L1 Cache
Store Buffer
Register
Write
Retire
Trace
Cache
Register
Renamer
Registers
L1
D-Cache
Registers
Re-Order
Buffer
Mit Hyper-Threading lassen sich sowohl der Core als auch die Anbindung des Pentium effizienter auslasten, sofern die Technik von der Software unterstützt wird (Darstellung: Intel).
Shared Partitioned Replicated
Gemeinsam genutzte
(„shared“) Einheiten:
Caches
Out-of-order execution
engine
Geteilte („partitioned“)
Einheiten:
Re-order buffers
Load/Store buffers
Queues
Duplizierte („replicated“)
Einheiten:
Per-CPU architect. states
Instruction Pointers (IP)
Renaming Logic
ITLB/Return Stack
Predictor
28 So funktioniert ein PC
Prozessor
Multicore-CPUs
Multicore-Prozessoren vereinen
im Prinzip die Vorteile
von SMP und SMT: viele Prozessorressourcen,
gebündelt auf
möglichst kleiner Chipfläche.
Im Gegensatz zu SMP sind nicht
mehr mehrere Sockel nötig,
selbst vier oder mehr Kerne lassen
sich platzsparend und einigermaßen
kühl auf einem handelsüblichen
Desktop-Board
betreiben.
Einschränkungen
Bei grafisch intensiven Anwendungen
wie 3D-Spielen kann es
jedoch durchaus vorkommen,
dass die Performance eines
Computers sinkt, je mehr Prozessoren
man hinzufügt. Der
Grund liegt schlicht an den
Konflikten und daraus resultierenden
Stillständen der Prozessoren,
so genannten stalls
(engl.: to stall = zum Stillstand
bringen, stillstehen). Je mehr
Prozessoren versuchen, simultan
zum Beispiel auf die PCI-Express-Grafikkarte
zuzugreifen,
desto mehr Rechenzeit wird
mit Stillstand vergeudet.
Speicher-Probleme
Der gleiche Effekt tritt auch
beim Arbeitsspeicher auf. Hierfür
existiert das sogenannte
Locking (to lock = sperren, am
Zugang hindern). Multiprozessor-Kernel
von Betriebssystemen
müssen grundsätzlich
einige zusätzliche Befehle implementieren,
die beispielsweise
den Arbeitsspeicher vor parallelen
Zugriffen schützen, um
die Datenkonsistenz zu wahren,
sprich: um Datensalat zu vermeiden.
Greift eine CPU in einem
SMP-System auf den Arbeitsspeicher
zu, so wird der Zugriff
auf diesen zunächst für alle
weiteren vorhandenen Prozessoren
gesperrt und dem wartenden
Prozessor der exklusive
Zugriff gewährt. Anschließend
muss der Arbeitsspeicher wieder
für alle Prozessoren freigegeben
werden.
Das Problem an diesem Prozedere
ist, dass der dabei entstehende
Overhead gigantisch ist.
Dieser Vorgang, der den ohnehin
schon ausbremsenden
Zugriff auf den Speicher noch
weiter verlangsamt, wirkt nicht
sonderlich leistungsfördernd.
Das Problematische an diesem
Locking ist die Tatsache, dass
nicht nur Single-threaded-Applications,
also Programme, die
nicht für den Betrieb auf mehreren
Prozessoren konzipiert
sind, dieses Locking verursachen,
sondern auch Multi-threaded-Applications.
Aus diesem
Grund kann die Rechnung
„Leistungszuwachs um den Faktor
der CPU-Anzahl“ in der Praxis
niemals aufgehen. Bei ausschließlichem
Einsatz von nicht
SMP-optimierter Software kann
ein Programm sogar langsamer
arbeiten als der gleiche Rechner
mit nur einer CPU.
Cache-Probleme
Ein weiteres Problem stellt die
Kohärenz der Inhalte der unterschiedlichen
Cache-Hierarchien
dar. Cache-Kohärenz bedeutet
die Wahrung der Gültigkeit
der Inhalte der Caches. Wird
beispielsweise ein Wert aus
dem Arbeitsspeicher von beiden
Prozessoren in den jeweils
eigenen Cache geladen und
von einem der Prozessoren anschließend
(verändert) wieder
zurückgeschrieben, muss der
zweite Prozessor von diesem
Vorgang etwas mitbekommen,
um seine eigenen Caches entsprechend
zu aktualisieren.
Alle aktuellen CPUs kommunizieren über separate Links (hier: QPI beim
Nehalem) mit der Infrastruktur sowie anderen CPUs im System.
In traditionellen SMP-Systemen kommunizierten
die CPUs untereinander via Hyper Transport
(AMD) oder einen gemeinsamen Bus (Intel).
Warum viele Kerne bremsen
Ist der Programmcode an einer Stelle nicht parallelisierbar, helfen auch
Dutzende von Prozessoren kaum weiter. Selbst bei 95-prozentiger Parallelisierbarkeit
erreicht man mit acht Kernen nur einen Geschwindigkeitszuwachs
von rund 500 Prozent. Aktuelle Quadcore-CPUs scheinen
hier am Scheitelpunkt angekommen zu sein, denn auch die Kurve
gut parallelisierbaren Programmcodes flacht oberhalb von vier Kernen
spürbar ab. Diese Gesetzmäßigkeit formulierte Computerarchitekt
Gene Amdahl bereits 1967 – sie ist heute aktueller denn je.
Theoretisch mögliche Gewinne durch zusätzliche Prozessoren
Geschwindigkeitszuwachs
20
18
16
14
12
10
8
6
4
2
0
1
Parallelisierbarer Code-Anteil
n 50 % n 75 % n 90 % n 95 %
2
4
8
16
32
64
Anzahl der Prozessoren/Kerne
128
256
512
1.024
2.048
4.096
8.192
16.384
32.768
65.536
Bild: Intel
So funktioniert ein PC 29
Prozessor
Welche Bedeutung das
M(O)ESI-Cacheprotokoll hat
Das MESI-Protokoll sorgt dafür, dass Daten im Arbeitsspeicher konsistent
bleiben – andernfalls könnte es passieren, dass Prozessor 1
Daten liest, verrechnet und erneuert, während Prozessor 2 mit den
alten, falschen Daten weiterrechnet. Dabei werden folgende Zustände
unterschieden.
Modified
Der Inhalt im Arbeitsspeicher wurde seit dem Spiegeln in den lokalen
Prozessorcache modifiziert und stimmt somit nicht mehr überein.
Exclusive
Der Inhalt im Arbeitsspeicher stimmt noch mit dem gespiegelten Inhalt
im Cache überein. Die Cache-Line befindet sich nur im Cache eines
einzelnen Prozessors.
Shared
Wie Exclusive – mit dem Unterschied, dass sich die Cache-Line in
mehreren Caches befindet. Bei Aktualisierung der ursprünglichen Daten
im Arbeitsspeicher werden alle Caches auf den neuesten Stand
gebracht.
Invalid
Der Inhalt im Prozessorcache ist ungültig, ein Zugriff erzeugt einen
Cache-Miss. Die Daten müssen neu aus dem RAM geladen werden.
Owner
Ähnlich wie Modified mit dem Unterschied, dass es nicht nur eine, sondern
mehrere Cache-Kopien gibt, die aktualisiert werden müssen.
Wie die NUMA-Architektur
aufgebaut ist
Seit der Nehalem-Generation hat Intel mehrstufige NUMA-Strukturen
bis hinab zu SMT integriert, um die Lokalität von Daten optimal nutzen
zu können.
System
NUMA Node 0 NUMA Node 1
Sockel 0 Sockel 1 Sockel 0 Sockel 1
Domain
Gruppe
CPU
NUMA-
Domaine
SMP-
Domainen
HT-
Domainen
SMP-Systeme haben hierfür
ein sogenanntes Cache-Kohärenz-Protokoll,
welches für die
Korrektheit der Daten sorgt.
Das traditionelle Protokoll dafür
ist das sogenannte MESI-Protokoll.
Jeder der Buchstaben steht
hierbei für einen bestimmten
Zustand einer Cache-Line (siehe
Extrakasten links). Die Erhaltung
der Korrektheit der Daten
kostet jedoch ein klein wenig
Performance, was je nach Umsetzung
des Protokolls unterschiedlich
gravierend ausfallen
kann.
Cache-Protokolle
Eine Erweiterung des ME-
SI-Protokolls stellt das MOE-
SI-Protokoll dar. Es ist zum ME-
SI-Protokoll voll kompatibel,
kennt jedoch den zusätzlichen
Status „Owner“. Dieser zeigt,
in welchem Cache welches
Prozessors sich die Daten befinden.
Somit können andere
Prozessoren diese bei Bedarf
aus dem Cache anfordern und
sparen sich den Hauptspeicherzugriff.
MOESI-Funktion
im Detail
Hierbei passiert Folgendes:
Stellt CPU 1 einen Read-Request
auf einen bestimmten
Speicherbereich, so wird dieser
in der Regel direkt aus dem Arbeitsspeicher
in den Cache der
CPU geladen. Merkt die interne
Logik jedoch, dass eine weitere
CPU genau diesen Speicherbereich
bereits im Cache hat,
so wird der Read-Request vom
langsamen Arbeitsspeicher auf
den schnellen Cache der betreffenden
CPU umgeleitet.
Somit werden massiv Taktzyklen
eingespart, die beim Zugriff
auf den im Vergleich zum Cache
um den Faktor 100 langsameren
Arbeitsspeicher mit Nichtstun
verbracht worden wären.
Weiterhin profitiert auch der
Speicherbus von dieser Taktik,
da weniger Zugriffe auf den
Speicherbus stattfinden und er
somit für andere Aufgaben verfügbar
ist.
ccNUMA
Was bei zwei Kernen bzw. Prozessoren
noch überschaubar
erscheint, gerät bei acht Kernen
bzw. Prozessoren zu einem
aufwendigen und bremsenden
Durcheinander. Ab einer
gewissen Komplexität ist das
System hauptsächlich damit beschäftigt,
auf Cache-Abgleiche
zu warten. Ein Ausweg ist das
ccNUMA-Modell, in dem es
einerseits für das Betriebssystem
zwar einen gemeinsamen
Speicherbereich gibt, andererseits
aber versucht wird, Daten
möglichst lokal an einem Node
zu halten, um Node-Hops zu minimieren
und Kohärenz-Overhead
damit schon im Keim zu
ersticken.
Software
Vor allem aber sind die Software-Entwickler
gefragt. Diese
müssen die Programmstrukturen
so gestalten, dass entweder
mehrere Threads oder Prozesse
unabhängig voneinander
arbeiten – wie es zum Beispiel
bei den BOINC-Distribu ted-
Computing-Projekten der Fall
ist, wo auf einem n-Kern-System
einfach n Prozesse gestartet
werden, die an n verschiedenen
Datensätzen arbeiten. Effektiv
arbeitet auch der Cinebench,
wo an einem Datensatz gerechnet
wird, der in n Teile zerlegt
wird, die unabhängig berechnet
werden können. Nur so lässt
sich das „Zuständigkeitsgerangel“
unter den Prozessoren und
Caches zuverlässig vermeiden.
30 So funktioniert ein PC
Prozessor
Ob MMX, 3DNow oder
SSE; all diese Begriffe,
die aus dem Wortschatz
eines PC-Enthusiasten
nicht mehr wegzudenken sind,
haben eines gemeinsam: Es sind
Versuche der Prozessorhersteller,
die Unzulänglichkeiten der
ursprünglichen x86-Architektur
zu lindern.
Architektur-Defizite
Im Gegensatz etwa zu den
CPUs der Amiga-Rechner in
den 80er-Jahren waren der Intel
8086 und seine Nachfolger
nie dafür gedacht, 3D-Spiele auf
den Bildschirm zu zaubern oder
wie die Apple- bzw. Alpha-Prozessoren
komplexe Grafikberechnungen
in Echtzeit durchzuführen
und mit Vektoren im
dreidimensionalen Raum zu
hantieren.
Dass es im Endeffekt anders
gekommen ist, verdankt der PC
vor allem seiner weiten Verbreitung,
findigen Programmierern,
die es verstanden haben, mit
intelligenter Programmierung
beispielsweise auch Rennsimulationen
286-tauglich zu
machen, sowie etlichen Hardware-Entwicklungen
in diese
Richtung (3D-Add-on-Karten,
MPEG-Karten, etc).
Aufgrund seiner nur bedingt
tauglichen Konzeption suchten
die Ingenieure bei Intel und
AMD früh nach einer Möglichkeit,
dem PC-Prozessor weitere
Features mit auf den Weg zu geben,
ohne jedoch zu bestehender
Hard- und Software inkompatibel
zu werden.
So funktionieren
x86-Erweiterungen
MMX
Den Anfang machte Intel
1996 mit dem Pentium MMX.
Die MMX-Unit war die erste
SIMD-Einheit in einem x86-Prozessor.
Dieses Rechenwerk kann
mit einer Instruktion mehrere
Daten miteinander verarbeiten
(SIMD = Single Instruction,
Multiple Data). Dazu spendierte
man der CPU acht zusätzliche
Register namens MM0 bis MM7,
welche den neuen Datentyp
„Packed“ aufnehmen konnten.
Diese Register konnte man nun
mit verschiedenen Packed-Varianten
füllen. Zwei 32-Bit-Zahlen,
vier 16-Bit-Zahlen oder acht
8-Bit-Zahlen. Addiert man nun
beispielsweise MM0 mit MM1
(oder führt eine beliebige Rechenoperation
aus), so hat man
mit einer Instruktion im Idealfall
acht Zahlen miteinander
verrechnet statt nur eine mit
dem herkömmlichen Design.
3DNow und SSE
Bald jedoch stellte sich heraus,
dass SIMD zwar eine gute Idee
war, MMX im Speziellen sie
aber am Thema vorbei in die
Praxis umsetzte. Die MMX-Unit
war eine reine Ganzzahl-Einheit
und ließ damit die nötige Genauigkeit
bei Koordinaten- und
Grafikberechnungen vermissen.
Es musste eine Einheit her,
die auch Fließkomma-Berechnungen
anstellen konnte.
Das Ergebnis waren 3DNow
(AMD) und SSE (Intel); SSE hieß
zunächst noch KNI – als Abkürzung
für „Katmai New Instructions“.
Bis heute werden die
Befehlssatz-Erweiterungen neuer
CPUs bei Intel nach diesem
Schema abgekürzt. Die jüngst
erschiene Haswell-Architektur
Die erste Befehlssatz-Erweiterung in der x86-Welt brachte Intels
Pentium MMX – bis heute weiß niemand, wofür MMX eigentlich steht,
für „Multimedia Extensions“ jedenfalls nicht, wie Intel stets bekräftigte.
Ein aktueller
Prozessor verfügt
über ein
gutes Dutzend
Erweiterungen
des ursprünglichen
Befehlssatzes.
Je
besser diese
genutzt werden,
desto größer der
Leistungs gewinn.
Eine Erweiterung des Befehlssatzes gehört mittlerweile zu jeder neuen
CPU-Generation. Auch in Zukunft plant Intel neue „Extensions“.
Bild: Intel
So funktioniert ein PC 31
Prozessor
Bild: Intel
Wie SSE-Register
aufgebaut sind
SSE erhöht die Rechenleistung drastisch: Die zusätzlichen Register
sind „breiter“, was bedeutet, dass sie mehr Bits aufnehmen und verarbeiten
können. So können entweder sehr große/lange Zahlen (beispielsweise
mit vielen Nachkommastellen) oder mehrere kurze Zahlen
in einem Schritt verrechnet werden.
SSE-Register
Mit SSE ist es möglich, bis zu 16 8-Bit-Zahlen in einem Aufwasch miteinander
zu verrechnen.
127 63 0
0 5 0 2 6 1 6 0 9 0 4 7 8 2 1 7
+ +
9 1 2 6 1 5 0 6 0 7 1 0 1 7 1 1
9 6 2 8 7 6 6 6 9 7 5 7 9 9 2 8
SSE-2-Register
Entscheidende Innovation von SSE 2 war die Verarbeitung von
64-Bit-Double-Precision-Floatzahlen.
addpd, xmm1, xmm2
127 63 0
- 0.3 7.2 xmm1
+
- 1.2 2.1 xmm2
=
- 1.5 9.3 xmm1
xmm1
n Quell-/Ziel-Register
n Quelle 2
n Überschriebenes
Register
xmm2
xmm1
SSE-4.2-Befehle adressierten vor allem die Stringverarbeitung. Sofern
der Programmierer bzw. Compiler sie nutzt, beschleunigen diese das
Parsing von zum Beispiel XML-Dateien drastisch.
bringt beispielsweise die Erweiterung
HSI mit („Haswell New
Instructions“).
SSE hatte den Vorteil, auf einen
Satz von 128 Bit breiten
Datenregistern zurückgreifen
zu können, während 3DNow
auf 64-Bit-Größe beschränkt
war. Damit konnte man bei SSE
zum Beispiel vier Single-Precision-Floatzahlen
gleichzeitig verrechnen,
während mit 3DNow
nur zwei möglich waren. Unter
anderem deshalb hat sich SSE
letztlich durchgesetzt.
Erweiterung SSE 2
Mit SSE kam die Entwicklung
von Befehlssatz-Erweiterungen
erst richtig in Schwung.
Mit dem Pentium 4 führte Intel
den Nachfolger SSE 2 ein.
SSE 2 ermöglichte es nun auch,
Doule-Precision-Floatzahlen,
also Fließkommazahlen mit
64-Bit-Genauigkeit, zu berechnen,
während SSE und 3DNow
hier auf 32-Bit-Zahlen beschränkt
waren. Bei der Verdoppelung
der Datenregister-Breite
blieb es jedoch nicht. Zusätzlich
spendierte Intel 144 neue Befehle,
was die Mächtigkeit und
die Bandbreite an möglichen
Einsatzgebieten deutlich erhöhte.
Gerade was die Berechnung
von Videomaterial betrifft, bietet
SSE 2 dem Programmierer einige
Werkzeuge „in Hardware“
an, die entweder das Encoding
beschleunigen können oder
die Wiedergabe mit niedrigerer
CPU-Last möglich machen.
Die Nachfolger:
SSE 3, SSSE 3, SSE 4
Deutlich weniger spektakulär
war die Einführung des
SSE-3-Befehlssatzes, einer erneuten
Erweiterung der SSE-Basis.
SSE 3 erweiterte den SSE
2-Befehlssatz um zusätzliche
13 Instruktionen zur Wandlung
von Gleitpunktzahlen
in Ganzzahlen, für komplexe
Arithmetik, zur Video-Kodierung,
zur Unterstützung der
Grafik-Aufbereitung und zur
Thread-Kommunikation bei
den Intel-Hyper-Threading-Prozessoren.
Erstmals zum Einsatz
kam SSE 3 beim Intel Pentium 4
Prescott (PNI: Prescott New Instructions).
SSSE 3 (Supplemental
Streaming SIMD Extensions
3) bezeichnet die mit Intels
Core-Architektur eingeführten
Erweiterungen des SSE-3-Befehlssatzes.
Während SSSE 3 mit 32 neuen
Befehlen nur eine geringfügige
Erweiterung zu SSE 3 darstellt,
ist SSE 4 mit 50 neuen
Opcodes eine substanzielle Verbesserung.
SSE 4 wurde mit den
45-nm-Prozessoren beginnend
ab dem Penryn eingesetzt. SSE 4
besteht aus zwei „Subsets“, nämlich
SSE 4.1 (ab Penryn) und SSE
4.2 (ab Nehalem). SSE 4a dagegen
ist eine AMD-spezifische
Erweiterung, die ab dem Barcelona-Kern
zum Einsatz kommt.
AES, AVX und AVX 2
Intels i5-Modelle auf Clarkdale-Basis,
die Gulftown-Sechskerner
und alle i5-/i7-CPUs ab
der Sandy-Bridge-Architektur
beherrschen den „Advanced
Encryption Standard“ (AES) in
Hardware. Die Erweiterung umfasst
sieben Instruktionen, welche
kryptografische Operationen
beschleunigen. Truecrypt
unterstützt AES und kann im
Ideal fall bis zu viermal schneller
arbeiten. Meist limitieren
aber andere Komponenten,
etwa die Festplatte.
Statt SSE 5 hieß die nächste Befehlssatz-Erweiterung
bei Intel
AVX. Nach den „Streaming SIMD
32 So funktioniert ein PC
Prozessor
Extensions“ kommen nun also
„Advanced Vector Extensions“
(AVX) zum Einsatz. Die neuen
Instruktionen verdoppeln die
Vektorgröße und Registerbreite
von 128 auf 256 Bit und erlauben
damit in der Theorie acht
32-Bit-Gleitkomma-Operationen
auf einmal oder alternativ
vier Operationen mit doppelter
Genauigkeit (64 Bit). AVX wurde
erstmals mit der Sandy-Bridge-Architektur
eingeführt. AVX
kann bei Microsoft erst mit
dem Betriebssystem Windows
7 ab SP1 oder höher genutzt
werden.
Die vorerst letzte Erweiterung
heißt AVX 2 und wurde mit
den Haswell-Prozessoren 2013
eingeführt. Die AVX-2-Befehle
ermöglichen unter anderem
schnellere, gezielte Manipulationen
und Abfragen von
einzelnen Bits in einem längeren
String. Intel verspricht die
Beschleunigung von diversen
Multimediaanwendungen, insbesondere
Spielen, Audio- und
Video-Bearbeitung.
FMA 4, FMA 3, XOP
Bei allen Erweiterungen hatte
AMD das Problem, mit seinen
x86-Prozessoren kompatibel
zu bleiben, gleichzeitig aber
auch Eigenentwicklungen unterzubringen.
So unterstützen
aktuelle AMD-CPUs nicht nur
SSE4.1, SSE4.2, AVX (Advanced
Vector Extensions) sowie hardwareseitig
AES; AMD legt noch
FMA4 und XOP obendrauf.
„Fused-Multiply-Add“ sorgt für
eine genauere und schnellere
Berechnung von Instruktionen,
dies ist für High-Performance-Computing
interessant, aber
auch Spiele können profitieren.
XOP ist aus AMDs geplanter,
aber letztlich erfolgloser
SSE-5-Implementierung entstanden
und bietet wie AVX
Befehle zur Beschleunigung
von Vektor-Operationen. Während
FMA 4 und XOP mit dem
Bulldozer debütierten, erhält
Piledriver FMA 3, welches die
Kompatibilität mit Intel-Prozessoren
sicherstellt. Die kleinere
Zahl („3“ statt „4“) hat ihre Ursache
in der Art der Befehlsverarbeitung
und nichts mit einer
Versionierung zu tun.
Befehlssatzerweiterungen
heute
Die Erweiterungen des ursprünglichen
x86-Befehlssatzes
sind eine Erfolgsstory. Mit jeder
neuen Version wurden Schwächen
und Unzulänglichkeiten
der ursprünglichen x86-Architektur
beseitigt. Zwar dauert es
jeweils einige Jahre, bis die Verbreitung
der CPUs so hoch ist,
dass sich die Entwickler trauen,
ihre Software entsprechend
zu compilieren; doch der Leistungsgewinn
ist hoch und so ist
zum Beispiel Far Cry 2 von 2007
schon lange nicht mehr das einzige
Spiel, welches SSE 2 zwingend
voraussetzt.
Abseits von x86
Außerhalb des x86-Universums
hören die Erweiterungen auf die
Namen Altivec, VMX, Velocity
Engine (Motorola-CPUs in den
alten Apple-Power-PCs) oder
VMX128 in IBMs Xenon-Power-
PC-CPU, in der Xbox 360 oder
dem IBM Cell in der Playstation
3. Altivec galt seinen Pendants
aus der Intelwelt lange Zeit als
deutlich überlegen. Bis zu acht
Datenpakete lassen sich hier
mit einer Instruktion verarbeiten.
Die Mächtigkeit des Befehlssatzes
galt als so hoch, dass
es schwierig war, den CPU-Kern
schnell genug mit Daten zu versorgen.
Mit synthetischen Benchmarks ist es möglich, den Einfluss von SIMD-
Befehlen auf die Leistung zu testen und zu vergleichen.
AMD
FMA4
MMX, SSE, SSE2,
SSE3, SSSE3,
SSE4, AVX, AES
FMA3, CLMUL
SSE4a
XOP
CVT16
AVX2
Intel
Transactional
Memory
RdRand
Mehr als ein Dutzend Erweiterungen des Befehlssatzes sind in aktuellen
Prozessoren implementiert. Leider sind nicht alle kompatibel, nur die
Schnittmenge (Bildmitte) wird sowohl von AMD als auch Intel unterstützt.
Befehlssatz-Erweiterungen werden nicht nur bei AMD und Intel verwendet
– auch IBM setzt beim Cell-Prozessor (Bild) auf spezielle Befehle.
Bild: IBM
So funktioniert ein PC 33
Prozessor
Bild: Intel
Bild: Intel Bild: Intel
So funktionieren
Grafik- und Spezialkerne
Von links nach rechts: Nehalem, Westmere und
Sandy Bridge. Gut zu sehen ist, wie der Grafikkern
(Westmere, Mitte) für eine „Streckung“ des
Dies bei Sandy Bridge sorgt.
Beim Haswell „ULT“ packt Intel einen Dualcore
samt GT3-Grafikkern (links) mit dem PCH (rechts)
auf ein Package, das komplette Multi Chip
Module (MCM) kommt auf 15 Watt TDP.
Intel Clarkdale: Der in 45-Nanometer-Technik
gefertigte Grafikkern
(links) ist deutlich größer als
die 32-nm-CPU (rechts).
Die Taktfrequenz-Barriere,
die bei etwa vier
bis fünf Gigahertz liegt,
zwang die CPU-Hersteller schon
zur Jahrtausendwende, über
alternative Wege zur Leistungssteigerung
nachzudenken.
Kern-Barriere
Nachdem die Steigerung der
CPU-Kerne ebenfalls an ihre
Grenzen stößt (siehe „Amdahl‘s
Law“), geht der Trend zu Spezialkernen
und der Integration
von (Mainboard-)Komponenten
in den Prozessor. Den Anfang
machte ein Grafikkern, der
bis dato nur in der Northbridge
mancher Mainboards zu finden
war. Eine solche integrierte
Grafik eignete sich in der Regel
nicht für anspruchsvolle Spiele,
ermöglichte aber zumindest das
Arbeiten mit Office-Programmen
ohne separate Grafikkarte.
Integrations-Stufen
Intels Clarkdale-Kern brachte
im Jahr 2010 erstmals einen
auf dem Prozessor integrierten
Grafikkern. Die Integration beschränkte
sich jedoch lediglich
darauf, dass CPU und GPU auf
einem gemeinsamen Trägersubstrat
untergebracht waren.
Nicht einmal der Herstellungsprozess
war identisch; während
der Prozessor schon im feineren
32-Nanometer-Prozess gefertigt
wurde, kam beim Grafikkern
noch das ältere 45-Nanometer-Verfahren
zum Einsatz – der
Grafikkern war daher auch flächenmäßig
deutlich größer als
der CPU-Doppelkern.
Neben den niedrigeren Herstellungskosten
war es vor allem
der gesunkende Energiebedarf,
der für den Einsatz eines solchen
Chips sprach. Dennoch
konnte sich Clarkdale nicht
recht durchsetzen, was vielleicht
auch an seinem früh vorgestellten
Nachfolger lag.
Die-Level-Integration
Bei der Sandy-Bridge-Architektur,
die ein Jahr später erschien,
war die Grafikeinheit bereits in
das CPU-Silizium integriert. Sie
kommuniziert per Ringbus-Controller
mit den CPU-Kernen
sowie dem gemeinsam genutzten
Last-Level-Cache und profitiert
sogar vom Turbo-Modus.
Neben abermals gesunkenen
Herstellungskosten war es vor
allem die deutliche Leistungssteigerung,
welche diese Form
der integrierten Grafik populär
machte. Mit Einschränkungen
waren sogar 3D-Spiele ruckelfrei
zockbar.
AMD verfolgte einen ähnlichen
Ansatz und packte den
Grafikkern zusammen mit den
CPU-Kernen auf ein gemeinsames
Siliziumplättchen („Die“).
Bei der „Fusion“-Architektur
(Kerne Llano, Bobcat und andere)
waren beide Teile des Chips
zunächst im 45-Nanometer-Verfahren
gefertigt, einen gemeinsamen
L3-Cache gab es aber
nicht – die Speicherzugriffe liefen
zunächst getrennt ab. Erst
mit den Folge-Architekturen
wurde auch ein gemeinsamer
Speicherzugriff ermöglicht.
GPU-Computing
Auch aus einem anderen Grund
ist ein integrierter Grafikkern
interessant: Dieser kann unter
Umständen wesentlich schneller
rechnen als ein allgemeiner
CPU-Kern. Die Idee hinter
34 So funktioniert ein PC
Prozessor
„GPU-Computing“ und dessen
Schlagwortvorläufer GPGPU
(„General Purpose Computation
on Graphics Processing
Unit“) ist es, die vielen parallel
arbeitenden Rechenwerke in
modernen Grafikprozessoren
gewinnbringend auch außerhalb
der Grafikberechnung
einzusetzen. Aufgrund ihrer
großen Anzahl können sie bei
den entsprechenden Problemstellungen
wesentlich schneller
arbeiten als herkömmliche
Hauptprozessoren.
Erstmals sinnvoll möglich wurde
dieser Verwendungszeck mit
Direct-X-9-Chips und eine der
ersten verbreiteten Anwendungen
war der Folding@Home-Client
für AMDs X1000-Grafikchips.
Mittlerweile gibt es eine
ganze Reihe von Anwendungen,
welche die Ausführungseinheiten
(„Execution Units“)
eines Grafikchips nutzen können,
darunter unter anderem
Photoshop.
Parallele Nutzung
Den Grafikkern gibt es bei fast
jedem aktuellen Prozessor praktisch
zum Nulltarif dazu. Da
somit viele PCs über zwei Grafikbausteine
verfügen, liegt es
nahe, diese auch gemeinsam zu
nutzen, zum Beispiel um mehrere
Monitore an einem Rechner
zu betreiben.
Lucids Virtu-Technik geht dabei
noch einen Schritt weiter:
Bei den unterstützten CPUs
werden die Aufgaben so verteilt,
dass nur die aufwendigen
Berechnungen von der (energiehungrigen)
externen Grafikkarte
vorgenommen werden
– alle übrigen übernimmt der
vergleichsweise sparsame Grafikkern
im Prozessor, was die
Leistungsaufnahme senkt.
Verschmelzung
der Kerne
Die Grafikintegration hat jedoch
weitaus mehr Potenzial.
AMD beispielsweise strebt eine
heterogene Architektur an,
in der CPU- und GPU-Befehle
gleichsam gemischt werden.
Ein entsprechend compilierter
Quellcode soll die Ausführungseinheiten
optimal ausnutzen,
was die Geschwindigkeit in Extremfällen
um den Faktor zehn
erhöhen könnte. Schon 2014
will AMD entsprechende Produkte
auf den Markt bringen.
Spezialkerne
Die Verschmelzung von CPU
und GPU ist jedoch nur ein
erster Schritt. AMD und Intel
arbeiten daran, weitere Spezialfunktionen
und -kerne zu
integrieren. Anfang 2012 wurden
Gerüchte laut, nach denen
AMD einen ARM-Kern in
manche seiner kommenden
Prozessoren einbauen könnte;
eine solche heterogene Systemarchitektur
(HSA) soll dann die
Stärken komplett unterschiedlicher
Rechnerarchitekturen
miteinander vereinen. Generell
scheint der Trend zum „System
on a chip“ zu gehen, wobei Prozessorbauteile
und -kerne gezielt
für bestimmte Aufgaben
zusammengestellt und produziert
werden.
Grafikeinheit
Integration des Grafikkerns bei Westmere (links) und Sandy Bridge
(rechts): Die Grafikeinheit ist nun integraler Bestandteil des Dies.
Theoretische Rechenleistung im Überblick
SP-GFLOPS gesockelter CPUs oder Chipsätze
700
GFLOPS (Single-Precision)
600
500
400
300
200
100
0
n AMD (GFLOPS)
n Intel (GFLOPS)
2005
Radeon
X1950 XTX
Radeon
HD 3870
Radeon
HD 5670
2006 2007 2008 2009 2010 2011 2012 2013
Bemerkungen: Ausgehend von den Xpress- sowie HD-Grafikeinheiten in älteren Southbridges legte AMD erst
seit 2011 mit den APUs an Rechenleistung zu. Intels frühe GMA-Versuche sind schwachbrüstig, seit 2011 gibt der
Hersteller ebenfalls Gas. Die Iris Pro 5200 (832 GFLOPS) fehlt, da es diese nur in AIOs und Notebooks gibt.
Kern Kern Kern Kern
Gemeinsamer L3-Cache
Memory Controller
Bild: Intel
System
Agent,
Display
Engine &
Speicher-
Controller
Bild: Intel Bild: Intel
So funktioniert ein PC 35
Prozessor
Bild: Intel
Wie der Turbomodus
Anwendungen beschleunigt
Ein Intel-Schaubild verdeutlicht die Funktionsweise von „Turbo Boost“.
In der oberen Reihe ist ein Prozessor dargestellt, der ohne Turbo
auskommen muss. Egal ob ein, zwei oder vier Kerne ausgelastet sind
(blaue Säule), die maximale Taktfrequenz ändert sich nicht.
Anders in der unteren Reihe: Hier wird je nach Auslastung eine oder
mehrere Multiplikatorstufen draufgepackt, hier dargestellt durch ein
orangefarbenes Quadrat. Wird nur ein Kern genutzt, darf dieser bei
diesem Prozessormodell um vier Multiplikatorstufen höher getaktet
werden. Sind alle vier Kerne aktiv, dürfen es immerhin noch zwei Multiplikatorstufen
sein (einer Stufe entsprechen meist 133 MHz, die genaue
Zahl der Stufen variiert je nach Prozessormodell).
AMD brachte 2010 „Turbo Core“ erstmals mit dem Phenom II X6 und
Thuban-Kern. Der Modus wird immer dann aktiv, wenn drei oder mehr
Kerne ruhen. Voraussetzung ist ein aktuelles BIOS.
So funktioniert
der Turbomodus
Der Turbomodus erschien
unter dem Namen
„Turbo Boost“
erstmals 2008, zusammen mit
den Intel-Prozessoren der Nehalem-Generation.
Zu Beginn
verwendete Intel auch die Bezeichnung
„Dynamic Speed
Technology“. AMD integrierte
wenig später eine ähnlich Funktion
in seine Prozessoren, die
dort „Turbo Core“ heißt.
Turbomodi
In der grundsätzlichen Funktionsweise
sind beide Techniken
gleich: Bei Bedarf können
die Prozessoren selbsttätig die
Frequenz einzelner Kerne steigern.
Salopp gesagt, übertaktet
der Prozessor einzelne Kerne
so weit wie es die Kühlung hergibt.
Als Grenze dient hier die thermische
Verlustleistung, kurz:
TDP. Solange der Chip innerhalb
dieses Thermalbudgets
bleibt, darf er etwas schneller
arbeiten; sind etwa nur zwei
von vier Kernen beschäftigt,
legt der Taktgeber für diese
noch ein paar Megahertz drauf.
Dies geschieht über die Regulierung
des Multiplikators,
der gemeinsam mit dem Referenztakt
von üblicherweise 133
MHz den Kerntakt ergibt; bei
einem Core i7-920 beispielsweise
kann der Multiplikator
von 20 auf 21 oder gar 22 steigen,
der Kerntakt damit von
2,67 also auf 2,93 GHz. Je nach
CPU-Modell kann der Takt aber
abweichen.
Turbo in der Praxis
Die sogenannte „Power Control
Unit“, kurz PCU, überwacht in
Echtzeit mithilfe der Temperatursensoren
und der Spannungswandler,
wie viel Strom
die CPU gerade zieht – der Uncore-Bereich
bleibt hierbei jedoch
außen vor.
Die TDP ist nicht nur abhängig
von der CPU-Auslastung, dem
Takt und den Spannungen der
einzelnen Kerne, sondern auch
von deren Temperatur. Wird
die TDP überschritten – etwa
durch (zu) hohe Temperaturen
oder Spannungen –, drosselt
die CPU wieder ihren Takt.
AMDs „Turbocore“ geht unabhängig
von der TDP und der
Temperatur zu Werke: Werden
maximal drei Kerne belastet,
legt beispielsweise ein Phenom
II X6 1055T gleich 500 MHz
obendrauf und taktet mit 3,30
GHz. Hierbei ist egal, ob einer
oder drei Kerne belastet wird.
Es werden immer gleich drei
Kerne mit mehr Spannung versorgt
und hochgetaktet, Intels
„Turboboost“ geht hier differenzierter
zu Werke. So etwas wie
eine PCU gibt es bei AMD nicht
– dies zieht zwei Konsequenzen
nach sich: Die Leistungsaufnahme
steigt teils stark an, dafür
gibt die CPU aber auch immer
Volldampf.
Mit neueren Prozessorgenerationen
kamen in den vergangenen
Jahren auch einige
Nachbesserungen oder neue
Funktionen. Seit der Sandy-Bridge-Generation
verfügen
Intel-Prozessoren über „Turbo
Boost 2.0“, welches es nun auch
erlaubt, den Grafikkern zu übertakten.
Außerdem dürfen nun
auch alle Kerne gleichzeitig höher
getaktet werden.
36 So funktioniert ein PC
Grafikkarten
So funktioniert ein PC 37
Grafikkarte
Die Grafikchips aktueller
Grafikkarten sind
so leistungsfähig, dass
sie nicht mehr nur für
Spiele eingesetzt werden,
sondern immer häufiger
auch für Anwendungen.
Aktuelle High-End-
Grafikkarten sind vor
allem auf schnellen Speicher
ange wiesen; üblich
sind zwei Gi Byte GDDR5-
Speicher mit bis zu drei
GHz Taktfrequenz.
So funktioniert
eine Grafikkarte
Die Grafikkarte ist der
bestimmende Bestandteil
moderner PCs,
wenn es um die Leistungsfähigkeit
für aktuelle 3D-Spiele geht.
Doch wie funktioniert dieses
komplizierte Stück Technik
und was ist die Aufgabe von
Jedi-Geheimeinheiten wie den
ROPs oder der Polymorph-Engine?
Grafikkarten – viel
drauf
Die zweifellos wichtigste Komponente
einer Grafikkarte ist
der Grafikprozessor, auch als
Grafikchip oder kurz GPU, analog
zur CPU, bezeichnet. Dieser
übernimmt sämtliche Berechnungen,
die für die Grafikausgabe
notwendig sind. Unterstützt
wird er von diversen anderen
Bauteilen wie der Platine selbst,
den Spannungswandlern samt
Stromzufuhr und natürlich
dem Grafik- oder auch Videospeicher
(V-RAM). Für eine verständliche
Erklärung der Grafikchip-Funktionen
müssen wir
auch darüber zunächst einige
Worte verlieren.
Die Platine der
Grafikkarte
Das sogenannte Printed Circuit
Board („PCB“), also die Platine,
in der die Leiterbahnen eingelassen
sind, stellt das Mainboard
der Grafikkarte dar. Hierüber
findet der komplette Datenverkehr
ebenso statt wie die Erzeugung
und Regulierung der benötigten
Spannungen für Chip
und Speicher, die Ansteuerung
der Monitoranschlüsse sowie
die Verbindung mehrerer Grafikchips
für SLI- oder Crossfire-Systeme.
Je schneller und damit meist
auch stromhungriger eine Grafikkarte
ist, desto komplizierter
und damit auch teurer fällt
das PCB der Karte aus. Die bis
zu 512 Datenleitungen, mit denen
der Speicher an den Grafikprozessor
angebunden ist, sind
in mehreren Lagen innerhalb
des PCB untergebracht, sodass
High-End-Modelle mitunter 12-
oder gar 14-schichtige Platinen
benötigen, was wiederum die
Kosten bei der Produktion in
die Höhe treibt.
Unter Spannung
Ähnliches wie für das Board
selbst gilt auch für die Spannungsversorgung
bzw. die
VRMs, was im Englischen
für „Voltage Regulator Modules“
steht. Die VRMs wandeln
die Zufuhr aus den 3,3- und
12-Volt-Leitungen des Netzteils
in die nötigen Spannungen um
und werden aus dem PCI-Express-Steckplatz
selbst gespeist,
über den 3,3 und 12 Volt mit insgesamt
maximal 75 Watt laufen.
Zusätzlich gibt es direkte Anschlüsse
an das Netzteil. Die
sechsadrige Variante liefert dabei
ebenfalls 75 Watt; befinden
sich acht Kabel am Steckerschuh,
sind bis zu 150 weitere
Watt möglich. Die Anzahl der
Stromanschlüsse lässt auf den
ungefähren Stromhunger der
Grafikkarte schließen:
z Bis 75 Watt (kein Extrakabel)
z 75 - 150 Watt (1x 6-Pol)
z 150 - 225 Watt
(2x 6- oder 1x 8-Pol)
z 225 - 300 Watt
(1x 6- und 1x 8-Pol)
38 So funktioniert ein PC
Grafikkarte
Je leistungsfähiger der Grafikchip,
desto wichtiger ist eine
gute, das heißt möglichst störungsfreie
Versorgung mit der
von ihm benötigten Spannung.
Diese liegt für aktuelle Grafikchips
in der Regel bei 0,9 bis
1,15 Volt und muss zum Teil
sehr schnell hin- und hergeschaltet
werden, wenn der Grafikchip
zwischen den verschiedenen
Stromsparmodi hin- und
herwechselt.
Auch die hohen Stromstärken
von zum Teil über 100 Ampere
müssen in Sekundenbruchteilen
an die jeweils herrschenden
Lastzustände angepasst werden
können und dabei weite Bereiche
überbrücken. Nicht selten
sind vier- bis zehnphasig ausgelegte
VRMs nötig, spezielle
Übertakterkarten für Overclocking-Fans
setzen auf eine
noch höhere Anzahl an Phasen.
Das treibt direkt und indirekt
über zusätzlich nötige Platinenlänge
die Kosten in die
Höhe
Anschluss gesucht
Über den heute üblichen
PCI-Express-Anschluss gelangen
die Daten zur Grafikkarte.
Der üblicherweise mit 16
parallelen Leitungen verbundene
Grafikkartensteckplatz
(auch als PEG, „PCI-Express for
Graphics“, bezeichnet) kann
gleichzeitig Daten senden und
empfangen und pro Richtung
aktuell bis zu 8 GByte übertragen.
Stehen weniger pa rallele Bahnen
(engl. „Lanes“) zur Verfügung,
sinkt die Transferrate
entsprechend – allerdings reagieren
nur die wenigsten Spiele
mit deutlichen Fps-Verlusten
auf einen Betrieb mit beispielsweise
acht PCI-E-Lanes.
Video-RAM
Im Grafikspeicher werden
(nach Möglichkeit) sämtliche
Daten zwischengelagert,
die zur Anzeige des Bildes nötig
sind. Zwar befinden sich
schnelle Zwischenspeicher
direkt im Grafikprozessor, oft
genug jedoch muss auf Daten
aus dem Hauptspeicher der
Grafikkarte zurückgegriffen
werden.
Für diese Fälle wird der V-RAM
besonders bei High-End-Karten
so schnell wie möglich ausgelegt
und auch über viele parallele
Datenleitungen mit dem
Chip verbunden. Das wiederum
kostet Platz und damit
Geld – wie auch die Speicherchips
selbst. Aktuell sind folgende
Speicherstandards mit
den angegebenen Takt raten gebräuchlich:
z GDDR5 (bis ca. 3.500 MHz)
z GDDR3 (bis ca. 1.250 MHz)
z DDR3 (bis ca. 800 MHz)
z DDR2 (bis ca. 500 MHz)
GDDR4 kam zwischenzeitlich
auf einigen Radeon-Karten zum
Einsatz, konnte sich aber nicht
durchsetzen, da GDDR3-RAM
den Taktnachteil schnell eingeholt
hatte. Günstige Grafikkarten
nutzen oft DDR2- oder
DDR3-Speicher – kommt ein
solches Modell in die engere
Auswahl, achten Sie auf DDR3-
oder GDDR5-Bestückung.
Der Grafikchip
im Detail
Auf der folgenden Doppelseite
stellen wir exemplarisch die
Funktionsweise eines aktuellen
Grafikchips vor und beschreiben
anschaulich, welche
Bedeutung die jeweiligen
Baugruppen für die einzelnen
Aufgaben in Spielen haben.
Worin sich Grafikchip und
Prozessor unterscheiden
Prozessoren werden grundsätzlich mit dem Ziel entwickelt, die unterschiedlichsten
Aufgaben möglichst schnell auszuführen. Die unzähligen
Erweiterungen des ursprünglichen x86-Befehlssatzes sind dafür
ebenso ein Instrument wie die enorm hohe Taktfrequenz von vier Gigahertz
und mehr.
Grafikkarten dagegen arbeiten vergleichsweise langsam – der Takt des
Chips beträgt „nur“ rund ein Gigahertz und die Einsatzgebiete sind eng
gesteckt. Dafür können mehrere hundert Rechenoperationen pro Takt
durchgeführt werden, während es bei Prozessoren gerade mal eine
Handvoll ist.
Grafikchips („GPUs“) und Prozessoren („CPUs“) werden manchmal
auch mit Flugzeugen verglichen. Dabei sollen Prozessoren schnellen
Düsenjets entsprechen, die einen oder zwei Reisende blitzschnell an
einen anderen Ort bringen können. GPUs sind dagegen vergleichbar
mit Passagierflugzeugen, die deutlich länger für die gleiche Strecke
brauchen, dafür aber sehr viel mehr Passagiere gleichzeitig transportieren
können.
Control
Cache
Speicher
CPU
ALU
ALU
ALU
ALU
Speicher
GPU
Grafikkarten wie MSIs Hawk-Reihe
(im Bild: HD 5770 Hawk) verfügen für
besseres Overclocking-Potenzial über
zusätzliche Phasen der Spannungsversorgung.
So funktioniert ein PC 39
Grafikkarte
Beispiel: Verarbeitung eines Tastendrucks
Wie eine Grafikkarte funktioniert
6
5
4
3
2
1
Speicher-Controller
ROP
Shader-Engine + Texture
Rasterizer
Triangle-Setup
Scheduler
Host-Interface
Schnittstelle zum System
(„Host-Interface“)
1
Kein noch so fortschrittlicher Grafikchip kann derzeit ohne
Vorarbeit ein Spiel berechnen. Sämtliche nötigen Daten,
seien es nun Informationen zum weiteren Spielablauf, die
der Hauptprozessor liefert, oder Textur- bzw. Geometriedaten
zur Darstellung auf dem Bildschirm, müssen durch
die Schnittstelle zum Wirtsystem, englisch auch „Host“
genannt. Über diese Schnittstelle kommt auch der vom
Grafikkartentreiber in Maschinensprache übersetzte Kommandostrom,
über den der Grafikkarte mitgeteilt wird, was
als Nächstes zu berechnen ist.
Darin enthalten sind zum Beispiel auch Shader-Programme
für die Pixelbeleuchtung oder Animationsberechnung.
Zurzeit findet die Kommunikation zwischen
Grafikchip und dem restlichen PC über die PCI-Express-2.0-Schnittstelle
statt. Bei voller Bestückung des
Steckplatzes mit 16 Datenbahnen sind darüber 8 GByte
pro Sekunde und Übertragungsrichtung möglich. Zurzeit
stellt das Host-Interface keinen nennenswerten Flaschenhals
dar, solange das Datenaufkommen den Grafikspeicher
nicht überlastet.
PCI-Express
Der Vorarbeiter und Organisator („Scheduler“)
Das Steuerwerk des Chips. Hier werden die anstehenden Aufgaben verwaltet und den einzelnen
Ausführungseinheiten wie Shader-Kernen oder Textureinheiten zugeteilt. Da es bis zum fertigen
Pixel meist Dutzende, wenn nicht gar Hunderte von Arbeitsschritten sind, muss sich der Scheduler
auch darum kümmern, den Fortschritt der Aufgaben zu protokollieren und teilweise abgearbeitete
Befehlsketten neu in die Pipeline einzuspeisen. Das kann zum Beispiel passieren, wenn
im Rahmen eines Direct-X-11-Programms über Geometryshader oder Tessellation zusätzliche
Dreiecke erzeugt worden sind, die danach im Vertexshader-Programm animiert werden müssen
und schließlich von einem Pixelshader mit der endgültigen Farbe versehen werden. Je nach
Hardware fasst der Scheduler die pixelbasierten Aufgaben zu sogenannten Threads zusammen –
Gruppen von Instruktionen, die auf die Shader-, Textur- oder Rastereinheiten aufgeteilt werden. In
anderen Fällen bekommt er diese Gruppierung bereits vom Treiber aufbereitet serviert.
2
40 So funktioniert ein PC
Grafikkarte
Shadereinheiten #1:
Seit der mit der Geforce 8800 GTX/S
eingeläuteten Direct-X-10-Generation
verfügen alle Grafikchips über einheitliche
Shader-Einheiten. Diese können, im Gegensatz
zu DX9- oder älteren Grafikkarten,
jede Art von Shaderprogramm ausführen –
unabhängig von Geometrie-, Vertex- oder
Pixelberechnungen. Der Vorteil liegt auf
der Hand: Der Chip ist flexibler, da immer
alle Einheiten beschäftigt werden können;
ob die Spielszene nun sehr dreiecks- oder
sehr pixellastig ist, spielt keine Rolle.
Im Rahmen der 3D-Berechnungen müssen
die Pixel in spe jetzt allerdings Runden
drehen und die Shadereinheiten mehrfach
durchlaufen. Zum Beispiel …
• für Geometryshader und Tessellation
• für den Vertexshader
• für den Pixelshader
4.1
Shader-Engine #2: Geometrie
Bevor die Pixel Pixel werden, haben sie schon einiges hinter sich. In einem ersten Schritt werden Vertikel eingelesen
und durch die Shadereinheiten im Rahmen der Vertex- und bei Direct X 11 der Hullshaderstufe berechnet
– dabei werden die Koordinaten der Vertikel in das System der 3D-Welt umgewandelt. Außerdem wird, falls
nötig, der Tessellationsfaktor bestimmt, also der Grad der Unterteilung in feinere Geometrie. Diese neuen Vertikel
kommen dann im Falle von Direct-X-11-Tessellation zu der vorgesehenen Hardware und werden dort dem zuvor
festgelegten Wert entsprechend verfeinert.
Als Nächstes werden die Domain- (bei DX11)
und Geometryshaderstufe ausge führt. In
Ersterer wird die endgültige Position jedes
Vertikels berechnet, die auf den Werten des
zuvor durchlaufenen Hullsha ders basiert. In
der Stufe des Geometryshaders wird dabei
Geometrie hinzugefügt oder entfernt – je
nach Vorgabe des Sha derprogramms. Danach
folgt die sogenannte Viewport-Transformation
und Perspektivenkorrektur zur
Darstellung in der 3D-Ansicht. Sollen weitere
Vertex-basierte Operationen ausgeführt
werden, so wird das Vertex-Gitter in einen
Zwischenspeicher geschrieben.
Ohne Tessellation
Mit Tessellation
4.2
Speichercontroller
Diese für die Leistung der Grafik karte
elementare Einheit ist meist in mehrere
Blöcke unterteilt. Sie sorgen dafür, dass
Textur- und Shadereinheiten möglichst
schnell mit Daten versorgt werden.
Eine der wichtigsten Aufgaben der einzelnen
Controller ist es, Speicherzugriffe so
zusammenzufassen, dass möglichst wenig
Verschnitt entsteht und die in der Regel
aus 64 parallelen Datenleitungen bestehende
Anbindung an die Speicherchips
effizient ausgelastet wird.
6
Setup und Rasterisierung
In dieser Stufe der Verarbeitung werden aus dem Vertikelgitter erstmals echte Vielecke, indem die einzelnen
Punkte untereinander verbunden werden. Das sogenannte Edge-Setup errechnet die Kanten der späteren
Polygone. Hier setzt auch die erste Effizienzmaßnahme an: Durch Backface-Culling werden alle Dreiecke aus der
Verarbeitung entfernt, deren Oberfläche vom Spieler weg zeigt und die deshalb nicht sichtbar wären. Der nächste
Schritt ist die Rasterisierung. Darunter versteht man das Erzeugen von Pixeln entsprechend der Bildschirmauflösung.
Der oder die Rasterizer rechnen aus den Kantengleichungen der Primitive nun die Entsprechung in Pixeln
innerhalb der Bildschirmauflösung aus – ist Kantenglättung (Multisampling) aktiv, wird der Bedeckungsfaktor
pro AA-Sample bestimmt, ansonsten einer pro Pixel. In der Regel arbeiten Rasterizer 16 Pixel pro Takt ab; im
Falle des GF10x sind es nur acht, dafür sind dort mehrere Einheiten parallel aktiv. Von hier aus geht es über die
Z-Culling-Einheit weiter. Diese übernimmt auf Pixelebene, was das Backface-Culling auf Dreiecksebene geleistet
hat: Die meisten Pixel, die im endgültigen Bild durch andere verdeckt und daher nicht sichtbar sind, werden von
der weiteren Verarbeitung ausgeschlossen.
3
Raster-Endstufen („ROPs“)
In die passend benannten Raster-Endstufen gelangen die Pixel bei heutigen
Spielen erst kurz vor dem Ende ihrer Reise in Richtung Bildschirm. Die auch
ROPs („Raster Operation Processor“) genannten Einheiten führen für die
Antialiasing-Leistung und bei Schattenberechnungen wichtige Tiefentests durch
und sind für das zum Beispiel bei Vegetationsdarstellung häufig genutzte Alpha-
Blending zuständig.
Ohne Kantenglättung
Mit Kantenglättung
5
Shader-Engine #3: Pixel
4.3
Endlich auf Ebene der Pixel angekommen, werden nun die Pixelshaderprogramme
über die Shadereinheiten ausgeführt. Die dabei zum Einsatz
kommenden Effekte sind vielfältig, zumeist aber mit irgendeiner Art von
Texturen verknüpft. Um die Bereitstellung der Pixel-Tapeten kümmern
sich die Textureinheiten, auch als TMU (vom englischen „Texture Mapping
Unit“) bekannt, die bei heutigen Grafikchips direkt an die Shader-Engines
angeschlossen sind. Bei Nvidias aktuellen GF104/106-Chips zum Beispiel
teilt sich jeder Block von 32 Shader-Einheiten acht TMUs – beim HD 5000
waren es noch 32:4. AMDs Cypress-, Juniper- und Redwood-Chips weisen
ein 20:1-Verhältnis auf, die kleineren Cedar-GPUs der Radeon HD 5450
eines von 10:1. Je mehr dieser Einheiten vorhanden sind und je effizienter
sie arbeiten, desto weniger lang müssen die Shader auf die benötigten
Werte warten, bevor sie weiterarbeiten können.
Kein AF
16:1 AF
So funktioniert ein PC 41
Grafikkarte
Bild: Microsoft
Direct X 11.2 bringt Unterstützung
für Mega-Texturing, das größere und
schönere Texturen ermöglicht
Als eines der ersten Direct-X-11.1-
Spiele gilt Battlefield 4, das im Herbst
2013 erschienen ist.
So funktioniert
Direct 3D 11
Direct 3D 11 ist die bis
heute aktuelle Evolutionsstufe
der für Spieler
interessanten Windows-API.
Wir blicken auf die Techniken
im Einzelnen und erläutern diese
ausführlich.
Direct-X-Evolution
Mit Windows 95 gewann der PC
als Spieleplattform zunehmend
an Bedeutung; vorbei waren die
Jagd nach dem letzten Kilobyte
im „oberen Speicherbereich“,
der Kampf von QEMM und Konsorten
gegen den CD-ROM-Treiber
und die manuelle IRQ-Zuweisung
an die Soundkarte.
Mit Windows sollten Spiele
massentauglich werden. Auch
die aufkommende 3D-Beschleunigung
wollte Microsoft
neben einheitlicher Ansteuerung
von Joysticks, Soundkarten
und Netzwerkkonfiguration
in die Hände der dazu
geschaffenen API Direct X legen.
Das Mittel der Wahl war
Direct 3D – so nannte man den
Teil der API, welcher sich mit
der 3D-Beschleunigung beschäftigt.
Während insbesondere die ersten
vier Versionen noch wie
hilflose Gehversuche des Softwareriesen
auf ungewohntem
Terrain wirkten, wandelte sich
das Bild mit späteren Versionen.
Jede der folgenden Hauptversionen
von Direct X wurde durch
ein größeres Merkmal charakterisiert,
welches der API-Sammlung
hinzugefügt wurde:
z Direct X 6: Multi-Texturing
z Direct X 7: Hardware Transform
and Lighting
z Direct X 8: Pixel- und Vertexshader
1.x
z Direct X 9: Gleitkomma-Genauigkeit
und neue Shader-Versionen
z Direct X 10: Verheinheitlichung
der Shader-Programmierung,
neuer Geometrieshader
Hinzu kam, dass Direct X 10
sowohl mit der Abwärtskompatibilität
brach als auch ausschließlich
unter Windows Vista
verfügbar war. Was Microsoft
zunächst für einen cleveren
Schachzug gehalten haben mag,
um die Verkäufe des neuen
Betriebssys tems anzukurbeln
und Kosten zu sparen, entpuppte
sich im Nachhinein auch aufgrund
der relativ schwachen
Performance der ersten Direct-X-10-Grafikkarten
aus Mittel-
und Einsteigerklasse als
Flop.
Direct X 11 und die
Kompatibilität
Bei Direct 3D 11 ging der Redmonder
Software-Riese daher
anders vor. Die Schnittstelle
war auch unter Vista verfügbar,
nach wie vor aber nicht
für ältere Betriebssysteme wie
Windows XP. Dennoch wurden
mehrere Techlevels definiert,
mit deren Hilfe auch ältere
Hardware in den Genuss
ei niger der Verbesserungen
kommen kann. Andere Neuerungen
dagegen benötigten
zwingend passende Direct-X-11-
Hardware.
Direct X 11 war dank der oben
erwähnten Möglichkeit, Teile
der Fähigkeiten auch mit älterer
Hardware zu nutzen, für
Entwickler deutlich interessan-
42 So funktioniert ein PC
Grafikkarte
ter. Denn während ein Spiel für
Direct X 9 und 10 mit separaten
Renderern ausgestattet werden
musste, die den Aufwand massiv
in die Höhe trieben, konnte
diese Arbeit nun entfallen. Bei
Direct X 11 genügt ein gemeinsames
Grundgerüst, welches
dann über verschiedene interne
Pfade die jeweiligen Hardware-
Generatio nen anspricht.
Direct 3D 11
Die 11er-Version der Direct-3D-
API enthält im Wesentlichen
fünf größere Merkmale, welche
sie von den früheren Versionen
abhebt:
z Compute-Shader
z Tessellation (samt Hullund
Domainshader)
z Verbessertes Multi-Threading
z Dynamic-Shader-Linking
z Erweiterte Texturkompression
Analog zu früheren Direct-X-Versionen
steht auch
für DX11 der Sprung auf eine
neue Stufe an: In der neuen API
wird das Shader-Modell 5.0 unterstützt,
während Direct X 10
noch 4.0 beziehungsweise 4.1
in DX10.1 mitbrachte.
Compute-Shader
Mit den Compute-Shadern folgte
Microsoft dem Trend, die
Rechenleistung der GPU auch
außerhalb typischer Spieleumgebungen
zu nutzen. Nvidia
und Ati hatten bereits zuvor
mit CUDA bzw. Ati Stream entsprechende
Lösungen angeboten
und auch das herstellerunabhängige
Open CL drängte in
diese Nische.
Die Compute-Shader liegen logisch
gesehen außerhalb der
normalen Bearbeitungsreihenfolge
für 3D-Anwendungen,
werden aber von den normalen
Shader-Einheiten berechnet,
da sich der vereinheitlichte
Shaderansatz auch in der tatsächlichen
Hardware durchgesetzt
hat. Compute-Shader sind
eines der Merkmale, für die
auch Versionen in den niedrigeren
Techlevels 4.0 und 4.1
vorgesehen sind. Damit können
auch ältere Radeon-Karten
der HD-4800/4600-Reihe sowie
DX10-fähige Geforce-Karten
auf eine Untermenge der Compute-Shader-Möglichkeiten
zugreifen.
Gemeinsamer
Speicher
Die GPGPU-Shader haben Zugriff
auf einen kleinen, lokalen
Speicher, der Thread Local Storage
(TLS) oder Shared Memory
genannt wird. Dieser erlaubt
den Datenaustausch zwischen
verschiedenen Berechnungen
(Threads) oder auch die gemeinsame
Nutzung der Daten
und kann so eine Menge Bandbreite
einsparen.
Einige Fullscreen-Effekte wie
Blur, Tiefenschärfe („Depth of
Field“) oder das beliebte Ambient
Occlusion („SSAO“) erfordern
oftmals, die Ausgangswerte
für anfallende Berechnungen
mehrfach anzufordern. Sind die
Texturcaches, welche zusätzlich
natürlich auch die entsprechenden
Texel aufnehmen müssen,
zu klein, fällt die x-fache
Bandbreite an.
Über einen Compute-Shader
kann der TLS die benötigten
Eingabewerte aufnehmen und
die Shader-ALUs versorgen,
ohne die Bandbreite für Texturen
oder Bildpuffer zu beeinträchtigen.
Ein Gauß’scher
Weichzeichner benötigt laut
AMD rund 16 Lese-/Schreibope-
CS-basierte Fast-Fourier-Transformation-Berechnungen
erzeugen bei
Direct X 11 das Height-Field für die
Darstellung des Ozeans.
Wie die Zerlegung (Tessellation)
bei DX11 funktioniert
Direct X 11 bringt erstmals die Möglichkeit, Objekte grafikkartenseitig
zu zerlegen. Dabei kommen so genannte Hull- und Domainshader zum
Einsatz, welche die Arbeit des fest verdrahteten Tesselators in die restliche
logische 3D-Pipeline integrieren.
Eingabewerte für den Hullshader:
Kontrollpunkte vom Vertexshader
Hullshader-Ausgabe
2: Kontrollpunkte des
neuen Drahtgitters und
Tessellationsfaktoren
Hullshader
Domainshader
Tesselator
Domainshader-Ausgabe: Ein tesseliertes Vertex
Tesselator-Ausgabe:
Dreieckskoordinaten
Hullshader-Ausgabe
1: Tessellationsfaktoren
pro
Dreieck
Domainshader-Eingabewerte: Koordinaten
für ein Vertex
So funktioniert ein PC 43
Grafikkarte
rationen pro Pixel, während
dasselbe Programm als Compute-Shader
mit einem Viertel davon
auskommt.
Tessellation
Unter dem Begriff Tessellation
versteht man die Zerlegung eines
Körpers. Bereits die normalen
Dreiecke, mit denen die
3D-Pipeline arbeitet, sind also
eine Tessellation der geometrischen
Körper, mit denen Spieleentwickler
arbeiten.
Da neben Texturen und Bildpuffern
auch geometrische Informationen
den besonders in
Spielkonsolen wertvollen Speicherplatz
belegen, arbeitet man
bereits seit langer Zeit an einer
Möglichkeit, diese geometrischen
Informatio nen zu komprimieren.
Nichts anderes ist
die nach den Direct-X-8-Versuchen
mit RT- (Geforce 3) und
N-Patches (Radeon 8500) wiederentdeckte
GPU-Tessellation
in Direct X 11.
Stark vereinfacht gesagt, wird
dabei eine simple geometrische
Struktur zur Grafikkarte
übertragen. Erst dort findet die
Zerlegung in feinere Strukturen
über den vom Entwickler
festgelegten Tessellationsfaktor
statt. Im Vergleich zu einem auf
herkömmliche Weise erzeugten
Drahtgittermodell lässt sich die
benötigte Datenmenge je nach
Tessellationsstufe um den Faktor
sieben bis acht reduzieren.
Zudem sind durch die Einbeziehung
der Tiefenwerte auch dynamische,
aber einfach umzusetzende
Level-of-Detail-Systeme
möglich, die den geometrischen
Detailgrad elegant mit abnehmender
Entfernung zur Betrachterposition
ansteigen lassen.
Auch eine blickrichtungsabhängige
Tessellation ist möglich.
Die Silhouetten – also überall
dort, wo ein nach vorn gerichtetes
an ein nach hinten gerichtetes
Dreieck stößt – erhalten eine
höhere Tessellationsstufe als der
Rest des Körpers.
Tesselator, Hull- und
Domainshader
In der logischen 3D-Pipeline von
Direct X liegt die Tessellationseinheit
hinter dem Vertexshader
und arbeitet an sogenannten
Patches. Diese Felder bestehen
aus den Daten eines Dreiecks
und denen der direkt angrenzenden
Flächen. Der Tesselator
wird als konfigurierbare Fest-
Wie Tessellation eine bessere Bildqualität erzeugt
Seit Direct X 11 können Objekte, die von der CPU bereitgestellt werden, von der Grafikkarte in kleinere Objekte zerlegt werden, was die Detailgenauigkeit
drastisch erhöhen kann. Ein Beispiel soll das zeigen, der Zugewinn an geometrischem Detail mit höherer Tessellationsstufe (32) ist besonders deutlich am
Ohr sichtbar:
Objektrendering ohne Tessellation
In der Basisauflösung des Drahtgitters sind vergleichsweise wenige Polygone
zu sehen – einige Details fallen dadurch eckig und wenig realistisch aus.
Objektrendering mit Tessellation
Im Tessellationslevel 32 steigt die Detaildichte beachtlich an, auch die früheren
„Problemzonen“ sehen nun wesentlich realistischer aus.
44 So funktioniert ein PC
Grafikkarte
funktionseinheit durch die frei
programmierbaren Hull- und
Domainshader unterstützt, welche
dem Tesselator vor- beziehungsweise
nachgelagert sind.
Der Hullshader berechnet die
zusätzlichen Kontrollpunkte
des Patches, wofür Daten der
benachbarten Dreiecke benötigt
werden. Das Rohmaterial
dafür erhält er aus der Vertexshader-Stufe
der Pipeline.
Zudem übergibt er die einzelnen
Tessellationsstufen, welche
er pro Patch errechnet hat,
an den Tesse lator. Dieser führt
die eigentliche Unterteilung
des Vertizes um den vorher bestimmten
Faktor (bis zu einem
Maximum von 64) durch und
reicht die Koordinaten an den
Domainshader weiter. Die so erzeugten
neuen Vertizes können
sowohl im festen Abstand zueinander
liegen als auch einzeln
festgelegt oder per Exponentialfunktion
bestimmt werden.
Der Domainshader schließlich
fügt aus den Daten des Tesselators
und den vom Hullshader
übergebenen Ausgabe-Kontrollpunkten
und Tessellationsstufen
die Daten für jedes einzelne
der neu erzeugten und versetzten
Vertizes zusammen. Die se
können dann wie bisher von
den restlichen Verarbeitungsstufen
genutzt werden.
Multithreading
Multithreading, also die Aufteilung
der Arbeit in mehrere parallele
Stränge, ist nichts Neues
– auch Direct X beherrscht diese
Funktion zur Nutzung multipler
Prozessorkerne bereits seit
geraumer Zeit. Allerdings widmete
sich Microsoft erst mit
Direct X 11 einer vernünftigen
Leistungsoptimierung, nachdem
klar wurde, dass die Leistungsfähigkeit
der Prozessoren
pro Kern nicht in dem Maße
wachsen würde wie in der Vergangenheit.
Der überarbeitete Ressourcen-Manager
erlaubt die gleichzeitige
Arbeit an Geometrie- und
Texturdaten von verschiedenen
Quellen. Sowohl das Anlegen
von Ressourcen wie Vertex-
oder Konstantenpuffern,
Texturen und Shadern als auch
das Laden in den Grafikkartenspeicher
können mit Direct X 11
unsynchronisiert ne ben dem eigentlichen
Rendering erfolgen.
Befehlsketten
Auch bisherige Performance-Bremsen
wie die sogenannten
Draw-Calls können mit
DX11 auf mehrere Kerne verteilt
und parallel vorbereitet
werden – im Extremfall kann
sogar jedes einzelne Objekt einen
eigenen Thread erhalten.
Dazu wird neben dem unmittelbaren
Render-Kontext eine variable
Zahl verzögerter, paralleler
Kontexte angelegt, in denen
die Kommandos nach Möglichkeit
bereits für die GPU umgewandelt
werden.
Im Idealfall braucht der unmittelbare
Kontext später nur noch
mit einem einzigen Kommando
die bereits fertige Befehlskette
auszuführen. Entwickler
müssen lediglich darauf achten,
dass für jeden Arbeitsstrang genug
zu tun ist, da das Anlegen
der Kontexte erst einmal zusätzliche
Arbeit bedeutet. Mit
anderen Worten: Erst muss ein
bisschen investiert werden, bevor
sich ein Effekt einstellt, und
besonders der Entwickler muss
dem neuen Multithreading bei
der Programmierung Rechnung
tragen. Das Direct-X-11-Multithreading
ist eine der Neuerun-
gen, welche auch mit älterer,
sogenannter „Downlevel“-Hardware
möglich ist. Ein geringer
Effekt ist bereits allein mit der
neuen Direct-X-Ver sion möglich,
sofern der Entwickler sein
Spiel entsprechend ausgelegt
hat. Den größeren Teil steuert
die Unterstützung dieser Funktion
im Grafikkartentreiber bei.
Orig
Orig
Orig
Orig
Absoluter Fehler
Texturkompression
für HDR-Formate
„High-Dynamic-Range“
Detaillierte gegenüber adaptiver Tessellation: Letztere (oben) konzentriert
den Dreieckseinsatz auf die Bereiche, wo die größten optischen
Vorteile entstehen.
BC3
BC7
BC3
BC7
Im Vergleich zum alten BC3- verspricht das BC7-Verfahren für Direct
X 11 eine wesentlich authentischere Wiedergabe des originalen
Texturinhaltes.
oder
hoher Kontrastumfang, wofür
das Kürzel HDR steht, beginnt
in der Echtzeit-Computergrafik
bereits bei einer Genauigkeit
von 16 Bit für jeden der vier Pixelbestandteile
Rot, Grün, Blau
und Alpha-Transparenz (RGBA).
So funktioniert ein PC 45
Grafikkarte
Diese Formate verschlingen wesentlich
mehr Speicherplatz
und infolgedessen auch ein
Vielfaches an Bandbreite gegenüber
herkömmlichen 8-Bit-Integer-Formaten.
Zudem ist bei
vielen Berechnungen im Texturenbereich
für HDR-Formate
mehr als ein Taktzyklus fällig.
Doch HDR-Rendering ist
die Grundvoraussetzung für
eine realistische Beleuchtung
in Spielen, die durch den hohen
Kontrastumfang nicht auf billige,
fehleranfällige Tricksereien
angewiesen ist und wie aus einem
Guss wirken kann.
Block-Kompression
Textur- oder – wie es seit DX10
heißt – Block-Kompression soll
hier Abhilfe schaffen. Doch besonders
die großen HDR-Formate
wurden bis dato stiefmütterlich
behandelt. Mit BC6 und
BC7 hat Microsoft bei DX11
zwei neue Kompressionsverfahren
eingeführt, welche die
anfallende Datenmenge bei
16-Bit-Texturen auf ein Drittel
(BC6, 3-Komponenten-Texturen)
bis bestenfalls auf ein
Siebtel (BC7) zusammenstauchen.
Dabei nutzen beide Techniken
ein adaptives Verfahren,
welches für jeden Block mit 16
Pixeln Größe unterschiedlich
komprimieren kann. D3D11 definiert
zugunsten der Qualität
dabei bitgenau, wie stark die
komprimierte von der originalen
Textur abweichen darf.
Da für diese Funktionen Änderungen
an den Textureinheiten
nötig sind, ist BC6- und -7-Komprimierung
allein DX11-Hardware
vorbehalten. Die theoretisch
mögliche Emula tion über
die Shadereinheiten würde
sehr viel Rechenzeit verschlingen
und scheidet damit aus.
Direct X 11.1 und 11.2
Nach der Präsentation von Direct
X 11 im Jahr 2009 folgten
nur noch kleinere Optimierungen.
So brachte Direct X 11.1,
das mit Windows 8 erschien, einige
Detail-Verbesserungen, die
vor allem bei der Tessellation
ansetzen. Als eines der ersten
Spiele soll Battlefield 4 Direct X
11.1 nutzen. Zurzeit unterstützen
nur Radeon-Grafikkarten
das komplette Featureset von
Direct X 11.1, Nvidia-Chips sind
aber zumindest in weiten Teilen
DX11.1-kompatibel.
Mega-Texturing
Die vorerst letzte Ausbaustufe
Direct X 11.2 wird mit Windows
8.1 erscheinen. Eines der wichtigsten
Features, welches Direct
X 11.2 einführt und standardisiert,
nennt sich Tiled Ressources
– auch bekannt als Partially
Resident Textures (AMD) oder
Mega-Texturing (id Software).
Das Problem von Texturen ist
die Größe für entsprechende
Details, was mit viel Speicherverbrauch
sowie einer hohen
Datentransfer-Rate einhergeht,
zumal oft nicht die komplette
Pixeltapete dargestellt, aber
geladen wird. Da die Gesamtmenge
an Texturen den Platz
im Videospeicher bei Weitem
übersteigt, müssen diese abhängig
von der Perspektive gestreamt
werden.
Daher nutzen Entwickler in der
Praxis Software-Tiling, also Kacheln
von Texturen, um diese
Daten anzuliefern, gerade mit
anisotroper Filterung steigt
der Overhead jedoch stark an
und sorgt für Probleme. Mit
Hardware-Tiling und 64 KiByte
pro Kachel fällt dieses Problem
weg, Direct 3D 11.2 gibt dafür
den Standard vor. Entsprechende
Hardware ist aber noch nicht
verfügbar, AMD will aber für
seine HD-7000-Karten einen
entsprechenden Treiber veröffentlichen,
der den vollen Funktionsumfang
von Direct X 11.2
bereitstellt.
Beispiel: Wie die 3D-Pipeline Verarbeitung bei eines DX11 Tastendrucks
aufgebaut ist
Je neuer die DX-Version, desto mehr verschiedene Stufen sind in der logischen Abarbeitungsabfolge integriert. Die Bestandteile mit abgerundeten Kanten
sind programmierbar, die eckigen Einträge fest verdrahtet; der Tessellator in Direct X 9 und 10(.1) ist eine AMD-eigene Erweiterung und in der API
selbst nicht vorgesehen oder direkt ansprechbar.
3D-Pipeline: Direct X 11 3D-Pipeline: Direct X 10(.1) 3D-Pipeline: Direct X 9
Input-Assembler
Input Assembler
Input Assembler
Vertexshader
Tessellator
Tessellator
Hullshader
Tessellator
Domainshader
Geometryshader
Rasterizer
Pixelshader
Stream Output
Data Structure
Compute-
Shader
Memory/Resources
Vertexshader
Geometryshader
Domainshader
Rasterizer
Pixelshader
Stream Output
Memory/Resources
Vertexshader
Rasterizer
Pixelshader
Output Merger
Output Merger
Output Merger
46 So funktioniert ein PC
Grafikkarte
Wie Spiele Direct X 11 nutzen und damit schöner aussehen
Ohne DX11-Schatten
Mit DX11-Schatten
Stalker: Call of Pripyat
Die Direct-X-11-Version von Stalker: Call of Pripyat stellt die Schatten realistischer dar: Statt durchgehend harten oder weichen Schattenkanten variieren
diese abhängig von der Entfernung des Schatten werfenden Objektes. Je näher sich der Schatten am Objekt befindet, desto schärfer sind die Kanten, je
weiter weg, desto weicher werden diese – wie im echten Leben.
Ohne Tessellation
Mit Tessellation
Colin McRae Dirt 2
Das Rennspiel Colin McRae Dirt 2 nutzt unter anderem das Direct-X-11-Feature Hardware Tessellation, um Objekte wie diese Fahne detaillierter darzustellen.
Hardware Tessellation wird aber auch für besser animierte Zuschauer und für dynamische Wasseroberflächen eingesetzt, die beim Durchfahren
Auswirkungen auf das Fahrverhalten haben.
Ohne HD Ambient Occlusion
Mit HD Ambient Occlusion
Weltraum-Shooter
Dieser Weltraum-Shooter nutzt neben Tessellation für Charaktere und Umgebungen High Definition Ambient Occlusion, welches eine realistischere
Beleuchtung respektive Schattierung ermöglicht. Hierbei werden Vertiefungen in der Oberflächen-Geometrie erkannt und entsprechend abgedunkelt –
wie auch in der Realität.
So funktioniert ein PC 47
Grafikkarte
Bevor 3D-Grafik texturiert wurde, gab es in sehr frühen Spielen reine
Drahtgittermodelle, später dann gefüllte Flächen und schließlich Flatund
Gouraud-Shading
Aus der rohen, aber bereits schattierten 3D-Geometrie (links) werden
durch verschiedene Texturtypen realistisch anmutende Spiel-Charaktere
So funktionieren
Texturen
Die Grafik aktueller Spiele
ist vor allem deswegen
so verblüffend,
weil dutzende mehr oder weniger
aufwendig berechnete Effekte
zum Einsatz kommen. Wie
entstehen die Effekte und wo
stoßen sie an ihre Grenzen?
Texturen
Beginnen wollen wir mit dem
Grund element heutiger 3D-Grafik:
der Textur. Eine Textur, blumig
auch gern als „Pixeltapete“
bezeichnet, ist in ers ter Linie
eine Datei, welche verschiedene
Informationen enthält.
Grundsätzlich wird zwischen
bildgebenden und nicht bildgebenden
Texturen unterschieden.
Die in den Texturen enthaltenen
Informationen können
von einfachen Farbwerten bis
hin zu einer Tabelle mit vorberechneten
Werten (Look-uptable
oder LUT) alle möglichen
Formen haben.
Im Falle bildgebender Texturen
dienen sie jedoch alle nur
der Täuschung des Auges. Mit
Texturen wird nämlich eines
der Hauptaufgabengebiete der
3D-Grafik vorangetrieben: Fälschung.
Bildgebende Texturen
vermitteln Oberflächeneindrücke,
Bump-Mapping jeder Art
erweckt den Anschein zusätzlicher
geometrischer Details,
Schattentexturen täuschen eine
realistische Beleuchtung vor. Je
nach Art der enthaltenen Information
sind Texturen auch unterschiedlich
groß. Maßgeblich
für die Größe ist einerseits die
Auflösung, die Kompression,
die Anzahl der Kanäle und die
Farbtiefe.
Eine bildgebende Textur enthält
in der Regel vier Farb- und einen
Transparenzkanal (Alpha);
je ein Farbkanal stellt eine der
PC-Grundfarben Rot, Grün und
Blau dar. Je größer und genauer
die Informationen wiedergegeben
werden sollen, des to eher
ist auch eine hohe Bittiefe nötig.
Stehen zu wenig Bit pro Farbe
zur Verfügung, entstehen stufige
anstelle sanfter Farbverläufe.
Aktueller Standard sind 32 Bit –
8 Bit pro Kanal –, während für
High-Dynamic-Range-Rendering
in der Regel 16 Bit pro Kanal
anfallen.
Wie funktioniert
Texturierung?
Texturierung ist eine sehr aufwendige
Angelegenheit. Belegt
ein Spiel den rundlichen Kopf
eines 3D-Charakters mit einer
flachen Textur, so muss zuerst
die Verzerrung der einzelnen
Texturpunkte berechnet werden
– im Fachjargon heißt das,
die Texturkoordinaten müssen
in den Screenspace transformiert
werden. Dies ist der erste
Rechenschritt. Neben den
weiteren fälligen Gleitkommaberechnungen
sind zusätzlich
etliche aufwendige Speicherzugriffe
nötig, welche allerdings
durch Cache-Speicher zum Teil
aufgefangen werden.
Liegen die Daten dann vor, müssen
sie miteinander verrechnet
werden. Das kostet zusätzliche
Rechenzeit. Für all dies sind jedoch
spezielle Schaltungen im
Grafikchip integriert, welche
auf genau diese Operatio nen
spezialisiert sind und diese sehr
schnell, meist in einem Taktzyklus,
ausführen können.
48 So funktioniert ein PC
Grafikkarte
Für aufwendigere Filter (trilinear
oder anisotrop) sind
mehrere Durchläufe der Textureinheit
nötig, ebenso für Texturen,
welche über das normale
32-Bit-Format hinausgehen. Um
zusätzlich Speicherbandbreite
zu sparen, liegen viele Texturen
im komprimierten Format vor,
welches erst zur Laufzeit in den
Textureinheiten entpackt und
verarbeitet wird. Dadurch kann
bei nur geringem visuellen Verlust
die nötige Bandbreite oft
um 50 bis 75 Prozent reduziert
werden – oder die Texturauflösung
entsprechend erhöht.
Single- und
Multi-Texturing
Grundlegende Texturierung
von 3D-Objekten erfordert eine
sogenannte Base-Map, die Basistextur.
Diese ist in aller Regel
von der bildgebenden Abteilung
und beinhaltet zum
Beispiel ein Gesicht oder ein typisches
Materialmuster wie das
von Holz. Tatsächlich begnügten
sich die ersten 3D-Spiele
mit nur einer Texturschicht.
Mit der Voodoo 2 hielt dann
auch Multi-Texturing in Spielen
Einzug. Mit einer zweiten Textur
ist es zum Beispiel möglich,
eine Detailschicht zur Base-Map
hinzuzufügen oder mittels
Light-Map einen Lichtschein
zu simulieren, ohne tatsächlich
eine echte, dynamisch berechnete
Lichtquelle in das Spiel zu
integrieren (Beispiel: brennende
Fackeln).
Environment-
Mapping
Weitere Texturschichten können
zum Beispiel einen Glanz-,
Spiegel- oder auch Transparenzeffekt
erzeugen. Ein Anwendungsfall
ist das (Cube-)
Environment-Mapping. Dabei
wird ein Reflexionseffekt erzeugt,
der die Umgebung widerspiegelt
– besonders beliebt
bei Auto rennspielen. Die dazu
nötigen Daten werden aus den
innen liegenden Texeln eines
virtuellen Texturwürfels (Cube-Map)
gewonnen und perspektivisch
korrigiert mittels
Multi-Texturing mit der eigentlichen
Oberflächentextur des
Objektes verrechnet.
Bump-Mapping
Mittels Bump-Mapping werden
Erhebungen und, wie der Name
andeutet, Beulen (Bumps) in
Oberflächen simuliert. Unter
diesen Sammelbegriff fallen eigentlich
auch aktuelle Techniken
mit eigenständiger Bezeichnung
wie zum Beispiel
Parallax-Occlusion-Mapping.
Natürlich könnte der Spieleentwickler
auch einfach zusätzliche
Dreiecke in der Szene unterbringen,
doch ein ähnlicher
Effekt lässt sich durch die Verwendung
von Bump-Maps erreichen.
Eine grundsätzliche Schwäche
aller Bump-Mapping-Verfahren
sind sehr flache Blickwinkel,
in denen der Betrachter dann
doch merkt, dass eben keine
echte Geometrie vorhanden ist.
Auch sind die virtuellen Kanten,
welche zum Beispiel durch
Parallax-Occlusion-Mapping erzeugt
werden, nicht durch normales
MSAA zu glätten.
Weitere Mapping-
Effekte
Bereits 1998 mit der Voodoo
2 wurde einfaches Emboss-Bump-Mapping
möglich.
Diese Spielart wird mittels einfachen
Multi-Texturings realisiert,
erzielt aber aufgrund der
ungenauen Arbeitsweise nur
mit hohem Aufwand und mehreren
Durchläufen ansprechen-
Wie anisotrop gefilterte
Texturen das Bild schärfen
In diesem Bild erkennen Sie die Wirkungsweise des anisotropen Texturfilters.
Mit höheren Filterstufen (v. l. n. r., trilinear bis anisotrop) bleiben
die Bodentexturen länger scharf.
Bump-Mapping
Parallax-Mapping (Offset)
Parallax-Occlusion-Mapping
Von der Seite betrachtet zeigt sich, dass keine Art von Bump-Mapping
echte geometrische Details erzeugen kann.
So funktioniert ein PC 49
Grafikkarte
de Ergebnisse. Einen Schritt
weiter gehen bereits Environment-Mapped-
und Dot-3-Bump-
Mapping. Dot-3-Bump-Mapping
errechnet dynamische und im
Vergleich zur Emboss-Variante
pixelgenaue Beleuchtung
– daher wurde das Verfahren
auch schon sehr früh unter „Pixel-Shading“
eingestuft. Technisch
ist Dot-3-Bump-Mapping
kein Glanzpunkt mehr und
mittlerweile praktisch komplett
aus dem Spielealltag verschwunden.
Normal-Mapping
Im Gegensatz zur Höhenspeicherung
bei klassischen Formen
des Bump-Mappings
kommen beim sogenannten
Normal-Mapping in einer dreikanaligen
Textur gespeicherte
Vektoren zum Einsatz, aus denen
die Beleuchtungsinformationen
eines Objektes errechnet
werden können. Der Vorteil
liegt darin, dass die Normalen-Texturen
üblicherweise
während der Modellerstellung
erzeugt werden. Zu diesem
Zeitpunkt wird noch mit zehnbis
hundertfach detaillierteren
Modellen gearbeitet, deren Beleuchtungsgenauigkeit
durch
das Normal-Mapping annähernd
erreicht wird.
Parallax-Mapping
Ein Problem haben die bisher
vorgestellten Bump-Mapping-Verfahren:
Die vorgetäuschten
Unebenheiten haben
keine dritte Dimension und
Wie Bump-Mapping funktioniert
Bump-Mapping
Bump-Mapping
Parallax-Mapping (Offset)
Parallax-Mapping (Offset)
Parallax-Occlusion-Mapping
Parallax-Occlusion-Mapping
Bei diesem Betrachtungswinkel überzeugt Parallax-Occlusion-Mapping.
Auch wird deutlich, dass Kantenglättung bei den hinzugefügten Texturdetails
wirkungslos ist.
In der Draufsicht zeitigt selbst normales Bump-Mapping, das am wenigsten
aufwendige der drei Verfahren, gute optische Resultate.
50 So funktioniert ein PC
Grafikkarte
können sich daher bei der Bewegung
des virtuellen Betrachters
nicht gegeneinander verschieben.
Auch einzelne Teile
der Textur, zum Beispiel einer
Mauer, können sich so nicht
überlagern. Parallax-Mapping
nutzt eine Höhentextur, um die
Texturkoordinaten relativ zur
Betrachter ebene neu zu berechnen
und so den 3D-Effekt zu simulieren.
Einfache Parallax-Mapping-Algorithmen
vernachlässigen dabei,
dass sich aus entsprechenden
Blickwinkeln auch verschiedene
Teile derselben Textur gegenseitig
überlagern können,
und verzerren dadurch das
Bild bei sehr flachen Blickwinkeln
stark. Diesem Umstand
trägt das rechenaufwendige Parallax-Occlusion-Mapping
Rechnung.
In der Regel wird dafür
ein umfangreiches Shader-
3.0-Programm genutzt, welches
einen einfachen Raytracer im
Pixel-Shader simuliert und damit
den Schnittpunkt von Blickrichtung
und virtuellem Raum
berechnet.
Displacement-
Mapping
Wörtlich übersetzt handelt es
sich hierbei um eine Verdrängungs-
oder Verschiebungstextur.
Diese Bezeichnung trifft
den Nagel auf den Kopf: Ein
vorhandenes Drahtgittermodell
wird mittels einer speziellen
Textur, in welcher die
Verschiebungsparameter enthalten
sind, verändert, sodass
aus einer Kugel zum Beispiel
Stacheln wachsen können. Dieses
Verfahren findet seit seiner
(Hardware-)Vorstellung
2002 mit der Matrox Parhelia
immer wieder Erwähnung, ist
aber eigentlich erst mit Direct-
X-10-Hardware auf der Grafikkarte
möglich. Die dortigen
Geometry-Shader durchbrechen
erstmals das 1-in-1-out-
Prinzip und können zusätzliche
Geometrie ohne Zuhilfenahme
der CPU erzeugen.
Prozedurale Texturen
Der Begriff „prozedural“ bezeichnet
allgemein Dinge, die
durch eine „Prozedur“ erzeugt
werden, in diesem Zusammenhang
also eine Textur, welche
im Gegensatz zu klassischen Pixeltapeten
nicht im Entwicklerstudio
vorberechnet wird, aus
einer Fotografie entsteht oder
gar von einem Künstler manuell
angefertigt werden muss,
sondern auf dem PC des Anwenders
erzeugt wird. Prozedurale
Texturen werden anhand
von Algorithmen, also mathematischen
Formeln, errechnet,
welche nur als Programmcode
vorliegen. Da der Speicherplatz
für eine solche Formel deutlich
kleiner als für ein vorberechnetes,
wenn auch komprimiertes
Bild ausfällt, sparen prozedurale
Texturen eine große Menge
Speicherplatz, kosten aber
mehr Rechenleistung, als wenn
alles bereits vorgebacken auf
der Silberscheibe ausgeliefert
würde.
Mit einer prozeduralen Textur
kann beispielsweise die natürlich
vorkommende Maserung
von Holz oder Marmor imitiert
werden. Auch ist es möglich,
andere natürliche Phänomene,
welche nach gewissen Gesetzmäßigkeiten
entstehen, prozedural
zu imitieren – Glas mit
einer Frostschicht, Wasserbewegungen
und so weiter.
Vorteile prozeduraler
Texturen
Es gibt mehrere Gründe, zumindest
stellenweise prozedural er-
Bereits im ersten Unreal-Engine-
Spiel von 1998 zeigte Epic – damals
noch MegaGames – zaghafte Ansätze
prozeduraler Texturen.
In der Demo-Szene sind prozedurale Texturen schon lange sehr beliebt.
Mit kkrieger haben Farbrausch sogar ein ganzes Spiel in 96 kiByte gequetscht.
Das auch über den Xbox-360-Download-Dienst
Live Arcade vertriebene
Puzzle-Spiel Roboblitz profitiert stark
vom gesparten Platz durch prozedurale
Texturen.
So funktioniert ein PC 51
Grafikkarte
Textur-Techniken
Prozedurale Texturen
Prozedurale Texturen werden dynamisch berechnet und sparen dadurch
Platz. Weil sie aber auch viel Rechenleistung brauchen, kommen
sie in Spielen bislang nur sporadisch zum Einsatz
Bunny (Holo)
Head (Holo)
Frozen Glass
Fur
Bunny (Solid)
Head (lit2)
Volumetrische Texturen
Eher im wissenschaftlichen Umfeld sind volumetrische Texturen angesiedelt.
Hier einige Beispiele für 3D-Effekte, die damit umgesetzt
werden können
Psychedelic
Water
zeugte anstelle herkömmlicher
Texturen zu verwenden. Einer
ist die preiswertere Produktion
solcher Texturen, der andere
die Qualität. Viele prozedurale
Texturen aus der Anfangszeit
der 3D-Spiele nutzten aufgrund
der beschränkten Rechenleistung
damaliger PCs eher einfache
mathematische Formeln
und waren dementsprechend
auch leicht an ihrer repetitiven
Struktur und ihrem synthetischen
Aussehen zu erkennen –
das muss für heutige Lösungen
nicht mehr gelten. Zudem bieten
sie aufgrund ihrer Auslieferung
als reine Formel beziehungsweise
Shader-Code sehr
viel mehr Qualität pro Byte, da
stark komprimierende Algorithmen
für bildhafte Texturen
nicht verlustfrei arbeiten und
so beim Entwickler immer ein
Kompromiss zwischen Datenmenge
und Bildqualität gefunden
werden muss.
Flexibel und schlank
Zudem können prozedurale
Texturen auch abhängig von
den Fähigkeiten des Host-Rechners
erzeugt werden: Ab Direct
X 10 können Texturen mit
einer Kantenlänge von bis zu
8.192 Pixeln genutzt werden.
Vor solchen Texturen schrecken
die meisten Spieleentwickler
zurück, da sie nur auf
einem Bruchteil der PCs Verwendung
finden würden. Selbst
Hi-Res-Texturen-Mods sind in
der Regel lediglich mit Texturgrößen
zwischen 2.048 x 2.048
und 4.096 x 4.096 Pixeln ausgestattet.
Neben den geringen Erstellungskosten
kommt die extrem
geringe Datenmenge besonders
unter dem Aspekt der
elektronischen Vertriebswege
zum Tragen: Das Unreal-Engine-3-Spiel
Roboblitz von Naked
Sky Entertainment setzte zum
Beispiel auf viele prozedural erzeugte
Texturen und benötigte
zur Veröffentlichung über
Xbox Live nur rund 50 Megabyte
Speicherplatz. Die PC-Version
belegt aufgrund der umfangreicheren
Ausstattung ca. 186
Megabyte – für ein komplettes
Spiel mit 19 Levels kein besonders
großer Download.
Volumetrische
Texturen
Neben klassischen Oberflächenmustern
mit zwei Dimensionen
(Länge und Breite) gibt es
auch die sogenannten volumetrischen
Vertreter ihrer Zunft.
3D- oder Volumentexturen sind
in Spielen derzeit kaum verbreitet,
sondern werden vorwiegend
in der Forschung oder in
anderen wissenschaftlichen Anwendungsbereichen
eingesetzt.
Dort wird unter anderem die Visualisierung
aus der Computertomographie
mittels volumetrischer
Texturen durchgeführt.
Auch die Erforschung von Ölund
Gasvorkommen wird auf
diese Weise visualisiert.
Ermittelte oder je nach Anwendung
vorberechnete Dichtewerte
dienen als Basis und
werden mithilfe komplexer
Pixel-Shader-Programme (zum
Beispiel Shear-Warp- oder klassischer
Raymarching-Algorithmus)
in beliebiger Tiefe unter
der Oberfläche ausgewertet –
Texturen „kleben“ nicht mehr
nur auf einem Objekt, sondern
durchdringen es quasi.
In Spielen können 3D-Texturen
am ehesten zu Beleuchtungsmodellen
wie SH-Modellen
(Spherical Harmonics) oder für
volumetrische Wolken sowie
Nebel genutzt werden.
52 So funktioniert ein PC
Grafikkarte
Ohne Schatten ist es für
das menschliche Auge
schwierig, die richtigen
räumlichen Zuordnungen
zu treffen: Man weiß beispielsweise
nicht auf Anhieb, ob ein
Spiel-Charakter noch Bodenkontakt
hat oder quasi über den
Dingen steht.
Frühe Schatten
Schon in den Kindertagen der
3D-beschleunigten Welten gab
es daher einfachste Schattendarstellungen
wie einen schwarzen
Fleck unter einem Spiel-Charakter
auf dem Boden. Später wurden
die Techniken zur Schattenerzeugung
fortschrittlicher, es
entstand das Shadow-Mapping.
Shadow-Mapping
Shadow-Mapping ist in der
Spieleentwickler-Szene sehr beliebt,
da die zugrunde liegenden
Algorithmen komplett im
sogenannten Image-Space ausgeführt
werden und für das
Rendering keine Informationen
über die Geometrie der restlichen
Szenerie vorhanden sein
müssen. Prinzipiell arbeitet das
Shadow-Mapping-Verfahren mit
So funktioniert
die Schattenerzeugung
mehreren Schritten – und zwar
für jede Lichtquelle getrennt.
Während der ersten Phase wird
die Kamera versetzt, sodass die
Szene aus der Sicht der Lichtquelle
betrachtet wird. Dann
wird ein einfacher Tiefenpass
gerendert, in welchem geprüft
und festgehalten wird, in welcher
Entfernung zur Lichtquelle
sich die einzelnen Pixel befinden.
Das Ergebnis wird in einer
einkanaligen Textur, der sogenannten
Shadow-Map, abgespeichert.
Dieser Vorgang wird
für jede Lichtquelle wiederholt,
die einen Schatten werfen soll.
Im zweiten Durchgang werden
die Tiefenwerte des zu berechnenden
Pixels und der entsprechende
Wert aus der zuvor
angelegten Shadow-Map verglichen.
Dazu muss zunächst die
Schattentextur in den Eye-Space
transformiert werden, da
diese zuvor aus Sicht der Lichtquelle
angelegt worden ist und
nun aus der Sicht des Spielers
benötigt wird. Hinzu kommen
Tricks und Kniffe wie ein geringfügiger
Polygon-Offset oder
gedimmte Diffuse-Beleuchtung,
um schattierte Objekte nicht zu
flach wirken zu lassen.
Performance
Schattentexturen sind wie andere
Texturen in ihrer Auflösung
begrenzt. Aus Performance-Gründen
fällt diese
Begrenzung meist noch etwas
enger aus als theore tisch
möglich. In weitläufigen Landschaften
sind hochauflösende
Schatten jedoch wichtig,
da die Schatten in großer Entfernung
sonst sehr undeutlich
würden und Präzisionsproble-
me bekämen. Selbst moderne
Spiele wechseln relativ früh
und abrupt auf eine geringere
Shadow-Map-Auflösung und
blenden die Schatten in einiger
Entfernung ganz aus, um die genannten
Probleme zu vermeiden.
Zwar gibt es mit Layeredoder
Variance-Shadow-Mapping
bereits praktikable Ansätze, die
jedoch sehr leistungshungrig
sind.
Closer Filtering
Seit Direct X 10 existiert das
„Percentage Closer Filtering“
genannte Verfahren. Damit können
die TMUs einen Punkt aus
der Schattentextur zurückliefern,
der bereits quasi bilinear
gefiltert und damit an den
Kanten mit einem weichen
Übergang zur Vermeidung von
Shadow-Map-Aliasing ausgestattet
ist.
Wie Shadow-Maps die Qualität bestimmen
Auflösung von Schattentexturen im direkten Vergleich: Während die schattenwerfende Geometrie – hier die Spielfigur mitsamt Ausrüstung wie dem Pfeilköcher
– immer in derselben Auflösung vorliegt, variiert die Auflösung der Schattentextur von 128 über 1.024 bis 2.048 Pixel pro Kante von links nach
rechts. Gut zu erkennen: der hohe Detailgewinn bei den Schatten zwischen 128 und 1.024 Pixeln.
So funktioniert ein PC 53
edle BOOKAZi
iM PReMiuM-FORMAT
Satte 148 Seiten
So machen Sie
Super-Fotos
64 Tipps für
tolle Motive
Alle neuen
iOS-7-Features
Nur € 9,99
WeiTeRe PReMiuM-BOOKAZiNeS iM HANdel:
Auf 164 Seiten
Bessere Fotos in jeder Lage:
Basiswissen ■ Foto-Technik
Ausrüstung ■ Studiobilder
Portraits ■ Tierfotos
und vieles mehr
Nur € 11,99
ZuM KiNO-HiT RuSH!
Biografie & Zeitgeschichte
James Hunt & Niki Lauda:
Was wirklich geschah
Zwei Hefte in einem!
Auf 164 Seiten
Nur € 9,99
NES
Auf 148 Seiten
So werden Sie
zum Web-Profi
Gmail &
Google Drive
Google + und
Google Maps
Nur € 9,99
148 Seiten
Der perfekte Leitfaden für
alle Samsung-Galaxy-Modelle
■ Samsung-Super-Tests
■ Noch mehr Akkulaufzeit
und vieles mehr
Einfach mit dem
Smartphone
abfotografieren
und hinsurfen!
Nur € 9,99
Auf 164 Seiten
■ Wissen und Hintergründe
■ Für Einsteiger und Profis
und vieles mehr
Nur € 11,99
Überall im Handel oder bequem online bestellen: shop.computec.de/edition
Grafikkarte
Bilder: Matrox
Rückblick: Wie Shader-
Effekte auf den PC kamen
Den ersten Shadereffekt brachte eine Techdemo: Darin zeigte Matrox
für die G400-Reihe, wie sich Environment Mapped Bump Mapping
(EMBM) per Shader erzeugen lässt. Während Matrox’ G400, die erste
Radeon-Generation und Power-VRs Kyro-Chips sich noch ihrer TMUs
bedienten, mussten Nvidia-Nutzer auf die Pixelshader-Einheiten der
Geforce 3 warten, bis sie EMBM bestaunen konnten.
Im Frühjahr 2001 brachte Nvidia dann mit der Geforce 3 (200/230 MHz)
die erste Grafikkarte, die Microsofts DX8-Anforderungen erfüllte und
über Hardware-Shader für Pixel und Vertizen verfügt. Die Ati Radeon
8500 erschien im Herbst desselben Jahres und beherrschte bereits PS
1.4. Nahezu zeitgleich erschienen die ersten Spiele auf Basis der Unreal-Engine,
welche Shadereffekte unterstützten – Clive Barker’s Undying
war eines der bekanntesten, es kam 2001 auf den Markt.
So funktionieren
Shader
Auch wenn viele der bereits
genannten Effekte
hauptsächlich texturbasiert
sind, wird bereits für vergleichsweise
einfaches Environment-Mapped-Bump-Mapping
(EMBM) seit den Zeiten von
Geforce 3 und Radeon 8500 die
Hilfe der „Shader“ in Anspruch
genommen.
„Shader“-Ursprünge
„Shading“ im Sinne der 3D-Grafik
hat seinen Ursprung bei zunächst
einfarbigen Flächen,
deren wortgemäße „Schattierung“
berechnet werden musste.
Der Begriff wurde im Lauf
der Zeit allgemein für Aufgaben
benutzt, mit denen das Aussehen
eines Oberflächenpunktes
bestimmt wird. Noch vor
der offiziellen Einführung der
„Shader-Modelle“ in Microsofts
Direct X 8 benannte Nvidia beispielsweise
die Geforce 2 mit
dem Zusatz „GTS“ – „Giga Texel
Shader“ in Anlehnung an die
Texturfüllrate.
Mit der Einführung der Direct-
X-8-API wurden die Shader-Klassen
nach Pixel- und Vertexarbeit
unterteilt und in verschiedene
Versionen hinsichtlich der
Flexibilität verpackt. Die Hardware,
welche die Shader-Programme
ausführte, wurde aus
dem englischen „Shader-Units“
(Shader-Einheiten) innerhalb
kürzester Zeit selbst zu „Shadern“
verkürzt, sodass bis heute
im deutschen Sprachraum
keine klare Trennung zwischen
Hard- und Software-Teilen der
Shader herrscht und der Begriff
„Shader“ sowohl für die Ausführungseinheiten
der Hardware
als auch die auszuführenden
Software-Programme steht.
Shader-Einheiten
Die Shader-Einheiten bestehen
in der Regel aus flexiblen Rechenwerken,
die pro Takt ein
sogenanntes MADD (Multi ply-
Add, auch Fused-MAC) ausführen
können – diese dienen auch
als Gradmesser der viel zitierten
GFLOPS-Leistung. Diesen
zur Seite steht eine geringere
Anzahl an Ausführungseinheiten,
die zusätzlich weniger oft
benötigte Funktionen wie Wurzel
(SQR) oder Sinus/Kosinus
implementieren. Obwohl diese
Rechenwerke mittlerweile
so flexibel sind, dass sie auch
Funktionen der Textureinheiten
oder der Ras ter-Endstufen
(ROPs) ausführen könnten,
sind aus Effizienzgründen dafür
weiterhin spezialisierte, kaum
programmierbare Einheiten
vorhanden.
Was können Shader?
Shader-Einheiten haben die Arbeit
der früheren Textur- und
Register-Combiner übernommen.
Dadurch stehen per Shader-Programm
natürlich auch
alle Effekte zur Verfügung,
die zuvor durch reine Texturen-Kombinatorik
erzeugt wurden.
Das sind neben relativ
simplen Dingen wie Ein- und
Mehrfachtexturierung auch
Bump- Mapping bis hin zur Environment-Mapped-Version
–
der Spitze dessen, was mit reinen
Textureinheiten noch
möglich war.
Generell sind selbst einfache Pixel-Shader-Programme
des Shader-Modells
1 bereits zu folgenden
Effekten fähig:
56 So funktioniert ein PC
Grafikkarte
z Per-Pixel-Beleuchtung in einem
Rendering-Pass
z Phong-Shading
z Anisotrope Beleuchtung
z Non-Photorealistic-Rendering
z Per-pixel Fresnel-Term
z Volumetrische Effekte
z Erweitertes Bump-Mapping
z Prozedurale Texturen
Shader-Programme
Als Standard zusammengefasst
wurden die Shader zunächst in
Microsofts Direct X 8 und sie
begannen mit Version 1.1 für Pixel-
und Vertexshader (1.0 war
für 3dfx’ nie erschienenen Rampage-Chip
vorgesehen). Die erste
nennenswerte Erweiterung
gab es mit der Radeon 8500,
welche die fortschrittlicheren
Pixelshader 1.4 unterstützte.
Mit Direct X 9 hielten 2.0-Shader
Einzug, die aufgrund der
deutlich gestiegenen Instruktionsanzahl
optional auch mit höherer
Genauigkeit, namentlich
im Gleitkommaformat, rechnen
mussten – damit war auch der
Grundstein für HDR-Rendering
gelegt.
Das Shader-Modell 3 erweiterte
die DX9-Fähigkeiten noch einmal.
Es enthielt einige Verbesserungen,
welche das HDR-Rendering
besser und performanter
einsetzbar machten, beispielsweise
die Fähigkeit der Textureinheiten,
auch HDR-Texturen
zu verarbeiten (mehr zum Thema
HDR im folgenden Unterkapitel).
Erstmals zum Einsatz
kam dieser Fortschritt in einem
Patch für Far Cry (dt.), das erste
Shader-Modell-3-Spiel „ab Werk“
war Splinter Cell Chaos Theory.
Unified Shader
Wirklich große Änderungen
gab es erst unter Windows Vista
mit Direct X 10. Hier wurden
vereinheitlichte Shader vorausgesetzt
– Pixel- und Vertex-Einheiten
mussten mit demselben
Programmcode ansprechbar
sein. Die Hersteller setzten diese
Vorgabe in den GPUs entsprechend
um: Seit DX10 gibt es bei
allen GPUs von Nvidia, AMD/
Ati, Intel und S3 Graphics nur
noch eine Art der Ausführungseinheit
(„Unified Shader“).
Direct X 10 brachte außerdem
die Unterstüzung für eine neue
Shader-Stufe, den Geometryshader.
Mit diesem war es erstmals
möglich, neue Geo metrie direkt
auf dem Grafikchip zu erzeugen.
Dadurch lässt sich der
Detailgrad eines Modells erhöhen
(„Geo metry Amplification“),
ohne dass eine nennenswert
größere Last außerhalb
der Grafikkarte entsteht. Effektiv
handelt es sich beim Geometryshader
also um eine Art
Geo metriekompression.
Mithilfe dieses Shader-Typs können
weitere Details zu vorhandenen
Modellen hinzugefügt
werden. Im Gegensatz zu Displacement-
oder Parallax-Occlusion-Mapping
sind diese jedoch
„echt“. Das heißt, dass sie nicht
je nach Blickwinkel in einer
Textursuppe verschwimmen,
sondern dass sie von normalem
Multisampling-FSAA erfasst
werden und sich auch sonst
genauso verhalten wie auf der
CPU erzeugte Details.
Compute Shader
Die neben (oder vielleicht
noch vor) Tessellation wichtigste
Neuerung von Direct
X 11 waren die sogenannten
Compute-Shader. Eine ausführliche
Erklärung beider Techniken
finden Sie im Abschnitt
„Direct X 11“ weiter vorne in
diesem Heft.
Überblick: Shader-Versionen
Direct X
Pixelshader
Vertex -
shader
Geometryshader
Weitere
Shader
1.0 - 7.0 Keine Keine Keine Keine
8.0 1.0, 1.1 1.0, 1.1 Keine Keine
8.1 1.2 - 1.4 1.1 Keine Keine
9.0 2.0 2.0 Keine Keine
9.0a/b 2.x 2.x Keine Keine
9.0c 3.0 3.0 Keine Keine
10.0 4.0 4.0 4.0 Keine
10.1 4.1 4.1 4.1 Keine
11 5.0 5.0 5.0 Hull-, Compute-Shader
Shader-Einheiten können auch dazu eingesetzt werden, aus einem
dreidimensionalen Datensatz die Visualisierung einer Tomografie-
Aufnahme zu erstellen – so wie hier in einer AMD-Techdemo.
Ohne Shadereffekte sind Spiele und
Demos kaum noch vorstellbar. Der „Shadermark“
– hier im Bild – misst die Shaderleistung
eines Grafikchips
Bild: AMD
So funktioniert ein PC 57
Grafikkarte
So funktioniert
High Dynamic Range (HDR)
Bereits die Radeon 9700 Pro als
erste DX9-Karte war schon 2002
in der Lage, HDR-Rendering
durchzuführen. Das Bild stammt
aus der Demo „Debevec RNL“.
Was die Bittiefe über die
Texturqualität aussagt
Die Anzahl der Bits bestimmt, wie genau eine Information abgespeichert
werden kann. In der Tabelle sind typische Farbtiefen pro Kanal
aufgeführt
Bits 1 2 4 5 6 8 10 16
Mögliche 2 4 16 32 64 256 1.024 65.536
Zustände
Bereits im 3D Mark 2001 zeigte Mad Onion,
Vorläufer von Futuremark, einfache Überstrahleffekte.
Mit echtem HDR-Rendering
haben diese jedoch nichts zu tun
HDR ist nicht nur ein
simpler Grafik effekt,
sondern vielmehr ein
(nicht mehr ganz so) neuer Ansatz
für eine korrekte(re) Beleuchtung
in der digitalen Bilderzeugung.
HDR-Anfänge
Die Abkürzung „HDR“ steht für
High Dynamic Range, übersetzt
„hoher Dynamik- bzw. Kontrastumfang“,
und kommt aus dem
Bereich der Fotografie. Bereits
im vordigitalen Zeitalter wurde
dort versucht, mittels Kombination
mehrerer Negative mit unterschiedlichen
Belichtungen
den Kontrastumfang innerhalb
eines Bildes über das normale
Maß hinaus zu erhöhen.
In neuerer Zeit gelten Gregory
Ward (als Erfinder des Bildformates
„RGBE“) und Paul Debevec
(mit seiner Arbeit über
die Einzelbildkomposition zu
HDR-Bildern von 1997) als Pioniere.
Während man im Bereich
von digitaler Bildbearbeitung
und dem Offline-Rendering
zum Beispiel für Kinoproduktionen
höhere Anforderungen
stellt, spricht man im Bereich
der 3D-Echtzeitgrafik spätestens
bei einer (Gleitkomma-)Genauigkeit
von 16 Bit für jeden der
vier Informationskanäle (Rot,
Grün, Blau und Alpha) eines Pixels
von HDR-Rendering.
RGBA – vier Pixel -
komponenten
In der Regel werden die Informationen
zu Farbe und Transparenz
eines jeden Bildpunktes in
einem von vier Kanälen gespeichert:
Rot, Grün, Blau und ein
Kanal für Transparenzinformationen.
Aus diesen vier Informationen
werden – zum Teil nach
vielen Berechnungen – die finalen
Pixelfarben zusammengemischt.
Es ist naheliegend, dass
das Bild nur hochwertiger werden
kann, wenn diese Informationen
genauer sind.
In den Anfangstagen der
3D-Grafik nutzte man oft ein
Format mit insgesamt 16 Bit,
die sich als RGB565 (Alpha fiel
hierbei unter den Tisch) ungleich
verteilten. Der menschlichen
Wahrnehmung entsprechend
wird der Grünkanal mit
64 Abstufungen am höchsten
aufgelöst, Rot und Blau mussten
mit 32 Stufen auskommen.
Andere Formate dieser Zeit hatten
jeweils vier Bit Auflösung
(RGBA4444) und konnten somit
nur 16 Zustände für jeden
Kanal abbilden. Das klingt zunächst
nicht allzu wenig, allerdings
müssen zum Beispiel
durch Überlagerung verschiedener
Texturschichten, also
nach diversen Rechenschritten,
diese 16 Abstufungen pro Kanal
immer noch für das fertige
Bild ausreichen. In der Praxis
führt das häufig zu unschönen
Farbsäumen, sogenanntem Color-Banding.
Heutzutage beträgt die übliche
Mindestgenauigkeit immerhin
schon 8 Bit und damit 256 Stufen
für jeden Kanal. Einige Formate
teilen die entsprechenden
32 Bit jedoch auch anders
auf, nämlich mit 10 Bit (entsprechend
1.024 Abstufungen)
für jeden Farb- und zwei Bit für
die Transparenzinformationen
im Alpha-Kanal. Die Verwendung
dieses Formates wird zum
58 So funktioniert ein PC
Grafikkarte
Teil schon als „HDR“-Ren dering
bezeichnet. All diese Formate
haben eines gemein: Es handelt
sich um Integer- oder Fixpunkt-Formate,
das bedeutet,
dass lediglich ganzzahlige Werte
zur Verwendung erlaubt
sind.
2.0-Shader bringen
Gleitkommagenauigkeit
Erst mit der Einführung von
Direct X 9 Ende 2002 wurde
die Unterstützung sogenannter
Gleitkommaformate Pflicht,
im Englischen „Floating-Point“
oder kurz „FP“ genannt, und
auch die Bitgenauigkeit wurde
stark erweitert. Anstelle einer
Gesamtgenauigkeit von 32 Bit
mussten nun einige Teile der
3D-Pipeline für jeden einzelnen
Kanal mit 32 Bit rechnen können
– und das, wie erwähnt, in
Gleitkommapräzision.
Damit wurden nicht nur die Anforderungen
an die Rechenwerke
der Grafikkarten stark gesteigert,
auch die Genauigkeit
konnte extrem verbessert werden.
Die zur Verfügung stehenden
Bits sind bei den damals
neu definierten Gleitkommaformaten
in separate Anteile für
Exponent und Mantisse aufgeteilt
worden, sodass eine logarithmische
Verteilung der Werte
möglich ist. Zum Beispiel
haben beim RGBE8-Format
die drei Farbkanäle je 8 Bit Basis
und teilen sich einen ebenfalls
achtbittigen Exponenten,
der im Alpha-Kanal gespeichert
wird (daher auch das „E“ anstelle
des „A“).
Zwar ist noch eine Umrechnung
per Pixelshader nötig, bevor
der Texturwert genutzt werden
kann, danach steht jedoch ein
Vielfaches an Farbpräzision zur
Verfügung. Mittels sogenannten
„Signings“ und „Biasings“, also
einer Vorzeichenvergabe und
konstanter Wertverschiebung,
können so auch einfach größere
Dynamikbereiche als die
üblichen zwischen 0 und 1 erzeugt
werden.
HDR-Rendering
Es gibt drei grundlegende
Abschnitte im Renderprozess
einer Grafikkarte, die für
HDR-Rendering mit hoher Genauigkeit
ausgeführt werden
können und sollten: zum einen
das Ausgangsmaterial in Form
der Texturen, dann die Präzision
der Rechenwerke (Shader,
Textureinheiten und ROPs)
und schließlich die verwendeten
Zwischenspeicher. Bei
Letzteren kann es sich um Bildpuffer
(sogenannte Render-Targets)
oder Texturen handeln.
Die Helligkeitsdarstellung
ohne HDR-Rendering ist auf
achtbittige Integerwerte, also
256 Stufen zwischen dem
hellstmöglichen (weiß) und
dem dunkelsten Bildpunkt
(schwarz), beschränkt. Höhere
und niedrigere Werte, die während
der Berechnung entstehen,
werden an diesen Grenzen
einfach gekappt (im Fachjargon
„clamping“) und bleiben so
bei maximal 1 und minimal 0.
Soll beispielsweise eine Umgebungsreflexion
per Cube-Mapping
einer Lichtquelle auf einer
Oberfläche dargestellt werden,
die das einfallende Licht nicht
zu 100 Prozent reflektiert, wird
die maximale Helligkeit durch
diesen Reflexionsfaktor kleiner
1 beschränkt, egal wie hell das
Licht eigentlich ist.
Wird eine FP-Textur mit höherem
Dynamikumfang, also eine
HDR-Cube-Map, genutzt, kann
Keine Post-Processing-Effekte
Bloom-Effekt
HDR-Rendering
TES 4: Oblivion kann entweder einen simplen Überstrahleffekt (Bloom)
oder echtes HDR-Rendering für die Beleuchtungsberechnungen nutzen
(unten).
Wie Fließpunkt-Berechnungen
die Qualität erhöhen
Diese HDR-Rendering-Demo zeigt den Unterschied zwischen herkömmlichen
INT8- und HDR-tauglichen FP16-Formaten bei hoher
„Exposure“ (Belichtung). Im INT8-Format entstehen hässliche Farbsäume,
die FP16-Bilder haben hingegen genügend Reserven in Sachen
Kontrastumfang.
8 Bit pro Kanal (Textur & Bildpuffer) 16 Bit pro Kanal (Textur & Bildpuffer)
8 Bit pro Kanal (Textur & Bildpuffer)
8 Bit pro Kanal (Textur & Bildpuffer)
16 Bit pro Kanal (Textur & Bildpuffer)
16 Bit pro Kanal (Textur & Bildpuffer)
So funktioniert ein PC 59
Grafikkarte
das Licht in korrekter Helligkeit
reflektiert werden.
HDR-Darstellung
Zwar kann das menschliche
Auge potenziell Kontraste
im Bereich von 1.000.000
zu 1 wahrnehmen, muss diesen
Bereich jedoch durch verhältnismäßig
langsame Anpassung
wie zum Beispiel die
Iriskontraktion und -erweiterung
erreichen. Der statisch
wahrnehmbare Kontrastumfang
liegt demgegenüber nur
bei etwa einem Prozent dieses
Maximalwertes. Auch übliche
PC-Bildschirme, egal ob
Röhren- oder Flachbildmonitor,
können nur einen – im Vergleich
zum HDR-Wertebereich
– arg begrenzten Dynamikumfang
erreichen. Damit der ganze
Aufwand beim HDR-Rendering
nicht für die Katz ist, müssen
die errechneten Helligkeitswerte
aus dem hohen Kontrastumfang
sinnvoll in den darstellbaren
Bereich zwischen 0 und 1
gebracht werden. Diesen Vorgang
des Umrechnens nennt
man Tone-Mapping.
Prinzipiell sind zwei Arten von
Tone-Mapping gebräuchlich.
Eine Variante nutzt dabei eine
globale Umrechnungsformel
für alle Bildpunkte, die auf der
mittleren Helligkeit des gesamten
Bildes basiert. Eine zweite
Methode berücksichtigt die Eigenheiten
menschlicher Wahrnehmung,
sodass zum Beispiel
lokale Kontraste eine größere
Rolle spielen.
Typische Effekte
Wenn ein Spieleentwickler den
größten Teil der Berechnungen
bereits in einem passend erweiterten
Wertebereich ausführt,
kann er diese natürlich auch
für herkömmliche Effekte nutzen
und diese durch HDR-Rendering
aufwerten. Beispiele dafür
sind etwa Überstrahleffekte
(„Bloom“) oder Linsenreflexionen
(„Flare“).
Im Falle des beliebten Bloom-
Effektes wird der Eindruck simuliert,
den eine sehr helle
Lichtquelle hervorruft, wenn
sie in einen dunk len Bereich
scheint. Dieser Effekt ist bei al-
HDR-Beleuchtungsvarianten
Cube-Mapping
Tone-Mapping
Bei voller Reflektivität zeigen 8-Bit-Texturen keinen Nachteil (oben), reflektiert
ein Objekt aber nicht vollständig, wird die Dynamik gekappt (unten).
Ohne Tone-Mapping (oben) überstrahlen helle Lichter stark. Tone-Mapping
(Mitte) sorgt für „korrekte“ Darstellung, auch eine Blauverschiebung (unten)
ist möglich.
60 So funktioniert ein PC
Grafikkarte
len nicht perfekten, runden Optiken
zu beobachten, die das
Licht einer punktartigen Lichtquelle
erfassen. Ist die Belichtung
der Optik auf einen dunklen
Raum eingestellt, durch
dessen Fenster helles Tageslicht
hereinscheint, wirkt es, als würde
das Licht über die Ränder
des Fensterrahmens hinauslaufen.
Genauer gesagt handelt es
sich dabei also um „Bleeding“,
das Aus- oder Überlaufen von
Farbe oder Helligkeit in andere
Bildbereiche.
Der herkömmliche Wertebereich
verfügt dabei nicht über
genügend Dynamikreserven,
sodass der Programmierer
höchs tens die Helligkeit des gesamten
Bildes anpassen kann,
während es im HDR-Bereich
möglich ist, aus dem korrekten
Verhältnis der dunkelsten und
hellsten Bildteile die Stärke des
Überlaufeffektes zu errechnen
und vor dem Tone-Mapping anzuwenden.
Wie HDR-Effekte erzeugt werden
Die Anwendung von Effekten beim HDR-Rendering verdeutlicht ein Beispiel aus dem Direct-X-SDK – dort werden
hochdynamische Beleuchtungs informationen des Ausgangsbildes mit einem Color-Bleeding-Effekt, der via
Unschärfe-Filter erzeugt wird, und einer in Echtzeit berechneten Helligkeitsfunktion kombiniert.
Das Ausgangsbild: 32 Bit pro Kanal, Wertebereich größer 0 bis 1
Ein Arbeitsgang dient zur
Ermittlung der durchschnittlichen
Helligkeit mithilfe des
Grafikpro zessors.
In jedem der Schritte wird die
Achsenauflösung um Faktor 3
per Mittelwertbildung heruntergerechnet.
Für den Blur-Effekt müssen Pixel
eine Mindesthelligkeit erreichen.
Die Achsenauflösung wird
zweimal jeweils halbiert.
Lens Flares
Auch „(Lens) Flares“, also
Lin senreflexe, werden zur
Realismus stei gerung eingesetzt.
Das ist vor allem deswegen erstaunlich,
weil damit eher der
Effekt einer gefilmten Aufnahme
mit verschieden vergüteten
Linsen optiken simuliert wird
als die echte menschliche Wahrnehmung.
Dabei wird prinzipiell
ein ähnliches Verfahren
angewandt wie oben beschrieben.
Der bekannteste Effekt ist
dabei vielleicht der klassische
TV-Lens-Flare, der die bei Formel-1-Übertragungen
früher
üblichen Lichtreflexe der Sonne
nachstellt, sich aber auch
in etlichen Weltraumspielen
hoher Beliebtheit bei dramatischen
Kameraschwenks
durchs Geschehen erfreut.
Die Operationen sind
gleitkomma genau, entsprechend
ausgestattete Hardware
beschleunigt den Vorgang.
Downsampling-Stufe 4 zeigt
anstelle der 730 x 730 Pixel des
Ausgangsbildes nur noch
9 x 9 Bildpunkte.
Der vorletzte Schritt hat die
Helligkeit bereits auf eine
Textur mit den Maßen
3 x 3 Pixel eingedampft.
Der letzte Schritt erzeugt
ein einzelnes Pixel, das die
durchschnittliche Helligkeit
des Ausgangsbildes enthält.
Nach Verrechnung der Helligkeit und Anwendung
des Unschärfeeffektes, der das Auslaufen der
(hellen) Farben in dunkle Bereiche simuliert, folgt
noch das Tone-Mapping.
Erst die so verringerte Pixelzahl
wird zunächst horizontal und …
… danach vertikal mit Weichzeichnung
(„Blur“) versehen.
So funktioniert ein PC 61
Grafikkarte
Bild: 2K Games
Glatte Kanten und Übergänge steigern die Grafikqualität
erheblich – hier kommt Downsampling, eine
Variante des Supersampling-AA, zum Einsatz.
Welche Anti-Aliasing-Varianten
unterschieden werden
Kürzel Bedeutung Merkmale/Funktion
FSAA Full-Screen/Scene-Anti-Aliasing Allgemeiner Begriff für Vollbild-Anti-Aliasing
SSAA Super-Sampling-Anti-Aliasing Überbegriff für mehrfaches Sampling
aller Pixel
OGSSAA Ordered Grid Super-Sampling-AA SSAA mit geordnetem Abtastmuster
SGSSAA Sparse Grid Super-Sampling-AA SSAA mit gestreutem Abtastmuster
MSAA Multi-Sampling-Anti-Aliasing Überbegriff für mehrfaches Sampling
von Polygonkantenpixeln
SGMSAA Sparse Grid Multi-Sampling-AA MSAA mit gestreutem Muster – der
Standard seit Jahren
TMSAA Transparency Multi-Sampling-AA Nvidias MSAA für transparente Texturen
TSSAA Transparency Super-Sampling-AA Nvidias SSAA für transparente Texturen
AAA Adaptive Anti-Aliasing AMDs adaptives AA für transparente
Texturen
CSAA Coverage Sample Anti-Aliasing Nvidias Erweiterung von MSAA
EQAA Enhanced-Quality Anti-Aliasing AMDs Erweiterung von MSAA (erst seit
der HD-6900-Reihe verfügbar)
CFAA Custom Filter Anti-Aliasing AMDs verbesserte Downfilter für glattere
Bilder; fungiert als „Aufsatz“ für MSAA
oder SSAA (verfügbar ab HD 2000)
MLAA Morphological Anti-Aliasing AMDs Post-Processing-AA im Catalyst-Treiber
FXAA Fast Approximate Anti-Aliasing Günstiges, kontrastbasiertes Post-Process-AA
SRAA Subpixel Reconstruction AA Fortschrittliches Post-AA, derzeit in
Entwicklung
EER Edge-Equivalent Resolution Qualitätsmerkmal von FSAA (mehr =
besser)
TXAA Temporal Approximate AA Shader-basiertes AA-Verfahren v. Nvidia
So funktioniert
Anti-Aliasing
Früher war vieles einfacher
– aber nicht besser!
Die ersten polygonbasierten
Spiele Anfang der 90er-Jahre
hatten andere Probleme als
fehlendes Anti-Aliasing: Wo nur
ein paar Hundert Vielecke pro
Bild auftauchen, gibt es auch
wenige Kanten, die man glätten
müsste.
Ein Blick zurück
Erst um die Jahrtausendwende
hatten Spiele ein Grafikniveau
erreicht, das eine genauere Berechnung
lohnenswert machte.
3dfx stellte im Jahr 2000 erstmals
hochwertige Bildglättung
in den Vordergrund: Sparse
Grid Supersampling-AA (SGS-
SAA). Doch die Wahrnehmung
der Spieler war damals noch
nicht so weit, Anti-Aliasing
galt als Effekt, der das Bild unscharf
macht – und zudem viel
Leistung kostet. Mit 3dfx verschwand
auch SGSSAA von der
Bildfläche und der Siegeszug
des Multisamplings (MSAA) begann.
Rasterizing:
Probleme …
Jedes aktuelle Spiel basiert auf
Rastergrafik. Dabei werden die
ursprünglichen Vektorgrafiken
„rasterisiert“, das heißt durch
einzelne Bildpunkte (picture
elements = Pixel) dargestellt.
Da deren Anzahl limitiert ist,
geht dieser Schritt mit Informationsverlust
einher: Wird ein filigranes
Objekt mit zu wenigen
Pixeln abgetastet („gesampelt“),
bleiben Feinheiten auf der Strecke,
die sich nicht rekonstruieren
lassen. Besonders fatal ist
dies in Bewegung, beispielsweise
wenn Sie in Battlefield 3
an einem Zaun vorbeirobben.
Der Draht ist in Entfernung feiner
als ein Pixel, also ein Aliasing-Ernstfall.
Nun gilt: Entweder
liegt das Drahtstück in der
Mitte des Pixels – dann wird es
dargestellt – oder eben nicht,
dann fehlt das Stück vor Ihren
Augen. Das Kernproblem ist,
dass mehrere Texel um einen
einzigen Darstellungsplatz als
Pixel kämpfen. In Bewegung resultiert
dies in einem unschönen
Abwechslungsspiel, bei
dem die Feinheiten des Zauns
wild durchs Bild flimmern.
Ähnliches gilt bei der Darstellung
von Vegetation (etwa in
Crysis) oder Texturen und Pixel-Shadern,
bei denen die Entwickler
Abtastregeln missachten.
Ebenfalls der endlichen
Auflösung (Gesamtheit der Pixel)
geschuldet ist der berüchtigte
Treppeneffekt: Es ist unmöglich,
Schrägen mithilfe
eines Pixelrasters darzustellen,
ohne dass Abstufungen sichtbar
sind – rechte Winkel hingegen
liegen oft genau auf dem Raster.
… und Lösungsversuche
Treppchenbildung ist unnatürlich
– die Realität wird schließlich
mithilfe einer unendlichen
Auflösung dargestellt. „Dann erhöhen
wir einfach die Anzahl
der Pixel“, werden Sie jetzt denken.
Richtig, mehr Bildpunkte,
also eine feinere Abtastung, helfen
gegen Alias-Effekte. Spielen
Sie in 1.920 x 1.080 (Full HD),
wird die Grundinformation gegenüber
1.280 x 720 mit mehr
als doppelt so vielen Pixeln wiedergegeben.
Das ist fein, denn
Sie bekommen mehr Details
62 So funktioniert ein PC
Grafikkarte
und gemindertes Aliasing zu Gesicht.
2.560 x 1.600 legt gegenüber
Full HD nochmals um Faktor
2 zu. Dieses Spiel ist nicht
zielführend, da keine Endkunden-Monitore
mit einer noch
höheren Auflösung existieren
und der Rechenaufwand linear
mit der Pixelzahl zunimmt. Was
also tun?
Supersampling(-AA)
Wenn sich die Anzahl der Pixel
nicht weiter steigern lässt, muss
während des Renderings die
Abtastung pro Pixel erhöht werden.
Genau das passiert beim
Supersampling (super = über/
mehr): Jeder Bildpunkt wird
an verschiedenen Stellen mehrfach
erfasst und die Über-Information
vor der Ausgabe an den
Monitor verrechnet. Letzteren
Vorgang, bei dem ein Tiefpassfilter
(Downfilter) angewandt
wird, nennt man im Fachjargon
„Downsampling“. An dessen
Ende entstehen Farbzwischenstufen,
ein gewollter Effekt, den
Sie als Anti-Aliasing kennen.
Beim Supersampling passiert
dies mit jedem Bildpunkt, es
entsteht eine Vollbildglättung –
Full-Scene-AA (FSAA). Ob die Anzahl
der Pixel verdoppelt oder
pro Pixel die doppelte Samplezahl
genommen wird, spielt
für den Rechenaufwand theoretisch
keine Rolle, die enormen
Leistungskosten bleiben.
Supersampling-AA mit gestreutem
Abtastmuster ist nach wie
vor das hochwertigste AA-Verfahren.
Multisampling(-AA)
Die Überlegung hinter Mul -
tisamp ling (multi = mehrfach)
lautet: Warum sollte das
komplette Bild x-fach berechnet
werden, wenn man nur
die Kanten glätten will? Beim
MSAA werden daher nur die
Pixel an Polygonkanten mehrfach
berechnet, um Rechenzeit
zu sparen. In der Folge wurde
MSAA anno 2001, als es mit Nvidias
Geforce 3 debütierte, als
„High-Res-AA“ beworben. Zwar
war es damals aufgrund mangelnder
Effizienz nicht deutlich
schneller als SSAA, aber es war
klar, wohin die Reise geht. Für
die Texturverbesserung, zuvor
vom SSAA erledigt, wurde der
anisotrope Filter geboren.
Die Kombination aus MSAA und
AF brachte einige Jahre hübsche
Bilder. Mit dem Aufkommen
pixelbasierter Effekte und
Einsparungen am AF – Dinge,
die von MSAA nicht erfasst werden
– wurden die Rufe nach
besserem AA lauter. Erst im
Herbst 2009 wurde deren Idee
im Retail-Markt wiederbelebt:
AMD startete mit der HD-5000-
Serie die Renaissance des SGS-
SAAs, Nvidia folgte (inoffiziell).
Post-Processing-AA
Die beliebten Deferred-Renderer
sind – zumindest unter
DX9 und auf den DX9-Konsolen
– praktisch inkompatibel zu
MSAA. Sie werden dennoch genutzt,
um aufwendige Szenen
mit zahlreichen Lichtquellen
effizient zu berechnen. Supersampling
ist nach wie vor möglich,
wird jedoch aufgrund der
Rechenkosten gemieden. Um
das Bild dennoch zu glätten,
schossen in jüngster Vergangenheit
einige neue Verfahren
aus dem Boden. FXAA, MLAA
und Konsorten glätten das Bild
erst nach der fertigen Berechnung,
weshalb sie als Aufsatz
fungieren können, wenig Leistung
kosten und in immer mehr
Spielen auch angeboten werden
(mehr dazu auf der folgenden
Doppelseite). Qualitativ ist
„echtes“ AA aber besser.
Wie Supersampling die
Bildqualität verbessert
Da Multisampling nur die Geometrie (Polygonkanten) bearbeitet, bleibt
alles Weitere unangetastet. Die Folge: In zahlreichen Spielen flimmern
Texturen, Pixel-Shader oder Specular Maps. Dagegen hilft nur
Supersampling, egal ob als SGSSAA per Grafiktreiber oder via Downsampling
(= OGSSAA). Beim SSAA wird jedes Pixel super, das heißt
mehr als nur einmal gesampelt, mit der Folge, dass das ganze Bild eine
Glättung erfährt. Der Nachteil: N-faches SSAA kostet n-fache Leistung,
weshalb günstige Alternativen wie FXAA entwickelt werden.
Half-Life 2: „Shader-Wasser“ mit Multisample-AA – keine Glättung, pixelig
Half-Life 2: „Shader-Wasser“ mit 8x Supersample-AA – glatt und flimmerfrei
GTA 4 Original: Keine Kantenglättung möglich, Spiel flimmert
GTA 4 mit Downsampling: Vollbild-Glättung (hier: 2x2 = 4x OGSSAA)
So funktioniert ein PC 63
Grafikkarte
So funktioniert
Post-Processing-AA
te und flimmrige Kontraste
werden vermischt. Das sieht
im Stand oft hervorragend aus,
kann in Bewegung aber nur wenig
gegen Aliasing auf Subpixelebene
ausrichten.
Bei einem Postfilter handelt
es sich um einen
Effekt, der am Ende des
eigentlichen Rendervorgangs
angewendet wird. Dies kann helfen,
den erforderlichen Rechenaufwand
zu reduzieren. Beispiele
für Post-Effekte sind Bloom
(Voll bild-Überstrahlung),
SSAO (Schattierung) und kontrastbasiertes
Anti-Aliasing.
FXAA, MLAA und Co.
Im Unterschied zu echter Kantenglättung,
die während der
Kalkulation jedes einzelnen
Bilds wirkt und Aliasing an der
Wurzel behandelt, tritt Post-AA
erst am Ende der Renderkette
in Kraft. Der Zweck: Linderung
der Aliasing-Beschwerden. Was
nach einer Eier legenden Wollmilchsau
klingt, ist aber nur ein
notdürftiger Ersatz für Superund
Multisampling.
Die Entstehung von FXAA,
MLAA und weiteren Post-AA-
Modi ist eng mit Speichermangel
auf Konsolen und dem Deferred-Rendering
verzahnt.
Letzteres Verfahren erlaubt
dank seiner hohen Effizienz
auch auf schwachbrüstiger
(Konsolen-)Hardware hübsche
Grafik und wird daher immer
öfter verwendet. Unglücklicherweise
kollidiert seine Funktionsweise
mit MSAA – zumindest
auf der DX9-Basis. SSAA ist
auch mit einem Deferred-Renderer
möglich, wird aufgrund
des Leistungshungers aber verschmäht.
In der Folge entwickelte man
Methoden, um die ohne AA gerenderten
Szenen nachträglich
aufzupolieren – Post-AA war geboren.
Post-AA in aktuellen
Spielen
Metro 2033 bot im Frühjahr
2010 als erstes Spiel die Option
auf „Analytical-AA“ (AAA),
primär, um unter Direct 3D 9
irgendeine Form der Glättung
bereitzustellen. Unter DX11/10
steht außerdem 4 x MSAA zur
Verfügung – sehr rechenaufwendig
und speicherintensiv,
weshalb AAA erstmals in
das Bewusstsein der Spieler
rückte. Mittlerweile ist es das
Fast-Approximate-AA (FXAA),
das, nomen est omen, dank
schneller Berechnung in zahlreichen
Neuerscheinungen angeboten
wird.
Neben den geringen Leistungskosten
spricht vor allem der
Vollbild-Effekt für FXAA: Wie
beim Supersampling wird das
komplette Bild bearbeitet, har-
MLAA
Zum Start von Barts, dem Herz
der Radeon-HD-6800-Grafikkarten,
integrierte AMD eine eigene
Post-AA-Methode in den Catalyst-Treiber:
Morphologische
Filterung, kurz MLAA. Hierbei
handelt es sich um einen anderen
Algorithmus als bei FXAA,
eine kontrastbasierte Vollbildglättung
ist aber auch hier Programm.
MLAA geht relativ aggressiv vor,
es werden auch Objekte „geschliffen“,
die es nicht unbedingt
nötig hätten – aus spitzen
Ecken werden mitunter Rundungen.
Bei FXAA bleibt dieser
Effekt aus, obgleich es ebenfalls
Unschärfe über das komplette
Bild legt – eine Kanten-Erkennung
(Edge-Detection) scheint
noch etwas Hirnschmalz bei
der Weiterentwicklung zu erfordern.
Überblick der wichtigsten Post-Processing-Methoden
FXAA und MLAA sind die bekanntesten
Post-AA-Modi, da sie einfach
zu integrieren sind. Die Nachteile,
etwa Unschärfe über das gesamte
Bild und der Mangel an Subpixel-Information,
die richtige Hilfe gegen
Flimmern verhindert, rufen neue
Algorithmen auf den Plan.
Raster (Vector Input) 1x AA (kein AA) MLAA SRAA
16.384x OGSSAA
SRAA (Subpixel Reconstruction
AA) und SMAA (Enhanced Subpixel
Morphological Antialiasing) versuchen
sich an der Rekonstruktion
von Subpixel-Info. Das sieht stellenweise
sehr gut aus, SRAA muss
allerdings in Spiele integriert werden
– Treiber-Forcierung ist nicht
möglich. SMAA gibt es als Inject.
Bild: Nvidia
64 So funktioniert ein PC
Grafikkarte
Bei „Downsampling“ handelt
es sich um ein Kantenglättungsverfahren,
das ohne Ausnahme funktioniert
– im Gegensatz zu Multisample-AA,
welches mit vielen
neuen Spielen inkompatibel ist
oder trotz hoher Leistungskosten
nicht alle Kanten erfasst.
Downsampling:
Funktionsprinzip
Das Downsample-Funktionsprinzip
ist simpel: Die Spiele
werden von der Grafikkarte intern
mit einer sehr hohen Auflösung
berechnet und vor der
Ausgabe an den Monitor, der
eine geringere Auflösung darstellt,
he runtergerechnet. Der
letztgenannte Vorgang, bei dem
die Über-Information der internen
Auflösung auf das kleinere
Ausgabeformat gebracht wird,
nennt sich (namensgebend)
Downsampling.
Je größer die interne von der
externen Auflösung abweicht,
desto besser ist die Glättung
des ausgegebenen Bildes. Allerdings
ist es nicht zielführend,
intern wahllose Pixelmengen
zu berechnen, ideal
So funktioniert
Downsampling
sind ganzzahlige Faktoren. Ein
Beispiel dafür: Pro Achse, X
und Y, werden pro nativ dargestelltem
Pixel zwei Bildpunkte
verrechnet, was der Auflösung
3.840 x 2.160 zu 1.920
1.080 entspricht. Da jedes Picture
Element (Pixel) nur einen
Farbwert haben kann und
der Faktor 2:1 beträgt, werden
die Farben umliegender Pixel
gleichwertig miteinander verrechnet.
Downsampling-
Zukunft
Weder AMD noch Nvidia bieten
eine offizielle Unterstützung
für Downsampling an, die Technik
ist nach wie vor ein Feature
für Bastler. Dabei wissen die
beiden großen GPU-Hersteller
über die Beliebtheit des Features
bei Enthusiasten Bescheid
– doch nur Nvidia macht kleinere
Fortschritte auf dem Gebiet.
Wie Downsampling als
anisotroper Filter wirkt
Der durch Downsampling mögliche Gewinn an Texturqualität lässt sich
auch in Zahlen fassen: Wird die Render-Auflösung pro Achse verdoppelt,
dann tut es ihr der Anisotropie-Grad gleich. 3.840 x 2.160 bringt
auf 1.920 x 1.080 Pixel heruntergerechnet 2:1 AF. Zusammen mit 16:1
AF per Treiber bekommen Sie folglich 32:1 AF zu Gesicht, durch 2.880
x 1.620 noch 24:1 AF. Bei Radeon-Karten liegt das Limit bei ~22:1 AF
(2.720 x 1.530 Pixel).
WoW in 1.920 x 1.080
(kein AF, trilineare Filterung)
WoW in 3.840 x 2.160
(kein AF, trilineare Filterung)
Wie Downsampling für eine hochwertige Grafik sorgt
In hohen Auflösungen werden Texturdetails auch bei ungünstigen Winkeln länger aufrechterhalten als in niedrigen. Down sampling hilft ergo, dass filigrane
Strukturen nicht in einem groben Pixelraster verschluckt werden.
Bioshock Infinite in 1.920 x 1.080 (kein AF)
Bioshock Infinite in 3.840 x 2.160 (kein AF)
So funktioniert ein PC 65
Grafikkarte
SLI-on-a-Stick: Nvidia Geforce GTX 690
So funktionieren
Multi-GPU-Systeme
Ähnlich wie bei der Anzahl von Prozessoren
und deren Kernen lässt sich auch
die Grafikleistung steigern, indem mehrere
Chips parallel betrieben werden.
AMD wie Nvidia setzen seit Jahren auf Multi-GPU-Systeme – wie hier
auch auf einer einzigen Grafikkarte – als Speerspitze auf der Jagd nach
Benchmarkrekorden.
Der Slogan „Die Kraft
der zwei Herzen“ trifft
auf Grafikkarten schon
deutlich länger zu als auf Prozessoren
– zumindest für den
Heimanwender. Die Möglichkeit,
zwei Grafikkarten zu koppeln,
gab es schon im vorigen
Jahrtausend. Doch wie funktionieren
Multi-GPU-Systeme und
warum kommt es dabei bis heute
manchmal immer noch zu
Problemen?
Teamarbeit in der
IT-Steinzeit
Prozessoren sind nicht immer
so hoch integriert gewesen, wie
wir sie heute kennen. In den
Anfangsjahren und -jahrzehnten
war es eher die Regel als die
Ausnahme, dass verschiedene
Teile eines Systems in einzelne
Mikrochips gegossen waren.
Intels berühmt-berüchtigter
iAPX-432-Flop zum Beispiel
sollte zu Beginn der 1980er-Jahre
in drei einzelnen Chips – einer
zum Einlesen, einer zum
Berechnen und einer für die
Peripherie – die x86-Architektur
beerben. Diese nutzte selbst
jahrelang mehrere Chips: den
Hauptprozessor, die North- und
Southbridge (zusammen der
„Chipsatz“) und optional eine
x87-Gleitkommaeinheit.
Bei üblichen Grafikkarten fand
als letzter separater ASIC (Application
Specific Integrated
Circuit) der RAMDAC zur Signalumwandlung
für die Ansteuerung
analoger Monitore
den Weg in den integrierten
2D-Grafikchip.
Die gute alte Zeit
Mit dem Aufkommen von
3D-Beschleunigung erlebte
auch der einstige Multi-GPU-König
3Dfx seinen Aufstieg zum
Branchenprimus. Entgegen der
landläufigen Meinung nutzte
die „Voodoo-Grafik“ nämlich
schon auf den Einsteigerprodukten
das Zusammenspiel
mehrerer Chips: einer Bildpuffer-
und einer Textur-Einheit.
Die anfangs nur im professionellen
Markt erhältliche Kopplungstechnik
SLI, das steht damals
für Scan Line Interleave
(die Erklärung folgt später),
bringt 3Dfx 1998 mit der Voodoo
2 auch in den Spielermarkt.
Die Vorteile waren enorm:
Nicht nur erlaubte ein V2-SLI,
wie die Kombination aus insgesamt
sechs Recheneinheiten
auf zwei Karten abgekürzt wurde,
gegenüber einer Einzelkarte
die Erhöhung der maximalen
Auflösung von 800 x 600
auf 1.024 x 768 Pixel inklusive
Z-Puffer.
Auch die Fps-Leistung stieg in
den meisten Spielen deutlich
an, wenn der Hauptprozessor
die Daten nur schnell genug anliefern
konnte. So verwundert
es nicht, dass V2-SLI bald zur
Standardausrüstung gut betuchter
Gamer gehörte. Denn mit
Preisen von knapp 500 DM für
die 8-MiB- und knapp 600 DM
für die 12-MiB-Version war ein
Multi-GPU-System auch damals
kein billiges Vergnügen.
Viel mehr Leistung
Doch viel wichtiger war die Skalierbarkeit
der Lösung, also die
maximal mögliche Steigerung
der Bildrate. Von vielen im-
66 So funktioniert ein PC
Grafikkarte
mer noch als Heiliger Gral der
Multi-GPU-Systeme angesehen,
hatte es 3Dfx’ Scan Line Interleave
wesentlich einfacher als
heutige Lösungen, die Bildrate
ohne Nebenwirkungen zu verbessern.
Die geometrische Vorarbeit,
also das Berechnen des
kompletten Dreiecksgerüstes
eines jeden Bildes, wurde damals
noch vom Hauptprozessor
ausgeführt, sodass sich die beteiligten
Grafikchips lediglich
um die Pixelarbeit kümmern
mussten.
Mehrere, in der Regel zwei,
Karten arbeiten bei 3Dfx’ Scan
Line Inter leave gemeinsam
an der Berechnung jedes einzelnen
Bildes, welches dafür
in Zeilen(-gruppen) aufgeteilt
wurde. Bildübergreifende Darstellungstechniken,
vor allem
die sogenannten Post-Processing-Effekte,
gab es zu dieser
Zeit noch nicht. Daher können
die Voodoo-Chips noch problemlos
nach dem Fire-and-Forget-Prinzip
rechnen, denn einmal
berechnete Daten muss
die Zweitkarte nur über das interne
Kabel an die Primär-Voodoo
schicken, damit diese es
zusammen mit ihren eigenen
Bildzeilen an den Monitor sendet.
Geometrie und
Nachbearbeitung
Mit Direct X 7 kam hardwarebeschleunigtes
„Transform and
Lighting“, kurz HTnL, in den
Massenmarkt und die Geometrieverarbeitung
auf den Grafikchip.
Das erschwerte die Arbeitsteilung
mehrerer GPUs,
da man nun die Geometriearbeit
doppelt machen oder auf
die Hardwarebeschleunigung
verzichten musste, um den Pixelpart
dahinter aufteilen zu
können. Denn quasi „mitten im
Chip“ kann die nun fertig berechnete
Geome trie nicht mehr
abgefangen werden, um sie zeilenweise
auf die immer noch
chronisch überlasteten Pixelbeschleuniger
zu verteilen.
SLI-Pionier 3dfx (nun mit kleinem
„d“) entzog sich durch
einstweiligen Verzicht auf
HTnL dieser Problematik. Doch
andere Hersteller sannen auf
eine Lösung des Problems, darunter
Ati (später von AMD
aufgekauft) und die Firma 3D
Labs, Hersteller professioneller
3D-Beschleuniger für Workstations.
Während Letzterer auf
der Wildcat Realizm 800 einen
separaten Geometriebeschleuniger
(VSU, Vertex Scalable
Unit) vor zwei normale Grafikchips
schaltete, versuchte sich
Ati an der Rage Fury Maxx.
AFR-Technik
Diese setzte auf zwei ganz normale
Rage-Grafikchips samt jeweils
eigenem, 32 Megabyte
großem Grafikspeicher, wie sie
die Kanadier auch einzeln auf
ihren Grafikkarten verkauften.
Jeder dieser Chips arbeitete an
einem kompletten, eigenen
Bild, sodass auf Kosten eines
zusätzlichen Bilds die Bildrate
teils verdoppelt werden konnte.
Dieses AFR genannte Verfahren
erklären wir zusammen
mit anderen Möglichkeiten
auf der folgenden Seite. Da jedoch
die Rage- 128-Chips noch
über keine HTnL-Einheit verfügen,
musste der Prozessor dafür
schnell oder die Grafiklast hoch
genug sein.
Der Rage Fury Maxx war mit
dem Aufkommen von Windows
2000 ein jähes Ende beschieden,
da die Treiber nicht zur
AFR-Mitarbeit unter dem neuen
Betriebssystem bewegt werden
Warum Multi-GPU-Technik
schon jahrzehntealt ist
Multi-GPU-Systeme existierten bereits lange vor der Einführung des
Begriffs „GPU“ – die Technik stammt eigentlich aus dem Profibereich.
Bevor es „richtige“ 3D-Chips gab, arbeiteten bereits viele spezialisierte
Prozessoren zusammen an der Darstellung von 3D-Grafik – die damals
zumindest für die Echtzeitbearbeitung allerdings nur aus Drahtgittermodellen
bestand. Diese Chips wurden mit der Zeit immer spezialisierter,
sodass sich auf Workstation-Karten etwa von Evans & Sutherland,
Intergraph oder 3D Labs zunehmend die Aufteilung auf einen Geometriebeschleuniger
und einen Raster-Chip herauskristallisierte.
Im Gegensatz zu Direct X profitierte die Open-GL-Schnittstelle aus
diesem Grund auch quasi automatisch von GPUs mit Hardware-TnL.
Mit 3Dfx betrat 1996 ein neuer Spieler das Feld. Seine Wurzeln liegen
ebenfalls im professionellen Bereich, kamen die Gründer doch von Silicon
Graphics Inc. (SGI). Bei 3Dfx konzentrierte man sich von Anfang an
auf Spielegrafik – Voodoo Graphics war eigentlich für Spielhallen-Geräte
vorgesehen und setzte direkt auf die Zusammenarbeit mehrerer
Grafikchips auf verschiedenen Ebenen. Mindes tens ein sogenannter
Texel- und Pixel-FX waren nötig, damit überhaupt ein Bild entstand.
Optional ließen sich mehrere Karten per Scan Line Interleave, kurz SLI,
koppeln.
Was im Endkundenmarkt zunächst ein Preistreiber war, bedeutete für
Arcade-Automaten einfache Skalierbarkeit für verschiedene Aufgabengebiete,
sprich Spiele mit unterschiedlicher Komplexität. Den PC-
Markt eroberte man dagegen eher zufällig dank eines zeitlich genau
passenden Preisrutsches beim EDO-Speicher, welcher es erlaubte, die
Karte für rund 400 DM anzubieten.
Überblick: Multi-GPU-Anbieter
und -Lösungen
Hersteller Multi-GPU-Lösung Bemerkungen
3Dfx Scan Line Interleave Der Consumer-„Urvater“
3D Labs Vertex/Scalability Unit Separater Vertexprozessor
Ati (später AMD) Crossfire/Crossfire X Bis heute im Einsatz
Nvidia Scalable Link Interface Bis heute im Einsatz
S3 Multi-Chrome Rein PCI-E-basiert
XGI „Duo“ Nur auf Dual-GPU-Karten
So funktioniert ein PC 67
Grafikkarte
konnten und die neue, schnellere
Generation sowieso vor der
Tür stand.
Spätestens mit den vereinheitlichten
Shader-Prozessoren ab
Direct X 10 spielte das Problem
der doppelten Geometrieverarbeitung
zumindest aus Leistungssicht
nur noch eine untergeordnete
Rolle.
Post-Processing
Die zweite, weitaus gravierendere
Herausforderung jedoch
wurde mit der Zeit immer verheerender:
Nachbearbeitung
oder im IT-Sprech Post-Processing.
Dabei handelt es sich um
Filter oder Effekte, die auf das
komplette, fertige Bild angewandt
werden.
Was bei einzelnen Render-
Frames noch kein größeres Problem
im Zusammenhang mit
Multi-GPU-Systemen ist, wird
spätestens dann schwierig,
wenn ein Effekt Daten aus mehreren
Bildern verrechnen will.
Besonders spaßig wird es, sobald
das heute nahezu durchgehend
genutzte Alternate- Frame-
Rendering-Verfahren dabei zum
Einsatz kommt – doch dazu später
mehr.
Das Problem mit den
Bilddaten
Ein prominentes Beispiel für einen
solchen „Problem-Effekt“
ist die Bewegungsunschärfe.
Sofern sie nicht von der Spielengine
her bereits auf die Verwendung
mehrerer Grafikprozessoren
ausgelegt ist – denn
auch das wäre denkbar –, werden
hier die Daten mehrerer,
fertig berechneter Bilder benötigt,
um das optische Nachziehen
in Bezug auf Geschwindigkeit
und Richtung korrekt
umzusetzen.
In einem Multi-GPU-System
müsste nun theoretisch vor jedem
Bildwechsel einmal das aktuell
berechnete Werk an die
beteiligten GPUs verschickt
werden, damit diese für die
kommende Aufgabe die richtigen
Ausgangsdaten, also das aktuelle
Bild vorliegen haben.
Das gilt für Verfahren wie Tiling
und SFR. Doch sobald AFR ins
Spiel kommt, müssen die GPUs
streng genommen sogar in Reihe
arbeiten, wenn Sie jeweils
auf das zuletzt gerenderte Bild
ihres Partners warten und erst
dann selbst loslegen können.
Eine solche Konstellation erklärt
auch manchen Performance-Verlust
beim Einsatz eines
SLI- oder Crossfire-Systems.
Seit der (Wieder-)Einführung
von Multi-GPU-Systemen 2005
arbeiten die Entwickler-Kontakte
von Nvidia und AMD allerdings
mit Hochdruck daran,
dass in Spielen keine solchen
Performance-Killer mehr zum
Einsatz kommen – jedoch haben
sie dabei nicht immer Erfolg.
Mikroruckel-Manifestation
Aktuelle Multi-GPU-Systeme
sind, abgesehen von ihren Anschaffungs-
und Betriebskosten,
von drei Problemen geplagt,
die wir auch in diesem Artikel
nicht unerwähnt lassen wollen:
Abhängigkeit von einem funktionierenden
Treiberprofil, Eingabeverzögerung
und Mikroruckeln.
Treiberprofil
Ohne Ersteres weiß der Treiber
nicht, wie er die Arbeit möglichst
gut auf die beiden GPUs
verteilen soll, und arbeitet in einem
Standardmodus. Das kann
bei Spielen mit bekannter Engine
wie der UE3 recht gut funktionieren,
aber sogar ein Absinken
der Leistung bewirken.
Nvidia erlaubt Fortgeschrittenen
in Programmwerkzeugen
von Drittanbietern über sogenannte
SLI-Bits manuelle Eingriffe.
Die Treiberabteilungen von
AMD und Nvidia sind bemüht,
den Treiber für „wichtige“ Titel
rechtzeitig zur Veröffentlichung
oder groß angelegten Beta-Phase
fit zu machen. In seltenen Fällen
jedoch wird, wenn ein Spiel
größere Probleme bereitet, in
den Single-GPU-Modus zurückgeschaltet,
sodass der Spieler zumindest
keine Nachteile mehr
in Kauf nehmen muss.
Eingabeverzögerung
Die Eingabeverzögerung wird
durch den AFR-Modus bedingt,
weil hier schlicht und ergreifend
mindestens ein zusätzliches
Bild gerade „in Bearbeitung“
ist, welches in den Ablauf
von Eingabe, Verarbeitung und
Ausgabe eingebunden werden
muss und so die Verzögerung
zwischen Steuerbefehl
und Ausgabe des Monitorbildes
erhöht. Mit Direct X 11.2,
welches derzeit an Windows
8.1 gebunden ist, bringt Microsoft
mit „SetMaximumFrame-
Latency“ ein neues Kommando;
im Idealfall lässt sich damit
vom Entwickler beeinflussen,
wie hoch die Eingabeverzögerung
ausfallen darf – völlig klar
sind Funktion und Umsetzung
jedoch noch nicht.
Mikroruckeln
Das erwähnte Mikroruckeln
kann mehrere Ursachen haben
und wird technisch am besten
durch stark unregelmäßige
Bildlaufzeiten beschrieben,
die zum Beispiel durch Übertragung
von Bildinformationen
zwischen verschiedenen GPUs
zustande kommen können. So
kann ein Benchmark 30 Fps
bescheinigen, was 33 ms pro
Bild entspräche. Die ungleiche
Verteilung führt nun aber
dazu, dass Bild 1 nach 33 ms
ankommt, das parallel berechnete
Bild 2 mit 2 Millisekunden
Verspätung und weitere
Ergebnisse erst mal 64 Millisekunden
auf sich warten lassen.
Durch die Ungleichmäßigkeit
entsteht zwar kein Ruckeln im
eigentlichen Sinne, aber winzige
Hakler können sichtbar
werden und in jedem Fall fühlt
sich ein Spiel nicht so flüssig
an, wie es mit 30 gleichmäßigen
Bildern pro Sekunde der
Fall wäre.
Nvidia versucht derzeit, dem
mit einer Ausgabesteuerung im
Treiber entgegenzuwirken, und
auch AMD kündigte unlängst einen
Treiber mit sogenanntem
„Frame Pacing“ an.
Multi-GPU-Renderingverfahren
AMD und Nvidia haben es mit ihren
aktuellen Verfahren schwer,
ein einwandfreies Spiel erlebnis
anzubieten. Alternative Verfahren
stünden bereit und sind
auch bereits genutzt worden,
doch SFR und Tiling erfordern
mehr Aufwand bei der Arbeitsverteilung
und bringen keine
so eindrucksvollen Fps-Steigerungen
in Benchmarks.
Immerhin arbeiten beide Hersteller
inzwischen mehr oder
weniger aktiv an Lösungen,
um die Bildausgabe gleichmäßiger
zu gestalten. So wird
Multi-GPU-Rendering bis auf
Weiteres eine Ergänzung für
ambitionierte Anwender im
High-End-Bereich bleiben.
68 So funktioniert ein PC
Grafikkarte
Beispiel: Verarbeitung eines Tastendrucks
Wie Multi-GPU-Rendering funktioniert
Alternate Frame Rendering
Das meist als AFR abgekürzte Verfahren wird heute mit Abstand am häufigsten
genutzt, weswegen wir es zuerst beschreiben.
Beim AFR werden die beteiligten Grafikchips immer mit der Berechnung
eines kompletten Bildes beauftragt, welches sie nach Fertigstellung über
die MGPU-Brücken und/oder den PCI-Express-Anschluss an die Hauptkarte,
an welcher der Monitor angeschlossen ist, zurücksenden. Mithilfe
dieser Technik ist mit bis zu100 Prozent Fps-Zuwachs pro beteiligter GPU
die theoretisch höchste Leistungssteigerung möglich – was wohl auch ein
Grund für die Beliebtheit des Verfahrens ist. Ein weiterer Vorteil von AFR
ist die einfache Verteilung der Arbeit auch auf mehr als zwei Grafikkarten.
Die Nachteile wie eine erhöhte Eingabeverzögerung (Inputlag) werden
dabei prinzipbedingt in Kauf genommen. Auch die Tendenz zu Mikrorucklern,
verursacht durch ungleichmäßige Bildberechnungszeiten, muss sich
der Jagd nach höheren Bildraten meist unterordnen.
Split Frame Rendering
Das SFR-Verfahren ist dem Scan-Line-Interleave ähnlich: Das Bild wird
streifenweise zwischen den beteiligten Grafikkarten aufgeteilt.
Beim SFR, auch als Scissoring bekannt, wird das Bild horizontal geteilt.
Die Anzahl der Streifen ist theoretisch variabel, in der Praxis wurde bei
dem heute kaum noch genutzten Verfahren aber meist grob 60:40 zwischen
oberer und unterer Bildhälfte aufgetrennt, da im oberen Bereich
meist die wenig rechenintensive Himmelstextur den Löwenanteil der Fläche
beanspruchte und man eine möglichst gleichmäßige Verteilung der Rechenlast
für das komplette Bild erreichen wollte. Da die Dreiecke ohne Engine-Unterstützung
in der Regel erst nach der Rasterisierung der Bildhälfte
zugeordnet werden können, muss die Geometrieverarbeitung entweder
von einem separaten Prozessor oder auf jedem der Grafikchips redundant
erfolgen. SFR erlaubt, besonders in einer dynamischen Version, eine noch
gute Lastverteilung, aber keine Fps-Gewinne von 100 Prozent wie AFR.
GPU 2
GPU 1
GPU 1
GPU 2
(Super) Tiling
Tiling stammt vom englischen Wort für Kachel und entsprechend wird das
Bild hier nicht nur horizontal, sondern auch vertikal aufgeteilt.
Wie beim SFR muss hier für Geometrie zusätzlicher Aufwand betrieben
werden, da erst spät im Renderprozess feststeht, in welchem Bildbereich
das fertige Dreieck liegt. Mehr noch: Es kann auch in verschiedene
„Tiles“(oder Streifen) hineinragen und muss dann natürlich entsprechend
an alle ausführenden GPUs verteilt werden. Doch das Tiling hat einen entscheidenden
Vorteil: Es skaliert aufgrund der horizontalen wie vertikalen
Unterteilung unabhängig vom Bildinhalt gut mit einer variablen Anzahl an
GPUs und lastet diese voll aus. Theoretisch ist es bei verteiltem Rechnen
wie Raytracing-Farmen sogar möglich, vollkommen unterschiedliche
Prozessoren einzusetzen. Im Echtzeitbereich jedoch spielt auch der
Verteilungsaufwand eine wichtige Rolle, sodass von diesem Verfahren im
praktischen Einsatz wieder Abstand genommen wurde.
Scan Line Interleave
Der Urvater aktueller Multi-GPU-Systeme verteilt die Pixellast auf fest den
einzelnen GPUs zugeordneten Bildschirmstreifen.
Als 3Dfx die Multi-GPU-Bühne betrat, war die Pixelwelt noch in Ordnung,
sprich einfach und übersichtlich. Wenn der Arbeitsauftrag an die Pixelbeschleuniger
erging, war bereits klar, wo in der Szene welche Objekte und
Dreiecke hingehörten, und es musste sich nur noch um die Bildpunkte mit
überschaubarer Effektvielfalt gekümmert werden. Entsprechend leicht war
es für das Scan-Line-Interleave-Verfahren, das Bild in Streifen zu zerteilen
und an verschiedene Grafikkarten oder -chips zu verteilen. 100 Prozent
gesicherte Informationen sind schwer zu bekommen, doch deutet die verfügbare
Dokumentation auf einzeilige Streifen bei Voodoo und Voodoo 2
hin – Quad-basierte Pipelines und Texturcaches gab es noch nicht. Bei der
Nachfolgearchitektur VSA-100 auf den Voodoo-5-Karten sollen es dagegen
32 Pixel breite Interleaves gewesen sein. Mit einem solchen Schema konnte
man die Lokalität der Texturdaten mithilfe der Texturcaches besser nutzen.
GPU 1
GPU 2
GPU 1
GPU 2
So funktioniert ein PC 69
Das TesT-Magazin
für digitale UnterhaltUng
das beste aUs allen technik-Welten:
Flat-TVs | Smartphones | Tablets | Notebooks | Digitalkameras | Video | HiFi
plus: die coolsten sPiele und alle film-blockbUster
Auch als
Magazin-Variante
ohne DVD
für € 2,99
QR-Code scannen
und hinsurfen!
WWW.sPielefilmetechnik.de
Neue Ausgabe jetzt am Kiosk erhältlich
oder einfach online bestellen unter:
shop.spielefilmetechnik.de
Auch erhältlich als ePaper bei:
Mainboards
So funktioniert ein PC 71
Mainboard
Auf der Epoxidharz-
Platine eines Mainboards
werden
neben den elektronischen
Bauteilen
wie Kondensatoren
(rechts) alle wichtigen
Chips verlötet
– in der Bildmitte
zum Beispiel eine
SLI-Brücke.
Die Zahl der Schnittstellen „onboard“
nimmt stetig zu. Im Laufe der vergangenen
Jahre setzen sich zunehmend
Buchsen für eSATA, Firewire, Sound
und Display-Port durch.
So funktioniert
ein Mainboard
Das Mainboard (auch
„Hauptplatine“ oder
„Mother board“ genannt)
ist die Schaltzentrale
in jedem PC. Was der PC kann,
hängt zum großen Teil von
den Funktionen dieser Platine
ab. Wie die einzelnen Bauteile
funktionieren und welche
Techniken dabei zum Einsatz
kommen, zeigt der folgende Artikel.
Vielschichtige Bretter
Auch wenn hunderte Bauteile
auf einem aktuellen Mainboard
sitzen, ist die darunter liegende
Platine („Printed Circuit
Board“, kurz: PCB) mindestens
genauso wichtig wie die Masse
der Chips, die auf ihr sitzen.
Über das PCB werden alle Bauteile
mit elektrischer Energie
versorgt, auch der Datentransfer
findet darüber statt. Damit
dies möglich ist, ist die Platine
aus mehreren Schichten (engl.
„Layer“) aufgebaut, die unterschiedliche
Aufgaben übernehmen.
Je komplexer eine Hauptplatine
aufgebaut ist, desto mehr
Schichten (auch: Lagen, engl.:
Layer) hat sie. Während viele
Mittelklasse-Hauptplatinen aus
sechs Lagen aufgebaut sind,
handelt es sich bei Oberklasse-Mainboards
häufig um acht
Schichten: Die Anbindung von
sechs RAM-Steckplätzen für den
Triple-Channel-Betrieb stellt
beispielsweise bei Intel höhere
Ansprüche an das Design als
eine Dual-Channel-Anbindung
mit vier Slots. Selbst wenn sich
Datenleitungen so verlegen lassen,
dass ein Board mit weniger
Platinenlagen auskommt, werden
für eine stabilere Stromversorgung
oder eine bessere
Abschirmung der Schichten untereinander
zur Minimierung
elektromagnetischer Interferenzen
manchmal mehr Schichten
verwendet.
Der Chipsatz
Ein klassischer Mainboard-Chipsatz
umfasst eine North- und
eine South bridge. Deren Namensgebung
leitet sich von der
üblichen Positionierung auf
dem PCB ab – die Northbridge
sitzt oben, nahe bei der CPU
und dem RAM, die Southbridge
befindet sich unten, bei den
Steckplätzen für Erweiterungskarten
und Laufwerksanschlüssen.
Für diese Anordnung gibt
es einen guten Grund: Je näher
die Komponenten und Schnittstellen
bei einander liegen, die
über den Chipsatz kommunizieren,
desto effizienter ist der
Aufbau eines Mainboards. Je
mehr Leitungen quer durch die
Platine geführt werden müssen,
desto komplizierter gestaltet
sich die Entwicklung und Fertigung,
was unnötige Kosten verursacht.
Die Northbridge
Dieser Teil des Chipsatzes
hat in den letzten Jahren die
größte Änderung erfahren.
Sockel-775-Systeme waren im
Desktop-Bereich die letzten,
bei denen die Kommunikation
über einen Frontside-Bus erfolgte.
Sowohl AMD als auch Intel
ersetzten den veralteten Bus
durch eine schnelle Punkt-zu-
Punkt-Verbindung. Mit dieser
Änderung ging die Verlagerung
des Speichercontrollers von der
Northbridge in die CPU einher.
72 So funktioniert ein PC
Mainboard
Typischerweise war die verbaute
Northbridge namengebend
für den ganzen Chipsatz.
Die Southbridge
Die Southbridge sorgt dagegen
für die Schnittstellenvielfalt
im PC: USB, PATA, SATA und
LAN werden in der klassischen
Chipsatz-Architektur über die
Southbridge an das System angebunden.
Das Gleiche gilt für
den Onboard-Sound. Häufig
stellt die Southbridge weitere
PCI-E-Lanes bereit. Diese sind
aber nicht für die Grafikkarte,
sondern für zusätzliche Erweiterungskarten
oder einen LAN-
Chip vorgesehen.
Nur noch ein Chip
Vom Single-Chip-Design spricht
man, wenn die Aufgaben der
North- und Southbridge nur
von einem einzigen Chip erledigt
werden – daneben
können natürlich Dutzende
Einzelchips für andere Zwecke
auf dem Board sitzen. Das
Single-Chip-Design wurde früher
häufig bei Niedrigpreislösungen
verwendet, die weniger
Funktionen boten als teure
Chipsätze.
Mittlerweile werden aber immer
mehr Aufgaben des Chipsatzes
vom Prozessor übernommen;
der Speichercontroller
ist wie erwähnt bereits seit einigen
Jahren in den Prozessor
integriert und eine etwaige
Onboard-Grafik ist nun nicht
mehr „onboard“ – also auf dem
Mainboard – untergebracht,
sondern ebenfalls im Prozessor.
Das spart Kosten und erhöht
die Leistung.
Im Vergleich zu einer Northbridge
der späten 90er-Jahre
wäre eine aktuelle Northbridge
praktisch „leer“ – nahezu
alle Funktionen sind in andere
Komponenten „abgewandert“.
Intel nennt den zentralen Chip
nur noch „PCH“ („Platform
Controller Hub“). Dieser übernimmt
die verbliebenen Aufgaben
von North- und Southbridge.
Der Mainboard-Chip wird
meist entweder per PCI-Express
(bei Intel DMI, Direct
Media Interface genannt) oder
Hyper Transport (AMD) an den
Prozessor angebunden.
Das BIOS
Beim Basic Input Output System
handelt es sich um die Firmware
eines PCs, die auf einem
EEPROM oder Flashspeicher abgespeichert
ist und nach jedem
Start des PCs ausgeführt wird.
Noch bevor Windows geladen
wird, sorgt es dafür, dass alle
wichtigen Systemkomponenten
auf ihre Funktion überprüft
und angesprochen werden können.
Der BIOS-Nachfolger (U)
EFI erlaubt hier noch weit mehr
Funktionen und sorgt für eine
einfachere Bedienung, mehr Informationen
dazu finden Sie im
entsprechenden Abschnitt auf
den folgenden Seiten.
Updates
Fehler im BIOS können heutzutage
bei jedem Mainboard
durch Flashen, also das Neubeschreiben
des Chips mit einer
neuen BIOS-Version, behoben
werden. Das war früher nicht
möglich und hat sich erst in den
90er-Jahren flächen deckend
durchgesetzt. Angebunden wird
das BIOS bei aktuellen Boards
häufig über den Serial Peripheral
Interface Bus (SPI). Befindet
sich am Mainboard ein SPI-Anschlussfeld,
kann das BIOS
auch über ein externes Gerät
wie das DFI BIOSecure aktualisiert
werden. Es ist übrigens
Einige Mainboards können die Funktionen hochwertiger Soundkarten
übernehmen – hier im Bild Creatives Soundcore-3D-Chip auf einem Gigabyte
G1.Sniper5.
Wie sich Mainboards
weiterentwickelt haben
In den vergangenen Jahren hat sich viel getan, wie ein Vergleich
zwischen einem Epox 8NPA SLI von 2005 (Bild unten) und der Standardausstattung
aktueller Platinen zeigt: Das Epox-Board hat nur zwei
RAM-Slots (2013: 4-6 Slots), die kompatiblen Sockel-754-CPUs bieten
lediglich einen Single-Channel-Modus (2013: Dual/Triple Channel). Der
zusätzliche 12-Volt-ATX-Stromstecker ist 4-polig, bei aktuellen Platinen
ist er 8-polig ausgeführt.
Obwohl das Board vier Mal SATA 3 Gb/s zur Verfügung stellt (2013: 6 x
SATA 6 Gb/s), sind noch zwei PATA-Anschlüsse verbaut (2013: max. 1
x PATA). Der BIOS-Chip ist gesockelt (2013: oft nicht wechselbar). Es
gibt keine separate North- und Southbridge, der Nforce 4 SLI ist wie
die PCHs von Sockel-1155-Boards im Single-Chip-Design ausgeführt.
Gekühlt wird der Chip aktiv, 2013 ist Passivkühlung populär.
So funktioniert ein PC 73
Mainboard
Spannungsversorgungen
im Vergleich
Hochwertige Komponenten bei der Spannungsversorgung haben
großen Einfluss auf die Stabilität – besonders im übertakteten Zustand.
Klassische Elektrolytkondensatoren und Drosseln („Chokes“)
mit Eisenkern sind mittlerweile out. Die langlebigeren Solid Caps und
Ferrit-Chokes sind hingegen auch heute noch auf günstigen Boards
üblich.
2007: Simple Kondensatoren und Eisen-Chokes.
2009: Solid Caps und Chokes mit Ferrit-Kern.
2013: Blackwing-Chokes mit Goldschicht und Kühlung.
ein Irrtum, dass vom Hersteller
vorkonfigurierte Fertigrechner
mit OEM-Mainboard lediglich
ein (modifiziertes) BIOS benötigen,
um übertaktet werden zu
können. Besonders häufig bei
Notebooks ist der Taktgeber
gegen das Absenken und Anheben
des Systemtakts geschützt,
sodass Lötarbeiten erforderlich
sind, um den PC außerhalb der
Spezifika tion zu betreiben.
ISA undercover
Manche Leser werden sich vielleicht
noch an den 1981 eingeführten
ISA-Bus erinnern, der
Mitte der Neunziger vom PCI-
Bus abgelöst wurde. Nach fast
30 Jahren steckt immer noch
ein Teil ISA-Technik in aktuellen
Mainboards, auch wenn die dazugehörigen
Erweiterungskarten
ausgestorben sind. Die Rede
ist vom Low Pin Count (LPC),
der auf Software-Ebene wie ein
ISA-Bus angesprochen wird.
Im Gegensatz zu PCI(-Express)
wird der LPC-Bus nicht für Erweiterungskarten
ausgeführt,
sondern dient lediglich der Anbindung
veralteter Peripherie
zum Beispiel über PS/2, der seriellen/parallelen
Schnittstelle
und den Floppy-Anschluss.
CPU-Versorgung
Auch wenn jedes Bauteil auf der
Hauptplatine mit Energie versorgt
werden muss, unterscheidet
sich die Stromversorgung
des Hauptprozessors allein im
Umfang deutlich von der anderer
Komponenten. In den letzten
Jahren ist die Bedeutung der
Spannungsversorgung gewachsen.
Dies verwundert nicht,
denn sie trägt maßgeblich zur
Energieeffizienz, zur Langlebigkeit
und zum Overclocking-Potenzial
bei. Die Stromversorgung
umfasst im Wesentlichen einen
PWM-Controller für die einzelnen
Phasen, MOSFETs samt
Treiber, Kondensatoren und
Spulen. Auch wenn allgemein
nur von der CPU-Spannung die
Rede ist, liegen innerhalb eines
Prozessors verschiedene Spannungen
für unterschiedliche
Teilbereiche an.
Bei aktuellen Prozessoren wird
der Uncore- bzw. North bridge-
Teil der CPU unabhängig von
den Kernen versorgt. Aus diesem
Grund werden die einzelnen
Phasen getrennt genannt:
Erfolgt die Stromversorgung
etwa über „4+1 Phasen“, so sind
von den insgesamt fünf Phasen
vier für die Kernspannung und
eine für den Uncore-/Northbridge-Bereich
zuständig. Bei
manchen CPUs kommt noch
die Spannung für die integrierte
Grafikeinheit hinzu. Die
Energiezufuhr der CPUs wird
seit mehreren Jahren über die
12-Volt-Schiene des Netzteils realisiert.
Brandneue CPUs (Haswell) verfügen
über einen integrierten
Spannungswandler, der alle
Kerne und den Ringbus mit
Strom versorgt. Die Spannungswandler
auf dem Mainboard
fallen dann deutlich kompakter
aus als bislang.
Phasen
Je mehr Phasen ein Mainboard
hat, desto besser lässt sich die
Last auf verschiedene MOS-
FET-Gruppen verteilen: Bei
vier Phasen beträgt die effektive
Arbeitszeit nur 25 Prozent,
bei sechs liegt sie schon unter
20 Prozent. Damit das funktioniert,
muss der Phasenwechsel
zuverlässig funktionieren.
Mehr Phasen sind nicht zwangsläufig
besser, da auch die Qualität
der einzelnen Bauteile
74 So funktioniert ein PC
Mainboard
eine große Rolle spielt und bei
zunehmender Komplexität Signal-
und Timing-Proble me eher
auftreten können. Auch die
Energieeffizienz kann von einer
überdimensionierten Stromversorgung
in Mitleidenschaft
gezogen werden. Bei manchen
Mainboards wird die Phasenanzahl
daher lastabhängig variiert.
Trends
Statt Bus-Systemen (FSB, PCI)
sind heute Punkt-zu-Punkt-Verbindungen
angesagt, deren
Datentransferrate deutlich hö-
her ist. Auch die Verfrachtung
des RAM-Controllers und aller
Cache-Stufen vom Mainboard
in die CPU zeigt, dass es bei
grundlegenden Veränderungen
meist darum geht, für die Leistung
entscheidende Bestandteile
nicht durch ihre Anbindung
auszubremsen. Im Retail-Markt
setzen die Hersteller neben der
Optik und besserer Ausstattung
inzwischen verstärkt auf Übertaktungsfunktionen,
um sich
von der Konkurrenz abzuheben
und die Produktpalette zu komplettieren.
Mainboard-Anschlüsse in der Übersicht
1 3 5
2
7
9 9
2
4
6
8
2 10
1 PS2-Anschluss
5 Bluetooth-Dongle
9 Netzwerk-/Ethernet-
Anschluss
2 USB-2.0-Anschüsse 6 E-SATA-Anschluss
3 Koax. S/PDIF-Ausgang 7 Firewire-Anschluss
10
USB-3.0-Anschlüsse
(blau!)
4 Opt. Digitalausgang 8 E-SATA-p-Anschluss
So funktioniert ein PC 75
Mainboard
Die Mainboard-Bauteile im Detail
PCI-Express-Slot
Von den sechs mechanischen PCI-E-16x-
Steckplätzen sind nur der erste und der fünfte
von oben auch elektrisch als 16x-Variante
ausgeführt.
PCI-Slot
Der einzige PCI-Slot ist an die Southbridge
angeschlossen und teilt sich den PCI-Bus
mit dem Firewire-Controller T.I. TSB43AB23.
Beispiel: Verarbeitung eines Tastendrucks
Taktgeber
Der von Realtek stammende Taktgeber
Realtek RTM880N-793 ist programmierbar
und ermöglicht somit das Übertakten des
Systems.
Dual-BIOS-ROM
Da ein Mainboard lediglich einen BIOS-Chip
benötigt, dient der zweite als Backup. Nicht
gesockelte Chips lassen sich nicht austauschen.
Anschlussfeld
Hier werden der An- und Aus- sowie der Resetknopf
des Gehäuses und Zustands-LEDs,
die z. B. die Festplattenaktivität anzeigen,
angeschlossen.
Batterie
Die Batterie sorgt dafür, dass bestimmte
Daten wie die Uhrzeit und das Datum nicht
bei jedem Start erneut eingegeben werden
müssen.
76 So funktioniert ein PC
Mainboard
Externe Anschlüsse
Neben Eingabegeräten (PS/2, USB) lassen
sich hier unter anderem Plug&Play-Datenspeicher
(USB/E-SATA), Netzwerk-Hardware
(LAN) und Audio-Geräte anschließen.
CPU-Stromversorgung (8 + 2 Phasen)
Einer der PWM-Controller ist der ISL6324ACRZ von Intersil. Für die
Stromversorgung der CPU sowie der CPU-Northbridge kommen zehn
Polymerkondensatoren und Ferritkernspulen sowie 20 MOSFETs zum
Einsatz.
Stroman schluss
Mit Energie wird das Mainboard über einen
24-poligen ATX-Stromanschluss und ein
separates, 8-poliges ATX-12-Volt-Anschlussfeld
versorgt.
CPU-Sockel AM3
Obwohl Sockel-AM3-Prozessoren über
938 Pins verfügen, gibt es im Sockel 941
Kontaktstellen, wodurch unter anderem die
Abwärtskompatibilität zu Sockel-AM2(+)-
CPUs sichergestellt wird.
Northbridge
Der 890FX-Chip bietet 42 PCI-E-2.0-Lanes.
Davon werden bis zu 32 von Grafikkarten
genutzt. Eine PCI-E-Lane nutzt der USB-3.0-
Controller von NEC.
Southbridge
Die Southbridge bietet
Anschlüsse für USB und
SATA 6 Gb/s. An sie angeschlossen
sind neben
dem PCI-Bus Chips für
Audio, Firewire, LAN
sowie alte Schnittstellen
über den LPC-Bus.
DDR3-RAM-Slots
Für den Dual-Channel-Betrieb muss ein
Speicherriegel-Paar in gleichfarbige Slots
eingesetzt werden. Maximal lassen sich 4 x
4 GiBye verbauen. Der Arbeitsspeicher ist
direkt an die CPU-Northbridge angebunden.
Stroman schluss
Mit Energie wird das Mainboard über einen
24-poligen ATX-Stromanschluss und ein
separates, 8-poliges ATX-12-Volt-Anschlussfeld
versorgt.
So funktioniert ein PC 77
Mainboard
Der Speicherchip,
der das zentrale
Steuerprogramm
eines PCs enthält,
ist meist an einem
Aufkleber mit dem
Herstellernamen
zu erkennen.
Während das BIOS älterer PCs spartanisch blau daherkommt (rechts),
ähnelt der BIOS-Nachfolger UEFI (links) einem Mini-Betriebssystem mit
grafischer Oberfläche und Maus-Unterstützung.
Um eine Windows-8-Zertifizierung zu erhalten, muss die Hauptplatine
eine UEFI-Implementierung haben. Damit wird das klassiche BIOS in
den kommenden Jahren allmählich vom Markt verschwinden.
So funktioniert
das BIOS
Für die Steuerung des PCs
ist eine kompakte Software
nötig, die in einem
kleinen Speicherchip auf dem
Mainboard untergebracht ist.
Wie das sogenannte „BIOS“
funktioniert, zeigt der folgende
Artikel.
Systemstart
Das BIOS, ausgeschrieben „Basic
Input Output System“, ist
das erste Programm, das beim
Start eines PCs aufgerufen
wird. Mit dessen Hilfe werden
weitere höhere Programme,
beispielsweise Windows, ausgeführt
und auch die zur Verfügung
stehende Hardware ermittelt.
Es handelt sich dabei um
einen nicht flüchtigen Speicher
auf dem Mainboard, den der
PC beim Systemstart automatisch
ausliest. Wird dieser beim
Hochfahren beschädigt, kann
der PC nicht mehr fehlerfrei
starten (engl.: „booten“).
Wozu dient das
BIOS?
Das BIOS beseitigt zwei Probleme,
die ansonsten beim
Hochfahren jedes Rechners
auftreten würden: Zum einen
kümmert es sich um das sogenannte
„Bootstrapping“. Darunter
versteht man Folgendes:
Programme und Software sind
im Regelfall auf einem Datenträger,
zum Beispiel der Festplatte,
abgespeichert. Diese
Daten müssen, bevor sie verwendet
werden können, zunächst
in den Hauptspeicher
des PCs gelesen werden. Für
diesen Vorgang benötigt die
CPU aber wiederum Software.
Somit entsteht das klassische
Henne-Ei-Problem.
Bei frühen Rechnern wurde
dieses dadurch gelöst, dass das
System nach dem Anschalten
in einen Pausemodus versetzt
wurde. Anschließend wurde
entweder manuell oder mittels
spezieller Hardware ein minimales
Programm in den Hauptspeicher
gebracht, das man als
Bootloader, Ladeprogramm
oder Urlader bezeichnet. Dieses
Minimalsystem ist heute Teil
des Basic Input Output Systems.
Da dieses automatisch beim
Start des Rechners ausgeführt
wird, ist das Henne-Ei-Problem
somit gelöst.
Ein weiteres Problem ist, dass
ein Rechnersystem aus unterschiedlichsten
Hardware-Komponenten
zusammengesetzt
ist. Jede einzelne benötigt
eine spezielle Ansteuerungssoftware
(Treiber). Dadurch musste
früher ein Betriebssystem
auf jeden Rechnertyp speziell
zugeschnitten werden. Dieses
Problem wird dadurch gelöst,
dass die Ansteuerungssoftware
in das BIOS ausgelagert wird.
Somit kann das Betriebssystem
auf diese zugreifen. Aktuelle Betriebssysteme
verwenden diese
Standard-Treiber aber nur in
der Ladephase und greifen danach
auf optimierte Treiber zur
Leistungssteigerung zurück.
Wo finde ich das
BIOS?
Das BIOS befindet sich als separater
Baustein auf der Hauptplatine
des Rechners. Zum Einsatz
kommen entweder EPROMs
oder Flash-Speicher. Der Hauptunterschied
zwischen den beiden
Speicherlösungen besteht
78 So funktioniert ein PC
Mainboard
darin, dass Erstere nicht ohne
Weiteres überschreibbar ist,
wohingegen die andere annähernd
beliebig oft neu bespielt
werden kann. Lokalisiert ist das
BIOS im Regelfall auf einem herausnehmbaren
Speicher-Chip
auf der Vorderseite des Mainboards.
Was passiert beim
Starten?
Im Wesentlichen lässt sich der
Startvorgang des BIOS in zwei
Aufgabengruppen einteilen:
Zum einen wird der Power-
On-Self-Test (POST) ausgeführt
und zum anderen die Hardware
initialisiert. Bei Ersterem handelt
es sich um einen Vorgang,
in dem überprüft wird, ob die
grundlegenden Elemente des
PCs funktionstüchtig sind. Fehler
in dieser Phase werden in
der Regel durch die bekannten
Pieptöne gemeldet. Einige
Mainboards verfügen alternativ
über eine zweistellige Digitalanzeige
für die Fehlerdarstellung.
Der POST geht nach folgender
Priorisierung vor: Zuerst wird
die Funktionsfähigkeit der CPU
überprüft und anschließend
eine Prüfsummenbildung des
CMOS-RAM vorgenommen. Damit
wird die Integrität des Systems
sichergestellt. Daraufhin
werden sowohl der Cache- als
auch der Grafik- sowie der Anfang
des Arbeitsspeichers getestet.
Wenn die Prüfung erfolgreich
ist, kann die Grafikkarte
in Betrieb genommen werden.
Dadurch werden die weiteren
Tests auf dem Bildschirm sichtbar.
Test der Hardware
In der Regel folgt nun die Untersuchung
des restlichen Arbeitsspeichers
und anschließend
wird geprüft, ob Tastatur und
andere Peripheriegeräte wie
Festplatten vorhanden sind.
Abhängig vom verwendeten
BIOS können weitere Tests
hinzukommen oder einzelne,
etwa die Überprüfung des Arbeitsspeichers,
abgeschaltet
werden. Dazu kann während
des POST-Vorgangs das BIOS-
Set up-Programm aufgerufen
werden. Der Power-On-Self-Test
ist damit abgeschlossen und es
beginnt die Initialisierung der
zur Verfügung stehenden Hardware.
In dieser Phase werden beispielsweise
die vorhandenen
Steckkarten erkannt. Hierzu
wird in einem speziellen Speicherbereich
des BIOS, dem sogenannten
„ESCD“ (Extended
System Configuration Data),
die Ressourcenzuteilung der
Erweiterungskarten abgelegt.
Im späteren Verlauf kann das
Betriebssystem beispielsweise
auf diese Informationen zurückgreifen.
Ist die Initialisierung
abgeschlossen, wird der
Benutzer zur Eingabe des BI
OS-Passworts, falls gesetzt, aufgefordert.
Sofern vorhanden,
werden nun BIOS-Erweiterungen
diverser Untersysteme, beispielsweise
dem Grafik-Chip,
dem RAID-Controller oder dem
Netzwerk-Chip, ausgeführt.
Danach legt das BIOS fest, von
welchem Datenträger das Betriebssystem
gestartet werden
soll. Abschließend wird der
darauf befindliche Bootloader
und damit das Betriebssystem
ausgeführt.
BIOS und Sicherheit
Das BIOS stellt auch eine Sicherheitsstufe
dar, die den unberechtigten
Zugriff auf den
Rechner verhindern kann.
Dazu dient zum einen das
BIOS-Passwort und zum ande
BIOS-Varianten
Der POST-Screen zeigt meistens
unter anderem Infos zu CPU, RAM,
Laufwerken und angeschlossenen
USB-Geräten, wird aber oft durch ein
Herstellerbild verdeckt.
Neben den gesockelten BIOS-Bausteinen (oben) finden derzeit gerade
aufgelötete Chips (Mitte) den Weg auf die Boards. Letztere kommen
meist in doppelter Form vor. Sapphire und EVGA setzen auf eingekapselte
Bausteine (unten).
Gesockeltes BIOS
Gelötetes BIOS
Eingekapseltes BIOS
So funktioniert ein PC 79
Mainboard
Master-Passwörter
für Award-BIOS
256256 bios lkw peter
589589 BIOS lkwpeter
589721 biosstar PASSWORD
1322222 biostar SER
?award CONCAT setup
1EAAh CONDO SKY_FOX
admin condo SWITCHES_SW
alfarome djonet Sxyz
aLLy efmukl SZYX
aPAf g6PJ t0ch20x
award h6BB t0ch88
AWARD SW HELGA-S ttptha
award_? HEWITT RAND TTPTHA
award_ps HLT TzqF
AWARD_PW j09F wodj
AWARD_SW j256 ZAAADA
AWARD?SW j262 zbaaaca
award.sw j322 zjaaadc
awkward j64 zjaaade
Master-Passwörter
für AMI-BIOS
589589 AMI.KEY AMISETUP
ami ami.kez bios310
A.M.I. ami° BIOSPASS
aammii AMI~ CMOSPWD
AMI amiami helgasss
AMI_SW amidecod HEWITT RAND
AMI!SW amipswd KILLCMOS
AMI?SW
AMIPSWD
So gelangen Sie ins BIOS
Hersteller
AMI-BIOS
Award-BIOS
Ebenfalls häufig
Alte Systeme
Tastenkombinationen
Entf, F1
Entf, Strg + Alt + Esc, Strg + Alt + S
Esc, F1, F2
Alt + Enter, F10, Strg + Alt + Einfg, Strg + Alt + Enter,
Strg + Alt + Esc, Strg + Alt + S, Strg + S
ren das BIOS-Setup-Passwort.
Beide können in der Regel unabhängig
voneinander gesetzt
werden. Ziel des BIOS-Passworts
ist es, noch vor dem
Starten des Betriebssystems
die Nutzungsberechtigung des
Computers zu erfragen, wohingegen
das Setup-Passwort
nur die Anpassungen am BIOS
beschränkt. Der tatsächliche
Schutz, den die beiden Passwort-Abfragen
darstellen, ist
jedoch eher zweifelhafter Natur,
da sie über diverse Mechanismen
ausgehebelt werden
können.
BIOS zurücksetzen
Falls Zugriff auf die Hardware
des Rechners besteht, ist es
ein Leichtes, das BIOS-Passwort
zurückzusetzen. Abhängig
vom eingebauten Mainboard
kann dies entweder über das
temporäre Entfernen der BI-
OS-Batterie oder das Löschen
des CMOS über Schalter sowie
Jumper-Stellung bewerkstelligt
werden. Zur Rücksetzung des
CMOS auf die Standardwerte benötigen
Sie in der Regel die Beschreibung
Ihrer Hauptplatine.
In dieser finden Sie im Normalfall
den Eintrag „Clear CMOS“.
Dabei handelt es sich entweder
um einen gesonderten Schalter
oder eine Kombination aus
zwei Pins und einem Jumper.
Wenn Sie diesen betätigen beziehungsweise
entfernen, wird
das CMOS zurückgesetzt. Beachten
Sie, dass dazu eventuell
der Rechner von der Steckdose
getrennt werden muss.
Als Alternative zur Löschung
des CMOS können Sie auch versuchen,
über ein Masterpasswort
Zugriff auf den Rechner
zu erlangen. Beachten Sie, dass
Masterpasswörter nur auf älteren
Boards funktionieren. Neuere
Varianten generieren in der
Regel anhand der Seriennummer
einen eigenen Schlüssel,
der dann ausschließlich auf diesem
System funktioniert.
Sollte lediglich das BIOS-Setup
mit einem Passwort versehen
sein, besteht zusätzlich die
Möglichkeit, dieses über die
Systemkonsole zurückzusetzen.
Wählen Sie dazu im Startmenü
von Windows „Ausführen“
aus. Alternativ können Sie auch
„Windows-Taste + R“ benutzen.
Geben Sie nun im Ausführen-Dialog
„cmd“ ein und klicken Sie
auf „OK“. In der erscheinenden
Systemkonsole tippen Sie einen
der folgenden Befehlsblöcke
ein:
debug
o 70 2e
o 71 ff
Q
debug
o 70 17
o 71 17
Q
Da die oben aufgeführten Befehle
je nach BIOS-Typ variieren
können, besteht keine Garantie,
dass sie auch auf Ihrem
PC funktionieren. Falls Sie jedoch
tatsächlich das Passwort
für das Setup vergessen haben,
schadet ein Versuch auch nicht.
Grundsätzlich bietet das BIOS
eine geringe Sicherheit. Da nur
der Zugriff auf das Rechnersystem
als Ganzes unterbunden
wird, bleiben die Daten auf der
Festplatte ungeschützt. Im einfachsten
Szenario kann also einfach
der Datenträger ausgebaut
und mit einem anderen System
verbunden werden, um Zugriff
auf die darauf befindlichen Informationen
zu erhalten.
80 So funktioniert ein PC
Mainboard
Der Aufruf des Setups
muss in der Regel in
den ersten Sekunden
des Neustarts erfolgen. Dazu
wird normalerweise die Taste
„F2“ oder „Entf“ betätigt. Sollte
dies ohne Auswirkungen bleiben,
müssen Sie in Ihrer Mainboard-Beschreibung
nachschlagen.
Setup aufrufen
In manchen Fällen wird auch
die nötige Taste beim Boot-Vorgang
angezeigt. Viele aktuelle
BIOS-Versionen quittieren
den Tastendruck, indem der
Ladebildschirm zum Beispiel
„Entering Setup“ anzeigt. Ist der
bereits beschriebene POST-Vorgang
abgeschlossen, gelangen
Sie in das Set up. Hier können
Sie auf diversen Seiten unterschiedliche
Einstellungen vornehmen.
Die gängigste Einteilung
möchten wir anhand eines
Award-BIOS etwas näher erläutern.
Die BIOS-Einstellungen
und -Menüs im Einzelnen
Die einzelnen Funktionen sind übersichtlich
in Gruppen zusammengefasst
(siehe Fließtext).
Standard CMOS
Features
In diesem Menü können unter
anderem Laufwerke, beispielsweise
Festplatten, die während
des POST-Vorgangs erkannt
wurden, nachträglich konfiguriert
werden. Dadurch lässt sich
der Startvorgang beschleunigen.
Daneben besteht auch die
Option, Datum und Uhrzeit des
Systems einzustellen. Häufig
werden zudem Informationen
über die Größe des eingebauten
Arbeitsspeichers dargestellt.
Adv. BIOS Features
Dieser Abschnitt bietet erweiterte
Funktionen des BIOS.
Dazu zählen unter anderem
die Konfigura tion der Boot-Reihenfolge
oder die Anzeige des
Full-Screen-Logos. In vielen Fällen
kann hier auch eingestellt
werden, ob sich das Passwort
lediglich auf das Setup, den
Boot-Vorgang oder beides beziehen
soll.
Integrated
Peripherals
Unter diesem Bereich werden
weitere Konfigurationsmöglichkeiten
der Hardware-Komponenten
angeboten. Hierzu
zählen der Onboard-Netzwerkchip
sowie der SATA-Controller.
Auch der Soundchip des Boards
kann hier meist an- oder abgeschaltet
werden.
Power Management
Setup
Hier können Sie beispielsweise
einstellen, wie sich das System
beim Drücken des Netzschalters
verhalten soll. Besonderes
Augenmerk sollten Sie in die-
sem Menü auf den ACPI-Modus
legen. Über diesen können Sie
festlegen, welchen Stromsparmodus
das System maximal
nutzen kann. Zur Auswahl stehen
in der Regel die Modi S1,
S3 oder S4. Letzterer stellt dabei
Eine Ausnahme stellen Mainboards mit
Ami-BIOS-Oberfläche dar; neben den
Bezeichnungen für die meisten Optionen
ist auch das Design leicht geändert. Die
Funktionen sind aber dieselben.
den Ruhezustand dar, bei dem
der Inhalt des Arbeitsspeichers
auf der Festplatte gespeichert
wird. Um dies verwenden zu
können, muss jedoch unter
Windows die entsprechende
Einstellung unter „Systemsteu-
So funktioniert ein PC 81
Mainboard
Unter „PC Health Status“ (Award) zeigt das BIOS einige Kennzahlen wie
die aktuelle CPU-Temperatur oder die Lüfterdrehzahlen an.
Bessere Hauptplatinen bieten über das BIOS
oder UEFI Hilfsprogramme, die den Anwender
beim Übertakten unterstützen sollen. Der
Nutzen ist jedoch zweifelhaft, denn nicht immer
sind die Tools auch ausgereift.
BIOS zum Durchklicken: Die Seite von JZ Electronic liefert zu mehr als
100 Gigabyte-Hauptplatinen die entsprechenden BIOS-Menüs. Zusätzlich
werden Detail-Informa tionen zu den einzelnen Einstellungsmöglichkeiten
angeboten.
erung“ – „Energiemanagement“
vorgenommen werden. Daneben
unterstützen viele Boards
Funk tionen zum Anschalten
des Systems über Maus sowie
Tastatur oder sogar einen automatischen
Start zu einer bestimmten
Uhrzeit.
PnP/PCI
Configurations
Dieses Menü dient zur Einteilung
von Systemressourcen.
Beispielsweise können hier
IRQs und DMAs vergeben werden.
Bei Ersteren handelt es
sich um eine Unterbrechungsaufforderung,
die von einer
Hardware-Komponente gesendet
wird, wenn ein neues Ereignis
eintritt.
Dies wird beispielsweise ausgelöst,
wenn auf der Netzwerkkarte
Daten empfangen
werden. Unter DMA verbirgt
sich eine Adresse des Arbeitsspeichers.
Auf diese kann die
Hardware-Komponente direkt
zugreifen, ohne den Umweg
über den Prozessor gehen zu
müssen. Dadurch wird dieser
nicht ausgebremst und kann
für andere Auf gaben eingesetzt
werden.
PC Health Status
In diesem Abschnitt des BIOS
können primär Informationen
über das System angesehen
werden. Beispielsweise werden
hier Details zu den verschiedenen
Spannungen für CPU und
Arbeitsspeicher, die aktuellen
Drehzahlen der angeschlossenen
Lüfter oder die aktuelle
Temperatur von Prozessor und
Mainboard-Chip (meist nur ein
angenäherter Wert) angezeigt.
Darüber hinaus kann häufig
auch ein Grenzwert für Temperatur
oder Drehzahl festgelegt
werden.
Zusätzlich zu den beschriebenen
Menüs werden meist
Funktionen für das Laden der
Werkseinstellungen oder einer
optimierten BIOS-Konfiguration
angeboten. Auch das Setzen
des Passworts wird in der Regel
als separater Punkt im Hauptfenster
aufgelistet. Wenn Sie
alle Einstellungen vorgenommen
haben, können Sie über
„Save and Exit“ das BIOS-Setup
verlassen und das System mit
der angepassten Konfiguration
neu starten. Zum Verwerfen
der Änderungen wählen Sie die
Funktion „Exit without Saving“.
Hilfeseiten
Weiterführende Infos über das
BIOS finden Sie in der Regel
auf der Hersteller-Homepage
Ihrer Hauptplatine. Darüber
hinaus haben sich aber auch
weitere Internet-Projekte dieses
Themas angenommen. Das
Referenzwerk bildet hierbei
das BIOS-Kompendium, das
aber leider nicht mehr weiter
aktiv betreut wird; für ältere
Platinen sind die Erläuterungen
aber noch immer hilfreich. Unter
www.bios-kompendium.de
finden Sie die Informationen
zu BIOS-Typen verschiedener
Hersteller.
Ein weiteres Projekt, das hier
Erwähnung finden sollte, ist
die Seite www.jzelectronic.de.
Diese Webseite hat sich dem
Hersteller Gigabyte verschrieben
und bietet unter „Support“
– „BIOS Anleitung“ – „Gigabyte
BIOS Anleitungen“ Übersichten
zu mehr als 100 BIOS-Varianten
aktueller Boards. Hierbei
werden die BIOS-Menüs zum
Durchklicken samt weiterführenden
Beschreibungen angeboten
und bilden so quasi ein
virtuelles BIOS des gewählten
Mainboards.
82 So funktioniert ein PC
Mainboard
Obwohl BIOS und UEFI
sehr ähnliche Aufgaben
erfüllen, ist der
technische Unterschied gewaltig.
Wir geben einen Überblick,
was das UEFI („Unified Extensible
Firmware Interface“) technisch
von seinem Vorgänger unterscheidet.
Implementierung
Ähnlich wie das klassische BIOS
ist das UEFI zunächst nur ein minimales
System zur geordneten
Initialisierung der Komponenten.
Anders als sein Vorgänger
stellt es jedoch kein Interface
zum Zugriff auf die Hardware
zur Verfügung, sondern übergibt
die Kontrolle so schnell wie
möglich an den Bootloader und
somit das Betriebssystem. Da
erheblich weniger Programmcode
ausgeführt wird, startet es
auch wesentlich schneller.
Die entscheidende
Änderung im Vergleich
zum BIOS
ist die Fähigkeit,
mehr als nur 216
Byte Speicher zu
adressieren. In Zusammenhang
mit
der Tatsache, dass UEFI
im Gegensatz zum monolithischen
BIOS ein modulares System
darstellt, ergeben sich für
die Programmierer wesentliche
Vorteile bei der Implementierung
von Zusatzfunktionen.
Mehr Funktionen
Sehr beliebt ist die Einbindung
von Grafiktreibern über das
EBC („EFI Byte Code“)-Interface.
Apple nutzt diese Schnittstelle,
um den gesamten Bootvorgang
grafisch anspruchsvoll zu gestalten
und dem Anwender
das PC-typische 80x25-Zeichen-
Reintext-BIOS-Bild zu ersparen.
Zudem enthält ein UEFI von
Wie der BIOS-Nachfolger
UEFI arbeitet
Haus aus das sogenannte „Preboot
Execution Environment“
(PXE), das zum Booten über ein
Netzwerk benötigt wird. Die
nötigen Netzwerkkartentreiber
werden hier ebenfalls über das
EBC zur Verfügung gestellt.
Festplatten und SSDs
Ein weiterer Unterschied zwischen
BIOS und UEFI besteht
darin, wie Festplatten angesprochen
werden können. Während
das BIOS lediglich solche mit
MBR-Partitionsschema („Master
Boot Record“) adressieren
kann, unterstützt UEFI die Partitionierung
nach GPT-Standard
(„GUID Partition Table“).
GPT hebt die
wesentlichen Nachteile
des MBR-Standards,
etwa die Beschränkung
auf vier
primäre Partitionen
oder die Kapazitätsgrenze
von knapp über zwei
TiByte, auf.
Weitere Unterschiede
Während man bei einem BIOS
lediglich die Festplatte wählen
kann, auf der dann im Master
Boot Record der Verweis auf
das zu ladende Betriebssystem
zu finden ist, können Sie mit
UEFI bereits angeben, auf welcher
Partition der Bootcode des
zu ladenden Betriebssystems
zu suchen ist. Außerdem bietet
UEFI eine EFI-Shell (unter anderem
zur Fehlersuche) und kann
deutlich mehr als den im Flash-
Chip verfügbaren Speicher ansprechen.
Die UEFI-Bootsequenz beginnt mit der Initialisierung der Treiber, anschließend
der Zusatzapplikationen und des Bootcodes. Zum Schluss
erfolgt die Übergabe an das OS.
Unterschiede BIOS/UEFI
Programmierung
(Programmiersprache)
Bittigkeit des Programmcodes
Adressierbarer Arbeitsspeicher
Sicherheit
BIOS
Assembler
UEFI
C
16 Bit 32 bis 64 Bit
Maximal 216 Byte
= 1 MiByte
Theoretisch bis zu 264 Byte
= 16.384 PiByte
Wie so häufig bei der Einführung neuer Technologien gibt es auch bei
UEFI die volle Bandbreite an Kritik: Von berechtigten Sicherheitsbedenken
bis hin zu – seit Snowden gar nicht mehr so hanebüchenen – Verschwörungstheorien
ist alles mit dabei. Beispielsweise ermöglicht UEFI
dank der eingebauten Netzwerkfunktionalität die Verbindung zum Internet
ohne geladenes Betriebssystem. Dadurch ließe sich ein PC theoretisch
fernsteuern oder aus der Ferne auslesen, da die Sicherheitsmechanismen
des Betriebssystems, egal ob Windows oder Linux, erst
greifen, wenn das System gestartet ist. Zwar sollte dies Heimanwender
weniger beunruhigen, die Industrie (Spionage) und das Bankenwesen
(Sabotage, Manipulation) empfinden UEFI jedoch als Sicherheitsrisiko.
Durch die Implementierung eines TPM-Chips könnte außerdem theoretisch
der gesamte Eingabe-/Ausgabe-Datenstrom auf unterster
Hardware-Ebene überwacht werden – was seit den jüngsten NSA-Enthüllungen
sicher nicht nur Paranoiker stören dürfte. Mit Windows 8 gibt
es keine Wahl mehr; fast jeder Windows-8-PC hat auch UEFI.
So funktioniert ein PC 83
Mainboard
PCI-Express stellt
höchste Bandbreiten
zur Verfügung, die
unter anderem von
Grafikkarten benötigt
werden – nur so
laufen auch High-
End-Spiele ruckelfrei.
Ein aktueller PCI-Express-x16-
Steckplatz (ganz unten, schwarz).
Unmittelbar darüber befindet sich ein
x1-Steckplatz (ebenfalls schwarz), der
deutlich kürzer ist.
So funktioniert
PCI-Express
Seit knapp zehn Jahren
ist PCI-Express die wohl
wichtigste Schnittstelle
auf der Hauptplatine. PCI-Express
gilt als Nachfolger zweier
Techniken, nämlich der
AGP-Schnittstelle für Grafikkarten
und des PCI-Busses für alle
anderen Steckkarten
PCI und PCI-Express
Um zu verstehen, wie PCI-Express
funktioniert, ist ein Blick
in die Vergangenheit hilfreich:
Der PCI-Bus hatte sich über eine
ganze Dekade, etwa von 1994
bis 2004, bewährt und brachte
unzählige Erweiterungskarten
hervor. Die Spezifikationen
wurden von der PCI-SIG ausgearbeitet,
einem 1992 gegründeten
Konsortium, bestehend aus
führenden Unternehmen im
IT-Bereich.
Ein riesiger Vorteil und eines
der Hauptanliegen bei der Entwicklung
von PCI-Express war
es, dass sich das Software-Modell
nicht vom klassischen
PCI-Bus unterscheidet. Für
das Betriebssystem sind demnach
keine PCI-Express-Treiber
nötig, anders als es etwa
bei AGP der Fall war, wo ein
spezieller GART-Treiber nötig
war; ein Umstand, der für viele
Stabilitätsprobleme verantwortlich
war.
Die Technik hinter
PCI-Express
PCI-Express unterscheidet sich
im Aufbau erheblich vom alten
PCI-Bus. Während PCI die parallele
Datenübertragung benutzte,
setzt PCI-Express wie
viele neuere Protokolle auf eine
serielle Datenübertragung. Zudem
ist die Hierarchie eine völlig
andere. PCI war ein Bus, an
dem zahlreiche PCI-Slots oder
Onboard-Komponenten angeschlossen
waren, die sich die
zur Verfügung stehende Bandbreite
teilen mussten. Wollten
mehrere Geräte gleichzeitig auf
den PCI-Bus zugreifen, musste
ein Bus-Arbiter entscheiden,
wer zugreifen darf. Ein vorgeschriebenes
Verfahren gab es
nicht, weswegen einige Hersteller
auf ein simples Zeitscheibenverfahren
zurückgriffen,
andere auf komplexere Methoden
mit Priorisierungs- und Parking-Funktionen.
PCI-Express dagegen ist kein
Bus mehr, sondern eine bzw.
mehrere Punkt-zu-Punkt-Verbindungen,
die über einen
Switch skalierbar sind, ähnlich
wie bei einem LAN. Aufgrund
des seriellen Aufbaus kann
PCI-Express auf deutlich höhere
Taktfrequenzen zurückgreifen.
Während beim klassischen
PCI-Bus bei 33 MHz und 32 Bit
Busbreite das Ende der Fahnenstange
erreicht war (die Server-Derivate
wie PCI-X erreichten
zuletzt bis zu 133 MHz bei
64 Bit Breite), arbeitet PCI-Express
mit einer Grundfrequenz
von 1,25 GHz. Die Pfadbreite
wird von der Art des Einsatzes
bestimmt. Der Hersteller kann
wählen, wie viele sogenannte
Lanes er für ein Gerät oder einen
Steckplatz verwenden will.
Lanes und
Bandbreiten
Eine Lane besteht aus einer
Hin- und einer Rückleitung,
die wiederum jeweils aus einem
Leitungspaar bestehen.
84 So funktioniert ein PC
Mainboard
Für eine Lane sind physisch
also vier Leitungen notwendig,
die aufgrund einer sehr geringen
Spannung sehr nahe beieinanderliegen
können, ohne
sich gegenseitig durch elektromagnetische
Effekte zu stören.
Durch die serielle Übertragung
kann pro Takt nur ein Bit übertragen
werden, weswegen 1,25
GHz Taktfrequenz in einer
Transferrate von 1,25 GBit/s
resultiert. Da die Übertragung
jedoch im 8B10B-Code erfolgt,
wo 2 Bit der Fehlerkorrektur
dienen, bleiben unter dem
Strich nur 1 GBit/s oder 125
GB/s an Nutzbandbreite übrig
– eine Verschwendung von immerhin
20 Prozent. Da PCI-Express
jedoch gleichzeitig in beide
Richtungen übertragen kann,
liest man oft auch von 250 GB/s
Gesamtbandbreite je Lane.
Damit ist also bereits die einfachste
PCI-Express-Variante
mit nur einer Lane bei erheblich
geringerem Implementierungsaufwand
schneller als der
alte PCI-Bus. Für Geräte, die
noch mehr Transferrate benötigen,
etwa Grafikkarten oder
SAS-Raid-Controller, können
mehrere dieser Lanes zusammengefasst
werden. Daher gibt
es für PCI-Express nicht nur
eine Slot-Variante, sondern mit
x1, x4, x8 und x16 gleich mehrere.
Warum nicht gleich einen
Slot mit der maximalen Lane-Anzahl?
Für viele Anwendungen
wäre diese Bandbreite überdimensioniert
und außerdem war
es eines der Ziele der PCI-SIG,
eine möglichst kostengüns tige
Fertigung zu ermöglichen.
PCI-Express 2.0
Nur wenige Jahre später folgten
PCI-Express-Implementierungen
bereits der Revision 2.0
des Standards. Er wurde Anfang
2007 vorgestellt. Hier wurde die
Grundfrequenz von 1,25 GHz
auf 2,5 GHz verdoppelt, was
auch zu einer Verdoppelung der
möglichen Transferrate führte.
PCI-Express-2.0-x16-Geräte
(zum Beispiel Grafikkarten)
können damit bis zu 4 GB/s senden
und empfangen, was einer
Gesamtbandbreite (hin und
zurück) von 8 GB/s entspricht.
Dennoch ist PCIe 2.0 voll abwärtskompatibel
zum PCIe-
1.x-Standard. PCIe-2.0-Geräte
können demnach problemlos
in PCIe-1.x-Slots eingesetzt werden,
PCIe-1.x-Geräte in PCIe-2.0-
Slots. Im Gegensatz zu den Kompatibilitätsproblemen
bei PCI
und vor allem bei AGP in früheren
Tagen gibt es bei PCI-Express
praktisch keine Klagen
mehr, was für ein sehr engmaschiges
Spezifikationsregelwerk
spricht, das kaum Spielraum für
Implementierungsfehler lässt.
Dennoch werden von Revision
zu Revision jeweils auch zahlreiche
Bugs, sogenannte Errata,
beseitigt, die im Laufe des Praxiseinsatzes
entdeckt wurden.
Wie eine PCI-Express-Lane
aufgebaut ist
PCI-Express kann auf separaten Leitungen in beide Richtungen gleichzeitig
senden. Die Kombination der dafür nötigen Leitungspaare nennt
man Lane.
Takt
Wie PCI-Express auf dem
Mainboard eingesetzt wird
PCI-Express wird nicht nur für die Anbindung einer externen Grafikkarte
genutzt, auch viele Onboard-Chips wie etwa ein Gigabit-LAN-Baustein
werden auf diese Weise einfach und schnell integriert. Früher war
es auch üblich, PCI-Express für die Kommunikation zwischen Northund
Southbridge einzusetzen.
Grafikkarte
HDD
Mobiles
Docking
Gb
Ethernet
Add-In
Gerät
A
PCI-
Express
ATA
Serial
PCI-
Express
Stromversorgung
Ein Problem, das sich im Laufe
der Jahre bei PCI und AGP entwickelt
hatte, war die Stromversorgung.
Als die Spezifikationen
festgelegt wurden, hatte
niemand daran gedacht, dass
eine Grafikkarte 100 Watt oder
mehr an elektrischer Leistung
aufnehmen würde. Entsprechend
wackelig konnte ein solches
System in Sachen Stabilität
sein, denn der PCI-Slot war lediglich
für 25 Watt spezifiziert.
Bei einem PEG(PCIe-x16)-Slot
sind es immerhin 75 Watt, was
aber immer noch zu wenig
ist. Bei High-End-Grafikkarten
sieht die Spezifikation daher
unterschiedliche Zusatzstecker
zur Stromversorgung vor, soge
PCI-
Express
Paket
Switch
CPU
Paket
Memory
Bridge
I/0
Bridge
PCI
Express
PCI
Gerät
B
USB 3.0
Speicher
Lokales I/0
Takt
So funktioniert ein PC 85
Mainboard
Übertragungsgeschwindigkeiten
im Vergleich
Jahr Max. Takt Max. Bitbreite Max. Datenübertr. (x32)
ISA (XT-Bus) 1981 4,77 MHz 8 Bit 4,77 MByte/Sek.
ISA (AT-Bus) 1984 8 MHz 16 Bit 16 MByte/Sek.
EISA 1988 8,33 MHz 32 Bit 33 MByte/Sek.
VLB (Vesa Local Bus) 1992 40 MHz 32 Bit 160 MByte/Sek.
PCI 1.0 1991 33 MHz 32 Bit 133 MByte/Sek.
PCI 2.x/3.0 1992 66 MHz 64 Bit 533 MByte/Sek.
PCI-X 1.0 1998 133 MHz 64 Bit 1.066 MByte/Sek.
PCI-X 2.0 2003 533 MHz 64 Bit 4.264 MByte/Sek.
PCI Express 1.x* 2003 1.250 MHz 8Bit/10 Bit 2 x 8.000 MByte/Sek.
PCI Express 2.0* 2007 2.500 MHz 8Bit/10 Bit 2 x 16.000 MByte/Sek.
PCI Express 3.0* 2011 4.000 MHz 128Bit/130Bit 2 x 31.508 MByte/Sek.
* Voll-Duplex-Datenübertragung, maximal 32 PCI-Express-Bahnen spezifiziert
** Wechsel der Datenkodierung von 8/10 Bit auf 128/130 Bit, dadurch höhere Netto-Ausbeute
Transferraten
Taktfrequenz Transferrate Overhead Datenrate
1.x 1,25 GHz 2,5 GT/s 20% 250 MB/s
2.0 2,5 GHz 5 GT/s 20% 500 MB/s
3.0 4 GHz 8 GT/s 0% 1 GB/s
Die Transferraten der unterschiedlichen PCI-Express-Revisionen je Lane.
Wie PCI-Express-Lanes
Daten übertragen
Die Daten werden bei PCIe seriell auf einer oder mehreren Lanes übertragen.
Durch Zusammenschalten mehrerer Lanes wird die Transferrate
ver-x-facht.
...
Byte 5
Byte 4
Byte 3
Byte 2
Byte 1
Byte 0
Byte 3
Byte 2
Byte 1
Byte 0
8b/10b
P > S
Byte 4
Byte 0
8b/10b
P > S
Byte 5
Byte 1
8b/10b
P > S
...
Byte 5
Byte 4
Byte 3
Byte 2
Byte 1
Byte 0
Byte 6
Byte 2
8b/10b
P > S
Byte 7
Byte 3
8b/10b
P > S
Lane 0 Lane 0 Lane 1 Lane 2 Lane 3
nannte PCI-Express (Graphics)
Power Supply Connector (auch
PEG-Connector), die +12V liefern.
Die erste Version der Zusatzstecker
hat 6 Pins und kann
bis zu 75 Watt zusätzlich liefern,
wodurch die dem Gerät maximal
bereitgestellte Leistung auf
150 Watt steigt. Bei Nutzung
zweier solcher Stecker sind sogar
bis zu 225 Watt möglich. In
der Spezifikation von PCI-Express
2.0 wurde ein neuer Zusatzstecker
mit 8 Pins definiert,
der maximal 150 Watt führen
kann. Für noch höhere Leistungen
kann ein zusätzlicher Stecker
mit 6 Pins genutzt werden,
der jedoch nur weitere 75 Watt
führt, wodurch die maximale
Aufnahmeleistung einer PCI-Express-Karte
auf insgesamt 300
Watt begrenzt ist.
PCI-Express 3.0
Seit 2011 ist PCI-Express 3.0
Standard bei Hauptplatinen
und High-End-Grafikkarten. Im
Vordergrund stand wieder die
Verdopplung der Datenübertragungsrate.
War der Wechsel von
PCI Express 1.x auf 2.0 noch
von der Anhebung von 2,5 auf
5,0 Milliarden Datenübertragungen
(Gigatransfers, GT/s)
pro Sekunde bestimmt, stellte
eine weitere Steigerung um den
Faktor 2 die PCI Special Interest
Group (PCI-SIG) als zuständiges
Gremium vor offenbar unlösbare
Probleme. 10 Gigahertz
über eine Steckverbindung
zu übertragen, war unter den
Vorgaben der kostengünstigen
Bauweise und der Abwärtskompatibilität
nicht in die Praxis
umzusetzen. Vorhergehende
PCI-Express-Standards nutzen
zur Übertragung vom Sender
zum Empfänger eine Kodierung
von 8 Bit Nutzdaten in 10
Bit große Datenpakete. Dieser
25-prozentige Overhead erklärt
auch, warum von der Bruttogeschwindigkeit
2,5/5,0 GBit/
Sek. nur 250/500 MByte/Sek. je
Bahn umgesetzt werden.
Für PCI Express 3.0 konnte
man mit den herkömmlichen
Methoden eine Übertragungsgeschwindigkeit
von 8,0 Gigatransfers
pro Sekunde erreichen
– 60 Prozent mehr als im
2.x-Standard definiert. Den Rest
zur (beinahe!) verdoppelten
Übertragungsgeschwindigkeit
trägt die veränderte Kodierung
bei, welche für die Datenpakete
verwendet wird. Anstelle
des vorigen 8b/10b-Schemas
kommt nun ein Verfahren zum
Einsatz, bei dem 130 Bit große
Datenpakete übertragen werden,
die jeweils 128 Bit Nutzdaten
enthalten. Der Overhead
sinkt auf rund 1,6 Prozent.
Insgesamt gelangen dadurch
beinahe doppelt so viele Nutzdaten
pro Sekunde über die
PCI-Express-Verbindung. Um
die In tegrität der Daten auch
bei hohen Taktfrequenzen gewährleisten
zu können, nutzt
PCI Express 3.0 eine individuell
anpassbare Verzerrung des
Signals. Anstelle eines festen
Koeffizienten für die Signalform
wird dieser für jede Verbindung
neu ausgehandelt. Wie
zuvor spezifiziert auch der neue
Standard bis zu 32 einzelne
Bahnen, wovon voraussichtlich
aber wieder nur 16 aus praktischen
Gründen (Steckplatzlänge)
genutzt werden.
Aktuelle Prozessoren tragen
den PCI-Express-Controller direkt
in der CPU. Das verkürzt
die Latenzzeiten erheblich;
allerdings beherrschen erst
brandneue Ivy-Bridge-CPUs
auch den aktuellen PCIe-3.0-
Standard.
86 So funktioniert ein PC
Mainboard
Wie USB-Anschlüsse vom
Typ A und B aussehen
USB-Anschlüsse können in zwei Varianten ausgeführt werden: Der Typ
A (links) dürfte den meisten vertraut sein; etwas seltener kommt der
Typ B (rechts) zum Einsatz, meist auf Geräteseite. Der Typ B hat bei
USB-3.0-Geräten zusätzlich einen Aufsatz, damit er nicht in ältere Geräte
gesteckt werden kann. Schließlich gibt es noch Mikro-Varianten für
den Anschluss von Kleinstgeräten.
Wie sich neue USB-
Anschlüsse unterscheiden
Im Bild rechts unten gut zu sehen sind die
zusätzlichen fünf Kontakte beim blauen USB-
3.0-Anschluss, über welche die Signale im Superspeed-Modus
laufen.
So funktioniert
USB
Zehnmal so schnell wie
der Vorgänger – das ist
selbst im Hardware-Bereich
eine enorme Leistungssteigerung.
Mit 625 MByte
pro Sekunde beziehungsweise
5.000 MBit pro Sekunde ist
die aktuelle, dritte Version des
USB-Standards sogar schneller
als SATA II (375 MByte/s). Bereitgestellt
wird die schnelle
Schnittstelle – wie so viele andere
– vom Mainboard.
Universell und erweiterbar
Der Universal Serial Bus (USB)
ist in seiner Urform bereits seit
1996 in Umlauf. Dank seiner Erweiterbarkeit
durch sogenannte
Hubs, also Verteiler, können
bis zu 127 Geräte an einem einzigen
Anschluss betrieben werden.
Der USB macht seinem Namen
alle Ehre: Er ist universell.
Von Tastatur und Maus über
Fotokameras und Fernseher bis
hin zu portablen SSDs und allerlei
PC-getriebenen Spaßartikeln
reicht die Palette möglicher Geräte.
Die erste USB-Variante verfügte
noch über zwei Geschwindigkeiten
namens Low- und Full-
Speed, welche langsame 1,5
beziehungsweise 12 MBit pro
Sekunde übertragen. Ab dem
Frühjahr 2000 stand dann die
finale Version von USB 2.0 mit
dem Hi-Speed-Modus zur Verfügung.
Mit bis zu 480 MBit pro
Sekunde vervierzigfachte man
kurzerhand die Übertragungsrate,
von der im Praxiseinsatz
allerdings weniger als 40 Megabyte
pro Sekunde übrig bleiben.
Da diese Übertragungsrate
für moderne Festplatten aber
immer noch viel zu langsam
war, wurde 2008 die vorerst
letzte Ausbaustufe USB 3.0 spezifiziert.
Flächendeckend verbreitet
ist USB 3.0 aber bis heute
noch nicht.
Technik hinter USB 3
USB 3.0 („Superspeed-USB“)
ist so ausgelegt, dass sowohl
die Schnittstellen als auch die
Geräte voll auf- und abwärtskompatibel
bleiben. So kann
sowohl ein USB-3.0-Endgerät an
einem USB-2.0-Port betrieben
werden (natürlich mit der Einschränkung,
dass ein Transfer
dann länger dauert) als auch
ein USB-2.0-Endgerät an einer
USB-3.0-Schnittstelle.
Eine wichtige Rolle spielt dabei
das USB-Kabel. Um Kompatibilität
zu gewährleisten, bleiben
die alten USB-Kontakte in den
Steckern bestehen. Um USB 3.0
nutzen zu können, muss jedoch
ein spezielles Kabel verwendet
werden, das zusätzlich zu den
alten Kontakten weitere Verbindungen
auf Glasfaserbasis
besitzt. Nur so kann die bis zu
zehnmal so hohe Übertragungsgeschwindigkeit
gegenüber USB
2.0 genutzt werden, da Lichtwellenleiter
unempfindlich gegen
Signalrauschen und andere
elektrischen Störquellen sind.
Das bedeutet jedoch auch: Wer
ein USB-3.0-Endgerät an einem
USB-3.0-Computer einsetzt, aber
nur ein herkömmliches USB-2.0-
Kabel verwendet, bremst den
PC, da die Glasfaserkomponenten
im Kabel fehlen.
Softwaremodell
Ebenfalls zu Kompatibilitätszwecken
verwendet USB 3.0
88 So funktioniert ein PC
Mainboard
das gleiche Softwaremodell
wie bisher. Es ist also möglich,
USB 3.0 zu nutzen, ohne dafür
irgendwelche proprietären
Miniport-Treiber verwenden
zu müssen, wie es damals bei
Windows NT der Fall war, das
keinerlei Unterstützung für USB
ab Werk mitbrachte. Neben
mehr Geschwindigkeit hat USB
3.0 auch die Zuverlässigkeit erhöht,
indem sich Sender und
Empfänger beim Datentransfer
über „acknowledgements“
ständig unterhalten und die
fehlerfreie Übertragung anfragen
und bestätigen. Um bei all
der Geschwindigkeit und Übertragungssicherheit
das Thema
Stromverbrauch nicht zu
ignorieren, bietet USB 3.0 die
Möglichkeit, im Leerlauf auf einen
niedrigeren Level der Leistungsaufnahme
zu schalten –
ähnlich wie es Prozessoren tun,
die Speedstep oder Cool‘n‘quiet
beherrschen. Sobald der Anwender
wieder Leistung abfragt,
schaltet der Controller in
den normalen Modus zurück,
um wieder volle Performance
liefern zu können.
So unterscheiden
sich USB-Anschlüsse
Äußerlich sind USB-3.0-taugliche
Buchsen üblicherweise
durch die blaue Färbung und bei
genauem Hinsehen durch die
fünf zusätzlichen Kontakte für
den 5 GBit/s schnellen Superspeed-Modus
zu identifizieren
– im Bildkasten auf der vorhergehenden
Seite können Sie den
Unterschied gut erkennen. Neben
diesem „A-Typ“ genannten
Anschluss sind die B-Typ-Stecker
im nahezu quadratischen Format
sowie die Micro-USB-Anschlüsse
gebräuchlich. Mini-USB
wird seit 2007 nicht mehr weiter
gepflegt, aber noch verwendet.
Während der Standard-Stecker
Typ A rein mechanisch in alle
Typ-A-Buchsen passt, sind für
den USB-3.0-Modus spezielle
Kabel mit zwei zusätzlichen
Ader-Paaren erforderlich. Die
entsprechenden Kabel sind
deutlich dicker und weniger
biegsam als ihre USB-2.0/1.x-Entsprechungen.
USB-Kabel vor
USB 3.0 können aufgrund der
definierten Signallaufzeit bis zu
fünf Meter lang sein, bevor sie
einen Repeater zur Signalaufbereitung
benötigen. USB 3.0
selbst spezifiziert keine maximale
Kabellänge, drei Meter gelten
aber als das realistischerweise
erreichbare Maximum.
Optimale Anbindung
Dabei kommt es auf die richtige
Anbindung des USB-3.0-Con-
trollers an: Die meisten aktuellen
Boards (ab circa 2012) unterstützen
„von Haus aus“ USB 3.0. Im
Chipsatz sind die entsprechenden
Funktionen vorhanden. Bei
nicht ganz neuen PCs (in der
Regel älter als 2012) musste USB
3.0 aber noch per Zusatzchip angebunden
werden.
Wie USB 3.0 aufs
Mainboard kommt
Dass die dritte USB-Generation bis heute nicht bei allen PCs verfügbar
ist, liegt auch an der schleppenden Einführung entsprechender Chipsätze
(Bild ganz unten). Bis dato musste die USB-3.0-Funktionalität
von zusätzlichen Controllern (Bild ganz oben und Mitte) bereitgestellt
werden – was entsprechende Mainboards zusätzlich verteuerte.
USB-3.0-Anbindung ohne Switch (Beispiel: Gigabyte P55A-UD6)
P55-Chip
2 x USB 3.0
NEC-Contr. LAN-Contr. LAN-Contr.
1 Lane 1 Lane 1 Lane
PCI-E 1.0 PCI-E 1.0 PCI-E 1.0
2 x SATA 3
PCI-Express
LAN 1
RJ45
LAN 2
RJ45
1 Lane
PCI-E 1.0
Marvell-Contr.
USB-3.0-Anbindung mit Switch (Beispiel: Gigabyte P55A-UD7)
2 x USB 3.0
P55-Chip
NEC-Contr.
PCI-Express
1 Lane
PCI-E 2.0
Die bessere Lösung war es dabei,
einen Switch-Chip zu verwenden,
der vier PCI-E-1.0-Lanes
der Southbridge in zweimal
eine PCI-E-2.0-Lane umwandelt.
Bei einigen Mainboards fehlte
dieser Switch jedoch und USB
3.0 lief so nur mit gebremster
Geschwindigkeit.
PEX8608 Bridge
4 Lanes
PCI-E 1.0
1 Lane
PCI-E 2.0
2 x SATA 3 Marvell-Contr.
USB-3.0-Anbindung im Chipsatz
2 x USB 3.0
LAN 1
LAN 2
Kleine USBs: Links
im Bild der aktuelle
Micro-3.0-Standard,
der die zusätzlichen
Kontakte links
herausführt, rechts
im Bild der bekannte
USB-2.0-Mini-Anschluss.
P55-Chip
2 x SATA 3
1 Lane
PCI-E 2.0
PCI-Express
RJ45
RJ45
LAN-Contr. LAN-Contr.
1 Lane 1 Lane
PCI-E 1.0 PCI-E 1.0
1 Lane
PCI-E 1.0
Marvell-Contr.
So funktioniert ein PC 89
Mainboard
Beim aktuellen SATA-6Gb/s-Standard kann es zu Problemen
mit älteren SATA-Kabeln kommen. Spezielle
SATA-6-GBit/s-Kabel hält der Fachhandel bereit.
So funktioniert
Serial ATA
SATA (rechts) und
der platzsparende
m-SATA-Anschluss
(Mitte), welcher
auch des Öfteren auf
Mainboards für SSD-
Caching zum Einsatz
kommt.
Aktuelle SSDs, Festplatten
und optische Laufwerke
werden per
Serial-ATA oder kurz SATA angeschlossen.
Wie schon bei den
Prozessorbussen und PCI-Express
werden bei Serial-ATA die
einzelnen Bits nacheinander
übertragen, was höhere Taktfrequenzen
erlaubt.
In der ersten Variante konnten
bei einem Takt von 1,5 GHz annähernd
150 Megabyte pro Sekunde
übertragen werden. Der
Anteil nutzbarer Daten beträgt
dabei 80 Prozent – die verbleibenden
20 Prozent dienen der
Prüfung und Fehlerkorrektur.
Für platterbasierte Festplatten
reichte diese Geschwindigkeit
aus, doch mit leistungsfähigen
SSD-Speichern wurden auch immer
schnellere Versionen von
SATA nötig.
NCQ und AHCI
Zudem fanden im Laufe der
Zeit nützliche Funktionen wie
AHCI („Advanced Host Controller
Interface“) und NCQ
(„Native Command Queuing“)
ihren Weg in die Spezifikation,
durch welche die Datenströme
effizienter abgearbeitet werden
können.
Stehen mehrere Zugriffe zeitnah
an, so kann der Controller
sie beim NCQ unter Berücksichtigung
der Zugriffs- und Rotationslatenz
so umsortieren, dass
die Schreib- und Leseköpfe von
Festplatten nur möglichst kurze
Wege zurücklegen müssen.
Auch SSDs können von NCQ
profitieren, da der Con troller
mehrere Zugriffe auf den Inhalt
einer Flash-Speicherzelle
kombinieren kann statt mehrfach
die umständliche Read-Modify-Write-Prozedur
für jeden
Datenblock auszuführen.
SATA 3 GBit/s
Mit der zweiten Revision SATA
3 GBit/s, oft und nicht ganz
korrekt auch als SATA II bezeichnet,
verdoppelte man
die Übertragungsrate auf 300
Megabyte pro Sekunde und damit
auf das Niveau der damals
schnellsten SSDs. Hinzu kamen
außerdem Funktionen wie das
angesprochene NCQ, aber auch
Erweiterungen wie „Staggered
Spinup“ – diese Technik erlaubt
das verzögerte Einschalten der
Festplatten. Der Hintergrund:
Das Anlaufen und Beschleunigen
des Festplattenmotors sorgt
beim Einschalten für eine sehr
hohe Leistungsaufnahme; werden
mehrere Festplatten gleichzeitig
eingeschaltet, kann das
zur Überlastung des Netzteils
führen.
SATA 6 GBit/s
Die dritte SATA-Generation3
bietet eine maximale Bandbreite
von 6.000 Megabit pro Sekunde
und kann somit Daten doppelt
so schnell übertragen wie
der SATA-3-Gb-Standard (3.000
MBit/s). Daher wird diese auch
oft „SATA 6 GBit/s“ genannt.
Lassen Sie sich nicht verwirren:
Bei Ports mit der Beschriftung
„SATA 3 GBit/s“ handelt es sich
nur um alte SATA-II-Anschlüsse.
Zum besseren Verständnis verwenden
wir den Begriff SATA 3
anstelle von SATA 6 GBit/s.
Die Bandbreite wurde beim
neuen Standard für HDDs, SSDs
und optische Laufwerke zwar
90 So funktioniert ein PC
Mainboard
verdoppelt, dennoch sind die
neuen Ports abwärtskompatibel
und eignen sich daher auch
für SATA-3-GBit/s-Laufwerke
der Revision 2.6. Theoretisch
lassen sich sogar die gleichen
Kabel weiterhin verwenden.
Die offizielle Webseite serialata.
org gibt jedoch an, dass manche
Kabel aus minderwertigem Material
hergestellt sind und daher
bereits an der Leistungsgrenze
von SATA-3-GBit/s liegen.
Neue Anschlüsse
Zudem gibt es bei der dritten
SATA-Generation zusätzlich
kleinere Anschlüsse etwa für
Notebooks, Netbooks oder
DVD-Player. Während SATA-3-
GBit/s-Geräte die Funktion Native
Command Queuing (kurz:
NCQ) unterstützen, bietet SATA
6 GBit/s zusätzlich NCQ Streaming.
Damit soll der Transfer
von Audio- und Video-Dateien
verbessert werden.
Stromsparfunktionen
Neu sind zudem mehrere
Stromsparfunktionen. So musste
die Festplatte bisher auf Erlaubnis
des Hosts warten, bevor
sie in den Schlafzustand wechseln
konnte. Bei SATA 6 GBit/s
können sowohl Host als auch
Laufwerk den Schlummer-Modus
starten, ohne sich abstimmen
zu müssen. Das Laufwerk
muss auch nicht mehr vorher in
den aktiven Modus gelangen.
Obwohl der PHY-Chip (physikalische
Schnittstelle, kodiert und
dekodiert die entsprechenden
Daten) beim SATA-6-GBit/s-
Standard im aktiven Modus eine
höhere Leistungsaufnahme
hat als entsprechende SATA-3-
GBit/s-Chips, ist der Verbrauch
des Controllers insgesamt nur
ungefähr halb so hoch wie bei
einem SATA-3-GBit/s-Gerät.
E-SATA
Die externe Variante E-SATA
erlaubt den Anschluss von Datenträgern
ohne Brückenchips,
die sonst nötig sind, um den
Kommandostrom zum Beispiel
nach USB umzusetzen. Die Eigenschaften
externer Geräte
entsprechen denen im Gehäuse
montierter SATA-Laufwerke inklusive
der maximalen theoretischen
Übertragungsraten.
Die bis zu zwei Meter langen
Kabel sind allerdings speziell
abgeschirmt und nicht mit
den internen Geräten kompatibel.
Ein Manko, welches
den externen Einsatz verkompliziert,
ist das Fehlen einer
Stromversorgung in normalen
E-SATA-Anschlüssen. Daher
benötigen per E-SATA angeschlossene
Geräte entweder
ein Netzteil oder ein zusätzliches
USB-Kabel. E-SATA-p (für
„powered“) behebt diesen
Missstand, indem es E-SATAund
USB-Buchse kombiniert –
hieran arbeiten auch normale
USB-Geräte.
SATA Express
Einige SSD-Festplatten nutzen
bereits die volle Bandbreite
von SATA 6 GBit/s aus. Mit dem
kommenden Standard SATA 8
GBit/s soll der Engpass erneut
geweitet werden. Technisch gesehen
handelt es sich dabei um
eine PCI-Express-Verbindung
mit einer Lane. Die Erweiterung
des SATA-Standards (Revision
3.2) sieht zudem die Benutzung
einer zweiten Lane vor
– so lassen sich bis zu 16 GBit/s
erreichen, was für die nächsten
SSD-Generationen ausreichen
sollte. Danach wäre erneut eine
Verbesserung notwendig; vielleicht
wurde Serial-ATA bis dahin
aber auch schon von einer
anderen Schnittstelle abgelöst.
Theoretische Bandbreiten
Theoretische Bandbreite
in Megabyte/s
Theoretische Bandbreite
in Megabit/s
USB 2.0 60 MByte/s 480 MBit/s
USB 3.0 625 MByte/s 5.000 MBit/s
SATA 187,5 MByte/s 1.500 MBit/s
SATA 3 GBit 375 MByte/s 3.000 MBit/s
SATA 6 GBit 750 MByte/s 6.000 MBit/s
Eine PCI-E-Lane 250 MByte/s 2.000 MBit/s
Eine PCI-E-2.0-Lane 500 MByte/s 4.000 MBit/s
Eine PCI-E-3.0-Lane 985 MByte/s 7.880 MBit/s
LAN (100 MBit) 12,5 MByte/s 100 MBit/s
LAN (Gigabit) 125 MByte/s 1.000 MBit/s
Wie Schnittstellen an den
Chipsatz angebunden sind
Der P55-Chip liefert bis zu acht PCI-Express-Lanes. Jeweils eine steht
den Controllern für SATA 3, USB 3.0 und Gigabit-LAN zur Verfügung.
Der Rest geht an die Slots.
So funktioniert ein PC 91
Mainboard
So funktioniert
Thunderbolt
Thunderbolt-
Integration
Damit Thunderbolt funktioniert,
ist bei aktuellen Mainboards
ein zusätzlicher Controller
nötig. Er ist in der Regel über
vier PCI-Express-2.0-Lanes mit
dem Mainboard-Chip verbunden.
Chipsätze mit integrierter
Thunderbolt-Unterstützung
sind auf absehbare Zeit nicht zu
erwarten.
In den Steckern von Thunderbolt-Kabeln
sitzen aktive
Chips. Das macht die Kabel
vergleichsweise teuer.
Die Form des Thunderbolt-
Anschlusses gleicht einem
Mini-Display-Port, braucht aber
andere Kabel. Im Hintergrund
erkennbar: der Thunderbolt-
Controller-Chip von Intel.
Wie Thunderbolt Daten
überträgt
Bei Thunderbolt können verschiedene Dateninhalte gemischt werden.
So können nicht nur externe Geräte wie Massenspeicher angeschlossen
werden, sondern auch Anzeigegeräte via Display Port.
Die Schnittstelle der Zukunft
heißt Thunderbolt;
jedenfalls wenn
es nach Intel geht. Der Chiphersteller
präsentierte die neue
Technik erstmals im Herbst
2009, damals noch unter dem
Namen „Light Peak“.
Optische
Übertragung
Der Name leitet sich von der optischen
Übertragungstechnik
ab – Intel stellte „Light Peak“ ursprünglich
mit Lichtleitern als
Kabel vor; diese waren jedoch
für den kommerziellen Einsatz
im PC zu teuer; Intel überarbeitete
daraufhin die Technik, realisierte
eine Transferrate von 10
GBit mit Kupferkabeln und ersann
den neuen Namen „Thunderbolt“.
Thunderbolt soll die bisherigen
Standards wie USB und Display
Port ablösen. Schließlich eignet
sich Thunderbolt sowohl zur
Übertragung von Daten (etwa
für externe Laufwerke) als auch
für Video- und Audiosignale (für
Displays) und ist selbst mit nur
einem duplexfähigen 10-GBit/s-
Kanal pro Richtung derzeit theoretisch
doppelt so schnell wie
USB 3.0. Entsprechende Mainboards
sind bereits verfügbar.
Theoretisch könnte Thunderbolt
auch Serial-ATA ersetzen.
Die Auswahl preiswerter Mainboards
und passender Endgeräte
ist allerdings noch gering:
Es gibt ein Apple-Display sowie
eine Handvoll externer Laufwerke.
Dabei muss man unterscheiden
zwischen Modellen, die mit
einem zusätzlichen Stromkabel
an die Steckdose angeschlossen
werden, und Laufwerken, die
per Thunderbolt-Anschluss mit
Strom versorgt werden und daher
mit einem einzelnen Kabel
auskommen.
Strom über
Thunderbolt
Der Thunderbolt-Port stellt
zehn Watt zur Verfügung. Da
der Controller, der in einem externen
Laufwerk mit Thunderbolt-Anschluss
sitzt, ebenfalls
relativ gierig ist, bleibt nicht
mehr viel für die enthaltene
SSD übrig. Bei Geräten, die mit
einer Stromquelle verbunden
sind, ist das natürlich kein Problem.
Zudem bieten diese meistens
zwei Anschlüsse.
Thunderbolt unterstützt die Daisy-Chain-Technik,
so können bis
zu sechs Thunderbolt-Geräte
(mit zwei Anschlüssen) und ein
Monitor per Display Port verbunden
werden – alles mit einem
einzigen Port auf dem Board.
Thunderbolt 2
Im Juni 2013 präsentierte Intel
die nächste Generation „Thunderbolt
2“, welche die Transferrate
mit bis zu 20 GBit/s verdoppelt.
Thunderbolt 2 soll bis
Ende 2013 verfügbar sein.
92 So funktioniert ein PC
Infrastruktur
So funktioniert ein PC 93
Infrastruktur
Bild: Intel
So funktioniert
Speicher (RAM)
Bei der Einführung neuer Herstellungsverfahren
werden die ersten
Wafer üblicherweise wegen ihres
einfachen Aufbaus mit SRAM-Zellen
bestückt – wie hier bei einem
der ersten 45-nm-Wafer.
Eine SRAM-Zelle unter dem Mikroskop: Das Flipflop, welches die Daten
speichert, ist an den waagerechten Linien zu erkennen.
Jeder hat ihn. Wenn er
knapp wird, geht erst mal
nichts mehr. In puncto
Menge ist es wie mit dem Hubraum
bei Verbrennungsmotoren:
Er ist durch nichts zu ersetzen
außer durch noch mehr
davon. Der Arbeitsspeicher,
auch RAM genannt, ist wichtiger
Bestandteil eines jeden PCs,
seit der erste Computer in den
Labors der Wissenschaftler das
Licht der Welt erblickte.
Grundbegriffe
Im Zusammenhang mit Arbeitsspeicher
geistern eine Unmenge
an Begriffen und Abkürzungen
durch die Medien, die nicht
immer auf den ersten oder
zweiten Blick verständlich sind
und nicht selten fälschlicherweise
in einem Topf landen.
Der im Englischen für Arbeitsspeicher
verwendete Begriff
RAM steht für „Random Access
Memory“. Dabei soll mitnichten
auf Zufallszugriffe angespielt
werden, vielmehr wird mit diesem
Namen das Prinzip hervorgehoben,
dass jede beliebige,
also zufällig gewählte Speicherzelle
in exakt gleicher, also konstanter
Zeit angesprochen und
ausgelesen werden kann.
Umgangssprachlich wird zwar
häufig zwischen RAM und ROM
(„Read-only memory“, nur lesbarer
Speicher) unterschieden,
technisch handelt es sich
bei einem ROM jedoch genauso
um RAM. Das gilt auch für
Flash-Speicher, wie er in USB-
Sticks oder SSDs zum Einsatz
kommt: Auch hier kann jeder
beliebige Block in konstanter
Zeit ausgelesen werden.
Im Gegensatz dazu stehen Medien
wie Festplatten oder DVDs,
die Daten auf einer rotierenden
Platte speichern und somit per
definitionem nicht immer in
konstanter Zeit liefern können.
Flüchtige Speicher
Es gibt grundsätzlich zwei Typen
RAM: volatile (flüchtige)
Speicher (VRAM) und nichtvolatile
Speicher (NVRAM). Die
Definition ist simpel: Ein volatiler
Speicher verliert ohne
Spannungsversorgung seine Informationen,
ein nichtvolatiler
Speicher nicht.
Die heutzutage am häufigsten
vorkommenden Arten von beschreibbarem
RAM sind DRAM
(dynamisches RAM), SRAM (statisches
RAM) und Flash, Letzteres
ist im Gegensatz zu den
ersten beiden nicht volatil. Die
Bauform wird mit Begriffen wie
SIMM, DIMM oder SO-DIMM bezeichnet.
SRAM
Der primäre Unterschied zwischen
SRAM und DRAM liegt
in der Speichertechnik, also
auf elektrotechnischer Ebene
in der Art und Weise, wie ein
Bit gespeichert wird. SRAM
verwendet hierfür ein sogenanntes
Flipflop, bestehend aus
sechs Transistoren: vier zum
Speichern der eigentlichen
Informa tion (T3-T6) und zwei
für die Ein-/Ausgabe (T1-T2).
Da es sich um ein Flipflop handelt,
enthält ein SRAM immer
zwei Ausgänge, A und Nicht-A.
Dadurch lassen sich Fehler, die
durch Rauschen entstehen können,
sofort erkennen und gege
94 So funktioniert ein PC
Infrastruktur
benenfalls durch erneutes Auslesen
korrigieren.
Der größte Nachteil von SRAM
ist die verhältnismäßig komplexe
Art der Speicherung
und die da raus resultierende
benötigte Fläche. Der größte
Vorteil ist die Tatsache, dass
die Information im Gegensatz
zu dynamischem RAM nicht regelmäßig
aufgefrischt werden
muss, sondern erhalten bleibt,
solange Spannung anliegt. Aufgrund
dieses hohen Levels an
Datenkohärenz und der hohen
Geschwindigkeit im Vergleich
zu DRAM kommt SRAM primär
in Caches zum Einsatz, zum Beispiel
in den drei Cache-Stufen
moderner Mikroprozessoren.
DRAM
Als dynamisches RAM bezeichnet
man einen Typ Arbeitsspeicher,
bei dem die gespeicherte
Information sogar höchst flüchtig
ist. Im Gegensatz zu SRAM
wird pro Bit lediglich ein Transistor
und ein Kondensator benötigt.
Da Kondensatoren einen
Zustand aufgrund von Leckströmen
jedoch nur für einen
beschränkten, direkt zur Kapazität
proportionalen Zeitraum
halten können, muss dieser in
regelmäßigen Zeitabständen
aufgefrischt werden. Ein Vorteil
ist die im Vergleich zu SRAM
hohe Speicherdichte, da die benötigte
Fläche pro Bit um ein
Vielfaches geringer ist. DRAM
kommt primär in Speichermodulen
für PCs zum Einsatz, da
der Vorteil der hohen Speicherdichte
die Nachteile der im
Vergleich zu SRAM schlechten
Performance und der Notwendigkeit
des regelmäßigen Auffrischens
aufwiegt.
Das heute zum Einsatz kommende
SDRAM steht am Ende
einer langen Kette von Entwicklungen,
von FPM-DRAM („Fast
Page Mode“) über EDO-DRAM
(„Extended Data Output“) zum
„(A)Synchronous DRAM“. Synchronität
bedeutet bei DRAM
schlichtweg eine Taktung, die
im Optimalfall zum Systembus
gleichgeschaltet ist. Asynchron
synchrones DRAM bedeutet,
dass der Takt von Systembus
und Speichermodul nicht synchron
ist, sondern verschieden.
Funktionsprinzip
Jede Speicherzelle eines
DRAM-Moduls besteht wie bereits
erwähnt aus einem Kondensator
und einem Transistor.
Der Kondensator übernimmt
das eigentliche Speichern der
Funktion, der Transistor ist
für Lese- und Schreibzugriffe
zuständig. Jede Speicherzelle
kann somit ein Bit speichern
und verfügt über eine „Wordline“
und eine „Bitline“. Die
„Wordline“ gibt den Befehl zur
Schaltung an den Transistor,
wodurch die Information über
den Zustand des Kondensators
(1 oder 0) an die „Bitline“ weitergeleitet
wird.
An eine „Wordline“ können
theo retisch beliebig viele Speicherzellen
angeschlossen werden.
In diesem Fall spricht man
von einer sogenannten „Page“
oder auch Speicherzeile. Wird
die „Wordline“ aktiviert, kann
theoretisch die gesamte Speicherzeile
in einem Rutsch ausgelesen
werden. In der Praxis
tritt dieser Fall jedoch äußerst
selten auf, es werden meist einzelne,
über die Spaltenadresse
definierte Speicherzellen angesprochen.
Mehrere Speicherzeilen lassen
sich zu einer Speicherbank zusammenschalten.
Dabei handelt
Wie SRAM und DRAM
Daten speichern
SRAM
SRAM-Speicherzellen sind im Vergleich zu DRAM-Zellen sehr komplex.
Zum Speichern eines einzelnen Bits werden sechs Transistoren (T1-T6)
benötigt, die Schaltung der Transistoren T3 bis T6 erfolgt in Form eines
sogenannten Flipflops. Die Transistoren T1 und T2 steuern den Zugriff
auf das Flipflop, die Zelle verfügt über die Ausgänge bl und Nicht-bl.
DRAM
Eine DRAM-Speicherzelle benötigt hingegen lediglich einen Transistor
und einen Kondensator, an eine Wordline können theoretisch beliebig
viele Zellen angeschlossen werden. Anders als eine SRAM-Speicherzelle
verfügt eine DRAM-Zelle lediglich über einen Ausgang und arbeitet
zudem deutlich langsamer.
So funktioniert ein PC 95
Infrastruktur
*Dual-Channel
Wie Speicher früher aussah
Bis Ende der 80er-Jahre wurden die Speicherchips (DIPs) meist einzeln
auf das Mainboard gelötet. Eine Speicheraufrüstung war daher schwierig
– und hatte mit maximal 1 MBit pro Chip enge Grenzen. Einfacher
wurde es mit SIP-Modulen von bis zu 1 MByte, welche sich aufstecken
ließen. Sie wurden von SIMMs abgelöst; auf ihnen kamen FPM-Speicherchips
zum Einsatz, später das schnellere EDO-RAM (im Bild ein
EDO-SIMM mit 4 MiByte).
1996 folgten die DIMMs, auf ihnen das noch heute übliche SDRAM
– zunächst in „Single Data Rate“-Ausführung. Ende 1999 schließlich
kamen die RDRAM-Chips der Firma Rambus sowie DDR-SDRAM auf
den Markt.
Speichertypen in der Übersicht
Bezeichnung Speichertakt I/O-Takt Datendurchsatz
PC66 66 MHz SDR 66 MHz SDR 533 MiByte/s
PC100 100 MHz SDR 100 MHz SDR 800 MiByte/s
PC133 133 MHz SDR 133 MHz SDR 1.066 MiByte/s
DDR-200 100 MHz DDR 100 MHz DDR 1.600 MiByte/s (PC-1600)
DDR-266 133 MHz DDR 133 MHz DDR 2.100 MiByte/s (PC-2100)
DDR-333 166 MHz DDR 166 MHz DDR 2.700 MiByte/s (PC-2700)
DDR-400 200 MHz DDR 200 MHz DDR 3.200 MiByte/s (PC-3200)
DDR2-400 100 MHz DDR 200 MHz DDR 3.200 MiByte/s (PC2-3200)
DDR2-533 133 MHz DDR 266 MHz DDR 4.266 MiByte/s (PC2-4200)
DDR2-667 166 MHz DDR 333 MHz DDR 5.333 MiByte/s (PC2-5300)
DDR2-800 200 MHz DDR 400 MHz DDR 6.400 MiByte/s (PC2-6400)
DDR2-1066 266 MHz DDR 533 MHz DDR 8.533 MiByte/s (PC2-8500)
DDR3-1066 133 MHz DDR 533 MHz DDR 8.533 MiByte/s (PC3-8500)
DDR3-1333 166 MHz DDR 667 MHz DDR 10.667 MiByte/s (PC3-10600)
DDR3-1600 200 MHz DDR 800 MHz DDR 12.800 MiByte/s (PC3-12800)
DDR3-1866 233 MHz DDR 933 MHz DDR 14.933 MiByte/s (PC3-14900)
DDR3-2133 266 MHz DDR 1.066 MHz DDR 17.066 MiByte/s (PC3-17000)
RD300 300 MHz DDR 300 MHz DDR 1.200 MiByte/s (PC600)
RD400 400 MHz DDR 400 MHz DDR 1.600 MiByte/s (PC800)
RD3200* 400 MHz DDR 400 MHz DDR 3.200 MiByte/s (RIMM 3200)
RD4200* 533 MHz DDR 533 MHz DDR 4.200 MiByte/s (RIMM 4200)
RD6400* 800 MHz DDR 800 MHz DDR 6.400 MiByte/s (RIMM 6400)
es sich um eine zweidimensionale
Matrix mit konstant langen
Speicherzeilen. Ein Adressdekoder
sorgt dafür, dass aus der
Speicheradresse die korrekte
Speicherzeile ermittelt und
über die „Bitline“ an den Ausgabekontakt
übermittelt wird. Die
Anzahl der Ausgabekontakte bestimmt
die Datenbreite der jeweiligen
Chips – wird lediglich
ein Pin ausgeführt, so hat der
Speicherchip eine Datenbreite
von 1 Bit.
DRAM-Chips werden immer zeilenweise
gelesen. Wird das Speichermodul
adressiert, sorgt der
Adressdekoder zunächst für die
Dekodierung der Adresse und
die Ermittlung der benötigten
Speicherzeile. In aller Regel enthält
diese bei modernen Speichermodulen
4.096 Speicherzellen,
also 512 Byte. Bei der bei
x86-Prozessoren üblichen Page
Size von 4 KiByte müssen also
bei jedem Speicherzugriff vier
komplette Speicherzeilen gelesen
oder geschrieben werden.
Lese-/Schreibzugriffe
Ein solcher Lese-/Schreibzugriff
ist in drei Phasen unterteilt:
Vorbereitung, Ausführung des
eigentlichen Lese-/Schreibvorgangs
in einer Speicherzeile
und Nachbereitung. Während
der Vorbereitung werden zwei
Schritte durchgeführt: Zunächst
ermittelt der Adressdekoder
aus der ihm übergebenen
Zeilenadresse die korrekte
Speicherzeile. Die Länge dieser
Adresse hängt dabei von der
Anzahl der in der Speicherbank
vorhandenen Speicherzeilen ab
– bei einer acht Bit langen Zeilenadresse
können 28 Zeilen adressiert
werden. Anschließend
wird die benötigte Speicherzeile
aktiviert, indem zunächst die
im Ruhezustand an der „Bitline“
anliegende Spannung gekappt
und anschließend an die „Wordline“
Spannung angelegt wird.
Im zweiten Schritt wird nun der
eigentliche Lese- oder Schreibzugriff
auf die Speicherzeile
durchgeführt. Bei einem Lesezugriff
wird zunächst die Spaltenadresse
ermittelt und die benötigten
„Bitlines“ über einen
Leseverstärker, der aufgrund
der Länge der Leitungen notwendig
ist, mit der Datenleitung
des Speicherchips verbunden.
Diese Daten werden dann mit
dem nächsten Taktsignal ausgegeben.
Ein Schreibvorgang verläuft
ähnlich. Zunächst wird die
Spaltenadresse vom Spaltendekoder
entschlüsselt und die benötigten
Speicherzellen mit der
Datenleitung verbunden. Die
zu schreibenden Informationen
laufen nun durch den Leseverstärker
und setzen die Bits in
den korrespon dierenden Speicherzellen.
Im Nachgang an einen Lese-/
Schreibzugriff muss die Speicherzeile
wieder deaktiviert
werden. Hierfür wird die
„Wordline“ wieder von der anliegenden
Spannung getrennt,
wodurch die Transistoren in
den jeweiligen Speicherzellen
dieser Speicherzeile die Kondensatoren
der Speicherzellen
von den Bitleitungen abkoppeln.
Zuletzt werden die „Bitlines“
wieder mit Spannung
versorgt und nehmen ihren Ursprungszustand
an.
Auffrischung
Wie bereits erwähnt unterscheidet
sich dynamisches RAM
von statischem RAM dadurch,
dass die Daten flüchtig sind und
regelmäßig aufgefrischt werden
müssen. Diese Wiederauffrischung
führen die primären
96 So funktioniert ein PC
Infrastruktur
Leseverstärker in definierten
Abständen (meist 32 oder 64
Millisekunden) durch. Dabei
macht man sich die Tatsache zunutze,
dass die Daten bei jedem
Schreibvorgang die Leseverstärker
durchlaufen und erst dann
in die Speicherzellen geschrieben
werden. Die Leseverstärker
sind mit T4-SRAM, also 1-Bit-Datenspeicher
als Flipflop realisiert,
mit vier Transistoren ausgestattet
und somit in der Lage,
jeden beliebigen Zustand so
lange zu halten, wie Spannung
anliegt. Der Refresh erfolgt also
regelmäßig aus diesen „Latch“
genannten Registern, wobei
hier der komplette Schreibzyklus,
abgesehen von der Bindung
der „Bitline“ an die Datenleitungen,
durchlaufen wird.
Wartezeiten
Aufgrund dieses hochkomplexen
Vorgangs beim Zugriff auf
Speicherzeilen und -zellen müssen
zwischen den Schritten definierte
Pausen eingelegt werden.
Diese Wartezyklen werden
als Latenzen bezeichnet und
vom Speichercon troller festgelegt.
Der Wert gibt die Taktzyklen
an, die für bestimmte Aktionen
gewartet werden muss.
Da es sich um eine Zeiteinheit
handelt, werden die Latenzen
mit tXYZ bezeichnet, wobei
XYZ die jeweils spezifische Latenz
definiert. In der Reihenfolge
eines Lesezugriffs sind
folgende Latenzen relevant:
Zunächst bestimmt die tRP
die „RAS precharge“, also die
Anzahl der Taktzyklen, die vergehen
müssen, bevor in einem
Speicherchip eine spezielle
Zeile adressiert werden kann.
Die tRAS („Row Access Strobe“)
bestimmt die Anzahl der Taktzyklen,
die benötigt werden, um
eine Zeile in der Speicherbank
Wie ein Speicherchip aufgebaut ist
DRAM-Speicherfeld*
DRAM-Speicherchip*
CS
Chip
Select
BA
Bank
Address
Ax
Address
Steuersignale
RAS
Row Address
Strobe
CAS
Column
Address Strobe
WE
Write
Enable
DQ
1 4
2
3
5
7
Adresspuffer
DRAM-
Steuerung
Daten schreiben
Daten lesen
9
Zeilendekoder
1 2 3 ..
2
3
..
6
Spaltendekoder
Daten Daten
schreiben lesen
Datenpuffer
8
Ausgewählte
1-Bit-Zelle
Speicherfeld
(Matrix)
Zeile 4.096
Spalte 1.024
DRAM-Chip 16Mx8
4 MBit x 4 x 8 = 128 MBit
Bank 3
Bank 2
Bank 1
Bank 0
4 MBit x 8 = 32 MBit
8 Speicherfelder à 4 MBit
* Vereinfachte Darstellung
Ablauf eines Lesezugriffs (vereinfacht):
1) Über die „Chip-Select“- (CS) und „Bank-Address“-Pins (BA) werden der
Chip und die Bank mit der gesuchten Speicherzelle ausgewählt.
2) Der Speichercontroller übergibt die Zeilenadresse dieser Zelle in den
Adresspuffer.
3) Das Steuersignal RAS wird über die RAS-Pins übergeben – so erfährt
die DRAM-Steuerung, dass es sich bei der Adresse um eine Zeile handelt,
noch nicht um eine Spalte.
4) Die DRAM-Steuerung übergibt die Adresse vom Puffer an den
Zeilendekoder, der nun die richtige Zeile („row“) auswählt.
5) Nach kurzer Verzögerung folgt die Spaltenadresse mit dem CAS-Signal.
6) Der Spaltendekoder wählt anhand dieser Adresse die Spalte
(„column“) aus.
7) Das WE-Signal („Write Enable“) bleibt inaktiv. Es werden also keine
Daten geschrieben, sondern nur ausgelesen; bei einem Schreibzugriff
würde dieses Signal aktiviert.
8) Die gewählte Speicherzelle entlässt ihren Inhalt über die Bitleitung in
den Datenpuffer.
9) Der Datenpuffer übergibt die Informationen über die DQ-Pins an den
Datenbus zum Speichercontroller, der sie dann an die CPU
weiterreicht.
So funktioniert ein PC 97
Infrastruktur
DRAM-Alternativen
Die zahlreichen Nachteile von DRAM (Zellauffrischung, vergleichsweise
langsamer Zugriff etc.) sorgten schon früh dafür, dass Entwickler nach
besseren Alternativen suchten. Bis heute jedoch konnte sich DRAM
gegen zahlreiche Konkurrenztechniken behaupten.
RDRAM
Mit RDRAM legten Intel und Rambus vor einigen Jahren beim Versuch,
einen SDRAM-Nachfolger zu etablieren, eine spektakuläre Bauchlandung
hin. RDRAM erschien erstmals 1999 und sollte der Speicher für
Intels Pentium 4 werden. Diverse Probleme sowie hohe Preise zwangen
Intel jedoch dazu, einen Chipsatz für das erheblich günstigere und
zu diesem Zeitpunkt weit verbreitete DDR-SDRAM anzubieten. Die
RDRAM-Module mit 16-Bit-Bus wurden im Dual-Channel-Mode betrieben
und erreichten bis zu 3.200 MiByte/s.
TTRAM, ZRAM und TRAM
Bei TTRAM („twin transistor RAM“) handelt es sich um eine Weiterentwicklung
von DRAM, bei der das Funktionsprinzip erhalten bleibt, der
Kondensator jedoch durch einen Transistor ersetzt wird. Es entstehen
somit keine Leckströme, womit kein Wiederauffrischen nötig ist.
ZRAM („zero capacitor RAM“), eine Technologie, die von AMD übernommen
wurde und Verwendung bei zukünftigen CPUs finden könnte,
ist eine von DRAM und SRAM unabhängige Eigenentwicklung. Da zum
Speichern lediglich ein einzelner Transistor benötigt wird, ermöglicht es
noch höhere Speicherdichten als DRAM – bei mit SRAM vergleichbarer
Performance.
Auch TRAM („thyrstor RAM“), ebenfalls eine vollständige Neuentwicklung,
könnte zum Einsatz kommen. Es macht sich den negativen differenziellen
Widerstand von Transistoren zunutze. Die Speicherzellen der
kommenden Generation sollen bereits die Speicherdichte von DRAM,
jedoch eine höhere Performance als T6 SRAM erreichen.
MRAM, FRAM und PRAM
Seit den 90er-Jahren wird „magneto-resistives RAM“ (MRAM) entwickelt,
das nicht mit elektrischen, sondern mit magnetischen Ladungselementen
arbeitet – und das schneller als DRAM. Es kamen sogar einige
MRAM-Chips in den Handel, blieben aufgrund des hohen Preises
aber bis heute Nischenprodukte.
Seit 1999 wird FRAM angeboten, „ferroelektrisches RAM“. Anstelle des
gewöhnlichen wird ein „ferroelektrischer“ Kondensator verwendet, der
seine Ladung auch ohne Spannung über Jahre hinweg hält. Die Herstellung
ist aber sehr aufwendig.
PRAM („Phase Change RAM“) arbeitet nach einem ähnlichen Prinzip
wie die DVD: Der elektrische Widerstand des Speichermaterials in der
Zelle wird durch Stromstöße geändert; hoher und niedriger Widerstand
stehen für die Bit-Werte 0 und 1.
zu aktivieren. tRCD („RAS low
to CAS low delay“) legt fest, wie
lange es dauert, bis die benötigten
Spalten aktiviert sind. Und
zuletzt die bekannteste aller Latenzen,
die tCL, die bestimmt,
wie viele Takte vergehen müssen,
bis davon ausgegangen
werden kann, dass die Daten
vollständig aus den benötigten
Speicherzellen ausgelesen wurden.
Stabilität contra
Übertakten
Damit lässt sich auch der Zusammenhang
aus Spannung, schärferen
Timings und höherer Stabilität
erklären. Angenommen,
Sie verringern die tCL Ihres
Speichermoduls. Damit nimmt
der Speichercon troller bereits
einen Taktzyklus vor dem vom
Speicherhersteller vorgesehenen
Zeitraum die Korrektheit
der ausgelesenen Daten an und
arbeitet damit weiter. Stimmen
diese jedoch noch nicht, kann
es zu Lese- oder Schreibfehlern
und in direkter Folge zu einem
Absturz des Systems kommen.
Wenn Sie jedoch die Spannung
des Speichers minimal anheben,
sinkt die benötigte Zeit,
um definierte Ladungszustände
schneller zu erreichen. Das System
kann wieder stabil werden.
Das Gleiche gilt in dieser Form
natürlich auch für alle anderen,
hier nicht beschriebenen Latenzen.
Doppeltes Lottchen
Bei DDR-SDRAM, einer Weiterentwicklung
von SDRAM,
wandte man einen Trick an, um
die Datenrate zu verdoppeln.
Da die Taktfrequenz der Speicherchips
nicht signifikant erhöht
werden konnte, entschlossen
sich die Ingenieure, beide
Taktflanken, also an- und absteigend,
zur Übertragung von
Daten zu nutzen. Dadurch kann
ein mit 100 MHz getaktetes
DDR-SDRAM Modul theoretisch
doppelt so viele Daten übertragen
wie ein mit 100 MHz getaktetes
SDR-SDRAM-Modul.
In der Praxis gehen ein paar
Prozent Leistung aus strukturellen
Gründen verloren. DDR2-
SDRAM, das im Vergleich zu
DDR-SDRAM wieder eine Verdopplung
der effektiven Datenrate
beinhaltet, stellt dies
dadurch sicher, dass sowohl der
Prefetch-Buffer von zwei auf
vier Bit als auch der I/O-Takt,
mit dem das Modul nach außen
kommuniziert, verdoppelt wurden.
Das gleiche Prinzip wurde
noch einmal bei DDR3-SDRAM
angewandt – Verdopplung des
Prefetch-Buffers von vier auf
acht Bit und Vervierfachung
des I/O-Takts in Relation zum
Speichertakt.
Der Preis für diese Verdopplung
war ein drastischer Anstieg der
Latenzen, da sich an der grundlegenden
Speichertechnik der
DRAM-Speicherchips nichts geändert
hatte. Faktisch sind die
Latenzen bei DDR2-SDRAM im
Vergleich zu DDR-SDRAM also
fast doppelt, bei DDR3-SDRAM
sogar fast viermal so hoch. Rechnet
man den Takt jedoch in Nanosekunden
um, ergeben sich
fast identische Wartezeiten.
Datenkohärenz
Bei besonders hochkapazitiven
RAM-Modulen kommt eine spezielle
Technik zum Einsatz, da
die Informationen aus den Speicherchips
sonst unzuverlässig
sein könnten. Die Rede ist von
sogenannten Registered-Modulen.
Hierbei setzt man auf ein
gesondertes externes Register,
welches zwischen dem Spei-
98 So funktioniert ein PC
Infrastruktur
Wie ein Speichermodul aufgebaut ist
Speicherchips
Je nach Kapazität des Speichermoduls
enthält es unterschiedlich viele Speicherchips.
Die meisten Module mit hoher
Kapazität verfügen über Chips auf Vorderund
Rückseite.
Register
Diese zusätzlichen Chips finden
sich ausschließlich bei Registered-
Modulen (Server). Sie entlasten den
Speichercontroller und ermöglichen
höhere Kapazitäten.
Kerbe
Die Kerben an der Seite fixieren die Module
in den Speichersockeln und verhindern ein
ungewolltes Herausrutschen. SO-DIMM-Module
verfügen aufgrund der höheren Anforderungen
über Metallsicherungen.
Pins
Auch die Anzahl der Kontakte variiert – 168
bei SDR-SDRAM, 184 bei DDR-SDRAM,
240 bei DDR2- und DDR3-SDRAM. SO-
DIMM-Module, die speziell für Laptops
entwickelt wurden, verfügen über 144
(SDR), 200 (DDR und DDR2) oder 204
(DDR3) Kontakte.
Kerbe
Da die Spannung von SDR-,
DDR-, DDR2- und DDR3-Modulen
unterschiedlich ist, verfügen
sie über unterschiedliche
Kerben. Dadurch wird
sichergestellt, dass sie nur in