[NAND Flash 4.1] Flash(闪存)存储器底层原理 | 闪存存储器重要参数

依公知及经验整理,原创保护,禁止转载。

专栏 《深入理解NAND Flash》

<<<< 返回总目录 <<<<

​全文 5000 字。
从底层物理原理上了解 Nand Flash。

1. 存储器诞生:

现代计算机使用存储器来存储数据,其中存储的是0和1。然后,通过ASCII码(美国信息交换标准代码)来将二进制数字翻译为人们日常生活中使用的信息。这些信息包括我们在计算机设备中常用的指令(如空格、回车等)、字母、数字和标点符号等。在1992年,Unicode(字符标准码)被发布,解决了ASCII码表达其他国家和地区语言的不足之处。通过不同排列组合的0和1,我们能够获取不同的信息并与人类进行交流。

为什么是二进制呢?
因为受限于当时甚至现在的技术,人们制造的场效应晶体管(FET)只有在区分关态和开态的时候,其灵敏度是最高的。如果我们在开和关之间引入其他的态,一般是用固定电压下的电流值来区分态,所以当外界环境比较恶劣时,容易引起电流不受控制的变大或变小(例如温度因素,半导体的本征载流子浓度严重依赖温度,温度较高时,本征载流子浓度迅速增大,电流会急剧升高,从而失去目的开关与放大作用,所以CPU等半导体器件运行,降温散热非常重要),从而致使计算机运行中对态的错误识别,态越多,其误码率也就越高。

一个完整的CPU应该包括控制单元,寄存器,ALU(算数逻辑单元),RAM(随机存取存储器)。当然这个RAM一般是独立存在的器件,通过数据线,地址线,读取线以及写入线连接CPU,这样的一个构造其实就可以运行很多计算机指令了,但是有一个问题就是,这个计算机只能在供电的情况下才能使用,断电后,就立马失去了运行的数据。那么为了解决这个问题,我们就发明了ROM(只读存储器),这种存储器可以将想要的CPU运行结果保留起来,即便是断电情况下,也可以长时间保存,比如你写的文档,下载的音乐、视频都可以长时间保存起来。这里存储器的一种分类方式就出来了,根据断电后数据能否长时间保存,我们将存储器分为易失性存储器和非易失性存储器。下面是我汇总的存储器基本分类思维导图。
​​在这里插入图片描述
Fig. 1 存储器基本分类

事实上, RAM和ROM的读操作几乎相同。更恰如其分地说有时把RAM称为读-写存储器。然而,人们一直开发ROM的重写能力。因此,现在RAM和ROM之间的主要差别在于擦除和可编程的频度和容易程度。RAM重写和读的机会总是相等的;而ROM的读的频率远大于重写。

这句话可能让大家对RAM以及ROM的认识更加清楚,由于RAM也是FET(场效应晶体管)构造,其读写能力是通过电刷新的,CPU中的控制单元会经常将指令存入RAM,从RAM中读取指令,所以其读写的频率基本相等。对于ROM,现在我们用的比较多的形式是NOR flash 和NAND flash,根据不同的场景,使用不同的存储器,Nor flash 多用于嵌入式系统;手机,PC,USB,一般是存放数据,这个数据我们的读取的次数一般比写入要多,但是写的频率还是比较高的,这里一般使用NAND flash,这个我们稍后将展示原因。

下文中存储器指的是 Flash 存储器

2. Flash原理:

NAND flash是在FET的基础上,增加一个浮柵上,通过将电子注入到浮栅上,实现编程。其基本构造如下:

在这里插入图片描述

Fig. 2 Flash 存储器基本单元

2.1 Flash理论

以上图为例,通过在n沟道FET栅极上偏置正(负)电压,在源漏沟道之间感应负(正)电荷,可以打开(关闭)源漏之间的电通道。这个打开源漏之间电流通道的电压叫做阈值电压 VT ,也就是沟道从平带到反型所需要的电压。那么在在栅极氧化层中再插入一个浮栅,当浮栅上充入电子时,此时由于电子的屏蔽作用,想要将n沟道FET打开,则需要更高的 VT 。我们把未注入电子时的 VT 叫做 VT1 ,把注入电子后的 VT 叫做 VT0 。试想一下,当我们用大于 VT1 小于 VT0 的电压 VT′ 去尝试开启FET,若这时电路被打开,则说明FET浮栅中未注入电子,若没有打开,则说明FET浮栅中注入了电子。我们知道在CPU逻辑电路中,开态表示‘1’,关态表示‘0’,沿用这个逻辑,浮栅上未注入电子,是开态,表示逻辑 ‘1’ ;浮栅上注入电子,是关态,表示逻辑‘0’。不要怀疑,这个和你的直觉的确相反,在这里,注入电子表示写入‘0’;擦除电子,表示写入了’1’。这种类型的存储器的原理概括成一句话就是,通过在浮栅上注入电子改变FET阈值电压 VT 来实现存储功能。

