NVRAM
NVRAM (acrônimo para Non-Volatile Random Access Memory, que significa memória não volátil de acesso aleatório em inglês) é um tipo de memória que mantém seus dados mesmo sem a alimentação de energia.
No caso dos computadores (mais especificamente a família x86), a NVRAM é a memória utilizada para manter as configurações do BIOS, com um tamanho de 256 bytes.
Quando o computador é ligado, é gerado um número somando todos os words do BIOS e depois é verificado se este número é igual ao ultimo número salvo. Caso seja diferente os dados desta memória por algum motivo estão "danificados", e é exibida a mensagem "Update Failed..." (que significa A atualização falhou...) ou "CMOS Checksum Error" (que significa Erro de Soma de Verificação do CMOS), o que é mais comum quando a bateria do computador está fraca.
Em alguns tipos de computadores, alguns dados são mudados quando o computador liga. Quando acontece algum problema na atualização dos dados ou os dados estão corrompidos, o BIOS normalmente é reconfigurado com a configuração padrão (mais lenta, já que deve suportar todos os processadores) e a mensagem é exibida. Isto é muito comum em computadores com a bateria fraca ou quando a placa mãe é de má qualidade.
Definindo a volatilidade[1]
[editar | editar código-fonte]- Voláteis - São aquelas que, quando têm seu suprimento de energia interrompido, perdem suas informações armazenadas. Geralmente produzidos a partir de semicondutores, podendo conter em sua estrutura o flip-flop. Um exemplo deste tipo são as RAM.
- Não Voláteis - Quando o fluxo de energia é interrompido, continuam com suas informações armazenadas, destacando-se as memórias eletrônicas ROM, PROM e a EEPROM.
À medida que as tecnologias das memórias evoluíram nos últimos anos, o limiar entre os dispositivos RAM e ROM tornou-se impreciso. Atualmente existem diversos tipos de memória que combinam as melhores características de ambas. Esses dispositivos não pertencem a nenhum dos grupos e podem ser chamados coletivamente de dispositivos de memória híbrida. As memórias híbridas podem ser lidas e gravadas conforme desejado, como a RAM, mas mantendo seu conteúdo sem energia elétrica, assim como a ROM. Dois dos dispositivos híbridos, EEPROM e Flash, são descendentes de dispositivos ROM; a terceira e que mais nos interessa aqui é a NVRAM, que é uma versão modificada da SRAM.
Para saber mais acerca dos dispositivos EEPROM, Flash e ROM, consulte o livro sobre programação de sistemas embarcados em C e C++ mencionado nas referências deste artigo.
O terceiro membro da classe de memórias híbridas é a NVRAM. A Não-Volatilidade é uma característica tanto das ROM, quanto das memórias híbridas mencionadas anteriormente. No entanto memórias não voláteis são fisicamente muito diferentes destes dispositivos. Normalmente uma memória não volátil é apenas uma SRAM com uma bateria para alimentação. Quando essa energia é ligada, as memórias não voláteis funcionam como qualquer outra SRAM, mas quando a energia é interrompida, as memórias não voláteis passam a usar energia a partir da bateria em quantidades suficientes para apenas preservar o seu conteúdo. Memórias não voláteis são muito comuns em sistemas embarcados, no entanto elas possuem um alto custo, até maior do que as SRAM, por isso suas aplicações normalmente limitam-se ao armazenamento de poucas centenas de bytes de informações críticas do sistema que não são guardadas de uma maneira melhor.[2]
Tipo
de Memória |
Volátil? | Escrita? | Tamanho
de Limpeza? |
Apagar
Ciclos? |
Custo x Benefício | Velocidades |
---|---|---|---|---|---|---|
SRAM | Sim | Sim | Byte | Ilimitada | Caro | Rápido |
DRAM | Sim | Sim | Byte | Ilimitada | Moderado | Moderado |
Mascara
ROM |
Não | Não | n/a | n/a | Barato | Rápido |
PROM | Não | Uma vez, com
programador |
n/a | n/a | Moderado | Rápido |
EPROM | Não | Sim, com
programador |
Chip | Limitado | Moderado | Rápido |
EEPROM | Não | Sim | Byte | Limitado | Caro | Rápido para Leitura / Lento para escrita |
Flash | Não | Sim | Setor | Limitado | Moderado | Rápido para Leitura / Lento para escrita |
NVRAM | Não | Sim | Byte | Nenhum | Caro | Rápido |
Definindo exemplos de NVRAM - SRAM e EEPROM[3]
[editar | editar código-fonte]SRAM usa fontes alternativas de energia, como baterias para armazenar dados. É geralmente usada para armazenar configurações de hardware do computador que precisam ser mantidos quando o computador é desligado. Exemplos comuns incluem configurações de BIOS em computadores Windows ou configurações de PROM em sistemas Macintosh. Visto que a SRAM geralmente usa uma bateria para manter a memória, se a bateria estiver descarregada ou desconectada, os dados armazenados serão perdidos. Portanto, se as configurações do BIOS ou PRAM não forem mantidas após a reinicialização do computador, é provável que a bateria do computador esteja esgotada e precise ser substituída.
A EEPROM usa cargas eletricas, que mantém seu estado sem energia, para armazenar dados. Portanto, a EEPROM não requer baterias ou outras fontes de energia para salvar os dados. O tipo mais comum de EEPROM é a memória flash, que é usada em unidades de chaveiro USB e outros dispositivos eletrônicos portáteis.
Gravações e leituras NVRAM[4]
[editar | editar código-fonte]Consideramos três configurações de gerenciamento de cache:
- A primeira opção, Buffer de software, depende de um software para gerenciar um cache de buffer DRAM, como no convencional bancos de dados com suporte de disco.
- Em segundo lugar, podemos omitir o cache ou dependem exclusivamente de um buffer de hardware, como na memória principal bancos de dados. Os caches de hardware são rápidos (por exemplo, SRAM no chip) e remover a complexidade do software, mas fornecer capacidade limitada.
- Terceiro, podemos replicar para DRAM todos os dados armazenados em NVRAM - grava, atualiza DRAM e NVRAM (para recuperação), mas lê, recupera dados exclusivamente de DRAM. A replicação de dados garante leituras rápidas, evitando latências de leitura de NVRAM (exceto para recuperação) e simplifica o gerenciamento de buffer, mas requer grande capacidade de DRAM.
As gravações persistentes, ao contrário das leituras, não se beneficiam do armazenamento em cache; as gravações persistem no dispositivo para correção da recuperação. Além disso, as atualizações de NVRAM devem ser cuidadosamente ordenada para garantir uma recuperação consistente. Assumimos que a ordem é aplicada por meio de um mecanismo que chamamos de barreira persist, que garante que grava antes da barreira persistir antes de qualquer operação dependente após a persistência da barreira.
Barreiras persistentes podem ser implementadas de várias maneiras, o mais fácil, mas com pior desempenho, é atrasar em persistir as barreiras até que todas as gravações NVRAM pendentes persistam com sucesso. Mais mecanismos complicados melhoram o desempenho, permitindo que os dados originais da página sejam copiados para o registro da página. O log da página é marcado como válido e a versão suja da página é copiada para NVRAM (atualizado no local enquanto os bloqueios são mantidos).
Finalmente, o log está marcado como inválido. Quatro barreiras persistentes garantem que cada persistência é concluída antes da próxima, reforçando a consistência em todos os pontos da execução. A recuperação verifica os sinalizadores válidos de todos os registros da página, copiando os registros válidos de volta ao local. O registro é sempre válido enquanto a página permanece no local, protegendo contra gravações NVRAM parciais.
- ↑ CAPUANO, Francisco. G. (2014). Sistemas Digitais - Circuitos Combinacionais e Sequenciais. [S.l.]: Saraiva. p. 121. ISBN 9788536520322. Consultado em 22 de novembro de 2021
- ↑ Barr, M. (1999). Programming embedded systems in C and C++. Alemanha: O'Reilly.[1]
- ↑ «Definição de NVRAM (memória de acesso aleatório não volátil)». techlib.wiki. Consultado em 29 de novembro de 2021
- ↑ Pelley, Steven; Wenisch, Thomas F.; Gold, Brian T.; Bridge, Bill (1 de outubro de 2013). «Storage management in the NVRAM era». Proceedings of the VLDB Endowment (2): 121–132. ISSN 2150-8097. doi:10.14778/2732228.2732231. Consultado em 29 de novembro de 2021