固态硬盘小知识--数据的读写与传输
固态硬盘的数据读写过程,和传统的机械硬盘有着很大的区别,要了解固态硬盘的数据读写方式,首先应该了解固态硬盘的存储芯片构造
存储芯片内部是由很多数据模块组成(Block)的,它们一层一层的堆叠在一起,每一个模块又被分成很多的页(page),(例如一块存储芯片可以有4152个块组成,每个块有128个页)。这就像是一座摩天大楼,数据模块相当于是组成这座大楼的某一个楼层,数据模块中的叶就相当于是每一层里的房间。
存储芯片的数据写入很特殊,在一个块中只能按照顺序一页一页的写下去,不可以跳着写,对于新的硬盘来说,这个没有什么问题,一直写下去就好了,但是对于一些已经有数据的存储模块来说,重新写入数据就变得比较复杂了。在固态硬盘的某一个块上重新写入数据,必须首先把这个块上的所有数据都擦除掉,然后才可以在这个模块上边一页一页的按顺序写下去。它不像机械硬盘那样可以直接覆盖掉原有的数据内容。固态硬盘必须先整块擦除,再按顺序写入。
比方说硬盘中的存储模块A,该模块有128页,当我们删除掉其中某一页中的数据时,硬盘不会马上把这一页中的数据擦除掉,而是把这一页标注成已删除。之后写入数据的时候,也不能将数据直接写到这些被删除了数据的页上,而只能是把这整个模块上的数据都删除掉。才能继续在这个模块上写入数据。但是这个模块上的其他有用数据却不能直接删除,需要先把这些有用的数据转存到其他模块上,然后再执行模块擦除,写入。这个简单的数据写入过程,对于固态硬盘来说,却变得很复杂,需要更多的运行时间。这个现象就是所谓的“写入放大”。
由于固态硬盘的“写入放大”现象。所以当固态硬盘的存储空间快用完的时候,其存储速度会突然变慢,这个时候的硬盘在写入数据之前需要先转移有用的数据,再擦除掉需要写入数据的模块,最会才能写入数据。现在固态硬盘的生产厂家为了防止你把硬盘写的太满,在硬盘出厂时会预留一部分存储空间,这也是为什么我们平时所买的硬盘容量是240G,500G,而不是256G,520G这样整数。这也是无奈之举。
固态硬盘除了硬件的构造简单,使用时噪音小,还有一个最为人所称道的特性,那就是数据读写速度快,说到读写速度需要介绍两个概念,顺序读写速度和4K读写速度。
顺序读写速度就好比是去仓库的一个位置拿一个大的物件,只要你力气大,路面畅通,直接跑过去拿了走回来,这样的一个速度。所以说顺序读写速度主要决定着我们在读写一些大容量文件时的速度,例如向硬盘写入一个40GB的文件。这个时候的写入速度就取决于硬盘的顺序读写速度。但是我们平时的操作过程中,这样大容量数据的写入次数并不是很多,更多的是一些数据的多次读写。
4K读写速度就像是去仓库的不同位置拿很多种东西,有大的有小的,当你一路小跑的跑到仓库后,你需要去不同的地方,把所有你需要的这些东西一个一个的找出来,而且使用TLC颗粒的硬盘,就好比是每个货架上都放了很多的货物,这个时候你不光需要有力气,路面畅通。还需要灵活,认识路,找东西快,认东西准,所以4K读写速度对硬盘主控的要求更高,同时这个速度也决定着我们的开机速度,游戏加载速度,软件打开速度。
这两个指标可以在每一款硬盘的性能参数中看到。所以当你需要选购一款硬盘的时候可以多去关注一下这个4K读写速度,它的快慢将决定你电脑的运行速度。
对于固态硬盘的数据传输速度,各大商家可以说是煞费苦心。近几年,固态硬盘得到了飞速发展,标准接口也从SATA1发展到了SATA3,速度也是不断的提升。但是为了能达到更高的传输速度,许多笔记本电脑都采用了PCI-E协议的M.2接口固态硬盘。这种接口的传输速度得到了更大的提升。根据它所走的传输总线不同传输速度也有所不同,走PCI-EX4总线的硬盘传输速度可以达到1500MB/S-2000MB/S,走PCI-EX2总线的硬盘数据传输速度在1000MB/S,而走STAT总线的传输速度只有550MB/S。
对比一下就可以看到第4代PCI-E高速传输对存储性能有几倍的提升了。在这种情况下,主板协议就成了禁锢传输速度的瓶颈。之前的主板采用的传输协议是AHCI, AHCI因为要兼顾传统的磁道式机械硬盘,考虑磁头的物理读取限制,所以数据的传输速度不是很快,而SSD固态硬盘根本不需要考虑这些问题。因此,作为专门为SSD传输设计的NVMe协议就孕育而生了。
NVMe协议是由90多家公司组成的工作小组共同制定的一种数据传输协议(小组成员包括镁光,戴尔,三星,Marvell,NETAPP, EMC ,DT等。)此规范的目的在于充分利用PCI-E通道的低延时以及并行性,还有当代处理器、平台与应用的并行性,在可控制的存储成本下,,极大的提升固态硬盘的读写性能,降低由于AHCI接口带来的高延时,彻底解放固态硬盘的极致性能。是一种更高效的传输协议。
简单来说,两个其他条件都相同的硬盘,不支持这个协议的固态硬盘和支持这个协议的固态硬盘,就好比是骑自行车和骑摩托车的两个人,他们的速度是肯定不一样的,同样的一条路上,骑自行车的肯定没有骑摩托车的人跑的快。
因为固态硬盘存储芯片的擦写寿命问题,为了防止存储芯片中的某一个模块,被擦除的次数多而提前报废(硬盘颗粒的擦除次数是固定的,到达次数后就会损坏掉),硬盘主控系统会记录每个模块被擦除的次数,当硬盘需要再次擦除时,控制系统会选择被擦除次数最少的模块进行擦除,以保证每一个模块被擦除的次数一样多,从而达到要报废时一起报废。也从一定程度上增加硬盘的使用寿命。这个就是所谓的磨损均衡(wear leveling)原则。
固态硬盘的使用寿命和存储空间是成正比的,两块其他指标相同的固态硬盘空间越大,使用寿命越长。这个很好理解,两块其他性能相同的硬盘,每天同样的写入量,容量小的硬盘,写十天就满了,需要把之前的数据擦掉重新再写一遍,存储颗粒十天被擦除一次。存储空间大的可以写20天,也就是20天才擦除一次,所以容量小的硬盘被擦写两遍,那个大的硬盘才擦一遍,大家的寿命都是1000次,肯定存储空间大的硬盘要活得久一些了。
当然了,这东西就是个消耗品,大家正常使用就好了,普通人的使用强度并不是很大,所以正常使用个7 、8年还是没有问题的。