Perché la maggior parte delle memorie non volatili ha 1 logico come stato predefinito?


14

Ho usato la memoria non volatile , come la memoria EEPROM e FLASH, nelle applicazioni incorporate e ho sempre scoperto che le posizioni dei bit di memoria inutilizzata (EEPROM / FLASH) sono sempre impostate di 1default. Perché viene utilizzato al posto di 0?

Ad esempio un indirizzo, dire 0 ° indirizzo (primo byte di memoria), se non scritto dall'utente, memorizza sempre 0xffe non 0x00. Perché le persone che hanno costruito i chip di memoria lo hanno tenuto così? Sono sicuro di mantenere la posizione di memoria predefinita in quanto 0xfffornirebbe qualche vantaggio o qualcosa di importante per il produttore.

Qual è la ragione dietro questa struttura nei chip di memoria?

Risposte:


20

Discuterò della programmazione della memoria flash, ma molto materiale sarà simile alle EEPROM (ROM programmabili cancellabili elettricamente), poiché la memoria flash è stata derivata dalle EEPROM a metà degli anni '80. Come descritto di seguito, da un punto di vista fisico, lo stato predefinito è 1. Ma ancora più importante, ho intenzione di spiegare il motivo per cui c'è uno stato predefinito - non si può semplicemente arbitrariamente programma in cima a ciò che è già programmato dall'ultima volta.

Il flash NOR viene quasi sempre scelto per il flash di programma poiché l'interfaccia è più adatta per posizionare i dati all'interno della mappa di memoria del microcontrollore: i bus di indirizzo completo e dati imitano la RAM e consentono l'accesso casuale a qualsiasi posizione. I dati possono essere letti una parola alla volta, dove una parola è definita come la larghezza dei dati del microcontrollore, in genere 8, 16 o 32 bit. Il flash NAND, d'altra parte, è stato sviluppato per sostituire i dischi rigidi e funziona in sequenza.

Tuttavia, la programmazione diventa un po 'più complicata. Come già accennato, lo stato predefinito per flash NOR e altre memorie non volatili come flash NAND, EEPROM e persino EPROM è una logica 1. Non è possibile programmare 1 su questi dispositivi, è possibile programmare solo 0. Ad esempio, se hai un byte contenente 0x0123 e vuoi cambiarlo in 0x3210, non puoi farlo direttamente come scrivere su un byte nella RAM.

Invece, i bit nella memoria devono essere cancellati, il che li mette nello stato predefinito 1 già menzionato. Questo può essere fatto solo in blocchi, non in parole. Sul Microchip PIC32, con cui ho lavorato di recente, la dimensione minima del blocco che può essere cancellata è 4096 byte. Quindi, se si desidera modificare solo una parola (32 bit), è necessario leggere il 4K della memoria, cancellare il blocco, quindi riscrivere il 4K della memoria in flash ma includendo il nuovo valore a 32 bit secondo necessità. Questa cancellazione può richiedere del tempo, buona parte del secondo.

La seguente è una foto di una cella di memoria flash. Flash memorizza i dati rimuovendo o mettendo elettroni sul gate flottante. Quando gli elettroni sono presenti sulla porta flottante, nessuna corrente scorre attraverso il transistor, indicando uno 0. Quando gli elettroni vengono rimossi dalla porta fluttuante, il transistor inizia a condurre, indicando un 1. (Questo è per convenzione - avrebbe potuto essere il in altro modo, ma richiederebbe gli inverter su tutte le linee dati.)

inserisci qui la descrizione dell'immagine

Cancella operazione. Lo stato predefinito delle celle di memoria flash (una cella flash NOR a livello singolo) è 1 perché le porte mobili non portano cariche negative. La cancellazione di una cella di memoria flash (ripristinando su 1) si ottiene applicando una tensione attraverso la sorgente e la porta di controllo (word line). La tensione può essere compresa tra -9 V e -12 V. E applicare anche circa 6 V alla sorgente. Gli elettroni nel gate flottante vengono estratti e trasferiti alla sorgente mediante tunnel quantico . In altre parole, gli elettroni attraversano il tunnel dal gate flottante alla sorgente e al substrato.

Poiché la cancellazione utilizza alte tensioni, la cancellazione in blocchi richiede meno area della matrice. Quindi le tensioni possono essere applicate solo a intere file di transistor alla volta.

Per la scrittura, una cella flash NOR può essere programmata o impostata su 0 mediante la seguente procedura. Durante la scrittura, viene applicata un'alta tensione di circa 12V al gate di controllo (word line). Se viene applicata un'alta tensione intorno a 7 V alla bit line (terminale di drain), nella cella viene memorizzato uno 0. Il canale è ora attivato, quindi gli elettroni possono fluire dalla sorgente allo drain. La corrente di drain della sorgente è sufficientemente elevata da far saltare alcuni elettroni ad alta energia attraverso lo strato isolante sulla porta flottante attraverso un processo chiamato iniezione di elettroni caldi.

Per la lettura, una tensione di circa 5 V viene applicata al gate di controllo e circa 1 V allo scarico. Lo stato della cella di memoria si distingue per la corrente che scorre tra il drain e la sorgente.

La vita utile della memoria non volatile viene misurata in termini di cicli di cancellazione. Lo svantaggio di NOR è che il numero di cicli di cancellazione è circa 1/10 di quello della memoria NAND. Molte versioni di PIC32 consentono di aggiornare la memoria flash solo 1000 volte, molto meno dei tipici 100.000 cicli di cancellazione per EEPROM.

Quindi non è così importante se i progettisti hanno impostato lo stato predefinito su 1 o 0 (hanno scelto il valore che ha permesso l'implementazione più semplice); l'importante è che prima si debba cancellare un blocco di flash (che richiede tempo), quindi riprogrammare l'intero blocco (anche se viene cambiata una sola parola (che richiede una notevole quantità di RAM).

La cancellazione di questo blocco del dispositivo risale alle prime EPROM (ROM programmabili cancellabili), che hanno proceduto alle EEPROM. Il codice è stato programmato in chip (come il 27128 16 KB) e inserito in socket. Questi chip avevano una piccola finestra in cima che permetteva alla luce di brillare sul dado. Quando è stato necessario modificare il programma, i chip sono stati inseriti in una gomma UV per circa 20 minuti, il che avrebbe cancellato l'intero chip. Quindi il chip verrebbe programmato con il nuovo programma.

Alcune EEPROM richiedono la cancellazione di blocchi di memoria prima della programmazione; altri consentono di scrivere un byte alla volta (il controller EEPROM cancella prima il byte e lo programma).


2
Questa è una grande panoramica di come si accede alle memorie non volatili, ma in realtà non affronta PERCHÉ lo stato cancellato è '1' e non '0'.
akohlsmith,

1
@akohlsmith Ho aggiunto queste informazioni per essere più complete. Ma il vero problema non è se la cella predefinita è 1 o 0; questo potrebbe essere invertito semplicemente mettendo gli inverter su ciascuna linea di dati. Il vero problema è perché c'è uno stato predefinito in primo luogo; cioè puoi scrivere uno 0 non un 1 - quest'ultimo richiede la cancellazione in blocchi.
Tcrosley,

1
Non sono d'accordo, la domanda sembrava abbastanza specifica sul perché lo stato cancellato sia 'impostato' piuttosto che 'chiaro' - comunque amo la tua risposta e +1 da parte mia (non che io sia nessuno, solo uno sconosciuto casuale a Internet a cui piace la tua risposta)
akohlsmith il

1
@akohlsmith Sono d'accordo con te sul fatto che, per convenzione, gli stati impostati sono di solito 1, e in effetti è così che funzionano le singole celle. Ci vorrebbe un po 'di hardware extra (non molto) per invertirlo, e non c'era bisogno di farlo: 1 come predefinito andava bene.
Tcrosley,

Questa è un'ottima risposta Ma penso che sarà più facile da capire se diciamo: non è possibile programmare 1 su questi dispositivi, è possibile programmare solo 0. Se si desidera programmare 1, è necessario cancellare i dispositivi e ripristinare l'intero blocco allo stato 1 predefinito, quindi programmare 0 come necessario. . Ad esempio, per il programma 0101a 1010, devi fare in questa sequenza: 0101-> (erase) -> 1111-> (Programma 0 di) -> 1010. O essenzialmente, significa che la scrittura di 1 e la scrittura di 0 vengono eseguite con granularità diversa .
smwikipedia,

4

Nella moderna memoria flash, non conosco alcun motivo per sceglierne uno rispetto agli zeri come predefinito. Le letture vengono eseguite tramite amplificatori di rilevamento della corrente differenziale, quindi in linea di principio è possibile prendere l'uscita da entrambi i lati. (Le prime EEPROM avrebbero potuto avere circuiti di lettura più semplici - non ne sono sicuro.)

V'è una buona ragione per non aggiungere ulteriori inverter - sarebbe aumentare il ritardo di propagazione dalla memoria alla CPU. Nei microcontrollori, il datapath da flash a CPU ha un enorme effetto sulle prestazioni complessive del sistema, poiché determina il tempo necessario per recuperare nuove istruzioni.

I progettisti di circuiti digitali spesso si aspettano che zero significhi cancellare / resettare / cancellare. Ma i transistor flash e i circuiti di lettura sono analogici. Da quel punto di vista, descrivere lo stato conduttore del transistor flash come logico ha più senso. E succede solo che passare da uno a uno zero è molto, molto più veloce di passare da uno zero a uno, quindi uno diventa lo stato "cancellato" mentre lo zero diventa lo stato "programmato".

Versione breve: ai fisici dei semiconduttori e ai progettisti di circuiti analogici non importa nulla delle tue intuizioni digitali. :-)


