UltraSPARC

UltraSPARC (kodenavn: «Spitfire», produktkode: Sun STP1030) var en 64-biter RISC mikroprosessor som ble utviklet av Sun Microsystems og som ble produsert av Texas Instruments. Mikroprosessoren var fire-veis superskalær og kunne utføre to heltallsberegninger og to flyttallberegninger per klokkepuls. UltraSPARC var den første mikroprosessoren som fulgte spesifikasjonen SPARC versjon 9.
Mikroprosessoren ble annonsert av Sun Microsystems den 3. oktober 1994. Den 7. november 1995 ble den tilgjengelig i maskiner på det åpne marked i utgaver på 143 og 167 MHz. I juni 1996 fulgte en versjon på 200 MHz.
Den fremste konkurrenten var SPARC64, en annen 64-biter superskalær RISC-mikroprosessor, som ble lansert av Fujitsu i 1995. Den var også en implementasjon av SPARC versjon 9.
UltraSPARC var etterfølgeren til SuperSPARC. Dette var en toveis superskalær og 32-biter mikroprosessor, som var en implementasjon av SPARC versjon 8. Dens fremste konkurrent var hyperSPARC.
UltraSPARC ble i 1997 etterfulgt av UltraSPARC II.


== Arkitektur ==
UltraSPARC var den første implementasjonen av spesifikasjonen SPARC versjon 9, som ble publisert i 1992. Denne manualen beskriver en 64-biter arkitektur av typen SPARC.


== Produksjonsprosess ==
UltraSPARC bestod av 5.2 millioner transistorer. Av disse ble 3.4 millioner transistorer benyttet til logiske kretser, mens resten ble brukt til å implementere hurtigminne. Den ble fabrikkert ved hjelp av Texas Instruments' EPIC-3 prosess, en 470 nanometers 4-lags CMOS prosess.
Størrelsen var 17.7 x 17.8 mm, eller 315 mm². Den interne elektriske spenningen var 3.3 Volt. Ved 167 MHz ga dette en effekt på 28 Watt og 20 mW i sovemodus. Prosessoren var forsynt med 521 pinner i et PBGA.
I 1998 lanserte Sun Microsystems en 200 MHz versjon med kodenavnet «Hornet». Den var produsert med 420 nanometers transistorer, og hadde en størrelse på 265 mm². De øvrige tekniske spesifikasjonene var uendret.


== Strukturell oppbygning ==
En av de sentrale arkitektene bak UltraSPARC var Marc Tremblay.
En 167 MHz UltraSPARC med 2 MB Nivå-2 hurtigminne, hadde en ytelse på 240 SPECint92 og 350 SPECfp92.


=== Ni enheter ===
UltraSPARC var sammensatt av ni enheter:

2 aritmetisk logiske enheter for heltall
1 LOAD/STORE enhet
3 desimaltallsenheter
2 grafikkenheter
1 branch predictorUltraSPARC var en fire-veis superskalær prosessor, og kunne utføre fire instruksjoner per klokkesyklus.Ved betingede hopp var prosessorens branch predictor istand til å foreta spekulativ utførelse − «forutsigelser» av hvilken «grein» (branch) av programmet som fortsetter under betingede hopp, basert på erfaringer fra programutførelsens historikk. Ved betingede hopp hadde UltraSPARC en treffsikkerhet på 88% SPECint92 og 94% SPECfp92.De utførende enhetene i UltraSPARC var forenklet i forhold til SuperSPARC for å oppnå høyere klokkefrekvens. De aritmetisk logiske enhetene var f.eks. ikke i kaskade, slik tilfellet var på  SuperSPARC.
Registerfilen for de to artimetisk logiske enhetene og LOAD/STORE enheten bestod av 32 stk 64-bit registre. Ettersom UltraSPARC benyttet 8 register vinduer, var det virtuelle antallet register 144. Begge de to aritmetisk logiske enhetene kunne utføre artitmetikk, logiske og shift instruksjoner, men bare den ene av dem kunne utføre multiplikasjon og divisjon.
Desimaltallprosessoren bestod av tre funksjonelle enheter: En for addisjon og subtraksjon, en for multiplikasjon og en for divisjon og beregning av kvadratrøtter.
To funksjonelle enheter utgjorde grafikkprosessoren, som utførte UltraSPARCs nye SIMD instruksjoner som var definert av Visual Instruction Set.Desimaltallprosessoren og grafikkprosessoren delte 32 stk 64-bit registre.


=== 9-trinns pipe ved heltallsberegninger ===
I første trinn hentes instruksjoner fra instruksjons-cachen. I andre trinn dekodes instruksjonene og plasseres i instruksjons-bufferet. I trinn tre blir opptil fire instruksjoner grupperte hver for seg, og klargjorte for utførelse. Trinn fire utfører heltallsinstruksjoner og beregner virtuelle adresser.
I trinn fem aksesseres data-cachen. «Forutsigelser» under betingede hopp som ikke er korrekte blir forkastet. I trinn seks sjekkes graden av miss og hits i data-cachen. I trinn syv venter prosessoren på en pipe fra desimaltallsprosessoren og grafikk-enheten. I trinn åtte blir avbrudd håndtert. Og i det niende og siste trinnet skrives resultatet til minnet.


=== 4-trinns pipe for desimaltall- og grafikkenheten ===
I første trinn blir desimaltall- og grafikk-instruksjoner dekodet, og registerfilen blir aksessert. De neste trinnene er å starte utførelsen (X1), fortsette utførelsen (X2) og å avslutte utførelsen (X3).


=== Hurtigminne ===
UltraSPARC hadde et delt nivå-1 hurtigminne: 16 KB for data og 16 Kb for instruksjoner.
Prosessoren hadde også en integrert kontroller for et eksternt nivå-2 hurtigminne for både data og instruksjoner, som kjørte i samme hastighet som prosessoren. Størrelsen var valgfri, og kunne være 512 KB, 1 MB eller 2 MB.


== Datamaskiner med UltraSPARC ==
Mellom 1995 og 2001 ble UltraSPARC benyttet på fem modeller av arbeidsstasjoner i Sun Ultra-serien: Ultra 1 (1 prosessor), Ultra 1 E (1 prosessor), Ultra 2 (1-2 prosessorer), Ultra 3000 (1-6 prosessorer) og Ultra 4000 (1-14 prosessorer).
I seriene Ultra Server, Ultra Enterprise og Sun Enterprise ble den benyttet i datamaskiner med opptil 30 stk 167 Mhz UltraSPARC prosessorer (Enterprise 6500).


== Referanser ==


== Litteratur ==
SPARC Technology Business (1995). UltraSPARC-I High-Performance 64-Bit RISC Processor, Preliminary STP1030 (PDF). Sun Microsystems, Inc., 2550 Garcia Avenue, Mountain View, CA, U.S.A. 94043, Mai 1995. 
Sun Microsystems Inc. (1992). The SPARC Architecture Manual, version 9 (PDF). 2550 Garcia Avenue, Mountain View, California, 1992.