SPARC

Allikas: Vikipeedia
Protsessor SPARC T4

SPARC (inglise keeles Scalable Processor Architecture) on kärbitud käsustikul (Reduced instruction set) RISC põhinev protsessoriarhitektuur, mida arendab Sun Microsystems ja mis toodi välja 1987. aasta keskpaigas. SPARC leiutati seoses Californias asuva Berkeley ülikooli uuringuga kärbitud käsustikuga arvutite (Reduced Instruction Set Computing) RISC kohta. Esimese SPARC-arhitektuuril põhineva protsessori tootsid Sun ja Fujitsu 1986. aastal. Aasta hiljem tuli Sun välja esimese SPARC-protsessorit kasutava arvutiga. 1989. aastal asutas Sun Microsystems mittetulundusühingu SPARC International, millele firma loovutas SPARC-arhitektuuri omandiõigused. SPARC International tegeleb SPARC-tehnoloogia haldamise ja litsentsimisega. SPARC on avatud arhitektuur, mis tähendab seda, et selle tehnoloogia on avalik ja seda tüüpi protsessoreid tohivad toota kõik firmad, kes omavad SPARCi litsentsi. SPARC-protsessoreid kasutatakse põhiliselt Unixi-põhiseid operatsioonisüsteeme kasutavates arvutites ja SPARC on alati olnud eriti tihedalt seotud Suni operatsioonisüsteemiga Solaris. [1] [2]

Tehnilised näitajad[muuda | muuda lähteteksti]

SPARC-protsessorite väljatöötamisel on põhiliselt keskendutud kiiruse saavutamisele kasutades protsessorites mitut tuuma ja nendes omakorda mitut eraldi lõime (thread). SPARC kasutab kärbitud käsustikku (RISC). SPARC-protsessorid on enamasti väga hästi skaleeritavad ehk neid on suhteliselt lihtne rakendada nii lauaarvutites kui ka suurtes superarvutites.

SPARC V9, mis on praegu kõige uuem SPARCi versioon, kasutab lineaarset aadressiruumi ja 64-bitist adresseerimist. Protsessori põhilised andmetüübid on 32- ja 64-bitised täisarvud ning 32-, 64- ja 128-bitised ujukomaarvud. Protsessori instruktsioonid on kõik täpselt 32 biti suurused. SPARC-protsessoril on kaks erinevat töörežiimi: privilegeeritud ning mitteprivilegeeritud. Privilegeeritud režiimis saab protsessor käivitada kõiki olemasolevaid instruktsioone, mitteprivilegeeritud režiimis aga mitte. SPARC V8 kasutas ainult big-endian süsteemi. SPARC V9 kasutab samuti instruktsioonides big-endian süsteemi, kuid saab andmete puhul hakkama nii big-endian kui little-endian süsteemides.

Üksused[muuda | muuda lähteteksti]

SPARC-protsessoris on kaks põhilist üksust: täisarvuplokk (integer unit) ja ujukomaplokk (floating-point unit). Täisarvuploki juurde kuuluvad üldotstarbelised registrid ja see tegeleb lisaks täisarvude arvutamisele ka protsessori üldise juhtimisega. See arvutab ka mäluaadresse ja kontrollib ujukomaploki instruktsoonide käivitamist. Ujukomaplokk tegeleb ujukomaarvutustega. Selle juurde kuulub 32 32-bitist, 32 64-bitist ning 16 128-bitist registrit.

Registrid[muuda | muuda lähteteksti]

SPARC-protsessoril on kahte tüüpi registreid: üldotstarbelised (general-purpose) ja kontroll/staatus registrid. Üldotstarbelised registrid on täisarvude tööregistrid (integer working registers) ja ujukomaarvude tööregistrid (floating-point working registers). Kontroll/staatus registreid on palju erinevaid ja igaüks neist täidab üsnagi spetsiifilist alaülesannet. Nende üldine eesmärk on aga kontrollida protsessori üldist toimimist erinevate seisundite ja loendurite (counter) kaudu. Kontroll/staatus registrite alla kuuluvad näiteks Program Counter register, Processor State register ja Floating-Point State Register. Osa registreid on võimalik kasutada ainult privilegeeritud töörežiimis, kuid enamikule neist on olemas juurdepääs ka mitteprivilegeeritud režiimis.