1

Non sono sicuro di cosa stai citando, ma andando fuori dalla pagina di Wikipedia per la memoria flash, sembra essere il risultato dell'hardware dietro la memoria flash:

Una cella flash NOR a livello singolo nel suo stato predefinito è logicamente equivalente a un valore binario "1", perché la corrente fluirà attraverso il canale applicando una tensione appropriata alla porta di controllo, in modo che la tensione di bitline sia ridotta. "

Se dovessi usare un altro tipo di flash, ad esempio NAND, lo stato predefinito sarebbe 1 perché l'uscita di NAND è 1 quando una delle uscite dei transistor è al di sotto della loro tensione di soglia alta / bassa.

Mi scuso se ho perso totalmente la barca per quello che mi stavi chiedendo, sono abbastanza nuovo anche per tutto questo.


1
Ma dato che esiste un circuito tra le celle e i pin, che come la maggior parte dei costrutti logici probabilmente esegue intrinsecamente un numero di inversioni implicite, perché lo stato cancellato è necessariamente usato come "0" e non come "1"?
Chris Stratton,

Non capisco bene la tua domanda: lo stato ERASE non è usato come "1"? A tale proposito chiedo (sotto "FUNZIONAMENTO E CARATTERISTICHE DELLA CELLA DI MEMORIA EEPROM").
llee94,

Quale stato elettrico della cella stessa corrisponde a quale stato logico dell'interfaccia esterna sembra quasi arbitrario, in quanto vi sono elementi circuitali multipli, probabilmente impliciti, che invertono tra i due.
Chris Stratton,

1
@ChrisStratton Credo che Ilee94 abbia detto che lo stato cancellato è in realtà un 1. Ma in realtà è arbitrario - se si posizionano gli inverter sulle linee dati sarebbe come descritto. 1 come stato predefinito richiede semplicemente un po 'meno hardware.
Tcrosley,

O un po ' più di hardware - dipende davvero se c'è un numero dispari o pari di elementi di circuito implicitamente invertiti tra la cella e l'uscita.
Chris Stratton,

1

Le ROM e le PROM di ritorno quando dovevano essere manipolate aggiungendo metallo nello strato maschera durante la produzione o bruciandolo durante la programmazione ed entrambi i processi avevano uno stato elevato predefinito quando venivano fabbricate. Avere questi valori predefiniti su BASSO avrebbe comportato un costo maggiore per i transistor, riducendo in qualche modo la comodità di programmazione o la velocità operativa.

Da allora è diventata una convenzione perché in questi giorni sarebbe possibile aggiungere un inverter ad un certo punto nel percorso dei dati.

La convenzione potrebbe essere iniziata ai tempi delle matrici di memoria con logica a diodi che avevano diodi per abbattere le linee dati quando venivano indirizzate e le parole di memoria inutilizzate non avrebbero avuto diodi invece di tutti i diodi. La maggior parte dei primi standard di logica digitale sono stati attivamente abbassati e fluttuati in alto se non.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.