|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Flash Memory中文名字叫闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。
4 U2 q, o+ s( F/ c2 L 从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。9 ?1 P. \2 j @- t$ p J/ o
/ O7 S* ~$ G6 s$ a. TFLASH的分类:功能特性分为两种:一种是NOR型闪存,以编码应用为主,其功能多与运算相关;另一种为NAND型闪存,主要功能是存储资料,如数码相机中所用的记忆卡。9 `5 I, K& b L. u, s
NOR FLASH和NAND FLASH
?7 v2 A( b" {! ] L# m: @ NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结结,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。
$ d" ]+ C. ?# J8 s8 `4 i" V n NOR的读速度比NAND稍快一些。 M8 Q6 O8 n) o7 j; N0 d
NAND的写入速度比NOR快很多。
8 z' x& ?' y% x; Q4 [" u NAND的4ms擦除速度远比NOR的5s快。+ ^; Y! w6 C% c, X* h: B4 }
大多数写入操作需要先进行擦除操作。
! a, T D+ v4 o+ g1 E NAND的擦除单元更小,相应的擦除电路更少
# w$ B9 C7 l& \* P 0 N/ y& ~+ D/ Z/ A& B& o
在NOR Flash中, 所有的存储区域都保证是完好的, 同时也拥有相同的耐久性。在硬模中专门制成了一个相当容量的扩展存储单元 — 他们被用来修补存储阵列中那些坏的部分, 这也是为了保证生产出来的产品全部拥有完好的存储区域。为了增加产量和降低生产成本, NAND Flash 器件中存在一些随机bad block 。为了防止数据存储到这些坏的单元中, bad block 在IC烧录前必须先识别。在一些出版物中, 有人称bad block 为“bad block”, 也有人称bad block 为“invalid block”。其实他们拥有相同的含义, 指相同的东西。
4 C* I1 q' G. u. Y5 Q) U8 W 从实际的应用上来说, NOR Flash与NAND Flash主要的区别在于接口。 NOR Flash拥有完整的存取-映射访问接口, 它拥有专门的地址线和数据线, 类似与EPROM。然而在NAND Flash中没有专门的地址线。它发送指令,地址和数据都通过8/16位宽的总线(I/O接口)到内部的寄存器。
& W% F+ `+ h# R( K- DSLC/MLC基本原理% M2 @8 i! b% w+ b% [/ |- k
什么是SLC和MLC?
9 w" [4 E& C: l( f1 b SLC全称为Single-Level Cell,MLC全称为Multi-Level Cel数码播放器中一般采用两种不同类型的NAND闪存。其中一种叫做SLC(Single Level Cell),单层单元闪存;第二种叫做MLC(Multi Level Cell),多层单元闪存。两者的主要区别是SLC每一个单元储存一位数据,而MLC通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。
9 a% F, T7 M* K* S3 J% z SLC芯片和MLC技术特点及区别' y: N8 v) ?1 Y; y, v* j
一般而言,SLC虽然生产成本较高,但在效能上大幅胜于MLC。SLC晶片可重复写入次数约10万次,而MLC晶片的写入次数至少要达到1万次才算标准,而目前三星MLC芯片采用的MLC芯片写入寿命则在5000次左右。
6 A, g; }) y3 o" v$ b4 ^. E! s3 o; C% c$ R
A.读写速度较慢。相对主流SLC芯片,MLC芯片目前技术条件下,理论速度只能达到2MB左右,因此对于速度要求较高的应用会有一些问题。
' D- P9 l5 s; J& R% M B.MLC能耗比SLC高,在相同使用条件下比SLC要多15%左右的电流消耗。1 L$ ?5 ~# X4 J, C/ p* O. F
C.MLC理论写入次数上限相对较少,因此在相同使用情况下,使用寿命比较SLC短。# w3 @# @6 z, ?* U1 A' m
D.MLC的价格比SLC低30%~40%,有些甚至更低。
S5 X6 ~! |6 B5 @) ?4 D
( a d/ s1 Z `2 N0 J, D 目前MLC和SLC 在2GB闪存芯片上的价格相差了将近100多元,他们的差异还是比较明显的。所以对于选择数码播放器的朋友,选择更便宜廉价的MLC芯片产品还是选择稳定性和性能更好的SLC产品,就看你的需要了。
' Y8 y# {1 Y* ^9 Y 6 U$ r+ ]0 _' c6 x' R7 T
FLASH的发展
) M8 v1 ~1 o+ n, I" k 1.在1984年,东芝公司的发明人Fujio Masuoka首先提出了快速闪存存储器(此处简称闪存)的概念。7 m0 {. R' H- L8 C$ }
2.Intel是世界上第一个生产闪存并将其投放市场的公司。1988年,公司推出了一款256K bit闪存芯片。
$ g$ t, D2 V+ J9 H. l* @4 A 3.第二种闪存称为NAND闪存。它由东芝公司于1989年研制,并被认为是NOR闪存的理想替代者。 ( p: ~' H$ l1 r, a. h& c! p+ ~
4.MLC是英特尔(Intel)在1997年9月最先开发成功的。, Q7 u4 F$ B6 r6 F
5.2004年,除三星和东芝增加产能外,包括Hynix、英飞凌及瑞萨等大厂,也自2004年起陆续进入NAND闪存市场。1 y9 _2 |% j$ n( k% b
各产商NAND_Flash_大全 http://wenku.baidu.com/view/e650a730b90d6c85ec3ac646.html# c; U% r E2 ]$ ~$ X0 [) @
0 c" ?8 {! X( C8 P/ @! v, @
! P% w/ V5 p" X- {. d" E' p( v
NAND Flash存储器结构描述$ N# \( Z6 `) ^8 Z3 i0 D
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。
( J0 K! t. m& d$ U, P p 那些大容量的(1Gbig或更多)的NAND Flash, 它每page的容量就更大, 每page内Data area(数据存储区域)的大小为2048字节, Spare area(备用区域)大小为64字节。
3 W/ A0 ^+ |% r1 Z3 l( _ 8 o: ~, F+ U, J) P$ D6 G( L6 H4 S
8 m* b4 _ y; l) C9 f
NAND Flash的读取和烧录以页为基础, 而NOR却是以字节或字为基础 — 数据I/O寄存器匹配页的大小。 NAND Flash的擦除操作是基于block (块)的。在NAND Flash上有三种基本的操作:读取一个页, 烧录一个页和擦除一个块。
8 _1 _9 T, ^6 S+ c: ? 在一个页的读取操作中, 该页内528字节的数据首先被传输到数据寄存器中, 然后再输出。在一个页的烧录中, 该页内528字节的数据首先被写进数据寄存器, 然后再存储到存储阵列中。在一个块的擦除操作中, 一组连续的页在单独操作下被擦除。" D3 {! t# T M' i: Q% ?
备用单元结构描述4 V! f0 l) ^- n
NAND Flash厂商在生产制程中使用Spare area(备用区域)来标识bad block, 所以这些器件被运送到客户手中时已经被标识。从功能上来说, Spare area(备用区域)内所有的字节都可以像Data area(数据存储区域)内的字节一样被用户用来存储数据。关于备用字节的使用, 我们推荐使用三星的标准。
7 L5 z3 [* q, M5 a4 v4 Z7 x$ w ![]()
9 u) V$ d! I$ v 7 I: `6 n( w; i- R! C% j6 s* k9 d
![]()
1 \8 `+ V: H6 r, g0 Q& K9 hBad block (Invalid block)的管理" k4 |/ T% `7 J+ q$ ]4 [% S$ ?
自从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的正常工作。
" W/ P. n- q6 W. k Bad block 的一般分为两种: 生产过程中产生的; 使用过程中产生的。当block被发现是bad block , 一般是在该块的前两个page (页)的第517字节处用非FF来标识。一个通用的bad block map building 算法流程如下所示:8 B' H1 y4 q" g: |0 u. i* A
6 b8 z! F0 _, b$ o
使用过程中产生的bad block 是没有被工厂标识的, 这些块是在客户处产生的。因为NAND Flash有一个使用寿命而且它最终会磨损。每一个块是独立的单元, 每一个块都能被擦除和烧录并且不受其它块寿命的影响。一个好的块一般能被烧录100000到1000000次。如果一个块在擦除一个块或烧录一个页时操作失败, 那么此块将被标识成bad block 并且以后不再访问。+ O* m4 X, G5 b3 Q9 ]
如果你对bad block 进行擦除, 那么非“FFh”字节也会被擦除。如果发生了这样的事情, 在没有对块进行测试的特定条件下, 对那些bad block 进行重新标识是非常困难。所以如果存储bad block 列表的bad block table丢失, 重新发现并标识那些bad block 是相当困难的。因此, 在擦除bad block 之前推荐先收集正确的bad block 信息, 在器件擦除后, 那些信息又会被重新标识上去。
. n) v3 m4 [* [" X" X 在嵌入式系统中对bad block 进行管理必须要求有特殊的软件层。因此对NAND Flash进行烧录, 必须采用正确的方式进行bad block 的管理, 该方法取决于嵌入式系统中程序的管理方式。对bad block 的管理有很多种方式, 没有那一种方式被定义成标准方式。( h2 Z! c+ ]4 `6 X6 n: `% T8 ]
例如: 一种通用的方式是跳过bad block , 把数据写入那些已知的好块中 — 这种方法被称为“Skip Block”。另外一种通用的方式叫做“Reserved Block Area”, 这种方法用已知好的block (块)来替代bad block, 这些已知好的block (块)是预先保留设置的。
3 E0 ], U! `0 T+ H7 a, E" m6 F* y 除此之外, 其他应用需求对每个页内的数据进行ECC计算。当bad block 产生时, ECC校验被用来侦测bad block 的出现并且做数据的修补。ECC数据也会被写入备用区域。这种目的的算法通常被称作 Error Correction/Error Detection(EC/ED) algorithms
. X3 X( z. N( y& J* |* t; HSkip Block method(跳过坏块方式)
1 K5 s! T7 J( R' ]2 |- t! Y 这种方法通俗易懂。 这个算法开始之前先读取存储器内的所有备用区域。那些被标识成bad block 的地址都被收集起来。接下来, 数据被连续的写入目标FLASH器件。当目标地址与先前收集的bad block 地址一致时, 跳过坏块, 数据被写到下一个好的块中。然后继续保留bad block 中备用区域的标识信息。所以在程序导入执行之前, 使用者的系统通过读取Spare area(备用区域)的信息能建立一个bad block 的地址列表。
# W* A% M5 e! T( X; ^# x+ E# { ( h: N+ i, N/ F- ]6 V
( X7 U+ H4 ?) }! J$ X! @* ^( kReserved Block Area method(保留块区域方式)" K* E7 C# ^* @: v" U
三星的“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表中表示如下:
, k* S# ^- ^8 o; t! O % \4 a' K3 j) b% i9 U
Transition Field总是FDFEh。 Cout Field 是每一个page (页)内map表的累加。
- e& O8 v$ `( _9 E6 m+ g4 c o* @ M ![]()
5 v7 A, c+ s; ^! t! d; r6 eError Checking and Correction(错误检测和纠正)
8 T7 r. B/ X Y 使用ECC纠错机制是为了让存储的数据完整无误。软件上出错的几率大概是10的-10次方。推荐使用的是采用SECDED (单一的错误纠正/双倍的错误探测) ECC算法来充分的利用潜在的NAND Flash存储器。 |
|