SPARC
![](http://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Sun_UltraSPARCII.jpg/220px-Sun_UltraSPARCII.jpg)
In elettronica e informatica SPARC (Scalable Processor ARChitecture) è un'architettura per microprocessore big-endian RISC. L'architettura, originariamente progettata nel 1985 da Sun Microsystems, è anche diventata un trademark registrato da SPARC International, Inc., un'organizzazione nata nel 1989 per promuovere SPARC e per provvedere a rilasciare attestati e test di conformità per processori che si vogliono fregiare di tale titolo.
Descrizione
[modifica | modifica wikitesto]SPARC International ha voluto che SPARC fosse un'architettura "aperta" per creare un grande ecosistema per la progettazione, è stato licenziato a vari produttori tra cui Texas Instruments, Cypress Semiconductor e Fujitsu. È risultato che attualmente SPARC è un'architettura aperta e non proprietaria: esiste anche un'implementazione open source completa di nome LEON, scritta in VHDL e il suo codice sorgente è disponibile sotto LGPL. L'ASIC di LEON, sviluppato da Gaisler Research, è a 32-bit e supporta il set di istruzioni presente nell'architettura SparcV8.
Le CPU con implementazioni dell'architettura SPARC inizialmente furono progettate e usate per ambiti come le workstation e più tardi anche in server SMP prodotti dalla Sun Microsystems e dalla Fujitsu. Le macchine SPARC sono sinonimo di Solaris, il sistema operativo della Sun progettato per SPARC, anche se per questa architettura sono disponibili i port di vari sistemi operativi tra cui OPENSTEP, Linux, FreeBSD, OpenBSD e NetBSD. Negli anni si sono sviluppate varie versioni dell'architettura SPARC in modo da garantire la massima compatibilità possibile fra processori datati e nuovi per agevolare eventuali upgrade (un esempio sono i processori UltraSPARC III e UltraSPARC VI/VI+ che possono essere montati nello stesso sistema senza problemi); l'architettura più recente e tuttora in uso è la nona (V9).
Caratteristiche
[modifica | modifica wikitesto]![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Sun_SuperSPARC_SM51_501-2352.jpg/220px-Sun_SuperSPARC_SM51_501-2352.jpg)
![](http://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Sun_SuperSPARC_II_SM71_501-3001.jpg/220px-Sun_SuperSPARC_II_SM71_501-3001.jpg)
L'architettura SPARC è stata pesantemente influenzata dal precedente disegno RISC I e II sviluppati all'interno dell'università californiana Berkeley. Questa architettura RISC era molto minimalista: il processore includeva poche operazioni nel codice interno, in modo da garantire che ogni operazione fosse eseguita in un solo ciclo di clock, ed era inoltre molto simile all'architettura MIPS, non prevedendo operazioni di divisione o moltiplicazione che venivano piuttosto emulati tramite serie di somme. Una caratteristica interessante degli SPARC influenzata dai RISC era l'unità di predizione delle diramazioni molto avanzata: grazie a queste caratteristiche quest'architettura possedeva un ottimo IPC (Instructions Per Cycle - istruzioni per ciclo di clock) che garantiva ottime prestazioni anche a basse frequenze. Una caratteristica indesiderata derivata dal progetto dei primi RISC è il branch delay slot.
Un processore SPARC normalmente contiene almeno 128 registri di uso generico; di questi solo 32 registri sono disponibili direttamente al software, 8 sono globali (il g0 è riservato e quindi non utilizzabile quindi solo 7 sono utilizzabili) e gli altri 24 vengono utilizzati come stack. I 24 registri fungono da register window e quando le funzioni chiamano o ritornano variabili questi registri provvedono a memorizzare i dati, muovendosi in alto o in basso lungo lo stack. Ogni finestra ha 8 registri locali e 8 registri condivisi con le altre finestre. I registri condivisi sono utilizzati per passare i parametri e ritornare le variabili di una funzione.
Lo SPARC è un processore molto scalabile, cioè in grado di essere utilizzato sia come processore per applicazioni embedded che per fornire potenza di calcolo in server aziendali utilizzando sempre lo stesso set di istruzioni. Una delle caratteristiche architetturali che permettono questa scalabilità del processore è il numero di finestre basate su registri che possono essere implementate; le specifiche permettono a queste di variare da un minimo di 3 a un massimo di 32. Un ampio numero aumenta la velocità del codice con molte unità di calcolo, mentre un numero ridotto aumenta la velocità di context switching. Altre architetture includono finestre con registri come per esempio l'Intel i960, l'IA-64 dei processori Itanium o l'AMD 29000.
Nello SPARC versione 8 (1987) l'unità in virgola mobile è dotata di 16 registri in virgola mobile. Ognuno di questi registri può essere utilizzato come 2 registri a singola precisione fornendo in totale 32 registri a singola precisione. I registri possono essere accoppiati per ottenere 8 registri a quadrupla precisione. La versione 9 dello SPARC aggiunse altri 16 registri a doppia precisione (che possono diventare 8 registri a quadrupla precisione) ma che non sono utilizzabili come registri a singola precisione.
Storia
[modifica | modifica wikitesto]Nel corso degli anni l'architettura ha subito diverse revisioni, per esempio la versione 8 ha introdotto le moltiplicazioni e le divisioni via hardware anche se la modifica maggiore si è avuta con la versione 9 che ha introdotto la gestione dei dati a 64 bit nel processore.
Le specifiche Sun UltraSPARC Architecture 2005 (UA 2005) hanno aggiunto delle istruzioni addizionali, registri aggiuntivi e una funzione chiamata hyperprivileged mode. Queste nuove aggiunte diventeranno uno standard a partire dal nuovo processore a 8 core UltraSPARC T1. UltraSPARC architecture 2005 include comunque le estensioni standard Sun e rimane compatibile con le specifiche SPARC V9 Level 1; oltre a questo la nuova architettura fornisce piena compatibilità con le applicazioni scritte per le specifiche SPARC V7 implemantate per la prima volta nel 1987.
Nella storia di questa architettura vari processori SPARC della Sun fra cui il SuperSPARC e l'UltraSPARC-I divennero talmente comuni che vennero utilizzati come metro di riferimento da SPEC per i benchmark CPU95 e CPU2000.
Nome (nome in codice) | Modello | Frequenza (MHz) | Versione Architettura | Anno | Numero thread[1] | Processo (µm) | Transistor (milioni) | Area Die (mm²) | IO Pin | Consumo (W) | Voltaggio (V) | L1 Dcache (k) | L1 Icache (k) | L2 Cache (k) | L3 Cache (k) |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SPARC | (diversi), incluso MB86900[2] | 14.28–40 | V7 | 1987-1992 | 1×1=1 | 0.8–1.3 | ~0.1–1.8 | -- | 160–256 | -- | -- | 0–128 (unified) | -- | -- | |
microSPARC I (Tsunami) | TI TMS390S10 | 40–50 | V8 | 1992 | 1×1=1 | 0.8 | 0.8 | 225? | 288 | 2.5 | 5 | 2 | 4 | -- | -- |
SuperSPARC I (Viking) | TI TMX390Z50 / Sun STP1020 | 33–60 | V8 | 1992 | 1×1=1 | 0.8 | 3.1 | -- | 293 | 14.3 | 5 | 16 | 20 | 0-2048 | -- |
SPARClite | Fujitsu MB8683x | 66–108 | V8E | 1992 | 1×1=1 | -- | -- | -- | 144–176 | -- | 2.5/3.3V | 1–16 | 1–16 | -- | -- |
hyperSPARC (Colorado 1) | Ross RT620A | 40–90 | V8 | 1993 | 1×1=1 | 0.5 | 1.5 | -- | -- | -- | 5? | 0 | 8 | 128-256 | -- |
microSPARC II (Swift) | Fujitsu MB86904 / Sun STP1012 | 60–125 | V8 | 1994 | 1×1=1 | 0.5 | 2.3 | 233 | 321 | 5 | 3.3 | 8 | 16 | -- | -- |
hyperSPARC (Colorado 2) | Ross RT620B | 90–125 | V8 | 1994 | 1×1=1 | 0.4 | 1.5 | -- | -- | -- | 3.3 | 0 | 8 | 128-256 | -- |
SuperSPARC II (Voyager) | Sun STP1021 | 75–90 | V8 | 1994 | 1×1=1 | 0.8 | 3.1 | 299 | -- | 16 | -- | 16 | 20 | 1024-2048 | -- |
hyperSPARC (Colorado 3) | Ross RT620C | 125–166 | V8 | 1995 | 1×1=1 | 0.35 | 1.5 | -- | -- | -- | 3.3 | 0 | 8 | 512-1024 | -- |
TurboSPARC | Fujitsu MB86907 | 160–180 | V8 | 1996 | 1×1=1 | 0.35 | 3.0 | 132 | 416 | 7 | 3.5 | 16 | 16 | 512 | -- |
UltraSPARC (Spitfire) | Sun STP1030 | 143–167 | V9 | 1995 | 1×1=1 | 0.47 | 5.2 | 315 | 521 | 30[3] | 3.3 | 16 | 16 | 512-1024 | -- |
UltraSPARC (Hornet) | Sun STP1030 | 200 | V9 | 1998 | 1×1=1 | 0.42 | 5.2 | 265 | 521 | -- | 3.3 | 16 | 16 | 512-1024 | -- |
hyperSPARC (Colorado 4) | Ross RT620D | 180–200 | V8 | 1996 | 1×1=1 | 0.35 | 1.7 | -- | -- | -- | 3.3 | 16 | 16 | 512 | -- |
SPARC64 | Fujitsu (HAL) | 101–118 | V9 | 1995 | 1×1=1 | 0.4 | -- | Multichip | 286 | 50 | 3.8 | 128 | 128 | -- | -- |
SPARC64 II | Fujitsu (HAL) | 141–161 | V9 | 1996 | 1×1=1 | 0.35 | -- | Multichip | 286 | 64 | 3.3 | 128 | 128 | -- | -- |
SPARC64 III | Fujitsu (HAL) MBCS70301 | 250–330 | V9 | 1998 | 1×1=1 | 0.24 | 17.6 | 240 | -- | -- | 2.5 | 64 | 64 | 8192 | -- |
UltraSPARC IIs (Blackbird) | Sun STP1031 | 250–400 | V9 | 1997 | 1×1=1 | 0.35 | 5.4 | 149 | 521 | 25[4] | 2.5 | 16 | 16 | 1024 or 4096 | -- |
UltraSPARC IIs (Sapphire-Black) | Sun STP1032 / STP1034 | 360–480 | V9 | 1999 | 1×1=1 | 0.25 | 5.4 | 126 | 521 | 21[5] | 1.9 | 16 | 16 | 1024–8192 | -- |
UltraSPARC IIi (Sabre) | Sun SME1040 | 270–360 | V9 | 1997 | 1×1=1 | 0.35 | 5.4 | 156 | 587 | 21 | 1.9 | 16 | 16 | 256–2048 | -- |
UltraSPARC IIi (Sapphire-Red) | Sun SME1430 | 333–480 | V9 | 1998 | 1×1=1 | 0.25 | 5.4 | -- | 587 | 21[6] | 1.9 | 16 | 16 | 2048 | -- |
UltraSPARC IIe (Hummingbird) | Sun SME1701 | 400–500 | V9 | 1999 | 1×1=1 | 0.18 Al | -- | -- | 370 | 13[7] | 1.5-1.7 | 16 | 16 | 256 | -- |
UltraSPARC IIi (IIe+) (Phantom) | Sun SME1532 | 550–650 | V9 | 2000 | 1×1=1 | 0.18 Cu | -- | -- | 370 | 17.6 | 1.7 | 16 | 16 | 512 | -- |
SPARC64 GP | Fujitsu SFCB81147 | 400–563 | V9 | 2000 | 1×1=1 | 0.18 | 30.2 | 217 | -- | -- | 1.8 | 128 | 128 | 8192 | -- |
SPARC64 GP | -- | 600–810 | V9 | -- | 1×1=1 | 0.15 | 30.2 | -- | -- | -- | 1.5 | 128 | 128 | 8192 | -- |
SPARC64 IV | Fujitsu MBCS80523 | 450–810 | V9 | 2000 | 1×1=1 | 0.13 | -- | -- | -- | -- | -- | 128 | 128 | 2048 | -- |
UltraSPARC III (Cheetah) | Sun SME1050 | 600 | V9 / JPS1 | 2001 | 1×1=1 | 0.18 Al | 29 | 330 | 1368 | 53 | 1.6 | 64 | 32 | 8192 | -- |
UltraSPARC III (Cheetah) | Sun SME1052 | 750–900 | V9 / JPS1 | 2001 | 1×1=1 | 0.13 Al | 29 | -- | 1368 | -- | 1.6 | 64 | 32 | 8192 | -- |
UltraSPARC III Cu (Cheetah+) | Sun SME1056 | 1002–1200 | V9 / JPS1 | 2001 | 1×1=1 | 0.13 Cu | 29 | 232 | 1368 | 80[8] | 1.6 | 64 | 32 | 8192 | -- |
UltraSPARC IIIi (Jalapeño) | Sun SME1603 | 1064–1593 | V9 / JPS1 | 2003 | 1×1=1 | 0.13 | 87.5 | 206 | 959 | 52 | 1.3 | 64 | 32 | 1024 | -- |
SPARC64 V (Zeus) | Fujitsu | 1100–1350 | V9 / JPS1 | 2003 | 1×1=1 | 0.13 | 190 | 289 | 269 | 40 | 1.2 | 128 | 128 | 2048 | -- |
SPARC64 V+ (Olympus-B) | Fujitsu | 1650–2160 | V9 / JPS1 | 2004 | 1×1=1 | 0.09 | 400 | 297 | 279 | 65 | 1 | 128 | 128 | 4096 | -- |
UltraSPARC IV (Jaguar) | Sun SME1167 | 1050–1350 | V9 / JPS1 | 2004 | 1×2=2 | 0.13 | 66 | 356 | 1368 | 108 | 1.35 | 64 | 32 | 16384 | -- |
UltraSPARC IV+ (Panther) | Sun SME1167A | 1500–2100 | V9 / JPS1 | 2005 | 1×2=2 | 0.09 | 295 | 336 | 1368 | 90 | 1.1 | 64 | 64 | 2048 | 32768 |
UltraSPARC T1 (Niagara) | Sun SME1905 | 1000–1400 | V9 / UA 2005 | 2005 | 4×8=32 | 0.09 | 300 | 340 | 1933 | 72 | 1.3 | 8 | 16 | 3072 | -- |
SPARC64 VI (Olympus-C) | Fujitsu | 2150–2400 | V9 / JPS1 | 2007 | 2×2=4 | 0.09 | 540 | 422 | -- | 120 | -- | 128 | 128 | 5120 | -- |
UltraSPARC T2 (Niagara 2) | Sun SME1908A | 1000–1600 | V9 / UA 2007 | 2007 | 8×8=64 | 0.065 | 503 | 342 | 1831 | 95 | 1.1–1.5 | 8 | 16 | 4096 | -- |
UltraSPARC T2 Plus (Victoria Falls) | Sun SME1910A | 1200–1600 | V9 / UA 2007 | 2008 | 8×8=64 | 0.065 | 503 | 342 | 1831 | - | - | 8 | 16 | 4096 | -- |
SPARC64 VII (Jupiter)[9] | Fujitsu | 2400–2880 | V9 / JPS1 | 2008 | 2×4=8 | 0.065 | 600 | 445 | -- | 135 | -- | 64 | 64 | 6144 | -- |
UltraSPARC "RK" (Rock)[10] | Sun SME1832 | 2300 | V9 / -- | cancellato[11] | 2×16=32 | 0.065 | ? | 396 | 2326 | ? | ? | 32 | 32 | 2048 | ? |
SPARC64 VIIIfx (Venus)[12][13] | Fujitsu | 2000 | V9 / JPS1 | 2009 | 1x8=8 | 0.045 | ? | ? | ? | ? | ? | ? | ? | ? | ? |
SPARC T3 (Rainbow Falls) | Oracle/Sun | 1650 | V9 / UA _?_ | 2010 | 16×8=128 | 0.040[14] | ???? | 371 | ? | 139 | ? | 8 | 16 | 6144 | -- |
Nome (nome in codice) | Modello | Frequenza (MHz) | Versione Architettura | Anno | Numero thread[1] | Processo (µm) | Transistor (milioni) | Area Die (mm²) | IO Pin | Consumo (W) | Voltaggio (V) | L1 Dcache (k) | L1 Icache (k) | L2 Cache (k) | L3 Cache (k) |
SPARC64
[modifica | modifica wikitesto]SPARC64 è una famiglia di processori sviluppati da Fujitsu e utilizzati nella famiglia di server PRIMEPOWER.
Note
[modifica | modifica wikitesto]- ^ a b Thread per core × numero di core
- ^ Diverse implementazioni SPARC V7 sono state prodotte da Fujitsu, LSI Logic, Weitek, Texas Instruments e Cypress. Un processore SPARC V7 normalmente consiste in diversi chip che creano l'unità interi (IU), la floating-point unit (FPU), la memory management unit (MMU) e la memoria cache.
- ^ @167 MHz
- ^ @250 MHz
- ^ @400 MHz
- ^ @440 MHz
- ^ max@500 MHz
- ^ @900 MHz
- ^ FX1 Key Features & Specifications (PDF), su fujitsu.com, Fujitsu, 19 febbraio 2008.
- ^ A Third-Generation 65nm 16-Core 32-Thread Plus 32-Scout-Thread CMT SPARC(R) Processor (PDF), su opensparc.net, Sun Microsystems, 19 febbraio 2008.
- ^ Ashlee Vance, Sun Is Said to Cancel Big Chip Project, The New York Times, 15 giugno 2009. URL consultato il 23 maggio 2010.
- ^ "Fujitsu shows off SPARC64 VII" Archiviato il 2 giugno 2009 in Internet Archive.. (28 August 2008). heise online.
- ^ Sylvie Barak, Fujitsu unveils world’s fastest CPU, su theinquirer.net. URL consultato il 6 dicembre 2010 (archiviato dall'url originale il 17 maggio 2009).
- ^ http://www.oracle.com/us/products/servers-storage/servers/sparc-enterprise/t-series/sparc-t3-chip-ds-173097.pdf
Altri progetti
[modifica | modifica wikitesto]Wikimedia Commons contiene immagini o altri file su SPARC
Collegamenti esterni
[modifica | modifica wikitesto]- (EN) SPARC International, Inc., su sparc.com.
- (EN) SPARC Standards Documents Depository, su sparc.org. URL consultato il 22 gennaio 2006 (archiviato dall'url originale il 25 aprile 2006).
- (EN) Articolo tecnico sull'UltraSPARC T1 (PDF), su elet.polimi.it. URL consultato il 31 gennaio 2006 (archiviato dall'url originale il 7 giugno 2006).
- (EN) LEON2 An open source SPARC implementation
- (EN) ERC32 A SPARC V7 radiation-tolerant CPU
- (EN) OpenSPARC - Sun's open sourced UltraSPARC T1 design
- (EN) Solaris Operating System for SPARC Platforms, su wwws.sun.com. URL consultato il 22 gennaio 2006 (archiviato dall'url originale il 12 ottobre 2004).
- (EN) UltraSPARC Processors, su sun.com. URL consultato il 22 gennaio 2006 (archiviato dall'url originale il 6 marzo 2007).
- (EN) UltraLinux - A 32-bit and 64-bit SPARC Port, su ultralinux.org. URL consultato il 22 gennaio 2006 (archiviato dall'url originale il 29 ottobre 2007).
- (EN) Slackware 32-bit and 64-bit SPARC Port, su splack.org.
- (EN) Debian 32-bit and 64-bit SPARC Port, su debian.org.
- (EN) FreeBSD 64-bit SPARC Port, su freebsd.org.
- (EN) NetBSD 32-bit SPARC Port, su netbsd.org.
- (EN) NetBSD 64-bit SPARC Port, su netbsd.org.
- (EN) OpenBSD 32-bit SPARC Port, su openbsd.org.
- (EN) OpenBSD 64-bit SPARC Port, su openbsd.org.
- (EN) SPARC processor images and descriptions at cpu-collection.de, su cpu-collection.de.
- (EN) UltraSPARC Modules, su sunsolve.sun.com. URL consultato il 22 gennaio 2006 (archiviato dall'url originale il 5 aprile 2005).
- (EN) Rough Guide to MBus Modules (SuperSPARC, HyperSPARC), su mbus.sunhelp.org.
Controllo di autorità | GND (DE) 4230258-4 |
---|