SPARC

A SPARC (skálázható processzor-architektúra, a Scalable Processor Architecture szavakból) a Sun Microsystems által kifejlesztett 32 és 64 bites RISC típusú utasításkészlet-architektúra (ISA).
A SPARC ISA tervezése a Sun-nál 1984-ben kezdődött, 1986-ban a Sun és a Fujitsu együttműködésével elkészültek az első SPARC V7 architektúrájú processzorok, 1987 közepén pedig piacra kerültek a SPARC processzoros Sun-4 munkaállomások.

A SPARC egy bejegyzett védjegy, amely a SPARC International, Inc. konzorcium tulajdona. Ez a szervezet 1989-ben alakult a SPARC architektúra terjesztésének elősegítése, valamint a konformancia-ellenőrzések biztosítása és védjegyek kezelése céljából. A kezdetben 32 bites SPARC architektúrát a Sun Sun-4-es munkaállomások és szerverek számára fejlesztették ki, amellyel a korábbi, Motorola 68000-es processzorokat használó Sun-3-as rendszereket kívánták felváltani. Később kifejlesztették az architektúra a 64 bites verzióját; a 64 bites SPARC processzorok változatait a Sun Microsystems, Solbourne, Fujitsu és más gyártók szimmetrikus multiprocesszoros (SMP) és ccNUMA technológiákat használó gépeikben alkalmazzák.

A SPARC International nyílttá kívánta tenni az architektúrát a kialakítás minél szélesebb körben való elterjesztése érdekében. Ennek egyik lépéseként a licencet több gyártónak is átadta, pl. a Texas Instruments, Atmel, Cypress Semiconductor és Fujitsu cégeknek. Ennek köszönhetően mára a SPARC architektúra teljesen nyílt és nem kötődik egyetlen tulajdonoshoz.

2006 márciusában a Sun Microsystems kiadta az UltraSPARC T1 mikroprocesszor terveit nyílt forrásként, OpenSPARC T1 néven; a teljes dokumentáció hozzáférhető az OpenSPARC.net webhelyen. 2007-ben ugyanígy közzétette az UltraSPARC T2 processzor terveit, OpenSPARC T2 néven.

A SPARC processzor újabb keletű kereskedelmi célú megvalósításai a Fujitsu Laboratories Ltd. által 2009 júniusában megjelentetett SPARC64 VIIIfx típusú „Venus” kódnevű processzor (nyolc mag, 2 GHz, 128 GFLOPS), amelyet a 8 petaFLOPS teljesítményt elérő japán szuperszámítógépben, a „K computer”-ben használnak, ezután a 2012 augusztusában bemutatott SPARC64 X „Athena” processzor. Az Oracle Corporation továbbra is fejleszti SPARC processzorsorozatát, amelynek legújabb tagjai a 2011 szeptemberében megjelent 2,85–3,0 GHz órajelen működő SPARC T4, és a 2013 márciusában bevezetett -en futó 16 magos SPARC T5 processzor.

2017. szeptember 1-én, az Oracle Labs-ben 2016 novemberében kezdődött elbocsátások és az M8-as processzor befejezése után az Oracle saját berkein belül megszüntette a SPARC architektúrájú processzorok további tervezését. A texasi Austinban működő processzormag-fejlesztő csoport nagy részét elbocsátották, akárcsak a kaliforniai Santa Clarában és a massachusettsi Burlingtonban működő csapatokat.

Általános jellemzők 
A SPARC architektúrára nagy hatással voltak a Kaliforniai Egyetemen, Berkeley-ben kifejlesztett korai RISC I és RISC II architektúrák és az IBM 801. Ezek a korai RISC kialakítások igen minimalisták voltak, a lehető legkevesebb utasítást tartalmazták és célként tűzték ki az összes utasítás lehetőleg egy órajelciklus alatti végrehajtását. Hasonlóképpen a MIPS-architektúra kezdeti verzióiból szintén hiányoztak az olyan bonyolultabb utasítások, mint például a szorzás és osztás. A RISC processzorokban alkalmazott ugrási késleltetési rés (branch delay slot) szintén megjelenik a SPARC processzoroknál.

