Flash全名叫做Flash Memory,属于非易失性存储设备(Non-volatile Memory Device),与此相对应的是易失性存储设备(Volatile Memory Device)。关于什么是非易失性/易失性,从名字中就可以看出,非易失性就是不容易丢失,数据存储在这类设备中,即使断电了,也不会丢失,这类设备,除了Flash,还有其他比较常见的如硬盘,ROM等,与此相对的,易失性就是断电了,数据就丢失了,比如大家常用的内存,不论是以前的SDRAM,DDR SDRAM,还是现在的DDR2,DDR3等,都是断电后,数据就没了。

Flash的内部存储是金属-氧化层-半导体-场效晶体管(MOSFET),里面有个悬浮门(Floating Gate),是真正存储数据的单元。

数据在Flash内存单元中是以电荷(electrical charge) 形式存储的。存储电荷的多少,取决于图中的控制门(Control gate)所被施加的电压,其控制了是向存储单元中冲入电荷还是使其释放电荷。而数据的表示,以所存储的电荷的电压是否超过一个特定的阈值Vth 来表示。

1.对于NAND Flash的写入(编程),就是控制Control Gate去充电(对Control Gate加压),使得悬浮门存储的电荷够多,超过阈值Vth,就表示0。

2.对于NAND Flash的擦除(Erase),就是对悬浮门放电,低于阀值Vth,就表示1。

NAND Flash的架构:

如上图所示,这是一个8Gb 50nm的SLC颗粒内部架构。

每个page有33,792个单元,每个单元代表1bit(SLC),所以每个page就是4096Byte + 128Byte(SA)。
每个Block有64个page组成,所以每个Block容量为262,114Byte + 8192Byte (SA)

page是NAND Flash上最小的读/写单位(一个page上的单元共享一根字符线Word line),块是最小的擦除单位(。不同厂牌不同型号颗粒有不同的page和block大小。

下图是个8Gb 50nm的SLC颗粒。

4KB的页尺寸,256KB的块尺寸。图中4096字节用于存储数据,另外128字节用来做管理和ECC用。

SLC 和 MLC 区别:

SLC主要针对军工,企业级应用,有着高速写入,低出错率,长耐久度特性。
MLC主要针对消费级应用,有着2倍容量于SLC,低成本,适合USB闪盘,手机,数码相机等储存卡。如今也被用于消费级固态硬盘上。


由上图可以看到,MLC和SLC虽然使用相同的电压值,但是电压之间的阀值被分成了4份,直接影响了性能和稳定性。主要有下面几点:

1.相邻的存储电荷的悬浮门间会互相干扰,造成悬浮门里的电荷不稳定出现bit错误,MLC由于阀值相比SLC更接近,造成出错几率更大。
2.MLC读写性能降低,写入更是降低50%以上,因为需要确认充入电荷的量,这需要更精确的处理。SLC只有0和1,也就是有和没有,而MLC会有00,01,10,11 4个状态,在充入电荷后还要去判断是哪个状态,自然就慢了。
3.因为上面说的,造成额外的读写压力,所以功耗明显增大。
4.因为额外的读写压力,造成闪存的写入耐久度和数据保存期受到影响。

eMLC和eSLC的耐久度提升是用牺牲了数据保存期和增加读写时间换来的。(也就是性能会更差点)

【Linux】嵌入式·NAND Flash相关推荐

  1. nand flash 经典 全面 ------如何编写Linux下Nand Flash驱动

    Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flash的常见的物理特性,且深入介绍了Nand Flash的一些高级功能,然后开 ...

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

    http://www.cnblogs.com/sankye/articles/1638852.html 向作者Sankye致敬 [编写驱动之前要了解的知识] 1.       硬件特性: [Flash ...

  3. 文件系统加密 嵌入式Linux,基于Linux的NAND Flash加密文件系统的设计与实现

    摘要: NAND Flash以其大容量,低成本,低功耗,抗震荡在非易失存储介质中占据重要地位,已经被广泛应用于消费型电子,航空设备等领域.但是由于NANDFlash的物理特性不同于磁盘存储设备,需要为 ...

  4. linux下nand flash驱动工作原理,1.3.4. Nand flash驱动工作原理

    1.3.4. Nand flash驱动工作原理 在介绍具体如何写Nand Flash驱动之前,我们先要了解,大概的整个系统,和Nand Flash相关的部分的驱动工作流程,这样,对于后面的驱动实现,才 ...

  5. linux dd nand,Flash基础入门之采用dd 工具做Nand Flash磨损均衡

    本文主要向大家介绍了Flash基础入门之采用dd 工具做Nand Flash磨损均衡,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助. 文章采用dd工具,将/dev/zero 作为 ...

  6. NUC972 Linux学习 NAND FLASH 制作系统

    设备:NUC972DF61YC 使用的虚拟机环境:官方提供的NUC972DF61YC - Nuvoton 板载NAND FLASH,前期主要学习怎么uboot.ubootspl.uimage.env烧 ...

  7. linux下nand flash驱动工作原理,Linux下Nand Flash 驱动代码分析

    随着越来越多的平台支持从Nand Flash 中启动,掌握Nand Flash 的驱动编写有着重要的现实意义,由于内核已经完成了大部分的工作,实际工作中大部分工程师对Nand Flash 驱动只是简单 ...

  8. linux下nand flash驱动工作原理,Linux驱动之Nand Flash四问,原理、工作方式都包含了...

    Nand Flash 是一个存储芯片.本文引用地址:http://www.eepw.com.cn/article/201801/374606.htm 那么:这样的操作很理"读地址A的数据,把 ...

  9. nand flash 个人觉得写得比较好的文章

    [详解]如何编写Linux下Nand Flash驱动 版本:v2.2.1 Crifan Li 摘要 本文先解释了Nand Flash相关的一些名词,再从Flash硬件机制开始,介绍到Nand Flas ...

最新文章

  1. .NET 4.5 基类库中的新增功能
  2. centos mysql压缩文件直接恢复_Centos下mysql数据库备份与恢复的方法
  3. LeetCode Wiggle Subsequence(动态规划)
  4. Prima Cartoonizer中文版
  5. union all动态表_深入窥探动态链接
  6. 一起学习 网络规划设计师
  7. vagrant使用_使用Vagrant的初学者指南
  8. 【微信开发】-- 企业转账到用户
  9. Swift 后端开发
  10. activity调用fragment的方法_Fragment 的现在以及未来
  11. SpringBoot使用WEB进阶
  12. 微星刀锋 无法进入bios_微星MPG X570 GAMING EDGE WIFI刀锋板主板BIOS设置u盘启动教程...
  13. 时间戳转化为YYYY-MM-DD-XX-MM-UU日期格式
  14. 兼具教育耐心和AI匠心,看「网易有道词典笔2.0」的变革者角色
  15. matlab怎么带根号积分,如何用matlab画带根号的方程曲线图。曲线=[0.33-0.16x^2+0.12x]^(1/2)。...
  16. c语言房屋中介管理系统代码,房屋中介管理系统简易源代码
  17. Google Web Accelerator
  18. Facebook:Novi数字钱包“已经准备好进入市场”
  19. NBIOT透传模块在智能公寓锁上的使用2
  20. 阿拉丁2022 年度小程序白皮书发布,8 亿 DAU 再现小程序繁荣生态

热门文章

  1. Kepware读取研华ADAM4017总结
  2. java 项目 预警_java开发中的常见代码黄线预警
  3. moxa uport1150串口驱动下载地址及安装方式
  4. 首届“全国人工智能大赛”正式启动,作为大赛支撑平台,和鲸科技助力年度顶级AI赛事
  5. 【sas】tabulate报表
  6. PageHelper 自定义总数查询方案
  7. 关于http与https的区别之处
  8. 计算机上在网络密码,电脑上怎么使用无线网络密码
  9. 树莓派无法连接远程计算机,如何从树莓派远程连接到Windows PC
  10. 解决OpenOffice文件预览转换xlsx文件出现com.sun.star.lang.IllegalArgumentException: URL seems to be an unsupported