闪存

历史

闪存（无论是NOR型或NAND型）是舛冈富士雄博士1980年申请了一个叫做simultaneously erasable EEPROM的专利。然而，东芝公司的论资排辈却让这项划时代的发明石沉大海，直到4年之后。“我终于被提拔了，可以不要批准就去工厂，让工人们帮忙做出样品了”，富士雄说。 据东芝表示闪存之所以命名为“Flash”是由舛冈博士的同事有泉正二建议，因为这种存储器的抹除流程让他想起了相机的闪光灯。舛冈博士在1984年的加州旧金山IEEE国际电子组件会议（International Electron Devices Meeting, IEDM）上发表了这项发明。Intel看到了这项发明的巨大潜力，并于1988年推出第一款商业性的NOR Flash芯片。
NOR Flash需要很长的时间进行抹写，但是它提供完整的定址与数据总线，并允许随机存取存储器上的任何区域，这使的它非常适合取代老式的ROM芯片。当时ROM芯片主要用来存储几乎不需更新的代码，例如电脑的BIOS或机顶盒（Set-top Box）的固件。NOR Flash可以忍受一万到一百万次抹写循环，它同时也是早期的可移除式快闪存储媒体的基础。CompactFlash本来便是以NOR Flash为基础的，虽然它之后跳槽到成本较低的NAND Flash。
舛冈富士雄没有停止追求，在1986年发明了NAND Flash，大大降低了制造成本。由于他的贡献，东芝奖励了他一笔几百美金的奖金和一个位置很高却悠闲的职位。做为一个工程师，他忍受不了这种待遇，不得不辞职进入大学继续科研。东芝在1989年的国际固态电路研讨会（ISSCC）上发表了NAND Flash。NAND Flash具有较快的抹写时间，而且每个存储单元的面积也较小，这让NAND Flash相较于NOR Flash具有较高的存储密度与较低的每比特成本。同时它的可抹除次数也高出NOR Flash十倍。然而NAND Flash的I/O接口并没有随机存取外部地址总线，它必须以区块性的方式进行读取，NAND Flash典型的区块大小是数百至数千比特。
因为多数微处理器与微控制器要求字节等级的随机存取，所以NAND Flash不适合取代那些用以装载程序的ROM。从这样的角度看来，NAND Flash比较像光盘、硬盘这类的次级存储设备。NAND Flash非常适合用于储存卡之类的大量存储设备。第一款创建在NAND Flash基础上的可移除式存储媒体是SmartMedia，此后许多存储媒体也跟着采用NAND Flash，包括MultiMediaCard、Secure Digital、Memory Stick与xD卡。
在很长一段时间，东芝公司甚至不承认NOR flash是舛冈富士雄发明的，宣称是Intel发明的。直到IEEE在1997年颁给舛冈富士雄特殊贡献奖后才改口。舛冈富士雄觉得自己的贡献被东芝公司抹杀了，于2006年起诉了东芝公司，并索要10亿日元的补偿，最后和东芝公司达成和解，得到8700万日元（合758,000美元）。

运作原理

闪存将数据存储在由浮栅金属氧化物半导体场效应晶体管组成的记忆单元数组内，在单阶存储单元（Single-level cell, SLC）设备中，每个单元只存储1比特的信息。而多阶存储单元（Multi-level cell, MLC）设备则利用多种电荷值的控制让每个单元可以存储1比特以上的数据。

NAND Flash

NAND闸缓冲存储器利用穿隧注入（Tunnel injection）写入，以及穿隧释放（Tunnel release）抹除。NAND Flash在今天的U盘与多数储存卡上都可看到。

3D NAND Flash

将NAND闪存在垂直方向进行堆叠和互联，藉以提高单位面积的存储器容量。

存储单元电位阶数划分

通过对闪存内最小的物理存储单元的电位划分不同的阶数，可以在一个存储单元内存储一至多个二进制位数。常见的一至四阶存储单元为SLC、MLC、TLC和QLC。

SLC

传统上，每个存储单元内存储1个信息比特，称为单阶存储单元（Single-Level Cell,SLC），使用这种存储单元的闪存也称为单阶存储单元闪存（SLC flash memory），或简称SLC闪存。SLC闪存的优点是传输速度更快，功率消耗更低和存储单元的寿命更长。然而，由于每个存储单元包含的信息较少，其每百万字节需花费较高的成本来生产，大多数用在企业上，很少有消费型SLC存储设备拿来贩卖，富士通生产的FSX系列是首款使用SLC芯片消费型固态硬盘，在2014贩售。

MLC

多阶存储单元（Multi-Level Cell,MLC）可以在每个存储单元内存储2个以上的信息比特，其“多阶”指的是电荷充电有多个能阶（即多个电压值），如此便能存储多个比特的值于每个存储单元中。借由每个存储单元可存储更多的比特，MLC闪存可降低生产成本，但比起SLC闪存，其传输速度较慢，功率消耗较高和存储单元的寿命较低，因此MLC闪存技术会用在标准型的储存卡，也用在最常见的消费型固态硬盘和U盘上。另外，如飞索半导体的MirrorBit®技术，也是属于这一类技术。

TLC

三阶储存单元（Triple-Level Cell, TLC），这种架构的原理与MLC类似，但可以在每个储存单元内储存3个信息比特。TLC的写入速度比SLC和MLC慢，寿命也比SLC和MLC短（使用LDPC的话，约有1500次），大约1000次。现在，厂商已不使用TLC这个名字，而是称其为3-bit MLC。

区块抹除

闪存的一种限制在于即使它可以单一字节的方式读或写入，但是抹除一定是一整个区块。一般来说都是设置某一区中的所有比特为“1”，刚开始区块内的所有部分都可以写入，然而当有任何一个比特被设为“0”时，就只能借由清除整个区块来恢复“1”的状态。换句话说闪存（特别是NOR Flash）能提供随机读取与写入操作，却无法提供任意的随机改写。不过其上的区块可以写入与既存的“0”值一样长的消息（新值的0比特是旧值的0比特的超集）。例如：有一小区块的值已抹除为1111，然后写入1110的消息。接下来这个区块还可以依序写入1010、0010，最后则是0000。可是实际上少有算法可以从这种连续写入兼容性得到好处，一般来说还是整块抹除再重写。尽管闪存的数据结构不能完全以一般的方式做更新，但这允许它以“标记为不可用”的方式删除消息。这种技巧在每单元存储大于1比特数据的MLC设备中必须稍微做点修改。

记忆耗损

另一项闪存的限制是它有抹写循环的次数限制（大多商业性SLC闪存保证“0”区有十万次的抹写能力，但其他区块不保证）。这个结果部分地被某些固件或文件系统为了在相异区块间分散写入操作而进行的计算写入次数与动态重對映所抵销；这种技巧称为耗损平衡（wear leveling）。另一种处理方法称为坏区管理（Bad Block Management, BBM）。这种方法是在写入时做验证并进行动态重测，如果有验证失败的区块就加以剔除。对多数移动设备而言，这些磨损管理技术可以延长其内部闪存的寿命（甚至超出这些设备的使用年限）。此外，丢失部分数据在这些设备上或许是可接受的。至于会进行大量数据读写循环的高可靠性数据存储应用则不建议使用闪存。不过这种限制不适用于路由器与瘦客户端（Thin clients）等只读式应用，这些设备往往在使用年限内也只会写入一次或少数几次而已。

读取干扰

所使用的闪存读取方式随着时间的推移会导致在同一区块中相近的记忆单元内容改变（变成写入动作）。这即是所谓的读取干扰。会导致读取干扰现象的读取次数门槛介于区块被抹除间，通常为100,000次。假如连续从一个记忆单元读取，此记忆单元将不会受损，而受损却是接下来被读取的周围记忆单元。为避免读取干扰问题，闪存控制器通常会计算从上次抹除动作后的区块读取动作总次数。当计数值超过所设置的目标值门槛时，受影响的区块会被复制到一个新的区块，然后将原区块抹除后释放到区块回收区中。原区块在抹除动作后就会像新的一样。若是闪存控制器没有即时介入时，读取干扰错误就会发生，如果错误太多而无法被ECC机制修复时就会伴随着可能的数据丢失。

写入（编程）干扰

写入干扰（编程干扰）是指当对页（page）进行写入时，由于阈值电压接近的关系，相邻的位（bit）也被升高，从而造成相邻的位出错。闪存电荷非常不稳定，相邻存储电荷的悬浮门间会相互干扰，造成相邻悬浮门间的bit错误，MLC由于存在4组接近的电压，与SLC相比更容易受到干扰。

低级访问

闪存芯片的低级接口通常与透过支持外界的定址总线行随机存取的DRAM、ROM、EEPROM等存储器不同。NOR Flash本身为读取操作（支持随机存取）提供外部定址总线；至于解锁、抹除与写入则须以区块-区块（Block-by-block）的方式进行，典型的区块大小为64、128或256字节。NAND Flash所有的动作都必须以区块性基础（Block-wise fashion）运行，包含读、写、解锁与抹除。

