当前位置: 首页 > news >正文

【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素

固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。

固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消费级固态硬盘SSD基本上使用TLC闪存,而今年来QLC正闪亮登场,未来可能在消费级固态硬盘SSD应用有不错的表现。

这里刚好引出一个问题,闪存类型主要有哪些类型,哪些类型的闪存适合用在固态硬盘SSD上?它们对固态硬盘SSD的使用寿命有影响吗?以此为引子,介入谈谈大家都比较关心的固态硬盘SSD的使用寿命问题。

01 闪存类型

NAND闪存类型主要有SLC(单层单元)、MLC(多层单元)、TLC(三层单元)和QLC(立体堆叠多层存储单元)。

  • SLC:Single-Level Cell,1bit/cell,充电值有0和1,结构简单,速度快、寿命长,执行效果高,但同容量的价格在上述类型中是最贵的,价格约为MLC的3倍以上。SLC的擦写寿命约10万次
  • MLC:Multi-Level Cell,2bit/cell,即充电值有00、01、10、11四个,显然,MLC比SLC需要稍微多一点的访问时间,用抽屉来形容,SLC有两个抽屉,MLC有四个抽屉。MLC的速度适中,比SLC慢,但比TLC和QLC快,价格当然比SLC便宜不少,擦写寿命约3000~10000次擦写寿命
  • TLC:Trinary-Level Cell,3bit/cell,充电值为111、110、100、101、011、010、001、000。每个单元存放数据比SLC多3倍,比MLC多1/2,而TLC速度比MLC要慢,擦写寿命短(约500-1000次擦写寿命,随着技术的提升,好的TLC擦写寿命据说可以提升到了3000次),优势是价格低。
  • QLC:Quad-Level Cell,4bit/cell(每个Cell单元存储4位电荷),共有16种状态,因而QLC单位存储密度更大,达到TLC的2倍存储密度,单颗芯片的容量自然比较高,然而QLC的电压更难控制,其写入速度比TLC更慢,可靠性、稳定性及擦写寿命比TLC也更差

在SSD产品中,消费级的SSD大多数采用TLC闪存颗粒,在高容量的消费级SSD中开始有采用QLC的。而在工业级的SSD中,采用MLC比较合适。军工级估计可以考虑SLC。

02 固态硬盘SSD的擦写寿命

固态硬盘SSD采用NAND Flash存储数据,由于所述NAND Flash的特性,它们在物理结构上是由一个个的“块”来组成的,每个“块”都有一定的擦除寿命(P/E)。对于不同类型的闪存,其块的擦写寿命是有差别的,SLC擦写寿命>MLC擦写寿命>TLC擦写寿命>QLC擦写寿命。当某个“块”的擦写寿命达到了,这个“块”便损坏了,也就成了我们所说的“坏块”。一般情况下,每个固态硬盘SSD都会预留一定的块用作储备块,即“冗余块”,当出现“坏块”时,主控会将“坏块”屏蔽,而将某个“冗余块”启封来使用,保证固态硬盘SSD正常使用。

随着存储技术的发展,擦写寿命还有提升的空间。

特性SLCMLCeMLCTLCQLC
每单元位数12234
P/E擦写寿命1000003000~1000010000一般≤1000,注意目前据说可提升到3000150~300
每位成本很高中等中等很低
数据安全保持时间10年1年1年1年1年
擦除时间2ms3ms to 4ms6ms10ms>10ms

对于擦写次数P/E,以TLC为例,假设它的擦写次数也就1000次,有人就当心是不是将数据存入并删除这个动作操作1000次,这块SSD就坏了呢?不是这么理解的,要是这么理解,SSD也太容易坏了吧!

对于固态硬盘SSD,读取数据是不影响使用寿命的,而写入才与擦写联系起来,才会影响使用寿命。以128G的采用TLC闪存的固态硬盘SSD,完全写入1000次(按1000次P/E来计算),则这块固态硬盘SSD的写入重量为128*1000GB=128000GB,如果每天都写满128G,那么它的理论使用寿命是2.7年。(完全写入:因为有文件管理系统,负载均衡算法)

固态硬盘理论使用寿命(年)计算公式=(实际容量*P/E次数)/(每天实际写入容量*365)。

