TRIM (also spelled trim) is a specific command in a serial ATA (SATA) interface that tells an underlying NAND flash solid state storage device which data it can erase. TRIM, which conceptually can be compared to a defrag utility on a spinning hard drive, improves performance by pro-actively freeing up space.
NAND flash memory organizes data into pages, and pages are grouped together in blocks. Data can be read and written at the page level but can only be erased at the block level. When data is deleted from flash media, the associated pages on the solid-state drive are flagged for deletion, but not erased -- because only blocks can be erased. When a new file is written, individual pages marked for deletion are grouped into a block so they can be erased first, making room for the next write.
The TRIM command allows the operating system to notify the solid state drive (SSD) which data in a particular set of pages can be overwritten, allowing the solid state drive’s controller to manage the erase process between the time when the host initiates a delete and the next write. By moving erasing out of the write process, writes can be faster.
In order for TRIM to function, the host’s operating system (OS) and storage drivers must support the TRIM command. Here's how the TRIM SSD relationship works. In a Windows 7 environment, for example, when the solid state drive reports it has TRIM support, the operating system will disable disk defragmentation and enable TRIM. Then, when a file on the host’s SSD is deleted, the OS sends a TRIM command to the flash controller telling it which blocks can be deleted. TRIM can also be initiated manually by the user or scheduled on a daily basis.
TRIM, which is a command and not an acronym, is currently available for SATA interfaces only. The SAS committee has added UNMAP, which is similar to TRIM, to the SAS/SCSI specification.