深入解析SSD中MLC与SLC的性能差异

2024-02-21 14:32

本文主要是介绍深入解析SSD中MLC与SLC的性能差异,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

from: http://blog.sina.com.cn/s/blog_502c8cc40100pztk.html

 

     固态硬盘( Solid State Disk Solid State Drive ),也称作电子硬盘或者固态电子盘,是由控制单元和固态存储单元( DRAM FLASH 芯片)组成的硬盘。    

  固态硬盘的接口规范和定义、功能及使用方法上与普通硬盘的相同,在产品外形和尺寸上也与普通硬盘一致。由于固态硬盘没有普通硬盘的旋转介质,因而抗震性极佳。其芯片的工作温度范围很宽( -40~85 摄氏度)。目前广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空等、导航设备等领域。  

  本文将详细解析 SSD 固态硬盘的工作原理,并解析 SLC MLC 两种不同的固态硬盘在性能和安全性上的差异。  

   SSD 工作原理  

  下面是一个关于 NAND 闪盘的原理塔图。从下图我们可以看到,每一个 单元 就是由一个这样的晶体管组成的。  

深入解析SSD中MLC与SLC的性能差异

在单级单元( SLC )闪存设备中,一个晶体管可容纳 1- 比特数据。您通过电子通道将数据写入单元;将足够高的电压加于两端,创造一个足够强大的电场,电子将穿透氧化物进入浮动门。消除电压,电子将继续停留在浮动门。将电压穿越通道而不施加到门上,扭转偏压,电子将向另一个方向移动。  

  简单的说,这就是闪盘的工作原理 - 你有两种状态, 0 1 ,即使单元没有电了,状态也会维持住,因此对存储设备来说是非常理想的。  

  编程闪存是一个反复的过程。该控制器将电压施于门(或通道)上,允许一些电子穿过并检查单元的临界电压。当临界电压已达到一些预定的值时,就开始编程并储存数据了。  

   MLC SLC 的区别  

  目前 SSD 硬盘使用两种形式的 NAND 闪存:单级单元( SLC )和多级单元( MLC )。两者之间的差额是每单元存储的数据量, SLC 每单元存储 1 比特而 MLC 每单元存储 2 比特。关键在于, SLC MLC 占据了相同大小的芯片面积。因此,在同样的价格下, MLC 可以有两倍容量的效果。  

   STEC SLC MLC 闪存实际上使用了相同的晶体管,不同之处在于怎样读 / 写这两个闪存。 SLC 只有两个电压符,因为它只有两个状态( 0 1 )。 MLC 却有四个状态( 00 01 10  11 ),因此需要花费较长的时间来访问,因为你不想意外写入错误的数据;您已有了相同的最大、最小电压,您现在仅仅有它们两者之间更多的刻度:  

深入解析SSD中MLC与SLC的性能差异


  SLC (left) vs. MLC (right)  

  下面是一个关于 SLC MLC 性能基本数据的表格:

深入解析SSD中MLC与SLC的性能差异

     SLC MLC 的擦除性能是一样的, MLC 闪存的读取性能需花费两倍长的时间,写入性能需花费四倍长的时间。如果您以前听说过有人抱怨 MLC 写入速度,这就是部分原因。不过一定要记住,我们在这里谈论的这些数字低得离谱 —— 甚至 900 微秒写入 MLC 闪存的速度都远远超过向普通机械硬盘的写入速度。    

   SLC 的最大优势不在于它的性能好而在于它的使用寿命长。要了解闪存的耐用性,我们首先需要看看存储设备的内部构造。  
  闪存层次和数据丢失  

  我们已经证实了一个闪存单元可以储存一个还是两个比特取决于它是 SLC 还是 MLC 设备。把一群单元聚集到一起,就得到了一个 page page 是您可以编程(写入) NAND 闪存装置最小的结构。  

  大部分 MLC NAND 闪存的每一 page 4KB 。一个 block 是由许多 page 组成的,在 STEC MLC SSD 中一个 block 包含 128 pages 128 pages x 4KB/page = 512KB/block = 0.5MB Block 是您可以擦除得最小结构。  

  因此,当您写入 SSD 时,您一次可写入 4KB 数据;但是当您从 SSD 擦除数据时,您一次不得不删除 512KB 。过会儿,我会进一步探讨这个问题,但现在让我们看看当您从一个 SSD 删除数据时会发生什么事情。  
