# Small Computer System Interface

Small Computer System Interface o SCSI (ˈSCASI), in elettronica e informatica, è un'interfaccia standard progettata per realizzare il trasferimento di dati a bus in modalità parallela.
Progettata nel 1978 ma resa nota al pubblico nel 1981, sin dalla sua standardizzazione nel 1986 SCSI è stata comunemente utilizzata nelle linee di computer Amiga, Atari, Apple Macintosh, Sun Microsystems e nei sistemi server PC.

## Descrizione

Per collegare un computer ad un host, il bus di collegamento ha bisogno di un host adapter SCSI che gestisce il trasferimento dei dati sul bus stesso. La periferica deve disporre di un controller SCSI, che è solitamente incorporato in tutte le periferiche, ad eccezione di quelle di più vecchia concezione. L'interfaccia SCSI viene per lo più usata per la comunicazione con unità hard disk e unità nastro di memorizzazione di massa, ma anche per connettere una vasta gamma di dispositivi, come scanner d'immagini, lettori e scrittori di CD (CD-R e CD-RW), lettori DVD. In effetti lo standard SCSI è stato ideato per favorire l'intercambiabiltà e la compatibilità dei dispositivi (tutti, almeno in teoria). Esistono anche stampanti SCSI.
In passato l'interfaccia SCSI era molto diffusa in ogni tipologia di computer, mentre attualmente trova un vasto impiego solamente in workstation, server e periferiche di fascia alta (cioè con elevate prestazioni). I computer desktop e portatili sono invece di solito equipaggiati con l'interfaccia ATA/IDE (acronimi rispettivamente di Advanced Technology Attachment e Integrated Drive Electronics) per gli hard disk e con l'interfaccia USB (USB) per altre periferiche di uso comune. Queste ultime interfacce sono più lente della SCSI, ma anche più economiche. Notare che l'USB utilizza lo stesso set di comandi dello SCSI per implementare alcune delle sue funzionalità (USB Attached SCSI).

## Storia

Nel 1979 Alan Shugart, fondatore della Shugart Technology, introdusse sul mercato un'interfaccia semplificata, chiamata SASI. Contemporaneamente la divisione Periferiche della NCR Corporation (ora diventata Engenio), aveva sviluppato un prodotto più evoluto, il BYSE, e, per implementarlo, stava progettando un ASIC (Application Specific Integrated Circuit cioè circuito integrato per applicazioni specifiche o custom). Alla fine del 1981, NCR e Shugart si accordarono per far convergere il meglio delle due soluzioni in un unico progetto, in modo da costituire la base per un nuovo standard ANSI. Dopo una serie di riunioni del comitato normativo, e dopo che molti altri produttori avevano deciso di adottare il nuovo standard, fu scelto il nome SCSI.
Nel 1986, quando già lo SCSI si era largamente diffuso, l'ANSI approvò definitivamente la cosiddetta specifica SCSI (nota con la sigla X3.131-1986). Da allora lo SCSI si è affermato come uno standard industriale universale, in grado di trovare applicazioni in quasi tutti i sistemi di computer (c'è stata perfino un'implementazione SCSI per il famoso home computer Commodore 64). Il primo ASIC impiegato per realizzare un'interfaccia SCSI è stato donato dalla NCR allo Smithsonian Museum, a dimostrazione della grande popolarità raggiunta.

## Versioni

Lo SCSI ha subito un'evoluzione negli anni, ma prima di illustrarne le caratteristiche è opportuno fare chiarezza sulla differente terminologia usata quando ci si riferisce allo standard SCSI vero e proprio, codificata da comitato T10 dell'INCITS, e dal linguaggio di uso corrente, codificato dalla associazione dei venditori di dispositivi SCSI.
Nel 2003 esistevano soltanto tre standard: SCSI-1, SCSI-2, e SCSI-3, tutti di tipo modulare, incorporanti funzionalità che i vari produttori potevano decidere di includere o non includere. I vari vendor hanno dato nomi particolari a specifiche combinazioni di funzionalità. Ad esempio il termine Ultra-SCSI è definito nello standard, ma di solito è utilizzato per indicare quelle versioni dotate di velocità di trasferimento dati doppie di quelle ottenibili con il Fast-SCSI. Questa velocità di trasferimento non è conforme alla specifica SCSI-2, ma invece è una delle opzioni previste dallo SCSI-3. Analogamente, nessuna versione dello standard richiede di indicare se il dispositivo è di tipo LVD (Low Voltage Differential) che significa che utilizza 3 volt di livello logico, invece dei 5 volt del tipo HVD (High Voltage Differential). Ciononostante i prodotti marcati Ultra-2 SCSI includono tutti questa opzione. Questo tipo di terminologia è utile ai consumatori perché denominare un dispositivo Ultra-2 SCSI descrive le funzionalità meglio che denominarlo SCSI-3.
Nessuna edizione della specifica SCSI ha mai prescritto il tipo di connettori da usare, che sono stati invece scelti dai vari vendor. Sebbene i dispositivi SCSI-1 siano equipaggiati tipicamente con connettori tipo Centronics Blue Ribbon, e gli SCSI-2 con connettori tipo Mini-D, non è corretto riferirsi a questi tipi come i connettori degli SCSI-1 e SCSI-2.
Le principali implementazioni dello standard SCSI sono le seguenti (in ordine cronologico e usando la terminologia di uso corrente):
Riepilogo caratteristiche dell'interfaccia SCSI :
| Interfaccia | Velocità del bus (Transfer rate) (MByte/s) | Larghezza del bus (bits) | Max lunghezza cavi (metri) | Max numero di dispositivi |
| SCSI | 5 | 8 | 6 | 8 |
| Fast SCSI | 10 | 8 | 1,5-3 | 8 |
| Wide SCSI | 20 | 16 | 1,5-3 | 16 |
| Ultra SCSI | 20 | 8 | 1,5-3 | 5-8 |
| Ultra Wide SCSI | 40 | 16 | 1,5-3 | 5-8 |
| Ultra2 SCSI | 40 | 8 | 12 | 8 |
| Ultra2 Wide SCSI | 80 | 16 | 12 | 16 |
| Ultra3 SCSI | 160 | 16 | 12 | 16 |
| Ultra-320 SCSI | 320 | 16 | 12 | 16 |
| Ultra-640 SCSI | 640 | 16 | 12 | 16 |

