¿Cómo funcionan los SSDs? vía ExtremeTech

Esta entrada es una traducción del artículo de ExtremeTech que lleva el mismo nombre en inglés. Se han agregado algunas imágenes con fines ilustrativos.

Fuente: How Do SSDs Work? – ExtremeTech


Aquí en ExtremeTech, a menudo hemos discutido la diferencia entre diferentes tipos de estructuras NAND – NAND vertical versus planar, o multi-level cell (MLC) versus triple-level cell (TLC) y quad-level cell (QLC). Ahora, vamos a hablar sobre la pregunta básica más relevante: ¿Cómo funcionan los SSDs en primer lugar?, y ¿como se comparan a tecnologías más modernas, tales como la tecnología de almacenamiento no-volátil de Intel, Optane?

Para entender como y porqué los SSDs son diferentes de los discos giratorios, tenemos que hablar un poco sobre los discos duros (HDDs). Un disco duro escribe los datos en una serie de discos magnéticos giratorios llamados “platos” (platters). Hay un brazo actuador con cabezales de lectura y escritura sobre el mismo. Este brazo coloca al cabezal de lectura-escritura sobre el area adecuada de la unidad para leer o escribir información.

Anatomía de un disco duro.

Ya que los cabezales de la unidad deben alinearse sobre un area del disco para poder leer o escribir información, y el disco se encuentra girando constantemente, hay un retraso antes de que los datos puedan ser accedidos. Puede que la unidad tenga que leer desde múltiples lugares para poder abrir un programa o cargar un archivo, esto significa que quizás tenga que esperar a que los platos giren al lugar adecuado muchas veces antes de poder completar un comando. Si una unidad está dormida o en un estado de bajo consumo energético (low-power), puede que tarde varios segundos en ponerse a girar y empezar a operar.

Estructura lógica de un plato de un disco duro.

Desde el principio, estaba claro que los discos duros no podrían alcanzar las velocidades a las que los CPUs podían operar. La latencia en HDDs se mide en milisegundos, comparado con los nanosegundos que tarda un CPU típico. Un milisegundo es 1.000.000 nanosegundos, y un HDD suele tomar entre 10 y 15 milisegundos en encontrar datos y empezar a leerlos. La industria introdujo platos más pequeños, cachés de memoria en el disco, y mayores velocidades de giro para contrarrestar esta tendencia, pero hay un límite en qué tan rápido pueden girar los discos.

WD Velocitaptor. Las altas revoluciones a las que giran sus platos hace que este disco duro genere tanto calor que necesita funcionar montado en un disipador.

La familia VelociRaptor de Western Digital que funciona a 10.000 RPM es la serie de discos más rápidos que se hayan introducido al mercado consumidor, mientras que algunos discos nivel empresarial giraban hasta a 15.000 RPM. El problema es que, incluso con los discos que más rápido giran y con los cachés más grandes y los discos más pequeños, los HDDs siguen siendo dolorosamente lentos a comparación de un CPU.

En lo que se diferencian los SSDs.-

“Si le hubiera preguntado a la gente qué querían,
hubieran dicho que querían caballos más rápidos”

Henry Ford
anatomia interna de un hdd y de un ssd

Las unidades de estado sólido (Solid-state Drives) tienen ese nombre justamente porque no dependen de partes móviles o discos giratorios. En cambio, los datos se guardan en grupos de memoria flash NAND. La memoria flash NAND está hecha de algo llamado transistores de puerta flotante. A diferencia de los diseños de transistores usados en DRAM, las cuales deben ser refrescadas muchas veces por segundo, NAND está diseñada para retener su estado de carga incluso cuando no tiene alimentación eléctrica. Esto hace que NAND sea un tipo de memoria no-volátil.

Fuente: Wikipedia.

El diagrama anterior muestra un diseño de celda flash simple. Los electrones se almacenan en la puerta flotante, lo cual se lee como cargado = “0” o no-cargado = “1”. Si, en flash NAND, un 0 significa que hay datos en la celda – es lo opuesto de como solemos pensar sobre ceros y unos. La flash NAND se organiza en una matriz. A la matriz completa se le refiere como “bloque”, mientras que las filas individuales que componen una matriz se llaman “páginas”. Tamaños de página comunes son 2K, 4K, 8K o 16K, con de 128 a 256 páginas por bloque. Por tanto, el tamaño de cada bloque varía entre los 256KB y los 4MB.

