мини| Микропроцесор Sun UltraSPARC II (1997) SPARC (Scalable Processor Architecture) је архитектура скупова инструкција са смањеним скупом инструкција (RISC), коју је првобитно развила компанија Sun Microsystems. На његов дизајн је снажно утицао експериментални Berkeley RISC систем развијен почетком 1980-их година. Први пут развијен 1986. године, а објављен 1987. године SPARC је био један од најуспешнијих раних комерцијалних RISC система, а његов успех довео је до увођења сличних RISC дизајна од бројних добављача током 1980-их и 1990-их година.

Прва имплементација оригиналне 32-битне архитектуре (SPARC V7) коришћена је у Sun-овим радним станицама Sun-4 и серверским системима, мењајући њихове раније системе Sun-3 засноване на процесорима серије Motorola 68000. SPARC V8 је додао многа побољшања која су била део SuperSPARC серије процесора објављених 1992 године. SPARC V9, објављен 1993. године, представио је 64-битну архитектуру, а први пут је објављен у Sun-овим UltraSPARC процесорима 1995. године. Касније су SPARC процесори коришћени у симетричном мултипроцесингу (SMP) и серверима за неуједначени приступ меморији (CC-NUMA) које су, између осталих, произвели Sun, Solbourne и Fujitsu.

Дизајн је 1989. године предат SPARC међународној трговачкој групи, а од тада су њену архитектуру развијали њени чланови. SPARC International је такође одговоран за лиценцирање и промовисање SPARC архитектуре, управљање заштитним знацима SPARC-а (укључујући SPARC, чији је власник), и за обезбеђивање тестирања усаглашености. SPARC International је имао намеру да развија SPARC архитектуру како би створио већи екосистем; SPARC је лиценциран на неколико произвођача, укључујући Atmel, Bipolar Integrated Technology, Cypress Semiconductor, Fujitsu, Matsushita и Texas Instruments. Захваљујући SPARC International-у, SPARC је потпуно отворен, без власништва и без накнаде.

Од септембра 2017. године, најновији комерцијални high-end SPARC процесори су Fujitsu-ов SPARC64 XII (представљен 2017. године за свој SPARC M12 сервер) и Oracle-ов SPARC M8 представљен у септембру 2017. године за своје врхунске сервере.

У петак, 1. септембра 2017. године, након рунде отпуштања која је започела у Oracle Labs-у у новембру 2016. године, Oracle је прекинуо SPARC дизајн након завршетка M8. Велики део развојне групе језгра процесора у Аустину у Тексасу је отпуштен, као и тимови у Санта Клари у Калифорнији и Бурлингтону у Масачусетсу.

"Побољшана" верзија Fujitsu-овог старијег SPARC M12 сервера очекује се 2021. године.

Карактеристике Архитектура SPARC-а била је под великим утицајем ранијих RISC дизајна, укључујући RISC I и II са Калифорнијског универзитета у Берклију и IBM 801 . Ови оригинални RISC дизајни били су минималистички, укључујући што је могуће мање функција или op-кодова и имали су за циљ извршавање инструкција брзином од скоро једне инструкције по циклусу такта. То их је учинило сличним MIPS архитектури на много начина, укључујући недостатак инструкција као што су множење или дељење. Још једна карактеристика SPARC-а под утицајем овог раног RISC покрета је слот за одлагање гранања .

SPARC процесор обично садржи 160 регистара опште намене. Према "Oracle SPARC Architecture 2015" спецификацији, "имплементација може садржати од 72 до 640 64-битних регистара опште намене". У било ком тренутку, само 32 од њих су одмах видљиви софтверу — 8 је скуп глобалних регистара (од којих је један, g0, ожичен на нулу, па се само њих седам могу користити као регистри), а осталих 24 су из стека (гомиле) регистара. Ова 24 регистра формирају оно што се назива прозор регистра а при позиву/повратку функције овај прозор се помера горе-доле по низу регистара. Сваки прозор има 8 локалних регистара и дели 8 регистара са сваким од суседних прозора. Дељени регистри се користе за прослеђивање параметара функција и враћање вредности а локални регистри за чување локалних вредности у позивима функција.

