Introducción a los Pen Drive, Tarjetas de Memoria o Discos Duros Sólidos (SSD) -Parte 2- Memorias Flash

En esta entrada queremos explicaros -sin profundizar demasiado- los diferentes tipos de memoria utilizados hoy en día en los dispositivos flash.

La idea, es hacer un repaso des de los orígenes cercanos hasta hoy en día, explicando el funcionamiento, características así como puntos a favor y en contra.

Una memoria flash -en términos generales- podríamos describirlo como un amplio cajón donde almacenar la información. Este cajón estaría dividido en celdas o pequeños departamentos, donde la suma de estas celdas daría lugar a un fichero.

Laby Recuperación de Datos
Celdas dentro de un bloque de memoria

¿Qué se almacena en estas celdas? En realidad, no se guarda la información tal como nos la imaginamos, sino que son pequeñas cargas eléctricas (Electrones) las que están guardadas dentro de las celdas. Dependiendo de la carga de la celda y de su posición, estas cargas equivaldrían a los famosos 0 y 1 del código binario utilizado en cualquier sistema informático.

Para poder saber si esa celda contiene un 0 o 1, se aplica un voltaje entre la entrada y la salida. Si la celda contiene carga y está en una posición determinada en su interior mostrará un valor. Si la carga que tiene es pequeña y no está en la posición determinada, mostrará otro valor. Recordemos, siempre hablando de 0 y 1.

La suma de estos 0 y 1 consecutivamente, darían paso a lo que se conoce como un fichero convencional.

Digamos que el funcionamiento es bastante más complejo, pero tampoco queremos profundizar demasiado. La idea, es tener una visión general.

Las memorias más usadas en la era de los USB y tarjetas de memoria eran las llamadas TSOP 48. Son unos chips de dimensiones reducidas ancho (12mm) x largo (18,4mm) x grueso (0,5mm) y cuyas capacidades oscilaban entre los 128 MB y los 4 GB por chip aproximadamente.

Laby Recuperación de Datos

 

Son llamados también los SLC (Single Level Cell) o su traducción Celdas de una sola capa.

El SLC, podríamos hacer un símil, con una tarta. Esta sería de un solo piso.

Laby Recuperación de Datos
Una sola capa

El acceso a este tipo de memorias era «lento» para los estándares de hoy en día y con poca capacidad de almacenamiento por bloque, además de un coste elevado. Sin embargo era MUY fiable. A día de hoy, muchos USB’s antiguos (Ej: 1 GB de capacidad) siguen funcionando sin problemas.

Posteriormente aparecieron los MLC (Multi Level Cell). Como ya os podréis imaginar, la principal diferencia entre los SLC y los MLC era el número de capas en el mismo chip. En este caso se usaban dos capas de celdas, en el mismo formato (TSOP 48).

Laby Recuperación de DatosEn este periodo de tiempo, aparecieron nuevos bloques de memoria denominados BGA.

Bloques de memoria donde no tienen conexiones con «patitas» como los TSOP, más rápidos y delgados.

BGA 52Estos chips van soldados directamente a la placa de los dispositivos mediante bolitas de estaño, donde al aplicar un calor, estas se funden, y el «propio peso» del chip, hace que aplaste el estaño fundido hasta quedar completamente unidos.

El tener dos capas, permite almacenar mucha más información en un mismo espacio y además leerla más rápida. Además contienen celdas de memoria de «reserva» por si se van estropeando algunas, poderlas reemplazar. Por otro lado permiten lecturas de las celdas con diferentes voltajes. A menor voltaje (dentro de unos parámetros) menos tasa de errores aunque más lentitud.

Pero conlleva algunos problemas:

Todos los chips de memoria Flash tienen una vida útil determinada. Es un tema físico la propia tecnología usada y a día de hoy, representa un quebradero de cabeza para los fabricantes. ¿En qué se basa dicha limitación?

En ciclos de lectura y escritura. Las celdas, permiten unos ciclos de lectura y escritura, que pueden variar de 10.000 ciclos a más de un millón de ciclos. Todo dependerá del tipo de chip y de la calidad de éste. (Y no olvidemos una cosa, el mercado demanda, alta velocidad, alta capacidad a bajo coste… en detrimento de la calidad del chip)