NOR Flash

从NOR Flash读取数据的方式与从RAM读取数据相近，只要提供数据的地址，数据总线就可以正确的导出数据。基于以上原因，多数微处理器可以将NOR Flash当作原地运行（Execute in place, XIP）存储器使用，这意味着存储在NOR Flash上的程序不需复制到RAM就可以直接运行。由于NOR Flash没有原生坏区管理，所以一旦存储区块发生毁损，软件或驱动程序必须接手这个问题，否则可能会导致设备发生异常。在解锁、抹除或写入NOR Flash区块时，特殊的指令会先写入已绘测的记忆区的第一页（Page）。接着快闪记忆芯片会提供可用的指令清单给实体驱动程序，而这些指令是由通用闪存接口（Common Flash memory Interface, CFI）所界定的。与用于随机存取的ROM不同，NOR Flash也可以用在存储设备上；不过与NAND Flash相比，NOR Flash的写入速度一般来说会慢很多。NOR Flash最常见用途之一就是BIOS ROM芯片。

闪存文件系统

因为闪存的独特特性，最好使用一个额外的控制器来实行记忆耗损平衡与错误修正或是一个特别设计的闪存文件系统，来将对媒体的写入动作与NOR闪存区块的长抹除时间的处理动作分开。闪存文件系统的背景观念如下：当闪存的存储内容被更新时，文件系统将欲改变的数据写入一个新的区块，重新對映文件指针，然后找时间抹除旧有的区块。
特别的是，闪存文件系统只使用于MTDs（memory technology devices），此设备具有内嵌式闪存，但没有控制器。便携式快闪储存卡与U盘均有内置控制器来实行记忆耗损平衡与错误修正，所以使用特别的闪存文件系统并不会增加任何的好处。
多数情况下，闪存与计算机间存在一个中间层，以将闪存模拟成磁盘使用。对于上层软件和用户来说，并不需要关心闪存的实际细节。

容量

一般采用多颗闪存芯片组成数组的方式来达到增高容量的目的，这种方式使用于消费性电子产品中，如多媒体拨放器或全球定位系统中。因为闪存属于集成电路，所以闪存芯片的容量通常遵循摩尔定律。闪存可以通过工艺的进化和3D IC多层堆叠的方式获得更高的容量。而在市售的闪存封装产品中，可以通过包含多个闪存晶体（称为多管芯）来获得更高的容量。控制器可以通过不同的CE信号，选择不同的管芯进行操作。
消费性闪存存储设备一般使用2的次方数（2、4、8等等）来标示可使用的容量大小，而最终以百万字节（MB）或十亿字节（GB）来表示，例如：512MB，8GB。然而如欲取代传统硬盘（HDD）的固态硬盘（SSD）设备则是使用10的整数倍数来表示容量大小，如1,000,000字节与1,000,000,000字节，这是因为传统硬盘标示容量大小即是使用10进制词头。因此，固态硬盘上标示"64GB"，则表示实际上至少有64×1,000³字节（64GB），通常更大一些。大部分用户则会感到容量稍少于他们的文件，这是因为文件系统数据使用了一些空间。同时，一些操作系统容量标记的不标准也造成了此问题（混淆MB和MiB）。
闪存芯片内部的容量大小是以2进位倍数计算，但并非所有实际容量空间均能被驱动器接口所使用。闪存芯片实际的容量会大于标示容量，或者说，可用容量会小于芯片容量，这是为了存放写入的分配（记忆损耗平衡）信息、备用数据、文件系统信息、错误修正码、及设备内部固件程序运算所需要的其他中继数据。
2005年，东芝与闪迪公司使用多阶存储单元（multi-level cell，MLC）技术开发出可存储1GB数据量的NAND型闪存芯片，MLC拥有在最小记忆单元中存储两个比特数据的能力。2005年9月，三星电子宣布开发出世界上第一颗2GB闪存芯片。
2006年3月，三星电子宣布开发出容量为4GB的固态硬盘驱动器，比笔记本电脑所使用的同样容量硬盘还要来的小。2006年9月，三星电子宣布使用40奈米制程量产8GB闪存芯片。
2008年1月，闪迪公司宣布16GB的MicroSDHC与32GB的SDHC Plus储存卡开始贩售。
2012年后的闪存存储设备有了较大的容量，如64、128及256GB。一些更大容量的固态硬盘，根据容量大小，能被使用来当作整个电脑的备份硬盘。
仍有小容量的闪存芯片生产以供BIOS-ROM与嵌入式应用使用，容量大小约为1MB或以下。

