Cos'è e come funziona un SSD

Gli SSD sono dei componenti per la memorizzazione dei dati che differiscono molto dagli HDD: come funzionano? Scopritelo nel nostro speciale.

guida Cos'è e come funziona un SSD
Articolo a cura di
Daniele Vergara Daniele Vergara viene alla vita con un chip Intel 486 impiantato nel cervello, a mo' di coprocessore. E' più che entusiasta di tutto ciò che riguarda la tecnologia intera e i videogames, con un occhio di riguardo verso l'hardware PC e l'overclocking. D'inverno ama snowboardare, macinando km e km di piste. Lo trovate su Facebook, Twitter e Google+.

I Solid State Drive sono dei componenti di memorizzazione costruiti per rimpiazzare gli hard disk meccanici, noti per la loro lentezza sia in scrittura che in lettura. In termini tecnici e nelle modalità con cui trattano i dati, gli SSD non hanno nulla a che vedere con gli HDD. Gli hard disk si vanno infatti a collocare nel gruppo dei dispositivi a memoria meccanici, ovvero in cui c'è fisicamente il movimento di una qualche parte del componente - i dischi, le braccia e le testine, in questo caso. Di contro, invece, i Solid State Drive non hanno sezioni in movimento, il che è un beneficio soprattutto per l'affidabilità: a seguito di vibrazioni piuttosto intense, l'hard disk può andare incontro a rottura a causa di un disallineamento di un qualche cilindro, di uno dei piatti oppure della testina, che non consentirebbe più di leggere correttamente le tracce ed i settori. In questo articolo cercheremo di spiegare come funziona un SSD e, ove possibile, per cosa differisce da un hard disk meccanico. Le semplificazioni effettuate sono state abbastanza marcate, per consentire una semplice comprensione, senza necessità di possedere nozioni tecniche avanzate.

I controller

In un SSD, il controller è un processore embedded che funge da ponte fra la memoria fisica e l'host (nel nostro caso, un semplice computer) che sta utilizzando il dispositivo. Il controller esegue dei comandi forniti da un codice integrato nel firmware del Solid State Drive (un piccolo sistema operativo) per assecondare le richieste del computer. Il controller incide molto sulle prestazioni di un SSD e sulle funzionalità che esso offre. Feature popolari e integrate nel controller sono la lettura, la scrittura, la cancellazione, il controllo errori, la crittazione, il wear-leveling, il garbage collection, il raise e/o l'over-provisioning.

Attenzione a non confondere il controller di un SSD con il controller I/O, come un Serial ATA (SATA), che determina invece come deve essere fisicamente connesso il device ad un host. I Solid State Drive oggigiorno supportano interfacce generalmente SATA 3, mentre si sta diffondendo sempre più lo standard M.2, che consente agli SSD di essere connessi tramite interfaccia PCIe e protocollo NVMe.

Le memorie NAND Flash

Tutti i moderni Solid State Drive utilizzano delle memorie NAND Flash, dei chip utilizzati per conservare le informazioni. Gli SSD di gamma enterprise utilizzano delle celle a singolo livello (single-layer-cell, SLC), mentre quelli appartenenti alla fascia consumer fanno utilizzo di multiple-layer-cell (MLC). Le prime durano di più e sono più veloci, ma sono anche più costose delle seconde.
Poiché non abbiamo nessuna parte in movimento, la scrittura su un Solid State Drive avviene tramite la variazione di un voltaggio, che può scrivere un 1 oppure uno 0 all'interno di una cella. I dati vengono quindi conservati in forma binaria, ma ad ogni modo la modalità in cui si decide in che posizione conservare un determinato dato è scelta attraverso algoritmi piuttosto complessi. L'operazione di lettura è invece molto meno onerosa, a livello di carico computazionale, per il controller dell'SSD, che in questo caso deve effettuare meno lavoro.

Ogni chip di memoria NAND installato in un Solid State Drive differisce dagli altri ed ogni produttore vanta determinate caratteristiche. Uno degli attributi più importanti per le memorie è il numero di volte che possono essere scritte/lette prima che diventino inutilizzabili. Questo parametro è noto come write endurance. Per aumentare il valore di tale specifica il controller dell'SSD usa la tecnica chiamata wear-leveling, che spinge a riempire tutte le celle di un SSD prima di riscriverne una già utilizzata, magari non più utile. Questo perché, a differenza degli HDD, nei Solid State Drive il dato non può essere sostituito, e quindi una cella deve essere prima pulita del tutto per poi diventare pronta a ricevere una nuova informazione.
Questo fa quindi emergere un'altra caratteristica degli SSD, che riguarda l'efficienza con la quale si cancellano i dati. Logicamente, le celle di memoria sono raggruppate in una pagina (tipicamente grossa 4 kB), e le pagine sono raggruppate a loro volta in blocchi (in genere da 512 kB l'uno, ovvero da 128 pagine ciascuno). Il controller dell'SSD è capace di scrivere nelle pagine, ma può solo eliminare tutto il blocco e non la singola page. È chiaro che tale limitazione impone al controller di gestire bene la cancellazione e la memorizzazione dei dati, ed è anche per tale motivo che il controller fa la differenza nella velocità, nell'efficienza e nella durata dei chip di memoria. Per gestire quest'ultimo attributo ci sono alcuni metodi che spesso vengono utilizzati nei prodotti più affidabili e che andremo adesso ad analizzare.

Write amplification, garbage collection e wear-leveling

La write amplification è un fenomeno a causa del quale i dati scritti fisicamente nelle celle dell'SSD sono maggiori rispetto a quelli che logicamente il controller deve scrivere. In parole più semplici, l'SSD scrive più dati di quanto noi gli chiediamo di fare, e ciò impatta chiaramente sulla vita dei chip di memoria. Paradossalmente, però, la write amplification è necessaria per massimizzare proprio la vita dell'SSD e per ottimizzare le sue performance, in quanto i suoi contro sono meno dei suoi benefici.
La write amplification è causata principalmente dall'operazione di garbage collection: prima che il controller possa cancellare un intero blocco che contiene delle pagine non più utili (per preparare quindi il blocco alla scrittura di nuovi dati), la logica prevede che - prima di fare piazza pulita del blocco stesso - i dati contenuti nelle pagine ancora utili devono essere mossi in un altro blocco. Questo fa sì che il controller debba scrivere nuovamente i dati, affinché quelli che sono ancora utili al contesto applicativo non vengono persi.

Il wear-leveling è un'altra tecnica utile a salvaguardare la vita delle celle di memoria, che però aumenta la write amplification. Tale modalità sistema dinamicamente le informazioni così che le riscritture (che provengono magari dalla garbage collection) vengano effettuate in diverse "regioni" dell'SSD, per evitare che vengano sempre utilizzate le stesse celle di memoria. Questo fa sì che nessun blocco arrivi prima degli altri ad essere inutilizzabile per le troppe scritture, raggiungendo il suo tempo massimo di vita.
Alcuni algoritmi di wear-leveling, chiamati di static wear-leveling, sono più raffinati, e spostano le informazioni non impiegate da un po' di tempo verso dei blocchi a basso tasso di utilizzo, così che i cicli di scrittura/lettura delle celle possano essere più uniformi possibili.
Il fenomeno della write amplification, di cui come abbiamo visto sono responsabili principalmente il garbage collection e wear-leveling, è qualcosa che accade in tutti gli SSD, e richiede chiaramente dello spazio libero (che funge da buffer) per lavorare correttamente. È per questo che generalmente si raccomanda di non occupare tutta la memoria a disposizione dell'SSD: essi lavorano meglio con almeno il 20% della loro capacità libera, a meno che non sia presente la modalità di over-provisioning.

L'over-provisioning

L'over-provisioning riserva dello spazio sull'SSD per il controller, e non lo rende disponibile all'utente finale. Il controller usa così questo spazio per effettuare proprio il wear-leveling, il garbage collection oppure qualsiasi altra funzionalità che ottimizza le prestazioni e la durata nel tempo. Tutto quello che fa l'over-provisioning, quindi, è riservare una porzione di memoria, e acquistando un SSD di una data capacità e attivando tale tecnologia si perderà parte dello spazio. Non tutti i Solid State Drive supportano questa feature, anche se sono sempre meno i modelli che non la offrono. Alcuni prodotti, poi, come quelli di Samsung, permettono all'utente di dimensionare la partizione dedicata all'over-provisioning, laddove i suoi concorrenti fanno tutto in automatico, permettendo solo di attivare o disattivare la funzionalità.

Il nostro consiglio è quello di attivare l'over-provisioning, in quanto fa sì che non possiate andare a minare l'efficienza e la durabilità del vostro disco. Anche sui dispositivi di Samsung, comunque, lasciare fare al firmware tutto in automatico (non scegliendo in autonomia le dimensioni dello spazio riservato) è la scelta migliore da fare.

TRIM, RAISE e IOPS

Vediamo in quest'ultimo paragrafo altri parametri legati al funzionamento di un Solid State Drive, dei quali il primo è il TRIM. Esso è un comando progettato per permettere al sistema operativo di trasmettere al controller dell'SSD le pagine che contengono delle informazioni marchiate come cancellate o invalide. Questo aiuta il controller stesso a individuare tali pagine e a non revocare dati su queste durante l'operazione di garbage collection, limitando così il numero di scritture ridondanti. Attivare il TRIM è consigliabile, in quanto riduce anche la write amplification e migliora generalmente le prestazioni.

Altra funzionalità è la RAISE, che però è disponibile solo negli SSD di dotati di controller SandForce. RAISE è l'acronimo di "Redundant Array of Indipendent Silicon Elements" ed è designata a diminuire la comparsa di errori nel disco, ma anche a fornire la crittazione con algoritmo AES. In realtà, RAISE è una feature che è molto più utile sui dischi di classe Enterprise, e sta perdendo un po' di interesse nella fascia consumer: se fate parte della schiera degli utenti classici non è quindi indispensabile acquistare un disco con tale feature abilitata.
L'ultimo parametro di cui parliamo sono le IOPS, cioè le operazioni di input/output per secondo (Input/Output Per Second). Nelle specifiche di un SSD le IOPS massime possibili sono di solito indicate solo per le operazioni in accesso random, cioè mediante le quali si arriva ad una locazione in maniera completamente arbitraria, in modalità non contigua. Il numero di IOPS è un buon parametro a cui guardare per rendersi conto delle performance di un Solid State Drive: più alto è, più è veloce nelle letture/scritture casuali.

Scheda Tecnologia Il funzionamento di un Solid State Drive e, più specificatamente, delle modalità di azione del controller, è qualcosa di molto articolato, che richiede conoscenze tecniche avanzate. A valle delle semplificazioni necessarie in tale articolo, dovreste essere adesso in grado di capire per sommi capi come agisce il controller, a cosa serve, e come si lavora per ottimizzare le prestazioni e la durata di un Solid State Drive. I parametri elencati non sono esaustivi, ma abbiamo preferito parlare solo di quelli che possono avere un impatto più marcato sul funzionamento del disco (eccetto per le IOPS, che sono probabilmente la specifica a cui gli utenti guardano solitamente).