Instruktsioonid[muuda | muuda lähteteksti]

SPARCi instruktsioonid on kodeeritud neljas erinevas variandis ja on jaotatud 11 kategooriasse. Kui protsessor loeb mälust instruktsiooni, siis on kolm võimalust: instruktsioon käivitatakse, nullitakse või tõkestatakse (trap). Protsessor valib järgmise käsu, mida käivitatakse, kasutades mälu aadressi, mis on kirjas programmi lugejas (program counter). Pärast instruktsiooni täitmist suurendatakse automaatselt programmi loendurit, mille tulemusel käivitatakse juba järgmine instruktsioon. SPARC V9 instruktsioonid grupeeritakse järgnevalt: Memory access, Memory synchronization, Integer arithmetic, Control transfer, Conditional moves, Register window management, State register access, Privileged register access, Floating-point operate, Implementation-dependent ja Reserved instruktsioonid.

Mälumudelid[muuda | muuda lähteteksti]

SPARC kasutab mälumudeleid, mis määravad ära, kuidas toimuvad erinevad mäluoperatsioonid. Mälumudelid on vajalikud sel põhjusel, et kuigi protsessori instruktsioonid määravad mäluoperatsioonide järjekorra üheselt, siis võib nende tegelik täitmisjärjekord siiski tegelikkuses olla erinev. Mälumudelid määravad, millised kitsendused seatakse mäluoperatsioonide täitmise järjekorrale. Erinevaid mälumudeleid kasutades on programmeerijatel võimalik rakendusi optimeerida või paremini sünkroonida. SPARC-protsessorid toetavad kolme mälumudelit: Total Store Order (TSO), Partial Store Order (PSO) ja Relaxed Memory Order (RMO). Relaxed Memory Order on neist kõige vähem range instruktsioonide täitmise järjekorraga, kõik sellele mudelile mõeldud rakendused ka teiste mudelite korral.

Allüksused[muuda | muuda lähteteksti]

SPARC V9 kasutab käskude täitmiseks kolme allüksust: käsulugemisüksus (issue unit), järjestamisüksus (reorder unit), ja käsutäitmisüksus (execute unit). Käsulugemisüksus loeb mälust instruktsiooni, mida on vaja järgmisena täita, ning edastab selle järjestamisüksusele. See üksus muudab instruktsioonide järjekorda võimalikult optimaalseks arvestades mälumudeli poolt seatud kitsendusi. Järjekorda muudetakse, kuna tihti on võimalik mitut instruktsiooni paralleelselt täita ja nii aega kokku hoida. Järjestatud instruktsioonid edastatakse käsutäitmisüksusele, mis instruktsioonid reaalselt käivitab. [3]

Ajalugu[muuda | muuda lähteteksti]

1986. aasta paiku tekkis paljudel arvuti originaalseadmete tootjatel (OEM) huvi arendada oma vahenditega protsessoreid. Põhjuseks oli suur sõltuvus Inteli ja Motorola protsessoritest. Teine oluline põhjus oli elektroonikakiipide tootmise märgatav odavnemine seoses sellega, et elektroonikatootjad vajasid oma investeeringute tagasiteenimiseks suuri tootmiskoguseid ning olid seetõttu välja mõelnud viisi, kuidas toota elektroonikakiipe, mis oleksid tootmise algfaasis standardsed ning erinevused tekiksid vaid viimastes tootmisetappides. See võimaldas arvutitootjatel osta odavalt kõrgtasemel elektroonikakiipe. Kolmas oluline põhjus, mis muutis protsessorite tootmise varasemast lihtsamaks, oli uuendusliku tarkvara kasutuselevõtt. Seoses CAD-tarkvara kasutuselevõtuga tekkis võimalus digitaalloogikat disainida, simuleerida ja testida ilma seda reaalselt valmis ehitamata. See võimaldas keskenduda rohkem disainimisprotsessile ja põhjalikud teadmised tootmisprotsessist ei olnud enam nii olulised kui varem.