传输速率

NAND型闪存卡的读取速度远大于写入速度。
当芯片磨损，抹除与程序的操作速度会降到相当慢，需要更多的重试次数与坏区重對映。传递多个小型文件时，若是每个文件长度均小于闪存芯片所定义的区块大小时，就可能导致很低的传输速率。访问的迟滞也会影响性能，但还是比硬盘的迟滞影响小。
有些时候速度以MB/s（每秒百万字节）表示，或是以旧式单速光盘驱动器速度的倍数表示，如60×、100×或150×。在这里，1×等于150KB/s。举例来说，100×的储存卡的传输速率为150kB/s×100 = 15,000kB/s。
闪存控制器的质量也是影响性能的因素之一。即使闪存只有在制造时做缩小晶粒（die-shrink）的改变，但如果欠缺合适的控制器，就可能引起速度的降级。
不同种类、不同工艺、不同技术水平的NAND闪存在读写速率上存在差异，同时，闪存产品的读写性能也与读写方式有关。一般闪存的数据接口为8位或者16位，其中8位较为常见。如果产品支持多通道并行读写，那么就会有更高的速度。同时，若产品支持DDR、interleave技术，也可以提高速度。DDR是存储产品在时脉(clock)上升沿和下降沿都可以读写数据，从而提高性能。interleave是存储产品内不同bank或plane间交错读写，控制器在操作对象尚处于忙状态时，即可以转到另一方进行操作，从而提高速度。如果同类闪存中有异步模式和同步模式之分，其中同步模式的读写速度会更快。

固件存储

随着现下CPU的速度越来越快，平行式接口闪存组件的速度通常远小于与其连接的电脑系统存储器总线速度。相较之下，当前的SRAM访问的时间通常小于10ns，而DDR2 SDRAM访问时间一般则小于20ns。因为这个因素，一般合理的使用方式是将要存放于對映存储器里的代码预先存放于闪存中，并在CPU运行代码前将闪存中的代码复制到對映存储器中，如此一来，CPU就可以用最高速度来取用代码。设备上的固件也可以预先存放于序列式接口闪存中，在设备引导后，将其复制到SDRAM或SRAM里。使用外部序列式闪存而不用芯片中内嵌闪存是因为芯片制程上的考虑而妥协的结果（适用于高速逻辑制程通常不适用于闪存，反之亦然）。如果有需要将一个宏块的固件代码读入时，通常会事先将代码压缩后再存入闪存中，就可以缩小闪存芯片上被使用的区域。典型的序列式接口闪存应用于固件存储上有：硬盘、以太网控制器、DSL调制解调器、无线网络接口卡等等。对于UEFI而言，因为在UEFI启动过程的DXE阶段前UEFI对内存的访问有限，所以UEFI固件通常保存在NOR Flash中。

闪存作为硬盘的替代品

近期另一个闪存的应用就是作为硬盘的替代品。因为闪存没有硬盘驱动器械因素的限制并且可以多单元并行访问，所以固态硬盘（SSD）在速度、噪音、耗电量与可靠度等因素的考量上是非常吸引人的。闪存组件正获取便携式行动设备上第二存储组件的地位。同时使用在高性能台式机及一些具有RAID和SAN架构的服务器上作为硬盘的替代品。
但是以闪存为基础的固态硬盘，也存在其他方面因素，使得它并不具有吸引力。例如闪存每千兆比特的成本依旧比硬盘高出许多。另一个不具吸引的因素就是闪存有着有限的P/E循环次数，但是这个因素可以透过程序优化，当前似乎已在人为控制能力范围内，加上容量的增大使得每单位读写次数减少，让它的使用寿命可以达到传统硬盘甚至更高的水准，因此以闪存为基础的固态硬盘也施行了与现有硬盘相同的保固政策。
对于关系性数据库或其他使用ACID的数据库事务系统上，即使是使用当前最慢的闪存存储媒体也可以比使用硬盘所组成的数组，在速度的表现上有着显著的提升。
于2006年6月，三星发布第一批配备闪存固态硬盘的个人电脑：Q1-SSD及Q30-SSD，均使用32GB的固态硬盘，并且初期只在韩国地区发售。
在2008年，固态硬盘成为第一版MacBook Air的选用配备，并且从2010年起，固态硬盘成为所有Macbook Air笔记本电脑的标准配备。2011年后开始，由于固态硬盘成为Intel所倡议超极本的一部分，超薄笔记本电脑以固态硬盘为标准配备的数量逐渐增加。因为固态硬盘的性能远高于机械硬盘，所以2011年以后固态硬盘在PC上逐步得到普及。
也有混合型技术，诸如混合型硬盘和ReadyBoost，尝试将两种技术的优点合并，使用闪存作为硬盘上常用且鲜少修改的文件，如应用程序及操作系统的可执行文件，的高速非易失性缓存；或者使用固态硬盘加快机械硬盘的读写速度。

