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

news2024/9/22 11:37:34

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。

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

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

相关文章

Python find()函数使用详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 find 1、指定检索位置2、参数为负数3、超出范围3、find()和index()的区别&#x…

【Docker】Docker安装MySQL

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;目前专攻C/C、Python、Java等方向&#xff0c;一个正在慢慢前行的普通人。 &#x1f3c0;系列专栏&#xff1a;陈童学的日记 &#x1f4a1;其他专栏&#xff1a;CSTL、蓝桥杯&am…

Win11系统如何安装Oracle数据库(超级详细)

前言&#xff1a;在我们安装Oracle之前我们得理解Oracle数据库的优点是什么&#xff1a; Oracle是一个功能强大、可扩展和全面的数据库平台&#xff0c;具有广泛的功能和企业级能力&#xff0c;适用于处理复杂的企业级应用和大型数据集。 目录 一.下载Oracle数据库软件&…

解决idea只能通过 idea.bat打开的问题

解决&#xff1a;C盘用户下面 有idea的配置文件 &#xff0c;找到idea64.exe.vmoptions 把 -jetbrain &#xff1a; 配置的 jar路径删除

Tablet vs. eReader: Which Is Better for Ebooks? 平板电脑与电子阅读器:哪个更适合电子书?

eReaders are best if all you want to do is have something as close to a paper book as possible. However, if you need anything more than that, a tablet makes more sense as a general-purpose device that can also read ebooks. 如果您只想拥有尽可能接近纸质书的东…

认识文件操作与IO

文章目录 认识文件文件夹文件路径文件分类 文件操作File类构造方法常用方法 字节流IOInputStream常用方法 FileInputStream构造方法FileInputStream实例 OutputStream方法 FileOutputStream 字符流IO 认识文件 我们平时所说的文件指的是存在硬盘上的文件&#xff0c;我们平时的…

Openlayers实战:回显多点、多线段、多多边形

Openlayers地图中,回显数据是非常重要的。 继上一示例回显点、线、圆形、多边形后。本示例回显多线,多点,多个多边形。用到了MultiPoint,MultiLineString,MultiPolygon。 多个信息的显示可以采用循环的方式,单个显示点、线、面。 但是循环方式是要多次计算的,而MultiPoint…

GUI (java)

GUI 一.GUI概念二.Swing概述三.容器组件四.常用容器1.窗体(1) JFrame类的构造方法(2) JFrame类的常用方法 2.面板(1)JPanel类的构造方法(2)JPanel类的常用方法 五.布局管理器1. FlowLayout 流式布局(1)FlowLayout构造方法 2.BorderLayout 边界布局3.GridLayout 网格布局 六.常用…

LangChain: 大语言模型的新篇章

本文介绍了LangChain框架&#xff0c;它能够将大型语言模型与其他计算或知识来源相结合&#xff0c;从而实现功能更加强大的应用。接着&#xff0c;对LangChain的关键概念进行了详细说明&#xff0c;并基于该框架进行了一些案例尝试&#xff0c;旨在帮助读者更轻松地理解LangCh…

Mycat【Mycat高级特性_搭建双主双从、Mycat分片技术_垂直拆分-分库 】(四)-全面详解(学习总结---从入门到深化)

目录 Mycat高级特性_搭建双主双从 Mycat分片技术_垂直拆分-分库 Mycat高级特性_搭建双主双从 环境准备 创建docker容器 #启动第一台 docker run -d -p 3350:3306 -e MYSQL_ROOT_PASSWORD123456 --namemaster1 mysql:5.7#启动第二台 docker run -d -p 3360:3306 -e MYSQL_R…

Qt自定义控件之动画文本

文章目录 前言一、动画文本的效果二、具体实现定义动画对象设置动画时长的实现设置text函数实现绘制代码设置字体函数 三、高级部分操作代码总结 前言 在 Qt 中&#xff0c;自定义控件可以让我们实现丰富的用户界面效果和交互体验。其中&#xff0c;动画文本是一种常见的效果&…

电路分析基础学习(上)第4章

李瀚荪版电分第二版 ----------------------------------------------------------------------------------------------------------------------------- 求单口网络的VCR 两大基本方法&#xff1a; 1.外接电流源求电压&#xff1b; 2.外接电压源求电流&#xff1b; ---…

Netty序列化算法参数调优

目录 一、扩展序列化算法 1、Java 2、Json 二、参数调优 1、CONNECT_TIMEOUT_MILLIS 2、SO_BACKLOG 3、ulimit-n 4、TCP_NODELAY 5、SO_SNDBUF & SO_RCVBUF 6、ALLOCATOR 7、RCVBUF_ALLOCATOR 一、扩展序列化算法 1、Java 我们先写Java中jdk的序列方式&#x…

RabbitMQ系列(28)--RabbitMQ使用Federation Queue(联邦队列)解决异地访问延迟问题

前言&#xff1a; 联邦队列可以在多个Broker节点(或者集群)之间为单个队列提供均衡负载的功能。一个联邦队列可以连接一个或者多个上游队列(upstream queue)&#xff0c;并从这些上游队列中获取消息以满足本地消费者消费消息的需求。 1、Federation Queue工作原理图 2、添加策…

Oracle19c默认用户名system密码不正确不能登录问题解决

Oracle19c默认用户名system密码不正确不能登录问题解决 1、oracle 命令乱码问题 oracle乱码问题一般是由于oracle字符集设置和操作系统字符集设置不一致造成的。 查看oracle字符集方式如下&#xff1a; 1.进入sqlplus 命令&#xff1a; sqlplus /nolog2.以系统管理员身份连…

【Git原理与使用】-- 企业级开发模型

目录 引入 系统开发环境 Git 分支设计规范 master 分支 release 分支 develop 分支 feature 分支 hotfix 分支 开发场景 - 基于git flow模型的实践 DevOps研发平台 修复测试环境 Bug 修改预发布环境 Bug 修改正式环境 Bug 紧急修复正式环境 Bug 拓展实践 都说&a…

java的RSA加密解密示例

RSA算法是一种非对称加密算法&#xff0c;公钥和私钥都可以用于加密和解密操作。在RSA算法中&#xff0c;公钥用于加密数据&#xff0c;私钥用于解密数据。 具体来说&#xff0c;使用公钥加密的数据只能使用相应的私钥进行解密。而使用私钥加密的数据则可以使用相应的公钥进行…

【云原生|云计算系列】云计算基础概念

欢迎来到云原生专题的云计算系列第一篇博客&#xff0c;我们将探索云计算的基础知识&#xff0c;以帮助您深入了解这个迅速发展的领域。在前一篇博客中&#xff0c;我们介绍了云原生的概念和重要性&#xff0c;强调了它作为云计算的核心理念和实践的关键角色。本篇博客将进一步…

基于单片机智能水杯 保温杯 定时提醒喝水 温度控制的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;LCD1602液晶显示当前水温&#xff0c;定时提醒&#xff0c;水量变化DS18B20检测当前水体温度&#xff1b;水位传感器检测当前水位&#xff1b;继电器驱动加热片进行水温加热&#xff1b;定时提醒喝水&#xff0c;蜂鸣器报警&#x…

Vue + Volo.Abp 实现OAuth2.0客户端授权模式认证

文章目录 注册ClientOAuth2.0授权创建vue-oidc-client创建OAuth2.0认证跳转获取令牌创建回调页面创建退出登录 最终效果 Volo.Abp的 身份服务器模块默认使用 IdentityServer4实现身份认证。 IdentityServer4是一个开源的OpenID Connect和OAuth 2.0框架&#xff0c;它实现了这…