Die SPARC-Architektur (Scalable Processor ARChitecture) ist eine Mikroprozessor-Architektur, die von der Firma Sun Microsystems ab 1985 entwickelt und ab 1987 vermarktet wurde. SPARC-Prozessoren sind hauptsächlich in den Produkten von Sun zu finden. Daneben gibt es noch andere Hersteller, wie zum Beispiel Fujitsu Siemens Computers. 1989 erfolgte die Gründung der nichtgewinnorientierten Organisation SPARC International, als Anlaufstelle für die Weiterentwicklung der offenen SPARC-Architektur.
Sun war zum Zeitpunkt der Entwicklung bereits der zweitgrößte Hersteller von Workstations mit dem Betriebssystem Unix (Marktanteile 1985: Apollo Computer 41 %, Sun 21 %). Mit dem SPARC-Prozessor wollte die Firma, wie damals viele Hersteller von Workstations, eine RISC-Prozessorarchitektur schaffen, die die Motorola 68020- sowie die i386-Roadrunner-Prozessoren ablösen und für viele Jahre konkurrenzfähig bleiben sollte. Die Prozessoren wurden von anderen Herstellern wie Texas Instruments oder Fujitsu gefertigt.
Sun brachte mit seiner Sun-4-Baureihe viele Workstations und Server, die den SPARC-Prozessor verwendeten, heraus. Aber auch Fujitsu baut zur Zeit (2005) noch SPARC-Prozessoren in ihre PrimePower-Systeme ein. Neben SunOS bzw. Solaris können auf SPARC-Systemen auch Linux oder die modernen BSD-Varianten eingesetzt werden. 1995 wurde die ursprüngliche 32-Bit-Architektur auf 64-Bit erweitert und unter dem Namen UltraSparc vermarktet. Diese Architektur hat neben zusätzlichen Einheiten eine tiefere Pipeline und einige einfache SIMD-Befehle (Visual Instruction Set (VIS)). Der Ultrasparc-Standard hat bisher vier Hauptversionen, die derzeit aktuelle Version ist UltraSparc T2.
Herausragende Eigenschaft der Architektur ist ein Registersatz (register file), der ursprünglich aus 128 32-Bit-Registern bestand. Die CPU kann nur auf einen Teil davon, normalerweise 32, direkt zugreifen. 24 davon sieht die CPU in einem Fenster, das per Software verschoben werden kann. Dadurch können Argumente und Ergebnisse von Unterprogrammen ohne Umkopieren von Registern durch Verschieben des Fensters übergeben werden.
Die Fließkommaeinheit kann als 32 32-Bit-Register mit einfacher Genauigkeit, 16 64-Bit-Register mit doppelter Genauigkeit oder 8 128-Bit-Register mit vierfacher Genauigkeit verwendet werden.
Die derzeit aktuellen Versionen sind 32-Bit V8 und 64-Bit V9. Die SPARC V8 ist vollständig Big Endian. Die SPARC V9 benutzt Instruktionen im Big Endian-Format, unterstützt jedoch beide Byte-Reihenfolgen für Datenwerte. Dies kann sowohl auf Instruktionsebene durch Verwendung spezieller Befehle als auch für ganze Speicherbereiche mittels einer MMU-Einstellung umgeschaltet werden. Letzteres wird insbesondere dann verwendet wenn auf Speicherbereiche von Geräten zugegriffen werden muss, wie zum Beispiel den als Little Endian festgelegten PCI-Bus.
Eine einfache Version eines SPARC-Prozessors namens LEON-1 in der Hardware-Beschreibungssprache VHDL ist von der ESA frei erhältlich. Das Design des UltraSPARC T1 wurde am 14. Februar 2006 unter der Open-Source-Lizenz GPL veröffentlicht. Auch das Design des Sun Microsparc ist seit Mitte 1990 im Quellcode veröffentlicht und frei nutzbar.
Es gibt auch eine Reihe Microcontrollerimplementierungen (zum Beispiel von Hitachi), die jedoch teilweise einen komprimierten Maschinencode besitzen und deshalb nicht binärkompatibel sind.
Mittlerweile ist die gesamte Architektur Open Source, da Sun OpenSPARC analog zu OpenSolaris geschaffen hat.
Verschiedene Implementierungen der SPARC-Architektur, unter anderem Suns erfolgreicher SuperSPARC und UltraSPARC-I.
Sun SPARC-Mikroprozessor-Spezifikation | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Modell | Frequenz [MHz] |
Architektur Version |
Jahr | Prozess [µm] |
Transistoren [Millionen] |
Kernabmessung [mm²] |
IO Pins | Aufnahme [W] |
Spannung [V] |
L1 Dcache [k] |
L1 Icache [k] |
L2 Cache [k] |
L3 Cache [k] |
SPARC | 14,28–40 | V7 | 1987-1992 | 0,8–1,3 | ~0,1–1,8 | -- | 160–256 | -- | -- | 0–128 | kein | kein | |
microSPARC I | 50 | V8 | 1992 | 0,8 | 0,8 | 225 | 288 | 2,5 | 5 | 4 | 2 | kein | kein |
SuperSPARC I | 33-65 | V8 | 1992 | 0,8 | 3,1 | 256 | 293 | 14,3 | 5 | 16 | 20 | 1024 | kein |
microSPARC II | 60-125 | V8 | 1992 | 0,5 | 2,3 | 233 | 321 | 5 | 3,3 | 8 | 16 | kein | kein |
SuperSPARC II | 75-90 | V8 | 1994 | 0,8 | 3,1 | 299 | -- | 16 | -- | 16 | 20 | 2048 | kein |
TurboSPARC | 170-180 | V8 | 1995 | 0,35 | -- | -- | -- | 7 | -- | 16 | 16 | 1024 | kein |
UltraSPARC I | 140-200 | V9 | 1995 | 0,5 | 5,2 | 315 | 521 | 30 | 3,3 | 16 | 16 | 1024 | kein |
UltraSPARC II | 250-480 | V9 | 1997 | 0,25 | 5,4 | 156 | 521 | 21 | 3,3 | 16 | 16 | 8192 | kein |
UltraSPARC IIi | 270-650 | V9 | 1998 | 0,25 | 5,75 | 148 | 370 | 17,6 | 1,7 | 16 | 16 | 2048 | kein |
UltraSPARC IIe | 400-500 | V9 | 2000 | 0,18 | 5,4 | -- | 370 | 13 | 1,7 | 16 | 16 | 256 | kein |
UltraSPARC III | 600-1200 | V9 | 2001 | 0,13 | 29 | 330 | 1368 | 53 | 1,6 | 64 | 32 | 8192 | kein |
UltraSPARC IIIi | 1064-1600 | V9 | 2003 | 0,13 | 87,5 | 206 | 959 | 52 | 1,3 | 64 | 32 | 1024 | kein |
UltraSPARC IV | 1050-1350 | V9 | 2004 | 0,13 | 66 | 356 | 1368 | 108 | 1,35 | 64 | 32 | 16384 | kein |
UltraSPARC IV+ | 1500-2100 | V9 | 2005 | 0,09 | 295 | 336 | 1368 | 90 | 1,1 | 64 | 64 | 2048 | 32768 |
UltraSPARC T1 | 1000-1400 | V9 | 2005 | 0,09 | 279 | 379 | 1934 | 79 | 1,3 | 8 | 16 | 3072 | kein |
UltraSPARC T2 | 900-1400 | V9 | 2007 | 0,065 | 503 | 342 | 1831 | 95 | 1,2 | 8 | 16 | 4096 | kein |
Ross/Bridgepoint SPARC-Mikroprozessor-Spezifikation | |||||||||||||
HyperSPARC A | 55-80 | V8 | 1993 | 0,5 | 1,5 | -- | -- | -- | 5 | kein | 8 | 256 | kein |
HyperSPARC B | 90-125 | V8 | 1995 | 0,4 | 1,5 | -- | -- | 25 | 5 | kein | 8 | 256 | kein |
HyperSPARC C | 110-166 | V8 | 1995 | 0,35 | 1,5 | -- | -- | 45,5 | 5 | kein | 8 | 1024 | kein |
HyperSPARC D | 180-200 | V8 | 1995 | 0,35 | 1,7 | -- | -- | -- | 5 | 16 | 16 | 1024 | kein |
Sun/Fujitsu SPARC64-Prozessoren | |||||||||||||
SPARC64 V | 1350-2160 | V9 | 2004 | 0,13 | 191 | 290 | 269 | 40 | 1,2 | 128 | 128 | 2048 | kein |
SPARC64 VI | 2150-2400 | V9 | 2007 | 0,09 | 540 | 422 | -- | 120 | -- | 128 | 128 | 6144 | kein |