闪存作为随机存取存储器

截至2012年，有许多的尝试想把闪存作为电脑的主存，动态随机存取存储器（DRAM）。在这个应用角色上，闪存的速度是比现有的DRAM慢，但是耗电量却远小于DRAM。

闪存作为长时间文件存储媒体

当前还不清楚闪存作为长时间文件存储媒体的有效文件存储时间究竟有多长？在文件数据不常被访问的条件下，最适合的保存温度与湿度是多少？需不需要作预防性的改写保护？等等相关的保存技术均有待进一步的研究发展。

工业产值

2008年，一份数据中表示闪存在制造与销售上的工业产值约为US$91亿。2006年，另一些数据将闪存市场规模预估为超过US$200亿，这是根据整体半导体市场超过8%与全部半导体存储器市场超过34%的成长。
根据DRAMeXchange的研究报告，2007年全球Flash产业的市场规模为133亿6千8百万美元，2008年则是114亿1千8百万美元，整体营收降低了14.6％，主要的原因是受到产品平均单价下滑的影响。
根据DRAMeXchange于2009年2月所发布的2008年全年NAND型闪存品牌厂商营收排名数据，第一为韩国厂商三星（Samsung）市占率高达40.4%（46亿1千4百万美元），其次是日本厂商东芝（Toshiba）的28.1%（32亿5百万美元），第三是韩国厂商Hynix的15.1%（17亿2千7百万美元），第4为美国厂商美光（Micron）7.9％（8亿9千7百万美元），第5为美国厂商英特尔（Intel）5.8％（6亿6千万美元），第6是欧洲厂商恒忆（Numonyx，STMicro）2.6%（营收为2亿9千5百万美元）。
于2012年，预估闪存市场落在$268亿。然而根据2013年4月DRAMeXchange的调查数据显示，2012年全年NAND型闪存品牌厂商总营收落在190亿6千2百万美元，较2011年衰退6.6%。

未来展望

由于NAND型闪存本身相对简单的结构及对高容量的高需求关系，使它成为电子组件中，在技术规模上发展最积极的。只有少数几家顶尖的制造商能够在高度的竞争中，积极的开发出缩小设计规则或是制程技术里程点。
虽然原始版本摩尔定律所预测尺寸缩小一半时程因子为每三年，但是在近期NAND型闪存的例子上这个因子却是每两年。
于2012年11月，三星宣布已经开始量产10nm的芯片，这暗示著最小几何形状介于10至19nm间。
由于闪存的最小组成组件已被最小化到极致的关系，未来的闪存密度的增加，将依靠更高级别的MLC，或是多层堆栈与制程的改善来驱动。从缩小尺寸伴随而来的耐久性降低与不正确比特误码率增加，这些都可以借由改善错误修正机制来弥补。即使有了这些进步，已有经济规模的闪存在尺寸上也难以越来越小。闪存本身的读写速度有限，并且有写入次数限制。有些具有光明展望的新技术（诸如铁电随机存取存储器（FeRAM）、磁阻式随机存取存储器（MRAM）、可编程金属化单元（PMC）、电阻式存储器（ReRAM）、相变化存储器（PCM）与其他)均在探索与研发中，希望能更大规模的取代闪存。
随着NAND制程越来越小，缩短制程提高存储密度已经非常困难。最新的NAND技术被称为3D-NAND，这种材料改变了2D-NAND单层的设计，将32层、64层NAND进行堆叠，从而提高存储密度。当前美光、SK-海力士、东芝、西部数据、三星几大NAND厂商均已拥有自己的3D-NAND产品。第一代基于3D-NAND的固态硬盘也已经开始广泛应用于数据中心和消费级计算机。借助3D-NAND，固态硬盘容量得到了质的提升，在2017年中国国内一家厂商Memblaze发布的PBlaze5 PCIe SSD已经最高可以做到11TB可用容量。

新型存储介质

2015年，英特尔及美光联合发布了xPoint新型存储介质，这种介质是一种相变存储材料（而非NAND或者Nor），当下主要用于英特尔的Optane固态硬盘中。