Термин "скалабилан" у SPARC-у долази од чињенице да SPARC спецификација дозвољава имплементацијама да се прошире од уграђених процесора до великих серверских процесора, а сви деле исти скуп основних, непривилегованих инструкција. Један од архитектонских параметара који се може скалирати је број имплементираних прозора регистра; спецификација дозвољава имплементацију од три до 32 прозора, тако да имплементација може изабрати да имплементира свих 32 да би обезбедила максималну ефикасност позивног стека, или да примени само три како би смањила трошкове и сложеност дизајна, или да имплементира неки број између њих. Друге архитектуре, које укључују сличне карактеристике датотека регистра, укључују Intel i960, IA-64 и AMD 29000 .

Архитектура је прошла кроз неколико ревизија. Стекла је функционалност хардверског множења и дељења у Верзији 8. 64-битно адресирање и подаци додати су у верзију 9 SPARC спецификације, објављену 1994. године.

У SPARC верзији 8, датотека регистра са покретним зарезом има 16 регистара двоструке тачности. Сваки од њих може се користити као два регистра једноструке тачности, пружајући укупно 32 регистра једноструке тачности. Пар непарних-парних бројева регистара двоструке тачности може се користити као регистар четвороструке тачности, омогућавајући тако 8 регистара четвороструке тачности. SPARC верзија 9 додала је још 16 регистара двоструке тачности (којима се може приступити и као 8 регистара са четвороструком тачношћу), али овим додатним регистрима није могуће приступити као регистрима једноструке тачности. Ниједан SPARC процесор не имплементира операције четвороструке тачности у хардверу од 2004.

Tagged архитектура сабира и одузима инструкције, изводи додавања и одузимања на вредности, проверава да ли су доња два бита оба операнда 0 и извештава преливање (енгл. overflow) ако нису. Ово може бити корисно у реализацији времена извршавања за ML, Lisp, и сличne језикe који би користили tagged integer формат.

Ендијалност (енгл. endianness) 32-битне SPARC V8 архитектуре је потпуно big-endian (BE). 64-битна SPARC V9 архитектура користи big-endian инструкције, али може приступити подацима у big-endian или little-endian редоследу бајтова, изабраним на нивоу инструкција апликације (учитавање-складиштење) или на нивоу меморијске странице (преко MMU подешавања). Ово последње се често користи за приступ подацима са инхерентно little-endian уређаја, попут оних на PCI магистралама.

Историја Дошло је до три велике ревизије архитектуре. Прва објављена верзија била је 32-битна SPARC верзија 7 (V7) 1986. године. SPARC верзија 8 (V8), побољшана дефиниција SPARC архитектуре, објављена је 1990. године. Главне разлике између V7 и V8 биле су додавање инструкција за множење и дељење целобројних бројева и надоградња са 80-битне аритметике са "плутајућом тачком" проширене прецизности на 128-битну "четвороструку прецизност" аритметику. SPARC V8 послужио је као основа за IEEE Стандард 1754-1994, IEEE стандард за 32-битну микропроцесорску архитектуру.

SPARC Верзију 9, 64-битну SPARC архитектуру, објавила је компанија SPARC International 1993. године. Развио га је Архитектонски одбор SPARC-а чији су чланови Amdahl Corporation, Fujitsu, ICL, LSI Logic, Matsushita, Philips, Ross Technology, Sun Microsystems и Texas Instruments . Новије спецификације увек остају усклађене са потпуном SPARC V9 Level 1 спецификацијом.

2002. године, Fujitsu и Sun објавили су SPARC Joint Programming Specification 1 (JPS1) која описује процесорске функције које су идентично имплементиране у процесоре обе компаније („Заједништво“). Први процесори који су у складу са JPS1 били су UltraSPARC III компаније Sun и SPARC53 V компаније Fujitsu. Функционалности које нису обухваћене JPS1 спецификацијом документоване су за сваки процесор у "Додацима имплементације".

Крајем 2003. године објављен је JPS2 који подржава вишејезгрене процесоре. Први процесори у складу са JPS2 били су UltraSPARC IV компаније Sun и SPARC64 VI компаније Fujitsu.

