SSD基本工作原理了解

news2024/11/26 1:45:35

SSD与RAM的原理有些类似,RAM使用晶体管和电容来表示0或1,晶体管用于将电荷转移到电容器或从电容器中吸取电荷,并且电荷必须每几微秒刷新一次。

而SSD相比于RAM的非易失性来自于其使用的浮栅晶体管。其创造了一个小笼子,不需要外界的电容来保持充电,并通过鼓励电子通过量子隧穿效应来进出笼子。

储存介质

NOR

使用晶体管最简单的方法是将每一行和每一列连接在一起,以便读取每个单独的位。这种特殊的布局在NOR flash中使用。连接每一行的电路称为“word line”,而连接每一列的电路称为“bit line”。读取操作在这种情况下非常简单:对每个word line施加一个电压,bit line将根据每个单元格存储的是0还是1来显示电压(或不显示)。

为了更详细地理解它是如何工作的,我们必须首先了解浮栅晶体管。一个普通的晶体管有三种连接方式,根据所用技术的不同分别命名为gate、drain和source

当电压加到gate时,电流就可以从source流向drain。当在栅极上施加低电压时,从source流向drain的电压与栅极电压成比例变化(因此,低栅极电压导致source流向drain的低电流,高电压导致高电流)。当栅极电压足够高时,比例响应停止。这使得晶体管既可以用作放大器(应用于门极的小信号会在source极产生成比例的大信号),也可以用作开关(仅在门极使用高电压或零电压,source极和drain之间要么有大电流,要么没有电流)。

浮动栅极位于栅极和晶体管的其余部分之间,它在一个重要的方面改变了栅极的行为。所述晶体管的浮栅部分中包含的电荷改变所述晶体管的电压阈值。当栅极电压高于某个值(称为Vread)时,通常在0.5 V左右,开关将始终闭合。当栅极电压低于这个值时,开关的开度由浮动栅极决定。

如果浮栅没有电荷,那么在栅上施加一个低电压仍然可以关闭开关,并允许电流从source流向drain。如果浮栅确实储存一个电荷,那么完整的Vread电压需要被施加到栅极以使电流流动。也就是说,无论浮栅是否包含电荷,晶体管的栅极必须施加多少电压才能导通或不导通。

在cell的网格中,word line与晶体管的gate相连接。bit line与drain相连。source连接到第三组线,称为source line。与bit line一样,同一列中的所有晶体管的source都连接在一起。

我们可以通过在门上施加低电压来读取单元的内容,看看是否有电流流过。具体来说,所述单元所连接的word line被通电到Vread以下的某个电压。当且仅当电池的浮栅不含电荷(a 1)时,电流将流过电池source line到其连接的bit line。如果浮栅含电荷(a 0),则整个电池的电压阈值过高,小电压无法克服。然后检查连接到该cell的bit line的电流。如果它有电流,则将其视为逻辑1;如果没有,则为逻辑0。

这种晶体管的排列方式在NOR flash中使用。它被命名为NOR的原因是它类似于字行上的逻辑NOR- low电流,与浮栅中的电荷无关。如果你应用Vread,浮栅没有电荷,那么位线显示电荷(0或0 = 1),而浮栅不会传导低读电流,如果它包含电荷(0或1 = 0)。

NOR虽然设计概念简单,但芯片本身相当复杂,因为NOR闪存要占用大量的word line和bit line连接——每个晶体管都必须有这些连接,这导致了大量的连接。实际上,我们不需要那种极端粒度的访问,相反,用户一次只能读写整个扇区就够了

在这里插入图片描述

NAND flash

NAND相比于NOR,其bit line发生了改变——每一列中的晶体管串联起来,一个晶体管的drain与另一个晶体管的source相连。

在这里插入图片描述

为了读取栅格内的单个位,bit line select和source select晶体管都被打开。然后,所有没有读取的字行都被应用了Vread,迫使晶体管导电,不管它们的浮动门是否有电荷。只有感兴趣的比特的word line有较低的电压。如果该位有一个存储电荷(因此是逻辑上的0),晶体管将保持开路状态,没有电流通过晶体管链。如果它没有储存电荷(因此是逻辑1),晶体管将关闭,电流将流过。在位线上检测到电流的存在或不存在,并分别视为1或0。所有位线将同时并行地传递一个信号。

