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…

 

 

Deja un comentario