| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 固态硬盘的工作原理,固态硬盘掉电也能存储数据的原理 -> 正文阅读 |
|
[嵌入式]固态硬盘的工作原理,固态硬盘掉电也能存储数据的原理 |
固态硬盘主要由主控、缓存、闪存组成,数据通过接口进入主控,经主控中转调配后储存到各个闪存颗粒中。闪存的基本存储单元是"浮栅晶体管" 浮栅被二氧化硅包裹,和上下绝缘,即使在去除电压之后,栅极内的电子也会被捕获,断电时也能保存电子,这就是固态硬盘掉电也能存储数据的原理。 现在浮栅中的电子数量高于中间值,表示“0”,如果要写入成"1",要先擦除才能写入,在P级上施加正电压,浮栅中的电子会因为量子隧穿效应,穿过隧穿层被吸出来,现在浮栅中的电子数量低于中间值,表示1。 在控制栅施加正电压,这使得来自源极的电子穿过隧穿层并到达浮柵层,每次隧穿所需的电压取决于隧穿层的厚度,现在浮栅中的电子数量高于中间值,表示0 单阶存储单元SLC,电子数量只有两种状态,每个存储单元只能存储1bit的数据,由于只有两个级别,因此两个级别之间的电压余量非常“宽”,这使得读取单元的速度更快,原始误码率很低,因此微小的电荷泄漏具有相对较低的影响。同时也有一个缺点,就是相较于多阶存储单元,每个单元的成本更高。 给不需要读取数据的字线一个较低的电压,导通位线,给不需要读取数据的位线一个电压导通即可,这样不需要读取的浮栅都被导通了,给控制栅加读取电压,判断漏极-源极之间是否处于导通状态。 以MLC为例,如果一个浮栅晶体管储存2bit数据,一页是4K就需要16384个浮栅晶体管,有256个页,一块就是1M,一个512GB的闪存就需要524288块,指甲盖大小的颗粒中就有2万亿个浮栅晶体管。主控过若干通道并行操作多块闪存颗粒,类似Raid0,这样大大提高了底层带宽。缓存虽然叫做缓存,但其实闪存并不需要缓存帮忙写入数据,主控每把一笔数据写入闪存中时,便会记录下该数据的逻辑地址到物理地址的映射关系,也就是映射表。 其中映射表设置了两个区块池,一个是空闲池,一个是数据池,空闲池记录的就是空闲块的地址,数据池记录的就是有效数据的地址,这样当想要读取数据时就会根据这个映射读取到真实的数据,缓存就是用来储存这张映射表的。 如果没有缓存颗粒,就会使用闪存颗粒中的部分空间来做缓存,写分为新写入和覆盖写两种,主控根据空闲池中的“地址”找到新的块,将数据写入到页,主控会把数据存放的“地址”记录到数据池中。 主控根据空闲池中的“地址”找到新的块,将现有的数据和需要改写的数据合并为新的,一起写入到页,将“地址”记录到数据池中,旧数据的“地址”就会被删除,而不是擦除块,这就是固态硬盘删除数据还有机会能找回的原因。 就是垃圾回收机制,主控根据空闲池中的“地址”找到新的块,根据数据池的地址,将有效数据迁移到新的块,将有效数据的地址记录到数据池中,然后擦除块,将块的“地址”记录到空闲池中,注意,如果整个块并没有被写满,但是块上有无效数据,主控并不会直接擦除块,而是把有效数据,写到其他页上继续使用,这就造成了写入放大。 覆盖写时会将现有的数据和需要改写的数据合并为新的,写入另一个块中,原本就已经写入过一次了,再加上这次搬迁就又多了一次写入,如果块上有无效的数据,会连同无效数据一起搬到别的块上,这样写入量变的更大,就会增加硬盘负担,影响闪存速度和闪存寿命。 禁用删除通知机制,刚好弥补了这一缺点,作为底层的固态硬盘并不知道哪些数据是有效的,哪些是无效的,禁用删除通知只是一种命令,只负责通知固态硬盘哪些是无效数据,这样覆盖写时就不会把无效数据,搬运到新块上了。 禁用删除通知命令是和垃圾回收是互补的,禁用删除通知命令给主控的可删除数据越多,垃圾回收操作需要转移的数据就越少,也就延长了硬盘的使用寿命,还有什么方法可以延长硬盘的使用寿命吗?动态磨损平衡 动态磨损平衡,主控在使用块进行擦写操作的时候,优先挑选写入次数低,相对年轻的块,还有更复杂的,静态磨损平衡,主控会把长期没有修改的老数据从年轻块当中搬岀,迁移到年老的块中,腾出年轻的块使用,如果所有闪存容量为256G,开放给用户使用也是256G,现在,我们把全盘写满,接着删除一些文件,能不能写入新的数据呢? 答案是不能,因为空间已经满了,无法把它回收到空闲池,在固态硬盘底层,如果要写入新的数据,必须要有可用的空闲块,才会擦除待回收的块到空闲池中,这样就需要部分预留空间,这就是买的256G的硬盘只有240G的原因 这部分空间主控是看不到的,这部分预留空间,不仅仅用做垃圾回收,事实上,SSD内部的一些系统数据,比如SSD固件,SSD系统管理数据,映射表也需要预留空间来存储。 总结,闪存需要先擦除才能写入,不能覆盖写。闪存是有寿命的每擦除一次寿命便会减少一点,删除的数据,并不会被马上擦除,只是逻辑地址被删除了所以被删除的数据还有一定的机会找回。缓存虽然叫做缓存,但其实闪存并不需要缓存帮忙写入数据。固态需要部分预留空间来作为缓存,垃圾回收,存储固件,存储系统数据等,这就是你买的固态硬盘标注容量,会比实际容量少的原因 |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 6:30:07- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |