# Trim (informatica)

In informatica, TRIM è una funzionalità dei sottosistemi di memoria di massa presenti all'interno di un elaboratore, che può essere utilizzata dal sistema operativo per segnalare al dispositivo di memoria le pagine non più utilizzate e che possono essere quindi riallocate.
La funzione TRIM è una caratteristica tipica di tutti i dispositivi SSD moderni, ed è utilizzabile invocando l'omonimo comando attraverso l'interfaccia di controllo.
Generalmente nell'operazione di cancellazione eseguita da un sistema operativo 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

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.
Nonostante strumenti per ripristinare lo stato originale di alcuni SSD, e quindi le performance, fossero già esistenti, questi comportavano l'eliminazione dei dati sull'intero disco, rendendoli inadeguati ai fini dell'ottimizzazione.
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.. Il termine per questo fenomeno è Write amplification.
* Wear levelling (Livellamento dell'usura) 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 sta per diventare standard come parte dell'interfaccia standard AT Attachment (ATA), guidata da Technical Committee T13 dell'International Committee for Information Technology Standards.

## Supporto dei sistemi operativi
### Linux

TRIM è stato aggiunto inizialmente in Linux 2.6.28, in seguito è stato pienamente supportato in Linux 2.6.33.

### Microsoft Windows

In Microsoft Windows, TRIM è stato implementato in Windows 7 e in Windows Server 2008 R2.

### Apple macOS

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". Il comando Trim in OSX non è supportato per dischi esterni con collegamento Firewire o USB (nemmeno USB-C), mentre invece il supporto è esteso via interfaccia Thunderbolt (1, 2 e 3) oltre che per i dischi interni (sata e pciex). Negli ultimi Mac mentre secure boot è attivo non è possibile abilitare il comando trimforce sui dischi esterni.

### Altri OS

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). 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.