SPARC (Scalable Processor ARChitecture, česky architektura procesoru s měnitelným měřítkem[1]) je architektura mikroprocesorů typu RISC původně navržená firmou Sun Microsystems roku 1985. SPARC je registrovanou obchodní značkou organizace SPARC International, Inc., která vznikla roku 1989 za účelem otevřít tuto architekturu ostatním výrobcům. Mezi licencované výrobce dnes patří například Texas Instruments, Cypress Semiconductor a Fujitsu. Architektura je tedy otevřená a neproprietární.
Ve skutečnosti existují dvě open source implementace této architektury. Zdrojový kód (napsaný v jazyce VHDL) implementace 32bitového SPARC Version 8 zvaná LEON je k dispozici pod licencí LGPL. 64bitová, 32vláknová implementace, která splňuje UltraSPARC Architecture 2005 a SPARC Version 9 zvaná OpenSPARC T1 je též k dispozici pod open source licencí. Implementace OpenSPARC T1 je napsaná v jazyku Verilog.
Implementace SPARC architektury byly původně navrženy pro pracovní stanice a až poté pro větší víceprocesorové servery vyrobené firmami Sun Microsystems a Fujitsu. Stroje SPARC obvykle běží na operačním systému Solaris (který byl přímo navržen pro SPARC), ale lze použít také systémy jako NeXTSTEP, RTEMS, FreeBSD, OpenBSD, NetBSD a Linux.
Postupem času vzniklo několik revizí architektury. SPARC Version 8 (V8), která je považovaná za standardní definici 32bitového SPARCu, byla zveřejněna přibližně roku 1989. 64bitová architektura SPARC Version 9 byla zveřejněna organizací SPARC International roku 1994. Na začátku roku 2006 uvolnil Sun rozšířenou specifikaci architektury – UltraSPARC Architecture 2005.
32bitová SPARC V8 architektura je čistě big-endian. Architektura SPARC V9 používá big-endian instrukce, ale umí přistupovat k datům jak ve formátu big-endian, tak i v little-endian.
UltraSparc je vysoce výkonný, vysoce integrovaný procesor implementující 64bitovou SPARC V9 RISC architekturu. Je schopen udržet a realizovat až 4 strojové instrukce za jeden takt procesoru, souměrně podle požadavků a podmínek rozvětvení a možností cache paměti. Z asynchronního hlediska se jedná o hlavní způsob práce jednotky přivádějící instrukce a data do konce spojení (fronty). Instrukce určené k provedení jsou ukládány (v programovém pořadí) v násobné funkční jednotce, realizované paralelně a pro přidaný paralelismus, které může dokončit mimo pořadí.
UltraSparc podporuje 44bitovou virtuální adresaci a 41bitovou fyzickou adresaci prostoru. Jádro instrukční sady bylo rozšířeno o grafické instrukce, které přináší většinou běžné operace spojené s dvou dimenzionálním obrazovým zpracováním, 2D a 3dimenzionální grafiku a obrazové kompresní algoritmy a paralelní operace na pixel, data s 8- a 16bitovými komponentami.
Doba provedení aplikace je závislá na třech faktorech:
Průměrný počet cyklů na instrukci záleží na architektuře procesoru a na schopnosti kompilátoru zvýhodnit hlavní HW nabídky.
Redukování instrukcí záleží na přetížení. UltraSparc mají krátké latentní doby operací a zajišťují vnější řízení mezi jednotkami nebo mezi jednou jednotkou. Prázdná cache je obvykle zapříčiněna pomalými (dlouhými) spolu-procesy v CPI, je redukována symboly při použití propojených jednotek (prefetch unit, vstupní buffer a uchovávací buffer), které pracují asynchronně se zbytkem spojení.
UltraSparc I | UltraSparc II | |
---|---|---|
Technologie | 0,5 µm CMOS | 0,35 µm CMOS |
Časový cyklus | 7 ns a rychlejší | 4 ns a rychlejší |
Symetrická architektura musí být schopná poskytnout pomalý CPI bez porušení časového taktu. Některými z rysů architektury UltraSparc je spojování agresivní implementací a špičkovou technologii. To umožňuje dokončit instrukce v krátkém cyklu (resp. taktu procesoru, viz tabulka) spojení je organizováno tak, že větší část, krátký latentní čas a násobné vnější okruhy, nenaruší hodnotově časový takt.
Instrukční cache je 16KB dvoucestná skupina asociovaných cache s 32bajtovými bloky. Cache je fyzicky indexována a obsahuje fyzické tagy (značky). Skupina je předpovězena jako část z následující položky 13 bity, které se rovnají minimální velikosti stránky. I-cache vrací až 4 instrukce z 8 instrukcí široké cachovací řádky.
Jednotka IEU obsahuje tyto komponenty:
Jednotka FPU je rozdělena do samostatných realizačních jednotek, které procesoru UltraSparc dovolují zpracování a zakončení dvou float instrukcí za takt procesoru. Vstupní a výstupní data jsou uchovávána v 32bitovém vstupním registru archívů (pořadač), kde každý vstup může obsahovat 32bitovou hodnotu. Většina instrukcí je plně propojena (s předáváním za jeden takt procesoru), má latentní dobu tři a neovlivňuje přesnost operandů. Precizní model výjimek je udržován synchronizací floatové fronty s frontou integrovanou a s předpovídáním nedostatku pro dlouho čekající operace.
UltraSparc zavádí základní sadu grafických instrukcí, které poskytují rychlou HW podporu pro dvoudimenzionální a třídimenzionální obrázky a video procesy, obrazovou kompresi, zpracování zvuku… Předpokladem jsou 16bitové a 32bitové částečné sčítání a násobení, booleovské operace a porovnání.
Zapisuje průchodně, tedy bez alokací – 16 KB přímé mapování cache s dvěma 16bitovými podbloky na řádek. D-cache je virtuálně indexována a fyzicky označena. Značkou je pole s dvěma úrovněmi, tedy aktualizace způsobená naplněním řádku není v rozporu s čtením značky pro přicházející nahrávání.
E-cache velikost | UltraSparc I | UltraSparc II |
---|---|---|
512 Kib | Ano | Ano |
1 Mib | Ano | Ano |
2 Mib | Ano | Ano |
4 Mib | Ano | Ano |
8 Mib | – | Ano |
16 Mib | – | Ano |
Hlavní rolí ECU je dosáhnout vhodné minimalizace nedostatků I-cache a D-cache. Přístupy do E-cache jsou propojeny efektivně – E-cache je částí instrukčního spojení. Následující tabulka ukazuje na velikost E-cache, kterou každý model UltraSparc podporuje. Velikost řádku E-cache je vždy 64 bytů. UltraSparc používá protokol MOESI (modify, own, exclusive, shared, invalid) udržující spojitost systému.
ECU zajišťuje přesahy procesů během nahrávacích a uchovávacích nedostatků. Může zpracovávat čtení a zápis tak, že je nerozlišuje, bez nákladného vracení (2 cykly). Konečně ECU provádí blokové hledání, nahrávání a uchovávání, které nahrává/ukládá 64bitový řádek dat z paměti do float registru souborů.
64bitový mikroprocesor druhé generace architektury SPARC v9. Tento procesor dokáže dokončit až 4 instrukce za 1 hodinový takt procesoru. UltraSparc II jsou procesory druhé generace UltraSparců, které používají novou technologii řízení procesů, vyšší hodinové kmitočty, několik režimů SRAM a také několik možných volitelných poměrů frekvencí mezi systémem a procesorem, což jistě nejvíce ocení hlavně vývojáři systémů na bázi tohoto procesoru. Avšak při tom všem tyto procesory stále zůstávají kompatibilní se staršími systémy na bázi procesorů UltraSparc I.
V procesoru UltraSparc II jsou na jednom čipu integrovány následující komponenty:
Instrukční cache je 16 KB pseudo-dvoucestná asociativní cache s 32bajtovými bloky. Je fyzicky indexována a obsahuje fyzické značky. Nastavení je predikováno jako součást tzv. následující položky, takže k adresování cache jsou potřebné jen indexové bity adresy.
Datová cache je typu write-through, nealokující, 16 KB, přímo mapovaná cache se dvěma 16bajtovými subbloky v každém řádku. Je virtuálně indexována a fyzicky značena. Pole značek je dvouportové, takže update značek nekoliduje se čtením těchto značek.
Hlavní role ECU spočívá v tom, že účinně zachycuje nedostatky I-cache a D-cache. ECU může zpracovat jeden přístup do externí cache za takt procesoru. Podporuje také práci s externí cache v režimech 1–1–1 a 2–2 V režimu 1–1–1 je SRAM taktována na frekvenci procesoru. V režimu 2–2 je SRAM taktována na polovinu frekvence procesoru. Velikost externí cache může být 512 KB, 1 MiB, 2 MiB, 4 MiB, 8 MiB a 16 MiB, přičemž velikost řádku je vždy 64 bajtů. K udržení spojitosti systému se používá protokol MOESI. Externí cache je fyzicky indexována a fyzicky značena.
Třetí generace rodiny mikroprocesorů UltraSparc. Tento procesor je projektován pro práci na 600 MHz. Pro splnění velkých požadavků na vzrůstající výkon internetových serverů bude UltraSparc III nabízet vysoce škálovatelné a robustní řešení systémů, které umožňuje multiprocesorovým systémům pracovat až s 1 000 procesory.
Tento mikroprocesor reprezentuje krok vpřed ve výkonu procesorů Sparc a oslovuje rapidně se měnící požadavky v síťových prostředích. Škálovatelnost procesoru dovoluje jednoduše podporovat rychle se rozvíjející infrastruktury při zachování 100% binární kompatibility pro OS Solaris.
Použitím výkonné Sunovské VIS instrukční sady pro sítě, média, vizualizaci a Javu dostaneme 2 až 3násobný výkon oproti UltraSparc II.
Tento procesor najde nejčastěji použití v aplikacích, jako je CAD, finanční analýza a datové sklady.