A SPARC processzorok sok általános célú regisztert tartalmaznak, ezek száma akár 160 is lehet. Ezek közül a szoftverek bármely tetszőleges időpontban csak 32-t láthatnak – 8 globális regiszter (az egyik közülük a g0, fixen rögzített nulla értékű, tehát csak 7 használható regiszterként), a többi 24 a regiszterveremben helyezkedik el. Ezt a 24 regisztert hívják regiszterablaknak, ezeket használják szubrutinhíváskor és -visszatéréskor, ez az ablak mozog fel és le a regiszterveremben. Az ablakok helyzete előre definiált. Minden ablak rendelkezik 8 lokális regiszterrel és megoszt még nyolcat a szomszédos ablakkal. A megosztott regisztereket függvényparaméter-átadásra vagy értékek visszaadására használják, a lokális regisztereket a helyi / adott függvényben lokális értékek tárolására használják függvényhívások között.

A skálázhatóság azt jelenti, hogy a SPARC specifikáció lehetővé teszi különböző felépítésű processzorok megvalósítását, a beágyazott rendszerek processzoraitól kezdve a nagy, szerverekbe szánt processzorokig, amelyekben mindben megtalálható ugyanaz az alap, nem privilegizált utasításkészlet. Az architektúra egyik skálázható paramétere a megvalósított regiszterablakok száma: a specifikáció lehetővé teszi 3-tól 32-ig terjedő számú regiszterablak megvalósítását. Eszerint egy processzor tartalmazhat 32 regiszterablakot, a hívási verem maximális hatékonysága céljából; vagy tartalmazhat mindössze 3-at, ami a kontextusváltás idejét csökkenti, de akár a két szám között akármennyit. Hasonló regiszterfájl-tulajdonságokkal más architektúrák is rendelkeznek, ilyenek pl. az Intel i960, IA-64 és az AMD 29000 (utóbbinál a regiszterablak mérete nem rögzített, hanem változó).

Az architektúrának mára több revíziója is megjelent. A nyolcas verzióban pl. megjelent a hardveres szorzás és osztás. A kilences verzió legjelentősebb változása, hogy az architektúra 64 bites bővítést kapott; az 1994-ben közzétett SPARC-V9 specifikációban megjelent a 64 bites adat- és címkezelés.

A SPARC Version 8 szerint a lebegőpontos regiszterfájl 16 dupla pontosságú regisztert tartalmaz. Ezek közül mindegyik használható két egyszeres pontosságú regiszterként, ami így összesen 32 egyszeres pontosságú regisztert biztosít. A páratlan és páros számú dupla pontosságú regiszterek négyszeres pontosságú regiszterekké foghatók össze, ezáltal 8 négyszeres pontosságú regiszter használható. A SPARC Version 9 még további 16 dupla pontosságú regisztert adott a készlethez (amelyek szintén 8 négyszeres pontosságú regiszterként is elérhetők), azonban ezeket az új regisztereket már nem lehet egyszeres pontosságú regiszterként használni.

Megjelent a „tagged integer” típusú összeadás és kivonás, amelyben az értékek két alsó bitje nem vesz részt a számításban – ez gyorsítja az ML, Lisp és más, hasonló típust használó nyelvek futtatási környezeteinek működését.

A SPARC-V8 architektúra kizárólag a big-endian bájtsorrendet támogatta. A 64 bites SPARC-V9 architektúra az utasításokban big-endian bájtsorrendet használ, de az adatok bájtsorrendje lehet big-endian vagy little-endian, a választást az alkalmazás load/store utasításainak szintjén lehet meghatározni, vagy memórialaptól függően, az MMU szintjén. Ez előnyös lehet az önmagukban little-endian sorrendet használó eszközökkel (pl. PCI busz) való adatcsere esetén.

Története 
Az architektúrának három nagyobb revíziója volt. Az első közzétett verzió az 1986-ban megjelent 32 bites SPARC Version 7 (V7). A SPARC Version 8 (V8), egy javított architektúra-leírás, 1990-ben jelent meg. A főbb eltérések a V7 és V8 között az egészértékű szorzó és osztó utasítások megjelenése, és a 80 bites kiterjesztett pontosságú lebegőpontos aritmetika 128 bites négyszeres pontosságú adattípussal és aritmetikával való kiterjesztése. A SPARC V8 szolgált az IEEE 1754-1994 sz. szabvány alapjául, amely az IEEE 32 bites mikroprocesszor-architektúrájának szabványa (utasításkészlet, regisztermodell, adattípusok, opkódok és koprocesszor-interfész definíció).

A SPARC Version 9, a SPARC 64 bites architektúrája 1993-ban jelent meg, a SPARC International kiadásában. A SPARC Architektúra Bizottság fejlesztette ki, amelynek tagjai a következők: Amdahl Corporation, Fujitsu, ICL, LSI Logic, Matsushita, Philips, Ross Technology, Sun Microsystems és a Texas Instruments.

2002-ben a Fujitsu és a Sun közzétette a SPARC Joint Programming Specification 1 (JPS1) specifikációt, amely a két cég által készített processzorokban azonos módon megvalósított processzorfunkciókat írta le („Commonality”). Az első JPS1 specifikációnak megfelelő CPU-k a Sun UltraSPARC III és a Fujitsu SPARC64 V processzorai voltak. A JPS1 által nem lefedett funkcionalitás a processzorok külön „megvalósítási függelék”-ében („Implementation Supplements”) vannak leírva.

2006 elején a Sun kiadott egy bővített architektúra-specifikációt, az UltraSPARC 2005-öt (UltraSPARC Architecture 2005). Ez nem csak a privilegizált és nem privilegizált részeket tartalmazta a SPARC V9-ből, hanem ráadásul minden architekturális bővítést is, például a CMT, hiperprivilegizált, VIS 1 és VIS 2 vizuális utasításkészlet-bővítéseket, amelyek jelen vannak a Sun UltraSPARC processzoraiban az UltraSPARC T1 implementáció óta. Az UltraSPARC 2005 architektúra tartalmazza a Sun standard kiterjesztéseit és teljes mértékben megfelel a SPARC V9 Level 1 specifikációnak.

2007-ben a Sun kiadta az UltraSPARC 2007 architektúra (UltraSPARC Architecture 2007) specifikációt, ennek az UltraSPARC T2 típus felel meg.

Az architektúra biztosítja a folyamatos bináris alkalmazás-kompatibilitást az első, 1987-es SPARC V7-től kezdve egészen a Sun UltraSPARC architektúra implementációkig.

A SPARC különböző megvalósított változatai közül nagyon népszerű volt a Sun SuperSPARC és UltraSPARC-I változat, ezeket használták referenciarendszernek a SPEC CPU95 és CPU2000 teljesítménytesztekhez (benchmarks). A 296 MHz-es UltraSPARC-II a SPEC CPU2006 benchmark referenciarendszere.

A SPARC architektúra licenceit több cég megszerezte és ennek alapján különböző implementációkat fejlesztettek ki és gyártottak, köztük az alábbiak:
 Afara Websystems
 Bipolar Integrated Technology (BIT)
 C-Cube
 Cypress Semiconductor
 Moszkvai SPARC Technológiai Központ (МЦСТ) SPARC termékvonala (R100, R150, R500, R500S, R1000)
 Fujitsu és Fujitsu Microelectronics
 HAL Computer Systems
 Hyundai
 LSI Logic
 Magnum Semiconductor
 Meiko Scientific
 Metaflow Technologies
 Prisma
 Ross Technology
 Parsé Semiconductor Co.
 Scientific Atlanta
 Solbourne Computer
 Weitek

SPARC64 

A Fujitsu (kezdetben HAL Computer Systems nevű leányvállalatán keresztül) 1995 óta tervez SPARC V9 specifikációnak megfelelő processzorokat, amelyek a SPARC64 márkanév alatt futnak. Ide tartozik a SPARC64 V is,
amit a Fujitsu PRIMEPOWER szervercsalád használ; és a SPARC64 VI, amit a Sun és a Fujitsu a SPARC Enterprise M osztályú szervercsalád használ. 2008 közepétől kezdték meg a SPARC64 VII processzorok szállítását, amelyeket szintén az M osztályú szerverekben használnak fel.

SPARC mikroprocesszorok adatai 
Ebben a táblázatban a SPARC processzorok néhány jellemző adata látható. Az oszlopok: órajel-frekvencia MHz-ben, architektúraverzió, kiadás éve, szálak száma (szálak egy magban × magok száma), gyártási processz (mikron), tranzisztorok száma (millió), lapkaméret (mm²), I/O lábak száma, disszipáció (watt), feszültség, gyorsítótárak mérete: Dcache: adat-cache, Icache: utasítás-gyorsítótár, utasítások, L2 és L3 (KiB).

Megjegyzések:

Operációs rendszerek 
A SPARC gépek általában SunOS, Solaris vagy OpenSolaris rendszert használnak, de más operációs rendszerek is működnek rajtuk, például NEXTSTEP, RTEMS, FreeBSD, OpenBSD, NetBSD és Linux.

1993-ban az Intergraph bejelentette, hogy portolja a Windows NT-t SPARC-ra, de ezt később visszavonták.

Nyílt forrású megvalósítások
A SPARC architektúrának három teljesen nyílt forrású megvalósítása van:
 LEON – 32 bites, SPARC Version 8 megvalósítás, különösen a helykihasználásra optimalizálva tervezték. A forráskódja VHDL-ben van írva, GPL licenc alatti.
 OpenSPARC T1 – 2006-ban adták ki, 64 bites, 32-szálas implementáció, megfelel a UltraSPARC Architecture 2005 és a SPARC Version 9 (Level 1) specifikációknak. A forráskódja Verilog-ban készült, több licenc alatt lett kibocsátva; az OpenSPARC T1 forráskód legnagyobb része GPL licenc alá esik, a létező nyílt forrású projektekből származó kód továbbra is a saját licence alatt marad. A bináris programok a bináris szoftver licencszerződések hatálya alá esnek.
 S1 – ez egy 64 bites Wishbone-nak megfelelő CPU mag, amely az OpenSPARC T1 tervein alapul. Ez egyetlen UltraSPARC v9 típusú mag, amely 4-utas SMT-re (egyidejű többszálas működésre) képes. A T1-hez hasonlóan erre is a GPL licenc vonatkozik.
 OpenSPARC T2 – 2008-ban jelent meg, 64 bites, 64-szálas megvalósítás, megfelel az UltraSPARC Architecture 2007 és a SPARC Version 9 (Level 1) specifikációknak. A forráskódja Verilog-ban íródott, többfajta licenc hatálya alá esik, hasonlóan a T1-hez.

A SPARC architektúrának létezik egy teljesen nyílt forrású szimulátora is:
 RAMP Gold, egy 32 bites, 64-szálas SPARC Version 8 implementáció, amelyet az FPGA-alapú architektúrák szimulációja céljából terveztek. A RAMP Gold forráskódja kb. 36000 sor Systemverilog nyelven, a BSD licencek hatálya alá esik.

Szuperszámítógépek 
2011 júniusában a világ 500 leggyorsabb számítógépe közül csak két szuperszámítógép (az első és a 73-ik) használt SPARC processzorokat, a TOP500 lista alapján.

2011-ben az első helyen a Fujitsu K computer-e állt (a 2011 júniusi és 2011 novemberi listák szerint), 2012-ben a második helyen áll. Ez 88 128 SPARC64 VIIIfx CPU-ból épül fel, mindegyik nyolcmagos, így összesen 705 024 magot tartalmaz – csaknem kétszer annyit, mint a TOP500 bármelyik gépe. A K Computer teljesítménye nagyobb, mint a listában rákövetkező öt rendszeré együttvéve, és ennek a legmagasabb a teljesítmény-energia aránya az összes 2012 előtti szuperszámítógép-rendszer között. A Green500 listán a 6. helyen állt 2011 júniusában, 824.56 MFLOPS/W teljesítményével.

A Tianhe-1A 2011-ben a második, 2012-ben az 5-ik helyen álló rendszer. Több node-ja kínai fejlesztésű OpenSPARC-alapú FeiTeng-1000 processzorokból áll, azonban ezek a node-ok nem vesznek részt a TOP500 alapját képező LINPACK tesztben.

A 2012. júniusi TOP500 lista 18. helyén is egy SPARC alapú rendszer áll, a japán Tokiói Egyetem Információtechnológiai Központjában felállított Oakleaf-FX nevű rendszer; ez 1,848 GHz-es SPARC64 IXfx 16C processzorokból áll, mindössze 76800 magot tartalmaz.

2010. december 2-án az Oracle leleplezte a T3-2, T3-4 és M5000 szerverekből álló SPARC SuperCluster rendszerét. A T3-4 szerverekből álló konfiguráció állítólag felülmúlja a HP Integrity Superdome és az IBM Power 780 server rendszereket,  tpmC sebességével. Az Oracle azóta megjelentette a T4-4 jelű SPARC SuperCluster változatot is, azonban ezekkel a rendszerekkel 2012-ben még nem sikerült bekerülnie a TOP500-ba.

Jegyzetek

Kapcsolódó szócikkek 
 ERC32 – a SPARC V7 specifikáción alapul
 FeiTeng-1000 – kínai nyolcmagos SPARC-alapú processzor
 MCST-4R – orosz négymagos mikroprocesszor, a SPARC V9 specifikáción alapul
 OpenSPARC – az UltraSPARC T1 kialakításon alapuló nyílt forrású projekt
 Rock processor – többmagos, többszálas mikroprocesszor, amelyben nagy hangsúlyt kapott a lebegőpontos teljesítmény
 Ross Technology, Inc. – SPARC processzor tervező és készítő cég az 1980-as és 1990-es években
 Sparcle – módosított SPARC, multiprocesszoros támogatással, a MIT Alewife projektjében használták
 SPARC T sorozat
 UltraSPARC T1 – A Sun első többmagos és többszálas processzora (kódneve "Niagara")
 UltraSPARC T2 – a T1 utód-tervezete
 SPARC T3 – az UltraSPARC T2 után következő SPARC generáció

További információk 
 SPARC International, Inc.
 SPARC processzorok listája
 SPARC szabványok dokumentációja
 UltraSPARC Architektúra specifikáció
 UltraSPARC Processzorok 
 SPARC processzortól képek és leírások
 The Rough Guide to MBus Modules (SuperSPARC, hyperSPARC)
 index - Az ötmillió forintos processzor (2009. január 21.)

BSD a SPARC-on 
 FreeBSD 64-bit SPARC port
 NetBSD 32-bit SPARC port
 NetBSD 64-bit SPARC port
 OpenBSD 32-bit SPARC port
 OpenBSD 64-bit SPARC port

Linux disztribúciók 
 Aurora SPARC Linux, nem hivatalos Fedora SPARC port
 Debian 32-bit és 64-bit SPARC port
 Gentoo Linux 64-bit SPARC port
 Mandriva nem hivatalos, nem támogatott SPARC port 
 Slackware 32-bit és 64-bit SPARC port
 Ubuntu GNU/Linux, támogatott UltraSPARC T1 port
 UltraLinux - Linux, az UltraSPARC-hoz

Utasításkészlet-architektúrák
CPU-architektúrák
Mikroprocesszorok
Sun Microsystems