Ero sivun ”SPARC” versioiden välillä

Wikipediasta
Siirry navigaatioon Siirry hakuun
[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Ipr1 (keskustelu | muokkaukset)
Ipr1 (keskustelu | muokkaukset)
Rivi 34: Rivi 34:
Vuonna 1995 julkaistu [[Sun Ultra 1]] oli ensimmäinen 64-bittistä UltraSPARC-suoritinta käyttävä tietokone.<ref>{{Verkkoviite | osoite = http://www.computinghistory.org.uk/det/42409/Sun-Ultra-1/ | nimeke = Sun Ultra 1 | viitattu = 25.8.2021 | kieli = {{en}} }}</ref>
Vuonna 1995 julkaistu [[Sun Ultra 1]] oli ensimmäinen 64-bittistä UltraSPARC-suoritinta käyttävä tietokone.<ref>{{Verkkoviite | osoite = http://www.computinghistory.org.uk/det/42409/Sun-Ultra-1/ | nimeke = Sun Ultra 1 | viitattu = 25.8.2021 | kieli = {{en}} }}</ref>


Vuonna 2002 julkaistu ''SPARC Joint Programming Specification'' (SPARC JPS1) sisältää yhteisiä määrittelyitä SPARC V9 toteutuksille, joita ovat Fujitsun SPARC64 V ja Sunin UltraSPARC III.<ref>{{Verkkoviite | osoite = https://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0.4-Common-pub.pdf | nimeke = SPARC Joint Programming Specification | tiedostomuoto = PDF | ajankohta = 31.5.2002 | viitattu = 1.3.2022 | kieli = {{en}} }}</ref>
Vuonna 2002 julkaistu ''SPARC Joint Programming Specification'' (SPARC JPS1) sisältää yhteisiä määrittelyitä SPARC V9 toteutuksille, joita ovat Fujitsun SPARC64 V ja Sunin UltraSPARC III.<ref>{{Verkkoviite | osoite = https://www.fujitsu.com/downloads/PRMPWR/JPS1-R1.0.4-Common-pub.pdf | nimeke = SPARC Joint Programming Specification | tiedostomuoto = PDF | ajankohta = 31.5.2002 | viitattu = 1.3.2022 | kieli = {{en}} }}</ref> Seuraavana vuonna julkaistu SPARC JPS2 sisältää SPARC64 VI ja UltraSPARC IV yhteiset määrittelyt.<ref>{{Verkkoviite | osoite = https://www.oracle.com/technetwork/server-storage/sun-sparc-enterprise/documentation/joint-program-spec2-2516670.pdf | nimeke = SPARC JPS2: Common Specification | tiedostomuoto = PDF | ajankohta = 18.9.2003 | viitattu = 1.3.2022 | kieli = {{en}} }}</ref>


Vuonna 2006 Sun ilmoitti UltraSPARC T1 ja T2 -mallien lähdekoodin julkaisemisesta, joka on julkaistu [[GPLv2]]-lisenssillä nimellä [[OpenSPARC]].<ref>{{Verkkoviite | osoite = https://www.cnet.com/news/sun-to-release-open-source-sparc-designs/ | nimeke = Sun to release open-source Sparc designs | ajankohta = 21.3.2006 | viitattu = 21.10.2019 | kieli = {{en}} }}</ref><ref>{{Verkkoviite | osoite = https://www.oracle.com/technetwork/systems/opensparc/opensparc-faq-1444660.html | nimeke = OpenSPARC Frequently Asked Questions | viitattu = 21.10.2019 | kieli = {{en}} }}</ref>
Vuonna 2006 Sun ilmoitti UltraSPARC T1 ja T2 -mallien lähdekoodin julkaisemisesta, joka on julkaistu [[GPLv2]]-lisenssillä nimellä [[OpenSPARC]].<ref>{{Verkkoviite | osoite = https://www.cnet.com/news/sun-to-release-open-source-sparc-designs/ | nimeke = Sun to release open-source Sparc designs | ajankohta = 21.3.2006 | viitattu = 21.10.2019 | kieli = {{en}} }}</ref><ref>{{Verkkoviite | osoite = https://www.oracle.com/technetwork/systems/opensparc/opensparc-faq-1444660.html | nimeke = OpenSPARC Frequently Asked Questions | viitattu = 21.10.2019 | kieli = {{en}} }}</ref>

Versio 1. maaliskuuta 2022 kello 08.33

SPARC
Perustietoja
Kehittäjä Sun Microsystems, SPARC International
Valmistaja Fujitsu, Ross Technology, Sun Microsystems, Texas Instruments
Julkaistu 1985
Arkkitehtuuri ja luokitus
Arkkitehtuurityyppi RISC
Osoiteavaruus 32-bit / 64-bit
Tavujärjestys Big endian[1]

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.

Ultra SPARC II -suoritin.

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

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[2] ja Ross Technologyn HyperSPARC. 64-bittisiä suorittimia ovat Sunin UltraSPARC ja Fujitsun SPARC64.

SPARC-suorittimesta on olemassa vapaa toteutus LEON2, jonka VHDL-lähdekoodi on lisensoitu LGPL-lisenssillä. Lisäksi SPARC-suorittimia on kehittänyt venäläinen MTšST.[3] Myös Kiinan kansanarmeijan teknologiayliopisto on kehittänyt oman FeiTeng-1000-suorittimensa OpenSPARCin pohjalta.

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

Historia

Samaan aikaan oli käynnissä kolme projektia pienennetyn käskykannan suorittimen kehittämiseen: IBM 801, Berkeley RISC ja Stanford MIPS.[4][5] Berkeleyn projektia johtivat David Patterson ja Carlo H. Sequin, joista jälkimmäinen esitti termin ”RISC”.[6]

Suorittimen kehitys alkoi vuonna 1984 Berkeleyn yliopiston esittämän RISC-käsitteen pohjalta.[7] Ensimmäinen versio oli minimalistinen ilman kokonaislukujen kerto- ja jakolaskua, mutta 10 miljoonan käskyn nopeudella se oli noin kolme kertaa nopeampi kuin sen ajan CISC-suorittimet.[7] SPARC-suorittimessa on tyypillisesti 128 tai 144 kokonaislukurekisteriä, joista kerralla on 32 saatavilla: 8 rekisteriä on ”globaalia” kun taas loput käytetään 16 rekisterin liukuvan ikkunan mukaan funktiokutsujen yhteydessä.[5] Ylimmät ja alimmat 8 rekisteriä jaetaan parametrien välittämiseen ja palauttamiseen ja kutsujen jälkeen ikkuna liikkuu takaisin ylös.[5] Tämä mahdollistaa funktiokutsujen tekemisen yhdessä kellojaksossa.[5] SPARC on määrittely, josta oli erilaisia toteutuksia, joissa rekisteripino voi olla suurempi tai pienempi tarpeen mukaan.[5]

Alkuperäinen määrittely oli 32-bittiselle suorittimelle, mutta 64-bittisiä superskaalarisia versioita suunniteltiin ja toteutettiin kuten Texas Instrumentsin SuperSparc (1992).[5] Sunin ja Texas Instrumentsin UltraSPARC (1995) sekä Fujitsun SPARC64 paransivat suorituskykyä merkittävästi.[5]

Sunilla oli aluksi käytössä sekä Motorola 68000 -sarjan ja Intel 80386 -suorittimeen perustuvia tietokoneita.[8] Nämä korvaamaan Sun kehitti SPARC-suorittimen, joka oli ensiksi käytössä vuonna 1987 julkaistussa VME-väyläisessä Sun-4 -tietokoneessa.[8] 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.[8]

Vuonna 1995 julkaistu Sun Ultra 1 oli ensimmäinen 64-bittistä UltraSPARC-suoritinta käyttävä tietokone.[9]

Vuonna 2002 julkaistu SPARC Joint Programming Specification (SPARC JPS1) sisältää yhteisiä määrittelyitä SPARC V9 toteutuksille, joita ovat Fujitsun SPARC64 V ja Sunin UltraSPARC III.[10] Seuraavana vuonna julkaistu SPARC JPS2 sisältää SPARC64 VI ja UltraSPARC IV yhteiset määrittelyt.[11]

Vuonna 2006 Sun ilmoitti UltraSPARC T1 ja T2 -mallien lähdekoodin julkaisemisesta, joka on julkaistu GPLv2-lisenssillä nimellä OpenSPARC.[12][13]

Vuonna 2017 Oracle julkaisi SPARC M8 mallin seuraajana SPARC M7 mallille.[14] Samana vuonna Oracle irtisanoi satoja SPARC-suorittimien suunnittelusta vastanneita henkilöitä käytännössä lopettaen jatkokehityksen.[15]

Ominaisuudet

SPARC sai vahvasti vaikutteita ensimmäisen sukupolven RISC-suorittimista, kuten Berkeleyn yliopiston RISC I ja II ja IBM 801. SPARCin 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 ikkunoidut 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 CISC-suorittimista. Sparc-suorittimissa ei ole ollut joitain suorituskykyä parantavia ominaisuuksia, joita CISC-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.[16] 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.

Malleja

SPARC käskykannasta on eri valmistajilla eri tuotenimiä joita ovat mm.:

SPARC-käskykantaan perustuva LEON-sarja on Euroopassa suosittu avaruuskäyttöön soveltuva suoritin.[17]

Käyttöjärjestelmätuki

Lähteet

  1. SPARC Processor Issues docs.oracle.com. Viitattu 17.2.2021. (englanniksi)
  2. Fujitsu TurboSparc Processor cpushack.com. Viitattu 1.3.2022. (englanniksi)
  3. http://www.mcst.ru/r_1000
  4. RISC Refined: Berkeley RISC, Stanford MIPS . . cpushack.com. Viitattu 18.7.2020. (englanniksi)
  5. a b c d e f g Part II: SPARC, an extreme windowed RISC (1987) . . cpushack.com. Viitattu 18.7.2020. (englanniksi)
  6. RISC Architecture ibm.com. Viitattu 18.7.2020. (englanniksi)
  7. a b Chip Hall of Fame: Sun Microsystems SPARC Processor spectrum.ieee.org. 30.6.2017. Viitattu 21.10.2019. (englanniksi)
  8. a b c History of SPARC systems 1987-2006 softpanorama.org. Viitattu 21.10.2019. (englanniksi)
  9. Sun Ultra 1 computinghistory.org.uk. Viitattu 25.8.2021. (englanniksi)
  10. SPARC Joint Programming Specification (PDF) fujitsu.com. 31.5.2002. Viitattu 1.3.2022. (englanniksi)
  11. SPARC JPS2: Common Specification (PDF) oracle.com. 18.9.2003. Viitattu 1.3.2022. (englanniksi)
  12. Sun to release open-source Sparc designs cnet.com. 21.3.2006. Viitattu 21.10.2019. (englanniksi)
  13. OpenSPARC Frequently Asked Questions oracle.com. Viitattu 21.10.2019. (englanniksi)
  14. Larabel, Michael: SPARC M8 Processors Launched Phoronix. Viitattu 19.9.2017.
  15. Dan Robinson: SPARC will fly: Your cheat sheet for cocktail banter at Oracle's upcoming shindig theregister.com. 27.9.2017. Viitattu 1.3.2022. (englanniksi)
  16. http://www.oracle.com/technetwork/server-storage/sun-sparc-enterprise/documentation/o13-060-t5-multicore-using-threads-1999179.pdf, sivu 9
  17. Jacek Krywko: Space-grade CPUs: How do you send more computing power into space? 11.11.2019. Ars Technica. Viitattu 15.11.2019. (englanniksi)

Aiheesta muualla