Mine sisu juurde

SPARC

Allikas: Vikipeedia
Redaktsioon seisuga 20. november 2011, kell 00:43 kasutajalt Moment92 (arutelu | kaastöö) (Tehnilised näitajad)
SPARC T4 protsessor

SPARC (inglise Scalable Processor Architecture) on RISC instruktsioonidel põhinev protsessoriarhitektuur, mida arendab Sun Microsystems ning millega tuldi esmakordselt 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 litsenseerimisega. SPARC on avatud arhitektuur, mis tähendab seda, et SPARC tehnoloogia on avalik ning seda tüüpi protsessoreid tohivad toota kõik firmad, kes omavad SPARC litsentsi. SPARC protsessoreid kasutatakse põhiliselt Unix-põhiseid operatsioonisüsteeme kasutavates arvutites ning SPARC on alati olnud eriti tihedalt seotud Sun'i operatsioonisüsteemiga Solaris. [1] [2]

Tehnilised näitajad

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

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

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

SPARC instruktsioonid on kodeeritud neljas erinevas variandis ning 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). Peale instruktsiooni käitmist suurendatakse automaatselt programmi loendurit, mille tulemusel käivitatakse juba järgmine instruktsioon. SPARC 9 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.

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 optimiseerida või paremini sünkroniseerida. SPARC protsessorid toetavad kolme erinevat mälumudelit: Total Store Order (TSO), Partial Store Order (PSO), and 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.

SPARC 9 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

1986. aasta paiku tekkis paljudel arvuti originaalseadmete tootjatel (OEM) huvi arendada oma vahenditega protsessoreid. Põhjuseks oli suur sõltuvus Inteli ning 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 tootmisettappides. 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 ning testida ilma seda reaalselt valmis ehitamata. See võimaldas keskenduda rohkem disainimisprotsessile ning 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 Sun, Solbourne ja Fujitsu SMP serverites.

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

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

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

Tänapäeva SPARC protsessorid

Oracle tuli 2011. aasta septembri lõpus välja SPARC T4 protsessoriga. T4 protsessor 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 T3 protsessoril. SPARC T4 protsessori 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 ning mitmelõimelisus SPARC'i 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 eil 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 SPARC'i kasutajatele ajutise lahenduse enne järgmise protsessori valmimist ning väldib SPARC'i kasutajate üleminekut x86 protsessorile. [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 mis sisaldab 64KB I/D vahemälu ning 12MB 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 110W. 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

SPARC protsessoritele mõeldud programmid kompileeritakse SPARC Assembleri. x86 Assembler ja SPARC Assembler 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 output registrisse väärtus 1, mis tähistab väljundit, peale 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(). Peale seda lõpetatakse programmi tegevus sellega, et käivitatakse käsk exit(). [8]

Protsessoritüübid

SPARC protsessorite tüübid
Tüüp Sagedus
[MHz]
Arhitektuuri
Versioon
Aasta Tootmisprotsessi
täpsus[µm]
Transistoride arv
[miljonites]
Suurus
[mm²]
IO Pinide arv Võimsus
[W]
Pinge
[V]
L1 Dvahemälu
[k]
L1 Ivahemä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

K Computer - maailma kiireim arvuti

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

SPARC64 VIIfx protsessorit kasutatakse Fujitsu toodetud superarvutis nimega K computer, mida peetakse 2011. aasta novembri seisuga maailma kiireimaks arvutiks. K computer valmis Fujitsu ning Riken-i teadlaste koostöös 2011. aastal ning asub Jaapanis Rikeni instituudis. Arvuti kasutab 88128 2.0GHz 8-tuumalist SPARC64 VIIfx protsessorit ehk kokku kasutab arvuti 705024 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 nimega PRIMEHPC FX10. See kasutab hiljuti arendatud SPARC64 IXfx protsessoreid ning 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 ning maksimaalselt 1024 moodulist (rack). Fujitsu sõnul on superarvuti turustamise sihtrühmaks akadeemilied uurimisrühmad ning erafirmad, mis vajavad eriti suurt arvutusvõimsust. [10]

Viited

  1. "SPARC International". sparc.org. Vaadatud 17. novembril 2010.
  2. "cpu-collection >> SPARC". cpu-collection.com. Vaadatud 17. novembril 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
  4. "SPARC History". sparcproducthistory.com. Vaadatud 17. novembril 2010.
  5. "hothardware". hothardware.com. Vaadatud 19. novembril 2010.
  6. "arstechnica". arstechnica.com. Vaadatud 19. novembril 2010.
  7. "SPARC64 IXfx". http://news.softpedia.com. Vaadatud 19. novembril 2010. {{cite web}}: välislink kohas |publisher= (juhend)
  8. "SPARC Assembler". dmr.ath.cx. Vaadatud 18. novembril 2010.
  9. "K Computer". fujitsu.com. Vaadatud 17. novembril 2010.
  10. "PRIMEHPC FX10". fujitsu.com. Vaadatud 19. novembril 2010.