文章目录

  • 一、存储器的发展和类别
    • (一)、存储器的发展历史
    • (二)、存储器的类别
  • 二、NAND Flash的结构与原理
    • (一)、NAND Flash种类
      • 1、SLC(Single-Level Cell)
      • 2、MLC(Multi-Level Cell)
      • 3、TLC(Triple-Level Cell)
      • 4、QLC(Quad-Level Cell)
      • 5、固态硬盘寿命计算公式
    • (二)、NAND Flash结构
      • 1、读数据操作
      • 2、写数据操作

与之相关联的文章:
NANDFLASH的学习(一)
NANDFLASH的学习(二)
NANDFLASH的学习(三)

为了能够更加深入地理解NANDFLASH的工作原理以及清除如何使用针对其特点作的后续处理的方法,我参考一篇论文名叫NAND Flash坏块管理算法及逻辑层驱动设计,大家可以到知网、百度或者是CSDN处下载。

一、存储器的发展和类别

(一)、存储器的发展历史

计算机发展史:电子管计算机时期(19491957)、晶体管计算机时期(19581964)、集成电路计算机时期(1965~now)、量子计算机时期(future)。

存储器发展史:
穿孔卡片(一种由薄纸板制成,用孔洞位置或其组合表示信息,通过穿孔或轧口方式记录和存储信息的方形卡片)–>
真空管(以真空管能否导通代表一位0/1)–>
选数管(是一个真空管建立的数字存储设备,存储数据的形式为静态电荷)–>
水银延迟线存储器(把代表数据的脉冲从装水银的管子的一头传到另一头,传播要一秒的时间,在这一秒数据就存住了。要刷新来保持,一根管子可以同时存在多个脉冲)–>
磁鼓存储器(利用铝鼓筒表面涂覆的磁性材料来存储数据的)–>
磁带存储器(以磁带为存储介质,由磁带机及其控制器组成的存储设备。磁带机由磁带传动机构和磁头等组成,能驱动磁带相对磁头运动,用磁头进行电磁转换,在磁带上顺序地记录或读出数据。)–>
DRAM(为了保持数据,DRAM使用电容存储,所以必须隔一段时间刷新一次,如果存储单元没有被刷新,存储的信息就会丢失)–>
SDRAM(比DRAM多了与CPU的同步信号)–>
EPROM(它是一组浮栅晶体管,被一个提供比电子电路中常用电压更高电压的电子器件分别编程。一旦编程完成后,EPROM只能用强紫外线照射来擦除。)–>
软盘存储器(软磁盘存储器和硬磁盘存储器的存储原理和记录方式基本相同,但在结构和性能上存在一些差别。)–>
硬盘存储器(机械硬盘即传统的普通硬盘,主要由盘片、盘片转轴、磁头组件、磁头驱动机构、控制电路组成)–>
光盘存储器(用于记录的薄层涂覆在基体上构成的记录介质)–>
闪存(一种非易失性电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。)–>
DDR SDRAM(双倍速率同步动态随机存储器)–>
纳米存储器(在一个片状基层上分布碳纳米管,存储密度非常高)–>Developing

(二)、存储器的类别

存储器的分类如下所示。可以看到存储器从大体上可分两种:易失性(volatility)和非易失性(non-volatility)。

易失性存储器分为DRAM(动态随机存取存储器)和SRAM(静态随机存取存储器),动态和静态的差别在于动态的存储器为了保持数据需要隔一段时间刷新一次数据,不然会丢失数据,而后者只要上电了就能长时间保持数据不变

非易失性存储器分为FLASH、ROM、磁存储器和光存储器。ROM(read only memory)只读存储器是一种在正常工作时其存储的数据固定不变,其中的数据只能读出,不能写入,即使断电也能够保留数据,要想在只读存储器中存入或改变数据,必须具备特定的条件。磁存储器就是利用磁性材料通过改变磁性来存储数据,光存储器(如光盘)就是利用光学方法从光存储媒体上读取和存储数据的一种设备。

存储器
易失性
非易失性
DRAM
SRAM
FLASH
NAND
NOR
DiNOR
AND
ROM
磁存储器
光存储器

