1、机械硬盘和固态硬盘的工作原理机械硬盘和固态硬盘的工作原理 首先了解一下机械硬盘的工作原理首先了解一下机械硬盘的工作原理1 1机械硬盘结构复杂机械硬盘结构复杂上图是一款机械硬盘结构图。机械硬盘的结构基本都是一样上图是一款机械硬盘结构图。机械硬盘的结构基本都是一样的:的:电路板上的主控制器芯片负责与芯片组之间的通信并且控制电路板上的主控制器芯片负责与芯片组之间的通信并且控制硬盘内部的运转;硬盘内部的运转;盘片是用磁性材料做成的,固定在硬盘中部的马达上旋转;盘片是用磁性材料做成的,固定在硬盘中部的马达上旋转;磁头则沿着盘片的径向移动。磁头则沿着盘片的径向移动。磁头读取、写入数据时会在盘片上方移动,移
2、动过程也叫硬磁头读取、写入数据时会在盘片上方移动,移动过程也叫硬盘寻道的过程盘寻道的过程至于至于“寻道寻道”,则是和盘片的结构有关。,则是和盘片的结构有关。结构图结构图盘片结构盘片结构盘片上划分为一圈一圈的同心圆环,每个圆环即一个磁道。早期盘片上划分为一圈一圈的同心圆环,每个圆环即一个磁道。早期的机械硬盘从圆心出发向四周发散出角间距相等的一系列直线的机械硬盘从圆心出发向四周发散出角间距相等的一系列直线(当然实际上没有直线存在),直线与同心圆线围成的最小区域(当然实际上没有直线存在),直线与同心圆线围成的最小区域就是一个扇区(如上图)。这样的划分,在硬盘的容量不大的年就是一个扇区(如上图)。这样
3、的划分,在硬盘的容量不大的年代还是简单易行,但是随着硬盘技术的进步,磁道的划分越来越代还是简单易行,但是随着硬盘技术的进步,磁道的划分越来越密集,必然导致外圈的扇区物理长度远远大于内圈的扇区,造成密集,必然导致外圈的扇区物理长度远远大于内圈的扇区,造成浪费。所以现在的硬盘都不用圆心发散的直线来划分扇区了,而浪费。所以现在的硬盘都不用圆心发散的直线来划分扇区了,而是从外圈磁道开始取一定长度作为一个扇区,然后从外向里一个是从外圈磁道开始取一定长度作为一个扇区,然后从外向里一个一个编号下去。这个编号就是扇区的地址,我们要确定文件在哪一个编号下去。这个编号就是扇区的地址,我们要确定文件在哪里全靠这个地
4、址。扇区都有固定的大小,一般是里全靠这个地址。扇区都有固定的大小,一般是512字节,现在字节,现在的支持先进格式化的硬盘都采用的支持先进格式化的硬盘都采用4096字节作为一个扇区了。字节作为一个扇区了。从以上叙述中,我们已经可以看到,机械硬盘要读出数据,从以上叙述中,我们已经可以看到,机械硬盘要读出数据,必须要磁头找到对应的磁道和扇区(对于多碟的机械硬盘首必须要磁头找到对应的磁道和扇区(对于多碟的机械硬盘首先需要确定柱面),这全部依靠磁头的驱动马达来驱动(磁先需要确定柱面),这全部依靠磁头的驱动马达来驱动(磁头本身是依靠盘片旋转产生的气流来悬浮的)。马达等等机头本身是依靠盘片旋转产生的气流来悬
5、浮的)。马达等等机械装置的反应速度毕竟不快,所以机械硬盘会浪费大量的时械装置的反应速度毕竟不快,所以机械硬盘会浪费大量的时间用于寻道操作(每次寻道大约间用于寻道操作(每次寻道大约10ms左右)。尤其是对于零左右)。尤其是对于零碎的小文件读写来说,由于文件所在扇区不连续,需要不断碎的小文件读写来说,由于文件所在扇区不连续,需要不断地要进行寻道,这样就产生很悲剧的性能。但是对于持续读地要进行寻道,这样就产生很悲剧的性能。但是对于持续读写来说,由于不需要进行不断地寻道,所以不存在寻道时间。写来说,由于不需要进行不断地寻道,所以不存在寻道时间。所以机械硬盘的随机读写能力很差(不超过所以机械硬盘的随机读
6、写能力很差(不超过0.1MB每秒),每秒),但是持续读写能力并不差(而且随着单碟容量的提升和磁盘但是持续读写能力并不差(而且随着单碟容量的提升和磁盘阵列的组建,持续读写速度可以比固态硬盘更快)。阵列的组建,持续读写速度可以比固态硬盘更快)。到这里你们或许要问:为什么使用固态硬盘的电脑到这里你们或许要问:为什么使用固态硬盘的电脑 普遍比使用普遍比使用机械硬盘的电脑反应快呢?机械硬盘的电脑反应快呢?这是因为,系统分区在日常中进行的读写操作绝大这是因为,系统分区在日常中进行的读写操作绝大部分都是随机文件读写,这正是机械硬盘的软肋所部分都是随机文件读写,这正是机械硬盘的软肋所在,因为机械硬盘在这种情况
7、下花费在寻道这件事在,因为机械硬盘在这种情况下花费在寻道这件事上的时间非常多,其他硬件不得不停下来等待。如上的时间非常多,其他硬件不得不停下来等待。如果你使用机械硬盘作为非系统盘,那么性能和固态果你使用机械硬盘作为非系统盘,那么性能和固态硬盘的差别不大硬盘的差别不大比如一部电影放在比如一部电影放在SSD和和HDD上去播放,这个没什么区别。上去播放,这个没什么区别。提高提高HDD性能的方法之一是组建磁盘阵列。磁盘阵列有多种类性能的方法之一是组建磁盘阵列。磁盘阵列有多种类型,而且有些阵列是为了保证数据的安全,作为自动备份而组型,而且有些阵列是为了保证数据的安全,作为自动备份而组建的,这一类我们暂时
8、不去谈。通常用于提高性能的磁盘阵列建的,这一类我们暂时不去谈。通常用于提高性能的磁盘阵列是是RAID0.比如,使用比如,使用4块硬盘组建块硬盘组建RAID0之后,当有数据从芯之后,当有数据从芯片组传输给硬盘,这个数据会被自动划分成片组传输给硬盘,这个数据会被自动划分成4部分,每个硬盘各部分,每个硬盘各自存储一部分,这样的话理想状态下自存储一部分,这样的话理想状态下RAID0下写入速度翻倍;下写入速度翻倍;读取也是类似的原理,每个硬盘各自拿出各自的数据,理想状读取也是类似的原理,每个硬盘各自拿出各自的数据,理想状态下读取速度也是翻倍的。态下读取速度也是翻倍的。磁盘阵列:磁盘阵列:RAID0但是但
9、是RAID0对于机械硬盘随机读写并没有什么明显作用。所对于机械硬盘随机读写并没有什么明显作用。所以要凭借组建以要凭借组建RAID0来提高系统盘的性能,很困难。但是来提高系统盘的性能,很困难。但是RAID0的原理却也是应用在我们之后要讲到的的原理却也是应用在我们之后要讲到的SSD上的。上的。不得不说的不得不说的U盘盘2 2为什么要说为什么要说U盘?因为盘?因为U盘和固态硬盘是类似的盘和固态硬盘是类似的结构。结构。这张图是雷克沙这张图是雷克沙16G的的U盘拆解图。其实盘拆解图。其实U盘的最重要盘的最重要部件就两个:主控制器芯片,还有部件就两个:主控制器芯片,还有NAND闪存颗粒。闪存颗粒。主控制器
10、芯片负责与芯片组进行通信,并且负责操作主控制器芯片负责与芯片组进行通信,并且负责操作NAND颗粒;而颗粒;而NAND颗粒本身就是一个存储器件。颗粒本身就是一个存储器件。你可以将其理解成为很多电容器组合成的装置。你可以将其理解成为很多电容器组合成的装置。固态硬盘的原理固态硬盘的原理3 3这张图是这张图是CrucialM4-CT128M4SSD2固态硬盘拆解之后的固态硬盘拆解之后的电路板。对比上面的雷克沙电路板。对比上面的雷克沙U盘拆解图,你发现了什么?盘拆解图,你发现了什么?没错,结构和那个U盘很像,只不过NAND闪存芯片更多而已。附上这个电路板的背面照片。重点是那颗DRAM缓存颗粒。除去这个颗
11、粒之外,其他的结构和U盘完全类似。1、NAND颗粒NAND颗粒之间的关系,类似于颗粒之间的关系,类似于RAID0。那么固态硬盘可以。那么固态硬盘可以看做是看做是“由由U盘组成的盘组成的RAID0”。NAND是半导体存储颗粒的一种(还有其他的种类,比如是半导体存储颗粒的一种(还有其他的种类,比如NOR(NOR的特点是芯片内执行,应用程序可以直接在的特点是芯片内执行,应用程序可以直接在flash闪存内运行闪存内运行,不必再把代码读到系统不必再把代码读到系统RAM中)但是中)但是NOR不用在这些东西上)。至于这个颗粒的物理结构是如不用在这些东西上)。至于这个颗粒的物理结构是如何,这个暂时不用深究。我
12、们需要关心的是何,这个暂时不用深究。我们需要关心的是NAND如何存如何存储和读取数据。储和读取数据。简单地说,简单地说,NAND可以视作是由很多很多个电容器组成的集成电可以视作是由很多很多个电容器组成的集成电路。路。NAND分为分为SLC(SingleLevelCell)、)、MLC(Multi-LevelCell)、)、TLC(Trinary-LevelCell)等等(目前只有这三种)。)等等(目前只有这三种)。从名字就可以看出区别:从名字就可以看出区别:SLC是是“单层单层”,MLC是是“双层双层”,TLC是是“三层三层”。事实上可以这样理解:。事实上可以这样理解:SLC是指分别将电容器是
13、指分别将电容器的充电状态(有电荷)和放电状态(无电荷)视为的充电状态(有电荷)和放电状态(无电荷)视为0和和1;MLC则是电荷全满、电荷则是电荷全满、电荷2/3、电荷、电荷1/3、无电荷这四种状态,定义成、无电荷这四种状态,定义成00、01、10、11;TLC则是又增加了几个中间值,有则是又增加了几个中间值,有000至至111这这八种定义。那么八种定义。那么SLC的一个的一个Cell(一个(一个“电容器电容器”)只能存储)只能存储1bit,MLC是是2bit,TLC则是则是3bit。同时也很自然地可以明白,。同时也很自然地可以明白,SLC可以很清楚地判断一个可以很清楚地判断一个cell里面到底
14、是里面到底是0还是还是1;但是;但是MLC就就不太容易判断了,因为不同量的电荷表示不同的数据,电荷稍有不太容易判断了,因为不同量的电荷表示不同的数据,电荷稍有流失就会导致出错;流失就会导致出错;TLC出错的几率更大。所以从稳定性而言,出错的几率更大。所以从稳定性而言,SLC最佳,最佳,MLC次之,次之,TLC最差。另外这些最差。另外这些Cell都是有都是有“惰性惰性”的,连续充电放电若干次之后就无法保存电荷了,造成数据出错。的,连续充电放电若干次之后就无法保存电荷了,造成数据出错。从这个方面而言,从这个方面而言,SLC也是最耐充放电的,也是最耐充放电的,MLC次之,次之,TLC最最差。所以差。
15、所以SLC使用寿命最长,使用寿命最长,MLC次之,次之,TLC最差。就充放电最差。就充放电速度而言,速度而言,SLC最简单,速度也最快;结构越复杂速度也越慢,最简单,速度也最快;结构越复杂速度也越慢,所以所以MLC次之,次之,TLC最慢。最慢。从上一段总结出,无论是速度还是稳定性,从上一段总结出,无论是速度还是稳定性,SLC都是最佳的选都是最佳的选择,择,MLC次之,次之,TLC最差。但是我们也知道了同样的一个最差。但是我们也知道了同样的一个“电电容器容器”,SLC存储的信息只有存储的信息只有MLC的的1/2,也是,也是TLC的的1/4,所,所以以SLC的成本也是最高,而且无法做成容量很大的芯
16、片。目前的成本也是最高,而且无法做成容量很大的芯片。目前SLC的的NAND产品大多数用于企业级的半导体存储器上,民用产品大多数用于企业级的半导体存储器上,民用以以MLC和和TLC为多。为多。继续讲继续讲NAND。数据在。数据在NAND中不能没有组织,否则无论什么设中不能没有组织,否则无论什么设备都不能读出这些数据究竟是什么。类似于机械硬盘的扇区,固备都不能读出这些数据究竟是什么。类似于机械硬盘的扇区,固态硬盘也有自己最小的文件存储单位,叫做态硬盘也有自己最小的文件存储单位,叫做Page。目前的。目前的NAND颗粒,颗粒,Page的大小并不一致,但是也只有两种:的大小并不一致,但是也只有两种:4
17、KB或者或者8KB(1KB=1024字节)。字节)。Page相当于一组规律化组合的相当于一组规律化组合的“电容电容器器”。机械硬盘上的文件必须占用整数个扇区;固态硬盘也是类。机械硬盘上的文件必须占用整数个扇区;固态硬盘也是类似,任何文件占用的空间必须是整数个似,任何文件占用的空间必须是整数个Page。这个与文件系统。这个与文件系统无关,属于硬件层面。无关,属于硬件层面。Page上面的一层组织是上面的一层组织是Block。128个或者个或者256个个Page组成一个组成一个Block。拿。拿CrucialM4-CT128M4SSD2来说,它的来说,它的NAND颗粒的颗粒的一个一个Page是是4K
18、B,128个个Page组成一个组成一个Block(一组固定的规律(一组固定的规律性组合的性组合的Page),所以一个),所以一个Block是是512KB。上一段已经说过,。上一段已经说过,NAND的最小写入单位是的最小写入单位是Page,任何文件都必须占用整数个,任何文件都必须占用整数个Page。这里的。这里的Block也有类似作用:任何的擦除(也有类似作用:任何的擦除(“电容器电容器”放电)都必须是整数个放电)都必须是整数个Block。也就是说你要擦除。也就是说你要擦除NAND里面里面存储的信息,每次最少擦除一个存储的信息,每次最少擦除一个Block,也可以擦除任意整数,也可以擦除任意整数(
19、当然不能是负数)个(当然不能是负数)个Block;但是你想擦除单独某个;但是你想擦除单独某个Page,那么对不起,办不到。一定数量(那么对不起,办不到。一定数量(2的幂次方)的的幂次方)的Block构成更构成更高一级的结构高一级的结构Plane,然后一般是两个,然后一般是两个Plane组成一个组成一个Die,这,这个就是我们看到的一个芯片了。个就是我们看到的一个芯片了。借用一张图来说明借用一张图来说明NAND的组织结构(图中的这个的组织结构(图中的这个NAND的的Block由由256个个Page组成,所以一个组成,所以一个Block是是1024KB):):NAND有个特性:你要读取有个特性:你
20、要读取NAND中的信息,那么速度会很快;但中的信息,那么速度会很快;但是如果你要给是如果你要给NAND写入信息,尤其是写入信息,尤其是NAND原有的信息需要覆盖原有的信息需要覆盖的时候,速度会非常非常慢。但是无论是读还是写,操作系统本身的时候,速度会非常非常慢。但是无论是读还是写,操作系统本身甚至于电脑本身都是无法控制甚至于电脑本身都是无法控制NAND芯片的。操作芯片的。操作NAND芯片需要芯片需要借助于主控制器芯片。主控芯片也是影响借助于主控制器芯片。主控芯片也是影响SSD性能的最重要因素之性能的最重要因素之一。一。根据根据NAND的物理结构,的物理结构,NAND是通过绝缘层存储数据的。是通
21、过绝缘层存储数据的。当你要写入数据,需要施加电压并形成一个电场,这样电子当你要写入数据,需要施加电压并形成一个电场,这样电子就可以通过绝缘体进入到存储单元,此时完成写入数据。如就可以通过绝缘体进入到存储单元,此时完成写入数据。如果要删除存储单元果要删除存储单元(数据数据),则要再次施加电压让电子穿过绝,则要再次施加电压让电子穿过绝缘层,从而离开存储单元。缘层,从而离开存储单元。所以,所以,NAND闪存在重新写入新数据之前必须要删除原来数闪存在重新写入新数据之前必须要删除原来数据。据。NANDFLASH的数据储存原理的数据储存原理闪存的存储单元为三端器件,与场效应管有相同的名称:源闪存的存储单元
22、为三端器件,与场效应管有相同的名称:源极、漏极和栅极。栅极与硅衬底之间有二氧化硅绝缘层,用极、漏极和栅极。栅极与硅衬底之间有二氧化硅绝缘层,用来保护浮置栅极中的电荷不会泄漏。采用这种结构,使得存来保护浮置栅极中的电荷不会泄漏。采用这种结构,使得存储单元具有了电荷保持能力,就像是装进瓶子里的水,当你储单元具有了电荷保持能力,就像是装进瓶子里的水,当你倒入水后,水位就一直保持在那里,直到你再次倒入或倒出,倒入水后,水位就一直保持在那里,直到你再次倒入或倒出,所以闪存具有记忆能力。所以闪存具有记忆能力。2、主控芯片任何存储设备都有主控制器芯片的,否则主板南桥芯片(或者intel现在使用的单芯片组)无
23、法直接与存储层进行通信。从开篇讲的HHD的结构,到后来讲到的U盘、SSD,主控芯片都是最最重要的部件之一。主控制器芯片大多数都是一个主控制器芯片大多数都是一个ARM处理器(手机上的就处理器(手机上的就是是ARM处理器)处理器)主控负责与芯片组之间的通信,接受主控负责与芯片组之间的通信,接受ATA指令与数据,并负指令与数据,并负责将数据写入责将数据写入NAND或者从或者从NAND读出。之前谈到读出。之前谈到NAND颗颗粒之间的关系类似于粒之间的关系类似于RAID0,就是说这里主控读入数据会分,就是说这里主控读入数据会分散到各个散到各个NAND颗粒上去,多个颗粒共同读写,这样的话速颗粒上去,多个颗粒共同读写,这样的话速度自然就快了。度自然就快了。THANKS!THANKS!