O que é a gravação de amplificação em dispositivos flash?

1

Eu encontrei sistemas de arquivos flash e não entendi um termo importante "Amplificação de gravação". Passando pela página da Wikipedia , eu não entendi as seguintes informações:

rewriting some data requires an already used portion of flash to be read, updated and written to a new location, together with initially erasing the new location if it was previously used at some point in time; due to the way flash works, much larger portions of flash must be erased and rewritten than actually required by the amount of new data. This multiplying effect increases the number of writes required over the life of the SSD which shortens the time it can reliably operate.

Minhas perguntas são:

  1. Por que os dados após a atualização são gravados em um novo local em vez do local antigo (a localização de onde os dados foram lidos em primeiro lugar)?

  2. Onde está ocorrendo o chamado efeito multiplicador? Alguém pode explicar isso de forma mais abrangente?

por NareshR 20.08.2016 / 14:00

1 resposta

1

Primeiro de tudo: a amplificação de gravação não é uma propriedade exclusiva do Flash, mas acontece com todos os dispositivos de bloco.

É um efeito colateral do motivo pelo qual um dispositivo de bloco está sendo chamado de block device: os dados são gravados em partes ("blocos") consistindo tipicamente de 512 Bytes a 4 Kilobytes. Isso leva a uma situação em que, para alterar um único byte em um dispositivo de bloco, precisamos primeiro ler o restante do bloco (essa etapa geralmente não funciona, já que os buffers do sistema operacional são geralmente pelo menos de tamanho de bloco). a mudança de um byte na memória, então escreva o bloco completo para o dispositivo: Para alterar um byte, tivemos que escrever um bloco completo, muitas vezes milhares de bytes.

Este mecanismo há muito conhecido tem um significado especial com SSDs, já que eles

  • normalmente têm um tamanho de bloco grande (ish)
  • pode suportar apenas um número limitado de gravações, menos que um disco giratório em ordens de magnitude.

Se um padrão de uso para um SSD com tamanho de bloco de 4K consistir na alteração de 1 byte por bloco, o número total de bytes gravados será 4096 vezes o número de bytes de carga útil, ou seja, um write amplification de 4096. Isso significaria que um SSD com uma resistência típica de 10 anos seria empurrado para além desse limite de resistência em menos de um dia.

Contramedidas contra isso são muitas:

  • Mais importante: esse padrão de uso é muito raro
  • Sistemas operacionais (e / ou controladores) com SSD tentam programar gravações de uma maneira que evita a amplificação.
  • Muitos SSDs modernos usam um cache de DRAM para acumular pequenas gravações no mesmo bloco e só gravá-lo no flash, se estiver cheio ou tão tarde quanto possível. Supercondutores fornecem o poder de terminar isso quando a energia é removida.

Quanto à primeira parte da pergunta: Embora um disco giratório tenha lido e gravado operações na camada física e também na lógica, as operações físicas na memória Flash são erase , program e read . Isso implica que uma gravação lógica é traduzida em program em um bloco vazio (apagado). Os modernos controladores SSD mantêm um inventário de blocos já apagados e os utilizam para satisfazer uma gravação lógica o mais rápido possível. A operação de apagamento da célula agora não usada pode ser adiada para mais tarde, se as demandas atuais de largura de banda ou a carga do controlador forem altas. Então, de fato, usar um bloco diferente não é nada além de um mecanismo de ajuste de desempenho, ainda que muito importante.

    
por 20.08.2016 / 14:39