与NOR flash相比,将flash单元的列串联起来可以消除大量的结构;用NAND flash构建的给定容量的存储空间比用NOR flash构建的相同结构所占用的物理空间少60%。

但也有一个缺点,那就是失去了单独读写每个比特位的能力。NAND flash一次只能读写一页(一行)的数据。与传统观点相反,NAND flash的布局本身并没有阻止单个单元格的读写;相反,为了坚持NAND flash的设计目标,即比NOR flash更简单、更小,NAND芯片可以接受和理解的标准化命令的结构使页面成为最小的可寻址单元。这节省了存储更多指令所需的硅空间,并能够保存单元到页的映射。

MLC

浮栅晶体管具有存储少量电荷的能力,而少量并不意味着单个,事实上还可以储存多个电荷水平,这就引入了MLC

相比于SLC

  • MLC读取读取更复杂。需要依次测量每个可能的阈值电压,看看哪一个足以使晶体管打开。
  • SLC更可靠、更简单、错误率更低。
  • MLC更便宜

读写

覆盖

SSD能读写页,但却不能覆盖页。空页储存了1,1可以在页级别转换为0,但这个过程是单向的,也就是将0转换为1将是一个潜在的危险操作因为这会使用高压电,高压电将会使得相邻的cell也发生改变。当然也可以通过隧道抑制来防止——对周围的所有细胞施加非常大的电压,这样它们的电子就不会随着目标细胞一起隧穿——但这会导致cell上的的压力被清除。因此,为了避免损坏,ssd只能以整个块的增量进行擦除,而不是不需要耗能的隧道抑制

顺便说一句,虽然NOR闪存允许逐位写入,但它保留了其他限制:1s只能被0覆盖,并且将0重置为1s需要一次擦除整个块,这也是由于高压和如果以较小粒度执行会损坏相邻单元的风险。

这意味着SSD必须先擦除再写入。比如在8192(2^13)byte每页,256页每块的情况下,写入8kb的文件,会先复制2MB的数据到缓存,然后擦除整块,并重写这2MB数据。

这样带来的不利之处在于除非SSD有一个可用的已擦除页面准备就绪并等待数据,否则它不能立即执行写操作。如果没有已擦除的页面,它将不得不找到一个未使用(但尚未擦除)页面的块,擦除整个块,然后将块的旧内容与新页面一起写入。那么ssd会越使用越慢。

弊端

SSD尽管速度快,然而只能用于有限数量的写入。

我们已经知道,SSD中数据是通过改变单元行和列的电压来读取的,在写入的时候要通过量子隧穿效应迁移电子。

然而当每次电池经过程序/擦除周期时,一些电荷被捕获在构成浮栅的材料的介电层中。这种被捕获的电荷改变了栅极的电阻。随着电阻的变化,改变栅极状态所需的电流增加,栅极翻转需要更长的时间。随着时间的推移,这种电阻的变化变得足够显著,以至于将0写入单元所需的电压量变得如此之高,并且单元更改所需的时间变得如此之长,以至于单元作为快速数据存储设备的组件变得毫无价值

而MLC ssd比SLC ssd更容易退化,因为MLC驱动器中的每个单元有四种可能的状态并存储两个比特,因此每个单元对剩余电荷的变化更敏感,或者难以添加新电荷。此外,随着半导体工艺尺寸路线图的进一步缩小,闪存单元的尺寸也在不断减小。因为它们在物理上更小,在变得太无反应而无用之前可以吸收更少的剩余电荷。

权衡

对于SSD有两大问题——块级别擦除、有限生命周期

为了权衡,采用了以下方案

  • over-provisioning: 总容量预留部分空间,方便写入
  • garable collection:回收那些过时的页(也就是该页已经不是最新,被修改过的)。现在操作系统一般都不实际删除文件,在配置TRIM的情况下,操作系统可以发送SSD表明页不包含有效内容,那样SSD可以对这些操作系统认为删除的数据进行垃圾回收

