perf - Institut for Computer Systems

Transcription

perf - Institut for Computer Systems
Leistungsanalyse von Graphiksystemen
Semesterarbeit
Winter 1998/1999
Stephan Würmlin
Pascal Kurtansky
ETH Zürich
Departement Informatik
Institut für Wissenschaftliches Rechnen
Forschungsgruppe Graphische Datenverarbeitung
Prof. Dr. Markus Gross
Betreuer:
Daniel Bielser
Reto Lütolf
1Inhaltsverzeichnis
Zusammenfassung
v
Abstract
vii
Aufgabenstellung
ix
1 Einleitung
1
1.1 Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Graphikleistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2.1
3D Anwendungsleistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.2
Leistung von OpenGL Graphikoperationen . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Systemleistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 Die getesteten Computersysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.5 Überblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
BESCHREIBUNG DER SYSTEME
7
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
9
2.1 Systemarchitektur der Indigo2 mit XZ/Extreme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Systemarchitektur der Indigo2 Maximum Impact . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 XZ und Extreme Graphiksystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3.1
Die Standard Rendering-Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.2
Das CPU-Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.3
Das Geometry-Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3.4
Das Raster-Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.3.5
Das Display-Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.6
Die XZ und Extreme Graphic-Features . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.4 Das Maximum Impact Graphiksystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Die O2 von SGI
21
3.1 Systemarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.1
Systemplatine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.1.2
Die Prozessoren: MIPS R5000 und R10000 . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.3
Der R10000 in der O2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.4
Der Speicher (UMA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2 Graphikleistung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.1
Allgemeine Bemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.2
Vergleich mit Indigo2 Systemen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Die Octane von SGI
33
4.1 Die Octane Modelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.2 Systemarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.1
Systemplatine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2.2
Die Crossbar-Switch Technologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 Graphiksystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
i
ii
Inhaltsverzeichnis
5 Die Onyx2 von SGI
41
5.1 Systemarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.1
Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.1.2
Multi-Pipe Rendering Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.1.3
Aufbau der Onyx2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.1.4
Hypercube Architektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.1.5
Node-Boards und I/O Subsystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.1.6
Die Prozessoren: MIPS R10000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.2 Graphiksystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2.1
Verarbeitungsschritte in der Visualisierungs-Pipeline . . . . . . . . . . . . . . . 55
5.2.2
Graphic-Features und weitere Spezialitäten . . . . . . . . . . . . . . . . . . . . . . . 56
6 Ultra 1 von SUN
59
6.1 Systemarchitektur der Ultra1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.1.1
Der UPA Crossbar-Switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.1.2
Der Prozessor: UltraSPARC I Version 9 . . . . . . . . . . . . . . . . . . . . . . . . . . 63
6.2 Graphiksysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.2.1
SUN Ultra 1 mit Creator 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.2.2
Elite 3D m3/m6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7 Zwei PC Systeme
69
7.1 Systemarchitektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.1.1
AGP von Intel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.1.2
Die Prozessoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.2 Graphiksystem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
LEISTUNGSANALYSE UND BENCHMARKING
77
8 Der Viewperf Benchmark
79
8.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.1.1
Charakteristiken von Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.1.2
Das geometrische Mittel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.2 Die Viewsets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.2.1
ProCDRS - Pro/DESIGNER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.2.2
DX - Data Explorer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.2.3
DRV - Design Review . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.2.4
AWadvs - Advanced Visualizer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
8.2.5
Light - Lightscape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.2.6
CDRS - Conceptual Design Rendering Software . . . . . . . . . . . . . . . . . . . . 89
8.3 Benchmarking mit Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
8.3.1
Beispielaufruf von Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.4 Kompilieren von Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.4.1
Sun unter Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.4.2
SGI unter IRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
8.4.3
Pentium Pro/Pentium II unter Windows NT . . . . . . . . . . . . . . . . . . . . . . . . 91
8.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Inhaltsverzeichnis
iii
9 Der GLperf Benchmark
93
9.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.1.1
Charakteristiken von GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.1.2
Unterschiede zwischen Viewperf und GLperf . . . . . . . . . . . . . . . . . . . . . . . 97
9.2 Die OPC Skripte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9.2.1
BgnEnd.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
9.2.2
CopyPixl.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
9.2.3
DrawPixl.ndx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
9.2.4
DrawPixl.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
9.2.5
FillRate.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.2.6
Light.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
9.2.7
LineFill.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
9.2.8
OPClist.ndx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
9.2.9
OPClist.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
9.2.10 ReadPixl.ndx . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
9.2.11 ReadPixl.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
9.2.12 TexImage.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.2.13 TriFill.rgb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
9.3 Benchmarking mit GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.3.1
Beispielaufruf von GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.4 Compilieren von GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.4.1
Sun unter Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.4.2
SGI unter IRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
9.4.3
Pentium Pro/Pentium II unter Windows NT . . . . . . . . . . . . . . . . . . . . . . . 107
9.5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
10 Der SPEC CPU95 Benchmark
109
10.1 Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.1.1 Charakteristiken von CPU95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.2 Die Integer Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
10.3 Die Floating-Point Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.4 Benchmarking mit CPU95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.4.1 Beispielaufruf von CPU95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.5 Compilieren von CPU95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.5.1 Sun unter Solaris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
10.5.2 SGI unter IRIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.5.3 Pentium Pro/Pentium II unter Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
10.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
11 Resultate und Analyse
117
11.1 Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
11.1.1 Bedingungen beim Ausführen von Viewperf . . . . . . . . . . . . . . . . . . . . . . . 117
11.1.2 Die Resultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
11.1.3 Der Test ohne Netzwerk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
11.1.4 Application Binary Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
11.1.5 Auflösungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
11.1.6 Entkopplung des Bufferaustauschs vom vertikalen Refresh des Bildes . . 120
11.1.7 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
11.2 GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
11.2.1 Bedingungen beim Ausführen von GLperf . . . . . . . . . . . . . . . . . . . . . . . . 126
iv
Inhaltsverzeichnis
11.2.2 Die Resultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
11.2.3 TexImage - Texture Download/Switching . . . . . . . . . . . . . . . . . . . . . . . . 127
11.2.4 Light - Lichtquellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
11.2.5 FillRate - Pixelfüllraten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
11.2.6 TriFill - Dreieckfüllraten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
11.3 SPEC CPU95 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.3.1 Bedingungen beim Ausführen von CPU95 . . . . . . . . . . . . . . . . . . . . . . . . 138
11.3.2 Die Resultate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
11.4 Schlussbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
12 Schlussworte
145
12.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
12.2 Fazit und Schlussbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
12.3 Dank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
13 Referenzen
147
A Anhang
149
A.1 Die Open Graphics Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
A.1.1 Computergraphik Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
A.1.2 Die OpenGL Primitiven . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
A.1.3 Die OpenGL Pipeline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
A.2 Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
A.2.1 Die Viewperf Kommandozeilen Parameter . . . . . . . . . . . . . . . . . . . . . . . 151
A.3 GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
A.3.1 Die Grammatik der Eingabedateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
A.3.2 Die fehlenden OpenGL Kommandos auf den SUN’s . . . . . . . . . . . . . . . . 155
B Weitere Tests
157
B.1 Das Dell Computersystem mit drei verschiedenen Graphikkarten . . . . . . . . . . . . . 157
B.1.1 Diamond FireGL 1000 PRO (AGP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
B.1.2 Evans & Sutherland AccelGalaxy 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
B.1.3 Intergraph Intense 3D Wildcat 4000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
B.2 Die sgi Visual Workstation 320 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
B.3 Resultate und Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
B.3.1 Viewperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
B.3.2 GLperf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
B.4 Schlussbemerkungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
Zusammenfassung
In dieser Semesterarbeit wird die Graphikleistung von verschiedenen Computersystemen mit
Hilfe von Standard Benchmark Programmen verglichen.
In einem ersten Teil werden die getesteten Systeme beschrieben. Es werden dabei die Prozessoren und ihr Einfluss auf die Graphikleistung, die Systemarchitektur und die Graphiksubsysteme analysiert. Es interessieren dabei speziell die implementierten Graphikfunktionen,
welche die Graphiksubsyteme in Hardware durchführen können.
In einem zweiten Teil werden Leistungsmessungen durchgeführt und deren Resultate analysiert. Zur Leistungsmessung werden Standard-Benchmarks verwendet, welche von der Standard Performance Evaluation Corporation SPEC entwickelt werden. Für
Graphikleistungsmessungen werden die Benchmarks Viewperf und GLperf verwendet, welche
einerseits die 3D-Anwendungsleistung und andererseits die rohe Graphikleistung messen. Für
die Messung der gesamten Systemleistung wird SPEC CPU95 verwendet.
Der Vergleich umfasst neun verschiedene Computersysteme, die von Silicon Graphics’ Onyx2
mit Infinite Reality2 Graphikhardware zu Arbeitsstationen von Sun und SGI bis zu Standard PC
Arbeitsstationen mit OpenGL Graphikbeschleunigern reichen.
v
vi
.
Abstract
This semester thesis compares the graphics performance of a number of different computer
systems using standard benchmarking software.
The first part gives a comprehensive Overview of the tested computer systems. We will analyse
the processor and its impact on graphics performance, the system architecture and the graphics
subsystem. It is specially concerned with the implemented graphics functions that are performed in hardware by the graphics subsystem.
In the second part we will make performance evaluations and analyse the results. The evaluations will be realized with standard benchmarks which are implemented and supported by the
Standard Performance Evaluation Corportion SPEC. We will measure graphics performance
with Viewperf for 3D application performance and GLperf for optimal performance. To measure system-level performance we will use SPEC CPU95.
The comparison involves nine different computer systems, ranging from SGI’s powerful Onyx
2 with Infinite Reality graphic hardware to scientific workstations from Sun and Silicon Graphics and standard PC workstations.
vii
viii
.
Eidgenössische
Technische Hochschule
Zürich
Ecole polytechnique fédérale de Zurich
Politecnico federale di Zurigo
Swiss Federal Institute of Technology Zurich
Institut für Wissenschaftliches Rechnen
Forschungsgruppe Graphische Datenverarbeitung
Prof. M. Gross
Aufgabenstellung
Semesterarbeit
von Stephan Würmlin und Pascal Kurtansky
Graphikleistungsanalyse von Computersystemen
Einleitung
Bis vor kurzem waren hohe Graphikleistungen nur auf Workstations oder auf entsprechend ausgerüsteten Grossystemen verfügbar – natürlich zu entsprechend hohen Preisen. Inzwischen
wird jeder normale PC mit Beschleuniger-Chips, eventuell sogar mit 3D-Fähigkeiten, und speziellen Bussystemen im Graphiksubsystem ausgerüstet. Betrachtet man die eindrücklichen
Demoprogramme oder spezielle Graphikanwendungen auf gängigen PC-Systemen, drängt sich
die Frage nach einem Leistungsvergleich mit teuren, optimierten Graphikworkstations geradezu auf. Insbesondere wäre ein Leistungsvergleich mit den verschiedenen, nach wie vor im
Highend-Bereich angesiedelten SGI-Rechnern von besonderem Interesse.
Natürlich muss bei einem plattformübergreifenden Vergleich auch anderen wichtigen Systemkomponenten wie Prozessor, Busarchitektur oder Massenspeicher Rechnung getragen werden.
Aufgabenstellung
Für den Vergleich sollen aussagekräftige Benchmark-Programme gesucht und bezüglich ihrer
Bewertungsverfahren kritisch betrachtet werden. Hauptsächlich soll das Benchmark-Programm
Viewperf zur Anwendung kommen und dementsprechend genau untersucht werden.
Nach Möglichkeit soll durch Performance-Tests mit üblichen Graphik-Applikationen wie zum
Beispiel AVS/Express aufgezeigt werden, in wie weit die Benchmark-Programme im Vergleich
zu den Anforderungen realer Anwendungsprogramme eher synthetische Testergebnisse liefern.
Die folgenden Graphiksysteme sollen untersucht werden:
•
SGI: Indigo2 mit Maximum Impact
•
SGI: Indigo2 mit XZ
•
SGI: Indigo2 mit Extreme
•
SGI: O2 mit Standard Graphikhardware
•
SGI: Onyx2 mit Infinite Reality2
•
SUN: Ultra Sparc mit Creator3D
•
PC: PentiumPro mit Diamond FireGL 1000
•
evtl. Mac-Plattform
Die normierten Testergebnisse sollen tabellarisch dargestellt werden.
Die getesteten Rechnersysteme inklusive ihrer Graphikhardware sowie die benutzen Benchmark-Programme sind detailliert zu vergleichen und zu beschreiben.
v
vi
.
Die Semesterarbeit steht unter der Obhut von Prof. Dr. Markus Gross und wird von Reto Lütolf
und Daniel Bielser betreut.
Ausgabe: 20. Oktober 1998
(Prof. Dr. M. Gross)
Abgabe: 3. Juli 1999
1
1Einleitung
Mit der Einführung von immer leistungsfähigeren und kostengünstigeren Graphikkarten für
Windows PC’s scheint es, dass Silicon Graphics mit ihren Hochleistungsworkstations bald
einmal die 3D Graphikkrone abgeben muss. Doch scheint es auch, dass die PC Arbeitsstationen
für komplexes 3D Modelling von Firmen wie zum Beispiel Pixar nicht genutzt werden.
In dieser Arbeit soll die Graphikleistung von verschiedenen Arbeitsstationen gemessen und verglichen werden. Es wurden sowohl High-End Systeme wie eine Onyx2 Konfiguration für
200’000 Franken gemessen als auch PC Arbeitsstationen für ein paar Tausend Franken.
Zur Messung von Leistung in der Computer Technologie wird in der Regel ein Benchmark verwendet. Ein Benchmark lässt sich wie folgt umschreiben:
1.1 Benchmarks
Ein Benchmark ist eine Referenz, wie etwas gemessen werden kann. In der Computer und Internet Technologie kann das Wort Benchmark folgende Bedeutungen haben:
(i)
Konditionen, unter welchen ein Produkt oder System gemessen werden kann.
(ii)
Ein Programm, das speziell entwickelt wurde, um gewisse Komponenten, Systeme oder
Anwendungen zu messen.
(iii) Leistungskriterien, die ein Produkt erreichen kann.
Benchmarks, die in einem Labor entwickelt werden, schaffen es machmal nicht, reale Produkte
oder Umgebungen zu reflektieren. Aus diesem Grund definiert Eric Raymond ein Benchmark
als “eine falsche Leistungsmessung” und zitiert ein altes Hackersprichwort:
“In the Computer Industry, there are three kinds of lies:
Lies, Damn Lies, and Benchmarks.”
1.2 Graphikleistung
Viele Graphikkartenhersteller geben zur Beschreibung der Leistung ihrer Graphik-Hardware
Zahlen wie zum Beispiel “3.4 Millionen Polygone pro Sekunde” an.
Werden diese Polygone beleuchtet? Wie gross sind die Polygone? Sind diese Polygone schattiert, oder handelt es sich um ein Drahtgittermodell?
1
2
1 Einleitung
Das Problem ist, dass niemand wirklich genaue Spezifikationen über die Art der Messungen
angibt.
Ein weiteres Problem ist die Interpretation dieser Zahlen. Was nützt eine Angabe in “Millionen
Polygone in der Sekunde”, wenn man einfach wissen will, wie schnell eine gegebene Animation
laufen würde.
Deshalb kann man auch richtige Anwendungen zur Hand nehmen, um Vergleiche anzustellen.
Grob gesagt gibt es zwei Wege die Graphikleistung eines Computersystems zu messen: 3D
Anwendungsleistung und Leistung von OpenGL Graphikoperationen.
1.2.1 3D Anwendungsleistung
In dieser Arbeit wird ein standardisierter und von der Industrie akzeptierter 3D Anwendungsbenchmark, der Viewperf Benchmark, dazu verwendet, die Graphikleistung realer 3D Anwendungen zu messen. Viewperf verwendet fünf sogenannte Viewsets, welche verschiedene
Anwendungsgebiete repräsentieren.
Bezeichnung
repräsentative Anwendungsgebiete
DX
wissenschaftliche Datenvisualisierung und -analyse
ProCDRS
Modellierung und Rendering im Bereich der computerunterstützten
Konstruktion
DRV
3D Computermodellbetrachtung
AWadvs
3D Animation, Rendering, Modellierung und Bildaufbau
Light
Radiosity Visualisierung
Tabelle 1.1: Die Viewsets von Viewperf
Jedes Viewset besteht aus einer Vielzahl von Einzeltests, welche alle ein Resultat in Bildern pro
Sekunde ausgeben. Für jedes Viewset wird eine Zahl als gewichtetes Resultat der Einzeltests
angegeben; grössere Zahlen geben dann grössere Leistung an.
1.2.2 Leistung von OpenGL Graphikoperationen
Eine der grössten Schwierigkeiten beim Vergleichen der 3D Graphikleistung ist, wie schon
erwähnt, die Spezifikation der Resultate. Die gemessenen Werte varieren mit verschiedenen
Parametern, zum Beispiel Grösse, Farbtiefe, Schattierungsmodus, Beleuchtung, etc. Um die
Parameter zu standardisieren, wurde von der SPEC ein Benchmark Programm mit dem Namen
GLperf entwickelt, welches in dieser Arbeit verwendet wird, um die Leistung von OpenGL
Graphikoperationen zwischen verschiedenen Computersystemen zu vergleichen. GLperf
variert dabei in dreizehn Skripten die benutzten Primitiven1 in verschiedenen Modi und Grössen. Die Resultate werden in “Objekte pro Sekunde” angegeben, also zum Beispiel in “Dreiecke
pro Sekunde”.
Unser Interesse galt den Pixel- und Dreieckfüllraten, Texturierungsraten und Leistungen in
1. Eine Primitive ist ein Grundelement eines Graphikprogramms. In 2D sind dies u.a. Kreis, Linie; bei
3D sind dies analog Kugel, Fläche, etc. Eine kleine Beschreibung der in OpenGL vorkommenden Primitiven sind im Anhang A.1.2 wiedergegeben.
1.3 Systemleistung
3
Abhängigkeit der Lichtquellenanzahl. Aus diesem Grund benutzten wir nur vier der dreizehn
Skripte:
Skript
Beschreibung
TexImage.rgb
misst die Leistung der glTexImage2D RGB Operationen.
glTexImage2D spezifiziert ein zweidimensionales Texturbild, welches auf eine Graphikprimitive gelegt wird
FillRate.rgb
misst wieviele Pixel pro Sekunde gezeichnet werden können
Light.rgb
misst den Einfluss der Anzahl eingeschalteter Lichtquellen für das
Zeichnen einer bestimmten Primitive
TriFill.rgb
misst den Einfluss der Vergrösserung der Primitive auf das Zeichnen
von Polygonen
Tabelle 1.2: Die 4 verwendeten Skripte von GLperf
Meistens kann der Systemprozessor, der die Bilddaten berechnet, diese nicht genügend schnell
an das Graphiksubsystem weitergeben. Dabei erweisen sich die Prozessorleistung, die Speichergeschwindigkeit und die Busbandbreite als Flaschenhals zwischen Prozessor und Graphiksubsystem. Somit sind die von Viewperf und GLperf ermittelten Werte auch von diesen
Systemkomponenten abhängig. Aus diesem Grund wurde mit einem weiteren Benchmark Programm auch noch die Systemleistung gemessen.
1.3 Systemleistung
Zur Messung der Systemleistung wurde ein Benchmark Programm verwendet, welches ebenfalls von der SPEC [18] entwickelt wurde. SPEC CPU95, misst die Leistung des Prozessors,
des Speichers und des Compilers. CPU95 benutzt die CINT95 Tests mit acht Programmen um
die Festkommaeinheit und die CFP95 Tests mit zehn Programmen um die Gleitkommaeinheit
zu testen. Das CPU95 Programm testet keine weiteren Komponenten, wie zum Beispiel I/O, die
Graphikleistung oder das Netzwerk, weshalb es sich gut eignet, um den Einfluss steigender
Systemleistung auf die Graphikleistung des Computersystems zu betrachten.
Dieser Benchmark wird in dieser Arbeit nicht so detailliert beschrieben, wie die Graphikbenchmark-Programme. Die mit CPU95 ermittelten Werte dienen jedoch der Analyse der Graphikleistung.
1.4 Die getesteten Computersysteme
Wir konnten eine grosse Anzahl von Computersystemen der Computer Graphik-Gruppe und
des Departements Informatik der ETH Zürich testen. So schufen wir eine Momentaufnahme der
Graphikleistung.
Jedem System wurde eine ID vergeben, welche dazu dient, das System ohen langen Namen zu
identifizieren. Diese ID gibt in der Regel die DNS Adresse in der ethz.ch Domain wieder (gogh
entspricht zum Beispiel gogh.ethz.ch). Bei den Windows NT-Computern entsprechen die ID’s
nicht den DNS Namen, diese sind matisse für den ppro und capilla für den ptwo
4
1 Einleitung
Tabelle 1.3 gibt einen Überblick über die getesteten Computersysteme.
ID
Vendor System
Name
OS
Vers.
Window CPU
Env.
Graphic System
gogh
SGI
Indigo2
IRIX
6.5
X
MIPS R10000
195 MHz
Maximum
Impact 10000
caroll
SGI
Indigo2
IRIX
6.5
X
MIPS R4400
200 MHz
XZ
escher
SGI
Indigo2
IRIX
6.5
X
MIPS R4400
150 MHz
Extreme
mondrian SGI
O2
IRIX
6.5
X
MIPS R5000
200 MHz
CRM
birs
SGI
Octane
IRIX
6.5
X
MIPS R10000
250 MHz
MXE
luxo
SGI
Onyx2
IRIX
6.4
X
MIPS R10000
8 × 195 MHz
Infinite Reality2
ppro
Dell
Optiplex
Pro
WinNT
4 SP3
Win
Intel Pentium
Pro 180 MHz
Diamond FireGL
1000 PRO PCI
ptwo
Dell
Precision
410
WinNT
4 SP3
Win
Intel Pentium II
2 × 400 MHz
Diamond FireGL
1000 PRO AGP
antimon
Sun
Ultra1
Solaris
Model 170 2.5
X
UltraSPARC I
167 MHz
Creator 3D
Tabelle 1.3: Überblick über die Computer Systeme
Leider konnten wir weder eine neue Sun Arbeitsstation (wie zum Beispiel die Sun Ultra60 mit
Elite3D-m6 Graphiksystem) noch ein leistungsfähiges OpenGL System unter Windows NT
(wie zum Beispiel die Intergraph TDZ2000D GX1 450 MHz mit der Intense3D Wildcat 4000
Graphikkarte) bis zur Abgabe dieser Arbeit testen.
Im Anhang B befinden sich jedoch die Resultate einer Dell Precision 410 mit Intel Pentium III
Prozessor (500 MHz), 256 MByte RAM mit folgenden Graphikkarten:
•
Diamond FireGL 1000 Pro
•
Evans & Sutherland AccelGalaxy 52
•
Intergraph Intense3D Wildcat 4000
Ausserdem konnten wir noch eine Visual Workstation 320 von SGI testen. Diese war mit einem
Intel Pentium II Prozessor (400 MHz) und ebenfalls 256 MByte RAM ausgestattet.
Eine Sun Ultra60 wurde uns von Sun (Schweiz) trotz frühzeitiger Anmeldung nicht zur Verfügung gestellt.
1.5 Überblick
Die an diese Einleitung anschliessenden Kapitel 2 bis 7 haben die Beschreibung der getesteten
Systeme zum Inhalt, insbesondere eine genaue Betrachtung der Graphikengine.
1.5 Überblick
5
Kapitel 8 beschreibt Viewperf, den ersten der zwei verwendeten Graphik-Benchmarks, dabei
werden speziell die Viewsets genau untersucht.
Kaptiel 9 beschäftigt sich mit GLperf, dem zweiten Graphik-Benchmark, und betrachtet neben
dem Benchmark auch die 13 Skripte.
Kapitel 10 erklärt kurz, was SPEC CPU95 ist und gibt einen Überblick über die zugrundeliegenden Tests.
Kapitel 11 zeigt die erhaltenen Resultate und analysiert diese.
Kapitel 12 beschliesst diesen Bericht mit einer Zusammenfassung und Schlussbemerkungen.
Einen kurzen Überblick über die OpenGL, die Kommandozeilenoptionen von Viewperf sowie
die Grammatik von GLperf Skripten bilden den Anhang A.
Die weiteren Tests mit den neuen Windows NT-Computern und der Visual Workstation befinden sich im Anhang B.
6
1 Einleitung
Erster Teil
BESCHREIBUNG DER SYSTEME
7
8
.
2
2Indigo2 XZ/Extreme und
Maximum Impact von SGI
Bild SGI
Bereits 1993 wurden die Indigo Rechner durch die Indigo2 Systeme mit XZ oder Extreme Graphiksystemen abgelöst. Damit stellen diese SGI Rechner die ältesten im Rahmen dieser Arbeit
getesteten Maschinen dar.
Ausgestattet wird die Indigo2 mit einem MIPS R44001 Prozessor, einem 64 Bit breiten GIO64
Bus und wahlweise mit XZ oder Extreme Graphikkarten (Siehe Abschnitt 2.3), wobei in der
Extreme Ausführung die doppelte Anzahl von Geometrie- und Raster-Engines zum Einsatz
kommen.
Drei Jahre später (1996), hat SGI die verbesserte und leistungsstärkere Indigo2 Maximum
Impact auf den Markt gebracht. Die Systemarchitektur wurde bis auf einige Details eins zu eins
von den anderen Indigo2 Modellen übernommen. Bezüglich des Graphiksystems ist SGI aber
neue Wege gegangen und konnte dadurch die Graphikleistung massiv steigern (Siehe
Abschnitt 2.4).
1. Der Vergleich mit den neueren MIPS R5000 und R10000 Prozessoren wird unter 3.1.2 behandelt.
9
10
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
Um Konfusionen zu vermeiden, werden die älteren Indigo und die neueren Indigo2 Rechner oftmals durch ihre Gehäusefarbe identifiziert, besonders in älteren Dokumentationen und Whitepapers.
•
Violett (purple) für Indigo mit XZ 1oder Elan2 Graphik
•
Grün (green) für Indigo2 mit XL3, XZ oder Extreme Graphik
2.1 Systemarchitektur der Indigo2 mit XZ/Extreme
Die Indigo2 Systeme verwenden eine klassische Busarchitektur. Vom Prozessor-Modul ausgehend, stellt der Systembus die Verbindung zum Hauptspeicher-Kontroller her. Direkt daran
angeschlossen sind zum einen der Hauptspeicher und zum anderen der GIO64-Bus. Diese
Systemarchitektur wird als Non-Unified-Memory Architektur (NUMA) bezeichnet. Das
Memory, bestehend aus Hauptspeicher und lokalen Speichern auf den Erweiterungskarten, ist
physikalisch betrachtet über das gesamte System verteilt. Als Alternative zur NUMA existiert
auch die Unified-Memory Architektur (UMA), wie sie etwa in der O2 von SGI (Siehe
Abschnitt 3) verwendet wird.
Die zentrale Verbindung der einzelnen Subsysteme bilden die beiden Systembusse:
•
Zwischen dem Memory/DMA Controller und der I/O Einheit kommt ein 64 Bit breiter
Bus zum Einsatz. Daran werden mit einer Busbreite von 32 Bit die vier EISA Slots und
mit 64 Bit die drei GIO64 Slots angeschlossen.
•
Der Memory Bus bildet die Verbindung zwischen dem Prozessor Modul und dem
Hauptspeicher, ebenfalls in 64 Bit breiter Ausführung.
An der I/O Einheit werden nebst den beiden SCSI Kanälen die peripheren Einheiten, wie etwa
parallele/serielle Schnittstellen oder ein Ethernet Adapter angeschlossen. Auf der nächsten
Seite ist der Aufbau eines Indigo2 Rechners schematisch dargestellt.
Der Prozessor: MIPS R4400
Der R4400 mit MIPS III Instruktionsatz ist ein echter 64 Bit Prozessor mit einer Super-Pipeline
Architektur. Im Gegensatz zum neueren R5000 oder R10000 fehlt dem R4400 jedoch die Unterstützung für Graphikanwendungen, d.h. es sind keine sogenannte MADD4 Instruktionen vorhanden. Aus diesem Grunde soll hier nicht weiter auf das Design und den MIPS III
Instruktionssatz des Prozessors eingegangen werden5.
Für einen Vergleich des R4400 mit dem R5000 und R10000 wird auf die Tabelle 3.1 verwiesen.
1. Die Indigo XZ Graphikhardware verwendet lediglich zwei Graphics-Engines (GE).
2. Bei der Indigo Elan Graphikhardware kamen vier Graphics-Engines zum Einsatz.
Da SGI die Graphikhardware weiterentwickelte, gilt es zu beachten, dass eine Indigo Elan nicht identisch ist mit einer Indigo2 XZ, welche ebenfalls vier GE verwendet.
3. Diese Variante hatte keine GE, d.h. alle Graphik-Berechnungen mussten in Software durchgeführt
werden.
4. MADD = Multiply-Add.
Für eine ausführliche Beschreibung der MADD Instruktionen siehe 3.1.2.
5. Details unter www.mips.com
2.1 Systemarchitektur der Indigo2 mit XZ/Extreme
Abbildung 2.1:
Die Indigo2 XZ/Extreme Systemplatine
11
12
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
2.2 Systemarchitektur der Indigo2 Maximum Impact
Zwischen einer Indigo2 mit XZ oder Extreme und Indigo2 Maximum Impact bestehen nur
geringe Unterschiede. Beide Systeme haben grundsätzlich dieselbe NUMA-Systemarchitektur,
somit kann Abbildung 2.1 auch für eine schematische Übersicht des Maximum Impact Systems
verwendet werden. In der nachfolgenden Tabelle werden die wichtigsten Unterschiede der
beiden Systeme dargestellt. Für eine ausführliche Beschreibung der Graphiksysteme wird auf
die Abschnitte 2.3 und 2.4 verwiesen.
Indigo2 XZ/Extreme
Indigo2 Maximum Impact
Prozessor
MIPS R4400
MIPS R10000
Max. Hauptspeicher
384 MB
640 MB
GIO64 Slots
3
2
EISA Slots
4
3
Tabelle 2.1: Vergleich zwischen Indigo2 XZ/Extreme und Indigo2 Maximum Impact
Es ist klar, dass in der Maximum Impact Ausführung auch bessere und leistungsstärkere Subsysteme, wie etwa der SCSI Controller, verwendet werden.
Von besonderer Bedeutung ist aber das Graphiksystem der Maximum Impact, welches nur
schon aufgrund der Rechenleistung der Graphics Engines (GE) bedeutend schneller als die
XZ/Extreme Ausführung ist. Eine Gegenüberstellung der Rechenleistung befindet sich in
Tabelle 3.2.
2.3 XZ und Extreme Graphiksystem
Da die XZ und Extreme Graphiksysteme grundsätzlich die gleiche Hardware verwenden,
werden sie in diesem Abschnitt auch zusammen beschrieben. Die einzigen Unterschiede sind in
der Tabelle 2.2 zusammengefasst.
Da im weiteren Verlauf dieses Abschnittes immer wieder neue Begriffe eingeführt werden, ist
es empfehlenswert, die Abbildung 2.2 zur Hand zu haben. Die einzelnen Graphik-Verarbeitungsstufen werden von “oben nach unten” erklärt, d.h. es wird schrittweise die Verarbeitung
eines Graphikbefehls verfolgt - vom Empfang über den Bus bis hin zur Darstellung auf dem
Monitor.
Indigo2 mit XZ
Indigo2 mit Extreme
Geometry Engines
(GE7 Prozessor)
4
8
Raster Engines
(Typ 3)
1
2
Tabelle 2.2: Hardware Komponenten der Graphiksysteme.
2.3 XZ und Extreme Graphiksystem
13
Das Herz des XZ und Extreme Graphiksystems sind die Geometry Engines (GE7). Das Design
weist eine spezielle mirkoprogrammierte Architektur1 auf, die eine Implementation von verschiedenen Algorithmen ermöglicht. Zum eigentlichen Kern des allgemeinen Floating Point
Instruktionssatzes wurden weitere Instruktionen hinzugefügt, sodass vor allem Algorithmen mit
Graphikberechnungen effizient ausgeführt werden können.
Das Geometry Subsystem2 besteht aus vier bzw. acht solcher Geometry Engines. Diese Prozessoren sind in einer SIMD (Single instruction stream, multiple data stream) Struktur angeordnet. Dabei wird dieselbe Instruktion in mehreren Prozessoren auf verschieden Daten
ausgeführt. Jeder Prozessor hat demnach seinen eigenen Datenspeicher. Es gibt jedoch nur
einen Instruktionsspeicher und nur einen Kontroll-Prozessor, der die Instruktionen holt und an
die anderen Prozessoren weiterleitet. Im Geometry Subsystem übernimmt der Geometry
Sequencer die Aufgabe des Kontroll-Prozessors. Die Daten für die einzelnen GE7 Prozessoren
werden von der Command Engine verteilt.
2.3.1 Die Standard Rendering-Pipeline
Eine wichtige Rolle in der Verarbeitung von Graphikbefehlen übernimmt die Standard-3DGraphik-Pipeline (Rendering-Pipeline) von SGI. Deren Aufgabe ist es, die erforderlichen
Berechnungen durchzuführen, um von einem dreidimensionalen Objekt ein Rasterbild zu
erzeugen. Das Ziel wird mittels folgender vier Stufen erreicht:
1.
Das darzustellende 3D-Modell wird traversiert und die sichtbaren Teile des nächsten
darzustellenden Bildes bestimmt. Typischerweise übernimmt die CPU diese Aufgabe.
2.
Im Geometry Subsystem werden
3.
•
die Transformationen,
•
die Beleuchtungsberechnungen und
•
die Transformation von 3D-Welt- in 2D-Bildschirmkoordinaten vorgenommen.
In der Rasterverarbeitung laufen folgende Teilschritte ab:
•
Zuerst wird die sogenannte Scan-Conversion durchgeführt
Die in Bildschirmkoordinaten vorliegenden Graphikprimitiven werden in zusammenhängende Gruppen von Pixeln aufgeteilt.
•
Anschliessend wird für jedes einzelne Pixel einer Graphikprimitive mittels Z-Buffer-Algorithmus geprüft, ob der Bildpunkt sichtbar ist oder nicht (HiddenLine/Surface).
•
Danach erfolgt die Schattierung der gerasterten Graphikprimitive:
Auf Basis der Ergebnisse der Beleuchtungsberechnung und in Abhängigkeit vom
gewählten Schatteriungsverfahren (konstant oder Gouraud) gilt es dabei, die Farbwerte für jedes einzelne Pixel einer Graphikprimitive zu bestimmen.
1. Genau genommen handelt es sich um eine “general purpose microprogrammed floating point
datapath architecture.”
2. Eine detaillierte Beschreibung befindet sich in 2.3.3.
14
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
Gegegebenenfalls kommen noch weitere Operationen auf Pixelbasis hinzu wie etwa:
4.
•
Texture-Mapping1
•
Anti-Aliasing
•
Nebeleffekte
•
Stenciling
•
Alpha-Blending etc.
Im letzten Schritt werden die Resultate aus der dritten Stufe in den Frame-Buffer
geschrieben und schliesslich im RAM-DAC in analoge Signale umgewandelt.
2.3.2 Das CPU-Interface
Als Verbindung zur CPU dient der 64 Bit breite GIO64 Bus. Mit dem Burst Mode2 wird die
maximale (theoretische) Busbandbreite beinahe erreicht. Um die CPU zu entlasten verwenden
XZ und Extreme die DMA (Direct Memory Access) Technologie. Über die DMA Kanäle kann
die Graphikkarte direkt mit dem Speicher kommunizieren (lesen und schreiben), ohne dass
dabei die CPU belastet wird. Es kann pro Raster Engine Clock-Zyklus ein 32 Bit Wort übertragen werden, was eine sehr hohe Transferrate vom und zum Frame Buffer beziehungsweise ZBuffer zur Folge hat. Dies kommt vor allem bei graphik-orientierten Applikationen zum Tragen, d.h. wenn grössere Datenmengen übertragen werden müssen.
Die Graphikbefehle werden mit ihren Daten im Weltkoordinaten Format über den GIO64 Bus
übertragen und in den FIFO3 Speicher des Graphiksystems geschrieben. Dieser FIFO Buffer
kompensiert Schwankungen der Latenz zwischen einer Applikation, welche Graphikbefehle
generiert und des Graphiksystems, das die Befehle abarbeitet. Der erhaltene Strom von Graphikbefehlen wird analysiert und die Graphikprimitiven4 bestimmt, welche dann an die Geometry Engines (GE7) Prozessoren verteilt werden.
2.3.3 Das Geometry-Subsystem
Wie bereits erwähnt, werden die GE7 Prozessoren in einer SIMD Struktur angeordnet. Dabei
übernimmt der Geometry Sequencer die Aufgabe des Kontroll-Prozessors. Jeder GE7 Prozessor bearbeitet somit eine andere Graphikprimitive, welche aber alle zur selben Graphikinstruktion gehören. Dadurch können die Graphikinstruktionen in einem Clock-Zyklus abgearbeitet
werden. Die Daten für die GE7 Prozessoren werden von der Command Engine verteilt.
Jeder GE7 Prozessor besteht aus zwei separaten arithmetischen Blöcken, einer für Multiplikationen der andere für Additionen. Dank der kurzen Latenz der Mikro-Instruktionen erreicht
jeder GE7 Prozessor eine Leistung von 32 MFLOPS.
1.
2.
3.
4.
Nur bei Indigo2 Maximum Impact in Hardware.
Die Datenwörter werden nicht einzeln, sondern zu grossen Blöcken zusammengefasst übertragen.
FIFO = First In First Out Speicherverwaltung.
Jedes Graphische Objekt lässt sich in seine Graphikprimitiven - Punkte, Linien, Dreiecke und
Polygone - aufteilen.
2.3 XZ und Extreme Graphiksystem
15
Jeder Geometry Engine Prozessor erhält einen Strom von einfach-genauen FP-Wörtern, welche
Punkte im 3D-Welt-Koordinatensystem (world coordinate system) repräsentieren. Mit Matrizenoperationen werden Transformationen, Rotationen und Skalierungen berechnet.
Im nächsten Schritt werden die einzelnen Punkte beleuchtet. Dazu stehen maximal acht Spotlights zur Verfügung. Die Materialspezifikationen beeinhalten ambient, diffuse und specular
reflectance Parameter und Informationen des Lichtmodels. Als Resultat dieser Beleuchtungsberechnungen entsteht pro Punkt entweder eine Menge von acht Bit Red -, Green-, Blue- und
Alpha-Werten (RGBα) oder ein einziger 12 Bit Farb-Index.
Anschliessend findet die Transformation von 3D-Welt- in 2D-Bildschirmkoordinaten statt.
Nachfolgend wird das Clipping berechnet, wobei der Cohen-Sutherland Algorithmus zum Einsatz kommt.
Im nächsten Schritt werden Triangle Meshes und Independant Quads aufgeteilt, da das Geometry-System sie nicht direkt weiter verarbeiten kann. Als Resultat entstehen Dreiecke, die alle auf
die gleiche Art und Weise von den restlichen Graphik-Pipelines behandelt werden können.
Für die Linien1 entfällt natürlich die Aufteilung in Dreiecke.
Im letzten Schritt werden noch weitere Parameter der Linien oder Dreiecke bestimmt:
•
Steigungen für die Linien
•
Steigungen für Dreieckskanten und die Dreiecksfläche (in X und Y-Richtung)
Die resultierenden Parameter werden von den GE7 Prozessoren ans Raster Subsystem weitergeleitet.
2.3.4 Das Raster-Subsystem
Die Raster Engine ist dafür verantwortlich, dass die Linien und Dreiecke zu individuellen
Punkten aufgespalten werden, damit sie schliesslich in den Frame-Buffer geschrieben werden
können. Dieser Vorgang wird als Scan-Konvertierung bezeichnet. Es wird über die Linien und
Dreieckskanten iteriert, sodass Felder (Arrays) von Pixelwerten entstehen, die dann zum nächsten Verarbeitungs-Block weitergeschickt werden können.
Die Raster Engine hat eine Pipeline variabler Länge, welche je nach Operationsmodus zwischen
25 und 40 Stufen verwenden kann. Die Pipeline wird mit den Werten2 aus dem Geometry Subsystem geladen. Der Iterationsblock (Line and triangle iteration) traversiert die Linien oder
Dreiecke und berechnet die Scan-Konvertierung.
1. In einigen Dokumentationen wird anstelle von Linien auch von Vektoren gesprochen.
2. Damit sind Pixel, Linien und Dreiecke mit ihren Parameter gemeint.
16
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
Der Pixel Operation Block stellt den nächsten Verarbeitungsschritt dar und hat verschiedene
Funktionen.
•
Für die Pixel-blending-Operation und die Pixel-Raster-Operation, werden folgende
Schritte durchgeführt:
Für jeden erhaltenen Pixelwert1 aus dem vorangehenden Iterationsblock, wird die
Adresse im Frame-Buffer bestimmt und der entsprechende Wert ausgelesen. Die beiden
Pixelwerte - erhaltener und ausgelesener Wert - werden mittels der entsprechenden
arithmetischen oder logischen Operation miteinander kombiniert.
•
Für farbindizierte Linien mit Anti-Aliasing wird der Farbvergleich berechnet.
•
Dunst- oder Nebel-Abschwächungen werden berechnet.
Der nächste Schritt findet im Pixel Test Block statt: Mittels eines vierfachen Tests (screen
mask, clipping, z compare und stencil value check) wird hier effektiv bestimmt, ob ein Pixel
auch wirklich in den Frame- oder Z-Buffer geschrieben werden soll. Jedes Pixel wird nun mit
einem 56 Bit Wert gespeichert, welcher folgendermassen zusammengesetzt ist:
•
24 Bit Farbinformationen
•
24 Bit vorzeichenbehaftete Z-Bufferdaten. Für nicht Z-Buffer unterstützende Applikationen kann dieses Feld für ein zweites 24-Bit Farbfeld verwendet werden.
•
4 Bit für Over- oder Underlay Operationen, z.B. für Pop-Up Menüs
•
4 Bit für die Fenstergrenzen. Jedes geöffnete Fenster erhält eine 4 Bit Clipping ID
(CID). Jeder nicht verdeckte Punkt eines Fensters hat dieselbe CID. Für jeden erhaltenen Punkt, aus dem vorangehenden Pixel Operation Block, wird die gespeicherte CID
mit der erhaltenen verglichen. Nur bei einer Übereinstimmung wird der Pixelwert auch
in den Frame-Buffer geschrieben.
Die Z-Komponenten werden in einem separaten Z-Buffer abgespeichert. Damit nun die gleiche
Fill Rate für z-Buffer unterstützte wie auch für nicht z-Buffer unterstützte Applikationen zur
Verfügung steht, hat der Z-Buffer die doppelte Memory-Bandbreite wie der herkömmliche
Frame-Buffer.
2.3.5 Das Display-Subsystem
Das Display Subsystem erhält die Pixeldaten aus dem Frame-Buffer und sendet sie an den
RAM-DAC weiter. Dabei wird jedem Pixel die sogenannte Display ID (DID) zugeordnet,
welche den Farbformat-Modus bestimmt. Diese DID wird dem Multimode Graphics Processor (MGP) übergeben, der die Bild-Informationen gemäss der DID entsprechend interpretiert
und dem DA-Konverter weitergibt.
1. Der Pixelwert liegt in 2D Bildschirmkoordinaten vor und hat zusätzliche Parameter, welche z.B. die
Farbe festlegen.
2.3 XZ und Extreme Graphiksystem
17
2.3.6 Die XZ und Extreme Graphic-Features
Die XZ und Extreme Graphiksysteme bieten viele “Graphic-Features” an, die hier aber aus
Platzgründen nicht alle erläutert werden können1.Die wichtigsten Features seien aber dennoch
genannt:
•
Punkt2 und Linien Anti-Aliasing
•
Slope Correction: Sobald die Steigung einer Linie gegen 45 Grad geht, sollten die
Pixel der Linie heller werden. Um diesen Effekt zu verstehen, stelle man sich zwei
gleich lange Linien vor, wobei eine steil und die andere flach ist. Werden diese Linien
nun gerastert, so benötigt die steile Linie weniger Rasterpunkte als die flache. In der
Folge erscheint die steilere Linie heller als die flache. Um diese Helligkeitsunterschiede
zu korrigieren, verwenden die Graphiksysteme eine Hardware-Lookup-Table, welche
die Werte für die Steigung und Gewichte für die Überblendung der Subpixels enthält.
Die Werte sind demnach grösser für steile Linien und kleiner für flache.
•
Lighting Features, wie mehrere Lichtquellen, Beleuchtung von zwei Seiten, etc.
•
Texture-Mapping mit Texturen die 8, 16, 24 oder 32 Bits Tiefe haben
Bei den XZ und Extreme Graphiksystemen ist keine Hardware Unterstützung für
Texture-Mapping vorhanden und alle Berechnungen müssen in Software durchgeführt
werden und benötigen somit CPU-Rechenleistung.
•
Stencil planes
•
Pixel Read, Write und Copy: Das Graphiksystem hat einen 32 Bit DMA Kanal, der
grosse Übertragungsraten zwischen dem Host, Frame-Buffer und Z-Buffer ermöglicht.
Falls der Benutzer keinen Z-Buffer verwendet, so kann ein 24 Bit Bild im Z-Buffer
gezeichnet werden und anschliessend als Frame in den Frame-Buffer kopiert werden.
Wird das Kopieren mit dem Refresh des Bildschirms synchronisiert, so kann man den
Effekt eines echten 24 Bit Double-Buffering erreichen.
In der Abbildung 2.2 ist schematisch der Aufbau der XZ und Extreme Graphikhardware dargestellt.
1. Informationen unter www.sgi.com
2. Ein Punkt mit Anti-Aliasing wird mittels einem 2*2 Gitter dargestellt, wobei jedes der vier Subpixels
ein bestimmtes Gewicht zur Überblendung erhält.
18
Abbildung 2.2:
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
Das XZ und Extreme Graphiksystem in der Indigo2
2.4 Das Maximum Impact Graphiksystem
19
2.4 Das Maximum Impact Graphiksystem
In diesem Abschnitt ist das Schwergewicht auf die Unterschiede zum älteren Graphiksystem
mit XZ/Extreme gelegt. Es sei auf die Abbildung 2.3 verwiesen, welche den schematischen
Aufbau eines Maximum Impact Graphiksystems darstellt.
Im Gegensatz zur XZ und Extreme Graphik ist die Maximum Impact Graphikhardware auf drei
Boards verteilt worden (Siehe Abbildung 2.3):
•
Auf dem ersten Board befindet sich der HQ3 Chip, eine Weiterentwicklung des HQ2,
sowie das Geometry- Subsystem.
•
Die beiden anderen Boards sind weitgehend gleich aufgebaut, sie enthalten die beiden
Rastersysteme mit der Texture Engine inklusive Texturspeicher, Z-Buffer und natürlich dem Frame-Buffer. Ein Rastersystem (System B in Abbildung 2.3) enthält noch
den RAM DAC.
Standardmässig stehen den beiden Rastersystemen total 1 MB Texturspeicher zur Verfügung,
mit der Texture-Option-Card lässt sich dieser jedoch auf gesamthaft 4 MB aufrüsten.
Dieses Graphiksystem bietet zudem Hardware-Unterstützung für:
•
Texture-Mapping
•
Environment-Mapping
•
Anti-Aliasing
•
Alpha-Blending
•
Nebeleffekte
20
Abbildung 2.3:
2 Indigo2 XZ/Extreme und Maximum Impact von SGI
Das Indigo2 Maximum Impact Graphiksystem
3
3Die O2 von SGI
Bild SGI
Die O2 ist das Einstiegsmodell der heutigen SGI Reihe. Sie ist nicht nur äusserlich einiges kompakter als die nächst grösseren Indigo2 Systeme, sondern auch preislich attraktiver. Ausgestattet entweder mit einem MIPS R5000 oder MIPS R10000 Prozessor stellt sie aber dennoch eine
leistungsfähige Desktop Workstation dar.
Die O2 verwendet die Unified Memory Architecture (UMA) Technologie. Dieses Konzept
konzentriert Z-Buffer, Frame-Buffer, Textur- und Videospeicher, sowie System- und Usermemory in einem Speicherpool, von dem jede System-Komponente je nach Bedarf Segmente
anfordern kann. Ausserdem bietet die O2 weitere Spezialkomponenten, die auf professionelles
Audio-, Video- sowie Graphik- und 3D-Image-Processing in Echtzeit ausgelegt sind.
Eine herausragende Graphikleistung wird vor allem dank direkt in Hardware implementierten
Graphic-Features erreicht. So werden etwa das Texture-Mapping und OpenGL Befehle durch
spezielle Hardware unterstützt. Auch das Video-processing wird durch spezielle Hardware
beschleunigt. Dadurch ist Motion-JPEG und MPEG Kompression und Dekompression in Echtzeit für die O2 kein Problem.
21
22
3 Die O2 von SGI
3.1 Systemarchitektur
In diesem Abschnitt soll die besondere Systemarchitektur der O2 und deren Einfluss auf die
Graphikleistung erläutert werden.
3.1.1 Systemplatine
Die nachfolgende Abbildung zeigt den schematischen Aufbau der Systemplatine einer O2.
Abbildung 3.1:
Die O2 Systemplatine mit einem R5000 Prozessor
3.1 Systemarchitektur
23
Die zentrale Einheit der O2 ist die Memory Engine (MRE). In ihr werden Informationen verwaltet, welche die CPU zur Bearbeitung der Prozesse benötigt.
In der Image und Compression Engine (ICE) befinden sich Hardwareunterstützungen für folgende Features:
•
z-Buffer
•
triangle rasterization
•
texture-mapping
•
image mapping
•
stencil planes
•
anti-aliasing
•
source plus destination alpha
•
Video Kompressionshardware: Motion-JPEG mit 30 respektive 25 Bildern pro Sekunde
in NTSC oder PAL Qualität.
Der letzte Punkt hat zur Folge, dass der SpecInt95 JPEG Compression Test natürlich durch die
Hardware massiv beschleunigt wird (Siehe auch 11.3).
Obwohl die O2 spezielle Hardware für Graphikunterstützung hat, müssen alle Geometrie- und
Beleuchtungsberechnungen im Hauptprozessor verarbeitet werden. Dies sieht zuerst wie ein
Nachteil aus. Die Rechenleistung lässt sich jedoch sehr einfach durch einen Austausch des Prozessors erhöhen - es kann sozusagen mit “einem Handgriff” der R5000 durch einen R10000
oder R12000 ersetzt werden. Es gilt jedoch zu beachten, dass der R10000 Prozessor seine volle
Leistungsfähigkeit in einem O2-System nicht entfalten kann (Siehe hierzu 3.1.3).
3.1.2 Die Prozessoren: MIPS R5000 und R10000
Die O2 kann wahlweise mit dem R5000 oder mit dem leistunsstärkeren R10000 bestückt werden. Das Ziel dieses Abschnittes soll nicht die detaillierte Beschreibung der beiden Prozessorarchitekturen sein, sondern es werden die MADD Instruktionen des MIPS IV Instruktionssatzes
und das Verhalten des R10000 in einer O2 erläutert (Siehe Abschnitt 3.1.3).
Der MIPS R5000 ist ein klassischer Reduced Instruction Set (RISC) Prozessor, der 1996 auf
den Markt kam. Er stellt sozusagen den kleineren Bruder des teureren und leistungsstärkeren
R10000 dar. Damit die Kosten in der Produktion gesenkt werden konnten, mussten einige Features des R10000 weggelassen werden, denn das Ziel war ganz klar einen Prozessor mit sehr
gutem Preis-Leistungsverhältnis zu produzieren. In der Tabelle 3.1 werden die wichtigsten
Ausstattungsmerkmale der beiden Prozessoren sowie dem R4400 einander gegenübergestellt.
Für die Tests der Integer und Floatingpoint Rechenleistung der Prozessoren, sei auf das Kapitel
11.3 verwiesen.
Die sogenannten MADD Instruktionen und einige Besonderheiten der Prozessorarchitektur,
welche bezüglich der Graphikleistung relevant sind, sollen hier näher beleuchtet werden.
24
R10000
R5000 SC, PC a
R4400 SC, PC, MC b
Superskalare Architektur
ANDES
(Advanced Superscalar Architecture) mit 4 Instruktionen pro Zyklus:
2 INT und 2 FP execute und 1
Load/Store pro Zyklus
Dual Issue:
FP Load/Store und FP ALU Instruktionen geladen im selben Zyklus
Nein
Pipeline
5-fach
5-fach
8-fach
Instruktionssatz
MIPS-IV
MIPS-IV
MIPS-III
Primary Data Cache
32 KBytes
32 KBytes
16 KBytes
Primary Instruction Cache
32 KBytes
32 KBytes
16 KBytes
Secondary Cache Unterstützung
128 bit Data Bus, Min. 512 KB
Max. 16 MB
(max.) 128 byte cache line refill
64 Bit Data Bus, Min 512 KB
Max. 2 MB
(max.) 32 byte cache line refill
128 Bit Data Bus, Min 128 KB
Max. 4 MB
(max.) 128 byte cache line refill
Branch Prediction
ja
nein
nein
Daten Abhängigkeiten
Register renaming/out of order exec.
nein
nein
Translation look aside buffer
64 Einträge
96 Einträge
96 Einträge
Multiprozessor unterstützt
ja
nein (nicht in der ersten Version)
ja (nur R4400 MC)
MADD Instruktionen
ja
ja
nein
Tabelle 3.1: Vergleich zwischen den MIPS Prozessoren R10000, R5000 und R4400
3 Die O2 von SGI
a. Bei der SC Variante ist sowohl ein primary und secondary cache vorhanden, die PC Ausführung hat nur den primary cache.
b. Bei der SC und MC Variante ist sowohl ein primary und secondary cache vorhanden, die PC Ausführung hat nur den primary cache. Der R4400 MC bietet noch
zusätzlichen Support für Multiprozessor Systeme.
3.1 Systemarchitektur
25
Die MADD-Instruktionen
Der MIPS IV Instruktionssatz unterstützt gegenüber dem MIPS III Instruktionssatz, wie er in
einem R4440 verwendet wird, vier zusätzliche Floating Point (FP) Instruktionen mit einfacher
und doppelter Genauigkeit, die in einem Zyklus zwei separate FP Berechnungen durchführen
können. Die vier genannten Instruktionen umfassen:
•
MADD: Multiply-add; bzw. NMADD Negatives MADD
•
MSUB: Multiply-subtract; bzw. NMSUB Negatives MSUB
In den nachfolgenden Beispielen stehen die Variablen (A-D) stellvertretend für Registernamen
des Prozessors. Betrachten wir zunächst das Beispiel für eine MADD Instruktion:
A×B+C = D
Dies sollte aber nicht mit dem bekannten MAC (multiply-accumulate) verwechselt werden,
das lediglich
A×B+C = C
berechnet.
In der dreidimensionalen Geometrie wird typischerweise jeder Knoten eines 3D-Objekts durch
einen Vektor repräsentiert. Die meisten 3D-Verarbeitungsschritte multiplizieren nun diesen
Vektor mit einer Transformationsmatrix. Als Resultat entsteht wiederum ein Vektor, welcher
entweder zu einem anderen Knoten(-vektor), oder wie bei Filteroperationen üblich zum
ursprünglichen Wert desselben Knotens addiert wird. Man spricht bei diesen Filteroperationen
von Faltung.
Der eigentliche Clou dieser MADD Instruktionen liegt darin, dass die Implementation so
gewählt wurde, dass diese Instruktionen eine Wiederholrate von einem und eine Latenz von vier
Zyklen haben. Dank sub-pipelining kann die Fliesskomma-Einheit (FPU) die Multiplikation
und Addition der Komponenten des oben beschriebenen Matrizenproblems parallel lösen. In
herkömmlichen Prozessoren wie etwa dem R4400, wird das MULTIPLY ausgeführt und das
Resultat ins Register geschrieben um nachher vom ADD gelesen, berechnet und schliesslich
wieder zurückgeschrieben zu werden.
Dual-Issue
Ein weiterer Vorteil dieser Prozessorarchitektur betrifft das Pipelining. In jede der fünf Pipelinestufen kann je eine MADD-Instruktion nacheinander geladen werden, sodass der Prozessor
in jedem Zyklus eine neue MADD-Instruktion und gleichzeitig noch eine Integer oder
FP Load/Store Instruktion ausführen kann. Allgemein kann dank diesem Dual-Issue Mechanismus neben einer FP ALU Instruktion simultan ein anderer Instruktionstyp ausgeführt werden.
26
3 Die O2 von SGI
Kombination von MADD-Instruktionen und Dual-Issue
Das Zusammenspiel von MADD Instruktionen und Dual-Issue Mechanismus wird vor allem
deutlich, wenn man beachtet, dass die meisten Applikationen, welche Geometrie Berechnungen
beinhalten, nach einem FP Load/Store eine MADD Instruktion ausführen: Die Load/Store
Instruktionen werden in der Pipeline verarbeitet, die währenddessen noch genug Kapazität aufweist, um eine neue MADD Instruktion in jedem Clock-Zyklus auszuführen. Gut strukturierter
Code, wie etwa der von OpenGL Befehlsbibliotheken, können diese Pipeline Struktur voll ausnutzen.
3.1.3 Der R10000 in der O2
Die Floatingpoint Rechenleistung steigert sich durch den Einsatz eines R10000 in einer O2
anstelle des R5000 nicht in dem Ausmass, wie es zu erwarten wäre. Insbesondere wenn der Vergleich mit einem R10000 in der Octane gemacht wird, kann man feststellen, dass die SpecFP95
Werte deutlich tiefer ausfallen (Siehe 11.3). Die Integer Rechenleistung lässt sich hingegen
massiv erhöhen. Die wichtigsten Gründe, weshalb der R10000 in der O2 nicht seine volle Floatingpoint Rechenleistung ausspielen kann, sind nachfolgend erwähnt:
•
Das Prozessor Modul enthält Schaltkreise, die für den R5000 entwickelt wurden und
bei einem Austausch des Prozessors unverändert bleiben. Insbesondere ist das Second
Level Cache nur für 32 Byte Refills dimensioniert, der R10000 erlaubt aber 128 Byte
Refills. Dies hat zur Folge, dass ein 128 Byte Refill des R10000 in vier 32 Byte Refills
konvertiert werden muss, was die Cache Miss Strafe massiv erhöht. Deshalb liefert der
SpecFP95 der O2 schlechtere Resultate als in vergleichbaren SGI Systemen (Siehe
auch 11.3).
•
Der R10000 bringt nicht viel zusätzliche Leistung für 3D-Graphik Aufgaben, wenn
diese nicht 64 Bit Verarbeitung brauchen. Die meisten 3D-Berechnungen brauchen nur
einfach genaue Floating Point Arithmetik (32 Bit), besonders bei Geometrie- und
Beleuchtungsberechnungen. Demnach kann ein R5000 mit 180 MHz schneller als ein
R10000 mit 150 MHz sein. Der R10000 ist jedoch bei gleicher Taktfrequenz für
gewisse Graphik Aufgaben um ca. 25% schneller, vor allem wenn sie 64 Bit Verarbeitung brauchen, wie zum Beispiel das Gouraud Shading.
•
Der R10000 war nie für Speichersysteme mit Unified Memory Architecture (UMA)
entwickelt worden. Er wurde für viel schnellere Speichersysteme wie etwa das der
Octane oder Onyx entwickelt. Das Speichersystem einer O2 läuft mit einer tieferen
Taktrate und hat grössere Speicher Latenzen1. Ausserdem beträgt der Durchsatz des
1. Speicher Latenzen werden durch zwei Messwerte charakterisiert - die access time und cycle time.
Erstere misst die Zeit, die vergeht bis nach einem READ Request das entsprechende Speicherwort zurückgeliefert wird. Die cycle time definiert die minimale Zeit, welche zwischen zwei aufeinanderfolgenden READ Requests zu vergehen hat. Der Ausdruck “grössere Speicher Latenz” impliziert also
eine längere Zugriffszeit und eine grössere cycle time. Die cycle time ist bei DRAMs grösser als die
access time. Der Hauptgrund liegt darin, dass die Adressleitungen zwischen zwei Speicherzugriffen
stabil sein müssen. Bei SRAMs hingegen ist, aufgrund der anderen Bauweise, die access time mit der
cycle time identisch und etwa 8 bis 16 mal schneller als die entsprechenden Werte der DRAMs.
3.1 Systemarchitektur
27
Busses vom Prozessor-Modul zum Hauptspeicher bei einer O2 rund 800 Mbyte/sec in
einer Richtung (simplex). Die Octane erreicht mit der Crossbar Technologie, welche
den Bus ersetzt, 1.6 GByte/sec in beiden Richtungen, (Siehe Abschnitt 4.2.2).
Um eine grössere Leistungssteigerung für den R5000 sowie für den R10000 zu erzielen, kann
das Second Level Cache auf seine maximale Kapazität vergrössert werden, siehe hierzu auch
Tabelle 3.1.
3.1.4 Der Speicher (UMA)
Die O2 verwendet als einzige der getesteten Maschinen die Unified Memory Architecture
(UMA). Die Grundidee besteht darin, nur einen zentralen physikalischen Speicher zu verwenden, dessen Zugriffszeit aus Sicht des Prozessors uniform ist. Im Gegensatz dazu steht der herkömmliche Aufbau, die sogenannte Non-Unified Memory Architecture (NUMA). Das
Memory erscheint zwar aus logischer Sicht auch nur als ein Block, doch physikalisch ist der
Speicher über die verschiedenen Subsysteme verteilt. So befindet sich zum Beispiel das Video
RAM auf der Videokarte. Dadurch entstehen aus der Sicht des Prozessors unterschiedliche,
nicht uniforme Zugriffszeiten. Es dauert somit länger das Video RAM anstelle des Hauptspeichers anzusprechen.
Im Weiteren kann der Speicher mit UMA effizienter verwaltet werden als mit NUMA. Um dies
zu illustrieren werde angenommen, dass sich auf einer Graphikkarte 16 MB und auf einer
Videokarte1 2 MB RAM befinden. Falls zu einem Zeitpunkt auf der Graphikkarte lediglich 4
MB alloziiert sind, so gehen die restlichen 12 MB sozusagen verloren und können nicht von
Videokarte als zusätzlichen Buffer angesprochen werden. Die UMA kennt diese Art von Problemen nicht, da die Subsysteme dynamisch die Speichermenge beanspruchen, die sie gerade
brauchen. Dazu kommt noch, dass Speicherbausteine für den lokalen Speicher (Video RAM,
Texture-Memory etc.) einiges teurer als herkömmliches Memory sind.
Durch UMA werden auch Datentransferzeiten reduziert. Oftmals werden Daten vom Hauptspeicher zu den peripheren Geräten, die am Bus hängen, gesendet beziehungsweise empfangen.
Da aber nur noch ein physikalischer Speicher vorhanden ist, können solche Transfers entfallen.
Zudem stellt der Bus in herkömmlichen Systemen, insbesondere für Graphikverarbeitung, oftmals den Flaschenhals dar. So reichen die maximalen Transferraten auf einem PCI Bus für
gewisse Anwendungen nicht aus, um die Daten zwischen einer Graphikkarte und dem Hauptspeicher mit der geforderten Leistung zu übertragen. Als Ausweg haben sich die Hardware Hersteller, allen voran Intel, daran gemacht sogenannte private Busse zwischen den einzelnen
Subsystemen einzuführen, wie dies auch in Abbildung 3.3 dargestellt ist. Das eigentliche Problem wird dadurch nur lokal zwischen diesen am privaten Bus angeschlossenen Komponenten
gelöst. Es kann leicht vorkommen, dass auf irgend einem anderen Bus (zum Beispiel PCI Bus)
wieder ein Engpass entsteht. Der sicherste Ausweg ist die Crossbar Technologie, wie sie in
grösseren und leistungsfähigeren Systemen wie etwa in der Octane verwendet wird (Siehe
Abschnitt 4.2.2).
1. Z.B. eine Frame-Grabber Karte für VHS Videosignalverarbeitung.
28
3 Die O2 von SGI
Abbildung 3.2 zeigt schematisch zusammengefasst die Architektur der O2, die sich aber leicht
für ein beliebiges UMA System verallgemeinern lässt. In SGI’s neuester Rechnerreihe, den
Visual Workstations mit Windows NT, wird die UMA Technologie so realisiert, dass Graphik- und Hauptspeicher einen gemeinsamen physikalischen Speicher bilden. In der Sprache
des SGI Marketings nennt sich das Ganze schliesslich Integrated Visual Computing Architecture (IVC). Es standen zu Testzwecken jedoch noch keine derartigen Maschinen zur Verfügung, weshalb in dieser Arbeit auch nicht weiter darauf eingegangen werden soll1.
Wie schon erwähnt verwenden alle anderen PC-Systeme die NUMA Technologie. Von besonderer Bedeutung ist hier Intel's Accelerated Graphics Port (AGP), der die Rolle eines privaten
Busses zwischen CPU und Graphikkarte übernimmt (Siehe Abschnitt 7.1.1).
Die besonderen Vorteile der UMA Technologie bezüglich Graphikperformanz werden im nachfolgenden Abschnitt 3.2 genauer beschrieben.
1. Eine nähere Beschreibung findet man unter www.sgi.com.
3.1 Systemarchitektur
29
Abbildung 3.2:
Unified Memory Architecture (UMA) in der O2
Abbildung 3.3:
Non-Unified-Memory-Architecture (NUMA)
30
3 Die O2 von SGI
3.2 Graphikleistung
In diesem Abschnitt werden die Vorteile der UMA Technologie hervorgehoben, sowie ein Vergleich mit den SGI-Rechnern der nächst höheren Preisklasse vorgenommen. Es muss hier noch
bemerkt werden, dass die Indigo2 Systeme mit XZ und Extreme Graphikhardware schon einige
Jahre vor der O2 auf den Markt gekommen sind und sich deshalb ein direkter Vergleich dieser
beiden Systeme (Siehe Abschnitt 3.2.2) aus technischer Sicht als etwas unfair gestaltet. Es ist
nicht weiter verwunderlich, dass die um einige Faktoren teurere Indigo2 mit Maximum Impact
gegenüber der O2 noch einige Leistungsreserven hat, was vor allem auf die aufwendige Graphikverarbeitung zurückzuführen ist.
3.2.1 Allgemeine Bemerkungen
Wie schon erwähnt führt die O2 alle Geometrie- und Beleuchtungsberechnungen im Hauptprozessor aus. Da der R5000 und insbesondere der R10000 eine hohe Rechenleistung haben,
konnte die Leistung der Systeme mit speziellen Graphik-Beschleunigerboards erreicht und einigen Fällen sogar übertroffen werden. Vor allem können die Graphics Engines (GE) der Indigo2
Modelle mit XZ und Extreme Graphikhardware mit der Rechenleistung einer O2 nicht mehr
mithalten (Tabelle 3.2). Die GE’s stellen somit den eigentlichen Engpass dar.
Dank der UMA Technologie kann die O2 im gleichen physikalischen Speicher Texturen, 3DSzenen etc. verwalten. Braucht nun eine Anwendung plötzlich mehr Textur Speicher, so kann
dieser ohne Einschränkung alloziiert werden. Die einzige Limite stellt die aktuelle im System
installierbare Speichermenge dar, die zur Zeit bei 1 GByte liegt. Bei den Beschleunigerboards
hingegen kommt irgendwann der Punkt, wo der lokale Speicher erschöpft ist und zeitaufwendige Transfers zwischen dem Hauptspeicher und den Graphikboards notwendig werden. Ebenfalls entfallen kann zum Beispiel auch das sogenannte Textur Uploading, d.h. das Kopieren der
Texturdaten vom Hauptspeicher in den lokalen Speicher des Graphiksystems.
Ein weiterer Vorteil der UMA Technologie liegt darin, dass jedes Subsystem immer genug
Memory-Bandbreite zur Verfügung hat. Das O2 System hat mehr als 2.1 GByte/sec MemoryBandbreite (Siehe Abbildung 3.1). Herkömmliche Systeme mit einem PCI Bus, stossen dann
sehr bald an ihre Kapapizitätsgrenzen.
Auch für Echtzeit-Applikationen ergeben sich Vorteile aus der UMA Technologie. Es gibt zum
einen keinen Engpass auf dem Bus und zum anderen ist ein UMA System flexibler, da die Daten
schon dort sind, wo sie eigentlich gebraucht werden. Der Prozessor kann sozusagen in Echtzeit
auf allen Daten arbeiten, da das zeitraubende Kopieren entfällt. Das nachfolgende Beispiel zeigt
sehr deutlich, dass die eigentlichen Stärken einer O2 vor allem in der Echtzeit-Verarbeitung liegen1.
In einer virtuellen militärischen Trainingsumgebung ist es notwendig, dass Videodaten eines
Infrarot-Sensors in Echtzeit importiert und gewisse Bildberechnungen und Manipulationen vorgenommen werden. So wird unter anderem die Charakteristik des Bild-Rauschens verändert.
Dieser bearbeitete Videostream wird dann als realtime Textur für eine 3D-Szene verwendet. In
1. Quelle SGI.
3.2 Graphikleistung
31
der letzten Stufe wird - ebenfalls in Echtzeit - die gesamte Trainingssession mit Hilfe der ICE
mittels Motion JPEG komprimiert und schliesslich als Film abgespeichert.
3.2.2 Vergleich mit Indigo2 Systemen
Wie bereits im vorangehenden Abschnitt erläutert wurde, braucht die preislich sehr attraktive
O2 einen Vergleich mit den Indigo2 Graphics Engines (GE) nicht zu scheuen, wie die folgende
Tabelle illustriert1. Bei den Indigo2 Systemen bezieht sich die angegebene Leistung auf die
Graphic-Engines im Geometry-Subsystem, wohingegen bei der O2 der Prozessor die GraphikBerechnungen übernehmen muss.
Systeme
Totale MFLOPS
Indigo2 XZ
128
Indigo2 Extreme
256
Indigo2 Solid IMPACT
480
Indigo2 High IMPACT
480
Indigo2 Maximum IMPACT
960
O2 mit R5000 @ 150 MHz
ca. 300
O2 mit R10000 @ 250 MHz
ca. 500
Tabelle 3.2: Übersicht der Graphikleistung
Der hauptsächliche Unterschied in der Leistung zwischen einem Indigo2 XZ/Extreme und einer
O2 beruht auf dem Umstand, dass ersteres System keine Texture Hardware hat. So kann die O2
bei gewissen Graphikbefehlen bis zu 100 mal schneller sein.
Andere wichtige Hauptunterschiede seien summarisch aufgezählt:
•
O2 hat Hardware Anti-Aliasing
•
O2 hat einen 32 Bit Z-Buffer
•
O2 hat einen unlimitierten Textur Speicher (nur begrenzt durch Hauptspeichergrösse,
dank UMA)
•
O2 bietet viel Hardwareunterstützung im Bereich Video Verarbeitung
1. Quelle SGI.
32
3 Die O2 von SGI
Sobald komplexere Geometrie und Beleuchtungsberechnungen, wie zum Beispiel mehrere
Spotlights und komplexere Szenen vorliegen, reicht die Hardware-Unterstützung der Indigo2
Systeme nicht mehr aus und der Prozessor muss die Arbeit übernehmen1. Zusätzlich müssen die
ganzen Daten auch noch über den Bus geschickt werden, was nochmals viel Zeit kosten kann.
Insbesondere dann, wenn der begrenzte Textur Speicher bei Indigo2 Maximum Impact Systemen2 nicht mehr ausreicht und deshalb auch Texturdaten über den Systembus geschickt werden
müssen.
Daraus kann man ableiten, dass Graphikarbeiten, welche komplexe Beleuchtungen und dynamische 3D-Szenen enthalten, oftmals dazuführen, dass die FIFO’s3 der Graphikkarten aufgefüllt und zeitraubende Context-switches notwendig werden.
Ein weiterer Vorteil der O2 gegenüber den älteren Indigo2 Modellen mit XZ/Extreme Graphik,
ergibt sich aus der Verwendung des neueren und leistungsfähigeren Prozessors R10000 4. Insbesondere beinhaltet der MIPS IV Instruktionssatz die MADD Instruktionen, die beim R4400
nicht vorhanden sind.
1. Es gibt grundsätzlich zwei Arten von Überlast:
Zum einen die zeitliche Überlast, d.h. zuviele Graphikprimitiven/sec werden dem Graphiksystem
übergeben. Zum anderen eine Überlast im Sinne der unterstützten Hardware-Features der Graphiksysteme. Werden zum Beispiel drei Spotlights benötigt und das Graphiksystem unterstützt lediglich
zwei in Hardware, so muss die Berechnung ebenfalls auf die CPU ausgelagert werden.
2. Indigo2 XZ und Extreme haben keinen Texturspeicher.
3. FIFO-Queues für die Graphikbefehle in den Command Engines der Graphiksysteme.
4. Nur in den Modellen Indigo2 Maximum Impact.
4
4Die Octane von SGI
Bild SGI
Mit den Octane Systemen, welche 1997 auf dem Markt eingeführt wurden, hat SGI ihre Rechnerreihe vervollständigt. Die Octane ist zwischen der verhältnismässig günstigen O2 und der
äusserst leistungsfähigen Onyx2 positioniert.
Die Indigo2 Maximum Impact Systeme gehören eigentlich nicht in diese Reihe, sie können aber
für einen Vergleich oberhalb der O2 angesiedelt werden. Eine solcher Vergleich ist allerdings
etwas heikel, da die O2 hat einerseits eine geringere Graphikleistung1, aber hat andererseits
zusätzliche Hardware für Videobearbeitung und kann deshalb die Leistung einer Indigo2 Maximum Impact bei weitem übertreffen.
Das Kernstück der Octane-Systemarchitektur bildet ein Crossbar-Switch, welcher alle Komponenten im Rechner miteinander verbindet. Dank dieser Technologie kann eine durchschnittliche Übertragungsrate von 1.2 GByte/sec beziehungsweise bis zu 1.6 GByte/sec bei kleinen
1. Siehe Resultate mit Viewperf unter 11.1
33
34
4 Die Octane von SGI
Peak-Transfers erreicht werden. Damit lassen sich im Vergleich zu Vorgängern wie Indigo2
Systemen - bei gleicher CPU-Ausstattung1 - spürbare Leistungsgewinne erzielen.
Ausgestattet wird die Octane mit maximal zwei MIPS R10000 Prozessoren. Damit verfügt das
System über genügend Leistungsreserven für die Berechnung komplexer 2D- und 3D-Modelle.
4.1 Die Octane Modelle
Die ursprünglichen Modelle aus dem Jahre 1997 basieren auf der I-Serie und werden als SI,
SSI und MXI bezeichnet. Als Grundlage dient für alle drei Modelle zum einen die GeometryEngine, mit einer Rechenleistung von 960 MFLOPS und zum anderen die Raster-Engine mit
120 Mpixel/sec. Die interne Architektur des Graphiksystems entspricht dem der Indigo2 Maximum Impact (Siehe Abschnitt 2.4). Das Indigo2 Graphiksystem lässt sich aber nicht direkt in
der Octane weiterverwenden beziehungsweise einbauen. Das Octane-Graphiksubsystem steht
direkt mit dem Crossbar-Switch in Verbindung, wohingegen bei der Indigo2 die Graphikkarten
über einen konventionellen Bus mit dem System verbunden sind.
Im Gegensatz zur Octane SI, enthalten die SSI und MXI Ausführungen die doppelte Anzahl
Graphic-Engines, nämlich zwei Geometry- und Raster-Engines. Die Octane SI Modelle besitzen eine und die SSI und MXI zwei Texture-Engines, welche jedoch nur in Zusammenhang mit
dem entsprechenden Texturspeicher funktionsfähig sind (Vrgl. Abbildung 4.2).
Da SI und SSI standardmässig ohne Texturspeicher ausgerüstet sind, muss zuerst die TextureCache-Option installiert werden, um von der Texture-Engine Gebrauch zu machen. Pro
Texture-Engine muss je eine solche Option, welche 4 MB Texturspeicher umfasst, installiert
werden. Somit braucht die SI Variante ein Texture-Cache-Option mit 1 x 4 MB und die Octane
SSI 2 x 4 MB. Es sei nochmals erwähnt, dass die SSI Ausführung zwei Graphic-Engines mit je
einer Texture-Engine hat und deshalb auch je einen Texturspeicher pro Graphic-Engine benötigt. Eine Octane SSI mit Texturspeicher ist somit gleichwertig wie die MXI Ausführung,
welche bereits standardmässig mit 2 x 4 MB Texturspeicher ausgerüstet ist. Folglich kann eine
Octane MXI auch keinen zusätzlichen Texturspeicher mehr aufnehmen. Die Abbildung 4.2 illustriert den Aufbau der Octane Graphiksysteme der I und E Serie.
Seit 1998 sind die drei neueren Octane Basismodelle der E-Serie erhältlich. Sie basieren alle
auf SGI’s Geometry Engines, die 1344 MFLOPS erreichen und der Raster Engine, welche
138 Millionen Gouraud-schattierte und texturierte 3D-Pixel/sec verarbeiten kann.
1. MIPS R10000 in Indigo2 Maximum Impact.
4.2 Systemarchitektur
35
Nachfolgend werden die drei Modelle kurz vorgestellt:
•
Octane SE: Einfachste Ausführung: Die Graphikhardware besteht aus einer Geometrie- und Rasterengine und belegt einen XIO-Port. Ein solches System soll laut Hersteller für Aufgaben wie Solid Modelling verwendet werden.
Gegen einen grösseren Aufpreis lässt sich der Texturspeicher auf 4 MB aufrüsten
(Texture-Cache-Option)
•
Octane SSE: Sie verfügt über zwei Geometrie- und Rasterengines, die somit zwei
XIO-Ports belegen und soll gemäss SGI beim Solid Modelling die doppelte Leistung
der Octane SE erbringen.
Auch hier gibt es die Texture-Cache-Option: Das System ist dann äquivalent zu einer
Octane MXE.
•
Octane MXE: Das High-End System mit ebenfalls zwei Geometrie- und Rasterengines und zusätzlichem Texturspeicher von 2 x 4 MB.
Bemerkenswert ist, dass sich der Kunde, bezogen auf die preisgünstige O2 mit
R5000 Prozessor, etwa die vierfache CPU- und Graphikleistung zum circa zehnfach
höheren Preis erkauft.
4.2 Systemarchitektur
Wie schon in der Einleitung erwähnt, bildet der Crossbar-Switch das Kernstück der Octane
Systeme (Siehe Abschnitt 4.2.2). Wie bei den meisten SGI Systemen, fehlen auch der Octane
interne Wechselmedien wie etwa CD-ROM- oder Zip/Jaz-Laufwerke.
4.2.1 Systemplatine
Zur besseren Orientierung ist in der Abbildung 4.1 der Aufbau der Octane-Systemplatine abgebildet. Auf dem CPU Board, das für die Aufnahme von maximal zwei R10000 ausgelegt ist,
befinden sich neben den Second Level Caches der Prozessoren auch noch die SDRAM-Speichermodule. Gegenüber der älteren I Serie (SI, SSI. MXI) werden die Prozessoren mit maximal
250 MHz getaktet: Dadurch, erklärt SGI, wird bei gleichen Cache1 Grössen die Rechenleistung
um ca. 25% erhöht. Leider stand zu Testzwecken kein System der I-Serie zur Verfügung, um
dies auch selber nachvollziehen zu können.
Zu Bemerken gilt auch, dass der R10000 in der Octane eine bedeutend bessere Fliesskommaleistung erbringt als in einem Indigo2 Maximum Impact System. Die beiden wichtigsten Gründe
für diesen Leistungsunterschied sind einerseits der 128 Bit breite Datenpfad2 von der CPU zum
Second level cache und andererseits kommen in der Octane - wie auch in der O2 - eine schnellere und synchrone Variante von DRAM Speicherbausteinen zum Einsatz.
1. Primary und secondary cache.
2. Indigo2 verwendet 64 Bit.
36
4 Die Octane von SGI
Standardmässig sind die Octane Systeme mit einem 24-Bit Audio-Subsystem, 10/100Base-TXEthernet und Dual-Host-SCSI Schnittstellen ausgestattet. Ebenfalls zur Basisausstattung zählen
zwei serielle und ein bidirektionaler paralleler Port.
Neben drei Standard PCI Slots befinden sich auf dem Mainboard auch vier XIO Ports, in denen
die XIO Options Karten eingesetzt werden können. Diese XIO-Ports bilden eine direkte Verbindung mit dem Crossbar-Switch. Zur Zeit sind diverse Optionskarten erhältlich, wie etwa
Netzwerkkarten und SCSI-Optionskarten. Besonders interessant sind jedoch die drei Video
Optionskarten, deren Möglichkeiten hier kurz dargestellt werden.
•
Digital Video:
Es können zwei separate und unkomprimierte Videoströme im 4:2:2 Format in Echtzeit
verarbeitet werden. Beide Ströme können in realtime direkt in den Hauptspeicher oder
auf eine Harddisk1 geschrieben werden.
Neben diversen genormten Ein- und Ausgängen2, bietet diese Karte auch spezielle
Hardware Unterstützung für:
•
Farbumsetzung des Videosignals von YUV 3 nach RGB in 24 Bit Auflösung
•
Real-time Video-Texturen
•
Personal Video:
Dies ist die kleinere Variante der Digital Video Option, wobei aus Preisgründen einige
Features weggelassen werden mussten, wie etwa die Video-Textur Unterstützung.
•
Compression:
Das Compression-Board erlaubt die Echtzeit-Komprimierung von zwei unabhängigen
Videoströmen im Motion-JPEG Format, mit einer minimalen Kompressionsrate von
lediglich 2:1.
Dieses Board besitzt zwei Ein- und Ausgänge im S-Video Format. Dank einer direkten
Verbindung zur Digital Video Option, können jedoch auch zwei unabhängige CCIR601 Videoströme in Echtzeit mit Motion-JPEG komprimiert und dekomprimiert werden.
1. Nur mit externem Ultra SCSI oder Fibre Channel Interface möglich.
2. Zwei Ein- und Ausgänge für SMPTE 259M und CCIR-601 serial digital video.
3. YUV-Farbraum, Europäische Fernsehnorm.
4.2 Systemarchitektur
Abbildung 4.1:
37
Die Octane Systemplatine
38
4 Die Octane von SGI
4.2.2 Die Crossbar-Switch Technologie
Die Leistungsfähigkeit der Subsysteme in den Computern hat in den letzten Jahren eine rasante
Entwicklung durchlaufen. Eine massive Steigerung des Daten-Durchsatzes war die Folge.
Damit erhöhten sich aber auch laufend die Anforderungen an den Systembus: Immer grössere
Datenmengen sollen in immer kleiner werdenden Zeiteinheiten übertragen werden können.
Schlussendlich müssen alle Daten von einem Subsystem zum anderen über den Bus übertragen
werden. Damit ist die Grundvoraussetzung gegeben, dass der Systembus vor allem in leistungsfähigen Systemen zum Flaschenhals werden kann.
Besonders deutlich wird diese Entwicklung, wenn man bedenkt, dass sich etwa alle fünf Jahre
die Prozessorleistung verzehnfacht und dass sich die Bandbreite der Systembusse lediglich alle
vier Jahre verdoppelt. So entsteht eine immer grösser werdende Lücke zwischen der Prozessorleistung und der Bandbreite der Systeme.
Die Folge war, dass sich einige Hersteller dazu entschlossen haben, sogenannte private Busse
zwischen einzelnen besonders leistungshungrigen Subsystemen zu schalten, um so den Engpass
auf dem Systembus zu umgehen. Dieser Ausweg fällt aber eher in den Bereich der Symptombekämpfung, denn obwohl der eine Engpass behoben wurde, kann leicht ein neuer entstehen,
wie folgendes Beispiel aufzeigt.
Zwischen der Graphikkarte und der Bridge zum Prozessor-Memory-Bus sei ein privater Bus
eingesetzt, wie etwa Intel’s AGP (Siehe Abschnitt 7.1.1). Weil dieser Bus1 nur einen Port hat,
der bereits durch die Graphikkarte belegt ist, muss eine Video Frame-Grabber Karte im herkömmlichen PCI Bus installiert werden. Möchte man den Vidoestream als 3D-Textur verwenden, müssen in der Folge wieder grosse Datenmengen über den langsamen PCI Bus zur
Graphikkarte hin transportiert werden. Falls der Videostream auch noch in real-time auf der
Harddisk gesichert werden soll, müssten die Daten abermals über den PCI Bus von der Graphikkarte zum SCSI Controller übertragen werden. Dies ist aber gar nicht möglich, da gleichzeitig
nur ein Subsystem den PCI-Bus belegen kann.
Aus diesen Gründen wurde in der Octane der traditionelle Systembus durch einen CrossbarSwitch ersetzt. Mit dieser Technologie brauchen sich die Subsysteme nicht mehr um einen
gemeinsamen Bus zu bewerben, um Daten zu übertragen. Stattdessen kann jede Komponente
mittels einer privaten Verbindung mit einer anderen kommunizieren. Die Funktionsweise entspricht der eines Vermittlungsknotens in einem Telefonnetz, wo die einzelnen Gesprächsteilnehmer miteinander verbunden werden können. Falls - wie beim Telefonnetz - gleichzeitig und
unabhängig voneinander, mehrere Verbindungen geschaltet werden können, spricht man auch
von einem non-blocking Switch. In der Octane wird ein Sieben-Port non-blocking Switch
eingesetzt, der eine Punkt zu Punkt Verbindung zwischen den einzelnen Komponenten möglich
macht. Das bedeutet, dass z.B. eine Videokarte ihren Datenstrom direkt zum Harddisk-Interface
schicken kann und somit keine Speicher-Bandbreite verbraucht.
1. Der AGP ist eigentlich kein Bus, sondern ein unabhängiger Steckplatz für eine Punkt-zu-Punkt-Verbindung zwischen einer Graphikkarte und der Bridge zum Prozessor-Memory-Bus.
4.3 Graphiksystem
39
4.3 Graphiksystem
Um höchste Transferraten zu erreichen, ist das Graphiksystem direkt durch einen oder zwei
XIO Ports mit dem Octane Crossbar-Switch verbunden. Wie aus Abbildung 4.1 ersichtlich,
belegen die Varianten Octane SSE und MXE zwei der insgesamt vier XIO Ports.
Alle Varianten enthalten:
•
ein doppelt gepuffertes 32 Bit RGBA Video Memory für eine Auflösung bis zu
1280 x 1024 Bildpunkten.
•
24 Bit Z-Buffer
•
doppelte gepufferte Color-Index-Frames (12 Bit) und 8 Bit Overlay Frames1
Bei SSE und MXE Varianten sind auch Auflösungen bis zu 1900 x 1035 Bildpunkten2 realisierbar. Um Darstellungen in ansprechender Realitätsnähe zu ermöglichen, empfiehlt es sich bei
Octane SE und SSE 3den Texturspeicher auf 4 MB aufzurüsten. Auffallend ist jedoch, dass der
Texturspeicher bewusst knapp gehalten ist, damit sich SGI nicht selber mit dem Einsteigermodell der Onyx2 Modellreihe konkurrieren.
Zur Illustration ist auf der nächsten Seite das Graphiksystem der Octane dargestellt.
1. Over- und Underlay Planes werden vom Window Manager oder von Applikationen verwendet, um
unter anderem Pop-Up Menüs darzustellen.
2. Entspricht HDTV Auflösung.
3. Gilt auch für SI und SSI.
40
4 Die Octane von SGI
Octane Crossbar Switch
XIO
zusätzliches
Geometry
Subsytem
von Octane
SS und MX
XIO
Interface
Interface
GE
GE
Geometry
Subsytem
zusätzliches
Raster Subsytem von
Octane SS und MX
Raster
Subsytem
Raster Engine
Z Buffer
Raster Engine
Texture Engine
Texture Engine
(nur mit installiertem
Texturspeicher
funktionsfähig)
(nur mit installiertem
Texturspeicher
funktionsfähig)
Z Buffer
VRAM
VRAM
Texture Memory
Texture Memory
(Texture-Cache-Option)
(Texture-Cache-Option)
RAM DAC
Monitor
Abbildung 4.2:
Das Octane Graphiksystem
5
5Die Onyx2 von SGI
Bild SGI
“To build the world’s most powerful visualization engine, Silicon Graphics combined the ultimate in supercomuting and visualization technologies and then designed a way to simultaneously process 3D graphics, imaging, and video data in real time.”1
Dieses Zitat scheint der geeigneteste Einstieg für dieses Kapitel zu sein. Es geht ja letztendlich
darum, den leistungsfähigsten Rechner aus der Gruppe von Testmaschinen zu beschreiben.
Diesen Grossrechner für einmal detailliert zu beschreiben und ihm mit den entsprechenden
Benchmarking-Programmen auf die Zähne zu fühlen, war ein Kernpunkt der Motivation für
diese Arbeit.
1. Aus der SGI Website, www.sgi.com
41
42
5 Die Onyx2 von SGI
5.1 Systemarchitektur
Um eine Übersicht zu erlangen, werden im ersten Teil dieses Abschnittes die verschiedenen
Onyx2 Systeme beschrieben. Anschliessend wird auf die spezielle Architektur dieses Grossrechners eingegangen. Eine komplette Beschreibung der Onyx2 Systeme würde aber den
Rahmen dieser Arbeit sprengen. Für eine vollständige Dokumentation - insbesondere auch der
unzähligen Graphic-Features - sei auf die Whitepapers von SGI verwiesen1.
In diesem Abschnitt werden nur die neueren Onyx2 InfinteReality2 Systeme beschrieben,
denn die älteren Onyx2 InfiniteReality beinhalten ähnliche Hardware und haben vor allem die
gleiche Architektur.
5.1.1 Übersicht
In den Illustrationen zu den einzelnen Onyx2 Modellen (Abbildungen 5.2 bis 5.4), lässt sich
immer die Visualisierungs-Pipeline2 wiedererkennen. In der Abbildung 5.1 ist deren Aufbau
schematisch dargestellt, wobei Form und Farbgebung der einzelnen Komponenten in allen Illustrationen dieselben sind. Das Onyx2 InfinteReality2 Visualisierungs-Subsystem besteht aus
drei Komponenten: Geometry Engine, Raster Manager und Display Generator. Die Geometry Engine bildet die Schnittstelle zum restlichen Computersystem und ist für geometrische
Transformationen3 und Beleuchtungsberechnungen verantwortlich. Auf 2D-Bildern wird das
sogenannte “image processing” durchgeführt, welches unter anderem Konvolutionen berechnet.
Im Raster Manager werden die Resultate der Geometry Engine weiterverarbeitet. Die wichtigste Aufgabe ist die Scan-Konvertierung. Im weiteren werden verschiedene Pixel-Operationen,
wie etwa Z-Buffer Tests, Blending, Texture-Mapping und das Anti-Aliasing berechnet. In allen
Raster Managern erlaubt der Framebuffer eine schnelle Bilddatenverarbeitung, währenddessen
der Texturspeicher ein effizientes Texture-Mapping ermöglicht.
Die letzte Stufe bildet der Display Generator, welcher das digitale Bild in analoge Signale konvertiert, die dann auf dem Bildschirm dargestellt werden können. Eine genauere Beschreibung
der Aufgaben der einzelnen Graphic-Engines befindet sich im Abschnitt 5.2.
Abbildung 5.1:Die Visualisierungs-Pipeline
1. Zu beziehen unter www.sgi.com
2. Die Begriffe Graphik-Pipeline und Visualisierungs-Pipeline sind identisch.
3. Translationen, Rotationen und Skalierung.
5.1 Systemarchitektur
43
Onyx2 InfiniteReality2 Deskside System
Dieses System ist das Einstiegsmodell der Onyx2 Familie und ist deshalb auch am einfachsten
aufgebaut. Die Systemarchitektur ist in Abbildung 5.2 dargestellt. Deutlich zu erkennen ist,
dass lediglich eine Graphik-Pipeline eingesetzt wird. Zusammenfassend besteht dieses Modell
aus:
•
zwei oder vier R10000 Prozessoren mit je 4 MB Cache
•
128 MB bis zu 8 GB Hauptspeicher
•
eine Graphik-Pipeline mit einem oder zwei Raster Manager
•
Bis zu 64 MB Textur-Speicher und bis zu 80 MB Frame Buffer.
Abbildung 5.2: Onyx2 InfiniteReality2 Deskside System
Onyx2 InfiniteReality2 Single-Rack System
•
zwei oder acht R10000 Prozessoren mit je 4 MB Cache
•
128 MB bis zu 16 GB Hauptspeicher
•
eine erste Graphik-Pipeline mit 1/2/4 Raster Manager, die je 80 MB Framebuffer und
insgesamt 64 MB Texturspeicher aufnehmen können
•
eine zweite Graphik-Pipeline mit 1/2 Raster Manager, die je 80 MB Framebuffer und
insgesamt 64 MB Texturspeicher aufnehmen können.
In Abbildung 5.3 ist ein System mit vier Prozessoren und zwei Graphik-Pipelines dargestellt.
44
5 Die Onyx2 von SGI
Abbildung 5.3:
Onyx2 InfiniteReality2 Single-Rack System
Onyx2 InfiniteReality2 Multi-Rack System
Dank der Verwendung von Multiracks kann das Onyx2 System zu einem sehr leistungsfähigen
Grossrechner ausgebaut werden.
•
bis zu 128 R10000 Prozessoren mit je 4 MB Cache,
•
maximal 256 GB Hauptspeicher,
•
maximal 16 Visualisierungs-Pipelines
•
die beiden Racks des Systems können je nach Bedarf mit diversen CPU- oder Graphics
Boards bestückt werden.
In der Abbildung 5.4 wird eine Beispiel-Konfiguration mit acht Prozessoren und vier GraphikPipelines dargestellt.
Der weitaus grösste Vorteil der Rack-Systeme ergibt sich aus der modularen und skalierbaren
Architektur. Falls mehr Rechenleistung gebraucht wird, so kann das System problemlos und
beinahe beliebig erweitert werden.
5.1 Systemarchitektur
Abbildung 5.4:
45
Onyx2 InfiniteReality2 Multi-Rack System
46
5 Die Onyx2 von SGI
5.1.2 Multi-Pipe Rendering Mode
Die Graphik-Pipelines eines Onyx2 Systems können derart konfiguriert werden, dass sie alle
Berechnungen für nur ein Fenster auf dem Bildschirm durchführen. Das gesamte Graphiksystem arbeitet demnach mit seiner vollen Leistung für die Darstellung auf nur einem Bildschirmfenster. Mit dieser geballten Ladung an Graphikleistung lassen sich absolut realitätsnahe
virtuelle 3D-Welten darstellen. Es bestehen grundsätzlich zwei Möglichkeiten um dieses Prinzip des Multi-Pipe Rendering Mode umzusetzen:
•
Digitales Multiplexing (DPLEX):
Dies ist eine Hardware Option, welche folgendes einfaches Prinzip ausnutzt: Die Graphik-Pipelines arbeiten parallel auf der Sequenz von Frames. Anschliessend werden die
berechneten Frames mit einem digitalen Multiplexer in der richtigen zeitlichen Reihenfolge aneinandergereiht.
Die Abbildung 5.5 zeigt ein System mit vier Graphik-Pipelines. Für die Berechnung
eines Frames braucht eine Pipeline maximal 1/15 Sec. Da jedoch vier Pipelines parallel
arbeiten, kann eine Frame-Rate von 60 Hz garantiert werden.
Abbildung 5.5:
•
DPLEX Multi-Pipe Rendering Mode
Monster Mode:
Hinter diesem Begriff versteckt sich eine Menge von Software-basierten Methoden. Sie
sind dafür verantwortlich, dass die Daten zur Abarbeitung auf mehrere Pipelines verteilt werden um dann auf einem Bildschirm dargestellt zu werden. Der Monster Mode
beinhaltet Unterstützung für die Dekomposition von 2D- und 3D-Objekten.
Ein System kann im Monster 3D-Mode mit n Graphik-Pipelines die n-fache Leistung
in der Texturverarbeitung gegenüber einer einzelnen Pipeline erreichen. Ein System mit
16 Graphik-Pipelines kann über maximal 1 GB Texturspeicher verfügen und theoretisch eine Textur-Download Rate von 5 GB/Sec erzielen!
5.1 Systemarchitektur
47
5.1.3 Aufbau der Onyx2
Damit grosse Datenmengen effizient übertagen werden können, setzt SGI auch bei der Onyx2
die Crossbar-Switch Technologie ein. Der Crossbar-Switch, welcher in der Onyx2 Terminologie Crossbow genannt wird, verbindet zwei Node-Boards mit bis zu sechs I/O Einheiten (Siehe
Abbildung 5.10). Über einen Router werden die Node-Boards miteinander verbunden.
Die Motivation zur Verwendung eines Crossbar-Switches anstelle eines konventionellen
Busses liegt zum einen in der höheren Übertragungsrate und zum anderen in der Möglichkeit
der Übertragung mehrerer Datenströme, ohne dass diese sich gegenseitig beeinträchtigen oder
gar lahm legen1. Statt auf einem gemeinsamen Systembus konkurrierenden Datentransfer zu
betreiben, verbindet der Crossbar-Switch jede Komponente direkt über eine separate Verbindung miteinander. Vor allem in einem Mehrprozessorsystem würde ein gemeinsamer Systembus rasch an seine Kapazitätsgrenzen stossen. Die Onyx2 ist aber auch ein skalierbares und
modulares System, da zusätzliche Node-Boards zu einem späteren Zeitpunkt einfach hinzugefügt werden können.
Der physikalische Speicher einer Onyx2 ist auf die verschiedenen Node-Boards verteilt. Es
können jedoch alle Prozessoren auf den gesamten Speicher zugreifen. Man bezeichnet eine solches System deshalb als Scalable Shared Memory Multiprocessor (S2MP) System. Da der
Speicher verteilt ist, entstehen aus der Sicht eines Prozessors unterschiedliche Zugriffszeiten
auf den Speicher, wobei näherliegendes Memory schneller als entferntes angesprochen werden
kann. Damit die Konsistenz des Speichers garantiert werden kann, wird ein directory based
cache coherence protocol eingesetzt. Informell ausgedrückt bedeutet Cache Kohärenz, dass
alle Lesezugriffe auf ein und dieselbe Speicherzelle auch den zuletzt geschriebenen Wert dieser
Zelle zurückliefern. Oder mit anderen Worten ausgedrückt, sehen alle Prozessoren nur eine
Instanz des Speichers. Diese Speicherarchitektur wird deshalb als Cache Coherent Non Uniform Memory Access Architektur (ccNUMA)2 bezeichnet.
Die klassische S2MP Architektur hat SGI dahingehend erweitert, dass immer mindestens zwei
separate Verbindungen zwischen den Systemkomponenten existieren. Somit lassen sich parallel verschiedene Aufgaben ausführen, ohne dass sich der Datentransfer gegenseitig beeinflusst.
Abbildung 5.6 illustriert die zwei unabhängigen Datenpfade zwischen den Knoten R1 und R6.
Aus dieser Systemarchitektur resultieren grundsätzlich zwei Vorteile. Erstens kann R1 seine
Daten auf zwei unabhängigen Pfaden nach R1 schicken und somit die Übertragunslast verteilen.
Zweitens ist ein solches System äusserst robust gegenüber Ausfällen von Knoten und dazwischenliegenden Pfaden.
1. Man spricht in diesem Falle auch von einem Non-blocking Crossbar-switch.
In der Onyx2 sind sowohl der Crossbow, wie auch der Hub als non-blocking Crossbar-Switch implementiert worden.
2. Eine gute Beschreibung der Cache Protokolle und Systemarchitekturen befindet sich in [1]
48
5 Die Onyx2 von SGI
Abbildung 5.6:Separate Datenpfade zwischen R1 und R6
Dank dieser Systemarchitektur kann auch die Anzahl der benötigten direkten Verbindungen für
Kommunikationszwecke eingeschränkt werden. Die Abbildung 5.7 zeigt, dass R1 nur eine einzige direkte Verbindung zu R0 braucht, um simultan mit einer Reihe von Knoten zu kommunizieren. Im linken Würfel der Abbildung 5.7 kommuniziert R1 simultan mit R0, R4, R6 und im
rechten mit R0, R2, R3, R6 und R7. Die Anzahl von direkten Verbindungen lässt sich also auf
ein Minimum reduzieren.
Abbildung 5.7:Simultane Kommunikation zwischen Knoten
5.1.4 Hypercube Architektur
Es gibt verschiedene Konzepte, um die Knoten eines Multiprozessorsystems miteinander zu
verbinden. Die einfachsten Möglichkeiten stellen der Shared Bus und die Ringstruktur dar,
welche jedoch beide einen entscheidenden Mangel haben. Je mehr Knoten ein System hat, umso
kleiner wird die verfügbare Bandbreite. Die komplizierteste Möglichkeit ist schliesslich ein
komplett vermaschtes System, wo alle Knoten miteinander verbunden sind. Ein non-blocking
Crossbar-Switch repräsentiert eine solche Architektur. Den Preis der hohen Bandbreite muss
jedoch mit einem enormen Aufwand an Hardware bezahlt werden. Deswegen lässt sich ein solches System auch nicht auf eine beliebige Anzahl Knoten ausdehnen. Ein weiterer Nachteil
besteht darin, dass ein System mit Crossbar-Switch-Technologie, sobald alle Ports belegt sind,
nicht mehr skalierbar ist.
5.1 Systemarchitektur
49
Das Ziel ist also, die Realisierung eines skalierbaren Systems mit einer hohen Bandbreite und
mit einem möglichst geringen Aufwand an Hardware. Diese Forderungen stehen einander diametral gegenüber.
Ein möglicher Ausweg aus diesem Dilemma stellt die Hypercube Architektur dar. Bevor diese
genauer erläutert wird, soll zunächst das Mass der bisection bandwith eingeführt werden. Um
die verfügbare Bandbreite in einem Mehrprozessorsystem zu charakterisieren, wird dieses
zunächst gedanklich in zwei gleiche Teile - beide mit der halben Anzahl Knoten- aufgetrennt.
Danach werden entlang dieses imaginären Schnittes, die Bandbreiten der bestehenden Verbindungen zwischen den beiden abgetrennten Teilen aufsummiert. Diese Summe wird als bisection
bandwith bezeichnet. Da einige Architekturen unsymmetrisch verbunden sind, entstehen je
nach Wahl des Schnittes unterschiedliche Werte. Per Definition wird nun der kleinste Wert
unter allen möglichen Schnitten ausgewählt. Das Mass der bisection bandwith stellt demnach
den worst case dar.
Bei der Hypercube Architektur werden die Knoten in einem Würfel angeordnet. Die Kanten
dieses Würfels stellen die Verbindungen zwischen den Knoten dar. Allgemein besteht ein
System aus 2n Knoten, welche n direkte Nachbarn haben. Aus diesem Grunde wird ein solches
System auch als n-cube bezeichnet. Nun kommt der eigentliche Clou der Sache. Die bisection
bandwith nimmt mit zunehmender Anzahl Knoten linear zu und die Bandbreite pro Knoten
bleibt konstant. Hingegegen bleibt bei der eingangs erwähnten Bus- oder Ringstruktur die
bisection bandwith konstant und die verfügbare Bandbreite pro Knoten wird immer kleiner!
Anzahl Knoten
Bisection Bandwith
Shared Bus
Hypercube
Komplett verbunden
2
1
1
1
4
1
2
4
8
1
4
16
16
1
8
64
32
1
16
256
Tabelle 5.1: Bisection bandwith verschiedener Architekturen.
In der Onyx2 besteht nun jeder Knoten aus einem Router, welcher maximal mit vier weiteren
Routers verbunden werden kann. Jeder Router hat zudem zwei weitere Verbindungen zu den
Node-Boards mit den Prozessoren. In der Abbildung 5.10 ist das Zusammenspiel von Router
und Node-Boards dargestellt.
Wie aus Tabelle 5.1 zu entnehmen ist, wächst mit der Anzahl Knoten auch die Anzahl der Verbindungen der Knoten zu ihren direkten Nachbarn. Beispielsweise braucht ein Hypercube mit
acht Knoten drei direkte Verbindungen pro Knoten (3-cube). Der Router der Onyx2 hat jedoch
vier mögliche Verbindungen. Dieser freie Port pro Router kann für zusätzliche direkte Verbindungen zwischen Knoten gebraucht werden. In der Abbildung 5.8 sind diese zusätzlichen Verbindungen gestrichelt eingezeichnet. Dadurch lässt sich die bisection bandwith eines Systems
mit acht Knoten gegenüber der herkömmlichen 3-cube Anordnung auf acht anstelle von vier
steigern.
50
5 Die Onyx2 von SGI
Wenn in der Hypercube-Terminologie von Knoten gesprochen wird, so ist zu beachten, dass ein
Knoten in einem Onyx2 System immer aus
•
einem Router und
•
zwei Node-Boards besteht.
Jedes Node-Board kann mit maximal zwei MIPS R10000 Prozessoren bestückt werden. Somit
hat ein Onyx2 System mit total n Knoten maximal 4*n Prozessoren (Siehe Abbildung 5.8).
Abbildung 5.8:Ein System mit 8 Knoten1
Betrachtet man nun einen Hypercube mit 32 Knoten, so sind fünf direkte Verbindungen pro
Knoten (5-cube) notwendig. Der Onyx2 Router hat jedoch nur vier Verbindungen. Wie kann
ein solcher Hypercube dennoch realisiert werden?
Die Lösung liegt in der Verwendung sogenannter Meta-Router. Die Abbildung 5.9 zeigt den
Aufbau eines solchen Verbindungsnetzes. Man könnte nun meinen, dass die bisection bandwith
Werte eines solchen Systems kleiner sind als die einer “echten” Hypercube-Architektur.
Man kann sich dies folgendermassen vorstellen. In der Abbildung 5.9 besteht jeder schwarze
Würfel aus einer Deck- und Bodenplatte mit je vier Knoten. Alle grünen Verbindungen aller
Deckplatten der vier schwarzen Würfel führen zur Deckplatte des Meta-Routers. Das Analoge
gilt für die Bodenplatten. Falls alle fünf Würfel in der gleichen horizontalen Ebene liegen und
die Schnittebene zwischen den Boden- und Deckplatten gelegt wird, so durchstossen genau die
vertikalen Kanten der Würfel die Schnittebene. Zählt man nun diese vertikalen Kanten der
schwarzen Würfel, so erhält man eine bisection bandwith von 16. Die vertikalen Kanten des
Meta-Routers stellen keine zusätzlichen direkten Verbindungen zwischen den Knoten dar und
dürfen deshalb auch nicht mitgezählt werden.
Die bisection bandwith eines Systems mit Meta-Routern ist dieselbe wie die einer HypercubeArchitektur! 2
1. Ein solches System kann maximal mit 32 Prozessoren ausgestattet werden.
2. Beweis in Hypercube Connectivity within ccNUMA Architecture; Part 6: Bandwith of metaroutered
systems. Erhältlich unter www.sgi.com/tech/whitepapers.
5.1 Systemarchitektur
51
Abbildung 5.9:Verwendung von Meta-Routern
5.1.5 Node-Boards und I/O Subsystem
Das Node-Board ist das wichtigste Element eines Onyx2 Systems. Jedes Board kann zwei
R10000 Prozessoren mit maximal je 4 MB Second Level Cache aufnehmen. Wie bereits im
Abschnitt 5.1.3 erwähnt, befindet sich auf jedem Node-Board auch ein Teil des gesamten Speichers und das Directory Memory. Letzteres wird zur Aufrechterhaltung der Cache Kohärenz
verwendet. Die zentrale Einheit eines Node-Boards bildet ein Hub1, dessen vier Ports
•
die Prozessoren,
•
den Speicher,
•
den Router und
•
den Crossbow1 verbinden.
Die Ports sind für voll-duplex Übertragung mit bis zu 1.6 GByte/sec2 ausgelegt. Aufgabe des
Hub ist es, die Zugriffszeiten auf den Speicher zu minimieren. Der Hub sorgt dafür, dass die
Speicherbereiche in Richtung desjenigen Prozessors verschoben werden, der auf sie am häufigsten zugreift (Page Migration). Auf jedem Node-Board kontrolliert der Hub über ein zusätzli-
1. Als Non-blocking Crossbar Switch implementiert.
2. Peak Transfer Rate.
52
5 Die Onyx2 von SGI
ches Speicherelement (Directory-Memory) die Speicherzugriffe, um die Datenbereiche beim
Kopieren in den Second-Level-Cache und beim Verschieben von einem Node-Board zum anderen eindeutig zu halten.
SGI hat also die Crossbar-Switch Technologie gleich doppelt angewendet, zum einen im Hub
auf den Node-Boards und zum anderen im Crossbow. Letzterer verbindet zwei Node-Boards
mit bis zu sechs I/O Einheiten. Als Sonderform eines Ein-/Ausgabegerät lässt sich die Graphikhardware über den Crossbow anschliessen. Dies lässt sich besonders gut in den Abbildungen
5.2 bis 5.4 erkennen.
5.1 Systemarchitektur
Abbildung 5.10:
53
Zusammenspiel von Node-Board, Router und Crossbow (CrossbarSwitch)
54
5 Die Onyx2 von SGI
5.1.6 Die Prozessoren: MIPS R10000
In den Onyx2 Systemen kommen ausschliesslich R10000 Prozessoren zum Einsatz. Von besonderer Bedeutung für die Graphikleistung sind bei diesem Prozessor die MADD-Instruktionen
des MIPS IV Instruktionssets. Die Auswirkung auf die Graphikleistungen dieser speziellen
Instruktionen, wurde bereits im Abschnitt 3.1.2 ausführlich behandelt.
An dieser Stelle soll das Design dieses Prozessors etwas näher dargestellt werden. Die Abbildung 5.11 zeigt den grundsätzlichen Aufbau des MIPS R10000 Prozessors. Es gilt zu beachten,
dass über den speziellen Systembus bis zu vier Prozessoren direkt verbunden werden können,
wobei jeder Prozessor sein eigenes Second level cache hat1.
Abbildung 5.11:
Aufbau eines MIPS R10000 Prozessors
1. Weitere Spezifikationen zum R10000 unter www.mips.com.
5.2 Graphiksystem
55
5.2 Graphiksystem
In diesem Abschnitt wird zuerst die Verarbeitungsschritte der Visualisierungs-Pipeline näher
erläutert. Anschliessend werden die wichtigsten Graphic-Features eines Onyx2 Systems dargestellt.
5.2.1 Verarbeitungsschritte in der Visualisierungs-Pipeline
Als dreistufige Pipeline aufgebaut, besteht die InfiniteReality2 Graphikhardware aus dem
•
Geometry subsystem mit den Geometry Engines (GE),
•
Raster subsytem mit den Raster Managers (RM),
•
Display subsystem mit dem Display Generator (DG).
Die Hauptaufgabe des Geometry subsystem bestehen darin, die Datentransfers vom und zum
Hostrechner zu gewährleisten und OpenGL Befehle zu analysieren und auszuführen. Für 3DDaten sind dies Transformationen1 der Eckpunkte im Raum, das Beleuchten und das Clipping.
Im weiteren findet die Projektion der 3D-Weltkoordinaten auf eine zweidimensionale Bildebene
statt. Damit immer genug OpenGL Befehle aufgenommen werden können, verwendet das
System grosse FIFO Warteschlangen. Dadurch kann die Pipeline ununterbrochen arbeiten und
Stalls werden weitgehend vermieden.
In der zweiten Stufe - dem Raster subsystem - werden die vom Geometry subsystem gelieferten Linien und Dreiecke mittels Scan-Konvertierung in Pixeldaten umgewandelt. Diese können
dann in den Framebuffer geschrieben und vom Display subsystem in analoge Videosignale
umgewandelt werden. Die Pipelinestufen innerhalb des Raster subsystems erlauben die parallele Verarbeitung von Anti-Aliasing, Texture-Mapping und weiteren Bildverarbeitungs-Funktionen.
Das System unterstützt neben dem Anti-Aliasing für Graphikprimitiven auch das sogenannte
full-screen Anti-Aliasing mit der Multisampling-Technologie. Dabei werden die Bilder mit
einer höheren effektiven Auflösung gerendert, als zur Darstellung auf dem Bildschirm notwendig wäre. Es wird also jedem Pixel eine gewisse konstante Anzahl Subsamples zugeordnet, die
schliesslich den Vergrösserungsfaktor der Bildauflösung bestimmt. Werden beispielsweise
jedem Pixel acht Subsamples zugeordnet, so ist die effektive Auflösung achtmal grösser als die
darzustellende. Dieses Subsampling wird für alle Pixel des Bildes durchgeführt. Anschliessend
wird für jedes Pixel mittels überblenden aller seiner Subsamples dessen Farbe bestimmt.
Durch Interleaving des Bildspeichers arbeiten auf aneinandergrenzende Pixels immer verschiedene Prozessoren. Somit können mehrere Prozessoren parallel an einem Polygon arbeiten. Die
Scan-Konvertierung produziert für jedes Pixel die Texturkoordinaten. Die Texturverarbeitende
Einheit berechnet die Korrekturen der Perspektive auf den Texturkoordinaten. Die Texturdaten2
werden schliesslich im entsprechenden Format abgespeichert und im sogenannten Pixel Processing weiterverarbeitet.
Im Display Subsystem werden die gerenderten Bilder aus der vorangehenden Stufe in analoge
Videosignale umgewandelt. Das Standard-System der Onyx2 InfiniteReality2 beinhaltet zwei
1. Translationen, Rotationen und Skalierungen.
2. Auch Texel genannt.
56
5 Die Onyx2 von SGI
unabhängige Video Kanäle, als Option sind aber auch acht erhältlich. Der Display Generator
lässt sich je nach Verwendung mit verschiedenen Refresh-Raten und Videosignalcharakteristiken (beispielsweise interlaced/non-interlaced) programmieren.
5.2.2 Graphic-Features und weitere Spezialitäten
Gegen Überlastung der Graphikhardware bei zu komplexen Bildern hat sich SGI einiges einfallen lassen. Damit die vorgegebene Frame-Rate eingehalten werden kann, spielt die Flexibilität
der Display Generators eine grosse Rolle. Echtzeitapplikationen für Simulationen tolerieren so
gut wie nie ein Abfallen der Frame-Rate. So zerstört schon ein durch Auslassen eines Frames
verursachtes Rucken die Illusion der kontinuierlichen Bewegung in einer virtuellen Szene. Um
Echtzeitverlust zu verhindern, ist es wichtig, eine drohende Überlastung der Graphikhardware
im Voraus festzustellen. Nur so kann das System noch rechtzeitig entsprechende Gegenmassnahmen einleiten.
Typischerweise resultiert eine Überlastung der Graphikhardware aus dem Versuch, zu viele
Polygone zu rendern oder zu viele Bildpunkte in den Bildspeicher zu schreiben (Pixel Fill). Die
erste Art von Überlastung - zu viele Polygone - lässt sich mittels SGI’s IRIS Performer Software eliminieren. Dabei wird der Detaillierungsgrad einer Szene so weit reduziert, bis die vorgegebene Framerate sichergestellt werden kann. Hingegen ist eine Überlastung durch Pixel Fill
schwieriger zu handhaben. Als Lösung verwendet die InfiniteReality2 das Verfahren der dynamischen Auflösung, die ein dynamisches Auslesen des Bildspeichers vornimmt. So lässt sich
die Auflösung für jeden einzelnen Videokanal unabhängig von den anderen variieren. Die
Anzahl der Pixelschreiboperationen nimmt dann entsprechend ab. Der Display Generator
zoomt den Ausschnitt im Bildspeicher auf das Format des Videosignals, wobei die Berechnung
der fehlenden Bildpunkte für das analoge Videosignal mittels bilinearer Interpolation erfolgt.
Die leichte Unschärfe des Videobildes ist für den Betrachter kaum wahrnehmbar.
Die Onyx Systeme sind aber auch für die realistische Darstellung komplexer texturierter Szenen
in Echtzeit ausgelegt. Die Hardware gestattet das simultane Laden und Verwenden von Texturen1, was das Aktualisieren von Texturen während einer Echtzeitanwendung erlaubt. Ein spezieller Synchronisationsalgorithmus verwaltet dabei das Nachladen und Freigeben der
Texturen. Dieser stellt sicher, dass Texturen erst für das Rendering verwendet werden, wenn sie
komplett in den Raster Manager geladen sind. Auch die Freigabe erfolgt erst, wenn die entsprechende Textur nicht mehr verwendet wird. Die hohen Textur-Download-Raten2 sollen den
ungestörten Betrieb der Anwendung während des Texture Paging gewährleisten.
Ein weiteres Feature ist das global Texturing. Es wird hauptsächlich bei Flug- oder Fahrsimulatoren verwendet. Damit lassen sich etwa Satelliten- oder Luftaufnahmen als Textur auf die
3D-Modellgeometrie des zugehörigen geographischen Terrains aufbringen. Zu beachten ist,
dass die Textur dabei grösser als der vorhandene Speicher im Raster Manager sein kann. Darum
wird nur der aktuell für das Rendering benötigte Texturausschnitt in den Texturspeicher geladen. Der Rest befindet sich im Hauptspeicher oder auf der Harddisk. Während der Betrachter
sich in der virtuellen Szene bewegt, lädt das System immer den momentan sichtbaren Teil der
Textur nach.
Neben den standardisierten OpenGL Befehlen liefert SGI etwa 30 weitere Erweiterungsfunktionen, mit denen sich spezielle Graphic-Features realisieren lassen. In der folgenden, unvoll-
1. Texture Paging.
2. 176 MB/Sec aus dem Hauptspeicher.
5.2 Graphiksystem
57
ständigen Auflistung werden die wichtigsten Gruppen dieser Graphic-Features aufgezeigt. In
diversen Whitepapers1 werden diese Features detailliert beschrieben und erklärt, wie sie vom
Programmierer benutzt werden müssen.
•
Resolution: Es stehen eine Vielzahl von verschiedenen Auflösungen zur Verfügung.
•
Immediate Mode und Display Lists: OpenGL unterstützt diese beiden Operationsmodi. Im Immediate Mode ruft die Applikation direkt OpenGL Befehle auf. Alternativ
können die immediate Kommandos zu Display Lists kompiliert werden. Die Applikation kann somit immer diese Display Lists anstelle von immediate Kommandos ausführen.
•
Farbe (Color): In dieser Gruppe werden Befehle zum Schattieren, Color Blending und
zum Beleuchten zur Verfügung gestellt. Einige Beleuchtungsmöglichkeiten sind:
•
Advanced lighting Model mit folgenden Komponenten: Specular, Diffuse,
Ambient und Emissive.
•
Oberflächen Eigenschaften (Surface Properties)
•
Unendlich weit entfernte Lichtquellen (Infinite Light Sources)
•
Lokale Lichtquellen (local)
•
Transparenz (Transparency)
•
Hidden Surface Removal
•
Anti-Aliasing
•
Texture-Mapping. Diese Gruppe beinhaltet:
•
Eine Vielzahl von Texturformaten in 16, 32 oder 48 Bit Tiefe.
•
Textur Filterung
•
Globale Texturen
•
Verschiedene Möglichkeiten zur Bearbeitung einer Textur, wie Add, Replace,
Blend usw.
•
Korrektur der Perspektive (Perspective Correction)
•
Video to Texture
•
3D-Texturen
•
Bild Operationen (Image Operations): Zu dieser Gruppe gehören Konvolutionen,
Histogramme und andere Funktionen.
•
Atmospheric Effects wie Dunst- und Nebelfunktionen
•
Offscreen Rendering
1. Whitepapers auf www.sgi.com und sgi.webguide.nl
Hinweise zur Programmierung unter techpubs.sgi.com
58
5 Die Onyx2 von SGI
•
Weitere Features zur Darstellung des Bildes, wie:
•
Multi-Channel Display Generator
•
Stereoskopische Bilder
•
Digital Video Multiplexer - DPLEX1
•
Digital Video Option
•
Graphics to Video Option
1. Siehe auch Abschnitt 5.1.2.
6
6Ultra 1 von SUN
Bereits 1995 stellte SUN Microsystems die neue Ultra-Produktelinie vor, welche aus den drei
Modellen Ultra 1 140/170 und Ultra 2 besteht. Die Rechner werden mit UltraSPARC-I1 Prozessor ausgestattet, wobei die Ultra 1 nur einen und die Ultra 2 maximal zwei Prozessoren aufnehmen kann. Diese SPARC-Prozessorfamilie markiert den Übergang von der Welt der 32 Bit
Applikationen in die 64 Bit Ära. Ein zentrales Ziel von SUN war die Aufrechterhaltung der
Binärkompatibilität zur alten V8 Generation mit 32 Bit. Die neueren Prozessoren der V9 Generation beeinhalten zusätzliche 25 Single-Cycle-Instruktionen, welche besonders für die Abarbeitung von Multimedia-Datenströmen - wie etwa Echtzeit MPEG-Dekodierung - und
Bildverarbeitung eingesetzt werden können. Diese Instruktionen werden unter dem Begriff
Visual Instruction Set (VIS) zusammengefasst.
Eine weitere UltraSPARC-Neuerung betrifft die Ablösung des MBus2 durch den UPA3 Crossbar-Switch, welcher die wichtigsten Systemkomponenten miteinander verbindet. Dank dieser
High-Speed Verbindung sind Transferraten von durchschnittlich 600 MB/Sec und 1.3 GB/Sec
1. Die Architektur wird durch die SPARC Definition V9 beschrieben.
2. Multi-Bus
3. UPA = UltraSPARC Port Architecture.
59
60
6 Ultra 1 von SUN
für Peak-Transfers realisierbar. Die Creator3D Graphikhardware ist direkt mit einem Port des
UPA verbunden. Die restlichen Anschlüsse verbinden das Prozessormodul, den Hauptspeicher
und die I/O Bridge mit dem Crossbar-Switch.
Wie bereits erwähnt, wurden die Ultra Rechner 1995 auf dem Markt eingeführt. In den vergangenen Jahren hat SUN diese Reihe laufend ergänzt und so umfasst sie heute sieben Ultra
Modelle.
Leider standen zu Testzwecken nur die Ultra 1 Maschinen zur Verfügung (Obwohl uns von
SUN zuerst noch eine stärkere Ultra 60 versprochen wurde). Die nachfolgende Tabelle listet die
verschiedenen Ultra-Modelle auf.
Elite3D m6
Elite3D m3
Creator 3D
System
Unterstützte Graphiksysteme
PGX24,
on board
Prozessoren
Max.
Anzahl
Ultra 1
UltraSPARC I, V9
1
✔
✔
Ultra 2
UltraSPARC I, V9
2
✔
✔
✔
Ultra 5
UltraSPARC IIi, V9
1
✔
Ultra 10
UltraSPARC IIi, V9
1
✔
✔
✔
✔
Ultra 30
UltraSPARC II, V9
1
✔
✔
✔
✔
Ultra 60
UltraSPARC II, V9
2
✔
✔
✔
✔
Ultra 450 UltraSPARC II, V9
4
Tabelle 6.1: Die Ultra-Modelle in einer Übersicht.
Creator
Architektur
✔
✔
6.1 Systemarchitektur der Ultra1
61
6.1 Systemarchitektur der Ultra1
In diesem Abschnitt wird auf den UPA Crossbar-Switch und die speziellen VIS Instruktionen
des UltraSPARC Prozessors eingegangen. Die grundsätzliche Erklärung der Funktionsweise
eines Crossbar-Switches wurde bereits im Abschnitt 4.2.2 vorgenommen.
Abbildung 6.1:
Der Aufbau der SUN Ultra 1
62
6 Ultra 1 von SUN
6.1.1 Der UPA Crossbar-Switch
Als Einstieg soll hier noch einmal die Motivation zur Verwendung eines Crossbar-Switches am
konkreten Beispiel des SUN Rechners aufgezeigt werden.
Superskalare Prozessoren - wie der UltraSPARC I - erfordern einen schnellen Datenaustausch
mit dem Speicher, insbesondere weil sie mehrere Befehle pro Takt verarbeiten können. Ein weiterer Engpass entsteht bei symmetrischen Multiprozessorsystemen (SMP), da alle Prozessoren
gleichzeitig auf den Speicher zugreifen können. So war bei den älteren SPARC Rechnern der
MBus als zentraler Systembus die Basis für symmetrisches Multiprocessing. Der MBus wurde
deshalb von der Ultra Port Architecture (UPA) abgelöst.
Die SMP-Technologie basiert auf einem gemeinsam benutzten Speicher. Bei acht Prozessoren
bedeutet dies, dass der Speicher die achtfache Datenmenge pro Sekunde verkraften muss wie
ein gleichstarker Einprozessorrechner. Die Übertragung der Daten vom Prozessor zum Speicher
sollte demnach so effizient wie nur möglich ausgeführt werden können.
Allgemein betrachtet stösst man mit der Bus-Technologie auf zwei Probleme. Erstens ergibt
sich das Problem der konstanten Ausbreitungs-Geschwindigkeit der Bussignale, dadurch wird
mit zunehmender Buslänge die Signallaufzeit immer grösser. Innerhalb einer Bus-Taktperiode
müssen die Signale den gesamten Bus traversieren, damit alle Bus-Komponenten am Ende der
Taktperiode auch das gleiche Datum sehen. Man kann demnach einen langen Bus nicht beliebig
hoch takten. Aus diesem Grunde ist der Systembus, welcher die CPU mit dem Hauptspeicher
verbindet, typischerweise ein kurzer und hoch getakteter Bus1.
Zweitens wird der Bus viel länger belegt, als es für die effektive Datenübertragung notwendig
wäre. Konkret spielt sich die Übertragung eines 32 Byte Datenblockes folgendermassen ab:
•
Phase 1: Zuerst findet die Bus Arbitrierung statt, das heisst es wird geregelt welcher
Teilnehmer den Bus für seine Kommunikation beanspruchen kann.
Dauer: mind. 3 Takte
•
Phase 2: Hier wird die Daten-Blockanfangsadresse gesendet und anschliessend auf den
Datenübertragunsmodus umgeschaltet.
Dauer: 2 Takte
•
Phase 3: Die Systemsteuerung liest die angeforderten Daten aus dem Hauptspeicher.
Das erste Datenwort (64 Bit) benötigt 7 Takte, alle weiteren folgen unmittelbar mit der
Phase 4.
•
Phase 4: Die gelesenen Daten werden vom Speicher zum Prozessor übertragen.
Dauer: 6 Takte.
Von den insgesamt 18 Takten fand auf dem MBus nur während 8 Takten - entspricht 44% tatsächlich eine Datenübertragung statt. Die restliche Zeit ist der Bus belegt und steht nicht für
die Kommunikation der anderen Komponenten zur Verfügung.
1. Es gibt noch weitere Möglichkeiten, um den Datentransfer über den Bus effizienter zu machen, dazu
zählen unter anderem: Vergrösserung der Busbreite, Burst-Modes, Split-Transactions, ein oder mehrere Busmaster.
Diese Thematik wird ausführlich im Manuskript zur Vorlesung Digitaltechnik und Rechnerstrukturen
bahandelt. Zu beziehen unter http://www.tik.ee.ethz.ch/tik/education/lectures/DRS/DRS.html
6.1 Systemarchitektur der Ultra1
63
Genau hier setzt nun das Konzept der UPA an, um eine bessere Ausnutzung zu erreichen. Der
Bus sollte effektiver arbeiten, also die eigentliche Datenübertragung leisten und nicht durch
Wartezeiten das System blockieren.
Über die vier Ports sind folgende Komponenten mit dem Crossbar-Switch verbunden:
•
Das Prozessor-Modul
•
Der Hauptspeicher
•
Das Graphiksubsystem und
•
Die I/O Bridge, welche die Verbindung zum SBus und anderen peripheren Komponenten herstellt.
Bei den Ports spielt die Unterscheidung in Master und Slave eine wichtige Rolle. Nur erstere
können eine Übertragung anstossen, während letztere lediglich darauf reagieren können. Der
Prozessor kann beides, hingegen sind beispielsweise die Graphiksubsysteme reine Slaves. Da
beim MBus die Übertragung der Adressen deutlich weniger Takte beansprucht als die Datenübertragung, gruppiert die UPA jeweils einige Signalleitungen zu einem kurzen Adressbus, der
hoch getaktet werden kann1. Der Hauptspeicher und das Prozessor-Modul sind mit getrennten
Daten- und Adressleitungen mit dem UPA Crossbar-Switch verbunden (Siehe Abbildung 6.1).
Diese Aufteilung in unabhängige Daten- und Adresspfade, stellt einer der wesentlichsten Vorteile der UPA genüber dem MBus dar. Ein weiteres wichtiges Merkmal der UPA-Technologie
ist die Verwendung von grossen Blöcken bei der Datenübertragung.
Ebenso wie bei den Octane und Onyx2 Crossbar-Switches kann der UPA parallel mehrere Verbindungen aufrecht erhalten. An dieser Stelle sei auf die hohen technischen Anforderungen hingewiesen, denn nur schon beim Einprozessorsystem der Ultra 1, müssen 504 Pins2 geschaltet
werden. Ausserdem sollte die Durchlaufverzögerung unter 10 ns liegen und die Zeit für den
Verbindungsaufbau (Switching) nur geringfügig darüber!
6.1.2 Der Prozessor: UltraSPARC I Version 9
Wie bereits in der Einleitung zu diesem Abschnitt erwähnt, sollen hier vor allem die
VIS Instruktionen beschrieben werden. Für eine ausführliche Dokumentation der SPARC
Architektur wird auf die Referenz von SUN verwiesen3.
Nachfolgend werden einige Highlights der UltraSPARC I Architektur aufgelistet:
•
64 Bit Architektur
•
9-stufige Pipeline, welche maximal 4 Instruktionen pro Clock-Zyklus ausführen kann
•
Je 16 KB Daten- und Intruktionscache
•
Second Level cache mit minimal 512 KB und maximal 4 MB
•
Eingebaute Multiprozessorunterstützung
•
Graphikunterstützung durch VIS
1. In der Regel die halbe Prozessor-Taktfrequenz.
2. 256 + 32 Bit für die Speicher Verbindung, 128 + 16 Bits zum Prozessor und 64 + 8 Bit zur I/O Bridge.
3. Gute Dokumentationen unter www.sun.com.
64
6 Ultra 1 von SUN
Im Unterschied zum UltraSPARC I Prozessor, kann der UltraSPARC II wesentlich höher getaktet werden.
Das Visual Instruction Set (VIS) umfasst insgesamt eine Menge von 25 Instruktionen, welche
innerhalb eines Prozessortaktes ausgeführt werden können. Eines der Designziele war die
Dekodierung eines MPEG2-Datenstromes mit 30 Bildern pro Sekunde. Zur Dekomprimierung
sind ziemlich aufwendige Pixeloperationen notwendig, welche dank der VIS Unterstützung
massiv beschleunigt werden.
Die Register des Prozessors werden so aufgeteilt, dass die Integer-Register die Bildadressen
enthalten und die Floatingpoint-Register für die Manipulation der Daten zur Verfügung stehen.
Somit kann der Prozessor alle verfügbaren Register einsetzen und den Durchsatz maximieren.
Die VIS Instruktionen lassen sich wie folgt in vier Kategorien einteilen:
•
Pixel Format/Conversion
Zu dieser Gruppe von Instruktionen gehören Pixel Formatierungs- und KonvertierungsInstruktionen. Durch die speziellen Pixel Expand, Pack und Merge Instruktionen lassen
sich typische Pixelmanipulationen mit nur einer Instruktion ausführen.
•
Image Processing
Die Instruktionen in dieser Kategorie beschleunigen folgende Berechnungen:
•
•
•
Skalierung und Rotation von Bildern
•
Pixel Interpolationen
•
Filterberechnungen
•
Alpha blending
•
Volumetric rendering
Real-time Video Kompression
Mit der Verwendung dieser Instruktionen ist die Echtzeit Kompression und Dekompression von Bildatenströmen möglich. Folgende Standards werden unterstützt:
•
H.261
•
JPEG
•
MPEG1 und MPEG2
Beschleunigung des Datentransfers und Beschleunigung von Animationen
Die VIS Instruktionen können von den Block Load/Store Features der UltraSPARC
Architektur profitieren. Diese gestatten direkte 64 Bytes Load und Stores vom Prozessor in den Hauptspeicher und vom Hauptspeicher in den Framebuffer des Graphiksystems.
6.2 Graphiksysteme
65
6.2 Graphiksysteme
In diesem Abschnitt wird das Graphiksystem der SUN Ultra 1 beschrieben. Unter 6.2.2 wird zur
Übersicht noch das Nachfolgemodell - die Elite3D- vorgestellt1.
Die beiden Abbildungen 6.2 und 6.3 stellen Graphiksysteme in einer Übersicht dar.
6.2.1 SUN Ultra 1 mit Creator 3D
Das Creator3D Graphiksystem wird direkt mit dem UPA Crossbar-Switch verbunden, wobei
die Datenbreite 64 Bit bis hin zum Framebuffer umfasst. Die Kernkomponenten der Creator3D
sind nachfolgend aufgelistet und werden anschliessend in den weiteren Abschnitten näher
erläutert.
•
Framebuffer Controller:
Dieser ist einerseits für die Verbindung mit dem UPA und zum anderen für die
Beschleunigung des Rendering verantwortlich.
•
3D-RAM
•
Pixel Processing
Der Framebuffer Controller stellt die erste Stufe der 3D-Graphik Rendering-Pipeline dar. Es
werden verschiedene Berechnungen durchgeführt, welche nachfolgend genauer beschrieben
werden. Die Pipeline unterstützt eine Menge von Graphikprimitiven, welche in der Tabelle 6.2
zusammengefasst sind2.
Graphikprimitive
Attribute
Punkt
Anti-Aliasing, Alpha blending
Bresenham Linien
Pattern
Bresenham Polygone
Pattern
DDA Linien
Pattern, Anti-Aliasing, Depth Cue, Alpha Blending
DDA Dreiecke
Shade, Z-Buffer, Pattern, Depth Cue, Alpha Blending
Tabelle 6.2: Graphikprimitiven der Rendering-Pipeline2
Als Alternative zur Rendering-Pipeline existiert auch ein direkter Port, welcher eine schnelle
Zwei-Weg Schnittstelle zur Verfügung stellt. Auf diesem Weg können reine Pixeldaten (ohne
Geometrie) direkt in den Framebuffer geschrieben werden, was besonders für DMA Übertragungen sehr nützlich und effizient ist. Die Pixel aus der Rendering-Pipeline müssen dagegen
zuerst noch den Pixel Processing Block passieren.
In der Pixel Processing Stufe, innerhalb des Framebuffer-Controllers, können verschieden
Operationen ausgeführt werden. Nachfolgend seien einige Beispiele genannt:
1. Whitepapers unter www.sun.com.
2. Quelle: Creator Graphics Technology, Technical Whitepaper; www.sun.com.
66
6 Ultra 1 von SUN
•
Depth Cueing
•
Alpha Blending
•
Transparenz
•
Anti-Aliasing
•
Z-Buffering (Hidden Surface Removal)
•
Raster Operationen
•
Viewport, Window ID, Stencil, Alpha Clipping
Das 3D-RAM1 stellt eine Besonderheit unter den Framebuffer-Technologien dar. Typischerweise liegt der Flaschenhals von 3D-Graphikhardware bei der Rate, mit welcher die Pixel in
Frame- und Z-Buffer geschrieben werden können. Die Pixelfillrate war bei vielen GraphikAlgorithmen der limitierende Leistungsfaktor.
In diesem 3D-RAM Chip wurde das günstige, aber langsamere DRAM mit einem schnellen
SRAM Cache kombiniert. Als Resultat entstand ein Chip, welcher 3D-Operationen etwa zehnmal schneller ausführen kann als dies mit konventionellem Video-RAM möglich ist.
Neben dem eigentlichen Speicher befindet sich auch noch eine ALU innerhalb dieses 3DRAM’s. Die ALU Funktionen lassen sich in drei Hauptgruppen aufteilen:
•
Depth-Unit:
Z-Buffer Vergleiche
•
Alpha-Unit:
Alpha-Blending, Anti-Aliasing, Raster Operationen
•
Stencil-Unit:
Berechnet OpenGL Stencil Funktionen.
Die Creator Graphiksysteme haben keine spezielle Hardwareunterstützung für das TextureMapping und auch keinen separaten Texturspeicher. Die gesamten Texturen werden stattdessen
im konventionellen Hauptspeicher abgelegt. Der Verzicht auf diese Hardwareunterstützung hat
natürlich einen Leistungsrückgang zur Folge. Dennoch müssen die Berechnungen nicht zu hundert Prozent in Software ausgeführt werden. Die Creator Graphiksysteme unterstützen das
Rastern der Bilder mit der Verwendung der speziellen VIS Instruktionen. Besonders nützlich
sind die VIS Instruktionen beispielsweise für bilineare Interpolation und die Berechnung von
Texturoperationen.
1. Gemeinsame Entwicklung von SUN Microsystems und Mitsubishi Electronics.
Vorgestellt an der SIGGRAPH 1994 als FBRAM.
6.2 Graphiksysteme
Abbildung 6.2:
67
SUN Creator3D Graphiksystem
68
6 Ultra 1 von SUN
6.2.2 Elite 3D m3/m6
UPA
In der nachfolgenden Abbildung ist der schematische Aufbau der Elite3D Graphiksubsysteme
dargestellt, wie sie in den neueren SUN Ultra Modellen zum Einsatz kommen.
UPA Interface
AFB
Command
Nur Elite3D m6
AFB
Float
AFB
Float
AFB
Float
AFB
Float
AFB
Float
AFB
Draw
AFB
Float
AFB
Draw
3D RAM
3D RAM
3D RAM
3D RAM
3D RAM
3D RAM
RAM DAC
Monitor
Abbildung 6.3: SUN Elite3D Graphiksystem
3D RAM
3D RAM
3D RAM
3D RAM
3D RAM
3D RAM
7
7Zwei PC Systeme
In diesem letzten Abschnitt werden den SGI und SUN Maschinen zwei handelsübliche PCSysteme für einen Vergleich gegenübergestellt. Es drängt sich natürlich sofort die Frage auf, ob
die beiden PC an die Leistung der Graphikrechner herankommen.
Um diese Frage beantworten zu können, standen zu Testzwecken zwei Dell Computer - einer
mit Intel PentiumPro, der andere mit PentiumII Prozessor - zur Verfügung. Beide Systeme
sind mit der FireGL1000 Pro von Diamond ausgestattet und arbeiten unter WindowsNT 4,
Service Pack 3.
7.1 Systemarchitektur
Die Systemarchitektur dieser Maschinen entspricht der klassischen Bauweise eines PC: Um
einen zentralen (PCI-)Bus sind die einzelnen Komponenten angeschlossen und der Systembus
verbindet den Prozessor mit dem Hauptspeicher. Ausser der Verwendung des Accelerated
Graphics Port (AGP) im PentiumII-System sind keine weiteren Besonderheiten der Systemarchitektur zu nennen.
7.1.1 AGP von Intel
Bereits 1996 veröffentlichte Intel einen detaillierten Entwurf für den Accelerated Graphics
Port (AGP). Diverse Firmen - sowohl aus der Hardware- und als auch der Softwarebranche unterstützen mittlerweile die Weiterentwicklung des AGP. Hinter dem AGP verbirgt sich ein
Boardsteckplatz, welcher in erster Linie für Graphikerweiterungen bestimmt ist und die Leistung des heute eingesetzten PCI-Bus um den Faktor vier übertrifft. Der AGP ist demnach kein
neues Bussystem, sondern ein zusätzlicher Port für eine Punkt-zu-Punkt-Verbindung zu einer
Graphikkarte. Der AGP ist weder als Nachfolger noch als Ersatz für den PCI-Bus konzipiert.
Die Hauptmotivation für die Entwicklung des AGP war die Knappheit an Ressourcen auf dem
PCI-Bus, insbesondere erreichen leistungsstarke 3D-Graphikboards die Kapazitätsgrenze des
Busses.
Gleichzeitig mit der Einführung des PentiumII Prozessors, kamen auch die ersten AGPSysteme auf den Markt1.
1. Die älteren PentiumPro Systeme können nicht mit dem AGP zusammen betrieben werden.
69
70
7 Zwei PC Systeme
In praktisch allen Graphikanwendungen werden Darstellungen mit texturierten Oberflächen
benutzt. Die Verwendung solch hochwertiger Texturen stellt allerdings enorme Anforderungen
an die Graphikhardware. Um texturierte Szenarien in akzeptabler Zeit aufbauen zu können,
müssen bei den meisten Systemen alle Oberflächeninformationen auf dem Graphikboard abgespeichert werden. Bessere Graphikboards verwenden deshalb einen eigenen Texturspeicher.
Der entscheidende Nachteil solcher Graphikboards liegt in deren Preis, da der Texturspeicher
einen grossen Anteil an den Produktionskosten und somit auch am Verkaufspreis hat. Verschafft man nun der Graphikkarte einen schnellen Zugriff zum Hauptspeicher, so müssen diese
Texturen nicht mehr lokal gehalten werden. Vor allem für den Consumer-Markt sind kostensparende Versionen der Graphikboards äusserst interessant.
Die Technik des AGP
Die PCI-Spezifikation1 wird beim AGP um neue Protokolle und neue Transfermodi ergänzt.
Die Datenübertragung erfolgt nach wie vor über einen 32-Bit breiten Bus, welcher mit 66 MHz
arbeitet. Im Speziellen x2-Mode finden Datenübertragungen auf beiden Flanken des 66-MHzTaktes statt, demnach mit einer Rate von 133 MHz. Es ergibt sich daraus eine theoretische
Übertragungsrate von 533 MBytes/sec.
Bei allen AGP-Systemen ist die Graphikkomponente grundsätzlich der Busmaster, das heisst
nur sie kann Lese- und Schreiboperationen initiieren. Die Core-Logic beziehungsweise der
AGP-Chipsatz ist der Slave. Seine Aufgabe ist es, in den Lesezyklen Daten aus dem Hauptspeicher abzurufen und über den AGP bereitzustellen. Während eines Schreibzyklus liefert dagegen
die Graphikkomponente die Daten an den Chipsatz, welcher sie anschliessend in den Hauptspeicher schreibt. Entscheidend ist, dass die Datenströme auf dem AGP weder unterbrochen
noch wiederholt werden können. Aufeinanderfolgende Daten werden gesendet, ohne dass der
Empfang der vorangehenden bestätigt wurde. Dank dieser Pipeline-Mechanismen, liegt die tatsächlich erzielte Übertragungsrate nahe an der theoretischen.
Ein AGP Transfer hat eine Länge zwischen 8 und 256 Bytes und wird entweder aus den sogenannten read/write data queues in der Core-Logic, oder aus einem der AGP Devices bedient.
Die Anforderung von Transaktionen und ihre eigentliche Ausführung sind zeitlich getrennt. Für
die Verwaltung der Anforderungen gibt es Warteschlangen im AGP-Chip, welche als
read/write request queues bezeichnet werden. Für die Bearbeitung der High-Priority Anforderungen stehen eigene Warteschlangen zur Verfügung, sodass die maximal tolerierte Latenz
eingehalten werden kann.
Wie bereits erwähnt, hat Intel den AGP auf der PCI-Spezifikation aufgebaut und somit ist das
PCI-Protokoll in den AGP-Spezifikationen enthalten. Für die Übertragung der AGP-Signale
wurde die Anzahl der PCI-Steuerleitungen erweitert. Zu den neuen Leitungen gehört ein eigener Bus für Kommandos und Adressen, welcher in der AGP-Terminologie SBA-Bus2 genannt
wird. Er soll verhindern, dass der Datenbus während der Kommandophase blockiert wird - ein
Effekt, der sich beim PCI-Bus oft nachteilig auf die Effizienz auswirkt. Über den SBA-Bus
kann die AGP Core-Logic während laufender Datentransfers neue Transaktionen anmelden und
in die Warteschlangen einfügen lassen. Die Nutzung des SBA ist allerdings nicht verbindlich,
denn ein AGP-Device kann Kommandos auch über den Datenbus schicken.
Ein Kompromiss zwischen Effizienz und Aufwand ist der Verzicht auf die Cache-Kohärenz der
AGP-Daten. Da der grösste Anteil der AGP-Aktionen aus Lesezugriffen besteht, sind aufwen-
1. Revision 2.1
2. 8 Bit breiter Bus, welcher auch als Side Band Port bezeichnet wird.
7.1 Systemarchitektur
71
dige Mechanismen für ein Cache-Snooping1 nicht implementiert worden. Sollte bei Schreiboperationen dennoch Cache-Kohärenz erforderlich sein, kann man auf bewährte
Softwaretechniken oder PCI-Transaktionen zurückgreifen.
Mit dem AGP steigen auch die Anforderungen an den Hauptspeicher. Nach der CPU und den
PCI-Mastern2 ist der AGP die dritte Quelle für Speicherzugriffe!
In der Abbildung 7.1 ist der schematische Aufbau des AGP dargestellt.
Abbildung 7.1: Der AGP von Intel.
1. Es gibt zwei grundlegende Cache-Kohärenz-Protokolle: Directory-Based und Snooping. Ersteres
wird z.B. in der Onyx2 eingesetzt. Eine Erklärung dieser beiden Protokolle befindet sich in [1, Kapitel
8].
2. Ein PCI-System kann mehrere Bus-Master haben. Details im Manuskript zur Vorlesung Digitaltechnik und Rechnerstrukturen.
Zu beziehen unter http://www.tik.ee.ethz.ch/tik/education/lectures/DRS/DRS.html
72
7 Zwei PC Systeme
7.1.2 Die Prozessoren
In den Dell Systemen kommen zum einen der PentiumPro und zum anderen ein PentiumII
zum Einsatz. Letzterer ist mit der neueren Multimedia Extensions (MMX) Technologie ausgestattet, welche einen direkten Einfluss auf die Graphikleistung hat.
Wie bereits in den vorangehenden Kapiteln wird die Prozessorarchitektur nicht weiter erläutert1.
Der PentiumPro
Da dieser Prozessor noch keine Unterstützung für die MMX Technologie hat, wird an dieser
Stelle nur eine kurze Zusammenfassung der Features des PentiumPro aufgelistet.
•
Superskalare Mikro-Architektur. Es können pro Clock-Zyklus zwei Instruktionen ausgeführt werden.
•
64 Bit breiter externer Bus
•
5-stufige Pipeline
•
Multiprozessor Unterstützung für bis zu vier Prozessoren
•
Separates Daten- und Instruktionscache, je 8 KB
•
Bis zu 1 MB Second Level Cache
Der PentiumII mit MMX
Als Weiterentwicklung des Pentium Prozessors realisierte Intel den PentiumII. Das wichtigste
neue Feature dieses Prozessors ist - zumindest aus der Sicht der Graphikanwendungen - die
MMX Technologie.
Dank MMX kann eine Anwendung auf folgende zusätzliche Ressourcen zugreifen:
•
8 MMX Register, 64 Bit breit
•
4 MMX Datentypen
•
Eigener MMX Instruktionssatz
Die MMX Instruktionen können direkt mit den MMX Registern arbeiten. Der eigentliche Trick
der MMX Register liegt darin, dass physikalisch gesehen die Floating Point Register des Prozessors verwendet werden. Es wird also einfach ein Alias von den MMX auf die FP Register
gemacht. Dies gilt aber nicht für die General Purpose Register, welche gewissermassen “parallel” zu den MMX Registern verwendet werden können2. In den Applikationen, welche Graphikberechnungen durchführen, wird in den meisten Fällen nur mit Ganzzahlarithmetik
gearbeitet, sodass dank der MMX Technologie eine Leistungssteigerung erreicht werden kann.
Die MMX Datentypen beinhalten zum einen das 64 Bit quadword und zum anderen die soge-
1. Informationen unter www.intel.com
2. Die FP Register können natürlich trotzdem angesprochen werden, nur ist im Prinzip ein ContextSwitch zwischen der MMX- zur FP-Verarbeitung notwendig.
7.1 Systemarchitektur
73
nannten packed data types. Letztere erlauben die parallele Verarbeitung auf mehreren Bytes
oder Wörtern. Die MMX Datentypen werden immer als 64 Bit Block vom und zum Hauptspeicher transportiert.
Der MMX Instruktionssatz umfasst insgesamt 57 Instruktionen, welche sich in folgende Gruppen einteilen lassen:
•
Datentransfer
•
Arithmetik
•
Vergleiche
•
Konvertierung
•
Logik
•
Shift Instructions
•
Empty MMX State (EMMS) Instruction
Hinter allen Instruktionen steckt die Idee, dass auf mehreren Bytes innerhalb eines packed data
type parallel gearbeitet werden kann.
Die MMX Technologie verwendet die SIMD1 Technik, um arithmetische und logische Operationen auf den Datentypen auszuführen. Diese Technik erlaubt es, die gleiche Instruktion auf
verschiedenen Datenelementen parallel arbeiten zu lassen. Im Geometry Subsystem der
Indigo2-Graphikhardware kommt dieselbe SIMD-Technik zum Einsatz, siehe hierzu Abschnitt
2.3.3.
Dank der MMX Technologie können verschiedene Algorithmen aus der Multimediawelt direkt
implementiert werden2.
1. Single Instruction stream, multiple data streams.
2. Eine Sammlung befindet sich unter: www.intel.com/design/pentiumii/manuals
74
7 Zwei PC Systeme
7.2 Graphiksystem
Wie bereits erwähnt, handelt es sich bei der eingesetzten Graphikkarte um die FireGL1000 Pro
der Firma Diamond1. Das Kernstück der Karte bildet der Permedia 2 Chip der Firma 3Dlabs2.
Es handelt sich hier um einen hochwertigen 2D/3D-Graphikprozessor.
Die öffentlich zugänglichen Informationen zur FireGL1000pro beschränken sich leider auf
reines Marketing und enthalten sehr wenig technische Details. Aus diesem Grunde kann hier
weder ein schematischer Aufbau der Karte, noch ein logisches Datenflussdiagramm dargestellt
werden.
Der Permedia 2 Graphikchip
Der Permedia 2 Graphikchip wird von Texas Instruments gefertigt und trägt die Bezeichnung
TVP4020. Dieser Chip hat einen integrierten Geometry-Setup-Prozessor zur Entlastung der
Haupt-CPU. In der Abbildung 7.2 ist das Blockdiagramm des TVP4020 dargestellt.
Dieser Chip unterstützt eine vielzahl von Graphic-Features; einige wichtige werden kurz
genannt:
•
MPEG-2 Dekodierung
•
Farbraumkonvertierungen YUV in RGB
•
Video Strom Bus für simultanes externes Video I/O
•
Hardwareunterstützung für
•
Texture-Mapping
•
Double Buffering
•
16 Bit Z-Buffering in
•
Bilineare Filterung
•
Dithering
•
Anti-Aliasing
•
Alpha-Blending
•
Gouraud- und Flat Shading
•
Beschleunigt alle OpenGL-, Direct3D- und Heidi- Applikationen
•
Integrierter Geometrie Pipeline Setup Prozessor
•
True Color (24 Bit) bis 1600x1200
1. Informationen unter: www.diamondmm.com und firegl.diamondmm.com
2. Informationen unter: www.3dlabs.com/products
7.2 Graphiksystem
Abbildung 7.2:
75
Blockdiagramm des Texas Instruments TVP4020
76
7 Zwei PC Systeme
Zweiter Teil
LEISTUNGSANALYSE UND
BENCHMARKING
77
78
.
8
8Der Viewperf Benchmark
Viewperf [17] ist ein portables OpenGL1 Performance Benchmark Programm, welches in C
geschrieben wurde. Zurzeit, im Januar 1999, ist die Version 6.1 aktuell. Ursprünglich wurde es
von IBM entwickelt, erweitert wurde es dann von SGI, Digital und anderen.
Viewperf ist sehr flexibel zum Evaluieren der OpenGL Performance von Computer Systemen.
Derzeit gibt es Implementationen für diverse Plattformen, zum Beispiel für UNIX, Linux, Windows NT, Windows 95 und OS/2.
Viewperf wurde 1994 in die Standard Performance Evaluation Corporation (SPEC) eingegliedert, welche sich zur Aufgabe macht, Benchmarks für Computer zu unterhalten. Die OpenGL
Performance Characterization (OPC) Projektgruppe der SPEC publizierte Viewperf als ersten
OpenGL Benchmark der Graphics Performance Characterization (GPC) Gruppe. Erste Messungen wurden Ende 1994 im The GPC Quarterly publiziert.
Die OPC Gruppe unterhält den Quellcode von Viewperf, der für alle über Internet erhältlich ist.
8.1 Einführung
Wichtig bei jedem Benchmark ist zu wissen, für welche Zwecke er gemacht wurde. Die Gefahr
ist gross, dass der Benutzer mit einem Benchmark Programm etwas machen will, für das es
nicht entwickelt wurde. Das ist mit Viewperf nicht anders. Darum wird hier ein näherer Blick
auf Viewperf geworfen.
1. Open GL = Open Graphics Library, ein von Silicon Graphics Inc. entwickelter Graphik Standard
79
80
8 Der Viewperf Benchmark
Viewperf misst die 3D Rendering Performance eines Systems. Dazu wird das OpenGL API1
benutzt. Die OPC Gruppe arbeitet mit unabhängigen Software-Entwicklern (ISV: engl. Independent Software Vendors) zusammen, um Tests, Datensätze und Gewichte zusammenzustellen, welche Viewsets genannt werden. Jedes Viewset repräsentiert den Graphik Rendering Mix
einer realen 3D Anwendung. Die ISVs, welche die Viewsets entwickelt haben, bestimmen für
jeden Test, der im Bericht aufgeführt wird, ein Gewicht, das die Wichtigkeit des Tests in der
ganzen Anwendung wiedergibt.
8.1.1 Charakteristiken von Viewperf
Viewperf liegt auf der Homepage der OpenGL Performance Characterization Group zum
Download bereit. Der Quellcode ist dazu da, Leistungsvergleiche diverser Hardware Plattformen anzustellen. Viewperf ist unter vielen Betriebssystemen lauffähig, unter anderem unter
Windows NT, UNIX und OS/2. Ebenfalls werden die gängigsten Prozessoren unterstützt, so zum
Beispiel Alpha, Intel, MIPS und PowerPC. Als Window Umgebungen werden sowohl X als
auch Windows unterstützt.
Die Datensätze, die in Viewperf und in den OPC Viewsets verwendet werden, wurden für reale
Anwendungen entwickelt. Die Auswahl der Modelle und Parameter wird von unabhängigen
Software-Entwicklern und von Graphiksoftware-Benutzern bestimmt.
Die Zahlen, welche die Performance angeben, werden in der Einheit “frames per second”2
angegeben, was für den Benutzer einfach nachzuvollziehen ist. Für jeden Rendering Test in
einem Viewset wird eine Zahl ausgegeben.
Viewperf bewertet eine grosse Anzahl von OpenGL Befehlen, Operationen und Modi. Unter
anderem kann Texture Mapping, Alpha Blending, Fogging, Anti-Aliasing, Depth Buffering und
Lighting bewertet werden. Das Zeichnen der folgenden OpenGL Primitiven kann gemessen
werden: points, lines, line_strips, line_loops, triangles, triangle_strips, triangle_fans, qauds und
polygons. Im Anhang werden diese Primitiven beschrieben.
In Viewperf können Bildschirmschnappschüsse aufgenommen werden. Diese werden im PNG3
oder PPM4 Format abgespeichert. Die Schnappschüsse dienen der Qualitätsanalyse und der
Verifikation des Benchmarks.
In den Tests von Viewperf werden folgende Faktoren nicht miteinbezogen.
•
Effekte, die durch das Wechseln der Primitiven hervorgerufen werden.
•
Eingabe Effekte in der Event Loop.
•
Benutzerschnittstellen Rendering und Management.
•
Komplexe Bewegungen bei verschiedenen Modellen.
•
Betriebssystemeffekte, wie zum Beispiel Interrupts.
•
Multi-Context, Multi-Window Effekte.
1. API = Application Programming Interface, Programmierungsschnittstelle
2. dt. Bilder pro Sekunde. Es wird hier die englische Schreibweise beibehalten (Abkürzung fps), da sie
sehr verbreitet ist.
3. Abkürzung für Portable Network Graphics (PNG, pronounced “ping”).
4. Abkürzung für Portable PixMap (PPM). Dieses Format ist ein Teil der Extended Portable Bitmap Utilities (PBMPLUS).
8.2 Die Viewsets
81
Viewperf ist nicht systemunabhängig. Wenn der Prozessor oder der Bus an seine Leistungsgrenzen stösst, was bei einem herkömmlichen PC System schnell der Fall ist, wird nicht mehr
nur die Performance des Graphiksubsystems berechnet, sondern auch die des ganzen Systems.
8.1.2 Das geometrische Mittel
In Viewperf wird das gewichtete geometrische Mittel dazu verwendet, um pro Viewset eine
Zahl zu erhalten, welche eine Aussage über die Gesamtbewertung der darin enthaltenen Tests
macht.
Folgende Formel zeigt die Berechnung des Mittels:
n
∏ (( frames ⁄ sec ond )i)
wi
i=1
Dabei ist n die Anzahl Tests und w das jeweilige Gewicht des Tests, als Zahl zwischen 0.0 und 1.0 dargestellt: 25%
entspricht 0.25
Das gewichtete geometrische Mittel für CDRS-05 ist zum Beispiel:
Wgm – CDRS – 05 = test1
0.50
⋅ test2
0.20
⋅ test3
0.15
⋅ test4
0.08
⋅ test5
0.05
⋅ test6
0.02
⋅ test7
0.00
Die Tests in einem Viewset repräsentieren die häufigsten Operationen in einem Programm. Die
Gewichte geben an, in welcher Häufigkeit diese Operationen vorkommen.
Das geometrische Mittel hat die wünschenswerte Eigenschaft: "bigger is better" (grösser ist besser); d.h. je grösser die Zahl, desto besser die Performance.
Als Alternativen zum geometrischen Mittel gibt es das arithmetische Mittel oder das harmonische Mittel. Das arithmetische Mittel gäbe keine repräsentative “frames per second” Angabe.
Das normalisierte gewichtete geometrische Mittel wird oft dazu verwendet (SPECint92,
Xmark93) die Resultate gegenüber einem Referenzsystem zu vergleichen. Da wir hier aber
nicht von einem Referenzsystem ausgehen, ist es ungünstig.
Es gibt aber auch beim geometrischen Mittel Nachteile: Es kann als "Filter" fungieren. Die stärker gewichteten Tests können unter Umständen die weniger gewichteten völlig überdecken.
Dies kann zur Folge haben, dass ein ausserordentlich schlechtes Resultat in einem wenig
gewichteten Test nicht auffällt. Aus diesem Grund ist es unerlässlich, dass man auch die individuellen Resultate der einzelnen Tests betrachtet.
8.2 Die Viewsets
Die OPC Gruppe anerkennt die Wichtigkeit von Benchmarks, welche die Leistung von Systemen mit realen Programmen bewerten; man wollte keinen synthetischen Benchmark. Von
Anfang an versuchte die Gruppe Viewperf repräsentativ für den OpenGL Rendering Mix von
wichtigen Industrieanwendungen zu machen. Somit kam die Idee von sogenannten Viewsets
auf.
Ein Viewset ist eine Gruppe von individuellen Abläufen von Viewperf, die versuchen, den Graphik Rendering Mix einer richtigen Anwendung zu simulieren.
Viewsets kann jeder entwickeln. Da Viewperf anwendungsorientiert ist, muss man zuerst die
vorhandene Anwendung analysieren. Daraus muss man Datensätze zusammenstellen, die reprä-
82
8 Der Viewperf Benchmark
sentativ für die Anwendung sind und eine ähnliche Komplexität aufweisen.
Für publizierbare Resultate ist man aber beschränkt auf die Standard Viewsets. Diese werden
nicht von der OPC Gruppe entwickelt; sie werden von Firmen entwickelt, welche in der Graphiksoftwarebranche tätig sind. In der Version 6.1 von Viewperf gibt es fünf Standard OPC
Viewsets mit folgenden Abkürzungen: ProCDRS, DX, DRV, AWadvs und Light.
Die im folgenden Abschnitt beschriebenen Tests wurden auch noch mit dem älteren CDRS
Viewset durchgeführt. Die CDRS-Resultate werden immer noch publiziert, sollten aber in den
kommenden Monaten verschwinden. CDRS besitzt eine zu geringe Komplexität, welche heute
nicht mehr marktgerecht ist.
Tabelle 8.1 gibt einen Überblick über die Viewsets und ihren zugrundeliegenden Anwendungen.
Name
Vendor
Pro
CDRS
Parametric Technology Modeling und Rendering Pro/DESIGNER
(PTC)
Application for ComputerAided Industrial Design
(CAID)
7
DX
Industrial Business Ma- Scientific Data Visualiza- Visualization Data
chines (IBM)
tion and Analysis Package Explorer
10
DRV
Intergraph
10
AWadvs Alias/Wavefront
Light
Description
Based on
3D Computer Model Re- Design Review
view Package for plant design models consisting of
piping, equipment and
structural elements such as
I-beams, HVAC ducting,
and electrical raceways
# of
Tests
Integrated workstation-ba- Advanced Visualizer 10
sed 3D animation system
that offers a comprehensive set of tools for 3D modeling, animation,
rendering, image composition, and video output
Lightscape Technology Radiosity Visualization
Inc.
Application with a physically based lighting interface
Tabelle 8.1: Überblick über die Viewperf 6.1 Viewsets
Lightscape Visualization System
4
8.2 Die Viewsets
83
Tabelle 8.2 zeigt die Grösse und die Schwerpunkte der einzelnen Viewsets. Dabei ist Light mit
Abstand das komplexeste Viewset. In ProCDRS werden alle Tests im Display List-Modus
durchgeführt.
Name
Pro
CDRS
DX
DRV
AWadvs
Light
Grösse
200’000 3D-Punkte
Schwerpunkte
Wireframe-Darstellung mit geglätteten Linien
Alle Tests im Display List-Modus
texturiert
93’000 3D-Punkte
Dreiecks-Mesh
Wireframe, mit Z-Buffer
150’000 3D-Punkte
Dreiecks-Mesh
gouraud- und flat-shaded
62’000 3D-Punkte
1’100’000 3D-Punkte bzw.
1’800’000 3D-Punkte
texturiert (trilinear gefiltert)
Wireframe, unbeleuchtet, ohne Z-Buffer
farbige Wireframes
gouraud-shaded
keine Texturen
Tabelle 8.2: Grösse und Schwerpunkte der Viewsets
84
8 Der Viewperf Benchmark
8.2.1 ProCDRS - Pro/DESIGNER
Das ProCDRS Viewset ist eine aktuellisierte Version des CDRS1 Viewsets und
steht in der Version 1 zur Verfügung. Es
modelliert die Graphikoperationen von Pro/
DESIGNER, der Industrial Design Software von Parametric Technology.
Das Viewset besteht aus zehn Tests; jeder
repräsentiert einen anderen Operationsmodus von Pro/DESIGNER.
Zwei Tests benutzen ein Wireframe (Drahtgitter) Modell, alle anderen verwenden ein
Shaded (schattiertes) Modell.
Das schattierte Modell ist eine Mixtur von Triangle Strips und Independant Triangles, mit ungefähr 281’000 Eckpunkten in 4’700 OpenGL Primitiven, was ein Total von 131’000 Dreiecke
ergibt. Die ungefähre Grösse eines Dreiecks auf dem Bildschirm ist 4 bis 5 Pixel.
Das Wireframe Modell besteht nur aus Linienstreifen mit ungefähr 202’000 Ecken in 19’000
Streifen, was ein Total von 184’000 Linien ergibt.
Alle Tests laufen im Display List Modus ab. Die Wireframe Tests benutzen Anti-Aliased
Linien, da diese in Pro/DESIGNER standardmässig vorkommen. Die schattierten Tests benutzen ein Lichtquelle und zweiseitige Beleuchtung. Die Textur ist ein 512 × 512 Pixel grosses
Bild mit 24-bit Farbtiefe, was zu einer Speichergrösse von 800 KByte führt.
Test
Weight Description
1
25
Wireframe Test
2
25
Wireframe Test, walkthrough
3
10
Shaded Test
4
10
Shaded Test, walkthrough
5
5
Shaded Test with Texture
6
5
Shaded Test with Texture, walkthrough
7
3
Shaded Test with Texture, eye linear texgen (dynamic reflections)
8
3
Shaded Test with Texture, eye linear texgen, walkthrough
9
7
Shaded Test with Color per Vertex
10
7
Shaded Test with Color per Vertex, walkthrough
Tabelle 8.3: ProCDRS Tests
Weitere Informationen siehe [9].
1. Conceptual Design Rendering Software
8.2 Die Viewsets
85
8.2.2 DX - Data Explorer
Das DX Viewset basiert auf dem IBM Visualization
Data Explorer, welches ein General-Purpose Software
Packet ist, das der Visualisierung und Analyse von wissenschaftlichen Daten dient.
DX steht in der Version 4 zur Verfügung.
Es unterhält ein datenflussorientiertes Client-Server
Ausführungsmodell und ist zurzeit für UNIX Workstations von Digital Equipment, IBM, Sun, Hewlett-Packard und Silicon Graphics erhältlich.
Die Tests visualisieren ein Set von Partikelverfolgungen durch ein als Röhren dargestelltes Vektorflussfeld.
Die Breite jeder Röhre repräsentiert die Länge des
Geschwindigkeitsvektors an diesem Ort. Solche Daten können aus Flüssigkeits-Durchfluss
Simulationen durch eine Verbeugung resultieren.
Das repräsentierte Objekt besitzt 1’000 Triangle Meshes mit je ungefähr 100 Eckpunkten. Dies
ist ein mittelgrosser Datensatz für den Data Explorer.
Alle Tests benutzen Z-Buffering mit einer Lichtquelle zusätzlich zur Spezifikation von einer
Farbe zu jedem Eckpunkt.
Triangle Meshes sind die primären Primitive für dieses Viewset.
Test
Weight Description
1
40
Triangle Mesh, immediate mode
2
20
Line, immediate mode
3
10
Triangle Mesh, display list
4
8
Point, immediate mode
5
5
Line, display list
6
5
Triangle Mesh, list with facet normals
7
5
Triangle Mesh, with polygon stippling
8
2.5
Triangle Mesh, with two sided ligh‘ting
9
2.5
Triangle Mesh, clipped
10
2
Point, direct rendering, display list
Tabelle 8.4: DX Tests
Weitere Informationen siehe [4].
86
8 Der Viewperf Benchmark
8.2.3 DRV - Design Review
Das DRV Viewset basiert auf Intergraph’s Design
Review Programm zum Betrachten von 3D Modellen.
Speziell werden Betriebsdesignmodelle von Ölplattformen oder Hochhäusern damit visualisiert.
Es erlaubt flexible Betrachtung und Manipulation der
Modelle, hilft dem Design Team visuell den Fortschritt
zu überwachen, Störungen zu identifizieren, Komponenten zu finden und Projektzustimmungen zu erleichtern,
indem die Arbeit so präsentiert wird, dass auch ein nicht
technisches Publikum sie verstehen kann.
DRV steht zum Zeitpunkt dieser Arbeit in der Version 5
zur Verfügung.
Das Modell in diesem Viewset ist ein Subset vom 3D Betriebsmodell, welches für die GYDA
Ölproduktionsplattform in der Nordsee an der Südwestküste von Norwegen gemacht wurde.
Design Review geht von einer Repräsentation des Modells aus, welche aus verschiedenen
Objekten, wie zum Beispiel Röhren, Winkelstückventilen und elektrischen Kanälen, besteht.
Während eines Walkthroughs wird jede Ansicht durch Transformation dieser Objekte zu Triangle Strips oder Line strips gerendert.
Viele Design Review Modelle sind grösser als 50 Megabytes und werden als 3D Objekte
gespeichert. Wegen der Grösse der Modelle und der Benutzung von face-culling, werden keine
Display Lists verwendet. Es gibt sechs Tests, welche die häufigsten Operationen in Design
Review repräsentieren.
Test
Weight Description
1
45
Walkthrough rendering of curved surfaces; each curved object is rendered
as a triangle mesh, depth-buffered, smooth-shaded, with one light and a
different color per primitive
2
30
Walkthrough rendering of flat surfaces; flat shade model
3
8
Walkthrough rendering of curved surfaces; textured with linear blending
and mipmaps
4
5
Walkthrough rendering of flat surfaces; also textured
5
4
Walkthrough rendering of flat surfaces; with "screen door" transparency
applied (addition of polygon stippling)
6
4
Objects to be identified are rendered as solid and the rest of the view is rendered as a wireframe (line strips). The line strips are depth-buffered, flatshaded and unlit. Colors are sent per primitive
7
4
A wireframe, orthographic projection of the model is used. Depth buffering is not used, so multithreading cannot be used; this preserves draw order
Tabelle 8.5: DRV Tests
Weitere Informationen siehe [5].
8.2 Die Viewsets
87
8.2.4 AWadvs - Advanced Visualizer
AWadvs basiert auf Advanced Visualizer von Alias/
Wavefront. Es ist ein integriertes, workstation-basiertes
3D Animationssystem, welches als komplettes Hilfsmittel
für 3D Modelling, Animation, Rendering und Video
Output dient.
AWadvs steht in der Version 2 zur Verfügung.
Der Advanced Visualizer stellt folgendes zur Verfügung:
interaktives Testrendering und hochqualitatives, freiform
Oberflächen-Rendering, Software Rotoscoping1 für Computeranimation, realistische Bildeffekte, Bewegungen für
eine unlimitierte Anzahl von Objekten, Kameras und
Lichtquellen.
Alle Operationen im Advanced Visualizer werden im Bildspeicherbereich mit doppelt gepufferten Windows ausgeführt.
Es gibt zehn Tests, welche die häufigsten Operationen im Advanced Visualizer repräsentieren.
Test
Weight Description
1
41.8
Material shading of polygonal animation model with highest interactive
image fidelity and perspective projection
2
10.45
Wireframe rendering of polygonal animation model with perspective projection
3
2.2
Material shading of polygonal animation model with lowest interactive
image fidelity and perspective projection
4
0.55
Smooth shading of polygonal animation model with perspective projection
5
28.5
Flat shading of polygonal animation model with perspective projection
6
1.5
Material shading of polygonal animation model with highest interactive
image fidelity and orthogonal projection
7
9.5
Wireframe rendering of polygonal animation model with orthogonal projection
8
0.5
Material shading of polygonal animation model with lowest interactive
image fidelity and orthogonal projection
9
4.75
Smooth shading of polygonal animation model with orthogonal projection
10
0.25
Flat shading of polygonal animation model with orthogonal projection
Tabelle 8.6: AWadvs Tests
Weitere Informationen siehe [13].
1. Rotoscopers erstellen Ebenen mit bewegten Elementen im Vordergrund (Menschen und Objekte), so
dass Computer Graphik-Elemente in den Hintergrung plaziert werden können. Sie erstellen ebenso
Ebenen, so dass ungewollte Objekte, wie z.B. Drähte, entfernt werden.
88
8 Der Viewperf Benchmark
8.2.5 Light - Lightscape
Das Lightscape Visualisierungssystem
von Lightscape Technologies, Inc.
repräsentiert eine neue Generation der
Computer Graphik Technologie, die
Radiosity Algorithmen mit physikalisch
basierten
Beleuchtungsschnittstellen
kombiniert.
Light steht in der Version 2 zur Verfügung.
Beleuchtung
Die wichtigste Eigenschaft von Lightscape, ist die Fähigkeit, globale Beleuchtungseffekte zu simulieren. Das System
beinhaltet zwei integrierte Visualisierungskomponenten.
Die erste benutzt die progressive Radiosity Technik und generiert sichtunabhängige Simulationen der diffusen Lichtausbreitung in einer Umgebung. Subtile aber bedeutende Effekte werden
erfasst, eingeschlossen indirekte Beleuchtung, weiche Schatten und Farbverläufe zwischen Flächen.
Der zweite Prozess, der Ray-Tracing Techniken benutzt, addiert spekulare Glanzpunkte,
Reflektionen und Tranzparenzeffekte zu speziellen Ansichten der Radiosity Lösung.
Progressive Verfeinerung
Lightscape benutzt einen Radiosity Algorithmus mit progressiver Verfeinerung, welcher
brauchbare visuelle Resultate während der Verarbeitung produziert. Die Qualität der Visualisierung verbessert sich, wenn der Prozess fortläuft. So hat der Benutzer die totale Kontrolle über
die gewünschte Qualität. Diese Flexibilität erlaubt es dem Benutzer, schnell mehrere Beleuchtungs- und Materialkombinationen zu testen, um genau den richtigen visuellen Effekt zu erhalten.
Es gibt vier Tests, welche die häufigsten Operationen in Lightscape repräsentieren.
Test
Weight Description
1
25
Walkthrough wireframe rendering of "Cornell Box" model using line loops
with colors supplied per vertex
2
25
Full-screen walkthrough solid rendering of "Cornell Box" model using
smooth-shaded z-buffered quads with colors supplied per vertex
3
25
Walkthrough wireframe rendering of 750K-quad Parliament Building model using line loops with colors supplied per vertex
4
25
Full-screen walkthrough solid rendering of 750K-quad Parliament Building model using smooth-shaded z-buffered quads with colors supplied
per vertex
Tabelle 8.7: Light Tests
Weitere Informationen siehe [7].
8.3 Benchmarking mit Viewperf
89
8.2.6 CDRS - Conceptual Design Rendering Software
Der Vollständigkeit halber wird hier noch das CDRS Viewset
beschrieben. CDRS steht für Conceptual Design Rendering
Software und ist die Modellierungs- und Rendering-Software
von Parametric Technology für Computer Aided Industrial
Design.
CDRS steht in der Version 4 zur Verfügung.
Sie wird benutzt, um Konzeptmodelle von Automobilen oder
anderen Fahrzeugen, Konsumentenelektronik, Geräten und
anderen Produkten zu erstellen, welche schwierige Freiformkonturen besitzen.
CDRS ist der Vorgänger von ProCDRS. Es wurde aus verschiedensten Gründen von der OPC Gruppe durch ProCDRS ersetzt. Die kleine Modellgrösse
in CDRS ist nicht mehr repräsentativ für die zu Grunde liegende Anwendung. Ein weiterer
Ersetzungsgrund sind die einfachen Optimierungsmöglichkeiten, mit welchen die Werte verfälscht werden können.
Es gibt sieben Tests, die verschiedene Operationstypen in CDRS repräsentieren.
Fünf benutzen Triangle Strips-Datensätze von einem Rasenmähermodell, welches mit CDRS
erstellt wurde.
Die zwei anderen Tests zeigen die Repräsentation des Rasenmähers.
Test
Weight Description
1
50
Vectors used in designing the model. Represents most of the design work
done in CDRS. Antialiasing turned on to allow the designer to see a cleaner
version of the model
2
20
Surfaces shown as polygons, but all with a single surface color
3
15
Surfaces grouped with different colors per group
4
8
Textures added to groups of polygons
5
5
Texture used to evaluate surface quality
6
2
Color added per vertex to show the curvature of the surface
7
0 (!)
Same as test #1, but without the antialiasing
Tabelle 8.8: CDRS Tests
Weitere Informationen siehe [9].
8.3 Benchmarking mit Viewperf
Viewperf verwendet die Kommandozeile zum Setzen der OpenGL Zustände und zur Eingabe
von Textur- und Modelldaten. Viewperf setzt Rendering-Zustände und konvertiert Datensätze
in ein Format, welches unter Benutzung von OpenGL Rendering Calls abgearbeitet werden
90
8 Der Viewperf Benchmark
kann. Viewperf rendert den Datensatz für eine vorgegebene Zeit oder für eine bestimmte
Anzahl Frames und misst die Anzahl der Bilder pro Sekunde.
Viewperf gibt die Testresultate in “frames per second” an. Andere Informationen über das
System - alle Rendering Zustände, die Zeit um Display Lists aufzubauen und den benutzten
Datensatz - werden ebenfalls ausgegeben.
Ein Benchmark mit Viewperf ist ein einzelner Aufruf von Viewperf mit Kommandozeilenoptionen, welche dem Programm gewisse Parameter mitgeteilt werden. Dazu gehört welcher
Datensatz eingelesen werden soll, welche Texturdatei benutzt werden soll, welche OpenGL Primitiven benutzt werden sollen, um den Datensatz zu rendern, welche Attribute benutzt werden
sollen und wie oft, wenn überhaupt, Display Lists gebraucht werden sollen. Somit gibt es eine
riesige Auswahl an Viewperf Benchmarks.
8.3.1 Beispielaufruf von Viewperf
Viewperf könnte wie folgt aufgerufen werden:
viewperf-mh newtruck-shade -dl -zb -vz -nil 1 -l2s -xws 1260
-yws 980 -newview -mp 20 -grab grab3.scr
Die Parameter haben folgende Bedeutung:
viewperf
startet das Viewperf Programm
-mh
spezifiziert das Format des Datensatzes, in diesem Fall ist es mesh
(binär)
newtruck-shade
ist der Name des Datensatzes, hier der schattierte Truck
-dl
gibt an, dass der Test im display list Modus ausgeführt wird
-zb
aktiviert den Z-Buffer
-vz
erlaubt dem Benutzer, die Visualisierung zu definieren, in diesem
Fall wird der Z-Buffer aktiviert
-nil 1
gibt an, wieviele Lichtquellen benutzt werden, in diesem Fall ist
es eine
-l2s
beleuchtet beide Seiten des Modells
-xws 1260
gibt die x-Koordinaten-Grösse des Testfensters an, hier 1260
Pixel
-yws 980
gibt die y-Koordinaten-Grösse des Testfensters an, hier 980 Pixel
-newview
aktiviert die Berechnung des “New View Frustum”
-mp 20
gibt die minimale Periode des Tests an, in diesem Fall 20 Sekunden
-grab grab3.scr
Bildschirmschnappschuss in die Datei grab3.scr
8.4 Kompilieren von Viewperf
Das Kompilieren des Viewperf Benchmarks zeigte sich als sehr schwierig. Dies ist auf die
vielen UNIX Versionen die es gibt zurückzuführen . Hier werden nur die Veränderungen an den
Makefiles angegeben, die vorgenommen werden mussten, um Viewperf zu starten.
8.4.1 Sun unter Solaris
Bei der Sun Workstation musste das Modul “lang” hinzugefügt werden (module add lang).
Dieser Fehler trat auf, da dieses Modul den C Compiler zur Verfügung stellt.
8.5 Zusammenfassung
91
8.4.2 SGI unter IRIX
Es gab Probleme mit den Libraries. Die Reihenfolge der Anbindung der Libraries durch das
vorhandene Makefile ist nicht korrekt. Somit muss man im Makefile (makefile.sgi) unter “LIB
=” die Reihenfolge dahingehend ändern, dass -laux vor -lX11 zu stehen kommt. Dies hat den
einfachen Grund, dass die “X11” Library die “aux” Library benutzt.
Im Makefile vom vpaux Directory (/vpaux/Makefile) musste folgende Zeile unter “INCLUDE”
hinzugefügt werden: /usr/openwin/share/include (dies ist vermutlich nicht auf einen Fehler
zurückzuführen, sondern auf unterschiedliche Path-Strukturen).
Ausserdem musste unter “CCFLAGS” folgendes hinzugefügt werden: $(INCLUDES)
ABI. Bei den SGI Maschinen ist zu beachten, dass je nach Prozessor vor dem Kompilieren die
SGI_ABI Variable gesetzt werden muss. ABI steht für Application Binary Interface. Ein ABI
definiert eine Systemschnittstelle, um kompilierte Programme zu starten. Es definiert die Prozeduraufrufregeln, welche Instruktionssatz-Architektur (ISA) unterstützt wird und welche Formate die Objektdateien besitzen. IRIX unterstützt folgende ABI’s:
• O32
ist das alte 32-bit ABI, welches unter IRIX 5 den Standard bezeichnete. Die MIPS
1 und 2 Architekturen werden unterstützt, wobei letztere der Standard ist. Das
Format der Objektdateien ist ELF32, die Anzahl der Gleitkommaregister mit doppelter Genauigkeit ist 16. Es werden ältere Prozeduraufrufregeln vewendet.
• N64
ist das 64-bit ABI, welches in IRIX 6.0 eingeführt wurde. Es werden die MIPS 3
und 4 Architekturen unterstützt, wobei letztere der Standard ist. Das Format der
Objektdateien ist ELF64, die Anzahl der Gleitkommaregister mit doppelter Genauigkeit ist 32 und es werden die neuen Prozeduraufrufregeln verwendet.
• N32
ist die 32-bit ABI mit hoher Performance welche mit IRIX 6.2 eingeführt wurde.Es
werden die MIPS 3 und 4 Architekturen unterstützt, wobei MIPS 3 der Standard ist.
Das Format der Objektdateien ist ELF32, die Anzahl der Gleitkommaregister mit
doppelter Genauigkeit ist 32 und es werden die neuen Prozeduraufrufregeln verwendet.
In dieser Arbeit wurde für alle Maschinen das ABI auf “N32” gesetzt.
In der Kommandozeile gibt man dazu folgendes ein: setenv SGI_ABI -n32.
Weitere Informationen über das ABI findet man in den Manpages (man abi) und auf der MIPS
ABI Webpage unter [15].
8.4.3 Pentium Pro/Pentium II unter Windows NT
Für Windows wird ein InstallShield zur Verfügung gestellt, welches problemlos ablief. Nur die
Batchfiles erfüllten nicht ihren Zweck. Diese konnten aber schnell auf unsere Bedürfnisse abgestimmt werden.
8.5 Zusammenfassung
Viewperf ist ein standardisierter und von der Industrie akzeptierter 3D Anwendungsbenchmark,
der die Graphikleistung realer 3D Anwendungen misst. Viewperf verwendet dazu fünf sogenannte Viewsets, welche verschiedene Anwendungsgebiete repräsentieren. Jedes Viewset
besteht aus einer Vielzahl von Einzeltests, welche alle ein Resultat in Bildern pro Sekunde ausgeben. Für jedes Viewset wird eine Zahl als gewichtetes Resultat der Einzeltests angegeben;
grössere Zahlen geben dann grössere Leistung an.
92
8 Der Viewperf Benchmark
Viewperf eignet sich, um einen Überblick über die 3D Graphikleistung eines Systems zu erhalten. Um genaue Leistungsangaben oder die maximale Leistung zu messen, eignet er sich nicht.
9
9Der GLperf Benchmark
GLperf [16] ist ein Programm, welches die Leistung von OpenGL Graphikoperationen misst.
Diese Operationen werden auf “Low-Level” Primitiven, wie Punkte, Linien, Polygone, Pixel
etc. angewandt. GLperf beinhaltet keine ganzen geometrischen Modelle wie das in Viewperf
der Fall ist.
Mit GLperf versucht man einerseits die Methode zu standardisieren, mit welcher Computerverkäufer die Leistung von OpenGL Graphikoperationen auf ihren Systemen angeben, andererseits
ermöglicht GLperf einen umfassenden Einblick in die Graphikleistung eines Systems.
GLperf wurde hauptsächlich von John Spitzer1 von Silicon Graphics entwickelt und ist wie
Viewperf in die OpenGL Performance Characterization Gruppe der SPEC integriert worden.
9.1 Einführung
GLperf ermöglicht die explizite Eingabe der OpenGL Zustände und der Datenart, die das Graphiksystem bewältigen soll. Das Ziel von GLperf ist es, möglichst grosse Flexibilität in der Leistungsmessung über einen grossen Bereich von Szenarien und Modi zu erreichen.
GLperf dient als Serviceprogramm. Die vom Benutzer gewünschten Zustände und Tests
werden in einer Eingabedatei gespeichert, die dann von GLperf analysiert und ausgeführt werden.
Eingabedateien/Skripte. GLperf verwendet diese Eingabedateien oder Skripts, um ein flexibles Format zum Spezifizieren der OpenGL Primitiven vorzugeben, die es dem Benutzer
ermöglicht, auf einfache Art anzugeben, was er testen will. Das Format erlaubt es, die GLperf
1. E-Mail: [email protected]
93
94
9 Der GLperf Benchmark
Objekte (zum Beispiel Line Strip) mit verschiedenen Attributen (zum Beispiel Linienbreite) zu
definieren.
Grammatik der Eingabedateien. Die Eingabedateien müssen einer Grammatik entsprechen.
Diese ist im Anhang A.3.1 beschrieben. Mehr dazu auch in [16].
GLperf Eingabedateien können sowohl C als auch C++ Kommentare enthalten. Um die Entwicklung einfach zu machen, führt GLperf nur einfachste syntaktische und semantische Überprüfungen durch. Zusätzlich zur flexiblen Spezifikation der Tests werden auch Optionen für die
Generation von Testberichten zur Verfügung gestellt (siehe Kapitel 9.3.1).
Art
Beispiel einer Zuweisung
Erklärung
Wert
(TexMagFilter GL_LINEAR)
Die Zuweisung setzt den Texture Magnification Filter zu GL_LINEAR.
Liste
(TexMinFilter GL_NEAREST
Zwei Tests werden gestartet. Der erste mit
dem Texture Minification Filter
GL_NEAREST, der zweite mit
GL_LINEAR_MIPMAP_LINEAR.
Werden mehrere Listen zusammenverwendet, kann das schnell zu sehr vielen Tests
führen.
GL_LINEAR_MIPMAP_LINEAR)
Bereich
(ObjsPerBeginEnd
from 100 to 10 step -10)
Die Zuweisung setzt einen Bereich für die
Anzahl Objekte, die pro Begin/End Paar
gezeichnet werden. Dieser wird von 100 bis
10 variiert, in abnehmenden Zehnerschritten.
Die Schrittweite ist standardmässig auf 1
eingestellt. Man kann auch in Prozentschritten gehen. (Beispiel: ... from 1 to 256
step 100%: führt zu 1, 2, 4, 8, 16, ...)
Wildcard
(Fog *)
(Fog ALL)
* und ALL sind Wildcards. Sie führen zu einer Reihe von Tests, mit jedem möglichenAttribut. Im angegebenen Fall werden
Tests produziert, in denen der FogMode Parameter zu folgenden Werten gesetzt wird:
Off, GL_LINEAR, GL_EXP, GL_EXP2. Wildcards für numerische Attribute, wie zum
Beispiel Size, sind illegal.
printf
TriangleStripTest {
(UserString printf
(“Triangle Strip: %.0f pixels”, Size))
(Size from 20 to 100 step 20)
}
Die printf Anweisung ist nur für die UserString Eigenschaft zulässig. Die printf Anweisung erlaubt die Ausgabe von Daten,
ähnlich wie in der Programmiersprache C.
Mehrfachzuweisung
DrawPixelsTest {
([ImageWidth ImageHeight]
16 32 64)
}
Mehrfache Zuweisungen ein und desselben
Wertes zu mehreren Eigenschaften sind zulässig.
Tabelle 9.1: Beispiele für GLperf Attributzuweisungen
9.1 Einführung
95
Attribute. Attribute werden dazu verwendet, einem Objekt Zustände zuzuweisen. Die Attribute
können sowohl lokal als auch global definiert werden. Lokal definierte Attribute werden nur
von einer Objektdefinition benutzt, während global definierte Attribute von allen folgenden
Definitionen in der Eingabedatei benutzt werden. Dies ermöglicht zum Beispiel das Setzen des
RGB Farbmodus für alle Tests, ohne ihn jeweils für jeden Test erneut setzen zu müssen.
Attribute können gesetzt werden, indem man ihnen einen Wert, eine Liste von Werten, einen
Bereich, eine Wildcard oder ein printf-Anweisung zuweist. Wenn man mehrere Listen verwendet wird das kartesische Produkt darauf angewendet.
Tabelle 9.1 zeigt Beispiele dieser verschiedenen Zuweisungen.
9.1.1 Charakteristiken von GLperf
Die Skripts erlauben dem Benutzer die Veränderung der meisten Attribute, welche die Graphikleistung verändern können. Dies beinhaltet die meisten OpenGL Zustandsvariablen (e.g.
Depth Functions, Alpha Functions, Fogging Functions, Texture Options, Polygon Mode,
Number Of Lights, etc.).
Zusätzlich kann man folgendes spezifizieren:
•
den Ablaufmodus (immediate oder in einer Display List (compile, execute,
compile_and_execute, list deletion)1)
•
den Farbmodus (RGB α oder Index in einer Look-Up Table)
•
die Grösse der Primitive (e.g. point, line, polygon) in Anzahl Pixel
•
die Form der Primitive
•
die Orientierung der Primitive (horizontal, vertikal oder zufällig)
•
den Prozentsatz der Front-Facing beziehungsweise der Back-Facing Primitiven
•
den Prozentsatz der trivial akzeptierten, geclippten und zurückgewiesenen Primitiven
•
den Typ der Projektionsmatrix (perspektivisch oder parallel)
•
die Datenmenge, die für jede Primitive zur Verfügung gestellt wird (color data (none,
per facet, per vertex), normal data (none, per facet, per vertex), texture data (none, per
vertex))
•
und viele weitere Parameter
Erweiterbarkeit. GLperf wurde mit objektorientierten Konstrukten geschrieben, um die
beträchtliche Menge an Zustandsinformationen unter Kontrolle zu halten und die Codereplikation durch Vererbung möglichst klein zu halten.
Die aktuelle Version 3.12 wurde in C geschrieben und benutzt lex und yacc zur Analyse der
Eingabe. Da die Daten in einer Objekthierarchie eingebunden sind, ist die ganze Verarbeitung
auf eine Klasse eingeschränkt, welche einfach erweitert werden kann, um mehr oder andere
Informationen zu behandeln.
1. compile: (glNewList) die Kommandos in der Display List werden vorcompiliert. execute: (glCallList)
die Kommandos in der Display List werden ausgeführt. compile_and_execute: (glNewList) die Kommandos in der Display List werden ausgeführt, während sie compiliert werden. list deletion: (glDeleteLists) die Display List wird gelöscht.
96
9 Der GLperf Benchmark
Klassenhierarchie und Datenorganisation. Wenn eine Eingabedatei analysiert wird, generiert GLperf ein Objekt. Dieses besteht aus einem Satz von Testobjekten. Die Testklassenhierarchie wird in Abbildung 9.1 wiedergegeben. Klassen, die in Klammern angegeben werden,
sind weitere, vererbte Klassen.
Test
Drawn
Primitive
Vertex
Points
Linear
Lines
Line Strip
Line Loop
Polygonal
Triangles
Triangle Strip
Triangle Fan
Quads
Quad Strip
Polygon
Raster Pos
Bitmap (Image)
Text
Draw Pixels (Image, Trans. Map, Zoom)
Copy Pixels (Image, Trans. Map, Zoom)
Clear
Transform
Read Pixels (Image, Trans. Map)
Tex Image (Image, Trans. Map)
Abbildung 9.1:
Testklassenhierarchie (Trans.Map steht für Transfer Map)
Die Daten, die in jeder Klasse gespeichert sind, können hier nicht alle angegeben werden. Sie
sind sind unter [16] abrufbar. Das kleine Beispiel in Tabelle 9.2 beschreibt die Eigenschaften
der DrawPixels Klasse.
9.1 Einführung
Property/String
Names
97
Description
Type
Possible
Values
Default Settable
Value
Printed
DrawPixelsWidth Width of DrawPiRanged
Width of Draw Pi- xels Call (width de- Integer
xels
faults to
ImageWidth unless
DrawPixelsWidthist
set, in which case it
sets the subimage
width
[1, 2048]
-1
Yes
Yes
DrawPixelsHeight Height of DrawPiRanged
Heigth of Draw Pi- xels Call (height de- Integer
xels
faults to
ImageHeight unless
DrawPixelsHeight
ist set, in which case
it sets the subimage
height
[1, 2048]
-1
Yes
Yes
Tabelle 9.2: Datenorganisation: ein Beispiel (Eigenschaften der Draw Pixels Klasse)
Nun ein kleines Beispielskript, welches den Effekt der Anzahl Lichtquellen auf das Zeichnen
von Dreiecken misst.
TrianglesTest {
(InfiniteLights *)
(NormalData PerVertex)
}
// 0-8 Lichtquellen
// Eine Normale pro Eckpunkt
9.1.2 Unterschiede zwischen Viewperf und GLperf
Obwohl sowohl Viewperf als auch GLperf Graphikleistung messen, wurden sie mit zwei verschiedenen Zielen entwickelt.
Während Viewperf ein ganzes Modell mit unterschiedlichen Primitivengrössen zeichnet,
welche den typischen Grössen in richtigen Anwendungen entsprechen, weist GLperf künstlich
jeder Primitive eine spezielle Grösse zu. Während Viewperf den Rendering Mix einer Anwendung simuliert und die Leistung misst, offeriert GLperf die Möglichkeit viel spezifischere
Angaben zum Messen der maximalen Leistung eines Systems für das Ausführen einer bestimmten Zeichnungsfunktion.
Hierzu eine Analogie aus der Automobilwelt: GLperf entspricht dem Geschwindigkeitsmessgerät, welches die höchste Geschwindigkeit misst und Viewperf der Stoppuhr, welche die
Durchschnittsgeschwindigkeit in einem Slalom misst.
Ein weiterer Unterschied besteht in der Ausgabe der Resultate. Viewperf Tests resultieren in
einer Angabe in Bildern pro Sekunde, während GLperf Tests eine Messung in Anzahl gezeichneter Primitiven pro Sekunde ergeben.
98
9 Der GLperf Benchmark
9.2 Die OPC Skripte
Um repräsentative Resultate von GLperf zu erhalten, hat die OPC Gruppe 13 Skripte geschrieben, welche die interessantesten Leistungsbereiche testen. Sie sind aufgeteilt in 10 Skripte im
RGB-Farbraum und 3 Skripte im indexierten Farbraum. Das Postfix des Skriptnamens gibt die
jeweilige Zugehörigkeit an.
In den Kapiteln 9.2.1 bis 9.2.13 wird ein kleiner Überblick über die Funktionalität dieser Skripte
gegeben.
9.2.1 BgnEnd.rgb
Das BgnEnd.rgb Skript testet die Leistung in Abhängigkeit
der Anzahl der Primitiven zwischen dem glBegin Kommando
und dem glEnd Kommando. Zwischen einem glBegin und
einem glEnd Kommando können geometrische Konstrukte
definiert werden. Es können Eckpunkte, Normalen, Farbe,
Texturkoordinaten, etc. spezifiziert werden. Die Ergebnisse
geben wider, ob sich die Maschine auch für grosse Szenen
oder Konstrukte eignet.
In jedem der folgenden Tests wird der “Objekte pro glBegin/
glEnd Paar”- Parameter von 1 bis 541 in 10% Schritten
erhöht.
Dies ergibt die folgende Liste von 48 Zahlen:1 2 3 4 5 6 7 8
9 10 11 13 15 17 19 21 24 27 30 33 37 41 46 51 57 63 70 77 85 94 104 115 127 140 154 170
187 206 227 250 275 303 334 368 405 446 491 541.
Folgende Einzeltests sind mit diesem Skript möglich:
•
10 pixel Lines (RGB, 3D, flat) - Immediate Mode
•
10 pixel Lines (RGB, 3D, flat) - Display List Mode
•
10 pixel Line Strip (RGB, 3D, flat) - Immediate Mode
•
10 pixel Line Strip (RGB, 3D, flat) - Display List Mode
•
25 pixel Triangle Strip (RGB, Z, 3D, smooth, 1 inf light) - Immediate Mode
•
25 pixel Triangle Strip (RGB, Z, 3D, smooth, 1 inf light) - Display List Mode
•
50 pixel Quads (RGB, Z, 3D, smooth, 1 inf light) - Immediate Mode
•
50 pixel Quads (RGB, Z, 3D, smooth, 1 inf light) - Display List Mode
9.2 Die OPC Skripte
99
9.2.2 CopyPixl.rgb
CopyPixl.rgb misst die Leistung der glCopyPixels RGB Operationen.
glCopyPixels kopiert einen rechteckigen Bereich von Pixeln
von einem Bereich des Frame Buffers in einen anderen.
Dieser Befehl beinhaltet eigentlich ein glReadPixels gefolgt
von einem glDrawPixels, ohne aber in den Speicherbereich
geschrieben zu werden.
Dieser Test misst die Raster-Operationen (Fogging, Texturing) und die Per-Fragment-Operationen.
Abbildung 9.2 hilft, die verschiedenen Pixelbefehle zu verstehen. Mit glCopyPixels werden Pixels aus dem Frame
Buffer über die Raster- und Per-Fragment-Operationen
wieder in den Frame Buffer geschrieben. glDrawPixels schreibt Pixels aus dem Speicher in den
Frame Buffer, glReadPixels führt die inverse Funktion aus: das Lesen von Pixels aus dem
Frame Buffer in den Speicher.
Der Test läuft im “Immediate” Modus ab.
Die Breite und Höhe der CopyPixels Bilder (CopyPixelsWidth, CopyPixelsHeight) werden von
16 bis 512 erhöht, in 2er Potenz-Schritten. (16, 32, 64, 128, 256, 512).
Dieses Skript führt nur einen einzigen Test aus:
•
CopyPixels (RGB)
glRasterPos*
Per Vertex
Operations &
Primitive
Assembly
glDrawPixels
Processor
Memory
Rasterization
(fog, texture)
PerFragment
Operations
Frame
Buffer
glReadPixels
glCopyPixels
Abbildung 9.2:
Pixel Datenfluss (glRasterPos* spezifiziert die Position für ein Pixel)
100
9 Der GLperf Benchmark
9.2.3 DrawPixl.ndx
DrawPixl.ndx misst die Leistung der glDrawPixels Color
Index Operationen.
glDrawPixels liest einen rechteckigen Bereich von Pixeln aus
dem Speicher und schreibt ihn in den Frame Buffer.
Der Test misst nicht nur die Rasterisierung, sondern auch den
Zugriff auf den Speicher.
Die Tests laufen beide im indexierten Farbraummodus, das
heisst die vorkommenden Farbwerte werden in einer LookUp Table gespeichert.
Die Breite und Höhe der DrawPixels Bilder (ImageWidth,
ImageHeight) werden von 16 bis 512 erhöht, in 2er PotenzSchritten. (16, 32, 64, 128, 256, 512).
Zwei Tests können mit diesem Skript durchgeführt werden:
•
DrawPixels (color index, ubyte) - Immediate Mode
•
DrawPixels (color index, ubyte) - Display List Mode
9.2.4 DrawPixl.rgb
DrawPixl.rgb misst die Leistung der glDrawPixels RGB
Operationen.
Es werden die gleichen Tests wie im DrawPixl.ndx durchgeführt, mit dem Unterschied, dass sie im RGB Farbraum ausgeführt werden.
Die Breite und Höhe der DrawPixels Bilder (ImageWidth,
ImageHeight) werden von 16 bis 512 erhöht, in 2er PotenzSchritten. (16, 32, 64, 128, 256, 512)
Diese Skript beinhaltet die folgenden Einzeltests:
•
DrawPixels (RGB, ubyte) - Immediate Mode
•
DrawPixels (RGB, ubyte) - Display List Mode
•
DrawPixels (RGBA, ubyte) - Immediate Mode
•
DrawPixels (RGBA, ubyte) - Display List Mode
•
DrawPixels (RGBA, zoom 2x, ubyte) - Immediate Mode
•
DrawPixels (RGBA, zoom 2x, ubyte) - Display List Mode
•
DrawPixels (RGBA, zoom .5x, ubyte) - Immediate Mode
•
DrawPixels (RGBA, zoom .5x, ubyte) - Display List Mode
9.2 Die OPC Skripte
9.2.5 FillRate.rgb
FillRate.rgb misst, wieviele Pixel pro Sekunde gezeichnet
werden können.
Diese Tests messen, wie gut die Rasterization Engine des
Graphiksubsystems ist.
Bei allen Tests werden im “Display List” Modus 500 × 500
Pixel grossen Quadrate gezeichnet.
Dieses Skript führt die folgenden Einzeltests aus:
•
Quads (RGB, 3D, flat)
•
Quads (RGB, Z, 3D, flat)
•
Quads (RGB, 3D, smooth)
•
Quads (RGB, Z, 3D, smooth)
•
Quads (RGB, Z, 3D, 64x64 RGB nearest modulated texture, smooth)
•
Quads (RGB, Z, 3D, 64x64 RGB linear modulated texture, smooth)
•
Quads (RGB, Z, 3D, 64x64 RGB trilinear modulated texture, smooth)
9.2.6 Light.rgb
Light.rgb misst den Einfluss der Anzahl eingeschalteter
Lichtquellen auf das Zeichnen einer bestimmten Primitive.
Die Berechnnungen, die hier ausgeführt werden, sind PerVertex Operationen, also eckpunktbezogene Operationen.
Diese Operationen werden in der Geometry Engine bearbeitet, wenn diese vorhanden ist, andernfalls werden die Berechnungen vom Hauptprozessor durchgeführt.
In jedem Test wird die Anzahl Lichtquellen (InfiniteLights)
von 0 bis 8 jeweils um Eins inkrementiert.
Light testet folgende Modi und Primitiven:
•
Triangle Strip (RGB, Z, 3D, smooth, n inf lights) Immediate Mode
•
Triangle Strip (RGB, Z, 3D, smooth, n inf lights) - Display List Mode
•
Quads (RGB, Z, 3D, smooth, n inf lights) - Immediate Mode
•
Quads (RGB, Z, 3D, smooth, n inf lights) - Display List Mode
101
102
9 Der GLperf Benchmark
9.2.7 LineFill.rgb
LineFill.rgb misst den Einfluss der Linienlänge auf die Renderingleistung von Linien.
In jedem Test wird der Grössenparameter (Size in Pixel) von
1 bis 541 in 10% Schritten erhöht.
Dies gibt die folgeden Liste von 48 Zahlen:1 2 3 4 5 6 7 8 9
10 11 13 15 17 19 21 24 27 30 33 37 41 46 51 57 63 70 77 85
94 104 115 127 140 154 170 187 206 227 250 275 303 334
368 405 446 491 541.
Folgende Einzeltests werden durchgeführt:
•
Line Strip (RGB, 3D, flat) - Immediate Mode
•
Line Strip (RGB, 3D, flat) - Display List Mode
•
Line Strip (RGB, Z, 3D, flat) - Immediate Mode
•
Line Strip (RGB, Z, 3D, flat) - Display List Mode
•
Line Strip (RGB, 3D, AA, flat) - Immediate Mode
•
Line Strip (RGB, 3D, AA, flat) - Display List Mode
9.2.8 OPClist.ndx
OPClist.ndx enthält eine Reihe von Tests für die verschiedensten Operationen mit Graphikprimitiven (Linien, Dreiecke, Quadrate) und weitere Operationen, die nicht von
Primitiven abhängig sind, wie zum Beispiel das Löschen
eines Windows. Dies gibt einen Überblick über die maximale
Leistung des Systems.
Das Löschen eines Windows ist typischerweise eine der teuersten Operationen für einen 1280 × 1024 Monitor, da über
eine Million Pixel bearbeitet werden müssen. Für einfache
Graphikanwendungen kann die Löschoperation mehr Zeit in
Anspruch nehmen als das komplette restliche Zeichnen.
Wenn man nun nicht nur den Color Buffer, sondern auch den
Depth und Stencil Buffers löschen muss, kann die Löschoperation sogar dreimal so teuer sein.
Gewisse Maschinen haben Hardware, welche es erlaubt, mehr als einen Puffer gleichzeitig zu
löschen. In den Clear Tests wird die Leistung mit verschiedenen Puffervariationen gemessen.
Die Tests sind im indexierten Farbmodus.
•
Clear (color index)
•
Points (color index)
•
Lines (color index)
•
Line Loop (color index)
•
Line Strip (color index)
9.2 Die OPC Skripte
•
Triangles (color index)
•
Triangle Strip (color index)
•
Triangle Fan (color index)
•
Quads (color index)
•
Quad Strip (color index)
•
Polygon (color index)
•
Text (color index)
9.2.9 OPClist.rgb
OPClist.rgb enthält eine handvoll Tests für verschiedenste
Operationen auf Graphikprimitiven und weitere Operationen, die nicht von Primitiven abhängig sind, wie zum Beispiel Window Clears. Es werden die gleichen Tests wie im
OPClist.ndx Skript durchgeführt, die Tests sind im RGB
Farbmodus.
•
Clear (RGB)
•
Points (RGB)
•
Lines (RGB)
•
Line Loop (RGB)
•
Line Strip (RGB)
•
Triangles (RGB)
•
Triangle Strip (RGB)
•
Triangle Fan (RGB)
•
Quads (RGB)
•
Quad Strip (RGB)
•
Polygon (RGB)
•
Text (RGB)
103
104
9 Der GLperf Benchmark
9.2.10 ReadPixl.ndx
ReadPixl.ndx misst die Leistung der glReadPixels Color
Index Operationen.
glReadPixels liest einen rechteckigen Bereich von Pixeln aus
dem Frame Buffer und schreibt ihn in den Speicher.
Abbildung 8.2 hilft, diesen Pixelbefehl zu verstehen. Zu
beachten ist, dass dieser Test auch den Speicherzugriff misst.
Der Test läuft im “Immediate” Modus ab.
Die Breite und Höhe der ReadPixels Bilder (ImageWidth,
ImageHeight) werden in 2er Potenz-Schritten von 16 bis auf
512 erhöht. (16, 32, 64, 128, 256, 512).
Es wird nur ein Test durchgeführt:
•
ReadPixels (color index, ubyte)
9.2.11 ReadPixl.rgb
ReadPixl.rgb misst die Leistung der glReadPixels RGB Operationen.
Dieses Skript misst die gleiche Operation wie ReadPixl.ndx.
Beide Tests laufen im “Immediate” Modus ab.
Die Breite und Höhe der ReadPixels Bilder (ImageWidth,
ImageHeight) werden von 16 bis 512 erhöht, in 2er PotenzSchritten. (16, 32, 64, 128, 256, 512)
Es werden zwei Tests durchgeführt:
•
ReadPixels (RGB, ubyte)
•
ReadPixels (RGBA, ubyte)
9.2 Die OPC Skripte
105
9.2.12 TexImage.rgb
TexImage.rgb misst die Leistung der glTexImage2D RGB
Operationen.
glTexImage2D spezifiziert ein zweidimensionales Texturbild, welches auf eine Graphikprimitive gelegt wird.
Die ersten vier Tests beschreiben Download Tests von Texturen aus dem Systemspeicher in den Graphik/Texturspeicher. Die anderen zwei Tests beschreiben Texturwechsel im
Texturspeicher.
Die ersten vier Tests laufen im “Immediate” Modus ab. (Die
Tests im “Display List” Modus ablaufen zu lassen, würde
nicht viel Sinn machen, da viele Systeme in diesem Modus
die Texturen mit glCallList binden. Dies ist jedoch nicht das,
was hier gemessen werden soll.)
Die letzten zwei Tests generieren Zahlen, welche angeben, wie schnell Texturen gebunden (texture binding mit glCallList oder texture object) werden können. Diese Tests laufen im “Display
List” Modus ab.
Die Breite und Höhe der TexImage Bilder (ImageWidth, ImageHeight) werden von 32 bis 2048
erhöht, in 2er Potenz-Schritten. (32, 64, 128, 256, 512, 1024, 2048).
Somit werden folgende Tests durchgeführt:
•
TexImage - Download(RGB, ubyte, point draw)
•
TexImage - Download(RGBA, ubyte, point draw)
•
TexImage - Download(RGB, ubyte, mipmapped, point draw)
•
TexImage - Download(RGBA, ubyte, mipmapped, point draw)
•
TexImage - Switching(RGB, ubyte)
•
TexImage - Switching(RGB, ubyte, mipmapped)
9.2.13 TriFill.rgb
TriFill.rgb misst den Einfluss der Vergrösserung der Primitive auf das Zeichnen von Polygonen.
In jedem Fall wird der Grössenparameter (Size in Pixel) von
1 bis 541 in 10% Schritten erhöht. Dies gibt die folgende
Liste von 48 Zahlen:1 2 3 4 5 6 7 8 9 10 11 13 15 17 19 21 24
27 30 33 37 41 46 51 57 63 70 77 85 94 104 115 127 140 154
170 187 206 227 250 275 303 334 368 405 446 491 541.
Folgende Tests werden mit diesem Skript durchgeführt:
•
Triangle Strip (RGB, 3D, flat) - Immediate Mode
•
Triangle Strip (RGB, 3D, flat) - Display List Mode
•
Triangle Strip (RGB, Z, 3D, flat) - Immediate Mode
•
Triangle Strip (RGB, Z, 3D, flat) - Display List Mode
106
9 Der GLperf Benchmark
•
Triangle Strip (RGB, 3D, smooth) - Immediate Mode
•
Triangle Strip (RGB, 3D, smooth) - Display List Mode
•
Triangle Strip (RGB, Z, 3D, smooth) - Immediate Mode
•
Triangle Strip (RGB, Z, 3D, smooth) - Display List Mode
•
Triangle Strip (RGB, Z, 3D, smooth, 1 inf light) - Immediate Mode
•
Triangle Strip (RGB, Z, 3D, smooth, 1 inf light) - Display List Mode
•
Triangle Strip (RGB, 3D, 64x64 RGB nearest modulated texture, smooth, 1 inf light) Immediate Mode
•
Triangle Strip (RGB, 3D, 64x64 RGB nearest modulated texture, smooth, 1 inf light) Display List Mode
•
Triangle Strip (RGB, 3D, 64x64 RGB linear modulated texture, smooth, 1 inf light) Immediate Mode
•
Triangle Strip (RGB, 3D, 64x64 RGB linear modulated texture, smooth, 1 inf light) Display List Mode
•
Triangle Strip (RGB, 3D, 64x64 RGB trilinear modulated texture, smooth, 1 inf light) Immediate Mode
•
Triangle Strip (RGB, 3D, 64x64 RGB trilinear modulated texture, smooth, 1 inf light) Display List Mode
9.3 Benchmarking mit GLperf
GLperf verwendet die Kommandozeile zur Eingabe von Daten.
GLperf gibt die Testresultate entweder in “Objekte pro Sekunde” oder in “Pixel pro Sekunde”
an. Das Wechseln dieser Angabe erfolgt über die Kommandozeile beim Aufruf von GLperf.
Andere Informationen über das System - alle Rendering Zustände, die Zeit um Display Lists
aufzubauen und der benutzte Datensatz - werden ebenfalls ausgegeben.
Ein Benchmark mit GLperf ist ein einzelner Aufruf von GLperf mit der Angabe eines Skriptes.
Im Skript wird spezifiziert, welches Primitiv getestet werden soll, zum Beispiel ein 50 Pixel
grosser Triangle Strip. Ein Skript erlaubt das Testen von vielen Primitiven gleichzeitig.
9.3.1 Beispielaufruf von GLperf
Ein Beispielaufruf von GLperf lautet wie folgt:
GLperf [-d] [-p] [-s] [-u] input_file
-d
-p
gibt an, ob ein Delta Output gemacht werden soll. Wenn ein Test mit Delta
Output durchgeführt wird, erhält man in der Ausgabe nur die Differenzen
zwischen dem vorangegangenen Test und dem Aktuellen. Standard ist kein
Delta Output.
gibt an, dass die Testresultate in Pixel pro Sekunde gemacht werden. Standard
ist Objekte pro Sekunde.
9.4 Compilieren von GLperf
107
-s
spezifiziert, dass ein Delta Output vom Standard-Status gemacht werden soll.
Der Standard-Status gibt zum Beispiel an, dass es sich um GLperf 3.1.2 handelt, oder dass Doublebuffering gemacht wird. Standard ist kein Delta Output
om Standard-Status.
-u
gibt an, dass die Testresultate pro Microsekunde gemacht werden. Standard
ist pro Sekunde.
input_file ist der Name der Eingabedatei, zum Beispiel eines der vorgegebenen Standard Skripte.
9.4 Compilieren von GLperf
Das Compilieren des GLperf Benchmarks zeigte sich weniger schwierig als der Viewperf
Benchmark. Hier werden nur die Veränderungen angegeben, die vorgenommen werden mussten, um GLperf zu compilieren.
9.4.1 Sun unter Solaris
Auf den Suns ist die Texture2D OpenGL Erweiterung (Extension) nicht vorhanden. Deshalb
musste aus dem Quellcode von Hand jeder Verweis auf diese Kommandos entfernt werden. Da
die Standard Skripte der OPC jedoch keine dieser Kommandos benutzen, ist dies unproblematisch.
Wenn man ein eigenes Skript schreiben will, muss darauf geachtet werden, dass diese Kommandos nicht benutzt werden, da sonst die Tests nicht sehr aussagekräftig sind. Die fehlenden
Kommandos werden dann entweder durch andere ersetzt oder einfach übergangen.
Im Anhang A.3.2 befindet sich eine Liste all dieser Kommandos.
9.4.2 SGI unter IRIX
Unter IRIX zeigte sich alles problemlos. Manchmal lief die Compilation mit dem gmake Programm besser als mit dem make Programm.
9.4.3 Pentium Pro/Pentium II unter Windows NT
Zuerst mussten die Umgebungsvariablen so gesetzt werden, dass sie der Kommandozeilencompiler verwenden kann (das Programm nmake zum Beispiel). Dies geschieht mit einem Batchfile, das man auf den Pentium II Workstations unter “C:\DevStudio\VC\bin\vcvars32.bat”
findet und startet. Dieses wird vom Visual C Studio zur Verfügung gestellt.
Es mussten ein paar kleine Veränderungen an Makefile.win vorgenommen werden. Die Standard Paths für die OpenGL Libraries mussten verändert werden. Wichtig ist, dass man bei
“GL_H=” und “GLU_H=” den richtigen Pfad eingibt.
9.5 Zusammenfassung
GLperf ist ein standardisierter und von der Industrie akzeptierter 3D Benchmark, der die Leistung von OpenGL Graphikoperationen misst. GLperf verwendet dazu dreizehn Skripte,
welche verschiedene Modi und Testprimitiven verwenden. Eine Messung ergibt ein Ergebnis
in Anzahl gezeichneter Primitiven pro Sekunde.
GLperf eignet sich, um genaue Angaben über die 3D Graphikleistung eines Systems zu erhalten. Es generiert aber ein riesiges Datenvolumen, welches sehr schwer zu sortieren und analysieren ist.
108
9 Der GLperf Benchmark
10
10Der SPEC CPU95 Benchmark
Der SPEC CPU95 Benchmark [19], misst die Leistung des Prozessors, der Speicherhierarchie
und des Compilers eines Computersystems.
CPU95 seinerseits benutzt die CINT95 Tests mit acht Programmen um die Festkommaeinheit
und die CFP95 Tests mit zehn Programmen um die Gleitkommaeinheit zu testen. CPU95 ist
nicht dazu konstruiert, andere Computersystemkomponenten zu messen, weshalb es sich gut
dazu eignet, den Einfluss der Systemleistung auf die Graphikleistung zu betrachten.
Das “C” im Namen von CINT95 und CFP95 steht für component, und steht dafür, dass nicht
ein System getestet wird (das würde mit einem “S” angegeben), sondern dass es sich dabei um
ein Komponenten Benchmark Programm handelt.
SPEC CPU95 wird von der Open Systems Group (OSG) der SPEC entwickelt. Die ‘95 Version
ist das zweite Update des Benchmarks. SPEC CPU89, das Original, wurde 1989 entwickelt.
10.1 Einführung
SPEC95 wurde entwickelt, um vergleichbare Messungen der Leistung von Computersystemen
mit einem gut bekannten, rechenintensiven Workload durchzuführen. Um dies auch auf verschiedenen Plattformen durchführen zu können, entschied sich die OSG den Benchmark als
Quellcode zu unterhalten. Obwohl das Benchmark Programm oft nur als Prozessorbenchmark
bezeichnet wird, misst es eigentlich folgende drei Komponenten eines Computersystems:
•
Prozessor
•
Speicher Hierarchie
•
Compiler
Das Programm wurde nicht entwickelt, um andere Komponenten zu testen, wie zum Beispiel
Graphik, Netzwerk, I/O oder Fähigkeiten des Betriebssystem.
SPEC CPU95 ist für viele Betriebssysteme erhältlich, unter anderem für viele UNIX Versionen
und Windows NT.
10.1.1 Charakteristiken von CPU95
Das SPEC CPU95 Benchmark Programm kann folgende Messungen durchführen:
109
110
10 Der SPEC CPU95 Benchmark
CINT95 Tests:
Metrik
Erklärung
SPECint95
Das geometrische Mittel von acht normalisierten Laufzeitverhältnissen (eine für jeden Integer Benchmark). Der Benchmark wird aggressiv compiliert.
SPECint_base95
Das geometrische Mittel von acht normalisierten Laufzeitverhältnissen (eine für jeden Integer Benchmark). Der Benchmark wird konservativ compiliert.
SPECint_rate95
Das geometrische Mittel von acht normalisierten Durchsatzraten (eine
für jeden Integer Benchmark). Der Benchmark wird aggressiv compiliert.
SPECint_rate_base95 Das geometrische Mittel von acht normalisierten Durchsatzraten (eine
für jeden Integer Benchmark). Der Benchmark wird konservativ
compiliert.
Tabelle 10.1: CINT95 Metriken
CFP95 Tests:
Metrik
Erklärung
SPECfp95
Das geometrische Mittel von zehn normalisierten Laufzeitverhältnissen (eine für jeden Floating-Point Benchmark). Der Benchmark wird
aggressiv compiliert.
SPECfp_base95
Das geometrische Mittel von zehn normalisierten Laufzeitverhältnissen (eine für jeden Floating-Point Benchmark). Der Benchmark wird
konservativ compiliert.
SPECfp_rate95
Das geometrische Mittel von zehn normalisierten Durchsatzraten
(eine für jeden Floating-Point Benchmark). Der Benchmark wird aggressiv compiliert.
SPECfp_rate_base95 Das geometrische Mittel von zehn normalisierten Durchsatzraten
(eine für jeden Floating-Point Benchmark). Der Benchmark wird
konservativ compiliert.
Tabelle 10.2: CFP95 Metriken
Base und Non-Base. Um die Leistungsvergleiche auf verschiedenen Plattformen zu ermöglichen, musste die OSG das Benchmark Programm als Quellcode zur Verfügung stellen. So muss
der Benchmark vom Benutzer compiliert werden. Es war klar, dass das Programm so compiliert
werden soll, wie dies ein durchschnittlicher Benutzer macht. Aber wie compilieren Benutzer
ihre Programme? Einerseits compilieren gewisse Benutzer ihre Programme mit vielen verschiedenen Compilern und Compiler Flags um die bestmögliche Leistung zu erhalten, andererseits
compilieren Benutzer ihre Programme mit den normalen Optionen, die vom Compilerhersteller
empfohlen werden. Die OSG anerkennt, dass sie nicht genau definieren kann, wie Benutzer ihre
Programme compilieren, zwei Referenzpunkte sind aber möglich. Die Base Metrik ist nötig für
alle publizierten Resultate. Dabei werden Regeln vorgegeben, wie der Benchmark compiliert
werden darf. Die Non-Base Metrik ist optional. Für diese Resultate werden weniger strenge
Regeln vorgegeben.
10.2 Die Integer Programme
111
Referenzzeit/Referenzmaschine. Die Verhältnisse für jeden Test werden mit der SPEC-Referenzzeit und der aktuellen Laufzeit berechnet.
Dabei wurde eine SPARCstation 10/40 (40 MHz SuperSPARC ohne Level 2 Cache) als Referenzmaschine verwendet, um die Normalisierungen der Leistungmetriken vorzunehmen. Jeder
Test des Benchmark Programm wurde auf dieser Maschine gemessen und als Referenzzeit definiert. Es dauerte etwa 48 Stunden, um eine SPEC-konforme Ausführung durchzuführen.
Laufzeit versus Durchsatz. Es gibt verschiedene Arten, die Leistung eines Computersystems
zu messen. Eine Möglichkeit ist zu messen, wie schnell ein Computer eine einzelne Aufgabe
durchführen kann. Dies ist eine Geschwindigkeitsmessung. Eine andere Möglichkeit ist zu
bestimmen, wieviele Aufgaben ein Computer in einer gewissen Zeit abarbeiten kann. Dies
nennt man eine Durchsatz-, Kapazitäts- oder Ratenmessung.
Die SPEC Geschwindigkeitsmessungen (zum Beispiel SPECint95) werden gebraucht, um die
Laufzeit der Durchführung einer einzelnen Aufgabe eines Computers zu messen.
Die SPEC Ratenmessungen (zum Beispiel SPECint_rate95) werden verwendet, um die Durchsatzrate einer Maschine zu testen, die verschiedene Aufgaben bewältigen muss.
10.2 Die Integer Programme
Die Programme in SPEC CINT95 werden verwendet, um die Integer Leistung eines Systems zu
messen.
Hier eine kleine Erklärung der in SPEC CINT95 vorkommenden Tests.
Benchmark
Referenzzeit Anwendungsbereich Spezielle Aufgabe
099.go
4600
Spiele, Künstliche
Intelligenz
Spielt das “Go” Spiel gegen sich selber.
124.m88ksim 1900
Simulation
Simuliert den Motorola 88100 Prozessor und lässt Dhrystone und ein Memory Test Programm laufen.
126.gcc
Programmierung,
Compilierung
Compiliert einen vorbearbeiteten
Quellcode in optimierten SPARC Assembler Code.
129.compress 1800
Kompression
Komprimiert eine grosse Textdatei (ca.
16 MByte) unter Benutzung der
Limpel-Ziv Codierung.
130.li
1900
Sprachinterpreter
Lisp Interpreter.
132.ijpeg
2400
Bildbearbeitung
Führt eine JPEG Bildkomprimierung
mit verschiedenen Parametern durch.
134.perl
1900
Shell Interpreter
Führt Text- und numerische Manipulationen durch. (Anagramme/Primzahlenfaktorisierung)
147.vortex
2700
Datenbank
Errichtet und manipuliert drei relationale Datenbanken.
1700
Tabelle 10.3: CINT95 Benchmark
112
10 Der SPEC CPU95 Benchmark
10.3 Die Floating-Point Programme
Die Programme in SPEC CFP95 werden verwendet, um die Floating-Point Leistung eines
Systems zu messen.
Hier eine kleine Erklärung der in SPEC CFP95 vorkommenden Tests.
Benchmark
Referenzzeit Anwendungsbereich Spezielle Aufgabe
101.tomcatv 3700
Flüssigkeitsdynamik, Geometrische Translation
Generiert ein zweidimensionales Koordinatensystem um generelle geometrische
Bereiche.
102.swim
8600
Wettervorhersage
Löst flache Wassergleichungen mit Hilfe
von Approximationen mit finiten Differenzen. (der einzige Benchmark in CFP95
der nur einfache Präzision erfordert)
103.su2cor
1400
Quantenphysik
In der Quark-Gluon Theorie werden Massen von elementaren Teilchen berechnet.
104.hydro2d 2400
Astrophysik
Hydrodynamische Navier-Stokes Gleichungen werden benutzt um galaktische
Strahlen zu berechnen.
107.mgrid
2500
Elektromagnetismus Berechnung eines 3D Potentialfeldes.
110.applu
2200
Flüssigkeitsdynamik, Mathematik
Löst ein Matrix System mit Pivot-Strategien.
125.turb3d
4100
Simulation
Simuliert Turbulenzen in einem kubischen Bereich.
141.apsi
2100
Wettervorhersage
Berechnet Statistiken über Temperaturen
und Schadstoffe in einem Bereich.
145.fpppp
9600
Chemie
Berechnet Ableitungen von Multielektronen
146.wave5
3000
Elektromagnetismus Löst Maxwell’sche Gleichungen in einem
kartesischen Netz.
Tabelle 10.4: CFP95 Benchmarks
10.4 Benchmarking mit CPU95
SPEC CPU95 verwendet die Kommandozeile zur Eingabe der gewünschten Aktionen, Modi,
Anzahl Durchläufe, etc.
Die Compilieroptionen und Flags werden in Konfigurationsdateien gespeichert. Dort werden
auch Angaben zum getesten System gemacht.
Base Run. Um einen Base Run durchzuführen, müssen gewisse Regeln befolgt werden.
•
Kein Quelldatei- oder Subroutinenname darf in einem Optimierungsflag oder in einer
Compiler Option vorkommen.
•
Flags, welche vorgerechnete Routinen ersetzen, die in der Basis des Routinennamen
eines Benchmarks vorkommen, sind nicht zulässig.
10.5 Compilieren von CPU95
•
•
•
•
•
•
113
“Feedback directed”-Optimierungen sind erlaubt.
Flags, welche Datentypgrössen dahingehend verändern, dass sie nicht die Standarddatentypgrössen des Compilierungssystems besitzen, sind nicht erlaubt.
Es müssen immer die gleichen Compiler Flags und Optionen für alle Benchmarks verwendet werden. Sie müssen auch alle in der gleichen Reihenfolge angegeben werden.
“Assertion Flags” sind nicht erlaubt.
Es dürfen Flags verwendet werden, welche die numerische Genauigkeit oder Empfindlichkeit verändern, indem sie die Floating-Point Operationen mit algebraischen Identitäten umstellen.
Optimierungen sind auf vier Optimierungsflags und Compileroptionen limitiert.
10.4.1 Beispielaufruf von CPU95
runspec -a validate -c luxo.cfg -i ref -n 3 -o all -d -D -I
-v 100 int
-a action
die Aktion, die runspec ausführen soll; [build|setup|run|compare|report|validate|clean|trash|clobber|nuke]
-c name
Name der Konfigurationdatei, die sich in /config befindet.
-i input
SPEC Eingabedatei, die verwendet wird; [test|train|ref]; default: ref
-n num
die Anzahl der Durchläufe von runspec; für einen “offiziellen’ Lauf muss n
mindestens 3 sein
-o type
der Typ des Testberichts; [asc|html|ps|raw|all]
-d
löscht explizit die Benchmark Arbeitsverzeichnisse, da diese ansonsten standardmässig weiterverwendet werden
-D
löscht bereits existierende Programmdateien der verwendeten Konfiguration
-I
ignoriert Fehler, Benchmark wird bei einem Fehler nicht beendet
-v level
setzt die Menge der Kommandozeilenausgabe fest; zwischen 0-100
list_of_benchmarks kann ‘all’, ‘int’, ‘fp’ oder eine Liste der Einzelbenchmarks sein (Beispiel (147.vortex oder 147)
10.5 Compilieren von CPU95
Das Compilieren des SPEC CPU95-Benchmarks zeigte sich sehr schwierig. Auch nach Rücksprache mit SGI und nach Konsultieren diverser Newsgruppen war es nicht möglich den
147.vortex Test zu compilieren.
Hier werden wiederum nur die Veränderungen angegeben, die vorgenommen werden mussten,
um SPEC CPU95 erfolgreich zu compilieren.
10.5.1 Sun unter Solaris
Der compilierte Benchmark wurde freundlicherweise vom Institut für Computersysteme zur
Verfügung gestellt.
114
10 Der SPEC CPU95 Benchmark
10.5.2 SGI unter IRIX
Die SPEC Installation musste manuell durchgeführt werden, da nicht alle Dateien zur Verfügung gestellt wurden. Die folgenden Anweisungen werden vom install.sh Script generiert:
cd /home/spec95/tools/src/make-3.74
make clean; rm config.cache
./configure --prefix=’/home/spec95’
/bin/sh build.sh
cp make /home/spec95/bin/specmake
cd /home/spec95/tools/src/perl5.001l
../make-3.74/make distclean; rm config.sh
./Configure -dOes -Ddosuid=undef -Dstatic_ext=Spec
-Dusedl=undef -Dprefix=/home/spec95
../make-3.74/make
cp -pr perl /home/spec95/bin/specperl
cp -pr lib /home/spec95/bin
/home/spec95/bin/relocate
Es ist wichtig, die zur Verfügung gestellten perl und make Versionen zu installieren, da sie
Erweiterungen beinhalten, die nicht dem Standard entsprechen. Um perl erfolgreich zu installieren, benötigt man zwei zusätzliche Dateien, die man aus einer Standard-Distribution kopieren
kann:
spec95/tools/src/perl5.001l/configure
spec95/tools/src/perl5.001l/hints/aux.sh
Ein anderes Problem ist die Messung der Zeiten auf den verschiedenen Betriebssystemen.
Specperl stellt eine System-Variable zur Verfügung, welche nicht auf allen Systemen richtig
funktioniert. Wenn man nun Null-Laufzeiten erhält, muss man folgendes durchführen. In der
Datei spec95/bin/unix.pl muss man alle Vorkommen von spectime auf &spectime ändern, und
am Schluss der Datei vor dem 1 die folgende Subroutine einfügen:
sub spectime {
# a wrapper for Win32::SpecTime
my($sec,$usec) = 0;
# the hack for when Win32::SpecTime doesn’t exist
$sec = time; $usec = 0;
#&Win32::SpecTime($sec,$usec);
return($sec, $usec);
}
1; #allready exists
Mit diesen Änderungen ist es möglich, mit SPEC95 zu benchmarken.
10.5.3 Pentium Pro/Pentium II unter Linux
Der compilierte Benchmark wurde freundlicherweise vom Institut für Computersysteme zur
Verfügung gestellt. Leider war es nur möglich, den Integer Benchmark zu starten.
10.6 Zusammenfassung
SPEC CPU95 ist ein standardisierter und von der Industrie akzeptierter Systemleistungsbenchmark, der den Prozessor, die Speicherhierarchie und den Compiler misst. SPEC CPU95 verwendet dazu zwei Teilprogramme, SPEC INT95 und SPEC FP95, mit zehn bzw. acht
10.6 Zusammenfassung
115
Programmen, welche die Festkommaeinheit bzw. die Gleitkommaeinheit testen. Für beide Teilprogramme wird eine Zahl als gewichtetes Resultat der Einzeltests angegeben; grössere Zahlen
geben dann grössere Leistung an. Die Ergebnisse werden in SPECmarks angegeben.
116
10 Der SPEC CPU95 Benchmark
11
11Resultate und Analyse
In diesem Kapitel werden die gesammelten Resultate präsentiert. Soweit es mit den vorhandenen Informationen möglich war, werden diese kommentiert und analysiert.
Zuerst werden die Resultate von Viewperf, danach die von GLperf und zu guter Letzt die von
SPEC CPU95 präsentiert - jeweils mit der Angabe der Bedingungen, der Dokumentation von
Spezialtests und einer Analyse.
Die gesammelten Erkenntnisse werden in einer kurzen Zusammenfassung kommentiert.
11.1 Viewperf
Der Viewperf-Benchmark zeichnete sich durch Zuverlässigkeit aus. Es konnten keine speziellen Fehler dokumentiert werden. Es wurden diverse Spezialtests durchgeführt, um zum Beispiel
den Einfluss des Netzwerks zu messen.
11.1.1 Bedingungen beim Ausführen von Viewperf
Anzahl Durchläufe. Die Tests der Viewsets wurden bei allen Maschinen fünf mal laufen gelassen. Der ermittelte Wert für einen Test entspricht dem arithmetischen Mittel aus den Einzeltests.
Netzwerk. Die Maschinen waren alle am Netzwerk. Der Netzwerk Overhead ist nicht berücksichtigt worden, dürfte aber, da die Benchmarks über die Weihnachtstage (22. - 25. 12.1998)
und ansonsten am späten Abend (nach 21h00) liefen, sehr gering sein. (für den Spezialtest siehe
Abschnitt 11.1.3)
Benutzermodus. Die Resultate der Onyx2 wurden im “Single User Mode” durchgeführt. Alle
anderen Tests wurden im “Multi User Mode” durchgeführt.
Bildschirmauflösung. Die Auflösung war bei allen Maschinen 1280 × 1024 Pixel.
Farbtiefe. Die Farbtiefe war bei den SGI Computern bei 32 bit (true color), bei den Windows
NT-Rechnern nur bei 16 bit, da 32-bit Rendering von der FireGL 1000 nicht unterstützt wird.
117
118
11 Resultate und Analyse
11.1.2 Die Resultate
Die ausführlichen Resultate befinden sich auf der CD der Semesterarbeit. Es werden hier nur
die geometrischen Mittel der Einzeltests angegeben. .
ID
ProCDRS DX
DRV
AWadvs
Light
CDRS
gogh
5.825
8.3744
6.2192
15.22
0.97926
47.43
caroll
0.76428
1.6074
0.71552
1.257
0.19754
6.8806
escher
1.1642
3.5216
1.2336
1.1892
0.21906
11.382
mondrian 2.3344
3.056
2.3916
5.978
0.55002
16.746
birs
9.5702
15.798
9.939
17.438
1.5196
34.95
luxo
N/A
34.438
18.344
34.842
2.625
68.438
ppro
1.926
3.886
2.360
4.801
0.4675
14.92
ptwo
5.556
7.619
4.710
10.213
1.010
36.05
antimon
4.0608
4.2654
1.319
4.48075
0.35872
33.098
Tabelle 11.1: Viewperf Resultate in [Bilder pro Sekunde]
Abbildung 11.1:
Überblick Viewperf
ProCDRS Test auf Luxo. Der ProCDRS Test auf der Onyx2 konnte leider nicht durchgeführt
werden. Er wurde zweimal gestartet und die Maschine stürzte zweimal ab. Abklärungen haben
nichts über dieses Problem ergeben. Es kann hier nur angefügt werden, dass das Viewset noch
sehr neu ist und demzufolge noch der eine oder andere Fehler vorhanden sein könnte.
11.1 Viewperf
119
11.1.3 Der Test ohne Netzwerk
Zur näheren Betrachtung des Netzwerkoverheads wurde eine O2 vom Netz abgetrennt, die
Benchmarks laufen gelassen und dann mit den anderen Resultaten verglichen. In Tabelle 11.2
bezeichnet mondrian die Maschine mit Netzwerk und barks die Maschine ohne Netzwerk. Der
ID
ProCDRS DX
DRV
AWadvs
Light
CDRS
mondrian 2.3344
3.056
2.3916
5.978
0.55002
16.746
barks
3.0504
2.5242
6.038
0.55544
16.444
2.3902
Tabelle 11.2: Resultate mit und ohne Netzwerk
Benchmark lief zwischen 5% schneller bis fast 2% langsamer (Tabelle 11.3). Aus diesen Zahlen
kann man schliessen, dass das Netzwerk nicht alleine für die Varianzen in den Resultaten verantwortlich ist, das Betriebssystem spielt sicher die gleichgrosse Rolle.
ProCDRS DX
Differenz + 2.39%
- 1.84%
DRV
AWadvs
Light
CDRS
+ 5.25%
+ 0.99%
+ 0.98%
- 1.84%
Tabelle 11.3: Differenzen
Zur Kontrolle wurde ein Test-For-Zero-Mean durchgeführt. Dieser Test bestimmt, ob die Mittelwerte der beiden Tests nicht signifikant unterschiedlich sind.
Auf eine Erklärung des Tests wird hier verzichtet. In [10] sind die Details des Test-For-ZeroMean zusammengestellt.
Was
Resultat
Sample Mean
0.9883
Sample Variance
7.225
Sample Standard Deviation
2.688
Confidence Interval for Mean
0.9883 ± 7.225 ⁄ 5 = 0.9883 ± 1.2027
90% Confidence Interval
(-1.434, 3.410)
95% Confidence Interval
(-3.159, 5.835)
Tabelle 11.4: Test-For-Zero-Mean
Die Vertrauensintervalle beinhalten die Zahl Null. Somit sind die zwei Resultate nicht verschieden. Das heisst, dass man mit 95% (bzw. 90%)-Sicherheit nicht aussagen kann, ob der Unterschied der Mittelwerte signifikant von Null verschieden ist. Dies bedeutet, dass die Test mit und
ohne Netzwerk nicht verschieden sein müssen.
11.1.4 Application Binary Interfaces
Mit der gogh wurde ein Test durchgeführt, der zeigen sollte, ob die Definition des Application
Binary Interfaces ABI eine Rolle spielt. Tabelle 11.5 zeigt die Tests mit verschiedenen ABI’s.
Wie man sieht, können die Werte besser (gogh: CDRS), schlechter (gogh: AWadvs) oder etwa
gleich sein. Es muss somit je nach Anwendung die 64-bit oder die neue 32-bit ABI bevorzugt
120
11 Resultate und Analyse
werden. Als Folge daraus wurden auf den SGI Workstations mit R10000 Prozessor jeweils die
Tests mit beiden ABI’s durchgeführt. Das bessere Resultat wurde verwendet.
ID
ProCDRS DX
DRV
AWadvs
Light
CDRS
-64
5.8236
8.3744
6.2192
15.22
0.97926
33.59
-n32
5.825
8.373
6.179
13.15
0.9770
47.43
Tabelle 11.5: Resultate mit verschiedenen ABI’s auf den SGI Workstations (hier gogh)
ID
ProCDRS DX
DRV
AWadvs
Light
CDRS
-64
N/A
34.438
18.344
34.842
2.625
68.438
-n32
N/A
31.4
18.356
34.788
2.571
68.47
Tabelle 11.6: Resultate mit verschiedenen ABI’s auf den SGI Workstations (hier luxo)
11.1.5 Auflösungen
Bei den PC Workstations wurden die Tests in jeweils zwei Auflösungsstufen durchgeführt. Die
erste Zahl entspricht dem Resultat unter 1280 × 1024 Bildpunkten, die zweite Zahl demjenigen
unter 1024 × 768 Bildpunkten. Diese Zahlen sind in Tabelle 11.7 eingetragen. In den Resultatsübersichten sind wiederum nur die Werte mit der Auflösung 1280 × 1024 angegeben, da
diese auf allen Maschinen verwendet wurde.
Die Zahlen zeigen, dass der Einfluss der Auflösung sehr gering ist. Viewperf rendert immer im
gleichgrossen Fenster. Der Ausschnitt vom Monitrobild, der nicht von Viewperf gebraucht
wird, ist bei der höheren Auflösung grösser. Dieser Ausschnitt muss auch dargestellt werden.
Die kleinen Unterschiede kommen daher, dass die Graphikarte auch Ressourcen für diesen Ausschnitt braucht.
ID
ProCDRS DX
DRV
AWadvs
Light
CDRS
ppro
1280 × 1024
1.926
3.886
2.360
4.801
0.4675
14.92
ppro
1024 × 768
2.006
3.907
2.388
4.823
0.4695
15.20
ptwo 1280 × 1024
5.556
7.619
4.710
10.213
1.010
36.05
ptwo 1024 × 768
5.8484
8.185
5.2318
10.512
1.0294
40.862
Tabelle 11.7: Resultate mit verschiedenen Auflösungen auf den PC Workstations
11.1.6 Entkopplung des Bufferaustauschs vom vertikalen Refresh des Bildes
Die meisten OpenGL Implementationen unterstützen Doublebuffering, welche zwei komplette
Bildschirmbuffer zur Verfügung stellen. Ein Buffer wird am Monitor dargestellt, während im
anderen Buffer das neue Bild gezeichnet wird. Wenn das Zeichnen fertig ist, werden einfach
beide Buffer ausgetauscht, so dass in den zuvor dargestellten Buffer jetzt gezeichnet wird und
vice versa. Mit Doublebuffering sieht der Betrachter nie ein partiell gezeichnetes Bild.
Normalerweise wartet die swap_the_buffers Routine, welche den Pufferaustausch vornimmt,
bis die aktuelle Monitor Refresh Periode vorbei ist, so dass der gesamte vorherige Puffer angezeigt wird.
Um höhere CDRS Werte zu erlangen, kann die Synchronisation zwischen dem Monitor Refresh
und dem Bufferaustausch abgestellt werden. Auf der SGI Maschine wird das mit einer Umge-
11.1 Viewperf
121
bungsvariable gemacht. Diese heisst DECOUPLE_SWAPBUF und sie muss auf ‘y’ gesetzt
werden. (setenv DECOUPLE_SWAPBUF=’y’). Ohne diese Synchronisation kann der Bufferaustausch zu jeder Zeit während des Monitor Refreshs stattfinden, was zu Diskontinuitäten aber
auch zu höheren Messwerten führen kann.
Nehmen wir an, dass das System das Bild auf dem Monitor 60 Mal in der Sekunde erneuert.
Dies führt dazu, dass die höchste Bildrate, die wir erreichen können, 60 Bilder pro Sekunde ist.
Wenn alle Bilder unter 1 ⁄ 60 Sekunde gelöscht und gezeichnet werden können, wird die Animation glatt sein. Oft ist es aber der Fall, dass die Bilder zu kompliziert sind, um in 1 ⁄ 60
Sekunde gezeichnet zu werden, dann wird dasselbe Bild mehr als einmal auf dem Bildschirm
dargestellt. Wenn zum Beispiel ein Bild in 1 ⁄ 45 Sekunde gezeichnet wird, erhält man 30
Bilder pro Sekunde und das Graphiksystem macht 1 ⁄ 30 – 1 ⁄ 45 = 1 ⁄ 90 Sekunde pro Bild gar
nichts, was einem Drittel der Zeit entspricht. Wenn wir nun die Synchronisation abstellen, kann
diese Zeit auch benutzt werden.Wie man in Tabelle 11.9 sieht, spielt dies hauptsächlich beim
CDRS Viewset eine Rolle. Auf der gogh erzielt man damit 10 Bilder pro Sekunde mehr.
Auf der Onyx2 Maschine ergibt sich durch Ausschalten der Synchronisation für das CDRS
Viewset ein Wert von 157.25 (Tabelle 11.8). Dies ist ein Leistungszuwachs von 230%. Beim
AWadvs Viewset ist der Leistungsunterschied 30%.
Zur Publikation auf der Viewperf Homepage [17] werden von den meisten Herstellern die
Resultate mit dieser Entkoppelung angegeben. Dies ist sicher nicht richtig, da die Qualität der
gerenderten Bilder sehr schlecht ist.
ID
DX
DRV
AWadvs
Light
CDRS
sync.
34.438
18.344
34.842
2.625
68.438
no sync.
37.495
23.215
45.17
2.599
157.25
Tabelle 11.8: Resultate mit und ohne Synchronisation (Beispiel luxo)
ID
ProCDRS DX
DRV
AWadvs
Light
CDRS
sync.
5.825
8.3744
6.2192
15.22
0.97926
47.43
no sync.
5.8236
8.928
6.471
16.252
0.98372
57.012
Tabelle 11.9: Resultate mit und ohne Synchronisation (Beispiel gogh)
122
11 Resultate und Analyse
11.1.7 Analyse
Abbildung 11.2:
Viewperf - Light Viewset
Texture Engine. Das Fehlen der Texture Engine bei den Indigo2 XZ und Extreme-Systemen
(caroll, escher) zeigt sich deutlich bei den ProCDRS, CDRS und AWadvs Viewsets. Dabei
werden die texturierten Tests jeweils schneller von caroll (schnellerer Prozessor, schlechtere
Graphik) durchgeführt. Das Textur-Mapping wird also tatsächlich durch die CPU ausgeführt.
ID
1
2
3
4
5
6
7
8
9
10
caroll
3.00
1.90
0.45
0.49
0.14
0.06
0.15
0.07
0.28
0.30
escher
4.01
3.17
0.99
0.99
0.10
0.05
0.08
0.05
0.63
0.65
Tabelle 11.10: ProCDRS Resultate für die Indigo2-Systeme
Geometry Engine. Bei den FireGL 1000-Systemen zeigt sich deutlich, dass die heutigen PCGraphikbeschleuniger ohne Geometry Engine stark vom Hauptprozessor abhängig sind. Die
Messungen des Pentium II-Systems mit der AGP Karte sind bei allen Viewsets mehr als doppelt
so gut, wie diejenigen des Pentium Pro-Systems. Es ist nicht nur der Prozessor des Pentium IISystems, der doppelt so schnell ist. Auch die Daten können doppelt so schnell vom Speicher auf
die Graphikkarte übertragen werden. Dies zeigt sich speziell bei den Wireframe Tests von
ProCDRS: da ist das Pentium II/AGP System viermal schneller (doppelte CPU-Leistung, doppelte Speicherbandbreite) als das Pentium Pro System.
ID
1
2
3
4
5
6
7
8
9
10
ppro
2.26
2.40
1.67
2.15
1.40
1.78
1.19
1.60
1.15
1.55
ptwo
9.21
9.56
3.96
4.84
3.23
3.86
2.77
3.57
2.69
3.48
Tabelle 11.11: ProCDRS Resultate für die Pentium-Systeme
11.1 Viewperf
123
Abbildung 11.3:
Viewperf - ProCDRS Viewset: Display List Build-Time
Texture Engine II. Bei der Sun Ultra 1 mit der Creator3D-Karte fehlt ebenfalls die TextureMapping Hardware. Dies hat ebenfalls schlechte Werte bei den ProCDRS, CDRS und AWadvs
Viewsets zur Folge.
ID
1
2
3
4
5
6
7
8
9
10
antimon
10.3
9.97
2.71
2.89
0.61
0.62
0.55
0.56
2.25
2.53
Tabelle 11.12: ProCDRS Resultate für die Sun Ultra1 mit Creator3D
Verhältnis zwischen Preis und Leistung. Das Maximum Impact- und das Pentium II-System
sind ebenbürtig, mit kleinen Vorteilen für die SGI Maschine. Dies zeigt sich bei den DRV und
AWadvs Viewsets, vorallem bei komplexen Szenen. Zu beachten ist, dass das Maximum
Impact-System um einen Faktor 15 teurer ist als das Pentium II-System.
Display List. Die Pentium II-Systeme haben grosse Mühe, eine Display List schnell aufzubauen. Bei den PC-Systemen werden die Display Lists durch den Systemprozessor aufgebaut
und nicht, wie bei allen anderen Systemen, durch das Graphiksubsystem. Dies führt dazu, dass
alle Daten vom Graphiksubsystem über den Bus (PCI oder AGP) an die CPU transferiert
werden müssen. Dort werden sie abgearbeitet und schliesslich zum Graphiksubsystem (erneut
über den langsamen Bus) zurücktransferiert. Die Maschinen sind zwischen einem Faktor 20
(Pentium II/AGP) und einem Faktor 60 (Pentium Pro/PCI) langsamer als das Maximum Impact
System.
Onyx2. Die Onyx2 mit Infinite Reality2-System ist das Mass aller Dinge. Sie ist fast bei allen
Test doppelt so schnell, wie die anderen Systeme. Speziell bei Wireframe Rendering ist sie fast
viermal so schnell wie die Octane MXE.
124
11 Resultate und Analyse
Abbildung 11.4:
Viewperf - ProCDRS Viewset
Wireframe Rendering. Die Leistungen beim Wireframe Rendering wirft einige Fragen auf.
Die Onyx2 und die Indigo2 Maximum Impact zeigen einen deutlichen Leistungsvorsprung
gegenüber der Octane oder den Pentium-Systemen. Die Graphikpipeline wird jedoch bei Wireframe Rendering Aufgaben gleich abgearbeitet, wie im normalen Modus, bis auf das Fehlen der
Shading Operationen. Nur scheint es unrealistisch, dass die Onyx2 für Shading Operationen
viel mehr Zeit braucht als die Octane.
Eine mögliche Erklärung betrifft den Hidden-Line Removal Algorithmus. Während im Solid
Rendering ein (einfaches) Hidden-Surface Removal gemacht wird (mittels Z-Buffer), muss für
Wireframe Rendering das komplexere Hidden-Line Removal durchgeführt werden. HiddenLine Removal wird dabei nicht in Hardware unterstützt. Es gibt zwei Techniken um dies mit
Hilfe der Hidden-Surface Removal Funktionen durchzuführen, entweder mit Polygon Offset
oder mit dem Stencil Buffer. Die Lösung mit Polygon Offset ist die bevorzugte Technik, da sie
fast immer schneller ist. Dabei wird jedes Objekt zweimal gezeichnet. Die hervorgehobenen
Eckpunkte werden in der Vordergrundfarbe gezeichnet, mit gefüllten Polygonen, aber im
GL_LINE Polygon-Modus, um sie als Wireframe zu rasterisieren. Danach werden die gefüllten
Polygone im Standard Polygon-Modus gezeichnet. Dies füllt das Innere des Wireframes. Man
weist einen genügend grossen Polygon Offset zu, um die gefüllten Polygone ein bisschen weiter
weg vom Betrachter zu bringen. Mit diesem Polygon Offset tritt das Innere genügend zurück,
damit die hervorgehobenen Eckpunkte ohne unerwünschte visuelle Artefakte gezeichnet werden.
Dies zeigt deutlich, dass das Hidden-Line Removal viel aufwendiger ist als das Hidden-Surface
Removal, wenn keine Hardware-Unterstützung für Hidden-Line Removal vorhanden ist und es
mit diesen Techniken gelöst werden muss.
Die Octane und die Pentium-Systeme scheinen einen komplexeren Hidden-Line Removal
Algorithmus zu implementieren als die Infinite Reality2 und Maximum Impact.
Abbildung 11.5 zeigt den Algorithmus für den Hidden-Line Algorithmus mit Polygon Offset,
wie er im OpenGL Programming Guide der Insight Library von SGI beschrieben wird. Um ein
Hidden-Surface Removal durchzuführen, muss man nur die erste Zeile (glEnable(GL_DEPTH_TEST) ausführen und dann die Polygone zeichnen.
11.1 Viewperf
125
glEnable(GL_DEPTH_TEST);
glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
set_color(foreground);
draw_object_with_filled_polygons();
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glEnable(GL_POLYGON_OFFSET_FILL);
glPolygonOffset(1.0, 1.0);
set_color(background);
draw_object_with_filled_polygons();
glDisable(GL_POLYGON_OFFSET_FILL);
Abbildung 11.5:
Beispiel Hidden-Line Algorithmus mit Polygon Offset
126
11 Resultate und Analyse
11.2 GLperf
Der GLperf-Benchmark zeichnete sich durch Unzuverlässigkeit aus. Verschiedene Tests stürzten immer wieder ab. Zusätzlich fehlten in den Log-Dateien immer wieder Fragmente der
eigentlichen Ausgabe.
11.2.1 Bedingungen beim Ausführen von GLperf
Anzahl Durchläufe. Die Tests wurden bei allen Maschinen nur einmal laufen gelassen. Auf der
Onyx2 wurden die Tests fünfmal ausgeführt. Da die Laufzeit bei allen anderen Maschinen aber
dermassen lang war (ca. 22 Stunden), wurde bei den anderen Maschinen auf mehrfache Tests
verzichtet.
Netzwerk. Die Maschinen waren alle am Netzwerk. Der Netzwerk Overhead ist nicht berücksichtigt worden, dürfte aber, da die Benchmarks in der Nacht liefen, sehr gering sein.
Benutzermodus. Die Resultate der Onyx2 wurden im “Single User Mode” ausgeführt. Alle
anderen Tests wurden im “Multi User Mode” durchgeführt.
Bildschirmauflösung. Die Bildschirmauflösung war bei allen Maschinen 1280 × 1024 Pixel.
Farbtiefe. Die Farbtiefe war bei den SGI Computern bei 32 bit (true color), bei den Windows
NT-Rechnern nur bei 16 bit, da 32-bit Rendering von der FireGL 1000 nicht unterstützt wird.
11.2.2 Die Resultate
Die für diese Arbeit relevanten Zahlen werden durch die folgenden Skripte abgedeckt:
Skript
Beschreibung
Spezielles
TexImage.rgb misst Leistung der
glTexImage2D RGB
Operationen.
nur Display List Modus
500 × 500 Pixel grosse Quads
flat- und smotth-shaded,
nearest-neighbor, lineare und trilineare Filterung
FillRate.rgb
Pixelfüllraten
Immediate und Display List Modus
Triangle Strips
1-541 Pixel grosse Dreiecke
flat- und smotth-shaded,
nearest-neighbor, lineare und trilineare Filterung
Light.rgb
misst Einfluss der Anzahl Lichtquellen für
das Zeichnen einer Primitive
Immediate und Display List Modus
Triangle Strips und Quads
smooth-shaded, Z-buffered
0-8 Lichtquellen
TriFill.rgb
Dreieckfüllraten
Texture-Download und Texturwechsel Tests
Texturwechsel: Display List oder Texture Object
32 × 32 - 2048 × 2048 Pixel grosse Texturen
Tabelle 11.13: Die 4 verwendeten Scripts von GLperf
Antimon (Sun). Die Tests konnten auf der Sun mit dem komplierten GLperf nicht durchgeführt
werden. Beim Aufruf mit einem OPC Skript stürzte das Programm jeweils mit einem Segmentation Fault ab. Abklärungen haben ergeben, dass es ein FLTBOUNDS Fehler ist. Dies ist eine
Floating Point Ausnahme. Leider konnte der Fehler nicht behoben werden.Mit dem von Sun
11.2 GLperf
127
zur Verfügung gestellten Programm konnten die Tests dann ohne Probleme durchgeführt werden. Die Ergebnisse sind aber mit Vorbehalt zu geniessen, da keine Angaben über das Kompilieren und eventuelle Veränderungen vorhanden sind.
11.2.3 TexImage - Texture Download/Switching
Die Ergebnisse dieser Tests sind in Millionen Texture Elements (Texels) pro Sekunde Die Tests
laufen alle im Immediate Modus.
•
Texture Download, RGB
Texturgrösse
32 × 32 64 × 64 128 × 128 256 × 256 512 × 512 1024 × 1024 2048 × 2048
gogh
4.92
9.45
18.9
19.5
23.9
34.2
4.47
caroll
2.64
3.65
4.10
4.10
2.81
2.84
0.317
escher
1.99
2.16
3.10
3.24
2.31
2.33
0.269
mondrian 3.11
7.17
8.79
9.78
9.07
8.22
4.11
birs
7.41
23.6
44.7
59.0
64.5
66.7
56.0
luxo
8.69
26.5
38.9
65.3
79.9
84.1
84.9
ppro
3.69
7.55
4.27
4.00
1.53
0.592
0.750
ptwo
6.95
12.6
8.31
8.09
8.15
3.51
1.36
antimon
6.13
8.44
8.68
7.68
8.60
8.35
7.01
Tabelle 11.14: Texture Download im RGB Farbmodus
•
Texture Download, RGB α
Texturgrösse
32 × 32 64 × 64 128 × 128 256 × 256 512 × 512 1024 × 1024 2048 × 2048
gogh
4.54
12.1
20
24.3
25.8
26.1
4.53
caroll
2.19
2.97
2.84
2.63
2.13
2.13
0.316
escher
1.71
1.75
2.11
2.06
1.74
1.75
0.266
mondrian 5.30
10.5
19.4
20.9
16.1
13.3
4.08
birs
7.28
22.2
43.2
58.0
64.1
66.1
47.5
luxo
8.69
26.7
38.4
64.4
78.5
81.7
82.0
ppro
4.16
7.67
7.83
8.81
1.22
0.518
0.644
ptwo
8.63
14.5
14.9
17.5
15.1
2.83
1.19
antimon
10.5
22.6
25.6
20.9
18.4
19.3
17.6
Tabelle 11.15: Texture Download im RGB α Farbmodus
128
11 Resultate und Analyse
Die Ergebnisse dieser Tests sind in Millionen Texture Elements (Texels) pro Sekunde Die Tests
laufen alle im Immediate Modus.
•
Texture Download, RGB, mipmapped
Texturgrösse
32 × 32 64 × 64 128 × 128 256 × 256 512 × 512 1024 × 1024 2048 × 2048
gogh
1.06
3.32
7.46
10
22.6
23.9
13.8
caroll
1.12
1.93
2.17
2.22
2.10
2.12
0.604
escher
0.870
1.54
1.65
1.78
1.72
1.74
0.500
mondrian 0.995
2.54
4.74
6.23
6.41
6.16
24.7
birs
1.67
5.39
15.1
30.2
42.4
66.4
26.6
luxo
0.166
0.594
2.05
6.70
17.8
32.5
41.6
ppro
3.33
6.86
4.36
3.96
1.53
0.589
0.750
ptwo
6.28
12.0
8.26
8.16
8.18
3.50
1.34
antimon
2.39
4.59
5.89
6.27
6.16
6.22
6.38
Tabelle 11.16: Texture Download im RGB Farbmodus, Mipmapped
•
Texture Download, RGB α , mipmapped
Texturgrösse
32 × 32 64 × 64 128 × 128 256 × 256 512 × 512 1024 × 1024 2048 × 2048
gogh
1.04
3.01
7.99
13.9
17.3
26.1
10.4
caroll
0.934
1.55
1.64
1.68
1.55
1.59
0.597
escher
0.733
1.22
1.32
1.36
1.30
1.31
0.499
mondrian 1.18
2.99
7.25
10.4
10.4
9.67
3.87
birs
1.65
5.31
14.8
29.7
41.9
65.9
26.3
luxo
0.168
0.597
2.07
6.71
17.7
32.0
40.6
ppro
3.76
7.84
7.73
8.73
1.22
0.514
0.641
ptwo
7.82
14.5
14.7
17.1
15.1
2.84
1.17
antimon
2.98
7.94
13.7
13.9
13.4
13.2
13.4
Tabelle 11.17: Texture Download im RGB α Farbmodus, Mipmapped
11.2 GLperf
129
Die Ergebnisse dieser Tests bezeichnen geladene Texturbilder pro Sekunde. Die Tests liefen im
Display List Modus, im RGB Farbraum. Die Textur ist 64 × 64 Pixel gross.
•
Texture Switching (Texture Binding with Display List)
Gezeichnete Primitive zwischen
dem Laden
Keine Primitive
Texurierter Punkt
Texturiertes
Dreieck
gogh
3140
2840
2840
caroll
797
790
755
escher
643
627
599
mondrian
1690
1680
1660
birs
6500
5350
5320
luxo
2710
2710
2710
ppro
16200
12200
12200
ptwo
498000
152000
160000
antimon
105000
45700
40100
Tabelle 11.18: Texture Switching im RGB Farbmodus
•
Texture Switching (Texture Binding with TexObj)
Gezeichnete Primitive zwischen
dem Laden
Keine Primitive
Texurierter Punkt
Texturiertes
Dreieck
gogh
1400000
115000
85700
caroll
27400
14100
8790
escher
21000
11300
6750
mondrian
10400
28900
24800
birs
1960000
161000
119000
luxo
189000
184000
177000
ppro
-
-
-
ptwo
-
-
-
antimon
-
-
-
Tabelle 11.19: Texture Switching im RGB Farbmodus
130
11 Resultate und Analyse
Die Ergebnisse dieser Tests bezeichnen geladene Texturbilder pro Sekunde. Die Tests liefen im
Display List Modus, im RGB Farbraum. Die Textur ist Pixel gross.
•
Texture Switching, mipmapped (Texture Binding with Display List)
Gezeichnete Primitive zwischen
dem Laden der
Textur
Keine Primitive
Texurierter Punkt
Texturiertes
Dreieck
gogh
743
742
738
caroll
530
521
505
escher
395
396
386
mondrian
580
617
613
birs
1250
1190
1200
luxo
143
143
142
ppro
15800
12000
12000
ptwo
405000
141000
149000
antimon
18900
15200
14700
Tabelle 11.20: Texture Switching im RGB Farbmodus, Mipmapped
•
Texture Switching, mipmapped (Texture Binding with TexObj)
Gezeichnete Primitive zwischen
dem Laden der
Textur
Keine Primitive
Texurierter Punkt
Texturiertes
Dreieck
gogh
1410000
54700
46800
caroll
22200
14900
8620
escher
17000
11200
6050
mondrian
42400
27800
24700
birs
1980000
82100
63100
luxo
189000
184000
177000
ppro
-
-
-
ptwo
-
-
-
antimon
-
-
-
Tabelle 11.21: Texture Switching im RGB Farbmodus, Mipmapped
11.2 GLperf
131
Texture Switching. Bei den Texture Switching Tests kann man die Verwendungsart der Texturen wählen (TexImageSrc). Zur Auswahl stehen Display List (TexImageSrc DisplayList) und
Texture Objects (TexImageSrc TexObj). “Display Listed” Texturen werden von den SGI Graphiksubsystemen (e.g. MXE, IR etc.) nicht optimiert, da alle Anwendungen Texturobjekte verwenden.
Texure “Binding” ist ein Ausdruck aus der IRIS GL, dem Vorgänger von OpenGL. Die Idee
dahinter ist, dass viele Texturen im Textur-Speicher verbleiben, und dass die jeweils benötigte
Textur vor dem Rendering “gebunden” wird. Vor OpenGL 1.1 (oder der “texture_object”Extension für OpenGL 1.0) war der einzige Weg dies zu tun, die Texturen in eine Display List
einzufügen. Dies war jedoch nicht befriedigend, da Display Lists unveränderlich sind und viele
OpenGL Benutzer die Texturdefinition nach der Initialisierung noch verändern wollten. So kam
die Idee der Textur Objekte und des glTexBind[EXT] Calls auf, welche die gleiche Funktionalität erlaubt wie in der IRIS GL.
Wenn für die Texture Switching Tests die Verwendungsart der Textur (TexImageSrc) auf “DisplayList” gesetzt wird, kann die Switching-Leistung für in Display Lists gebundene Texturen
gemessen werden. Entsprechend kann, wenn die Verwendungsart auf “TexObj” gesetzt wird,
die Switching-Leistung für Textur Objekte gemessen werden.
Abbildung 11.6:
GLperf - Texture Download (immediate, RGB α )
Texture Download Analyse.
Die Onyx2 Infinite Reality2 ist auch hier das Mass aller Dinge. In den Texture Download Tests
kommt das System auch noch mit der 24 MByte grossen Textur ( 2048 × 2048 im RGB α
Modus) zurecht. Das System besitzt 80 MByte Texturspeicher und kann diesen Speicher auch
schnell füllen. Ein Test mit einer noch grösseren, 96 MByte Textur ( 4096 × 4096 im RGB α
Modus) führte jedoch zu einem Systemabsturz. Dabei wäre interessant gewesen, die Grösse zu
bestimmen bei welcher die Onyx2 den Einbruch erleidet. Die Spitze der Leistung scheint ja bei
der 24 MByte Textur noch nicht erreicht.
132
11 Resultate und Analyse
Abbildung 11.7:
GLperf - Texture Switching (Display List or Texture Object,
64 × 64 Pixels Texture, RGB)
Die FireGL 1000-Karte ist eindeutig für kleinere Texturgrössen entwickelt worden. Die Leistung erreicht einen Höhepunkt bei einer Texturgrösse von 0.375 MByte ( 256 × 256 im RGB α
Modus).
Die O2 mit der UMA Speicherarchitektur könnte eigentlich einen Texture Download durch
simples Pointer-Umsetzen realisieren, da der Texturspeicher und der normale Speicher physikalisch am selben Ort ist. Dies scheint aber nicht der Fall zu sein, da die Geschwindigkeit einem
normalen Kopieren entspricht.
Die Indigo2 XZ und Extreme-Systeme besitzen keine Hardware Unterstützung für Texture
Mapping und keinen speziellen Texturspeicher. Dies führt zu sehr schlechten Resultaten in den
Texture Download Tests.
Texture Switching Analyse.
Die Tests zeigen, dass das Onyx2 System einfach in jedem Test durch Homogenität glänzt. Sie
zeigt zwar bei den Tests, bei welchen keine Primitive zwischen dem Laden der Textur gezeichnet wird, keine Spitzenleistung. Sie hält diese Leistung jedoch auch bei veränderten Bedingungen (zeichnen von Punkten und Dreiecken zwischen den Ladevorgängen) bei.
Die Octane MXE und das Maximum Impact System besitzen eine andere Charakteristik. Sie leisten fast zehnmal mehr Texturelemente pro Sekunde als die Onyx2, wenn keine Primitive zwischen dem Laden der Texturen gezeichnet wird. Müssen jedoch dazwischen noch etwas
gezeichnet werden, sinkt deren Leistung unter die Hälfte der Leistung des Onyx2-Systems.
Das Pentium II-System zeigt eine erstaunliche Leistung bei diesen Tests und erzielt bei allen
Tests mit kleinen Texturen gute Leistungen.
11.2 GLperf
133
11.2.4 Light - Lichtquellen
Alle Ergebnisse bezeichnen Millionen Dreiecke pro Sekunde. Die Dreiecke sind in Triangle
Strip zusammengefasst. Die Tests laufen im Display List Modus und im RGB Farbraum. Das Z
Buffering ist eingeschaltet und wir rendern im Smooth Shaded Modus
Licht0
quellenanzahl
1
2
3
4
5
6
7
8
gogh
2.00
1.78
1.22
1.07
0.949
0.855
0.776
0.713
0.659
caroll
0.241
0.179
0.139
0.121
0.108
0.0952 0.0877 0.0805 0.0741
escher
0.560
0.402
0.310
0.264
0.231
0.206
0.184
0.168
0.154
mondrian 0.679
0.486
0.443
0.408
0.377
0.349
0.327
0.307
0.289
birs
2.07
2.07
1.73
1.51
1.34
1.20
1.09
1.00
0.923
luxo
3.75
3.75
3.75
3.75
3.32
2.91
2.60
2.35
2.14
ppro
0.484
0.484
0.394
0.344
0.302
0.268
0.236
0.214
0.196
ptwo
0.742
0.742
0.742
0.742
0.688
0.609
0.535
0.484
0.444
antimon
0.829
0.717
0.507
0.419
0.362
0.320
0.290
0.256
0.239
Tabelle 11.22: Lichtquellen
Analyse
Die Onyx2 IR zeigt hier die wahren Stärken. Die Onyx2 ist bis 3 Lichtquellen durch die Raster
Engine limitiert. Mit mehr Raster Engines würde die Onyx2 eine Leistung von 5.11 Millionen
Dreiecke pro Sekunde erreichen. Diese Resultate zeigen, dass die Geometry Engine des Infinite
Reality2 Systems deutlich leistungsfähiger ist, als diejenige der Octane MXE. Der Unterschied
der beiden Systeme entspricht einem Faktor 2.47. Die Geometry Engine GE16 der Onyx2 Infinite Reality2 leistet somit etwa 3.320 GFLOPS.
Die Octane und die Maximum Impact sind ohne Lichtquelle fast gleich schnell - beide kommen
auf zwei Millionen Dreiecke pro Sekunde. Bei keiner und einer Lichtquelle ist die Octane MXE
nicht durch die Geometry Engine limitiert, sondern durch die Raster Engine. Dies zeigt sich
deutlich, weil die Leistung bei beiden Tests gleich ist. Danach wird die Leistung durch die Geometry Engine limitiert. Die Geometry Engines GE12 der Octane MXE leisten zusammen 1344
MFLOPS, diejenigen des Maximum Impact-Systems, zwei GE11 Geometry Engines, zusammen 960 MFLOPS. Das führt zu 40% mehr Leistung der Geometry Engines der Octane gegenüber denjenigen des Maximum Impact-Systems. Die Resultate für mehrere Lichtquellen sind
genau um diesen Faktor 1.4 verschieden.
Ähnlich sieht es aus, wenn man das Maximum Impact-System mit der O2 vergleicht. Der Leistungsunterschied der Geometry Engines (bei der O2 ist das der R5000 Prozessor) ergibt einen
Faktor 2.67. Die Resultate des Maximum Impact-Systems sind genau um diesen Faktor besser
als diejenigen der O2. Auch bei den Indigo2 XZ und Extreme Systemen, wo die Geometry
Engine GE7 eingesetzt werden (viermal 32 MFLOPS für das XZ System (total 128 MFLOPS)
und achtmal 32 MFLOPS für das Extreme-System (total 256 MFLOPS)) kann man diese Vergleiche anstellen.
Es zeigt sich, dass dieser Test sehr gut geeignet ist, die Geometry Engines miteinander zu vergleichen.
134
11 Resultate und Analyse
Abbildung 11.8:
GLperf - Lights (Triangle Strips, RGB, Display List, Smooth
Shaded, Z-Buffered)
Die Resultate der Pentium II Maschine wird bis zu 3 Lichtquellen durch die Raster Engine auf
dem Permedia-Chip limitiert. Danach ist die Geometry Engine, der Pentium Prozessor (Pro und
II), für die Limitierung verantwortlich. Das Pentium II-System verzeichnet 11.2 SpecMarks für
die Floating-Point Tests, das Pentium Pro-System hingegen nur 4.99 SpecMarks. Das Pentium
II-System bietet somit 2.24 mal mehr Leistung für Floating Point Berechnungen. Die Resultate
für mehrere Lichtquellen unterscheiden sich um den Faktor 2.27. Da die Beleuchtungsberechnungen ausschliesslich von der FP Unit des Prozessors übernommen werden, verdeutlicht dies,
dass die Berechnungen tatsächlich von der CPU durchgeführt werden.
System
Totale MFLOPS
Indigo2 XZ
128
Indigo2 Extreme
256
Indigo2 Maximum Impact
960
O2 R5000 @ 180 MHz
ca. 360
Octane MXE
ca. 1344
Onyx2 Infinite Reality2
ca. 3320
Sun Ultra1 170 Creator3D
ca. 370
Pentium Pro @ 180 MHz
ca. 310
Pentium II @ 400 MHz
ca. 700
Tabelle 11.23: Beleuchtungsberechnungen
11.2 GLperf
135
In Tabelle 11.23 werden die geschätzten Leistungen der Geometry Engines (oder der die Geometrieberechnungen durchführenden Prozessoren) in MFLOPS wiedergegeben.
11.2.5 FillRate - Pixelfüllraten
Alle Ergebnisse bezeichnen Millionen Pixel pro Sekunde. Die Tests laufen im Display List
Modus, mit 500 × 500 Pixel grosse Quadraten und im RGB Farbraum. Die Textur ist 64 × 64
Pixel gross und ebenfalls im RGB Farbraum.
Modi
flat
flat,
Z
smooth
smooth,
Z
smooth,
Z,
nearest
smooth,
Z,
linear
smooth,
Z,
trilinear
gogh
235
171
235
172
116
116
116
caroll
37.8
33.7
37.9
33.7
0.32967
0.22782
0.10857
escher
75.2
74.9
75.2
74.9
0.256533 0.17149
0.08904
mondrian 65.9
58.9
65.8
58.8
35.1
34.3
31.1
birs
240
175
239
175
131
131
131
luxo
236
218
236
218
121
122
122
ppro
303
46.4
79.2
46.4
24.37
17.61
7.577
ptwo
623
77.6
81.9
77.6
39.4
25.4
13.61
antimon
56.9
56.9
54.9
56.0
9.21
9.25
9.10
Tabelle 11.24: Pixelfüllraten
Analyse
Auffallend sind die zwei sehr hohen Zahlen des Flat-Shaded Tests für die Intel Maschinen. Es
konnte dabei keine Erklärung gefunden werden, ob dies ein Fehler ist oder ob dies wirklich der
Realität entspricht. Denkbar wäre eine Optimierung für den Flat-Shaded Modus bei diesen
Maschinen. Da dieser Modus aber visuell keine guten Renderingresultate liefert, scheint es eher
ein Fehler zu sein. Wenn man diese Resultate mit denjenigen auf der SPEC Homepage vergleicht, fällt auf, dass für Intel-Systeme die Leistungen für Flat- und Smooth-Shaded (ohne ZBuffer) gleich sind. Somit scheinen Werte im Bereich 80 MPixels/s für die Flat-Shaded Tests
realistischer. Ein erneutes Durchführen der Tests brachte aber leider keine Verbesserungen.
Wiederum kann man Vergleiche zwischen den drei Indigo2-Systemen durchführen. Das
Extreme System (escher) besitzt zwei Raster Engines RE3, während das XZ System (caroll) nur
über einen RE3 verfügt. Das Extreme System bietet dann auch die genau doppelte Leistung des
XZ Systems. Bei den Textur-Tests (letzten drei Spalten in Tabelle 11.24) fällt auf, dass weder
das XZ noch das Extreme System Texture-Mapping in Hardware durchführen. Der Host-Prozessor (der R4400) ist dafür verantwortlich. Da das XZ System den schnelleren Prozessor (200
MHz gegenüber 150 MHz) besitzt, ist die Leistung auch dementsprechend besser als beim
Extreme System.
Das Maximum Impact System mit zwei Raster Engines vom Typ RE4 und je zwei Texture
Engines bietet die viel bessere Leistung als die XZ oder Extreme Systeme. Die Texture Engines
führen auch zu guten Resultaten für die Textur-Tests.
Interessant ist, dass hier das Onyx2 System nicht viel besser ist als die Octane oder das Maximum Impact System. Doch durch die Möglichkeit noch mehr Raster Manager (vom Typ RM9s)
136
11 Resultate und Analyse
Abbildung 11.9:
GLperf - Pixel Fill Rates ( 500 × 500 Pixels Quad, RGB, Display
List, 64 × 64 Pixels Texture)
dazu zu installieren, wäre eine höhere Leistung der Onyx2 möglich. Die Skalierbarkeit der
Onyx2 mit mehreren Pipelines und mehreren Raster Managern kann hier natürlich nicht berücksichtigt werden.
11.2.6 TriFill - Dreieckfüllraten
Alle Ergebnisse bezeichnen Millionen Dreiecke pro Sekunde. Die Dreiecke sind in Triangle
Strip zusammengefasst. Die Tests laufen im RGB Farbraum.
Uns interessierten die folgenden Modi:
•
Immediate, Flat Shaded, Z Buffering
•
Display List, Flat Shaded, Z Buffering
•
Display List, Smooth Shaded, Z Buffering
•
Display List, Smooth Shaded, Z Buffering, 1 Infinite Light
•
Display List, Smooth Shaded, Nearest Texture, 1 Infinite Light
•
Display List, Smooth Shaded, Linear Texture, 1 Infinite Light
•
Display List, Smooth Shaded, Trilinear Texture, 1 Infinite Light
Das Verhalten der ersten vier Tests ist sehr ähnlich. Deshalb wird als Beispiel der Test smoothshaded, Z-buffered, 1 infinite light besprochen. Ebenso sind die texturgefilterten Resultate vergleichbar ausgefallen. Als Beispiel wird da der trilinear-filterted-texture-Test besprochen.
11.2 GLperf
137
Abbildung 11.10: GLperf - Triangle Fill Rates (Triangle Strip, RGB, Display List,
Smooth Shaded, Z Buffered, 1 Infinite Light)
Abbildung 11.11: GLperf - Triangle Fill Rates (Triangle Strip, RGB, Display List,
Smooth Shaded, Trilinear Filtered Texture, 1 Infinite Light)
138
11 Resultate und Analyse
Analyse
Der flache Anfang der Kurven zeigt offensichtlich einen Bereich, bei welchem die Leistung
unabhängig von der Dreiecksgrösse ist. In dieser Region nehmen wir an, dass das System geometrie limitiert ist - i.e. es sind die Berechnungen für die Transformation von Eckpunkten, die
Beleuchtungsberechnungen und das Dreiecks-Setup (welche alle unabhängig von der Dreiecksgrösse sind), welche das System zurückhalten - und nicht die Pixelfüllrate (Rasterisierung).
Abhängig vom System und dem Rendering-Modus kann dieser Flaschenhals auch von der CPU
und/oder von der Busbandbreite verursacht werden. Wenn die Dreiecke grösser werden, wird
irgendwann die Rasterisierung der limitierende Faktor werden. Dies hat zur Folge, dass die Leistung plötzlich abnimmt. Dieser Punkt und die Rate, bei welcher die Kurve fällt, kann benutzt
werden, um die Füllraten-Leistung eines Systems zu bestimmen.
Aus den Resultaten des Textur-Tests kann man wiederum sehen, dass die Geometry Engines
des Onyx2 Infinite Reality2 Systems viel stärker sind als diejenigen der Octane oder des Maximum Impact-Systems. Doch die Resultate zeigen auch deutlich, dass die Raster Engines/Managers der drei Systeme gleich gute Leistungen vollbringen.
Die anderen Systeme wiederspiegeln zu Beginn der Kurven eigentlich die CPU Leistungen.
Erst nach dem Abfall wird die Rasterisierung der Graphiksubsysteme getestet. Dort zeigt sich
die O2 als Spitzenreiter.
11.3 SPEC CPU95
Aus Zeitgründen konnten nicht alle Tests durchgeführt werden. Der Fokus lag eindeutig bei den
SGI Maschinen, da keine publizierten Resultate für sie verfügbar sind.
11.3.1 Bedingungen beim Ausführen von CPU95
Anzahl Durchläufe. Die Tests wurden bei allen Maschinen dreimal laufen gelassen. Der ermittelte Wert für einen Test entspricht dem Median aus den drei Einzeltests. Die resultierende
SPECmark ist das geometrische Mittel aus den Einzeltests.
Netzwerk. Die Maschinen waren alle am Netzwerk. Der Netzwerk Overhead ist nicht berücksichtigt worden, dürfte aber, da die Benchmarks am späten Abend (nach 21h00) liefen, sehr
gering sein.
Benutzermodus. Alle Tests wurden im “Multi User Mode” durchgeführt.
11.3.2 Die Resultate
Es werden hier nur die SPECmarks und die Medians der Einzeltests angegeben.
147.vortex. Der Benchmark 147.vortex konnte auf dem SGI Maschinen, auch nach Rücksprache mit SGI und der SPEC, nicht laufengelassen werden. Die Integer SPECmark der SGI wurde
aus dem geometrischen Mittel der anderen 7 Tests ermittelt.
11.3 SPEC CPU95
139
Tabelle 11.25 zeigt die Medians der Integer Tests.
ID
099.
go
124.
m88
ksim
126.
gcc
129.
compress
130.
li
132.
ijpeg
134.
perl
147.
vortex
gogh
9.31
8.82
7.92
8.64
7.45
8.02
10.2
N/A
caroll
3.70
2.49
3.01
4.04
3.75
3.38
3.97
N/A
escher
2.87
1.90
2.37
3.11
2.87
2.59
2.72
N/A
mondrian 5.43
5.03
4.84
3.96
5.29
4.78
6.27
N/A
birs
13.3
11.8
12.0
13.9
11.8
12.0
16.4
13.7
luxo
10.4
8.26
8.72
10.8
8.23
8.76
9.55
N/A
ppro
7.27
7.00
7.16
5.12
7.88
7.50
8.20
8.71
ptwo
14.6
15.7
14.8
11.8
15.8
15.6
17.8
17.3
antimon
5.96
4.71
5.13
5.93
4.50
5.64
5.22
5.15
Tabelle 11.25: CINT95
Tabelle 11.26 zeigt die Medians der Gleitkomma Tests.
ID
101.
tomcatv
102.
swim
103.
su2
cor
104.
107.
110.
hydro mgrid applu
2d
125.
141.
turb3d apsi
145.
146.
fpppp wave5
gogh
12.1
15.0
6.23
4.12
8.59
7.45
9.12
9.18
28.2
17.3
caroll
4.88
8.05
2.26
1.83
3.42
3.12
4.00
3.68
4.83
5.03
escher
3.97
6.64
1.85
1.54
2.80
2.48
3.12
3.04
3.66
4.00
mondrian 6.78
9.51
2.49
2.34
4.63
4.10
5.78
6.27
14.8
6.65
birs
26.1
41.5
10.9
10.7
18.1
13.2
16.0
15.1
35.0
27.0
luxo
24.2
33.9
10.1
10.7
18.5
11.7
13.3
15.6
26.7
24.6
ppro
7.72
11.1
2.69
3.01
2.84
2.88
5.14
5.25
9.59
6.44
ptwo
15.7
22.7
7.78
7.12
7.69
7.24
10.6
14.2
16.9
11.5
antimon
13.1
24.7
4.62
4.51
4.60
5.30
5.82
7.08
9.46
10.2
Tabelle 11.26: CFP95
140
11 Resultate und Analyse
Abbildung 11.12: SPEC int_base95 und SPEC fp_base95
Tabelle 11.27 zeigt die Baseline SPECmarks der Integer und Gleitkomma Tests.
ID
SPECint_base95
SPECfp_base95
gogh
8.50
10.2
caroll
3.43
3.80
escher
2.60
3.06
mondrian 4.96
5.50
birs
13.0
19.2
luxo
9.20
17.5
ppro
7.28
4.99
ptwo
11.6
11.2
antimon
5.26
7.61
Tabelle 11.27: Base SPECmarks 95
Bei den fettgedruckten Werten handelt sich um selber ausgeführte Messungen, alle anderen sind
von der SPEC Homepage [18]. Das Ziel dieser Werte war nicht das System absolut zu benchmarken, sondern die Unterschiede der einzelnen Maschinen zu ermitteln. Da die Zeit drängte,
wurden dann die Resultate von besagter WWW-Seite genommen. Dies reicht, um einen Überblick der Systeme zu erhalten.
11.3 SPEC CPU95
Abbildung 11.13: CINT95 Resultate
141
142
11 Resultate und Analyse
Abbildung 11.14: CFP95 Resultate
11.4 Schlussbemerkungen
143
11.4 Schlussbemerkungen
Es zeigte sich, dass die “starken” SGI Systeme doch noch eine Klasse für sich sind, sowohl in
der Leistung wie auch im Preis. Die Onyx2 Infinite Reality2 überflügelte die anderen System
in fast jedem Test. Einzig die Leistung der Raster Engine der Onyx2 wird von der Octane und
dem Maximum Imapct System erreicht. Es wäre somit sinnvoll, das getestete Onyx2 System
mit mehr Raster Engines zu bestücken.
Die PC-Systeme zeigen trotz ihres günstigen Preises eine erstaunliche Leistung.
Die Kombination zwischen Standard-Systemkomponenten (Intel-Prozessoren, Windows NT)
und dedizierter Graphikhardware, wie sie SGI neu auch in den Visual Workstations einsetzt,
ergibt neue Möglichkeiten zur Optimierung des Preis/Leistungs-Verhältnisses.
144
11 Resultate und Analyse
12
12Schlussworte
12.1 Zusammenfassung
Das Ziel dieser Arbeit war einerseits die Beschreibung aller Systeme. Dazu wurde hauptsächlich im Internet nach Informationen gesucht, sogenannte White Papers durchforscht und wenn
nötig direkt mit den Herstellern diskutiert.
Andererseits befassten wir uns mit der Leistungsmessung und der Analyse dieser Messungen.
Dazu wurden Standard-Bechmarks verwendet, welche von der Standard Performance Evaluation Corporation SPEC entwickelt werden. Der grosse Zeitaufwand war dabei das Compilieren
der Programme auf den Rechnern, was sich als sehr schwierig entpuppte.
Die Analyse der Resultate zeigte, dass herkömmliche PC-Systeme diverse Probleme mit dem
Datentransport haben, welcher sich negativ auf die Graphikleistung auswirkt. Ausserdem
werden diverse Aspekte der Graphik-Pipeline, vorallem das Geometrie-Setup und Transformationen immer noch vom Hauptprozessor ausgeführt.
Die sgi Maschinen zeigten ein homogenes Verhalten über alle Tests, welche zu guten Graphikleistungen führten.
12.2 Fazit und Schlussbemerkungen
Diese Arbeit mitsamt den ganzen Resultaten auf der Semesterarbeits-CD bietet die grösste
Sammlung simultan ausgeführter 3D Graphikleistungsmessungen. Die GLperf-Resultate sind
einzigartig; selbst die publizierten Resultate auf der GLperf Homepage besitzen nicht diesen
Umfang und dieses breite Spektrum.
Interessant wäre es, diese Arbeit kontinuierlich fortzusetzen. Jede neue Maschine und jede zur
Verfügung stehende Testmaschine sollte unter die Lupe genommen werden, so dass Leistungsvergleiche sehr schnell möglich werden.
Die “harte” Arbeit ist getan, der Aufwand neue Messungen durchzuführen ist klein. Davon profitieren konnte man schon für eine neue Testserie für die Revision der Studentenlabors im IFW
C-Stock. Diese Resultate und eine Analyse befindet sich im Anhang B.
12.3 Dank
Wir möchten allen Personen herzlich danken, welche uns bei dieser Arbeit in irgendeiner Weise
unterstützt haben.
145
146
12 Schlussworte
Einen besonderen Dank richten wir an Reto Lütolf und Daniel Bielser, die Dank ihrer umgänglichen Art viel zu dieser Arbeit beigetragen haben.
Einen weiteren Dank widmen wir Oliver Staadt für die Hilfe beim Kompilieren der Benchmark
Programme und das vermittelte Know-How über die sgi-Maschinen. Zudem danken wir Christian Kurmann und Felix Rauch für die Bereitstellung des SPEC CPU95 Benchmarks für die
Intel-Maschinen und die allgemeine Hilfe bei der Fehlerbehebung bei diesem Benchmark.
Ein Dankeschön gebührt ausserdem Florian Nussberger und Daniel Von Büren für die Hilfe an
der Onyx2 und die Zeit, die sie für uns investierten, sowie André Naef und Michael Baumer,
die uns ebenfalls beim Kompilieren, vorallem an den Intel-Rechnern, geholfen haben.
13Referenzen
[1]
David A. Patterson und John L. Hennessy. Computer Architecture: A Quantitative
Approach. Morgan Kaufman Publishers, 1996.
[2]
Diamond Multimedia Systems, Inc. Fire GL 1000 PRO. Homepage under http://
www.diamondmm.com/products/current/firegl-1000pro.cfm.
[3]
Evans & Sutherland.
prod11.html.
[4]
Industrial Business Machines (IBM). Data Explorer. Homepage under http://www.hursley.ibm.com/dx/ or http://www.almaden.ibm.com/dx/.
[5]
Intergraph Corporation. Design Review. Homepage under http://www.intergraph.com/
visualization/designrv.asp.
[6]
Intergraph Corporation. Intense3D Wildcat 4000 Graphics Accelerator. Homepage under
http://www.intergraph.com/ics/wildcat/wc4000/default.asp.
[7]
Lightscape Technologies, Inc. Lightscape Visualization System. Homepage under http://
www.lightscape.com.
[8]
OpenGL - The Open Graphics Library. Homepage under http://www.opengl.org.
[9]
Parametric Technology Corporation. Pro/DESIGNER. Homepage under http://
www.ptc.com.
AccelGalaxy.
Homepage
under
http://www.es.com/wg/
[10] Rai Jain. The Art Of Computer Systems Performance Analysis: Techniques for Experimental Design, Measurement, Simulation, and Modeling Performance Evaluation. John
Wiley & Sons, 1991.
[11] sgi - Silicon Graphics Inc. Homepage under http://www.sgi.com.
[12] sgi - Silicon Graphics Inc. Visual Workstations. Homepage under http://visual.sgi.com.
[13] sgi Alias/Wavefront. Advanced Visualizer. Homepage under http://www.aw.sgi.com.
[14] Texas Instruments Incorporated. 3D Graphics - TVP4020. Homepage under http://
www.ti.com/sc/docs/msp/multimed/index.htm.
[15] The MIPS ABI Group, Inc. Information and Specifications. Homepage under http://
www.mipsabi.org.
[16] The OpenGL Performance Characterization Project. The GLperf Benchmark. Homepage
under http://www.spec.org/gpc/opc.static/glpind%7E1.html.
[17] The OpenGL Performance Characterization Project. The Viewperf Benchmark. Homepage under http://www.spec.org/gpc/opc.static/opcview.html.
149
150
.
[18] The Standard Performance Evaluation Corporation. General Information. Homepage
under http://www.spec.org.
[19] The Standard Performance Evaluation Corporation. The SPEC CPU95 Benchmark.
Homepage under http://www.spec.org/osg/cpu95.
10
1
81
11
A
AAnhang
A.1 Die Open Graphics Library1
A.1.1 Computergraphik Tutorial
Zuerst werden wichtige OpenGL Graphikfunktionen erklärt:
Accumulation buffer. A buffer in which multiple rendered frames can be composited to produce a single blended image. Used for effects such as depth of field, motion blur, and full-scene
anti-aliasing.
Alpha blending. Provides a means to create transparent objects. Using alpha information, an
object can be defined as anything from totally transparent to totally opaque.
Anti-aliasing. A rendering method used to smooth lines and curves. This technique averages
the color of the pixels adjacent to the line. It has the visual effect of softening the transition of
the pixels on the line and those adjacent to the line, thus providing a smoother appearance.
Color-index mode. Color buffers store color indices rather than red, green, blue, and alpha
color components.
Display list. A named list of OpenGL commands. The contents of a display list may be preprocessed and might therefore execute more efficiently than the same set of OpenGL commands
executed in immediate mode.
Double buffering. Used to provide smooth animation of objects. Each successive scene of an
object in motion can be constructed in the back or "hidden" buffer and then displayed. This
allows only complete images to ever be displayed on the screen.
Gouraud shading. Smooth interpolation of colors across a polygon or line segment. Colors are
assigned at vertices and linearly interpolated across the primitive to produce a relatively smooth
variation in color.
Immediate mode. Execution of OpenGL commands when they’re called, rather than from a
display list.
Pixel operations. Storing, transforming, mapping, zooming.
1. http://www.opengl.org
149
150
A. Anhang
Primitives. A point, line, polygon, bitmap, or image.
Raster primitives. Bitmaps and pixel rectangles.
RGBA mode. Color buffers store red, green, blue, and alpha color components, rather than
indices.
Stencil planes. A buffer that can be used to mask individual pixels in the color frame buffer.
Texture mapping. The process of applying an image to a graphics primitive. This technique is
used to generate realism in images. For example, a tabletop drawn as a rectangle could have a
wood-grain texture applied to it to make it look more realistic.
Three Dimensional Texturing. Three-dimensional texturing for supporting hardware-accelerated volume rendering.
Transformation. The ability to change the rotation, size, and perspective of an object in 3D
coordinate space.
Z-buffering. The Z-buffer is used to keep track of whether one part of an object is closer to the
viewer than another. It is important in hidden surface removal.
A.1.2 Die OpenGL Primitiven
Damit man einen Überblick bekommt, was mit diesen Primitiven in OpenGl gemeint ist, hier ein graphischer Überblick.
Die Primitiven unterstützen den Programmierer um geometrische Objekte zu konstruieren.
Jedes geometrische Objekt wird durch ein Satz von Ecken
und dem Typ der Primitive, die gezeichnet wird, beschrieben. Ob und wie die Ecken verbunden sind wird durch den
Typ der Primitive festtgelegt.
A.1.3 Die OpenGL Pipeline
OpenGL operiert auf Bilddaten, genauso wie auf geometrischen Primitiven.
A.2 Viewperf
151
A.2 Viewperf
A.2.1 Die Viewperf Kommandozeilen Parameter
In Tabelle A.1 werden die Kommandozeilen Parameter von Viewperf 6.1 kurz erklärt. Dies
hilft beim Verständnis der Viewset Scripts und beim Entwickeln von eigenen Scripts..
Tabelle A.1: Viewperf command line options
-polygon -pg <file>
Viewpoint object to be used in the tests
-triangle -tr <file>
Viewpoint object to be used in the tests
-quad -qd <file>
Viewpoint object to be used in the tests
-mesh -mh <file>
Mesh object to be used in the tests
-rendermode -rm <mode>
POINT, VECTOR, LINE, POLYGON, TMESH, TFAN, TRIANGLE, or
QUAD
- default LINE
-vcriteria -vcrit
AUX Visual selection criteria - EXACT, MIN
- default MIN
-vid <id>
Ask AUX for visual with ID = <id>
-vaccum -vac
Ask AUX for an accumulation buffer visual
-valpha -val
Ask AUX for an alpha buffer visual
-vdepthbuffer -vz
Ask AUX for a depth buffer visual
-vstencil -vst
Ask AUX for a stencil buffer visual
-indirectrender -ir
Render indirect
- default direct
-nodither -ndi
Disable dithering
-ortho -or
Parallel/Orthographic projection
- default Perspective
-displaylist -dl
Render with display list mode
-vertexarray -va
Render with vertex array mode (OpenGL1.1)
-interleaved -il
Packing vertex data interleaved in memory
-colorper -cp <mode>
FRAME = Color per Frame, PRIMITIVE = Color per Primitive, VERTEX
= Color per Vertex
- default FRAME
-texture -tx <file>
Image for texturing
-texgen -txg <file><mode>
<file> is image for enviroment mapping <mode> is SPHERE_MAP,
OBJECT_LINEAR, EYE_LINEAR
- default EYE_LINEAR
-texobj -txo <file>
Texture object mode <file> is list of images
-magfilter -magf <flt>
NEAREST, LINEAR
- default NEAREST
152
A. Anhang
Tabelle A.1: Viewperf command line options
-minfilter -minf <flt>
NEAREST,
LINEAR,
LINEAR_MIPMAP_NEAREST,
LINEAR_MIPMAP_LINEAR
NEAREST_MIPMAP_NEAREST,
NEAREST_MIPMAP_LINEAR,
- default NEAREST
-texenv -te <env>
Texture enviroment, MODULATE, DECAL, BLEND
- default DECAL
-texcomp -tc <num>
Texture components where <num> is 1,2,3, or 4
- default 3
-blend -bl
Enable Blending
-srcblendfunc -sbf
ZERO, ONE, DST_COLOR, ONE_MINUS_DST_COLOR,
SRC_ALPHA, ONE_MINUS_SRC_ALPHA, DST_ALPHA,
ONE_MINUS_DST_ALPHA, SRC_ALPHA_SATURATE
- default SRC_ALPHA
-dstblendfunc -dbf
ZERO,
ONE,
SRC_COLOR,
ONE_MINUS_SRC_COLOR,
SRC_ALPHA,
ONE_MINUS_SRC_ALPHA,
DST_ALPHA,
ONE_MINUS_DST_ALPHA,
- default ONE_MINUS_SRC_ALPHA
-linewidth -lw <width>
Linewidth for wire/vector tests
- default 1.0
-xwinsize -xws <side>
Size of test windows X dimension
- default 700
-ywinsize -yws <side>
Size of test windows Y dimension
- default 700
-numframes -nf <num>
Number of frames to be rendered during measurement. Takes priority over
-mp
-numilights -nil <num>
Turns on <num> infinite lights
- default 0
-numllights -nll <num>
Turns on <num> local lights
- default 0
-colormaterial -cm <side> <mode> <side> is FRONT, BACK, FRONT_AND_BACK
- default FRONT
<mode> is AMBIENT,
AMBIENT_AND_DIFFUSE
DIFFUSE,
- default AMBIENT_AND_DIFFUSE
-backface -bf
Cull Backfacing primitives
- default off
-frontface -ff
Cull Frontfacing primitives
- default off
-singlebuffer -sb
Single buffer mode
-fog -fg
Enable fog
-linesmooth -ls
Enable line antialiasing
EMISSION,
SPECULAR,
A.2 Viewperf
153
Tabelle A.1: Viewperf command line options
-polysmooth -ps
Enable polygon antialiasing
-facetnormal -fn
Use facet normals when lighting
-linestipple -lp
Enable line stipple
-polystipple -pp
Enable polygon stipple
-batch -bt
Batch primitives together per glBegin/glEnd. Valid with POINT, VECTOR, TRIANGLE, and QUADS
-polymodefront -pmf
POINT, LINE, or FILL
- default FILL
-polymodeback -pmb
POINT, LINE, or FILL
- default FILL
-flat -f
Set shademodel to FLAT
- default GOURAUD
-zbuffer -zb
Enable zbuffer for tests
- default off
-clip -c
Align object on 3D clip boundary
-lighttwoside -l2s
Light both sides of model
-localview -lv
Define local viewer for lit tests
-normalize -nm
Enable normal normalization
-minperiod -mp <num>
Set minimum testing period in seconds
-mblur <num>
Use motion blur with num being amount of decay
-aa_multi <x> <r>
Full scene antialiasing rendered x times at an offset of r. r should be tuned
to the viewset
-walkthru -wt
Walkthru mode
-grab
Screen capture
-grabonly -go
Don’t run benchmark, just do screen capture
-swap <trü/false>
Force byte swapping
-notitle -nt
Disable title screen
-startframe -sf <num>
Set starting frame of a walkthru
-framepause -fp
Pause after each frame waiting for enter key
-newview -nv
Enable new view frustum calculation
-fov <angle>
Set field of view in degrees
-spin x y z dx dy dz
Set rotation initial valüs and speeds (degrees)
The -threads option is applicable only if Viewperf has been compiled with the C Preprocessor variable MP defined.
Viewperf should only be compiled this way if the vendor supplied makefile has defined the MP flag (-DMP).
154
A. Anhang
A.3 GLperf
A.3.1 Die Grammatik der Eingabedateien
Die Eingabedateien für GLperf müssen der folgenden Grammatik genügen.
Suite -> GlobalProperty Suite | TestDescription Suite | TestDescription
TestDescription -> TestName | TestName { LocalPropertyList }
LocalPropertyList -> Property | Property LocalPropertyList
GlobalProperty -> Property
Property -> ( PropertyName AttributeValue )
AttributeValue -> Range | List | Wildcard
Range -> from int to int | from int to int step int | from int to int step int % | from float to float |
from float to float step float | from float to float step float %
List -> Value | Value List
Value -> Enumerated | float | int | 0xhex
Wildcard -> ALL | *
Where TestName is one of:
•
BitmapTest
•
ClearTest
•
CopyPixelsTest
•
DrawPixelsTest
•
LineLoopTest
•
LineStripTest
•
LinesTest
•
PointsTest
•
PolygonTest
•
QuadStripTest
•
QuadsTest
•
ReadPixelsTest
•
TexImageTest
•
TextTest
•
TransformTest
•
TriangleFanTest
•
TriangleStripTest
•
TrianglesTest
Where PropertyName and Enumerated are one of the values listed in the tables on
[GLperf:WWW].
A.3 GLperf
155
A.3.2 Die fehlenden OpenGL Kommandos auf den SUN’s
Die folgenden Kommandos werden in SUN Solaris 2.6 OpenGL nicht unterstützt:
GL_ALPHA4_EXT
GL_ALPHA8_EXT
GL_ALPHA12_EXT
GL_ALPHA16_EXT
GL_LUMINANCE4_EXT
GL_LUMINANCE8_EXT
GL_LUMINANCE12_EXT
GL_LUMINANCE16_EXT
GL_LUMINANCE_ALPHA
GL_LUMINANCE4_ALPHA4_EXT
GL_LUMINANCE6_ALPHA2_EXT
GL_LUMINANCE8_ALPHA8_EXT
GL_LUMINANCE12_ALPHA4_EXT
GL_LUMINANCE12_ALPHA12_EXT
GL_LUMINANCE16_ALPHA16_EXT
GL_INTENSITY_EXT
GL_INTENSITY4_EXT
GL_INTENSITY8_EXT
GL_INTENSITY12_EXT
GL_INTENSITY16_EXT
GL_RGB2_EXT
GL_RGB4_EXT
GL_RGB5_EXT
GL_RGB5_A1_EXT
GL_RGB8_EXT
GL_RGB10_EXT
GL_RGB10_A2_EXT
GL_RGB12_EXT
GL_RGB16_EXT
GL_RGBA2_EXT
GL_RGBA4_EXT
GL_RGBA8_EXT
GL_RGBA12_EXT
GL_RGBA16_EXT
GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI
GL_PIXEL_TRANSFORM_COLOR_TABLE_EXT
GL_PROXY_PIXEL_TRANSFORM_COLOR_TABLE_EXT
The above listed commands are deleted from GLperf’s Source Code in order to compile the
GLperf Benchmark under Solaris 2.6. In order to have representative benchmarks it is kindly
requested not to use the above commands while comparing with systems other than Solaris.
156
A. Anhang
B
BWeitere Tests
Im Zuge der Revision der Studentenlabors im IFW C-Stock wurden noch weitere Maschinen
getestet. Es handelt sich dabei um ein Dell Computersystem mit drei verschiedenen Graphikkarten und um die SGI Visual Workstation 320 (NT-Box).
B.1 Das Dell Computersystem mit drei verschiedenen Graphikkarten
Als Basis dient eine Dell Precision 410 mit einem Intel Pentium III (500 Mhz) Prozessor,
256MB Arbeitsspeicher und einer interner SCSI-Festplatte. Die getesteten Graphiksubsysteme
stammen aus den Leistungsbereichen Low-End, Mid-range und High-End. Alle werden über
den AGP-Slot ins PC-System integriert.
B.1.1 Diamond FireGL 1000 PRO (AGP)
Die Karte ist mit einem 3DLabs Permedia P2 Graphikprozessor (auch Texas Instruments
TVP4020 genannt) ausgerüstet und besitzt einen integrierten Geometry-Setup-Prozessor
(3Dlabs Delta3D) zur Entlastung der Haupt-CPU.
Die FireGL 1000 integriert einen 8 MByte grossen Speicher, der dynamisch in Frame Buffer
und Texture Memory unterteilt ist.
Von der Hardware werden sowohl bilineares Texture-Mapping, Double-Buffering, wie auch
16-bit Z-Buffering unterstützt. Jedoch wird keine trilineare Filterung der Texturen unterstützt.
Es sind OpenGL-Treiber für Windows NT/95 und für Linux verfügbar. Die maximale Auflösung beträgt 1280x1024 bei 16-bit Z-Buffering, 24-bit-Farbtiefe und 100 Hz Bildwiederholfrequenz. Es ist kein true-color Rendering möglich. Die Karte kostet ca. $200.
In Tabelle 13.1 sind die wichtigsten Informationen des Permedia2 zusammengefasst.
Weitere Informationen unter [2] und [14].
157
158
B. Weitere Tests
Tabelle 13.1: Spezifikationen der Diamond FireGL 1000 PRO
Eigenschaft
Diamond FireGL 1000 PRO
Graphikcontroller
3Dlabs Permedia 2 bzw.
Texas Instruments TVP 4020
Architektur
64 bit
Bus
AGP
Video RAM
8 MByte DRAM (dynamische Unterteilung in
Frame und Textur Speicher)
3D Operationen
Gouraud & Flat Shading, 16 bit Z-Buffer,
Alpha Blending, Bilinear Filtering, Hardware
Texture Mapping
RAMDAC Speed
230 MHz
Chip Clock Speed
83 MHz
Bandbreite
664 MByte/s
AGP Features
AGP 1x (266MByte/s); Full Sideband
Addressing; DMA Mode Texturing
Geometry Pipeline Processor
3Dlabs Delta 3D
Peak Rates (published)
1 Mio. Polygons/s / 80 Mio. Pixels/s
B.1.2 Evans & Sutherland AccelGalaxy 52
Die AccelGalaxy vertritt die mittlere Leistungsklasse. Sie unterstützt in Kombination mit dem
REALimage 2100-Chip den neuen Befehlssatz SSE des Pentium III-Prozessors. Die AccelGalaxy leistet ca. 4 Millionen 3D Dreiecke pro Sekunde (25 pixels, Gouraud-shaded)
Das System ist mit 20 MByte 3DRAM für Frame- und Local-Buffer und separaten 32 MByte
CDRAM Texturspeicher ausgerüstet. Die Hardware unterstützt bi- und trilinear gefiltertes Texture-Mapping mit Perspective-Correction und MIP-Mapping, Gouraud-Shading, Anti-Alasing
und 24-bit Z-Buffering.
Die AccelGalaxy unterstützt Stereo-Rendering und Dual Screen Modus mit einer Karte.
Treiber sind für die Betriebssysteme Windows NT und Linux erhältlich. Die maximale Auflösung beträgt 1280x1024 bei 24-bit Z-Buffering, 24-bit Farbtiefe und 85 Hz Bildwiederholfrequenz. Die Karte kostet ca. $1200.
Weitere Informationen unter [3].
B.1.3 Intergraph Intense 3D Wildcat 4000
Das Intergraph-Graphiksystem zählt sowohl leistungsmässig wie auch preislich zur absoluten
Topklasse. Das System besteht aus zwei Karten, die in den AGP Slot und in einen PCI Slot eingesetzt werden.
Die Karte beruht auf der Wildcat Technologie von Intense3D und implementiert die ParaScale
Architektur, welche hochskalierbar ist und mehrere parallel arbeitende Geometriebeschleuniger
Chips und Rasterization Engines unterstützt. Das Kernstück der Wildcat bildet ein 3000
MFLOPS leistender Geometriebeschleuniger ASIC (Application Specific Integrated Circuit).
B.2 Die sgi Visual Workstation 320
159
Dieser übernimmt sämtliche Beleuchtungs- und Transformationsberechnungen. Der Rasterization Engine ASIC leistet bis zu 6 Millionen 3D Dreiecke pro Sekunde oder 68 Millionen Pixels
pro Sekunde (trilinear MIP-mapped). Die Karte besitzt 16 MByte Framebuffer und 64 MByte
Texturspeicher.
Die Wildcat 4000 Technologie unterstützt
Stereo-Rendering und Multi Screen Modi.
Die Liste der durch Hardware unterstützten Funktionen ist lang und beinhaltet
unter anderem folgende Punkte: bi- und
trilinear gefiltertes Texture-Mapping,
Gouraud-Shading, Anti-Alasing, AlphaBlending und 24-bit Z-Buffering. Optimierte Open GL-Treiber sind bis jetzt nur
für Windows NT verfügbar. Die Intergraph-Karte kostet ca. $3000.
Weitere Informationen unter [6].
B.2 Die sgi Visual Workstation 320
Die Visual Workstation 320 von sgi ist die billigste Maschine der
neuen Windows NT Rechner von sgi. Als Basis diente ein intel Pentium II Prozessor mit 450 MHz Taktfrequenz, 256 MByte ECC
SDRAM und einer 6.4 GByte Ultra ATA Harddisk. In anderen
Visual Workstations kommen intel Pentium III Prozessoren zum
Einsatz. Die Visual Workstations sind dann optimiert für die neuen
SIMD Instruktionen (SSE).
Mit einem revolutionär neuen System-Design, welches den Flaschenhals in traditionellen PC-basierten Systemen eliminiert, bieten die Visual Workstations
einen enormen Durchsatz, welcher von High-End Computer Graphik und Multimedia-Bearbeitung (Ton- und Bild gleichzeitig) benötigt wird.
Das neue Design, welches Intergrated Visual Computing (IVC) genannt wird (siehe Abbildung
13.1), transportiert Graphikdaten mit bis zu 3.2 GByte pro Sekunde sechsmal schneller als
AGPx2-basierte Systeme. Zusammen mit dem Cobalt Graphik Chipset bieten die Visual Workstations eine unglaubliche 2D-, 3D- und Digital-Media-Leistung, welche kein anderes Windows NT-System erreichen kann. Die Visual Workstations bieten ausserdem eine Fülle von
Schnittstellen, unter anderem IEEE 1394 (Firewire), USB, Composite und S-Video (NTSC und
PAL) I/O und 16-bit Audio Stereo I/O.
Eine Visual Workstation kostet zwischen $3500 (VW 320) und $6500 (VW 540). Als Vergleich
kostet eine Dell Precision 410 mit der Intergraph Intense3D Wildcat 4000 $6400, mit der AccelGalaxy 52 $4600.
Weitere Informationen unter [12].
160
B. Weitere Tests
Abbildung 13.1:
Die sgi Integrated Visual Computing (IVC) Architektur im Vergleich zur herkömmlichen PC Architektur
B.3 Resultate und Analyse
161
B.3 Resultate und Analyse
In den folgenden Kapiteln wird ein kurzer Überblick der Resultate der in B.1 und B.2 beschriebenen Systeme gegeben. Auf eine detailierte Analyse wird aber verzichtet.
B.3.1 Viewperf
Abbildung 13.2:
Überblick Viewperf
162
B. Weitere Tests
Abbildung 13.3:
Viewperf - Light Viewset
Abbildung 13.4:
Viewperf - ProCDRS Viewset: Display List Build-Time
B.3 Resultate und Analyse
163
B.3.2 GLperf
Abbildung 13.5:
GLperf - Texture Download (RGB α , no mip-mapping)
Abbildung 13.6:
GLperf - Lichtquellen
164
B. Weitere Tests
Abbildung 13.7:
GLperf - Pixelfüllraten
Abbildung 13.8:
GLperf - Dreieckfüllraten (smooth, 1 infinite light)
B.4 Schlussbemerkungen
Abbildung 13.9:
165
GLperf - Dreieckfüllraten (trilinear filtered texture, 1 infinite light)
B.4 Schlussbemerkungen
Es soll hier nur ein kleine Zusammenfassung der Ergebnisse dieser Tests gegeben werden.
Die Visual Workstation zeichnet sich durch eine sehr gute Geometry Engine aus. Sowohl beim
Lichtquellen- wie auch beim Dreiecksfüllraten-Test von GLperf fallen die hohen Werte auf. Bei
den Dreiecksfüllraten ist die Visual Workstation sogar die einzige Maschine, welche auch bei
kleinen Dreiecksgrössen nicht durch die Geometry Engine limitiert wird. Sie kommt sogar fast
an die Rasterleistungen der Onyx2 Infinite Reality2 Single Pipe heran. Die Visual Workstation
scheint auch die UMA viel besser als die O2 auszunutzen. Bei den Textur Download Tests
erreicht die sie ebenfalls fast so gute Werte wie die Onyx2 oder die Octane. Sie scheint auch bei
der grössten Textur den Höhepunkt noch nicht erreicht zu haben.
Die Raster Engine der Wildcat-Karte erreicht ebenfalls gleich hohe Leistungen wie die Onyx2
oder Visual Workstation. Doch bei kleinen Dreiecken kann die Geometry Engine, wie übrigens
auch bei der AccelGalaxy-Karte, nicht mehr mit der Raster Engine mithalten.
Beim Überblick mit Viewperf zeigt sich aber doch, dass das Wildcat-System einiges leisten
kann. In drei von fünf Tests überflügelt sie die AccelGalaxy und die Visual Workstation gleich
um das doppelte. Beim komplexen Lightscape Viewset erreicht sie als einzige PC-Karte die
Werte der Onxy2 Infinite Reality2.
Als Schlussworte kann hier nur nochmals angefügt werden, dass die Kombination von Standard
System-Hardware (CPU, Memory, etc.) mit einem gut durchdachten Bussystem (z.B. UMA)
und spezieller Graphikhardware wohl die Architektur der Graphiksysteme der Zukunft sein
werden.