事实上,有几个人每天都往一个固态硬盘中写入并擦除这么多数据?一个较大容量的固态硬盘用上5~10年是大概率的事情,不用过于担心擦写寿命。

03 固态硬盘寿命的另外隐形杀手浮出水面

固态硬盘寿命与擦写次数有关,这个无可争议,但也不用过分担心,固态硬盘自身的主控有很多方式可以优化块擦写状况的,这里不作具体介绍,普通消费者也不用了解主控那些复杂的控制原理、方式。

影响固态硬盘的另外隐形杀手是过热和突然断电。

先来说说过热这个问题,由于闪存颗粒的特性,固态硬盘SSD的耐热能力是比不上机械硬盘的,温度过高,会引发电子芯片中的电子迁移现象,极大地缩短固态硬盘闪存颗粒的寿命,一点造成过热损伤,在物理结构上来说是不可逆的损伤。固态硬盘SSD在出厂前一般都要进行高低温测试,如70°C~75°C的高温测试。

突然断电(包括突然停电、硬关机等)算是一个比较常见的隐形杀手,固态硬盘SSD其实比较怕突然断电,因为固态硬盘是通过电信号擦除写入数据的,频繁的突然断电可能会令数据出现丢失的现象。

如果需要为电脑换装固态硬盘,可以推荐以下品牌的一些固态硬盘,多为TLC固态硬盘。

电脑升级、加装M.2 NVMe PCIe3.0固态硬盘(SSD),选购无忧,提升电脑性能

电脑加装M.2 NVMe PCIe4.0固态硬盘(SSD),升级选购,提升性能无忧

相关文章:

【重点】【NAND】聊聊固态硬盘SSD的寿命及其影响因素

固态硬盘是由主控芯片、存储颗粒芯片组成的闪存设备,固体硬盘的英文简称是SSD,如果是移动用的固态硬盘,则其英文简称为PSSD。 固态硬盘SSD分工业级和消费级等,目前,工业级固态硬盘SSD通常采用MLC闪存,而消…...

数据库约束

文章目录 1. 简介2. 代码演示3. 外键约束4. 外键删除和更新行为 1. 简介 概念:约束时作用于表中子段上的规则,用于限制存储在表中的shuju目的:保证数据库中数据的正确、有效性和完整性分类: 约束描述关键字非空约束限制该字段不…...

Unity实现MQTT服务器

首先下载MqttNet:MqttNet下载地址 解压好后使用vs打开,并生成.dll文件(我这里下载的是4.1.2.350版本) 然后再/Source/MQTTnet/bin/Debug/net452 文件夹中找到生成的文件 新建unity工程,创建Plugins文件夹&#xff0…...

Linux(centos) 下 Mysql 环境安装

linux 下进行环境安装相对比较简单,可还是会遇到各种奇奇怪怪的问题,我们来梳理一波 安装 mysql 我们会用到下地址: Mysql 官方文档的地址,可以参考,不要全部使用 https://dev.mysql.com/doc/refman/8.0/en/linux-i…...

决策树(Decision Tree)

