En informática, una orden TRIM permite a un sistema operativo comunicar a una unidad de estado sólido (SSD) qué bloques de datos ya no están en uso, como los datos dejados al borrar ficheros. Una operación del SO como un borrado generalmente sólo marca los bloques implicados como no usados. TRIM permite que el SO pase esa información al controlador de la SSD, que de otra manera no sabría qué bloques puede eliminar.
El propósito de la instrucción es mantener la velocidad de la SSD durante toda su vida útil, evitando la ralentización que los primeros modelos sufrían al llegar a escribir en todas las celdas al menos una vez.[1]
Aunque ya existían herramientas para reiniciar algunos modelos de SSD a su estado original, no se podían considerar herramientas de optimización ya que necesitaban borrar todos los datos de la unidad.
La causa inicial del problema es que las unidades SSD no saben qué bloques están realmente en uso y cuáles están libres. Las SSD no entienden la estructura del sistema de ficheros usada por el sistema operativo del ordenador y no puede acceder a su lista de clusters sin usar. Esto causa problemas en dos lugares:
- Las SSD pueden escribir bloques de 4KiB, pero debido a limitaciones del hardware, deben borrar bloques mayores (p.e., de 128KiB-512KiB). Debido a que la unidad no puede saber cuál de los bloques de 4KiB está aún en uso si antes ha sido escrito, cada escritura requiere un ciclo mayor de lectura-borrado-modificación-escritura, asumiendo que ningún bloque libre adicional está disponible en la SSD (p.e., después de que todos los bloques han sido marcados como grabados al menos parcialmente). El término para este fenómeno es amplificación de escritura.[2][3][4]
- El wear levelling permite a una unidad recolocar sus datos para que las escrituras no estén confinadas a una esquina del chip flash. Las células flash toleran sólo un número limitado de escrituras antes de fallar, así que algunas SSD mueven los datos para repartir la carga de escrituras de manera más equitativa entre todos los bloques en la unidad. Debido a que la unidad no sabe qué bloques están realmente en uso por el sistema de ficheros, cada bloque de datos escrito por la unidad requiere una escritura adicional debido al bloque desplazado.
Las especificaciones de la orden TRIM[5] están siendo normalizadas como parte de la norma de la interfaz ATA, dirigida por el Comité Técnico T13 del International Committee for Information Technology Standards.[6]
Soporte en los sistemas operativos
TRIM está implementado en Linux desde la versión 2.4.33.[7] En FreeBSD, TRIM está disponible desde la versión 8.0. En Microsoft Windows, TRIM ha sido implementado en Windows 7[8] y Windows Server 2008 R2,[9][10] y fue lanzado con la versión final de estos sistemas operativos en octubre de 2009. Unidades más antiguas necesitarán actualizar el firmware. En caso contrario la nueva orden será ignorada. En Mac OS X se implementó en la actualización 10.6.8 de Snow Leopard, lanzada el 23 de junio del 2011.
Donde TRIM no está soportado automáticamente por el sistema operativo, hay utilidades que pueden mandar una orden TRIM manualmente. Usualmente listan todos los bloques libres especificados por el sistema operativo y le pasan esa lista a la unidad como una serie de órdenes TRIM. Estas utilidades están disponibles desde varios fabricantes (Intel,[11] XtremeSystems[12]) o como utilidades generales (hdparm v9.17 y posteriores[13][14]).
Soporte de bajo nivel
El mensaje TRIM debe poder ser enviado desde la controladora de disco hacia el propio disco, usando buses que lo soporten. En la actualidad está soportado en buses SATA, SAS y los PATA (antiguos ATA) que soporten las extensiones ATAPI.
Referencias
- ↑ AnandTech (18 de marzo de 2009). «The SSD Anthology: Understanding SSDs and New Drives from OCZ» (en inglés). AnandTech, Inc. Consultado el 8 de julio de 2009.
- ↑ Write Amplification (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
- ↑ «Write Amplification: Intel's Secret Sfuce». Archivado desde el original el 15 de noviembre de 2010. Consultado el 21 de febrero de 2010.
- ↑ Inside the X25-M Controller: Wear Leveling, Write Amplification Control
- ↑ «Data Set Management Commands Proposal for ATA8-ACS2 (revision 6)». INCITS T13. INCITS T13. 12 de diciembre de 2007. Archivado desde el original el 13 de junio de 2010. Consultado el 8 de julio de 2009. (draft specification T13/e07154r6)
- ↑ «T13 documents referring to TRIM». INCITS T13. INCITS T13. Archivado desde el original el 26 de mayo de 2010. Consultado el 8 de julio de 2009.
- ↑ Trim on Linux
- ↑ been Trim in Windows
- ↑ «Windows 7 Enhancements for Solid-State Drives». Microsoft downloads. Microsoft Corporation. 12 de noviembre de 2008. Consultado el 8 de julio de 2009.
- ↑ «Copia archivada». Archivado desde el original el 2 de enero de 2010. Consultado el 1 de septiembre de 2010.
- ↑ «Intel SSD Optimizer White Paper». Intel Corporation. Archivado desde el original el 30 de junio de 2012. Consultado el 23 de enero de 2010.
- ↑ «wiper.exe for Falcon Series». XtremeSystems. Consultado el 23 de enero de 2010.
- ↑ «hdparm-9.17 released, with experimental trim/wiper scripts for SSDs». Consultado el 23 de enero de 2010.
- ↑ «hdparm project page». Consultado el 23 de enero de 2010.
Enlaces externos
- From write() down to flash chips – una explicación de cómo la orden TRIM permite a las SSD borrar los datos no usados por el sistema de ficheros.
- TRIM Command White Paper - un papel explicando los propósitos y acciones de la orden TRIM.