Una memoria SSD (solid-state drive) è un dispositivo di archiviazione che conserva dati in celle di memoria flash NAND, senza parti meccaniche in movimento. Il principio di funzionamento è molto diverso da quello di un hard disk: non c’è una testina che legge domini magnetici su un disco rotante, ma una matrice elettronica in cui l’informazione è rappresentata da carica elettrica intrappolata in celle a semiconduttore.
La cella flash può essere vista come una variante di transistor con gate flottante o struttura charge-trap. La quantità di carica immagazzinata modifica la tensione di soglia del dispositivo. Leggendo questa soglia, il controller interpreta lo stato logico della cella.
Celle, pagine e blocchi
La NAND flash è organizzata gerarchicamente. Le celle formano pagine, le pagine formano blocchi. Una caratteristica fondamentale è che la lettura e la programmazione avvengono a livello di pagina, mentre la cancellazione avviene a livello di blocco. Questo vincolo rende impossibile sovrascrivere liberamente un singolo byte come in una RAM.
Quando il sistema operativo modifica un file, l’SSD spesso scrive i nuovi dati in un’altra posizione e marca i vecchi come non più validi. In seguito, la garbage collection recupera blocchi contenenti molte pagine invalide, li cancella e li rende nuovamente disponibili.
Controller e FTL
Il componente più importante di un SSD moderno è il controller. Esso presenta al computer un dispositivo a blocchi apparentemente semplice, ma internamente traduce gli indirizzi logici in posizioni fisiche tramite il FTL (flash translation layer).
Il controller gestisce:
- distribuzione delle scritture;
- correzione d’errore;
- cache;
- garbage collection;
- protezione da perdita di alimentazione, se supportata;
- comando TRIM;
- wear leveling.
Il wear leveling distribuisce le scritture su tutte le celle per evitare che alcune si consumino molto prima delle altre. Ogni cella flash sopporta infatti un numero finito di cicli programmazione-cancellazione.
Celle multilivello e affidabilità
Le celle SLC memorizzano un bit per cella; MLC, TLC e QLC memorizzano più bit usando più livelli di soglia. Aumentare i bit per cella migliora densità e costo, ma riduce margini elettrici, velocità e durata.
Per mantenere affidabilità, gli SSD usano codici di correzione d’errore, over-provisioning e algoritmi di gestione avanzati. L’unità sembra una memoria semplice, ma in realtà è un sistema embedded che nasconde la complessità fisica della NAND.
La forza dell’SSD è nella latenza ridotta: senza meccanica, l’accesso casuale è enormemente più rapido rispetto a un disco magnetico. Il limite non è più cercare fisicamente un settore, ma gestire in modo efficiente celle che si usurano, devono essere cancellate a blocchi e richiedono correzione continua degli errori.