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

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

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

  SSD工作原理

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


  
  在单级单元(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),因此需要花费较长的时间来访问,因为你不想意外写入错误的数据;您已有了相同的最大、最小电压,您现在仅仅有它们两者之间更多的刻度:

SLC (left) vs. MLC (right)

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


  
  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必须非常小心地选择擦除/编程每个单元的时间和方式。请注意,您可以从一个单元里读取数据,多少次都行,这并不减少单元存储数据的能力。只有擦除/编程周期才会降低了寿命。

  此外需要注意的是,因为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的性能差异的更多相关文章

  1. SSD -----TLC MLC SLC

    SLC缓存什么鬼?TLC评测造假要持续多久 2016.5.5来源:中关村在线 TLC的廉价真的将SSD引入了全面普及的高速公路上,谈到TLC我们更多的理解是TLC的P/E(Program/Erase ...

  2. 何为TLC、MLC、SLC?【转】

    本文转载自:https://blog.csdn.net/weixin_38233274/article/details/79310316 1.一块SSD由主控.DRAM缓存和NAND闪存三种芯片所组成 ...

  3. 浅解析js中的对象

    浅解析js中的对象 原文网址:http://www.cnblogs.com/foodoir/p/5971686.html,转载请注明出处. 前面的话: 说到对象,我首先想到的是每到过年过节见长辈的时候 ...

  4. 深入解析Javascript中this关键字的使用

    深入解析Javascript中面向对象编程中的this关键字 在Javascript中this关键字代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function TestFun ...

  5. js中eval详解,用Js的eval解析JSON中的注意点

    先来说eval的用法,内容比较简单,熟悉的可以跳过eval函数接收一个参数s,如果s不是字符串,则直接返回s.否则执行s语句.如果s语句执行结果是一个值,则返回此值,否则返回undefined. 需要 ...

  6. 2dx解析cocosbuilder中使用layer时的缺陷

    2dx解析cocosbuilder中使用layer时的缺陷 cocos2d-x 3.7 cocosbuilder中的layer通常会用到触摸属性: 但是在2dx解析布局文件的时候,却很多属性都没解析: ...

  7. asp自动解析网页中的图片地址,并将其保存到本地服务器

    程序实现功能:自动将远程页面的文件中的图片下载到本地. 程序代码 <% '将本文保存为 save2local.asp '测试:save2local.asp?url=http://ent.sina ...

  8. XML解析——Java中XML的四种解析方式

    XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四 ...

  9. 转:二十一、详细解析Java中抽象类和接口的区别

    转:二十一.详细解析Java中抽象类和接口的区别 http://blog.csdn.net/liujun13579/article/details/7737670 在Java语言中, abstract ...

随机推荐

  1. Lazarus中TreeView导出XML以及XML导入TreeView

    本来说是要给自己的某程序加一个xml导出功能,但是自己也没接触过xml,加之delphi和lazarus的xml部分还都不一样,折腾好久(整一天)才解决问题.. 如下是作为导出功能的组件部分: uni ...

  2. Facebook发布C++ HTTP框架Proxygen

    Facebook 宣布发布C++ HTTP 框架 Proxygen,其中包括了一个 HTTP server.Proxygen 是 oxygen 的谐音,支持 SPDY/3 和 SPDY/3.1,未来还 ...

  3. VS2008 自定义向导的default.js设置(DLL文件)

    function OnFinish(selProj, selObj) { try { var strProjectPath = wizard.FindSymbol('PROJECT_PATH'); v ...

  4. PHP获取IP信息

    <?php /** * 获取客户端IP * @param integer $type 返回类型 0:string,1:long * @return string|long */ function ...

  5. Jquery 解决 H5 placeholder元素问题

    <style type="text/css"> .placeholder{ color: #cacaca; } </style> <script ty ...

  6. 【转】基于RSA算法实现软件注册码原理初讨

    1 前言 目前,商用软件和共享软件绝大部份都是采用注册码授权的方式来保证软件本身不被盗用,以保证自身的利益.尽管很多常用的许多软件系统的某些版本已经被别人破解,但对于软件特殊行业而言,注册码授权的方式 ...

  7. html5介绍 之亮点特性

    html5 兴起- 乔帮助在2010年发布的:关于对flash的思考,提到有了h5放弃 flash   1 富图形,富媒体      2 本地存储     cookie   3 LBS      基于 ...

  8. IOS研究院之打开照相机与本地相册选择图片

    如下图所示 在本地相册中选择一张图片后,我们将他拷贝至沙盒当中,在客户端中将它的缩略图放在按钮旁边,这个结构其实和新浪微薄中选择图片后的效果一样.最终点击发送将按钮将图片2进制图片上传服务器. 下面我 ...

  9. docker 基于现有镜像修改后保存,上传私有仓库

    docker:/root# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f3cb864be528 192.168.3 ...

  10. Qt入门学习——Qt 5 帮助文档的使用

    Qt入门学习——Qt 5 帮助文档的使用 学习图形界面开发,肯定离不开帮助文档的使用,因为它不像 C 语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必 ...