Streaming SIMD Extensions

SSE (Streaming SIMD Extensions) è un instruction set SIMD progettato dalla Intel nel 1999 ed utilizzato nel suo processore Pentium III come risposta al 3DNow! prodotto da AMD, che era presente sul mercato da circa un anno. Era originariamente conosciuto con la sigla KNI, da Katmai New Instructions (Katmai era il nome in codice del primo Pentium III). Durante il progetto Katmai Intel cercava di distinguerlo dalla sua precedente linea di prodotti, in particolare il Pentium II. AMD aggiunse successivamente il supporto per le istruzioni SSE nel suo processore Athlon XP.

Il primo tentativo di SIMD da parte della Intel, la tecnologia MMX, fu una delusione. MMX ha principalmente due problemi: riutilizza i registri a virgola mobile rendendo impossibile per la CPU lavorare sui dati in virgola mobile e i dati SIMD contemporaneamente, ma può operare solo sugli interi.

SSE aggiunge otto nuovi registri a 128 bit con nomi che vanno da XMM0 a XMM7. Ogni registro raggruppa quattro numeri a virgola mobile a 32 bit (precisione singola).

Poiché questi registri a 128 bit rappresentano stati aggiuntivi che il sistema operativo deve preservare durante il cambio di contesto dei task, essi sono disabilitati finché il sistema operativo non li abilita esplicitamente. Questo significa che il SO deve essere programmato per utilizzare le istruzioni FXSAVE e FXRSTOR, che sono la coppia di istruzioni introdotte da SSE per salvare in un'unica operazione i registri x86, MMX, 3DNow! e SSE. Il supporto per queste istruzioni fu aggiunto velocemente a tutti i principali sistemi operativi a 32 bit.

Poiché SSE aggiunge il supporto per la virgola mobile, fu molto più utilizzato di MMX dato che tutte le schede video gestiscono internamente i calcoli sui numeri interi. L'intero set era costituito da 70 istruzioni. Con l'introduzione di SSE2 anche gli interi possono essere utilizzati con i nuovi registri XMM, perciò l'instruction set MMX adesso è ridondante.

Sul Pentium III, comunque, SSE è implementato utilizzando gli stessi circuiti della FPU, il che significa che la CPU non può inviare nella pipeline contemporaneamente le istruzioni SSE e quelle riguardanti la virgola mobile. I registri separati permettono di mescolare le operazioni SIMD e a virgola mobile, ma senza le prestazioni raggiunte passando esplicitamente dalla modalità a virgola mobile a quella MMX.

Il Pentium 4 implementa SSE2, un'estensione del set di istruzioni SSE. Le caratteristiche principali di SSE2 sono il supporto per i numeri a virgola mobile a doppia precisione (64 bit) e il supporto per gli interi nel vettore di registri a 128 bit introdotti con SSE, il che permette al programmatore di utilizzare i registri MMX. Lo stesso SSE2 è stato esteso da SSE3 introdotto con in core Prescott delle ultime generazioni di Pentium 4.


© MMXXIII Rich X Search. We shall prevail. All rights reserved. Rich X Search