【FLASH存储器系列十四】固态硬盘结构和FTL初探

news2024/11/24 3:04:30

固态硬盘是一种典型的nand flash产品应用。与传统硬盘相化,固态硬盘内部没有移动的机械磁头,而是由固态电子存储芯片(闪存芯片)阵列级联组成,下图给出了固态硬盘的内部组成。现阶段,几乎所有基于闪存的固态硬盘都具有与此图类似的硬件逻辑结构,具有较强的普适性。

从上图可以看到一个典型的固态硬盘由主机接口逻辑单元(Host Interface Logic)、RAM(缓存)、主控芯片(SSD Controller)和多个闪存芯片组成。主机接口屏蔽了固态硬盘内部对闪存芯片的操作,并帮助存储系统无缝地对固态硬盘进行读写操作。主控制器中提供了各种处理操作、内存管理及组织和管理闪存芯片的方法(如地址映射、损耗均衡、垃圾回收、坏块管理等);闪存芯片通过总线并行级联组成,该组织方式可提供并行访问。固态硬盘内部的RAM则起到了缓存和加速的作用(有的SSD没有这个RAM)。主控芯片和闪存芯片是SSD中最为重要的两个元器件,也是影响SSD性能的主要因素。如果说主控芯片是SSD的大脑,则闪存芯片就是SSD的数据仓库。

下图给出了固态硬盘的体系结构。前三层主要功能是接口驱动,提供缓冲区存放读写请求的数据,并且提供请求队列,保存没有处理的请求和已经完成的请求,实现对固态硬盘的高效管理。通道控制层主要是控制数据的并行存储,将写数据分发到各个闪存控制器上。闪存转换层(Flash Translation Layer, FTL),是为了使固态盘存储系统对NANDFlash更好地支持,充分发挥NAND Flash存储介质的优势,主要实现逻辑/物理地址映射、坏块管理、垃圾回收和损耗均衡等功能。最底层是闪存接口层,即传统意义上的硬件抽象层(Hardware Abstract Layer,HAL)。

下图为三星某型号SSD的图片:

从上面的结构分析可知,在控制器和nand flash之间的FTL主要提供了四种功能,地址映射、垃圾回收、坏块管理和损耗均衡机制,是nandflash管理控制的重中之重。

为什么要有这个FTL来做这些事情呢?主要是由nand flash的物理特性决定的。相对于传统磁盘,nand flash具有如下独特的物理性质:

1)不能重复写(write-once)。闪存编程操作和擦除操作的最小单位不一致,闪存读、写操作的基本单位是页,而擦除操作的基本单位是块。且只能从1写为0,不能从0写为1,要写1必须通过擦除操作,编程操作是无法写1的,所以在写操作之前必须先执行擦除操作(erase-before-write)。

2)不可原地更新(out-of-place update)。由于闪存在编程之前必须擦除的物理特性,闪存中的数据若要实现原位置更新(in-place update)必须先将整个块内的有效页的数据读出,擦除此块后,再将有效页的数据与更新后的数据写回此块,这将导致写放大(Write Amplification),意思就是原本只要写一页中的部分位置,结果整个page都要写一遍。因此闪存中的数据采用非原位更新,即更新数据时,只是将新数据写到一个新的空闲页中,然后将原数据所在的物理页标记为无效页(invalid page)。这个无效页被称为“垃圾”,需要做“垃圾回收”,把这些无效页恢复成可写的空闲页。

3)闪存内的每一个块的擦写寿命(program/erase cycle)都是有限的。通常SLC类型的闪存中块的擦写寿命是十万次,而MLC类型的闪存中块的擦写寿命一般只有一万次。所以不能一直朝一个物理位置反复擦写,容易把这块区域擦坏。

4)闪存的数据保存与电荷息息相关。电荷会流失,虽然这个流失的时间在常温下可以长达十年,也可以短至几年或几个月,如果是在高温环境下,电荷流失的速度会加快,电荷流失会导致存储在闪存上的数据丢失。所以需要对闪存进行数据保持检测,若检测到有问题,则进行数据搬运回刷。

5)nandflash的一个page是一根字线上的所有存储单元,当对这一页进行读操作时,有可能影响相邻字线上的存储数据,造成读干扰问题。所以不能对某一个page多次读而不处理,应在当某个闪存块读的次数即将到预定的阈值时,便将这些数据从该物理位置搬走,挪到其他安全的闪存块上,从而避免数据出错。

6)nandflash运行中可能出现存储单元失效,需要尽可能减小失效的概率,出现了失效还需要做坏块管理。

7)在MLC或TLC闪存颗粒中,对Upper Page/ExtraPage(和Lower Page共享存储单元的闪存页)写入时,倘若发生异常掉电,那么可能会把之前LowerPage上成功写入的数据破坏,因此需要加入相应的处理机制来尽量避免发生这样的问题。

8)nandflash的类型分为SLC、MLC、TLC、QLC等,目前消费级的固态硬盘主流是TLC,TLC或MLC的读写速度比不上SLC,而通常硬盘在使用时并不是全部存满数据的,所以可以将部分TLC或MLC模拟成SLC模式来使用,来提升TLC或MLC固态硬盘的性能和可靠性。

上面说的这些特性是闪存的共性,不同的闪存间还会有各自的问题。FTL除了完成基本的地址映射,还需要处理垃圾回收(GC)、磨损平衡(Wear Leveling)、坏块管理、读干扰(ReadDisturb)处理、数据保持(Data Retention)处理等事情。随着闪存质量变差,FTL除了完成上述常规处理,还需要针对具体闪存特性,去做一些特殊处理以获得好的性能和高的可靠性。

FTL分为Host Based(基于主机)和DeviceBased(基于设备)。Host Based表示的是,FTL是在Host(主机)端实现的,用的是你自己计算机的CPU和内存资源,如下图:

相反,Device Based表示的是,FTL是在Device(设备)端实现的,用的是SSD上的控制器和RAM资源,如下图:

目前主流SSD都是Device Based FTL,就像上面那张三星的内存条那样。今天的分享就到这里,接下来主要分享FTL的几项关键技术。文章参考自《固态存储:原理、架构与数据安全 夏鲁宁 贾世杰 陈波》、《深入浅出SSD:固态存储核心技术、原理与实战 SSDFans》。

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

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

相关文章

ASP.NET Core+Element+SQL Server开发校园图书管理系统(三)

随着技术的进步,跨平台开发已经成为了标配,在此大背景下,ASP.NET Core也应运而生。本文主要基于ASP.NET CoreElementSql Server开发一个校园图书管理系统为例,简述基于MVC三层架构开发的常见知识点,前两篇文章简单介绍…

Nvidia深度学习环境安装

深度学习大型模型训练和部署,需要使用GPU,使用Pytorch、Tensorflow等深度学习框架之前需要安装驱动环境,本文系统环境:ubuntu22.04系统,四张3090显卡安装显卡驱动下载:选择显卡类型,下载驱动驱动下载路径&a…

Wireshark解析协议不匹配

Wireshark解析协议不匹配 1、问题 现有TLS/SSL over TCP的客户端、服务端相互通信,其中,服务端监听TCP端口6000。 使用tcpdump抓包6000端口,生成pcap文件6000.pcap: 使用Wireshark打开6000.pcap,显示如下&#xff1…

Hive(番外):Hive可视化工具IntelliJ IDEA

1 Hive CLI、Beeline CLI Hive自带的命令行客户端 优点:不需要额外安装 缺点:编写SQL环境恶劣,无有效提示,无语法高亮,误操作几率高 2 文本编辑器 Sublime、Emacs 、EditPlus、UltraEdit、Visual Studio Code等 有…

基于Seam Carving实现图像的重定位 附完整代码

相比于算法目标的复杂,算法步骤却异常的简单,下面具体介绍利用 SeamCarving 算法进行图像剪裁的步骤:1.计算图像中每个像素的“重要程度”(能量),生成能量图。在绝大多数情况下,我们可以做出如下…

【string 类的使用方法(总结)】

1. 为什么学习string类? C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要…

采用NVIDIA Jetson Orin NX 系统的视觉边缘计算机

边缘计算机采用NVIDIA Jetson Orin NX模块化系统和高带宽图像采集卡,用于实时图像采集计算和人工智能处理。虹科的合作伙伴Gidel是一家专注于高速图像采集和处理的以色列科技公司,今天宣布新的NVIDIA Jetson Orin NX™ 16GB模块化系统(SoM)将被添加到Gid…

SpringSecurity配置及使用

Spring Security 是针对Spring项目的安全框架,也是Spring Boot底层安全模块默认的技术选型,他可以实现强大的Web安全控制,对于安全控制,我们仅需要引入spring-boot-starter-security 模块,进行少量的配置,即…

什么是渲染农场,渲染农场一般怎么收费?

对于用3D软件创作效果图或影视动画的艺术家们来说,应该对渲染农场并不陌生,但是对于初入CG行业的人来说,看到网上很多人说渲染农场,肯定会疑惑,什么是渲染农场?渲染农场也叫“分布式并行集群计算系统”&…

【6】【vue3+elementplus+springboot】 管理系统 【前后端实践】

第一部分: elementplus官网:一个 Vue 3 UI 框架 | Element Plus (element-plus.org) 1、安装elementplus npm install element-plus --save查看package.json中存在依赖表示成功安装 2、引入elementplus import ElementPlus from element-plus import …

论文解读 - 城市自动驾驶车辆运动规划与控制技术综述 (第5部分,完结篇)

文章目录🚗 V. Vehicle Control(车辆控制)🔴 A. Path Stabilization for the Kinematic Model(基于运动学模型的路径稳定)🟥 1)Pure Pursuit(纯追踪)&#x1…

H3C SecParh堡垒机任意用户登录与远程执行代码漏洞

H3C SecParh堡垒机任意用户登录与远程执行代码漏洞1.H3C SecParh堡垒机任意用户登录漏洞1.1.漏洞描述1.2.漏洞影响1.3.漏洞复现1.3.1.登录页面1.3.2.构建URL1.4.总结2.H3C SecParh堡垒机远程命令执行漏洞2.1.漏洞描述2.2.漏洞影响2.3.漏洞复现2.3.1.登录页面2.3.2.构建URL2.4.总…

python-pptx 操作PPTx幻灯片文件删除并替换图片

python-pptx 操作PPTx幻灯片文件删除并替换图片 作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 一、原理 通过查找ppt中的图片指纹替换 二、操作流程 原始ppt如下: 根据…

[单片机] MCU串口发送C方案优化

应用场景: 主频不高非操作系统的单片机,需要在while循环中发送 数据到上位机,当数据较长时,会让发送的过程会让其他操作有卡顿感。为了解决这个问题,需采用一种方法:在每次大循环中只发一个字节数据&#x…

HTML5+CSS3(一)-全面详解(学习总结---从入门到深化)

目录 ​编辑 第一个前端程序 学习效果反馈 前端工具的选择与安装 前端常见开发者工具 浏览器 VSCode中文语言包安装: 学习效果反馈 VSCode开发者工具快捷键 VSCode常用快捷键列表 学习效果反馈 HTML5简介与基础骨架 HTML5的DOCTYPE声明 HTML5基本骨架 html…

Linux(CentOS Stream 9)安装MySQL8.0

mysql8下载链接 链接:https://pan.baidu.com/s/1yBCDbDYUmQWjcM1SdS7Xng 提取码:t37m 上传到服务器上并解压 cd /usr/localtar -xvf mysql-8.0.21-linux-glibc2.12-x86_64.tar.xz解压包重命名为mysql mv mysql-8.0.21-linux-glibc2.12-x86_64 /usr/l…

Linux部署RKNN-toolkit过程以及异常点记录(详细记录)

文章目录Linux部署RKNN-toolkit过程以及异常点记录1.在Linux中安装Miniconda1.1 使用服务器下载Miniconda1.2 安装conda1.3 激活刚安装完成的软件1.4参考博文2.创建并激活Miniconda新环境(rknn)2.1 创建conda环境(命名为rknn)2.2 …

做亚马逊、沃尔玛测评自养号大额、退款一定要解决的几个问题?

大家好我是测评龙哥,今天我跟大家说下做亚马逊、沃尔玛测评自养号、退款、lu货、项目需要用到的防关联、防封号环境的一些底层技术原理。这里讲的内容我相信很少有人能掌握,都是一些比较难的IT术技。 如果你现在准备开始做测评是在了解阶段还是已经在做…

SRM-询报价管理系统搭建指南

1、简介1.1、案例简介本文将介绍,如何搭建SRM-询报价管理。1.2、应用场景企业根据询价需求通知参与报价的供应商,所有供应商会收到通知后进行报价,自动生成了比价数据,企业可参考比价数据对供应商进行选择。2、设置方法2.1、表单搭…

GF_CLR初始用 - 正式版

参照:DeerGF_Wolong框架使用教程 与tackor老哥的踩坑日记所编写,第二次尝试,总结第一次经验重新来。 点击链接加入群聊【Gf_Wolong热更集合】 一. 部署 HybridCLR(Wolong) 环境 首先安装Windows Build Support (IL2CPP)需要完整的克隆项目…