Principios de operación de los Discos de Estado Sólido (SSD)

Hola, espero cuentes con tiempo para algo de profundidad técnica (sólo la necesaria).

La motivación del presente post proviene de la lectura y revisión del libro “Inside Solid State Drives” publicado por Springer Science (algo que hice mayormente en la playa durante mis más recientes vacaciones familiares). El libro aborda con una considerable profundidad técnica los principios físicos y los mecanismos computacionales bajo los cuales operan los discos de estado sólido (Solid State Drives) que siguen ganando terreno en el datacenter y cuyo protagonismo es indudable como parte de la estrategia de optimización de desempeño para los usuarios empresariales de la nube.

El principal objetivo de éste post, que inicialmente fué una presentación para el personal interno de ingeniería del Service Provider para el que trabajaba, es aportar bases teóricas para toma de decisiones así como para el diseño de soluciones basadas en discos de tipo NAND-flash.

Origen de los SSD

No pretende esta sección ser un compendio histórico acerca del origen de los SSD, pero si es necesario anotar el vacío que pretenden ocupar en los diferentes tipos de almacenamiento de datos presentes en el mercado. La siguiente imagen, tomada del libro, puede ilustrar mejor:

ssd01

Velocidad de acceso vs. precio para diferentes tipos de medios de almacenamiento

Si bien los discos duros (Hard Disk Drives HDDs) rotacionales ocupan una vasta extensión de las implementaciones actuales de almacenamiento, presentan un mayor consumo medio de potencia y una menor resistencia al choque cuando se les compara con los SSD, frente a los cuales sus principales ventajas son el menor Costo Total de Adquisición y mayores capacidades disponibles en el mercado.

Por otro lado los SSD pueden brindar el desempeño que se obtiene de fuentes volátiles de almacenamiento como las DRAM (memorias) pero con la posibilidad de retener los datos por hasta 10 años sin polarización (es decir, con el dispositivo apagado), entregando una menor tasa TCO/IOPS a lo largo de su ciclo de vida.

Arquitectura de los SSD y el bus PCI

ssd02

Estructura básica de una celda de NAND Flash

La celda, o Non Volatile Memory (NVM) es una clase especial de MOSFET (transistor de efecto de campo) que cuenta con un mecanismo muy ingenioso -del que Schottky estaría orgulloso- que fué propuesto a finales de los años 60 por la profesora Susan Sze (¿y quien no estudió con uno de sus libros de Semiconductor Physics? ) y que con consiste en una compuerta flotante (Floating Gate) que operando como un capacitor de placas paralelas y que controlando el voltaje en la compuerta de control (Control Gate) puede almacenar electrones por hasta 10 años, que es el período de retención más comúnmente encontrado en los dispositivos disponibles en el mercado.

¿Cuántos electrones puede almacenar? Esto está determinado por el tipo de disco que se adquiere:

  • SLC: Single Level Cell puede almacenar solo un electrón. Por ellos las capacidades ofrecidas son menores pero al tener que operar solo 1 bit, su duración es mayor.
  • MLC: Multiple Level Cell puede almacenar dos electrones. Brinda mayor capacidad a costo de menor número de ciclos erase/write disponibles.

Los SSD se acomodan en arreglos cuyos bit line se conectan en forma serial y responden a la lógica de la compuerta NAND, de ahi que se conozcan como NAND arrays. En esa configuración un arreglo NAND se compone de 8192 bloques, cada uno de 64 páginas y cada página de 4k bytes. La página es la unidad mínima de escritura mientras que el bloque es la unidad mínima de borrado, de ahi que ésta última operación sea más intensiva para un arreglo de SSDs.

Finalmente, las celdas NVM implementan dos operaciones: program (almacenamiento de bits) y erase (remoción de bits).

Confiabilidad de los SSD

Si bien el objetivo de los fabricantes de dispositivos Flash es almacenar la carga por al menos 10 años, los electrones en la compuerta flotante pueden escapar de su lugar por varios mecanismos pero principalmente por la degradación del óxido que actúa como aislante y que se agota debido al constante tunelamiento (que es como se conoce en física del estado sólido a toda situación en que una partícula atraviesa niveles de energía por la acción de una fuerza externa) en las operaciones de program/erase.

Cuando los electrones escapan de la FG (Floating Gate) se pueden acumular en superficies de la celda NVM creando trampas de carga que son como escalones que progresivamente facilitan aún más el escape de nuevos electrones, lo que a la larga reduce el voltaje de umbral que es el pilar de operación de un MOSFET y el que altera su estado de encedido a apagado y viceversa.

ssd07

Voltaje de umbral vs. tiempo de retención de datos

En la gráfica anterior se puede evidenciar la degradación del voltaje de umbral a lo largo de los años de uso. Si éste voltaje baja mas allá del nivel de lectura (read level) el memory controller puede marcar esa celda como borrada aunque haya electrones allí almacenados (pérdida inmediata de datos).

Por otro lado si los electrones se fugan hacia el substrato por tunelamiento, ésto puede elevar el voltaje de umbral necesario para activar la celda, y puede llegar al punto que el memory controller marque la celda como escrita o inválida aunque esté vacía, afectando la capacidad disponible y el desempeño del arreglo.