### SCSI-1

È la versione originale, derivata dal SASI, ed ufficialmente adottata dall'ANSI a partire dal 1986. SCSI-1 dispone di un bus a 8 bit, con controllo di parità, funzionante in modo asincrono alla velocità di 3,5 MB/s, oppure in modo sincrono a 5 MB/s, con una lunghezza massima consentita dei cavi di collegamento pari a 6 metri, un notevole passo in avanti rispetto al limite di 0,45 metri dell'interfaccia ATA (Advanced Technology Attachment). Una variante del progetto iniziale prevedeva l'implementazione del cosiddetto HVD (High Voltage Differential) cioè 5 volt di livello logico per il segnale, caratteristica che consente di aumentare di molte volte la massima lunghezza consentita per i cavi di collegamento.

### SCSI-2

Questa versione è stata lanciata nel 1989, dando in seguito origine alle varianti Fast-SCSI e Wide-SCSI. Il Fast-SCSI ha consentito di elevare la massima velocità di trasferimento dei dati (Transfer rate) fino ad un massimo di 10 MB/s, mentre il Wide-SCSI ha raddoppiato sia larghezza del bus, portata a 16 bit, che la velocità, portata a 20 MB/s. Tuttavia queste maggiori prestazioni hanno comportato una limitazione a 3 metri della lunghezza massima dei cavi di collegamento. SCSI-2 prevedeva inizialmente anche una versione a 32 bit del Wide-SCSI, che montava due bus a 16 bit, ciascuno con un proprio cavo di collegamento. Tuttavia questa variante è stata di fatto ignorata sia dai costruttori di dispositivi che dal mercato, tanto che è stata ufficialmente abolita dallo standard SCSI-3.

### SCSI-3

Prima che la Adaptec, e in seguito la SCSITA, codificassero l'attuale terminologia, il primo dispositivo SCSI in grado di superare le prestazioni dello SCSI-2 era stato semplicemente chiamato SCSI-3. Questi dispositivi, noti anche come Ultra-SCSI e Fast-20-SCSI, furono lanciati nel 1992. La velocità del bus era raddoppiata a 20 MB/s per i sistemi a 8-bit e a 40 MB/s per i sistemi a 16-bit. La massima lunghezza dei cavi rimase 3 metri, ma l'Ultra-SCSI si guadagnò una pessima reputazione per la sua estrema sensibilità alla lunghezza e alle condizioni dei cavi, che spesso provocava malfunzionamenti a causa di piccoli difetti nei cavi stessi, nei connettori o nei terminatori.

### Ultra-2

Questa versione è stata introdotta sul mercato nel 1997 ed è dotata del bus di tipo LVD (vedi sopra), e per questo motivo viene a volte chiamata LVD SCSI. L'impiego della tecnologia LVD ha permesso di aumentare la lunghezza massima dei cavi a 12 metri, mantenendo un'alta immunità contro i disturbi. In qualche applicazione speciale la velocità è stata elevata fino a 80 MB/s. Tuttavia questa versione ha avuto vita breve, in quanto presto soppiantata dall'Ultra-3 (Ultra-160).

### Ultra-3

Conosciuta anche come Ultra-160 e introdotta alla fine del 1999, questa versione è sostanzialmente un'evoluzione dell'Ultra-2 in cui la velocità di trasmissione è stata ancora una volta raddoppiata a 160 MB/s con l'impiego di una tecnologia chiamata double transition clocking (DTC) o dual edge clocking. L'Ultra-160 inoltre è dotato di altre nuove caratteristiche, come il cyclic redundancy check (CRC) che implementa un meccanismo di correzione automatica degli errori di trasmissione.

### Ultra-320

Costituisce un'evoluzione dell'Ultra-160 in cui la velocità è stata raddoppiata a 320 MB/s. Quasi tutti i nuovi hard drive SCSI prodotti dall'ottobre 2003 sono di questo tipo.

### Ultra-640

Altrimenti noto anche come Fast-320, è realizzato in conformità ad una specifica INCITS 367-2003 or SPI-5 emessa all'inizio del 2003, e, ancora una volta, raddoppia la velocità, portandola a 640 MB/s.
SCSI è un protocollo di livello 2 con un'interfaccia parallela iSCSI un protocollo di livello 7 su TCP/IP.

### iSCSI

La versione iSCSI (sta per: internet SCSI) è un'evoluzione dello SCSI-3 che mantiene praticamente invariata l'impostazione dello SCSI di base, specialmente per quanto riguarda il set di comandi. Essa si basa sull'idea di incorporare nello standard SCSI il protocollo TCP/IP, realizzando un protocollo di storage che possa viaggiare su Ethernet. I sostenitori dello standard iSCSI ritengono che questa tecnologia possa rimpiazzare, nel lungo termine, le tecnologie concorrenti, compresa la tecnologia Fibre Channel, poiché le velocità di trasmissione dati ottenibili con reti Ethernet stanno attualmente aumentando più rapidamente di quelle ottenibili con le altre tecnologie. In prospettiva l'iSCSI ha dunque i requisiti necessari per affermarsi sia nel mercato di fascia bassa (low-end) che di fascia alta (high-end), utilizzando la medesima tecnologia.

## Compatibilità

Le versioni Ultra-2, Ultra-160 e Ultra-320 possono essere liberamente collegate sullo stesso bus di tipo LVD senza alcuno scadimento delle prestazioni, poiché il computer host effettuerà automaticamente l'arbitraggio della velocità di trasmissione e dell'utilizzo del bus di ciascun dispositivo. Nota: nessun dispositivo funzionante in single-ended mode (cioè con una linea collegata a terra) deve essere connesso al bus LVD, poiché ciò limiterebbe la velocità di tutti i dispositivi alla velocità del dispositivo single-ended più lento. A partire dall'emanazione della specifica SPI-5 (che descrive la versione Ultra-640) il supporto dell'interfaccia single-ended è fortemente sconsigliato, e quindi i dispositivi che saranno prodotti in futuro non saranno più compatibili con quelli precedenti.
Attenzione: i moderni dispositivi SCA devono essere collegati in catena ai precedenti modelli usando gli appositi adattatori SCA. Sebbene questi adattatori siano solitamente equipaggiati con connettori ausiliari di alimentazione di tipo speciale, si potrebbe correre il pericolo di danneggiare il dispositivo in caso di errata connessione alla sorgente di alimentazione. È consigliabile effettuare sempre un test preliminare del dispositivo senza l'alimentazione ausiliaria. I dispositivi SCSI sono di norma compatibili con le versioni precedenti (backward compatibility), il che significa che, ad esempio, è possibile collegare un hard disk Ultra-3 SCSI con un controller Ultra-2 SCSI e pilotarlo regolarmente, anche se a velocità e funzionalità ridotte.
Ad ogni dispositivo SCSI (compreso l'adattore del computer host), deve essere assegnato, in fase di configurazione, un identificatore (ID) univoco, in modo che possa condividere uno stesso bus con altri dispositivi. Inoltre il bus deve anche essere correttamente collegato ad un terminatore. Possono essere utilizzati terminatori sia di tipo attivo che passivo, anche se il tipo attivo è preferibile (obbligatorio se il bus è di tipo LVD). Errati collegamenti del terminatore sono una delle più frequenti cause di malfunzionamento dei dispositivi SCSI.
È possibile convertire un bus largo in uno stretto, con l'avvertenza di installare i dispositivi che richiedono il bus largo più vicini all'adattatore. Ciò richiede la presenza di un cavo di collegamento dotato di terminatori alla fine del lato largo del bus. Questa tecnica di collegamento viene solitamente chiamata terminazione high-9. È necessario inviare comandi specifici all'host per abilitare questa modalità. Questa pratica è comunque sconsigliata.

## Architettura del modello SCSI

Lo standard SCSI-1 originario definiva le caratteristiche fisiche richieste al bus di collegamento, nonché la sequenza dei segnali elettrici necessari a compiere determinate azioni. Con lo standard SCSI-2 si ebbe un notevole ampliamento delle funzionalità, in particolare con la completa definizione del set di istruzioni da inviare al controller. Sta di fatto che il set di comandi SCSI è utile e funzionale di per sé, dal momento che esiste ormai un gran numero di utilizzatori e progettisti esperti. Con l'avvento dello standard SCSI-3 si è realizzata la netta separazione fra il set di comandi SCSI vero e proprio e la sua tradizionale implementazione in modalità parallela.
La struttura logica del set di comandi SCSI è denominata SAM (SCSI Architecture Model) ed è inclusa nelle specifiche di interfacciamento con dispositivi rispondenti ai seguenti standard:
* Fibre Channel
* Serial Storage Architecture
* InfiniBand,
* iSCSI
* USB (USB)
* IEEE 1394
* Serial Attached SCSI
Tutti questi tipi di dispositivi son in grado di interpretare, in tutto o in parte, il set di comandi SCSI.