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

Una vez explicada la función y los tipos de bloques de memoria, llega el turno de hablar de los controladores de memoria y todas las funciones qué realizan (Y no son pocas…)

Sus funciones, van más allá de comunicarse entre el PC y la memoria y viceversa. Llevan el control de los datos -cómo y dónde están guardados- mediante un índice que van creando dinámica mente, controlan las tasas de errores y si es necesario, las corrigen, se encargan de comprobar que las celdas funcionen correctamente y en caso contrario, las reemplazan a través de las celdas de repuesto que tienen todos los bloques de memoria. Además se encarga de “tachar” de la lista de celdas disponibles las dañadas.

Realizan operaciones complejas para evitar que siempre se trabaje sobre una zona y evitar la degradación de esas celdas (mediante complejos algoritmos). En caso de tener más de un chip para guardar la información, trocean los datos que le van llegando en 1, 2,4,8… etc partes y las vuelcan en paralelo a los bloques de memoria.

Podríamos resumirlo en una sola imagen:

multitareasY por supuesto, sin equivocarse ni cometer errores… (Aunque no siempre :P)

El primer apartado que explicaremos -siempre de forma genérica- será el índice o control de datos.

Aquí hay que diferenciar entre el índice de ficheros del propio sistema en el que esté formateado el dispositivo (Por ejemplo FAT32, NTFS, HFS) y el índice interno del controlador.

Imaginemos una biblioteca donde tenemos un registro de todos los libros, clasificados por títulos, categoría, etc. Esto sería el índice del propio sistema de ficheros. Nos permite saber donde está el libro (O en nuestro caso el fichero que queremos visualizar).

bibliotcaUna vez tenemos el libro en nuestras manos, estaría el segundo índice, el del propio libro (En este caso el controlador) que nos permitiría saber exactamente donde está cada palabra o frase -convertido en lenguaje de informática- cada sector o grupo de sectores

fig28.6En la fotografía anterior, podemos ver como el fichero llamado File 1(1) empieza en la celda 2 y continua en la celda 8. Nos vamos a la celda 8 y vemos que dicho fichero nos pide que continuemos en la celda 20. Nos vamos a la celda 20 y de aquí nos manda a la celda 18.

Aunque pueda parecer un poco lioso, es la forma en la que el controlador tiene guardado el índice de cada celda, su contenido y anota constantemente cualquier cambio o registro que se pueda producir.

Otro paso qué realiza, es el de corrección de errores: Tal como explicamos en la sección de los bloques de memoria, lo refrescaremos aquí:

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).

 

El controlador es el encargado en cada operación realizada, de asegurarse que la lectura o escritura ha sido correcta.

Otra función a tener en cuenta es el control de las celdas y el estado de éstas. Tras el uso continuado, como se relató en la anterior entrada, las celdas de los bloques de memoria se van dañando progresivamente. El controlador tiene en cuenta en todo momento cuantas escrituras y borrados se han aplicado en las celdas e intenta repartir la carga de trabajo a lo largo de todos los bloques de memoria. De esta forma intenta evitar que siempre se trabaje sobre una misma zona.

Pero, ¿Qué pasa si hay algún bloque de celdas que se daña o el controlador considera qué se ha utilizado demasiado?

En cada bloque de memoria existen las celdas utilizables y las celdas de recambio. Cuales serán las utilizables y las de recambio lo decidirá el fabricante. El controlador de memoria, tiene un listado interno creado en el momento de salir de fábrica con todos las celdas disponibles y las celdas de reserva de cada bloque. Sería el Translator del disco duro o en nuestro caso, el Translator del dispositivo Flash. Sin embargo, este Translator es dinámico, porqué el controlador puede decidir en base a sus parámetros que celdas usar y cuales no usar…

Si hay disponibles 100 celdas para almacenar datos, puede ser que el bloque de memoria contenga 10 celdas adicionales para substituir en caso de estar dañadas. Como en un equipo de fútbol. 11 jugadores disponibles sobre el campo y 5 disponibles en el banquillo, listos para reemplazar al jugador dañado. En este caso la decisión la tomaría el enternador y en un dispositivo flash, esta acción la realizaría el controlador.

 

