Los discos duros han sido la unidad de almacenamiento más extensamente usada en las últimas décadas, pero tienen varios problemas asociados. El principal está relacionado con la forma de leer la información. Puesto que un disco duro se compone de platos que giran y cabezas que se posicionan para acceder a las zonas donde está la información, el tiempo de acceso a la información termina limitándose por la velocidad de estos elementos mecánicos.

Eso hace que los tiempos de acceso a la información sean de en torno a los 10 ms. Cuando se quiere acceder a información guardada de manera contigua estos tiempos de acceso son suficientes, pero en el caso de tener que leer pequeños archivos repartidos por todos los platillos del disco duro puede resultar en grandes demoras en el acceso y lectura a la información.

Sin embargo, las unidades de estado sólido (SSD, Solid State Drive) permite tener tiempos de acceso de en torno a los 0,1 ms, e incluso menos al utilizar chips de memoria en vez de discos duros. A su vez, puesto que el acceso a la información y su puesta en el bus es casi inmediata, la velocidad de lectura y escritura aumentan enormemente en las SSD más modernas.

Cómo funciona una SSD

samsung-ssd-850-pro

Una unidad SSD está compuesta principalmente por memoria no volátil de tipo flash, similar a la empleada en las memorias USB. Se utiliza chips de memoria de tipo NAND, compuestos por celdas, en la que cada celda incluye un transistor similar a los MOSFET con dos puertas en vez de una sola, en una de las cuales se almacena el valor de la celda, conocida como puerta flotante.

Este tipo de memoria se clasifican en función de los bits que se pueden guardar por celda: un bit (SLC, Single Level Cell), dos bits (MLC, Multi-level Cell) o tres bits (TLC, Triple Level Cell). Por tanto en cada una puede tener uno de dos valores posibles (estados de memoria representados por ventanas de voltajes para cada bit), cuatro valores u ocho valores.

A nivel físico los valores son representados por niveles de tensión almacenados en la puerta flotante del transistor, pero al guardar la información el nivel de tensión que tienen es una aproximación dentro de una ventana posible. En la memoria SLC el valor cero sería de 0 a 5 V por poner un ejemplo, y el valor uno de 6 a 11 V, dejando un margen de seguridad entre valores.

ssd-tlc

Sin embargo, los rangos de voltajes en la memoria TLC son más reducidos, hay más posibles valores por celda, por lo que con el tiempo y con el desgaste de los aislantes comienza a ser más difícil guardar y recuperar un valor dentro del rango apropiado, haciendo que la celda termine informando de un valor almacenado incorrecto.

En ese punto entran en juego los mecanismos de corrección de errores (ECC) que proporciona el controlador, necesario para el funcionamiento de la memoria NAND, utilizado para gestionar la lectura y escritura de información y otros aspectos de las SSD. Uno de sus cometidos es el de detectar y marcar las celdas que están desgastadas para indicar que ya no se deben usar. Debido a esto, las SSD cuentan con un sobreprovisionamiento de capacidad más allá de la indicada por el fabricante.

Durabilidad de la información y desgaste

discos-duros-ssd

Las celdas se agrupan en filas llamadas palabras, y estas a su vez en páginas. Una página es la cantidad mínima de información que se puede leer o escribir de una SSD en un momento dado. El tamaño de información que almacenan las páginas es de 4 kB u 8 kB, y las páginas están agrupadas en bloques que suelen tener un tamaño de 256 páginas, para un total de 2 MB. Por último, los bloques son agrupados en planos, generalmente de 1.024 bloques, con varios planos por chip de memoria.

Cuando el contenido de una página cambia, se copia a otra página del mismo bloque que esté libre y se la marca para borrado. Los valores de una página no pueden ser alterados una vez escritos debido a cómo funciona la memoria NAND, por lo que si se necesita recuperar las páginas marcadas para borrado hay que mover todas las páginas en uso del bloque a un bloque vacío. A estos ciclos de uso y borrado se les denomina programa-borrado (P/E, Program/Erase).

Debido a la forma de borrar en bloques que tiene las SSD, y a la limitación de la durabilidad de los transistores cada vez que son borrados (es el momento en el que hay que pasarles una alta carga para que su carga almacenada vuelva a ser cero), la durabilidad de los discos suele medirse en ciclos de P/E, o en información total que puede ser escrita y borrada antes de que empiecen a presentar desgaste. Si el controlador detecta que alguna de las celdas está en malas condiciones, tiene que tachar como no válida toda la página.

