# UltraSPARC T1

L'UltraSPARC T1 (conosciuto anche con il nome in codice di Niagara) è un microprocessore prodotto dalla Sun Microsystems e distribuito dal 14 novembre 2005. Il microprocessore è stato progettato per essere multi core e garantire il multithreading. Il suo progetto prevedeva come obiettivo primario la realizzazione di un chip a basso consumo per il mercato server ad una via. L'unità dissipa 72 Watt alla frequenza di 1,2 GHz.
Il T1 deriva dai processori della serie UltraSPARC. È il primo microprocessore Sun multicore e multithread; difatti il T1 è dotato di otto core e ogni core è in grado di eseguire fino a 4 Thread simultaneamente e quindi la CPU è in grado di eseguire fino a 32 thread simultaneamente.
Come i server ad alte prestazioni Sun l'UltraSPARC T1 può essere partizionato, in modo da poter assegnare uno o più core a compiti o utenti specifici.

## Core

L'UltraSPARC T1 è stato progettato fin dall'inizio per l'esecuzione multithread di processi generici e introdusse una nuova architettura nata per ottenere alte prestazioni. Gli ingegneri, invece di puntare su un processore molto veloce, decisero di realizzare dei processori più semplici ma ottimizzati per eseguire molti processi in contemporanea, in modo da ottenere alte prestazioni su sistemi che eseguono molti processi concorrenti.
I core del T1 sono molto meno complessi dei core inclusi nelle moderne CPU ad alte prestazioni. Per esempio i core non supportano l'esecuzione delle istruzioni fuori ordine e non sono dotati di cache di dimensioni generose. Le prestazioni dei singoli thread dipendono strettamente dalla presenza di cache di dimensioni generose, la mancanza di un dato in cache infatti introduce una notevole penalizzazione delle prestazioni dato che la memoria centrale è molto più lenta del processore. Una cache di ampie dimensioni riduce gli accessi alla memoria centrale e quindi migliora le prestazioni sebbene non possa ridurre il tempo di accesso alla memoria centrale.
Il processore T1 riesce a ridurre notevolmente la penalizzazione dell'accesso alla memoria utilizzando un approccio multithread. Quando un processore ha una cache miss (cioè non trova i dati necessari in memoria) il processore commuta su un altro thread disponibile e lo immette in esecuzione. Quindi sebbene i singoli thread siano rallentati dagli accessi alla memoria le prestazioni complessive del sistema sono elevate dato che il processore esegue in contemporanea molti thread. Analizzando la pipeline di un core infatti si nota che solamente la memoria e i registri sono replicati. Quindi ogni core può tenere in memoria fino a quattro thread sebbene ne possa eseguire solo uno alla volta.
I benchmark hanno dimostrato che nelle applicazioni commerciali questo approccio funziona molto bene. Applicazioni basate su Java application server, su application server e in generale su web server dimostrano la bontà di questo approccio. Questo genere di applicazioni creano tanti thread che singolarmente non richiedono elevata potenza di calcolo ma che nel complesso mettono sotto pressione i server dato che complessivamente assorbono elevate potenze di calcolo. I test hanno dimostrato che ogni core del processore genera una potenza di calcolo superiore a quella di un processore a singolo core e singolo thread UltraSPARC III (2001). Nell'esecuzione di più thread basati su aritmetica degli interi i core forniscono prestazioni significativamente superiori a quelli degli altri processori in commercio.
Quando venne presentato nel dicembre 2005 un server basato su un singolo processore a 8 core, 32 thread a 1,2 GHz forniva prestazioni simili a quelle fornite da un server basato su 2 processori IBM POWER5 a quattro core e otto thread con frequenza di 1,9 GHz. Le prestazioni erano paragonabili a quelle generate anche da un server basato su quattro Intel Xeon Paxville MP con otto core e 16 thread a 3,0 GHz e forniva prestazioni superiori a quelle di un server basato su quattro Intel Itanium con quattro core e quattro thread a 1,6 GHz.

## Mercati di riferimento

Il microprocessore è stato specificatamente sviluppato per alcuni mercati usualmente occupati dai server. Piuttosto che puntare sul settore del supercalcolo o delle applicazioni ad altissime prestazioni Sun ha deciso di privilegiare il settore dei server dedicati alle applicazioni internet come i web server. Questa tipologie di applicazioni richiedono la gestione di molti thread simultaneamente e infatti l'architettura della CPU è chiaramente indirizzata verso queste applicazioni, anche considerata la possibilità di una virtualizzazione hardware in grado di far girare su un solo processore a basso consumo parallelamente molte macchine virtuali.
Il processore dimostra le sue prestazioni anche nel caso di database di piccole e medie dimensioni con un discreto numero di utenti. Un test eseguito da un privato le prestazioni di un database MySQL su un'UltraSPARC T1 surclassano un server basato su AMD Opteron.

## Rock

Una delle limitazioni di queste scelte progettuali emerge nella gestione dei numeri in virgola mobile. La CPU, infatti, dispone di una sola unità di calcolo in virgola mobile, condivisa dagli 8 core. Al fine di sopperire a questa limitazione Sun ha avviato lo sviluppo di un nuovo microprocessore (nome in codice Rock). Per via della sua architettura interna, dunque, il T1 non è un microprocessore SMP. Per questo Sun intendeva presentare Rock, con l'obiettivo di integrare l'SMP e risolvere il problema della singola unità di calcolo in virgola mobile. Rock, inoltre, doveva introdurre un aggressivo precaricamento del codice, in modo da evitare lo svuotamento delle pipeline e, dunque, rallentamenti dell'esecuzione. Nel maggio del 2010 quando il progetto del processore era quasi terminato Oracle (nuovo proprietario di Sun) decise di cancellare il progetto.
Rock comunque non era il successore dell'UltraSPARC T1. Sun ha sviluppato l'UltraSPARC T2 che è indirizzato allo stesso mercato del Niagara. L'UltraSPARC T2 è in grado di gestire 64 thread ed ha 8 unità di calcolo in virgola mobile.

## Opensource

Il 21 maggio 2006 Sun ha distribuito il processore UltraSPARC T1 sotto licenza GNU General Public License tramite il progetto OpenSPARC. Il progetto include:
* Il codice Verilog del processore
* Programmi per la simulazione e il test del processore
* Specifiche dell'ISA (architettura UltraSPARC 2005)
* Il sistema operativo Solaris 10