2.2 存储器两种编程方式

我们已经为存储器注入了灵魂,现在来铸造其肌肉,也就是如何实现注入、擦出电子的过程。注入电子主要有两种过程原理,一种是热电子注入,另外一种是F-N 隧穿(Fowler-Nordheim隧穿)。

NAND不能使用热电子注入的方式, NAND是F-N隧穿,NOR是热电子注入过程.

2.2.1 热电子注入

热电子注入就是在源漏之间加上一个电压,由于压降原理,在漏端附近电场强度达到最大值(因为源极一般接地),因此电子在电场作用中,在漏极附近能量最大,变成热电子,当其能量大于 Si/SiO2 界面势垒,电子就能越过势垒(经典力学),进入到浮栅,热电子在电场作用下,与晶格发生碰撞会形成二次电子,二次电子也能注入到浮栅上。为了让电子能够有效的注入到浮栅上,一般会在控制栅上加一个正偏压,形成三角形势垒(如下图),帮助电子注入到浮栅上,与此同时就会产生一个栅电流,有电流就会有功耗,这是一个弊端。

在这里插入图片描述

fig 3 热电子注入理论

2.2.2 F-N隧穿

另外一个方式就是F-N隧穿,根据量子力学理论,电子有几率可以隧穿比本身能量高的势垒。隧穿的几率严重依赖势垒的高度与宽度,在Flash中,这个势垒就是介电层,介电层一般是 SiO2 ,但是也有其他高介电常数的材料应用在存储器中。材料决定了,势垒高度就决定了,其厚度就变成唯一的参数,我们可以通过控制势垒的厚度来控制电子是否可以隧穿,起到开关的作用。

在这里插入图片描述

Fig. 4 量子隧穿

有了这样的理论,我们如何实现呢?好在控制栅可以帮助我们更改势垒厚度,还记得刘恩科《半导体物理学》中第八章MIS结构吗?控制栅加上电压,介电层能带会弯曲成为一个三角形势垒,这对电子来说,其势垒厚度就变窄了。所以我们可以通过控制栅来改变介电层势垒厚度,从而控制电子是否能够隧穿介电层进入浮栅。下图是示意图。左图表示控制栅加正偏压使得沟道电子隧穿底部介电层进入浮栅,完成编程‘0’(Program状态). 右图表示控制栅加负偏压使得浮栅电子隧穿底部介电层到沟道,完成编程‘1’(Erase状态)。

在这里插入图片描述

Fig. 5 F-N 隧穿机理

讲到这里,闪存存储器的底层原理就讲完了。总结一下,闪存存储器就是在FET的基础上,在介电层中增加一个浮栅,通过控制栅,改变电子注入到浮栅或是从浮栅上擦除,从而实现编程,注入电子表示编程写入‘0’,擦除电子表示编程写入‘1’。读取过程是通过在栅极偏置一个比未注入电子FET阈值电压稍高的电压,源漏之间通就是‘1’,断就是‘0’,刚好和写入对应。编程注入电子的过程分为两种,一种热电子注入,一种是F-N隧穿,但是擦除电子只有F-N隧穿。F-N隧穿中加在控制栅的电压很高远大于读取的电压,毕竟是要隧穿过去。这里讲的是浮栅器件,还有一种器件就是电荷俘获器件,对比与浮栅器件,这里的电子俘获层一般是氮化硅,电子主要俘获在氧化物-氮化物界面。打个比方,浮栅器件俘获的电子如水流一般,而电荷俘获器件如奶酪一般。其F-N隧穿是修正的F-N隧穿,首先隧穿一个很薄的梯形氧化层势垒,然后再是一个三角形氮化硅势垒。

3. 闪存存储器重要参数

基本介绍了一下闪存存储器的基本单元,再看看其中影响它的重要参数。一个存储器,我们看中什么?便宜,存储密度大,存储时间久,读写速度快,读写次数多。存储器小声BB:MMP,人类啊,什么都要好的,臣妾做不到啊。

便宜就不说了,需要采用低廉的材料,成熟的工艺(降低边际成本),而存储密度就需要先进的工艺技术。我们着重看看后面三个参数:

3.1 存储时间久

这个好理解,存储器无非存储的是‘1’和‘0’。‘1’还好说,就是浮栅上没有电子,前面说了想要注入电子,是需要很高的控制栅电压的,所以电子不会自发进入到浮栅上,从而消灭你的数据‘1’。麻烦的是数据‘0’,一旦电子注入到浮栅上后,即便我们不再对存储器进行擦除、写入过程,电子仍然会慢慢逃逸出去(浮栅上的电子化学势比较高),我们一般定义电荷量减小到初始值的50% 时,就称为数据丢失。这个时间可以用下面的公式得到:

ν : 介电弛豫频率,与材料本身性能有关,可理解为热平衡的时间的倒数

q :元电荷电荷量

ϕB :势垒高度

k :玻尔兹曼常数

T : 温度

从中可以看到势垒高度是最重要的参数,势垒高度由介电层的厚度决定。上面我们说的是存储器不再进行擦除与写入过程,这样电子逃逸时间大概是100年,也就是说,理论上,你将SSD写满数据后,然后再也不写入、擦除数据,这份数据可以放置100年。但实际上不太可能完全不擦除、写入。根据擦除、写入的频率,SSD的理论时间是10-30年不等,如果非常频繁,甚至3-5年就坏了。这是因为擦除、写入过程中浮栅下介电层里的化学键退化,导致介电作用减弱,数据保存的时间越来越短,直到最终不能使用。(以前认为擦除、写入过程会致使介电层变薄,最新研究指出并不会变薄,而是化学键退化,电子变得更加容易进出。)

3.2读写速度快

根据性能要求,我们当然希望存储器保存时间越久越好,那么就需要介电层厚度比较厚,但是厚了就有一个问题,编程时间会增加,因为势垒大了之后,隧穿电流会降低,因为编程是否成功是看浮栅上电荷的变化量,而一定数目电荷量是电流的时间积分,电流小了,时间自然就长了。所以为了平衡这两个关键参数,工业届会慢慢去优化介电层厚度,尽量去平衡这对欢乐冤家。下层介电层厚度一般在8 nm左右,上层厚度一般在14 nm左右。

3.3 读写次数多

最后一个参数就是编程次数,编程次数一定是和使用时间有关的,不谈时间的编程次数就是耍流氓。上面说了,每一次擦除、写入过程都会对介电层造成损耗,这是不可逆的。也就是说,擦写频率越高,寿命越短,擦写频率越低,寿命越长。我找了一篇论文,论文中的研究成果显示:若擦写次数在3000次以内,数据能够保存3年左右,若擦除次数在150000,那么数据就只能保存3天。当然并不是说擦写150000次后,就不能用了,你可以在3天之内,读取数据后,重新写入,就可以再用了,但是随着次数的增多,保存的时间会越来越短,看到没有,非易失存储器慢慢在向易失性存储器“进化”。为了解决这样的问题,目前只有从软件层面去解决,通过优化算法代码,降低存储器的擦写频率,从而提高寿命。

参考:

3D Nand基本原理 3D Nand基本原理-你想知道的全在这里(上) - 知乎

参考

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/228103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

插入排序----希尔排序

希尔排序 希尔排序法又称缩小增量法。希尔排序法的基本思想是&#xff1a;先选定一个整数&#xff0c;把待排序文件中所有记录分成个gap组&#xff0c;所有距离为的记录分在同一组内&#xff0c;并对每一组内的记录进行排序。然后&#xff0c;取&#xff0c;重复上述分组和排序…

QT:Unable to create a debugging engine.

debug跑不了&#xff1a; 报错&#xff1a;Unable to create a debugging engine. 参考&#xff1a; https://blog.csdn.net/u010906468/article/details/104716198 先检查是否安装了DEBUG插件 工具-》》选项 查看插件&#xff0c;如果没有的话&#xff0c;需要重新安装qt时…

加密的艺术:对称加密的奇妙之处(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

一些关于fMRI脑数据的预处理工具

一些关于fMRI脑数据的预处理工具 前言概述SPM12工具箱FSL工具箱FreeSurfer工具箱BrainNet Viewer工具箱circularGraph工具箱Nipype集成框架fMRIPrep集成框架参考文献 前言 March 25, 2022 这里是关于fMRI脑数据的预处理工具的相关调研 主要是关于数据的预处理&#xff0c;数据…

Windows环境提示“‘mysql‘ 不是内部或外部命令,也不是可运行的程序或批处文理件” 简易记录

在Windows环境下使用DOS命令窗登入MYSQL&#xff0c;提示“mysql 不是内部或外部命令&#xff0c;也不是可运行的程序或批处理文件。” 这意味着系统无法找到 mysql.exe可执行文件&#xff0c;这是因为 MySQL 没有正确安装或未添加到系统PATH环境变量中所致。 处理方法&#x…

分组背包问题笔记

分组背包是选不同的组&#xff0c;每个组中只能选一个物品。分组背包就是01背包的变种&#xff0c;多重背包就是特殊的分组背包。 //分组背包 #include<iostream> using namespace std; const int N 110; int f[N], v[N], w[N], n, m;int main() {ios::sync_with_stdio(…

ShardingSphereJDBC简单入门

ShardingSphere 介绍ShardingSphere-JDBCSharding-Sphere-ProxyShardingSphere-Sidecar混合架构运行模式DistSQL可拔插架构ShardingSphere的发展路线 主从复制ShardingSphere-JDBC功能SQL解析SQL支持程度SQL稳定支持SQL实验性支持 MySQL不支持SQL清单分页 数据分片垂直分片水平…

Python 爬虫开发完整环境部署,爬虫核心框架安装

Python 爬虫开发完整环境部署 前言&#xff1a; ​ 关于本篇笔记&#xff0c;参考书籍为 《Python 爬虫开发实战3 》 笔记做出来的一方原因是为了自己对 Python 爬虫加深认知&#xff0c;一方面也想为大家解决在爬虫技术区的一些问题&#xff0c;本篇文章所使用的环境为&#x…

关于Ubuntu22.04恢复误删文件的记录

挂载在Ubuntu22.04下的固态盘有文件被误删了&#xff0c;该固态盘是ntfs格式的。 在网上找了很多教程&#xff0c;最后决定用TestDisk工具进行恢复。 现记录如下&#xff1a; Ubuntu安装testdisk sudo apt-get install testdisk运行testdisk sudo testdisk得到 我选择的是…

英伟达 Jetson Xavier/Xavier NX/Orin系统移植编译

英伟达 Jetson Xavier/Xavier NX/Orin系统移植编译 1、下载Jetson BSP包和交叉编译环境 地址&#xff1a;https://developer.nvidia.com/embedded/jetson-linux-archive下载需要版本即可&#xff0c;此次编译采用32.4.2版本 需要下载的文件如下&#xff1a; 2、新建一个文件…

LeetCode(66)二叉树的最大深度【二叉树】【简单】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 二叉树的最大深度 1.题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7]…

Python类调用实例方法

在 Python 的类体中定义的方法默认都是实例方法&#xff0c;通过对象来调用实例方法。 但要提醒大家的是&#xff0c;Python 的类在很大程度上是一个命名空间&#xff0c;当程序在类体中定义变量、方法时&#xff0c;与前面介绍的定义变量、定义函数其实并没有太大的不同。对比…

解析神器Xpath详解+实战

解析神器Xpath详解实战 有同学说&#xff0c;我正则用的不好&#xff0c;处理HTML文档很累&#xff0c;有没有其他的方法&#xff1f; 有&#xff01;那就是XPath&#xff0c;我们可以先将 HTML文件 转换成 XML文档&#xff0c;然后用 XPath 查找 HTML 节点或元素。 目标&am…

【KMP】【判断是否是重复子字符串】Leetcode 459 重复的子字符串

【KMP】【判断是否是重复子字符串】Leetcode 459 重复的子字符串 解法1 拼接字符串-掐头去尾后判断是否含有原字符串解法2 KMP——重复子串的最小单位是这个字符串里的最长相等前后缀所不包含的子串解法3 暴力解法KMP ---------------&#x1f388;&#x1f388;题目链接&…

【C++11特性篇】一文助小白轻松理解 C++中的【左值&左值引用】【右值&右值引用】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; 目录 一.【左值&#xff06;左值引用】&…

C#中简单的继承和多态

今天我们来聊一聊继承&#xff0c;说实话今天也是我第一次接触。 继承的概念是什么呢&#xff1f;就是一个类可以继承另一个类的属性和方法&#xff08;成员&#xff09; 继承是面向对象编程中的一个非常重要的特性。 好了&#xff0c;废话不多说&#xff0c;下面切入正题&a…

微信小程序使用camera扫码获取相机权限

确保用户隐私指引已经明确使用相机功能 “mp-weixin”: "permission": {"scope.camera": {"desc": "需要使用相机功能&#xff0c;请授权"}}wx.authorize({scope: scope.camera,success(res) {console.log(res, 用户成功授权)// 用户…

C语言实现Hoare版快速排序(递归版)

Hoare版 快速排序是由Hoare发明的&#xff0c;所以我们先来讲创始人的想法。我们直接切入主题&#xff0c;Hoare版快速排序的思想是将一个值设定为key&#xff0c;这个值不一定是第一个&#xff0c;如果你选其它的值作为你的key&#xff0c;那么你的思路也就要转换一下&#xf…

巧妙的使用WPF中的资源

其实&#xff0c;在wpf中&#xff0c;最核心的就是xaml&#xff0c;因为只有xaml&#xff0c;才能体现出用的是wpf&#xff0c;而不是普通的cs文件&#xff0c;cs文件在winform中等等程序都可以使用的&#xff0c;唯独xaml才是wpf中最重要的&#xff0c;最精华的东西&#xff0…

gitlab ci pages

参考文章 gitlab pages是什么 一个可以利用gitlab的域名和项目部署自己静态网站的机制 开启 到gitlab的如下页面 通过gitlab.ci部署项目的静态网站 # build ruby 1/3: # stage: build # script: # - echo "ruby1"# build ruby 2/3: # stage: build …