Una ventaja de este sistema debería ser inmediatamente obvia. Ya que los SSDs no tienen partes móviles, pueden operar a velocidades muy por encima de aquellas de un HDD típico. La siguiente tabla muestra las latencias de acceso para medios de almacenamiento típicos expresadas en microsegundos.

Fuente: CodeCapsule

La flash NAND ni se acerca a la velocidad de la memoria principal (RAM), pero es varios ordenes de magnitud más rápida que un HDD. A pesar de que las velocidades de escritura son significativamente más lentas que las de lectura en flash NAND, siguen siendo muy superiores a medios giratorios.

Hay dos cosas qué notar en la tabla anterior. Primero, nótese cómo agregar más bits por celda en flash NAND tiene un impacto significativo en el rendimiento de la memoria. Es peor para escritura que para lectura – la latencia típica de NAND TLC es 4 veces peor que la de NAND SLC para lecturas, pero 6 veces peor para escrituras. Las latencias de borrado también sufren impactos significativos. El impacto tampoco es proporcional – NAND TLC es el doble de lenta que NAND MLC, a pesar de que solo puede almacenar 50% más datos (tres bits por celda, en lugar de dos). Esto también aplica a unidades QLC, las cuales almacenan más bits a niveles de voltaje variados en la misma celda.

La razón por la cual memoria flash NAND TLC es más lenta que MLC o SLC tiene que ver con la manera en que los datos entran y salen de las celdas. Con NAND SLC, el controlador solo necesita saber si el bit es 0 o 1. Con NAND MLC, cada celda puede tener cuatro valores – 00, 01, 10 o 11. Con NAND TLC, la celda puede tener 8 valores, y con QLC puede tener 16.

Leer el valor adecuado de una celda exige que el controlador de memoria utilice un nivel de voltaje preciso para determinar si alguna celda en particular está cargada.

Lecturas, Escrituras y Borrados.-

Una de las limitaciones funcionales de los SSDs es que a pesar de que pueden leer y escribir datos muy rápidamente en una unidad vacía, sobrescribir datos es mucho más lento. Esto se debe a que mientras los SSDs pueden leer y escribir datos a nivel de página, solo pueden borrar datos a nivel de bloques. Esto se debe a que el acto de borrar flash NAND requiere un alto nivel de voltaje. A pesar de que teóricamente se puede borrar NAND a un nivel de página, la cantidad de voltaje necesaria para ello pone bajo estrés a las celdas que se encuentran alrededor de las celdas que están siendo reescritas. Borrar datos a nivel de bloque ayuda a mitigar este problema.

La única manera de que un SSD actualice una página existente es copiar todo el contenido del bloque entero a memoria, borrar el bloque, y luego escribir los contenidos del bloque antiguo + la página que ha cambiado. Si una unidad está llena y ya no hay páginas vacías disponibles, el SSD debe escanear buscando bloques que ya se han marcado para borrado pero que no se han borrado aún, borrarlos, y escribir los datos a la página ahora borrada. Esta es la razón por la cual los SSDs se hacen más lentos a medida que pasa el tiempo – un SSD que se encuentra prácticamente vacío está lleno de bloques listos para escribir inmediatamente, un SSD que se encuentra casi lleno tiene más probabilidades de tener que pasar por toda la secuencia de programado y borrado (program/erase).

Si alguna vez has utilizado SSDs, quizás hayas escuchado el término “gargabe collection” (recolección de basura). Este es un proceso de fondo que permite que una unidad mitigue el impacto en rendimiento que tiene el ciclo de program/erase al realizar algunas tareas de fondo. La siguiente ilustración va paso a paso a través del proceso de recolección de basura.

Imagen cortesía de Wikipedia.

Nótese que en este ejemplo, la unidad ha tomado ventaja del hecho de que puede escribir muy rápido a páginas vacías al escribir los nuevos valores de los primeros cuatro bloques (desde A’ hasta D’). También ha escrito dos bloques nuevos, E y H. Los bloques desde A hasta D se han marcado como “stale” (si fueran comida: “vencidos”), lo que significa que contienen información que la unidad ha marcado como desactualizada. Durante un período de inactividad, el SSD moverá las páginas frescas hacia un bloque nuevo, borrará el bloque antiguo, y lo marcará como espacio libre. Esto quiere decir que la próxima vez que el SSD necesite realizar una escritura, lo hará directamente al bloque X ahora vacío, en lugar de realizar el ciclo program/erase nuevamente.

