SPARC er en tidligere 32-biter RISC mikroprosessor med èn enkelt kjerne. Mikroprosessoren var konstruert for symmetrisk flerprosessering, og ble brukt i datamaskiner med en, to, fire eller flere mikroprosessorer. SPARC var en implementasjon av spesifikasjonen SPARC versjon 7, og var den første mikroprosessoren i SPARC-familien.

Versjon 7 av spesifikasjonen til SPARC ble publisert av Sun Microsystems i 1986. Den definerte en 32 biter RISC mikroprosessor med 32 stk generelle 32-biter prosessorregistre.

SPARC ble satt i produksjon av det japanske IT-selskapet Fujitsu i 1987, og ble første gang tatt i bruk på datamaskinene Sun-4/260 og Sun-4/280, som også ble markedsført under kodenavnet «Sunrise» («soloppgangen»). Disse datamaskinene ble lansert av Sun Microsystems 8. juli 1987, og var de første modellene av arbeidsstasjonene Sun-4. Den 12. april 1989 lanserte selskapet SPARCstation 1 (Sun/460) og 5. november 1990 fulgte SPARCstation 2 (Sun/475). Arbeidsstasjonene var avarter av Sun-4c, og begge benyttet SPARC.

Arkitekturen er åpen og uten opphavsrett, og ble en industristandard med flere aktører i markedet. Ulike avarter av SPARC ble produsert av Fujitsu, LSI Logic, Weitek, Texas Instruments, BIT Inc. og Cypress Semiconductor. Arbeidsstasjoner med SPARC ble også lansert av flere enn Sun Microsystems. I oktober 1990 lanserte det Taiwan-baserte selskapet Tatung Company de tre arbeidsstasjonene TWS 3000, TWS 5000 og TWS 7000, forsynt med operativsystemet SPARC OS. I 1991 ble de etterfulgt av CompStation 40. I 1992 lanserte Compuadd Corporation arbeidsstasjonen SS2 med en 40 MHz SPARC. Samme år lanserte Themis Computer to hovedkort for SPARC: 2LC og 2SE hadde en koprosessor for flyttall, 32 Kb hurtigminne og VME-buss.

SPARC ble også brukt i arbeidsstasjoner fra Solarix, Mars Microsystems, RDI, Soulbourne Computer Inc. og Opus Systems.

I 1990 ble versjon 8 av spesifikasjonen til SPARC publisert. Den banet veien for SPARCLite og microSPARC for minimaskiner såvel som en ny generasjon med superskalære mikroprosessorer i form av SuperSPARC og hyperSPARC. Sun Microsystems erstattet SPARC med SuperSPARC, da selskapet lanserte SPARCstation 10 i 1992.

Arkitektur RISC

Denne artikkelen handler om en mikroprosessor av typen RISC (Reduced instruction set computer). RISC ble lansert som følge av en iboende og voksende begrensning i tidligere mikroprosessorer av typen CISC (Complex instruction set computer). CISC-arkitekturene ble gradvis stadig mer komplekse, inntil kompleksiteten ble en hindring for deres ytelse. Filosofien bak RISC var å flytte denne kompleksiteten fra maskinvaren til programvaren. En rekke oppgaver som var påført mikroprosessorene under kjøring, ble nå overlatt til kompilatorene å utføre. thumb|280px|Bakgrunnsarbeidet for SPARC ble lagt ved University of California, Berkeley. De tre første RISC-arkitekturene kom noenlunde samtidig:

IBM 801 fra IBM (1980) Berkeley RISC (1981) ved University of California, Berkeley MIPS (1981) ved Stanford University, California

Videreutviklingen av IBM 801 førte til nye mikroprosessorer og familier i form av ROMP i 1981, IBM POWER i 1990 og PowerPC i 1991. SPARC er en videreutvikling av Berkeley RISC, og mikroprosessorene RISC I og RISC II. MIPS førte til etableringen av selskapet MIPS Computer Systems, som lanserte sin egen familie med mikroprosessorer.

En nyvinning ved Berkeley RISC var såkalte «registervinduer». En stor flaskehals for ytelsen i CISC mikroprosessorer, var knyttet til dataoverføringene mellom mikroprosessoren og hovedminnet under prosedyrekall. Registervinduene opphevet effektivt de fleste av slike dataoverføringer. SPARC «arvet» registervinduene fra Berkeley RISC, men realiserte dem på en litt annerledes måte.

SPARC

SPARC er først og fremst navnet på en datamaskinarkitektur, som omfatter en familie med mange ulike mikroprosessorer. Navnet blir tidvis også brukt om de første mikroprosessorene i denne familien. Disse er beskrevet lenger ned i denne artikkelen.

