NVRAM

Origem: Wikipédia, a enciclopédia livre.
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]

Características dos dispositivos de memória
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:

  1. 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.
  2. 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.
  3. 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.

Referências

  1. CAPUANO, Francisco. G. (2014). Sistemas Digitais - Circuitos Combinacionais e Sequenciais. [S.l.]: Saraiva. p. 121. ISBN 9788536520322. Consultado em 22 de novembro de 2021 
  2. Barr, M. (1999). Programming embedded systems in C and C++. Alemanha: O'Reilly.[1]
  3. «Definição de NVRAM (memória de acesso aleatório não volátil)». techlib.wiki. Consultado em 29 de novembro de 2021 
  4. 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 
Ícone de esboço Este artigo sobre hardware é um esboço. Você pode ajudar a Wikipédia expandindo-o.