Fork me on GitHub
0%

Flash

简介

概述

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

原理

image

​ (图片来自 郭天祥老师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

  1. Q:分别擦除NAND、eMMC读数据分别是1,0;eMMC属于NAND,为什么读出的数据不一致呢

    A:原因就在于eMMC内部存在控制器

  2. Q:flash数据掉电丢失?

    A:flash在掉电时,会存在一段电压区间,工作不稳定,可能导致数据丢失。写保护是nor提供的功能,即可以通过配置一些寄存器,将某些区域保护起来。如果没有解除保护,那对这个区域的写入和擦除,都会被直接忽略掉。

  3. 换nor flash之后无法正常启动?

    对于串口没有打印的情况:通信两端的波特率不一致

    打印出现乱码或者读出的数据不正确:flash的数据没有写入或者没有重启还不能读,导致读出的错误,延长reset的delay时间

参考资料