A redefinição de preenchimento zero pode usar o nivelamento de pen drives / unidades Flash?


4

Pelo que entendi, o nível de desgaste em pen drives / pen drives :

  • ajudar a fazer o último mais longo. (reduza o "desgaste", que uma célula flash física só pode ser gravada em XX vezes)
  • só pode realmente funcionar se houver células de memória flash não utilizadas para as quais mudar. (Quanto mais cheio o pendrive, menos células alternativas para nivelar o desgaste estão disponíveis)

Na pior das hipóteses, em um ponto do tempo, usei toda e qualquer memória do pendrive. Portanto, é menos provável que ainda ocorra algum nivelamento de desgaste. Posso / (como) reverteria esse estado?

Quero dizer, em termos de pen drives, o que está vazio

0000 0000 0000 0000(zero fill) parece-me apenas para ser como válida a dados como
1111 1111 1111 1111ou 1010 1110 0011 1111ou qualquer outro bit-padrão.

O firmware do USB-stick precisa de alguma forma de saber o que é considerado um "não utilizado" células Flash, para que ele possa usá-lo para nivelamento de desgaste novamente. Porém, depois de ter preenchido uma única vez o USB Stick completo, tenho problemas para ver como o firmware poderá determinar quais dados podem ser "substituídos", pois não contêm dados?

Portanto, minha pergunta é: O preenchimento zero pode ser uma maneira de redefinir o nível de desgaste de um stick USB

Embora eu tenha medo de que talvez isso dependa frequentemente da implementação ("firmware" e "fabricante"), ainda acho que poderia haver uma lógica nessa abordagem para assumir que "preenchimento zero" pode redefinir o pendrive em determinadas melhor projetado -USB-Sticks .

A lógica que imagino seria que o nível de desgaste do firmware reconheceria que um bloco inteiro (ou seja, 512 bytes ou 2kbytes) seria definido como apenas zeros.

Bloquear antes: 1101 1011 1000 0010 ... 0001 0011
Bloquear depois:0000 0000 0000 0000 ... 0000 0000

Ao ler este bloco, gostaria de receber, obviamente, essas informações:
Bloquear depois: 0000 0000 0000 0000 ... 0000 0000 Mas essas informações podem ser geradas em tempo real, armazenando o bloco XYZ = vazio em uma determinada célula flash disponível apenas para o firmware.

Se esse fosse o caso, o pool em que "reset" (preenchimento zero) seria ativado para outros fins, uma vez que as informações são armazenadas na parte do stick BLOCK XYZ = memória de firmware vazia.

Eu li que deveria haver alguns pendrives que possuem esse firmware e, portanto, podem ser redefinidos? Isso pode ser verdade? Gostaria de saber, com a pergunta, que uma "tendência" talvez seja apoiada por informações de fabricantes de destaque. Talvez exista até uma lista que lista os pendrives que podem ser redefinidos dessa maneira. Para que a resposta possa conter um link para essa lista.

Suponho também que não existe "um novo firmware" projetado por cada USB-Stick produzido e talvez exista um firmware USB proeminente (frequentemente usado) que faça esse nivelamento. Portanto, o quesiton poderia ser respondido com relação a esse firmware.

Na melhor das hipóteses, uma pessoa inteligente poderia encontrar uma maneira de responder à pergunta dessa forma, que contém algumas instruções que permitiam que os usuários (superusuários) "descobrissem" se esse nivelamento de desgaste está ativado ou não.

alguns antecedentes da minha pergunta

Pendrives / pen drives são coisas boas, com certeza. Mas o problema é que a maneira como eles armazenam os dados se desgasta, o que significa que após apenas XX gravações em uma célula de dados! BINGO! sua vara está morta!

Uma maneira de aliviar o problema (que as células de memória Flash só podem ser gravadas em um número bastante pequeno de vezes) é "nivelar o desgaste". O que cuidará para que, se possível, os dados nem sempre sejam gravados nas mesmas células de memória flash .

O modo que funciona é que, em vez de gravar os dados sempre nas mesmas células físicas, os dados (quando alterados) são gravados em outras células físicas novas. Isso reduz o "estresse" porque, na melhor das hipóteses, isso continuará assim.

Para ajudar a entender alguns aspectos básicos do nivelamento de desgaste, incluí este conceito abaixo, que mostra como as informações de "hello", "salut", "hola" e "hi" são subsequentemente armazenadas em uma célula de dados lógicos chamada data , que é realmente gravada a uma memória flash física diferente a cada vez (daí um pequeno "conceito" de nivelamento de desgaste).

estado 1:
[CELL1: vazia] [CELL2: vazia] [CELL3: vazia]


=> escrever dados "olá"


estado 2:
[CELL1: olá] [CELL2: vazia] [CELL3: vazia]
 data = CELL1

=> atualizar dados para "salut"


estado 3:
[CELL1: olá] [CELL2: saudação] [CELL3: vazia]
 data = CELL2

=> atualizar dados para "hola"

estado 4:
[CELL1: olá] [CELL2: saudação] [CELL3: olá]
 data = CELL3

=> atualizar dados para "oi"

state5
[CELL1: oi] [CELL2: saudação] [CELL3: Olá]
 data = CELL1 


Observe como, depois de gravar 4 vezes os dados, cada célula, em média, foi gravada apenas 1,33 vezes. Observe também que as informações em que célula contém os " dados lógicos " também devem ser armazenadas e atualizadas (o que exige que o firmware faça essa contabilidade - usando alguma memória reservada para isso também)

Respostas:


3

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

Atualmente, estou trabalhando no controlador MMC (não sei dizer quem, isso é um segredo :-)) e seu firmware verifica o conteúdo dos dados, não na gravação, mas mais tarde durante o apagamento e o GC. Desmama todos, encontrando zero regiões.

