No todos los SSD son iguales

No todos los SSD son iguales
29 de octubre, 2009

De todos modos, algo que ya parece estar claro en el momento presente es que la pegatina SSD en un disco no garantiza que las aplicaciones se abran “al vuelo” o que el sistema operativo vaya más fluido. En el fondo, el acceso a las células de memoria necesita de un sistema electrónico controlador que permita leer y escribir la información de un modo rápido y eficiente. Si el controlador no hace bien su trabajo, el resultado puede llegar a ser peor que el obtenido con un disco magnético.

La primera gran distinción está en las distintas tecnologías de memoria existentes. En última instancia todas están emparentadas, ya sean las de tipo dinámico como la RAM del sistema, o las estáticas donde la información permanece aunque se corte la alimentación de energía. Y dentro de las estáticas hay varios tipos: NOR y NAND por un lado, con la memoria NOR como patrimonio de los dispositivos móviles que necesitan una tecnología apta para ejecutar directamente los programas sobre ella (típicamente es donde se instala el SO), y la memoria NAND como tecnología apta para almacenar datos, pero que necesita que el código de los programas o los contenidos se lleven a la memoria del sistema para que sean accesibles y útiles. La memoria NAND es la que se usa en las llaves USB, tarjetas de memoria o los discos SSD.

NAND SLC y MLC

Por último, dentro de la tecnología NAND hay dos posibles interpretaciones para las células de memoria: SLC y MLC. Single Level Cell significa que en cada célula de memoria se codifica un valor binario que puede ser “0” o “1”. Multi Level Cell, por su parte, significa que en cada celda de memoria se almacena un valor binario “00”, “01”,”10”, “11”. Esto se consigue “simplemente”, permitiendo que cada transistor almacene cuatro niveles de voltaje distintos en vez de los dos de SLC. En teoría es perfecto, pues de este modo se consigue que la capacidad de los discos aumente sin que haya que aumentar el número de chips implementados físicamente.

Por este motivo, la capacidad de los discos MLC está ya en torno a los 500 Gbytes, pero para los SLC es complicado encontrar modelos por encima de 160 Gbytes, con 80 Gbytes o 40 Gbytes como capacidades típicas. En la práctica, este carácter multinivel hace que sea más complicado discernir en el momento de la lectura qué valor binario hay escrito, y más crítico el proceso de la escritura para evitar errores. Por no hablar de la reducción en el número de ciclos de escritura posibles.

El nivel de voltaje depende de procesos electrónicos muy agresivos con los materiales semiconductores, y la capacidad para “inyectar” los electrones precisos para conseguir un nivel concreto se va degradando hasta que no es posible conseguir escrituras precisas. En un disco SLC, sólo hay que discernir entre dos valores. Por encima de cierto umbral de carga se trata de un “1”, y viceversa.

La controladora

La estructura de un disco SSD es conceptualmente simple: al conector SATA llegan las peticiones de lectura y escritura, que pasan a un controlador que esencialmente tiene que encontrar las celdas implicadas en esas operaciones y organizar las operaciones del modo más eficiente posible. Junto al controlador hay un chip de memoria empleado para el almacenamiento temporal de datos, así como la memoria propiamente dicha, que en los discos SSD se organiza en canales. De este modo, el controlador puede trabajar en paralelo con un número variable de pastillas de memoria, que en modelos como los de Intel llegan a ser hasta 10.

La unidad de memoria mínima que se puede escribir en un disco SSD MLC es de 4 Kb. O dicho de otro modo, si se quiere escribir 1 Kbyte de información en el controlador se “rellenará” el “chunk” de datos con 3 Kbytes adicionales. A la hora de borrar, la situación se complica, pues el tamaño del bloque mínimo que se puede borrar es de 512 Kbytes. Además, en todos los discos SSD, la controladora tiene la misión de distribuir las operaciones de escritura de un modo uniforma en todas las celdas de memoria para evitar que haya zonas del disco que se degraden con más rapidez que otras. Como puedes ver, no es oro todo lo que reluce.

Recolección de basura

Estas “complicaciones” hace que el trabajo del controlador no sea, ni mucho menos, evidente. La inteligencia a la hora de gestionar estas operaciones es determinante para conseguir un rendimiento elevado en todo momento. Sobre todo, en los discos MLC, el problema de no poder borrar bloques menores de 512 Kbytes es bastante serio. Los algoritmos más simples van escribiendo datos en las zonas libres, que se van agotando con el día a día. Además, en Windows, cuando se solicita el borrado de un dato, realmente sólo se marca como “disponible”. En los discos magnéticos eso suponía ahorrar un precioso tiempo en la operación de borrado. Simplemente, cuando se pedía escribir, se “machacaba” el dato y en paz.

En los discos SSD, este comportamiento supone liarlo todo. Lo ideal sería que tras pedir el borrado de una celda, no sólo se marcase como borrada, sino que se pusiese en una cola de procesado “interno” para borrarla del todo en caso de necesidad antes incluso de que el sistema necesite escribir encima. ¿Por qué? Recuerda que sólo se pueden borrar bloques de 512 Kbytes. Borrar esos 512 Kbytes significa leer todos los contenidos útiles del bloque, moverlos a una memoria intermedia, “machacar” los 512 Kbytes y volver a poner todo en su lugar salvo las celdas llamadas a ser eliminadas para dejarlas “a cero”, listas para ser empleadas escribiendo los mencionados bloques de 4 Kbytes. Pues bien, este tipo de algoritmos aún están en pañales tanto a nivel de controladoras como de sistema operativo, donde la gran esperanza es el comando “TRIM” que en Windows 7 supuestamente será el que ayude a decidir al disco SSD si tiene que abordar la tarea de borrado total de los bloques cuando sea posible o puede esperar a que haya menos celdas libres.

El problema de no hacer un borrado preventivo se manifiesta cuando todo el espacio libre se ha consumido y la mayoría de las operaciones de escritura necesitan antes del borrado de bloques de 512 Kbytes al no haber suficiente espacio libre de verdad. En este caso, el tiempo percibido por el sistema y el usuario para completar una operación de escritura no sólo es el de escritura de esos 4 Kbytes, sino el de lectura de 512 Kbytes, almacenamiento en otra memoria, borrado de los 512 Kbytes y reubicación de los datos. Una locura que ocasionó serios problemas en los primeros modelos, incluyendo productos con precios mileuristas, y también a la compañía JMicron, responsable de algunos de los controladores menos eficientes de las primeras generaciones de discos SSD. “Garbage collenction” o recolección de basura es el nombre que se le da a los procedimientos para minimizar los efectos negativos asociados con la tecnología MLC.

Write Amplification (amplificación de escritura) es el parámetro que permite cuantificar el efecto descrito anteriormente. Este valor es igual al cociente entre el tamaño del bloque de borrado (512 Kbytes) y el tamaño del bloque que se desea escribir (4 Kbytes). En este caso es de 512/4 = 128. Si el tamaño del bloque de borrado fuese de 128 Kbytes la amplificación de escritura sería de 32. Así pues, lo deseable es tener bloques de borrado que tiendan a tener el tamaño del bloque de escritura.


< Especial tecnología SSD

  • Share This