深入解析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

相关文章

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

一文解析C#中的StringSplitOptions枚举

《一文解析C#中的StringSplitOptions枚举》StringSplitOptions是C#中的一个枚举类型,用于控制string.Split()方法分割字符串时的行为,核心作用是处理分割后... 目录C#的StringSplitOptions枚举1.StringSplitOptions枚举的常用

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4

MyBatis延迟加载与多级缓存全解析

《MyBatis延迟加载与多级缓存全解析》文章介绍MyBatis的延迟加载与多级缓存机制,延迟加载按需加载关联数据提升性能,一级缓存会话级默认开启,二级缓存工厂级支持跨会话共享,增删改操作会清空对应缓... 目录MyBATis延迟加载策略一对多示例一对多示例MyBatis框架的缓存一级缓存二级缓存MyBat

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

前端缓存策略的自解方案全解析

《前端缓存策略的自解方案全解析》缓存从来都是前端的一个痛点,很多前端搞不清楚缓存到底是何物,:本文主要介绍前端缓存的自解方案,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、为什么“清缓存”成了技术圈的梗二、先给缓存“把个脉”:浏览器到底缓存了谁?三、设计思路:把“发版”做成“自愈”四、代码

Java集合之Iterator迭代器实现代码解析

《Java集合之Iterator迭代器实现代码解析》迭代器Iterator是Java集合框架中的一个核心接口,位于java.util包下,它定义了一种标准的元素访问机制,为各种集合类型提供了一种统一的... 目录一、什么是Iterator二、Iterator的核心方法三、基本使用示例四、Iterator的工

Java JDK Validation 注解解析与使用方法验证

《JavaJDKValidation注解解析与使用方法验证》JakartaValidation提供了一种声明式、标准化的方式来验证Java对象,与框架无关,可以方便地集成到各种Java应用中,... 目录核心概念1. 主要注解基本约束注解其他常用注解2. 核心接口使用方法1. 基本使用添加依赖 (Maven