|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
Flash Memory中文名字叫闪存,是一种长寿命的非易失性(在断电情况下仍能保持所存储的数据信息)的存储器。
; [, ?+ \( W3 t; ], `4 S- _ 从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。* C* ^9 M# a) g8 z, e5 L
7 ?+ Q+ p6 M% ZFLASH的分类:功能特性分为两种:一种是NOR型闪存,以编码应用为主,其功能多与运算相关;另一种为NAND型闪存,主要功能是存储资料,如数码相机中所用的记忆卡。
; j$ v# ^& {# i; eNOR FLASH和NAND FLASH1 d0 o. o7 d6 O1 s' o
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结结,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。2 ~* P$ `) w/ w+ q; v8 X& J9 E
NOR的读速度比NAND稍快一些。
3 D3 A% {& h s NAND的写入速度比NOR快很多。
# M% c! w; H$ Z. D NAND的4ms擦除速度远比NOR的5s快。
" M+ c- i' k6 g! W# C# M 大多数写入操作需要先进行擦除操作。' D+ _ h9 x) ]! C8 k3 R+ {- [/ { }
NAND的擦除单元更小,相应的擦除电路更少
9 l- r/ @% ` a8 P ![]()
* c6 a& H4 B) Q5 m- n- ?0 R* [5 t, j 在NOR Flash中, 所有的存储区域都保证是完好的, 同时也拥有相同的耐久性。在硬模中专门制成了一个相当容量的扩展存储单元 — 他们被用来修补存储阵列中那些坏的部分, 这也是为了保证生产出来的产品全部拥有完好的存储区域。为了增加产量和降低生产成本, NAND Flash 器件中存在一些随机bad block 。为了防止数据存储到这些坏的单元中, bad block 在IC烧录前必须先识别。在一些出版物中, 有人称bad block 为“bad block”, 也有人称bad block 为“invalid block”。其实他们拥有相同的含义, 指相同的东西。
, l, v" M! q5 X K' }6 u1 V 从实际的应用上来说, NOR Flash与NAND Flash主要的区别在于接口。 NOR Flash拥有完整的存取-映射访问接口, 它拥有专门的地址线和数据线, 类似与EPROM。然而在NAND Flash中没有专门的地址线。它发送指令,地址和数据都通过8/16位宽的总线(I/O接口)到内部的寄存器。" t4 V# B+ @# X1 @' b2 j# |, l7 w
SLC/MLC基本原理9 {9 O: R& Q7 J6 z0 I7 T7 W
什么是SLC和MLC?
# S6 u6 |: B1 h: c/ ~( [% s9 r SLC全称为Single-Level Cell,MLC全称为Multi-Level Cel数码播放器中一般采用两种不同类型的NAND闪存。其中一种叫做SLC(Single Level Cell),单层单元闪存;第二种叫做MLC(Multi Level Cell),多层单元闪存。两者的主要区别是SLC每一个单元储存一位数据,而MLC通过使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。' U6 {; [- e2 x2 E/ ]+ h3 K" |9 S
SLC芯片和MLC技术特点及区别
& M, u/ p" O7 U" Q1 E 一般而言,SLC虽然生产成本较高,但在效能上大幅胜于MLC。SLC晶片可重复写入次数约10万次,而MLC晶片的写入次数至少要达到1万次才算标准,而目前三星MLC芯片采用的MLC芯片写入寿命则在5000次左右。. Q4 m# t5 v& Y4 H9 Z {7 ]7 I
3 E4 i) @+ G8 t# q$ j. f R0 n
A.读写速度较慢。相对主流SLC芯片,MLC芯片目前技术条件下,理论速度只能达到2MB左右,因此对于速度要求较高的应用会有一些问题。
3 m3 j# Z+ x6 T, p* k B.MLC能耗比SLC高,在相同使用条件下比SLC要多15%左右的电流消耗。
# h* _9 Q' a& m* w" } C.MLC理论写入次数上限相对较少,因此在相同使用情况下,使用寿命比较SLC短。" l+ `$ M6 _8 N% d9 T8 _& |
D.MLC的价格比SLC低30%~40%,有些甚至更低。
9 R9 X6 s5 f& v) y& o
1 k7 ?* J; g' ^8 }7 Q 目前MLC和SLC 在2GB闪存芯片上的价格相差了将近100多元,他们的差异还是比较明显的。所以对于选择数码播放器的朋友,选择更便宜廉价的MLC芯片产品还是选择稳定性和性能更好的SLC产品,就看你的需要了。
6 _, y- P9 \6 l7 f ![]()
& x6 \6 J; ~) {3 m FLASH的发展 z7 c$ ~! a4 H6 g4 l9 t
1.在1984年,东芝公司的发明人Fujio Masuoka首先提出了快速闪存存储器(此处简称闪存)的概念。
8 G* D6 H% J7 S 2.Intel是世界上第一个生产闪存并将其投放市场的公司。1988年,公司推出了一款256K bit闪存芯片。 $ s5 Q* r* T$ h+ D0 \$ `9 Y
3.第二种闪存称为NAND闪存。它由东芝公司于1989年研制,并被认为是NOR闪存的理想替代者。 % [0 _6 u G$ ~7 C0 _1 w6 n
4.MLC是英特尔(Intel)在1997年9月最先开发成功的。
. V$ i: n( p- \# z 5.2004年,除三星和东芝增加产能外,包括Hynix、英飞凌及瑞萨等大厂,也自2004年起陆续进入NAND闪存市场。
/ t+ q+ D' v* F$ b) F" _9 W+ P1 M 各产商NAND_Flash_大全 http://wenku.baidu.com/view/e650a730b90d6c85ec3ac646.html$ H: c( X7 [- @ Z1 R
3 }3 i6 V' d# f" `5 ^) P) u$ u$ T# H: [0 D- F) U( g$ G1 j. V6 b
NAND Flash存储器结构描述' Z2 [9 v/ \% m4 v; [2 [
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。: m- b& I% J$ s
那些大容量的(1Gbig或更多)的NAND Flash, 它每page的容量就更大, 每page内Data area(数据存储区域)的大小为2048字节, Spare area(备用区域)大小为64字节。
9 Q2 E' O) G" V8 K; y( m/ I ![]()
' L6 R) P. s7 ?, S ![]()
4 C% @" j" R" \7 a: A1 M NAND Flash的读取和烧录以页为基础, 而NOR却是以字节或字为基础 — 数据I/O寄存器匹配页的大小。 NAND Flash的擦除操作是基于block (块)的。在NAND Flash上有三种基本的操作:读取一个页, 烧录一个页和擦除一个块。" X( k4 z( _* ]; o) h/ V
在一个页的读取操作中, 该页内528字节的数据首先被传输到数据寄存器中, 然后再输出。在一个页的烧录中, 该页内528字节的数据首先被写进数据寄存器, 然后再存储到存储阵列中。在一个块的擦除操作中, 一组连续的页在单独操作下被擦除。
1 z3 p5 s6 C( j3 j; K4 n备用单元结构描述# {" f/ @ R; q1 s) k7 f9 _
NAND Flash厂商在生产制程中使用Spare area(备用区域)来标识bad block, 所以这些器件被运送到客户手中时已经被标识。从功能上来说, Spare area(备用区域)内所有的字节都可以像Data area(数据存储区域)内的字节一样被用户用来存储数据。关于备用字节的使用, 我们推荐使用三星的标准。
/ v+ J' L0 i( }+ d4 b5 ~% K ![]()
2 N |/ g Z M6 z
" P( |8 I6 e( D# V9 P! S - L. f" t r+ \. Y% V+ h- Y% p; t
Bad block (Invalid block)的管理# u: k/ @# e1 C
自从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的正常工作。) @3 k' I) @& `
Bad block 的一般分为两种: 生产过程中产生的; 使用过程中产生的。当block被发现是bad block , 一般是在该块的前两个page (页)的第517字节处用非FF来标识。一个通用的bad block map building 算法流程如下所示:* a! X: I1 C- G* Y0 z& z
![]()
' s( g$ }. T' n 使用过程中产生的bad block 是没有被工厂标识的, 这些块是在客户处产生的。因为NAND Flash有一个使用寿命而且它最终会磨损。每一个块是独立的单元, 每一个块都能被擦除和烧录并且不受其它块寿命的影响。一个好的块一般能被烧录100000到1000000次。如果一个块在擦除一个块或烧录一个页时操作失败, 那么此块将被标识成bad block 并且以后不再访问。
2 j0 k5 y: S+ ]0 G1 u* z1 E 如果你对bad block 进行擦除, 那么非“FFh”字节也会被擦除。如果发生了这样的事情, 在没有对块进行测试的特定条件下, 对那些bad block 进行重新标识是非常困难。所以如果存储bad block 列表的bad block table丢失, 重新发现并标识那些bad block 是相当困难的。因此, 在擦除bad block 之前推荐先收集正确的bad block 信息, 在器件擦除后, 那些信息又会被重新标识上去。% L% }) _1 v/ ]+ u& H
在嵌入式系统中对bad block 进行管理必须要求有特殊的软件层。因此对NAND Flash进行烧录, 必须采用正确的方式进行bad block 的管理, 该方法取决于嵌入式系统中程序的管理方式。对bad block 的管理有很多种方式, 没有那一种方式被定义成标准方式。
0 ?% F+ t Y, G7 H! U$ G 例如: 一种通用的方式是跳过bad block , 把数据写入那些已知的好块中 — 这种方法被称为“Skip Block”。另外一种通用的方式叫做“Reserved Block Area”, 这种方法用已知好的block (块)来替代bad block, 这些已知好的block (块)是预先保留设置的。
+ P; i( \6 {% g7 X* V" v7 w 除此之外, 其他应用需求对每个页内的数据进行ECC计算。当bad block 产生时, ECC校验被用来侦测bad block 的出现并且做数据的修补。ECC数据也会被写入备用区域。这种目的的算法通常被称作 Error Correction/Error Detection(EC/ED) algorithms
) {$ @1 _6 b$ g' Z) M/ w5 {Skip Block method(跳过坏块方式)
! ~! a. l+ Z9 ^5 _5 B, u, l 这种方法通俗易懂。 这个算法开始之前先读取存储器内的所有备用区域。那些被标识成bad block 的地址都被收集起来。接下来, 数据被连续的写入目标FLASH器件。当目标地址与先前收集的bad block 地址一致时, 跳过坏块, 数据被写到下一个好的块中。然后继续保留bad block 中备用区域的标识信息。所以在程序导入执行之前, 使用者的系统通过读取Spare area(备用区域)的信息能建立一个bad block 的地址列表。. \! A4 U4 p( z1 }" o# e
) J1 h, J/ O0 r
( T, Y, {7 }; K0 S6 c
Reserved Block Area method(保留块区域方式)
) X; t, ]: @8 A! T& ~ 三星的“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表中表示如下:% m, ^* Y& |( J! Z1 V5 ]( O
. O6 J1 Q$ }0 k! Z* ~! Z" N
Transition Field总是FDFEh。 Cout Field 是每一个page (页)内map表的累加。2 I: x+ `: d( W, q
![]()
3 [' t2 T) v" V! u# BError Checking and Correction(错误检测和纠正)* u1 r! O t, ]
使用ECC纠错机制是为了让存储的数据完整无误。软件上出错的几率大概是10的-10次方。推荐使用的是采用SECDED (单一的错误纠正/双倍的错误探测) ECC算法来充分的利用潜在的NAND Flash存储器。 |
|