写放大

写放大是逻辑写入次数和实际写入次数的差异。比如说要写入x=1,逻辑上只要写入一次,但实际上可能还有垃圾回收、块擦除等写入。

在SSD中会进行持续迁移,因此逻辑写入128KB数据,实际每次都会大于128KB

在ssd中写放大有以下情况引发

  • 垃圾回收:若一个驱动正在努力保持最大可用空间,并由TRIM辅助,那么将会在没有任何用户输入的情况下执行大量写入,导致高写放大以及降低cell寿命
  • 磨损均衡:磨损均衡是SSD维持所有cell使用情况在同一水平线的手段,会尽量占用那些使用比较少的cell进行储存
  • 无空闲页:在无空闲页的情况下,每次写入将会先读再擦最后重写

Ref

  1. https://arstechnica.com/information-technology/2012/06/inside-the-ssd-revolution-how-solid-state-disks-really-work/

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

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

相关文章

Sui生态项目|集隐私通信、移动钱包、链上朋友圈和红包功能一体的社交应用ComingChat

ComingChat是在Sui网络上构建的去中心化社交平台,功能众多,其中加密聊天功能为用户提供了安全的沟通方式。该功能利用了Signal加密协议,这是一种在Signal、WhatsApp和Skype等应用中广受欢迎的开源软件协议。 ComingChat在Sui上提供了全面的…

Echarts 柱状图-值为0时柱状图数据

需求是这样的:当数据为0时,鼠标悬浮也需要展示对应的数据,当值很小,也需进行占位,所以要加barMinHeight 刚开始以为没有对应方案呢,然后在官网死磕,最后还是找到解决方案了. 打开官网地址 解决方…

软件测试工程师的职业发展方向,别迷茫了,振作起来

软件测试在职业发展上,可以概括分为“管理”和“技术”两大类。另外,软件测试还可以在质量领域发展。 1. 软件测试在管理上的发展 软件测试管理是大家比较熟悉的软件测试职业发展路线之一,比较流行的职位包括测试组长、测试经理、测试代表、…

删除ubuntu开始菜单中的图标

背景 本来是很好看干净的界面 更新谷歌浏览器后出现了Gmail,幻灯片,谷歌硬盘等跟谷歌相关的乱七八糟东西搞得界面就很丑 解决问题 删掉那个图标 输入命令 sudo nautilus /usr/share/applicationssudo nautilus ~/.local/share/applications可以…

风险变化快,业务人员如何快速增加风控规则?

目录 什么是风控规则? 风控规则的来源 如何在风控引擎中配置规则? 今年暑假,博物馆和演出会门票被黄牛抢走。主办方、博物馆如果拥有风控系统,可以制订一系列规则来识别和拦截潜在的黄牛行为。 在制订规则时,需考虑…

什么是负载均衡

前提概述 关于负载均衡,我会从四个方面去说 1. 负载均衡产生的背景 2. 负载均衡的实现技术 3. 负载均衡的作用范围 4. 负载均衡的常用算法 负载均衡的诞生背景 在互联网发展早期,由于用户量较少、业务需求也比较简单。对于软件应用,我们只需要…

code论坛系统测试

目录 一 项目介绍**项目名称****项目介绍****项目功能****项目展示** 二 测试用例设计和功能测试1.测试用例设计**①登录页面****②注册页面****③首页****④发布帖子页面****⑤修改个人信息页面** 2.功能测试环境3.实际执行功能测试的部分操作**①登录页面****②注册页面****③…

Apple Pay 内购项目价格异常相关

通过 Apple Pay 内购商品子项的实际支付价格与 App Store Connect 配置中的存在差异; 经过已经排查过后发现是参照转换汇率的基准方式导致; 在 App 内购买项目 > 价格时间表 > App 内购买项目定价 > 所在国家或地区 一栏中,官方默认配置是以美国(USD)换算为基准 解决办…

优思学院|车间管理的五大基本方法