asm2042p_2
Diagrama de bloque de un controlador.

Los controladores de las SSD modernos suelen ser cajas negras puesto que son los que aportan diferenciación entre los fabricantes. Si el controlador es muy bueno, permitirá mayores velocidades de lectura y escritura, así como mejor protección frente a errores y fallos de corriente.

En las SSD más antiguos la limpieza de bloques se hacía en el momento de necesitar uno libre, mientras que en los modernos los controladores aportan una recolección de basura que se activa periódicamente (normalmente cuando la SSD no está en uso, o con un uso ligero) para mover las páginas válidas a un nuevo bloque, dejando atrás las páginas que ya no están en uso, activando su borrado.

El comando TRIM de los sistemas operativos notifica a las SSD de las páginas que ya no se usan del sistema de archivos, y por tanto se marcan para borrado. Nuevamente, en las SSD más modernos esta funcionalidad no es totalmente necesaria debido a la recolección de basura, pero sigue siendo un buen complemento para mantener las SSD en su máxima velocidad.

Tamaño de transistores y NAND 3D

applied_flash

El tamaño de los transistores usados en elos chips de memoria NAND afecta directamente a la durabilidad de las celdas. A medida que los transistores se van haciendo más pequeños, se ven más afectados por el paso de la corriente eléctrica. Una memoria fabricada mediante litografía a 40 nm tiene más durabilidad que una fabricada a 15 nm.

La ventaja de fabricarlas a menor tamaño es poder crear chips de mayor capacidad en el mismo espacio. Aun así, al mejorar los controladores se puede paliar en parte la pérdida de durabilidad procedente de usar un nodo de fabricación de chips a menor escala. Pero para reducir los costes de fabricación de la memoria NAND, que se basan en el tamaño de las obleas de las que se extraen los chips, se introdujo la memoria NAND 3D.

Samsung la llama V-NAND, y la primera SSD en incluirla fue la SSD 850 PRO. Aunque siempre me ha hecho gracia la nomenclatura (cualquier chip ya está hecho en 3D), hace referencia a que esta memoria NAND 3D contiene decenas de capas de transistores, frente a menos de una decena en los chips de memoria tradicionales. Cada capa de memoria estaba escalonada y conectada mediante microhilos por los laterales, pero con la NAND 3D se interconectan a través de vías o agujeros que atraviesan las capas de memoria, por lo que se unen de manera vertical.

Combinando memoria TLC, NAND 3D y un nodo de fabricación de 15 nm como los usados por Toshiba se puede reducir enormemente los costes de fabricación de los chips de memoria, pero el desgaste es superior y la probabilidad de almacenar información errónea es mayor, por lo que el controlador es más propenso a inhabilitar celdas (y por tanto la página que la contiene). Por contra, Samsung usa memoria V-NAND a 40 nm MLC para dotar a la SSD 850 EVO de una gran durabilidad.

Ventajas

s-l1000

Debido a la forma de funcionar de las SSD, y aunque al principio resultaban caros, hoy día sus ventajas frente a los discos duros tradicionales son numerosas. Mientras que un disco duro tiene unos tiempos de acceso a la información del orden de los 10 ms, el de las SSD es de 0,1 ms. A esto se le añade que la información, una vez encontrada, está inmediatamente disponible para lectura, por lo que la latencia de lectura es prácticamente nula, frente a la de los discos duros, que hasta que no lee completamente un sector no puede enviarlo al bus.

La transferencia de información también se ve afectada por el hecho de que se puede leer información de forma paralela de distintas partes de la SSD en un momento dado, mejorando la velocidad a la que se envía la información al bus. Por tanto es posible alcanzar el límite de transferencia de 6 Gbps de las conexiones SATA3, cuando los discos duros no son capaces de ello y se quedan muy lejos.

Las SSD además cuentan ventajas adicionales en el terreno del consumo. Con una gestión adecuada por parte del controlador, puede ponerlo totalmente a dormir en ciertos momentos, con lo que el consumo residual puede situarse en 50 mW o incluso menos. En lectura y escritura las SSD pueden situarse, según su tamaño, en torno a los 3 ó 4 W de consumo, frente a los 6 a 10 de los discos duros, que además tienen un consumo constante mucho mayor incluso si no se están usando. Al no disponer de partes móviles, no hacen ruido.

Interfaces de las SSD

kingston_ssd_pcie_3
Adaptador de SSD M.2 a tarjeta PCIe 3.0.

