SSD基本架构与工作原理

SSD的核心由一个或多核心的CPU控制器、DRAM缓存以及多个NAND闪存芯片组成。CPU控制器负责管理所有读写操作,并通过DRAM缓存存储映射表等元数据,以加速寻址过程。

图片

NAND闪存则是数据存储的实际介质,其组织结构从大到小依次为通道(包含多个封装)、Die、Plane、Block和Page。

图片

读写操作流程

SSD的读写操作遵循NAND闪存的基本特性,即写入前需擦除(Erase-before-write),操作单位不对称(读/编程操作在Page级别,而擦除操作在Block级别),且具有有限的耐久性和数据保持性。

图片

  • 读取(Read):数据从NAND闪存的Page传输到SSD控制器的页面缓冲区,再传输至主机,延迟tR。

  • 写(Program):数据从主机写入页面缓冲区,再编程到NAND闪存的Page中,耗时tPROG。

  • 擦除(Erase):整个Block的数据被清除,tERASE通常需要毫秒(ms)级别。

SSD常见写入步骤:

写入过程中,host写入数据给到缓存,再由缓存下刷到NAND存储,需要注意的是写入数据后的垃圾回收GC。

图片

  • 写入命令与地址:SSD控制器向NAND闪存发送写命令和相应的页地址。

  • 数据传输:数据通过I/O线从主机或SSD的缓存传输到NAND闪存的页面缓冲区。这个过程中,数据先暂存在缓冲区,随后批量写入存储单元。

  • 数据编程:NAND闪存内部的接口电路将缓冲区中的数据编程到存储单元中。此过程通常需要几百微秒。

  • 状态等待与确认:写入期间,SSD控制器会定期查询NAND的状态寄存器,等待写入操作完成的指示。

  • ECC编码与校验:在数据写入之前,根据SSD设计,会对数据进行ECC编码,以防止未来读取时的错误。写入后,可能会通过读回数据并对比原始数据进行校验。

  • GC(垃圾回收)和 Wear-Leveling:长期使用中,SSD控制器还需管理垃圾回收和磨损均衡,以维护性能和延长SSD寿命,但这通常不在单次读写操作流程内直接体现。

SSD常见读取步骤:

读取过程中,host发送数据读取请求,数据从NAND读取,这个过程可能会有因为NAND读取异常发送Read Retry。

图片

  • 命令发送:主机向SSD的控制器发送读取命令,通常伴随着要读取的页地址信息。

  • 地址传输:紧接着,页地址通过命令/地址总线传送给NAND闪存控制器。在某些NAND架构中,地址传输可能分为行地址和列地址两个阶段。

  • 读取命令确认:控制器发送一个确认读取命令到NAND芯片,以确保NAND准备进行读取操作。

  • NAND操作:NAND闪存芯片接收到命令和地址后,开始从指定的物理页中读取数据。数据首先被加载到NAND芯片内部的页面缓冲区。

  • 数据传输:一旦数据准备就绪,NAND芯片通过I/O线将数据传输到SSD控制器。此时,NAND芯片会处于忙碌状态,直到数据传输完成。

  • 状态检查:在数据传输过程中或完成后,SSD控制器需要监控NAND的状态寄存器,以确认操作成功完成。

  • 数据校验:为了确保数据完整性,SSD控制器执行ECC(Error Correction Code)校验。如果数据在读取过程中发生错误,ECC可以帮助纠正这些错误。

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

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

