介绍
    1965年,在双极管被W.Shockley、W.Brattain和J.Bardeen三人发明出来之后,Intel的合作创始人Gordon Moore发现了这样一条法则:当价格不变时,集成电路上可容纳的晶体管数目,约每一年便会增加一倍,性能也将提升一倍。而事实上,在接下来的几年集成电路上的晶体管数目大概每18个月就会增加一倍。例如,从Pentium 1.3到Pentium 4之间的18个月里,单位面积里的晶体管数量就从2800万增加到了5500万。
    今天,一个标准的桌面PC的处理器的操作频率已经是按gigahertz来计算的了,而存储器能够存储的容量信息更是按terabytes(TB)来进行计算的了。
    这种单位面积晶体管数量的增加以存储器的为其中一个典型的代表,因为存储器也正好是电子系统中的一个
关键部件。
    半导体存储器能够被划分为两个主要部分:RAM(Random Access Memories)和ROM(Read Only Memories):RAM在断电之后他存储的数据会消失,而ROM则会一直保持。另外一种存储器NVM(Non-Volatile Memories)则介于以上两种之间,他的内容能够被修改,而断电之后数据也不会丢失。这就比单纯的ROM更具有弹性,因为ROM的内容是由生产商写死了客户是不能修改的。
    Non-Volatile Memories的历史从20世纪70年代开始的,而第一款NVM就是EPROM(Erasable Programmable
Read Only Memory),从此以后一直到90年代NVM就逐渐成为半导体家族中最重要的成员之一了,而引起更多关注的是新技术的发展推动NVM的进步多于由此产生的经济效益。
    从20世纪90年代开始,随着半导体存储器进入到了手机、手持电脑、摄像机等数码终端产品,这个市场就一直处于快速增长状态知道今天。
    最流行的Flash 存储器的存储方式是基于一种叫做Floating Gate(FG)的技术,可以参考下面的横截图,一个MOS管是由两个重叠的门组成:第一个是完全被氧化物所包围;而第二个则是被连接到外面。这个单独的门就相当于构成了一个电子隔离带,这样就保证存在里面的电子(数据)能够保留很多年。对这个被隔离起来的部分进行充电和放电的过程就叫做program和erase。由于进行了充放电,所以这个隔离起来的部分内部的电势Vth就会被改变;这就是一个典型的MOS管工作原理。当我们对一个存储单元施加上一个电压的时候,我们就可以分别处两种情况:当我们施加的电压比Vth高的时候便被识别为“1”,否则就被识别为“0”。

NAND 存储器存储单元结构
阵列
    存储器的存储单元都是以矩阵的形式来组织的,因为这种组织可以有效较少存储器的所占空间。我可以通过查看存储单元的组织结构就可以区分NAND和NOR Flash。我们现在介绍的NAND,因为NAND 是目前运用最为广泛的存储器。
    在NAND的架构中,存储单元是如图2.2所示以每32个或者64个进行串联来进行组织的。两个用于选择的晶体管(这个晶体管的两个外接脚DSL/Mdl[接BL] 或者是SSL/Msl[接SL])分别放于每一串存储单元(32或64个)的两端以此来保证与source line(通过Msl)和bitline(通过Mdl)的连接。每一个NAND 存储单元串都有bitline用来与其他串进行连接。控制门用于连接wordlines(WLs)。

    逻辑pages是由同一个wordline控制的存储单元控制的部分,每一个wordline所控制的pages的数目和存储单元的容量有关系。基于存储单元的存储级别,Flash存储器可以分为不同的类别:SLC(一个存储单元1bit)、MLS(一个存储单元2bits)、8LC(一个存储单元3bits)、16LC(一个存储单元4bits)。
    如果我们考虑的SLC的交叉存取情况,奇数和偶数分别形成不同的页。一个例子就是:一个页大小为4KB (4096 * 8 = 32768 bit)的SLC的wordline有65536个存储单元。
    当然,如果是MLC的话则有4个页,每一个存储单元系列就有一个LSB(Least Significant Bit)和一个MSB(Most Significant Bit)。因此也就有:
- 偶数bitlines的MSB 和 LSB的页
  - 奇数bitlines的MSB 和 LSB的页
    同一个wordline的所有的NAND的存储单元串在擦除的时候是一起被擦除的,这样就形成了一个块(blcok),如果2.2所示为两个块,使用的是同一个总线,一个块是由WL0<63:0>构成,另外一个则是WL1<63:0>.
    NAND Flash的存储单元组成结构是矩阵,在对NAND执行读、写和擦除的时候就需要额外的电路,又由于NAND的各个die必须是被封装起来的,所以在设计阶段设定一个适合的大小并构建好周边电子线路是很重要的。例如NAND Flash的各个die的层次结构就是如此。
    图2.3给出了一个层次结构的例子。存储阵列可以被设置为多个plane(图2.3中就是两个plane),水平方向
上使用wordline来标记,垂直方向上使用bitline来标记。
    Row Decoder位于两个plane之间,电路的一个任务就是对所选NAND串的的wordline进行适当的偏压以保证正常工作,所有的bitlines都要连接到sense amplifiers(Sense Amp)。每一个sense amplifier可以有一个多个bitlines,这个我们会在之后介绍到这一部分的时候详细介绍到。sense amplifier的目的是将存储单元中的电流专为一个数字量。而在外围区域则有一些给存储单元进行充电所需的器件以及电压管理器件、逻辑电路以及其他的一些设备。PADs是用来与外部器件进行通信用的。

NAND Flash内部结构简介的更多相关文章

  1. nand flash详解及驱动编写

    https://www.crifan.com/files/doc/docbook/linux_nand_driver/release/html/linux_nand_driver.html#nand_ ...

  2. Samsung K9F1G08U0D SLC NAND FLASH简介(待整理)

    Samsung  K9F1G08U0D,数据存储容量为128M,采用块页式存储管理.8个I/O引脚充当数据.地址.命令的复用端口.详细:http://www.linux-mtd.infradead.o ...

  3. Nand Flash基础知识与坏块管理机制的研究

    概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...

  4. 说说NAND FLASH以及相关ECC校验方法

    Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次性地将 ...

  5. NAND FLASH ECC校验原理与实现

    ECC简介 由于NAND Flash的工艺不能保证NAND的Memory Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块.为了检测数据的可靠性,在应用NAND  ...

  6. JZ2440 裸机驱动 第8章 NAND Flash控制器

    本章目标  了解NAND Flash 芯片的接口 掌握通过NAND Flash控制器访问NAND Flash的方法 8.1 NAND Flash介绍和NAND Flash控制器使用     NAND ...

  7. u-boot分析(九)----nand flash初始化|nand flash读写分析

    u-boot分析(九) 上篇博文我们按照210的启动流程,分析到了初始化串口,由于接下来的取消存储保护不是很重要,所以我们今天按照u-boot的启动流程对nand flash初始化进行分析. 今天我们 ...

  8. 如何编写linux下nand flash驱动-2

    [Nand Flash引脚(Pin)的说明] 图3.Nand Flash引脚功能说明 上图是常见的Nand Flash所拥有的引脚(Pin)所对应的功能,简单翻译如下: 1.       I/O0 ~ ...

  9. 如何编写linux下nand flash驱动-4

    2.       软件方面 如果想要在Linux下编写Nand Flash驱动,那么就先要搞清楚Linux下,关于此部分的整个框架.弄明白,系统是如何管理你的nand flash的,以及,系统都帮你做 ...

随机推荐

  1. 异步任务(AsyncTask)

    Android的UI线程主要负责处理用户的按键事件.用户触屏事件及屏幕绘图事件等,因此开发者的其他操作不应该.也不能阻塞UI线程,否则UI界面将会变得停止响应——用户感觉非常糟糕.(总之,开发者需要牢 ...

  2. Magento 的程序架构与流程

    以下是分别详细解读分析程序的各层次源码: MAGENTO_ROOT: //入口文件 /index.php -----–| 1.判断php版本是否大于5.22.引入Magento主要的中心类/app/M ...

  3. xml_03

    1.xml 2.对于XML文档的约束   |-DTD      <!DOCTYPE 根元素 [       <!ELEMENT 元素名 (xx)>       <!ATTLIS ...

  4. 什么情况下会调用到session_destroy()

    https://segmentfault.com/q/1010000000191102 首先 ... session_destory() 是一个函数 ... 这个函数在任何情况下都不会被 php 引擎 ...

  5. IOS_视图实现圆角效果的三种方法及比较

    通过代码,至少有三种方法可以为视图加上圆角效果.附例子:https://github.com/weipin/RoundedCorner 方法一.layer.cornerRadius 第一种方法最简单, ...

  6. Spring中Bean实例的生命周期及其行为

  7. 时间处理得到UTC时间

    在工作过程遇到了时间处理的问题,因为需要统一将时间处理按照utc时间进行处理,因此,不能简单的通过系统运行直接得到时间的毫秒数,这样会在不同时区得到的值是不同的. import java.text.P ...

  8. Dell Remote Access Controller 添加和配置 DRAC/MC 用户

    iDRAC设置 单击“Configuration”(配置)选项卡并选择“Users”(用户). 单击“Username”(用户名)列下的 [Available](可用)添加新用户,或单击“Userna ...

  9. mysql学习笔记(1)

    参考教材<MySQL入门经典>  王雨竹 高飞      机械工业出版社 软件下载:http://www.mysql.com 安装好后打开命令提示符 (黑窗口) net start mys ...

  10. (hdu)5546 Ancient Go

    Problem Description Yu Zhou likes to play Go with Su Lu. From the historical research, we found that ...