【问题标题】:NAND flash programming: granularity of writes?NAND闪存编程:写入粒度?
【发布时间】:2010-09-09 14:21:48
【问题描述】:

是否有人了解当今大型 NAND 闪存芯片的写访问? 写入的最小粒度是多少?我这里有一个微控制器闪存 这需要输入至少 1 个和最多 4 个字(即 16 位字) 立即写入状态机。我认为大(> 1 Gbit)闪烁 出于写入性能的原因,此处的行为有所不同。

slarti

【问题讨论】:

    标签: microcontroller flash-memory


    【解决方案1】:

    所以要清楚,要写入 1 位,您必须清除整个内存块,要写入 0 位,您只需写入一个内存位置。您是在谈论一次性写入(本质上将某些位从 1 更改为 0)还是在谈论擦除块并重新写入块以便您可以使某些位从 0 变为1?

    最简单的了解方法是获取相关部件的数据表或从不同供应商处获取其中少数部件的数据表。我最近使用的一个基于 spi 的,有一个 0x10000 (65536) 字节大小的擦除块。我称之为较旧的并行技术,即具有传统地址总线和数据总线的并行技术,具有 256 字节或 512 字节页面,但这些不是较新的技术 (nand)。

    编辑

    查看随机选择的三星文档,兆字节大小的内存有 256 和 512 字节的页面大小,但没有记录 1 和 2 GB 的页面大小(这是家庭类型的数据表,而不是特定的部件数据表)。 MB 大小的内存的块大小在 4K 到 16K 范围内。

    这是从网页中截取的,我用谷歌搜索了 nand flash 页面大小:

    “25nm NAND 的另一个主要变化是页面大小的增加。在 50nm 和 34nm 时,IMFT 的页面大小为 4KB。在 25nm 时,8GB 设备的页面大小现在为 8KB。块大小也增加了从 128 页到 256 页。”

    维基百科也有一些关于 nand flash 的有趣信息:

    “虽然读取和编程是以页为单位执行的,但擦除只能以块为单位执行。NAND闪存的另一个限制是块中的数据只能顺序写入。”

    所以这听起来很糟糕,您正在查看需要 2MByte 擦除的 1 写入。我使用这些东西来启动嵌入式处理器,所以我通常在每个蓝月亮左右擦除一次并写入一次,理想情况下,一次擦除和一次写入,并在产品的生命周期内完成。用作磁盘之类的媒体,这很痛苦。

    另请注意,nand 和/或较小的密度会出现读取干扰问题,即过于频繁地读取位置可能会擦除附近的位置。这对于像媒体这样的磁盘来说可能不是问题,但是如果你想在 nand flash 之外运行(执行)嵌入式处理器,那么你不能,你启动并使用最小循环将一个小程序复制到 ram,分支到 ram,让那个小程序/函数有一个循环,将程序的其余部分复制到 ram 中,而你的 ram 用完了。

    【讨论】:

    • 我当然应该更具体一点:我感兴趣的不是擦除单元大小,而是“程序”粒度:当将位编程到 0 状态时,最小内存块是多少哪个是一次编程的?即使在专用闪存(旨在替换 EEPROM)上,它也不小于 16 位或 32 位,所以我想在大型文件系统调谐闪存上,程序单元会更长。
    • 从那篇文章中听起来,页面大小从 256 和 512 字节大小增加到 4K 和 8K。我会计划 8K 或 16K 以允许未来的零件。
    【解决方案2】:

    它完全取决于设备,但通常是 2 的幂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多