我用闪存棒进行了一些实验。我玩dd和特别用bs选项。以下是我收集的结果:
Block size(Kb) Flash write speed(Mb/s)
1 2.5
2 3.1
4 4.4
8 5.0
16 ~6.3
32 ~6.3
64 ~6.3
在第一列中,您可以找到dd ... bs = ...选项的值。第二列是闪存写入速度。以下是我使用的dd命令示例:
dd if=/dev/urandom of=/media/106E99AE6E998D5A/temp oflag=direct bs=32K
因此,从结果我可以说在16Kb块大小有一些饱和。似乎存在一种硬件限制,并且闪存在一次交易中无法处理超过16K。 (我是对的吗?)任何人都可以通过更详细的方式向我解释这种饱和度吗?感谢。
答案 0 :(得分:1)
为了降低复杂性,闪存被划分为给定大小的块。执行写操作时,必须擦除整个块然后写入。由于擦除会破坏块中的所有数据,因此当需要部分写入时,必须将内容读入临时缓冲区,与新数据组合,擦除块,并写出新数据。当写入整个块时,不需要读取先前的内容,因此写入速度更快。
您正在检查的设备具有16kiB块,因此从块边界开始以该大小的精确倍数执行写入时速度最快。