EDA365电子工程师网

标题: 基础知识:NandFlash简介 [打印本页]

作者: admin    时间: 2019-9-27 15:10
标题: 基础知识:NandFlash简介
Flash Memory中文名字叫闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。
0 `1 i, q$ x0 k; O% v! U( `( |        从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。  ^! S* x% ~' ~4 p

9 i: a  ?' ~9 Z7 T! Z% EFLASH的分类:功能特性分为两种:一种是NOR型闪存,以编码应用为主,其功能多与运算相关;另一种为NAND型闪存,主要功能是存储资料,如数码相机中所用的记忆卡。- }% @7 A! }+ P% u
NOR FLASH和NAND FLASH& m* z7 j2 \& G, c& M, [$ K
        NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结结,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。( c9 u" h; a4 x4 _6 j
      NOR的读速度比NAND稍快一些。9 J* C0 K9 v! F# D9 e
      NAND的写入速度比NOR快很多。$ O0 R6 c3 b. P6 m4 T/ S
      NAND的4ms擦除速度远比NOR的5s快。
) }5 u; w# d+ `- s$ X2 I+ ^     大多数写入操作需要先进行擦除操作。
. y& q" u% [* f2 S, _     NAND的擦除单元更小,相应的擦除电路更少
  O+ G8 h, _, }' e/ m  V6 i   
5 r& _& G1 w1 Y% G8 v& k. B    在NOR Flash中, 所有的存储区域都保证是完好的, 同时也拥有相同的耐久性。在硬模中专门制成了一个相当容量的扩展存储单元 — 他们被用来修补存储阵列中那些坏的部分, 这也是为了保证生产出来的产品全部拥有完好的存储区域。为了增加产量和降低生产成本, NAND Flash 器件中存在一些随机bad block 。为了防止数据存储到这些坏的单元中, bad block 在IC烧录前必须先识别。在一些出版物中, 有人称bad block 为“bad block”, 也有人称bad block 为“invalid block”。其实他们拥有相同的含义, 指相同的东西。
, B* ]2 L# S) ~5 U1 u4 F    从实际的应用上来说, NOR Flash与NAND Flash主要的区别在于接口。 NOR Flash拥有完整的存取-映射访问接口, 它拥有专门的地址线和数据线, 类似与EPROM。然而在NAND Flash中没有专门的地址线。它发送指令,地址和数据都通过8/16位宽的总线(I/O接口)到内部的寄存器。
( r5 O' J3 ]" Q5 RSLC/MLC基本原理
$ b; A" ~' H1 x     什么是SLC和MLC?
1 C2 n% r: X* j- r: {          SLC全称为Single-Level Cell,MLC全称为Multi-Level Cel数码播放器中一般采用两种不同类型的NAND闪存。其中一种叫做SLC(Single Level Cell),单层单元闪存;第二种叫做MLC(Multi Level Cell),多层单元闪存。两者的主要区别是SLC每一个单元储存一位数据,而MLC通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。
3 d' Q( ~! H% `. k: c    SLC芯片和MLC技术特点及区别) F) k+ y- \* V' k
          一般而言,SLC虽然生产成本较高,但在效能上大幅胜于MLC。SLC晶片可重复写入次数约10万次,而MLC晶片的写入次数至少要达到1万次才算标准,而目前三星MLC芯片采用的MLC芯片写入寿命则在5000次左右。
" m7 J# Q" T4 R3 I! w2 R  p! c# Z: q
        A.读写速度较慢。相对主流SLC芯片,MLC芯片目前技术条件下,理论速度只能达到2MB左右,因此对于速度要求较高的应用会有一些问题。
4 V* q9 E/ m2 E! y# l        B.MLC能耗比SLC高,在相同使用条件下比SLC要多15%左右的电流消耗。
2 s: I' V) ]* ~/ _' R! X        C.MLC理论写入次数上限相对较少,因此在相同使用情况下,使用寿命比较SLC短。
2 Y" W7 `5 r* |        D.MLC的价格比SLC低30%~40%,有些甚至更低。
' U2 _9 ~4 \+ W# X6 q2 }
* h8 n* B8 A4 U9 p        目前MLC和SLC 在2GB闪存芯片上的价格相差了将近100多元,他们的差异还是比较明显的。所以对于选择数码播放器的朋友,选择更便宜廉价的MLC芯片产品还是选择稳定性和性能更好的SLC产品,就看你的需要了。- z% X. P5 W% x! h, A8 m* q
         
' ]' H% m6 Y! G5 E% F    FLASH的发展
% B8 C& d) G! g0 X" S+ M6 B8 L$ m        1.在1984年,东芝公司的发明人Fujio Masuoka首先提出了快速闪存存储器(此处简称闪存)的概念。  q  C) q: y9 Z6 v4 v
        2.Intel是世界上第一个生产闪存并将其投放市场的公司。1988年,公司推出了一款256K bit闪存芯片。
9 h3 q/ r! D: S+ s- W0 r7 t& `        3.第二种闪存称为NAND闪存。它由东芝公司于1989年研制,并被认为是NOR闪存的理想替代者。
6 `  j2 |: @9 [2 S6 W7 h        4.MLC是英特尔(Intel)在1997年9月最先开发成功的。7 \1 l, g9 y+ Q  y
        5.2004年,除三星和东芝增加产能外,包括Hynix、英飞凌及瑞萨等大厂,也自2004年起陆续进入NAND闪存市场。
2 }$ `. {5 l" P8 a; E% q       各产商NAND_Flash_大全 http://wenku.baidu.com/view/e650a730b90d6c85ec3ac646.html: I6 `8 r5 p% ]; i
       7 B9 R9 E6 o4 v. t4 |1 m; `

# L+ U$ t! n# K" |. xNAND Flash存储器结构描述
' a' `" K' |+ j7 x* a$ ]7 Q       NAND Flash存储器由block (块) 构成, block的基本单元是page (页)。通常来说, 每一个block由16, 32或64个page组成。大多数的NAND Flash器件每一个page (页)内包含512个字节(或称为256个字)的Data area(数据存储区域)。每一个page内包含有一个扩展的16字节的 Spare area(备用区域)。所以每一个page的大小为512+16=528字节。我们称这样的page为small page。
! k( l3 Q+ \1 }9 q: E1 z9 e       那些大容量的(1Gbig或更多)的NAND Flash, 它每page的容量就更大, 每page内Data area(数据存储区域)的大小为2048字节, Spare area(备用区域)大小为64字节。
. F1 }2 I( v% Q         , A$ J) v9 ?: D- k0 Z$ F/ c8 c- A
        # T6 K$ g: o; v5 F! ]& {0 A7 S( x$ C# J
        NAND Flash的读取和烧录以页为基础, 而NOR却是以字节或字为基础 — 数据I/O寄存器匹配页的大小。 NAND Flash的擦除操作是基于block (块)的。在NAND Flash上有三种基本的操作:读取一个页, 烧录一个页和擦除一个块。
