Como se presentó en este artículo , los dispositivos de almacenamiento de estado sólido (SSD) no contienen piezas móviles. Más bien están hechos de transistores y pueden retener información en caso de pérdida de energía, a diferencia de la memoria de acceso aleatorio. Flash es una tecnología interesante desarrollada en la década de 1980.
Almacenamiento de bits:
los chips flash pueden almacenar uno o más bits en un solo transistor. La cantidad de carga atrapada en el transistor se convierte en un número binario. Dependiendo de la cantidad de bits almacenados en un solo transistor, los chips flash pueden ser de varios tipos:
- Flash de celda de un solo nivel (SLC):
solo se almacena un bit en un transistor. Por lo tanto, el valor del bit puede ser 0 o 1. - Flash de celda multinivel (MLC):
dos bits se almacenan en un transistor. Por lo tanto, el valor de bit puede ser 00, 01, 10 y 11, desde el nivel de carga más bajo hasta el más alto. - Flash de celda de triple nivel (SLC):
se almacenan tres bits en un transistor.
Los chips SLC tienen el mayor rendimiento y son los más caros de los tres.
Bancos y aviones:
almacenar un solo bit, obviamente, no es suficiente. Por lo tanto, los chips flash se agrupan en bancos o planos que se componen de una gran cantidad de celdas.
Bancos:
Los bancos están organizados en bloques y páginas . Los bloques van desde el tamaño de 128-256 KB y las páginas son de aproximadamente 4 KB. La siguiente figura muestra un chip flash de muestra que contiene 3 bloques y 4 páginas por bloque, es decir, un total de 3*4 = 12 páginas.
La estructura de bloques y páginas es extremadamente crucial para las operaciones flash.
Operaciones flash:
a continuación se muestran las tres operaciones de bajo nivel compatibles con las operaciones flash.
- Lectura:
para leer una página, el cliente flash simplemente necesita especificar el número de página emitido con el comando de lectura. Los dispositivos de acceso aleatorio permiten leer cualquier información de forma uniforme y rápida, independientemente de su ubicación. - Borrar:
Antes de poder escribir en una página en flash, es necesario borrar todo el bloque correspondiente. Para borrar un bloque, el valor de cada bit se establece en 1. Dado que los datos deben escribirse nuevamente, se copian en un búfer antes del comando de borrado. - Programa:
Después de borrar un bloque, el comando del programa cambia algunos de los 1 a 0.
Leer una página es el comando más rápido y requiere una orden de 10 microsegundos para completarse. La programación de una página es la segunda más rápida, tomando una orden de 100 microsegundos. Borrar un bloque es lo más lento porque el contenido debe copiarse en un búfer antes de que se vacíe el bloque y tarda unos milisegundos en completarse.
Estados de las páginas:
las páginas Flash tienen “estados” asociados a ellas. Inicialmente, todas las páginas están en estado NO VÁLIDO. Si se borra un bloque, todas las páginas dentro de ese bloque cambian al estado BORRADO. Tales páginas son programables ya que pueden aceptar escrituras. Cuando se programa una página, cambia al estado VÁLIDO. Esto significa que se puede leer el contenido de la página.
Considere la siguiente orientación inicial de un bloque que contiene 4 páginas. Dado que cada una de estas páginas se ha programado antes y tienen algunos datos ya existentes escritos en ellas, todas están en estado VÁLIDO.
Ahora, suponga que el cliente flash desea escribir en la página 0. Para escribir en cualquier página, se debe borrar todo el bloque.
Después de borrar todo el bloque, las 4 páginas están en estado BORRADO y todos los bits se establecen en 1. Finalmente, podemos escribir en la página 0.
La página 0 ahora está en el estado VÁLIDO ya que los nuevos datos se han escrito en ella y se pueden leer. Las otras páginas todavía están en estado BORRADO. Finalmente, los datos previamente almacenados en las páginas 1, 2 y 3 se leen de la memoria temporal y se vuelven a escribir en las páginas.
Problemas de confiabilidad:
las escrituras y borrados frecuentes provocan el desgaste de los chips flash. Esto sucede debido al exceso de carga acumulado en la superficie del bloque flash. A medida que se acumula más y más carga, se vuelve difícil diferenciar entre un 0 y un 1. El bloque se vuelve inutilizable y debe desecharse. El segundo problema de confiabilidad es la perturbación . Esto sucede debido al intercambio de bits en las páginas vecinas al intentar leer/escribir datos en una página en particular. También se denominan perturbaciones de lectura o perturbaciones de programa .
SSD basados en flash:
los SSD basados en flash proporcionan una interfaz sobre los chips flash para leer/escribir datos. Un SSD contiene chips flash para memoria persistente; memoria no persistente, por ejemplo, SRAM utilizada para almacenamiento en caché y almacenamiento en búfer; y lógica de control para manejar las operaciones flash. Flash Translation Layer (FTL) convierte las requests de lectura y escritura del cliente en operaciones flash, que son operaciones de bajo nivel. Esencialmente convierte operaciones lógicas en operaciones físicas con alta confiabilidad. FTL también ayuda a contrarrestar algunos de los problemas de confiabilidad mencionados anteriormente.
- Manejo de desgastes:
FTL extiende y distribuye uniformemente los bloques flash tanto como sea posible, de modo que todos los bloques se desgasten al mismo tiempo. - Manejo de perturbaciones:
para manejar las perturbaciones mientras se programan los chips, FTL adopta un enfoque de programación secuencial. Los bloques borrados se programan en orden, desde la página más baja a la más alta, sobrescribiendo así cualquier bit invertido en el proceso.
FTL con estructura de registro:
similar a los sistemas de archivos con estructura de registro, la mayoría de los FTL actuales tienen estructura de registro, lo que significa que las escrituras se agrupan en un búfer antes de ejecutarse físicamente en los bloques flash.
Publicación traducida automáticamente
Artículo escrito por Anannya Uberoi 1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA