固态硬盘的作用和工作原理(固态硬盘原理大揭秘)
很多朋友只知道固态硬盘比机械硬盘快,但是却不知道固态硬盘为什么快?以及到底快在哪?
这里需要先了解一下机械硬盘的结构,机械硬盘采用磁性碟片来存储数据,这是机械硬盘的结构图。
储存数据的地方啊就是这个磁盘磁片,把数据写到磁盘磁片的结构啊就是这个磁头。写入以及读取数据的时候呢,这个电机啊就让这个磁盘磁片转起来,然后磁头就会到达要写数据的扇区,把数据写进去。工作原理就有点像那种留声机工作原理。
机械硬盘是上下盘面同时进数据读取的。而且机械硬盘的旋转速度要远高于唱片(目前机械硬盘的常见转速是 7200 r/min),所以机械硬盘在读取或写入数据时,非常害怕晃动和磕碰。另外,因为机械硬盘的超高转速,如果内部有灰尘,则会造成磁头或盘片的损坏,所以机械硬盘内部是封闭的,如果不是在无尘环境下,则禁止拆开机械硬盘。
但是到底机械硬盘到底慢在哪里?其实慢就慢在它的这种工作方式。虽然看似 7200 转每分钟非常快了。但是这依旧比不上采用电子方式的固态硬盘。这就有点像一辆马车与火车在比赛一样,完全没法比的。
但是机械硬盘的优点也是非常明显的,首先机械硬盘的储存的空间非常大而且它的寿命非常的长,关键一点就是突然断电也不会导致数据的丢失。所以比较适合长时间保存一些数据。
另外还有一个区别就是机械硬盘与固态硬盘所使用的数据接口不一样,这就像是火车的路只能火车跑,而马车的路不一样什么都能跑。这就导致火车的路不会堵车,而马车的路就不一样。
固态硬盘
固态硬盘 (Solid State Drive),简称 SSD(固盘),是用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元(FLASH 芯片、DRAM 芯片) 以及缓存单元组成。区别于机械硬盘由磁盘、磁头等机械部件构成,整个固态硬盘结构无机械装置,全部是由电子芯片及电路板组成。
根据固态硬盘的定义,我们可以知道固态硬盘的内部结构,其实就是由三大块主控芯片、闪存颗粒、缓存单元构成,那么接下来,我们逐一来看。
固态硬盘大脑:主控芯片
正如同 CPU 之于 PC 一样,主控芯片其实也和 CPU 一样,是整个固态硬盘的核心器件,其作用一是合理调配数据在各个闪存芯片上的负荷,二则是承担了整个数据中转,连接闪存芯片和外部 SATA 接口。
不同的主控之间能力相差非常大,在数据处理能力、算法上,对闪存芯片的读取写入控制上会有非常大的不同,直接会导致固态硬盘产品在性能上产生很大的差距。
当前主流的主控芯片厂商有 marvell 迈威(俗称 "马牌")、SandForce、siliconmotion 慧荣、phison 群联、jmicron 智微等。而这几大主控厂商,又都有着自己的相应特点,应用于不同层级的固态产品。
以台系厂商 siliconmotion 慧荣为例,此款主控芯片主要特点在于能够为固态硬盘厂商提供包括软件和硬件在内的一体化主控方案,包括主控芯片、电路板以及存储单元,能够极大的提升产品的更新速度和使用寿命,并且不存在兼容等问题。
核心器件:闪存颗粒单元
作为硬盘,存储单元绝对是核心器件。在固态硬盘里面,闪存颗粒则替代了机械磁盘成为了存储单元。
闪存 (Flash Memory) 本质上是一种长寿命的非易失性 (在断电情况下仍能保持所存储的数据信息) 的存储器,数据删除不是以单个的字节为单位而是以固定的区块为单位。
在固态硬盘中,NAND 闪存因其具有非易失性存储的特性,即断电后仍能保存数据,被大范围运用。
根据 NAND 闪存中电子单元密度的差异,又可以分为 SLC(单层次存储单元)、MLC(双层存储单元)以及 TLC(三层存储单元),此三种存储单元在寿命以及造价上有着明显的区别。
SLC(单层式存储),单层电子结构,写入数据时电压变化区间小,寿命长,读写次数在 10 万次以上,造价高,多用于企业级高端产品。
MLC(多层式存储),使用高低电压的而不同构建的双层电子结构,寿命长,造价可接受,多用民用高端产品,读写次数在 5000 左右。
TLC(三层式存储),是 MLC 闪存延伸,TLC 达到 3bit/cell。存储密度最高,容量是 MLC 的 1.5 倍。 造价成本最低, 使命寿命低,读写次数在 1000~2000 左右,是当下主流厂商首选闪存颗粒。
当前,固态硬盘市场中,主流的闪存颗粒厂商主要有 toshiba 东芝、samsung 三星、Intel 英特尔、micron 美光、skhynix 海力士、sandisk 闪迪等。
由于闪存颗粒是固态硬盘中的核心器件,也是主要的存储单元,因而它的制造成本占据了整个产品的 70% 以上的比重,极端一点说,选择固态硬盘实际上就是在选择闪存颗粒。
固件算法:
SSD 的固件是确保 SSD 性能的最重要组件,用于驱动控制器。主控将使用 SSD 中固件算法中的控制程序,去执行自动信号处理,耗损平衡,错误校正码 (ECC),坏块管理、垃圾回收算法、与主机设备(如电脑) 通信,以及执行数据加密等任务。由于固件冗余存储至 NAND 闪存中,因此当 SSD 制造商发布一个更新时,需要手动更新固件来改进和扩大 SSD 的功能。
开发高品质的固件不仅需要精密的工程技术,而且需要在 NAND 闪存、控制器和其他 SSD 组件间实现完美整合。此外,还必须掌握 NADN 特征、半导体工艺和控制器特征等领域的最先进的技术。固件的品质越好,整个 SSD 就越精确,越高效,目前具备独立固件研发的 SSD 厂商并不多,仅有 Intel / 英睿达 / 浦科特 / OCZ / 三星等厂商,希望我国能早日解决。
锦上添花:缓存芯片
缓存芯片,是固态硬盘三大件中,最容易被人忽视的一块,也是厂商最不愿意投入的一块。和主控芯片、闪存颗粒相比,缓存芯片的作用确实没有那么明显,在用户群体的认知度也没有那么深入,相应的就无法以此为噱头进行鼓吹。
实际上,缓存芯片的存在意义还是有的,特别是在进行常用文件的随机性读写上,以及碎片文件的快速读写上。
由于固态硬盘内部的磨损机制,就导致固态硬盘在读写小文件和常用文件时,会不断进行数据的整块的写入缓存,然而导出到闪存颗粒,这个过程需要大量缓存维系。特别是在进行大数量级的碎片文件的读写进程,高缓存的作用更是明显。
这也解释了为什么没有缓存芯片的固态硬盘在用了一段时间后,开始掉速。
固态硬盘的颗粒 (重中之重)
闪存颗粒是固态硬盘用来存储数据的东西,分为 SLC、MLC、TLC 三种,是挑选固态最重要的参数。
SLC:S 是 single,单一的意思,如 single dog - 单身狗。所以,SLC 的每个存储单元只存储 1bit 的数据,这种存储方式稳定性强,读写速度很快,而且不会出错,并且寿命长,因此价格也是最贵的。
MLC:M 是 multi,多个的意思,一般我们说的 MLC 就是指两个,所以,MLC 的每个存储单元要放 2bit 的数据。
TLC:T 是 triple,没错,就是 "三杀" 的那个 triple kill!
所以,TLC 颗粒的每个存储单元要挤 3bit 的数据。(由于 MLC 是多个 bit 的意思,多个包含 3 个,所以,有些厂商,如三星,会把自家使用 TLC 颗粒的 EVO 系列固态硬盘称为 "3bit MLC")
举个很形象的例子:
我们把存储空间想象成一个超大的停车场,每一个存储单元就是一个停车位,1bit 的数据就是一辆汽车。
SLC 颗粒:1bit 独占一个车位,这辆车来去自如,不会出现错误,而且速度很快,由于车位使用频率不高,所以寿命也很长,但是成本很高。
MLC 颗粒:2bit 占一个车位,1 车 2 车进出需要管理员调度,效率稍低,所以速度会慢一些,车位使用频率高了一倍,所以寿命也会变短一些。
TLC 颗粒:3bit 挤一个车位,进出调度更复杂,效率较低,所以速度慢,还容易出错,寿命短一些。
现在世界上能自主生产颗粒的厂家有:intel、三星、闪迪、东芝、镁光(英睿达)、海力士。所有正规的固态硬盘使用的都是这几家的检验合格的原厂颗粒。如使用自家颗粒的 inter、三星、闪迪、镁光(英睿达)、东芝等;还有虽然自己不会生产颗粒,但是使用从原厂购买颗粒的浦科特、海盗船、建兴等,所以购买时可以优选选择这些品牌。
市面上还有一些使用 "白片"、"黑片" 颗粒的固态硬盘的厂家,"白片"是指原厂检验不合格的瑕疵品,被偷偷卖给下游工厂来制作固态硬盘。"黑片"是连白片都比不上的废片,这类硬盘价格通常会远低于原厂颗粒的硬盘,给人一种 "高性价比" 的错觉。
主控
如果说存储空间是一个超大的停车场,那么主控就是这个超大停车场的 "管理员" 啦,他负责指挥每一辆车准确、合理的进出自己的停车位。
对于这么大的一个停车场,特别是三辆车挤一个车位的 TLC 颗粒的停车场来说,管理员是操碎了心,每天都累成狗一样。所以这个主控 "管理员" 必须要有过硬的身体素质(硬件要好)和扎实的管理方法(固件要好)。
好的主控 优秀的固件就相当于让受过专业训练的交警来管理停车场,而渣的主控 渣的固件就相当于让一个骨瘦如柴,没有受过教育和训练的人来管理,所以啊,即使你的停车场修的很牢固,但是没用多久,管理员先累死了,整个停车场也就不能用了。
接口、总线、协议
由于近些年固态硬盘发展的很快,新老产品技术交替,所以市面上固态硬盘的接口、协议等有些乱七八糟的,他们之间有着剪不断,理还乱的关系。
接口:
接口就是把几条导电的铜线做成不同形状的插头。市面上主流的固态硬盘接口有 SATA、mSATA、m.2、PCI-E 插槽这 4 种。
他们之间除了在外观上有不同外,性能上也有较大的区别。
总线:
总线是我们看不到的东西,可以理解为数据传输的 "公路",有 sata 总线和 PCI-e 总线两种。
假如我们要从 P 城开车到 Y 城,走 PCI-E 总线就相当于走两地直达的高速公路,而走 SATA 总线的就相当于走了比较绕的城乡公路。
PCI-E 总线又有几个等级,PCIE×1、PCIE×2、PCIE×4、PCIE×8、PCIE×16,数字越大,速度就越快。目前的固态硬盘都是用的 ×2、×4 这个等级的,其中 ×4 的最大速度已经可以达到 3000 MB/s 以上了。说到这,有机灵的小伙伴可能已经想到了我们用的显卡早就已经是 ×16 的级别了。
最后是协议
前面已经说了,PCI-E ×4 是一条平坦的高速公路,但是我们都知道,现实中的高速公路上每辆车的车速也是不同的,跑车总是会比轿车快。而拥有 NVMe 协议的固态硬盘就相当于专门针对这条平坦的高速公路而设计的超级跑车。同样是走的 PCI-E ×4 的车道,不支持 NVMe 协议的硬盘最大只能跑 1500MB/s,而支持 NVMe 协议的硬盘就可以跑到 3000MB/s 甚至以上。
4KB 随机读写
固态硬盘虽然顺序读写速度超快,但是那是只有在读写一整个大文件(如一部电影)时才能体会到它的优势,而影响我们日常使用的是硬盘的 4K 随机读写速度(这里的 4K 是 4KB)。
举个例子:
小明去一个大商场买东西,售货员问小明:"你要买什么呢?"
小明说:"阿姨,我要买一台大电视!""好的!" 虽然电视很大很重,但是售货员只要跑一趟花点力气就能把大电视给小明拿过来。这就是大文件的持续读写速度。
小明又说:"阿姨,我要一颗小白兔奶糖、一包辣条、一瓶可乐、一只铅笔、一个小猪佩奇、一卷卫生纸……" 售货员:"#¥@%……&*" 这些东西虽然又轻又小,但是量多,售货员阿姨就要跑很多地方才能完成小明的请求,速度自然就慢了下来,这就是 4kb 随机读写。
很遗憾的是我们日常使用电脑时大多都是这种小文件的随机读写。所以,我们在挑选固态的时候要重点关注一下硬盘的 4k 随机读写性能。
NVMe
NVMe 是为 SSD 所生的。NVMe 出现之前,SSD 绝大多数走的是 AHCI 和 SATA 的协议,后者其实是为传统 HDD 服务的。与 HDD 相比,SSD 具有更低的延时和更高的性能,AHCI 已经不能跟上 SSD 性能发展的步伐了,已经成为制约 SSD 性能的瓶颈。
跟 ATA spec 中定义的命令相比,NVMe 的命令个数少了很多,完全是为 SSD 量身定制的。
NVMe 有三宝:Submission Queue (SQ),Completion Queue(CQ)和 Doorbell Register (DB)。 SQ 和 CQ 位于 Host 的内存中,DB 则位于 SSD 的控制器内部。上图:
SQ 和 CQ 在 Host 的 memory 中以及 DB 在 SSD 端,上图中的 NVMe Subsystem 一般就是 SSD。
SQ 位于 Host 内存中,Host 要发送命令时,先把准备好的命令放在 SQ 中,然后通知 SSD 来取;CQ 也是位于 Host 内存中,一个命令执行完成,成功或失败,SSD 总会往 CQ 中写入命令完成状态。
DB 又是干什么用的呢?Host 发送命令时,不是直接往 SSD 中发送命令的,而是把命令准备好放在自己的内存中,那怎么通知 SSD 来获取命令执行呢?Host 就是通过写 SSD 端的 DB 寄存器来告知 SSD 的。这样的速度就非常快了。
所以总结一下如何挑选固态硬盘?
1:先看储存颗粒,再看颗粒类型。
2:查看硬盘主控。
3:缓存大小,及所使用的传输协议。
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com