最近看了好久的NandFlash,总算是有了一点感觉,但一直没有系统的整理一下,脑子里很乱,今天刚好公司的很多人都出去旅游了,所以工作不是很忙,就在这里好好整理一下吧。首先当然是最基础的了,NandFlash的硬件实现机制。

Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的入硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。Flash的内部存储是MOSFET,里面有个悬浮门(Floating Gate),是真正存储数据的单元。在Flash之前,紫外线可擦除(uv-erasable)的EPROM,就已经采用用Floating Gate存储数据这一技术了。

 数据在Flash内存单元中是以电荷(electrical charge)形式存储的。存储电荷的多少,取决于图中的外部门(external gate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth来表示。
 【SLC和MLC的实现机制】Nand Flash按照内部存储数据单元的电压的不同层次,也就是单个内存单元中,是存储1位数据,还是多位数据,可以分为SLC和MLC:
1.      SLC,Single Level Cell:
单个存储单元,只存储一位数据,表示成1或0.
就是上面介绍的,对于数据的表示,单个存储单元中内部所存储电荷的电压,和某个特定的阈值电压Vth,相比,如果大于此Vth值,就是表示1,反之,小于Vth,就表示0.
对于nand Flash的数据的写入1,就是控制External Gate去充电,使得存储的电荷够多,超过阈值Vth,就表示1了。而对于写入0,就是将其放电,电荷减少到小于Vth,就表示0了。
关于为何Nand Flash不能从0变成1,我的理解是,物理上来说,是可以实现每一位的,从0变成1的,但是实际上,对于实际的物理实现,出于效率的考虑,如果对于,每一个存储单元都能单独控制,即,0变成1就是,对每一个存储单元单独去充电,所需要的硬件实现就很复杂和昂贵,同时,所进行对块擦除的操作,也就无法实现之前的,一闪而过的速度了,也就失去了Flash的众多特性了。
 2.      MLC,Multi Level Cell:
与SLC相对应,就是单个存储单元,可以存储多个位,比如2位,4位等。其实现机制,说起来比较简单,就是,通过控制内部电荷的多少,分成多个阈值,通过控制里面的电荷多少,而达到我们所需要的存储成不同的数据。比如,假设输入电压是Vin=4V(实际没有这样的电压,此处只是为了举例方便),那么,可以设计出2的2次方=4个阈值,1/4的Vin=1V,2/4的Vin=2V,3/4的Vin=3V,Vin=4V,分别表示2位数据00,01,10,11,对于写入数据,就是充电,通过控制内部的电荷的多少,对应表示不同的数据。
对于读取,则是通过对应的内部的电流(与Vth成反比),然后通过一系列解码电路完成读取,解析出所存储的数据。这些具体的物理实现,都是有足够精确的设备和技术,才能实现精确的数据写入和读出的。单个存储单元可以存储2位数据的,称作2的2次方=4 Level Cell,而不是2 Level Cell,这点,之前差点搞晕了。。。,同理,对于新出的单个存储单元可以存储4位数据的,称作2的4次方=16 Level Cell。 
【关于如何识别SLC还是MLC】Nand Flash设计中,有个命令叫做Read ID,读取ID,意思是读取芯片的ID,就像大家的身份证一样,这里读取的ID中,是读取好几个字节,一般最少是4个,新的芯片,支持5个甚至更多,从这些字节中,可以解析出很多相关的信息,比如此Nand Flash内部是几个芯片(chip)所组成的,每个chip包含了几片(Plane),每一片中的页大小,块大小,等等。在这些信息中,其中有一个,就是识别此flash是SLC还是MLC。下面这个就是最常见的Nand Flash的datasheet中所规定的,第3个字节,3rd byte,所表示的信息,其中就有SLC/MLC的识别信息。

总结一下:NandFlash也是一种Rom,通俗一点理解就是可以当做硬盘用,也就是说掉电后,上面的数据还在。

NandFlash分为SLC和MLC两种实现机制,主要是根据其单个内存单元所能存放数据的位数,SLC只能存放一位数据,

NandFlash的操作:对其写如数据1,就是一个充电的过程,写入数据0,是一个放电的过程。数据是1还是0主要是根据所设定的阀值电压决定的

深度分析NandFlash—硬件实现机制相关推荐

  1. 深度分析Java的ClassLoader机制(源码级别)

    转载自 深度分析Java的ClassLoader机制(源码级别) Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取 ...

  2. 深度分析 Java 的 ClassLoader 机制(源码级别)(转)

    写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoa ...

  3. java类验证和装载顺序_深度分析Java的ClassLoader机制(源码级别)

    原文地址:https://dwz.cn/AztGFkO7 作者:Hollis Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文 ...

  4. 深度分析Java的枚举类型——枚举的线程安全性及序列化问题

    点击关注,快速进阶高级架构师 作者:Hollis 写在前面:Java SE5提供了一种新的类型-Java的枚举类型,关键字enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为 ...

  5. 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)

    写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...

  6. 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题

    本文作者: 伯乐在线 - HollisChuang .未经作者许可,禁止转载! 欢迎加入伯乐在线 专栏作者. 写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可 ...

  7. 2022-2028年中国交通建设PPP模式深度分析及发展战略研究报告(全卷)

    [报告类型]产业研究 [出版时间]即时更新(交付时间约3个工作日) [发布机构]智研瞻产业研究院 [报告格式]PDF版 本报告介绍了PPP模式行业相关概述.中国PPP模式行业运行环境.分析了中国PPP ...

  8. 深度学习中的注意力机制(二)

    作者 | 蘑菇先生 来源 | NewBeeNLP 目前深度学习中热点之一就是注意力机制(Attention Mechanisms).Attention源于人类视觉系统,当人类观察外界事物的时候,一般不 ...

  9. 深度分析:比特大陆二代AI芯片性能跃升,专注安防视频

    (图片来自比特大陆官网) 作者 | 中国科学院微电子研究所 剑白 近日,坊间传闻许久的比特大陆第二代人工智能芯片BM1682,正式出现在其官网页面.根据比特大陆一贯神秘务实的风格,相信基于BM1682 ...

最新文章

  1. 数据治理展示血缘关系的工具_Nebula Graph 在微众银行数据治理业务的实践
  2. 最新 Windows 7 7100安装
  3. Algorithms_入门基础_如何使用最高效的方式来判断一个数是否是2的N次方
  4. 【网络安全】无需SOCKS支持,帮助广大渗透测试人员建立一条隐蔽的通信信道
  5. 19、20 Context API
  6. C/C++入门的精髓!太全了吧,收藏夹的必备
  7. php exec执行多条命令,小技巧:在PHP中调用多条shell指令
  8. webmin升级php,Centos linux下webmin安装及配置
  9. IDEA 创建git 分支 拉取分支
  10. 43个实例xHTML+CSS(DIV+CSS)网页及导航布局教程
  11. mysql查询未讲课教师_经典教师 学生 成绩sql面试题再次来袭3(附答案)
  12. 谷歌地图自定义popup框
  13. mysql sql优化与调优机制详解_MySQL性能调优——锁定机制与锁优化分析详解
  14. 什么是MTU?为什么MTU值普遍都是1500?
  15. 【命令】Java调用Windows运行命令打开\关闭软键盘
  16. 第五章(3)行逻辑链接的顺序表
  17. WebApp开发入门
  18. 第一个Spring应用程序 - Hello World
  19. 5s解决报错:Unbound pointcut parameter ‘xxxxxx‘
  20. 手机ufs测试软件,折腾1000个App UFS 3.0手机极限测试

热门文章

  1. python入门第三课(初中生学Python)
  2. Vue实现图形化积木式编程(十二)
  3. 鲁大师2023年Q1手机报告:ColorOS蝉联榜首
  4. 新浪微博网页版打开异常解决方案
  5. 【Spark重点难点】你从未深入理解的RDD和关键角色
  6. DirectX 9.0c游戏开发手记之RPG编程自学日志之11: 题外话
  7. iOS转前端之如何适配不同屏幕尺寸方案
  8. SAP工具箱 通用条件/加点率配置
  9. 【英语】大学英语CET考试,听力部分2(长选项关键词,答题技巧总结)
  10. PHP基础知识【大纲】