Почетком 2006. године Sun је објавио проширену спецификацију архитектуре, UltraSPARC Architecture 2005 . Ово укључује не само непривилеговане и већину привилегованих делова SPARC V9, већ и сва архитектонска проширења развијена кроз генерације процесора UltraSPARC III, IV, IV+, као и CMT проширења почевши од имплементације UltraSPARC T1 :

проширења скупа инструкција VIS 1 и VIS 2 и придружени GSR регистар више нивоа глобалних регистара, које контролише GL регистар Sun-ова 64-битна MMU архитектура привилеговане инструкције ALLCLEAN, OTHERW, NORMALW и INVALW приступ регистру VER је сада хиперпривилегован SIR инструкција је сада хиперпривилегована

Године 2007. Sun је објавио ажурирану спецификацију UltraSPARC Architecture 2007, у којој је имплементација UltraSPARC T2 састављена.

У августу 2012. године, Oracle корпорација је ставила на располагање нову спецификацију, Oracle SPARC Architecture 2011, која поред свеукупног ажурирања референце, додаје проширења скупа инструкција VIS 3 и хиперпривилеговани режим у спецификацију за 2007. годину.

У октобру 2015. године, Oracle је објавио SPARC M7, први процесор заснован на новој спецификацији Oracle SPARC Architecture 2015. Ова ревизија укључује проширења скупа инструкција VIS 4 и хардверски подржано шифровање и меморију заштићену силиконом (SSM).

SPARC архитектура је обезбедила континуирану бинарну компатибилност апликације од прве имплементације SPARC V7 1987. године кроз имплементације Sun UltraSPARC архитектуре.

Међу различитим имплементацијама SPARC-а, Sun-ови SuperSPARC и UltraSPARC-I били су веома популарни и коришћени су као референтни системи за SPEC CPU95 и CPU2000 мерила. 296-MHz UltraSPARC-II је референтни систем за мерење SPEC CPU2006.

Архитектура SPARC је архитектура учитавања/складиштења (која је позната и као регистар-регистар архитектура); осим упутстава за учитавање/складиштење која се користе за приступ меморији, све инструкције раде на регистрима.

Регистри Архитектура SPARC има шему прозора регистра која се преклапа. У сваком тренутку су видљива 32 регистра опште намене. Варијабла тренутног показивача прозора (Current Window Pointer - CWP) у хардверу указује на постављене струје. Укупна величина датотеке регистра није део архитектуре, што омогућава додавање више регистара како се технологија побољшава, до највише 32 прозора у SPARC v7 и v8 јер је CWP величине 5 бита и део је PSR регистра.

У SPARC v7 и v8 CWP ће обично бити смањен инструкцијом SAVE (користи је инструкција SAVE током позива процедуре за отварање новог оквира стека и пребацивање прозора регистра) или ће се повећати наредбом RESTORE (пребацивање на позив пре враћање из процедуре). Trap догађаји (прекиди, изузеци или TRAP инструкције) и RETT инструкције (враћање из замки) такође мењају CWP. За SPARC-V9, CWP регистар се смањује током инструкције RESTORE, а повећава се током инструкције SAVE. Ово је супротно од PSR-а. Понашање CWP-а у SPARC-V8. Ова промена нема утицаја на непривилегована упутства. +Адресирање прозора Група регистра Mnemonic Адреса регистра global G0-G7 R-R out O0-O7 R-R local L0-L7 R-R in I0-I7 R-R SPARC регистри су приказани на горњој слици.

Формати инструкција Све SPARC инструкције заузимају пуну 32-битну реч, и почињу на граници речи. Користе се 4 формата, који се разликују по прва 2 бита. Све аритметичке и логичке инструкције имају 2 изворна и 1 одредишни операнд.

SETHI формат инструкције копира свој 22-битни непосредни операнд у 22 бита високог реда било ког наведеног регистра, и поставља сваки од десет битова нижег реда на 0.

Формат ALU register, оба извора су регистри; формат ALU immediate, један извор је регистар, а један је константа у опсегу од -4096 до +4095. Бит 13 бира један од њих. У оба случаја, одредиште је увек регистар.