Manual

do

Maker

.

com

Tipos de memória flash

Tipos de memória flash

O título está demasiadamente "específico" e "difuso", mas vamos falar de tipos de memória flash; mais especificamente da durabilidade da memória flash do ESP32, porque é uma dúvida comum.

Memória flash NAND

Esse é um dos tipos de memória flash que existem. A memória NAND é mais rápida para escrita, porém tem uma durabilidade menor.

SCL (Single-Level Cell)

Ciclos de apagamento na SLC tem uma estimativa de 50 à 100 mil vezes por célula. Nesse intervalo temos então a possibilidade de ela começar a falhar. Ela armazena 1 bit por célula e são mais robustas, usadas em aplicações industriais de alto desempenho.

MLC (Multi-Level Cell)

A MLC NAND tem um ciclo bem inferior. Normalmente entre 3 e 10 mil vezes por célula. As MLCs armazenam 2 bits por células e claro, são mais frágeis, por isso não são preferidas para operações cujo projeto contemple modificações com maior constância.

TLC (Trile-Level Cell)

A TLC NAND tem uma redução ainda maior; de mil à 3 mil vezes por célula, armazenando 3 bits em cada célula. Por ser mais frágil, tem menor custo e, consequentemente, utilizado em produtos mais ordinários.

QLC (Quad-Level Cell)

A QLC NAND é a mais sem-vergonha de todas, gravando entre 500 e 1000 vezes por célula. Como os nomes sugerem, um bit a mais por célula, sendo 4 na QLC. São usadas principalmente em dispositivos de alta capacidade de armazenamento, mas que a durabilidade não seja tão importante (se é que existe isso).

Memória flash NOR

A memória flash NOR é a mais durável, porém mais lenta para escrita. Mas "pode ser" que para a maioria das pessoas, essa pseudo-lentidão não seja significativa. Até porque é memória de armazenamento, não RAM.

A memória flash NOR tem um ciclo de gravação e apagamento entre 10 mil e 1 milhão. A margem é horrível, eu sei. Não dá pra ter a menor estimativa de quando o problema surgirá e nesse caso, se joga com a sorte. Nesse caso, a memória NAND SLC pode ser uma memória mais confiável para quem quer apostar em escritas superiores à 10 mil ciclos.

Com o reduzir o desgaste da memória flash?

Leituras nas memórias flash não geram desgaste significativos. O apagamento e reescrita sim, contam diretamente no ciclo de vida da memória. Um dos momentos de gravação é quando gravamos nosso firmware. Talvez uma QLC não seja boa o suficiente para um maker, já que o ciclo é baixíssimo, mas uma NAND SLC ou uma NOR dificilmente serão deterioradas em experimentações. Mas existe sim uma forma de estragar a memória, que é errando na implementação do sistemas de arquivos no ESP32, utilizando qualquer sistema de arquivos que for. Um código que erroneamente entre em loop na escrita ou substituição de um arquivo pode destruir sua flash em um estalar de dedos.

Considerando o parágrafo anterior, a primeira recomendação que deixo é: Não use sistema de arquivos até ter confiança do controle correto de leitura e escrita. O sistema de arquivos é uma ótima opção para gravar logs em sistemas desconectados, mas deve-se considerar o volume e incidência de dados. É mais viável utilizar um broker MQTT (quando disponível a conectividade) para enviar dados a serem armazenados em logs.

Os números apresentados são estimativas que dependem de fatores como a qualidade de fabricação. Não sei dizer se existe um controle de qualidade do mesmo tipo que temos para memórias RAM de computadores, mas podemos considerar a possibilidade de memórias de qualidade inferior em placas de custo muito menor - e nesse ponto, devemos considerar também que um valor baixo de uma placa pode se dar ao volume de produção, de forma que há mais propensão a desconfiar de placas menos populares de baixo custo de que placas mais populares de baixo custo.

Gerenciamento da memória flash

Controladores de memória modernos implementam técnicas de nivelamento de desgastes para fazer uma distribuição mais uniforme na memória, evitando reincidência de escrita repetidamente em um mesmo endereço. Esse é um dos fatores que ajuda também a prolongar a vida útil da memória.

Em suma, utilizar sistema de arquivos é o maior risco que você correrá com memória flash NOR, caso não tenha um controle adequado da escrita. Leituras não são uma preocupação, portanto, se estiver usando a memória para exibir muitas imagens (como é possível fazê-lo no ESP32-S3 N16R8), não é necessário se preocupar. Já se estiver carregando essas imagens através de algum protocolo de comunicação remota "e" essa imagem não estiver sendo armazenada exclusivamente em RAM, aí pode ser bom rever seu projeto.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.