Nand Flash 通过调整阈值的Retry方法简单描述
最近想到了一个如何更加简单的理解Nand Flash做Retry原理的方法,在这里记录分享一下
这里为了表述简单,假设一个Nand Flash,它非常非常的小,小到只有8个SLC Cell,本身Retry原理跟Block、Page、WL关系不是很大,所以就假设他们都不存在好了。这个Flash他就只有8个SLC Cell,所以他可以存储的数据量为8 bit
这个Cell也比较特别,在打入电子的时候,我们不用准确的电压值来做记录,而是用一个V1,V2来代表该Cell的电压。
如上图所示,该Flash的每个Cell只能存在V0到V7共8种电压状态,当读取数据时,根据该Cell的电压在P值的左边还是右边,判定读出的值分别为1和0。
下面开始模拟编程过程,设定我们要写入的原始数据为0x55,他的二进制是0101 0101 b,首先写入bit 0 数据为1,那么这时候Nand Flash 把Cell 0猛地打入电子,同时使其电压尽可能处于P值的左边,最后Cell0的电压落在了V1。
上图表示这时候落在V1的Cell 数量有1个,用对应的颜色在图上表示对应Cell的电压值,个数的意思是这个Flash当中,处于对应电压的Cell有多少个。
后面7个Cell就不一一展示了,假设他们在写完之后呈现出这样的一个状态
大概解释一下就是处于V2电压的Cell有bit 2和bit 4,处于V6电压的Cell有bit 3和bit 5.
这时候,我们通过P阈值来读取数据,就能正确的读出原本写入的0x55,通常情况下这个图会被画成折线图我们现在把他连起来,得到下面这个样子
这个图就是阈值分布图,可以看到在阈值P的地方两个波交叉较少,在正常的Flash当中这时候用ECC就能纠错,不过在这个特殊的Flash当中还没有数据出错。
存好数据之后,这个特殊的Flash可能会被高温,低温,ReadDisturb等等等等各种环境摧残,最终他的有一个Cell的电压发生变化了。变成了下图这种状态
如上图所示,bit 6的电压从V3跳到了V4,这时候我们再继续用阈值P来读数据,实际上读出来的是0001 0101b,即0x15,画出阈值分布曲线之后是这个形态
可以看到两个波峰交叉的地方升高了。所以这时候如果想要数据能够正确的读取出来,要将阈值P进行偏移
将阈值偏移到P0进行数据读取时,bit 6又可以读出数据是1,变回正确数据,这就是Retry时做阈值偏移的基本原理。上面画的阈值分布图实际上是针对不知道原始数据的时候画出来的,所以看不出真实的Cell变化。不过此时我们是知道原始数据为0x55的,所以知道是哪一个bit发生的变化,因此可以画出更详细的阈值分布图:
上图红线表示原始数据为1的Cell,绿色为原始数据为0的Cell。
以上就是Retry基本原理以及阈值分布图的画法解析。
Nand Flash 通过调整阈值的Retry方法简单描述相关推荐
- Linux MTD架构下的nand flash驱动详解
转载自:http://blog.csdn.net/wang_zheng_kai/article/details/18988521 有了前面的基础(Nandflash详解:https://blog.cs ...
- 如何编写linux下nand flash驱动
http://www.cnblogs.com/sankye/articles/1638852.html 向作者Sankye致敬 [编写驱动之前要了解的知识] 1. 硬件特性: [Flash ...
- nand flash驱动编写步骤
分配一个nand_chip结构体:这个结构体中包含了关于NAND Flash的地址信息.读写方法.ECC模式.硬件控制等一些底层机制.就是与NANDcontroller相关的东西. 设置nand_ch ...
- 用JLINK烧写U-boot到Nand Flash中
很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor ...
- jlink烧写linux内核,如何利用JLINK烧写U-boot到NAND Flash中
很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor ...
- JLINK烧写U-boot到NAND Flash中
http://www.linuxidc.com/Linux/2 很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash ...
- Nand Flash管理算法介绍之FTL简介
和传统磁盘相比,Nand Flash存储设备存储延迟低.功耗低.更高的存储密度.抗震型号更好和噪声低.但是,由于Nand Flash的特性影响(读写擦的单位不一致,每个块有P/E次数限制),Nand ...
- MTD 设备驱动 和 NAND Flash 驱动程序分析。
硬件环境: 飞凌OK6410,256MB DDR,2GB NAND Flash. NAND Flash 型号:K9G8G08U9A . 分析源码:Linux 2.6.36.2 内核源码 ...
- NAND FLASH学习笔记之MTD下nand flash驱动(二)
在这里补充这一片是为了更好的理解上一篇,补充的内容包括:MTD下NAND的布局中几个重要文件的诠释和MTD涉及的几个重要的结构体(更好的理解接口) 一.内核中的NAND代码布局 在Linux 内核中, ...
最新文章
- 计算机应用a级考试,四川省职称计算机应用能力考试A级模拟题
- VC:CString用法整理(转载)
- 怎么将html字符串转换成标签并展示,将字符串转为html标签-续
- Win10 Anaconda下TensorFlow-GPU环境搭建详细教程(包含CUDA+cuDNN安装过程)(转载)...
- Agisoft PhotoScan Professional软件处理无人机航拍照片基本流程
- android 8 esp8266,微信硬件平台(八) 1 esp8266从自己的服务器获取token
- jsp mysql做登入界面_用jsp实现网站登录界面的制作,并连接数据库
- 鸿蒙微内核游戏,华为鸿蒙微内核
- 担心再次被起诉?马斯克已删除特斯拉可能几个月内成为最大公司推文
- Backbone入门教程
- mysql查询与索引优化2
- 学51单片机需要专门把C语言学透吗
- 【云安全课程】云平台使用安全
- 项目管理办公室(PMO) 的不同定位
- GitHub 中超过3.5万开源代码被投毒
- 名帖330 王羲之 行草《平安帖》《何如帖》《奉橘帖》
- 内核I2C子系统详解
- ASP.NET 在vs中使用Calendar控件 制作一个日历 并标注节假日
- 面向未来,我们来聊一聊什么是现代化数据架构
- 2022 年,阿里内推 Java 后端面试题,文末附面试福利