博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NAND Flash基本原理
阅读量:5140 次
发布时间:2019-06-13

本文共 1787 字,大约阅读时间需要 5 分钟。

一.基本概念

Flash Memory中文名字叫闪存,是一种长寿命的非易失性(Non-volatile Memory Device,在断电情况下仍能保持所存储的数据信息)的存储器。闪存按功能特性可分为两种,一种是NOR Flash,以编码应用为主,其功能多与运算相关;另一种为NAND Flash,主要功能是存储资料,如固态硬盘中所用的颗粒。

二.存储结构

NAND Flash由block(中文称为“块”)构成,block的基本单元是page(中文成为“页”)。通常来说,每一个block由多个page组成。NAND Flash每一个page内包含Data area(数据存储区)。每一个page内包含有一个扩展的Spare area(备用区)。所以每一个page的大小为Data area+Spare area。

 

NAND Flash结构示意图

三.读取和写入

NAND Flash的读写以page为单位,在写入前(在这里称之为编程),需要先擦除,擦除以block为单位,这些操作都会减少器件的寿命。由于NAND Flash的这种特性,使得它在编程时带来了写放大的副作用,并且管理算法更复杂,例如需要垃圾回收算法。所以一般我们对NAND Flash编程的步骤是,先把其中的有效数据page搬移到内存或者其他block中,然后擦除这个block,再把有效数据和新数据写回去。这个过程造成了多余的写入和擦除,这就是所谓的写放大。

四.坏块管理

Bad block(中文成为坏块)指的是这个器件中一些不能正常工作的block,有的是出厂的时候就存在了,有的是使用寿命到了从好块转变而来的,成为新增坏块。由于工艺和成本的限制,标准规范中出厂时器件是允许存在bad block的,只要它的容量小于总容量的2%就是允许的,这些被称之为原始坏块。这些原始坏块会被厂商检测出来并且做好标记,坏块数量符合标准的便可以当作good die出售,不符合标准的被标上标记,称之为ink die。ink die一般不太稳定,一般被买去做低端的产品,如山寨U盘。NAND Flash使用前,会进行全盘扫描,把坏块检测出来生成一张表,称之为坏块表,用于记录原始坏块,后续可以用来记录新增坏块。

五.使用寿命

NAND flash的每一次读写擦都会对减少自身的寿命。为了提高容量降低成本,NAND Flash从最初的SLC,向MLC,TLC还有QLC演变,单元存储密度从1bit,向2bit,3bit和nbit递增,但是擦写次数却不断递减,从100000次,向5000和1000次递减。如果一个block寿命到了,写入这个block的数据就会出现无法处理的bit反转,这个block就不能再被使用了,需要管理算法使用保留的好块去把这个新增坏块替换下来,如果保留的好块使用完了,那么就不能再往里面写入数据了。所以管理算法需要具有平衡磨损模块,用于记录每个block的擦写次数,尽量保证每个block的擦写次数基本持平,从而提高整个器件的使用寿命。顺便说一下,当一个器件被使用了很久以后,清空平衡磨损表重新建立,每个block的磨损寿命信息就已经丢失,这时候再使用这个器件就非常危险,因为可能某个block的磨损度已经很高了,但是却没有被记录下来,这个block会突然出现无法处理的数据出错。

六.产品与量产

NAND Flash一般不单独使用,需要和专用控制器搭配组成一个系统。目前常见的使用NAND Flash的产品主要有固态硬盘(SSD),eMMC,SD记忆卡,U盘等。其中SSD和eMMC稳定性和性能要求比较高,一般需要使用品质优良的NAND Flash。以SSD来说明生产过程,其他产品流程类似。首先是量产,接着是检测,合格后便可以作为正式产品出售。量产:①检测NAND Flash和主控型号,找出对应的固件包和配置信息。②加载代码到主控,启动扫描flash流程。扫描完成后读回坏块表。③根据配置生成参数,和固件数据一起按照主控要求写入NAND flash中。④启动固件,并做基本的量产参数检测,量产完成。检测:①读取设备固件数据信息。②把固件数据和设置的做匹配。

 

转载于:https://www.cnblogs.com/flashapplication/p/NandFlashBase.html

你可能感兴趣的文章
Linux Linux程序练习十七
查看>>
数据库关系运算
查看>>
JavaSE基础之 IO流
查看>>
DDoS攻防战 (一) : 概述
查看>>
根据现有PDF模板填充信息(SpringBoot)
查看>>
div+css布局的好处
查看>>
《需求工程——软件建模与分析》阅读笔记一
查看>>
如何成为一枚好测试员
查看>>
【Nowcoder】玩游戏
查看>>
过滤器(Filter)
查看>>
字符串的操作
查看>>
性能优化之Java(Android)代码优化
查看>>
springMVC相关—文件上传
查看>>
由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想
查看>>
uva 1416 Warfare And Logistics
查看>>
欲则不达
查看>>
盒子游戏
查看>>
OpenJudgeP1.10.08:病人排队__(刷题)_水题
查看>>
观察者模式
查看>>
Hadoop分布式文件系统中架构和设计要点汇总
查看>>