El próximo concepto a discutir es TRIM. Cuando borras un archivo desde Windows en un disco duro normal, el archivo no se borra de manera inmediata. En cambio, el sistema operativo le dice al disco duro que puede sobrescribir el área física del disco que contenía los datos borrados la próxima vez que necesite realizar una escritura. Es por esto que es posible “desborrar” archivos. Con un disco duro tradicional, al SO no le interesa saber dónde se escriben los datos o sobre el estado relativo de las páginas y los bloques. Con un SSD, esto es de importancia.

El comando TRIM permite que el sistema operativo le diga al SSD que puede saltarse la reescritura de ciertos datos la próxima vez que realice un borrado de bloque. Esto reduce la cantidad total de datos que la unidad escribe e incrementa la longevidad del SSD. Tanto lecturas como escrituras dañan la memoria NAND, pero las escrituras hacen mucho más daño que las lecturas. Afortunadamente, la longevidad a nivel de bloques no es un problema en flash NAND moderna. Mas información sobre longevidad de SSDs, cortesía de Tech Report, se puede encontrar aquí.

Los dos últimos conceptos a discutir son el balanceo de desgaste (wear-leveling) y amplificación de escrituras. Debido a que los SSDs escriben en páginas pero borran en bloques, la cantidad de datos escritos a la unidad siempre es más grande que aquello que ha cambiado. Por ejemplo, si haces un cambio a un archivo de 4KB, todo el bloque en donde se encuentran esos 4KB debe ser reescrito. Dependiendo del número de páginas por bloque y el tamaño de las páginas, puede que termines escribiendo 4MB de datos para actualizar un archivo de 4KB. La recolección de basura reduce el impacto de la amplificación de escrituras, como también lo hace el comando TRIM. Mantener un buen tanto de espacio libre en la unidad o el uso de sobreaprovisionamiento (over-provisioning) por parte del fabricante también pueden ayudar a reducir el impacto de la amplificación de escrituras.

El balanceo de desgaste se refiere a la práctica de asegurarse de que algunos bloques NAND no sean utilizados (escritos y borrados) muchas más veces que otros. A pesar de que esta técnica incrementa la esperanza de vida de la unidad al tratar de escribir a todos los bloques NAND por igual, puede incrementar la amplificación de escrituras. Con el fin de distribuir las escrituras equitativamente por toda la memoria, a veces es necesario programar y borrar bloques, aunque su contenido no haya cambiado. Un buen algoritmo de balanceo de desgaste busca equilibrar estos impactos.

El controlador del SSD. –

Debería ser obvio hasta este punto que los SSDs requieren mecanismos de control mucho más sofisticados que los discos duros, aunque no por ello haya que desmerecer a los medios magnéticos.

Los controladores de los SSDs están en su propia categoría. Suelen tener memoria RAM DDR3 o DDR4 incorporada para ayudar a gestionar la flash NAND. Muchas unidades también incorporan cachés SLC que actúan como buffers, incrementando el rendimiento de la unidad al dedicar NAND rápida para ciclos de lectura/escritura. Debido a que la flash NAND típicamente se conecta al controlador a través de una serie de canales de memoria paralelos, podrías pensar que el controlador de la unidad ejecuta el mismo balanceo de carga que una matriz de almacenamiento de alta gama – Los SSDs no despliegan RAID internamente, pero sus mecanismos de balanceo de desgaste, recolección de basura y gestión de caché SLC tienen paralelos en el mundo de los servidores.

Algunas unidades también utilizan algoritmos de compresión para reducir el número total de escrituras y alargar su tiempo de vida. El controlador del SSD maneja corrección de errores, y los algoritmos que controlan errores de un solo bit se han hecho cada vez más complejos con el pasar del tiempo.

Desafortunadamente, no podemos entrar en muchos más detalles sobre el funcionamiento de los controladores ya que las empresas suelen guardarse sus preciosos secretos. Gran parte del rendimiento de la flash NAND está determinado por su respectivo controlador, y las empresas no están dispuestas a revelar mucho de lo que pasa bajo el capó en sus productos, mucho menos a darle una ventaja a sus competidores.

Interfaces. –

Al principio, los SSDs usaban puertos SATA, igual que los discos duros. En años recientes, hemos visto un cambio hacia unidades M.2 – muy delgadas, alargadas, que se colocan directamente sobre la placa madre o sobre alguna especie de adaptador, como ser un riser card. A continuación se muestra un Samsung 970 Evo Plus.

