如何确定SSD的Nand擦除块大小?

如何确定SSD的Nand擦除块大小?

我最近买了一个 Crucial M500 240GB SSD(20nm NAND),正在尝试找出对其进行分区的最佳方法。目前,我使用fdisk -cu从扇区开始的方式2048

我相信nand page size是16KB。

我无法在任何地方找到nand erase block size它的用途。

有人知道这个问题的答案或者对这个特定系列的 SSD 进行分区的一般建议吗?

答案1

这些信息有时会在 SSD 制造商规格中公布,但有时却不在那里,尤其是 CF 或 SD 存储卡。除了使用 Google 搜索做过研究的其他人,您还可以尝试使用 FlashBench 自行估算。在此处下载:https://github.com/bradfa/flashbench

此工具会对 SSD 进行随机读取,并绘制一个显示读取时间的表格。(您应该已经对 SSD 进行了一些写入,因为控制器芯片通常会模拟读取所有已擦除的页面。)通过按块大小查找时间断点,您可以推断出擦除块的大小。以下是来自的示例README

== 猜测擦除块和页面大小 ==

''flashbench -a <device>''

这是一个简单的只读测试,跨各种大小的边界执行小规模读取。示例:

$ 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

这显示了在 2 的幂对齐块边界附近执行两次 1024 字节读取的访问时间。读取 128 MB 单元末尾大约需要 735 微秒,读取此单元的最后一个块以及下一个单元的第一个块大约需要 1080 微秒,读取 128 MB 单元中的前两个块大约需要 780 微秒。

这里最有趣的数字是最后一个,第二个数字与第一个和第三个的平均值之间的差是 324 微秒。对于 4 MB 到 128 MB 之间的所有单位,这些数字都大致相同。

但是,从 2 MB 到 16 KB,最后一列的值要低得多。这表明,内存卡在 4 MB 边界上所做的任何事情都不会在其他边界上发生。这里的合理猜测是 4 MB 是擦除块大小,也称为段或分配单元大小。在此之后的其他测试中将需要使用此擦除块大小。

同样,16 KB 和 8 KB 边界都很特殊。对此的合理解释是,该卡有 8 KB 页,但可以使用多平面访问同时读取两个 8 KB 页。

有些卡仅使用具有特定块大小的访问才能显示清晰的模式,而其他卡则不显示任何模式,这意味着需要以不同的方式确定数字。

此外,从未完全写入的卡可能会表现出不同的行为,因为预擦除段的访问时间与已写入的段的访问时间不同。

答案2

另一种尝试是对齐任意实际块大小倍数的边界。

有了这个概念,最常见的是在 1MB 边界上对齐,因此块大小是 4 还是 16kb 都无关紧要;所有这些都是 2 的乘积并且低于 1M,因此在该边界上对齐将适合它们全部。

但是,应用这个概念取决于您要调整的内容;在启动大容量存储设备时丢失 1MB 是完全可以接受的,但在不同情况下丢失那么多次可能就不可接受了。

答案3

擦除块大小与对齐无关,并且 M500 支持垃圾收集,因此性能不是问题。请参阅此 PDF 来自 micron 网站这将帮助您根据 M500 中使用的 NAND 确定擦除块大小。

至于对齐建议,请查看此很棒的超级用户帖子

以下是该页面的截图: 在此处输入图片描述

相关内容