¿Cómo determinar el tamaño del bloque de borrado Nand de SSD?

14

Recientemente compré un Crucial M500 240GB SSD (20nm NAND) y estoy tratando de encontrar la mejor manera de particionarlo. Actualmente, estoy usando fdisk -cucomenzar en el sector 2048.

Creo que nand page sizees de 16 KB.

No puedo encontrar en ninguna parte lo que nand erase block sizees para eso.

¿Alguien sabe la respuesta a esto o consejos generales sobre la partición de esta serie particular de SSD?

Dacto
fuente
1
Puede ser necesario abrir la unidad y buscar en Google los números de pieza en los chips NAND.
LawrenceC

Respuestas:

7

Esta información a veces se publica en las especificaciones del fabricante de SSD, pero otras veces no está allí, especialmente para las tarjetas de memoria CF o SD. Si no utiliza Google para buscar a otra persona que haya realizado la investigación, puede intentar calcularlo usted mismo utilizando FlashBench. Descárguelo aquí: https://github.com/bradfa/flashbench

Esta herramienta realiza lecturas aleatorias en un SSD y trazará una tabla que muestra los tiempos de lectura. (Ya debería haber hecho algunas escrituras en el SSD, porque la lectura de las páginas borradas a menudo es simulada por el chip controlador). Al buscar interrupciones en el tiempo por tamaño de bloque, puede inferir cuál es el tamaño de bloque de borrado. Aquí hay una muestra de README:

== Supongo que borrar bloques y tamaños de página ==

''flashbench -a <device>''

Esta es una prueba simple de solo lectura que realiza lecturas pequeñas a través de límites de varios tamaños. Ejemplo:

$ 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

Esto muestra los tiempos de acceso para hacer dos lecturas de 1024 bytes alrededor de los límites de los bloques alineados de potencia de dos. La lectura al final de una unidad de 128 MB toma alrededor de 735 microsegundos, la lectura del último bloque de esta unidad junto con el primer bloque de la siguiente toma aproximadamente 1080 microsegundos y la lectura de los dos primeros bloques en una unidad de 128 MB toma alrededor de 780 microsegundos.

El número más interesante aquí es el último, la diferencia entre el segundo número y el promedio del primero y el tercero es de 324 microsegundos. Todos estos números permanecen aproximadamente iguales para todas las unidades entre 4 MB y 128 MB.

Sin embargo, desde 2 MB hasta 16 KB, la última columna tiene un valor mucho más bajo. Esto indica que lo que haga la tarjeta de memoria en un límite de 4 MB no sucede en otros límites. La suposición educada aquí es que 4 MB es el tamaño del bloque de borrado, también llamado tamaño de unidad de segmento o asignación. Este tamaño de bloque de borrado deberá usarse en otras pruebas posteriores a esta.

Del mismo modo, los límites de 16 KB y 8 KB son especiales. La explicación lógica para esto es que la tarjeta tiene páginas de 8 KB, pero puede usar accesos multiplano para leer dos páginas de 8 KB simultáneamente.

Algunas tarjetas solo muestran un patrón claro usando accesos con ciertos tamaños de bloque, otras tarjetas no muestran ningún patrón, lo que significa que los números deben determinarse de manera diferente.

Además, las tarjetas que nunca se escribieron completamente pueden mostrar un comportamiento diferente porque los tiempos de acceso en los segmentos previamente borrados son diferentes de los que se han escrito.

Greg Kennedy
fuente
2

Otro intento es alinear en un límite que es una multiplicación de cualquier tamaño de bloque práctico.

Con este concepto, es más común alinearse en el límite de 1 MB, por lo que no importará si el tamaño del bloque es de 4 o 16 kb; todos estos serán mulitplys de 2 y menos de 1M, por lo que alinearse en ese límite los ajustará a todos.

Sin embargo, la aplicación de este concepto depende de lo que esté alineando; perder 1 MB al comienzo de un dispositivo de almacenamiento masivo es totalmente aceptable, mientras que perder muchas veces en un escenario diferente podría no serlo.

Manuel Arwed Schmidt
fuente
1

El tamaño del bloque de borrado no tiene relación con la alineación, y el M500 admite la recolección de basura, por lo que el rendimiento no es un problema. Consulte la segunda página de este PDF del sitio de micron que lo ayudará a determinar el tamaño del bloque de borrado en función de la NAND utilizada en su M500.

En cuanto a los consejos de alineación, echa un vistazo a esta fantástica publicación de superusuario .

Aquí está la captura de pantalla de la página: ingrese la descripción de la imagen aquí

G Koe
fuente
2
Entonces, en este caso, ¿dónde en este diagrama se daría el tamaño del bloque de borrado?
hbogert