Se guardiamo ai vantaggi, i drive SSD sono fenomenali: consumano molta meno energia delle loro antiche controparti, i dischi rigidi tradizionali, hanno velocità di lettura e, in parte, di scrittura molto più rapide (tra un attimo vedremo perché la scrittura non è poi così veloce, rispetto alla lettura), sono molto meno soggetti alla frammentazione, non scaldano, non hanno parti meccaniche in movimento. Non è un caso se i drive SSD vengono usati, nonostante siano molto costosi e abbiano una vita operativa relativamente più breve, anche nei server. Infatti, per distribuire ad esempio i dati di un grosso database a decine di migliaia di utenti collegati, gli SSD sono la soluzione ideale per aumentare la velocità. E fra poco lo saranno ancora di più.
In un’altra occasione daremo una spiegazione più dettagliata di com’è fatta e come funziona nel dettaglio una unità SSD. Per adesso, guardiamo al modello più diffuso, quello costruito su tecnologia NAND, prevalentemente con tecnologia multi-level cell (MLC) ovvero anche con tecnologia più costosa SLC (single-level cell). Anche le unità SSD di tipo NAND (cioè che usano una memoria non volatile e flashabile di tipo simile a quelle delle chiavette di memoria, contrapposta alle memorie volatile Dram, ben più veloci ma anche costose) hanno una loro piccola memoria Dram per fare da cache, come accade nei dischi rigidi tradizionali, anche se adesso vengono progettati tipo di memoria SSD senza la cache, per facilitare la miniaturizzazione e senza perdita di performance.
Nei computer fissi e portatili vengono solitamente usate unità SSD a forma di disco da 2,5 pollici, anche se è una convenzione più che altro per facilitare l’aggancio nella baia interna e aumentare la compatibilità con gli spazi pre-esistenti. Però Apple ha dimostrato anche qui che si può innovare con il MacBook Air, che ha una memoria SSD di Samsung di forma completamente diversa.Comunque, l’aspetto che ci interessa vedere, dopo questa lunga introduzione, è uno e particolare: la presenza o assenza del comando TRIM all’interno del controller dell’unità SSD e quindi del suo supporto nel sistema operativo che ospita e gestisce l’SSD in questione.
La maggior parte degli SSD di oggi supportano il TRIM o possono vedere aggiornato il loro firmware a versioni più recenti per usarlo. I sistemi operativi che lo supportano fino a questo momento sono due: Linux e Windows 7. Manca Mac OS X, anche se dal System Profiler, alla voce Serial-Ata, tra gli elementi che descrivono gli SSD (ovviamente bisogna avere una unità SSD al posto del disco rigido tradizionale) compare la voce “Supporto TRIM” seguita da un triste “No”. Ma cos’è il TRIM e perché sarà importante averlo a bordo? Innanzitutto chiariamo un punto: si vive bene anche senza. La differenza è che avendo questo comando e le funzionalità connesse, si vive meglio. L’utente non si accorge della differenza, ma l’unità SSD si. Perché dipende dal modo in cui vengono scritti e soprattutto cancellati i dati.
In sostanza, i dischi flash hanno un problema nel modo in cui scrivono e soprattutto cancellano (e quindi anche formattano) i dati dall’unità. Sono fisicamente diversi da un disco, nel senso che non ci sono dischi in rotazione, bracci e testine che si muovono e settori lungo cerchi concentrici di cui avere cura. La logica di basso livello con la quale i dati sono organizzati nei chip delle SSD, cioè il modo in cui gli elettroni dei bit sono salvati, è molto diversa. Nei sistemi Flash di tipo NAND i dati sono scritti in “pagine” di circa 4 Kb l’una, raggruppate ulteriormente in blocchi di 128 pagine (cioè 512 Kb). Per la tecnologia Nand, questo è molto comodo perché consente di leggere rapidamente i dati e indirizzarli in uno dei dieci o più canali con i quali la memoria SSD comunica con il bus dati e quindi con il processore. Peccato però che, a basso livello, sia possibile scrivere i dati solo quando il blocco è vuoto. E il blocco è vuoto non quando si è cancellato il suo indirizzo dalla directory, bensì quando sono stati piallati i bit dentro tutte le pagine del blocco. E non si possono cancellare e poi scrivere solo alcune pagine, bensì tutto il blocco, a livello hardware.
Cosa succede? Per l’operatore niente, perché controller e interfaccia del sistema operativo sono su due piani completamente diversi: noi copiamo, apriamo, scriviamo documenti (e il sistema operativo per quel che lo concerne fa la stessa cosa senza che ce ne accorgiamo) come prima. Però il controller deve interfacciarsi con una tecnologia che, anziché avere una latenza nel movimento delle testine per andare a leggere o scrivere i dati, ha una latenza diversa a seconda che io legga oppure scriva i dati. Anche perché scrivere vuol dire che l’SSD prima si assicuri di avere spazio libero, cioè un blocco vergine, sennò deve copiare il contenuto da un’altra parte, pulire, scrivere i nuovi dati. E copiando da un’altra parte deve ripetere la procedura. Il fenomeno si chiama “Write amplification”, amplificazione della scrittura, e può creare catene molto lunghe di scritture e cancellazioni, prima di finire una semplice operazione. In questo modo, con il passare del tempo, le performance degradano. È una forma di frammentazione diversa a quella dei dischi rigidi, meno grave, ma altrettanto fastidiosa.
Ecco perché è stato sviluppato TRIM, il comando che permette al sistema operativo di informare l’unità SSD quali blocchi (e quindi pagine) di dati non sono considerati più in uso (perché cancellati, perché ridondanti etc) e quindi che si possono cancellare. Nel tempo libero, cioè quando l’SSD non è in uso per leggere o scrivere cose necessarie al processore, il comando TRIM provvede quindi a fare quel che è necessario per ottimizzare la vita delle celle: butta via la spazzatura e fa spazio. I singoli produttori di SSD hanno realizzato anche sistemi proprietari per ottimizzare l’utilizzo degli SSD, con modi differenti di “garbage collection”, di raccolta ed espulsione della spazzatura. TRIM però è il più diffuso universalmente, il più efficiente e quello che sia Intel che Western Digital (grazie all’acquisita SiliconSystems) hanno studiato e che oggi fa parte delle specifiche standard ATA, che a sua volta è l’interfaccia usata con varianti di vario genere dai produttori di schede madri oltre che da unità di memoria.
Interessante notare anche che in realtà sia possibile attivare il comando TRIM anche tramite utility, se il sistema operativo non lo consente. Mentre non è possibile usarlo su unità SSD in Raid né su immagini di dischi (macchine virtuali, ad esempio). FreeBSD implementa completamente il TRIM a partire dalla fine di gennaio, così come OpenSolaris. Linux dal febbraio del 2010 (kernel 2.6.33) e Windows addirittura da ottobre del 2009. Apple non ha rilasciato informazioni ufficiali su quando voglia implementare TRIM nel suo sistema operativo (la cui mancanza, ripetiamo, non impatta assolutamente l’usabilità delle unità SSD) ma vari sviluppatori in rete segnalano che l’interessamento ci sia e che sicuramente TRIM sarà presente in Mac OS X 10.7 Lion e forse anche in qualcuna delle prossime release di Snow Leopard (probabilmente nell’ultima, se ci sarà, cioè la 10.6.8).