SPARC
From Wikipedia, the free encyclopedia
Remove ads
SPARC (Scalable Processor Architecture) је архитектура скупова инструкција са смањеним скупом инструкција (RISC), коју је првобитно развила компанија Sun Microsystems.[1][2] На његов дизајн је снажно утицао експериментални Berkeley RISC систем развијен почетком 1980-их година. Први пут развијен 1986. године, а објављен 1987. године [2][3] 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. Велики део развојне групе језгра процесора у Аустину у Тексасу је отпуштен, као и тимови у Санта Клари у Калифорнији и Бурлингтону у Масачусетсу.[4][5]
"Побољшана" верзија Fujitsu-овог старијег SPARC M12 сервера очекује се 2021. године.[6]
Remove ads
Карактеристике
Архитектура SPARC-а била је под великим утицајем ранијих RISC дизајна, укључујући RISC I и II са Калифорнијског универзитета у Берклију и IBM 801 . Ови оригинални RISC дизајни били су минималистички, укључујући што је могуће мање функција или op-кодова и имали су за циљ извршавање инструкција брзином од скоро једне инструкције по циклусу такта. То их је учинило сличним MIPS архитектури на много начина, укључујући недостатак инструкција као што су множење или дељење. Још једна карактеристика SPARC-а под утицајем овог раног RISC покрета је слот за одлагање гранања .
SPARC процесор обично садржи 160 регистара опште намене. Према "Oracle SPARC Architecture 2015" спецификацији, "имплементација може садржати од 72 до 640 64-битних регистара опште намене".[7] У било ком тренутку, само 32 од њих су одмах видљиви софтверу — 8 је скуп глобалних регистара (од којих је један, g0, ожичен на нулу, па се само њих седам могу користити као регистри), а осталих 24 су из стека (гомиле) регистара. Ова 24 регистра формирају оно што се назива прозор регистра а при позиву/повратку функције овај прозор се помера горе-доле по низу регистара. Сваки прозор има 8 локалних регистара и дели 8 регистара са сваким од суседних прозора. Дељени регистри се користе за прослеђивање параметара функција и враћање вредности а локални регистри за чување локалних вредности у позивима функција.
Термин "скалабилан" у SPARC-у долази од чињенице да SPARC спецификација дозвољава имплементацијама да се прошире од уграђених процесора до великих серверских процесора, а сви деле исти скуп основних, непривилегованих инструкција. Један од архитектонских параметара који се може скалирати је број имплементираних прозора регистра; спецификација дозвољава имплементацију од три до 32 прозора, тако да имплементација може изабрати да имплементира свих 32 да би обезбедила максималну ефикасност позивног стека, или да примени само три како би смањила трошкове и сложеност дизајна, или да имплементира неки број између њих. Друге архитектуре, које укључују сличне карактеристике датотека регистра, укључују Intel i960, IA-64 и AMD 29000 .
Архитектура је прошла кроз неколико ревизија. Стекла је функционалност хардверског множења и дељења у Верзији 8. [8][9] 64-битно адресирање и подаци додати су у верзију 9 SPARC спецификације, објављену 1994. године.
У SPARC верзији 8, датотека регистра са покретним зарезом има 16 регистара двоструке тачности. Сваки од њих може се користити као два регистра једноструке тачности, пружајући укупно 32 регистра једноструке тачности. Пар непарних-парних бројева регистара двоструке тачности може се користити као регистар четвороструке тачности, омогућавајући тако 8 регистара четвороструке тачности. SPARC верзија 9 додала је још 16 регистара двоструке тачности (којима се може приступити и као 8 регистара са четвороструком тачношћу), али овим додатним регистрима није могуће приступити као регистрима једноструке тачности. Ниједан SPARC процесор не имплементира операције четвороструке тачности у хардверу од 2004.[10]
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 магистралама.
Remove ads
Историја
Дошло је до три велике ревизије архитектуре. Прва објављена верзија била је 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. [7][11] Ова ревизија укључује проширења скупа инструкција VIS 4 и хардверски подржано шифровање и меморију заштићену силиконом (SSM).[12]
SPARC архитектура је обезбедила континуирану бинарну компатибилност апликације од прве имплементације SPARC V7 1987. године кроз имплементације Sun UltraSPARC архитектуре.
Међу различитим имплементацијама SPARC-а, Sun-ови SuperSPARC и UltraSPARC-I били су веома популарни и коришћени су као референтни системи за SPEC CPU95 и CPU2000 мерила. 296-MHz UltraSPARC-II је референтни систем за мерење SPEC CPU2006.
Remove ads
Архитектура
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. Ова промена нема утицаја на непривилегована упутства.
SPARC регистри су приказани на горњој слици.
Формати инструкција
Све SPARC инструкције заузимају пуну 32-битну реч, и почињу на граници речи. Користе се 4 формата, који се разликују по прва 2 бита. Све аритметичке и логичке инструкције имају 2 изворна и 1 одредишни операнд.
SETHI формат инструкције копира свој 22-битни непосредни операнд у 22 бита високог реда било ког наведеног регистра, и поставља сваки од десет битова нижег реда на 0.
Формат ALU register, оба извора су регистри; формат ALU immediate, један извор је регистар, а један је константа у опсегу од -4096 до +4095. Бит 13 бира један од њих. У оба случаја, одредиште је увек регистар.
Упутства за формат гране раде контролне преносе или условне гране. Поља icc или fcc одређују која је врста гране. Поље за померање од 22 бита даје релативну адресу циља, и то речима, тако да условне гране могу да иду напред или назад до 8 мегабајта. Бит ANNUL (A) се користи за уклањање неких слотова за кашњење. Ако је 0 у условној грани, онда се слот за кашњење извршава као и обично. Ако је 1, онда се слот за кашњење извршава само ако се узме грана. Ако се грана не узме, инструкција која следи условну грану се прескаче.
Инструкција CALL користи 30-битни помак речи за рачунар. Ова вредност је довољна да дохвати било коју инструкцију унутар 4 гигабајта од позиваоца или целог адресара. Упутство CALL депозитује повратну адресу у регистар R15 познат и као излазни регистар O7 .
Као и аритметичке инструкције, архитектура SPARC користи два различита формата за учитавање и складиштење инструкција. Први формат се користи за инструкције које користе један или два регистра као ефективну адресу. Други формат се користи за инструкције које користе целобројну константу као ефективну адресу.
Већина аритметичких инструкција долази у пару с једном верзијом која поставља битове кода стања NZVC, а друга не. Ово је тако да компајлер има начин да премешта инструкције приликом покушаја попуњавања слотова за одлагање.
SPARC v7 нема инструкције за множење или дељење, али има MULSCC, који ради један корак тестирања множења за један бит и условно додавајући множење у производ. То је зато што MULSCC може да заврши један циклус такта држећи се RISC филозофије.
Remove ads
Имплементације
Remove ads
Подршка за оперативни систем
SPARC машине су генерално користиле Sun-ов SunOS, Solaris или OpenSolaris укључујући деривате illumos и OpenIndiana, али су такође коришћени и други оперативни системи, као што су NeXTSTEP, RTEMS, FreeBSD, OpenBSD, NetBSD и Linux .
1993. Intergraph је најавио порт Windows NT у архитектури SPARC али је касније отказан.
У октобру 2015. године, Oracle је најавио „Linux за референтну платформу SPARC“.
Remove ads
Имплементације отвореног кода
Постоји неколико потпуно отворених имплементација SPARC архитектуре:
- LEON, 32-битна SPARC V8 имплементација отпорна на зрачење, дизајнирана посебно за употребу у свемиру. Изворни код је написан на VHDL-у и лиценциран је под GPL-ом .
- OpenSPARC T1, објављен 2006. године, 64-битна, 32-нитна имплементација у складу са UltraSPARC архитектуром 2005 и SPARC верзијом 9 (ниво 1). Изворни код је написан у верилогу и лиценциран је под многим лиценцама. Већина изворног кода OpenSPARC T1 лиценцирана је под GPL-ом. Извор заснован на постојећим пројектима отвореног кода и даље ће бити лиценциран према тренутним лиценцама. Бинарни програми лиценцирани су према уговору о лиценцирању бинарног софтвера.
- S1, 64-битно процесорско језгро компатибилно са Wishbone-ом засновано на OpenSPARC T1 дизајну. То је једно језгро UltraSPARC v9 способно за 4-смерни SMT. Као и T1, изворни код је лиценциран под GPL-ом.
- OpenSPARC T2, објављен 2008. године, 64-битна, 64-нитна имплементација у складу са UltraSPARC архитектуром 2007 и SPARC верзијом 9 (ниво 1). Изворни код је написан у верилогу и лиценциран је под многим лиценцама. Већина изворног кода OpenSPARC T2 лиценцирана је под GPL-ом. Извор заснован на постојећим пројектима отвореног кода и даље ће бити лиценциран према тренутним лиценцама. Бинарни програми су лиценцирани на основу Уговора о лиценцирању бинарног софтвера.
Такође постоји и симулатор отвореног кода за SPARC архитектуру:
- RAMP Gold Архивирано на веб-сајту (22. август 2021), 32-битна, 64-нитна SPARC верзија 8, дизајнирана за симулацију архитектуре засноване на FPGA. RAMP Gold је написан у ~36.000 редова SystemVerilog-а и лиценциран под BSD лиценцама .
Remove ads
Суперкомпјутери
За HPC оптерећења Fujitsu гради специјализоване SPARC64 fx процесоре са новим скупом проширења инструкција, названим HPC-ACE (рачунарство високих перформанси-аритметичка рачунарска проширења).
Fujitsu-ов K рачунар је рангиран на 1. месту на TOP500 листама из јуна 2011. и новембра 2011. године. Комбинује 88.128 SPARC64-ова VIIIfx процесора, сваки са осам језгара, за укупно 705.024 језгра - скоро двоструко више него било који други систем у TOP500 у то време. K компјутер је био моћнији од следећих пет система на листи заједно и имао је највећи однос перформанси према снази од свих суперрачунарских система. Такође је рангиран као бр. 6 на листи Green500 јуна 2011. године, са резултатом 824,56 MFLOPS/W. У новембру 2012. године у издању TOP500, рачунар К је рангиран на бр. 3, користећи далеко највећу моћ од прве три. Заузео је место бр. 85 на одговарајућем издању Green500. Новији HPC процесори, IXfx и XIfx, укључени су у недавним PRIMEHPC FX10 и FX100 суперкомпјутерима.
Tianhe-2 (TOP500 бр. 1 од новембра 2014) има бројне чворове са процесорима на бази Galaxy FT-1500 базираним на OpenSPARC развијеним у Кини. Међутим, ти процесори нису допринели LINPACK резултату.[28]
Remove ads
Види још
- ERC32 - засновано на SPARC V7 спецификацији
- Ross Technology, Inc. - развијач микропроцесора SPARC током 1980-их и 1990-их година
- Sparcle - модификовани SPARC са подршком за више процеса који користи пројекат MIT Alewife
- LEON - свемирски SPARC V8 процесор.
- R1000 -руски четворојезгарни микропроцесор заснован на SPARC V9 спецификацији
- Galaxy FT-1500 - кинески 16-језгарни процесор заснован на OpenSPARC-у
Remove ads
Напомене
Референце
Спољашње везе
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads