Por que a maioria das memórias não voláteis tem 1 lógico como o estado padrão?

14

Usei memória não volátil , como memória EEPROM e FLASH, em aplicativos incorporados e sempre achei que os locais de bits da memória não utilizada (EEPROM / FLASH) são sempre definidos 1por padrão. Por que isso é usado em vez de 0?

Por exemplo, um endereço, digamos o 0º endereço (primeiro byte de memória), se não for gravado pelo usuário, sempre armazena 0xffe não 0x00. Por que as pessoas que construíram os chips de memória continuaram assim? Tenho certeza de que manter o local de memória padrão, pois 0xfftraria alguma vantagem ou algo importante para o fabricante.

Qual é a razão por trás dessa estrutura nos chips de memória?

Rookie91
fonte

Respostas:

20

Discutirei a programação da memória flash, mas muito material será semelhante às EEPROMs (ROM programáveis ​​eletricamente apagáveis), já que a memória flash foi derivada das EEPROMs em meados dos anos 80. Conforme descrito abaixo, do ponto de vista físico, o estado padrão é 1. Mas o mais importante, eu vou explicar por que é um estado padrão - você pode não apenas arbitrariamente programa em cima do que já está programado a partir da última vez.

O flash NOR quase sempre é escolhido para o flash do programa, pois a interface é mais adequada para colocar os dados no mapa de memória do microcontrolador - barramentos de endereço e dados completos imitam a RAM e permitem acesso aleatório a qualquer local. Os dados podem ser lidos uma palavra de cada vez, onde uma palavra é definida como a largura dos dados do microcontrolador, normalmente 8, 16 ou 32 bits. O flash NAND, por outro lado, foi desenvolvido para substituir os discos rígidos e funciona sequencialmente.

No entanto, a programação fica um pouco mais complicada. Como já mencionado, o estado padrão do flash NOR e de outras memórias não voláteis, como flash NAND, EEPROMs e até EPROMs, é uma lógica 1. Você não pode programar 1s nesses dispositivos, é possível programar apenas 0s. Por exemplo, se você possui um byte contendo 0x0123 e deseja alterá-lo para 0x3210, não pode fazê-lo diretamente como escrever sobre um byte na RAM.

Em vez disso, os bits na memória devem ser apagados, o que os coloca no estado padrão 1 já mencionado. Isso só pode ser feito em blocos, não em palavras. No Microchip PIC32, com o qual trabalhei mais recentemente, o tamanho mínimo do bloco que pode ser apagado é de 4096 bytes. Portanto, se você quiser alterar apenas uma palavra (32 bits), precisará ler o 4K de memória, apagar o bloco e gravar o 4K de memória novamente para piscar, mas incluindo o novo valor de 32 bits, conforme necessário. Essa exclusão pode levar algum tempo - uma boa parte de um segundo.

A seguir, é apresentada uma imagem de uma célula de memória flash. O Flash armazena os dados removendo ou colocando elétrons no portão flutuante. Quando elétrons estão presentes no portão flutuante, nenhuma corrente flui através do transistor, indicando um 0. Quando os elétrons são removidos do portão flutuante, o transistor começa a conduzir, indicando um 1. (Isso é por convenção - poderia ter sido o de outra maneira, mas exigiria inversores em todas as linhas de dados.)

insira a descrição da imagem aqui

Apague a operação. O estado padrão das células de memória flash (uma célula flash NOR de nível único) é 1 porque os portões flutuantes não carregam cargas negativas. A exclusão de uma célula de memória flash (redefinindo para 1) é obtida aplicando uma tensão na fonte e no portão de controle (linha da palavra). A tensão pode estar na faixa de -9V a -12V. E também aplique cerca de 6V à fonte. Os elétrons no portão flutuante são arrancados e transferidos para a fonte por tunelamento quântico . Em outras palavras, os elétrons passam do túnel do portão flutuante para a fonte e o substrato.

Como o apagamento utiliza altas tensões, o apagamento em blocos requer menos área da matriz. Portanto, as tensões só podem ser aplicadas a linhas inteiras de transistores por vez.