Las unidades NVMe ofrecen un rendimiento más alto que las unidades SATA tradicionales debido a que soportan una inferfaz más rápida. Los SSDs convencionales conectados a través de SATA llegan a un máximo de aproximadamente 550MB/s en términos prácticos de lectura y escritura secuencial. Las unidades M.2 NVMe son capaces de alcanzar velocidades sustancialmente más altas, actualmente por encima de los 3GB/s.

El Camino por Delante.-

La memoria flash NAND ofrece enormes mejoras por encima de los discos duros, pero también tiene sus propios compromisos y desafíos. Se espera que sus capacidades y por ende sus precios-por-gigabyte sigan subiendo y bajando respectivamente, pero hay pocas probabilidades de que los SSDs le den alcance a los discos duros en precio-por-gigabyte. La miniaturización de los procesos de fabricación son un gran desafío para la memoria NAND – mientras que otros componentes de hardware se hacen mejores a través de la miniaturización, la memoria NAND se vuelve más frágil. Los tiempos de retención de datos y el rendimiento de escritura son intrínsecamente inferiores en NAND de 20nm a comparación de NAND de 40nm, incluso si la densidad de datos y la capacidad total se mejoran drásticamente. Hasta ahora, hemos visto unidades con memoria de hasta 96 capas en el mercado, y memorias de 128 capas parecen posibles a estas alturas. En general, el cambio hacia NAND 3D ha ayudado a mejorar la densidad de almacenamiento sin necesidad de miniaturizar el proceso o depender en escalado planar.

Hasta ahora, los fabricantes de SSDs han entregado mejor rendimiento al ofrecer estándares más rápidos, más ancho de banda, y más canales por controlador – además del uso de SLC mencionado anteriormente. Sin embargo, en el largo plazo, se supone que la memoria flash NAND sea reemplazada por algo más.

Qué cosa será ese “algo más” aún sigue en debate. Tanto RAM magnética como memoria de cambio de fase se han presentado como candidatos, aunque ambas tecnologías siguen en las etapas de desarrollo tempranas y deben solventar desafíos significativos antes de competir como un reemplazo a la memoria NAND. Si los consumidores notarán la diferencia es una pregunta abierta. Si has cambiado de un HDD a un SSD y luego a un SSD más rápido, habrás notado que la diferencia entre un HDD y un SSD es mucho mayor que la diferencia entre SSDs, incluso cuando se cambia desde un SSD relativamente modesto. Mejorar los tiempos de acceso de milisegundos a microsegundos es una gran cosa, pero mejorar de microsegundos a nanosegundos puede estar más allá de lo que los humanos podemos percibir.

Intel Optane se repliega al mercado empresarial.-

Desde 2017 hasta principios de 2021, Intel ofrecía sus memorias Optane como una alternativa a los SSDs basados en NAND para el mercado consumidor. Luego de ello, anuciaron que ya no venderían productos Optane en el espacio consumidor, excepto por la unidad híbrida H20. H20 combina memoria NAND QLC con un caché Optane para ofrecer buen rendimiento mientras reduce su costo. A pesar de que H20 es un producto interesante y único, no ofrece el mismo tipo de rendimiento que se esperaba de los SSDs Optane.

Optane se mantendrá dentro del mercado de servidores empresariales. A pesar de que su alcance es limitado, es lo más cercano a un contrincante para la memoria NAND. Los SSDs no usan memoria NAND – están hechos con un tipo de memoria no-volátil que se cree es implementada de una manera similar a RAM de cambio de fase, pero ofrecen un rendimiento secuencial similar a unidades NAND actuales, aunque con mejor rendimiento a menor número de colas. Su latencia también es aproximadamente la mitad de la latencia de flash NAND (10us vs. 20us) y tienen una durabilidad vastante superior: 30 escrituras de unidad completa por día (DWPD) a comparación de 10 para un SSD Intel de alta gama.

Optane está disponible en varios formatos y como un reemplazo directo para DRAM. Algunos CPUs Intel Xeon soportan despliegues multi-terabyte de Optane y soportan una combinación de DRAM y Optane que permite tener mucha más RAM en un servidor de lo que se podría tener usando solamente DRAM, al costo de latencias de acceso más elevadas.

Metas de rendimiento de Intel Optane.

Una de las razones por las cuales Optane no pudo hacerse lugar en el mercado consumidor fue que los precios de las memorias NAND bajaron dramáticamente en 2019 y se mantuvieron bajos durante el 2020, lo cual dificultó a Intel competir efectivamente.

Etiquetas: , , , , , ,

Leave a Comment