SPARC er en forkortelse for Scalable Processor ARChitecture – «skalerbar mikroprosessorarkitektur». «Skalerbar» betyr at den er konstruert for symmetrisk flerprosessering i stormaskiner og superdatamaskiner. Datamaskiner med SPARC kan skaleres fra å inneholde èn enkelt mikroprosessor (SISD), til å bestå av to, fire eller flere mikroprosessorer som deler et felles dataminne (SIMD).

Arkitekturen beskrives av en manual. Tre versjoner av manualen er blitt brukt til produksjon av mikroprosessorer:

Versjon 7, mars 1986 (32-biter) Versjon 8, desember 1990 (32-biter) Versjon 9, 1992 (64-biter)

Denne artikkelen beskriver versjon 7 av manualen, og mikroprosessorer som bygger på den.

Flere separate enheter Versjon 7 av spesifikasjonen til SPARC ble publisert av Sun Microsystems i mars 1986. Manualen beskriver en 32-biter RISC mikroprosessor med en enkelt kjerne. Arkitekturen består av tre separate deler:

En aritmetisk logisk enhet, kalt heltallsenhet (Integer Unit) En koprosessor for flyttall (Floating Point Unit) En valgfri koprosessor 300px|thumb|Eksempel på en arkitektur med flere brikker. Hovedkort for arbeidstasjonen HP 9000 med mikroprosessoren PA-RISC NS-2, syv andre utførende enheter og to Weitek koprosessorer for flyttall. Benevnelsen «mikroprosessor» brukes kun om heltallsenheten. I tillegg kom to andre eksterne enheter:

En minnehåndterer Et valgfritt hurtigminne

Spesifikasjonen la ingen føringer på størrelsen av hurtigminnet eller implementasjonen av minnehåndtereren. Det naturlige for en slik mikroprosessor vil være en 32-biter databuss og en 32-biter adressebuss, som aksesserer en 32-biter virtuell hukommelse på 232 eller 4 gigabyte. Men heller ikke bredden på disse bussene er definert av spesifikasjonen. Valg av bussenes bredde, hurtigminnets størrelse (eller hurtigminne overhodet) og utformingen av minnehåndtereren ble i praksis overlatt til maskinvarefabrikantene.

Oppdelingen i mange separate enheter var vanlig på denne tiden; transistorene var ennå ikke kommet ned i størrelser som tillot integrasjon i en enkelt brikke. Oppe til høyre ser vi utsnitt av et hovedkort for arbeidsstasjonen HP 9000 med en enkelt 32-biter PA-RISC NS-2 mikroprosessor. Det består av mikroprosessoren, syv separate tilleggsenheter, og to koprosessorer for flyttall i form av Weitek 2264 og Weitek 2265.

Laste-lagre-arkitektur

Mikroprosessoren kommuniserer med hovedminnet i datamaskinen på en enkel måte. Den benytter de to operasjonene Laste (Load) og Lagre (Store). Data overføres fra hovedminnet (Laste) eller til hovedminnet (Lagre).

SPARC hadde fire adresseringsmodi: Summen av to prosessor-registere, indeksert modus, register indirekte og register absolutt. De to sistnevnte er varianter av indeksert modus.

Denne enkle minnehåndteringen er et særpreg ved alle RISC-arkitekturer, og skiller dem fra CISC-arkitekturer.

Ingen mikrokode

SPARC mangler mikrokode. Også dette er et generelt kjennetegn ved RISC. En mikrokode er en kommandotolk som oversetter maskinkode til eksekverbar kode under kjøring. Dette er selvsagt tregere enn å utføre programmer direkte, som på forhånd er oversatt til eksekverbar kode. Et gjennombrudd som gjorde dette mulig, var fremveksten av optimaliserende kompilatorer. I RISC-maskiner er oppgavene til mikrokoden overført til kompilatorene; man kan også si at kompleksiteten ved mange CISC-maskiner (se f.eks. forrige avsnitt om adresseringsmodi) er flyttet fra maskinvaren til kompilatorene.

Fast størrelse på instruksjoner SPARC hadde en fast størrelse på instruksjonene, og de var alle 32-biter.

Denne faste størrelsen er også en egenskap ved RISC generelt, som kontrast til CISC.

4-trinns pipelining

SPARC benyttet en 4-trinns pipeline for instruksjoner som behandlet heltall, og arbeidet med fire instruksjoner samtidig. Mens èn instruksjon ble hentet fra minnet, ble en annen dekodet, en tredje utført, og resultatet av en fjerde skrevet til minnet:

Syklus 1 2 3 4 5 6 7Instruksjon 1HENTDEKODUTFØRSKRIVInstruksjon 2HENTDEKODUTFØRSKRIVInstruksjon 3HENTDEKODUTFØRSKRIVInstruksjon 4HENTDEKODUTFØRSKRIV

En instruksjon per klokkepuls Den faste størrelsen på instruksjonene er noe som gjør pipelining lettere. Og sluttresultatet er at SPARC alltid utfører en instruksjon per klokkesyklus. En SPARC som kjører i 10 MHz vil derfor alltid ha en ytelse på 10 MIPS.

Også dette er et særpreg ved RISC generelt, i kontrast til CISC. På CISC mikroprosessorer tar instruksjoner et varierende antall klokkepulser å gjennomføre.

Formatene på instruksjonene SPARC versjon 7 spesifiserte fem ulike formater på instruksjonene – tre hovedformater og to underformater. Disse er avbildet under.

Format 2 bit 5 bit 6 bit 5 bit 1 bit 8 bit 5 bit1DESTOPCODESRC 10FP-OPSRC 22DESTOPCODESRC11 IMMEDIATE CONSTANT

I det første formatet overføres innholdet fra et register til et annet. I det andre formatet overføres en konstant i størrelsesorden -4096 til +4096 til et register. Bit 13 skiller mellom positive og negative tall.

Format 2 bit 1 bit 4 bit 3 bit 22 bit3ACONDOPPC-RELATIVE DISPLACEMENT4 DESTOPIMMEDIATE CONSTANT5 PC-RELATIVE DISPLACEMENT

Det tredje formatet er knyttet til betingede hopp ved subrutiner. Feltet COND spesifiserer typen branch (BLT, BLE eller BEQ). 22-bit feltet DISPLACEMENT gir den relative 32-biter adressen til målet, slik at betingede hopp kan bevege seg fremover og bakover i størresesordenen 8 Mb. A-bitet (ANNUL) er et triks som brukes til å eliminere noen delay slots ved betingede hopp. Hvis det er 1, blir en delay slot bare utført når betingelsen oppfylles. Hvis betingelsen ikke oppfylles sløyfes subrutinehoppet.

Det fjerde formatet gir den absolutte adressen til målet, uten delay slots og uten å oppgi typen branch. Heller ikke det femte formatet oppgir typen branch eller angir delay slots, men kun den relative 32-biter adressen til målet.

Stort antall generelle registere SPARC versjon 7 speifiserer et stort antall generelle registere. Dette er ikke nødvendigvis en egenskap ved RISC i motsetning til CISC, men var implementert i Berkeley RISC I og Berkeley RISC II til bruk for registervinduer. SPARC spesifiserer totalt 520 slike generelle registere.

Registervinduer I CISC-prosessorer er en stor del av dataoverføringene mellom mikroprosessoren og hovedminnet knyttet til prosedyrekall: Parametrene overføres, innholdet i registrene lagres, returadressen legges på stakken og hentes tilbake igjen når prosedyren er avsluttet. Datamaskinens minne har tradisjonelt vært, og er fortsatt, mye tregere enn både mikroprosessorens interne registre og hurtigminne. Derfor er prosedyrekall en stor flaskehals for den totale ytelsen.

Arkitektene bak RISC-prosessorene Berkeley RISC I og RISC II benyttet en genial metode for å oppheve nesten alle slike dataoverføringer. De innførte «overlappende registervinduer», som også benyttes i SPARC.David. A. Patterson, Carlo. H. Sequin: RISC I: A Reduced Instruction Set VLSI Computer, Proc. 8th International Symposium on Computer Architecture, Association for Computing Machinery, side 443-457, 1981, 2. utgave, International Symposium on Computer Architecture archive, 25 years of the international symposia on Computer architecture, side 216–230, 1998, ISBN 1-58113-058-9 RISC I og RISC II var inspirasjonskilden til SPARC, men SPARC benytter en noe avvikende implementasjon.

RISC I hadde 78 registere; 18 var globale, mens 6 vinduer inneholdt 14 registere hver. RISC II hadde 138 registere; 10 var globale, mens 8 vinduer inneholdt 16 registere hver.

SPARC-spesifikasjonen opererer med 32 stk virtuelle 32-biter registre i hvert vindu, nummerert fra R0 til R31. Registrene er delt inn i fire grupper:

# 32 bit lange registreR0–R7Globale variablerR8–R15Inngående parametreR16–R23Lokale variableR24–R31Utgående parametre

R0–R7 er nedenfor nummererte fra G0 til G7. G0 er alltid null. Registrene G1–G7 er globale, og kan inneholde heltall, pekere til tabeller eller andre data-elementer.