Para escrever, uma célula flash NOR pode ser programada ou definida como 0 pelo procedimento a seguir. Durante a gravação, uma alta tensão de cerca de 12V é aplicada ao portão de controle (linha da palavra). Se uma alta tensão em torno de 7V é aplicada à linha de bits (terminal de drenagem), um 0 é armazenado na célula. O canal está agora ativado, para que os elétrons possam fluir da fonte para o dreno. A corrente de drenagem da fonte é suficientemente alta para fazer com que alguns elétrons de alta energia pulem através da camada isolante para o portão flutuante através de um processo chamado injeção de elétrons quentes.

Para a leitura, uma voltagem de cerca de 5V é aplicada à porta de controle e de cerca de 1V ao dreno. O estado da célula de memória é distinguido pela corrente que flui entre o dreno e a fonte.

A vida útil da memória não volátil é medida em termos de ciclos de apagamento. A desvantagem da NOR é que o número de ciclos de apagamento é cerca de 1/10 do da memória NAND. Muitas versões do PIC32 permitem que a memória flash seja atualizada apenas 1000 vezes, muito menos do que os 100.000 ciclos de apagamento típicos para EEPROMs.

Portanto, não é tão importante se os designers criaram o estado padrão como 1 ou 0 (eles escolheram o valor que permitia a implementação mais fácil); o importante é que é preciso apagar um bloco de flash primeiro (o que leva tempo) e depois reprogramar o bloco inteiro (mesmo que uma única palavra esteja sendo alterada (o que requer uma quantidade substancial de RAM).

Esse apagamento em bloco do dispositivo remonta às primeiras EPROMs (ROMs programáveis ​​apagáveis), que procediam às EEPROMs. O código foi programado em chips (como o 16KB 27128) e colocado em soquetes. Esses chips tinham uma pequena janela no topo que permitia que a luz brilhasse no dado. Quando o programa teve que ser alterado, os chips foram colocados em uma borracha UV por 20 minutos ou mais, o que apagaria todo o chip. Em seguida, o chip seria programado com o novo programa.

Algumas EEPROMs precisam apagar blocos de memória antes da programação; outros permitem escrever um byte de cada vez (o controlador EEPROM na verdade apaga o byte primeiro e os programas).

tcrosley
fonte
2
Esta é uma ótima visão geral de como as memórias não voláteis são acessadas, mas na verdade não abordam POR QUE o estado apagado é '1' e não '0'.
akohlsmith
1
@akohlsmith Adicionei essas informações para serem mais completas. Mas a questão real não é se a célula padrão é 1 ou 0; isso pode ser revertido apenas colocando inversores em cada linha de dados. A verdadeira questão é por que existe um estado padrão em primeiro lugar; ou seja, você pode escrever um 0 e não um 1 - este último exige a exclusão em blocos.
Tcrosley
1
Eu discordo, a pergunta parecia bastante específica sobre por que o estado apagado é 'definido' em vez de 'claro' - de qualquer maneira, adoro a sua resposta e recebo +1 de mim (não que eu seja alguém, apenas um estranho aleatório da Internet que gosta de sua resposta)
akohlsmith
1
@akohlsmith Concordo com você que, por convenção, os estados definidos são geralmente 1 e que, de fato, é assim que as células individuais funcionam. Seria necessário algum hardware extra (não muito) para revertê-lo, e não havia necessidade de fazê-lo: 1, pois o padrão estava correto.
tcrosley
Esta é uma ótima resposta. Mas acho que será mais fácil entender se, digamos: você não pode programar 1s nesses dispositivos, é possível programar apenas 0s. Se você deseja programar 1, precisa apagar os dispositivos e restaurar o bloco inteiro de volta ao estado 1 padrão e depois programar 0, conforme necessário. . Por exemplo, para programar 0101para 1010, você deve fazer nesta sequência: 0101-> (apagar) -> 1111-> (programas 0) -> 1010. Ou, essencialmente, significa que a gravação de 1 e a gravação de 0 são feitas com granularidade diferente .
smwikipedia 17/09/18
4

Na memória flash moderna, não conheço nenhum motivo para escolher zeros como padrão. As leituras são feitas através de amplificadores sensoriais de corrente diferencial, portanto, em princípio, você pode obter a saída de qualquer lado. (As primeiras EEPROMs podem ter circuitos de leitura mais simples - não tenho certeza.)

Não é uma boa razão para não adicionar inversores extra - que iria aumentar o atraso de propagação da memória para a CPU. Nos microcontroladores, o caminho de dados do flash para a CPU tem um enorme efeito no desempenho geral do sistema, pois determina quanto tempo leva para buscar novas instruções.

Os projetistas de circuitos digitais geralmente esperam que zero signifique claro / redefinido / apagado. Mas os transistores flash e os circuitos de leitura são analógicos. Desse ponto de vista, descrever o estado condutor do transistor flash como um lógico faz mais sentido. E acontece que passar de um para zero é muito, muito mais rápido do que passar de zero para um, de modo que se torna o estado "apagado" enquanto o zero se torna o estado "programado".

Versão curta: Físicos de semicondutores e projetistas de circuitos analógicos não se importam com suas intuições digitais. :-)

