TRIM

Da Wikipedia, l'enciclopedia libera.

Il comando TRIM permette ad un sistema operativo di indicare i blocchi che non sono più in uso in un'unità a stato solido (o "SSD"), come per esempio i blocchi liberati dopo l'eliminazione di uno o più file. Generalmente nell'operazione di cancellazione eseguita da un Sistema Operativo (OS) i blocchi data vengono contrassegnati come non in uso. Il TRIM permette all'OS di passare questa informazione al controller dell'SSD, che altrimenti non sarebbe in grado di sapere quali blocchi eliminare.

Caratteristiche[modifica | modifica wikitesto]

Lo scopo dell'istruzione TRIM è di mantenere la velocità dell'SSD per tutto il suo ciclo di vita, evitando il rallentamento che i primi modelli hanno incontrato una volta che tutte le celle erano state scritte, una alla volta[1].

Anche se in alcuni dispositive gli strumenti per riportarli in uno stato aggiornato erano già disponibili, essi eliminavano tutti i dati sul dispositivo che non consentivano il loro uso come un'ottimizzazione[non chiaro].

La causa principale del problema è che i dispositivi SSD non conoscono quali blocchi sono realmente in uso e quali sono liberi. Il file system su un SSD mantiene una lista dei blocchi in uso, ma gli SSD non capiscono i file system e quindi non possono accedere a quella lista. Ciò causa dei problemi in due punti:

  • Gli SSD possono scrivere blocchi di 4 KiB alla volta, ma date le limitazioni dell'hardware devono eliminare blocchi più grandi, per esempio blocchi da 128 KiB a 512 KiB. [non chiaro]. Il termine per questo fenomeno è Write Amplification[2][3].
  • Wear levelling consente a un dispositivo di riorganizzare i suoi dati così che le scritture non vengano confinate a uno degli angoli del chip flash. Le celle flash tollerano solo un limitato numero di scritture prima che si rompano, così alcuni SSD spostano i dati all'interno dell'SSD in modo tale che le celle vengano utilizzate in modo equo. Dato che il dispositivo non conosce quali blocchi sono realmente in uso, ogni blocco di dati scritti sul dispositivo richiede una scrittura aggiuntiva a causa del blocco spostato.

La specifica del comando TRIM[4] sta per diventare standard come parte dell'interfaccia standard AT Attachment (ATA), guidata da Technical Committee T13 dell'International Committee for Information Technology Standards.[5]

Supporto dei sistemi operativi[modifica | modifica wikitesto]

TRIM è stato aggiunto inizialmente in Linux 2.6.28[6][7][8], in seguito è stato pienamente supportato in Linux 2.6.33 [9]. In Microsoft Windows, TRIM è stato implementato in Windows 7[10] e in Windows Server 2008 R2[11][12]. Su sistemi Apple macOS il TRIM è ufficialmente implementato a partire dalla versione 10.6.8 (e con modifica al kext dalla 10.6.7) e solo per dischi originali Apple, per i dischi di terze parti è necessario abilitare la funzionalità modificando kext manualmente o via Chameleon SSD Optimizer. I vecchi SSD necessitano di un aggiornamento del firmware, altrimenti il nuovo comando verrà ignorato. Da OS X 10.10.4, Apple ha esteso il supporto TRIM per unità SSD di terze parti, attivabile tramite il comando "sudo trimforce enable".

Alcuni dispositivi (come il Gskill Falcon) hanno uno strumento chiamato wiper.exe che asserisce di utilizzare TRIM su richiesta. Si tratta di uno strumento di deframmentazione per le SSD (i normali strumenti di deframmentazione non funzionano sugli SSD).[13] Lo strumento pulisce semplicemente lo spazio non usato, mentre TRIM informa il controller dello spazio non usato, permettendogli di gestire costantemente le risorse per una migliore performance.

Il 24 luglio 2013 Google annuncia la versione 4.3 del suo OS per dispositivi mobili Android introducendo il comando TRIM al fine di ottimizzare la velocità delle memorie SSD integrate negli stessi.

Alcuni produttori di SSD mettono a disposizione degli strumenti per implementare il comando TRIM anche nei sistemi che non lo supportano come nel caso di Windows XP.[14]

Note[modifica | modifica wikitesto]

  1. ^ The SSD Anthology: Understanding SSDs and New Drives from OCZ, in AnandTech, AnandTech, Inc, 18 marzo 2009. URL consultato l'8 luglio 2009.
  2. ^ Write Amplification: Intel's Secret Sauce
  3. ^ Inside the X25-M Controller: Wear Leveling, Write Amplification Control
  4. ^ Data Set Management Commands Proposal for ATA8-ACS2 (revision 6) (DOC), in INCITS T13, INCITS T13, 12 dicembre 2007. URL consultato l'8 luglio 2009. (draft specification T13/e07154r6)
  5. ^ T13 documents referring to TRIM, in INCITS T13, INCITS T13. URL consultato l'8 luglio 2009.
  6. ^ Trim on Linux
  7. ^ Linux Block layer discard requests
  8. ^ The truth about Linux
  9. ^ kernel commit
  10. ^ been Trim in Windows
  11. ^ Windows 7 Enhancements for Solid-State Drives (PDF), in Microsoft downloads, Microsoft Corporation, 12 novembre 2008. URL consultato l'8 luglio 2009.
  12. ^ Q. What is the TRIM function for solid state disks (SSDs) and why is it important?
  13. ^ wiper.exe - TRIM COMMAND for Falcon Series SSD, in XtremeSystems Forums, Jelsoft Enterprises Ltd, 12 maggio 2009. URL consultato l'8 luglio 2009.
  14. ^ Corsair to release SSD toolbox with Windows XP TRIM support

Collegamenti esterni[modifica | modifica wikitesto]

From write() down to flash chips – an explanation on how the TRIM command lets SSDs erase data not used by the filesystem