NVRAMNVRAM (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]
À 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]
Definindo exemplos de NVRAM - SRAM e EEPROM[3]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]Consideramos três configurações de gerenciamento de cache:
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
|