Ingeniería ECC en NAND: de RBER y UBER a BCH, LDPC y read retry
- RBER mide errores antes de la corrección; UBER mide datos de usuario incorrectos después de toda la ruta de lectura y recuperación. La relación depende del codeword, la estadística de errores y el decodificador.
- BCH suele efectuar correcciones algebraicas acotadas con decisiones duras. LDPC puede usar iteraciones e información suave para operar con más ruido, a cambio de más sensado y una latencia de lectura variable.
- Un dispositivo puede devolver datos correctos mientras pierde margen ECC. El nivel de corrección, la profundidad de retry y la distribución de latencia son indicadores adelantados; el error incorregible llega tarde.
- La NAND cruda debe emparejarse con el requisito ECC y la geometría exactos. En flash administrada, la calificación debe cubrir fin de vida, retención, temperatura y cola de latencia de la configuración completa.
No se espera que la matriz NAND entregue un flujo de bits físicamente perfecto durante toda su vida. Se espera que el dispositivo entregue datos de usuario correctos después de sensado, corrección, reintentos y, en productos administrados, recuperación del controlador. Esa diferencia es la base de la ingeniería de fiabilidad flash.
Decir “el ECC corrige 80 bits” no basta. Hay que preguntar: ¿80 errores en qué longitud de codeword, con qué distribución, usando decisiones duras o suaves, con qué probabilidad de fallo y con qué coste de latencia? Este artículo construye la cadena desde el error de celda hasta el fallo visible por la aplicación.
Defina primero el punto de observación
| Capa | Magnitud | Punto de observación |
|---|---|---|
| Canal NAND | Raw bit error rate (RBER) | Decisiones de bit antes de ECC |
| Codeword ECC | Probabilidad de fallo del codeword | Éxito, miscorrección o fallo del decoder |
| Dispositivo completo | Uncorrectable bit error rate (UBER) | Datos incorrectos tras toda la recuperación |
Definiciones de trabajo:
RBER = bits erróneos sin corregir / bits crudos leídos
UBER = errores de datos no corregidos / bits de usuario leídos
El evento y el denominador deben documentarse. ONFI normaliza la interfaz y la información de parámetros, incluida la correctabilidad ECC para NAND cruda, pero el host/controlador determina el comportamiento final [1]. En flash administrada, código, retry y telemetría suelen ser propietarios.
Por tanto, UBER no pertenece solo al die NAND. Pertenece al canal, sensado, código, decoder, firmware y condición de ensayo.
Modelo de corrección acotada
Suponga un código de decisión dura que corrige como máximo t bits erróneos en un codeword de n bits. Si los errores fueran independientes y cada bit tuviera probabilidad p = RBER, la probabilidad de superar el radio de corrección sería:
Pfallo = 1 - sum[k=0..t] C(n,k) p^k (1-p)^(n-k)
La cola binomial es útil para sensibilidad: un incremento modesto de RBER puede desplazar rápidamente muchos codewords más allá de t.
No es automáticamente el UBER del producto. Los errores cambian por página, capa, desgaste, edad de retención, temperatura y patrón; la correlación invalida la hipótesis independiente. Miscorrección, protección de metadatos, paridad interna y política de retiro también modifican el resultado [4]. Use la ecuación para hacer visibles las hipótesis y después mida la distribución real.
BCH y decisiones duras
Los códigos BCH son códigos algebraicos de bloque asociados a muchas generaciones NAND anteriores. El flujo convencional compara celdas con voltajes de referencia, produce bits duros y corrige hasta la capacidad diseñada.
Ofrecen corrección acotada y una implementación de hardware directa. Su límite aparece cuando las distribuciones de voltaje se estrechan y solapan: la decisión dura descarta cuánto margen tenía el bit. Dos celdas pueden producir el mismo valor aunque una esté centrada y otra apenas cruce el umbral.
KIOXIA resume la evolución desde códigos sencillos hacia BCH y LDPC a medida que crecen los requisitos ECC [2]. Es una tendencia de arquitectura, no permiso para elegir por la etiqueta SLC/MLC/TLC. Mandan la hoja de datos y los parámetros del dispositivo exacto.
LDPC e información suave
LDPC expresa relaciones de paridad mediante una matriz dispersa. Los decodificadores prácticos intercambian iterativamente probabilidades entre nodos de variable y comprobación. En vez de recibir solo cero o uno, pueden usar la confianza de cada observación.
En NAND, la confianza se obtiene con voltajes de referencia adicionales. Varios sensados localizan mejor la celda en el dominio de voltaje y producen información de verosimilitud cuantizada. Una ruta administrada puede escalar así:
- lectura por defecto y decodificación rápida;
- read retry con referencias ajustadas;
- sensados adicionales para información suave;
- más iteraciones o recuperación reforzada;
- reconstrucción por redundancia, retiro de bloque o error incorregible.
Zhao et al. mostraron que la potencia LDPC y la latencia deben diseñarse juntas: el sensado fino mejora la corrección, pero exige lecturas y cálculo adicionales [3]. Sus cifras corresponden al diseño estudiado; la lección transferible es el mecanismo de latencia variable.
Read retry mueve las fronteras de decisión
Una celda representa datos mediante una región de voltaje umbral. Desgaste, retención, interferencia y disturb ensanchan o desplazan la población. Si las referencias fijas dejan de coincidir con la frontera de mínimo error, RBER sube aunque los datos aún sean recuperables.
Read retry ajusta referencias y vuelve a sensar. Luo et al. describen el modelado de canal y read retry para adaptarse a distribuciones cambiantes [5]. No se repara carga durante el sensado; se formula una mejor decisión sobre el estado analógico.
Después de recuperar los datos, el firmware puede reescribirlos en una ubicación sana. Separe conceptos:
- read retry: nuevo sensado con condiciones distintas;
- decodificación ECC: reconstrucción usando observaciones y paridad;
- refresh/read reclaim: reescritura para recuperar margen futuro;
- retiro de bloque: exclusión del bloque físico.
Datos correctos pueden ocultar margen decreciente
Un checksum solo observa el final. No distingue una lectura al primer intento de otra recuperada tras muchos retries. Ambas son correctas, pero no tienen el mismo margen ni riesgo temporal.
Indicadores adelantados útiles:
- bits corregidos o nivel normalizado de corrección;
- número de retries y paso de referencia que tuvo éxito;
- uso de decisión dura o suave;
- iteraciones o nivel de recuperación;
- latencia mediana, p99, p99,9 y máxima;
- bloques refrescados o retirados;
- eventos incorregibles y errores de checksum extremo a extremo.
Los dispositivos administrados rara vez exponen todo. Que un contador no exista no demuestra que el mecanismo no opere. Si la interfaz solo da salud gruesa, la calificación debe reforzar carga controlada, distribuciones de latencia y evidencia del proveedor.
La calificación debe cubrir estados
| Variable | Motivo |
|---|---|
| Desgaste | Los ciclos P/E ensanchan distribuciones y consumen margen |
| Edad de retención | La fuga de carga mueve referencias óptimas |
| Temperatura de datos | Programación y lectura cambian con temperatura |
| Temperatura sin energía | El calor acelera la degradación de retención |
| Página/capa | El error puede depender de ubicación |
| Intensidad de lectura | Disturb y retry dependen de la carga |
| Firmware | Selección de referencias y decoder viven en firmware |
Para NAND cruda, verifique identificación, tamaño de codeword, correctabilidad, área spare, reglas de bad block y estado de PROGRAM/ERASE [1][6]. Un controlador homologado con una revisión NAND no soporta automáticamente un die sustituto.
Para eMMC, UFS, SSD o tarjetas, homologue número de parte y firmware completos. Acondicione muestras, incluya fin de vida y retención, y registre exactitud y latencia en lecturas repetidas. Los ciclos de energía deben confirmar que mapeo y retiro de bloques sobreviven a interrupciones.
Redacte un requisito defendible
Evite “se requiere ECC fuerte”. Use un requisito por capas:
El proveedor identificará la configuración controlada de NAND, controlador y firmware y aportará la declaración de integridad al fin de vida con condiciones de temperatura, retención y carga. Para NAND cruda, aportará correctabilidad y codeword requeridos. Para flash administrada, describirá indicadores disponibles y comportamiento ante lectura corregida, reintentada e incorregible. La calificación incluirá distribuciones de latencia y verificación de datos tras acondicionamiento de desgaste y retención.
No exija matrices LDPC propietarias si el sistema no las necesita. Exija evidencia en la interfaz controlable: datos correctos, latencia de recuperación acotada, manejo visible de errores, configuración fija y notificación de cambios.
Límites de la investigación pública
Gran parte de la caracterización abierta usa MLC/TLC planar porque permitía acceso al comportamiento crudo. La NAND 3D moderna, los algoritmos y el cribado de producción son distintos. Los trabajos explican mecanismos y métodos; no publican un umbral universal de retry, RBER o vida para cualquier producto actual [4][5].
Aplique el mecanismo y obtenga evidencia de la configuración concreta. Esa es la diferencia entre usar investigación y tomar prestado su vocabulario.
Conclusión
ECC es una frontera probabilística, no un número mágico. RBER describe el canal antes de corregir; el fallo depende del código y de la población de errores; UBER describe lo que escapa a la recuperación completa. BCH y LDPC intercambian fuerza, complejidad y latencia, mientras read retry convierte margen analógico en nuevas oportunidades de decodificación.
Para aprobar, mida no solo si los datos acabaron correctos, sino cuánta recuperación y cuánto tiempo exigieron. Ate la evidencia a NAND, controlador y firmware exactos y conéctela con bad blocks y ECC, calificación de retención y control de BOM fija.
Preguntas frecuentes
¿Se puede convertir RBER directamente en UBER?
¿LDPC siempre es mejor que BCH?
¿Por qué un SSD envejecido puede leer lento antes de fallar?
Referencias
- ONFI — Open NAND Flash Interface Specification 5.2, páginas de parámetros e información ECC ↩
- KIOXIA — Understanding ECC in NAND Flash Memory, Technical Brief ↩
- Zhao et al. — LDPC-in-SSD, USENIX FAST 2013 ↩
- Cai et al. — Error Characterization, Mitigation, and Recovery in Flash-Memory-Based SSDs, Proceedings of the IEEE 2017 ↩
- Luo et al. — Enabling Accurate and Practical Online Flash Channel Modeling, IEEE JSAC 2016 ↩
- Micron — FAQ técnica NAND: requisitos ECC, estado de operación y retiro de bloques ↩
Publicamos la capacidad utilizable medida y aceptamos verificación de lote de prueba — grado automotriz, directo de la fábrica de origen.