La interfaz de bus utilizada por las SSD determina la velocidad máxima a la que se pueden enviar datos a través de las conexiones físicas entre el dispositivo de almacenamiento y la placa base. Hasta ahora el principal era el SATA, pero con el tiempo y las necesidades de conseguir un mayor ancho de banda de transferencia se ha recurrido a otros más modernos y eficientes.

Serial ATA es el más común usado por los discos duros, y por tanto el primero en usarse con las primeras SSD para permitir la compatibilidad con las arquitecturas existentes. La versión de interfaz más común hoy día es la SATA 3, que permite una velocidad de hasta 3 Gbps (750 MB/s). Debido a que los bits hay que adaptarlos al medio físico para transferirlos entre equipos, la codificación usada es una 8b/10b (por la inclusión de cabeceras para el control de transmisión y corrección de errores), por lo que introduce una pérdida adicional de velocidad máxima, situándola en la práctica en 600 MB/s.

Una evolución del estándar es SATA Express (SATA 3.2). SATAe está orientado a permitir conectar dispositivos que usen dos pistas PCIe 3.0 al equipo (ver a continuación). Por tanto la velocidad máxima es de 16 Gbps, con una velocidad máxima de transferencia de 1,97 GB/s. En este caso usan una codificación 128b/130b, con lo que las pérdidas son pequeñas.

Las conexiones PCI Express (PCIe) aparecen en las placas bases como los zócalos en donde se insertan las tarjetas gráficas y otros componentes como tarjetas Wi-Fi. En los chipsets más recientes de Intel, las placas base pueden contar con conectores para tipos de SSD en formatos especiales como el M.2 (descrito más adelante). Hay adaptadores para los M.2 a tarjeta PCIe para aquellos equipos que no tienen un zócalo específico para las SSD M.2.

En este caso la velocidad de transferencia depende del estándar PCIe que se haya elegido para la SSD. Los habituales son PCIe 2.0 con una velocidad de 5 Gbps con una velocidad máxima de 500 MB/s (8b/10b), y el PCIe 3.0 con una velocidad de 8 Gbps y una velocidad real máxima de 984 MB/s (128b/130b). La velocidad hace referencia a una pista individual PCIe, y se pueden agrupar en múltiplos de dos. Los SSD de tipo PCIe 3.0 x4 pueden funcionar a velocidades de hasta 3.936 GB/s, aunque en estos casos la limitación la impone el controlador de los SSD, que por el momento no son capaces de poner tanta información en el bus.

AHCI vs NVMe

150416-181625

Las interfaces de las SSD son el eslabón que adaptan la información al medio de transmisión. En ese proceso como ya he comentado se introducen unas pérdidas debido a la corrección de errores para asegurarse de que la transmisión se realiza adecuadamente, pero ambos extremos deben gestionar la forma y velocidad en que los programas y aplicaciones utilizan el bus.

Ese otro eslabón son los protocolos de control de bus, del que el más popular es el AHCI (Advanced Host Controller Interface) y es utilizada por los dispositivos de entrada/salida que funcionan sobre SATA. Pero al evolucionar las interfaces a usar PCIe, se desarrolló un protocolo más moderno y capaz de gestionar más adecuadamente la velocidad de transferencia máxima de esta interfaz.

Se trata de NVMe para conexiones PCIe, de la que hay algunas SSD en el mercado como la SSD 950 Pro de Samsung que la utilizan. Windows 8.1 y Windows 10 poseen un controlador nativo compatible con NVMe, y a partir de las placas desde las H97 y Z97 para procesadores Haswell y las Skylake tienen compatibilidad con NVMe.

Como he comentado anteriormente, las SSD funcionan con lectura paralela de información, y mientras AHCI solo podía gestionar una única cola de solicitudes de 32 comandos de E/S, NVMe puede gestionar hasta 64.000 colas de 64.000 comandos cada una. Además reduce la latencia de transferencia de 6 µs a 2,8 µs, y es más eficiente en comandos 4 kB. Por tanto puede tratar más solitudes de E/S de diversas fuentes para mantener el bus ocupado el máximo tiempo posible.

Factores de forma de las SSD

Debido a las distintas tecnologías que se incluyen en una SSD, hay diversas combinaciones de interfaces y factores de forma. Actualmente se está tendiendo a apartarse de los modelos de disco 3,5 y 2,5 pulgadas tradicionales más propios de los discos duros por venderlos como tarjetas de memoria similares a las de las memorias RAM.

Las propiedades y calidad de las SSD dependerá por tanto de la interfaz que se utilice para comunicarse con la placa base del equipo, el controlador utilizado para gestionar el acceso a la memoria, y el protocolo de control del bus de datos.

Disco SATA

0_vertex_2_solid_state_drive_by_ocz-top_oblique_pnr__0307

Los discos SATA son la herencia de los discos duros, y llegan en formato de 2,5 pulgadas. Con el aumento de la densidad de información de los chips NAND, el tamaño de las SSD se fue reduciendo y actualmente se venden generalmente en formato de 2,5 pulgadas y un grosor de 7 mm.

Otros grosores incluyen los 9,5 mm (habitual hasta hace unos dos o tres años), y 12 mm (aún común para centros de datos). El grosor de 5 mm es más raro de ver pero está orientado a soluciones más cerradas para tabletas o ultrabooks, y no tanto para equipos de consumo como portátiles y PC de sobremesa.

La interfaz usada es generalmente SATA 3, lo que le confiere un ancho de banda potencial de 6 Gbps, y una velocidad efectiva de 550 MB/s al usar AHCI como protocolo de transferencia. Son compatibles con conexiones SATA 2, pero en este caso funcionan a una velocidad máxima de 3 Gbps, pero los beneficios de los menores tiempos de acceso a la información siguen presentes, que es al fin y al cabo la quintaesencia de las SSD.

mSATA

intel-525-series-msata-ssd-1-large

La revisión SATA 3.1 incluyó un nuevo formato de conexión, eléctricamente compatible con SATA 3, llamada Mini-SATA (mSATA). Es un formato de tarjeta pequeña para equipos como portátiles, ultrabooks y mini-PC. Ahorra gran cantidad de espacio con respecto a los discos de 2,5 pulgadas, y permite la misma velocidad de hasta 6 Gbps de transferencia (550 MB/s efectivos).

Ahora mismo es un formato en desuso debido a las ventajas que proporciona el formato M.2 en el apartado de la velocidad.

M.2

img_0858

M.2 es un formato que sucede a mSATA y que aporta nuevas posibilidades en las velocidades de las SSD. Aunque puede funcionar sobre conexiones SATA3, generalmente utiliza una conexión PCIe, tanto 2.0 como 3.0. Para aportar un aumento notable de velocidad, suelen funcionar sobre cuatro pistas PCIe, aunque hay modelos que usan dos pistas y próximamente llegarán otros que funcionan sobre ocho pistas.

En el caso de los modelos PCIe 3.0 x4, su velocidad máxima de transferencia es de 4 GB/s, pero los controladores por ahora no permiten paralelizar el acceso lo suficientemente bien como para aprovechar todo el ancho de banda disponible, situándose la velocidad en torno a los 2 GB/s. Los modelos PCIe 3.0 soportan por lo general el protocolo NVMe, mientras que las versiones PCIe 2.0 usan AHCI, aunque ambos tipos son compatibles con AHCI gracias a que poseen compatibilidad hacia atrás.

La especificación M.2 plantea diversos tamaños de PCB, siendo el más habitual el 2280, pero también se utilizan el 2230, 2242 y 2260. Las dos últimas cifras indican la longitud de la tarjeta en milímetros. A su vez, los contactos pueden tener una o dos muescas, en función de la velocidad máxima permitida y que no haya equivocaciones a la hora de insertarlos.

U.2

u

La conexión U.2 es un renombrado de la SFF-8639, y se usa en discos de 2,5 pulgadas con una interfaz similar a la SATA Express pero con un conector a las placas base distinto. Se utilizaba en entornos de servidores, pero con la llegada de los Skylake se ha popularizado en las placas de consumo. El renombrado se realizó para hacerlo más comercial y en la línea del M.2.

Los discos U.2 no son nada conocidos en el sector consumo debido al coste aparejado con los cables especiales utilizados los cuales requieren de un apantallamiento especial. Sin embargo, son bastante usados en centros de datos por el formato usado de fácil integración en bastidores para almacenamiento. Estos discos soportan una velocidad de hasta PCIe 4.0 x4 frente a la PCIe 3.0 x2 de los SATA Express, en un conector más pequeño, y puede usar NVMe. Al estar disponible en formato disco de 2,5 pulgadas, puede ofertarse en mayores capacidades que los M.2 manteniendo la misma velocidad, lo cual es interesante para las empresas.