viernes, 24 de julio de 2009

Todo sobre los discos de estado sólido (SSD)


¿Que son?

Un disco de estado sólido (SSD, solid state disk) es un dispositivo
de almacenamiento de datos que usa memoria no volátil (NAND)
conocidas como memoria Flash, y memorias volátiles como la SDRAM. Aunque técnicamente no son discos, estos dispositivos son llamados así porque se perfilan como los posibles sucesores de los discos duros actuales.

¿Cómo son?

Un disco SSD no es más que un grupo de módulos de memoria flash conectadas en una placa de PCB. Este PCB tiene una controladora, los módulos de memoria flash y opcionalmente una cantidad variable de memoria DRAM que se usa a modo de memoria caché. Gracias a su avanzada controladora puede leer de muchos módulos de memoria a la vez (entre 8 y 10).

En los circuitos flash las celdas de memoria están agrupadas por sectores de 512 bytes (como en las unidades de disco). Un SSD se conforma de páginas de 4KB y bloques de 512KB formados por un total de 128 páginas. La memoria Flash que usan los discos SSD y en general todos los dispositivos que la integren, puede ser de dos tipos diferentes:

- SLC (Single Level Cell): Almacena un solo bit de información en cada celda. Esto la hace más robusta por lo cual es más rápida y tiene un tiempo de vida 10 veces superior a una memoria MLC. Tiene estre 1 y 5 millones de ciclos de escritura/borrado. Por estos motivos se usan en productos para servidores y para empresas.
- MLC (Multi Level Cell): almacena más de un bit en cada celda. Tiene entre 100 mil y 300 mil ciclos escritura/borrado. Esto la hace más lenta y menos duradera, pero es mucho más barata de fabricar.

Los ciclos de las celdas hace que la controladora tenga que repartir un poco la información por todas las celdas equitativamente para optimizar la vida del producto. Ésto lo veremos más adelante.

¿Que ventajas ofrecen con respecto a los discos duros?

- Arranque más rápido.
- Mayor rapidez de lectura (Hasta 20 veces superior).
- Baja latencia de lectura y escritura.
- Inicio de aplicaciones en menos tiempo.
- Menor consumo de energía (alrededor de 0,4 vatios) y menor producción de calor.
- Sin ruido.
- Menor peso y (dependiendo del tipo) tamaño.

El SSD proporciona dos millones de horas de tiempo medio entre fallos (MTBF). La tasa sostenida de lectura es de 62 Mbps y una tasa aleatoria de lectura de 7.000 entradas/salidas por segundo para una transferencia de 512 bytes. Su tasa de acceso a archivos es de 0,12 milisegundos, mientras que en los discos duros es de 10 milisegundos. Esta velocidad se traduce en que podría abrir Vista Enterprise en menos de 35 segundos.

¿Cuáles son sus desventajas?

- Son muchos más caros que los discos duros y ofrecen menos capacidad de almacenamiento.
- Menor tiempo de escritura que los discos duros más rápidos.
- Menor tiempo de vida.
- Menor recuperación.
- Vulnerabilidad contra ciertos tipo de efectos, incluyendo
perdida de energía abrupta (especialmente en los SSD basado
en DRAM), campos magnéticos y cargas estáticas comparados
con los discos duros normales.
- La tasa de fallos es más alta.

Numero limitado de borrados: En los chips de memoria flash el borrado de una celda de memoria requiere una descarga eléctrica de una tensión relativamente elevada; esto hace que, con cada operación de borrado, la celda se deteriore hasta quedar inutilizada. En las aplicaciones habituales de las memorias flash (cámaras fotográficas o reproductores multimedia) llevará años realizar un número tan elevado de borrados, pero en un ordenador personal, donde el disco duro está trabajando de forma casi continua, esta cifra se puede alcanzar en muy poco tiempo. La naturaleza destructiva de las operaciones de borrado hace que la fiabilidad de estos componentes sea muy inferior a la de un disco duro convencional. No es solo que un borrado pueda destruir las celdas afectadas, es que el deterioro que sufren hace que sus probabilidades de fallar en el momento de realizar una operación de lectura o escritura vayan aumentando con el tiempo.

Si queremos borrar un sector no podemos aplicar la solución obvia: Leer la página, borrar la página, reescribir la página pero sin el sector que queríamos eliminar. Hacer esto supondría inutilizar el disco en muy poco tiempo. La solución es trabajar mediante transacciones; es decir, cuando el sistema ordena borrar un sector la operación no se ejecuta físicamente, sino que se escribe una anotación en el disco indicando que se ha dado esta orden. Cuando se ordena una operación de escritura que, para ejecutarse, necesita borrar datos (vamos a sobreescribir un sector) se procede de la misma manera. Esto significa que el disco se va llenando con una lista de operaciones a realizar y, cuando el espacio libre empieza a escasear, se ejecuta la transacción; es decir, todas las operaciones de borrado y sobreescritura pendientes se ejecutan en bloque y el espacio extra se libera.

