SPARC

Historia

Suorittimen kehitys alkoi vuonna 1984 Berkeleyn yliopiston esittämän RISC-käsitteen pohjalta. Ensimmäinen versio oli minimalistinen ilman kokonaislukujen kerto- ja jakolaskua mutta se 10 miljoonan käskyn nopeudella se oli noin kolme kertaa nopeampi kuin sen ajan CISC-suorittimet.
Sunilla oli aluksi käytössä sekä Motorola 68000 -sarjan ja Intel 80386 -suorittimeen perustuvia tietokoneita. Nämä korvaamaan Sun kehitti SPARC-suorittimen, joka ensiksi käytössä vuonna 1987 julkaistussa VME-väyläisessä Sun-4 -tietokoneessa. Vuonna 1989 Sun julkaisi SBus-väylää käyttävän SPARCstation 1 -työaseman, joka oli kolme kertaa nopeampi kuin Sun-3 jonka se korvasi.
Vuonna 2006 Sun ilmoitti UltraSPARC T1 ja T2 -mallien lähdekoodin julkaisemisesta, joka on julkaistu GPLv2-lisenssillä nimellä OpenSPARC.

Ominaisuudet

Sparc sai vahvasti vaikutteita ensimmäisen sukupolven RISC-suorittimista, kuten Berkeleyn yliopiston RISC I ja  II ja IBM 801, ja on ensimmäiset versiot olivat lähes minimalistisen puhtaita RISC:ejä.
Käskyjen määrä oli minimaalinen ja niitä oli tavoite suorittaa yksi jokaisessa kellojaksossa. Ensimmäisestä version 7 käskykannan Sparc-suorittimesta puuttuivat kerto- ja jakolaskut, jotka oli tarkoitus suorittaa ohjelmallisesti.
Toinen varhaisista RISC:eistä peräisin olevan ominaisuus on viivästetyt hypyt; hyppykäskyn jälkeinen käsky suoritetaan ennen kuin hyppykäsky toteutuu. 
Sparcin erikoisuus on niin sanotut pyörivät rekisterit; suorittimella on enemmän rekistereitä kuin mitä kerralla on näkyvissä ohjelmakoodille, ja funktiokutsun tai funktiosta palaamisen yhteydessä tätä näkyvien rekisterien aluetta muutetaan. Tämä mahdollistaa nopeat funktiokutsut, koska rekistereitä ei tarvitse erikseen tallettaa pinomuistiin funktiokutsun yhteydessä. Käyttöjärjestelmän täytyy kuitenkin tallettaa rekisterit, jos ne uhkaavat loppua kesken.
Sparcin määritelmien mukaan suoritin voi sisältää 72–640 rekisteriä. Näistä 32 on kerralla näkyvillä. Rekisterin g0 arvo on aina nolla ja g1–g7 ovat globaaleja rekistereitä. 24 rekisteriä muodostavat rekisteri-ikkunan.
Sana 'Scalable' suorittimen nimessä viittaa juuri mahdollisuuteen lisätä rekisterien määrää.
Puhdasoppinen RISC-toteutus osoittautui käytännössä huonoksi ratkaisuksi ja version 8 käskykanta vuodelta 1990 lisäsi kerto- ja jakolaskut sekä liukulukuyksikköä parannettiin toteuttamaan 128-bittiset nelinkertaisen tarkkuuden luvut. Sparcin liukulukutoteutus oli perustana IEEE 1754-1994 -standardille.
Sunin SuperSPARC oli myös perustana SPEC:n CPU95 -suorituskykyvertailulle.
64-bittinen SPARCv9 julkaistiin 1993. Suorittimien päävalmistajat Sun ja Fujitsu julkaisivat vielä 2002 Joint Programming Specification 1 -määritelmän (JPS1), joka kuvasi molempien yhdessä toteuttamat toiminnot.
JPS2 kuvasi Sparc-moniydinsuorittimet.
Suunnittelufilosofialtaan Sparc on eronnut esim. PC-koneissa käytetyistä CISC-suorittimista.
Sparc-suorittimissa ei ole ollut joitain suorituskykyä parantavia ominaisuuksia, joita PC-suorittimissa on ollut miltei 10 vuotta. Merkittävin näistä oli käskyjen uudelleenjärjestely (out-of-order execution). Tämä ominaisuus tuli ensimmäisenä Oraclen julkaisemaan SPARC S3 -ytimeen perustuvaan vuoden 2011 SPARC T4 -malliin.
Tätä ennen Sparcin suorituskyky yhden säikeen kuormilla oli kilpailijoitaan huonompi.
Pyörivät rekisterit hankaloittavat merkittävästi käskyjen uudelleenjärjestelyn toteuttamista, minkä vuoksi ominaisuus puuttui muistakin suorittimista kuten Intel Itanium tai IBM POWER6.
Sen sijaan näissä lähinnä palvelimissa käytettävissä suorittimissa panostettiin voimakkaasti suorittimen sisäiseen monisäikeistykseen (Simultaneous multithreading; SMT). 
Vuonna 2005 julkaistu Sunin UltraSPARC T1 -suoritin (koodinimeltään Niagara) pystyi ajamaan neljää säiettä yhtäaikaisesti per ydin. Lisäksi yhteen suorittimeen sai 4, 6 tai 8 suoritinydintä, jolloin yksi suoritin pystyi ajamaan 32 säiettä yhtäaikaisesti 8 ytimen mallilla. Suoritinytimet olivat huomattavan yksinkertaisia, eikä niissä ollut paljoa välimuistia.
Jokainen ydin on toteutukseltaan ns. barrel-suoritin (barrel processor) ja vaihtaa ajattavaa säiettä joka kellojaksolla. Tämä eroaa normaalista preemptiivisestä ohjelmistopohjaisesta moniajosta, jossa säiettä ajetaan satoja kellojaksoja, ennen kuin suoritin vaihtaa ajettavaa ohjelmaa. Tavoitteena on että suoritin pystyi suorittamaan muita säikeitä sillä aikaa kun se odottaa datan hakua muistista jos sitä ei löytynyt välimuistista (engl. cache miss). Lisäksi suoritin on myös superskalaarinen (2-way superscalar) eli se pystyy ajamaan yhdessä ohjelmasäikeessä kahta konekielistä käskyä rinnakkain.
Tekniikan kehitti Afara Websystems, jonka Sun osti 2002. Sen markkinointinimenä on CoolThreads, joka viittaa myös suorittimen sähkönkulutukseen. T1 oli suunnattu pelkästään palvelimiin ja siinä oli vain yksi matematiikkasuoritin, jonka vuoksi liukulukusuorituskyky oli erittäin huono.
Seuranneessa UltraSPARC T2 -mallissa ja uudemmissa rinnakkain ajettavia säikeitä on kahdeksan.