决策树的定义: 分类决策树模型是一种描述对实例进行分类的树形结构。决策树由结点(node)和有向边(directed edge)组成。结点有两种类型: 内部结点(internal node)和叶结点(leaf node&#xff0…...

解决 PaddleClas 下载预训练模型报错 ModuleNotFoundError No module named ‘ppcls‘ 的问题

当我们在使用 PaddleClas 进行预训练模型下载时,可能会遇到一个报错,报错信息为 ModuleNotFoundError: No module named ppcls。这个错误通常是因为 Python 解释器无法找到名为 ppcls 的模块,而我们的代码中正尝试导入它。让我们一起来解决这…...

视觉化洞察:为什么我们需要数据可视化?

为什么我们需要数据可视化?这个问题在信息时代变得愈发重要。数据,如今已成为生活的一部分,我们每天都在产生大量的数据,从社交媒体到购物记录,从健康数据到工作表现,数据无处不在。然而,数据本…...

C语言函数概述——拜佛代码

函数是一种可重用的代码块&#xff0c;用于执行特定任务或完成特定功能函数作用&#xff1a;对具备相同逻辑的代码进行封装&#xff0c;提高代码的编写效率&#xff0c;实现对代码的重用函数作用演示代码&#xff1a; #include <stdio.h>// 定义函数 void func() {print…...

防火墙日志分析工具

防火墙提供对进入组织网络的网络流量的来源和类型的可见性&#xff0c;这使得防火墙日志成为重要的信息源&#xff0c;包括所有连接的源地址、目标地址、协议和端口号等详细信息&#xff0c;此信息可以提供对未知安全威胁的见解&#xff0c;是威胁管理中的重要工具。 防火墙日…...

Autofac中多个类继承同一个接口,如何注入?与抽象工厂模式相结合

多个类继承同一个接口,如何注入&#xff1f;与抽象工厂模式相结合 需求: 原来是抽象工厂模式,多个类继承同一个接口。 现在需要使用Autofac进行选择性注入。 Autofac默认常识: Autofac中多个类继承同一个接口,默认是最后一个接口注入的类。 解决方案&#xff1a;(约定大于配…...

Django系列之日志配置

如何配置 settings.py 文件中增加如下日志模块 """logger 配置""" LOGGING {version: 1,disable_existing_loggers: False, # 是否去掉目前项目中其他地方中以及使用的日志功能&#xff0c;但是将来我们可能会引入第三方的模块&#xff0c;里…...

四轴飞行器传感器(SimulinkMatlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

学习 使用pandas库 DataFrame 使用

1 、 数据排序 sort_values()函数 by:要排序的名称或名称列表&#xff0c; sorted_df df.sort_values(byAge,ascendingFalse) 由大到小排序&#xff1b; sorted_df df.sort_values(byAge) 由小到大排序&#xff1b; # 创建一个示例数据帧 data {Name: [Tom, Nick, John…...

C++字符串详解

C 大大增强了对字符串的支持&#xff0c;除了可以使用C风格的字符串&#xff0c;还可以使用内置的 string 类。string 类处理起字符串来会方便很多&#xff0c;完全可以代替C语言中的字符数组或字符串指针。 string 是 C 中常用的一个类&#xff0c;它非常重要&#xff0c;我们…...

vant2 van-calendar组件增加清除按钮和确定按钮

利用自定义插槽增加一个清除按钮 <van-calendar ref"fTime1" select"selectTimePicker" confirm"changeTimePicker" :default-date"null" :show-confirm"false" v-model"timePickerShow" type"range&quo…...

Spring redis使用报错Read timed out排查解决

文章目录 使用场景报错信息解决方式 使用场景 我们使用redis作为缓存服务&#xff0c;缓存一些业务数据&#xff0c;如路口点位信息、渠化信息、设备信息等有一些需要实时计算的数据&#xff0c;缓存在redis里&#xff0c;如实时信号周期相位、周期内过车数量等有需要不同服务…...

C语言每日一练-------Day(9)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;字符个数统计 多数元素 投票法 &#x1f493;博主csdn个人主页&#xf…...

SpringCloud(十)——ElasticSearch简单了解(三)数据聚合和自动补全

文章目录 1. 数据聚合1.1 聚合介绍1.2 Bucket 聚合1.3 Metrics 聚合1.4 使用 RestClient 进行聚合 2. 自动补全2.1 安装补全包2.2 自定义分词器2.3 自动补全查询2.4 拼音自动补全查询2.5 RestClient 实现自动补全2.5.1 建立索引2.5.2 修改数据定义2.5.3 补全查询2.5.4 解析结果…...

二叉查找树(binary search tree)(难度7)

C数据结构与算法实现&#xff08;目录&#xff09; 答案在此&#xff1a;二叉查找树&#xff08;binary search tree&#xff09;&#xff08;答案&#xff09; 写在前面 部分内容参《算法导论》 基本接口实现 1 删除 删除值为value的第一个节点 删除叶子节点1 删除叶子节…...

windows环境装MailHog

背景&#xff1a;win10系统&#xff0c;windows 宝塔&#xff0c;laravel 项目&#xff0c;邮件相关需要装一个MailHog 下载地址&#xff1a;https://sourceforge.net/projects/mailhog.mirror/ 直接下载&#xff0c;下载后双击运行就可以了&#xff0c;系统可能提示”不信任“…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...