相关文章

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建仓库 创建一个Springboot项目,勾选web将该项目创建git本地仓库,再创建远程仓库推送上去 创建TestController RestControllerRequestMapping("/test")public class TestController {GetMapping("/hello")public String sayHell…

LeetCode 热题 HOT 100 (001/100)【宇宙最简单版】

【链表】 No. 0160 相交链表 【简单】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#x…

【系统架构设计 每日一问】四 如何对关系型数据库及NoSql数据库选型

根据不同的业务需求和场景,选择适合的数据库类型至关重要。以下是一个优化后的表格展示,涵盖了管理型系统、大流量系统、日志型系统、搜索型系统、事务型系统、离线计算和实时计算七大类业务系统的数据库选型建议。先明确下NoSQL的分类 NoSQL数据库分类…

RabbitMQ_基础篇

文章目录 第一章 消息中间件1.1 应用场景1.2 常用消息中间件1.2.1 ActiveMQ1.2.2 RabbitMQ1.2.3 RocketMQ1.2.4 Kafka 第二章 RabbitMQ2.1 为什么选择RabbitMQ2.2 RabbitMQ简介2.3 RabbitMQ架构2.4 RabbitMQ工作模式2.4.1 Hello World2.4.2 Work Queues2.4.3 Publish/Subscribe…

分离式网络变压器的集成化设计替代传统网络变压器(网络隔离滤波器)尝试

Hqst盈盛(华强盛)电子导读:今天分享的是应用了分离式网络变压器设计的的新型网络变压器(网络隔离变压器) 今天我们一起来看这款新型网络变压器,它就是应用分离式网络变压器集成到电路板上,加上外…

googleTest 源码主线框架性分析

本文备忘一个主题的分析过程和结论,即,googleTest框架中是如何调用相关的测试宏的? TEST TEST_F TEST_P 等等 1,googleTest 环境与简单示例 1.1 下载 googletest 并编译 下载: $ git clone https://github.com/goog…

linux环境安装mongoDB

一、安装单体mogodb 目标:在Linux中部署一个单机的MongoDB,作为生产环境下使用。 提示:和Windows下操作差不多。 步骤如下: (1)先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。 (2&…

细说MCU用定时器控制ADC采样频率的实现方法并通过Simulink查看串口输出波形

目录 一、硬件工程 二、建立Simulink模型 1.安装MATLAB和Simulink 2.建立Simulink模型 三、代码修改 1.修改回调函数 2.产看结果 3.完整的main.c 本文作者的文章 细说MCU用定时器控制ADC采样频率的实现方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/…

《python语言程序设计》第6章4题反向显示一个整数,使用函数reverse 实现 4位数

* def reverse(n):a n // 1000b n % 1000 // 100c n % 1000 % 100 // 10d n % 100 % 10return str(d) str(c) str(b) str(a)numberT 3456 aText reverse(numberT) print(f"{numberT} is reverse number {aText}")

Spring的IoC与DI介绍

Spring基础 Spring Framework系统架构 Spring Framework是Spring生态圈中最基础的项目,是其它项目的根基。 IoC(Inversion ofControl)控制反转 使用对象时,由主动new产生对象转换为由外部提供给对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。Sprin…

AP ERP与汉得SRM系统集成案例(制药行业)

一、项目环境 江西某医药集团公司,是一家以医药产业为主营、资本经营为平台的大型民营企业集团。公司成立迄今,企业经营一直呈现稳健、快速发展的态势, 2008 年排名中国医药百强企业前 20 强,2009年集团总销售额约38亿元人民币…

监控易V7.6.6.15升级详解15:智能预测管理功能

随着企业IT系统的日益复杂和运维需求的不断提高,传统的监控管理方式已经难以满足现代企业的需求。为了应对这一挑战,监控易系统近期对智能预测管理功能进行了全面升级。本次升级不仅优化了原有功能,还新增了一系列实用特性,旨在为…

openstack设置IP直接登录,不需要加dashboard后缀

openstack 实验环境,openstack-t版,centos2009 修改配置文件 [rootcontroller ~]# vim /WEBROOT /etc/openstack-dashboard/local_settings #将dashboard去掉 WEBROOT /dashboard/ #改为 WEBROOT /[rootcontroller ~]# vim /etc/httpd/conf.d/openst…

交叉编译ethtool(ubuntu 2018)

参考文章:https://www.cnblogs.com/nazhen/p/16800427.html https://blog.csdn.net/weixin_43128044/article/details/137953913 1、下载相关安装包 //ethtool依赖libmul git clone http://git.netfilter.org/libmnl //ethtool源码 git clone http://git.kernel.or…

yolov5进行识别安全帽

进行毕业设计 下载yolov5使用按照教程来进行就行注意事项(有必要看看)效果 总结 下载yolov5 地址是:https://github.com/ultralytics/yolov5 使用按照教程来进行就行 这里简单说一下: 下载需要的命令: pip install -…

腾讯元宝上线“3D角色梦工厂”:快速生成专属3D角色!

7月16日,腾讯旗下大模型应用“腾讯元宝”上线“3D角色梦工厂”,允许用户通过上传一张五官清晰的正面头像,并选择不同的角色模板,迅速生成个人3D角色! 技术特点 “3D角色梦工厂”将大模型生成技术与3D应用相结合&#…

【开发实战】QT5 + OpenCV4 开发环境配置应用演示

前言 作为深度学习算法工程师,必须要掌握应用开发技能吗?搞工程肯定是必须要会界面开发,QT就是一个很不错的选择。本文以QT5.15 OpenCV4.8 OpenVINO2023为例,搭建应用开发环境,演示深度学习模型的QT应用案例。 开发…

提前批不要盲目投!

大家好,我是洋子,最近25届秋招提前批陆续开始了,特别是大厂,比如百度,深信服,OPPO等陆续已经启动提前批招聘 前几天我在群里发了百度的秋招提前批内推码进行内推,今天打开内推系统一看全凉了 …

PACS-医学影像信息管理系统,全影像科室PACS源码,内置包括MPR、CMPR、VR等三维处理功能

PACS系统可以覆盖医院现有放射、CT、MR、核医学、超声、内镜、病理、心电等绝大部分DICOM和非DICOM检查设备,支持从科室级、全院机、集团医院级乃至到区域PACS的平滑扩展,能够与医院HIS、集成平台的有效集成和融合,帮助医院实现了全院医学影像…

园区AR导航系统构建详解:从三维地图构建到AR融合导航的实现

随着现代园区规模的不断扩大与功能的日益复杂,传统的二维地图导航已难以满足访客高效、精准定位的需求。园区内部错综复杂的布局、频繁变更的商户位置常常让访客感到迷茫,造成寻路上的时间浪费。园区AR导航系统以创新的技术手段,破解了私域地…