Adam Haun
fonte
1

Não sei do que você está citando, mas sair da página da Wikipedia para memória flash, parece ser o resultado do hardware por trás da memória flash:

Uma célula flash NOR de nível único em seu estado padrão é logicamente equivalente a um valor "1" binário, porque a corrente fluirá através do canal sob a aplicação de uma voltagem apropriada ao portão de controle, de modo que a tensão da linha de bit seja reduzida. "

Se você usasse outro tipo de flash, por exemplo, NAND, o estado padrão seria 1 porque a saída de NAND é 1 quando qualquer saída dos transistores estiver abaixo da tensão limite alto / baixo.

Desculpas se eu perdi totalmente o barco sobre o que você estava perguntando, também sou bastante novo nisso tudo.

llee94
fonte
1
Mas, dado que há um circuito entre as células e os pinos, que, como a maioria das construções lógicas provavelmente realiza inerentemente uma série de inversões implícitas, por que o estado apagado é necessariamente usado como "0" e não como "1"?
22815 Chris Stratton
Não entendi bem sua pergunta - o estado ERASE não é usado como "1"? Eu pergunto com relação a isso (em "OPERAÇÃO E CARACTERÍSTICAS DE CÉLULAS DE MEMÓRIA EEPROM").
Lll94
Qual o estado elétrico da célula em si corresponde ao estado lógico da interface externa que parece quase arbitrário, pois existem múltiplos, provavelmente implícitos, elementos de circuito inversor entre os dois.
Chris Stratton
1
@ ChrisStratton Eu acredito que o Ilee94 disse que o estado apagado é realmente um 1. Mas é realmente arbitrário - se você colocar inversores nas linhas de dados, seria como você descreveu. 1 como o estado padrão simplesmente requer um pouco menos de hardware.
tcrosley
Ou um pouco mais de hardware - isso realmente depende de se existe um número ímpar ou par de elementos de circuito inversamente implícitos entre a célula e a saída.
22415 Chris Stratton
1

As ROMs e PROMs remontam quando tinham que ser manipuladas adicionando metal na camada de máscara durante a fabricação ou queimando-a na programação e ambos os processos tinham um estado alto padrão quando fabricados. Tê-los como padrão LOW teria custado mais transistores, reduzindo a conveniência de programação ou a velocidade de operação de alguma maneira.

Desde então, tornou-se uma convenção, porque a adição de um inversor em algum momento no caminho dos dados hoje em dia seria possível.

A convenção pode ter começado nos dias de matrizes de memória lógica de diodos que tinham diodos para puxar as linhas de dados quando foram endereçadas e as palavras de memória não utilizadas não teriam diodos em vez de todos os diodos. A maioria dos primeiros padrões lógicos digitais foram ativados para baixo e flutuaram alto, se não.

KalleMP
fonte