Tenemos una EEPROM con una vida útil de 10.000 ciclos: nuestra aplicación puede escribir más de 10.000 veces.
Si escribimos en la misma ubicación una y otra vez, ¿es solo esa única ubicación la que potencialmente se fatiga y falla? ¿O la falla se extendería a múltiples celdas?
Estoy pensando que una manera fácil de sortear el límite es dedicar 10 ubicaciones de memoria y usar un puntero giratorio. Eso (creo) aumentaría mis ciclos de escritura potenciales 10 veces antes de que se convierta en un problema.
¿Estoy yendo por un buen camino, o es totalmente incorrecto hacer esto?
Mucha gente se pregunta por qué no uso otra parte, o una que esté mejor documentada. La EEPROM está integrada en este. En nuestro negocio, estamos encerrados en unos pocos proveedores que fabrican ASIC muy especializados y que no documentan sus chips de tal manera que solo puedo leer esto en la hoja de datos. Todos sus ingenieros hablan inglés como tercer o, a veces, cuarto idioma, por lo que hacer este tipo de preguntas suele ser bastante difícil y las respuestas siempre se toman con pinzas. Compensan estas molestias vendiendo chips estúpidos de bajo costo. Tenemos micros disponibles para nosotros que cuestan alrededor de 3 centavos cada uno (sin exagerar). La mayoría de nuestros circuitos integrados cuestan alrededor de $ 0,15.
Las EEPROM no se desgastan al escribir, se desgastan al borrar . Si observa la hoja de datos, notará que indica ciclos de borrado.
Las operaciones de borrado se basan en bloques. Entonces, un bloque completo de datos se borra a la vez. Y en su caso, puede hacer esto al menos 10k veces en cada bloque.
Su idea puede funcionar, pero cualquier algoritmo de nivelación de desgaste debe estar basado en bloques , de lo contrario, no proporcionará vida adicional al chip.
Además, en mi experiencia, ese número en la hoja de datos es bastante conservador para garantizar la cobertura en todas las temperaturas extremas. Entonces, a temperaturas relativamente modestas (cerca de la temperatura ambiente), puede obtener muchos más ciclos. En un chip con el que tuvimos este problema, se especificó en 50 000 ciclos, pero habitualmente nos acercábamos a los 300 000 antes de que surgieran los problemas.
Y finalmente, como parte de su algoritmo, después de borrar el bloque, haga una verificación para asegurarse de que todos los bits se hayan restablecido. Si no es así, vuelve a borrar (hasta dos veces). Descubrimos que esto extendió en gran medida la vida útil del flash, ya que el modo de falla no es fuerte, sino más bien una curva suave.
Si desea evitar todo el algoritmo adicional, generalmente puede encontrar un chip FRAM que es un reemplazo directo para la mayoría de las EEPROM. No tienen el mismo mecanismo de desgaste y se pueden borrar/escribir 1 billón de veces en promedio.
Como señaló Graham Nye en un comentario, ¿dónde va a almacenar sus punteros de escritura y lectura?
Creo que la mayoría de los controladores flash (SSD, etc.) que implementan la nivelación de desgaste usan memoria no volátil más duradera para los punteros o los mantienen en memoria volátil y solo los escriben en flash antes de que se queden sin energía.
En un registrador de datos que ayudé a desarrollar, hicimos uso del hecho de que nuestra EEPROM se borró por completo 1
y se garantizó que nuestros datos nunca serían todos 1. Así que solo tuvimos que buscar en toda la EEPROM al inicio para encontrar nuestros datos e inicializar nuestros punteros. ;)
Las EEPROM por lo general no pueden escribir una sola ubicación (aunque puede parecerle así al usuario), leen, borran y escriben un bloque (16 ubicaciones más o menos), por lo que, a menos que sus ubicaciones rotativas estén lo suficientemente separadas, su idea ganó no ayuda Las múltiples ubicaciones en un bloque se desgastarán juntas.
Las escrituras de página se describen en la hoja de datos, pero los bloques (más pequeños que las páginas) generalmente no. Me enteré de ellos durante un análisis en profundidad de los mecanismos de falla de EEPROM. Solo el fabricante sabe cómo funcionan internamente sus chips.
Lo que propones es una técnica llamada nivelación de desgaste . Es decir, escriba en diferentes ubicaciones a lo largo del tiempo para distribuir la actividad en más celdas.
Una dificultad con las EEPROM es que están orientadas a bloques (y bloques bastante grandes). Por lo tanto, el 'desgaste' de una escritura afecta a todo el bloque de celdas. Si tiene que escribir cosas más de unas pocas veces, no es una tecnología apropiada para usted.
¿Puedes considerar NOR flash en su lugar? Esto tiene mejor durabilidad de escritura que EEPROM.
La fatiga solo afecta a las celdas que han acumulado demasiados ciclos de escritura, pero asegúrese de leer la hoja de datos del fabricante del dispositivo para comprender lo que significan ciclos. No todos se comportan igual dicen.
Pero el método general de lo que está sugiriendo se usa comúnmente y es efectivo.
También señalaré que hay muchas EEPROM en el mercado hoy en día que ofrecen más de 10K ciclos. Es posible que desee darse una vuelta si esa es una opción.
Sólo yo
graham nye
usuario_1818839
scott seidman
BeB00
bosque
Lundin
cruce de caminos
kyle b
cruce de caminos
kyle b