介绍
    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. 编译inotify报错

    错误如下: configure: error: no acceptable C compiler found in $PATH 这是因为没有找到编译器的原因造成的 解决方法: 安装gcc [root@ ...

  2. photoshop 常用快捷键大全

    一.文件新建 CTRL+N打开 CTRL+O 打开为 ALT+CTRL+O关闭 CTRL+W保存 CTRL+S 另存为 CTRL+SHIFT+S另存为网页格式 CTRL+ALT+S打印设置 CTRL+ ...

  3. MySQL(5.6) 函数

    字符串函数 ASCII(str) 说明:返回字符串 str 最左边字符的 ASCII 值 mysql'); mysql); mysql> SELECT ASCII('a'); mysql> ...

  4. java数据同步陷阱

    并发,我的理解就是同时运行多个程序.同时,难以避免的就是数据的同步问题,如果数据同步问题处理不好就很容易造成程序出现bug,当然,对于其造成的危害,不加详述. 首先,来看一个简单的例子,当然,这个例子 ...

  5. I/O端口与I/O内存

    端口的概念:设备通过系统总线上的接口与CPU相连,接口电路中含有多种寄存器,CPU向设备读写数据实际上是向接口上的寄存器读写数据,这些寄存器称为I/O端口.一个接口通常包含控制端口,数据端口,状态端口 ...

  6. OpenJudge/Poj 1657 Distance on Chessboard

    1.链接地址: http://bailian.openjudge.cn/practice/1657 http://poj.org/problem?id=1657 2.题目: 总时间限制: 1000ms ...

  7. LINQ to Entities 查询注意事项

    1> 排序信息丢失 如果在排序操作之后执行了任何其他操作,则不能保证这些附加操作中会保留排序结果.这些操作包括 Select 和 Where 等.另外,采用表达式作为输入参数的 First 和 ...

  8. swift基本语法

    swift种语法着实怪异,实质干的事情还是一样的,一下将对此语法做简单介绍: 1.swift语法种已经剔除“:”这个结束符号,下面将演示入门操作的hello world import Foundati ...

  9. django 学习点滴

    django连接数据库要安装第三方包,比如mysql的就是 python-mysqldb, 用apt-cache search python-mysql 搜索一下. django的project可以放 ...

  10. 《Thinking In Java第四版》拾遗

    <Thinking In Java第四版>拾遗 转自我的github(http://katsurakkkk.github.io/2016/05/Thinking-In-Java%E7%AC ...