简介
概述
Flash Memory闪存,一种非易失性存储器,断电数据也不会丢失。早期的闪存进行一次抹除,就会清除掉整颗芯片上的数据,但目前已可以精确到对指定的区域进行删除。闪存允许在操作中被多次擦或写的存储器,这种科技主要用于一般性数据存储,以及在计算机与其他数字产品间交换传输数据。SmartMedia(SM卡)、Compact Flash(CF卡))、MultiMediaCard(MMC卡)、Secure Digital(SD卡)都属于闪存
闪存Flash也被认为是一种EEPROM(电可擦除可编程只读存储器),而区别在于传统的EEPROM以字节为单位进行擦写,而Flash则实现了以块为单位进行擦写。
前世今生
NOR NAND命名:取用了电路逻辑运算中的或非(Not OR)和与非(Not AND)
Flash在大类上区分可以认为有两种规格:NOR Flash和NAND Flash
1984年,东芝公司的发明人舛冈富士雄首先提出了闪存的概念。而在四年后1988年,做存储起家的Intel推出了世界第一款Nor Flash芯片,它结合EPROM(可擦除可编程只读存储器)和EEPROM(电可擦除可编程只读存储器)两项技术,并拥有一个SRAM接口,从此也彻底打破了EPPRON和EPROM一统天下的局面。
1989年,东芝公司发表了NAND Flash 结构,强调降低每比特的成本,有更高的性能,并且像磁盘一样可以通过接口轻松升级。因此NAND Flash并被认为是NOR闪存的理想替代者。鉴于其出色的性价比,它常常被应用于诸如CompactFlash、SmartMedia、 SD、 MMC等存储卡上。
1997年西门子和 Sandisk 推出MMC(Multi Media Card,多媒体卡) ,而在1999年基于MMC发展而来的SD(Secure Digital Memory Card)卡首次由松下、东芝和 Sandisk 公开发布,二者最初的外观尺寸也很类似,SD 卡比 MMC 卡厚 0.7mm。但是随着移动互联网时代的到来,对的存储芯片提出了更高的要求:高容量、高稳定性和高读写速度的同时要求拥有更小存储空间,因此eMMC(Embedded Multi Media Card)应运而生。简单来理解 eMMC = NAND Flash + 闪存控制芯片 + 标准接口封装
NAND Flash分类
- 不带控制器
- RAW NAND,可焊接在PCB上
- 带控制器
- 模组(可插拔)
- TF / SD
- SSD
- 芯片(可焊接)
- SD NAND
- eMMC
- SPI NAND
- 模组(可插拔)
原理
(图片来自 郭天祥老师B站课程)
NOR Flash 与 NAND Flash都是用三端器件作为存储单元,分别为源极、漏极和栅极,与场效应管的工作原理 相同,主要是利用电场的效应来控制源极与漏极之间的通断,栅极的 电流消耗极小,不同 的是场效应管为单栅极结构,而 FLASH 为双栅极结构,在栅极与硅衬底之间增加了一个浮置栅极。
写入:S接0V(地),D接6V,当PN结超过一定电压出现雪崩击穿,电子从S流向D。Gc端有12V脉冲,与此同时Gc与衬底之间也有场强,电子也会穿过氧化层到浮栅区。(氧化隧道区的存在保证了数据不容易流失)
擦除:S 接12V,Gc 接0v,此时源极栅极两端形成场强,电子从浮栅区经过隧道区流向衬底
通过上述描述可以发现数据存储的关键在于浮栅层,当其中充满电子代表写入状态,代表二进制0;相反,没有电子代表擦除状态,代表二进制1(S—->D没有电流0,说明有电子;S—–>D有电流1,说明没有电子)
NOR/NAND特点
NOR | NAND | 备注 | |
---|---|---|---|
接口 | 数据线地址线分开 | 数据线地址线共用 | 最大区别 |
介质类型 | 随机存储 | 连续存储 | |
读写单元 | 基于字节 | 基于页 | |
擦除单位 | 扇区 | 块 | |
读速度 | 稍快 | 稍慢 | |
写速度 | 慢 | 快 | |
单个cell成本 | 高 | 低 | |
坏块 | 较少 | 较多 | |
寿命 | 长 | 短 | |
是否支持XIP片内执行 | 支持 | 不支持 |
共性
- 先擦后写,即写数据前必须将芯片对应内容清空。只不过NOR Flash芯片只用擦写一个字,而NAND需要擦写整个块
- 闪存存放数据必须使用算法实现
- 擦除次数有限
区别
接口(读性能)
NOR Flash带有SRAM接口,有足够的地址引脚来寻址,可以直接和CPU相连,CPU可以直接通过地址总线对NOR Flash进行访问,可以很容易地存取其内部的每一个字节。因此使用NOR Flash不需要建立文件系统,因为可以直接用地址访问到数据
NAND Flash器件使用复杂的I/O口来串行地存取数据,只能通过I/O接口发送命令和地址,对NAND Flash内部数据进行访问,当然各个产品或厂商的方法可能各不相同。
由于具有这样的接口就导致NOR Flash的读性能是要稍高于NAND Flash的
擦除速度(写性能)
任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。
NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为0。由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。NAND闪存的写周期比NOR闪存短90%,它的保存与删除处理的速度也相对较快。
容量及成本
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中
NOR Flash的成本相对高,容量相对小;NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
寿命(耐用性)
在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。
由于NAND Flash通常是整块擦写,块内的页面中如果有一位失效整个块就会失效,而且由于擦写过程复杂,失败的概率相对较高,所以从整体上来说NOR的寿命较长。
数据正确性
所有flash器件都受位交换现象的困扰。在某些情况下,一个比特位会发生反转或被报告反转了。这个问题对于用NAND存储多媒体信息时倒不是致命的。当然,如果用本地存储设备来存储操作系统、配置文件或其他敏感信息时,将可能导致停机。如果只是报告有问题,多读几次就可能解决了。当然,如果这个位真的改变了,就必须采用错误探测/错误更正(EDC/ECC)算法。
这些问题常发生在NAND Flash中,除此之外它还需要始终进行坏块扫描,一旦发现标记为不可用
软件支持
NAND和NOR器件在进行写入和擦除操作时通常都需要MTD(Memory Technology Drivers)驱动,只是NOR使用的较少一些。许多厂商都提供用于NOR器件的更高级软件,这其中包括M-System的TrueFFS驱动。
其作用还包括NAND闪存的管理,包括纠错、坏块处理和损耗平衡。
应用场景
一般使用原则是:在大容量的多媒体应用中选用NAND型,而在数据/程序存贮应用中选用NOR。NOR flash占据了容量为1~16MB闪存市场的大部分(嵌入式领域),而NAND flash只是用在8~128MB的产品当中(视频监控、网络监控、网络终端等等大容量场景)
eMMC特点
eMMC 采用统一的MMC标准接口, 把高密度NAND Flash以及MMC Controller封装在一颗BGA芯片中(在原有内置存储器的基础上,又额外加了一个控制芯片,最后再以统一的方式封装,并预留一个标准接口,以便客户拿来直接使用)。针对Flash的特性,产品内部已经包含了Flash管理技术,包括错误探测和纠正,flash平均擦写,坏块管理,掉电保护等技术。用户无需担心产品内部flash晶圆制程和工艺的变化。同时eMMC单颗芯片为主板内部节省更多的空间。
优点
- 容量大
- 速度快
- 兼容性好
缺点
- 成本高。eMMC主流起跳容量16GB,客户即使只用128MB,也需要付出16GB的成本。
- 尺寸大。11.5*13的尺寸对于很多穿戴式或者物联网设备来说还是太大了。
- Pin脚多,不方便焊接。eMMC是BGA153封装,153个pin脚,pin间距0.5mm。焊接是个问题,特别是PCB板比较小的时候。另外使eMMC必须要用4层板。
- 通用性。对于新推出的大核CPU来说,基本都支持eMMC。但物联网由于使用场景限制,很多还是采用MCU平台。而这些平台基本都不支持eMMC接口。
- 擦写寿命。主流eMMC内部采用都是TLC NAND, 擦写寿命只有500次左右。在需要频繁擦写的应用场景会比较吃力。
未来发展
- 大小:物联网嵌入式的更高需求导致eMMC需要做的更小
- 容量:128GB算是eMMC最大容量了。更高容量产品会切换到UFS。
- 接口:eMMC 是针对手机或平板电脑等产品的内嵌式存储器标准规格,目前市场上主流手机都采用eMMC 5.0规格的闪存标准。但是未来eMMC接口慢慢会切换到UFS接口。UFS的接口有着更快的读写性能。目前新推出的主流手机和平板产品都已经采用了UFS接口内部材质:市面上还是少量有MLC晶圆的eMMC,主要针对行业市场。
Q&A
Q:分别擦除NAND、eMMC读数据分别是1,0;eMMC属于NAND,为什么读出的数据不一致呢
A:原因就在于eMMC内部存在控制器
Q:flash数据掉电丢失?
A:flash在掉电时,会存在一段电压区间,工作不稳定,可能导致数据丢失。写保护是nor提供的功能,即可以通过配置一些寄存器,将某些区域保护起来。如果没有解除保护,那对这个区域的写入和擦除,都会被直接忽略掉。
换nor flash之后无法正常启动?
对于串口没有打印的情况:通信两端的波特率不一致
打印出现乱码或者读出的数据不正确:flash的数据没有写入或者没有重启还不能读,导致读出的错误,延长reset的delay时间