闪存设备阻止了大小限制

时间:2014-08-27 17:41:51

标签: linux linux-kernel linux-device-driver dd

我用闪存棒进行了一些实验。我玩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。 (我是对的吗?)任何人都可以通过更详细的方式向我解释这种饱和度吗?感谢。

1 个答案:

答案 0 :(得分:1)

为了降低复杂性,闪存被划分为给定大小的块。执行写操作时,必须擦除整个块然后写入。由于擦除会破坏块中的所有数据,因此当需要部分写入时,必须将内容读入临时缓冲区,与新数据组合,擦除块,并写出新数据。当写入整个块时,不需要读取先前的内容,因此写入速度更快。

您正在检查的设备具有16kiB块,因此从块边界开始以该大小的精确倍数执行写入时速度最快。