# Serial Attached SCSI

In elettronica e informatica Serial Attached SCSI (SAS) è una tecnologia o interfaccia di trasferimento dati, evoluzione della SCSI, studiata per lavorare sia con dispositivi ad accesso diretto, come i dischi fissi, sia per quelli ad accesso sequenziale, come i nastri magnetici. Il protocollo di comunicazione è seriale punto-punto diversamente dal bus SCSI di tipo parallelo introdotto nella metà degli anni ottanta.

## Descrizione

Un tipico sistema Serial Attached SCSI è composto da:

### Initiator

    Un Initiator, che nella modalità più semplice è un controller SAS, è un dispositivo che gestisce le richieste verso le periferiche collegate, trasferendo loro i comandi e aspettando le risposte. Gli initiator possono essere integrati sulla scheda madre (come nel caso delle schede madri orientate ai server) oppure possono essere delle schede aggiuntive. In una Storage Area Network con dischi SAS l'iniziatore è esterno al server in quanto si trova all'interno del sistema di storage.

### Periferica di destinazione (Target in inglese)

    Una periferica di destinazione può essere un dispositivo ad accesso diretto come i dischi fissi o le memorie flash o un dispositivo ad accesso sequenziale come i nastri magnetici. Le periferiche di destinazione contengono delle Logical Units (Unità logiche anche chiamate LUNs) e hanno delle porte di comunicazione che ricevono i comandi dall'initiator e gli restituiscono le risposte.

### Sottosistema di trasmissione (Service Delivery Subsystem in inglese)

    Un sottosistema di trasmissione è la parte di un sistema I/O che trasmette informazioni tra initiator e periferiche di destinazione. Tipicamente è l'insieme di tutti i cavi e dell'elettronica di comunicazione che servono per connettere l'initiator alle periferiche di destinazione.

### Expander

    Gli expander sono i dispositivi del sottosistema comunicazione che agevolano la comunicazione tra le periferiche SAS facilitando la connessione di molteplici dispositivi ad una singola porta di un initiator.

### Domini SAS & WWN (World Wide Name)

