SPARC
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
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
- ↑ "SPARC International". sparc.org. Vaadatud 17. novembril 2010.
- ↑ "cpu-collection >> SPARC". cpu-collection.com. Vaadatud 17. novembril 2010.
- ↑ 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
- ↑ "SPARC History". sparcproducthistory.com. Vaadatud 17. novembril 2010.
- ↑ "hothardware". hothardware.com. Vaadatud 19. novembril 2010.
- ↑ "arstechnica". arstechnica.com. Vaadatud 19. novembril 2010.
- ↑ "SPARC64 IXfx". http://news.softpedia.com. Vaadatud 19. novembril 2010.
{{cite web}}
: välislink kohas
(juhend)|publisher=
- ↑ "SPARC Assembler". dmr.ath.cx. Vaadatud 18. novembril 2010.
- ↑ "K Computer". fujitsu.com. Vaadatud 17. novembril 2010.
- ↑ "PRIMEHPC FX10". fujitsu.com. Vaadatud 19. novembril 2010.
See artikkel valmib koolitööna. Võimaluse korral lisa oma parandusettepanekud arutelulehele. See ei tähenda siiski, et teistel kaastöölistel on artikli muutmine keelatud. Malli võib eemaldada 30. detsember 2011. |