¿Por qué la mayoría de las memorias no volátiles tienen 1 lógico como estado predeterminado?


14

He utilizado memoria no volátil , como EEPROM y memoria FLASH, en aplicaciones integradas y siempre he encontrado que las ubicaciones de bits de memoria no utilizada (EEPROM / FLASH) siempre están configuradas 1de forma predeterminada. ¿Por qué se usa esto en lugar de 0?

Por ejemplo, una dirección, digamos dirección 0 (primer byte de memoria), si no está escrita por el usuario, siempre se almacena 0xffy no 0x00. ¿Por qué las personas que construyeron los chips de memoria lo mantuvieron así? Estoy seguro de mantener la ubicación de memoria predeterminada, ya 0xffque proporcionaría alguna ventaja o algo importante para el fabricante.

¿Cuál es la razón detrás de esta estructura en los chips de memoria?

Respuestas:


20

Voy a hablar sobre la programación de la memoria flash, pero una gran cantidad de material será similar a las EEPROM (ROM programable borrable eléctricamente), ya que la memoria flash se derivó de las EEPROM a mediados de la década de 1980. Como se describe a continuación, desde un punto de vista físico, el estado predeterminado es 1. Pero lo más importante, voy a explicar por qué no es un estado predeterminado - se puede no sólo arbitrariamente programa en la parte superior de lo que ya está programado de la última vez.

El flash NOR casi siempre se elige para el programa flash ya que la interfaz es la más adecuada para colocar los datos dentro del mapa de memoria del microcontrolador: la dirección completa y los buses de datos imitan la RAM y permiten el acceso aleatorio a cualquier ubicación. Los datos se pueden leer una palabra a la vez, donde una palabra se define como el ancho de datos del microcontrolador, generalmente de 8, 16 o 32 bits. NAND flash, por otro lado, se desarrolló para reemplazar los discos duros y funciona de forma secuencial.

Sin embargo, la programación se vuelve un poco más complicada. Como ya se mencionó, el estado predeterminado para flash NOR y otras memorias no volátiles como flash NAND, EEPROM e incluso EPROM es un 1 lógico. No puede programar 1 en estos dispositivos, solo puede programar 0. Entonces, por ejemplo, si tiene un byte que contiene 0x0123 y desea cambiarlo a 0x3210, no puede hacerlo directamente como escribir sobre un byte en la RAM.

En cambio, los bits en la memoria deben borrarse, lo que los coloca en el estado predeterminado 1 ya mencionado. Esto solo se puede hacer en bloques, no en palabras. En el Microchip PIC32, con el que he trabajado más recientemente, el tamaño mínimo de bloque que se puede borrar es 4096 bytes. Por lo tanto, si desea cambiar una sola palabra (32 bits), tendría que leer el 4K de memoria, borrar el bloque y luego volver a escribir el 4K de memoria en flash pero incluyendo el nuevo valor de 32 bits según sea necesario. Esta eliminación puede llevar algo de tiempo, una buena parte de un segundo.

La siguiente es una imagen de una celda de memoria flash. Flash almacena los datos eliminando o colocando electrones en la puerta flotante. Cuando los electrones están presentes en la puerta flotante, no fluye corriente a través del transistor, lo que indica un 0. Cuando los electrones se eliminan de la puerta flotante, el transistor comienza a conducir, indicando un 1. (Esto es por convención, podría haber sido el de otra manera, pero requeriría inversores en todas las líneas de datos).

ingrese la descripción de la imagen aquí

Operación de borrado. El estado predeterminado de las celdas de memoria flash (una celda flash NOR de un solo nivel) es 1 porque las puertas flotantes no tienen cargas negativas. La eliminación de una celda de memoria flash (restablecimiento a 1) se logra aplicando un voltaje a través de la fuente y la puerta de control (línea de palabras). El voltaje puede estar en el rango de -9V a -12V. Y también aplique alrededor de 6V a la fuente. Los electrones en la puerta flotante se extraen y se transfieren a la fuente mediante túneles cuánticos . En otras palabras, los electrones hacen un túnel desde la puerta flotante hasta la fuente y el sustrato.

Debido a que el borrado usa altos voltajes, el borrado en bloques requiere menos área de troquel. Por lo tanto, los voltajes solo se pueden aplicar a filas completas de transistores a la vez.

Para escribir, se puede programar una celda flash NOR o establecerla en 0 mediante el siguiente procedimiento. Mientras escribe, se aplica un alto voltaje de alrededor de 12V a la puerta de control (línea de palabras). Si se aplica un alto voltaje de alrededor de 7V a la línea de bits (terminal de drenaje), se almacena un 0 en la celda. El canal ahora está encendido, por lo que los electrones pueden fluir desde la fuente hasta el drenaje. La corriente de drenaje de la fuente es lo suficientemente alta como para hacer que algunos electrones de alta energía salten a través de la capa aislante hacia la puerta flotante a través de un proceso llamado inyección de electrones calientes.

Para la lectura, se aplica un voltaje de alrededor de 5 V a la puerta de control y alrededor de 1 V al drenaje. El estado de la celda de memoria se distingue por la corriente que fluye entre el drenaje y la fuente.

La vida útil de la memoria no volátil se mide en términos de ciclos de borrado. La desventaja de NOR es que el número de ciclos de borrado es aproximadamente 1/10 del de la memoria NAND. Muchas versiones del PIC32 solo permiten que la memoria flash se actualice 1000 veces, mucho menos que los típicos 100,000 ciclos de borrado para EEPROM.

Por lo tanto, no es tan importante si los diseñadores hicieron que el estado predeterminado sea 1 o 0 (eligieron el valor que permitió la implementación más fácil); Lo importante es que primero hay que borrar un bloque de flash (lo que lleva tiempo) y luego reprogramar todo el bloque (incluso si se cambia una sola palabra (lo que requiere una cantidad sustancial de RAM).

Este borrado en bloque del dispositivo vuelve a las primeras EPROM (ROM programable borrable), que procedió a EEPROM. El código se programó en chips (como el 16KB 27128) y se colocó en zócalos. Estas fichas tenían una pequeña ventana en la parte superior que permitía que la luz brillara en el dado. Cuando se tuvo que cambiar el programa, los chips se pusieron en un borrador de UV durante 20 minutos más o menos, lo que borraría todo el chip. Entonces el chip se programaría con el nuevo programa.

Algunas EEPROM requieren borrar bloques de memoria antes de programar; otros permiten escribir un byte a la vez (el controlador EEPROM en realidad borra primero el byte y lo programa).


2
Este es un gran resumen de cómo se accede a las memorias no volátiles, pero en realidad no aborda POR QUÉ el estado borrado es '1' y no '0'.
akohlsmith

1
@akohlsmith Agregué esa información para que sea más completa. Pero el problema real no es si la celda predeterminada es un 1 o un 0; esto podría revertirse simplemente colocando inversores en cada línea de datos. El problema real es por qué hay un estado predeterminado en primer lugar; es decir, puede escribir un 0 por no un 1; este último requiere borrar en bloques.
tcrosley

1
No estoy de acuerdo, la pregunta parecía bastante específica acerca de por qué el estado borrado está 'establecido' en lugar de 'claro'; de todos modos, me encanta tu respuesta y un +1 de mí (no es que sea nadie, solo un extraño de Internet al que le gusta su respuesta)
akohlsmith

1
@akohlsmith Estoy de acuerdo con usted en que, por convención, los estados establecidos suelen ser 1, y de hecho así es como funcionan las células individuales. Tomaría un poco de hardware adicional (no mucho) para revertirlo, y no había necesidad de hacerlo: 1 ya que el valor predeterminado era correcto.
tcrosley

Esta es una respuesta genial. Pero creo que será más fácil de entender si dice: no puede programar 1 en estos dispositivos, solo puede programar 0. Si desea programar los 1, debe borrar los dispositivos y restaurar todo el bloque al estado predeterminado 1, y luego programar los 0 según sea necesario. . Por ejemplo, para el programa 0101a 1010, que tiene que hacer en esta secuencia: 0101-> (borrar) -> 1111-> (sistema de control de 0) -> 1010. O esencialmente, significa que la escritura de 1 y la escritura de 0 se realizan con granularidad diferente .
smwikipedia

4

En la memoria flash moderna, no conozco ninguna razón para elegir los ceros por defecto. Las lecturas se realizan a través de amplificadores de detección de corriente diferencial, por lo que, en principio, podría tomar la salida de cualquier lado. (Las primeras EEPROM podrían haber tenido circuitos de lectura más simples, no estoy seguro).

No es una buena razón para no añadir convertidores adicionales - que aumentaría el retardo de propagación de la memoria en la CPU. En los microcontroladores, la ruta de datos de flash a CPU tiene un gran efecto en el rendimiento general del sistema, ya que determina cuánto tiempo lleva obtener nuevas instrucciones.

Los diseñadores de circuitos digitales a menudo esperan que cero signifique borrar / restablecer / borrar. Pero los transistores flash y los circuitos de lectura son analógicos. Desde ese punto de vista, describir el estado de conducción del transistor flash como lógico tiene más sentido. Y sucede que pasar de uno a cero es mucho, mucho más rápido que pasar de cero a uno, de modo que uno se convierte en el estado "borrado" mientras que el cero se convierte en el estado "programado".

Versión corta: los físicos de semiconductores y los diseñadores de circuitos analógicos no se preocupan por sus intuiciones digitales. :-)


