Pelo que entendi, o nivelamento de desgaste em USB-sticks / Flash-drives irá:
- ajude a fazer o último mais tempo. (reduza o "desgaste", que uma célula flash física só pode ser escrita para XX vezes)
- só pode funcionar se houver células de memória flash não utilizadas para as quais deseja alternar. (Quanto mais cheio é o pen drive, menos células alternativas para nivelar o desgaste estão lá)
No pior dos casos, em um ponto do tempo, usei toda e qualquer memória do dispositivo USB. Então é menos provável que algum nivelamento de desgaste possa acontecer ainda. Pode / (Como) reverter esse estado?
Quero dizer, em termos de pendrives, o que está vazio
0000 0000 0000 0000
(preenchimento zero) parece ser apenas um dado tão válido quanto 1111 1111 1111 1111
ou 1010 1110 0011 1111
ou qualquer outro padrão de bits.
O firmware do Usb-stick precisa de alguma forma saber o que é considerado um "não usado" Flash-cell, para que ele possa usá-lo novamente para nivelamento de desgaste. Mas depois de eu ter acabado de preencher o stick USB inteiro, tenho problemas para ver como o firmware será capaz de determinar quais dados podem ser "sobrescritos", já que eles não contêm dados?
Então, minha pergunta é: O preenchimento com zeros pode ser uma forma de redefinir o nivelamento de desgaste de um dispositivo USB
Allthough eu temo que talvez isso muitas vezes dependa da implementação ("firmware" e "fabricante") Eu ainda acho que poderia haver uma lógica nessa abordagem para assumir que o "preenchimento zero" pode ser a redefinição do usb-stick em certos tipos de projetados .
A lógica que imagino seria que o nivelamento de desgaste do firmware reconheceria que um bloco inteiro (ou seja, 512 bytes ou 2 kbytes) seria definido como apenas zeros.
Bloquear antes: 1101 1011 1000 0010 ... 0001 0011
Bloquear depois: 0000 0000 0000 0000 ... 0000 0000
Quando leio este bloco, gostaria de receber, é claro, esta informação:
Bloquear depois: 0000 0000 0000 0000 ... 0000 0000
Mas esta informação pode ser gerada na hora, armazenando
Bloco XYZ = vazio em uma certa célula flash disponível apenas para o firmware.
Se este for o caso, o pool quando "reset" (por preenchimento zero) seria habilitado para servir para outros propósitos, uma vez que a informação é armazenada na parte BLOCK XYZ = memória vazia do firmware do stick.
Eu li que deve haver alguns sticks USB que possuem um firmware desse tipo e, portanto, podem ser redefinidos? Isso pode ser verdade? Eu gostaria de saber pela pergunta uma "tendência" talvez apoiada em informações de um proeminente fabricante. Talvez exista até uma lista que liste os pen drives USB que podem ser redefinidos dessa maneira. Para que a resposta possa conter um link para essa lista.
Também presumo que não exista "um novo firmware" projetado por cada USB-Stick produzido e talvez exista um firmware USB proeminente (usado com frequência) que faz um nivelamento desse tipo. Então a quesiton poderia ser respondida com respeito a esse firmware.
Na melhor das hipóteses, alguma pessoa inteligente poderia encontrar uma maneira de responder a pergunta nesse formulário que contém algumas instruções que nos permitiram usuários (de super-usuário) para "descobrir" se este nivelamento de desgaste é habilitado ou não .
algum plano de fundo para minha pergunta
USB-sticks / Flash-drives são coisas boas, com certeza.
Mas o problema é que a forma como eles armazenam os dados se esgotam, o que significa, depois de apenas XX, gravar em uma célula de dados! BINGO! sua vara está morta!
Uma forma de resolver o problema (que as células de memória Flash só podem ser gravadas em um número bem pequeno de vezes) é o "nivelamento de desgaste". Que vai se importar com isso - se possível - os dados nem sempre são gravados nas mesmas células de memória flash .
A maneira que funciona é que, em vez de gravar os dados sempre nas mesmas células físicas, os dados (quando alterados) são escritos para algumas outras novas células físicas. Isso reduz o "estresse" porque, no melhor dos casos, isso vai continuar assim.
Para ajudar a entender alguns conceitos básicos de wear leveling incluí este conceito abaixo, que
mostra como as informações de "hello", "salut", "hola" e "hi" são armazenadas em
uma célula de dados lógicos chamada data , que na verdade é escrita para uma memória flash física diferente a cada vez (daí um pequeno "conceito" de nivelamento de desgaste).
state 1:
[CELL1: e-m-p-t-y] [CELL2:e-m-p-t-y] [CELL3: e-m-p-t-y]
=> write data "hello"
state 2:
[CELL1: hello] [CELL2:e-m-p-t-y] [CELL3: e-m-p-t-y]
data=CELL1
=> update data to "salut"
state 3:
[CELL1: hello] [CELL2: salut] [CELL3: e-m-p-t-y]
data=CELL2
=> update data to "hola"
state 4:
[CELL1: hello] [CELL2: salut] [CELL3: hola]
data=CELL3
=> update data to "hi"
state5
[CELL1: hi] [CELL2: salut] [CELL3: hola]
data=CELL1
Observe que depois de escrever 4 vezes dados cada célula, em média, foi escrita apenas 1,33 vezes.
Observe também que as informações que a célula contém os "dados lógicos " também devem ser armazenadas e atualizadas (o que requer que o firmware faça essa contabilização - usando alguma memória reservada para isso também)