¿Cómo determina UBI que un bloque flash NAND es malo?

2

Entiendo que si falla el borrado de un bloque, se puede marcar como incorrecto. Si la escritura de una página falla inmediatamente, también se puede marcar como incorrecta. Tengo un tablero que muestra los errores de "lectura molesta" y / o "señal de programa" después de muy pocas lecturas o escrituras. ¿Debería UBI marcar el bloque como malo?

¿El borrado de un bloque siempre restablece el nivel de perturbación? Si no, como en mi caso, ¿qué podría estar mal? ¿Podría dañarse la bomba de carga dentro del chip flash? Si es así, ¿cómo pudo haber pasado esto?

He escrito un controlador de Linux para probar el flash en el nivel MTD y después de que un "error de lectura" haya volteado los bits en una página borrada, las lecturas posteriores de esa página pueden estar bien (no hay errores ECC). ¿Cómo puede pasar esto? ¿Se espera esto?

    
pregunta sbaconbits

1 respuesta

1

Aquí es un enlace útil cuando se usa UBI: FS, pero como es la documentación oficial , probablemente ya lo has leído.

Lo primero que debe saber es que el comportamiento de UBI depende de MTD, que depende de su controlador de controlador NAND. Intentaré responder utilizando los requisitos de flash NAND, MTD y UBI.

De acuerdo con las hojas de datos NAND, (aquí, tengo un Toshiba SLC NAND, ECC de 8 bits, pero es una recomendación común entre Micron, Hynix, Samsung), si el borrado de un bloque falla, el bloque debe marcarse como incorrecto. Si falla una escritura de página, el bloque debe marcarse como incorrecto. La definición de "falla" evolucionó con la tecnología. Con los flashes ECC de 4 y 8 bits, es común que algunos bits se peguen a 0 o 1. Una escritura generalmente se considera OK si, cuando se lee la página justo después de la escritura, hay estrictamente menos bitflips que los aceptables. También puede optar por reducir su umbral de aceptación para mejorar la robustez, pero restringir la cantidad de bloques que usa y restringir la vida útil de su pieza, ya que el desgaste se nivela en menos bloques y los bloques se marcan como malos antes.

La alteración de lectura también puede suceder más tarde. Los flashes NAND están hechos con transistores de compuerta flotante, que pueden descargarse con el tiempo, o debido a la actividad en la página actual, o incluso a las otras páginas del bloque. Este es un comportamiento conocido de la memoria flash NAND, y es por eso que los sistemas de archivos flash deben leer todos los datos a menudo: para detectar cuándo algunas páginas alcanzan el número máximo de bitflips corregibles. En tal caso, la página debe reubicarse, pero el bloqueo no es malo.

También puede obtener trazas si se realiza la corrección ECC, incluso si esto no activa la reubicación. Depende de tu conductor.

Y, por fin, una página de borrado puede contener algunos bits pegados a 0. En ese caso, la corrección de ECC en la lectura falla, mientras que la página está bien. Para evitar este problema, a menudo se agrega un mercado de "página escrita" en el área de reserva, más de 2 veces el número máximo de bitflips para la NAND, que permite ignorar los errores de ECC en páginas no escritas. En este caso, su controlador puede corregir los bitflips antes de devolver la página a las capas superiores, lo que resulta en un aviso de "error de lectura" y no hay informes de errores en la capa superior.

Como puede ver, el comportamiento depende principalmente del controlador de su controlador NAND. Tal vez su controlador es de código abierto? Esto permitiría obtener el comportamiento real.

    
respondido por el Jacen

Lea otras preguntas en las etiquetas