然后就是主要讲的Flash,按照内部架构和实现技术分为NAND(与非门)、NOR(或非门)、DiNOR(双倍或非门)、AND(与门)。市面上主导的两种架构为NOR和NAND,前者使用方便,易于连接,可以在芯片上直接运行代码,稳定性出色,传输速率高,在小容量时有很高的性价比,这使其很适合应于嵌入式系统中用作bootloader。后者强调更高的性能,更低的成本,更小的体积,更长的使用寿命。这使得NAND Flash可以更有效地存储纯资料或数据等,在嵌入式系统中用来支持文件系统FatFs等。

下面是NAND Flash和NOR Flash两者存储单元的结构。可以看出NAND Flash由16/32个CELL共用一个接触孔,而NORFlash则是一个CELL使用一个接触孔,这使得NANDFlash体积相是NOR Flash体积一半左右的原因。

在存储器对记忆单元读写操作的方式上,NOR Flash是使用热电子注入写入一个NOR Flash记忆单元使其清零,借由量子穿隧抹除一个记忆单元使其置一。NAND Flash采用穿隧注入的方式写入,穿隧释放的方式抹除。这就使得NAND Flash的使用寿命比NOR Flash大一个数量级的原因(NAND Flash擦写次数大约为100万次)

下面是它们两者区别的概括:
1、NOR Flash的读速度比NAND Flash稍快一些。
2、NAND Flash的写入速度比NOR Flash快很多。
3、NAND Flash的4ms擦除速度远比NOR Flash的5s快。
4、大多数写入操作需要先进行擦除操作。
5、NAND的擦除单元更小,相应的擦除电路更少。

使用NAND Flash注意事项:
1、NAND Flash出厂时有一定坏块,需要根据已标记的坏块进行坏块处理。
2、NAND Flash会出现位翻转错误,但概率较低,大约100亿次读写操作才出现一次。作为存储流媒体文件则影响不大,但如果用于存储系统根文件系统,则会造成系统运行出错,此时则有必要进行处理。
3、NAND Flash使用I/O方式进行数据读写,数据地址共用一条线,而NOR Flash使用总线方式,地址和数据线相互独立。

二、NAND Flash的结构与原理

(一)、NAND Flash种类

NAND Flash的种类大致有三种:SLC、MLC、TLC、QLC四种种,而eMLC是MCL的增强版。它们的对照表如下。

SLC eMLC MLC TLC QLC
每单元bit数 1 2 2 3 4
最大写入/擦除周期 10万 3万 1万 5千 5百~1千
可靠性/耐久度 非常棒,很少坏块和位翻转错误 很棒 一般 应该还行
成本 ¥¥¥¥¥ ¥¥¥¥ ¥¥¥ ¥¥ 刚开始可能贵,发展到后面应该会很便宜(单位数据)
消费人群 企业(enterprise) 企业(enterprise) 大众 大众 等待普及

下面对它们一一介绍。

1、SLC(Single-Level Cell)

SLC(Single-Level Cell,单层单元)SSD在每个单元中存储一个Bit,这种设计提高了耐久性、准确性和性能。对于企业的关键应用程序和存储服务,SLC是首选的闪存技术。当然,它的价格最高。SLC架构是在每个Cell中存储一个bit的信息,以达到其稳定、读写速度快等特点,Cell可擦写次数为10万次左右。

SLC技术特点是在浮置闸极与源极之中的氧化薄膜更薄,在写入数据时通过对浮置闸极的电荷加电压,然后透过源极,即可将所储存的电荷消除,通过这样的方式来储存一个信息单元。SLC技术能提供快速的程序编程与读写,不过此技术受限于Silicon efficiency的问题,必须要由较先进的流程强化技术,才能向上提升SLC制程技术。

2、MLC(Multi-Level Cell)

eMLC(Enterprise Multi-Level Cell,企业多级单元)是MLC NAND 闪存的一个“增强型”的版本,它在一定程度上弥补了SLC和MLC之间的性能和耐久差距。eMLC驱动器比MLC驱动器贵,但比SLC驱动器便宜得多。尽管每个单元仍然存储2个Bit,但eMLC驱动器的控制器管理数据放置、磨损均衡和一些其他存储操作延长了eMLC SSD的使用寿命。

其原理是将2个或2个以上bit的信息写入一个浮动栅,然后利用不同电位的电荷,透过内存储存的电压控制精准读写。MLC使用大量的电压等级,每一个单元储存两位数据,数据密度比较大。

3、TLC(Triple-Level Cell)

最便宜的是TLC(Triple-Level Cell,三层单元)NAND闪存,每个单元存储3比特,通常用于性能和耐久性要求相对较低的消费级电子产品。最适合于包含大量读取操作的应用程序,基于TLC的存储组件很少在业务环境中使用,但是闪存体系结构的最新改进,包括3D NAND、持久增强的数据放置和错误纠正技术,使该技术在读密集型企业存储应用程序中占有了一席之地。

4、QLC(Quad-Level Cell)

QLC(Quad-Level Cell)NAND闪存是最近才推出的架构,容量提升和成本降低的同时性能相对下降。由此带来的饱受人们的非议,这就像5G推出的时候人们对于它那么快到底有什么用处(回顾4G出现的时候人们习惯于3G的速度一样),我相信科学技术是不断提升的,肯定有它的用武之地。

5、固态硬盘寿命计算公式


计算了一下QLC寿命还是可以达到7年以上的,所以还是别选择歧视它咯。

(二)、NAND Flash结构

以W25N01GVxxIG为例,它由1024个块(Block)组成,其中每个块包含64页(Page),每页包含2048字节主内存块(Main Memory Array)和64字节备用区(Spare Area),还有用于写入内存的2112字节数据缓冲区。主内存块用于存储我们写入其中的数据,而备用区则是用于存储坏块标记和ECC纠错码等信息。NAND Flash读写操作的单位是页(Page),擦写的单位是块(Block),相比于NOR Flash操作的单位都是扇区是麻烦不少。

这块芯片采取的总线方式是SPI,当然也有8080方式的地址数据线分时复用。以其中的读写时序来举例说明。

1、读数据操作

这款芯片的读操作分两步,在有缓存区(BUF=1)的前提下,首先将指定页地址的数据读出来存放到2048字节的数据缓冲区内, 然后将数据缓冲区的数据读出来存到我们的数组等地方。
下图是读取数据的第一步,首先通过SPI发送0x13指令,然后发送8位的假时钟,最后分两步发送需要读取数据的16位页地址,等待BUSY位为0即传输结束。

下图为读取数据的第二步,首先发送指令0x03,然后发送列地址,这里的列地址是指2048字节数据缓存区的偏移,如果想要从第一字节开始读取就直接是0就可以了。最后发送8位假时钟,使用for循环选择需要接收多少个字节,当片选信号为高电平时停止数据传输。

2、写数据操作

写操作也分为两步,在BUF=1的前提下,首先是加载我们需要写入的数据到数据缓冲区,然后将数据编程到可以写数据的页里面完成数据的写入。
下图是写入数据的第一步,首先在开启写使能的前提下写入指令0x02或者是0x84,然后写入16位行地址(其中只有12位有效),然后逐个字节写入到数据缓存区。如果开启了ECC-e=1则写入数据最大只有2048字节,反之有2112字节。

下图是写入数据的第二步,首先关闭块保护让数据能够写入到flash,然后写入指令0x10,发送8位假时钟,最后发送16位你想将数据写入的页地址,等待BUSY位为0即写入完成。

这些读写操作看似步骤很简单,但是实际用的时候后续处理会很多,就如坏块处理和磨损均衡策略等等,这些在后面我会深入进行研究。但是理论终归要与实际相连接,用的时候对人的提升才是最大的,共勉。今天就先到这里了,谢谢大家那么有耐心看完这篇文章。

参考资料:
百度百科
NAND Flash坏块管理算法及逻辑层驱动设计
关于存储器的发展历史,还有性能分析
存储器的发展历程
我们都冤枉QLC了!看完秒懂

