Breve introducción al almacenamiento flash
Gracias al desarrollo de la tecnología de consumo podría afirmar que, a día de hoy, buena parte del público general ha oído hablar de los discos de estado sólido o de la tecnología flash.
Empezando por lo básico, un disco de estado sólido (o SSD) es un dispositivo de almacenamiento persistente (no volátil) en donde se ha encapsulado una determinada cantidad de memoria bajo una carcasa similar a la de un disco duro convencional (HDD) y que además utiliza el mismo interface de comunicación que éste (SATA o SAS). Digo “utiliza” por poco tiempo ya que en otra nueva entrada de este blog aclararé un poco esto.
La principal gran diferencia entre un SSD y un disco duro convencional es que el SSD no está compuesto por platos unidos por un eje girando a gran velocidad donde un cabezal realiza las operaciones de lectura y escritura, es decir, no hay partes mecánicas ni tecnología rotacional. La memoria encapsulada en la carcasa del SSD es de tipo flash.
Esto significa que la celda de memoria flash es similar a un transistor convencional, pero con un electrodo de puerta adicional separado del normal (puerta de control) y aislado eléctricamente por un dieléctrico (que normalmente es dióxido de silicio). Mediante este diseño, teóricamente, la puerta flotante no es capaz ni de cargarse ni de descargarse, lo que hace que la carga inicial que se almacena en ella se conserve. En realidad lo que ocurre es que al aplicar un determinado voltaje sobre la puerta de control los electrones son empujados a través de la fina capa de dióxido de silicio quedando atrapados en la puerta flotante.
La fabricación de memoria flash utiliza dos tipos de implementación según la disposición de los FGTs en la matriz: NOR y NAND.
En la actualidad, la tecnología más pequeña de impresión en NAND es de 15nm (la distancia entre las word-lines en la matriz)…de hecho éste será probablemente el límite de integración al que llegará esta tecnología (conocida como 2D-NAND) ya que gracias la tecnología 3D-NAND o V-NAND permite mantener el nivel de integración aumentando la densidad.
En lo sucesivo me referiré siempre a tecnología NAND, que es la que se emplea en la industria del almacenamiento.
La manera más sencilla de leer el estado de la celda o transistor es comprobar la diferencia de potencial entre la fuerte o surtidor y el drenador del FGT: si la corriente no fluye entre ambas entonces la puerta flotante está cargada y la celda se encuentra programada, por lo que se le da el valor binario “0”. Si la corriente fluye entonces la puerta flotante no tiene carga por lo que la celda ha sido borrada asignando un valor binario “1”.
La siguiente imagen muestra una celda Flash programada donde los electrones han quedado atrapados en la puerta flotante (valor=0).
Adicionalmente es posible distinguir entre posibles cantidades de carga en la puerta flotante, lo que permite codificar más de dos estados de carga en mas de un bit.
En el caso de la tecnología MLC (Multi Level Cell), se codifican hasta 4 estados de carga en 2 bits por celda (por ejemplo, y por hacer las cosas más simples: 0V=00, 1V=01, 2V=10, 3V=11), doblando así la capacidad de almacenamiento de información por celda. El inconveniente que se presenta aquí es la tolerancia: dado que los estados de carga están muy cerca los unos de los otros la tolerancia es menor y por tanto hay mas tendencia al error. Esto significa que, para compensar posibles problemas, se implementan una serie de mecanismos adicionales de corrección y detección de errores mas exhaustivos que, por supuesto, requieren mas bits de ECC.
En el caso de la tecnología TLC (Three Level Cell) se codifican 8 estados de carga en 3 bits por celda, triplicando la capacidad original del SLC (de nuevo y por hacer las cosas muy simples: 0V=000, 0,5V=001, 1V=010, 1,5V=011, 2V=100, 2,5V=101, 3V=110, 3,5V=111).
Empezando por lo básico, un disco de estado sólido (o SSD) es un dispositivo de almacenamiento persistente (no volátil) en donde se ha encapsulado una determinada cantidad de memoria bajo una carcasa similar a la de un disco duro convencional (HDD) y que además utiliza el mismo interface de comunicación que éste (SATA o SAS). Digo “utiliza” por poco tiempo ya que en otra nueva entrada de este blog aclararé un poco esto.
La principal gran diferencia entre un SSD y un disco duro convencional es que el SSD no está compuesto por platos unidos por un eje girando a gran velocidad donde un cabezal realiza las operaciones de lectura y escritura, es decir, no hay partes mecánicas ni tecnología rotacional. La memoria encapsulada en la carcasa del SSD es de tipo flash.
¿Qué es esto de la memoria flash?
La tecnología flash, inventada en 1980 por el Dr. Fujio Masuoka (TOSHIBA), no es en sí novedosa ya que lleva en realidad en el mercado más de 20 años (la primera CompactFlash de solo 4Mb fue comercializada por SanDisk en 1994), pero su evolución y crecimiento está marcando un antes y un después en la industria del almacenamiento.
Como se ha mencionado anteriormente, la memoria flash es de tipo no-volátil, es decir, las celdas de memoria mantienen su estado incluso tras dejar de recibir corriente (al contrario que con otros tipos de tecnologías de memoria, como la DRAM, que pierden el contenido tras dejar de recibir alimentación).
La base tecnológica de la memoria flash es el transistor MOS de puerta flotante (FGMOS o FGT); he de reconocer que cuando llegué a este punto hace unos años me vi obligado a desempolvar uno de los libros que más recuerdo de mi etapa universitaria: Microelectrónica de J. Millman. Al grano, un transistor de puerta flotante (FGT) es algo similar a esto:
Como se ha mencionado anteriormente, la memoria flash es de tipo no-volátil, es decir, las celdas de memoria mantienen su estado incluso tras dejar de recibir corriente (al contrario que con otros tipos de tecnologías de memoria, como la DRAM, que pierden el contenido tras dejar de recibir alimentación).
La base tecnológica de la memoria flash es el transistor MOS de puerta flotante (FGMOS o FGT); he de reconocer que cuando llegué a este punto hace unos años me vi obligado a desempolvar uno de los libros que más recuerdo de mi etapa universitaria: Microelectrónica de J. Millman. Al grano, un transistor de puerta flotante (FGT) es algo similar a esto:
Esto significa que la celda de memoria flash es similar a un transistor convencional, pero con un electrodo de puerta adicional separado del normal (puerta de control) y aislado eléctricamente por un dieléctrico (que normalmente es dióxido de silicio). Mediante este diseño, teóricamente, la puerta flotante no es capaz ni de cargarse ni de descargarse, lo que hace que la carga inicial que se almacena en ella se conserve. En realidad lo que ocurre es que al aplicar un determinado voltaje sobre la puerta de control los electrones son empujados a través de la fina capa de dióxido de silicio quedando atrapados en la puerta flotante.
La fabricación de memoria flash utiliza dos tipos de implementación según la disposición de los FGTs en la matriz: NOR y NAND.
- NOR: los FGTs se disponen en paralelo en la matriz. Ventajas: menor latencia (decenas de nano-segundo) y acceso aleatorio muy rápido. Como inconvenientes: menor densidad (tamaño de celda de 10F² o 29,6 micrones) y un ciclo de programación/borrado mas lento. NOR se suele emplear en memorias integradas como emulaciones de ROM para micro-códigos de sistemas, buffers, etc.
- NAND: los transistores de puerta flotante se disponen en serie, generalmente en 16 o 32 celdas. Las ventajas que aporta este tipo de disposición son una mayor densidad (tamaño de celda de 5F² o 12,9 micrones), un acceso secuencial más rápido y sobre todo unos ciclos de programación/borrado mucho más rápidos (ya que varias celdas pueden ser re-programadas simultáneamente en una única operación). El inconveniente es una mayor latencia (decenas de micro-segundo). Este tipo de disposición es la que encontramos en memorias USB, SSDs, teléfonos móviles, etc.
NOTA: “F” significa “feature size” y es tamaño mínimo de impresión de un chip flash.
En la actualidad, la tecnología más pequeña de impresión en NAND es de 15nm (la distancia entre las word-lines en la matriz)…de hecho éste será probablemente el límite de integración al que llegará esta tecnología (conocida como 2D-NAND) ya que gracias la tecnología 3D-NAND o V-NAND permite mantener el nivel de integración aumentando la densidad.
En lo sucesivo me referiré siempre a tecnología NAND, que es la que se emplea en la industria del almacenamiento.
SLC, MLC, TLC…
Ahora la cosa empieza a ponerse interesante ya que, según lo expuesto anteriormente, éste funcionamiento en dos estados diferenciados en la puerta flotante del transistor es lo que permite la codificación binaria directa (es decir, he atrapado electrones o los he dejado escapar).La manera más sencilla de leer el estado de la celda o transistor es comprobar la diferencia de potencial entre la fuerte o surtidor y el drenador del FGT: si la corriente no fluye entre ambas entonces la puerta flotante está cargada y la celda se encuentra programada, por lo que se le da el valor binario “0”. Si la corriente fluye entonces la puerta flotante no tiene carga por lo que la celda ha sido borrada asignando un valor binario “1”.
Básicamente esto es lo que conoce como tecnología SLC (Single Level Cell), donde los dos posibles estados de carga se codifican en un bit por celda o FGT. En realidad, y dado que existen otros factores como fugas eléctricas, etc., el valor por encima de un umbral máximo se considera “0” y el valor de voltaje por debajo de un umbral mínimo se considera “1” (nótese que el estado básico de la celda se considera el “1”); un valor que se encuentre entre el umbral máximo y el mínimo se considera “error” (y a nivel lógico superior habrá que implementar por tanto mecanismos de corrección de errores).
A continuación se muestra una celda FLASH borrada (valor=1):En el caso de la tecnología MLC (Multi Level Cell), se codifican hasta 4 estados de carga en 2 bits por celda (por ejemplo, y por hacer las cosas más simples: 0V=00, 1V=01, 2V=10, 3V=11), doblando así la capacidad de almacenamiento de información por celda. El inconveniente que se presenta aquí es la tolerancia: dado que los estados de carga están muy cerca los unos de los otros la tolerancia es menor y por tanto hay mas tendencia al error. Esto significa que, para compensar posibles problemas, se implementan una serie de mecanismos adicionales de corrección y detección de errores mas exhaustivos que, por supuesto, requieren mas bits de ECC.
En el caso de la tecnología TLC (Three Level Cell) se codifican 8 estados de carga en 3 bits por celda, triplicando la capacidad original del SLC (de nuevo y por hacer las cosas muy simples: 0V=000, 0,5V=001, 1V=010, 1,5V=011, 2V=100, 2,5V=101, 3V=110, 3,5V=111).
Comentarios
Publicar un comentario