¿Cuál es la diferencia entre la memoria Flash y la EEPROM?

Tanto el almacenamiento de memoria flash como la EEPROM utilizan transistores de puerta flotante para el almacenamiento de datos. ¿Qué difiere entre los dos y por qué Flash es mucho más rápido?

Respuestas (5)

Los primeros dispositivos ROM debían tener información colocada en ellos a través de algún medio mecánico, fotolitográfico u otro (antes de los circuitos integrados, era común usar una cuadrícula donde los diodos podían instalarse u omitirse selectivamente). La primera gran mejora fue una "Fusible-PROM": un chip que contiene una cuadrícula de diodos fusionados y transistores de accionamiento de fila que eran lo suficientemente fuertes como para seleccionar una fila y forzar el estado de la salida, uno podría quemar los fusibles en cualquier diodo. uno no quería. Aunque tales chips podían escribirse eléctricamente, la mayoría de los dispositivos en los que se usarían no tenían los potentes circuitos de accionamiento necesarios para escribir en ellos. En cambio, se escribirían usando un dispositivo llamado "programador" y luego se instalarían en el equipo que necesitaba poder leerlos.

La siguiente mejora fue un dispositivo de memoria de carga implantada, que permitía implantar cargas eléctricamente pero no eliminarlas. Si dichos dispositivos estuvieran empaquetados en paquetes transparentes a los rayos UV (EPROM), podrían borrarse con una exposición de aproximadamente 5 a 30 minutos a la luz ultravioleta. Esto hizo posible la reutilización de dispositivos cuyos contenidos no tenían valor (por ejemplo, versiones de software con errores o sin terminar). Poner los mismos chips en un paquete opaco permitió que se vendieran de manera más económica para aplicaciones de usuarios finales donde era poco probable que alguien quisiera borrarlos y reutilizarlos (OTPROM). Una mejora posterior hizo posible borrar los dispositivos eléctricamente sin la luz ultravioleta (EEPROM temprana).

Los primeros dispositivos EEPROM solo podían borrarse en masa y la programación requería condiciones muy diferentes de las asociadas con el funcionamiento normal; en consecuencia, al igual que con los dispositivos PROM/EPROM, generalmente se usaban en circuitos que podían leerlos pero no escribirlos. Las mejoras posteriores a la EEPROM hicieron posible borrar regiones más pequeñas, si no bytes individuales, y también permitieron que se escribieran con el mismo circuito que las usaba. Sin embargo, el nombre no cambió.

Cuando apareció una tecnología llamada "Flash ROM", era bastante normal que los dispositivos EEPROM permitieran borrar y reescribir bytes individuales dentro de un circuito de aplicación. Flash ROM fue, en cierto sentido, un paso atrás desde el punto de vista funcional, ya que el borrado solo podía tener lugar en grandes partes. No obstante, restringir el borrado a grandes porciones hizo posible almacenar información de manera mucho más compacta de lo que había sido posible con EEPROM. Además, muchos dispositivos flash tienen ciclos de escritura más rápidos pero ciclos de borrado más lentos que los típicos de los dispositivos EEPROM (muchos dispositivos EEPROM tardarían de 1 a 10 ms en escribir un byte y de 5 a 50 ms en borrarlo; los dispositivos flash generalmente requerirían menos de 100 us para escribir, pero algunos requirieron cientos de milisegundos para borrar).

No sé si hay una línea divisoria clara entre flash y EEPROM, ya que algunos dispositivos que se autodenominaban "flash" podrían borrarse por byte. No obstante, la tendencia actual parece ser usar el término "EEPROM" para dispositivos con capacidades de borrado por byte y "flash" para dispositivos que solo admiten el borrado de bloques grandes.

¿Qué quiere decir con "almacenar la información en Flash de manera mucho más compacta de lo que había sido posible con EEPROM" y por qué los ciclos de borrado en la memoria flash pueden ser más grandes que el ciclo de escritura?
@Frankenstein: los diseños de circuitos EEPROM generalmente requerían dedicar espacio para borrar los circuitos en las mismas capas del chip que los circuitos de programación y lectura. Si bien hay una variedad de diseños de circuitos flash, generalmente evitan tal requisito.
gracias +1 pero ¿por qué esto debería importar? ¿Es por esta única razón que la memoria FLASH es más rápida que la EEPROM?
@Frankenstein: el programa EEPROM y los ciclos de borrado se llevan a cabo por medios algo similares. La mayoría de los dispositivos flash utilizan mecanismos completamente diferentes para la programación y el borrado. Al menos un dispositivo con el que trabajé en un nivel muy bajo fue el microcontrolador TI 320F206 que hace que el software del usuario sea responsable de controlar el tiempo de los ciclos de programación y borrado. En ese chip, uno podría imaginar que la memoria consiste en un montón de cubos con válvulas que pueden drenarlos selectivamente, colocados debajo de un montón de rociadores elevados que pueden llenarlos. Pueden pasar cosas raras si los baldes...
... se llene demasiado, por lo que para borrar la matriz, se deben drenar todos los baldes, encender los rociadores por un momento, verificar si todos los baldes están llenos todavía, encender los rociadores un poco más si no lo están, luego verifique nuevamente, etc. Si los rociadores están encendidos por mucho tiempo, será necesario hacer una operación especial para arreglar las cosas [no recuerdo exactamente cómo funcionó eso]. Todo considerablemente más complicado que la EEPROM que podría borrarse directamente.
¿Puede decir algo sobre la cantidad de ciclos de lectura y escritura ? ¿Cuál es el rango de la cantidad de ciclos de lectura y escritura en la memoria flash antes de que se degrade/inutilice y cómo se manifiesta la tasa de error al acercarse al límite? escrituras fallidas?
@Nitin: Creo que los dispositivos flash suelen permitir entre 1000 y 100 000 ciclos de programa/borrado, y los dispositivos EEPROM suelen permitir entre 10 000 y 10 000 000. No tengo suficiente experiencia para saber si es más probable que el envejecimiento provoque que las escrituras tomen más tiempo o fallen por completo, o si es más probable que resulte en bits que cambien de estado en algún momento después de escribirse. Sé que algunos chips flash especifican que las operaciones de borrado en una fila degradarán ligeramente los cargos en las filas vecinas, de modo que si los vecinos de una fila...
... se reprograman más de una docena de veces sin que se reprograme la fila, los bits dentro de esa fila pueden cambiar espontáneamente.
@supercat muchas gracias por esa explicación, que ahora crea otra pregunta :-). Estoy usando una placa Adafruit con sensores para registrar valores ambientales y biométricos. El volumen de escritura se puede ajustar, pero debe ser varias centenas de veces por segundo, por lo que la frecuencia de escritura será alta: la memoria flash es, por ejemplo, de 256 MB y se puede llenar en, por ejemplo, una semana. Ahora, si todo se borra de una vez cuando está lleno y luego empiezo a escribir de nuevo, ¿es ese un ciclo? Hay cientos de miles de escrituras contiguas, pero solo 1 lectura cuando todas se cargan en un concentrador. Agradezco mucho su ayuda.
@Nitin: El acto de escribir y borrar un bloque juntos representa un ciclo en ese bloque. En general, la principal consideración de resistencia es la cantidad máxima de veces que se escribe y borra un bloque en particular.

Spoiler: EEPROM es, de hecho, Flash.

Como señaló brillantemente la respuesta de supercat, EEPROM es una evolución de las EPROM borrables por UV más antiguas (EEROM de EEPROM significa "borrable eléctricamente"). Sin embargo, a pesar de ser una mejora con respecto a su viejo amigo, la forma en que la EEPROM de hoy en día almacena información es exactamente la misma que la memoria flash.



La ÚNICA diferencia principal entre los dos es la lógica de lectura/escritura/borrado.
  • Flash NAND (flash regular):

    Solo se puede borrar en páginas aka. bloques de bytes. Puede leer y escribir (sobre no escritos) bytes individuales, pero borrar requiere eliminar muchos otros bytes.

    En los microcontroladores, generalmente se usa para el almacenamiento de firmware. Algunas implementaciones admiten el manejo de flash desde el firmware, en cuyo caso puede usar ese flash para almacenar información siempre que no se meta con las páginas usadas (de lo contrario, borrará su firmware).

  • NOR Flash (también conocido como EEPROM):

    Puede leer, escribir y borrar bytes individuales. Su lógica de control está diseñada de tal manera que todos los bytes son accesibles individualmente. Aunque es más lento que el flash normal, esta función beneficia a los dispositivos electrónicos más pequeños/antiguos. Por ejemplo, los televisores y monitores CRT más antiguos usaban EEPROM para mantener configuraciones de usuario como brillo, contraste, etc.

    En los microcontroladores, eso es lo que generalmente usa para almacenar configuraciones, estados o datos de calibración. Es mejor que flash para eso, ya que para borrar un solo byte no tiene que recordar (en RAM) el contenido de la página para volver a escribirlo.