banquilloLas celdas de reserva NO se pueden usar ni almacenar datos en ellas -no son visibles para el usuario final-, a menos que el controlador decida usarlas. En el momento que en una celda de repuesto entra en acción, la celda que estaba funcionando, se “desactiva” del uso. Es decir, el usuario no podrá acceder a ella, porqué el controlador ha decidido prescindir de ella. Y esta situación nos lleva a la siguiente pregunta.

¿Qué pasa con las celdas que el controlador decide no usar? ¿Borra la información que hay dentro?

La respuesta es NO. Simplemente decide NO usarlas copiando (si es necesario) la información de las celdas a las celdas de reserva, pero el contenido sigue estando intacto.

¿Y si decidimos hacer un borrado de todo el disco mediante software qué nos garantice un borrado seguro? ¿Se borraran esa celdas qué ahora no se usan? Respuesta: NO. De la misma manera que en los discos duros con los sectores defectuosos, aquí tampoco se eliminan.

hexedit

Como el controlador ha desestimado el usar esas celdas, para el, ya no existen, por tanto, si se decide hacer un borrado por completo del disco, solo se borraran las celdas utilizables por el Translator del controlador. En nuestro PC lo veremos todo vacío, sin embargo los bloques de memoria, contendrán celdas con fragmentos de información. Estos fragmentos no serían accesibles a través de ningún software ni nada parecido, por tanto es un proceso “relativamente” seguro dicho borrado. No obstante, si se desoldasen los bloques de memoria y se leyeran en un lector adecuado, sería posible acceder a las celdas que el controlador desestimó en su momento, dado que los lectores, leen el 100% del bloque de memoria (Las celdas disponibles y las de reserva).

Una diferencia entre el sistema de Glist de los discos duros y la de la memoria flash, es que a día de hoy mediante utilidades y máquinas especiales sí es posible acceder a la Glist de los discos duros. No obstante en las memorias Flash, no es viable a día de hoy.

 

Otro proceso a tener en cuenta derivado de la problemática de los ciclos de vida en los bloques de memoria, son los cifrados XOR o SCRAMBLERS.

Los fabricantes, son conscientes de la limitación física que hay hoy en día. Por tanto, han de buscar soluciones para intentar alargar la vida del dispositivo tanto como sea posible. Una de las manera de realizar lo, es utilizando algoritmos complejos que eviten siempre el escribir y/o borrar siempre una zona determinada.

¿Cómo se consigue esto?

Cada vez que escribimos información en el dispositivo flash, el controlador le aplica un algoritmo y del contenido original pasamos a un contenido “basura”. Este contenido basura tiene unas características adicionales y es que sigue un patrón cíclico para evitar que siempre se sobrescriba en un lado. Para que nos hagamos una idea, si a toda la información que entra, le aplicas una operación matemática (lo multiplicamos por 2) y al final de la operación le sumamos 1. De esta forma conseguiremos que no se escriba en la misma posición.

Aquí tenéis unos ejemplos, donde veréis el patrón cíclico de la información -Cortesía de RUSOLUT líderes en recuperación de tecnología NAND-

Rusolut Tech

Rusolut Tech

Rusolut Tech

Rusolut Tech

Por un lado, ayuda a evitar la degradación de las celdas. Por otro lado, ayuda a proteger los datos del usuario, dado que al aplicarse complejos algoritmos, si los bloques de memoria se leen en lectores solo obtendremos datos sin sentido o basura.

No obstante, muchas claves XOR o SCRAMBLER se han podido descifrar usando ingeniería inversa tras muchas horas de trabajo. Esto permite recuperar datos perdidos en un dispositivo tipo flash.

Otros fabricantes, para garantizar TODAVÍA MÁS la seguridad utilizan aparte del SCRAMBLER un cifrado AES 128 o 256 BITS. Primero se cifra y luego se vuelve a cifrar…Y a día de hoy, de momento no se han podido recuperar la gran mayoría de ellos.

 

