|
EDA365欢迎您!
您需要 登录 才可以下载或查看,没有帐号?注册
x
NOR和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR和NAND闪存。
6 ~" ]' g+ [- V1 m! b9 C9 m3 T1 g4 ^; g9 r1 o* k! W5 z7 s% l
相“flash存储器”经常可以与相“NOR存储器”互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。 - D3 `1 H: @$ X) C5 |8 Y) L7 O7 c
! b& ] F; N! d; s NOR的特点是芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在flash闪存内运行,不必再把代码读到系统RAM中。0 m/ G, f5 d7 v7 S O2 t
- {) z% ]9 t, g M2 t6 w! ~NOR的传输效率很高,在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。( _1 `, q6 x2 r5 _& W- w4 M
& m9 U) T6 q- T% R( h* N5 I
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。# ]2 |/ v( I3 N7 Y
( H) y" }5 J4 V' F* s& h' e& E
* R) \; J" F6 k8 X2 E
7 Y; P8 S8 h0 i4 U1 y/ m性能比较; R2 X3 `# ?% D/ z2 c
& j, w: u- u7 i+ e2 {# O6 _% O" _ flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。
. ]9 R! N8 f: \+ i
/ g* [' M* m! j7 W. ~ 由于擦除NOR器件时是以6?~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
: m' T+ e7 J$ H/ R; j& m& S1 {& R5 N) U. X: ^+ R# M
执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素。
7 ]1 K- k) ?5 o9 u _- Z; ?; d( m4 ^( I0 s0 b) i' u7 E
● NOR的读速度比NAND稍快一些。
6 ]' q9 A+ u1 V# Q; O. c
+ m I0 ~/ N3 f" j" I, P5 d4 L7 } ● NAND的写入速度比NOR快很多。
/ E5 m1 F# H6 ?3 W* e$ Y9 O$ E0 c7 I# F7 r. K; |; F. V0 F, U
● NAND的4ms擦除速度远比NOR的5s快。
0 a5 z5 b. E: t9 r' q3 t
# [1 D5 ]3 d) d1 w+ u ● 大多数写入操作需要先进行擦除操作。
! f" O, n9 k. U0 Q' S
5 a O# t7 I4 S1 M5 ~% h) b+ Y ● NAND的擦除单元更小,相应的擦除电路更少。
: C: F& B+ B+ i! G1 T% K: v" y: E" z# N j K8 i# H+ W
1 m$ U& H( v$ J+ Z% c
9 i+ K* Y1 }1 O接口差别
2 Q) q( l! m7 P# c/ ~) d- C
, [) ?6 p3 e/ I NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。3 i: X3 D; E/ A
) A+ p8 }. V( Y) O0 L
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。
4 @' k/ f0 A {# _8 e3 p0 H
; f. ]) k" |3 ~5 D) w1 f# D NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。3 n E$ F! A7 z* K
$ r8 }2 u. [, f% g
) N1 D2 `0 n0 C+ f- _5 O8 T4 I
- f$ q; K; |; a& j容量和成本! P3 `' E9 M1 U* V- m6 i+ C1 }
$ ~ A3 p% G% Z5 H- I% x
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
) l3 \7 N! k. b$ _: L/ v2 k& _9 C) D4 f& ?' _5 i; F7 {! G! z5 j
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。
: A1 f: _6 g1 Q* T( W# w1 \% w. h0 P$ d" s5 a+ a s/ l( p
- t- ^/ x4 G% T9 [; u) p$ L/ R! f) B9 Y2 v) `
可靠性和耐用性
$ Y8 H' m$ x0 [) O
* V T9 d) r! [' y* X4 a/ V 采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。
3 r( r B5 Q7 K; C1 S ^% S+ K% U4 o& W1 a) i! ~' P& ?
寿命(耐用性)
$ g7 ^' ^1 y, f1 @8 f% q3 S& `. L9 n* E- T
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
; @4 w9 }/ w! u( t0 x7 {7 z% J1 Z6 w. S! a
位交换, H n9 B. ?- N p) _6 r) N6 E3 C" S
" k" \1 @( i% v% e 所有flash器件都受位交换现象的困扰。在某些情况下(很少见,NAND发生的次数要比NOR多),一个比特位会发生反转或被报告反转了。
( l1 P) }' e0 W" C" M- p9 \
k' [9 n$ y! _- B 一位的变化可能不很明显,但是如果发生在一个关键文件上,这个小小的故障可能导致系统停机。如果只是报告有问题,多读几次就可能解决了。
' C# [& U. z- l' }5 a
( e8 o9 G( E0 i 当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。位反转的问题更多见于NAND闪存,NAND的供应商建议使用NAND闪存的时候,同时使用EDC/ECC算法。( o0 c' H, G" |( c6 r9 S! ^1 P
( K% q* Y9 t% ?; h) D {+ C9 s 这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,必须使用EDC/ECC系统以确保可靠性。
4 r" y! A, j) l" e, c! {; Z7 g5 H X$ Q2 S" n
坏块处理$ p3 i# B3 K4 r
; `* r7 h x+ n) h# f9 ~/ o NAND器件中的坏块是随机分布的。以前也曾有过消除坏块的努力,但发现成品率太低,代价太高,根本不划算。
0 j) j8 z% ~9 v7 N$ U
0 _( ]4 b0 u$ z" E NAND器件需要对介质进行初始化扫描以发现坏块,并将坏块标记为不可用。在已制成的器件中,如果通过可靠的方法不能进行这项处理,将导致高故障率。
, V: e. j- i8 a4 L! k/ I8 z4 B; o8 a3 v
易于使用- E1 ~- @6 a. V4 D5 a0 w5 c& x' a( _
+ ^* N" d4 ?: w 可以非常直接地使用基于NOR的闪存,可以像其他存储器那样连接,并可以在上面直接运行代码。
1 L# {3 w/ P9 E% I$ G" ~
; D: g2 t" L% H& G' Z5 |% d 由于需要I/O接口,NAND要复杂得多。各种NAND器件的存取方法因厂家而异。7 t5 O3 K* l* ]- I, q$ S6 j
6 S5 o$ W g: b" G. L 在使用NAND器件时,必须先写入驱动程序,才能继续执行其他操作。向NAND器件写入信息需要相当的技巧,因为设计师绝不能向坏
1 }# f* R2 i; r: \! f# F) w) `% m* T/ o
块写入,这就意味着在NAND器件上自始至终都必须进行虚拟映射。8 x3 b* @) I& _# m% p
+ W0 {( s' }) y: q0 V
1 M5 d3 k! L# T! s* n/ j- r' M3 W2 R _
软件支持. }$ w. p9 N W/ [9 P1 F6 A
1 B5 w$ o- H: }# _- l# l1 Q% H, i$ K
当讨论软件支持的时候,应该区别基本的读/写/擦操作和高一级的用于磁盘仿真和闪存管理算法的软件,包括性能优化。0 s4 ?9 X" {0 l- f! M: ~
& k8 X+ b% I* b0 m3 k/ V! g+ V8 s
在NOR器件上运行代码不需要任何的软件支持,在NAND器件上进行同样操作时,通常需要驱动程序,也就是内存技术驱动程序(MTD),NAND和NOR器件在进行写入和擦除操作时都需要MTD。7 a" I+ A' i; o4 q" w
$ N. I% G$ P3 V3 j! U* E0 ~ 使用NOR器件时所需要的MTD要相对少一些,许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动,该驱动被Wind River System、Microsoft、QNX Software System、Symbian和Intel等厂商所采用。# w5 u; E M) F! b4 C* c5 p
, N) R7 _5 t- o* P. J" |
驱动还用于对DiskOnChip产品进行仿真和NAND闪存的管理,包括纠错、坏块处理和损耗平衡。4 n' g' v6 W! q6 O* V
|
|