
Retroscena
Prova dello Snapdragon X Elite: le prestazioni del Microsoft Surface Pro e del portatile
di Martin Jud
L'unità SSD sta via via sostituendo il disco rigido come dispositivo primario di archiviazione di massa. I vantaggi in termini di velocità e mobilità sono evidenti: i dati non vengono più letti e scritti meccanicamente, ma elettricamente. Ma, esattamente, come funziona?
Ogni anno compaiono nuove generazioni di processori che promettono passi da gigante nelle prestazioni. Tuttavia, il consumatore normale di solito non se ne rende conto. Con l'SSD è completamente diverso. Il passaggio da HDD a SSD risulta effettivamente evidente in ogni tipo di impiego.
Ai bei vecchi tempi, quando accendevo il PC, ero solito andare a prendermi un caffè prima di poter iniziare a lavorare. Il processo di avvio durava un’eternità, e non sto esagerando. Non puoi immaginare quindi quanto sia rimasto stupito quando ho provato per la prima volta ad avviare un notebook con SSD. Era un po’ come la differenza tra un tram e un treno intercity in fatto di velocità. O tra lo Slow Food e il Fast Food. Oppure tra il correre e lo stare fermi.
Ma cosa rende l'SSD così veloce? A differenza del disco rigido, le unità SSD non hanno testine di lettura/scrittura e piatti rotanti. Ogni blocco di un SSD è accessibile alla stessa velocità, indipendentemente che essi si trovino uno accanto all'altro o su un altro modulo. Questo spiega anche perché deframmentare un SSD non ha senso. I tempi di accesso sono più brevi e le velocità di lettura/scrittura più elevate.
Ho avuto l'idea di occuparmi della funzionalità delle unità SSD durante la stesura del mio articolo sulla Storia dell'HDD. All'inizio volevo scrivere qualcosa sul ciclo di vita delle unità SSD. Mentre facevo delle ricerche, cominciai tuttavia a irritarmi sempre di più: ovunque c’era scritto che le NAND flash (la tecnologia di memorizzazione delle unità SSD) si usurano nel tempo, ma non veniva spiegato esattamente come. Qual è il processo fisico che porta a questo fenomeno?
Fu così che decisi di scrivere un articolo su come funziona l'SSD. Se capiamo esattamente come funziona un’unità SSD, possiamo capire perché si usura. E anche altre domande, che spesso sorgono in merito alle unità SSD, avranno poi così un senso. Ad esempio, perché le unità SSD possono effettivamente rallentare quando non hanno molto spazio a disposizione.
Ma basta con le parole. Entriamo nel vivo della questione. Un piccolo avvertimento: alcune parti potrebbero essere molto tecniche. Un Solid State Drive è costituito da una scheda elettronica con interfaccia (ad es: SATA, PCIe, SATA-Express), memoria NAND flash, a seconda dell'SSD con memoria cache, controller e firmware. L'SSD è controllato da un protocollo (AHCI o NVMe). Iniziamo con le NAND Flash.
A differenza dell'HDD, la memoria NAND flash legge/scrive elettronicamente i dati. La NAND flash è caratterizzata da un'elevata densità di memoria e dal backup non volatile dei dati. In pratica fa quello che fanno i piatti del disco rigido: memorizza i dati in modo permanente. Ciò avviene generando e leggendo la tensione.
Un blocco NAND è costituito da Bit Line e Word Line. Le Bit Line corrono parallele l'una all'altra. Sono fatte di silicio e sono separate l'una dall'altra da una cosiddetta Shallow Trench Isolation («Isolamento di trincea superficiale», in breve STI). Le Word Line sono perpendicolari alle Bit Line. Su di esse si trova il Control Gate e sono costituite da polisilicio. Nel punto dove Bit Line e Word Line si sovrappongono si trova la cella di memoria.
Le singole celle di memoria sono i cosiddetti transistor a effetto di campo in tecnologia MOS (FGMOS, Floating Gate Metal Oxide Semiconductor Field Effect Transistors). Il Floating Gate si trova tra il Control Gate e la Bit Line. Si tratta di uno strato a semiconduttore isolato elettricamente che immagazzina la carica e galleggia nello strato isolante. Gli elettroni presenti nel Floating Gate non si scaricano per diversi anni (da due a dieci anni), anche in assenza di tensione.
Diamo un'occhiata più da vicino all'interfaccia tra Bit Line e Word Line (e quindi, più precisamente, lungo la Word Line). Il Control Gate è collocato intorno al Floating Gate. I due gate sono separati da uno strato di ossido-nitruro-ossido (ONO). Sotto il Floating Gate si trova la zona di ossido di tunnel (un non conduttore). Al di sotto troviamo la Bit Line con sorgente e scarico.
Le celle di memoria di una World Line sono concentrate in una pagina dati. Le pagine dati sono le unità più piccole di un SSD che possono essere lette o scritte. Queste possono avere dimensioni di 2 KB, 4 KB, 8 KB o 16 KB, a seconda del processo di produzione o del tipo di flash.
Più pagine vengono agglomerate in blocchi. Per blocco ci sono tra le 128 e le 256 pagine. Un blocco è la più piccola unità di memoria che può essere cancellata. Tecnicamente, questo sarebbe possibile anche a livello di pagina. Tuttavia, la tensione necessaria a tal fine graverebbe sulle celle di memoria a tal punto che il ciclo di vita sarebbe più breve che se le celle di memoria fossero cancellate a livello di blocco (di seguito segue una descrizione più dettagliata dell'usura delle celle di memoria).
I blocchi a loro volta sono solitamente divisi in due livelli per modulo flash (detto anche die). I moduli sono posizionati sulla scheda, dove sono legati al controller attraverso quattro fino a dieci canali.
Come detto, si può cancellare solo a livello di blocco. Per aggiornare una pagina è necessaria la seguente procedura: il contenuto del blocco su cui è posizionata la pagina deve essere copiato, il blocco deve essere cancellato e il contenuto del vecchio blocco con la pagina aggiornata memorizzato in un nuovo blocco. Mentre le unità SSD possono scrivere e leggere i dati molto rapidamente, il processo di cancellazione e riscrittura è molto più lento (ma comunque molto più veloce rispetto ai dischi rigidi). Se l'unità SSD risulta quasi piena e non sono disponibili pagine vuote, l'unità SSD deve prima cercare i blocchi che possono essere cancellati. Ecco perché più le unità SSD sono piene, più possono diventare lente. Per contrastare questo fenomeno, gli SSD Controller dispongono oggi di diversi meccanismi. Parleremo in seguito delle funzionalità del Controller.
In parole povere, la memoria flash memorizza i dati collocando gli elettroni o rimuovendoli dal Floating Gate. I bit vengono letti utilizzando la tensione. Se nel Floating Gate sono presenti elettroni, il bit ha il valore 0. Se non ci sono elettroni nel Floating gate, il bit ha il valore 1. Le celle di memoria sono considerate vuote o cancellate se hanno il valore 1 e scritte se hanno il valore 0.
E come funziona di preciso? Cominciamo con la lettura.
L'elemento chiave durante la lettura è che il Floating Gate a carica negativa (cioè quando gli elettroni sono nel Floating Gate) agisce contro la tensione positiva che dovrebbe passare attraverso il Control Gate. Ciò significa che con un valore di bit 0, è necessaria una tensione maggiore per superare il valore limite in modo che la corrente fluisca attraverso il Control Gate. Questa tensione si chiama VT0. La tensione richiesta al valore di bit 1, cioè quando la corrente attraversa il Control Gate, è chiamata VT1. Per leggere il valore, deve essere inviata una tensione tra VT0 e VT1, detta VR, attraverso il Control Gate e la corrente misurata. Se la corrente scorre attraverso il Control Gate si ottiene il valore di bit 1, se non scorre nessuna corrente si ottiene il valore di bit 0. Questo vale per SLC-NAND. Con MLC- NAND o TLC-NAND sono necessari diversi VR per la misurazione. Troverai ulteriori informazioni su come distinguere tra SLC, MLC e TLC sotto il titolo corrispondente.
Quando si cancella, gli elettroni vengono rimossi dal Floating Gate e il valore di bit viene settato allo stato normale 1. Non c'è alcun contatto elettrico con il Floating Gate. Quindi, come vengono rimossi gli elettroni? Devono in qualche modo passare attraverso lo strato di ossido che separa il Floating Gate dalla Bit Line. È qui che entra in gioco l'effetto tunnel. Questo consiste nell’applicare un'alta tensione negativa alla sorgente e al Control Gate. In questo modo gli elettroni vengono estratti dal Floating Gate e trasferiti alla sorgente grazie all’effetto tunnel.
Durante la scrittura, gli elettroni vengono trasferiti al Floating Gate e viene settato il valore di bit 0. Quando si applica un'alta tensione positiva al Control Gate e un'altra tensione allo scarico, gli elettroni possono raggiungere il Floating Gate attraverso lo strato di ossido. Questo processo si chiama Hot Electron Injection.
Una cella di memoria assume di solito solo due stati: carico o scarico – oppure scritto (ovvero programmato) o cancellato. Questa informazione è della grandezza di un bit. È possibile aumentare la densità di stoccaggio memorizzando diversi stati. Ciò può essere ottenuto con diversi livelli di tensione. Il Single Level Cell (SLC) memorizza solo un bit per cella di memoria. Il Multi Level Cell (MLC) memorizza due bit per cella di memoria e il Triple Level Cell ne memorizza tre. Ciò influisce sulla velocità di lettura/scrittura nonché sulla durata.
Poiché viene memorizzato solo un bit per cella di memoria, la percentuale di errore è molto bassa. Per la lettura e la scrittura sono necessari solo due livelli di tensione, il che assicura un'elevata velocità e mantiene basso il consumo energetico. Con l'SLC flash, si presume una durata di 100 000 cicli di scrittura per blocco.
La maggiore densità di memoria comporta anche meno celle di memoria per una maggiore capacità. Ciò significa che l'MLC flash può essere prodotto a basso costo, ma anche che la scrittura e la lettura richiedono più tempo e che la durata della vita diminuisce. Le celle di memoria devono resistere a quattro livelli di tensione e il controller deve essere in grado di leggerle. Questo fa sì che le celle si usurino più rapidamente e che la scrittura/lettura richieda più tempo perché diventa più complessa. A causa della maggiore complessità, gli errori sono pertanto più frequenti. Qui i controller devono impegnarsi di più. Con l'MLC flash si presume una durata di 3000 cicli di scrittura per blocco.
Nel TLC flash le differenze rispetto all'SLC e all'MLC sono ancora più evidenti. La produzione di TLC è ancora più economica di quella di MLC. Le celle di memoria devono resistere a otto livelli di tensione. Rispetto all’SLC, la lettura richiede circa quattro volte più tempo e la scrittura sei volte di più. La durata si basa su 1000 cicli di scrittura per blocco.
Come già accennato, la scrittura può avvenire solo su una cella di memoria vuota o cancellata. Non è possibile sovrascrivere i dati in senso stretto. Quando viene apportata una modifica, i dati devono prima essere cancellati e poi riscritti. Per questo motivo si parla di cicli di scrittura quando si fa riferimento alla durata della vita.
Per la scrittura il Floating Gate è esposto a una tensione elevata, necessaria per superare lo strato di ossido. Durante questo processo, la coibentazione viene danneggiata a ogni accesso in scrittura, fino a quando non riesce più a isolare correttamente. A questo punto, i dati non possono più essere memorizzati in modo affidabile e la cella di memoria diventa inutilizzabile. Questo è anche il motivo per cui gli MLC flash e i TLC flash sono meno duraturi degli SLC flash. Per la scrittura è necessaria una tensione più elevata, che sollecita maggiormente lo strato di ossido; inoltre, le differenze tra i livelli di tensione e la lettura sono minori. Se lo strato di ossido non isola più correttamente, non è più leggibile in modo affidabile.
Esistono molti articoli/test sulla durata delle unità SSD e sui cicli di scrittura/cancellazione. Ma non voglio addentrarmi troppo in questi argomenti. Per farla breve: la maggior parte dei test dimostra che le unità SSD spesso durano molto più a lungo di quanto specificato dai produttori. Ad esempio, un Samsung 850 Pro da 250 GB ha ottenuto un risultato straordinario nello stress test di c't. Sono stati scritti in totale 9,1 petabyte sull'SSD, il che corrisponde a un tempo di funzionamento di oltre 620 anni con un carico d'ufficio quotidiano.
La memoria flash delle unità SSD offre quindi alcuni vantaggi rispetto agli HDD. Tuttavia, come è emerso chiaramente nella descrizione di cui sopra, le unità SSD richiedono meccanismi di controllo molto complessi per funzionare. Ed è qui che entrano in gioco i Controller con il firmware. Spesso, i Controller dispongono di una RAM integrata che li aiuta a elaborare i dati. Molte unità hanno anche una cache che funge da buffer. Il Controller gestisce processi quali il Garbage Collection, il Wear Leveling e così via. I processi più significativi verranno illustrati più avanti. Purtroppo, non è possibile esaminare in modo troppo approfondito le funzioni dei Controller. Ciò è dovuto al fatto che le unità SSD differiscono maggiormente nelle capacità dei controller e del firmware, pertanto i produttori non sono molto sicuri della loro esatta funzionalità.
Poiché le unità SSD scrivono i dati sulle pagine, ma cancellano i blocchi, vengono sempre scritti più dati di quanto sia necessario per un aggiornamento. Ad esempio, se faccio una modifica a un file da 16 KB, l'intero blocco dove si trova il file da 16 KB deve essere cancellato e riscritto. A seconda del numero di pagine per blocco e delle dimensioni delle pagine, devono essere scritti molti più dati rispetto ai 16 KB. La Write Amplification si riferisce alla relazione tra i dati da scrivere e i dati effettivi. Per contrastare questo effetto, esistono il processo Garbage Collection e il TRIM.
Il processo in background Garbage Collection esiste per contrastare il fenomeno del rallentamento dell'SSD quando la capacità di memoria è bassa. In questo processo, i blocchi incompleti vengono copiati e fusi con altri blocchi incompleti in nuovi blocchi completi. I vecchi blocchi vengono poi cancellati e sono di nuovo liberi per essere scritti. Il processo di Garbage Collection entra in gioco quando gli accessi all'unità SSD sono pochi o nulli.
Per comprendere meglio la funzione TRIM, è necessario prima di tutto chiarire come vengono cancellati i dati da un disco rigido. Al momento della cancellazione dei dati da un disco rigido, i dati non vengono eliminati immediatamente. Il sistema operativo indica all'HDD che la posizione fisica può essere sovrascritta la prossima volta che si salva. Pertanto, è possibile ripristinare i file già cancellati. In un SSD non è necessario che il sistema operativo indichi dove sono scritti i dati e in quale stato si trova la pagina o il blocco. Il comando TRIM consente al sistema operativo di comunicare all’SSD Controller che non deve più scrivere determinati dati quando si cancella e si riscrive un blocco. In questo modo, l'unità SSD riceve meno dati e il ciclo di vita viene aumentato.
Il Wear Leveling assicura che alcuni blocchi non siano scritti e cancellati più frequentemente di altri. Se, da un lato, ciò permette di aumentarne il ciclo di vita, poiché alcuni blocchi non sono sottoposti a sollecitazioni eccessive; dall’altro può tuttavia anche portare a una maggiore Write Amplification. Per distribuire uniformemente i cicli di scrittura, a volte è necessario cancellare un blocco anche se il suo contenuto non è cambiato. Il Wear Leveling deve quindi trovare un equilibrio. Le unità SSD dispongono anche di una cosiddetta Spare Area per il Wear Leveling. Si tratta di un'area dati non visibile dal sistema operativo. Quest'area è disponibile anche per la sostituzione di blocchi difettosi.
Nonostante alcune sfide, il NAND flash offre enormi vantaggi rispetto ai dischi rigidi. Due di queste sfide sono già state trattate: il ciclo di vita e il rallentamento delle unità SSD. A queste si aggiunge il fabbisogno di spazio relativamente elevato. Con le tradizionali NAND è stata raggiunta una maggiore capacità grazie a larghezze di struttura più piccole. La criticità è rappresentata dal fatto che più piccola è la larghezza della struttura, più sensibile diventa il Floating Gate e maggiore risulta il consumo energetico. Una minore larghezza della struttura significa anche che meno elettroni entrano nelle celle di stoccaggio e , allo stesso tempo, che lo strato di ossido diventa più sottile. In altre parole, si usura più velocemente. Questo ha un effetto negativo sulla probabilità di errore e sul numero di cicli di scrittura.
Altri modi per collocare più memoria in uno spazio più piccolo sono già stati illustrati nei paragrafi dedicati all’MLC e al TLC. Ma anche in questo caso, a un certo punto si raggiunge un limite fisico. Per concludere, vorrei esaminare due sviluppi che hanno migliorato e continueranno a migliorare la capacità di memoria e la velocità delle unità SSD.
Nel design planare di NAND, le celle di stoccaggio orizzontali sono vicine tra loro. Nel design 3D-NAND, le celle di memoria sono disposte una sopra l'altra e collegate verticalmente. Ciò consente una maggiore capacità di stoccaggio. Grazie alla disposizione verticale è possibile ricavare più spazio fisico nella larghezza. Nel Floating Gate c'è quindi più spazio per gli elettroni. Ciò significa che è necessaria una tensione minore per la cancellazione, la scrittura e la lettura. Il sistema è anche meno soggetto a errori: grazie allo spazio per più elettroni, sono possibili più livelli di tensione nel Floating Gate, i quali possono dunque essere letti meglio. Oggigiorno il design 3D è già uno standard per molte unità SSD.
Le unità SSD possono essere collegate tramite diverse interfacce. Oltre ai vecchi standard SATA e SAS, PCIe sta diventando sempre più popolare, dal momento che sia la porta SATA che il protocollo AHCI limitano la velocità delle SSD (velocità massima di trasferimento di 600 MB/s). PCIe (Peripheral Component Interconnect Express) e il protocollo NVMe offrono velocità di trasferimento più elevate rispetto a SATA o SAS perché ci sono più canali che consentono il flusso di dati. A differenza di SATA, una porta PCIe 3.0, ad esempio, offre una velocità di trasferimento di 1000 MB/s con un canale di trasmissione.
Il protocollo AHCI non rende ormai più giustizia a queste elevate velocità di trasferimento. Per questo motivo è stato sviluppato il protocollo NVMe. L’NVMe è progettato per ridurre i ritardi del 50%. Questo perché uno stack driver NVMe presenta una struttura più semplice e lavora in maniera più efficiente. D'altro canto, il protocollo offre 65536 code di I/O con 65536 comandi ciascuna. Il protocollo AHCI dispone invece di una sola coda con 32 comandi, il che permette di di elaborare molti comandi in parallelo. Con NVMe è possibile trasferire grandi quantità di dati più velocemente, avviare i sistemi operativi più velocemente, ridurre i tempi di caricamento dei programmi e migliorare i tempi di risposta del sistema.
La velocità di trasferimento teorica di 4 GB/s della porta PCIe 3.0 a quattro canali di trasferimento viene già oggi quasi del tutto esaurita. Il nuovo Samsung 970 Pro, ad esempio, raggiunge valori di picco di circa 3,5 GB/s. Lo standard PCIe 4.0 è stato lanciato nel 2017. Sono possibili fino a 2000 MB/s per canale di trasmissione. Lo standard PCIe 5.0 è già in corso di progettazione. La velocità di trasmissione dei dati dovrebbe nuovamente raddoppiare. In futuro, la memoria di massa offrirà non solo più spazio di archiviazione, ma anche velocità molto più elevate.
Tecnologia e società mi affascinano. Combinarle entrambe e osservarle da punti di vista differenti sono la mia passione.