Un Dominio SAS è un sistema I/O che consiste in un set di periferiche SAS che comunicano tra di loro per mezzo di un sottosistema di trasmissione. Ogni periferica SAS in un Dominio SAS ha un unico identificatore assegnato globalmente al produttore della periferica (analogo all'indirizzo MAC di una periferica ethernet) chiamato World Wide Name (o indirizzo SAS). Il WWN identifica esclusivamente la periferica nel dominio SAS precisamente come uno SCSI ID identifica una periferica in una catena SCSI. Un dominio SAS può contenere fino a un totale di 16384 dispositivi.

## Differenze fra SAS e SCSI

Differenze fra SAS e SCSI :
| | SAS | SCSI |
| Tipo di bus | punto-punto | multidrop |
| Necessita di terminatori | No | SI |
| Soffre di clock skew | No | SI |
| Max periferiche | 16.384 | 8 o 16 |
| Velocità bus | dedicata a ciascuna periferica | Condivisa fra tutte le periferiche |
| Supporto SATA | SI | NO |
| Set di comandi | SAM | SAM |
* Il SAS è un bus punto-punto mentre SCSI è un bus multidrop. Ciascun dispositivo SAS è collegato direttamente all'initiator a meno che non sia utilizzato un expander. Se un dispositivo è collegato direttamente all'initiator non esiste contesa del bus pertanto il sistema risulta molto più efficiente di un sistema a contesa come si ha per il bus SCSI anche quando al bus è collegata una sola periferica.
* Il SAS non utilizza terminatori a differenza di SCSI.
* Il SAS elimina il clock skew ossia il fatto che il clock arrivi a più dispositivi con ritardi differenti.
* Il SAS sostiene un più alto numero di periferiche (fino a 16384) mentre la catena SCSI è limitata (a seconda delle versioni) a 8 o 16 periferiche.
* Il SAS sostiene una maggiore velocità di trasferimento (1.5, 3.0 o 6.0 Gbps). La velocità è realizzata su ogni connessione controller-periferica, quindi un maggior throughput. In un bus SCSI multidrop la velocità è condivisa tra tutte le periferiche.
* Il SAS supporta periferiche SATA.
* Il SAS e SCSI utilizzano lo stesso set di comandi SAM (SCSI Architecture Model).

## Differenze fra SAS e SATA

Differenze fra SAS e SATA :
| | SAS | SATA |
| Identificazione disp. | Con WWN | In base alla porta |
| Riordinamento comandi | TCQ | NCQ (solo su SATA II) |
| Può gestire | Dischi fissi Dischi ottici Stampanti Nastri Magnetici Scanner ecc. | Dischi fissi Dischi ottici |
| Multipath I/O | Si nativo | Solo su SATA II con hardware proprietario |
| Tensione TX | 800-1600 mV | 400-600 mV |
| Tensione RX | 275-1600 mV | 325-600 mV |
| Lunghezza cavi | 8 m | 1 m |
* Le periferiche SATA sono identificate esclusivamente dal loro numero di porta connessa all'Host Bus Adapter mentre le periferiche SAS sono identificate dal loro World Wide Name (WWN).
* Le periferiche SATA I non supportano il riordinamento dei comandi. Le periferiche SAS supportano il TCQ, molto simile al NCQ di SATA II.
* Il sistema SATA opera con il set di comandi ATA e supporta, quindi, solo hard disk e lettori ottici mentre il SAS supporta un'ampia gamma dispositivi inclusi hard disks, scanners, stampanti, lettori ottici ecc.
* L'hardware SAS permette il multipath I/O alle periferiche mentre quello SATA nella sua versione iniziale no. SATA II ha introdotto l'utilizzo del port multiplier per aumentare la velocità e alcuni produttori di hardware hanno implementato il port multiplier con un multipath I/0.
* Il SATA è principalmente usato per applicazioni non critiche come l'uso home PC mentre il SAS, per la sua robustezza, può essere usato per le applicazioni critiche dei server.
* Nella gestione SAS i rapporti di errore sono più completi rispetto al sistema ATA SMART utilizzato da SATA.
* Il SAS complementa il SATA e non è in concorrenza con esso.
* SAS utilizza un differenziale elettrico più alto per la comunicazione (800-1600 mV TX, 275-1600 mV RX) rispetto a SATA (400-600 mV TX, 325-600 mV RX). Quando dispositivi SAS e dispositivi SATA sono collegati allo stesso sistema, i dispositivi SAS operano con la stessa tensione delle periferiche SATA. La tensione maggiore rende più facile l'implementazione nei server con backplane per molti dischi.
* Grazie alla tensione maggiore i cavi SAS possono essere più lunghi (8 m) di quelli SATA (1 m).

## Specifiche tecniche
### Prestazioni

| SAS | SAS | SCSI | SCSI |
| Versione | Velocità di trasferimento | Versione | Velocità di trasferimento |
| 3.0 Gib/s | 300 MiB/s | Ultra-320 | 320 MiB/s |
| 6.0 Gib/s | 600 MiB/s | Ultra-640 | 640 MiB/s |
| 12.0 Gib/s | 1200 MiB/s | | |
Come si può vedere nella tabella soprastante SAS, nella versione a 3.0 Gib/s, è leggermente più lento della versione Ultra-320 di SCSI. Nel 2009 dovrebbe uscire la versione con bus a 6.0 Gib/s, che raddoppierà le prestazioni e sarà paragonabile a SCSI Ultra-640 introdotto nel 2003 ma scarsamente utilizzato proprio per l'arrivo di SAS. La velocità del bus però, su un bus SCSI, è condivisa fra tutti i dispositivi e il controller stesso, mentre in un bus SAS è dedicata a ciascun dispositivo. Il set di comandi di SAS è mutuato esattamente da SCSI, così è garantita la completa compatibilità, a livello di comando, per tutti i software sviluppati per SCSI.
Specifiche tecniche del Serial Attached SCSI :
| Prestazioni | Trasferimento Full-duplex con l'aggregazione di 8 link su wide ports 24 Gib/s. |
| Prestazioni | 3.0 Gib/s per link nella versione introduttiva. Pianificato 6.0 Gib/s. |
| Connettività | Cavo esterno max 8 metri |
| Connettività | 128 dispositivi per porta (16.384 in totale) |
| Connettività | Compatibilità SAS-SATA |
| Attualmente già disponibili | Hard disk a doppia porta |
| Attualmente già disponibili | Multi-initiator point-to-point |
| Driver | Trasparente dal punto di vista software con SCSI |
I dischi fissi SATA possono essere collegati al bus SAS, ma i dischi SAS non possono essere collegati ad un controller SATA. Nel primo caso però i dischi SAS e SATA non possono essere collegati sulla stessa porta contemporaneamente.
Il protocollo SAS è sviluppato e mantenuto dal comitato tecnico T10 del International Committee for Information Technology Standards (INCITS) e promosso dalla SCSI Trade Association (SCSITA).

### Architettura

L'architettura SAS è organizzata su sei livelli:
* Livello fisico (Physical layer):
** Definisce le caratteristiche fisiche ed elettriche.
** Trasmissione differenziale dei dati.
** Cinque tipi di connettori:
*** SFF 8482 – Compatibile SATA
*** SFF 8484 – Interno fino a 4 dispositivi
*** SFF 8470 – Esterno tipo InfiniBand fino a quattro dispositivi
*** SFF 8087 - Molex 4x iPASS, interno con supporto in futuro 12 Gbps.
*** SFF 8088 - Molex 4x iPASS, esterno con supporto in futuro 12 Gbps.
* Livello PHY (PHY layer):
** Definisce il protocollo di segnalazione.
* Livello di collegamento (Link Layer):
** Tre tipi di protocollo: SSP, STP, SMP
** Gestisce le connessioni e trasmette i dati.
* Livello di porta (Port layer):
** Associa i dispositivi SAS ai PHY (Interfacce di I/O).
** Seleziona l'interfaccia PHY per la trasmissione.
** Apre e chiude le connessioni con i dispositivi.
* Livello di trasporto (Transport layer):
** Supporta tre protocolli di trasporto:
*** Serial SCSI Protocol (SSP): per il supporto dei dispositivi SAS.
*** Serial ATA Tunneling Protocol (STP): supporta dischi SATA.
*** Serial Management Protocol (SMP): gestione degli Expanders SAS
* Livello di applicazione (Application layer):
** SCSI Architecture Model SAM: comandi SCSI

### Topologia

Un initiator può essere collegato direttamente ad un dispositivo tramite uno o più PHY. Questa connessione si chiama porta (port in inglese) SAS anche se è caratterizzata dal collegamento di più PHY. Talvolta è utilizzato il termine wide port per indicare la connessione di un dispositivo ad un initiator utilizzando più di un PHY.
Spesso, però, i dispositivi non sono collegati direttamente all'initiator, ma sono collegati agli expander SAS.

#### Expander SAS

Un expander Serial Attached SCSI è un componente che agevola la comunicazione e il cablaggio quando sono presenti un gran numero di dispositivi SAS. Gli expander contengono due o più porte esterne. Ogni dispositivo expander contiene almeno una porta di destinazione SAS Management Protocol per la gestione del dominio SAS e può collegare direttamente i dispositivi SAS. Un expander non è necessario per interfacciare un initiator SAS ad una periferica di destinazione ma se connesso lo aiuta gestire la comunicazione con più periferiche SAS/SATA. Gli expander possono essere visti come una specie di switch (anche se operano una commutazione di circuito e non di pacchetto) che permette a molteplici sistemi di essere connessi utilizzando una singola porta nella rete.
Ci sono due diversi tipi di expander: expander edge ed expander fanout.
* Un expander edge può gestire la comunicazione con un massimo di 128 indirizzi SAS, permettendo all'initiator SAS di comunicare con questi dispositivi aggiuntivi. Gli expander edge supportano il direct table routing (instradamento diretto basato su tabella di connessioni) e subtractive routing (instradamento basato su mancata risposta). Senza l'utilizzo di expander fanout in un sistema si possono installare solo due expander edge. Questo perché potendo solo utilizzare questi tipi di instradamento l'unica modalità operativa è quella di collegarli a vicenda con la porta configurata per il subtractive routing. Poiché ci può essere solo una porta configurata in questo modo non si possono installare altri expader.
* Un expander fanout può connettere fino a 128 set di expander edge, permettendo di indirizzare 16.384 dispositivi (128²=16384). La porta subtractive routing di un expander edge deve essere connessa ad un PHY dell'expander fanout. Un expander fanout non può utilizzate il subtractive routing ma può instradare le richieste che provengono dalla porta subtractive routing di un expander edge ad un altro expander edge che avrà il dispositivo di destinazione direttamente connesso.
L'instradamento può essere effettuato nei seguenti modo:
* Direct routing: permette a dispositivi di dialogare direttamente con i dispositivi direttamente connessi a lui.
* Direct table routing: permette ad un expander edge di instradare le richieste di comunicazioni ai dispositivi direttamente collegati alle sue porte PHY.
* Subtractive routing: instrada tutte le richieste che non si possono gestire direttamente con il direct table routing verso una determinata porta.
Gli expander sono stati pensati per consentire tipologie di interconnessione complesse. Operano realizzando una commutazione di circuito (link-switching) fra dispositivi (initiator o periferiche di destinazione). Gli expander possono individuare i dispositivi in tre modi:
* Dispositivi connessi direttamente tramite la tabella di connessioni (direct table routing)
* Dispositivi raggiungibili tramite una tabella di instradamento che associa l'ID di ciascun dispositivo con una PHY di connessione con un expander edge. Solo gli expander fanout possono utilizzare questo instradamento.
* Quando entrambi questi metodi di instradamento falliscono si utilizza il subtractive routing instradando la richiesta verso una porta di default. Se non è connesso nessun expander alla porta contrassegnata per il subtractive routing il processo di instradamento fallisce e il dispositivo non può essere raggiunto.
Gli expander senza PHY configurate con l'instradamento subtractive routing operano come expander fanout e possono connettersi ad altri expander. Gli expander che hanno una porta configurata per il subtractive routing possono collegarsi solo ad altri due expander, uno attraverso la porta subtractive routing e l'altro tramite una porta non subtractive routing.
Deve esistere un nodo radice in un dominio SAS. Questo nodo è l'expander che non è connesso a nessun altro expander attraverso una porta subtractive routing. Il nodo radice ha l'informazione per raggiungere tutti i dispositivi connessi ad un dominio SAS.

### Connettori

I connettori SAS sono molto più compatti dei connettori SCSI e permettono così l'impiego di dischi da 2.5". Attualmente SAS supporta velocità di trasmissione punto-punto di 3 Gbit/s ma dovrebbe supportare 12 Gbit/s entro il 2012.
Ci sono diversi connettori fisici SAS:
| Nome tecnico | Nome commerciale | Esterno/Interno | Numero di piedini | Numero di dispositivi | Note |
| SFF 8482 | Connettore SATA | Interno | 29 | 2 | Connettore compatibile con lo standard SATA: permette la connessione di dischi SATA ad un sistema SAS, in modo da ovviare alla necessità di installare controller SATA addizionali. È utilizzabile anche per la connessione di CD-ROM ecc. Un disco SAS non può essere utilizzato, invece, con un controller SATA e il connettore SAS è stato pensato con una chiave che impedisca ad un disco SAS di essere connesso ad un connettore SATA. Il connettore nell'immagine è quello presente su un dispositivo. |
| SFF 8484 | | Interno | 32 (19) | 4 (2) | Connettore interno ad alta densità. Lo standard SFF 8484 definisce una versione a 2 e una a 4 piste (lane). |
| SFF 8485 | | | | | Include un'interfaccia SGPIO (estensione di SFF 8484). SGPIO è un protocollo seriale utilizzato per il controllo dei led. |
| SFF 8470 | Connettore Infiniband | Esterno | 32 | 4 | connettore ad alta densità utilizzato anche come connettore interno specie nelle SAN. |
| SFF 8087 | Mini-SAS interno | Interno | 36 | 4 | Connettore Molex iPASS interno con dimensioni ridotte e in grado di operare in futuro a 4x ossia 12 Gbit/s. |
| SFF 8088 | Mini-SAS esterno | Esterno | 32 | 4 | Connettore Molex iPASS esterno con dimensioni ridotte e in grado di operare in futuro a 4x ossia 12 Gbit/s. |