深入解析SSD中MLC与SLC的性能差异


     无论何时您将数据写入闪存,我们都会反复经历同样的编程过程。创建一个电场,电子穿过氧化物并储存电荷。擦除数据会导致同样的事情发生,但却向着相反的方向。问题是电子穿过氧化物的次数越多,就会变的越弱,最终将电压也不能再阻止电子的自由活动了。这时候,SSD的这个单元就发生故障了。 

  大约经过一万次擦除/编程周期后,MLC闪存才会最终出现那个问题。而SLC可使用十万次,这得益于它的简单设计。 
  由于寿命有限,所以SSD必须非常小心地选择擦除/编程每个单元的时间和方式。请注意,您可以从一个单元里读取数据,多少次都行,这并不减少单元存储数据的能力。只有擦除/编程周期才会降低了寿命。 

  此外需要注意的是,因为SSD没有擦除block这个概念,唯一擦除block的时候就是写入新数据的时候。如果您删除Windows里的一个文件而没有创建新的文件,SSD实际上并没有从闪存中移走这个数据,除非您准备好写入新的数据。 
SSD如何保证使用寿命 

  现在回到编程和擦除SSD数据之间方式的差异上来。您在page上编程,在block上擦除数据。假设您保存了一个8KB的文件,之后决定要删除它,这可能是您写给自己的简单便条,表示您不再需要了。 

  您保存该文件时,它会以2 pages的形式保存在闪存记忆体中;您将其删除时,SSD会标记pages为无效,但实际上并不会删除该block。SSD将等到block中一定比例的pages被标记为无效时,才会复制一些有效的数据到新的pages里去并擦除该block。SSD这样做是为了限制了每个block擦除的次数,从而延长驱动器寿命。 

  但是并非所有的SSD都采用同样的方式来处理删除请求,因此,从硬盘原理上来说,如何处理删除请求对SSD安全性产生较大的影响。 

  我们已经从概况的角度介绍了SLC SSD与MLC SSD的不同,并且阐述了一般SSD的设计者如何通过编程和算法来保证SSD的性能和安全性。希望以上的叙述能帮助读者进一步了解SSD,进而能够帮助读者准确地选择合适的SSD。


这篇关于深入解析SSD中MLC与SLC的性能差异的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/732104

相关文章

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结

Spring Boot 3.x 中 WebClient 示例详解析

《SpringBoot3.x中WebClient示例详解析》SpringBoot3.x中WebClient是响应式HTTP客户端,替代RestTemplate,支持异步非阻塞请求,涵盖GET... 目录Spring Boot 3.x 中 WebClient 全面详解及示例1. WebClient 简介2.

在MySQL中实现冷热数据分离的方法及使用场景底层原理解析

《在MySQL中实现冷热数据分离的方法及使用场景底层原理解析》MySQL冷热数据分离通过分表/分区策略、数据归档和索引优化,将频繁访问的热数据与冷数据分开存储,提升查询效率并降低存储成本,适用于高并发... 目录实现冷热数据分离1. 分表策略2. 使用分区表3. 数据归档与迁移在mysql中实现冷热数据分

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

Spring Boot3.0新特性全面解析与应用实战

《SpringBoot3.0新特性全面解析与应用实战》SpringBoot3.0作为Spring生态系统的一个重要里程碑,带来了众多令人兴奋的新特性和改进,本文将深入解析SpringBoot3.0的... 目录核心变化概览Java版本要求提升迁移至Jakarta EE重要新特性详解1. Native Ima

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

Zabbix在MySQL性能监控方面的运用及最佳实践记录

《Zabbix在MySQL性能监控方面的运用及最佳实践记录》Zabbix通过自定义脚本和内置模板监控MySQL核心指标(连接、查询、资源、复制),支持自动发现多实例及告警通知,结合可视化仪表盘,可有效... 目录一、核心监控指标及配置1. 关键监控指标示例2. 配置方法二、自动发现与多实例管理1. 实践步骤