! `% D  z' v0 y/ Y+ ]# k9 l        在一个页的读取操作中, 该页内528字节的数据首先被传输到数据寄存器中, 然后再输出。在一个页的烧录中, 该页内528字节的数据首先被写进数据寄存器, 然后再存储到存储阵列中。在一个块的擦除操作中, 一组连续的页在单独操作下被擦除。. Q2 z" f. U& ?' W" N* }
备用单元结构描述
; Q) j0 }3 V- H# k0 u- a# n1 ]( a3 z        NAND Flash厂商在生产制程中使用Spare area(备用区域)来标识bad block, 所以这些器件被运送到客户手中时已经被标识。从功能上来说, Spare area(备用区域)内所有的字节都可以像Data area(数据存储区域)内的字节一样被用户用来存储数据。关于备用字节的使用, 我们推荐使用三星的标准。" ?( q" q4 p% ]0 d4 J8 f8 U
        5 y! B. a+ Y& b. x" T1 @
      : x! s7 V5 W/ Z; {2 g
        
' b% }# V$ m) U9 ~9 T+ E0 F5 cBad block (Invalid block)的管理
" T: ^) \7 h$ i% H; I& G4 }        自从NAND结构被设计用来作为低成本的多媒体存储器, 它的标准规范中是允许存在bad block 的。只要bad block 的容量小于总容量的2% 那就是允许的。一个block中如果有坏的存储区域, 那它就会被标识成bad block 。 bad block 列表可以存储在一个芯片中的一个好的block上, 也可以存储在同一系统的另外一颗芯片上。bad block 列表是被要求的, 这是由于NAND Flash只能执行有限的读和擦除次数。由于所有的Flash存储器最终都会被磨损而且不能再使用, 这个列表需要被用来跟踪记录那些在使用中发现的bad block 。允许bad block 的存在有利于提高芯片的产量,同时也降低了成本。因为每个block是独立的, 而且是被bit lines隔离的, 所以bad block 的存在并不会影响那些其他block的正常工作。1 D: R% y: F& d
        Bad block 的一般分为两种: 生产过程中产生的; 使用过程中产生的。当block被发现是bad block , 一般是在该块的前两个page (页)的第517字节处用非FF来标识。一个通用的bad block map building 算法流程如下所示:
/ _& J/ z) O* L; v, k        
4 g' W0 u8 {' z5 t, g% r: `2 W        使用过程中产生的bad block 是没有被工厂标识的, 这些块是在客户处产生的。因为NAND Flash有一个使用寿命而且它最终会磨损。每一个块是独立的单元, 每一个块都能被擦除和烧录并且不受其它块寿命的影响。一个好的块一般能被烧录100000到1000000次。如果一个块在擦除一个块或烧录一个页时操作失败, 那么此块将被标识成bad block 并且以后不再访问。6 H# F) t) E+ f; z2 @
        如果你对bad block 进行擦除, 那么非“FFh”字节也会被擦除。如果发生了这样的事情, 在没有对块进行测试的特定条件下, 对那些bad block 进行重新标识是非常困难。所以如果存储bad block 列表的bad block table丢失, 重新发现并标识那些bad block 是相当困难的。因此, 在擦除bad block 之前推荐先收集正确的bad block 信息, 在器件擦除后, 那些信息又会被重新标识上去。, `0 o) R( A9 F4 {7 {
        在嵌入式系统中对bad block 进行管理必须要求有特殊的软件层。因此对NAND Flash进行烧录, 必须采用正确的方式进行bad block 的管理, 该方法取决于嵌入式系统中程序的管理方式。对bad block 的管理有很多种方式, 没有那一种方式被定义成标准方式。
) X  G- w  I# u0 q. v& `; A        例如: 一种通用的方式是跳过bad block , 把数据写入那些已知的好块中 — 这种方法被称为“Skip Block”。另外一种通用的方式叫做“Reserved Block Area”, 这种方法用已知好的block (块)来替代bad block, 这些已知好的block (块)是预先保留设置的。
" ^1 p5 k: i' q" ^9 a# l! t8 i2 u        除此之外, 其他应用需求对每个页内的数据进行ECC计算。当bad block 产生时, ECC校验被用来侦测bad block 的出现并且做数据的修补。ECC数据也会被写入备用区域。这种目的的算法通常被称作 Error Correction/Error Detection(EC/ED) algorithms8 W; F/ d7 i  P
Skip Block method(跳过坏块方式)
3 N% }6 U$ A! |0 t6 {3 C- x4 \6 z0 G        这种方法通俗易懂。 这个算法开始之前先读取存储器内的所有备用区域。那些被标识成bad block 的地址都被收集起来。接下来, 数据被连续的写入目标FLASH器件。当目标地址与先前收集的bad block 地址一致时, 跳过坏块, 数据被写到下一个好的块中。然后继续保留bad block 中备用区域的标识信息。所以在程序导入执行之前, 使用者的系统通过读取Spare area(备用区域)的信息能建立一个bad block 的地址列表。% |  D2 U8 s& I; |8 E! H
        
  w, N+ O* b: U' Z) j- M( e4 ?0 O" q  }- M# W: M
Reserved Block Area method(保留块区域方式)
7 l: W9 M# C. y& T2 B0 p/ |        三星的“Reserved Block Area method” 基于这样的法则, bad block 在使用者的系统中能够被好block (块)所替代。这种烧录算法工作时首先决定将那些block (块)用来做UBA(User Block Area), 这些block (块)将会被RBA map table记录, 并且对这些block (块)进行保留操作。接下来, 算法读取Spare area(备用区域)的信息然后建立一个map列表到RBA。在RBA中唯一只有第一和第二个块被用来存储列表和对它进行备份。这RBA中的map包含一些有了信息, 如用来那些RBA中的保留块来代替bad block。数据域在map表中表示如下:
6 Z1 _2 D6 o  t% I+ Z# {        4 D6 \7 W+ q6 h+ c" h" m
        Transition Field总是FDFEh。 Cout Field 是每一个page (页)内map表的累加。
6 R& o  `) C  |* ~, f- J        , T3 q. v( P  [9 L/ d* j
Error Checking and Correction(错误检测和纠正)& G& h6 B% M6 E
        使用ECC纠错机制是为了让存储的数据完整无误。软件上出错的几率大概是10的-10次方。推荐使用的是采用SECDED (单一的错误纠正/双倍的错误探测) ECC算法来充分的利用潜在的NAND Flash存储器。




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2