1986. aastal avaldatud Berkeley ülikooli kärbitud käsustikuga arvutite (Reduced Instruction Set Computing) (RISC) uuringu käigus leiutati SPARC-protsessor. Juba 1987. aastal tuli Sun välja esimese SPARC-protsessoril põhineva arvutiga nimega Sun-4. Järgnevatel aastatel kogus SPARC kiiresti populaarsust, eriti aga just arvutitel, mis kasutavad UNIX-põhist operatsioonisüsteemi nagu Solaris, Linux või BSD. SPARC-protsessoreid võeti laialdaselt kasutusele ka Suni, Solbourne'i ja Fujitsu SMP serverites.

1989. aastal asutati SPARC International, mille eesmärgiks sai SPARC-arhitektuuri haldamine ja litsentsimine ning tehnoloogia levitamine.

1993. aastal valmis SPARCi versioon 9, mida tuntakse ka kui SPARC64 ning mis kasutas 64-bitist adresseerimist. Toimunud on küll edasarendusi, kuid sisuliselt on SPARC V9 kasutusel tänaseni.

2005. aastal otsustas Sun avalikustada UltraSPARC T1 lähtekoodi avatud lähtekoodi kasutavale projektile OpenSPARC. Praeguseks on olemas kolm täielikult avatud koodiga SPARCi versiooni: LEON, 32-bitine ja ühelõimeline SPARC V8, OPENSPARC T1, 64-bitine ja 32-lõimeline SPARC V9 ning OpenSPARC T2, 64-bitine ja 64-lõimeline SPARC V9. [4]

Tänapäeva SPARC-protsessorid[muuda | muuda lähteteksti]

Oracle tuli 2011. aasta septembri lõpus välja protsessoriga SPARC T4. T4 koosneb kuni 8 tuumast ning iga tuum võib olla maksimaalselt 8-lõimeline. T4 kompenseerib maksimaalse läbilaskevõime vähenemise kiiruse kasvuga: hinnatakse, et protsessori maksimaalne kiirus on vähemalt 3 GHz, mis on kaks korda suurem kui protsessoril T3. SPARC T4 arendamisel on Sun põhjalikult suunda muutnud. Varasemates mudelites keskenduti suures osas just mitmelõimelisuse arendamisele, kuid kiirus ühe lõime korral jäi enamasti konkurentidele alla. Varem oli mitmetuumalisus ja mitmelõimelisus SPARCi eelis x86-protsessorite ees, kuid tänapäeval on tase ühtlustunud. Seega on Sun otsustanud varasemast rohkem arvesse võtta ka protsessori jõudlust ainult ühe lõime korral. [5]

Kriitikute sõnul ei ole SPARC T4 tegelikkuses konkurentsivõimeline uuemate x86 protsessoritega. Tehtud on küll olulisi uuendusi, kuid need on kriitikute hinnangul hilinenud ning konkurendid kasutasid neid tehnoloogiaid juba varem. Samas on SPARC T4 siiski nimetatud oluliseks vaheastmeks, mis võimaldab SPARCi kasutajatele ajutise lahenduse enne järgmise protsessori valmimist ning väldib SPARCi kasutajate üleminekut x86-le. [6]

Fujitsu ja LSI teatasid 2011. novembri keskpaigas, et nad on alustanud koostööd protsessori SPARC64 IXfx arendamisel. Uus protsessor koosneb plaanide kohaselt 16 tuumast ning sisaldab 64 KB I/D vahemälu ning 12 MB jagatud L2 vahemälu. Protsessori plaanitav sagedus on 1,848 GHz ja hinnatakse, et selle kiirus on umbes 236,5 gigaflopsi võimsusel kõigest 110 W. SPARC IXfx protsessor on mõeldud eelkõige väga suurt arvutusvõimsust vajavate arvutite komponendina. Fujitsu kavatseb neid protsessoreid kasutada oma kõige uuemas superarvutis PRIMEHPC FX10. Ei ole veel täpselt teada, mis ajaks protsessor valmib. [7]

SPARC Assembler[muuda | muuda lähteteksti]

SPARC-protsessoritele mõeldud programmid kompileeritakse SPARC Assembleri abil. SPARCi ja x86 assemblerkeeled on aga piisavalt sarnased, et on enamasti võimalik konvertida ühest keelest teise.

Alljärgnev näide on Solarise operatsioonisüsteemile kirjutatud SPARC Assembleri programmist, mis prindib välja fraasi "Hello world!".

.section        ".text"
.global         _start

_start:
	mov	4,%g1			 ! 4 is SYS_write
	mov	1,%o0			 ! 1 is stdout
	set	.msg,%o1		! pointer to buffer
	mov	(.msgend-.msg),%o2
	ta	8

	mov	1,%g1			  ! 1 is SYS_exit
	clr	%o0			! return status is 0
	ta	8

.msg:
	.ascii	"Hello world!\n"
.msgend:

Käsku "mov" kasutatakse selleks, et tõsta midagi protsessori registrisse. Näiteks "mov 4,%g1" kirjutab registrisse g1 väärtuse 4. See tähistab süsteemi käsku "SYS_write". Seejärel kirjutatakse registrisse output väärtus 1, mis tähistab väljundit. Pärast seda kirjutatakse sõne "Hello world!" pointer output registrisse. Lisaks kirjutatakse sinna ka sõne pikkus ning seejärel käivitub süsteemikäsk write(). Pärast seda lõpetatakse programmi tegevus sellega, et käivitatakse käsk exit(). [8]

Protsessoritüübid[muuda | muuda lähteteksti]

SPARC-protsessorite tüübid
Tüüp Sagedus
[MHz]
Arhitektuuri
versioon
Aasta Tootmisprotsessi
täpsus[µm]
Transistoride arv
[miljonites]
Suurus
[mm²]
IO viikude arv Võimsus
[W]
Pinge
[V]
L1 vahemälu
[k]
L1 vahemälu
[k]
L2 vahemälu
[k]
L3 vahemälu
[k]
SPARC 14,28–40 V7 1987–1992 0,8–1,3 ~0,1–1,8 160–256 0–128 ei ole ei ole
microSPARC I 50 V8 1992 0,8 0,8 225 288 2,5 5 4 2 ei ole ei ole
SuperSPARC I 33–65 V8 1992 0,8 3,1 256 293 14,3 5 16 20 1024 ei ole
microSPARC II 60–125 V8 1992 0,5 2,3 233 321 5 3,3 8 16 ei ole ei ole
SuperSPARC II 75–90 V8 1994 0,8 3,1 299 16 16 20 2048 ei ole
TurboSPARC 170–180 V8 1995 0,35 7 16 16 1024 ei ole
UltraSPARC I 140–200 V9 1995 0,5 5,2 315 521 30 3,3 16 16 1024 ei ole
UltraSPARC II 250–480 V9 1997 0,25 5,4 156 521 21 3,3 16 16 8192 ei ole
UltraSPARC IIi 270–650 V9 1998 0,25 5,75 148 370 17,6 1,7 16 16 2048 ei ole
UltraSPARC IIe 400–500 V9 2000 0,18 5,4 370 13 1,7 16 16 256 ei ole
UltraSPARC III 600–1200 V9 2001 0,13 29 330 1368 53 1,6 64 32 8192 ei ole
UltraSPARC IIIi 1064–1600 V9 2003 0,13 87,5 206 959 52 1,3 64 32 1024 ei ole
UltraSPARC IV 1050–1350 V9 2004 0,13 66 356 1368 108 1,35 64 32 16384 ei ole
UltraSPARC IV+ 1500–2100 V9 2005 0,09 295 336 1368 90 1,1 64 64 2048 32768
UltraSPARC T1 1000–1400 V9 2005 0,09 279 379 1934 79 1,3 8 16 3072 ei ole
UltraSPARC T2 900–1400 V9 2007 0,065 503 342 1831 95 1,2 8 16 4096 ei ole
Ross/Bridgepoint SPARC protsessorite tüübid
HyperSPARC A 55–80 V8 1993 0,5 1,5 5 ei ole 8 256 ei ole
HyperSPARC B 90–125 V8 1995 0,4 1,5 25 5 ei ole 8 256 ei ole
HyperSPARC C 110–166 V8 1995 0,35 1,5 45,5 5 ei ole 8 1024 ei ole
HyperSPARC D 180–200 V8 1995 0,35 1,7 5 16 16 1024 ei ole
Sun/Fujitsu SPARC64 protsessorid
SPARC64 V 1350–2160 V9 2004 0,13 191 290 269 40 1,2 128 128 2048 ei ole
SPARC64 VI 2150–2400 V9 2007 0,09 540 422 120 128 128 6144 ei ole
SPARC64 VII 2700 V9 2008 0,065 600 445 135 64 64 6144 ei ole
SPARC64 VIII 2000 V9 2009 0,045 760 513 58 32 32 4096 ei ole

Superarvutid[muuda | muuda lähteteksti]

K Computer – maailma kiireim arvuti

SPARC-protsessoreid on tihti kasutatud superarvutites. See tuleneb sellest, et SPARC on väga hästi skaleeruva arhitektuur, mis võimaldab mitmeid protsessoreid efektiivselt ühes masinas koos tööle panna.

Protsessorit SPARC64 VIIfx kasutatakse Fujitsu toodetud superarvutis nimega K computer, mida peetakse 2011. aasta novembri seisuga maailma kiireimaks arvutiks. K computer valmis 2011. aastal Fujitsu ja Rikeni teadlaste koostöös ning asub Jaapanis Rikeni instituudis. Arvuti kasutab 88 128 8-tuumalist 2,0 GHz SPARC64 VIIfx protsessorit ehk kokku kasutab arvuti 705 024 tuuma.

K computer on saavutanud maksimaalseks kiiruseks 10,51 petaflopsi, mis on üle nelja korra kiirem kui eelmine rekordiomanik Hiina Tianhe-1A. Samas ei ole K computer veel täielikult valmis. Arvatakse, et see saadakse täielikult töökorda 2012. aasta novembriks. [9]

Fujitsu teatas 7. novembril Tokyos, et nad hakkavad turustama uut superarvutit PRIMEHPC FX10. See kasutab hiljuti arendatud SPARC64 IXfx protsessoreid ja hinnatakse, et sellega on võimalik saavutada maksimaalne kiirus umbkaudu 23,2 petaflopsi, mis teeks sellest maailma kiireima arvuti. Fujitsu kasutab superarvuti arendamisel suures osas edasiarendusi K Computeri tehnoloogiast. Arvuti suure skaleeruvuse tõttu kavatseb Fujitsu arvutit müüa erinevates variantides, mis koosnevad minimaalselt 4 ja maksimaalselt 1024 moodulist (rack). Fujitsu sõnul on superarvuti turustamise sihtrühmaks akadeemilised uurimisrühmad ja erafirmad, mis vajavad eriti suurt arvutusvõimsust. [10]

Viited[muuda | muuda lähteteksti]

  1. "SPARC International". sparc.org. Originaali arhiivikoopia seisuga 28.07.2011. Vaadatud 17.11.2010.
  2. "cpu-collection >> SPARC". cpu-collection.com. Vaadatud 17.11.2010.
  3. SPARC International, Inc. (1994), David L. Weaver; Tom Germond (toim-d), The SPARC Architecture Manual , Version 9 (PDF), PTR Prentice Hall, ISBN 0-13-825001-4, originaali (PDF) arhiivikoopia seisuga 18. jaanuar 2012, vaadatud 18. novembril 2011
  4. "SPARC History". sparcproducthistory.com. Vaadatud 17.11.2010.
  5. "hothardware". hothardware.com. Vaadatud 19.11.2010.
  6. "arstechnica". arstechnica.com. Vaadatud 19.11.2010.
  7. "SPARC64 IXfx". news.softpedia.com. Originaali arhiivikoopia seisuga 25.11.2011. Vaadatud 19.11.2010.
  8. "SPARC Assembler". dmr.ath.cx. Originaali arhiivikoopia seisuga 28.08.2007. Vaadatud 18.11.2010.
  9. "K Computer". fujitsu.com. Vaadatud 17.11.2010.
  10. "PRIMEHPC FX10". fujitsu.com. Vaadatud 19.11.2010.