第三章 SSD存储介质:闪存 3.1

3.1 闪存物理结构

        闪存芯片从小到大依此是由:cell(单元)、page(页)、block(块)、plane(平面)、die(核心)、NAND flash(闪存芯片)组成的

        一个闪存页的大小主要有4KB、8KB、16KB几种。

3.1.1 闪存器件原理

  1. 闪存的特性        

(1)闪存是非易失性存储器,即掉电之后数据不会丢失;

(2)闪存块(Block)需先擦除才能写入,不能覆盖写(Update in Place);

(3)闪存块(Block)具有一定的寿命。每擦除一次闪存块,都会对闪存块造成磨损,擦除到达一定次数后,闪存块要么变成坏块,要么这块闪存块上的数据变得不可靠;

(4)闪存块读的次数是有限的。读的次数多了,会造成读干扰问题;

(5)闪存天生有坏块。同时,随着SSD、的使用,会产生新的坏块。

2. 闪存基本存储单元Cell

         闪存的物理结构 - 爱码网

        Cell:闪存基本存储单元,是闪存的 最小工作单位 ,执行数据存储的任务;它是一种类NMOS的 双层浮栅(Floating Gate)MOS管 

        闪存由源极(Source)、漏极(Drain)、浮动栅极(Floating Gate)、控制栅极(Control Gate)组成,是双栅极结构。

         

 

 

        闪存是非易失性存储器的原因:MOS管在源极(Source)和漏极(Drain)之间电流单向传导的半导体上形成了存储电子的浮栅,浮栅上下被绝缘层包围,存储在里面的电子不会因掉电而消失。因此,闪存是非易失性存储器。

        

        写操作是在 控制栅极 加正电压(Vpp),使电子(带负电)通过 绝缘层进入浮栅层 ;值得注意的是,该操作执行完之后,该闪存单元存储的是0!!即,此时,读取状态为0。

        擦除操作是在 源极 加正电压(Vpp),利用浮栅极和漏极之间的隧道效应,把电子 从浮栅层吸引  到源极,排空浮动栅极的电子。此时,读取状态为1

        问:为什么浮栅极没有电子的时候是1,有电子是0呢????

        答:闪存的工作原理_闪存原理_liukuan73的博客-CSDN博客

 3.1.2 SLC、MLC和TLC

        DIE,也称LUN,是接收和执行闪存命令的基本单元。

        闪存根据 每个单元内可存储的数据量 分成 SLC(1bit/Cell)MLC(2bit/Cell)TLC(3bit/Cell) QLC(4bit/Cell),成本依次降低,容量依次增大(同样面积的DIE上),耐用度也依次降低。

        SLC:一个存储单元存储1bit数据的闪存。

        同样面积的一个存储单元,SLC、MLC、TLC分别可以存储1bit、2bit、3bit的数据,所以在同样面积的DIE上,闪存容量依次变大

        同时,一个存储单元电子划分越多,读、写、擦所要耗费的时间就越长。故而,性能上SLC>MLC>TLC

3.1.3 闪存芯片架构

        下图是一个闪存块Block的组织架构。一个Wordline(字线)对应着一个或若干个Page。一个Page有多大,那么Wordline上面就有多少个存储单元,就有多少个Bitline(位线)。一个Block当中所有的存储单元(Cell)共用一个衬底。

        Wordline(WL)是字线,其控制读取和写入,故而Page是最小的读写单位。

        Bitline(BL)是位线。

        Wordline是将一定数量(2的n次方)的存储单元的控制栅极连接起来。当Wordline上为H时,存储单元打开,此时Bitline上就可以读或者写数据到存储单元了。

        如下图,NAND 一个plane内部MOS阵列,MOS管的漏极BL=bit line,控制栅极 WL=word line,源极都连在一起,WL连接了若干个page,通过WL加不同电压和不同时间长度进行各种操作,在BL端进行读的操作。Bit Line对应的一串MOS叫做string,Block的高度一般是一个string,但是很宽,很多个WL。

一文详解闪存flash读写的原理 - 存储技术 - 电子发烧友网 (elecfans.com) 

         上图中,Control Gate相当于MOS管的G极(控制栅极),Floating Gate是浮栅层。

 

         DIE/LUN是接收和执行闪存命令的基本单元。但在一个LUN中,一次只能独立执行一个命令,不能对其中一个page进行写操作的同时,又对另一个page进行读操作。

       闪存块Block是最小的擦除单位原因:一个闪存块Block中的的所有存储单元是共用一个衬底(Substrate)的。如果对某个衬底加电压,那么所有浮栅层的电子都会被吸出来。

        一个DIE可以分为若干个Plane,每个Plane有独立的Cache Register(高速缓冲寄存器)和Page Register(页寄存器),其大小等于一个Page的大小。

        固态硬盘在写某个Page的时候,先把数据从主控传输到该Page所对应Plane的Cache Register中,再把整个Cache Register中的数据写到闪存阵列;读则相反,即闪存介质-->Cache Register-->主控。    注意:无论是从闪存介质读取数据到Cache Register,或是从Cache Register写数据到闪存介质,都是以Page为单位!!!

 3.1.4 读、写、擦原理

一文详解闪存flash读写的原理 - 存储技术 - 电子发烧友网

        如果浮动栅极Floating Gate中没有电子(即没有执行过写操作或执行过擦除操作),那么通过阈值电压可以控制电流的通断:

(1)当控制栅极上的电压 > 阈值电压VT时,此时没有电流,相当于开关断开,对应状态为0;

(2)当控制栅极上的电压 < 阈值电压VT时,此时有电流,相当于开关合上,对应状态为1。

1. 读

        当要读某个Page时:

      (1)将该Page的Wordline(即同一个Page中所有Cell上的控制栅极CG端的导线)电势置为0(即不加电压);

      (2)其他所有Page的Wordline电势升到一个值,这个电压又不至于把浮栅极Floating Gate中的电子吸出来。

        之所以抬高电势,是为了让其他Page所有的Cell的源极和漏极处于导通状态;没加电压(要读取的Page上)的那些Cell,其源极和漏极的通断,完全取决于其浮栅极中是否存在电子:

              1)若存在电子(即该Page已执行过写操作),处于断开状态,读到0;

              2)若不存在电子(即该Page没有执行过写操作),处于导通状态,读到1。

        总结:对要读的Page加低电压使电流断开,看Floating Gate中是否有电子,有电子为0, 否则为1。

2. 写

        执行写操作是对浮栅极充电子,也称为program。

        写之前需先执行擦除操作,擦除之后,数据变成了1。所以,需要对写入0的浮栅极进行充电。

         当写入某个Cell时:

        (1)将选中Page的Wordline加高压,对应Bitline不加高压;

        (2)对Page里其他Cell的Bitline加正常电压,保持电流导通;

        (3)将其他Page的Wordline加正常电压,保持导通。

         不需要写入数据的Cell的Wordline和Bitline电压抵消,电子不动;需要写入数据(选中)的Cell,由于电势差,将电子从Bitline吸到浮栅极中进行充电。

      上面仅是示例,读写的基本单位都是Page。实际上无法对某个Cell进行写入,因为无法对同一个Page里的不同Cell既充电又放电。

   

3. 擦除

        擦除动作,就是将一大片连续的Cell全部放电。实际操作是在衬底加电压足够长时间,把电子从浮栅极中吸出来。

        擦除是以Block为基本单位,因为一个Block共用一个衬底,所以一次只能擦除一个或多个Block。擦除之后,整个Block的数据都为1。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C/C++指针从0到99(详解)

目录 一&#xff0c;指针的基础理解 二&#xff0c;指针的基本使用 三&#xff0c;为什么要用指针 四&#xff0c;指针与数组的联系 五&#xff0c;指针的拓展使用 1&#xff09;指针数组 2)数组指针 3&#xff09;函数指针 结构&#xff1a;返回类型 &#xff08;*p)…

算法的时间复杂度

算法的时间复杂度 什么是时间复杂度 时间复杂度是衡量算法执行时间随输入规模增长而增长的度量标准。它描述了算法运行时间与问题规模之间的关系&#xff0c;用于评估算法的效率和性能。 通常情况下&#xff0c;时间复杂度表示为大O符号&#xff08;O&#xff09;&#xff0…

K8S调度管理

调度管理 1.1 调度框架1.1.1 调度体系1.1.2 资源调度 1.2 资源调度1.2.1 节点调度1.2.2 节点亲和1.2.3 Pod亲和1.2.4 Pod反亲和1.2.5 污点&容忍度1.2.6 污点实践 1.3 流量调度1.3.1 Ingress基础1.3.2 Ingress实践1.3.3 Ingress进阶1.3.4 Ingress认证1.3.5 Ingress扩展 1.1 …

mac与pd虚拟机之间不能粘贴文字或粘贴文件

首先确保共享打开&#xff1a; 然后检查虚拟机的Parallels Tools是否正常 一个简单的判断方式就是&#xff0c;退出虚拟机全屏之后&#xff0c;如果能够正常进入融合模式&#xff0c;那么Parallels Tools可用&#xff0c;否则就要排查问题 检查Parallels Tools是否随系统正常启…

SELF-ATTENTION DOES NOT NEED O(n2) MEMORY

背景 主要是要解决self-attention空间复杂度的问题&#xff0c;因为对于gpu计算来说&#xff0c;内存空间非常宝贵&#xff0c;序列长度较长的时候会出现oom问题。 用线性时间解决self-attention问题 解决数据稳定问题 因为由于进行求和计算&#xff0c;容易导致浮点数超过最…

Redis【实战篇】---- 分布式锁

Redis【实战篇】---- 分布式锁 1. 基本原理和实现方式对比2. Redis分布式锁的实现核心思路3. 实现分布式锁版本一4. Redis分布式锁误删情况说明5. 解决Redis分布式锁误删问题6. 分布式锁的原子性问题7. Lua脚本解决多条命令原子性问题8. 利用Java代码调试Lua脚本改造分布式锁 1…

AIGC - Stable Diffusion WebUI 图像生成工具的环境配置

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131528224 Stable Diffusion WebUI 是一款基于深度学习的图像生成工具&#xff0c;根据用户的输入文本或图像&#xff0c;生成高质量的新图像&…

【Docker 部署Minio】

Docker 部署Minio 一、拉取Minio镜像二、配置1、创建如下目录2、创建容器并运行 三、访问 一、拉取Minio镜像 访问Docker Hub镜像站找到自己需要的Minio镜像 运行以下命令 sudo docker pull minio/minio二、配置 1、创建如下目录 mkdir -p /home/zx/minio/config mkdir -p…

k8s概念介绍

目录 一 整体架构和组件基本概念 1.1 组件 1.1.1 master节点 1.1.2 node节点 1.1.3 附加组件 二 资源和对象 2.1 资源分类 2.2 元数据资源 Horizontal Pod Autoscaler&#xff08;HPA&#xff09; PodTemplate LimitRange 2.3 集群资源 namespace Node ClusterRo…

Linux下GO IDE安装和配置(附快捷键)

目前&#xff0c;GoLand、VSCode 这些 IDE 都很优秀&#xff0c;但它们都是 Windows 系统下的 IDE。在 Linux 系统下我们可以选择将 Vim 配置成 Go IDE。熟练 Vim IDE 操作之后&#xff0c;开发效率不输 GoLand 和 VSCode。有多种方法可以配置一个 Vim IDE&#xff0c;这里我选…

华为、阿里巴巴、字节跳动 100+ Python 面试问题总结(二)

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python面试专栏&#xff1a;《Python面试》此专栏面向准备面试的2024届毕业生。欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; …

【5G PHY】5G控制资源集CORESET介绍

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

SpringBoot(六)SpringBoot项目部署到腾讯云服务器

这篇文章&#xff0c;可以说是干货满满。关注我的同学应该直到&#xff0c;之前我有几篇SpringBoot的文章&#xff0c;介绍了如何搭建本地服务器&#xff08;没看过的同学可以系统地看下我的SpringBoot专栏&#xff0c;保证你会有很多的收获&#xff09;。但我们那都是在本地玩…

Qt(Day2)

实现登录框中&#xff0c;当登录成功时&#xff0c;关闭登录界面&#xff0c;并跳转到其他界面&#xff1a;

前端面试题-HTML、HTTP、web综合问题(三)

26 你做的⻚⾯在哪些流览器测试过&#xff1f;这些浏览器的内核分别是什么? IE : trident 内核Firefox &#xff1a; gecko 内核Safari : webkit 内核Opera :以前是 presto 内核&#xff0c; Opera 现已改⽤Google - Chrome 的 Blink 内核Chrome:Blink (基于 webkit &#xf…

服务器搭建oracle,并远程连接教程

下载两个压缩包&#xff0c;然后上传到服务器&#xff0c; 软件安装09&#xff1a;CentOS安装Oracle - 虚拟机 - 5997CK - 欢迎您! (hezhilin.online) 这里有全部步骤&#xff0c;反正过了几天我也会忘记&#xff0c;不赘述了。 直接上拆的坑&#xff1a; 开启服务器端口后…

【数据结构】24王道考研笔记——串

四、串 串的定义 串&#xff08;字符串&#xff09;是由零个或多个字符组成的有限序列。 子串&#xff1a;串中任意个连续的字符组成的子序列主串&#xff1a;包含子串的串字符在主串中的位置&#xff1a;字符在串中的序号子串在主串中的位置&#xff1a;子串的第一个字符在…

【Spring】项目创建和使用

一、Spring 的概念 Spring : 包含众多工具方法的 IoC 容器。 Spring 的核心 &#xff1a;IoC &#xff08;控制反转&#xff09;&#xff0c; DI (依赖注入)。 loC &#xff08;Inversion of Control&#xff09;翻译成中文就是 “控制反转” 的意思&#xff0c;控制反转一种…

python代码练习:石头剪刀布猜拳游戏

python代码练习&#xff1a;石头剪刀布猜拳游戏 题目结果展示源代码 题目 使用Python实现人机石头剪刀布猜拳小游戏&#xff0c;并且最后能够统计分数和局数 结果展示 源代码 # -*- coding: utf-8 -*- # Course : python 基础 # Time : 2023/7/2 14:21 # Author : Eden Wei …

vue筛选框封装

点击对默认查询条件之外的条件进行 增加或删除 在使用的组件或标签加入:filtrateList"filtrateList"传入条件查询数组 当前demo写在xk-page中,就以xk-page组件为例 <xk-upage :filtrateList"filtrateList" :queryArr"queryArr"></xk-…