Como determinar o tamanho do bloco Nand erase do SSD?

8

Eu recentemente peguei um SSD Crucial M500 de 240GB (20nm NAND) e estou tentando descobrir a melhor maneira de particioná-lo. Atualmente, estou usando fdisk -cu iniciando no setor 2048 .

Acredito que nand page size seja 16 KB.

Não consigo encontrar em qualquer lugar o que é o nand erase block size .

Alguém sabe a resposta para este ou conselho geral sobre o particionamento desta série particular de SSDs?

    
por Dacto 14.03.2014 / 04:24

3 respostas

5

Esta informação é por vezes publicada em especificações do fabricante SSD, mas outras vezes não está lá, especialmente para cartões de memória CF ou SD. Curta de usar o Google para procurar alguém que tenha feito a pesquisa, você pode tentar estimar você mesmo usando o FlashBench. Faça o download aqui: link

Esta ferramenta faz leituras aleatórias em um SSD e plotará uma tabela mostrando os tempos de leitura. (Você já deveria ter feito algumas gravações no SSD, porque a leitura de páginas totalmente apagadas é frequentemente simulada pelo chip controlador.) Ao procurar intervalos no tempo por tamanho de bloco, você pode inferir qual é o tamanho do bloco de apagamento. Aqui está uma amostra do README :

== Guess erase block and page sizes ==

''flashbench -a <device>''

This is a simple read-only test doing small reads across boundaries of various sizes. Example:

$ sudo ./flashbench -a /dev/mmcblk0  --blocksize=1024
align 134217728 pre 735µs       on 1.08ms       post 780µs      diff 324µs
align 67108864  pre 736µs       on 1.05ms       post 763µs      diff 300µs
align 33554432  pre 722µs       on 1.04ms       post 763µs      diff 294µs
align 16777216  pre 727µs       on 1.05ms       post 772µs      diff 302µs
align 8388608   pre 724µs       on 1.04ms       post 768µs      diff 299µs
align 4194304   pre 741µs       on 1.08ms       post 788µs      diff 317µs
align 2097152   pre 745µs       on 950µs        post 811µs      diff 171µs
align 1048576   pre 745µs       on 945µs        post 807µs      diff 169µs
align 524288    pre 743µs       on 936µs        post 799µs      diff 165µs
align 262144    pre 746µs       on 948µs        post 809µs      diff 171µs
align 131072    pre 737µs       on 935µs        post 804µs      diff 165µs
align 65536     pre 735µs       on 925µs        post 796µs      diff 159µs
align 32768     pre 735µs       on 925µs        post 800µs      diff 157µs
align 16384     pre 745µs       on 911µs        post 781µs      diff 148µs
align 8192      pre 785µs       on 808µs        post 725µs      diff 53.3µs
align 4096      pre 784µs       on 788µs        post 779µs      diff 5.85µs
align 2048      pre 787µs       on 793µs        post 789µs      diff 4.65µs

This shows the access times to do two 1024 byte reads around the boundaries of power-of-two aligned blocks. Reading at the end of a 128 MB unit takes around 735 microseconds, reading the last block of this unit together with the first block of the next one takes about 1080 microseconds and reading the first two blocks in a 128 MB unit takes around 780 microseconds.

The most interesting number here is the last one, the difference between the second number and the average of the first and the third is 324 microseconds. These numbers all stay roughly the same for all units between 4 MB and 128 MB.

However, from 2 MB down to 16 KB, the last column has a much lower value. This indicates that whatever the memory card does on a 4 MB boundary does not happen at other boundaries. The educated guess here is that 4 MB is the erase block size, also called the segment or allocation unit size. This erase blocksize will need to be used in other tests following this one.

Similarly, both 16 KB and 8 KB boundaries are special. The logical explanation for this is that the card has 8 KB pages, but can use multi-plane accesses to read two 8 KB pages simultaneously.

Some cards only show a clear pattern using accesses with certain block sizes, other cards do not show any pattern, which means that the numbers need to be determined differently.

Also, cards that were never fully written may show a different behaviour because access times on pre-erased segments are different from those that have been written.

    
por 26.10.2015 / 18:16
0

O tamanho do bloco de apagamento não afeta o alinhamento e o M500 suporta a coleta de lixo, portanto, o desempenho não é um problema. Consulte a 2ª página de este PDF do site da micron que ajudará você a determinar o tamanho do bloco de apagamento baseado no NAND usado em seu M500.

quanto ao conselho de alinhamento, confira este Superuser Post fantástico .

Aqui está a captura de tela da página:

    
por 14.03.2014 / 04:58
0

Outra tentativa é alinhar em um limite que é uma multiplicidade de qualquer tamanho de bloco prático.

Com este conceito, é mais comum alinhar no limite de 1MB, portanto, não importa se o tamanho do bloco é 4 ou 16kb; todos estes serão multiplos de 2 e abaixo de 1M, portanto, alinhar-se sobre esse limite caberá a todos eles.

No entanto, aplicar esse conceito depende do que você está alinhando; perder 1 MB no início de um dispositivo de armazenamento em massa é totalmente aceitável, embora não seja possível perder muitas vezes em um cenário diferente.

    
por 12.12.2015 / 11:59