传统机械硬盘和固态硬盘(SSD)的区别

来源:互联网 发布:会话php 编辑:程序博客网 时间:2024/06/11 09:10
在讨论对文件或者数据块的顺序读写或者随机读写的时候,在SSD这种固态硬盘上是没有意义的,因为大家估计都知道固态硬盘没有像传统的机械硬盘的那种寻址操作,下面我简单的列出两者之间的区别。
  1. 传统的机械硬盘,无图无真相:


    所以的磁盘盘面都是平行的,每一个盘面都有一个磁头,盘面高速旋转,磁头在盘面上内径和外径之间来回移动,这样就可以完成整个磁盘的读写操作。
    这里有三个概念:
    a. 寻道时间:是指的磁头移动到正确的磁道上的时间,磁盘平均寻道时间大概在3-15ms之间
    b. 旋转延迟:指的是数据请求的扇区移至磁头的下方所需时间,旋转延迟通常是磁盘旋转一周所需时间的1/2,比如我们平常用的7200转的硬盘平均旋转延迟60*1000/7200/2=4.17ms
    c. 传输时间:是指数据传输到对应的扇区所需时间,目前的SATAII可以到达300M/s,跟前两者相比完全可以忽略不计。

    所以可以看见随机读写和顺序读写主要的时间都花费在寻道和磁盘旋转延迟上了。而固态硬盘没有这种操作。
    下图列出了顺序访问和随机访问的一个模拟图:


  2. 固态硬盘


    固态硬盘(Solid State Disk),没有了机械硬盘磁盘磁头和马达电机这些玩意了,不再使用碟片作为存储单元,而是采用Flash Memory,这是一种电子式可擦除程序化只读存储器,所以不会存在磁头机械寻址的操作,再加上控制器组成硬盘。
    更加细一点的东西是,SSD的存储单元分为单级单元SLC和多级单元MLC,其差别在于存储的数据量SLC存储一个bit的数据,MLC可以存储两个bit的数据量,因为SLC存储有两个电压符,只能表示两种状态0或1,而MLC有四个,可以表示四种状态(00,01,10,11),因此在相同大小的芯片面积,MLC是SLC的两倍,但是应为MLC一个单元的数据量是SLC的两倍,所以对一个存储单元的读取速度,MLC是SLC的两倍,而写入速度更是达到了四倍,但是即使是这样也比机械硬盘快很多很多。很多块存储单元组合成一个page,Page是最小的可编程单元,就像是硬盘的最小可写入单元是扇区一样,通常大小在4k。另一个单位就是Block,这里的block应该是指的是控制器里的存储单位,在MLC的 SSD中一个block的大小为128个page,也就是512k。


    然后再由多个block组成Plane,通常一个Plane包含1024个Block,那么大小就为512M


    然后一个Plane组成一颗核心(die),通常闪存片就包含2-8颗Plane,然后SSD再由多个闪存片组成了现在的SSD。
    具体可以参考:http://www.expreview.com/19604-13.html

    我们再来看看SSD的写入方式,SSD的数据写入跟普通机械盘完全不一样,不是简单的覆盖,因为设计的原因写入的操作是以page为单位也就是4k,而擦除操作的最小单元是block,所以对一个块的写入,如果你要想保留其他块的内容,那么它就要先将其他块读入到SSD缓存里,然后再修改后写回,所以每次写到盘上的数据都比实际的多。
    因为相对于SSD来说不存在像机械硬盘的寻址,访问磁盘不同逻辑扇区的时间几乎都是一样的,所以IO调度算法对其没有多大的影响,反而耗费了CPU的时间,所以在SSD的环境中应该用NOOP调度器来替换内核默认的CFQ调度器。


很多信息取源于互联网。




0 0
原创粉丝点击