**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 predictor*

UltraSPARC 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

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| HENT | DEKOD | GRUPPER | UTFØR | CACHE-TILGANG | N1 | N2 | N3 | SKRIV |

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

| 1 | 2 | 3 | 4 |
| --- | --- | --- | --- |
| REGISTER | X1 | X2 | X3 |

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.

Sun Enterprise 4500 Server kjørte opptil 14 stk UltraSPARC prosessorer i parallell

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
----------

1. ↑  SPARC V9 1992
2. ↑  SPARC V9 2003, side XIV
3. 1 2 3  Mark Tremblay: UltraSPARC(™)-I: A 64-bit Superscalar Processor with Multimedia Support, SPARC Technology Business, Sun Microsystems Inc. Hot Chips VII, august 1995
4. ↑  Linley Gwennap: UltraSparc Unleashes SPARC Performance, Microprocessor Report, Volume 8, Number 13, 3. oktober, 1994
5. ↑  Dale Greenley, J. Bauman, D. Chang, Dennis Chen, R. Eltejaein, P. Ferolito, P. Fu, R. Garner, D. Greenhill, H. Grewal, K. Holdbrook, B. Kim, L. Kohn, H. Kwan, M. Levitt, G. Maturana, D. Mrazek, C. Narasimhaiah, K. Normoyle, N. Parveen, P. Patel, A. Prabhu, M. Tremblay, M. Wong, L. Yang, K. Yarlagadda, R. Yu, R. Yung, G. Zyner: *UltraSPARC: the next generation superscalar 64-bit SPARC*, compcon, side.442-451, 40th IEEE Computer Society International Conference (COMPCON'95), 1995
6. ↑  Marc Tremblay, J. Michael O'Connor: *UltraSparc I:A Four-Issue Processor Supporting Multimedia*, IEEE Micro, Volume 16, Issue 2, IEEE Computer Society Press, Los Alamitos, CA, USA, april 1996, side 42–50, ISSN 0272-1732
7. ↑  Linley Gwennap: UltraSparc Adds Multimedia Instructions (pdf), Microprocessor Report, 5. desember 1994

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.

| * v
* d
* r
SPARC mikroprosessorer |
| --- |
| SPARC versjon 732-bit | SPARC |
| SPARC versjon 832-bit | SPARCLite **·** microSPARC **·** microSPARC II **·** SuperSPARC **·** SuperSPARC II **·** hyperSPARC **·** TurboSPARC **·** LEON |
| SPARC versjon 964-bit | UltraSPARC **·** UltraSPARC II **·** UltraSPARC IIe  **·** UltraSPARC IIi  **·** UltraSPARC IIe+ **·** UltraSPARC III **·** UltraSPARC III Cu  **·** UltraSPARC IIIi  **·** UltraSPARC IV **·** UltraSPARC T1 **·** UltraSPARC T2 **·** SPARC T3 **·** SPARC T4 **·** SPARC T5 **·** SPARC T6 **·** SPARC T7 **·** SPARC T8 **·** SPARC M5 **·** SPARC M6 **·** SPARC M7 **·** SPARC M8 **·** SPARC64 **·** SPARC64 II **·** SPARC64 III **·** SPARC64 IV **·** SPARC64 V **·** SPARC64 VI **·** SPARC64 VII **·** SPARC64 VIIIfx **·** SPARC64 IXfx **·** SPARC64 X |
| – |