找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 1|回复: 0
打印 上一主题 下一主题

[硬件] 基础知识:NandFlash简介

[复制链接]

551

主题

1470

帖子

3万

积分

EDA365管理团队

Rank: 9Rank: 9Rank: 9Rank: 9Rank: 9

积分
39487
跳转到指定楼层
1#
发表于 2019-9-27 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您!

您需要 登录 才可以下载或查看,没有帐号?注册

x
Flash Memory中文名字叫闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。( z0 ^& l8 d/ G" b7 Y
        从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。
! R  P6 l) F! F% W6 p7 ]1 N! d+ b, o# ?2 G0 R: k4 g! I& \
FLASH的分类:功能特性分为两种:一种是NOR型闪存,以编码应用为主,其功能多与运算相关;另一种为NAND型闪存,主要功能是存储资料,如数码相机中所用的记忆卡。  C/ k7 i6 {& v$ D# S: z9 V
NOR FLASH和NAND FLASH
3 H8 G7 J0 r8 Q! u; l9 H7 p% T+ [# E        NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结结,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。
" y! [- @$ e% x$ S( e/ ~8 F  Y      NOR的读速度比NAND稍快一些。
# u2 m, c1 b( s  [9 @6 o8 I      NAND的写入速度比NOR快很多。# @$ u, @& f+ i" R4 c, c
      NAND的4ms擦除速度远比NOR的5s快。
/ T  Z4 h4 c: l& X0 t+ J     大多数写入操作需要先进行擦除操作。
& w2 B$ o/ {3 j* r7 q6 B' p- ?     NAND的擦除单元更小,相应的擦除电路更少
( y& G- M. J# M. |) X2 A0 b   
7 U$ E+ w' ~$ n6 @. O    在NOR Flash中, 所有的存储区域都保证是完好的, 同时也拥有相同的耐久性。在硬模中专门制成了一个相当容量的扩展存储单元 — 他们被用来修补存储阵列中那些坏的部分, 这也是为了保证生产出来的产品全部拥有完好的存储区域。为了增加产量和降低生产成本, NAND Flash 器件中存在一些随机bad block 。为了防止数据存储到这些坏的单元中, bad block 在IC烧录前必须先识别。在一些出版物中, 有人称bad block 为“bad block”, 也有人称bad block 为“invalid block”。其实他们拥有相同的含义, 指相同的东西。
9 n2 E6 Y/ h, N5 u# Q3 _5 S    从实际的应用上来说, NOR Flash与NAND Flash主要的区别在于接口。 NOR Flash拥有完整的存取-映射访问接口, 它拥有专门的地址线和数据线, 类似与EPROM。然而在NAND Flash中没有专门的地址线。它发送指令,地址和数据都通过8/16位宽的总线(I/O接口)到内部的寄存器。' F2 n& v9 o9 s
SLC/MLC基本原理
7 G5 y* x2 p4 ], J     什么是SLC和MLC?
8 `' W  ^) D- {, m          SLC全称为Single-Level Cell,MLC全称为Multi-Level Cel数码播放器中一般采用两种不同类型的NAND闪存。其中一种叫做SLC(Single Level Cell),单层单元闪存;第二种叫做MLC(Multi Level Cell),多层单元闪存。两者的主要区别是SLC每一个单元储存一位数据,而MLC通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。# K- z" M; A5 f! ?( Y8 b
    SLC芯片和MLC技术特点及区别
: ~) k) ~& D* d+ B  P          一般而言,SLC虽然生产成本较高,但在效能上大幅胜于MLC。SLC晶片可重复写入次数约10万次,而MLC晶片的写入次数至少要达到1万次才算标准,而目前三星MLC芯片采用的MLC芯片写入寿命则在5000次左右。( Z0 ?2 P5 Z! Z: `6 W
! \: G0 G+ ~0 w9 v
        A.读写速度较慢。相对主流SLC芯片,MLC芯片目前技术条件下,理论速度只能达到2MB左右,因此对于速度要求较高的应用会有一些问题。
, ?5 `/ o) d" M( ?) Y. V2 G. t        B.MLC能耗比SLC高,在相同使用条件下比SLC要多15%左右的电流消耗。+ H$ b' ?" V, B
        C.MLC理论写入次数上限相对较少,因此在相同使用情况下,使用寿命比较SLC短。
  H8 {& e, E) n6 A  x$ X        D.MLC的价格比SLC低30%~40%,有些甚至更低。
6 L) V# j5 w7 f2 [6 N7 `* u
4 M+ P9 t8 @0 \) i9 k+ U        目前MLC和SLC 在2GB闪存芯片上的价格相差了将近100多元,他们的差异还是比较明显的。所以对于选择数码播放器的朋友,选择更便宜廉价的MLC芯片产品还是选择稳定性和性能更好的SLC产品,就看你的需要了。$ v. G) ^' [: {4 b% b
         
# ~3 ^3 }1 C/ }7 X3 f4 \    FLASH的发展: B6 @3 R& ^/ F1 R; N
        1.在1984年,东芝公司的发明人Fujio Masuoka首先提出了快速闪存存储器(此处简称闪存)的概念。
  Z3 z) R. D$ |        2.Intel是世界上第一个生产闪存并将其投放市场的公司。1988年,公司推出了一款256K bit闪存芯片。 5 ~  I0 ^6 }1 V
        3.第二种闪存称为NAND闪存。它由东芝公司于1989年研制,并被认为是NOR闪存的理想替代者。
