Cos’è e come funziona un SSD?

Gli SSD, acronimo di Solid State Drive sono dispositivi di archiviazione dati alternativi ai tradizionali hard disk, rispetto ai quali garantiscono una velocità di lettura e scrittura maggiore per via della diversa tecnologia utilizzata nello gestire i dati.

Gli Hard Disk sono dispositivi meccanici di memoria, ovvero, sono dotati di alcune parti mobili, diversamente gli SSD sono privi di elementi semoventi, pertanto non sono considerati dispositivi meccanici. 

Struttura e funzionamento di un SSD

Diversamente dai tradizionali Hard Disk, la cui struttura interna prevedeva l’utilizzo di numerose componenti tra cui braccia meccaniche, lettori ottici e dischi magnetici, gli SSD dispongono di una struttura molto più semplice, ma allo stesso tempo più avanzata.

Di base si compongono di una scheda su cui sono presenti un controller e delle unità di memoria nand flash, e, grazie ad un firmware integrato nel disco, permettono di leggere, scrivere e gestire i dati archiviati nelle unità di memoria.

Come vedremo nei prossimi paragrafi, diversamente dagli HDD , i dispositivi SSD svolgono numerose operazioni di calcolo e sono guidati nell’organizzazione e ottimizzazione dei dati dal proprio firmware.

I CONTROLLER

Il controller di un dispositivo SSD è un processore integrato nel disco che fa da ponte tra le unità di memoria e l’host, generalmente un computer, a cui è collegata l’unità SSD.

Il compito del controller è quello di eseguire i comandi e le istruzioni fornite dal firmware dell’SSD, consentendo quindi lettura, scrittura e cancellazione dei dati, l’eventuale crittazione e tante altre operazioni sui dati archiviati.

une esempio di chip NAND Flash presenti all’interno degli SSD

LE MEMORIE NAND FLASH

Altro elemento interno ai dischi SSD sono le unità di memoria NAND Flash, si tratta di chip di memoria utilizzati per archiviare e conservare i dati.

Gli SSD sono generalmente dotati di due diverse tipologie di chip di memoria definite SLC (Single layer cell) e MLC (Multiple layer cell). Si tratta in sostanza di celle a singolo livello o a livello multiplo, queste ultime sono utilizzate soprattutto negli SSD di fascia consumer, mentre le prime, sono utilizzate solo negli SSD di fascia alta, poiché più durature e veloci, ma anche più costose.

I dati vengono archiviati, in forma binaria, all’interno delle celle SLC o MLC, questo consente un’archiviazione non sequenziale, che richiede, durante la fase di scrittura, un discreto dispendio energetico e sforzo di calcolo, ma allo stesso tempo garantisce una velocità di lettura estremamente superiore a quella offerta dai tradizionali HD.

Basti considerare che la velocità massima di lettura e scrittura di un Hard Disk è di circa 125 MBps, mentre un SSD standard (di fascia consumer) ha una velocità media di lettura e scrittura di circa 512 MBps e un velocità massima teorica di circa 2GBps.  

La gestione dei dati attraverso Chip di memoria consente un elevato numero di riutilizzo dei dati, senza che le celle di memoria vengano danneggiate, questo garantisce ai dischi SSD una longevità superiore a quella dei tradizionali Hard Disk che per effetto del deterioramento dei dischi e delle parti meccaniche ha una longevità molto limitata.

Il numero di volte che le celle di memoria dei dischi SSD possono essere riutilizzate prende il nome di write endurance

Infografica sul funzionamento del Wear Leveling negli SSD

Per massimizzare la longevità dell’SSD il controller usa uno strumento chiamato in gergo wear-leveling, che consiste nell’utilizzare tutte le celle di un SSD prima di riscriverne una già utilizzata e non più utile, come ad esempio uno spazio di memoria in cui erano archiviati dati che sono stati spostati, cancellati o riscritti. Questo passaggio è in realtà necessario poiché, diversamente da quanto accadeva negli HDD in cui un determinato spazio di memoria poteva essere liberamente sovrascritto, negli SSD è necessario ripulire quella determinata cella di memoria prima di poterla utilizzare per archiviare nuovi dati.

La necessità di ripulire una cella prima di utilizzarla nuovamente, costringe l’SSD ad avere un registro organizzato in blocchi che al loro interno contengono pagine che raggruppano le varie celle del disco.

In generale un blocco pesa circa 512kb e si costituisce da circa 128 pagine dal peso di circa 4kb l’una.

Leggere, scrivere e interagire con il registro è compito specifico del controller che, tuttavia, non può eliminare le singole pagine, può però eliminare l’intero blocco provocando differenze di velocità nelle varie operazioni. 

WRITE AMPLIFICATION, GARBAGE COLLECTION E WEAR-LEVELING

Per gestire al meglio i dati ed i registri presenti nei blocchi, il Controller fa ricorso a diversi strumenti, in particolare wear-leveling e Gabage Collection, che producono un fenomeno chiamato Write amplification.

Cos’è la Write Amplification in un disco SSD

Cominciamo con quella che è definita write amplification, si tratta di un fenomeno per il quale nelle celle dell’SSD viene archiviata una quantità di dati maggiori di quella che effettivamente il controller dovrebbe scrivere con effetti diretti sulla longevità del Chip NAND. 

schema di funzionamento della garbage collection.

Apparentemente la maggiore quantità di dati scritti nelle celle accorcia i tempi per possibili riutilizzi della stessa, tuttavia, proprio per effetto della Write amplification, il Controller riesce ad ottimizzare meglio gli spazi all’interno delle celle garantendone così una maggiore longevità.

Il fenomeno della write amplification è causata da un’operazione specifica chiamata garbage collection.

Cos’è la Garbage collection?

Questa operazione consiste nel trasferire i dati contenuti in una pagina, all’interno di un blocco, in un altro blocco prima di cancellare il blocco stesso. In questo modo il controller si trova costretto a duplicare i dati in modo da non cancellare i dati ancora utili.

Cos’è la Wear-leveling?

Analogamente al Garbage collection anche il wear-leveling consente di massimizzare la longevità delle celle di memoria producendo come effetto collaterale una write amplification.

In breve, la wear-leveling organizza in maniera dinamica i dati, in modo tale che le eventuali riscritture vengano effettuate in zone diverse dell’SSD. In questo modo nessun blocco diventi saturo prima degli altri.

L’OVER-PROVISIONING

All’interno dell’SSD è riservato dello spazio al controller. questo spazio non è utilizzabile né disponibile all’utente. Questo spazio è utilizzato dal controller per le operazioni di wear-leveling e garbage collection, oltre che per tutte le altre operazioni volte ad ottimizzare le prestazioni e longevità dell’SSD.

TRIM, RAISE E IOPS

Il TRIM è un comando che consente al sistema operativo di comunicare con il controller dell’SSD e segnalare le pagine al cui interno sono presenti dati registrati come cancellati o invalidi.

Negli SSD dotati di controller SandForce è presente una funzione denominata RAISE, acronimo di “Redundant Array of Indipendent Silicon Elements“. Questa funzione consente all’SSD di limitare la comparsa di errori nell’unità di memoria ed eseguire una crittazione dei dati con algoritmo AES.

COMMENTI