La siguiente función a destacar, sería la manera como se guardan los datos. Si existe un solo bloque de memoria, la cosa está clara. Ir llenándolo hasta agotar el espacio. Sin embargo, si hay más bloques de memoria la cosa se complica. La idea de una memoria Flash es ser rápida tanto en lectura como en escritura. ¿Cómo se consigue? Usando el formato RAID 0.

RAID 0El formato tipo RAID 0 funciona de la siguiente manera. Si tenemos un fichero llamado A, nuestro dispositivo FLASH tiene 4 bloques de memoria y lo queremos guardar, el controlador, detecta cuantos bloques de memoria hay y los reparte equitativamente entre estos bloques. Haciendo una escritura en paralelo. De esta forma puede escribir 4 fragmentos a la vez. No significa que si el fichero ocupa 4 MB, 1 MB de información consecutiva vaya al bloque 1, luego otro MB vaya al bloque 2 y así.

Puede realizar cortes por ejemplo de 0,1 MB por bloque e ir repitiendo cuando se ha llegado al bloque 4, empezar por el bloque 1 luego al 2, 3 y cuando llega al 4 continuar de nuevo con el 1 hasta completar los 4 MB de información del fichero.

Recordemos que como la escritura y lectura es en paralelo, puede escribir 0,1 MB x 4 bloques a la vez.

Y a su vez, recordemos que el controlador puede decidir en que celdas ubicar la información según le interese en base al Translator interno, lo cual ya de por si, es un poco lioso…

 

 

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.

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

Des de hace tiempo, los dispositivos tipo Flash forman parte de nuestra vida. Un dispositivo pequeño, de alta capacidad de almacenamiento y en muchos casos muy rápido. No contiene partes que se puedan dañar (A priori) por golpes o vibraciones, resistentes al polvo y además consumen poca electricidad, por lo que son ideales para dispositivos móviles, tablets e incluso portátiles.

En principio son todo ventajas en lo referente al uso por el cliente final, sin embargo, el proceso de recuperación de datos conlleva muchas dificultades que a continuación intentaremos explicar (En mejor o peor manera 😛 )

Dispositivos Flash, tenemos varios tipos:

Pen Drives o USB’S

Laby Recuperación de Datos

Lápiz Usb Estándar

Tarjetas de Memoria (De todo tipo, MicroSD, SD, XD, CF etc)

Laby Recuperación de Datos

Tarjetas de memoria

O los llamados discos duros sólidos (SSD)

Laby Recuperación de Datos

Disco duro sólido (SSD)

Pese a que son diversos tipos de dispositivos con formas y conectores diversos, internamente funcionan de forma muy parecida.

Partiríamos de la base de un conector (El propio conector USB, en las tarjetas de memoria los “pines” metálicos que se aprecian y en los SSD la interfaz SATA o Micro SATA), un procesador central encargado de interpretar las órdenes mandadas por el PC y por último los bloques de memoria (El equivalente a los cajones de una casa, donde guardar la información).

Laby Recuperación de Datos

Estructura interna de un Pen Drive

El funcionamiento se podría resumir de la siguiente manera: Imaginemos que tenemos un PC con una fotografía y la queremos guardar en el USB / Tarjeta Memoria. Con solo dar la orden de copiar y pegar el PC se encarga de todo. En este proceso, el controlador del USB interviene aceptando la orden del PC de guardar la fotografía. Primero comprueba que tenga espacio en los bloques, seguidamente trocea la fotografía en porciones y por último lo escribe en el bloque de memoria (O bloques, dependiendo de cuantos tenga).

En caso que se tenga que realizar la operación inversa (Leer una fotografía del USB), el controlador, mira donde están ubicados los trozos de esa fotografía y los empieza a mandar por orden al PC para finalmente, mostrar correctamente el fichero.

De forma muy genérica, este sería el funcionamiento de un dispositivo FLASH. En las siguientes entradas iremos profundizando un poco más en cada aspecto. Por ejemplo, que tipos de memoria existen, las capacidades y calidades de éstas, los procesadores y sus funciones (Muchas más de las qué a priori se podrían imaginar) y las diferemtes problemáticas asociadas a las memorias FLASH.