NANDFLASH的学习(一)相关推荐

  1. NANDFLASH的学习(二)

    文章目录 三.动态坏块处理 (一).坏块的概念 (二).坏块管理的方法 1.跳过坏块 2.保留坏块 (三).动态坏块管理算法设计思想 (四).动态管理算法设计流程及函数实现 1.建立坏块表 与之相关联 ...

  2. NANDFLASH的学习(三)

    文章目录 三.动态坏块处理 (四).动态管理算法设计流程及函数实现 2.建立逻辑块地址-物理块地址映射表 与之相关联的文章: NANDFLASH的学习(一) NANDFLASH的学习(二) NANDF ...

  3. Nandflash K9F1208U0B学习

    注: Row也就是page 1.       引脚描述 I/O0 ~ I/O7-----data inputs/outputs 通过这8个I/O引脚,可以输入命令,地址和数据,也可以在读操作时输出数据 ...

  4. 嵌入式裸机NandFlash和 SD/iNand学习笔记

    一. Nandflash 1.1 定义 Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案.Nand-flash存储器具有容 ...

  5. 朱有鹏老师linux核心大讲堂---ARM裸机第十一部分 NandFlash和iNand学习笔记

    目录 1.NandFlash的接口  数据手册:K9F2G08/K9F4G08 2.NandFlash结构框图 3.Nandflash的结构 4.NandFlash常见操作以及流程分析 5.S5PV2 ...

  6. s5pv210 nandflash学习(一)

    一.Flash简介: Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memo ...

  7. jlink linux使用教程,[arm-linux学习-(使用jlink下载uboot程序到nandflash中)]

    使用jlink下载程序到nandflash中 这次实验只是下载一个点灯的程序到nandflash中,因为该程序很小,不到4k,所以只拷贝前4k的代码,文章最后说明了通过这种方式下载uboot的步骤 准 ...

  8. 关于NandFlash在实际产品使用上的一些经验

    关于NandFlash在实际产品使用上的一些经验 07.26.2011, 嵌入式, by qwl. 自己从第一次接触Nandflash到现在也有将近两年的时间了,从刚开始的无从下手到现在的略知一二. ...

  9. jz2440-uboot-201204版本移植【学习笔记】【原创】

    平台:jz2440 作者:庄泽彬(欢迎转载,请注明作者) 说明:韦东山二期视频学习笔记 交叉编译工具:arm-linux-gcc (GCC)4.3.2 PC环境:ubuntu18.04 一.uboot ...

最新文章

  1. POJ 2226 Muddy Fields 最小点覆盖+加建图(好题)
  2. java中synchronized使用方法
  3. php json注释,【部分解决】Json中添加注释
  4. 拉链法导致的链表过深问题为什么不用二叉查找树代替,而选择红黑树?为什么不一直使用红黑树?
  5. 前端判断是否安装桌面应用_前端开发人员的桌面应用神器 Electron
  6. linux-目录结构
  7. maven的基本命令
  8. 【Laravel】使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
  9. windows 10字体突然变小变细,模糊
  10. 知网海外版(硕博论文pdf下载方式)
  11. 简单几步即可速查电脑WiFi密码,无需任何工具!
  12. C语言编写的学生考勤信息管理系统
  13. 北京利达消防设备调试软件
  14. [week15] C - ZJM与纸条(选做)—— KMP算法
  15. python和C++代码实现模拟动态指针时钟
  16. MATLAB的图像灰度线性变换
  17. 苍蓝誓约服务器维护什么时候结束,苍蓝誓约手游2021年7月15日停服维护公告_苍蓝誓约手游2021年7月15日更新了什么_玩游戏网...
  18. EclipseADT在虚拟机上运行Helloworld程序
  19. C语言局域网对战游戏,局域网聊天的程序(C++版)
  20. magento 404

热门文章

  1. python怎么安装pymysql_python pymysql安装
  2. 哈奇森,休谟与亚当·斯密
  3. 学习ArcGIS?37个Arcmap常用操作技巧可能帮到您
  4. 每日学术速递2.21
  5. GoDEX G500 打印不齐
  6. TensorFlow(keras)入门课程--03 卷积介绍
  7. 白色光源的迈克尔逊干涉仪
  8. Kaldi thchs30手札(六)说话人自适应训练(SAT)、FMLLR以及quick训练(line 87-104)
  9. html flex布局换行,flex布局换行后间隙问题
  10. 陇原战疫2021网络安全大赛 Web