**Dato curioso**
Existe la idea errónea de que *NOR Flash* usa *compuertas NOR* mientras que *NAND Flash* usa *compuertas NAND* (y de hecho parece obvio). **Sin embargo, eso no es cierto.** El motivo del nombre es la semejanza de la lógica de control de cada tipo de memoria con los símbolos esquemáticos de las puertas NAND y NOR.
gran comentario Ahora entiendo mejor por qué un MCU SDK proporcionaría un controlador para emular una EEPROM en su flash.
Como lo leí en otras fuentes en línea, "la memoria flash escribe en 'páginas' y elimina en 'bloques'". Sin embargo, creo que los tamaños de página y bloque pueden ser los mismos, es decir, tener solo 1 página en cada bloque.

Flash es un tipo de EEPROM (memoria de solo lectura programable borrable eléctricamente). "Flash" es más un término de marketing que una tecnología específica. Sin embargo, este término ha convergido para significar un tipo de EEPROM que está optimizado para un gran tamaño y densidad, generalmente a expensas de grandes bloques de borrado y escritura y una menor resistencia.

¿Por qué todavía lo llaman memoria de solo lectura? ¿No es un poco tonto si se lee y se escribe correctamente?
@skyler: en parte es histórico y en parte tiene sentido. La ROM original (memoria de solo lectura) se programó con máscara, lo que significa que se realizó como un paso en la construcción del chip. Luego hubo enlaces fusibles que pusieron la P en PROM. La EEPROM actual sigue siendo principalmente memoria de lectura. El proceso de escritura es mucho más complicado y lento que el de lectura, y en este caso desgasta el chip. Este tipo de celdas de memoria de puerta flotante solo se pueden borrar y escribir tantas veces antes de que fallen físicamente.
¿Puede escribir un disco duro magnético o un transistor de puerta flotante más veces?
@skyler: Si uno escribiera un área de un disco duro lo más rápido posible, probablemente podría escribirla más de mil millones de veces al año, durante años, sin que se desgaste. Los transistores de puerta flotante no se acercan sin nivelar el desgaste. Con la nivelación de desgaste, la cantidad de datos que podrían escribirse a máxima velocidad en un dispositivo flash antes de que se desgaste sería comparable a la de un disco duro (algunos dispositivos flash probablemente serían mejores, otros peores).
@skyler: Muchos de los primeros chips EEPROM podrían conectarse directamente a un bus de microprocesador para acceso de solo lectura, pero escribir en ellos requeriría condiciones que un bus de microprocesador normal no podría producir. Como tales, a menudo se escribirían usando un equipo llamado "programador" y luego se conectarían a un dispositivo que leería datos de ellos.
La hoja de datos Atmwga16 dice que tiene a) 16 Kbytes de memoria de programa Flash autoprogramable en el sistema yb) 512 Bytes EEPROM. Puede usted explicar por favor...

La memoria flash es una variación de la EE-PROM que se está volviendo popular. La principal diferencia entre la memoria flash y la EE-PROM está en el procedimiento de borrado. La EE-PROM puede borrarse a nivel de registro, pero la memoria flash debe borrarse en su totalidad o a nivel sectorial.

¿Cómo mejoró su respuesta con respecto a la que ya fue aceptada? No me parece que haya agregado información o perspectiva a lo que ya se ha dicho.

El almacenamiento "flash" es un término general para el almacenamiento dentro de chips de memoria (memoria no volátil), en lugar de discos giratorios como disquetes, CD, DVD, disco duro, etc.

NOR y NAND son los chips de memoria flash originales y fueron inventados por Fujio Masuoka mientras trabajaba para Toshiba alrededor del año 1980. "NOR" y "NAND" se utilizan en la mayoría de las unidades de memoria USB.

El almacenamiento flash también incluye EEP-ROM (memoria de solo lectura programable borrable eléctricamente) y NV-RAM (memoria de acceso aleatorio no volátil). EEP-ROM es más barato y se utiliza para el almacenamiento en la mayoría de los dispositivos System-on-Chips y Android. NV-RAM es más cara y se usa para unidades de estado sólido y almacenamiento en dispositivos Apple.

Los nuevos chips NV-RAM son mucho más rápidos que EEP-ROM y otras tecnologías Flash.

Para obtener más información, consulte: http://www.crifan.com/___flash_memory_nand_eeprom_nvram_and_others_zt/

¿ MRAM , FeRAM y PCRAM también están incluidos en el término "cajón de sastre"?
Los DIMM serán DIMM independientemente de la RAM dinámica o la RAM no volátil. MRAM, FeRAM y PCRAM utilizados como unidades de almacenamiento se incluyen en el término general "almacenamiento flash".
¡Gracias! Desde que descubrí que Triple Level Cell NAND FLASH tiene ocho niveles y no tres , me he vuelto más consciente (¿desconfiado?) de la terminología.