车间管理对于任何制造型企业来说都是至关重要的一环。有效的车间管理可以帮助企业提高生产效率,降低成本,改善产品质量,以及增强员工士气。在这篇文章中,我们将探讨车间管理的五大基本方法,这些方法可以帮助企业更好地…

NOIP 2011 提高组复赛真题及题解(day1 day2) Pascal语言

题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n 张地毯,编号从1 到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后…

FreeCAD傻瓜式教程之约束设定、构建实体、开孔、调整颜色、透明度、参考距离、任意修改尺寸、保持开孔居中等

本内容基于官方教程中的绘制简单的零件中的体会,在初次绘制的时候,总是无法完成,几经尝试才发现其关键点所在,以此文记录,用以被查资料,同时也希望能够帮到纯白新手快速熟悉该软件的绘图方法。 一、. 打开…

GEEMAP 基本操作(二)如何对 Landsat 进行全色锐化

遥感全色锐化的目标是从图像中获得最高级别的视觉清晰度和细节,通过结合全色波段图像的高空间分辨率和多光谱(Landsat 为 B8 全色)图像的宽光谱范围,全色锐化能够生成质量更清晰的最终彩色图像。 全色锐化过程涉及应用数学算法&a…

IDC发布《亚太决策支持型分析数据平台评估》报告,亚马逊云科技位列“领导者”类别

日前,领先的IT市场研究和咨询公司IDC发布《2023年亚太地区(不含日本)决策支持型分析数据平台供应商评估》1报告,亚马逊云科技位列“领导者”类别。IDC认为,亚马逊云科技在解决方案的协同性、敏捷性、完整性、及时性、经…

Keras三种主流模型构建方式:序列模型、函数模型、子类模型开发实践,以真实烟雾识别场景数据为例

Keras和PyTorch是两个常用的深度学习框架,它们都提供了用于构建和训练神经网络的高级API。 Keras: Keras是一个高级神经网络API,可以在多个底层深度学习框架上运行,如TensorFlow和CNTK。以下是Keras的特点和优点: 优点&#xf…

keepalived+lvs+nginx高并发集群

keepalivedlvsnginx高并发集群 简介: keepalivedlvsnginx高并发集群,是通过LVS将请求流量均匀分发给nginx集群,而当单机nginx出现状态异常或宕机时,keepalived会主动切换并将不健康nginx下线,维持集群稳定高可用 1.L…

浏览器安装selenium驱动,以Microsoft Edge安装驱动为例

Selenium是一个用于Web应用程序测试的自动化工具。它可以直接在浏览器中运行,模拟真实用户对浏览器进行操作。利用selenium,可以驱动浏览器执行特定的动作,比如:点击、下拉等等,还可以获取浏览器当前呈现的页面的源代码…

【数据结构与算法】总结关于二叉树题型经典面试题

【数据结构与算法】二叉树题型经典面试题 1.根据二叉树创建字符串2.二叉树的层序遍历3.二叉树的最近公共祖先4.二叉搜索树与双向链表5.从前序与中序遍历序列构造二叉树6.从中序与后序遍历序列构造二叉树7.二叉树的前序遍历(非递归方法)8.二叉树的中序遍历(非递归方法)9.二叉树的…

SpringBoot接收参数的8种方式

文章目录 1. 直接把请求参数写在方法的形参中2. 封装一个bean直接来接收3. 原生的HttpServletRequest接收4. PathVariable获取rest风格路径参数5. RequestParam绑定请求参数到方法形参6. RequestBody绑定请求参数到方法形参7. RequestHeader8. CookieValue 1. 直接把请求参数写…

唯一受邀参会通信服务商!融云出席数字经济头部盛会「中数大会」并发言

8 月 16 日-18日,“2023 中国数字经济创新发展大会”(下简称“中数大会”)在广东省汕头市举办。关注【融云 RongCloud】,了解协同办公平台更多干货。 中数大会由工业和信息化部、广东省人民政府联合主办,以“聚数联侨…

C++ new运算符开辟空间

1 内存四区介绍 代码区:存放函数的二级制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放,存放函数的参数值,局部变量等堆区: 由程序员分配和释放&…