' ^& ?! _+ r' W  s& O3 ^0 d        4.MLC是英特尔(Intel)在1997年9月最先开发成功的。. _, J. l; h2 H- u/ e: d0 r. ^; \
        5.2004年,除三星和东芝增加产能外,包括Hynix、英飞凌及瑞萨等大厂,也自2004年起陆续进入NAND闪存市场。
. `  O3 t5 @7 J3 a# W' _& y+ z       各产商NAND_Flash_大全 http://wenku.baidu.com/view/e650a730b90d6c85ec3ac646.html
/ h3 o& h$ b, e4 Y7 s9 d8 \! i       % n, D& V8 l7 W$ n4 X2 ^4 m

" K* W; J! f2 p" sNAND Flash存储器结构描述: T" ~5 x! I# K0 V. U1 l3 a
       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。+ G4 ]6 A; v) w/ w! Q( s0 t
       那些大容量的(1Gbig或更多)的NAND Flash, 它每page的容量就更大, 每page内Data area(数据存储区域)的大小为2048字节, Spare area(备用区域)大小为64字节。4 ]& J/ ?" Q/ Y; F( f9 Y/ [1 i
         ( C- W2 C% u5 _+ S5 d3 s% W' V4 D5 W
        
) y5 U% z1 f3 e3 x- u; j        NAND Flash的读取和烧录以页为基础, 而NOR却是以字节或字为基础 — 数据I/O寄存器匹配页的大小。 NAND Flash的擦除操作是基于block (块)的。在NAND Flash上有三种基本的操作:读取一个页, 烧录一个页和擦除一个块。
* q3 a) h" N( c  ^! H7 I        在一个页的读取操作中, 该页内528字节的数据首先被传输到数据寄存器中, 然后再输出。在一个页的烧录中, 该页内528字节的数据首先被写进数据寄存器, 然后再存储到存储阵列中。在一个块的擦除操作中, 一组连续的页在单独操作下被擦除。% ^7 Z$ O! C) ]' {$ j; [
备用单元结构描述
  R/ u4 E9 K, a& r. Z; |- `. a        NAND Flash厂商在生产制程中使用Spare area(备用区域)来标识bad block, 所以这些器件被运送到客户手中时已经被标识。从功能上来说, Spare area(备用区域)内所有的字节都可以像Data area(数据存储区域)内的字节一样被用户用来存储数据。关于备用字节的使用, 我们推荐使用三星的标准。* [3 |5 _+ t! d6 E
        
, w$ F  h8 E# }# N( C* C7 a1 o" U      
% c0 d+ S* x4 r        ) K, Y" S. S' r: {$ Z
Bad block (Invalid block)的管理
; c& W& o( G* g! d. a" u        自从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的正常工作。
) D) c3 ^, ~# k+ M        Bad block 的一般分为两种: 生产过程中产生的; 使用过程中产生的。当block被发现是bad block , 一般是在该块的前两个page (页)的第517字节处用非FF来标识。一个通用的bad block map building 算法流程如下所示:
1 F" x! V  d8 X: L- t  b( u& R        $ z9 r& e0 }0 l5 b6 R
        使用过程中产生的bad block 是没有被工厂标识的, 这些块是在客户处产生的。因为NAND Flash有一个使用寿命而且它最终会磨损。每一个块是独立的单元, 每一个块都能被擦除和烧录并且不受其它块寿命的影响。一个好的块一般能被烧录100000到1000000次。如果一个块在擦除一个块或烧录一个页时操作失败, 那么此块将被标识成bad block 并且以后不再访问。; E% H# e0 J, a& r  O+ m0 V0 m/ B
        如果你对bad block 进行擦除, 那么非“FFh”字节也会被擦除。如果发生了这样的事情, 在没有对块进行测试的特定条件下, 对那些bad block 进行重新标识是非常困难。所以如果存储bad block 列表的bad block table丢失, 重新发现并标识那些bad block 是相当困难的。因此, 在擦除bad block 之前推荐先收集正确的bad block 信息, 在器件擦除后, 那些信息又会被重新标识上去。
% k$ C7 O0 D0 u% Y        在嵌入式系统中对bad block 进行管理必须要求有特殊的软件层。因此对NAND Flash进行烧录, 必须采用正确的方式进行bad block 的管理, 该方法取决于嵌入式系统中程序的管理方式。对bad block 的管理有很多种方式, 没有那一种方式被定义成标准方式。
) Y8 m% {4 Y' Z0 _6 z        例如: 一种通用的方式是跳过bad block , 把数据写入那些已知的好块中 — 这种方法被称为“Skip Block”。另外一种通用的方式叫做“Reserved Block Area”, 这种方法用已知好的block (块)来替代bad block, 这些已知好的block (块)是预先保留设置的。$ r$ i& o5 E0 z
        除此之外, 其他应用需求对每个页内的数据进行ECC计算。当bad block 产生时, ECC校验被用来侦测bad block 的出现并且做数据的修补。ECC数据也会被写入备用区域。这种目的的算法通常被称作 Error Correction/Error Detection(EC/ED) algorithms6 x* Y, ?* K% ]4 O  \2 O0 p
Skip Block method(跳过坏块方式), `( w8 [% b  n
        这种方法通俗易懂。 这个算法开始之前先读取存储器内的所有备用区域。那些被标识成bad block 的地址都被收集起来。接下来, 数据被连续的写入目标FLASH器件。当目标地址与先前收集的bad block 地址一致时, 跳过坏块, 数据被写到下一个好的块中。然后继续保留bad block 中备用区域的标识信息。所以在程序导入执行之前, 使用者的系统通过读取Spare area(备用区域)的信息能建立一个bad block 的地址列表。
) Q0 q: l  X# n$ _! Y+ n        
. j# J# e+ j' \& _7 q+ l/ V3 R4 [. v4 Y% A8 _% Q* C# j/ m
Reserved Block Area method(保留块区域方式)
7 p8 X- O5 H1 C. ^- s        三星的“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表中表示如下:
3 m; ^' `7 A7 m        9 ^! f) A8 }! s$ r6 l
        Transition Field总是FDFEh。 Cout Field 是每一个page (页)内map表的累加。" H: A* O; W7 }. u/ A' w
        - Q2 J2 D7 `6 ^2 a
Error Checking and Correction(错误检测和纠正)& Y* u9 S! }# g3 h2 p* ^
        使用ECC纠错机制是为了让存储的数据完整无误。软件上出错的几率大概是10的-10次方。推荐使用的是采用SECDED (单一的错误纠正/双倍的错误探测) ECC算法来充分的利用潜在的NAND Flash存储器。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 支持!支持! 反对!反对!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2025-4-9 18:45 , Processed in 0.063413 second(s), 32 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表