1

No estoy seguro de qué es lo que estás citando, pero al salir de la página de Wikipedia para la memoria flash, parece ser el resultado del hardware detrás de la memoria flash:

Una celda flash NOR de nivel único en su estado predeterminado es lógicamente equivalente a un valor "1" binario, porque la corriente fluirá a través del canal bajo la aplicación de un voltaje apropiado a la puerta de control, de modo que el voltaje de la línea de bits se reduzca ".

Si usara otro tipo de flash, por ejemplo, NAND, el estado predeterminado sería 1 porque la salida de NAND es 1 cuando cualquiera de las salidas de los transistores está por debajo de su voltaje de umbral alto / bajo.

Disculpas si me perdí el barco por lo que me preguntabas, también soy bastante nuevo en todo esto.


1
Pero dado que hay un circuito entre las celdas y los pines, que al igual que la mayoría de las construcciones lógicas probablemente realiza inherentemente una serie de inversiones implícitas, ¿por qué el estado borrado se usa necesariamente como un "0" y no como un "1"?
Chris Stratton

No entiendo bien su pregunta: ¿el estado ERASE no se usa como "1"? Pregunto con respecto a esto (en "FUNCIONAMIENTO Y CARACTERÍSTICAS DE LA CÉLULA DE MEMORIA EEPROM").
llee94

Qué estado eléctrico de la celda en sí corresponde a qué estado lógico de la interfaz externa parece casi arbitrario, ya que hay elementos de circuito inversos múltiples, probablemente implícitos, entre los dos.
Chris Stratton

1
@ChrisStratton Creo que Ilee94 dijo que el estado borrado es en realidad un 1. Pero en realidad es arbitrario: si coloca inversores en las líneas de datos, sería como lo describió. 1 como el estado predeterminado simplemente requiere un poco menos de hardware.
tcrosley

O un poco más de hardware: realmente depende de si hay un número impar o par de elementos de circuito de inversión implícita entre la celda y la salida.
Chris Stratton

1

Las ROM y PROM de antaño cuando tenían que manipularse agregando metal en la capa de máscara durante la fabricación o quemando en la programación y ambos procesos tenían un estado alto predeterminado cuando se fabricaban. Tenerlos predeterminados en BAJO habría costado más transistores, reducido la conveniencia de programación o la velocidad de operación de alguna manera.

Desde entonces se ha convertido en una convención porque sería posible agregar un inversor en algún momento de la ruta de datos en estos días.

La convención puede haber comenzado en los días de las matrices de memoria lógica de diodos que tenían diodos para extraer líneas de datos cuando se dirigían y las palabras de memoria no utilizadas no tendrían diodos en lugar de todos los diodos. La mayoría de los primeros estándares de lógica digital fueron activamente BAJADOS y flotaron alto si no.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.