3. SLC, MLC e TLC, quali le differenze?


Agli occhi di chi possiede un minimo di conoscenze di elettronica o di informatica, la prima grande differenza che intercorre tra memorie NAND Flash di tipo SLC, MLC e TLC risulterà facilmente intuibile dall'esplicazione dei loro acronimi:

  • SLC - Single Level Cell (1 bit per cella, 2 livelli di tensione)
  • MLC - Multi Level Cell (2 bit per cella, 4 livelli di tensione)
  • TLC - Triple Level Cell (3 bit per cella, 8 livelli di tensione)

Una singola cella NAND rappresenta l'unità elementare di memorizzazione nei moderni SSD ed è costituita essenzialmente da un transistor un po' particolare.

Questo tipo di transistor è infatti dotato di due gate: oltre a quello classico, possiede anche un secondo gate di tipo flottante (floating gate).

Tale gate, in genere con capacità conduttive e di tipo poli-siliconico, altro non è se non un piccolo spazio isolato in grado di trattenere, o meno, della carica elettrica, con l'ulteriore ed essenziale proprietà di mantenerla inalterata per un determinato periodo di tempo (Data Retention).

Le NAND Flash di tipo SLC adottano una corrispondenza diretta tra la presenza/assenza di carica nel gate flottante ed i singoli valori binari, "1" o "0", assegnati logicamente ai due diversi stati.

Al momento, infatti, di dover leggere quanto memorizzato in una NAND SLC, dovrà esser valutata soltanto l'esistenza, o meno, di carica elettrica all'interno del gate e la circostanza potrà comunque portare ad uno solo dei due valori digitali.

Per quanto invece concerne la fase di scrittura, prima ancora che un diverso stato elettrico possa esser mutato con un procedimento di programmazione della cella (cosiddetto di "Tunnel Injection"), quest'ultima dovrà innanzitutto esser svuotata, ovvero azzerata della propria carica, tramite un procedimento di cancellazione (definito "Tunnel Erase").

Solo in una fase successiva la cella potrà nuovamente esser caricata elettricamente qualora le si volesse imporre il valore "1", oppure esser lasciata priva di carica per identificare il valore di "0" binario.

Questo tipo di tecnologia ad un singolo bit per cella, pur permettendo eccellenti prestazioni, non consente di produrre unità allo stato solido di elevata capacità a prezzi comprensibilmente accettabili.

Per un SSD con NAND Flash di tipo SLC diventa infatti condizione essenziale disporre di quantitativi elevati di memorie e tale circostanza, di conseguenza, diviene economicamente sconveniente, relegandole di fatto all'utilizzo a bordo di costose unità di classe Enterprise.

La prima evoluzione verso uno scenario maggiormente produttivo è stata quella dell'adozione di celle di tipo multilivello (MLC).

Queste celle sono costruite pur sempre con dispositivi a semiconduttore identici a quelli utilizzati nelle SLC, ma tali transistor sono anche capaci di memorizzare al proprio interno una quantità doppia di informazioni: due bit per singola cella.

Questa caratteristica viene ottenuta riuscendo a controllare la carica da trasferire alla cella tramite livelli differenti e ben precisi di tensione, arrivando così a differenziarne l'uso con soglie equidistanti di quantità di carica da impostare sul gate flottante.

Ad ognuno di questi valori di tensione (compreso lo stato di assenza) sarà quindi possibile aver modo di associare uno dei quattro valori binari "00" "01" "10" e "11", utilizzabili appunto tramite due bit.

Allo stato della tecnologia attualmente utilizzabile, non risulta però ancora possibile estrapolare in maniera diretta il valore del livello di carica su un gate flottante, e questo rende sensibilmente più lente le operazioni di lettura rispetto alle NAND SLC.

E' stato infatti necessario usare dei complessi algoritmi per portare a termine, a livello elettrico, una strategia di verifica di tipo comparativo.

Questa consiste, in sintesi, nell'assumere preventivamente un valore ben definito di tensione, prenderlo come riferimento e valutare, tramite una serie di comparazioni, se il relativo livello di carica all'interno della cella sia superiore o inferiore alla serie dei valori soglia.

Anche le nuove TLC operano, del resto, in maniera del tutto simile alle MLC, ma è stato possibile impiegare ben otto distinte soglie di tensione (compreso il valore inerente l'assenza), in modo da poter usufruire di altrettante permutazioni su base binaria, tre bit per ciascuna cella, portando a memorizzare singolarmente uno dei valori "000", "001", "010", "011", "100", "101", "110" e "111".


OCZ ARC 100 240GB 3. SLC, MLC e TLC, quali le differenze? 1


A motivo di ciò, per risalire al reperimento del singolo dato contenuto nel floating gate delle memorie NAND, è facile intuire come si rendano necessarie una serie di "n" differenti controlli a seconda della tipologia utilizzata: almeno tre per le TLC, due per le MLC, mentre nelle SLC, come abbiamo già visto, è sufficiente una sola verifica.

Appare chiaro come, a motivo di questa attività aggiuntiva, le TLC siano prestazionalmente penalizzate in lettura, anche rispetto alle MLC.

Questo è nello specifico il motivo per cui le complesse celle multilivello hanno prestazioni in lettura sempre più basse rispetto alle semplici, ma veloci, SLC: la circostanza negativa si massimizza nei frangenti in cui è necessario l'accesso casuale a numerosi file di piccole dimensioni.

E' facile a questo punto comprendere il perché la dimensione dei famosi 4kB viene utilizzata come base di valutazione prestazionale nella pressoché totalità degli attuali benchmark del settore: 4kB è da tempo istituita come standard di unità di allocazione nei file-system dei moderni sistemi operativi.

Per quanto concerne la scrittura, il discorso si fa ancora più complesso: prima di poter inviare un diverso livello di tensione sulla cella, infatti, la precedente carica dovrà necessariamente esser cancellata.

Alla luce dei diversi livelli possibili di tensione dovrà, pertanto, esser considerato anche un più affinato e preciso procedimento nella generazione del corretto valore di tensione tra le diverse soglie di carica.

Alla luce di quanto detto, le attività di lettura nelle NAND TLC risulteranno non solo almeno 1/3 più lente rispetto alle MLC, ma soprattutto soggette ad una serie di ulteriori disturbi che potrebbero generare una percentuale sensibilmente maggiore di errori rispetto al passato e tali da necessitare di algoritmi di correzione di errore maggiormente complessi.

Ad appesantire questa già non rosea situazione sulle complessità operative, bisogna anche valutare la relativa riduzione della stima sulla durata di esercizio delle NAND TLC, quantificabile in un numero di cicli di scrittura ridotti ad 1/3 delle MLC.

Le moderne TLC sono accreditate, infatti, di ~1000 cicli di scrittura, rispetto ai ~3000 delle MLC e ai ~100.000 cicli utili delle migliori SLC.

E' possibile comunque affermare che il progressivo affinamento del processo produttivo è riuscito in qualche modo ad incidere globalmente anche sulle prestazioni degli SSD.

In particolare, i produttori hanno lavorato sulla riduzione dei tempi di latenza e su quelli necessari a programmare e cancellare le celle di memoria, usando opportunamente diverse e più efficienti strategie di agglomerazione in pagine e blocchi.

In seguito, hanno puntato su velocità del bus memoria-controller maggiori e all'aumento del numero di canali di comunicazione, passando poi attraverso il miglioramento delle tecnologie di Interleaving ed all'affinamento degli algoritmi implementati nel firmware per la correzione degli errori e la gestione del Wear Leveling.

Del resto, le suddette migliorie sono fattori che hanno comunque inciso in maniera positiva anche sulla longevità delle moderne celle multilivello.

Ma allora, in pratica, cosa cambierebbe per l'utente nell'acquisto di un SSD con memorie NAND Flash TLC piuttosto che MLC o SLC?

La risposta appare a questo punto scontata: prestazioni inferiori, un maggior Bit Error Rate (BER), minor longevità in assoluto ma, d'altro canto, la possibilità di acquistare unità di dimensioni più elevate ad un prezzo tutto sommato più contenuto.

Per giungere ad una quantificazione delle differenze prestazionali, prendiamo alcuni SSD Samsung come spunto per un sintetico riepilogo delle prestazioni in lettura e scrittura sequenziali:

  • Samsung 830 256GB - (MLC 27nm) - 520/400 MB/s
  • Samsung 840 250GB - (TLC 21nm) - 530/240 MB/s
  • Samsung 840 Pro 256GB - (MLC 21nm) - 540/520 MB/s

A parità di capacità, i modelli 840 con NAND TLC hanno una velocità in scrittura decisamente inferiore ai rispettivi modelli con memorie MLC; il deficit si mantiene sensibile anche nei confronti di unità della generazione precedente a 27nm (830).

Al fine di indicare la teorica longevità di questi drive è necessario introdurre il concetto di TBW (Total Byte Written, espresso in Terabyte) che esprime la quantità di dati scrivibili su un SSD.

A sua volta, il TBW dipende direttamente dalla capacità e dal numero di cicli P/E (Program/Erase, ovvero scrittura/cancellazione) accreditati alle celle di memoria NAND.

Per giungere ad un confronto in condizioni di normale utilizzo, potendo quindi adottare un fattore di Write Amplification pari a 1, basterà calcolare il prodotto della capacità in Gigabyte per il numero dei cicli P/E, dividendolo infine per mille:

TBW TB = (CAPACITA' in GB) x (CICLI P/E) / 1000

Per stimare invece la durata in anni, basterà dividere il valore, espresso in Terabyte, di TBW per il carico di lavoro espresso in Gigabyte (GB/Day), ovvero la quantità di dati che presumibilmente verranno scritti giornalmente; questa verrà, poi, a sua volta moltiplicata per mille, diviso il numero di giorni che compongono un anno:

LONGEVITA' ANNI = (TBW TB) / (GB/Day) * (1000/365)

Ipotizzando quindi un carico di lavoro medio in scrittura pari a circa 20GB giornalieri, possiamo infine stimare sia la quantità di dati scrivibili (TBW) in Terabyte, che la longevità in anni:

  • Samsung 830 256GB (MLC 27nm, 3000 P/E) 768 TB (105 anni)
  • Samsung 840 250GB (TLC 21nm, 1000 P/E) 250 TB (34 anni)
  • Samsung 840 Pro 256GB (MLC 21nm, 3000 P/E) 768 TB (105 anni)
  • Samsung 840 EVO 240GB (TLC 19nm, 1200 P/E) 288 TB (40 anni)
  • OCZ ARC 100 240GB (MLC A19nm, 3000 P/E) 720 TB (96 anni)

Naturalmente, teniamo a specificare che dovrebbe trattarsi di stime decisamente approssimative, in quanto non è possibile tener conto dell'effettivo e tipico utilizzo di una qualsiasi specifica unità di memorizzazione che potrà differire, anche di molto, da utente a utente.

I dati di tali stime si basano, infatti, su riscontri generici forniti dal produttore e, pertanto, potrebbero verosimilmente discostarsi anche in misura considerevole da quelli effettivi del singolo utilizzatore.

Ci sembra utile aggiungere che, sebbene si fosse in grado di riuscire a scrivere una quantità di dati cinque volte superiore a quella preventivata poco sopra, la durata di un qualsiasi modello di SSD fornito di memorie NAND Flash TLC, risulterebbe sufficiente alla quasi totalità delle esigenze di un ipotetico e moderno utente medio.

Ad ogni buon conto, ci sentiamo senz'altro di poter tranquillizzare, in ultimissima analisi, tutti i potenziali futuri utilizzatori di SSD: adoperando l'unità in prova ed attuando tutti gli accorgimenti e le precauzioni da dedicare in base al sistema operativo in uso, la durata potrà essere con ogni probabilità anche superiore a quella raggiungibile da un qualsiasi moderno disco fisso di tipo tradizionale (meccanico-magnetico), persino di classe Enterprise, presente sul mercato.