En la gráfica anterior el rango entre no carga y el read level se conoce como Ventana de lectura, y en ésto no todos los SSDs son creados iguales: los MLC tienen menor endurance (durabilidad) pues su ventana de lectura es una fracción de aquella en los SLC, por lo que una pequeña (y muy probable) variación del voltaje de umbral ya produce los errores mencionados anteriormente.

Funciones del Memory Controller

  • Wear leveling: busca nivelar el número de ciclos program/erase a lo largo de las celdas en un arreglo NAND. Lo lleva a cabo mapeando updates de un sector lógico hacia un sector físico diferente mientras que el sector físico original se marca como inválido.
  • Garbage collection: elimina las copias obsoletas, aunque genera operaciones adicionales de write al mover la última copia válida al sector libre para eliminar el bloque inválido
  • Implementa el Error Correction Code seleccionado por el fabricante
  • Desarrolla las labores de Bad Block Management

La amplificación de Write: ¿de dónde viene?

El diagrama a continuación enuncia los pasos lógicos que lleva a cabo el memory controller y que resultan en amplificación de las operaciones de escritura:

ssd05La definición del WAF (Write Amplification Factor) se resume en la tasa entre la cantidad de datos efectivamente escritos al flash sobre la cantidad de datos enviados por el host para escritura al SSD. Esta información debe ser obtenida  tanto en el lado del host como del memory controller, para las que los fabricantes como Samsung, Intel, Kingston, Sandisk, entre otros suelen proveer herramientas.

Es posible reducir el WAF que viene de fábrica asignándole más espacio de bloques libres (y no utilizables) al disco SSD, lo que se conoce como Overprovisioning. Es decir, otorgándole más espacio libre a la controladora desde el nacimiento del arreglo. Este procedimiento también se conoce como under-formatting y lo veremos un poco más ampliado a continuación.

Overprovisioning

El espacio de reserva en un SSD (ó spare space) tiene como objetivo proveer una bodega de bloques libres que el memory controller usa para su proceso de garbage collection y escrituras temporales. La asignación de este espacio de repuesto se conoce como overprovisioning en el argot de los Flash y constituye el limite último de vida de un SSD: una vez el spare space se agota, el disco alcanza el endurance y no recibe actualizaciones a bloques ya escritos, momento en que el host (que en el argot Flash es todo aquello por encima del memory controller) debe marcarlo como fallido.

ssd06

Diagrama lógico de un SSD con espacio libre previamente reservado (Overprovisioning/underformatting)

El bus PCI

Esta basado en carriles (lanes) seriales donde cada uno se comunica de forma Full Dúplex a velocidades que en PCIe Gen 3 alcanzan 1 GB/s por carril.

ssd03

Comunicación por carriles entre dispositivos PCI y hacia el root (board)

Los dispositivos PCI funcionan con un número de carriles que va entre 1 y 32 lo que está definido por el tamaño del slot (x1, x4,…, x32).

El bus PCI se comunica punto a punto entre dispositivos por lo que actualmente se obtienen tasas de transferencia varios órdenes de magnitud por arriba de interfaces como SATA, por lo que se constituyen como una mejor opción para obtener el mayor rendimiento de los discos SSD.

ssd04

Comparativo de desempeño entre interfaces de conexión al almacenamiento

En otras palabras: si realmente necesita explotar el potencial de desempeño de un SSD, debe considerar el uso de PCIe como interface hacia los discos, no los tradicionales buses SATA.

El lugar de los SSD en el datacenter

Debido a las limitaciones inherentes a la operación de las celdas NVM, y que cubriré mas adelante, los SSD no constituyen una cura para todos los males y deben ser apropiadamente elegidos dentro del diseño de la infraestructura convergente que hoy se requiere. Está generalmente aceptado en la academia y la industria que los arreglos NAND tienen una afectación mínima en desempeño debida a búsquedas de pequeños archivos y metadatos mientras que su rendimiento en escritura se ve negativamente impactado por las operaciones que lleva a cabo el memory controller para tratar de alargar la vida útil del disco (lo que se mide con el factor de amplificación de escrituras o WAF por sus siglas en inglés).

Es por lo tanto, una aplicación ampliamente aceptada de los SSD en el datacenter el utilizarlos para mover allí lecturas frecuentes mientras que las escrituras frecuentes van a los HDD. Decidir que operacion (lectura/escritura) atraviesa un umbral de frecuencia para ser movido automáticamente al tipo de disco apropiado es una tarea del software de control sobre los SSD, por lo que la mitad del éxito en una estrategia all-flash le corresponde al software de control: si se conectan discos SSD a controladoras que no los administran como tal y si sobre esa capa no hay una que administre datos frecuentes/infrecuentes, se perderá gran parte del beneficio del almacenamiento flash al tiempo que se pondrán en riesgos cargas de trabajo que dependan del Flash para escrituras, en lo que tiene un desempeño y durabilidad limitadas.

 

 

Recursos adicionales

Intel ha publicado una guía que se aplica para discos SSD incluso de otros fabricantes sobre cómo modificar el spare space, pues de esa manera podría elevarse el endurance natural de un disco a costo de menor capacidad disponible

Para hacer pruebas significativas a discos SSD, es necesario llevar a cabo preconditioning que consiste en hacer escrituras aleatorias al arreglo para que entre a operar el algoritmo de Wear Leveling. Este y otros métodos se explican en éste post.

Finalmente una herramienta para llevar a cabo estas pruebas.

Preguntas/aportes son bienvenidas en los comentarios.

Saludos!

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s