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


14

我最近拿起了Crucial M500 240GB SSD(20纳米NAND),并试图找出最好的分区方法。目前,我正在使用fdisk -cu扇区开始2048

我相信nand page size是16KB。

我找不到任何地方nand erase block size

有谁知道此答案或有关分区此特定系列SSD的一般建议?


1
可能需要打开驱动器并搜索NAND芯片上的部件号。
LawrenceC

Answers:


7

该信息有时在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

这显示了在两个幂次对齐的块的边界周围执行两次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是完全可以接受的,而在不同情况下多次松动可能就不行了。


1

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

至于对齐建议,请查看这篇很棒的《超级用户帖子》

这是页面的屏幕截图: 在此处输入图片说明


2
因此,在这种情况下,在该图中的什么地方给出了擦除块的大小?
hbogert
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.