1、Flash发展历程
存储器通常分为两类型,即随机存取的RAM(内存)与只读的ROM(外存)。
RAM,也称随机存取存储器,数据可以被读取和修改。它主要用于存储正在运行的程序和临时数据,是计算机运行时的主要内存。
ROM,即只读存储器,数据在生产过程中写入,用户无法修改。ROM主要用于存储固定的系统程序和数据,如计算机启动时的基本输入输出系统(BIOS)。
最初的ROM无法编程,出厂时的内容是永久的,灵活性差。后来出现了PROM,可以自行写入一次,但若写错,只能更换。随着技术进步,EPROM诞生了,可以多次擦除和写入,但每次擦除需要将芯片暴露在紫外线下,过程繁琐且耗时。
历史的进步带来了EEPROM的出现,这种存储器可以随意修改内容,大大方便了程序员。EEPROM的全称是“电可擦除可编程只读存储器”(Electrically Erasable Programmable Read-Only Memory),与紫外擦除的EPROM相比更加便捷。现如今,EEPROM已有多种变种,成为一种存储器的统称。
Flash存储器广义上属于EEPROM的一种,因为它也可以通过电擦除。但为了区分于一般按字节擦写的EEPROM,我们通常称其为Flash。
狭义的EEPROM能够随机访问和修改任意一个字节,可以写入0或1。这种传统的EEPROM在断电后数据不会丢失,能保存100年,擦写次数可达100万次,具有高可靠性,但电路复杂且成本高。因此市场上的EEPROM容量通常在几十千字节到几百千字节之间,极少超过512K。
Flash的改进在于擦除时以块为单位而非字节,简化了电路设计,提高了数据密度,降低了成本。
2、Flash的工作原理
闪存体系结构包括堆叠有大量闪存单元的存储阵列。 基本的闪存单元由具有控制栅极和浮置栅极 (Floating Gate) 的存储晶体管组 成,该浮栅通过薄介电材料或氧化层与晶体管的其余部分绝缘。 浮栅存储电荷并控制电流的流动。
电子被添加到浮栅或从浮栅处移除,以改变存储晶体管的阈值电压。 而改变电压会影响将单元编译为 0 还是 1。
一种称为Fowler-Nordheim隧穿的过程将电子从浮栅中去除。 Fowler-Nordheim隧穿和称为沟道热电子注入的现象都会将电子捕获在浮栅中。
使用Fowler-Nordheim隧道技术,数据会通过控制门上的强负电荷擦除。这迫使电子进入存在强正电荷的通道。
在使用Fowler-Nordheim隧道将电子捕获在浮栅中时,情况会相反。电子在高电场的情况下设法通过薄氧化层迁移到浮栅,在单元的源极和漏极上带有强负电荷,而在控制栅极上带有强正电荷。
沟道热电子注入(也称为热载流子注入)使电子能够突破栅氧化层并改变浮栅的阈值电压。 当电子从沟道中的高 电流以及控制栅极上的吸引电荷中获取足够量的能量时, 就会发生这种现象。
不管包含闪存单元的器件是否由于氧化物层产生的电隔离而接收能量,电子都会被捕获在浮栅中。该特性使闪存可以提供持久存储。
3、NAND和NOR
闪存有两种类型:NOR 和 NAND。
NOR 和 NAND 闪存在架构和设计特性上有所不同。 NOR 闪存不使用共享组件,可以并行连接各个存储单元,从而可以随机访问数据。 NAND 闪存单元更紧凑,位线更少,将浮栅晶体管串联在一起以 提高存储密度。
NOR FLASH数据线和地址线分开,可以实现RAM一样的随机寻址功能,可以读取任何一个字节。但是擦除仍要按块来擦。
NAND FLASH同样是按块擦除,但是数据线和地址线复用,不能利用地址线随机寻址。读取只能按页/块来读取(按块来擦除,NOR FLASH没有页)。由于NAND FLASH引脚上复用,因此读取速度比NOR FLASH慢一点,但是擦除和写入速度比NOR FLASH快很多。NAND FLASH内部电路更简单,因此数据密度大,体积小,成本也低。因此大容量的FLASH都是NAND型的。小容量的2~12M的FLASH多是NOR型的。
NOR FLASH可以进行字节寻址,所以程序可以在NOR FLASH中运行。嵌入式系统多用一个小容量的NOR FLASH存储引导代码,用一个大容量的NAND FLASH存放文件系统和内核。
NOR闪存在数据读取方面速度很快,但在擦除和写入方面通常比NAND慢。 NOR闪存以字节为单位编程数据。NAND闪存以页为单位编程数据,该数据大于字节,但小于块。 例如,一个页面可能是4 KB,而一个块的大小可能是128 KB至256 KB或兆字节。 对于写密集型应用程序,NAND闪存比NOR闪存消耗更少的功率。
NOR闪存的生产成本比NAND闪存高,并且通常主要用于消费类和嵌入式设备中以用于引导目的,以及只读应用程序中用于代码存储。 由于NAND闪存每位存储数据的成本更低,密度更高,编程和擦除(P / E)速度更快,因此它更适用于消费类设备以及企业服务器和存储系统中的数据存储。
除使用其他存储器外,诸如照相手机之类的设备可能同时使用NOR和NAND闪存,以促进代码执行和数据存储。
NOR闪存类型:
NOR闪存的两种类型主要是并行和串行,也称为串行外围设备接口。NOR闪存最初仅可用于并行接口。并行NOR提高性能,安全性和附加功能;它的主要用途包括工业、汽车、网络和电信系统与设备。
NOR单元并行连接以进行随机访问。该配置适用于与微处理器指令相关的随机读取,以及执行便携式电子设备中使用的代码,几乎专门用于消费类电子设备。串行NOR闪存的引脚数更少,封装更小,因此其成本低于并行NOR。
串行NOR的用例包括个人和超薄计算机,服务器,HDD,打印机,数码相机,调制解调器和路由器。
NAND闪存类型:
NAND闪存半导体制造商已经开发出适合各种数据存储用例的不同类型的存储器。常见主要有SLC、MLC、TLC、QLC。
4、Flash页、扇区、块的区别
扇区、块这些专用名词,其实是从早期的软盘、硬盘等存储器发展而来,目的是将一个存储器划分为多个(扇区、块)区域,更方便的编程管理这些存储单元。
以W25Q128存储芯片为例。W25Q128存储芯片是由256个块(Block)组成,每个块包含16个扇区(Sector),每个扇区包含16页,每页256个字节。
注:Page0X000000-0X0000FFh:0X是16进制标识符,数的后面h也代表这是一个十六进制数,0XFF等于十进制255,所以一页中共256个字节。
Flash芯片就像一列火车,块(Block)就像一节车厢,车厢里的每排座位就像一个扇区(Sector)。
注: 不同厂家的、不同类型存储器的页、扇区、块大小不同,不同厂家的、不同类型存储器的划分方式也可能不同,有的以页为最小单元,有的以扇区为最小单元,但大部分Flash都以扇区为最小单元。
此外,也可能会看到一些其他的名词,比如:和扇区一个级别的SubSector,和块一个级别的Bank、Bulk等。
FLASH使用注意事项:
1、由于FLASH的物理特性,决定了FLASH每一位的操作只能从1变为0(写操作)。
2、大多数FLASH芯片或单片机内未使用FLASH存储空间每一位出厂默认都是1。
3、对FLASH写操作之前必须将待操作FLASH空间数据都置为1。
如果内存地址上的数据是0的话,不进行置1的擦除动作,当我们想内存地址写1时候是失败的,因为内存只能从1变为0,不能从0变为1。所以必须在写操作之前将flash擦除。
4、对FLASH的擦除操作即是把待操作的空间的每一位都置为1。
5、所以FLASH写操作前需有擦除操作。
W25Q128JV存储芯片的擦除比较灵活,可以按扇区、块甚至是整片擦除。(擦除是需要时间的,比如整片擦除约用时几十秒)。
5、NAND闪存颗粒
闪存颗粒中根据存储密度的差异可分为SLC、MLC、TLC和QLC四种
第一代SLC(Single-Level Cell)每单元可存储1比特数据(1bit/cell),性能好、寿命长,可经受10万次编程/擦写循环,但容量低、成本高。
第二代MLC(Multi-Level Cell)每单元可存储2比特数据(2bits/cell),性能、寿命、容量、成各方面比较均衡,可经受1万次编程/擦写循环,现在一般在少数高端SSD中可以见到;
第三代TLC(Trinary-Level Cell)每单元可存储3比特数据(3bits/cell),性能、寿命变差,只能经受3千次编程/擦写循环,但是容量可以做得更大,成本也可以更低,是当前最普及的;
第四代QLC(Quad-Level Cell)每单元可存储4比特数据(4bits/cell),性能、寿命进一步变差,只能经受1000次编程/擦写循环,但是容量更容易提升,成本也继续降低。
对于SSD固态硬盘来讲,SSD一直在追求更大的容量和更低的成本,而存储单元是它的的核心元件,选择SSD实际上就是在选择存储颗粒。
Flash闪存颗粒中每Cell单元存储数据越多,单位面积容量就越高,但同时导致不同电压状态越多,越难控制,所以导致颗粒稳定性变差,寿命变低,各有利弊。相对于SLC来说,MLC的容量大了100%,寿命缩短为SLC的1/10;相对于MLC来说,TLC的容量大了50%,寿命缩短为MLC的1/3;相对于TLC来说,QLC的容量大了33%,寿命缩短为TLC的1/3。
简单来说,这四类闪存颗粒中,SLC的性能最优,价格也是最高,一般用作对于可靠性、稳定性和耐用性有极高要求的工业控制、航天军工、通信设备等企业级客户;MLC性能够用,稳定性比较好,价格适中,为工业级和车规级SSD应用主流;TLC是目前消费级SSD的主流,价格便宜,但可以通过高性能主控、主控算法来弥补、提高TLC闪存的性能;QLC是奔着更大容量和更低成本来的,相信QLC闪存颗粒会使得固态硬盘进入大容量廉价时代。
6、基于NAND Flash技术的产品
7.1常见产品类型
SD卡(Secure Digital卡):SD卡是一种常见的可移动存储介质,广泛用于数码相机、手机、平板电脑等设备。SD卡采用了NAND Flash作为主要的存储媒体,并具有较小的尺寸、高存储容量和可插拔的特点。
USB闪存驱动器(USB Flash Drive):USB闪存驱动器,也称为U盘,是一种便携式存储设备,通常通过USB接口连接到计算机或其他设备。它们使用NAND Flash存储数据,并具有易于携带、高速传输和可插拔的特点。
固态硬盘(Solid State Drive,SSD):SSD是一种替代传统机械硬盘的存储设备。它采用NAND Flash芯片作为主要存储介质,具有快速的数据读写速度、低功耗、抗震抗摔、静音无噪音等特点。SSD在计算机和数据中心等领域得到广泛应用。
eMMC(嵌入式多媒体卡)是一种嵌入式存储模块。eMMC通常由NAND Flash存储芯片、控制器和接口组成,提供了一种集成的存储解决方案,用于嵌入式系统、智能手机、平板电脑、物联网设备等领域。eMMC具有紧凑的尺寸、低功耗、高可靠性等特点,在嵌入式应用中得到广泛应用。
UFS(Universal Flash Storage):UFS是一种新一代的高速闪存存储解决方案,旨在提供更高的性能和更低的延迟。相比于eMMC,UFS具有更高的读写速度、更快的数据传输速率和更低的功耗。这使得UFS在需要更高性能的应用场景下,如高端智能手机、平板电脑和其他移动设备中得到广泛采用。
除了上述列举的产品,还有其他基于NAND Flash的存储产品,如CF卡(CompactFlash卡)、XQD卡、microSD卡等。每种产品都有其特定的设计和应用场景,具体选择取决于实际需求和设备兼容性。
7.2差异分析
7.2.1存储容量
SD卡:从几GB到数TB不等,具有相对较大的存储容量,适用于大量多媒体文件的存储。
USB闪存:存储容量也从几GB到数百GB不等,适用于小型文件的存储和传输。
固态硬盘:存储容量一般从几十GB到几TB不等,适用于替代传统机械硬盘,提升系统性能。
eMMC:存储容量一般在几十GB以下,适用于嵌入式设备和轻量级应用。
UFS:存储容量从几十GB到数TB不等,适用于高性能存储需求的应用场景。
7.2.2读写速度
SD卡:一般速度较慢,适合存储大容量数据,但不适合频繁读写操作。
USB闪存:读写速度较快,适合频繁的数据传输和备份操作。
固态硬盘:读写速度非常快,适合要求高性能的计算机和服务器。
eMMC:速度介于SD卡和固态硬盘之间,适用于嵌入式设备和轻量级应用。
UFS:具有非常高的读写速度,适用于高端智能设备和需要高性能存储的场景。
7.2.3接口类型
SD卡:SD卡通常采用SD接口或microSD接口,这两种接口在尺寸上有所不同,但功能和性能类似。SD接口通常用于相机、摄像机等专业设备,而microSD接口则广泛应用于智能手机、平板电脑等消费电子产品。
USB闪存:USB闪存通常采用USB接口,主要分为USB Type-A、USB Type-C等不同类型。USB Type-A接口是传统的USB接口,广泛用于计算机、电视等设备;而USB Type-C接口则是新一代的标准接口,具有可逆性和高速传输等优点,逐渐在各类设备中普及。
固态硬盘:固态硬盘通常采用SATA接口或PCIe接口。SATA接口适用于传统的2.5英寸或3.5英寸硬盘的形态,而PCIe接口则更适合于M.2或PCIe插槽形态的固态硬盘,具有更高的传输速度和更小的体积。
eMMC:eMMC通常采用BGA封装形式,与主板焊接连接,其接口类型主要是MMC(MultiMediaCard)接口,用于连接主板和eMMC芯片。
UFS:UFS通常采用UFS接口,是一种专门设计用于高速闪存存储器的接口标准,具有高速传输和低延迟等特点,适用于高性能存储需求的设备。
这些接口类型的差异影响着存储产品的连接方式、传输速度和适用范围,用户在选择存储产品时需要考虑设备的接口类型与存储产品的接口是否匹配。
7.2.4应用场景
SD卡:主要用于相机、手机、平板电脑等设备的存储扩展。
USB闪存:主要用于数据传输、文件备份、操作系统安装等方面。
固态硬盘:主要用于替代传统机械硬盘,提升系统性能和响应速度。
eMMC:主要用于嵌入式系统、智能手机、平板电脑等轻量级存储需求。
UFS:主要用于高端智能设备、汽车电子、物联网设备等高性能存储需求的场景。