Quanto a como

"descubra" se esse nivelamento de desgaste está ativado ou não.

Você pode tentar comparar a velocidade de leitura do bloco de dados preenchido com zero gravado anteriormente e do bloco de dados preenchido aleatoriamente (melhor 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 desmarcar apenas a região gravada, a leitura dessa região deverá ser muito mais rápida, pois o controlador pode pular a leitura real do flash (que é uma operação longa).


Como um bloco de 2k (que parece ser uma unidade comum de tamanho de um bloco) de dados pode ter todos os zeros, pode ser reduzido de uma maneira que possa reamostrar o TRIM e as informações (mesmo todo zero são informações) podem ser armazenadas em um Infomration de 1 byte na memória. Esses blocos "zero" podem ser usados ​​para ciclismo desgastado. Obviamente, o bloco não pode ser usado para gravação de dados, pois isso praticamente aumentaria a memória e falharia quando os blocos fossem preenchidos novamente com dados. Mas o logik para negociar um certo padrão ("todo zero é apenas um padrão em 2k") pode ser usado para aumentar a proteção contra desgaste.
humanityANDpeace

1

Porém, depois de ter preenchido uma única vez o USB Stick completo, tenho problemas para ver como o firmware poderá determinar quais dados podem ser "substituídos", pois não contêm dados?

O TRIM visa solucionar esse problema, fornecendo um mecanismo no qual o sistema operacional pode dizer à unidade que não espera que um setor mantenha dados. TRIM é uma especificação SAS / SATA e não uma especificação USB, portanto, infelizmente, isso não funciona para unidades flash USB.

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

O preenchimento zero pode ser uma maneira de redefinir o nível de desgaste de um stick USB

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

Talvez exista até uma lista que lista os pendrives que podem ser redefinidos dessa maneira. Para que a resposta possa conter um link para essa lista.

É muito provável que, uma vez que as unidades flash USB sejam muito baratas hoje em dia, não valha a pena ao fabricante fornecer essas informações.

Suponho também que não existe "um novo firmware" projetado por cada USB-Stick produzido e talvez exista um firmware USB proeminente (frequentemente usado) que faça esse nivelamento. Portanto, o quesiton poderia ser respondido com relação a esse firmware.

Cada unidade flash USB possui um microcontrolador (microcontrolador = CPU + ROM ou firmware). Você pode abrir a unidade flash e pesquisar com base nos números no chip para tentar descobrir o tipo. Provavelmente, há um número limitado delas em comparação com o número total de unidades flash produzidas, mas não me surpreenderia que houvesse muitas variações de alguns tipos principais. Certamente não existe um firmware padrão único ou algo assim.

Existem utilitários de chip que permitem reprogramar o microcontrolador em alguns deles para criar CD-ROMs virtuais e outros em certos tipos de unidades flash. Esta é uma área sem documentação e difícil de encontrar informações. Eu não tive muita sorte.

Mas o problema é que a maneira como eles armazenam os dados se desgasta, o que significa que após apenas XX gravações em uma célula de dados! BINGO! sua vara está morta!

Não, apenas essa célula. Os SSDs (e cartões SD e pen drives) são superprovisionados, o que significa que eles têm mais flash do que o anunciado na embalagem. Esse flash extra é usado como uma área "sobressalente" para cobrir os blocos que se desgastam. Ele também cobre os defeitos do fabricante - nenhum flash possui blocos de trabalho 100% garantidos, exceto o primeiro bloco.


No seu último parágrafo, você diz "Não, apenas essa célula". ... antes de declarar que a maioria das memórias flash / USB funcionam em blocos de 2k. O que você quer dizer com célula. perda de 1 byte (= 1 célula) ou perda de 2k bytes (= 1 célula = 1 2kblock)? Além disso, acho que você afirma que muitas verdadeiras não são realmente distintas para o usuário, mas que são mais inteligentes que a qualidade e soluções mais inteligentes, como algum tipo de TRIM ou a técnica de redefinição de campo zero (como indicado em outra resposta) não é incentivada ...
humanidadeANDpeace

Bem, apenas um byte na página pode ser ruim (ou seja, não voltará a 1 quando apagado), mas como os algoritmos provavelmente funcionam na página ou até no nível do bloco, isso resulta na perda efetiva da página ou do bloco.
LawrenceC

0

O armazenamento USB não é mecânico (como as primeiras contas de uma grade), nem magnético (como na fita), nem óptico (como CDs), mas elétrico. Considere cada local como uma pequena célula da bateria que, com o tempo (muito tempo) descarrega. Toda escrita causa degradação. O preenchimento zero só tornará as coisas piores. O chip em si tem um controlador que usa 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 parte justa da carga de requisitos de armazenamento.


obrigado. Não consigo entender por que você me explica que não é mecânico / magnético? (Minha pergunta certamente não era tão burra a ponto de provocar que eu já não soubesse disso). A questão é, na verdade, sobre as especificidades do "nivelamento de desgaste" e como um preenchimento zero (assumindo um determinado firmware) seria realmente capaz de redefinir o dispositivo. Simplesmente não posso aceitar que, uma vez gravado em todos os blocos, um "nível de desgaste" estúpido nunca se recupere. Por isso acho que deve ser algo como um "trim" ou redefinir (via zero fill) para "bons dispositivos USB"
humanityANDpeace

obrigado por explicar a parte (que as perguntas são destinadas a um público mais amplo) e lamento ter interpretado errado. Na verdade, eu realmente gosto de ter havido pelo menos uma tentativa de responder à pergunta. Esse "power USB on freqüentemente" está relacionado ao problema "altura aumenta a vida útil da célula flash" ou como você quis dizer isso? graças
humanityANDpeace
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.