O nivelamento de desgaste de redefinição com enchimento zero de pen drives / pen drives USB?

4

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)

    
por humanityANDpeace 13.01.2013 / 12:10

3 respostas

3

Algumas unidades flash podem verificar se todos os dados gravados são zeros e apenas remover o mapeamento dessa região em vez de programar a memória flash. Embora eu não saiba o quão comum é.

Atualmente estou trabalhando no controlador MMC (não posso dizer de quem, isso é um segredo :-)) e seu firmware verifica o conteúdo de dados, não em gravação, mas depois durante o apagamento e GC. Desmarca todas as regiões zero encontradas.

Sobre como

"find out" if this wear leveling is enable or not.

Você pode tentar comparar a velocidade de leitura do bloco de dados com preenchimento zero preenchido anteriormente e o bloco de dados com preenchimento aleatório (melhor para desligar a unidade após a gravação para evitar o uso do cache). Se a sua unidade flash verificar o conteúdo dos dados recebidos e apenas desmapear a região gravada, a leitura dessa região deverá ser muito mais rápida, pois o controlador pode ignorar a leitura real do flash (que é uma operação longa).

    
por 30.01.2014 / 00:03
1

But after I have one-time eventually filled the whole USB Stick I have trouble to see how the firmware will be able to determine what data can be "overwriten" since it is not containing data?

O TRIM destina-se a resolver esse problema, fornecendo um mecanismo no qual o sistema operacional pode informar à unidade que não está esperando que um setor contenha dados. TRIM é uma especificação SAS / SATA e não uma especificação USB, portanto, isso não funciona para as unidades flash USB, infelizmente.

Sem TRIM, não é seguro para a unidade assumir que os dados não são necessários.

Can zero-filling be a way to reset the wear-leveling a USB-Stick

Claro, se o firmware funcionar dessa maneira. Não há como saber com certeza sem o código-fonte do firmware ou a documentação do desenvolvedor. Chips de Flash funcionam em páginas e blocos. O chip pode apagar apenas blocos inteiros de uma só vez (128KB, por exemplo), que consistem em muitas páginas (2KB, por exemplo) que são geralmente maiores do que os setores tradicionais de disco rígido que as unidades USB emulam (512 bytes).

Maybe there exists even a list that lists USB-sticks which can be reset in this way. So that the answer could contain a link to such a list.

É muito provável que, dado que as unidades flash USB são muito baratas atualmente, não vale a pena para o fabricante fornecer essas informações.

Also I assume that there is not "a new firmware" designed by each USB-Stick produced and maybe there is a prominent(often used) USB-firmware that does such a wear leveling. So then the quesiton could be answered with respect to that firmware.

Cada pen drive USB possui um microcontrolador (microcontrolador = CPU + ROM ou firmware). Você pode abrir o flash drive e pesquisar com base nos números do chip para tentar descobrir o tipo. Provavelmente, há um número limitado destes em comparação com o número total de pen drives produzidos, mas não me surpreenderia que houvesse muitas variações de alguns tipos centrais. Certamente não há nenhum firmware padrão ou algo assim.

Existem utilitários de chip que permitem reprogramar o microcontrolador em alguns deles para criar CD-ROMs virtuais, como em certos tipos de pen drives. Esta é uma área descontroladamente não documentada e difícil de encontrar informações. Eu não tive muita sorte.

But the problem is that the way they store the data wears out, which means after only XX Writes to a data cell !BINGO! your Stick is dead!

Não, apenas essa célula. SSDs (e cartões SD e pen drives) são provisionados em excesso, o que significa que eles têm mais flash do que o anunciado no pacote. Este flash extra é usado como uma área "reserva" para cobrir blocos que se desgastam. Ele também cobre defeitos do fabricante - nenhum flash tem 100% garantidos de blocos de trabalho, exceto o primeiro bloco.

    
por 30.01.2014 / 00:38
0

O armazenamento USB não é mecânico (como as primeiras contas de uma grade) nem magnético (como na fita) nem óptico (como os CDs), mas sim elétrico. Considere cada local como uma pequena célula de bateria que, ao longo do tempo (muito tempo), descarrega. Toda escrita causa degradação. O preenchimento zero só piorará as coisas. O próprio chip tem um controlador que usa o nivelamento de desgaste ou não - um usuário não pode mudar isso. Em termos simples, o nivelamento de desgaste apenas garante que diferentes partes do USB recebam uma parcela justa da carga de requisitos de armazenamento.

    
por 13.01.2013 / 13:05