从嘉の小站

Embedded system, Operating system & AI. Reading, Movie & Life.

[译] [NAND Flash] 1. Blocks, Pages and Program / Erases

[译] [NAND Flash] 1. Blocks, Pages and Program / Erases

原文链接:https://flashdba.com/2014/06/20/understanding-flash-blocks-pages-and-program-erases/

几个名词:

  • package, 即内存芯片。
  • die, 可独立执行指令及反馈状态信息的最小单位。
  • plane, 通常,并发操作在plane上执行(往往有一些限制条件)。
  • block, 最小可被擦除的单元,通常是4-8MB大小。
  • page, 最小可编程单元(例如写入),通常是8-16KB大小。

notion: 编程操作在page中进行,而擦除操作在block中进行;block需要擦除后方可进行再编程。

Operation Area
Read Page
Write(Program) Page
Erase Block

Program/Erase Cycles

如果想要更新刚刚写入Flash的数据该怎么做?Flash不提供撤销/退回机制,只能擦除重写。

NOTE! 擦除操作将清空block中所有page的数据!因此,如果某些page中存在active data,必须对其备份或不做擦除。但是,鉴于Flash的读写次数受限(program erase cycle, or PE cycle),若每次想要更新page内的数据时都进行擦除,Flash的寿命将大大折损。

因此,一个更好的选择是,将含有无用数据的page标记为INVALID,将更新后的数据重写入一个空page,然后将数据取用操作都指向新的page,而被标为INVALID的旧page则使用一定机制进行回收(recycle),这一回收机制就是我们后续会讲到的flash translation layer。


picture: Updating a page in NAND Flash

尽管上述机制通过将数据移入新的page,推迟了擦除操作,但当block中没有空闲的page可供写入时,就必须执行擦除操作了。这就面临一个问题:擦除操作所需时间将会比读/写操作更长,如果不能很好的加以控制,势必会影响性能。

综上,NAND Flash主要有以下几个方面的问题:

1、不对称的性能。读的性能最好;写性能次之;擦除性能最差。

2、读写基本单元是Page页,而擦除基本单元是block块。

3、Block块内部只能采用顺序方式进行写入。

4、每次page页写的时候都需要进行擦除操作。

5、块擦除有寿命限制。

admin

目前为止有一条评论

匿名 发布于5:35 下午 - 12月 3, 2018

优秀的大佬

发表评论

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax