SPARC

Kohteesta Wikipedia
Loikkaa: valikkoon, hakuun
Ultra SPARC II -suoritin.

SPARC (Scalable Processor ARChitecture) on RISC-suoritinarkkitehtuuri, jonka kehitti alun perin 1985 Sun Microsystems. SPARCin oikeudet on siirretty 1989 perustetulle SPARC International, Inc. -yhtiölle, joka markkinoi SPARCia ja suorittaa hyväksymistestauksia. SPARC on täysin avoin: useat valmistajat ovat lisensoineet sen ja valmistavat SPARC-yhteensopivia suorittimia. Näihin valmistajiin kuuluvat Sun Microsystemsin lisäksi Texas Instruments, Cypress Semiconductor ja Fujitsu. SPARC-suorittimesta on olemassa myös vapaa toteutus LEON2, jonka VHDL-lähdekoodi on lisensoitu LGPL-lisenssillä.

SPARC-suorittimia käytettiin aluksi työasemissa, mutta nykyään niitä käytetään myös suurissa moniprosessorikoneissa, joita Sun ja Fujitsu ovat suunnitelleet.

SPARC-käskykannasta on useita versioita. Ensimmäiset suorittimet perustuivat version 7 määrittelyyn, myöhemmät versioon SPARCv8 ja 64-bittiseen versioon SPARCv9. Aikaisempia 32-bittisiä SPARC-suorittimia olivat Sunin microSPARC ja SuperSPARC, Fujitsu Microelectronicsin TurboSPARC ja Ross Technologyn HyperSPARC. 64-bittisiä suorittimia ovat Sunin UltraSPARC ja Fujitsun SPARC64.

Sunin UltraSPARC-suorittimet ja Fujitsun SPARC64 V ja uudemmat toteuttavat lisäksi SIMD-laajennukset, jotka tunnetaan nimellä VIS (Visual Instruction Set).

Ominaisuudet[muokkaa | muokkaa wikitekstiä]

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.[1] 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 säikeistykseen (Simultaneous multithreading; SMT).

Vuonna 2005 julkaistu Sunin UltraSPARC T1 -suoritin (koodinimeltään Niagara) pystyi ajamaan neljää säiettä yhtäaikaisesti. Lisäksi yhteen suorittimeen sai 4, 6 tai 8 suoritinydintä. 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 (cache miss). Lisäksi suoritin on myös superskalaarinen (2-way superscalar) eli se pystyy ajamaan yhdessä ohjelmasäikeessa kahta konekielistä käskyä rinnakkain. T1:n ongelmana oli että siinä oli vain yksi matematiikkasuoritin, jonka vuoksi liukulukusuorituskyky oli erittäin huono.

Tekniikan kehitti Afara Websystems, jonka Sun osti 2002. Sen markkinointinimenä on CoolThreads, joka viittaa myös suorittimen sähkönkulutukseen.

Seuranneessa UltraSPARC T2 -mallissa ja uudemmissa rinnakkain ajettavia säikeitä on kahdeksan.

Lähteet[muokkaa | muokkaa wikitekstiä]

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]