Trabajar de esta forma no tiene ningún efecto negativo si el trabajo que hace el disco consiste en leer o escribir archivos de gran tamaño; casualmente, así es como trabajan los reproductores multimedia y cámaras de fotos, que es la aplicación habitual de las memorias flash. El problema es que los PCs no trabajan así; en los ordenadores lo habitual es que se lean y escriban bloques de datos de pequeño tamaño de forma casi continua.

¿Que es la degradación de rendimiento de los discos SSD?

La degradación la sufren todos los discos SSD, se produce en gran medida por la estructura interna de las memorias NAND y su organización. La cuestión es que se pueden llevar a cabo procesos de escritura y lectura sobre páginas, sin embargo, sólo se pueden realizar procesos de borrado sobre bloques, es decir, cada orden de borrado supone limpiar 256 o 512 sectores del disco.

La forma en que funcionan los sistemas operativos hace que cuando borras un archivo simplemente se modifica una pequeña tabla que indica que ese espacio está libre. En un disco duro ese espacio no se borra realmente hasta que es sobreescrito por otro archivo y evidentemente los SSD funcionan igual. La diferencia está en lo que pasa cuando sobreescribes un archivo en un disco duro y lo que pasa cuando lo haces en un SSD. Con el disco duro simplemente sobreescribes la zona del disco. En el SSD simplemente modificarás la tabla interna y grabarás los datos en una zona de espacio no asignada. Esto provoca que si los procesos de escritura que solicite la controladora no cuentan con espacio (páginas libres suficientes por cada cada bloque), se necesita una reorganización de los datos (páginas), y por tanto la necesidad de acometer un borrado (bloques). Esto implica hacer varias operaciones con la memoria caché, y por lo tanto una degradación de rendimiento.

Es complicado precisar cuánto tarda un SSD en degradarse, en primer lugar porque se trata de algo progresivo, y en segundo lugar porque depende proporcionalmente del número de borrados y escrituras (Obviamente la lectura no afecta). Además generalmente la degradación del rendimiento en los discos SSD con buenas controladoras está limitado, quizá se pierda un 20% de rendimiento con respecto al estado limpio, pero aún así será mucho más rápido que los discos duros normales.

Actualmente el mejor antídoto contra este fenómeno son las instrucciones TRIM, que forma parte del estándar ATA. Así que cualquier sistema que soporte la especificación TRIM/DISCARD lo soportará automáticamente (como las últimas actualizaciones del kernel de Linux). En definitiva, si los controladores AHCI/SATA se actualizan con los parches con soporte para TRIM, sistemas como XP, Vista, Linux o MAC OS X ya estarían preparados.

Aunque se comenta también la posibilidad de utilizar una utilidad de OCZ para forzar su uso en los comandos ATA. Por tanto, es necesario que lo soporte tanto el SO como el SSD en cuestión. Su funcionamiento simplifica mucho esos procesos de reorganización que producen la degradación de rendimiento. Cuando se elimina un fichero, el SO lanza el comando TRIM sobre el LBA del SSD, la controladora copia entonces el bloque a la caché limpiando ya las páginas que se han marcado como eliminadas y escribe directamente el bloque con las páginas ya disponibles de nuevo en el LBA del SSD. Por tanto el viaje por caché es mucho más breve y además, el proceso de escritura de los nuevos datos se realiza directamente en el SSD y no en caché. Por tanto, la degradación de rendimiento se ve paliada en gran medida, aunque por supuesto no se erradica.

Actualmente las implementaciones TRIM a nivel experimental pueden ejecutarse bajo demanda del usuario, recorriendo y reorganizando los bloques cuando se lo ordenemos y poniendo a punto el SSD. Sin embargo, una implementación más integrada a nivel de SO permitirá que el SSD aproveche los tiempos de inactividad para llevar a cabo estos procesos de optimización automáticamente de forma transparente para el usuario.

¿Que sistemas operativos lo soportan?

Windows 7 ya implementa este soporte, sólo falta que los nuevos Firmwares comiencen a aprovechar esta función. TRIM no será la única mejora que se introducirá a favor de los SSD, aunque quizás sí la más importante. Según sus propios diseñadores, se han intentado reducir la frecuencia de escrituras a nivel general, además, el sistema si detecta un SSD deshabilitará automáticamente la desfragmentación, superfetch y ready boost. En cuanto al pagefile, no recomiendan que los mantengamos en el propio SSD.

En cuanto a Linux, todavía no cuenta con ese soporte. Sin embargo su implantación necesita tiempo, básicamente por la falta de unidades SSD con soporte en el mercado (algo fundamental para el desarollo del soporte en el mundo GNU/Linux). Lo que sí es seguro es que ext4 contará con él antes o después.

No hay comentarios:

Publicar un comentario