V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
allmightbe
V2EX  ›  程序员

为什么 NOR flash 的最小读取单位是字节, NAND flash 是页呢?

  •  
  •   allmightbe · 108 天前 · 1038 次点击
    这是一个创建于 108 天前的主题,其中的信息可能已经有所发展或是发生改变。

    上图从网上找的,应该是大概说明了两种 flash 的区别。 有一个点是:NOR 最小读取单位是字节,NAND 最小读取单位是页。我结合上图的 NOR 部分来理解“NOR 最小读取单位是字节”,是不是应该这么解释:

    • 当我选中了 word line ,就确定了一个字节的数据
    • 当我再选中了 bit line ,就确定了一个 bit 的数据。
    • 另外,当我两个线都确定了的话,是不是可以说 最小读取单位是 bit 了?

    另外,NOR 可以执行代码,是不是因为代码执行通常有函数跳转的过程,所以就必须就需要随机存取的能力;而 NAND 只能在一个页 顺序读取,而代码执行不可能全是顺利执行的过程,所以 NAND 不可以执行代码。

    • 或者反过来说,假设代码真是顺序执行的,是不是 NAND 的也可以。

    另外,这些概念 好像有点混淆了:block 块,page 页,sector 。它们之间的大小顺序是这样从大到小吗?分别作用的作用场景是啥啊?是不是这里理解:

    • 两种 flash 都可以按照 block 或 sector 来擦除
    • 只有 NAND 有 page 的概念,NAND 通过页的最小单元来读取

    nor 的地址线数据线不是复用的,NAND 的地址线数据线是复用的。一定是这样的吗?

    nand flash 可以标记坏块,从而使软件跳过坏块。nor flash 一旦损坏便无法再用。这一点的原因是啥啊?

    乱七八糟问题有点多,求各位大佬讲解一下,感谢!

    2 条回复    2024-01-15 08:28:19 +08:00
    kokutou
        1
    kokutou  
       108 天前 via Android
    就当作 nor 是土豪版本的 nand

    nand 为了节省电路 按页读取
    nand 比较容易有坏块,一般代码里都会配备有坏块管理
    smdbh
        2
    smdbh  
       108 天前
    串行总线和并行总线,导致了以上所有的问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1748 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:34 · PVG 08:34 · LAX 17:34 · JFK 20:34
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.