De menor a mayor desgaste podríamos decir qué sería la lectura (Aquí hablamos de muchos millones de ciclos de lectura) y en mayor medida la escritura. El mayor desgaste se produce durante el ciclo de borrado por dos motivos. El primero es por el voltaje aplicado para realizar dicho proceso. Se necesita un voltaje sumamente alto para realizar el proceso de borrado. Además por construcción no se permite el borrar solo una celda, si no que se borra en bloques consecutivos. Por este motivo (lo explicaremos en otro apartado) entenderemos que los fabricantes intenten por todos los medios el realizar el proceso de borrado.

Imaginemos que queremos borrar el contenido de esta celda:

Cajon_borrar_celdaEn realidad, lo que se realiza es el siguiente proceso:

Cajon_Borrado(Previamente el controlador se ha encargado de mover el resto de información a otro lado).

Por otro lado, nos encontramos con otro problema. Al haber muchas más celdas juntas en el mismo espacio físico y añadiéndole otra capa por encima se producen errores. Los errores podríamos simplificarlos de la siguiente manera: Para guardar y/o modificar la información de las celdas, se aplica un voltaje y las celdas dependiendo de si han de «contener» 0 o 1 cogerán o no ese voltaje. El problema es que pueden haber «interferencias» o saltos «de electricidad» entre celdas, por lo que una celda sin carga, podría «absorber» carga de la celda contigua y quedar en un estado «raro» ni 0 ni 1.

Esta celda daría como resultado un error de lectura. ¿Se pueden evitar dichos errores? La respuesta es: En cierto modo sí.

La mayoría de MLC, en cada sector (agrupación de celdas por llamarlo así) reservan un pequeño espacio debajo con un código ECC. El código ECC es el resultado de aplicar un algoritmo al contenido del sector dando un valor. Por tanto, realizando la operación inversa, podríamos conseguir el valor original.

Dicho de forma más sencilla:

Imaginemos que dentro del sector tenemos el contenido cuyo valor es el número 2.

Al realizar una operación matemática obtenemos un ECC cuyo valor es el 6.

Sector_ECCSi sabemos la operación aritmética realizada, podremos devolver el contenido original del sector defectuoso.

x*3=y

2*3=6

si el contenido del sector es 1,8 porqué algunas celdas están dañadas, podríamos devolver el contenido original al aplicar la operación inversa:

X=y/3

x=6/3 -> 2 (Que era el contenido original del sector).

Obviamente esto es una simplificación muy grande del funcionamiento real. Y hay que entender que no solo está el número 2 dentro del sector, sinó que hay muchos (generalmente unos 512 bytes) y el ECC generalmente es de unos (12-24-52bytes). Por tanto, si un sector está COMPLETAMENTE dañado no se puede recuperar con el ECC. Dependiendo del tamaño del ECC se podrá recuperar mayor o menor cantidad de datos del sector.

Hay que tener en cuenta también, que a mayor tamaño del ECC, menor espacio para almacenar datos en los sectores. Por tanto, una forma de estar muy seguros que no habría problemas con los sectores y su información, sería creando un ECC muy grande, pero a costa de mermar el espacio disponible, por tanto de un pen drive de 16 GB podríamos utilizar unos 10 o 12 para espacio.

Rusolut NAND FLASH READER SOLUTION
Rusolut NAND FLASH READER SOLUTION

Aquí se puede apreciar un sector leído con error CRC y posteriormente el mismo sector leído y corregido mediante el ECC.

El CRC quizás os suene al haber intentado copiar algún fichero (windows / mac / linux) y ha salido un mensaje de Error de Redundancia Cíclica.

 

Por otro lado tendríamos la TLC (La evolución de las MLC) (Tripe Level Cell), es decir, tres capas en el mismo espacio.

¿Qué se consigue con las TLC? Más velocidad y más capacidad a costa de mayor tasa de errores y menores ciclos de lectura.

tarta_TLCLos pines están más focalizados en el núcleo de las celdas, para intentar evitar pérdidas y producir ruídos electrónicos.

TLCComo las MLC permiten diferentes voltajes de lectura para reducir el ruido electrónico y por tanto evitar la tasa de errores. No obstante, tienen unos ciclos de vida bastante limitados en lo referente a escritura / borrado de celdas.

Artículos relacionados